[
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[!{node_modules}/**]\nend_of_line = lf\ncharset = utf-8\ninsert_final_newline = true\n\n[{*.js,*.ts}]\nindent_style = space\nindent_size = 2"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: [maslow] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]\npatreon: # Replace with a single Patreon username\nopen_collective: # Replace with a single Open Collective username\nko_fi: # Replace with a single Ko-fi username\ntidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel\ncommunity_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry\nliberapay: # Replace with a single Liberapay username\nissuehunt: # Replace with a single IssueHunt username\notechie: # Replace with a single Otechie username\nlfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry\ncustom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\nname: Bug report\ntitle: \"[bug] bug title \"\ndescription: If something isn't working as expected.\nlabels: [\"bug\"]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        For better global communication, please write in English.\n        (为了更好的国际化交流，请您使用英语描述问题。)\n\n        You can use ChatGPT to translate your native language into English:\n        (您可以使用ChatGPT将您的母语翻译成英文。）\n        - [ChatGPT](https://chat.openai.com/)\n\n  - type: checkboxes\n    attributes:\n      label: Search before asking\n      description: >\n        Please make sure to search in the [issues](https://github.com/labring/laf/issues?q=is%3Aissue)\n        first to see whether the same issue was reported already.\n      options:\n        - label: >\n            I had searched in the [issues](https://github.com/labring/laf/issues?q=is%3Aissue) and found\n            no similar issues.\n          required: true\n\n  - type: dropdown\n    attributes:\n      label: Environment\n      description: Describe the environment.\n      options:\n        - https://laf.dev\n        - https://laf.run\n        - Linux (self-host)\n        - Mac (self-host)\n        - Windows (self-host)\n        - Laf-cli\n    validations:\n      required: true\n\n  - type: textarea\n    attributes:\n      label: What happened\n      description: Describe what happened.\n      placeholder: >\n        A clear and concise description of what the bug is.\n    validations:\n      required: true\n\n  - type: textarea\n    attributes:\n      label: How to reproduce\n      description: >\n        Describe the steps to reproduce the bug here.\n      placeholder: >\n        Please make sure you provide a reproducible step-by-step case of how to reproduce the problem\n        as minimally and precisely as possible.\n\n        1. xxx\n\n        2. xxx\n\n        3. ...\n    validations:\n      required: true\n\n  - type: checkboxes\n    attributes:\n      label: Are you willing to submit PR?\n      description: >\n        This is absolutely not required, but we are happy to guide you in the contribution process\n        especially if you already have a good understanding of how to implement the fix.\n      options:\n        - label: Yes I am willing to submit a PR!\n\n  - type: markdown\n    attributes:\n      value: \"Thanks for completing our form!\"\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n  - name: Join Our Discord\n    url: https://discord.gg/uWZqAwwdvy\n    about: Join our community, we will keep you in the loop.\n  - name: Contact US / Business Inquiries\n    url: https://docs.qq.com/form/page/DS0tCWXpQc2NpR3dR\n    about: Please contact us."
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "content": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\nname: Feature Request\ntitle: \"[Feature] Feature title \"\ndescription: I want to suggest a feature for this project.\nlabels: [ \"feature\" ]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        For better global communication, Please write in English.\n        (为了更好的国际化交流，请您使用英语描述您的问题。)\n\n        You can use the following translation tool to translate, but please check the translation carefully after translation to avoid misinterpretation:\n        (你可以使用以下翻译工具进行翻译，但是翻译完成后请仔细检查译文，以免有错误的理解：）\n        - [Google Translate](https://translate.google.com/)\n        - [Baidu Translate](https://fanyi.baidu.com/)\n        - [YouDao Translate](https://fanyi.baidu.com/)\n        - ChatGPT\n\n  - type: checkboxes\n    attributes:\n      label: Search before asking\n      description: >\n        Please make sure to search in the [issues](https://github.com/labring/laf/issues?q=is%3Aissue)\n        first to see whether the same issue was reported already.\n      options:\n        - label: >\n            I had searched in the [issues](https://github.com/labring/laf/issues?q=is%3Aissue) and found\n            no similar issues.\n          required: true\n\n  - type: textarea\n    attributes:\n      label: Feature Request\n      description: Describe the feature.\n      placeholder: >\n        First of all: Have you checked the docs,\n        or GitHub issues whether someone else has already reported your issue?\n        Maybe the feature already exists?\n    validations:\n      required: true\n\n  - type: checkboxes\n    attributes:\n      label: Are you willing to submit PR?\n      description: >\n        This is absolutely not required, but we are happy to guide you in the contribution process\n        especially if you already have a good understanding of how to implement the fix.\n      options:\n        - label: Yes I am willing to submit a PR!\n\n  - type: markdown\n    attributes:\n      value: \"Thanks for completing our form!\"\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/question.yml",
    "content": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License.  You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\nname: Question\ntitle: \"[Question] Question title \"\ndescription: I have a question that isn't answered in docs or issue.\nlabels: [ \"question\" ]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        For better global communication, Please write in English.\n        (为了更好的国际化交流，请您使用英语描述您的问题。)\n\n        You can use the following translation tool to translate, but please check the translation carefully after translation to avoid misinterpretation:\n        (你可以使用以下翻译工具进行翻译，但是翻译完成后请仔细检查译文，以免有错误的理解：）\n        - [Google Translate](https://translate.google.com/)\n        - [Baidu Translate](https://fanyi.baidu.com/)\n        - [YouDao Translate](https://fanyi.baidu.com/)\n        - ChatGPT\n\n  - type: checkboxes\n    attributes:\n      label: Search before asking\n      description: >\n        Please make sure to search in the [issues](https://github.com/labring/laf/issues?q=is%3Aissue)\n        first to see whether the same issue was reported already.\n      options:\n        - label: >\n            I had searched in the [issues](https://github.com/labring/laf/issues?q=is%3Aissue) and found\n            no similar issues.\n          required: true\n\n  - type: textarea\n    attributes:\n      label: Question\n      description: Describe your question.\n      placeholder: >\n        Describe your question here :D\n    validations:\n      required: true\n\n  - type: markdown\n    attributes:\n      value: \"Thanks for completing our form!\"\n"
  },
  {
    "path": ".github/actions/build-docs/action.yml",
    "content": "name: Build Laf Docs\ndescription: Build Laf Docs, to reuse in other workflows\n\ninputs:\n  docs-path:\n    description: 'Path to docs folder'\n    required: false\n    default: 'docs'\n  \n\n# development docs: https://docs.github.com/en/actions/creating-actions/creating-a-composite-action\n\nruns:\n  using: composite\n  steps:\n    - name: Set Node.js 18.x\n      uses: actions/setup-node@v3\n      with:\n        node-version: 18.x\n    - name: Run Install\n      working-directory: ${{ inputs.docs-path }}        \n      run: npm install\n      shell: bash\n    - name: Run Build\n      working-directory: ${{ inputs.docs-path }}\n      run: npm run build\n      shell: bash\n"
  },
  {
    "path": ".github/gh-bot.yml",
    "content": "version: v1\ndebug: true\naction:\n  printConfig: false\n  release:\n    retry: 15s\n    actionName: Release\n    allowOps:\n      - maslow\nbot:\n  prefix: /\n  spe: _\n  allowOps:\n    - sealos-ci-robot\n    - sealos-release-robot\n  email: sealos-ci-robot@sealos.io\n  username: sealos-ci-robot\nrepo:\n  org: false\n\nmessage:\n  success: |\n    🤖 says: Hooray! The action {{.Body}} has been completed successfully. 🎉\n  format_error: |\n    🤖 says: ‼️ There is a formatting issue with the action, kindly verify the action's format.\n  permission_error: |\n    🤖 says: ‼️ The action doesn't have permission to trigger.\n  release_error: |\n    🤖 says: ‼️ Release action failed.\n    Error details: {{.Error}}\n"
  },
  {
    "path": ".github/no-response.yml",
    "content": "# Configuration for probot-no-response - https://github.com/probot/no-response\n\n# Number of days of inactivity before an Issue is closed for lack of response\ndaysUntilClose: 7\n# Label requiring a response\nresponseRequiredLabel: waiting-for-info\n# Comment to post when closing an Issue for lack of response. Set to `false` to disable\ncloseComment: >\n  This issue has been automatically closed because there has been no response\n  to our request for more information from the original author. With only the\n  information that is currently in the issue, we don't have enough information\n  to take action. Please reach out if you have or find the answers we need so\n  that we can investigate further.\n"
  },
  {
    "path": ".github/stale.yml",
    "content": "\n\n# Number of days of inactivity before an issue becomes stale\ndaysUntilStale: 15\n# Number of days of inactivity before a stale issue is closed\ndaysUntilClose: 3\n# Issues with these labels will never be considered stale\nexemptLabels:\n  - do-not-close\n# Label to use when marking an issue as stale\nstaleLabel: stale\n# Comment to post when marking an issue as stale. Set to `false` to disable\nmarkComment: >\n  This issue has been automatically marked as stale because it has not had\n  recent activity. It will be closed if no further activity occurs. Thank you\n  for your contributions.\n# Comment to post when closing a stale issue. Set to `false` to disable\ncloseComment: true\n"
  },
  {
    "path": ".github/workflows/build-scripts-updated.yml",
    "content": "name: build-scripts-updated\n\non:\n  workflow_dispatch:\n  push:\n    branches:\n      - main\n    paths:\n      - \"build/**\"\n      - \"deploy/**\"\n      - \".github/workflows/build-scripts-updated.yml\"\n      - \".github/workflows/build-sealos-cluster-image.yml\"\n      - \"!**/*.md\"\n\npermissions:\n  contents: read\n\nconcurrency:\n  group: build-scripts-updated-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  notify:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Log workflow completion\n        run: |\n          echo \"Build scripts updated workflow completed\"\n          echo \"This will trigger build-sealos-cluster-image via workflow_run\"\n          echo \"Ref: ${{ github.ref }}\"\n          echo \"SHA: ${{ github.sha }}\"\n"
  },
  {
    "path": ".github/workflows/build-sealos-cluster-image.yml",
    "content": "name: build-sealos-cluster-image\n\non:\n  # Triggered when dockerize-web, dockerize-server, or build-scripts-updated workflow completes on main branch\n  workflow_run:\n    workflows: [\"dockerize-web\", \"dockerize-server\", \"dockerize-runtime-nodejs\", \"dockerize-runtime-exporter\", \"build-scripts-updated\", \"release\"]\n    types: [completed]\n    branches: [main]\n  # Manual trigger\n  workflow_dispatch:\n    inputs:\n      version:\n        description: 'Version tag for cluster image'\n        required: false\n        default: 'latest'\n\npermissions:\n  packages: write\n  contents: read\n\nenv:\n  GO_VERSION: \"1.19\"\n  DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}\n\nconcurrency:\n  group: build-sealos-cluster-image-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  build_cluster_image:\n    runs-on: ubuntu-latest\n    # Only run if the triggering workflow succeeded (or manual trigger)\n    if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }}\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Prepare\n        id: prepare\n        run: |\n          IMAGE=laf\n          # Use custom version for workflow_dispatch, otherwise 'latest'\n          TAG=${{ github.event.inputs.version || 'latest' }}\n          echo \"tag=${TAG}\" >> $GITHUB_ENV\n          echo \"image=${IMAGE}\" >> $GITHUB_ENV\n          echo \"Building cluster image: ${IMAGE}:${TAG}\"\n\n      - name: Remove builtin docker\n        run: |\n          sudo apt-get remove -y moby-engine moby-cli moby-buildx moby-compose\n\n      - name: Install sealos\n        run: |\n          echo \"deb [trusted=yes] https://apt.fury.io/labring/ /\" | sudo tee /etc/apt/sources.list.d/labring.list\n          sudo apt update\n          sudo apt install sealos=4.1.4\n          sudo sealos version\n\n      - name: Install buildah\n        run: |\n          sudo apt remove buildah -y || true\n          arch=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/)\n          echo \"Downloading buildah from https://github.com/labring/cluster-image/releases/download/depend/buildah.linux.${arch}\"\n          sudo wget -qO \"buildah\" \"https://github.com/labring/cluster-image/releases/download/depend/buildah.linux.${arch}\"\n          sudo chmod a+x buildah\n          sudo mv buildah /usr/bin\n\n      - name: Login GHCR.io\n        run: |\n          echo \"Logging in to ghcr.io as ${{ github.repository_owner }}\"\n          sudo buildah login -u ${{ github.repository_owner }} -p ${{ secrets.GITHUB_TOKEN }} ghcr.io\n\n      - name: Build cluster image\n        env:\n          IMAGE: ghcr.io/${{ github.repository_owner }}/${{ env.image }}\n          VERSION: ${{ env.tag }}\n        working-directory: build\n        run: |\n          echo \"Building cluster image: $IMAGE:$VERSION\"\n          sudo sealos build -t $IMAGE:$VERSION-arm64 --platform linux/arm64 -f Kubefile  .\n          sudo rm -rf registry\n          sudo sealos build -t $IMAGE:$VERSION-amd64 --platform linux/amd64 -f Kubefile  .\n          sudo sealos images\n\n      - name: Push cluster image to ghcr.io\n        env:\n          IMAGE: ghcr.io/${{ github.repository_owner }}/${{ env.image }}\n          VERSION: ${{ env.tag }}\n        run: |\n          sudo buildah images\n          sudo buildah push $IMAGE:$VERSION-amd64\n          sudo buildah push $IMAGE:$VERSION-arm64\n          sudo buildah manifest create $IMAGE:$VERSION\n          sudo buildah manifest add $IMAGE:$VERSION docker://$IMAGE:$VERSION-amd64\n          sudo buildah manifest add $IMAGE:$VERSION docker://$IMAGE:$VERSION-arm64\n          sudo buildah manifest push --all $IMAGE:$VERSION docker://$IMAGE:$VERSION\n\n      - name: Push cluster image to docker.io\n        if: ${{ env.DOCKERHUB_USERNAME != '' }}\n        env:\n          GHCR_IMAGE: ghcr.io/${{ github.repository_owner }}/${{ env.image }}\n          IMAGE: docker.io/${{ env.DOCKERHUB_USERNAME }}/${{ env.image }}\n          VERSION: ${{ env.tag }}\n        run: |\n          sudo buildah login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} docker.io\n          sudo buildah tag $GHCR_IMAGE:$VERSION-amd64 $IMAGE:$VERSION-amd64\n          sudo buildah tag $GHCR_IMAGE:$VERSION-arm64 $IMAGE:$VERSION-arm64\n          sudo buildah push $IMAGE:$VERSION-amd64\n          sudo buildah push $IMAGE:$VERSION-arm64\n          sudo buildah manifest create $IMAGE:$VERSION\n          sudo buildah manifest add $IMAGE:$VERSION docker://$IMAGE:$VERSION-amd64\n          sudo buildah manifest add $IMAGE:$VERSION docker://$IMAGE:$VERSION-arm64\n          sudo buildah manifest push --all $IMAGE:$VERSION docker://$IMAGE:$VERSION\n\n      - name: Renew issue and Sync Images\n        uses: labring/gh-rebot@v0.0.6\n        if: ${{ github.event_name != 'workflow_dispatch' }}\n        with:\n          version: v0.0.8-rc1\n        env:\n          GH_TOKEN: \"${{ secrets.GH_PAT }}\"\n          SEALOS_TYPE: \"issue_renew\"\n          SEALOS_ISSUE_TITLE: \"【DaylyReport】 Auto build for laf\"\n          SEALOS_ISSUE_BODYFILE: \"build/README.md\"\n          SEALOS_ISSUE_LABEL: \"dayly-report\"\n          SEALOS_ISSUE_TYPE: \"day\"\n          SEALOS_ISSUE_REPO: \"labring-actions/cluster-image\"\n          SEALOS_COMMENT_BODY: \"/imagesync ghcr.io/${{ github.repository_owner }}/${{ env.image }}:${{ env.tag }}\""
  },
  {
    "path": ".github/workflows/deploy-doc.yml",
    "content": "name: deploy docs\n\non:\n  workflow_dispatch:\n  push:\n    branches: [main]\n    paths:\n      - \"docs/**\"\n      - \".github/workflows/deploy-doc.yml\"\nenv:\n  LAF_CI_DOCS_PAT: ${{ secrets.LAF_CI_DOCS_PAT }}\n  LAF_CI_DOCS_APPID: ${{ secrets.LAF_CI_DOCS_APPID }}\n  LAF_CI_DOCS_BUCKET_NAME: ${{ secrets.LAF_CI_DOCS_BUCKET_NAME }}\n  LAF_API_URL: ${{ secrets.LAF_API_URL }}\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n\n      - name: Build Docs\n        uses: ./.github/actions/build-docs\n\n      - name: Setup laf-cli\n        run: npm i laf-cli -g\n      - name: Login laf-cli\n        run: |\n          laf user add doc -r ${{ env.LAF_API_URL }}\n          laf user switch doc\n          laf login ${{ env.LAF_CI_DOCS_PAT }}\n      - name: Deploy to laf\n        working-directory: docs/.vitepress\n        run: |\n          laf app init ${{ env.LAF_CI_DOCS_APPID }}\n          laf storage push -f ${{ env.LAF_CI_DOCS_BUCKET_NAME }} dist/\n"
  },
  {
    "path": ".github/workflows/doc-deploy.yml",
    "content": "name: Deploy Documentation\n\non:\n  push:\n    branches: [main]\n    paths:\n      - \"docs/**\"\n      - \".github/workflows/doc-deploy.yml\"\n\nenv:\n  LAF_CI_DOCS_PREVIEW_PAT: ${{ secrets.LAF_CI_DOCS_PREVIEW_PAT }}\n  LAF_CI_DOCS_PREVIEW_APPID: ${{ secrets.LAF_CI_DOCS_PREVIEW_APPID }}\n  LAF_CI_DOCS_PREVIEW_API_URL: ${{ secrets.LAF_CI_DOCS_PREVIEW_API_URL }}\n\njobs:\n  deploy-docs:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n\n      - name: Build Docs\n        uses: ./.github/actions/build-docs\n\n      - name: Setup laf-cli\n        run: npm i laf-cli -g\n\n      - name: Login laf-cli\n        run: |\n          laf user add doc -r ${{ env.LAF_CI_DOCS_PREVIEW_API_URL }}\n          laf user switch doc\n          laf login ${{ env.LAF_CI_DOCS_PREVIEW_PAT }}\n          laf app init ${{ env.LAF_CI_DOCS_PREVIEW_APPID }}\n\n      - name: Deploy to production bucket\n        run: |\n          # Deploy to production docs bucket\n          laf storage push -f production-docs docs/.vitepress/dist/\n"
  },
  {
    "path": ".github/workflows/doc-preview.yml",
    "content": "name: Laf Doc Preview\n\n# todo: When the requirements are mature enough, refactor using TypeScript, create a generic GitHub Action, and make it available to users.\n\non:\n  pull_request:\n    branches: [main]\n    types: [opened, synchronize, reopened, closed]\n    paths:\n      - \"docs/**\"\n      - \".github/workflows/doc-preview.yml\"\n\npermissions:\n  pull-requests: write\n\nenv:\n  LAF_CI_DOCS_PREVIEW_PAT: ${{ secrets.LAF_CI_DOCS_PREVIEW_PAT }}\n  LAF_CI_DOCS_PREVIEW_APPID: ${{ secrets.LAF_CI_DOCS_PREVIEW_APPID }}\n  LAF_CI_DOCS_PREVIEW_API_URL: ${{ secrets.LAF_CI_DOCS_PREVIEW_API_URL }}\n  BUCKET_SHORT_NAME: pr-${{ github.event.pull_request.number }}-doc-preview\n\njobs:\n  create-or-update-doc-preview:\n    if: github.event_name == 'pull_request' && github.event.action != 'closed'\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n\n      - name: Build Docs\n        uses: ./.github/actions/build-docs\n\n      - name: PR build summary\n        run: |\n          echo \"📖 Documentation built successfully for PR #${{ github.event.pull_request.number }}\"\n          echo \"⚠️  Doc preview deployment is disabled for security reasons\"\n          echo \"🚀 Docs will be deployed automatically when this PR is merged\"\n          echo \"📋 Build completed at $(date)\"\n"
  },
  {
    "path": ".github/workflows/dockerize-runtime-exporter.yml",
    "content": "name: dockerize-runtime-exporter\n\non:\n  workflow_dispatch:\n  pull_request:\n    branches: [main]\n    types: [opened, synchronize, reopened]\n    paths:\n      - \"services/runtime-exporter/**\"\n      - \".github/workflows/dockerize-runtime-exporter.yml\"\n      - \"!**/*.md\"\n      - \"!services/runtime-exporter/package-lock.json\"\n  push:\n    branches: [main]\n    paths:\n      - \"services/runtime-exporter/**\"\n      - \".github/workflows/dockerize-runtime-exporter.yml\"\n      - \"!**/*.md\"\n      - \"!services/runtime-exporter/package-lock.json\"\n\npermissions:\n  pull-requests: write\n  packages: write\n  contents: read\n  issues: write\n\nconcurrency:\n  group: dockerize-runtime-exporter-${{ github.ref }}\n  cancel-in-progress: true\n\nenv:\n  DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}\n\njobs:\n  build-runtime-exporter-images:\n    name: Build Runtime Exporter Docker Images\n    permissions:\n      packages: write\n    strategy:\n      matrix:\n        include:\n          - arch: amd64\n          - arch: arm64\n            runs-on: ubuntu-24.04-arm\n    runs-on: ${{ matrix.runs-on || 'ubuntu-24.04' }}\n\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Cache node modules\n        id: cache-node-modules\n        uses: actions/cache@v4\n        with:\n          path: services/runtime-exporter/node_modules\n          key: ${{ runner.os }}-${{ matrix.arch }}-node-${{ hashFiles('services/runtime-exporter/package-lock.json') }}\n\n      - name: Use Node\n        uses: actions/setup-node@v4\n        with:\n          node-version: 18.x\n\n      - name: Install Package\n        working-directory: services/runtime-exporter\n        if: steps.cache-node-modules.outputs.cache-hit != 'true'\n        run: npm ci\n\n      - name: Build runtime-exporter\n        working-directory: services/runtime-exporter\n        run: npm run build\n\n      - name: Set up QEMU\n        if: ${{ matrix.arch != runner.arch }}\n        uses: docker/setup-qemu-action@v3\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Login to DockerHub\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.DOCKERHUB_USERNAME != '' }}\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Login to Github Container Hub\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Extract metadata (tags, labels) for Docker\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: |\n            ghcr.io/${{ github.repository_owner }}/laf-runtime-exporter\n            ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-runtime-exporter', env.DOCKERHUB_USERNAME) || '' }}\n\n      - name: Build for ${{ matrix.arch }}\n        id: docker-build\n        uses: docker/build-push-action@v6\n        with:\n          context: ./services/runtime-exporter\n          file: ./services/runtime-exporter/Dockerfile\n          labels: ${{ steps.meta.outputs.labels }}\n          platforms: linux/${{ matrix.arch }}\n          # PR builds: load locally, Main builds: push by digest\n          push: false\n          load: ${{ github.event_name == 'pull_request' }}\n          outputs: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && format('type=image,\"name=ghcr.io/{0}/laf-runtime-exporter{1}\",name-canonical=true,push-by-digest=true,push=true', github.repository_owner, env.DOCKERHUB_USERNAME && format(',docker.io/{0}/laf-runtime-exporter', env.DOCKERHUB_USERNAME) || '') || '' }}\n\n      - name: Export digest\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        run: |\n          mkdir -p ${{ runner.temp }}/digests\n          digest=\"${{ steps.docker-build.outputs.digest }}\"\n          touch \"${{ runner.temp }}/digests/${digest#sha256:}\"\n\n      - name: Upload digest\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        uses: actions/upload-artifact@v4\n        with:\n          name: digests-runtime-exporter-${{ matrix.arch }}\n          path: ${{ runner.temp }}/digests/*\n          if-no-files-found: error\n          retention-days: 1\n\n      - name: Comment on PR\n        if: github.event_name == 'pull_request' && matrix.arch == 'amd64' && always()\n        uses: actions/github-script@v7\n        continue-on-error: true\n        with:\n          script: |\n            const buildSuccess = '${{ steps.docker-build.outcome }}' === 'success';\n            const emoji = buildSuccess ? '✅' : '❌';\n            const status = buildSuccess ? 'Success' : 'Failed';\n\n            let body = `## ${emoji} laf Runtime Exporter Image Build ${status}\\n\\n`;\n            body += `### Build Details\\n\\n`;\n            body += `| Item | Value |\\n`;\n            body += `|------|-------|\\n`;\n            body += `| Build Status | ${buildSuccess ? '✅ Passed' : '❌ Failed'} |\\n`;\n            body += `| Platforms | linux/amd64 (PR validation) |\\n`;\n            body += `| Push to Registry | ⚠️ No (PR build only) |\\n`;\n            body += `| Node Version | 18.x |\\n\\n`;\n\n            if (buildSuccess) {\n              body += `### 📦 Image will be published after merge to main\\n\\n`;\n              body += `**Note**: PR builds only verify the Docker build process for linux/amd64. Multi-platform images (amd64 + arm64) are built and pushed only when merged to main.\\n\\n`;\n            }\n\n            body += `**Commit**: \\`${{ github.sha }}\\`\\n`;\n            body += `**Triggered by**: @${{ github.actor }}\\n`;\n\n            try {\n              const { data: comments } = await github.rest.issues.listComments({\n                owner: context.repo.owner,\n                repo: context.repo.repo,\n                issue_number: context.issue.number,\n              });\n\n              const botComment = comments.find(comment =>\n                comment.user.type === 'Bot' &&\n                comment.body.includes('laf Runtime Exporter Image Build')\n              );\n\n              if (botComment) {\n                await github.rest.issues.updateComment({\n                  owner: context.repo.owner,\n                  repo: context.repo.repo,\n                  comment_id: botComment.id,\n                  body: body\n                });\n              } else {\n                await github.rest.issues.createComment({\n                  owner: context.repo.owner,\n                  repo: context.repo.repo,\n                  issue_number: context.issue.number,\n                  body: body\n                });\n              }\n            } catch (error) {\n              console.log('Failed to post comment:', error.message);\n              console.log('This might be expected for PRs from forks');\n            }\n\n  release-runtime-exporter-images:\n    name: Push Runtime Exporter Docker Images\n    permissions:\n      packages: write\n    needs: build-runtime-exporter-images\n    runs-on: ubuntu-24.04\n    if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n    steps:\n      - name: Login to DockerHub\n        if: ${{ env.DOCKERHUB_USERNAME != '' }}\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Login to Github Container Hub\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Download digests\n        uses: actions/download-artifact@v5\n        with:\n          path: ${{ runner.temp }}/digests\n          pattern: digests-runtime-exporter-*\n          merge-multiple: true\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Extract metadata (tags, labels) for Docker\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: |\n            ghcr.io/${{ github.repository_owner }}/laf-runtime-exporter\n            ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-runtime-exporter', env.DOCKERHUB_USERNAME) || '' }}\n          tags: |\n            type=ref,event=branch\n            type=ref,event=pr\n            type=ref,event=tag\n            type=semver,pattern={{version}}\n            type=semver,pattern={{major}}.{{minor}}\n            type=semver,pattern={{major}}\n            type=sha\n            type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }}\n\n      - name: Create manifest list and push\n        working-directory: ${{ runner.temp }}/digests\n        run: |\n          for TAG in $DOCKER_METADATA_OUTPUT_TAGS; do\n            docker buildx imagetools create -t $TAG \\\n              $(printf 'ghcr.io/${{ github.repository_owner }}/laf-runtime-exporter@sha256:%s ' *)\n            sleep 3\n          done\n\n      - name: Inspect image\n        run: |\n          docker buildx imagetools inspect ghcr.io/${{ github.repository_owner }}/laf-runtime-exporter:${{ steps.meta.outputs.version }}"
  },
  {
    "path": ".github/workflows/dockerize-runtime-nodejs.yml",
    "content": "name: dockerize-runtime-nodejs\n\non:\n  workflow_dispatch:\n  pull_request:\n    branches: [main]\n    types: [opened, synchronize, reopened]\n    paths:\n      - \"runtimes/nodejs/**\"\n      - \".github/workflows/dockerize-runtime-nodejs.yml\"\n      - \"!**/*.md\"\n      - \"!runtimes/nodejs/package-lock.json\"\n  push:\n    branches: [main]\n    paths:\n      - \"runtimes/nodejs/**\"\n      - \".github/workflows/dockerize-runtime-nodejs.yml\"\n      - \"!**/*.md\"\n      - \"!runtimes/nodejs/package-lock.json\"\n\nenv:\n  ALIYUN_REGISTRY: ${{ secrets.ALIYUN_REGISTRY }}\n  ALIYUN_NAMESPACE: ${{ secrets.ALIYUN_NAMESPACE }}\n  DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}\n\npermissions:\n  pull-requests: write\n  packages: write\n  contents: read\n  issues: write\n\nconcurrency:\n  group: dockerize-runtime-nodejs-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  build-runtime-nodejs-images:\n    name: Build Runtime Node.js Docker Images\n    permissions:\n      packages: write\n    strategy:\n      matrix:\n        include:\n          - arch: amd64\n          - arch: arm64\n            runs-on: ubuntu-24.04-arm\n    runs-on: ${{ matrix.runs-on || 'ubuntu-24.04' }}\n\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Cache node modules\n        id: cache-node-modules\n        uses: actions/cache@v4\n        with:\n          path: runtimes/nodejs/node_modules\n          key: ${{ runner.os }}-${{ matrix.arch }}-node-${{ hashFiles('runtimes/nodejs/package-lock.json') }}\n\n      - name: Use Node\n        uses: actions/setup-node@v4\n        with:\n          node-version: 18.x\n\n      - name: Install Package\n        working-directory: runtimes/nodejs\n        if: steps.cache-node-modules.outputs.cache-hit != 'true'\n        run: npm ci\n\n      - name: Build runtime-nodejs\n        working-directory: runtimes/nodejs\n        run: npm run build\n\n      - name: Set up QEMU\n        if: ${{ matrix.arch != runner.arch }}\n        uses: docker/setup-qemu-action@v3\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Login to DockerHub\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.DOCKERHUB_USERNAME != '' }}\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Login to Github Container Hub\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Login to Aliyun Registry\n        uses: docker/login-action@v3\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.ALIYUN_REGISTRY }}\n        with:\n          registry: ${{ env.ALIYUN_REGISTRY }}\n          username: ${{ secrets.ALIYUN_USERNAME }}\n          password: ${{ secrets.ALIYUN_PASSWORD }}\n\n      - name: Extract metadata (tags, labels) for Docker\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: |\n            ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs\n            ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-runtime-nodejs', env.DOCKERHUB_USERNAME) || '' }}\n            ${{ env.ALIYUN_REGISTRY && format('{0}/{1}/laf-runtime-nodejs', env.ALIYUN_REGISTRY, env.ALIYUN_NAMESPACE) || '' }}\n\n      - name: Build for ${{ matrix.arch }}\n        id: docker-build\n        uses: docker/build-push-action@v6\n        with:\n          context: ./runtimes/nodejs\n          file: ./runtimes/nodejs/Dockerfile\n          labels: ${{ steps.meta.outputs.labels }}\n          platforms: linux/${{ matrix.arch }}\n          # PR builds: load locally, Main builds: push by digest\n          push: false\n          load: ${{ github.event_name == 'pull_request' }}\n          outputs: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && format('type=image,\"name=ghcr.io/{0}/laf-runtime-nodejs{1}{2}\",name-canonical=true,push-by-digest=true,push=true', github.repository_owner, env.DOCKERHUB_USERNAME && format(',docker.io/{0}/laf-runtime-nodejs', env.DOCKERHUB_USERNAME) || '', env.ALIYUN_REGISTRY && format(',{0}/{1}/laf-runtime-nodejs', env.ALIYUN_REGISTRY, env.ALIYUN_NAMESPACE) || '') || '' }}\n\n      - name: Export digest\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        run: |\n          mkdir -p ${{ runner.temp }}/digests-nodejs\n          digest=\"${{ steps.docker-build.outputs.digest }}\"\n          touch \"${{ runner.temp }}/digests-nodejs/${digest#sha256:}\"\n\n      - name: Upload digest\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        uses: actions/upload-artifact@v4\n        with:\n          name: digests-runtime-nodejs-${{ matrix.arch }}\n          path: ${{ runner.temp }}/digests-nodejs/*\n          if-no-files-found: error\n          retention-days: 1\n\n      - name: Comment on PR\n        if: github.event_name == 'pull_request' && matrix.arch == 'amd64' && always()\n        uses: actions/github-script@v7\n        continue-on-error: true\n        with:\n          script: |\n            const buildSuccess = '${{ steps.docker-build.outcome }}' === 'success';\n            const emoji = buildSuccess ? '✅' : '❌';\n            const status = buildSuccess ? 'Success' : 'Failed';\n\n            let body = `## ${emoji} laf Runtime Node.js Image Build ${status}\\n\\n`;\n            body += `### Build Details\\n\\n`;\n            body += `| Item | Value |\\n`;\n            body += `|------|-------|\\n`;\n            body += `| Build Status | ${buildSuccess ? '✅ Passed' : '❌ Failed'} |\\n`;\n            body += `| Platforms | linux/amd64 (PR validation) |\\n`;\n            body += `| Push to Registry | ⚠️ No (PR build only) |\\n`;\n            body += `| Node Version | 18.x |\\n\\n`;\n\n            if (buildSuccess) {\n              body += `### 📦 Image will be published after merge to main\\n\\n`;\n              body += `**Note**: PR builds only verify the Docker build process for linux/amd64. Multi-platform images (amd64 + arm64) are built and pushed only when merged to main.\\n\\n`;\n            }\n\n            body += `**Commit**: \\`${{ github.sha }}\\`\\n`;\n            body += `**Triggered by**: @${{ github.actor }}\\n`;\n\n            try {\n              const { data: comments } = await github.rest.issues.listComments({\n                owner: context.repo.owner,\n                repo: context.repo.repo,\n                issue_number: context.issue.number,\n              });\n\n              const botComment = comments.find(comment =>\n                comment.user.type === 'Bot' &&\n                comment.body.includes('laf Runtime Node.js Image Build')\n              );\n\n              if (botComment) {\n                await github.rest.issues.updateComment({\n                  owner: context.repo.owner,\n                  repo: context.repo.repo,\n                  comment_id: botComment.id,\n                  body: body\n                });\n              } else {\n                await github.rest.issues.createComment({\n                  owner: context.repo.owner,\n                  repo: context.repo.repo,\n                  issue_number: context.issue.number,\n                  body: body\n                });\n              }\n            } catch (error) {\n              console.log('Failed to post comment:', error.message);\n              console.log('This might be expected for PRs from forks');\n            }\n\n  build-runtime-nodejs-init-images:\n    name: Build Runtime Node.js Init Docker Images\n    permissions:\n      packages: write\n    strategy:\n      matrix:\n        include:\n          - arch: amd64\n          - arch: arm64\n            runs-on: ubuntu-24.04-arm\n    runs-on: ${{ matrix.runs-on || 'ubuntu-24.04' }}\n\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Set up QEMU\n        if: ${{ matrix.arch != runner.arch }}\n        uses: docker/setup-qemu-action@v3\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Login to DockerHub\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.DOCKERHUB_USERNAME != '' }}\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Login to Github Container Hub\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Login to Aliyun Registry\n        uses: docker/login-action@v3\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.ALIYUN_REGISTRY }}\n        with:\n          registry: ${{ env.ALIYUN_REGISTRY }}\n          username: ${{ secrets.ALIYUN_USERNAME }}\n          password: ${{ secrets.ALIYUN_PASSWORD }}\n\n      - name: Extract metadata (tags, labels) for Docker\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: |\n            ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs-init\n            ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-runtime-nodejs-init', env.DOCKERHUB_USERNAME) || '' }}\n            ${{ env.ALIYUN_REGISTRY && format('{0}/{1}/laf-runtime-nodejs-init', env.ALIYUN_REGISTRY, env.ALIYUN_NAMESPACE) || '' }}\n\n      - name: Build for ${{ matrix.arch }}\n        id: docker-build\n        uses: docker/build-push-action@v6\n        with:\n          context: ./runtimes/nodejs\n          file: ./runtimes/nodejs/Dockerfile.init\n          labels: ${{ steps.meta.outputs.labels }}\n          platforms: linux/${{ matrix.arch }}\n          # PR builds: load locally, Main builds: push by digest\n          push: false\n          load: ${{ github.event_name == 'pull_request' }}\n          outputs: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && format('type=image,\"name=ghcr.io/{0}/laf-runtime-nodejs-init{1}{2}\",name-canonical=true,push-by-digest=true,push=true', github.repository_owner, env.DOCKERHUB_USERNAME && format(',docker.io/{0}/laf-runtime-nodejs-init', env.DOCKERHUB_USERNAME) || '', env.ALIYUN_REGISTRY && format(',{0}/{1}/laf-runtime-nodejs-init', env.ALIYUN_REGISTRY, env.ALIYUN_NAMESPACE) || '') || '' }}\n\n      - name: Export digest\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        run: |\n          mkdir -p ${{ runner.temp }}/digests-nodejs-init\n          digest=\"${{ steps.docker-build.outputs.digest }}\"\n          touch \"${{ runner.temp }}/digests-nodejs-init/${digest#sha256:}\"\n\n      - name: Upload digest\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        uses: actions/upload-artifact@v4\n        with:\n          name: digests-runtime-nodejs-init-${{ matrix.arch }}\n          path: ${{ runner.temp }}/digests-nodejs-init/*\n          if-no-files-found: error\n          retention-days: 1\n\n  release-runtime-nodejs-images:\n    name: Push Runtime Node.js Docker Images\n    permissions:\n      packages: write\n    needs: build-runtime-nodejs-images\n    runs-on: ubuntu-24.04\n    if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n    steps:\n      - name: Login to DockerHub\n        if: ${{ env.DOCKERHUB_USERNAME != '' }}\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Login to Github Container Hub\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Login to Aliyun Registry\n        uses: docker/login-action@v3\n        if: ${{ env.ALIYUN_REGISTRY }}\n        with:\n          registry: ${{ env.ALIYUN_REGISTRY }}\n          username: ${{ secrets.ALIYUN_USERNAME }}\n          password: ${{ secrets.ALIYUN_PASSWORD }}\n\n      - name: Download digests\n        uses: actions/download-artifact@v5\n        with:\n          path: ${{ runner.temp }}/digests\n          pattern: digests-runtime-nodejs-*\n          merge-multiple: true\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Extract metadata (tags, labels) for Docker\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: |\n            ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs\n            ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-runtime-nodejs', env.DOCKERHUB_USERNAME) || '' }}\n            ${{ env.ALIYUN_REGISTRY && format('{0}/{1}/laf-runtime-nodejs', env.ALIYUN_REGISTRY, env.ALIYUN_NAMESPACE) || '' }}\n          tags: |\n            type=ref,event=branch\n            type=ref,event=pr\n            type=ref,event=tag\n            type=semver,pattern={{version}}\n            type=semver,pattern={{major}}.{{minor}}\n            type=semver,pattern={{major}}\n            type=sha\n            type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }}\n\n      - name: Create manifest list and push\n        working-directory: ${{ runner.temp }}/digests\n        run: |\n          for TAG in $DOCKER_METADATA_OUTPUT_TAGS; do\n            docker buildx imagetools create -t $TAG \\\n              $(printf 'ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs@sha256:%s ' *)\n            sleep 3\n          done\n\n      - name: Inspect image\n        run: |\n          docker buildx imagetools inspect ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs:${{ steps.meta.outputs.version }}\n\n  release-runtime-nodejs-init-images:\n    name: Push Runtime Node.js Init Docker Images\n    permissions:\n      packages: write\n    needs: build-runtime-nodejs-init-images\n    runs-on: ubuntu-24.04\n    if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n    steps:\n      - name: Login to DockerHub\n        if: ${{ env.DOCKERHUB_USERNAME != '' }}\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Login to Github Container Hub\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Login to Aliyun Registry\n        uses: docker/login-action@v3\n        if: ${{ env.ALIYUN_REGISTRY }}\n        with:\n          registry: ${{ env.ALIYUN_REGISTRY }}\n          username: ${{ secrets.ALIYUN_USERNAME }}\n          password: ${{ secrets.ALIYUN_PASSWORD }}\n\n      - name: Download digests\n        uses: actions/download-artifact@v5\n        with:\n          path: ${{ runner.temp }}/digests\n          pattern: digests-runtime-nodejs-init-*\n          merge-multiple: true\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Extract metadata (tags, labels) for Docker\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: |\n            ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs-init\n            ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-runtime-nodejs-init', env.DOCKERHUB_USERNAME) || '' }}\n            ${{ env.ALIYUN_REGISTRY && format('{0}/{1}/laf-runtime-nodejs-init', env.ALIYUN_REGISTRY, env.ALIYUN_NAMESPACE) || '' }}\n          tags: |\n            type=ref,event=branch\n            type=ref,event=pr\n            type=ref,event=tag\n            type=semver,pattern={{version}}\n            type=semver,pattern={{major}}.{{minor}}\n            type=semver,pattern={{major}}\n            type=sha\n            type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }}\n\n      - name: Create manifest list and push\n        working-directory: ${{ runner.temp }}/digests\n        run: |\n          for TAG in $DOCKER_METADATA_OUTPUT_TAGS; do\n            docker buildx imagetools create -t $TAG \\\n              $(printf 'ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs-init@sha256:%s ' *)\n            sleep 3\n          done\n\n      - name: Inspect image\n        run: |\n          docker buildx imagetools inspect ghcr.io/${{ github.repository_owner }}/laf-runtime-nodejs-init:${{ steps.meta.outputs.version }}\n"
  },
  {
    "path": ".github/workflows/dockerize-server.yml",
    "content": "name: dockerize-server\n\non:\n  workflow_dispatch:\n  pull_request:\n    branches: [main]\n    types: [opened, synchronize, reopened]\n    paths:\n      - \"server/**\"\n      - \".github/workflows/dockerize-server.yml\"\n      - \"!**/*.md\"\n      - \"!server/package-lock.json\"\n  push:\n    branches: [main]\n    paths:\n      - \"server/**\"\n      - \".github/workflows/dockerize-server.yml\"\n      - \"!**/*.md\"\n      - \"!server/package-lock.json\"\n\npermissions:\n  pull-requests: write\n  packages: write\n  contents: read\n  issues: write\n\nconcurrency:\n  group: dockerize-server-${{ github.ref }}\n  cancel-in-progress: true\n\nenv:\n  DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}\n\njobs:\n  build-server-images:\n    name: Build Server Docker Images\n    permissions:\n      packages: write\n    strategy:\n      matrix:\n        include:\n          - arch: amd64\n          - arch: arm64\n            runs-on: ubuntu-24.04-arm\n    runs-on: ${{ matrix.runs-on || 'ubuntu-24.04' }}\n\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Cache node modules\n        id: cache-node-modules\n        uses: actions/cache@v4\n        with:\n          path: server/node_modules\n          key: ${{ runner.os }}-${{ matrix.arch }}-node-${{ hashFiles('server/package-lock.json') }}\n\n      - name: Use Node\n        uses: actions/setup-node@v4\n        with:\n          node-version: 18.x\n\n      - name: Install Package\n        working-directory: server\n        if: steps.cache-node-modules.outputs.cache-hit != 'true'\n        run: npm ci\n\n      - name: Build server\n        working-directory: server\n        run: npm run build\n\n      - name: Set up QEMU\n        if: ${{ matrix.arch != runner.arch }}\n        uses: docker/setup-qemu-action@v3\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Login to DockerHub\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.DOCKERHUB_USERNAME != '' }}\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Login to Github Container Hub\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Extract metadata (tags, labels) for Docker\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: |\n            ghcr.io/${{ github.repository_owner }}/laf-server\n            ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-server', env.DOCKERHUB_USERNAME) || '' }}\n\n      - name: Build for ${{ matrix.arch }}\n        id: docker-build\n        uses: docker/build-push-action@v6\n        with:\n          context: ./server\n          file: ./server/Dockerfile\n          labels: ${{ steps.meta.outputs.labels }}\n          platforms: linux/${{ matrix.arch }}\n          # PR builds: load locally, Main builds: push by digest\n          push: false\n          load: ${{ github.event_name == 'pull_request' }}\n          outputs: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && format('type=image,\"name=ghcr.io/{0}/laf-server{1}\",name-canonical=true,push-by-digest=true,push=true', github.repository_owner, env.DOCKERHUB_USERNAME && format(',docker.io/{0}/laf-server', env.DOCKERHUB_USERNAME) || '') || '' }}\n\n      - name: Export digest\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        run: |\n          mkdir -p ${{ runner.temp }}/digests\n          digest=\"${{ steps.docker-build.outputs.digest }}\"\n          touch \"${{ runner.temp }}/digests/${digest#sha256:}\"\n\n      - name: Upload digest\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        uses: actions/upload-artifact@v4\n        with:\n          name: digests-server-${{ matrix.arch }}\n          path: ${{ runner.temp }}/digests/*\n          if-no-files-found: error\n          retention-days: 1\n\n      - name: Comment on PR\n        if: github.event_name == 'pull_request' && matrix.arch == 'amd64' && always()\n        uses: actions/github-script@v7\n        continue-on-error: true\n        with:\n          script: |\n            const buildSuccess = '${{ steps.docker-build.outcome }}' === 'success';\n            const emoji = buildSuccess ? '✅' : '❌';\n            const status = buildSuccess ? 'Success' : 'Failed';\n\n            let body = `## ${emoji} laf Server Image Build ${status}\\n\\n`;\n            body += `### Build Details\\n\\n`;\n            body += `| Item | Value |\\n`;\n            body += `|------|-------|\\n`;\n            body += `| Build Status | ${buildSuccess ? '✅ Passed' : '❌ Failed'} |\\n`;\n            body += `| Platforms | linux/amd64 (PR validation) |\\n`;\n            body += `| Push to Registry | ⚠️ No (PR build only) |\\n`;\n            body += `| Node Version | 18.x |\\n\\n`;\n\n            if (buildSuccess) {\n              body += `### 📦 Image will be published after merge to main\\n\\n`;\n              body += `**Note**: PR builds only verify the Docker build process for linux/amd64. Multi-platform images (amd64 + arm64) are built and pushed only when merged to main.\\n\\n`;\n            }\n\n            body += `**Commit**: \\`${{ github.sha }}\\`\\n`;\n            body += `**Triggered by**: @${{ github.actor }}\\n`;\n\n            try {\n              const { data: comments } = await github.rest.issues.listComments({\n                owner: context.repo.owner,\n                repo: context.repo.repo,\n                issue_number: context.issue.number,\n              });\n\n              const botComment = comments.find(comment =>\n                comment.user.type === 'Bot' &&\n                comment.body.includes('laf Server Image Build')\n              );\n\n              if (botComment) {\n                await github.rest.issues.updateComment({\n                  owner: context.repo.owner,\n                  repo: context.repo.repo,\n                  comment_id: botComment.id,\n                  body: body\n                });\n              } else {\n                await github.rest.issues.createComment({\n                  owner: context.repo.owner,\n                  repo: context.repo.repo,\n                  issue_number: context.issue.number,\n                  body: body\n                });\n              }\n            } catch (error) {\n              console.log('Failed to post comment:', error.message);\n              console.log('This might be expected for PRs from forks');\n            }\n\n  release-server-images:\n    name: Push Server Docker Images\n    permissions:\n      packages: write\n    needs: build-server-images\n    runs-on: ubuntu-24.04\n    if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n    steps:\n      - name: Login to DockerHub\n        if: ${{ env.DOCKERHUB_USERNAME != '' }}\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Login to Github Container Hub\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Download digests\n        uses: actions/download-artifact@v5\n        with:\n          path: ${{ runner.temp }}/digests\n          pattern: digests-server-*\n          merge-multiple: true\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Extract metadata (tags, labels) for Docker\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: |\n            ghcr.io/${{ github.repository_owner }}/laf-server\n            ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-server', env.DOCKERHUB_USERNAME) || '' }}\n          tags: |\n            type=ref,event=branch\n            type=ref,event=pr\n            type=ref,event=tag\n            type=semver,pattern={{version}}\n            type=semver,pattern={{major}}.{{minor}}\n            type=semver,pattern={{major}}\n            type=sha\n            type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }}\n\n      - name: Create manifest list and push\n        working-directory: ${{ runner.temp }}/digests\n        run: |\n          for TAG in $DOCKER_METADATA_OUTPUT_TAGS; do\n            docker buildx imagetools create -t $TAG \\\n              $(printf 'ghcr.io/${{ github.repository_owner }}/laf-server@sha256:%s ' *)\n            sleep 3\n          done\n\n      - name: Inspect image\n        run: |\n          docker buildx imagetools inspect ghcr.io/${{ github.repository_owner }}/laf-server:${{ steps.meta.outputs.version }}"
  },
  {
    "path": ".github/workflows/dockerize-web.yml",
    "content": "name: dockerize-web\n\non:\n  workflow_dispatch:\n  pull_request:\n    branches: [main]\n    types: [opened, synchronize, reopened]\n    paths:\n      - \"web/**\"\n      - \".github/workflows/dockerize-web.yml\"\n      - \"!**/*.md\"\n      - \"!web/package-lock.json\"\n  push:\n    branches:\n      - main\n    paths:\n      - \"web/**\"\n      - \".github/workflows/dockerize-web.yml\"\n      - \"!**/*.md\"\n      - \"!web/package-lock.json\"\n\npermissions:\n  pull-requests: write\n  packages: write\n  contents: read\n  issues: write\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\nenv:\n  DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}\n\njobs:\n  build-web-images:\n    name: Build Web Docker Images\n    permissions:\n      packages: write\n    strategy:\n      matrix:\n        include:\n          - arch: amd64\n          - arch: arm64\n            runs-on: ubuntu-24.04-arm\n    runs-on: ${{ matrix.runs-on || 'ubuntu-24.04' }}\n\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Cache node modules\n        id: cache-node-modules\n        uses: actions/cache@v4\n        with:\n          path: web/node_modules\n          key: ${{ runner.os }}-${{ matrix.arch }}-node-${{ hashFiles('web/package-lock.json') }}\n\n      - name: Use Node\n        uses: actions/setup-node@v4\n        with:\n          node-version: 18.x\n\n      - name: Install Package\n        working-directory: web\n        if: steps.cache-node-modules.outputs.cache-hit != 'true'\n        run: npm ci\n\n      - name: Build web\n        working-directory: web\n        env:\n          VITE_SENTRY_DSN: ${{ secrets.SENTRY_DSN }}\n          VITE_GITHUB_SHA: ${{ github.sha }}\n        run: npm run build\n\n      - name: Create Sentry release\n        uses: getsentry/action-release@v1\n        if: ${{ !github.event.repository.fork && github.event_name != 'pull_request' && matrix.arch == 'amd64' }}\n        continue-on-error: true\n        env:\n          SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}\n          SENTRY_ORG: ${{ secrets.SENTRY_ORG }}\n          SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}\n        with:\n          sourcemaps: web/dist/assets\n          url_prefix: \"~/assets/\"\n          version: ${{ format('laf@{0}', github.sha) }}\n          working_directory: web\n          ignore_missing: true\n          ignore_empty: true\n\n      - name: Sentry release info (PR only)\n        if: github.event_name == 'pull_request' && matrix.arch == 'amd64'\n        run: |\n          echo \"ℹ️  Sentry release skipped in PR for security reasons\"\n          echo \"🚀 Sentry release will be created when this PR is merged\"\n\n      - name: Remove source maps\n        run: rm -rf web/dist/assets/*.map\n\n      - name: Set up QEMU\n        if: ${{ matrix.arch != runner.arch }}\n        uses: docker/setup-qemu-action@v3\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Login to DockerHub\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && env.DOCKERHUB_USERNAME != '' }}\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Login to Github Container Hub\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Extract metadata (tags, labels) for Docker\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: |\n            ghcr.io/${{ github.repository_owner }}/laf-web\n            ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-web', env.DOCKERHUB_USERNAME) || '' }}\n\n      - name: Build for ${{ matrix.arch }}\n        id: docker-build\n        uses: docker/build-push-action@v6\n        with:\n          context: ./web\n          file: ./web/Dockerfile\n          labels: ${{ steps.meta.outputs.labels }}\n          platforms: linux/${{ matrix.arch }}\n          # PR builds: load locally, Main builds: push by digest\n          push: false\n          load: ${{ github.event_name == 'pull_request' }}\n          outputs: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' && format('type=image,\"name=ghcr.io/{0}/laf-web{1}\",name-canonical=true,push-by-digest=true,push=true', github.repository_owner, env.DOCKERHUB_USERNAME && format(',docker.io/{0}/laf-web', env.DOCKERHUB_USERNAME) || '') || '' }}\n\n      - name: Export digest\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        run: |\n          mkdir -p ${{ runner.temp }}/digests\n          digest=\"${{ steps.docker-build.outputs.digest }}\"\n          touch \"${{ runner.temp }}/digests/${digest#sha256:}\"\n\n      - name: Upload digest\n        if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n        uses: actions/upload-artifact@v4\n        with:\n          name: digests-web-${{ matrix.arch }}\n          path: ${{ runner.temp }}/digests/*\n          if-no-files-found: error\n          retention-days: 1\n\n      - name: Comment on PR\n        if: github.event_name == 'pull_request' && matrix.arch == 'amd64' && always()\n        uses: actions/github-script@v7\n        continue-on-error: true\n        with:\n          script: |\n            const buildSuccess = '${{ steps.docker-build.outcome }}' === 'success';\n            const emoji = buildSuccess ? '✅' : '❌';\n            const status = buildSuccess ? 'Success' : 'Failed';\n\n            let body = `## ${emoji} laf Web Image Build ${status}\\n\\n`;\n            body += `### Build Details\\n\\n`;\n            body += `| Item | Value |\\n`;\n            body += `|------|-------|\\n`;\n            body += `| Build Status | ${buildSuccess ? '✅ Passed' : '❌ Failed'} |\\n`;\n            body += `| Platforms | linux/amd64 (PR validation) |\\n`;\n            body += `| Push to Registry | ⚠️ No (PR build only) |\\n`;\n            body += `| Node Version | 18.x |\\n`;\n            body += `| Framework | Vite/React |\\n\\n`;\n\n            if (buildSuccess) {\n              body += `### 📦 Image will be published after merge to main\\n\\n`;\n              body += `**Note**: PR builds only verify the Docker build process for linux/amd64. Multi-platform images (amd64 + arm64) are built and pushed only when merged to main.\\n\\n`;\n            }\n\n            body += `**Commit**: \\`${{ github.sha }}\\`\\n`;\n            body += `**Triggered by**: @${{ github.actor }}\\n`;\n\n            try {\n              const { data: comments } = await github.rest.issues.listComments({\n                owner: context.repo.owner,\n                repo: context.repo.repo,\n                issue_number: context.issue.number,\n              });\n\n              const botComment = comments.find(comment =>\n                comment.user.type === 'Bot' &&\n                comment.body.includes('laf Web Image Build')\n              );\n\n              if (botComment) {\n                await github.rest.issues.updateComment({\n                  owner: context.repo.owner,\n                  repo: context.repo.repo,\n                  comment_id: botComment.id,\n                  body: body\n                });\n              } else {\n                await github.rest.issues.createComment({\n                  owner: context.repo.owner,\n                  repo: context.repo.repo,\n                  issue_number: context.issue.number,\n                  body: body\n                });\n              }\n            } catch (error) {\n              console.log('Failed to post comment:', error.message);\n              console.log('This might be expected for PRs from forks');\n            }\n\n  release-web-images:\n    name: Push Web Docker Images\n    permissions:\n      packages: write\n    needs: build-web-images\n    runs-on: ubuntu-24.04\n    if: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}\n    steps:\n      - name: Login to DockerHub\n        if: ${{ env.DOCKERHUB_USERNAME != '' }}\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Login to Github Container Hub\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Download digests\n        uses: actions/download-artifact@v5\n        with:\n          path: ${{ runner.temp }}/digests\n          pattern: digests-web-*\n          merge-multiple: true\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Extract metadata (tags, labels) for Docker\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: |\n            ghcr.io/${{ github.repository_owner }}/laf-web\n            ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-web', env.DOCKERHUB_USERNAME) || '' }}\n          tags: |\n            type=ref,event=branch\n            type=ref,event=pr\n            type=ref,event=tag\n            type=semver,pattern={{version}}\n            type=semver,pattern={{major}}.{{minor}}\n            type=semver,pattern={{major}}\n            type=sha\n            type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }}\n\n      - name: Create manifest list and push\n        working-directory: ${{ runner.temp }}/digests\n        run: |\n          for TAG in $DOCKER_METADATA_OUTPUT_TAGS; do\n            docker buildx imagetools create -t $TAG \\\n              $(printf 'ghcr.io/${{ github.repository_owner }}/laf-web@sha256:%s ' *)\n            sleep 3\n          done\n\n      - name: Inspect image\n        run: |\n          docker buildx imagetools inspect ghcr.io/${{ github.repository_owner }}/laf-web:${{ steps.meta.outputs.version }}"
  },
  {
    "path": ".github/workflows/e2e.yml",
    "content": "name: e2e\n\non:\n  repository_dispatch:\n    types: [cluster_image_build_success, dockerize_runtime_success]\n  workflow_dispatch:\n  push:\n    branches:\n      - main\n    paths:\n      - \"e2e/**\"\n      - \".github/workflows/e2e.yml\"\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\nenv:\n  DOMAIN: 127.0.0.1.nip.io\n\njobs:\n  e2e:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n\n      - name: Remove builtin docker\n        run: |\n          sudo apt-get remove -y moby-engine moby-cli moby-buildx moby-compose\n\n      - name: Deploy laf\n        env:\n          DOMAIN: ${{ env.DOMAIN }}\n        working-directory: deploy\n        run: sudo sh install-on-linux.sh $DOMAIN # this script will install sealos and laf\n\n      - name: Run E2E Test\n        working-directory: e2e\n        run: |\n          sudo sh e2e.sh\n"
  },
  {
    "path": ".github/workflows/link-pr.yml",
    "content": "name: links when pr\n\non:\n  pull_request:\n    branches: [main]\n    paths:\n      - \"**.md\"\n      - \"docs/**\"\n      - \".lycheeignore\"\n\njobs:\n  linkChecker:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n\n      - name: Build Docs\n        uses: ./.github/actions/build-docs\n\n      - name: Link Checker\n        uses: lycheeverse/lychee-action@v1.8.0\n        with:\n          fail:\n            true\n            # For parameter description, see https://github.com/lycheeverse/lychee#commandline-parameters\n            # -E, --exclude-all-private    Exclude all private IPs from checking.\n            # -i, --insecure               Proceed for server connections considered insecure (invalid TLS)\n            # -n, --no-progress            Do not show progress bar.\n            # -t, --timeout <timeout>      Website timeout in seconds from connect to response finished [default:20]\n            # --max-concurrency <max-concurrency>    Maximum number of concurrent network requests [default: 128]\n            # -a --accept <accept>                      Comma-separated list of accepted status codes for valid links\n\n            # docs/.vitepress/dist the site directory to check\n            # ./*.md all markdown files in the root directory\n          args: -E -i -n -t 45 --max-concurrency 64 -a 401,403 -- 'docs/.vitepress/dist' '*.md'\n        env:\n          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: release\n\non:\n  workflow_dispatch:\n  push:\n    tags:\n      - v*.*.*\n\npermissions:\n  contents: read\n  packages: write\n\nenv:\n  DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}\n\njobs:\n  dockerize-server:\n    name: Build and Push Server Release Image\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Set up Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: 18.x\n          cache: \"npm\"\n          cache-dependency-path: server/package-lock.json\n\n      - name: Install dependencies\n        working-directory: server\n        run: npm ci\n\n      - name: Build server\n        working-directory: server\n        run: npm run build\n\n      - name: Docker meta\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: |\n            ghcr.io/${{ github.repository_owner }}/laf-server\n            ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-server', env.DOCKERHUB_USERNAME) || '' }}\n          tags: |\n            type=semver,pattern={{version}}\n            type=semver,pattern={{major}}.{{minor}}\n            type=semver,pattern={{major}}\n            type=sha,format=short\n\n      - name: Set up QEMU\n        uses: docker/setup-qemu-action@v3\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Login to DockerHub\n        if: ${{ env.DOCKERHUB_USERNAME != '' }}\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Login to GitHub Container Registry\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Build and push\n        id: docker-build\n        uses: docker/build-push-action@v6\n        with:\n          context: ./server\n          file: ./server/Dockerfile\n          push: true\n          tags: ${{ steps.meta.outputs.tags }}\n          labels: ${{ steps.meta.outputs.labels }}\n          platforms: linux/amd64,linux/arm64\n\n      - name: Log published images\n        run: |\n          echo \"Published server images:\"\n          echo \"${{ steps.meta.outputs.tags }}\"\n          echo \"Digest: ${{ steps.docker-build.outputs.digest }}\"\n\n  dockerize-web:\n    name: Build and Push Web Release Image\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Set up Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: 18.x\n          cache: \"npm\"\n          cache-dependency-path: web/package-lock.json\n\n      - name: Install dependencies\n        working-directory: web\n        run: npm ci\n\n      - name: Build web\n        working-directory: web\n        run: npm run build\n\n      - name: Remove source maps\n        run: rm -rf web/dist/assets/*.map\n\n      - name: Docker meta\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          images: |\n            ghcr.io/${{ github.repository_owner }}/laf-web\n            ${{ env.DOCKERHUB_USERNAME && format('docker.io/{0}/laf-web', env.DOCKERHUB_USERNAME) || '' }}\n          tags: |\n            type=semver,pattern={{version}}\n            type=semver,pattern={{major}}.{{minor}}\n            type=semver,pattern={{major}}\n            type=sha,format=short\n\n      - name: Set up QEMU\n        uses: docker/setup-qemu-action@v3\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Login to DockerHub\n        if: ${{ env.DOCKERHUB_USERNAME != '' }}\n        uses: docker/login-action@v3\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Login to GitHub Container Registry\n        uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Build and push\n        id: docker-build\n        uses: docker/build-push-action@v6\n        with:\n          context: ./web\n          file: ./web/Dockerfile\n          push: true\n          tags: ${{ steps.meta.outputs.tags }}\n          labels: ${{ steps.meta.outputs.labels }}\n          platforms: linux/amd64,linux/arm64\n\n      - name: Log published images\n        run: |\n          echo \"Published web images:\"\n          echo \"${{ steps.meta.outputs.tags }}\"\n          echo \"Digest: ${{ steps.docker-build.outputs.digest }}\"\n\n  notify-completion:\n    name: Notify Release Completion\n    needs: [dockerize-server, dockerize-web]\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Extract version from tag\n        id: version\n        run: |\n          VERSION=${GITHUB_REF#refs/tags/}\n          echo \"version=$VERSION\" >> $GITHUB_OUTPUT\n          echo \"Extracted version: $VERSION\"\n\n      - name: Log release completion\n        run: |\n          echo \"Release workflow completed successfully\"\n          echo \"This will trigger build-sealos-cluster-image via workflow_run\"\n          echo \"Version: ${{ steps.version.outputs.version }}\"\n          echo \"Ref: ${{ github.ref }}\"\n          echo \"SHA: ${{ github.sha }}\"\n"
  },
  {
    "path": ".github/workflows/sync-upstream.yml",
    "content": "name: Upstream Sync\n\npermissions:\n  contents: write\n\non:\n  schedule:\n    - cron: \"0 0 * * *\" # every day\n  workflow_dispatch:\n\njobs:\n  sync_latest_from_upstream:\n    name: Sync latest commits from upstream repo\n    runs-on: ubuntu-latest\n    if: ${{ github.event.repository.fork }}\n\n    steps:\n      - name: Checkout target repo\n        uses: actions/checkout@v3\n\n      - name: Sync upstream changes\n        id: sync\n        uses: aormsby/Fork-Sync-With-Upstream-action@v3.4\n        with:\n          upstream_sync_repo: labring/laf\n          upstream_sync_branch: main\n          target_sync_branch: main\n          target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set\n          # Set test_mode true to run tests instead of the true action!!\n          test_mode: false\n\n      - name: Sync check\n        if: failure()\n        run: |\n          echo \"[Error] Due to the change of the workflow file in the upstream warehouse, GitHub automatically suspended this automatic update, you need to manually Sync Fork once.\"\n          exit 1\n"
  },
  {
    "path": ".gitignore",
    "content": "node_modules\ndist\n\nupload\ndata/*\ntmp\n\necosystem.config.js\n.DS_Store\n.idea\n\ncoverage\n.nyc_output\n\nkubernetes-dev/mongo-data\n\nkubernetes-local/\n.vscode/configurationCache.log\n.vscode/dryrun.log\n.vscode/targets.log\n\n.kube/\n\nbuild/*/manifests\nbuild/*/registry\nbuild/*/charts\nbuild/registry\nbuild-dev\ndocs/.vitepress/.temp\n.idea/\n\nupdate-changelog.sh\nruntimes/nodejs-esm\nyarn.lock\ndeploy/logs/sealos.log\n"
  },
  {
    "path": ".husky/pre-commit",
    "content": "#!/usr/bin/env sh\n. \"$(dirname -- \"$0\")/_/husky.sh\"\n\nnpm run lint-staged\n"
  },
  {
    "path": ".lycheeignore",
    "content": ".*appid.*\n.*xx.*\nhttps://beian.miit.gov.cn/\n.*127-0-0-1.*\nhttps://oss.laf.run\nhttps://github.com/labring/laf/edit/main/docs/\nhttps://openapi.alipaydev.com/gateway.do\nhttps://github.com/labring/laf/commit/\nhttps://github.com/labring/laf/issues/\nhttps://twitter.com/laf_dev\nhttps://oss.laf.dev\nhttps://oss.laf.dev/\nhttps://laf.run/v1/auth/passwd/signin"
  },
  {
    "path": ".vscode/extensions.json",
    "content": "{\n  \"recommendations\": [\n    \"dbaeumer.vscode-eslint\",\n    \"christian-kohler.npm-intellisense\",\n    \"streetsidesoftware.code-spell-checker\",\n    \"pomdtr.excalidraw-editor\",\n    \"Tim-Koehler.helm-intellisense\",\n    \"lokalise.i18n-ally\",\n    \"stylelint.vscode-stylelint\",\n    \"EditorConfig.EditorConfig\"\n  ]\n}"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  // editor\n  \"editor.formatOnSave\": true,\n  \"editor.formatOnType\": true,\n  \"editor.tabSize\": 2,\n  \"editor.suggestSelection\": \"first\",\n  \"editor.renderControlCharacters\": true,\n  \"editor.quickSuggestions\": {\n    \"strings\": true\n  },\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll.eslint\": \"explicit\"\n  },\n  // eslint\n  \"eslint.alwaysShowStatus\": true,\n  \"eslint.format.enable\": true,\n  \"eslint.run\": \"onSave\",\n  \"eslint.codeActionsOnSave.mode\": \"all\",\n  // json\n  \"[json]\": {\n    \"editor.defaultFormatter\": \"vscode.json-language-features\"\n  },\n  \"cSpell.words\": [\n    \"aarch\",\n    \"Adora\",\n    \"alicloud\",\n    \"alipay\",\n    \"alisms\",\n    \"apiextensions\",\n    \"apiv\",\n    \"appid\",\n    \"automount\",\n    \"Autoscaler\",\n    \"binded\",\n    \"bodyparser\",\n    \"bson\",\n    \"buildah\",\n    \"buildx\",\n    \"Builtins\",\n    \"chakra\",\n    \"Chakra\",\n    \"chatgpt\",\n    \"ciphertext\",\n    \"cloudbin\",\n    \"clsx\",\n    \"codingame\",\n    \"coll\",\n    \"compat\",\n    \"containerd\",\n    \"creationforms\",\n    \"curlimages\",\n    \"datasource\",\n    \"datepicker\",\n    \"dockerode\",\n    \"doctag\",\n    \"dysmsapi\",\n    \"Dysmsapi\",\n    \"EJSON\",\n    \"entrypoint\",\n    \"finalizers\",\n    \"fullname\",\n    \"ghaction\",\n    \"healthz\",\n    \"hljs\",\n    \"hokify\",\n    \"hostpath\",\n    \"immer\",\n    \"Katex\",\n    \"Kube\",\n    \"kubeconfig\",\n    \"Kubefile\",\n    \"Kubernetes\",\n    \"labring\",\n    \"lafjs\",\n    \"lafyun\",\n    \"languagedetector\",\n    \"logtostderr\",\n    \"mchid\",\n    \"millicores\",\n    \"mimetypes\",\n    \"MINIO\",\n    \"moby\",\n    \"mongorestore\",\n    \"MONOG\",\n    \"nestjs\",\n    \"objs\",\n    \"openapi\",\n    \"openebs\",\n    \"OVERLIMIT\",\n    \"pako\",\n    \"passw\",\n    \"pgdb\",\n    \"presigner\",\n    \"qrcode\",\n    \"readwrite\",\n    \"Referer\",\n    \"rehype\",\n    \"relock\",\n    \"rolebinding\",\n    \"roundrobin\",\n    \"runc\",\n    \"runtimes\",\n    \"runtimev\",\n    \"sealctl\",\n    \"sealos\",\n    \"signin\",\n    \"Signup\",\n    \"simplebar\",\n    \"statefulset\",\n    \"storageclass\",\n    \"Streamable\",\n    \"stylelint\",\n    \"tailwindcss\",\n    \"tanstack\",\n    \"telepresence\",\n    \"tolerations\",\n    \"uids\",\n    \"ungzip\",\n    \"upsert\",\n    \"upserted\",\n    \"urlencode\",\n    \"userid\",\n    \"uuidv\",\n    \"videobg\",\n    \"videomobile\",\n    \"vitepress\",\n    \"webchat\",\n    \"wechat\",\n    \"WECHATPAY\",\n    \"withs\",\n    \"xmlparser\",\n    \"zcube\",\n    \"zustand\"\n  ],\n  \"i18n-ally.localesPaths\": \"web/public/locales\",\n  \"i18n-ally.enabledParsers\": [\n    \"json\"\n  ],\n  \"i18n-ally.enabledFrameworks\": [\n    \"react\",\n    \"i18next\",\n    \"general\"\n  ],\n  \"i18n-ally.sourceLanguage\": \"zh\",\n  // \"i18n-ally.displayLanguage\": \"en,zh\",\n  \"i18n-ally.displayLanguage\": \"zh\",\n  \"i18n-ally.namespace\": false,\n  \"i18n-ally.pathMatcher\": \"{locale}/translation.json\",\n  \"i18n-ally.keystyle\": \"nested\",\n  \"i18n-ally.keysInUse\": [\n    \"description.part2_whatever\"\n  ],\n  \"jest.rootPath\": \"e2e\",\n  \"typescript.tsdk\": \"node_modules/typescript/lib\",\n  \"[typescriptreact]\": {\n    \"editor.defaultFormatter\": \"dbaeumer.vscode-eslint\"\n  },\n  \"[typescript]\": {\n    \"editor.defaultFormatter\": \"dbaeumer.vscode-eslint\"\n  },\n}"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# [1.0.0-beta.4](https://github.com/labring/laf/compare/v1.0.0...v1.0.0-beta.4) (2024-04-01)\n\n\n\n# [1.0.0](https://github.com/labring/laf/compare/v1.0.0-beta.14...v1.0.0) (2024-04-01)\n\n\n### Bug Fixes\n\n* **build:** remove unneeded build layer ([#1822](https://github.com/labring/laf/issues/1822)) ([f53510c](https://github.com/labring/laf/commit/f53510c1997164be42d28d0e2eba2bc0e12edf15))\n* **cli:** dotenv package missing error ([#1747](https://github.com/labring/laf/issues/1747)) ([3539d17](https://github.com/labring/laf/commit/3539d1776449c0fb5bfbf3c16fd33a93a4d1a552))\n* **cli:** func desc missing caused by typo ([#1832](https://github.com/labring/laf/issues/1832)) ([3816b3f](https://github.com/labring/laf/commit/3816b3fad3e6f8e538acd48daac699b753f77b52))\n* **cli:** storage field key error during refresh ([#1833](https://github.com/labring/laf/issues/1833)) ([17811c4](https://github.com/labring/laf/commit/17811c49b9d45b27db1b557e97be1c3806544963))\n* fix bson version error in database-ql ([#1751](https://github.com/labring/laf/issues/1751)) ([d3a5c7f](https://github.com/labring/laf/commit/d3a5c7fe4852cc93aaf2fe291355e98b48d2078e))\n* **runtime-exporter:** repair the build process ([#1869](https://github.com/labring/laf/issues/1869)) ([2948df9](https://github.com/labring/laf/commit/2948df95b587be7eb813424af0b3bbd8a1c88bf9))\n* **runtime:** fix override deps when init package.json ([#1855](https://github.com/labring/laf/issues/1855)) ([d73d71b](https://github.com/labring/laf/commit/d73d71bcfb5b02cc4eb068667b6b7f8105108006))\n* **runtime:** fix runtime database connection error ([#1776](https://github.com/labring/laf/issues/1776)) ([db10359](https://github.com/labring/laf/commit/db10359399f61adbe49ba0c9dd7ef3be033caf3a))\n* **runtime:** fix storage server query url problem ([#1910](https://github.com/labring/laf/issues/1910)) ([27be959](https://github.com/labring/laf/commit/27be959cf8406bb14c5c5cc40bf04adaeb440239))\n* **runtime:** fix upload-dependencies tar path ([#1891](https://github.com/labring/laf/issues/1891)) ([bc948e2](https://github.com/labring/laf/commit/bc948e2d1acaaff9d308bebb645cdb05672e8ac9))\n* **runtime:** print error when invoke init function error ([#1887](https://github.com/labring/laf/issues/1887)) ([fbfa762](https://github.com/labring/laf/commit/fbfa762afaaf02e7fd9d6477740f0005a8144853))\n* **runtime:** wait for db ready ([#1774](https://github.com/labring/laf/issues/1774)) ([f1f0798](https://github.com/labring/laf/commit/f1f0798d303f73f0b8583458d7b0315770610b39))\n* **server:** add environment variable to control bucket domain Create task switch ([#1836](https://github.com/labring/laf/issues/1836)) ([3e17727](https://github.com/labring/laf/commit/3e1772714d110b16f98dfaab9ae3338a1652914a))\n* **server:** billing error with old apps ([#1797](https://github.com/labring/laf/issues/1797)) ([fadd735](https://github.com/labring/laf/commit/fadd7356952a1e8130fb60dfaa1a592e1e88a7d1))\n* **server:** billing for all apps including stopped apps ([#1781](https://github.com/labring/laf/issues/1781)) ([6cb7e57](https://github.com/labring/laf/commit/6cb7e576c6e926735a2d7d8fbdcbca490ba3ce05))\n* **server:** certificate of unbundled website domain name is not deleted ([#1871](https://github.com/labring/laf/issues/1871)) ([d52a578](https://github.com/labring/laf/commit/d52a57803433e4c16212680e20625f3d5af2a845))\n* **server:** disable i18n file watching in server ([#1800](https://github.com/labring/laf/issues/1800)) ([e9b6de7](https://github.com/labring/laf/commit/e9b6de70be7c38c085311a7dcd7b1f205492c4d1))\n* **server:** fix being failed to find address when connect ddb ([#1771](https://github.com/labring/laf/issues/1771)) ([0ed539e](https://github.com/labring/laf/commit/0ed539ec9d0607190107e2ad7cd712bdc88cab43))\n* **server:** fix certificate not deleting and rebuilding issue when unbundling runtime custom domains ([#1829](https://github.com/labring/laf/issues/1829)) ([77be144](https://github.com/labring/laf/commit/77be144c48c4ee473104ae882520f47210efa520))\n* **server:** fix compiled code that doesn't support await import ([#1828](https://github.com/labring/laf/issues/1828)) ([b23d2a2](https://github.com/labring/laf/commit/b23d2a2f8841c9095bf3cbca5497c515eb6a51b4))\n* **server:** fix dedicated database connect host ([#1906](https://github.com/labring/laf/issues/1906)) ([658fe49](https://github.com/labring/laf/commit/658fe4978a6b21c4c4881f6990651a948704804a))\n* **server:** fix extra billing for ddb when app has stopped ([#1884](https://github.com/labring/laf/issues/1884)) ([3113289](https://github.com/labring/laf/commit/31132890260be382285c7714ce6c3591ff3acecf))\n* **server:** fix multi-region database connectivity issues ([#1801](https://github.com/labring/laf/issues/1801)) ([aa28e7e](https://github.com/labring/laf/commit/aa28e7e0a0c5fb6c7dc87f15372be26144cf0b92))\n* **server:** fix too large entity error when upload large func ([#1882](https://github.com/labring/laf/issues/1882)) ([fdf96bb](https://github.com/labring/laf/commit/fdf96bb51ddaade6e6b09fca32f6f6da16db3373))\n* **server:** read manifest failed when init region ([#1820](https://github.com/labring/laf/issues/1820)) ([f72e024](https://github.com/labring/laf/commit/f72e02467e3d40f1d851e14db4af983535fc42b4))\n* **server:** update account updateAt ([#1806](https://github.com/labring/laf/issues/1806)) ([1b75bac](https://github.com/labring/laf/commit/1b75bacfb80fb56c5984f83aaf7ced9f1970d1a7))\n* **server:** update function changelog optional ([#1799](https://github.com/labring/laf/issues/1799)) ([84ea810](https://github.com/labring/laf/commit/84ea810bf3dfed181cb7fe8331b35866868b9a95))\n* **web&server:** fix billing query time boundary problem ([#1745](https://github.com/labring/laf/issues/1745)) ([d9cfd9f](https://github.com/labring/laf/commit/d9cfd9f933cb260ec43a658db8139e2a471067b0))\n* **web:** cannot click history func version ([#1798](https://github.com/labring/laf/issues/1798)) ([12bef25](https://github.com/labring/laf/commit/12bef25e93e2049562db896e2c7fc00d60cc258b))\n* **web:** change monaco loader cdn with self-host js ([#1812](https://github.com/labring/laf/issues/1812)) ([604ee33](https://github.com/labring/laf/commit/604ee33410b91b07fee89f505f70dadf2e8b9717))\n* **web:** error when click recommend specs ([#1793](https://github.com/labring/laf/issues/1793)) ([cea1c88](https://github.com/labring/laf/commit/cea1c8889dc72873baa618afb06106366f0a17e0))\n* **web:** fix ddb not compactable with old app ([#1768](https://github.com/labring/laf/issues/1768)) ([208a683](https://github.com/labring/laf/commit/208a683d717366dadab5eb03fdfee71b74389a43))\n* **web:** fix editor theme override & init with value ([#1795](https://github.com/labring/laf/issues/1795)) ([b127a0b](https://github.com/labring/laf/commit/b127a0bfd954d6094f65306b91f9cab006d0b8b4))\n* **web:** fix function scroll bar & support horizontal scrolling ([#1814](https://github.com/labring/laf/issues/1814)) ([48d636c](https://github.com/labring/laf/commit/48d636c72aff65c9d100e5a3d83fb9be37fcb3ca))\n* **web:** fix monaco editor key binding ([#1809](https://github.com/labring/laf/issues/1809)) ([87b3c03](https://github.com/labring/laf/commit/87b3c0338c0c2af6adfa243060625fab1eaf41b4))\n* **web:** fix nginx conf ([#1907](https://github.com/labring/laf/issues/1907)) ([b37508a](https://github.com/labring/laf/commit/b37508a02f7211a7895dcd3331590b4d3c9c2f8e))\n* **web:** fix nginx conf ([#1908](https://github.com/labring/laf/issues/1908)) ([9ec2a97](https://github.com/labring/laf/commit/9ec2a9739c9403e57a0a2524c8211dec52d31ad1))\n* **web:** fix not auto import typings when switch paths ([#1896](https://github.com/labring/laf/issues/1896)) ([f7ab0dd](https://github.com/labring/laf/commit/f7ab0dd687f76812b2772a3016f4b5d30fcac00b))\n* **web:** fix only display either phone or email login ([#1888](https://github.com/labring/laf/issues/1888)) ([896386d](https://github.com/labring/laf/commit/896386d1620ff9c2477012e262357981980c5295))\n* **web:** fix pwa cache ([#1905](https://github.com/labring/laf/issues/1905)) ([ab28cd4](https://github.com/labring/laf/commit/ab28cd4df9097a5aee6f14a1899232000f02af1d))\n* **web:** fix storage path concatenation & add dependency install tip ([#1864](https://github.com/labring/laf/issues/1864)) ([53e491a](https://github.com/labring/laf/commit/53e491a70d05930c2c86b833ea2fe9000dfaf740))\n* **web:** not update recent function list when deploy & fix type when import function by relative path ([#1821](https://github.com/labring/laf/issues/1821)) ([2a06729](https://github.com/labring/laf/commit/2a06729d304ef6da9ef8624363cbac673ea901f1))\n* **web:** wait for all delete files  promise settled ([#1777](https://github.com/labring/laf/issues/1777)) ([44df222](https://github.com/labring/laf/commit/44df22218ab88b16aa15ba76e940735d02078c90))\n\n\n### Features\n\n* **runtime&server:** support display error/log line ([#1813](https://github.com/labring/laf/issues/1813)) ([faefc11](https://github.com/labring/laf/commit/faefc11c66471b39b5245e19a4b51429c46a9a04))\n* **runtime&server:** support updating dependencies without restarting ([#1823](https://github.com/labring/laf/issues/1823)) ([debd01c](https://github.com/labring/laf/commit/debd01c82e02facb3a5e9c5d369fa62f4c1c3892))\n* **runtime:** add ts lsp server ([#1660](https://github.com/labring/laf/issues/1660)) ([ba8de86](https://github.com/labring/laf/commit/ba8de8645cf1ff38eba58587f3adc940832967fe))\n* **server:** Add a setting to control whether WebPromoPage is enabled or not. ([#1861](https://github.com/labring/laf/issues/1861)) ([cc97241](https://github.com/labring/laf/commit/cc972417d324fe2c14773682bf49b1a7cb022cab))\n* **server:** add app network traffic metering ([#1892](https://github.com/labring/laf/issues/1892)) ([ef30cd9](https://github.com/labring/laf/commit/ef30cd917cd8ead8cab092e3f7e690e2452790a2))\n* **server:** adding a delinquent flag to an account when the account… ([#1881](https://github.com/labring/laf/issues/1881)) ([a9bc541](https://github.com/labring/laf/commit/a9bc541c649502660f53c679887bf4ae74b90518))\n* **server:** recover the application and synchronize the recovery functions to sys_db ([#1879](https://github.com/labring/laf/issues/1879)) ([46a0cd4](https://github.com/labring/laf/commit/46a0cd440feb2c63d21c5dcf327ba2476b5b29e4))\n* **server:** support auth methods of email ([#1867](https://github.com/labring/laf/issues/1867)) ([2364f57](https://github.com/labring/laf/commit/2364f57b432fbf93727e3f5872af4e28d8a22da2))\n* **server:** support dedicated database ([#1728](https://github.com/labring/laf/issues/1728)) ([cae101b](https://github.com/labring/laf/commit/cae101b7d37e67d342e7b28f132a4e28493bee1f))\n* **server:** support function history changelog ([#1756](https://github.com/labring/laf/issues/1756)) ([829fd8a](https://github.com/labring/laf/commit/829fd8a0169702e0c4f9491bf2241b8327582579))\n* **server:** support notification ([#1683](https://github.com/labring/laf/issues/1683)) ([d9f527b](https://github.com/labring/laf/commit/d9f527b5dc6fbf702b89a37d6defbd120af734dd))\n* **services:** add database metrics interface ([#1739](https://github.com/labring/laf/issues/1739)) ([74518b9](https://github.com/labring/laf/commit/74518b9139b1dd336aa92d278fb8466b0a2bd4e0))\n* **web&server:** control the activation of the ddb & change the location of deploy manifests ([#1810](https://github.com/labring/laf/issues/1810)) ([a8bd80e](https://github.com/labring/laf/commit/a8bd80e20144a24b93c6eac9517b99f99dff90b1))\n* **web:** add app network traffic metering ([#1894](https://github.com/labring/laf/issues/1894)) ([e9d012d](https://github.com/labring/laf/commit/e9d012ddda0381332c3fc444e71e9c24e807461e))\n* **web:** add function list context menu ([#1825](https://github.com/labring/laf/issues/1825)) ([bcde132](https://github.com/labring/laf/commit/bcde132fd872be9ef033d059055b92d5e20c5fff))\n* **web:** add index page setting config ([#1858](https://github.com/labring/laf/issues/1858)) ([f192ec8](https://github.com/labring/laf/commit/f192ec8dc2a767bf03b41c336e8635f248bb3708))\n* **web:** add laf_doc and laf_about_us url config ([#1763](https://github.com/labring/laf/issues/1763)) ([9a96ff7](https://github.com/labring/laf/commit/9a96ff75c4d5572491e16851b59b193e07c2c882))\n* **web:** optimize app log stream ([#1811](https://github.com/labring/laf/issues/1811)) ([59da485](https://github.com/labring/laf/commit/59da48573d139d5fec5c405c0dbff9e3bb320c69))\n* **web:** remove charge input ([#1912](https://github.com/labring/laf/issues/1912)) ([c39772b](https://github.com/labring/laf/commit/c39772b500cba35c348a25d0b80bcf68ed1f088d))\n* **web:** support ai code completion ([#1877](https://github.com/labring/laf/issues/1877)) ([1c688b8](https://github.com/labring/laf/commit/1c688b8afcbc56af31f040ef3981bb743ac877f5))\n* **web:** support auth methods of email ([#1865](https://github.com/labring/laf/issues/1865)) ([9f0a683](https://github.com/labring/laf/commit/9f0a68356b4746ebe948925c62e9e1ce57b9f25f))\n* **web:** support dedicated database ([#1730](https://github.com/labring/laf/issues/1730)) ([6a02910](https://github.com/labring/laf/commit/6a0291043f01d3c134625bd345fa94e04fb6794f))\n* **web:** support deleting multiple storage files ([#1755](https://github.com/labring/laf/issues/1755)) ([4e47d04](https://github.com/labring/laf/commit/4e47d0483819e273f84f93e741cf7b65d11d0d63))\n* **web:** support function changelog ([#1757](https://github.com/labring/laf/issues/1757)) ([9d86105](https://github.com/labring/laf/commit/9d861050120894c3db26039ade6e250b0c340b95))\n* **web:** support function editor with lsp ([#1657](https://github.com/labring/laf/issues/1657)) ([d7d0b46](https://github.com/labring/laf/commit/d7d0b46d17cbfb66de806083212e62da4d58ebd0))\n* **web:** support function editor with lsp ([#1784](https://github.com/labring/laf/issues/1784)) ([022ee46](https://github.com/labring/laf/commit/022ee46404c87d49f9b86071ff2cb9c8bad62e09))\n* **web:** support rename functions using dragging ([#1762](https://github.com/labring/laf/issues/1762)) ([f108ea8](https://github.com/labring/laf/commit/f108ea8d241750b448bd98a4474501ab8bc7a951))\n* **web:** support sort files of storage & fix monitor data undefined ([#1819](https://github.com/labring/laf/issues/1819)) ([55360e9](https://github.com/labring/laf/commit/55360e9f411019d41bb80244d6eb137aee7a8007))\n* **web:** support updating dependencies without restarting ([#1824](https://github.com/labring/laf/issues/1824)) ([bd69fea](https://github.com/labring/laf/commit/bd69fea2b9a8d3ebf55a24951ef432ae8a7a5218))\n* **web:** support version upgrade prompt ([#1754](https://github.com/labring/laf/issues/1754)) ([94e3e82](https://github.com/labring/laf/commit/94e3e82f09aafd0ee9b0704f520f0eec9e1d1b6a))\n\n\n### Reverts\n\n* Revert \"feat(web): support function editor with lsp (#1657)\" (#1783) ([5a63468](https://github.com/labring/laf/commit/5a63468432e8173e255ab8cc29f992cd3cf835f0)), closes [#1657](https://github.com/labring/laf/issues/1657) [#1783](https://github.com/labring/laf/issues/1783)\n\n\n\n# [1.0.0-beta.14](https://github.com/labring/laf/compare/v1.0.0-beta.13...v1.0.0-beta.14) (2023-12-19)\n\n\n### Bug Fixes\n\n* **runtime:** append null check to object check ([#1684](https://github.com/labring/laf/issues/1684)) ([f2a3a40](https://github.com/labring/laf/commit/f2a3a40969be641a0235bc2faa916f2d33eebf46))\n* **runtime:** fix cloud sdk cannot initialize in custom deps module ([#1711](https://github.com/labring/laf/issues/1711)) ([c1748d6](https://github.com/labring/laf/commit/c1748d6f868b3cef500a41145644204c950bfc9f))\n* **runtime:** fix module.exports error; fix logs error while response.chunkedEncoding is true ([#1707](https://github.com/labring/laf/issues/1707)) ([8ea5ad0](https://github.com/labring/laf/commit/8ea5ad0d893e1a55d0f91e65c4d3e6ec4c2de9b7))\n* **runtime:** fix process.env hot reload ([#1709](https://github.com/labring/laf/issues/1709)) ([7ef87f5](https://github.com/labring/laf/commit/7ef87f5ab2229045cafef6e74c71738bfc65dd99))\n* **runtime:** upgrade node to v20 to fix importModuleDynamic bug ([#1687](https://github.com/labring/laf/issues/1687)) ([849a221](https://github.com/labring/laf/commit/849a2214395afdb92185512515afb68db0760996))\n* **server:** add field whitelist for validation ([#1692](https://github.com/labring/laf/issues/1692)) ([b73acea](https://github.com/labring/laf/commit/b73acea07c043ca391782abdcf8ebc2039f5dd08))\n* **server:** fix get_client_ip method, use x-forwarded-fro first ([#1717](https://github.com/labring/laf/issues/1717)) ([be0cb05](https://github.com/labring/laf/commit/be0cb054351cc65a03998ec41b7247aa9ddebf79))\n* **server:** fix logging api error return ([#1727](https://github.com/labring/laf/issues/1727)) ([dafa12c](https://github.com/labring/laf/commit/dafa12cb58cc426c9a164ed98777e9733647515d))\n* **server:** fix runtime logging interface not authenticated ([#1725](https://github.com/labring/laf/issues/1725)) ([6e41123](https://github.com/labring/laf/commit/6e41123dab4206459ce09ec57996069c282dc62d))\n* **services:** change runtime exporter penalty rules ([#1733](https://github.com/labring/laf/issues/1733)) ([e2a85e0](https://github.com/labring/laf/commit/e2a85e0c57a5b5d9d3f679e0e3aa2e2bbf0ed2f5))\n* **web:** cannot update database record with ObjectId [#1524](https://github.com/labring/laf/issues/1524) ([#1723](https://github.com/labring/laf/issues/1723)) ([f8e2385](https://github.com/labring/laf/commit/f8e2385b26ffcdc7ca2e41425b7a66e1f8b4bada))\n* **web:** fix app monitor longest array ([#1682](https://github.com/labring/laf/issues/1682)) ([9239629](https://github.com/labring/laf/commit/9239629fb02681b8b3aca6a3a2e2c3783a5dbecd))\n* **web:** function return shows when not undefined & update current function after edit name ([#1713](https://github.com/labring/laf/issues/1713)) ([2b228d0](https://github.com/labring/laf/commit/2b228d05fd67caaf7eea20be1b0185eab44e8fae))\n* **web:** jsonviewer support to render large data ([#1731](https://github.com/labring/laf/issues/1731)) ([382d8f2](https://github.com/labring/laf/commit/382d8f2af4824b8b74930b930f767eef165c7864))\n\n\n### Features\n\n* cli support env ([#1718](https://github.com/labring/laf/issues/1718)) ([80b88c0](https://github.com/labring/laf/commit/80b88c026c3566520e9307843b33e0a14ec34926))\n* **cloud-sdk:** add url api to cloud sdk ([#1732](https://github.com/labring/laf/issues/1732)) ([2b87cb7](https://github.com/labring/laf/commit/2b87cb735caf87698a8016fe4c95cd0128fe0e7c))\n* **runtime:** add cloud.storage api in cloud sdk ([#1729](https://github.com/labring/laf/issues/1729)) ([18afa9b](https://github.com/labring/laf/commit/18afa9b9b128f935ea1928012bf59fdb1d315721))\n* **runtime:** detach custom dependency, support node_module caching ([#1658](https://github.com/labring/laf/issues/1658)) ([2fbc5f1](https://github.com/labring/laf/commit/2fbc5f189a941b3d445c555350ebac4bc9983dcb))\n* **runtime:** support LF_NODE_MODULES_CACHE to control if offline deps installation ([#1743](https://github.com/labring/laf/issues/1743)) ([3e4b2f7](https://github.com/labring/laf/commit/3e4b2f7cf78e61619eeaac861074e2d5ab76aa18))\n* **runtime:** support relative path import of fn ([#1712](https://github.com/labring/laf/issues/1712)) ([9daa9f8](https://github.com/labring/laf/commit/9daa9f8a42394456179e5437ffd2c89c48505cb1))\n* **server:** Add a consolidated multi-pod, multi-container log query ([#1689](https://github.com/labring/laf/issues/1689)) ([b29fdcd](https://github.com/labring/laf/commit/b29fdcdda83cb4b5ea7de0b284642f2884c51e2f))\n* **server:** support request-limit ratio conf of runtime resource in region ([#1702](https://github.com/labring/laf/issues/1702)) ([2046b4b](https://github.com/labring/laf/commit/2046b4bdfc4062978b3a79ab18ea9913cd436aab))\n* **web:** support consolidated multi-pod, multi-container log query ([#1691](https://github.com/labring/laf/issues/1691)) ([61e7fcb](https://github.com/labring/laf/commit/61e7fcbaa4c103786cf0155e6ab9482db9b04eb6))\n\n\n\n# [1.0.0-beta.13](https://github.com/labring/laf/compare/v1.0.0-beta.12...v1.0.0-beta.13) (2023-11-10)\n\n\n### Bug Fixes\n\n* **runtime:** fix DISABLE_MODULE_CACHE condition error ([#1630](https://github.com/labring/laf/issues/1630)) ([62cc5a7](https://github.com/labring/laf/commit/62cc5a7a6de3709c0363a5fab2f8ee000c7a9d7f))\n* **runtime:** fix interceptor main func error ([#1638](https://github.com/labring/laf/issues/1638)) ([b3bc612](https://github.com/labring/laf/commit/b3bc6121843c0d835bf37f72d0371ec2850e5ca5))\n* **server:** fix billing miss on old app ([#1659](https://github.com/labring/laf/issues/1659)) ([4e5b8d4](https://github.com/labring/laf/commit/4e5b8d407a06d76091fda112351b1491dc05fac1))\n* **server:** fix billing miss on old app ([#1666](https://github.com/labring/laf/issues/1666)) ([943ad92](https://github.com/labring/laf/commit/943ad92000b92e29664a846ee43b6abf120d0a40))\n* **server:** fix get metering data miss quota ([#1673](https://github.com/labring/laf/issues/1673)) ([afbdd36](https://github.com/labring/laf/commit/afbdd369945c4b357a4a983e531370926db3ef11))\n* **services:** fix runtime exporter metrics data caching issue ([#1663](https://github.com/labring/laf/issues/1663)) ([9e8ee08](https://github.com/labring/laf/commit/9e8ee08c15eb92d1c46c8843152fad50c3c16fec))\n* **services:** fix runtime exporter metrics data caching issue ([#1664](https://github.com/labring/laf/issues/1664)) ([c1f0cdc](https://github.com/labring/laf/commit/c1f0cdcbb18d81ad7d703cc9b8e6ded5c37407a4))\n* **web:** fix add index bug ([#1626](https://github.com/labring/laf/issues/1626)) ([525a063](https://github.com/labring/laf/commit/525a063987604ea7d96e2555d8274c48cf66844e))\n* **web:** fix inner html with LogViewer ([#1636](https://github.com/labring/laf/issues/1636)) ([46bcf42](https://github.com/labring/laf/commit/46bcf42f8d3bb48af84fc125b5468c0b2483edde))\n* **web:** fix mergeArrays function ([#1672](https://github.com/labring/laf/issues/1672)) ([ab61bf2](https://github.com/labring/laf/commit/ab61bf23cd3ee302a904cea9f49c733beb470f15))\n* **web:** fix monitor mergeArrays ([#1675](https://github.com/labring/laf/issues/1675)) ([51ef7fe](https://github.com/labring/laf/commit/51ef7fe4ea5a612dc59a0f9ca3ce040edbc49fa4))\n* **web:** fix upload file entry 100 items limit ([#1629](https://github.com/labring/laf/issues/1629)) ([c92d405](https://github.com/labring/laf/commit/c92d405de8443f0bfb1df3f41d22c59e7c32e734))\n* **web:** fix wrap of log amended ([#1645](https://github.com/labring/laf/issues/1645)) ([f78a053](https://github.com/labring/laf/commit/f78a0531ffcc5d0497d08b7c803b1e98e67e2acb))\n* **web:** log viewer line height and fontsize ([#1639](https://github.com/labring/laf/issues/1639)) ([dded744](https://github.com/labring/laf/commit/dded7447c15c9933b15e28ba987e125adf5ce838))\n\n\n### Features\n\n* **runtime:** beautify runtime log format ([#1637](https://github.com/labring/laf/issues/1637)) ([8243db4](https://github.com/labring/laf/commit/8243db4fbf13b8760c7287c2b48457d85f252e91))\n* **runtime:** refactor log console & enable module cache ([#1618](https://github.com/labring/laf/issues/1618)) ([8d95fff](https://github.com/labring/laf/commit/8d95fff415b52a18b7a152e4a88d2c7e7fbbda34))\n* **runtime:** unit runtime logger instead of log4js; cache __websocket__ module ([2ad4f74](https://github.com/labring/laf/commit/2ad4f74f8ef1861d703b5585fa1d72d4a8286faa))\n* **server:** add pod log interface ([#1631](https://github.com/labring/laf/issues/1631)) ([fa726a1](https://github.com/labring/laf/commit/fa726a196e890720780702b1560909e33fb4e67c))\n* **services:** add runtime metrics exporter ([#1619](https://github.com/labring/laf/issues/1619)) ([44c29bd](https://github.com/labring/laf/commit/44c29bdbc25f47df66ea347d8be5604d7d83b6d6))\n* **web:** add pods logs modal ([#1634](https://github.com/labring/laf/issues/1634)) ([33ac767](https://github.com/labring/laf/commit/33ac767468b7a1150183ecf4312353a13466dcd8))\n* **web:** cpu and memory monitor support \"all\" option ([#1670](https://github.com/labring/laf/issues/1670)) ([b2fdf04](https://github.com/labring/laf/commit/b2fdf045188904937170d1c34d2df82c726f1327))\n* **web:** footer add 'about us' page ([#1622](https://github.com/labring/laf/issues/1622)) ([779fae9](https://github.com/labring/laf/commit/779fae94655c2eefdf989b2d8f4f559c4d3dfd94))\n\n\n\n# [1.0.0-beta.12](https://github.com/labring/laf/compare/v1.0.0-beta.11...v1.0.0-beta.12) (2023-10-31)\n\n\n### Bug Fixes\n\n* **cli:** fix app init error ([#1608](https://github.com/labring/laf/issues/1608)) ([7788d6c](https://github.com/labring/laf/commit/7788d6c7811cc5bb2e5f26474abfc70273ba3f60))\n* **cli:** fix update func bug ([#1610](https://github.com/labring/laf/issues/1610)) ([92c9830](https://github.com/labring/laf/commit/92c98309a0259cda2768e16feb4c40104a8bf64c))\n* **cli:** storage server api changed for cli ([#1609](https://github.com/labring/laf/issues/1609)) ([bf4150e](https://github.com/labring/laf/commit/bf4150e6a0136d80993c1b21836665d928fac232))\n* **deploy:** minio console ingress enable websocket ([#1555](https://github.com/labring/laf/issues/1555)) ([f360709](https://github.com/labring/laf/commit/f3607099e72c7e0ca8c22f770f8140788c9bec7c))\n* **gateway:** fix cors headers conf of runtime, ingress nginx installation ([#1565](https://github.com/labring/laf/issues/1565)) ([8de0a29](https://github.com/labring/laf/commit/8de0a29de636ecd10287b17fad5504f9c66e4270))\n* **runtime:** default close module cache ([#1604](https://github.com/labring/laf/issues/1604)) ([ba378a6](https://github.com/labring/laf/commit/ba378a6e51551e48a5129385dcf3d07f9844e0fa))\n* **runtime:** enable cors in runtime; disable cors in gateway ingress ([#1603](https://github.com/labring/laf/issues/1603)) ([06cafd4](https://github.com/labring/laf/commit/06cafd4a793afb9c55f0d3f577aa4e0128bc5180))\n* **runtime:** fix compile error ([#1563](https://github.com/labring/laf/issues/1563)) ([3878bc0](https://github.com/labring/laf/commit/3878bc092c4e830cbcb7641da26eed89afc885a6))\n* **runtime:** fix db stream initialize ([#1592](https://github.com/labring/laf/issues/1592)) ([40e25f1](https://github.com/labring/laf/commit/40e25f13163f1a0d1274caa8ae4f091e15710fba))\n* **runtime:** fix runtime cors options ([#1607](https://github.com/labring/laf/issues/1607)) ([366a6a4](https://github.com/labring/laf/commit/366a6a4e8989ce2f8fd362479001da6b4fd6eb25))\n* **runtime:** fix update function not effective ([#1597](https://github.com/labring/laf/issues/1597)) ([0c9daa3](https://github.com/labring/laf/commit/0c9daa304e51d3cb60c7aa1875960c9d8c67bc79))\n* **runtime:** support default function ([#1602](https://github.com/labring/laf/issues/1602)) ([04905dc](https://github.com/labring/laf/commit/04905dce839ab1aea2acc29ed8d7cb522fd0f32d))\n* **server:** add storage service conf for runtime, add cors conf for bucket ingress ([fc73e6f](https://github.com/labring/laf/commit/fc73e6f9355d2145ee4f24a26ce897430004dbff))\n* **server:** fix nest deps missing ([#1564](https://github.com/labring/laf/issues/1564)) ([7781a3e](https://github.com/labring/laf/commit/7781a3ef6c30882a7c2e789b5dfb255bc0d35931))\n* **server:** fix not reapply service when restart app ([#1578](https://github.com/labring/laf/issues/1578)) ([bb9e8e2](https://github.com/labring/laf/commit/bb9e8e24a588ddcbe10dc5cc019d0be694889184))\n* **server:** fix runtime deployment labels ([#1585](https://github.com/labring/laf/issues/1585)) ([93de793](https://github.com/labring/laf/commit/93de793a119507e5d57f51646203c6d4b5509873))\n* **server:** fix user quota ([#1534](https://github.com/labring/laf/issues/1534)) ([d3a2e65](https://github.com/labring/laf/commit/d3a2e65ed86161a6ddd3ff962a53247f0b659689))\n* **server:** fixed runtime manifest labels ([#1583](https://github.com/labring/laf/issues/1583)) ([364c7a6](https://github.com/labring/laf/commit/364c7a68526c703d9bb3aa2b9d0b82d0206e8484))\n* **server:** set deleting phase for runtime domain and website when deleting app ([#1613](https://github.com/labring/laf/issues/1613)) ([27b0587](https://github.com/labring/laf/commit/27b0587f18f57b04d2a207eae44a27f833ed4b2e))\n* **server:** update logic of cronjob deletion ([#1623](https://github.com/labring/laf/issues/1623)) ([fb7a45d](https://github.com/labring/laf/commit/fb7a45db3f137e58e4df00d8e2f51913b5a1f310))\n* **web:** disable navigate cache for api endpoint ([#1579](https://github.com/labring/laf/issues/1579)) ([f7b8775](https://github.com/labring/laf/commit/f7b8775843c2908b82761ae93a9e9f78343bf82b))\n* **web:** fix bucket display name in edit mode ([#1606](https://github.com/labring/laf/issues/1606)) ([d16bb36](https://github.com/labring/laf/commit/d16bb361d529da9349ebdb739a3334e95246efc1))\n* **web:** fix create function default code ([#1544](https://github.com/labring/laf/issues/1544)) ([0b903e8](https://github.com/labring/laf/commit/0b903e8e8fd002d2a0e60a123524ea69a8d23288))\n* **web:** fix delete button covered in dependency panel ([#1546](https://github.com/labring/laf/issues/1546)) ([b065acd](https://github.com/labring/laf/commit/b065acdd21b020713243dd8964b667fbb55808b6))\n* **web:** fix files can't be accessed before refreshing & change file path ([#1538](https://github.com/labring/laf/issues/1538)) ([86250d9](https://github.com/labring/laf/commit/86250d9b3ad9f9936734af55beadb4af30560a53))\n* **web:** fix function list folder name display ([#1561](https://github.com/labring/laf/issues/1561)) ([1f7d6af](https://github.com/labring/laf/commit/1f7d6af998d2b9229ab381f0c092cc957e901f9b))\n* **web:** fix params not update & change function list type ([#1535](https://github.com/labring/laf/issues/1535)) ([5366201](https://github.com/labring/laf/commit/53662012e96f3238128623440be9e90bd9104aa8))\n* **web:** fix sentry allowlist ([#1587](https://github.com/labring/laf/issues/1587)) ([6c812bd](https://github.com/labring/laf/commit/6c812bd674ccac959c5331d90aa33dd07d8fd2d9))\n* **web:** fix sign up navigate & storage display ([#1580](https://github.com/labring/laf/issues/1580)) ([7dac760](https://github.com/labring/laf/commit/7dac7602eb91d7d66aa28ad31c17e961666a2f01))\n* **web:** remove storage.credential ([#1594](https://github.com/labring/laf/issues/1594)) ([8e5f568](https://github.com/labring/laf/commit/8e5f56836582b9b4719a9b666c124b93eb92dcb0))\n\n\n### Features\n\n* **cli:** improve the cli interface ([#1591](https://github.com/labring/laf/issues/1591)) ([fdbfc5c](https://github.com/labring/laf/commit/fdbfc5c518f641c7cd54dd3750a4ba5ea17c2851))\n* **cli:** support database export and import ([#1540](https://github.com/labring/laf/issues/1540)) ([8c68089](https://github.com/labring/laf/commit/8c68089a7864cf0eb0895199512f9be72ec48d5f))\n* **gateway:** refactor gateway to support ingress ([#1559](https://github.com/labring/laf/issues/1559)) ([155814b](https://github.com/labring/laf/commit/155814bd6751c2962238c8c3d9b5598dea179634))\n* **runtime:** add Access-Control-Max-Age to cors options ([#1615](https://github.com/labring/laf/issues/1615)) ([c4b79fb](https://github.com/labring/laf/commit/c4b79fbc041d04a3d960ec182d287e2f46ce73a8))\n* **runtime:** proxy cloud storage & website hosting request to minio ([#1560](https://github.com/labring/laf/issues/1560)) ([5456de2](https://github.com/labring/laf/commit/5456de268b8d6fb5128eef499be5e2e980f00db5))\n* **runtime:** refactor function engine ([#1590](https://github.com/labring/laf/issues/1590)) ([811066b](https://github.com/labring/laf/commit/811066b5e76f2d85212df8d682a6ebe6edef3824))\n* **runtime:** reuse context ([#1539](https://github.com/labring/laf/issues/1539)) ([acafda5](https://github.com/labring/laf/commit/acafda5d43e661ec772cee6790d89066debcb12e))\n* **server:** add runtime affinity settings in region ([#1548](https://github.com/labring/laf/issues/1548)) ([d3da138](https://github.com/labring/laf/commit/d3da138bc585ede2d0ee158884e0c40763087cbe))\n* **server:** add sealos manager labels to rumtime manifest([#1577](https://github.com/labring/laf/issues/1577)) ([f71ea31](https://github.com/labring/laf/commit/f71ea31457ad22881a32f26ccbdc06a256b3a9b8))\n* **server:** add tls config for ingress gateway ([#1569](https://github.com/labring/laf/issues/1569)) ([8751858](https://github.com/labring/laf/commit/8751858cb2fd130fc8030fb5e4caaae86b948c54))\n* **server:** support github login ([#1542](https://github.com/labring/laf/issues/1542)) ([14540c1](https://github.com/labring/laf/commit/14540c1a061b9dc24220effded8fa3c759127a8e))\n* **web:** add client settings & change settings directory ([#1536](https://github.com/labring/laf/issues/1536)) ([d22fd4e](https://github.com/labring/laf/commit/d22fd4e4469a204efe3e35f9da92bcc1801d7efe))\n* **web:** add database indexes management ([#1611](https://github.com/labring/laf/issues/1611)) ([f8c068a](https://github.com/labring/laf/commit/f8c068a95022be80b3fa229db90fb70b70a1fb46))\n* **web:** add function list desc-name display & fix editor min-h ([#1545](https://github.com/labring/laf/issues/1545)) ([2b252f2](https://github.com/labring/laf/commit/2b252f2591f8e0d49b09755a46e449e2bba8c3ed))\n* **web:** optimize editor ctx type definition ([#1558](https://github.com/labring/laf/issues/1558)) ([b3ecb45](https://github.com/labring/laf/commit/b3ecb4515dd894930b434bebedca87c9db813301))\n* **web:** support github login ([#1543](https://github.com/labring/laf/issues/1543)) ([e8b8380](https://github.com/labring/laf/commit/e8b838090ae997add978ca3d0a348d831b268a0f))\n\n\n\n# [1.0.0-beta.11](https://github.com/labring/laf/compare/v1.0.0-beta.10...v1.0.0-beta.11) (2023-09-12)\n\n\n### Bug Fixes\n\n* **build:** fix build of laf mage and change the deployment of metering service ([#1488](https://github.com/labring/laf/issues/1488)) ([d7594af](https://github.com/labring/laf/commit/d7594afa90eceb28d5b54de61cbdc7ddbb9ef0aa))\n* **build:** fix minio helm custom commands ([#1432](https://github.com/labring/laf/issues/1432)) ([b46f903](https://github.com/labring/laf/commit/b46f9032a99f46a961fd24fd155c7e5c65911d3e))\n* **build:** fix sealos resource system image version ([1d1d249](https://github.com/labring/laf/commit/1d1d249a0e30ce524cd9661bbf090903c11c9435))\n* **build:** metering ctrl yaml error ([7fa508e](https://github.com/labring/laf/commit/7fa508e672438b54a513d0c63a1b012defb13403))\n* **cli:** fix cannot read properties baseDir ([#1447](https://github.com/labring/laf/issues/1447)) ([9722e9a](https://github.com/labring/laf/commit/9722e9ac5b2dafdd37eb3930bb6cd83970599b47))\n* **cli:** fix delete website not found ([#1473](https://github.com/labring/laf/issues/1473)) ([414f518](https://github.com/labring/laf/commit/414f518724970cb9ef4efdc8b54882707d3bb300))\n* **cli:** fix read function name error in windows ([#1527](https://github.com/labring/laf/issues/1527)) ([32d2121](https://github.com/labring/laf/commit/32d2121dacd7851e9c4e02a7d39b075c17f79103))\n* **log-server:** miss log for request_id required ([#1421](https://github.com/labring/laf/issues/1421)) ([ea07b91](https://github.com/labring/laf/commit/ea07b91f165ebfffd1fff431b71ee1798f604d7b))\n* **runtime:** fix change stream concurrency reconnect ([#1480](https://github.com/labring/laf/issues/1480)) ([2ef4873](https://github.com/labring/laf/commit/2ef4873f6cb222942ec67a8e997d3029df0e3767))\n* **runtime:** function source leakage caused by type hint interface ([#1454](https://github.com/labring/laf/issues/1454)) ([1ad9832](https://github.com/labring/laf/commit/1ad98323b974f2e107c12d97fdc27a13b0f481f2))\n* **runtime:** remove reconnection of mongo stream since bug in it ([f6d8aed](https://github.com/labring/laf/commit/f6d8aed78654ee4bd67e8c96b59e4e84f3aa878a))\n* **runtime:** vm add support for Float32Array [#1368](https://github.com/labring/laf/issues/1368) ([#1470](https://github.com/labring/laf/issues/1470)) ([7d081e8](https://github.com/labring/laf/commit/7d081e886d6d081582ae66d4a77d8c5403f7f8ef))\n* **server:** add the user quota setting during initialization. ([#1528](https://github.com/labring/laf/issues/1528)) ([18be379](https://github.com/labring/laf/commit/18be379d7f66e4f2c5daa728bc67cdec5db34ed7))\n* **server:** bind phone failed ([#1511](https://github.com/labring/laf/issues/1511)) ([3efde87](https://github.com/labring/laf/commit/3efde87346349bd57dfef01c7b914330fca7ba2b))\n* **server:** change default interceptor policy ([#1495](https://github.com/labring/laf/issues/1495)) ([11bf0c1](https://github.com/labring/laf/commit/11bf0c19ac76ef34834135146e85c71f7a2490fe))\n* **server:** change giftcode dto string length ([#1397](https://github.com/labring/laf/issues/1397)) ([7b792b6](https://github.com/labring/laf/commit/7b792b6ed2233b0a7bbf69cd4ba4c1d41db92c04))\n* **server:** change hpa metrics value ([#1505](https://github.com/labring/laf/issues/1505)) ([c444288](https://github.com/labring/laf/commit/c4442888b24c4bc955cc44dbc65f76cd3be3e152))\n* **server:** check app auth by createdBy ([#1453](https://github.com/labring/laf/issues/1453)) ([e2be923](https://github.com/labring/laf/commit/e2be923f117e1cbbbdb9d63f5c4416906b0c50ae))\n* **server:** correct monitor metrics promql ([#1485](https://github.com/labring/laf/issues/1485)) ([76238d7](https://github.com/labring/laf/commit/76238d71611904d8a50d7840c2150092657044a6))\n* **server:** create default group when check miss ([#1459](https://github.com/labring/laf/issues/1459)) ([3bcd8fd](https://github.com/labring/laf/commit/3bcd8fdc31cea23e0056d9cda1f5497da54644eb))\n* **server:** fix apisix try path routes ([#1499](https://github.com/labring/laf/issues/1499)) ([69289d4](https://github.com/labring/laf/commit/69289d429db2e0a459a858b3aeb68bb247f72723))\n* **server:** fix bind phone dto ([#1509](https://github.com/labring/laf/issues/1509)) ([ee8f551](https://github.com/labring/laf/commit/ee8f551ee36e074647263a725b87ff5c1e19e1cd))\n* **server:** fix custom domain stuck in Creating phase ([3844779](https://github.com/labring/laf/commit/38447799a8e854e6993e86b7caef44bb3122626a))\n* **server:** fix function templates user information ([#1405](https://github.com/labring/laf/issues/1405)) ([c559cbd](https://github.com/labring/laf/commit/c559cbd0e5e6c84fc9c766d80981fe2d3b88db11))\n* **server:** fix undefined field `memberOf` of minio user ([#1436](https://github.com/labring/laf/issues/1436)) ([5c9bb33](https://github.com/labring/laf/commit/5c9bb3370af027e3e6c4d96720ccec9c6f839876))\n* **server:** fix website hosting routes ([#1490](https://github.com/labring/laf/issues/1490)) ([d3dba8a](https://github.com/labring/laf/commit/d3dba8ac95522399c56393cf49d85c7471d0f957))\n* **server:** guard expired and used for gift code ([#1412](https://github.com/labring/laf/issues/1412)) ([b28c1a5](https://github.com/labring/laf/commit/b28c1a5513008fab5b168df871b1359be03faf73))\n* **server:** increase the request payload limit ([#1437](https://github.com/labring/laf/issues/1437)) ([c828c73](https://github.com/labring/laf/commit/c828c73b804ebb38c97a6936cba84dee6f4c1ca9))\n* **server:** miss dependence ([#1433](https://github.com/labring/laf/issues/1433)) ([428e9aa](https://github.com/labring/laf/commit/428e9aa5aca3040de4dd5d5b09af7aee9f93eddd))\n* **server:** no need to validate old phone when phone num miss ([#1507](https://github.com/labring/laf/issues/1507)) ([6d5882c](https://github.com/labring/laf/commit/6d5882c274161fd220d345c5f0f374b8eb8f67cb))\n* **server:** reapply hpa and check spec when spec changes ([#1452](https://github.com/labring/laf/issues/1452)) ([57800c4](https://github.com/labring/laf/commit/57800c4f843c7f49cdb5d7c9440592b24e123236))\n* **server:** relock check of domain tls for too long ([#1438](https://github.com/labring/laf/issues/1438)) ([64d27d9](https://github.com/labring/laf/commit/64d27d9e378838f1adb1b8c2c707a2c2812a3b19))\n* **server:** remove default region namespace ([afac36d](https://github.com/labring/laf/commit/afac36db58aacc53d407005ac1abbd32fc5e230d))\n* **server:** restart app when hpa canceled & fix conf publish ([#1517](https://github.com/labring/laf/issues/1517)) ([969f50d](https://github.com/labring/laf/commit/969f50d0ef3a50a158629543b7a3c6845c77805b))\n* **server:** update apisix plugin `try-path` conf ([#1465](https://github.com/labring/laf/issues/1465)) ([ed6061d](https://github.com/labring/laf/commit/ed6061db8b15e699dbafa693f096eaac56e44454))\n* **web:** add develop-token to load package ([#1455](https://github.com/labring/laf/issues/1455)) ([30029a7](https://github.com/labring/laf/commit/30029a7ffc57d8f57bf0bf3885df7b72a9b3a3d8))\n* **web:** add unavailable page for monitor data & fix link of real name ([#1491](https://github.com/labring/laf/issues/1491)) ([2191468](https://github.com/labring/laf/commit/2191468792a2e6eeeaf0d90a2b35d77d14d394c5))\n* **web:** change releasing as app phase ([#1423](https://github.com/labring/laf/issues/1423)) ([d8a149e](https://github.com/labring/laf/commit/d8a149e7ce328b9096accb8820ef7d272614c5fa))\n* **web:** fix cron example & fix function page layout & hide email ([#1521](https://github.com/labring/laf/issues/1521)) ([4ef265c](https://github.com/labring/laf/commit/4ef265c1cb74ccdcd6f85d155b7199aff1e0c6b5))\n* **web:** fix display issue when username does not exist ([#1411](https://github.com/labring/laf/issues/1411)) ([85ca268](https://github.com/labring/laf/commit/85ca2685e57b2100bc3d41526e69543f29af741f))\n* **web:** fix display when monitor data undefined ([#1482](https://github.com/labring/laf/issues/1482)) ([f38cb93](https://github.com/labring/laf/commit/f38cb93ca149bcdde442b86f884a1e89e16aeb2b))\n* **web:** fix drag upload folder ([#1426](https://github.com/labring/laf/issues/1426)) ([d223f5f](https://github.com/labring/laf/commit/d223f5fd05ec6c2b6019dd7a05aec2d3485c7a5c))\n* **web:** fix invite link http ([#1451](https://github.com/labring/laf/issues/1451)) ([20a89be](https://github.com/labring/laf/commit/20a89be1ca05f4f24dc7339be0a43f8b93db5b11))\n* **web:** fix miss getting providers ([#1513](https://github.com/labring/laf/issues/1513)) ([22ef31b](https://github.com/labring/laf/commit/22ef31bb47747913bfa8844cb741b39dd96a3dea))\n* **web:** fix monitor bar instant data ([#1500](https://github.com/labring/laf/issues/1500)) ([5862422](https://github.com/labring/laf/commit/5862422b3224772c2025190a6e01f61d9752a83d))\n* **web:** fix monitor data instant undefined ([#1506](https://github.com/labring/laf/issues/1506)) ([1582081](https://github.com/labring/laf/commit/15820812ea984ccf5c8b9116eca92cc756b9239e))\n* **web:** fix pods list data & adjust create function ui ([#1487](https://github.com/labring/laf/issues/1487)) ([301982e](https://github.com/labring/laf/commit/301982e2fb2b3bfb55d43890529c786d52fb49c7))\n* **web:** fix real name auth shown by phone provider ([#1508](https://github.com/labring/laf/issues/1508)) ([b31499d](https://github.com/labring/laf/commit/b31499debe520c77087b85d677feaf10c2cf3c38))\n* **web:** fix real-name auth ([#1504](https://github.com/labring/laf/issues/1504)) ([212c873](https://github.com/labring/laf/commit/212c873a976efd20f6e1af8d995eac4fbcf80860))\n* **web:** fix statusbar change app specific display ([#1456](https://github.com/labring/laf/issues/1456)) ([f34d50c](https://github.com/labring/laf/commit/f34d50c8020aee23abcc6d90423c1e5d3f5216ae))\n* **web:** fix storage list pagination & site available only storage readonly ([#1519](https://github.com/labring/laf/issues/1519)) ([6dfe8c5](https://github.com/labring/laf/commit/6dfe8c5b7751c1d7988916ef67cfd4a83304bdc6))\n* **web:** fix the display when app configuration is not in the bundle ([#1458](https://github.com/labring/laf/issues/1458)) ([3d7631a](https://github.com/labring/laf/commit/3d7631ae8a1ccdcb1ebfc393018f70b1eea986a4))\n* **web:** fix the type of sms code for phone reset ([#1402](https://github.com/labring/laf/issues/1402)) ([a79e25a](https://github.com/labring/laf/commit/a79e25aaa6f2364212f862ebd6e3575b76869774))\n* **web:** fix usage undefined ([#1496](https://github.com/labring/laf/issues/1496)) ([33a5ad6](https://github.com/labring/laf/commit/33a5ad652f2114e3a50c12275d4657d2f686a223))\n* **web:** increase zLevel of id verify warn ([#1512](https://github.com/labring/laf/issues/1512)) ([e41cab3](https://github.com/labring/laf/commit/e41cab36490010d056783412c1004d1105db8d9d))\n* **web:** keep each function expanded when making modifications ([#1463](https://github.com/labring/laf/issues/1463)) ([01fe18c](https://github.com/labring/laf/commit/01fe18cf46d56712fefc1c5cf0b1813457df3345))\n\n\n### Features\n\n* **cli:** add options for laf dep command ([#1408](https://github.com/labring/laf/issues/1408)) ([ce6ad79](https://github.com/labring/laf/commit/ce6ad79eae7d1520007ffbe18b67d3be39a871c7))\n* **cli:** impl trigger command ([#1413](https://github.com/labring/laf/issues/1413)) ([2ec2929](https://github.com/labring/laf/commit/2ec2929564b8dd1df0414162d9ad6f57320e7bad))\n* **cli:** support multi folder for functions ([#1431](https://github.com/labring/laf/issues/1431)) ([3f387ec](https://github.com/labring/laf/commit/3f387ecec7e91330b9286b70dd6d1d24696a3f85))\n* replace current logging solution with log server ([#1381](https://github.com/labring/laf/issues/1381)) ([83a9960](https://github.com/labring/laf/commit/83a9960fdd50a478369a6602661435fff3c2ac3d))\n* **runtime:** check circular dependency ([#1448](https://github.com/labring/laf/issues/1448)) ([ab7d63d](https://github.com/labring/laf/commit/ab7d63d52402cbcf03f9020badc14099017a605f))\n* **server:** add a global http interceptor ([#1430](https://github.com/labring/laf/issues/1430)) ([1c379eb](https://github.com/labring/laf/commit/1c379eb229901be060147ed9d2a595b1ec04692b))\n* **server:** add id verify ([#1449](https://github.com/labring/laf/issues/1449)) ([924e0fa](https://github.com/labring/laf/commit/924e0fa6eee9b3fa259208f66a275fe86405c778))\n* **server:** add laf web site settings ([#1523](https://github.com/labring/laf/issues/1523)) ([a3d8fc1](https://github.com/labring/laf/commit/a3d8fc1f5ed57c9a88d4a14804cc0e968856bf4a))\n* **server:** add random username for phone signup ([#1394](https://github.com/labring/laf/issues/1394)) ([0c04bd8](https://github.com/labring/laf/commit/0c04bd84dcaa4513e7047a0cc6057f0a58a1f7ce))\n* **server:** add resource(storage&database) usage limit ([#1245](https://github.com/labring/laf/issues/1245)) ([4ad0d53](https://github.com/labring/laf/commit/4ad0d5356e4a7fd5e0b011343dcc7f62ac2b6809))\n* **server:** add signup bonus ([#1531](https://github.com/labring/laf/issues/1531)) ([b5858c7](https://github.com/labring/laf/commit/b5858c70ae4104729b44b04261372349126ed7fd))\n* **server:** add user quota to limit user resource create ([#1498](https://github.com/labring/laf/issues/1498)) ([54a7226](https://github.com/labring/laf/commit/54a722675cd9e9a0fa299b6c69e09f69423846cf))\n* **server:** support binding email ([#1417](https://github.com/labring/laf/issues/1417)) ([0ce11e7](https://github.com/labring/laf/commit/0ce11e72169d4da00d1f3187dd458b1fb8bf76e1))\n* **server:** support fixed namespace of application ([17d99df](https://github.com/labring/laf/commit/17d99df4e961dbd768287315cc66a05a602d8a8c))\n* **server:** support import/export application db ([#1479](https://github.com/labring/laf/issues/1479)) ([1a86a8b](https://github.com/labring/laf/commit/1a86a8b7b64d3b255cbf9e6b0a513dbcc9d4beb6))\n* **server:** support query instant metrics ([#1502](https://github.com/labring/laf/issues/1502)) ([b12527d](https://github.com/labring/laf/commit/b12527d86c8b1b3797747c33e629c892c3ad3bf5))\n* **server:** support recycle bin ([#1396](https://github.com/labring/laf/issues/1396)) ([1ee6def](https://github.com/labring/laf/commit/1ee6def8ed44559de67feaee19102bdeaf6524d1))\n* **server:** support resource group ([#1442](https://github.com/labring/laf/issues/1442)) ([b7e9a44](https://github.com/labring/laf/commit/b7e9a44a5573cd9963bd52be962c1845adb7d8f7))\n* **server:** support resource monitor ([#1468](https://github.com/labring/laf/issues/1468)) ([9e2c17d](https://github.com/labring/laf/commit/9e2c17d44972f493cefdac027ceeaf791b4e7f35))\n* **web:** add app realeasing status ([#1422](https://github.com/labring/laf/issues/1422)) ([930599d](https://github.com/labring/laf/commit/930599d86b7ea665fd3a42518da51c3ac41657d1))\n* **web:** add functions list folder ([#1414](https://github.com/labring/laf/issues/1414)) ([2f49a06](https://github.com/labring/laf/commit/2f49a06dae2958dc04896dc8790092406eeb9ba1))\n* **web:** add laf web site settings ([#1526](https://github.com/labring/laf/issues/1526)) ([0f91ab6](https://github.com/labring/laf/commit/0f91ab6f862dc0cb01116937e73974dfa3260bf5))\n* **web:** add the cursor pointer style for CopyText ([#1404](https://github.com/labring/laf/issues/1404)) ([d261113](https://github.com/labring/laf/commit/d261113c47dae34b37557e861123123188ec54d1))\n* **web:** collection list sort ([#1525](https://github.com/labring/laf/issues/1525)) ([6b463f0](https://github.com/labring/laf/commit/6b463f07aba2d0aef037828bb1846fb0286ec60f))\n* **web:** enable daypicker component i18n ([#1515](https://github.com/labring/laf/issues/1515)) ([71ec0ca](https://github.com/labring/laf/commit/71ec0cad47fbc56f871ec6f66f72562956ad9230))\n* **web:** increase the clickable area of the button  ([#1406](https://github.com/labring/laf/issues/1406)) ([87ba558](https://github.com/labring/laf/commit/87ba558168c7da027a3a7920b68c9d4cf1c79ba9))\n* **web:** optimize the list display logic ([#1510](https://github.com/labring/laf/issues/1510)) ([970917d](https://github.com/labring/laf/commit/970917d8710ffd915295159bd4aa41e21baa9c6a))\n* **web:** optimize the state display of application list ([#1403](https://github.com/labring/laf/issues/1403)) ([3d72820](https://github.com/labring/laf/commit/3d72820bbc56d6d350740e2c8fbf3c5ae36e9c64))\n* **web:** support binding email ([#1418](https://github.com/labring/laf/issues/1418)) ([ce871fa](https://github.com/labring/laf/commit/ce871faac447db840aac5271e2343a3518c590ee))\n* **web:** support functions recycle bin ([#1398](https://github.com/labring/laf/issues/1398)) ([1d22b6e](https://github.com/labring/laf/commit/1d22b6ed708d404000005caf7890f90fefa89c4b))\n* **web:** support real name authentication ([#1450](https://github.com/labring/laf/issues/1450)) ([4b3126d](https://github.com/labring/laf/commit/4b3126d9e4ece4d1c49a5269432cd91d2659bbb8))\n* **web:** support resource group ([#1444](https://github.com/labring/laf/issues/1444)) ([31be734](https://github.com/labring/laf/commit/31be73405e0443c0d18eb554fb29c3f34cdc77fc))\n* **web:** support resource monitor ([#1471](https://github.com/labring/laf/issues/1471)) ([4e3edb3](https://github.com/labring/laf/commit/4e3edb3ca258c54930cbf713bf8806eeac30492f))\n\n\n\n# [1.0.0-beta.10](https://github.com/labring/laf/compare/v1.0.0-beta.9...v1.0.0-beta.10) (2023-07-12)\n\n\n### Bug Fixes\n\n* **client-sdk:** fix [#1282](https://github.com/labring/laf/issues/1282) add polyfill for globalThis ([#1295](https://github.com/labring/laf/issues/1295)) ([c0fef5f](https://github.com/labring/laf/commit/c0fef5fb1cadeea6bd4aaeda03c63847612cf6e7))\n* **cli:** fix function exec error ([#1270](https://github.com/labring/laf/issues/1270)) ([e077f76](https://github.com/labring/laf/commit/e077f7636176de10c4d165814289d91c88e3719a))\n* **cli:** fix get website  by `_id` property ([#1360](https://github.com/labring/laf/issues/1360)) ([214fd7f](https://github.com/labring/laf/commit/214fd7f5c37ef9e6ac329ed56b0c1d20c6f921e3))\n* **cli:** fix remote url end with / ([#1251](https://github.com/labring/laf/issues/1251)) ([226ed37](https://github.com/labring/laf/commit/226ed37159508116aacfe5ccf84cc8880b8e184f))\n* **cli:** fix useless field in func schema ([35847ee](https://github.com/labring/laf/commit/35847eea1c3b41c8ae1d2f576302fcb3dad9c5e2))\n* **cli:** opt func pull command ([#1271](https://github.com/labring/laf/issues/1271)) ([75deeb3](https://github.com/labring/laf/commit/75deeb31292c0cb8cb79fe5c8f42b309415048dc))\n* **runtime:** add mongodb stream reconnect  ([#1276](https://github.com/labring/laf/issues/1276)) ([3f8f3ef](https://github.com/labring/laf/commit/3f8f3efca7c97f234d8a5594190e3e5fc0643b35))\n* **runtime:** fix [#1229](https://github.com/labring/laf/issues/1229) init function invoke error ([#1230](https://github.com/labring/laf/issues/1230)) ([928ee5c](https://github.com/labring/laf/commit/928ee5cfc8d8ad54c87cb196d562686e45857c2d))\n* **runtime:** remove alipay-sdk from runtime ([#1314](https://github.com/labring/laf/issues/1314)) ([c1d6124](https://github.com/labring/laf/commit/c1d61241350995aa5b0bbdb9a0c8b0f793b5cd76))\n* **server:** add invite code chargeOrder and fix invite code profit settings ([#1379](https://github.com/labring/laf/issues/1379)) ([7a13658](https://github.com/labring/laf/commit/7a13658e3c253a3eacf56fecf2d0799e79310214))\n* **server:** add length limits for function template name ([#1333](https://github.com/labring/laf/issues/1333)) ([fdc3119](https://github.com/labring/laf/commit/fdc311983c3a854ae8952a952e3b3d463a07f265))\n* **server:** add recommended function templates and limits for function templates ([#1316](https://github.com/labring/laf/issues/1316)) ([0808c6a](https://github.com/labring/laf/commit/0808c6ab2a918ef542b4a20013180fe471ece0d7)), closes [#1226](https://github.com/labring/laf/issues/1226)\n* **server:** add sort filter to resource bundle & options ([#1290](https://github.com/labring/laf/issues/1290)) ([d810000](https://github.com/labring/laf/commit/d810000bc926ae443c214185685bd4ad1bd41aa9))\n* **server:** billing task exit abnormally ([#1255](https://github.com/labring/laf/issues/1255)) ([dc3235d](https://github.com/labring/laf/commit/dc3235d8e6ecfaa66de200e3c555317c4b9231d0))\n* **server:** create hpa when hpa is not found ([#1275](https://github.com/labring/laf/issues/1275)) ([c7469d3](https://github.com/labring/laf/commit/c7469d3d464bf52c18e355274370f902079d4430))\n* **server:** don't add history when debug function ([#1334](https://github.com/labring/laf/issues/1334)) ([347ccb4](https://github.com/labring/laf/commit/347ccb40208cdc7cf15b82c3be21001113a52fd1))\n* **server:** fix  charge reward calculation error ([#1269](https://github.com/labring/laf/issues/1269)) ([78c1d79](https://github.com/labring/laf/commit/78c1d79512d5e2a729c569fa4e2722deb66a38e9))\n* **server:** fix billing task perf problem ([#1236](https://github.com/labring/laf/issues/1236)) ([43e721f](https://github.com/labring/laf/commit/43e721f4e4e121829edea768b9aecf825ba664d3))\n* **server:** fix cross-database issues with function templates ([#1352](https://github.com/labring/laf/issues/1352)) ([0d82090](https://github.com/labring/laf/commit/0d820903513db5484384e9fe1d6505e7a2fac740))\n* **server:** improve billing task concurrency ([#1237](https://github.com/labring/laf/issues/1237)) ([a62d875](https://github.com/labring/laf/commit/a62d8755576401baad8fd9d4a0ecd99b9f72c2f1))\n* **server:** opt billing task schedular cron ([#1253](https://github.com/labring/laf/issues/1253)) ([3b9e24e](https://github.com/labring/laf/commit/3b9e24ee75d7d26ce4fbd70a518c0990dcdd74b1))\n* **server:** sort resource options by created time ([#1327](https://github.com/labring/laf/issues/1327)) ([e0b920c](https://github.com/labring/laf/commit/e0b920cb487818eb9f5898b04416f114e166c082))\n* **web:** auto flush cache from service worker ([#1367](https://github.com/labring/laf/issues/1367)) ([4530571](https://github.com/labring/laf/commit/45305716793a73ce7cb15f41ee92203a2bfcdee6))\n* **web:** balance recharge ([#1257](https://github.com/labring/laf/issues/1257)) ([6c01d95](https://github.com/labring/laf/commit/6c01d955213dfd943797f0b18497349de56738fe))\n* **web:** change typo storage to memory ([#1266](https://github.com/labring/laf/issues/1266)) ([281dd94](https://github.com/labring/laf/commit/281dd94dab6889ecb2bccdcfc1c7caab027b9193))\n* **web:** change ui & add infomation display ([#1296](https://github.com/labring/laf/issues/1296)) ([91518bb](https://github.com/labring/laf/commit/91518bb42e5dbc19e79e59c8740a6b413e56e66f))\n* **web:** delete repeated component & fix usersetting & fix billing unit ([#1378](https://github.com/labring/laf/issues/1378)) ([f6a8f56](https://github.com/labring/laf/commit/f6a8f56b57cdf7a97a3a764ad376f38bc8bb9186))\n* **web:** delete unused api ([#1372](https://github.com/labring/laf/issues/1372)) ([534662b](https://github.com/labring/laf/commit/534662bd6b048b88aed5fd3a57680cc0e865435d))\n* **web:** fix function template darkmode & fix function list spacing ([#1369](https://github.com/labring/laf/issues/1369)) ([5a2d17e](https://github.com/labring/laf/commit/5a2d17e8643ce6fe203f13f3581a4798bd81d068))\n* **web:** fix function template popover ([#1335](https://github.com/labring/laf/issues/1335)) ([b2165b8](https://github.com/labring/laf/commit/b2165b81b17977edf7174b1fb087b206be82a52f))\n* **web:** fix ignore case & use template ([#1329](https://github.com/labring/laf/issues/1329)) ([706a2e2](https://github.com/labring/laf/commit/706a2e2b21b3a2b170bef5a7981f83b7b48afdc9))\n* **web:** fix navbar github stars & change bundle billing query ([#1305](https://github.com/labring/laf/issues/1305)) ([2de5562](https://github.com/labring/laf/commit/2de556225237097babf11f2a0f26baa373c1f9ef))\n* **web:** fix navigate & func delete & title overflow ([#1331](https://github.com/labring/laf/issues/1331)) ([55507f3](https://github.com/labring/laf/commit/55507f37aadc2762381fa51f36eca5c021b43649))\n* **web:** fix recharge display & modal open ([#1274](https://github.com/labring/laf/issues/1274)) ([eaad7ea](https://github.com/labring/laf/commit/eaad7eaa701020bd572e934aa6523eb726ae9eaa))\n* **web:** fix rendering issues when custom domain not exist ([#1342](https://github.com/labring/laf/issues/1342)) ([3cb2de3](https://github.com/labring/laf/commit/3cb2de3d7cb9587264297aa1c68158ff4baa6184))\n* **web:** fix search query hooks ([#1328](https://github.com/labring/laf/issues/1328)) ([f46a8a0](https://github.com/labring/laf/commit/f46a8a03d0dfbb955bf525538124c36a66ad9f61))\n* **web:** fix tabheight in function editor([#1239](https://github.com/labring/laf/issues/1239)) ([70a8fbb](https://github.com/labring/laf/commit/70a8fbbfdd0b7f3c280409a1c680f4a22e1d0770))\n* **web:** fix toast & bill overflow ([#1362](https://github.com/labring/laf/issues/1362)) ([918c8d3](https://github.com/labring/laf/commit/918c8d3389880848939732fe8dc3bb796d7472d6))\n* **web:** fix type error ([#1377](https://github.com/labring/laf/issues/1377)) ([d15963d](https://github.com/labring/laf/commit/d15963d6d4de5f8a30b310e6ea83bce95407f1be))\n* **web:** fix typo ([#1273](https://github.com/labring/laf/issues/1273)) ([4efd3b5](https://github.com/labring/laf/commit/4efd3b5090f42164e782927684d82d10c9211533))\n* **web:** fix ui & date range ([#1382](https://github.com/labring/laf/issues/1382)) ([bb19f13](https://github.com/labring/laf/commit/bb19f134479c5c01015a6f9e225235e7c5277cd6))\n* **web:** header width error ([#1361](https://github.com/labring/laf/issues/1361)) ([f4ed976](https://github.com/labring/laf/commit/f4ed976a38f4cbaa59fd604f10f94afe112b5e20))\n* **web:** hide bonus when no bonus ([#1267](https://github.com/labring/laf/issues/1267)) ([be02bf7](https://github.com/labring/laf/commit/be02bf70147ee1082b5b0d477ee1c5fb2bc5fe6e))\n* **web:** hide template ([#1265](https://github.com/labring/laf/issues/1265)) ([60b4b89](https://github.com/labring/laf/commit/60b4b893f681a517a9b249a672a67a0402f943a3))\n* **web:** remove casing error direction ([#1330](https://github.com/labring/laf/issues/1330)) ([9d85c50](https://github.com/labring/laf/commit/9d85c50f4a974118a615196d2163ac96b6ca6ef1))\n* **web:** reset package list when reopen modal && `Restarting` -> `Starting` for app stopped ([#1324](https://github.com/labring/laf/issues/1324)) ([bfceb4d](https://github.com/labring/laf/commit/bfceb4de008d653ae37a12c0f699a84aaa6fc273))\n* **web:** sort application bundles with createdAt & add copytext on input ([#1366](https://github.com/labring/laf/issues/1366)) ([1869ca1](https://github.com/labring/laf/commit/1869ca13a344ae960973802faaec54fb24fd8e03))\n* **web:** storage file list hidden ([#1364](https://github.com/labring/laf/issues/1364)) ([dc5d0a4](https://github.com/labring/laf/commit/dc5d0a474f3526a9664c8b0cbf7463f38ac27f86))\n\n\n### Features\n\n* **cli:** add error prompt & opt init project ([#1235](https://github.com/labring/laf/issues/1235)) ([1f1f7ba](https://github.com/labring/laf/commit/1f1f7ba1c41a63d4f9e5072c2b44671fd4eda273))\n* **cli:** app init support basic mode ([#1349](https://github.com/labring/laf/issues/1349)) ([be87fb5](https://github.com/labring/laf/commit/be87fb507bd09fff5f54b32ada48381b86b93ec5))\n* **client-sdk:** support taro request ([#1325](https://github.com/labring/laf/issues/1325)) ([021adbd](https://github.com/labring/laf/commit/021adbd5c169d4f4371aae4cbc85ad76cf5b0983))\n* **cli:** support specify code directory ([#1241](https://github.com/labring/laf/issues/1241)) ([b94f893](https://github.com/labring/laf/commit/b94f893b283bd49f7eaf396ba00ae47a0e137d38))\n* **serve:** add account center ([#1370](https://github.com/labring/laf/issues/1370)) ([d1423bb](https://github.com/labring/laf/commit/d1423bb39762fd127450c873697b8ebde136af89)), closes [#1226](https://github.com/labring/laf/issues/1226)\n* **server:** add `message ` field for AccountChargeReward ([#1321](https://github.com/labring/laf/issues/1321)) ([8e7174f](https://github.com/labring/laf/commit/8e7174f157cfa710b12e54f7c6145925d937b812))\n* **server:** autoscaling for application ([#1250](https://github.com/labring/laf/issues/1250)) ([698e136](https://github.com/labring/laf/commit/698e1361641ae45f202c27a65d488636b0665e81))\n* **server:** function templates add user avatar support ([#1380](https://github.com/labring/laf/issues/1380)) ([383568b](https://github.com/labring/laf/commit/383568bddbc68d0ef7b7c522511faf5b867bdc97))\n* **server:** implements cloud function template & templates marketplace ([#1259](https://github.com/labring/laf/issues/1259)) ([9c4a57a](https://github.com/labring/laf/commit/9c4a57a5d5eb0d59f5ed129752b95e056a1d7d36)), closes [#1226](https://github.com/labring/laf/issues/1226)\n* **server:** support charge reward ([#1261](https://github.com/labring/laf/issues/1261)) ([88f5bec](https://github.com/labring/laf/commit/88f5beca2851eca299eb01d3c97c0d9131b7f54f))\n* **server:** support cloud function history ([#1283](https://github.com/labring/laf/issues/1283)) ([7ff4fbd](https://github.com/labring/laf/commit/7ff4fbdac3f8ef5670916508f7b82057918958ab))\n* **server:** support function rename ([#1336](https://github.com/labring/laf/issues/1336)) ([fd8292d](https://github.com/labring/laf/commit/fd8292d5f6c985b1999c0b3bdc93da558d501a91))\n* **server:** support modifying user info (username, phone, avatar) ([#1355](https://github.com/labring/laf/issues/1355)) ([8d88d0a](https://github.com/labring/laf/commit/8d88d0a706df861bf2739ad1d08af6126adba6bc))\n* **server:** support setting custom domain for application ([#1310](https://github.com/labring/laf/issues/1310)) ([124b919](https://github.com/labring/laf/commit/124b919a38fdff712af2a1914fa6360367b251a3))\n* **web:** add balance info at header ([#1359](https://github.com/labring/laf/issues/1359)) ([b678f1e](https://github.com/labring/laf/commit/b678f1efe042d752bcdea58e8e5c965e8a158751))\n* **web:** add billing center ([#1371](https://github.com/labring/laf/issues/1371)) ([1f3e5df](https://github.com/labring/laf/commit/1f3e5df71c7eb28feb1c109f1f821c823d8784cf))\n* **web:** add function history & add app darkmode ([#1289](https://github.com/labring/laf/issues/1289)) ([2485a33](https://github.com/labring/laf/commit/2485a3310667fc69d8eb2b21c5aad90428b16d61))\n* **web:** add function template ([#1264](https://github.com/labring/laf/issues/1264)) ([589d0ff](https://github.com/labring/laf/commit/589d0ff16be28e7a2842b05ab11da9f5e6e8323c))\n* **web:** add recharge bonus & autoscaling ([#1263](https://github.com/labring/laf/issues/1263)) ([ff15f30](https://github.com/labring/laf/commit/ff15f305464b6cd4b077ea010192cd5f422bd707))\n* **web:** add recommend template & change ui ([#1323](https://github.com/labring/laf/issues/1323)) ([5bcc259](https://github.com/labring/laf/commit/5bcc259a3aed487df2ca30f31a6aacf9bbd30c91))\n* **web:** opt function editor ui ([#1233](https://github.com/labring/laf/issues/1233)) ([1bf7eca](https://github.com/labring/laf/commit/1bf7eca1472a9713b262248e5c4fb3d293a420b8))\n* **web:** support function rename ([#1343](https://github.com/labring/laf/issues/1343)) ([ad4d8ab](https://github.com/labring/laf/commit/ad4d8abe97c636eb1b4bce680be474e3164c04cc))\n* **web:** support modifying user info (username, phone, avatar)  ([#1356](https://github.com/labring/laf/issues/1356)) ([3dbd761](https://github.com/labring/laf/commit/3dbd7615e01d34ced37fd0d823aa79ea04420b45))\n* **web:** support pwa ([#1311](https://github.com/labring/laf/issues/1311)) ([d6098e4](https://github.com/labring/laf/commit/d6098e40517b3f6f665db31ec0fdfb845f1b402f))\n* **web:** support querying collections using Mongo's \"where\" statements ([#1374](https://github.com/labring/laf/issues/1374)) ([d076b97](https://github.com/labring/laf/commit/d076b97ec494cc99b320eb059ddb518c1808ed7f))\n* **web:** support seeing dep detail by jumping to `npmjs` ([#1315](https://github.com/labring/laf/issues/1315)) ([9e57c79](https://github.com/labring/laf/commit/9e57c7923572de2b06697a918ea73b96279db4c7))\n* **web:** support setting custom domain for application ([#1338](https://github.com/labring/laf/issues/1338)) ([f3d6845](https://github.com/labring/laf/commit/f3d6845f350782c99d6f44fff260903ca3cf2309))\n\n\n\n# [1.0.0-beta.9](https://github.com/labring/laf/compare/v1.0.0-beta.8...v1.0.0-beta.9) (2023-06-07)\n\n\n### Bug Fixes\n\n* **cli:** fix ignore file ([#1174](https://github.com/labring/laf/issues/1174)) ([b9f5fc5](https://github.com/labring/laf/commit/b9f5fc50fa571247a31a530e2b0f204be7f79809))\n* **runtime:** empty volume mounted error in runtime image ([#1135](https://github.com/labring/laf/issues/1135)) ([207d29c](https://github.com/labring/laf/commit/207d29c6410bf277982cdf68611f166c0056188d))\n* **server:** add trial bundle checks in updating application ([#1192](https://github.com/labring/laf/issues/1192)) ([39345bb](https://github.com/labring/laf/commit/39345bb29709dd4fce7b21b2ece44dc5266295c3))\n* **server:** cannot restart stopped app ([#1129](https://github.com/labring/laf/issues/1129)) ([5477994](https://github.com/labring/laf/commit/5477994ea17ebc7f7ae2f8bee8ce5fa2b41eacbb))\n* **server:** creating website report not found error ([#1198](https://github.com/labring/laf/issues/1198)) ([9107224](https://github.com/labring/laf/commit/910722484c17746f853b564aa267b11e534f2d13))\n* **server:** default request ephemeral-storeage error ([#1149](https://github.com/labring/laf/issues/1149)) ([797a9b8](https://github.com/labring/laf/commit/797a9b828ac5bc8dfd0f4cccb4c17dcf80b01808))\n* **server:** fix billing task concurrency overflow ([#1216](https://github.com/labring/laf/issues/1216)) ([b8cdc75](https://github.com/labring/laf/commit/b8cdc75a821f0dd465f77ec8b903e574b76a7a79))\n* **server:** fix invitation code signup issue ([#1201](https://github.com/labring/laf/issues/1201)) ([dbf3121](https://github.com/labring/laf/commit/dbf3121fb0046b8277995f373b5104473d1fcd68))\n* **server:** fix server dockerfile error; web merge conflict ([#1188](https://github.com/labring/laf/issues/1188)) ([6d94fd2](https://github.com/labring/laf/commit/6d94fd2850fb17eb1b30d56cbda4a71141ee974f))\n* **server:** IResponse type def error ([#1189](https://github.com/labring/laf/issues/1189)) ([aafde83](https://github.com/labring/laf/commit/aafde83f5bdc31986eb824bfa42b19f6a652f46a))\n* **server:** rename limit to pageSize in func log api ([#1202](https://github.com/labring/laf/issues/1202)) ([ac49ded](https://github.com/labring/laf/commit/ac49deda859267cac0dee58783586ef4e9fdef94))\n* **server:** some pending billing tasks not processed on time ([ce225d3](https://github.com/labring/laf/commit/ce225d305ac506562e41d222cca89cc73bd11cee))\n* **server:** turn off readOnlyRootFilesystem for runtime ([#1150](https://github.com/labring/laf/issues/1150)) ([b0ceb72](https://github.com/labring/laf/commit/b0ceb72ef66cdce97c5f521221f6f8ca1a262544))\n* **server:** update billings get api; add createdby to billing schema ([#1197](https://github.com/labring/laf/issues/1197)) ([c407fda](https://github.com/labring/laf/commit/c407fda168fe03690e063227c33e73f76b7bfbea))\n* **server:** update resource price to 0 in initializer ([#1193](https://github.com/labring/laf/issues/1193)) ([9a2281e](https://github.com/labring/laf/commit/9a2281e86f2fbad09750ad758f07d170e9dffc48))\n* **web:** Add icons to the deploy and fetch buttons ([ef0aae9](https://github.com/labring/laf/commit/ef0aae91d7d85cb514ef80b5cc8e945062c4ec39))\n* **web:** adjust editor tips being obscured and some other style problems ([#1179](https://github.com/labring/laf/issues/1179)) ([f49f44e](https://github.com/labring/laf/commit/f49f44e8b12adca16bfdb3470a3c96022a108b9e))\n* **web:** adjust the margin of the createApp modal ([f43a0a9](https://github.com/labring/laf/commit/f43a0a9e0a2f8b4478fbfe8cbe55809eeb55612d))\n* **web:** app env & price show ([#1207](https://github.com/labring/laf/issues/1207)) ([dc97818](https://github.com/labring/laf/commit/dc97818caf5510c5366031a360fd92014c29ed28))\n* **web:** balance value error in cost center page ([#1204](https://github.com/labring/laf/issues/1204)) ([87d482a](https://github.com/labring/laf/commit/87d482a67e8e2c85893f3b8b7ffd3089865f8a43))\n* **web:** cannot restart stopped app ([#1128](https://github.com/labring/laf/issues/1128)) ([5b36c61](https://github.com/labring/laf/commit/5b36c6171b414880d2a6974f61913147565151b6))\n* **web:** fix /v1/profile api url missing ([#1227](https://github.com/labring/laf/issues/1227)) ([b2ab2f9](https://github.com/labring/laf/commit/b2ab2f9085f4c2d2ae3f1b89a7f9b8bdf08dfbde))\n* **web:** fix deploy would clear params ([#1224](https://github.com/labring/laf/issues/1224)) ([95bc353](https://github.com/labring/laf/commit/95bc35370e2ab3634b669cd23c11253e82c3608b))\n* **web:** fix fetch button zh name and width ([#1217](https://github.com/labring/laf/issues/1217)) ([e613d6f](https://github.com/labring/laf/commit/e613d6fd8b20311efdd27c82ac4bd8d989da93cb))\n* **web:** fix function name regx error ([6a4b210](https://github.com/labring/laf/commit/6a4b210e0d4593b31bde507a689a1f1f06baaa34))\n* **web:** fix function template's indentation ([#1182](https://github.com/labring/laf/issues/1182)) ([6e79d26](https://github.com/labring/laf/commit/6e79d26491764affde52b931dd903f2ea0f86c90))\n* **web:** PAT copy button missed ([#1194](https://github.com/labring/laf/issues/1194)) ([f6aa6b3](https://github.com/labring/laf/commit/f6aa6b305094113c880c319ef4907f9c889fba71))\n* **web:** price free show ([#1214](https://github.com/labring/laf/issues/1214)) ([fe5fdad](https://github.com/labring/laf/commit/fe5fdadda038ed8e5706ff5f7483ef7a3709d2e2))\n* **web:** remove billing query debounce ([1e77c01](https://github.com/labring/laf/commit/1e77c0161586e30327c079891762565b814b6549))\n* **web:** remove billingQuery from useEffect dependencies ([#1209](https://github.com/labring/laf/issues/1209)) ([708f021](https://github.com/labring/laf/commit/708f021e3d860257bb0b71560e58e0398e8d0711))\n* **web:** running wouldn't publish code ([#1158](https://github.com/labring/laf/issues/1158)) ([3935b4f](https://github.com/labring/laf/commit/3935b4f07ca051675b950a0faf579e45a56fe797))\n* **web:** update laf ai request url ([#1223](https://github.com/labring/laf/issues/1223)) ([060a393](https://github.com/labring/laf/commit/060a39312d6697db87b328230e121e04d65b59fe))\n\n\n### Features\n\n* add base deploy ([#1176](https://github.com/labring/laf/issues/1176)) ([12f48c4](https://github.com/labring/laf/commit/12f48c48d8d2c74e3bfc0053bac71be889d053ca))\n* **cli:**  compatible with new apis ([#1211](https://github.com/labring/laf/issues/1211)) ([22ad61a](https://github.com/labring/laf/commit/22ad61af3d81f6526def823669b5b5ac363ab340))\n* **cli:** add website deploy ([#1190](https://github.com/labring/laf/issues/1190)) ([ca634a6](https://github.com/labring/laf/commit/ca634a6aaf10fa05c96f59ddee0856c8c3e5fd77))\n* **cli:** vscode supports automatic introduction of cloud functions. ([#1146](https://github.com/labring/laf/issues/1146)) ([9834906](https://github.com/labring/laf/commit/983490650b618d6bc3cba949eac6a109c4244ba9))\n* **runtime:** add chatgpt package builtin runtime ([#1228](https://github.com/labring/laf/issues/1228)) ([6a4892a](https://github.com/labring/laf/commit/6a4892a9061f05734af7484e90eadf43522c38bc))\n* **runtime:** support multi-level uri of cloud function ([#1203](https://github.com/labring/laf/issues/1203)) ([df478bf](https://github.com/labring/laf/commit/df478bf53f8a36fb6273b07a29dc583959bfc4d5))\n* **server:** add metered billing module, remove subscription module, discard Prisma ([#1187](https://github.com/labring/laf/issues/1187)) ([8a06d44](https://github.com/labring/laf/commit/8a06d44e2a71bd1190a1c13d94fc58b47447ba09))\n* **server:** add npm install flags to region; opt instance starting perf ([#1133](https://github.com/labring/laf/issues/1133)) ([1e60429](https://github.com/labring/laf/commit/1e60429654c060f11f27c89b0c1c1530f60756cc))\n* **server:** impl i18n module ([#1143](https://github.com/labring/laf/issues/1143)) ([a420354](https://github.com/labring/laf/commit/a420354dbc236dd035f114ece039381f59ebdefc))\n* **server:** support website history ([#1210](https://github.com/labring/laf/issues/1210)) ([806fcbd](https://github.com/labring/laf/commit/806fcbd7c281803bc9a0bde065e6f14dd9d6c8f6))\n* **web:** add function fetch button ([#1163](https://github.com/labring/laf/issues/1163)) ([77369e4](https://github.com/labring/laf/commit/77369e41b7ebeaa14bcf049ab112a0dd97c19c7f))\n* **web:** add invitecode to homepage and login ([#1170](https://github.com/labring/laf/issues/1170)) ([6f604be](https://github.com/labring/laf/commit/6f604bea93597bde653e17c2e7b6767705e2f1b9))\n* **web:** add laf ai chat ([#1221](https://github.com/labring/laf/issues/1221)) ([9854b84](https://github.com/labring/laf/commit/9854b84472b687c3fc550248650bb21e03926cec))\n* **web:** add laf status link ([#1127](https://github.com/labring/laf/issues/1127)) ([94814c8](https://github.com/labring/laf/commit/94814c865285d7c02b8a89b167f4eb6d284e13ee))\n* **web:** add signup with invitecode ([#1144](https://github.com/labring/laf/issues/1144)) ([78a671c](https://github.com/labring/laf/commit/78a671cbbffe2748e05a3d218f20f1f69414c500))\n* **web:** add user billing page ([#1195](https://github.com/labring/laf/issues/1195)) ([2fed138](https://github.com/labring/laf/commit/2fed1383c0e7c2d7fcdd6d0cb4419f64900e0f37))\n* **web:** cloud functions support multi-level url ([5aec195](https://github.com/labring/laf/commit/5aec1953c4df8272baf261825bee1192024f999e))\n\n\n\n# [1.0.0-beta.8](https://github.com/labring/laf/compare/v1.0.0-beta.7...v1.0.0-beta.8) (2023-05-12)\n\n\n### Bug Fixes\n\n* **client-sdk:** eslint type error ([0b5c9d1](https://github.com/labring/laf/commit/0b5c9d1ba3499c009aec2734618e08894e585296))\n* **client-sdk:** fix bugs in compiling uniapp into WeChat mini programs ([#1105](https://github.com/labring/laf/issues/1105)) ([dd86d0b](https://github.com/labring/laf/commit/dd86d0b26394ac61bb9994728e483e92efb917d3))\n* **docs:** typo ([3711363](https://github.com/labring/laf/commit/3711363df12937eb5986ae45f765783aa7e9fd8e))\n* **server:** add regex validation for function name ([#1091](https://github.com/labring/laf/issues/1091)) ([48dbfb2](https://github.com/labring/laf/commit/48dbfb2a79cbecd04eafff528bf21df7982ada5f))\n* **web:** fix bodyparams height ([#1101](https://github.com/labring/laf/issues/1101)) ([933da58](https://github.com/labring/laf/commit/933da58d44827ab0180d618c187e784ee29102e1))\n* **web:** function name regex ([#1092](https://github.com/labring/laf/issues/1092)) ([0b933c9](https://github.com/labring/laf/commit/0b933c95b7b84e8b288c5794589025f96b0f74a6))\n* **web:** text overflow ellipsis ([#1085](https://github.com/labring/laf/issues/1085)) ([99a01ed](https://github.com/labring/laf/commit/99a01ed750b370430de32ccac331249a539d3674))\n* **web:** update error prompt of function name format ([#1094](https://github.com/labring/laf/issues/1094)) ([aeaa54d](https://github.com/labring/laf/commit/aeaa54d8c29b4d00bb6d8bd77dddeed3105cd4bc))\n\n\n### Features\n\n* **server:** add site setting api ([#1125](https://github.com/labring/laf/issues/1125)) ([9911a5d](https://github.com/labring/laf/commit/9911a5d7111f16ba61e459c72c75d74932ec9b6a))\n* **server:** support deployment rolling update ([#1112](https://github.com/labring/laf/issues/1112)) ([633b2f3](https://github.com/labring/laf/commit/633b2f3f5736f16aa1083baf498a2d77fa34e704))\n* **web:** add DocsPanel ([#1086](https://github.com/labring/laf/issues/1086)) ([0e72123](https://github.com/labring/laf/commit/0e72123d1db89411d9d6c23b8b08e4306a3f3661))\n* **web:** add function params storage ([#1113](https://github.com/labring/laf/issues/1113)) ([1f75387](https://github.com/labring/laf/commit/1f753872fa323737728a37ab58f7da6f3d99b3e5))\n* **web:** add laf site setting config ([#1126](https://github.com/labring/laf/issues/1126)) ([f5ec412](https://github.com/labring/laf/commit/f5ec4127a2384da3c425a8c6645217462aa256fe))\n* **web:** add link copy in oss page ([#1108](https://github.com/labring/laf/issues/1108)) ([425b782](https://github.com/labring/laf/commit/425b782374f2866d7ad78aa1638431bc5082cd04))\n* **web:** hide phone number info ([#1111](https://github.com/labring/laf/issues/1111)) ([e4d8141](https://github.com/labring/laf/commit/e4d8141de2ee00cf4944eba7a4a0816f1fe0b6b1))\n\n\n### Performance Improvements\n\n* change upload folder to upload fold's files ([#1087](https://github.com/labring/laf/issues/1087)) ([6d20780](https://github.com/labring/laf/commit/6d207803fd05cf68e90121475b2e4bc0030d564a))\n\n\n\n# [1.0.0-beta.7](https://github.com/labring/laf/compare/v1.0.0-beta.6...v1.0.0-beta.7) (2023-04-25)\n\n\n### Bug Fixes\n\n* **client-sdk:** optimize invoke code prompts and documents ([#1038](https://github.com/labring/laf/issues/1038)) ([0e7d812](https://github.com/labring/laf/commit/0e7d8120c9a1225be0559a10c4ae9e6703092aea))\n* **cli:** fix function name rule, add laf-cli option to issue tpl ([#1034](https://github.com/labring/laf/issues/1034)) ([#1035](https://github.com/labring/laf/issues/1035)) ([f07fecb](https://github.com/labring/laf/commit/f07fecb7e3dfd6b4ea831617aca1a57e8827489e))\n* **runtime:** add build-base libaries in docker image to support canvas library ([c191848](https://github.com/labring/laf/commit/c191848d67eb3a4b42a791d659afd49cb5ee421b))\n* **runtime:** fix func logging order ([#1072](https://github.com/labring/laf/issues/1072)) ([dd0c3d7](https://github.com/labring/laf/commit/dd0c3d7c1811897e37bd6a9dc7959f6623fa8f21))\n* **server:** avoid acct-trans addition in free order ([#1049](https://github.com/labring/laf/issues/1049)) ([b0f7e81](https://github.com/labring/laf/commit/b0f7e81b3f2d3999a5793c167e9aa1e56328b220))\n* **server:** check env name regex for batch update ([#1065](https://github.com/labring/laf/issues/1065)) ([3ddb36f](https://github.com/labring/laf/commit/3ddb36ff8682680226cca3bea5bffc6f4cb06a96))\n* **server:** fix waiting time in instance starting task ([#1075](https://github.com/labring/laf/issues/1075)) ([fa72bb9](https://github.com/labring/laf/commit/fa72bb91085209245d412716bda168ed46c707ab))\n* **server:** Modify the installation order of APISIX ([#1022](https://github.com/labring/laf/issues/1022)) ([67cc35d](https://github.com/labring/laf/commit/67cc35dfc6e2f148dcd301c7c699879302a1c1fb))\n* **server:** remove minio alias init ([#1066](https://github.com/labring/laf/issues/1066)) ([b900f90](https://github.com/labring/laf/commit/b900f906a628633444e10ddd2c3a0972a7b6b3d7))\n* **server:** suspend cronjob after instance stopped ([#1045](https://github.com/labring/laf/issues/1045)) ([8d63403](https://github.com/labring/laf/commit/8d634039430f8b0f88c39f31f8162f1130d77edb))\n* **server:** use _id to sort logs instead of created_at ([#1073](https://github.com/labring/laf/issues/1073)) ([7a87bea](https://github.com/labring/laf/commit/7a87bea87a8918d2489cf5b2e54b37f636d93d65))\n* **web:** add spec width scrollbar ([#1046](https://github.com/labring/laf/issues/1046)) ([4bbcaa0](https://github.com/labring/laf/commit/4bbcaa0212a07bb08bd71acc373a9c787f550c2f))\n* **web:** common error handler ([#1071](https://github.com/labring/laf/issues/1071)) ([c93438b](https://github.com/labring/laf/commit/c93438bd59f24701fc5da0224f180300a3b9c01a))\n* **web:** compress png images in home site ([#1019](https://github.com/labring/laf/issues/1019)) ([f2e2c4d](https://github.com/labring/laf/commit/f2e2c4dbd9d3dfae9af76129d9f2e3f45fbdf36f))\n* **web:** fix route dashboard link ([#1020](https://github.com/labring/laf/issues/1020)) ([7ad26a0](https://github.com/labring/laf/commit/7ad26a00f3a4aeff3bbe7279827ad354c95de496))\n* **web:** opt ide typings for response & request, opt function templates ([#1059](https://github.com/labring/laf/issues/1059)) ([7cb8204](https://github.com/labring/laf/commit/7cb8204a1129d738898b43efd508e09d895c8790))\n* **web:** Repair document link address ([#1027](https://github.com/labring/laf/issues/1027)) ([f171712](https://github.com/labring/laf/commit/f17171216b11894a3d21e76480c1ba97d0650b9e))\n\n\n### Features\n\n* **cli:** add ignore file ([#1030](https://github.com/labring/laf/issues/1030)) ([3c32ced](https://github.com/labring/laf/commit/3c32ceddaa7f8d3500b889a1cce17a6cc6f48e67))\n* **doc:** improved cloud function related documents ([#1050](https://github.com/labring/laf/issues/1050)) ([9ada3d2](https://github.com/labring/laf/commit/9ada3d2bb26c18ec37a618b78df44053d7f4ae7a))\n* **runtime:** add __init__ hook in runtime ([#1081](https://github.com/labring/laf/issues/1081)) ([db62f1a](https://github.com/labring/laf/commit/db62f1af6269d4975a6c17fe102891b7c842ee31))\n* **runtime:** support process.env in runtime ([#1074](https://github.com/labring/laf/issues/1074)) ([f0f1582](https://github.com/labring/laf/commit/f0f15821b27d1a0e9680cdd69b98c3fb04b21fcc))\n* **server:** add func debug params, add envs update api ([#1055](https://github.com/labring/laf/issues/1055)) ([5f88a12](https://github.com/labring/laf/commit/5f88a1220485d88649f344dc89524cdf1659285e))\n* **server:** hot load environments for runtime instead of restarting runtime ([#1077](https://github.com/labring/laf/issues/1077)) ([feb70ae](https://github.com/labring/laf/commit/feb70aee67fd717db9a2f972023165b59da78b42))\n* **web:** add ChatGPT example ([#1052](https://github.com/labring/laf/issues/1052)) ([a46ce42](https://github.com/labring/laf/commit/a46ce42a3078f65a21639e5b897cd79e8c4b50ea))\n* **web:** add homepage darkmode ([#1043](https://github.com/labring/laf/issues/1043)) ([ade2a05](https://github.com/labring/laf/commit/ade2a05bd9e36581203798047374b4e7eb91386b))\n* **web:** add laf new homepage ([#1018](https://github.com/labring/laf/issues/1018)) ([f66e2f3](https://github.com/labring/laf/commit/f66e2f3576a8bab799b046f65753980a6879b7a0))\n* **web:** add loginpage darkmode ([#1070](https://github.com/labring/laf/issues/1070)) ([9a27bcf](https://github.com/labring/laf/commit/9a27bcfca688f8a64f009b81bb4259db330b0943))\n* **web:** add status bar ([#1054](https://github.com/labring/laf/issues/1054)) ([cd31eb8](https://github.com/labring/laf/commit/cd31eb80343f4d4a6d060f34c252b8a66ac5a4ed))\n* **web:** common error handler ([#1040](https://github.com/labring/laf/issues/1040)) ([a099568](https://github.com/labring/laf/commit/a09956825b8be3e373dbf1b52d46ef46eb349a6d))\n* **web:** support folder delete in storage ([#1047](https://github.com/labring/laf/issues/1047)) ([#1048](https://github.com/labring/laf/issues/1048)) ([367dcf0](https://github.com/labring/laf/commit/367dcf0fc8120e74e9a67f9dc2e6ee5ccdad6b5c))\n* **web:** update environment variables without app restart ([#1079](https://github.com/labring/laf/issues/1079)) ([dc25ae3](https://github.com/labring/laf/commit/dc25ae3eda45543348cb4fed32d5f48cb602f24a))\n* **web:** use laf ai to generate code ([#1029](https://github.com/labring/laf/issues/1029)) ([f1eac71](https://github.com/labring/laf/commit/f1eac71d978c6a91d7fab12401d60732f79e8d9b))\n\n\n\n# [1.0.0-beta.6](https://github.com/labring/laf/compare/v1.0.0-beta.5...v1.0.0-beta.6) (2023-04-11)\n\n\n### Bug Fixes\n\n* **deploy:** upgrade minio version to fix CVE-2023-28432 ([#960](https://github.com/labring/laf/issues/960)) ([b38c288](https://github.com/labring/laf/commit/b38c288da58b0ea6dbbb834bc8b7c69f3cc21e37))\n* fix app url protocol error & update default url ([#1006](https://github.com/labring/laf/issues/1006)) ([b79f71e](https://github.com/labring/laf/commit/b79f71edac1f84d6fb524281bbe2da59bc052a27))\n* **server:** add existing check in creating phase of tasks ([#990](https://github.com/labring/laf/issues/990)) ([8444d80](https://github.com/labring/laf/commit/8444d804edd39bd0ac7fb09133f691f7e914f419))\n* **server:** add website count limit, opt website task ([#959](https://github.com/labring/laf/issues/959)) ([7ca3364](https://github.com/labring/laf/commit/7ca33643b0d1626160f62fbb23e24d36e992a0c2))\n* **server:** bucket deletion didn't remove related website ([#983](https://github.com/labring/laf/issues/983)) ([f559764](https://github.com/labring/laf/commit/f5597649ddc7ecd14e701611666823cda4fda36b))\n* **server:** cancel namespace removal while stopping app ([#980](https://github.com/labring/laf/issues/980)) ([8213bea](https://github.com/labring/laf/commit/8213beae6e3a13c8b1c42a1f980efa4509adf0c8))\n* **server:** check site deleting state in site creation ([#997](https://github.com/labring/laf/issues/997)) ([5f4d026](https://github.com/labring/laf/commit/5f4d026fa07017697a7432fabcfffac4daa48d5a))\n* **server:** check website hosting in bucket deletion, add error handle to tasks; ([#1017](https://github.com/labring/laf/issues/1017)) ([48cad2d](https://github.com/labring/laf/commit/48cad2de3c8f8e9e0fb9af4e084e7187bcdf848e))\n* **server:** error on deleting cronjob; app stucked in starting ([#964](https://github.com/labring/laf/issues/964)) ([a1e42b1](https://github.com/labring/laf/commit/a1e42b164092718b50569ca1102815a3296ac6f1))\n* **server:** fix instance task error ([#988](https://github.com/labring/laf/issues/988)) ([63cc523](https://github.com/labring/laf/commit/63cc52308fe44ab2abe276bb4e584ad3da870d35))\n* **server:** fix tasks state handler logic ([#987](https://github.com/labring/laf/issues/987)) ([d36eab9](https://github.com/labring/laf/commit/d36eab9bcc54c829ccdbf0b261538e4318e15683))\n* **server:** fixed illegal removal of unowned trigger ([#965](https://github.com/labring/laf/issues/965)) ([260b335](https://github.com/labring/laf/commit/260b335de72c32c28a3c8f7cb4b1c7b13855443d))\n* **server:** fixed the error of repeatedly deleting website routes ([#957](https://github.com/labring/laf/issues/957)) ([46d0cce](https://github.com/labring/laf/commit/46d0ccea60e1b57317d712064b1eaab4b53c5598))\n* **server:** return notes fields in region & bundles ([#993](https://github.com/labring/laf/issues/993)) ([82b8121](https://github.com/labring/laf/commit/82b8121dfd39124437f7df4ceecf4b987f9d76e6))\n* **server:** rm minio alias init in boot, fix multi region limit; ([#976](https://github.com/labring/laf/issues/976)) ([251a3c4](https://github.com/labring/laf/commit/251a3c46ff4948759b94f54a06bb02f6562fad9c))\n* **web:** add types for ctx.request ([#963](https://github.com/labring/laf/issues/963)) ([a18c27f](https://github.com/labring/laf/commit/a18c27fb47ccbdeb14b5a5141a7e0d395b534477))\n* **web:** appid confict if open 2 tabs ([#1011](https://github.com/labring/laf/issues/1011)) ([f6c39ee](https://github.com/labring/laf/commit/f6c39ee163cd115d975a6edee27ca989192dde70))\n* **web:** fixed the path issue when clicking pathlink ([3408aca](https://github.com/labring/laf/commit/3408acac82cdef9a9e6add370c3f2eeaee1f27ac))\n* **web:** hide register button while register disabled ([#994](https://github.com/labring/laf/issues/994)) ([a12f1f5](https://github.com/labring/laf/commit/a12f1f5535e43c727077aa0885724767283177ee))\n* **web:** remove withCredentials ([#979](https://github.com/labring/laf/issues/979)) ([3300953](https://github.com/labring/laf/commit/330095346954c662f85562906c7905858898ebe5))\n\n\n### Features\n\n* **cli:** opt app list display ([#1007](https://github.com/labring/laf/issues/1007)) ([13a06df](https://github.com/labring/laf/commit/13a06df5830631d726ef20f37dd79e1bca860cd0))\n* **runtime:** impl  cloud function import and cache function ([#1005](https://github.com/labring/laf/issues/1005)) ([6a96add](https://github.com/labring/laf/commit/6a96add95c83cb292f82c3fbe9339713e0ba3ecd))\n* **server:** add account transaction ([#1014](https://github.com/labring/laf/issues/1014)) ([c7e6d15](https://github.com/labring/laf/commit/c7e6d154562ac3e48e6c8c0ed5d02a6164568f3e))\n* **server:** add check if password had binded ([#951](https://github.com/labring/laf/issues/951)) ([c6b7ebc](https://github.com/labring/laf/commit/c6b7ebc57ee374bb40fc183aba448dfefb4504b9))\n* **server:** add notes field to region,bundle,pay,auth ([#986](https://github.com/labring/laf/issues/986)) ([206070a](https://github.com/labring/laf/commit/206070aed69aefe7b01c39e1b4e2894e7bd54f61))\n* **server:** support website custom domain ssl cert auto-gen ([#956](https://github.com/labring/laf/issues/956)) ([9141651](https://github.com/labring/laf/commit/914165185ebbc36eb33f0989c4aa3c635881f6f9))\n* **web:** add bundle note messages ([#992](https://github.com/labring/laf/issues/992)) ([f8adbe7](https://github.com/labring/laf/commit/f8adbe7af9e43fc4acf47f4ae57f1cf7d91f8ec8))\n* **web:** add region info on logo ([#1001](https://github.com/labring/laf/issues/1001)) ([378b0e6](https://github.com/labring/laf/commit/378b0e6c3fc7995cbd56d5a9a78f789688bf6f61))\n* **web:** fix login bg && add welcome text ([#941](https://github.com/labring/laf/issues/941)) ([6baf800](https://github.com/labring/laf/commit/6baf80037d4ccee29e9b4c7f546c5a5948f3dded))\n* **web:** format code on save ([#1002](https://github.com/labring/laf/issues/1002)) ([e970a66](https://github.com/labring/laf/commit/e970a66cdb0be1d6521a3df757f18eb62644b137))\n* **web:** generate function code with AI prompt  ([#978](https://github.com/labring/laf/issues/978)) ([c68b03b](https://github.com/labring/laf/commit/c68b03b278423202798e416cbe613a6e3dfaa211))\n* **web:** reset password ([#974](https://github.com/labring/laf/issues/974)) ([13a2a9f](https://github.com/labring/laf/commit/13a2a9f2010ac872f28160ee3b33638146c16566))\n\n\n\n# [1.0.0-beta.5](https://github.com/labring/laf/compare/v1.0.0-beta.4...v1.0.0-beta.5) (2023-03-22)\n\n\n### Bug Fixes\n\n* **cli:** fix axios type error ([#881](https://github.com/labring/laf/issues/881)) ([5f8b487](https://github.com/labring/laf/commit/5f8b487590c5e12a0dbd7c756c2c8431529394c9))\n* **cli:** fix publish package ignore file ([#899](https://github.com/labring/laf/issues/899)) ([bf9c907](https://github.com/labring/laf/commit/bf9c907ff4d083c9796f5a32533609b2da9cb0f5))\n* **cli:** remove private npm mirror and replace AxiosRequestConfig to any ([#886](https://github.com/labring/laf/issues/886)) ([561fe7f](https://github.com/labring/laf/commit/561fe7fa0dbf9b9fd1126f906791c1844e367993))\n* **server:** add max renewal time in bundle; fix subscription price ([#908](https://github.com/labring/laf/issues/908)) ([6139f74](https://github.com/labring/laf/commit/6139f743f79e23dadfa56e4b9c85429745d16483))\n* **server:** add regex for environment name ([#944](https://github.com/labring/laf/issues/944)) ([1f5c300](https://github.com/labring/laf/commit/1f5c300d5f4f7de04544afe17f303614cc9379fc))\n* **server:** change password signup phone filed to optional ([#934](https://github.com/labring/laf/issues/934)) ([c35d339](https://github.com/labring/laf/commit/c35d339906d672dba821c67add714f5615363c9b))\n* **server:** deal with existed app without namespace ([#943](https://github.com/labring/laf/issues/943)) ([5ed3be5](https://github.com/labring/laf/commit/5ed3be5cec0d7dd987a9a9043bd0440e9126f701))\n* **server:** fix bucket name regex ([#924](https://github.com/labring/laf/issues/924)) ([2c84173](https://github.com/labring/laf/commit/2c84173322e414c48cb0d17795437d5fdeb913a3))\n* **server:** fix init auth provider  params ([#937](https://github.com/labring/laf/issues/937)) ([796774f](https://github.com/labring/laf/commit/796774fc64515626461a79312d4388eaccf13e56))\n* **server:** stuck-starting instance blocked the task handler ([#945](https://github.com/labring/laf/issues/945)) ([f9a0f20](https://github.com/labring/laf/commit/f9a0f20d1154d0a88d6087ea9cf290e3da02dc5f))\n* **web:** fix MoreButton tooltip and npm package deletion confirm tip ([#879](https://github.com/labring/laf/issues/879)) ([3b30aec](https://github.com/labring/laf/commit/3b30aece63a5d52350ad085b4e974d9d73157712))\n* **web:** fix some dark mode ui bugs ([#919](https://github.com/labring/laf/issues/919)) ([f9e1781](https://github.com/labring/laf/commit/f9e17813677e64c1a578a041dcd90c52e1860247))\n* **web:** login page i18n word too long ([#936](https://github.com/labring/laf/issues/936)) ([0836e11](https://github.com/labring/laf/commit/0836e11751c2c16ba2ea4a57cd07f7a23cb93caa))\n* **web:** sign up provider err while refreshing page ([#938](https://github.com/labring/laf/issues/938)) ([4ad79c9](https://github.com/labring/laf/commit/4ad79c9a6a388d421c693b2a8b8729b02f9a7cf4))\n* **web:** update data use merge mode ([#940](https://github.com/labring/laf/issues/940)) ([d62fe96](https://github.com/labring/laf/commit/d62fe96346515a9083c7e828332098ae2b3b75f7))\n* **web:** web signup phone err ([#935](https://github.com/labring/laf/issues/935)) ([44b0699](https://github.com/labring/laf/commit/44b0699409f8085ba739aeceaf891732bda7b441))\n\n\n### Features\n\n* **cli:** cli invoke function support parameters ([#884](https://github.com/labring/laf/issues/884)) ([f0a6383](https://github.com/labring/laf/commit/f0a638367e04971faddff8303959949d5d8867fd))\n* **cli:** init app support sync data ([#895](https://github.com/labring/laf/issues/895)) ([449abde](https://github.com/labring/laf/commit/449abde959a3243ee29103d14f431a61a46698f9))\n* **cli:** rename name.meta.yaml to name.yaml ([#893](https://github.com/labring/laf/issues/893)) ([1dd12b2](https://github.com/labring/laf/commit/1dd12b2c16c37ae2f7724954d73a98909f3faa5f))\n* **cli:** upgrade s3 sdk version ([#922](https://github.com/labring/laf/issues/922)) ([8589126](https://github.com/labring/laf/commit/858912689388caaef672faa1021851d485fc4762))\n* **server:** add limit to update app state depends on subscription state ([39447d8](https://github.com/labring/laf/commit/39447d88752fe91b08ac99bb1db30bc201c1eb36))\n* **server:** new authentication implements ([#897](https://github.com/labring/laf/issues/897)) ([c4e3cf8](https://github.com/labring/laf/commit/c4e3cf81655ae7f2b2fcb029263dd5f4e4b9d0e8))\n* **subscription:** impl subscription and account ([#894](https://github.com/labring/laf/issues/894)) ([b8f2d47](https://github.com/labring/laf/commit/b8f2d4761140f2fecb0d7543d5faf48f2c9621e7))\n* **web:** add dark mode support ([#891](https://github.com/labring/laf/issues/891)) ([#900](https://github.com/labring/laf/issues/900)) ([99e1568](https://github.com/labring/laf/commit/99e156832a3c257af24aa04ca86c9518ff4d38f8))\n* **web:** add subscription and wechat pay ([#904](https://github.com/labring/laf/issues/904)) ([31c3a32](https://github.com/labring/laf/commit/31c3a324e66021c5ac83b2f60cd9819954a68744))\n* **web:** impl new signup & signin method ([#910](https://github.com/labring/laf/issues/910)) ([0832b1e](https://github.com/labring/laf/commit/0832b1e609e94d321028ea1d15a4cc7df0f893ef))\n\n\n\n# [1.0.0-beta.4](https://github.com/labring/laf/compare/v1.0.0-beta.3...v1.0.0-beta.4) (2023-03-09)\n\n\n### Bug Fixes\n\n* **build:** update minio latest version to fix [#800](https://github.com/labring/laf/issues/800) ([#850](https://github.com/labring/laf/issues/850)) ([53445f4](https://github.com/labring/laf/commit/53445f456461713c257dad63c805c31bbdb51b24))\n* **cli:** remove app list empty field display ([#855](https://github.com/labring/laf/issues/855)) ([916ca0d](https://github.com/labring/laf/commit/916ca0d26ba1b361eca8e9a4e1995c5767f88f20))\n* **deploy:** wrong node type in install scripts ([#847](https://github.com/labring/laf/issues/847)) ([093ebac](https://github.com/labring/laf/commit/093ebacbf6e62cc142f687804f6ed9124ed8ae98))\n* **server:** bundle limit is invalid, bundleId missing ([#870](https://github.com/labring/laf/issues/870)) ([b12b3b9](https://github.com/labring/laf/commit/b12b3b9d0f9f2b65a7e367d05986dec411165c4a))\n* **server:** fix region tls conf in initialization ([#863](https://github.com/labring/laf/issues/863)) ([00d0a6e](https://github.com/labring/laf/commit/00d0a6e9b977072a6829326634c1f208d11e07f4))\n* **server:** some resources missing when deleting app ([#875](https://github.com/labring/laf/issues/875)) ([2b792b0](https://github.com/labring/laf/commit/2b792b0985d4836741d04e95228c35232a189f30))\n* **server:** unable delete cronjob in k8s ([#873](https://github.com/labring/laf/issues/873)) ([3b015d3](https://github.com/labring/laf/commit/3b015d304357d7fac487569d2e2dcdd4d2a6e412))\n* **web:** cloud function ctx types error ([#869](https://github.com/labring/laf/issues/869)) ([757c38e](https://github.com/labring/laf/commit/757c38e878f65e427716fe49821ee86a18d5fbfc))\n* **web:** port info ([#871](https://github.com/labring/laf/issues/871)) ([b096734](https://github.com/labring/laf/commit/b096734e782bca5d68f52f36c33dc4c66235d135))\n* **web:** remove bottom panel ([#862](https://github.com/labring/laf/issues/862)) ([3a6786c](https://github.com/labring/laf/commit/3a6786ce105bd7af69dade6821e45106af542351))\n* **web:** typo & i18n fixes in domain binding ([#877](https://github.com/labring/laf/issues/877)) ([45323de](https://github.com/labring/laf/commit/45323decacabba30f65a1b4d0fc9d82082a9c7ce))\n\n\n### Features\n\n* **cli:** impl website command ([#854](https://github.com/labring/laf/issues/854)) ([409312a](https://github.com/labring/laf/commit/409312a8140f3721b5bf433de8edd1e529d26e20))\n* **cli:** rebuild backend api ([#852](https://github.com/labring/laf/issues/852)) ([75370cd](https://github.com/labring/laf/commit/75370cdfde67944676b78ac6554fb79c14f564e6))\n* **server:** add bundle limits for application ([#858](https://github.com/labring/laf/issues/858)) ([cb5d98c](https://github.com/labring/laf/commit/cb5d98c0ca28fd1b532a9f919f9b895a3251f20f))\n* **server:** add bundle limits of website count, update readme ([#876](https://github.com/labring/laf/issues/876)) ([cee1282](https://github.com/labring/laf/commit/cee1282b59a06f10596c2871cd053d509500ac99))\n* **server:** add special price in bundle, use id instead of name ([#865](https://github.com/labring/laf/issues/865)) ([7e81c0b](https://github.com/labring/laf/commit/7e81c0b5594cf8bef94006edd35a8f5fd88ba101))\n* **server:** support runtime pod affinity, add task switcher env ([#846](https://github.com/labring/laf/issues/846)) ([f0c5d18](https://github.com/labring/laf/commit/f0c5d18c3f36c059c234e27f5d2de80beb4f3073))\n* **web:** add app detail info dialog ([#843](https://github.com/labring/laf/issues/843)) ([378936b](https://github.com/labring/laf/commit/378936b7f4306f2047f0bb66f4937ebb017769c3))\n* **web:** add file upload code template ([#844](https://github.com/labring/laf/issues/844)) ([7d5eebf](https://github.com/labring/laf/commit/7d5eebf228152b91d4f1d3e35610fc5e207c54db))\n* **web:** add github link ([#872](https://github.com/labring/laf/issues/872)) ([82b963d](https://github.com/labring/laf/commit/82b963d0d3b4dd367737f45c94dbde29340e9cdc))\n* **web:** add resize layout & function page prompt ([#856](https://github.com/labring/laf/issues/856)) ([d1fb07c](https://github.com/labring/laf/commit/d1fb07cea5918d36fffc240e57395008a9777708))\n* **web:** upgrade application dialog ([#849](https://github.com/labring/laf/issues/849)) ([706cbdb](https://github.com/labring/laf/commit/706cbdb6a887cc4f4ebd57f548c3151228fc0788))\n\n\n### Reverts\n\n* Revert \"chore: update lerna config, enabled npm workspace (#861)\" (#864) ([72ba470](https://github.com/labring/laf/commit/72ba4705bbd7728a1d7e81802ed5127d2c3d09e0)), closes [#861](https://github.com/labring/laf/issues/861) [#864](https://github.com/labring/laf/issues/864)\n\n\n\n# [1.0.0-beta.3](https://github.com/labring/laf/compare/v1.0.0-beta.2...v1.0.0-beta.3) (2023-03-01)\n\n\n### Bug Fixes\n\n* fix [#824](https://github.com/labring/laf/issues/824) win not cannot upload files normally ([#831](https://github.com/labring/laf/issues/831)) ([bb90765](https://github.com/labring/laf/commit/bb9076538743537ac3793e56639934c84a8925b3))\n* multi-level path and s3 upgrade warn ([#834](https://github.com/labring/laf/issues/834)) ([dd0b4e4](https://github.com/labring/laf/commit/dd0b4e48d39c9cfd8b14d6d710e27ac2d6ab9c12))\n* **server:** make prisma as global module ([#825](https://github.com/labring/laf/issues/825)) ([06adbd0](https://github.com/labring/laf/commit/06adbd0b01816cc51bcd128010e8dbf8212900c2))\n* **server:** too many connections on mongo connection pool ([#827](https://github.com/labring/laf/issues/827)) ([07486b3](https://github.com/labring/laf/commit/07486b3c2401807b2e6dc098329dbefeabaa2494))\n* **web:** enable allowSyntheticDefaultImports for web ide ([#826](https://github.com/labring/laf/issues/826)) ([c13ee1b](https://github.com/labring/laf/commit/c13ee1b0422150285c084cf50ea6bedf165c13d1))\n* **web:** opt web contrib doc, opt local dev flow ([#837](https://github.com/labring/laf/issues/837)) ([65d0615](https://github.com/labring/laf/commit/65d0615f971b58e1aa6752514d4c1baec55aaeb9))\n* **web:** unable to redirect to login page ([#821](https://github.com/labring/laf/issues/821)) ([33f7cb1](https://github.com/labring/laf/commit/33f7cb1f47fd4851283960e833aa747b9d94a5db))\n\n\n### Features\n\n* **runtime:** support __websocket__ builtin function ([#832](https://github.com/labring/laf/issues/832)) ([24d8731](https://github.com/labring/laf/commit/24d8731b223d78eeea7c4f0f7515f3613f053c96))\n\n\n\n# [1.0.0-beta.2](https://github.com/labring/laf/compare/v1.0.0-beta.1...v1.0.0-beta.2) (2023-02-24)\n\n\n### Bug Fixes\n\n* **cli:** fix cli command error & release cli ([#734](https://github.com/labring/laf/issues/734)) ([cd5336d](https://github.com/labring/laf/commit/cd5336dd26e98d725e43edfa5c1cb0e4902bb485))\n* **cli:** fix invoke url error ([#743](https://github.com/labring/laf/issues/743)) ([31ce3f1](https://github.com/labring/laf/commit/31ce3f18ac4959055305727cad29dfebce688d29))\n* **cli:** fix login error ([#741](https://github.com/labring/laf/issues/741)) ([c02c42c](https://github.com/labring/laf/commit/c02c42cf9ba95c75b807852864dba23ac1325711))\n* **cli:** fix some word case ([#742](https://github.com/labring/laf/issues/742)) ([27290d4](https://github.com/labring/laf/commit/27290d40e7462c1bfe652830d3107c7bfddd496e))\n* fix init error in runtime, add set -e for shell scripts ([893ddcf](https://github.com/labring/laf/commit/893ddcf4b7ccbde894d36d3aeec33b00d9a6e5b7))\n* **runtime:** cors package missing ([#795](https://github.com/labring/laf/issues/795)) ([18375b5](https://github.com/labring/laf/commit/18375b54a009d9bd266af8d64f24d2e366190c17))\n* **runtime:** express cannot send number directly [#816](https://github.com/labring/laf/issues/816) ([#817](https://github.com/labring/laf/issues/817)) ([c856fd8](https://github.com/labring/laf/commit/c856fd8e39c9d1aa24f91e0cc67c9e21691feb1a))\n* **runtime:** fix debug token error ([#793](https://github.com/labring/laf/issues/793)) ([f24db6f](https://github.com/labring/laf/commit/f24db6fa682c170fed0c53810e44e1ff4b539c48))\n* **runtime:** fix proxy policy loading problem ([8127519](https://github.com/labring/laf/commit/81275190454aab72da42df45a5341e269e39b86f))\n* **runtime:** rename debug token to develop token ([746f08d](https://github.com/labring/laf/commit/746f08dc1b9f9d4c95ae6dd4a3478f0c1a33d38b))\n* **server:** add validation for cron expression ([#815](https://github.com/labring/laf/issues/815)) ([5245473](https://github.com/labring/laf/commit/5245473824f953408e157c9519fcb228c6852e5d))\n* **server:** add website info in bucket-get api ([#775](https://github.com/labring/laf/issues/775)) ([60c55ed](https://github.com/labring/laf/commit/60c55ed370e0f7f9449e55b22051a04a0e4f1190))\n* **server:** bind custom domain not working ([7a27533](https://github.com/labring/laf/commit/7a2753322c808ea90a12600b7a34f852c7d3955f))\n* **server:** fix instance state error in task ([#762](https://github.com/labring/laf/issues/762)) ([e11b7ae](https://github.com/labring/laf/commit/e11b7ae028e5104232dc79a2ae0157fd5c278ffb))\n* **server:** fix trigger job of agenda implement ([69aecf1](https://github.com/labring/laf/commit/69aecf1356a122d5f2835677ac2709dec5a694b4))\n* **server:** fix unable to delete dependency name with splash [#786](https://github.com/labring/laf/issues/786) ([#805](https://github.com/labring/laf/issues/805)) ([0472a65](https://github.com/labring/laf/commit/0472a656e529f8b3befc9a646e2bc27d0e82d14b))\n* **web:** database example internationalization ([#782](https://github.com/labring/laf/issues/782)) ([80a03be](https://github.com/labring/laf/commit/80a03becf3c6117800efe57f243ddf5ecc2712c3))\n* **web:** fix [#718](https://github.com/labring/laf/issues/718) app info edit bug ([#738](https://github.com/labring/laf/issues/738)) ([3381884](https://github.com/labring/laf/commit/3381884df2f0b7f6cb9f0d0b3b3be2e38e015303))\n* **web:** fix database page bugs & add storage refresh ([#761](https://github.com/labring/laf/issues/761)) ([857805a](https://github.com/labring/laf/commit/857805aa54a5be0c483fd45318778cb7e7aef4d8))\n* **web:** fix missing comma in the translation file ([#784](https://github.com/labring/laf/issues/784)) ([c81d9e5](https://github.com/labring/laf/commit/c81d9e5bde69c5d18131f0f9d4bfadbae6b8f5f9))\n* **web:** function data cannot be stored in local storage ([#769](https://github.com/labring/laf/issues/769)) ([bd983a0](https://github.com/labring/laf/commit/bd983a0d49c9abd9a689c2b24becf3cd36bfe618))\n* **web:** get domain from bucket info ([#803](https://github.com/labring/laf/issues/803)) ([7ed542c](https://github.com/labring/laf/commit/7ed542c3fc4b4fc78f11125fffbc05167da82a4a))\n* **web:** reverse array bug ([#776](https://github.com/labring/laf/issues/776)) ([dc34c2a](https://github.com/labring/laf/commit/dc34c2a89d88e7d3b16ccdb89550967a8929bf5a))\n* **web:** support tls conf in [#767](https://github.com/labring/laf/issues/767) ([#790](https://github.com/labring/laf/issues/790)) ([efdf4ea](https://github.com/labring/laf/commit/efdf4ea9215fcc2af29aa2e1ce79ec032ea3106d))\n\n\n### Features\n\n* **cli:** auto create and delete fn ([#757](https://github.com/labring/laf/issues/757)) ([e7866fc](https://github.com/labring/laf/commit/e7866fc8c7dcca8c727026040f6fa283bf60a7c6))\n* **cli:** generate .gitignore file ([#758](https://github.com/labring/laf/issues/758)) ([be1d88e](https://github.com/labring/laf/commit/be1d88e2e50edf14e14ced997fd1dc5c1c9655b6))\n* **cli:** impl policy cmd ([#756](https://github.com/labring/laf/issues/756)) ([b85f8e0](https://github.com/labring/laf/commit/b85f8e02b4f5c5095a4ab04a905b072c11ef8334))\n* **cli:** opt dependency cmd ([#759](https://github.com/labring/laf/issues/759)) ([df9692b](https://github.com/labring/laf/commit/df9692b8666abedb092d755c19e8b8bc81c3ceae))\n* **runtime:** support dynamic import() in runtime ([#819](https://github.com/labring/laf/issues/819)) ([eabd39f](https://github.com/labring/laf/commit/eabd39fa49d6110ac9bf00a0b63d1cf2e399f736))\n* **server:** implement website hosting module ([#763](https://github.com/labring/laf/issues/763)) ([41da999](https://github.com/labring/laf/commit/41da999318184a21f127230271b45f96a51f15a2))\n* **server:** implement website hosting task ([#774](https://github.com/labring/laf/issues/774)) ([e1e597d](https://github.com/labring/laf/commit/e1e597dc20de6b13fdbbbca7162d8b813a294cec))\n* **server:** refactor bundle and other data schemas ([#811](https://github.com/labring/laf/issues/811)) ([809d1de](https://github.com/labring/laf/commit/809d1def836f2a12ce8d853f4c81badf578baf39))\n* **web:** add 403 page ([#781](https://github.com/labring/laf/issues/781)) ([50a7b79](https://github.com/labring/laf/commit/50a7b7945f262867842d5aad19487d605ebf80eb))\n* **web:** add confirm update env modal ([#806](https://github.com/labring/laf/issues/806)) ([bf81496](https://github.com/labring/laf/commit/bf81496f301be7086751fe32bf5936049c06ce0e))\n* **web:** add empty status & fix UI [#745](https://github.com/labring/laf/issues/745) ([#748](https://github.com/labring/laf/issues/748)) ([d88dd7e](https://github.com/labring/laf/commit/d88dd7ea7917362921321d2760ba3bfc6d01f435))\n* **web:** add form-data option for debug panel ([#789](https://github.com/labring/laf/issues/789)) ([b59053b](https://github.com/labring/laf/commit/b59053b68c8523ab3c9ab42fe22591ab181e75db))\n* **web:** add function name copy([#783](https://github.com/labring/laf/issues/783)) ([c808c1e](https://github.com/labring/laf/commit/c808c1e4e0715185fb3739018fc3b7ba6564d6b8))\n* **web:** add i18n language switch, refact loading state ([#777](https://github.com/labring/laf/issues/777)) ([2de068b](https://github.com/labring/laf/commit/2de068b745251e3c6bf53f6b9504bf0658b78a87))\n* **web:** add website hosting ([#780](https://github.com/labring/laf/issues/780)) ([7dadeba](https://github.com/labring/laf/commit/7dadeba0a1c1b0ba7f05e6818c50450665c4239c))\n* **web:** add website hosting custom domain ([#796](https://github.com/labring/laf/issues/796)) ([a2ea24c](https://github.com/labring/laf/commit/a2ea24c0fb42e7045e98cb83dc3f49f692929e34))\n* **web:** fix home page & function page bugs ([#735](https://github.com/labring/laf/issues/735)) ([f468748](https://github.com/labring/laf/commit/f468748c33aa049c1bd78f21829d9757b3ca6268))\n\n\n\n# [1.0.0-beta.1](https://github.com/labring/laf/compare/v1.0.0-beta.0...v1.0.0-beta.1) (2023-02-05)\n\n\n### Bug Fixes\n\n* **cli:** fix invalid debug header ([#684](https://github.com/labring/laf/issues/684)) ([93fc18b](https://github.com/labring/laf/commit/93fc18b9ef96c3f47ecd15f048ef0a5a0bbe3234))\n* fix max header size bug in gw & server ([#708](https://github.com/labring/laf/issues/708)) ([888ee82](https://github.com/labring/laf/commit/888ee82687545823108b1248651dc42354afa06e))\n* **runtime-node:** fix custom env unable to read ([#728](https://github.com/labring/laf/issues/728)) ([60c0ccc](https://github.com/labring/laf/commit/60c0cccdbd230d723d653e4b1aee2e5036137869))\n* **runtime:** fix build error of runtime-node ([#670](https://github.com/labring/laf/issues/670)) ([49fbc81](https://github.com/labring/laf/commit/49fbc819cfd06e1397d998c1b31b2e8d1c6ca8ec))\n* **server:** fix logic error in get-app api ([#720](https://github.com/labring/laf/issues/720)) ([1c4e85b](https://github.com/labring/laf/commit/1c4e85b9bd18124c89703f34caa159ff3e88cd7f))\n* **web:** fix func name regx for creating func ([#707](https://github.com/labring/laf/issues/707)) ([3de3d1a](https://github.com/labring/laf/commit/3de3d1a5e4303f188a879d60f0903a18cf61ca18))\n* **web:** ui refactor, fix styles & tips ([#713](https://github.com/labring/laf/issues/713)) ([eadb9a6](https://github.com/labring/laf/commit/eadb9a6a1c2f899fc2e8cbb677937dba4521ef79))\n\n\n### Features\n\n* **cli:** add storage pull and push ([#716](https://github.com/labring/laf/issues/716)) ([4d6d882](https://github.com/labring/laf/commit/4d6d8829390c956cc45a387fc86ed73ce741d0d8))\n* **cli:** impl bucket curd cmd ([#683](https://github.com/labring/laf/issues/683)) ([fd5ca45](https://github.com/labring/laf/commit/fd5ca45f18a9325f8c2d36863551fe4dccc4cd82))\n* **web:**  fix create & delete  collection bug ([#659](https://github.com/labring/laf/issues/659)) ([9e95bcb](https://github.com/labring/laf/commit/9e95bcb401ff6cc3abf8c77f1f516f4a3dc75706))\n* **web:**  fix UI bugs ([#717](https://github.com/labring/laf/issues/717)) ([eccd912](https://github.com/labring/laf/commit/eccd9121c055ac3900545985edbd56de44274c00))\n\n\n\n# [1.0.0-beta.0](https://github.com/labring/laf/compare/v1.0.0-alpha.5...v1.0.0-beta.0) (2023-01-20)\n\n\n### Bug Fixes\n\n* **deploy:** fix minio ingress in build charts ([#658](https://github.com/labring/laf/issues/658)) ([de0a86b](https://github.com/labring/laf/commit/de0a86ba84be39a911f647fa1117aa15c24413db))\n* **server:** fix bucket-udpate bug & server deploy issue ([#641](https://github.com/labring/laf/issues/641)) ([f6e2c35](https://github.com/labring/laf/commit/f6e2c3572d9fd22cc00a18b4302a4b361788a8ee))\n* **server:** fix response check error in bucket-updating ([#642](https://github.com/labring/laf/issues/642)) ([c4d994e](https://github.com/labring/laf/commit/c4d994e89fbf74483aae3f78750d2c5d0b82abea))\n* **server:** fix storage endpoint & ingress error ([#638](https://github.com/labring/laf/issues/638)) ([5506965](https://github.com/labring/laf/commit/5506965d942fb91358f6aa698ec85a2d906eee58))\n* **web:** encode function debug header & button theme ([#646](https://github.com/labring/laf/issues/646)) ([a0a2497](https://github.com/labring/laf/commit/a0a2497dc5e28d45411772de0f74ff49b159742d))\n* **web:** fix bucket name pattern ([#662](https://github.com/labring/laf/issues/662)) ([1f58446](https://github.com/labring/laf/commit/1f5844637fe3f88a375a900fe706bfcdeca624bb))\n* **web:** fix function page ui, update triger modal ([#652](https://github.com/labring/laf/issues/652)) ([a7fcfa5](https://github.com/labring/laf/commit/a7fcfa5f11d1dfb615e409b945eb220b42afa688))\n* **web:** fix pagination & favcon, optimize the ui styles ([#656](https://github.com/labring/laf/issues/656)) ([56cd541](https://github.com/labring/laf/commit/56cd541d8cd04448fc03e1040629bb0032cb5055))\n* **web:** replace gateway crd data with app domain object ([#660](https://github.com/labring/laf/issues/660)) ([5d411bb](https://github.com/labring/laf/commit/5d411bb315b3695cbe7c1d5306583bf94d2330e7))\n\n\n### Features\n\n* **cli:** add function delete ([#664](https://github.com/labring/laf/issues/664)) ([b4002ba](https://github.com/labring/laf/commit/b4002ba1c703bcbccc9d6cc2ad026ac44e6f7b31))\n* **cli:** refactor and impl function actions([#647](https://github.com/labring/laf/issues/647)) ([d49b15e](https://github.com/labring/laf/commit/d49b15e1e7cc4705316d49271f3744cf415b9ee4))\n* **cli:** support dependency install ([#663](https://github.com/labring/laf/issues/663)) ([ac0be96](https://github.com/labring/laf/commit/ac0be967795d22f12d9f87be2f162473ed6bbf68))\n* **gateway:** refactor gateway in server instead of crd ([#649](https://github.com/labring/laf/issues/649)) ([5207aa4](https://github.com/labring/laf/commit/5207aa45291cbecf4059fa995f4a4cbb4fae0890))\n* **server:** impl bucket domain service ([#661](https://github.com/labring/laf/issues/661)) ([aa8a3af](https://github.com/labring/laf/commit/aa8a3af2e566163882056634cfd58111f6df0056))\n* **server:** support multi-region cluster ([#648](https://github.com/labring/laf/issues/648)) ([ba5698c](https://github.com/labring/laf/commit/ba5698c04d2af69fccca8a6e8433379091da3bf8))\n* **web:** add row & col layout ([#619](https://github.com/labring/laf/issues/619)) ([a016f4e](https://github.com/labring/laf/commit/a016f4e7044bff8159581b3eae9141aef27fd41a))\n* **web:** add trigger panel ([#643](https://github.com/labring/laf/issues/643)) ([fbf850f](https://github.com/labring/laf/commit/fbf850f9e5be11517a6c3412a778d62f600d2bd7))\n* **web:** fix function layout & more button ([#655](https://github.com/labring/laf/issues/655)) ([9813ca3](https://github.com/labring/laf/commit/9813ca3c467b377f54bb63a49e1e645b39770d31))\n* **web:** policy panel & log new UI ([#624](https://github.com/labring/laf/issues/624)) ([dc5df96](https://github.com/labring/laf/commit/dc5df96e82bed00918fac31e8c56a20f50365d1f))\n* **web:** support toggle panels in function page ([#623](https://github.com/labring/laf/issues/623)) ([fda7b0d](https://github.com/labring/laf/commit/fda7b0d3e5c0a89ea78abcff3deb538d4749de56))\n\n\n\n# [1.0.0-alpha.5](https://github.com/labring/laf/compare/v1.0.0-alpha.4...v1.0.0-alpha.5) (2023-01-11)\n\n\n### Bug Fixes\n\n* **core:** remove bucket route pass host ([#600](https://github.com/labring/laf/issues/600)) ([a75a61f](https://github.com/labring/laf/commit/a75a61f467b33321d3c419bcca85af7c4fdfeba0))\n* default load typedefiniiton ([#606](https://github.com/labring/laf/issues/606)) ([e2d0967](https://github.com/labring/laf/commit/e2d09673d4a1a27afc0b81a66dea04c91a7da1f4))\n* **server:** fix function websocket error; add tags for function ([#611](https://github.com/labring/laf/issues/611)) ([6abee36](https://github.com/labring/laf/commit/6abee366d85d6396137fd4bdbaf79838c696d2c1))\n* **web:** create same function cause page error ([#603](https://github.com/labring/laf/issues/603)) ([caa2a5d](https://github.com/labring/laf/commit/caa2a5d04d833ec701cdb4575a45dbb8fd1c1b00))\n\n\n### Features\n\n* **server:** add enviroments apis ([#605](https://github.com/labring/laf/issues/605)) ([acf5d34](https://github.com/labring/laf/commit/acf5d34f23bb6958ca61c0b52e19532459283aa5))\n* **server:** add update-deps api ([#613](https://github.com/labring/laf/issues/613)) ([a1f67ae](https://github.com/labring/laf/commit/a1f67aefaab8bd1a80b70f573cbe910dcee404d5))\n* **server:** implement policy rule schema & crud ([#612](https://github.com/labring/laf/issues/612)) ([5e3789c](https://github.com/labring/laf/commit/5e3789c30f6caf50459a9aaeaccb64261d019ee7))\n* **web:** add AppEnvList and PATList ([#608](https://github.com/labring/laf/issues/608)) ([7d9cd82](https://github.com/labring/laf/commit/7d9cd8250aed493a820415fbac6fe87b8b86efc5))\n* **web:** fix database & storage bug ([#595](https://github.com/labring/laf/issues/595)) ([4ff0d9b](https://github.com/labring/laf/commit/4ff0d9ba85cfa588f2a7bd0a4b2e5ea0d9a6e8b1))\n* **web:** fix hotKey bug & hidden some buttons ([#602](https://github.com/labring/laf/issues/602)) ([f0bcbe6](https://github.com/labring/laf/commit/f0bcbe69709ceaac8e72378346fb502dcf35d095))\n* **web:** hide patList edit button & show copy token button ([#609](https://github.com/labring/laf/issues/609)) ([8772314](https://github.com/labring/laf/commit/8772314b493cb79f1ba8772ecd792b3d3beb9858))\n* **web:** new ui application page ([#614](https://github.com/labring/laf/issues/614)) ([e4c524a](https://github.com/labring/laf/commit/e4c524a769f85e39b692b081561687b3d4d6208d))\n* **web:** new ui function page ([#615](https://github.com/labring/laf/issues/615)) ([593481a](https://github.com/labring/laf/commit/593481a06598991dc780053a1aedb6d4c78165dd))\n* **web:** optimize hotkey function ([#604](https://github.com/labring/laf/issues/604)) ([f429c2a](https://github.com/labring/laf/commit/f429c2a299743d2e85e23f5c8d2a734d8d0ec1ae))\n\n\n\n# [1.0.0-alpha.4](https://github.com/labring/laf/compare/v1.0.0-alpha.3...v1.0.0-alpha.4) (2023-01-01)\n\n\n### Bug Fixes\n\n* **runtime:** add func data header for debug api, support multiple-method for debug request ([#594](https://github.com/labring/laf/issues/594)) ([db9eacd](https://github.com/labring/laf/commit/db9eacd8015a2a4b428230456588e11f51fdcf09))\n\n\n### Features\n\n* **cli:** init cli project ([#488](https://github.com/labring/laf/issues/488)) ([90b177f](https://github.com/labring/laf/commit/90b177ff63697bc76591ebfbd40577adf0959acb))\n* **cli:** login and logout & update work dir ([#587](https://github.com/labring/laf/issues/587)) ([792a0f3](https://github.com/labring/laf/commit/792a0f31794cb44d5d3489456237080571edc50e))\n* **server:** implement pat schema & apis ([#597](https://github.com/labring/laf/issues/597)) ([d4da55a](https://github.com/labring/laf/commit/d4da55a9305547496a64c64e1c7c9ddbff68a36d))\n* **web:** add custom url for page ([#592](https://github.com/labring/laf/issues/592)) ([41916f9](https://github.com/labring/laf/commit/41916f973078926ee1556c839a8cdf9707b9cc76))\n* **web:** add function ide console panel ([#593](https://github.com/labring/laf/issues/593)) ([03846e7](https://github.com/labring/laf/commit/03846e759430192f86174cec6a78a29705717043))\n* **web:** adjust dependence add、remove、get interface ([#582](https://github.com/labring/laf/issues/582)) ([7795fb1](https://github.com/labring/laf/commit/7795fb1a739b027c53161b86612d37944b9406e0))\n* **web:** disabled upload button when fileList is empty ([#589](https://github.com/labring/laf/issues/589)) ([5de333c](https://github.com/labring/laf/commit/5de333c76513783b911a0094bc52a652a586a40b))\n* **web:** fix functionPannel & dataPannel ([#586](https://github.com/labring/laf/issues/586)) ([7dcc72a](https://github.com/labring/laf/commit/7dcc72a31745ddf47e5c47c30d59a92c243a4365))\n* **web:** impl storage page ([5c42bc6](https://github.com/labring/laf/commit/5c42bc6e4c967a526547ac6bfb0284c658768209))\n\n\n\n# [1.0.0-alpha.3](https://github.com/labring/laf/compare/v1.0.0-alpha.2...v1.0.0-alpha.3) (2022-12-24)\n\n\n### Bug Fixes\n\n* **server:** add policy service to module provider ([#576](https://github.com/labring/laf/issues/576)) ([7911ba0](https://github.com/labring/laf/commit/7911ba0a0475804982f5d1bb050346f647657b5a))\n* **server:** fix build error in policy service ([#575](https://github.com/labring/laf/issues/575)) ([88ae17d](https://github.com/labring/laf/commit/88ae17d718f37def429b17e141bd0137c4e33ce9))\n* **server:** support array input param for adding deps ([#577](https://github.com/labring/laf/issues/577)) ([a7c0dc8](https://github.com/labring/laf/commit/a7c0dc893305248276d33abc359758b95f25640f))\n* **web:** fix to use new function debug token header & url ([99cf35c](https://github.com/labring/laf/commit/99cf35c504383af67c947ea74f9e57b24f405820))\n\n\n### Features\n\n* **runtime:** support interceptor function [#341](https://github.com/labring/laf/issues/341) ([#579](https://github.com/labring/laf/issues/579)) ([17f7606](https://github.com/labring/laf/commit/17f7606642c511e85824537a97c4ca3b502fb561))\n* **sdk:** add cloud sdk package ([c98aaec](https://github.com/labring/laf/commit/c98aaec086ae023da544ca7b23068464fc29d13a))\n* **server:** implement cron trigger schema & crud apis ([#578](https://github.com/labring/laf/issues/578)) ([3f6927c](https://github.com/labring/laf/commit/3f6927c34e5526c16c41c68c9d4fae3d823106be))\n* **server:** implement policy schema & apis ([#574](https://github.com/labring/laf/issues/574)) ([0d1d090](https://github.com/labring/laf/commit/0d1d090d330bb33f89fa2f04c4f8476f6d68b30f))\n* **web:** add app restart ([#571](https://github.com/labring/laf/issues/571)) ([c53d76a](https://github.com/labring/laf/commit/c53d76a4db1ddd2c6d49759f1b4c6f780933d447))\n* **web:** add page cache when switch sidebar page ([#563](https://github.com/labring/laf/issues/563)) ([c499afe](https://github.com/labring/laf/commit/c499afeacf913d08b9ebb99cd9fc90d9812a5bad))\n\n\n\n# [1.0.0-alpha.2](https://github.com/labring/laf/compare/v1.0.0-alpha.1...v1.0.0-alpha.2) (2022-12-19)\n\n\n### Bug Fixes\n\n* **runtime:** update deps installation impl to new design ([#553](https://github.com/labring/laf/issues/553)) ([cdda443](https://github.com/labring/laf/commit/cdda44352ce0435efbc6782e291c7caa84c9376d))\n* **web:** error when no function data ([#556](https://github.com/labring/laf/issues/556)) ([8d2e4b6](https://github.com/labring/laf/commit/8d2e4b6ed6ba3d17b8cd7e9ac4a55c5cea8fff1b))\n* **web:** fix function compile res data error ([#549](https://github.com/labring/laf/issues/549)) ([9d6f8b0](https://github.com/labring/laf/commit/9d6f8b036006f8136dc67795ed66d4d11763059e))\n* **web:** pagination ts error ([#560](https://github.com/labring/laf/issues/560)) ([3380690](https://github.com/labring/laf/commit/3380690041930a7bc0181be2b16ea3b26b643bfb))\n\n\n### Features\n\n* **server:** add app restart api & handler ([#558](https://github.com/labring/laf/issues/558)) ([5764029](https://github.com/labring/laf/commit/57640292a5e1d46618eccdb22ab00d70f7f87874))\n* **server:** add dependency module & apis ([#552](https://github.com/labring/laf/issues/552)) ([24a497d](https://github.com/labring/laf/commit/24a497d26859c754bcb6d161ea8c5a1acec9de12))\n* **web:** add func deploy confirm  &  code diff info ([#550](https://github.com/labring/laf/issues/550)) ([682dcc5](https://github.com/labring/laf/commit/682dcc528af18951c689a0c4e9bc80904f608196))\n* **web:** impl function logs page ([#559](https://github.com/labring/laf/issues/559)) ([97c4728](https://github.com/labring/laf/commit/97c4728c846ca4c8725e4f56edfae3fd535dd7e2))\n\n\n\n# [1.0.0-alpha.1](https://github.com/labring/laf/compare/v1.0.0-alpha.0...v1.0.0-alpha.1) (2022-12-15)\n\n\n### Bug Fixes\n\n* **core:** fix gateway bucket name issue & minio deploy domain config ([#537](https://github.com/labring/laf/issues/537)) ([b08b4e2](https://github.com/labring/laf/commit/b08b4e2e5c661fee77846bcd6b77022d96bf714a))\n* **runtime:** impv runtime logging struct; add func logs api ([#538](https://github.com/labring/laf/issues/538)) ([c9d2292](https://github.com/labring/laf/commit/c9d22925cd4222a5088b388ff068fad8b2644a9b))\n* **server:** fix compile function api params schema error ([#540](https://github.com/labring/laf/issues/540)) ([37c049c](https://github.com/labring/laf/commit/37c049ccff0dbcb9e0c66b967dfb9f87301341ba))\n* **server:** fix prisma bin engine error in amd64 ([#547](https://github.com/labring/laf/issues/547)) ([4c76333](https://github.com/labring/laf/commit/4c7633302e78072881a3fdac708fb8e74eb00e58))\n* **server:** func compile api response struct dismatch standard ([#543](https://github.com/labring/laf/issues/543)) ([97de760](https://github.com/labring/laf/commit/97de760e57820f6418e82fdb1c75f23ce61f0121))\n* **web:** replace aws client sdk v3 with v2 ([#546](https://github.com/labring/laf/issues/546)) ([3282894](https://github.com/labring/laf/commit/328289416920ae0685ec2bd9f25fd937a8f01fb4))\n\n\n### Features\n\n* **web:** complete function compile ([#545](https://github.com/labring/laf/issues/545)) ([7c712e8](https://github.com/labring/laf/commit/7c712e86163117e97aee262fd4edf1bc9877f3d9))\n* **web:** impl db crud; impl file crud; ([#542](https://github.com/labring/laf/issues/542)) ([9782423](https://github.com/labring/laf/commit/978242306449121c1e493e0e57136cee15850ae7)), closes [#535](https://github.com/labring/laf/issues/535) [#536](https://github.com/labring/laf/issues/536) [#537](https://github.com/labring/laf/issues/537) [#538](https://github.com/labring/laf/issues/538) [#539](https://github.com/labring/laf/issues/539)\n\n\n\n# [1.0.0-alpha.0](https://github.com/labring/laf/compare/v0.8.13...v1.0.0-alpha.0) (2022-12-13)\n\n\n### Bug Fixes\n\n* add logs & fix finalizer deletion logic ([#301](https://github.com/labring/laf/issues/301)) ([fe25ee8](https://github.com/labring/laf/commit/fe25ee8264fd36590953cb1075d1622823b5386f))\n* add missing cache control ([#248](https://github.com/labring/laf/issues/248)) ([61bc054](https://github.com/labring/laf/commit/61bc0540cf24e28baadf544acc71caf913a925ba))\n* app layout height ([79155a3](https://github.com/labring/laf/commit/79155a304563bdd970526ff671cfed4d5ef65af7))\n* cann't open 'view logs' ([#263](https://github.com/labring/laf/issues/263)) ([489152b](https://github.com/labring/laf/commit/489152b35fee558f89c108d342f0c6e26c19d11f))\n* code format ([bffff2c](https://github.com/labring/laf/commit/bffff2cd2e01ccc1a6f40a86c2df1e708a16801f))\n* **core:** fix app route serviceName and port ([#506](https://github.com/labring/laf/issues/506)) ([72c4182](https://github.com/labring/laf/commit/72c4182d731a68344611f0f3f9ac4af9de4c613c))\n* **core:** fix oss cr name of app ([#455](https://github.com/labring/laf/issues/455)) ([5c766d7](https://github.com/labring/laf/commit/5c766d7b31577e247120b60078019a9ecf5286dc))\n* **core:** fix oss user namespace error, fix rbac for crd ([#411](https://github.com/labring/laf/issues/411)) ([2040ec4](https://github.com/labring/laf/commit/2040ec42d3c452fa5f927fc733f3fa25c3b9a22c))\n* **core:** fix rbac to gateway controller & fix sa config of server charts ([#518](https://github.com/labring/laf/issues/518)) ([0e0fd77](https://github.com/labring/laf/commit/0e0fd779411587d992b32fb40bb7caf46a9f95c9))\n* **core:** gateway enable cors ([#525](https://github.com/labring/laf/issues/525)) ([495eb88](https://github.com/labring/laf/commit/495eb883d7fb875523f23b359195625d23987bcd))\n* **deploy:** fix [#360](https://github.com/labring/laf/issues/360)  k8s deployment nginx ingress default resovler   ([#364](https://github.com/labring/laf/issues/364) ) ([ae4a26a](https://github.com/labring/laf/commit/ae4a26af5de380b574716298b3de1da464549b5a))\n* error of `process is not defined` ([#146](https://github.com/labring/laf/issues/146)) ([8efa257](https://github.com/labring/laf/commit/8efa257007811648718759a0a4cbdc569663c336))\n* eslint ([abdf388](https://github.com/labring/laf/commit/abdf388c78e71bd31a42779ea5388226fc5e4a38))\n* fix controllers' makefile & docker configs ([022c4ed](https://github.com/labring/laf/commit/022c4ed1dad103584aebcade86391af94a5ec79e))\n* Fix problem when click enter app detail in apps page ([#249](https://github.com/labring/laf/issues/249)) ([5680d38](https://github.com/labring/laf/commit/5680d387f1cd505e374691d3a9ea03b7092e48a0))\n* JsonEditor add min height & line numbers ([#256](https://github.com/labring/laf/issues/256)) ([1ee5720](https://github.com/labring/laf/commit/1ee5720462bb5f20b5fe5baaeca27056be7caf1a))\n* multi event bind [#241](https://github.com/labring/laf/issues/241) ([#255](https://github.com/labring/laf/issues/255)) ([9885f71](https://github.com/labring/laf/commit/9885f716a7db2905d1bcf9606540405dabb927ae))\n* **oss:** fix api fields error ([7cfe30e](https://github.com/labring/laf/commit/7cfe30e5ceed7beb9f4b3b90c929e6cd3b5fb97b))\n* refactor theme & ui, add prism editor, ([#279](https://github.com/labring/laf/issues/279)) ([57d40f1](https://github.com/labring/laf/commit/57d40f15b48f4d238ad8ad124576046d7d6a416d))\n* remove deploy code ([9b5a834](https://github.com/labring/laf/commit/9b5a83420503fbe4659440c293f125ffe25435ea))\n* **server:** add region api, fix init image version ([#503](https://github.com/labring/laf/issues/503)) ([91250c0](https://github.com/labring/laf/commit/91250c05702760c4f4c2ac5fb26c460d89094f55))\n* **server:** fix app api error, fix dto & entity transform ([d80a8f9](https://github.com/labring/laf/commit/d80a8f9f201542ce0977b6821b658a27ebda09eb))\n* **server:** fix create app api & tests; fix deploy docs; ([#413](https://github.com/labring/laf/issues/413)) ([69f04ac](https://github.com/labring/laf/commit/69f04ac7c8cd80276e113a1baffd5e7f1c7f59ee))\n* **server:** fix dto validation method, fix cors config ([#446](https://github.com/labring/laf/issues/446)) ([d147a73](https://github.com/labring/laf/commit/d147a73812f74905a0f5b3a4890396cad72596ec))\n* **server:** fix error log in server ([#505](https://github.com/labring/laf/issues/505)) ([7eaefd5](https://github.com/labring/laf/commit/7eaefd5c411db5624f96c8583f5c27f5d07f65e4))\n* **server:** fix user db schema unique error ([#464](https://github.com/labring/laf/issues/464)) ([ac679c8](https://github.com/labring/laf/commit/ac679c8885d950601b19ff21c1d803ecf0eddf58))\n* **server:** improve & fix instance service; fix runtime service ([#495](https://github.com/labring/laf/issues/495)) ([1abe50c](https://github.com/labring/laf/commit/1abe50cb8c596b6853af758ad7e5c33b77c8ee23))\n* **web:** add nextjs env viriable & fix next build errors([#517](https://github.com/labring/laf/issues/517)) ([b8122a2](https://github.com/labring/laf/commit/b8122a2a52ba5cadaa72e2401881f556df55275a))\n* **web:** build error, change pnpm to npm([#520](https://github.com/labring/laf/issues/520)) ([6dbd5c7](https://github.com/labring/laf/commit/6dbd5c7f8175e3eda729f8f534f25eccb93f9375))\n\n\n### Features\n\n* add application controllers ([2a1ace7](https://github.com/labring/laf/commit/2a1ace7f89fe5a6d0da26d90b247f6860185928a))\n* add controllers ([5c488c8](https://github.com/labring/laf/commit/5c488c8143f3e60d28275fcd733fe5ea3c57e1c6))\n* add custom layout ([0642cb5](https://github.com/labring/laf/commit/0642cb5b7af7240afc76a6de97e3258e3ce97e32))\n* add filter ([60e48d3](https://github.com/labring/laf/commit/60e48d32e3075fd27097205f1d974f2c50a6fd0c))\n* add function create ([1ec4d0c](https://github.com/labring/laf/commit/1ec4d0ca7eeff41798e8b121067e2c14e3f500ad))\n* add function page ([66a5015](https://github.com/labring/laf/commit/66a501597b7a3d0ad769d7707d15be5a0d1f096f))\n* add function panel ([fe68b29](https://github.com/labring/laf/commit/fe68b2976d7f8a378339336ad1a798b2df73c62d))\n* add go workspace and move containsString to pkg/util ([#300](https://github.com/labring/laf/issues/300)) ([88bae41](https://github.com/labring/laf/commit/88bae41e74c9de95edbc56d5b5860629201a66b7))\n* add monaco editor ([16a058f](https://github.com/labring/laf/commit/16a058fdcaf76bf962338b2eea5ca662d1faf91b))\n* add more app status process for release action ([#251](https://github.com/labring/laf/issues/251)) ([dfed3e5](https://github.com/labring/laf/commit/dfed3e56d05e54c55bbb9a8f2d3d482fe6e6a63e))\n* add multitab layout ([#237](https://github.com/labring/laf/issues/237)) ([fd59030](https://github.com/labring/laf/commit/fd590301541049f2395a2185d0579ce694329f62))\n* add new function modal ([03a90db](https://github.com/labring/laf/commit/03a90db4439cfa3cf1b6819d3fac40f7b015952a))\n* App side menus ([#157](https://github.com/labring/laf/issues/157)) ([0022283](https://github.com/labring/laf/commit/0022283326be5d9cf6b385789f1907d2a6f2062f))\n* **app:** add app, func, runtime, spec crd design ([#296](https://github.com/labring/laf/issues/296)) ([08c3bd7](https://github.com/labring/laf/commit/08c3bd7377b6427c9685f7579e9e95a7d194a731))\n* **app:** impl creation form crd, update app crds ([#317](https://github.com/labring/laf/issues/317)) ([802aa0e](https://github.com/labring/laf/commit/802aa0e025cccc7b1660b918d280d718ebd80698))\n* **app:** impl main login of app controller ([#350](https://github.com/labring/laf/issues/350)) ([821e875](https://github.com/labring/laf/commit/821e875801d9f03dbb872f8c38fab9a726dfcbc2))\n* **app:** impl part of app controller ([#322](https://github.com/labring/laf/issues/322)) ([00e434d](https://github.com/labring/laf/commit/00e434dd37e6508f82efb7bd9e9d65f68584be7f))\n* **app:** impl the app resources creation logic in controller ([#351](https://github.com/labring/laf/issues/351)) ([501a62a](https://github.com/labring/laf/commit/501a62a3994cd0fb071146e26da27c193281f15c))\n* **core:** enable websocket in app gateway ([#508](https://github.com/labring/laf/issues/508)) ([2e80e39](https://github.com/labring/laf/commit/2e80e39f9532aa34e848ea8898152c0c6c42ca74))\n* **core:** instance add instance bundler ossuer runtime ([#449](https://github.com/labring/laf/issues/449)) ([894c57b](https://github.com/labring/laf/commit/894c57bbb2d5fdf69dbe3a1074a70bc3d836c6d0))\n* **core:** refresh apisix ssl ([#513](https://github.com/labring/laf/issues/513)) ([8baaae5](https://github.com/labring/laf/commit/8baaae5313a50789a9d888ce62b5d5672db7bc5f))\n* **core:** support gateway ssl ([#507](https://github.com/labring/laf/issues/507)) ([cec9454](https://github.com/labring/laf/commit/cec94542e25e334091db7f509b90036a745a743d))\n* **db:** impl database controller ([e6a6436](https://github.com/labring/laf/commit/e6a643686cb7090d0d0ce5e0a4e591262e441d03))\n* **doc:** refact entity & interfaces to support swagger struct ([#426](https://github.com/labring/laf/issues/426)) ([4d56e64](https://github.com/labring/laf/commit/4d56e6421bd6791d96db4f7355ce3a5163c3ee08))\n* **gateway:** add gateway crds ([#295](https://github.com/labring/laf/issues/295)) ([9a1133f](https://github.com/labring/laf/commit/9a1133f9de3374b31fb955e05e19e8fd621728f7))\n* **gateway:** add gateway e2e test ([#343](https://github.com/labring/laf/issues/343)) ([e823060](https://github.com/labring/laf/commit/e8230602c352184bfbeff650abf89dd48b2b36bf))\n* **gateway:** impl basic functions of route ([#309](https://github.com/labring/laf/issues/309)) ([1dcd72a](https://github.com/labring/laf/commit/1dcd72a5211b000077e2594bc4c1af878f2c1cbe))\n* **gateway:** impl gateway crd and opt route&domain crd ([#313](https://github.com/labring/laf/issues/313)) ([b3cb361](https://github.com/labring/laf/commit/b3cb361fdb677acad3c1ef0a8370b8973ee5d4b2))\n* **gateway:** opt controller ([#318](https://github.com/labring/laf/issues/318)) ([f105553](https://github.com/labring/laf/commit/f1055533ceb279ce8bb2ab6bdc6b84e2ad751623))\n* i18n for password change ([#151](https://github.com/labring/laf/issues/151)) ([23ed016](https://github.com/labring/laf/commit/23ed0166164b358ed5dd69fbaa8592ea18203def))\n* i18n support for document title ([#148](https://github.com/labring/laf/issues/148)) ([f505503](https://github.com/labring/laf/commit/f505503823bee5f1391aee7ebbc6180966f479b7))\n* i18n update ([#132](https://github.com/labring/laf/issues/132)) ([68b5d0b](https://github.com/labring/laf/commit/68b5d0b8b8a56b29b65d5720702408667c867ea5))\n* language detect and save ([#139](https://github.com/labring/laf/issues/139)) ([529fc3d](https://github.com/labring/laf/commit/529fc3de0fcec988f746b310cd815a8de2ce2bfd))\n* next web init, nextjs 12 ([0fb3ab8](https://github.com/labring/laf/commit/0fb3ab838f764f952fec80eb7e356afc31f2128f))\n* **oss & tests:** update oss crd & add oss tests ([#339](https://github.com/labring/laf/issues/339)) ([dde917a](https://github.com/labring/laf/commit/dde917a9abc6cbb8ff0f0088a90ac63c1269ab4d))\n* **oss:** add bucket crd ([cc0c982](https://github.com/labring/laf/commit/cc0c9824e9391781ca5980b1e4829bc8d7219cb9))\n* **oss:** add oss api(store & user CRD) ([061db8a](https://github.com/labring/laf/commit/061db8ab501fc882769ba8f193541904b2f10c22))\n* **oss:** impl deletions logic for bucket ([#308](https://github.com/labring/laf/issues/308)) ([9c669a9](https://github.com/labring/laf/commit/9c669a91582d95b2d1704641a913d8f5c05165fb))\n* **oss:** impl oss store, user, bucket controllers ([#306](https://github.com/labring/laf/issues/306)) ([d854642](https://github.com/labring/laf/commit/d854642759b07e1a4d61b70495c3431201c98114))\n* **runtime:** extract & design runtime mod from app mod. ([#311](https://github.com/labring/laf/issues/311)) ([ab8c969](https://github.com/labring/laf/commit/ab8c969add1d4c7a4b44778ffcadd8f2df7ad587))\n* **runtime:** impl function crd ([#365](https://github.com/labring/laf/issues/365)) ([f816b05](https://github.com/labring/laf/commit/f816b05061eb2f0c88484ef20efc278dfe2702b9))\n* **runtime:** upgrade app runtime for v1.0.alpha ([aa0e4f7](https://github.com/labring/laf/commit/aa0e4f7fa9f481c903a74995e40c15cc11ba26b6))\n* **server:** add app auth guard & crd interfaces ([36971fd](https://github.com/labring/laf/commit/36971fd9ddebf68e83f389358f2e7f9dd75005fd))\n* **server:** add app task service; fix func invoke in runtime ([#497](https://github.com/labring/laf/issues/497)) ([47edca6](https://github.com/labring/laf/commit/47edca6ddf78903165db7cd73e602beedad7fe15))\n* **server:** add auth module & jwt auth guard ([7ca4807](https://github.com/labring/laf/commit/7ca48075ed9f85839b509a625186847662cb8b4d))\n* **server:** add bucket gateway management in server ([#531](https://github.com/labring/laf/issues/531)) ([8f27740](https://github.com/labring/laf/commit/8f27740e16814da144bc518e132a930996139fe2))\n* **server:** add databa management proxy api ([#530](https://github.com/labring/laf/issues/530)) ([53dad1a](https://github.com/labring/laf/commit/53dad1af19b14bba96792d26306bcb1d5f75dbc3))\n* **server:** add func db design, turn pg to mongo ([#454](https://github.com/labring/laf/issues/454)) ([12b1587](https://github.com/labring/laf/commit/12b15870878cb335273da06c2f75c0da7e0e13db))\n* **server:** add function debug token api ([#527](https://github.com/labring/laf/issues/527)) ([a3432f3](https://github.com/labring/laf/commit/a3432f36363e1442c2110ace977d28aaf2f9161f))\n* **server:** add initializer module for init sys db ([#473](https://github.com/labring/laf/issues/473)) ([b547f34](https://github.com/labring/laf/commit/b547f346c9b1653e02bcf8cd4e7f3a551498ea6a))\n* **server:** add k8s patch method to k8s service ([#430](https://github.com/labring/laf/issues/430)) ([ad79951](https://github.com/labring/laf/commit/ad799515f4c7af9916514cfe5c47325610aef755))\n* **server:** add oss sts api ([#519](https://github.com/labring/laf/issues/519)) ([3417159](https://github.com/labring/laf/commit/3417159d6092a454003685aeff18099e533d6ce2))\n* **server:** add prisma & user module ([fca199c](https://github.com/labring/laf/commit/fca199c3a0395e7a1661cae6d63802f8b8fd3e0a))\n* **server:** complete laf server auth api. ([#421](https://github.com/labring/laf/issues/421)) ([fd4923f](https://github.com/labring/laf/commit/fd4923fe59ca8327cf4a71268cd04980ed5e484f))\n* **server:** impl add app api ([5877439](https://github.com/labring/laf/commit/58774391e10fa47f8d36260ee80f95c228e85efe))\n* **server:** impl application query api ([#423](https://github.com/labring/laf/issues/423)) ([bb8df68](https://github.com/labring/laf/commit/bb8df68c36817c1157eeb8b340daddfbcc8651b7))\n* **server:** impl application update & deletion APIs ([#440](https://github.com/labring/laf/issues/440)) ([a5f2481](https://github.com/labring/laf/commit/a5f248150135323b27e9bbd7ffcdf8dc83040608))\n* **server:** impl auth api with casdoor ([#405](https://github.com/labring/laf/issues/405)) ([f3e3f82](https://github.com/labring/laf/commit/f3e3f822a235762b911f57de2c1faa7ac1e9e4de))\n* **server:** impl bucket creation api ([a9790a7](https://github.com/labring/laf/commit/a9790a7a944b9b90a19e37e0508c3bac5f6298de))\n* **server:** impl bundle & runtime list api ([#453](https://github.com/labring/laf/issues/453)) ([4dae4da](https://github.com/labring/laf/commit/4dae4da3f4ff161046da84ae5b8a7264c591dc12))\n* **server:** impl cloud function update & deletetion apis ([#451](https://github.com/labring/laf/issues/451)) ([f297002](https://github.com/labring/laf/commit/f2970020c0c33d9802942c4105cec27f03fbf20a))\n* **server:** impl collection query, update, delete; ([#432](https://github.com/labring/laf/issues/432)) ([0ac336f](https://github.com/labring/laf/commit/0ac336f7ee6d434fc7ba7a8b8e3522477e0b10b6))\n* **server:** implement & reafct app apis with server db ([#462](https://github.com/labring/laf/issues/462)) ([d960382](https://github.com/labring/laf/commit/d9603821b1042eea5e157af19710941ecd4b130b))\n* **server:** implement bucket update & deletion apis ([#447](https://github.com/labring/laf/issues/447)) ([3525d7e](https://github.com/labring/laf/commit/3525d7efcf7a7af5dbe91f7f19389a625448dafe))\n* **server:** implement buckuet query apis ([#425](https://github.com/labring/laf/issues/425)) ([b4df288](https://github.com/labring/laf/commit/b4df2882c6010a1f063ada4603e394266687fd37))\n* **server:** implement collection creation api. ([#431](https://github.com/labring/laf/issues/431)) ([6d98a4f](https://github.com/labring/laf/commit/6d98a4fc6c6594a76b966c5aaddc55507419afee))\n* **server:** implement function creation ([#427](https://github.com/labring/laf/issues/427)) ([9759453](https://github.com/labring/laf/commit/97594538a3af75a5efc217c7e3920953ef45e600))\n* **server:** implement function query apis ([#429](https://github.com/labring/laf/issues/429)) ([c0f04e1](https://github.com/labring/laf/commit/c0f04e12ec33d12acd8f497be692805cea71631f))\n* **server:** implement instance manage in server ([#494](https://github.com/labring/laf/issues/494)) ([7cf8694](https://github.com/labring/laf/commit/7cf8694af6c2b3587cdca4f01838c8bbd87046a0))\n* **server:** reafct cloud functions' apis in db ([#472](https://github.com/labring/laf/issues/472)) ([dc518c8](https://github.com/labring/laf/commit/dc518c8d5d935598697bdbdf6b93bd04f415f0c7))\n* **tests:** add template render ([#337](https://github.com/labring/laf/issues/337)) ([9e31d2d](https://github.com/labring/laf/commit/9e31d2d36fef8c9b39f63143351edf6c8e4633a5))\n* update controllers ([#288](https://github.com/labring/laf/issues/288)) ([294d98a](https://github.com/labring/laf/commit/294d98a6779243e9f5b248a49b3fa59f33e04366))\n* web storage page ([#418](https://github.com/labring/laf/issues/418)) ([261ebfb](https://github.com/labring/laf/commit/261ebfbab453cefab36ce6678815595682e646a1))\n* **web:** add function editor theme, json editor, app model ([8ffecbf](https://github.com/labring/laf/commit/8ffecbfb5966904568f85babecbc20b37fb6ddf2))\n* **web:** finish application page  ([#452](https://github.com/labring/laf/issues/452)) ([a3aebfd](https://github.com/labring/laf/commit/a3aebfd85534ac25d334907debd191f402fafaab))\n* **web:** impl login  callback ([#442](https://github.com/labring/laf/issues/442)) ([ff64a8f](https://github.com/labring/laf/commit/ff64a8f1653a9d41874040bb1072b5a6bf56715a))\n\n\n### Reverts\n\n* Revert \"refactor: #235 move debug panel to outside  (#239)\" (#245) ([16c40c0](https://github.com/labring/laf/commit/16c40c089c9f77aba8d14f797afd7d811bfe22ed)), closes [#235](https://github.com/labring/laf/issues/235) [#239](https://github.com/labring/laf/issues/239) [#245](https://github.com/labring/laf/issues/245)\n\n\n\n## [0.8.13](https://github.com/labring/laf/compare/v0.8.12...v0.8.13) (2022-09-23)\n\n\n### Bug Fixes\n\n* **client-sdk:** fix error of last commit:hack `process` ([85d39cd](https://github.com/labring/laf/commit/85d39cdfd3a402ab6b9f38cf5cb86b50da10902c))\n\n\n\n## [0.8.12](https://github.com/labring/laf/compare/v0.8.11...v0.8.12) (2022-09-22)\n\n\n### Bug Fixes\n\n* **client-sdk:** fix wx `process` hack ([fd55af9](https://github.com/labring/laf/commit/fd55af9df6257632a4e9a497b8ab2e0bf216c210))\n* **client-sdk:** hack for `process` missing for wechat miniprogram ([36002b1](https://github.com/labring/laf/commit/36002b1bd5065843c3ddaf33723c47449e899624))\n\n\n\n## [0.8.11](https://github.com/labring/laf/compare/v0.8.10...v0.8.11) (2022-09-16)\n\n\n### Features\n\n* **app:** add xml parser to req ([198027c](https://github.com/labring/laf/commit/198027c5e95515b435fb72d12985a4c9b7e62a94))\n\n\n\n## [0.8.10](https://github.com/labring/laf/compare/v0.8.9...v0.8.10) (2022-09-14)\n\n\n### Features\n\n* **runtime:** add request param to func context ([#290](https://github.com/labring/laf/issues/290)) ([c7865be](https://github.com/labring/laf/commit/c7865bed987fa83fef1d3680b0c560d3bd0c1126))\n\n\n\n## [0.8.9](https://github.com/labring/laf/compare/v0.8.8...v0.8.9) (2022-09-13)\n\n\n### Bug Fixes\n\n* **instance:** fix app env of oss external endpoint port ([750a4d4](https://github.com/labring/laf/commit/750a4d4e48bbf5da1fdc4f658eeab0e30edc2263))\n\n\n\n## [0.8.8](https://github.com/labring/laf/compare/v0.8.7...v0.8.8) (2022-09-13)\n\n\n### Bug Fixes\n\n* **deploy:** fix oss external endpoint config format ([543fe9a](https://github.com/labring/laf/commit/543fe9a42c5d1f4f8fe87da48cd680182fce53b8))\n\n\n\n## [0.8.7](https://github.com/labring/laf/compare/v0.8.7-alpha.3...v0.8.7) (2022-09-12)\n\n\n### Bug Fixes\n\n* **client:** fix the regex of function id ([6519c95](https://github.com/labring/laf/commit/6519c951257a1b1bb1650e2119247f8947005e8b))\n* fix missing of console.warn/debug/info ([#289](https://github.com/labring/laf/issues/289)) ([2c2d4ba](https://github.com/labring/laf/commit/2c2d4baecf97db1ee888e3e088b81d79e032bf41))\n* k8s startup time; add extra pkg in app-service; fix deploy scripts ([679d2b4](https://github.com/labring/laf/commit/679d2b40800ca24effc03b65aa179a67dfda2274))\n\n\n\n## [0.8.7-alpha.3](https://github.com/labring/laf/compare/v0.8.7-alpha.2...v0.8.7-alpha.3) (2022-08-23)\n\n\n### Features\n\n* opt ssl create and code style ([#282](https://github.com/labring/laf/issues/282)) ([f118412](https://github.com/labring/laf/commit/f118412c422acc0a85fe4f07163a0422af38255a))\n\n\n\n## [0.8.7-alpha.2](https://github.com/labring/laf/compare/v0.8.7-alpha.1...v0.8.7-alpha.2) (2022-08-17)\n\n\n### Features\n\n* enable bucket versioning ([#270](https://github.com/labring/laf/issues/270)) ([f7c3efd](https://github.com/labring/laf/commit/f7c3efdf95afe4775348a4d0e30c6d357e01e939))\n* opt schema and port config ([#267](https://github.com/labring/laf/issues/267)) ([59a15c7](https://github.com/labring/laf/commit/59a15c79c4c8abeec07706ae2f5f11056657a5aa))\n\n\n\n## [0.8.7-alpha.1](https://github.com/labring/laf/compare/v0.8.7-alpha.0...v0.8.7-alpha.1) (2022-08-12)\n\n\n\n## [0.8.7-alpha.0](https://github.com/labring/laf/compare/v0.8.6...v0.8.7-alpha.0) (2022-08-10)\n\n\n### Bug Fixes\n\n* **deploy:** fix docker deploy error in apple m1 ([54b1d46](https://github.com/labring/laf/commit/54b1d4697512d0583379831377afbc21fe7c0aca))\n* fix create system app error ([#240](https://github.com/labring/laf/issues/240)) ([25bef9e](https://github.com/labring/laf/commit/25bef9ed55663e16bdb8836c7f871500167417f6))\n* fix use ssl route ([#238](https://github.com/labring/laf/issues/238)) ([1228f76](https://github.com/labring/laf/commit/1228f76fb9210377e34cd52cfa2a5a5520b62f6b))\n\n\n\n## [0.8.6](https://github.com/labring/laf/compare/v0.8.5...v0.8.6) (2022-08-08)\n\n\n### Bug Fixes\n\n* fix route priority ([#155](https://github.com/labring/laf/issues/155)) ([9ad2c58](https://github.com/labring/laf/commit/9ad2c58780a55330e0808da2b8ad0ef545fa3cd8))\n\n\n### Features\n\n* add ssl support ([#179](https://github.com/labring/laf/issues/179)) ([1bac7f0](https://github.com/labring/laf/commit/1bac7f04f06b4d68a9a19b874d56584d829baee5))\n* feat website domain ([#156](https://github.com/labring/laf/issues/156)) ([2b3a578](https://github.com/labring/laf/commit/2b3a578cbd49e8a0521c690e32e6d3448b5f5458))\n* **gateway:** add cors and websocket ([#142](https://github.com/labring/laf/issues/142)) ([fa8dfe0](https://github.com/labring/laf/commit/fa8dfe0d90b353b69034dd0266d706d06013638f))\n* **gateway:** add cors and websocket ([#142](https://github.com/labring/laf/issues/142)) ([4c289a9](https://github.com/labring/laf/commit/4c289a99882008f636107634272aa8c30c8114d7))\n* init gateway controller ([#133](https://github.com/labring/laf/issues/133)) ([0e27b70](https://github.com/labring/laf/commit/0e27b70028325b881248292d02159e493e0687d0))\n* init gateway controller ([#133](https://github.com/labring/laf/issues/133)) ([b7ca2f7](https://github.com/labring/laf/commit/b7ca2f750138a68fa471055f881e018a8e01aadf))\n* support website custom domain ([#138](https://github.com/labring/laf/issues/138)) ([1b2b382](https://github.com/labring/laf/commit/1b2b38275e50ef8143f06103390024b9f18251da))\n* support website custom domain ([#138](https://github.com/labring/laf/issues/138)) ([e2c7196](https://github.com/labring/laf/commit/e2c7196f58d46a12330d93bdf645e7049a98206b))\n\n\n\n## [0.8.5](https://github.com/labring/laf/compare/v0.8.5-alpha.0...v0.8.5) (2022-07-29)\n\n\n### Bug Fixes\n\n* **cli:** fix path sep error in win, add docs, fix code styles ([5c944e8](https://github.com/labring/laf/commit/5c944e87308d2c91a1ac2d714dd9014202c9e92e))\n* **cli:** fix templates dir path error ([c41c1a2](https://github.com/labring/laf/commit/c41c1a2afafba0da4eb5b6cf2e21fe6e029aa010))\n\n\n\n## [0.8.5-alpha.0](https://github.com/labring/laf/compare/v0.8.4...v0.8.5-alpha.0) (2022-07-29)\n\n\n### Bug Fixes\n\n* fix cli pkg error; ([cbebbcc](https://github.com/labring/laf/commit/cbebbcc6bf80ffe147900c788573a4e7f8cc0781))\n* page route ([#197](https://github.com/labring/laf/issues/197)) ([4be3f90](https://github.com/labring/laf/commit/4be3f90e11a8ddcc77fd602608b09a29c7674c26))\n\n\n### Features\n\n* add account sign up mode config ([#172](https://github.com/labring/laf/issues/172)) ([#181](https://github.com/labring/laf/issues/181)) ([60195b2](https://github.com/labring/laf/commit/60195b2a12414b10e7f7c586c07e125353eef124))\n* add cli package; ([fb356cc](https://github.com/labring/laf/commit/fb356cc6af031ad2fab108779b927b18065c49de))\n* **cli:** add oss/server command ([#154](https://github.com/labring/laf/issues/154)) ([65cb7a7](https://github.com/labring/laf/commit/65cb7a7c438f5cdd72d2fda2eff6e676162b9b8e))\n* validate old password before updating password ([#152](https://github.com/labring/laf/issues/152)) ([2f2e84e](https://github.com/labring/laf/commit/2f2e84e3c278d4aa3319bcd1493c0640780f2817))\n\n\n\n## [0.8.4](https://github.com/labring/laf/compare/v0.8.3...v0.8.4) (2022-06-09)\n\n\n### Bug Fixes\n\n* **sys:** fix [#108](https://github.com/labring/laf/issues/108) ([c6bfc5a](https://github.com/labring/laf/commit/c6bfc5a104a2a6a6a1f7f6b1cb527b8a66bedeb1))\n\n\n### Features\n\n* **app-service:** add node-fetch package & remove cross-fetch pkg; ([81b926b](https://github.com/labring/laf/commit/81b926b67853437349f3b3aa30f49fbb37ef670f))\n* **app-service:** support global fetch in function; ([67f03a2](https://github.com/labring/laf/commit/67f03a2835b94be987a9dbfcef7f50963bddab8b))\n\n\n\n## [0.8.3](https://github.com/labring/laf/compare/v0.8.2...v0.8.3) (2022-06-07)\n\n\n### Features\n\n* **app-service:** support global in cloud functions ([5faf2ff](https://github.com/labring/laf/commit/5faf2ffa2b24db1cb1b5cc96f7c58d43d4552cd0))\n\n\n\n## [0.8.2](https://github.com/labring/laf/compare/v0.8.1...v0.8.2) (2022-06-06)\n\n\n### Bug Fixes\n\n* **app-service:**  fix security risk for expose process.env ([d3004b3](https://github.com/labring/laf/commit/d3004b33e27713ff26f28a6069b8f3b4f29d49f3))\n* **app-service:** fix bug in cloud-sdk path; ([f8df39b](https://github.com/labring/laf/commit/f8df39b5908900a26cf2a7339ed4729f7820c0f3))\n\n\n\n## [0.8.1](https://github.com/labring/laf/compare/v0.8.0...v0.8.1) (2022-06-06)\n\n\n### Features\n\n* add auto build & push docker images by github actions ([#122](https://github.com/labring/laf/issues/122)) ([fe313b3](https://github.com/labring/laf/commit/fe313b383679c256a8858f39f49f3efc4cb2d72e))\n* **deploy:** use nip.io domain instead of local-dev.host ([8bd2abc](https://github.com/labring/laf/commit/8bd2abcccbda59cefeb30f6cbc49eaf48b181e89))\n* full bucket name ([#125](https://github.com/labring/laf/issues/125)) ([62dacc5](https://github.com/labring/laf/commit/62dacc551d888afbcde29859562efa3acbb422c3))\n\n\n\n# [0.8.0](https://github.com/labring/laf/compare/v0.8.0-alpha.11...v0.8.0) (2022-05-27)\n\n\n### Bug Fixes\n\n* **app-console:** fix create function label validation fail ([7c67328](https://github.com/labring/laf/commit/7c67328035ec44bba5329e61bda3381356b8dc59))\n* **rbac:** fix check permission error, add actions for pkgs; ([bf772d2](https://github.com/labring/laf/commit/bf772d2c2fdde7a101faf60569109b677ec8d582))\n\n\n### Features\n\n* **app-console:** fix collections list height ([#114](https://github.com/labring/laf/issues/114) [#109](https://github.com/labring/laf/issues/109)) ([562b0e4](https://github.com/labring/laf/commit/562b0e4239a985540c58024efcfc8a5ba866fccd))\n* **app-service:** support default cloud function ([#117](https://github.com/labring/laf/issues/117) [#115](https://github.com/labring/laf/issues/115)) ([04b7320](https://github.com/labring/laf/commit/04b73209bfdbf77afeceda9ab80eed5e4497ea9b))\n* opt index app_id format ([#102](https://github.com/labring/laf/issues/102)) ([28f9c3c](https://github.com/labring/laf/commit/28f9c3ce7e2d9c9f08ea8318a42019aa5a75abe9))\n* **rbac:** refact rbac support more groups(roles) ([a1e28ea](https://github.com/labring/laf/commit/a1e28ea7b343664f9d4430cbbd75931c53327213))\n\n\n\n# [0.8.0-alpha.11](https://github.com/labring/laf/compare/v0.8.0-alpha.10...v0.8.0-alpha.11) (2022-05-16)\n\n\n### Bug Fixes\n\n* **sys:** fix [#96](https://github.com/labring/laf/issues/96) ([95e2df6](https://github.com/labring/laf/commit/95e2df63760711c9e51de63c2174941d52a84ab7))\n\n\n\n# [0.8.0-alpha.10](https://github.com/labring/laf/compare/v0.8.0-alpha.9...v0.8.0-alpha.10) (2022-05-16)\n\n\n### Bug Fixes\n\n* **instance controller:** fix req_mem error ([d8c0042](https://github.com/labring/laf/commit/d8c00428d87ac774fdae398909cf7b4c45d1a567))\n\n\n\n# [0.8.0-alpha.9](https://github.com/labring/laf/compare/v0.8.0-alpha.8...v0.8.0-alpha.9) (2022-05-15)\n\n\n### Bug Fixes\n\n* **client:** fix log in word ([#83](https://github.com/labring/laf/issues/83)) ([2d93e51](https://github.com/labring/laf/commit/2d93e517999a9a4df26026ba918175997b70fdd1))\n* fix init error while db not ready ([5ed4fec](https://github.com/labring/laf/commit/5ed4fecc95f3016e7f35b147eb0445ce7c6e213b))\n* fix website domain bind error; ([441970b](https://github.com/labring/laf/commit/441970baf6ccab877b87ee0eb40519561cf7f6cb))\n* **website:** turn website domain to array; ([e51993a](https://github.com/labring/laf/commit/e51993aa7f15ad6d88cb028482745fbbb0f9070f))\n\n\n\n# [0.8.0-alpha.8](https://github.com/labring/laf/compare/v0.8.0-alpha.7...v0.8.0-alpha.8) (2022-05-08)\n\n\n### Features\n\n* **oss:** impl oss service account ([#80](https://github.com/labring/laf/issues/80) [#76](https://github.com/labring/laf/issues/76)) ([2ec8f9f](https://github.com/labring/laf/commit/2ec8f9f8e8f426a9723e1cae46ec229111026f2d))\n\n\n\n# [0.8.0-alpha.7](https://github.com/labring/laf/compare/v0.8.0-alpha.6...v0.8.0-alpha.7) (2022-05-07)\n\n\n\n# [0.8.0-alpha.6](https://github.com/labring/laf/compare/v0.8.0-alpha.5...v0.8.0-alpha.6) (2022-05-06)\n\n\n### Bug Fixes\n\n* **app-console:** fix restart old api [#72](https://github.com/labring/laf/issues/72) ([bfd49c4](https://github.com/labring/laf/commit/bfd49c471d5ad621caa2a247badd0a88e859b2a0))\n* **logo:** fix logo url; ([66448c4](https://github.com/labring/laf/commit/66448c49536c24a27c9429d3f100e53a9295ebbc))\n* **replicate:** Fix bug. replicate permission error ([#77](https://github.com/labring/laf/issues/77)) ([cbd829d](https://github.com/labring/laf/commit/cbd829d11e979289bba3f5c58ead2f1b6229d043))\n\n\n\n# [0.8.0-alpha.5](https://github.com/labring/laf/compare/v0.8.0-alpha.4...v0.8.0-alpha.5) (2022-05-05)\n\n\n### Bug Fixes\n\n* **app-service:** fix db import error while building; ([070114e](https://github.com/labring/laf/commit/070114e2eec2728d604b62648cbf8093d0e057f9))\n\n\n\n# [0.8.0-alpha.4](https://github.com/labring/laf/compare/v0.8.0-alpha.3...v0.8.0-alpha.4) (2022-05-04)\n\n\n### Bug Fixes\n\n* **app-service:** fix import path error; ([d546499](https://github.com/labring/laf/commit/d546499c6a43d55fd069193953a155ed0e699f5f))\n\n\n\n# [0.8.0-alpha.3](https://github.com/labring/laf/compare/v0.8.0-alpha.2...v0.8.0-alpha.3) (2022-05-03)\n\n\n### Bug Fixes\n\n* **sys:** process bucket name & mode for old version compatibility ([6846ede](https://github.com/labring/laf/commit/6846ede60ba8443e19d0c640734103744dd6c127))\n\n\n\n# [0.8.0-alpha.2](https://github.com/labring/laf/compare/v0.8.0-alpha.1...v0.8.0-alpha.2) (2022-05-03)\n\n\n### Bug Fixes\n\n* support waiting db connection; ([e99c312](https://github.com/labring/laf/commit/e99c312d6b09dd1d4a7340b8980ba19cc78b70c0))\n\n\n\n# [0.8.0-alpha.1](https://github.com/labring/laf/compare/v0.8.0-alpha.0...v0.8.0-alpha.1) (2022-05-03)\n\n\n### Bug Fixes\n\n* add new status for joined apps; ([768cf95](https://github.com/labring/laf/commit/768cf9516d515cf40bc3b9454c922eb63c2c2636))\n\n\n\n# [0.8.0-alpha.0](https://github.com/labring/laf/compare/v0.7.11...v0.8.0-alpha.0) (2022-05-02)\n\n\n### Bug Fixes\n\n* **app-console:** switch collection get page 1 ([2fa4cbb](https://github.com/labring/laf/commit/2fa4cbb27693bfa69e8f471485e001004b28004b))\n* **app-console:** upload file path fix ([6375e0b](https://github.com/labring/laf/commit/6375e0b20517b8b4f38a5bcc175a21f1d0944cce))\n* **app-service:** change debug-token to bearer token; ([d4901f1](https://github.com/labring/laf/commit/d4901f19e9b40ba356c350b02c5426ec076900a3))\n* fix app-service script error ([fc22342](https://github.com/labring/laf/commit/fc223428525d3bfdbde5ee3f87b0406c119e7fa3))\n* front-end lint fix ([6a44a71](https://github.com/labring/laf/commit/6a44a719f9c584d9f2ab4f18a8f38417b8251d2a))\n* **gateway:** fix oss.conf error; ([e8639b0](https://github.com/labring/laf/commit/e8639b05e9ae1a89607a91a40d3cceb5f5a7685a))\n* impl restart api & update sys client; ([3ba23bb](https://github.com/labring/laf/commit/3ba23bbce9eebb13101d378487901cb4841fad7d))\n* **oss:** fix error of setBucketPolicy api; ([8b5a2f0](https://github.com/labring/laf/commit/8b5a2f04a0c7ccec09d3f215d36af9ca360de0a1))\n* **oss:** fix error of setBucketPolicy api; ([bee61bd](https://github.com/labring/laf/commit/bee61bda08470983087088e5f1ab953629f3ca2c))\n* **oss:** fix oss api error; ([0fe8c90](https://github.com/labring/laf/commit/0fe8c90ddc3f038ceee9957dd71f1e4ddc10569a))\n* **oss:** fix oss api error; ([07c87e8](https://github.com/labring/laf/commit/07c87e821f970a611fd4d35f065d5611083155fb))\n* **oss:** folder name rule fix ([d8925a2](https://github.com/labring/laf/commit/d8925a232741a326ee3388d5994f0c6365eafb09))\n* **oss:** upload folder; ([f946885](https://github.com/labring/laf/commit/f94688514ec93f572178f2d7acd9382245b54849))\n* remove /healthz log in app service ([c2b0bc6](https://github.com/labring/laf/commit/c2b0bc6ebc7b7ded53e3102c85ca0b99ccd4f78e))\n* **replicate:** Fix. db instance import bug ([1d67b05](https://github.com/labring/laf/commit/1d67b050a08542e579e6d193fe61635205a2e08e))\n* **replicate:** Fix. db instance import bug ([3a9a6e2](https://github.com/labring/laf/commit/3a9a6e2b6b120a507108d01d8acf7a5d06dcd34f))\n* **replicate:** Fix. replicates appid bug ([b53f39c](https://github.com/labring/laf/commit/b53f39c12d1dc5a25e59fa9c124706e67de40feb))\n* **sys:** fix /health-check -> /healthz ([3ebeee1](https://github.com/labring/laf/commit/3ebeee1a692a710f961433148f720b0f634fa69f))\n* **sys:** fix oss sts config; ([3a15d32](https://github.com/labring/laf/commit/3a15d32beb61c96c00feaab873de82b4ff69d7e3))\n\n\n### Features\n\n* **app-console:** replace bucket fs api with oss ([3286322](https://github.com/labring/laf/commit/328632266e3c19305e0cdd65d3cb9be1c40fd326))\n* **app-console:** update bucket add quota param ([954f9b3](https://github.com/labring/laf/commit/954f9b3f54886fcfd83034c14ff337de13208e66))\n* **app-service:** add oss config & packages; ([1b8ff91](https://github.com/labring/laf/commit/1b8ff913c0bbf36c91b7ba0a6943fc2f1c272a2e))\n* **app-spec:** impl app-spec on app createing. ([8c05fa6](https://github.com/labring/laf/commit/8c05fa6804940dfd625fbe81df1c3ca2f1920a2c))\n* bucket show sencondary url; move replicas dialog to auth page;setInterval with getApplications; ([68aa451](https://github.com/labring/laf/commit/68aa451c9e39cf331e1c4a69859d057c359ef473))\n* complete the design of instance constroller ([3caa044](https://github.com/labring/laf/commit/3caa044c2539e26518390c16d261b5bc77cf0de6))\n* **gateway:** add oss conf in gateway; ([b2151c0](https://github.com/labring/laf/commit/b2151c0f9e214dc51d4380b286c1b46749432459))\n* **gateway:** add oss conf in gateway; ([c9b089f](https://github.com/labring/laf/commit/c9b089f3be4d920403af7db8c52184332180c0a2))\n* impl instance controller sevice; ([ddb03f0](https://github.com/labring/laf/commit/ddb03f0b052a1bb9e4f44c15f53320702b1aee4b))\n* **ingress:** use k8s ingress replace nginx gateway; ([463ea11](https://github.com/labring/laf/commit/463ea1115f8e9849dd5af4646bd7abb59e288b98))\n* **oss:** add bucket quota; ([2918104](https://github.com/labring/laf/commit/291810401e185a08af7f4245a13a07755a641566))\n* **oss:** add bucket stats api in oss ([eaba65e](https://github.com/labring/laf/commit/eaba65eff0a6c50ff30d32b06023afdf7b558252))\n* **oss:** add minio api in system-service; ([cb86567](https://github.com/labring/laf/commit/cb865679f0070ae240252b564e464debfe7351f8))\n* **oss:** add minio api in system-service; ([6225641](https://github.com/labring/laf/commit/62256413f20c07f63ccbcb6ca1f1d259ba0d4dca))\n* **oss:** create bucket add quota param ([61da895](https://github.com/labring/laf/commit/61da8955bc0259d0c2b4743b9b1c90fbb7391ea7))\n* **oss:** create oss user for app; ([c33d7e2](https://github.com/labring/laf/commit/c33d7e276512d2dd98131031d83eab1ccd168e53))\n* **oss:** create oss user for app; ([caf2b37](https://github.com/labring/laf/commit/caf2b372838a27fbb4ebedf6c979f64fd72a5f03))\n* **oss:** impl file delete;fix bucket name rule; ([5d4f1b2](https://github.com/labring/laf/commit/5d4f1b2dd154cfe49f479cb42ac4b61939197966))\n* **oss:** impl oss external bucket url; ([4a43aa5](https://github.com/labring/laf/commit/4a43aa58658f028cbf0c7e287bb2197738ce4b39))\n* **oss:** impl oss files(upload/list); ([f1136c1](https://github.com/labring/laf/commit/f1136c1eb2ba1992e7ec949c5baaac39086e37d2))\n* **oss:** support upload folder ([a2049fb](https://github.com/labring/laf/commit/a2049fbad984c3698e209ba6254e4039ede9888f))\n* **replicate:** Feat. Impl replicate_requests page query and create ([8277ac1](https://github.com/labring/laf/commit/8277ac1aa5f28f6d65d7963274cbe8e12a7cd652))\n* **replicate:** Impl put replicas ([01dca0b](https://github.com/labring/laf/commit/01dca0b56c760b8fd038ced83c1ce81842b316aa))\n* **replicate:** impl replicate request ([0f6e3b0](https://github.com/labring/laf/commit/0f6e3b045aba37ce3b8c8627c3f35b5415bf62c9))\n* **replicate:** impl replicate_auth page ([6f24b70](https://github.com/labring/laf/commit/6f24b702e3948ebad1ae7618e46560461298596c))\n* support short appid(3 ~ 32) ([a85065a](https://github.com/labring/laf/commit/a85065a4ce02302ccb486e37381c33c17a012bae))\n* **sys:** init oss app policy; ([72d76fc](https://github.com/labring/laf/commit/72d76fc1c726fed08aca63bff23330fe162075f0))\n* **sys:** init oss app policy; ([e533b93](https://github.com/labring/laf/commit/e533b938fc9b406911be726c1cb4a9a0e5da0132))\n* **sys:** present app spec in client; ([458dc94](https://github.com/labring/laf/commit/458dc9482a472874f46a50e79cd3658029ff1754))\n* **sys:** support custom app id of SES ([78f8255](https://github.com/labring/laf/commit/78f82552f32d8047fac490ee2bf18c4455a1e948))\n* throttle to get file list; ([0dcb91a](https://github.com/labring/laf/commit/0dcb91aee438d33b17029e177e86b94d4ae5e2d0))\n* use shorter appid insteadof uuid; ([62eb55e](https://github.com/labring/laf/commit/62eb55ebd76814f3bcf1157189b592b332cadd5d))\n\n\n\n## [0.7.11](https://github.com/labring/laf/compare/v0.7.10...v0.7.11) (2022-04-27)\n\n\n### Bug Fixes\n\n* **client-sdk:** fix request api incompatible with uniapp new version ([f90e293](https://github.com/labring/laf/commit/f90e2933c9c6742f976760348e7c5a0657df5d36))\n* **deploy:** fix docker ignore of app-service ([ecbf75f](https://github.com/labring/laf/commit/ecbf75f36dd8185026799d8de47a83886bd2c8e0))\n\n\n\n## [0.7.10](https://github.com/labring/laf/compare/v0.7.9...v0.7.10) (2022-02-09)\n\n\n### Features\n\n* **app-service:** add npm install flags config; ([463daa6](https://github.com/labring/laf/commit/463daa6220b13c69619686090f86e70c43e8a0b0))\n\n\n\n## [0.7.9](https://github.com/labring/laf/compare/v0.7.8...v0.7.9) (2022-02-05)\n\n\n### Bug Fixes\n\n* **sys-server:** FATAL!  remove get app db conn with directConnection option ([4aa6f46](https://github.com/labring/laf/commit/4aa6f4656710efb673a0de65831c0872ec6438cb))\n\n\n\n## [0.7.8](https://github.com/labring/laf/compare/v0.7.7...v0.7.8) (2022-02-05)\n\n\n### Features\n\n* **sys-server:** add application template init support; ([1d96659](https://github.com/labring/laf/commit/1d96659f41735bf0d113e4dbb27203c7ba8c5efb))\n\n\n\n## [0.7.7](https://github.com/labring/laf/compare/v0.7.6...v0.7.7) (2022-02-02)\n\n\n### Bug Fixes\n\n* **app-service:** clean unused codes; remove cloud.storage() [#21](https://github.com/labring/laf/issues/21) ([c650bfe](https://github.com/labring/laf/commit/c650bfedef1df2258f68c2ad22aab1c8e403dd2d))\n* **fs:** add http accept range support; ([e21f391](https://github.com/labring/laf/commit/e21f391519cb65c871ff8a151f81c4f81ab2abbc))\n* **gateway:** remove client_max_body_size limit; ([514b10d](https://github.com/labring/laf/commit/514b10d97276d70daede1334f81bef19577c7692))\n* **sys-client:** optimize btn loading status ([b699558](https://github.com/labring/laf/commit/b699558ff07419eb4d428da84f73b14e5c2a2928))\n\n\n### Features\n\n* **gateway:** add /gw-health to gateway ([5109a41](https://github.com/labring/laf/commit/5109a4155f81ba69b9f6b3f5dbd1da16cae0896a))\n\n\n\n## [0.7.6](https://github.com/labring/laf/compare/v0.7.5...v0.7.6) (2022-02-01)\n\n\n### Features\n\n* **fs:** add /health-check to fs service; ([b3f313f](https://github.com/labring/laf/commit/b3f313f7665d5bafafd13cc52485c5b52e069107))\n* **gateway:** add gzip conf ([1b1e8d8](https://github.com/labring/laf/commit/1b1e8d8b909c0d7c1f55c851e6fe8bf7c1ee6c36))\n* **k8s:** add startupProbe & readinessProbe support to services; ([fa5e57c](https://github.com/labring/laf/commit/fa5e57c6e15a87e2a6f14b6613bd99ce85d25967))\n\n\n\n## [0.7.5](https://github.com/labring/laf/compare/v0.7.4...v0.7.5) (2022-01-31)\n\n\n### Bug Fixes\n\n* **gateway:** fix dns hot resolve in nginx conf for k8s ([72d4a6e](https://github.com/labring/laf/commit/72d4a6e362dabd0e832199dde85259d6cff3567a))\n\n\n### Features\n\n* **k8s:** support customize k8s namespace for apps; ([57135de](https://github.com/labring/laf/commit/57135ded0251c4f6d9a26bf3cab56fbe9ebe282d))\n* **k8s:** support k8s resources limit for app; ([ffe0e28](https://github.com/labring/laf/commit/ffe0e28adde1fb0b305bb5277ce13e3ea1cb20a2))\n\n\n\n## [0.7.4](https://github.com/labring/laf/compare/v0.7.3...v0.7.4) (2022-01-21)\n\n\n### Bug Fixes\n\n* **gateway:** fix conf path not created error ([97d2693](https://github.com/labring/laf/commit/97d2693eec1451d39a509131267cd327728466f3))\n\n\n\n## [0.7.3](https://github.com/labring/laf/compare/v0.7.2...v0.7.3) (2022-01-21)\n\n\n### Bug Fixes\n\n* **storage-service:** add content-length for download api; ([6601885](https://github.com/labring/laf/commit/6601885eede5bea930357f0142c6326c25217fc3))\n\n\n\n## [0.7.2](https://github.com/labring/laf/compare/v0.7.1...v0.7.2) (2022-01-21)\n\n\n### Bug Fixes\n\n* **gateway:** fix fs-proxy nginx conf [#35](https://github.com/labring/laf/issues/35) ([21efaab](https://github.com/labring/laf/commit/21efaab56494c3634cc2ad6d39d1ba3ec9b47c48))\n\n\n### Features\n\n* **gateway:** add k8s conf ; ([c5e68e8](https://github.com/labring/laf/commit/c5e68e8ae5c266b4c3593619810bd36432c69328))\n* **sys-server:** add k8s driver support; ([bb3923a](https://github.com/labring/laf/commit/bb3923a56e7e3e7c0f5fef217d2939cf0925ba0f))\n\n\n\n## [0.7.1](https://github.com/labring/laf/compare/v0.7.0...v0.7.1) (2022-01-17)\n\n\n### Bug Fixes\n\n* **app-console:** fix tsd parse missing while init editor ([b2818a0](https://github.com/labring/laf/commit/b2818a04da6588688622e0b11bdb9f8fca75402e))\n* **app-service:** fix cloud function unsafe log [#34](https://github.com/labring/laf/issues/34) ([ecab8bf](https://github.com/labring/laf/commit/ecab8bf9dd5cae9cd1933bf28bab5e68bc0335cd))\n* **gateway:** fix nginx conf support 4xx CORS; ([421b854](https://github.com/labring/laf/commit/421b85449ec49c0d2865c995a4aef8e6a54e8b3b))\n* **sys-server:** fix default path of system-extension-server.lapp ([72a55e3](https://github.com/labring/laf/commit/72a55e39f373235bc20e0296d51aa96aad063e70))\n* **sys-server:** fix memory overflow [#33](https://github.com/labring/laf/issues/33) ([0e1b321](https://github.com/labring/laf/commit/0e1b3215d4eeb2631cc69a3c313d618eb1b42fae))\n* **sys-server:** fix publish err when func or policy is empty ([c1d6e2a](https://github.com/labring/laf/commit/c1d6e2ac4e75a1205fa1479b547ed22b5079ffff))\n* **sys-server:** update system extension server app pkg; ([a96561e](https://github.com/labring/laf/commit/a96561ec4debcd894b242234d40f1b6630c5880c))\n\n\n\n# [0.7.0](https://github.com/labring/laf/compare/v0.6.23...v0.7.0) (2021-12-28)\n\n\n### Bug Fixes\n\n* **app-console:** fix route hook error; ([c638181](https://github.com/labring/laf/commit/c638181fb9a409f693048fa7f414b26533de94d3))\n* **app-service:** fix [#19](https://github.com/labring/laf/issues/19) watch error while mongo conn losed ([53a8aae](https://github.com/labring/laf/commit/53a8aae06e8039a29c99e52b2cdac37c4fcda906))\n* **app-service:** fix change stream reconnection while mongo connection losed ([fd8fcd5](https://github.com/labring/laf/commit/fd8fcd5e16d4b2e8c04fbf0c20b0aa22e08481fc))\n\n\n### Features\n\n* **client:** split client to system-client & app-console; ([3cc5c15](https://github.com/labring/laf/commit/3cc5c1503bb0183f24a354e5602e3fb7f9230a94))\n* **fs:** support standalone domain for fs bucket; ([66e9d7a](https://github.com/labring/laf/commit/66e9d7af480329d339973739324104cdc49c0a60))\n* **gateway:** add proxy config for sys extension api ([4a39c79](https://github.com/labring/laf/commit/4a39c799aff449624d91195230d453a85136a243))\n* **sys-client:** add sys-extension-api support for client; ([db33a72](https://github.com/labring/laf/commit/db33a725fd0011f0bb07e4965cbaf5f9cb1d9eb6))\n* **system:** add system server app; impl init system server app; ([6031918](https://github.com/labring/laf/commit/60319183318ea9e4aa700826cc05e0820ae2954d))\n\n\n\n## [0.6.23](https://github.com/labring/laf/compare/v0.6.22...v0.6.23) (2021-12-21)\n\n\n### Bug Fixes\n\n* **cloud-function:** fix ide error in unpublished function ([633a2b3](https://github.com/labring/laf/commit/633a2b3db1fb245740cb27fe256e1bbbcec1490f))\n* **node-modules-util:** fix ts type parsing error for 'alipay-sdk' ([d41dd21](https://github.com/labring/laf/commit/d41dd21ef53d5739a6177b326d63e3835bd2b7fb))\n\n\n### Features\n\n* **sys:** refactor export & import app, support app package; ([18a4a8a](https://github.com/labring/laf/commit/18a4a8ae6b50ac26d232c844eb0a3a2e543a86ce))\n\n\n\n## [0.6.22](https://github.com/labring/laf/compare/v0.6.21...v0.6.22) (2021-12-10)\n\n\n### Features\n\n* **cloud-function:** IDE support cache & restore editing codes in localstorage; ([c084624](https://github.com/labring/laf/commit/c08462448475ee3ecd9ec7991438736893e3d80d))\n\n\n\n## [0.6.21](https://github.com/labring/laf/compare/v0.6.20...v0.6.21) (2021-12-09)\n\n\n### Bug Fixes\n\n* **sys-server:** fix app collaborators' uid type to objectid; ([835bf20](https://github.com/labring/laf/commit/835bf20e3a6dade685ca23c8027019a416cb24e9))\n\n\n\n## [0.6.20](https://github.com/labring/laf/compare/v0.6.19...v0.6.20) (2021-12-07)\n\n\n### Bug Fixes\n\n* **app-service:** distinct & add runtime version & image; ([e2a6559](https://github.com/labring/laf/commit/e2a65596fe39d3cc1ba1f3d7c362ab36bc22ff39))\n* **gateway:** fix deploy/incoming CORS conf ([2911cc1](https://github.com/labring/laf/commit/2911cc1c3e8e54cee752dd987f2dff3e93214f30))\n* **sys-server:** fix func & policy date & objectid type ([83cfe78](https://github.com/labring/laf/commit/83cfe78802376a1f9050d3d3894dc80931c38eb7))\n* **sys-service:**  fix func id type to ObjectId; ([6ac01d8](https://github.com/labring/laf/commit/6ac01d8a5dcdd3f0d6a931b2848c2669d7fd4a07))\n* **type:** fix app & account date/objectid type; fix styles; ([8ba0761](https://github.com/labring/laf/commit/8ba0761ffd4f509ce1286312f1e71f0489f934aa))\n\n\n### Features\n\n* **app-service:** add appid & runtime version to app; ([57fa817](https://github.com/labring/laf/commit/57fa817c4dbf5855059663ba3a41b22f59404221))\n* **sys-client:** add func history & code diff editor; ([45a85e9](https://github.com/labring/laf/commit/45a85e94c5bf764002349f4f8ee7a210af98d672))\n\n\n\n## [0.6.19](https://github.com/labring/laf/compare/v0.6.18...v0.6.19) (2021-11-19)\n\n\n### Features\n\n* **docs:** add docs to gateway deploy; ([54e4ce4](https://github.com/labring/laf/commit/54e4ce4f205a7c3a8ac65e5a3be172ec852f860f))\n\n\n\n## [0.6.18](https://github.com/labring/laf/compare/v0.6.17...v0.6.18) (2021-11-17)\n\n\n### Bug Fixes\n\n* **gateway:** fix start shell, use exec to run; ([669354e](https://github.com/labring/laf/commit/669354e80daf5ea8df8fe8b997592dffb2620250))\n\n\n### Features\n\n* **app-service:** add start.sh to init packages on start; ([7d056cc](https://github.com/labring/laf/commit/7d056cc90560835c56fcfb3b9143aab2bcfedf30))\n* **app-service:** support gracefully exit; ([393caa2](https://github.com/labring/laf/commit/393caa21ccb55877473260dec971c0fc7026325e))\n* **sys:** support package manage in client; add pkg manage apis in sys; ([0f08fdd](https://github.com/labring/laf/commit/0f08fddd64aa5c47cca2ffb3df31286d81fc91ce))\n\n\n\n## [0.6.17](https://github.com/labring/laf/compare/v0.6.16...v0.6.17) (2021-11-15)\n\n\n### Bug Fixes\n\n* **fs:** fix pagination error @ get files; ([5d4563d](https://github.com/labring/laf/commit/5d4563d9bfe5d07b4a7452fc6e4dd5f29bda2c8f))\n* **sys-client:** fix styles for small screen; ([f7994ca](https://github.com/labring/laf/commit/f7994ca00afac52efb9762da2ca5e9e46b164a1d))\n\n\n\n## [0.6.16](https://github.com/labring/laf/compare/v0.6.15...v0.6.16) (2021-11-15)\n\n\n### Bug Fixes\n\n* **client-sdk:** fix old file upload api; ([25c9f58](https://github.com/labring/laf/commit/25c9f58417623d013604cb70230b5754488e2b21))\n* **fs:** fix to support auto naming for file uploads; ([dd743d0](https://github.com/labring/laf/commit/dd743d00edc036510e108ab3afdc707718658233))\n\n\n\n## [0.6.15](https://github.com/labring/laf/compare/v0.6.14...v0.6.15) (2021-11-15)\n\n\n### Bug Fixes\n\n* **storage-service:** fix chinese file name error; ([31abf59](https://github.com/labring/laf/commit/31abf59378c1fa64d4c12834c028a949d396a5c2))\n\n\n\n## [0.6.14](https://github.com/labring/laf/compare/v0.6.13...v0.6.14) (2021-11-15)\n\n\n### Features\n\n* **app-service:** add alipay-sdk built-in; ([563f005](https://github.com/labring/laf/commit/563f005e9069033e07d80881ecc6ef2ea11c792e))\n* **storage-service:** use storage-service, replace old fs; ([ad73e90](https://github.com/labring/laf/commit/ad73e90d21b4de1f337f6298332f235d35ff7342))\n\n\n\n## [0.6.13](https://github.com/labring/laf/compare/v0.6.12...v0.6.13) (2021-11-12)\n\n\n### Features\n\n* **app-service:** remove CORS in app; ([3e29e95](https://github.com/labring/laf/commit/3e29e958330892b3124ca3ca7203f6ebd5f8a590))\n* **gateway:** add gateway service; ([2b1debe](https://github.com/labring/laf/commit/2b1debe9128b86c18961bddc593427307b0a5b5c))\n* **sys-client:** remove api-app proxy; add runtime version & memory ([5063b2e](https://github.com/labring/laf/commit/5063b2e48a4291b6a73d9bd25c2172b49ddae158))\n\n\n\n## [0.6.12](https://github.com/labring/laf/compare/v0.6.11...v0.6.12) (2021-11-09)\n\n\n### Bug Fixes\n\n* **sys-client:** fix ide type declaration error ([a238584](https://github.com/labring/laf/commit/a23858468068ecd2619a98232e4046c77a1ead77))\n\n\n\n## [0.6.11](https://github.com/labring/laf/compare/v0.6.10...v0.6.11) (2021-11-09)\n\n\n### Bug Fixes\n\n* **app-service:** fix require in cloud function fatal error ([1c12af5](https://github.com/labring/laf/commit/1c12af5260514322688a4707ec8ce91aa493dbc4))\n* **nginx:** fix nginx config; ([ca2a391](https://github.com/labring/laf/commit/ca2a39132cac8d26400b80c75c3bf067a5ce5427))\n\n\n### Features\n\n* **websocket:** support websocket in app-service; ([025dd39](https://github.com/labring/laf/commit/025dd3910e9832c8ccc9863333dbcdd0acc2439e))\n\n\n\n## [0.6.10](https://github.com/labring/laf/compare/v0.6.9...v0.6.10) (2021-11-05)\n\n\n### Bug Fixes\n\n* **app-service:** fix bson serialize func log error; ([5f0fa95](https://github.com/labring/laf/commit/5f0fa95fe5c3b0adfd6b5a380aebbc94e86929d2))\n* **app-service:** fix func_id type to ObjectId ([8edecc8](https://github.com/labring/laf/commit/8edecc8026a0629e8cfc7510b70fa3dd80f8bf9e))\n\n\n\n## [0.6.9](https://github.com/labring/laf/compare/v0.6.8...v0.6.9) (2021-11-04)\n\n\n### Bug Fixes\n\n* **cloud-function:** close `microtaskMode` option which cause fatal error ([963da1f](https://github.com/labring/laf/commit/963da1f23120ea4985ba3a595b239e119a0aae72))\n\n\n\n## [0.6.8](https://github.com/labring/laf/compare/v0.6.7...v0.6.8) (2021-11-04)\n\n\n### Bug Fixes\n\n* **sys-client:** update navigation logics; ([b68df36](https://github.com/labring/laf/commit/b68df362f8864a6c369f9e4e74725d737edd0cee))\n\n\n### Features\n\n* **cloud-function:** add unit tests for function engine; ([40a9ae8](https://github.com/labring/laf/commit/40a9ae838932b147c367b2a34f2cdb252aae2c13))\n* **cloud-function:** support async timeout/globals/sync main/filename; ([e5ecf6d](https://github.com/labring/laf/commit/e5ecf6d12e83593aa14e66442add2e7dc0312bd0))\n\n\n\n## [0.6.7](https://github.com/labring/laf/compare/v0.6.6...v0.6.7) (2021-11-03)\n\n\n### Bug Fixes\n\n* **app-service:** fix invoke() function return type; ([edd1f8a](https://github.com/labring/laf/commit/edd1f8a7cd79e344f97da928d2ebc9b9bc30762a))\n\n\n\n## [0.6.6](https://github.com/labring/laf/compare/v0.6.5...v0.6.6) (2021-11-03)\n\n\n### Bug Fixes\n\n* **app-service:** fix uncaught promise rejected in cloud function, cause that process exit ([250a9e6](https://github.com/labring/laf/commit/250a9e605cb885a0372b2f59d98c1228c77f0059))\n\n\n### Features\n\n* **function:** support TTL indexes on logs; support number as return value; support result in log; ([fa82cb4](https://github.com/labring/laf/commit/fa82cb4c00324bae0f8b0518ec3883b912aa0f11))\n\n\n\n## [0.6.5](https://github.com/labring/laf/compare/v0.6.4...v0.6.5) (2021-11-02)\n\n\n### Features\n\n* **cloud-func:** support unpublished func debugging ([61b8f9d](https://github.com/labring/laf/commit/61b8f9d53a5f7e0276ae6e850797376c73e1b2f4))\n* **sys-client:** add some copy-btns; optimize ux exp; ([91ff431](https://github.com/labring/laf/commit/91ff431a6e8d84619a32a534e2a77fe9fd25d5d9))\n* **sys-server:** add local dev/debug config for app-service; ([83877a7](https://github.com/labring/laf/commit/83877a746553bccba1ab6044955ce5e9760db7f4))\n* **sys:** support func version; add save status in ide; ([2df7e05](https://github.com/labring/laf/commit/2df7e05ecf308ed83f39f1d5d751244a12dd9cc1))\n* **sys:** support publish single function; ([f67962b](https://github.com/labring/laf/commit/f67962bf9b1d0ed59cb00c88978a5a8c8e3eb9aa))\n\n\n\n## [0.6.4](https://github.com/labring/laf/compare/v0.6.3...v0.6.4) (2021-11-01)\n\n\n### Bug Fixes\n\n* **app-service:** auto create internal pkg; ([543052b](https://github.com/labring/laf/commit/543052b7b90d13b63019e1d861c72148aa73a2f6))\n* **style:** 修改名称展示bug ([b715eb4](https://github.com/labring/laf/commit/b715eb43b31efe61c2a2c3d8512313092372bce0))\n\n\n### Features\n\n* **sys-client:** start app while created; ([2308451](https://github.com/labring/laf/commit/23084517c6dbc4cd78637f975ddab5f94be31af9))\n* **sys-server:** add runtime metrics to app; ([a69ed61](https://github.com/labring/laf/commit/a69ed618893607fefa02a8a90f7731b019663f91))\n\n\n\n## [0.6.3](https://github.com/labring/laf/compare/v0.6.2...v0.6.3) (2021-10-23)\n\n\n### Bug Fixes\n\n* **sys-client:** optimize function editor height; ([d5d02de](https://github.com/labring/laf/commit/d5d02deb3d38ad22159e8d879c42ac89d2d78986))\n\n\n\n## [0.6.2](https://github.com/labring/laf/compare/v0.6.1...v0.6.2) (2021-10-20)\n\n\n### Bug Fixes\n\n* **db-ql:** fix result-types error; ([71f6ee8](https://github.com/labring/laf/commit/71f6ee81bc71914c09e2bf3f55d2434fca5f535a))\n\n\n\n## [0.6.1](https://github.com/labring/laf/compare/v0.6.0...v0.6.1) (2021-10-20)\n\n\n### Bug Fixes\n\n* **db-ql:** fix remove() fatal error; ([0d64aa7](https://github.com/labring/laf/commit/0d64aa74a06151549c21298d5dad685d77db71f8))\n* **sys-client:** fix dbm update merge with true -> false ([858a71f](https://github.com/labring/laf/commit/858a71ffd0cd9d37e764a61f9143f700f58d0d59))\n\n\n\n# [0.6.0](https://github.com/labring/laf/compare/v0.6.0-alpha.10...v0.6.0) (2021-10-20)\n\n\n\n# [0.6.0-alpha.10](https://github.com/labring/laf/compare/v0.6.0-alpha.9...v0.6.0-alpha.10) (2021-10-19)\n\n\n### Bug Fixes\n\n* **system:** fix rule update error; ([d825931](https://github.com/labring/laf/commit/d825931ba868df806f1429555795217ee1f1cbe4))\n\n\n\n# [0.6.0-alpha.9](https://github.com/labring/laf/compare/v0.6.0-alpha.8...v0.6.0-alpha.9) (2021-10-19)\n\n\n### Bug Fixes\n\n* **db-ql:** fix ejson deserialize error in aggregation ([832e99a](https://github.com/labring/laf/commit/832e99a9ac2c258ac95c83868c573fda0845f89e))\n\n\n\n# [0.6.0-alpha.8](https://github.com/labring/laf/compare/v0.6.0-alpha.7...v0.6.0-alpha.8) (2021-10-19)\n\n\n### Bug Fixes\n\n* **db-ql:** fix binary object serialize bug ([5c28d8d](https://github.com/labring/laf/commit/5c28d8d2a1ac63524703e28f6ce34150971d92e8))\n* **sys-client:** fix dbm update serialize error ([536fe94](https://github.com/labring/laf/commit/536fe94911c85e609739c541642cfcb8ad21f3df))\n\n\n### Features\n\n* **db-proxy:** add aggregation support; ([fbcccea](https://github.com/labring/laf/commit/fbcccea89976434ea10e053c5f122c6ee7defb68))\n* **db-proxy:** add count option to read operation ([e7545ca](https://github.com/labring/laf/commit/e7545ca1274e96ed1f078f42105d0267d3f73086))\n* **db-proxy:** remove deprecated api: ruler, rulerv1, tests, entry; ([4be2479](https://github.com/labring/laf/commit/4be2479db89d06834c269d6512aa2315db929062))\n* **db-ql:** add aggregate() feat & tests; ([efce38a](https://github.com/labring/laf/commit/efce38ade563d170fdf3132eb9303e740ae9a613))\n* **db-ql:** add page & count options for query ([1ecc32d](https://github.com/labring/laf/commit/1ecc32da246e058dbb11ad85a1644d8f9b73d5af))\n* **db-ql:** add page() method ([1148e4a](https://github.com/labring/laf/commit/1148e4ac8c3b073af6e98d9a79fae5966d4aa87a))\n* **db-ql:** add update unit tests; ([aefd260](https://github.com/labring/laf/commit/aefd260ad2563984071f2592c390953268afe761))\n* **db-ql:** refactor query & document api impl; ([dbeb55a](https://github.com/labring/laf/commit/dbeb55a596b253f99de558bc6377a4fecfba5d3d))\n* **test:** add doc() unit tests; ([0481a8c](https://github.com/labring/laf/commit/0481a8c8fdbc9f76f2ef82a22e50ce7f1e715c29))\n\n\n\n# [0.6.0-alpha.7](https://github.com/labring/laf/compare/v0.6.0-alpha.6...v0.6.0-alpha.7) (2021-10-15)\n\n\n### Features\n\n* **db-proxy:** impl ejson for mongo; ([52ef727](https://github.com/labring/laf/commit/52ef727051885045ad56873675bf726fcb1beb97))\n* **db-ql:** add ejson support; add ObjectId & Binary support; ([4471e6f](https://github.com/labring/laf/commit/4471e6f30e75a3526e7af952eecc263b9bfcd2c2))\n* **db-ql:** mark serverDate regexp as deprecated ([be9eb27](https://github.com/labring/laf/commit/be9eb272145da03713391da7be89beceb8e8b5cf))\n* **sys-client:** add ejson ObjectId & Binaray type support to dbm; ([0097910](https://github.com/labring/laf/commit/0097910cb228aafcb4e8587d2b29f33de1a39b82))\n\n\n\n# [0.6.0-alpha.6](https://github.com/labring/laf/compare/v0.6.0-alpha.5...v0.6.0-alpha.6) (2021-10-14)\n\n\n### Bug Fixes\n\n* **sys-client:** dbm - update doc error catch ([d1babbc](https://github.com/labring/laf/commit/d1babbc00b53e2ae91c90e4601ce6a5ce77a0c24))\n\n\n\n# [0.6.0-alpha.5](https://github.com/labring/laf/compare/v0.6.0-alpha.4...v0.6.0-alpha.5) (2021-10-14)\n\n\n### Bug Fixes\n\n* **db-ql:** restore the code field in query result ([decaeec](https://github.com/labring/laf/commit/decaeece27f872637ff9cd37d2880c39d6328f20))\n\n\n### Features\n\n* **dbm:** impl db schema; impl create db; ([2f29bfd](https://github.com/labring/laf/commit/2f29bfd0849d488ff1997c769b8d6301cd8ceb50))\n\n\n\n# [0.6.0-alpha.4](https://github.com/labring/laf/compare/v0.6.0-alpha.3...v0.6.0-alpha.4) (2021-10-07)\n\n\n### Bug Fixes\n\n* **db-proxy:** remove stale objectid logic ([56ba516](https://github.com/labring/laf/commit/56ba5163899d14fd2c96701eac7875bb67644fa7))\n* **db-ql:** remove res data format ([8064384](https://github.com/labring/laf/commit/806438429b6fc4eb75ca67194496cfd39aeaa438))\n\n\n### Features\n\n* **sys-server:** rewrite all db orm in sys server, use mongo db api instead ([2c54c05](https://github.com/labring/laf/commit/2c54c05a8885a69733bc70b021e05f6a98dbe3e6))\n\n\n\n# [0.6.0-alpha.3](https://github.com/labring/laf/compare/v0.6.0-alpha.2...v0.6.0-alpha.3) (2021-10-07)\n\n\n### Bug Fixes\n\n* **sys-server:** fix ACCOUNT_DEFAULT_APP_QUOTA's type ([ffb2d08](https://github.com/labring/laf/commit/ffb2d085696f462cd07da837e69c97d065bfbdc3))\n\n\n### Features\n\n* **db-proxy:** abandon ObjectId type support use string instead ([b97066a](https://github.com/labring/laf/commit/b97066a28e21177ccfcc488368b08ed1f9bb2399))\n* **db-ql:** add generate string id support ([7f01d5d](https://github.com/labring/laf/commit/7f01d5d6ea5b51663630b682f72efcee31a5f3d6))\n\n\n\n# [0.6.0-alpha.2](https://github.com/labring/laf/compare/v0.6.0-alpha.1...v0.6.0-alpha.2) (2021-10-06)\n\n\n### Bug Fixes\n\n* **sys-client:** fix function editor default types loading ([b411785](https://github.com/labring/laf/commit/b41178589f65082b502efbbbbb3c419169d5ea48))\n\n\n\n# [0.6.0-alpha.1](https://github.com/labring/laf/compare/v0.6.0-alpha.0...v0.6.0-alpha.1) (2021-10-06)\n\n\n### Bug Fixes\n\n* **app-service:** fix uuid gen error; ([d7ecd76](https://github.com/labring/laf/commit/d7ecd76abff9dc02ba9b6c77524ff7f2e5d63918))\n\n\n\n# [0.6.0-alpha.0](https://github.com/labring/laf/compare/v0.5.8-alpha.0...v0.6.0-alpha.0) (2021-10-06)\n\n\n### Bug Fixes\n\n* use db distinct to refact tags retreiving ([abf40ce](https://github.com/labring/laf/commit/abf40cec603e9fce17c3161e79e760e0c6b56eae))\n\n\n### Performance Improvements\n\n* **memory:** remove ts pkg (compile) to reduce 20mb memory useage; ([67b36c4](https://github.com/labring/laf/commit/67b36c42a1eceb41fa364e69ff109fe7ab3ae877))\n\n\n\n## [0.5.8-alpha.0](https://github.com/labring/laf/compare/v0.5.7...v0.5.8-alpha.0) (2021-09-28)\n\n\n### Bug Fixes\n\n* **sys server:** fix mongo version in deploys; fix regexp options error; ([35c4ce6](https://github.com/labring/laf/commit/35c4ce65f1167249513ccbee6cd84a48f520abd2))\n\n\n\n## [0.5.7](https://github.com/labring/laf/compare/v0.5.7-alpha.0...v0.5.7) (2021-09-26)\n\n\n### Bug Fixes\n\n* **sys server:** fix body limit 413; ([488fc9e](https://github.com/labring/laf/commit/488fc9ef5cc0efa0f20ea371b68e14727582487f))\n\n\n\n## [0.5.7-alpha.0](https://github.com/labring/laf/compare/v0.5.6...v0.5.7-alpha.0) (2021-09-22)\n\n\n### Bug Fixes\n\n* **sys server:** fix missing query params for func logs fetch api; ([c9b8a75](https://github.com/labring/laf/commit/c9b8a7533f876abd25bd39b522b9e95fd942e877))\n\n\n\n## [0.5.6](https://github.com/labring/laf/compare/v0.5.5...v0.5.6) (2021-09-22)\n\n\n### Bug Fixes\n\n* **sys server:** fix get tags missing appid; ([164fc85](https://github.com/labring/laf/commit/164fc85a43d4e9047b5631a3485db7dbfbd20a0b))\n\n\n\n## [0.5.5](https://github.com/labring/laf/compare/v0.5.5-alpha.0...v0.5.5) (2021-09-17)\n\n\n### Bug Fixes\n\n* **https:** add url schema to sys server config; support ssl depoy; ([296272a](https://github.com/labring/laf/commit/296272ae660567354dda4fc90afb6aaab87d2be2))\n\n\n\n## [0.5.5-alpha.0](https://github.com/labring/laf/compare/v0.5.4...v0.5.5-alpha.0) (2021-09-15)\n\n\n### Bug Fixes\n\n* **app-service:** fix function invoke 404 error; ([030acae](https://github.com/labring/laf/commit/030acaefdcb954347b6294b4ff0141c6389f529a))\n* **config:** fix deploy-scripts:docker-compose ([460487e](https://github.com/labring/laf/commit/460487ef115a91a368e4b3957f16149deed75ec7))\n\n\n\n## [0.5.4](https://github.com/labring/laf/compare/v0.5.4-alpha.0...v0.5.4) (2021-09-15)\n\n\n### Bug Fixes\n\n* **system-client:** fix debug function result output; ([f467003](https://github.com/labring/laf/commit/f467003e39c5043949bdbcec4a339b17ccbb6d07))\n\n\n\n## [0.5.4-alpha.0](https://github.com/labring/laf/compare/v0.5.3...v0.5.4-alpha.0) (2021-09-13)\n\n\n### Features\n\n* **cloudfunction:** export response object to function; refactor invoke result, directly return what function return; ([902edb4](https://github.com/labring/laf/commit/902edb4515a998f3c96db87d7a827eae82b11950))\n\n\n\n## [0.5.3](https://github.com/labring/laf/compare/v0.5.2...v0.5.3) (2021-09-13)\n\n\n### Bug Fixes\n\n* **app-server:** fix trigger invoking bug, func_id type error ([1ff8b51](https://github.com/labring/laf/commit/1ff8b510ba9351cee1e5a77206dc0746fbba58fe))\n\n\n\n## [0.5.2](https://github.com/labring/laf/compare/v0.5.2-alpha.0...v0.5.2) (2021-09-10)\n\n\n### Bug Fixes\n\n* **sys-server:** fix remote deploy got duplicated error, dropped func/policy _id; ([1da03a9](https://github.com/labring/laf/commit/1da03a9ad527620cdde900700a515e0ae49c704d))\n\n\n\n## [0.5.2-alpha.0](https://github.com/labring/laf/compare/v0.5.1...v0.5.2-alpha.0) (2021-09-10)\n\n\n### Bug Fixes\n\n* **sys-server:** fix remote deploy token check message; ([e4cc3d3](https://github.com/labring/laf/commit/e4cc3d36fc00978231cabccb263211e3ec75055a))\n\n\n### Features\n\n* **sys-client:** add app access url to func/deploy/policy/file pages; ([21ca41e](https://github.com/labring/laf/commit/21ca41e9f59cd8f696f1fea489ad58f8599fbdef))\n\n\n\n## [0.5.1](https://github.com/labring/laf/compare/v0.5.1-alpha.0...v0.5.1) (2021-09-10)\n\n\n\n## [0.5.1-alpha.0](https://github.com/labring/laf/compare/v0.5.0...v0.5.1-alpha.0) (2021-09-10)\n\n\n### Bug Fixes\n\n* **deploy:** IMPORTANT!fix deploy apply bugs(missing appid); ([41ddbfb](https://github.com/labring/laf/commit/41ddbfb87d5374322fef9b24c612c554741916e3))\n\n\n\n# [0.5.0](https://github.com/labring/laf/compare/v0.5.0-alpha.3...v0.5.0) (2021-09-09)\n\n\n### Bug Fixes\n\n* **sys-client:** fix func tags list; add owner role; ([152d195](https://github.com/labring/laf/commit/152d195153644d3b098680dd9f109ebb6057dc75))\n* **sys-server:** add exportor script for old init datas; ([9f1ae71](https://github.com/labring/laf/commit/9f1ae713e4d6d382f531ea683deb2f9e59834df9))\n* **sys-server:** add owner role to app; impl get tags of func api; ([5afecf9](https://github.com/labring/laf/commit/5afecf9425f4501871812b80c6ee72ec22e99284))\n\n\n### Features\n\n* **app-service:** refactor trigger getter, publish; ([4f1deac](https://github.com/labring/laf/commit/4f1deac7301208a60e6ad525e0e9f481f80107a7))\n\n\n\n# [0.5.0-alpha.3](https://github.com/labring/laf/compare/v0.5.0-alpha.2...v0.5.0-alpha.3) (2021-09-09)\n\n\n### Features\n\n* **sys-client:** impl import/export app; ([5ec26ef](https://github.com/labring/laf/commit/5ec26ef4584e1a9c8f48f89cf1749f91b92d8a93))\n* **sys-server:** impl im/export apis; ([10d651b](https://github.com/labring/laf/commit/10d651bde81133754d45af015b6e6c8d28951817))\n* **sys:** impl delete app api & page ([7dd294c](https://github.com/labring/laf/commit/7dd294c58ab622ec8304ca8a458b5df21af06f1c))\n\n\n\n# [0.5.0-alpha.2](https://github.com/labring/laf/compare/v0.5.0-alpha.1...v0.5.0-alpha.2) (2021-09-08)\n\n\n### Bug Fixes\n\n* **sys-client:** add 403 permission tip; ([d845356](https://github.com/labring/laf/commit/d845356dcae276808842248f810ac2cc9e504183))\n* **sys-client:** fix error in debug function; ([cab5747](https://github.com/labring/laf/commit/cab5747089d518f807708e469b4f6f5defc51db3))\n* **sys-client:** fix nav styles & user state; ([4885ecd](https://github.com/labring/laf/commit/4885ecdffcd449a7501485bae1675886b6432686))\n* **sys-client:** fix styles & add util function(show) ([7809903](https://github.com/labring/laf/commit/78099030f846d74ca2b6ab7fe4a3dae465d3185b))\n\n\n### Features\n\n* **sys client:** add joined app list ([4587bc7](https://github.com/labring/laf/commit/4587bc7c0239da326c02e500e9a445e5df6442df))\n* **sys-client:** impl collaborate crud page ([10ca68f](https://github.com/labring/laf/commit/10ca68f2f4da75e4b749aade445c0a790bd6f063))\n* **sys-client:** impl remove app service; ([b0c8634](https://github.com/labring/laf/commit/b0c863406d73bfcc70664110d72d98a90d53aff7))\n* **sys-server:** add array util functions; ([b91ba2b](https://github.com/labring/laf/commit/b91ba2b9a9957adddab4cb414213f0c22a74c01b))\n* **sys-server:** add max_old_space_size of node vm config; ([5275071](https://github.com/labring/laf/commit/527507159dba9c2bcd8d1821fa2d5a8b4ba1b7ad))\n* **sys-server:** add remove app service api; ([6942fa5](https://github.com/labring/laf/commit/6942fa54b4bcaf0ef2cf80c9e58d19ae50a4fb00))\n* **system-server:** add app collaborator crud apis; ([2789b0d](https://github.com/labring/laf/commit/2789b0d191c183d7ade53bc69c7bde1c7dd5ea40))\n\n\n\n# [0.5.0-alpha.1](https://github.com/labring/laf/compare/v0.5.0-alpha.0...v0.5.0-alpha.1) (2021-09-07)\n\n\n### Bug Fixes\n\n* **error:** fix error in devops init script; ([ba310cc](https://github.com/labring/laf/commit/ba310cce62f26e78448e5bb95c86d3e6a7c3d496))\n\n\n### Features\n\n* **system-server:** add quota to limit app creating ([77e98db](https://github.com/labring/laf/commit/77e98dbc99ae4b94b00767eec67cf1b7016ac2e3))\n\n\n\n# [0.5.0-alpha.0](https://github.com/labring/laf/compare/v0.4.21-alpha.0...v0.5.0-alpha.0) (2021-09-06)\n\n\n### Bug Fixes\n\n* **server-client:** add dynamic router hook ([a4a3923](https://github.com/labring/laf/commit/a4a3923125a6b5ed722f2c6415760e88ed22696d))\n* **server-client:** update appid instead app._id ([0aa9288](https://github.com/labring/laf/commit/0aa92883706d56981c4fe365e0134b4be598586c))\n* **sys-client:** fix files api; ([7ed35d9](https://github.com/labring/laf/commit/7ed35d9db543e1d0949ad3b92141855136d654a5))\n* **system-client:** fix `remove function` feat; ([5c18d15](https://github.com/labring/laf/commit/5c18d154dd267dc6ec4c976f51f798ff815f1399))\n* **system-client:** fix app api url access; ([348ca7e](https://github.com/labring/laf/commit/348ca7e2cf6140af44e81053d498d612fca66a7c))\n* **system-client:** fix dbm pages; ([e0f44da](https://github.com/labring/laf/commit/e0f44dab40558d12f11dc59423152aef8d5fa3e1))\n* **system-client:** fix pagination error; ([308ad8a](https://github.com/labring/laf/commit/308ad8aecc451f6730e6c1a79786873b3d2949ec))\n* **system-client:** fix policy rules CRUD feats; ([44a4dbd](https://github.com/labring/laf/commit/44a4dbd917a471a448ad288ef374d87f20ab7072))\n* **system-client:** fix the function updating pages; ([49fd049](https://github.com/labring/laf/commit/49fd049d948700bd9634534ddea927af364e2161))\n* **system-server:** add appid to applications; ([f1bc2e2](https://github.com/labring/laf/commit/f1bc2e220cb5140abfa03580c8cf452bd0667e0d))\n* **system-server:** fix get function error; ([ea20a61](https://github.com/labring/laf/commit/ea20a61eec587c54a3ed37a03e2f98ebdcf09d03))\n* **system-server:** little fixes; ([be71012](https://github.com/labring/laf/commit/be7101299592c2ff7678a34e83c1020861aab307))\n* **system:** fix trigger CRUD pages; ([00cd4bb](https://github.com/labring/laf/commit/00cd4bbd893e35bb573e3580d4bcd6f047a9c057))\n\n\n### Features\n\n* **server-client:** add app to vuex store; ([3abeb9d](https://github.com/labring/laf/commit/3abeb9d08fdc92f5f45f8384d18f9ad18decf09c))\n* **server-client:** impl apps & functions pages; ([fe4ae60](https://github.com/labring/laf/commit/fe4ae6050a5c8d105e074ad04736e83b296c328c))\n* **server-client:** impl dynamic router for app ([0f7f74d](https://github.com/labring/laf/commit/0f7f74d480cd1b334fd227c2c1b1d1baa7cb4b26))\n* **server-client:** impl layout for app ([9d973f0](https://github.com/labring/laf/commit/9d973f08ad182e5d2518f3ce3cf5945f4074a8f7))\n* **sys-client:** add sign up page; ([8222387](https://github.com/labring/laf/commit/822238705924a50712edc638a92801f610ebbdf1))\n* **system-client:** add application user apis ([0883253](https://github.com/labring/laf/commit/08832536cd90a8fb81566b40238c1a3116f1de80))\n* **system-client:** impl app service start & stop; ([f28d199](https://github.com/labring/laf/commit/f28d199f60381ed7972712436e2326a08365504c))\n* **system-client:** impl application & sign in/up pages; ([3bbb30f](https://github.com/labring/laf/commit/3bbb30f5afe87cd9b492995ca77278b78f047464))\n* **system-client:** impl new navbar ([1fbf8cd](https://github.com/labring/laf/commit/1fbf8cd8ed725216f3460fb62f6512aef9d68276))\n* **system-client:** impl remote deploy pages; ([8dee4e5](https://github.com/labring/laf/commit/8dee4e5f64e614d48e8603d565f532ee74c4bbf0))\n* **system-server:** add account apis; ([664458e](https://github.com/labring/laf/commit/664458edd8b1322b0f748bb9494e30a16a1a1787))\n* **system-server:** add app service docker driver; ([adfb27d](https://github.com/labring/laf/commit/adfb27d16bb9d8b1b6f32a3f07635462a5a03b79))\n* **system-server:** add app service image config; ([0f770ab](https://github.com/labring/laf/commit/0f770abfec03af8b62961378d55fb29090154e3e))\n* **system-server:** add app service start & stop router; ([c71f362](https://github.com/labring/laf/commit/c71f362a6a56026c5186e97bb17014e490983a03))\n* **system-server:** add app update apis; ([5c674f3](https://github.com/labring/laf/commit/5c674f39f9b31fcb2595dc51012cbc0c0cfbacdf))\n* **system-server:** add policy CRUD routers; ([8456aab](https://github.com/labring/laf/commit/8456aab0ee8073ea99d53ea39706eb84a5c47ce3))\n* **system-server:** add policy rules routes; ([4f33276](https://github.com/labring/laf/commit/4f33276e928b5a65cecb9e6271d4584d13acd507))\n* **system-server:** add remote deploy routes; ([7fbb75e](https://github.com/labring/laf/commit/7fbb75e82157d0cd0afc4100cdc04c2bac88bf41))\n* **system-server:** add system-server built-in roles & permissions; ([d8794b9](https://github.com/labring/laf/commit/d8794b90db416db1a8a2ecf59f5d25072cbbfcce))\n* **system-server:** add update function apis; ([834915a](https://github.com/labring/laf/commit/834915a94326674f1fbbab034418c5ab12fe5d10))\n* **system-server:** create system server package; ([508c76e](https://github.com/labring/laf/commit/508c76e5be4a2b4ca1d643c89860b80a36063b9e))\n* **system-server:** impl application & account apis; ([c5d6bc0](https://github.com/labring/laf/commit/c5d6bc0694e2ff6dcf479d09810b53b538d68ad9))\n* **system-server:** refactor db agent; ([a2e9a6c](https://github.com/labring/laf/commit/a2e9a6ce1e483fc1c6d626169c850f5e2ec37862))\n* **system-server:** refactor system server apis, support appid; ([446740f](https://github.com/labring/laf/commit/446740f742ea519614cb78b7707edd57abc171c8))\n* **system:** add debug token & file token; fix debug & file feat; ([d6eea7a](https://github.com/labring/laf/commit/d6eea7aba3f6d1c47f64b90ffe489684a7631846))\n* **system:** impl functin logs api & pages; ([b11e17e](https://github.com/labring/laf/commit/b11e17e58fafdbbc544e2daf1a1332a3b4cf0130))\n\n\n\n## [0.4.21-alpha.0](https://github.com/labring/laf/compare/v0.4.20...v0.4.21-alpha.0) (2021-08-24)\n\n\n### Bug Fixes\n\n* **config:** IMPORTANT!docker-compose mongo db volume config error; ([2538d65](https://github.com/labring/laf/commit/2538d65d595bd9376ddb4c948b262a4e148ce20d))\n* **secure:** fix upload file secure problem [#1](https://github.com/labring/laf/issues/1) ([02caa37](https://github.com/labring/laf/commit/02caa3755f8129b2f2ff4c6d5a8fe8cd3a0365f0))\n\n\n\n## [0.4.20](https://github.com/labring/laf/compare/v0.4.19...v0.4.20) (2021-08-18)\n\n\n### Features\n\n* **app-server:** add gridfs-storage; ([d393f6c](https://github.com/labring/laf/commit/d393f6cd57385dee4ef8c8a3ad52cbc8223a8e12))\n* **app-server:** expose gridfs storage api to cloud-sdk; ([ece5dd4](https://github.com/labring/laf/commit/ece5dd4f14f8a66cfef2064aef86d20765d5e8e3))\n\n\n\n## [0.4.19](https://github.com/labring/laf/compare/v0.4.18...v0.4.19) (2021-08-18)\n\n\n### Features\n\n* impl file upload in devops-admin; ([f3b383a](https://github.com/labring/laf/commit/f3b383a89df494ddd265c8c77eb7b681be1a5f02))\n\n\n\n## [0.4.18](https://github.com/labring/laf/compare/v0.4.17...v0.4.18) (2021-08-17)\n\n\n### Bug Fixes\n\n* **app-server:** fix file upload token parsing error; ([aa7368e](https://github.com/labring/laf/commit/aa7368e79d8d9118e189dc3ee2834305f053407d))\n\n\n### Features\n\n* **app-server:** add filename field to file operation token; ([68f25ef](https://github.com/labring/laf/commit/68f25ef09a1c3d7a2001ecf55850aef4584ce338))\n* **app-server:** impl start.ts to support cluster process manage; ([64b2a74](https://github.com/labring/laf/commit/64b2a74a3995b44e7c9353882ff7ca52da9d3737))\n* **devops-server:** add file operation api; ([e1221c6](https://github.com/labring/laf/commit/e1221c67e727681b00a997534e50ba85823582c6))\n* **devops:** impl file managing in devops admin & server ([8e8aef4](https://github.com/labring/laf/commit/8e8aef475eafffc29aae04d055d3e3e73a1dd3ef))\n\n\n\n## [0.4.17](https://github.com/labring/laf/compare/v0.4.16...v0.4.17) (2021-08-16)\n\n\n### Bug Fixes\n\n* 修复获取依赖包类型接口报错无捕获； ([43582a5](https://github.com/labring/laf/commit/43582a5697cb1a7c524798efe5779e80b034c5fb))\n* add node package `util` support; ([be9c373](https://github.com/labring/laf/commit/be9c373b2505ae34d3ed8a4186d0d279403be745))\n\n\n### Features\n\n* **app-server:** add cache-control & etag of http request for gridfs files; ([acc3c44](https://github.com/labring/laf/commit/acc3c440afc55c3666c0bca0661daf9f54bb2fd9))\n* **devops-adin:** 优化访问策略编辑页的交互体验、修复修改访问策略时的错误； ([759fe32](https://github.com/labring/laf/commit/759fe32c7f679274a660d47f27c62ceb6356e875))\n\n\n\n## [0.4.16](https://github.com/labring/laf/compare/v0.4.15...v0.4.16) (2021-08-13)\n\n\n### Features\n\n* 新增 GridFS 文件存储方式； ([0ddc915](https://github.com/labring/laf/commit/0ddc9151a437fe7be17c5eae972a0786a6966c38))\n\n\n\n## [0.4.15](https://github.com/labring/laf/compare/v0.4.14...v0.4.15) (2021-08-10)\n\n\n### Bug Fixes\n\n* **devops-admin:** 新增 @types/node 为默认加载类型包以增强提示； ([d282522](https://github.com/labring/laf/commit/d282522c7ac2e59db43966f409c79502e93cbba0))\n* **devops-server:** 修复预置云函数 init-app-rbac 以适配新 API； ([d91de4a](https://github.com/labring/laf/commit/d91de4abd7c55957dea67e3fe6fef4d51bc41ae8))\n* **node-modules-utils:** 修复部分包 typings 与 types 字段使用不一致的问题； ([96f952d](https://github.com/labring/laf/commit/96f952d74629f224c22c3fde001007b8dff43522))\n\n\n\n## [0.4.14](https://github.com/labring/laf/compare/v0.4.13...v0.4.14) (2021-08-09)\n\n\n### Bug Fixes\n\n* 修复应用远程部署时未清理被删函数的触发器导致的 app error; ([cd151c2](https://github.com/labring/laf/commit/cd151c22df08b66137bd5c51efd5f1f809255dcb))\n\n\n\n## [0.4.13](https://github.com/labring/laf/compare/v0.4.12...v0.4.13) (2021-08-09)\n\n\n### Bug Fixes\n\n* 修复 function_history 集合名 未跟随后端更新错误； ([0568b08](https://github.com/labring/laf/commit/0568b086521b5f3674d2f563aed60ca9f0e7fe5c))\n\n\n\n## [0.4.12](https://github.com/labring/laf/compare/v0.4.11...v0.4.12) (2021-08-09)\n\n\n### Bug Fixes\n\n* 针对后端调整，修改控制台 devops db 集合名称；优化部分页面交互体验； ([fa88671](https://github.com/labring/laf/commit/fa8867124ebf8c322731c95f51f9ae746f429cc7))\n\n\n\n## [0.4.11](https://github.com/labring/laf/compare/v0.4.10...v0.4.11) (2021-08-09)\n\n\n### Bug Fixes\n\n* 修复菜单权限显示；优化体验； ([cf3eefb](https://github.com/labring/laf/commit/cf3eefb0485db9e73676249e21c077f0e612a5ea))\n* 修复发布、部署资源时事务使用错误； ([b1c350a](https://github.com/labring/laf/commit/b1c350a72e9705012ba427739b553be7fe973c5a))\n* 修复开发控制台 IDE 默认无 mongodb 类型提供的问题； ([e75ae8c](https://github.com/labring/laf/commit/e75ae8cf95b1275e74f7e580910fdb20879f1552))\n\n\n\n## [0.4.10](https://github.com/labring/laf/compare/v0.4.9...v0.4.10) (2021-08-07)\n\n\n### Bug Fixes\n\n* 修复部署面板内容多时无法滚动的问题； ([0cf8d83](https://github.com/labring/laf/commit/0cf8d8378942e2f96614aaafbcdea2691d683cb1))\n* 修复部署时 _id 未转为 ObjectId 的问题； ([0483301](https://github.com/labring/laf/commit/04833012d03efa691042aa0ff6ff5f013cbb8dd1))\n\n\n\n## [0.4.9](https://github.com/labring/laf/compare/v0.4.8...v0.4.9) (2021-08-07)\n\n\n### Features\n\n* 新增触发器远程推送部署； ([99f027b](https://github.com/labring/laf/commit/99f027b0c64aecfdb1927cb87c23ef54dc3d1c97))\n* **fix:** 新增触发器远程推送部署，远程推送改为保持 _id 一致的方式； ([655792c](https://github.com/labring/laf/commit/655792c9a6262a79fe3b69369a26ac1a582ba48a))\n\n\n\n## [0.4.8](https://github.com/labring/laf/compare/v0.4.7...v0.4.8) (2021-08-07)\n\n\n### Features\n\n* 实现远程部署令牌、推送、接收、应用功能； ([afeb9ec](https://github.com/labring/laf/commit/afeb9ecbc0437f8ecc9f3eedddd77df8d27e27b5))\n* 实现远程部署推送、接收、应用功能； ([281cf28](https://github.com/labring/laf/commit/281cf286e0185af309c90b104cfd1d543085f554))\n\n\n\n## [0.4.7](https://github.com/labring/laf/compare/v0.4.6...v0.4.7) (2021-08-06)\n\n\n### Bug Fixes\n\n* 修复预置函数 admin-edit 的标识错误； ([96f588e](https://github.com/labring/laf/commit/96f588e87c7d079cd255dca28c4f84f3b97a9d2a))\n* 修复IDE快捷键监听未销毁的问题； ([cacb1c0](https://github.com/labring/laf/commit/cacb1c05f70eb3caf48c27b13d696a9a4c95277d))\n* 优化 devops 控制台交互体验、样式、延长请求超时时间到 60秒； ([b3ea99f](https://github.com/labring/laf/commit/b3ea99f8a452a8a0849a849823e724772ec897f7))\n\n\n\n## [0.4.6](https://github.com/labring/laf/compare/v0.4.5...v0.4.6) (2021-08-06)\n\n\n### Bug Fixes\n\n* 修复 tag 页面缓存不生效；去除页面切换动画； ([f8a94c8](https://github.com/labring/laf/commit/f8a94c8f800ff2726c3d510593b070b1c9d2f38d))\n* 修复页面缓存时，函数调试页快捷键重复绑定问题； ([1a26cf3](https://github.com/labring/laf/commit/1a26cf3d10c183339e3bbe0746ceda5e6eecfd92))\n* 优化页面布局，去除面包屑，腾出更多页面空间等； ([55c3a44](https://github.com/labring/laf/commit/55c3a447873c40568027ef7fceed05f18c976aea))\n\n\n\n## [0.4.5](https://github.com/labring/laf/compare/v0.4.4...v0.4.5) (2021-08-05)\n\n\n\n## [0.4.4](https://github.com/labring/laf/compare/v0.4.3...v0.4.4) (2021-08-05)\n\n\n\n## [0.4.3](https://github.com/labring/laf/compare/v0.4.2...v0.4.3) (2021-08-05)\n\n\n\n## [0.4.2](https://github.com/labring/laf/compare/v0.4.1...v0.4.2) (2021-08-04)\n\n\n### Features\n\n* 支持保存和使用云函数调试令牌 ([ac237ef](https://github.com/labring/laf/commit/ac237efd8827ad91b441588dbf98116e1211add9))\n* 支持登陆时发放云函数调试令牌；支持配置 token 过期时间； ([2b33cc4](https://github.com/labring/laf/commit/2b33cc4f3fcd7eb3c806ed26f5e6929e6f96e78e))\n* 支持云函数调试请求令牌 ([57dedc9](https://github.com/labring/laf/commit/57dedc9d41bc0e9c5d7cf0d4dce2ab4d6970f5e4))\n\n\n\n## [0.4.1](https://github.com/labring/laf/compare/v0.4.0...v0.4.1) (2021-08-04)\n\n\n### Bug Fixes\n\n* 修复无法删除函数的问题； ([ff0d855](https://github.com/labring/laf/commit/ff0d855d21ceb65f5b734be58882d79fb2d37bc8))\n* rename the client title; ([cf49d40](https://github.com/labring/laf/commit/cf49d4037dc8d845d9c821d28cab6daaa38f1bd3))\n\n\n\n# [0.4.0](https://github.com/labring/laf/compare/v0.1.5...v0.4.0) (2021-08-03)\n\n\n### Bug Fixes\n\n*  cloud-function 包名不给发布，重命名； ([2c955c5](https://github.com/labring/laf/commit/2c955c57f2fd9330a35f773d7be910a3955253a6))\n* 补提交，去除 dbm router 的引用； ([696ed7f](https://github.com/labring/laf/commit/696ed7f80932c0f2bcacb7a59ffefdfab8227bab))\n* 处理数据操作触发器参数中 _id 类型不为 string 的问题； ([9360fa8](https://github.com/labring/laf/commit/9360fa8a6a02d70cca0a3218b14c1523b5e15f6b))\n* 更新 less-api 版本，增加云函数变量 cloud 代替 less； ([b420bfa](https://github.com/labring/laf/commit/b420bfa7ad8cbe730560e49b98420404a46b868f))\n* 恢复函数调试调用、增加触发器调用编译功能； ([0eb8163](https://github.com/labring/laf/commit/0eb81631d6624f2b1e3e292bc400bf733500f3ce))\n* 将‘创建内部SDK包’的命令分离出来，在构建 docker 镜像时要单独用到； ([321b2f0](https://github.com/labring/laf/commit/321b2f0051c552451b2bc70869ca69c3f5ad1d48))\n* 修复 policy 为不存在时错误，返回404 ([f00ddba](https://github.com/labring/laf/commit/f00ddbaae6fb007df8646d5221d9414ae9841e7d))\n* 修复 trigger 函数日志 _id 类型问题；导出 编译函数； ([e0fab5b](https://github.com/labring/laf/commit/e0fab5b1addb3f9f45e93b6842193548bdb0ddc8))\n* 修复获取触发器时未控制状态的问题； ([6dca01a](https://github.com/labring/laf/commit/6dca01a39df3154886b6d67a52d9b2e7c8af933f))\n* 修复引用 cloud-functin-engine 路径错误； ([a8e49cc](https://github.com/labring/laf/commit/a8e49cc11aaf0748652f4e0fa5f8e19dffe84cbf))\n* 修复云函数调用错误返回状态码； ([145fdcd](https://github.com/labring/laf/commit/145fdcd98cb8469a424d7e9a1a65e626db86da0b))\n* 修改 policy injector_func 函数入参； ([4b80766](https://github.com/labring/laf/commit/4b80766823ef0c18b1bf0d806d89f44354834143))\n* 已暂时恢复云函数的调试接口（未做鉴权） ([23d359e](https://github.com/labring/laf/commit/23d359ea368af0559a4bfbcdb823d1f8b5d1bbde))\n* 增加 cloud-function-engine 包默认类型加载； ([315f7e9](https://github.com/labring/laf/commit/315f7e9f4598d134475db03855f71bfbcb3fa587))\n* add default tag for builtin cloud functions ([fdf297b](https://github.com/labring/laf/commit/fdf297bbb7692a91566d18c35db46b83f6389a91))\n* fix deploy apis' result data; ([e9c0aac](https://github.com/labring/laf/commit/e9c0aac9f153f34acf607a57d2d15e181e4b85e8))\n* fix docker-build.js bugs; ([ca12167](https://github.com/labring/laf/commit/ca121672d7a1f848affb2003f51934618d61ee85))\n* fix type error ([270f766](https://github.com/labring/laf/commit/270f7662f1217dd66ba5a6a163e131889eba6cb8))\n* **func engine:** fix func engine bug; ([e6fa812](https://github.com/labring/laf/commit/e6fa8121dc70d92222b52ed81505423d3157b8cd))\n* **function engine:** 重新使用旧引擎，解决新引擎内存泄露问题；支持 ts 函数编译； ([ff468f9](https://github.com/labring/laf/commit/ff468f97513d7039d02f2c713916b280d644146e))\n* package node-modules-utils publish: missing dist ([9c8fb0b](https://github.com/labring/laf/commit/9c8fb0bb080088e6d0b42806d11d24e258410179))\n* **spell:** fix spell error; ([31a93c5](https://github.com/labring/laf/commit/31a93c5e4d41b6a9ac3c5c7515a7396a7cccad23))\n* update app rules; ([4167cab](https://github.com/labring/laf/commit/4167cabac7f897dcc79eb118498abb018c836a3e))\n* update sys rules; ([a3f4a9a](https://github.com/labring/laf/commit/a3f4a9a158f08ca2b6284b6729eca40e91059fb6))\n* update token split method ([c43ecee](https://github.com/labring/laf/commit/c43ecee26551b2778599662c98690c52138793a0))\n\n\n### Features\n\n* 实现 通用 db proxy entry，重构 policy 加载方式；实现 policy agent； ([b8f64aa](https://github.com/labring/laf/commit/b8f64aa77a3151df401a5fe3fdebe1ee26d6ca7a))\n* 实现 npm 包类型声明解析、服务接口；重构项目结构，使用 lerna 管理； ([1dc91d2](https://github.com/labring/laf/commit/1dc91d2cd9934cc17abf5748304f4485a7621f53))\n* 实现触发器配置变更时，更新调度器任务； ([1d8dbe5](https://github.com/labring/laf/commit/1d8dbe5f1624fd69f703f587e80dd7ad0b386219))\n* 实现云函数 SDK 单独依赖包； ([e3d89b1](https://github.com/labring/laf/commit/e3d89b196c10c72e3b08aa5a04fc1f52c169a7e9))\n* 实现云函数的部署； ([82b0783](https://github.com/labring/laf/commit/82b0783653f11f79dabab43816a934f3205e1417))\n* 实现云函数与触发器的部署脚本； ([0a8ef9e](https://github.com/labring/laf/commit/0a8ef9ee23dcb8ac4ceb41b0d20b4968fb35f970))\n* 实现云函数与触发器自动部署到 app db；修改文档； ([3ea4713](https://github.com/labring/laf/commit/3ea471394fa60e99eb947d926b758c1a6fc4e7ef))\n* 新增 dbm entry，负责 app db 的数据管理； ([f7ddae3](https://github.com/labring/laf/commit/f7ddae3cbc68b3f2b3416bf700acc38b794778b7))\n* 新增部署访问策略接口, 修改 http 测试用例； ([fbcdb90](https://github.com/labring/laf/commit/fbcdb90d7992c29fbd273b9c9ba4df417184da34))\n* 新增发布函数、触发器接口；取消 watch 监听发布；支持发布时编译云函数； ([ba2e538](https://github.com/labring/laf/commit/ba2e538c19b1298b774196a9911f83545506e2f5))\n* 新增访问策略管理页面，修复访问规则添加和删除的bug； ([06f0a2a](https://github.com/labring/laf/commit/06f0a2a44a8316cb54c7abfefeb23bfa863aa478))\n* 修改初始化脚本，增加部署访问策略初始脚本； ([3840270](https://github.com/labring/laf/commit/38402704a9d1dc0e742b92288961e90e1336fad8))\n* 用 mongodb watch 实现数据监听机制；实现访问策略部署后自动应用； ([0650d2e](https://github.com/labring/laf/commit/0650d2e2749e012bd7eca394bd6e661ac914f982))\n* 增加 create 函数； ([cdafdb1](https://github.com/labring/laf/commit/cdafdb13aa38bbace1e315e10eb7a5938296acb7))\n* 增加与平台无关的构建命令脚本；修改 nmutils 包，支持 fs/promises ([68615ff](https://github.com/labring/laf/commit/68615ff37db6eeae9c4d66939c5cc0702eee26ed))\n* 支持 devops 初始化时创建云函数预置触发器 ([c1b1dde](https://github.com/labring/laf/commit/c1b1dde30f5192266c56d4f1779cad6634255298))\n* add builtin function: injector-admin; ([de48feb](https://github.com/labring/laf/commit/de48feba7a71c65a4989bc177052557b886b38c8))\n* add laf-devops-admin packages; ([4f95a45](https://github.com/labring/laf/commit/4f95a4540ec234287556d7684b3762ea2574e8ba))\n* add query params to trigger ctx ([1280817](https://github.com/labring/laf/commit/128081748a9506324c32b37e867ce1f3a337d276))\n\n\n\n## [0.1.5](https://github.com/labring/laf/compare/19648acace83afe9e45c2345964b03894e8629aa...v0.1.5) (2021-07-05)\n\n\n### Bug Fixes\n\n*  remove useless log; ([11f2988](https://github.com/labring/laf/commit/11f2988cf281ade3f8275ceed17cef2969c25061))\n* 补充 less-api 依赖； ([ebbeb8c](https://github.com/labring/laf/commit/ebbeb8cc41d99c61820722d66426e861d49cf337))\n* 去除 function_logs.requestId 的唯一索引； ([68ce1e8](https://github.com/labring/laf/commit/68ce1e8a0a6702627008dbb6d7b9e2c638e0438f))\n* 完善 admin rules 中删除相关表的规则 ([83e8818](https://github.com/labring/laf/commit/83e881828b540df5f3d35f0692311229b9ffbfe8))\n* 完善 trigger.delete 访问规则； ([502d6f1](https://github.com/labring/laf/commit/502d6f1047fbd5a6e0ed9090cf132467e449a240))\n* 修复 init 指令修复错误的问题； ([6f1b466](https://github.com/labring/laf/commit/6f1b466268b09ede0cd36d7f5d7c54a93542eec1))\n* 修复触发器 last_exec_time 字段为空时的问题； ([f3b5ada](https://github.com/labring/laf/commit/f3b5ada637cad656fcd59762c783917dd0e10efe))\n* 修复登陆注册 token 过期时间错误；更新 http 用例； ([3cd5277](https://github.com/labring/laf/commit/3cd5277cc34a6ae6f38e16d94be14caad1db071e))\n* 修改 builtin cloudfunction sig ([f379369](https://github.com/labring/laf/commit/f379369406fa3b9f67d86e1a10df857860ef3fbd))\n* 优化云函数调用返回结构； ([ea8e4a1](https://github.com/labring/laf/commit/ea8e4a1d7cdb54a35607595643d32108d46e6912))\n* **deps:** add typescript package to dev env ([ce3ed49](https://github.com/labring/laf/commit/ce3ed496350cef4ed8dd4cf559d57a93a4e10f4d))\n* **init:** add rules & permission to init.js ([0107f03](https://github.com/labring/laf/commit/0107f03ec1cc491c138b343d688a295c63c91933))\n* remove ali secrets ([82a47d6](https://github.com/labring/laf/commit/82a47d6e20a5510862d553180a23931ecc928f99))\n* remove wxmp app secret ([4671c36](https://github.com/labring/laf/commit/4671c3676ea13e0cee5f9115f810389f8952db90))\n\n\n### Features\n\n* **:sip:** add dotenv , add .env file； ([098ba91](https://github.com/labring/laf/commit/098ba91f4b7d745866d226640ddd2909cb7981b9))\n* 去除 上传文件到 public 时的验证；增加 mongodb 对象到云函数环境； ([f266655](https://github.com/labring/laf/commit/f26665521f9a84016ca41a744829dfa4f0033ebb))\n* 新增实现指定一个触发器的调度更新（接口和功能）； ([8e3dbcf](https://github.com/labring/laf/commit/8e3dbcf5b48124aacd62e4c4c39ec3e0c9f6c4c9))\n* 新增文件上传 built-in 云函数； ([9834018](https://github.com/labring/laf/commit/98340185fcd249ab92ab3b5709e2c8ba1a0e0b0c))\n* 优化简化 entry 和 trigger 配置代码；忽略读取数据事件； ([fe06c74](https://github.com/labring/laf/commit/fe06c74abe1be3d0fbdbc93b24f9aca6a12b9b28))\n* 云函数支持 http和停启控制；新增函数编辑历史规则； ([56cfa8e](https://github.com/labring/laf/commit/56cfa8e30952fe2ee7553be8581476760e966dec))\n* 云函数支持 method 参数； ([560f4e8](https://github.com/labring/laf/commit/560f4e834f141ae52893f940845f3198d94bfcb7))\n* 云函数支持文件上传，支持 headers 参数传入； ([f0c04ab](https://github.com/labring/laf/commit/f0c04ab1315bfd0701472c15951ff627bc7ed8ba))\n* 增加跨云函数的全局配置对象； ([8f753b8](https://github.com/labring/laf/commit/8f753b8f5e6e95f128e9d617dda46bc8aea2df76))\n* 增加dbm 获取集合列表； ([20693c7](https://github.com/labring/laf/commit/20693c7352a9ead0fb6baaa5a4e30f5c2ebb0162))\n* dbm 实现删除与创建集合索引接口； ([405dfce](https://github.com/labring/laf/commit/405dfced1bf3c1ec4d49b15df68101b484895d0e))\n* dbm 新增获取集合索引信息； ([fd1d96c](https://github.com/labring/laf/commit/fd1d96c263a426e7324e6ef6a25ddb01fcfa08ef))\n* **enhance:** cloud function enhance less object ([19648ac](https://github.com/labring/laf/commit/19648acace83afe9e45c2345964b03894e8629aa))\n* **file:** 重构LSF 文件管理方式；新增文件访问令牌云函数；修复文件API安全漏洞； ([164ab59](https://github.com/labring/laf/commit/164ab5995994a8e81882ef36e9a06799db1c3899))\n* **fix:** 修复云函数上传文件bug；引入 jwt 库；增加云函数参数; ([c28db5d](https://github.com/labring/laf/commit/c28db5dab38c5e812d030536cebd5744b82aad79))\n* **init:** 支持内置云函数的导入；增加用户登陆注册、小程序授权、阿里云发短信等内置云函数 ([8c4b0ec](https://github.com/labring/laf/commit/8c4b0ecc67e64e6f56f8bf9f8e3d6fc2d3e3983d))\n\n\n\n"
  },
  {
    "path": "CLAUDE.md",
    "content": "# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nlaf is an open-source serverless cloud development platform that provides cloud functions, cloud databases, and cloud storage out of the box. It enables developers to focus on business development without worrying about server management.\n\nThe platform consists of:\n\n- **Web IDE**: Browser-based development environment for writing cloud functions\n- **Cloud Functions**: Serverless function execution (Node.js/Python)\n- **Cloud Database**: MongoDB-based database with access control\n- **Cloud Storage**: S3-compatible object storage (MinIO)\n- **Website Hosting**: Static site deployment\n\n## Repository Structure\n\nThis is a monorepo managed by Lerna. Key workspaces:\n\n### Core Services\n\n- **`server/`** - NestJS-based API server that manages the entire laf platform\n\n  - Handles auth, applications, functions, database, storage, logs, billing, domains, certificates, and metrics\n  - Uses MongoDB for system database\n  - Runs on port 3000\n\n- **`runtimes/nodejs/`** - Node.js runtime engine that executes user cloud functions\n\n  - Express-based runtime that executes cloud functions\n  - Provides database access proxy\n  - Includes TypeScript language server for IDE support\n  - Each application instance runs its own runtime pod in Kubernetes\n\n- **`web/`** - React-based web console UI\n  - Built with Vite, React 18, Chakra UI, TailwindCSS\n  - Monaco editor integration for code editing\n  - Uses React Query for state management and Zustand for local state\n  - Runs on port 3001 (dev)\n\n### Packages\n\n- **`packages/client-sdk/`** - Client SDK for accessing laf from frontend applications\n- **`packages/cloud-sdk/`** (`@lafjs/cloud`) - SDK provided to cloud functions at runtime\n- **`packages/database-proxy/`** - Database access layer with ACL support (MongoDB/MySQL)\n- **`packages/database-ql/`** - Query language abstraction\n- **`packages/node-modules-utils/`** - Utilities for managing npm dependencies\n- **`packages/eslint-config-laf/`** - Shared ESLint configuration\n\n### Other\n\n- **`cli/`** - Command-line tool for laf\n- **`e2e/`** - End-to-end tests using Jest\n- **`docs/`** - VitePress documentation\n- **`deploy/`** - Kubernetes deployment manifests\n- **`services/runtime-exporter/`** - Prometheus exporter for runtime metrics\n\n## Development Commands\n\n### Root Level (Monorepo)\n\n```bash\n# Install all dependencies across workspaces\nnpm install\n# Or with lerna\nlerna exec npm install --parallel\n\n# Build all packages\nnpm run build\n# Or\nlerna run build --parallel\n\n# Lint all packages\nnpm run lint\n# Or\nlerna run lint --parallel\n\n# Run lint-staged (pre-commit)\nnpm run lint-staged\n```\n\n### Server Development\n\n```bash\ncd server/\n\n# Install dependencies\nnpm install\n\n# Development with watch mode\nnpm run dev\n# Or\nnpm run watch\n\n# Build\nnpm run build\n\n# Start production\nnpm run start:prod\n\n# Run tests\nnpm test\nnpm run test:watch\nnpm run test:cov\nnpm run test:e2e\n\n# Lint\nnpm run lint\n```\n\n**Local development with Telepresence** (connects to Kubernetes cluster):\n\n```bash\ncd server/\n\n# Install traffic manager\ntelepresence helm install\n\n# Connect to cluster\ntelepresence connect -n laf-system\n\n# Intercept traffic (creates .env file)\ntelepresence intercept laf-server -p 3000:3000 -e $(pwd)/.env\n\n# Start dev server\nnpm run dev\n\n# Clean up\ntelepresence leave laf-server\n```\n\n### Web Development\n\n```bash\ncd web/\n\n# Install dependencies (uses pnpm or npm)\nnpm install\n# Or\npnpm install\n\n# Development server\nnpm run dev\n\n# Build for production\nnpm run build\n\n# Type check\nnpm run tsc\n\n# Preview production build\nnpm run preview\n\n# Lint\nnpm run lint\n```\n\n### Runtime Development\n\n```bash\ncd runtimes/nodejs/\n\n# Install and build\nnpm install\nnpm run build\n\n# Development\nnpm run dev\nnpm run watch\n\n# Start\nnpm start\n\n# Lint\nnpm run lint\n```\n\n**Local development with Telepresence**:\n\n```bash\ncd runtimes/nodejs/\n\n# Connect to cluster\ntelepresence connect -n laf-system\n\n# Set your test app ID\nexport appid=your-app-id\n\n# Intercept app traffic\ntelepresence intercept $appid -p 8000:8000 -e $(pwd)/.env\n\n# Start runtime\nnpm run build\nnpm start\n\n# Clean up\ntelepresence leave $appid\n```\n\n### Package Development\n\n```bash\n# Example: database-proxy\ncd packages/database-proxy/\n\nnpm install\nnpm run build\nnpm run watch  # Watch mode\nnpm test       # Run tests\nnpm run lint\n```\n\n### E2E Tests\n\n```bash\ncd e2e/\n\n# Run all tests\nnpm test\n\n# Or use the shell script\n./e2e.sh\n```\n\n### CLI Development\n\n```bash\ncd cli/\n\nnpm install\nnpm run build\nnpm run watch\n\n# Use locally\nnode dist/main.js\n```\n\n## Architecture Overview\n\n### Request Flow\n\n1. User accesses web console (`web/`) to manage applications and write functions\n2. Web console communicates with API server (`server/`) via REST APIs\n3. API server manages Kubernetes resources to create application instances\n4. Each application gets its own runtime pod (`runtimes/nodejs/`)\n5. Runtime pods execute user-defined cloud functions\n6. Cloud functions use `cloud-sdk` to access database (via `database-proxy`) and storage\n\n### Key Architecture Patterns\n\n**Serverless Isolation**: Each laf application runs in its own Kubernetes pod with isolated resources, database credentials, and storage buckets.\n\n**Database Access Control**: The `database-proxy` package provides MongoDB/MySQL access with ACL rules. Cloud functions don't connect directly to databases; they use the proxy with permission validation.\n\n**Function Execution**: Cloud functions are TypeScript/JavaScript code stored in MongoDB. The runtime loads function code dynamically and executes it in isolated contexts with injected globals (`cloud`, `fetch`, etc.).\n\n**WebIDE Integration**: Monaco editor in web console connects to TypeScript language server running in the runtime pod via WebSocket for IntelliSense and type checking.\n\n### Technology Stack\n\n**Backend**:\n\n- NestJS 9 (server)\n- Express 4 (runtime)\n- MongoDB 5 (database)\n- Kubernetes client-node\n- Passport JWT (authentication)\n\n**Frontend**:\n\n- React 18\n- Chakra UI + TailwindCSS\n- Monaco Editor\n- React Query (TanStack Query)\n- Zustand + Immer (state management)\n- i18next (internationalization)\n- Vite 4\n\n**Infrastructure**:\n\n- Kubernetes (orchestration)\n- MinIO (object storage)\n- Telepresence (local development)\n\n## Important Conventions\n\n### Code Organization\n\n- Server uses NestJS modules - each feature has its own module in `server/src/`\n- Runtime handlers are in `runtimes/nodejs/src/handler/`\n- Web pages follow feature-based organization in `web/src/pages/`\n- Shared types and utilities should go in appropriate packages\n\n### TypeScript\n\n- All packages use TypeScript\n- Server uses TypeScript 4.9\n- Web and newer packages use TypeScript 5.0\n- Build target varies by package (check individual `tsconfig.json`)\n\n### Testing\n\n- Server uses Jest with NestJS testing utilities\n- E2E tests use Jest with custom sequencer for test ordering\n- Package tests use Mocha\n- Test files use `*.spec.ts` (server) or `*test.js` (packages)\n\n### Linting\n\n- Shared ESLint config in `packages/eslint-config-laf/`\n- Husky pre-commit hooks run lint-staged\n- Run `npm run lint` to fix issues automatically\n\n### Building\n\n- Most packages require `npm run build` before use\n- Lerna can build all packages in parallel\n- Runtime requires build before starting\n- Web uses Vite for hot module replacement in dev\n\n## Working with the Codebase\n\n### Adding a New API Endpoint\n\n1. Create or modify a controller in `server/src/{module}/`\n2. Add DTOs with class-validator decorators\n3. Add Swagger decorators for API documentation\n4. Update module's service and inject dependencies\n5. Add authentication guards if needed (`@UseGuards(JwtAuthGuard)`)\n6. Test endpoint manually or add e2e tests in `e2e/`\n\n### Adding a New Cloud Function API\n\n1. Add handler in `runtimes/nodejs/src/handler/`\n2. Export from cloud-sdk (`packages/cloud-sdk/src/`)\n3. Update TypeScript definitions for IDE autocomplete\n4. Rebuild cloud-sdk and runtime\n\n### Modifying Database Access Rules\n\n1. Edit policies in `packages/database-proxy/src/`\n2. Database proxy validates all database operations against ACL rules\n3. Rules are defined per-application in the application's configuration\n\n### Adding Web UI Features\n\n1. Create components in `web/src/components/` or `web/src/pages/`\n2. Use Chakra UI components for consistency\n3. Add API calls using axios and React Query\n4. Use Zustand stores for global state (`web/src/pages/{page}/store.ts`)\n5. Add i18n strings in `web/public/locales/`\n\n## Deployment\n\nThe project deploys to Kubernetes. See `deploy/README.md` for deployment instructions.\n\n## Prerequisites for Development\n\n- Node.js 18+ (runtime requires >=18.0.0)\n- Kubernetes cluster (for local development with Telepresence)\n- Telepresence CLI (for local development that connects to cluster)\n- MongoDB (for system database)\n- MinIO or S3-compatible storage\n\n## Common Issues\n\n**Telepresence intercept fails**: Ensure you're connected to the cluster and the target pod exists in the namespace.\n\n**Runtime crashes on start**: Check that all environment variables in `.env` are set correctly (created by telepresence intercept).\n\n**Web build fails with memory error**: Use `--max_old_space_size=32768` flag (already in package.json build script).\n\n**Type errors in web/**: Run `npm run tsc` first to check types, Monaco editor requires proper TypeScript setup.\n\n**Lerna command not found**: Install lerna globally or use npx: `npx lerna <command>`.\n"
  },
  {
    "path": "LICENSE",
    "content": "\n                                 Apache License\n                                 Version 2.0, January 2004\n                              http://www.apache.org/licenses/\n      \n         TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n      \n         1. Definitions.\n      \n            \"License\" shall mean the terms and conditions for use, reproduction,\n            and distribution as defined by Sections 1 through 9 of this document.\n      \n            \"Licensor\" shall mean the copyright owner or entity authorized by\n            the copyright owner that is granting the License.\n      \n            \"Legal Entity\" shall mean the union of the acting entity and all\n            other entities that control, are controlled by, or are under common\n            control with that entity. For the purposes of this definition,\n            \"control\" means (i) the power, direct or indirect, to cause the\n            direction or management of such entity, whether by contract or\n            otherwise, or (ii) ownership of fifty percent (50%) or more of the\n            outstanding shares, or (iii) beneficial ownership of such entity.\n      \n            \"You\" (or \"Your\") shall mean an individual or Legal Entity\n            exercising permissions granted by this License.\n      \n            \"Source\" form shall mean the preferred form for making modifications,\n            including but not limited to software source code, documentation\n            source, and configuration files.\n      \n            \"Object\" form shall mean any form resulting from mechanical\n            transformation or translation of a Source form, including but\n            not limited to compiled object code, generated documentation,\n            and conversions to other media types.\n      \n            \"Work\" shall mean the work of authorship, whether in Source or\n            Object form, made available under the License, as indicated by a\n            copyright notice that is included in or attached to the work\n            (an example is provided in the Appendix below).\n      \n            \"Derivative Works\" shall mean any work, whether in Source or Object\n            form, that is based on (or derived from) the Work and for which the\n            editorial revisions, annotations, elaborations, or other modifications\n            represent, as a whole, an original work of authorship. For the purposes\n            of this License, Derivative Works shall not include works that remain\n            separable from, or merely link (or bind by name) to the interfaces of,\n            the Work and Derivative Works thereof.\n      \n            \"Contribution\" shall mean any work of authorship, including\n            the original version of the Work and any modifications or additions\n            to that Work or Derivative Works thereof, that is intentionally\n            submitted to Licensor for inclusion in the Work by the copyright owner\n            or by an individual or Legal Entity authorized to submit on behalf of\n            the copyright owner. For the purposes of this definition, \"submitted\"\n            means any form of electronic, verbal, or written communication sent\n            to the Licensor or its representatives, including but not limited to\n            communication on electronic mailing lists, source code control systems,\n            and issue tracking systems that are managed by, or on behalf of, the\n            Licensor for the purpose of discussing and improving the Work, but\n            excluding communication that is conspicuously marked or otherwise\n            designated in writing by the copyright owner as \"Not a Contribution.\"\n      \n            \"Contributor\" shall mean Licensor and any individual or Legal Entity\n            on behalf of whom a Contribution has been received by Licensor and\n            subsequently incorporated within the Work.\n      \n         2. Grant of Copyright License. Subject to the terms and conditions of\n            this License, each Contributor hereby grants to You a perpetual,\n            worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n            copyright license to reproduce, prepare Derivative Works of,\n            publicly display, publicly perform, sublicense, and distribute the\n            Work and such Derivative Works in Source or Object form.\n      \n         3. Grant of Patent License. Subject to the terms and conditions of\n            this License, each Contributor hereby grants to You a perpetual,\n            worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n            (except as stated in this section) patent license to make, have made,\n            use, offer to sell, sell, import, and otherwise transfer the Work,\n            where such license applies only to those patent claims licensable\n            by such Contributor that are necessarily infringed by their\n            Contribution(s) alone or by combination of their Contribution(s)\n            with the Work to which such Contribution(s) was submitted. If You\n            institute patent litigation against any entity (including a\n            cross-claim or counterclaim in a lawsuit) alleging that the Work\n            or a Contribution incorporated within the Work constitutes direct\n            or contributory patent infringement, then any patent licenses\n            granted to You under this License for that Work shall terminate\n            as of the date such litigation is filed.\n      \n         4. Redistribution. You may reproduce and distribute copies of the\n            Work or Derivative Works thereof in any medium, with or without\n            modifications, and in Source or Object form, provided that You\n            meet the following conditions:\n      \n            (a) You must give any other recipients of the Work or\n                Derivative Works a copy of this License; and\n      \n            (b) You must cause any modified files to carry prominent notices\n                stating that You changed the files; and\n      \n            (c) You must retain, in the Source form of any Derivative Works\n                that You distribute, all copyright, patent, trademark, and\n                attribution notices from the Source form of the Work,\n                excluding those notices that do not pertain to any part of\n                the Derivative Works; and\n      \n            (d) If the Work includes a \"NOTICE\" text file as part of its\n                distribution, then any Derivative Works that You distribute must\n                include a readable copy of the attribution notices contained\n                within such NOTICE file, excluding those notices that do not\n                pertain to any part of the Derivative Works, in at least one\n                of the following places: within a NOTICE text file distributed\n                as part of the Derivative Works; within the Source form or\n                documentation, if provided along with the Derivative Works; or,\n                within a display generated by the Derivative Works, if and\n                wherever such third-party notices normally appear. The contents\n                of the NOTICE file are for informational purposes only and\n                do not modify the License. You may add Your own attribution\n                notices within Derivative Works that You distribute, alongside\n                or as an addendum to the NOTICE text from the Work, provided\n                that such additional attribution notices cannot be construed\n                as modifying the License.\n      \n            You may add Your own copyright statement to Your modifications and\n            may provide additional or different license terms and conditions\n            for use, reproduction, or distribution of Your modifications, or\n            for any such Derivative Works as a whole, provided Your use,\n            reproduction, and distribution of the Work otherwise complies with\n            the conditions stated in this License.\n      \n         5. Submission of Contributions. Unless You explicitly state otherwise,\n            any Contribution intentionally submitted for inclusion in the Work\n            by You to the Licensor shall be under the terms and conditions of\n            this License, without any additional terms or conditions.\n            Notwithstanding the above, nothing herein shall supersede or modify\n            the terms of any separate license agreement you may have executed\n            with Licensor regarding such Contributions.\n      \n         6. Trademarks. This License does not grant permission to use the trade\n            names, trademarks, service marks, or product names of the Licensor,\n            except as required for reasonable and customary use in describing the\n            origin of the Work and reproducing the content of the NOTICE file.\n      \n         7. Disclaimer of Warranty. Unless required by applicable law or\n            agreed to in writing, Licensor provides the Work (and each\n            Contributor provides its Contributions) on an \"AS IS\" BASIS,\n            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n            implied, including, without limitation, any warranties or conditions\n            of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n            PARTICULAR PURPOSE. You are solely responsible for determining the\n            appropriateness of using or redistributing the Work and assume any\n            risks associated with Your exercise of permissions under this License.\n      \n         8. Limitation of Liability. In no event and under no legal theory,\n            whether in tort (including negligence), contract, or otherwise,\n            unless required by applicable law (such as deliberate and grossly\n            negligent acts) or agreed to in writing, shall any Contributor be\n            liable to You for damages, including any direct, indirect, special,\n            incidental, or consequential damages of any character arising as a\n            result of this License or out of the use or inability to use the\n            Work (including but not limited to damages for loss of goodwill,\n            work stoppage, computer failure or malfunction, or any and all\n            other commercial damages or losses), even if such Contributor\n            has been advised of the possibility of such damages.\n      \n         9. Accepting Warranty or Additional Liability. While redistributing\n            the Work or Derivative Works thereof, You may choose to offer,\n            and charge a fee for, acceptance of support, warranty, indemnity,\n            or other liability obligations and/or rights consistent with this\n            License. However, in accepting such obligations, You may act only\n            on Your own behalf and on Your sole responsibility, not on behalf\n            of any other Contributor, and only if You agree to indemnify,\n            defend, and hold each Contributor harmless for any liability\n            incurred by, or claims asserted against, such Contributor by reason\n            of your accepting any such warranty or additional liability.\n      \n         END OF TERMS AND CONDITIONS\n      \n         APPENDIX: How to apply the Apache License to your work.\n      \n            To apply the Apache License to your work, attach the following\n            boilerplate notice, with the fields enclosed by brackets \"[]\"\n            replaced with your own identifying information. (Don't include\n            the brackets!)  The text should be enclosed in the appropriate\n            comment syntax for the file format. We also recommend that a\n            file or class name and description of purpose be included on the\n            same \"printed page\" as the copyright notice for easier\n            identification within third-party archives.\n      \n         Copyright [yyyy] [name of copyright owner]\n      \n         Licensed under the Apache License, Version 2.0 (the \"License\");\n         you may not use this file except in compliance with the License.\n         You may obtain a copy of the License at\n      \n             http://www.apache.org/licenses/LICENSE-2.0\n      \n         Unless required by applicable law or agreed to in writing, software\n         distributed under the License is distributed on an \"AS IS\" BASIS,\n         WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n         See the License for the specific language governing permissions and\n         limitations under the License.\n      \n      \n      \n      \n      \n      ========================================================================\n      Apache ECharts Subcomponents:\n      \n      The Apache ECharts project contains subcomponents with separate copyright\n      notices and license terms. Your use of the source code for these\n      subcomponents is also subject to the terms and conditions of the following\n      licenses.\n      \n      BSD 3-Clause (d3.js):\n      The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:\n          `/src/chart/treemap/treemapLayout.ts`,\n          `/src/chart/tree/layoutHelper.ts`,\n          `/src/chart/graph/forceHelper.ts`,\n          `/src/util/number.ts`\n      See `/licenses/LICENSE-d3` for details of the license.\n      "
  },
  {
    "path": "README.md",
    "content": "![laf](https://socialify.git.ci/labring/laf/image?description=1&descriptionEditable=%E5%83%8F%E5%86%99%E5%8D%9A%E5%AE%A2%E4%B8%80%E6%A0%B7%E5%86%99%E4%BB%A3%E7%A0%81%EF%BC%81&font=Inter&forks=1&language=1&name=1&owner=1&pattern=Circuit%20Board&stargazers=1&theme=Dark)\n\n<div align=\"center\">\n  <p>\n    <b>像写博客一样写函数！</b>\n  </p>\n\n  <p>\n  \n  [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/labring/laf)\n  [![](https://img.shields.io/docker/pulls/lafyun/system-server)](https://hub.docker.com/r/lafyun/system-server)\n  ![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?logo=typescript&logoColor=white)\n  [![Website](https://img.shields.io/website?url=https%3A%2F%2Flaf.run&logo=Postwoman)](https://laf.run/)\n  <img src=\"https://img.shields.io/badge/%E5%BE%AE%E4%BF%A1%E7%BE%A4-2000%2B-brightgreen\"></a>\n\n  </p>\n</div>\n\n---\n\n> 中文 | [English](README_en.md)\n\n## 👀 `laf` 是什么\n\nlaf 是开源的云开发平台，提供云函数、云数据库、云存储等开箱即用的应用资源。让开发者专注于业务开发，无需折腾服务器，快速释放创意。\n\n## 🚀 Quick Start\n\n[三分钟体验使用 laf 写一个自己的 ChatGPT (开发到上线)](https://icloudnative.io/posts/build-chatgpt-web-using-laf/)  \n[三分钟体验使用 laf 开发一个简单的「Todo List」](./docs/zh/quick-start/Todo.md)\n\n## 🖥 在线体验\n\n🎉 [sealos.run](https://bja.sealos.run) <br/>\n\n## 🎉 `laf` 有什么\n\n- 云函数\n- 云数据库\n- 云存储\n- WebIDE，像写博客一样写代码\n- 网站托管\n- WebSocket 支持\n\n## 👨‍💻 谁适合使用 `laf` ?\n\n1. 前端开发者 + `laf` = 全栈开发者，前端秒变全栈，成为真正的大前端\n\n   - `laf` 为前端提供了 [laf-client-sdk](https://github.com/labring/laf/tree/main/packages/client-sdk)，适用于任何 js 运行环境\n   - `laf` 云函数使用 js/ts 开发，前后端代码无隔裂，无门槛快速上手\n   - `laf` 提供了静态网站托管，可将前端构建的网页直接同步部署上来，无需再配置服务器、nginx、域名等\n   - `laf` 后续会提供多种客户端的 SDK（Flutter/Android/iOS 等），为所有客户端开发者提供后端开发服务和一致的开发体验\n\n2. 后端开发者，可以从琐事中解放出来，专注于业务本身，提升开发效率\n\n   - `laf` 可以节约服务器运维、多环境部署和管理精力\n   - `laf` 让你告别配置、调试 nginx\n   - `laf` 让你告别「为每个项目手动部署数据库、安全顾虑等重复性工作」\n   - `laf` 让你告别「修改一次、发布半天」的重复繁琐的迭代体验\n   - `laf` 让你随时随地在 Web 上查看函数的运行日志，不必再连接服务器，费神费眼翻找\n   - `laf` 让你「像写博客一样写一个函数」，招之即来，挥之即去，随手发布！\n\n3. 云开发用户，若你是其它厂商的云开发用户，你不仅可以获得更强大、快速的开发体验，还不被云厂商锁定\n\n   - 你可以为客户提供源码交付，为客户私有部署一套 `laf` + 你的云开发应用，而使用闭源的云开发服务，无法交付可独立运行的源码\n   - 你可以根据未来的需要，随时将自己的产品部署到自己的服务器上，`laf` 是开源免费的\n   - 你甚至可以修改、订制自己的云开发平台，`laf` 是开源的、高度可扩展的\n\n4. 独立开发者、创业团队，节约成本，快速开始，专注业务\n   - 减少启动项目开发的流程，快速启动，缩短产品验证周期\n   - 极大程度提高迭代速度，随时应对变化，随时发布\n   - 专注于产品业务本身，快速推出最小可用产品 (MVP)，快速进行产品、市场验证\n   - 一个人 + `laf` = 团队\n\n> life is short, you need laf:)\n\n## Deployment\n\n> 本地部署：需要自己配置域名、证书、网关等并且熟悉 kubernetes 的运维，可参考下面的文档。\n\n[Deployment](./deploy/README.md)\n\n## 🏘️ Community Groups\n\n- [微信群](https://oss.laf.run/htr4n1-images/laf-qr-code.jpg)\n- [QQ 群：603059673](https://jq.qq.com/?_wv=1027&k=DdRCCiuz)\n\n## 🌟 Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=labring/laf&type=Date)](https://star-history.com/#labring/laf&Date)\n"
  },
  {
    "path": "README_en.md",
    "content": "![laf](https://socialify.git.ci/labring/laf/image?description=1&descriptionEditable=Write%20code%20like%20writing%20a%20blog!&font=Inter&forks=1&language=1&name=1&owner=1&pattern=Circuit%20Board&stargazers=1&theme=Dark)\n\n<div align=\"center\">\n  <p>\n    <b>Write code like writing a blog!</b>\n  </p>\n\n  <p>\n  \n  [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/labring/laf)\n  [![](https://img.shields.io/docker/pulls/lafyun/system-server)](https://hub.docker.com/r/lafyun/system-server)\n  ![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?logo=typescript&logoColor=white)\n  [![Website](https://img.shields.io/website?url=https%3A%2F%2Flaf.dev&logo=Postwoman)](https://laf.dev/)\n  <img src=\"https://img.shields.io/badge/%E5%BE%AE%E4%BF%A1%E7%BE%A4-2000%2B-brightgreen\"></a>\n\n  </p>\n</div>\n\n---\n\n> English | [中文](README.md)\n\n## 🚀 Quick Start\n\n[Build your own ChatGPT in three minutes (from development to deployment)](https://icloudnative.io/posts/build-chatgpt-web-using-laf/)\n\n## 🖥 Online experience\n\n🎉 [laf.dev](https://cloud.sealos.io) Free experience `laf` cloud development.\n\n## 👀 What is `laf`\n\n`laf` is an open-source cloud development platform that offers ready-to-use application resources such as cloud functions, cloud databases, and cloud storage. It allows developers to focus on business development without the need to tinker with servers, enabling them to quickly unleash their creativity.\n\n## 🎉 Features of `laf`\n\n- Cloud Functions\n- Cloud Database\n- Cloud Storage\n- WebIDE, Write code like writing a blog\n- Web-hosting\n- WebSocket support\n\n## 👨‍💻 Who uses `laf`?\n\n1. Front-end developers + `laf` = Full-stack developers, transforming front-end developers into true full-stack developers.\n\n   - `laf` provides [laf-client-sdk](https://github.com/labring/laf/tree/main/packages/client-sdk) for front-end developers, suitable for any JavaScript runtime environment.\n   - `laf` allows front-end and back-end code to be developed using JavaScript/TypeScript, eliminating the barrier between them and enabling a quick learning curve.\n   - `laf` offers static website hosting, allowing direct deployment of front-end built web pages without the need for server configuration, nginx, domains, etc.\n   - `laf` will provide SDKs for various client platforms (Flutter/Android/iOS, etc.) in the future, offering backend development services and a consistent development experience for all client developers.\n\n2. Back-end developers can free themselves from trivial tasks and focus on the core business, enhancing development efficiency.\n\n   - `laf` saves effort on server maintenance, multi-environment deployment, and management.\n   - `laf` eliminates the need for configuration and debugging of nginx.\n   - `laf` eliminates the repetitive work of manually deploying databases and addressing security concerns for each project.\n   - `laf` eliminates the tedious iterative experience of \"making changes and taking half a day to publish.\"\n   - `laf` allows you to view function execution logs anytime, anywhere on the web without the need to connect to servers or spend time searching.\n   - `laf` enables you to \"write a function like writing a blog,\" making it easy to publish and invoke functions effortlessly.\n\n3. Cloud development users, if you are a user of other cloud development platforms, `laf` not only provides a more powerful and fast development experience but also prevents vendor lock-in.\n\n   - You can deliver source code to clients and privately deploy a `laf` + your cloud development application. Closed-source cloud development services cannot deliver independently runnable source code.\n   - You can deploy your own product to your servers at any time according to future needs, as `laf` is open-source and free.\n   - You can even modify and customize your own cloud development platform, as `laf` is open-source and highly extensible.\n\n4. Independent developers and startup teams can save costs, start quickly, and focus on their business.\n\n   - Reduce the project development process, start quickly, and shorten the product validation cycle.\n   - Greatly improve iteration speed, adapt to changes at any time, and release updates quickly.\n   - Focus on the core business of the product, quickly launch Minimum Viable Products (MVP), and validate the product and market rapidly.\n   - One person + `laf` = a team.\n\n> life is short, you need laf:)\n\n## 🎉 Self-hosted Deployment\n\n[Deployment](./deploy/README.md)\n\n## 🏘️ Community Groups\n\n- [Discord](https://discord.gg/uWZqAwwdvy)\n- [Twitter](https://twitter.com/laf_dev)\n\n## 🌟 Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=labring/laf&type=Date)](https://star-history.com/#labring/laf&Date)\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Supported Versions\n\nWhich versions are currently being supported with security updates.\n\n| Version | Supported          |\n| ------- | ------------------ |\n| 1.0.0-beta.13   | :white_check_mark: |\n| 1.0.0-beta.12   | :white_check_mark: |\n| 1.0.0-beta.11   | :white_check_mark: |\n| < 1.0.0-beta.10   | :x:                |\n\n## Security\n\nLaf takes the security of our software products and services seriously.\n\nIf you believe you have found a security vulnerability in laf repository, please report it to us as described below.\n\n## Reporting Security Issues\n\n**Please do not report security vulnerabilities through public GitHub issues.**\n\nInstead, please report them by sending email to [maslow@sealos.io](mailto:maslow@sealos.io).\n\nYou should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message.\n\nPlease include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:\n\n  * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)\n  * Full paths of source file(s) related to the manifestation of the issue\n  * The location of the affected source code (tag/branch/commit or direct URL)\n  * Any special configuration required to reproduce the issue\n  * Step-by-step instructions to reproduce the issue\n  * Proof-of-concept or exploit code (if possible)\n  * Impact of the issue, including how an attacker might exploit the issue\n\nThis information will help us triage your report more quickly.\n\nIf you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award.\n\n## Preferred Languages\n\nWe prefer all communications to be in English or Chinese.\n"
  },
  {
    "path": "build/Kubefile",
    "content": "FROM scratch\n\nUSER 65532:65532\nCOPY charts  ./charts\n# COPY manifests ./manifests\nCOPY registry ./registry\nCOPY start.sh ./start.sh\nCOPY prometheus-helm.yaml ./prometheus-helm.yaml\nCOPY mongodb.yaml ./mongodb.yaml\n\nENV DOMAIN=127.0.0.1.nip.io\nENV NAMESPACE=laf-system\nENV REGION=default\nENV EXTERNAL_HTTP_SCHEMA=http\nENV INTERNAL_HTTP_SCHEMA=http\nENV ENABLE_MONITOR=true\n\n\nENV DB_PV_SIZE=10Gi\nENV OSS_PV_SIZE=20Gi\nENV PROMETHEUS_PV_SIZE=20Gi\n\nCMD [\"DOMAIN=$(DOMAIN) REGION=$(REGION) NAMESPACE=$(NAMESPACE) EXTERNAL_HTTP_SCHEMA=$(EXTERNAL_HTTP_SCHEMA) INTERNAL_HTTP_SCHEMA=$(INTERNAL_HTTP_SCHEMA) DB_PV_SIZE=$(DB_PV_SIZE) OSS_PV_SIZE=$(OSS_PV_SIZE) PROMETHEUS_PV_SIZE=$(PROMETHEUS_PV_SIZE) ENABLE_MONITOR=$(ENABLE_MONITOR) sh start.sh\"]"
  },
  {
    "path": "build/README.md",
    "content": "\n## Intro\n\n- charts/* - Helm charts for laf cluster.\n- start.sh - Install laf cluster use helm manually. (should install openebs yourself first)\n- Kubefile - Build sealos cluster image. ex. `docker.io/lafyun/laf:latest`\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n# helm/charts\nOWNERS\nhack/\nci/\nkube-prometheus-*.tgz\n\nunittests/\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/CONTRIBUTING.md",
    "content": "# Contributing Guidelines\n\n## How to contribute to this chart\n\n1. Fork this repository, develop and test your Chart.\n1. Bump the chart version for every change.\n1. Ensure PR title has the prefix `[kube-prometheus-stack]`\n1. When making changes to rules or dashboards, see the README.md section on how to sync data from upstream repositories\n1. Check the `hack/minikube` folder has scripts to set up minikube and components of this chart that will allow all components to be scraped. You can use this configuration when validating your changes.\n1. Check for changes of RBAC rules.\n1. Check for changes in CRD specs.\n1. PR must pass the linter (`helm lint`)\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/Chart.yaml",
    "content": "annotations:\n  artifacthub.io/license: Apache-2.0\n  artifacthub.io/links: |\n    - name: Chart Source\n      url: https://github.com/prometheus-community/helm-charts\n    - name: Upstream Project\n      url: https://github.com/prometheus-operator/kube-prometheus\n  artifacthub.io/operator: \"true\"\napiVersion: v2\nappVersion: v0.66.0\ndependencies:\n- condition: crds.enabled\n  name: crds\n  repository: \"\"\n  version: 0.0.0\n- condition: kubeStateMetrics.enabled\n  name: kube-state-metrics\n  repository: https://prometheus-community.github.io/helm-charts\n  version: 5.10.*\n- condition: nodeExporter.enabled\n  name: prometheus-node-exporter\n  repository: https://prometheus-community.github.io/helm-charts\n  version: 4.21.*\n- condition: grafana.enabled\n  name: grafana\n  repository: https://grafana.github.io/helm-charts\n  version: 6.58.*\n- condition: windowsMonitoring.enabled\n  name: prometheus-windows-exporter\n  repository: https://prometheus-community.github.io/helm-charts\n  version: 0.1.*\ndescription: kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards,\n  and Prometheus rules combined with documentation and scripts to provide easy to\n  operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus\n  Operator.\nhome: https://github.com/prometheus-operator/kube-prometheus\nicon: https://raw.githubusercontent.com/prometheus/prometheus.github.io/master/assets/prometheus_logo-cb55bb5c346.png\nkeywords:\n- operator\n- prometheus\n- kube-prometheus\nkubeVersion: '>=1.16.0-0'\nmaintainers:\n- email: andrew@quadcorps.co.uk\n  name: andrewgkew\n- email: gianrubio@gmail.com\n  name: gianrubio\n- email: github.gkarthiks@gmail.com\n  name: gkarthiks\n- email: kube-prometheus-stack@sisti.pt\n  name: GMartinez-Sisti\n- email: scott@r6by.com\n  name: scottrigby\n- email: miroslav.hadzhiev@gmail.com\n  name: Xtigyro\n- email: quentin.bisson@gmail.com\n  name: QuentinBisson\nname: kube-prometheus-stack\nsources:\n- https://github.com/prometheus-community/helm-charts\n- https://github.com/prometheus-operator/kube-prometheus\ntype: application\nversion: 48.3.5\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/README.md",
    "content": "# kube-prometheus-stack\n\nInstalls the [kube-prometheus stack](https://github.com/prometheus-operator/kube-prometheus), a collection of Kubernetes manifests, [Grafana](http://grafana.com/) dashboards, and [Prometheus rules](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with [Prometheus](https://prometheus.io/) using the [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator).\n\nSee the [kube-prometheus](https://github.com/prometheus-operator/kube-prometheus) README for details about components, dashboards, and alerts.\n\n_Note: This chart was formerly named `prometheus-operator` chart, now renamed to more clearly reflect that it installs the `kube-prometheus` project stack, within which Prometheus Operator is only one component._\n\n## Prerequisites\n\n- Kubernetes 1.16+\n- Helm 3+\n\n## Get Helm Repository Info\n\n```console\nhelm repo add prometheus-community https://prometheus-community.github.io/helm-charts\nhelm repo update\n```\n\n_See [`helm repo`](https://helm.sh/docs/helm/helm_repo/) for command documentation._\n\n## Install Helm Chart\n\n```console\nhelm install [RELEASE_NAME] prometheus-community/kube-prometheus-stack\n```\n\n_See [configuration](#configuration) below._\n\n_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._\n\n## Dependencies\n\nBy default this chart installs additional, dependent charts:\n\n- [prometheus-community/kube-state-metrics](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-state-metrics)\n- [prometheus-community/prometheus-node-exporter](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-node-exporter)\n- [grafana/grafana](https://github.com/grafana/helm-charts/tree/main/charts/grafana)\n\nTo disable dependencies during installation, see [multiple releases](#multiple-releases) below.\n\n_See [helm dependency](https://helm.sh/docs/helm/helm_dependency/) for command documentation._\n\n## Uninstall Helm Chart\n\n```console\nhelm uninstall [RELEASE_NAME]\n```\n\nThis removes all the Kubernetes components associated with the chart and deletes the release.\n\n_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._\n\nCRDs created by this chart are not removed by default and should be manually cleaned up:\n\n```console\nkubectl delete crd alertmanagerconfigs.monitoring.coreos.com\nkubectl delete crd alertmanagers.monitoring.coreos.com\nkubectl delete crd podmonitors.monitoring.coreos.com\nkubectl delete crd probes.monitoring.coreos.com\nkubectl delete crd prometheusagents.monitoring.coreos.com\nkubectl delete crd prometheuses.monitoring.coreos.com\nkubectl delete crd prometheusrules.monitoring.coreos.com\nkubectl delete crd scrapeconfigs.monitoring.coreos.com\nkubectl delete crd servicemonitors.monitoring.coreos.com\nkubectl delete crd thanosrulers.monitoring.coreos.com\n```\n\n## Upgrading Chart\n\n```console\nhelm upgrade [RELEASE_NAME] prometheus-community/kube-prometheus-stack\n```\n\nWith Helm v3, CRDs created by this chart are not updated by default and should be manually updated.\nConsult also the [Helm Documentation on CRDs](https://helm.sh/docs/chart_best_practices/custom_resource_definitions).\n\n_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._\n\n### Upgrading an existing Release to a new major version\n\nA major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions.\n\n### From 47.x to 48.x\n\nThis version moved all CRDs into a dedicated sub-chart. No new CRDs are introduced in this version.\nSee [#3548](https://github.com/prometheus-community/helm-charts/issues/3548) for more context.\n\nWe do not expect any breaking changes in this version.\n\n### From 46.x to 47.x\n\nThis version upgrades Prometheus-Operator to v0.66.0 with new CRDs (PrometheusAgent and ScrapeConfig).\n\nRun these commands to update the CRDs before applying the upgrade.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 45.x to 46.x\n\nThis version upgrades Prometheus-Operator to v0.65.1 with new CRDs (PrometheusAgent and ScrapeConfig), Prometheus to v2.44.0 and Thanos to v0.31.0.\n\nRun these commands to update the CRDs before applying the upgrade.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 44.x to 45.x\n\nThis version upgrades Prometheus-Operator to v0.63.0, Prometheus to v2.42.0 and Thanos to v0.30.2.\n\nRun these commands to update the CRDs before applying the upgrade.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 43.x to 44.x\n\nThis version upgrades Prometheus-Operator to v0.62.0, Prometheus to v2.41.0 and Thanos to v0.30.1.\n\nRun these commands to update the CRDs before applying the upgrade.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\nIf you have explicitly set `prometheusOperator.admissionWebhooks.failurePolicy`, this value is now always used even when `.prometheusOperator.admissionWebhooks.patch.enabled` is `true` (the default).\n\nThe values for `prometheusOperator.image.tag` & `prometheusOperator.prometheusConfigReloader.image.tag` are now empty by default and the Chart.yaml `appVersion` field is used instead.\n\n### From 42.x to 43.x\n\nThis version upgrades Prometheus-Operator to v0.61.1, Prometheus to v2.40.5 and Thanos to v0.29.0.\n\nRun these commands to update the CRDs before applying the upgrade.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 41.x to 42.x\n\nThis includes the overridability of container registry for all containers at the global level using `global.imageRegistry` or per container image. The defaults have not changed but if you were using a custom image, you will have to override the registry of said custom container image before you upgrade.\n\nFor instance, the prometheus-config-reloader used to be configured as follow:\n\n```yaml\n    image:\n      repository: quay.io/prometheus-operator/prometheus-config-reloader\n      tag: v0.60.1\n      sha: \"\"\n```\n\nBut it now moved to:\n\n```yaml\n    image:\n      registry: quay.io\n      repository: prometheus-operator/prometheus-config-reloader\n      tag: v0.60.1\n      sha: \"\"\n```\n\n### From 40.x to 41.x\n\nThis version upgrades Prometheus-Operator to v0.60.1, Prometheus to v2.39.1 and Thanos to v0.28.1.\nThis version also upgrades the Helm charts of kube-state-metrics to 4.20.2, prometheus-node-exporter to 4.3.0 and Grafana to 6.40.4.\n\nRun these commands to update the CRDs before applying the upgrade.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\nThis version splits kubeScheduler recording and altering rules in separate config values.\nInstead of `defaultRules.rules.kubeScheduler` the 2 new variables `defaultRules.rules.kubeSchedulerAlerting` and `defaultRules.rules.kubeSchedulerRecording` are used.\n\n### From 39.x to 40.x\n\nThis version upgrades Prometheus-Operator to v0.59.1, Prometheus to v2.38.0, kube-state-metrics to v2.6.0 and Thanos to v0.28.0.\nThis version also upgrades the Helm charts of kube-state-metrics to 4.18.0 and prometheus-node-exporter to 4.2.0.\n\nRun these commands to update the CRDs before applying the upgrade.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\nStarting from prometheus-node-exporter version 4.0.0, the `node exporter` chart is using the [Kubernetes recommended labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/). Therefore you have to delete the daemonset before you upgrade.\n\n```console\nkubectl delete daemonset -l app=prometheus-node-exporter\nhelm upgrade -i kube-prometheus-stack prometheus-community/kube-prometheus-stack\n```\n\nIf you use your own custom [ServiceMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor) or [PodMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#podmonitor), please ensure to upgrade their `selector` fields accordingly to the new labels.\n\n### From 38.x to 39.x\n\nThis upgraded prometheus-operator to v0.58.0 and prometheus to v2.37.0\n\nRun these commands to update the CRDs before applying the upgrade.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 37.x to 38.x\n\nReverted one of the default metrics relabelings for cAdvisor added in 36.x, due to it breaking container_network_* and various other statistics. If you do not want this change, you will need to override the `kubelet.cAdvisorMetricRelabelings`.\n\n### From 36.x to 37.x\n\nThis includes some default metric relabelings for cAdvisor and apiserver metrics to reduce cardinality. If you do not want these defaults, you will need to override the `kubeApiServer.metricRelabelings` and or `kubelet.cAdvisorMetricRelabelings`.\n\n### From 35.x to 36.x\n\nThis upgraded prometheus-operator to v0.57.0 and prometheus to v2.36.1\n\nRun these commands to update the CRDs before applying the upgrade.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 34.x to 35.x\n\nThis upgraded prometheus-operator to v0.56.0 and prometheus to v2.35.0\n\nRun these commands to update the CRDs before applying the upgrade.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 33.x to 34.x\n\nThis upgrades to prometheus-operator to v0.55.0 and prometheus to v2.33.5.\n\nRun these commands to update the CRDs before applying the upgrade.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 32.x to 33.x\n\nThis upgrades the prometheus-node-exporter Chart to v3.0.0. Please review the changes to this subchart if you make customizations to hostMountPropagation.\n\n### From 31.x to 32.x\n\nThis upgrades to prometheus-operator to v0.54.0 and prometheus to v2.33.1. It also changes the default for `grafana.serviceMonitor.enabled` to `true.\n\nRun these commands to update the CRDs before applying the upgrade.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 30.x to 31.x\n\nThis version removes the built-in grafana ServiceMonitor and instead relies on the ServiceMonitor of the sub-chart.\n`grafana.serviceMonitor.enabled` must be set instead of `grafana.serviceMonitor.selfMonitor` and the old ServiceMonitor may\nneed to be manually cleaned up after deploying the new release.\n\n### From 29.x to 30.x\n\nThis version updates kube-state-metrics to 4.3.0 and uses the new option `kube-state-metrics.releaseLabel=true` which adds the \"release\" label to kube-state-metrics labels, making scraping of the metrics by kube-prometheus-stack work out of the box again, independent of the used kube-prometheus-stack release name. If you already set the \"release\" label via `kube-state-metrics.customLabels` you might have to remove that and use it via the new option.\n\n### From 28.x to 29.x\n\nThis version makes scraping port for kube-controller-manager and kube-scheduler dynamic to reflect changes to default serving ports\nfor those components in Kubernetes versions v1.22 and v1.23 respectively.\n\nIf you deploy on clusters using version v1.22+, kube-controller-manager will be scraped over HTTPS on port 10257.\n\nIf you deploy on clusters running version v1.23+, kube-scheduler will be scraped over HTTPS on port 10259.\n\n### From 27.x to 28.x\n\nThis version disables PodSecurityPolicies by default because they are deprecated in Kubernetes 1.21 and will be removed in Kubernetes 1.25.\n\nIf you are using PodSecurityPolicies you can enable the previous behaviour by setting `kube-state-metrics.podSecurityPolicy.enabled`, `prometheus-node-exporter.rbac.pspEnabled`, `grafana.rbac.pspEnabled` and `global.rbac.pspEnabled` to `true`.\n\n### From 26.x to 27.x\n\nThis version splits prometheus-node-exporter chart recording and altering rules in separate config values.\nInstead of `defaultRules.rules.node` the 2 new variables `defaultRules.rules.nodeExporterAlerting` and `defaultRules.rules.nodeExporterRecording` are used.\n\nAlso the following defaultRules.rules has been removed as they had no effect: `kubeApiserverError`, `kubePrometheusNodeAlerting`, `kubernetesAbsent`, `time`.\n\nThe ability to set a rubookUrl via `defaultRules.rules.rubookUrl` was reintroduced.\n\n### From 25.x to 26.x\n\nThis version enables the prometheus-node-exporter subchart servicemonitor by default again, by setting `prometheus-node-exporter.prometheus.monitor.enabled` to `true`.\n\n### From 24.x to 25.x\n\nThis version upgrade to prometheus-operator v0.53.1. It removes support for setting a runbookUrl, since the upstream format for runbooks changed.\n\n```console\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 23.x to 24.x\n\nThe custom `ServiceMonitor` for the _kube-state-metrics_ & _prometheus-node-exporter_ charts have been removed in favour of the built-in sub-chart `ServiceMonitor`; for both sub-charts this means that `ServiceMonitor` customisations happen via the values passed to the chart. If you haven't directly customised this behaviour then there are no changes required to upgrade, but if you have please read the following.\n\nFor _kube-state-metrics_ the `ServiceMonitor` customisation is now set via `kube-state-metrics.prometheus.monitor` and the `kubeStateMetrics.serviceMonitor.selfMonitor.enabled` value has moved to `kube-state-metrics.selfMonitor.enabled`.\n\nFor _prometheus-node-exporter_ the `ServiceMonitor` customisation is now set via `prometheus-node-exporter.prometheus.monitor` and the `nodeExporter.jobLabel` values has moved to `prometheus-node-exporter.prometheus.monitor.jobLabel`.\n\n### From 22.x to 23.x\n\nPort names have been renamed for Istio's\n[explicit protocol selection](https://istio.io/latest/docs/ops/configuration/traffic-management/protocol-selection/#explicit-protocol-selection).\n\n| | old value | new value |\n|-|-----------|-----------|\n| `alertmanager.alertmanagerSpec.portName` | `web` | `http-web` |\n| `grafana.service.portName` | `service` | `http-web` |\n| `prometheus-node-exporter.service.portName` | `metrics` (hardcoded) | `http-metrics` |\n| `prometheus.prometheusSpec.portName` | `web` | `http-web` |\n\n### From 21.x to 22.x\n\nDue to the upgrade of the `kube-state-metrics` chart, removal of its deployment/stateful needs to done manually prior to upgrading:\n\n```console\nkubectl delete deployments.apps -l app.kubernetes.io/instance=prometheus-operator,app.kubernetes.io/name=kube-state-metrics --cascade=orphan\n```\n\nor if you use autosharding:\n\n```console\nkubectl delete statefulsets.apps -l app.kubernetes.io/instance=prometheus-operator,app.kubernetes.io/name=kube-state-metrics --cascade=orphan\n```\n\n### From 20.x to 21.x\n\nThe config reloader values have been refactored. All the values have been moved to the key `prometheusConfigReloader` and the limits and requests can now be set separately.\n\n### From 19.x to 20.x\n\nVersion 20 upgrades prometheus-operator from 0.50.x to 0.52.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRDs manually before updating:\n\n```console\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 18.x to 19.x\n\n`kubeStateMetrics.serviceMonitor.namespaceOverride` was removed.\nPlease use `kube-state-metrics.namespaceOverride` instead.\n\n### From 17.x to 18.x\n\nVersion 18 upgrades prometheus-operator from 0.49.x to 0.50.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRDs manually before updating:\n\n```console\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 16.x to 17.x\n\nVersion 17 upgrades prometheus-operator from 0.48.x to 0.49.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRDs manually before updating:\n\n```console\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 15.x to 16.x\n\nVersion 16 upgrades kube-state-metrics to v2.0.0. This includes changed command-line arguments and removed metrics, see this [blog post](https://kubernetes.io/blog/2021/04/13/kube-state-metrics-v-2-0/). This version also removes Grafana dashboards that supported Kubernetes 1.14 or earlier.\n\n### From 14.x to 15.x\n\nVersion 15 upgrades prometheus-operator from 0.46.x to 0.47.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRDs manually before updating:\n\n```console\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 13.x to 14.x\n\nVersion 14 upgrades prometheus-operator from 0.45.x to 0.46.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRDs manually before updating:\n\n```console\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n```\n\n### From 12.x to 13.x\n\nVersion 13 upgrades prometheus-operator from 0.44.x to 0.45.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating:\n\n```console\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\n```\n\n### From 11.x to 12.x\n\nVersion 12 upgrades prometheus-operator from 0.43.x to 0.44.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating:\n\n```console\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.44/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\n```\n\nThe chart was migrated to support only helm v3 and later.\n\n### From 10.x to 11.x\n\nVersion 11 upgrades prometheus-operator from 0.42.x to 0.43.x. Starting with 0.43.x an additional `AlertmanagerConfigs` CRD is introduced. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating:\n\n```console\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.43/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\n```\n\nVersion 11 removes the deprecated tlsProxy via ghostunnel in favor of native TLS support the prometheus-operator gained with v0.39.0.\n\n### From 9.x to 10.x\n\nVersion 10 upgrades prometheus-operator from 0.38.x to 0.42.x. Starting with 0.40.x an additional `Probes` CRD is introduced. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating:\n\n```console\nkubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.42/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\n```\n\n### From 8.x to 9.x\n\nVersion 9 of the helm chart removes the existing `additionalScrapeConfigsExternal` in favour of `additionalScrapeConfigsSecret`. This change lets users specify the secret name and secret key to use for the additional scrape configuration of prometheus. This is useful for users that have prometheus-operator as a subchart and also have a template that creates the additional scrape configuration.\n\n### From 7.x to 8.x\n\nDue to new template functions being used in the rules in version 8.x.x of the chart, an upgrade to Prometheus Operator and Prometheus is necessary in order to support them. First, upgrade to the latest version of 7.x.x\n\n```console\nhelm upgrade [RELEASE_NAME] prometheus-community/kube-prometheus-stack --version 7.5.0\n```\n\nThen upgrade to 8.x.x\n\n```console\nhelm upgrade [RELEASE_NAME] prometheus-community/kube-prometheus-stack --version [8.x.x]\n```\n\nMinimal recommended Prometheus version for this chart release is `2.12.x`\n\n### From 6.x to 7.x\n\nDue to a change in grafana subchart, version 7.x.x now requires Helm >= 2.12.0.\n\n### From 5.x to 6.x\n\nDue to a change in deployment labels of kube-state-metrics, the upgrade requires `helm upgrade --force` in order to re-create the deployment. If this is not done an error will occur indicating that the deployment cannot be modified:\n\n```console\ninvalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{\"app.kubernetes.io/name\":\"kube-state-metrics\"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable\n```\n\nIf this error has already been encountered, a `helm history` command can be used to determine which release has worked, then `helm rollback` to the release, then `helm upgrade --force` to this new one\n\n## Configuration\n\nSee [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments:\n\n```console\nhelm show values prometheus-community/kube-prometheus-stack\n```\n\nYou may also `helm show values` on this chart's [dependencies](#dependencies) for additional options.\n\n### Multiple releases\n\nThe same chart can be used to run multiple Prometheus instances in the same cluster if required. To achieve this, it is necessary to run only one instance of prometheus-operator and a pair of alertmanager pods for an HA configuration, while all other components need to be disabled. To disable a dependency during installation, set `kubeStateMetrics.enabled`, `nodeExporter.enabled` and `grafana.enabled` to `false`.\n\n## Work-Arounds for Known Issues\n\n### Running on private GKE clusters\n\nWhen Google configure the control plane for private clusters, they automatically configure VPC peering between your Kubernetes cluster’s network and a separate Google managed project. In order to restrict what Google are able to access within your cluster, the firewall rules configured restrict access to your Kubernetes pods. This means that in order to use the webhook component with a GKE private cluster, you must configure an additional firewall rule to allow the GKE control plane access to your webhook pod.\n\nYou can read more information on how to add firewall rules for the GKE control plane nodes in the [GKE docs](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules)\n\nAlternatively, you can disable the hooks by setting `prometheusOperator.admissionWebhooks.enabled=false`.\n\n## PrometheusRules Admission Webhooks\n\nWith Prometheus Operator version 0.30+, the core Prometheus Operator pod exposes an endpoint that will integrate with the `validatingwebhookconfiguration` Kubernetes feature to prevent malformed rules from being added to the cluster.\n\n### How the Chart Configures the Hooks\n\nA validating and mutating webhook configuration requires the endpoint to which the request is sent to use TLS. It is possible to set up custom certificates to do this, but in most cases, a self-signed certificate is enough. The setup of this component requires some more complex orchestration when using helm. The steps are created to be idempotent and to allow turning the feature on and off without running into helm quirks.\n\n1. A pre-install hook provisions a certificate into the same namespace using a format compatible with provisioning using end user certificates. If the certificate already exists, the hook exits.\n2. The prometheus operator pod is configured to use a TLS proxy container, which will load that certificate.\n3. Validating and Mutating webhook configurations are created in the cluster, with their failure mode set to Ignore. This allows rules to be created by the same chart at the same time, even though the webhook has not yet been fully set up - it does not have the correct CA field set.\n4. A post-install hook reads the CA from the secret created by step 1 and patches the Validating and Mutating webhook configurations. This process will allow a custom CA provisioned by some other process to also be patched into the webhook configurations. The chosen failure policy is also patched into the webhook configurations\n\n### Alternatives\n\nIt should be possible to use [jetstack/cert-manager](https://github.com/jetstack/cert-manager) if a more complete solution is required, but it has not been tested.\n\nYou can enable automatic self-signed TLS certificate provisioning via cert-manager by setting the `prometheusOperator.admissionWebhooks.certManager.enabled` value to true.\n\n### Limitations\n\nBecause the operator can only run as a single pod, there is potential for this component failure to cause rule deployment failure. Because this risk is outweighed by the benefit of having validation, the feature is enabled by default.\n\n## Developing Prometheus Rules and Grafana Dashboards\n\nThis chart Grafana Dashboards and Prometheus Rules are just a copy from [prometheus-operator/prometheus-operator](https://github.com/prometheus-operator/prometheus-operator) and other sources, synced (with alterations) by scripts in [hack](hack) folder. In order to introduce any changes you need to first [add them to the original repository](https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/customizations/developing-prometheus-rules-and-grafana-dashboards.md) and then sync there by scripts.\n\n## Further Information\n\nFor more in-depth documentation of configuration options meanings, please see\n\n- [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator)\n- [Prometheus](https://prometheus.io/docs/introduction/overview/)\n- [Grafana](https://github.com/grafana/helm-charts/tree/main/charts/grafana#grafana-helm-chart)\n\n## prometheus.io/scrape\n\nThe prometheus operator does not support annotation-based discovery of services, using the `PodMonitor` or `ServiceMonitor` CRD in its place as they provide far more configuration options.\nFor information on how to use PodMonitors/ServiceMonitors, please see the documentation on the `prometheus-operator/prometheus-operator` documentation here:\n\n- [ServiceMonitors](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md#include-servicemonitors)\n- [PodMonitors](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md#include-podmonitors)\n- [Running Exporters](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/running-exporters.md)\n\nBy default, Prometheus discovers PodMonitors and ServiceMonitors within its namespace, that are labeled with the same release tag as the prometheus-operator release.\nSometimes, you may need to discover custom PodMonitors/ServiceMonitors, for example used to scrape data from third-party applications.\nAn easy way of doing this, without compromising the default PodMonitors/ServiceMonitors discovery, is allowing Prometheus to discover all PodMonitors/ServiceMonitors within its namespace, without applying label filtering.\nTo do so, you can set `prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues` and `prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues` to `false`.\n\n## Migrating from stable/prometheus-operator chart\n\n## Zero downtime\n\nSince `kube-prometheus-stack` is fully compatible with the `stable/prometheus-operator` chart, a migration without downtime can be achieved.\nHowever, the old name prefix needs to be kept. If you want the new name please follow the step by step guide below (with downtime).\n\nYou can override the name to achieve this:\n\n```console\nhelm upgrade prometheus-operator prometheus-community/kube-prometheus-stack -n monitoring --reuse-values --set nameOverride=prometheus-operator\n```\n\n**Note**: It is recommended to run this first with `--dry-run --debug`.\n\n## Redeploy with new name (downtime)\n\nIf the **prometheus-operator** values are compatible with the new **kube-prometheus-stack** chart, please follow the below steps for migration:\n\n> The guide presumes that chart is deployed in `monitoring` namespace and the deployments are running there. If in other namespace, please replace the `monitoring` to the deployed namespace.\n\n1. Patch the PersistenceVolume created/used by the prometheus-operator chart to `Retain` claim policy:\n\n    ```console\n    kubectl patch pv/<PersistentVolume name> -p '{\"spec\":{\"persistentVolumeReclaimPolicy\":\"Retain\"}}'\n    ```\n\n    **Note:** To execute the above command, the user must have a cluster wide permission. Please refer [Kubernetes RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)\n\n2. Uninstall the **prometheus-operator** release and delete the existing PersistentVolumeClaim, and verify PV become Released.\n\n    ```console\n    helm uninstall prometheus-operator -n monitoring\n    kubectl delete pvc/<PersistenceVolumeClaim name> -n monitoring\n    ```\n\n    Additionally, you have to manually remove the remaining `prometheus-operator-kubelet` service.\n\n    ```console\n    kubectl delete service/prometheus-operator-kubelet -n kube-system\n    ```\n\n    You can choose to remove all your existing CRDs (ServiceMonitors, Podmonitors, etc.) if you want to.\n\n3. Remove current `spec.claimRef` values to change the PV's status from Released to Available.\n\n    ```console\n    kubectl patch pv/<PersistentVolume name> --type json -p='[{\"op\": \"remove\", \"path\": \"/spec/claimRef\"}]' -n monitoring\n    ```\n\n**Note:** To execute the above command, the user must have a cluster wide permission. Please refer to [Kubernetes RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)\n\nAfter these steps, proceed to a fresh **kube-prometheus-stack** installation and make sure the current release of **kube-prometheus-stack** matching the `volumeClaimTemplate` values in the `values.yaml`.\n\nThe binding is done via matching a specific amount of storage requested and with certain access modes.\n\nFor example, if you had storage specified as this with **prometheus-operator**:\n\n```yaml\nvolumeClaimTemplate:\n  spec:\n    storageClassName: gp2\n    accessModes: [\"ReadWriteOnce\"]\n    resources:\n     requests:\n       storage: 50Gi\n```\n\nYou have to specify matching `volumeClaimTemplate` with 50Gi storage and `ReadWriteOnce` access mode.\n\nAdditionally, you should check the current AZ of your legacy installation's PV, and configure the fresh release to use the same AZ as the old one. If the pods are in a different AZ than the PV, the release will fail to bind the existing one, hence creating a new PV.\n\nThis can be achieved either by specifying the labels through `values.yaml`, e.g. setting `prometheus.prometheusSpec.nodeSelector` to:\n\n```yaml\nnodeSelector:\n  failure-domain.beta.kubernetes.io/zone: east-west-1a\n```\n\nor passing these values as `--set` overrides during installation.\n\nThe new release should now re-attach your previously released PV with its content.\n\n## Migrating from coreos/prometheus-operator chart\n\nThe multiple charts have been combined into a single chart that installs prometheus operator, prometheus, alertmanager, grafana as well as the multitude of exporters necessary to monitor a cluster.\n\nThere is no simple and direct migration path between the charts as the changes are extensive and intended to make the chart easier to support.\n\nThe capabilities of the old chart are all available in the new chart, including the ability to run multiple prometheus instances on a single cluster - you will need to disable the parts of the chart you do not wish to deploy.\n\nYou can check out the tickets for this change [here](https://github.com/prometheus-operator/prometheus-operator/issues/592) and [here](https://github.com/helm/charts/pull/6765).\n\n### High-level overview of Changes\n\n#### Added dependencies\n\nThe chart has added 3 [dependencies](#dependencies).\n\n- Node-Exporter, Kube-State-Metrics: These components are loaded as dependencies into the chart, and are relatively simple components\n- Grafana: The Grafana chart is more feature-rich than this chart - it contains a sidecar that is able to load data sources and dashboards from configmaps deployed into the same cluster. For more information check out the [documentation for the chart](https://github.com/grafana/helm-charts/blob/main/charts/grafana/README.md)\n\n#### Kubelet Service\n\nBecause the kubelet service has a new name in the chart, make sure to clean up the old kubelet service in the `kube-system` namespace to prevent counting container metrics twice.\n\n#### Persistent Volumes\n\nIf you would like to keep the data of the current persistent volumes, it should be possible to attach existing volumes to new PVCs and PVs that are created using the conventions in the new chart. For example, in order to use an existing Azure disk for a helm release called `prometheus-migration` the following resources can be created:\n\n```yaml\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: pvc-prometheus-migration-prometheus-0\nspec:\n  accessModes:\n  - ReadWriteOnce\n  azureDisk:\n    cachingMode: None\n    diskName: pvc-prometheus-migration-prometheus-0\n    diskURI: /subscriptions/f5125d82-2622-4c50-8d25-3f7ba3e9ac4b/resourceGroups/sample-migration-resource-group/providers/Microsoft.Compute/disks/pvc-prometheus-migration-prometheus-0\n    fsType: \"\"\n    kind: Managed\n    readOnly: false\n  capacity:\n    storage: 1Gi\n  persistentVolumeReclaimPolicy: Delete\n  storageClassName: prometheus\n  volumeMode: Filesystem\n```\n\n```yaml\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  labels:\n    app.kubernetes.io/name: prometheus\n    prometheus: prometheus-migration-prometheus\n  name: prometheus-prometheus-migration-prometheus-db-prometheus-prometheus-migration-prometheus-0\n  namespace: monitoring\nspec:\n  accessModes:\n  - ReadWriteOnce\n  resources:\n    requests:\n      storage: 1Gi\n  storageClassName: prometheus\n  volumeMode: Filesystem\n  volumeName: pvc-prometheus-migration-prometheus-0\n```\n\nThe PVC will take ownership of the PV and when you create a release using a persistent volume claim template it will use the existing PVCs as they match the naming convention used by the chart. For other cloud providers similar approaches can be used.\n\n#### KubeProxy\n\nThe metrics bind address of kube-proxy is default to `127.0.0.1:10249` that prometheus instances **cannot** access to. You should expose metrics by changing `metricsBindAddress` field value to `0.0.0.0:10249` if you want to collect them.\n\nDepending on the cluster, the relevant part `config.conf` will be in ConfigMap `kube-system/kube-proxy` or `kube-system/kube-proxy-config`. For example:\n\n```console\nkubectl -n kube-system edit cm kube-proxy\n```\n\n```yaml\napiVersion: v1\ndata:\n  config.conf: |-\n    apiVersion: kubeproxy.config.k8s.io/v1alpha1\n    kind: KubeProxyConfiguration\n    # ...\n    # metricsBindAddress: 127.0.0.1:10249\n    metricsBindAddress: 0.0.0.0:10249\n    # ...\n  kubeconfig.conf: |-\n    # ...\nkind: ConfigMap\nmetadata:\n  labels:\n    app: kube-proxy\n  name: kube-proxy\n  namespace: kube-system\n```\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/crds/Chart.yaml",
    "content": "apiVersion: v2\nname: crds\nversion: 0.0.0\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/crds/README.md",
    "content": "# crds subchart\n\nSee: [https://github.com/prometheus-community/helm-charts/issues/3548](https://github.com/prometheus-community/helm-charts/issues/3548)\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/crds/crds/crd-alertmanagerconfigs.yaml",
    "content": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: alertmanagerconfigs.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: AlertmanagerConfig\n    listKind: AlertmanagerConfigList\n    plural: alertmanagerconfigs\n    shortNames:\n    - amcfg\n    singular: alertmanagerconfig\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: AlertmanagerConfig defines a namespaced AlertmanagerConfig to\n          be aggregated across multiple namespaces configuring one Alertmanager cluster.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: AlertmanagerConfigSpec is a specification of the desired\n              behavior of the Alertmanager configuration. By definition, the Alertmanager\n              configuration only applies to alerts for which the `namespace` label\n              is equal to the namespace of the AlertmanagerConfig resource.\n            properties:\n              inhibitRules:\n                description: List of inhibition rules. The rules will only apply to\n                  alerts matching the resource's namespace.\n                items:\n                  description: InhibitRule defines an inhibition rule that allows\n                    to mute alerts when other alerts are already firing. See https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule\n                  properties:\n                    equal:\n                      description: Labels that must have an equal value in the source\n                        and target alert for the inhibition to take effect.\n                      items:\n                        type: string\n                      type: array\n                    sourceMatch:\n                      description: Matchers for which one or more alerts have to exist\n                        for the inhibition to take effect. The operator enforces that\n                        the alert matches the resource's namespace.\n                      items:\n                        description: Matcher defines how to match on alert's labels.\n                        properties:\n                          matchType:\n                            description: Match operation available with AlertManager\n                              >= v0.22.0 and takes precedence over Regex (deprecated)\n                              if non-empty.\n                            enum:\n                            - '!='\n                            - =\n                            - =~\n                            - '!~'\n                            type: string\n                          name:\n                            description: Label to match.\n                            minLength: 1\n                            type: string\n                          regex:\n                            description: Whether to match on equality (false) or regular-expression\n                              (true). Deprecated as of AlertManager >= v0.22.0 where\n                              a user should use MatchType instead.\n                            type: boolean\n                          value:\n                            description: Label value to match.\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    targetMatch:\n                      description: Matchers that have to be fulfilled in the alerts\n                        to be muted. The operator enforces that the alert matches\n                        the resource's namespace.\n                      items:\n                        description: Matcher defines how to match on alert's labels.\n                        properties:\n                          matchType:\n                            description: Match operation available with AlertManager\n                              >= v0.22.0 and takes precedence over Regex (deprecated)\n                              if non-empty.\n                            enum:\n                            - '!='\n                            - =\n                            - =~\n                            - '!~'\n                            type: string\n                          name:\n                            description: Label to match.\n                            minLength: 1\n                            type: string\n                          regex:\n                            description: Whether to match on equality (false) or regular-expression\n                              (true). Deprecated as of AlertManager >= v0.22.0 where\n                              a user should use MatchType instead.\n                            type: boolean\n                          value:\n                            description: Label value to match.\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      type: array\n                  type: object\n                type: array\n              muteTimeIntervals:\n                description: List of MuteTimeInterval specifying when the routes should\n                  be muted.\n                items:\n                  description: MuteTimeInterval specifies the periods in time when\n                    notifications will be muted\n                  properties:\n                    name:\n                      description: Name of the time interval\n                      type: string\n                    timeIntervals:\n                      description: TimeIntervals is a list of TimeInterval\n                      items:\n                        description: TimeInterval describes intervals of time\n                        properties:\n                          daysOfMonth:\n                            description: DaysOfMonth is a list of DayOfMonthRange\n                            items:\n                              description: DayOfMonthRange is an inclusive range of\n                                days of the month beginning at 1\n                              properties:\n                                end:\n                                  description: End of the inclusive range\n                                  maximum: 31\n                                  minimum: -31\n                                  type: integer\n                                start:\n                                  description: Start of the inclusive range\n                                  maximum: 31\n                                  minimum: -31\n                                  type: integer\n                              type: object\n                            type: array\n                          months:\n                            description: Months is a list of MonthRange\n                            items:\n                              description: MonthRange is an inclusive range of months\n                                of the year beginning in January Months can be specified\n                                by name (e.g 'January') by numerical month (e.g '1')\n                                or as an inclusive range (e.g 'January:March', '1:3',\n                                '1:March')\n                              pattern: ^((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12])(?:((:((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12]))$)|$)\n                              type: string\n                            type: array\n                          times:\n                            description: Times is a list of TimeRange\n                            items:\n                              description: TimeRange defines a start and end time\n                                in 24hr format\n                              properties:\n                                endTime:\n                                  description: EndTime is the end time in 24hr format.\n                                  pattern: ^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)\n                                  type: string\n                                startTime:\n                                  description: StartTime is the start time in 24hr\n                                    format.\n                                  pattern: ^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)\n                                  type: string\n                              type: object\n                            type: array\n                          weekdays:\n                            description: Weekdays is a list of WeekdayRange\n                            items:\n                              description: WeekdayRange is an inclusive range of days\n                                of the week beginning on Sunday Days can be specified\n                                by name (e.g 'Sunday') or as an inclusive range (e.g\n                                'Monday:Friday')\n                              pattern: ^((?i)sun|mon|tues|wednes|thurs|fri|satur)day(?:((:(sun|mon|tues|wednes|thurs|fri|satur)day)$)|$)\n                              type: string\n                            type: array\n                          years:\n                            description: Years is a list of YearRange\n                            items:\n                              description: YearRange is an inclusive range of years\n                              pattern: ^2\\d{3}(?::2\\d{3}|$)\n                              type: string\n                            type: array\n                        type: object\n                      type: array\n                  type: object\n                type: array\n              receivers:\n                description: List of receivers.\n                items:\n                  description: Receiver defines one or more notification integrations.\n                  properties:\n                    emailConfigs:\n                      description: List of Email configurations.\n                      items:\n                        description: EmailConfig configures notifications via Email.\n                        properties:\n                          authIdentity:\n                            description: The identity to use for authentication.\n                            type: string\n                          authPassword:\n                            description: The secret's key that contains the password\n                              to use for authentication. The secret needs to be in\n                              the same namespace as the AlertmanagerConfig object\n                              and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          authSecret:\n                            description: The secret's key that contains the CRAM-MD5\n                              secret. The secret needs to be in the same namespace\n                              as the AlertmanagerConfig object and accessible by the\n                              Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          authUsername:\n                            description: The username to use for authentication.\n                            type: string\n                          from:\n                            description: The sender address.\n                            type: string\n                          headers:\n                            description: Further headers email header key/value pairs.\n                              Overrides any headers previously set by the notification\n                              implementation.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: Key of the tuple.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: Value of the tuple.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                          hello:\n                            description: The hostname to identify to the SMTP server.\n                            type: string\n                          html:\n                            description: The HTML body of the email notification.\n                            type: string\n                          requireTLS:\n                            description: The SMTP TLS requirement. Note that Go does\n                              not support unencrypted connections to remote SMTP endpoints.\n                            type: boolean\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          smarthost:\n                            description: The SMTP host and port through which emails\n                              are sent. E.g. example.com:25\n                            type: string\n                          text:\n                            description: The text body of the email notification.\n                            type: string\n                          tlsConfig:\n                            description: TLS configuration\n                            properties:\n                              ca:\n                                description: Certificate authority used when verifying\n                                  server certificates.\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use\n                                      for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap\n                                          or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for\n                                      the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              cert:\n                                description: Client certificate to present when doing\n                                  client-authentication.\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use\n                                      for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap\n                                          or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for\n                                      the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              insecureSkipVerify:\n                                description: Disable target certificate validation.\n                                type: boolean\n                              keySecret:\n                                description: Secret containing the client key file\n                                  for the targets.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serverName:\n                                description: Used to verify the hostname for the targets.\n                                type: string\n                            type: object\n                          to:\n                            description: The email address to send notifications to.\n                            type: string\n                        type: object\n                      type: array\n                    name:\n                      description: Name of the receiver. Must be unique across all\n                        items from the list.\n                      minLength: 1\n                      type: string\n                    opsgenieConfigs:\n                      description: List of OpsGenie configurations.\n                      items:\n                        description: OpsGenieConfig configures notifications via OpsGenie.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config\n                        properties:\n                          actions:\n                            description: Comma separated list of actions that will\n                              be available for the alert.\n                            type: string\n                          apiKey:\n                            description: The secret's key that contains the OpsGenie\n                              API key. The secret needs to be in the same namespace\n                              as the AlertmanagerConfig object and accessible by the\n                              Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          apiURL:\n                            description: The URL to send OpsGenie API requests to.\n                            type: string\n                          description:\n                            description: Description of the incident.\n                            type: string\n                          details:\n                            description: A set of arbitrary key/value pairs that provide\n                              further detail about the incident.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: Key of the tuple.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: Value of the tuple.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                          entity:\n                            description: Optional field that can be used to specify\n                              which domain alert is related to.\n                            type: string\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: The secret's key that contains the\n                                      credentials of the request\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: Set the authentication type. Defaults\n                                      to Bearer, Basic will cause an error\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: Alert text limited to 130 characters.\n                            type: string\n                          note:\n                            description: Additional alert note.\n                            type: string\n                          priority:\n                            description: Priority level of alert. Possible values\n                              are P1, P2, P3, P4, and P5.\n                            type: string\n                          responders:\n                            description: List of responders responsible for notifications.\n                            items:\n                              description: OpsGenieConfigResponder defines a responder\n                                to an incident. One of `id`, `name` or `username`\n                                has to be defined.\n                              properties:\n                                id:\n                                  description: ID of the responder.\n                                  type: string\n                                name:\n                                  description: Name of the responder.\n                                  type: string\n                                type:\n                                  description: Type of responder.\n                                  enum:\n                                  - team\n                                  - teams\n                                  - user\n                                  - escalation\n                                  - schedule\n                                  minLength: 1\n                                  type: string\n                                username:\n                                  description: Username of the responder.\n                                  type: string\n                              required:\n                              - type\n                              type: object\n                            type: array\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          source:\n                            description: Backlink to the sender of the notification.\n                            type: string\n                          tags:\n                            description: Comma separated list of tags attached to\n                              the notifications.\n                            type: string\n                          updateAlerts:\n                            description: Whether to update message and description\n                              of the alert in OpsGenie if it already exists By default,\n                              the alert is never updated in OpsGenie, the new message\n                              only appears in activity log.\n                            type: boolean\n                        type: object\n                      type: array\n                    pagerdutyConfigs:\n                      description: List of PagerDuty configurations.\n                      items:\n                        description: PagerDutyConfig configures notifications via\n                          PagerDuty. See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config\n                        properties:\n                          class:\n                            description: The class/type of the event.\n                            type: string\n                          client:\n                            description: Client identification.\n                            type: string\n                          clientURL:\n                            description: Backlink to the sender of notification.\n                            type: string\n                          component:\n                            description: The part or component of the affected system\n                              that is broken.\n                            type: string\n                          description:\n                            description: Description of the incident.\n                            type: string\n                          details:\n                            description: Arbitrary key/value pairs that provide further\n                              detail about the incident.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: Key of the tuple.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: Value of the tuple.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                          group:\n                            description: A cluster or grouping of sources.\n                            type: string\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: The secret's key that contains the\n                                      credentials of the request\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: Set the authentication type. Defaults\n                                      to Bearer, Basic will cause an error\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          pagerDutyImageConfigs:\n                            description: A list of image details to attach that provide\n                              further detail about an incident.\n                            items:\n                              description: PagerDutyImageConfig attaches images to\n                                an incident\n                              properties:\n                                alt:\n                                  description: Alt is the optional alternative text\n                                    for the image.\n                                  type: string\n                                href:\n                                  description: Optional URL; makes the image a clickable\n                                    link.\n                                  type: string\n                                src:\n                                  description: Src of the image being attached to\n                                    the incident\n                                  type: string\n                              type: object\n                            type: array\n                          pagerDutyLinkConfigs:\n                            description: A list of link details to attach that provide\n                              further detail about an incident.\n                            items:\n                              description: PagerDutyLinkConfig attaches text links\n                                to an incident\n                              properties:\n                                alt:\n                                  description: Text that describes the purpose of\n                                    the link, and can be used as the link's text.\n                                  type: string\n                                href:\n                                  description: Href is the URL of the link to be attached\n                                  type: string\n                              type: object\n                            type: array\n                          routingKey:\n                            description: The secret's key that contains the PagerDuty\n                              integration key (when using Events API v2). Either this\n                              field or `serviceKey` needs to be defined. The secret\n                              needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          serviceKey:\n                            description: The secret's key that contains the PagerDuty\n                              service key (when using integration type \"Prometheus\").\n                              Either this field or `routingKey` needs to be defined.\n                              The secret needs to be in the same namespace as the\n                              AlertmanagerConfig object and accessible by the Prometheus\n                              Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          severity:\n                            description: Severity of the incident.\n                            type: string\n                          url:\n                            description: The URL to send requests to.\n                            type: string\n                        type: object\n                      type: array\n                    pushoverConfigs:\n                      description: List of Pushover configurations.\n                      items:\n                        description: PushoverConfig configures notifications via Pushover.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config\n                        properties:\n                          expire:\n                            description: How long your notification will continue\n                              to be retried for, unless the user acknowledges the\n                              notification.\n                            pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$\n                            type: string\n                          html:\n                            description: Whether notification message is HTML or plain\n                              text.\n                            type: boolean\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: The secret's key that contains the\n                                      credentials of the request\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: Set the authentication type. Defaults\n                                      to Bearer, Basic will cause an error\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: Notification message.\n                            type: string\n                          priority:\n                            description: Priority, see https://pushover.net/api#priority\n                            type: string\n                          retry:\n                            description: How often the Pushover servers will send\n                              the same notification to the user. Must be at least\n                              30 seconds.\n                            pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          sound:\n                            description: The name of one of the sounds supported by\n                              device clients to override the user's default sound\n                              choice\n                            type: string\n                          title:\n                            description: Notification title.\n                            type: string\n                          token:\n                            description: The secret's key that contains the registered\n                              application's API token, see https://pushover.net/apps.\n                              The secret needs to be in the same namespace as the\n                              AlertmanagerConfig object and accessible by the Prometheus\n                              Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          url:\n                            description: A supplementary URL shown alongside the message.\n                            type: string\n                          urlTitle:\n                            description: A title for supplementary URL, otherwise\n                              just the URL is shown\n                            type: string\n                          userKey:\n                            description: The secret's key that contains the recipient\n                              user's user key. The secret needs to be in the same\n                              namespace as the AlertmanagerConfig object and accessible\n                              by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                        type: object\n                      type: array\n                    slackConfigs:\n                      description: List of Slack configurations.\n                      items:\n                        description: SlackConfig configures notifications via Slack.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#slack_config\n                        properties:\n                          actions:\n                            description: A list of Slack actions that are sent with\n                              each notification.\n                            items:\n                              description: SlackAction configures a single Slack action\n                                that is sent with each notification. See https://api.slack.com/docs/message-attachments#action_fields\n                                and https://api.slack.com/docs/message-buttons for\n                                more information.\n                              properties:\n                                confirm:\n                                  description: SlackConfirmationField protect users\n                                    from destructive actions or particularly distinguished\n                                    decisions by asking them to confirm their button\n                                    click one more time. See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields\n                                    for more information.\n                                  properties:\n                                    dismissText:\n                                      type: string\n                                    okText:\n                                      type: string\n                                    text:\n                                      minLength: 1\n                                      type: string\n                                    title:\n                                      type: string\n                                  required:\n                                  - text\n                                  type: object\n                                name:\n                                  type: string\n                                style:\n                                  type: string\n                                text:\n                                  minLength: 1\n                                  type: string\n                                type:\n                                  minLength: 1\n                                  type: string\n                                url:\n                                  type: string\n                                value:\n                                  type: string\n                              required:\n                              - text\n                              - type\n                              type: object\n                            type: array\n                          apiURL:\n                            description: The secret's key that contains the Slack\n                              webhook URL. The secret needs to be in the same namespace\n                              as the AlertmanagerConfig object and accessible by the\n                              Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          callbackId:\n                            type: string\n                          channel:\n                            description: The channel or user to send notifications\n                              to.\n                            type: string\n                          color:\n                            type: string\n                          fallback:\n                            type: string\n                          fields:\n                            description: A list of Slack fields that are sent with\n                              each notification.\n                            items:\n                              description: SlackField configures a single Slack field\n                                that is sent with each notification. Each field must\n                                contain a title, value, and optionally, a boolean\n                                value to indicate if the field is short enough to\n                                be displayed next to other fields designated as short.\n                                See https://api.slack.com/docs/message-attachments#fields\n                                for more information.\n                              properties:\n                                short:\n                                  type: boolean\n                                title:\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  minLength: 1\n                                  type: string\n                              required:\n                              - title\n                              - value\n                              type: object\n                            type: array\n                          footer:\n                            type: string\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: The secret's key that contains the\n                                      credentials of the request\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: Set the authentication type. Defaults\n                                      to Bearer, Basic will cause an error\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          iconEmoji:\n                            type: string\n                          iconURL:\n                            type: string\n                          imageURL:\n                            type: string\n                          linkNames:\n                            type: boolean\n                          mrkdwnIn:\n                            items:\n                              type: string\n                            type: array\n                          pretext:\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          shortFields:\n                            type: boolean\n                          text:\n                            type: string\n                          thumbURL:\n                            type: string\n                          title:\n                            type: string\n                          titleLink:\n                            type: string\n                          username:\n                            type: string\n                        type: object\n                      type: array\n                    snsConfigs:\n                      description: List of SNS configurations\n                      items:\n                        description: SNSConfig configures notifications via AWS SNS.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#sns_configs\n                        properties:\n                          apiURL:\n                            description: The SNS API URL i.e. https://sns.us-east-2.amazonaws.com.\n                              If not specified, the SNS API URL from the SNS SDK will\n                              be used.\n                            type: string\n                          attributes:\n                            additionalProperties:\n                              type: string\n                            description: SNS message attributes.\n                            type: object\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: The secret's key that contains the\n                                      credentials of the request\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: Set the authentication type. Defaults\n                                      to Bearer, Basic will cause an error\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: The message content of the SNS notification.\n                            type: string\n                          phoneNumber:\n                            description: Phone number if message is delivered via\n                              SMS in E.164 format. If you don't specify this value,\n                              you must specify a value for the TopicARN or TargetARN.\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          sigv4:\n                            description: Configures AWS's Signature Verification 4\n                              signing process to sign requests.\n                            properties:\n                              accessKey:\n                                description: AccessKey is the AWS API key. If not\n                                  specified, the environment variable `AWS_ACCESS_KEY_ID`\n                                  is used.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              profile:\n                                description: Profile is the named AWS profile used\n                                  to authenticate.\n                                type: string\n                              region:\n                                description: Region is the AWS region. If blank, the\n                                  region from the default credentials chain used.\n                                type: string\n                              roleArn:\n                                description: RoleArn is the named AWS profile used\n                                  to authenticate.\n                                type: string\n                              secretKey:\n                                description: SecretKey is the AWS API secret. If not\n                                  specified, the environment variable `AWS_SECRET_ACCESS_KEY`\n                                  is used.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          subject:\n                            description: Subject line when the message is delivered\n                              to email endpoints.\n                            type: string\n                          targetARN:\n                            description: The  mobile platform endpoint ARN if message\n                              is delivered via mobile notifications. If you don't\n                              specify this value, you must specify a value for the\n                              topic_arn or PhoneNumber.\n                            type: string\n                          topicARN:\n                            description: SNS topic ARN, i.e. arn:aws:sns:us-east-2:698519295917:My-Topic\n                              If you don't specify this value, you must specify a\n                              value for the PhoneNumber or TargetARN.\n                            type: string\n                        type: object\n                      type: array\n                    telegramConfigs:\n                      description: List of Telegram configurations.\n                      items:\n                        description: TelegramConfig configures notifications via Telegram.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#telegram_config\n                        properties:\n                          apiURL:\n                            description: The Telegram API URL i.e. https://api.telegram.org.\n                              If not specified, default API URL will be used.\n                            type: string\n                          botToken:\n                            description: Telegram bot token The secret needs to be\n                              in the same namespace as the AlertmanagerConfig object\n                              and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          chatID:\n                            description: The Telegram chat ID.\n                            format: int64\n                            type: integer\n                          disableNotifications:\n                            description: Disable telegram notifications\n                            type: boolean\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: The secret's key that contains the\n                                      credentials of the request\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: Set the authentication type. Defaults\n                                      to Bearer, Basic will cause an error\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: Message template\n                            type: string\n                          parseMode:\n                            description: Parse mode for telegram message\n                            enum:\n                            - MarkdownV2\n                            - Markdown\n                            - HTML\n                            type: string\n                          sendResolved:\n                            description: Whether to notify about resolved alerts.\n                            type: boolean\n                        type: object\n                      type: array\n                    victoropsConfigs:\n                      description: List of VictorOps configurations.\n                      items:\n                        description: VictorOpsConfig configures notifications via\n                          VictorOps. See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config\n                        properties:\n                          apiKey:\n                            description: The secret's key that contains the API key\n                              to use when talking to the VictorOps API. The secret\n                              needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          apiUrl:\n                            description: The VictorOps API URL.\n                            type: string\n                          customFields:\n                            description: Additional custom fields for notification.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: Key of the tuple.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: Value of the tuple.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                          entityDisplayName:\n                            description: Contains summary of the alerted problem.\n                            type: string\n                          httpConfig:\n                            description: The HTTP client's configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: The secret's key that contains the\n                                      credentials of the request\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: Set the authentication type. Defaults\n                                      to Bearer, Basic will cause an error\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          messageType:\n                            description: Describes the behavior of the alert (CRITICAL,\n                              WARNING, INFO).\n                            type: string\n                          monitoringTool:\n                            description: The monitoring tool the state message is\n                              from.\n                            type: string\n                          routingKey:\n                            description: A key used to map the alert to a team.\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          stateMessage:\n                            description: Contains long explanation of the alerted\n                              problem.\n                            type: string\n                        type: object\n                      type: array\n                    webhookConfigs:\n                      description: List of webhook configurations.\n                      items:\n                        description: WebhookConfig configures notifications via a\n                          generic receiver supporting the webhook payload. See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config\n                        properties:\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: The secret's key that contains the\n                                      credentials of the request\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: Set the authentication type. Defaults\n                                      to Bearer, Basic will cause an error\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          maxAlerts:\n                            description: Maximum number of alerts to be sent per webhook\n                              message. When 0, all alerts are included.\n                            format: int32\n                            minimum: 0\n                            type: integer\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          url:\n                            description: The URL to send HTTP POST requests to. `urlSecret`\n                              takes precedence over `url`. One of `urlSecret` and\n                              `url` should be defined.\n                            type: string\n                          urlSecret:\n                            description: The secret's key that contains the webhook\n                              URL to send HTTP requests to. `urlSecret` takes precedence\n                              over `url`. One of `urlSecret` and `url` should be defined.\n                              The secret needs to be in the same namespace as the\n                              AlertmanagerConfig object and accessible by the Prometheus\n                              Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                        type: object\n                      type: array\n                    wechatConfigs:\n                      description: List of WeChat configurations.\n                      items:\n                        description: WeChatConfig configures notifications via WeChat.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config\n                        properties:\n                          agentID:\n                            type: string\n                          apiSecret:\n                            description: The secret's key that contains the WeChat\n                              API key. The secret needs to be in the same namespace\n                              as the AlertmanagerConfig object and accessible by the\n                              Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          apiURL:\n                            description: The WeChat API URL.\n                            type: string\n                          corpID:\n                            description: The corp id for authentication.\n                            type: string\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: The secret's key that contains the\n                                      credentials of the request\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: Set the authentication type. Defaults\n                                      to Bearer, Basic will cause an error\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: API request data as defined by the WeChat\n                              API.\n                            type: string\n                          messageType:\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          toParty:\n                            type: string\n                          toTag:\n                            type: string\n                          toUser:\n                            type: string\n                        type: object\n                      type: array\n                  required:\n                  - name\n                  type: object\n                type: array\n              route:\n                description: The Alertmanager route definition for alerts matching\n                  the resource's namespace. If present, it will be added to the generated\n                  Alertmanager configuration as a first-level route.\n                properties:\n                  activeTimeIntervals:\n                    description: ActiveTimeIntervals is a list of MuteTimeInterval\n                      names when this route should be active.\n                    items:\n                      type: string\n                    type: array\n                  continue:\n                    description: Boolean indicating whether an alert should continue\n                      matching subsequent sibling nodes. It will always be overridden\n                      to true for the first-level route by the Prometheus operator.\n                    type: boolean\n                  groupBy:\n                    description: List of labels to group by. Labels must not be repeated\n                      (unique list). Special label \"...\" (aggregate by all possible\n                      labels), if provided, must be the only element in the list.\n                    items:\n                      type: string\n                    type: array\n                  groupInterval:\n                    description: 'How long to wait before sending an updated notification.\n                      Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$`\n                      Example: \"5m\"'\n                    type: string\n                  groupWait:\n                    description: 'How long to wait before sending the initial notification.\n                      Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$`\n                      Example: \"30s\"'\n                    type: string\n                  matchers:\n                    description: 'List of matchers that the alert''s labels should\n                      match. For the first level route, the operator removes any existing\n                      equality and regexp matcher on the `namespace` label and adds\n                      a `namespace: <object namespace>` matcher.'\n                    items:\n                      description: Matcher defines how to match on alert's labels.\n                      properties:\n                        matchType:\n                          description: Match operation available with AlertManager\n                            >= v0.22.0 and takes precedence over Regex (deprecated)\n                            if non-empty.\n                          enum:\n                          - '!='\n                          - =\n                          - =~\n                          - '!~'\n                          type: string\n                        name:\n                          description: Label to match.\n                          minLength: 1\n                          type: string\n                        regex:\n                          description: Whether to match on equality (false) or regular-expression\n                            (true). Deprecated as of AlertManager >= v0.22.0 where\n                            a user should use MatchType instead.\n                          type: boolean\n                        value:\n                          description: Label value to match.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                  muteTimeIntervals:\n                    description: 'Note: this comment applies to the field definition\n                      above but appears below otherwise it gets included in the generated\n                      manifest. CRD schema doesn''t support self-referential types\n                      for now (see https://github.com/kubernetes/kubernetes/issues/62872).\n                      We have to use an alternative type to circumvent the limitation.\n                      The downside is that the Kube API can''t validate the data beyond\n                      the fact that it is a valid JSON representation. MuteTimeIntervals\n                      is a list of MuteTimeInterval names that will mute this route\n                      when matched,'\n                    items:\n                      type: string\n                    type: array\n                  receiver:\n                    description: Name of the receiver for this route. If not empty,\n                      it should be listed in the `receivers` field.\n                    type: string\n                  repeatInterval:\n                    description: 'How long to wait before repeating the last notification.\n                      Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$`\n                      Example: \"4h\"'\n                    type: string\n                  routes:\n                    description: Child routes.\n                    items:\n                      x-kubernetes-preserve-unknown-fields: true\n                    type: array\n                type: object\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/crds/crds/crd-alertmanagers.yaml",
    "content": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: alertmanagers.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: Alertmanager\n    listKind: AlertmanagerList\n    plural: alertmanagers\n    shortNames:\n    - am\n    singular: alertmanager\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Alertmanager\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Replicas\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: Alertmanager describes an Alertmanager cluster.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: 'Specification of the desired behavior of the Alertmanager\n              cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              additionalPeers:\n                description: AdditionalPeers allows injecting a set of additional\n                  Alertmanagers to peer with to form a highly available cluster.\n                items:\n                  type: string\n                type: array\n              affinity:\n                description: If specified, the pod's scheduling constraints.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the\n                      pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node matches\n                          the corresponding matchExpressions; the node(s) with the\n                          highest sum are the most preferred.\n                        items:\n                          description: An empty preferred scheduling term matches\n                            all objects with implicit weight 0 (i.e. it's a no-op).\n                            A null preferred scheduling term matches no objects (i.e.\n                            is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the\n                                corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding\n                                nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to an update), the system may or may not try to\n                          eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms.\n                              The terms are ORed.\n                            items:\n                              description: A null or empty node selector term matches\n                                no objects. The requirements of them are ANDed. The\n                                TopologySelectorTerm type implements a subset of the\n                                NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate\n                      this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to a pod label update), the system may or may\n                          not try to eventually evict the pod from its node. When\n                          there are multiple elements, the lists of nodes corresponding\n                          to each podAffinityTerm are intersected, i.e. all terms\n                          must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g.\n                      avoid putting this pod in the same node, zone, etc. as some\n                      other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the anti-affinity expressions specified\n                          by this field, but it may choose a node that violates one\n                          or more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling anti-affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the anti-affinity requirements specified by\n                          this field are not met at scheduling time, the pod will\n                          not be scheduled onto the node. If the anti-affinity requirements\n                          specified by this field cease to be met at some point during\n                          pod execution (e.g. due to a pod label update), the system\n                          may or may not try to eventually evict the pod from its\n                          node. When there are multiple elements, the lists of nodes\n                          corresponding to each podAffinityTerm are intersected, i.e.\n                          all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                type: object\n              alertmanagerConfigMatcherStrategy:\n                description: The AlertmanagerConfigMatcherStrategy defines how AlertmanagerConfig\n                  objects match the alerts. In the future more options may be added.\n                properties:\n                  type:\n                    default: OnNamespace\n                    description: If set to `OnNamespace`, the operator injects a label\n                      matcher matching the namespace of the AlertmanagerConfig object\n                      for all its routes and inhibition rules. `None` will not add\n                      any additional matchers other than the ones specified in the\n                      AlertmanagerConfig. Default is `OnNamespace`.\n                    enum:\n                    - OnNamespace\n                    - None\n                    type: string\n                type: object\n              alertmanagerConfigNamespaceSelector:\n                description: Namespaces to be selected for AlertmanagerConfig discovery.\n                  If nil, only check own namespace.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagerConfigSelector:\n                description: AlertmanagerConfigs to be selected for to merge and configure\n                  Alertmanager with.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagerConfiguration:\n                description: 'EXPERIMENTAL: alertmanagerConfiguration specifies the\n                  configuration of Alertmanager. If defined, it takes precedence over\n                  the `configSecret` field. This field may change in future releases.'\n                properties:\n                  global:\n                    description: Defines the global parameters of the Alertmanager\n                      configuration.\n                    properties:\n                      httpConfig:\n                        description: HTTP client configuration.\n                        properties:\n                          authorization:\n                            description: Authorization header configuration for the\n                              client. This is mutually exclusive with BasicAuth and\n                              is only available starting from Alertmanager v0.22+.\n                            properties:\n                              credentials:\n                                description: The secret's key that contains the credentials\n                                  of the request\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              type:\n                                description: Set the authentication type. Defaults\n                                  to Bearer, Basic will cause an error\n                                type: string\n                            type: object\n                          basicAuth:\n                            description: BasicAuth for the client. This is mutually\n                              exclusive with Authorization. If both are defined, BasicAuth\n                              takes precedence.\n                            properties:\n                              password:\n                                description: The secret in the service monitor namespace\n                                  that contains the password for authentication.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              username:\n                                description: The secret in the service monitor namespace\n                                  that contains the username for authentication.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          bearerTokenSecret:\n                            description: The secret's key that contains the bearer\n                              token to be used by the client for authentication. The\n                              secret needs to be in the same namespace as the Alertmanager\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          followRedirects:\n                            description: FollowRedirects specifies whether the client\n                              should follow HTTP 3xx redirects.\n                            type: boolean\n                          oauth2:\n                            description: OAuth2 client credentials used to fetch a\n                              token for the targets.\n                            properties:\n                              clientId:\n                                description: The secret or configmap containing the\n                                  OAuth2 client id\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use\n                                      for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap\n                                          or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for\n                                      the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              clientSecret:\n                                description: The secret containing the OAuth2 client\n                                  secret\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              endpointParams:\n                                additionalProperties:\n                                  type: string\n                                description: Parameters to append to the token URL\n                                type: object\n                              scopes:\n                                description: OAuth2 scopes used for the token request\n                                items:\n                                  type: string\n                                type: array\n                              tokenUrl:\n                                description: The URL to fetch the token from\n                                minLength: 1\n                                type: string\n                            required:\n                            - clientId\n                            - clientSecret\n                            - tokenUrl\n                            type: object\n                          proxyURL:\n                            description: Optional proxy URL.\n                            type: string\n                          tlsConfig:\n                            description: TLS configuration for the client.\n                            properties:\n                              ca:\n                                description: Certificate authority used when verifying\n                                  server certificates.\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use\n                                      for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap\n                                          or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for\n                                      the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              cert:\n                                description: Client certificate to present when doing\n                                  client-authentication.\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use\n                                      for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap\n                                          or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for\n                                      the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              insecureSkipVerify:\n                                description: Disable target certificate validation.\n                                type: boolean\n                              keySecret:\n                                description: Secret containing the client key file\n                                  for the targets.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serverName:\n                                description: Used to verify the hostname for the targets.\n                                type: string\n                            type: object\n                        type: object\n                      opsGenieApiKey:\n                        description: The default OpsGenie API Key.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      opsGenieApiUrl:\n                        description: The default OpsGenie API URL.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      pagerdutyUrl:\n                        description: The default Pagerduty URL.\n                        type: string\n                      resolveTimeout:\n                        description: ResolveTimeout is the default value used by alertmanager\n                          if the alert does not include EndsAt, after this time passes\n                          it can declare the alert as resolved if it has not been\n                          updated. This has no impact on alerts from Prometheus, as\n                          they always include EndsAt.\n                        pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                        type: string\n                      slackApiUrl:\n                        description: The default Slack API URL.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  name:\n                    description: The name of the AlertmanagerConfig resource which\n                      is used to generate the Alertmanager configuration. It must\n                      be defined in the same namespace as the Alertmanager object.\n                      The operator will not enforce a `namespace` label for routes\n                      and inhibition rules.\n                    minLength: 1\n                    type: string\n                  templates:\n                    description: Custom notification templates.\n                    items:\n                      description: SecretOrConfigMap allows to specify data as a Secret\n                        or ConfigMap. Fields are mutually exclusive.\n                      properties:\n                        configMap:\n                          description: ConfigMap containing data to use for the targets.\n                          properties:\n                            key:\n                              description: The key to select.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the ConfigMap or its key\n                                must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        secret:\n                          description: Secret containing data to use for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    type: array\n                type: object\n              automountServiceAccountToken:\n                description: 'AutomountServiceAccountToken indicates whether a service\n                  account token should be automatically mounted in the pod. If the\n                  service account has `automountServiceAccountToken: true`, set the\n                  field to `false` to opt out of automounting API credentials.'\n                type: boolean\n              baseImage:\n                description: 'Base image that is used to deploy pods, without tag.\n                  Deprecated: use ''image'' instead'\n                type: string\n              clusterAdvertiseAddress:\n                description: 'ClusterAdvertiseAddress is the explicit address to advertise\n                  in cluster. Needs to be provided for non RFC1918 [1] (public) addresses.\n                  [1] RFC1918: https://tools.ietf.org/html/rfc1918'\n                type: string\n              clusterGossipInterval:\n                description: Interval between gossip attempts.\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              clusterPeerTimeout:\n                description: Timeout for cluster peering.\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              clusterPushpullInterval:\n                description: Interval between pushpull attempts.\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              configMaps:\n                description: ConfigMaps is a list of ConfigMaps in the same namespace\n                  as the Alertmanager object, which shall be mounted into the Alertmanager\n                  Pods. Each ConfigMap is added to the StatefulSet definition as a\n                  volume named `configmap-<configmap-name>`. The ConfigMaps are mounted\n                  into `/etc/alertmanager/configmaps/<configmap-name>` in the 'alertmanager'\n                  container.\n                items:\n                  type: string\n                type: array\n              configSecret:\n                description: \"ConfigSecret is the name of a Kubernetes Secret in the\n                  same namespace as the Alertmanager object, which contains the configuration\n                  for this Alertmanager instance. If empty, it defaults to `alertmanager-<alertmanager-name>`.\n                  \\n The Alertmanager configuration should be available under the\n                  `alertmanager.yaml` key. Additional keys from the original secret\n                  are copied to the generated secret and mounted into the `/etc/alertmanager/config`\n                  directory in the `alertmanager` container. \\n If either the secret\n                  or the `alertmanager.yaml` key is missing, the operator provisions\n                  a minimal Alertmanager configuration with one empty receiver (effectively\n                  dropping alert notifications).\"\n                type: string\n              containers:\n                description: 'Containers allows injecting additional containers. This\n                  is meant to allow adding an authentication proxy to an Alertmanager\n                  pod. Containers described here modify an operator generated container\n                  if they share the same name and modifications are done via a strategic\n                  merge patch. The current container names are: `alertmanager` and\n                  `config-reloader`. Overriding containers is entirely outside the\n                  scope of what the maintainers will support and by doing so, you\n                  accept that this behaviour may break at any time without notice.'\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              externalUrl:\n                description: The external URL the Alertmanager instances will be available\n                  under. This is necessary to generate correct URLs. This is necessary\n                  if Alertmanager is not served from root of a DNS name.\n                type: string\n              forceEnableClusterMode:\n                description: ForceEnableClusterMode ensures Alertmanager does not\n                  deactivate the cluster mode when running with a single replica.\n                  Use case is e.g. spanning an Alertmanager cluster across Kubernetes\n                  clusters with a single replica in each.\n                type: boolean\n              hostAliases:\n                description: Pods' hostAliases configuration\n                items:\n                  description: HostAlias holds the mapping between IP and hostnames\n                    that will be injected as an entry in the pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: Hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              image:\n                description: Image if specified has precedence over baseImage, tag\n                  and sha combinations. Specifying the version is still necessary\n                  to ensure the Prometheus Operator knows what version of Alertmanager\n                  is being configured.\n                type: string\n              imagePullPolicy:\n                description: Image pull policy for the 'alertmanager', 'init-config-reloader'\n                  and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\n                  for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: An optional list of references to secrets in the same\n                  namespace to use for pulling prometheus and alertmanager images\n                  from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: LocalObjectReference contains enough information to\n                    let you locate the referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        TODO: Add other useful fields. apiVersion, kind, uid?'\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: 'InitContainers allows adding initContainers to the pod\n                  definition. Those can be used to e.g. fetch secrets for injection\n                  into the Alertmanager configuration from external sources. Any errors\n                  during the execution of an initContainer will lead to a restart\n                  of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n                  InitContainers described here modify an operator generated init\n                  containers if they share the same name and modifications are done\n                  via a strategic merge patch. The current init container name is:\n                  `init-config-reloader`. Overriding init containers is entirely outside\n                  the scope of what the maintainers will support and by doing so,\n                  you accept that this behaviour may break at any time without notice.'\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              listenLocal:\n                description: ListenLocal makes the Alertmanager server listen on loopback,\n                  so that it does not bind against the Pod IP. Note this is only for\n                  the Alertmanager UI, not the gossip communication.\n                type: boolean\n              logFormat:\n                description: Log format for Alertmanager to be configured with.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: Log level for Alertmanager to be configured with.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: Minimum number of seconds for which a newly created pod\n                  should be ready without any of its container crashing for it to\n                  be considered available. Defaults to 0 (pod will be considered available\n                  as soon as it is ready) This is an alpha field from kubernetes 1.22\n                  until 1.24 which requires enabling the StatefulSetMinReadySeconds\n                  feature gate.\n                format: int32\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: Define which Nodes the Pods are scheduled on.\n                type: object\n              paused:\n                description: If set to true all actions on the underlying managed\n                  objects are not goint to be performed, except for delete actions.\n                type: boolean\n              podMetadata:\n                description: PodMetadata configures Labels and Annotations which are\n                  propagated to the alertmanager pods.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: 'Annotations is an unstructured key value map stored\n                      with a resource that may be set by external tools to store and\n                      retrieve arbitrary metadata. They are not queryable and should\n                      be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: 'Map of string keys and values that can be used to\n                      organize and categorize (scope and select) objects. May match\n                      selectors of replication controllers and services. More info:\n                      http://kubernetes.io/docs/user-guide/labels'\n                    type: object\n                  name:\n                    description: 'Name must be unique within a namespace. Is required\n                      when creating resources, although some resources may allow a\n                      client to request the generation of an appropriate name automatically.\n                      Name is primarily intended for creation idempotence and configuration\n                      definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                    type: string\n                type: object\n              portName:\n                default: web\n                description: Port name used for the pods and governing service. Defaults\n                  to `web`.\n                type: string\n              priorityClassName:\n                description: Priority class assigned to the Pods\n                type: string\n              replicas:\n                description: Size is the expected size of the alertmanager cluster.\n                  The controller will eventually make the size of the running cluster\n                  equal to the expected size.\n                format: int32\n                type: integer\n              resources:\n                description: Define resources requests and limits for single Pods.\n                properties:\n                  claims:\n                    description: \"Claims lists the names of resources, defined in\n                      spec.resourceClaims, that are used by this container. \\n This\n                      is an alpha field and requires enabling the DynamicResourceAllocation\n                      feature gate. \\n This field is immutable. It can only be set\n                      for containers.\"\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: Name must match the name of one entry in pod.spec.resourceClaims\n                            of the Pod where this field is used. It makes that resource\n                            available inside a container.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Limits describes the maximum amount of compute resources\n                      allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Requests describes the minimum amount of compute\n                      resources required. If Requests is omitted for a container,\n                      it defaults to Limits if that is explicitly specified, otherwise\n                      to an implementation-defined value. Requests cannot exceed Limits.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                type: object\n              retention:\n                default: 120h\n                description: Time duration Alertmanager shall retain data for. Default\n                  is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)`\n                  (milliseconds seconds minutes hours).\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              routePrefix:\n                description: The route prefix Alertmanager registers HTTP handlers\n                  for. This is useful, if using ExternalURL and a proxy is rewriting\n                  HTTP routes of a request, and the actual ExternalURL is still true,\n                  but the server serves requests under a different route prefix. For\n                  example for use with `kubectl proxy`.\n                type: string\n              secrets:\n                description: Secrets is a list of Secrets in the same namespace as\n                  the Alertmanager object, which shall be mounted into the Alertmanager\n                  Pods. Each Secret is added to the StatefulSet definition as a volume\n                  named `secret-<secret-name>`. The Secrets are mounted into `/etc/alertmanager/secrets/<secret-name>`\n                  in the 'alertmanager' container.\n                items:\n                  type: string\n                type: array\n              securityContext:\n                description: SecurityContext holds pod-level security attributes and\n                  common container settings. This defaults to the default PodSecurityContext.\n                properties:\n                  fsGroup:\n                    description: \"A special supplemental group that applies to all\n                      containers in a pod. Some volume types allow the Kubelet to\n                      change the ownership of that volume to be owned by the pod:\n                      \\n 1. The owning GID will be the FSGroup 2. The setgid bit is\n                      set (new files created in the volume will be owned by FSGroup)\n                      3. The permission bits are OR'd with rw-rw---- \\n If unset,\n                      the Kubelet will not modify the ownership and permissions of\n                      any volume. Note that this field cannot be set when spec.os.name\n                      is windows.\"\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: 'fsGroupChangePolicy defines behavior of changing\n                      ownership and permission of the volume before being exposed\n                      inside Pod. This field will only apply to volume types which\n                      support fsGroup based ownership(and permissions). It will have\n                      no effect on ephemeral volume types such as: secret, configmaps\n                      and emptydir. Valid values are \"OnRootMismatch\" and \"Always\".\n                      If not specified, \"Always\" is used. Note that this field cannot\n                      be set when spec.os.name is windows.'\n                    type: string\n                  runAsGroup:\n                    description: The GID to run the entrypoint of the container process.\n                      Uses runtime default if unset. May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: Indicates that the container must run as a non-root\n                      user. If true, the Kubelet will validate the image at runtime\n                      to ensure that it does not run as UID 0 (root) and fail to start\n                      the container if it does. If unset or false, no such validation\n                      will be performed. May also be set in SecurityContext.  If set\n                      in both SecurityContext and PodSecurityContext, the value specified\n                      in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: The UID to run the entrypoint of the container process.\n                      Defaults to user specified in image metadata if unspecified.\n                      May also be set in SecurityContext.  If set in both SecurityContext\n                      and PodSecurityContext, the value specified in SecurityContext\n                      takes precedence for that container. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxOptions:\n                    description: The SELinux context to be applied to all containers.\n                      If unspecified, the container runtime will allocate a random\n                      SELinux context for each container.  May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to\n                          the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to\n                          the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to\n                          the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to\n                          the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: The seccomp options to use by the containers in this\n                      pod. Note that this field cannot be set when spec.os.name is\n                      windows.\n                    properties:\n                      localhostProfile:\n                        description: localhostProfile indicates a profile defined\n                          in a file on the node should be used. The profile must be\n                          preconfigured on the node to work. Must be a descending\n                          path, relative to the kubelet's configured seccomp profile\n                          location. Must only be set if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: \"type indicates which kind of seccomp profile\n                          will be applied. Valid options are: \\n Localhost - a profile\n                          defined in a file on the node should be used. RuntimeDefault\n                          - the container runtime default profile should be used.\n                          Unconfined - no profile should be applied.\"\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: A list of groups applied to the first process run\n                      in each container, in addition to the container's primary GID,\n                      the fsGroup (if specified), and group memberships defined in\n                      the container image for the uid of the container process. If\n                      unspecified, no additional groups are added to any container.\n                      Note that group memberships defined in the container image for\n                      the uid of the container process are still effective, even if\n                      they are not included in this list. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                  sysctls:\n                    description: Sysctls hold a list of namespaced sysctls used for\n                      the pod. Pods with unsupported sysctls (by the container runtime)\n                      might fail to launch. Note that this field cannot be set when\n                      spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                  windowsOptions:\n                    description: The Windows specific settings applied to all containers.\n                      If unspecified, the options within a container's SecurityContext\n                      will be used. If set in both SecurityContext and PodSecurityContext,\n                      the value specified in SecurityContext takes precedence. Note\n                      that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: GMSACredentialSpec is where the GMSA admission\n                          webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                          inlines the contents of the GMSA credential spec named by\n                          the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA\n                          credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: HostProcess determines if a container should\n                          be run as a 'Host Process' container. This field is alpha-level\n                          and will only be honored by components that enable the WindowsHostProcessContainers\n                          feature flag. Setting this field without the feature flag\n                          will result in errors when validating the Pod. All of a\n                          Pod's containers must have the same effective HostProcess\n                          value (it is not allowed to have a mix of HostProcess containers\n                          and non-HostProcess containers).  In addition, if HostProcess\n                          is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: The UserName in Windows to run the entrypoint\n                          of the container process. Defaults to the user specified\n                          in image metadata if unspecified. May also be set in PodSecurityContext.\n                          If set in both SecurityContext and PodSecurityContext, the\n                          value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: ServiceAccountName is the name of the ServiceAccount\n                  to use to run the Prometheus Pods.\n                type: string\n              sha:\n                description: 'SHA of Alertmanager container image to be deployed.\n                  Defaults to the value of `version`. Similar to a tag, but the SHA\n                  explicitly deploys an immutable container image. Version and Tag\n                  are ignored if SHA is set. Deprecated: use ''image'' instead.  The\n                  image digest can be specified as part of the image URL.'\n                type: string\n              storage:\n                description: Storage is the definition of how storage will be used\n                  by the Alertmanager instances.\n                properties:\n                  disableMountSubPath:\n                    description: '*Deprecated: subPath usage will be removed in a\n                      future release.*'\n                    type: boolean\n                  emptyDir:\n                    description: 'EmptyDirVolumeSource to be used by the StatefulSet.\n                      If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`.\n                      More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir'\n                    properties:\n                      medium:\n                        description: 'medium represents what type of storage medium\n                          should back this directory. The default is \"\" which means\n                          to use the node''s default medium. Must be an empty string\n                          (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: 'sizeLimit is the total amount of local storage\n                          required for this EmptyDir volume. The size limit is also\n                          applicable for memory medium. The maximum usage on memory\n                          medium EmptyDir would be the minimum value between the SizeLimit\n                          specified here and the sum of memory limits of all containers\n                          in a pod. The default is nil which means that the limit\n                          is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: 'EphemeralVolumeSource to be used by the StatefulSet.\n                      This is a beta field in k8s 1.21 and GA in 1.15. For lower versions,\n                      starting with k8s 1.19, it requires enabling the GenericEphemeralVolume\n                      feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes'\n                    properties:\n                      volumeClaimTemplate:\n                        description: \"Will be used to create a stand-alone PVC to\n                          provision the volume. The pod in which this EphemeralVolumeSource\n                          is embedded will be the owner of the PVC, i.e. the PVC will\n                          be deleted together with the pod.  The name of the PVC will\n                          be `<pod name>-<volume name>` where `<volume name>` is the\n                          name from the `PodSpec.Volumes` array entry. Pod validation\n                          will reject the pod if the concatenated name is not valid\n                          for a PVC (for example, too long). \\n An existing PVC with\n                          that name that is not owned by the pod will *not* be used\n                          for the pod to avoid using an unrelated volume by mistake.\n                          Starting the pod is then blocked until the unrelated PVC\n                          is removed. If such a pre-created PVC is meant to be used\n                          by the pod, the PVC has to updated with an owner reference\n                          to the pod once the pod exists. Normally this should not\n                          be necessary, but it may be useful when manually reconstructing\n                          a broken cluster. \\n This field is read-only and no changes\n                          will be made by Kubernetes to the PVC after it has been\n                          created. \\n Required, must not be nil.\"\n                        properties:\n                          metadata:\n                            description: May contain labels and annotations that will\n                              be copied into the PVC when creating it. No other fields\n                              are allowed and will be rejected during validation.\n                            type: object\n                          spec:\n                            description: The specification for the PersistentVolumeClaim.\n                              The entire content is copied unchanged into the PVC\n                              that gets created from this template. The same fields\n                              as in a PersistentVolumeClaim are also valid here.\n                            properties:\n                              accessModes:\n                                description: 'accessModes contains the desired access\n                                  modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                items:\n                                  type: string\n                                type: array\n                              dataSource:\n                                description: 'dataSource field can be used to specify\n                                  either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                  * An existing PVC (PersistentVolumeClaim) If the\n                                  provisioner or an external controller can support\n                                  the specified data source, it will create a new\n                                  volume based on the contents of the specified data\n                                  source. When the AnyVolumeDataSource feature gate\n                                  is enabled, dataSource contents will be copied to\n                                  dataSourceRef, and dataSourceRef contents will be\n                                  copied to dataSource when dataSourceRef.namespace\n                                  is not specified. If the namespace is specified,\n                                  then dataSourceRef will not be copied to dataSource.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: 'dataSourceRef specifies the object from\n                                  which to populate the volume with data, if a non-empty\n                                  volume is desired. This may be any object from a\n                                  non-empty API group (non core object) or a PersistentVolumeClaim\n                                  object. When this field is specified, volume binding\n                                  will only succeed if the type of the specified object\n                                  matches some installed volume populator or dynamic\n                                  provisioner. This field will replace the functionality\n                                  of the dataSource field and as such if both fields\n                                  are non-empty, they must have the same value. For\n                                  backwards compatibility, when namespace isn''t specified\n                                  in dataSourceRef, both fields (dataSource and dataSourceRef)\n                                  will be set to the same value automatically if one\n                                  of them is empty and the other is non-empty. When\n                                  namespace is specified in dataSourceRef, dataSource\n                                  isn''t set to the same value and must be empty.\n                                  There are three important differences between dataSource\n                                  and dataSourceRef: * While dataSource only allows\n                                  two specific types of objects, dataSourceRef allows\n                                  any non-core object, as well as PersistentVolumeClaim\n                                  objects. * While dataSource ignores disallowed values\n                                  (dropping them), dataSourceRef preserves all values,\n                                  and generates an error if a disallowed value is\n                                  specified. * While dataSource only allows local\n                                  objects, dataSourceRef allows objects in any namespaces.\n                                  (Beta) Using this field requires the AnyVolumeDataSource\n                                  feature gate to be enabled. (Alpha) Using the namespace\n                                  field of dataSourceRef requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                  namespace:\n                                    description: Namespace is the namespace of resource\n                                      being referenced Note that when a namespace\n                                      is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                      object is required in the referent namespace\n                                      to allow that namespace's owner to accept the\n                                      reference. See the ReferenceGrant documentation\n                                      for details. (Alpha) This field requires the\n                                      CrossNamespaceVolumeDataSource feature gate\n                                      to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: 'resources represents the minimum resources\n                                  the volume should have. If RecoverVolumeExpansionFailure\n                                  feature is enabled users are allowed to specify\n                                  resource requirements that are lower than previous\n                                  value but must still be higher than capacity recorded\n                                  in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                properties:\n                                  claims:\n                                    description: \"Claims lists the names of resources,\n                                      defined in spec.resourceClaims, that are used\n                                      by this container. \\n This is an alpha field\n                                      and requires enabling the DynamicResourceAllocation\n                                      feature gate. \\n This field is immutable. It\n                                      can only be set for containers.\"\n                                    items:\n                                      description: ResourceClaim references one entry\n                                        in PodSpec.ResourceClaims.\n                                      properties:\n                                        name:\n                                          description: Name must match the name of\n                                            one entry in pod.spec.resourceClaims of\n                                            the Pod where this field is used. It makes\n                                            that resource available inside a container.\n                                          type: string\n                                      required:\n                                      - name\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-map-keys:\n                                    - name\n                                    x-kubernetes-list-type: map\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Limits describes the maximum amount\n                                      of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Requests describes the minimum amount\n                                      of compute resources required. If Requests is\n                                      omitted for a container, it defaults to Limits\n                                      if that is explicitly specified, otherwise to\n                                      an implementation-defined value. Requests cannot\n                                      exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes\n                                  to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label\n                                      selector requirements. The requirements are\n                                      ANDed.\n                                    items:\n                                      description: A label selector requirement is\n                                        a selector that contains values, a key, and\n                                        an operator that relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the\n                                            selector applies to.\n                                          type: string\n                                        operator:\n                                          description: operator represents a key's\n                                            relationship to a set of values. Valid\n                                            operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: values is an array of string\n                                            values. If the operator is In or NotIn,\n                                            the values array must be non-empty. If\n                                            the operator is Exists or DoesNotExist,\n                                            the values array must be empty. This array\n                                            is replaced during a strategic merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: matchLabels is a map of {key,value}\n                                      pairs. A single {key,value} in the matchLabels\n                                      map is equivalent to an element of matchExpressions,\n                                      whose key field is \"key\", the operator is \"In\",\n                                      and the values array contains only \"value\".\n                                      The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: 'storageClassName is the name of the\n                                  StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                type: string\n                              volumeMode:\n                                description: volumeMode defines what type of volume\n                                  is required by the claim. Value of Filesystem is\n                                  implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to\n                                  the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: Defines the PVC spec to be used by the Prometheus\n                      StatefulSets. The easiest way to use a volume that cannot be\n                      automatically provisioned is to use a label selector alongside\n                      manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: 'APIVersion defines the versioned schema of this\n                          representation of an object. Servers should convert recognized\n                          schemas to the latest internal value, and may reject unrecognized\n                          values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n                        type: string\n                      kind:\n                        description: 'Kind is a string value representing the REST\n                          resource this object represents. Servers may infer this\n                          from the endpoint the client submits requests to. Cannot\n                          be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                        type: string\n                      metadata:\n                        description: EmbeddedMetadata contains metadata relevant to\n                          an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: 'Annotations is an unstructured key value\n                              map stored with a resource that may be set by external\n                              tools to store and retrieve arbitrary metadata. They\n                              are not queryable and should be preserved when modifying\n                              objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: 'Map of string keys and values that can be\n                              used to organize and categorize (scope and select) objects.\n                              May match selectors of replication controllers and services.\n                              More info: http://kubernetes.io/docs/user-guide/labels'\n                            type: object\n                          name:\n                            description: 'Name must be unique within a namespace.\n                              Is required when creating resources, although some resources\n                              may allow a client to request the generation of an appropriate\n                              name automatically. Name is primarily intended for creation\n                              idempotence and configuration definition. Cannot be\n                              updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                            type: string\n                        type: object\n                      spec:\n                        description: 'Defines the desired characteristics of a volume\n                          requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the desired access\n                              modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          dataSource:\n                            description: 'dataSource field can be used to specify\n                              either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                              * An existing PVC (PersistentVolumeClaim) If the provisioner\n                              or an external controller can support the specified\n                              data source, it will create a new volume based on the\n                              contents of the specified data source. When the AnyVolumeDataSource\n                              feature gate is enabled, dataSource contents will be\n                              copied to dataSourceRef, and dataSourceRef contents\n                              will be copied to dataSource when dataSourceRef.namespace\n                              is not specified. If the namespace is specified, then\n                              dataSourceRef will not be copied to dataSource.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: 'dataSourceRef specifies the object from\n                              which to populate the volume with data, if a non-empty\n                              volume is desired. This may be any object from a non-empty\n                              API group (non core object) or a PersistentVolumeClaim\n                              object. When this field is specified, volume binding\n                              will only succeed if the type of the specified object\n                              matches some installed volume populator or dynamic provisioner.\n                              This field will replace the functionality of the dataSource\n                              field and as such if both fields are non-empty, they\n                              must have the same value. For backwards compatibility,\n                              when namespace isn''t specified in dataSourceRef, both\n                              fields (dataSource and dataSourceRef) will be set to\n                              the same value automatically if one of them is empty\n                              and the other is non-empty. When namespace is specified\n                              in dataSourceRef, dataSource isn''t set to the same\n                              value and must be empty. There are three important differences\n                              between dataSource and dataSourceRef: * While dataSource\n                              only allows two specific types of objects, dataSourceRef\n                              allows any non-core object, as well as PersistentVolumeClaim\n                              objects. * While dataSource ignores disallowed values\n                              (dropping them), dataSourceRef preserves all values,\n                              and generates an error if a disallowed value is specified.\n                              * While dataSource only allows local objects, dataSourceRef\n                              allows objects in any namespaces. (Beta) Using this\n                              field requires the AnyVolumeDataSource feature gate\n                              to be enabled. (Alpha) Using the namespace field of\n                              dataSourceRef requires the CrossNamespaceVolumeDataSource\n                              feature gate to be enabled.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: Namespace is the namespace of resource\n                                  being referenced Note that when a namespace is specified,\n                                  a gateway.networking.k8s.io/ReferenceGrant object\n                                  is required in the referent namespace to allow that\n                                  namespace's owner to accept the reference. See the\n                                  ReferenceGrant documentation for details. (Alpha)\n                                  This field requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: 'resources represents the minimum resources\n                              the volume should have. If RecoverVolumeExpansionFailure\n                              feature is enabled users are allowed to specify resource\n                              requirements that are lower than previous value but\n                              must still be higher than capacity recorded in the status\n                              field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                            properties:\n                              claims:\n                                description: \"Claims lists the names of resources,\n                                  defined in spec.resourceClaims, that are used by\n                                  this container. \\n This is an alpha field and requires\n                                  enabling the DynamicResourceAllocation feature gate.\n                                  \\n This field is immutable. It can only be set for\n                                  containers.\"\n                                items:\n                                  description: ResourceClaim references one entry\n                                    in PodSpec.ResourceClaims.\n                                  properties:\n                                    name:\n                                      description: Name must match the name of one\n                                        entry in pod.spec.resourceClaims of the Pod\n                                        where this field is used. It makes that resource\n                                        available inside a container.\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                type: array\n                                x-kubernetes-list-map-keys:\n                                - name\n                                x-kubernetes-list-type: map\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Limits describes the maximum amount\n                                  of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Requests describes the minimum amount\n                                  of compute resources required. If Requests is omitted\n                                  for a container, it defaults to Limits if that is\n                                  explicitly specified, otherwise to an implementation-defined\n                                  value. Requests cannot exceed Limits. More info:\n                                  https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to\n                              consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector\n                                  requirements. The requirements are ANDed.\n                                items:\n                                  description: A label selector requirement is a selector\n                                    that contains values, a key, and an operator that\n                                    relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector\n                                        applies to.\n                                      type: string\n                                    operator:\n                                      description: operator represents a key's relationship\n                                        to a set of values. Valid operators are In,\n                                        NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: values is an array of string values.\n                                        If the operator is In or NotIn, the values\n                                        array must be non-empty. If the operator is\n                                        Exists or DoesNotExist, the values array must\n                                        be empty. This array is replaced during a\n                                        strategic merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: matchLabels is a map of {key,value} pairs.\n                                  A single {key,value} in the matchLabels map is equivalent\n                                  to an element of matchExpressions, whose key field\n                                  is \"key\", the operator is \"In\", and the values array\n                                  contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: 'storageClassName is the name of the StorageClass\n                              required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                            type: string\n                          volumeMode:\n                            description: volumeMode defines what type of volume is\n                              required by the claim. Value of Filesystem is implied\n                              when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the\n                              PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: '*Deprecated: this field is never set.*'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the actual access modes\n                              the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: allocatedResources is the storage resource\n                              within AllocatedResources tracks the capacity allocated\n                              to a PVC. It may be larger than the actual capacity\n                              when a volume expansion operation is requested. For\n                              storage quota, the larger value from allocatedResources\n                              and PVC.spec.resources is used. If allocatedResources\n                              is not set, PVC.spec.resources alone is used for quota\n                              calculation. If a volume expansion capacity request\n                              is lowered, allocatedResources is only lowered if there\n                              are no expansion operations in progress and if the actual\n                              volume capacity is equal or lower than the requested\n                              capacity. This is an alpha field and requires enabling\n                              RecoverVolumeExpansionFailure feature.\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources\n                              of the underlying volume.\n                            type: object\n                          conditions:\n                            description: conditions is the current Condition of persistent\n                              volume claim. If underlying persistent volume is being\n                              resized then the Condition will be set to 'ResizeStarted'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains\n                                details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed\n                                    the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the\n                                    condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message\n                                    indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: reason is a unique, this should be\n                                    a short, machine understandable string that gives\n                                    the reason for condition's last transition. If\n                                    it reports \"ResizeStarted\" that means the underlying\n                                    persistent volume is being resized.\n                                  type: string\n                                status:\n                                  type: string\n                                type:\n                                  description: PersistentVolumeClaimConditionType\n                                    is a valid value of PersistentVolumeClaimCondition.Type\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                          resizeStatus:\n                            description: resizeStatus stores status of resize operation.\n                              ResizeStatus is not set by default but when expansion\n                              is complete resizeStatus is set to empty string by resize\n                              controller or kubelet. This is an alpha field and requires\n                              enabling RecoverVolumeExpansionFailure feature.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tag:\n                description: 'Tag of Alertmanager container image to be deployed.\n                  Defaults to the value of `version`. Version is ignored if Tag is\n                  set. Deprecated: use ''image'' instead.  The image tag can be specified\n                  as part of the image URL.'\n                type: string\n              tolerations:\n                description: If specified, the pod's tolerations.\n                items:\n                  description: The pod this Toleration is attached to tolerates any\n                    taint that matches the triple <key,value,effect> using the matching\n                    operator <operator>.\n                  properties:\n                    effect:\n                      description: Effect indicates the taint effect to match. Empty\n                        means match all taint effects. When specified, allowed values\n                        are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: Key is the taint key that the toleration applies\n                        to. Empty means match all taint keys. If the key is empty,\n                        operator must be Exists; this combination means to match all\n                        values and all keys.\n                      type: string\n                    operator:\n                      description: Operator represents a key's relationship to the\n                        value. Valid operators are Exists and Equal. Defaults to Equal.\n                        Exists is equivalent to wildcard for value, so that a pod\n                        can tolerate all taints of a particular category.\n                      type: string\n                    tolerationSeconds:\n                      description: TolerationSeconds represents the period of time\n                        the toleration (which must be of effect NoExecute, otherwise\n                        this field is ignored) tolerates the taint. By default, it\n                        is not set, which means tolerate the taint forever (do not\n                        evict). Zero and negative values will be treated as 0 (evict\n                        immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: Value is the taint value the toleration matches\n                        to. If the operator is Exists, the value should be empty,\n                        otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: If specified, the pod's topology spread constraints.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching\n                    pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: LabelSelector is used to find matching pods. Pods\n                        that match this label selector are counted to determine the\n                        number of pods in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector\n                            requirements. The requirements are ANDed.\n                          items:\n                            description: A label selector requirement is a selector\n                              that contains values, a key, and an operator that relates\n                              the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector\n                                  applies to.\n                                type: string\n                              operator:\n                                description: operator represents a key's relationship\n                                  to a set of values. Valid operators are In, NotIn,\n                                  Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: values is an array of string values.\n                                  If the operator is In or NotIn, the values array\n                                  must be non-empty. If the operator is Exists or\n                                  DoesNotExist, the values array must be empty. This\n                                  array is replaced during a strategic merge patch.\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: matchLabels is a map of {key,value} pairs.\n                            A single {key,value} in the matchLabels map is equivalent\n                            to an element of matchExpressions, whose key field is\n                            \"key\", the operator is \"In\", and the values array contains\n                            only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: \"MatchLabelKeys is a set of pod label keys to select\n                        the pods over which spreading will be calculated. The keys\n                        are used to lookup values from the incoming pod labels, those\n                        key-value labels are ANDed with labelSelector to select the\n                        group of existing pods over which spreading will be calculated\n                        for the incoming pod. The same key is forbidden to exist in\n                        both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot\n                        be set when LabelSelector isn't set. Keys that don't exist\n                        in the incoming pod labels will be ignored. A null or empty\n                        list means only match against labelSelector. \\n This is a\n                        beta field and requires the MatchLabelKeysInPodTopologySpread\n                        feature gate to be enabled (enabled by default).\"\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: 'MaxSkew describes the degree to which pods may\n                        be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,\n                        it is the maximum permitted difference between the number\n                        of matching pods in the target topology and the global minimum.\n                        The global minimum is the minimum number of matching pods\n                        in an eligible domain or zero if the number of eligible domains\n                        is less than MinDomains. For example, in a 3-zone cluster,\n                        MaxSkew is set to 1, and pods with the same labelSelector\n                        spread as 2/2/1: In this case, the global minimum is 1. |\n                        zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew\n                        is 1, incoming pod can only be scheduled to zone3 to become\n                        2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1)\n                        on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming\n                        pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`,\n                        it is used to give higher precedence to topologies that satisfy\n                        it. It''s a required field. Default value is 1 and 0 is not\n                        allowed.'\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: \"MinDomains indicates a minimum number of eligible\n                        domains. When the number of eligible domains with matching\n                        topology keys is less than minDomains, Pod Topology Spread\n                        treats \\\"global minimum\\\" as 0, and then the calculation of\n                        Skew is performed. And when the number of eligible domains\n                        with matching topology keys equals or greater than minDomains,\n                        this value has no effect on scheduling. As a result, when\n                        the number of eligible domains is less than minDomains, scheduler\n                        won't schedule more than maxSkew Pods to those domains. If\n                        value is nil, the constraint behaves as if MinDomains is equal\n                        to 1. Valid values are integers greater than 0. When value\n                        is not nil, WhenUnsatisfiable must be DoNotSchedule. \\n For\n                        example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains\n                        is set to 5 and pods with the same labelSelector spread as\n                        2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  |\n                        The number of domains is less than 5(MinDomains), so \\\"global\n                        minimum\\\" is treated as 0. In this situation, new pod with\n                        the same labelSelector cannot be scheduled, because computed\n                        skew will be 3(3 - 0) if new Pod is scheduled to any of the\n                        three zones, it will violate MaxSkew. \\n This is a beta field\n                        and requires the MinDomainsInPodTopologySpread feature gate\n                        to be enabled (enabled by default).\"\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: \"NodeAffinityPolicy indicates how we will treat\n                        Pod's nodeAffinity/nodeSelector when calculating pod topology\n                        spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector\n                        are included in the calculations. - Ignore: nodeAffinity/nodeSelector\n                        are ignored. All nodes are included in the calculations. \\n\n                        If this value is nil, the behavior is equivalent to the Honor\n                        policy. This is a beta-level feature default enabled by the\n                        NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    nodeTaintsPolicy:\n                      description: \"NodeTaintsPolicy indicates how we will treat node\n                        taints when calculating pod topology spread skew. Options\n                        are: - Honor: nodes without taints, along with tainted nodes\n                        for which the incoming pod has a toleration, are included.\n                        - Ignore: node taints are ignored. All nodes are included.\n                        \\n If this value is nil, the behavior is equivalent to the\n                        Ignore policy. This is a beta-level feature default enabled\n                        by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    topologyKey:\n                      description: TopologyKey is the key of node labels. Nodes that\n                        have a label with this key and identical values are considered\n                        to be in the same topology. We consider each <key, value>\n                        as a \"bucket\", and try to put balanced number of pods into\n                        each bucket. We define a domain as a particular instance of\n                        a topology. Also, we define an eligible domain as a domain\n                        whose nodes meet the requirements of nodeAffinityPolicy and\n                        nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\",\n                        each Node is a domain of that topology. And, if TopologyKey\n                        is \"topology.kubernetes.io/zone\", each zone is a domain of\n                        that topology. It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: 'WhenUnsatisfiable indicates how to deal with a\n                        pod if it doesn''t satisfy the spread constraint. - DoNotSchedule\n                        (default) tells the scheduler not to schedule it. - ScheduleAnyway\n                        tells the scheduler to schedule the pod in any location, but\n                        giving higher precedence to topologies that would help reduce\n                        the skew. A constraint is considered \"Unsatisfiable\" for an\n                        incoming pod if and only if every possible node assignment\n                        for that pod would violate \"MaxSkew\" on some topology. For\n                        example, in a 3-zone cluster, MaxSkew is set to 1, and pods\n                        with the same labelSelector spread as 3/1/1: | zone1 | zone2\n                        | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is\n                        set to DoNotSchedule, incoming pod can only be scheduled to\n                        zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on\n                        zone2(zone3) satisfies MaxSkew(1). In other words, the cluster\n                        can still be imbalanced, but scheduler won''t make it *more*\n                        imbalanced. It''s a required field.'\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              version:\n                description: Version the cluster should be on.\n                type: string\n              volumeMounts:\n                description: VolumeMounts allows configuration of additional VolumeMounts\n                  on the output StatefulSet definition. VolumeMounts specified will\n                  be appended to other VolumeMounts in the alertmanager container,\n                  that are generated as a result of StorageSpec objects.\n                items:\n                  description: VolumeMount describes a mounting of a Volume within\n                    a container.\n                  properties:\n                    mountPath:\n                      description: Path within the container at which the volume should\n                        be mounted.  Must not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: mountPropagation determines how mounts are propagated\n                        from the host to container and the other way around. When\n                        not set, MountPropagationNone is used. This field is beta\n                        in 1.10.\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: Mounted read-only if true, read-write otherwise\n                        (false or unspecified). Defaults to false.\n                      type: boolean\n                    subPath:\n                      description: Path within the volume from which the container's\n                        volume should be mounted. Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: Expanded path within the volume from which the\n                        container's volume should be mounted. Behaves similarly to\n                        SubPath but environment variable references $(VAR_NAME) are\n                        expanded using the container's environment. Defaults to \"\"\n                        (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: Volumes allows configuration of additional volumes on\n                  the output StatefulSet definition. Volumes specified will be appended\n                  to other volumes that are generated as a result of StorageSpec objects.\n                items:\n                  description: Volume represents a named volume in a pod that may\n                    be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: 'awsElasticBlockStore represents an AWS Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly value true will force the readOnly\n                            setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: boolean\n                        volumeID:\n                          description: 'volumeID is unique ID of the persistent disk\n                            resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: azureDisk represents an Azure Data Disk mount on\n                        the host and bind mount to the pod.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None,\n                            Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the\n                            blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob\n                            storage\n                          type: string\n                        fsType:\n                          description: fsType is Filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple\n                            blob disks per storage account  Dedicated: single blob\n                            disk per storage account  Managed: azure managed data\n                            disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: azureFile represents an Azure File Service mount\n                        on the host and bind mount to the pod.\n                      properties:\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains\n                            Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: cephFS represents a Ceph FS mount on the host that\n                        shares a pod's lifetime\n                      properties:\n                        monitors:\n                          description: 'monitors is Required: Monitors is a collection\n                            of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        path:\n                          description: 'path is Optional: Used as the mounted root,\n                            rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: boolean\n                        secretFile:\n                          description: 'secretFile is Optional: SecretFile is the\n                            path to key ring for User, default is /etc/ceph/user.secret\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                        secretRef:\n                          description: 'secretRef is Optional: SecretRef is reference\n                            to the authentication secret for User, default is empty.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is optional: User is the rados user name,\n                            default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: 'cinder represents a cinder volume attached and\n                        mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to\n                            be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                        readOnly:\n                          description: 'readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is optional: points to a secret\n                            object containing parameters used to connect to OpenStack.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: 'volumeID used to identify the volume in cinder.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate\n                        this volume\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items if unspecified, each key-value pair in\n                            the Data field of the referenced ConfigMap will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the ConfigMap, the volume setup will error unless it is\n                            marked optional. Paths must be relative and may not contain\n                            the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its\n                            keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral\n                        storage that is handled by certain external CSI drivers (Beta\n                        feature).\n                      properties:\n                        driver:\n                          description: driver is the name of the CSI driver that handles\n                            this volume. Consult with your admin for the correct name\n                            as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            If not provided, the empty value is passed to the associated\n                            CSI driver which will determine the default filesystem\n                            to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: nodePublishSecretRef is a reference to the\n                            secret object containing sensitive information to pass\n                            to the CSI driver to complete the CSI NodePublishVolume\n                            and NodeUnpublishVolume calls. This field is optional,\n                            and  may be empty if no secret is required. If the secret\n                            object contains more than one secret, all secret references\n                            are passed.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: readOnly specifies a read-only configuration\n                            for the volume. Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: volumeAttributes stores driver-specific properties\n                            that are passed to the CSI driver. Consult your driver's\n                            documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod\n                        that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'Optional: mode bits to use on created files\n                            by default. Must be a Optional: mode bits used to set\n                            permissions on created files by default. Must be an octal\n                            value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information\n                              to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod:\n                                  only annotations, labels, name and namespace are\n                                  supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: 'Optional: mode bits used to set permissions\n                                  on this file, must be an octal value between 0000\n                                  and 0777 or a decimal value between 0 and 511. YAML\n                                  accepts both octal and decimal values, JSON requires\n                                  decimal values for mode bits. If not specified,\n                                  the volume defaultMode will be used. This might\n                                  be in conflict with other options that affect the\n                                  file mode, like fsGroup, and the result can be other\n                                  mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path\n                                  name of the file to be created. Must not be absolute\n                                  or contain the ''..'' path. Must be utf-8 encoded.\n                                  The first item of the relative path must not start\n                                  with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, requests.cpu and requests.memory)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                      type: object\n                    emptyDir:\n                      description: 'emptyDir represents a temporary directory that\n                        shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                      properties:\n                        medium:\n                          description: 'medium represents what type of storage medium\n                            should back this directory. The default is \"\" which means\n                            to use the node''s default medium. Must be an empty string\n                            (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: 'sizeLimit is the total amount of local storage\n                            required for this EmptyDir volume. The size limit is also\n                            applicable for memory medium. The maximum usage on memory\n                            medium EmptyDir would be the minimum value between the\n                            SizeLimit specified here and the sum of memory limits\n                            of all containers in a pod. The default is nil which means\n                            that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: \"ephemeral represents a volume that is handled\n                        by a cluster storage driver. The volume's lifecycle is tied\n                        to the pod that defines it - it will be created before the\n                        pod starts, and deleted when the pod is removed. \\n Use this\n                        if: a) the volume is only needed while the pod runs, b) features\n                        of normal volumes like restoring from snapshot or capacity\n                        tracking are needed, c) the storage driver is specified through\n                        a storage class, and d) the storage driver supports dynamic\n                        volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource\n                        for more information on the connection between this volume\n                        type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim\n                        or one of the vendor-specific APIs for volumes that persist\n                        for longer than the lifecycle of an individual pod. \\n Use\n                        CSI for light-weight local ephemeral volumes if the CSI driver\n                        is meant to be used that way - see the documentation of the\n                        driver for more information. \\n A pod can use both types of\n                        ephemeral volumes and persistent volumes at the same time.\"\n                      properties:\n                        volumeClaimTemplate:\n                          description: \"Will be used to create a stand-alone PVC to\n                            provision the volume. The pod in which this EphemeralVolumeSource\n                            is embedded will be the owner of the PVC, i.e. the PVC\n                            will be deleted together with the pod.  The name of the\n                            PVC will be `<pod name>-<volume name>` where `<volume\n                            name>` is the name from the `PodSpec.Volumes` array entry.\n                            Pod validation will reject the pod if the concatenated\n                            name is not valid for a PVC (for example, too long). \\n\n                            An existing PVC with that name that is not owned by the\n                            pod will *not* be used for the pod to avoid using an unrelated\n                            volume by mistake. Starting the pod is then blocked until\n                            the unrelated PVC is removed. If such a pre-created PVC\n                            is meant to be used by the pod, the PVC has to updated\n                            with an owner reference to the pod once the pod exists.\n                            Normally this should not be necessary, but it may be useful\n                            when manually reconstructing a broken cluster. \\n This\n                            field is read-only and no changes will be made by Kubernetes\n                            to the PVC after it has been created. \\n Required, must\n                            not be nil.\"\n                          properties:\n                            metadata:\n                              description: May contain labels and annotations that\n                                will be copied into the PVC when creating it. No other\n                                fields are allowed and will be rejected during validation.\n                              type: object\n                            spec:\n                              description: The specification for the PersistentVolumeClaim.\n                                The entire content is copied unchanged into the PVC\n                                that gets created from this template. The same fields\n                                as in a PersistentVolumeClaim are also valid here.\n                              properties:\n                                accessModes:\n                                  description: 'accessModes contains the desired access\n                                    modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                  items:\n                                    type: string\n                                  type: array\n                                dataSource:\n                                  description: 'dataSource field can be used to specify\n                                    either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                    * An existing PVC (PersistentVolumeClaim) If the\n                                    provisioner or an external controller can support\n                                    the specified data source, it will create a new\n                                    volume based on the contents of the specified\n                                    data source. When the AnyVolumeDataSource feature\n                                    gate is enabled, dataSource contents will be copied\n                                    to dataSourceRef, and dataSourceRef contents will\n                                    be copied to dataSource when dataSourceRef.namespace\n                                    is not specified. If the namespace is specified,\n                                    then dataSourceRef will not be copied to dataSource.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: 'dataSourceRef specifies the object\n                                    from which to populate the volume with data, if\n                                    a non-empty volume is desired. This may be any\n                                    object from a non-empty API group (non core object)\n                                    or a PersistentVolumeClaim object. When this field\n                                    is specified, volume binding will only succeed\n                                    if the type of the specified object matches some\n                                    installed volume populator or dynamic provisioner.\n                                    This field will replace the functionality of the\n                                    dataSource field and as such if both fields are\n                                    non-empty, they must have the same value. For\n                                    backwards compatibility, when namespace isn''t\n                                    specified in dataSourceRef, both fields (dataSource\n                                    and dataSourceRef) will be set to the same value\n                                    automatically if one of them is empty and the\n                                    other is non-empty. When namespace is specified\n                                    in dataSourceRef, dataSource isn''t set to the\n                                    same value and must be empty. There are three\n                                    important differences between dataSource and dataSourceRef:\n                                    * While dataSource only allows two specific types\n                                    of objects, dataSourceRef allows any non-core\n                                    object, as well as PersistentVolumeClaim objects.\n                                    * While dataSource ignores disallowed values (dropping\n                                    them), dataSourceRef preserves all values, and\n                                    generates an error if a disallowed value is specified.\n                                    * While dataSource only allows local objects,\n                                    dataSourceRef allows objects in any namespaces.\n                                    (Beta) Using this field requires the AnyVolumeDataSource\n                                    feature gate to be enabled. (Alpha) Using the\n                                    namespace field of dataSourceRef requires the\n                                    CrossNamespaceVolumeDataSource feature gate to\n                                    be enabled.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                    namespace:\n                                      description: Namespace is the namespace of resource\n                                        being referenced Note that when a namespace\n                                        is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                        object is required in the referent namespace\n                                        to allow that namespace's owner to accept\n                                        the reference. See the ReferenceGrant documentation\n                                        for details. (Alpha) This field requires the\n                                        CrossNamespaceVolumeDataSource feature gate\n                                        to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: 'resources represents the minimum resources\n                                    the volume should have. If RecoverVolumeExpansionFailure\n                                    feature is enabled users are allowed to specify\n                                    resource requirements that are lower than previous\n                                    value but must still be higher than capacity recorded\n                                    in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                  properties:\n                                    claims:\n                                      description: \"Claims lists the names of resources,\n                                        defined in spec.resourceClaims, that are used\n                                        by this container. \\n This is an alpha field\n                                        and requires enabling the DynamicResourceAllocation\n                                        feature gate. \\n This field is immutable.\n                                        It can only be set for containers.\"\n                                      items:\n                                        description: ResourceClaim references one\n                                          entry in PodSpec.ResourceClaims.\n                                        properties:\n                                          name:\n                                            description: Name must match the name\n                                              of one entry in pod.spec.resourceClaims\n                                              of the Pod where this field is used.\n                                              It makes that resource available inside\n                                              a container.\n                                            type: string\n                                        required:\n                                        - name\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-map-keys:\n                                      - name\n                                      x-kubernetes-list-type: map\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Limits describes the maximum amount\n                                        of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Requests describes the minimum\n                                        amount of compute resources required. If Requests\n                                        is omitted for a container, it defaults to\n                                        Limits if that is explicitly specified, otherwise\n                                        to an implementation-defined value. Requests\n                                        cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes\n                                    to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: 'storageClassName is the name of the\n                                    StorageClass required by the claim. More info:\n                                    https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                  type: string\n                                volumeMode:\n                                  description: volumeMode defines what type of volume\n                                    is required by the claim. Value of Filesystem\n                                    is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference\n                                    to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is\n                        attached to a kubelet's host machine and then exposed to the\n                        pod.\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. TODO: how do we prevent errors in the\n                            filesystem from compromising the machine'\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide\n                            names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                        wwids:\n                          description: 'wwids Optional: FC volume world wide identifiers\n                            (wwids) Either wwids or combination of targetWWNs and\n                            lun must be set, but not both simultaneously.'\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    flexVolume:\n                      description: flexVolume represents a generic volume resource\n                        that is provisioned/attached using an exec based plugin.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for\n                            this volume.\n                          type: string\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends\n                            on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra\n                            command options if any.'\n                          type: object\n                        readOnly:\n                          description: 'readOnly is Optional: defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is Optional: secretRef is reference\n                            to the secret object containing sensitive information\n                            to pass to the plugin scripts. This may be empty if no\n                            secret object is specified. If the secret object contains\n                            more than one secret, all secrets are passed to the plugin\n                            scripts.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: flocker represents a Flocker volume attached to\n                        a kubelet's host machine. This depends on the Flocker control\n                        service being running\n                      properties:\n                        datasetName:\n                          description: datasetName is Name of the dataset stored as\n                            metadata -> name on the dataset for Flocker should be\n                            considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This\n                            is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: 'gcePersistentDisk represents a GCE Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                      properties:\n                        fsType:\n                          description: 'fsType is filesystem type of the volume that\n                            you want to mount. Tip: Ensure that the filesystem type\n                            is supported by the host operating system. Examples: \"ext4\",\n                            \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: 'pdName is unique name of the PD resource in\n                            GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: 'gitRepo represents a git repository at a particular\n                        revision. DEPRECATED: GitRepo is deprecated. To provision\n                        a container with a git repo, mount an EmptyDir into an InitContainer\n                        that clones the repo using git, then mount the EmptyDir into\n                        the Pod''s container.'\n                      properties:\n                        directory:\n                          description: directory is the target directory name. Must\n                            not contain or start with '..'.  If '.' is supplied, the\n                            volume directory will be the git repository.  Otherwise,\n                            if specified, the volume will contain the git repository\n                            in the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified\n                            revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: 'glusterfs represents a Glusterfs mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'\n                      properties:\n                        endpoints:\n                          description: 'endpoints is the endpoint name that details\n                            Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        path:\n                          description: 'path is the Glusterfs volume path. More info:\n                            https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the Glusterfs volume\n                            to be mounted with read-only permissions. Defaults to\n                            false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: 'hostPath represents a pre-existing file or directory\n                        on the host machine that is directly exposed to the container.\n                        This is generally used for system agents or other privileged\n                        things that are allowed to see the host machine. Most containers\n                        will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                        --- TODO(jonesdl) We need to restrict who can use host directory\n                        mounts and who can/can not mount host directories as read/write.'\n                      properties:\n                        path:\n                          description: 'path of the directory on the host. If the\n                            path is a symlink, it will follow the link to the real\n                            path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                        type:\n                          description: 'type for HostPath Volume Defaults to \"\" More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    iscsi:\n                      description: 'iscsi represents an ISCSI Disk resource that is\n                        attached to a kubelet''s host machine and then exposed to\n                        the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI\n                            Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI\n                            Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        initiatorName:\n                          description: initiatorName is the custom iSCSI Initiator\n                            Name. If initiatorName is specified with iscsiInterface\n                            simultaneously, new iSCSI interface <target portal>:<volume\n                            name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          description: iscsiInterface is the interface Name that uses\n                            an iSCSI transport. Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: portals is the iSCSI Target Portal List. The\n                            portal is either an IP or ip_addr:port if the port is\n                            other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                        readOnly:\n                          description: readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target\n                            and initiator authentication\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: targetPortal is iSCSI Target Portal. The Portal\n                            is either an IP or ip_addr:port if the port is other than\n                            default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: 'name of the volume. Must be a DNS_LABEL and unique\n                        within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                      type: string\n                    nfs:\n                      description: 'nfs represents an NFS mount on the host that shares\n                        a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                      properties:\n                        path:\n                          description: 'path that is exported by the NFS server. More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the NFS export to\n                            be mounted with read-only permissions. Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: boolean\n                        server:\n                          description: 'server is the hostname or IP address of the\n                            NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: 'persistentVolumeClaimVolumeSource represents a\n                        reference to a PersistentVolumeClaim in the same namespace.\n                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                      properties:\n                        claimName:\n                          description: 'claimName is the name of a PersistentVolumeClaim\n                            in the same namespace as the pod using this volume. More\n                            info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                          type: string\n                        readOnly:\n                          description: readOnly Will force the ReadOnly setting in\n                            VolumeMounts. Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: photonPersistentDisk represents a PhotonController\n                        persistent disk attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller\n                            persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: portworxVolume represents a portworx volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fSType represents the filesystem type to mount\n                            Must be a filesystem type supported by the host operating\n                            system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets,\n                        configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: defaultMode are the mode bits used to set permissions\n                            on created files by default. Must be an octal value between\n                            0000 and 0777 or a decimal value between 0 and 511. YAML\n                            accepts both octal and decimal values, JSON requires decimal\n                            values for mode bits. Directories within the path are\n                            not affected by this setting. This might be in conflict\n                            with other options that affect the file mode, like fsGroup,\n                            and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: sources is the list of volume projections\n                          items:\n                            description: Projection that may be projected along with\n                              other supported volume types\n                            properties:\n                              configMap:\n                                description: configMap information about the configMap\n                                  data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced ConfigMap\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the ConfigMap, the volume\n                                      setup will error unless it is marked optional.\n                                      Paths must be relative and may not contain the\n                                      '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap\n                                      or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI\n                                  data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume\n                                      file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents\n                                        information to create the file containing\n                                        the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field\n                                            of the pod: only annotations, labels,\n                                            name and namespace are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the\n                                                FieldPath is written in terms of,\n                                                defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select\n                                                in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: 'Optional: mode bits used to\n                                            set permissions on this file, must be\n                                            an octal value between 0000 and 0777 or\n                                            a decimal value between 0 and 511. YAML\n                                            accepts both octal and decimal values,\n                                            JSON requires decimal values for mode\n                                            bits. If not specified, the volume defaultMode\n                                            will be used. This might be in conflict\n                                            with other options that affect the file\n                                            mode, like fsGroup, and the result can\n                                            be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative\n                                            path name of the file to be created. Must\n                                            not be absolute or contain the ''..''\n                                            path. Must be utf-8 encoded. The first\n                                            item of the relative path must not start\n                                            with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: 'Selects a resource of the\n                                            container: only resources limits and requests\n                                            (limits.cpu, limits.memory, requests.cpu\n                                            and requests.memory) are currently supported.'\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required\n                                                for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format\n                                                of the exposed resources, defaults\n                                                to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to\n                                                select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                type: object\n                              secret:\n                                description: secret information about the secret data\n                                  to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced Secret\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the Secret, the volume setup\n                                      will error unless it is marked optional. Paths\n                                      must be relative and may not contain the '..'\n                                      path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the\n                                      Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about\n                                  the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: audience is the intended audience\n                                      of the token. A recipient of a token must identify\n                                      itself with an identifier specified in the audience\n                                      of the token, and otherwise should reject the\n                                      token. The audience defaults to the identifier\n                                      of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: expirationSeconds is the requested\n                                      duration of validity of the service account\n                                      token. As the token approaches expiration, the\n                                      kubelet volume plugin will proactively rotate\n                                      the service account token. The kubelet will\n                                      start trying to rotate the token if the token\n                                      is older than 80 percent of its time to live\n                                      or if the token is older than 24 hours.Defaults\n                                      to 1 hour and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: path is the path relative to the\n                                      mount point of the file to project the token\n                                      into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                      type: object\n                    quobyte:\n                      description: quobyte represents a Quobyte mount on the host\n                        that shares a pod's lifetime\n                      properties:\n                        group:\n                          description: group to map volume access to Default is no\n                            group\n                          type: string\n                        readOnly:\n                          description: readOnly here will force the Quobyte volume\n                            to be mounted with read-only permissions. Defaults to\n                            false.\n                          type: boolean\n                        registry:\n                          description: registry represents a single or multiple Quobyte\n                            Registry services specified as a string as host:port pair\n                            (multiple entries are separated with commas) which acts\n                            as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: tenant owning the given Quobyte volume in the\n                            Backend Used with dynamically provisioned Quobyte volumes,\n                            value is set by the plugin\n                          type: string\n                        user:\n                          description: user to map volume access to Defaults to serivceaccount\n                            user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already\n                            created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: 'rbd represents a Rados Block Device mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        image:\n                          description: 'image is the rados image name. More info:\n                            https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        keyring:\n                          description: 'keyring is the path to key ring for RBDUser.\n                            Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        monitors:\n                          description: 'monitors is a collection of Ceph monitors.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        pool:\n                          description: 'pool is the rados pool name. Default is rbd.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is name of the authentication secret\n                            for RBDUser. If provided overrides keyring. Default is\n                            nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is the rados user name. Default is admin.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: scaleIO represents a ScaleIO persistent volume\n                        attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO\n                            API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO\n                            Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef references to the secret for ScaleIO\n                            user and other sensitive information. If this is not provided,\n                            Login operation will fail.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication\n                            with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          description: storageMode indicates whether the storage for\n                            a volume should be ThickProvisioned or ThinProvisioned.\n                            Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated\n                            with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as\n                            configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: volumeName is the name of a volume already\n                            created in the ScaleIO system that is associated with\n                            this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: 'secret represents a secret that should populate\n                        this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is Optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items If unspecified, each key-value pair in\n                            the Data field of the referenced Secret will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the Secret, the volume setup will error unless it is marked\n                            optional. Paths must be relative and may not contain the\n                            '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        optional:\n                          description: optional field specify whether the Secret or\n                            its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: 'secretName is the name of the secret in the\n                            pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                          type: string\n                      type: object\n                    storageos:\n                      description: storageOS represents a StorageOS volume attached\n                        and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef specifies the secret to use for obtaining\n                            the StorageOS API credentials.  If not specified, default\n                            values will be attempted.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: volumeName is the human-readable name of the\n                            StorageOS volume.  Volume names are only unique within\n                            a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: volumeNamespace specifies the scope of the\n                            volume within StorageOS.  If no namespace is specified\n                            then the Pod's namespace will be used.  This allows the\n                            Kubernetes name scoping to be mirrored within StorageOS\n                            for tighter integration. Set VolumeName to any name to\n                            override the default behaviour. Set to \"default\" if you\n                            are not using namespaces within StorageOS. Namespaces\n                            that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: vsphereVolume represents a vSphere volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based\n                            Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based\n                            Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere\n                            volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              web:\n                description: Defines the web command line flags when starting Alertmanager.\n                properties:\n                  getConcurrency:\n                    description: Maximum number of GET requests processed concurrently.\n                      This corresponds to the Alertmanager's `--web.get-concurrency`\n                      flag.\n                    format: int32\n                    type: integer\n                  httpConfig:\n                    description: Defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: List of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: Set the Content-Security-Policy header to\n                              HTTP responses. Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: Set the Strict-Transport-Security header\n                              to HTTP responses. Unset if blank. Please make sure\n                              that you use this with care as this header might force\n                              browsers to load Prometheus and the other applications\n                              hosted on the same domain and subdomains over HTTPS.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: Set the X-Content-Type-Options header to\n                              HTTP responses. Unset if blank. Accepted value is nosniff.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: Set the X-Frame-Options header to HTTP responses.\n                              Unset if blank. Accepted values are deny and sameorigin.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: Set the X-XSS-Protection header to all responses.\n                              Unset if blank. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: Enable HTTP/2 support. Note that HTTP/2 is only\n                          supported with TLS. When TLSConfig is not configured, HTTP/2\n                          will be disabled. Whenever the value of the field changes,\n                          a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  timeout:\n                    description: Timeout for HTTP requests. This corresponds to the\n                      Alertmanager's `--web.timeout` flag.\n                    format: int32\n                    type: integer\n                  tlsConfig:\n                    description: Defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: Contains the TLS certificate for the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      cipherSuites:\n                        description: 'List of supported cipher suites for TLS versions\n                          up to TLS 1.2. If empty, Go default cipher suites are used.\n                          Available cipher suites are documented in the go documentation:\n                          https://golang.org/pkg/crypto/tls/#pkg-constants'\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: Contains the CA certificate for client certificate\n                          authentication to the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: 'Server policy for client authentication. Maps\n                          to ClientAuth Policies. For more detail on clientAuth options:\n                          https://golang.org/pkg/crypto/tls/#ClientAuthType'\n                        type: string\n                      curvePreferences:\n                        description: 'Elliptic curves that will be used in an ECDHE\n                          handshake, in preference order. Available curves are documented\n                          in the go documentation: https://golang.org/pkg/crypto/tls/#CurveID'\n                        items:\n                          type: string\n                        type: array\n                      keySecret:\n                        description: Secret containing the TLS key for the server.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: Maximum TLS version that is acceptable. Defaults\n                          to TLS13.\n                        type: string\n                      minVersion:\n                        description: Minimum TLS version that is acceptable. Defaults\n                          to TLS12.\n                        type: string\n                      preferServerCipherSuites:\n                        description: Controls whether the server selects the client's\n                          most preferred cipher suite, or the server's most preferred\n                          cipher suite. If true then the server's preference, as expressed\n                          in the order of elements in cipherSuites, is used.\n                        type: boolean\n                    required:\n                    - cert\n                    - keySecret\n                    type: object\n                type: object\n            type: object\n          status:\n            description: 'Most recent observed status of the Alertmanager cluster.\n              Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              availableReplicas:\n                description: Total number of available pods (ready for at least minReadySeconds)\n                  targeted by this Alertmanager cluster.\n                format: int32\n                type: integer\n              conditions:\n                description: The current state of the Alertmanager object.\n                items:\n                  description: Condition represents the state of the resources associated\n                    with the Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update\n                        to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Human-readable message indicating details for the\n                        condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: ObservedGeneration represents the .metadata.generation\n                        that the condition was set based upon. For instance, if `.metadata.generation`\n                        is currently 12, but the `.status.conditions[].observedGeneration`\n                        is 9, the condition is out of date with respect to the current\n                        state of the instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition.\n                      type: string\n                    type:\n                      description: Type of the condition being reported.\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: Represents whether any actions on the underlying managed\n                  objects are being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: Total number of non-terminated pods targeted by this\n                  Alertmanager object (their labels match the selector).\n                format: int32\n                type: integer\n              unavailableReplicas:\n                description: Total number of unavailable pods targeted by this Alertmanager\n                  object.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: Total number of non-terminated pods targeted by this\n                  Alertmanager object that have the desired version spec.\n                format: int32\n                type: integer\n            required:\n            - availableReplicas\n            - paused\n            - replicas\n            - unavailableReplicas\n            - updatedReplicas\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/crds/crds/crd-podmonitors.yaml",
    "content": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: podmonitors.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: PodMonitor\n    listKind: PodMonitorList\n    plural: podmonitors\n    shortNames:\n    - pmon\n    singular: podmonitor\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: PodMonitor defines monitoring for a set of pods.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Specification of desired Pod selection for target discovery\n              by Prometheus.\n            properties:\n              attachMetadata:\n                description: Attaches node metadata to discovered targets. Requires\n                  Prometheus v2.35.0 and above.\n                properties:\n                  node:\n                    description: When set to true, Prometheus must have permissions\n                      to get Nodes.\n                    type: boolean\n                type: object\n              jobLabel:\n                description: The label to use to retrieve the job name from.\n                type: string\n              labelLimit:\n                description: Per-scrape limit on number of labels that will be accepted\n                  for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: Per-scrape limit on length of labels name that will be\n                  accepted for a sample. Only valid in Prometheus versions 2.27.0\n                  and newer.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: Per-scrape limit on length of labels value that will\n                  be accepted for a sample. Only valid in Prometheus versions 2.27.0\n                  and newer.\n                format: int64\n                type: integer\n              namespaceSelector:\n                description: Selector to select which namespaces the Endpoints objects\n                  are discovered from.\n                properties:\n                  any:\n                    description: Boolean describing whether all namespaces are selected\n                      in contrast to a list restricting them.\n                    type: boolean\n                  matchNames:\n                    description: List of namespace names to select from.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              podMetricsEndpoints:\n                description: A list of endpoints allowed as part of this PodMonitor.\n                items:\n                  description: PodMetricsEndpoint defines a scrapeable endpoint of\n                    a Kubernetes Pod serving Prometheus metrics.\n                  properties:\n                    authorization:\n                      description: Authorization section for this endpoint\n                      properties:\n                        credentials:\n                          description: The secret's key that contains the credentials\n                            of the request\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: Set the authentication type. Defaults to Bearer,\n                            Basic will cause an error\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: 'BasicAuth allow an endpoint to authenticate over\n                        basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint'\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace\n                            that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace\n                            that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerTokenSecret:\n                      description: Secret to mount to read bearer token for scraping\n                        targets. The secret needs to be in the same namespace as the\n                        pod monitor and accessible by the Prometheus Operator.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must\n                            be a valid secret key.\n                          type: string\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must\n                            be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    enableHttp2:\n                      description: Whether to enable HTTP2.\n                      type: boolean\n                    filterRunning:\n                      description: 'Drop pods that are not running. (Failed, Succeeded).\n                        Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase'\n                      type: boolean\n                    followRedirects:\n                      description: FollowRedirects configures whether scrape requests\n                        follow HTTP 3xx redirects.\n                      type: boolean\n                    honorLabels:\n                      description: HonorLabels chooses the metric's labels on collisions\n                        with target labels.\n                      type: boolean\n                    honorTimestamps:\n                      description: HonorTimestamps controls whether Prometheus respects\n                        the timestamps present in scraped data.\n                      type: boolean\n                    interval:\n                      description: Interval at which metrics should be scraped If\n                        not specified Prometheus' global scrape interval is used.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    metricRelabelings:\n                      description: MetricRelabelConfigs to apply to samples before\n                        ingestion.\n                      items:\n                        description: 'RelabelConfig allows dynamic rewriting of the\n                          label set, being applied to samples before ingestion. It\n                          defines `<metric_relabel_configs>`-section of Prometheus\n                          configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'\n                        properties:\n                          action:\n                            default: replace\n                            description: Action to perform based on regex matching.\n                              Default is 'replace'. uppercase and lowercase actions\n                              require Prometheus >= 2.36.\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: Modulus to take of the hash of the source\n                              label values.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted\n                              value is matched. Default is '(.*)'\n                            type: string\n                          replacement:\n                            description: Replacement value against which a regex replace\n                              is performed if the regular expression matches. Regex\n                              capture groups are available. Default is '$1'\n                            type: string\n                          separator:\n                            description: Separator placed between concatenated source\n                              label values. default is ';'.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing\n                              labels. Their content is concatenated using the configured\n                              separator and matched against the configured regular\n                              expression for the replace, keep, and drop actions.\n                            items:\n                              description: LabelName is a valid Prometheus label name\n                                which may only contain ASCII letters, numbers, as\n                                well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: Label to which the resulting value is written\n                              in a replace action. It is mandatory for replace actions.\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                    oauth2:\n                      description: OAuth2 for the URL. Only valid in Prometheus versions\n                        2.27.0 and newer.\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2\n                            client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    params:\n                      additionalProperties:\n                        items:\n                          type: string\n                        type: array\n                      description: Optional HTTP URL parameters\n                      type: object\n                    path:\n                      description: HTTP path to scrape for metrics. If empty, Prometheus\n                        uses the default value (e.g. `/metrics`).\n                      type: string\n                    port:\n                      description: Name of the pod port this endpoint refers to. Mutually\n                        exclusive with targetPort.\n                      type: string\n                    proxyUrl:\n                      description: ProxyURL eg http://proxyserver:2195 Directs scrapes\n                        to proxy through this endpoint.\n                      type: string\n                    relabelings:\n                      description: 'RelabelConfigs to apply to samples before scraping.\n                        Prometheus Operator automatically adds relabelings for a few\n                        standard Kubernetes fields. The original scrape job''s name\n                        is available via the `__tmp_prometheus_job_name` label. More\n                        info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                      items:\n                        description: 'RelabelConfig allows dynamic rewriting of the\n                          label set, being applied to samples before ingestion. It\n                          defines `<metric_relabel_configs>`-section of Prometheus\n                          configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'\n                        properties:\n                          action:\n                            default: replace\n                            description: Action to perform based on regex matching.\n                              Default is 'replace'. uppercase and lowercase actions\n                              require Prometheus >= 2.36.\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: Modulus to take of the hash of the source\n                              label values.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted\n                              value is matched. Default is '(.*)'\n                            type: string\n                          replacement:\n                            description: Replacement value against which a regex replace\n                              is performed if the regular expression matches. Regex\n                              capture groups are available. Default is '$1'\n                            type: string\n                          separator:\n                            description: Separator placed between concatenated source\n                              label values. default is ';'.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing\n                              labels. Their content is concatenated using the configured\n                              separator and matched against the configured regular\n                              expression for the replace, keep, and drop actions.\n                            items:\n                              description: LabelName is a valid Prometheus label name\n                                which may only contain ASCII letters, numbers, as\n                                well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: Label to which the resulting value is written\n                              in a replace action. It is mandatory for replace actions.\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                    scheme:\n                      description: HTTP scheme to use for scraping. `http` and `https`\n                        are the expected values unless you rewrite the `__scheme__`\n                        label via relabeling. If empty, Prometheus uses the default\n                        value `http`.\n                      enum:\n                      - http\n                      - https\n                      type: string\n                    scrapeTimeout:\n                      description: Timeout after which the scrape is ended If not\n                        specified, the Prometheus global scrape interval is used.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    targetPort:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      description: 'Deprecated: Use ''port'' instead.'\n                      x-kubernetes-int-or-string: true\n                    tlsConfig:\n                      description: TLS configuration to use when scraping the endpoint.\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server\n                            certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: Secret containing the client key file for the\n                            targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  type: object\n                type: array\n              podTargetLabels:\n                description: PodTargetLabels transfers labels on the Kubernetes Pod\n                  onto the target.\n                items:\n                  type: string\n                type: array\n              sampleLimit:\n                description: SampleLimit defines per-scrape limit on number of scraped\n                  samples that will be accepted.\n                format: int64\n                type: integer\n              selector:\n                description: Selector to select Pod objects.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              targetLimit:\n                description: TargetLimit defines a limit on the number of scraped\n                  targets that will be accepted.\n                format: int64\n                type: integer\n            required:\n            - podMetricsEndpoints\n            - selector\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/crds/crds/crd-probes.yaml",
    "content": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: probes.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: Probe\n    listKind: ProbeList\n    plural: probes\n    shortNames:\n    - prb\n    singular: probe\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: Probe defines monitoring for a set of static targets or ingresses.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Specification of desired Ingress selection for target discovery\n              by Prometheus.\n            properties:\n              authorization:\n                description: Authorization section for this endpoint\n                properties:\n                  credentials:\n                    description: The secret's key that contains the credentials of\n                      the request\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  type:\n                    description: Set the authentication type. Defaults to Bearer,\n                      Basic will cause an error\n                    type: string\n                type: object\n              basicAuth:\n                description: 'BasicAuth allow an endpoint to authenticate over basic\n                  authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint'\n                properties:\n                  password:\n                    description: The secret in the service monitor namespace that\n                      contains the password for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  username:\n                    description: The secret in the service monitor namespace that\n                      contains the username for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                type: object\n              bearerTokenSecret:\n                description: Secret to mount to read bearer token for scraping targets.\n                  The secret needs to be in the same namespace as the probe and accessible\n                  by the Prometheus Operator.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              interval:\n                description: Interval at which targets are probed using the configured\n                  prober. If not specified Prometheus' global scrape interval is used.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              jobName:\n                description: The job name assigned to scraped metrics by default.\n                type: string\n              labelLimit:\n                description: Per-scrape limit on number of labels that will be accepted\n                  for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: Per-scrape limit on length of labels name that will be\n                  accepted for a sample. Only valid in Prometheus versions 2.27.0\n                  and newer.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: Per-scrape limit on length of labels value that will\n                  be accepted for a sample. Only valid in Prometheus versions 2.27.0\n                  and newer.\n                format: int64\n                type: integer\n              metricRelabelings:\n                description: MetricRelabelConfigs to apply to samples before ingestion.\n                items:\n                  description: 'RelabelConfig allows dynamic rewriting of the label\n                    set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section\n                    of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'\n                  properties:\n                    action:\n                      default: replace\n                      description: Action to perform based on regex matching. Default\n                        is 'replace'. uppercase and lowercase actions require Prometheus\n                        >= 2.36.\n                      enum:\n                      - replace\n                      - Replace\n                      - keep\n                      - Keep\n                      - drop\n                      - Drop\n                      - hashmod\n                      - HashMod\n                      - labelmap\n                      - LabelMap\n                      - labeldrop\n                      - LabelDrop\n                      - labelkeep\n                      - LabelKeep\n                      - lowercase\n                      - Lowercase\n                      - uppercase\n                      - Uppercase\n                      - keepequal\n                      - KeepEqual\n                      - dropequal\n                      - DropEqual\n                      type: string\n                    modulus:\n                      description: Modulus to take of the hash of the source label\n                        values.\n                      format: int64\n                      type: integer\n                    regex:\n                      description: Regular expression against which the extracted\n                        value is matched. Default is '(.*)'\n                      type: string\n                    replacement:\n                      description: Replacement value against which a regex replace\n                        is performed if the regular expression matches. Regex capture\n                        groups are available. Default is '$1'\n                      type: string\n                    separator:\n                      description: Separator placed between concatenated source label\n                        values. default is ';'.\n                      type: string\n                    sourceLabels:\n                      description: The source labels select values from existing labels.\n                        Their content is concatenated using the configured separator\n                        and matched against the configured regular expression for\n                        the replace, keep, and drop actions.\n                      items:\n                        description: LabelName is a valid Prometheus label name which\n                          may only contain ASCII letters, numbers, as well as underscores.\n                        pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                        type: string\n                      type: array\n                    targetLabel:\n                      description: Label to which the resulting value is written in\n                        a replace action. It is mandatory for replace actions. Regex\n                        capture groups are available.\n                      type: string\n                  type: object\n                type: array\n              module:\n                description: 'The module to use for probing specifying how to probe\n                  the target. Example module configuring in the blackbox exporter:\n                  https://github.com/prometheus/blackbox_exporter/blob/master/example.yml'\n                type: string\n              oauth2:\n                description: OAuth2 for the URL. Only valid in Prometheus versions\n                  2.27.0 and newer.\n                properties:\n                  clientId:\n                    description: The secret or configmap containing the OAuth2 client\n                      id\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key\n                              must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  clientSecret:\n                    description: The secret containing the OAuth2 client secret\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  endpointParams:\n                    additionalProperties:\n                      type: string\n                    description: Parameters to append to the token URL\n                    type: object\n                  scopes:\n                    description: OAuth2 scopes used for the token request\n                    items:\n                      type: string\n                    type: array\n                  tokenUrl:\n                    description: The URL to fetch the token from\n                    minLength: 1\n                    type: string\n                required:\n                - clientId\n                - clientSecret\n                - tokenUrl\n                type: object\n              prober:\n                description: Specification for the prober to use for probing targets.\n                  The prober.URL parameter is required. Targets cannot be probed if\n                  left empty.\n                properties:\n                  path:\n                    default: /probe\n                    description: Path to collect metrics from. Defaults to `/probe`.\n                    type: string\n                  proxyUrl:\n                    description: Optional ProxyURL.\n                    type: string\n                  scheme:\n                    description: HTTP scheme to use for scraping. `http` and `https`\n                      are the expected values unless you rewrite the `__scheme__`\n                      label via relabeling. If empty, Prometheus uses the default\n                      value `http`.\n                    enum:\n                    - http\n                    - https\n                    type: string\n                  url:\n                    description: Mandatory URL of the prober.\n                    type: string\n                required:\n                - url\n                type: object\n              sampleLimit:\n                description: SampleLimit defines per-scrape limit on number of scraped\n                  samples that will be accepted.\n                format: int64\n                type: integer\n              scrapeTimeout:\n                description: Timeout for scraping metrics from the Prometheus exporter.\n                  If not specified, the Prometheus global scrape timeout is used.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              targetLimit:\n                description: TargetLimit defines a limit on the number of scraped\n                  targets that will be accepted.\n                format: int64\n                type: integer\n              targets:\n                description: Targets defines a set of static or dynamically discovered\n                  targets to probe.\n                properties:\n                  ingress:\n                    description: ingress defines the Ingress objects to probe and\n                      the relabeling configuration. If `staticConfig` is also defined,\n                      `staticConfig` takes precedence.\n                    properties:\n                      namespaceSelector:\n                        description: From which namespaces to select Ingress objects.\n                        properties:\n                          any:\n                            description: Boolean describing whether all namespaces\n                              are selected in contrast to a list restricting them.\n                            type: boolean\n                          matchNames:\n                            description: List of namespace names to select from.\n                            items:\n                              type: string\n                            type: array\n                        type: object\n                      relabelingConfigs:\n                        description: 'RelabelConfigs to apply to the label set of\n                          the target before it gets scraped. The original ingress\n                          address is available via the `__tmp_prometheus_ingress_address`\n                          label. It can be used to customize the probed URL. The original\n                          scrape job''s name is available via the `__tmp_prometheus_job_name`\n                          label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                        items:\n                          description: 'RelabelConfig allows dynamic rewriting of\n                            the label set, being applied to samples before ingestion.\n                            It defines `<metric_relabel_configs>`-section of Prometheus\n                            configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'\n                          properties:\n                            action:\n                              default: replace\n                              description: Action to perform based on regex matching.\n                                Default is 'replace'. uppercase and lowercase actions\n                                require Prometheus >= 2.36.\n                              enum:\n                              - replace\n                              - Replace\n                              - keep\n                              - Keep\n                              - drop\n                              - Drop\n                              - hashmod\n                              - HashMod\n                              - labelmap\n                              - LabelMap\n                              - labeldrop\n                              - LabelDrop\n                              - labelkeep\n                              - LabelKeep\n                              - lowercase\n                              - Lowercase\n                              - uppercase\n                              - Uppercase\n                              - keepequal\n                              - KeepEqual\n                              - dropequal\n                              - DropEqual\n                              type: string\n                            modulus:\n                              description: Modulus to take of the hash of the source\n                                label values.\n                              format: int64\n                              type: integer\n                            regex:\n                              description: Regular expression against which the extracted\n                                value is matched. Default is '(.*)'\n                              type: string\n                            replacement:\n                              description: Replacement value against which a regex\n                                replace is performed if the regular expression matches.\n                                Regex capture groups are available. Default is '$1'\n                              type: string\n                            separator:\n                              description: Separator placed between concatenated source\n                                label values. default is ';'.\n                              type: string\n                            sourceLabels:\n                              description: The source labels select values from existing\n                                labels. Their content is concatenated using the configured\n                                separator and matched against the configured regular\n                                expression for the replace, keep, and drop actions.\n                              items:\n                                description: LabelName is a valid Prometheus label\n                                  name which may only contain ASCII letters, numbers,\n                                  as well as underscores.\n                                pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                                type: string\n                              type: array\n                            targetLabel:\n                              description: Label to which the resulting value is written\n                                in a replace action. It is mandatory for replace actions.\n                                Regex capture groups are available.\n                              type: string\n                          type: object\n                        type: array\n                      selector:\n                        description: Selector to select the Ingress objects.\n                        properties:\n                          matchExpressions:\n                            description: matchExpressions is a list of label selector\n                              requirements. The requirements are ANDed.\n                            items:\n                              description: A label selector requirement is a selector\n                                that contains values, a key, and an operator that\n                                relates the key and values.\n                              properties:\n                                key:\n                                  description: key is the label key that the selector\n                                    applies to.\n                                  type: string\n                                operator:\n                                  description: operator represents a key's relationship\n                                    to a set of values. Valid operators are In, NotIn,\n                                    Exists and DoesNotExist.\n                                  type: string\n                                values:\n                                  description: values is an array of string values.\n                                    If the operator is In or NotIn, the values array\n                                    must be non-empty. If the operator is Exists or\n                                    DoesNotExist, the values array must be empty.\n                                    This array is replaced during a strategic merge\n                                    patch.\n                                  items:\n                                    type: string\n                                  type: array\n                              required:\n                              - key\n                              - operator\n                              type: object\n                            type: array\n                          matchLabels:\n                            additionalProperties:\n                              type: string\n                            description: matchLabels is a map of {key,value} pairs.\n                              A single {key,value} in the matchLabels map is equivalent\n                              to an element of matchExpressions, whose key field is\n                              \"key\", the operator is \"In\", and the values array contains\n                              only \"value\". The requirements are ANDed.\n                            type: object\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  staticConfig:\n                    description: 'staticConfig defines the static list of targets\n                      to probe and the relabeling configuration. If `ingress` is also\n                      defined, `staticConfig` takes precedence. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.'\n                    properties:\n                      labels:\n                        additionalProperties:\n                          type: string\n                        description: Labels assigned to all metrics scraped from the\n                          targets.\n                        type: object\n                      relabelingConfigs:\n                        description: 'RelabelConfigs to apply to the label set of\n                          the targets before it gets scraped. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                        items:\n                          description: 'RelabelConfig allows dynamic rewriting of\n                            the label set, being applied to samples before ingestion.\n                            It defines `<metric_relabel_configs>`-section of Prometheus\n                            configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'\n                          properties:\n                            action:\n                              default: replace\n                              description: Action to perform based on regex matching.\n                                Default is 'replace'. uppercase and lowercase actions\n                                require Prometheus >= 2.36.\n                              enum:\n                              - replace\n                              - Replace\n                              - keep\n                              - Keep\n                              - drop\n                              - Drop\n                              - hashmod\n                              - HashMod\n                              - labelmap\n                              - LabelMap\n                              - labeldrop\n                              - LabelDrop\n                              - labelkeep\n                              - LabelKeep\n                              - lowercase\n                              - Lowercase\n                              - uppercase\n                              - Uppercase\n                              - keepequal\n                              - KeepEqual\n                              - dropequal\n                              - DropEqual\n                              type: string\n                            modulus:\n                              description: Modulus to take of the hash of the source\n                                label values.\n                              format: int64\n                              type: integer\n                            regex:\n                              description: Regular expression against which the extracted\n                                value is matched. Default is '(.*)'\n                              type: string\n                            replacement:\n                              description: Replacement value against which a regex\n                                replace is performed if the regular expression matches.\n                                Regex capture groups are available. Default is '$1'\n                              type: string\n                            separator:\n                              description: Separator placed between concatenated source\n                                label values. default is ';'.\n                              type: string\n                            sourceLabels:\n                              description: The source labels select values from existing\n                                labels. Their content is concatenated using the configured\n                                separator and matched against the configured regular\n                                expression for the replace, keep, and drop actions.\n                              items:\n                                description: LabelName is a valid Prometheus label\n                                  name which may only contain ASCII letters, numbers,\n                                  as well as underscores.\n                                pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                                type: string\n                              type: array\n                            targetLabel:\n                              description: Label to which the resulting value is written\n                                in a replace action. It is mandatory for replace actions.\n                                Regex capture groups are available.\n                              type: string\n                          type: object\n                        type: array\n                      static:\n                        description: The list of hosts to probe.\n                        items:\n                          type: string\n                        type: array\n                    type: object\n                type: object\n              tlsConfig:\n                description: TLS configuration to use when scraping the endpoint.\n                properties:\n                  ca:\n                    description: Certificate authority used when verifying server\n                      certificates.\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key\n                              must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  cert:\n                    description: Client certificate to present when doing client-authentication.\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key\n                              must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  insecureSkipVerify:\n                    description: Disable target certificate validation.\n                    type: boolean\n                  keySecret:\n                    description: Secret containing the client key file for the targets.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  serverName:\n                    description: Used to verify the hostname for the targets.\n                    type: string\n                type: object\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/crds/crds/crd-prometheusagents.yaml",
    "content": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: prometheusagents.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: PrometheusAgent\n    listKind: PrometheusAgentList\n    plural: prometheusagents\n    shortNames:\n    - promagent\n    singular: prometheusagent\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Prometheus agent\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Desired\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: PrometheusAgent defines a Prometheus agent deployment.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: 'Specification of the desired behavior of the Prometheus\n              agent. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              additionalArgs:\n                description: \"AdditionalArgs allows setting additional arguments for\n                  the 'prometheus' container. \\n It is intended for e.g. activating\n                  hidden flags which are not supported by the dedicated configuration\n                  options yet. The arguments are passed as-is to the Prometheus container\n                  which may cause issues if they are invalid or not supported by the\n                  given Prometheus version. \\n In case of an argument conflict (e.g.\n                  an argument which is already set by the operator itself) or when\n                  providing an invalid argument, the reconciliation will fail and\n                  an error will be logged.\"\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: Name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: Argument value, e.g. 30s. Can be empty for name-only\n                        arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              additionalScrapeConfigs:\n                description: 'AdditionalScrapeConfigs allows specifying a key of a\n                  Secret containing additional Prometheus scrape configurations. Scrape\n                  configurations specified are appended to the configurations generated\n                  by the Prometheus Operator. Job configurations specified must have\n                  the form as specified in the official Prometheus documentation:\n                  https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config.\n                  As scrape configs are appended, the user is responsible to make\n                  sure it is valid. Note that using this feature may expose the possibility\n                  to break upgrades of Prometheus. It is advised to review Prometheus\n                  release notes to ensure that no incompatible scrape configs are\n                  going to break Prometheus after the upgrade.'\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              affinity:\n                description: Defines the Pods' affinity scheduling rules if specified.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the\n                      pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node matches\n                          the corresponding matchExpressions; the node(s) with the\n                          highest sum are the most preferred.\n                        items:\n                          description: An empty preferred scheduling term matches\n                            all objects with implicit weight 0 (i.e. it's a no-op).\n                            A null preferred scheduling term matches no objects (i.e.\n                            is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the\n                                corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding\n                                nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to an update), the system may or may not try to\n                          eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms.\n                              The terms are ORed.\n                            items:\n                              description: A null or empty node selector term matches\n                                no objects. The requirements of them are ANDed. The\n                                TopologySelectorTerm type implements a subset of the\n                                NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate\n                      this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to a pod label update), the system may or may\n                          not try to eventually evict the pod from its node. When\n                          there are multiple elements, the lists of nodes corresponding\n                          to each podAffinityTerm are intersected, i.e. all terms\n                          must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g.\n                      avoid putting this pod in the same node, zone, etc. as some\n                      other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the anti-affinity expressions specified\n                          by this field, but it may choose a node that violates one\n                          or more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling anti-affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the anti-affinity requirements specified by\n                          this field are not met at scheduling time, the pod will\n                          not be scheduled onto the node. If the anti-affinity requirements\n                          specified by this field cease to be met at some point during\n                          pod execution (e.g. due to a pod label update), the system\n                          may or may not try to eventually evict the pod from its\n                          node. When there are multiple elements, the lists of nodes\n                          corresponding to each podAffinityTerm are intersected, i.e.\n                          all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                type: object\n              apiserverConfig:\n                description: 'APIServerConfig allows specifying a host and auth methods\n                  to access the Kuberntees API server. If null, Prometheus is assumed\n                  to run inside of the cluster: it will discover the API servers automatically\n                  and use the Pod''s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.'\n                properties:\n                  authorization:\n                    description: Authorization section for accessing apiserver\n                    properties:\n                      credentials:\n                        description: The secret's key that contains the credentials\n                          of the request\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      credentialsFile:\n                        description: File to read a secret from, mutually exclusive\n                          with Credentials (from SafeAuthorization)\n                        type: string\n                      type:\n                        description: Set the authentication type. Defaults to Bearer,\n                          Basic will cause an error\n                        type: string\n                    type: object\n                  basicAuth:\n                    description: BasicAuth allow an endpoint to authenticate over\n                      basic authentication\n                    properties:\n                      password:\n                        description: The secret in the service monitor namespace that\n                          contains the password for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      username:\n                        description: The secret in the service monitor namespace that\n                          contains the username for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  bearerToken:\n                    description: Bearer token for accessing apiserver.\n                    type: string\n                  bearerTokenFile:\n                    description: File to read bearer token for accessing apiserver.\n                    type: string\n                  host:\n                    description: Host of apiserver. A valid string consisting of a\n                      hostname or IP followed by an optional port number\n                    type: string\n                  tlsConfig:\n                    description: TLS Config to use for accessing apiserver.\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server\n                          certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container\n                          to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus\n                          container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus\n                          container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the\n                          targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - host\n                type: object\n              arbitraryFSAccessThroughSMs:\n                description: When true, ServiceMonitor, PodMonitor and Probe object\n                  are forbidden to reference arbitrary files on the file system of\n                  the 'prometheus' container. When a ServiceMonitor's endpoint specifies\n                  a `bearerTokenFile` value (e.g.  '/var/run/secrets/kubernetes.io/serviceaccount/token'),\n                  a malicious target can get access to the Prometheus service account's\n                  token in the Prometheus' scrape request. Setting `spec.arbitraryFSAccessThroughSM`\n                  to 'true' would prevent the attack. Users should instead provide\n                  the credentials using the `spec.bearerTokenSecret` field.\n                properties:\n                  deny:\n                    type: boolean\n                type: object\n              configMaps:\n                description: ConfigMaps is a list of ConfigMaps in the same namespace\n                  as the Prometheus object, which shall be mounted into the Prometheus\n                  Pods. Each ConfigMap is added to the StatefulSet definition as a\n                  volume named `configmap-<configmap-name>`. The ConfigMaps are mounted\n                  into /etc/prometheus/configmaps/<configmap-name> in the 'prometheus'\n                  container.\n                items:\n                  type: string\n                type: array\n              containers:\n                description: \"Containers allows injecting additional containers or\n                  modifying operator generated containers. This can be used to allow\n                  adding an authentication proxy to the Pods or to change the behavior\n                  of an operator generated container. Containers described here modify\n                  an operator generated container if they share the same name and\n                  modifications are done via a strategic merge patch. \\n The names\n                  of containers managed by the operator are: * `prometheus` * `config-reloader`\n                  * `thanos-sidecar` \\n Overriding containers is entirely outside\n                  the scope of what the maintainers will support and by doing so,\n                  you accept that this behaviour may break at any time without notice.\"\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              enableFeatures:\n                description: \"Enable access to Prometheus feature flags. By default,\n                  no features are enabled. \\n Enabling features which are disabled\n                  by default is entirely outside the scope of what the maintainers\n                  will support and by doing so, you accept that this behaviour may\n                  break at any time without notice. \\n For more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\"\n                items:\n                  type: string\n                type: array\n              enableRemoteWriteReceiver:\n                description: \"Enable Prometheus to be used as a receiver for the Prometheus\n                  remote write protocol. \\n WARNING: This is not considered an efficient\n                  way of ingesting samples. Use it with caution for specific low-volume\n                  use cases. It is not suitable for replacing the ingestion via scraping\n                  and turning Prometheus into a push-based metrics collection system.\n                  For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\n                  \\n It requires Prometheus >= v2.33.0.\"\n                type: boolean\n              enforcedBodySizeLimit:\n                description: \"When defined, enforcedBodySizeLimit specifies a global\n                  limit on the size of uncompressed response body that will be accepted\n                  by Prometheus. Targets responding with a body larger than this many\n                  bytes will cause the scrape to fail. \\n It requires Prometheus >=\n                  v2.28.0.\"\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              enforcedLabelLimit:\n                description: \"When defined, enforcedLabelLimit specifies a global\n                  limit on the number of labels per sample. The value overrides any\n                  `spec.labelLimit` set by ServiceMonitor, PodMonitor, Probe objects\n                  unless `spec.labelLimit` is greater than zero and less than `spec.enforcedLabelLimit`.\n                  \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedLabelNameLengthLimit:\n                description: \"When defined, enforcedLabelNameLengthLimit specifies\n                  a global limit on the length of labels name per sample. The value\n                  overrides any `spec.labelNameLengthLimit` set by ServiceMonitor,\n                  PodMonitor, Probe objects unless `spec.labelNameLengthLimit` is\n                  greater than zero and less than `spec.enforcedLabelNameLengthLimit`.\n                  \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedLabelValueLengthLimit:\n                description: \"When not null, enforcedLabelValueLengthLimit defines\n                  a global limit on the length of labels value per sample. The value\n                  overrides any `spec.labelValueLengthLimit` set by ServiceMonitor,\n                  PodMonitor, Probe objects unless `spec.labelValueLengthLimit` is\n                  greater than zero and less than `spec.enforcedLabelValueLengthLimit`.\n                  \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedNamespaceLabel:\n                description: \"When not empty, a label will be added to \\n 1. All metrics\n                  scraped from `ServiceMonitor`, `PodMonitor`, `Probe` and `ScrapeConfig`\n                  objects. 2. All metrics generated from recording rules defined in\n                  `PrometheusRule` objects. 3. All alerts generated from alerting\n                  rules defined in `PrometheusRule` objects. 4. All vector selectors\n                  of PromQL expressions defined in `PrometheusRule` objects. \\n The\n                  label will not added for objects referenced in `spec.excludedFromEnforcement`.\n                  \\n The label's name is this field's value. The label's value is\n                  the namespace of the `ServiceMonitor`, `PodMonitor`, `Probe` or\n                  `PrometheusRule` object.\"\n                type: string\n              enforcedSampleLimit:\n                description: \"When defined, enforcedSampleLimit specifies a global\n                  limit on the number of scraped samples that will be accepted. This\n                  overrides any `spec.sampleLimit` set by ServiceMonitor, PodMonitor,\n                  Probe objects unless `spec.sampleLimit` is greater than zero and\n                  less than than `spec.enforcedSampleLimit`. \\n It is meant to be\n                  used by admins to keep the overall number of samples/series under\n                  a desired limit.\"\n                format: int64\n                type: integer\n              enforcedTargetLimit:\n                description: \"When defined, enforcedTargetLimit specifies a global\n                  limit on the number of scraped targets. The value overrides any\n                  `spec.targetLimit` set by ServiceMonitor, PodMonitor, Probe objects\n                  unless `spec.targetLimit` is greater than zero and less than `spec.enforcedTargetLimit`.\n                  \\n It is meant to be used by admins to to keep the overall number\n                  of targets under a desired limit.\"\n                format: int64\n                type: integer\n              excludedFromEnforcement:\n                description: \"List of references to PodMonitor, ServiceMonitor, Probe\n                  and PrometheusRule objects to be excluded from enforcing a namespace\n                  label of origin. \\n It is only applicable if `spec.enforcedNamespaceLabel`\n                  set to true.\"\n                items:\n                  description: ObjectReference references a PodMonitor, ServiceMonitor,\n                    Probe or PrometheusRule object.\n                  properties:\n                    group:\n                      default: monitoring.coreos.com\n                      description: Group of the referent. When not specified, it defaults\n                        to `monitoring.coreos.com`\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: Name of the referent. When not set, all resources\n                        in the namespace are matched.\n                      type: string\n                    namespace:\n                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: Resource of the referent.\n                      enum:\n                      - prometheusrules\n                      - servicemonitors\n                      - podmonitors\n                      - probes\n                      type: string\n                  required:\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n              externalLabels:\n                additionalProperties:\n                  type: string\n                description: The labels to add to any time series or alerts when communicating\n                  with external systems (federation, remote storage, Alertmanager).\n                  Labels defined by `spec.replicaExternalLabelName` and `spec.prometheusExternalLabelName`\n                  take precedence over this list.\n                type: object\n              externalUrl:\n                description: The external URL under which the Prometheus service is\n                  externally available. This is necessary to generate correct URLs\n                  (for instance if Prometheus is accessible behind an Ingress resource).\n                type: string\n              hostAliases:\n                description: Optional list of hosts and IPs that will be injected\n                  into the Pod's hosts file if specified.\n                items:\n                  description: HostAlias holds the mapping between IP and hostnames\n                    that will be injected as an entry in the pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: Hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              hostNetwork:\n                description: \"Use the host's network namespace if true. \\n Make sure\n                  to understand the security implications if you want to enable it\n                  (https://kubernetes.io/docs/concepts/configuration/overview/). \\n\n                  When hostNetwork is enabled, this will set the DNS policy to `ClusterFirstWithHostNet`\n                  automatically.\"\n                type: boolean\n              ignoreNamespaceSelectors:\n                description: When true, `spec.namespaceSelector` from all PodMonitor,\n                  ServiceMonitor and Probe objects will be ignored. They will only\n                  discover targets within the namespace of the PodMonitor, ServiceMonitor\n                  and Probe objec.\n                type: boolean\n              image:\n                description: \"Container image name for Prometheus. If specified, it\n                  takes precedence over the `spec.baseImage`, `spec.tag` and `spec.sha`\n                  fields. \\n Specifying `spec.version` is still necessary to ensure\n                  the Prometheus Operator knows which version of Prometheus is being\n                  configured. \\n If neither `spec.image` nor `spec.baseImage` are\n                  defined, the operator will use the latest upstream version of Prometheus\n                  available at the time when the operator was released.\"\n                type: string\n              imagePullPolicy:\n                description: Image pull policy for the 'prometheus', 'init-config-reloader'\n                  and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\n                  for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: An optional list of references to Secrets in the same\n                  namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: LocalObjectReference contains enough information to\n                    let you locate the referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        TODO: Add other useful fields. apiVersion, kind, uid?'\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: \"InitContainers allows injecting initContainers to the\n                  Pod definition. Those can be used to e.g.  fetch secrets for injection\n                  into the Prometheus configuration from external sources. Any errors\n                  during the execution of an initContainer will lead to a restart\n                  of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n                  InitContainers described here modify an operator generated init\n                  containers if they share the same name and modifications are done\n                  via a strategic merge patch. \\n The names of init container name\n                  managed by the operator are: * `init-config-reloader`. \\n Overriding\n                  init containers is entirely outside the scope of what the maintainers\n                  will support and by doing so, you accept that this behaviour may\n                  break at any time without notice.\"\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              listenLocal:\n                description: When true, the Prometheus server listens on the loopback\n                  address instead of the Pod IP's address.\n                type: boolean\n              logFormat:\n                description: Log format for Log level for Prometheus and the config-reloader\n                  sidecar.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: Log level for Prometheus and the config-reloader sidecar.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: \"Minimum number of seconds for which a newly created\n                  Pod should be ready without any of its container crashing for it\n                  to be considered available. Defaults to 0 (pod will be considered\n                  available as soon as it is ready) \\n This is an alpha field from\n                  kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds\n                  feature gate.\"\n                format: int32\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: Defines on which Nodes the Pods are scheduled.\n                type: object\n              overrideHonorLabels:\n                description: When true, Prometheus resolves label conflicts by renaming\n                  the labels in the scraped data to \"exported_<label value>\" for all\n                  targets created from service and pod monitors. Otherwise the HonorLabels\n                  field of the service or pod monitor applies.\n                type: boolean\n              overrideHonorTimestamps:\n                description: When true, Prometheus ignores the timestamps for all\n                  the targets created from service and pod monitors. Otherwise the\n                  HonorTimestamps field of the service or pod monitor applies.\n                type: boolean\n              paused:\n                description: When a Prometheus deployment is paused, no actions except\n                  for deletion will be performed on the underlying objects.\n                type: boolean\n              podMetadata:\n                description: PodMetadata configures labels and annotations which are\n                  propagated to the Prometheus pods.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: 'Annotations is an unstructured key value map stored\n                      with a resource that may be set by external tools to store and\n                      retrieve arbitrary metadata. They are not queryable and should\n                      be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: 'Map of string keys and values that can be used to\n                      organize and categorize (scope and select) objects. May match\n                      selectors of replication controllers and services. More info:\n                      http://kubernetes.io/docs/user-guide/labels'\n                    type: object\n                  name:\n                    description: 'Name must be unique within a namespace. Is required\n                      when creating resources, although some resources may allow a\n                      client to request the generation of an appropriate name automatically.\n                      Name is primarily intended for creation idempotence and configuration\n                      definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                    type: string\n                type: object\n              podMonitorNamespaceSelector:\n                description: Namespaces to match for PodMonitors discovery. An empty\n                  label selector matches all namespaces. A null label selector matches\n                  the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podMonitorSelector:\n                description: \"*Experimental* PodMonitors to be selected for target\n                  discovery. An empty label selector matches all objects. A null label\n                  selector matches no objects. \\n If `spec.serviceMonitorSelector`,\n                  `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector`\n                  are null, the Prometheus configuration is unmanaged. The Prometheus\n                  operator will ensure that the Prometheus configuration's Secret\n                  exists, but it is the responsibility of the user to provide the\n                  raw gzipped Prometheus configuration under the `prometheus.yaml.gz`\n                  key. This behavior is *deprecated* and will be removed in the next\n                  major version of the custom resource definition. It is recommended\n                  to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podTargetLabels:\n                description: PodTargetLabels are appended to the `spec.podTargetLabels`\n                  field of all PodMonitor and ServiceMonitor objects.\n                items:\n                  type: string\n                type: array\n              portName:\n                default: web\n                description: 'Port name used for the pods and governing service. Default:\n                  \"web\"'\n                type: string\n              priorityClassName:\n                description: Priority class assigned to the Pods.\n                type: string\n              probeNamespaceSelector:\n                description: '*Experimental* Namespaces to match for Probe discovery.\n                  An empty label selector matches all namespaces. A null label selector\n                  matches the current namespace only.'\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              probeSelector:\n                description: \"*Experimental* Probes to be selected for target discovery.\n                  An empty label selector matches all objects. A null label selector\n                  matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`,\n                  `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the\n                  Prometheus configuration is unmanaged. The Prometheus operator will\n                  ensure that the Prometheus configuration's Secret exists, but it\n                  is the responsibility of the user to provide the raw gzipped Prometheus\n                  configuration under the `prometheus.yaml.gz` key. This behavior\n                  is *deprecated* and will be removed in the next major version of\n                  the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs`\n                  instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              prometheusExternalLabelName:\n                description: \"Name of Prometheus external label used to denote the\n                  Prometheus instance name. The external label will _not_ be added\n                  when the field is set to the empty string (`\\\"\\\"`). \\n Default:\n                  \\\"prometheus\\\"\"\n                type: string\n              remoteWrite:\n                description: Defines the list of remote write configurations.\n                items:\n                  description: RemoteWriteSpec defines the configuration to write\n                    samples from Prometheus to a remote endpoint.\n                  properties:\n                    authorization:\n                      description: \"Authorization section for the URL. \\n It requires\n                        Prometheus >= v2.26.0. \\n Cannot be set at the same time as\n                        `sigv4`, `basicAuth`, or `oauth2`.\"\n                      properties:\n                        credentials:\n                          description: The secret's key that contains the credentials\n                            of the request\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: File to read a secret from, mutually exclusive\n                            with Credentials (from SafeAuthorization)\n                          type: string\n                        type:\n                          description: Set the authentication type. Defaults to Bearer,\n                            Basic will cause an error\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: \"BasicAuth configuration for the URL. \\n Cannot\n                        be set at the same time as `sigv4`, `authorization`, or `oauth2`.\"\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace\n                            that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace\n                            that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: \"*Warning: this field shouldn't used because the\n                        token value appears in clear-text. Prefer using `authorization`.*\n                        \\n *Deprecated: this will be removed in a future release.*\"\n                      type: string\n                    bearerTokenFile:\n                      description: \"File from which to read bearer token for the URL.\n                        \\n *Deprecated: this will be removed in a future release.\n                        Prefer using `authorization`.*\"\n                      type: string\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: \"Custom HTTP headers to be sent along with each\n                        remote write request. Be aware that headers that are set by\n                        Prometheus itself can't be overwritten. \\n It requires Prometheus\n                        >= v2.25.0.\"\n                      type: object\n                    metadataConfig:\n                      description: MetadataConfig configures the sending of series\n                        metadata to the remote storage.\n                      properties:\n                        send:\n                          description: Whether metric metadata is sent to the remote\n                            storage or not.\n                          type: boolean\n                        sendInterval:\n                          description: How frequently metric metadata is sent to the\n                            remote storage.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                      type: object\n                    name:\n                      description: \"The name of the remote write queue, it must be\n                        unique if specified. The name is used in metrics and logging\n                        in order to differentiate queues. \\n It requires Prometheus\n                        >= v2.15.0.\"\n                      type: string\n                    oauth2:\n                      description: \"OAuth2 configuration for the URL. \\n It requires\n                        Prometheus >= v2.27.0. \\n Cannot be set at the same time as\n                        `sigv4`, `authorization`, or `basicAuth`.\"\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2\n                            client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyUrl:\n                      description: Optional ProxyURL.\n                      type: string\n                    queueConfig:\n                      description: QueueConfig allows tuning of the remote write queue\n                        parameters.\n                      properties:\n                        batchSendDeadline:\n                          description: BatchSendDeadline is the maximum time a sample\n                            will wait in buffer.\n                          type: string\n                        capacity:\n                          description: Capacity is the number of samples to buffer\n                            per shard before we start dropping them.\n                          type: integer\n                        maxBackoff:\n                          description: MaxBackoff is the maximum retry delay.\n                          type: string\n                        maxRetries:\n                          description: MaxRetries is the maximum number of times to\n                            retry a batch on recoverable errors.\n                          type: integer\n                        maxSamplesPerSend:\n                          description: MaxSamplesPerSend is the maximum number of\n                            samples per send.\n                          type: integer\n                        maxShards:\n                          description: MaxShards is the maximum number of shards,\n                            i.e. amount of concurrency.\n                          type: integer\n                        minBackoff:\n                          description: MinBackoff is the initial retry delay. Gets\n                            doubled for every retry.\n                          type: string\n                        minShards:\n                          description: MinShards is the minimum number of shards,\n                            i.e. amount of concurrency.\n                          type: integer\n                        retryOnRateLimit:\n                          description: Retry upon receiving a 429 status code from\n                            the remote-write storage. This is experimental feature\n                            and might change in the future.\n                          type: boolean\n                      type: object\n                    remoteTimeout:\n                      description: Timeout for requests to the remote write endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    sendExemplars:\n                      description: \"Enables sending of exemplars over remote write.\n                        Note that exemplar-storage itself must be enabled using the\n                        `spec.enableFeature` option for exemplars to be scraped in\n                        the first place. \\n It requires Prometheus >= v2.27.0.\"\n                      type: boolean\n                    sendNativeHistograms:\n                      description: \"Enables sending of native histograms, also known\n                        as sparse histograms over remote write. \\n It requires Prometheus\n                        >= v2.40.0.\"\n                      type: boolean\n                    sigv4:\n                      description: \"Sigv4 allows to configures AWS's Signature Verification\n                        4 for the URL. \\n It requires Prometheus >= v2.26.0. \\n Cannot\n                        be set at the same time as `authorization`, `basicAuth`, or\n                        `oauth2`.\"\n                      properties:\n                        accessKey:\n                          description: AccessKey is the AWS API key. If not specified,\n                            the environment variable `AWS_ACCESS_KEY_ID` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        profile:\n                          description: Profile is the named AWS profile used to authenticate.\n                          type: string\n                        region:\n                          description: Region is the AWS region. If blank, the region\n                            from the default credentials chain used.\n                          type: string\n                        roleArn:\n                          description: RoleArn is the named AWS profile used to authenticate.\n                          type: string\n                        secretKey:\n                          description: SecretKey is the AWS API secret. If not specified,\n                            the environment variable `AWS_SECRET_ACCESS_KEY` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    tlsConfig:\n                      description: TLS Config to use for the URL.\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server\n                            certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: Path to the CA cert in the Prometheus container\n                            to use for the targets.\n                          type: string\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: Path to the client cert file in the Prometheus\n                            container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: Path to the client key file in the Prometheus\n                            container for the targets.\n                          type: string\n                        keySecret:\n                          description: Secret containing the client key file for the\n                            targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: The URL of the endpoint to send samples to.\n                      type: string\n                    writeRelabelConfigs:\n                      description: The list of remote write relabel configurations.\n                      items:\n                        description: 'RelabelConfig allows dynamic rewriting of the\n                          label set, being applied to samples before ingestion. It\n                          defines `<metric_relabel_configs>`-section of Prometheus\n                          configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'\n                        properties:\n                          action:\n                            default: replace\n                            description: Action to perform based on regex matching.\n                              Default is 'replace'. uppercase and lowercase actions\n                              require Prometheus >= 2.36.\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: Modulus to take of the hash of the source\n                              label values.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted\n                              value is matched. Default is '(.*)'\n                            type: string\n                          replacement:\n                            description: Replacement value against which a regex replace\n                              is performed if the regular expression matches. Regex\n                              capture groups are available. Default is '$1'\n                            type: string\n                          separator:\n                            description: Separator placed between concatenated source\n                              label values. default is ';'.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing\n                              labels. Their content is concatenated using the configured\n                              separator and matched against the configured regular\n                              expression for the replace, keep, and drop actions.\n                            items:\n                              description: LabelName is a valid Prometheus label name\n                                which may only contain ASCII letters, numbers, as\n                                well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: Label to which the resulting value is written\n                              in a replace action. It is mandatory for replace actions.\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                  required:\n                  - url\n                  type: object\n                type: array\n              replicaExternalLabelName:\n                description: \"Name of Prometheus external label used to denote the\n                  replica name. The external label will _not_ be added when the field\n                  is set to the empty string (`\\\"\\\"`). \\n Default: \\\"prometheus_replica\\\"\"\n                type: string\n              replicas:\n                description: \"Number of replicas of each shard to deploy for a Prometheus\n                  deployment. `spec.replicas` multiplied by `spec.shards` is the total\n                  number of Pods created. \\n Default: 1\"\n                format: int32\n                type: integer\n              resources:\n                description: Defines the resources requests and limits of the 'prometheus'\n                  container.\n                properties:\n                  claims:\n                    description: \"Claims lists the names of resources, defined in\n                      spec.resourceClaims, that are used by this container. \\n This\n                      is an alpha field and requires enabling the DynamicResourceAllocation\n                      feature gate. \\n This field is immutable. It can only be set\n                      for containers.\"\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: Name must match the name of one entry in pod.spec.resourceClaims\n                            of the Pod where this field is used. It makes that resource\n                            available inside a container.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Limits describes the maximum amount of compute resources\n                      allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Requests describes the minimum amount of compute\n                      resources required. If Requests is omitted for a container,\n                      it defaults to Limits if that is explicitly specified, otherwise\n                      to an implementation-defined value. Requests cannot exceed Limits.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                type: object\n              routePrefix:\n                description: \"The route prefix Prometheus registers HTTP handlers\n                  for. \\n This is useful when using `spec.externalURL`, and a proxy\n                  is rewriting HTTP routes of a request, and the actual ExternalURL\n                  is still true, but the server serves requests under a different\n                  route prefix. For example for use with `kubectl proxy`.\"\n                type: string\n              scrapeConfigNamespaceSelector:\n                description: Namespaces to match for ScrapeConfig discovery. An empty\n                  label selector matches all namespaces. A null label selector matches\n                  the current current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeConfigSelector:\n                description: \"*Experimental* ScrapeConfigs to be selected for target\n                  discovery. An empty label selector matches all objects. A null label\n                  selector matches no objects. \\n If `spec.serviceMonitorSelector`,\n                  `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector`\n                  are null, the Prometheus configuration is unmanaged. The Prometheus\n                  operator will ensure that the Prometheus configuration's Secret\n                  exists, but it is the responsibility of the user to provide the\n                  raw gzipped Prometheus configuration under the `prometheus.yaml.gz`\n                  key. This behavior is *deprecated* and will be removed in the next\n                  major version of the custom resource definition. It is recommended\n                  to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeInterval:\n                default: 30s\n                description: \"Interval between consecutive scrapes. \\n Default: \\\"30s\\\"\"\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              scrapeTimeout:\n                description: Number of seconds to wait until a scrape request times\n                  out.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              secrets:\n                description: Secrets is a list of Secrets in the same namespace as\n                  the Prometheus object, which shall be mounted into the Prometheus\n                  Pods. Each Secret is added to the StatefulSet definition as a volume\n                  named `secret-<secret-name>`. The Secrets are mounted into /etc/prometheus/secrets/<secret-name>\n                  in the 'prometheus' container.\n                items:\n                  type: string\n                type: array\n              securityContext:\n                description: SecurityContext holds pod-level security attributes and\n                  common container settings. This defaults to the default PodSecurityContext.\n                properties:\n                  fsGroup:\n                    description: \"A special supplemental group that applies to all\n                      containers in a pod. Some volume types allow the Kubelet to\n                      change the ownership of that volume to be owned by the pod:\n                      \\n 1. The owning GID will be the FSGroup 2. The setgid bit is\n                      set (new files created in the volume will be owned by FSGroup)\n                      3. The permission bits are OR'd with rw-rw---- \\n If unset,\n                      the Kubelet will not modify the ownership and permissions of\n                      any volume. Note that this field cannot be set when spec.os.name\n                      is windows.\"\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: 'fsGroupChangePolicy defines behavior of changing\n                      ownership and permission of the volume before being exposed\n                      inside Pod. This field will only apply to volume types which\n                      support fsGroup based ownership(and permissions). It will have\n                      no effect on ephemeral volume types such as: secret, configmaps\n                      and emptydir. Valid values are \"OnRootMismatch\" and \"Always\".\n                      If not specified, \"Always\" is used. Note that this field cannot\n                      be set when spec.os.name is windows.'\n                    type: string\n                  runAsGroup:\n                    description: The GID to run the entrypoint of the container process.\n                      Uses runtime default if unset. May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: Indicates that the container must run as a non-root\n                      user. If true, the Kubelet will validate the image at runtime\n                      to ensure that it does not run as UID 0 (root) and fail to start\n                      the container if it does. If unset or false, no such validation\n                      will be performed. May also be set in SecurityContext.  If set\n                      in both SecurityContext and PodSecurityContext, the value specified\n                      in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: The UID to run the entrypoint of the container process.\n                      Defaults to user specified in image metadata if unspecified.\n                      May also be set in SecurityContext.  If set in both SecurityContext\n                      and PodSecurityContext, the value specified in SecurityContext\n                      takes precedence for that container. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxOptions:\n                    description: The SELinux context to be applied to all containers.\n                      If unspecified, the container runtime will allocate a random\n                      SELinux context for each container.  May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to\n                          the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to\n                          the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to\n                          the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to\n                          the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: The seccomp options to use by the containers in this\n                      pod. Note that this field cannot be set when spec.os.name is\n                      windows.\n                    properties:\n                      localhostProfile:\n                        description: localhostProfile indicates a profile defined\n                          in a file on the node should be used. The profile must be\n                          preconfigured on the node to work. Must be a descending\n                          path, relative to the kubelet's configured seccomp profile\n                          location. Must only be set if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: \"type indicates which kind of seccomp profile\n                          will be applied. Valid options are: \\n Localhost - a profile\n                          defined in a file on the node should be used. RuntimeDefault\n                          - the container runtime default profile should be used.\n                          Unconfined - no profile should be applied.\"\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: A list of groups applied to the first process run\n                      in each container, in addition to the container's primary GID,\n                      the fsGroup (if specified), and group memberships defined in\n                      the container image for the uid of the container process. If\n                      unspecified, no additional groups are added to any container.\n                      Note that group memberships defined in the container image for\n                      the uid of the container process are still effective, even if\n                      they are not included in this list. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                  sysctls:\n                    description: Sysctls hold a list of namespaced sysctls used for\n                      the pod. Pods with unsupported sysctls (by the container runtime)\n                      might fail to launch. Note that this field cannot be set when\n                      spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                  windowsOptions:\n                    description: The Windows specific settings applied to all containers.\n                      If unspecified, the options within a container's SecurityContext\n                      will be used. If set in both SecurityContext and PodSecurityContext,\n                      the value specified in SecurityContext takes precedence. Note\n                      that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: GMSACredentialSpec is where the GMSA admission\n                          webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                          inlines the contents of the GMSA credential spec named by\n                          the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA\n                          credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: HostProcess determines if a container should\n                          be run as a 'Host Process' container. This field is alpha-level\n                          and will only be honored by components that enable the WindowsHostProcessContainers\n                          feature flag. Setting this field without the feature flag\n                          will result in errors when validating the Pod. All of a\n                          Pod's containers must have the same effective HostProcess\n                          value (it is not allowed to have a mix of HostProcess containers\n                          and non-HostProcess containers).  In addition, if HostProcess\n                          is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: The UserName in Windows to run the entrypoint\n                          of the container process. Defaults to the user specified\n                          in image metadata if unspecified. May also be set in PodSecurityContext.\n                          If set in both SecurityContext and PodSecurityContext, the\n                          value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: ServiceAccountName is the name of the ServiceAccount\n                  to use to run the Prometheus Pods.\n                type: string\n              serviceMonitorNamespaceSelector:\n                description: Namespaces to match for ServicedMonitors discovery. An\n                  empty label selector matches all namespaces. A null label selector\n                  matches the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              serviceMonitorSelector:\n                description: \"ServiceMonitors to be selected for target discovery.\n                  An empty label selector matches all objects. A null label selector\n                  matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`,\n                  `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the\n                  Prometheus configuration is unmanaged. The Prometheus operator will\n                  ensure that the Prometheus configuration's Secret exists, but it\n                  is the responsibility of the user to provide the raw gzipped Prometheus\n                  configuration under the `prometheus.yaml.gz` key. This behavior\n                  is *deprecated* and will be removed in the next major version of\n                  the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs`\n                  instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              shards:\n                description: \"EXPERIMENTAL: Number of shards to distribute targets\n                  onto. `spec.replicas` multiplied by `spec.shards` is the total number\n                  of Pods created. \\n Note that scaling down shards will not reshard\n                  data onto remaining instances, it must be manually moved. Increasing\n                  shards will not reshard data either but it will continue to be available\n                  from the same instances. To query globally, use Thanos sidecar and\n                  Thanos querier or remote write data to a central location. \\n Sharding\n                  is performed on the content of the `__address__` target meta-label\n                  for PodMonitors and ServiceMonitors and `__param_target__` for Probes.\n                  \\n Default: 1\"\n                format: int32\n                type: integer\n              storage:\n                description: Storage defines the storage used by Prometheus.\n                properties:\n                  disableMountSubPath:\n                    description: '*Deprecated: subPath usage will be removed in a\n                      future release.*'\n                    type: boolean\n                  emptyDir:\n                    description: 'EmptyDirVolumeSource to be used by the StatefulSet.\n                      If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`.\n                      More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir'\n                    properties:\n                      medium:\n                        description: 'medium represents what type of storage medium\n                          should back this directory. The default is \"\" which means\n                          to use the node''s default medium. Must be an empty string\n                          (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: 'sizeLimit is the total amount of local storage\n                          required for this EmptyDir volume. The size limit is also\n                          applicable for memory medium. The maximum usage on memory\n                          medium EmptyDir would be the minimum value between the SizeLimit\n                          specified here and the sum of memory limits of all containers\n                          in a pod. The default is nil which means that the limit\n                          is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: 'EphemeralVolumeSource to be used by the StatefulSet.\n                      This is a beta field in k8s 1.21 and GA in 1.15. For lower versions,\n                      starting with k8s 1.19, it requires enabling the GenericEphemeralVolume\n                      feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes'\n                    properties:\n                      volumeClaimTemplate:\n                        description: \"Will be used to create a stand-alone PVC to\n                          provision the volume. The pod in which this EphemeralVolumeSource\n                          is embedded will be the owner of the PVC, i.e. the PVC will\n                          be deleted together with the pod.  The name of the PVC will\n                          be `<pod name>-<volume name>` where `<volume name>` is the\n                          name from the `PodSpec.Volumes` array entry. Pod validation\n                          will reject the pod if the concatenated name is not valid\n                          for a PVC (for example, too long). \\n An existing PVC with\n                          that name that is not owned by the pod will *not* be used\n                          for the pod to avoid using an unrelated volume by mistake.\n                          Starting the pod is then blocked until the unrelated PVC\n                          is removed. If such a pre-created PVC is meant to be used\n                          by the pod, the PVC has to updated with an owner reference\n                          to the pod once the pod exists. Normally this should not\n                          be necessary, but it may be useful when manually reconstructing\n                          a broken cluster. \\n This field is read-only and no changes\n                          will be made by Kubernetes to the PVC after it has been\n                          created. \\n Required, must not be nil.\"\n                        properties:\n                          metadata:\n                            description: May contain labels and annotations that will\n                              be copied into the PVC when creating it. No other fields\n                              are allowed and will be rejected during validation.\n                            type: object\n                          spec:\n                            description: The specification for the PersistentVolumeClaim.\n                              The entire content is copied unchanged into the PVC\n                              that gets created from this template. The same fields\n                              as in a PersistentVolumeClaim are also valid here.\n                            properties:\n                              accessModes:\n                                description: 'accessModes contains the desired access\n                                  modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                items:\n                                  type: string\n                                type: array\n                              dataSource:\n                                description: 'dataSource field can be used to specify\n                                  either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                  * An existing PVC (PersistentVolumeClaim) If the\n                                  provisioner or an external controller can support\n                                  the specified data source, it will create a new\n                                  volume based on the contents of the specified data\n                                  source. When the AnyVolumeDataSource feature gate\n                                  is enabled, dataSource contents will be copied to\n                                  dataSourceRef, and dataSourceRef contents will be\n                                  copied to dataSource when dataSourceRef.namespace\n                                  is not specified. If the namespace is specified,\n                                  then dataSourceRef will not be copied to dataSource.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: 'dataSourceRef specifies the object from\n                                  which to populate the volume with data, if a non-empty\n                                  volume is desired. This may be any object from a\n                                  non-empty API group (non core object) or a PersistentVolumeClaim\n                                  object. When this field is specified, volume binding\n                                  will only succeed if the type of the specified object\n                                  matches some installed volume populator or dynamic\n                                  provisioner. This field will replace the functionality\n                                  of the dataSource field and as such if both fields\n                                  are non-empty, they must have the same value. For\n                                  backwards compatibility, when namespace isn''t specified\n                                  in dataSourceRef, both fields (dataSource and dataSourceRef)\n                                  will be set to the same value automatically if one\n                                  of them is empty and the other is non-empty. When\n                                  namespace is specified in dataSourceRef, dataSource\n                                  isn''t set to the same value and must be empty.\n                                  There are three important differences between dataSource\n                                  and dataSourceRef: * While dataSource only allows\n                                  two specific types of objects, dataSourceRef allows\n                                  any non-core object, as well as PersistentVolumeClaim\n                                  objects. * While dataSource ignores disallowed values\n                                  (dropping them), dataSourceRef preserves all values,\n                                  and generates an error if a disallowed value is\n                                  specified. * While dataSource only allows local\n                                  objects, dataSourceRef allows objects in any namespaces.\n                                  (Beta) Using this field requires the AnyVolumeDataSource\n                                  feature gate to be enabled. (Alpha) Using the namespace\n                                  field of dataSourceRef requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                  namespace:\n                                    description: Namespace is the namespace of resource\n                                      being referenced Note that when a namespace\n                                      is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                      object is required in the referent namespace\n                                      to allow that namespace's owner to accept the\n                                      reference. See the ReferenceGrant documentation\n                                      for details. (Alpha) This field requires the\n                                      CrossNamespaceVolumeDataSource feature gate\n                                      to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: 'resources represents the minimum resources\n                                  the volume should have. If RecoverVolumeExpansionFailure\n                                  feature is enabled users are allowed to specify\n                                  resource requirements that are lower than previous\n                                  value but must still be higher than capacity recorded\n                                  in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                properties:\n                                  claims:\n                                    description: \"Claims lists the names of resources,\n                                      defined in spec.resourceClaims, that are used\n                                      by this container. \\n This is an alpha field\n                                      and requires enabling the DynamicResourceAllocation\n                                      feature gate. \\n This field is immutable. It\n                                      can only be set for containers.\"\n                                    items:\n                                      description: ResourceClaim references one entry\n                                        in PodSpec.ResourceClaims.\n                                      properties:\n                                        name:\n                                          description: Name must match the name of\n                                            one entry in pod.spec.resourceClaims of\n                                            the Pod where this field is used. It makes\n                                            that resource available inside a container.\n                                          type: string\n                                      required:\n                                      - name\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-map-keys:\n                                    - name\n                                    x-kubernetes-list-type: map\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Limits describes the maximum amount\n                                      of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Requests describes the minimum amount\n                                      of compute resources required. If Requests is\n                                      omitted for a container, it defaults to Limits\n                                      if that is explicitly specified, otherwise to\n                                      an implementation-defined value. Requests cannot\n                                      exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes\n                                  to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label\n                                      selector requirements. The requirements are\n                                      ANDed.\n                                    items:\n                                      description: A label selector requirement is\n                                        a selector that contains values, a key, and\n                                        an operator that relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the\n                                            selector applies to.\n                                          type: string\n                                        operator:\n                                          description: operator represents a key's\n                                            relationship to a set of values. Valid\n                                            operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: values is an array of string\n                                            values. If the operator is In or NotIn,\n                                            the values array must be non-empty. If\n                                            the operator is Exists or DoesNotExist,\n                                            the values array must be empty. This array\n                                            is replaced during a strategic merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: matchLabels is a map of {key,value}\n                                      pairs. A single {key,value} in the matchLabels\n                                      map is equivalent to an element of matchExpressions,\n                                      whose key field is \"key\", the operator is \"In\",\n                                      and the values array contains only \"value\".\n                                      The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: 'storageClassName is the name of the\n                                  StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                type: string\n                              volumeMode:\n                                description: volumeMode defines what type of volume\n                                  is required by the claim. Value of Filesystem is\n                                  implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to\n                                  the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: Defines the PVC spec to be used by the Prometheus\n                      StatefulSets. The easiest way to use a volume that cannot be\n                      automatically provisioned is to use a label selector alongside\n                      manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: 'APIVersion defines the versioned schema of this\n                          representation of an object. Servers should convert recognized\n                          schemas to the latest internal value, and may reject unrecognized\n                          values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n                        type: string\n                      kind:\n                        description: 'Kind is a string value representing the REST\n                          resource this object represents. Servers may infer this\n                          from the endpoint the client submits requests to. Cannot\n                          be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                        type: string\n                      metadata:\n                        description: EmbeddedMetadata contains metadata relevant to\n                          an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: 'Annotations is an unstructured key value\n                              map stored with a resource that may be set by external\n                              tools to store and retrieve arbitrary metadata. They\n                              are not queryable and should be preserved when modifying\n                              objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: 'Map of string keys and values that can be\n                              used to organize and categorize (scope and select) objects.\n                              May match selectors of replication controllers and services.\n                              More info: http://kubernetes.io/docs/user-guide/labels'\n                            type: object\n                          name:\n                            description: 'Name must be unique within a namespace.\n                              Is required when creating resources, although some resources\n                              may allow a client to request the generation of an appropriate\n                              name automatically. Name is primarily intended for creation\n                              idempotence and configuration definition. Cannot be\n                              updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                            type: string\n                        type: object\n                      spec:\n                        description: 'Defines the desired characteristics of a volume\n                          requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the desired access\n                              modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          dataSource:\n                            description: 'dataSource field can be used to specify\n                              either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                              * An existing PVC (PersistentVolumeClaim) If the provisioner\n                              or an external controller can support the specified\n                              data source, it will create a new volume based on the\n                              contents of the specified data source. When the AnyVolumeDataSource\n                              feature gate is enabled, dataSource contents will be\n                              copied to dataSourceRef, and dataSourceRef contents\n                              will be copied to dataSource when dataSourceRef.namespace\n                              is not specified. If the namespace is specified, then\n                              dataSourceRef will not be copied to dataSource.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: 'dataSourceRef specifies the object from\n                              which to populate the volume with data, if a non-empty\n                              volume is desired. This may be any object from a non-empty\n                              API group (non core object) or a PersistentVolumeClaim\n                              object. When this field is specified, volume binding\n                              will only succeed if the type of the specified object\n                              matches some installed volume populator or dynamic provisioner.\n                              This field will replace the functionality of the dataSource\n                              field and as such if both fields are non-empty, they\n                              must have the same value. For backwards compatibility,\n                              when namespace isn''t specified in dataSourceRef, both\n                              fields (dataSource and dataSourceRef) will be set to\n                              the same value automatically if one of them is empty\n                              and the other is non-empty. When namespace is specified\n                              in dataSourceRef, dataSource isn''t set to the same\n                              value and must be empty. There are three important differences\n                              between dataSource and dataSourceRef: * While dataSource\n                              only allows two specific types of objects, dataSourceRef\n                              allows any non-core object, as well as PersistentVolumeClaim\n                              objects. * While dataSource ignores disallowed values\n                              (dropping them), dataSourceRef preserves all values,\n                              and generates an error if a disallowed value is specified.\n                              * While dataSource only allows local objects, dataSourceRef\n                              allows objects in any namespaces. (Beta) Using this\n                              field requires the AnyVolumeDataSource feature gate\n                              to be enabled. (Alpha) Using the namespace field of\n                              dataSourceRef requires the CrossNamespaceVolumeDataSource\n                              feature gate to be enabled.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: Namespace is the namespace of resource\n                                  being referenced Note that when a namespace is specified,\n                                  a gateway.networking.k8s.io/ReferenceGrant object\n                                  is required in the referent namespace to allow that\n                                  namespace's owner to accept the reference. See the\n                                  ReferenceGrant documentation for details. (Alpha)\n                                  This field requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: 'resources represents the minimum resources\n                              the volume should have. If RecoverVolumeExpansionFailure\n                              feature is enabled users are allowed to specify resource\n                              requirements that are lower than previous value but\n                              must still be higher than capacity recorded in the status\n                              field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                            properties:\n                              claims:\n                                description: \"Claims lists the names of resources,\n                                  defined in spec.resourceClaims, that are used by\n                                  this container. \\n This is an alpha field and requires\n                                  enabling the DynamicResourceAllocation feature gate.\n                                  \\n This field is immutable. It can only be set for\n                                  containers.\"\n                                items:\n                                  description: ResourceClaim references one entry\n                                    in PodSpec.ResourceClaims.\n                                  properties:\n                                    name:\n                                      description: Name must match the name of one\n                                        entry in pod.spec.resourceClaims of the Pod\n                                        where this field is used. It makes that resource\n                                        available inside a container.\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                type: array\n                                x-kubernetes-list-map-keys:\n                                - name\n                                x-kubernetes-list-type: map\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Limits describes the maximum amount\n                                  of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Requests describes the minimum amount\n                                  of compute resources required. If Requests is omitted\n                                  for a container, it defaults to Limits if that is\n                                  explicitly specified, otherwise to an implementation-defined\n                                  value. Requests cannot exceed Limits. More info:\n                                  https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to\n                              consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector\n                                  requirements. The requirements are ANDed.\n                                items:\n                                  description: A label selector requirement is a selector\n                                    that contains values, a key, and an operator that\n                                    relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector\n                                        applies to.\n                                      type: string\n                                    operator:\n                                      description: operator represents a key's relationship\n                                        to a set of values. Valid operators are In,\n                                        NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: values is an array of string values.\n                                        If the operator is In or NotIn, the values\n                                        array must be non-empty. If the operator is\n                                        Exists or DoesNotExist, the values array must\n                                        be empty. This array is replaced during a\n                                        strategic merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: matchLabels is a map of {key,value} pairs.\n                                  A single {key,value} in the matchLabels map is equivalent\n                                  to an element of matchExpressions, whose key field\n                                  is \"key\", the operator is \"In\", and the values array\n                                  contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: 'storageClassName is the name of the StorageClass\n                              required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                            type: string\n                          volumeMode:\n                            description: volumeMode defines what type of volume is\n                              required by the claim. Value of Filesystem is implied\n                              when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the\n                              PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: '*Deprecated: this field is never set.*'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the actual access modes\n                              the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: allocatedResources is the storage resource\n                              within AllocatedResources tracks the capacity allocated\n                              to a PVC. It may be larger than the actual capacity\n                              when a volume expansion operation is requested. For\n                              storage quota, the larger value from allocatedResources\n                              and PVC.spec.resources is used. If allocatedResources\n                              is not set, PVC.spec.resources alone is used for quota\n                              calculation. If a volume expansion capacity request\n                              is lowered, allocatedResources is only lowered if there\n                              are no expansion operations in progress and if the actual\n                              volume capacity is equal or lower than the requested\n                              capacity. This is an alpha field and requires enabling\n                              RecoverVolumeExpansionFailure feature.\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources\n                              of the underlying volume.\n                            type: object\n                          conditions:\n                            description: conditions is the current Condition of persistent\n                              volume claim. If underlying persistent volume is being\n                              resized then the Condition will be set to 'ResizeStarted'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains\n                                details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed\n                                    the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the\n                                    condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message\n                                    indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: reason is a unique, this should be\n                                    a short, machine understandable string that gives\n                                    the reason for condition's last transition. If\n                                    it reports \"ResizeStarted\" that means the underlying\n                                    persistent volume is being resized.\n                                  type: string\n                                status:\n                                  type: string\n                                type:\n                                  description: PersistentVolumeClaimConditionType\n                                    is a valid value of PersistentVolumeClaimCondition.Type\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                          resizeStatus:\n                            description: resizeStatus stores status of resize operation.\n                              ResizeStatus is not set by default but when expansion\n                              is complete resizeStatus is set to empty string by resize\n                              controller or kubelet. This is an alpha field and requires\n                              enabling RecoverVolumeExpansionFailure feature.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tolerations:\n                description: Defines the Pods' tolerations if specified.\n                items:\n                  description: The pod this Toleration is attached to tolerates any\n                    taint that matches the triple <key,value,effect> using the matching\n                    operator <operator>.\n                  properties:\n                    effect:\n                      description: Effect indicates the taint effect to match. Empty\n                        means match all taint effects. When specified, allowed values\n                        are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: Key is the taint key that the toleration applies\n                        to. Empty means match all taint keys. If the key is empty,\n                        operator must be Exists; this combination means to match all\n                        values and all keys.\n                      type: string\n                    operator:\n                      description: Operator represents a key's relationship to the\n                        value. Valid operators are Exists and Equal. Defaults to Equal.\n                        Exists is equivalent to wildcard for value, so that a pod\n                        can tolerate all taints of a particular category.\n                      type: string\n                    tolerationSeconds:\n                      description: TolerationSeconds represents the period of time\n                        the toleration (which must be of effect NoExecute, otherwise\n                        this field is ignored) tolerates the taint. By default, it\n                        is not set, which means tolerate the taint forever (do not\n                        evict). Zero and negative values will be treated as 0 (evict\n                        immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: Value is the taint value the toleration matches\n                        to. If the operator is Exists, the value should be empty,\n                        otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: Defines the pod's topology spread constraints if specified.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching\n                    pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: LabelSelector is used to find matching pods. Pods\n                        that match this label selector are counted to determine the\n                        number of pods in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector\n                            requirements. The requirements are ANDed.\n                          items:\n                            description: A label selector requirement is a selector\n                              that contains values, a key, and an operator that relates\n                              the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector\n                                  applies to.\n                                type: string\n                              operator:\n                                description: operator represents a key's relationship\n                                  to a set of values. Valid operators are In, NotIn,\n                                  Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: values is an array of string values.\n                                  If the operator is In or NotIn, the values array\n                                  must be non-empty. If the operator is Exists or\n                                  DoesNotExist, the values array must be empty. This\n                                  array is replaced during a strategic merge patch.\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: matchLabels is a map of {key,value} pairs.\n                            A single {key,value} in the matchLabels map is equivalent\n                            to an element of matchExpressions, whose key field is\n                            \"key\", the operator is \"In\", and the values array contains\n                            only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: \"MatchLabelKeys is a set of pod label keys to select\n                        the pods over which spreading will be calculated. The keys\n                        are used to lookup values from the incoming pod labels, those\n                        key-value labels are ANDed with labelSelector to select the\n                        group of existing pods over which spreading will be calculated\n                        for the incoming pod. The same key is forbidden to exist in\n                        both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot\n                        be set when LabelSelector isn't set. Keys that don't exist\n                        in the incoming pod labels will be ignored. A null or empty\n                        list means only match against labelSelector. \\n This is a\n                        beta field and requires the MatchLabelKeysInPodTopologySpread\n                        feature gate to be enabled (enabled by default).\"\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: 'MaxSkew describes the degree to which pods may\n                        be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,\n                        it is the maximum permitted difference between the number\n                        of matching pods in the target topology and the global minimum.\n                        The global minimum is the minimum number of matching pods\n                        in an eligible domain or zero if the number of eligible domains\n                        is less than MinDomains. For example, in a 3-zone cluster,\n                        MaxSkew is set to 1, and pods with the same labelSelector\n                        spread as 2/2/1: In this case, the global minimum is 1. |\n                        zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew\n                        is 1, incoming pod can only be scheduled to zone3 to become\n                        2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1)\n                        on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming\n                        pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`,\n                        it is used to give higher precedence to topologies that satisfy\n                        it. It''s a required field. Default value is 1 and 0 is not\n                        allowed.'\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: \"MinDomains indicates a minimum number of eligible\n                        domains. When the number of eligible domains with matching\n                        topology keys is less than minDomains, Pod Topology Spread\n                        treats \\\"global minimum\\\" as 0, and then the calculation of\n                        Skew is performed. And when the number of eligible domains\n                        with matching topology keys equals or greater than minDomains,\n                        this value has no effect on scheduling. As a result, when\n                        the number of eligible domains is less than minDomains, scheduler\n                        won't schedule more than maxSkew Pods to those domains. If\n                        value is nil, the constraint behaves as if MinDomains is equal\n                        to 1. Valid values are integers greater than 0. When value\n                        is not nil, WhenUnsatisfiable must be DoNotSchedule. \\n For\n                        example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains\n                        is set to 5 and pods with the same labelSelector spread as\n                        2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  |\n                        The number of domains is less than 5(MinDomains), so \\\"global\n                        minimum\\\" is treated as 0. In this situation, new pod with\n                        the same labelSelector cannot be scheduled, because computed\n                        skew will be 3(3 - 0) if new Pod is scheduled to any of the\n                        three zones, it will violate MaxSkew. \\n This is a beta field\n                        and requires the MinDomainsInPodTopologySpread feature gate\n                        to be enabled (enabled by default).\"\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: \"NodeAffinityPolicy indicates how we will treat\n                        Pod's nodeAffinity/nodeSelector when calculating pod topology\n                        spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector\n                        are included in the calculations. - Ignore: nodeAffinity/nodeSelector\n                        are ignored. All nodes are included in the calculations. \\n\n                        If this value is nil, the behavior is equivalent to the Honor\n                        policy. This is a beta-level feature default enabled by the\n                        NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    nodeTaintsPolicy:\n                      description: \"NodeTaintsPolicy indicates how we will treat node\n                        taints when calculating pod topology spread skew. Options\n                        are: - Honor: nodes without taints, along with tainted nodes\n                        for which the incoming pod has a toleration, are included.\n                        - Ignore: node taints are ignored. All nodes are included.\n                        \\n If this value is nil, the behavior is equivalent to the\n                        Ignore policy. This is a beta-level feature default enabled\n                        by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    topologyKey:\n                      description: TopologyKey is the key of node labels. Nodes that\n                        have a label with this key and identical values are considered\n                        to be in the same topology. We consider each <key, value>\n                        as a \"bucket\", and try to put balanced number of pods into\n                        each bucket. We define a domain as a particular instance of\n                        a topology. Also, we define an eligible domain as a domain\n                        whose nodes meet the requirements of nodeAffinityPolicy and\n                        nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\",\n                        each Node is a domain of that topology. And, if TopologyKey\n                        is \"topology.kubernetes.io/zone\", each zone is a domain of\n                        that topology. It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: 'WhenUnsatisfiable indicates how to deal with a\n                        pod if it doesn''t satisfy the spread constraint. - DoNotSchedule\n                        (default) tells the scheduler not to schedule it. - ScheduleAnyway\n                        tells the scheduler to schedule the pod in any location, but\n                        giving higher precedence to topologies that would help reduce\n                        the skew. A constraint is considered \"Unsatisfiable\" for an\n                        incoming pod if and only if every possible node assignment\n                        for that pod would violate \"MaxSkew\" on some topology. For\n                        example, in a 3-zone cluster, MaxSkew is set to 1, and pods\n                        with the same labelSelector spread as 3/1/1: | zone1 | zone2\n                        | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is\n                        set to DoNotSchedule, incoming pod can only be scheduled to\n                        zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on\n                        zone2(zone3) satisfies MaxSkew(1). In other words, the cluster\n                        can still be imbalanced, but scheduler won''t make it *more*\n                        imbalanced. It''s a required field.'\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              tracingConfig:\n                description: 'EXPERIMENTAL: TracingConfig configures tracing in Prometheus.\n                  This is an experimental feature, it may change in any upcoming release\n                  in a breaking way.'\n                properties:\n                  clientType:\n                    description: Client used to export the traces. Supported values\n                      are `http` or `grpc`.\n                    enum:\n                    - http\n                    - grpc\n                    type: string\n                  compression:\n                    description: Compression key for supported compression types.\n                      The only supported value is `gzip`.\n                    enum:\n                    - gzip\n                    type: string\n                  endpoint:\n                    description: Endpoint to send the traces to. Should be provided\n                      in format <host>:<port>.\n                    minLength: 1\n                    type: string\n                  headers:\n                    additionalProperties:\n                      type: string\n                    description: Key-value pairs to be used as headers associated\n                      with gRPC or HTTP requests.\n                    type: object\n                  insecure:\n                    description: If disabled, the client will use a secure connection.\n                    type: boolean\n                  samplingFraction:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: Sets the probability a given trace will be sampled.\n                      Must be a float from 0 through 1.\n                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                    x-kubernetes-int-or-string: true\n                  timeout:\n                    description: Maximum time the exporter will wait for each batch\n                      export.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  tlsConfig:\n                    description: TLS Config to use when sending traces.\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server\n                          certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container\n                          to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus\n                          container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus\n                          container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the\n                          targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - endpoint\n                type: object\n              version:\n                description: \"Version of Prometheus being deployed. The operator uses\n                  this information to generate the Prometheus StatefulSet + configuration\n                  files. \\n If not specified, the operator assumes the latest upstream\n                  version of Prometheus available at the time when the version of\n                  the operator was released.\"\n                type: string\n              volumeMounts:\n                description: \"VolumeMounts allows the configuration of additional\n                  VolumeMounts. \\n VolumeMounts will be appended to other VolumeMounts\n                  in the 'prometheus' container, that are generated as a result of\n                  StorageSpec objects.\"\n                items:\n                  description: VolumeMount describes a mounting of a Volume within\n                    a container.\n                  properties:\n                    mountPath:\n                      description: Path within the container at which the volume should\n                        be mounted.  Must not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: mountPropagation determines how mounts are propagated\n                        from the host to container and the other way around. When\n                        not set, MountPropagationNone is used. This field is beta\n                        in 1.10.\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: Mounted read-only if true, read-write otherwise\n                        (false or unspecified). Defaults to false.\n                      type: boolean\n                    subPath:\n                      description: Path within the volume from which the container's\n                        volume should be mounted. Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: Expanded path within the volume from which the\n                        container's volume should be mounted. Behaves similarly to\n                        SubPath but environment variable references $(VAR_NAME) are\n                        expanded using the container's environment. Defaults to \"\"\n                        (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: Volumes allows the configuration of additional volumes\n                  on the output StatefulSet definition. Volumes specified will be\n                  appended to other volumes that are generated as a result of StorageSpec\n                  objects.\n                items:\n                  description: Volume represents a named volume in a pod that may\n                    be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: 'awsElasticBlockStore represents an AWS Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly value true will force the readOnly\n                            setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: boolean\n                        volumeID:\n                          description: 'volumeID is unique ID of the persistent disk\n                            resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: azureDisk represents an Azure Data Disk mount on\n                        the host and bind mount to the pod.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None,\n                            Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the\n                            blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob\n                            storage\n                          type: string\n                        fsType:\n                          description: fsType is Filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple\n                            blob disks per storage account  Dedicated: single blob\n                            disk per storage account  Managed: azure managed data\n                            disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: azureFile represents an Azure File Service mount\n                        on the host and bind mount to the pod.\n                      properties:\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains\n                            Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: cephFS represents a Ceph FS mount on the host that\n                        shares a pod's lifetime\n                      properties:\n                        monitors:\n                          description: 'monitors is Required: Monitors is a collection\n                            of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        path:\n                          description: 'path is Optional: Used as the mounted root,\n                            rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: boolean\n                        secretFile:\n                          description: 'secretFile is Optional: SecretFile is the\n                            path to key ring for User, default is /etc/ceph/user.secret\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                        secretRef:\n                          description: 'secretRef is Optional: SecretRef is reference\n                            to the authentication secret for User, default is empty.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is optional: User is the rados user name,\n                            default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: 'cinder represents a cinder volume attached and\n                        mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to\n                            be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                        readOnly:\n                          description: 'readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is optional: points to a secret\n                            object containing parameters used to connect to OpenStack.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: 'volumeID used to identify the volume in cinder.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate\n                        this volume\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items if unspecified, each key-value pair in\n                            the Data field of the referenced ConfigMap will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the ConfigMap, the volume setup will error unless it is\n                            marked optional. Paths must be relative and may not contain\n                            the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its\n                            keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral\n                        storage that is handled by certain external CSI drivers (Beta\n                        feature).\n                      properties:\n                        driver:\n                          description: driver is the name of the CSI driver that handles\n                            this volume. Consult with your admin for the correct name\n                            as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            If not provided, the empty value is passed to the associated\n                            CSI driver which will determine the default filesystem\n                            to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: nodePublishSecretRef is a reference to the\n                            secret object containing sensitive information to pass\n                            to the CSI driver to complete the CSI NodePublishVolume\n                            and NodeUnpublishVolume calls. This field is optional,\n                            and  may be empty if no secret is required. If the secret\n                            object contains more than one secret, all secret references\n                            are passed.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: readOnly specifies a read-only configuration\n                            for the volume. Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: volumeAttributes stores driver-specific properties\n                            that are passed to the CSI driver. Consult your driver's\n                            documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod\n                        that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'Optional: mode bits to use on created files\n                            by default. Must be a Optional: mode bits used to set\n                            permissions on created files by default. Must be an octal\n                            value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information\n                              to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod:\n                                  only annotations, labels, name and namespace are\n                                  supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: 'Optional: mode bits used to set permissions\n                                  on this file, must be an octal value between 0000\n                                  and 0777 or a decimal value between 0 and 511. YAML\n                                  accepts both octal and decimal values, JSON requires\n                                  decimal values for mode bits. If not specified,\n                                  the volume defaultMode will be used. This might\n                                  be in conflict with other options that affect the\n                                  file mode, like fsGroup, and the result can be other\n                                  mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path\n                                  name of the file to be created. Must not be absolute\n                                  or contain the ''..'' path. Must be utf-8 encoded.\n                                  The first item of the relative path must not start\n                                  with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, requests.cpu and requests.memory)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                      type: object\n                    emptyDir:\n                      description: 'emptyDir represents a temporary directory that\n                        shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                      properties:\n                        medium:\n                          description: 'medium represents what type of storage medium\n                            should back this directory. The default is \"\" which means\n                            to use the node''s default medium. Must be an empty string\n                            (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: 'sizeLimit is the total amount of local storage\n                            required for this EmptyDir volume. The size limit is also\n                            applicable for memory medium. The maximum usage on memory\n                            medium EmptyDir would be the minimum value between the\n                            SizeLimit specified here and the sum of memory limits\n                            of all containers in a pod. The default is nil which means\n                            that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: \"ephemeral represents a volume that is handled\n                        by a cluster storage driver. The volume's lifecycle is tied\n                        to the pod that defines it - it will be created before the\n                        pod starts, and deleted when the pod is removed. \\n Use this\n                        if: a) the volume is only needed while the pod runs, b) features\n                        of normal volumes like restoring from snapshot or capacity\n                        tracking are needed, c) the storage driver is specified through\n                        a storage class, and d) the storage driver supports dynamic\n                        volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource\n                        for more information on the connection between this volume\n                        type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim\n                        or one of the vendor-specific APIs for volumes that persist\n                        for longer than the lifecycle of an individual pod. \\n Use\n                        CSI for light-weight local ephemeral volumes if the CSI driver\n                        is meant to be used that way - see the documentation of the\n                        driver for more information. \\n A pod can use both types of\n                        ephemeral volumes and persistent volumes at the same time.\"\n                      properties:\n                        volumeClaimTemplate:\n                          description: \"Will be used to create a stand-alone PVC to\n                            provision the volume. The pod in which this EphemeralVolumeSource\n                            is embedded will be the owner of the PVC, i.e. the PVC\n                            will be deleted together with the pod.  The name of the\n                            PVC will be `<pod name>-<volume name>` where `<volume\n                            name>` is the name from the `PodSpec.Volumes` array entry.\n                            Pod validation will reject the pod if the concatenated\n                            name is not valid for a PVC (for example, too long). \\n\n                            An existing PVC with that name that is not owned by the\n                            pod will *not* be used for the pod to avoid using an unrelated\n                            volume by mistake. Starting the pod is then blocked until\n                            the unrelated PVC is removed. If such a pre-created PVC\n                            is meant to be used by the pod, the PVC has to updated\n                            with an owner reference to the pod once the pod exists.\n                            Normally this should not be necessary, but it may be useful\n                            when manually reconstructing a broken cluster. \\n This\n                            field is read-only and no changes will be made by Kubernetes\n                            to the PVC after it has been created. \\n Required, must\n                            not be nil.\"\n                          properties:\n                            metadata:\n                              description: May contain labels and annotations that\n                                will be copied into the PVC when creating it. No other\n                                fields are allowed and will be rejected during validation.\n                              type: object\n                            spec:\n                              description: The specification for the PersistentVolumeClaim.\n                                The entire content is copied unchanged into the PVC\n                                that gets created from this template. The same fields\n                                as in a PersistentVolumeClaim are also valid here.\n                              properties:\n                                accessModes:\n                                  description: 'accessModes contains the desired access\n                                    modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                  items:\n                                    type: string\n                                  type: array\n                                dataSource:\n                                  description: 'dataSource field can be used to specify\n                                    either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                    * An existing PVC (PersistentVolumeClaim) If the\n                                    provisioner or an external controller can support\n                                    the specified data source, it will create a new\n                                    volume based on the contents of the specified\n                                    data source. When the AnyVolumeDataSource feature\n                                    gate is enabled, dataSource contents will be copied\n                                    to dataSourceRef, and dataSourceRef contents will\n                                    be copied to dataSource when dataSourceRef.namespace\n                                    is not specified. If the namespace is specified,\n                                    then dataSourceRef will not be copied to dataSource.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: 'dataSourceRef specifies the object\n                                    from which to populate the volume with data, if\n                                    a non-empty volume is desired. This may be any\n                                    object from a non-empty API group (non core object)\n                                    or a PersistentVolumeClaim object. When this field\n                                    is specified, volume binding will only succeed\n                                    if the type of the specified object matches some\n                                    installed volume populator or dynamic provisioner.\n                                    This field will replace the functionality of the\n                                    dataSource field and as such if both fields are\n                                    non-empty, they must have the same value. For\n                                    backwards compatibility, when namespace isn''t\n                                    specified in dataSourceRef, both fields (dataSource\n                                    and dataSourceRef) will be set to the same value\n                                    automatically if one of them is empty and the\n                                    other is non-empty. When namespace is specified\n                                    in dataSourceRef, dataSource isn''t set to the\n                                    same value and must be empty. There are three\n                                    important differences between dataSource and dataSourceRef:\n                                    * While dataSource only allows two specific types\n                                    of objects, dataSourceRef allows any non-core\n                                    object, as well as PersistentVolumeClaim objects.\n                                    * While dataSource ignores disallowed values (dropping\n                                    them), dataSourceRef preserves all values, and\n                                    generates an error if a disallowed value is specified.\n                                    * While dataSource only allows local objects,\n                                    dataSourceRef allows objects in any namespaces.\n                                    (Beta) Using this field requires the AnyVolumeDataSource\n                                    feature gate to be enabled. (Alpha) Using the\n                                    namespace field of dataSourceRef requires the\n                                    CrossNamespaceVolumeDataSource feature gate to\n                                    be enabled.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                    namespace:\n                                      description: Namespace is the namespace of resource\n                                        being referenced Note that when a namespace\n                                        is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                        object is required in the referent namespace\n                                        to allow that namespace's owner to accept\n                                        the reference. See the ReferenceGrant documentation\n                                        for details. (Alpha) This field requires the\n                                        CrossNamespaceVolumeDataSource feature gate\n                                        to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: 'resources represents the minimum resources\n                                    the volume should have. If RecoverVolumeExpansionFailure\n                                    feature is enabled users are allowed to specify\n                                    resource requirements that are lower than previous\n                                    value but must still be higher than capacity recorded\n                                    in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                  properties:\n                                    claims:\n                                      description: \"Claims lists the names of resources,\n                                        defined in spec.resourceClaims, that are used\n                                        by this container. \\n This is an alpha field\n                                        and requires enabling the DynamicResourceAllocation\n                                        feature gate. \\n This field is immutable.\n                                        It can only be set for containers.\"\n                                      items:\n                                        description: ResourceClaim references one\n                                          entry in PodSpec.ResourceClaims.\n                                        properties:\n                                          name:\n                                            description: Name must match the name\n                                              of one entry in pod.spec.resourceClaims\n                                              of the Pod where this field is used.\n                                              It makes that resource available inside\n                                              a container.\n                                            type: string\n                                        required:\n                                        - name\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-map-keys:\n                                      - name\n                                      x-kubernetes-list-type: map\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Limits describes the maximum amount\n                                        of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Requests describes the minimum\n                                        amount of compute resources required. If Requests\n                                        is omitted for a container, it defaults to\n                                        Limits if that is explicitly specified, otherwise\n                                        to an implementation-defined value. Requests\n                                        cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes\n                                    to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: 'storageClassName is the name of the\n                                    StorageClass required by the claim. More info:\n                                    https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                  type: string\n                                volumeMode:\n                                  description: volumeMode defines what type of volume\n                                    is required by the claim. Value of Filesystem\n                                    is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference\n                                    to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is\n                        attached to a kubelet's host machine and then exposed to the\n                        pod.\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. TODO: how do we prevent errors in the\n                            filesystem from compromising the machine'\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide\n                            names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                        wwids:\n                          description: 'wwids Optional: FC volume world wide identifiers\n                            (wwids) Either wwids or combination of targetWWNs and\n                            lun must be set, but not both simultaneously.'\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    flexVolume:\n                      description: flexVolume represents a generic volume resource\n                        that is provisioned/attached using an exec based plugin.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for\n                            this volume.\n                          type: string\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends\n                            on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra\n                            command options if any.'\n                          type: object\n                        readOnly:\n                          description: 'readOnly is Optional: defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is Optional: secretRef is reference\n                            to the secret object containing sensitive information\n                            to pass to the plugin scripts. This may be empty if no\n                            secret object is specified. If the secret object contains\n                            more than one secret, all secrets are passed to the plugin\n                            scripts.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: flocker represents a Flocker volume attached to\n                        a kubelet's host machine. This depends on the Flocker control\n                        service being running\n                      properties:\n                        datasetName:\n                          description: datasetName is Name of the dataset stored as\n                            metadata -> name on the dataset for Flocker should be\n                            considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This\n                            is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: 'gcePersistentDisk represents a GCE Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                      properties:\n                        fsType:\n                          description: 'fsType is filesystem type of the volume that\n                            you want to mount. Tip: Ensure that the filesystem type\n                            is supported by the host operating system. Examples: \"ext4\",\n                            \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: 'pdName is unique name of the PD resource in\n                            GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: 'gitRepo represents a git repository at a particular\n                        revision. DEPRECATED: GitRepo is deprecated. To provision\n                        a container with a git repo, mount an EmptyDir into an InitContainer\n                        that clones the repo using git, then mount the EmptyDir into\n                        the Pod''s container.'\n                      properties:\n                        directory:\n                          description: directory is the target directory name. Must\n                            not contain or start with '..'.  If '.' is supplied, the\n                            volume directory will be the git repository.  Otherwise,\n                            if specified, the volume will contain the git repository\n                            in the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified\n                            revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: 'glusterfs represents a Glusterfs mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'\n                      properties:\n                        endpoints:\n                          description: 'endpoints is the endpoint name that details\n                            Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        path:\n                          description: 'path is the Glusterfs volume path. More info:\n                            https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the Glusterfs volume\n                            to be mounted with read-only permissions. Defaults to\n                            false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: 'hostPath represents a pre-existing file or directory\n                        on the host machine that is directly exposed to the container.\n                        This is generally used for system agents or other privileged\n                        things that are allowed to see the host machine. Most containers\n                        will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                        --- TODO(jonesdl) We need to restrict who can use host directory\n                        mounts and who can/can not mount host directories as read/write.'\n                      properties:\n                        path:\n                          description: 'path of the directory on the host. If the\n                            path is a symlink, it will follow the link to the real\n                            path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                        type:\n                          description: 'type for HostPath Volume Defaults to \"\" More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    iscsi:\n                      description: 'iscsi represents an ISCSI Disk resource that is\n                        attached to a kubelet''s host machine and then exposed to\n                        the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI\n                            Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI\n                            Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        initiatorName:\n                          description: initiatorName is the custom iSCSI Initiator\n                            Name. If initiatorName is specified with iscsiInterface\n                            simultaneously, new iSCSI interface <target portal>:<volume\n                            name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          description: iscsiInterface is the interface Name that uses\n                            an iSCSI transport. Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: portals is the iSCSI Target Portal List. The\n                            portal is either an IP or ip_addr:port if the port is\n                            other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                        readOnly:\n                          description: readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target\n                            and initiator authentication\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: targetPortal is iSCSI Target Portal. The Portal\n                            is either an IP or ip_addr:port if the port is other than\n                            default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: 'name of the volume. Must be a DNS_LABEL and unique\n                        within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                      type: string\n                    nfs:\n                      description: 'nfs represents an NFS mount on the host that shares\n                        a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                      properties:\n                        path:\n                          description: 'path that is exported by the NFS server. More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the NFS export to\n                            be mounted with read-only permissions. Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: boolean\n                        server:\n                          description: 'server is the hostname or IP address of the\n                            NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: 'persistentVolumeClaimVolumeSource represents a\n                        reference to a PersistentVolumeClaim in the same namespace.\n                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                      properties:\n                        claimName:\n                          description: 'claimName is the name of a PersistentVolumeClaim\n                            in the same namespace as the pod using this volume. More\n                            info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                          type: string\n                        readOnly:\n                          description: readOnly Will force the ReadOnly setting in\n                            VolumeMounts. Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: photonPersistentDisk represents a PhotonController\n                        persistent disk attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller\n                            persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: portworxVolume represents a portworx volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fSType represents the filesystem type to mount\n                            Must be a filesystem type supported by the host operating\n                            system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets,\n                        configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: defaultMode are the mode bits used to set permissions\n                            on created files by default. Must be an octal value between\n                            0000 and 0777 or a decimal value between 0 and 511. YAML\n                            accepts both octal and decimal values, JSON requires decimal\n                            values for mode bits. Directories within the path are\n                            not affected by this setting. This might be in conflict\n                            with other options that affect the file mode, like fsGroup,\n                            and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: sources is the list of volume projections\n                          items:\n                            description: Projection that may be projected along with\n                              other supported volume types\n                            properties:\n                              configMap:\n                                description: configMap information about the configMap\n                                  data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced ConfigMap\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the ConfigMap, the volume\n                                      setup will error unless it is marked optional.\n                                      Paths must be relative and may not contain the\n                                      '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap\n                                      or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI\n                                  data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume\n                                      file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents\n                                        information to create the file containing\n                                        the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field\n                                            of the pod: only annotations, labels,\n                                            name and namespace are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the\n                                                FieldPath is written in terms of,\n                                                defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select\n                                                in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: 'Optional: mode bits used to\n                                            set permissions on this file, must be\n                                            an octal value between 0000 and 0777 or\n                                            a decimal value between 0 and 511. YAML\n                                            accepts both octal and decimal values,\n                                            JSON requires decimal values for mode\n                                            bits. If not specified, the volume defaultMode\n                                            will be used. This might be in conflict\n                                            with other options that affect the file\n                                            mode, like fsGroup, and the result can\n                                            be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative\n                                            path name of the file to be created. Must\n                                            not be absolute or contain the ''..''\n                                            path. Must be utf-8 encoded. The first\n                                            item of the relative path must not start\n                                            with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: 'Selects a resource of the\n                                            container: only resources limits and requests\n                                            (limits.cpu, limits.memory, requests.cpu\n                                            and requests.memory) are currently supported.'\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required\n                                                for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format\n                                                of the exposed resources, defaults\n                                                to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to\n                                                select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                type: object\n                              secret:\n                                description: secret information about the secret data\n                                  to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced Secret\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the Secret, the volume setup\n                                      will error unless it is marked optional. Paths\n                                      must be relative and may not contain the '..'\n                                      path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the\n                                      Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about\n                                  the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: audience is the intended audience\n                                      of the token. A recipient of a token must identify\n                                      itself with an identifier specified in the audience\n                                      of the token, and otherwise should reject the\n                                      token. The audience defaults to the identifier\n                                      of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: expirationSeconds is the requested\n                                      duration of validity of the service account\n                                      token. As the token approaches expiration, the\n                                      kubelet volume plugin will proactively rotate\n                                      the service account token. The kubelet will\n                                      start trying to rotate the token if the token\n                                      is older than 80 percent of its time to live\n                                      or if the token is older than 24 hours.Defaults\n                                      to 1 hour and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: path is the path relative to the\n                                      mount point of the file to project the token\n                                      into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                      type: object\n                    quobyte:\n                      description: quobyte represents a Quobyte mount on the host\n                        that shares a pod's lifetime\n                      properties:\n                        group:\n                          description: group to map volume access to Default is no\n                            group\n                          type: string\n                        readOnly:\n                          description: readOnly here will force the Quobyte volume\n                            to be mounted with read-only permissions. Defaults to\n                            false.\n                          type: boolean\n                        registry:\n                          description: registry represents a single or multiple Quobyte\n                            Registry services specified as a string as host:port pair\n                            (multiple entries are separated with commas) which acts\n                            as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: tenant owning the given Quobyte volume in the\n                            Backend Used with dynamically provisioned Quobyte volumes,\n                            value is set by the plugin\n                          type: string\n                        user:\n                          description: user to map volume access to Defaults to serivceaccount\n                            user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already\n                            created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: 'rbd represents a Rados Block Device mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        image:\n                          description: 'image is the rados image name. More info:\n                            https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        keyring:\n                          description: 'keyring is the path to key ring for RBDUser.\n                            Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        monitors:\n                          description: 'monitors is a collection of Ceph monitors.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        pool:\n                          description: 'pool is the rados pool name. Default is rbd.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is name of the authentication secret\n                            for RBDUser. If provided overrides keyring. Default is\n                            nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is the rados user name. Default is admin.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: scaleIO represents a ScaleIO persistent volume\n                        attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO\n                            API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO\n                            Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef references to the secret for ScaleIO\n                            user and other sensitive information. If this is not provided,\n                            Login operation will fail.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication\n                            with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          description: storageMode indicates whether the storage for\n                            a volume should be ThickProvisioned or ThinProvisioned.\n                            Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated\n                            with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as\n                            configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: volumeName is the name of a volume already\n                            created in the ScaleIO system that is associated with\n                            this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: 'secret represents a secret that should populate\n                        this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is Optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items If unspecified, each key-value pair in\n                            the Data field of the referenced Secret will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the Secret, the volume setup will error unless it is marked\n                            optional. Paths must be relative and may not contain the\n                            '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        optional:\n                          description: optional field specify whether the Secret or\n                            its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: 'secretName is the name of the secret in the\n                            pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                          type: string\n                      type: object\n                    storageos:\n                      description: storageOS represents a StorageOS volume attached\n                        and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef specifies the secret to use for obtaining\n                            the StorageOS API credentials.  If not specified, default\n                            values will be attempted.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: volumeName is the human-readable name of the\n                            StorageOS volume.  Volume names are only unique within\n                            a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: volumeNamespace specifies the scope of the\n                            volume within StorageOS.  If no namespace is specified\n                            then the Pod's namespace will be used.  This allows the\n                            Kubernetes name scoping to be mirrored within StorageOS\n                            for tighter integration. Set VolumeName to any name to\n                            override the default behaviour. Set to \"default\" if you\n                            are not using namespaces within StorageOS. Namespaces\n                            that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: vsphereVolume represents a vSphere volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based\n                            Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based\n                            Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere\n                            volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              walCompression:\n                description: \"Configures compression of the write-ahead log (WAL)\n                  using Snappy. \\n WAL compression is enabled by default for Prometheus\n                  >= 2.20.0 \\n Requires Prometheus v2.11.0 and above.\"\n                type: boolean\n              web:\n                description: Defines the configuration of the Prometheus web server.\n                properties:\n                  httpConfig:\n                    description: Defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: List of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: Set the Content-Security-Policy header to\n                              HTTP responses. Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: Set the Strict-Transport-Security header\n                              to HTTP responses. Unset if blank. Please make sure\n                              that you use this with care as this header might force\n                              browsers to load Prometheus and the other applications\n                              hosted on the same domain and subdomains over HTTPS.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: Set the X-Content-Type-Options header to\n                              HTTP responses. Unset if blank. Accepted value is nosniff.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: Set the X-Frame-Options header to HTTP responses.\n                              Unset if blank. Accepted values are deny and sameorigin.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: Set the X-XSS-Protection header to all responses.\n                              Unset if blank. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: Enable HTTP/2 support. Note that HTTP/2 is only\n                          supported with TLS. When TLSConfig is not configured, HTTP/2\n                          will be disabled. Whenever the value of the field changes,\n                          a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  maxConnections:\n                    description: Defines the maximum number of simultaneous connections\n                      A zero value means that Prometheus doesn't accept any incoming\n                      connection.\n                    format: int32\n                    minimum: 0\n                    type: integer\n                  pageTitle:\n                    description: The prometheus web page title.\n                    type: string\n                  tlsConfig:\n                    description: Defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: Contains the TLS certificate for the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      cipherSuites:\n                        description: 'List of supported cipher suites for TLS versions\n                          up to TLS 1.2. If empty, Go default cipher suites are used.\n                          Available cipher suites are documented in the go documentation:\n                          https://golang.org/pkg/crypto/tls/#pkg-constants'\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: Contains the CA certificate for client certificate\n                          authentication to the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: 'Server policy for client authentication. Maps\n                          to ClientAuth Policies. For more detail on clientAuth options:\n                          https://golang.org/pkg/crypto/tls/#ClientAuthType'\n                        type: string\n                      curvePreferences:\n                        description: 'Elliptic curves that will be used in an ECDHE\n                          handshake, in preference order. Available curves are documented\n                          in the go documentation: https://golang.org/pkg/crypto/tls/#CurveID'\n                        items:\n                          type: string\n                        type: array\n                      keySecret:\n                        description: Secret containing the TLS key for the server.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: Maximum TLS version that is acceptable. Defaults\n                          to TLS13.\n                        type: string\n                      minVersion:\n                        description: Minimum TLS version that is acceptable. Defaults\n                          to TLS12.\n                        type: string\n                      preferServerCipherSuites:\n                        description: Controls whether the server selects the client's\n                          most preferred cipher suite, or the server's most preferred\n                          cipher suite. If true then the server's preference, as expressed\n                          in the order of elements in cipherSuites, is used.\n                        type: boolean\n                    required:\n                    - cert\n                    - keySecret\n                    type: object\n                type: object\n            type: object\n          status:\n            description: 'Most recent observed status of the Prometheus cluster. Read-only.\n              More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              availableReplicas:\n                description: Total number of available pods (ready for at least minReadySeconds)\n                  targeted by this Prometheus deployment.\n                format: int32\n                type: integer\n              conditions:\n                description: The current state of the Prometheus deployment.\n                items:\n                  description: Condition represents the state of the resources associated\n                    with the Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update\n                        to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Human-readable message indicating details for the\n                        condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: ObservedGeneration represents the .metadata.generation\n                        that the condition was set based upon. For instance, if `.metadata.generation`\n                        is currently 12, but the `.status.conditions[].observedGeneration`\n                        is 9, the condition is out of date with respect to the current\n                        state of the instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition.\n                      type: string\n                    type:\n                      description: Type of the condition being reported.\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: Represents whether any actions on the underlying managed\n                  objects are being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: Total number of non-terminated pods targeted by this\n                  Prometheus deployment (their labels match the selector).\n                format: int32\n                type: integer\n              shardStatuses:\n                description: The list has one entry per shard. Each entry provides\n                  a summary of the shard status.\n                items:\n                  properties:\n                    availableReplicas:\n                      description: Total number of available pods (ready for at least\n                        minReadySeconds) targeted by this shard.\n                      format: int32\n                      type: integer\n                    replicas:\n                      description: Total number of pods targeted by this shard.\n                      format: int32\n                      type: integer\n                    shardID:\n                      description: Identifier of the shard.\n                      type: string\n                    unavailableReplicas:\n                      description: Total number of unavailable pods targeted by this\n                        shard.\n                      format: int32\n                      type: integer\n                    updatedReplicas:\n                      description: Total number of non-terminated pods targeted by\n                        this shard that have the desired spec.\n                      format: int32\n                      type: integer\n                  required:\n                  - availableReplicas\n                  - replicas\n                  - shardID\n                  - unavailableReplicas\n                  - updatedReplicas\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - shardID\n                x-kubernetes-list-type: map\n              unavailableReplicas:\n                description: Total number of unavailable pods targeted by this Prometheus\n                  deployment.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: Total number of non-terminated pods targeted by this\n                  Prometheus deployment that have the desired version spec.\n                format: int32\n                type: integer\n            required:\n            - availableReplicas\n            - paused\n            - replicas\n            - unavailableReplicas\n            - updatedReplicas\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/crds/crds/crd-prometheuses.yaml",
    "content": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: prometheuses.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: Prometheus\n    listKind: PrometheusList\n    plural: prometheuses\n    shortNames:\n    - prom\n    singular: prometheus\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Prometheus\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Desired\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: Prometheus defines a Prometheus deployment.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: 'Specification of the desired behavior of the Prometheus\n              cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              additionalAlertManagerConfigs:\n                description: \"AdditionalAlertManagerConfigs specifies a key of a Secret\n                  containing additional Prometheus Alertmanager configurations. The\n                  Alertmanager configurations are appended to the configuration generated\n                  by the Prometheus Operator. They must be formatted according to\n                  the official Prometheus documentation: \\n https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config\n                  \\n The user is responsible for making sure that the configurations\n                  are valid \\n Note that using this feature may expose the possibility\n                  to break upgrades of Prometheus. It is advised to review Prometheus\n                  release notes to ensure that no incompatible AlertManager configs\n                  are going to break Prometheus after the upgrade.\"\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              additionalAlertRelabelConfigs:\n                description: \"AdditionalAlertRelabelConfigs specifies a key of a Secret\n                  containing additional Prometheus alert relabel configurations. The\n                  alert relabel configurations are appended to the configuration generated\n                  by the Prometheus Operator. They must be formatted according to\n                  the official Prometheus documentation: \\n https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\n                  \\n The user is responsible for making sure that the configurations\n                  are valid \\n Note that using this feature may expose the possibility\n                  to break upgrades of Prometheus. It is advised to review Prometheus\n                  release notes to ensure that no incompatible alert relabel configs\n                  are going to break Prometheus after the upgrade.\"\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              additionalArgs:\n                description: \"AdditionalArgs allows setting additional arguments for\n                  the 'prometheus' container. \\n It is intended for e.g. activating\n                  hidden flags which are not supported by the dedicated configuration\n                  options yet. The arguments are passed as-is to the Prometheus container\n                  which may cause issues if they are invalid or not supported by the\n                  given Prometheus version. \\n In case of an argument conflict (e.g.\n                  an argument which is already set by the operator itself) or when\n                  providing an invalid argument, the reconciliation will fail and\n                  an error will be logged.\"\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: Name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: Argument value, e.g. 30s. Can be empty for name-only\n                        arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              additionalScrapeConfigs:\n                description: 'AdditionalScrapeConfigs allows specifying a key of a\n                  Secret containing additional Prometheus scrape configurations. Scrape\n                  configurations specified are appended to the configurations generated\n                  by the Prometheus Operator. Job configurations specified must have\n                  the form as specified in the official Prometheus documentation:\n                  https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config.\n                  As scrape configs are appended, the user is responsible to make\n                  sure it is valid. Note that using this feature may expose the possibility\n                  to break upgrades of Prometheus. It is advised to review Prometheus\n                  release notes to ensure that no incompatible scrape configs are\n                  going to break Prometheus after the upgrade.'\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              affinity:\n                description: Defines the Pods' affinity scheduling rules if specified.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the\n                      pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node matches\n                          the corresponding matchExpressions; the node(s) with the\n                          highest sum are the most preferred.\n                        items:\n                          description: An empty preferred scheduling term matches\n                            all objects with implicit weight 0 (i.e. it's a no-op).\n                            A null preferred scheduling term matches no objects (i.e.\n                            is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the\n                                corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding\n                                nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to an update), the system may or may not try to\n                          eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms.\n                              The terms are ORed.\n                            items:\n                              description: A null or empty node selector term matches\n                                no objects. The requirements of them are ANDed. The\n                                TopologySelectorTerm type implements a subset of the\n                                NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate\n                      this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to a pod label update), the system may or may\n                          not try to eventually evict the pod from its node. When\n                          there are multiple elements, the lists of nodes corresponding\n                          to each podAffinityTerm are intersected, i.e. all terms\n                          must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g.\n                      avoid putting this pod in the same node, zone, etc. as some\n                      other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the anti-affinity expressions specified\n                          by this field, but it may choose a node that violates one\n                          or more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling anti-affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the anti-affinity requirements specified by\n                          this field are not met at scheduling time, the pod will\n                          not be scheduled onto the node. If the anti-affinity requirements\n                          specified by this field cease to be met at some point during\n                          pod execution (e.g. due to a pod label update), the system\n                          may or may not try to eventually evict the pod from its\n                          node. When there are multiple elements, the lists of nodes\n                          corresponding to each podAffinityTerm are intersected, i.e.\n                          all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                type: object\n              alerting:\n                description: Defines the settings related to Alertmanager.\n                properties:\n                  alertmanagers:\n                    description: AlertmanagerEndpoints Prometheus should fire alerts\n                      against.\n                    items:\n                      description: AlertmanagerEndpoints defines a selection of a\n                        single Endpoints object containing alertmanager IPs to fire\n                        alerts against.\n                      properties:\n                        apiVersion:\n                          description: Version of the Alertmanager API that Prometheus\n                            uses to send alerts. It can be \"v1\" or \"v2\".\n                          type: string\n                        authorization:\n                          description: Authorization section for this alertmanager\n                            endpoint\n                          properties:\n                            credentials:\n                              description: The secret's key that contains the credentials\n                                of the request\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type:\n                              description: Set the authentication type. Defaults to\n                                Bearer, Basic will cause an error\n                              type: string\n                          type: object\n                        basicAuth:\n                          description: BasicAuth allow an endpoint to authenticate\n                            over basic authentication\n                          properties:\n                            password:\n                              description: The secret in the service monitor namespace\n                                that contains the password for authentication.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            username:\n                              description: The secret in the service monitor namespace\n                                that contains the username for authentication.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        bearerTokenFile:\n                          description: BearerTokenFile to read from filesystem to\n                            use when authenticating to Alertmanager.\n                          type: string\n                        enableHttp2:\n                          description: Whether to enable HTTP2.\n                          type: boolean\n                        name:\n                          description: Name of Endpoints object in Namespace.\n                          type: string\n                        namespace:\n                          description: Namespace of Endpoints object.\n                          type: string\n                        pathPrefix:\n                          description: Prefix for the HTTP path alerts are pushed\n                            to.\n                          type: string\n                        port:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: Port the Alertmanager API is exposed on.\n                          x-kubernetes-int-or-string: true\n                        scheme:\n                          description: Scheme to use when firing alerts.\n                          type: string\n                        timeout:\n                          description: Timeout is a per-target Alertmanager timeout\n                            when pushing alerts.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        tlsConfig:\n                          description: TLS Config to use for alertmanager connection.\n                          properties:\n                            ca:\n                              description: Certificate authority used when verifying\n                                server certificates.\n                              properties:\n                                configMap:\n                                  description: ConfigMap containing data to use for\n                                    the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      description: 'Name of the referent. More info:\n                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        TODO: Add other useful fields. apiVersion,\n                                        kind, uid?'\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or\n                                        its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: Secret containing data to use for the\n                                    targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select\n                                        from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      description: 'Name of the referent. More info:\n                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        TODO: Add other useful fields. apiVersion,\n                                        kind, uid?'\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its\n                                        key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            caFile:\n                              description: Path to the CA cert in the Prometheus container\n                                to use for the targets.\n                              type: string\n                            cert:\n                              description: Client certificate to present when doing\n                                client-authentication.\n                              properties:\n                                configMap:\n                                  description: ConfigMap containing data to use for\n                                    the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      description: 'Name of the referent. More info:\n                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        TODO: Add other useful fields. apiVersion,\n                                        kind, uid?'\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or\n                                        its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: Secret containing data to use for the\n                                    targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select\n                                        from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      description: 'Name of the referent. More info:\n                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        TODO: Add other useful fields. apiVersion,\n                                        kind, uid?'\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its\n                                        key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            certFile:\n                              description: Path to the client cert file in the Prometheus\n                                container for the targets.\n                              type: string\n                            insecureSkipVerify:\n                              description: Disable target certificate validation.\n                              type: boolean\n                            keyFile:\n                              description: Path to the client key file in the Prometheus\n                                container for the targets.\n                              type: string\n                            keySecret:\n                              description: Secret containing the client key file for\n                                the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            serverName:\n                              description: Used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                      required:\n                      - name\n                      - namespace\n                      - port\n                      type: object\n                    type: array\n                required:\n                - alertmanagers\n                type: object\n              allowOverlappingBlocks:\n                description: \"AllowOverlappingBlocks enables vertical compaction and\n                  vertical query merge in Prometheus. \\n *Deprecated: this flag has\n                  no effect for Prometheus >= 2.39.0 where overlapping blocks are\n                  enabled by default.*\"\n                type: boolean\n              apiserverConfig:\n                description: 'APIServerConfig allows specifying a host and auth methods\n                  to access the Kuberntees API server. If null, Prometheus is assumed\n                  to run inside of the cluster: it will discover the API servers automatically\n                  and use the Pod''s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.'\n                properties:\n                  authorization:\n                    description: Authorization section for accessing apiserver\n                    properties:\n                      credentials:\n                        description: The secret's key that contains the credentials\n                          of the request\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      credentialsFile:\n                        description: File to read a secret from, mutually exclusive\n                          with Credentials (from SafeAuthorization)\n                        type: string\n                      type:\n                        description: Set the authentication type. Defaults to Bearer,\n                          Basic will cause an error\n                        type: string\n                    type: object\n                  basicAuth:\n                    description: BasicAuth allow an endpoint to authenticate over\n                      basic authentication\n                    properties:\n                      password:\n                        description: The secret in the service monitor namespace that\n                          contains the password for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      username:\n                        description: The secret in the service monitor namespace that\n                          contains the username for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  bearerToken:\n                    description: Bearer token for accessing apiserver.\n                    type: string\n                  bearerTokenFile:\n                    description: File to read bearer token for accessing apiserver.\n                    type: string\n                  host:\n                    description: Host of apiserver. A valid string consisting of a\n                      hostname or IP followed by an optional port number\n                    type: string\n                  tlsConfig:\n                    description: TLS Config to use for accessing apiserver.\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server\n                          certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container\n                          to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus\n                          container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus\n                          container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the\n                          targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - host\n                type: object\n              arbitraryFSAccessThroughSMs:\n                description: When true, ServiceMonitor, PodMonitor and Probe object\n                  are forbidden to reference arbitrary files on the file system of\n                  the 'prometheus' container. When a ServiceMonitor's endpoint specifies\n                  a `bearerTokenFile` value (e.g.  '/var/run/secrets/kubernetes.io/serviceaccount/token'),\n                  a malicious target can get access to the Prometheus service account's\n                  token in the Prometheus' scrape request. Setting `spec.arbitraryFSAccessThroughSM`\n                  to 'true' would prevent the attack. Users should instead provide\n                  the credentials using the `spec.bearerTokenSecret` field.\n                properties:\n                  deny:\n                    type: boolean\n                type: object\n              baseImage:\n                description: '*Deprecated: use ''spec.image'' instead.*'\n                type: string\n              configMaps:\n                description: ConfigMaps is a list of ConfigMaps in the same namespace\n                  as the Prometheus object, which shall be mounted into the Prometheus\n                  Pods. Each ConfigMap is added to the StatefulSet definition as a\n                  volume named `configmap-<configmap-name>`. The ConfigMaps are mounted\n                  into /etc/prometheus/configmaps/<configmap-name> in the 'prometheus'\n                  container.\n                items:\n                  type: string\n                type: array\n              containers:\n                description: \"Containers allows injecting additional containers or\n                  modifying operator generated containers. This can be used to allow\n                  adding an authentication proxy to the Pods or to change the behavior\n                  of an operator generated container. Containers described here modify\n                  an operator generated container if they share the same name and\n                  modifications are done via a strategic merge patch. \\n The names\n                  of containers managed by the operator are: * `prometheus` * `config-reloader`\n                  * `thanos-sidecar` \\n Overriding containers is entirely outside\n                  the scope of what the maintainers will support and by doing so,\n                  you accept that this behaviour may break at any time without notice.\"\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              disableCompaction:\n                description: When true, the Prometheus compaction is disabled.\n                type: boolean\n              enableAdminAPI:\n                description: \"Enables access to the Prometheus web admin API. \\n WARNING:\n                  Enabling the admin APIs enables mutating endpoints, to delete data,\n                  shutdown Prometheus, and more. Enabling this should be done with\n                  care and the user is advised to add additional authentication authorization\n                  via a proxy to ensure only clients authorized to perform these actions\n                  can do so. \\n For more information: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis\"\n                type: boolean\n              enableFeatures:\n                description: \"Enable access to Prometheus feature flags. By default,\n                  no features are enabled. \\n Enabling features which are disabled\n                  by default is entirely outside the scope of what the maintainers\n                  will support and by doing so, you accept that this behaviour may\n                  break at any time without notice. \\n For more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\"\n                items:\n                  type: string\n                type: array\n              enableRemoteWriteReceiver:\n                description: \"Enable Prometheus to be used as a receiver for the Prometheus\n                  remote write protocol. \\n WARNING: This is not considered an efficient\n                  way of ingesting samples. Use it with caution for specific low-volume\n                  use cases. It is not suitable for replacing the ingestion via scraping\n                  and turning Prometheus into a push-based metrics collection system.\n                  For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\n                  \\n It requires Prometheus >= v2.33.0.\"\n                type: boolean\n              enforcedBodySizeLimit:\n                description: \"When defined, enforcedBodySizeLimit specifies a global\n                  limit on the size of uncompressed response body that will be accepted\n                  by Prometheus. Targets responding with a body larger than this many\n                  bytes will cause the scrape to fail. \\n It requires Prometheus >=\n                  v2.28.0.\"\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              enforcedLabelLimit:\n                description: \"When defined, enforcedLabelLimit specifies a global\n                  limit on the number of labels per sample. The value overrides any\n                  `spec.labelLimit` set by ServiceMonitor, PodMonitor, Probe objects\n                  unless `spec.labelLimit` is greater than zero and less than `spec.enforcedLabelLimit`.\n                  \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedLabelNameLengthLimit:\n                description: \"When defined, enforcedLabelNameLengthLimit specifies\n                  a global limit on the length of labels name per sample. The value\n                  overrides any `spec.labelNameLengthLimit` set by ServiceMonitor,\n                  PodMonitor, Probe objects unless `spec.labelNameLengthLimit` is\n                  greater than zero and less than `spec.enforcedLabelNameLengthLimit`.\n                  \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedLabelValueLengthLimit:\n                description: \"When not null, enforcedLabelValueLengthLimit defines\n                  a global limit on the length of labels value per sample. The value\n                  overrides any `spec.labelValueLengthLimit` set by ServiceMonitor,\n                  PodMonitor, Probe objects unless `spec.labelValueLengthLimit` is\n                  greater than zero and less than `spec.enforcedLabelValueLengthLimit`.\n                  \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedNamespaceLabel:\n                description: \"When not empty, a label will be added to \\n 1. All metrics\n                  scraped from `ServiceMonitor`, `PodMonitor`, `Probe` and `ScrapeConfig`\n                  objects. 2. All metrics generated from recording rules defined in\n                  `PrometheusRule` objects. 3. All alerts generated from alerting\n                  rules defined in `PrometheusRule` objects. 4. All vector selectors\n                  of PromQL expressions defined in `PrometheusRule` objects. \\n The\n                  label will not added for objects referenced in `spec.excludedFromEnforcement`.\n                  \\n The label's name is this field's value. The label's value is\n                  the namespace of the `ServiceMonitor`, `PodMonitor`, `Probe` or\n                  `PrometheusRule` object.\"\n                type: string\n              enforcedSampleLimit:\n                description: \"When defined, enforcedSampleLimit specifies a global\n                  limit on the number of scraped samples that will be accepted. This\n                  overrides any `spec.sampleLimit` set by ServiceMonitor, PodMonitor,\n                  Probe objects unless `spec.sampleLimit` is greater than zero and\n                  less than than `spec.enforcedSampleLimit`. \\n It is meant to be\n                  used by admins to keep the overall number of samples/series under\n                  a desired limit.\"\n                format: int64\n                type: integer\n              enforcedTargetLimit:\n                description: \"When defined, enforcedTargetLimit specifies a global\n                  limit on the number of scraped targets. The value overrides any\n                  `spec.targetLimit` set by ServiceMonitor, PodMonitor, Probe objects\n                  unless `spec.targetLimit` is greater than zero and less than `spec.enforcedTargetLimit`.\n                  \\n It is meant to be used by admins to to keep the overall number\n                  of targets under a desired limit.\"\n                format: int64\n                type: integer\n              evaluationInterval:\n                default: 30s\n                description: 'Interval between rule evaluations. Default: \"30s\"'\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              excludedFromEnforcement:\n                description: \"List of references to PodMonitor, ServiceMonitor, Probe\n                  and PrometheusRule objects to be excluded from enforcing a namespace\n                  label of origin. \\n It is only applicable if `spec.enforcedNamespaceLabel`\n                  set to true.\"\n                items:\n                  description: ObjectReference references a PodMonitor, ServiceMonitor,\n                    Probe or PrometheusRule object.\n                  properties:\n                    group:\n                      default: monitoring.coreos.com\n                      description: Group of the referent. When not specified, it defaults\n                        to `monitoring.coreos.com`\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: Name of the referent. When not set, all resources\n                        in the namespace are matched.\n                      type: string\n                    namespace:\n                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: Resource of the referent.\n                      enum:\n                      - prometheusrules\n                      - servicemonitors\n                      - podmonitors\n                      - probes\n                      type: string\n                  required:\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n              exemplars:\n                description: Exemplars related settings that are runtime reloadable.\n                  It requires to enable the `exemplar-storage` feature flag to be\n                  effective.\n                properties:\n                  maxSize:\n                    description: Maximum number of exemplars stored in memory for\n                      all series. If not set, Prometheus uses its default value. A\n                      value of zero or less than zero disables the storage.\n                    format: int64\n                    type: integer\n                type: object\n              externalLabels:\n                additionalProperties:\n                  type: string\n                description: The labels to add to any time series or alerts when communicating\n                  with external systems (federation, remote storage, Alertmanager).\n                  Labels defined by `spec.replicaExternalLabelName` and `spec.prometheusExternalLabelName`\n                  take precedence over this list.\n                type: object\n              externalUrl:\n                description: The external URL under which the Prometheus service is\n                  externally available. This is necessary to generate correct URLs\n                  (for instance if Prometheus is accessible behind an Ingress resource).\n                type: string\n              hostAliases:\n                description: Optional list of hosts and IPs that will be injected\n                  into the Pod's hosts file if specified.\n                items:\n                  description: HostAlias holds the mapping between IP and hostnames\n                    that will be injected as an entry in the pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: Hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              hostNetwork:\n                description: \"Use the host's network namespace if true. \\n Make sure\n                  to understand the security implications if you want to enable it\n                  (https://kubernetes.io/docs/concepts/configuration/overview/). \\n\n                  When hostNetwork is enabled, this will set the DNS policy to `ClusterFirstWithHostNet`\n                  automatically.\"\n                type: boolean\n              ignoreNamespaceSelectors:\n                description: When true, `spec.namespaceSelector` from all PodMonitor,\n                  ServiceMonitor and Probe objects will be ignored. They will only\n                  discover targets within the namespace of the PodMonitor, ServiceMonitor\n                  and Probe objec.\n                type: boolean\n              image:\n                description: \"Container image name for Prometheus. If specified, it\n                  takes precedence over the `spec.baseImage`, `spec.tag` and `spec.sha`\n                  fields. \\n Specifying `spec.version` is still necessary to ensure\n                  the Prometheus Operator knows which version of Prometheus is being\n                  configured. \\n If neither `spec.image` nor `spec.baseImage` are\n                  defined, the operator will use the latest upstream version of Prometheus\n                  available at the time when the operator was released.\"\n                type: string\n              imagePullPolicy:\n                description: Image pull policy for the 'prometheus', 'init-config-reloader'\n                  and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\n                  for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: An optional list of references to Secrets in the same\n                  namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: LocalObjectReference contains enough information to\n                    let you locate the referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        TODO: Add other useful fields. apiVersion, kind, uid?'\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: \"InitContainers allows injecting initContainers to the\n                  Pod definition. Those can be used to e.g.  fetch secrets for injection\n                  into the Prometheus configuration from external sources. Any errors\n                  during the execution of an initContainer will lead to a restart\n                  of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n                  InitContainers described here modify an operator generated init\n                  containers if they share the same name and modifications are done\n                  via a strategic merge patch. \\n The names of init container name\n                  managed by the operator are: * `init-config-reloader`. \\n Overriding\n                  init containers is entirely outside the scope of what the maintainers\n                  will support and by doing so, you accept that this behaviour may\n                  break at any time without notice.\"\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              listenLocal:\n                description: When true, the Prometheus server listens on the loopback\n                  address instead of the Pod IP's address.\n                type: boolean\n              logFormat:\n                description: Log format for Log level for Prometheus and the config-reloader\n                  sidecar.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: Log level for Prometheus and the config-reloader sidecar.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: \"Minimum number of seconds for which a newly created\n                  Pod should be ready without any of its container crashing for it\n                  to be considered available. Defaults to 0 (pod will be considered\n                  available as soon as it is ready) \\n This is an alpha field from\n                  kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds\n                  feature gate.\"\n                format: int32\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: Defines on which Nodes the Pods are scheduled.\n                type: object\n              overrideHonorLabels:\n                description: When true, Prometheus resolves label conflicts by renaming\n                  the labels in the scraped data to \"exported_<label value>\" for all\n                  targets created from service and pod monitors. Otherwise the HonorLabels\n                  field of the service or pod monitor applies.\n                type: boolean\n              overrideHonorTimestamps:\n                description: When true, Prometheus ignores the timestamps for all\n                  the targets created from service and pod monitors. Otherwise the\n                  HonorTimestamps field of the service or pod monitor applies.\n                type: boolean\n              paused:\n                description: When a Prometheus deployment is paused, no actions except\n                  for deletion will be performed on the underlying objects.\n                type: boolean\n              podMetadata:\n                description: PodMetadata configures labels and annotations which are\n                  propagated to the Prometheus pods.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: 'Annotations is an unstructured key value map stored\n                      with a resource that may be set by external tools to store and\n                      retrieve arbitrary metadata. They are not queryable and should\n                      be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: 'Map of string keys and values that can be used to\n                      organize and categorize (scope and select) objects. May match\n                      selectors of replication controllers and services. More info:\n                      http://kubernetes.io/docs/user-guide/labels'\n                    type: object\n                  name:\n                    description: 'Name must be unique within a namespace. Is required\n                      when creating resources, although some resources may allow a\n                      client to request the generation of an appropriate name automatically.\n                      Name is primarily intended for creation idempotence and configuration\n                      definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                    type: string\n                type: object\n              podMonitorNamespaceSelector:\n                description: Namespaces to match for PodMonitors discovery. An empty\n                  label selector matches all namespaces. A null label selector matches\n                  the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podMonitorSelector:\n                description: \"*Experimental* PodMonitors to be selected for target\n                  discovery. An empty label selector matches all objects. A null label\n                  selector matches no objects. \\n If `spec.serviceMonitorSelector`,\n                  `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector`\n                  are null, the Prometheus configuration is unmanaged. The Prometheus\n                  operator will ensure that the Prometheus configuration's Secret\n                  exists, but it is the responsibility of the user to provide the\n                  raw gzipped Prometheus configuration under the `prometheus.yaml.gz`\n                  key. This behavior is *deprecated* and will be removed in the next\n                  major version of the custom resource definition. It is recommended\n                  to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podTargetLabels:\n                description: PodTargetLabels are appended to the `spec.podTargetLabels`\n                  field of all PodMonitor and ServiceMonitor objects.\n                items:\n                  type: string\n                type: array\n              portName:\n                default: web\n                description: 'Port name used for the pods and governing service. Default:\n                  \"web\"'\n                type: string\n              priorityClassName:\n                description: Priority class assigned to the Pods.\n                type: string\n              probeNamespaceSelector:\n                description: '*Experimental* Namespaces to match for Probe discovery.\n                  An empty label selector matches all namespaces. A null label selector\n                  matches the current namespace only.'\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              probeSelector:\n                description: \"*Experimental* Probes to be selected for target discovery.\n                  An empty label selector matches all objects. A null label selector\n                  matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`,\n                  `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the\n                  Prometheus configuration is unmanaged. The Prometheus operator will\n                  ensure that the Prometheus configuration's Secret exists, but it\n                  is the responsibility of the user to provide the raw gzipped Prometheus\n                  configuration under the `prometheus.yaml.gz` key. This behavior\n                  is *deprecated* and will be removed in the next major version of\n                  the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs`\n                  instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              prometheusExternalLabelName:\n                description: \"Name of Prometheus external label used to denote the\n                  Prometheus instance name. The external label will _not_ be added\n                  when the field is set to the empty string (`\\\"\\\"`). \\n Default:\n                  \\\"prometheus\\\"\"\n                type: string\n              prometheusRulesExcludedFromEnforce:\n                description: 'Defines the list of PrometheusRule objects to which\n                  the namespace label enforcement doesn''t apply. This is only relevant\n                  when `spec.enforcedNamespaceLabel` is set to true. *Deprecated:\n                  use `spec.excludedFromEnforcement` instead.*'\n                items:\n                  description: PrometheusRuleExcludeConfig enables users to configure\n                    excluded PrometheusRule names and their namespaces to be ignored\n                    while enforcing namespace label for alerts and metrics.\n                  properties:\n                    ruleName:\n                      description: Name of the excluded PrometheusRule object.\n                      type: string\n                    ruleNamespace:\n                      description: Namespace of the excluded PrometheusRule object.\n                      type: string\n                  required:\n                  - ruleName\n                  - ruleNamespace\n                  type: object\n                type: array\n              query:\n                description: QuerySpec defines the configuration of the Promethus\n                  query service.\n                properties:\n                  lookbackDelta:\n                    description: The delta difference allowed for retrieving metrics\n                      during expression evaluations.\n                    type: string\n                  maxConcurrency:\n                    description: Number of concurrent queries that can be run at once.\n                    format: int32\n                    minimum: 1\n                    type: integer\n                  maxSamples:\n                    description: Maximum number of samples a single query can load\n                      into memory. Note that queries will fail if they would load\n                      more samples than this into memory, so this also limits the\n                      number of samples a query can return.\n                    format: int32\n                    type: integer\n                  timeout:\n                    description: Maximum time a query may take before being aborted.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                type: object\n              queryLogFile:\n                description: \"queryLogFile specifies where the file to which PromQL\n                  queries are logged. \\n If the filename has an empty path, e.g. 'query.log',\n                  The Prometheus Pods will mount the file into an emptyDir volume\n                  at `/var/log/prometheus`. If a full path is provided, e.g. '/var/log/prometheus/query.log',\n                  you must mount a volume in the specified directory and it must be\n                  writable. This is because the prometheus container runs with a read-only\n                  root filesystem for security reasons. Alternatively, the location\n                  can be set to a standard I/O stream, e.g. `/dev/stdout`, to log\n                  query information to the default Prometheus log stream.\"\n                type: string\n              remoteRead:\n                description: Defines the list of remote read configurations.\n                items:\n                  description: RemoteReadSpec defines the configuration for Prometheus\n                    to read back samples from a remote endpoint.\n                  properties:\n                    authorization:\n                      description: \"Authorization section for the URL. \\n It requires\n                        Prometheus >= v2.26.0. \\n Cannot be set at the same time as\n                        `basicAuth`, or `oauth2`.\"\n                      properties:\n                        credentials:\n                          description: The secret's key that contains the credentials\n                            of the request\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: File to read a secret from, mutually exclusive\n                            with Credentials (from SafeAuthorization)\n                          type: string\n                        type:\n                          description: Set the authentication type. Defaults to Bearer,\n                            Basic will cause an error\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: \"BasicAuth configuration for the URL. \\n Cannot\n                        be set at the same time as `authorization`, or `oauth2`.\"\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace\n                            that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace\n                            that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: \"*Warning: this field shouldn't used because the\n                        token value appears in clear-text. Prefer using `authorization`.*\n                        \\n *Deprecated: this will be removed in a future release.*\"\n                      type: string\n                    bearerTokenFile:\n                      description: \"File from which to read bearer token for the URL.\n                        \\n *Deprecated: this will be removed in a future release.\n                        Prefer using `authorization`.*\"\n                      type: string\n                    filterExternalLabels:\n                      description: \"Whether to use the external labels as selectors\n                        for the remote read endpoint. \\n It requires Prometheus >=\n                        v2.34.0.\"\n                      type: boolean\n                    followRedirects:\n                      description: \"Configure whether HTTP requests follow HTTP 3xx\n                        redirects. \\n It requires Prometheus >= v2.26.0.\"\n                      type: boolean\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: Custom HTTP headers to be sent along with each\n                        remote read request. Be aware that headers that are set by\n                        Prometheus itself can't be overwritten. Only valid in Prometheus\n                        versions 2.26.0 and newer.\n                      type: object\n                    name:\n                      description: \"The name of the remote read queue, it must be\n                        unique if specified. The name is used in metrics and logging\n                        in order to differentiate read configurations. \\n It requires\n                        Prometheus >= v2.15.0.\"\n                      type: string\n                    oauth2:\n                      description: \"OAuth2 configuration for the URL. \\n It requires\n                        Prometheus >= v2.27.0. \\n Cannot be set at the same time as\n                        `authorization`, or `basicAuth`.\"\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2\n                            client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyUrl:\n                      description: Optional ProxyURL.\n                      type: string\n                    readRecent:\n                      description: Whether reads should be made for queries for time\n                        ranges that the local storage should have complete data for.\n                      type: boolean\n                    remoteTimeout:\n                      description: Timeout for requests to the remote read endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    requiredMatchers:\n                      additionalProperties:\n                        type: string\n                      description: An optional list of equality matchers which have\n                        to be present in a selector to query the remote read endpoint.\n                      type: object\n                    tlsConfig:\n                      description: TLS Config to use for the URL.\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server\n                            certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: Path to the CA cert in the Prometheus container\n                            to use for the targets.\n                          type: string\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: Path to the client cert file in the Prometheus\n                            container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: Path to the client key file in the Prometheus\n                            container for the targets.\n                          type: string\n                        keySecret:\n                          description: Secret containing the client key file for the\n                            targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: The URL of the endpoint to query from.\n                      type: string\n                  required:\n                  - url\n                  type: object\n                type: array\n              remoteWrite:\n                description: Defines the list of remote write configurations.\n                items:\n                  description: RemoteWriteSpec defines the configuration to write\n                    samples from Prometheus to a remote endpoint.\n                  properties:\n                    authorization:\n                      description: \"Authorization section for the URL. \\n It requires\n                        Prometheus >= v2.26.0. \\n Cannot be set at the same time as\n                        `sigv4`, `basicAuth`, or `oauth2`.\"\n                      properties:\n                        credentials:\n                          description: The secret's key that contains the credentials\n                            of the request\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: File to read a secret from, mutually exclusive\n                            with Credentials (from SafeAuthorization)\n                          type: string\n                        type:\n                          description: Set the authentication type. Defaults to Bearer,\n                            Basic will cause an error\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: \"BasicAuth configuration for the URL. \\n Cannot\n                        be set at the same time as `sigv4`, `authorization`, or `oauth2`.\"\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace\n                            that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace\n                            that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: \"*Warning: this field shouldn't used because the\n                        token value appears in clear-text. Prefer using `authorization`.*\n                        \\n *Deprecated: this will be removed in a future release.*\"\n                      type: string\n                    bearerTokenFile:\n                      description: \"File from which to read bearer token for the URL.\n                        \\n *Deprecated: this will be removed in a future release.\n                        Prefer using `authorization`.*\"\n                      type: string\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: \"Custom HTTP headers to be sent along with each\n                        remote write request. Be aware that headers that are set by\n                        Prometheus itself can't be overwritten. \\n It requires Prometheus\n                        >= v2.25.0.\"\n                      type: object\n                    metadataConfig:\n                      description: MetadataConfig configures the sending of series\n                        metadata to the remote storage.\n                      properties:\n                        send:\n                          description: Whether metric metadata is sent to the remote\n                            storage or not.\n                          type: boolean\n                        sendInterval:\n                          description: How frequently metric metadata is sent to the\n                            remote storage.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                      type: object\n                    name:\n                      description: \"The name of the remote write queue, it must be\n                        unique if specified. The name is used in metrics and logging\n                        in order to differentiate queues. \\n It requires Prometheus\n                        >= v2.15.0.\"\n                      type: string\n                    oauth2:\n                      description: \"OAuth2 configuration for the URL. \\n It requires\n                        Prometheus >= v2.27.0. \\n Cannot be set at the same time as\n                        `sigv4`, `authorization`, or `basicAuth`.\"\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2\n                            client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyUrl:\n                      description: Optional ProxyURL.\n                      type: string\n                    queueConfig:\n                      description: QueueConfig allows tuning of the remote write queue\n                        parameters.\n                      properties:\n                        batchSendDeadline:\n                          description: BatchSendDeadline is the maximum time a sample\n                            will wait in buffer.\n                          type: string\n                        capacity:\n                          description: Capacity is the number of samples to buffer\n                            per shard before we start dropping them.\n                          type: integer\n                        maxBackoff:\n                          description: MaxBackoff is the maximum retry delay.\n                          type: string\n                        maxRetries:\n                          description: MaxRetries is the maximum number of times to\n                            retry a batch on recoverable errors.\n                          type: integer\n                        maxSamplesPerSend:\n                          description: MaxSamplesPerSend is the maximum number of\n                            samples per send.\n                          type: integer\n                        maxShards:\n                          description: MaxShards is the maximum number of shards,\n                            i.e. amount of concurrency.\n                          type: integer\n                        minBackoff:\n                          description: MinBackoff is the initial retry delay. Gets\n                            doubled for every retry.\n                          type: string\n                        minShards:\n                          description: MinShards is the minimum number of shards,\n                            i.e. amount of concurrency.\n                          type: integer\n                        retryOnRateLimit:\n                          description: Retry upon receiving a 429 status code from\n                            the remote-write storage. This is experimental feature\n                            and might change in the future.\n                          type: boolean\n                      type: object\n                    remoteTimeout:\n                      description: Timeout for requests to the remote write endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    sendExemplars:\n                      description: \"Enables sending of exemplars over remote write.\n                        Note that exemplar-storage itself must be enabled using the\n                        `spec.enableFeature` option for exemplars to be scraped in\n                        the first place. \\n It requires Prometheus >= v2.27.0.\"\n                      type: boolean\n                    sendNativeHistograms:\n                      description: \"Enables sending of native histograms, also known\n                        as sparse histograms over remote write. \\n It requires Prometheus\n                        >= v2.40.0.\"\n                      type: boolean\n                    sigv4:\n                      description: \"Sigv4 allows to configures AWS's Signature Verification\n                        4 for the URL. \\n It requires Prometheus >= v2.26.0. \\n Cannot\n                        be set at the same time as `authorization`, `basicAuth`, or\n                        `oauth2`.\"\n                      properties:\n                        accessKey:\n                          description: AccessKey is the AWS API key. If not specified,\n                            the environment variable `AWS_ACCESS_KEY_ID` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        profile:\n                          description: Profile is the named AWS profile used to authenticate.\n                          type: string\n                        region:\n                          description: Region is the AWS region. If blank, the region\n                            from the default credentials chain used.\n                          type: string\n                        roleArn:\n                          description: RoleArn is the named AWS profile used to authenticate.\n                          type: string\n                        secretKey:\n                          description: SecretKey is the AWS API secret. If not specified,\n                            the environment variable `AWS_SECRET_ACCESS_KEY` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    tlsConfig:\n                      description: TLS Config to use for the URL.\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server\n                            certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: Path to the CA cert in the Prometheus container\n                            to use for the targets.\n                          type: string\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: Path to the client cert file in the Prometheus\n                            container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: Path to the client key file in the Prometheus\n                            container for the targets.\n                          type: string\n                        keySecret:\n                          description: Secret containing the client key file for the\n                            targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: The URL of the endpoint to send samples to.\n                      type: string\n                    writeRelabelConfigs:\n                      description: The list of remote write relabel configurations.\n                      items:\n                        description: 'RelabelConfig allows dynamic rewriting of the\n                          label set, being applied to samples before ingestion. It\n                          defines `<metric_relabel_configs>`-section of Prometheus\n                          configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'\n                        properties:\n                          action:\n                            default: replace\n                            description: Action to perform based on regex matching.\n                              Default is 'replace'. uppercase and lowercase actions\n                              require Prometheus >= 2.36.\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: Modulus to take of the hash of the source\n                              label values.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted\n                              value is matched. Default is '(.*)'\n                            type: string\n                          replacement:\n                            description: Replacement value against which a regex replace\n                              is performed if the regular expression matches. Regex\n                              capture groups are available. Default is '$1'\n                            type: string\n                          separator:\n                            description: Separator placed between concatenated source\n                              label values. default is ';'.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing\n                              labels. Their content is concatenated using the configured\n                              separator and matched against the configured regular\n                              expression for the replace, keep, and drop actions.\n                            items:\n                              description: LabelName is a valid Prometheus label name\n                                which may only contain ASCII letters, numbers, as\n                                well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: Label to which the resulting value is written\n                              in a replace action. It is mandatory for replace actions.\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                  required:\n                  - url\n                  type: object\n                type: array\n              replicaExternalLabelName:\n                description: \"Name of Prometheus external label used to denote the\n                  replica name. The external label will _not_ be added when the field\n                  is set to the empty string (`\\\"\\\"`). \\n Default: \\\"prometheus_replica\\\"\"\n                type: string\n              replicas:\n                description: \"Number of replicas of each shard to deploy for a Prometheus\n                  deployment. `spec.replicas` multiplied by `spec.shards` is the total\n                  number of Pods created. \\n Default: 1\"\n                format: int32\n                type: integer\n              resources:\n                description: Defines the resources requests and limits of the 'prometheus'\n                  container.\n                properties:\n                  claims:\n                    description: \"Claims lists the names of resources, defined in\n                      spec.resourceClaims, that are used by this container. \\n This\n                      is an alpha field and requires enabling the DynamicResourceAllocation\n                      feature gate. \\n This field is immutable. It can only be set\n                      for containers.\"\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: Name must match the name of one entry in pod.spec.resourceClaims\n                            of the Pod where this field is used. It makes that resource\n                            available inside a container.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Limits describes the maximum amount of compute resources\n                      allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Requests describes the minimum amount of compute\n                      resources required. If Requests is omitted for a container,\n                      it defaults to Limits if that is explicitly specified, otherwise\n                      to an implementation-defined value. Requests cannot exceed Limits.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                type: object\n              retention:\n                description: \"How long to retain the Prometheus data. \\n Default:\n                  \\\"24h\\\" if `spec.retention` and `spec.retentionSize` are empty.\"\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              retentionSize:\n                description: Maximum number of bytes used by the Prometheus data.\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              routePrefix:\n                description: \"The route prefix Prometheus registers HTTP handlers\n                  for. \\n This is useful when using `spec.externalURL`, and a proxy\n                  is rewriting HTTP routes of a request, and the actual ExternalURL\n                  is still true, but the server serves requests under a different\n                  route prefix. For example for use with `kubectl proxy`.\"\n                type: string\n              ruleNamespaceSelector:\n                description: Namespaces to match for PrometheusRule discovery. An\n                  empty label selector matches all namespaces. A null label selector\n                  matches the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              ruleSelector:\n                description: PrometheusRule objects to be selected for rule evaluation.\n                  An empty label selector matches all objects. A null label selector\n                  matches no objects.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              rules:\n                description: Defines the configuration of the Prometheus rules' engine.\n                properties:\n                  alert:\n                    description: /--rules.alert.*/ command-line arguments\n                    properties:\n                      forGracePeriod:\n                        description: Minimum duration between alert and restored 'for'\n                          state. This is maintained only for alerts with configured\n                          'for' time greater than grace period.\n                        type: string\n                      forOutageTolerance:\n                        description: Max time to tolerate prometheus outage for restoring\n                          'for' state of alert.\n                        type: string\n                      resendDelay:\n                        description: Minimum amount of time to wait before resending\n                          an alert to Alertmanager.\n                        type: string\n                    type: object\n                type: object\n              scrapeConfigNamespaceSelector:\n                description: Namespaces to match for ScrapeConfig discovery. An empty\n                  label selector matches all namespaces. A null label selector matches\n                  the current current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeConfigSelector:\n                description: \"*Experimental* ScrapeConfigs to be selected for target\n                  discovery. An empty label selector matches all objects. A null label\n                  selector matches no objects. \\n If `spec.serviceMonitorSelector`,\n                  `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector`\n                  are null, the Prometheus configuration is unmanaged. The Prometheus\n                  operator will ensure that the Prometheus configuration's Secret\n                  exists, but it is the responsibility of the user to provide the\n                  raw gzipped Prometheus configuration under the `prometheus.yaml.gz`\n                  key. This behavior is *deprecated* and will be removed in the next\n                  major version of the custom resource definition. It is recommended\n                  to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeInterval:\n                default: 30s\n                description: \"Interval between consecutive scrapes. \\n Default: \\\"30s\\\"\"\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              scrapeTimeout:\n                description: Number of seconds to wait until a scrape request times\n                  out.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              secrets:\n                description: Secrets is a list of Secrets in the same namespace as\n                  the Prometheus object, which shall be mounted into the Prometheus\n                  Pods. Each Secret is added to the StatefulSet definition as a volume\n                  named `secret-<secret-name>`. The Secrets are mounted into /etc/prometheus/secrets/<secret-name>\n                  in the 'prometheus' container.\n                items:\n                  type: string\n                type: array\n              securityContext:\n                description: SecurityContext holds pod-level security attributes and\n                  common container settings. This defaults to the default PodSecurityContext.\n                properties:\n                  fsGroup:\n                    description: \"A special supplemental group that applies to all\n                      containers in a pod. Some volume types allow the Kubelet to\n                      change the ownership of that volume to be owned by the pod:\n                      \\n 1. The owning GID will be the FSGroup 2. The setgid bit is\n                      set (new files created in the volume will be owned by FSGroup)\n                      3. The permission bits are OR'd with rw-rw---- \\n If unset,\n                      the Kubelet will not modify the ownership and permissions of\n                      any volume. Note that this field cannot be set when spec.os.name\n                      is windows.\"\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: 'fsGroupChangePolicy defines behavior of changing\n                      ownership and permission of the volume before being exposed\n                      inside Pod. This field will only apply to volume types which\n                      support fsGroup based ownership(and permissions). It will have\n                      no effect on ephemeral volume types such as: secret, configmaps\n                      and emptydir. Valid values are \"OnRootMismatch\" and \"Always\".\n                      If not specified, \"Always\" is used. Note that this field cannot\n                      be set when spec.os.name is windows.'\n                    type: string\n                  runAsGroup:\n                    description: The GID to run the entrypoint of the container process.\n                      Uses runtime default if unset. May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: Indicates that the container must run as a non-root\n                      user. If true, the Kubelet will validate the image at runtime\n                      to ensure that it does not run as UID 0 (root) and fail to start\n                      the container if it does. If unset or false, no such validation\n                      will be performed. May also be set in SecurityContext.  If set\n                      in both SecurityContext and PodSecurityContext, the value specified\n                      in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: The UID to run the entrypoint of the container process.\n                      Defaults to user specified in image metadata if unspecified.\n                      May also be set in SecurityContext.  If set in both SecurityContext\n                      and PodSecurityContext, the value specified in SecurityContext\n                      takes precedence for that container. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxOptions:\n                    description: The SELinux context to be applied to all containers.\n                      If unspecified, the container runtime will allocate a random\n                      SELinux context for each container.  May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to\n                          the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to\n                          the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to\n                          the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to\n                          the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: The seccomp options to use by the containers in this\n                      pod. Note that this field cannot be set when spec.os.name is\n                      windows.\n                    properties:\n                      localhostProfile:\n                        description: localhostProfile indicates a profile defined\n                          in a file on the node should be used. The profile must be\n                          preconfigured on the node to work. Must be a descending\n                          path, relative to the kubelet's configured seccomp profile\n                          location. Must only be set if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: \"type indicates which kind of seccomp profile\n                          will be applied. Valid options are: \\n Localhost - a profile\n                          defined in a file on the node should be used. RuntimeDefault\n                          - the container runtime default profile should be used.\n                          Unconfined - no profile should be applied.\"\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: A list of groups applied to the first process run\n                      in each container, in addition to the container's primary GID,\n                      the fsGroup (if specified), and group memberships defined in\n                      the container image for the uid of the container process. If\n                      unspecified, no additional groups are added to any container.\n                      Note that group memberships defined in the container image for\n                      the uid of the container process are still effective, even if\n                      they are not included in this list. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                  sysctls:\n                    description: Sysctls hold a list of namespaced sysctls used for\n                      the pod. Pods with unsupported sysctls (by the container runtime)\n                      might fail to launch. Note that this field cannot be set when\n                      spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                  windowsOptions:\n                    description: The Windows specific settings applied to all containers.\n                      If unspecified, the options within a container's SecurityContext\n                      will be used. If set in both SecurityContext and PodSecurityContext,\n                      the value specified in SecurityContext takes precedence. Note\n                      that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: GMSACredentialSpec is where the GMSA admission\n                          webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                          inlines the contents of the GMSA credential spec named by\n                          the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA\n                          credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: HostProcess determines if a container should\n                          be run as a 'Host Process' container. This field is alpha-level\n                          and will only be honored by components that enable the WindowsHostProcessContainers\n                          feature flag. Setting this field without the feature flag\n                          will result in errors when validating the Pod. All of a\n                          Pod's containers must have the same effective HostProcess\n                          value (it is not allowed to have a mix of HostProcess containers\n                          and non-HostProcess containers).  In addition, if HostProcess\n                          is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: The UserName in Windows to run the entrypoint\n                          of the container process. Defaults to the user specified\n                          in image metadata if unspecified. May also be set in PodSecurityContext.\n                          If set in both SecurityContext and PodSecurityContext, the\n                          value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: ServiceAccountName is the name of the ServiceAccount\n                  to use to run the Prometheus Pods.\n                type: string\n              serviceMonitorNamespaceSelector:\n                description: Namespaces to match for ServicedMonitors discovery. An\n                  empty label selector matches all namespaces. A null label selector\n                  matches the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              serviceMonitorSelector:\n                description: \"ServiceMonitors to be selected for target discovery.\n                  An empty label selector matches all objects. A null label selector\n                  matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`,\n                  `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the\n                  Prometheus configuration is unmanaged. The Prometheus operator will\n                  ensure that the Prometheus configuration's Secret exists, but it\n                  is the responsibility of the user to provide the raw gzipped Prometheus\n                  configuration under the `prometheus.yaml.gz` key. This behavior\n                  is *deprecated* and will be removed in the next major version of\n                  the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs`\n                  instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              sha:\n                description: '*Deprecated: use ''spec.image'' instead. The image''s\n                  digest can be specified as part of the image name.*'\n                type: string\n              shards:\n                description: \"EXPERIMENTAL: Number of shards to distribute targets\n                  onto. `spec.replicas` multiplied by `spec.shards` is the total number\n                  of Pods created. \\n Note that scaling down shards will not reshard\n                  data onto remaining instances, it must be manually moved. Increasing\n                  shards will not reshard data either but it will continue to be available\n                  from the same instances. To query globally, use Thanos sidecar and\n                  Thanos querier or remote write data to a central location. \\n Sharding\n                  is performed on the content of the `__address__` target meta-label\n                  for PodMonitors and ServiceMonitors and `__param_target__` for Probes.\n                  \\n Default: 1\"\n                format: int32\n                type: integer\n              storage:\n                description: Storage defines the storage used by Prometheus.\n                properties:\n                  disableMountSubPath:\n                    description: '*Deprecated: subPath usage will be removed in a\n                      future release.*'\n                    type: boolean\n                  emptyDir:\n                    description: 'EmptyDirVolumeSource to be used by the StatefulSet.\n                      If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`.\n                      More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir'\n                    properties:\n                      medium:\n                        description: 'medium represents what type of storage medium\n                          should back this directory. The default is \"\" which means\n                          to use the node''s default medium. Must be an empty string\n                          (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: 'sizeLimit is the total amount of local storage\n                          required for this EmptyDir volume. The size limit is also\n                          applicable for memory medium. The maximum usage on memory\n                          medium EmptyDir would be the minimum value between the SizeLimit\n                          specified here and the sum of memory limits of all containers\n                          in a pod. The default is nil which means that the limit\n                          is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: 'EphemeralVolumeSource to be used by the StatefulSet.\n                      This is a beta field in k8s 1.21 and GA in 1.15. For lower versions,\n                      starting with k8s 1.19, it requires enabling the GenericEphemeralVolume\n                      feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes'\n                    properties:\n                      volumeClaimTemplate:\n                        description: \"Will be used to create a stand-alone PVC to\n                          provision the volume. The pod in which this EphemeralVolumeSource\n                          is embedded will be the owner of the PVC, i.e. the PVC will\n                          be deleted together with the pod.  The name of the PVC will\n                          be `<pod name>-<volume name>` where `<volume name>` is the\n                          name from the `PodSpec.Volumes` array entry. Pod validation\n                          will reject the pod if the concatenated name is not valid\n                          for a PVC (for example, too long). \\n An existing PVC with\n                          that name that is not owned by the pod will *not* be used\n                          for the pod to avoid using an unrelated volume by mistake.\n                          Starting the pod is then blocked until the unrelated PVC\n                          is removed. If such a pre-created PVC is meant to be used\n                          by the pod, the PVC has to updated with an owner reference\n                          to the pod once the pod exists. Normally this should not\n                          be necessary, but it may be useful when manually reconstructing\n                          a broken cluster. \\n This field is read-only and no changes\n                          will be made by Kubernetes to the PVC after it has been\n                          created. \\n Required, must not be nil.\"\n                        properties:\n                          metadata:\n                            description: May contain labels and annotations that will\n                              be copied into the PVC when creating it. No other fields\n                              are allowed and will be rejected during validation.\n                            type: object\n                          spec:\n                            description: The specification for the PersistentVolumeClaim.\n                              The entire content is copied unchanged into the PVC\n                              that gets created from this template. The same fields\n                              as in a PersistentVolumeClaim are also valid here.\n                            properties:\n                              accessModes:\n                                description: 'accessModes contains the desired access\n                                  modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                items:\n                                  type: string\n                                type: array\n                              dataSource:\n                                description: 'dataSource field can be used to specify\n                                  either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                  * An existing PVC (PersistentVolumeClaim) If the\n                                  provisioner or an external controller can support\n                                  the specified data source, it will create a new\n                                  volume based on the contents of the specified data\n                                  source. When the AnyVolumeDataSource feature gate\n                                  is enabled, dataSource contents will be copied to\n                                  dataSourceRef, and dataSourceRef contents will be\n                                  copied to dataSource when dataSourceRef.namespace\n                                  is not specified. If the namespace is specified,\n                                  then dataSourceRef will not be copied to dataSource.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: 'dataSourceRef specifies the object from\n                                  which to populate the volume with data, if a non-empty\n                                  volume is desired. This may be any object from a\n                                  non-empty API group (non core object) or a PersistentVolumeClaim\n                                  object. When this field is specified, volume binding\n                                  will only succeed if the type of the specified object\n                                  matches some installed volume populator or dynamic\n                                  provisioner. This field will replace the functionality\n                                  of the dataSource field and as such if both fields\n                                  are non-empty, they must have the same value. For\n                                  backwards compatibility, when namespace isn''t specified\n                                  in dataSourceRef, both fields (dataSource and dataSourceRef)\n                                  will be set to the same value automatically if one\n                                  of them is empty and the other is non-empty. When\n                                  namespace is specified in dataSourceRef, dataSource\n                                  isn''t set to the same value and must be empty.\n                                  There are three important differences between dataSource\n                                  and dataSourceRef: * While dataSource only allows\n                                  two specific types of objects, dataSourceRef allows\n                                  any non-core object, as well as PersistentVolumeClaim\n                                  objects. * While dataSource ignores disallowed values\n                                  (dropping them), dataSourceRef preserves all values,\n                                  and generates an error if a disallowed value is\n                                  specified. * While dataSource only allows local\n                                  objects, dataSourceRef allows objects in any namespaces.\n                                  (Beta) Using this field requires the AnyVolumeDataSource\n                                  feature gate to be enabled. (Alpha) Using the namespace\n                                  field of dataSourceRef requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                  namespace:\n                                    description: Namespace is the namespace of resource\n                                      being referenced Note that when a namespace\n                                      is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                      object is required in the referent namespace\n                                      to allow that namespace's owner to accept the\n                                      reference. See the ReferenceGrant documentation\n                                      for details. (Alpha) This field requires the\n                                      CrossNamespaceVolumeDataSource feature gate\n                                      to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: 'resources represents the minimum resources\n                                  the volume should have. If RecoverVolumeExpansionFailure\n                                  feature is enabled users are allowed to specify\n                                  resource requirements that are lower than previous\n                                  value but must still be higher than capacity recorded\n                                  in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                properties:\n                                  claims:\n                                    description: \"Claims lists the names of resources,\n                                      defined in spec.resourceClaims, that are used\n                                      by this container. \\n This is an alpha field\n                                      and requires enabling the DynamicResourceAllocation\n                                      feature gate. \\n This field is immutable. It\n                                      can only be set for containers.\"\n                                    items:\n                                      description: ResourceClaim references one entry\n                                        in PodSpec.ResourceClaims.\n                                      properties:\n                                        name:\n                                          description: Name must match the name of\n                                            one entry in pod.spec.resourceClaims of\n                                            the Pod where this field is used. It makes\n                                            that resource available inside a container.\n                                          type: string\n                                      required:\n                                      - name\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-map-keys:\n                                    - name\n                                    x-kubernetes-list-type: map\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Limits describes the maximum amount\n                                      of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Requests describes the minimum amount\n                                      of compute resources required. If Requests is\n                                      omitted for a container, it defaults to Limits\n                                      if that is explicitly specified, otherwise to\n                                      an implementation-defined value. Requests cannot\n                                      exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes\n                                  to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label\n                                      selector requirements. The requirements are\n                                      ANDed.\n                                    items:\n                                      description: A label selector requirement is\n                                        a selector that contains values, a key, and\n                                        an operator that relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the\n                                            selector applies to.\n                                          type: string\n                                        operator:\n                                          description: operator represents a key's\n                                            relationship to a set of values. Valid\n                                            operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: values is an array of string\n                                            values. If the operator is In or NotIn,\n                                            the values array must be non-empty. If\n                                            the operator is Exists or DoesNotExist,\n                                            the values array must be empty. This array\n                                            is replaced during a strategic merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: matchLabels is a map of {key,value}\n                                      pairs. A single {key,value} in the matchLabels\n                                      map is equivalent to an element of matchExpressions,\n                                      whose key field is \"key\", the operator is \"In\",\n                                      and the values array contains only \"value\".\n                                      The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: 'storageClassName is the name of the\n                                  StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                type: string\n                              volumeMode:\n                                description: volumeMode defines what type of volume\n                                  is required by the claim. Value of Filesystem is\n                                  implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to\n                                  the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: Defines the PVC spec to be used by the Prometheus\n                      StatefulSets. The easiest way to use a volume that cannot be\n                      automatically provisioned is to use a label selector alongside\n                      manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: 'APIVersion defines the versioned schema of this\n                          representation of an object. Servers should convert recognized\n                          schemas to the latest internal value, and may reject unrecognized\n                          values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n                        type: string\n                      kind:\n                        description: 'Kind is a string value representing the REST\n                          resource this object represents. Servers may infer this\n                          from the endpoint the client submits requests to. Cannot\n                          be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                        type: string\n                      metadata:\n                        description: EmbeddedMetadata contains metadata relevant to\n                          an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: 'Annotations is an unstructured key value\n                              map stored with a resource that may be set by external\n                              tools to store and retrieve arbitrary metadata. They\n                              are not queryable and should be preserved when modifying\n                              objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: 'Map of string keys and values that can be\n                              used to organize and categorize (scope and select) objects.\n                              May match selectors of replication controllers and services.\n                              More info: http://kubernetes.io/docs/user-guide/labels'\n                            type: object\n                          name:\n                            description: 'Name must be unique within a namespace.\n                              Is required when creating resources, although some resources\n                              may allow a client to request the generation of an appropriate\n                              name automatically. Name is primarily intended for creation\n                              idempotence and configuration definition. Cannot be\n                              updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                            type: string\n                        type: object\n                      spec:\n                        description: 'Defines the desired characteristics of a volume\n                          requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the desired access\n                              modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          dataSource:\n                            description: 'dataSource field can be used to specify\n                              either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                              * An existing PVC (PersistentVolumeClaim) If the provisioner\n                              or an external controller can support the specified\n                              data source, it will create a new volume based on the\n                              contents of the specified data source. When the AnyVolumeDataSource\n                              feature gate is enabled, dataSource contents will be\n                              copied to dataSourceRef, and dataSourceRef contents\n                              will be copied to dataSource when dataSourceRef.namespace\n                              is not specified. If the namespace is specified, then\n                              dataSourceRef will not be copied to dataSource.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: 'dataSourceRef specifies the object from\n                              which to populate the volume with data, if a non-empty\n                              volume is desired. This may be any object from a non-empty\n                              API group (non core object) or a PersistentVolumeClaim\n                              object. When this field is specified, volume binding\n                              will only succeed if the type of the specified object\n                              matches some installed volume populator or dynamic provisioner.\n                              This field will replace the functionality of the dataSource\n                              field and as such if both fields are non-empty, they\n                              must have the same value. For backwards compatibility,\n                              when namespace isn''t specified in dataSourceRef, both\n                              fields (dataSource and dataSourceRef) will be set to\n                              the same value automatically if one of them is empty\n                              and the other is non-empty. When namespace is specified\n                              in dataSourceRef, dataSource isn''t set to the same\n                              value and must be empty. There are three important differences\n                              between dataSource and dataSourceRef: * While dataSource\n                              only allows two specific types of objects, dataSourceRef\n                              allows any non-core object, as well as PersistentVolumeClaim\n                              objects. * While dataSource ignores disallowed values\n                              (dropping them), dataSourceRef preserves all values,\n                              and generates an error if a disallowed value is specified.\n                              * While dataSource only allows local objects, dataSourceRef\n                              allows objects in any namespaces. (Beta) Using this\n                              field requires the AnyVolumeDataSource feature gate\n                              to be enabled. (Alpha) Using the namespace field of\n                              dataSourceRef requires the CrossNamespaceVolumeDataSource\n                              feature gate to be enabled.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: Namespace is the namespace of resource\n                                  being referenced Note that when a namespace is specified,\n                                  a gateway.networking.k8s.io/ReferenceGrant object\n                                  is required in the referent namespace to allow that\n                                  namespace's owner to accept the reference. See the\n                                  ReferenceGrant documentation for details. (Alpha)\n                                  This field requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: 'resources represents the minimum resources\n                              the volume should have. If RecoverVolumeExpansionFailure\n                              feature is enabled users are allowed to specify resource\n                              requirements that are lower than previous value but\n                              must still be higher than capacity recorded in the status\n                              field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                            properties:\n                              claims:\n                                description: \"Claims lists the names of resources,\n                                  defined in spec.resourceClaims, that are used by\n                                  this container. \\n This is an alpha field and requires\n                                  enabling the DynamicResourceAllocation feature gate.\n                                  \\n This field is immutable. It can only be set for\n                                  containers.\"\n                                items:\n                                  description: ResourceClaim references one entry\n                                    in PodSpec.ResourceClaims.\n                                  properties:\n                                    name:\n                                      description: Name must match the name of one\n                                        entry in pod.spec.resourceClaims of the Pod\n                                        where this field is used. It makes that resource\n                                        available inside a container.\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                type: array\n                                x-kubernetes-list-map-keys:\n                                - name\n                                x-kubernetes-list-type: map\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Limits describes the maximum amount\n                                  of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Requests describes the minimum amount\n                                  of compute resources required. If Requests is omitted\n                                  for a container, it defaults to Limits if that is\n                                  explicitly specified, otherwise to an implementation-defined\n                                  value. Requests cannot exceed Limits. More info:\n                                  https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to\n                              consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector\n                                  requirements. The requirements are ANDed.\n                                items:\n                                  description: A label selector requirement is a selector\n                                    that contains values, a key, and an operator that\n                                    relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector\n                                        applies to.\n                                      type: string\n                                    operator:\n                                      description: operator represents a key's relationship\n                                        to a set of values. Valid operators are In,\n                                        NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: values is an array of string values.\n                                        If the operator is In or NotIn, the values\n                                        array must be non-empty. If the operator is\n                                        Exists or DoesNotExist, the values array must\n                                        be empty. This array is replaced during a\n                                        strategic merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: matchLabels is a map of {key,value} pairs.\n                                  A single {key,value} in the matchLabels map is equivalent\n                                  to an element of matchExpressions, whose key field\n                                  is \"key\", the operator is \"In\", and the values array\n                                  contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: 'storageClassName is the name of the StorageClass\n                              required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                            type: string\n                          volumeMode:\n                            description: volumeMode defines what type of volume is\n                              required by the claim. Value of Filesystem is implied\n                              when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the\n                              PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: '*Deprecated: this field is never set.*'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the actual access modes\n                              the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: allocatedResources is the storage resource\n                              within AllocatedResources tracks the capacity allocated\n                              to a PVC. It may be larger than the actual capacity\n                              when a volume expansion operation is requested. For\n                              storage quota, the larger value from allocatedResources\n                              and PVC.spec.resources is used. If allocatedResources\n                              is not set, PVC.spec.resources alone is used for quota\n                              calculation. If a volume expansion capacity request\n                              is lowered, allocatedResources is only lowered if there\n                              are no expansion operations in progress and if the actual\n                              volume capacity is equal or lower than the requested\n                              capacity. This is an alpha field and requires enabling\n                              RecoverVolumeExpansionFailure feature.\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources\n                              of the underlying volume.\n                            type: object\n                          conditions:\n                            description: conditions is the current Condition of persistent\n                              volume claim. If underlying persistent volume is being\n                              resized then the Condition will be set to 'ResizeStarted'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains\n                                details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed\n                                    the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the\n                                    condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message\n                                    indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: reason is a unique, this should be\n                                    a short, machine understandable string that gives\n                                    the reason for condition's last transition. If\n                                    it reports \"ResizeStarted\" that means the underlying\n                                    persistent volume is being resized.\n                                  type: string\n                                status:\n                                  type: string\n                                type:\n                                  description: PersistentVolumeClaimConditionType\n                                    is a valid value of PersistentVolumeClaimCondition.Type\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                          resizeStatus:\n                            description: resizeStatus stores status of resize operation.\n                              ResizeStatus is not set by default but when expansion\n                              is complete resizeStatus is set to empty string by resize\n                              controller or kubelet. This is an alpha field and requires\n                              enabling RecoverVolumeExpansionFailure feature.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tag:\n                description: '*Deprecated: use ''spec.image'' instead. The image''s\n                  tag can be specified as part of the image name.*'\n                type: string\n              thanos:\n                description: \"Defines the configuration of the optional Thanos sidecar.\n                  \\n This section is experimental, it may change significantly without\n                  deprecation notice in any release.\"\n                properties:\n                  additionalArgs:\n                    description: AdditionalArgs allows setting additional arguments\n                      for the Thanos container. The arguments are passed as-is to\n                      the Thanos container which may cause issues if they are invalid\n                      or not supported the given Thanos version. In case of an argument\n                      conflict (e.g. an argument which is already set by the operator\n                      itself) or when providing an invalid argument, the reconciliation\n                      will fail and an error will be logged.\n                    items:\n                      description: Argument as part of the AdditionalArgs list.\n                      properties:\n                        name:\n                          description: Name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                          minLength: 1\n                          type: string\n                        value:\n                          description: Argument value, e.g. 30s. Can be empty for\n                            name-only arguments (e.g. --storage.tsdb.no-lockfile)\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                  baseImage:\n                    description: '*Deprecated: use ''image'' instead.*'\n                    type: string\n                  blockSize:\n                    default: 2h\n                    description: \"BlockDuration controls the size of TSDB blocks produced\n                      by Prometheus. The default value is 2h to match the upstream\n                      Prometheus defaults. \\n WARNING: Changing the block duration\n                      can impact the performance and efficiency of the entire Prometheus/Thanos\n                      stack due to how it interacts with memory and Thanos compactors.\n                      It is recommended to keep this value set to a multiple of 120\n                      times your longest scrape or rule interval. For example, 30s\n                      * 120 = 1h.\"\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  getConfigInterval:\n                    description: How often to retrieve the Prometheus configuration.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  getConfigTimeout:\n                    description: Maximum time to wait when retrieving the Prometheus\n                      configuration.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  grpcListenLocal:\n                    description: \"When true, the Thanos sidecar listens on the loopback\n                      interface instead of the Pod IP's address for the gRPC endpoints.\n                      \\n It has no effect if `listenLocal` is true.\"\n                    type: boolean\n                  grpcServerTlsConfig:\n                    description: \"Configures the TLS parameters for the gRPC server\n                      providing the StoreAPI. \\n Note: Currently only the `caFile`,\n                      `certFile`, and `keyFile` fields are supported.\"\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server\n                          certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container\n                          to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus\n                          container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus\n                          container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the\n                          targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                  httpListenLocal:\n                    description: \"When true, the Thanos sidecar listens on the loopback\n                      interface instead of the Pod IP's address for the HTTP endpoints.\n                      \\n It has no effect if `listenLocal` is true.\"\n                    type: boolean\n                  image:\n                    description: \"Container image name for Thanos. If specified, it\n                      takes precedence over the `spec.thanos.baseImage`, `spec.thanos.tag`\n                      and `spec.thanos.sha` fields. \\n Specifying `spec.thanos.version`\n                      is still necessary to ensure the Prometheus Operator knows which\n                      version of Thanos is being configured. \\n If neither `spec.thanos.image`\n                      nor `spec.thanos.baseImage` are defined, the operator will use\n                      the latest upstream version of Thanos available at the time\n                      when the operator was released.\"\n                    type: string\n                  listenLocal:\n                    description: '*Deprecated: use `grpcListenLocal` and `httpListenLocal`\n                      instead.*'\n                    type: boolean\n                  logFormat:\n                    description: Log format for the Thanos sidecar.\n                    enum:\n                    - \"\"\n                    - logfmt\n                    - json\n                    type: string\n                  logLevel:\n                    description: Log level for the Thanos sidecar.\n                    enum:\n                    - \"\"\n                    - debug\n                    - info\n                    - warn\n                    - error\n                    type: string\n                  minTime:\n                    description: Defines the start of time range limit served by the\n                      Thanos sidecar's StoreAPI. The field's value should be a constant\n                      time in RFC3339 format or a time duration relative to current\n                      time, such as -1d or 2h45m. Valid duration units are ms, s,\n                      m, h, d, w, y.\n                    type: string\n                  objectStorageConfig:\n                    description: \"Defines the Thanos sidecar's configuration to upload\n                      TSDB blocks to object storage. \\n More info: https://thanos.io/tip/thanos/storage.md/\n                      \\n objectStorageConfigFile takes precedence over this field.\"\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  objectStorageConfigFile:\n                    description: \"Defines the Thanos sidecar's configuration file\n                      to upload TSDB blocks to object storage. \\n More info: https://thanos.io/tip/thanos/storage.md/\n                      \\n This field takes precedence over objectStorageConfig.\"\n                    type: string\n                  readyTimeout:\n                    description: ReadyTimeout is the maximum time that the Thanos\n                      sidecar will wait for Prometheus to start.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  resources:\n                    description: Defines the resources requests and limits of the\n                      Thanos sidecar.\n                    properties:\n                      claims:\n                        description: \"Claims lists the names of resources, defined\n                          in spec.resourceClaims, that are used by this container.\n                          \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                          feature gate. \\n This field is immutable. It can only be\n                          set for containers.\"\n                        items:\n                          description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                          properties:\n                            name:\n                              description: Name must match the name of one entry in\n                                pod.spec.resourceClaims of the Pod where this field\n                                is used. It makes that resource available inside a\n                                container.\n                              type: string\n                          required:\n                          - name\n                          type: object\n                        type: array\n                        x-kubernetes-list-map-keys:\n                        - name\n                        x-kubernetes-list-type: map\n                      limits:\n                        additionalProperties:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                        description: 'Limits describes the maximum amount of compute\n                          resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                        type: object\n                      requests:\n                        additionalProperties:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                        description: 'Requests describes the minimum amount of compute\n                          resources required. If Requests is omitted for a container,\n                          it defaults to Limits if that is explicitly specified, otherwise\n                          to an implementation-defined value. Requests cannot exceed\n                          Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                        type: object\n                    type: object\n                  sha:\n                    description: '*Deprecated: use ''image'' instead.  The image digest\n                      can be specified as part of the image name.*'\n                    type: string\n                  tag:\n                    description: '*Deprecated: use ''image'' instead. The image''s\n                      tag can be specified as part of the image name.*'\n                    type: string\n                  tracingConfig:\n                    description: \"Defines the tracing configuration for the Thanos\n                      sidecar. \\n More info: https://thanos.io/tip/thanos/tracing.md/\n                      \\n This is an experimental feature, it may change in any upcoming\n                      release in a breaking way. \\n tracingConfigFile takes precedence\n                      over this field.\"\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  tracingConfigFile:\n                    description: \"Defines the tracing configuration file for the Thanos\n                      sidecar. \\n More info: https://thanos.io/tip/thanos/tracing.md/\n                      \\n This is an experimental feature, it may change in any upcoming\n                      release in a breaking way. \\n This field takes precedence over\n                      tracingConfig.\"\n                    type: string\n                  version:\n                    description: \"Version of Thanos being deployed. The operator uses\n                      this information to generate the Prometheus StatefulSet + configuration\n                      files. \\n If not specified, the operator assumes the latest\n                      upstream release of Thanos available at the time when the version\n                      of the operator was released.\"\n                    type: string\n                  volumeMounts:\n                    description: VolumeMounts allows configuration of additional VolumeMounts\n                      for Thanos. VolumeMounts specified will be appended to other\n                      VolumeMounts in the 'thanos-sidecar' container.\n                    items:\n                      description: VolumeMount describes a mounting of a Volume within\n                        a container.\n                      properties:\n                        mountPath:\n                          description: Path within the container at which the volume\n                            should be mounted.  Must not contain ':'.\n                          type: string\n                        mountPropagation:\n                          description: mountPropagation determines how mounts are\n                            propagated from the host to container and the other way\n                            around. When not set, MountPropagationNone is used. This\n                            field is beta in 1.10.\n                          type: string\n                        name:\n                          description: This must match the Name of a Volume.\n                          type: string\n                        readOnly:\n                          description: Mounted read-only if true, read-write otherwise\n                            (false or unspecified). Defaults to false.\n                          type: boolean\n                        subPath:\n                          description: Path within the volume from which the container's\n                            volume should be mounted. Defaults to \"\" (volume's root).\n                          type: string\n                        subPathExpr:\n                          description: Expanded path within the volume from which\n                            the container's volume should be mounted. Behaves similarly\n                            to SubPath but environment variable references $(VAR_NAME)\n                            are expanded using the container's environment. Defaults\n                            to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                            exclusive.\n                          type: string\n                      required:\n                      - mountPath\n                      - name\n                      type: object\n                    type: array\n                type: object\n              tolerations:\n                description: Defines the Pods' tolerations if specified.\n                items:\n                  description: The pod this Toleration is attached to tolerates any\n                    taint that matches the triple <key,value,effect> using the matching\n                    operator <operator>.\n                  properties:\n                    effect:\n                      description: Effect indicates the taint effect to match. Empty\n                        means match all taint effects. When specified, allowed values\n                        are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: Key is the taint key that the toleration applies\n                        to. Empty means match all taint keys. If the key is empty,\n                        operator must be Exists; this combination means to match all\n                        values and all keys.\n                      type: string\n                    operator:\n                      description: Operator represents a key's relationship to the\n                        value. Valid operators are Exists and Equal. Defaults to Equal.\n                        Exists is equivalent to wildcard for value, so that a pod\n                        can tolerate all taints of a particular category.\n                      type: string\n                    tolerationSeconds:\n                      description: TolerationSeconds represents the period of time\n                        the toleration (which must be of effect NoExecute, otherwise\n                        this field is ignored) tolerates the taint. By default, it\n                        is not set, which means tolerate the taint forever (do not\n                        evict). Zero and negative values will be treated as 0 (evict\n                        immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: Value is the taint value the toleration matches\n                        to. If the operator is Exists, the value should be empty,\n                        otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: Defines the pod's topology spread constraints if specified.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching\n                    pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: LabelSelector is used to find matching pods. Pods\n                        that match this label selector are counted to determine the\n                        number of pods in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector\n                            requirements. The requirements are ANDed.\n                          items:\n                            description: A label selector requirement is a selector\n                              that contains values, a key, and an operator that relates\n                              the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector\n                                  applies to.\n                                type: string\n                              operator:\n                                description: operator represents a key's relationship\n                                  to a set of values. Valid operators are In, NotIn,\n                                  Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: values is an array of string values.\n                                  If the operator is In or NotIn, the values array\n                                  must be non-empty. If the operator is Exists or\n                                  DoesNotExist, the values array must be empty. This\n                                  array is replaced during a strategic merge patch.\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: matchLabels is a map of {key,value} pairs.\n                            A single {key,value} in the matchLabels map is equivalent\n                            to an element of matchExpressions, whose key field is\n                            \"key\", the operator is \"In\", and the values array contains\n                            only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: \"MatchLabelKeys is a set of pod label keys to select\n                        the pods over which spreading will be calculated. The keys\n                        are used to lookup values from the incoming pod labels, those\n                        key-value labels are ANDed with labelSelector to select the\n                        group of existing pods over which spreading will be calculated\n                        for the incoming pod. The same key is forbidden to exist in\n                        both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot\n                        be set when LabelSelector isn't set. Keys that don't exist\n                        in the incoming pod labels will be ignored. A null or empty\n                        list means only match against labelSelector. \\n This is a\n                        beta field and requires the MatchLabelKeysInPodTopologySpread\n                        feature gate to be enabled (enabled by default).\"\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: 'MaxSkew describes the degree to which pods may\n                        be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,\n                        it is the maximum permitted difference between the number\n                        of matching pods in the target topology and the global minimum.\n                        The global minimum is the minimum number of matching pods\n                        in an eligible domain or zero if the number of eligible domains\n                        is less than MinDomains. For example, in a 3-zone cluster,\n                        MaxSkew is set to 1, and pods with the same labelSelector\n                        spread as 2/2/1: In this case, the global minimum is 1. |\n                        zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew\n                        is 1, incoming pod can only be scheduled to zone3 to become\n                        2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1)\n                        on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming\n                        pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`,\n                        it is used to give higher precedence to topologies that satisfy\n                        it. It''s a required field. Default value is 1 and 0 is not\n                        allowed.'\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: \"MinDomains indicates a minimum number of eligible\n                        domains. When the number of eligible domains with matching\n                        topology keys is less than minDomains, Pod Topology Spread\n                        treats \\\"global minimum\\\" as 0, and then the calculation of\n                        Skew is performed. And when the number of eligible domains\n                        with matching topology keys equals or greater than minDomains,\n                        this value has no effect on scheduling. As a result, when\n                        the number of eligible domains is less than minDomains, scheduler\n                        won't schedule more than maxSkew Pods to those domains. If\n                        value is nil, the constraint behaves as if MinDomains is equal\n                        to 1. Valid values are integers greater than 0. When value\n                        is not nil, WhenUnsatisfiable must be DoNotSchedule. \\n For\n                        example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains\n                        is set to 5 and pods with the same labelSelector spread as\n                        2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  |\n                        The number of domains is less than 5(MinDomains), so \\\"global\n                        minimum\\\" is treated as 0. In this situation, new pod with\n                        the same labelSelector cannot be scheduled, because computed\n                        skew will be 3(3 - 0) if new Pod is scheduled to any of the\n                        three zones, it will violate MaxSkew. \\n This is a beta field\n                        and requires the MinDomainsInPodTopologySpread feature gate\n                        to be enabled (enabled by default).\"\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: \"NodeAffinityPolicy indicates how we will treat\n                        Pod's nodeAffinity/nodeSelector when calculating pod topology\n                        spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector\n                        are included in the calculations. - Ignore: nodeAffinity/nodeSelector\n                        are ignored. All nodes are included in the calculations. \\n\n                        If this value is nil, the behavior is equivalent to the Honor\n                        policy. This is a beta-level feature default enabled by the\n                        NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    nodeTaintsPolicy:\n                      description: \"NodeTaintsPolicy indicates how we will treat node\n                        taints when calculating pod topology spread skew. Options\n                        are: - Honor: nodes without taints, along with tainted nodes\n                        for which the incoming pod has a toleration, are included.\n                        - Ignore: node taints are ignored. All nodes are included.\n                        \\n If this value is nil, the behavior is equivalent to the\n                        Ignore policy. This is a beta-level feature default enabled\n                        by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    topologyKey:\n                      description: TopologyKey is the key of node labels. Nodes that\n                        have a label with this key and identical values are considered\n                        to be in the same topology. We consider each <key, value>\n                        as a \"bucket\", and try to put balanced number of pods into\n                        each bucket. We define a domain as a particular instance of\n                        a topology. Also, we define an eligible domain as a domain\n                        whose nodes meet the requirements of nodeAffinityPolicy and\n                        nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\",\n                        each Node is a domain of that topology. And, if TopologyKey\n                        is \"topology.kubernetes.io/zone\", each zone is a domain of\n                        that topology. It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: 'WhenUnsatisfiable indicates how to deal with a\n                        pod if it doesn''t satisfy the spread constraint. - DoNotSchedule\n                        (default) tells the scheduler not to schedule it. - ScheduleAnyway\n                        tells the scheduler to schedule the pod in any location, but\n                        giving higher precedence to topologies that would help reduce\n                        the skew. A constraint is considered \"Unsatisfiable\" for an\n                        incoming pod if and only if every possible node assignment\n                        for that pod would violate \"MaxSkew\" on some topology. For\n                        example, in a 3-zone cluster, MaxSkew is set to 1, and pods\n                        with the same labelSelector spread as 3/1/1: | zone1 | zone2\n                        | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is\n                        set to DoNotSchedule, incoming pod can only be scheduled to\n                        zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on\n                        zone2(zone3) satisfies MaxSkew(1). In other words, the cluster\n                        can still be imbalanced, but scheduler won''t make it *more*\n                        imbalanced. It''s a required field.'\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              tracingConfig:\n                description: 'EXPERIMENTAL: TracingConfig configures tracing in Prometheus.\n                  This is an experimental feature, it may change in any upcoming release\n                  in a breaking way.'\n                properties:\n                  clientType:\n                    description: Client used to export the traces. Supported values\n                      are `http` or `grpc`.\n                    enum:\n                    - http\n                    - grpc\n                    type: string\n                  compression:\n                    description: Compression key for supported compression types.\n                      The only supported value is `gzip`.\n                    enum:\n                    - gzip\n                    type: string\n                  endpoint:\n                    description: Endpoint to send the traces to. Should be provided\n                      in format <host>:<port>.\n                    minLength: 1\n                    type: string\n                  headers:\n                    additionalProperties:\n                      type: string\n                    description: Key-value pairs to be used as headers associated\n                      with gRPC or HTTP requests.\n                    type: object\n                  insecure:\n                    description: If disabled, the client will use a secure connection.\n                    type: boolean\n                  samplingFraction:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: Sets the probability a given trace will be sampled.\n                      Must be a float from 0 through 1.\n                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                    x-kubernetes-int-or-string: true\n                  timeout:\n                    description: Maximum time the exporter will wait for each batch\n                      export.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  tlsConfig:\n                    description: TLS Config to use when sending traces.\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server\n                          certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container\n                          to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus\n                          container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus\n                          container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the\n                          targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - endpoint\n                type: object\n              tsdb:\n                description: Defines the runtime reloadable configuration of the timeseries\n                  database (TSDB).\n                properties:\n                  outOfOrderTimeWindow:\n                    description: Configures how old an out-of-order/out-of-bounds\n                      sample can be w.r.t. the TSDB max time. An out-of-order/out-of-bounds\n                      sample is ingested into the TSDB as long as the timestamp of\n                      the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow). Out\n                      of order ingestion is an experimental feature and requires Prometheus\n                      >= v2.39.0.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                type: object\n              version:\n                description: \"Version of Prometheus being deployed. The operator uses\n                  this information to generate the Prometheus StatefulSet + configuration\n                  files. \\n If not specified, the operator assumes the latest upstream\n                  version of Prometheus available at the time when the version of\n                  the operator was released.\"\n                type: string\n              volumeMounts:\n                description: \"VolumeMounts allows the configuration of additional\n                  VolumeMounts. \\n VolumeMounts will be appended to other VolumeMounts\n                  in the 'prometheus' container, that are generated as a result of\n                  StorageSpec objects.\"\n                items:\n                  description: VolumeMount describes a mounting of a Volume within\n                    a container.\n                  properties:\n                    mountPath:\n                      description: Path within the container at which the volume should\n                        be mounted.  Must not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: mountPropagation determines how mounts are propagated\n                        from the host to container and the other way around. When\n                        not set, MountPropagationNone is used. This field is beta\n                        in 1.10.\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: Mounted read-only if true, read-write otherwise\n                        (false or unspecified). Defaults to false.\n                      type: boolean\n                    subPath:\n                      description: Path within the volume from which the container's\n                        volume should be mounted. Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: Expanded path within the volume from which the\n                        container's volume should be mounted. Behaves similarly to\n                        SubPath but environment variable references $(VAR_NAME) are\n                        expanded using the container's environment. Defaults to \"\"\n                        (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: Volumes allows the configuration of additional volumes\n                  on the output StatefulSet definition. Volumes specified will be\n                  appended to other volumes that are generated as a result of StorageSpec\n                  objects.\n                items:\n                  description: Volume represents a named volume in a pod that may\n                    be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: 'awsElasticBlockStore represents an AWS Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly value true will force the readOnly\n                            setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: boolean\n                        volumeID:\n                          description: 'volumeID is unique ID of the persistent disk\n                            resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: azureDisk represents an Azure Data Disk mount on\n                        the host and bind mount to the pod.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None,\n                            Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the\n                            blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob\n                            storage\n                          type: string\n                        fsType:\n                          description: fsType is Filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple\n                            blob disks per storage account  Dedicated: single blob\n                            disk per storage account  Managed: azure managed data\n                            disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: azureFile represents an Azure File Service mount\n                        on the host and bind mount to the pod.\n                      properties:\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains\n                            Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: cephFS represents a Ceph FS mount on the host that\n                        shares a pod's lifetime\n                      properties:\n                        monitors:\n                          description: 'monitors is Required: Monitors is a collection\n                            of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        path:\n                          description: 'path is Optional: Used as the mounted root,\n                            rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: boolean\n                        secretFile:\n                          description: 'secretFile is Optional: SecretFile is the\n                            path to key ring for User, default is /etc/ceph/user.secret\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                        secretRef:\n                          description: 'secretRef is Optional: SecretRef is reference\n                            to the authentication secret for User, default is empty.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is optional: User is the rados user name,\n                            default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: 'cinder represents a cinder volume attached and\n                        mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to\n                            be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                        readOnly:\n                          description: 'readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is optional: points to a secret\n                            object containing parameters used to connect to OpenStack.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: 'volumeID used to identify the volume in cinder.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate\n                        this volume\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items if unspecified, each key-value pair in\n                            the Data field of the referenced ConfigMap will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the ConfigMap, the volume setup will error unless it is\n                            marked optional. Paths must be relative and may not contain\n                            the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its\n                            keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral\n                        storage that is handled by certain external CSI drivers (Beta\n                        feature).\n                      properties:\n                        driver:\n                          description: driver is the name of the CSI driver that handles\n                            this volume. Consult with your admin for the correct name\n                            as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            If not provided, the empty value is passed to the associated\n                            CSI driver which will determine the default filesystem\n                            to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: nodePublishSecretRef is a reference to the\n                            secret object containing sensitive information to pass\n                            to the CSI driver to complete the CSI NodePublishVolume\n                            and NodeUnpublishVolume calls. This field is optional,\n                            and  may be empty if no secret is required. If the secret\n                            object contains more than one secret, all secret references\n                            are passed.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: readOnly specifies a read-only configuration\n                            for the volume. Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: volumeAttributes stores driver-specific properties\n                            that are passed to the CSI driver. Consult your driver's\n                            documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod\n                        that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'Optional: mode bits to use on created files\n                            by default. Must be a Optional: mode bits used to set\n                            permissions on created files by default. Must be an octal\n                            value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information\n                              to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod:\n                                  only annotations, labels, name and namespace are\n                                  supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: 'Optional: mode bits used to set permissions\n                                  on this file, must be an octal value between 0000\n                                  and 0777 or a decimal value between 0 and 511. YAML\n                                  accepts both octal and decimal values, JSON requires\n                                  decimal values for mode bits. If not specified,\n                                  the volume defaultMode will be used. This might\n                                  be in conflict with other options that affect the\n                                  file mode, like fsGroup, and the result can be other\n                                  mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path\n                                  name of the file to be created. Must not be absolute\n                                  or contain the ''..'' path. Must be utf-8 encoded.\n                                  The first item of the relative path must not start\n                                  with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, requests.cpu and requests.memory)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                      type: object\n                    emptyDir:\n                      description: 'emptyDir represents a temporary directory that\n                        shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                      properties:\n                        medium:\n                          description: 'medium represents what type of storage medium\n                            should back this directory. The default is \"\" which means\n                            to use the node''s default medium. Must be an empty string\n                            (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: 'sizeLimit is the total amount of local storage\n                            required for this EmptyDir volume. The size limit is also\n                            applicable for memory medium. The maximum usage on memory\n                            medium EmptyDir would be the minimum value between the\n                            SizeLimit specified here and the sum of memory limits\n                            of all containers in a pod. The default is nil which means\n                            that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: \"ephemeral represents a volume that is handled\n                        by a cluster storage driver. The volume's lifecycle is tied\n                        to the pod that defines it - it will be created before the\n                        pod starts, and deleted when the pod is removed. \\n Use this\n                        if: a) the volume is only needed while the pod runs, b) features\n                        of normal volumes like restoring from snapshot or capacity\n                        tracking are needed, c) the storage driver is specified through\n                        a storage class, and d) the storage driver supports dynamic\n                        volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource\n                        for more information on the connection between this volume\n                        type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim\n                        or one of the vendor-specific APIs for volumes that persist\n                        for longer than the lifecycle of an individual pod. \\n Use\n                        CSI for light-weight local ephemeral volumes if the CSI driver\n                        is meant to be used that way - see the documentation of the\n                        driver for more information. \\n A pod can use both types of\n                        ephemeral volumes and persistent volumes at the same time.\"\n                      properties:\n                        volumeClaimTemplate:\n                          description: \"Will be used to create a stand-alone PVC to\n                            provision the volume. The pod in which this EphemeralVolumeSource\n                            is embedded will be the owner of the PVC, i.e. the PVC\n                            will be deleted together with the pod.  The name of the\n                            PVC will be `<pod name>-<volume name>` where `<volume\n                            name>` is the name from the `PodSpec.Volumes` array entry.\n                            Pod validation will reject the pod if the concatenated\n                            name is not valid for a PVC (for example, too long). \\n\n                            An existing PVC with that name that is not owned by the\n                            pod will *not* be used for the pod to avoid using an unrelated\n                            volume by mistake. Starting the pod is then blocked until\n                            the unrelated PVC is removed. If such a pre-created PVC\n                            is meant to be used by the pod, the PVC has to updated\n                            with an owner reference to the pod once the pod exists.\n                            Normally this should not be necessary, but it may be useful\n                            when manually reconstructing a broken cluster. \\n This\n                            field is read-only and no changes will be made by Kubernetes\n                            to the PVC after it has been created. \\n Required, must\n                            not be nil.\"\n                          properties:\n                            metadata:\n                              description: May contain labels and annotations that\n                                will be copied into the PVC when creating it. No other\n                                fields are allowed and will be rejected during validation.\n                              type: object\n                            spec:\n                              description: The specification for the PersistentVolumeClaim.\n                                The entire content is copied unchanged into the PVC\n                                that gets created from this template. The same fields\n                                as in a PersistentVolumeClaim are also valid here.\n                              properties:\n                                accessModes:\n                                  description: 'accessModes contains the desired access\n                                    modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                  items:\n                                    type: string\n                                  type: array\n                                dataSource:\n                                  description: 'dataSource field can be used to specify\n                                    either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                    * An existing PVC (PersistentVolumeClaim) If the\n                                    provisioner or an external controller can support\n                                    the specified data source, it will create a new\n                                    volume based on the contents of the specified\n                                    data source. When the AnyVolumeDataSource feature\n                                    gate is enabled, dataSource contents will be copied\n                                    to dataSourceRef, and dataSourceRef contents will\n                                    be copied to dataSource when dataSourceRef.namespace\n                                    is not specified. If the namespace is specified,\n                                    then dataSourceRef will not be copied to dataSource.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: 'dataSourceRef specifies the object\n                                    from which to populate the volume with data, if\n                                    a non-empty volume is desired. This may be any\n                                    object from a non-empty API group (non core object)\n                                    or a PersistentVolumeClaim object. When this field\n                                    is specified, volume binding will only succeed\n                                    if the type of the specified object matches some\n                                    installed volume populator or dynamic provisioner.\n                                    This field will replace the functionality of the\n                                    dataSource field and as such if both fields are\n                                    non-empty, they must have the same value. For\n                                    backwards compatibility, when namespace isn''t\n                                    specified in dataSourceRef, both fields (dataSource\n                                    and dataSourceRef) will be set to the same value\n                                    automatically if one of them is empty and the\n                                    other is non-empty. When namespace is specified\n                                    in dataSourceRef, dataSource isn''t set to the\n                                    same value and must be empty. There are three\n                                    important differences between dataSource and dataSourceRef:\n                                    * While dataSource only allows two specific types\n                                    of objects, dataSourceRef allows any non-core\n                                    object, as well as PersistentVolumeClaim objects.\n                                    * While dataSource ignores disallowed values (dropping\n                                    them), dataSourceRef preserves all values, and\n                                    generates an error if a disallowed value is specified.\n                                    * While dataSource only allows local objects,\n                                    dataSourceRef allows objects in any namespaces.\n                                    (Beta) Using this field requires the AnyVolumeDataSource\n                                    feature gate to be enabled. (Alpha) Using the\n                                    namespace field of dataSourceRef requires the\n                                    CrossNamespaceVolumeDataSource feature gate to\n                                    be enabled.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                    namespace:\n                                      description: Namespace is the namespace of resource\n                                        being referenced Note that when a namespace\n                                        is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                        object is required in the referent namespace\n                                        to allow that namespace's owner to accept\n                                        the reference. See the ReferenceGrant documentation\n                                        for details. (Alpha) This field requires the\n                                        CrossNamespaceVolumeDataSource feature gate\n                                        to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: 'resources represents the minimum resources\n                                    the volume should have. If RecoverVolumeExpansionFailure\n                                    feature is enabled users are allowed to specify\n                                    resource requirements that are lower than previous\n                                    value but must still be higher than capacity recorded\n                                    in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                  properties:\n                                    claims:\n                                      description: \"Claims lists the names of resources,\n                                        defined in spec.resourceClaims, that are used\n                                        by this container. \\n This is an alpha field\n                                        and requires enabling the DynamicResourceAllocation\n                                        feature gate. \\n This field is immutable.\n                                        It can only be set for containers.\"\n                                      items:\n                                        description: ResourceClaim references one\n                                          entry in PodSpec.ResourceClaims.\n                                        properties:\n                                          name:\n                                            description: Name must match the name\n                                              of one entry in pod.spec.resourceClaims\n                                              of the Pod where this field is used.\n                                              It makes that resource available inside\n                                              a container.\n                                            type: string\n                                        required:\n                                        - name\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-map-keys:\n                                      - name\n                                      x-kubernetes-list-type: map\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Limits describes the maximum amount\n                                        of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Requests describes the minimum\n                                        amount of compute resources required. If Requests\n                                        is omitted for a container, it defaults to\n                                        Limits if that is explicitly specified, otherwise\n                                        to an implementation-defined value. Requests\n                                        cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes\n                                    to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: 'storageClassName is the name of the\n                                    StorageClass required by the claim. More info:\n                                    https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                  type: string\n                                volumeMode:\n                                  description: volumeMode defines what type of volume\n                                    is required by the claim. Value of Filesystem\n                                    is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference\n                                    to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is\n                        attached to a kubelet's host machine and then exposed to the\n                        pod.\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. TODO: how do we prevent errors in the\n                            filesystem from compromising the machine'\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide\n                            names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                        wwids:\n                          description: 'wwids Optional: FC volume world wide identifiers\n                            (wwids) Either wwids or combination of targetWWNs and\n                            lun must be set, but not both simultaneously.'\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    flexVolume:\n                      description: flexVolume represents a generic volume resource\n                        that is provisioned/attached using an exec based plugin.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for\n                            this volume.\n                          type: string\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends\n                            on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra\n                            command options if any.'\n                          type: object\n                        readOnly:\n                          description: 'readOnly is Optional: defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is Optional: secretRef is reference\n                            to the secret object containing sensitive information\n                            to pass to the plugin scripts. This may be empty if no\n                            secret object is specified. If the secret object contains\n                            more than one secret, all secrets are passed to the plugin\n                            scripts.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: flocker represents a Flocker volume attached to\n                        a kubelet's host machine. This depends on the Flocker control\n                        service being running\n                      properties:\n                        datasetName:\n                          description: datasetName is Name of the dataset stored as\n                            metadata -> name on the dataset for Flocker should be\n                            considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This\n                            is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: 'gcePersistentDisk represents a GCE Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                      properties:\n                        fsType:\n                          description: 'fsType is filesystem type of the volume that\n                            you want to mount. Tip: Ensure that the filesystem type\n                            is supported by the host operating system. Examples: \"ext4\",\n                            \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: 'pdName is unique name of the PD resource in\n                            GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: 'gitRepo represents a git repository at a particular\n                        revision. DEPRECATED: GitRepo is deprecated. To provision\n                        a container with a git repo, mount an EmptyDir into an InitContainer\n                        that clones the repo using git, then mount the EmptyDir into\n                        the Pod''s container.'\n                      properties:\n                        directory:\n                          description: directory is the target directory name. Must\n                            not contain or start with '..'.  If '.' is supplied, the\n                            volume directory will be the git repository.  Otherwise,\n                            if specified, the volume will contain the git repository\n                            in the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified\n                            revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: 'glusterfs represents a Glusterfs mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'\n                      properties:\n                        endpoints:\n                          description: 'endpoints is the endpoint name that details\n                            Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        path:\n                          description: 'path is the Glusterfs volume path. More info:\n                            https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the Glusterfs volume\n                            to be mounted with read-only permissions. Defaults to\n                            false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: 'hostPath represents a pre-existing file or directory\n                        on the host machine that is directly exposed to the container.\n                        This is generally used for system agents or other privileged\n                        things that are allowed to see the host machine. Most containers\n                        will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                        --- TODO(jonesdl) We need to restrict who can use host directory\n                        mounts and who can/can not mount host directories as read/write.'\n                      properties:\n                        path:\n                          description: 'path of the directory on the host. If the\n                            path is a symlink, it will follow the link to the real\n                            path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                        type:\n                          description: 'type for HostPath Volume Defaults to \"\" More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    iscsi:\n                      description: 'iscsi represents an ISCSI Disk resource that is\n                        attached to a kubelet''s host machine and then exposed to\n                        the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI\n                            Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI\n                            Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        initiatorName:\n                          description: initiatorName is the custom iSCSI Initiator\n                            Name. If initiatorName is specified with iscsiInterface\n                            simultaneously, new iSCSI interface <target portal>:<volume\n                            name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          description: iscsiInterface is the interface Name that uses\n                            an iSCSI transport. Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: portals is the iSCSI Target Portal List. The\n                            portal is either an IP or ip_addr:port if the port is\n                            other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                        readOnly:\n                          description: readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target\n                            and initiator authentication\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: targetPortal is iSCSI Target Portal. The Portal\n                            is either an IP or ip_addr:port if the port is other than\n                            default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: 'name of the volume. Must be a DNS_LABEL and unique\n                        within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                      type: string\n                    nfs:\n                      description: 'nfs represents an NFS mount on the host that shares\n                        a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                      properties:\n                        path:\n                          description: 'path that is exported by the NFS server. More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the NFS export to\n                            be mounted with read-only permissions. Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: boolean\n                        server:\n                          description: 'server is the hostname or IP address of the\n                            NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: 'persistentVolumeClaimVolumeSource represents a\n                        reference to a PersistentVolumeClaim in the same namespace.\n                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                      properties:\n                        claimName:\n                          description: 'claimName is the name of a PersistentVolumeClaim\n                            in the same namespace as the pod using this volume. More\n                            info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                          type: string\n                        readOnly:\n                          description: readOnly Will force the ReadOnly setting in\n                            VolumeMounts. Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: photonPersistentDisk represents a PhotonController\n                        persistent disk attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller\n                            persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: portworxVolume represents a portworx volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fSType represents the filesystem type to mount\n                            Must be a filesystem type supported by the host operating\n                            system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets,\n                        configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: defaultMode are the mode bits used to set permissions\n                            on created files by default. Must be an octal value between\n                            0000 and 0777 or a decimal value between 0 and 511. YAML\n                            accepts both octal and decimal values, JSON requires decimal\n                            values for mode bits. Directories within the path are\n                            not affected by this setting. This might be in conflict\n                            with other options that affect the file mode, like fsGroup,\n                            and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: sources is the list of volume projections\n                          items:\n                            description: Projection that may be projected along with\n                              other supported volume types\n                            properties:\n                              configMap:\n                                description: configMap information about the configMap\n                                  data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced ConfigMap\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the ConfigMap, the volume\n                                      setup will error unless it is marked optional.\n                                      Paths must be relative and may not contain the\n                                      '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap\n                                      or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI\n                                  data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume\n                                      file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents\n                                        information to create the file containing\n                                        the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field\n                                            of the pod: only annotations, labels,\n                                            name and namespace are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the\n                                                FieldPath is written in terms of,\n                                                defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select\n                                                in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: 'Optional: mode bits used to\n                                            set permissions on this file, must be\n                                            an octal value between 0000 and 0777 or\n                                            a decimal value between 0 and 511. YAML\n                                            accepts both octal and decimal values,\n                                            JSON requires decimal values for mode\n                                            bits. If not specified, the volume defaultMode\n                                            will be used. This might be in conflict\n                                            with other options that affect the file\n                                            mode, like fsGroup, and the result can\n                                            be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative\n                                            path name of the file to be created. Must\n                                            not be absolute or contain the ''..''\n                                            path. Must be utf-8 encoded. The first\n                                            item of the relative path must not start\n                                            with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: 'Selects a resource of the\n                                            container: only resources limits and requests\n                                            (limits.cpu, limits.memory, requests.cpu\n                                            and requests.memory) are currently supported.'\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required\n                                                for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format\n                                                of the exposed resources, defaults\n                                                to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to\n                                                select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                type: object\n                              secret:\n                                description: secret information about the secret data\n                                  to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced Secret\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the Secret, the volume setup\n                                      will error unless it is marked optional. Paths\n                                      must be relative and may not contain the '..'\n                                      path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the\n                                      Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about\n                                  the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: audience is the intended audience\n                                      of the token. A recipient of a token must identify\n                                      itself with an identifier specified in the audience\n                                      of the token, and otherwise should reject the\n                                      token. The audience defaults to the identifier\n                                      of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: expirationSeconds is the requested\n                                      duration of validity of the service account\n                                      token. As the token approaches expiration, the\n                                      kubelet volume plugin will proactively rotate\n                                      the service account token. The kubelet will\n                                      start trying to rotate the token if the token\n                                      is older than 80 percent of its time to live\n                                      or if the token is older than 24 hours.Defaults\n                                      to 1 hour and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: path is the path relative to the\n                                      mount point of the file to project the token\n                                      into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                      type: object\n                    quobyte:\n                      description: quobyte represents a Quobyte mount on the host\n                        that shares a pod's lifetime\n                      properties:\n                        group:\n                          description: group to map volume access to Default is no\n                            group\n                          type: string\n                        readOnly:\n                          description: readOnly here will force the Quobyte volume\n                            to be mounted with read-only permissions. Defaults to\n                            false.\n                          type: boolean\n                        registry:\n                          description: registry represents a single or multiple Quobyte\n                            Registry services specified as a string as host:port pair\n                            (multiple entries are separated with commas) which acts\n                            as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: tenant owning the given Quobyte volume in the\n                            Backend Used with dynamically provisioned Quobyte volumes,\n                            value is set by the plugin\n                          type: string\n                        user:\n                          description: user to map volume access to Defaults to serivceaccount\n                            user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already\n                            created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: 'rbd represents a Rados Block Device mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        image:\n                          description: 'image is the rados image name. More info:\n                            https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        keyring:\n                          description: 'keyring is the path to key ring for RBDUser.\n                            Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        monitors:\n                          description: 'monitors is a collection of Ceph monitors.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        pool:\n                          description: 'pool is the rados pool name. Default is rbd.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is name of the authentication secret\n                            for RBDUser. If provided overrides keyring. Default is\n                            nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is the rados user name. Default is admin.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: scaleIO represents a ScaleIO persistent volume\n                        attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO\n                            API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO\n                            Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef references to the secret for ScaleIO\n                            user and other sensitive information. If this is not provided,\n                            Login operation will fail.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication\n                            with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          description: storageMode indicates whether the storage for\n                            a volume should be ThickProvisioned or ThinProvisioned.\n                            Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated\n                            with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as\n                            configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: volumeName is the name of a volume already\n                            created in the ScaleIO system that is associated with\n                            this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: 'secret represents a secret that should populate\n                        this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is Optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items If unspecified, each key-value pair in\n                            the Data field of the referenced Secret will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the Secret, the volume setup will error unless it is marked\n                            optional. Paths must be relative and may not contain the\n                            '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        optional:\n                          description: optional field specify whether the Secret or\n                            its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: 'secretName is the name of the secret in the\n                            pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                          type: string\n                      type: object\n                    storageos:\n                      description: storageOS represents a StorageOS volume attached\n                        and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef specifies the secret to use for obtaining\n                            the StorageOS API credentials.  If not specified, default\n                            values will be attempted.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: volumeName is the human-readable name of the\n                            StorageOS volume.  Volume names are only unique within\n                            a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: volumeNamespace specifies the scope of the\n                            volume within StorageOS.  If no namespace is specified\n                            then the Pod's namespace will be used.  This allows the\n                            Kubernetes name scoping to be mirrored within StorageOS\n                            for tighter integration. Set VolumeName to any name to\n                            override the default behaviour. Set to \"default\" if you\n                            are not using namespaces within StorageOS. Namespaces\n                            that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: vsphereVolume represents a vSphere volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based\n                            Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based\n                            Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere\n                            volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              walCompression:\n                description: \"Configures compression of the write-ahead log (WAL)\n                  using Snappy. \\n WAL compression is enabled by default for Prometheus\n                  >= 2.20.0 \\n Requires Prometheus v2.11.0 and above.\"\n                type: boolean\n              web:\n                description: Defines the configuration of the Prometheus web server.\n                properties:\n                  httpConfig:\n                    description: Defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: List of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: Set the Content-Security-Policy header to\n                              HTTP responses. Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: Set the Strict-Transport-Security header\n                              to HTTP responses. Unset if blank. Please make sure\n                              that you use this with care as this header might force\n                              browsers to load Prometheus and the other applications\n                              hosted on the same domain and subdomains over HTTPS.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: Set the X-Content-Type-Options header to\n                              HTTP responses. Unset if blank. Accepted value is nosniff.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: Set the X-Frame-Options header to HTTP responses.\n                              Unset if blank. Accepted values are deny and sameorigin.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: Set the X-XSS-Protection header to all responses.\n                              Unset if blank. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: Enable HTTP/2 support. Note that HTTP/2 is only\n                          supported with TLS. When TLSConfig is not configured, HTTP/2\n                          will be disabled. Whenever the value of the field changes,\n                          a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  maxConnections:\n                    description: Defines the maximum number of simultaneous connections\n                      A zero value means that Prometheus doesn't accept any incoming\n                      connection.\n                    format: int32\n                    minimum: 0\n                    type: integer\n                  pageTitle:\n                    description: The prometheus web page title.\n                    type: string\n                  tlsConfig:\n                    description: Defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: Contains the TLS certificate for the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      cipherSuites:\n                        description: 'List of supported cipher suites for TLS versions\n                          up to TLS 1.2. If empty, Go default cipher suites are used.\n                          Available cipher suites are documented in the go documentation:\n                          https://golang.org/pkg/crypto/tls/#pkg-constants'\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: Contains the CA certificate for client certificate\n                          authentication to the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: 'Server policy for client authentication. Maps\n                          to ClientAuth Policies. For more detail on clientAuth options:\n                          https://golang.org/pkg/crypto/tls/#ClientAuthType'\n                        type: string\n                      curvePreferences:\n                        description: 'Elliptic curves that will be used in an ECDHE\n                          handshake, in preference order. Available curves are documented\n                          in the go documentation: https://golang.org/pkg/crypto/tls/#CurveID'\n                        items:\n                          type: string\n                        type: array\n                      keySecret:\n                        description: Secret containing the TLS key for the server.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: Maximum TLS version that is acceptable. Defaults\n                          to TLS13.\n                        type: string\n                      minVersion:\n                        description: Minimum TLS version that is acceptable. Defaults\n                          to TLS12.\n                        type: string\n                      preferServerCipherSuites:\n                        description: Controls whether the server selects the client's\n                          most preferred cipher suite, or the server's most preferred\n                          cipher suite. If true then the server's preference, as expressed\n                          in the order of elements in cipherSuites, is used.\n                        type: boolean\n                    required:\n                    - cert\n                    - keySecret\n                    type: object\n                type: object\n            type: object\n          status:\n            description: 'Most recent observed status of the Prometheus cluster. Read-only.\n              More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              availableReplicas:\n                description: Total number of available pods (ready for at least minReadySeconds)\n                  targeted by this Prometheus deployment.\n                format: int32\n                type: integer\n              conditions:\n                description: The current state of the Prometheus deployment.\n                items:\n                  description: Condition represents the state of the resources associated\n                    with the Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update\n                        to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Human-readable message indicating details for the\n                        condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: ObservedGeneration represents the .metadata.generation\n                        that the condition was set based upon. For instance, if `.metadata.generation`\n                        is currently 12, but the `.status.conditions[].observedGeneration`\n                        is 9, the condition is out of date with respect to the current\n                        state of the instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition.\n                      type: string\n                    type:\n                      description: Type of the condition being reported.\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: Represents whether any actions on the underlying managed\n                  objects are being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: Total number of non-terminated pods targeted by this\n                  Prometheus deployment (their labels match the selector).\n                format: int32\n                type: integer\n              shardStatuses:\n                description: The list has one entry per shard. Each entry provides\n                  a summary of the shard status.\n                items:\n                  properties:\n                    availableReplicas:\n                      description: Total number of available pods (ready for at least\n                        minReadySeconds) targeted by this shard.\n                      format: int32\n                      type: integer\n                    replicas:\n                      description: Total number of pods targeted by this shard.\n                      format: int32\n                      type: integer\n                    shardID:\n                      description: Identifier of the shard.\n                      type: string\n                    unavailableReplicas:\n                      description: Total number of unavailable pods targeted by this\n                        shard.\n                      format: int32\n                      type: integer\n                    updatedReplicas:\n                      description: Total number of non-terminated pods targeted by\n                        this shard that have the desired spec.\n                      format: int32\n                      type: integer\n                  required:\n                  - availableReplicas\n                  - replicas\n                  - shardID\n                  - unavailableReplicas\n                  - updatedReplicas\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - shardID\n                x-kubernetes-list-type: map\n              unavailableReplicas:\n                description: Total number of unavailable pods targeted by this Prometheus\n                  deployment.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: Total number of non-terminated pods targeted by this\n                  Prometheus deployment that have the desired version spec.\n                format: int32\n                type: integer\n            required:\n            - availableReplicas\n            - paused\n            - replicas\n            - unavailableReplicas\n            - updatedReplicas\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/crds/crds/crd-prometheusrules.yaml",
    "content": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: prometheusrules.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: PrometheusRule\n    listKind: PrometheusRuleList\n    plural: prometheusrules\n    shortNames:\n    - promrule\n    singular: prometheusrule\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: PrometheusRule defines recording and alerting rules for a Prometheus\n          instance\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Specification of desired alerting rule definitions for Prometheus.\n            properties:\n              groups:\n                description: Content of Prometheus rule file\n                items:\n                  description: RuleGroup is a list of sequentially evaluated recording\n                    and alerting rules.\n                  properties:\n                    interval:\n                      description: Interval determines how often rules in the group\n                        are evaluated.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    limit:\n                      description: Limit the number of alerts an alerting rule and\n                        series a recording rule can produce. Limit is supported starting\n                        with Prometheus >= 2.31 and Thanos Ruler >= 0.24.\n                      type: integer\n                    name:\n                      description: Name of the rule group.\n                      minLength: 1\n                      type: string\n                    partial_response_strategy:\n                      description: 'PartialResponseStrategy is only used by ThanosRuler\n                        and will be ignored by Prometheus instances. More info: https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response'\n                      pattern: ^(?i)(abort|warn)?$\n                      type: string\n                    rules:\n                      description: List of alerting and recording rules.\n                      items:\n                        description: 'Rule describes an alerting or recording rule\n                          See Prometheus documentation: [alerting](https://www.prometheus.io/docs/prometheus/latest/configuration/alerting_rules/)\n                          or [recording](https://www.prometheus.io/docs/prometheus/latest/configuration/recording_rules/#recording-rules)\n                          rule'\n                        properties:\n                          alert:\n                            description: Name of the alert. Must be a valid label\n                              value. Only one of `record` and `alert` must be set.\n                            type: string\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: Annotations to add to each alert. Only valid\n                              for alerting rules.\n                            type: object\n                          expr:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            description: PromQL expression to evaluate.\n                            x-kubernetes-int-or-string: true\n                          for:\n                            description: Alerts are considered firing once they have\n                              been returned for this long.\n                            pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                            type: string\n                          keep_firing_for:\n                            description: KeepFiringFor defines how long an alert will\n                              continue firing after the condition that triggered it\n                              has cleared.\n                            minLength: 1\n                            pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                            type: string\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: Labels to add or overwrite.\n                            type: object\n                          record:\n                            description: Name of the time series to output to. Must\n                              be a valid metric name. Only one of `record` and `alert`\n                              must be set.\n                            type: string\n                        required:\n                        - expr\n                        type: object\n                      type: array\n                  required:\n                  - name\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - name\n                x-kubernetes-list-type: map\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/crds/crds/crd-scrapeconfigs.yaml",
    "content": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: scrapeconfigs.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: ScrapeConfig\n    listKind: ScrapeConfigList\n    plural: scrapeconfigs\n    shortNames:\n    - scfg\n    singular: scrapeconfig\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: ScrapeConfig defines a namespaced Prometheus scrape_config to\n          be aggregated across multiple namespaces into the Prometheus configuration.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: ScrapeConfigSpec is a specification of the desired configuration\n              for a scrape configuration.\n            properties:\n              authorization:\n                description: Authorization header to use on every scrape request.\n                properties:\n                  credentials:\n                    description: The secret's key that contains the credentials of\n                      the request\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  type:\n                    description: Set the authentication type. Defaults to Bearer,\n                      Basic will cause an error\n                    type: string\n                type: object\n              basicAuth:\n                description: BasicAuth information to use on every scrape request.\n                properties:\n                  password:\n                    description: The secret in the service monitor namespace that\n                      contains the password for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  username:\n                    description: The secret in the service monitor namespace that\n                      contains the username for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                type: object\n              fileSDConfigs:\n                description: FileSDConfigs defines a list of file service discovery\n                  configurations.\n                items:\n                  description: FileSDConfig defines a Prometheus file service discovery\n                    configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config\n                  properties:\n                    files:\n                      description: 'List of files to be used for file discovery. Recommendation:\n                        use absolute paths. While relative paths work, the prometheus-operator\n                        project makes no guarantees about the working directory where\n                        the configuration file is stored. Files must be mounted using\n                        Prometheus.ConfigMaps or Prometheus.Secrets.'\n                      items:\n                        description: SDFile represents a file used for service discovery\n                        pattern: ^[^*]*(\\*[^/]*)?\\.(json|yml|yaml|JSON|YML|YAML)$\n                        type: string\n                      minItems: 1\n                      type: array\n                    refreshInterval:\n                      description: RefreshInterval configures the refresh interval\n                        at which Prometheus will reload the content of the files.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                  required:\n                  - files\n                  type: object\n                type: array\n              honorLabels:\n                description: HonorLabels chooses the metric's labels on collisions\n                  with target labels.\n                type: boolean\n              honorTimestamps:\n                description: HonorTimestamps controls whether Prometheus respects\n                  the timestamps present in scraped data.\n                type: boolean\n              httpSDConfigs:\n                description: HTTPSDConfigs defines a list of HTTP service discovery\n                  configurations.\n                items:\n                  description: HTTPSDConfig defines a prometheus HTTP service discovery\n                    configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config\n                  properties:\n                    authorization:\n                      description: Authorization header configuration to authenticate\n                        against the target HTTP endpoint.\n                      properties:\n                        credentials:\n                          description: The secret's key that contains the credentials\n                            of the request\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: Set the authentication type. Defaults to Bearer,\n                            Basic will cause an error\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: 'BasicAuth information to authenticate against\n                        the target HTTP endpoint. More info: https://prometheus.io/docs/operating/configuration/#endpoints'\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace\n                            that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace\n                            that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    refreshInterval:\n                      description: RefreshInterval configures the refresh interval\n                        at which Prometheus will re-query the endpoint to update the\n                        target list.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    url:\n                      description: URL from which the targets are fetched.\n                      minLength: 1\n                      pattern: ^http(s)?://.+$\n                      type: string\n                  required:\n                  - url\n                  type: object\n                type: array\n              metricsPath:\n                description: MetricsPath HTTP path to scrape for metrics. If empty,\n                  Prometheus uses the default value (e.g. /metrics).\n                type: string\n              relabelings:\n                description: 'RelabelConfigs defines how to rewrite the target''s\n                  labels before scraping. Prometheus Operator automatically adds relabelings\n                  for a few standard Kubernetes fields. The original scrape job''s\n                  name is available via the `__tmp_prometheus_job_name` label. More\n                  info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                items:\n                  description: 'RelabelConfig allows dynamic rewriting of the label\n                    set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section\n                    of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'\n                  properties:\n                    action:\n                      default: replace\n                      description: Action to perform based on regex matching. Default\n                        is 'replace'. uppercase and lowercase actions require Prometheus\n                        >= 2.36.\n                      enum:\n                      - replace\n                      - Replace\n                      - keep\n                      - Keep\n                      - drop\n                      - Drop\n                      - hashmod\n                      - HashMod\n                      - labelmap\n                      - LabelMap\n                      - labeldrop\n                      - LabelDrop\n                      - labelkeep\n                      - LabelKeep\n                      - lowercase\n                      - Lowercase\n                      - uppercase\n                      - Uppercase\n                      - keepequal\n                      - KeepEqual\n                      - dropequal\n                      - DropEqual\n                      type: string\n                    modulus:\n                      description: Modulus to take of the hash of the source label\n                        values.\n                      format: int64\n                      type: integer\n                    regex:\n                      description: Regular expression against which the extracted\n                        value is matched. Default is '(.*)'\n                      type: string\n                    replacement:\n                      description: Replacement value against which a regex replace\n                        is performed if the regular expression matches. Regex capture\n                        groups are available. Default is '$1'\n                      type: string\n                    separator:\n                      description: Separator placed between concatenated source label\n                        values. default is ';'.\n                      type: string\n                    sourceLabels:\n                      description: The source labels select values from existing labels.\n                        Their content is concatenated using the configured separator\n                        and matched against the configured regular expression for\n                        the replace, keep, and drop actions.\n                      items:\n                        description: LabelName is a valid Prometheus label name which\n                          may only contain ASCII letters, numbers, as well as underscores.\n                        pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                        type: string\n                      type: array\n                    targetLabel:\n                      description: Label to which the resulting value is written in\n                        a replace action. It is mandatory for replace actions. Regex\n                        capture groups are available.\n                      type: string\n                  type: object\n                type: array\n              staticConfigs:\n                description: StaticConfigs defines a list of static targets with a\n                  common label set.\n                items:\n                  description: StaticConfig defines a Prometheus static configuration.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\n                  properties:\n                    labels:\n                      additionalProperties:\n                        type: string\n                      description: Labels assigned to all metrics scraped from the\n                        targets.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    targets:\n                      description: List of targets for this static configuration.\n                      items:\n                        description: Target represents a target for Prometheus to\n                          scrape\n                        type: string\n                      type: array\n                  type: object\n                type: array\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/crds/crds/crd-servicemonitors.yaml",
    "content": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: servicemonitors.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: ServiceMonitor\n    listKind: ServiceMonitorList\n    plural: servicemonitors\n    shortNames:\n    - smon\n    singular: servicemonitor\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: ServiceMonitor defines monitoring for a set of services.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Specification of desired Service selection for target discovery\n              by Prometheus.\n            properties:\n              attachMetadata:\n                description: Attaches node metadata to discovered targets. Requires\n                  Prometheus v2.37.0 and above.\n                properties:\n                  node:\n                    description: When set to true, Prometheus must have permissions\n                      to get Nodes.\n                    type: boolean\n                type: object\n              endpoints:\n                description: A list of endpoints allowed as part of this ServiceMonitor.\n                items:\n                  description: Endpoint defines a scrapeable endpoint serving Prometheus\n                    metrics.\n                  properties:\n                    authorization:\n                      description: Authorization section for this endpoint\n                      properties:\n                        credentials:\n                          description: The secret's key that contains the credentials\n                            of the request\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: Set the authentication type. Defaults to Bearer,\n                            Basic will cause an error\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: 'BasicAuth allow an endpoint to authenticate over\n                        basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints'\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace\n                            that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace\n                            that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerTokenFile:\n                      description: File to read bearer token for scraping targets.\n                      type: string\n                    bearerTokenSecret:\n                      description: Secret to mount to read bearer token for scraping\n                        targets. The secret needs to be in the same namespace as the\n                        service monitor and accessible by the Prometheus Operator.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must\n                            be a valid secret key.\n                          type: string\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must\n                            be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    enableHttp2:\n                      description: Whether to enable HTTP2.\n                      type: boolean\n                    filterRunning:\n                      description: 'Drop pods that are not running. (Failed, Succeeded).\n                        Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase'\n                      type: boolean\n                    followRedirects:\n                      description: FollowRedirects configures whether scrape requests\n                        follow HTTP 3xx redirects.\n                      type: boolean\n                    honorLabels:\n                      description: HonorLabels chooses the metric's labels on collisions\n                        with target labels.\n                      type: boolean\n                    honorTimestamps:\n                      description: HonorTimestamps controls whether Prometheus respects\n                        the timestamps present in scraped data.\n                      type: boolean\n                    interval:\n                      description: Interval at which metrics should be scraped If\n                        not specified Prometheus' global scrape interval is used.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    metricRelabelings:\n                      description: MetricRelabelConfigs to apply to samples before\n                        ingestion.\n                      items:\n                        description: 'RelabelConfig allows dynamic rewriting of the\n                          label set, being applied to samples before ingestion. It\n                          defines `<metric_relabel_configs>`-section of Prometheus\n                          configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'\n                        properties:\n                          action:\n                            default: replace\n                            description: Action to perform based on regex matching.\n                              Default is 'replace'. uppercase and lowercase actions\n                              require Prometheus >= 2.36.\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: Modulus to take of the hash of the source\n                              label values.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted\n                              value is matched. Default is '(.*)'\n                            type: string\n                          replacement:\n                            description: Replacement value against which a regex replace\n                              is performed if the regular expression matches. Regex\n                              capture groups are available. Default is '$1'\n                            type: string\n                          separator:\n                            description: Separator placed between concatenated source\n                              label values. default is ';'.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing\n                              labels. Their content is concatenated using the configured\n                              separator and matched against the configured regular\n                              expression for the replace, keep, and drop actions.\n                            items:\n                              description: LabelName is a valid Prometheus label name\n                                which may only contain ASCII letters, numbers, as\n                                well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: Label to which the resulting value is written\n                              in a replace action. It is mandatory for replace actions.\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                    oauth2:\n                      description: OAuth2 for the URL. Only valid in Prometheus versions\n                        2.27.0 and newer.\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2\n                            client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    params:\n                      additionalProperties:\n                        items:\n                          type: string\n                        type: array\n                      description: Optional HTTP URL parameters\n                      type: object\n                    path:\n                      description: HTTP path to scrape for metrics. If empty, Prometheus\n                        uses the default value (e.g. `/metrics`).\n                      type: string\n                    port:\n                      description: Name of the service port this endpoint refers to.\n                        Mutually exclusive with targetPort.\n                      type: string\n                    proxyUrl:\n                      description: ProxyURL eg http://proxyserver:2195 Directs scrapes\n                        to proxy through this endpoint.\n                      type: string\n                    relabelings:\n                      description: 'RelabelConfigs to apply to samples before scraping.\n                        Prometheus Operator automatically adds relabelings for a few\n                        standard Kubernetes fields. The original scrape job''s name\n                        is available via the `__tmp_prometheus_job_name` label. More\n                        info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                      items:\n                        description: 'RelabelConfig allows dynamic rewriting of the\n                          label set, being applied to samples before ingestion. It\n                          defines `<metric_relabel_configs>`-section of Prometheus\n                          configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'\n                        properties:\n                          action:\n                            default: replace\n                            description: Action to perform based on regex matching.\n                              Default is 'replace'. uppercase and lowercase actions\n                              require Prometheus >= 2.36.\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: Modulus to take of the hash of the source\n                              label values.\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted\n                              value is matched. Default is '(.*)'\n                            type: string\n                          replacement:\n                            description: Replacement value against which a regex replace\n                              is performed if the regular expression matches. Regex\n                              capture groups are available. Default is '$1'\n                            type: string\n                          separator:\n                            description: Separator placed between concatenated source\n                              label values. default is ';'.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing\n                              labels. Their content is concatenated using the configured\n                              separator and matched against the configured regular\n                              expression for the replace, keep, and drop actions.\n                            items:\n                              description: LabelName is a valid Prometheus label name\n                                which may only contain ASCII letters, numbers, as\n                                well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: Label to which the resulting value is written\n                              in a replace action. It is mandatory for replace actions.\n                              Regex capture groups are available.\n                            type: string\n                        type: object\n                      type: array\n                    scheme:\n                      description: HTTP scheme to use for scraping. `http` and `https`\n                        are the expected values unless you rewrite the `__scheme__`\n                        label via relabeling. If empty, Prometheus uses the default\n                        value `http`.\n                      enum:\n                      - http\n                      - https\n                      type: string\n                    scrapeTimeout:\n                      description: Timeout after which the scrape is ended If not\n                        specified, the Prometheus global scrape timeout is used unless\n                        it is less than `Interval` in which the latter is used.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    targetPort:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      description: Name or number of the target port of the Pod behind\n                        the Service, the port must be specified with container port\n                        property. Mutually exclusive with port.\n                      x-kubernetes-int-or-string: true\n                    tlsConfig:\n                      description: TLS configuration to use when scraping the endpoint\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server\n                            certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: Path to the CA cert in the Prometheus container\n                            to use for the targets.\n                          type: string\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: Path to the client cert file in the Prometheus\n                            container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: Path to the client key file in the Prometheus\n                            container for the targets.\n                          type: string\n                        keySecret:\n                          description: Secret containing the client key file for the\n                            targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  type: object\n                type: array\n              jobLabel:\n                description: \"JobLabel selects the label from the associated Kubernetes\n                  service which will be used as the `job` label for all metrics. \\n\n                  For example: If in `ServiceMonitor.spec.jobLabel: foo` and in `Service.metadata.labels.foo:\n                  bar`, then the `job=\\\"bar\\\"` label is added to all metrics. \\n If\n                  the value of this field is empty or if the label doesn't exist for\n                  the given Service, the `job` label of the metrics defaults to the\n                  name of the Kubernetes Service.\"\n                type: string\n              labelLimit:\n                description: Per-scrape limit on number of labels that will be accepted\n                  for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: Per-scrape limit on length of labels name that will be\n                  accepted for a sample. Only valid in Prometheus versions 2.27.0\n                  and newer.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: Per-scrape limit on length of labels value that will\n                  be accepted for a sample. Only valid in Prometheus versions 2.27.0\n                  and newer.\n                format: int64\n                type: integer\n              namespaceSelector:\n                description: Selector to select which namespaces the Kubernetes Endpoints\n                  objects are discovered from.\n                properties:\n                  any:\n                    description: Boolean describing whether all namespaces are selected\n                      in contrast to a list restricting them.\n                    type: boolean\n                  matchNames:\n                    description: List of namespace names to select from.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              podTargetLabels:\n                description: PodTargetLabels transfers labels on the Kubernetes `Pod`\n                  onto the created metrics.\n                items:\n                  type: string\n                type: array\n              sampleLimit:\n                description: SampleLimit defines per-scrape limit on number of scraped\n                  samples that will be accepted.\n                format: int64\n                type: integer\n              selector:\n                description: Selector to select Endpoints objects.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              targetLabels:\n                description: TargetLabels transfers labels from the Kubernetes `Service`\n                  onto the created metrics.\n                items:\n                  type: string\n                type: array\n              targetLimit:\n                description: TargetLimit defines a limit on the number of scraped\n                  targets that will be accepted.\n                format: int64\n                type: integer\n            required:\n            - endpoints\n            - selector\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/crds/crds/crd-thanosrulers.yaml",
    "content": "# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: thanosrulers.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: ThanosRuler\n    listKind: ThanosRulerList\n    plural: thanosrulers\n    shortNames:\n    - ruler\n    singular: thanosruler\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Thanos Ruler\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Replicas\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: ThanosRuler defines a ThanosRuler deployment.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: 'Specification of the desired behavior of the ThanosRuler\n              cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              additionalArgs:\n                description: AdditionalArgs allows setting additional arguments for\n                  the ThanosRuler container. It is intended for e.g. activating hidden\n                  flags which are not supported by the dedicated configuration options\n                  yet. The arguments are passed as-is to the ThanosRuler container\n                  which may cause issues if they are invalid or not supported by the\n                  given ThanosRuler version. In case of an argument conflict (e.g.\n                  an argument which is already set by the operator itself) or when\n                  providing an invalid argument the reconciliation will fail and an\n                  error will be logged.\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: Name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: Argument value, e.g. 30s. Can be empty for name-only\n                        arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              affinity:\n                description: If specified, the pod's scheduling constraints.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the\n                      pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node matches\n                          the corresponding matchExpressions; the node(s) with the\n                          highest sum are the most preferred.\n                        items:\n                          description: An empty preferred scheduling term matches\n                            all objects with implicit weight 0 (i.e. it's a no-op).\n                            A null preferred scheduling term matches no objects (i.e.\n                            is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the\n                                corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding\n                                nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to an update), the system may or may not try to\n                          eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms.\n                              The terms are ORed.\n                            items:\n                              description: A null or empty node selector term matches\n                                no objects. The requirements of them are ANDed. The\n                                TopologySelectorTerm type implements a subset of the\n                                NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate\n                      this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to a pod label update), the system may or may\n                          not try to eventually evict the pod from its node. When\n                          there are multiple elements, the lists of nodes corresponding\n                          to each podAffinityTerm are intersected, i.e. all terms\n                          must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g.\n                      avoid putting this pod in the same node, zone, etc. as some\n                      other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the anti-affinity expressions specified\n                          by this field, but it may choose a node that violates one\n                          or more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling anti-affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the anti-affinity requirements specified by\n                          this field are not met at scheduling time, the pod will\n                          not be scheduled onto the node. If the anti-affinity requirements\n                          specified by this field cease to be met at some point during\n                          pod execution (e.g. due to a pod label update), the system\n                          may or may not try to eventually evict the pod from its\n                          node. When there are multiple elements, the lists of nodes\n                          corresponding to each podAffinityTerm are intersected, i.e.\n                          all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                type: object\n              alertDropLabels:\n                description: AlertDropLabels configure the label names which should\n                  be dropped in ThanosRuler alerts. The replica label `thanos_ruler_replica`\n                  will always be dropped in alerts.\n                items:\n                  type: string\n                type: array\n              alertQueryUrl:\n                description: The external Query URL the Thanos Ruler will set in the\n                  'Source' field of all alerts. Maps to the '--alert.query-url' CLI\n                  arg.\n                type: string\n              alertRelabelConfigFile:\n                description: AlertRelabelConfigFile specifies the path of the alert\n                  relabeling configuration file. When used alongside with AlertRelabelConfigs,\n                  alertRelabelConfigFile takes precedence.\n                type: string\n              alertRelabelConfigs:\n                description: 'AlertRelabelConfigs configures alert relabeling in ThanosRuler.\n                  Alert relabel configurations must have the form as specified in\n                  the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\n                  Alternative to AlertRelabelConfigFile, and lower order priority.'\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagersConfig:\n                description: Define configuration for connecting to alertmanager.  Only\n                  available with thanos v0.10.0 and higher.  Maps to the `alertmanagers.config`\n                  arg.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagersUrl:\n                description: 'Define URLs to send alerts to Alertmanager.  For Thanos\n                  v0.10.0 and higher, AlertManagersConfig should be used instead.  Note:\n                  this field will be ignored if AlertManagersConfig is specified.\n                  Maps to the `alertmanagers.url` arg.'\n                items:\n                  type: string\n                type: array\n              containers:\n                description: 'Containers allows injecting additional containers or\n                  modifying operator generated containers. This can be used to allow\n                  adding an authentication proxy to a ThanosRuler pod or to change\n                  the behavior of an operator generated container. Containers described\n                  here modify an operator generated container if they share the same\n                  name and modifications are done via a strategic merge patch. The\n                  current container names are: `thanos-ruler` and `config-reloader`.\n                  Overriding containers is entirely outside the scope of what the\n                  maintainers will support and by doing so, you accept that this behaviour\n                  may break at any time without notice.'\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              enforcedNamespaceLabel:\n                description: EnforcedNamespaceLabel enforces adding a namespace label\n                  of origin for each alert and metric that is user created. The label\n                  value will always be the namespace of the object that is being created.\n                type: string\n              evaluationInterval:\n                default: 15s\n                description: Interval between consecutive evaluations.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              excludedFromEnforcement:\n                description: List of references to PrometheusRule objects to be excluded\n                  from enforcing a namespace label of origin. Applies only if enforcedNamespaceLabel\n                  set to true.\n                items:\n                  description: ObjectReference references a PodMonitor, ServiceMonitor,\n                    Probe or PrometheusRule object.\n                  properties:\n                    group:\n                      default: monitoring.coreos.com\n                      description: Group of the referent. When not specified, it defaults\n                        to `monitoring.coreos.com`\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: Name of the referent. When not set, all resources\n                        in the namespace are matched.\n                      type: string\n                    namespace:\n                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: Resource of the referent.\n                      enum:\n                      - prometheusrules\n                      - servicemonitors\n                      - podmonitors\n                      - probes\n                      type: string\n                  required:\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n              externalPrefix:\n                description: The external URL the Thanos Ruler instances will be available\n                  under. This is necessary to generate correct URLs. This is necessary\n                  if Thanos Ruler is not served from root of a DNS name.\n                type: string\n              grpcServerTlsConfig:\n                description: 'GRPCServerTLSConfig configures the gRPC server from\n                  which Thanos Querier reads recorded rule data. Note: Currently only\n                  the CAFile, CertFile, and KeyFile fields are supported. Maps to\n                  the ''--grpc-server-tls-*'' CLI args.'\n                properties:\n                  ca:\n                    description: Certificate authority used when verifying server\n                      certificates.\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key\n                              must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  caFile:\n                    description: Path to the CA cert in the Prometheus container to\n                      use for the targets.\n                    type: string\n                  cert:\n                    description: Client certificate to present when doing client-authentication.\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key\n                              must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  certFile:\n                    description: Path to the client cert file in the Prometheus container\n                      for the targets.\n                    type: string\n                  insecureSkipVerify:\n                    description: Disable target certificate validation.\n                    type: boolean\n                  keyFile:\n                    description: Path to the client key file in the Prometheus container\n                      for the targets.\n                    type: string\n                  keySecret:\n                    description: Secret containing the client key file for the targets.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  serverName:\n                    description: Used to verify the hostname for the targets.\n                    type: string\n                type: object\n              hostAliases:\n                description: Pods' hostAliases configuration\n                items:\n                  description: HostAlias holds the mapping between IP and hostnames\n                    that will be injected as an entry in the pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: Hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              image:\n                description: Thanos container image URL.\n                type: string\n              imagePullPolicy:\n                description: Image pull policy for the 'thanos', 'init-config-reloader'\n                  and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\n                  for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: An optional list of references to secrets in the same\n                  namespace to use for pulling thanos images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: LocalObjectReference contains enough information to\n                    let you locate the referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        TODO: Add other useful fields. apiVersion, kind, uid?'\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: 'InitContainers allows adding initContainers to the pod\n                  definition. Those can be used to e.g. fetch secrets for injection\n                  into the ThanosRuler configuration from external sources. Any errors\n                  during the execution of an initContainer will lead to a restart\n                  of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n                  Using initContainers for any use case other then secret fetching\n                  is entirely outside the scope of what the maintainers will support\n                  and by doing so, you accept that this behaviour may break at any\n                  time without notice.'\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              labels:\n                additionalProperties:\n                  type: string\n                description: Labels configure the external label pairs to ThanosRuler.\n                  A default replica label `thanos_ruler_replica` will be always added  as\n                  a label with the value of the pod's name and it will be dropped\n                  in the alerts.\n                type: object\n              listenLocal:\n                description: ListenLocal makes the Thanos ruler listen on loopback,\n                  so that it does not bind against the Pod IP.\n                type: boolean\n              logFormat:\n                description: Log format for ThanosRuler to be configured with.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: Log level for ThanosRuler to be configured with.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: Minimum number of seconds for which a newly created pod\n                  should be ready without any of its container crashing for it to\n                  be considered available. Defaults to 0 (pod will be considered available\n                  as soon as it is ready) This is an alpha field from kubernetes 1.22\n                  until 1.24 which requires enabling the StatefulSetMinReadySeconds\n                  feature gate.\n                format: int32\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: Define which Nodes the Pods are scheduled on.\n                type: object\n              objectStorageConfig:\n                description: ObjectStorageConfig configures object storage in Thanos.\n                  Alternative to ObjectStorageConfigFile, and lower order priority.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              objectStorageConfigFile:\n                description: ObjectStorageConfigFile specifies the path of the object\n                  storage configuration file. When used alongside with ObjectStorageConfig,\n                  ObjectStorageConfigFile takes precedence.\n                type: string\n              paused:\n                description: When a ThanosRuler deployment is paused, no actions except\n                  for deletion will be performed on the underlying objects.\n                type: boolean\n              podMetadata:\n                description: PodMetadata contains Labels and Annotations gets propagated\n                  to the thanos ruler pods.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: 'Annotations is an unstructured key value map stored\n                      with a resource that may be set by external tools to store and\n                      retrieve arbitrary metadata. They are not queryable and should\n                      be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: 'Map of string keys and values that can be used to\n                      organize and categorize (scope and select) objects. May match\n                      selectors of replication controllers and services. More info:\n                      http://kubernetes.io/docs/user-guide/labels'\n                    type: object\n                  name:\n                    description: 'Name must be unique within a namespace. Is required\n                      when creating resources, although some resources may allow a\n                      client to request the generation of an appropriate name automatically.\n                      Name is primarily intended for creation idempotence and configuration\n                      definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                    type: string\n                type: object\n              portName:\n                default: web\n                description: Port name used for the pods and governing service. Defaults\n                  to `web`.\n                type: string\n              priorityClassName:\n                description: Priority class assigned to the Pods\n                type: string\n              prometheusRulesExcludedFromEnforce:\n                description: 'PrometheusRulesExcludedFromEnforce - list of Prometheus\n                  rules to be excluded from enforcing of adding namespace labels.\n                  Works only if enforcedNamespaceLabel set to true. Make sure both\n                  ruleNamespace and ruleName are set for each pair Deprecated: use\n                  excludedFromEnforcement instead.'\n                items:\n                  description: PrometheusRuleExcludeConfig enables users to configure\n                    excluded PrometheusRule names and their namespaces to be ignored\n                    while enforcing namespace label for alerts and metrics.\n                  properties:\n                    ruleName:\n                      description: Name of the excluded PrometheusRule object.\n                      type: string\n                    ruleNamespace:\n                      description: Namespace of the excluded PrometheusRule object.\n                      type: string\n                  required:\n                  - ruleName\n                  - ruleNamespace\n                  type: object\n                type: array\n              queryConfig:\n                description: Define configuration for connecting to thanos query instances.\n                  If this is defined, the QueryEndpoints field will be ignored. Maps\n                  to the `query.config` CLI argument. Only available with thanos v0.11.0\n                  and higher.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              queryEndpoints:\n                description: QueryEndpoints defines Thanos querier endpoints from\n                  which to query metrics. Maps to the --query flag of thanos ruler.\n                items:\n                  type: string\n                type: array\n              replicas:\n                description: Number of thanos ruler instances to deploy.\n                format: int32\n                type: integer\n              resources:\n                description: Resources defines the resource requirements for single\n                  Pods. If not provided, no requests/limits will be set\n                properties:\n                  claims:\n                    description: \"Claims lists the names of resources, defined in\n                      spec.resourceClaims, that are used by this container. \\n This\n                      is an alpha field and requires enabling the DynamicResourceAllocation\n                      feature gate. \\n This field is immutable. It can only be set\n                      for containers.\"\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: Name must match the name of one entry in pod.spec.resourceClaims\n                            of the Pod where this field is used. It makes that resource\n                            available inside a container.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Limits describes the maximum amount of compute resources\n                      allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Requests describes the minimum amount of compute\n                      resources required. If Requests is omitted for a container,\n                      it defaults to Limits if that is explicitly specified, otherwise\n                      to an implementation-defined value. Requests cannot exceed Limits.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                type: object\n              retention:\n                default: 24h\n                description: Time duration ThanosRuler shall retain data for. Default\n                  is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)`\n                  (milliseconds seconds minutes hours days weeks years).\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              routePrefix:\n                description: The route prefix ThanosRuler registers HTTP handlers\n                  for. This allows thanos UI to be served on a sub-path.\n                type: string\n              ruleNamespaceSelector:\n                description: Namespaces to be selected for Rules discovery. If unspecified,\n                  only the same namespace as the ThanosRuler object is in is used.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              ruleSelector:\n                description: A label selector to select which PrometheusRules to mount\n                  for alerting and recording.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              securityContext:\n                description: SecurityContext holds pod-level security attributes and\n                  common container settings. This defaults to the default PodSecurityContext.\n                properties:\n                  fsGroup:\n                    description: \"A special supplemental group that applies to all\n                      containers in a pod. Some volume types allow the Kubelet to\n                      change the ownership of that volume to be owned by the pod:\n                      \\n 1. The owning GID will be the FSGroup 2. The setgid bit is\n                      set (new files created in the volume will be owned by FSGroup)\n                      3. The permission bits are OR'd with rw-rw---- \\n If unset,\n                      the Kubelet will not modify the ownership and permissions of\n                      any volume. Note that this field cannot be set when spec.os.name\n                      is windows.\"\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: 'fsGroupChangePolicy defines behavior of changing\n                      ownership and permission of the volume before being exposed\n                      inside Pod. This field will only apply to volume types which\n                      support fsGroup based ownership(and permissions). It will have\n                      no effect on ephemeral volume types such as: secret, configmaps\n                      and emptydir. Valid values are \"OnRootMismatch\" and \"Always\".\n                      If not specified, \"Always\" is used. Note that this field cannot\n                      be set when spec.os.name is windows.'\n                    type: string\n                  runAsGroup:\n                    description: The GID to run the entrypoint of the container process.\n                      Uses runtime default if unset. May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: Indicates that the container must run as a non-root\n                      user. If true, the Kubelet will validate the image at runtime\n                      to ensure that it does not run as UID 0 (root) and fail to start\n                      the container if it does. If unset or false, no such validation\n                      will be performed. May also be set in SecurityContext.  If set\n                      in both SecurityContext and PodSecurityContext, the value specified\n                      in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: The UID to run the entrypoint of the container process.\n                      Defaults to user specified in image metadata if unspecified.\n                      May also be set in SecurityContext.  If set in both SecurityContext\n                      and PodSecurityContext, the value specified in SecurityContext\n                      takes precedence for that container. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxOptions:\n                    description: The SELinux context to be applied to all containers.\n                      If unspecified, the container runtime will allocate a random\n                      SELinux context for each container.  May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to\n                          the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to\n                          the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to\n                          the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to\n                          the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: The seccomp options to use by the containers in this\n                      pod. Note that this field cannot be set when spec.os.name is\n                      windows.\n                    properties:\n                      localhostProfile:\n                        description: localhostProfile indicates a profile defined\n                          in a file on the node should be used. The profile must be\n                          preconfigured on the node to work. Must be a descending\n                          path, relative to the kubelet's configured seccomp profile\n                          location. Must only be set if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: \"type indicates which kind of seccomp profile\n                          will be applied. Valid options are: \\n Localhost - a profile\n                          defined in a file on the node should be used. RuntimeDefault\n                          - the container runtime default profile should be used.\n                          Unconfined - no profile should be applied.\"\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: A list of groups applied to the first process run\n                      in each container, in addition to the container's primary GID,\n                      the fsGroup (if specified), and group memberships defined in\n                      the container image for the uid of the container process. If\n                      unspecified, no additional groups are added to any container.\n                      Note that group memberships defined in the container image for\n                      the uid of the container process are still effective, even if\n                      they are not included in this list. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                  sysctls:\n                    description: Sysctls hold a list of namespaced sysctls used for\n                      the pod. Pods with unsupported sysctls (by the container runtime)\n                      might fail to launch. Note that this field cannot be set when\n                      spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                  windowsOptions:\n                    description: The Windows specific settings applied to all containers.\n                      If unspecified, the options within a container's SecurityContext\n                      will be used. If set in both SecurityContext and PodSecurityContext,\n                      the value specified in SecurityContext takes precedence. Note\n                      that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: GMSACredentialSpec is where the GMSA admission\n                          webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                          inlines the contents of the GMSA credential spec named by\n                          the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA\n                          credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: HostProcess determines if a container should\n                          be run as a 'Host Process' container. This field is alpha-level\n                          and will only be honored by components that enable the WindowsHostProcessContainers\n                          feature flag. Setting this field without the feature flag\n                          will result in errors when validating the Pod. All of a\n                          Pod's containers must have the same effective HostProcess\n                          value (it is not allowed to have a mix of HostProcess containers\n                          and non-HostProcess containers).  In addition, if HostProcess\n                          is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: The UserName in Windows to run the entrypoint\n                          of the container process. Defaults to the user specified\n                          in image metadata if unspecified. May also be set in PodSecurityContext.\n                          If set in both SecurityContext and PodSecurityContext, the\n                          value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: ServiceAccountName is the name of the ServiceAccount\n                  to use to run the Thanos Ruler Pods.\n                type: string\n              storage:\n                description: Storage spec to specify how storage shall be used.\n                properties:\n                  disableMountSubPath:\n                    description: '*Deprecated: subPath usage will be removed in a\n                      future release.*'\n                    type: boolean\n                  emptyDir:\n                    description: 'EmptyDirVolumeSource to be used by the StatefulSet.\n                      If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`.\n                      More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir'\n                    properties:\n                      medium:\n                        description: 'medium represents what type of storage medium\n                          should back this directory. The default is \"\" which means\n                          to use the node''s default medium. Must be an empty string\n                          (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: 'sizeLimit is the total amount of local storage\n                          required for this EmptyDir volume. The size limit is also\n                          applicable for memory medium. The maximum usage on memory\n                          medium EmptyDir would be the minimum value between the SizeLimit\n                          specified here and the sum of memory limits of all containers\n                          in a pod. The default is nil which means that the limit\n                          is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: 'EphemeralVolumeSource to be used by the StatefulSet.\n                      This is a beta field in k8s 1.21 and GA in 1.15. For lower versions,\n                      starting with k8s 1.19, it requires enabling the GenericEphemeralVolume\n                      feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes'\n                    properties:\n                      volumeClaimTemplate:\n                        description: \"Will be used to create a stand-alone PVC to\n                          provision the volume. The pod in which this EphemeralVolumeSource\n                          is embedded will be the owner of the PVC, i.e. the PVC will\n                          be deleted together with the pod.  The name of the PVC will\n                          be `<pod name>-<volume name>` where `<volume name>` is the\n                          name from the `PodSpec.Volumes` array entry. Pod validation\n                          will reject the pod if the concatenated name is not valid\n                          for a PVC (for example, too long). \\n An existing PVC with\n                          that name that is not owned by the pod will *not* be used\n                          for the pod to avoid using an unrelated volume by mistake.\n                          Starting the pod is then blocked until the unrelated PVC\n                          is removed. If such a pre-created PVC is meant to be used\n                          by the pod, the PVC has to updated with an owner reference\n                          to the pod once the pod exists. Normally this should not\n                          be necessary, but it may be useful when manually reconstructing\n                          a broken cluster. \\n This field is read-only and no changes\n                          will be made by Kubernetes to the PVC after it has been\n                          created. \\n Required, must not be nil.\"\n                        properties:\n                          metadata:\n                            description: May contain labels and annotations that will\n                              be copied into the PVC when creating it. No other fields\n                              are allowed and will be rejected during validation.\n                            type: object\n                          spec:\n                            description: The specification for the PersistentVolumeClaim.\n                              The entire content is copied unchanged into the PVC\n                              that gets created from this template. The same fields\n                              as in a PersistentVolumeClaim are also valid here.\n                            properties:\n                              accessModes:\n                                description: 'accessModes contains the desired access\n                                  modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                items:\n                                  type: string\n                                type: array\n                              dataSource:\n                                description: 'dataSource field can be used to specify\n                                  either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                  * An existing PVC (PersistentVolumeClaim) If the\n                                  provisioner or an external controller can support\n                                  the specified data source, it will create a new\n                                  volume based on the contents of the specified data\n                                  source. When the AnyVolumeDataSource feature gate\n                                  is enabled, dataSource contents will be copied to\n                                  dataSourceRef, and dataSourceRef contents will be\n                                  copied to dataSource when dataSourceRef.namespace\n                                  is not specified. If the namespace is specified,\n                                  then dataSourceRef will not be copied to dataSource.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: 'dataSourceRef specifies the object from\n                                  which to populate the volume with data, if a non-empty\n                                  volume is desired. This may be any object from a\n                                  non-empty API group (non core object) or a PersistentVolumeClaim\n                                  object. When this field is specified, volume binding\n                                  will only succeed if the type of the specified object\n                                  matches some installed volume populator or dynamic\n                                  provisioner. This field will replace the functionality\n                                  of the dataSource field and as such if both fields\n                                  are non-empty, they must have the same value. For\n                                  backwards compatibility, when namespace isn''t specified\n                                  in dataSourceRef, both fields (dataSource and dataSourceRef)\n                                  will be set to the same value automatically if one\n                                  of them is empty and the other is non-empty. When\n                                  namespace is specified in dataSourceRef, dataSource\n                                  isn''t set to the same value and must be empty.\n                                  There are three important differences between dataSource\n                                  and dataSourceRef: * While dataSource only allows\n                                  two specific types of objects, dataSourceRef allows\n                                  any non-core object, as well as PersistentVolumeClaim\n                                  objects. * While dataSource ignores disallowed values\n                                  (dropping them), dataSourceRef preserves all values,\n                                  and generates an error if a disallowed value is\n                                  specified. * While dataSource only allows local\n                                  objects, dataSourceRef allows objects in any namespaces.\n                                  (Beta) Using this field requires the AnyVolumeDataSource\n                                  feature gate to be enabled. (Alpha) Using the namespace\n                                  field of dataSourceRef requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                  namespace:\n                                    description: Namespace is the namespace of resource\n                                      being referenced Note that when a namespace\n                                      is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                      object is required in the referent namespace\n                                      to allow that namespace's owner to accept the\n                                      reference. See the ReferenceGrant documentation\n                                      for details. (Alpha) This field requires the\n                                      CrossNamespaceVolumeDataSource feature gate\n                                      to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: 'resources represents the minimum resources\n                                  the volume should have. If RecoverVolumeExpansionFailure\n                                  feature is enabled users are allowed to specify\n                                  resource requirements that are lower than previous\n                                  value but must still be higher than capacity recorded\n                                  in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                properties:\n                                  claims:\n                                    description: \"Claims lists the names of resources,\n                                      defined in spec.resourceClaims, that are used\n                                      by this container. \\n This is an alpha field\n                                      and requires enabling the DynamicResourceAllocation\n                                      feature gate. \\n This field is immutable. It\n                                      can only be set for containers.\"\n                                    items:\n                                      description: ResourceClaim references one entry\n                                        in PodSpec.ResourceClaims.\n                                      properties:\n                                        name:\n                                          description: Name must match the name of\n                                            one entry in pod.spec.resourceClaims of\n                                            the Pod where this field is used. It makes\n                                            that resource available inside a container.\n                                          type: string\n                                      required:\n                                      - name\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-map-keys:\n                                    - name\n                                    x-kubernetes-list-type: map\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Limits describes the maximum amount\n                                      of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Requests describes the minimum amount\n                                      of compute resources required. If Requests is\n                                      omitted for a container, it defaults to Limits\n                                      if that is explicitly specified, otherwise to\n                                      an implementation-defined value. Requests cannot\n                                      exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes\n                                  to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label\n                                      selector requirements. The requirements are\n                                      ANDed.\n                                    items:\n                                      description: A label selector requirement is\n                                        a selector that contains values, a key, and\n                                        an operator that relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the\n                                            selector applies to.\n                                          type: string\n                                        operator:\n                                          description: operator represents a key's\n                                            relationship to a set of values. Valid\n                                            operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: values is an array of string\n                                            values. If the operator is In or NotIn,\n                                            the values array must be non-empty. If\n                                            the operator is Exists or DoesNotExist,\n                                            the values array must be empty. This array\n                                            is replaced during a strategic merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: matchLabels is a map of {key,value}\n                                      pairs. A single {key,value} in the matchLabels\n                                      map is equivalent to an element of matchExpressions,\n                                      whose key field is \"key\", the operator is \"In\",\n                                      and the values array contains only \"value\".\n                                      The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: 'storageClassName is the name of the\n                                  StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                type: string\n                              volumeMode:\n                                description: volumeMode defines what type of volume\n                                  is required by the claim. Value of Filesystem is\n                                  implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to\n                                  the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: Defines the PVC spec to be used by the Prometheus\n                      StatefulSets. The easiest way to use a volume that cannot be\n                      automatically provisioned is to use a label selector alongside\n                      manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: 'APIVersion defines the versioned schema of this\n                          representation of an object. Servers should convert recognized\n                          schemas to the latest internal value, and may reject unrecognized\n                          values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n                        type: string\n                      kind:\n                        description: 'Kind is a string value representing the REST\n                          resource this object represents. Servers may infer this\n                          from the endpoint the client submits requests to. Cannot\n                          be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                        type: string\n                      metadata:\n                        description: EmbeddedMetadata contains metadata relevant to\n                          an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: 'Annotations is an unstructured key value\n                              map stored with a resource that may be set by external\n                              tools to store and retrieve arbitrary metadata. They\n                              are not queryable and should be preserved when modifying\n                              objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: 'Map of string keys and values that can be\n                              used to organize and categorize (scope and select) objects.\n                              May match selectors of replication controllers and services.\n                              More info: http://kubernetes.io/docs/user-guide/labels'\n                            type: object\n                          name:\n                            description: 'Name must be unique within a namespace.\n                              Is required when creating resources, although some resources\n                              may allow a client to request the generation of an appropriate\n                              name automatically. Name is primarily intended for creation\n                              idempotence and configuration definition. Cannot be\n                              updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                            type: string\n                        type: object\n                      spec:\n                        description: 'Defines the desired characteristics of a volume\n                          requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the desired access\n                              modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          dataSource:\n                            description: 'dataSource field can be used to specify\n                              either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                              * An existing PVC (PersistentVolumeClaim) If the provisioner\n                              or an external controller can support the specified\n                              data source, it will create a new volume based on the\n                              contents of the specified data source. When the AnyVolumeDataSource\n                              feature gate is enabled, dataSource contents will be\n                              copied to dataSourceRef, and dataSourceRef contents\n                              will be copied to dataSource when dataSourceRef.namespace\n                              is not specified. If the namespace is specified, then\n                              dataSourceRef will not be copied to dataSource.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: 'dataSourceRef specifies the object from\n                              which to populate the volume with data, if a non-empty\n                              volume is desired. This may be any object from a non-empty\n                              API group (non core object) or a PersistentVolumeClaim\n                              object. When this field is specified, volume binding\n                              will only succeed if the type of the specified object\n                              matches some installed volume populator or dynamic provisioner.\n                              This field will replace the functionality of the dataSource\n                              field and as such if both fields are non-empty, they\n                              must have the same value. For backwards compatibility,\n                              when namespace isn''t specified in dataSourceRef, both\n                              fields (dataSource and dataSourceRef) will be set to\n                              the same value automatically if one of them is empty\n                              and the other is non-empty. When namespace is specified\n                              in dataSourceRef, dataSource isn''t set to the same\n                              value and must be empty. There are three important differences\n                              between dataSource and dataSourceRef: * While dataSource\n                              only allows two specific types of objects, dataSourceRef\n                              allows any non-core object, as well as PersistentVolumeClaim\n                              objects. * While dataSource ignores disallowed values\n                              (dropping them), dataSourceRef preserves all values,\n                              and generates an error if a disallowed value is specified.\n                              * While dataSource only allows local objects, dataSourceRef\n                              allows objects in any namespaces. (Beta) Using this\n                              field requires the AnyVolumeDataSource feature gate\n                              to be enabled. (Alpha) Using the namespace field of\n                              dataSourceRef requires the CrossNamespaceVolumeDataSource\n                              feature gate to be enabled.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: Namespace is the namespace of resource\n                                  being referenced Note that when a namespace is specified,\n                                  a gateway.networking.k8s.io/ReferenceGrant object\n                                  is required in the referent namespace to allow that\n                                  namespace's owner to accept the reference. See the\n                                  ReferenceGrant documentation for details. (Alpha)\n                                  This field requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: 'resources represents the minimum resources\n                              the volume should have. If RecoverVolumeExpansionFailure\n                              feature is enabled users are allowed to specify resource\n                              requirements that are lower than previous value but\n                              must still be higher than capacity recorded in the status\n                              field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                            properties:\n                              claims:\n                                description: \"Claims lists the names of resources,\n                                  defined in spec.resourceClaims, that are used by\n                                  this container. \\n This is an alpha field and requires\n                                  enabling the DynamicResourceAllocation feature gate.\n                                  \\n This field is immutable. It can only be set for\n                                  containers.\"\n                                items:\n                                  description: ResourceClaim references one entry\n                                    in PodSpec.ResourceClaims.\n                                  properties:\n                                    name:\n                                      description: Name must match the name of one\n                                        entry in pod.spec.resourceClaims of the Pod\n                                        where this field is used. It makes that resource\n                                        available inside a container.\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                type: array\n                                x-kubernetes-list-map-keys:\n                                - name\n                                x-kubernetes-list-type: map\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Limits describes the maximum amount\n                                  of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Requests describes the minimum amount\n                                  of compute resources required. If Requests is omitted\n                                  for a container, it defaults to Limits if that is\n                                  explicitly specified, otherwise to an implementation-defined\n                                  value. Requests cannot exceed Limits. More info:\n                                  https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to\n                              consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector\n                                  requirements. The requirements are ANDed.\n                                items:\n                                  description: A label selector requirement is a selector\n                                    that contains values, a key, and an operator that\n                                    relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector\n                                        applies to.\n                                      type: string\n                                    operator:\n                                      description: operator represents a key's relationship\n                                        to a set of values. Valid operators are In,\n                                        NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: values is an array of string values.\n                                        If the operator is In or NotIn, the values\n                                        array must be non-empty. If the operator is\n                                        Exists or DoesNotExist, the values array must\n                                        be empty. This array is replaced during a\n                                        strategic merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: matchLabels is a map of {key,value} pairs.\n                                  A single {key,value} in the matchLabels map is equivalent\n                                  to an element of matchExpressions, whose key field\n                                  is \"key\", the operator is \"In\", and the values array\n                                  contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: 'storageClassName is the name of the StorageClass\n                              required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                            type: string\n                          volumeMode:\n                            description: volumeMode defines what type of volume is\n                              required by the claim. Value of Filesystem is implied\n                              when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the\n                              PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: '*Deprecated: this field is never set.*'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the actual access modes\n                              the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: allocatedResources is the storage resource\n                              within AllocatedResources tracks the capacity allocated\n                              to a PVC. It may be larger than the actual capacity\n                              when a volume expansion operation is requested. For\n                              storage quota, the larger value from allocatedResources\n                              and PVC.spec.resources is used. If allocatedResources\n                              is not set, PVC.spec.resources alone is used for quota\n                              calculation. If a volume expansion capacity request\n                              is lowered, allocatedResources is only lowered if there\n                              are no expansion operations in progress and if the actual\n                              volume capacity is equal or lower than the requested\n                              capacity. This is an alpha field and requires enabling\n                              RecoverVolumeExpansionFailure feature.\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources\n                              of the underlying volume.\n                            type: object\n                          conditions:\n                            description: conditions is the current Condition of persistent\n                              volume claim. If underlying persistent volume is being\n                              resized then the Condition will be set to 'ResizeStarted'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains\n                                details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed\n                                    the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the\n                                    condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message\n                                    indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: reason is a unique, this should be\n                                    a short, machine understandable string that gives\n                                    the reason for condition's last transition. If\n                                    it reports \"ResizeStarted\" that means the underlying\n                                    persistent volume is being resized.\n                                  type: string\n                                status:\n                                  type: string\n                                type:\n                                  description: PersistentVolumeClaimConditionType\n                                    is a valid value of PersistentVolumeClaimCondition.Type\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                          resizeStatus:\n                            description: resizeStatus stores status of resize operation.\n                              ResizeStatus is not set by default but when expansion\n                              is complete resizeStatus is set to empty string by resize\n                              controller or kubelet. This is an alpha field and requires\n                              enabling RecoverVolumeExpansionFailure feature.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tolerations:\n                description: If specified, the pod's tolerations.\n                items:\n                  description: The pod this Toleration is attached to tolerates any\n                    taint that matches the triple <key,value,effect> using the matching\n                    operator <operator>.\n                  properties:\n                    effect:\n                      description: Effect indicates the taint effect to match. Empty\n                        means match all taint effects. When specified, allowed values\n                        are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: Key is the taint key that the toleration applies\n                        to. Empty means match all taint keys. If the key is empty,\n                        operator must be Exists; this combination means to match all\n                        values and all keys.\n                      type: string\n                    operator:\n                      description: Operator represents a key's relationship to the\n                        value. Valid operators are Exists and Equal. Defaults to Equal.\n                        Exists is equivalent to wildcard for value, so that a pod\n                        can tolerate all taints of a particular category.\n                      type: string\n                    tolerationSeconds:\n                      description: TolerationSeconds represents the period of time\n                        the toleration (which must be of effect NoExecute, otherwise\n                        this field is ignored) tolerates the taint. By default, it\n                        is not set, which means tolerate the taint forever (do not\n                        evict). Zero and negative values will be treated as 0 (evict\n                        immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: Value is the taint value the toleration matches\n                        to. If the operator is Exists, the value should be empty,\n                        otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: If specified, the pod's topology spread constraints.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching\n                    pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: LabelSelector is used to find matching pods. Pods\n                        that match this label selector are counted to determine the\n                        number of pods in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector\n                            requirements. The requirements are ANDed.\n                          items:\n                            description: A label selector requirement is a selector\n                              that contains values, a key, and an operator that relates\n                              the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector\n                                  applies to.\n                                type: string\n                              operator:\n                                description: operator represents a key's relationship\n                                  to a set of values. Valid operators are In, NotIn,\n                                  Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: values is an array of string values.\n                                  If the operator is In or NotIn, the values array\n                                  must be non-empty. If the operator is Exists or\n                                  DoesNotExist, the values array must be empty. This\n                                  array is replaced during a strategic merge patch.\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: matchLabels is a map of {key,value} pairs.\n                            A single {key,value} in the matchLabels map is equivalent\n                            to an element of matchExpressions, whose key field is\n                            \"key\", the operator is \"In\", and the values array contains\n                            only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: \"MatchLabelKeys is a set of pod label keys to select\n                        the pods over which spreading will be calculated. The keys\n                        are used to lookup values from the incoming pod labels, those\n                        key-value labels are ANDed with labelSelector to select the\n                        group of existing pods over which spreading will be calculated\n                        for the incoming pod. The same key is forbidden to exist in\n                        both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot\n                        be set when LabelSelector isn't set. Keys that don't exist\n                        in the incoming pod labels will be ignored. A null or empty\n                        list means only match against labelSelector. \\n This is a\n                        beta field and requires the MatchLabelKeysInPodTopologySpread\n                        feature gate to be enabled (enabled by default).\"\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: 'MaxSkew describes the degree to which pods may\n                        be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,\n                        it is the maximum permitted difference between the number\n                        of matching pods in the target topology and the global minimum.\n                        The global minimum is the minimum number of matching pods\n                        in an eligible domain or zero if the number of eligible domains\n                        is less than MinDomains. For example, in a 3-zone cluster,\n                        MaxSkew is set to 1, and pods with the same labelSelector\n                        spread as 2/2/1: In this case, the global minimum is 1. |\n                        zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew\n                        is 1, incoming pod can only be scheduled to zone3 to become\n                        2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1)\n                        on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming\n                        pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`,\n                        it is used to give higher precedence to topologies that satisfy\n                        it. It''s a required field. Default value is 1 and 0 is not\n                        allowed.'\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: \"MinDomains indicates a minimum number of eligible\n                        domains. When the number of eligible domains with matching\n                        topology keys is less than minDomains, Pod Topology Spread\n                        treats \\\"global minimum\\\" as 0, and then the calculation of\n                        Skew is performed. And when the number of eligible domains\n                        with matching topology keys equals or greater than minDomains,\n                        this value has no effect on scheduling. As a result, when\n                        the number of eligible domains is less than minDomains, scheduler\n                        won't schedule more than maxSkew Pods to those domains. If\n                        value is nil, the constraint behaves as if MinDomains is equal\n                        to 1. Valid values are integers greater than 0. When value\n                        is not nil, WhenUnsatisfiable must be DoNotSchedule. \\n For\n                        example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains\n                        is set to 5 and pods with the same labelSelector spread as\n                        2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  |\n                        The number of domains is less than 5(MinDomains), so \\\"global\n                        minimum\\\" is treated as 0. In this situation, new pod with\n                        the same labelSelector cannot be scheduled, because computed\n                        skew will be 3(3 - 0) if new Pod is scheduled to any of the\n                        three zones, it will violate MaxSkew. \\n This is a beta field\n                        and requires the MinDomainsInPodTopologySpread feature gate\n                        to be enabled (enabled by default).\"\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: \"NodeAffinityPolicy indicates how we will treat\n                        Pod's nodeAffinity/nodeSelector when calculating pod topology\n                        spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector\n                        are included in the calculations. - Ignore: nodeAffinity/nodeSelector\n                        are ignored. All nodes are included in the calculations. \\n\n                        If this value is nil, the behavior is equivalent to the Honor\n                        policy. This is a beta-level feature default enabled by the\n                        NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    nodeTaintsPolicy:\n                      description: \"NodeTaintsPolicy indicates how we will treat node\n                        taints when calculating pod topology spread skew. Options\n                        are: - Honor: nodes without taints, along with tainted nodes\n                        for which the incoming pod has a toleration, are included.\n                        - Ignore: node taints are ignored. All nodes are included.\n                        \\n If this value is nil, the behavior is equivalent to the\n                        Ignore policy. This is a beta-level feature default enabled\n                        by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    topologyKey:\n                      description: TopologyKey is the key of node labels. Nodes that\n                        have a label with this key and identical values are considered\n                        to be in the same topology. We consider each <key, value>\n                        as a \"bucket\", and try to put balanced number of pods into\n                        each bucket. We define a domain as a particular instance of\n                        a topology. Also, we define an eligible domain as a domain\n                        whose nodes meet the requirements of nodeAffinityPolicy and\n                        nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\",\n                        each Node is a domain of that topology. And, if TopologyKey\n                        is \"topology.kubernetes.io/zone\", each zone is a domain of\n                        that topology. It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: 'WhenUnsatisfiable indicates how to deal with a\n                        pod if it doesn''t satisfy the spread constraint. - DoNotSchedule\n                        (default) tells the scheduler not to schedule it. - ScheduleAnyway\n                        tells the scheduler to schedule the pod in any location, but\n                        giving higher precedence to topologies that would help reduce\n                        the skew. A constraint is considered \"Unsatisfiable\" for an\n                        incoming pod if and only if every possible node assignment\n                        for that pod would violate \"MaxSkew\" on some topology. For\n                        example, in a 3-zone cluster, MaxSkew is set to 1, and pods\n                        with the same labelSelector spread as 3/1/1: | zone1 | zone2\n                        | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is\n                        set to DoNotSchedule, incoming pod can only be scheduled to\n                        zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on\n                        zone2(zone3) satisfies MaxSkew(1). In other words, the cluster\n                        can still be imbalanced, but scheduler won''t make it *more*\n                        imbalanced. It''s a required field.'\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              tracingConfig:\n                description: TracingConfig configures tracing in Thanos. This is an\n                  experimental feature, it may change in any upcoming release in a\n                  breaking way.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              tracingConfigFile:\n                description: TracingConfig specifies the path of the tracing configuration\n                  file. When used alongside with TracingConfig, TracingConfigFile\n                  takes precedence.\n                type: string\n              version:\n                description: Version of Thanos to be deployed.\n                type: string\n              volumeMounts:\n                description: VolumeMounts allows configuration of additional VolumeMounts\n                  on the output StatefulSet definition. VolumeMounts specified will\n                  be appended to other VolumeMounts in the ruler container, that are\n                  generated as a result of StorageSpec objects.\n                items:\n                  description: VolumeMount describes a mounting of a Volume within\n                    a container.\n                  properties:\n                    mountPath:\n                      description: Path within the container at which the volume should\n                        be mounted.  Must not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: mountPropagation determines how mounts are propagated\n                        from the host to container and the other way around. When\n                        not set, MountPropagationNone is used. This field is beta\n                        in 1.10.\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: Mounted read-only if true, read-write otherwise\n                        (false or unspecified). Defaults to false.\n                      type: boolean\n                    subPath:\n                      description: Path within the volume from which the container's\n                        volume should be mounted. Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: Expanded path within the volume from which the\n                        container's volume should be mounted. Behaves similarly to\n                        SubPath but environment variable references $(VAR_NAME) are\n                        expanded using the container's environment. Defaults to \"\"\n                        (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: Volumes allows configuration of additional volumes on\n                  the output StatefulSet definition. Volumes specified will be appended\n                  to other volumes that are generated as a result of StorageSpec objects.\n                items:\n                  description: Volume represents a named volume in a pod that may\n                    be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: 'awsElasticBlockStore represents an AWS Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly value true will force the readOnly\n                            setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: boolean\n                        volumeID:\n                          description: 'volumeID is unique ID of the persistent disk\n                            resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: azureDisk represents an Azure Data Disk mount on\n                        the host and bind mount to the pod.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None,\n                            Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the\n                            blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob\n                            storage\n                          type: string\n                        fsType:\n                          description: fsType is Filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple\n                            blob disks per storage account  Dedicated: single blob\n                            disk per storage account  Managed: azure managed data\n                            disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: azureFile represents an Azure File Service mount\n                        on the host and bind mount to the pod.\n                      properties:\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains\n                            Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: cephFS represents a Ceph FS mount on the host that\n                        shares a pod's lifetime\n                      properties:\n                        monitors:\n                          description: 'monitors is Required: Monitors is a collection\n                            of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        path:\n                          description: 'path is Optional: Used as the mounted root,\n                            rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: boolean\n                        secretFile:\n                          description: 'secretFile is Optional: SecretFile is the\n                            path to key ring for User, default is /etc/ceph/user.secret\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                        secretRef:\n                          description: 'secretRef is Optional: SecretRef is reference\n                            to the authentication secret for User, default is empty.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is optional: User is the rados user name,\n                            default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: 'cinder represents a cinder volume attached and\n                        mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to\n                            be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                        readOnly:\n                          description: 'readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is optional: points to a secret\n                            object containing parameters used to connect to OpenStack.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: 'volumeID used to identify the volume in cinder.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate\n                        this volume\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items if unspecified, each key-value pair in\n                            the Data field of the referenced ConfigMap will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the ConfigMap, the volume setup will error unless it is\n                            marked optional. Paths must be relative and may not contain\n                            the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its\n                            keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral\n                        storage that is handled by certain external CSI drivers (Beta\n                        feature).\n                      properties:\n                        driver:\n                          description: driver is the name of the CSI driver that handles\n                            this volume. Consult with your admin for the correct name\n                            as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            If not provided, the empty value is passed to the associated\n                            CSI driver which will determine the default filesystem\n                            to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: nodePublishSecretRef is a reference to the\n                            secret object containing sensitive information to pass\n                            to the CSI driver to complete the CSI NodePublishVolume\n                            and NodeUnpublishVolume calls. This field is optional,\n                            and  may be empty if no secret is required. If the secret\n                            object contains more than one secret, all secret references\n                            are passed.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: readOnly specifies a read-only configuration\n                            for the volume. Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: volumeAttributes stores driver-specific properties\n                            that are passed to the CSI driver. Consult your driver's\n                            documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod\n                        that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'Optional: mode bits to use on created files\n                            by default. Must be a Optional: mode bits used to set\n                            permissions on created files by default. Must be an octal\n                            value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information\n                              to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod:\n                                  only annotations, labels, name and namespace are\n                                  supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: 'Optional: mode bits used to set permissions\n                                  on this file, must be an octal value between 0000\n                                  and 0777 or a decimal value between 0 and 511. YAML\n                                  accepts both octal and decimal values, JSON requires\n                                  decimal values for mode bits. If not specified,\n                                  the volume defaultMode will be used. This might\n                                  be in conflict with other options that affect the\n                                  file mode, like fsGroup, and the result can be other\n                                  mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path\n                                  name of the file to be created. Must not be absolute\n                                  or contain the ''..'' path. Must be utf-8 encoded.\n                                  The first item of the relative path must not start\n                                  with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, requests.cpu and requests.memory)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                      type: object\n                    emptyDir:\n                      description: 'emptyDir represents a temporary directory that\n                        shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                      properties:\n                        medium:\n                          description: 'medium represents what type of storage medium\n                            should back this directory. The default is \"\" which means\n                            to use the node''s default medium. Must be an empty string\n                            (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: 'sizeLimit is the total amount of local storage\n                            required for this EmptyDir volume. The size limit is also\n                            applicable for memory medium. The maximum usage on memory\n                            medium EmptyDir would be the minimum value between the\n                            SizeLimit specified here and the sum of memory limits\n                            of all containers in a pod. The default is nil which means\n                            that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: \"ephemeral represents a volume that is handled\n                        by a cluster storage driver. The volume's lifecycle is tied\n                        to the pod that defines it - it will be created before the\n                        pod starts, and deleted when the pod is removed. \\n Use this\n                        if: a) the volume is only needed while the pod runs, b) features\n                        of normal volumes like restoring from snapshot or capacity\n                        tracking are needed, c) the storage driver is specified through\n                        a storage class, and d) the storage driver supports dynamic\n                        volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource\n                        for more information on the connection between this volume\n                        type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim\n                        or one of the vendor-specific APIs for volumes that persist\n                        for longer than the lifecycle of an individual pod. \\n Use\n                        CSI for light-weight local ephemeral volumes if the CSI driver\n                        is meant to be used that way - see the documentation of the\n                        driver for more information. \\n A pod can use both types of\n                        ephemeral volumes and persistent volumes at the same time.\"\n                      properties:\n                        volumeClaimTemplate:\n                          description: \"Will be used to create a stand-alone PVC to\n                            provision the volume. The pod in which this EphemeralVolumeSource\n                            is embedded will be the owner of the PVC, i.e. the PVC\n                            will be deleted together with the pod.  The name of the\n                            PVC will be `<pod name>-<volume name>` where `<volume\n                            name>` is the name from the `PodSpec.Volumes` array entry.\n                            Pod validation will reject the pod if the concatenated\n                            name is not valid for a PVC (for example, too long). \\n\n                            An existing PVC with that name that is not owned by the\n                            pod will *not* be used for the pod to avoid using an unrelated\n                            volume by mistake. Starting the pod is then blocked until\n                            the unrelated PVC is removed. If such a pre-created PVC\n                            is meant to be used by the pod, the PVC has to updated\n                            with an owner reference to the pod once the pod exists.\n                            Normally this should not be necessary, but it may be useful\n                            when manually reconstructing a broken cluster. \\n This\n                            field is read-only and no changes will be made by Kubernetes\n                            to the PVC after it has been created. \\n Required, must\n                            not be nil.\"\n                          properties:\n                            metadata:\n                              description: May contain labels and annotations that\n                                will be copied into the PVC when creating it. No other\n                                fields are allowed and will be rejected during validation.\n                              type: object\n                            spec:\n                              description: The specification for the PersistentVolumeClaim.\n                                The entire content is copied unchanged into the PVC\n                                that gets created from this template. The same fields\n                                as in a PersistentVolumeClaim are also valid here.\n                              properties:\n                                accessModes:\n                                  description: 'accessModes contains the desired access\n                                    modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                  items:\n                                    type: string\n                                  type: array\n                                dataSource:\n                                  description: 'dataSource field can be used to specify\n                                    either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                    * An existing PVC (PersistentVolumeClaim) If the\n                                    provisioner or an external controller can support\n                                    the specified data source, it will create a new\n                                    volume based on the contents of the specified\n                                    data source. When the AnyVolumeDataSource feature\n                                    gate is enabled, dataSource contents will be copied\n                                    to dataSourceRef, and dataSourceRef contents will\n                                    be copied to dataSource when dataSourceRef.namespace\n                                    is not specified. If the namespace is specified,\n                                    then dataSourceRef will not be copied to dataSource.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: 'dataSourceRef specifies the object\n                                    from which to populate the volume with data, if\n                                    a non-empty volume is desired. This may be any\n                                    object from a non-empty API group (non core object)\n                                    or a PersistentVolumeClaim object. When this field\n                                    is specified, volume binding will only succeed\n                                    if the type of the specified object matches some\n                                    installed volume populator or dynamic provisioner.\n                                    This field will replace the functionality of the\n                                    dataSource field and as such if both fields are\n                                    non-empty, they must have the same value. For\n                                    backwards compatibility, when namespace isn''t\n                                    specified in dataSourceRef, both fields (dataSource\n                                    and dataSourceRef) will be set to the same value\n                                    automatically if one of them is empty and the\n                                    other is non-empty. When namespace is specified\n                                    in dataSourceRef, dataSource isn''t set to the\n                                    same value and must be empty. There are three\n                                    important differences between dataSource and dataSourceRef:\n                                    * While dataSource only allows two specific types\n                                    of objects, dataSourceRef allows any non-core\n                                    object, as well as PersistentVolumeClaim objects.\n                                    * While dataSource ignores disallowed values (dropping\n                                    them), dataSourceRef preserves all values, and\n                                    generates an error if a disallowed value is specified.\n                                    * While dataSource only allows local objects,\n                                    dataSourceRef allows objects in any namespaces.\n                                    (Beta) Using this field requires the AnyVolumeDataSource\n                                    feature gate to be enabled. (Alpha) Using the\n                                    namespace field of dataSourceRef requires the\n                                    CrossNamespaceVolumeDataSource feature gate to\n                                    be enabled.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                    namespace:\n                                      description: Namespace is the namespace of resource\n                                        being referenced Note that when a namespace\n                                        is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                        object is required in the referent namespace\n                                        to allow that namespace's owner to accept\n                                        the reference. See the ReferenceGrant documentation\n                                        for details. (Alpha) This field requires the\n                                        CrossNamespaceVolumeDataSource feature gate\n                                        to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: 'resources represents the minimum resources\n                                    the volume should have. If RecoverVolumeExpansionFailure\n                                    feature is enabled users are allowed to specify\n                                    resource requirements that are lower than previous\n                                    value but must still be higher than capacity recorded\n                                    in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                  properties:\n                                    claims:\n                                      description: \"Claims lists the names of resources,\n                                        defined in spec.resourceClaims, that are used\n                                        by this container. \\n This is an alpha field\n                                        and requires enabling the DynamicResourceAllocation\n                                        feature gate. \\n This field is immutable.\n                                        It can only be set for containers.\"\n                                      items:\n                                        description: ResourceClaim references one\n                                          entry in PodSpec.ResourceClaims.\n                                        properties:\n                                          name:\n                                            description: Name must match the name\n                                              of one entry in pod.spec.resourceClaims\n                                              of the Pod where this field is used.\n                                              It makes that resource available inside\n                                              a container.\n                                            type: string\n                                        required:\n                                        - name\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-map-keys:\n                                      - name\n                                      x-kubernetes-list-type: map\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Limits describes the maximum amount\n                                        of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Requests describes the minimum\n                                        amount of compute resources required. If Requests\n                                        is omitted for a container, it defaults to\n                                        Limits if that is explicitly specified, otherwise\n                                        to an implementation-defined value. Requests\n                                        cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes\n                                    to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: 'storageClassName is the name of the\n                                    StorageClass required by the claim. More info:\n                                    https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                  type: string\n                                volumeMode:\n                                  description: volumeMode defines what type of volume\n                                    is required by the claim. Value of Filesystem\n                                    is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference\n                                    to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is\n                        attached to a kubelet's host machine and then exposed to the\n                        pod.\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. TODO: how do we prevent errors in the\n                            filesystem from compromising the machine'\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide\n                            names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                        wwids:\n                          description: 'wwids Optional: FC volume world wide identifiers\n                            (wwids) Either wwids or combination of targetWWNs and\n                            lun must be set, but not both simultaneously.'\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    flexVolume:\n                      description: flexVolume represents a generic volume resource\n                        that is provisioned/attached using an exec based plugin.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for\n                            this volume.\n                          type: string\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends\n                            on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra\n                            command options if any.'\n                          type: object\n                        readOnly:\n                          description: 'readOnly is Optional: defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is Optional: secretRef is reference\n                            to the secret object containing sensitive information\n                            to pass to the plugin scripts. This may be empty if no\n                            secret object is specified. If the secret object contains\n                            more than one secret, all secrets are passed to the plugin\n                            scripts.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: flocker represents a Flocker volume attached to\n                        a kubelet's host machine. This depends on the Flocker control\n                        service being running\n                      properties:\n                        datasetName:\n                          description: datasetName is Name of the dataset stored as\n                            metadata -> name on the dataset for Flocker should be\n                            considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This\n                            is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: 'gcePersistentDisk represents a GCE Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                      properties:\n                        fsType:\n                          description: 'fsType is filesystem type of the volume that\n                            you want to mount. Tip: Ensure that the filesystem type\n                            is supported by the host operating system. Examples: \"ext4\",\n                            \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: 'pdName is unique name of the PD resource in\n                            GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: 'gitRepo represents a git repository at a particular\n                        revision. DEPRECATED: GitRepo is deprecated. To provision\n                        a container with a git repo, mount an EmptyDir into an InitContainer\n                        that clones the repo using git, then mount the EmptyDir into\n                        the Pod''s container.'\n                      properties:\n                        directory:\n                          description: directory is the target directory name. Must\n                            not contain or start with '..'.  If '.' is supplied, the\n                            volume directory will be the git repository.  Otherwise,\n                            if specified, the volume will contain the git repository\n                            in the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified\n                            revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: 'glusterfs represents a Glusterfs mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'\n                      properties:\n                        endpoints:\n                          description: 'endpoints is the endpoint name that details\n                            Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        path:\n                          description: 'path is the Glusterfs volume path. More info:\n                            https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the Glusterfs volume\n                            to be mounted with read-only permissions. Defaults to\n                            false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: 'hostPath represents a pre-existing file or directory\n                        on the host machine that is directly exposed to the container.\n                        This is generally used for system agents or other privileged\n                        things that are allowed to see the host machine. Most containers\n                        will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                        --- TODO(jonesdl) We need to restrict who can use host directory\n                        mounts and who can/can not mount host directories as read/write.'\n                      properties:\n                        path:\n                          description: 'path of the directory on the host. If the\n                            path is a symlink, it will follow the link to the real\n                            path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                        type:\n                          description: 'type for HostPath Volume Defaults to \"\" More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    iscsi:\n                      description: 'iscsi represents an ISCSI Disk resource that is\n                        attached to a kubelet''s host machine and then exposed to\n                        the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI\n                            Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI\n                            Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        initiatorName:\n                          description: initiatorName is the custom iSCSI Initiator\n                            Name. If initiatorName is specified with iscsiInterface\n                            simultaneously, new iSCSI interface <target portal>:<volume\n                            name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          description: iscsiInterface is the interface Name that uses\n                            an iSCSI transport. Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: portals is the iSCSI Target Portal List. The\n                            portal is either an IP or ip_addr:port if the port is\n                            other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                        readOnly:\n                          description: readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target\n                            and initiator authentication\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: targetPortal is iSCSI Target Portal. The Portal\n                            is either an IP or ip_addr:port if the port is other than\n                            default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: 'name of the volume. Must be a DNS_LABEL and unique\n                        within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                      type: string\n                    nfs:\n                      description: 'nfs represents an NFS mount on the host that shares\n                        a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                      properties:\n                        path:\n                          description: 'path that is exported by the NFS server. More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the NFS export to\n                            be mounted with read-only permissions. Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: boolean\n                        server:\n                          description: 'server is the hostname or IP address of the\n                            NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: 'persistentVolumeClaimVolumeSource represents a\n                        reference to a PersistentVolumeClaim in the same namespace.\n                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                      properties:\n                        claimName:\n                          description: 'claimName is the name of a PersistentVolumeClaim\n                            in the same namespace as the pod using this volume. More\n                            info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                          type: string\n                        readOnly:\n                          description: readOnly Will force the ReadOnly setting in\n                            VolumeMounts. Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: photonPersistentDisk represents a PhotonController\n                        persistent disk attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller\n                            persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: portworxVolume represents a portworx volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fSType represents the filesystem type to mount\n                            Must be a filesystem type supported by the host operating\n                            system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets,\n                        configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: defaultMode are the mode bits used to set permissions\n                            on created files by default. Must be an octal value between\n                            0000 and 0777 or a decimal value between 0 and 511. YAML\n                            accepts both octal and decimal values, JSON requires decimal\n                            values for mode bits. Directories within the path are\n                            not affected by this setting. This might be in conflict\n                            with other options that affect the file mode, like fsGroup,\n                            and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: sources is the list of volume projections\n                          items:\n                            description: Projection that may be projected along with\n                              other supported volume types\n                            properties:\n                              configMap:\n                                description: configMap information about the configMap\n                                  data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced ConfigMap\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the ConfigMap, the volume\n                                      setup will error unless it is marked optional.\n                                      Paths must be relative and may not contain the\n                                      '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap\n                                      or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI\n                                  data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume\n                                      file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents\n                                        information to create the file containing\n                                        the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field\n                                            of the pod: only annotations, labels,\n                                            name and namespace are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the\n                                                FieldPath is written in terms of,\n                                                defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select\n                                                in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: 'Optional: mode bits used to\n                                            set permissions on this file, must be\n                                            an octal value between 0000 and 0777 or\n                                            a decimal value between 0 and 511. YAML\n                                            accepts both octal and decimal values,\n                                            JSON requires decimal values for mode\n                                            bits. If not specified, the volume defaultMode\n                                            will be used. This might be in conflict\n                                            with other options that affect the file\n                                            mode, like fsGroup, and the result can\n                                            be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative\n                                            path name of the file to be created. Must\n                                            not be absolute or contain the ''..''\n                                            path. Must be utf-8 encoded. The first\n                                            item of the relative path must not start\n                                            with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: 'Selects a resource of the\n                                            container: only resources limits and requests\n                                            (limits.cpu, limits.memory, requests.cpu\n                                            and requests.memory) are currently supported.'\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required\n                                                for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format\n                                                of the exposed resources, defaults\n                                                to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to\n                                                select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                type: object\n                              secret:\n                                description: secret information about the secret data\n                                  to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced Secret\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the Secret, the volume setup\n                                      will error unless it is marked optional. Paths\n                                      must be relative and may not contain the '..'\n                                      path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the\n                                      Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about\n                                  the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: audience is the intended audience\n                                      of the token. A recipient of a token must identify\n                                      itself with an identifier specified in the audience\n                                      of the token, and otherwise should reject the\n                                      token. The audience defaults to the identifier\n                                      of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: expirationSeconds is the requested\n                                      duration of validity of the service account\n                                      token. As the token approaches expiration, the\n                                      kubelet volume plugin will proactively rotate\n                                      the service account token. The kubelet will\n                                      start trying to rotate the token if the token\n                                      is older than 80 percent of its time to live\n                                      or if the token is older than 24 hours.Defaults\n                                      to 1 hour and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: path is the path relative to the\n                                      mount point of the file to project the token\n                                      into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                      type: object\n                    quobyte:\n                      description: quobyte represents a Quobyte mount on the host\n                        that shares a pod's lifetime\n                      properties:\n                        group:\n                          description: group to map volume access to Default is no\n                            group\n                          type: string\n                        readOnly:\n                          description: readOnly here will force the Quobyte volume\n                            to be mounted with read-only permissions. Defaults to\n                            false.\n                          type: boolean\n                        registry:\n                          description: registry represents a single or multiple Quobyte\n                            Registry services specified as a string as host:port pair\n                            (multiple entries are separated with commas) which acts\n                            as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: tenant owning the given Quobyte volume in the\n                            Backend Used with dynamically provisioned Quobyte volumes,\n                            value is set by the plugin\n                          type: string\n                        user:\n                          description: user to map volume access to Defaults to serivceaccount\n                            user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already\n                            created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: 'rbd represents a Rados Block Device mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        image:\n                          description: 'image is the rados image name. More info:\n                            https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        keyring:\n                          description: 'keyring is the path to key ring for RBDUser.\n                            Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        monitors:\n                          description: 'monitors is a collection of Ceph monitors.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        pool:\n                          description: 'pool is the rados pool name. Default is rbd.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is name of the authentication secret\n                            for RBDUser. If provided overrides keyring. Default is\n                            nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is the rados user name. Default is admin.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: scaleIO represents a ScaleIO persistent volume\n                        attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO\n                            API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO\n                            Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef references to the secret for ScaleIO\n                            user and other sensitive information. If this is not provided,\n                            Login operation will fail.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication\n                            with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          description: storageMode indicates whether the storage for\n                            a volume should be ThickProvisioned or ThinProvisioned.\n                            Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated\n                            with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as\n                            configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: volumeName is the name of a volume already\n                            created in the ScaleIO system that is associated with\n                            this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: 'secret represents a secret that should populate\n                        this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is Optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items If unspecified, each key-value pair in\n                            the Data field of the referenced Secret will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the Secret, the volume setup will error unless it is marked\n                            optional. Paths must be relative and may not contain the\n                            '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        optional:\n                          description: optional field specify whether the Secret or\n                            its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: 'secretName is the name of the secret in the\n                            pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                          type: string\n                      type: object\n                    storageos:\n                      description: storageOS represents a StorageOS volume attached\n                        and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef specifies the secret to use for obtaining\n                            the StorageOS API credentials.  If not specified, default\n                            values will be attempted.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: volumeName is the human-readable name of the\n                            StorageOS volume.  Volume names are only unique within\n                            a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: volumeNamespace specifies the scope of the\n                            volume within StorageOS.  If no namespace is specified\n                            then the Pod's namespace will be used.  This allows the\n                            Kubernetes name scoping to be mirrored within StorageOS\n                            for tighter integration. Set VolumeName to any name to\n                            override the default behaviour. Set to \"default\" if you\n                            are not using namespaces within StorageOS. Namespaces\n                            that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: vsphereVolume represents a vSphere volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based\n                            Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based\n                            Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere\n                            volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n            type: object\n          status:\n            description: 'Most recent observed status of the ThanosRuler cluster.\n              Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              availableReplicas:\n                description: Total number of available pods (ready for at least minReadySeconds)\n                  targeted by this ThanosRuler deployment.\n                format: int32\n                type: integer\n              conditions:\n                description: The current state of the Alertmanager object.\n                items:\n                  description: Condition represents the state of the resources associated\n                    with the Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update\n                        to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Human-readable message indicating details for the\n                        condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: ObservedGeneration represents the .metadata.generation\n                        that the condition was set based upon. For instance, if `.metadata.generation`\n                        is currently 12, but the `.status.conditions[].observedGeneration`\n                        is 9, the condition is out of date with respect to the current\n                        state of the instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition.\n                      type: string\n                    type:\n                      description: Type of the condition being reported.\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: Represents whether any actions on the underlying managed\n                  objects are being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: Total number of non-terminated pods targeted by this\n                  ThanosRuler deployment (their labels match the selector).\n                format: int32\n                type: integer\n              unavailableReplicas:\n                description: Total number of unavailable pods targeted by this ThanosRuler\n                  deployment.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: Total number of non-terminated pods targeted by this\n                  ThanosRuler deployment that have the desired version spec.\n                format: int32\n                type: integer\n            required:\n            - availableReplicas\n            - paused\n            - replicas\n            - unavailableReplicas\n            - updatedReplicas\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.vscode\n.project\n.idea/\n*.tmproj\nOWNERS\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/Chart.yaml",
    "content": "annotations:\n  artifacthub.io/license: AGPL-3.0-only\n  artifacthub.io/links: |\n    - name: Chart Source\n      url: https://github.com/grafana/helm-charts\n    - name: Upstream Project\n      url: https://github.com/grafana/grafana\napiVersion: v2\nappVersion: 10.0.3\ndescription: The leading tool for querying and visualizing time series and metrics.\nhome: https://grafana.net\nicon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png\nkeywords:\n- monitoring\n- metric\nkubeVersion: ^1.8.0-0\nmaintainers:\n- email: zanhsieh@gmail.com\n  name: zanhsieh\n- email: rluckie@cisco.com\n  name: rtluckie\n- email: maor.friedman@redhat.com\n  name: maorfr\n- email: miroslav.hadzhiev@gmail.com\n  name: Xtigyro\n- email: mail@torstenwalter.de\n  name: torstenwalter\nname: grafana\nsources:\n- https://github.com/grafana/grafana\n- https://github.com/grafana/helm-charts\ntype: application\nversion: 6.58.9\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/README.md",
    "content": "# Grafana Helm Chart\n\n* Installs the web dashboarding system [Grafana](http://grafana.org/)\n\n## Get Repo Info\n\n```console\nhelm repo add grafana https://grafana.github.io/helm-charts\nhelm repo update\n```\n\n_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._\n\n## Installing the Chart\n\nTo install the chart with the release name `my-release`:\n\n```console\nhelm install my-release grafana/grafana\n```\n\n## Uninstalling the Chart\n\nTo uninstall/delete the my-release deployment:\n\n```console\nhelm delete my-release\n```\n\nThe command removes all the Kubernetes components associated with the chart and deletes the release.\n\n## Upgrading an existing Release to a new major version\n\nA major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an\nincompatible breaking change needing manual actions.\n\n### To 4.0.0 (And 3.12.1)\n\nThis version requires Helm >= 2.12.0.\n\n### To 5.0.0\n\nYou have to add --force to your helm upgrade command as the labels of the chart have changed.\n\n### To 6.0.0\n\nThis version requires Helm >= 3.1.0.\n\n## Configuration\n\n| Parameter                                 | Description                                   | Default                                                 |\n|-------------------------------------------|-----------------------------------------------|---------------------------------------------------------|\n| `replicas`                                | Number of nodes                               | `1`                                                     |\n| `podDisruptionBudget.minAvailable`        | Pod disruption minimum available              | `nil`                                                   |\n| `podDisruptionBudget.maxUnavailable`      | Pod disruption maximum unavailable            | `nil`                                                   |\n| `deploymentStrategy`                      | Deployment strategy                           | `{ \"type\": \"RollingUpdate\" }`                           |\n| `livenessProbe`                           | Liveness Probe settings                       | `{ \"httpGet\": { \"path\": \"/api/health\", \"port\": 3000 } \"initialDelaySeconds\": 60, \"timeoutSeconds\": 30, \"failureThreshold\": 10 }` |\n| `readinessProbe`                          | Readiness Probe settings                      | `{ \"httpGet\": { \"path\": \"/api/health\", \"port\": 3000 } }`|\n| `securityContext`                         | Deployment securityContext                    | `{\"runAsUser\": 472, \"runAsGroup\": 472, \"fsGroup\": 472}`  |\n| `priorityClassName`                       | Name of Priority Class to assign pods         | `nil`                                                   |\n| `image.repository`                        | Image repository                              | `grafana/grafana`                                       |\n| `image.tag`                               | Overrides the Grafana image tag whose default is the chart appVersion (`Must be >= 5.0.0`) | ``                                                      |\n| `image.sha`                               | Image sha (optional)                          | ``                                                      |\n| `image.pullPolicy`                        | Image pull policy                             | `IfNotPresent`                                          |\n| `image.pullSecrets`                       | Image pull secrets (can be templated)         | `[]`                                                    |\n| `service.enabled`                         | Enable grafana service                        | `true`                                                  |\n| `service.type`                            | Kubernetes service type                       | `ClusterIP`                                             |\n| `service.port`                            | Kubernetes port where service is exposed      | `80`                                                    |\n| `service.portName`                        | Name of the port on the service               | `service`                                               |\n| `service.appProtocol`                     | Adds the appProtocol field to the service     | ``                                                      |\n| `service.targetPort`                      | Internal service is port                      | `3000`                                                  |\n| `service.nodePort`                        | Kubernetes service nodePort                   | `nil`                                                   |\n| `service.annotations`                     | Service annotations (can be templated)        | `{}`                                                    |\n| `service.labels`                          | Custom labels                                 | `{}`                                                    |\n| `service.clusterIP`                       | internal cluster service IP                   | `nil`                                                   |\n| `service.loadBalancerIP`                  | IP address to assign to load balancer (if supported) | `nil`                                            |\n| `service.loadBalancerSourceRanges`        | list of IP CIDRs allowed access to lb (if supported) | `[]`                                             |\n| `service.externalIPs`                     | service external IP addresses                 | `[]`                                                    |\n| `headlessService`                         | Create a headless service                     | `false`                                                 |\n| `extraExposePorts`                        | Additional service ports for sidecar containers| `[]`                                                   |\n| `hostAliases`                             | adds rules to the pod's /etc/hosts            | `[]`                                                    |\n| `ingress.enabled`                         | Enables Ingress                               | `false`                                                 |\n| `ingress.annotations`                     | Ingress annotations (values are templated)    | `{}`                                                    |\n| `ingress.labels`                          | Custom labels                                 | `{}`                                                    |\n| `ingress.path`                            | Ingress accepted path                         | `/`                                                     |\n| `ingress.pathType`                        | Ingress type of path                          | `Prefix`                                                |\n| `ingress.hosts`                           | Ingress accepted hostnames                    | `[\"chart-example.local\"]`                                                    |\n| `ingress.extraPaths`                      | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). Requires `ingress.hosts` to have one or more host entries. | `[]`                                                    |\n| `ingress.tls`                             | Ingress TLS configuration                     | `[]`                                                    |\n| `ingress.ingressClassName`                | Ingress Class Name. MAY be required for Kubernetes versions >= 1.18 | `\"\"`                              |\n| `resources`                               | CPU/Memory resource requests/limits           | `{}`                                                    |\n| `nodeSelector`                            | Node labels for pod assignment                | `{}`                                                    |\n| `tolerations`                             | Toleration labels for pod assignment          | `[]`                                                    |\n| `affinity`                                | Affinity settings for pod assignment          | `{}`                                                    |\n| `extraInitContainers`                     | Init containers to add to the grafana pod     | `{}`                                                    |\n| `extraContainers`                         | Sidecar containers to add to the grafana pod  | `\"\"`                                                    |\n| `extraContainerVolumes`                   | Volumes that can be mounted in sidecar containers | `[]`                                                |\n| `extraLabels`                             | Custom labels for all manifests               | `{}`                                                    |\n| `schedulerName`                           | Name of the k8s scheduler (other than default) | `nil`                                                  |\n| `persistence.enabled`                     | Use persistent volume to store data           | `false`                                                 |\n| `persistence.type`                        | Type of persistence (`pvc` or `statefulset`)  | `pvc`                                                   |\n| `persistence.size`                        | Size of persistent volume claim               | `10Gi`                                                  |\n| `persistence.existingClaim`               | Use an existing PVC to persist data (can be templated) | `nil`                                          |\n| `persistence.storageClassName`            | Type of persistent volume claim               | `nil`                                                   |\n| `persistence.accessModes`                 | Persistence access modes                      | `[ReadWriteOnce]`                                       |\n| `persistence.annotations`                 | PersistentVolumeClaim annotations             | `{}`                                                    |\n| `persistence.finalizers`                  | PersistentVolumeClaim finalizers              | `[ \"kubernetes.io/pvc-protection\" ]`                    |\n| `persistence.extraPvcLabels`              | Extra labels to apply to a PVC.               | `{}`                                                    |\n| `persistence.subPath`                     | Mount a sub dir of the persistent volume (can be templated) | `nil`                                     |\n| `persistence.inMemory.enabled`            | If persistence is not enabled, whether to mount the local storage in-memory to improve performance | `false`                                                   |\n| `persistence.inMemory.sizeLimit`          | SizeLimit for the in-memory local storage     | `nil`                                                   |\n| `initChownData.enabled`                   | If false, don't reset data ownership at startup | true                                                  |\n| `initChownData.image.repository`          | init-chown-data container image repository    | `busybox`                                               |\n| `initChownData.image.tag`                 | init-chown-data container image tag           | `1.31.1`                                                |\n| `initChownData.image.sha`                 | init-chown-data container image sha (optional)| `\"\"`                                                    |\n| `initChownData.image.pullPolicy`          | init-chown-data container image pull policy   | `IfNotPresent`                                          |\n| `initChownData.resources`                 | init-chown-data pod resource requests & limits | `{}`                                                   |\n| `schedulerName`                           | Alternate scheduler name                      | `nil`                                                   |\n| `env`                                     | Extra environment variables passed to pods    | `{}`                                                    |\n| `envValueFrom`                            | Environment variables from alternate sources. See the API docs on [EnvVarSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#envvarsource-v1-core) for format details. Can be templated | `{}` |\n| `envFromSecret`                           | Name of a Kubernetes secret (must be manually created in the same namespace) containing values to be added to the environment. Can be templated | `\"\"` |\n| `envFromSecrets`                          | List of Kubernetes secrets (must be manually created in the same namespace) containing values to be added to the environment. Can be templated | `[]` |\n| `envFromConfigMaps`                       | List of Kubernetes ConfigMaps (must be manually created in the same namespace) containing values to be added to the environment. Can be templated | `[]` |\n| `envRenderSecret`                         | Sensible environment variables passed to pods and stored as secret. (passed through [tpl](https://helm.sh/docs/howto/charts_tips_and_tricks/#using-the-tpl-function))   | `{}`                               |\n| `enableServiceLinks`                      | Inject Kubernetes services as environment variables. | `true`                                           |\n| `extraSecretMounts`                       | Additional grafana server secret mounts       | `[]`                                                    |\n| `extraVolumeMounts`                       | Additional grafana server volume mounts       | `[]`                                                    |\n| `createConfigmap`                         | Enable creating the grafana configmap         | `true`                                                  |\n| `extraConfigmapMounts`                    | Additional grafana server configMap volume mounts (values are templated) | `[]`                         |\n| `extraEmptyDirMounts`                     | Additional grafana server emptyDir volume mounts | `[]`                                                 |\n| `plugins`                                 | Plugins to be loaded along with Grafana       | `[]`                                                    |\n| `datasources`                             | Configure grafana datasources (passed through tpl) | `{}`                                               |\n| `alerting`                                | Configure grafana alerting (passed through tpl) | `{}`                                                  |\n| `notifiers`                               | Configure grafana notifiers                   | `{}`                                                    |\n| `dashboardProviders`                      | Configure grafana dashboard providers         | `{}`                                                    |\n| `dashboards`                              | Dashboards to import                          | `{}`                                                    |\n| `dashboardsConfigMaps`                    | ConfigMaps reference that contains dashboards | `{}`                                                    |\n| `grafana.ini`                             | Grafana's primary configuration               | `{}`                                                    |\n| `global.imagePullSecrets`                 | Global image pull secrets (can be templated). Allows either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style).  | `[]`                                                    |\n| `ldap.enabled`                            | Enable LDAP authentication                    | `false`                                                 |\n| `ldap.existingSecret`                     | The name of an existing secret containing the `ldap.toml` file, this must have the key `ldap-toml`. | `\"\"` |\n| `ldap.config`                             | Grafana's LDAP configuration                  | `\"\"`                                                    |\n| `annotations`                             | Deployment annotations                        | `{}`                                                    |\n| `labels`                                  | Deployment labels                             | `{}`                                                    |\n| `podAnnotations`                          | Pod annotations                               | `{}`                                                    |\n| `podLabels`                               | Pod labels                                    | `{}`                                                    |\n| `podPortName`                             | Name of the grafana port on the pod           | `grafana`                                               |\n| `lifecycleHooks`                          | Lifecycle hooks for podStart and preStop [Example](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/#define-poststart-and-prestop-handlers)     | `{}`                                                    |\n| `sidecar.image.repository`                | Sidecar image repository                      | `quay.io/kiwigrid/k8s-sidecar`                          |\n| `sidecar.image.tag`                       | Sidecar image tag                             | `1.24.6`                                                |\n| `sidecar.image.sha`                       | Sidecar image sha (optional)                  | `\"\"`                                                    |\n| `sidecar.imagePullPolicy`                 | Sidecar image pull policy                     | `IfNotPresent`                                          |\n| `sidecar.resources`                       | Sidecar resources                             | `{}`                                                    |\n| `sidecar.securityContext`                 | Sidecar securityContext                       | `{}`                                                    |\n| `sidecar.enableUniqueFilenames`           | Sets the kiwigrid/k8s-sidecar UNIQUE_FILENAMES environment variable. If set to `true` the sidecar will create unique filenames where duplicate data keys exist between ConfigMaps and/or Secrets within the same or multiple Namespaces. | `false`                           |\n| `sidecar.alerts.enabled`             | Enables the cluster wide search for alerts and adds/updates/deletes them in grafana |`false`       |\n| `sidecar.alerts.label`               | Label that config maps with alerts should have to be added | `grafana_alert`                               |\n| `sidecar.alerts.labelValue`          | Label value that config maps with alerts should have to be added | `\"\"`                                |\n| `sidecar.alerts.searchNamespace`     | Namespaces list. If specified, the sidecar will search for alerts config-maps  inside these namespaces. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces. | `nil`                               |\n| `sidecar.alerts.watchMethod`         | Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds. | `WATCH` |\n| `sidecar.alerts.resource`            | Should the sidecar looks into secrets, configmaps or both. | `both`                               |\n| `sidecar.alerts.reloadURL`           | Full url of datasource configuration reload API endpoint, to invoke after a config-map change | `\"http://localhost:3000/api/admin/provisioning/alerting/reload\"` |\n| `sidecar.alerts.skipReload`          | Enabling this omits defining the REQ_URL and REQ_METHOD environment variables | `false` |\n| `sidecar.alerts.initDatasources`     | Set to true to deploy the datasource sidecar as an initContainer in addition to a container. This is needed if skipReload is true, to load any alerts defined at startup time. | `false` |\n| `sidecar.alerts.extraMounts`         | Additional alerts sidecar volume mounts. | `[]`                               |\n| `sidecar.dashboards.enabled`              | Enables the cluster wide search for dashboards and adds/updates/deletes them in grafana | `false`       |\n| `sidecar.dashboards.SCProvider`           | Enables creation of sidecar provider          | `true`                                                  |\n| `sidecar.dashboards.provider.name`        | Unique name of the grafana provider           | `sidecarProvider`                                       |\n| `sidecar.dashboards.provider.orgid`       | Id of the organisation, to which the dashboards should be added | `1`                                   |\n| `sidecar.dashboards.provider.folder`      | Logical folder in which grafana groups dashboards | `\"\"`                                                |\n| `sidecar.dashboards.provider.disableDelete` | Activate to avoid the deletion of imported dashboards | `false`                                       |\n| `sidecar.dashboards.provider.allowUiUpdates` | Allow updating provisioned dashboards from the UI | `false`                                          |\n| `sidecar.dashboards.provider.type`        | Provider type                                 | `file`                                                  |\n| `sidecar.dashboards.provider.foldersFromFilesStructure`        | Allow Grafana to replicate dashboard structure from filesystem.                                 | `false`                                                  |\n| `sidecar.dashboards.watchMethod`          | Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds. | `WATCH` |\n| `sidecar.skipTlsVerify`                   | Set to true to skip tls verification for kube api calls | `nil`                                         |\n| `sidecar.dashboards.label`                | Label that config maps with dashboards should have to be added | `grafana_dashboard`                                |\n| `sidecar.dashboards.labelValue`                | Label value that config maps with dashboards should have to be added | `\"\"`                                |\n| `sidecar.dashboards.folder`               | Folder in the pod that should hold the collected dashboards (unless `sidecar.dashboards.defaultFolderName` is set). This path will be mounted. | `/tmp/dashboards`    |\n| `sidecar.dashboards.folderAnnotation`     | The annotation the sidecar will look for in configmaps to override the destination folder for files | `nil`                                                  |\n| `sidecar.dashboards.defaultFolderName`    | The default folder name, it will create a subfolder under the `sidecar.dashboards.folder` and put dashboards in there instead | `nil`                                |\n| `sidecar.dashboards.searchNamespace`      | Namespaces list. If specified, the sidecar will search for dashboards config-maps  inside these namespaces. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces. | `nil`                                |\n| `sidecar.dashboards.script`               | Absolute path to shell script to execute after a configmap got reloaded. | `nil`                                |\n| `sidecar.dashboards.reloadURL`            | Full url of dashboards configuration reload API endpoint, to invoke after a config-map change | `\"http://localhost:3000/api/admin/provisioning/dashboards/reload\"` |\n| `sidecar.dashboards.skipReload`           | Enabling this omits defining the REQ_USERNAME, REQ_PASSWORD, REQ_URL and REQ_METHOD environment variables | `false` |\n| `sidecar.dashboards.resource`             | Should the sidecar looks into secrets, configmaps or both. | `both`                               |\n| `sidecar.dashboards.extraMounts`          | Additional dashboard sidecar volume mounts. | `[]`                               |\n| `sidecar.datasources.enabled`             | Enables the cluster wide search for datasources and adds/updates/deletes them in grafana |`false`       |\n| `sidecar.datasources.label`               | Label that config maps with datasources should have to be added | `grafana_datasource`                               |\n| `sidecar.datasources.labelValue`          | Label value that config maps with datasources should have to be added | `\"\"`                                |\n| `sidecar.datasources.searchNamespace`     | Namespaces list. If specified, the sidecar will search for datasources config-maps  inside these namespaces. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces. | `nil`                               |\n| `sidecar.datasources.watchMethod`         | Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds. | `WATCH` |\n| `sidecar.datasources.resource`            | Should the sidecar looks into secrets, configmaps or both. | `both`                               |\n| `sidecar.datasources.reloadURL`           | Full url of datasource configuration reload API endpoint, to invoke after a config-map change | `\"http://localhost:3000/api/admin/provisioning/datasources/reload\"` |\n| `sidecar.datasources.skipReload`          | Enabling this omits defining the REQ_URL and REQ_METHOD environment variables | `false` |\n| `sidecar.datasources.initDatasources`     | Set to true to deploy the datasource sidecar as an initContainer in addition to a container. This is needed if skipReload is true, to load any datasources defined at startup time. | `false` |\n| `sidecar.notifiers.enabled`               | Enables the cluster wide search for notifiers and adds/updates/deletes them in grafana | `false`        |\n| `sidecar.notifiers.label`                 | Label that config maps with notifiers should have to be added | `grafana_notifier`                               |\n| `sidecar.notifiers.labelValue`            | Label value that config maps with notifiers should have to be added | `\"\"`                                |\n| `sidecar.notifiers.searchNamespace`       | Namespaces list. If specified, the sidecar will search for notifiers config-maps (or secrets) inside these namespaces. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces. | `nil`                               |\n| `sidecar.notifiers.watchMethod`           | Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds. | `WATCH` |\n| `sidecar.notifiers.resource`              | Should the sidecar looks into secrets, configmaps or both. | `both`                               |\n| `sidecar.notifiers.reloadURL`             | Full url of notifier configuration reload API endpoint, to invoke after a config-map change | `\"http://localhost:3000/api/admin/provisioning/notifications/reload\"` |\n| `sidecar.notifiers.skipReload`            | Enabling this omits defining the REQ_URL and REQ_METHOD environment variables | `false` |\n| `sidecar.notifiers.initNotifiers`         | Set to true to deploy the notifier sidecar as an initContainer in addition to a container. This is needed if skipReload is true, to load any notifiers defined at startup time. | `false` |\n| `smtp.existingSecret`                     | The name of an existing secret containing the SMTP credentials. | `\"\"`                                  |\n| `smtp.userKey`                            | The key in the existing SMTP secret containing the username. | `\"user\"`                                 |\n| `smtp.passwordKey`                        | The key in the existing SMTP secret containing the password. | `\"password\"`                             |\n| `admin.existingSecret`                    | The name of an existing secret containing the admin credentials (can be templated). | `\"\"`                                 |\n| `admin.userKey`                           | The key in the existing admin secret containing the username. | `\"admin-user\"`                          |\n| `admin.passwordKey`                       | The key in the existing admin secret containing the password. | `\"admin-password\"`                      |\n| `serviceAccount.autoMount`                | Automount the service account token in the pod| `true`                                                  |\n| `serviceAccount.annotations`              | ServiceAccount annotations                    |                                                         |\n| `serviceAccount.create`                   | Create service account                        | `true`                                                  |\n| `serviceAccount.labels`                   | ServiceAccount labels                         | `{}`                                                    |\n| `serviceAccount.name`                     | Service account name to use, when empty will be set to created account if `serviceAccount.create` is set else to `default` | `` |\n| `serviceAccount.nameTest`                 | Service account name to use for test, when empty will be set to created account if `serviceAccount.create` is set else to `default` | `nil` |\n| `rbac.create`                             | Create and use RBAC resources                 | `true`                                                  |\n| `rbac.namespaced`                         | Creates Role and Rolebinding instead of the default ClusterRole and ClusteRoleBindings for the grafana instance  | `false` |\n| `rbac.useExistingRole`                    | Set to a rolename to use existing role - skipping role creating - but still doing serviceaccount and rolebinding to the rolename set here. | `nil` |\n| `rbac.pspEnabled`                         | Create PodSecurityPolicy (with `rbac.create`, grant roles permissions as well) | `false`                |\n| `rbac.pspUseAppArmor`                     | Enforce AppArmor in created PodSecurityPolicy (requires `rbac.pspEnabled`)  | `false`                   |\n| `rbac.extraRoleRules`                     | Additional rules to add to the Role           | []                                                      |\n| `rbac.extraClusterRoleRules`              | Additional rules to add to the ClusterRole    | []                                                      |\n| `command`                                 | Define command to be executed by grafana container at startup | `nil`                                   |\n| `args`                                    | Define additional args if command is used     | `nil`                                                   |\n| `testFramework.enabled`                   | Whether to create test-related resources      | `true`                                                  |\n| `testFramework.image`                     | `test-framework` image repository.            | `bats/bats`                                             |\n| `testFramework.tag`                       | `test-framework` image tag.                   | `v1.4.1`                                                |\n| `testFramework.imagePullPolicy`           | `test-framework` image pull policy.           | `IfNotPresent`                                          |\n| `testFramework.securityContext`           | `test-framework` securityContext              | `{}`                                                    |\n| `downloadDashboards.env`                  | Environment variables to be passed to the `download-dashboards` container | `{}`                        |\n| `downloadDashboards.envFromSecret`        | Name of a Kubernetes secret (must be manually created in the same namespace) containing values to be added to the environment. Can be templated | `\"\"` |\n| `downloadDashboards.resources`            | Resources of `download-dashboards` container  | `{}`                                                    |\n| `downloadDashboardsImage.repository`      | Curl docker image repo                        | `curlimages/curl`                                       |\n| `downloadDashboardsImage.tag`             | Curl docker image tag                         | `7.73.0`                                                |\n| `downloadDashboardsImage.sha`             | Curl docker image sha (optional)              | `\"\"`                                                    |\n| `downloadDashboardsImage.pullPolicy`      | Curl docker image pull policy                 | `IfNotPresent`                                          |\n| `namespaceOverride`                       | Override the deployment namespace             | `\"\"` (`Release.Namespace`)                              |\n| `serviceMonitor.enabled`                  | Use servicemonitor from prometheus operator   | `false`                                                 |\n| `serviceMonitor.namespace`                | Namespace this servicemonitor is installed in |                                                         |\n| `serviceMonitor.interval`                 | How frequently Prometheus should scrape       | `1m`                                                    |\n| `serviceMonitor.path`                     | Path to scrape                                | `/metrics`                                              |\n| `serviceMonitor.scheme`                   | Scheme to use for metrics scraping            | `http`                                                  |\n| `serviceMonitor.tlsConfig`                | TLS configuration block for the endpoint      | `{}`                                                    |\n| `serviceMonitor.labels`                   | Labels for the servicemonitor passed to Prometheus Operator      |  `{}`                                |\n| `serviceMonitor.scrapeTimeout`            | Timeout after which the scrape is ended       | `30s`                                                   |\n| `serviceMonitor.relabelings`              | RelabelConfigs to apply to samples before scraping.     | `[]`                                      |\n| `serviceMonitor.metricRelabelings`        | MetricRelabelConfigs to apply to samples before ingestion.  | `[]`                                      |\n| `revisionHistoryLimit`                    | Number of old ReplicaSets to retain           | `10`                                                    |\n| `imageRenderer.enabled`                    | Enable the image-renderer deployment & service                                     | `false`                          |\n| `imageRenderer.image.repository`           | image-renderer Image repository                                                    | `grafana/grafana-image-renderer` |\n| `imageRenderer.image.tag`                  | image-renderer Image tag                                                           | `latest`                         |\n| `imageRenderer.image.sha`                  | image-renderer Image sha (optional)                                                | `\"\"`                             |\n| `imageRenderer.image.pullPolicy`           | image-renderer ImagePullPolicy                                                     | `Always`                         |\n| `imageRenderer.env`                        | extra env-vars for image-renderer                                                  | `{}`                             |\n| `imageRenderer.envValueFrom`               | Environment variables for image-renderer from alternate sources. See the API docs on [EnvVarSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#envvarsource-v1-core) for format details. Can be templated | `{}` |\n| `imageRenderer.serviceAccountName`         | image-renderer deployment serviceAccountName                                       | `\"\"`                             |\n| `imageRenderer.securityContext`            | image-renderer deployment securityContext                                          | `{}`                             |\n| `imageRenderer.hostAliases`                | image-renderer deployment Host Aliases                                             | `[]`                             |\n| `imageRenderer.priorityClassName`          | image-renderer deployment priority class                                           | `''`                             |\n| `imageRenderer.service.enabled`            | Enable the image-renderer service                                                  | `true`                           |\n| `imageRenderer.service.portName`           | image-renderer service port name                                                   | `http`                           |\n| `imageRenderer.service.port`               | image-renderer port used by deployment                                             | `8081`                           |\n| `imageRenderer.service.targetPort`         | image-renderer service port used by service                                        | `8081`                           |\n| `imageRenderer.appProtocol`                | Adds the appProtocol field to the service                                          | ``                               |\n| `imageRenderer.grafanaSubPath`             | Grafana sub path to use for image renderer callback url                            | `''`                             |\n| `imageRenderer.podPortName`                | name of the image-renderer port on the pod                                         | `http`                           |\n| `imageRenderer.revisionHistoryLimit`       | number of image-renderer replica sets to keep                                      | `10`                             |\n| `imageRenderer.networkPolicy.limitIngress` | Enable a NetworkPolicy to limit inbound traffic from only the created grafana pods | `true`                           |\n| `imageRenderer.networkPolicy.limitEgress`  | Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods  | `false`                          |\n| `imageRenderer.resources`                  | Set resource limits for image-renderer pods                                        | `{}`                             |\n| `imageRenderer.nodeSelector`               | Node labels for pod assignment                | `{}`                                                    |\n| `imageRenderer.tolerations`                | Toleration labels for pod assignment          | `[]`                                                    |\n| `imageRenderer.affinity`                   | Affinity settings for pod assignment          | `{}`                                                    |\n| `networkPolicy.enabled`                    | Enable creation of NetworkPolicy resources.                                                                              | `false`             |\n| `networkPolicy.allowExternal`              | Don't require client label for connections                                                                               | `true`              |\n| `networkPolicy.explicitNamespacesSelector` | A Kubernetes LabelSelector to explicitly select namespaces from which traffic could be allowed                           | `{}`                |\n| `networkPolicy.ingress`                    | Enable the creation of an ingress network policy             | `true`    |\n| `networkPolicy.egress.enabled`             | Enable the creation of an egress network policy              | `false`   |\n| `networkPolicy.egress.ports`               | An array of ports to allow for the egress                    | `[]`    |\n| `enableKubeBackwardCompatibility`          | Enable backward compatibility of kubernetes where pod's defintion version below 1.13 doesn't have the enableServiceLinks option  | `false`     |\n\n### Example ingress with path\n\nWith grafana 6.3 and above\n\n```yaml\ngrafana.ini:\n  server:\n    domain: monitoring.example.com\n    root_url: \"%(protocol)s://%(domain)s/grafana\"\n    serve_from_sub_path: true\ningress:\n  enabled: true\n  hosts:\n    - \"monitoring.example.com\"\n  path: \"/grafana\"\n```\n\n### Example of extraVolumeMounts\n\nVolume can be type persistentVolumeClaim or hostPath but not both at same time.\nIf neither existingClaim or hostPath argument is given then type is emptyDir.\n\n```yaml\n- extraVolumeMounts:\n  - name: plugins\n    mountPath: /var/lib/grafana/plugins\n    subPath: configs/grafana/plugins\n    existingClaim: existing-grafana-claim\n    readOnly: false\n  - name: dashboards\n    mountPath: /var/lib/grafana/dashboards\n    hostPath: /usr/shared/grafana/dashboards\n    readOnly: false\n```\n\n## Import dashboards\n\nThere are a few methods to import dashboards to Grafana. Below are some examples and explanations as to how to use each method:\n\n```yaml\ndashboards:\n  default:\n    some-dashboard:\n      json: |\n        {\n          \"annotations\":\n\n          ...\n          # Complete json file here\n          ...\n\n          \"title\": \"Some Dashboard\",\n          \"uid\": \"abcd1234\",\n          \"version\": 1\n        }\n    custom-dashboard:\n      # This is a path to a file inside the dashboards directory inside the chart directory\n      file: dashboards/custom-dashboard.json\n    prometheus-stats:\n      # Ref: https://grafana.com/dashboards/2\n      gnetId: 2\n      revision: 2\n      datasource: Prometheus\n    loki-dashboard-quick-search:\n      gnetId: 12019\n      revision: 2\n      datasource:\n      - name: DS_PROMETHEUS\n        value: Prometheus\n      - name: DS_LOKI\n        value: Loki\n    local-dashboard:\n      url: https://raw.githubusercontent.com/user/repository/master/dashboards/dashboard.json\n```\n\n## BASE64 dashboards\n\nDashboards could be stored on a server that does not return JSON directly and instead of it returns a Base64 encoded file (e.g. Gerrit)\nA new parameter has been added to the url use case so if you specify a b64content value equals to true after the url entry a Base64 decoding is applied before save the file to disk.\nIf this entry is not set or is equals to false not decoding is applied to the file before saving it to disk.\n\n### Gerrit use case\n\nGerrit API for download files has the following schema: <https://yourgerritserver/a/{project-name}/branches/{branch-id}/files/{file-id}/content> where {project-name} and\n{file-id} usually has '/' in their values and so they MUST be replaced by %2F so if project-name is user/repo, branch-id is master and file-id is equals to dir1/dir2/dashboard\nthe url value is <https://yourgerritserver/a/user%2Frepo/branches/master/files/dir1%2Fdir2%2Fdashboard/content>\n\n## Sidecar for dashboards\n\nIf the parameter `sidecar.dashboards.enabled` is set, a sidecar container is deployed in the grafana\npod. This container watches all configmaps (or secrets) in the cluster and filters out the ones with\na label as defined in `sidecar.dashboards.label`. The files defined in those configmaps are written\nto a folder and accessed by grafana. Changes to the configmaps are monitored and the imported\ndashboards are deleted/updated.\n\nA recommendation is to use one configmap per dashboard, as a reduction of multiple dashboards inside\none configmap is currently not properly mirrored in grafana.\n\nExample dashboard config:\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: sample-grafana-dashboard\n  labels:\n     grafana_dashboard: \"1\"\ndata:\n  k8s-dashboard.json: |-\n  [...]\n```\n\n## Sidecar for datasources\n\nIf the parameter `sidecar.datasources.enabled` is set, an init container is deployed in the grafana\npod. This container lists all secrets (or configmaps, though not recommended) in the cluster and\nfilters out the ones with a label as defined in `sidecar.datasources.label`. The files defined in\nthose secrets are written to a folder and accessed by grafana on startup. Using these yaml files,\nthe data sources in grafana can be imported.\n\nShould you aim for reloading datasources in Grafana each time the config is changed, set `sidecar.datasources.skipReload: false` and adjust `sidecar.datasources.reloadURL` to `http://<svc-name>.<namespace>.svc.cluster.local/api/admin/provisioning/datasources/reload`.\n\nSecrets are recommended over configmaps for this usecase because datasources usually contain private\ndata like usernames and passwords. Secrets are the more appropriate cluster resource to manage those.\n\nExample values to add a postgres datasource as a kubernetes secret:\n```yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: grafana-datasources\n  labels:\n    grafana_datasource: 'true' # default value for: sidecar.datasources.label\nstringData:\n  pg-db.yaml: |-\n    apiVersion: 1\n    datasources:\n      - name: My pg db datasource\n        type: postgres\n        url: my-postgresql-db:5432\n        user: db-readonly-user\n        secureJsonData:\n          password: 'SUperSEcretPa$$word'\n        jsonData:\n          database: my_datase\n          sslmode: 'disable' # disable/require/verify-ca/verify-full\n          maxOpenConns: 0 # Grafana v5.4+\n          maxIdleConns: 2 # Grafana v5.4+\n          connMaxLifetime: 14400 # Grafana v5.4+\n          postgresVersion: 1000 # 903=9.3, 904=9.4, 905=9.5, 906=9.6, 1000=10\n          timescaledb: false\n        # <bool> allow users to edit datasources from the UI.\n        editable: false\n```\n\nExample values to add a datasource adapted from [Grafana](http://docs.grafana.org/administration/provisioning/#example-datasource-config-file):\n\n```yaml\ndatasources:\n datasources.yaml:\n   apiVersion: 1\n   datasources:\n      # <string, required> name of the datasource. Required\n    - name: Graphite\n      # <string, required> datasource type. Required\n      type: graphite\n      # <string, required> access mode. proxy or direct (Server or Browser in the UI). Required\n      access: proxy\n      # <int> org id. will default to orgId 1 if not specified\n      orgId: 1\n      # <string> url\n      url: http://localhost:8080\n      # <string> database password, if used\n      password:\n      # <string> database user, if used\n      user:\n      # <string> database name, if used\n      database:\n      # <bool> enable/disable basic auth\n      basicAuth:\n      # <string> basic auth username\n      basicAuthUser:\n      # <string> basic auth password\n      basicAuthPassword:\n      # <bool> enable/disable with credentials headers\n      withCredentials:\n      # <bool> mark as default datasource. Max one per org\n      isDefault:\n      # <map> fields that will be converted to json and stored in json_data\n      jsonData:\n         graphiteVersion: \"1.1\"\n         tlsAuth: true\n         tlsAuthWithCACert: true\n      # <string> json object of data that will be encrypted.\n      secureJsonData:\n        tlsCACert: \"...\"\n        tlsClientCert: \"...\"\n        tlsClientKey: \"...\"\n      version: 1\n      # <bool> allow users to edit datasources from the UI.\n      editable: false\n```\n\n## Sidecar for notifiers\n\nIf the parameter `sidecar.notifiers.enabled` is set, an init container is deployed in the grafana\npod. This container lists all secrets (or configmaps, though not recommended) in the cluster and\nfilters out the ones with a label as defined in `sidecar.notifiers.label`. The files defined in\nthose secrets are written to a folder and accessed by grafana on startup. Using these yaml files,\nthe notification channels in grafana can be imported. The secrets must be created before\n`helm install` so that the notifiers init container can list the secrets.\n\nSecrets are recommended over configmaps for this usecase because alert notification channels usually contain\nprivate data like SMTP usernames and passwords. Secrets are the more appropriate cluster resource to manage those.\n\nExample datasource config adapted from [Grafana](https://grafana.com/docs/grafana/latest/administration/provisioning/#alert-notification-channels):\n\n```yaml\nnotifiers:\n  - name: notification-channel-1\n    type: slack\n    uid: notifier1\n    # either\n    org_id: 2\n    # or\n    org_name: Main Org.\n    is_default: true\n    send_reminder: true\n    frequency: 1h\n    disable_resolve_message: false\n    # See `Supported Settings` section for settings supporter for each\n    # alert notification type.\n    settings:\n      recipient: 'XXX'\n      token: 'xoxb'\n      uploadImage: true\n      url: https://slack.com\n\ndelete_notifiers:\n  - name: notification-channel-1\n    uid: notifier1\n    org_id: 2\n  - name: notification-channel-2\n    # default org_id: 1\n```\n\n## Provision alert rules, contact points, notification policies and notification templates\n\nThere are two methods to provision alerting configuration in Grafana. Below are some examples and explanations as to how to use each method:\n\n```yaml\nalerting:\n  team1-alert-rules.yaml:\n    file: alerting/team1/rules.yaml\n  team2-alert-rules.yaml:\n    file: alerting/team2/rules.yaml\n  team3-alert-rules.yaml:\n    file: alerting/team3/rules.yaml\n  notification-policies.yaml:\n    file: alerting/shared/notification-policies.yaml\n  notification-templates.yaml:\n    file: alerting/shared/notification-templates.yaml\n  contactpoints.yaml:\n    apiVersion: 1\n    contactPoints:\n      - orgId: 1\n        name: Slack channel\n        receivers:\n          - uid: default-receiver\n            type: slack\n            settings:\n              # Webhook URL to be filled in\n              url: \"\"\n              # We need to escape double curly braces for the tpl function.\n              text: '{{ `{{ template \"default.message\" . }}` }}'\n              title: '{{ `{{ template \"default.title\" . }}` }}'\n```\n\nThere are two possibilities:\n\n* Inlining the file contents as described in the example `values.yaml` and the official [Grafana documentation](https://grafana.com/docs/grafana/next/alerting/set-up/provision-alerting-resources/file-provisioning/).\n* Importing a file using a relative path starting from the chart root directory.\n\n### Important notes on file provisioning\n\n* The chart supports importing YAML and JSON files.\n* The filename must be unique, otherwise one volume mount will overwrite the other.\n* In case of inlining, double curly braces that arise from the Grafana configuration format and are not intended as templates for the chart must be escaped.\n* The number of total files under `alerting:` is not limited. Each file will end up as a volume mount in the corresponding provisioning folder of the deployed Grafana instance.\n* The file size for each import is limited by what the function `.Files.Get` can handle, which suffices for most cases.\n\n## How to serve Grafana with a path prefix (/grafana)\n\nIn order to serve Grafana with a prefix (e.g., <http://example.com/grafana>), add the following to your values.yaml.\n\n```yaml\ningress:\n  enabled: true\n  annotations:\n    kubernetes.io/ingress.class: \"nginx\"\n    nginx.ingress.kubernetes.io/rewrite-target: /$1\n    nginx.ingress.kubernetes.io/use-regex: \"true\"\n\n  path: /grafana/?(.*)\n  hosts:\n    - k8s.example.dev\n\ngrafana.ini:\n  server:\n    root_url: http://localhost:3000/grafana # this host can be localhost\n```\n\n## How to securely reference secrets in grafana.ini\n\nThis example uses Grafana [file providers](https://grafana.com/docs/grafana/latest/administration/configuration/#file-provider) for secret values and the `extraSecretMounts` configuration flag (Additional grafana server secret mounts) to mount the secrets.\n\nIn grafana.ini:\n\n```yaml\ngrafana.ini:\n  [auth.generic_oauth]\n  enabled = true\n  client_id = $__file{/etc/secrets/auth_generic_oauth/client_id}\n  client_secret = $__file{/etc/secrets/auth_generic_oauth/client_secret}\n```\n\nExisting secret, or created along with helm:\n\n```yaml\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: auth-generic-oauth-secret\ntype: Opaque\nstringData:\n  client_id: <value>\n  client_secret: <value>\n```\n\nInclude in the `extraSecretMounts` configuration flag:\n\n```yaml\n- extraSecretMounts:\n  - name: auth-generic-oauth-secret-mount\n    secretName: auth-generic-oauth-secret\n    defaultMode: 0440\n    mountPath: /etc/secrets/auth_generic_oauth\n    readOnly: true\n```\n\n### extraSecretMounts using a Container Storage Interface (CSI) provider\n\nThis example uses a CSI driver e.g. retrieving secrets using [Azure Key Vault Provider](https://github.com/Azure/secrets-store-csi-driver-provider-azure)\n\n```yaml\n- extraSecretMounts:\n  - name: secrets-store-inline\n    mountPath: /run/secrets\n    readOnly: true\n    csi:\n      driver: secrets-store.csi.k8s.io\n      readOnly: true\n      volumeAttributes:\n        secretProviderClass: \"my-provider\"\n      nodePublishSecretRef:\n        name: akv-creds\n```\n\n## Image Renderer Plug-In\n\nThis chart supports enabling [remote image rendering](https://github.com/grafana/grafana-image-renderer/blob/master/README.md#run-in-docker)\n\n```yaml\nimageRenderer:\n  enabled: true\n```\n\n### Image Renderer NetworkPolicy\n\nBy default the image-renderer pods will have a network policy which only allows ingress traffic from the created grafana instance\n\n### High Availability for unified alerting\n\nIf you want to run Grafana in a high availability cluster you need to enable\nthe headless service by setting `headlessService: true` in your `values.yaml`\nfile.\n\nAs next step you have to setup the `grafana.ini` in your `values.yaml` in a way\nthat it will make use of the headless service to obtain all the IPs of the\ncluster. You should replace ``{{ Name }}`` with the name of your helm deployment.\n\n```yaml\ngrafana.ini:\n  ...\n  unified_alerting:\n    enabled: true\n    ha_peers: {{ Name }}-headless:9094\n    ha_listen_address: ${POD_IP}:9094\n    ha_advertise_address: ${POD_IP}:9094\n\n  alerting:\n    enabled: false\n```\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/ci/default-values.yaml",
    "content": "# Leave this file empty to ensure that CI runs builds against the default configuration in values.yaml.\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/ci/with-affinity-values.yaml",
    "content": "affinity:\n  podAntiAffinity:\n    preferredDuringSchedulingIgnoredDuringExecution:\n      - podAffinityTerm:\n          labelSelector:\n            matchLabels:\n              app.kubernetes.io/instance: grafana-test\n              app.kubernetes.io/name: grafana\n          topologyKey: failure-domain.beta.kubernetes.io/zone\n        weight: 100\n    requiredDuringSchedulingIgnoredDuringExecution:\n      - labelSelector:\n          matchLabels:\n            app.kubernetes.io/instance: grafana-test\n            app.kubernetes.io/name: grafana\n        topologyKey: kubernetes.io/hostname\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/ci/with-dashboard-json-values.yaml",
    "content": "dashboards:\n  my-provider:\n    my-awesome-dashboard:\n      # An empty but valid dashboard\n      json: |\n        {\n          \"__inputs\": [],\n          \"__requires\": [\n            {\n              \"type\": \"grafana\",\n              \"id\": \"grafana\",\n              \"name\": \"Grafana\",\n              \"version\": \"6.3.5\"\n            }\n          ],\n          \"annotations\": {\n            \"list\": [\n              {\n                \"builtIn\": 1,\n                \"datasource\": \"-- Grafana --\",\n                \"enable\": true,\n                \"hide\": true,\n                \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                \"name\": \"Annotations & Alerts\",\n                \"type\": \"dashboard\"\n              }\n            ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"id\": null,\n          \"links\": [],\n          \"panels\": [],\n          \"schemaVersion\": 19,\n          \"style\": \"dark\",\n          \"tags\": [],\n          \"templating\": {\n            \"list\": []\n          },\n          \"time\": {\n            \"from\": \"now-6h\",\n            \"to\": \"now\"\n          },\n          \"timepicker\": {\n            \"refresh_intervals\": [\"5s\"]\n          },\n          \"timezone\": \"\",\n          \"title\": \"Dummy Dashboard\",\n          \"uid\": \"IdcYQooWk\",\n          \"version\": 1\n        }\n      datasource: Prometheus\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/ci/with-dashboard-values.yaml",
    "content": "dashboards:\n  my-provider:\n    my-awesome-dashboard:\n      gnetId: 10000\n      revision: 1\n      datasource: Prometheus\ndashboardProviders:\n  dashboardproviders.yaml:\n    apiVersion: 1\n    providers:\n    - name: 'my-provider'\n      orgId: 1\n      folder: ''\n      type: file\n      updateIntervalSeconds: 10\n      disableDeletion: true\n      editable: true\n      options:\n        path: /var/lib/grafana/dashboards/my-provider\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/ci/with-extraconfigmapmounts-values.yaml",
    "content": "extraConfigmapMounts:\n  - name: '{{ include \"grafana.fullname\" . }}'\n    configMap: '{{ include \"grafana.fullname\" . }}'\n    mountPath: /var/lib/grafana/dashboards/test-dashboard.json\n    # This is not a realistic test, but for this we only care about extraConfigmapMounts not being empty and pointing to an existing ConfigMap\n    subPath: grafana.ini\n    readOnly: true\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/ci/with-image-renderer-values.yaml",
    "content": "podLabels:\n  customLableA: Aaaaa\nimageRenderer:\n  enabled: true\n  env:\n    RENDERING_ARGS: --disable-gpu,--window-size=1280x758\n    RENDERING_MODE: clustered\n  podLabels:\n    customLableB: Bbbbb\n  networkPolicy:\n    limitIngress: true\n    limitEgress: true\n  resources:\n    limits:\n      cpu: 1000m\n      memory: 1000Mi\n    requests:\n      cpu: 500m\n      memory: 50Mi\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/ci/with-persistence.yaml",
    "content": "persistence:\n  type: pvc\n  enabled: true\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/dashboards/custom-dashboard.json",
    "content": "{}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/NOTES.txt",
    "content": "1. Get your '{{ .Values.adminUser }}' user password by running:\n\n   kubectl get secret --namespace {{ include \"grafana.namespace\" . }} {{ .Values.admin.existingSecret | default (include \"grafana.fullname\" .) }} -o jsonpath=\"{.data.{{ .Values.admin.passwordKey | default \"admin-password\" }}}\" | base64 --decode ; echo\n\n\n2. The Grafana server can be accessed via port {{ .Values.service.port }} on the following DNS name from within your cluster:\n\n   {{ include \"grafana.fullname\" . }}.{{ include \"grafana.namespace\" . }}.svc.cluster.local\n{{ if .Values.ingress.enabled }}\n   If you bind grafana to 80, please update values in values.yaml and reinstall:\n   ```\n   securityContext:\n     runAsUser: 0\n     runAsGroup: 0\n     fsGroup: 0\n\n   command:\n   - \"setcap\"\n   - \"'cap_net_bind_service=+ep'\"\n   - \"/usr/sbin/grafana-server &&\"\n   - \"sh\"\n   - \"/run.sh\"\n   ```\n   Details refer to https://grafana.com/docs/installation/configuration/#http-port.\n   Or grafana would always crash.\n\n   From outside the cluster, the server URL(s) are:\n     {{- range .Values.ingress.hosts }}\n     http://{{ . }}\n     {{- end }}\n{{- else }}\n   Get the Grafana URL to visit by running these commands in the same shell:\n   {{- if contains \"NodePort\" .Values.service.type }}\n     export NODE_PORT=$(kubectl get --namespace {{ include \"grafana.namespace\" . }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"grafana.fullname\" . }})\n     export NODE_IP=$(kubectl get nodes --namespace {{ include \"grafana.namespace\" . }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n     echo http://$NODE_IP:$NODE_PORT\n   {{- else if contains \"LoadBalancer\" .Values.service.type }}\n   NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n        You can watch the status of by running 'kubectl get svc --namespace {{ include \"grafana.namespace\" . }} -w {{ include \"grafana.fullname\" . }}'\n     export SERVICE_IP=$(kubectl get svc --namespace {{ include \"grafana.namespace\" . }} {{ include \"grafana.fullname\" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')\n     http://$SERVICE_IP:{{ .Values.service.port -}}\n   {{- else if contains \"ClusterIP\"  .Values.service.type }}\n     export POD_NAME=$(kubectl get pods --namespace {{ include \"grafana.namespace\" . }} -l \"app.kubernetes.io/name={{ include \"grafana.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n     kubectl --namespace {{ include \"grafana.namespace\" . }} port-forward $POD_NAME 3000\n   {{- end }}\n{{- end }}\n\n3. Login with the password from step 1 and the username: {{ .Values.adminUser }}\n\n{{- if not .Values.persistence.enabled }}\n#################################################################################\n######   WARNING: Persistence is disabled!!! You will lose your data when   #####\n######            the Grafana pod is terminated.                            #####\n#################################################################################\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"grafana.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"grafana.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"grafana.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate the name of the service account\n*/}}\n{{- define \"grafana.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"grafana.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n\n{{- define \"grafana.serviceAccountNameTest\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (print (include \"grafana.fullname\" .) \"-test\") .Values.serviceAccount.nameTest }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.nameTest }}\n{{- end }}\n{{- end }}\n\n{{/*\nAllow the release namespace to be overridden for multi-namespace deployments in combined charts\n*/}}\n{{- define \"grafana.namespace\" -}}\n{{- if .Values.namespaceOverride }}\n{{- .Values.namespaceOverride }}\n{{- else }}\n{{- .Release.Namespace }}\n{{- end }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"grafana.labels\" -}}\nhelm.sh/chart: {{ include \"grafana.chart\" . }}\n{{ include \"grafana.selectorLabels\" . }}\n{{- if or .Chart.AppVersion .Values.image.tag }}\napp.kubernetes.io/version: {{ mustRegexReplaceAllLiteral \"@sha.*\" .Values.image.tag \"\" | default .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- with .Values.extraLabels }}\n{{ toYaml . }}\n{{- end }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"grafana.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"grafana.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"grafana.imageRenderer.labels\" -}}\nhelm.sh/chart: {{ include \"grafana.chart\" . }}\n{{ include \"grafana.imageRenderer.selectorLabels\" . }}\n{{- if or .Chart.AppVersion .Values.image.tag }}\napp.kubernetes.io/version: {{ mustRegexReplaceAllLiteral \"@sha.*\" .Values.image.tag \"\" | default .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels ImageRenderer\n*/}}\n{{- define \"grafana.imageRenderer.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"grafana.name\" . }}-image-renderer\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nLooks if there's an existing secret and reuse its password. If not it generates\nnew password and use it.\n*/}}\n{{- define \"grafana.password\" -}}\n{{- $secret := (lookup \"v1\" \"Secret\" (include \"grafana.namespace\" .) (include \"grafana.fullname\" .) ) }}\n{{- if $secret }}\n{{- index $secret \"data\" \"admin-password\" }}\n{{- else }}\n{{- (randAlphaNum 40) | b64enc | quote }}\n{{- end }}\n{{- end }}\n\n{{/*\nReturn the appropriate apiVersion for rbac.\n*/}}\n{{- define \"grafana.rbac.apiVersion\" -}}\n{{- if $.Capabilities.APIVersions.Has \"rbac.authorization.k8s.io/v1\" }}\n{{- print \"rbac.authorization.k8s.io/v1\" }}\n{{- else }}\n{{- print \"rbac.authorization.k8s.io/v1beta1\" }}\n{{- end }}\n{{- end }}\n\n{{/*\nReturn the appropriate apiVersion for ingress.\n*/}}\n{{- define \"grafana.ingress.apiVersion\" -}}\n{{- if and ($.Capabilities.APIVersions.Has \"networking.k8s.io/v1\") (semverCompare \">= 1.19-0\" .Capabilities.KubeVersion.Version) }}\n{{- print \"networking.k8s.io/v1\" }}\n{{- else if $.Capabilities.APIVersions.Has \"networking.k8s.io/v1beta1\" }}\n{{- print \"networking.k8s.io/v1beta1\" }}\n{{- else }}\n{{- print \"extensions/v1beta1\" }}\n{{- end }}\n{{- end }}\n\n{{/*\nReturn the appropriate apiVersion for Horizontal Pod Autoscaler.\n*/}}\n{{- define \"grafana.hpa.apiVersion\" -}}\n{{- if $.Capabilities.APIVersions.Has \"autoscaling/v2/HorizontalPodAutoscaler\" }}\n{{- print \"autoscaling/v2\" }}\n{{- else if $.Capabilities.APIVersions.Has \"autoscaling/v2beta2/HorizontalPodAutoscaler\" }}\n{{- print \"autoscaling/v2beta2\" }}\n{{- else }}\n{{- print \"autoscaling/v2beta1\" }}\n{{- end }}\n{{- end }}\n\n{{/*\nReturn the appropriate apiVersion for podDisruptionBudget.\n*/}}\n{{- define \"grafana.podDisruptionBudget.apiVersion\" -}}\n{{- if $.Capabilities.APIVersions.Has \"policy/v1/PodDisruptionBudget\" }}\n{{- print \"policy/v1\" }}\n{{- else }}\n{{- print \"policy/v1beta1\" }}\n{{- end }}\n{{- end }}\n\n{{/*\nReturn if ingress is stable.\n*/}}\n{{- define \"grafana.ingress.isStable\" -}}\n{{- eq (include \"grafana.ingress.apiVersion\" .) \"networking.k8s.io/v1\" }}\n{{- end }}\n\n{{/*\nReturn if ingress supports ingressClassName.\n*/}}\n{{- define \"grafana.ingress.supportsIngressClassName\" -}}\n{{- or (eq (include \"grafana.ingress.isStable\" .) \"true\") (and (eq (include \"grafana.ingress.apiVersion\" .) \"networking.k8s.io/v1beta1\") (semverCompare \">= 1.18-0\" .Capabilities.KubeVersion.Version)) }}\n{{- end }}\n\n{{/*\nReturn if ingress supports pathType.\n*/}}\n{{- define \"grafana.ingress.supportsPathType\" -}}\n{{- or (eq (include \"grafana.ingress.isStable\" .) \"true\") (and (eq (include \"grafana.ingress.apiVersion\" .) \"networking.k8s.io/v1beta1\") (semverCompare \">= 1.18-0\" .Capabilities.KubeVersion.Version)) }}\n{{- end }}\n\n{{/*\nFormats imagePullSecrets. Input is (dict \"root\" . \"imagePullSecrets\" .{specific imagePullSecrets})\n*/}}\n{{- define \"grafana.imagePullSecrets\" -}}\n{{- $root := .root }}\n{{- range (concat .root.Values.global.imagePullSecrets .imagePullSecrets) }}\n{{- if eq (typeOf .) \"map[string]interface {}\" }}\n- {{ toYaml (dict \"name\" (tpl .name $root)) | trim }}\n{{- else }}\n- name: {{ tpl . $root }}\n{{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/_pod.tpl",
    "content": "{{- define \"grafana.pod\" -}}\n{{- $sts := list \"sts\" \"StatefulSet\" \"statefulset\" -}}\n{{- $root := . -}}\n{{- with .Values.schedulerName }}\nschedulerName: \"{{ . }}\"\n{{- end }}\nserviceAccountName: {{ include \"grafana.serviceAccountName\" . }}\nautomountServiceAccountToken: {{ .Values.serviceAccount.autoMount }}\n{{- with .Values.securityContext }}\nsecurityContext:\n  {{- toYaml . | nindent 2 }}\n{{- end }}\n{{- with .Values.hostAliases }}\nhostAliases:\n  {{- toYaml . | nindent 2 }}\n{{- end }}\n{{- with .Values.priorityClassName }}\npriorityClassName: {{ . }}\n{{- end }}\n{{- if ( or .Values.persistence.enabled .Values.dashboards .Values.extraInitContainers (and .Values.sidecar.datasources.enabled .Values.sidecar.datasources.initDatasources) (and .Values.sidecar.notifiers.enabled .Values.sidecar.notifiers.initNotifiers)) }}\ninitContainers:\n{{- end }}\n{{- if ( and .Values.persistence.enabled .Values.initChownData.enabled ) }}\n  - name: init-chown-data\n    {{- if .Values.initChownData.image.sha }}\n    image: \"{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}@sha256:{{ .Values.initChownData.image.sha }}\"\n    {{- else }}\n    image: \"{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}\"\n    {{- end }}\n    imagePullPolicy: {{ .Values.initChownData.image.pullPolicy }}\n    {{- with .Values.initChownData.securityContext }}\n    securityContext:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    command:\n      - chown\n      - -R\n      - {{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.runAsGroup }}\n      - /var/lib/grafana\n    {{- with .Values.initChownData.resources }}\n    resources:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    volumeMounts:\n      - name: storage\n        mountPath: \"/var/lib/grafana\"\n        {{- with .Values.persistence.subPath }}\n        subPath: {{ tpl . $root }}\n        {{- end }}\n{{- end }}\n{{- if .Values.dashboards }}\n  - name: download-dashboards\n    {{- if .Values.downloadDashboardsImage.sha }}\n    image: \"{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}@sha256:{{ .Values.downloadDashboardsImage.sha }}\"\n    {{- else }}\n    image: \"{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}\"\n    {{- end }}\n    imagePullPolicy: {{ .Values.downloadDashboardsImage.pullPolicy }}\n    command: [\"/bin/sh\"]\n    args: [ \"-c\", \"mkdir -p /var/lib/grafana/dashboards/default && /bin/sh -x /etc/grafana/download_dashboards.sh\" ]\n    {{- with .Values.downloadDashboards.resources }}\n    resources:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    env:\n      {{- range $key, $value := .Values.downloadDashboards.env }}\n      - name: \"{{ $key }}\"\n        value: \"{{ $value }}\"\n      {{- end }}\n      {{- range $key, $value := .Values.downloadDashboards.envValueFrom }}\n      - name: {{ $key | quote }}\n        valueFrom:\n          {{- tpl (toYaml $value) $ | nindent 10 }}\n      {{- end }}\n    {{- with .Values.downloadDashboards.securityContext }}\n    securityContext:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.downloadDashboards.envFromSecret }}\n    envFrom:\n      - secretRef:\n          name: {{ tpl . $root }}\n    {{- end }}\n    volumeMounts:\n      - name: config\n        mountPath: \"/etc/grafana/download_dashboards.sh\"\n        subPath: download_dashboards.sh\n      - name: storage\n        mountPath: \"/var/lib/grafana\"\n        {{- with .Values.persistence.subPath }}\n        subPath: {{ tpl . $root }}\n        {{- end }}\n      {{- range .Values.extraSecretMounts }}\n      - name: {{ .name }}\n        mountPath: {{ .mountPath }}\n        readOnly: {{ .readOnly }}\n      {{- end }}\n{{- end }}\n{{- if and .Values.sidecar.datasources.enabled .Values.sidecar.datasources.initDatasources }}\n  - name: {{ include \"grafana.name\" . }}-init-sc-datasources\n    {{- if .Values.sidecar.image.sha }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}\"\n    {{- else }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}\"\n    {{- end }}\n    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}\n    env:\n      {{- range $key, $value := .Values.sidecar.datasources.env }}\n      - name: \"{{ $key }}\"\n        value: \"{{ $value }}\"\n      {{- end }}\n      {{- if .Values.sidecar.datasources.ignoreAlreadyProcessed }}\n      - name: IGNORE_ALREADY_PROCESSED\n        value: \"true\"\n      {{- end }}\n      - name: METHOD\n        value: \"LIST\"\n      - name: LABEL\n        value: \"{{ .Values.sidecar.datasources.label }}\"\n      {{- with .Values.sidecar.datasources.labelValue }}\n      - name: LABEL_VALUE\n        value: {{ quote . }}\n      {{- end }}\n      {{- if or .Values.sidecar.logLevel .Values.sidecar.datasources.logLevel }}\n      - name: LOG_LEVEL\n        value: {{ default .Values.sidecar.logLevel .Values.sidecar.datasources.logLevel }}\n      {{- end }}\n      - name: FOLDER\n        value: \"/etc/grafana/provisioning/datasources\"\n      - name: RESOURCE\n        value: {{ quote .Values.sidecar.datasources.resource }}\n      {{- with .Values.sidecar.enableUniqueFilenames }}\n      - name: UNIQUE_FILENAMES\n        value: \"{{ . }}\"\n      {{- end }}\n      {{- if .Values.sidecar.datasources.searchNamespace }}\n      - name: NAMESPACE\n        value: \"{{ tpl (.Values.sidecar.datasources.searchNamespace | join \",\") . }}\"\n      {{- end }}\n      {{- with .Values.sidecar.skipTlsVerify }}\n      - name: SKIP_TLS_VERIFY\n        value: \"{{ . }}\"\n      {{- end }}\n    {{- with .Values.sidecar.resources }}\n    resources:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.securityContext }}\n    securityContext:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    volumeMounts:\n      - name: sc-datasources-volume\n        mountPath: \"/etc/grafana/provisioning/datasources\"\n{{- end }}\n{{- if and .Values.sidecar.notifiers.enabled .Values.sidecar.notifiers.initNotifiers }}\n  - name: {{ include \"grafana.name\" . }}-init-sc-notifiers\n    {{- if .Values.sidecar.image.sha }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}\"\n    {{- else }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}\"\n    {{- end }}\n    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}\n    env:\n      {{- range $key, $value := .Values.sidecar.notifiers.env }}\n      - name: \"{{ $key }}\"\n        value: \"{{ $value }}\"\n      {{- end }}\n      {{- if .Values.sidecar.notifiers.ignoreAlreadyProcessed }}\n      - name: IGNORE_ALREADY_PROCESSED\n        value: \"true\"\n      {{- end }}\n      - name: METHOD\n        value: LIST\n      - name: LABEL\n        value: \"{{ .Values.sidecar.notifiers.label }}\"\n      {{- with .Values.sidecar.notifiers.labelValue }}\n      - name: LABEL_VALUE\n        value: {{ quote . }}\n      {{- end }}\n      {{- if or .Values.sidecar.logLevel .Values.sidecar.notifiers.logLevel }}\n      - name: LOG_LEVEL\n        value: {{ default .Values.sidecar.logLevel .Values.sidecar.notifiers.logLevel }}\n      {{- end }}\n      - name: FOLDER\n        value: \"/etc/grafana/provisioning/notifiers\"\n      - name: RESOURCE\n        value: {{ quote .Values.sidecar.notifiers.resource }}\n      {{- with .Values.sidecar.enableUniqueFilenames }}\n      - name: UNIQUE_FILENAMES\n        value: \"{{ . }}\"\n      {{- end }}\n      {{- with .Values.sidecar.notifiers.searchNamespace }}\n      - name: NAMESPACE\n        value: \"{{ tpl (. | join \",\") $root }}\"\n      {{- end }}\n      {{- with .Values.sidecar.skipTlsVerify }}\n      - name: SKIP_TLS_VERIFY\n        value: \"{{ . }}\"\n      {{- end }}\n    {{- with .Values.sidecar.livenessProbe }}\n    livenessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.readinessProbe }}\n    readinessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.resources }}\n    resources:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.securityContext }}\n    securityContext:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    volumeMounts:\n      - name: sc-notifiers-volume\n        mountPath: \"/etc/grafana/provisioning/notifiers\"\n{{- end}}\n{{- with .Values.extraInitContainers }}\n  {{- tpl (toYaml .) $root | nindent 2 }}\n{{- end }}\n{{- if or .Values.image.pullSecrets .Values.global.imagePullSecrets }}\nimagePullSecrets:\n  {{- include \"grafana.imagePullSecrets\" (dict \"root\" $root \"imagePullSecrets\" .Values.image.pullSecrets) | nindent 2 }}\n{{- end }}\n{{- if not .Values.enableKubeBackwardCompatibility }}\nenableServiceLinks: {{ .Values.enableServiceLinks }}\n{{- end }}\ncontainers:\n{{- if .Values.sidecar.alerts.enabled }}\n  - name: {{ include \"grafana.name\" . }}-sc-alerts\n    {{- if .Values.sidecar.image.sha }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}\"\n    {{- else }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}\"\n    {{- end }}\n    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}\n    env:\n      {{- range $key, $value := .Values.sidecar.alerts.env }}\n      - name: \"{{ $key }}\"\n        value: \"{{ $value }}\"\n      {{- end }}\n      {{- if .Values.sidecar.alerts.ignoreAlreadyProcessed }}\n      - name: IGNORE_ALREADY_PROCESSED\n        value: \"true\"\n      {{- end }}\n      - name: METHOD\n        value: {{ .Values.sidecar.alerts.watchMethod }}\n      - name: LABEL\n        value: \"{{ .Values.sidecar.alerts.label }}\"\n      {{- with .Values.sidecar.alerts.labelValue }}\n      - name: LABEL_VALUE\n        value: {{ quote . }}\n      {{- end }}\n      {{- if or .Values.sidecar.logLevel .Values.sidecar.alerts.logLevel }}\n      - name: LOG_LEVEL\n        value: {{ default .Values.sidecar.logLevel .Values.sidecar.alerts.logLevel }}\n      {{- end }}\n      - name: FOLDER\n        value: \"/etc/grafana/provisioning/alerting\"\n      - name: RESOURCE\n        value: {{ quote .Values.sidecar.alerts.resource }}\n      {{- with .Values.sidecar.enableUniqueFilenames }}\n      - name: UNIQUE_FILENAMES\n        value: \"{{ . }}\"\n      {{- end }}\n      {{- with .Values.sidecar.alerts.searchNamespace }}\n      - name: NAMESPACE\n        value: {{ . | join \",\" | quote }}\n      {{- end }}\n      {{- with .Values.sidecar.alerts.skipTlsVerify }}\n      - name: SKIP_TLS_VERIFY\n        value: {{ quote . }}\n      {{- end }}\n      {{- with .Values.sidecar.alerts.script }}\n      - name: SCRIPT\n        value: {{ quote . }}\n      {{- end }}\n      {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n      - name: REQ_USERNAME\n        valueFrom:\n          secretKeyRef:\n            name: {{ (tpl .Values.admin.existingSecret .) | default (include \"grafana.fullname\" .) }}\n            key: {{ .Values.admin.userKey | default \"admin-user\" }}\n      {{- end }}\n      {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n      - name: REQ_PASSWORD\n        valueFrom:\n          secretKeyRef:\n            name: {{ (tpl .Values.admin.existingSecret .) | default (include \"grafana.fullname\" .) }}\n            key: {{ .Values.admin.passwordKey | default \"admin-password\" }}\n      {{- end }}\n      {{- if not .Values.sidecar.alerts.skipReload }}\n      - name: REQ_URL\n        value: {{ .Values.sidecar.alerts.reloadURL }}\n      - name: REQ_METHOD\n        value: POST\n      {{- end }}\n      {{- if .Values.sidecar.alerts.watchServerTimeout }}\n      {{- if ne .Values.sidecar.alerts.watchMethod \"WATCH\" }}\n        {{- fail (printf \"Cannot use .Values.sidecar.alerts.watchServerTimeout with .Values.sidecar.alerts.watchMethod %s\" .Values.sidecar.alerts.watchMethod) }}\n      {{- end }}\n      - name: WATCH_SERVER_TIMEOUT\n        value: \"{{ .Values.sidecar.alerts.watchServerTimeout }}\"\n      {{- end }}\n      {{- if .Values.sidecar.alerts.watchClientTimeout }}\n      {{- if ne .Values.sidecar.alerts.watchMethod \"WATCH\" }}\n        {{- fail (printf \"Cannot use .Values.sidecar.alerts.watchClientTimeout with .Values.sidecar.alerts.watchMethod %s\" .Values.sidecar.alerts.watchMethod) }}\n      {{- end }}\n      - name: WATCH_CLIENT_TIMEOUT\n        value: \"{{ .Values.sidecar.alerts.watchClientTimeout }}\"\n      {{- end }}\n    {{- with .Values.sidecar.livenessProbe }}\n    livenessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.readinessProbe }}\n    readinessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.resources }}\n    resources:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.securityContext }}\n    securityContext:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    volumeMounts:\n      - name: sc-alerts-volume\n        mountPath: \"/etc/grafana/provisioning/alerting\"\n      {{- with .Values.sidecar.alerts.extraMounts }}\n      {{- toYaml . | trim | nindent 6 }}\n      {{- end }}        \n{{- end}}\n{{- if .Values.sidecar.dashboards.enabled }}\n  - name: {{ include \"grafana.name\" . }}-sc-dashboard\n    {{- if .Values.sidecar.image.sha }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}\"\n    {{- else }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}\"\n    {{- end }}\n    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}\n    env:\n      {{- range $key, $value := .Values.sidecar.dashboards.env }}\n      - name: \"{{ $key }}\"\n        value: \"{{ $value }}\"\n      {{- end }}\n      {{- if .Values.sidecar.dashboards.ignoreAlreadyProcessed }}\n      - name: IGNORE_ALREADY_PROCESSED\n        value: \"true\"\n      {{- end }}\n      - name: METHOD\n        value: {{ .Values.sidecar.dashboards.watchMethod }}\n      - name: LABEL\n        value: \"{{ .Values.sidecar.dashboards.label }}\"\n      {{- with .Values.sidecar.dashboards.labelValue }}\n      - name: LABEL_VALUE\n        value: {{ quote . }}\n      {{- end }}\n      {{- if or .Values.sidecar.logLevel .Values.sidecar.dashboards.logLevel }}\n      - name: LOG_LEVEL\n        value: {{ default .Values.sidecar.logLevel .Values.sidecar.dashboards.logLevel }}\n      {{- end }}\n      - name: FOLDER\n        value: \"{{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}\"\n      - name: RESOURCE\n        value: {{ quote .Values.sidecar.dashboards.resource }}\n      {{- with .Values.sidecar.enableUniqueFilenames }}\n      - name: UNIQUE_FILENAMES\n        value: \"{{ . }}\"\n      {{- end }}\n      {{- with .Values.sidecar.dashboards.searchNamespace }}\n      - name: NAMESPACE\n        value: \"{{ tpl (. | join \",\") $root }}\"\n      {{- end }}\n      {{- with .Values.sidecar.skipTlsVerify }}\n      - name: SKIP_TLS_VERIFY\n        value: \"{{ . }}\"\n      {{- end }}\n      {{- with .Values.sidecar.dashboards.folderAnnotation }}\n      - name: FOLDER_ANNOTATION\n        value: \"{{ . }}\"\n      {{- end }}\n      {{- with .Values.sidecar.dashboards.script }}\n      - name: SCRIPT\n        value: \"{{ . }}\"\n      {{- end }}\n      {{- if not .Values.sidecar.dashboards.skipReload }}\n      {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n      - name: REQ_USERNAME\n        valueFrom:\n          secretKeyRef:\n            name: {{ (tpl .Values.admin.existingSecret .) | default (include \"grafana.fullname\" .) }}\n            key: {{ .Values.admin.userKey | default \"admin-user\" }}\n      {{- end }}\n      {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n      - name: REQ_PASSWORD\n        valueFrom:\n          secretKeyRef:\n            name: {{ (tpl .Values.admin.existingSecret .) | default (include \"grafana.fullname\" .) }}\n            key: {{ .Values.admin.passwordKey | default \"admin-password\" }}\n      {{- end }}\n      - name: REQ_URL\n        value: {{ .Values.sidecar.dashboards.reloadURL }}\n      - name: REQ_METHOD\n        value: POST\n      {{- end }}\n      {{- if .Values.sidecar.dashboards.watchServerTimeout }}\n      {{- if ne .Values.sidecar.dashboards.watchMethod \"WATCH\" }}\n        {{- fail (printf \"Cannot use .Values.sidecar.dashboards.watchServerTimeout with .Values.sidecar.dashboards.watchMethod %s\" .Values.sidecar.dashboards.watchMethod) }}\n      {{- end }}\n      - name: WATCH_SERVER_TIMEOUT\n        value: \"{{ .Values.sidecar.dashboards.watchServerTimeout }}\"\n      {{- end }}\n      {{- if .Values.sidecar.dashboards.watchClientTimeout }}\n      {{- if ne .Values.sidecar.dashboards.watchMethod \"WATCH\" }}\n        {{- fail (printf \"Cannot use .Values.sidecar.dashboards.watchClientTimeout with .Values.sidecar.dashboards.watchMethod %s\" .Values.sidecar.dashboards.watchMethod) }}\n      {{- end }}\n      - name: WATCH_CLIENT_TIMEOUT\n        value: {{ .Values.sidecar.dashboards.watchClientTimeout | quote }}\n      {{- end }}\n    {{- with .Values.sidecar.livenessProbe }}\n    livenessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.readinessProbe }}\n    readinessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.resources }}\n    resources:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.securityContext }}\n    securityContext:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    volumeMounts:\n      - name: sc-dashboard-volume\n        mountPath: {{ .Values.sidecar.dashboards.folder | quote }}\n      {{- with .Values.sidecar.dashboards.extraMounts }}\n      {{- toYaml . | trim | nindent 6 }}\n      {{- end }}\n{{- end}}\n{{- if .Values.sidecar.datasources.enabled }}\n  - name: {{ include \"grafana.name\" . }}-sc-datasources\n    {{- if .Values.sidecar.image.sha }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}\"\n    {{- else }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}\"\n    {{- end }}\n    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}\n    env:\n      {{- range $key, $value := .Values.sidecar.datasources.env }}\n      - name: \"{{ $key }}\"\n        value: \"{{ $value }}\"\n      {{- end }}\n      {{- if .Values.sidecar.datasources.ignoreAlreadyProcessed }}\n      - name: IGNORE_ALREADY_PROCESSED\n        value: \"true\"\n      {{- end }}\n      - name: METHOD\n        value: {{ .Values.sidecar.datasources.watchMethod }}\n      - name: LABEL\n        value: \"{{ .Values.sidecar.datasources.label }}\"\n      {{- with .Values.sidecar.datasources.labelValue }}\n      - name: LABEL_VALUE\n        value: {{ quote . }}\n      {{- end }}\n      {{- if or .Values.sidecar.logLevel .Values.sidecar.datasources.logLevel }}\n      - name: LOG_LEVEL\n        value: {{ default .Values.sidecar.logLevel .Values.sidecar.datasources.logLevel }}\n      {{- end }}\n      - name: FOLDER\n        value: \"/etc/grafana/provisioning/datasources\"\n      - name: RESOURCE\n        value: {{ quote .Values.sidecar.datasources.resource }}\n      {{- with .Values.sidecar.enableUniqueFilenames }}\n      - name: UNIQUE_FILENAMES\n        value: \"{{ . }}\"\n      {{- end }}\n      {{- with .Values.sidecar.datasources.searchNamespace }}\n      - name: NAMESPACE\n        value: \"{{ tpl (. | join \",\") $root }}\"\n      {{- end }}\n      {{- if .Values.sidecar.skipTlsVerify }}\n      - name: SKIP_TLS_VERIFY\n        value: \"{{ .Values.sidecar.skipTlsVerify }}\"\n      {{- end }}\n      {{- if .Values.sidecar.datasources.script }}\n      - name: SCRIPT\n        value: \"{{ .Values.sidecar.datasources.script }}\"\n      {{- end }}\n      {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n      - name: REQ_USERNAME\n        valueFrom:\n          secretKeyRef:\n            name: {{ (tpl .Values.admin.existingSecret .) | default (include \"grafana.fullname\" .) }}\n            key: {{ .Values.admin.userKey | default \"admin-user\" }}\n      {{- end }}\n      {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n      - name: REQ_PASSWORD\n        valueFrom:\n          secretKeyRef:\n            name: {{ (tpl .Values.admin.existingSecret .) | default (include \"grafana.fullname\" .) }}\n            key: {{ .Values.admin.passwordKey | default \"admin-password\" }}\n      {{- end }}\n      {{- if not .Values.sidecar.datasources.skipReload }}\n      - name: REQ_URL\n        value: {{ .Values.sidecar.datasources.reloadURL }}\n      - name: REQ_METHOD\n        value: POST\n      {{- end }}\n      {{- if .Values.sidecar.datasources.watchServerTimeout }}\n      {{- if ne .Values.sidecar.datasources.watchMethod \"WATCH\" }}\n        {{- fail (printf \"Cannot use .Values.sidecar.datasources.watchServerTimeout with .Values.sidecar.datasources.watchMethod %s\" .Values.sidecar.datasources.watchMethod) }}\n      {{- end }}\n      - name: WATCH_SERVER_TIMEOUT\n        value: \"{{ .Values.sidecar.datasources.watchServerTimeout }}\"\n      {{- end }}\n      {{- if .Values.sidecar.datasources.watchClientTimeout }}\n      {{- if ne .Values.sidecar.datasources.watchMethod \"WATCH\" }}\n        {{- fail (printf \"Cannot use .Values.sidecar.datasources.watchClientTimeout with .Values.sidecar.datasources.watchMethod %s\" .Values.sidecar.datasources.watchMethod) }}\n      {{- end }}\n      - name: WATCH_CLIENT_TIMEOUT\n        value: \"{{ .Values.sidecar.datasources.watchClientTimeout }}\"\n      {{- end }}\n    {{- with .Values.sidecar.livenessProbe }}\n    livenessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.readinessProbe }}\n    readinessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.resources }}\n    resources:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.securityContext }}\n    securityContext:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    volumeMounts:\n      - name: sc-datasources-volume\n        mountPath: \"/etc/grafana/provisioning/datasources\"\n{{- end}}\n{{- if .Values.sidecar.notifiers.enabled }}\n  - name: {{ include \"grafana.name\" . }}-sc-notifiers\n    {{- if .Values.sidecar.image.sha }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}\"\n    {{- else }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}\"\n    {{- end }}\n    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}\n    env:\n      {{- range $key, $value := .Values.sidecar.notifiers.env }}\n      - name: \"{{ $key }}\"\n        value: \"{{ $value }}\"\n      {{- end }}\n      {{- if .Values.sidecar.notifiers.ignoreAlreadyProcessed }}\n      - name: IGNORE_ALREADY_PROCESSED\n        value: \"true\"\n      {{- end }}\n      - name: METHOD\n        value: {{ .Values.sidecar.notifiers.watchMethod }}\n      - name: LABEL\n        value: \"{{ .Values.sidecar.notifiers.label }}\"\n      {{- with .Values.sidecar.notifiers.labelValue }}\n      - name: LABEL_VALUE\n        value: {{ quote . }}\n      {{- end }}\n      {{- if or .Values.sidecar.logLevel .Values.sidecar.notifiers.logLevel }}\n      - name: LOG_LEVEL\n        value: {{ default .Values.sidecar.logLevel .Values.sidecar.notifiers.logLevel }}\n      {{- end }}\n      - name: FOLDER\n        value: \"/etc/grafana/provisioning/notifiers\"\n      - name: RESOURCE\n        value: {{ quote .Values.sidecar.notifiers.resource }}\n      {{- if .Values.sidecar.enableUniqueFilenames }}\n      - name: UNIQUE_FILENAMES\n        value: \"{{ .Values.sidecar.enableUniqueFilenames }}\"\n      {{- end }}\n      {{- with .Values.sidecar.notifiers.searchNamespace }}\n      - name: NAMESPACE\n        value: \"{{ tpl (. | join \",\") $root }}\"\n      {{- end }}\n      {{- with .Values.sidecar.skipTlsVerify }}\n      - name: SKIP_TLS_VERIFY\n        value: \"{{ . }}\"\n      {{- end }}\n      {{- if .Values.sidecar.notifiers.script }}\n      - name: SCRIPT\n        value: \"{{ .Values.sidecar.notifiers.script }}\"\n      {{- end }}\n      {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n      - name: REQ_USERNAME\n        valueFrom:\n          secretKeyRef:\n            name: {{ (tpl .Values.admin.existingSecret .) | default (include \"grafana.fullname\" .) }}\n            key: {{ .Values.admin.userKey | default \"admin-user\" }}\n      {{- end }}\n      {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n      - name: REQ_PASSWORD\n        valueFrom:\n          secretKeyRef:\n            name: {{ (tpl .Values.admin.existingSecret .) | default (include \"grafana.fullname\" .) }}\n            key: {{ .Values.admin.passwordKey | default \"admin-password\" }}\n      {{- end }}\n      {{- if not .Values.sidecar.notifiers.skipReload }}\n      - name: REQ_URL\n        value: {{ .Values.sidecar.notifiers.reloadURL }}\n      - name: REQ_METHOD\n        value: POST\n      {{- end }}\n      {{- if .Values.sidecar.notifiers.watchServerTimeout }}\n      {{- if ne .Values.sidecar.notifiers.watchMethod \"WATCH\" }}\n        {{- fail (printf \"Cannot use .Values.sidecar.notifiers.watchServerTimeout with .Values.sidecar.notifiers.watchMethod %s\" .Values.sidecar.notifiers.watchMethod) }}\n      {{- end }}\n      - name: WATCH_SERVER_TIMEOUT\n        value: \"{{ .Values.sidecar.notifiers.watchServerTimeout }}\"\n      {{- end }}\n      {{- if .Values.sidecar.notifiers.watchClientTimeout }}\n      {{- if ne .Values.sidecar.notifiers.watchMethod \"WATCH\" }}\n        {{- fail (printf \"Cannot use .Values.sidecar.notifiers.watchClientTimeout with .Values.sidecar.notifiers.watchMethod %s\" .Values.sidecar.notifiers.watchMethod) }}\n      {{- end }}\n      - name: WATCH_CLIENT_TIMEOUT\n        value: \"{{ .Values.sidecar.notifiers.watchClientTimeout }}\"\n      {{- end }}\n    {{- with .Values.sidecar.livenessProbe }}\n    livenessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.readinessProbe }}\n    readinessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.resources }}\n    resources:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.securityContext }}\n    securityContext:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    volumeMounts:\n      - name: sc-notifiers-volume\n        mountPath: \"/etc/grafana/provisioning/notifiers\"\n{{- end}}\n{{- if .Values.sidecar.plugins.enabled }}\n  - name: {{ include \"grafana.name\" . }}-sc-plugins\n    {{- if .Values.sidecar.image.sha }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}\"\n    {{- else }}\n    image: \"{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}\"\n    {{- end }}\n    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}\n    env:\n      {{- range $key, $value := .Values.sidecar.plugins.env }}\n      - name: \"{{ $key }}\"\n        value: \"{{ $value }}\"\n      {{- end }}\n      {{- if .Values.sidecar.plugins.ignoreAlreadyProcessed }}\n      - name: IGNORE_ALREADY_PROCESSED\n        value: \"true\"\n      {{- end }}\n      - name: METHOD\n        value: {{ .Values.sidecar.plugins.watchMethod }}\n      - name: LABEL\n        value: \"{{ .Values.sidecar.plugins.label }}\"\n      {{- if .Values.sidecar.plugins.labelValue }}\n      - name: LABEL_VALUE\n        value: {{ quote .Values.sidecar.plugins.labelValue }}\n      {{- end }}\n      {{- if or .Values.sidecar.logLevel .Values.sidecar.plugins.logLevel }}\n      - name: LOG_LEVEL\n        value: {{ default .Values.sidecar.logLevel .Values.sidecar.plugins.logLevel }}\n      {{- end }}\n      - name: FOLDER\n        value: \"/etc/grafana/provisioning/plugins\"\n      - name: RESOURCE\n        value: {{ quote .Values.sidecar.plugins.resource }}\n      {{- with .Values.sidecar.enableUniqueFilenames }}\n      - name: UNIQUE_FILENAMES\n        value: \"{{ . }}\"\n      {{- end }}\n      {{- with .Values.sidecar.plugins.searchNamespace }}\n      - name: NAMESPACE\n        value: \"{{ tpl (. | join \",\") $root }}\"\n      {{- end }}\n      {{- with .Values.sidecar.plugins.script }}\n      - name: SCRIPT\n        value: \"{{ . }}\"\n      {{- end }}\n      {{- with .Values.sidecar.skipTlsVerify }}\n      - name: SKIP_TLS_VERIFY\n        value: \"{{ . }}\"\n      {{- end }}\n      {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n      - name: REQ_USERNAME\n        valueFrom:\n          secretKeyRef:\n            name: {{ (tpl .Values.admin.existingSecret .) | default (include \"grafana.fullname\" .) }}\n            key: {{ .Values.admin.userKey | default \"admin-user\" }}\n      {{- end }}\n      {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n      - name: REQ_PASSWORD\n        valueFrom:\n          secretKeyRef:\n            name: {{ (tpl .Values.admin.existingSecret .) | default (include \"grafana.fullname\" .) }}\n            key: {{ .Values.admin.passwordKey | default \"admin-password\" }}\n      {{- end }}\n      {{- if not .Values.sidecar.plugins.skipReload }}\n      - name: REQ_URL\n        value: {{ .Values.sidecar.plugins.reloadURL }}\n      - name: REQ_METHOD\n        value: POST\n      {{- end }}\n      {{- if .Values.sidecar.plugins.watchServerTimeout }}\n      {{- if ne .Values.sidecar.plugins.watchMethod \"WATCH\" }}\n        {{- fail (printf \"Cannot use .Values.sidecar.plugins.watchServerTimeout with .Values.sidecar.plugins.watchMethod %s\" .Values.sidecar.plugins.watchMethod) }}\n      {{- end }}\n      - name: WATCH_SERVER_TIMEOUT\n        value: \"{{ .Values.sidecar.plugins.watchServerTimeout }}\"\n      {{- end }}\n      {{- if .Values.sidecar.plugins.watchClientTimeout }}\n      {{- if ne .Values.sidecar.plugins.watchMethod \"WATCH\" }}\n        {{- fail (printf \"Cannot use .Values.sidecar.plugins.watchClientTimeout with .Values.sidecar.plugins.watchMethod %s\" .Values.sidecar.plugins.watchMethod) }}\n      {{- end }}\n      - name: WATCH_CLIENT_TIMEOUT\n        value: \"{{ .Values.sidecar.plugins.watchClientTimeout }}\"\n      {{- end }}\n    {{- with .Values.sidecar.livenessProbe }}\n    livenessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.readinessProbe }}\n    readinessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.resources }}\n    resources:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.sidecar.securityContext }}\n    securityContext:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    volumeMounts:\n      - name: sc-plugins-volume\n        mountPath: \"/etc/grafana/provisioning/plugins\"\n{{- end}}\n  - name: {{ .Chart.Name }}\n    {{- if .Values.image.sha }}\n    image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}@sha256:{{ .Values.image.sha }}\"\n    {{- else }}\n    image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n    {{- end }}\n    imagePullPolicy: {{ .Values.image.pullPolicy }}\n    {{- if .Values.command }}\n    command:\n    {{- range .Values.command }}\n      - {{ . | quote }}\n    {{- end }}\n    {{- end }}\n    {{- if .Values.args }}\n    args:\n    {{- range .Values.args }}\n      - {{ . | quote }}\n    {{- end }}\n    {{- end }}\n    {{- with .Values.containerSecurityContext }}\n    securityContext:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    volumeMounts:\n      - name: config\n        mountPath: \"/etc/grafana/grafana.ini\"\n        subPath: grafana.ini\n      {{- if .Values.ldap.enabled }}\n      - name: ldap\n        mountPath: \"/etc/grafana/ldap.toml\"\n        subPath: ldap.toml\n      {{- end }}\n      {{- range .Values.extraConfigmapMounts }}\n      - name: {{ tpl .name $root }}\n        mountPath: {{ tpl .mountPath $root }}\n        subPath: {{ tpl (.subPath | default \"\") $root }}\n        readOnly: {{ .readOnly }}\n      {{- end }}\n      - name: storage\n        mountPath: \"/var/lib/grafana\"\n        {{- with .Values.persistence.subPath }}\n        subPath: {{ tpl . $root }}\n        {{- end }}\n      {{- with .Values.dashboards }}\n      {{- range $provider, $dashboards := . }}\n      {{- range $key, $value := $dashboards }}\n      {{- if (or (hasKey $value \"json\") (hasKey $value \"file\")) }}\n      - name: dashboards-{{ $provider }}\n        mountPath: \"/var/lib/grafana/dashboards/{{ $provider }}/{{ $key }}.json\"\n        subPath: \"{{ $key }}.json\"\n      {{- end }}\n      {{- end }}\n      {{- end }}\n      {{- end }}\n      {{- with .Values.dashboardsConfigMaps }}\n      {{- range (keys . | sortAlpha) }}\n      - name: dashboards-{{ . }}\n        mountPath: \"/var/lib/grafana/dashboards/{{ . }}\"\n      {{- end }}\n      {{- end }}\n      {{- with .Values.datasources }}\n      {{- range (keys . | sortAlpha) }}\n      - name: config\n        mountPath: \"/etc/grafana/provisioning/datasources/{{ . }}\"\n        subPath: {{ . | quote }}\n      {{- end }}\n      {{- end }}\n      {{- with .Values.notifiers }}\n      {{- range (keys . | sortAlpha) }}\n      - name: config\n        mountPath: \"/etc/grafana/provisioning/notifiers/{{ . }}\"\n        subPath: {{ . | quote }}\n      {{- end }}\n      {{- end }}\n      {{- with .Values.alerting }}\n      {{- range (keys . | sortAlpha) }}\n      - name: config\n        mountPath: \"/etc/grafana/provisioning/alerting/{{ . }}\"\n        subPath: {{ . | quote }}\n      {{- end }}\n      {{- end }}\n      {{- with .Values.dashboardProviders }}\n      {{- range (keys . | sortAlpha) }}\n      - name: config\n        mountPath: \"/etc/grafana/provisioning/dashboards/{{ . }}\"\n        subPath: {{ . | quote }}\n      {{- end }}\n      {{- end }}\n      {{- with .Values.sidecar.alerts.enabled }}\n      - name: sc-alerts-volume\n        mountPath: \"/etc/grafana/provisioning/alerting\"\n      {{- end}}\n      {{- if .Values.sidecar.dashboards.enabled }}\n      - name: sc-dashboard-volume\n        mountPath: {{ .Values.sidecar.dashboards.folder | quote }}\n      {{- if .Values.sidecar.dashboards.SCProvider }}\n      - name: sc-dashboard-provider\n        mountPath: \"/etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml\"\n        subPath: provider.yaml\n      {{- end}}\n      {{- end}}\n      {{- if .Values.sidecar.datasources.enabled }}\n      - name: sc-datasources-volume\n        mountPath: \"/etc/grafana/provisioning/datasources\"\n      {{- end}}\n      {{- if .Values.sidecar.plugins.enabled }}\n      - name: sc-plugins-volume\n        mountPath: \"/etc/grafana/provisioning/plugins\"\n      {{- end}}\n      {{- if .Values.sidecar.notifiers.enabled }}\n      - name: sc-notifiers-volume\n        mountPath: \"/etc/grafana/provisioning/notifiers\"\n      {{- end}}\n      {{- range .Values.extraSecretMounts }}\n      - name: {{ .name }}\n        mountPath: {{ .mountPath }}\n        readOnly: {{ .readOnly }}\n        subPath: {{ .subPath | default \"\" }}\n      {{- end }}\n      {{- range .Values.extraVolumeMounts }}\n      - name: {{ .name }}\n        mountPath: {{ .mountPath }}\n        subPath: {{ .subPath | default \"\" }}\n        readOnly: {{ .readOnly }}\n      {{- end }}\n      {{- range .Values.extraEmptyDirMounts }}\n      - name: {{ .name }}\n        mountPath: {{ .mountPath }}\n      {{- end }}\n    ports:\n      - name: {{ .Values.podPortName }}\n        containerPort: {{ .Values.service.targetPort }}\n        protocol: TCP\n      - name: {{ .Values.gossipPortName }}-tcp\n        containerPort: 9094\n        protocol: TCP\n      - name: {{ .Values.gossipPortName }}-udp\n        containerPort: 9094\n        protocol: UDP\n    env:\n      - name: POD_IP\n        valueFrom:\n          fieldRef:\n            fieldPath: status.podIP\n      {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n      - name: GF_SECURITY_ADMIN_USER\n        valueFrom:\n          secretKeyRef:\n            name: {{ (tpl .Values.admin.existingSecret .) | default (include \"grafana.fullname\" .) }}\n            key: {{ .Values.admin.userKey | default \"admin-user\" }}\n      {{- end }}\n      {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n      - name: GF_SECURITY_ADMIN_PASSWORD\n        valueFrom:\n          secretKeyRef:\n            name: {{ (tpl .Values.admin.existingSecret .) | default (include \"grafana.fullname\" .) }}\n            key: {{ .Values.admin.passwordKey | default \"admin-password\" }}\n      {{- end }}\n      {{- if .Values.plugins }}\n      - name: GF_INSTALL_PLUGINS\n        valueFrom:\n          configMapKeyRef:\n            name: {{ include \"grafana.fullname\" . }}\n            key: plugins\n      {{- end }}\n      {{- if .Values.smtp.existingSecret }}\n      - name: GF_SMTP_USER\n        valueFrom:\n          secretKeyRef:\n            name: {{ .Values.smtp.existingSecret }}\n            key: {{ .Values.smtp.userKey | default \"user\" }}\n      - name: GF_SMTP_PASSWORD\n        valueFrom:\n          secretKeyRef:\n            name: {{ .Values.smtp.existingSecret }}\n            key: {{ .Values.smtp.passwordKey | default \"password\" }}\n      {{- end }}\n      {{- if .Values.imageRenderer.enabled }}\n      - name: GF_RENDERING_SERVER_URL\n        value: http://{{ include \"grafana.fullname\" . }}-image-renderer.{{ include \"grafana.namespace\" . }}:{{ .Values.imageRenderer.service.port }}/render\n      - name: GF_RENDERING_CALLBACK_URL\n        value: {{ .Values.imageRenderer.grafanaProtocol }}://{{ include \"grafana.fullname\" . }}.{{ include \"grafana.namespace\" . }}:{{ .Values.service.port }}/{{ .Values.imageRenderer.grafanaSubPath }}\n      {{- end }}\n      - name: GF_PATHS_DATA\n        value: {{ (get .Values \"grafana.ini\").paths.data }}\n      - name: GF_PATHS_LOGS\n        value: {{ (get .Values \"grafana.ini\").paths.logs }}\n      - name: GF_PATHS_PLUGINS\n        value: {{ (get .Values \"grafana.ini\").paths.plugins }}\n      - name: GF_PATHS_PROVISIONING\n        value: {{ (get .Values \"grafana.ini\").paths.provisioning }}\n      {{- range $key, $value := .Values.envValueFrom }}\n      - name: {{ $key | quote }}\n        valueFrom:\n          {{- tpl (toYaml $value) $ | nindent 10 }}\n      {{- end }}\n      {{- range $key, $value := .Values.env }}\n      - name: \"{{ tpl $key $ }}\"\n        value: \"{{ tpl (print $value) $ }}\"\n      {{- end }}\n    {{- if or .Values.envFromSecret (or .Values.envRenderSecret .Values.envFromSecrets) .Values.envFromConfigMaps }}\n    envFrom:\n      {{- if .Values.envFromSecret }}\n      - secretRef:\n          name: {{ tpl .Values.envFromSecret . }}\n      {{- end }}\n      {{- if .Values.envRenderSecret }}\n      - secretRef:\n          name: {{ include \"grafana.fullname\" . }}-env\n      {{- end }}\n      {{- range .Values.envFromSecrets }}\n      - secretRef:\n          name: {{ tpl .name $ }}\n          optional: {{ .optional | default false }}\n      {{- end }}\n      {{- range .Values.envFromConfigMaps }}\n      - configMapRef:\n          name: {{ tpl .name $ }}\n          optional: {{ .optional | default false }}\n      {{- end }}\n    {{- end }}\n    {{- with .Values.livenessProbe }}\n    livenessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.readinessProbe }}\n    readinessProbe:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.lifecycleHooks }}\n    lifecycle:\n      {{- tpl (toYaml .) $root | nindent 6 }}\n    {{- end }}\n    {{- with .Values.resources }}\n    resources:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n{{- with .Values.extraContainers }}\n  {{- tpl . $ | nindent 2 }}\n{{- end }}\n{{- with .Values.nodeSelector }}\nnodeSelector:\n  {{- toYaml . | nindent 2 }}\n{{- end }}\n{{- with .Values.affinity }}\naffinity:\n  {{- tpl (toYaml .) $root | nindent 2 }}\n{{- end }}\n{{- with .Values.topologySpreadConstraints }}\ntopologySpreadConstraints:\n  {{- toYaml . | nindent 2 }}\n{{- end }}\n{{- with .Values.tolerations }}\ntolerations:\n  {{- toYaml . | nindent 2 }}\n{{- end }}\nvolumes:\n  - name: config\n    configMap:\n      name: {{ include \"grafana.fullname\" . }}\n  {{- range .Values.extraConfigmapMounts }}\n  - name: {{ tpl .name $root }}\n    configMap:\n      name: {{ tpl .configMap $root }}\n      {{- with .items }}\n      items:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n  {{- end }}\n  {{- if .Values.dashboards }}\n  {{- range (keys .Values.dashboards | sortAlpha) }}\n  - name: dashboards-{{ . }}\n    configMap:\n      name: {{ include \"grafana.fullname\" $ }}-dashboards-{{ . }}\n  {{- end }}\n  {{- end }}\n  {{- if .Values.dashboardsConfigMaps }}\n  {{- range $provider, $name := .Values.dashboardsConfigMaps }}\n  - name: dashboards-{{ $provider }}\n    configMap:\n      name: {{ tpl $name $root }}\n  {{- end }}\n  {{- end }}\n  {{- if .Values.ldap.enabled }}\n  - name: ldap\n    secret:\n      {{- if .Values.ldap.existingSecret }}\n      secretName: {{ .Values.ldap.existingSecret }}\n      {{- else }}\n      secretName: {{ include \"grafana.fullname\" . }}\n      {{- end }}\n      items:\n        - key: ldap-toml\n          path: ldap.toml\n  {{- end }}\n  {{- if and .Values.persistence.enabled (eq .Values.persistence.type \"pvc\") }}\n  - name: storage\n    persistentVolumeClaim:\n      claimName: {{ tpl (.Values.persistence.existingClaim | default (include \"grafana.fullname\" .)) . }}\n  {{- else if and .Values.persistence.enabled (has .Values.persistence.type $sts) }}\n  {{/* nothing */}}\n  {{- else }}\n  - name: storage\n    {{- if .Values.persistence.inMemory.enabled }}\n    emptyDir:\n      medium: Memory\n      {{- with .Values.persistence.inMemory.sizeLimit }}\n      sizeLimit: {{ . }}\n      {{- end }}\n    {{- else }}\n    emptyDir: {}\n    {{- end }}\n  {{- end }}\n  {{- if .Values.sidecar.alerts.enabled }}\n  - name: sc-alerts-volume\n    emptyDir:\n      {{- with .Values.sidecar.alerts.sizeLimit }}\n      sizeLimit: {{ . }}\n      {{- else }}\n      {}\n      {{- end }}\n  {{- end }}\n  {{- if .Values.sidecar.dashboards.enabled }}\n  - name: sc-dashboard-volume\n    emptyDir:\n      {{- with .Values.sidecar.dashboards.sizeLimit }}\n      sizeLimit: {{ . }}\n      {{- else }}\n      {}\n      {{- end }}\n  {{- if .Values.sidecar.dashboards.SCProvider }}\n  - name: sc-dashboard-provider\n    configMap:\n      name: {{ include \"grafana.fullname\" . }}-config-dashboards\n  {{- end }}\n  {{- end }}\n  {{- if .Values.sidecar.datasources.enabled }}\n  - name: sc-datasources-volume\n    emptyDir:\n      {{- with .Values.sidecar.datasources.sizeLimit }}\n      sizeLimit: {{ . }}\n      {{- else }}\n      {}\n      {{- end }}\n  {{- end }}\n  {{- if .Values.sidecar.plugins.enabled }}\n  - name: sc-plugins-volume\n    emptyDir:\n      {{- with .Values.sidecar.plugins.sizeLimit }}\n      sizeLimit: {{ . }}\n      {{- else }}\n      {}\n      {{- end }}\n  {{- end }}\n  {{- if .Values.sidecar.notifiers.enabled }}\n  - name: sc-notifiers-volume\n    emptyDir:\n      {{- with .Values.sidecar.notifiers.sizeLimit }}\n      sizeLimit: {{ . }}\n      {{- else }}\n      {}\n      {{- end }}\n  {{- end }}\n  {{- range .Values.extraSecretMounts }}\n  {{- if .secretName }}\n  - name: {{ .name }}\n    secret:\n      secretName: {{ .secretName }}\n      defaultMode: {{ .defaultMode }}\n      {{- with .items }}\n      items:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n  {{- else if .projected }}\n  - name: {{ .name }}\n    projected:\n      {{- toYaml .projected | nindent 6 }}\n  {{- else if .csi }}\n  - name: {{ .name }}\n    csi:\n      {{- toYaml .csi | nindent 6 }}\n  {{- end }}\n  {{- end }}\n  {{- range .Values.extraVolumeMounts }}\n  - name: {{ .name }}\n    {{- if .existingClaim }}\n    persistentVolumeClaim:\n      claimName: {{ .existingClaim }}\n    {{- else if .hostPath }}\n    hostPath:\n      path: {{ .hostPath }}\n    {{- else if .csi }}\n    csi:\n      {{- toYaml .data | nindent 6 }}\n    {{- else }}\n    emptyDir: {}\n    {{- end }}\n  {{- end }}\n  {{- range .Values.extraEmptyDirMounts }}\n  - name: {{ .name }}\n    emptyDir: {}\n  {{- end }}\n  {{- with .Values.extraContainerVolumes }}\n  {{- tpl (toYaml .) $root | nindent 2 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/clusterrole.yaml",
    "content": "{{- if and .Values.rbac.create (or (not .Values.rbac.namespaced) .Values.rbac.extraClusterRoleRules) (not .Values.rbac.useExistingRole) }}\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n  {{- with .Values.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  name: {{ include \"grafana.fullname\" . }}-clusterrole\n{{- if or .Values.sidecar.dashboards.enabled .Values.rbac.extraClusterRoleRules .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled .Values.sidecar.alerts.enabled }}\nrules:\n  {{- if or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled .Values.sidecar.alerts.enabled }}\n  - apiGroups: [\"\"] # \"\" indicates the core API group\n    resources: [\"configmaps\", \"secrets\"]\n    verbs: [\"get\", \"watch\", \"list\"]\n  {{- end}}\n  {{- with .Values.rbac.extraClusterRoleRules }}\n  {{- toYaml . | nindent 2 }}\n  {{- end}}\n{{- else }}\nrules: []\n{{- end}}\n{{- end}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/clusterrolebinding.yaml",
    "content": "{{- if and .Values.rbac.create (or (not .Values.rbac.namespaced) .Values.rbac.extraClusterRoleRules) }}\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-clusterrolebinding\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n  {{- with .Values.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ include \"grafana.serviceAccountName\" . }}\n    namespace: {{ include \"grafana.namespace\" . }}\nroleRef:\n  kind: ClusterRole\n  {{- if .Values.rbac.useExistingRole }}\n  name: {{ .Values.rbac.useExistingRole }}\n  {{- else }}\n  name: {{ include \"grafana.fullname\" . }}-clusterrole\n  {{- end }}\n  apiGroup: rbac.authorization.k8s.io\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/configmap-dashboard-provider.yaml",
    "content": "{{- if and .Values.sidecar.dashboards.enabled .Values.sidecar.dashboards.SCProvider }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n  {{- with .Values.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  name: {{ include \"grafana.fullname\" . }}-config-dashboards\n  namespace: {{ include \"grafana.namespace\" . }}\ndata:\n  provider.yaml: |-\n    apiVersion: 1\n    providers:\n      - name: '{{ .Values.sidecar.dashboards.provider.name }}'\n        orgId: {{ .Values.sidecar.dashboards.provider.orgid }}\n        {{- if not .Values.sidecar.dashboards.provider.foldersFromFilesStructure }}\n        folder: '{{ .Values.sidecar.dashboards.provider.folder }}'\n        {{- end }}\n        type: {{ .Values.sidecar.dashboards.provider.type }}\n        disableDeletion: {{ .Values.sidecar.dashboards.provider.disableDelete }}\n        allowUiUpdates: {{ .Values.sidecar.dashboards.provider.allowUiUpdates }}\n        updateIntervalSeconds: {{ .Values.sidecar.dashboards.provider.updateIntervalSeconds | default 30 }}\n        options:\n          foldersFromFilesStructure: {{ .Values.sidecar.dashboards.provider.foldersFromFilesStructure }}\n          path: {{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/configmap.yaml",
    "content": "{{- if .Values.createConfigmap }}\n{{- $files := .Files }}\n{{- $root := . -}}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n  {{- with .Values.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\ndata:\n  {{- with .Values.plugins }}\n  plugins: {{ join \",\" . }}\n  {{- end }}\n  grafana.ini: |\n  {{- range $elem, $elemVal := index .Values \"grafana.ini\" }}\n    {{- if not (kindIs \"map\" $elemVal) }}\n    {{- if kindIs \"invalid\" $elemVal }}\n    {{ $elem }} =\n    {{- else if kindIs \"string\" $elemVal }}\n    {{ $elem }} = {{ tpl $elemVal $ }}\n    {{- else }}\n    {{ $elem }} = {{ $elemVal }}\n    {{- end }}\n    {{- end }}\n  {{- end }}\n  {{- range $key, $value := index .Values \"grafana.ini\" }}\n    {{- if kindIs \"map\" $value }}\n    [{{ $key }}]\n    {{- range $elem, $elemVal := $value }}\n    {{- if kindIs \"invalid\" $elemVal }}\n    {{ $elem }} =\n    {{- else if kindIs \"string\" $elemVal }}\n    {{ $elem }} = {{ tpl $elemVal $ }}\n    {{- else }}\n    {{ $elem }} = {{ $elemVal }}\n    {{- end }}\n    {{- end }}\n    {{- end }}\n  {{- end }}\n\n  {{- range $key, $value := .Values.datasources }}\n  {{- $key | nindent 2 }}: |\n    {{- tpl (toYaml $value | nindent 4) $root }}\n  {{- end }}\n\n  {{- range $key, $value := .Values.notifiers }}\n  {{- $key | nindent 2 }}: |\n    {{- toYaml $value | nindent 4 }}\n  {{- end }}\n\n  {{- range $key, $value := .Values.alerting }}\n  {{- if (hasKey $value \"file\") }}\n  {{- $key | nindent 2 }}:\n  {{- toYaml ( $files.Get $value.file ) | nindent 4}}\n  {{- else }}\n  {{- $key | nindent 2 }}: |\n    {{- tpl (toYaml $value | nindent 4) $root }}\n  {{- end }}\n  {{- end }}\n\n  {{- range $key, $value := .Values.dashboardProviders }}\n  {{- $key | nindent 2 }}: |\n    {{- toYaml $value | nindent 4 }}\n  {{- end }}\n\n{{- if .Values.dashboards  }}\n  download_dashboards.sh: |\n    #!/usr/bin/env sh\n    set -euf\n    {{- if .Values.dashboardProviders }}\n      {{- range $key, $value := .Values.dashboardProviders }}\n        {{- range $value.providers }}\n    mkdir -p {{ .options.path }}\n        {{- end }}\n      {{- end }}\n    {{- end }}\n  {{ $dashboardProviders := .Values.dashboardProviders }}\n  {{- range $provider, $dashboards := .Values.dashboards }}\n    {{- range $key, $value := $dashboards }}\n      {{- if (or (hasKey $value \"gnetId\") (hasKey $value \"url\")) }}\n    curl -skf \\\n    --connect-timeout 60 \\\n    --max-time 60 \\\n      {{- if not $value.b64content }}\n        {{- if not $value.acceptHeader }}\n    -H \"Accept: application/json\" \\\n        {{- else }}\n    -H \"Accept: {{ $value.acceptHeader }}\" \\\n        {{- end }}\n        {{- if $value.token }}\n    -H \"Authorization: token {{ $value.token }}\" \\\n        {{- end }}\n        {{- if $value.bearerToken }}\n    -H \"Authorization: Bearer {{ $value.bearerToken }}\" \\\n        {{- end }}\n        {{- if $value.basic }}\n    -H \"Authorization: Basic {{ $value.basic }}\" \\\n        {{- end }}\n        {{- if $value.gitlabToken }}\n    -H \"PRIVATE-TOKEN: {{ $value.gitlabToken }}\" \\\n        {{- end }}\n    -H \"Content-Type: application/json;charset=UTF-8\" \\\n      {{- end }}\n    {{- $dpPath := \"\" -}}\n    {{- range $kd := (index $dashboardProviders \"dashboardproviders.yaml\").providers }}\n      {{- if eq $kd.name $provider }}\n      {{- $dpPath = $kd.options.path }}\n      {{- end }}\n    {{- end }}\n    {{- if $value.url }}\n      \"{{ $value.url }}\" \\\n    {{- else }}\n      \"https://grafana.com/api/dashboards/{{ $value.gnetId }}/revisions/{{- if $value.revision -}}{{ $value.revision }}{{- else -}}1{{- end -}}/download\" \\\n    {{- end }}\n    {{- if $value.datasource }}\n      {{- if kindIs \"string\" $value.datasource }}\n      | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"{{ $value.datasource }}\",/g' \\\n      {{- end }}\n      {{- if kindIs \"slice\" $value.datasource }}\n        {{- range $value.datasource }}\n          | sed '/-- .* --/! s/${{\"{\"}}{{ .name }}}/{{ .value }}/g' \\\n        {{- end }}\n      {{- end }}\n    {{- end }}\n    {{- if $value.b64content }}\n      | base64 -d \\\n    {{- end }}\n    > \"{{- if $dpPath -}}{{ $dpPath }}{{- else -}}/var/lib/grafana/dashboards/{{ $provider }}{{- end -}}/{{ $key }}.json\"\n      {{ end }}\n    {{- end }}\n  {{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/dashboards-json-configmap.yaml",
    "content": "{{- if .Values.dashboards }}\n{{ $files := .Files }}\n{{- range $provider, $dashboards := .Values.dashboards }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"grafana.fullname\" $ }}-dashboards-{{ $provider }}\n  namespace: {{ include \"grafana.namespace\" $ }}\n  labels:\n    {{- include \"grafana.labels\" $ | nindent 4 }}\n    dashboard-provider: {{ $provider }}\n{{- if $dashboards }}\ndata:\n{{- $dashboardFound := false }}\n{{- range $key, $value := $dashboards }}\n{{- if (or (hasKey $value \"json\") (hasKey $value \"file\")) }}\n{{- $dashboardFound = true }}\n  {{- print $key | nindent 2 }}.json:\n    {{- if hasKey $value \"json\" }}\n    |-\n      {{- $value.json | nindent 6 }}\n    {{- end }}\n    {{- if hasKey $value \"file\" }}\n    {{- toYaml ( $files.Get $value.file ) | nindent 4}}\n    {{- end }}\n{{- end }}\n{{- end }}\n{{- if not $dashboardFound }}\n  {}\n{{- end }}\n{{- end }}\n---\n{{- end }}\n\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/deployment.yaml",
    "content": "{{- if (and (not .Values.useStatefulSet) (or (not .Values.persistence.enabled) (eq .Values.persistence.type \"pvc\"))) }}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n    {{- with .Values.labels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\n  {{- with .Values.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if and (not .Values.autoscaling.enabled) (.Values.replicas) }}\n  replicas: {{ .Values.replicas }}\n  {{- end }}\n  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}\n  selector:\n    matchLabels:\n      {{- include \"grafana.selectorLabels\" . | nindent 6 }}\n  {{- with .Values.deploymentStrategy }}\n  strategy:\n    {{- toYaml . | trim | nindent 4 }}\n  {{- end }}\n  template:\n    metadata:\n      labels:\n        {{- include \"grafana.selectorLabels\" . | nindent 8 }}\n        {{- with .Values.podLabels }}\n        {{- toYaml . | nindent 8 }}\n        {{- end }}\n      annotations:\n        checksum/config: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n        checksum/dashboards-json-config: {{ include (print $.Template.BasePath \"/dashboards-json-configmap.yaml\") . | sha256sum }}\n        checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath \"/configmap-dashboard-provider.yaml\") . | sha256sum }}\n        {{- if and (or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret))) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n        checksum/secret: {{ include (print $.Template.BasePath \"/secret.yaml\") . | sha256sum }}\n        {{- end }}\n        {{- if .Values.envRenderSecret }}\n        checksum/secret-env: {{ include (print $.Template.BasePath \"/secret-env.yaml\") . | sha256sum }}\n        {{- end }}\n        kubectl.kubernetes.io/default-container: {{ .Chart.Name }}\n        {{- with .Values.podAnnotations }}\n        {{- toYaml . | nindent 8 }}\n        {{- end }}\n    spec:\n      {{- include \"grafana.pod\" . | nindent 6 }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/extra-manifests.yaml",
    "content": "{{ range .Values.extraObjects }}\n---\n{{ tpl (toYaml .) $ }}\n{{ end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/headless-service.yaml",
    "content": "{{- $sts := list \"sts\" \"StatefulSet\" \"statefulset\" -}}\n{{- if or .Values.headlessService (and .Values.persistence.enabled (not .Values.persistence.existingClaim) (has .Values.persistence.type $sts)) }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-headless\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n  {{- with .Values.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  clusterIP: None\n  selector:\n    {{- include \"grafana.selectorLabels\" . | nindent 4 }}\n  type: ClusterIP\n  ports:\n  - name: {{ .Values.gossipPortName }}-tcp\n    port: 9094\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/hpa.yaml",
    "content": "{{- $sts := list \"sts\" \"StatefulSet\" \"statefulset\" -}}\n{{- if .Values.autoscaling.enabled }}\napiVersion: {{ include \"grafana.hpa.apiVersion\" . }}\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    app.kubernetes.io/name: {{ include \"grafana.name\" . }}\n    helm.sh/chart: {{ include \"grafana.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    {{- if has .Values.persistence.type $sts }}\n    kind: StatefulSet\n    {{- else }}\n    kind: Deployment\n    {{- end }}\n    name: {{ include \"grafana.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetMemory }}\n    - type: Resource\n      resource:\n        name: memory\n        {{- if eq (include \"grafana.hpa.apiVersion\" .) \"autoscaling/v2beta1\" }}\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemory }}\n        {{- else }}\n        target:\n          type: Utilization\n          averageUtilization: {{ .Values.autoscaling.targetMemory }}\n        {{- end }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetCPU }}\n    - type: Resource\n      resource:\n        name: cpu\n        {{- if eq (include \"grafana.hpa.apiVersion\" .) \"autoscaling/v2beta1\" }}\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPU }}\n        {{- else }}\n        target:\n          type: Utilization\n          averageUtilization: {{ .Values.autoscaling.targetCPU }}\n        {{- end }}\n    {{- end }}\n  {{- if .Values.autoscaling.behavior }}\n  behavior: {{ toYaml .Values.autoscaling.behavior | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/image-renderer-deployment.yaml",
    "content": "{{ if .Values.imageRenderer.enabled }}\n{{- $root := . -}}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-image-renderer\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.imageRenderer.labels\" . | nindent 4 }}\n    {{- with .Values.imageRenderer.labels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\n  {{- with .Values.imageRenderer.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if and (not .Values.imageRenderer.autoscaling.enabled) (.Values.imageRenderer.replicas) }}\n  replicas: {{ .Values.imageRenderer.replicas }}\n  {{- end }}\n  revisionHistoryLimit: {{ .Values.imageRenderer.revisionHistoryLimit }}\n  selector:\n    matchLabels:\n      {{- include \"grafana.imageRenderer.selectorLabels\" . | nindent 6 }}\n\n  {{- with .Values.imageRenderer.deploymentStrategy }}\n  strategy:\n    {{- toYaml . | trim | nindent 4 }}\n  {{- end }}\n  template:\n    metadata:\n      labels:\n        {{- include \"grafana.imageRenderer.selectorLabels\" . | nindent 8 }}\n        {{- with .Values.imageRenderer.podLabels }}\n        {{- toYaml . | nindent 8 }}\n        {{- end }}\n      annotations:\n        checksum/config: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n        {{- with .Values.imageRenderer.podAnnotations }}\n        {{- toYaml . | nindent 8 }}\n        {{- end }}\n    spec:\n      {{- with .Values.imageRenderer.schedulerName }}\n      schedulerName: \"{{ . }}\"\n      {{- end }}\n      {{- with .Values.imageRenderer.serviceAccountName }}\n      serviceAccountName: \"{{ . }}\"\n      {{- end }}\n      {{- with .Values.imageRenderer.securityContext }}\n      securityContext:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.imageRenderer.hostAliases }}\n      hostAliases:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.imageRenderer.priorityClassName }}\n      priorityClassName: {{ . }}\n      {{- end }}\n      {{- with .Values.imageRenderer.image.pullSecrets }}\n      imagePullSecrets:\n        {{- range . }}\n        - name: {{ tpl . $root }}\n        {{- end}}\n      {{- end }}\n      containers:\n        - name: {{ .Chart.Name }}-image-renderer\n          {{- if .Values.imageRenderer.image.sha }}\n          image: \"{{ .Values.imageRenderer.image.repository }}:{{ .Values.imageRenderer.image.tag }}@sha256:{{ .Values.imageRenderer.image.sha }}\"\n          {{- else }}\n          image: \"{{ .Values.imageRenderer.image.repository }}:{{ .Values.imageRenderer.image.tag }}\"\n          {{- end }}\n          imagePullPolicy: {{ .Values.imageRenderer.image.pullPolicy }}\n          {{- if .Values.imageRenderer.command }}\n          command:\n            {{- range .Values.imageRenderer.command }}\n            - {{ . }}\n            {{- end }}\n          {{- end}}\n          ports:\n            - name: {{ .Values.imageRenderer.service.portName }}\n              containerPort: {{ .Values.imageRenderer.service.targetPort }}\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: /\n              port: {{ .Values.imageRenderer.service.portName }}\n          env:\n            - name: HTTP_PORT\n              value: {{ .Values.imageRenderer.service.targetPort | quote }}\n          {{- if .Values.imageRenderer.serviceMonitor.enabled }}\n            - name: ENABLE_METRICS\n              value: \"true\"\n          {{- end }}\n          {{- range $key, $value := .Values.imageRenderer.envValueFrom }}\n            - name: {{ $key | quote }}\n              valueFrom:\n                {{- tpl (toYaml $value) $ | nindent 16 }}\n          {{- end }}\n          {{- range $key, $value := .Values.imageRenderer.env }}\n            - name: {{ $key | quote }}\n              value: {{ $value | quote }}\n          {{- end }}\n          {{- with .Values.imageRenderer.containerSecurityContext }}\n          securityContext:\n            {{- toYaml . | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - mountPath: /tmp\n              name: image-renderer-tmpfs\n          {{- with .Values.imageRenderer.resources }}\n          resources:\n            {{- toYaml . | nindent 12 }}\n          {{- end }}\n      {{- with .Values.imageRenderer.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.imageRenderer.affinity }}\n      affinity:\n        {{- tpl (toYaml .) $root | nindent 8 }}\n      {{- end }}\n      {{- with .Values.imageRenderer.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: image-renderer-tmpfs\n          emptyDir: {}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/image-renderer-hpa.yaml",
    "content": "{{- if and .Values.imageRenderer.enabled .Values.imageRenderer.autoscaling.enabled }}\napiVersion: {{ include \"grafana.hpa.apiVersion\" . }}\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-image-renderer\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    app.kubernetes.io/name: {{ include \"grafana.name\" . }}-image-renderer\n    helm.sh/chart: {{ include \"grafana.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"grafana.fullname\" . }}-image-renderer\n  minReplicas: {{ .Values.imageRenderer.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.imageRenderer.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.imageRenderer.autoscaling.targetMemory }}\n    - type: Resource\n      resource:\n        name: memory\n        {{- if eq (include \"grafana.hpa.apiVersion\" .) \"autoscaling/v2beta1\" }}\n        targetAverageUtilization: {{ .Values.imageRenderer.autoscaling.targetMemory }}\n        {{- else }}\n        target:\n          type: Utilization\n          averageUtilization: {{ .Values.imageRenderer.autoscaling.targetMemory }}\n        {{- end }}\n    {{- end }}\n    {{- if .Values.imageRenderer.autoscaling.targetCPU }}\n    - type: Resource\n      resource:\n        name: cpu\n        {{- if eq (include \"grafana.hpa.apiVersion\" .) \"autoscaling/v2beta1\" }}\n        targetAverageUtilization: {{ .Values.imageRenderer.autoscaling.targetCPU }}\n        {{- else }}\n        target:\n          type: Utilization\n          averageUtilization: {{ .Values.imageRenderer.autoscaling.targetCPU }}\n        {{- end }}\n    {{- end }}\n  {{- if .Values.imageRenderer.autoscaling.behavior }}\n  behavior: {{ toYaml .Values.imageRenderer.autoscaling.behavior | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/image-renderer-network-policy.yaml",
    "content": "{{- if and .Values.imageRenderer.enabled .Values.imageRenderer.networkPolicy.limitIngress }}\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-image-renderer-ingress\n  namespace: {{ include \"grafana.namespace\" . }}\n  annotations:\n    comment: Limit image-renderer ingress traffic from grafana\nspec:\n  podSelector:\n    matchLabels:\n      {{- include \"grafana.imageRenderer.selectorLabels\" . | nindent 6 }}\n      {{- with .Values.imageRenderer.podLabels }}\n      {{- toYaml . | nindent 6 }}\n      {{- end }}\n\n  policyTypes:\n    - Ingress\n  ingress:\n    - ports:\n        - port: {{ .Values.imageRenderer.service.targetPort }}\n          protocol: TCP\n      from:\n        - namespaceSelector:\n            matchLabels:\n              kubernetes.io/metadata.name: {{ include \"grafana.namespace\" . }}\n          podSelector:\n            matchLabels:\n              {{- include \"grafana.selectorLabels\" . | nindent 14 }}\n              {{- with .Values.podLabels }}\n              {{- toYaml . | nindent 14 }}\n              {{- end }}\n        {{- with .Values.imageRenderer.networkPolicy.extraIngressSelectors -}}\n        {{ toYaml . | nindent 8 }}\n        {{- end }}\n{{- end }}\n\n{{- if and .Values.imageRenderer.enabled .Values.imageRenderer.networkPolicy.limitEgress }}\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-image-renderer-egress\n  namespace: {{ include \"grafana.namespace\" . }}\n  annotations:\n    comment: Limit image-renderer egress traffic to grafana\nspec:\n  podSelector:\n    matchLabels:\n      {{- include \"grafana.imageRenderer.selectorLabels\" . | nindent 6 }}\n      {{- with .Values.imageRenderer.podLabels }}\n      {{- toYaml . | nindent 6 }}\n      {{- end }}\n\n  policyTypes:\n    - Egress\n  egress:\n    # allow dns resolution\n    - ports:\n        - port: 53\n          protocol: UDP\n        - port: 53\n          protocol: TCP\n    # talk only to grafana\n    - ports:\n        - port: {{ .Values.service.targetPort }}\n          protocol: TCP\n      to:\n        - namespaceSelector:\n            matchLabels:\n              name: {{ include \"grafana.namespace\" . }}\n          podSelector:\n            matchLabels:\n              {{- include \"grafana.selectorLabels\" . | nindent 14 }}\n              {{- with .Values.podLabels }}\n              {{- toYaml . | nindent 14 }}\n              {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/image-renderer-service.yaml",
    "content": "{{- if and .Values.imageRenderer.enabled .Values.imageRenderer.service.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-image-renderer\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.imageRenderer.labels\" . | nindent 4 }}\n    {{- with .Values.imageRenderer.service.labels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\n  {{- with .Values.imageRenderer.service.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  type: ClusterIP\n  {{- with .Values.imageRenderer.service.clusterIP }}\n  clusterIP: {{ . }}\n  {{- end }}\n  ports:\n    - name: {{ .Values.imageRenderer.service.portName }}\n      port: {{ .Values.imageRenderer.service.port }}\n      protocol: TCP\n      targetPort: {{ .Values.imageRenderer.service.targetPort }}\n      {{- with .Values.imageRenderer.appProtocol }}\n      appProtocol: {{ . }}\n      {{- end }}\n  selector:\n    {{- include \"grafana.imageRenderer.selectorLabels\" . | nindent 4 }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/image-renderer-servicemonitor.yaml",
    "content": "{{- if .Values.imageRenderer.serviceMonitor.enabled }}\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-image-renderer\n  {{- if .Values.imageRenderer.serviceMonitor.namespace }}\n  namespace: {{ tpl .Values.imageRenderer.serviceMonitor.namespace . }}\n  {{- else }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  {{- end }}\n  labels:\n    {{- include \"grafana.imageRenderer.labels\" . | nindent 4 }}\n    {{- with .Values.imageRenderer.serviceMonitor.labels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\nspec:\n  endpoints:\n  - port: {{ .Values.imageRenderer.service.portName }}\n    {{- with .Values.imageRenderer.serviceMonitor.interval }}\n    interval: {{ . }}\n    {{- end }}\n    {{- with .Values.imageRenderer.serviceMonitor.scrapeTimeout }}\n    scrapeTimeout: {{ . }}\n    {{- end }}\n    honorLabels: true\n    path: {{ .Values.imageRenderer.serviceMonitor.path }}\n    scheme: {{ .Values.imageRenderer.serviceMonitor.scheme }}\n    {{- with .Values.imageRenderer.serviceMonitor.tlsConfig }}\n    tlsConfig:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.imageRenderer.serviceMonitor.relabelings }}\n    relabelings:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n  jobLabel: \"{{ .Release.Name }}-image-renderer\"\n  selector:\n    matchLabels:\n      {{- include \"grafana.imageRenderer.selectorLabels\" . | nindent 6 }}\n  namespaceSelector:\n    matchNames:\n      - {{ include \"grafana.namespace\" . }}\n  {{- with .Values.imageRenderer.serviceMonitor.targetLabels }}\n  targetLabels:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $ingressApiIsStable := eq (include \"grafana.ingress.isStable\" .) \"true\" -}}\n{{- $ingressSupportsIngressClassName := eq (include \"grafana.ingress.supportsIngressClassName\" .) \"true\" -}}\n{{- $ingressSupportsPathType := eq (include \"grafana.ingress.supportsPathType\" .) \"true\" -}}\n{{- $fullName := include \"grafana.fullname\" . -}}\n{{- $servicePort := .Values.service.port -}}\n{{- $ingressPath := .Values.ingress.path -}}\n{{- $ingressPathType := .Values.ingress.pathType -}}\n{{- $extraPaths := .Values.ingress.extraPaths -}}\napiVersion: {{ include \"grafana.ingress.apiVersion\" . }}\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n    {{- with .Values.ingress.labels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\n  {{- with .Values.ingress.annotations }}\n  annotations:\n    {{- range $key, $value := . }}\n    {{ $key }}: {{ tpl $value $ | quote }}\n    {{- end }}\n  {{- end }}\nspec:\n  {{- if and $ingressSupportsIngressClassName .Values.ingress.ingressClassName }}\n  ingressClassName: {{ .Values.ingress.ingressClassName }}\n  {{- end -}}\n  {{- with .Values.ingress.tls }}\n  tls:\n    {{- tpl (toYaml .) $ | nindent 4 }}\n  {{- end }}\n  rules:\n  {{- if .Values.ingress.hosts  }}\n  {{- range .Values.ingress.hosts }}\n    - host: {{ tpl . $ }}\n      http:\n        paths:\n          {{- with $extraPaths }}\n          {{- toYaml . | nindent 10 }}\n          {{- end }}\n          - path: {{ $ingressPath }}\n            {{- if $ingressSupportsPathType }}\n            pathType: {{ $ingressPathType }}\n            {{- end }}\n            backend:\n              {{- if $ingressApiIsStable }}\n              service:\n                name: {{ $fullName }}\n                port:\n                  number: {{ $servicePort }}\n              {{- else }}\n              serviceName: {{ $fullName }}\n              servicePort: {{ $servicePort }}\n              {{- end }}\n  {{- end }}\n  {{- else }}\n    - http:\n        paths:\n          - backend:\n              {{- if $ingressApiIsStable }}\n              service:\n                name: {{ $fullName }}\n                port:\n                  number: {{ $servicePort }}\n              {{- else }}\n              serviceName: {{ $fullName }}\n              servicePort: {{ $servicePort }}\n              {{- end }}\n            {{- with $ingressPath }}\n            path: {{ . }}\n            {{- end }}\n            {{- if $ingressSupportsPathType }}\n            pathType: {{ $ingressPathType }}\n            {{- end }}\n  {{- end -}}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/networkpolicy.yaml",
    "content": "{{- if .Values.networkPolicy.enabled }}\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n    {{- with .Values.labels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\n  {{- with .Values.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  policyTypes:\n    {{- if .Values.networkPolicy.ingress }}\n    - Ingress\n    {{- end }}\n    {{- if .Values.networkPolicy.egress.enabled }}\n    - Egress\n    {{- end }}\n  podSelector:\n    matchLabels:\n      {{- include \"grafana.selectorLabels\" . | nindent 6 }}\n\n  {{- if .Values.networkPolicy.egress.enabled }}\n  egress:\n    - ports:\n        {{ .Values.networkPolicy.egress.ports | toJson }}\n  {{- end }}\n  {{- if .Values.networkPolicy.ingress }}\n  ingress:\n    - ports:\n      - port: {{ .Values.service.targetPort }}\n      {{- if not .Values.networkPolicy.allowExternal }}\n      from:\n        - podSelector:\n            matchLabels:\n              {{ include \"grafana.fullname\" . }}-client: \"true\"\n        {{- with .Values.networkPolicy.explicitNamespacesSelector }}\n        - namespaceSelector:\n            {{- toYaml . | nindent 12 }}\n        {{- end }}\n        - podSelector:\n            matchLabels:\n              {{- include \"grafana.labels\" . | nindent 14 }}\n              role: read\n      {{- end }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/poddisruptionbudget.yaml",
    "content": "{{- if .Values.podDisruptionBudget }}\napiVersion: {{ include \"grafana.podDisruptionBudget.apiVersion\" . }}\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n    {{- with .Values.labels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\nspec:\n  {{- with .Values.podDisruptionBudget.minAvailable }}\n  minAvailable: {{ . }}\n  {{- end }}\n  {{- with .Values.podDisruptionBudget.maxUnavailable }}\n  maxUnavailable: {{ . }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"grafana.selectorLabels\" . | nindent 6 }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/podsecuritypolicy.yaml",
    "content": "{{- if and .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") }}\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n  annotations:\n    seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default'\n    seccomp.security.alpha.kubernetes.io/defaultProfileName:  'docker/default'\n    {{- if .Values.rbac.pspUseAppArmor }}\n    apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'\n    apparmor.security.beta.kubernetes.io/defaultProfileName:  'runtime/default'\n    {{- end }}\nspec:\n  privileged: false\n  allowPrivilegeEscalation: false\n  requiredDropCapabilities:\n    # Default set from Docker, with DAC_OVERRIDE and CHOWN\n      - ALL\n  volumes:\n    - 'configMap'\n    - 'emptyDir'\n    - 'projected'\n    - 'csi'\n    - 'secret'\n    - 'downwardAPI'\n    - 'persistentVolumeClaim'\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    rule: 'RunAsAny'\n  seLinux:\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  readOnlyRootFilesystem: false\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/pvc.yaml",
    "content": "{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type \"pvc\")}}\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n    {{- with .Values.persistence.extraPvcLabels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\n  {{- with .Values.persistence.annotations  }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  {{- with .Values.persistence.finalizers  }}\n  finalizers:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  accessModes:\n    {{- range .Values.persistence.accessModes }}\n    - {{ . | quote }}\n    {{- end }}\n  resources:\n    requests:\n      storage: {{ .Values.persistence.size | quote }}\n  {{- with .Values.persistence.storageClassName }}\n  storageClassName: {{ . }}\n  {{- end }}\n  {{- with .Values.persistence.selectorLabels }}\n  selector:\n    matchLabels:\n    {{- toYaml . | nindent 6 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/role.yaml",
    "content": "{{- if and .Values.rbac.create (not .Values.rbac.useExistingRole) -}}\napiVersion: {{ include \"grafana.rbac.apiVersion\" . }}\nkind: Role\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n  {{- with .Values.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- if or .Values.rbac.pspEnabled (and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled .Values.rbac.extraRoleRules)) }}\nrules:\n  {{- if and .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") }}\n  - apiGroups:      ['extensions']\n    resources:      ['podsecuritypolicies']\n    verbs:          ['use']\n    resourceNames:  [{{ include \"grafana.fullname\" . }}]\n  {{- end }}\n  {{- if and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled) }}\n  - apiGroups: [\"\"] # \"\" indicates the core API group\n    resources: [\"configmaps\", \"secrets\"]\n    verbs: [\"get\", \"watch\", \"list\"]\n  {{- end }}\n  {{- with .Values.rbac.extraRoleRules }}\n  {{- toYaml . | nindent 2 }}\n  {{- end}}\n{{- else }}\nrules: []\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/rolebinding.yaml",
    "content": "{{- if .Values.rbac.create }}\napiVersion: {{ include \"grafana.rbac.apiVersion\" . }}\nkind: RoleBinding\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n  {{- with .Values.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  {{- if .Values.rbac.useExistingRole }}\n  name: {{ .Values.rbac.useExistingRole }}\n  {{- else }}\n  name: {{ include \"grafana.fullname\" . }}\n  {{- end }}\nsubjects:\n- kind: ServiceAccount\n  name: {{ include \"grafana.serviceAccountName\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/secret-env.yaml",
    "content": "{{- if .Values.envRenderSecret }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-env\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n{{- range $key, $val := .Values.envRenderSecret }}\n  {{ $key }}: {{ tpl ($val | toString) $ | b64enc | quote }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/secret.yaml",
    "content": "{{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n  {{- with .Values.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\ntype: Opaque\ndata:\n  {{- if and (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) }}\n  admin-user: {{ .Values.adminUser | b64enc | quote }}\n  {{- if .Values.adminPassword }}\n  admin-password: {{ .Values.adminPassword | b64enc | quote }}\n  {{- else }}\n  admin-password: {{ include \"grafana.password\" . }}\n  {{- end }}\n  {{- end }}\n  {{- if not .Values.ldap.existingSecret }}\n  ldap-toml: {{ tpl .Values.ldap.config $ | b64enc | quote }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/service.yaml",
    "content": "{{- if .Values.service.enabled }}\n{{- $root := . }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n    {{- with .Values.service.labels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\n  {{- with .Values.service.annotations }}\n  annotations:\n    {{- tpl (toYaml . | nindent 4) $root }}\n  {{- end }}\nspec:\n  {{- if (or (eq .Values.service.type \"ClusterIP\") (empty .Values.service.type)) }}\n  type: ClusterIP\n  {{- with .Values.service.clusterIP }}\n  clusterIP: {{ . }}\n  {{- end }}\n  {{- else if eq .Values.service.type \"LoadBalancer\" }}\n  type: {{ .Values.service.type }}\n  {{- with .Values.service.loadBalancerIP }}\n  loadBalancerIP: {{ . }}\n  {{- end }}\n  {{- with .Values.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  {{- else }}\n  type: {{ .Values.service.type }}\n  {{- end }}\n  {{- with .Values.service.externalIPs }}\n  externalIPs:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  ports:\n    - name: {{ .Values.service.portName }}\n      port: {{ .Values.service.port }}\n      protocol: TCP\n      targetPort: {{ .Values.service.targetPort }}\n      {{- with .Values.service.appProtocol }}\n      appProtocol: {{ . }}\n      {{- end }}\n      {{- if (and (eq .Values.service.type \"NodePort\") (not (empty .Values.service.nodePort))) }}\n      nodePort: {{ .Values.service.nodePort }}\n      {{- end }}\n      {{- with .Values.extraExposePorts }}\n      {{- tpl (toYaml . | nindent 4) $root }}\n      {{- end }}\n  selector:\n    {{- include \"grafana.selectorLabels\" . | nindent 4 }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create }}\n{{- $root := . -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n    {{- with .Values.serviceAccount.labels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- tpl (toYaml . | nindent 4) $root }}\n  {{- end }}\n  name: {{ include \"grafana.serviceAccountName\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/servicemonitor.yaml",
    "content": "{{- if .Values.serviceMonitor.enabled }}\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  {{- if .Values.serviceMonitor.namespace }}\n  namespace: {{ tpl .Values.serviceMonitor.namespace . }}\n  {{- else }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  {{- end }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n    {{- with .Values.serviceMonitor.labels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\nspec:\n  endpoints:\n  - port: {{ .Values.service.portName }}\n    {{- with .Values.serviceMonitor.interval }}\n    interval: {{ . }}\n    {{- end }}\n    {{- with .Values.serviceMonitor.scrapeTimeout }}\n    scrapeTimeout: {{ . }}\n    {{- end }}\n    honorLabels: true\n    path: {{ .Values.serviceMonitor.path }}\n    scheme: {{ .Values.serviceMonitor.scheme }}\n    {{- with .Values.serviceMonitor.tlsConfig }}\n    tlsConfig:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.serviceMonitor.relabelings }}\n    relabelings:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n    {{- with .Values.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n      {{- toYaml . | nindent 6 }}\n    {{- end }}\n  jobLabel: \"{{ .Release.Name }}\"\n  selector:\n    matchLabels:\n      {{- include \"grafana.selectorLabels\" . | nindent 6 }}\n  namespaceSelector:\n    matchNames:\n      - {{ include \"grafana.namespace\" . }}\n  {{- with .Values.serviceMonitor.targetLabels }}\n  targetLabels:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/statefulset.yaml",
    "content": "{{- $sts := list \"sts\" \"StatefulSet\" \"statefulset\" -}}\n{{- if (or (.Values.useStatefulSet) (and .Values.persistence.enabled (not .Values.persistence.existingClaim) (has .Values.persistence.type $sts)))}}\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n  {{- with .Values.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  replicas: {{ .Values.replicas }}\n  selector:\n    matchLabels:\n      {{- include \"grafana.selectorLabels\" . | nindent 6 }}\n  serviceName: {{ include \"grafana.fullname\" . }}-headless\n  template:\n    metadata:\n      labels:\n        {{- include \"grafana.selectorLabels\" . | nindent 8 }}\n        {{- with .Values.podLabels }}\n        {{- toYaml . | nindent 8 }}\n        {{- end }}\n      annotations:\n        checksum/config: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n        checksum/dashboards-json-config: {{ include (print $.Template.BasePath \"/dashboards-json-configmap.yaml\") . | sha256sum }}\n        checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath \"/configmap-dashboard-provider.yaml\") . | sha256sum }}\n        {{- if and (or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret))) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}\n        checksum/secret: {{ include (print $.Template.BasePath \"/secret.yaml\") . | sha256sum }}\n        {{- end }}\n        kubectl.kubernetes.io/default-container: {{ .Chart.Name }}\n        {{- with .Values.podAnnotations }}\n        {{- toYaml . | nindent 8 }}\n        {{- end }}\n    spec:\n      {{- include \"grafana.pod\" . | nindent 6 }}\n  {{- if .Values.persistence.enabled}}\n  volumeClaimTemplates:\n  - metadata:\n      name: storage\n    spec:\n      accessModes: {{ .Values.persistence.accessModes }}\n      storageClassName: {{ .Values.persistence.storageClassName }}\n      resources:\n        requests:\n          storage: {{ .Values.persistence.size }}\n      {{- with .Values.persistence.selectorLabels }}\n      selector:\n        matchLabels:\n          {{- toYaml . | nindent 10 }}\n      {{- end }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/tests/test-configmap.yaml",
    "content": "{{- if .Values.testFramework.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-test\n  namespace: {{ include \"grafana.namespace\" . }}\n  annotations:\n    \"helm.sh/hook\": test-success\n    \"helm.sh/hook-delete-policy\": \"before-hook-creation,hook-succeeded\"\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\ndata:\n  run.sh: |-\n    @test \"Test Health\" {\n      url=\"http://{{ include \"grafana.fullname\" . }}/api/health\"\n\n      code=$(wget --server-response --spider --timeout 90 --tries 10 ${url} 2>&1 | awk '/^  HTTP/{print $2}')\n      [ \"$code\" == \"200\" ]\n    }\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/tests/test-podsecuritypolicy.yaml",
    "content": "{{- if and (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") .Values.testFramework.enabled .Values.rbac.pspEnabled }}\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-test\n  annotations:\n    \"helm.sh/hook\": test-success\n    \"helm.sh/hook-delete-policy\": \"before-hook-creation,hook-succeeded\"\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\nspec:\n  allowPrivilegeEscalation: true\n  privileged: false\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  fsGroup:\n    rule: RunAsAny\n  seLinux:\n    rule: RunAsAny\n  supplementalGroups:\n    rule: RunAsAny\n  runAsUser:\n    rule: RunAsAny\n  volumes:\n    - configMap\n    - downwardAPI\n    - emptyDir\n    - projected\n    - csi\n    - secret\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/tests/test-role.yaml",
    "content": "{{- if and (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") .Values.testFramework.enabled .Values.rbac.pspEnabled }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-test\n  namespace: {{ include \"grafana.namespace\" . }}\n  annotations:\n    \"helm.sh/hook\": test-success\n    \"helm.sh/hook-delete-policy\": \"before-hook-creation,hook-succeeded\"\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\nrules:\n  - apiGroups:      ['policy']\n    resources:      ['podsecuritypolicies']\n    verbs:          ['use']\n    resourceNames:  [{{ include \"grafana.fullname\" . }}-test]\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/tests/test-rolebinding.yaml",
    "content": "{{- if and (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") .Values.testFramework.enabled .Values.rbac.pspEnabled }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-test\n  namespace: {{ include \"grafana.namespace\" . }}\n  annotations:\n    \"helm.sh/hook\": test-success\n    \"helm.sh/hook-delete-policy\": \"before-hook-creation,hook-succeeded\"\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: {{ include \"grafana.fullname\" . }}-test\nsubjects:\n  - kind: ServiceAccount\n    name: {{ include \"grafana.serviceAccountNameTest\" . }}\n    namespace: {{ include \"grafana.namespace\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/tests/test-serviceaccount.yaml",
    "content": "{{- if and .Values.testFramework.enabled .Values.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n  name: {{ include \"grafana.serviceAccountNameTest\" . }}\n  namespace: {{ include \"grafana.namespace\" . }}\n  annotations:\n    \"helm.sh/hook\": test-success\n    \"helm.sh/hook-delete-policy\": \"before-hook-creation,hook-succeeded\"\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/templates/tests/test.yaml",
    "content": "{{- if .Values.testFramework.enabled }}\n{{- $root := . }}\napiVersion: v1\nkind: Pod\nmetadata:\n  name: {{ include \"grafana.fullname\" . }}-test\n  labels:\n    {{- include \"grafana.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test-success\n    \"helm.sh/hook-delete-policy\": \"before-hook-creation,hook-succeeded\"\n  namespace: {{ include \"grafana.namespace\" . }}\nspec:\n  serviceAccountName: {{ include \"grafana.serviceAccountNameTest\" . }}\n  {{- with .Values.testFramework.securityContext }}\n  securityContext:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  {{- if or .Values.image.pullSecrets .Values.global.imagePullSecrets }}\n  imagePullSecrets:\n    {{- include \"grafana.imagePullSecrets\" (dict \"root\" $root \"imagePullSecrets\" .Values.image.pullSecrets) | nindent 4 }}\n  {{- end }}\n  {{- with .Values.nodeSelector }}\n  nodeSelector:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  {{- with .Values.affinity }}\n  affinity:\n    {{- tpl (toYaml .) $root | nindent 4 }}\n  {{- end }}\n  {{- with .Values.tolerations }}\n  tolerations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  containers:\n    - name: {{ .Release.Name }}-test\n      image: \"{{ .Values.testFramework.image}}:{{ .Values.testFramework.tag }}\"\n      imagePullPolicy: \"{{ .Values.testFramework.imagePullPolicy}}\"\n      command: [\"/opt/bats/bin/bats\", \"-t\", \"/tests/run.sh\"]\n      volumeMounts:\n        - mountPath: /tests\n          name: tests\n          readOnly: true\n  volumes:\n    - name: tests\n      configMap:\n        name: {{ include \"grafana.fullname\" . }}-test\n  restartPolicy: Never\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/grafana/values.yaml",
    "content": "global:\n  # To help compatibility with other charts which use global.imagePullSecrets.\n  # Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style).\n  # Can be tempalted.\n  # global:\n  #   imagePullSecrets:\n  #   - name: pullSecret1\n  #   - name: pullSecret2\n  # or\n  # global:\n  #   imagePullSecrets:\n  #   - pullSecret1\n  #   - pullSecret2\n  imagePullSecrets: []\n\nrbac:\n  create: true\n  ## Use an existing ClusterRole/Role (depending on rbac.namespaced false/true)\n  # useExistingRole: name-of-some-(cluster)role\n  pspEnabled: false\n  pspUseAppArmor: false\n  namespaced: false\n  extraRoleRules: []\n  # - apiGroups: []\n  #   resources: []\n  #   verbs: []\n  extraClusterRoleRules: []\n  # - apiGroups: []\n  #   resources: []\n  #   verbs: []\nserviceAccount:\n  create: true\n  name:\n  nameTest:\n  ## ServiceAccount labels.\n  labels: {}\n## Service account annotations. Can be templated.\n#  annotations:\n#    eks.amazonaws.com/role-arn: arn:aws:iam::123456789000:role/iam-role-name-here\n  autoMount: true\n\nreplicas: 1\n\n## Create a headless service for the deployment\nheadlessService: false\n\n## Create HorizontalPodAutoscaler object for deployment type\n#\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 5\n  targetCPU: \"60\"\n  targetMemory: \"\"\n  behavior: {}\n\n## See `kubectl explain poddisruptionbudget.spec` for more\n## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\npodDisruptionBudget: {}\n#  minAvailable: 1\n#  maxUnavailable: 1\n\n## See `kubectl explain deployment.spec.strategy` for more\n## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy\ndeploymentStrategy:\n  type: RollingUpdate\n\nreadinessProbe:\n  httpGet:\n    path: /api/health\n    port: 3000\n\nlivenessProbe:\n  httpGet:\n    path: /api/health\n    port: 3000\n  initialDelaySeconds: 60\n  timeoutSeconds: 30\n  failureThreshold: 10\n\n## Use an alternate scheduler, e.g. \"stork\".\n## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n##\n# schedulerName: \"default-scheduler\"\n\nimage:\n  repository: docker.io/grafana/grafana\n  # Overrides the Grafana image tag whose default is the chart appVersion\n  tag: \"\"\n  sha: \"\"\n  pullPolicy: IfNotPresent\n\n  ## Optionally specify an array of imagePullSecrets.\n  ## Secrets must be manually created in the namespace.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n  ## Can be templated.\n  ##\n  pullSecrets: []\n  #   - myRegistrKeySecretName\n\ntestFramework:\n  enabled: true\n  image: docker.io/bats/bats\n  tag: \"v1.4.1\"\n  imagePullPolicy: IfNotPresent\n  securityContext: {}\n\nsecurityContext:\n  runAsNonRoot: true\n  runAsUser: 472\n  runAsGroup: 472\n  fsGroup: 472\n\ncontainerSecurityContext:\n  allowPrivilegeEscalation: false\n  capabilities:\n    drop:\n    - ALL\n  seccompProfile:\n    type: RuntimeDefault\n\n# Enable creating the grafana configmap\ncreateConfigmap: true\n\n# Extra configmaps to mount in grafana pods\n# Values are templated.\nextraConfigmapMounts: []\n  # - name: certs-configmap\n  #   mountPath: /etc/grafana/ssl/\n  #   subPath: certificates.crt # (optional)\n  #   configMap: certs-configmap\n  #   readOnly: true\n\n\nextraEmptyDirMounts: []\n  # - name: provisioning-notifiers\n  #   mountPath: /etc/grafana/provisioning/notifiers\n\n\n# Apply extra labels to common labels.\nextraLabels: {}\n\n## Assign a PriorityClassName to pods if set\n# priorityClassName:\n\ndownloadDashboardsImage:\n  repository: docker.io/curlimages/curl\n  tag: 7.85.0\n  sha: \"\"\n  pullPolicy: IfNotPresent\n\ndownloadDashboards:\n  env: {}\n  envFromSecret: \"\"\n  resources: {}\n  securityContext:\n    allowPrivilegeEscalation: false\n    capabilities:\n      drop:\n      - ALL\n    seccompProfile:\n      type: RuntimeDefault\n  envValueFrom: {}\n  #  ENV_NAME:\n  #    configMapKeyRef:\n  #      name: configmap-name\n  #      key: value_key\n\n## Pod Annotations\n# podAnnotations: {}\n\n## Pod Labels\n# podLabels: {}\n\npodPortName: grafana\ngossipPortName: gossip\n## Deployment annotations\n# annotations: {}\n\n## Expose the grafana service to be accessed from outside the cluster (LoadBalancer service).\n## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.\n## ref: http://kubernetes.io/docs/user-guide/services/\n##\nservice:\n  enabled: true\n  type: ClusterIP\n  port: 80\n  targetPort: 3000\n    # targetPort: 4181 To be used with a proxy extraContainer\n  ## Service annotations. Can be templated.\n  annotations: {}\n  labels: {}\n  portName: service\n  # Adds the appProtocol field to the service. This allows to work with istio protocol selection. Ex: \"http\" or \"tcp\"\n  appProtocol: \"\"\n\nserviceMonitor:\n  ## If true, a ServiceMonitor CRD is created for a prometheus operator\n  ## https://github.com/coreos/prometheus-operator\n  ##\n  enabled: false\n  path: /metrics\n  #  namespace: monitoring  (defaults to use the namespace this chart is deployed to)\n  labels: {}\n  interval: 1m\n  scheme: http\n  tlsConfig: {}\n  scrapeTimeout: 30s\n  relabelings: []\n  metricRelabelings: []\n  targetLabels: []\n\nextraExposePorts: []\n # - name: keycloak\n #   port: 8080\n #   targetPort: 8080\n #   type: ClusterIP\n\n# overrides pod.spec.hostAliases in the grafana deployment's pods\nhostAliases: []\n  # - ip: \"1.2.3.4\"\n  #   hostnames:\n  #     - \"my.host.com\"\n\ningress:\n  enabled: false\n  # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName\n  # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress\n  # ingressClassName: nginx\n  # Values can be templated\n  annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n  labels: {}\n  path: /\n\n  # pathType is only for k8s >= 1.1=\n  pathType: Prefix\n\n  hosts:\n    - chart-example.local\n  ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.\n  extraPaths: []\n  # - path: /*\n  #   backend:\n  #     serviceName: ssl-redirect\n  #     servicePort: use-annotation\n  ## Or for k8s > 1.19\n  # - path: /*\n  #   pathType: Prefix\n  #   backend:\n  #     service:\n  #       name: ssl-redirect\n  #       port:\n  #         name: use-annotation\n\n\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\nresources: {}\n#  limits:\n#    cpu: 100m\n#    memory: 128Mi\n#  requests:\n#    cpu: 100m\n#    memory: 128Mi\n\n## Node labels for pod assignment\n## ref: https://kubernetes.io/docs/user-guide/node-selection/\n#\nnodeSelector: {}\n\n## Tolerations for pod assignment\n## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n##\ntolerations: []\n\n## Affinity for pod assignment (evaluated as template)\n## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n##\naffinity: {}\n\n## Topology Spread Constraints\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n##\ntopologySpreadConstraints: []\n\n## Additional init containers (evaluated as template)\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n##\nextraInitContainers: []\n\n## Enable an Specify container in extraContainers. This is meant to allow adding an authentication proxy to a grafana pod\nextraContainers: \"\"\n# extraContainers: |\n# - name: proxy\n#   image: quay.io/gambol99/keycloak-proxy:latest\n#   args:\n#   - -provider=github\n#   - -client-id=\n#   - -client-secret=\n#   - -github-org=<ORG_NAME>\n#   - -email-domain=*\n#   - -cookie-secret=\n#   - -http-address=http://0.0.0.0:4181\n#   - -upstream-url=http://127.0.0.1:3000\n#   ports:\n#     - name: proxy-web\n#       containerPort: 4181\n\n## Volumes that can be used in init containers that will not be mounted to deployment pods\nextraContainerVolumes: []\n#  - name: volume-from-secret\n#    secret:\n#      secretName: secret-to-mount\n#  - name: empty-dir-volume\n#    emptyDir: {}\n\n## Enable persistence using Persistent Volume Claims\n## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/\n##\npersistence:\n  type: pvc\n  enabled: false\n  # storageClassName: default\n  accessModes:\n    - ReadWriteOnce\n  size: 10Gi\n  # annotations: {}\n  finalizers:\n    - kubernetes.io/pvc-protection\n  # selectorLabels: {}\n  ## Sub-directory of the PV to mount. Can be templated.\n  # subPath: \"\"\n  ## Name of an existing PVC. Can be templated.\n  # existingClaim:\n  ## Extra labels to apply to a PVC.\n  extraPvcLabels: {}\n\n  ## If persistence is not enabled, this allows to mount the\n  ## local storage in-memory to improve performance\n  ##\n  inMemory:\n    enabled: false\n    ## The maximum usage on memory medium EmptyDir would be\n    ## the minimum value between the SizeLimit specified\n    ## here and the sum of memory limits of all containers in a pod\n    ##\n    # sizeLimit: 300Mi\n\ninitChownData:\n  ## If false, data ownership will not be reset at startup\n  ## This allows the grafana-server to be run with an arbitrary user\n  ##\n  enabled: true\n\n  ## initChownData container image\n  ##\n  image:\n    repository: docker.io/library/busybox\n    tag: \"1.31.1\"\n    sha: \"\"\n    pullPolicy: IfNotPresent\n\n  ## initChownData resource requests and limits\n  ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/\n  ##\n  resources: {}\n  #  limits:\n  #    cpu: 100m\n  #    memory: 128Mi\n  #  requests:\n  #    cpu: 100m\n  #    memory: 128Mi\n  securityContext:\n    runAsNonRoot: false\n    runAsUser: 0\n    seccompProfile:\n      type: RuntimeDefault\n    capabilities:\n      add:\n        - CHOWN\n\n# Administrator credentials when not using an existing secret (see below)\nadminUser: admin\n# adminPassword: strongpassword\n\n# Use an existing secret for the admin user.\nadmin:\n  ## Name of the secret. Can be templated.\n  existingSecret: \"\"\n  userKey: admin-user\n  passwordKey: admin-password\n\n## Define command to be executed at startup by grafana container\n## Needed if using `vault-env` to manage secrets (ref: https://banzaicloud.com/blog/inject-secrets-into-pods-vault/)\n## Default is \"run.sh\" as defined in grafana's Dockerfile\n# command:\n# - \"sh\"\n# - \"/run.sh\"\n\n## Optionally define args if command is used\n## Needed if using `hashicorp/envconsul` to manage secrets\n## By default no arguments are set\n# args:\n# - \"-secret\"\n# - \"secret/grafana\"\n# - \"./grafana\"\n\n## Extra environment variables that will be pass onto deployment pods\n##\n## to provide grafana with access to CloudWatch on AWS EKS:\n## 1. create an iam role of type \"Web identity\" with provider oidc.eks.* (note the provider for later)\n## 2. edit the \"Trust relationships\" of the role, add a line inside the StringEquals clause using the\n## same oidc eks provider as noted before (same as the existing line)\n## also, replace NAMESPACE and prometheus-operator-grafana with the service account namespace and name\n##\n##  \"oidc.eks.us-east-1.amazonaws.com/id/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:sub\": \"system:serviceaccount:NAMESPACE:prometheus-operator-grafana\",\n##\n## 3. attach a policy to the role, you can use a built in policy called CloudWatchReadOnlyAccess\n## 4. use the following env: (replace 123456789000 and iam-role-name-here with your aws account number and role name)\n##\n## env:\n##   AWS_ROLE_ARN: arn:aws:iam::123456789000:role/iam-role-name-here\n##   AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token\n##   AWS_REGION: us-east-1\n##\n## 5. uncomment the EKS section in extraSecretMounts: below\n## 6. uncomment the annotation section in the serviceAccount: above\n## make sure to replace arn:aws:iam::123456789000:role/iam-role-name-here with your role arn\n\nenv: {}\n\n## \"valueFrom\" environment variable references that will be added to deployment pods. Name is templated.\n## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core\n## Renders in container spec as:\n##   env:\n##     ...\n##     - name: <key>\n##       valueFrom:\n##         <value rendered as YAML>\nenvValueFrom: {}\n  #  ENV_NAME:\n  #    configMapKeyRef:\n  #      name: configmap-name\n  #      key: value_key\n\n## The name of a secret in the same kubernetes namespace which contain values to be added to the environment\n## This can be useful for auth tokens, etc. Value is templated.\nenvFromSecret: \"\"\n\n## Sensible environment variables that will be rendered as new secret object\n## This can be useful for auth tokens, etc.\n## If the secret values contains \"{{\", they'll need to be properly escaped so that they are not interpreted by Helm\n## ref: https://helm.sh/docs/howto/charts_tips_and_tricks/#using-the-tpl-function\nenvRenderSecret: {}\n\n## The names of secrets in the same kubernetes namespace which contain values to be added to the environment\n## Each entry should contain a name key, and can optionally specify whether the secret must be defined with an optional key.\n## Name is templated.\nenvFromSecrets: []\n## - name: secret-name\n##   optional: true\n\n## The names of conifgmaps in the same kubernetes namespace which contain values to be added to the environment\n## Each entry should contain a name key, and can optionally specify whether the configmap must be defined with an optional key.\n## Name is templated.\n## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#configmapenvsource-v1-core\nenvFromConfigMaps: []\n## - name: configmap-name\n##   optional: true\n\n# Inject Kubernetes services as environment variables.\n# See https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#environment-variables\nenableServiceLinks: true\n\n## Additional grafana server secret mounts\n# Defines additional mounts with secrets. Secrets must be manually created in the namespace.\nextraSecretMounts: []\n  # - name: secret-files\n  #   mountPath: /etc/secrets\n  #   secretName: grafana-secret-files\n  #   readOnly: true\n  #   subPath: \"\"\n  #\n  # for AWS EKS (cloudwatch) use the following (see also instruction in env: above)\n  # - name: aws-iam-token\n  #   mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount\n  #   readOnly: true\n  #   projected:\n  #     defaultMode: 420\n  #     sources:\n  #       - serviceAccountToken:\n  #           audience: sts.amazonaws.com\n  #           expirationSeconds: 86400\n  #           path: token\n  #\n  # for CSI e.g. Azure Key Vault use the following\n  # - name: secrets-store-inline\n  #  mountPath: /run/secrets\n  #  readOnly: true\n  #  csi:\n  #    driver: secrets-store.csi.k8s.io\n  #    readOnly: true\n  #    volumeAttributes:\n  #      secretProviderClass: \"akv-grafana-spc\"\n  #    nodePublishSecretRef:                       # Only required when using service principal mode\n  #       name: grafana-akv-creds                  # Only required when using service principal mode\n\n## Additional grafana server volume mounts\n# Defines additional volume mounts.\nextraVolumeMounts: []\n  # - name: extra-volume-0\n  #   mountPath: /mnt/volume0\n  #   readOnly: true\n  #   existingClaim: volume-claim\n  # - name: extra-volume-1\n  #   mountPath: /mnt/volume1\n  #   readOnly: true\n  #   hostPath: /usr/shared/\n  # - name: grafana-secrets\n  #   mountPath: /mnt/volume2\n  #   csi: true\n  #   data:\n  #     driver: secrets-store.csi.k8s.io\n  #     readOnly: true\n  #     volumeAttributes:\n  #       secretProviderClass: \"grafana-env-spc\"\n\n## Container Lifecycle Hooks. Execute a specific bash command or make an HTTP request\nlifecycleHooks: {}\n  # postStart:\n  #   exec:\n  #     command: []\n\n## Pass the plugins you want installed as a list.\n##\nplugins: []\n  # - digrich-bubblechart-panel\n  # - grafana-clock-panel\n  ## You can also use other plugin download URL, as long as they are valid zip files,\n  ## and specify the name of the plugin after the semicolon. Like this:\n  # - https://grafana.com/api/plugins/marcusolsson-json-datasource/versions/1.3.2/download;marcusolsson-json-datasource\n\n## Configure grafana datasources\n## ref: http://docs.grafana.org/administration/provisioning/#datasources\n##\ndatasources: {}\n#  datasources.yaml:\n#    apiVersion: 1\n#    datasources:\n#    - name: Prometheus\n#      type: prometheus\n#      url: http://prometheus-prometheus-server\n#      access: proxy\n#      isDefault: true\n#    - name: CloudWatch\n#      type: cloudwatch\n#      access: proxy\n#      uid: cloudwatch\n#      editable: false\n#      jsonData:\n#        authType: default\n#        defaultRegion: us-east-1\n#    deleteDatasources: []\n#    - name: Prometheus\n\n## Configure grafana alerting (can be templated)\n## ref: http://docs.grafana.org/administration/provisioning/#alerting\n##\nalerting: {}\n  # rules.yaml:\n  #   apiVersion: 1\n  #   groups:\n  #     - orgId: 1\n  #       name: '{{ .Chart.Name }}_my_rule_group'\n  #       folder: my_first_folder\n  #       interval: 60s\n  #       rules:\n  #         - uid: my_id_1\n  #           title: my_first_rule\n  #           condition: A\n  #           data:\n  #             - refId: A\n  #               datasourceUid: '-100'\n  #               model:\n  #                 conditions:\n  #                   - evaluator:\n  #                       params:\n  #                         - 3\n  #                       type: gt\n  #                     operator:\n  #                       type: and\n  #                     query:\n  #                       params:\n  #                         - A\n  #                     reducer:\n  #                       type: last\n  #                     type: query\n  #                 datasource:\n  #                   type: __expr__\n  #                   uid: '-100'\n  #                 expression: 1==0\n  #                 intervalMs: 1000\n  #                 maxDataPoints: 43200\n  #                 refId: A\n  #                 type: math\n  #           dashboardUid: my_dashboard\n  #           panelId: 123\n  #           noDataState: Alerting\n  #           for: 60s\n  #           annotations:\n  #             some_key: some_value\n  #           labels:\n  #             team: sre_team_1\n  # contactpoints.yaml:\n  #   apiVersion: 1\n  #   contactPoints:\n  #     - orgId: 1\n  #       name: cp_1\n  #       receivers:\n  #         - uid: first_uid\n  #           type: pagerduty\n  #           settings:\n  #             integrationKey: XXX\n  #             severity: critical\n  #             class: ping failure\n  #             component: Grafana\n  #             group: app-stack\n  #             summary: |\n  #               {{ `{{ include \"default.message\" . }}` }}\n\n## Configure notifiers\n## ref: http://docs.grafana.org/administration/provisioning/#alert-notification-channels\n##\nnotifiers: {}\n#  notifiers.yaml:\n#    notifiers:\n#    - name: email-notifier\n#      type: email\n#      uid: email1\n#      # either:\n#      org_id: 1\n#      # or\n#      org_name: Main Org.\n#      is_default: true\n#      settings:\n#        addresses: an_email_address@example.com\n#    delete_notifiers:\n\n## Configure grafana dashboard providers\n## ref: http://docs.grafana.org/administration/provisioning/#dashboards\n##\n## `path` must be /var/lib/grafana/dashboards/<provider_name>\n##\ndashboardProviders: {}\n#  dashboardproviders.yaml:\n#    apiVersion: 1\n#    providers:\n#    - name: 'default'\n#      orgId: 1\n#      folder: ''\n#      type: file\n#      disableDeletion: false\n#      editable: true\n#      options:\n#        path: /var/lib/grafana/dashboards/default\n\n## Configure grafana dashboard to import\n## NOTE: To use dashboards you must also enable/configure dashboardProviders\n## ref: https://grafana.com/dashboards\n##\n## dashboards per provider, use provider name as key.\n##\ndashboards: {}\n  # default:\n  #   some-dashboard:\n  #     json: |\n  #       $RAW_JSON\n  #   custom-dashboard:\n  #     file: dashboards/custom-dashboard.json\n  #   prometheus-stats:\n  #     gnetId: 2\n  #     revision: 2\n  #     datasource: Prometheus\n  #   local-dashboard:\n  #     url: https://example.com/repository/test.json\n  #     token: ''\n  #   local-dashboard-base64:\n  #     url: https://example.com/repository/test-b64.json\n  #     token: ''\n  #     b64content: true\n  #   local-dashboard-gitlab:\n  #     url: https://example.com/repository/test-gitlab.json\n  #     gitlabToken: ''\n  #   local-dashboard-bitbucket:\n  #     url: https://example.com/repository/test-bitbucket.json\n  #     bearerToken: ''\n  #   local-dashboard-azure:\n  #     url: https://example.com/repository/test-azure.json\n  #     basic: ''\n  #     acceptHeader: '*/*'\n\n## Reference to external ConfigMap per provider. Use provider name as key and ConfigMap name as value.\n## A provider dashboards must be defined either by external ConfigMaps or in values.yaml, not in both.\n## ConfigMap data example:\n##\n## data:\n##   example-dashboard.json: |\n##     RAW_JSON\n##\ndashboardsConfigMaps: {}\n#  default: \"\"\n\n## Grafana's primary configuration\n## NOTE: values in map will be converted to ini format\n## ref: http://docs.grafana.org/installation/configuration/\n##\ngrafana.ini:\n  paths:\n    data: /var/lib/grafana/\n    logs: /var/log/grafana\n    plugins: /var/lib/grafana/plugins\n    provisioning: /etc/grafana/provisioning\n  analytics:\n    check_for_updates: true\n  log:\n    mode: console\n  grafana_net:\n    url: https://grafana.net\n  server:\n    domain: \"{{ if (and .Values.ingress.enabled .Values.ingress.hosts) }}{{ .Values.ingress.hosts | first }}{{ else }}''{{ end }}\"\n## grafana Authentication can be enabled with the following values on grafana.ini\n # server:\n      # The full public facing url you use in browser, used for redirects and emails\n #    root_url:\n # https://grafana.com/docs/grafana/latest/auth/github/#enable-github-in-grafana\n # auth.github:\n #    enabled: false\n #    allow_sign_up: false\n #    scopes: user:email,read:org\n #    auth_url: https://github.com/login/oauth/authorize\n #    token_url: https://github.com/login/oauth/access_token\n #    api_url: https://api.github.com/user\n #    team_ids:\n #    allowed_organizations:\n #    client_id:\n #    client_secret:\n## LDAP Authentication can be enabled with the following values on grafana.ini\n## NOTE: Grafana will fail to start if the value for ldap.toml is invalid\n  # auth.ldap:\n  #   enabled: true\n  #   allow_sign_up: true\n  #   config_file: /etc/grafana/ldap.toml\n\n## Grafana's LDAP configuration\n## Templated by the template in _helpers.tpl\n## NOTE: To enable the grafana.ini must be configured with auth.ldap.enabled\n## ref: http://docs.grafana.org/installation/configuration/#auth-ldap\n## ref: http://docs.grafana.org/installation/ldap/#configuration\nldap:\n  enabled: false\n  # `existingSecret` is a reference to an existing secret containing the ldap configuration\n  # for Grafana in a key `ldap-toml`.\n  existingSecret: \"\"\n  # `config` is the content of `ldap.toml` that will be stored in the created secret\n  config: \"\"\n  # config: |-\n  #   verbose_logging = true\n\n  #   [[servers]]\n  #   host = \"my-ldap-server\"\n  #   port = 636\n  #   use_ssl = true\n  #   start_tls = false\n  #   ssl_skip_verify = false\n  #   bind_dn = \"uid=%s,ou=users,dc=myorg,dc=com\"\n\n## Grafana's SMTP configuration\n## NOTE: To enable, grafana.ini must be configured with smtp.enabled\n## ref: http://docs.grafana.org/installation/configuration/#smtp\nsmtp:\n  # `existingSecret` is a reference to an existing secret containing the smtp configuration\n  # for Grafana.\n  existingSecret: \"\"\n  userKey: \"user\"\n  passwordKey: \"password\"\n\n## Sidecars that collect the configmaps with specified label and stores the included files them into the respective folders\n## Requires at least Grafana 5 to work and can't be used together with parameters dashboardProviders, datasources and dashboards\nsidecar:\n  image:\n    repository: quay.io/kiwigrid/k8s-sidecar\n    tag: 1.24.6\n    sha: \"\"\n  imagePullPolicy: IfNotPresent\n  resources: {}\n#   limits:\n#     cpu: 100m\n#     memory: 100Mi\n#   requests:\n#     cpu: 50m\n#     memory: 50Mi\n  securityContext:\n    allowPrivilegeEscalation: false\n    capabilities:\n      drop:\n      - ALL\n    seccompProfile:\n      type: RuntimeDefault\n  # skipTlsVerify Set to true to skip tls verification for kube api calls\n  # skipTlsVerify: true\n  enableUniqueFilenames: false\n  readinessProbe: {}\n  livenessProbe: {}\n  # Log level default for all sidecars. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL. Defaults to INFO\n  # logLevel: INFO\n  alerts:\n    enabled: false\n    # Additional environment variables for the alerts sidecar\n    env: {}\n    # Do not reprocess already processed unchanged resources on k8s API reconnect.\n    # ignoreAlreadyProcessed: true\n    # label that the configmaps with alert are marked with\n    label: grafana_alert\n    # value of label that the configmaps with alert are set to\n    labelValue: \"\"\n    # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.\n    # logLevel: INFO\n    # If specified, the sidecar will search for alert config-maps inside this namespace.\n    # Otherwise the namespace in which the sidecar is running will be used.\n    # It's also possible to specify ALL to search in all namespaces\n    searchNamespace: null\n    # Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.\n    watchMethod: WATCH\n    # search in configmap, secret or both\n    resource: both\n    # watchServerTimeout: request to the server, asking it to cleanly close the connection after that.\n    # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S\n    # watchServerTimeout: 3600\n    #\n    # watchClientTimeout: is a client-side timeout, configuring your local socket.\n    # If you have a network outage dropping all packets with no RST/FIN,\n    # this is how long your client waits before realizing & dropping the connection.\n    # defaults to 66sec (sic!)\n    # watchClientTimeout: 60\n    #\n    # Endpoint to send request to reload alerts\n    reloadURL: \"http://localhost:3000/api/admin/provisioning/alerting/reload\"\n    # Absolute path to shell script to execute after a alert got reloaded\n    script: null\n    skipReload: false\n    # Deploy the alert sidecar as an initContainer in addition to a container.\n    # Additional alert sidecar volume mounts\n    extraMounts: []\n    # Sets the size limit of the alert sidecar emptyDir volume\n    sizeLimit: {}\n  dashboards:\n    enabled: false\n    # Additional environment variables for the dashboards sidecar\n    env: {}\n    # Do not reprocess already processed unchanged resources on k8s API reconnect.\n    # ignoreAlreadyProcessed: true\n    SCProvider: true\n    # label that the configmaps with dashboards are marked with\n    label: grafana_dashboard\n    # value of label that the configmaps with dashboards are set to\n    labelValue: \"\"\n    # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.\n    # logLevel: INFO\n    # folder in the pod that should hold the collected dashboards (unless `defaultFolderName` is set)\n    folder: /tmp/dashboards\n    # The default folder name, it will create a subfolder under the `folder` and put dashboards in there instead\n    defaultFolderName: null\n    # Namespaces list. If specified, the sidecar will search for config-maps/secrets inside these namespaces.\n    # Otherwise the namespace in which the sidecar is running will be used.\n    # It's also possible to specify ALL to search in all namespaces.\n    searchNamespace: null\n    # Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.\n    watchMethod: WATCH\n    # search in configmap, secret or both\n    resource: both\n    # If specified, the sidecar will look for annotation with this name to create folder and put graph here.\n    # You can use this parameter together with `provider.foldersFromFilesStructure`to annotate configmaps and create folder structure.\n    folderAnnotation: null\n    # Endpoint to send request to reload alerts\n    reloadURL: \"http://localhost:3000/api/admin/provisioning/dashboards/reload\"\n    # Absolute path to shell script to execute after a configmap got reloaded\n    script: null\n    skipReload: false\n    # watchServerTimeout: request to the server, asking it to cleanly close the connection after that.\n    # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S\n    # watchServerTimeout: 3600\n    #\n    # watchClientTimeout: is a client-side timeout, configuring your local socket.\n    # If you have a network outage dropping all packets with no RST/FIN,\n    # this is how long your client waits before realizing & dropping the connection.\n    # defaults to 66sec (sic!)\n    # watchClientTimeout: 60\n    #\n    # provider configuration that lets grafana manage the dashboards\n    provider:\n      # name of the provider, should be unique\n      name: sidecarProvider\n      # orgid as configured in grafana\n      orgid: 1\n      # folder in which the dashboards should be imported in grafana\n      folder: ''\n      # type of the provider\n      type: file\n      # disableDelete to activate a import-only behaviour\n      disableDelete: false\n      # allow updating provisioned dashboards from the UI\n      allowUiUpdates: false\n      # allow Grafana to replicate dashboard structure from filesystem\n      foldersFromFilesStructure: false\n    # Additional dashboard sidecar volume mounts\n    extraMounts: []\n    # Sets the size limit of the dashboard sidecar emptyDir volume\n    sizeLimit: {}\n  datasources:\n    enabled: false\n    # Additional environment variables for the datasourcessidecar\n    env: {}\n    # Do not reprocess already processed unchanged resources on k8s API reconnect.\n    # ignoreAlreadyProcessed: true\n    # label that the configmaps with datasources are marked with\n    label: grafana_datasource\n    # value of label that the configmaps with datasources are set to\n    labelValue: \"\"\n    # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.\n    # logLevel: INFO\n    # If specified, the sidecar will search for datasource config-maps inside this namespace.\n    # Otherwise the namespace in which the sidecar is running will be used.\n    # It's also possible to specify ALL to search in all namespaces\n    searchNamespace: null\n    # Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.\n    watchMethod: WATCH\n    # search in configmap, secret or both\n    resource: both\n    # watchServerTimeout: request to the server, asking it to cleanly close the connection after that.\n    # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S\n    # watchServerTimeout: 3600\n    #\n    # watchClientTimeout: is a client-side timeout, configuring your local socket.\n    # If you have a network outage dropping all packets with no RST/FIN,\n    # this is how long your client waits before realizing & dropping the connection.\n    # defaults to 66sec (sic!)\n    # watchClientTimeout: 60\n    #\n    # Endpoint to send request to reload datasources\n    reloadURL: \"http://localhost:3000/api/admin/provisioning/datasources/reload\"\n    # Absolute path to shell script to execute after a datasource got reloaded\n    script: null\n    skipReload: false\n    # Deploy the datasource sidecar as an initContainer in addition to a container.\n    # This is needed if skipReload is true, to load any datasources defined at startup time.\n    initDatasources: false\n    # Sets the size limit of the datasource sidecar emptyDir volume\n    sizeLimit: {}\n  plugins:\n    enabled: false\n    # Additional environment variables for the plugins sidecar\n    env: {}\n    # Do not reprocess already processed unchanged resources on k8s API reconnect.\n    # ignoreAlreadyProcessed: true\n    # label that the configmaps with plugins are marked with\n    label: grafana_plugin\n    # value of label that the configmaps with plugins are set to\n    labelValue: \"\"\n    # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.\n    # logLevel: INFO\n    # If specified, the sidecar will search for plugin config-maps inside this namespace.\n    # Otherwise the namespace in which the sidecar is running will be used.\n    # It's also possible to specify ALL to search in all namespaces\n    searchNamespace: null\n    # Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.\n    watchMethod: WATCH\n    # search in configmap, secret or both\n    resource: both\n    # watchServerTimeout: request to the server, asking it to cleanly close the connection after that.\n    # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S\n    # watchServerTimeout: 3600\n    #\n    # watchClientTimeout: is a client-side timeout, configuring your local socket.\n    # If you have a network outage dropping all packets with no RST/FIN,\n    # this is how long your client waits before realizing & dropping the connection.\n    # defaults to 66sec (sic!)\n    # watchClientTimeout: 60\n    #\n    # Endpoint to send request to reload plugins\n    reloadURL: \"http://localhost:3000/api/admin/provisioning/plugins/reload\"\n    # Absolute path to shell script to execute after a plugin got reloaded\n    script: null\n    skipReload: false\n    # Deploy the datasource sidecar as an initContainer in addition to a container.\n    # This is needed if skipReload is true, to load any plugins defined at startup time.\n    initPlugins: false\n    # Sets the size limit of the plugin sidecar emptyDir volume\n    sizeLimit: {}\n  notifiers:\n    enabled: false\n    # Additional environment variables for the notifierssidecar\n    env: {}\n    # Do not reprocess already processed unchanged resources on k8s API reconnect.\n    # ignoreAlreadyProcessed: true\n    # label that the configmaps with notifiers are marked with\n    label: grafana_notifier\n    # value of label that the configmaps with notifiers are set to\n    labelValue: \"\"\n    # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.\n    # logLevel: INFO\n    # If specified, the sidecar will search for notifier config-maps inside this namespace.\n    # Otherwise the namespace in which the sidecar is running will be used.\n    # It's also possible to specify ALL to search in all namespaces\n    searchNamespace: null\n    # Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.\n    watchMethod: WATCH\n    # search in configmap, secret or both\n    resource: both\n    # watchServerTimeout: request to the server, asking it to cleanly close the connection after that.\n    # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S\n    # watchServerTimeout: 3600\n    #\n    # watchClientTimeout: is a client-side timeout, configuring your local socket.\n    # If you have a network outage dropping all packets with no RST/FIN,\n    # this is how long your client waits before realizing & dropping the connection.\n    # defaults to 66sec (sic!)\n    # watchClientTimeout: 60\n    #\n    # Endpoint to send request to reload notifiers\n    reloadURL: \"http://localhost:3000/api/admin/provisioning/notifications/reload\"\n    # Absolute path to shell script to execute after a notifier got reloaded\n    script: null\n    skipReload: false\n    # Deploy the notifier sidecar as an initContainer in addition to a container.\n    # This is needed if skipReload is true, to load any notifiers defined at startup time.\n    initNotifiers: false\n    # Sets the size limit of the notifier sidecar emptyDir volume\n    sizeLimit: {}\n\n## Override the deployment namespace\n##\nnamespaceOverride: \"\"\n\n## Number of old ReplicaSets to retain\n##\nrevisionHistoryLimit: 10\n\n## Add a seperate remote image renderer deployment/service\nimageRenderer:\n  deploymentStrategy: {}\n  # Enable the image-renderer deployment & service\n  enabled: false\n  replicas: 1\n  autoscaling:\n    enabled: false\n    minReplicas: 1\n    maxReplicas: 5\n    targetCPU: \"60\"\n    targetMemory: \"\"\n    behavior: {}\n  image:\n    # image-renderer Image repository\n    repository: docker.io/grafana/grafana-image-renderer\n    # image-renderer Image tag\n    tag: latest\n    # image-renderer Image sha (optional)\n    sha: \"\"\n    # image-renderer ImagePullPolicy\n    pullPolicy: Always\n  # extra environment variables\n  env:\n    HTTP_HOST: \"0.0.0.0\"\n    # RENDERING_ARGS: --no-sandbox,--disable-gpu,--window-size=1280x758\n    # RENDERING_MODE: clustered\n    # IGNORE_HTTPS_ERRORS: true\n\n  ## \"valueFrom\" environment variable references that will be added to deployment pods. Name is templated.\n  ## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core\n  ## Renders in container spec as:\n  ##   env:\n  ##     ...\n  ##     - name: <key>\n  ##       valueFrom:\n  ##         <value rendered as YAML>\n  envValueFrom: {}\n    #  ENV_NAME:\n    #    configMapKeyRef:\n    #      name: configmap-name\n    #      key: value_key\n\n  # image-renderer deployment serviceAccount\n  serviceAccountName: \"\"\n  # image-renderer deployment securityContext\n  securityContext: {}\n  # image-renderer deployment container securityContext\n  containerSecurityContext:\n    seccompProfile:\n      type: RuntimeDefault\n    capabilities:\n      drop: ['ALL']\n    allowPrivilegeEscalation: false\n    readOnlyRootFilesystem: true\n  # image-renderer deployment Host Aliases\n  hostAliases: []\n  # image-renderer deployment priority class\n  priorityClassName: ''\n  service:\n    # Enable the image-renderer service\n    enabled: true\n    # image-renderer service port name\n    portName: 'http'\n    # image-renderer service port used by both service and deployment\n    port: 8081\n    targetPort: 8081\n    # Adds the appProtocol field to the image-renderer service. This allows to work with istio protocol selection. Ex: \"http\" or \"tcp\"\n    appProtocol: \"\"\n  serviceMonitor:\n    ## If true, a ServiceMonitor CRD is created for a prometheus operator\n    ## https://github.com/coreos/prometheus-operator\n    ##\n    enabled: false\n    path: /metrics\n    #  namespace: monitoring  (defaults to use the namespace this chart is deployed to)\n    labels: {}\n    interval: 1m\n    scheme: http\n    tlsConfig: {}\n    scrapeTimeout: 30s\n    relabelings: []\n    # See: https://doc.crds.dev/github.com/prometheus-operator/kube-prometheus/monitoring.coreos.com/ServiceMonitor/v1@v0.11.0#spec-targetLabels\n    targetLabels: []\n      # - targetLabel1\n      # - targetLabel2\n  # If https is enabled in Grafana, this needs to be set as 'https' to correctly configure the callback used in Grafana\n  grafanaProtocol: http\n  # In case a sub_path is used this needs to be added to the image renderer callback\n  grafanaSubPath: \"\"\n  # name of the image-renderer port on the pod\n  podPortName: http\n  # number of image-renderer replica sets to keep\n  revisionHistoryLimit: 10\n  networkPolicy:\n    # Enable a NetworkPolicy to limit inbound traffic to only the created grafana pods\n    limitIngress: true\n    # Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods\n    limitEgress: false\n    # Allow additional services to access image-renderer (eg. Prometheus operator when ServiceMonitor is enabled)\n    extraIngressSelectors: []\n  resources: {}\n#   limits:\n#     cpu: 100m\n#     memory: 100Mi\n#   requests:\n#     cpu: 50m\n#     memory: 50Mi\n  ## Node labels for pod assignment\n  ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n  #\n  nodeSelector: {}\n\n  ## Tolerations for pod assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  ##\n  tolerations: []\n\n  ## Affinity for pod assignment (evaluated as template)\n  ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  ##\n  affinity: {}\n\n  ## Use an alternate scheduler, e.g. \"stork\".\n  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n  ##\n  # schedulerName: \"default-scheduler\"\n\nnetworkPolicy:\n  ## @param networkPolicy.enabled Enable creation of NetworkPolicy resources. Only Ingress traffic is filtered for now.\n  ##\n  enabled: false\n  ## @param networkPolicy.allowExternal Don't require client label for connections\n  ## The Policy model to apply. When set to false, only pods with the correct\n  ## client label will have network access to  grafana port defined.\n  ## When true, grafana will accept connections from any source\n  ## (with the correct destination port).\n  ##\n  ingress: true\n  ## @param networkPolicy.ingress When true enables the creation\n  ## an ingress network policy\n  ##\n  allowExternal: true\n  ## @param networkPolicy.explicitNamespacesSelector A Kubernetes LabelSelector to explicitly select namespaces from which traffic could be allowed\n  ## If explicitNamespacesSelector is missing or set to {}, only client Pods that are in the networkPolicy's namespace\n  ## and that match other criteria, the ones that have the good label, can reach the grafana.\n  ## But sometimes, we want the grafana to be accessible to clients from other namespaces, in this case, we can use this\n  ## LabelSelector to select these namespaces, note that the networkPolicy's namespace should also be explicitly added.\n  ##\n  ## Example:\n  ## explicitNamespacesSelector:\n  ##   matchLabels:\n  ##     role: frontend\n  ##   matchExpressions:\n  ##    - {key: role, operator: In, values: [frontend]}\n  ##\n  explicitNamespacesSelector: {}\n  ##\n  ##\n  ##\n  ##\n  ##\n  ##\n  egress:\n    ## @param networkPolicy.egress.enabled When enabled, an egress network policy will be\n    ## created allowing grafana to connect to external data sources from kubernetes cluster.\n    enabled: false\n    ##\n    ## @param networkPolicy.egress.ports Add individual ports to be allowed by the egress\n    ports: []\n    ## Add ports to the egress by specifying - port: <port number>\n    ## E.X.\n    ## ports:\n      ## - port: 80\n      ## - port: 443\n  ##\n  ##\n  ##\n  ##\n  ##\n  ##\n\n# Enable backward compatibility of kubernetes where version below 1.13 doesn't have the enableServiceLinks option\nenableKubeBackwardCompatibility: false\nuseStatefulSet: false\n# Create a dynamic manifests via values:\nextraObjects: []\n  # - apiVersion: \"kubernetes-client.io/v1\"\n  #   kind: ExternalSecret\n  #   metadata:\n  #     name: grafana-secrets\n  #   spec:\n  #     backendType: gcpSecretsManager\n  #     data:\n  #       - key: grafana-admin-password\n  #         name: adminPassword\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/Chart.yaml",
    "content": "annotations:\n  artifacthub.io/license: Apache-2.0\n  artifacthub.io/links: |\n    - name: Chart Source\n      url: https://github.com/prometheus-community/helm-charts\napiVersion: v2\nappVersion: 2.9.2\ndescription: Install kube-state-metrics to generate and expose cluster-level metrics\nhome: https://github.com/kubernetes/kube-state-metrics/\nkeywords:\n- metric\n- monitoring\n- prometheus\n- kubernetes\nmaintainers:\n- email: tariq.ibrahim@mulesoft.com\n  name: tariq1890\n- email: manuel@rueg.eu\n  name: mrueg\n- email: david@0xdc.me\n  name: dotdc\nname: kube-state-metrics\nsources:\n- https://github.com/kubernetes/kube-state-metrics/\ntype: application\nversion: 5.10.1\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/README.md",
    "content": "# kube-state-metrics Helm Chart\n\nInstalls the [kube-state-metrics agent](https://github.com/kubernetes/kube-state-metrics).\n\n## Get Repository Info\n<!-- textlint-disable -->\n```console\nhelm repo add prometheus-community https://prometheus-community.github.io/helm-charts\nhelm repo update\n```\n\n_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._\n<!-- textlint-enable -->\n\n## Install Chart\n\n```console\nhelm install [RELEASE_NAME] prometheus-community/kube-state-metrics [flags]\n```\n\n_See [configuration](#configuration) below._\n\n_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._\n\n## Uninstall Chart\n\n```console\nhelm uninstall [RELEASE_NAME]\n```\n\nThis removes all the Kubernetes components associated with the chart and deletes the release.\n\n_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._\n\n## Upgrading Chart\n\n```console\nhelm upgrade [RELEASE_NAME] prometheus-community/kube-state-metrics [flags]\n```\n\n_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._\n\n### Migrating from stable/kube-state-metrics and kubernetes/kube-state-metrics\n\nYou can upgrade in-place:\n\n1. [get repository info](#get-repository-info)\n1. [upgrade](#upgrading-chart) your existing release name using the new chart repository\n\n## Upgrading to v3.0.0\n\nv3.0.0 includes kube-state-metrics v2.0, see the [changelog](https://github.com/kubernetes/kube-state-metrics/blob/release-2.0/CHANGELOG.md) for major changes on the application-side.\n\nThe upgraded chart now the following changes:\n\n* Dropped support for helm v2 (helm v3 or later is required)\n* collectors key was renamed to resources\n* namespace key was renamed to namespaces\n\n## Configuration\n\nSee [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments:\n\n```console\nhelm show values prometheus-community/kube-state-metrics\n```\n\n### kube-rbac-proxy\n\nYou can enable `kube-state-metrics` endpoint protection using `kube-rbac-proxy`. By setting `kubeRBACProxy.enabled: true`, this chart will deploy one RBAC proxy container per endpoint (metrics & telemetry).\nTo authorize access, authenticate your requests (via a `ServiceAccount` for example) with a `ClusterRole` attached such as:\n\n```yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: kube-state-metrics-read\nrules:\n  - apiGroups: [ \"\" ]\n    resources: [\"services/kube-state-metrics\"]\n    verbs:\n      - get\n```\n\nSee [kube-rbac-proxy examples](https://github.com/brancz/kube-rbac-proxy/tree/master/examples/resource-attributes) for more details.\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/NOTES.txt",
    "content": "kube-state-metrics is a simple service that listens to the Kubernetes API server and generates metrics about the state of the objects.\nThe exposed metrics can be found here:\nhttps://github.com/kubernetes/kube-state-metrics/blob/master/docs/README.md#exposed-metrics\n\nThe metrics are exported on the HTTP endpoint /metrics on the listening port.\nIn your case, {{ template \"kube-state-metrics.fullname\" . }}.{{ template \"kube-state-metrics.namespace\" . }}.svc.cluster.local:{{ .Values.service.port }}/metrics\n\nThey are served either as plaintext or protobuf depending on the Accept header.\nThey are designed to be consumed either by Prometheus itself or by a scraper that is compatible with scraping a Prometheus client endpoint.\n\n{{- if .Values.kubeRBACProxy.enabled}}\n\nkube-rbac-proxy endpoint protections is enabled:\n- Metrics endpoints are now HTTPS\n- Ensure that the client authenticates the requests (e.g. via service account) with the following role permissions:\n```\nrules:\n  - apiGroups: [ \"\" ]\n    resources: [\"services/{{ template \"kube-state-metrics.fullname\" . }}\"]\n    verbs:\n      - get\n```\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"kube-state-metrics.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"kube-state-metrics.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"kube-state-metrics.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create -}}\n    {{ default (include \"kube-state-metrics.fullname\" .) .Values.serviceAccount.name }}\n{{- else -}}\n    {{ default \"default\" .Values.serviceAccount.name }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nAllow the release namespace to be overridden for multi-namespace deployments in combined charts\n*/}}\n{{- define \"kube-state-metrics.namespace\" -}}\n  {{- if .Values.namespaceOverride -}}\n    {{- .Values.namespaceOverride -}}\n  {{- else -}}\n    {{- .Release.Namespace -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"kube-state-metrics.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nGenerate basic labels\n*/}}\n{{- define \"kube-state-metrics.labels\" }}\nhelm.sh/chart: {{ template \"kube-state-metrics.chart\" . }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\napp.kubernetes.io/component: metrics\napp.kubernetes.io/part-of: {{ template \"kube-state-metrics.name\" . }}\n{{- include \"kube-state-metrics.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\n{{- if .Values.customLabels }}\n{{ toYaml .Values.customLabels }}\n{{- end }}\n{{- if .Values.releaseLabel }}\nrelease: {{ .Release.Name }}\n{{- end }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"kube-state-metrics.selectorLabels\" }}\n{{- if .Values.selectorOverride }}\n{{ toYaml .Values.selectorOverride }}\n{{- else }}\napp.kubernetes.io/name: {{ include \"kube-state-metrics.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n{{- end }}\n\n{{/* Sets default scrape limits for servicemonitor */}}\n{{- define \"servicemonitor.scrapeLimits\" -}}\n{{- with .sampleLimit }}\nsampleLimit: {{ . }}\n{{- end }}\n{{- with .targetLimit }}\ntargetLimit: {{ . }}\n{{- end }}\n{{- with .labelLimit }}\nlabelLimit: {{ . }}\n{{- end }}\n{{- with .labelNameLengthLimit }}\nlabelNameLengthLimit: {{ . }}\n{{- end }}\n{{- with .labelValueLengthLimit }}\nlabelValueLengthLimit: {{ . }}\n{{- end }}\n{{- end -}}\n\n{{/*\nFormats imagePullSecrets. Input is (dict \"Values\" .Values \"imagePullSecrets\" .{specific imagePullSecrets})\n*/}}\n{{- define \"kube-state-metrics.imagePullSecrets\" -}}\n{{- range (concat .Values.global.imagePullSecrets .imagePullSecrets) }}\n  {{- if eq (typeOf .) \"map[string]interface {}\" }}\n- {{ toYaml . | trim }}\n  {{- else }}\n- name: {{ . }}\n  {{- end }}\n{{- end }}\n{{- end -}}\n\n{{/*\nThe image to use for kube-state-metrics\n*/}}\n{{- define \"kube-state-metrics.image\" -}}\n{{- if .Values.image.sha }}\n{{- if .Values.global.imageRegistry }}\n{{- printf \"%s/%s:%s@%s\" .Values.global.imageRegistry .Values.image.repository (default (printf \"v%s\" .Chart.AppVersion) .Values.image.tag) .Values.image.sha }}\n{{- else }}\n{{- printf \"%s/%s:%s@%s\" .Values.image.registry .Values.image.repository (default (printf \"v%s\" .Chart.AppVersion) .Values.image.tag) .Values.image.sha }}\n{{- end }}\n{{- else }}\n{{- if .Values.global.imageRegistry }}\n{{- printf \"%s/%s:%s\" .Values.global.imageRegistry .Values.image.repository (default (printf \"v%s\" .Chart.AppVersion) .Values.image.tag) }}\n{{- else }}\n{{- printf \"%s/%s:%s\" .Values.image.registry .Values.image.repository (default (printf \"v%s\" .Chart.AppVersion) .Values.image.tag) }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nThe image to use for kubeRBACProxy\n*/}}\n{{- define \"kubeRBACProxy.image\" -}}\n{{- if .Values.kubeRBACProxy.image.sha }}\n{{- if .Values.global.imageRegistry }}\n{{- printf \"%s/%s:%s@%s\" .Values.global.imageRegistry .Values.kubeRBACProxy.image.repository (default (printf \"v%s\" .Chart.AppVersion) .Values.kubeRBACProxy.image.tag) .Values.kubeRBACProxy.image.sha }}\n{{- else }}\n{{- printf \"%s/%s:%s@%s\" .Values.kubeRBACProxy.image.registry .Values.kubeRBACProxy.image.repository (default (printf \"v%s\" .Chart.AppVersion) .Values.kubeRBACProxy.image.tag) .Values.kubeRBACProxy.image.sha }}\n{{- end }}\n{{- else }}\n{{- if .Values.global.imageRegistry }}\n{{- printf \"%s/%s:%s\" .Values.global.imageRegistry .Values.kubeRBACProxy.image.repository (default (printf \"v%s\" .Chart.AppVersion) .Values.kubeRBACProxy.image.tag) }}\n{{- else }}\n{{- printf \"%s/%s:%s\" .Values.kubeRBACProxy.image.registry .Values.kubeRBACProxy.image.repository (default (printf \"v%s\" .Chart.AppVersion) .Values.kubeRBACProxy.image.tag) }}\n{{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/ciliumnetworkpolicy.yaml",
    "content": "{{- if and .Values.networkPolicy.enabled (eq .Values.networkPolicy.flavor \"cilium\") }}\napiVersion: cilium.io/v2\nkind: CiliumNetworkPolicy\nmetadata:\n  {{- if .Values.annotations }}\n  annotations:\n    {{ toYaml .Values.annotations | nindent 4 }}\n  {{- end }}\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\n  name: {{ template \"kube-state-metrics.fullname\" . }}\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\nspec:\n  endpointSelector:\n    matchLabels:\n      {{- include \"kube-state-metrics.selectorLabels\" . | indent 6 }}\n  egress:\n    {{- if and .Values.networkPolicy.cilium .Values.networkPolicy.cilium.kubeApiServerSelector }}\n      {{ toYaml .Values.networkPolicy.cilium.kubeApiServerSelector | nindent 6 }}\n    {{- else }}\n    - toEntities:\n      - kube-apiserver\n    {{- end }}\n  ingress:\n  - toPorts:\n    - ports:\n      - port: {{ .Values.service.port | quote }}\n        protocol: TCP\n      {{- if .Values.selfMonitor.enabled }}\n      - port: {{ .Values.selfMonitor.telemetryPort | default 8081 | quote }}\n        protocol: TCP\n      {{ end }}\n{{ end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/clusterrolebinding.yaml",
    "content": "{{- if and .Values.rbac.create .Values.rbac.useClusterRole -}}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\n  name: {{ template \"kube-state-metrics.fullname\" . }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n{{- if .Values.rbac.useExistingRole }}\n  name: {{ .Values.rbac.useExistingRole }}\n{{- else }}\n  name: {{ template \"kube-state-metrics.fullname\" . }}\n{{- end }}\nsubjects:\n- kind: ServiceAccount\n  name: {{ template \"kube-state-metrics.serviceAccountName\" . }}\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/crs-configmap.yaml",
    "content": "{{- if .Values.customResourceState.enabled}}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ template \"kube-state-metrics.fullname\" . }}-customresourcestate-config\ndata:\n  config.yaml: |\n    {{- toYaml .Values.customResourceState.config | nindent 4 }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\n{{- if .Values.autosharding.enabled }}\nkind: StatefulSet\n{{- else }}\nkind: Deployment\n{{- end }}\nmetadata:\n  name: {{ template \"kube-state-metrics.fullname\" . }}\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\n  {{- if .Values.annotations }}\n  annotations:\n{{ toYaml .Values.annotations | indent 4 }}\n  {{- end }}\nspec:\n  selector:\n    matchLabels:\n      {{- include \"kube-state-metrics.selectorLabels\" . | indent 6 }}\n  replicas: {{ .Values.replicas }}\n  {{- if .Values.autosharding.enabled }}\n  serviceName: {{ template \"kube-state-metrics.fullname\" . }}\n  volumeClaimTemplates: []\n  {{- end }}\n  template:\n    metadata:\n      labels:\n        {{- include \"kube-state-metrics.labels\" . | indent 8 }}\n      {{- if .Values.podAnnotations }}\n      annotations:\n{{ toYaml .Values.podAnnotations | indent 8 }}\n      {{- end }}\n    spec:\n      hostNetwork: {{ .Values.hostNetwork }}\n      serviceAccountName: {{ template \"kube-state-metrics.serviceAccountName\" . }}\n      {{- if .Values.securityContext.enabled }}\n      securityContext: {{- omit .Values.securityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n    {{- if .Values.priorityClassName }}\n      priorityClassName: {{ .Values.priorityClassName }}\n    {{- end }}\n      containers:\n      {{- $httpPort := ternary 9090 (.Values.service.port | default 8080) .Values.kubeRBACProxy.enabled}}\n      {{- $telemetryPort := ternary 9091 (.Values.selfMonitor.telemetryPort | default 8081) .Values.kubeRBACProxy.enabled}}\n      - name: {{ template \"kube-state-metrics.name\" . }}\n        {{- if .Values.autosharding.enabled }}\n        env:\n        - name: POD_NAME\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.name\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        {{- end }}\n        args:\n        {{-  if .Values.extraArgs  }}\n        {{- .Values.extraArgs | toYaml | nindent 8 }}\n        {{-  end  }}\n        - --port={{ $httpPort }}\n        {{-  if .Values.collectors  }}\n        - --resources={{ .Values.collectors | join \",\" }}\n        {{-  end  }}\n        {{- if .Values.metricLabelsAllowlist }}\n        - --metric-labels-allowlist={{ .Values.metricLabelsAllowlist | join \",\" }}\n        {{- end }}\n        {{- if .Values.metricAnnotationsAllowList }}\n        - --metric-annotations-allowlist={{ .Values.metricAnnotationsAllowList | join \",\" }}\n        {{- end }}\n        {{- if .Values.metricAllowlist }}\n        - --metric-allowlist={{ .Values.metricAllowlist | join \",\" }}\n        {{- end }}\n        {{- if .Values.metricDenylist }}\n        - --metric-denylist={{ .Values.metricDenylist | join \",\" }}\n        {{- end }}\n        {{- $namespaces := list }}\n        {{- if .Values.namespaces }}\n        {{- range $ns := join \",\" .Values.namespaces | split \",\" }}\n        {{- $namespaces = append $namespaces (tpl $ns $) }}\n        {{- end }}\n        {{- end }}\n        {{- if .Values.releaseNamespace }}\n        {{- $namespaces = append $namespaces ( include \"kube-state-metrics.namespace\" . ) }}\n        {{- end }}\n        {{- if $namespaces }}\n        - --namespaces={{ $namespaces | mustUniq | join \",\" }}\n        {{- end }}\n        {{- if .Values.namespacesDenylist }}\n        - --namespaces-denylist={{ tpl (.Values.namespacesDenylist | join \",\") $ }}\n        {{- end }}\n        {{- if .Values.autosharding.enabled }}\n        - --pod=$(POD_NAME)\n        - --pod-namespace=$(POD_NAMESPACE)\n        {{- end }}\n        {{- if .Values.kubeconfig.enabled }}\n        - --kubeconfig=/opt/k8s/.kube/config\n        {{- end }}\n        {{- if .Values.kubeRBACProxy.enabled }}\n        - --telemetry-host=127.0.0.1\n        - --telemetry-port={{ $telemetryPort }}\n        {{- else }}\n        {{- if .Values.selfMonitor.telemetryHost }}\n        - --telemetry-host={{ .Values.selfMonitor.telemetryHost }}\n        {{- end }}\n        {{- if .Values.selfMonitor.telemetryPort }}\n        - --telemetry-port={{ $telemetryPort }}\n        {{- end }}\n        {{- if .Values.customResourceState.enabled }}\n        - --custom-resource-state-config-file=/etc/customresourcestate/config.yaml\n        {{- end }}\n        {{- end }}\n        {{- if or (.Values.kubeconfig.enabled) (.Values.customResourceState.enabled) (.Values.volumeMounts) }}\n        volumeMounts:\n        {{- if .Values.kubeconfig.enabled }}\n        - name: kubeconfig\n          mountPath: /opt/k8s/.kube/\n          readOnly: true\n        {{- end }}\n        {{- if .Values.customResourceState.enabled }}\n        - name: customresourcestate-config\n          mountPath: /etc/customresourcestate\n          readOnly: true\n        {{- end }}\n        {{- if .Values.volumeMounts }}\n{{ toYaml .Values.volumeMounts | indent 8 }}\n        {{- end }}\n        {{- end }}\n        imagePullPolicy: {{ .Values.image.pullPolicy }}\n        image: {{ include \"kube-state-metrics.image\" . }}\n        {{- if eq .Values.kubeRBACProxy.enabled false }}\n        ports:\n        - containerPort: {{ .Values.service.port | default 8080}}\n          name: \"http\"\n        {{- if .Values.selfMonitor.enabled }}\n        - containerPort: {{ $telemetryPort }}\n          name: \"metrics\"\n        {{- end }}\n        {{- end }}\n        livenessProbe:\n          httpGet:\n            path: /healthz\n            port: {{ $httpPort }}\n          initialDelaySeconds: 5\n          timeoutSeconds: 5\n        readinessProbe:\n          httpGet:\n            path: /\n            port: {{ $httpPort }}\n          initialDelaySeconds: 5\n          timeoutSeconds: 5\n        {{- if .Values.resources }}\n        resources:\n{{ toYaml .Values.resources | indent 10 }}\n{{- end }}\n{{- if .Values.containerSecurityContext }}\n        securityContext:\n{{ toYaml .Values.containerSecurityContext | indent 10 }}\n{{- end }}\n        {{-  if .Values.kubeRBACProxy.enabled  }}\n      - name: kube-rbac-proxy-http\n        args:\n        {{-  if .Values.kubeRBACProxy.extraArgs  }}\n        {{- .Values.kubeRBACProxy.extraArgs | toYaml | nindent 8 }}\n        {{-  end  }}\n        - --secure-listen-address=:{{ .Values.service.port | default 8080}}\n        - --upstream=http://127.0.0.1:{{ $httpPort }}/\n        - --proxy-endpoints-port=8888\n        - --config-file=/etc/kube-rbac-proxy-config/config-file.yaml\n        volumeMounts:\n          - name: kube-rbac-proxy-config\n            mountPath: /etc/kube-rbac-proxy-config\n          {{- with .Values.kubeRBACProxy.volumeMounts }}\n          {{- toYaml . | nindent 10 }}\n          {{- end }}\n        imagePullPolicy: {{ .Values.kubeRBACProxy.image.pullPolicy }}\n        image: {{ include \"kubeRBACProxy.image\" . }}\n        ports:\n          - containerPort: {{ .Values.service.port | default 8080}}\n            name: \"http\"\n          - containerPort: 8888\n            name: \"http-healthz\"\n        readinessProbe:\n          httpGet:\n            scheme: HTTPS\n            port: 8888\n            path: healthz\n          initialDelaySeconds: 5\n          timeoutSeconds: 5\n        {{- if .Values.kubeRBACProxy.resources }}\n        resources:\n{{ toYaml .Values.kubeRBACProxy.resources | indent 10 }}\n{{- end }}\n{{- if .Values.kubeRBACProxy.containerSecurityContext }}\n        securityContext:\n{{ toYaml .Values.kubeRBACProxy.containerSecurityContext | indent 10 }}\n{{- end }}\n      {{-  if .Values.selfMonitor.enabled  }}\n      - name: kube-rbac-proxy-telemetry\n        args:\n        {{-  if .Values.kubeRBACProxy.extraArgs  }}\n        {{- .Values.kubeRBACProxy.extraArgs | toYaml | nindent 8 }}\n        {{-  end  }}\n        - --secure-listen-address=:{{ .Values.selfMonitor.telemetryPort | default 8081 }}\n        - --upstream=http://127.0.0.1:{{ $telemetryPort }}/\n        - --proxy-endpoints-port=8889\n        - --config-file=/etc/kube-rbac-proxy-config/config-file.yaml\n        volumeMounts:\n          - name: kube-rbac-proxy-config\n            mountPath: /etc/kube-rbac-proxy-config\n          {{- with .Values.kubeRBACProxy.volumeMounts }}\n          {{- toYaml . | nindent 10 }}\n          {{- end }}\n        imagePullPolicy: {{ .Values.kubeRBACProxy.image.pullPolicy }}\n        image: {{ include \"kubeRBACProxy.image\" . }}\n        ports:\n          - containerPort: {{ .Values.selfMonitor.telemetryPort | default 8081 }}\n            name: \"metrics\"\n          - containerPort: 8889\n            name: \"metrics-healthz\"\n        readinessProbe:\n          httpGet:\n            scheme: HTTPS\n            port: 8889\n            path: healthz\n          initialDelaySeconds: 5\n          timeoutSeconds: 5\n        {{- if .Values.kubeRBACProxy.resources }}\n        resources:\n{{ toYaml .Values.kubeRBACProxy.resources | indent 10 }}\n{{- end }}\n{{- if .Values.kubeRBACProxy.containerSecurityContext }}\n        securityContext:\n{{ toYaml .Values.kubeRBACProxy.containerSecurityContext | indent 10 }}\n{{- end }}\n      {{- end }}\n      {{- end }}\n{{- if or .Values.imagePullSecrets .Values.global.imagePullSecrets }}\n      imagePullSecrets:\n        {{- include \"kube-state-metrics.imagePullSecrets\" (dict \"Values\" .Values \"imagePullSecrets\" .Values.imagePullSecrets) | indent 8 }}\n      {{- end }}\n      {{- if .Values.affinity }}\n      affinity:\n{{ toYaml .Values.affinity | indent 8 }}\n      {{- end }}\n      {{- if .Values.nodeSelector }}\n      nodeSelector:\n{{ toYaml .Values.nodeSelector | indent 8 }}\n      {{- end }}\n      {{- if .Values.tolerations }}\n      tolerations:\n{{ toYaml .Values.tolerations | indent 8 }}\n      {{- end }}\n      {{- if .Values.topologySpreadConstraints }}\n      topologySpreadConstraints:\n{{ toYaml .Values.topologySpreadConstraints | indent 8 }}\n      {{- end }}\n      {{- if or (.Values.kubeconfig.enabled) (.Values.customResourceState.enabled) (.Values.volumes) (.Values.kubeRBACProxy.enabled) }}\n      volumes:\n      {{- if .Values.kubeconfig.enabled}}\n        - name: kubeconfig\n          secret:\n            secretName: {{ template \"kube-state-metrics.fullname\" . }}-kubeconfig\n      {{- end }}\n      {{- if .Values.kubeRBACProxy.enabled}}\n        - name: kube-rbac-proxy-config\n          configMap:\n            name: {{ template \"kube-state-metrics.fullname\" . }}-rbac-config\n      {{- end }}\n      {{- if .Values.customResourceState.enabled}}\n        - name: customresourcestate-config\n          configMap:\n            name: {{ template \"kube-state-metrics.fullname\" . }}-customresourcestate-config\n      {{- end }}\n      {{- if .Values.volumes }}\n{{ toYaml .Values.volumes | indent 8 }}\n      {{- end }}\n      {{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/extra-manifests.yaml",
    "content": "{{ range .Values.extraManifests }}\n---\n{{ tpl (toYaml .) $ }}\n{{ end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/kubeconfig-secret.yaml",
    "content": "{{- if .Values.kubeconfig.enabled -}}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"kube-state-metrics.fullname\" . }}-kubeconfig\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\ntype: Opaque\ndata:\n  config: '{{ .Values.kubeconfig.secret }}'\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/networkpolicy.yaml",
    "content": "{{- if and .Values.networkPolicy.enabled (eq .Values.networkPolicy.flavor \"kubernetes\") }}\nkind: NetworkPolicy\napiVersion: networking.k8s.io/v1\nmetadata:\n  {{- if .Values.annotations }}\n  annotations:\n    {{ toYaml .Values.annotations | nindent 4 }}\n  {{- end }}\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\n  name: {{ template \"kube-state-metrics.fullname\" . }}\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\nspec:\n  {{- if .Values.networkPolicy.egress }}\n  ## Deny all egress by default\n  egress:\n    {{- toYaml .Values.networkPolicy.egress | nindent 4 }}\n  {{- end }}\n  ingress:\n  {{- if .Values.networkPolicy.ingress }}\n    {{- toYaml .Values.networkPolicy.ingress | nindent 4 }}\n  {{- else }}\n    ## Allow ingress on default ports by default\n  - ports:\n    - port: {{ .Values.service.port | default 8080 }}\n      protocol: TCP\n    {{- if .Values.selfMonitor.enabled }}\n    {{- $telemetryPort := ternary 9091 (.Values.selfMonitor.telemetryPort | default 8081) .Values.kubeRBACProxy.enabled}}\n    - port: {{ $telemetryPort }}\n      protocol: TCP\n    {{- end }}\n  {{- end }}\n  podSelector:\n    {{- if .Values.networkPolicy.podSelector }}\n    {{- toYaml .Values.networkPolicy.podSelector | nindent 4 }}\n    {{- else }}\n    matchLabels:\n      {{- include \"kube-state-metrics.selectorLabels\" . | indent 6 }}\n    {{- end }}\n  policyTypes:\n    - Ingress\n    - Egress\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/pdb.yaml",
    "content": "{{- if .Values.podDisruptionBudget -}}\n{{ if $.Capabilities.APIVersions.Has \"policy/v1/PodDisruptionBudget\" -}}\napiVersion: policy/v1\n{{- else -}}\napiVersion: policy/v1beta1\n{{- end }}\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ template \"kube-state-metrics.fullname\" . }}\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: {{ template \"kube-state-metrics.name\" . }}\n{{ toYaml .Values.podDisruptionBudget | indent 2 }}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/podsecuritypolicy.yaml",
    "content": "{{- if and .Values.podSecurityPolicy.enabled (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") }}\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: {{ template \"kube-state-metrics.fullname\" . }}\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\n{{- if .Values.podSecurityPolicy.annotations }}\n  annotations:\n{{ toYaml .Values.podSecurityPolicy.annotations | indent 4 }}\n{{- end }}\nspec:\n  privileged: false\n  volumes:\n    - 'secret'\n{{- if .Values.podSecurityPolicy.additionalVolumes }}\n{{ toYaml .Values.podSecurityPolicy.additionalVolumes | indent 4 }}\n{{- end }}\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    rule: 'MustRunAsNonRoot'\n  seLinux:\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Forbid adding the root group.\n      - min: 1\n        max: 65535\n  readOnlyRootFilesystem: false\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/psp-clusterrole.yaml",
    "content": "{{- if and .Values.podSecurityPolicy.enabled (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\n  name: psp-{{ template \"kube-state-metrics.fullname\" . }}\nrules:\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if semverCompare \"> 1.15.0-0\" $kubeTargetVersion }}\n- apiGroups: ['policy']\n{{- else }}\n- apiGroups: ['extensions']\n{{- end }}\n  resources: ['podsecuritypolicies']\n  verbs:     ['use']\n  resourceNames:\n  - {{ template \"kube-state-metrics.fullname\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml",
    "content": "{{- if and .Values.podSecurityPolicy.enabled (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\n  name: psp-{{ template \"kube-state-metrics.fullname\" . }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: psp-{{ template \"kube-state-metrics.fullname\" . }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"kube-state-metrics.serviceAccountName\" . }}\n    namespace: {{ template \"kube-state-metrics.namespace\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/rbac-configmap.yaml",
    "content": "{{- if .Values.kubeRBACProxy.enabled}}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ template \"kube-state-metrics.fullname\" . }}-rbac-config\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\ndata:\n  config-file.yaml: |+\n    authorization:\n      resourceAttributes:\n        namespace: {{ template \"kube-state-metrics.namespace\" . }}\n        apiVersion: v1\n        resource: services\n        subresource: {{ template \"kube-state-metrics.fullname\" . }}\n        name: {{ template \"kube-state-metrics.fullname\" . }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/role.yaml",
    "content": "{{- if and (eq .Values.rbac.create true) (not .Values.rbac.useExistingRole) -}}\n{{- range (ternary (join \",\" .Values.namespaces | split \",\" ) (list \"\") (eq $.Values.rbac.useClusterRole false)) }}\n---\napiVersion: rbac.authorization.k8s.io/v1\n{{- if eq $.Values.rbac.useClusterRole false }}\nkind: Role\n{{- else }}\nkind: ClusterRole\n{{- end }}\nmetadata:\n  labels:\n    {{- include \"kube-state-metrics.labels\" $ | indent 4 }}\n  name: {{ template \"kube-state-metrics.fullname\" $ }}\n{{- if eq $.Values.rbac.useClusterRole false }}\n  namespace: {{ . }}\n{{- end }}\nrules:\n{{ if has \"certificatesigningrequests\" $.Values.collectors }}\n- apiGroups: [\"certificates.k8s.io\"]\n  resources:\n  - certificatesigningrequests\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"configmaps\" $.Values.collectors }}\n- apiGroups: [\"\"]\n  resources:\n  - configmaps\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"cronjobs\" $.Values.collectors }}\n- apiGroups: [\"batch\"]\n  resources:\n  - cronjobs\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"daemonsets\" $.Values.collectors }}\n- apiGroups: [\"extensions\", \"apps\"]\n  resources:\n  - daemonsets\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"deployments\" $.Values.collectors }}\n- apiGroups: [\"extensions\", \"apps\"]\n  resources:\n  - deployments\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"endpoints\" $.Values.collectors }}\n- apiGroups: [\"\"]\n  resources:\n  - endpoints\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"endpointslices\" $.Values.collectors }}\n- apiGroups: [\"discovery.k8s.io\"]\n  resources:\n  - endpointslices\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"horizontalpodautoscalers\" $.Values.collectors }}\n- apiGroups: [\"autoscaling\"]\n  resources:\n  - horizontalpodautoscalers\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"ingresses\" $.Values.collectors }}\n- apiGroups: [\"extensions\", \"networking.k8s.io\"]\n  resources:\n  - ingresses\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"jobs\" $.Values.collectors }}\n- apiGroups: [\"batch\"]\n  resources:\n  - jobs\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"leases\" $.Values.collectors }}\n- apiGroups: [\"coordination.k8s.io\"]\n  resources:\n  - leases\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"limitranges\" $.Values.collectors }}\n- apiGroups: [\"\"]\n  resources:\n  - limitranges\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"mutatingwebhookconfigurations\" $.Values.collectors }}\n- apiGroups: [\"admissionregistration.k8s.io\"]\n  resources:\n    - mutatingwebhookconfigurations\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"namespaces\" $.Values.collectors }}\n- apiGroups: [\"\"]\n  resources:\n  - namespaces\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"networkpolicies\" $.Values.collectors }}\n- apiGroups: [\"networking.k8s.io\"]\n  resources:\n  - networkpolicies\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"nodes\" $.Values.collectors }}\n- apiGroups: [\"\"]\n  resources:\n  - nodes\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"persistentvolumeclaims\" $.Values.collectors }}\n- apiGroups: [\"\"]\n  resources:\n  - persistentvolumeclaims\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"persistentvolumes\" $.Values.collectors }}\n- apiGroups: [\"\"]\n  resources:\n  - persistentvolumes\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"poddisruptionbudgets\" $.Values.collectors }}\n- apiGroups: [\"policy\"]\n  resources:\n    - poddisruptionbudgets\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"pods\" $.Values.collectors }}\n- apiGroups: [\"\"]\n  resources:\n  - pods\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"replicasets\" $.Values.collectors }}\n- apiGroups: [\"extensions\", \"apps\"]\n  resources:\n  - replicasets\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"replicationcontrollers\" $.Values.collectors }}\n- apiGroups: [\"\"]\n  resources:\n  - replicationcontrollers\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"resourcequotas\" $.Values.collectors }}\n- apiGroups: [\"\"]\n  resources:\n  - resourcequotas\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"secrets\" $.Values.collectors }}\n- apiGroups: [\"\"]\n  resources:\n  - secrets\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"services\" $.Values.collectors }}\n- apiGroups: [\"\"]\n  resources:\n  - services\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"statefulsets\" $.Values.collectors }}\n- apiGroups: [\"apps\"]\n  resources:\n  - statefulsets\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"storageclasses\" $.Values.collectors }}\n- apiGroups: [\"storage.k8s.io\"]\n  resources:\n    - storageclasses\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"validatingwebhookconfigurations\" $.Values.collectors }}\n- apiGroups: [\"admissionregistration.k8s.io\"]\n  resources:\n    - validatingwebhookconfigurations\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{ if has \"volumeattachments\" $.Values.collectors }}\n- apiGroups: [\"storage.k8s.io\"]\n  resources:\n    - volumeattachments\n  verbs: [\"list\", \"watch\"]\n{{ end -}}\n{{-  if $.Values.kubeRBACProxy.enabled  }}\n- apiGroups: [\"authentication.k8s.io\"]\n  resources:\n    - tokenreviews\n  verbs: [\"create\"]\n- apiGroups: [\"authorization.k8s.io\"]\n  resources:\n    - subjectaccessreviews\n  verbs: [\"create\"]\n{{- end }}\n{{- if $.Values.customResourceState.enabled }}\n- apiGroups: [\"apiextensions.k8s.io\"]\n  resources:\n    - customresourcedefinitions\n  verbs: [\"list\", \"watch\"]\n{{- end }}\n{{ if $.Values.rbac.extraRules }}\n{{ toYaml $.Values.rbac.extraRules }}\n{{ end }}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/rolebinding.yaml",
    "content": "{{- if and (eq  .Values.rbac.create true) (eq .Values.rbac.useClusterRole false) -}}\n{{- range (join \",\" $.Values.namespaces) | split \",\" }}\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    {{- include \"kube-state-metrics.labels\" $ | indent 4 }}\n  name: {{ template \"kube-state-metrics.fullname\" $ }}\n  namespace: {{ . }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n{{- if (not $.Values.rbac.useExistingRole) }}\n  name: {{ template \"kube-state-metrics.fullname\" $ }}\n{{- else }}\n  name: {{ $.Values.rbac.useExistingRole }}\n{{- end }}\nsubjects:\n- kind: ServiceAccount\n  name: {{ template \"kube-state-metrics.serviceAccountName\" $ }}\n  namespace: {{ template \"kube-state-metrics.namespace\" $ }}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-state-metrics.fullname\" . }}\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\n  annotations:\n    {{- if .Values.prometheusScrape }}\n    prometheus.io/scrape: '{{ .Values.prometheusScrape }}'\n    {{- end }}\n    {{- if .Values.service.annotations }}\n    {{- toYaml .Values.service.annotations | nindent 4 }}\n    {{- end }}\nspec:\n  type: \"{{ .Values.service.type }}\"\n  ports:\n  - name: \"http\"\n    protocol: TCP\n    port: {{ .Values.service.port | default 8080}}\n  {{- if .Values.service.nodePort }}\n    nodePort: {{ .Values.service.nodePort }}\n  {{- end }}\n    targetPort: {{ .Values.service.port | default 8080}}\n  {{ if .Values.selfMonitor.enabled }}\n  - name: \"metrics\"\n    protocol: TCP\n    port: {{ .Values.selfMonitor.telemetryPort | default 8081 }}\n    targetPort: {{ .Values.selfMonitor.telemetryPort | default 8081 }}\n  {{- if .Values.selfMonitor.telemetryNodePort }}\n    nodePort: {{ .Values.selfMonitor.telemetryNodePort }}\n  {{- end }}\n  {{ end }}\n{{- if .Values.service.loadBalancerIP }}\n  loadBalancerIP: \"{{ .Values.service.loadBalancerIP }}\"\n{{- end }}\n{{- if .Values.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges:\n  {{- range $cidr := .Values.service.loadBalancerSourceRanges }}\n    - {{ $cidr }}\n  {{- end }}\n{{- end }}\n{{- if .Values.autosharding.enabled }}\n  clusterIP: None\n{{- else if .Values.service.clusterIP }}\n  clusterIP: \"{{ .Values.service.clusterIP }}\"\n{{- end }}\n  selector:\n    {{- include \"kube-state-metrics.selectorLabels\" . | indent 4 }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\n  name: {{ template \"kube-state-metrics.serviceAccountName\" . }}\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\n{{- if .Values.serviceAccount.annotations }}\n  annotations:\n{{ toYaml .Values.serviceAccount.annotations | indent 4 }}\n{{- end }}\nimagePullSecrets:\n  {{- include \"kube-state-metrics.imagePullSecrets\" (dict \"Values\" .Values \"imagePullSecrets\" .Values.serviceAccount.imagePullSecrets) | indent 2 }}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/servicemonitor.yaml",
    "content": "{{- if .Values.prometheus.monitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-state-metrics.fullname\" . }}\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\n  {{- with .Values.prometheus.monitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  {{- with .Values.prometheus.monitor.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  jobLabel: {{ default \"app.kubernetes.io/name\" .Values.prometheus.monitor.jobLabel }}\n  {{- with .Values.prometheus.monitor.targetLabels }}\n  targetLabels:\n    {{- toYaml . | trim | nindent 4 }}\n  {{- end }}\n  {{- with .Values.prometheus.monitor.podTargetLabels }}\n  podTargetLabels:\n    {{- toYaml . | trim | nindent 4 }}\n  {{- end }}\n  {{- include \"servicemonitor.scrapeLimits\" .Values.prometheus.monitor | indent 2 }}\n  selector:\n    matchLabels:\n    {{- with .Values.prometheus.monitor.selectorOverride }}\n      {{- toYaml . | nindent 6 }}\n    {{- else }}\n      {{- include \"kube-state-metrics.selectorLabels\" . | indent 6 }}\n    {{- end }}\n  endpoints:\n    - port: http\n    {{- if .Values.prometheus.monitor.interval }}\n      interval: {{ .Values.prometheus.monitor.interval }}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.scrapeTimeout }}\n      scrapeTimeout: {{ .Values.prometheus.monitor.scrapeTimeout }}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.proxyUrl }}\n      proxyUrl: {{ .Values.prometheus.monitor.proxyUrl}}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.honorLabels }}\n      honorLabels: true\n    {{- end }}\n    {{- if .Values.prometheus.monitor.metricRelabelings }}\n      metricRelabelings:\n        {{- toYaml .Values.prometheus.monitor.metricRelabelings | nindent 8 }}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.relabelings }}\n      relabelings:\n        {{- toYaml .Values.prometheus.monitor.relabelings | nindent 8 }}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.scheme }}\n      scheme: {{ .Values.prometheus.monitor.scheme }}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.tlsConfig }}\n      tlsConfig:\n        {{- toYaml .Values.prometheus.monitor.tlsConfig | nindent 8 }}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.bearerTokenFile }}\n      bearerTokenFile: {{ .Values.prometheus.monitor.bearerTokenFile }}\n    {{- end }}\n    {{- with .Values.prometheus.monitor.bearerTokenSecret }}\n      bearerTokenSecret:\n        {{- toYaml . | nindent 8 }}\n    {{- end }}\n  {{- if .Values.selfMonitor.enabled }}\n    - port: metrics\n    {{- if .Values.prometheus.monitor.interval }}\n      interval: {{ .Values.prometheus.monitor.interval }}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.scrapeTimeout }}\n      scrapeTimeout: {{ .Values.prometheus.monitor.scrapeTimeout }}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.proxyUrl }}\n      proxyUrl: {{ .Values.prometheus.monitor.proxyUrl}}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.honorLabels }}\n      honorLabels: true\n    {{- end }}\n    {{- if .Values.prometheus.monitor.metricRelabelings }}\n      metricRelabelings:\n        {{- toYaml .Values.prometheus.monitor.metricRelabelings | nindent 8 }}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.relabelings }}\n      relabelings:\n        {{- toYaml .Values.prometheus.monitor.relabelings | nindent 8 }}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.scheme }}\n      scheme: {{ .Values.prometheus.monitor.scheme }}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.tlsConfig }}\n      tlsConfig:\n        {{- toYaml .Values.prometheus.monitor.tlsConfig | nindent 8 }}\n    {{- end }}\n    {{- if .Values.prometheus.monitor.bearerTokenFile }}\n      bearerTokenFile: {{ .Values.prometheus.monitor.bearerTokenFile }}\n    {{- end }}\n    {{- with .Values.prometheus.monitor.bearerTokenSecret }}\n      bearerTokenSecret:\n        {{- toYaml . | nindent 8 }}\n    {{- end }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/stsdiscovery-role.yaml",
    "content": "{{- if and .Values.autosharding.enabled .Values.rbac.create -}}\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: stsdiscovery-{{ template \"kube-state-metrics.fullname\" . }}\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  verbs:\n  - get\n- apiGroups:\n  - apps\n  resourceNames:\n  - {{ template \"kube-state-metrics.fullname\" . }}\n  resources:\n  - statefulsets\n  verbs:\n  - get\n  - list\n  - watch\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml",
    "content": "{{- if and .Values.autosharding.enabled .Values.rbac.create -}}\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: stsdiscovery-{{ template \"kube-state-metrics.fullname\" . }}\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: stsdiscovery-{{ template \"kube-state-metrics.fullname\" . }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"kube-state-metrics.serviceAccountName\" . }}\n    namespace: {{ template \"kube-state-metrics.namespace\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/templates/verticalpodautoscaler.yaml",
    "content": "{{- if and (.Capabilities.APIVersions.Has \"autoscaling.k8s.io/v1\") (.Values.verticalPodAutoscaler.enabled) }}\napiVersion: autoscaling.k8s.io/v1\nkind: VerticalPodAutoscaler\nmetadata:\n  name: {{ template \"kube-state-metrics.fullname\" . }}\n  namespace: {{ template \"kube-state-metrics.namespace\" . }}\n  labels:\n    {{- include \"kube-state-metrics.labels\" . | indent 4 }}\nspec:\n  {{- with .Values.verticalPodAutoscaler.recommenders }}\n  recommenders:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  resourcePolicy:\n    containerPolicies:\n    - containerName: {{ template \"kube-state-metrics.name\" . }}\n      {{- with .Values.verticalPodAutoscaler.controlledResources }}\n      controlledResources:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- if .Values.verticalPodAutoscaler.controlledValues }}\n      controlledValues: {{ .Values.verticalPodAutoscaler.controlledValues }}\n      {{- end }}\n      {{- if .Values.verticalPodAutoscaler.maxAllowed }}\n      maxAllowed:\n        {{ toYaml .Values.verticalPodAutoscaler.maxAllowed | nindent 8 }}\n      {{- end }}\n      {{- if .Values.verticalPodAutoscaler.minAllowed }}\n      minAllowed:\n        {{ toYaml .Values.verticalPodAutoscaler.minAllowed | nindent 8 }}\n      {{- end }}\n  targetRef:\n    apiVersion: apps/v1\n    {{- if .Values.autosharding.enabled }}\n    kind: StatefulSet\n    {{- else }}\n    kind: Deployment\n    {{- end }}\n    name:  {{ template \"kube-state-metrics.fullname\" . }}\n  {{- with .Values.verticalPodAutoscaler.updatePolicy }}\n  updatePolicy:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/kube-state-metrics/values.yaml",
    "content": "# Default values for kube-state-metrics.\nprometheusScrape: true\nimage:\n  registry: registry.k8s.io\n  repository: kube-state-metrics/kube-state-metrics\n  # If unset use v + .Charts.appVersion\n  tag: \"\"\n  sha: \"\"\n  pullPolicy: IfNotPresent\n\nimagePullSecrets: []\n# - name: \"image-pull-secret\"\n\nglobal:\n  # To help compatibility with other charts which use global.imagePullSecrets.\n  # Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style).\n  # global:\n  #   imagePullSecrets:\n  #   - name: pullSecret1\n  #   - name: pullSecret2\n  # or\n  # global:\n  #   imagePullSecrets:\n  #   - pullSecret1\n  #   - pullSecret2\n  imagePullSecrets: []\n  #\n  # Allow parent charts to override registry hostname\n  imageRegistry: \"\"\n\n# If set to true, this will deploy kube-state-metrics as a StatefulSet and the data\n# will be automatically sharded across <.Values.replicas> pods using the built-in\n# autodiscovery feature: https://github.com/kubernetes/kube-state-metrics#automated-sharding\n# This is an experimental feature and there are no stability guarantees.\nautosharding:\n  enabled: false\n\nreplicas: 1\n\n# List of additional cli arguments to configure kube-state-metrics\n# for example: --enable-gzip-encoding, --log-file, etc.\n# all the possible args can be found here: https://github.com/kubernetes/kube-state-metrics/blob/master/docs/cli-arguments.md\nextraArgs: []\n\nservice:\n  port: 8080\n  # Default to clusterIP for backward compatibility\n  type: ClusterIP\n  nodePort: 0\n  loadBalancerIP: \"\"\n  # Only allow access to the loadBalancerIP from these IPs\n  loadBalancerSourceRanges: []\n  clusterIP: \"\"\n  annotations: {}\n\n## Additional labels to add to all resources\ncustomLabels: {}\n  # app: kube-state-metrics\n\n## Override selector labels\nselectorOverride: {}\n\n## set to true to add the release label so scraping of the servicemonitor with kube-prometheus-stack works out of the box\nreleaseLabel: false\n\nhostNetwork: false\n\nrbac:\n  # If true, create & use RBAC resources\n  create: true\n\n  # Set to a rolename to use existing role - skipping role creating - but still doing serviceaccount and rolebinding to it, rolename set here.\n  # useExistingRole: your-existing-role\n\n  # If set to false - Run without Cluteradmin privs needed - ONLY works if namespace is also set (if useExistingRole is set this name is used as ClusterRole or Role to bind to)\n  useClusterRole: true\n\n  # Add permissions for CustomResources' apiGroups in Role/ClusterRole. Should be used in conjunction with Custom Resource State Metrics configuration\n  # Example:\n  # - apiGroups: [\"monitoring.coreos.com\"]\n  #   resources: [\"prometheuses\"]\n  #   verbs: [\"list\", \"watch\"]\n  extraRules: []\n\n# Configure kube-rbac-proxy. When enabled, creates one kube-rbac-proxy container per exposed HTTP endpoint (metrics and telemetry if enabled).\n# The requests are served through the same service but requests are then HTTPS.\nkubeRBACProxy:\n  enabled: false\n  image:\n    registry: quay.io\n    repository: brancz/kube-rbac-proxy\n    tag: v0.14.0\n    sha: \"\"\n    pullPolicy: IfNotPresent\n\n  # List of additional cli arguments to configure kube-rbac-prxy\n  # for example: --tls-cipher-suites, --log-file, etc.\n  # all the possible args can be found here: https://github.com/brancz/kube-rbac-proxy#usage\n  extraArgs: []\n\n  ## Specify security settings for a Container\n  ## Allows overrides and additional options compared to (Pod) securityContext\n  ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n  containerSecurityContext: {}\n\n  resources: {}\n    # We usually recommend not to specify default resources and to leave this as a conscious\n    # choice for the user. This also increases chances charts run on environments with little\n    # resources, such as Minikube. If you do want to specify resources, uncomment the following\n    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n    # limits:\n    #  cpu: 100m\n    #  memory: 64Mi\n    # requests:\n    #  cpu: 10m\n    #  memory: 32Mi\n\n  ## volumeMounts enables mounting custom volumes in rbac-proxy containers\n  ## Useful for TLS certificates and keys\n  volumeMounts: []\n    # - mountPath: /etc/tls\n    #   name: kube-rbac-proxy-tls\n    #   readOnly: true\n\nserviceAccount:\n  # Specifies whether a ServiceAccount should be created, require rbac true\n  create: true\n  # The name of the ServiceAccount to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name:\n  # Reference to one or more secrets to be used when pulling images\n  # ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n  imagePullSecrets: []\n  # ServiceAccount annotations.\n  # Use case: AWS EKS IAM roles for service accounts\n  # ref: https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html\n  annotations: {}\n\nprometheus:\n  monitor:\n    enabled: false\n    annotations: {}\n    additionalLabels: {}\n    namespace: \"\"\n    jobLabel: \"\"\n    targetLabels: []\n    podTargetLabels: []\n    interval: \"\"\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n    scrapeTimeout: \"\"\n    proxyUrl: \"\"\n    selectorOverride: {}\n    honorLabels: false\n    metricRelabelings: []\n    relabelings: []\n    scheme: \"\"\n    ## File to read bearer token for scraping targets\n    bearerTokenFile: \"\"\n    ## Secret to mount to read bearer token for scraping targets. The secret needs\n    ## to be in the same namespace as the service monitor and accessible by the\n    ## Prometheus Operator\n    bearerTokenSecret: {}\n      # name: secret-name\n      # key:  key-name\n    tlsConfig: {}\n\n## Specify if a Pod Security Policy for kube-state-metrics must be created\n## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/\n##\npodSecurityPolicy:\n  enabled: false\n  annotations: {}\n    ## Specify pod annotations\n    ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor\n    ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp\n    ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl\n    ##\n    # seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*'\n    # seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default'\n    # apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default'\n\n  additionalVolumes: []\n\n## Configure network policy for kube-state-metrics\nnetworkPolicy:\n  enabled: false\n  # networkPolicy.flavor -- Flavor of the network policy to use.\n  # Can be:\n  # * kubernetes for networking.k8s.io/v1/NetworkPolicy\n  # * cilium     for cilium.io/v2/CiliumNetworkPolicy\n  flavor: kubernetes\n\n  ## Configure the cilium network policy kube-apiserver selector\n  # cilium:\n    # kubeApiServerSelector:\n      # - toEntities:\n      #   - kube-apiserver\n\n  # egress:\n  # - {}\n  # ingress:\n  # - {}\n  # podSelector:\n  #   matchLabels:\n  #     app.kubernetes.io/name: kube-state-metrics\n\nsecurityContext:\n  enabled: true\n  runAsGroup: 65534\n  runAsUser: 65534\n  fsGroup: 65534\n  runAsNonRoot: true\n  seccompProfile:\n    type: RuntimeDefault\n\n## Specify security settings for a Container\n## Allows overrides and additional options compared to (Pod) securityContext\n## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\ncontainerSecurityContext:\n  allowPrivilegeEscalation: false\n  capabilities:\n    drop:\n    - ALL\n\n## Node labels for pod assignment\n## Ref: https://kubernetes.io/docs/user-guide/node-selection/\nnodeSelector: {}\n\n## Affinity settings for pod assignment\n## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\naffinity: {}\n\n## Tolerations for pod assignment\n## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\ntolerations: []\n\n## Topology spread constraints for pod assignment\n## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\ntopologySpreadConstraints: []\n\n# Annotations to be added to the deployment/statefulset\nannotations: {}\n\n# Annotations to be added to the pod\npodAnnotations: {}\n\n## Assign a PriorityClassName to pods if set\n# priorityClassName: \"\"\n\n# Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\npodDisruptionBudget: {}\n\n# Comma-separated list of metrics to be exposed.\n# This list comprises of exact metric names and/or regex patterns.\n# The allowlist and denylist are mutually exclusive.\nmetricAllowlist: []\n\n# Comma-separated list of metrics not to be enabled.\n# This list comprises of exact metric names and/or regex patterns.\n# The allowlist and denylist are mutually exclusive.\nmetricDenylist: []\n\n# Comma-separated list of additional Kubernetes label keys that will be used in the resource's\n# labels metric. By default the metric contains only name and namespace labels.\n# To include additional labels, provide a list of resource names in their plural form and Kubernetes\n# label keys you would like to allow for them (Example: '=namespaces=[k8s-label-1,k8s-label-n,...],pods=[app],...)'.\n# A single '*' can be provided per resource instead to allow any labels, but that has\n# severe performance implications (Example: '=pods=[*]').\nmetricLabelsAllowlist: []\n  # - namespaces=[k8s-label-1,k8s-label-n]\n\n# Comma-separated list of Kubernetes annotations keys that will be used in the resource'\n# labels metric. By default the metric contains only name and namespace labels.\n# To include additional annotations provide a list of resource names in their plural form and Kubernetes\n# annotation keys you would like to allow for them (Example: '=namespaces=[kubernetes.io/team,...],pods=[kubernetes.io/team],...)'.\n# A single '*' can be provided per resource instead to allow any annotations, but that has\n# severe performance implications (Example: '=pods=[*]').\nmetricAnnotationsAllowList: []\n  # - pods=[k8s-annotation-1,k8s-annotation-n]\n\n# Available collectors for kube-state-metrics.\n# By default, all available resources are enabled, comment out to disable.\ncollectors:\n  - certificatesigningrequests\n  - configmaps\n  - cronjobs\n  - daemonsets\n  - deployments\n  - endpoints\n  - horizontalpodautoscalers\n  - ingresses\n  - jobs\n  - leases\n  - limitranges\n  - mutatingwebhookconfigurations\n  - namespaces\n  - networkpolicies\n  - nodes\n  - persistentvolumeclaims\n  - persistentvolumes\n  - poddisruptionbudgets\n  - pods\n  - replicasets\n  - replicationcontrollers\n  - resourcequotas\n  - secrets\n  - services\n  - statefulsets\n  - storageclasses\n  - validatingwebhookconfigurations\n  - volumeattachments\n\n# Enabling kubeconfig will pass the --kubeconfig argument to the container\nkubeconfig:\n  enabled: false\n  # base64 encoded kube-config file\n  secret:\n\n# Enabling support for customResourceState, will create a configMap including your config that will be read from kube-state-metrics\ncustomResourceState:\n  enabled: false\n  # Add (Cluster)Role permissions to list/watch the customResources defined in the config to rbac.extraRules\n  config: {}\n\n# Enable only the release namespace for collecting resources. By default all namespaces are collected.\n# If releaseNamespace and namespaces are both set a merged list will be collected.\nreleaseNamespace: false\n\n# Comma-separated list(string) or yaml list of namespaces to be enabled for collecting resources. By default all namespaces are collected.\nnamespaces: \"\"\n\n# Comma-separated list of namespaces not to be enabled. If namespaces and namespaces-denylist are both set,\n# only namespaces that are excluded in namespaces-denylist will be used.\nnamespacesDenylist: \"\"\n\n## Override the deployment namespace\n##\nnamespaceOverride: \"\"\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #  cpu: 100m\n  #  memory: 64Mi\n  # requests:\n  #  cpu: 10m\n  #  memory: 32Mi\n\n## Provide a k8s version to define apiGroups for podSecurityPolicy Cluster Role.\n## For example: kubeTargetVersionOverride: 1.14.9\n##\nkubeTargetVersionOverride: \"\"\n\n# Enable self metrics configuration for service and Service Monitor\n# Default values for telemetry configuration can be overridden\n# If you set telemetryNodePort, you must also set service.type to NodePort\nselfMonitor:\n  enabled: false\n  # telemetryHost: 0.0.0.0\n  # telemetryPort: 8081\n  # telemetryNodePort: 0\n\n# Enable vertical pod autoscaler support for kube-state-metrics\nverticalPodAutoscaler:\n  enabled: false\n\n  # Recommender responsible for generating recommendation for the object.\n  # List should be empty (then the default recommender will generate the recommendation)\n  # or contain exactly one recommender.\n  # recommenders: []\n  # - name: custom-recommender-performance\n\n  # List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory\n  controlledResources: []\n  # Specifies which resource values should be controlled: RequestsOnly or RequestsAndLimits.\n  # controlledValues: RequestsAndLimits\n\n  # Define the max allowed resources for the pod\n  maxAllowed: {}\n  # cpu: 200m\n  # memory: 100Mi\n  # Define the min allowed resources for the pod\n  minAllowed: {}\n  # cpu: 200m\n  # memory: 100Mi\n\n  # updatePolicy:\n    # Specifies minimal number of replicas which need to be alive for VPA Updater to attempt pod eviction\n    # minReplicas: 1\n    # Specifies whether recommended updates are applied when a Pod is started and whether recommended updates\n    # are applied during the life of a Pod. Possible values are \"Off\", \"Initial\", \"Recreate\", and \"Auto\".\n    # updateMode: Auto\n\n# volumeMounts are used to add custom volume mounts to deployment.\n# See example below\nvolumeMounts: []\n#  - mountPath: /etc/config\n#    name: config-volume\n\n# volumes are used to add custom volumes to deployment\n# See example below\nvolumes: []\n#  - configMap:\n#      name: cm-for-volume\n#    name: config-volume\n\n# Extra manifests to deploy as an array\nextraManifests: []\n  # - apiVersion: v1\n  #   kind: ConfigMap\n  #   metadata:\n  #   labels:\n  #     name: prometheus-extra\n  #   data:\n  #     extra-data: \"value\"\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/Chart.yaml",
    "content": "annotations:\n  artifacthub.io/license: Apache-2.0\n  artifacthub.io/links: |\n    - name: Chart Source\n      url: https://github.com/prometheus-community/helm-charts\napiVersion: v2\nappVersion: 1.6.0\ndescription: A Helm chart for prometheus node-exporter\nhome: https://github.com/prometheus/node_exporter/\nkeywords:\n- node-exporter\n- prometheus\n- exporter\nmaintainers:\n- email: gianrubio@gmail.com\n  name: gianrubio\n- email: zanhsieh@gmail.com\n  name: zanhsieh\n- email: rootsandtrees@posteo.de\n  name: zeritti\nname: prometheus-node-exporter\nsources:\n- https://github.com/prometheus/node_exporter/\ntype: application\nversion: 4.21.0\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/README.md",
    "content": "# Prometheus `Node Exporter`\n\nPrometheus exporter for hardware and OS metrics exposed by *NIX kernels, written in Go with pluggable metric collectors.\n\nThis chart bootstraps a prometheus [`Node Exporter`](http://github.com/prometheus/node_exporter) daemonset on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.\n\n## Get Repository Info\n\n```console\nhelm repo add prometheus-community https://prometheus-community.github.io/helm-charts\nhelm repo update\n```\n\n_See [`helm repo`](https://helm.sh/docs/helm/helm_repo/) for command documentation._\n\n## Install Chart\n\n```console\nhelm install [RELEASE_NAME] prometheus-community/prometheus-node-exporter\n```\n\n_See [configuration](#configuring) below._\n\n_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._\n\n## Uninstall Chart\n\n```console\nhelm uninstall [RELEASE_NAME]\n```\n\nThis removes all the Kubernetes components associated with the chart and deletes the release.\n\n_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._\n\n## Upgrading Chart\n\n```console\nhelm upgrade [RELEASE_NAME] [CHART] --install\n```\n\n_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._\n\n### 4.16 to 4.17+\n\n`containerSecurityContext.readOnlyRootFilesystem` is set to `true` by default.\n\n### 3.x to 4.x\n\nStarting from version 4.0.0, the `node exporter` chart is using the [Kubernetes recommended labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/). Therefore you have to delete the daemonset before you upgrade.\n\n```console\nkubectl delete daemonset -l app=prometheus-node-exporter\nhelm upgrade -i prometheus-node-exporter prometheus-community/prometheus-node-exporter\n```\n\nIf you use your own custom [ServiceMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor) or [PodMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#podmonitor), please ensure to upgrade their `selector` fields accordingly to the new labels.\n\n### From 2.x to 3.x\n\nChange the following:\n\n```yaml\nhostRootFsMount: true\n```\n\nto:\n\n```yaml\nhostRootFsMount:\n  enabled: true\n  mountPropagation: HostToContainer\n```\n\n## Configuring\n\nSee [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands:\n\n```console\nhelm show values prometheus-community/prometheus-node-exporter\n```\n\n### kube-rbac-proxy\n\nYou can enable `prometheus-node-exporter` endpoint protection using `kube-rbac-proxy`. By setting `kubeRBACProxy.enabled: true`, this chart will deploy a RBAC proxy container protecting the node-exporter endpoint.\nTo authorize access, authenticate your requests (via a `ServiceAccount` for example) with a `ClusterRole` attached such as:\n\n```yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: prometheus-node-exporter-read\nrules:\n  - apiGroups: [ \"\" ]\n    resources: [\"services/node-exporter-prometheus-node-exporter\"]\n    verbs:\n      - get\n```\n\nSee [kube-rbac-proxy examples](https://github.com/brancz/kube-rbac-proxy/tree/master/examples/resource-attributes) for more details.\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/ci/port-values.yaml",
    "content": "service:\n  targetPort: 9102\n  port: 9102\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n{{- if contains \"NodePort\" .Values.service.type }}\n  export NODE_PORT=$(kubectl get --namespace {{ template \"prometheus-node-exporter.namespace\" . }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ template \"prometheus-node-exporter.fullname\" . }})\n  export NODE_IP=$(kubectl get nodes --namespace {{ template \"prometheus-node-exporter.namespace\" . }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get svc -w {{ template \"prometheus-node-exporter.fullname\" . }}'\n  export SERVICE_IP=$(kubectl get svc --namespace {{ template \"prometheus-node-exporter.namespace\" . }} {{ template \"prometheus-node-exporter.fullname\" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n  export POD_NAME=$(kubectl get pods --namespace {{ template \"prometheus-node-exporter.namespace\" . }} -l \"app.kubernetes.io/name={{ template \"prometheus-node-exporter.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n  echo \"Visit http://127.0.0.1:9100 to use your application\"\n  kubectl port-forward --namespace {{ template \"prometheus-node-exporter.namespace\" . }} $POD_NAME 9100\n{{- end }}\n\n{{- if .Values.kubeRBACProxy.enabled}}\n\nkube-rbac-proxy endpoint protections is enabled:\n- Metrics endpoints is now HTTPS\n- Ensure that the client authenticates the requests (e.g. via service account) with the following role permissions:\n```\nrules:\n  - apiGroups: [ \"\" ]\n    resources: [\"services/{{ template \"prometheus-node-exporter.fullname\" . }}\"]\n    verbs:\n      - get\n```\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"prometheus-node-exporter.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"prometheus-node-exporter.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"prometheus-node-exporter.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"prometheus-node-exporter.labels\" -}}\nhelm.sh/chart: {{ include \"prometheus-node-exporter.chart\" . }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\napp.kubernetes.io/component: metrics\napp.kubernetes.io/part-of: {{ include \"prometheus-node-exporter.name\" . }}\n{{ include \"prometheus-node-exporter.selectorLabels\" . }}\n{{- with .Chart.AppVersion }}\napp.kubernetes.io/version: {{ . | quote }}\n{{- end }}\n{{- with .Values.podLabels }}\n{{ toYaml . }}\n{{- end }}\n{{- if .Values.releaseLabel }}\nrelease: {{ .Release.Name }}\n{{- end }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"prometheus-node-exporter.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"prometheus-node-exporter.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"prometheus-node-exporter.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"prometheus-node-exporter.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n\n{{/*\nThe image to use\n*/}}\n{{- define \"prometheus-node-exporter.image\" -}}\n{{- if .Values.image.sha }}\n{{- fail \"image.sha forbidden. Use image.digest instead\" }}\n{{- else if .Values.image.digest }}\n{{- if .Values.global.imageRegistry }}\n{{- printf \"%s/%s:%s@%s\" .Values.global.imageRegistry .Values.image.repository (default (printf \"v%s\" .Chart.AppVersion) .Values.image.tag) .Values.image.digest }}\n{{- else }}\n{{- printf \"%s/%s:%s@%s\" .Values.image.registry .Values.image.repository (default (printf \"v%s\" .Chart.AppVersion) .Values.image.tag) .Values.image.digest }}\n{{- end }}\n{{- else }}\n{{- if .Values.global.imageRegistry }}\n{{- printf \"%s/%s:%s\" .Values.global.imageRegistry .Values.image.repository (default (printf \"v%s\" .Chart.AppVersion) .Values.image.tag) }}\n{{- else }}\n{{- printf \"%s/%s:%s\" .Values.image.registry .Values.image.repository (default (printf \"v%s\" .Chart.AppVersion) .Values.image.tag) }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nAllow the release namespace to be overridden for multi-namespace deployments in combined charts\n*/}}\n{{- define \"prometheus-node-exporter.namespace\" -}}\n{{- if .Values.namespaceOverride }}\n{{- .Values.namespaceOverride }}\n{{- else }}\n{{- .Release.Namespace }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate the namespace name of the service monitor\n*/}}\n{{- define \"prometheus-node-exporter.monitor-namespace\" -}}\n{{- if .Values.namespaceOverride }}\n{{- .Values.namespaceOverride }}\n{{- else }}\n{{- if .Values.prometheus.monitor.namespace }}\n{{- .Values.prometheus.monitor.namespace }}\n{{- else }}\n{{- .Release.Namespace }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/* Sets default scrape limits for servicemonitor */}}\n{{- define \"servicemonitor.scrapeLimits\" -}}\n{{- with .sampleLimit }}\nsampleLimit: {{ . }}\n{{- end }}\n{{- with .targetLimit }}\ntargetLimit: {{ . }}\n{{- end }}\n{{- with .labelLimit }}\nlabelLimit: {{ . }}\n{{- end }}\n{{- with .labelNameLengthLimit }}\nlabelNameLengthLimit: {{ . }}\n{{- end }}\n{{- with .labelValueLengthLimit }}\nlabelValueLengthLimit: {{ . }}\n{{- end }}\n{{- end }}\n\n{{/*\nFormats imagePullSecrets. Input is (dict \"Values\" .Values \"imagePullSecrets\" .{specific imagePullSecrets})\n*/}}\n{{- define \"prometheus-node-exporter.imagePullSecrets\" -}}\n{{- range (concat .Values.global.imagePullSecrets .imagePullSecrets) }}\n  {{- if eq (typeOf .) \"map[string]interface {}\" }}\n- {{ toYaml . | trim }}\n  {{- else }}\n- name: {{ . }}\n  {{- end }}\n{{- end }}\n{{- end -}}\n\n{{/*\nCreate the namespace name of the pod monitor\n*/}}\n{{- define \"prometheus-node-exporter.podmonitor-namespace\" -}}\n{{- if .Values.namespaceOverride }}\n{{- .Values.namespaceOverride }}\n{{- else }}\n{{- if .Values.prometheus.podMonitor.namespace }}\n{{- .Values.prometheus.podMonitor.namespace }}\n{{- else }}\n{{- .Release.Namespace }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/* Sets default scrape limits for podmonitor */}}\n{{- define \"podmonitor.scrapeLimits\" -}}\n{{- with .sampleLimit }}\nsampleLimit: {{ . }}\n{{- end }}\n{{- with .targetLimit }}\ntargetLimit: {{ . }}\n{{- end }}\n{{- with .labelLimit }}\nlabelLimit: {{ . }}\n{{- end }}\n{{- with .labelNameLengthLimit }}\nlabelNameLengthLimit: {{ . }}\n{{- end }}\n{{- with .labelValueLengthLimit }}\nlabelValueLengthLimit: {{ . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/clusterrole.yaml",
    "content": "{{- if and (eq .Values.rbac.create true) (eq .Values.kubeRBACProxy.enabled true) -}}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: {{ include \"prometheus-node-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-node-exporter.namespace\" . }}\n  labels:\n    {{- include \"prometheus-node-exporter.labels\" . | nindent 4 }}\nrules:\n  {{-  if $.Values.kubeRBACProxy.enabled  }}\n  - apiGroups: [ \"authentication.k8s.io\" ]\n    resources:\n      - tokenreviews\n    verbs: [ \"create\" ]\n  - apiGroups: [ \"authorization.k8s.io\" ]\n    resources:\n      - subjectaccessreviews\n    verbs: [ \"create\" ]\n  {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/clusterrolebinding.yaml",
    "content": "{{- if and (eq .Values.rbac.create true) (eq .Values.kubeRBACProxy.enabled true) -}}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    {{- include \"prometheus-node-exporter.labels\" . | nindent 4 }}\n  name: {{ template \"prometheus-node-exporter.fullname\" . }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n{{- if .Values.rbac.useExistingRole }}\n  name: {{ .Values.rbac.useExistingRole }}\n{{- else }}\n  name: {{ template \"prometheus-node-exporter.fullname\" . }}\n{{- end }}\nsubjects:\n- kind: ServiceAccount\n  name: {{ template \"prometheus-node-exporter.serviceAccountName\" . }}\n  namespace: {{ template \"prometheus-node-exporter.namespace\" . }}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/daemonset.yaml",
    "content": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: {{ include \"prometheus-node-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-node-exporter.namespace\" . }}\n  labels:\n    {{- include \"prometheus-node-exporter.labels\" . | nindent 4 }}\n  {{- with .Values.daemonsetAnnotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  selector:\n    matchLabels:\n      {{- include \"prometheus-node-exporter.selectorLabels\" . | nindent 6 }}\n  {{- with .Values.updateStrategy }}\n  updateStrategy:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"prometheus-node-exporter.labels\" . | nindent 8 }}\n    spec:\n      automountServiceAccountToken: {{ ternary true false (or .Values.serviceAccount.automountServiceAccountToken .Values.kubeRBACProxy.enabled) }}\n      {{- with .Values.securityContext }}\n      securityContext:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.priorityClassName }}\n      priorityClassName: {{ . }}\n      {{- end }}\n      {{- with .Values.extraInitContainers }}\n      initContainers:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ include \"prometheus-node-exporter.serviceAccountName\" . }}\n      containers:\n        {{- $servicePort := ternary 8100 .Values.service.port .Values.kubeRBACProxy.enabled }}\n        - name: node-exporter\n          image: {{ include \"prometheus-node-exporter.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          args:\n            - --path.procfs=/host/proc\n            - --path.sysfs=/host/sys\n            {{- if .Values.hostRootFsMount.enabled }}\n            - --path.rootfs=/host/root\n            {{- if semverCompare \">=1.4.0\" (default .Chart.AppVersion .Values.image.tag) }}\n            - --path.udev.data=/host/root/run/udev/data\n            {{- end }}\n            {{- end }}\n            - --web.listen-address=[$(HOST_IP)]:{{ $servicePort }}\n            {{- with .Values.extraArgs }}\n            {{- toYaml . | nindent 12 }}\n            {{- end }}\n          {{- with .Values.containerSecurityContext }}\n          securityContext:\n            {{- toYaml . | nindent 12 }}\n          {{- end }}\n          env:\n            - name: HOST_IP\n              {{- if .Values.kubeRBACProxy.enabled }}\n              value: 127.0.0.1\n              {{- else if .Values.service.listenOnAllInterfaces }}\n              value: 0.0.0.0\n              {{- else }}\n              valueFrom:\n                fieldRef:\n                  apiVersion: v1\n                  fieldPath: status.hostIP\n              {{- end }}\n            {{- range $key, $value := .Values.env }}\n            - name: {{ $key }}\n              value: {{ $value | quote }}\n            {{- end }}\n          {{- if eq .Values.kubeRBACProxy.enabled false }}\n          ports:\n            - name: {{ .Values.service.portName }}\n              containerPort: {{ .Values.service.port }}\n              protocol: TCP\n          {{- end }}\n          livenessProbe:\n            failureThreshold: {{ .Values.livenessProbe.failureThreshold }}\n            httpGet:\n              {{- if .Values.kubeRBACProxy.enabled }}\n              host: 127.0.0.1\n              {{- end }}\n              httpHeaders:\n              {{- range $_, $header := .Values.livenessProbe.httpGet.httpHeaders }}\n              - name: {{ $header.name }}\n                value: {{ $header.value }}\n              {{- end }}\n              path: /\n              port: {{ $servicePort }}\n              scheme: {{ upper .Values.livenessProbe.httpGet.scheme }}\n            initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.livenessProbe.periodSeconds }}\n            successThreshold: {{ .Values.livenessProbe.successThreshold }}\n            timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}\n          readinessProbe:\n            failureThreshold: {{ .Values.readinessProbe.failureThreshold }}\n            httpGet:\n              {{- if .Values.kubeRBACProxy.enabled }}\n              host: 127.0.0.1\n              {{- end }}\n              httpHeaders:\n              {{- range $_, $header := .Values.readinessProbe.httpGet.httpHeaders }}\n              - name: {{ $header.name }}\n                value: {{ $header.value }}\n              {{- end }}\n              path: /\n              port: {{ $servicePort }}\n              scheme: {{ upper .Values.readinessProbe.httpGet.scheme }}\n            initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.readinessProbe.periodSeconds }}\n            successThreshold: {{ .Values.readinessProbe.successThreshold }}\n            timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}\n          {{- with .Values.resources }}\n          resources:\n            {{- toYaml . | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: proc\n              mountPath: /host/proc\n              readOnly:  true\n            - name: sys\n              mountPath: /host/sys\n              readOnly: true\n            {{- if .Values.hostRootFsMount.enabled }}\n            - name: root\n              mountPath: /host/root\n              {{- with .Values.hostRootFsMount.mountPropagation }}\n              mountPropagation: {{ . }}\n              {{- end }}\n              readOnly: true\n            {{- end }}\n            {{- range $_, $mount := .Values.extraHostVolumeMounts }}\n            - name: {{ $mount.name }}\n              mountPath: {{ $mount.mountPath }}\n              readOnly: {{ $mount.readOnly }}\n              {{- with $mount.mountPropagation }}\n              mountPropagation: {{ . }}\n              {{- end }}\n            {{- end }}\n            {{- range $_, $mount := .Values.sidecarVolumeMount }}\n            - name: {{ $mount.name }}\n              mountPath: {{ $mount.mountPath }}\n              readOnly: true\n            {{- end }}\n            {{- range $_, $mount := .Values.configmaps }}\n            - name: {{ $mount.name }}\n              mountPath: {{ $mount.mountPath }}\n            {{- end }}\n            {{- range $_, $mount := .Values.secrets }}\n            - name: {{ .name }}\n              mountPath: {{ .mountPath }}\n            {{- end }}\n        {{- with .Values.sidecars }}\n        {{- toYaml . | nindent 8 }}\n          {{- if or $.Values.sidecarVolumeMount $.Values.sidecarHostVolumeMounts }}\n          volumeMounts:\n            {{- range $_, $mount := $.Values.sidecarVolumeMount }}\n            - name: {{ $mount.name }}\n              mountPath: {{ $mount.mountPath }}\n              readOnly: {{ $mount.readOnly }}\n            {{- end }}\n            {{- range $_, $mount := $.Values.sidecarHostVolumeMounts }}\n            - name: {{ $mount.name }}\n              mountPath: {{ $mount.mountPath }}\n              readOnly: {{ $mount.readOnly }}\n            {{- if $mount.mountPropagation }}\n              mountPropagation: {{ $mount.mountPropagation }}\n            {{- end }}\n            {{- end }}\n          {{- end }}\n        {{- end }}\n        {{-  if .Values.kubeRBACProxy.enabled  }}\n        - name: kube-rbac-proxy\n          args:\n            {{-  if .Values.kubeRBACProxy.extraArgs  }}\n            {{- .Values.kubeRBACProxy.extraArgs | toYaml | nindent 12 }}\n            {{-  end  }}\n            - --secure-listen-address=:{{ .Values.service.port}}\n            - --upstream=http://127.0.0.1:{{ $servicePort }}/\n            - --proxy-endpoints-port=8888\n            - --config-file=/etc/kube-rbac-proxy-config/config-file.yaml\n          volumeMounts:\n            - name: kube-rbac-proxy-config\n              mountPath: /etc/kube-rbac-proxy-config\n          imagePullPolicy: {{ .Values.kubeRBACProxy.image.pullPolicy }}\n          {{- if .Values.kubeRBACProxy.image.sha }}\n          image: \"{{ .Values.global.imageRegistry | default .Values.kubeRBACProxy.image.registry}}/{{ .Values.kubeRBACProxy.image.repository }}:{{ .Values.kubeRBACProxy.image.tag }}@sha256:{{ .Values.kubeRBACProxy.image.sha }}\"\n          {{- else }}\n          image: \"{{ .Values.global.imageRegistry | default .Values.kubeRBACProxy.image.registry}}/{{ .Values.kubeRBACProxy.image.repository }}:{{ .Values.kubeRBACProxy.image.tag }}\"\n          {{- end }}\n          ports:\n            - containerPort: {{ .Values.service.port}}\n              name: \"http\"\n            - containerPort: 8888\n              name: \"http-healthz\"\n          readinessProbe:\n            httpGet:\n              scheme: HTTPS\n              port: 8888\n              path: healthz\n            initialDelaySeconds: 5\n            timeoutSeconds: 5\n          {{- if .Values.kubeRBACProxy.resources }}\n          resources:\n          {{ toYaml .Values.kubeRBACProxy.resources | nindent 12 }}\n          {{- end }}\n          {{- if .Values.kubeRBACProxy.containerSecurityContext }}\n          securityContext:\n          {{ toYaml .Values.kubeRBACProxy.containerSecurityContext | nindent 12 }}\n        {{- end }}\n        {{- end }}\n      {{- if or .Values.imagePullSecrets .Values.global.imagePullSecrets }}\n      imagePullSecrets:\n        {{- include \"prometheus-node-exporter.imagePullSecrets\" (dict \"Values\" .Values \"imagePullSecrets\" .Values.imagePullSecrets) | indent 8 }}\n      {{- end }}\n      hostNetwork: {{ .Values.hostNetwork }}\n      hostPID: {{ .Values.hostPID }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.dnsConfig }}\n      dnsConfig:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: proc\n          hostPath:\n            path: /proc\n        - name: sys\n          hostPath:\n            path: /sys\n        {{- if .Values.hostRootFsMount.enabled }}\n        - name: root\n          hostPath:\n            path: /\n        {{- end }}\n        {{- range $_, $mount := .Values.extraHostVolumeMounts }}\n        - name: {{ $mount.name }}\n          hostPath:\n            path: {{ $mount.hostPath }}\n        {{- end }}\n        {{- range $_, $mount := .Values.sidecarVolumeMount }}\n        - name: {{ $mount.name }}\n          emptyDir:\n            medium: Memory\n        {{- end }}\n        {{- range $_, $mount := .Values.sidecarHostVolumeMounts }}\n        - name: {{ $mount.name }}\n          hostPath:\n            path: {{ $mount.hostPath }}\n        {{- end }}\n        {{- range $_, $mount := .Values.configmaps }}\n        - name: {{ $mount.name }}\n          configMap:\n            name: {{ $mount.name }}\n        {{- end }}\n        {{- range $_, $mount := .Values.secrets }}\n        - name: {{ $mount.name }}\n          secret:\n            secretName: {{ $mount.name }}\n        {{- end }}\n        {{- if .Values.kubeRBACProxy.enabled }}\n        - name: kube-rbac-proxy-config\n          configMap:\n            name: {{ template \"prometheus-node-exporter.fullname\" . }}-rbac-config\n        {{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/endpoints.yaml",
    "content": "{{- if .Values.endpoints }}\napiVersion: v1\nkind: Endpoints\nmetadata:\n  name: {{ include \"prometheus-node-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-node-exporter.namespace\" . }}\n  labels:\n    {{- include \"prometheus-node-exporter.labels\" . | nindent 4 }}\nsubsets:\n  - addresses:\n      {{- range .Values.endpoints }}\n      - ip: {{ . }}\n      {{- end }}\n    ports:\n      - name: {{ .Values.service.portName }}\n        port: 9100\n        protocol: TCP\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/extra-manifests.yaml",
    "content": "{{ range .Values.extraManifests }}\n---\n{{ tpl (toYaml .) $ }}\n{{ end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/networkpolicy.yaml",
    "content": "{{- if .Values.networkPolicy.enabled }}\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: {{ include \"prometheus-node-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-node-exporter.namespace\" . }}\n  labels:\n    {{- include \"prometheus-node-exporter.labels\" $ | nindent 4 }}\n  {{- with .Values.service.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  ingress:\n    - ports:\n      - port: {{ .Values.service.port }}\n  policyTypes:\n    - Egress\n    - Ingress\n  podSelector:\n    matchLabels:\n      {{- include \"prometheus-node-exporter.selectorLabels\" . | nindent 6 }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/podmonitor.yaml",
    "content": "{{- if .Values.prometheus.podMonitor.enabled }}\napiVersion: {{ .Values.prometheus.podMonitor.apiVersion | default \"monitoring.coreos.com/v1\" }}\nkind: PodMonitor\nmetadata:\n  name: {{ include \"prometheus-node-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-node-exporter.podmonitor-namespace\" . }}\n  labels:\n    {{- include \"prometheus-node-exporter.labels\" . | nindent 4 }}\n    {{- with .Values.prometheus.podMonitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\nspec:\n  jobLabel: {{ default \"app.kubernetes.io/name\" .Values.prometheus.podMonitor.jobLabel }}\n  {{- include \"podmonitor.scrapeLimits\" .Values.prometheus.podMonitor | nindent 2 }}\n  selector:\n    matchLabels:\n    {{- with .Values.prometheus.podMonitor.selectorOverride }}\n      {{- toYaml . | nindent 6 }}\n    {{- else }}\n      {{- include \"prometheus-node-exporter.selectorLabels\" . | nindent 6 }}\n    {{- end }}\n  namespaceSelector:\n    matchNames:\n      - {{ include \"prometheus-node-exporter.namespace\" . }}\n  {{- with .Values.prometheus.podMonitor.attachMetadata }}\n  attachMetadata:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  {{- with .Values.prometheus.podMonitor.podTargetLabels }}\n  podTargetLabels:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  podMetricsEndpoints:\n    - port: {{ .Values.service.portName }}\n      {{- with .Values.prometheus.podMonitor.scheme }}\n      scheme: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.path }}\n      path: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.basicAuth }}\n      basicAuth:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.bearerTokenSecret }}\n      bearerTokenSecret:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.tlsConfig }}\n      tlsConfig:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.authorization }}\n      authorization:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.oauth2 }}\n      oauth2:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.proxyUrl }}\n      proxyUrl: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.interval }}\n      interval: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.honorTimestamps }}\n      honorTimestamps: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.honorLabels }}\n      honorLabels: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.scrapeTimeout }}\n      scrapeTimeout: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.relabelings }}\n      relabelings:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.metricRelabelings }}\n      metricRelabelings:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      enableHttp2: {{ default false .Values.prometheus.podMonitor.enableHttp2 }}\n      filterRunning: {{ default true .Values.prometheus.podMonitor.filterRunning }}\n      followRedirects: {{ default false .Values.prometheus.podMonitor.followRedirects }}\n      {{- with .Values.prometheus.podMonitor.params }}\n      params:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml",
    "content": "{{- if and .Values.rbac.create .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") }}\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: psp-{{ include \"prometheus-node-exporter.fullname\" . }}\n  labels: \n    {{- include \"prometheus-node-exporter.labels\" . | nindent 4 }}\nrules:\n- apiGroups: ['extensions']\n  resources: ['podsecuritypolicies']\n  verbs:     ['use']\n  resourceNames:\n    - {{ include \"prometheus-node-exporter.fullname\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml",
    "content": "{{- if and .Values.rbac.create .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: psp-{{ include \"prometheus-node-exporter.fullname\" . }}\n  labels:\n    {{- include \"prometheus-node-exporter.labels\" . | nindent 4 }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: psp-{{ include \"prometheus-node-exporter.fullname\" . }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ include \"prometheus-node-exporter.fullname\" . }}\n    namespace: {{ include \"prometheus-node-exporter.namespace\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp.yaml",
    "content": "{{- if and .Values.rbac.create .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") }}\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: {{ include \"prometheus-node-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-node-exporter.namespace\" . }}\n  labels:\n    {{- include \"prometheus-node-exporter.labels\" . | nindent 4 }}\n  {{- with .Values.rbac.pspAnnotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  privileged: false\n  # Allow core volume types.\n  volumes:\n    - 'configMap'\n    - 'emptyDir'\n    - 'projected'\n    - 'secret'\n    - 'downwardAPI'\n    - 'persistentVolumeClaim'\n    - 'hostPath'\n  hostNetwork: true\n  hostIPC: false\n  hostPID: true\n  hostPorts:\n    - min: 0\n      max: 65535\n  runAsUser:\n    # Permits the container to run with root privileges as well.\n    rule: 'RunAsAny'\n  seLinux:\n    # This policy assumes the nodes are using AppArmor rather than SELinux.\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      # Allow adding the root group.\n      - min: 0\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Allow adding the root group.\n      - min: 0\n        max: 65535\n  readOnlyRootFilesystem: false\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/rbac-configmap.yaml",
    "content": "{{- if .Values.kubeRBACProxy.enabled}}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ template \"prometheus-node-exporter.fullname\" . }}-rbac-config\n  namespace: {{ include \"prometheus-node-exporter.namespace\" . }}\ndata:\n  config-file.yaml: |+\n    authorization:\n      resourceAttributes:\n        namespace: {{ template \"prometheus-node-exporter.namespace\" . }}\n        apiVersion: v1\n        resource: services\n        subresource: {{ template \"prometheus-node-exporter.fullname\" . }}\n        name: {{ template \"prometheus-node-exporter.fullname\" . }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"prometheus-node-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-node-exporter.namespace\" . }}\n  labels:\n    {{- include \"prometheus-node-exporter.labels\" $ | nindent 4 }}\n  {{- with .Values.service.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n{{- if .Values.service.ipDualStack.enabled }}\n  ipFamilies: {{ toYaml .Values.service.ipDualStack.ipFamilies | nindent 4 }}\n  ipFamilyPolicy: {{ .Values.service.ipDualStack.ipFamilyPolicy }}\n{{- end }}\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      {{- if ( and (eq .Values.service.type \"NodePort\" ) (not (empty .Values.service.nodePort)) ) }}\n      nodePort: {{ .Values.service.nodePort }}\n      {{- end }}\n      targetPort: {{ .Values.service.targetPort }}\n      protocol: TCP\n      name: {{ .Values.service.portName }}\n  selector:\n    {{- include \"prometheus-node-exporter.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/serviceaccount.yaml",
    "content": "{{- if and .Values.rbac.create .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"prometheus-node-exporter.serviceAccountName\" . }}\n  namespace: {{ include \"prometheus-node-exporter.namespace\" . }}\n  labels: \n    {{- include \"prometheus-node-exporter.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- if or .Values.serviceAccount.imagePullSecrets .Values.global.imagePullSecrets }}\nimagePullSecrets:\n  {{- include \"prometheus-node-exporter.imagePullSecrets\" (dict \"Values\" .Values \"imagePullSecrets\" .Values.serviceAccount.imagePullSecrets) | indent 2 }}\n{{- end }}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/servicemonitor.yaml",
    "content": "{{- if .Values.prometheus.monitor.enabled }}\napiVersion: {{ .Values.prometheus.monitor.apiVersion | default \"monitoring.coreos.com/v1\" }}\nkind: ServiceMonitor\nmetadata:\n  name: {{ include \"prometheus-node-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-node-exporter.monitor-namespace\" . }}\n  labels:\n    {{- include \"prometheus-node-exporter.labels\" . | nindent 4 }}\n    {{- with .Values.prometheus.monitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\nspec:\n  jobLabel: {{ default \"app.kubernetes.io/name\" .Values.prometheus.monitor.jobLabel }}\n  {{- include \"servicemonitor.scrapeLimits\" .Values.prometheus.monitor | nindent 2 }}\n  {{- with .Values.prometheus.monitor.podTargetLabels }}\n  podTargetLabels:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  selector:\n    matchLabels:\n    {{- with .Values.prometheus.monitor.selectorOverride }}\n      {{- toYaml . | nindent 6 }}\n    {{- else }}\n      {{- include \"prometheus-node-exporter.selectorLabels\" . | nindent 6 }}\n    {{- end }}\n  {{- with .Values.prometheus.monitor.attachMetadata }}\n  attachMetadata:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  endpoints:\n    - port: {{ .Values.service.portName }}\n      scheme: {{ .Values.prometheus.monitor.scheme }}\n      {{- with .Values.prometheus.monitor.basicAuth }}\n      basicAuth:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.bearerTokenFile }}\n      bearerTokenFile: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.tlsConfig }}\n      tlsConfig:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.proxyUrl }}\n      proxyUrl: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.interval }}\n      interval: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.scrapeTimeout }}\n      scrapeTimeout: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.relabelings }}\n      relabelings:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.metricRelabelings }}\n      metricRelabelings:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/verticalpodautoscaler.yaml",
    "content": "{{- if and (.Capabilities.APIVersions.Has \"autoscaling.k8s.io/v1\") (.Values.verticalPodAutoscaler.enabled) }}\napiVersion: autoscaling.k8s.io/v1\nkind: VerticalPodAutoscaler\nmetadata:\n  name: {{ include \"prometheus-node-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-node-exporter.namespace\" . }}\n  labels:\n    {{- include \"prometheus-node-exporter.labels\" . | nindent 4 }}\nspec:\n  {{- with .Values.verticalPodAutoscaler.recommenders }}\n  recommenders:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  resourcePolicy:\n    containerPolicies:\n    - containerName: node-exporter\n      {{- with .Values.verticalPodAutoscaler.controlledResources }}\n      controlledResources:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.verticalPodAutoscaler.controlledValues }}\n      controlledValues: {{ . }}\n      {{- end }}\n      {{- with .Values.verticalPodAutoscaler.maxAllowed }}\n      maxAllowed:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.verticalPodAutoscaler.minAllowed }}\n      minAllowed:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n  targetRef:\n    apiVersion: apps/v1\n    kind: DaemonSet\n    name: {{ include \"prometheus-node-exporter.fullname\" . }}\n  {{- with .Values.verticalPodAutoscaler.updatePolicy }}\n  updatePolicy:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-node-exporter/values.yaml",
    "content": "# Default values for prometheus-node-exporter.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\nimage:\n  registry: quay.io\n  repository: prometheus/node-exporter\n  # Overrides the image tag whose default is {{ printf \"v%s\" .Chart.AppVersion }}\n  tag: \"\"\n  pullPolicy: IfNotPresent\n  digest: \"\"\n\nimagePullSecrets: []\n# - name: \"image-pull-secret\"\nnameOverride: \"\"\nfullnameOverride: \"\"\n\nglobal:\n  # To help compatibility with other charts which use global.imagePullSecrets.\n  # Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style).\n  # global:\n  #   imagePullSecrets:\n  #   - name: pullSecret1\n  #   - name: pullSecret2\n  # or\n  # global:\n  #   imagePullSecrets:\n  #   - pullSecret1\n  #   - pullSecret2\n  imagePullSecrets: []\n  #\n  # Allow parent charts to override registry hostname\n  imageRegistry: \"\"\n\n# Configure kube-rbac-proxy. When enabled, creates a kube-rbac-proxy to protect the node-exporter http endpoint.\n# The requests are served through the same service but requests are HTTPS.\nkubeRBACProxy:\n  enabled: false\n  image:\n    registry: quay.io\n    repository: brancz/kube-rbac-proxy\n    tag: v0.14.0\n    sha: \"\"\n    pullPolicy: IfNotPresent\n\n  # List of additional cli arguments to configure kube-rbac-prxy\n  # for example: --tls-cipher-suites, --log-file, etc.\n  # all the possible args can be found here: https://github.com/brancz/kube-rbac-proxy#usage\n  extraArgs: []\n\n  ## Specify security settings for a Container\n  ## Allows overrides and additional options compared to (Pod) securityContext\n  ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n  containerSecurityContext: {}\n\n  resources: {}\n    # We usually recommend not to specify default resources and to leave this as a conscious\n    # choice for the user. This also increases chances charts run on environments with little\n    # resources, such as Minikube. If you do want to specify resources, uncomment the following\n    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n    # limits:\n    #  cpu: 100m\n    #  memory: 64Mi\n  # requests:\n  #  cpu: 10m\n  #  memory: 32Mi\n\nservice:\n  type: ClusterIP\n  port: 9100\n  targetPort: 9100\n  nodePort:\n  portName: metrics\n  listenOnAllInterfaces: true\n  annotations:\n    prometheus.io/scrape: \"true\"\n  ipDualStack:\n    enabled: false\n    ipFamilies: [\"IPv6\", \"IPv4\"]\n    ipFamilyPolicy: \"PreferDualStack\"\n\n# Set a NetworkPolicy with:\n# ingress only on service.port\n# no egress permitted\nnetworkPolicy:\n  enabled: false\n\n# Additional environment variables that will be passed to the daemonset\nenv: {}\n##  env:\n##    VARIABLE: value\n\nprometheus:\n  monitor:\n    enabled: false\n    additionalLabels: {}\n    namespace: \"\"\n\n    jobLabel: \"\"\n\n    # List of pod labels to add to node exporter metrics\n    # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor\n    podTargetLabels: []\n\n    scheme: http\n    basicAuth: {}\n    bearerTokenFile:\n    tlsConfig: {}\n\n    ## proxyUrl: URL of a proxy that should be used for scraping.\n    ##\n    proxyUrl: \"\"\n\n    ## Override serviceMonitor selector\n    ##\n    selectorOverride: {}\n\n    ## Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above.\n    ##\n    attachMetadata:\n      node: false\n\n    relabelings: []\n    metricRelabelings: []\n    interval: \"\"\n    scrapeTimeout: 10s\n    ## prometheus.monitor.apiVersion ApiVersion for the serviceMonitor Resource(defaults to \"monitoring.coreos.com/v1\")\n    apiVersion: \"\"\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n  # PodMonitor defines monitoring for a set of pods.\n  # ref. https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.PodMonitor\n  # Using a PodMonitor may be preferred in some environments where there is very large number\n  # of Node Exporter endpoints (1000+) behind a single service.\n  # The PodMonitor is disabled by default. When switching from ServiceMonitor to PodMonitor,\n  # the time series resulting from the configuration through PodMonitor may have different labels.\n  # For instance, there will not be the service label any longer which might\n  # affect PromQL queries selecting that label.\n  podMonitor:\n    enabled: false\n    # Namespace in which to deploy the pod monitor. Defaults to the release namespace.\n    namespace: \"\"\n    # Additional labels, e.g. setting a label for pod monitor selector as set in prometheus\n    additionalLabels: {}\n    #  release: kube-prometheus-stack\n    # PodTargetLabels transfers labels of the Kubernetes Pod onto the target.\n    podTargetLabels: []\n    # apiVersion defaults to monitoring.coreos.com/v1.\n    apiVersion: \"\"\n    # Override pod selector to select pod objects.\n    selectorOverride: {}\n    # Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above.\n    attachMetadata:\n      node: false\n    # The label to use to retrieve the job name from. Defaults to label app.kubernetes.io/name.\n    jobLabel: \"\"\n\n    # Scheme/protocol to use for scraping.\n    scheme: \"http\"\n    # Path to scrape metrics at.\n    path: \"/metrics\"\n\n    # BasicAuth allow an endpoint to authenticate over basic authentication.\n    # More info: https://prometheus.io/docs/operating/configuration/#endpoint\n    basicAuth: {}\n    # Secret to mount to read bearer token for scraping targets.\n    # The secret needs to be in the same namespace as the pod monitor and accessible by the Prometheus Operator.\n    # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#secretkeyselector-v1-core\n    bearerTokenSecret: {}\n    # TLS configuration to use when scraping the endpoint.\n    tlsConfig: {}\n    # Authorization section for this endpoint.\n    # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.SafeAuthorization\n    authorization: {}\n    # OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.\n    # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.OAuth2\n    oauth2: {}\n\n    # ProxyURL eg http://proxyserver:2195. Directs scrapes through proxy to this endpoint.\n    proxyUrl: \"\"\n    # Interval at which endpoints should be scraped. If not specified Prometheus’ global scrape interval is used.\n    interval: \"\"\n    # Timeout after which the scrape is ended. If not specified, the Prometheus global scrape interval is used.\n    scrapeTimeout: \"\"\n    # HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.\n    honorTimestamps: true\n    # HonorLabels chooses the metric’s labels on collisions with target labels.\n    honorLabels: true\n    # Whether to enable HTTP2. Default false.\n    enableHttp2: \"\"\n    # Drop pods that are not running. (Failed, Succeeded).\n    # Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase\n    filterRunning: \"\"\n    # FollowRedirects configures whether scrape requests follow HTTP 3xx redirects. Default false.\n    followRedirects: \"\"\n    # Optional HTTP URL parameters\n    params: {}\n\n    # RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds\n    # relabelings for a few standard Kubernetes fields. The original scrape job’s name\n    # is available via the __tmp_prometheus_job_name label.\n    # More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n    relabelings: []\n    # MetricRelabelConfigs to apply to samples before ingestion.\n    metricRelabelings: []\n\n    # SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    sampleLimit: 0\n    # TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    targetLimit: 0\n    # Per-scrape limit on number of labels that will be accepted for a sample.\n    # Only valid in Prometheus versions 2.27.0 and newer.\n    labelLimit: 0\n    # Per-scrape limit on length of labels name that will be accepted for a sample.\n    # Only valid in Prometheus versions 2.27.0 and newer.\n    labelNameLengthLimit: 0\n    # Per-scrape limit on length of labels value that will be accepted for a sample.\n    # Only valid in Prometheus versions 2.27.0 and newer.\n    labelValueLengthLimit: 0\n\n## Customize the updateStrategy if set\nupdateStrategy:\n  type: RollingUpdate\n  rollingUpdate:\n    maxUnavailable: 1\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 200m\n  #   memory: 50Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 30Mi\n\nserviceAccount:\n  # Specifies whether a ServiceAccount should be created\n  create: true\n  # The name of the ServiceAccount to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name:\n  annotations: {}\n  imagePullSecrets: []\n  automountServiceAccountToken: false\n\nsecurityContext:\n  fsGroup: 65534\n  runAsGroup: 65534\n  runAsNonRoot: true\n  runAsUser: 65534\n\ncontainerSecurityContext:\n  readOnlyRootFilesystem: true\n  # capabilities:\n  #   add:\n  #   - SYS_TIME\n\nrbac:\n  ## If true, create & use RBAC resources\n  ##\n  create: true\n  ## If true, create & use Pod Security Policy resources\n  ## https://kubernetes.io/docs/concepts/policy/pod-security-policy/\n  pspEnabled: true\n  pspAnnotations: {}\n\n# for deployments that have node_exporter deployed outside of the cluster, list\n# their addresses here\nendpoints: []\n\n# Expose the service to the host network\nhostNetwork: true\n\n# Share the host process ID namespace\nhostPID: true\n\n# Mount the node's root file system (/) at /host/root in the container\nhostRootFsMount:\n  enabled: true\n  # Defines how new mounts in existing mounts on the node or in the container\n  # are propagated to the container or node, respectively. Possible values are\n  # None, HostToContainer, and Bidirectional. If this field is omitted, then\n  # None is used. More information on:\n  # https://kubernetes.io/docs/concepts/storage/volumes/#mount-propagation\n  mountPropagation: HostToContainer\n\n## Assign a group of affinity scheduling rules\n##\naffinity: {}\n#   nodeAffinity:\n#     requiredDuringSchedulingIgnoredDuringExecution:\n#       nodeSelectorTerms:\n#         - matchFields:\n#             - key: metadata.name\n#               operator: In\n#               values:\n#                 - target-host-name\n\n# Annotations to be added to node exporter pods\npodAnnotations:\n  # Fix for very slow GKE cluster upgrades\n  cluster-autoscaler.kubernetes.io/safe-to-evict: \"true\"\n\n# Extra labels to be added to node exporter pods\npodLabels: {}\n\n# Annotations to be added to node exporter daemonset\ndaemonsetAnnotations: {}\n\n## set to true to add the release label so scraping of the servicemonitor with kube-prometheus-stack works out of the box\nreleaseLabel: false\n\n# Custom DNS configuration to be added to prometheus-node-exporter pods\ndnsConfig: {}\n# nameservers:\n#   - 1.2.3.4\n# searches:\n#   - ns1.svc.cluster-domain.example\n#   - my.dns.search.suffix\n# options:\n#   - name: ndots\n#     value: \"2\"\n#   - name: edns0\n\n## Assign a nodeSelector if operating a hybrid cluster\n##\nnodeSelector:\n  kubernetes.io/os: linux\n  #  kubernetes.io/arch: amd64\n\ntolerations:\n  - effect: NoSchedule\n    operator: Exists\n\n## Assign a PriorityClassName to pods if set\n# priorityClassName: \"\"\n\n## Additional container arguments\n##\nextraArgs: []\n#   - --collector.diskstats.ignored-devices=^(ram|loop|fd|(h|s|v)d[a-z]|nvme\\\\d+n\\\\d+p)\\\\d+$\n#   - --collector.textfile.directory=/run/prometheus\n\n## Additional mounts from the host to node-exporter container\n##\nextraHostVolumeMounts: []\n#  - name: <mountName>\n#    hostPath: <hostPath>\n#    mountPath: <mountPath>\n#    readOnly: true|false\n#    mountPropagation: None|HostToContainer|Bidirectional\n\n## Additional configmaps to be mounted.\n##\nconfigmaps: []\n# - name: <configMapName>\n#   mountPath: <mountPath>\nsecrets: []\n# - name: <secretName>\n#   mountPath: <mountPatch>\n## Override the deployment namespace\n##\nnamespaceOverride: \"\"\n\n## Additional containers for export metrics to text file\n##\nsidecars: []\n##  - name: nvidia-dcgm-exporter\n##    image: nvidia/dcgm-exporter:1.4.3\n\n## Volume for sidecar containers\n##\nsidecarVolumeMount: []\n##  - name: collector-textfiles\n##    mountPath: /run/prometheus\n##    readOnly: false\n\n## Additional mounts from the host to sidecar containers\n##\nsidecarHostVolumeMounts: []\n#  - name: <mountName>\n#    hostPath: <hostPath>\n#    mountPath: <mountPath>\n#    readOnly: true|false\n#    mountPropagation: None|HostToContainer|Bidirectional\n\n## Additional InitContainers to initialize the pod\n##\nextraInitContainers: []\n\n## Liveness probe\n##\nlivenessProbe:\n  failureThreshold: 3\n  httpGet:\n    httpHeaders: []\n    scheme: http\n  initialDelaySeconds: 0\n  periodSeconds: 10\n  successThreshold: 1\n  timeoutSeconds: 1\n\n## Readiness probe\n##\nreadinessProbe:\n  failureThreshold: 3\n  httpGet:\n    httpHeaders: []\n    scheme: http\n  initialDelaySeconds: 0\n  periodSeconds: 10\n  successThreshold: 1\n  timeoutSeconds: 1\n\n# Enable vertical pod autoscaler support for prometheus-node-exporter\nverticalPodAutoscaler:\n  enabled: false\n\n  # Recommender responsible for generating recommendation for the object.\n  # List should be empty (then the default recommender will generate the recommendation)\n  # or contain exactly one recommender.\n  # recommenders:\n  # - name: custom-recommender-performance\n\n  # List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory\n  controlledResources: []\n  # Specifies which resource values should be controlled: RequestsOnly or RequestsAndLimits.\n  # controlledValues: RequestsAndLimits\n\n  # Define the max allowed resources for the pod\n  maxAllowed: {}\n  # cpu: 200m\n  # memory: 100Mi\n  # Define the min allowed resources for the pod\n  minAllowed: {}\n  # cpu: 200m\n  # memory: 100Mi\n\n  # updatePolicy:\n    # Specifies minimal number of replicas which need to be alive for VPA Updater to attempt pod eviction\n    # minReplicas: 1\n    # Specifies whether recommended updates are applied when a Pod is started and whether recommended updates\n    # are applied during the life of a Pod. Possible values are \"Off\", \"Initial\", \"Recreate\", and \"Auto\".\n    # updateMode: Auto\n\n# Extra manifests to deploy as an array\nextraManifests: []\n  # - apiVersion: v1\n  #   kind: ConfigMap\n  #   metadata:\n  #     name: prometheus-extra\n  #   data:\n  #     extra-data: \"value\"\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-windows-exporter/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-windows-exporter/Chart.yaml",
    "content": "apiVersion: v2\nappVersion: 0.22.0\ndescription: A Helm chart for prometheus windows-exporter\nhome: https://github.com/prometheus-community/windows_exporter/\nkeywords:\n- windows-exporter\n- windows\n- prometheus\n- exporter\nmaintainers:\n- email: github@jkroepke.de\n  name: jkroepke\nname: prometheus-windows-exporter\nsources:\n- https://github.com/prometheus-community/windows_exporter/\ntype: application\nversion: 0.1.1\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-windows-exporter/README.md",
    "content": "# Prometheus `Windows Exporter`\n\nPrometheus exporter for hardware and OS metrics exposed by Windows kernels, written in Go with pluggable metric collectors.\n\nThis chart bootstraps a prometheus [`Windows Exporter`](http://github.com/prometheus-community/windows_exporter) daemonset on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.\n\n## Get Repository Info\n\n```console\nhelm repo add prometheus-community https://prometheus-community.github.io/helm-charts\nhelm repo update\n```\n\n_See [`helm repo`](https://helm.sh/docs/helm/helm_repo/) for command documentation._\n\n## Install Chart\n\n```console\nhelm install [RELEASE_NAME] prometheus-community/prometheus-windows-exporter\n```\n\n_See [configuration](#configuring) below._\n\n_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._\n\n## Uninstall Chart\n\n```console\nhelm uninstall [RELEASE_NAME]\n```\n\nThis removes all the Kubernetes components associated with the chart and deletes the release.\n\n_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._\n\n## Configuring\n\nSee [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands:\n\n```console\nhelm show values prometheus-community/prometheus-windows-exporter\n```\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-windows-exporter/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"prometheus-windows-exporter.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"prometheus-windows-exporter.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"prometheus-windows-exporter.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"prometheus-windows-exporter.labels\" -}}\nhelm.sh/chart: {{ include \"prometheus-windows-exporter.chart\" . }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\napp.kubernetes.io/component: metrics\napp.kubernetes.io/part-of: {{ include \"prometheus-windows-exporter.name\" . }}\n{{ include \"prometheus-windows-exporter.selectorLabels\" . }}\n{{- with .Chart.AppVersion }}\napp.kubernetes.io/version: {{ . | quote }}\n{{- end }}\n{{- with .Values.podLabels }}\n{{ toYaml . }}\n{{- end }}\n{{- if .Values.releaseLabel }}\nrelease: {{ .Release.Name }}\n{{- end }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"prometheus-windows-exporter.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"prometheus-windows-exporter.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"prometheus-windows-exporter.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"prometheus-windows-exporter.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n\n{{/*\nThe image to use\n*/}}\n{{- define \"prometheus-windows-exporter.image\" -}}\n{{- if .Values.image.sha }}\n{{- fail \"image.sha forbidden. Use image.digest instead\" }}\n{{- else if .Values.image.digest }}\n{{- if .Values.global.imageRegistry }}\n{{- printf \"%s/%s:%s@%s\" .Values.global.imageRegistry .Values.image.repository (default .Chart.AppVersion .Values.image.tag) .Values.image.digest }}\n{{- else }}\n{{- printf \"%s/%s:%s@%s\" .Values.image.registry .Values.image.repository (default .Chart.AppVersion .Values.image.tag) .Values.image.digest }}\n{{- end }}\n{{- else }}\n{{- if .Values.global.imageRegistry }}\n{{- printf \"%s/%s:%s\" .Values.global.imageRegistry .Values.image.repository (default .Chart.AppVersion .Values.image.tag) }}\n{{- else }}\n{{- printf \"%s/%s:%s\" .Values.image.registry .Values.image.repository (default .Chart.AppVersion .Values.image.tag) }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nAllow the release namespace to be overridden for multi-namespace deployments in combined charts\n*/}}\n{{- define \"prometheus-windows-exporter.namespace\" -}}\n{{- if .Values.namespaceOverride }}\n{{- .Values.namespaceOverride }}\n{{- else }}\n{{- .Release.Namespace }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate the namespace name of the service monitor\n*/}}\n{{- define \"prometheus-windows-exporter.monitor-namespace\" -}}\n{{- if .Values.namespaceOverride }}\n{{- .Values.namespaceOverride }}\n{{- else }}\n{{- if .Values.prometheus.monitor.namespace }}\n{{- .Values.prometheus.monitor.namespace }}\n{{- else }}\n{{- .Release.Namespace }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/* Sets default scrape limits for servicemonitor */}}\n{{- define \"servicemonitor.scrapeLimits\" -}}\n{{- with .sampleLimit }}\nsampleLimit: {{ . }}\n{{- end }}\n{{- with .targetLimit }}\ntargetLimit: {{ . }}\n{{- end }}\n{{- with .labelLimit }}\nlabelLimit: {{ . }}\n{{- end }}\n{{- with .labelNameLengthLimit }}\nlabelNameLengthLimit: {{ . }}\n{{- end }}\n{{- with .labelValueLengthLimit }}\nlabelValueLengthLimit: {{ . }}\n{{- end }}\n{{- end }}\n\n{{/*\nFormats imagePullSecrets. Input is (dict \"Values\" .Values \"imagePullSecrets\" .{specific imagePullSecrets})\n*/}}\n{{- define \"prometheus-windows-exporter.imagePullSecrets\" -}}\n{{- range (concat .Values.global.imagePullSecrets .imagePullSecrets) }}\n  {{- if eq (typeOf .) \"map[string]interface {}\" }}\n- {{ toYaml . | trim }}\n  {{- else }}\n- name: {{ . }}\n  {{- end }}\n{{- end }}\n{{- end -}}\n\n{{/*\nCreate the namespace name of the pod monitor\n*/}}\n{{- define \"prometheus-windows-exporter.podmonitor-namespace\" -}}\n{{- if .Values.namespaceOverride }}\n{{- .Values.namespaceOverride }}\n{{- else }}\n{{- if .Values.prometheus.podMonitor.namespace }}\n{{- .Values.prometheus.podMonitor.namespace }}\n{{- else }}\n{{- .Release.Namespace }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/* Sets default scrape limits for podmonitor */}}\n{{- define \"podmonitor.scrapeLimits\" -}}\n{{- with .sampleLimit }}\nsampleLimit: {{ . }}\n{{- end }}\n{{- with .targetLimit }}\ntargetLimit: {{ . }}\n{{- end }}\n{{- with .labelLimit }}\nlabelLimit: {{ . }}\n{{- end }}\n{{- with .labelNameLengthLimit }}\nlabelNameLengthLimit: {{ . }}\n{{- end }}\n{{- with .labelValueLengthLimit }}\nlabelValueLengthLimit: {{ . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-windows-exporter/templates/config.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"prometheus-windows-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-windows-exporter.namespace\" . }}\n  labels:\n    {{- include \"prometheus-windows-exporter.labels\" $ | nindent 4 }}\n  {{- with .Values.service.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\ndata:\n  config.yml: |\n    {{- .Values.config | nindent 4 }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-windows-exporter/templates/daemonset.yaml",
    "content": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: {{ include \"prometheus-windows-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-windows-exporter.namespace\" . }}\n  labels:\n    {{- include \"prometheus-windows-exporter.labels\" . | nindent 4 }}\n  {{- with .Values.daemonsetAnnotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  selector:\n    matchLabels:\n      {{- include \"prometheus-windows-exporter.selectorLabels\" . | nindent 6 }}\n  {{- with .Values.updateStrategy }}\n  updateStrategy:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"prometheus-windows-exporter.labels\" . | nindent 8 }}\n    spec:\n      automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}\n      {{- with .Values.securityContext }}\n      securityContext:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.priorityClassName }}\n      priorityClassName: {{ . }}\n      {{- end }}\n      initContainers:\n        - name: configure-firewall\n          image: {{ include \"prometheus-windows-exporter.image\" . }}\n          command: [ \"powershell\" ]\n          args: [ \"New-NetFirewallRule\", \"-DisplayName\", \"'windows-exporter'\", \"-Direction\", \"inbound\", \"-Profile\", \"Any\", \"-Action\", \"Allow\", \"-LocalPort\", \"{{ .Values.service.port }}\", \"-Protocol\", \"TCP\" ]\n        {{- with .Values.extraInitContainers }}\n        {{- toYaml . | nindent 8 }}\n        {{- end }}\n      serviceAccountName: {{ include \"prometheus-windows-exporter.serviceAccountName\" . }}\n      containers:\n        - name: windows-exporter\n          image: {{ include \"prometheus-windows-exporter.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          args:\n            - --config.file=%CONTAINER_SANDBOX_MOUNT_POINT%/config.yml\n            - --collector.textfile.directory=%CONTAINER_SANDBOX_MOUNT_POINT%\n            - --web.listen-address=:{{ .Values.service.port }}\n            {{- with .Values.extraArgs }}\n            {{- toYaml . | nindent 12 }}\n            {{- end }}\n          {{- with .Values.containerSecurityContext }}\n          securityContext:\n            {{- toYaml . | nindent 12 }}\n          {{- end }}\n          env:\n            {{- range $key, $value := .Values.env }}\n            - name: {{ $key }}\n              value: {{ $value | quote }}\n            {{- end }}\n          ports:\n            - name: {{ .Values.service.portName }}\n              containerPort: {{ .Values.service.port }}\n              protocol: TCP\n          livenessProbe:\n            failureThreshold: {{ .Values.livenessProbe.failureThreshold }}\n            httpGet:\n              httpHeaders:\n              {{- range $_, $header := .Values.livenessProbe.httpGet.httpHeaders }}\n              - name: {{ $header.name }}\n                value: {{ $header.value }}\n              {{- end }}\n              path: /\n              port: {{ .Values.service.port }}\n              scheme: {{ upper .Values.livenessProbe.httpGet.scheme }}\n            initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.livenessProbe.periodSeconds }}\n            successThreshold: {{ .Values.livenessProbe.successThreshold }}\n            timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}\n          readinessProbe:\n            failureThreshold: {{ .Values.readinessProbe.failureThreshold }}\n            httpGet:\n              httpHeaders:\n              {{- range $_, $header := .Values.readinessProbe.httpGet.httpHeaders }}\n              - name: {{ $header.name }}\n                value: {{ $header.value }}\n              {{- end }}\n              path: /\n              port: {{ .Values.service.port }}\n              scheme: {{ upper .Values.readinessProbe.httpGet.scheme }}\n            initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.readinessProbe.periodSeconds }}\n            successThreshold: {{ .Values.readinessProbe.successThreshold }}\n            timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}\n          {{- with .Values.resources }}\n          resources:\n            {{- toYaml . | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: config\n              mountPath: /config.yml\n              subPath: config.yml\n            {{- range $_, $mount := .Values.extraHostVolumeMounts }}\n            - name: {{ $mount.name }}\n              mountPath: {{ $mount.mountPath }}\n              readOnly: {{ $mount.readOnly }}\n            {{- end }}\n            {{- range $_, $mount := .Values.sidecarVolumeMount }}\n            - name: {{ $mount.name }}\n              mountPath: {{ $mount.mountPath }}\n              readOnly: true\n            {{- end }}\n            {{- range $_, $mount := .Values.configmaps }}\n            - name: {{ $mount.name }}\n              mountPath: {{ $mount.mountPath }}\n            {{- end }}\n            {{- range $_, $mount := .Values.secrets }}\n            - name: {{ .name }}\n              mountPath: {{ .mountPath }}\n            {{- end }}\n        {{- with .Values.sidecars }}\n        {{- toYaml . | nindent 8 }}\n          {{- if or .Values.sidecarVolumeMount .Values.sidecarHostVolumeMounts }}\n          volumeMounts:\n            {{- range $_, $mount := .Values.sidecarVolumeMount }}\n            - name: {{ $mount.name }}\n              mountPath: {{ $mount.mountPath }}\n              readOnly: {{ $mount.readOnly }}\n            {{- end }}\n            {{- range $_, $mount := .Values.sidecarHostVolumeMounts }}\n            - name: {{ $mount.name }}\n              mountPath: {{ $mount.mountPath }}\n              readOnly: {{ $mount.readOnly }}\n            {{- end }}\n          {{- end }}\n        {{- end }}\n      {{- if or .Values.imagePullSecrets .Values.global.imagePullSecrets }}\n      imagePullSecrets:\n        {{- include \"prometheus-windows-exporter.imagePullSecrets\" (dict \"Values\" .Values \"imagePullSecrets\" .Values.imagePullSecrets) | indent 8 }}\n      {{- end }}\n      hostNetwork: {{ .Values.hostNetwork }}\n      hostPID: {{ .Values.hostPID }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.dnsConfig }}\n      dnsConfig:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      volumes:\n        - name: config\n          configMap:\n            name: {{ include \"prometheus-windows-exporter.fullname\" . }}\n        {{- range $_, $mount := .Values.extraHostVolumeMounts }}\n        - name: {{ $mount.name }}\n          hostPath:\n            path: {{ $mount.hostPath }}\n        {{- end }}\n        {{- range $_, $mount := .Values.sidecarVolumeMount }}\n        - name: {{ $mount.name }}\n          emptyDir:\n            medium: Memory\n        {{- end }}\n        {{- range $_, $mount := .Values.sidecarHostVolumeMounts }}\n        - name: {{ $mount.name }}\n          hostPath:\n            path: {{ $mount.hostPath }}\n        {{- end }}\n        {{- range $_, $mount := .Values.configmaps }}\n        - name: {{ $mount.name }}\n          configMap:\n            name: {{ $mount.name }}\n        {{- end }}\n        {{- range $_, $mount := .Values.secrets }}\n        - name: {{ $mount.name }}\n          secret:\n            secretName: {{ $mount.name }}\n        {{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-windows-exporter/templates/podmonitor.yaml",
    "content": "{{- if .Values.prometheus.podMonitor.enabled }}\napiVersion: {{ .Values.prometheus.podMonitor.apiVersion | default \"monitoring.coreos.com/v1\" }}\nkind: PodMonitor\nmetadata:\n  name: {{ include \"prometheus-windows-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-windows-exporter.podmonitor-namespace\" . }}\n  labels:\n    {{- include \"prometheus-windows-exporter.labels\" . | nindent 4 }}\n    {{- with .Values.prometheus.podMonitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\nspec:\n  jobLabel: {{ default \"app.kubernetes.io/name\" .Values.prometheus.podMonitor.jobLabel }}\n  {{- include \"podmonitor.scrapeLimits\" .Values.prometheus.podMonitor | nindent 2 }}\n  selector:\n    matchLabels:\n    {{- with .Values.prometheus.podMonitor.selectorOverride }}\n      {{- toYaml . | nindent 6 }}\n    {{- else }}\n      {{- include \"prometheus-windows-exporter.selectorLabels\" . | nindent 6 }}\n    {{- end }}\n  namespaceSelector:\n    matchNames:\n      - {{ include \"prometheus-windows-exporter.namespace\" . }}\n  {{- with .Values.prometheus.podMonitor.attachMetadata }}\n  attachMetadata:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  {{- with .Values.prometheus.podMonitor.podTargetLabels }}\n  podTargetLabels:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  podMetricsEndpoints:\n    - port: {{ .Values.service.portName }}\n      {{- with .Values.prometheus.podMonitor.scheme }}\n      scheme: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.path }}\n      path: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.basicAuth }}\n      basicAuth:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.bearerTokenSecret }}\n      bearerTokenSecret:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.tlsConfig }}\n      tlsConfig:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.authorization }}\n      authorization:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.oauth2 }}\n      oauth2:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.proxyUrl }}\n      proxyUrl: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.interval }}\n      interval: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.honorTimestamps }}\n      honorTimestamps: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.honorLabels }}\n      honorLabels: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.scrapeTimeout }}\n      scrapeTimeout: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.relabelings }}\n      relabelings:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.podMonitor.metricRelabelings }}\n      metricRelabelings:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      enableHttp2: {{ default false .Values.prometheus.podMonitor.enableHttp2 }}\n      filterRunning: {{ default true .Values.prometheus.podMonitor.filterRunning }}\n      followRedirects: {{ default false .Values.prometheus.podMonitor.followRedirects }}\n      {{- with .Values.prometheus.podMonitor.params }}\n      params:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-windows-exporter/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"prometheus-windows-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-windows-exporter.namespace\" . }}\n  labels:\n    {{- include \"prometheus-windows-exporter.labels\" $ | nindent 4 }}\n  {{- if or .Values.prometheus.monitor.enabled .Values.prometheus.podMonitor.enabled }}\n  {{- with .Values.service.annotations }}\n  annotations:\n    {{- unset . \"prometheus.io/scrape\" | toYaml | nindent 4 }}\n  {{- end }}\n  {{- else }}\n  annotations:\n    prometheus.io/scrape: \"true\"\n  {{- with .Values.service.annotations }}\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      {{- if ( and (eq .Values.service.type \"NodePort\" ) (not (empty .Values.service.nodePort)) ) }}\n      nodePort: {{ .Values.service.nodePort }}\n      {{- end }}\n      targetPort: {{ .Values.service.portName }}\n      protocol: TCP\n      appProtocol: http\n      name: {{ .Values.service.portName }}\n  selector:\n    {{- include \"prometheus-windows-exporter.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-windows-exporter/templates/serviceaccount.yaml",
    "content": "{{- if and .Values.rbac.create .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"prometheus-windows-exporter.serviceAccountName\" . }}\n  namespace: {{ include \"prometheus-windows-exporter.namespace\" . }}\n  labels:\n    {{- include \"prometheus-windows-exporter.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- if or .Values.serviceAccount.imagePullSecrets .Values.global.imagePullSecrets }}\nimagePullSecrets:\n  {{- include \"prometheus-windows-exporter.imagePullSecrets\" (dict \"Values\" .Values \"imagePullSecrets\" .Values.serviceAccount.imagePullSecrets) | indent 2 }}\n{{- end }}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-windows-exporter/templates/servicemonitor.yaml",
    "content": "{{- if .Values.prometheus.monitor.enabled }}\napiVersion: {{ .Values.prometheus.monitor.apiVersion | default \"monitoring.coreos.com/v1\" }}\nkind: ServiceMonitor\nmetadata:\n  name: {{ include \"prometheus-windows-exporter.fullname\" . }}\n  namespace: {{ include \"prometheus-windows-exporter.monitor-namespace\" . }}\n  labels:\n    {{- include \"prometheus-windows-exporter.labels\" . | nindent 4 }}\n    {{- with .Values.prometheus.monitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\nspec:\n  jobLabel: {{ default \"app.kubernetes.io/name\" .Values.prometheus.monitor.jobLabel }}\n  {{- include \"servicemonitor.scrapeLimits\" .Values.prometheus.monitor | nindent 2 }}\n  {{- with .Values.prometheus.monitor.podTargetLabels }}\n  podTargetLabels:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  selector:\n    matchLabels:\n    {{- with .Values.prometheus.monitor.selectorOverride }}\n      {{- toYaml . | nindent 6 }}\n    {{- else }}\n      {{- include \"prometheus-windows-exporter.selectorLabels\" . | nindent 6 }}\n    {{- end }}\n  {{- with .Values.prometheus.monitor.attachMetadata }}\n  attachMetadata:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  endpoints:\n    - port: {{ .Values.service.portName }}\n      scheme: {{ .Values.prometheus.monitor.scheme }}\n      {{- with .Values.prometheus.monitor.basicAuth }}\n      basicAuth:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.bearerTokenFile }}\n      bearerTokenFile: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.tlsConfig }}\n      tlsConfig:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.proxyUrl }}\n      proxyUrl: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.interval }}\n      interval: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.scrapeTimeout }}\n      scrapeTimeout: {{ . }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.relabelings }}\n      relabelings:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.prometheus.monitor.metricRelabelings }}\n      metricRelabelings:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/charts/prometheus-windows-exporter/values.yaml",
    "content": "# Default values for prometheus-windows-exporter.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nimage:\n  registry: ghcr.io\n  repository: prometheus-community/windows-exporter\n  # Overrides the image tag whose default is {{ printf \"v%s\" .Chart.AppVersion }}\n  tag: \"\"\n  pullPolicy: IfNotPresent\n  digest: \"\"\n\nconfig: |-\n  collectors:\n    enabled: '[defaults],container'\n\nimagePullSecrets: []\n# - name: \"image-pull-secret\"\nnameOverride: \"\"\nfullnameOverride: \"\"\n\nglobal:\n  # To help compatibility with other charts which use global.imagePullSecrets.\n  # Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style).\n  # global:\n  #   imagePullSecrets:\n  #   - name: pullSecret1\n  #   - name: pullSecret2\n  # or\n  # global:\n  #   imagePullSecrets:\n  #   - pullSecret1\n  #   - pullSecret2\n  imagePullSecrets: []\n  #\n  # Allow parent charts to override registry hostname\n  imageRegistry: \"\"\n\nservice:\n  type: ClusterIP\n  port: 9182\n  nodePort:\n  portName: metrics\n  annotations: {}\n\n# Additional environment variables that will be passed to the daemonset\nenv: {}\n##  env:\n##    VARIABLE: value\n\nprometheus:\n  monitor:\n    enabled: false\n    additionalLabels: {}\n    namespace: \"\"\n\n    jobLabel: \"\"\n\n    # List of pod labels to add to windows exporter metrics\n    # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor\n    podTargetLabels: []\n\n    scheme: http\n    basicAuth: {}\n    bearerTokenFile:\n    tlsConfig: {}\n\n    ## proxyUrl: URL of a proxy that should be used for scraping.\n    ##\n    proxyUrl: \"\"\n\n    ## Override serviceMonitor selector\n    ##\n    selectorOverride: {}\n\n    ## Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above.\n    ##\n    attachMetadata:\n      node: false\n\n    relabelings: []\n    metricRelabelings: []\n    interval: \"\"\n    scrapeTimeout: 10s\n    ## prometheus.monitor.apiVersion ApiVersion for the serviceMonitor Resource(defaults to \"monitoring.coreos.com/v1\")\n    apiVersion: \"\"\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n  # PodMonitor defines monitoring for a set of pods.\n  # ref. https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.PodMonitor\n  # Using a PodMonitor may be preferred in some environments where there is very large number\n  # of Windows Exporter endpoints (1000+) behind a single service.\n  # The PodMonitor is disabled by default. When switching from ServiceMonitor to PodMonitor,\n  # the time series resulting from the configuration through PodMonitor may have different labels.\n  # For instance, there will not be the service label any longer which might\n  # affect PromQL queries selecting that label.\n  podMonitor:\n    enabled: false\n    # Namespace in which to deploy the pod monitor. Defaults to the release namespace.\n    namespace: \"\"\n    # Additional labels, e.g. setting a label for pod monitor selector as set in prometheus\n    additionalLabels: {}\n    #  release: kube-prometheus-stack\n    # PodTargetLabels transfers labels of the Kubernetes Pod onto the target.\n    podTargetLabels: []\n    # apiVersion defaults to monitoring.coreos.com/v1.\n    apiVersion: \"\"\n    # Override pod selector to select pod objects.\n    selectorOverride: {}\n    # Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above.\n    attachMetadata:\n      node: false\n    # The label to use to retrieve the job name from. Defaults to label app.kubernetes.io/name.\n    jobLabel: \"\"\n\n    # Scheme/protocol to use for scraping.\n    scheme: \"http\"\n    # Path to scrape metrics at.\n    path: \"/metrics\"\n\n    # BasicAuth allow an endpoint to authenticate over basic authentication.\n    # More info: https://prometheus.io/docs/operating/configuration/#endpoint\n    basicAuth: {}\n    # Secret to mount to read bearer token for scraping targets.\n    # The secret needs to be in the same namespace as the pod monitor and accessible by the Prometheus Operator.\n    # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#secretkeyselector-v1-core\n    bearerTokenSecret: {}\n    # TLS configuration to use when scraping the endpoint.\n    tlsConfig: {}\n    # Authorization section for this endpoint.\n    # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.SafeAuthorization\n    authorization: {}\n    # OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.\n    # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.OAuth2\n    oauth2: {}\n\n    # ProxyURL eg http://proxyserver:2195. Directs scrapes through proxy to this endpoint.\n    proxyUrl: \"\"\n    # Interval at which endpoints should be scraped. If not specified Prometheus’ global scrape interval is used.\n    interval: \"\"\n    # Timeout after which the scrape is ended. If not specified, the Prometheus global scrape interval is used.\n    scrapeTimeout: \"\"\n    # HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.\n    honorTimestamps: true\n    # HonorLabels chooses the metric’s labels on collisions with target labels.\n    honorLabels: true\n    # Whether to enable HTTP2. Default false.\n    enableHttp2: \"\"\n    # Drop pods that are not running. (Failed, Succeeded).\n    # Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase\n    filterRunning: \"\"\n    # FollowRedirects configures whether scrape requests follow HTTP 3xx redirects. Default false.\n    followRedirects: \"\"\n    # Optional HTTP URL parameters\n    params: {}\n\n    # RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds\n    # relabelings for a few standard Kubernetes fields. The original scrape job’s name\n    # is available via the __tmp_prometheus_job_name label.\n    # More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\n    relabelings: []\n    # MetricRelabelConfigs to apply to samples before ingestion.\n    metricRelabelings: []\n\n    # SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    sampleLimit: 0\n    # TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    targetLimit: 0\n    # Per-scrape limit on number of labels that will be accepted for a sample.\n    # Only valid in Prometheus versions 2.27.0 and newer.\n    labelLimit: 0\n    # Per-scrape limit on length of labels name that will be accepted for a sample.\n    # Only valid in Prometheus versions 2.27.0 and newer.\n    labelNameLengthLimit: 0\n    # Per-scrape limit on length of labels value that will be accepted for a sample.\n    # Only valid in Prometheus versions 2.27.0 and newer.\n    labelValueLengthLimit: 0\n\n## Customize the updateStrategy if set\nupdateStrategy:\n  type: RollingUpdate\n  rollingUpdate:\n    maxUnavailable: 1\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 200m\n  #   memory: 50Mi\n  # requests:\n  #   cpu: 100m\n#   memory: 30Mi\n\nserviceAccount:\n  # Specifies whether a ServiceAccount should be created\n  create: true\n  # The name of the ServiceAccount to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name:\n  annotations: {}\n  imagePullSecrets: []\n  automountServiceAccountToken: false\n\nsecurityContext:\n  windowsOptions:\n    hostProcess: true\n    runAsUserName: \"NT AUTHORITY\\\\system\"\n\ncontainerSecurityContext: {}\n\nrbac:\n  ## If true, create & use RBAC resources\n  ##\n  create: true\n\n# Expose the service to the host network\nhostNetwork: true\n\n# Share the host process ID namespace\nhostPID: true\n\n## Assign a group of affinity scheduling rules\n##\naffinity: {}\n#   nodeAffinity:\n#     requiredDuringSchedulingIgnoredDuringExecution:\n#       nodeSelectorTerms:\n#         - matchFields:\n#             - key: metadata.name\n#               operator: In\n#               values:\n#                 - target-host-name\n\n# Annotations to be added to windows exporter pods\npodAnnotations:\n  # Fix for very slow GKE cluster upgrades\n  cluster-autoscaler.kubernetes.io/safe-to-evict: \"true\"\n\n# Extra labels to be added to windows exporter pods\npodLabels: {}\n\n# Annotations to be added to windows exporter daemonset\ndaemonsetAnnotations: {}\n\n## set to true to add the release label so scraping of the servicemonitor with kube-prometheus-stack works out of the box\nreleaseLabel: false\n\n# Custom DNS configuration to be added to prometheus-windows-exporter pods\ndnsConfig: {}\n# nameservers:\n#   - 1.2.3.4\n# searches:\n#   - ns1.svc.cluster-domain.example\n#   - my.dns.search.suffix\n# options:\n#   - name: ndots\n#     value: \"2\"\n#   - name: edns0\n\n## Assign a nodeSelector if operating a hybrid cluster\n##\nnodeSelector:\n  kubernetes.io/os: windows\n  #  kubernetes.io/arch: amd64\n\ntolerations:\n  - effect: NoSchedule\n    operator: Exists\n\n## Assign a PriorityClassName to pods if set\n# priorityClassName: \"\"\n\n## Additional container arguments\n##\nextraArgs: []\n#   - --collector.service.services-where\n#   - \"Name LIKE 'sql%'\"\n\n## Additional mounts from the host to windows-exporter container\n##\nextraHostVolumeMounts: []\n#  - name: <mountName>\n#    hostPath: <hostPath>\n#    mountPath: <mountPath>\n#    readOnly: true|false\n\n## Additional configmaps to be mounted.\n##\nconfigmaps: []\n# - name: <configMapName>\n#   mountPath: <mountPath>\nsecrets: []\n# - name: <secretName>\n#   mountPath: <mountPatch>\n## Override the deployment namespace\n##\nnamespaceOverride: \"\"\n\n## Additional containers for export metrics to text file\n##\nsidecars: []\n##  - name: nvidia-dcgm-exporter\n##    image: nvidia/dcgm-exporter:1.4.3\n\n## Volume for sidecar containers\n##\nsidecarVolumeMount: []\n##  - name: collector-textfiles\n##    mountPath: /run/prometheus\n##    readOnly: false\n\n## Additional mounts from the host to sidecar containers\n##\nsidecarHostVolumeMounts: []\n#  - name: <mountName>\n#    hostPath: <hostPath>\n#    mountPath: <mountPath>\n#    readOnly: true|false\n#    mountPropagation: None|HostToContainer|Bidirectional\n\n## Additional InitContainers to initialize the pod\n##\nextraInitContainers: []\n\n## Liveness probe\n##\nlivenessProbe:\n  failureThreshold: 3\n  httpGet:\n    httpHeaders: []\n    scheme: http\n  initialDelaySeconds: 0\n  periodSeconds: 10\n  successThreshold: 1\n  timeoutSeconds: 1\n\n## Readiness probe\n##\nreadinessProbe:\n  failureThreshold: 3\n  httpGet:\n    httpHeaders: []\n    scheme: http\n  initialDelaySeconds: 0\n  periodSeconds: 10\n  successThreshold: 1\n  timeoutSeconds: 1\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/NOTES.txt",
    "content": "{{ $.Chart.Name }} has been installed. Check its status by running:\n  kubectl --namespace {{ template \"kube-prometheus-stack.namespace\" . }} get pods -l \"release={{ $.Release.Name }}\"\n\nVisit https://github.com/prometheus-operator/kube-prometheus for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator.\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/* Expand the name of the chart. This is suffixed with -alertmanager, which means subtract 13 from longest 63 available */}}\n{{- define \"kube-prometheus-stack.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 50 | trimSuffix \"-\" -}}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\nThe components in this chart create additional resources that expand the longest created name strings.\nThe longest name that gets created adds and extra 37 characters, so truncation should be 63-35=26.\n*/}}\n{{- define \"kube-prometheus-stack.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 26 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 26 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 26 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/* Fullname suffixed with operator */}}\n{{- define \"kube-prometheus-stack.operator.fullname\" -}}\n{{- printf \"%s-operator\" (include \"kube-prometheus-stack.fullname\" .) -}}\n{{- end }}\n\n{{/* Prometheus custom resource instance name */}}\n{{- define \"kube-prometheus-stack.prometheus.crname\" -}}\n{{- if .Values.cleanPrometheusOperatorObjectNames }}\n{{- include \"kube-prometheus-stack.fullname\" . }}\n{{- else }}\n{{- print (include \"kube-prometheus-stack.fullname\" .) \"-prometheus\" }}\n{{- end }}\n{{- end }}\n\n{{/* Prometheus apiVersion for networkpolicy */}}\n{{- define \"kube-prometheus-stack.prometheus.networkPolicy.apiVersion\" -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end }}\n\n{{/* Alertmanager custom resource instance name */}}\n{{- define \"kube-prometheus-stack.alertmanager.crname\" -}}\n{{- if .Values.cleanPrometheusOperatorObjectNames }}\n{{- include \"kube-prometheus-stack.fullname\" . }}\n{{- else }}\n{{- print (include \"kube-prometheus-stack.fullname\" .) \"-alertmanager\" -}}\n{{- end }}\n{{- end }}\n\n{{/* Fullname suffixed with thanos-ruler */}}\n{{- define \"kube-prometheus-stack.thanosRuler.fullname\" -}}\n{{- printf \"%s-thanos-ruler\" (include \"kube-prometheus-stack.fullname\" .) -}}\n{{- end }}\n\n{{/* Shortened name suffixed with thanos-ruler */}}\n{{- define \"kube-prometheus-stack.thanosRuler.name\" -}}\n{{- default (printf \"%s-thanos-ruler\" (include \"kube-prometheus-stack.name\" .)) .Values.thanosRuler.name -}}\n{{- end }}\n\n\n{{/* Create chart name and version as used by the chart label. */}}\n{{- define \"kube-prometheus-stack.chartref\" -}}\n{{- replace \"+\" \"_\" .Chart.Version | printf \"%s-%s\" .Chart.Name -}}\n{{- end }}\n\n{{/* Generate basic labels */}}\n{{- define \"kube-prometheus-stack.labels\" }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\napp.kubernetes.io/instance: {{ .Release.Name }}\napp.kubernetes.io/version: \"{{ replace \"+\" \"_\" .Chart.Version }}\"\napp.kubernetes.io/part-of: {{ template \"kube-prometheus-stack.name\" . }}\nchart: {{ template \"kube-prometheus-stack.chartref\" . }}\nrelease: {{ $.Release.Name | quote }}\nheritage: {{ $.Release.Service | quote }}\n{{- if .Values.commonLabels}}\n{{ toYaml .Values.commonLabels }}\n{{- end }}\n{{- end }}\n\n{{/* Create the name of kube-prometheus-stack service account to use */}}\n{{- define \"kube-prometheus-stack.operator.serviceAccountName\" -}}\n{{- if .Values.prometheusOperator.serviceAccount.create -}}\n    {{ default (include \"kube-prometheus-stack.operator.fullname\" .) .Values.prometheusOperator.serviceAccount.name }}\n{{- else -}}\n    {{ default \"default\" .Values.prometheusOperator.serviceAccount.name }}\n{{- end -}}\n{{- end -}}\n\n{{/* Create the name of prometheus service account to use */}}\n{{- define \"kube-prometheus-stack.prometheus.serviceAccountName\" -}}\n{{- if .Values.prometheus.serviceAccount.create -}}\n    {{ default (print (include \"kube-prometheus-stack.fullname\" .) \"-prometheus\") .Values.prometheus.serviceAccount.name }}\n{{- else -}}\n    {{ default \"default\" .Values.prometheus.serviceAccount.name }}\n{{- end -}}\n{{- end -}}\n\n{{/* Create the name of alertmanager service account to use */}}\n{{- define \"kube-prometheus-stack.alertmanager.serviceAccountName\" -}}\n{{- if .Values.alertmanager.serviceAccount.create -}}\n    {{ default (print (include \"kube-prometheus-stack.fullname\" .) \"-alertmanager\") .Values.alertmanager.serviceAccount.name }}\n{{- else -}}\n    {{ default \"default\" .Values.alertmanager.serviceAccount.name }}\n{{- end -}}\n{{- end -}}\n\n{{/* Create the name of thanosRuler service account to use */}}\n{{- define \"kube-prometheus-stack.thanosRuler.serviceAccountName\" -}}\n{{- if .Values.thanosRuler.serviceAccount.create -}}\n    {{ default (include \"kube-prometheus-stack.thanosRuler.name\" .) .Values.thanosRuler.serviceAccount.name }}\n{{- else -}}\n    {{ default \"default\" .Values.thanosRuler.serviceAccount.name }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nAllow the release namespace to be overridden for multi-namespace deployments in combined charts\n*/}}\n{{- define \"kube-prometheus-stack.namespace\" -}}\n  {{- if .Values.namespaceOverride -}}\n    {{- .Values.namespaceOverride -}}\n  {{- else -}}\n    {{- .Release.Namespace -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nUse the grafana namespace override for multi-namespace deployments in combined charts\n*/}}\n{{- define \"kube-prometheus-stack-grafana.namespace\" -}}\n  {{- if .Values.grafana.namespaceOverride -}}\n    {{- .Values.grafana.namespaceOverride -}}\n  {{- else -}}\n    {{- .Release.Namespace -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nUse the kube-state-metrics namespace override for multi-namespace deployments in combined charts\n*/}}\n{{- define \"kube-prometheus-stack-kube-state-metrics.namespace\" -}}\n  {{- if index .Values \"kube-state-metrics\" \"namespaceOverride\" -}}\n    {{- index .Values \"kube-state-metrics\" \"namespaceOverride\" -}}\n  {{- else -}}\n    {{- .Release.Namespace -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nUse the prometheus-node-exporter namespace override for multi-namespace deployments in combined charts\n*/}}\n{{- define \"kube-prometheus-stack-prometheus-node-exporter.namespace\" -}}\n  {{- if index .Values \"prometheus-node-exporter\" \"namespaceOverride\" -}}\n    {{- index .Values \"prometheus-node-exporter\" \"namespaceOverride\" -}}\n  {{- else -}}\n    {{- .Release.Namespace -}}\n  {{- end -}}\n{{- end -}}\n\n{{/* Allow KubeVersion to be overridden. */}}\n{{- define \"kube-prometheus-stack.kubeVersion\" -}}\n  {{- default .Capabilities.KubeVersion.Version .Values.kubeVersionOverride -}}\n{{- end -}}\n\n{{/* Get Ingress API Version */}}\n{{- define \"kube-prometheus-stack.ingress.apiVersion\" -}}\n  {{- if and (.Capabilities.APIVersions.Has \"networking.k8s.io/v1\") (semverCompare \">= 1.19-0\" (include \"kube-prometheus-stack.kubeVersion\" .)) -}}\n      {{- print \"networking.k8s.io/v1\" -}}\n  {{- else if .Capabilities.APIVersions.Has \"networking.k8s.io/v1beta1\" -}}\n    {{- print \"networking.k8s.io/v1beta1\" -}}\n  {{- else -}}\n    {{- print \"extensions/v1beta1\" -}}\n  {{- end -}}\n{{- end -}}\n\n{{/* Check Ingress stability */}}\n{{- define \"kube-prometheus-stack.ingress.isStable\" -}}\n  {{- eq (include \"kube-prometheus-stack.ingress.apiVersion\" .) \"networking.k8s.io/v1\" -}}\n{{- end -}}\n\n{{/* Check Ingress supports pathType */}}\n{{/* pathType was added to networking.k8s.io/v1beta1 in Kubernetes 1.18 */}}\n{{- define \"kube-prometheus-stack.ingress.supportsPathType\" -}}\n  {{- or (eq (include \"kube-prometheus-stack.ingress.isStable\" .) \"true\") (and (eq (include \"kube-prometheus-stack.ingress.apiVersion\" .) \"networking.k8s.io/v1beta1\") (semverCompare \">= 1.18-0\" (include \"kube-prometheus-stack.kubeVersion\" .))) -}}\n{{- end -}}\n\n{{/* Get Policy API Version */}}\n{{- define \"kube-prometheus-stack.pdb.apiVersion\" -}}\n  {{- if and (.Capabilities.APIVersions.Has \"policy/v1\") (semverCompare \">= 1.21-0\" (include \"kube-prometheus-stack.kubeVersion\" .)) -}}\n      {{- print \"policy/v1\" -}}\n  {{- else -}}\n    {{- print \"policy/v1beta1\" -}}\n  {{- end -}}\n  {{- end -}}\n\n{{/* Get value based on current Kubernetes version */}}\n{{- define \"kube-prometheus-stack.kubeVersionDefaultValue\" -}}\n  {{- $values := index . 0 -}}\n  {{- $kubeVersion := index . 1 -}}\n  {{- $old := index . 2 -}}\n  {{- $new := index . 3 -}}\n  {{- $default := index . 4 -}}\n  {{- if kindIs \"invalid\" $default -}}\n    {{- if semverCompare $kubeVersion (include \"kube-prometheus-stack.kubeVersion\" $values) -}}\n      {{- print $new -}}\n    {{- else -}}\n      {{- print $old -}}\n    {{- end -}}\n  {{- else -}}\n    {{- print $default }}\n  {{- end -}}\n{{- end -}}\n\n{{/* Get value for kube-controller-manager depending on insecure scraping availability */}}\n{{- define \"kube-prometheus-stack.kubeControllerManager.insecureScrape\" -}}\n  {{- $values := index . 0 -}}\n  {{- $insecure := index . 1 -}}\n  {{- $secure := index . 2 -}}\n  {{- $userValue := index . 3 -}}\n  {{- include \"kube-prometheus-stack.kubeVersionDefaultValue\" (list $values \">= 1.22-0\" $insecure $secure $userValue) -}}\n{{- end -}}\n\n{{/* Get value for kube-scheduler depending on insecure scraping availability */}}\n{{- define \"kube-prometheus-stack.kubeScheduler.insecureScrape\" -}}\n  {{- $values := index . 0 -}}\n  {{- $insecure := index . 1 -}}\n  {{- $secure := index . 2 -}}\n  {{- $userValue := index . 3 -}}\n  {{- include \"kube-prometheus-stack.kubeVersionDefaultValue\" (list $values \">= 1.23-0\" $insecure $secure $userValue) -}}\n{{- end -}}\n\n{{/* Sets default scrape limits for servicemonitor */}}\n{{- define \"servicemonitor.scrapeLimits\" -}}\n{{- with .sampleLimit }}\nsampleLimit: {{ . }}\n{{- end }}\n{{- with .targetLimit }}\ntargetLimit: {{ . }}\n{{- end }}\n{{- with .labelLimit }}\nlabelLimit: {{ . }}\n{{- end }}\n{{- with .labelNameLengthLimit }}\nlabelNameLengthLimit: {{ . }}\n{{- end }}\n{{- with .labelValueLengthLimit }}\nlabelValueLengthLimit: {{ . }}\n{{- end }}\n{{- end -}}\n\n{{/*\nTo help compatibility with other charts which use global.imagePullSecrets.\nAllow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style).\nglobal:\n  imagePullSecrets:\n  - name: pullSecret1\n  - name: pullSecret2\n\nor\n\nglobal:\n  imagePullSecrets:\n  - pullSecret1\n  - pullSecret2\n*/}}\n{{- define \"kube-prometheus-stack.imagePullSecrets\" -}}\n{{- range .Values.global.imagePullSecrets }}\n  {{- if eq (typeOf .) \"map[string]interface {}\" }}\n- {{ toYaml . | trim }}\n  {{- else }}\n- name: {{ . }}\n  {{- end }}\n{{- end }}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/alertmanager.yaml",
    "content": "{{- if .Values.alertmanager.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: Alertmanager\nmetadata:\n  name: {{ template \"kube-prometheus-stack.alertmanager.crname\" . }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.alertmanager.annotations }}\n  annotations:\n{{ toYaml .Values.alertmanager.annotations | indent 4 }}\n{{- end }}\nspec:\n{{- if .Values.alertmanager.alertmanagerSpec.image }}\n  {{- $registry := .Values.global.imageRegistry | default .Values.alertmanager.alertmanagerSpec.image.registry -}}\n  {{- if and .Values.alertmanager.alertmanagerSpec.image.tag .Values.alertmanager.alertmanagerSpec.image.sha }}\n  image: \"{{ $registry }}/{{ .Values.alertmanager.alertmanagerSpec.image.repository }}:{{ .Values.alertmanager.alertmanagerSpec.image.tag }}@sha256:{{ .Values.alertmanager.alertmanagerSpec.image.sha }}\"\n  {{- else if .Values.alertmanager.alertmanagerSpec.image.sha }}\n  image: \"{{ $registry }}/{{ .Values.alertmanager.alertmanagerSpec.image.repository }}@sha256:{{ .Values.alertmanager.alertmanagerSpec.image.sha }}\"\n  {{- else if .Values.alertmanager.alertmanagerSpec.image.tag }}\n  image: \"{{ $registry }}/{{ .Values.alertmanager.alertmanagerSpec.image.repository }}:{{ .Values.alertmanager.alertmanagerSpec.image.tag }}\"\n  {{- else }}\n  image: \"{{ $registry }}/{{ .Values.alertmanager.alertmanagerSpec.image.repository }}\"\n  {{- end }}\n  version: {{ .Values.alertmanager.alertmanagerSpec.image.tag }}\n  {{- if .Values.alertmanager.alertmanagerSpec.image.sha }}\n  sha: {{ .Values.alertmanager.alertmanagerSpec.image.sha }}\n  {{- end }}\n{{- end }}\n  replicas: {{ .Values.alertmanager.alertmanagerSpec.replicas }}\n  listenLocal: {{ .Values.alertmanager.alertmanagerSpec.listenLocal }}\n  serviceAccountName: {{ template \"kube-prometheus-stack.alertmanager.serviceAccountName\" . }}\n{{- if .Values.alertmanager.alertmanagerSpec.externalUrl }}\n  externalUrl: \"{{ tpl .Values.alertmanager.alertmanagerSpec.externalUrl . }}\"\n{{- else if and .Values.alertmanager.ingress.enabled .Values.alertmanager.ingress.hosts }}\n  externalUrl: \"http://{{ tpl (index .Values.alertmanager.ingress.hosts 0) . }}{{ .Values.alertmanager.alertmanagerSpec.routePrefix }}\"\n{{- else }}\n  externalUrl: http://{{ template \"kube-prometheus-stack.fullname\" . }}-alertmanager.{{ template \"kube-prometheus-stack.namespace\" . }}:{{ .Values.alertmanager.service.port }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.nodeSelector }}\n  nodeSelector:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.nodeSelector | indent 4 }}\n{{- end }}\n  paused: {{ .Values.alertmanager.alertmanagerSpec.paused }}\n  logFormat: {{ .Values.alertmanager.alertmanagerSpec.logFormat | quote  }}\n  logLevel:  {{ .Values.alertmanager.alertmanagerSpec.logLevel | quote  }}\n  retention: {{ .Values.alertmanager.alertmanagerSpec.retention | quote  }}\n{{- if .Values.alertmanager.alertmanagerSpec.secrets }}\n  secrets:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.secrets | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.configSecret }}\n  configSecret: {{ .Values.alertmanager.alertmanagerSpec.configSecret }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.configMaps }}\n  configMaps:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.configMaps | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.alertmanagerConfigSelector }}\n  alertmanagerConfigSelector:\n{{ tpl (toYaml .Values.alertmanager.alertmanagerSpec.alertmanagerConfigSelector | indent 4) . }}\n{{ else }}\n  alertmanagerConfigSelector: {}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.alertmanagerConfigNamespaceSelector }}\n  alertmanagerConfigNamespaceSelector:\n{{ tpl (toYaml .Values.alertmanager.alertmanagerSpec.alertmanagerConfigNamespaceSelector | indent 4) . }}\n{{ else }}\n  alertmanagerConfigNamespaceSelector: {}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.web }}\n  web:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.web | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.alertmanagerConfiguration }}\n  alertmanagerConfiguration:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.alertmanagerConfiguration | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.alertmanagerConfigMatcherStrategy }}\n  alertmanagerConfigMatcherStrategy:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.alertmanagerConfigMatcherStrategy | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.resources }}\n  resources:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.resources | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.routePrefix }}\n  routePrefix: \"{{ .Values.alertmanager.alertmanagerSpec.routePrefix }}\"\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.securityContext }}\n  securityContext:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.securityContext | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.storage }}\n  storage:\n{{ tpl (toYaml .Values.alertmanager.alertmanagerSpec.storage | indent 4) . }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.podMetadata }}\n  podMetadata:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.podMetadata | indent 4 }}\n{{- end }}\n{{- if or .Values.alertmanager.alertmanagerSpec.podAntiAffinity .Values.alertmanager.alertmanagerSpec.affinity }}\n  affinity:\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.affinity }}\n{{ toYaml .Values.alertmanager.alertmanagerSpec.affinity | indent 4 }}\n{{- end }}\n{{- if eq .Values.alertmanager.alertmanagerSpec.podAntiAffinity \"hard\" }}\n    podAntiAffinity:\n      requiredDuringSchedulingIgnoredDuringExecution:\n      - topologyKey: {{ .Values.alertmanager.alertmanagerSpec.podAntiAffinityTopologyKey }}\n        labelSelector:\n          matchExpressions:\n            - {key: app.kubernetes.io/name, operator: In, values: [alertmanager]}\n            - {key: alertmanager, operator: In, values: [{{ template \"kube-prometheus-stack.alertmanager.crname\" . }}]}\n{{- else if eq .Values.alertmanager.alertmanagerSpec.podAntiAffinity \"soft\" }}\n    podAntiAffinity:\n      preferredDuringSchedulingIgnoredDuringExecution:\n      - weight: 100\n        podAffinityTerm:\n          topologyKey: {{ .Values.alertmanager.alertmanagerSpec.podAntiAffinityTopologyKey }}\n          labelSelector:\n            matchExpressions:\n              - {key: app.kubernetes.io/name, operator: In, values: [alertmanager]}\n              - {key: alertmanager, operator: In, values: [{{ template \"kube-prometheus-stack.alertmanager.crname\" . }}]}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.tolerations }}\n  tolerations:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.tolerations | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.topologySpreadConstraints }}\n  topologySpreadConstraints:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.topologySpreadConstraints | indent 4 }}\n{{- end }}\n{{- if .Values.global.imagePullSecrets }}\n  imagePullSecrets:\n{{ include \"kube-prometheus-stack.imagePullSecrets\" . | trim | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.containers }}\n  containers:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.containers | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.initContainers }}\n  initContainers:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.initContainers | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.priorityClassName }}\n  priorityClassName: {{.Values.alertmanager.alertmanagerSpec.priorityClassName }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.additionalPeers }}\n  additionalPeers:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.additionalPeers | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.volumes }}\n  volumes:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.volumes | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.volumeMounts }}\n  volumeMounts:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.volumeMounts | indent 4 }}\n{{- end }}\n  portName: {{ .Values.alertmanager.alertmanagerSpec.portName }}\n{{- if .Values.alertmanager.alertmanagerSpec.clusterAdvertiseAddress }}\n  clusterAdvertiseAddress: {{ .Values.alertmanager.alertmanagerSpec.clusterAdvertiseAddress }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.clusterGossipInterval }}\n  clusterGossipInterval: {{ .Values.alertmanager.alertmanagerSpec.clusterGossipInterval }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.clusterPeerTimeout }}\n  clusterPeerTimeout: {{ .Values.alertmanager.alertmanagerSpec.clusterPeerTimeout }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.clusterPushpullInterval }}\n  clusterPushpullInterval: {{ .Values.alertmanager.alertmanagerSpec.clusterPushpullInterval }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.forceEnableClusterMode }}\n  forceEnableClusterMode: {{ .Values.alertmanager.alertmanagerSpec.forceEnableClusterMode }}\n{{- end }}\n{{- if .Values.alertmanager.alertmanagerSpec.minReadySeconds }}\n  minReadySeconds: {{ .Values.alertmanager.alertmanagerSpec.minReadySeconds }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/extrasecret.yaml",
    "content": "{{- if .Values.alertmanager.extraSecret.data -}}\n{{- $secretName := printf \"alertmanager-%s-extra\" (include \"kube-prometheus-stack.fullname\" . ) -}}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ default $secretName .Values.alertmanager.extraSecret.name }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- if .Values.alertmanager.extraSecret.annotations }}\n  annotations:\n{{ toYaml .Values.alertmanager.extraSecret.annotations | indent 4 }}\n{{- end }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n    app.kubernetes.io/component: alertmanager\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\ndata:\n{{- range $key, $val := .Values.alertmanager.extraSecret.data }}\n  {{ $key }}: {{ $val | b64enc | quote }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/ingress.yaml",
    "content": "{{- if and .Values.alertmanager.enabled .Values.alertmanager.ingress.enabled }}\n{{- $pathType := .Values.alertmanager.ingress.pathType | default \"ImplementationSpecific\" }}\n{{- $serviceName := printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"alertmanager\" }}\n{{- $backendServiceName := .Values.alertmanager.ingress.serviceName | default (printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"alertmanager\") }}\n{{- $servicePort := .Values.alertmanager.ingress.servicePort | default .Values.alertmanager.service.port -}}\n{{- $routePrefix := list .Values.alertmanager.alertmanagerSpec.routePrefix }}\n{{- $paths := .Values.alertmanager.ingress.paths | default $routePrefix -}}\n{{- $apiIsStable := eq (include \"kube-prometheus-stack.ingress.isStable\" .) \"true\" -}}\n{{- $ingressSupportsPathType := eq (include \"kube-prometheus-stack.ingress.supportsPathType\" .) \"true\" -}}\napiVersion: {{ include \"kube-prometheus-stack.ingress.apiVersion\" . }}\nkind: Ingress\nmetadata:\n  name: {{ $serviceName }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- if .Values.alertmanager.ingress.annotations }}\n  annotations:\n{{ toYaml .Values.alertmanager.ingress.annotations | indent 4 }}\n{{- end }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n{{- if .Values.alertmanager.ingress.labels }}\n{{ toYaml .Values.alertmanager.ingress.labels | indent 4 }}\n{{- end }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  {{- if $apiIsStable }}\n  {{- if .Values.alertmanager.ingress.ingressClassName }}\n  ingressClassName: {{ .Values.alertmanager.ingress.ingressClassName }}\n  {{- end }}\n  {{- end }}\n  rules:\n  {{- if .Values.alertmanager.ingress.hosts }}\n  {{- range $host := .Values.alertmanager.ingress.hosts }}\n    - host: {{ tpl $host $ }}\n      http:\n        paths:\n  {{- range $p := $paths }}\n          - path: {{ tpl $p $ }}\n            {{- if and $pathType $ingressSupportsPathType }}\n            pathType: {{ $pathType }}\n            {{- end }}\n            backend:\n              {{- if $apiIsStable }}\n              service:\n                name: {{ $backendServiceName }}\n                port:\n                  number: {{ $servicePort }}\n              {{- else }}\n              serviceName: {{ $backendServiceName }}\n              servicePort: {{ $servicePort }}\n    {{- end }}\n    {{- end -}}\n  {{- end -}}\n  {{- else }}\n    - http:\n        paths:\n  {{- range $p := $paths }}\n          - path: {{ tpl $p $ }}\n            {{- if and $pathType $ingressSupportsPathType }}\n            pathType: {{ $pathType }}\n            {{- end }}\n            backend:\n              {{- if $apiIsStable }}\n              service:\n                name: {{ $backendServiceName }}\n                port:\n                  number: {{ $servicePort }}\n              {{- else }}\n              serviceName: {{ $backendServiceName }}\n              servicePort: {{ $servicePort }}\n  {{- end }}\n  {{- end -}}\n  {{- end -}}\n  {{- if .Values.alertmanager.ingress.tls }}\n  tls:\n{{ tpl (toYaml .Values.alertmanager.ingress.tls | indent 4) . }}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/ingressperreplica.yaml",
    "content": "{{- if and .Values.alertmanager.enabled .Values.alertmanager.servicePerReplica.enabled .Values.alertmanager.ingressPerReplica.enabled }}\n{{- $pathType := .Values.alertmanager.ingressPerReplica.pathType | default \"\" }}\n{{- $count := .Values.alertmanager.alertmanagerSpec.replicas | int -}}\n{{- $servicePort := .Values.alertmanager.service.port -}}\n{{- $ingressValues := .Values.alertmanager.ingressPerReplica -}}\n{{- $apiIsStable := eq (include \"kube-prometheus-stack.ingress.isStable\" .) \"true\" -}}\n{{- $ingressSupportsPathType := eq (include \"kube-prometheus-stack.ingress.supportsPathType\" .) \"true\" -}}\napiVersion: v1\nkind: List\nmetadata:\n  name: {{ include \"kube-prometheus-stack.fullname\" $ }}-alertmanager-ingressperreplica\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\nitems:\n{{ range $i, $e := until $count }}\n  - kind: Ingress\n    apiVersion: {{ include \"kube-prometheus-stack.ingress.apiVersion\" $ }}\n    metadata:\n      name: {{ include \"kube-prometheus-stack.fullname\" $ }}-alertmanager-{{ $i }}\n      namespace: {{ template \"kube-prometheus-stack.namespace\" $ }}\n      labels:\n        app: {{ include \"kube-prometheus-stack.name\" $ }}-alertmanager\n      {{ include \"kube-prometheus-stack.labels\" $ | indent 8 }}\n      {{- if $ingressValues.labels }}\n{{ toYaml $ingressValues.labels | indent 8 }}\n      {{- end }}\n      {{- if $ingressValues.annotations }}\n      annotations:\n{{ toYaml $ingressValues.annotations | indent 8 }}\n      {{- end }}\n    spec:\n      {{- if $apiIsStable }}\n      {{- if $ingressValues.ingressClassName }}\n      ingressClassName: {{ $ingressValues.ingressClassName }}\n      {{- end }}\n      {{- end }}\n      rules:\n        - host: {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }}\n          http:\n            paths:\n      {{- range $p := $ingressValues.paths }}\n              - path: {{ tpl $p $ }}\n                {{- if and $pathType $ingressSupportsPathType }}\n                pathType: {{ $pathType }}\n                {{- end }}\n                backend:\n                  {{- if $apiIsStable }}\n                  service:\n                    name: {{ include \"kube-prometheus-stack.fullname\" $ }}-alertmanager-{{ $i }}\n                    port:\n                      number: {{ $servicePort }}\n                  {{- else }}\n                  serviceName: {{ include \"kube-prometheus-stack.fullname\" $ }}-alertmanager-{{ $i }}\n                  servicePort: {{ $servicePort }}\n      {{- end }}\n      {{- end -}}\n      {{- if or $ingressValues.tlsSecretName $ingressValues.tlsSecretPerReplica.enabled }}\n      tls:\n        - hosts:\n            - {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }}\n          {{- if $ingressValues.tlsSecretPerReplica.enabled }}\n          secretName: {{ $ingressValues.tlsSecretPerReplica.prefix }}-{{ $i }}\n          {{- else }}\n          secretName: {{ $ingressValues.tlsSecretName }}\n          {{- end }}\n      {{- end }}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/podDisruptionBudget.yaml",
    "content": "{{- if and .Values.alertmanager.enabled .Values.alertmanager.podDisruptionBudget.enabled }}\napiVersion: {{ include \"kube-prometheus-stack.pdb.apiVersion\" . }}\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-alertmanager\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  {{- if .Values.alertmanager.podDisruptionBudget.minAvailable }}\n  minAvailable: {{ .Values.alertmanager.podDisruptionBudget.minAvailable }}\n  {{- end }}\n  {{- if .Values.alertmanager.podDisruptionBudget.maxUnavailable }}\n  maxUnavailable: {{ .Values.alertmanager.podDisruptionBudget.maxUnavailable }}\n  {{- end }}\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: alertmanager\n      alertmanager: {{ template \"kube-prometheus-stack.alertmanager.crname\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/psp-role.yaml",
    "content": "{{- if and .Values.alertmanager.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\n{{- if .Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\" }}\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-alertmanager\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nrules:\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if semverCompare \"> 1.15.0-0\" $kubeTargetVersion }}\n- apiGroups: ['policy']\n{{- else }}\n- apiGroups: ['extensions']\n{{- end }}\n  resources: ['podsecuritypolicies']\n  verbs:     ['use']\n  resourceNames:\n  - {{ template \"kube-prometheus-stack.fullname\" . }}-alertmanager\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/psp-rolebinding.yaml",
    "content": "{{- if and .Values.alertmanager.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\n{{- if .Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\" }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-alertmanager\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-alertmanager\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"kube-prometheus-stack.alertmanager.serviceAccountName\" . }}\n    namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/psp.yaml",
    "content": "{{- if and .Values.alertmanager.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\n{{- if .Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\" }}\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-alertmanager\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n{{- if .Values.global.rbac.pspAnnotations }}\n  annotations:\n{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }}\n{{- end }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  privileged: false\n  # Allow core volume types.\n  volumes:\n    - 'configMap'\n    - 'emptyDir'\n    - 'projected'\n    - 'secret'\n    - 'downwardAPI'\n    - 'persistentVolumeClaim'\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    # Permits the container to run with root privileges as well.\n    rule: 'RunAsAny'\n  seLinux:\n    # This policy assumes the nodes are using AppArmor rather than SELinux.\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      # Allow adding the root group.\n      - min: 0\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Allow adding the root group.\n      - min: 0\n        max: 65535\n  readOnlyRootFilesystem: false\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/secret.yaml",
    "content": "{{- if and (.Values.alertmanager.enabled) (not .Values.alertmanager.alertmanagerSpec.useExistingSecret) }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: alertmanager-{{ template \"kube-prometheus-stack.alertmanager.crname\" . }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- if .Values.alertmanager.secret.annotations }}\n  annotations:\n{{ toYaml .Values.alertmanager.secret.annotations | indent 4 }}\n{{- end }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\ndata:\n{{- if .Values.alertmanager.tplConfig }}\n{{- if .Values.alertmanager.stringConfig }}\n  alertmanager.yaml: {{ tpl (.Values.alertmanager.stringConfig) . | b64enc | quote }}\n{{- else if eq (typeOf .Values.alertmanager.config) \"string\" }}\n  alertmanager.yaml: {{ tpl (.Values.alertmanager.config) . | b64enc | quote }}\n{{- else }}\n  alertmanager.yaml: {{ tpl (toYaml .Values.alertmanager.config) . | b64enc | quote }}\n{{- end }}\n{{- else }}\n  alertmanager.yaml: {{ toYaml .Values.alertmanager.config | b64enc | quote }}\n{{- end }}\n{{- range $key, $val := .Values.alertmanager.templateFiles }}\n  {{ $key }}: {{ $val | b64enc | quote }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/service.yaml",
    "content": "{{- if .Values.alertmanager.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-alertmanager\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n    self-monitor: {{ .Values.alertmanager.serviceMonitor.selfMonitor | quote }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.alertmanager.service.labels }}\n{{ toYaml .Values.alertmanager.service.labels | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.service.annotations }}\n  annotations:\n{{ toYaml .Values.alertmanager.service.annotations | indent 4 }}\n{{- end }}\nspec:\n{{- if .Values.alertmanager.service.clusterIP }}\n  clusterIP: {{ .Values.alertmanager.service.clusterIP }}\n{{- end }}\n{{- if .Values.alertmanager.service.externalIPs }}\n  externalIPs:\n{{ toYaml .Values.alertmanager.service.externalIPs | indent 4 }}\n{{- end }}\n{{- if .Values.alertmanager.service.loadBalancerIP }}\n  loadBalancerIP: {{ .Values.alertmanager.service.loadBalancerIP }}\n{{- end }}\n{{- if .Values.alertmanager.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges:\n  {{- range $cidr := .Values.alertmanager.service.loadBalancerSourceRanges }}\n    - {{ $cidr }}\n  {{- end }}\n{{- end }}\n{{- if ne .Values.alertmanager.service.type \"ClusterIP\" }}\n  externalTrafficPolicy: {{ .Values.alertmanager.service.externalTrafficPolicy }}\n{{- end }}\n  ports:\n  - name: {{ .Values.alertmanager.alertmanagerSpec.portName }}\n  {{- if eq .Values.alertmanager.service.type \"NodePort\" }}\n    nodePort: {{ .Values.alertmanager.service.nodePort }}\n  {{- end }}\n    port: {{ .Values.alertmanager.service.port }}\n    targetPort: {{ .Values.alertmanager.service.targetPort }}\n    protocol: TCP\n  - name: reloader-web\n    port: 8080\n    targetPort: reloader-web\n{{- if .Values.alertmanager.service.additionalPorts }}\n{{ toYaml .Values.alertmanager.service.additionalPorts | indent 2 }}\n{{- end }}\n  selector:\n    app.kubernetes.io/name: alertmanager\n    alertmanager: {{ template \"kube-prometheus-stack.alertmanager.crname\" . }}\n{{- if .Values.alertmanager.service.sessionAffinity }}\n  sessionAffinity: {{ .Values.alertmanager.service.sessionAffinity }}\n{{- end }}\n  type: \"{{ .Values.alertmanager.service.type }}\"\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/serviceaccount.yaml",
    "content": "{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ template \"kube-prometheus-stack.alertmanager.serviceAccountName\" . }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n    app.kubernetes.io/name: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n    app.kubernetes.io/component: alertmanager\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.alertmanager.serviceAccount.annotations }}\n  annotations:\n{{ toYaml .Values.alertmanager.serviceAccount.annotations | indent 4 }}\n{{- end }}\nautomountServiceAccountToken: {{ .Values.alertmanager.serviceAccount.automountServiceAccountToken }}\n{{- if .Values.global.imagePullSecrets }}\nimagePullSecrets:\n{{ include \"kube-prometheus-stack.imagePullSecrets\" . | trim | indent 2}}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/servicemonitor.yaml",
    "content": "{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceMonitor.selfMonitor }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-alertmanager\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- with .Values.alertmanager.serviceMonitor.additionalLabels }}\n{{- toYaml . | nindent 4 }}\n{{- end }}\nspec:\n  {{- include \"servicemonitor.scrapeLimits\" .Values.alertmanager.serviceMonitor | nindent 2 }}\n  selector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-alertmanager\n      release: {{ $.Release.Name | quote }}\n      self-monitor: \"true\"\n  namespaceSelector:\n    matchNames:\n      - {{ printf \"%s\" (include \"kube-prometheus-stack.namespace\" .) | quote }}\n  endpoints:\n  - port: {{ .Values.alertmanager.alertmanagerSpec.portName }}\n    enableHttp2: {{ .Values.alertmanager.serviceMonitor.enableHttp2 }}\n    {{- if .Values.alertmanager.serviceMonitor.interval }}\n    interval: {{ .Values.alertmanager.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.alertmanager.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.alertmanager.serviceMonitor.proxyUrl}}\n    {{- end }}\n    {{- if .Values.alertmanager.serviceMonitor.scheme }}\n    scheme: {{ .Values.alertmanager.serviceMonitor.scheme }}\n    {{- end }}\n    {{- if .Values.alertmanager.serviceMonitor.bearerTokenFile }}\n    bearerTokenFile: {{ .Values.alertmanager.serviceMonitor.bearerTokenFile }}\n    {{- end }}\n    {{- if .Values.alertmanager.serviceMonitor.tlsConfig }}\n    tlsConfig: {{ toYaml .Values.alertmanager.serviceMonitor.tlsConfig | nindent 6 }}\n    {{- end }}\n    path: \"{{ trimSuffix \"/\" .Values.alertmanager.alertmanagerSpec.routePrefix }}/metrics\"\n{{- if .Values.alertmanager.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.alertmanager.serviceMonitor.metricRelabelings | indent 6) . }}\n{{- end }}\n{{- if .Values.alertmanager.serviceMonitor.relabelings }}\n    relabelings:\n{{ toYaml .Values.alertmanager.serviceMonitor.relabelings | indent 6 }}\n{{- end }}\n  - port: reloader-web\n    {{- if .Values.alertmanager.serviceMonitor.interval }}\n    interval: {{ .Values.alertmanager.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.alertmanager.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.alertmanager.serviceMonitor.proxyUrl}}\n    {{- end }}\n    {{- if .Values.alertmanager.serviceMonitor.scheme }}\n    scheme: {{ .Values.alertmanager.serviceMonitor.scheme }}\n    {{- end }}\n    {{- if .Values.alertmanager.serviceMonitor.bearerTokenFile }}\n    bearerTokenFile: {{ .Values.alertmanager.serviceMonitor.bearerTokenFile }}\n    {{- end }}\n    {{- if .Values.alertmanager.serviceMonitor.tlsConfig }}\n    tlsConfig: {{ toYaml .Values.alertmanager.serviceMonitor.tlsConfig | nindent 6 }}\n    {{- end }}\n    path: \"/metrics\"\n{{- if .Values.alertmanager.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.alertmanager.serviceMonitor.metricRelabelings | indent 6) . }}\n{{- end }}\n{{- if .Values.alertmanager.serviceMonitor.relabelings }}\n    relabelings:\n{{ toYaml .Values.alertmanager.serviceMonitor.relabelings | indent 6 }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/alertmanager/serviceperreplica.yaml",
    "content": "{{- if and .Values.alertmanager.enabled .Values.alertmanager.servicePerReplica.enabled }}\n{{- $count := .Values.alertmanager.alertmanagerSpec.replicas | int -}}\n{{- $serviceValues := .Values.alertmanager.servicePerReplica -}}\napiVersion: v1\nkind: List\nmetadata:\n  name: {{ include \"kube-prometheus-stack.fullname\" $ }}-alertmanager-serviceperreplica\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\nitems:\n{{- range $i, $e := until $count }}\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: {{ include \"kube-prometheus-stack.fullname\" $ }}-alertmanager-{{ $i }}\n      namespace: {{ template \"kube-prometheus-stack.namespace\" $ }}\n      labels:\n        app: {{ include \"kube-prometheus-stack.name\" $ }}-alertmanager\n{{ include \"kube-prometheus-stack.labels\" $ | indent 8 }}\n      {{- if $serviceValues.annotations }}\n      annotations:\n{{ toYaml $serviceValues.annotations | indent 8 }}\n      {{- end }}\n    spec:\n      {{- if $serviceValues.clusterIP }}\n      clusterIP: {{ $serviceValues.clusterIP }}\n      {{- end }}\n      {{- if $serviceValues.loadBalancerSourceRanges }}\n      loadBalancerSourceRanges:\n      {{- range $cidr := $serviceValues.loadBalancerSourceRanges }}\n        - {{ $cidr }}\n      {{- end }}\n      {{- end }}\n      {{- if ne $serviceValues.type \"ClusterIP\" }}\n      externalTrafficPolicy: {{ $serviceValues.externalTrafficPolicy }}\n      {{- end }}\n      ports:\n        - name: {{ $.Values.alertmanager.alertmanagerSpec.portName }}\n          {{- if eq $serviceValues.type \"NodePort\" }}\n          nodePort: {{ $serviceValues.nodePort }}\n          {{- end }}\n          port: {{ $serviceValues.port }}\n          targetPort: {{ $serviceValues.targetPort }}\n      selector:\n        app.kubernetes.io/name: alertmanager\n        alertmanager: {{ template \"kube-prometheus-stack.alertmanager.crname\" $ }}\n        statefulset.kubernetes.io/pod-name: alertmanager-{{ include \"kube-prometheus-stack.alertmanager.crname\" $ }}-{{ $i }}\n      type: \"{{ $serviceValues.type }}\"\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/core-dns/service.yaml",
    "content": "{{- if and .Values.coreDns.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-coredns\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-coredns\n    jobLabel: coredns\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n  namespace: kube-system\nspec:\n  clusterIP: None\n  ports:\n    - name: http-metrics\n      port: {{ .Values.coreDns.service.port }}\n      protocol: TCP\n      targetPort: {{ .Values.coreDns.service.targetPort }}\n  selector:\n    {{- if .Values.coreDns.service.selector }}\n{{ toYaml .Values.coreDns.service.selector | indent 4 }}\n    {{- else}}\n    k8s-app: kube-dns\n    {{- end}}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/core-dns/servicemonitor.yaml",
    "content": "{{- if and .Values.coreDns.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-coredns\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-coredns\n  {{- with .Values.coreDns.serviceMonitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  jobLabel: jobLabel\n  {{- include \"servicemonitor.scrapeLimits\" .Values.coreDns.serviceMonitor | nindent 2 }}\n  selector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-coredns\n      release: {{ $.Release.Name | quote }}\n  namespaceSelector:\n    matchNames:\n      - \"kube-system\"\n  endpoints:\n  - port: http-metrics\n    {{- if .Values.coreDns.serviceMonitor.interval}}\n    interval: {{ .Values.coreDns.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.coreDns.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.coreDns.serviceMonitor.proxyUrl}}\n    {{- end }}\n    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n{{- if .Values.coreDns.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.coreDns.serviceMonitor.metricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.coreDns.serviceMonitor.relabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.coreDns.serviceMonitor.relabelings | indent 4) . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-api-server/servicemonitor.yaml",
    "content": "{{- if and .Values.kubeApiServer.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-apiserver\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-apiserver\n  {{- with .Values.kubeApiServer.serviceMonitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  {{- include \"servicemonitor.scrapeLimits\" .Values.kubeApiServer.serviceMonitor | nindent 2 }}\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    {{- if .Values.kubeApiServer.serviceMonitor.interval }}\n    interval: {{ .Values.kubeApiServer.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.kubeApiServer.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubeApiServer.serviceMonitor.proxyUrl }}\n    {{- end }}\n    port: https\n    scheme: https\n{{- if .Values.kubeApiServer.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubeApiServer.serviceMonitor.metricRelabelings | indent 6) . }}\n{{- end }}\n{{- if .Values.kubeApiServer.serviceMonitor.relabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubeApiServer.serviceMonitor.relabelings | indent 6) . }}\n{{- end }}\n    tlsConfig:\n      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n      serverName: {{ .Values.kubeApiServer.tlsConfig.serverName }}\n      insecureSkipVerify: {{ .Values.kubeApiServer.tlsConfig.insecureSkipVerify }}\n  jobLabel: {{ .Values.kubeApiServer.serviceMonitor.jobLabel }}\n  namespaceSelector:\n    matchNames:\n    - default\n  selector:\n{{ toYaml .Values.kubeApiServer.serviceMonitor.selector | indent 4 }}\n{{- end}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/endpoints.yaml",
    "content": "{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.endpoints .Values.kubernetesServiceMonitors.enabled }}\napiVersion: v1\nkind: Endpoints\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-controller-manager\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-controller-manager\n    k8s-app: kube-controller-manager\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n  namespace: kube-system\nsubsets:\n  - addresses:\n      {{- range .Values.kubeControllerManager.endpoints }}\n      - ip: {{ . }}\n      {{- end }}\n    ports:\n      - name: http-metrics\n        {{- $kubeControllerManagerDefaultInsecurePort := 10252 }}\n        {{- $kubeControllerManagerDefaultSecurePort := 10257 }}\n        port: {{ include \"kube-prometheus-stack.kubeControllerManager.insecureScrape\" (list . $kubeControllerManagerDefaultInsecurePort $kubeControllerManagerDefaultSecurePort .Values.kubeControllerManager.service.port) }}\n        protocol: TCP\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/service.yaml",
    "content": "{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.service.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-controller-manager\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-controller-manager\n    jobLabel: kube-controller-manager\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n  namespace: kube-system\nspec:\n  clusterIP: None\n  ports:\n    - name: http-metrics\n      {{- $kubeControllerManagerDefaultInsecurePort := 10252 }}\n      {{- $kubeControllerManagerDefaultSecurePort := 10257 }}\n      port: {{ include \"kube-prometheus-stack.kubeControllerManager.insecureScrape\" (list . $kubeControllerManagerDefaultInsecurePort $kubeControllerManagerDefaultSecurePort .Values.kubeControllerManager.service.port) }}\n      protocol: TCP\n      targetPort: {{ include \"kube-prometheus-stack.kubeControllerManager.insecureScrape\" (list . $kubeControllerManagerDefaultInsecurePort $kubeControllerManagerDefaultSecurePort .Values.kubeControllerManager.service.targetPort) }}\n{{- if .Values.kubeControllerManager.endpoints }}{{- else }}\n  selector:\n    {{- if .Values.kubeControllerManager.service.selector }}\n{{ toYaml .Values.kubeControllerManager.service.selector | indent 4 }}\n    {{- else}}\n    component: kube-controller-manager\n    {{- end}}\n{{- end }}\n  type: ClusterIP\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/servicemonitor.yaml",
    "content": "{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.serviceMonitor.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-controller-manager\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-controller-manager\n  {{- with .Values.kubeControllerManager.serviceMonitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  jobLabel: jobLabel\n  {{- include \"servicemonitor.scrapeLimits\" .Values.kubeControllerManager.serviceMonitor | nindent 2 }}\n  selector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-kube-controller-manager\n      release: {{ $.Release.Name | quote }}\n  namespaceSelector:\n    matchNames:\n      - \"kube-system\"\n  endpoints:\n  - port: http-metrics\n    {{- if .Values.kubeControllerManager.serviceMonitor.interval }}\n    interval: {{ .Values.kubeControllerManager.serviceMonitor.interval }}\n    {{- end }}\n    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    {{- if .Values.kubeControllerManager.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubeControllerManager.serviceMonitor.proxyUrl}}\n    {{- end }}\n    {{- if eq (include \"kube-prometheus-stack.kubeControllerManager.insecureScrape\" (list . false true .Values.kubeControllerManager.serviceMonitor.https )) \"true\" }}\n    scheme: https\n    tlsConfig:\n      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n      {{- if eq (include \"kube-prometheus-stack.kubeControllerManager.insecureScrape\" (list . nil true .Values.kubeControllerManager.serviceMonitor.insecureSkipVerify)) \"true\" }}\n      insecureSkipVerify: true\n      {{- end }}\n      {{- if .Values.kubeControllerManager.serviceMonitor.serverName }}\n      serverName: {{ .Values.kubeControllerManager.serviceMonitor.serverName }}\n      {{- end }}\n    {{- end }}\n{{- if .Values.kubeControllerManager.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubeControllerManager.serviceMonitor.metricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubeControllerManager.serviceMonitor.relabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubeControllerManager.serviceMonitor.relabelings | indent 4) . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-dns/service.yaml",
    "content": "{{- if and .Values.kubeDns.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-dns\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-dns\n    jobLabel: kube-dns\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n  namespace: kube-system\nspec:\n  clusterIP: None\n  ports:\n    - name: http-metrics-dnsmasq\n      port: {{ .Values.kubeDns.service.dnsmasq.port }}\n      protocol: TCP\n      targetPort: {{ .Values.kubeDns.service.dnsmasq.targetPort }}\n    - name: http-metrics-skydns\n      port: {{ .Values.kubeDns.service.skydns.port }}\n      protocol: TCP\n      targetPort: {{ .Values.kubeDns.service.skydns.targetPort }}\n  selector:\n    {{- if .Values.kubeDns.service.selector }}\n{{ toYaml .Values.kubeDns.service.selector | indent 4 }}\n    {{- else}}\n    k8s-app: kube-dns\n    {{- end}}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-dns/servicemonitor.yaml",
    "content": "{{- if and .Values.kubeDns.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-dns\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-dns\n  {{- with .Values.kubeDns.serviceMonitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  jobLabel: jobLabel\n  {{- include \"servicemonitor.scrapeLimits\" .Values.kubeDns.serviceMonitor | nindent 2 }}\n  selector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-kube-dns\n      release: {{ $.Release.Name | quote }}\n  namespaceSelector:\n    matchNames:\n      - \"kube-system\"\n  endpoints:\n  - port: http-metrics-dnsmasq\n    {{- if .Values.kubeDns.serviceMonitor.interval }}\n    interval: {{ .Values.kubeDns.serviceMonitor.interval }}\n    {{- end }}\n    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    {{- if .Values.kubeDns.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubeDns.serviceMonitor.proxyUrl}}\n    {{- end }}\n{{- if .Values.kubeDns.serviceMonitor.dnsmasqMetricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubeDns.serviceMonitor.dnsmasqMetricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubeDns.serviceMonitor.dnsmasqRelabelings }}\n    relabelings:\n{{ toYaml .Values.kubeDns.serviceMonitor.dnsmasqRelabelings | indent 4 }}\n{{- end }}\n  - port: http-metrics-skydns\n    {{- if .Values.kubeDns.serviceMonitor.interval }}\n    interval: {{ .Values.kubeDns.serviceMonitor.interval }}\n    {{- end }}\n    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n{{- if .Values.kubeDns.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubeDns.serviceMonitor.metricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubeDns.serviceMonitor.relabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubeDns.serviceMonitor.relabelings | indent 4) . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-etcd/endpoints.yaml",
    "content": "{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.endpoints .Values.kubernetesServiceMonitors.enabled }}\napiVersion: v1\nkind: Endpoints\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-etcd\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-etcd\n    k8s-app: etcd-server\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n  namespace: kube-system\nsubsets:\n  - addresses:\n      {{- range .Values.kubeEtcd.endpoints }}\n      - ip: {{ . }}\n      {{- end }}\n    ports:\n      - name: http-metrics\n        port: {{ .Values.kubeEtcd.service.port }}\n        protocol: TCP\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-etcd/service.yaml",
    "content": "{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.service.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-etcd\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-etcd\n    jobLabel: kube-etcd\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n  namespace: kube-system\nspec:\n  clusterIP: None\n  ports:\n    - name: http-metrics\n      port: {{ .Values.kubeEtcd.service.port }}\n      protocol: TCP\n      targetPort: {{ .Values.kubeEtcd.service.targetPort }}\n{{- if .Values.kubeEtcd.endpoints }}{{- else }}\n  selector:\n    {{- if .Values.kubeEtcd.service.selector }}\n{{ toYaml .Values.kubeEtcd.service.selector | indent 4 }}\n    {{- else}}\n    component: etcd\n    {{- end}}\n{{- end }}\n  type: ClusterIP\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-etcd/servicemonitor.yaml",
    "content": "{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.serviceMonitor.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-etcd\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-etcd\n  {{- with .Values.kubeEtcd.serviceMonitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  jobLabel: jobLabel\n  {{- include \"servicemonitor.scrapeLimits\" .Values.kubeEtcd.serviceMonitor | nindent 4 }}\n  selector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-kube-etcd\n      release: {{ $.Release.Name | quote }}\n  namespaceSelector:\n    matchNames:\n      - \"kube-system\"\n  endpoints:\n  - port: http-metrics\n    {{- if .Values.kubeEtcd.serviceMonitor.interval }}\n    interval: {{ .Values.kubeEtcd.serviceMonitor.interval }}\n    {{- end }}\n    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    {{- if .Values.kubeEtcd.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubeEtcd.serviceMonitor.proxyUrl}}\n    {{- end }}\n    {{- if eq .Values.kubeEtcd.serviceMonitor.scheme \"https\" }}\n    scheme: https\n    tlsConfig:\n      {{- if .Values.kubeEtcd.serviceMonitor.serverName }}\n      serverName: {{ .Values.kubeEtcd.serviceMonitor.serverName }}\n      {{- end }}\n      {{- if .Values.kubeEtcd.serviceMonitor.caFile }}\n      caFile: {{ .Values.kubeEtcd.serviceMonitor.caFile }}\n      {{- end }}\n      {{- if  .Values.kubeEtcd.serviceMonitor.certFile }}\n      certFile: {{ .Values.kubeEtcd.serviceMonitor.certFile }}\n      {{- end }}\n      {{- if .Values.kubeEtcd.serviceMonitor.keyFile }}\n      keyFile: {{ .Values.kubeEtcd.serviceMonitor.keyFile }}\n      {{- end}}\n      insecureSkipVerify: {{ .Values.kubeEtcd.serviceMonitor.insecureSkipVerify }}\n    {{- end }}\n{{- if .Values.kubeEtcd.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubeEtcd.serviceMonitor.metricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubeEtcd.serviceMonitor.relabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubeEtcd.serviceMonitor.relabelings | indent 4) . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-proxy/endpoints.yaml",
    "content": "{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.endpoints .Values.kubernetesServiceMonitors.enabled }}\napiVersion: v1\nkind: Endpoints\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-proxy\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-proxy\n    k8s-app: kube-proxy\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n  namespace: kube-system\nsubsets:\n  - addresses:\n      {{- range .Values.kubeProxy.endpoints }}\n      - ip: {{ . }}\n      {{- end }}\n    ports:\n      - name: http-metrics\n        port: {{ .Values.kubeProxy.service.port }}\n        protocol: TCP\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-proxy/service.yaml",
    "content": "{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.service.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-proxy\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-proxy\n    jobLabel: kube-proxy\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n  namespace: kube-system\nspec:\n  clusterIP: None\n  ports:\n    - name: http-metrics\n      port: {{ .Values.kubeProxy.service.port }}\n      protocol: TCP\n      targetPort: {{ .Values.kubeProxy.service.targetPort }}\n{{- if .Values.kubeProxy.endpoints }}{{- else }}\n  selector:\n    {{- if .Values.kubeProxy.service.selector }}\n{{ toYaml .Values.kubeProxy.service.selector | indent 4 }}\n    {{- else}}\n    k8s-app: kube-proxy\n    {{- end}}\n{{- end }}\n  type: ClusterIP\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-proxy/servicemonitor.yaml",
    "content": "{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.serviceMonitor.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-proxy\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-proxy\n  {{- with .Values.kubeProxy.serviceMonitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  jobLabel: jobLabel\n  {{- include \"servicemonitor.scrapeLimits\" .Values.kubeProxy.serviceMonitor | nindent 2 }}\n  selector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-kube-proxy\n      release: {{ $.Release.Name | quote }}\n  namespaceSelector:\n    matchNames:\n      - \"kube-system\"\n  endpoints:\n  - port: http-metrics\n    {{- if .Values.kubeProxy.serviceMonitor.interval }}\n    interval: {{ .Values.kubeProxy.serviceMonitor.interval }}\n    {{- end }}\n    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    {{- if .Values.kubeProxy.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubeProxy.serviceMonitor.proxyUrl}}\n    {{- end }}\n    {{- if .Values.kubeProxy.serviceMonitor.https }}\n    scheme: https\n    tlsConfig:\n      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n    {{- end}}\n{{- if .Values.kubeProxy.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubeProxy.serviceMonitor.metricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubeProxy.serviceMonitor.relabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubeProxy.serviceMonitor.relabelings | indent 4) . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/endpoints.yaml",
    "content": "{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.endpoints .Values.kubernetesServiceMonitors.enabled }}\napiVersion: v1\nkind: Endpoints\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-scheduler\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-scheduler\n    k8s-app: kube-scheduler\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n  namespace: kube-system\nsubsets:\n  - addresses:\n      {{- range .Values.kubeScheduler.endpoints }}\n      - ip: {{ . }}\n      {{- end }}\n    ports:\n      - name: http-metrics\n        {{- $kubeSchedulerDefaultInsecurePort := 10251 }}\n        {{- $kubeSchedulerDefaultSecurePort := 10259 }}\n        port: {{ include \"kube-prometheus-stack.kubeScheduler.insecureScrape\" (list . $kubeSchedulerDefaultInsecurePort $kubeSchedulerDefaultSecurePort .Values.kubeScheduler.service.port)  }}\n        protocol: TCP\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/service.yaml",
    "content": "{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.service.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-scheduler\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-scheduler\n    jobLabel: kube-scheduler\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n  namespace: kube-system\nspec:\n  clusterIP: None\n  ports:\n    - name: http-metrics\n      {{- $kubeSchedulerDefaultInsecurePort := 10251 }}\n      {{- $kubeSchedulerDefaultSecurePort := 10259 }}\n      port: {{ include \"kube-prometheus-stack.kubeScheduler.insecureScrape\" (list . $kubeSchedulerDefaultInsecurePort $kubeSchedulerDefaultSecurePort .Values.kubeScheduler.service.port)  }}\n      protocol: TCP\n      targetPort: {{ include \"kube-prometheus-stack.kubeScheduler.insecureScrape\" (list . $kubeSchedulerDefaultInsecurePort $kubeSchedulerDefaultSecurePort .Values.kubeScheduler.service.targetPort)  }}\n{{- if .Values.kubeScheduler.endpoints }}{{- else }}\n  selector:\n    {{- if .Values.kubeScheduler.service.selector }}\n{{ toYaml .Values.kubeScheduler.service.selector | indent 4 }}\n    {{- else}}\n    component: kube-scheduler\n    {{- end}}\n{{- end }}\n  type: ClusterIP\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/servicemonitor.yaml",
    "content": "{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.serviceMonitor.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kube-scheduler\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kube-scheduler\n  {{- with .Values.kubeScheduler.serviceMonitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  jobLabel: jobLabel\n  {{- include \"servicemonitor.scrapeLimits\" .Values.kubeScheduler.serviceMonitor | nindent 2 }}\n  selector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-kube-scheduler\n      release: {{ $.Release.Name | quote }}\n  namespaceSelector:\n    matchNames:\n      - \"kube-system\"\n  endpoints:\n  - port: http-metrics\n    {{- if .Values.kubeScheduler.serviceMonitor.interval }}\n    interval: {{ .Values.kubeScheduler.serviceMonitor.interval }}\n    {{- end }}\n    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    {{- if .Values.kubeScheduler.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubeScheduler.serviceMonitor.proxyUrl}}\n    {{- end }}\n    {{- if eq (include \"kube-prometheus-stack.kubeScheduler.insecureScrape\" (list . false true .Values.kubeScheduler.serviceMonitor.https )) \"true\" }}\n    scheme: https\n    tlsConfig:\n      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n      {{- if eq (include \"kube-prometheus-stack.kubeScheduler.insecureScrape\" (list . nil true .Values.kubeScheduler.serviceMonitor.insecureSkipVerify)) \"true\" }}\n      insecureSkipVerify: true\n      {{- end }}\n      {{- if .Values.kubeScheduler.serviceMonitor.serverName }}\n      serverName: {{ .Values.kubeScheduler.serviceMonitor.serverName }}\n      {{- end}}\n    {{- end}}\n{{- if .Values.kubeScheduler.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubeScheduler.serviceMonitor.metricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubeScheduler.serviceMonitor.relabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubeScheduler.serviceMonitor.relabelings | indent 4) . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/exporters/kubelet/servicemonitor.yaml",
    "content": "{{- if and .Values.kubelet.enabled .Values.kubernetesServiceMonitors.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-kubelet\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-kubelet\n  {{- with .Values.kubelet.serviceMonitor.additionalLabels }}\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  {{- include \"servicemonitor.scrapeLimits\" .Values.kubelet.serviceMonitor | nindent 2 }}\n  endpoints:\n  {{- if .Values.kubelet.serviceMonitor.https }}\n  - port: https-metrics\n    scheme: https\n    {{- if .Values.kubelet.serviceMonitor.interval }}\n    interval: {{ .Values.kubelet.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    {{- end }}\n    tlsConfig:\n      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n      insecureSkipVerify: true\n    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n{{- if .Values.kubelet.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.metricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.relabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.relabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.cAdvisor }}\n  - port: https-metrics\n    scheme: https\n    path: /metrics/cadvisor\n    {{- if .Values.kubelet.serviceMonitor.interval }}\n    interval: {{ .Values.kubelet.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    {{- end }}\n    honorLabels: true\n    tlsConfig:\n      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n      insecureSkipVerify: true\n    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n{{- if .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.cAdvisorRelabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.cAdvisorRelabelings | indent 4) . }}\n{{- end }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.probes }}\n  - port: https-metrics\n    scheme: https\n    path: /metrics/probes\n    {{- if .Values.kubelet.serviceMonitor.interval }}\n    interval: {{ .Values.kubelet.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    {{- end }}\n    honorLabels: true\n    tlsConfig:\n      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n      insecureSkipVerify: true\n    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n{{- if .Values.kubelet.serviceMonitor.probesMetricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.probesMetricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.probesRelabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.probesRelabelings | indent 4) . }}\n{{- end }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.resource }}\n  - port: https-metrics\n    scheme: https\n    path: {{ .Values.kubelet.serviceMonitor.resourcePath }}\n    {{- if .Values.kubelet.serviceMonitor.interval }}\n    interval: {{ .Values.kubelet.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    {{- end }}\n    honorLabels: true\n    tlsConfig:\n      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n      insecureSkipVerify: true\n    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n{{- if .Values.kubelet.serviceMonitor.resourceMetricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceMetricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.resourceRelabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceRelabelings | indent 4) . }}\n{{- end }}\n{{- end }}\n  {{- else }}\n  - port: http-metrics\n    {{- if .Values.kubelet.serviceMonitor.interval }}\n    interval: {{ .Values.kubelet.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    {{- end }}\n    honorLabels: true\n{{- if .Values.kubelet.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.metricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.relabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.relabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.cAdvisor }}\n  - port: http-metrics\n    path: /metrics/cadvisor\n    {{- if .Values.kubelet.serviceMonitor.interval }}\n    interval: {{ .Values.kubelet.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    {{- end }}\n    honorLabels: true\n{{- if .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.cAdvisorRelabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.cAdvisorRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.probes }}\n  - port: http-metrics\n    path: /metrics/probes\n    {{- if .Values.kubelet.serviceMonitor.interval }}\n    interval: {{ .Values.kubelet.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    {{- end }}\n    honorLabels: true\n{{- if .Values.kubelet.serviceMonitor.probesMetricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.probesMetricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.probesRelabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.probesRelabelings | indent 4) . }}\n{{- end }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.resource }}\n  - port: http-metrics\n    path: {{ .Values.kubelet.serviceMonitor.resourcePath }}\n    {{- if .Values.kubelet.serviceMonitor.interval }}\n    interval: {{ .Values.kubelet.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }}\n    {{- end }}\n    {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }}\n    {{- end }}\n    honorLabels: true\n{{- if .Values.kubelet.serviceMonitor.resourceMetricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceMetricRelabelings | indent 4) . }}\n{{- end }}\n{{- if .Values.kubelet.serviceMonitor.resourceRelabelings }}\n    relabelings:\n{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceRelabelings | indent 4) . }}\n{{- end }}\n{{- end }}\n{{- end }}\n  {{- end }}\n  jobLabel: k8s-app\n  namespaceSelector:\n    matchNames:\n    - {{ .Values.kubelet.namespace }}\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kubelet\n      k8s-app: kubelet\n{{- end}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/extra-objects.yaml",
    "content": "{{ range .Values.extraManifests }}\n---\n{{ tpl (toYaml .) $ }}\n{{ end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/configmap-dashboards.yaml",
    "content": "{{- if or (and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled) .Values.grafana.forceDeployDashboards }}\n{{- $files := .Files.Glob \"dashboards-1.14/*.json\" }}\n{{- if $files }}\napiVersion: v1\nkind: ConfigMapList\nitems:\n{{- range $path, $fileContents := $files }}\n{{- $dashboardName := regexReplaceAll \"(^.*/)(.*)\\\\.json$\" $path \"${2}\" }}\n- apiVersion: v1\n  kind: ConfigMap\n  metadata:\n    name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) $dashboardName | trunc 63 | trimSuffix \"-\" }}\n    namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" $ }}\n    labels:\n      {{- if $.Values.grafana.sidecar.dashboards.label }}\n      {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n      {{- end }}\n      app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 6 }}\n  data:\n    {{ $dashboardName }}.json: {{ $.Files.Get $path | toJson }}\n{{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/configmaps-datasources.yaml",
    "content": "{{- if or (and .Values.grafana.enabled .Values.grafana.sidecar.datasources.enabled) .Values.grafana.forceDeployDatasources }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-grafana-datasource\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n{{- if .Values.grafana.sidecar.datasources.annotations }}\n  annotations:\n    {{- toYaml .Values.grafana.sidecar.datasources.annotations | nindent 4 }}\n{{- end }}\n  labels:\n    {{ $.Values.grafana.sidecar.datasources.label }}: {{ $.Values.grafana.sidecar.datasources.labelValue | quote }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  datasource.yaml: |-\n    apiVersion: 1\n{{- if .Values.grafana.deleteDatasources }}\n    deleteDatasources:\n{{ tpl (toYaml .Values.grafana.deleteDatasources | indent 6) . }}\n{{- end }}\n    datasources:\n{{- $scrapeInterval := .Values.grafana.sidecar.datasources.defaultDatasourceScrapeInterval | default .Values.prometheus.prometheusSpec.scrapeInterval | default \"30s\" }}\n{{- if .Values.grafana.sidecar.datasources.defaultDatasourceEnabled }}\n    - name: Prometheus\n      type: prometheus\n      uid: {{ .Values.grafana.sidecar.datasources.uid }}\n      {{- if .Values.grafana.sidecar.datasources.url }}\n      url: {{ .Values.grafana.sidecar.datasources.url }}\n      {{- else }}\n      url: http://{{ template \"kube-prometheus-stack.fullname\" . }}-prometheus.{{ template \"kube-prometheus-stack.namespace\" . }}:{{ .Values.prometheus.service.port }}/{{ trimPrefix \"/\" .Values.prometheus.prometheusSpec.routePrefix }}\n      {{- end }}\n      access: proxy\n      isDefault: {{ .Values.grafana.sidecar.datasources.isDefaultDatasource }}\n      jsonData:\n        httpMethod: {{ .Values.grafana.sidecar.datasources.httpMethod }}\n        timeInterval: {{ $scrapeInterval }}\n        {{- if .Values.grafana.sidecar.datasources.timeout }}\n        timeout: {{ .Values.grafana.sidecar.datasources.timeout }}\n        {{- end }}\n{{- if .Values.grafana.sidecar.datasources.exemplarTraceIdDestinations }}\n        exemplarTraceIdDestinations:\n        - datasourceUid: {{ .Values.grafana.sidecar.datasources.exemplarTraceIdDestinations.datasourceUid }}\n          name: {{ .Values.grafana.sidecar.datasources.exemplarTraceIdDestinations.traceIdLabelName }}\n{{- end }}\n{{- if .Values.grafana.sidecar.datasources.createPrometheusReplicasDatasources }}\n{{- range until (int .Values.prometheus.prometheusSpec.replicas) }}\n    - name: Prometheus-{{ . }}\n      type: prometheus\n      uid: {{ $.Values.grafana.sidecar.datasources.uid }}-replica-{{ . }}\n      url: http://prometheus-{{ template \"kube-prometheus-stack.prometheus.crname\" $ }}-{{ . }}.prometheus-operated:9090/{{ trimPrefix \"/\" $.Values.prometheus.prometheusSpec.routePrefix }}\n      access: proxy\n      isDefault: false\n      jsonData:\n        timeInterval: {{ $scrapeInterval }}\n{{- if $.Values.grafana.sidecar.datasources.exemplarTraceIdDestinations }}\n        exemplarTraceIdDestinations:\n        - datasourceUid: {{ .Values.grafana.sidecar.datasources.exemplarTraceIdDestinations.datasourceUid }}\n          name: {{ .Values.grafana.sidecar.datasources.exemplarTraceIdDestinations.traceIdLabelName }}\n{{- end }}\n{{- end }}\n{{- end }}\n{{- if .Values.grafana.sidecar.datasources.alertmanager.enabled }}\n    - name: Alertmanager\n      type: alertmanager\n      uid: {{ .Values.grafana.sidecar.datasources.alertmanager.uid }}\n      {{- if .Values.grafana.sidecar.datasources.alertmanager.url }}\n      url: {{ .Values.grafana.sidecar.datasources.alertmanager.url }}\n      {{- else }}\n      url: http://{{ template \"kube-prometheus-stack.fullname\" . }}-alertmanager.{{ template \"kube-prometheus-stack.namespace\" . }}:{{ .Values.alertmanager.service.port }}/{{ trimPrefix \"/\" .Values.alertmanager.alertmanagerSpec.routePrefix }}\n      {{- end }}\n      access: proxy\n      jsonData:\n        handleGrafanaManagedAlerts: {{ .Values.grafana.sidecar.datasources.alertmanager.handleGrafanaManagedAlerts }}\n        implementation: {{ .Values.grafana.sidecar.datasources.alertmanager.implementation }}\n{{- end }}\n{{- end }}\n{{- if .Values.grafana.additionalDataSources }}\n{{ tpl (toYaml .Values.grafana.additionalDataSources | indent 4) . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/alertmanager-overview.yaml",
    "content": "{{- /*\nGenerated from 'alertmanager-overview' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"alertmanager-overview\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  alertmanager-overview.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":1,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"30s\",\"rows\":[{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"current set of alerts stored in the Alertmanager\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":2,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(alertmanager_alerts{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\"}) by (namespace,service,instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Alerts\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"none\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"none\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"rate of successful and invalid alerts received by the Alertmanager\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":3,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(alertmanager_alerts_received_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\"}[$__rate_interval])) by (namespace,service,instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Received\",\"refId\":\"A\"},{\"expr\":\"sum(rate(alertmanager_alerts_invalid_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\"}[$__rate_interval])) by (namespace,service,instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Invalid\",\"refId\":\"B\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Alerts receive rate\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Alerts\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"rate of successful and invalid notifications sent by the Alertmanager\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":4,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":\"integration\",\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(alertmanager_notifications_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (integration,namespace,service,instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Total\",\"refId\":\"A\"},{\"expr\":\"sum(rate(alertmanager_notifications_failed_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (integration,namespace,service,instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Failed\",\"refId\":\"B\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"$integration: Notifications Send Rate\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"latency of notifications sent by the Alertmanager\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":5,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":\"integration\",\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99,\\n  sum(rate(alertmanager_notification_latency_seconds_bucket{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (le,namespace,service,instance)\\n) \\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} 99th Percentile\",\"refId\":\"A\"},{\"expr\":\"histogram_quantile(0.50,\\n  sum(rate(alertmanager_notification_latency_seconds_bucket{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (le,namespace,service,instance)\\n) \\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Median\",\"refId\":\"B\"},{\"expr\":\"sum(rate(alertmanager_notification_latency_seconds_sum{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (namespace,service,instance)\\n/\\nsum(rate(alertmanager_notification_latency_seconds_count{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (namespace,service,instance)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Average\",\"refId\":\"C\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"$integration: Notification Duration\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Notifications\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"alertmanager-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"Prometheus\",\"value\":\"Prometheus\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":\"namespace\",\"multi\":false,\"name\":\"namespace\",\"options\":[],\"query\":\"label_values(alertmanager_alerts, namespace)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":\"service\",\"multi\":false,\"name\":\"service\",\"options\":[],\"query\":\"label_values(alertmanager_alerts, service)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{\"text\":\"all\",\"value\":\"$__all\"},\"datasource\":\"$datasource\",\"hide\":2,\"includeAll\":true,\"label\":null,\"multi\":false,\"name\":\"integration\",\"options\":[],\"query\":\"label_values(alertmanager_notifications_total{integration=~\\\".*\\\"}, integration)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Alertmanager / Overview\",\"uid\":\"alertmanager-overview\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/apiserver.yaml",
    "content": "{{- /*\nGenerated from 'apiserver' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.kubeApiServer.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"apiserver\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  apiserver.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"panels\":[{\"content\":\"The SLO (service level objective) and other metrics displayed on this dashboard are for informational purposes only.\",\"datasource\":null,\"description\":\"The SLO (service level objective) and other metrics displayed on this dashboard are for informational purposes only.\",\"gridPos\":{\"h\":2,\"w\":24,\"x\":0,\"y\":0},\"id\":2,\"mode\":\"markdown\",\"span\":12,\"title\":\"Notice\",\"type\":\"text\"}],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"#299c46\",\"rgba(237, 129, 40, 0.89)\",\"#d44a3a\"],\"datasource\":\"$datasource\",\"decimals\":3,\"description\":\"How many percent of requests (both read and write) in 30 days have been answered successfully and fast enough?\",\"format\":\"percentunit\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":false,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"gridPos\":{},\"id\":3,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"rightSide\":true},\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"nullPointMode\":\"connected\",\"nullText\":null,\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":4,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"tableColumn\":\"\",\"targets\":[{\"expr\":\"apiserver_request:availability30d{verb=\\\"all\\\", cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\"}],\"thresholds\":\"\",\"title\":\"Availability (30d) > 99.000%\",\"tooltip\":{\"shared\":false},\"type\":\"singlestat\",\"valueFontSize\":\"80%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"avg\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"decimals\":3,\"description\":\"How much error budget is left looking at our 0.990% availability guarantees?\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":4,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":8,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"100 * (apiserver_request:availability30d{verb=\\\"all\\\", cluster=\\\"$cluster\\\"} - 0.990000)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"errorbudget\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"ErrorBudget (30d) > 99.000%\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"decimals\":3,\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"decimals\":3,\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"#299c46\",\"rgba(237, 129, 40, 0.89)\",\"#d44a3a\"],\"datasource\":\"$datasource\",\"decimals\":3,\"description\":\"How many percent of read requests (LIST,GET) in 30 days have been answered successfully and fast enough?\",\"format\":\"percentunit\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":false,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"gridPos\":{},\"id\":5,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"rightSide\":true},\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"nullPointMode\":\"connected\",\"nullText\":null,\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":3,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"tableColumn\":\"\",\"targets\":[{\"expr\":\"apiserver_request:availability30d{verb=\\\"read\\\", cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\"}],\"thresholds\":\"\",\"title\":\"Read Availability (30d)\",\"tooltip\":{\"shared\":false},\"type\":\"singlestat\",\"valueFontSize\":\"80%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"avg\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"How many read requests (LIST,GET) per second do the apiservers get by code?\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":6,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[{\"alias\":\"/2../i\",\"color\":\"#56A64B\"},{\"alias\":\"/3../i\",\"color\":\"#F2CC0C\"},{\"alias\":\"/4../i\",\"color\":\"#3274D9\"},{\"alias\":\"/5../i\",\"color\":\"#E02F44\"}],\"spaceLength\":10,\"span\":3,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum by (code) (code_resource:apiserver_request_total:rate5m{verb=\\\"read\\\", cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{ code }}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Read SLI - Requests\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"reqps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"reqps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"How many percent of read requests (LIST,GET) per second are returned with errors (5xx)?\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":7,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"read\\\",code=~\\\"5..\\\", cluster=\\\"$cluster\\\"}) / sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"read\\\", cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{ resource }}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Read SLI - Errors\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"How many seconds is the 99th percentile for reading (LIST|GET) a given resource?\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":8,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"cluster_quantile:apiserver_request_slo_duration_seconds:histogram_quantile{verb=\\\"read\\\", cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{ resource }}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Read SLI - Duration\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"#299c46\",\"rgba(237, 129, 40, 0.89)\",\"#d44a3a\"],\"datasource\":\"$datasource\",\"decimals\":3,\"description\":\"How many percent of write requests (POST|PUT|PATCH|DELETE) in 30 days have been answered successfully and fast enough?\",\"format\":\"percentunit\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":false,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"gridPos\":{},\"id\":9,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"rightSide\":true},\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"nullPointMode\":\"connected\",\"nullText\":null,\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":3,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"tableColumn\":\"\",\"targets\":[{\"expr\":\"apiserver_request:availability30d{verb=\\\"write\\\", cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\"}],\"thresholds\":\"\",\"title\":\"Write Availability (30d)\",\"tooltip\":{\"shared\":false},\"type\":\"singlestat\",\"valueFontSize\":\"80%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"avg\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"How many write requests (POST|PUT|PATCH|DELETE) per second do the apiservers get by code?\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":10,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[{\"alias\":\"/2../i\",\"color\":\"#56A64B\"},{\"alias\":\"/3../i\",\"color\":\"#F2CC0C\"},{\"alias\":\"/4../i\",\"color\":\"#3274D9\"},{\"alias\":\"/5../i\",\"color\":\"#E02F44\"}],\"spaceLength\":10,\"span\":3,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum by (code) (code_resource:apiserver_request_total:rate5m{verb=\\\"write\\\", cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{ code }}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Write SLI - Requests\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"reqps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"reqps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"How many percent of write requests (POST|PUT|PATCH|DELETE) per second are returned with errors (5xx)?\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":11,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"write\\\",code=~\\\"5..\\\", cluster=\\\"$cluster\\\"}) / sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"write\\\", cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{ resource }}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Write SLI - Errors\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"How many seconds is the 99th percentile for writing (POST|PUT|PATCH|DELETE) a given resource?\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":12,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"cluster_quantile:apiserver_request_slo_duration_seconds:histogram_quantile{verb=\\\"write\\\", cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{ resource }}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Write SLI - Duration\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":13,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(workqueue_adds_total{job=\\\"apiserver\\\", instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (instance, name)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{name}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Work Queue Add Rate\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":14,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(workqueue_depth{job=\\\"apiserver\\\", instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (instance, name)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{name}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Work Queue Depth\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":15,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{job=\\\"apiserver\\\", instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (instance, name, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{name}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Work Queue Latency\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":16,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"process_resident_memory_bytes{job=\\\"apiserver\\\",instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":17,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(process_cpu_seconds_total{job=\\\"apiserver\\\",instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU usage\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":18,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"go_goroutines{job=\\\"apiserver\\\",instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Goroutines\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":\"cluster\",\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"apiserver\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":true,\"label\":null,\"multi\":false,\"name\":\"instance\",\"options\":[],\"query\":\"label_values(up{job=\\\"apiserver\\\", cluster=\\\"$cluster\\\"}, instance)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / API server\",\"uid\":\"09ec8aa1e996d6ffcd6817bbaff4db1b\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/cluster-total.yaml",
    "content": "{{- /*\nGenerated from 'cluster-total' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"cluster-total\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  cluster-total.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[{\"builtIn\":1,\"datasource\":\"-- Grafana --\",\"enable\":true,\"hide\":true,\"iconColor\":\"rgba(0, 211, 255, 1)\",\"name\":\"Annotations & Alerts\",\"type\":\"dashboard\"}]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"panels\":[{\"collapse\":false,\"collapsed\":false,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":0},\"id\":2,\"panels\":[],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Current Bandwidth\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"aliasColors\":{},\"bars\":true,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":1},\"id\":3,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"sort\":\"current\",\"sortDesc\":true,\"total\":false,\"values\":true},\"lines\":false,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{namespace}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Rate of Bytes Received\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"series\",\"name\":null,\"show\":false,\"values\":[\"current\"]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":true,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":1},\"id\":4,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"sort\":\"current\",\"sortDesc\":true,\"total\":false,\"values\":true},\"lines\":false,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{namespace}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Rate of Bytes Transmitted\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"series\",\"name\":null,\"show\":false,\"values\":[\"current\"]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"columns\":[{\"text\":\"Time\",\"value\":\"Time\"},{\"text\":\"Value #A\",\"value\":\"Value #A\"},{\"text\":\"Value #B\",\"value\":\"Value #B\"},{\"text\":\"Value #C\",\"value\":\"Value #C\"},{\"text\":\"Value #D\",\"value\":\"Value #D\"},{\"text\":\"Value #E\",\"value\":\"Value #E\"},{\"text\":\"Value #F\",\"value\":\"Value #F\"},{\"text\":\"Value #G\",\"value\":\"Value #G\"},{\"text\":\"Value #H\",\"value\":\"Value #H\"},{\"text\":\"namespace\",\"value\":\"namespace\"}],\"datasource\":\"$datasource\",\"fill\":1,\"fontSize\":\"90%\",\"gridPos\":{\"h\":9,\"w\":24,\"x\":0,\"y\":10},\"id\":5,\"lines\":true,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null as zero\",\"renderer\":\"flot\",\"scroll\":true,\"showHeader\":true,\"sort\":{\"col\":0,\"desc\":false},\"spaceLength\":10,\"span\":24,\"styles\":[{\"alias\":\"Time\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Time\",\"thresholds\":[],\"type\":\"hidden\",\"unit\":\"short\"},{\"alias\":\"Current Bandwidth Received\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Current Bandwidth Transmitted\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Average Bandwidth Received\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Average Bandwidth Transmitted\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Rate of Received Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Received Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #G\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #H\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Namespace\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"d/8b7a8b326d7a6f1f04244066368c67af/kubernetes-networking-namespace-pods?orgId=1&refresh=30s&var-namespace=$__cell\",\"pattern\":\"namespace\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sort_desc(sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10},{\"expr\":\"sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"G\",\"step\":10},{\"expr\":\"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"H\",\"step\":10}],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Status\",\"type\":\"table\"},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":10},\"id\":6,\"panels\":[{\"aliasColors\":{},\"bars\":true,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":11},\"id\":7,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"sort\":\"current\",\"sortDesc\":true,\"total\":false,\"values\":true},\"lines\":false,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{namespace}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Rate of Bytes Received\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"series\",\"name\":null,\"show\":false,\"values\":[\"current\"]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":true,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":11},\"id\":8,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"sort\":\"current\",\"sortDesc\":true,\"total\":false,\"values\":true},\"lines\":false,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{namespace}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Rate of Bytes Transmitted\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"series\",\"name\":null,\"show\":false,\"values\":[\"current\"]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Average Bandwidth\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":11},\"id\":9,\"panels\":[],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Bandwidth History\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":24,\"x\":0,\"y\":12},\"id\":10,\"legend\":{\"alignAsTable\":true,\"avg\":true,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":true,\"min\":true,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{namespace}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Receive Bandwidth\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":24,\"x\":0,\"y\":21},\"id\":11,\"legend\":{\"alignAsTable\":true,\"avg\":true,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":true,\"min\":true,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{namespace}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Transmit Bandwidth\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":30},\"id\":12,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":24,\"x\":0,\"y\":31},\"id\":13,\"legend\":{\"alignAsTable\":true,\"avg\":true,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":true,\"min\":true,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{namespace}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":24,\"x\":0,\"y\":40},\"id\":14,\"legend\":{\"alignAsTable\":true,\"avg\":true,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":true,\"min\":true,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{namespace}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Packets\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":31},\"id\":15,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":24,\"x\":0,\"y\":50},\"id\":16,\"legend\":{\"alignAsTable\":true,\"avg\":true,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":true,\"min\":true,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{namespace}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets Dropped\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":24,\"x\":0,\"y\":59},\"id\":17,\"legend\":{\"alignAsTable\":true,\"avg\":true,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":true,\"min\":true,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{namespace}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets Dropped\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":24,\"x\":0,\"y\":59},\"id\":18,\"legend\":{\"alignAsTable\":true,\"avg\":true,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":true,\"min\":true,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":2,\"links\":[{\"targetBlank\":true,\"title\":\"What is TCP Retransmit?\",\"url\":\"https://accedian.com/enterprises/blog/network-packet-loss-retransmissions-and-duplicate-acknowledgements/\"}],\"minSpan\":24,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(rate(node_netstat_Tcp_RetransSegs{cluster=\\\"$cluster\\\"}[$interval:$resolution]) / rate(node_netstat_Tcp_OutSegs{cluster=\\\"$cluster\\\"}[$interval:$resolution])) by (instance))\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of TCP Retransmits out of all sent segments\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":24,\"x\":0,\"y\":59},\"id\":19,\"legend\":{\"alignAsTable\":true,\"avg\":true,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":true,\"min\":true,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":2,\"links\":[{\"targetBlank\":true,\"title\":\"Why monitor SYN retransmits?\",\"url\":\"https://github.com/prometheus/node_exporter/issues/1023#issuecomment-408128365\"}],\"minSpan\":24,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(rate(node_netstat_TcpExt_TCPSynRetrans{cluster=\\\"$cluster\\\"}[$interval:$resolution]) / rate(node_netstat_Tcp_RetransSegs{cluster=\\\"$cluster\\\"}[$interval:$resolution])) by (instance))\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of TCP SYN Retransmits out of all retransmits\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Errors\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"refresh\":\"10s\",\"rows\":[],\"schemaVersion\":18,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"5m\",\"value\":\"5m\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"resolution\",\"options\":[{\"selected\":false,\"text\":\"30s\",\"value\":\"30s\"},{\"selected\":true,\"text\":\"5m\",\"value\":\"5m\"},{\"selected\":false,\"text\":\"1h\",\"value\":\"1h\"}],\"query\":\"30s,5m,1h\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"interval\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"5m\",\"value\":\"5m\"},\"datasource\":\"$datasource\",\"hide\":2,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"interval\",\"options\":[{\"selected\":true,\"text\":\"4h\",\"value\":\"4h\"}],\"query\":\"4h\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"interval\",\"useTags\":false},{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Networking / Cluster\",\"uid\":\"ff635a025bcfea7bc3dd4f508990a3e9\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/controller-manager.yaml",
    "content": "{{- /*\nGenerated from 'controller-manager' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.kubeControllerManager.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"controller-manager\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  controller-manager.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"#299c46\",\"rgba(237, 129, 40, 0.89)\",\"#d44a3a\"],\"datasource\":\"$datasource\",\"format\":\"none\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":false,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"gridPos\":{},\"id\":2,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"rightSide\":true},\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"nullPointMode\":\"connected\",\"nullText\":null,\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":2,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"tableColumn\":\"\",\"targets\":[{\"expr\":\"sum(up{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\"}],\"thresholds\":\"\",\"title\":\"Up\",\"tooltip\":{\"shared\":false},\"type\":\"singlestat\",\"valueFontSize\":\"80%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"min\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":3,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(workqueue_adds_total{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, name)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}} {{instance}} {{name}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Work Queue Add Rate\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":4,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(workqueue_depth{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, name)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}} {{instance}} {{name}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Work Queue Depth\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":5,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, name, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}} {{instance}} {{name}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Work Queue Latency\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":6,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"2xx\",\"refId\":\"A\"},{\"expr\":\"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"3xx\",\"refId\":\"B\"},{\"expr\":\"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"4xx\",\"refId\":\"C\"},{\"expr\":\"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"5xx\",\"refId\":\"D\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Kube API Request Rate\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":7,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":8,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\", verb=\\\"POST\\\"}[$__rate_interval])) by (verb, url, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{verb}} {{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Post Request Latency 99th Quantile\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":8,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\", verb=\\\"GET\\\"}[$__rate_interval])) by (verb, url, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{verb}} {{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Get Request Latency 99th Quantile\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":9,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"process_resident_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\",instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":10,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\",instance=~\\\"$instance\\\"}[$__rate_interval])\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU usage\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":11,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"go_goroutines{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\",instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Goroutines\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":\"cluster\",\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kube-controller-manager\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":true,\"label\":null,\"multi\":false,\"name\":\"instance\",\"options\":[],\"query\":\"label_values(up{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\"}, instance)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Controller Manager\",\"uid\":\"72e0e05bef5099e5f049b05fdc429ed4\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/etcd.yaml",
    "content": "{{- /*\nGenerated from 'etcd' from https://raw.githubusercontent.com/etcd-io/etcd/main/contrib/mixin/mixin.libsonnet\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.kubeEtcd.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"etcd\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  etcd.json: |-\n    {{`{\"annotations\":{\"list\":[]},\"description\":\"etcd sample Grafana dashboard with Prometheus\",\"editable\":true,\"gnetId\":null,\"hideControls\":false,\"links\":[],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"editable\":true,\"height\":\"250px\",\"panels\":[{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"rgba(245, 54, 54, 0.9)\",\"rgba(237, 129, 40, 0.89)\",\"rgba(50, 172, 45, 0.97)\"],\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"format\":\"none\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":false,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"id\":28,\"interval\":null,\"isNew\":true,\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"nullPointMode\":\"connected\",\"nullText\":null,\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":3,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"targets\":[{\"expr\":\"sum(etcd_server_has_leader{job=\\\"$cluster\\\"})\",\"intervalFactor\":2,\"legendFormat\":\"\",\"metric\":\"etcd_server_has_leader\",\"refId\":\"A\",\"step\":20}],\"thresholds\":\"\",\"title\":\"Up\",\"type\":\"singlestat\",\"valueFontSize\":\"200%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"avg\"},{\"aliasColors\":{},\"bars\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fill\":0,\"id\":23,\"isNew\":true,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":false,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"span\":5,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(grpc_server_started_total{job=\\\"$cluster\\\",grpc_type=\\\"unary\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"RPC Rate\",\"metric\":\"grpc_server_started_total\",\"refId\":\"A\",\"step\":2},{\"expr\":\"sum(rate(grpc_server_handled_total{job=\\\"$cluster\\\",grpc_type=\\\"unary\\\",grpc_code=~\\\"Unknown|FailedPrecondition|ResourceExhausted|Internal|Unavailable|DataLoss|DeadlineExceeded\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"RPC Failed Rate\",\"metric\":\"grpc_server_handled_total\",\"refId\":\"B\",\"step\":2}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"RPC Rate\",\"tooltip\":{\"msResolution\":false,\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fill\":0,\"id\":41,\"isNew\":true,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":false,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"span\":4,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(grpc_server_started_total{job=\\\"$cluster\\\",grpc_service=\\\"etcdserverpb.Watch\\\",grpc_type=\\\"bidi_stream\\\"}) - sum(grpc_server_handled_total{job=\\\"$cluster\\\",grpc_service=\\\"etcdserverpb.Watch\\\",grpc_type=\\\"bidi_stream\\\"})\",\"intervalFactor\":2,\"legendFormat\":\"Watch Streams\",\"metric\":\"grpc_server_handled_total\",\"refId\":\"A\",\"step\":4},{\"expr\":\"sum(grpc_server_started_total{job=\\\"$cluster\\\",grpc_service=\\\"etcdserverpb.Lease\\\",grpc_type=\\\"bidi_stream\\\"}) - sum(grpc_server_handled_total{job=\\\"$cluster\\\",grpc_service=\\\"etcdserverpb.Lease\\\",grpc_type=\\\"bidi_stream\\\"})\",\"intervalFactor\":2,\"legendFormat\":\"Lease Streams\",\"metric\":\"grpc_server_handled_total\",\"refId\":\"B\",\"step\":4}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Active Streams\",\"tooltip\":{\"msResolution\":false,\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":\"\",\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"showTitle\":false,\"title\":\"Row\"},{\"collapse\":false,\"editable\":true,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"datasource\":\"$datasource\",\"decimals\":null,\"editable\":true,\"error\":false,\"fill\":0,\"grid\":{},\"id\":1,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":false,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"etcd_mvcc_db_total_size_in_bytes{job=\\\"$cluster\\\"}\",\"hide\":false,\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} DB Size\",\"metric\":\"\",\"refId\":\"A\",\"step\":4}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"DB Size\",\"tooltip\":{\"msResolution\":false,\"shared\":true,\"sort\":0,\"value_type\":\"cumulative\"},\"type\":\"graph\",\"xaxis\":{\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fill\":0,\"grid\":{},\"id\":3,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":false,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"percentage\":false,\"pointradius\":1,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"span\":4,\"stack\":false,\"steppedLine\":true,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket{job=\\\"$cluster\\\"}[$__rate_interval])) by (instance, le))\",\"hide\":false,\"intervalFactor\":2,\"legendFormat\":\"{{instance}} WAL fsync\",\"metric\":\"etcd_disk_wal_fsync_duration_seconds_bucket\",\"refId\":\"A\",\"step\":4},{\"expr\":\"histogram_quantile(0.99, sum(rate(etcd_disk_backend_commit_duration_seconds_bucket{job=\\\"$cluster\\\"}[$__rate_interval])) by (instance, le))\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} DB fsync\",\"metric\":\"etcd_disk_backend_commit_duration_seconds_bucket\",\"refId\":\"B\",\"step\":4}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk Sync Duration\",\"tooltip\":{\"msResolution\":false,\"shared\":true,\"sort\":0,\"value_type\":\"cumulative\"},\"type\":\"graph\",\"xaxis\":{\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fill\":0,\"id\":29,\"isNew\":true,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":false,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"process_resident_memory_bytes{job=\\\"$cluster\\\"}\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Resident Memory\",\"metric\":\"process_resident_memory_bytes\",\"refId\":\"A\",\"step\":4}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory\",\"tooltip\":{\"msResolution\":false,\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"title\":\"New row\"},{\"collapse\":false,\"editable\":true,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fill\":5,\"id\":22,\"isNew\":true,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":false,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"span\":3,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(etcd_network_client_grpc_received_bytes_total{job=\\\"$cluster\\\"}[$__rate_interval])\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Client Traffic In\",\"metric\":\"etcd_network_client_grpc_received_bytes_total\",\"refId\":\"A\",\"step\":4}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Client Traffic In\",\"tooltip\":{\"msResolution\":false,\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fill\":5,\"id\":21,\"isNew\":true,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":false,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"span\":3,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(etcd_network_client_grpc_sent_bytes_total{job=\\\"$cluster\\\"}[$__rate_interval])\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Client Traffic Out\",\"metric\":\"etcd_network_client_grpc_sent_bytes_total\",\"refId\":\"A\",\"step\":4}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Client Traffic Out\",\"tooltip\":{\"msResolution\":false,\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fill\":0,\"id\":20,\"isNew\":true,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":false,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(etcd_network_peer_received_bytes_total{job=\\\"$cluster\\\"}[$__rate_interval])) by (instance)\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Peer Traffic In\",\"metric\":\"etcd_network_peer_received_bytes_total\",\"refId\":\"A\",\"step\":4}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Peer Traffic In\",\"tooltip\":{\"msResolution\":false,\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"datasource\":\"$datasource\",\"decimals\":null,\"editable\":true,\"error\":false,\"fill\":0,\"grid\":{},\"id\":16,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":false,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(etcd_network_peer_sent_bytes_total{job=\\\"$cluster\\\"}[$__rate_interval])) by (instance)\",\"hide\":false,\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Peer Traffic Out\",\"metric\":\"etcd_network_peer_sent_bytes_total\",\"refId\":\"A\",\"step\":4}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Peer Traffic Out\",\"tooltip\":{\"msResolution\":false,\"shared\":true,\"sort\":0,\"value_type\":\"cumulative\"},\"type\":\"graph\",\"xaxis\":{\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"title\":\"New row\"},{\"collapse\":false,\"editable\":true,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fill\":0,\"id\":40,\"isNew\":true,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":false,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(etcd_server_proposals_failed_total{job=\\\"$cluster\\\"}[$__rate_interval]))\",\"intervalFactor\":2,\"legendFormat\":\"Proposal Failure Rate\",\"metric\":\"etcd_server_proposals_failed_total\",\"refId\":\"A\",\"step\":2},{\"expr\":\"sum(etcd_server_proposals_pending{job=\\\"$cluster\\\"})\",\"intervalFactor\":2,\"legendFormat\":\"Proposal Pending Total\",\"metric\":\"etcd_server_proposals_pending\",\"refId\":\"B\",\"step\":2},{\"expr\":\"sum(rate(etcd_server_proposals_committed_total{job=\\\"$cluster\\\"}[$__rate_interval]))\",\"intervalFactor\":2,\"legendFormat\":\"Proposal Commit Rate\",\"metric\":\"etcd_server_proposals_committed_total\",\"refId\":\"C\",\"step\":2},{\"expr\":\"sum(rate(etcd_server_proposals_applied_total{job=\\\"$cluster\\\"}[$__rate_interval]))\",\"intervalFactor\":2,\"legendFormat\":\"Proposal Apply Rate\",\"refId\":\"D\",\"step\":2}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Raft Proposals\",\"tooltip\":{\"msResolution\":false,\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":\"\",\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"datasource\":\"$datasource\",\"decimals\":0,\"editable\":true,\"error\":false,\"fill\":0,\"id\":19,\"isNew\":true,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"changes(etcd_server_leader_changes_seen_total{job=\\\"$cluster\\\"}[1d])\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Total Leader Elections Per Day\",\"metric\":\"etcd_server_leader_changes_seen_total\",\"refId\":\"A\",\"step\":2}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Total Leader Elections Per Day\",\"tooltip\":{\"msResolution\":false,\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"decimals\":0,\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{}},\"overrides\":[]},\"fill\":0,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":12,\"x\":0,\"y\":28},\"hiddenSeries\":false,\"id\":42,\"isNew\":true,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.4.3\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum by (instance, le) (rate(etcd_network_peer_round_trip_time_seconds_bucket{job=\\\"$cluster\\\"}[$__rate_interval])))\",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Peer round trip time\",\"metric\":\"etcd_network_peer_round_trip_time_seconds_bucket\",\"refId\":\"A\",\"step\":2}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Peer round trip time\",\"tooltip\":{\"msResolution\":false,\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"$$hashKey\":\"object:925\",\"decimals\":null,\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"$$hashKey\":\"object:926\",\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}}],\"title\":\"New row\"}],\"schemaVersion\":13,\"sharedCrosshair\":false,\"style\":\"dark\",\"tags\":[\"etcd-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"Prometheus\",\"value\":\"Prometheus\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{\"text\":\"prod\",\"value\":\"prod\"},\"datasource\":\"$datasource\",\"hide\":`}}{{ if (or .Values.grafana.sidecar.dashboards.multicluster.global.enabled .Values.grafana.sidecar.dashboards.multicluster.etcd.enabled) }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":\"cluster\",\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(etcd_server_has_leader, job)\",\"refresh\":2,\"regex\":\"\",\"sort\":2,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-15m\",\"to\":\"now\"},\"timepicker\":{\"now\":true,\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"etcd\",\"uid\":\"c2f4e12cdf69feb95caa41a5a1b423d9\",\"version\":215}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/grafana-overview.yaml",
    "content": "{{- /*\nGenerated from 'grafana-overview' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"grafana-overview\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  grafana-overview.json: |-\n    {{`{\"annotations\":{\"list\":[{\"builtIn\":1,\"datasource\":\"-- Grafana --\",\"enable\":true,\"hide\":true,\"iconColor\":\"rgba(0, 211, 255, 1)\",\"name\":\"Annotations & Alerts\",\"target\":{\"limit\":100,\"matchAny\":false,\"tags\":[],\"type\":\"dashboard\"},\"type\":\"dashboard\"}]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"id\":3085,\"iteration\":1631554945276,\"links\":[],\"panels\":[{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"mappings\":[],\"noValue\":\"0\",\"thresholds\":{\"mode\":\"absolute\",\"steps\":[{\"color\":\"green\",\"value\":null},{\"color\":\"red\",\"value\":80}]}},\"overrides\":[]},\"gridPos\":{\"h\":5,\"w\":6,\"x\":0,\"y\":0},\"id\":6,\"options\":{\"colorMode\":\"value\",\"graphMode\":\"area\",\"justifyMode\":\"auto\",\"orientation\":\"auto\",\"reduceOptions\":{\"calcs\":[\"mean\"],\"fields\":\"\",\"values\":false},\"text\":{},\"textMode\":\"auto\"},\"pluginVersion\":\"8.1.3\",\"targets\":[{\"expr\":\"grafana_alerting_result_total{job=~\\\"$job\\\", instance=~\\\"$instance\\\", state=\\\"alerting\\\"}\",\"instant\":true,\"interval\":\"\",\"legendFormat\":\"\",\"refId\":\"A\"}],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Firing Alerts\",\"type\":\"stat\"},{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"mappings\":[],\"thresholds\":{\"mode\":\"absolute\",\"steps\":[{\"color\":\"green\",\"value\":null},{\"color\":\"red\",\"value\":80}]}},\"overrides\":[]},\"gridPos\":{\"h\":5,\"w\":6,\"x\":6,\"y\":0},\"id\":8,\"options\":{\"colorMode\":\"value\",\"graphMode\":\"area\",\"justifyMode\":\"auto\",\"orientation\":\"auto\",\"reduceOptions\":{\"calcs\":[\"mean\"],\"fields\":\"\",\"values\":false},\"text\":{},\"textMode\":\"auto\"},\"pluginVersion\":\"8.1.3\",\"targets\":[{\"expr\":\"sum(grafana_stat_totals_dashboard{job=~\\\"$job\\\", instance=~\\\"$instance\\\"})\",\"interval\":\"\",\"legendFormat\":\"\",\"refId\":\"A\"}],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Dashboards\",\"type\":\"stat\"},{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"custom\":{\"align\":null,\"displayMode\":\"auto\"},\"mappings\":[],\"thresholds\":{\"mode\":\"absolute\",\"steps\":[{\"color\":\"green\",\"value\":null},{\"color\":\"red\",\"value\":80}]}},\"overrides\":[]},\"gridPos\":{\"h\":5,\"w\":12,\"x\":12,\"y\":0},\"id\":10,\"options\":{\"showHeader\":true},\"pluginVersion\":\"8.1.3\",\"targets\":[{\"expr\":\"grafana_build_info{job=~\\\"$job\\\", instance=~\\\"$instance\\\"}\",\"instant\":true,\"interval\":\"\",\"legendFormat\":\"\",\"refId\":\"A\"}],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Build Info\",\"transformations\":[{\"id\":\"labelsToFields\",\"options\":{}},{\"id\":\"organize\",\"options\":{\"excludeByName\":{\"Time\":true,\"Value\":true,\"branch\":true,\"container\":true,\"goversion\":true,\"namespace\":true,\"pod\":true,\"revision\":true},\"indexByName\":{\"Time\":7,\"Value\":11,\"branch\":4,\"container\":8,\"edition\":2,\"goversion\":6,\"instance\":1,\"job\":0,\"namespace\":9,\"pod\":10,\"revision\":5,\"version\":3},\"renameByName\":{}}}],\"type\":\"table\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":8,\"w\":12,\"x\":0,\"y\":5},\"hiddenSeries\":false,\"id\":2,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"nullPointMode\":\"null\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"8.1.3\",\"pointradius\":2,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum by (status_code) (irate(grafana_http_request_duration_seconds_count{job=~\\\"$job\\\", instance=~\\\"$instance\\\"}[1m])) \",\"interval\":\"\",\"legendFormat\":\"{{status_code}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"RPS\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"$$hashKey\":\"object:157\",\"format\":\"reqps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"$$hashKey\":\"object:158\",\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}],\"yaxis\":{\"align\":false,\"alignLevel\":null}},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":8,\"w\":12,\"x\":12,\"y\":5},\"hiddenSeries\":false,\"id\":4,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"nullPointMode\":\"null\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"8.1.3\",\"pointradius\":2,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"exemplar\":true,\"expr\":\"histogram_quantile(0.99, sum(irate(grafana_http_request_duration_seconds_bucket{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval])) by (le)) * 1\",\"interval\":\"\",\"legendFormat\":\"99th Percentile\",\"refId\":\"A\"},{\"exemplar\":true,\"expr\":\"histogram_quantile(0.50, sum(irate(grafana_http_request_duration_seconds_bucket{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval])) by (le)) * 1\",\"interval\":\"\",\"legendFormat\":\"50th Percentile\",\"refId\":\"B\"},{\"exemplar\":true,\"expr\":\"sum(irate(grafana_http_request_duration_seconds_sum{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval])) * 1 / sum(irate(grafana_http_request_duration_seconds_count{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval]))\",\"interval\":\"\",\"legendFormat\":\"Average\",\"refId\":\"C\"}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Request Latency\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"$$hashKey\":\"object:210\",\"format\":\"ms\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"$$hashKey\":\"object:211\",\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}}],\"schemaVersion\":30,\"style\":\"dark\",\"tags\":[],\"templating\":{\"list\":[{\"current\":{\"selected\":true,\"text\":\"dev-cortex\",\"value\":\"dev-cortex\"},\"description\":null,\"error\":null,\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"queryValue\":\"\",\"refresh\":1,\"regex\":\"\",\"skipUrlSync\":false,\"type\":\"datasource\"},{\"allValue\":\".*\",\"current\":{\"selected\":false,\"text\":[\"default/grafana\"],\"value\":[\"default/grafana\"]},\"datasource\":\"$datasource\",\"definition\":\"label_values(grafana_build_info, job)\",\"description\":null,\"error\":null,\"hide\":0,\"includeAll\":true,\"label\":null,\"multi\":true,\"name\":\"job\",\"options\":[],\"query\":{\"query\":\"label_values(grafana_build_info, job)\",\"refId\":\"Billing Admin-job-Variable-Query\"},\"refresh\":1,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":0,\"tagValuesQuery\":\"\",\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":\".*\",\"current\":{\"selected\":false,\"text\":\"All\",\"value\":\"$__all\"},\"datasource\":\"$datasource\",\"definition\":\"label_values(grafana_build_info, instance)\",\"description\":null,\"error\":null,\"hide\":0,\"includeAll\":true,\"label\":null,\"multi\":true,\"name\":\"instance\",\"options\":[],\"query\":{\"query\":\"label_values(grafana_build_info, instance)\",\"refId\":\"Billing Admin-instance-Variable-Query\"},\"refresh\":1,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":0,\"tagValuesQuery\":\"\",\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-6h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Grafana Overview\",\"uid\":\"6be0s85Mk\",\"version\":2}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-coredns.yaml",
    "content": "{{- /* Added manually, can be changed in-place. */ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.coreDns.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-coredns\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-coredns.json: |-\n    {{`{\"annotations\":{\"list\":[{\"builtIn\":1,\"datasource\":\"-- Grafana --\",\"enable\":true,\"hide\":true,\"iconColor\":\"rgba(0, 211, 255, 1)\",\"name\":\"Annotations & Alerts\",\"type\":\"dashboard\"}]},\"description\":\"A dashboard for the CoreDNS DNS server with updated metrics for version 1.7.0+.  Based on the CoreDNS dashboard by buhay.\",\"editable\":true,\"gnetId\":12539,\"graphTooltip\":0,\"iteration\":1603798405693,\"links\":[{\"icon\":\"external link\",\"tags\":[],\"targetBlank\":true,\"title\":\"CoreDNS.io\",\"type\":\"link\",\"url\":\"https://coredns.io\"}],\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{},\"links\":[],\"mappings\":[],\"thresholds\":{\"mode\":\"absolute\",\"steps\":[{\"color\":\"green\",\"value\":null},{\"color\":\"red\",\"value\":80}]}},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"grid\":{},\"gridPos\":{\"h\":7,\"w\":8,\"x\":0,\"y\":0},\"hiddenSeries\":false,\"id\":2,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.2.0\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"total\",\"yaxis\":2}],\"spaceLength\":10,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(coredns_dns_request_count_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (proto) or\\nsum(rate(coredns_dns_requests_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (proto)\",\"format\":\"time_series\",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}\",\"refId\":\"A\",\"step\":60}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Requests (total)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{},\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"grid\":{},\"gridPos\":{\"h\":7,\"w\":8,\"x\":8,\"y\":0},\"hiddenSeries\":false,\"id\":4,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.2.0\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"total\",\"yaxis\":2},{\"alias\":\"other\",\"yaxis\":2}],\"spaceLength\":10,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(coredns_dns_request_type_count_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (type) or \\nsum(rate(coredns_dns_requests_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (type)\",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{ type }}\",\"refId\":\"A\",\"step\":60}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Requests (by qtype)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{},\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"grid\":{},\"gridPos\":{\"h\":7,\"w\":8,\"x\":16,\"y\":0},\"hiddenSeries\":false,\"id\":6,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.2.0\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"total\",\"yaxis\":2}],\"spaceLength\":10,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(coredns_dns_request_count_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (zone) or\\nsum(rate(coredns_dns_requests_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (zone)\",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{ zone }}\",\"refId\":\"A\",\"step\":60}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Requests (by zone)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{},\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"grid\":{},\"gridPos\":{\"h\":7,\"w\":12,\"x\":0,\"y\":7},\"hiddenSeries\":false,\"id\":8,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.2.0\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"total\",\"yaxis\":2}],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(coredns_dns_request_do_count_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) or\\nsum(rate(coredns_dns_do_requests_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m]))\",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"DO\",\"refId\":\"A\",\"step\":40},{\"expr\":\"sum(rate(coredns_dns_request_count_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) or\\nsum(rate(coredns_dns_requests_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m]))\",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"total\",\"refId\":\"B\",\"step\":40}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Requests (DO bit)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"cumulative\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{},\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"grid\":{},\"gridPos\":{\"h\":7,\"w\":6,\"x\":12,\"y\":7},\"hiddenSeries\":false,\"id\":10,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.2.0\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"tcp:90\",\"yaxis\":2},{\"alias\":\"tcp:99 \",\"yaxis\":2},{\"alias\":\"tcp:50\",\"yaxis\":2}],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(coredns_dns_request_size_bytes_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\",proto=\\\"udp\\\"}[5m])) by (le,proto))\",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}:99 \",\"refId\":\"A\",\"step\":60},{\"expr\":\"histogram_quantile(0.90, sum(rate(coredns_dns_request_size_bytes_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\",proto=\\\"udp\\\"}[5m])) by (le,proto))\",\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}:90\",\"refId\":\"B\",\"step\":60},{\"expr\":\"histogram_quantile(0.50, sum(rate(coredns_dns_request_size_bytes_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\",proto=\\\"udp\\\"}[5m])) by (le,proto))\",\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}:50\",\"refId\":\"C\",\"step\":60}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Requests (size, udp)\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"cumulative\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{},\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"grid\":{},\"gridPos\":{\"h\":7,\"w\":6,\"x\":18,\"y\":7},\"hiddenSeries\":false,\"id\":12,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.2.0\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"tcp:90\",\"yaxis\":1},{\"alias\":\"tcp:99 \",\"yaxis\":1},{\"alias\":\"tcp:50\",\"yaxis\":1}],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(coredns_dns_request_size_bytes_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\",proto=\\\"tcp\\\"}[5m])) by (le,proto))\",\"format\":\"time_series\",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}:99 \",\"refId\":\"A\",\"step\":60},{\"expr\":\"histogram_quantile(0.90, sum(rate(coredns_dns_request_size_bytes_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\",proto=\\\"tcp\\\"}[5m])) by (le,proto))\",\"format\":\"time_series\",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}:90\",\"refId\":\"B\",\"step\":60},{\"expr\":\"histogram_quantile(0.50, sum(rate(coredns_dns_request_size_bytes_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\",proto=\\\"tcp\\\"}[5m])) by (le,proto))\",\"format\":\"time_series\",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}:50\",\"refId\":\"C\",\"step\":60}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Requests (size,tcp)\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"cumulative\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{},\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"grid\":{},\"gridPos\":{\"h\":7,\"w\":12,\"x\":0,\"y\":14},\"hiddenSeries\":false,\"id\":14,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.2.0\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(coredns_dns_response_rcode_count_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (rcode) or\\nsum(rate(coredns_dns_responses_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (rcode)\",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{ rcode }}\",\"refId\":\"A\",\"step\":40}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Responses (by rcode)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{},\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"grid\":{},\"gridPos\":{\"h\":7,\"w\":12,\"x\":12,\"y\":14},\"hiddenSeries\":false,\"id\":32,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.2.0\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(coredns_dns_request_duration_seconds_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (le, job))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"99%\",\"refId\":\"A\",\"step\":40},{\"expr\":\"histogram_quantile(0.90, sum(rate(coredns_dns_request_duration_seconds_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"90%\",\"refId\":\"B\",\"step\":40},{\"expr\":\"histogram_quantile(0.50, sum(rate(coredns_dns_request_duration_seconds_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"50%\",\"refId\":\"C\",\"step\":40}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Responses (duration)\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"cumulative\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{},\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"grid\":{},\"gridPos\":{\"h\":7,\"w\":12,\"x\":0,\"y\":21},\"hiddenSeries\":false,\"id\":18,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.2.0\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"udp:50%\",\"yaxis\":1},{\"alias\":\"tcp:50%\",\"yaxis\":2},{\"alias\":\"tcp:90%\",\"yaxis\":2},{\"alias\":\"tcp:99%\",\"yaxis\":2}],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(coredns_dns_response_size_bytes_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\",proto=\\\"udp\\\"}[5m])) by (le,proto)) \",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}:99%\",\"refId\":\"A\",\"step\":40},{\"expr\":\"histogram_quantile(0.90, sum(rate(coredns_dns_response_size_bytes_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\",proto=\\\"udp\\\"}[5m])) by (le,proto)) \",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}:90%\",\"refId\":\"B\",\"step\":40},{\"expr\":\"histogram_quantile(0.50, sum(rate(coredns_dns_response_size_bytes_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\",proto=\\\"udp\\\"}[5m])) by (le,proto)) \",\"hide\":false,\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}:50%\",\"metric\":\"\",\"refId\":\"C\",\"step\":40}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Responses (size, udp)\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"cumulative\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{},\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"grid\":{},\"gridPos\":{\"h\":7,\"w\":12,\"x\":12,\"y\":21},\"hiddenSeries\":false,\"id\":20,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.2.0\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"udp:50%\",\"yaxis\":1},{\"alias\":\"tcp:50%\",\"yaxis\":1},{\"alias\":\"tcp:90%\",\"yaxis\":1},{\"alias\":\"tcp:99%\",\"yaxis\":1}],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(coredns_dns_response_size_bytes_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\",proto=\\\"tcp\\\"}[5m])) by (le,proto)) \",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}:99%\",\"refId\":\"A\",\"step\":40},{\"expr\":\"histogram_quantile(0.90, sum(rate(coredns_dns_response_size_bytes_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\",proto=\\\"tcp\\\"}[5m])) by (le,proto)) \",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}:90%\",\"refId\":\"B\",\"step\":40},{\"expr\":\"histogram_quantile(0.50, sum(rate(coredns_dns_response_size_bytes_bucket{job=\\\"coredns\\\",instance=~\\\"$instance\\\",proto=\\\"tcp\\\"}[5m])) by (le, proto)) \",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{ proto }}:50%\",\"metric\":\"\",\"refId\":\"C\",\"step\":40}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Responses (size, tcp)\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"cumulative\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{},\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"grid\":{},\"gridPos\":{\"h\":7,\"w\":12,\"x\":0,\"y\":28},\"hiddenSeries\":false,\"id\":22,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.2.0\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(coredns_cache_size{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}) by (type) or\\nsum(coredns_cache_entries{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}) by (type)\",\"interval\":\"\",\"intervalFactor\":2,\"legendFormat\":\"{{ type }}\",\"refId\":\"A\",\"step\":40}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Cache (size)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"cumulative\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"decbytes\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"editable\":true,\"error\":false,\"fieldConfig\":{\"defaults\":{\"custom\":{},\"links\":[]},\"overrides\":[]},\"fill\":1,\"fillGradient\":0,\"grid\":{},\"gridPos\":{\"h\":7,\"w\":12,\"x\":12,\"y\":28},\"hiddenSeries\":false,\"id\":24,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"connected\",\"options\":{\"alertThreshold\":true},\"percentage\":false,\"pluginVersion\":\"7.2.0\",\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"misses\",\"yaxis\":2}],\"spaceLength\":10,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(coredns_cache_hits_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (type)\",\"hide\":false,\"intervalFactor\":2,\"legendFormat\":\"hits:{{ type }}\",\"refId\":\"A\",\"step\":40},{\"expr\":\"sum(rate(coredns_cache_misses_total{job=\\\"coredns\\\",instance=~\\\"$instance\\\"}[5m])) by (type)\",\"hide\":false,\"intervalFactor\":2,\"legendFormat\":\"misses\",\"refId\":\"B\",\"step\":40}],\"thresholds\":[],\"timeFrom\":null,\"timeRegions\":[],\"timeShift\":null,\"title\":\"Cache (hitrate)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}],\"yaxis\":{\"align\":false,\"alignLevel\":null}}],\"refresh\":\"10s\",\"schemaVersion\":26,\"style\":\"dark\",\"tags\":[\"dns\",\"coredns\"],\"templating\":{\"list\":[{\"current\":{\"selected\":true,\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"queryValue\":\"\",\"refresh\":1,\"regex\":\"\",\"skipUrlSync\":false,\"type\":\"datasource\"},{\"allValue\":\".*\",\"current\":{\"selected\":true,\"text\":\"All\",\"value\":\"$__all\"},\"datasource\":\"$datasource\",\"definition\":\"label_values(up{job=\\\"coredns\\\"}, instance)\",\"hide\":0,\"includeAll\":true,\"label\":\"Instance\",\"multi\":false,\"name\":\"instance\",\"options\":[],\"query\":\"label_values(up{job=\\\"coredns\\\"}, instance)\",\"refresh\":1,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":3,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-3h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"]},\"timezone\":\"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"CoreDNS\",\"uid\":\"vkQ0UHxik\",\"version\":2}`}}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml",
    "content": "{{- /*\nGenerated from 'k8s-resources-cluster' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-resources-cluster\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-resources-cluster.json: |-\n    {{`{\"annotations\":{\"list\":[]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"links\":[],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"height\":\"100px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":1,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"cluster:node_cpu:ratio_rate5m{cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Utilisation\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":2,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"cpu\\\",cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Requests Commitment\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":3,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"cpu\\\",cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Limits Commitment\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":4,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"1 - sum(:node_memory_MemAvailable_bytes:sum{cluster=\\\"$cluster\\\"}) / sum(node_memory_MemTotal_bytes{job=\\\"node-exporter\\\",cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Utilisation\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":5,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"memory\\\",cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Requests Commitment\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":6,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"memory\\\",cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Limits Commitment\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Headlines\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":7,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":8,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Pods\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":0,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down to pods\",\"linkUrl\":\"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"Workloads\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":0,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down to workloads\",\"linkUrl\":\"/d/a87fb0d919ec0ea5f6543124e16c42a5/k8s-resources-workloads-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"CPU Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #G\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Namespace\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down to pods\",\"linkUrl\":\"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell\",\"pattern\":\"namespace\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(kube_pod_owner{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"count(avg(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\"}) by (workload, namespace)) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\"}) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\"}) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"G\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Quota\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":9,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"}) by (namespace)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage (w/o cache)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":10,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Pods\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":0,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down to pods\",\"linkUrl\":\"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"Workloads\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":0,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down to workloads\",\"linkUrl\":\"/d/a87fb0d919ec0ea5f6543124e16c42a5/k8s-resources-workloads-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"Memory Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #G\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Namespace\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down to pods\",\"linkUrl\":\"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell\",\"pattern\":\"namespace\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(kube_pod_owner{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"count(avg(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\"}) by (workload, namespace)) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"}) by (namespace) / sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10},{\"expr\":\"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"}) by (namespace) / sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"G\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Requests by Namespace\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Requests\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":11,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Current Receive Bandwidth\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Current Transmit Bandwidth\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Rate of Received Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Received Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Namespace\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down to pods\",\"linkUrl\":\"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell\",\"pattern\":\"namespace\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Network Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Current Network Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":12,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Receive Bandwidth\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":13,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Transmit Bandwidth\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Bandwidth\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":14,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"avg(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Container Bandwidth by Namespace: Received\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":15,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"avg(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Container Bandwidth by Namespace: Transmitted\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Average Container Bandwidth by Namespace\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":16,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":17,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Rate of Packets\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":18,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets Dropped\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":19,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets Dropped\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Rate of Packets Dropped\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"decimals\":-1,\"fill\":10,\"id\":20,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"ceil(sum by(namespace) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval])))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"IOPS(Reads+Writes)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":21,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum by(namespace) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"ThroughPut(Read+Write)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Storage IO\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":22,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"sort\":{\"col\":4,\"desc\":true},\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"IOPS(Reads)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":-1,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"IOPS(Writes)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":-1,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"IOPS(Reads + Writes)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":-1,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"Throughput(Read)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Throughput(Write)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Throughput(Read + Write)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Namespace\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down to pods\",\"linkUrl\":\"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell\",\"pattern\":\"namespace\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum by(namespace) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum by(namespace) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum by(namespace) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum by(namespace) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum by(namespace) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum by(namespace) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Storage IO\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Storage IO - Distribution\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Compute Resources / Cluster\",\"uid\":\"efa86fd1d0c121a26444b636a3f509a8\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-multicluster.yaml",
    "content": "{{- /*\nGenerated from 'k8s-resources-multicluster' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-resources-multicluster\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-resources-multicluster.json: |-\n    {{`{\"annotations\":{\"list\":[]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"links\":[],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"height\":\"100px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":1,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"cluster:node_cpu:ratio_rate5m\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Utilisation\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":2,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Requests Commitment\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":3,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Limits Commitment\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":4,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"1 - sum(:node_memory_MemAvailable_bytes:sum) / sum(node_memory_MemTotal_bytes{job=\\\"node-exporter\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Utilisation\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":5,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Requests Commitment\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":6,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Limits Commitment\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Headlines\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":0,\"id\":7,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":8,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"CPU Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"CPU Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Cluster\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/efa86fd1d0c121a26444b636a3f509a8/k8s-resources-cluster?var-datasource=$datasource&var-cluster=$__cell\",\"pattern\":\"cluster\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Quota\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":0,\"id\":9,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"}) by (cluster)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage (w/o cache)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":10,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Memory Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Cluster\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/efa86fd1d0c121a26444b636a3f509a8/k8s-resources-cluster?var-datasource=$datasource&var-cluster=$__cell\",\"pattern\":\"cluster\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"}) by (cluster)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"}) by (cluster) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"}) by (cluster) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Requests by Cluster\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Requests\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Compute Resources /  Multi-Cluster\",\"uid\":\"b59e6c9f2fcbe2e16d77fc492374cc4f\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml",
    "content": "{{- /*\nGenerated from 'k8s-resources-namespace' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-resources-namespace\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-resources-namespace.json: |-\n    {{`{\"annotations\":{\"list\":[]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"links\":[],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"height\":\"100px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":1,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Utilisation (from requests)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":2,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Utilisation (from limits)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":3,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Utilisation (from requests)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":4,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Utilisation (from limits)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Headlines\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":5,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"quota - requests\",\"color\":\"#F2495C\",\"dashes\":true,\"fill\":0,\"hiddenSeries\":true,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false},{\"alias\":\"quota - limits\",\"color\":\"#FF9830\",\"dashes\":true,\"fill\":0,\"hiddenSeries\":true,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false}],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10},{\"expr\":\"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.cpu\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"quota - requests\",\"legendLink\":null,\"step\":10},{\"expr\":\"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.cpu\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"quota - limits\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":6,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"CPU Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"CPU Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Pod\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\"pattern\":\"pod\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Quota\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":7,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"quota - requests\",\"color\":\"#F2495C\",\"dashes\":true,\"fill\":0,\"hiddenSeries\":true,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false},{\"alias\":\"quota - limits\",\"color\":\"#FF9830\",\"dashes\":true,\"fill\":0,\"hiddenSeries\":true,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false}],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10},{\"expr\":\"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.memory\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"quota - requests\",\"legendLink\":null,\"step\":10},{\"expr\":\"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.memory\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"quota - limits\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage (w/o cache)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":8,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Memory Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Usage (RSS)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Usage (Cache)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #G\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Usage (Swap)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #H\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Pod\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\"pattern\":\"pod\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10},{\"expr\":\"sum(container_memory_cache{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"G\",\"step\":10},{\"expr\":\"sum(container_memory_swap{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"H\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Quota\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":9,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Current Receive Bandwidth\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Current Transmit Bandwidth\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Rate of Received Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Received Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Pod\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down to pods\",\"linkUrl\":\"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\"pattern\":\"pod\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Network Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Current Network Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":10,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Receive Bandwidth\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":11,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Transmit Bandwidth\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Bandwidth\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":12,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":13,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Rate of Packets\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":14,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets Dropped\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":15,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets Dropped\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Rate of Packets Dropped\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"decimals\":-1,\"fill\":10,\"id\":16,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"ceil(sum by(pod) (rate(container_fs_reads_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"IOPS(Reads+Writes)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":17,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum by(pod) (rate(container_fs_reads_bytes_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"ThroughPut(Read+Write)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Storage IO\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":18,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"sort\":{\"col\":4,\"desc\":true},\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"IOPS(Reads)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":-1,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"IOPS(Writes)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":-1,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"IOPS(Reads + Writes)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":-1,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"Throughput(Read)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Throughput(Write)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Throughput(Read + Write)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Pod\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down to pods\",\"linkUrl\":\"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\"pattern\":\"pod\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum by(pod) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum by(pod) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum by(pod) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum by(pod) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum by(pod) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum by(pod) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Storage IO\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Storage IO - Distribution\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"namespace\",\"options\":[],\"query\":\"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Compute Resources / Namespace (Pods)\",\"uid\":\"85a562078cdf77779eaa1add43ccec1e\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-node.yaml",
    "content": "{{- /*\nGenerated from 'k8s-resources-node' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-resources-node\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-resources-node.json: |-\n    {{`{\"annotations\":{\"list\":[]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"links\":[],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":1,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"max capacity\",\"color\":\"#F2495C\",\"dashes\":true,\"fill\":0,\"hiddenSeries\":true,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false}],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(kube_node_status_capacity{cluster=\\\"$cluster\\\", node=~\\\"$node\\\", resource=\\\"cpu\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"max capacity\",\"legendLink\":null,\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":2,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"CPU Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"CPU Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Pod\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"pod\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Quota\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":3,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"max capacity\",\"color\":\"#F2495C\",\"dashes\":true,\"fill\":0,\"hiddenSeries\":true,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false}],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(kube_node_status_capacity{cluster=\\\"$cluster\\\", node=~\\\"$node\\\", resource=\\\"memory\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"max capacity\",\"legendLink\":null,\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\", container!=\\\"\\\"}) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage (w/o cache)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":4,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Memory Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Usage (RSS)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Usage (Cache)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #G\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Usage (Swap)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #H\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Pod\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"pod\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_memory_rss{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_memory_cache{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"G\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_memory_swap{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"H\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Quota\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Quota\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":true,\"name\":\"node\",\"options\":[],\"query\":\"label_values(kube_node_info{cluster=\\\"$cluster\\\"}, node)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Compute Resources / Node (Pods)\",\"uid\":\"200ac8fdbfbb74b39aff88118e4d1c2c\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml",
    "content": "{{- /*\nGenerated from 'k8s-resources-pod' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-resources-pod\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-resources-pod.json: |-\n    {{`{\"annotations\":{\"list\":[]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"links\":[],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":1,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"requests\",\"color\":\"#F2495C\",\"fill\":0,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false},{\"alias\":\"limits\",\"color\":\"#FF9830\",\"fill\":0,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false}],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", cluster=\\\"$cluster\\\"}) by (container)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{container}}\",\"legendLink\":null,\"step\":10},{\"expr\":\"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"cpu\\\"}\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"requests\",\"legendLink\":null,\"step\":10},{\"expr\":\"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"cpu\\\"}\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"limits\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":2,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":true,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(increase(container_cpu_cfs_throttled_periods_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (container) /sum(increase(container_cpu_cfs_periods_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (container)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{container}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[{\"colorMode\":\"critical\",\"fill\":true,\"line\":true,\"op\":\"gt\",\"value\":0.25,\"yaxis\":\"left\"}],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Throttling\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":1,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Throttling\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":3,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"CPU Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"CPU Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Container\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"container\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Quota\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":4,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"requests\",\"color\":\"#F2495C\",\"dashes\":true,\"fill\":0,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false},{\"alias\":\"limits\",\"color\":\"#FF9830\",\"dashes\":true,\"fill\":0,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false}],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", image!=\\\"\\\"}) by (container)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{container}}\",\"legendLink\":null,\"step\":10},{\"expr\":\"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"memory\\\"}\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"requests\",\"legendLink\":null,\"step\":10},{\"expr\":\"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"memory\\\"}\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"limits\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage (WSS)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":5,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Memory Usage (WSS)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Usage (RSS)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Usage (Cache)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #G\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Usage (Swap)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #H\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Container\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"container\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", image!=\\\"\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", image!=\\\"\\\"}) by (container) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", image!=\\\"\\\"}) by (container) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container != \\\"\\\", container != \\\"POD\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10},{\"expr\":\"sum(container_memory_cache{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container != \\\"\\\", container != \\\"POD\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"G\",\"step\":10},{\"expr\":\"sum(container_memory_swap{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container != \\\"\\\", container != \\\"POD\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"H\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Quota\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":6,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Receive Bandwidth\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":7,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Transmit Bandwidth\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Bandwidth\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":8,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":9,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Rate of Packets\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":10,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets Dropped\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":11,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets Dropped\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Rate of Packets Dropped\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"decimals\":-1,\"fill\":10,\"id\":12,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"ceil(sum by(pod) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Reads\",\"legendLink\":null,\"step\":10},{\"expr\":\"ceil(sum by(pod) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Writes\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"IOPS\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":13,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum by(pod) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Reads\",\"legendLink\":null,\"step\":10},{\"expr\":\"sum by(pod) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Writes\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"ThroughPut\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Storage IO - Distribution(Pod - Read & Writes)\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"decimals\":-1,\"fill\":10,\"id\":14,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"ceil(sum by(container) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval])))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{container}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"IOPS(Reads+Writes)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":15,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum by(container) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{container}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"ThroughPut(Read+Write)\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Storage IO - Distribution(Containers)\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":16,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"sort\":{\"col\":4,\"desc\":true},\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"IOPS(Reads)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":-1,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"IOPS(Writes)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":-1,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"IOPS(Reads + Writes)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":-1,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"Throughput(Read)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Throughput(Write)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Throughput(Read + Write)\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Container\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"container\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum by(container) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum by(container) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\",device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum by(container) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum by(container) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum by(container) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum by(container) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Storage IO\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Storage IO - Distribution\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"namespace\",\"options\":[],\"query\":\"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"pod\",\"options\":[],\"query\":\"label_values(kube_pod_info{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}, pod)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Compute Resources / Pod\",\"uid\":\"6581e46e4e5c7ba40a07646395ef7b23\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-windows-cluster.yaml",
    "content": "{{- /*\nGenerated from 'k8s-resources-windows-cluster' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/examples/windows.jsonnet\nIn order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/pull/3083\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.windowsMonitoring.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-resources-windows-cluster\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-resources-windows-cluster.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"\",\"rows\":[{\"collapse\":false,\"height\":\"100px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":2,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"1 - avg(rate(windows_cpu_time_total{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", mode=\\\"idle\\\"}[1m]))\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":3,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\"}) / sum(node:windows_node_num_cpu:sum{cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Requests Commitment\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":4,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\"}) / sum(node:windows_node_num_cpu:sum{cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Limits Commitment\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":5,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"1 - sum(:windows_node_memory_MemFreeCached_bytes:sum{cluster=\\\"$cluster\\\"}) / sum(:windows_node_memory_MemTotal_bytes:sum{cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":6,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\"}) / sum(:windows_node_memory_MemTotal_bytes:sum{cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Requests Commitment\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"format\":\"percentunit\",\"id\":7,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":2,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\"}) / sum(:windows_node_memory_MemTotal_bytes:sum{cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"instant\":true,\"intervalFactor\":2,\"refId\":\"A\"}],\"thresholds\":\"70,80\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Limits Commitment\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"singlestat\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Headlines\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":8,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{ namespace }}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":9,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"CPU Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"CPU Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Namespace\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/490b402361724ab1d4c45666c1fa9b6f/k8s-resources-windows-namespace?var-datasource=$datasource&var-namespace=$__cell\",\"pattern\":\"namespace\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\"}) by (namespace) / sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\"}) by (namespace) / sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Quota\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":10,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{namespace}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage (Private Working Set)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"decbytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":11,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Memory Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"decbytes\"},{\"alias\":\"Memory Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"decbytes\"},{\"alias\":\"Memory Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"decbytes\"},{\"alias\":\"Memory Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Namespace\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/490b402361724ab1d4c45666c1fa9b6f/k8s-resources-windows-namespace?var-datasource=$datasource&var-namespace=$__cell\",\"pattern\":\"namespace\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\"}) by (namespace) / sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\"}) by (namespace) / sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\"}) by (namespace)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Requests by Namespace\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Requests\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":null,\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":\"cluster\",\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kubernetes-windows-exporter\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-6h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\":\"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Compute Resources / Cluster(Windows)\",\"uid\":\"4d08557fd9391b100730f2494bccac68\",\"version\":0}`}}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-windows-namespace.yaml",
    "content": "{{- /*\nGenerated from 'k8s-resources-windows-namespace' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/examples/windows.jsonnet\nIn order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/pull/3083\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.windowsMonitoring.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-resources-windows-namespace\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-resources-windows-namespace.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"\",\"rows\":[{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":2,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":3,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"CPU Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"CPU Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Pod\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/40597a704a610e936dc6ed374a7ce023/k8s-resources-windows-pod?var-datasource=$datasource&var-namespace=$namespace&var-pod=$__cell\",\"pattern\":\"pod\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Quota\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":4,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"decbytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":5,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Memory Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"decbytes\"},{\"alias\":\"Memory Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"decbytes\"},{\"alias\":\"Memory Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"decbytes\"},{\"alias\":\"Memory Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Pod\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/40597a704a610e936dc6ed374a7ce023/k8s-resources-windows-pod?var-datasource=$datasource&var-namespace=$namespace&var-pod=$__cell\",\"pattern\":\"pod\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Quota\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Quota\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":null,\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":\"Namespace\",\"multi\":false,\"name\":\"namespace\",\"options\":[],\"query\":\"label_values(windows_pod_container_available, namespace)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":\"cluster\",\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kubernetes-windows-exporter\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-6h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\":\"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Compute Resources / Namespace(Windows)\",\"uid\":\"490b402361724ab1d4c45666c1fa9b6f\",\"version\":0}`}}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-windows-pod.yaml",
    "content": "{{- /*\nGenerated from 'k8s-resources-windows-pod' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/examples/windows.jsonnet\nIn order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/pull/3083\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.windowsMonitoring.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-resources-windows-pod\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-resources-windows-pod.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"\",\"rows\":[{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":2,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{container}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":3,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"CPU Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"CPU Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Container\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"container\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Quota\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":4,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{container}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":5,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Memory Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"decbytes\"},{\"alias\":\"Memory Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"decbytes\"},{\"alias\":\"Memory Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"decbytes\"},{\"alias\":\"Memory Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Container\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"container\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(kube_pod_windows_container_resource_memory_request{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(windows_container_private_working_set_usage{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(kube_pod_windows_container_resource_memory_limit{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Quota\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"id\":6,\"legend\":{\"alignAsTable\":true,\"avg\":true,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum by (container) (rate(windows_container_network_received_bytes_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[1m])))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Received : {{ container }}\",\"refId\":\"A\"},{\"expr\":\"sort_desc(sum by (container) (rate(windows_container_network_transmitted_bytes_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[1m])))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Transmitted : {{ container }}\",\"refId\":\"B\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Network I/O\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Network I/O\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":null,\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":\"Namespace\",\"multi\":false,\"name\":\"namespace\",\"options\":[],\"query\":\"label_values(windows_pod_container_available, namespace)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":\"Pod\",\"multi\":false,\"name\":\"pod\",\"options\":[],\"query\":\"label_values(windows_pod_container_available{namespace=\\\"$namespace\\\"}, pod)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":\"cluster\",\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kubernetes-windows-exporter\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-6h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\":\"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Compute Resources / Pod(Windows)\",\"uid\":\"40597a704a610e936dc6ed374a7ce023\",\"version\":0}`}}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml",
    "content": "{{- /*\nGenerated from 'k8s-resources-workload' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-resources-workload\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-resources-workload.json: |-\n    {{`{\"annotations\":{\"list\":[]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"links\":[],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":1,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(\\n    node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":2,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"CPU Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"CPU Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Pod\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\"pattern\":\"pod\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(\\n    node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(\\n    node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(\\n    node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Quota\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":3,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(\\n    container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":4,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Memory Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Pod\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\"pattern\":\"pod\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(\\n    container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(\\n    container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(\\n    container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Quota\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":5,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Current Receive Bandwidth\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Current Transmit Bandwidth\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Rate of Received Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Received Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Pod\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\"pattern\":\"pod\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Network Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Current Network Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":6,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Receive Bandwidth\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":7,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Transmit Bandwidth\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Bandwidth\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":8,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(avg(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Container Bandwidth by Pod: Received\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":9,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(avg(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Container Bandwidth by Pod: Transmitted\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Average Container Bandwidth by Pod\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":10,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":11,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Rate of Packets\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":12,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets Dropped\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":13,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{pod}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets Dropped\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Rate of Packets Dropped\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"namespace\",\"options\":[],\"query\":\"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"type\",\"options\":[],\"query\":\"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}, workload_type)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"workload\",\"options\":[],\"query\":\"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}, workload)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Compute Resources / Workload\",\"uid\":\"a164a7f0339f99e89cea5cb47e9be617\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml",
    "content": "{{- /*\nGenerated from 'k8s-resources-workloads-namespace' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-resources-workloads-namespace\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-resources-workloads-namespace.json: |-\n    {{`{\"annotations\":{\"list\":[]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"links\":[],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":1,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"quota - requests\",\"color\":\"#F2495C\",\"dashes\":true,\"fill\":0,\"hiddenSeries\":true,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false},{\"alias\":\"quota - limits\",\"color\":\"#FF9830\",\"dashes\":true,\"fill\":0,\"hiddenSeries\":true,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false}],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(\\n  node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{workload}} - {{workload_type}}\",\"legendLink\":null,\"step\":10},{\"expr\":\"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.cpu\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"quota - requests\",\"legendLink\":null,\"step\":10},{\"expr\":\"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.cpu\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"quota - limits\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":2,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Running Pods\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":0,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"CPU Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"CPU Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Workload\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$__cell_2\",\"pattern\":\"workload\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"Workload Type\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"workload_type\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload, workload_type)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(\\n  node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(\\n  kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(\\n  node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(\\n  kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum(\\n  node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Quota\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":3,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[{\"alias\":\"quota - requests\",\"color\":\"#F2495C\",\"dashes\":true,\"fill\":0,\"hiddenSeries\":true,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false},{\"alias\":\"quota - limits\",\"color\":\"#FF9830\",\"dashes\":true,\"fill\":0,\"hiddenSeries\":true,\"hideTooltip\":true,\"legend\":true,\"linewidth\":2,\"stack\":false}],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(\\n    container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{workload}} - {{workload_type}}\",\"legendLink\":null,\"step\":10},{\"expr\":\"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.memory\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"quota - requests\",\"legendLink\":null,\"step\":10},{\"expr\":\"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.memory\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"quota - limits\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":4,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Running Pods\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":0,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"Memory Usage\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Requests %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Memory Limits\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"bytes\"},{\"alias\":\"Memory Limits %\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"percentunit\"},{\"alias\":\"Workload\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$__cell_2\",\"pattern\":\"workload\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"Workload Type\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"workload_type\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload, workload_type)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(\\n    container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(\\n  kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(\\n    container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(\\n  kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum(\\n    container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Quota\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory Quota\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":5,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Current Receive Bandwidth\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Current Transmit Bandwidth\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Rate of Received Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Received Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Workload\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down to pods\",\"linkUrl\":\"/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$type\",\"pattern\":\"workload\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"Workload Type\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"workload_type\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Network Usage\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Current Network Usage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":6,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{workload}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Receive Bandwidth\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":7,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{workload}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Transmit Bandwidth\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Bandwidth\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":8,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(avg(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{workload}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Container Bandwidth by Workload: Received\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":9,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(avg(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{workload}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Container Bandwidth by Workload: Transmitted\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Average Container Bandwidth by Workload\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":10,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{workload}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":11,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{workload}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Rate of Packets\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":12,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{workload}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets Dropped\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":13,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{workload}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets Dropped\",\"tooltip\":{\"shared\":false,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Rate of Packets Dropped\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"namespace\",\"options\":[],\"query\":\"label_values(kube_pod_info{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"deployment\",\"value\":\"deployment\"},\"datasource\":\"$datasource\",\"definition\":\"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"type\",\"options\":[],\"query\":\"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Compute Resources / Namespace (Workloads)\",\"uid\":\"a87fb0d919ec0ea5f6543124e16c42a5\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-windows-cluster-rsrc-use.yaml",
    "content": "{{- /*\nGenerated from 'k8s-windows-cluster-rsrc-use' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/examples/windows.jsonnet\nIn order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/pull/3083\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.windowsMonitoring.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-windows-cluster-rsrc-use\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-windows-cluster-rsrc-use.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"\",\"rows\":[{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":2,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_cpu_utilisation:avg1m{cluster=\\\"$cluster\\\"} * node:windows_node_num_cpu:sum{cluster=\\\"$cluster\\\"} / scalar(sum(node:windows_node_num_cpu:sum{cluster=\\\"$cluster\\\"}))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"legendLink\":\"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":1,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":3,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_memory_utilisation:ratio{cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"legendLink\":\"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":1,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":4,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_memory_swap_io_pages:irate{cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"legendLink\":\"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Saturation (Swap I/O Pages)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":5,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_disk_utilisation:avg_irate{cluster=\\\"$cluster\\\"} / scalar(node:windows_node:sum{cluster=\\\"$cluster\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"legendLink\":\"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk IO Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":1,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Disk\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":6,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_net_utilisation:sum_irate{cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"legendLink\":\"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Net Utilisation (Transmitted)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":7,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_net_saturation:sum_irate{cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"legendLink\":\"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Net Saturation (Dropped)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Network\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":8,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum by (instance)(node:windows_node_filesystem_usage:{cluster=\\\"$cluster\\\"})\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"legendLink\":\"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk Capacity\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":1,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Storage\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":null,\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":\"cluster\",\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kubernetes-windows-exporter\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-6h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\":\"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / USE Method / Cluster(Windows)\",\"uid\":\"53a43377ec9aaf2ff64dfc7a1f539334\",\"version\":0}`}}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/k8s-windows-node-rsrc-use.yaml",
    "content": "{{- /*\nGenerated from 'k8s-windows-node-rsrc-use' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/examples/windows.jsonnet\nIn order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/pull/3083\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.windowsMonitoring.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"k8s-windows-node-rsrc-use\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  k8s-windows-node-rsrc-use.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"\",\"rows\":[{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":2,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_cpu_utilisation:avg1m{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Utilisation\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":3,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum by (core) (irate(windows_cpu_time_total{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", mode!=\\\"idle\\\", instance=\\\"$instance\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{core}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage Per Core\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":4,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_memory_utilisation:{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Memory\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Utilisation %\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"id\":5,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"max(\\n  windows_os_visible_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", instance=\\\"$instance\\\"}\\n  - windows_memory_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", instance=\\\"$instance\\\"}\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"memory used\",\"refId\":\"A\"},{\"expr\":\"max(node:windows_node_memory_totalCached_bytes:sum{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"memory cached\",\"refId\":\"B\"},{\"expr\":\"max(windows_memory_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", instance=\\\"$instance\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"memory free\",\"refId\":\"C\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":6,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_memory_swap_io_pages:irate{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Swap IO\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Saturation (Swap I/O) Pages\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":7,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_disk_utilisation:avg_irate{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Utilisation\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk IO Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"id\":8,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[{\"alias\":\"read\",\"yaxis\":1},{\"alias\":\"io time\",\"yaxis\":2}],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"max(rate(windows_logical_disk_read_bytes_total{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", instance=\\\"$instance\\\"}[2m]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"read\",\"refId\":\"A\"},{\"expr\":\"max(rate(windows_logical_disk_write_bytes_total{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", instance=\\\"$instance\\\"}[2m]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"written\",\"refId\":\"B\"},{\"expr\":\"max(rate(windows_logical_disk_read_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\",  instance=\\\"$instance\\\"}[2m]) + rate(windows_logical_disk_write_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kubernetes-windows-exporter\\\", instance=\\\"$instance\\\"}[2m]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"io time\",\"refId\":\"C\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk I/O\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ms\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Disk\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":9,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_net_utilisation:sum_irate{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Utilisation\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Net Utilisation (Transmitted)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":10,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_net_saturation:sum_irate{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Saturation\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Net Saturation (Dropped)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Net\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":11,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"node:windows_node_filesystem_usage:{cluster=\\\"$cluster\\\", instance=\\\"$instance\\\"}\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{volume}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Disk\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":null,\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":\"Instance\",\"multi\":false,\"name\":\"instance\",\"options\":[],\"query\":\"label_values(windows_system_system_up_time, instance)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":\"cluster\",\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kubernetes-windows-exporter\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-6h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\":\"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / USE Method / Node(Windows)\",\"uid\":\"96e7484b0bb53b74fbc2bcb7723cd40b\",\"version\":0}`}}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/kubelet.yaml",
    "content": "{{- /*\nGenerated from 'kubelet' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.kubelet.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"kubelet\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  kubelet.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"panels\":[{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"links\":[],\"mappings\":[],\"thresholds\":{\"mode\":\"absolute\",\"steps\":[]},\"unit\":\"none\"}},\"gridPos\":{\"h\":7,\"w\":4,\"x\":0,\"y\":0},\"id\":2,\"links\":[],\"options\":{\"colorMode\":\"value\",\"graphMode\":\"area\",\"justifyMode\":\"auto\",\"orientation\":\"auto\",\"reduceOptions\":{\"calcs\":[\"lastNotNull\"],\"fields\":\"\",\"values\":false},\"textMode\":\"auto\"},\"pluginVersion\":\"7\",\"targets\":[{\"expr\":\"sum(kubelet_node_name{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\"}],\"title\":\"Running Kubelets\",\"transparent\":false,\"type\":\"stat\"},{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"links\":[],\"mappings\":[],\"thresholds\":{\"mode\":\"absolute\",\"steps\":[]},\"unit\":\"none\"}},\"gridPos\":{\"h\":7,\"w\":4,\"x\":4,\"y\":0},\"id\":3,\"links\":[],\"options\":{\"colorMode\":\"value\",\"graphMode\":\"area\",\"justifyMode\":\"auto\",\"orientation\":\"auto\",\"reduceOptions\":{\"calcs\":[\"lastNotNull\"],\"fields\":\"\",\"values\":false},\"textMode\":\"auto\"},\"pluginVersion\":\"7\",\"targets\":[{\"expr\":\"sum(kubelet_running_pods{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}) OR sum(kubelet_running_pod_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"title\":\"Running Pods\",\"transparent\":false,\"type\":\"stat\"},{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"links\":[],\"mappings\":[],\"thresholds\":{\"mode\":\"absolute\",\"steps\":[]},\"unit\":\"none\"}},\"gridPos\":{\"h\":7,\"w\":4,\"x\":8,\"y\":0},\"id\":4,\"links\":[],\"options\":{\"colorMode\":\"value\",\"graphMode\":\"area\",\"justifyMode\":\"auto\",\"orientation\":\"auto\",\"reduceOptions\":{\"calcs\":[\"lastNotNull\"],\"fields\":\"\",\"values\":false},\"textMode\":\"auto\"},\"pluginVersion\":\"7\",\"targets\":[{\"expr\":\"sum(kubelet_running_containers{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}) OR sum(kubelet_running_container_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"title\":\"Running Containers\",\"transparent\":false,\"type\":\"stat\"},{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"links\":[],\"mappings\":[],\"thresholds\":{\"mode\":\"absolute\",\"steps\":[]},\"unit\":\"none\"}},\"gridPos\":{\"h\":7,\"w\":4,\"x\":12,\"y\":0},\"id\":5,\"links\":[],\"options\":{\"colorMode\":\"value\",\"graphMode\":\"area\",\"justifyMode\":\"auto\",\"orientation\":\"auto\",\"reduceOptions\":{\"calcs\":[\"lastNotNull\"],\"fields\":\"\",\"values\":false},\"textMode\":\"auto\"},\"pluginVersion\":\"7\",\"targets\":[{\"expr\":\"sum(volume_manager_total_volumes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\", state=\\\"actual_state_of_world\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"title\":\"Actual Volume Count\",\"transparent\":false,\"type\":\"stat\"},{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"links\":[],\"mappings\":[],\"thresholds\":{\"mode\":\"absolute\",\"steps\":[]},\"unit\":\"none\"}},\"gridPos\":{\"h\":7,\"w\":4,\"x\":16,\"y\":0},\"id\":6,\"links\":[],\"options\":{\"colorMode\":\"value\",\"graphMode\":\"area\",\"justifyMode\":\"auto\",\"orientation\":\"auto\",\"reduceOptions\":{\"calcs\":[\"lastNotNull\"],\"fields\":\"\",\"values\":false},\"textMode\":\"auto\"},\"pluginVersion\":\"7\",\"targets\":[{\"expr\":\"sum(volume_manager_total_volumes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",state=\\\"desired_state_of_world\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"title\":\"Desired Volume Count\",\"transparent\":false,\"type\":\"stat\"},{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"links\":[],\"mappings\":[],\"thresholds\":{\"mode\":\"absolute\",\"steps\":[]},\"unit\":\"none\"}},\"gridPos\":{\"h\":7,\"w\":4,\"x\":20,\"y\":0},\"id\":7,\"links\":[],\"options\":{\"colorMode\":\"value\",\"graphMode\":\"area\",\"justifyMode\":\"auto\",\"orientation\":\"auto\",\"reduceOptions\":{\"calcs\":[\"lastNotNull\"],\"fields\":\"\",\"values\":false},\"textMode\":\"auto\"},\"pluginVersion\":\"7\",\"targets\":[{\"expr\":\"sum(rate(kubelet_node_config_error{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"title\":\"Config Error Count\",\"transparent\":false,\"type\":\"stat\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":12,\"x\":0,\"y\":7},\"id\":8,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(kubelet_runtime_operations_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (operation_type, instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{operation_type}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Operation Rate\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":12,\"x\":12,\"y\":7},\"id\":9,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(kubelet_runtime_operations_errors_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{operation_type}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Operation Error Rate\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":24,\"x\":0,\"y\":14},\"id\":10,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(kubelet_runtime_operations_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{operation_type}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Operation duration 99th quantile\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":12,\"x\":0,\"y\":21},\"id\":11,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(kubelet_pod_start_duration_seconds_count{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} pod\",\"refId\":\"A\"},{\"expr\":\"sum(rate(kubelet_pod_worker_duration_seconds_count{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} worker\",\"refId\":\"B\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Pod Start Rate\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":12,\"x\":12,\"y\":21},\"id\":12,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(kubelet_pod_start_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} pod\",\"refId\":\"A\"},{\"expr\":\"histogram_quantile(0.99, sum(rate(kubelet_pod_worker_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} worker\",\"refId\":\"B\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Pod Start Duration\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":12,\"x\":0,\"y\":28},\"id\":13,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(storage_operation_duration_seconds_count{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_name, volume_plugin)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{operation_name}} {{volume_plugin}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Storage Operation Rate\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":12,\"x\":12,\"y\":28},\"id\":14,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(storage_operation_errors_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_name, volume_plugin)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{operation_name}} {{volume_plugin}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Storage Operation Error Rate\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":24,\"x\":0,\"y\":35},\"id\":15,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(storage_operation_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_name, volume_plugin, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{operation_name}} {{volume_plugin}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Storage Operation Duration 99th quantile\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":12,\"x\":0,\"y\":42},\"id\":16,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(kubelet_cgroup_manager_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{operation_type}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Cgroup manager operation rate\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":12,\"x\":12,\"y\":42},\"id\":17,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(kubelet_cgroup_manager_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{operation_type}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Cgroup manager 99th quantile\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"Pod lifecycle event generator\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":12,\"x\":0,\"y\":49},\"id\":18,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(kubelet_pleg_relist_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"PLEG relist rate\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":12,\"x\":12,\"y\":49},\"id\":19,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_interval_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"PLEG relist interval\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":24,\"x\":0,\"y\":56},\"id\":20,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"PLEG relist duration\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":24,\"x\":0,\"y\":63},\"id\":21,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"2xx\",\"refId\":\"A\"},{\"expr\":\"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"3xx\",\"refId\":\"B\"},{\"expr\":\"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"4xx\",\"refId\":\"C\"},{\"expr\":\"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"5xx\",\"refId\":\"D\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"RPC Rate\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":24,\"x\":0,\"y\":70},\"id\":22,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, verb, url, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{verb}} {{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Request duration 99th quantile\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":8,\"x\":0,\"y\":77},\"id\":23,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"process_resident_memory_bytes{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":8,\"x\":8,\"y\":77},\"id\":24,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU usage\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{\"h\":7,\"w\":8,\"x\":16,\"y\":77},\"id\":25,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"go_goroutines{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Goroutines\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"refresh\":\"10s\",\"rows\":[],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":\"cluster\",\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":true,\"label\":\"instance\",\"multi\":false,\"name\":\"instance\",\"options\":[],\"query\":\"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",cluster=\\\"$cluster\\\"}, instance)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Kubelet\",\"uid\":\"3138fa155d5915769fbded898ac09fd9\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/namespace-by-pod.yaml",
    "content": "{{- /*\nGenerated from 'namespace-by-pod' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"namespace-by-pod\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  namespace-by-pod.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[{\"builtIn\":1,\"datasource\":\"-- Grafana --\",\"enable\":true,\"hide\":true,\"iconColor\":\"rgba(0, 211, 255, 1)\",\"name\":\"Annotations & Alerts\",\"type\":\"dashboard\"}]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"panels\":[{\"collapse\":false,\"collapsed\":false,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":0},\"id\":2,\"panels\":[],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Current Bandwidth\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"#299c46\",\"rgba(237, 129, 40, 0.89)\",\"#d44a3a\"],\"datasource\":\"$datasource\",\"decimals\":0,\"format\":\"time_series\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":false,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":1},\"height\":9,\"id\":3,\"interval\":null,\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"minSpan\":12,\"nullPointMode\":\"connected\",\"nullText\":null,\"options\":{\"fieldOptions\":{\"calcs\":[\"last\"],\"defaults\":{\"max\":10000000000,\"min\":0,\"title\":\"$namespace\",\"unit\":\"Bps\"},\"mappings\":[],\"override\":{},\"thresholds\":[{\"color\":\"dark-green\",\"index\":0,\"value\":null},{\"color\":\"dark-yellow\",\"index\":1,\"value\":5000000000},{\"color\":\"dark-red\",\"index\":2,\"value\":7000000000}],\"values\":false}},\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":12,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"tableColumn\":\"\",\"targets\":[{\"expr\":\"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution]))\",\"format\":\"time_series\",\"instant\":null,\"intervalFactor\":1,\"legendFormat\":\"\",\"refId\":\"A\"}],\"thresholds\":\"\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Rate of Bytes Received\",\"type\":\"gauge\",\"valueFontSize\":\"80%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"current\"},{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"#299c46\",\"rgba(237, 129, 40, 0.89)\",\"#d44a3a\"],\"datasource\":\"$datasource\",\"decimals\":0,\"format\":\"time_series\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":false,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":1},\"height\":9,\"id\":4,\"interval\":null,\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"minSpan\":12,\"nullPointMode\":\"connected\",\"nullText\":null,\"options\":{\"fieldOptions\":{\"calcs\":[\"last\"],\"defaults\":{\"max\":10000000000,\"min\":0,\"title\":\"$namespace\",\"unit\":\"Bps\"},\"mappings\":[],\"override\":{},\"thresholds\":[{\"color\":\"dark-green\",\"index\":0,\"value\":null},{\"color\":\"dark-yellow\",\"index\":1,\"value\":5000000000},{\"color\":\"dark-red\",\"index\":2,\"value\":7000000000}],\"values\":false}},\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":12,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"tableColumn\":\"\",\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution]))\",\"format\":\"time_series\",\"instant\":null,\"intervalFactor\":1,\"legendFormat\":\"\",\"refId\":\"A\"}],\"thresholds\":\"\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Rate of Bytes Transmitted\",\"type\":\"gauge\",\"valueFontSize\":\"80%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"current\"},{\"columns\":[{\"text\":\"Time\",\"value\":\"Time\"},{\"text\":\"Value #A\",\"value\":\"Value #A\"},{\"text\":\"Value #B\",\"value\":\"Value #B\"},{\"text\":\"Value #C\",\"value\":\"Value #C\"},{\"text\":\"Value #D\",\"value\":\"Value #D\"},{\"text\":\"Value #E\",\"value\":\"Value #E\"},{\"text\":\"Value #F\",\"value\":\"Value #F\"},{\"text\":\"pod\",\"value\":\"pod\"}],\"datasource\":\"$datasource\",\"fill\":1,\"fontSize\":\"100%\",\"gridPos\":{\"h\":9,\"w\":24,\"x\":0,\"y\":10},\"id\":5,\"lines\":true,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null as zero\",\"renderer\":\"flot\",\"scroll\":true,\"showHeader\":true,\"sort\":{\"col\":0,\"desc\":false},\"spaceLength\":10,\"span\":24,\"styles\":[{\"alias\":\"Time\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Time\",\"thresholds\":[],\"type\":\"hidden\",\"unit\":\"short\"},{\"alias\":\"Bandwidth Received\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Bandwidth Transmitted\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Rate of Received Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Received Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Pod\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"d/7a18067ce943a40ae25454675c19ff5c/kubernetes-networking-pod?orgId=1&refresh=30s&var-namespace=$namespace&var-pod=$__cell\",\"pattern\":\"pod\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10}],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Status\",\"type\":\"table\"},{\"collapse\":false,\"collapsed\":false,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":19},\"id\":6,\"panels\":[],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Bandwidth\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":20},\"id\":7,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Receive Bandwidth\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":20},\"id\":8,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Transmit Bandwidth\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":29},\"id\":9,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":10,\"w\":12,\"x\":0,\"y\":30},\"id\":10,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":10,\"w\":12,\"x\":12,\"y\":30},\"id\":11,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Packets\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":30},\"id\":12,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":10,\"w\":12,\"x\":0,\"y\":40},\"id\":13,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets Dropped\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":10,\"w\":12,\"x\":12,\"y\":40},\"id\":14,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets Dropped\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Errors\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"refresh\":\"10s\",\"rows\":[],\"schemaVersion\":18,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":\".+\",\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"kube-system\",\"value\":\"kube-system\"},\"datasource\":\"$datasource\",\"definition\":\"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\"hide\":0,\"includeAll\":true,\"label\":null,\"multi\":false,\"name\":\"namespace\",\"options\":[],\"query\":\"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"5m\",\"value\":\"5m\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"resolution\",\"options\":[{\"selected\":false,\"text\":\"30s\",\"value\":\"30s\"},{\"selected\":true,\"text\":\"5m\",\"value\":\"5m\"},{\"selected\":false,\"text\":\"1h\",\"value\":\"1h\"}],\"query\":\"30s,5m,1h\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"interval\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"5m\",\"value\":\"5m\"},\"datasource\":\"$datasource\",\"hide\":2,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"interval\",\"options\":[{\"selected\":true,\"text\":\"4h\",\"value\":\"4h\"}],\"query\":\"4h\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"interval\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Networking / Namespace (Pods)\",\"uid\":\"8b7a8b326d7a6f1f04244066368c67af\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/namespace-by-workload.yaml",
    "content": "{{- /*\nGenerated from 'namespace-by-workload' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"namespace-by-workload\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  namespace-by-workload.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[{\"builtIn\":1,\"datasource\":\"-- Grafana --\",\"enable\":true,\"hide\":true,\"iconColor\":\"rgba(0, 211, 255, 1)\",\"name\":\"Annotations & Alerts\",\"type\":\"dashboard\"}]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"panels\":[{\"collapse\":false,\"collapsed\":false,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":0},\"id\":2,\"panels\":[],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Current Bandwidth\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"aliasColors\":{},\"bars\":true,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":1},\"id\":3,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"sort\":\"current\",\"sortDesc\":true,\"total\":false,\"values\":true},\"lines\":false,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{ workload }}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Rate of Bytes Received\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"series\",\"name\":null,\"show\":false,\"values\":[\"current\"]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":true,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":1},\"id\":4,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"sort\":\"current\",\"sortDesc\":true,\"total\":false,\"values\":true},\"lines\":false,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{ workload }}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Rate of Bytes Transmitted\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"series\",\"name\":null,\"show\":false,\"values\":[\"current\"]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"columns\":[{\"text\":\"Time\",\"value\":\"Time\"},{\"text\":\"Value #A\",\"value\":\"Value #A\"},{\"text\":\"Value #B\",\"value\":\"Value #B\"},{\"text\":\"Value #C\",\"value\":\"Value #C\"},{\"text\":\"Value #D\",\"value\":\"Value #D\"},{\"text\":\"Value #E\",\"value\":\"Value #E\"},{\"text\":\"Value #F\",\"value\":\"Value #F\"},{\"text\":\"Value #G\",\"value\":\"Value #G\"},{\"text\":\"Value #H\",\"value\":\"Value #H\"},{\"text\":\"workload\",\"value\":\"workload\"}],\"datasource\":\"$datasource\",\"fill\":1,\"fontSize\":\"90%\",\"gridPos\":{\"h\":9,\"w\":24,\"x\":0,\"y\":10},\"id\":5,\"lines\":true,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null as zero\",\"renderer\":\"flot\",\"scroll\":true,\"showHeader\":true,\"sort\":{\"col\":0,\"desc\":false},\"spaceLength\":10,\"span\":24,\"styles\":[{\"alias\":\"Time\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Time\",\"thresholds\":[],\"type\":\"hidden\",\"unit\":\"short\"},{\"alias\":\"Current Bandwidth Received\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Current Bandwidth Transmitted\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Average Bandwidth Received\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #C\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Average Bandwidth Transmitted\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #D\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"Bps\"},{\"alias\":\"Rate of Received Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #E\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #F\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Received Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #G\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Rate of Transmitted Packets Dropped\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #H\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"pps\"},{\"alias\":\"Workload\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":true,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"d/728bf77cc1166d2f3133bf25846876cc/kubernetes-networking-workload?orgId=1&refresh=30s&var-namespace=$namespace&var-type=$type&var-workload=$__cell\",\"pattern\":\"workload\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10},{\"expr\":\"sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"C\",\"step\":10},{\"expr\":\"sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"D\",\"step\":10},{\"expr\":\"sort_desc(sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"E\",\"step\":10},{\"expr\":\"sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"F\",\"step\":10},{\"expr\":\"sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"G\",\"step\":10},{\"expr\":\"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"H\",\"step\":10}],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Status\",\"type\":\"table\"},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":19},\"id\":6,\"panels\":[{\"aliasColors\":{},\"bars\":true,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":20},\"id\":7,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"sort\":\"current\",\"sortDesc\":true,\"total\":false,\"values\":true},\"lines\":false,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{ workload }}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Rate of Bytes Received\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"series\",\"name\":null,\"show\":false,\"values\":[\"current\"]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":true,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":20},\"id\":8,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"sort\":\"current\",\"sortDesc\":true,\"total\":false,\"values\":true},\"lines\":false,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{ workload }}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Rate of Bytes Transmitted\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"series\",\"name\":null,\"show\":false,\"values\":[\"current\"]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Average Bandwidth\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":29},\"id\":9,\"panels\":[],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Bandwidth HIstory\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":38},\"id\":10,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{workload}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Receive Bandwidth\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":38},\"id\":11,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{workload}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Transmit Bandwidth\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":39},\"id\":12,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":40},\"id\":13,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{workload}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":40},\"id\":14,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{workload}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Packets\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":40},\"id\":15,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":41},\"id\":16,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{workload}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets Dropped\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":41},\"id\":17,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{workload}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets Dropped\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Errors\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"refresh\":\"10s\",\"rows\":[],\"schemaVersion\":18,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"kube-system\",\"value\":\"kube-system\"},\"datasource\":\"$datasource\",\"definition\":\"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"namespace\",\"options\":[],\"query\":\"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"deployment\",\"value\":\"deployment\"},\"datasource\":\"$datasource\",\"definition\":\"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"type\",\"options\":[],\"query\":\"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"5m\",\"value\":\"5m\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"resolution\",\"options\":[{\"selected\":false,\"text\":\"30s\",\"value\":\"30s\"},{\"selected\":true,\"text\":\"5m\",\"value\":\"5m\"},{\"selected\":false,\"text\":\"1h\",\"value\":\"1h\"}],\"query\":\"30s,5m,1h\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"interval\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"5m\",\"value\":\"5m\"},\"datasource\":\"$datasource\",\"hide\":2,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"interval\",\"options\":[{\"selected\":true,\"text\":\"4h\",\"value\":\"4h\"}],\"query\":\"4h\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"interval\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Networking / Namespace (Workload)\",\"uid\":\"bbb2a765a623ae38130206c7d94a160f\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml",
    "content": "{{- /*\nGenerated from 'node-cluster-rsrc-use' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.nodeExporter.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"node-cluster-rsrc-use\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  node-cluster-rsrc-use.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":1,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"30s\",\"rows\":[{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":2,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"((\\n  instance:node_cpu_utilisation:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  *\\n  instance:node_num_cpu:sum{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n) != 0 )\\n/ scalar(sum(instance:node_num_cpu:sum{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{ instance }}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":3,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(\\n  instance:node_load1_per_cpu:ratio{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  / scalar(count(instance:node_load1_per_cpu:ratio{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n)  != 0\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Saturation (Load1 per CPU)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":4,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(\\n  instance:node_memory_utilisation:ratio{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  / scalar(count(instance:node_memory_utilisation:ratio{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n) != 0\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":5,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"instance:node_vmstat_pgmajfault:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Saturation (Major Page Faults)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"rds\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"rds\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":6,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[{\"alias\":\"/Receive/\",\"stack\":\"A\"},{\"alias\":\"/Transmit/\",\"stack\":\"B\",\"transform\":\"negative-Y\"}],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"instance:node_network_receive_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Receive\",\"refId\":\"A\"},{\"expr\":\"instance:node_network_transmit_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Transmit\",\"refId\":\"B\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Network Utilisation (Bytes Receive/Transmit)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":7,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[{\"alias\":\"/ Receive/\",\"stack\":\"A\"},{\"alias\":\"/ Transmit/\",\"stack\":\"B\",\"transform\":\"negative-Y\"}],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"instance:node_network_receive_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Receive\",\"refId\":\"A\"},{\"expr\":\"instance:node_network_transmit_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} Transmit\",\"refId\":\"B\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Network Saturation (Drops Receive/Transmit)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Network\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":8,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(\\n  instance_device:node_disk_io_time_seconds:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  / scalar(count(instance_device:node_disk_io_time_seconds:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n) != 0\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{device}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk IO Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":9,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(\\n  instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  / scalar(count(instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n) != 0\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}} {{device}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk IO Saturation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Disk IO\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":10,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum without (device) (\\n  max without (fstype, mountpoint) ((\\n    node_filesystem_size_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\", cluster=\\\"$cluster\\\"}\\n    -\\n    node_filesystem_avail_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\", cluster=\\\"$cluster\\\"}\\n  ) != 0)\\n)\\n/ scalar(sum(max without (fstype, mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\", cluster=\\\"$cluster\\\"})))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk Space Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Disk Space\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"node-exporter-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(node_time_seconds, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Node Exporter / USE Method / Cluster\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/node-rsrc-use.yaml",
    "content": "{{- /*\nGenerated from 'node-rsrc-use' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.nodeExporter.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"node-rsrc-use\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  node-rsrc-use.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":1,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"30s\",\"rows\":[{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":2,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"instance:node_cpu_utilisation:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Utilisation\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":3,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"instance:node_load1_per_cpu:ratio{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Saturation\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Saturation (Load1 per CPU)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":4,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"instance:node_memory_utilisation:ratio{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Utilisation\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":5,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"instance:node_vmstat_pgmajfault:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Major page Faults\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Saturation (Major Page Faults)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"rds\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"rds\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":6,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[{\"alias\":\"/Receive/\",\"stack\":\"A\"},{\"alias\":\"/Transmit/\",\"stack\":\"B\",\"transform\":\"negative-Y\"}],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"instance:node_network_receive_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Receive\",\"refId\":\"A\"},{\"expr\":\"instance:node_network_transmit_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Transmit\",\"refId\":\"B\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Network Utilisation (Bytes Receive/Transmit)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":7,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[{\"alias\":\"/ Receive/\",\"stack\":\"A\"},{\"alias\":\"/ Transmit/\",\"stack\":\"B\",\"transform\":\"negative-Y\"}],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"instance:node_network_receive_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Receive\",\"refId\":\"A\"},{\"expr\":\"instance:node_network_transmit_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Transmit\",\"refId\":\"B\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Network Saturation (Drops Receive/Transmit)\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Network\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":8,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"instance_device:node_disk_io_time_seconds:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{device}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk IO Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":9,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{device}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk IO Saturation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Disk IO\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"fillGradient\":0,\"gridPos\":{},\"id\":10,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":false,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(1 -\\n  (\\n   max without (mountpoint, fstype) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"})\\n   /\\n   max without (mountpoint, fstype) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"})\\n  ) != 0\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{device}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk Space Utilisation\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Disk Space\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"node-exporter-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(node_time_seconds, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"instance\",\"options\":[],\"query\":\"label_values(node_exporter_build_info{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}, instance)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Node Exporter / USE Method / Node\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/nodes-darwin.yaml",
    "content": "{{- /*\nGenerated from 'nodes-darwin' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.nodeExporter.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"nodes-darwin\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  nodes-darwin.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":1,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"30s\",\"rows\":[{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":2,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(\\n  (1 - sum without (mode) (rate(node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=~\\\"idle|iowait|steal\\\", instance=\\\"$instance\\\"}[$__rate_interval])))\\n/ ignoring(cpu) group_left\\n  count without (cpu, mode) (node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=\\\"idle\\\", instance=\\\"$instance\\\"})\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":5,\"legendFormat\":\"{{cpu}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":1,\"min\":0,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":1,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":0,\"fillGradient\":0,\"gridPos\":{},\"id\":3,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"node_load1{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"1m load average\",\"refId\":\"A\"},{\"expr\":\"node_load5{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"5m load average\",\"refId\":\"B\"},{\"expr\":\"node_load15{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"15m load average\",\"refId\":\"C\"},{\"expr\":\"count(node_cpu_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", mode=\\\"idle\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"logical cores\",\"refId\":\"D\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Load Average\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":4,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":9,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"node_memory_total_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Physical Memory\",\"refId\":\"A\"},{\"expr\":\"(\\n    node_memory_internal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"} -\\n    node_memory_purgeable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"} +\\n    node_memory_wired_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"} +\\n    node_memory_compressed_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Memory Used\",\"refId\":\"B\"},{\"expr\":\"(\\n    node_memory_internal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"} -\\n    node_memory_purgeable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"App Memory\",\"refId\":\"C\"},{\"expr\":\"node_memory_wired_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Wired Memory\",\"refId\":\"D\"},{\"expr\":\"node_memory_compressed_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Compressed\",\"refId\":\"E\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"max\":100,\"min\":0,\"thresholds\":{\"mode\":\"absolute\",\"steps\":[{\"color\":\"rgba(50, 172, 45, 0.97)\"},{\"color\":\"rgba(237, 129, 40, 0.89)\",\"value\":80},{\"color\":\"rgba(245, 54, 54, 0.9)\",\"value\":90}]},\"unit\":\"percent\"}},\"gridPos\":{},\"id\":5,\"span\":3,\"targets\":[{\"expr\":\"(\\n    (\\n      avg(node_memory_internal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}) -\\n      avg(node_memory_purgeable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}) +\\n      avg(node_memory_wired_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}) +\\n      avg(node_memory_compressed_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"})\\n    ) /\\n    avg(node_memory_total_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"})\\n)\\n*\\n100\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"\"}],\"title\":\"Memory Usage\",\"transparent\":false,\"type\":\"gauge\"}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":0,\"fillGradient\":0,\"gridPos\":{},\"id\":6,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[{\"alias\":\"/ read| written/\",\"yaxis\":1},{\"alias\":\"/ io time/\",\"yaxis\":2}],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(node_disk_read_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{device}} read\",\"refId\":\"A\"},{\"expr\":\"rate(node_disk_written_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{device}} written\",\"refId\":\"B\"},{\"expr\":\"rate(node_disk_io_time_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{device}} io time\",\"refId\":\"C\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk I/O\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"custom\":{},\"thresholds\":{\"mode\":\"absolute\",\"steps\":[{\"color\":\"green\"},{\"color\":\"yellow\",\"value\":0.8},{\"color\":\"red\",\"value\":0.9}]},\"unit\":\"decbytes\"},\"overrides\":[{\"matcher\":{\"id\":\"byName\",\"options\":\"Mounted on\"},\"properties\":[{\"id\":\"custom.width\",\"value\":260}]},{\"matcher\":{\"id\":\"byName\",\"options\":\"Size\"},\"properties\":[{\"id\":\"custom.width\",\"value\":93}]},{\"matcher\":{\"id\":\"byName\",\"options\":\"Used\"},\"properties\":[{\"id\":\"custom.width\",\"value\":72}]},{\"matcher\":{\"id\":\"byName\",\"options\":\"Available\"},\"properties\":[{\"id\":\"custom.width\",\"value\":88}]},{\"matcher\":{\"id\":\"byName\",\"options\":\"Used, %\"},\"properties\":[{\"id\":\"unit\",\"value\":\"percentunit\"},{\"id\":\"custom.displayMode\",\"value\":\"gradient-gauge\"},{\"id\":\"max\",\"value\":1},{\"id\":\"min\",\"value\":0}]}]},\"gridPos\":{},\"id\":7,\"span\":6,\"targets\":[{\"expr\":\"max by (mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\"},{\"expr\":\"max by (mountpoint) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\"}],\"title\":\"Disk Space Usage\",\"transformations\":[{\"id\":\"groupBy\",\"options\":{\"fields\":{\"Value #A\":{\"aggregations\":[\"lastNotNull\"],\"operation\":\"aggregate\"},\"Value #B\":{\"aggregations\":[\"lastNotNull\"],\"operation\":\"aggregate\"},\"mountpoint\":{\"aggregations\":[],\"operation\":\"groupby\"}}}},{\"id\":\"merge\",\"options\":{}},{\"id\":\"calculateField\",\"options\":{\"alias\":\"Used\",\"binary\":{\"left\":\"Value #A (lastNotNull)\",\"operator\":\"-\",\"reducer\":\"sum\",\"right\":\"Value #B (lastNotNull)\"},\"mode\":\"binary\",\"reduce\":{\"reducer\":\"sum\"}}},{\"id\":\"calculateField\",\"options\":{\"alias\":\"Used, %\",\"binary\":{\"left\":\"Used\",\"operator\":\"/\",\"reducer\":\"sum\",\"right\":\"Value #A (lastNotNull)\"},\"mode\":\"binary\",\"reduce\":{\"reducer\":\"sum\"}}},{\"id\":\"organize\",\"options\":{\"excludeByName\":{},\"indexByName\":{},\"renameByName\":{\"Value #A (lastNotNull)\":\"Size\",\"Value #B (lastNotNull)\":\"Available\",\"mountpoint\":\"Mounted on\"}}},{\"id\":\"sortBy\",\"options\":{\"fields\":{},\"sort\":[{\"field\":\"Mounted on\"}]}}],\"transparent\":false,\"type\":\"table\"}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Disk\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"Network received (bits/s)\",\"fill\":0,\"fillGradient\":0,\"gridPos\":{},\"id\":8,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(node_network_receive_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{device}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Network Received\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"Network transmitted (bits/s)\",\"fill\":0,\"fillGradient\":0,\"gridPos\":{},\"id\":9,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(node_network_transmit_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{device}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Network Transmitted\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Network\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"node-exporter-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":\"Instance\",\"multi\":false,\"name\":\"instance\",\"options\":[],\"query\":\"label_values(node_uname_info{job=\\\"node-exporter\\\", sysname=\\\"Darwin\\\"}, instance)\",\"refresh\":2,\"regex\":\"\",\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Node Exporter / MacOS\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/nodes.yaml",
    "content": "{{- /*\nGenerated from 'nodes' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.nodeExporter.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"nodes\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  nodes.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":1,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"30s\",\"rows\":[{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":2,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(\\n  (1 - sum without (mode) (rate(node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=~\\\"idle|iowait|steal\\\", instance=\\\"$instance\\\"}[$__rate_interval])))\\n/ ignoring(cpu) group_left\\n  count without (cpu, mode) (node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=\\\"idle\\\", instance=\\\"$instance\\\"})\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":5,\"legendFormat\":\"{{cpu}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU Usage\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":1,\"min\":0,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":1,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":0,\"fillGradient\":0,\"gridPos\":{},\"id\":3,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"node_load1{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"1m load average\",\"refId\":\"A\"},{\"expr\":\"node_load5{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"5m load average\",\"refId\":\"B\"},{\"expr\":\"node_load15{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"15m load average\",\"refId\":\"C\"},{\"expr\":\"count(node_cpu_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", mode=\\\"idle\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"logical cores\",\"refId\":\"D\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Load Average\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"CPU\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":4,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":9,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(\\n  node_memory_MemTotal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n-\\n  node_memory_MemFree_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n-\\n  node_memory_Buffers_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n-\\n  node_memory_Cached_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"memory used\",\"refId\":\"A\"},{\"expr\":\"node_memory_Buffers_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"memory buffers\",\"refId\":\"B\"},{\"expr\":\"node_memory_Cached_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"memory cached\",\"refId\":\"C\"},{\"expr\":\"node_memory_MemFree_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"memory free\",\"refId\":\"D\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory Usage\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"max\":100,\"min\":0,\"thresholds\":{\"mode\":\"absolute\",\"steps\":[{\"color\":\"rgba(50, 172, 45, 0.97)\"},{\"color\":\"rgba(237, 129, 40, 0.89)\",\"value\":80},{\"color\":\"rgba(245, 54, 54, 0.9)\",\"value\":90}]},\"unit\":\"percent\"}},\"gridPos\":{},\"id\":5,\"span\":3,\"targets\":[{\"expr\":\"100 -\\n(\\n  avg(node_memory_MemAvailable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}) /\\n  avg(node_memory_MemTotal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"})\\n* 100\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"\"}],\"title\":\"Memory Usage\",\"transparent\":false,\"type\":\"gauge\"}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Memory\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":0,\"fillGradient\":0,\"gridPos\":{},\"id\":6,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[{\"alias\":\"/ read| written/\",\"yaxis\":1},{\"alias\":\"/ io time/\",\"yaxis\":2}],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(node_disk_read_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{device}} read\",\"refId\":\"A\"},{\"expr\":\"rate(node_disk_written_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{device}} written\",\"refId\":\"B\"},{\"expr\":\"rate(node_disk_io_time_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{device}} io time\",\"refId\":\"C\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Disk I/O\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"percentunit\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"datasource\":\"$datasource\",\"fieldConfig\":{\"defaults\":{\"custom\":{},\"thresholds\":{\"mode\":\"absolute\",\"steps\":[{\"color\":\"green\"},{\"color\":\"yellow\",\"value\":0.8},{\"color\":\"red\",\"value\":0.9}]},\"unit\":\"decbytes\"},\"overrides\":[{\"matcher\":{\"id\":\"byName\",\"options\":\"Mounted on\"},\"properties\":[{\"id\":\"custom.width\",\"value\":260}]},{\"matcher\":{\"id\":\"byName\",\"options\":\"Size\"},\"properties\":[{\"id\":\"custom.width\",\"value\":93}]},{\"matcher\":{\"id\":\"byName\",\"options\":\"Used\"},\"properties\":[{\"id\":\"custom.width\",\"value\":72}]},{\"matcher\":{\"id\":\"byName\",\"options\":\"Available\"},\"properties\":[{\"id\":\"custom.width\",\"value\":88}]},{\"matcher\":{\"id\":\"byName\",\"options\":\"Used, %\"},\"properties\":[{\"id\":\"unit\",\"value\":\"percentunit\"},{\"id\":\"custom.displayMode\",\"value\":\"gradient-gauge\"},{\"id\":\"max\",\"value\":1},{\"id\":\"min\",\"value\":0}]}]},\"gridPos\":{},\"id\":7,\"span\":6,\"targets\":[{\"expr\":\"max by (mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\"},{\"expr\":\"max by (mountpoint) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\"}],\"title\":\"Disk Space Usage\",\"transformations\":[{\"id\":\"groupBy\",\"options\":{\"fields\":{\"Value #A\":{\"aggregations\":[\"lastNotNull\"],\"operation\":\"aggregate\"},\"Value #B\":{\"aggregations\":[\"lastNotNull\"],\"operation\":\"aggregate\"},\"mountpoint\":{\"aggregations\":[],\"operation\":\"groupby\"}}}},{\"id\":\"merge\",\"options\":{}},{\"id\":\"calculateField\",\"options\":{\"alias\":\"Used\",\"binary\":{\"left\":\"Value #A (lastNotNull)\",\"operator\":\"-\",\"reducer\":\"sum\",\"right\":\"Value #B (lastNotNull)\"},\"mode\":\"binary\",\"reduce\":{\"reducer\":\"sum\"}}},{\"id\":\"calculateField\",\"options\":{\"alias\":\"Used, %\",\"binary\":{\"left\":\"Used\",\"operator\":\"/\",\"reducer\":\"sum\",\"right\":\"Value #A (lastNotNull)\"},\"mode\":\"binary\",\"reduce\":{\"reducer\":\"sum\"}}},{\"id\":\"organize\",\"options\":{\"excludeByName\":{},\"indexByName\":{},\"renameByName\":{\"Value #A (lastNotNull)\":\"Size\",\"Value #B (lastNotNull)\":\"Available\",\"mountpoint\":\"Mounted on\"}}},{\"id\":\"sortBy\",\"options\":{\"fields\":{},\"sort\":[{\"field\":\"Mounted on\"}]}}],\"transparent\":false,\"type\":\"table\"}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Disk\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"Network received (bits/s)\",\"fill\":0,\"fillGradient\":0,\"gridPos\":{},\"id\":8,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(node_network_receive_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{device}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Network Received\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"description\":\"Network transmitted (bits/s)\",\"fill\":0,\"fillGradient\":0,\"gridPos\":{},\"id\":9,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(node_network_transmit_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{device}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Network Transmitted\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Network\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"node-exporter-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":\"Instance\",\"multi\":false,\"name\":\"instance\",\"options\":[],\"query\":\"label_values(node_uname_info{job=\\\"node-exporter\\\", sysname!=\\\"Darwin\\\"}, instance)\",\"refresh\":2,\"regex\":\"\",\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Node Exporter / Nodes\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml",
    "content": "{{- /*\nGenerated from 'persistentvolumesusage' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"persistentvolumesusage\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  persistentvolumesusage.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":2,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":true,\"current\":true,\"max\":true,\"min\":true,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":9,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"(\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n  -\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"Used Space\",\"refId\":\"A\"},{\"expr\":\"sum without(instance, node) (topk(1, (kubelet_volume_stats_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"Free Space\",\"refId\":\"B\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Volume Space Usage\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"rgba(50, 172, 45, 0.97)\",\"rgba(237, 129, 40, 0.89)\",\"rgba(245, 54, 54, 0.9)\"],\"datasource\":\"$datasource\",\"format\":\"percent\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":true,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"gridPos\":{},\"id\":3,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"rightSide\":true},\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"nullPointMode\":\"connected\",\"nullText\":null,\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":3,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"tableColumn\":\"\",\"targets\":[{\"expr\":\"max without(instance,node) (\\n(\\n  topk(1, kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n  -\\n  topk(1, kubelet_volume_stats_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n)\\n/\\ntopk(1, kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n* 100)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\"}],\"thresholds\":\"80, 90\",\"title\":\"Volume Space Usage\",\"tooltip\":{\"shared\":false},\"type\":\"singlestat\",\"valueFontSize\":\"80%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"current\"}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":4,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":true,\"current\":true,\"max\":true,\"min\":true,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":9,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum without(instance, node) (topk(1, (kubelet_volume_stats_inodes_used{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"Used inodes\",\"refId\":\"A\"},{\"expr\":\"(\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_inodes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n  -\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_inodes_used{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\" Free inodes\",\"refId\":\"B\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Volume inodes Usage\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"none\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"none\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"rgba(50, 172, 45, 0.97)\",\"rgba(237, 129, 40, 0.89)\",\"rgba(245, 54, 54, 0.9)\"],\"datasource\":\"$datasource\",\"format\":\"percent\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":true,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"gridPos\":{},\"id\":5,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"rightSide\":true},\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"nullPointMode\":\"connected\",\"nullText\":null,\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":3,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"tableColumn\":\"\",\"targets\":[{\"expr\":\"max without(instance,node) (\\ntopk(1, kubelet_volume_stats_inodes_used{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n/\\ntopk(1, kubelet_volume_stats_inodes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n* 100)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\"}],\"thresholds\":\"80, 90\",\"title\":\"Volume inodes Usage\",\"tooltip\":{\"shared\":false},\"type\":\"singlestat\",\"valueFontSize\":\"80%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"current\"}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":\"cluster\",\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(kubelet_volume_stats_capacity_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":\"Namespace\",\"multi\":false,\"name\":\"namespace\",\"options\":[],\"query\":\"label_values(kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"}, namespace)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":\"PersistentVolumeClaim\",\"multi\":false,\"name\":\"volume\",\"options\":[],\"query\":\"label_values(kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\"}, persistentvolumeclaim)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-7d\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Persistent Volumes\",\"uid\":\"919b92a8e8041bd567af9edab12c840c\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/pod-total.yaml",
    "content": "{{- /*\nGenerated from 'pod-total' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"pod-total\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  pod-total.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[{\"builtIn\":1,\"datasource\":\"-- Grafana --\",\"enable\":true,\"hide\":true,\"iconColor\":\"rgba(0, 211, 255, 1)\",\"name\":\"Annotations & Alerts\",\"type\":\"dashboard\"}]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"panels\":[{\"collapse\":false,\"collapsed\":false,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":0},\"id\":2,\"panels\":[],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Current Bandwidth\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"#299c46\",\"rgba(237, 129, 40, 0.89)\",\"#d44a3a\"],\"datasource\":\"$datasource\",\"decimals\":0,\"format\":\"time_series\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":false,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":1},\"height\":9,\"id\":3,\"interval\":null,\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"minSpan\":12,\"nullPointMode\":\"connected\",\"nullText\":null,\"options\":{\"fieldOptions\":{\"calcs\":[\"last\"],\"defaults\":{\"max\":10000000000,\"min\":0,\"title\":\"$namespace: $pod\",\"unit\":\"Bps\"},\"mappings\":[],\"override\":{},\"thresholds\":[{\"color\":\"dark-green\",\"index\":0,\"value\":null},{\"color\":\"dark-yellow\",\"index\":1,\"value\":5000000000},{\"color\":\"dark-red\",\"index\":2,\"value\":7000000000}],\"values\":false}},\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":12,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"tableColumn\":\"\",\"targets\":[{\"expr\":\"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution]))\",\"format\":\"time_series\",\"instant\":null,\"intervalFactor\":1,\"legendFormat\":\"\",\"refId\":\"A\"}],\"thresholds\":\"\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Rate of Bytes Received\",\"type\":\"gauge\",\"valueFontSize\":\"80%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"current\"},{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"#299c46\",\"rgba(237, 129, 40, 0.89)\",\"#d44a3a\"],\"datasource\":\"$datasource\",\"decimals\":0,\"format\":\"time_series\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":false,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":1},\"height\":9,\"id\":4,\"interval\":null,\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"minSpan\":12,\"nullPointMode\":\"connected\",\"nullText\":null,\"options\":{\"fieldOptions\":{\"calcs\":[\"last\"],\"defaults\":{\"max\":10000000000,\"min\":0,\"title\":\"$namespace: $pod\",\"unit\":\"Bps\"},\"mappings\":[],\"override\":{},\"thresholds\":[{\"color\":\"dark-green\",\"index\":0,\"value\":null},{\"color\":\"dark-yellow\",\"index\":1,\"value\":5000000000},{\"color\":\"dark-red\",\"index\":2,\"value\":7000000000}],\"values\":false}},\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":12,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"tableColumn\":\"\",\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution]))\",\"format\":\"time_series\",\"instant\":null,\"intervalFactor\":1,\"legendFormat\":\"\",\"refId\":\"A\"}],\"thresholds\":\"\",\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Rate of Bytes Transmitted\",\"type\":\"gauge\",\"valueFontSize\":\"80%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"current\"},{\"collapse\":false,\"collapsed\":false,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":10},\"id\":5,\"panels\":[],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Bandwidth\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":11},\"id\":6,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Receive Bandwidth\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":11},\"id\":7,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Transmit Bandwidth\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":20},\"id\":8,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":10,\"w\":12,\"x\":0,\"y\":21},\"id\":9,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":10,\"w\":12,\"x\":12,\"y\":21},\"id\":10,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Packets\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":21},\"id\":11,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":10,\"w\":12,\"x\":0,\"y\":32},\"id\":12,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets Dropped\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":10,\"w\":12,\"x\":12,\"y\":32},\"id\":13,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets Dropped\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Errors\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"refresh\":\"10s\",\"rows\":[],\"schemaVersion\":18,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":\".+\",\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"kube-system\",\"value\":\"kube-system\"},\"datasource\":\"$datasource\",\"definition\":\"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\"hide\":0,\"includeAll\":true,\"label\":null,\"multi\":false,\"name\":\"namespace\",\"options\":[],\"query\":\"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":\".+\",\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"definition\":\"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, pod)\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"pod\",\"options\":[],\"query\":\"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, pod)\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"5m\",\"value\":\"5m\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"resolution\",\"options\":[{\"selected\":false,\"text\":\"30s\",\"value\":\"30s\"},{\"selected\":true,\"text\":\"5m\",\"value\":\"5m\"},{\"selected\":false,\"text\":\"1h\",\"value\":\"1h\"}],\"query\":\"30s,5m,1h\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"interval\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"5m\",\"value\":\"5m\"},\"datasource\":\"$datasource\",\"hide\":2,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"interval\",\"options\":[{\"selected\":true,\"text\":\"4h\",\"value\":\"4h\"}],\"query\":\"4h\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"interval\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Networking / Pod\",\"uid\":\"7a18067ce943a40ae25454675c19ff5c\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml",
    "content": "{{- /*\nGenerated from 'prometheus-remote-write' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.prometheus.prometheusSpec.remoteWriteDashboards }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"prometheus-remote-write\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  prometheus-remote-write.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"60s\",\"rows\":[{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":2,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"(\\n  prometheus_remote_storage_highest_timestamp_in_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"} \\n-  \\n  ignoring(remote_name, url) group_right(instance) (prometheus_remote_storage_queue_highest_sent_timestamp_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"} != 0)\\n)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Highest Timestamp In vs. Highest Timestamp Sent\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":3,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"clamp_min(\\n  rate(prometheus_remote_storage_highest_timestamp_in_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])  \\n- \\n  ignoring (remote_name, url) group_right(instance) rate(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\\n, 0)\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate[5m]\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Timestamps\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":4,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(\\n  prometheus_remote_storage_samples_in_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\\n- \\n  ignoring(remote_name, url) group_right(instance) (rate(prometheus_remote_storage_succeeded_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]))\\n- \\n  (rate(prometheus_remote_storage_dropped_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_dropped_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]))\\n\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate, in vs. succeeded or dropped [5m]\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Samples\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":5,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"minSpan\":6,\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"prometheus_remote_storage_shards{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Shards\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":6,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"prometheus_remote_storage_shards_max{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Max Shards\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":7,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"prometheus_remote_storage_shards_min{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Min Shards\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":8,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"prometheus_remote_storage_shards_desired{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Desired Shards\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Shards\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":9,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"prometheus_remote_storage_shard_capacity{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Shard Capacity\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":10,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"prometheus_remote_storage_pending_samples{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"} or prometheus_remote_storage_samples_pending{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Pending Samples\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Shard Details\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":11,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"prometheus_tsdb_wal_segment_current{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"TSDB Current Segment\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"none\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":12,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"prometheus_wal_watcher_current_segment{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{consumer}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Remote Write Current Segment\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"none\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Segments\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":13,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(prometheus_remote_storage_dropped_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_dropped_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Dropped Samples\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":14,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(prometheus_remote_storage_failed_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Failed Samples\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":15,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(prometheus_remote_storage_retried_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_retried_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Retried Samples\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":16,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":3,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(prometheus_remote_storage_enqueue_retries_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Enqueue Retries\",\"tooltip\":{\"shared\":true,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Misc. Rates\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"prometheus-mixin\"],\"templating\":{\"list\":[{\"hide\":0,\"label\":null,\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{\"text\":{\"selected\":true,\"text\":\"All\",\"value\":\"$__all\"},\"value\":{\"selected\":true,\"text\":\"All\",\"value\":\"$__all\"}},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":true,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(kube_pod_container_info{image=~\\\".*prometheus.*\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{\"text\":{\"selected\":true,\"text\":\"All\",\"value\":\"$__all\"},\"value\":{\"selected\":true,\"text\":\"All\",\"value\":\"$__all\"}},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":true,\"label\":null,\"multi\":false,\"name\":\"instance\",\"options\":[],\"query\":\"label_values(prometheus_build_info{cluster=~\\\"$cluster\\\"}, instance)\",\"refresh\":2,\"regex\":\"\",\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":true,\"label\":null,\"multi\":false,\"name\":\"url\",\"options\":[],\"query\":\"label_values(prometheus_remote_storage_shards{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}, url)\",\"refresh\":2,\"regex\":\"\",\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-6h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Prometheus / Remote Write\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/prometheus.yaml",
    "content": "{{- /*\nGenerated from 'prometheus' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"prometheus\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  prometheus.json: |-\n    {{`{\"annotations\":{\"list\":[]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"links\":[],\"refresh\":\"60s\",\"rows\":[{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":1,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"styles\":[{\"alias\":\"Time\",\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"pattern\":\"Time\",\"type\":\"hidden\"},{\"alias\":\"Count\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #A\",\"thresholds\":[],\"type\":\"hidden\",\"unit\":\"short\"},{\"alias\":\"Uptime\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"Value #B\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"s\"},{\"alias\":\"Instance\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"instance\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"Job\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"job\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"Version\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"link\":false,\"linkTargetBlank\":false,\"linkTooltip\":\"Drill down\",\"linkUrl\":\"\",\"pattern\":\"version\",\"thresholds\":[],\"type\":\"number\",\"unit\":\"short\"},{\"alias\":\"\",\"colorMode\":null,\"colors\":[],\"dateFormat\":\"YYYY-MM-DD HH:mm:ss\",\"decimals\":2,\"pattern\":\"/.*/\",\"thresholds\":[],\"type\":\"string\",\"unit\":\"short\"}],\"targets\":[{\"expr\":\"count by (job, instance, version) (prometheus_build_info{job=~\\\"$job\\\", instance=~\\\"$instance\\\"})\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\",\"step\":10},{\"expr\":\"max by (job, instance) (time() - process_start_time_seconds{job=~\\\"$job\\\", instance=~\\\"$instance\\\"})\",\"format\":\"table\",\"instant\":true,\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"B\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Prometheus Stats\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"transform\":\"table\",\"type\":\"table\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Prometheus Stats\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":2,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(prometheus_target_sync_length_seconds_sum{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m])) by (scrape_job) * 1e3\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{scrape_job}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Target Sync\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ms\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":3,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(prometheus_sd_discovered_targets{job=~\\\"$job\\\",instance=~\\\"$instance\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"Targets\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Targets\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Discovery\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"id\":4,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(prometheus_target_interval_length_seconds_sum{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m]) / rate(prometheus_target_interval_length_seconds_count{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m]) * 1e3\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{interval}} configured\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Scrape Interval Duration\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ms\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":5,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum by (job) (rate(prometheus_target_scrapes_exceeded_body_size_limit_total[1m]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"exceeded body size limit: {{job}}\",\"legendLink\":null,\"step\":10},{\"expr\":\"sum by (job) (rate(prometheus_target_scrapes_exceeded_sample_limit_total[1m]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"exceeded sample limit: {{job}}\",\"legendLink\":null,\"step\":10},{\"expr\":\"sum by (job) (rate(prometheus_target_scrapes_sample_duplicate_timestamp_total[1m]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"duplicate timestamp: {{job}}\",\"legendLink\":null,\"step\":10},{\"expr\":\"sum by (job) (rate(prometheus_target_scrapes_sample_out_of_bounds_total[1m]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"out of bounds: {{job}}\",\"legendLink\":null,\"step\":10},{\"expr\":\"sum by (job) (rate(prometheus_target_scrapes_sample_out_of_order_total[1m]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"out of order: {{job}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Scrape failures\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":6,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(prometheus_tsdb_head_samples_appended_total{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m])\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{job}} {{instance}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Appended Samples\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Retrieval\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":7,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"prometheus_tsdb_head_series{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{job}} {{instance}} head series\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Head Series\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":8,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"prometheus_tsdb_head_chunks{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{job}} {{instance}} head chunks\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Head Chunks\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Storage\",\"titleSize\":\"h6\"},{\"collapse\":false,\"height\":\"250px\",\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":9,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(prometheus_engine_query_duration_seconds_count{job=~\\\"$job\\\",instance=~\\\"$instance\\\",slice=\\\"inner_eval\\\"}[5m])\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{job}} {{instance}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Query Rate\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":10,\"id\":10,\"legend\":{\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"show\":true,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":0,\"links\":[],\"nullPointMode\":\"null as zero\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"max by (slice) (prometheus_engine_query_duration_seconds{quantile=\\\"0.9\\\",job=~\\\"$job\\\",instance=~\\\"$instance\\\"}) * 1e3\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{slice}}\",\"legendLink\":null,\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Stage Duration\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ms\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":false}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Query\",\"titleSize\":\"h6\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"prometheus-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":\".+\",\"current\":{\"selected\":true,\"text\":\"All\",\"value\":\"$__all\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":true,\"label\":\"job\",\"multi\":true,\"name\":\"job\",\"options\":[],\"query\":\"label_values(prometheus_build_info{job=\\\"prometheus-k8s\\\",namespace=\\\"monitoring\\\"}, job)\",\"refresh\":1,\"regex\":\"\",\"sort\":2,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":\".+\",\"current\":{\"selected\":true,\"text\":\"All\",\"value\":\"$__all\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":true,\"label\":\"instance\",\"multi\":true,\"name\":\"instance\",\"options\":[],\"query\":\"label_values(prometheus_build_info{job=~\\\"$job\\\"}, instance)\",\"refresh\":1,\"regex\":\"\",\"sort\":2,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Prometheus / Overview\",\"uid\":\"\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/proxy.yaml",
    "content": "{{- /*\nGenerated from 'proxy' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.kubeProxy.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"proxy\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  proxy.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"#299c46\",\"rgba(237, 129, 40, 0.89)\",\"#d44a3a\"],\"datasource\":\"$datasource\",\"format\":\"none\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":false,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"gridPos\":{},\"id\":2,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"rightSide\":true},\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"nullPointMode\":\"connected\",\"nullText\":null,\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":2,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"tableColumn\":\"\",\"targets\":[{\"expr\":\"sum(up{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\"}],\"thresholds\":\"\",\"title\":\"Up\",\"tooltip\":{\"shared\":false},\"type\":\"singlestat\",\"valueFontSize\":\"80%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"min\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":3,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":5,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(kubeproxy_sync_proxy_rules_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"rate\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rules Sync Rate\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":4,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":5,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99,rate(kubeproxy_sync_proxy_rules_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rule Sync Latency 99th Quantile\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":5,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(kubeproxy_network_programming_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"rate\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Network Programming Rate\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":6,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":6,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(kubeproxy_network_programming_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Network Programming Latency 99th Quantile\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":7,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"2xx\",\"refId\":\"A\"},{\"expr\":\"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"3xx\",\"refId\":\"B\"},{\"expr\":\"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"4xx\",\"refId\":\"C\"},{\"expr\":\"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"5xx\",\"refId\":\"D\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Kube API Request Rate\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":8,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":8,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\",verb=\\\"POST\\\"}[$__rate_interval])) by (verb, url, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{verb}} {{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Post Request Latency 99th Quantile\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":9,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\", verb=\\\"GET\\\"}[$__rate_interval])) by (verb, url, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{verb}} {{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Get Request Latency 99th Quantile\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":10,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"process_resident_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":11,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\"}[$__rate_interval])\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU usage\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":12,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"go_goroutines{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Goroutines\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":\"cluster\",\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kube-proxy\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":true,\"label\":null,\"multi\":false,\"name\":\"instance\",\"options\":[],\"query\":\"label_values(up{job=\\\"kube-proxy\\\", cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\"}, instance)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Proxy\",\"uid\":\"632e265de029684c40b21cb76bca4f94\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/scheduler.yaml",
    "content": "{{- /*\nGenerated from 'scheduler' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.kubeScheduler.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"scheduler\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  scheduler.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[]},\"editable\":false,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"refresh\":\"10s\",\"rows\":[{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"cacheTimeout\":null,\"colorBackground\":false,\"colorValue\":false,\"colors\":[\"#299c46\",\"rgba(237, 129, 40, 0.89)\",\"#d44a3a\"],\"datasource\":\"$datasource\",\"format\":\"none\",\"gauge\":{\"maxValue\":100,\"minValue\":0,\"show\":false,\"thresholdLabels\":false,\"thresholdMarkers\":true},\"gridPos\":{},\"id\":2,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"rightSide\":true},\"links\":[],\"mappingType\":1,\"mappingTypes\":[{\"name\":\"value to text\",\"value\":1},{\"name\":\"range to text\",\"value\":2}],\"maxDataPoints\":100,\"nullPointMode\":\"connected\",\"nullText\":null,\"postfix\":\"\",\"postfixFontSize\":\"50%\",\"prefix\":\"\",\"prefixFontSize\":\"50%\",\"rangeMaps\":[{\"from\":\"null\",\"text\":\"N/A\",\"to\":\"null\"}],\"span\":2,\"sparkline\":{\"fillColor\":\"rgba(31, 118, 189, 0.18)\",\"full\":false,\"lineColor\":\"rgb(31, 120, 193)\",\"show\":false},\"tableColumn\":\"\",\"targets\":[{\"expr\":\"sum(up{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\"})\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"\",\"refId\":\"A\"}],\"thresholds\":\"\",\"title\":\"Up\",\"tooltip\":{\"shared\":false},\"type\":\"singlestat\",\"valueFontSize\":\"80%\",\"valueMaps\":[{\"op\":\"=\",\"text\":\"N/A\",\"value\":\"null\"}],\"valueName\":\"min\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":3,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":5,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(scheduler_e2e_scheduling_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}} {{instance}} e2e\",\"refId\":\"A\"},{\"expr\":\"sum(rate(scheduler_binding_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}} {{instance}} binding\",\"refId\":\"B\"},{\"expr\":\"sum(rate(scheduler_scheduling_algorithm_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}} {{instance}} scheduling algorithm\",\"refId\":\"C\"},{\"expr\":\"sum(rate(scheduler_volume_scheduling_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}} {{instance}} volume\",\"refId\":\"D\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Scheduling Rate\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":4,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":5,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}} {{instance}} e2e\",\"refId\":\"A\"},{\"expr\":\"histogram_quantile(0.99, sum(rate(scheduler_binding_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}} {{instance}} binding\",\"refId\":\"B\"},{\"expr\":\"histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}} {{instance}} scheduling algorithm\",\"refId\":\"C\"},{\"expr\":\"histogram_quantile(0.99, sum(rate(scheduler_volume_scheduling_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{cluster}} {{instance}} volume\",\"refId\":\"D\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Scheduling latency 99th Quantile\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":5,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"2xx\",\"refId\":\"A\"},{\"expr\":\"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"3xx\",\"refId\":\"B\"},{\"expr\":\"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"4xx\",\"refId\":\"C\"},{\"expr\":\"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"5xx\",\"refId\":\"D\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Kube API Request Rate\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"ops\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":6,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":8,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\", verb=\\\"POST\\\"}[$__rate_interval])) by (verb, url, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{verb}} {{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Post Request Latency 99th Quantile\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":7,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":true},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\", verb=\\\"GET\\\"}[$__rate_interval])) by (verb, url, le))\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{verb}} {{url}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Get Request Latency 99th Quantile\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"s\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":8,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"process_resident_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Memory\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":9,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"CPU usage\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"bytes\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":1,\"fillGradient\":0,\"gridPos\":{},\"id\":10,\"interval\":\"1m\",\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":false,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":1,\"links\":[],\"nullPointMode\":\"null\",\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":4,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"go_goroutines{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}\",\"format\":\"time_series\",\"intervalFactor\":2,\"legendFormat\":\"{{instance}}\",\"refId\":\"A\"}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Goroutines\",\"tooltip\":{\"shared\":false,\"sort\":0,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true},{\"format\":\"short\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":null,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":false,\"title\":\"Dashboard Row\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"schemaVersion\":14,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":\"cluster\",\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(up{job=\\\"kube-scheduler\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":true,\"label\":null,\"multi\":false,\"name\":\"instance\",\"options\":[],\"query\":\"label_values(up{job=\\\"kube-scheduler\\\", cluster=\\\"$cluster\\\"}, instance)\",\"refresh\":2,\"regex\":\"\",\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Scheduler\",\"uid\":\"2e6b6a3b4bddf1427b3a55aa1311c656\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/grafana/dashboards-1.14/workload-total.yaml",
    "content": "{{- /*\nGenerated from 'workload-total' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/grafana-dashboardDefinitions.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  namespace: {{ template \"kube-prometheus-stack-grafana.namespace\" . }}\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) \"workload-total\" | trunc 63 | trimSuffix \"-\" }}\n  annotations:\n{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }}\n  labels:\n    {{- if $.Values.grafana.sidecar.dashboards.label }}\n    {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue \"1\" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }}\n    {{- end }}\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-grafana\n{{ include \"kube-prometheus-stack.labels\" $ | indent 4 }}\ndata:\n  workload-total.json: |-\n    {{`{\"__inputs\":[],\"__requires\":[],\"annotations\":{\"list\":[{\"builtIn\":1,\"datasource\":\"-- Grafana --\",\"enable\":true,\"hide\":true,\"iconColor\":\"rgba(0, 211, 255, 1)\",\"name\":\"Annotations & Alerts\",\"type\":\"dashboard\"}]},\"editable\":true,\"gnetId\":null,\"graphTooltip\":0,\"hideControls\":false,\"id\":null,\"links\":[],\"panels\":[{\"collapse\":false,\"collapsed\":false,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":0},\"id\":2,\"panels\":[],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Current Bandwidth\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"aliasColors\":{},\"bars\":true,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":1},\"id\":3,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"sort\":\"current\",\"sortDesc\":true,\"total\":false,\"values\":true},\"lines\":false,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{ pod }}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Rate of Bytes Received\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"series\",\"name\":null,\"show\":false,\"values\":[\"current\"]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":true,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":1},\"id\":4,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"sort\":\"current\",\"sortDesc\":true,\"total\":false,\"values\":true},\"lines\":false,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{ pod }}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Current Rate of Bytes Transmitted\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"series\",\"name\":null,\"show\":false,\"values\":[\"current\"]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":10},\"id\":5,\"panels\":[{\"aliasColors\":{},\"bars\":true,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":11},\"id\":6,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"sort\":\"current\",\"sortDesc\":true,\"total\":false,\"values\":true},\"lines\":false,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(avg(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{ pod }}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Rate of Bytes Received\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"series\",\"name\":null,\"show\":false,\"values\":[\"current\"]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":true,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":11},\"id\":7,\"legend\":{\"alignAsTable\":true,\"avg\":false,\"current\":true,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":true,\"show\":true,\"sideWidth\":null,\"sort\":\"current\",\"sortDesc\":true,\"total\":false,\"values\":true},\"lines\":false,\"linewidth\":1,\"links\":[],\"minSpan\":24,\"nullPointMode\":\"null\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":24,\"stack\":false,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(avg(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{ pod }}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Average Rate of Bytes Transmitted\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"series\",\"name\":null,\"show\":false,\"values\":[\"current\"]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Average Bandwidth\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":false,\"collapsed\":false,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":11},\"id\":8,\"panels\":[],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Bandwidth HIstory\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":12},\"id\":9,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Receive Bandwidth\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":12},\"id\":10,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Transmit Bandwidth\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"Bps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":21},\"id\":11,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":22},\"id\":12,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":22},\"id\":13,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Packets\",\"titleSize\":\"h6\",\"type\":\"row\"},{\"collapse\":true,\"collapsed\":true,\"gridPos\":{\"h\":1,\"w\":24,\"x\":0,\"y\":22},\"id\":14,\"panels\":[{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":0,\"y\":23},\"id\":15,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Received Packets Dropped\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]},{\"aliasColors\":{},\"bars\":false,\"dashLength\":10,\"dashes\":false,\"datasource\":\"$datasource\",\"fill\":2,\"fillGradient\":0,\"gridPos\":{\"h\":9,\"w\":12,\"x\":12,\"y\":23},\"id\":16,\"legend\":{\"alignAsTable\":false,\"avg\":false,\"current\":false,\"hideEmpty\":true,\"hideZero\":true,\"max\":false,\"min\":false,\"rightSide\":false,\"show\":true,\"sideWidth\":null,\"total\":false,\"values\":false},\"lines\":true,\"linewidth\":2,\"links\":[],\"minSpan\":12,\"nullPointMode\":\"connected\",\"paceLength\":10,\"percentage\":false,\"pointradius\":5,\"points\":false,\"renderer\":\"flot\",\"repeat\":null,\"seriesOverrides\":[],\"spaceLength\":10,\"span\":12,\"stack\":true,\"steppedLine\":false,\"targets\":[{\"expr\":\"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\"format\":\"time_series\",\"intervalFactor\":1,\"legendFormat\":\"{{pod}}\",\"refId\":\"A\",\"step\":10}],\"thresholds\":[],\"timeFrom\":null,\"timeShift\":null,\"title\":\"Rate of Transmitted Packets Dropped\",\"tooltip\":{\"shared\":true,\"sort\":2,\"value_type\":\"individual\"},\"type\":\"graph\",\"xaxis\":{\"buckets\":null,\"mode\":\"time\",\"name\":null,\"show\":true,\"values\":[]},\"yaxes\":[{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true},{\"format\":\"pps\",\"label\":null,\"logBase\":1,\"max\":null,\"min\":0,\"show\":true}]}],\"repeat\":null,\"repeatIteration\":null,\"repeatRowId\":null,\"showTitle\":true,\"title\":\"Errors\",\"titleSize\":\"h6\",\"type\":\"row\"}],\"refresh\":\"10s\",\"rows\":[],\"schemaVersion\":18,\"style\":\"dark\",\"tags\":[\"kubernetes-mixin\"],\"templating\":{\"list\":[{\"current\":{\"text\":\"default\",\"value\":\"default\"},\"hide\":0,\"label\":\"Data Source\",\"name\":\"datasource\",\"options\":[],\"query\":\"prometheus\",\"refresh\":1,\"regex\":\"\",\"type\":\"datasource\"},{\"allValue\":null,\"current\":{},\"datasource\":\"$datasource\",\"hide\":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"cluster\",\"options\":[],\"query\":\"label_values(kube_pod_info{job=\\\"kube-state-metrics\\\"}, cluster)\",\"refresh\":2,\"regex\":\"\",\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":\".+\",\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"kube-system\",\"value\":\"kube-system\"},\"datasource\":\"$datasource\",\"definition\":\"label_values(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\"}, namespace)\",\"hide\":0,\"includeAll\":true,\"label\":null,\"multi\":false,\"name\":\"namespace\",\"options\":[],\"query\":\"label_values(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\"}, namespace)\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"\",\"value\":\"\"},\"datasource\":\"$datasource\",\"definition\":\"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, workload)\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"workload\",\"options\":[],\"query\":\"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, workload)\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"deployment\",\"value\":\"deployment\"},\"datasource\":\"$datasource\",\"definition\":\"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\"}, workload_type)\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"type\",\"options\":[],\"query\":\"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\"}, workload_type)\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":0,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"query\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"5m\",\"value\":\"5m\"},\"datasource\":\"$datasource\",\"hide\":0,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"resolution\",\"options\":[{\"selected\":false,\"text\":\"30s\",\"value\":\"30s\"},{\"selected\":true,\"text\":\"5m\",\"value\":\"5m\"},{\"selected\":false,\"text\":\"1h\",\"value\":\"1h\"}],\"query\":\"30s,5m,1h\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"interval\",\"useTags\":false},{\"allValue\":null,\"auto\":false,\"auto_count\":30,\"auto_min\":\"10s\",\"current\":{\"text\":\"5m\",\"value\":\"5m\"},\"datasource\":\"$datasource\",\"hide\":2,\"includeAll\":false,\"label\":null,\"multi\":false,\"name\":\"interval\",\"options\":[{\"selected\":true,\"text\":\"4h\",\"value\":\"4h\"}],\"query\":\"4h\",\"refresh\":2,\"regex\":\"\",\"skipUrlSync\":false,\"sort\":1,\"tagValuesQuery\":\"\",\"tags\":[],\"tagsQuery\":\"\",\"type\":\"interval\",\"useTags\":false}]},\"time\":{\"from\":\"now-1h\",\"to\":\"now\"},\"timepicker\":{\"refresh_intervals\":[\"5s\",\"10s\",\"30s\",\"1m\",\"5m\",\"15m\",\"30m\",\"1h\",\"2h\",\"1d\"],\"time_options\":[\"5m\",\"15m\",\"1h\",\"6h\",\"12h\",\"24h\",\"2d\",\"7d\",\"30d\"]},\"timezone\": \"`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`\",\"title\":\"Kubernetes / Networking / Workload\",\"uid\":\"728bf77cc1166d2f3133bf25846876cc\",\"version\":0}`}}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/_rules.tpl",
    "content": "{{- /*\nGenerated file. Do not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- define \"rules.names\" }}\nrules:\n  - \"alertmanager.rules\"\n  - \"config-reloaders\"\n  - \"etcd\"\n  - \"general.rules\"\n  - \"k8s.rules\"\n  - \"kube-apiserver-availability.rules\"\n  - \"kube-apiserver-burnrate.rules\"\n  - \"kube-apiserver-histogram.rules\"\n  - \"kube-apiserver-slos\"\n  - \"kube-prometheus-general.rules\"\n  - \"kube-prometheus-node-recording.rules\"\n  - \"kube-scheduler.rules\"\n  - \"kube-state-metrics\"\n  - \"kubelet.rules\"\n  - \"kubernetes-apps\"\n  - \"kubernetes-resources\"\n  - \"kubernetes-storage\"\n  - \"kubernetes-system\"\n  - \"kubernetes-system-kube-proxy\"\n  - \"kubernetes-system-apiserver\"\n  - \"kubernetes-system-kubelet\"\n  - \"kubernetes-system-controller-manager\"\n  - \"kubernetes-system-scheduler\"\n  - \"node-exporter.rules\"\n  - \"node-exporter\"\n  - \"node.rules\"\n  - \"node-network\"\n  - \"prometheus-operator\"\n  - \"prometheus\"\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/additionalAlertRelabelConfigs.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigs }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus-am-relabel-confg\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- if .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations }}\n  annotations:\n{{ toYaml .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations | indent 4 }}\n{{- end }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus-am-relabel-confg\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\ndata:\n  additional-alert-relabel-configs.yaml: {{ toYaml .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigs | b64enc | quote }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/additionalAlertmanagerConfigs.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus-am-confg\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- if .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations }}\n  annotations:\n{{ toYaml .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations | indent 4 }}\n{{- end }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus-am-confg\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\ndata:\n  additional-alertmanager-configs.yaml: {{ tpl (toYaml .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs) . | b64enc | quote }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/additionalPrometheusRules.yaml",
    "content": "{{- if or .Values.additionalPrometheusRules .Values.additionalPrometheusRulesMap}}\napiVersion: v1\nkind: List\nmetadata:\n  name: {{ include \"kube-prometheus-stack.fullname\" $ }}-additional-prometheus-rules\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\nitems:\n{{- if .Values.additionalPrometheusRulesMap }}\n{{- range $prometheusRuleName, $prometheusRule := .Values.additionalPrometheusRulesMap }}\n  - apiVersion: monitoring.coreos.com/v1\n    kind: PrometheusRule\n    metadata:\n      name: {{ template \"kube-prometheus-stack.name\" $ }}-{{ $prometheusRuleName }}\n      namespace: {{ template \"kube-prometheus-stack.namespace\" $ }}\n      labels:\n        app: {{ template \"kube-prometheus-stack.name\" $ }}\n{{ include \"kube-prometheus-stack.labels\" $ | indent 8 }}\n    {{- if $prometheusRule.additionalLabels }}\n{{ toYaml $prometheusRule.additionalLabels | indent 8 }}\n    {{- end }}\n    spec:\n      groups:\n{{ toYaml $prometheusRule.groups| indent 8 }}\n{{- end }}\n{{- else }}\n{{- range .Values.additionalPrometheusRules }}\n  - apiVersion: monitoring.coreos.com/v1\n    kind: PrometheusRule\n    metadata:\n      name: {{ template \"kube-prometheus-stack.name\" $ }}-{{ .name }}\n      namespace: {{ template \"kube-prometheus-stack.namespace\" $ }}\n      labels:\n        app: {{ template \"kube-prometheus-stack.name\" $ }}\n{{ include \"kube-prometheus-stack.labels\" $ | indent 8 }}\n    {{- if .additionalLabels }}\n{{ toYaml .additionalLabels | indent 8 }}\n    {{- end }}\n    spec:\n      groups:\n{{ toYaml .groups| indent 8 }}\n{{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/additionalScrapeConfigs.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.additionalScrapeConfigs }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus-scrape-confg\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- if .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations }}\n  annotations:\n{{ toYaml .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations | indent 4 }}\n{{- end }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus-scrape-confg\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\ndata:\n{{- if  eq ( typeOf .Values.prometheus.prometheusSpec.additionalScrapeConfigs ) \"string\" }}\n  additional-scrape-configs.yaml: {{ tpl .Values.prometheus.prometheusSpec.additionalScrapeConfigs $ | b64enc | quote }}\n{{- else }}\n  additional-scrape-configs.yaml: {{ tpl (toYaml .Values.prometheus.prometheusSpec.additionalScrapeConfigs) $ | b64enc | quote }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/ciliumnetworkpolicy.yaml",
    "content": "{{- if and .Values.prometheus.networkPolicy.enabled (eq .Values.prometheus.networkPolicy.flavor \"cilium\") }}\napiVersion: cilium.io/v2\nkind: CiliumNetworkPolicy\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n    {{- include \"kube-prometheus-stack.labels\" . | nindent 4 }}\nspec:\n  endpointSelector:\n    {{- if .Values.prometheus.networkPolicy.cilium.endpointSelector }}\n    {{- toYaml .Values.prometheus.networkPolicy.cilium.endpointSelector | nindent 4 }}\n    {{- else }}\n    matchExpressions:\n      - {key: app.kubernetes.io/name, operator: In, values: [prometheus]}\n      - {key: prometheus, operator: In, values: [{{ template \"kube-prometheus-stack.prometheus.crname\" . }}]}\n    {{- end }}\n  {{- if and .Values.prometheus.networkPolicy.cilium .Values.prometheus.networkPolicy.cilium.egress }}  \n  egress:\n    {{ toYaml .Values.prometheus.networkPolicy.cilium.egress | nindent 4 }}\n  {{- end }}\n  {{- if and .Values.prometheus.networkPolicy.cilium .Values.prometheus.networkPolicy.cilium.ingress }}  \n  ingress:\n    {{ toYaml .Values.prometheus.networkPolicy.cilium.ingress | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/clusterrole.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.global.rbac.create }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nrules:\n# This permission are not in the kube-prometheus repo\n# they're grabbed from https://github.com/prometheus/prometheus/blob/master/documentation/examples/rbac-setup.yml\n- apiGroups: [\"\"]\n  resources:\n  - nodes\n  - nodes/metrics\n  - services\n  - endpoints\n  - pods\n  verbs: [\"get\", \"list\", \"watch\"]\n- apiGroups:\n  - \"networking.k8s.io\"\n  resources:\n  - ingresses\n  verbs: [\"get\", \"list\", \"watch\"]\n- nonResourceURLs: [\"/metrics\", \"/metrics/cadvisor\"]\n  verbs: [\"get\"]\n{{- if .Values.prometheus.additionalRulesForClusterRole }}\n{{ toYaml .Values.prometheus.additionalRulesForClusterRole | indent 0 }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/clusterrolebinding.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.global.rbac.create }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"kube-prometheus-stack.prometheus.serviceAccountName\" . }}\n    namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- end }}\n\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/csi-secret.yaml",
    "content": "{{- if and .Values.prometheus.prometheusSpec.thanos .Values.prometheus.prometheusSpec.thanos.secretProviderClass }}\n---\napiVersion: secrets-store.csi.x-k8s.io/v1alpha1\nkind: SecretProviderClass\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\nspec:\n{{ toYaml .Values.prometheus.prometheusSpec.thanos.secretProviderClass | indent 2 }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/extrasecret.yaml",
    "content": "{{- if .Values.prometheus.extraSecret.data -}}\n{{- $secretName := printf \"prometheus-%s-extra\" (include \"kube-prometheus-stack.fullname\" . ) -}}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ default $secretName .Values.prometheus.extraSecret.name }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- if .Values.prometheus.extraSecret.annotations }}\n  annotations:\n{{ toYaml .Values.prometheus.extraSecret.annotations | indent 4 }}\n{{- end }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n    app.kubernetes.io/component: prometheus\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\ndata:\n{{- range $key, $val := .Values.prometheus.extraSecret.data }}\n  {{ $key }}: {{ $val | b64enc | quote }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/ingress.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.ingress.enabled -}}\n  {{- $pathType := .Values.prometheus.ingress.pathType | default \"ImplementationSpecific\" -}}\n  {{- $serviceName := printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"prometheus\" -}}\n  {{- $servicePort := .Values.prometheus.ingress.servicePort | default .Values.prometheus.service.port -}}\n  {{- $routePrefix := list .Values.prometheus.prometheusSpec.routePrefix -}}\n  {{- $paths := .Values.prometheus.ingress.paths | default $routePrefix -}}\n  {{- $apiIsStable := eq (include \"kube-prometheus-stack.ingress.isStable\" .) \"true\" -}}\n  {{- $ingressSupportsPathType := eq (include \"kube-prometheus-stack.ingress.supportsPathType\" .) \"true\" -}}\napiVersion: {{ include \"kube-prometheus-stack.ingress.apiVersion\" . }}\nkind: Ingress\nmetadata:\n{{- if .Values.prometheus.ingress.annotations }}\n  annotations:\n{{ toYaml .Values.prometheus.ingress.annotations | indent 4 }}\n{{- end }}\n  name: {{ $serviceName }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.prometheus.ingress.labels }}\n{{ toYaml .Values.prometheus.ingress.labels | indent 4 }}\n{{- end }}\nspec:\n  {{- if $apiIsStable }}\n  {{- if .Values.prometheus.ingress.ingressClassName }}\n  ingressClassName: {{ .Values.prometheus.ingress.ingressClassName }}\n  {{- end }}\n  {{- end }}\n  rules:\n  {{- if .Values.prometheus.ingress.hosts }}\n  {{- range $host := .Values.prometheus.ingress.hosts }}\n    - host: {{ tpl $host $ }}\n      http:\n        paths:\n  {{- range $p := $paths }}\n          - path: {{ tpl $p $ }}\n            {{- if and $pathType $ingressSupportsPathType }}\n            pathType: {{ $pathType }}\n            {{- end }}\n            backend:\n              {{- if $apiIsStable }}\n              service:\n                name: {{ $serviceName }}\n                port:\n                  number: {{ $servicePort }}\n              {{- else }}\n              serviceName: {{ $serviceName }}\n              servicePort: {{ $servicePort }}\n    {{- end }}\n    {{- end -}}\n  {{- end -}}\n  {{- else }}\n    - http:\n        paths:\n  {{- range $p := $paths }}\n          - path: {{ tpl $p $ }}\n            {{- if and $pathType $ingressSupportsPathType }}\n            pathType: {{ $pathType }}\n            {{- end }}\n            backend:\n              {{- if $apiIsStable }}\n              service:\n                name: {{ $serviceName }}\n                port:\n                  number: {{ $servicePort }}\n              {{- else }}\n              serviceName: {{ $serviceName }}\n              servicePort: {{ $servicePort }}\n  {{- end }}\n  {{- end -}}\n  {{- end -}}\n  {{- if .Values.prometheus.ingress.tls }}\n  tls:\n{{ tpl (toYaml .Values.prometheus.ingress.tls | indent 4) . }}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/ingressThanosSidecar.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.thanosIngress.enabled }}\n{{- $pathType := .Values.prometheus.thanosIngress.pathType | default \"\" }}\n{{- $serviceName := printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"prometheus\" }}\n{{- $thanosPort := .Values.prometheus.thanosIngress.servicePort -}}\n{{- $routePrefix := list .Values.prometheus.prometheusSpec.routePrefix }}\n{{- $paths := .Values.prometheus.thanosIngress.paths | default $routePrefix -}}\n{{- $apiIsStable := eq (include \"kube-prometheus-stack.ingress.isStable\" .) \"true\" -}}\n{{- $ingressSupportsPathType := eq (include \"kube-prometheus-stack.ingress.supportsPathType\" .) \"true\" -}}\napiVersion: {{ include \"kube-prometheus-stack.ingress.apiVersion\" . }}\nkind: Ingress\nmetadata:\n{{- if .Values.prometheus.thanosIngress.annotations }}\n  annotations:\n{{ toYaml .Values.prometheus.thanosIngress.annotations | indent 4 }}\n{{- end }}\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-thanos-gateway\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.prometheus.thanosIngress.labels }}\n{{ toYaml .Values.prometheus.thanosIngress.labels | indent 4 }}\n{{- end }}\nspec:\n  {{- if $apiIsStable }}\n  {{- if .Values.prometheus.thanosIngress.ingressClassName }}\n  ingressClassName: {{ .Values.prometheus.thanosIngress.ingressClassName }}\n  {{- end }}\n  {{- end }}\n  rules:\n  {{- if .Values.prometheus.thanosIngress.hosts }}\n  {{- range $host := .Values.prometheus.thanosIngress.hosts }}\n    - host: {{ tpl $host $ }}\n      http:\n        paths:\n  {{- range $p := $paths }}\n          - path: {{ tpl $p $ }}\n            {{- if and $pathType $ingressSupportsPathType }}\n            pathType: {{ $pathType }}\n            {{- end }}\n            backend:\n              {{- if $apiIsStable }}\n              service:\n                name: {{ $serviceName }}\n                port:\n                  number: {{ $thanosPort }}\n              {{- else }}\n              serviceName: {{ $serviceName }}\n              servicePort: {{ $thanosPort }}\n    {{- end }}\n    {{- end -}}\n  {{- end -}}\n  {{- else }}\n    - http:\n        paths:\n  {{- range $p := $paths }}\n          - path: {{ tpl $p $ }}\n            {{- if and $pathType $ingressSupportsPathType }}\n            pathType: {{ $pathType }}\n            {{- end }}\n            backend:\n              {{- if $apiIsStable }}\n              service:\n                name: {{ $serviceName }}\n                port:\n                  number: {{ $thanosPort }}\n              {{- else }}\n              serviceName: {{ $serviceName }}\n              servicePort: {{ $thanosPort }}\n  {{- end }}\n  {{- end -}}\n  {{- end -}}\n  {{- if .Values.prometheus.thanosIngress.tls }}\n  tls:\n{{ tpl (toYaml .Values.prometheus.thanosIngress.tls | indent 4) . }}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/ingressperreplica.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.servicePerReplica.enabled .Values.prometheus.ingressPerReplica.enabled }}\n{{- $pathType := .Values.prometheus.ingressPerReplica.pathType | default \"\" }}\n{{- $count := .Values.prometheus.prometheusSpec.replicas | int -}}\n{{- $servicePort := .Values.prometheus.servicePerReplica.port -}}\n{{- $ingressValues := .Values.prometheus.ingressPerReplica -}}\n{{- $apiIsStable := eq (include \"kube-prometheus-stack.ingress.isStable\" .) \"true\" -}}\n{{- $ingressSupportsPathType := eq (include \"kube-prometheus-stack.ingress.supportsPathType\" .) \"true\" -}}\napiVersion: v1\nkind: List\nmetadata:\n  name: {{ include \"kube-prometheus-stack.fullname\" $ }}-prometheus-ingressperreplica\n  namespace: {{ template \"kube-prometheus-stack.namespace\" $ }}\nitems:\n{{ range $i, $e := until $count }}\n  - kind: Ingress\n    apiVersion: {{ include \"kube-prometheus-stack.ingress.apiVersion\" $ }}\n    metadata:\n      name: {{ include \"kube-prometheus-stack.fullname\" $ }}-prometheus-{{ $i }}\n      namespace: {{ template \"kube-prometheus-stack.namespace\" $ }}\n      labels:\n        app: {{ include \"kube-prometheus-stack.name\" $ }}-prometheus\n      {{ include \"kube-prometheus-stack.labels\" $ | indent 8 }}\n      {{- if $ingressValues.labels }}\n{{ toYaml $ingressValues.labels | indent 8 }}\n      {{- end }}\n      {{- if $ingressValues.annotations }}\n      annotations:\n{{ toYaml $ingressValues.annotations | indent 8 }}\n      {{- end }}\n    spec:\n      {{- if $apiIsStable }}\n      {{- if $ingressValues.ingressClassName }}\n      ingressClassName: {{ $ingressValues.ingressClassName }}\n      {{- end }}\n      {{- end }}\n      rules:\n        - host: {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }}\n          http:\n            paths:\n      {{- range $p := $ingressValues.paths }}\n              - path: {{ tpl $p $ }}\n                {{- if and $pathType $ingressSupportsPathType }}\n                pathType: {{ $pathType }}\n                {{- end }}\n                backend:\n                  {{- if $apiIsStable }}\n                  service:\n                    name: {{ include \"kube-prometheus-stack.fullname\" $ }}-prometheus-{{ $i }}\n                    port:\n                      number: {{ $servicePort }}\n                  {{- else }}\n                  serviceName: {{ include \"kube-prometheus-stack.fullname\" $ }}-prometheus-{{ $i }}\n                  servicePort: {{ $servicePort }}\n      {{- end }}\n      {{- end -}}\n      {{- if or $ingressValues.tlsSecretName $ingressValues.tlsSecretPerReplica.enabled }}\n      tls:\n        - hosts:\n            - {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }}\n          {{- if $ingressValues.tlsSecretPerReplica.enabled }}\n          secretName: {{ $ingressValues.tlsSecretPerReplica.prefix }}-{{ $i }}\n          {{- else }}\n          secretName: {{ $ingressValues.tlsSecretName }}\n          {{- end }}\n      {{- end }}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/networkpolicy.yaml",
    "content": "{{- if and .Values.prometheus.networkPolicy.enabled (eq .Values.prometheus.networkPolicy.flavor \"kubernetes\") }}\napiVersion: {{ template \"kube-prometheus-stack.prometheus.networkPolicy.apiVersion\" . }}\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n    {{- include \"kube-prometheus-stack.labels\" . | nindent 4 }}\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\nspec:\n  {{- if .Values.prometheus.networkPolicy.egress }}\n  egress:\n    {{- toYaml .Values.prometheus.networkPolicy.egress | nindent 4 }}\n  {{- end }}\n  {{- if .Values.prometheus.networkPolicy.ingress }}\n  ingress:\n    {{- toYaml .Values.prometheus.networkPolicy.ingress | nindent 4 }}\n  {{- end }}\n  policyTypes:\n    - Egress\n    - Ingress\n  podSelector:\n    {{- if .Values.prometheus.networkPolicy.podSelector }}\n    {{- toYaml .Values.prometheus.networkPolicy.podSelector | nindent 4 }}\n    {{- else }}\n    matchLabels:\n      {{- if .Values.prometheus.agentMode }}\n      app.kubernetes.io/name: prometheus-agent\n      {{- else }}\n      app.kubernetes.io/name: prometheus\n      {{- end }}\n      operator.prometheus.io/name: {{ template \"kube-prometheus-stack.prometheus.crname\" . }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/podDisruptionBudget.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.podDisruptionBudget.enabled }}\napiVersion: {{ include \"kube-prometheus-stack.pdb.apiVersion\" . }}\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  {{- if .Values.prometheus.podDisruptionBudget.minAvailable }}\n  minAvailable: {{ .Values.prometheus.podDisruptionBudget.minAvailable }}\n  {{- end  }}\n  {{- if .Values.prometheus.podDisruptionBudget.maxUnavailable }}\n  maxUnavailable: {{ .Values.prometheus.podDisruptionBudget.maxUnavailable }}\n  {{- end  }}\n  selector:\n    matchLabels:\n      {{- if .Values.prometheus.agentMode }}\n      app.kubernetes.io/name: prometheus-agent\n      {{- else }}\n      app.kubernetes.io/name: prometheus\n      {{- end }}\n      operator.prometheus.io/name: {{ template \"kube-prometheus-stack.prometheus.crname\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/podmonitors.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.additionalPodMonitors }}\napiVersion: v1\nkind: List\nitems:\n{{- range .Values.prometheus.additionalPodMonitors }}\n  - apiVersion: monitoring.coreos.com/v1\n    kind: PodMonitor\n    metadata:\n      name: {{ .name }}\n      namespace: {{ template \"kube-prometheus-stack.namespace\" $ }}\n      labels:\n        app: {{ template \"kube-prometheus-stack.name\" $ }}-prometheus\n{{ include \"kube-prometheus-stack.labels\" $ | indent 8 }}\n        {{- if .additionalLabels }}\n{{ toYaml .additionalLabels | indent 8 }}\n        {{- end }}\n    spec:\n      {{- include \"servicemonitor.scrapeLimits\" . | nindent 6 }}\n      podMetricsEndpoints:\n{{ toYaml .podMetricsEndpoints | indent 8 }}\n    {{- if .jobLabel }}\n      jobLabel: {{ .jobLabel }}\n    {{- end }}\n    {{- if .namespaceSelector }}\n      namespaceSelector:\n{{ toYaml .namespaceSelector | indent 8 }}\n    {{- end }}\n      selector:\n{{ toYaml .selector | indent 8 }}\n    {{- if .podTargetLabels }}\n      podTargetLabels:\n{{ toYaml .podTargetLabels | indent 8 }}\n    {{- end }}\n    {{- if .sampleLimit }}\n      sampleLimit: {{ .sampleLimit }}\n    {{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/prometheus.yaml",
    "content": "{{- if .Values.prometheus.enabled }}\n{{- if .Values.prometheus.agentMode }}\napiVersion: monitoring.coreos.com/v1alpha1\nkind: PrometheusAgent\n{{- else }}\napiVersion: monitoring.coreos.com/v1\nkind: Prometheus\n{{- end }}\nmetadata:\n  name: {{ template \"kube-prometheus-stack.prometheus.crname\" . }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.prometheus.annotations }}\n  annotations:\n{{ toYaml .Values.prometheus.annotations | indent 4 }}\n{{- end }}\nspec:\n{{- if and (not .Values.prometheus.agentMode) (or .Values.prometheus.prometheusSpec.alertingEndpoints .Values.alertmanager.enabled) }}\n  alerting:\n    alertmanagers:\n{{- if .Values.prometheus.prometheusSpec.alertingEndpoints }}\n{{ toYaml .Values.prometheus.prometheusSpec.alertingEndpoints | indent 6 }}\n{{- else if .Values.alertmanager.enabled }}\n      - namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n        name: {{ template \"kube-prometheus-stack.fullname\" . }}-alertmanager\n        port: {{ .Values.alertmanager.alertmanagerSpec.portName }}\n        {{- if .Values.alertmanager.alertmanagerSpec.routePrefix }}\n        pathPrefix: \"{{ .Values.alertmanager.alertmanagerSpec.routePrefix }}\"\n        {{- end }}\n        {{- if .Values.alertmanager.alertmanagerSpec.scheme }}\n        scheme: {{ .Values.alertmanager.alertmanagerSpec.scheme }}\n        {{- end }}\n        {{- if .Values.alertmanager.alertmanagerSpec.tlsConfig }}\n        tlsConfig:\n{{ toYaml .Values.alertmanager.alertmanagerSpec.tlsConfig | indent 10 }}\n        {{- end }}\n        apiVersion: {{ .Values.alertmanager.apiVersion }}\n{{- end }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.apiserverConfig }}\n  apiserverConfig:\n{{ toYaml .Values.prometheus.prometheusSpec.apiserverConfig | indent 4}}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.image }}\n  {{- $registry := .Values.global.imageRegistry | default .Values.prometheus.prometheusSpec.image.registry -}}\n  {{- if and .Values.prometheus.prometheusSpec.image.tag .Values.prometheus.prometheusSpec.image.sha }}\n  image: \"{{ $registry }}/{{ .Values.prometheus.prometheusSpec.image.repository }}:{{ .Values.prometheus.prometheusSpec.image.tag }}@sha256:{{ .Values.prometheus.prometheusSpec.image.sha }}\"\n  {{- else if .Values.prometheus.prometheusSpec.image.sha }}\n  image: \"{{ $registry }}/{{ .Values.prometheus.prometheusSpec.image.repository }}@sha256:{{ .Values.prometheus.prometheusSpec.image.sha }}\"\n  {{- else if .Values.prometheus.prometheusSpec.image.tag }}\n  image: \"{{ $registry }}/{{ .Values.prometheus.prometheusSpec.image.repository }}:{{ .Values.prometheus.prometheusSpec.image.tag }}\"\n  {{- else }}\n  image: \"{{ $registry }}/{{ .Values.prometheus.prometheusSpec.image.repository }}\"\n  {{- end }}\n  version: {{ default .Values.prometheus.prometheusSpec.image.tag .Values.prometheus.prometheusSpec.version }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.additionalArgs }}\n  additionalArgs:\n{{ toYaml .Values.prometheus.prometheusSpec.additionalArgs | indent 4}}\n{{- end -}}\n{{- if .Values.prometheus.prometheusSpec.externalLabels }}\n  externalLabels:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.externalLabels | indent 4) . }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.prometheusExternalLabelNameClear }}\n  prometheusExternalLabelName: \"\"\n{{- else if .Values.prometheus.prometheusSpec.prometheusExternalLabelName }}\n  prometheusExternalLabelName: \"{{ .Values.prometheus.prometheusSpec.prometheusExternalLabelName }}\"\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.replicaExternalLabelNameClear }}\n  replicaExternalLabelName: \"\"\n{{- else if .Values.prometheus.prometheusSpec.replicaExternalLabelName }}\n  replicaExternalLabelName: \"{{ .Values.prometheus.prometheusSpec.replicaExternalLabelName }}\"\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.enableRemoteWriteReceiver }}\n  enableRemoteWriteReceiver: {{ .Values.prometheus.prometheusSpec.enableRemoteWriteReceiver }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.externalUrl }}\n  externalUrl: \"{{ tpl .Values.prometheus.prometheusSpec.externalUrl . }}\"\n{{- else if and .Values.prometheus.ingress.enabled .Values.prometheus.ingress.hosts }}\n  externalUrl: \"http://{{ tpl (index .Values.prometheus.ingress.hosts 0) . }}{{ .Values.prometheus.prometheusSpec.routePrefix }}\"\n{{- else }}\n  externalUrl: http://{{ template \"kube-prometheus-stack.fullname\" . }}-prometheus.{{ template \"kube-prometheus-stack.namespace\" . }}:{{ .Values.prometheus.service.port }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.nodeSelector }}\n  nodeSelector:\n{{ toYaml .Values.prometheus.prometheusSpec.nodeSelector | indent 4 }}\n{{- end }}\n  paused: {{ .Values.prometheus.prometheusSpec.paused }}\n  replicas: {{ .Values.prometheus.prometheusSpec.replicas }}\n  shards: {{ .Values.prometheus.prometheusSpec.shards }}\n  logLevel:  {{ .Values.prometheus.prometheusSpec.logLevel }}\n  logFormat:  {{ .Values.prometheus.prometheusSpec.logFormat }}\n  listenLocal: {{ .Values.prometheus.prometheusSpec.listenLocal }}\n{{- if not .Values.prometheus.agentMode }}\n  enableAdminAPI: {{ .Values.prometheus.prometheusSpec.enableAdminAPI }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.web }}\n  web:\n{{ toYaml .Values.prometheus.prometheusSpec.web | indent 4 }}\n{{- end }}\n{{- if and (not .Values.prometheus.agentMode) .Values.prometheus.prometheusSpec.exemplars }}\n  exemplars:\n  {{ toYaml .Values.prometheus.prometheusSpec.exemplars | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.enableFeatures }}\n  enableFeatures:\n{{- range $enableFeatures := .Values.prometheus.prometheusSpec.enableFeatures }}\n  - {{ tpl $enableFeatures $ }}\n{{- end }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.scrapeInterval }}\n  scrapeInterval: {{ .Values.prometheus.prometheusSpec.scrapeInterval }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.scrapeTimeout }}\n  scrapeTimeout: {{ .Values.prometheus.prometheusSpec.scrapeTimeout }}\n{{- end }}\n{{- if and (not .Values.prometheus.agentMode) .Values.prometheus.prometheusSpec.evaluationInterval }}\n  evaluationInterval: {{ .Values.prometheus.prometheusSpec.evaluationInterval }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.resources }}\n  resources:\n{{ toYaml .Values.prometheus.prometheusSpec.resources | indent 4 }}\n{{- end }}\n{{- if not .Values.prometheus.agentMode }}\n  retention: {{ .Values.prometheus.prometheusSpec.retention | quote  }}\n{{- if .Values.prometheus.prometheusSpec.retentionSize }}\n  retentionSize: {{ .Values.prometheus.prometheusSpec.retentionSize | quote }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.tsdb }}\n  tsdb:\n    {{- if .Values.prometheus.prometheusSpec.tsdb.outOfOrderTimeWindow }}\n    outOfOrderTimeWindow: {{ .Values.prometheus.prometheusSpec.tsdb.outOfOrderTimeWindow }}\n    {{- end }}\n{{- end }}\n{{- end }}\n{{- if eq .Values.prometheus.prometheusSpec.walCompression false }}\n  walCompression: false\n{{ else }}\n  walCompression: true\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.routePrefix }}\n  routePrefix: {{ .Values.prometheus.prometheusSpec.routePrefix | quote  }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.secrets }}\n  secrets:\n{{ toYaml .Values.prometheus.prometheusSpec.secrets | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.configMaps }}\n  configMaps:\n{{ toYaml .Values.prometheus.prometheusSpec.configMaps | indent 4 }}\n{{- end }}\n  serviceAccountName: {{ template \"kube-prometheus-stack.prometheus.serviceAccountName\" . }}\n{{- if .Values.prometheus.prometheusSpec.serviceMonitorSelector }}\n  serviceMonitorSelector:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.serviceMonitorSelector | indent 4) . }}\n{{ else if .Values.prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues  }}\n  serviceMonitorSelector:\n    matchLabels:\n      release: {{ $.Release.Name | quote }}\n{{ else }}\n  serviceMonitorSelector: {}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.serviceMonitorNamespaceSelector }}\n  serviceMonitorNamespaceSelector:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.serviceMonitorNamespaceSelector | indent 4) . }}\n{{ else }}\n  serviceMonitorNamespaceSelector: {}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.podMonitorSelector }}\n  podMonitorSelector:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.podMonitorSelector | indent 4) . }}\n{{ else if .Values.prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues  }}\n  podMonitorSelector:\n    matchLabels:\n      release: {{ $.Release.Name | quote }}\n{{ else }}\n  podMonitorSelector: {}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.podMonitorNamespaceSelector }}\n  podMonitorNamespaceSelector:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.podMonitorNamespaceSelector | indent 4) . }}\n{{ else }}\n  podMonitorNamespaceSelector: {}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.probeSelector }}\n  probeSelector:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.probeSelector | indent 4) . }}\n{{ else if .Values.prometheus.prometheusSpec.probeSelectorNilUsesHelmValues  }}\n  probeSelector:\n    matchLabels:\n      release: {{ $.Release.Name | quote }}\n{{ else }}\n  probeSelector: {}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.probeNamespaceSelector }}\n  probeNamespaceSelector:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.probeNamespaceSelector | indent 4) . }}\n{{ else }}\n  probeNamespaceSelector: {}\n{{- end }}\n{{- if and (not .Values.prometheus.agentMode) (or .Values.prometheus.prometheusSpec.remoteRead .Values.prometheus.prometheusSpec.additionalRemoteRead) }}\n  remoteRead:\n{{- if .Values.prometheus.prometheusSpec.remoteRead }}\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.remoteRead | indent 4) . }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.additionalRemoteRead }}\n{{ toYaml .Values.prometheus.prometheusSpec.additionalRemoteRead | indent 4 }}\n{{- end }}\n{{- end }}\n{{- if (or .Values.prometheus.prometheusSpec.remoteWrite .Values.prometheus.prometheusSpec.additionalRemoteWrite) }}\n  remoteWrite:\n{{- if .Values.prometheus.prometheusSpec.remoteWrite }}\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.remoteWrite | indent 4) . }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.additionalRemoteWrite }}\n{{ toYaml .Values.prometheus.prometheusSpec.additionalRemoteWrite | indent 4 }}\n{{- end }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.securityContext }}\n  securityContext:\n{{ toYaml .Values.prometheus.prometheusSpec.securityContext | indent 4 }}\n{{- end }}\n{{- if not .Values.prometheus.agentMode }}\n{{- if .Values.prometheus.prometheusSpec.ruleNamespaceSelector }}\n  ruleNamespaceSelector:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.ruleNamespaceSelector | indent 4) . }}\n{{ else }}\n  ruleNamespaceSelector: {}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.ruleSelector }}\n  ruleSelector:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.ruleSelector | indent 4) . }}\n{{- else if .Values.prometheus.prometheusSpec.ruleSelectorNilUsesHelmValues }}\n  ruleSelector:\n    matchLabels:\n      release: {{ $.Release.Name | quote }}\n{{ else }}\n  ruleSelector: {}\n{{- end }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.scrapeConfigSelector }}\n  scrapeConfigSelector:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.scrapeConfigSelector | indent 4) . }}\n{{ else if .Values.prometheus.prometheusSpec.scrapeConfigSelectorNilUsesHelmValues  }}\n  scrapeConfigSelector:\n    matchLabels:\n      release: {{ $.Release.Name | quote }}\n{{ else }}\n  scrapeConfigSelector: {}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.scrapeConfigNamespaceSelector }}\n  scrapeConfigNamespaceSelector:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.scrapeConfigNamespaceSelector | indent 4) . }}\n{{ else }}\n  scrapeConfigNamespaceSelector: {}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.storageSpec }}\n  storage:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.storageSpec | indent 4) . }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.podMetadata }}\n  podMetadata:\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.podMetadata | indent 4) . }}\n{{- end }}\n{{- if and (not .Values.prometheus.agentMode) .Values.prometheus.prometheusSpec.query }}\n  query:\n{{ toYaml .Values.prometheus.prometheusSpec.query | indent 4}}\n{{- end }}\n{{- if or .Values.prometheus.prometheusSpec.podAntiAffinity .Values.prometheus.prometheusSpec.affinity }}\n  affinity:\n{{- if .Values.prometheus.prometheusSpec.affinity }}\n{{ toYaml .Values.prometheus.prometheusSpec.affinity | indent 4 }}\n{{- end }}\n{{- if eq .Values.prometheus.prometheusSpec.podAntiAffinity \"hard\" }}\n    podAntiAffinity:\n      requiredDuringSchedulingIgnoredDuringExecution:\n      - topologyKey: {{ .Values.prometheus.prometheusSpec.podAntiAffinityTopologyKey }}\n        labelSelector:\n          matchExpressions:\n            - {key: app.kubernetes.io/name, operator: In, values: [prometheus]}\n            - {key: prometheus, operator: In, values: [{{ template \"kube-prometheus-stack.prometheus.crname\" . }}]}\n{{- else if eq .Values.prometheus.prometheusSpec.podAntiAffinity \"soft\" }}\n    podAntiAffinity:\n      preferredDuringSchedulingIgnoredDuringExecution:\n      - weight: 100\n        podAffinityTerm:\n          topologyKey: {{ .Values.prometheus.prometheusSpec.podAntiAffinityTopologyKey }}\n          labelSelector:\n            matchExpressions:\n              - {key: app.kubernetes.io/name, operator: In, values: [prometheus]}\n              - {key: prometheus, operator: In, values: [{{ template \"kube-prometheus-stack.prometheus.crname\" . }}]}\n{{- end }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.tolerations }}\n  tolerations:\n{{ toYaml .Values.prometheus.prometheusSpec.tolerations | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.topologySpreadConstraints }}\n  topologySpreadConstraints:\n{{ toYaml .Values.prometheus.prometheusSpec.topologySpreadConstraints | indent 4 }}\n{{- end }}\n{{- if .Values.global.imagePullSecrets }}\n  imagePullSecrets:\n{{ include \"kube-prometheus-stack.imagePullSecrets\" . | trim | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.additionalScrapeConfigs }}\n  additionalScrapeConfigs:\n    name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus-scrape-confg\n    key: additional-scrape-configs.yaml\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.additionalScrapeConfigsSecret.enabled }}\n  additionalScrapeConfigs:\n    name: {{ .Values.prometheus.prometheusSpec.additionalScrapeConfigsSecret.name }}\n    key: {{ .Values.prometheus.prometheusSpec.additionalScrapeConfigsSecret.key }}\n{{- end }}\n{{- if not .Values.prometheus.agentMode }}\n{{- if or .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs .Values.prometheus.prometheusSpec.additionalAlertManagerConfigsSecret }}\n  additionalAlertManagerConfigs:\n{{- if .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs }}\n    name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus-am-confg\n    key: additional-alertmanager-configs.yaml\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.additionalAlertManagerConfigsSecret }}\n    name: {{ .Values.prometheus.prometheusSpec.additionalAlertManagerConfigsSecret.name }}\n    key: {{ .Values.prometheus.prometheusSpec.additionalAlertManagerConfigsSecret.key }}\n    {{- if hasKey .Values.prometheus.prometheusSpec.additionalAlertManagerConfigsSecret \"optional\" }}\n    optional: {{ .Values.prometheus.prometheusSpec.additionalAlertManagerConfigsSecret.optional }}\n    {{- end }}\n{{- end }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigs }}\n  additionalAlertRelabelConfigs:\n    name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus-am-relabel-confg\n    key: additional-alert-relabel-configs.yaml\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigsSecret }}\n  additionalAlertRelabelConfigs:\n    name: {{ .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigsSecret.name }}\n    key: {{ .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigsSecret.key }}\n{{- end }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.containers }}\n  containers:\n{{ toYaml .Values.prometheus.prometheusSpec.containers | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.initContainers }}\n  initContainers:\n{{ toYaml .Values.prometheus.prometheusSpec.initContainers | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.priorityClassName }}\n  priorityClassName: {{ .Values.prometheus.prometheusSpec.priorityClassName }}\n{{- end }}\n{{- if not .Values.prometheus.agentMode }}\n{{- if .Values.prometheus.prometheusSpec.thanos }}\n  thanos:\n{{ toYaml .Values.prometheus.prometheusSpec.thanos | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.disableCompaction }}\n  disableCompaction: {{ .Values.prometheus.prometheusSpec.disableCompaction }}\n{{- end }}\n{{- end }}\n  portName: {{ .Values.prometheus.prometheusSpec.portName }}\n{{- if .Values.prometheus.prometheusSpec.volumes }}\n  volumes:\n{{ toYaml .Values.prometheus.prometheusSpec.volumes | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.volumeMounts }}\n  volumeMounts:\n{{ toYaml .Values.prometheus.prometheusSpec.volumeMounts | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.arbitraryFSAccessThroughSMs }}\n  arbitraryFSAccessThroughSMs:\n{{ toYaml .Values.prometheus.prometheusSpec.arbitraryFSAccessThroughSMs | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.overrideHonorLabels }}\n  overrideHonorLabels: {{ .Values.prometheus.prometheusSpec.overrideHonorLabels }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.overrideHonorTimestamps }}\n  overrideHonorTimestamps: {{ .Values.prometheus.prometheusSpec.overrideHonorTimestamps }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }}\n  ignoreNamespaceSelectors: {{ .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.enforcedNamespaceLabel }}\n  enforcedNamespaceLabel: {{ .Values.prometheus.prometheusSpec.enforcedNamespaceLabel }}\n{{- $prometheusDefaultRulesExcludedFromEnforce := (include \"rules.names\" .) | fromYaml }}\n{{- if not .Values.prometheus.agentMode }}\n  prometheusRulesExcludedFromEnforce:\n{{- range $prometheusDefaultRulesExcludedFromEnforce.rules }}\n    - ruleNamespace: \"{{ template \"kube-prometheus-stack.namespace\" $ }}\"\n      ruleName: \"{{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) . | trunc 63 | trimSuffix \"-\" }}\"\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.prometheusRulesExcludedFromEnforce }}\n{{ toYaml .Values.prometheus.prometheusSpec.prometheusRulesExcludedFromEnforce | indent 4 }}\n{{- end }}\n{{- end }}\n  excludedFromEnforcement:\n{{- range $prometheusDefaultRulesExcludedFromEnforce.rules }}\n    - group: monitoring.coreos.com\n      resource: prometheusrules\n      namespace: \"{{ template \"kube-prometheus-stack.namespace\" $ }}\"\n      name: \"{{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" $) . | trunc 63 | trimSuffix \"-\" }}\"\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.excludedFromEnforcement }}\n{{ tpl (toYaml .Values.prometheus.prometheusSpec.excludedFromEnforcement | indent 4) . }}\n{{- end }}\n{{- end }}\n{{- if and (not .Values.prometheus.agentMode) .Values.prometheus.prometheusSpec.queryLogFile }}\n  queryLogFile: {{ .Values.prometheus.prometheusSpec.queryLogFile }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.enforcedSampleLimit }}\n  enforcedSampleLimit: {{ .Values.prometheus.prometheusSpec.enforcedSampleLimit }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.enforcedTargetLimit }}\n  enforcedTargetLimit: {{ .Values.prometheus.prometheusSpec.enforcedTargetLimit }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.enforcedLabelLimit\t}}\n  enforcedLabelLimit: {{ .Values.prometheus.prometheusSpec.enforcedLabelLimit\t}}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.enforcedLabelNameLengthLimit\t}}\n  enforcedLabelNameLengthLimit: {{ .Values.prometheus.prometheusSpec.enforcedLabelNameLengthLimit\t}}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.enforcedLabelValueLengthLimit}}\n  enforcedLabelValueLengthLimit: {{ .Values.prometheus.prometheusSpec.enforcedLabelValueLengthLimit\t}}\n{{- end }}\n{{- if and (not .Values.prometheus.agentMode) .Values.prometheus.prometheusSpec.allowOverlappingBlocks }}\n  allowOverlappingBlocks: {{ .Values.prometheus.prometheusSpec.allowOverlappingBlocks }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.minReadySeconds }}\n  minReadySeconds: {{ .Values.prometheus.prometheusSpec.minReadySeconds }}\n{{- end }}\n  hostNetwork: {{ .Values.prometheus.prometheusSpec.hostNetwork }}\n{{- if .Values.prometheus.prometheusSpec.hostAliases }}\n  hostAliases:\n{{ toYaml .Values.prometheus.prometheusSpec.hostAliases | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.prometheusSpec.tracingConfig }}\n  tracingConfig:\n{{ toYaml .Values.prometheus.prometheusSpec.tracingConfig | indent 4 }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/psp-clusterrole.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\n{{- if .Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\" }}\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus-psp\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nrules:\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if semverCompare \"> 1.15.0-0\" $kubeTargetVersion }}\n- apiGroups: ['policy']\n{{- else }}\n- apiGroups: ['extensions']\n{{- end }}\n  resources: ['podsecuritypolicies']\n  verbs:     ['use']\n  resourceNames:\n  - {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/psp-clusterrolebinding.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\n{{- if .Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\" }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus-psp\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus-psp\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"kube-prometheus-stack.prometheus.serviceAccountName\" . }}\n    namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/psp.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\n{{- if .Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\" }}\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n{{- if .Values.global.rbac.pspAnnotations }}\n  annotations:\n{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }}\n{{- end }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  privileged: false\n  # Allow core volume types.\n  volumes:\n    - 'configMap'\n    - 'emptyDir'\n    - 'projected'\n    - 'secret'\n    - 'downwardAPI'\n    - 'persistentVolumeClaim'\n{{- if .Values.prometheus.podSecurityPolicy.volumes }}\n{{ toYaml .Values.prometheus.podSecurityPolicy.volumes | indent 4 }}\n{{- end }}\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    # Permits the container to run with root privileges as well.\n    rule: 'RunAsAny'\n  seLinux:\n    # This policy assumes the nodes are using AppArmor rather than SELinux.\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      # Allow adding the root group.\n      - min: 0\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Allow adding the root group.\n      - min: 0\n        max: 65535\n  readOnlyRootFilesystem: false\n{{- if .Values.prometheus.podSecurityPolicy.allowedCapabilities }}\n  allowedCapabilities:\n{{ toYaml .Values.prometheus.podSecurityPolicy.allowedCapabilities | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.podSecurityPolicy.allowedHostPaths }}\n  allowedHostPaths:\n{{ toYaml .Values.prometheus.podSecurityPolicy.allowedHostPaths | indent 4 }}\n{{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/alertmanager.rules.yaml",
    "content": "{{- /*\nGenerated from 'alertmanager.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/alertmanager-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.alertmanager }}\n{{- $alertmanagerJob := printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"alertmanager\" }}\n{{- $namespace := printf \"%s\" (include \"kube-prometheus-stack.namespace\" .) }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"alertmanager.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: alertmanager.rules\n    rules:\n{{- if not (.Values.defaultRules.disabled.AlertmanagerFailedReload | default false) }}\n    - alert: AlertmanagerFailedReload\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }}\n{{- end }}\n        description: Configuration has failed to load for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod{{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerfailedreload\n        summary: Reloading an Alertmanager configuration has failed.\n      expr: |-\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        max_over_time(alertmanager_config_last_reload_successful{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\"}[5m]) == 0\n      for: 10m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.AlertmanagerMembersInconsistent | default false) }}\n    - alert: AlertmanagerMembersInconsistent\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }}\n{{- end }}\n        description: Alertmanager {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod{{`}}`}} has only found {{`{{`}} $value {{`}}`}} members of the {{`{{`}}$labels.job{{`}}`}} cluster.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagermembersinconsistent\n        summary: A member of an Alertmanager cluster has not found all other cluster members.\n      expr: |-\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n          max_over_time(alertmanager_cluster_members{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\"}[5m])\n        < on (namespace,service,cluster) group_left\n          count by (namespace,service,cluster) (max_over_time(alertmanager_cluster_members{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\"}[5m]))\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.AlertmanagerFailedToSendAlerts | default false) }}\n    - alert: AlertmanagerFailedToSendAlerts\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }}\n{{- end }}\n        description: Alertmanager {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod{{`}}`}} failed to send {{`{{`}} $value | humanizePercentage {{`}}`}} of notifications to {{`{{`}} $labels.integration {{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerfailedtosendalerts\n        summary: An Alertmanager instance failed to send notifications.\n      expr: |-\n        (\n          rate(alertmanager_notifications_failed_total{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\"}[5m])\n        /\n          rate(alertmanager_notifications_total{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\"}[5m])\n        )\n        > 0.01\n      for: 5m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.AlertmanagerClusterFailedToSendAlerts | default false) }}\n    - alert: AlertmanagerClusterFailedToSendAlerts\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }}\n{{- end }}\n        description: The minimum notification failure rate to {{`{{`}} $labels.integration {{`}}`}} sent from any instance in the {{`{{`}}$labels.job{{`}}`}} cluster is {{`{{`}} $value | humanizePercentage {{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerclusterfailedtosendalerts\n        summary: All Alertmanager instances in a cluster failed to send notifications to a critical integration.\n      expr: |-\n        min by (namespace,service, integration) (\n          rate(alertmanager_notifications_failed_total{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\", integration=~`.*`}[5m])\n        /\n          rate(alertmanager_notifications_total{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\", integration=~`.*`}[5m])\n        )\n        > 0.01\n      for: 5m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.AlertmanagerClusterFailedToSendAlerts | default false) }}\n    - alert: AlertmanagerClusterFailedToSendAlerts\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }}\n{{- end }}\n        description: The minimum notification failure rate to {{`{{`}} $labels.integration {{`}}`}} sent from any instance in the {{`{{`}}$labels.job{{`}}`}} cluster is {{`{{`}} $value | humanizePercentage {{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerclusterfailedtosendalerts\n        summary: All Alertmanager instances in a cluster failed to send notifications to a non-critical integration.\n      expr: |-\n        min by (namespace,service, integration) (\n          rate(alertmanager_notifications_failed_total{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\", integration!~`.*`}[5m])\n        /\n          rate(alertmanager_notifications_total{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\", integration!~`.*`}[5m])\n        )\n        > 0.01\n      for: 5m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.AlertmanagerConfigInconsistent | default false) }}\n    - alert: AlertmanagerConfigInconsistent\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }}\n{{- end }}\n        description: Alertmanager instances within the {{`{{`}}$labels.job{{`}}`}} cluster have different configurations.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerconfiginconsistent\n        summary: Alertmanager instances within the same cluster have different configurations.\n      expr: |-\n        count by (namespace,service,cluster) (\n          count_values by (namespace,service,cluster) (\"config_hash\", alertmanager_config_hash{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\"})\n        )\n        != 1\n      for: 20m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.AlertmanagerClusterDown | default false) }}\n    - alert: AlertmanagerClusterDown\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of Alertmanager instances within the {{`{{`}}$labels.job{{`}}`}} cluster have been up for less than half of the last 5m.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerclusterdown\n        summary: Half or more of the Alertmanager instances within the same cluster are down.\n      expr: |-\n        (\n          count by (namespace,service,cluster) (\n            avg_over_time(up{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\"}[5m]) < 0.5\n          )\n        /\n          count by (namespace,service,cluster) (\n            up{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\"}\n          )\n        )\n        >= 0.5\n      for: 5m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.AlertmanagerClusterCrashlooping | default false) }}\n    - alert: AlertmanagerClusterCrashlooping\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of Alertmanager instances within the {{`{{`}}$labels.job{{`}}`}} cluster have restarted at least 5 times in the last 10m.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerclustercrashlooping\n        summary: Half or more of the Alertmanager instances within the same cluster are crashlooping.\n      expr: |-\n        (\n          count by (namespace,service,cluster) (\n            changes(process_start_time_seconds{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\"}[10m]) > 4\n          )\n        /\n          count by (namespace,service,cluster) (\n            up{job=\"{{ $alertmanagerJob }}\",namespace=\"{{ $namespace }}\"}\n          )\n        )\n        >= 0.5\n      for: 5m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/config-reloaders.yaml",
    "content": "{{- /*\nGenerated from 'config-reloaders' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/prometheusOperator-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.configReloaders }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"config-reloaders\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: config-reloaders\n    rules:\n{{- if not (.Values.defaultRules.disabled.ConfigReloaderSidecarErrors | default false) }}\n    - alert: ConfigReloaderSidecarErrors\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.configReloaders }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.configReloaders | indent 8 }}\n{{- end }}\n        description: 'Errors encountered while the {{`{{`}}$labels.pod{{`}}`}} config-reloader sidecar attempts to sync config in {{`{{`}}$labels.namespace{{`}}`}} namespace.\n\n          As a result, configuration for service running in {{`{{`}}$labels.pod{{`}}`}} may be stale and cannot be updated anymore.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/configreloadersidecarerrors\n        summary: config-reloader sidecar has not had a successful reload for 10m\n      expr: max_over_time(reloader_last_reload_successful{namespace=~\".+\"}[5m]) == 0\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.configReloaders }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.configReloaders }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/etcd.yaml",
    "content": "{{- /*\nGenerated from 'etcd' group from https://raw.githubusercontent.com/etcd-io/etcd/main/contrib/mixin/mixin.libsonnet\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeEtcd.enabled .Values.defaultRules.rules.etcd }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"etcd\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: etcd\n    rules:\n{{- if not (.Values.defaultRules.disabled.etcdMembersDown | default false) }}\n    - alert: etcdMembersDown\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": members are down ({{`{{`}} $value {{`}}`}}).'\n        summary: etcd cluster members are down.\n      expr: |-\n        max without (endpoint) (\n          sum without (instance) (up{job=~\".*etcd.*\"} == bool 0)\n        or\n          count without (To) (\n            sum without (instance) (rate(etcd_network_peer_sent_failures_total{job=~\".*etcd.*\"}[120s])) > 0.01\n          )\n        )\n        > 0\n      for: 10m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdInsufficientMembers | default false) }}\n    - alert: etcdInsufficientMembers\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": insufficient members ({{`{{`}} $value {{`}}`}}).'\n        summary: etcd cluster has insufficient number of members.\n      expr: sum(up{job=~\".*etcd.*\"} == bool 1) without (instance) < ((count(up{job=~\".*etcd.*\"}) without (instance) + 1) / 2)\n      for: 3m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdNoLeader | default false) }}\n    - alert: etcdNoLeader\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": member {{`{{`}} $labels.instance {{`}}`}} has no leader.'\n        summary: etcd cluster has no leader.\n      expr: etcd_server_has_leader{job=~\".*etcd.*\"} == 0\n      for: 1m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdHighNumberOfLeaderChanges | default false) }}\n    - alert: etcdHighNumberOfLeaderChanges\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": {{`{{`}} $value {{`}}`}} leader changes within the last 15 minutes. Frequent elections may be a sign of insufficient resources, high network latency, or disruptions by other components and should be investigated.'\n        summary: etcd cluster has high number of leader changes.\n      expr: increase((max without (instance) (etcd_server_leader_changes_seen_total{job=~\".*etcd.*\"}) or 0*absent(etcd_server_leader_changes_seen_total{job=~\".*etcd.*\"}))[15m:1m]) >= 4\n      for: 5m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdHighNumberOfFailedGRPCRequests | default false) }}\n    - alert: etcdHighNumberOfFailedGRPCRequests\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": {{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.grpc_method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.'\n        summary: etcd cluster has high number of failed grpc requests.\n      expr: |-\n        100 * sum(rate(grpc_server_handled_total{job=~\".*etcd.*\", grpc_code=~\"Unknown|FailedPrecondition|ResourceExhausted|Internal|Unavailable|DataLoss|DeadlineExceeded\"}[5m])) without (grpc_type, grpc_code)\n          /\n        sum(rate(grpc_server_handled_total{job=~\".*etcd.*\"}[5m])) without (grpc_type, grpc_code)\n          > 1\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdHighNumberOfFailedGRPCRequests | default false) }}\n    - alert: etcdHighNumberOfFailedGRPCRequests\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": {{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.grpc_method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.'\n        summary: etcd cluster has high number of failed grpc requests.\n      expr: |-\n        100 * sum(rate(grpc_server_handled_total{job=~\".*etcd.*\", grpc_code=~\"Unknown|FailedPrecondition|ResourceExhausted|Internal|Unavailable|DataLoss|DeadlineExceeded\"}[5m])) without (grpc_type, grpc_code)\n          /\n        sum(rate(grpc_server_handled_total{job=~\".*etcd.*\"}[5m])) without (grpc_type, grpc_code)\n          > 5\n      for: 5m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdGRPCRequestsSlow | default false) }}\n    - alert: etcdGRPCRequestsSlow\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": 99th percentile of gRPC requests is {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}} for {{`{{`}} $labels.grpc_method {{`}}`}} method.'\n        summary: etcd grpc requests are slow\n      expr: |-\n        histogram_quantile(0.99, sum(rate(grpc_server_handling_seconds_bucket{job=~\".*etcd.*\", grpc_method!=\"Defragment\", grpc_type=\"unary\"}[5m])) without(grpc_type))\n        > 0.15\n      for: 10m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdMemberCommunicationSlow | default false) }}\n    - alert: etcdMemberCommunicationSlow\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": member communication with {{`{{`}} $labels.To {{`}}`}} is taking {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.'\n        summary: etcd cluster member communication is slow.\n      expr: |-\n        histogram_quantile(0.99, rate(etcd_network_peer_round_trip_time_seconds_bucket{job=~\".*etcd.*\"}[5m]))\n        > 0.15\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdHighNumberOfFailedProposals | default false) }}\n    - alert: etcdHighNumberOfFailedProposals\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": {{`{{`}} $value {{`}}`}} proposal failures within the last 30 minutes on etcd instance {{`{{`}} $labels.instance {{`}}`}}.'\n        summary: etcd cluster has high number of proposal failures.\n      expr: rate(etcd_server_proposals_failed_total{job=~\".*etcd.*\"}[15m]) > 5\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdHighFsyncDurations | default false) }}\n    - alert: etcdHighFsyncDurations\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": 99th percentile fsync durations are {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.'\n        summary: etcd cluster 99th percentile fsync durations are too high.\n      expr: |-\n        histogram_quantile(0.99, rate(etcd_disk_wal_fsync_duration_seconds_bucket{job=~\".*etcd.*\"}[5m]))\n        > 0.5\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdHighFsyncDurations | default false) }}\n    - alert: etcdHighFsyncDurations\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": 99th percentile fsync durations are {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.'\n        summary: etcd cluster 99th percentile fsync durations are too high.\n      expr: |-\n        histogram_quantile(0.99, rate(etcd_disk_wal_fsync_duration_seconds_bucket{job=~\".*etcd.*\"}[5m]))\n        > 1\n      for: 10m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdHighCommitDurations | default false) }}\n    - alert: etcdHighCommitDurations\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": 99th percentile commit durations {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.'\n        summary: etcd cluster 99th percentile commit durations are too high.\n      expr: |-\n        histogram_quantile(0.99, rate(etcd_disk_backend_commit_duration_seconds_bucket{job=~\".*etcd.*\"}[5m]))\n        > 0.25\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdDatabaseQuotaLowSpace | default false) }}\n    - alert: etcdDatabaseQuotaLowSpace\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": database size exceeds the defined quota on etcd instance {{`{{`}} $labels.instance {{`}}`}}, please defrag or increase the quota as the writes to etcd will be disabled when it is full.'\n        summary: etcd cluster database is running full.\n      expr: (last_over_time(etcd_mvcc_db_total_size_in_bytes[5m]) / last_over_time(etcd_server_quota_backend_bytes[5m]))*100 > 95\n      for: 10m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdExcessiveDatabaseGrowth | default false) }}\n    - alert: etcdExcessiveDatabaseGrowth\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": Predicting running out of disk space in the next four hours, based on write observations within the past four hours on etcd instance {{`{{`}} $labels.instance {{`}}`}}, please check as it might be disruptive.'\n        summary: etcd cluster database growing very fast.\n      expr: predict_linear(etcd_mvcc_db_total_size_in_bytes[4h], 4*60*60) > etcd_server_quota_backend_bytes\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.etcdDatabaseHighFragmentationRatio | default false) }}\n    - alert: etcdDatabaseHighFragmentationRatio\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }}\n{{- end }}\n        description: 'etcd cluster \"{{`{{`}} $labels.job {{`}}`}}\": database size in use on instance {{`{{`}} $labels.instance {{`}}`}} is {{`{{`}} $value | humanizePercentage {{`}}`}} of the actual allocated disk space, please run defragmentation (e.g. etcdctl defrag) to retrieve the unused fragmented disk space.'\n        runbook_url: https://etcd.io/docs/v3.5/op-guide/maintenance/#defragmentation\n        summary: etcd database size in use is less than 50% of the actual allocated storage.\n      expr: (last_over_time(etcd_mvcc_db_total_size_in_use_in_bytes[5m]) / last_over_time(etcd_mvcc_db_total_size_in_bytes[5m])) < 0.5 and etcd_mvcc_db_total_size_in_use_in_bytes > 104857600\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/general.rules.yaml",
    "content": "{{- /*\nGenerated from 'general.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubePrometheus-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.general }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"general.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: general.rules\n    rules:\n{{- if not (.Values.defaultRules.disabled.TargetDown | default false) }}\n    - alert: TargetDown\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.general }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.general | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} printf \"%.4g\" $value {{`}}`}}% of the {{`{{`}} $labels.job {{`}}`}}/{{`{{`}} $labels.service {{`}}`}} targets in {{`{{`}} $labels.namespace {{`}}`}} namespace are down.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/general/targetdown\n        summary: One or more targets are unreachable.\n      expr: 100 * (count(up == 0) BY (cluster, job, namespace, service) / count(up) BY (cluster, job, namespace, service)) > 10\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.general }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.general }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.Watchdog | default false) }}\n    - alert: Watchdog\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.general }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.general | indent 8 }}\n{{- end }}\n        description: 'This is an alert meant to ensure that the entire alerting pipeline is functional.\n\n          This alert is always firing, therefore it should always be firing in Alertmanager\n\n          and always fire against a receiver. There are integrations with various notification\n\n          mechanisms that send a notification when this alert is not firing. For example the\n\n          \"DeadMansSnitch\" integration in PagerDuty.\n\n          '\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/general/watchdog\n        summary: An alert that should always be firing to certify that Alertmanager is working properly.\n      expr: vector(1)\n      labels:\n        severity: none\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.general }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.general }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.InfoInhibitor | default false) }}\n    - alert: InfoInhibitor\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.general }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.general | indent 8 }}\n{{- end }}\n        description: 'This is an alert that is used to inhibit info alerts.\n\n          By themselves, the info-level alerts are sometimes very noisy, but they are relevant when combined with\n\n          other alerts.\n\n          This alert fires whenever there''s a severity=\"info\" alert, and stops firing when another alert with a\n\n          severity of ''warning'' or ''critical'' starts firing on the same namespace.\n\n          This alert should be routed to a null receiver and configured to inhibit alerts with severity=\"info\".\n\n          '\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/general/infoinhibitor\n        summary: Info-level alert inhibition.\n      expr: ALERTS{severity = \"info\"} == 1 unless on(namespace) ALERTS{alertname != \"InfoInhibitor\", severity =~ \"warning|critical\", alertstate=\"firing\"} == 1\n      labels:\n        severity: none\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.general }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.general }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/k8s.rules.yaml",
    "content": "{{- /*\nGenerated from 'k8s.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.k8s }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"k8s.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: k8s.rules\n    rules:\n    - expr: |-\n        sum by (cluster, namespace, pod, container) (\n          irate(container_cpu_usage_seconds_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}[5m])\n        ) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) (\n          1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_working_set_bytes\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        container_memory_rss{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_rss\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        container_memory_cache{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_cache\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        container_memory_swap{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_swap\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        kube_pod_container_resource_requests{resource=\"memory\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_memory:active:kube_pod_container_resource_requests\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_requests{resource=\"memory\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_memory:kube_pod_container_resource_requests:sum\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        kube_pod_container_resource_requests{resource=\"cpu\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_requests{resource=\"cpu\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_cpu:kube_pod_container_resource_requests:sum\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        kube_pod_container_resource_limits{resource=\"memory\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_memory:active:kube_pod_container_resource_limits\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_limits{resource=\"memory\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_memory:kube_pod_container_resource_limits:sum\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        kube_pod_container_resource_limits{resource=\"cpu\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n         (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n         )\n      record: cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_limits{resource=\"cpu\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_cpu:kube_pod_container_resource_limits:sum\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            label_replace(\n              kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"},\n              \"replicaset\", \"$1\", \"owner_name\", \"(.*)\"\n            ) * on(replicaset, namespace) group_left(owner_name) topk by(replicaset, namespace) (\n              1, max by (replicaset, namespace, owner_name) (\n                kube_replicaset_owner{job=\"kube-state-metrics\"}\n              )\n            ),\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: deployment\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |-\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"DaemonSet\"},\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: daemonset\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |-\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"StatefulSet\"},\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: statefulset\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |-\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Job\"},\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: job\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.k8s }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: namespace_workload_pod:kube_pod_owner:relabel\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml",
    "content": "{{- /*\nGenerated from 'kube-apiserver-availability.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeApiServer.enabled .Values.defaultRules.rules.kubeApiserverAvailability }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kube-apiserver-availability.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - interval: 3m\n    name: kube-apiserver-availability.rules\n    rules:\n    - expr: avg_over_time(code_verb:apiserver_request_total:increase1h[30d]) * 24 * 30\n      record: code_verb:apiserver_request_total:increase30d\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: sum by (cluster, code) (code_verb:apiserver_request_total:increase30d{verb=~\"LIST|GET\"})\n      labels:\n        verb: read\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: code:apiserver_request_total:increase30d\n    - expr: sum by (cluster, code) (code_verb:apiserver_request_total:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n      labels:\n        verb: write\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: code:apiserver_request_total:increase30d\n    - expr: sum by (cluster, verb, scope) (increase(apiserver_request_slo_duration_seconds_count[1h]))\n      record: cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase1h\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: sum by (cluster, verb, scope) (avg_over_time(cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase1h[30d]) * 24 * 30)\n      record: cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: sum by (cluster, verb, scope, le) (increase(apiserver_request_slo_duration_seconds_bucket[1h]))\n      record: cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase1h\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: sum by (cluster, verb, scope, le) (avg_over_time(cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase1h[30d]) * 24 * 30)\n      record: cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        1 - (\n          (\n            # write too slow\n            sum by (cluster) (cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n            -\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=\"1\"})\n          ) +\n          (\n            # read too slow\n            sum by (cluster) (cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n            -\n            (\n              (\n                sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=\"1\"})\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=\"5\"})\n              +\n              sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=\"30\"})\n            )\n          ) +\n          # errors\n          sum by (cluster) (code:apiserver_request_total:increase30d{code=~\"5..\"} or vector(0))\n        )\n        /\n        sum by (cluster) (code:apiserver_request_total:increase30d)\n      labels:\n        verb: all\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:availability30d\n    - expr: |-\n        1 - (\n          sum by (cluster) (cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n          -\n          (\n            # too slow\n            (\n              sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=\"1\"})\n              or\n              vector(0)\n            )\n            +\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=\"5\"})\n            +\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=\"30\"})\n          )\n          +\n          # errors\n          sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\",code=~\"5..\"} or vector(0))\n        )\n        /\n        sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\"})\n      labels:\n        verb: read\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:availability30d\n    - expr: |-\n        1 - (\n          (\n            # too slow\n            sum by (cluster) (cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n            -\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=\"1\"})\n          )\n          +\n          # errors\n          sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\",code=~\"5..\"} or vector(0))\n        )\n        /\n        sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\"})\n      labels:\n        verb: write\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:availability30d\n    - expr: sum by (cluster,code,resource) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[5m]))\n      labels:\n        verb: read\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: code_resource:apiserver_request_total:rate5m\n    - expr: sum by (cluster,code,resource) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[5m]))\n      labels:\n        verb: write\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: code_resource:apiserver_request_total:rate5m\n    - expr: sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"2..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"3..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"4..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"5..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-burnrate.rules.yaml",
    "content": "{{- /*\nGenerated from 'kube-apiserver-burnrate.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeApiServer.enabled .Values.defaultRules.rules.kubeApiserverBurnrate }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kube-apiserver-burnrate.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kube-apiserver-burnrate.rules\n    rules:\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[1d]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[1d]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[1d]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[1d]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[1d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[1d]))\n      labels:\n        verb: read\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate1d\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[1h]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[1h]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[1h]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[1h]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[1h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[1h]))\n      labels:\n        verb: read\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate1h\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[2h]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[2h]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[2h]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[2h]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[2h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[2h]))\n      labels:\n        verb: read\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate2h\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[30m]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[30m]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[30m]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[30m]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[30m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[30m]))\n      labels:\n        verb: read\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate30m\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[3d]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[3d]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[3d]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[3d]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[3d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[3d]))\n      labels:\n        verb: read\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate3d\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[5m]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[5m]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[5m]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[5m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[5m]))\n      labels:\n        verb: read\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate5m\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[6h]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[6h]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[6h]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[6h]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[6h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[6h]))\n      labels:\n        verb: read\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate6h\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[1d]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[1d]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[1d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[1d]))\n      labels:\n        verb: write\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate1d\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[1h]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[1h]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[1h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[1h]))\n      labels:\n        verb: write\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate1h\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[2h]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[2h]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[2h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[2h]))\n      labels:\n        verb: write\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate2h\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[30m]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[30m]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[30m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[30m]))\n      labels:\n        verb: write\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate30m\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[3d]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[3d]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[3d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[3d]))\n      labels:\n        verb: write\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate3d\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[5m]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[5m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[5m]))\n      labels:\n        verb: write\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate5m\n    - expr: |-\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[6h]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[6h]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[6h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[6h]))\n      labels:\n        verb: write\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: apiserver_request:burnrate6h\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-histogram.rules.yaml",
    "content": "{{- /*\nGenerated from 'kube-apiserver-histogram.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeApiServer.enabled .Values.defaultRules.rules.kubeApiserverHistogram }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kube-apiserver-histogram.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kube-apiserver-histogram.rules\n    rules:\n    - expr: histogram_quantile(0.99, sum by (cluster, le, resource) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))) > 0\n      labels:\n        quantile: '0.99'\n        verb: read\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverHistogram }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverHistogram }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: cluster_quantile:apiserver_request_slo_duration_seconds:histogram_quantile\n    - expr: histogram_quantile(0.99, sum by (cluster, le, resource) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))) > 0\n      labels:\n        quantile: '0.99'\n        verb: write\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverHistogram }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverHistogram }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: cluster_quantile:apiserver_request_slo_duration_seconds:histogram_quantile\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml",
    "content": "{{- /*\nGenerated from 'kube-apiserver-slos' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeApiServer.enabled .Values.defaultRules.rules.kubeApiserverSlos }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kube-apiserver-slos\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kube-apiserver-slos\n    rules:\n{{- if not (.Values.defaultRules.disabled.KubeAPIErrorBudgetBurn | default false) }}\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos | indent 8 }}\n{{- end }}\n        description: The API server is burning too much error budget.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |-\n        sum(apiserver_request:burnrate1h) > (14.40 * 0.01000)\n        and\n        sum(apiserver_request:burnrate5m) > (14.40 * 0.01000)\n      for: 2m\n      labels:\n        long: 1h\n        severity: critical\n        short: 5m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeAPIErrorBudgetBurn | default false) }}\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos | indent 8 }}\n{{- end }}\n        description: The API server is burning too much error budget.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |-\n        sum(apiserver_request:burnrate6h) > (6.00 * 0.01000)\n        and\n        sum(apiserver_request:burnrate30m) > (6.00 * 0.01000)\n      for: 15m\n      labels:\n        long: 6h\n        severity: critical\n        short: 30m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeAPIErrorBudgetBurn | default false) }}\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos | indent 8 }}\n{{- end }}\n        description: The API server is burning too much error budget.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |-\n        sum(apiserver_request:burnrate1d) > (3.00 * 0.01000)\n        and\n        sum(apiserver_request:burnrate2h) > (3.00 * 0.01000)\n      for: 1h\n      labels:\n        long: 1d\n        severity: warning\n        short: 2h\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeAPIErrorBudgetBurn | default false) }}\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos | indent 8 }}\n{{- end }}\n        description: The API server is burning too much error budget.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |-\n        sum(apiserver_request:burnrate3d) > (1.00 * 0.01000)\n        and\n        sum(apiserver_request:burnrate6h) > (1.00 * 0.01000)\n      for: 3h\n      labels:\n        long: 3d\n        severity: warning\n        short: 6h\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml",
    "content": "{{- /*\nGenerated from 'kube-prometheus-general.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubePrometheus-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubePrometheusGeneral }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kube-prometheus-general.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kube-prometheus-general.rules\n    rules:\n    - expr: count without(instance, pod, node) (up == 1)\n      record: count:up1\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusGeneral }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusGeneral }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: count without(instance, pod, node) (up == 0)\n      record: count:up0\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusGeneral }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusGeneral }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml",
    "content": "{{- /*\nGenerated from 'kube-prometheus-node-recording.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubePrometheus-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubePrometheusNodeRecording }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kube-prometheus-node-recording.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kube-prometheus-node-recording.rules\n    rules:\n    - expr: sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[3m])) BY (instance)\n      record: instance:node_cpu:rate:sum\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: sum(rate(node_network_receive_bytes_total[3m])) BY (instance)\n      record: instance:node_network_receive_bytes:rate:sum\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: sum(rate(node_network_transmit_bytes_total[3m])) BY (instance)\n      record: instance:node_network_transmit_bytes:rate:sum\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[5m])) WITHOUT (cpu, mode) / ON(instance) GROUP_LEFT() count(sum(node_cpu_seconds_total) BY (instance, cpu)) BY (instance)\n      record: instance:node_cpu:ratio\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[5m]))\n      record: cluster:node_cpu:sum_rate5m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: cluster:node_cpu:sum_rate5m / count(sum(node_cpu_seconds_total) BY (instance, cpu))\n      record: cluster:node_cpu:ratio\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml",
    "content": "{{- /*\nGenerated from 'kube-scheduler.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeScheduler.enabled .Values.defaultRules.rules.kubeSchedulerRecording }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kube-scheduler.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kube-scheduler.rules\n    rules:\n    - expr: histogram_quantile(0.99, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: '0.99'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile\n    - expr: histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: '0.99'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile\n    - expr: histogram_quantile(0.99, sum(rate(scheduler_binding_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: '0.99'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile\n    - expr: histogram_quantile(0.9, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: '0.9'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile\n    - expr: histogram_quantile(0.9, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: '0.9'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile\n    - expr: histogram_quantile(0.9, sum(rate(scheduler_binding_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: '0.9'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile\n    - expr: histogram_quantile(0.5, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: '0.5'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile\n    - expr: histogram_quantile(0.5, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: '0.5'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile\n    - expr: histogram_quantile(0.5, sum(rate(scheduler_binding_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: '0.5'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-state-metrics.yaml",
    "content": "{{- /*\nGenerated from 'kube-state-metrics' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubeStateMetrics-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubeStateMetrics }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kube-state-metrics\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kube-state-metrics\n    rules:\n{{- if not (.Values.defaultRules.disabled.KubeStateMetricsListErrors | default false) }}\n    - alert: KubeStateMetricsListErrors\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics | indent 8 }}\n{{- end }}\n        description: kube-state-metrics is experiencing errors at an elevated rate in list operations. This is likely causing it to not be able to expose metrics about Kubernetes objects correctly or at all.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kube-state-metrics/kubestatemetricslisterrors\n        summary: kube-state-metrics is experiencing errors in list operations.\n      expr: |-\n        (sum(rate(kube_state_metrics_list_total{job=\"kube-state-metrics\",result=\"error\"}[5m])) by (cluster)\n          /\n        sum(rate(kube_state_metrics_list_total{job=\"kube-state-metrics\"}[5m])) by (cluster))\n        > 0.01\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeStateMetricsWatchErrors | default false) }}\n    - alert: KubeStateMetricsWatchErrors\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics | indent 8 }}\n{{- end }}\n        description: kube-state-metrics is experiencing errors at an elevated rate in watch operations. This is likely causing it to not be able to expose metrics about Kubernetes objects correctly or at all.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kube-state-metrics/kubestatemetricswatcherrors\n        summary: kube-state-metrics is experiencing errors in watch operations.\n      expr: |-\n        (sum(rate(kube_state_metrics_watch_total{job=\"kube-state-metrics\",result=\"error\"}[5m])) by (cluster)\n          /\n        sum(rate(kube_state_metrics_watch_total{job=\"kube-state-metrics\"}[5m])) by (cluster))\n        > 0.01\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeStateMetricsShardingMismatch | default false) }}\n    - alert: KubeStateMetricsShardingMismatch\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics | indent 8 }}\n{{- end }}\n        description: kube-state-metrics pods are running with different --total-shards configuration, some Kubernetes objects may be exposed multiple times or not exposed at all.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kube-state-metrics/kubestatemetricsshardingmismatch\n        summary: kube-state-metrics sharding is misconfigured.\n      expr: stdvar (kube_state_metrics_total_shards{job=\"kube-state-metrics\"}) by (cluster) != 0\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeStateMetricsShardsMissing | default false) }}\n    - alert: KubeStateMetricsShardsMissing\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics | indent 8 }}\n{{- end }}\n        description: kube-state-metrics shards are missing, some Kubernetes objects are not being exposed.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kube-state-metrics/kubestatemetricsshardsmissing\n        summary: kube-state-metrics shards are missing.\n      expr: |-\n        2^max(kube_state_metrics_total_shards{job=\"kube-state-metrics\"}) by (cluster) - 1\n          -\n        sum( 2 ^ max by (cluster, shard_ordinal) (kube_state_metrics_shard_ordinal{job=\"kube-state-metrics\"}) ) by (cluster)\n        != 0\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubelet.rules.yaml",
    "content": "{{- /*\nGenerated from 'kubelet.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.kubelet.enabled .Values.defaultRules.rules.kubelet }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kubelet.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kubelet.rules\n    rules:\n    - expr: histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"})\n      labels:\n        quantile: '0.99'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubelet }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubelet }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile\n    - expr: histogram_quantile(0.9, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"})\n      labels:\n        quantile: '0.9'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubelet }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubelet }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile\n    - expr: histogram_quantile(0.5, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"})\n      labels:\n        quantile: '0.5'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubelet }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubelet }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n      record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-apps.yaml",
    "content": "{{- /*\nGenerated from 'kubernetes-apps' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesApps }}\n{{- $targetNamespace := .Values.defaultRules.appNamespacesTarget }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kubernetes-apps\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kubernetes-apps\n    rules:\n{{- if not (.Values.defaultRules.disabled.KubePodCrashLooping | default false) }}\n    - alert: KubePodCrashLooping\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: 'Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} ({{`{{`}} $labels.container {{`}}`}}) is in waiting state (reason: \"CrashLoopBackOff\").'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubepodcrashlooping\n        summary: Pod is crash looping.\n      expr: max_over_time(kube_pod_container_status_waiting_reason{reason=\"CrashLoopBackOff\", job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}[5m]) >= 1\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubePodNotReady | default false) }}\n    - alert: KubePodNotReady\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} has been in a non-ready state for longer than 15 minutes.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubepodnotready\n        summary: Pod has been in a non-ready state for more than 15 minutes.\n      expr: |-\n        sum by (namespace, pod, cluster) (\n          max by(namespace, pod, cluster) (\n            kube_pod_status_phase{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\", phase=~\"Pending|Unknown|Failed\"}\n          ) * on(namespace, pod, cluster) group_left(owner_kind) topk by(namespace, pod, cluster) (\n            1, max by(namespace, pod, owner_kind, cluster) (kube_pod_owner{owner_kind!=\"Job\"})\n          )\n        ) > 0\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeDeploymentGenerationMismatch | default false) }}\n    - alert: KubeDeploymentGenerationMismatch\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: Deployment generation for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.deployment {{`}}`}} does not match, this indicates that the Deployment has failed but has not been rolled back.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubedeploymentgenerationmismatch\n        summary: Deployment generation mismatch due to possible roll-back\n      expr: |-\n        kube_deployment_status_observed_generation{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          !=\n        kube_deployment_metadata_generation{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeDeploymentReplicasMismatch | default false) }}\n    - alert: KubeDeploymentReplicasMismatch\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: Deployment {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.deployment {{`}}`}} has not matched the expected number of replicas for longer than 15 minutes.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubedeploymentreplicasmismatch\n        summary: Deployment has not matched the expected number of replicas.\n      expr: |-\n        (\n          kube_deployment_spec_replicas{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n            >\n          kube_deployment_status_replicas_available{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n        ) and (\n          changes(kube_deployment_status_replicas_updated{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}[10m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeStatefulSetReplicasMismatch | default false) }}\n    - alert: KubeStatefulSetReplicasMismatch\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: StatefulSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} has not matched the expected number of replicas for longer than 15 minutes.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubestatefulsetreplicasmismatch\n        summary: Deployment has not matched the expected number of replicas.\n      expr: |-\n        (\n          kube_statefulset_status_replicas_ready{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n            !=\n          kube_statefulset_status_replicas{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n        ) and (\n          changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}[10m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeStatefulSetGenerationMismatch | default false) }}\n    - alert: KubeStatefulSetGenerationMismatch\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: StatefulSet generation for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} does not match, this indicates that the StatefulSet has failed but has not been rolled back.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubestatefulsetgenerationmismatch\n        summary: StatefulSet generation mismatch due to possible roll-back\n      expr: |-\n        kube_statefulset_status_observed_generation{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          !=\n        kube_statefulset_metadata_generation{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeStatefulSetUpdateNotRolledOut | default false) }}\n    - alert: KubeStatefulSetUpdateNotRolledOut\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: StatefulSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} update has not been rolled out.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubestatefulsetupdatenotrolledout\n        summary: StatefulSet update has not been rolled out.\n      expr: |-\n        (\n          max without (revision) (\n            kube_statefulset_status_current_revision{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n              unless\n            kube_statefulset_status_update_revision{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          )\n            *\n          (\n            kube_statefulset_replicas{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n              !=\n            kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          )\n        )  and (\n          changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}[5m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeDaemonSetRolloutStuck | default false) }}\n    - alert: KubeDaemonSetRolloutStuck\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} has not finished or progressed for at least 15 minutes.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubedaemonsetrolloutstuck\n        summary: DaemonSet rollout is stuck.\n      expr: |-\n        (\n          (\n            kube_daemonset_status_current_number_scheduled{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n             !=\n            kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          ) or (\n            kube_daemonset_status_number_misscheduled{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n             !=\n            0\n          ) or (\n            kube_daemonset_status_updated_number_scheduled{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n             !=\n            kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          ) or (\n            kube_daemonset_status_number_available{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n             !=\n            kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          )\n        ) and (\n          changes(kube_daemonset_status_updated_number_scheduled{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}[5m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeContainerWaiting | default false) }}\n    - alert: KubeContainerWaiting\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: pod/{{`{{`}} $labels.pod {{`}}`}} in namespace {{`{{`}} $labels.namespace {{`}}`}} on container {{`{{`}} $labels.container{{`}}`}} has been in waiting state for longer than 1 hour.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubecontainerwaiting\n        summary: Pod container waiting longer than 1 hour\n      expr: sum by (namespace, pod, container, cluster) (kube_pod_container_status_waiting_reason{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}) > 0\n      for: 1h\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeDaemonSetNotScheduled | default false) }}\n    - alert: KubeDaemonSetNotScheduled\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} $value {{`}}`}} Pods of DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} are not scheduled.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubedaemonsetnotscheduled\n        summary: DaemonSet pods are not scheduled.\n      expr: |-\n        kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          -\n        kube_daemonset_status_current_number_scheduled{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"} > 0\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeDaemonSetMisScheduled | default false) }}\n    - alert: KubeDaemonSetMisScheduled\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} $value {{`}}`}} Pods of DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} are running where they are not supposed to run.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubedaemonsetmisscheduled\n        summary: DaemonSet pods are misscheduled.\n      expr: kube_daemonset_status_number_misscheduled{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"} > 0\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeJobNotCompleted | default false) }}\n    - alert: KubeJobNotCompleted\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: Job {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.job_name {{`}}`}} is taking more than {{`{{`}} \"43200\" | humanizeDuration {{`}}`}} to complete.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubejobnotcompleted\n        summary: Job did not complete in time\n      expr: |-\n        time() - max by(namespace, job_name, cluster) (kube_job_status_start_time{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          and\n        kube_job_status_active{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"} > 0) > 43200\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeJobFailed | default false) }}\n    - alert: KubeJobFailed\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: Job {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.job_name {{`}}`}} failed to complete. Removing failed job after investigation should clear this alert.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubejobfailed\n        summary: Job failed to complete.\n      expr: kube_job_failed{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}  > 0\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeHpaReplicasMismatch | default false) }}\n    - alert: KubeHpaReplicasMismatch\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: HPA {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.horizontalpodautoscaler  {{`}}`}} has not matched the desired number of replicas for longer than 15 minutes.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubehpareplicasmismatch\n        summary: HPA has not matched desired number of replicas.\n      expr: |-\n        (kube_horizontalpodautoscaler_status_desired_replicas{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          !=\n        kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"})\n          and\n        (kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          >\n        kube_horizontalpodautoscaler_spec_min_replicas{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"})\n          and\n        (kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          <\n        kube_horizontalpodautoscaler_spec_max_replicas{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"})\n          and\n        changes(kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}[15m]) == 0\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeHpaMaxedOut | default false) }}\n    - alert: KubeHpaMaxedOut\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }}\n{{- end }}\n        description: HPA {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.horizontalpodautoscaler  {{`}}`}} has been running at max replicas for longer than 15 minutes.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubehpamaxedout\n        summary: HPA is running at max replicas\n      expr: |-\n        kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n          ==\n        kube_horizontalpodautoscaler_spec_max_replicas{job=\"kube-state-metrics\", namespace=~\"{{ $targetNamespace }}\"}\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-resources.yaml",
    "content": "{{- /*\nGenerated from 'kubernetes-resources' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesResources }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kubernetes-resources\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kubernetes-resources\n    rules:\n{{- if not (.Values.defaultRules.disabled.KubeCPUOvercommit | default false) }}\n    - alert: KubeCPUOvercommit\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }}\n{{- end }}\n        description: Cluster {{`{{`}} $labels.cluster {{`}}`}} has overcommitted CPU resource requests for Pods by {{`{{`}} $value {{`}}`}} CPU shares and cannot tolerate node failure.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubecpuovercommit\n        summary: Cluster has overcommitted CPU resource requests.\n      expr: |-\n        sum(namespace_cpu:kube_pod_container_resource_requests:sum{job=\"kube-state-metrics\",}) by (cluster) - (sum(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) by (cluster) - max(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) by (cluster)) > 0\n        and\n        (sum(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) by (cluster) - max(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) by (cluster)) > 0\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeMemoryOvercommit | default false) }}\n    - alert: KubeMemoryOvercommit\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }}\n{{- end }}\n        description: Cluster {{`{{`}} $labels.cluster {{`}}`}} has overcommitted memory resource requests for Pods by {{`{{`}} $value | humanize {{`}}`}} bytes and cannot tolerate node failure.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubememoryovercommit\n        summary: Cluster has overcommitted memory resource requests.\n      expr: |-\n        sum(namespace_memory:kube_pod_container_resource_requests:sum{}) by (cluster) - (sum(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster) - max(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster)) > 0\n        and\n        (sum(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster) - max(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster)) > 0\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeCPUQuotaOvercommit | default false) }}\n    - alert: KubeCPUQuotaOvercommit\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }}\n{{- end }}\n        description: Cluster {{`{{`}} $labels.cluster {{`}}`}}  has overcommitted CPU resource requests for Namespaces.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubecpuquotaovercommit\n        summary: Cluster has overcommitted CPU resource requests.\n      expr: |-\n        sum(min without(resource) (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\", resource=~\"(cpu|requests.cpu)\"})) by (cluster)\n          /\n        sum(kube_node_status_allocatable{resource=\"cpu\", job=\"kube-state-metrics\"}) by (cluster)\n          > 1.5\n      for: 5m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeMemoryQuotaOvercommit | default false) }}\n    - alert: KubeMemoryQuotaOvercommit\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }}\n{{- end }}\n        description: Cluster {{`{{`}} $labels.cluster {{`}}`}}  has overcommitted memory resource requests for Namespaces.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubememoryquotaovercommit\n        summary: Cluster has overcommitted memory resource requests.\n      expr: |-\n        sum(min without(resource) (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\", resource=~\"(memory|requests.memory)\"})) by (cluster)\n          /\n        sum(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster)\n          > 1.5\n      for: 5m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeQuotaAlmostFull | default false) }}\n    - alert: KubeQuotaAlmostFull\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }}\n{{- end }}\n        description: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} $value | humanizePercentage {{`}}`}} of its {{`{{`}} $labels.resource {{`}}`}} quota.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubequotaalmostfull\n        summary: Namespace quota is going to be full.\n      expr: |-\n        kube_resourcequota{job=\"kube-state-metrics\", type=\"used\"}\n          / ignoring(instance, job, type)\n        (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\"} > 0)\n          > 0.9 < 1\n      for: 15m\n      labels:\n        severity: info\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeQuotaFullyUsed | default false) }}\n    - alert: KubeQuotaFullyUsed\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }}\n{{- end }}\n        description: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} $value | humanizePercentage {{`}}`}} of its {{`{{`}} $labels.resource {{`}}`}} quota.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubequotafullyused\n        summary: Namespace quota is fully used.\n      expr: |-\n        kube_resourcequota{job=\"kube-state-metrics\", type=\"used\"}\n          / ignoring(instance, job, type)\n        (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\"} > 0)\n          == 1\n      for: 15m\n      labels:\n        severity: info\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeQuotaExceeded | default false) }}\n    - alert: KubeQuotaExceeded\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }}\n{{- end }}\n        description: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} $value | humanizePercentage {{`}}`}} of its {{`{{`}} $labels.resource {{`}}`}} quota.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubequotaexceeded\n        summary: Namespace quota has exceeded the limits.\n      expr: |-\n        kube_resourcequota{job=\"kube-state-metrics\", type=\"used\"}\n          / ignoring(instance, job, type)\n        (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\"} > 0)\n          > 1\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.CPUThrottlingHigh | default false) }}\n    - alert: CPUThrottlingHigh\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} $value | humanizePercentage {{`}}`}} throttling of CPU in namespace {{`{{`}} $labels.namespace {{`}}`}} for container {{`{{`}} $labels.container {{`}}`}} in pod {{`{{`}} $labels.pod {{`}}`}}.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/cputhrottlinghigh\n        summary: Processes experience elevated CPU throttling.\n      expr: |-\n        sum(increase(container_cpu_cfs_throttled_periods_total{container!=\"\", }[5m])) by (container, pod, namespace)\n          /\n        sum(increase(container_cpu_cfs_periods_total{}[5m])) by (container, pod, namespace)\n          > ( 25 / 100 )\n      for: 15m\n      labels:\n        severity: info\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-storage.yaml",
    "content": "{{- /*\nGenerated from 'kubernetes-storage' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesStorage }}\n{{- $targetNamespace := .Values.defaultRules.appNamespacesTarget }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kubernetes-storage\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kubernetes-storage\n    rules:\n{{- if not (.Values.defaultRules.disabled.KubePersistentVolumeFillingUp | default false) }}\n    - alert: KubePersistentVolumeFillingUp\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage | indent 8 }}\n{{- end }}\n        description: The PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} is only {{`{{`}} $value | humanizePercentage {{`}}`}} free.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubepersistentvolumefillingup\n        summary: PersistentVolume is filling up.\n      expr: |-\n        (\n          kubelet_volume_stats_available_bytes{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_capacity_bytes{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"}\n        ) < 0.03\n        and\n        kubelet_volume_stats_used_bytes{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"} > 0\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubePersistentVolumeFillingUp | default false) }}\n    - alert: KubePersistentVolumeFillingUp\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage | indent 8 }}\n{{- end }}\n        description: Based on recent sampling, the PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} is expected to fill up within four days. Currently {{`{{`}} $value | humanizePercentage {{`}}`}} is available.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubepersistentvolumefillingup\n        summary: PersistentVolume is filling up.\n      expr: |-\n        (\n          kubelet_volume_stats_available_bytes{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_capacity_bytes{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"}\n        ) < 0.15\n        and\n        kubelet_volume_stats_used_bytes{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"} > 0\n        and\n        predict_linear(kubelet_volume_stats_available_bytes{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"}[6h], 4 * 24 * 3600) < 0\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1h\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubePersistentVolumeInodesFillingUp | default false) }}\n    - alert: KubePersistentVolumeInodesFillingUp\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage | indent 8 }}\n{{- end }}\n        description: The PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} only has {{`{{`}} $value | humanizePercentage {{`}}`}} free inodes.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubepersistentvolumeinodesfillingup\n        summary: PersistentVolumeInodes are filling up.\n      expr: |-\n        (\n          kubelet_volume_stats_inodes_free{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_inodes{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"}\n        ) < 0.03\n        and\n        kubelet_volume_stats_inodes_used{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"} > 0\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubePersistentVolumeInodesFillingUp | default false) }}\n    - alert: KubePersistentVolumeInodesFillingUp\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage | indent 8 }}\n{{- end }}\n        description: Based on recent sampling, the PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} is expected to run out of inodes within four days. Currently {{`{{`}} $value | humanizePercentage {{`}}`}} of its inodes are free.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubepersistentvolumeinodesfillingup\n        summary: PersistentVolumeInodes are filling up.\n      expr: |-\n        (\n          kubelet_volume_stats_inodes_free{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_inodes{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"}\n        ) < 0.15\n        and\n        kubelet_volume_stats_inodes_used{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"} > 0\n        and\n        predict_linear(kubelet_volume_stats_inodes_free{job=\"kubelet\", namespace=~\"{{ $targetNamespace }}\", metrics_path=\"/metrics\"}[6h], 4 * 24 * 3600) < 0\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1h\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubePersistentVolumeErrors | default false) }}\n    - alert: KubePersistentVolumeErrors\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage | indent 8 }}\n{{- end }}\n        description: The persistent volume {{`{{`}} $labels.persistentvolume {{`}}`}} has status {{`{{`}} $labels.phase {{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubepersistentvolumeerrors\n        summary: PersistentVolume is having issues with provisioning.\n      expr: kube_persistentvolume_status_phase{phase=~\"Failed|Pending\",job=\"kube-state-metrics\"} > 0\n      for: 5m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml",
    "content": "{{- /*\nGenerated from 'kubernetes-system-apiserver' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesSystem }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kubernetes-system-apiserver\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kubernetes-system-apiserver\n    rules:\n{{- if not (.Values.defaultRules.disabled.KubeClientCertificateExpiration | default false) }}\n    - alert: KubeClientCertificateExpiration\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: A client certificate used to authenticate to kubernetes apiserver is expiring in less than 7.0 days.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeclientcertificateexpiration\n        summary: Client certificate is about to expire.\n      expr: apiserver_client_certificate_expiration_seconds_count{job=\"apiserver\"} > 0 and on(job) histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job=\"apiserver\"}[5m]))) < 604800\n      for: 5m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeClientCertificateExpiration | default false) }}\n    - alert: KubeClientCertificateExpiration\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: A client certificate used to authenticate to kubernetes apiserver is expiring in less than 24.0 hours.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeclientcertificateexpiration\n        summary: Client certificate is about to expire.\n      expr: apiserver_client_certificate_expiration_seconds_count{job=\"apiserver\"} > 0 and on(job) histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job=\"apiserver\"}[5m]))) < 86400\n      for: 5m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeAggregatedAPIErrors | default false) }}\n    - alert: KubeAggregatedAPIErrors\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: Kubernetes aggregated API {{`{{`}} $labels.name {{`}}`}}/{{`{{`}} $labels.namespace {{`}}`}} has reported errors. It has appeared unavailable {{`{{`}} $value | humanize {{`}}`}} times averaged over the past 10m.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeaggregatedapierrors\n        summary: Kubernetes aggregated API has reported errors.\n      expr: sum by(name, namespace, cluster)(increase(aggregator_unavailable_apiservice_total[10m])) > 4\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeAggregatedAPIDown | default false) }}\n    - alert: KubeAggregatedAPIDown\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: Kubernetes aggregated API {{`{{`}} $labels.name {{`}}`}}/{{`{{`}} $labels.namespace {{`}}`}} has been only {{`{{`}} $value | humanize {{`}}`}}% available over the last 10m.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeaggregatedapidown\n        summary: Kubernetes aggregated API is down.\n      expr: (1 - max by(name, namespace, cluster)(avg_over_time(aggregator_unavailable_apiservice[10m]))) * 100 < 85\n      for: 5m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if .Values.kubeApiServer.enabled }}\n{{- if not (.Values.defaultRules.disabled.KubeAPIDown | default false) }}\n    - alert: KubeAPIDown\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: KubeAPI has disappeared from Prometheus target discovery.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeapidown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: absent(up{job=\"apiserver\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeAPITerminatedRequests | default false) }}\n    - alert: KubeAPITerminatedRequests\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: The kubernetes apiserver has terminated {{`{{`}} $value | humanizePercentage {{`}}`}} of its incoming requests.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeapiterminatedrequests\n        summary: The kubernetes apiserver has terminated {{`{{`}} $value | humanizePercentage {{`}}`}} of its incoming requests.\n      expr: sum(rate(apiserver_request_terminations_total{job=\"apiserver\"}[10m]))  / (  sum(rate(apiserver_request_total{job=\"apiserver\"}[10m])) + sum(rate(apiserver_request_terminations_total{job=\"apiserver\"}[10m])) ) > 0.20\n      for: 5m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml",
    "content": "{{- /*\nGenerated from 'kubernetes-system-controller-manager' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeControllerManager.enabled .Values.defaultRules.rules.kubeControllerManager }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kubernetes-system-controller-manager\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kubernetes-system-controller-manager\n    rules:\n{{- if .Values.kubeControllerManager.enabled }}\n{{- if not (.Values.defaultRules.disabled.KubeControllerManagerDown | default false) }}\n    - alert: KubeControllerManagerDown\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeControllerManager }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeControllerManager | indent 8 }}\n{{- end }}\n        description: KubeControllerManager has disappeared from Prometheus target discovery.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubecontrollermanagerdown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: absent(up{job=\"kube-controller-manager\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeControllerManager }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeControllerManager }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-kube-proxy.yaml",
    "content": "{{- /*\nGenerated from 'kubernetes-system-kube-proxy' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeProxy.enabled .Values.defaultRules.rules.kubeProxy }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kubernetes-system-kube-proxy\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kubernetes-system-kube-proxy\n    rules:\n{{- if not (.Values.defaultRules.disabled.KubeProxyDown | default false) }}\n    - alert: KubeProxyDown\n      annotations:\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupAnnotations.kubeProxy }}\n        {{- with .Values.defaultRules.additionalRuleAnnotations }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupAnnotations.kubeProxy }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n        description: KubeProxy has disappeared from Prometheus target discovery.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeproxydown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: absent(up{job=\"kube-proxy\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeProxy }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeProxy }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml",
    "content": "{{- /*\nGenerated from 'kubernetes-system-kubelet' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesSystem }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kubernetes-system-kubelet\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kubernetes-system-kubelet\n    rules:\n{{- if not (.Values.defaultRules.disabled.KubeNodeNotReady | default false) }}\n    - alert: KubeNodeNotReady\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} $labels.node {{`}}`}} has been unready for more than 15 minutes.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubenodenotready\n        summary: Node is not ready.\n      expr: kube_node_status_condition{job=\"kube-state-metrics\",condition=\"Ready\",status=\"true\"} == 0\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeNodeUnreachable | default false) }}\n    - alert: KubeNodeUnreachable\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} $labels.node {{`}}`}} is unreachable and some workloads may be rescheduled.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubenodeunreachable\n        summary: Node is unreachable.\n      expr: (kube_node_spec_taint{job=\"kube-state-metrics\",key=\"node.kubernetes.io/unreachable\",effect=\"NoSchedule\"} unless ignoring(key,value) kube_node_spec_taint{job=\"kube-state-metrics\",key=~\"ToBeDeletedByClusterAutoscaler|cloud.google.com/impending-node-termination|aws-node-termination-handler/spot-itn\"}) == 1\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeletTooManyPods | default false) }}\n    - alert: KubeletTooManyPods\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: Kubelet '{{`{{`}} $labels.node {{`}}`}}' is running at {{`{{`}} $value | humanizePercentage {{`}}`}} of its Pod capacity.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubelettoomanypods\n        summary: Kubelet is running at capacity.\n      expr: |-\n        count by(cluster, node) (\n          (kube_pod_status_phase{job=\"kube-state-metrics\",phase=\"Running\"} == 1) * on(instance,pod,namespace,cluster) group_left(node) topk by(instance,pod,namespace,cluster) (1, kube_pod_info{job=\"kube-state-metrics\"})\n        )\n        /\n        max by(cluster, node) (\n          kube_node_status_capacity{job=\"kube-state-metrics\",resource=\"pods\"} != 1\n        ) > 0.95\n      for: 15m\n      labels:\n        severity: info\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeNodeReadinessFlapping | default false) }}\n    - alert: KubeNodeReadinessFlapping\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: The readiness status of node {{`{{`}} $labels.node {{`}}`}} has changed {{`{{`}} $value {{`}}`}} times in the last 15 minutes.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubenodereadinessflapping\n        summary: Node readiness status is flapping.\n      expr: sum(changes(kube_node_status_condition{job=\"kube-state-metrics\",status=\"true\",condition=\"Ready\"}[15m])) by (cluster, node) > 2\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeletPlegDurationHigh | default false) }}\n    - alert: KubeletPlegDurationHigh\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: The Kubelet Pod Lifecycle Event Generator has a 99th percentile duration of {{`{{`}} $value {{`}}`}} seconds on node {{`{{`}} $labels.node {{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletplegdurationhigh\n        summary: Kubelet Pod Lifecycle Event Generator is taking too long to relist.\n      expr: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile{quantile=\"0.99\"} >= 10\n      for: 5m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeletPodStartUpLatencyHigh | default false) }}\n    - alert: KubeletPodStartUpLatencyHigh\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: Kubelet Pod startup 99th percentile latency is {{`{{`}} $value {{`}}`}} seconds on node {{`{{`}} $labels.node {{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletpodstartuplatencyhigh\n        summary: Kubelet Pod startup latency is too high.\n      expr: histogram_quantile(0.99, sum(rate(kubelet_pod_worker_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le)) * on(cluster, instance) group_left(node) kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"} > 60\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeletClientCertificateExpiration | default false) }}\n    - alert: KubeletClientCertificateExpiration\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: Client certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletclientcertificateexpiration\n        summary: Kubelet client certificate is about to expire.\n      expr: kubelet_certificate_manager_client_ttl_seconds < 604800\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeletClientCertificateExpiration | default false) }}\n    - alert: KubeletClientCertificateExpiration\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: Client certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletclientcertificateexpiration\n        summary: Kubelet client certificate is about to expire.\n      expr: kubelet_certificate_manager_client_ttl_seconds < 86400\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeletServerCertificateExpiration | default false) }}\n    - alert: KubeletServerCertificateExpiration\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: Server certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletservercertificateexpiration\n        summary: Kubelet server certificate is about to expire.\n      expr: kubelet_certificate_manager_server_ttl_seconds < 604800\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeletServerCertificateExpiration | default false) }}\n    - alert: KubeletServerCertificateExpiration\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: Server certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletservercertificateexpiration\n        summary: Kubelet server certificate is about to expire.\n      expr: kubelet_certificate_manager_server_ttl_seconds < 86400\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeletClientCertificateRenewalErrors | default false) }}\n    - alert: KubeletClientCertificateRenewalErrors\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: Kubelet on node {{`{{`}} $labels.node {{`}}`}} has failed to renew its client certificate ({{`{{`}} $value | humanize {{`}}`}} errors in the last 5 minutes).\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletclientcertificaterenewalerrors\n        summary: Kubelet has failed to renew its client certificate.\n      expr: increase(kubelet_certificate_manager_client_expiration_renew_errors[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeletServerCertificateRenewalErrors | default false) }}\n    - alert: KubeletServerCertificateRenewalErrors\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: Kubelet on node {{`{{`}} $labels.node {{`}}`}} has failed to renew its server certificate ({{`{{`}} $value | humanize {{`}}`}} errors in the last 5 minutes).\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletservercertificaterenewalerrors\n        summary: Kubelet has failed to renew its server certificate.\n      expr: increase(kubelet_server_expiration_renew_errors[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if .Values.prometheusOperator.kubeletService.enabled }}\n{{- if not (.Values.defaultRules.disabled.KubeletDown | default false) }}\n    - alert: KubeletDown\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: Kubelet has disappeared from Prometheus target discovery.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletdown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: absent(up{job=\"kubelet\", metrics_path=\"/metrics\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml",
    "content": "{{- /*\nGenerated from 'kubernetes-system-scheduler' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeScheduler.enabled .Values.defaultRules.rules.kubeSchedulerAlerting }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kubernetes-system-scheduler\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kubernetes-system-scheduler\n    rules:\n{{- if .Values.kubeScheduler.enabled }}\n{{- if not (.Values.defaultRules.disabled.KubeSchedulerDown | default false) }}\n    - alert: KubeSchedulerDown\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeSchedulerAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeSchedulerAlerting | indent 8 }}\n{{- end }}\n        description: KubeScheduler has disappeared from Prometheus target discovery.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeschedulerdown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: absent(up{job=\"kube-scheduler\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system.yaml",
    "content": "{{- /*\nGenerated from 'kubernetes-system' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesSystem }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"kubernetes-system\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: kubernetes-system\n    rules:\n{{- if not (.Values.defaultRules.disabled.KubeVersionMismatch | default false) }}\n    - alert: KubeVersionMismatch\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: There are {{`{{`}} $value {{`}}`}} different semantic versions of Kubernetes components running.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeversionmismatch\n        summary: Different semantic versions of Kubernetes components running.\n      expr: count by (cluster) (count by (git_version, cluster) (label_replace(kubernetes_build_info{job!~\"kube-dns|coredns\"},\"git_version\",\"$1\",\"git_version\",\"(v[0-9]*.[0-9]*).*\"))) > 1\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.KubeClientErrors | default false) }}\n    - alert: KubeClientErrors\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }}\n{{- end }}\n        description: Kubernetes API server client '{{`{{`}} $labels.job {{`}}`}}/{{`{{`}} $labels.instance {{`}}`}}' is experiencing {{`{{`}} $value | humanizePercentage {{`}}`}} errors.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeclienterrors\n        summary: Kubernetes API server client is experiencing errors.\n      expr: |-\n        (sum(rate(rest_client_requests_total{job=\"apiserver\",code=~\"5..\"}[5m])) by (cluster, instance, job, namespace)\n          /\n        sum(rate(rest_client_requests_total{job=\"apiserver\"}[5m])) by (cluster, instance, job, namespace))\n        > 0.01\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-exporter.rules.yaml",
    "content": "{{- /*\nGenerated from 'node-exporter.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/nodeExporter-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.nodeExporterRecording }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"node-exporter.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: node-exporter.rules\n    rules:\n    - expr: |-\n        count without (cpu, mode) (\n          node_cpu_seconds_total{job=\"node-exporter\",mode=\"idle\"}\n        )\n      record: instance:node_num_cpu:sum\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        1 - avg without (cpu) (\n          sum without (mode) (rate(node_cpu_seconds_total{job=\"node-exporter\", mode=~\"idle|iowait|steal\"}[5m]))\n        )\n      record: instance:node_cpu_utilisation:rate5m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        (\n          node_load1{job=\"node-exporter\"}\n        /\n          instance:node_num_cpu:sum{job=\"node-exporter\"}\n        )\n      record: instance:node_load1_per_cpu:ratio\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        1 - (\n          (\n            node_memory_MemAvailable_bytes{job=\"node-exporter\"}\n            or\n            (\n              node_memory_Buffers_bytes{job=\"node-exporter\"}\n              +\n              node_memory_Cached_bytes{job=\"node-exporter\"}\n              +\n              node_memory_MemFree_bytes{job=\"node-exporter\"}\n              +\n              node_memory_Slab_bytes{job=\"node-exporter\"}\n            )\n          )\n        /\n          node_memory_MemTotal_bytes{job=\"node-exporter\"}\n        )\n      record: instance:node_memory_utilisation:ratio\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: rate(node_vmstat_pgmajfault{job=\"node-exporter\"}[5m])\n      record: instance:node_vmstat_pgmajfault:rate5m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: rate(node_disk_io_time_seconds_total{job=\"node-exporter\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[5m])\n      record: instance_device:node_disk_io_time_seconds:rate5m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: rate(node_disk_io_time_weighted_seconds_total{job=\"node-exporter\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[5m])\n      record: instance_device:node_disk_io_time_weighted_seconds:rate5m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        sum without (device) (\n          rate(node_network_receive_bytes_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_receive_bytes_excluding_lo:rate5m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        sum without (device) (\n          rate(node_network_transmit_bytes_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_transmit_bytes_excluding_lo:rate5m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        sum without (device) (\n          rate(node_network_receive_drop_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_receive_drop_excluding_lo:rate5m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        sum without (device) (\n          rate(node_network_transmit_drop_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_transmit_drop_excluding_lo:rate5m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-exporter.yaml",
    "content": "{{- /*\nGenerated from 'node-exporter' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/nodeExporter-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.nodeExporterAlerting }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"node-exporter\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: node-exporter\n    rules:\n{{- if not (.Values.defaultRules.disabled.NodeFilesystemSpaceFillingUp | default false) }}\n    - alert: NodeFilesystemSpaceFillingUp\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf \"%.2f\" $value {{`}}`}}% available space left and is filling up.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemspacefillingup\n        summary: Filesystem is predicted to run out of space within the next 24 hours.\n      expr: |-\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 15\n        and\n          predict_linear(node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 24*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeFilesystemSpaceFillingUp | default false) }}\n    - alert: NodeFilesystemSpaceFillingUp\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf \"%.2f\" $value {{`}}`}}% available space left and is filling up fast.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemspacefillingup\n        summary: Filesystem is predicted to run out of space within the next 4 hours.\n      expr: |-\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 10\n        and\n          predict_linear(node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 4*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeFilesystemAlmostOutOfSpace | default false) }}\n    - alert: NodeFilesystemAlmostOutOfSpace\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf \"%.2f\" $value {{`}}`}}% available space left.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemalmostoutofspace\n        summary: Filesystem has less than 5% space left.\n      expr: |-\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 5\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 30m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeFilesystemAlmostOutOfSpace | default false) }}\n    - alert: NodeFilesystemAlmostOutOfSpace\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf \"%.2f\" $value {{`}}`}}% available space left.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemalmostoutofspace\n        summary: Filesystem has less than 3% space left.\n      expr: |-\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 3\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 30m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeFilesystemFilesFillingUp | default false) }}\n    - alert: NodeFilesystemFilesFillingUp\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf \"%.2f\" $value {{`}}`}}% available inodes left and is filling up.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemfilesfillingup\n        summary: Filesystem is predicted to run out of inodes within the next 24 hours.\n      expr: |-\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 40\n        and\n          predict_linear(node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 24*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeFilesystemFilesFillingUp | default false) }}\n    - alert: NodeFilesystemFilesFillingUp\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf \"%.2f\" $value {{`}}`}}% available inodes left and is filling up fast.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemfilesfillingup\n        summary: Filesystem is predicted to run out of inodes within the next 4 hours.\n      expr: |-\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 20\n        and\n          predict_linear(node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 4*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeFilesystemAlmostOutOfFiles | default false) }}\n    - alert: NodeFilesystemAlmostOutOfFiles\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf \"%.2f\" $value {{`}}`}}% available inodes left.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemalmostoutoffiles\n        summary: Filesystem has less than 5% inodes left.\n      expr: |-\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 5\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeFilesystemAlmostOutOfFiles | default false) }}\n    - alert: NodeFilesystemAlmostOutOfFiles\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf \"%.2f\" $value {{`}}`}}% available inodes left.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemalmostoutoffiles\n        summary: Filesystem has less than 3% inodes left.\n      expr: |-\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 3\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeNetworkReceiveErrs | default false) }}\n    - alert: NodeNetworkReceiveErrs\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} $labels.instance {{`}}`}} interface {{`{{`}} $labels.device {{`}}`}} has encountered {{`{{`}} printf \"%.0f\" $value {{`}}`}} receive errors in the last two minutes.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodenetworkreceiveerrs\n        summary: Network interface is reporting many receive errors.\n      expr: rate(node_network_receive_errs_total[2m]) / rate(node_network_receive_packets_total[2m]) > 0.01\n      for: 1h\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeNetworkTransmitErrs | default false) }}\n    - alert: NodeNetworkTransmitErrs\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} $labels.instance {{`}}`}} interface {{`{{`}} $labels.device {{`}}`}} has encountered {{`{{`}} printf \"%.0f\" $value {{`}}`}} transmit errors in the last two minutes.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodenetworktransmiterrs\n        summary: Network interface is reporting many transmit errors.\n      expr: rate(node_network_transmit_errs_total[2m]) / rate(node_network_transmit_packets_total[2m]) > 0.01\n      for: 1h\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeHighNumberConntrackEntriesUsed | default false) }}\n    - alert: NodeHighNumberConntrackEntriesUsed\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of conntrack entries are used.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodehighnumberconntrackentriesused\n        summary: Number of conntrack are getting close to the limit.\n      expr: (node_nf_conntrack_entries / node_nf_conntrack_entries_limit) > 0.75\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeTextFileCollectorScrapeError | default false) }}\n    - alert: NodeTextFileCollectorScrapeError\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: Node Exporter text file collector failed to scrape.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodetextfilecollectorscrapeerror\n        summary: Node Exporter text file collector failed to scrape.\n      expr: node_textfile_scrape_error{job=\"node-exporter\"} == 1\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeClockSkewDetected | default false) }}\n    - alert: NodeClockSkewDetected\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: Clock on {{`{{`}} $labels.instance {{`}}`}} is out of sync by more than 0.05s. Ensure NTP is configured correctly on this host.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodeclockskewdetected\n        summary: Clock skew detected.\n      expr: |-\n        (\n          node_timex_offset_seconds{job=\"node-exporter\"} > 0.05\n        and\n          deriv(node_timex_offset_seconds{job=\"node-exporter\"}[5m]) >= 0\n        )\n        or\n        (\n          node_timex_offset_seconds{job=\"node-exporter\"} < -0.05\n        and\n          deriv(node_timex_offset_seconds{job=\"node-exporter\"}[5m]) <= 0\n        )\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeClockNotSynchronising | default false) }}\n    - alert: NodeClockNotSynchronising\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: Clock on {{`{{`}} $labels.instance {{`}}`}} is not synchronising. Ensure NTP is configured on this host.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodeclocknotsynchronising\n        summary: Clock not synchronising.\n      expr: |-\n        min_over_time(node_timex_sync_status{job=\"node-exporter\"}[5m]) == 0\n        and\n        node_timex_maxerror_seconds{job=\"node-exporter\"} >= 16\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeRAIDDegraded | default false) }}\n    - alert: NodeRAIDDegraded\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: RAID array '{{`{{`}} $labels.device {{`}}`}}' on {{`{{`}} $labels.instance {{`}}`}} is in degraded state due to one or more disks failures. Number of spare drives is insufficient to fix issue automatically.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/noderaiddegraded\n        summary: RAID Array is degraded\n      expr: node_md_disks_required{job=\"node-exporter\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"} - ignoring (state) (node_md_disks{state=\"active\",job=\"node-exporter\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}) > 0\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeRAIDDiskFailure | default false) }}\n    - alert: NodeRAIDDiskFailure\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: At least one device in RAID array on {{`{{`}} $labels.instance {{`}}`}} failed. Array '{{`{{`}} $labels.device {{`}}`}}' needs attention and possibly a disk swap.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/noderaiddiskfailure\n        summary: Failed device in RAID array\n      expr: node_md_disks{state=\"failed\",job=\"node-exporter\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"} > 0\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeFileDescriptorLimit | default false) }}\n    - alert: NodeFileDescriptorLimit\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: File descriptors limit at {{`{{`}} $labels.instance {{`}}`}} is currently at {{`{{`}} printf \"%.2f\" $value {{`}}`}}%.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefiledescriptorlimit\n        summary: Kernel is predicted to exhaust file descriptors limit soon.\n      expr: |-\n        (\n          node_filefd_allocated{job=\"node-exporter\"} * 100 / node_filefd_maximum{job=\"node-exporter\"} > 70\n        )\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.NodeFileDescriptorLimit | default false) }}\n    - alert: NodeFileDescriptorLimit\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }}\n{{- end }}\n        description: File descriptors limit at {{`{{`}} $labels.instance {{`}}`}} is currently at {{`{{`}} printf \"%.2f\" $value {{`}}`}}%.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefiledescriptorlimit\n        summary: Kernel is predicted to exhaust file descriptors limit soon.\n      expr: |-\n        (\n          node_filefd_allocated{job=\"node-exporter\"} * 100 / node_filefd_maximum{job=\"node-exporter\"} > 90\n        )\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-network.yaml",
    "content": "{{- /*\nGenerated from 'node-network' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubePrometheus-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.network }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"node-network\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: node-network\n    rules:\n{{- if not (.Values.defaultRules.disabled.NodeNetworkInterfaceFlapping | default false) }}\n    - alert: NodeNetworkInterfaceFlapping\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.network }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.network | indent 8 }}\n{{- end }}\n        description: Network interface \"{{`{{`}} $labels.device {{`}}`}}\" changing its up status often on node-exporter {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}}\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/general/nodenetworkinterfaceflapping\n        summary: Network interface is often changing its status\n      expr: changes(node_network_up{job=\"node-exporter\",device!~\"veth.+\"}[2m]) > 2\n      for: 2m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.network }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.network }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node.rules.yaml",
    "content": "{{- /*\nGenerated from 'node.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.node }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"node.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: node.rules\n    rules:\n    - expr: |-\n        topk by(cluster, namespace, pod) (1,\n          max by (cluster, node, namespace, pod) (\n            label_replace(kube_pod_info{job=\"kube-state-metrics\",node!=\"\"}, \"pod\", \"$1\", \"pod\", \"(.*)\")\n        ))\n      record: 'node_namespace_pod:kube_pod_info:'\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.node }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.node }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        count by (cluster, node) (\n          node_cpu_seconds_total{mode=\"idle\",job=\"node-exporter\"}\n          * on (namespace, pod) group_left(node)\n          topk by(namespace, pod) (1, node_namespace_pod:kube_pod_info:)\n        )\n      record: node:node_num_cpu:sum\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.node }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.node }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        sum(\n          node_memory_MemAvailable_bytes{job=\"node-exporter\"} or\n          (\n            node_memory_Buffers_bytes{job=\"node-exporter\"} +\n            node_memory_Cached_bytes{job=\"node-exporter\"} +\n            node_memory_MemFree_bytes{job=\"node-exporter\"} +\n            node_memory_Slab_bytes{job=\"node-exporter\"}\n          )\n        ) by (cluster)\n      record: :node_memory_MemAvailable_bytes:sum\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.node }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.node }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        avg by (cluster, node) (\n          sum without (mode) (\n            rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\",job=\"node-exporter\"}[5m])\n          )\n        )\n      record: node:node_cpu_utilization:ratio_rate5m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.node }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.node }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n    - expr: |-\n        avg by (cluster) (\n          node:node_cpu_utilization:ratio_rate5m\n        )\n      record: cluster:node_cpu:ratio_rate5m\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.node }}\n      labels:\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.node }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/prometheus-operator.yaml",
    "content": "{{- /*\nGenerated from 'prometheus-operator' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/prometheusOperator-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.prometheusOperator }}\n{{- $operatorJob := printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"operator\" }}\n{{- $namespace := printf \"%s\" (include \"kube-prometheus-stack.namespace\" .) }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"prometheus-operator\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: prometheus-operator\n    rules:\n{{- if not (.Values.defaultRules.disabled.PrometheusOperatorListErrors | default false) }}\n    - alert: PrometheusOperatorListErrors\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }}\n{{- end }}\n        description: Errors while performing List operations in controller {{`{{`}}$labels.controller{{`}}`}} in {{`{{`}}$labels.namespace{{`}}`}} namespace.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatorlisterrors\n        summary: Errors while performing list operations in controller.\n      expr: (sum by (cluster,controller,namespace) (rate(prometheus_operator_list_operations_failed_total{job=\"{{ $operatorJob }}\",namespace=\"{{ $namespace }}\"}[10m])) / sum by (cluster,controller,namespace) (rate(prometheus_operator_list_operations_total{job=\"{{ $operatorJob }}\",namespace=\"{{ $namespace }}\"}[10m]))) > 0.4\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusOperatorWatchErrors | default false) }}\n    - alert: PrometheusOperatorWatchErrors\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }}\n{{- end }}\n        description: Errors while performing watch operations in controller {{`{{`}}$labels.controller{{`}}`}} in {{`{{`}}$labels.namespace{{`}}`}} namespace.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatorwatcherrors\n        summary: Errors while performing watch operations in controller.\n      expr: (sum by (cluster,controller,namespace) (rate(prometheus_operator_watch_operations_failed_total{job=\"{{ $operatorJob }}\",namespace=\"{{ $namespace }}\"}[5m])) / sum by (cluster,controller,namespace) (rate(prometheus_operator_watch_operations_total{job=\"{{ $operatorJob }}\",namespace=\"{{ $namespace }}\"}[5m]))) > 0.4\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusOperatorSyncFailed | default false) }}\n    - alert: PrometheusOperatorSyncFailed\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }}\n{{- end }}\n        description: Controller {{`{{`}} $labels.controller {{`}}`}} in {{`{{`}} $labels.namespace {{`}}`}} namespace fails to reconcile {{`{{`}} $value {{`}}`}} objects.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatorsyncfailed\n        summary: Last controller reconciliation failed\n      expr: min_over_time(prometheus_operator_syncs{status=\"failed\",job=\"{{ $operatorJob }}\",namespace=\"{{ $namespace }}\"}[5m]) > 0\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusOperatorReconcileErrors | default false) }}\n    - alert: PrometheusOperatorReconcileErrors\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of reconciling operations failed for {{`{{`}} $labels.controller {{`}}`}} controller in {{`{{`}} $labels.namespace {{`}}`}} namespace.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatorreconcileerrors\n        summary: Errors while reconciling controller.\n      expr: (sum by (cluster,controller,namespace) (rate(prometheus_operator_reconcile_errors_total{job=\"{{ $operatorJob }}\",namespace=\"{{ $namespace }}\"}[5m]))) / (sum by (cluster,controller,namespace) (rate(prometheus_operator_reconcile_operations_total{job=\"{{ $operatorJob }}\",namespace=\"{{ $namespace }}\"}[5m]))) > 0.1\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusOperatorNodeLookupErrors | default false) }}\n    - alert: PrometheusOperatorNodeLookupErrors\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }}\n{{- end }}\n        description: Errors while reconciling Prometheus in {{`{{`}} $labels.namespace {{`}}`}} Namespace.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatornodelookuperrors\n        summary: Errors while reconciling Prometheus.\n      expr: rate(prometheus_operator_node_address_lookup_errors_total{job=\"{{ $operatorJob }}\",namespace=\"{{ $namespace }}\"}[5m]) > 0.1\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusOperatorNotReady | default false) }}\n    - alert: PrometheusOperatorNotReady\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }}\n{{- end }}\n        description: Prometheus operator in {{`{{`}} $labels.namespace {{`}}`}} namespace isn't ready to reconcile {{`{{`}} $labels.controller {{`}}`}} resources.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatornotready\n        summary: Prometheus operator not ready\n      expr: min by (cluster,controller,namespace) (max_over_time(prometheus_operator_ready{job=\"{{ $operatorJob }}\",namespace=\"{{ $namespace }}\"}[5m]) == 0)\n      for: 5m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusOperatorRejectedResources | default false) }}\n    - alert: PrometheusOperatorRejectedResources\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }}\n{{- end }}\n        description: Prometheus operator in {{`{{`}} $labels.namespace {{`}}`}} namespace rejected {{`{{`}} printf \"%0.0f\" $value {{`}}`}} {{`{{`}} $labels.controller {{`}}`}}/{{`{{`}} $labels.resource {{`}}`}} resources.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatorrejectedresources\n        summary: Resources rejected by Prometheus operator\n      expr: min_over_time(prometheus_operator_managed_resources{state=\"rejected\",job=\"{{ $operatorJob }}\",namespace=\"{{ $namespace }}\"}[5m]) > 0\n      for: 5m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/prometheus.yaml",
    "content": "{{- /*\nGenerated from 'prometheus' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/prometheus-prometheusRule.yaml\nDo not change in-place! In order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.prometheus }}\n{{- $prometheusJob := printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"prometheus\" }}\n{{- $namespace := printf \"%s\" (include \"kube-prometheus-stack.namespace\" .) }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"prometheus\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: prometheus\n    rules:\n{{- if not (.Values.defaultRules.disabled.PrometheusBadConfig | default false) }}\n    - alert: PrometheusBadConfig\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed to reload its configuration.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusbadconfig\n        summary: Failed Prometheus configuration reload.\n      expr: |-\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        max_over_time(prometheus_config_last_reload_successful{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) == 0\n      for: 10m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusNotificationQueueRunningFull | default false) }}\n    - alert: PrometheusNotificationQueueRunningFull\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Alert notification queue of Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is running full.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusnotificationqueuerunningfull\n        summary: Prometheus alert notification queue predicted to run full in less than 30m.\n      expr: |-\n        # Without min_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        (\n          predict_linear(prometheus_notifications_queue_length{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m], 60 * 30)\n        >\n          min_over_time(prometheus_notifications_queue_capacity{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m])\n        )\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusErrorSendingAlertsToSomeAlertmanagers | default false) }}\n    - alert: PrometheusErrorSendingAlertsToSomeAlertmanagers\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} printf \"%.1f\" $value {{`}}`}}% errors while sending alerts from Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} to Alertmanager {{`{{`}}$labels.alertmanager{{`}}`}}.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheuserrorsendingalertstosomealertmanagers\n        summary: Prometheus has encountered more than 1% errors sending alerts to a specific Alertmanager.\n      expr: |-\n        (\n          rate(prometheus_notifications_errors_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m])\n        /\n          rate(prometheus_notifications_sent_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m])\n        )\n        * 100\n        > 1\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusNotConnectedToAlertmanagers | default false) }}\n    - alert: PrometheusNotConnectedToAlertmanagers\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is not connected to any Alertmanagers.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusnotconnectedtoalertmanagers\n        summary: Prometheus is not connected to any Alertmanagers.\n      expr: |-\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        max_over_time(prometheus_notifications_alertmanagers_discovered{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) < 1\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusTSDBReloadsFailing | default false) }}\n    - alert: PrometheusTSDBReloadsFailing\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has detected {{`{{`}}$value | humanize{{`}}`}} reload failures over the last 3h.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheustsdbreloadsfailing\n        summary: Prometheus has issues reloading blocks from disk.\n      expr: increase(prometheus_tsdb_reloads_failures_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[3h]) > 0\n      for: 4h\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusTSDBCompactionsFailing | default false) }}\n    - alert: PrometheusTSDBCompactionsFailing\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has detected {{`{{`}}$value | humanize{{`}}`}} compaction failures over the last 3h.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheustsdbcompactionsfailing\n        summary: Prometheus has issues compacting blocks.\n      expr: increase(prometheus_tsdb_compactions_failed_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[3h]) > 0\n      for: 4h\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusNotIngestingSamples | default false) }}\n    - alert: PrometheusNotIngestingSamples\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is not ingesting samples.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusnotingestingsamples\n        summary: Prometheus is not ingesting samples.\n      expr: |-\n        (\n          rate(prometheus_tsdb_head_samples_appended_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) <= 0\n        and\n          (\n            sum without(scrape_job) (prometheus_target_metadata_cache_entries{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}) > 0\n          or\n            sum without(rule_group) (prometheus_rule_group_rules{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}) > 0\n          )\n        )\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusDuplicateTimestamps | default false) }}\n    - alert: PrometheusDuplicateTimestamps\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is dropping {{`{{`}} printf \"%.4g\" $value  {{`}}`}} samples/s with different values but duplicated timestamp.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusduplicatetimestamps\n        summary: Prometheus is dropping samples with duplicate timestamps.\n      expr: rate(prometheus_target_scrapes_sample_duplicate_timestamp_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) > 0\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusOutOfOrderTimestamps | default false) }}\n    - alert: PrometheusOutOfOrderTimestamps\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is dropping {{`{{`}} printf \"%.4g\" $value  {{`}}`}} samples/s with timestamps arriving out of order.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusoutofordertimestamps\n        summary: Prometheus drops samples with out-of-order timestamps.\n      expr: rate(prometheus_target_scrapes_sample_out_of_order_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) > 0\n      for: 10m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusRemoteStorageFailures | default false) }}\n    - alert: PrometheusRemoteStorageFailures\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} failed to send {{`{{`}} printf \"%.1f\" $value {{`}}`}}% of the samples to {{`{{`}} $labels.remote_name{{`}}`}}:{{`{{`}} $labels.url {{`}}`}}\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusremotestoragefailures\n        summary: Prometheus fails to send samples to remote storage.\n      expr: |-\n        (\n          (rate(prometheus_remote_storage_failed_samples_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]))\n        /\n          (\n            (rate(prometheus_remote_storage_failed_samples_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]))\n          +\n            (rate(prometheus_remote_storage_succeeded_samples_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) or rate(prometheus_remote_storage_samples_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]))\n          )\n        )\n        * 100\n        > 1\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusRemoteWriteBehind | default false) }}\n    - alert: PrometheusRemoteWriteBehind\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} remote write is {{`{{`}} printf \"%.1f\" $value {{`}}`}}s behind for {{`{{`}} $labels.remote_name{{`}}`}}:{{`{{`}} $labels.url {{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusremotewritebehind\n        summary: Prometheus remote write is behind.\n      expr: |-\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        (\n          max_over_time(prometheus_remote_storage_highest_timestamp_in_seconds{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m])\n        - ignoring(remote_name, url) group_right\n          max_over_time(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m])\n        )\n        > 120\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusRemoteWriteDesiredShards | default false) }}\n    - alert: PrometheusRemoteWriteDesiredShards\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} remote write desired shards calculation wants to run {{`{{`}} $value {{`}}`}} shards for queue {{`{{`}} $labels.remote_name{{`}}`}}:{{`{{`}} $labels.url {{`}}`}}, which is more than the max of {{`{{`}} printf `prometheus_remote_storage_shards_max{instance=\"%s\",job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}` $labels.instance | query | first | value {{`}}`}}.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusremotewritedesiredshards\n        summary: Prometheus remote write desired shards calculation wants to run more than configured max shards.\n      expr: |-\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        (\n          max_over_time(prometheus_remote_storage_shards_desired{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m])\n        >\n          max_over_time(prometheus_remote_storage_shards_max{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m])\n        )\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusRuleFailures | default false) }}\n    - alert: PrometheusRuleFailures\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed to evaluate {{`{{`}} printf \"%.0f\" $value {{`}}`}} rules in the last 5m.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusrulefailures\n        summary: Prometheus is failing rule evaluations.\n      expr: increase(prometheus_rule_evaluation_failures_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusMissingRuleEvaluations | default false) }}\n    - alert: PrometheusMissingRuleEvaluations\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has missed {{`{{`}} printf \"%.0f\" $value {{`}}`}} rule group evaluations in the last 5m.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusmissingruleevaluations\n        summary: Prometheus is missing rule evaluations due to slow rule group evaluation.\n      expr: increase(prometheus_rule_group_iterations_missed_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusTargetLimitHit | default false) }}\n    - alert: PrometheusTargetLimitHit\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has dropped {{`{{`}} printf \"%.0f\" $value {{`}}`}} targets because the number of targets exceeded the configured target_limit.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheustargetlimithit\n        summary: Prometheus has dropped targets because some scrape configs have exceeded the targets limit.\n      expr: increase(prometheus_target_scrape_pool_exceeded_target_limit_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusLabelLimitHit | default false) }}\n    - alert: PrometheusLabelLimitHit\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has dropped {{`{{`}} printf \"%.0f\" $value {{`}}`}} targets because some samples exceeded the configured label_limit, label_name_length_limit or label_value_length_limit.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheuslabellimithit\n        summary: Prometheus has dropped targets because some scrape configs have exceeded the labels limit.\n      expr: increase(prometheus_target_scrape_pool_exceeded_label_limits_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusScrapeBodySizeLimitHit | default false) }}\n    - alert: PrometheusScrapeBodySizeLimitHit\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed {{`{{`}} printf \"%.0f\" $value {{`}}`}} scrapes in the last 5m because some targets exceeded the configured body_size_limit.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusscrapebodysizelimithit\n        summary: Prometheus has dropped some targets that exceeded body size limit.\n      expr: increase(prometheus_target_scrapes_exceeded_body_size_limit_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusScrapeSampleLimitHit | default false) }}\n    - alert: PrometheusScrapeSampleLimitHit\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed {{`{{`}} printf \"%.0f\" $value {{`}}`}} scrapes in the last 5m because some targets exceeded the configured sample_limit.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusscrapesamplelimithit\n        summary: Prometheus has failed scrapes that have exceeded the configured sample limit.\n      expr: increase(prometheus_target_scrapes_exceeded_sample_limit_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusTargetSyncFailure | default false) }}\n    - alert: PrometheusTargetSyncFailure\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} printf \"%.0f\" $value {{`}}`}} targets in Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} have failed to sync because invalid configuration was supplied.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheustargetsyncfailure\n        summary: Prometheus has failed to sync targets.\n      expr: increase(prometheus_target_sync_failed_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[30m]) > 0\n      for: 5m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusHighQueryLoad | default false) }}\n    - alert: PrometheusHighQueryLoad\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} query API has less than 20% available capacity in its query engine for the last 15 minutes.\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheushighqueryload\n        summary: Prometheus is reaching its maximum capacity serving concurrent requests.\n      expr: avg_over_time(prometheus_engine_queries{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) / max_over_time(prometheus_engine_queries_concurrent_max{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\"}[5m]) > 0.8\n      for: 15m\n      labels:\n        severity: warning\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- if not (.Values.defaultRules.disabled.PrometheusErrorSendingAlertsToAnyAlertmanager | default false) }}\n    - alert: PrometheusErrorSendingAlertsToAnyAlertmanager\n      annotations:\n{{- if .Values.defaultRules.additionalRuleAnnotations }}\n{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }}\n{{- end }}\n{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }}\n{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }}\n{{- end }}\n        description: '{{`{{`}} printf \"%.1f\" $value {{`}}`}}% minimum errors while sending alerts from Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} to any Alertmanager.'\n        runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheuserrorsendingalertstoanyalertmanager\n        summary: Prometheus encounters more than 3% errors sending alerts to any Alertmanager.\n      expr: |-\n        min without (alertmanager) (\n          rate(prometheus_notifications_errors_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\",alertmanager!~``}[5m])\n        /\n          rate(prometheus_notifications_sent_total{job=\"{{ $prometheusJob }}\",namespace=\"{{ $namespace }}\",alertmanager!~``}[5m])\n        )\n        * 100\n        > 3\n      for: 15m\n      labels:\n        severity: critical\n      {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n        {{- with .Values.defaultRules.additionalRuleLabels }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n        {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }}\n          {{- toYaml . | nindent 8 }}\n        {{- end }}\n      {{- end }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/windows.node.rules.yaml",
    "content": "{{- /*\nGenerated from 'windows.node.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/examples/windows.jsonnet\nIn order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/pull/3083\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.windowsMonitoring.enabled .Values.defaultRules.rules.windows }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"windows.node.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: windows.node.rules\n    rules:\n    - expr: |-\n        count (\n          windows_system_system_up_time{job=\"{{ .Values.windowsMonitoring.job }}\"}\n        )\n      record: node:windows_node:sum\n    - expr: |-\n        count by (instance) (sum by (instance, core) (\n          windows_cpu_time_total{job=\"{{ .Values.windowsMonitoring.job }}\"}\n        ))\n      record: node:windows_node_num_cpu:sum\n    - expr: 1 - avg(rate(windows_cpu_time_total{job=\"{{ .Values.windowsMonitoring.job }}\",mode=\"idle\"}[1m]))\n      record: :windows_node_cpu_utilisation:avg1m\n    - expr: |-\n        1 - avg by (instance) (\n          rate(windows_cpu_time_total{job=\"{{ .Values.windowsMonitoring.job }}\",mode=\"idle\"}[1m])\n        )\n      record: node:windows_node_cpu_utilisation:avg1m\n    - expr: |-\n        1 -\n        sum(windows_memory_available_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"})\n        /\n        sum(windows_os_visible_memory_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"})\n      record: ':windows_node_memory_utilisation:'\n    - expr: sum(windows_memory_available_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"} + windows_memory_cache_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"})\n      record: :windows_node_memory_MemFreeCached_bytes:sum\n    - expr: (windows_memory_cache_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"} + windows_memory_modified_page_list_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"} + windows_memory_standby_cache_core_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"} + windows_memory_standby_cache_normal_priority_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"} + windows_memory_standby_cache_reserve_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"})\n      record: node:windows_node_memory_totalCached_bytes:sum\n    - expr: sum(windows_os_visible_memory_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"})\n      record: :windows_node_memory_MemTotal_bytes:sum\n    - expr: |-\n        sum by (instance) (\n          (windows_memory_available_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"})\n        )\n      record: node:windows_node_memory_bytes_available:sum\n    - expr: |-\n        sum by (instance) (\n          windows_os_visible_memory_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"}\n        )\n      record: node:windows_node_memory_bytes_total:sum\n    - expr: |-\n        (node:windows_node_memory_bytes_total:sum - node:windows_node_memory_bytes_available:sum)\n        /\n        scalar(sum(node:windows_node_memory_bytes_total:sum))\n      record: node:windows_node_memory_utilisation:ratio\n    - expr: 1 - (node:windows_node_memory_bytes_available:sum / node:windows_node_memory_bytes_total:sum)\n      record: 'node:windows_node_memory_utilisation:'\n    - expr: irate(windows_memory_swap_page_operations_total{job=\"{{ .Values.windowsMonitoring.job }}\"}[5m])\n      record: node:windows_node_memory_swap_io_pages:irate\n    - expr: |-\n        avg(irate(windows_logical_disk_read_seconds_total{job=\"{{ .Values.windowsMonitoring.job }}\"}[1m]) +\n            irate(windows_logical_disk_write_seconds_total{job=\"{{ .Values.windowsMonitoring.job }}\"}[1m])\n          )\n      record: :windows_node_disk_utilisation:avg_irate\n    - expr: |-\n        avg by (instance) (\n          (irate(windows_logical_disk_read_seconds_total{job=\"{{ .Values.windowsMonitoring.job }}\"}[1m]) +\n           irate(windows_logical_disk_write_seconds_total{job=\"{{ .Values.windowsMonitoring.job }}\"}[1m]))\n        )\n      record: node:windows_node_disk_utilisation:avg_irate\n    - expr: |-\n        max by (instance,volume)(\n          (windows_logical_disk_size_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"}\n        - windows_logical_disk_free_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"})\n        / windows_logical_disk_size_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"}\n        )\n      record: 'node:windows_node_filesystem_usage:'\n    - expr: max by (instance, volume) (windows_logical_disk_free_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"} / windows_logical_disk_size_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"})\n      record: 'node:windows_node_filesystem_avail:'\n    - expr: sum(irate(windows_net_bytes_total{job=\"{{ .Values.windowsMonitoring.job }}\"}[1m]))\n      record: :windows_node_net_utilisation:sum_irate\n    - expr: |-\n        sum by (instance) (\n          (irate(windows_net_bytes_total{job=\"{{ .Values.windowsMonitoring.job }}\"}[1m]))\n        )\n      record: node:windows_node_net_utilisation:sum_irate\n    - expr: |-\n        sum(irate(windows_net_packets_received_discarded_total{job=\"{{ .Values.windowsMonitoring.job }}\"}[1m])) +\n        sum(irate(windows_net_packets_outbound_discarded_total{job=\"{{ .Values.windowsMonitoring.job }}\"}[1m]))\n      record: :windows_node_net_saturation:sum_irate\n    - expr: |-\n        sum by (instance) (\n          (irate(windows_net_packets_received_discarded_total{job=\"{{ .Values.windowsMonitoring.job }}\"}[1m]) +\n          irate(windows_net_packets_outbound_discarded_total{job=\"{{ .Values.windowsMonitoring.job }}\"}[1m]))\n        )\n      record: node:windows_node_net_saturation:sum_irate\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/windows.pod.rules.yaml",
    "content": "{{- /*\nGenerated from 'windows.pod.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/examples/windows.jsonnet\nIn order to change this file first read following link:\nhttps://github.com/prometheus-community/helm-charts/pull/3083\n*/ -}}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if and (semverCompare \">=1.14.0-0\" $kubeTargetVersion) (semverCompare \"<9.9.9-9\" $kubeTargetVersion) .Values.defaultRules.create .Values.windowsMonitoring.enabled .Values.defaultRules.rules.windows }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ printf \"%s-%s\" (include \"kube-prometheus-stack.fullname\" .) \"windows.pod.rules\" | trunc 63 | trimSuffix \"-\" }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.defaultRules.labels }}\n{{ toYaml .Values.defaultRules.labels | indent 4 }}\n{{- end }}\n{{- if .Values.defaultRules.annotations }}\n  annotations:\n{{ toYaml .Values.defaultRules.annotations | indent 4 }}\n{{- end }}\nspec:\n  groups:\n  - name: windows.pod.rules\n    rules:\n    - expr: windows_container_available{job=\"{{ .Values.windowsMonitoring.job }}\"} * on(container_id) group_left(container, pod, namespace) max(kube_pod_container_info{job=\"kube-state-metrics\"}) by(container, container_id, pod, namespace)\n      record: windows_pod_container_available\n    - expr: windows_container_cpu_usage_seconds_total{job=\"{{ .Values.windowsMonitoring.job }}\"} * on(container_id) group_left(container, pod, namespace) max(kube_pod_container_info{job=\"kube-state-metrics\"}) by(container, container_id, pod, namespace)\n      record: windows_container_total_runtime\n    - expr: windows_container_memory_usage_commit_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"} * on(container_id) group_left(container, pod, namespace) max(kube_pod_container_info{job=\"kube-state-metrics\"}) by(container, container_id, pod, namespace)\n      record: windows_container_memory_usage\n    - expr: windows_container_memory_usage_private_working_set_bytes{job=\"{{ .Values.windowsMonitoring.job }}\"} * on(container_id) group_left(container, pod, namespace) max(kube_pod_container_info{job=\"kube-state-metrics\"}) by(container, container_id, pod, namespace)\n      record: windows_container_private_working_set_usage\n    - expr: windows_container_network_receive_bytes_total{job=\"{{ .Values.windowsMonitoring.job }}\"} * on(container_id) group_left(container, pod, namespace) max(kube_pod_container_info{job=\"kube-state-metrics\"}) by(container, container_id, pod, namespace)\n      record: windows_container_network_received_bytes_total\n    - expr: windows_container_network_transmit_bytes_total{job=\"{{ .Values.windowsMonitoring.job }}\"} * on(container_id) group_left(container, pod, namespace) max(kube_pod_container_info{job=\"kube-state-metrics\"}) by(container, container_id, pod, namespace)\n      record: windows_container_network_transmitted_bytes_total\n    - expr: |-\n        max by (namespace, pod, container) (\n          kube_pod_container_resource_requests{resource=\"memory\",job=\"kube-state-metrics\"}\n        ) * on(container,pod,namespace) (windows_pod_container_available)\n      record: kube_pod_windows_container_resource_memory_request\n    - expr: kube_pod_container_resource_limits{resource=\"memory\",job=\"kube-state-metrics\"} * on(container,pod,namespace) (windows_pod_container_available)\n      record: kube_pod_windows_container_resource_memory_limit\n    - expr: |-\n        max by (namespace, pod, container) (\n          kube_pod_container_resource_requests{resource=\"cpu\",job=\"kube-state-metrics\"}\n        ) * on(container,pod,namespace) (windows_pod_container_available)\n      record: kube_pod_windows_container_resource_cpu_cores_request\n    - expr: kube_pod_container_resource_limits{resource=\"cpu\",job=\"kube-state-metrics\"} * on(container,pod,namespace) (windows_pod_container_available)\n      record: kube_pod_windows_container_resource_cpu_cores_limit\n    - expr: |-\n        sum by (namespace, pod, container) (\n          rate(windows_container_total_runtime{}[5m])\n        )\n      record: namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/service.yaml",
    "content": "{{- if .Values.prometheus.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n    self-monitor: {{ .Values.prometheus.serviceMonitor.selfMonitor | quote }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.prometheus.service.labels }}\n{{ toYaml .Values.prometheus.service.labels | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.service.annotations }}\n  annotations:\n{{ toYaml .Values.prometheus.service.annotations | indent 4 }}\n{{- end }}\nspec:\n{{- if .Values.prometheus.service.clusterIP }}\n  clusterIP: {{ .Values.prometheus.service.clusterIP }}\n{{- end }}\n{{- if .Values.prometheus.service.externalIPs }}\n  externalIPs:\n{{ toYaml .Values.prometheus.service.externalIPs | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.service.loadBalancerIP }}\n  loadBalancerIP: {{ .Values.prometheus.service.loadBalancerIP }}\n{{- end }}\n{{- if .Values.prometheus.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges:\n  {{- range $cidr := .Values.prometheus.service.loadBalancerSourceRanges }}\n    - {{ $cidr }}\n  {{- end }}\n{{- end }}\n{{- if ne .Values.prometheus.service.type \"ClusterIP\" }}\n  externalTrafficPolicy: {{ .Values.prometheus.service.externalTrafficPolicy }}\n{{- end }}\n  ports:\n  - name: {{ .Values.prometheus.prometheusSpec.portName }}\n    {{- if eq .Values.prometheus.service.type \"NodePort\" }}\n    nodePort: {{ .Values.prometheus.service.nodePort }}\n    {{- end }}\n    port: {{ .Values.prometheus.service.port }}\n    targetPort: {{ .Values.prometheus.service.targetPort }}\n  - name: reloader-web\n    port: 8080\n    targetPort: reloader-web\n  {{- if .Values.prometheus.thanosIngress.enabled }}\n  - name: grpc\n    {{- if eq .Values.prometheus.service.type \"NodePort\" }}\n    nodePort: {{ .Values.prometheus.thanosIngress.nodePort }}\n    {{- end }}\n    port: {{ .Values.prometheus.thanosIngress.servicePort }}\n    targetPort: {{ .Values.prometheus.thanosIngress.servicePort }}\n  {{- end }}\n{{- if .Values.prometheus.service.additionalPorts }}\n{{ toYaml .Values.prometheus.service.additionalPorts | indent 2 }}\n{{- end }}\n  publishNotReadyAddresses: {{ .Values.prometheus.service.publishNotReadyAddresses }}\n  selector:\n    {{- if .Values.prometheus.agentMode }}\n    app.kubernetes.io/name: prometheus-agent\n    {{- else }}\n    app.kubernetes.io/name: prometheus\n    {{- end }}\n    operator.prometheus.io/name: {{ template \"kube-prometheus-stack.prometheus.crname\" . }}\n{{- if .Values.prometheus.service.sessionAffinity }}\n  sessionAffinity: {{ .Values.prometheus.service.sessionAffinity }}\n{{- end }}\n  type: \"{{ .Values.prometheus.service.type }}\"\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/serviceThanosSidecar.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.thanosService.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-thanos-discovery\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-thanos-discovery\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.prometheus.thanosService.labels }}\n{{ toYaml .Values.prometheus.thanosService.labels | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.thanosService.annotations }}\n  annotations:\n{{ toYaml .Values.prometheus.thanosService.annotations | indent 4 }}\n{{- end }}\nspec:\n  type: {{ .Values.prometheus.thanosService.type }}\n  clusterIP: {{ .Values.prometheus.thanosService.clusterIP }}\n{{- if ne .Values.prometheus.thanosService.type \"ClusterIP\" }}\n  externalTrafficPolicy: {{ .Values.prometheus.thanosService.externalTrafficPolicy }}\n{{- end }}\n  ports:\n  - name: {{ .Values.prometheus.thanosService.portName }}\n    port: {{ .Values.prometheus.thanosService.port }}\n    targetPort: {{ .Values.prometheus.thanosService.targetPort }}\n    {{- if eq .Values.prometheus.thanosService.type \"NodePort\" }}\n    nodePort: {{ .Values.prometheus.thanosService.nodePort }}\n    {{- end }}\n  - name: {{ .Values.prometheus.thanosService.httpPortName }}\n    port: {{ .Values.prometheus.thanosService.httpPort }}\n    targetPort: {{ .Values.prometheus.thanosService.targetHttpPort }}\n    {{- if eq .Values.prometheus.thanosService.type \"NodePort\" }}\n    nodePort: {{ .Values.prometheus.thanosService.httpNodePort }}\n    {{- end }}\n  selector:\n    app.kubernetes.io/name: prometheus\n    operator.prometheus.io/name: {{ template \"kube-prometheus-stack.prometheus.crname\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/serviceThanosSidecarExternal.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.thanosServiceExternal.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-thanos-external\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.prometheus.thanosServiceExternal.labels }}\n{{ toYaml .Values.prometheus.thanosServiceExternal.labels | indent 4 }}\n{{- end }}\n{{- if .Values.prometheus.thanosServiceExternal.annotations }}\n  annotations:\n{{ toYaml .Values.prometheus.thanosServiceExternal.annotations | indent 4 }}\n{{- end }}\nspec:\n  type: {{ .Values.prometheus.thanosServiceExternal.type }}\n{{- if .Values.prometheus.thanosServiceExternal.loadBalancerIP }}\n  loadBalancerIP: {{ .Values.prometheus.thanosServiceExternal.loadBalancerIP }}\n{{- end }}\n{{- if .Values.prometheus.thanosServiceExternal.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges:\n  {{- range $cidr := .Values.prometheus.thanosServiceExternal.loadBalancerSourceRanges }}\n    - {{ $cidr }}\n  {{- end }}\n{{- end }}\n{{- if ne .Values.prometheus.thanosServiceExternal.type \"ClusterIP\" }}\n  externalTrafficPolicy: {{ .Values.prometheus.thanosServiceExternal.externalTrafficPolicy }}\n{{- end }}\n  ports:\n  - name: {{ .Values.prometheus.thanosServiceExternal.portName }}\n    port: {{ .Values.prometheus.thanosServiceExternal.port }}\n    targetPort: {{ .Values.prometheus.thanosServiceExternal.targetPort }}\n    {{- if eq .Values.prometheus.thanosServiceExternal.type \"NodePort\" }}\n    nodePort: {{ .Values.prometheus.thanosServiceExternal.nodePort }}\n    {{- end }}\n  - name: {{ .Values.prometheus.thanosServiceExternal.httpPortName }}\n    port: {{ .Values.prometheus.thanosServiceExternal.httpPort }}\n    targetPort: {{ .Values.prometheus.thanosServiceExternal.targetHttpPort }}\n    {{- if eq .Values.prometheus.thanosServiceExternal.type \"NodePort\" }}\n    nodePort: {{ .Values.prometheus.thanosServiceExternal.httpNodePort }}\n    {{- end }}\n  selector:\n    app.kubernetes.io/name: prometheus\n    operator.prometheus.io/name: {{ template \"kube-prometheus-stack.prometheus.crname\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/serviceaccount.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ template \"kube-prometheus-stack.prometheus.serviceAccountName\" . }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n    app.kubernetes.io/name: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n    app.kubernetes.io/component: prometheus\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.prometheus.serviceAccount.annotations }}\n  annotations:\n{{ toYaml .Values.prometheus.serviceAccount.annotations | indent 4 }}\n{{- end }}\n{{- if .Values.global.imagePullSecrets }}\nimagePullSecrets:\n{{ include \"kube-prometheus-stack.imagePullSecrets\" . | trim | indent 2 }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/servicemonitor.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.serviceMonitor.selfMonitor }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- with .Values.prometheus.serviceMonitor.additionalLabels }}\n{{- toYaml . | nindent 4 }}\n{{- end }}\nspec:\n  {{- include \"servicemonitor.scrapeLimits\" .Values.prometheus.serviceMonitor | nindent 2 }}\n  selector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-prometheus\n      release: {{ $.Release.Name | quote }}\n      self-monitor: \"true\"\n  namespaceSelector:\n    matchNames:\n      - {{ printf \"%s\" (include \"kube-prometheus-stack.namespace\" .) | quote }}\n  endpoints:\n  - port: {{ .Values.prometheus.prometheusSpec.portName }}\n    {{- if .Values.prometheus.serviceMonitor.interval }}\n    interval: {{ .Values.prometheus.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.prometheus.serviceMonitor.scheme }}\n    scheme: {{ .Values.prometheus.serviceMonitor.scheme }}\n    {{- end }}\n    {{- if .Values.prometheus.serviceMonitor.tlsConfig }}\n    tlsConfig: {{ toYaml .Values.prometheus.serviceMonitor.tlsConfig | nindent 6 }}\n    {{- end }}\n    {{- if .Values.prometheus.serviceMonitor.bearerTokenFile }}\n    bearerTokenFile: {{ .Values.prometheus.serviceMonitor.bearerTokenFile }}\n    {{- end }}\n    path: \"{{ trimSuffix \"/\" .Values.prometheus.prometheusSpec.routePrefix }}/metrics\"\n{{- if .Values.prometheus.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.prometheus.serviceMonitor.metricRelabelings | indent 6) . }}\n{{- end }}\n{{- if .Values.prometheus.serviceMonitor.relabelings }}\n    relabelings:\n{{ toYaml .Values.prometheus.serviceMonitor.relabelings | indent 6 }}\n{{- end }}\n  - port: reloader-web\n    {{- if .Values.prometheus.serviceMonitor.interval }}\n    interval: {{ .Values.prometheus.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.prometheus.serviceMonitor.scheme }}\n    scheme: {{ .Values.prometheus.serviceMonitor.scheme }}\n    {{- end }}\n    {{- if .Values.prometheus.serviceMonitor.tlsConfig }}\n    tlsConfig: {{ toYaml .Values.prometheus.serviceMonitor.tlsConfig | nindent 6 }}\n    {{- end }}\n    {{- if .Values.prometheus.serviceMonitor.bearerTokenFile }}\n    bearerTokenFile: {{ .Values.prometheus.serviceMonitor.bearerTokenFile }}\n    {{- end }}\n    path: \"/metrics\"\n{{- if .Values.prometheus.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.prometheus.serviceMonitor.metricRelabelings | indent 6) . }}\n{{- end }}\n{{- if .Values.prometheus.serviceMonitor.relabelings }}\n    relabelings:\n{{ toYaml .Values.prometheus.serviceMonitor.relabelings | indent 6 }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/servicemonitorThanosSidecar.yaml",
    "content": "{{- if and .Values.prometheus.thanosService.enabled .Values.prometheus.thanosServiceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-thanos-sidecar\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-thanos-sidecar\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- with .Values.prometheus.thanosServiceMonitor.additionalLabels }}\n{{- toYaml . | nindent 4 }}\n{{- end }}\nspec:\n  {{- include \"servicemonitor.scrapeLimits\" .Values.prometheus.thanosServiceMonitor | nindent 2 }}\n  selector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-thanos-discovery\n      release: {{ $.Release.Name | quote }}\n  namespaceSelector:\n    matchNames:\n      - {{ printf \"%s\" (include \"kube-prometheus-stack.namespace\" .) | quote }}\n  endpoints:\n  - port: {{ .Values.prometheus.thanosService.httpPortName }}\n    {{- if .Values.prometheus.thanosServiceMonitor.interval }}\n    interval: {{ .Values.prometheus.thanosServiceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.prometheus.thanosServiceMonitor.scheme }}\n    scheme: {{ .Values.prometheus.thanosServiceMonitor.scheme }}\n    {{- end }}\n    {{- if .Values.prometheus.thanosServiceMonitor.tlsConfig }}\n    tlsConfig: {{ toYaml .Values.prometheus.thanosServiceMonitor.tlsConfig | nindent 6 }}\n    {{- end }}\n    {{- if .Values.prometheus.thanosServiceMonitor.bearerTokenFile }}\n    bearerTokenFile: {{ .Values.prometheus.thanosServiceMonitor.bearerTokenFile }}\n    {{- end }}\n    path: \"/metrics\"\n{{- if .Values.prometheus.thanosServiceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.prometheus.thanosServiceMonitor.metricRelabelings | indent 6) . }}\n{{- end }}\n{{- if .Values.prometheus.thanosServiceMonitor.relabelings }}\n    relabelings:\n{{ toYaml .Values.prometheus.thanosServiceMonitor.relabelings | indent 6 }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/servicemonitors.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.additionalServiceMonitors }}\napiVersion: v1\nkind: List\nitems:\n{{- range .Values.prometheus.additionalServiceMonitors }}\n  - apiVersion: monitoring.coreos.com/v1\n    kind: ServiceMonitor\n    metadata:\n      name: {{ .name }}\n      namespace: {{ template \"kube-prometheus-stack.namespace\" $ }}\n      labels:\n        app: {{ template \"kube-prometheus-stack.name\" $ }}-prometheus\n{{ include \"kube-prometheus-stack.labels\" $ | indent 8 }}\n        {{- if .additionalLabels }}\n{{ toYaml .additionalLabels | indent 8 }}\n        {{- end }}\n    spec:\n      {{- include \"servicemonitor.scrapeLimits\" . | nindent 6 }}\n      endpoints:\n{{ toYaml .endpoints | indent 8 }}\n    {{- if .jobLabel }}\n      jobLabel: {{ .jobLabel }}\n    {{- end }}\n    {{- if .namespaceSelector }}\n      namespaceSelector:\n{{ toYaml .namespaceSelector | indent 8 }}\n    {{- end }}\n      selector:\n{{ toYaml .selector | indent 8 }}\n    {{- if .targetLabels }}\n      targetLabels:\n{{ toYaml .targetLabels | indent 8 }}\n    {{- end }}\n    {{- if .podTargetLabels }}\n      podTargetLabels:\n{{ toYaml .podTargetLabels | indent 8 }}\n    {{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus/serviceperreplica.yaml",
    "content": "{{- if and .Values.prometheus.enabled .Values.prometheus.servicePerReplica.enabled }}\n{{- $count := .Values.prometheus.prometheusSpec.replicas | int -}}\n{{- $serviceValues := .Values.prometheus.servicePerReplica -}}\napiVersion: v1\nkind: List\nmetadata:\n  name: {{ include \"kube-prometheus-stack.fullname\" $ }}-prometheus-serviceperreplica\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\nitems:\n{{- range $i, $e := until $count }}\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: {{ include \"kube-prometheus-stack.fullname\" $ }}-prometheus-{{ $i }}\n      namespace: {{ template \"kube-prometheus-stack.namespace\" $ }}\n      labels:\n        app: {{ include \"kube-prometheus-stack.name\" $ }}-prometheus\n{{ include \"kube-prometheus-stack.labels\" $ | indent 8 }}\n      {{- if $serviceValues.annotations }}\n      annotations:\n{{ toYaml $serviceValues.annotations | indent 8 }}\n      {{- end }}\n    spec:\n      {{- if $serviceValues.clusterIP }}\n      clusterIP: {{ $serviceValues.clusterIP }}\n      {{- end }}\n      {{- if $serviceValues.loadBalancerSourceRanges }}\n      loadBalancerSourceRanges:\n      {{- range $cidr := $serviceValues.loadBalancerSourceRanges }}\n        - {{ $cidr }}\n      {{- end }}\n      {{- end }}\n      {{- if ne $serviceValues.type \"ClusterIP\" }}\n      externalTrafficPolicy: {{ $serviceValues.externalTrafficPolicy }}\n      {{- end }}\n      ports:\n        - name: {{ $.Values.prometheus.prometheusSpec.portName }}\n          {{- if eq $serviceValues.type \"NodePort\" }}\n          nodePort: {{ $serviceValues.nodePort }}\n          {{- end }}\n          port: {{ $serviceValues.port }}\n          targetPort: {{ $serviceValues.targetPort }}\n      selector:\n        {{- if $.Values.prometheus.agentMode }}\n        app.kubernetes.io/name: prometheus-agent\n        statefulset.kubernetes.io/pod-name: prom-agent-{{ include \"kube-prometheus-stack.prometheus.crname\" $ }}-{{ $i }}\n        {{- else }}\n        app.kubernetes.io/name: prometheus\n        statefulset.kubernetes.io/pod-name: prometheus-{{ include \"kube-prometheus-stack.prometheus.crname\" $ }}-{{ $i }}\n        {{- end }}\n        operator.prometheus.io/name: {{ template \"kube-prometheus-stack.prometheus.crname\" $ }}\n      type: \"{{ $serviceValues.type }}\"\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/ciliumnetworkpolicy-createSecret.yaml",
    "content": "{{- if and .Values.prometheusOperator.networkPolicy.enabled (eq .Values.prometheusOperator.networkPolicy.flavor \"cilium\") }}\n{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\napiVersion: cilium.io/v2\nkind: CiliumNetworkPolicy\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission-create\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  annotations:\n    helm.sh/hook: pre-install,pre-upgrade\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n    ## Ensure this is run before the job\n    helm.sh/hook-weight: \"-5\"\n    {{- with .Values.prometheusOperator.admissionWebhooks.annotations }}\n    {{ toYaml . | nindent 4 }}\n    {{- end }}  \n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission-create\n    {{- include \"kube-prometheus-stack.labels\" $ | nindent 4 }}\nspec:\n  endpointSelector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" $ }}-admission-create\n      {{- if .Values.prometheusOperator.networkPolicy.matchLabels }}\n      {{ toYaml .Values.prometheusOperator.networkPolicy.matchLabels | nindent 6 }}\n      {{- else }}\n      {{- include \"kube-prometheus-stack.labels\" $ | nindent 6 }}\n      {{- end }}\n  egress:\n    {{- if and .Values.prometheusOperator.networkPolicy.cilium .Values.prometheusOperator.networkPolicy.cilium.egress }}\n      {{ toYaml .Values.prometheusOperator.networkPolicy.cilium.egress | nindent 6 }}\n    {{- else }}\n    - toEntities:\n      - kube-apiserver\n    {{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/ciliumnetworkpolicy-patchWebhook.yaml",
    "content": "{{- if and .Values.prometheusOperator.networkPolicy.enabled (eq .Values.prometheusOperator.networkPolicy.flavor \"cilium\") }}\n{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\napiVersion: cilium.io/v2\nkind: CiliumNetworkPolicy\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission-patch\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  annotations:\n    helm.sh/hook: pre-install,pre-upgrade\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n    ## Ensure this is run before the job\n    helm.sh/hook-weight: \"-5\"\n    {{- with .Values.prometheusOperator.admissionWebhooks.patch.annotations }}\n    {{ toYaml . | nindent 4 }}\n    {{- end }}   \n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission-patch\n    {{- include \"kube-prometheus-stack.labels\" $ | nindent 4 }}\nspec:\n  endpointSelector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" $ }}-admission-patch\n      {{- if .Values.prometheusOperator.networkPolicy.matchLabels }}\n      {{ toYaml .Values.prometheusOperator.networkPolicy.matchLabels | nindent 6 }}\n      {{- else }}\n      {{- include \"kube-prometheus-stack.labels\" $ | nindent 6 }}\n      {{- end }}\n  egress:\n    {{- if and .Values.prometheusOperator.networkPolicy.cilium .Values.prometheusOperator.networkPolicy.cilium.egress }}\n      {{ toYaml .Values.prometheusOperator.networkPolicy.cilium.egress | nindent 6 }}\n    {{- else }}\n    - toEntities:\n      - kube-apiserver\n    {{- end }}\n{{- end }}\n{{- end }}\n\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade,post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission\n{{- include \"kube-prometheus-stack.labels\" $ | indent 4 }}\nrules:\n  - apiGroups:\n      - admissionregistration.k8s.io\n    resources:\n      - validatingwebhookconfigurations\n      - mutatingwebhookconfigurations\n    verbs:\n      - get\n      - update\n{{- if and (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") .Values.global.rbac.pspEnabled }}\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if semverCompare \"> 1.15.0-0\" $kubeTargetVersion }}\n  - apiGroups: ['policy']\n{{- else }}\n  - apiGroups: ['extensions']\n{{- end }}\n    resources: ['podsecuritypolicies']\n    verbs:     ['use']\n    resourceNames:\n    - {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade,post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission\n{{- include \"kube-prometheus-stack.labels\" $ | indent 4 }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-admission\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n    namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\napiVersion: batch/v1\nkind: Job\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission-create\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n{{- with .Values.prometheusOperator.admissionWebhooks.annotations }}\n{{ toYaml . | indent 4 }}\n{{- end }}   \n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission-create\n{{- include \"kube-prometheus-stack.labels\" $ | indent 4 }}\nspec:\n  {{- if .Capabilities.APIVersions.Has \"batch/v1alpha1\" }}\n  # Alpha feature since k8s 1.12\n  ttlSecondsAfterFinished: 0\n  {{- end }}\n  template:\n    metadata:\n      name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission-create\n{{- with .Values.prometheusOperator.admissionWebhooks.patch.podAnnotations }}\n      annotations:\n{{ toYaml .  | indent 8 }}\n{{- end }}\n      labels:\n        app: {{ template \"kube-prometheus-stack.name\" $ }}-admission-create\n{{- include \"kube-prometheus-stack.labels\" $ | indent 8 }}\n    spec:\n      {{- if .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }}\n      priorityClassName: {{ .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }}\n      {{- end }}\n      containers:\n        - name: create\n          {{- $registry := .Values.global.imageRegistry | default .Values.prometheusOperator.admissionWebhooks.patch.image.registry -}}\n          {{- if .Values.prometheusOperator.admissionWebhooks.patch.image.sha }}\n          image: {{ $registry }}/{{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }}@sha256:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.sha }}\n          {{- else }}\n          image: {{ $registry }}/{{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }}\n          {{- end }}\n          imagePullPolicy: {{ .Values.prometheusOperator.admissionWebhooks.patch.image.pullPolicy }}\n          args:\n            - create\n            - --host={{ template \"kube-prometheus-stack.operator.fullname\" . }},{{ template \"kube-prometheus-stack.operator.fullname\" . }}.{{ template \"kube-prometheus-stack.namespace\" . }}.svc\n            - --namespace={{ template \"kube-prometheus-stack.namespace\" . }}\n            - --secret-name={{ template \"kube-prometheus-stack.fullname\" . }}-admission\n          {{- with .Values.prometheusOperator.admissionWebhooks.createSecretJob }}\n          securityContext:\n          {{ toYaml .securityContext | nindent 12 }}\n          {{- end }}\n          resources:\n{{ toYaml .Values.prometheusOperator.admissionWebhooks.patch.resources | indent 12 }}\n      restartPolicy: OnFailure\n      serviceAccountName: {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n      {{- with .Values.prometheusOperator.admissionWebhooks.patch.nodeSelector }}\n      nodeSelector:\n{{ toYaml . | indent 8 }}\n      {{- end }}\n      {{- with .Values.prometheusOperator.admissionWebhooks.patch.affinity }}\n      affinity:\n{{ toYaml . | indent 8 }}\n      {{- end }}\n      {{- with .Values.prometheusOperator.admissionWebhooks.patch.tolerations }}\n      tolerations:\n{{ toYaml . | indent 8 }}\n      {{- end }}\n{{- if .Values.prometheusOperator.admissionWebhooks.patch.securityContext }}\n      securityContext:\n{{ toYaml .Values.prometheusOperator.admissionWebhooks.patch.securityContext | indent 8 }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\napiVersion: batch/v1\nkind: Job\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission-patch\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  annotations:\n    \"helm.sh/hook\": post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n{{- with .Values.prometheusOperator.admissionWebhooks.patch.annotations }}\n{{ toYaml . | indent 4 }}\n{{- end }}   \n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission-patch\n{{- include \"kube-prometheus-stack.labels\" $ | indent 4 }}\nspec:\n  {{- if .Capabilities.APIVersions.Has \"batch/v1alpha1\" }}\n  # Alpha feature since k8s 1.12\n  ttlSecondsAfterFinished: 0\n  {{- end }}\n  template:\n    metadata:\n      name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission-patch\n{{- with .Values.prometheusOperator.admissionWebhooks.patch.podAnnotations }}\n      annotations:\n{{ toYaml . | indent 8 }}\n{{- end }}\n      labels:\n        app: {{ template \"kube-prometheus-stack.name\" $ }}-admission-patch\n{{- include \"kube-prometheus-stack.labels\" $ | indent 8 }}\n    spec:\n      {{- if .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }}\n      priorityClassName: {{ .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }}\n      {{- end }}\n      containers:\n        - name: patch\n          {{- $registry := .Values.global.imageRegistry | default .Values.prometheusOperator.admissionWebhooks.patch.image.registry -}}\n          {{- if .Values.prometheusOperator.admissionWebhooks.patch.image.sha }}\n          image: {{ $registry }}/{{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }}@sha256:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.sha }}\n          {{- else }}\n          image: {{ $registry }}/{{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }}\n          {{- end }}\n          imagePullPolicy: {{ .Values.prometheusOperator.admissionWebhooks.patch.image.pullPolicy }}\n          args:\n            - patch\n            - --webhook-name={{ template \"kube-prometheus-stack.fullname\" . }}-admission\n            - --namespace={{ template \"kube-prometheus-stack.namespace\" . }}\n            - --secret-name={{ template \"kube-prometheus-stack.fullname\" . }}-admission\n            - --patch-failure-policy={{ .Values.prometheusOperator.admissionWebhooks.failurePolicy }}\n          {{- with .Values.prometheusOperator.admissionWebhooks.patchWebhookJob }}\n          securityContext:\n          {{ toYaml .securityContext | nindent 12 }}\n          {{- end }}\n          resources:\n{{ toYaml .Values.prometheusOperator.admissionWebhooks.patch.resources | indent 12 }}\n      restartPolicy: OnFailure\n      serviceAccountName: {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n      {{- with .Values.prometheusOperator.admissionWebhooks.patch.nodeSelector }}\n      nodeSelector:\n{{ toYaml . | indent 8 }}\n      {{- end }}\n      {{- with .Values.prometheusOperator.admissionWebhooks.patch.affinity }}\n      affinity:\n{{ toYaml . | indent 8 }}\n      {{- end }}\n      {{- with .Values.prometheusOperator.admissionWebhooks.patch.tolerations }}\n      tolerations:\n{{ toYaml . | indent 8 }}\n      {{- end }}\n{{- if .Values.prometheusOperator.admissionWebhooks.patch.securityContext }}\n      securityContext:\n{{ toYaml .Values.prometheusOperator.admissionWebhooks.patch.securityContext | indent 8 }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/networkpolicy-createSecret.yaml",
    "content": "{{- if and .Values.prometheusOperator.networkPolicy.enabled (eq .Values.prometheusOperator.networkPolicy.flavor \"kubernetes\") }}\n{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission-create\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n    ## Ensure this is run before the job\n    \"helm.sh/hook-weight\": \"-5\"\n    {{- with .Values.prometheusOperator.admissionWebhooks.annotations }}\n    {{ toYaml . | nindent 4 }}\n    {{- end }}   \n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission-create\n    {{- include \"kube-prometheus-stack.labels\" $ | nindent 4 }}\nspec:\n  podSelector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" $ }}-admission-create\n      {{- if .Values.prometheusOperator.networkPolicy.matchLabels }}\n      {{ toYaml .Values.prometheusOperator.networkPolicy.matchLabels | nindent 6 }}\n      {{- else }}\n      {{- include \"kube-prometheus-stack.labels\" $ | nindent 6 }}\n      {{- end }}\n  egress:\n  - {}\n  policyTypes:\n  - Egress\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/networkpolicy-patchWebhook.yaml",
    "content": "{{- if and .Values.prometheusOperator.networkPolicy.enabled (eq .Values.prometheusOperator.networkPolicy.flavor \"kubernetes\") }}\n{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission-patch\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  annotations:\n    \"helm.sh/hook\": post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n    ## Ensure this is run before the job\n    \"helm.sh/hook-weight\": \"-5\"\n    {{- with .Values.prometheusOperator.admissionWebhooks.patch.annotations }}\n    {{ toYaml . | nindent 4 }}\n    {{- end }}   \n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission-patch\n    {{- include \"kube-prometheus-stack.labels\" $ | nindent 4 }}\nspec:\n  podSelector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" $ }}-admission-patch\n      {{- if .Values.prometheusOperator.networkPolicy.matchLabels }}\n      {{ toYaml .Values.prometheusOperator.networkPolicy.matchLabels | nindent 6 }}\n      {{- else }}\n      {{- include \"kube-prometheus-stack.labels\" $ | nindent 6 }}\n      {{- end }}\n  egress:\n  - {}\n  policyTypes:\n  - Egress\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml",
    "content": "{{- if and (.Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\") .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade,post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n{{- if .Values.global.rbac.pspAnnotations }}\n{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }}\n{{- end }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-admission\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  privileged: false\n  # Allow core volume types.\n  volumes:\n    - 'configMap'\n    - 'emptyDir'\n    - 'projected'\n    - 'secret'\n    - 'downwardAPI'\n    - 'persistentVolumeClaim'\n  hostNetwork: false\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    # Permits the container to run with root privileges as well.\n    rule: 'RunAsAny'\n  seLinux:\n    # This policy assumes the nodes are using AppArmor rather than SELinux.\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      # Allow adding the root group.\n      - min: 0\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Allow adding the root group.\n      - min: 0\n        max: 65535\n  readOnlyRootFilesystem: false\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade,post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission\n{{- include \"kube-prometheus-stack.labels\" $ | indent 4 }}\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - secrets\n    verbs:\n      - get\n      - create\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade,post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission\n{{- include \"kube-prometheus-stack.labels\" $ | indent 4 }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-admission\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n    namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade,post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission\n{{- include \"kube-prometheus-stack.labels\" $ | indent 4 }}\n{{- if .Values.global.imagePullSecrets }}\nimagePullSecrets:\n{{ include \"kube-prometheus-stack.imagePullSecrets\" . | trim | indent 2 }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled }}\napiVersion: admissionregistration.k8s.io/v1\nkind: MutatingWebhookConfiguration\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n{{- if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }}\n  annotations:\n    certmanager.k8s.io/inject-ca-from: {{ printf \"%s/%s-admission\" (include \"kube-prometheus-stack.namespace\" .) (include \"kube-prometheus-stack.fullname\" .) | quote }}\n    cert-manager.io/inject-ca-from: {{ printf \"%s/%s-admission\" (include \"kube-prometheus-stack.namespace\" .) (include \"kube-prometheus-stack.fullname\" .) | quote }}\n{{- end }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission\n{{- include \"kube-prometheus-stack.labels\" $ | indent 4 }}\nwebhooks:\n  - name: prometheusrulemutate.monitoring.coreos.com\n    {{- if eq .Values.prometheusOperator.admissionWebhooks.failurePolicy \"IgnoreOnInstallOnly\" }}\n    failurePolicy: {{ .Release.IsInstall | ternary \"Ignore\" \"Fail\" }}\n    {{- else if .Values.prometheusOperator.admissionWebhooks.failurePolicy  }}\n    failurePolicy: {{ .Values.prometheusOperator.admissionWebhooks.failurePolicy }}\n    {{- else if .Values.prometheusOperator.admissionWebhooks.patch.enabled }}\n    failurePolicy: Ignore\n    {{- else }}\n    failurePolicy: Fail\n    {{- end }}\n    rules:\n      - apiGroups:\n          - monitoring.coreos.com\n        apiVersions:\n          - \"*\"\n        resources:\n          - prometheusrules\n        operations:\n          - CREATE\n          - UPDATE\n    clientConfig:\n      service:\n        namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n        name: {{ template \"kube-prometheus-stack.operator.fullname\" $ }}\n        path: /admission-prometheusrules/mutate\n      {{- if and .Values.prometheusOperator.admissionWebhooks.caBundle (not .Values.prometheusOperator.admissionWebhooks.patch.enabled) (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\n      caBundle: {{ .Values.prometheusOperator.admissionWebhooks.caBundle }}\n      {{- end }}\n    timeoutSeconds: {{ .Values.prometheusOperator.admissionWebhooks.timeoutSeconds }}\n    admissionReviewVersions: [\"v1\", \"v1beta1\"]\n    sideEffects: None\n    {{- if or .Values.prometheusOperator.denyNamespaces .Values.prometheusOperator.namespaces }}\n    namespaceSelector:\n      matchExpressions:\n      {{- if .Values.prometheusOperator.denyNamespaces }}\n      - key: kubernetes.io/metadata.name\n        operator: NotIn\n        values:\n        {{- range $namespace := mustUniq .Values.prometheusOperator.denyNamespaces }} \n        - {{ $namespace }}\n        {{- end }}\n      {{- else if and .Values.prometheusOperator.namespaces .Values.prometheusOperator.namespaces.additional }}\n      - key: kubernetes.io/metadata.name\n        operator: In\n        values:\n        {{- if and .Values.prometheusOperator.namespaces.releaseNamespace (default .Values.prometheusOperator.namespaces.releaseNamespace true) }}\n        {{- $namespace := printf \"%s\" (include \"kube-prometheus-stack.namespace\" .) }}\n        - {{ $namespace }}\n        {{- end }}\n        {{- range $namespace := mustUniq .Values.prometheusOperator.namespaces.additional }} \n        - {{ $namespace }}\n        {{- end }}\n      {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled }}\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  name:  {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n{{- if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }}\n  annotations:\n    certmanager.k8s.io/inject-ca-from: {{ printf \"%s/%s-admission\" (include \"kube-prometheus-stack.namespace\" .) (include \"kube-prometheus-stack.fullname\" .) | quote }}\n    cert-manager.io/inject-ca-from: {{ printf \"%s/%s-admission\" (include \"kube-prometheus-stack.namespace\" .) (include \"kube-prometheus-stack.fullname\" .) | quote }}\n{{- end }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" $ }}-admission\n{{- include \"kube-prometheus-stack.labels\" $ | indent 4 }}\nwebhooks:\n  - name: prometheusrulemutate.monitoring.coreos.com\n    {{- if eq .Values.prometheusOperator.admissionWebhooks.failurePolicy \"IgnoreOnInstallOnly\" }}\n    failurePolicy: {{ .Release.IsInstall | ternary \"Ignore\" \"Fail\" }}\n    {{- else if .Values.prometheusOperator.admissionWebhooks.failurePolicy  }}\n    failurePolicy: {{ .Values.prometheusOperator.admissionWebhooks.failurePolicy }}\n    {{- else if .Values.prometheusOperator.admissionWebhooks.patch.enabled }}\n    failurePolicy: Ignore\n    {{- else }}\n    failurePolicy: Fail\n    {{- end }}\n    rules:\n      - apiGroups:\n          - monitoring.coreos.com\n        apiVersions:\n          - \"*\"\n        resources:\n          - prometheusrules\n        operations:\n          - CREATE\n          - UPDATE\n    clientConfig:\n      service:\n        namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n        name: {{ template \"kube-prometheus-stack.operator.fullname\" $ }}\n        path: /admission-prometheusrules/validate\n      {{- if and .Values.prometheusOperator.admissionWebhooks.caBundle (not .Values.prometheusOperator.admissionWebhooks.patch.enabled) (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }}\n      caBundle: {{ .Values.prometheusOperator.admissionWebhooks.caBundle }}\n      {{- end }}\n    timeoutSeconds: {{ .Values.prometheusOperator.admissionWebhooks.timeoutSeconds }}\n    admissionReviewVersions: [\"v1\", \"v1beta1\"]\n    sideEffects: None\n    {{- if or .Values.prometheusOperator.denyNamespaces .Values.prometheusOperator.namespaces }}\n    namespaceSelector:\n      matchExpressions:\n      {{- if .Values.prometheusOperator.denyNamespaces }}\n      - key: kubernetes.io/metadata.name\n        operator: NotIn\n        values:\n        {{- range $namespace := mustUniq .Values.prometheusOperator.denyNamespaces }} \n        - {{ $namespace }}\n        {{- end }}\n      {{- else if and .Values.prometheusOperator.namespaces .Values.prometheusOperator.namespaces.additional }}\n      - key: kubernetes.io/metadata.name\n        operator: In\n        values:\n        {{- if and .Values.prometheusOperator.namespaces.releaseNamespace (default .Values.prometheusOperator.namespaces.releaseNamespace true) }}\n        {{- $namespace := printf \"%s\" (include \"kube-prometheus-stack.namespace\" .) }}\n        - {{ $namespace }}\n        {{- end }}\n        {{- range $namespace := mustUniq .Values.prometheusOperator.namespaces.additional }} \n        - {{ $namespace }}\n        {{- end }}\n      {{- end }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/aggregate-clusterroles.yaml",
    "content": "{{/* This file is based on https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/rbac-crd.md */}}\n{{- if and .Values.global.rbac.create .Values.global.rbac.createAggregateClusterRoles }}\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus-crd-view\n  labels:\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-view: \"true\"\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n    {{- include \"kube-prometheus-stack.labels\" . | nindent 4 }}\nrules:\n- apiGroups: [\"monitoring.coreos.com\"]\n  resources: [\"alertmanagers\", \"alertmanagerconfigs\", \"podmonitors\",  \"probes\", \"prometheuses\", \"prometheusagents\", \"prometheusrules\", \"scrapeconfigs\", \"servicemonitors\"]\n  verbs: [\"get\", \"list\", \"watch\"]\n---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-prometheus-crd-edit\n  labels:\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n    {{- include \"kube-prometheus-stack.labels\" . | nindent 4 }}\nrules:\n- apiGroups: [\"monitoring.coreos.com\"]\n  resources: [\"alertmanagers\", \"alertmanagerconfigs\", \"podmonitors\",  \"probes\", \"prometheuses\", \"prometheusagents\", \"prometheusrules\", \"scrapeconfigs\", \"servicemonitors\"]\n  verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"patch\", \"delete\"]\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/certmanager.yaml",
    "content": "{{- if .Values.prometheusOperator.admissionWebhooks.certManager.enabled -}}\n{{- if not .Values.prometheusOperator.admissionWebhooks.certManager.issuerRef -}}\n# Create a selfsigned Issuer, in order to create a root CA certificate for\n# signing webhook serving certificates\napiVersion: cert-manager.io/v1\nkind: Issuer\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-self-signed-issuer\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\nspec:\n  selfSigned: {}\n---\n# Generate a CA Certificate used to sign certificates for the webhook\napiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-root-cert\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\nspec:\n  secretName: {{ template \"kube-prometheus-stack.fullname\" . }}-root-cert\n  duration: {{ .Values.prometheusOperator.admissionWebhooks.certManager.rootCert.duration | default \"43800h0m0s\" | quote }}\n  issuerRef:\n    name: {{ template \"kube-prometheus-stack.fullname\" . }}-self-signed-issuer\n  commonName: \"ca.webhook.kube-prometheus-stack\"\n  isCA: true\n---\n# Create an Issuer that uses the above generated CA certificate to issue certs\napiVersion: cert-manager.io/v1\nkind: Issuer\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-root-issuer\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\nspec:\n  ca:\n    secretName: {{ template \"kube-prometheus-stack.fullname\" . }}-root-cert\n{{- end }}\n---\n# generate a server certificate for the apiservices to use\napiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\nspec:\n  secretName: {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n  duration: {{ .Values.prometheusOperator.admissionWebhooks.certManager.admissionCert.duration | default \"8760h0m0s\" | quote }}\n  issuerRef:\n    {{- if .Values.prometheusOperator.admissionWebhooks.certManager.issuerRef }}\n    {{- toYaml .Values.prometheusOperator.admissionWebhooks.certManager.issuerRef | nindent 4 }}\n    {{- else }}\n    name: {{ template \"kube-prometheus-stack.fullname\" . }}-root-issuer\n    {{- end }}\n  dnsNames:\n  - {{ template \"kube-prometheus-stack.operator.fullname\" . }}\n  - {{ template \"kube-prometheus-stack.operator.fullname\" . }}.{{ template \"kube-prometheus-stack.namespace\" . }}\n  - {{ template \"kube-prometheus-stack.operator.fullname\" . }}.{{ template \"kube-prometheus-stack.namespace\" . }}.svc\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/ciliumnetworkpolicy.yaml",
    "content": "{{- if and .Values.prometheusOperator.networkPolicy.enabled (eq .Values.prometheusOperator.networkPolicy.flavor \"cilium\") }}\napiVersion: cilium.io/v2\nkind: CiliumNetworkPolicy\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n    {{- include \"kube-prometheus-stack.labels\" . | nindent 4 }}\nspec:\n  endpointSelector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n      {{- if .Values.prometheusOperator.networkPolicy.matchLabels }}\n      {{ toYaml .Values.prometheusOperator.networkPolicy.matchLabels | nindent 6 }}\n      {{- else }}\n      {{- include \"kube-prometheus-stack.labels\" $ | nindent 6 }}\n      {{- end }}\n  egress:\n    {{- if and .Values.prometheusOperator.networkPolicy.cilium .Values.prometheusOperator.networkPolicy.cilium.egress }}\n    {{ toYaml .Values.prometheusOperator.networkPolicy.cilium.egress | nindent 6 }}\n    {{- else }}\n  - toEntities:\n    - kube-apiserver\n  {{- end }}\n  ingress:\n  - toPorts:\n    - ports:\n      {{- if .Values.prometheusOperator.tls.enabled }}\n      - port: {{ .Values.prometheusOperator.tls.internalPort | quote }}\n      {{- else }}\n      - port: \"8080\"\n      {{- end }}\n        protocol: \"TCP\"\n      rules:\n        http:\n        - method: \"GET\"\n          path: \"/metrics\"\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/clusterrole.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nrules:\n- apiGroups:\n  - monitoring.coreos.com\n  resources:\n  - alertmanagers\n  - alertmanagers/finalizers\n  - alertmanagers/status\n  - alertmanagerconfigs\n  - prometheuses\n  - prometheuses/finalizers\n  - prometheuses/status\n  - prometheusagents\n  - prometheusagents/finalizers\n  - prometheusagents/status\n  - thanosrulers\n  - thanosrulers/finalizers\n  - thanosrulers/status\n  - scrapeconfigs\n  - servicemonitors\n  - podmonitors\n  - probes\n  - prometheusrules\n  verbs:\n  - '*'\n- apiGroups:\n  - apps\n  resources:\n  - statefulsets\n  verbs:\n  - '*'\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - secrets\n  verbs:\n  - '*'\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  verbs:\n  - list\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  - services/finalizers\n  - endpoints\n  verbs:\n  - get\n  - create\n  - update\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n{{- if .Capabilities.APIVersions.Has \"discovery.k8s.io/v1/EndpointSlice\" }}\n- apiGroups:\n  - discovery.k8s.io\n  resources:\n  - endpointslices\n  verbs:\n  - get\n  - list\n  - watch\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/clusterrolebinding.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create }}\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator\nsubjects:\n- kind: ServiceAccount\n  name: {{ template \"kube-prometheus-stack.operator.serviceAccountName\" . }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/deployment.yaml",
    "content": "{{- $namespace := printf \"%s\" (include \"kube-prometheus-stack.namespace\" .) }}\n{{- $defaultKubeletSvcName := printf \"%s-kubelet\" (include \"kube-prometheus-stack.fullname\" .) }}\n{{- if .Values.prometheusOperator.enabled }}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.prometheusOperator.labels }}\n{{ toYaml .Values.prometheusOperator.labels | indent 4 }}\n{{- end }}\n{{- if .Values.prometheusOperator.annotations }}\n  annotations:\n{{ toYaml .Values.prometheusOperator.annotations | indent 4 }}\n{{- end }}\nspec:\n  replicas: 1\n  revisionHistoryLimit: {{ .Values.prometheusOperator.revisionHistoryLimit }}\n  selector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n      release: {{ $.Release.Name | quote }}\n  template:\n    metadata:\n      labels:\n        app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n{{ include \"kube-prometheus-stack.labels\" . | indent 8 }}\n{{- if .Values.prometheusOperator.podLabels }}\n{{ toYaml .Values.prometheusOperator.podLabels | indent 8 }}\n{{- end }}\n{{- if .Values.prometheusOperator.podAnnotations }}\n      annotations:\n{{ toYaml .Values.prometheusOperator.podAnnotations | indent 8 }}\n{{- end }}\n    spec:\n    {{- if .Values.prometheusOperator.priorityClassName }}\n      priorityClassName: {{ .Values.prometheusOperator.priorityClassName }}\n    {{- end }}\n    {{- if .Values.global.imagePullSecrets }}\n      imagePullSecrets:\n      {{- include \"kube-prometheus-stack.imagePullSecrets\" . | indent 8 }}\n    {{- end }}\n      containers:\n        - name: {{ template \"kube-prometheus-stack.name\" . }}\n          {{- $configReloaderRegistry := .Values.global.imageRegistry | default .Values.prometheusOperator.prometheusConfigReloader.image.registry -}}\n          {{- $operatorRegistry := .Values.global.imageRegistry | default .Values.prometheusOperator.image.registry -}}\n          {{- $thanosRegistry := .Values.global.imageRegistry | default .Values.prometheusOperator.thanosImage.registry -}}\n          {{- if .Values.prometheusOperator.image.sha }}\n          image: \"{{ $operatorRegistry }}/{{ .Values.prometheusOperator.image.repository }}:{{ .Values.prometheusOperator.image.tag | default .Chart.AppVersion }}@sha256:{{ .Values.prometheusOperator.image.sha }}\"\n          {{- else }}\n          image: \"{{ $operatorRegistry }}/{{ .Values.prometheusOperator.image.repository }}:{{ .Values.prometheusOperator.image.tag | default .Chart.AppVersion }}\"\n          {{- end }}\n          imagePullPolicy: \"{{ .Values.prometheusOperator.image.pullPolicy }}\"\n          args:\n            {{- if .Values.prometheusOperator.kubeletService.enabled }}\n            - --kubelet-service={{ .Values.prometheusOperator.kubeletService.namespace }}/{{ default $defaultKubeletSvcName .Values.prometheusOperator.kubeletService.name  }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.logFormat }}\n            - --log-format={{ .Values.prometheusOperator.logFormat }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.logLevel }}\n            - --log-level={{ .Values.prometheusOperator.logLevel }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.denyNamespaces }}\n            - --deny-namespaces={{ tpl (.Values.prometheusOperator.denyNamespaces | join \",\") $ }}\n            {{- end }}\n            {{- with $.Values.prometheusOperator.namespaces }}\n            {{- $namespaces := list }}\n            {{- if .releaseNamespace }}\n            {{- $namespaces = append $namespaces $namespace }}\n            {{- end }}\n            {{- if .additional }}\n            {{- range $ns := .additional }}\n            {{- $namespaces = append $namespaces (tpl $ns $) }}\n            {{- end }}\n            {{- end }}\n            - --namespaces={{ $namespaces | mustUniq | join \",\" }}\n            {{- end }}\n            - --localhost=127.0.0.1\n            {{- if .Values.prometheusOperator.prometheusDefaultBaseImage }}\n            - --prometheus-default-base-image={{ .Values.global.imageRegistry | default .Values.prometheusOperator.prometheusDefaultBaseImageRegistry }}/{{ .Values.prometheusOperator.prometheusDefaultBaseImage }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.alertmanagerDefaultBaseImage }}\n            - --alertmanager-default-base-image={{ .Values.global.imageRegistry | default .Values.prometheusOperator.alertmanagerDefaultBaseImageRegistry }}/{{ .Values.prometheusOperator.alertmanagerDefaultBaseImage }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.prometheusConfigReloader.image.sha }}\n            - --prometheus-config-reloader={{ $configReloaderRegistry }}/{{ .Values.prometheusOperator.prometheusConfigReloader.image.repository }}:{{ .Values.prometheusOperator.prometheusConfigReloader.image.tag | default .Chart.AppVersion }}@sha256:{{ .Values.prometheusOperator.prometheusConfigReloader.image.sha }}\n            {{- else }}\n            - --prometheus-config-reloader={{ $configReloaderRegistry }}/{{ .Values.prometheusOperator.prometheusConfigReloader.image.repository }}:{{ .Values.prometheusOperator.prometheusConfigReloader.image.tag | default .Chart.AppVersion }}\n            {{- end }}\n            - --config-reloader-cpu-request={{ .Values.prometheusOperator.prometheusConfigReloader.resources.requests.cpu }}\n            - --config-reloader-cpu-limit={{ .Values.prometheusOperator.prometheusConfigReloader.resources.limits.cpu }}\n            - --config-reloader-memory-request={{ .Values.prometheusOperator.prometheusConfigReloader.resources.requests.memory }}\n            - --config-reloader-memory-limit={{ .Values.prometheusOperator.prometheusConfigReloader.resources.limits.memory }}\n            {{- if .Values.prometheusOperator.prometheusConfigReloader.enableProbe }}\n            - --enable-config-reloader-probes=true\n            {{- end }}\n            {{- if .Values.prometheusOperator.alertmanagerInstanceNamespaces }}\n            - --alertmanager-instance-namespaces={{ .Values.prometheusOperator.alertmanagerInstanceNamespaces | join \",\" }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.alertmanagerInstanceSelector }}\n            - --alertmanager-instance-selector={{ .Values.prometheusOperator.alertmanagerInstanceSelector }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.alertmanagerConfigNamespaces }}\n            - --alertmanager-config-namespaces={{ .Values.prometheusOperator.alertmanagerConfigNamespaces | join \",\" }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.prometheusInstanceNamespaces }}\n            - --prometheus-instance-namespaces={{ .Values.prometheusOperator.prometheusInstanceNamespaces | join \",\" }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.prometheusInstanceSelector }}\n            - --prometheus-instance-selector={{ .Values.prometheusOperator.prometheusInstanceSelector }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.thanosImage.sha }}\n            - --thanos-default-base-image={{ $thanosRegistry }}/{{ .Values.prometheusOperator.thanosImage.repository }}:{{ .Values.prometheusOperator.thanosImage.tag }}@sha256:{{ .Values.prometheusOperator.thanosImage.sha }}\n            {{- else }}\n            - --thanos-default-base-image={{ $thanosRegistry }}/{{ .Values.prometheusOperator.thanosImage.repository }}:{{ .Values.prometheusOperator.thanosImage.tag }}\n            {{- end }} \n            {{- if .Values.prometheusOperator.thanosRulerInstanceNamespaces }}\n            - --thanos-ruler-instance-namespaces={{ .Values.prometheusOperator.thanosRulerInstanceNamespaces | join \",\" }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.thanosRulerInstanceSelector }}\n            - --thanos-ruler-instance-selector={{ .Values.prometheusOperator.thanosRulerInstanceSelector }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.secretFieldSelector }}\n            - --secret-field-selector={{ tpl (.Values.prometheusOperator.secretFieldSelector) $ }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.clusterDomain }}\n            - --cluster-domain={{ .Values.prometheusOperator.clusterDomain }}\n            {{- end }}\n            {{- if .Values.prometheusOperator.tls.enabled }}\n            - --web.enable-tls=true\n            - --web.cert-file=/cert/{{ if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }}tls.crt{{ else }}cert{{ end }}\n            - --web.key-file=/cert/{{ if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }}tls.key{{ else }}key{{ end }}\n            - --web.listen-address=:{{ .Values.prometheusOperator.tls.internalPort }}\n            - --web.tls-min-version={{ .Values.prometheusOperator.tls.tlsMinVersion }}\n          ports:\n            - containerPort: {{ .Values.prometheusOperator.tls.internalPort }}\n              name: https\n          {{- else }}\n          ports:\n            - containerPort: 8080\n              name: http\n          {{- end }}\n          resources:\n{{ toYaml .Values.prometheusOperator.resources | indent 12 }}\n          securityContext:\n{{ toYaml .Values.prometheusOperator.containerSecurityContext | indent 12 }}\n{{- if .Values.prometheusOperator.tls.enabled }}\n          volumeMounts:\n            - name: tls-secret\n              mountPath: /cert\n              readOnly: true\n      volumes:\n        - name: tls-secret\n          secret:\n            defaultMode: 420\n            secretName: {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n{{- end }}\n    {{- with .Values.prometheusOperator.dnsConfig }}\n      dnsConfig:\n{{ toYaml . | indent 8 }}\n    {{- end }}\n{{- if .Values.prometheusOperator.securityContext }}\n      securityContext:\n{{ toYaml .Values.prometheusOperator.securityContext | indent 8 }}\n{{- end }}\n      serviceAccountName: {{ template \"kube-prometheus-stack.operator.serviceAccountName\" . }}\n{{- if .Values.prometheusOperator.hostNetwork }}\n      hostNetwork: true\n      dnsPolicy: ClusterFirstWithHostNet\n{{- end }}\n    {{- with .Values.prometheusOperator.nodeSelector }}\n      nodeSelector:\n{{ toYaml . | indent 8 }}\n    {{- end }}\n    {{- with .Values.prometheusOperator.affinity }}\n      affinity:\n{{ toYaml . | indent 8 }}\n    {{- end }}\n    {{- with .Values.prometheusOperator.tolerations }}\n      tolerations:\n{{ toYaml . | indent 8 }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/networkpolicy.yaml",
    "content": "{{- if and .Values.prometheusOperator.networkPolicy.enabled (eq .Values.prometheusOperator.networkPolicy.flavor \"kubernetes\") }}\napiVersion: {{ template \"kube-prometheus-stack.prometheus.networkPolicy.apiVersion\" . }}\nkind: NetworkPolicy\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n    {{- include \"kube-prometheus-stack.labels\" . | nindent 4 }}\nspec:\n  egress: \n    - {}\n  ingress:\n    - ports:\n      {{- if .Values.prometheusOperator.tls.enabled }}\n      - port: {{ .Values.prometheusOperator.tls.internalPort }}\n      {{- else }}\n      - port: 8080\n      {{- end }}\n  policyTypes:\n    - Egress\n    - Ingress\n  podSelector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n      release: {{ $.Release.Name | quote }}\n      {{- if .Values.prometheusOperator.networkPolicy.matchLabels }}\n      {{ toYaml .Values.prometheusOperator.networkPolicy.matchLabels | nindent 6 }}\n      {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/psp-clusterrole.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\n{{- if .Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\" }}\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator-psp\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nrules:\n{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}\n{{- if semverCompare \"> 1.15.0-0\" $kubeTargetVersion }}\n- apiGroups: ['policy']\n{{- else }}\n- apiGroups: ['extensions']\n{{- end }}\n  resources: ['podsecuritypolicies']\n  verbs:     ['use']\n  resourceNames:\n  - {{ template \"kube-prometheus-stack.fullname\" . }}-operator\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/psp-clusterrolebinding.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\n{{- if .Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\" }}\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator-psp\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator-psp\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"kube-prometheus-stack.operator.serviceAccountName\" . }}\n    namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/psp.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }}\n{{- if .Capabilities.APIVersions.Has \"policy/v1beta1/PodSecurityPolicy\" }}\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n{{- if .Values.global.rbac.pspAnnotations }}\n  annotations:\n{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }}\n{{- end }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  privileged: false\n  # Allow core volume types.\n  volumes:\n    - 'configMap'\n    - 'emptyDir'\n    - 'projected'\n    - 'secret'\n    - 'downwardAPI'\n    - 'persistentVolumeClaim'\n  hostNetwork: {{ .Values.prometheusOperator.hostNetwork }}\n  hostIPC: false\n  hostPID: false\n  runAsUser:\n    # Permits the container to run with root privileges as well.\n    rule: 'RunAsAny'\n  seLinux:\n    # This policy assumes the nodes are using AppArmor rather than SELinux.\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      # Allow adding the root group.\n      - min: 0\n        max: 65535\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      # Allow adding the root group.\n      - min: 0\n        max: 65535\n  readOnlyRootFilesystem: false\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/service.yaml",
    "content": "{{- if .Values.prometheusOperator.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.prometheusOperator.service.labels }}\n{{ toYaml .Values.prometheusOperator.service.labels | indent 4 }}\n{{- end }}\n{{- if .Values.prometheusOperator.service.annotations }}\n  annotations:\n{{ toYaml .Values.prometheusOperator.service.annotations | indent 4 }}\n{{- end }}\nspec:\n{{- if .Values.prometheusOperator.service.clusterIP }}\n  clusterIP: {{ .Values.prometheusOperator.service.clusterIP }}\n{{- end }}\n{{- if .Values.prometheusOperator.service.externalIPs }}\n  externalIPs:\n{{ toYaml .Values.prometheusOperator.service.externalIPs | indent 4 }}\n{{- end }}\n{{- if .Values.prometheusOperator.service.loadBalancerIP }}\n  loadBalancerIP: {{ .Values.prometheusOperator.service.loadBalancerIP }}\n{{- end }}\n{{- if .Values.prometheusOperator.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges:\n  {{- range $cidr := .Values.prometheusOperator.service.loadBalancerSourceRanges }}\n    - {{ $cidr }}\n  {{- end }}\n{{- end }}\n{{- if ne .Values.prometheusOperator.service.type \"ClusterIP\" }}\n  externalTrafficPolicy: {{ .Values.prometheusOperator.service.externalTrafficPolicy }}\n{{- end }}\n  ports:\n  {{- if not .Values.prometheusOperator.tls.enabled }}\n  - name: http\n    {{- if eq .Values.prometheusOperator.service.type \"NodePort\" }}\n    nodePort: {{ .Values.prometheusOperator.service.nodePort }}\n    {{- end }}\n    port: 8080\n    targetPort: http\n  {{- end }}\n  {{- if .Values.prometheusOperator.tls.enabled }}\n  - name: https\n    {{- if eq .Values.prometheusOperator.service.type \"NodePort\"}}\n    nodePort: {{ .Values.prometheusOperator.service.nodePortTls }}\n    {{- end }}\n    port: 443\n    targetPort: https\n  {{- end }}\n  selector:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n    release: {{ $.Release.Name | quote }}\n  type: \"{{ .Values.prometheusOperator.service.type }}\"\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/serviceaccount.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ template \"kube-prometheus-stack.operator.serviceAccountName\" . }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n    app.kubernetes.io/name: {{ template \"kube-prometheus-stack.name\" . }}-prometheus-operator\n    app.kubernetes.io/component: prometheus-operator\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- if .Values.global.imagePullSecrets }}\nimagePullSecrets:\n{{ include \"kube-prometheus-stack.imagePullSecrets\" . | trim | indent 2 }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/servicemonitor.yaml",
    "content": "{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.serviceMonitor.selfMonitor }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- with .Values.prometheusOperator.serviceMonitor.additionalLabels }}\n{{ toYaml . | indent 4 }}\n{{- end }}\nspec:\n  {{- include \"servicemonitor.scrapeLimits\" .Values.prometheusOperator.serviceMonitor | nindent 2 }}\n  endpoints:\n  {{- if .Values.prometheusOperator.tls.enabled }}\n  - port: https\n    scheme: https\n    tlsConfig:\n      serverName: {{ template \"kube-prometheus-stack.operator.fullname\" . }}\n      ca:\n        secret:\n          name: {{ template \"kube-prometheus-stack.fullname\" . }}-admission\n          key: {{ if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }}ca.crt{{ else }}ca{{ end }}\n          optional: false\n  {{- else }}\n  - port: http\n  {{- end }}\n    honorLabels: true\n    {{- if .Values.prometheusOperator.serviceMonitor.interval }}\n    interval: {{ .Values.prometheusOperator.serviceMonitor.interval }}\n    {{- end }}\n{{- if .Values.prometheusOperator.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.prometheusOperator.serviceMonitor.metricRelabelings | indent 6) . }}\n{{- end }}\n{{- if .Values.prometheusOperator.serviceMonitor.relabelings }}\n    relabelings:\n{{ toYaml .Values.prometheusOperator.serviceMonitor.relabelings | indent 6 }}\n{{- end }}\n  selector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n      release: {{ $.Release.Name | quote }}\n  namespaceSelector:\n    matchNames:\n      - {{ printf \"%s\" (include \"kube-prometheus-stack.namespace\" .) | quote }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/prometheus-operator/verticalpodautoscaler.yaml",
    "content": "{{- if and (.Capabilities.APIVersions.Has \"autoscaling.k8s.io/v1\") (.Values.prometheusOperator.verticalPodAutoscaler.enabled) }}\napiVersion: autoscaling.k8s.io/v1\nkind: VerticalPodAutoscaler\nmetadata:\n  name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.name\" . }}-operator\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  {{- with .Values.prometheusOperator.verticalPodAutoscaler.recommenders }}\n  recommenders:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n  resourcePolicy:\n    containerPolicies:\n    - containerName: {{ template \"kube-prometheus-stack.name\" . }}\n      {{- with .Values.prometheusOperator.verticalPodAutoscaler.controlledResources }}\n      controlledResources:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- if .Values.prometheusOperator.verticalPodAutoscaler.controlledValues }}\n      controlledValues: {{ .Values.prometheusOperator.verticalPodAutoscaler.controlledValues }}\n      {{- end }}\n      {{- if .Values.prometheusOperator.verticalPodAutoscaler.maxAllowed }}\n      maxAllowed:\n        {{- toYaml .Values.prometheusOperator.verticalPodAutoscaler.maxAllowed | nindent 8 }}\n      {{- end }}\n      {{- if .Values.prometheusOperator.verticalPodAutoscaler.minAllowed }}\n      minAllowed:\n        {{- toYaml .Values.prometheusOperator.verticalPodAutoscaler.minAllowed | nindent 8 }}\n      {{- end }}\n  targetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ template \"kube-prometheus-stack.fullname\" . }}-operator\n  {{- with .Values.prometheusOperator.verticalPodAutoscaler.updatePolicy }}\n  updatePolicy:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/thanos-ruler/extrasecret.yaml",
    "content": "{{- if .Values.thanosRuler.extraSecret.data -}}\n{{- $secretName := printf \"%s-extra\" (include \"kube-prometheus-stack.thanosRuler.name\" . ) -}}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ default $secretName .Values.thanosRuler.extraSecret.name }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- if .Values.thanosRuler.extraSecret.annotations }}\n  annotations:\n{{ toYaml .Values.thanosRuler.extraSecret.annotations | indent 4 }}\n{{- end }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n    app.kubernetes.io/component: thanos-ruler\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\ndata:\n{{- range $key, $val := .Values.thanosRuler.extraSecret.data }}\n  {{ $key }}: {{ $val | b64enc | quote }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/thanos-ruler/ingress.yaml",
    "content": "{{- if and .Values.thanosRuler.enabled .Values.thanosRuler.ingress.enabled }}\n{{- $pathType := .Values.thanosRuler.ingress.pathType | default \"ImplementationSpecific\" }}\n{{- $serviceName := include \"kube-prometheus-stack.thanosRuler.name\" . }}\n{{- $servicePort := .Values.thanosRuler.service.port -}}\n{{- $routePrefix := list .Values.thanosRuler.thanosRulerSpec.routePrefix }}\n{{- $paths := .Values.thanosRuler.ingress.paths | default $routePrefix -}}\n{{- $apiIsStable := eq (include \"kube-prometheus-stack.ingress.isStable\" .) \"true\" -}}\n{{- $ingressSupportsPathType := eq (include \"kube-prometheus-stack.ingress.supportsPathType\" .) \"true\" -}}\napiVersion: {{ include \"kube-prometheus-stack.ingress.apiVersion\" . }}\nkind: Ingress\nmetadata:\n  name: {{ $serviceName }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n{{- if .Values.thanosRuler.ingress.annotations }}\n  annotations:\n{{ toYaml .Values.thanosRuler.ingress.annotations | indent 4 }}\n{{- end }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n{{- if .Values.thanosRuler.ingress.labels }}\n{{ toYaml .Values.thanosRuler.ingress.labels | indent 4 }}\n{{- end }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  {{- if $apiIsStable }}\n  {{- if .Values.thanosRuler.ingress.ingressClassName }}\n  ingressClassName: {{ .Values.thanosRuler.ingress.ingressClassName }}\n  {{- end }}\n  {{- end }}\n  rules:\n  {{- if .Values.thanosRuler.ingress.hosts }}\n  {{- range $host := .Values.thanosRuler.ingress.hosts }}\n    - host: {{ tpl $host $ }}\n      http:\n        paths:\n  {{- range $p := $paths }}\n          - path: {{ tpl $p $ }}\n            {{- if and $pathType $ingressSupportsPathType }}\n            pathType: {{ $pathType }}\n            {{- end }}\n            backend:\n              {{- if $apiIsStable }}\n              service:\n                name: {{ $serviceName }}\n                port:\n                  number: {{ $servicePort }}\n              {{- else }}\n              serviceName: {{ $serviceName }}\n              servicePort: {{ $servicePort }}\n    {{- end }}\n    {{- end -}}\n  {{- end -}}\n  {{- else }}\n    - http:\n        paths:\n  {{- range $p := $paths }}\n          - path: {{ tpl $p $ }}\n            {{- if and $pathType $ingressSupportsPathType }}\n            pathType: {{ $pathType }}\n            {{- end }}\n            backend:\n              {{- if $apiIsStable }}\n              service:\n                name: {{ $serviceName }}\n                port:\n                  number: {{ $servicePort }}\n              {{- else }}\n              serviceName: {{ $serviceName }}\n              servicePort: {{ $servicePort }}\n  {{- end }}\n  {{- end -}}\n  {{- end -}}\n  {{- if .Values.thanosRuler.ingress.tls }}\n  tls:\n{{ tpl (toYaml .Values.thanosRuler.ingress.tls | indent 4) . }}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/thanos-ruler/podDisruptionBudget.yaml",
    "content": "{{- if and .Values.thanosRuler.enabled .Values.thanosRuler.podDisruptionBudget.enabled }}\napiVersion: {{ include \"kube-prometheus-stack.pdb.apiVersion\" . }}\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\nspec:\n  {{- if .Values.thanosRuler.podDisruptionBudget.minAvailable }}\n  minAvailable: {{ .Values.thanosRuler.podDisruptionBudget.minAvailable }}\n  {{- end }}\n  {{- if .Values.thanosRuler.podDisruptionBudget.maxUnavailable }}\n  maxUnavailable: {{ .Values.thanosRuler.podDisruptionBudget.maxUnavailable }}\n  {{- end }}\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: thanos-ruler\n      thanos-ruler: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/thanos-ruler/ruler.yaml",
    "content": "{{- if .Values.thanosRuler.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ThanosRuler\nmetadata:\n  name: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ include \"kube-prometheus-stack.thanosRuler.name\" . }}\n{{- include \"kube-prometheus-stack.labels\" . | indent 4 -}}\n{{- if .Values.thanosRuler.annotations }}\n  annotations:\n{{ toYaml .Values.thanosRuler.annotations | indent 4 }}\n{{- end }}\nspec:\n{{- if .Values.thanosRuler.thanosRulerSpec.image }}\n  {{- $registry := .Values.global.imageRegistry | default .Values.thanosRuler.thanosRulerSpec.image.registry -}}\n  {{- if and .Values.thanosRuler.thanosRulerSpec.image.tag .Values.thanosRuler.thanosRulerSpec.image.sha }}\n  image: \"{{ $registry }}/{{ .Values.thanosRuler.thanosRulerSpec.image.repository }}:{{ .Values.thanosRuler.thanosRulerSpec.image.tag }}@sha256:{{ .Values.thanosRuler.thanosRulerSpec.image.sha }}\"\n  {{- else if .Values.thanosRuler.thanosRulerSpec.image.sha }}\n  image: \"{{ $registry }}/{{ .Values.thanosRuler.thanosRulerSpec.image.repository }}@sha256:{{ .Values.thanosRuler.thanosRulerSpec.image.sha }}\"\n  {{- else if .Values.thanosRuler.thanosRulerSpec.image.tag }}\n  image: \"{{ $registry }}/{{ .Values.thanosRuler.thanosRulerSpec.image.repository }}:{{ .Values.thanosRuler.thanosRulerSpec.image.tag }}\"\n  {{- else }}\n  image: \"{{ $registry }}/{{ .Values.thanosRuler.thanosRulerSpec.image.repository }}\"\n  {{- end }}\n  {{- if .Values.thanosRuler.thanosRulerSpec.image.sha }}\n  sha: {{ .Values.thanosRuler.thanosRulerSpec.image.sha }}\n  {{- end }}\n{{- end }}\n  replicas: {{ .Values.thanosRuler.thanosRulerSpec.replicas }}\n  listenLocal: {{ .Values.thanosRuler.thanosRulerSpec.listenLocal }}\n  serviceAccountName: {{ template \"kube-prometheus-stack.thanosRuler.serviceAccountName\" . }}\n{{- if .Values.thanosRuler.thanosRulerSpec.externalPrefix }}\n  externalPrefix: \"{{ tpl .Values.thanosRuler.thanosRulerSpec.externalPrefix . }}\"\n{{- else if and .Values.thanosRuler.ingress.enabled .Values.thanosRuler.ingress.hosts }}\n  externalPrefix: \"http://{{ tpl (index .Values.thanosRuler.ingress.hosts 0) . }}{{ .Values.thanosRuler.thanosRulerSpec.routePrefix }}\"\n{{- else }}\n  externalPrefix: http://{{ template \"kube-prometheus-stack.thanosRuler.name\" . }}.{{ template \"kube-prometheus-stack.namespace\" . }}:{{ .Values.thanosRuler.service.port }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.nodeSelector }}\n  nodeSelector:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.nodeSelector | indent 4 }}\n{{- end }}\n  paused: {{ .Values.thanosRuler.thanosRulerSpec.paused }}\n  logFormat: {{ .Values.thanosRuler.thanosRulerSpec.logFormat | quote  }}\n  logLevel:  {{ .Values.thanosRuler.thanosRulerSpec.logLevel | quote  }}\n  retention: {{ .Values.thanosRuler.thanosRulerSpec.retention | quote  }}\n{{- if .Values.thanosRuler.thanosRulerSpec.evaluationInterval }}\n  evaluationInterval: {{ .Values.thanosRuler.thanosRulerSpec.evaluationInterval }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.ruleNamespaceSelector }}\n  ruleNamespaceSelector:\n{{ tpl (toYaml .Values.thanosRuler.thanosRulerSpec.ruleNamespaceSelector | indent 4) . }}\n{{ else }}\n  ruleNamespaceSelector: {}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.ruleSelector }}\n  ruleSelector:\n{{ tpl (toYaml .Values.thanosRuler.thanosRulerSpec.ruleSelector | indent 4) .}}\n{{- else if .Values.thanosRuler.thanosRulerSpec.ruleSelectorNilUsesHelmValues }}\n  ruleSelector:\n    matchLabels:\n      release: {{ $.Release.Name | quote }}\n{{ else }}\n  ruleSelector: {}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.alertQueryUrl }}\n  alertQueryUrl: \"{{ .Values.thanosRuler.thanosRulerSpec.alertQueryUrl }}\"\n{{- end}}\n{{- if .Values.thanosRuler.thanosRulerSpec.alertmanagersUrl }}\n  alertmanagersUrl:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.alertmanagersUrl | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.alertmanagersConfig }}\n  alertmanagersConfig:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.alertmanagersConfig | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.queryEndpoints }}\n  queryEndpoints:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.queryEndpoints | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.queryConfig }}\n  queryConfig:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.queryConfig | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.resources }}\n  resources:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.resources | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.routePrefix }}\n  routePrefix: \"{{ .Values.thanosRuler.thanosRulerSpec.routePrefix }}\"\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.securityContext }}\n  securityContext:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.securityContext | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.storage }}\n  storage:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.storage | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.objectStorageConfig }}\n  objectStorageConfig:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.objectStorageConfig | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.labels }}\n  labels:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.labels | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.objectStorageConfigFile }}\n  objectStorageConfigFile: {{ .Values.thanosRuler.thanosRulerSpec.objectStorageConfigFile }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.podMetadata }}\n  podMetadata:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.podMetadata | indent 4 }}\n{{- end }}\n{{- if or .Values.thanosRuler.thanosRulerSpec.podAntiAffinity .Values.thanosRuler.thanosRulerSpec.affinity }}\n  affinity:\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.affinity }}\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.affinity | indent 4 }}\n{{- end }}\n{{- if eq .Values.thanosRuler.thanosRulerSpec.podAntiAffinity \"hard\" }}\n    podAntiAffinity:\n      requiredDuringSchedulingIgnoredDuringExecution:\n      - topologyKey: {{ .Values.thanosRuler.thanosRulerSpec.podAntiAffinityTopologyKey }}\n        labelSelector:\n          matchExpressions:\n            - {key: app.kubernetes.io/name, operator: In, values: [thanos-ruler]}\n            - {key: thanos-ruler, operator: In, values: [{{ template \"kube-prometheus-stack.thanosRuler.name\" . }}]}\n{{- else if eq .Values.thanosRuler.thanosRulerSpec.podAntiAffinity \"soft\" }}\n    podAntiAffinity:\n      preferredDuringSchedulingIgnoredDuringExecution:\n      - weight: 100\n        podAffinityTerm:\n          topologyKey: {{ .Values.thanosRuler.thanosRulerSpec.podAntiAffinityTopologyKey }}\n          labelSelector:\n            matchExpressions:\n              - {key: app.kubernetes.io/name, operator: In, values: [thanos-ruler]}\n              - {key: thanos-ruler, operator: In, values: [{{ template \"kube-prometheus-stack.thanosRuler.name\" . }}]}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.tolerations }}\n  tolerations:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.tolerations | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.topologySpreadConstraints }}\n  topologySpreadConstraints:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.topologySpreadConstraints | indent 4 }}\n{{- end }}\n{{- if .Values.global.imagePullSecrets }}\n  imagePullSecrets:\n{{ toYaml .Values.global.imagePullSecrets | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.containers }}\n  containers:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.containers | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.initContainers }}\n  initContainers:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.initContainers | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.priorityClassName }}\n  priorityClassName: {{.Values.thanosRuler.thanosRulerSpec.priorityClassName }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.volumes }}\n  volumes:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.volumes | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.thanosRulerSpec.volumeMounts }}\n  volumeMounts:\n{{ toYaml .Values.thanosRuler.thanosRulerSpec.volumeMounts | indent 4 }}\n{{- end }}\n  portName: {{ .Values.thanosRuler.thanosRulerSpec.portName }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/thanos-ruler/service.yaml",
    "content": "{{- if .Values.thanosRuler.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n    self-monitor: {{ .Values.thanosRuler.serviceMonitor.selfMonitor | quote }}\n{{- include \"kube-prometheus-stack.labels\" . | indent 4 -}}\n{{- if .Values.thanosRuler.service.labels }}\n{{ toYaml .Values.thanosRuler.service.labels | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.service.annotations }}\n  annotations:\n{{ toYaml .Values.thanosRuler.service.annotations | indent 4 }}\n{{- end }}\nspec:\n{{- if .Values.thanosRuler.service.clusterIP }}\n  clusterIP: {{ .Values.thanosRuler.service.clusterIP }}\n{{- end }}\n{{- if .Values.thanosRuler.service.externalIPs }}\n  externalIPs:\n{{ toYaml .Values.thanosRuler.service.externalIPs | indent 4 }}\n{{- end }}\n{{- if .Values.thanosRuler.service.loadBalancerIP }}\n  loadBalancerIP: {{ .Values.thanosRuler.service.loadBalancerIP }}\n{{- end }}\n{{- if .Values.thanosRuler.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges:\n  {{- range $cidr := .Values.thanosRuler.service.loadBalancerSourceRanges }}\n    - {{ $cidr }}\n  {{- end }}\n{{- end }}\n{{- if ne .Values.thanosRuler.service.type \"ClusterIP\" }}\n  externalTrafficPolicy: {{ .Values.thanosRuler.service.externalTrafficPolicy }}\n{{- end }}\n  ports:\n  - name: {{ .Values.thanosRuler.thanosRulerSpec.portName }}\n  {{- if eq .Values.thanosRuler.service.type \"NodePort\" }}\n    nodePort: {{ .Values.thanosRuler.service.nodePort }}\n  {{- end }}\n    port: {{ .Values.thanosRuler.service.port }}\n    targetPort: {{ .Values.thanosRuler.service.targetPort }}\n    protocol: TCP\n{{- if .Values.thanosRuler.service.additionalPorts }}\n{{ toYaml .Values.thanosRuler.service.additionalPorts | indent 2 }}\n{{- end }}\n  selector:\n    app.kubernetes.io/name: thanos-ruler\n    thanos-ruler: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n  type: \"{{ .Values.thanosRuler.service.type }}\"\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/thanos-ruler/serviceaccount.yaml",
    "content": "{{- if and .Values.thanosRuler.enabled .Values.thanosRuler.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ template \"kube-prometheus-stack.thanosRuler.serviceAccountName\" . }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n    app.kubernetes.io/name: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n    app.kubernetes.io/component: thanos-ruler\n{{- include \"kube-prometheus-stack.labels\" . | indent 4 -}}\n{{- if .Values.thanosRuler.serviceAccount.annotations }}\n  annotations:\n{{ toYaml .Values.thanosRuler.serviceAccount.annotations | indent 4 }}\n{{- end }}\n{{- if .Values.global.imagePullSecrets }}\nimagePullSecrets:\n{{ toYaml .Values.global.imagePullSecrets | indent 2 }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/templates/thanos-ruler/servicemonitor.yaml",
    "content": "{{- if and .Values.thanosRuler.enabled .Values.thanosRuler.serviceMonitor.selfMonitor }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n  namespace: {{ template \"kube-prometheus-stack.namespace\" . }}\n  labels:\n    app: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n{{ include \"kube-prometheus-stack.labels\" . | indent 4 }}\n{{- with .Values.thanosRuler.serviceMonitor.additionalLabels }}\n{{- toYaml . | nindent 4 }}\n{{- end }}\nspec:\n  {{- include \"servicemonitor.scrapeLimits\" .Values.thanosRuler.serviceMonitor | nindent 2 }}\n  selector:\n    matchLabels:\n      app: {{ template \"kube-prometheus-stack.thanosRuler.name\" . }}\n      release: {{ $.Release.Name | quote }}\n      self-monitor: {{ .Values.thanosRuler.serviceMonitor.selfMonitor | quote }}\n  namespaceSelector:\n    matchNames:\n      - {{ printf \"%s\" (include \"kube-prometheus-stack.namespace\" .) | quote }}\n  endpoints:\n  - port: {{ .Values.thanosRuler.thanosRulerSpec.portName }}\n    {{- if .Values.thanosRuler.serviceMonitor.interval }}\n    interval: {{ .Values.thanosRuler.serviceMonitor.interval }}\n    {{- end }}\n    {{- if .Values.thanosRuler.serviceMonitor.proxyUrl }}\n    proxyUrl: {{ .Values.thanosRuler.serviceMonitor.proxyUrl}}\n    {{- end }}\n    {{- if .Values.thanosRuler.serviceMonitor.scheme }}\n    scheme: {{ .Values.thanosRuler.serviceMonitor.scheme }}\n    {{- end }}\n    {{- if .Values.thanosRuler.serviceMonitor.bearerTokenFile }}\n    bearerTokenFile: {{ .Values.thanosRuler.serviceMonitor.bearerTokenFile }}\n    {{- end }}\n    {{- if .Values.thanosRuler.serviceMonitor.tlsConfig }}\n    tlsConfig: {{ toYaml .Values.thanosRuler.serviceMonitor.tlsConfig | nindent 6 }}\n    {{- end }}\n    path: \"{{ trimSuffix \"/\" .Values.thanosRuler.thanosRulerSpec.routePrefix }}/metrics\"\n{{- if .Values.thanosRuler.serviceMonitor.metricRelabelings }}\n    metricRelabelings:\n{{ tpl (toYaml .Values.thanosRuler.serviceMonitor.metricRelabelings | indent 6) . }}\n{{- end }}\n{{- if .Values.thanosRuler.serviceMonitor.relabelings }}\n    relabelings:\n{{ toYaml .Values.thanosRuler.serviceMonitor.relabelings | indent 6 }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/kube-prometheus-stack/values.yaml",
    "content": "# Default values for kube-prometheus-stack.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\n## Provide a name in place of kube-prometheus-stack for `app:` labels\n##\nnameOverride: \"\"\n\n## Override the deployment namespace\n##\nnamespaceOverride: \"\"\n\n## Provide a k8s version to auto dashboard import script example: kubeTargetVersionOverride: 1.16.6\n##\nkubeTargetVersionOverride: \"\"\n\n## Allow kubeVersion to be overridden while creating the ingress\n##\nkubeVersionOverride: \"\"\n\n## Provide a name to substitute for the full names of resources\n##\nfullnameOverride: \"\"\n\n## Labels to apply to all resources\n##\ncommonLabels: {}\n# scmhash: abc123\n# myLabel: aakkmd\n\n## Install Prometheus Operator CRDs\n##\ncrds:\n  enabled: true\n\n## Create default rules for monitoring the cluster\n##\ndefaultRules:\n  create: true\n  rules:\n    alertmanager: true\n    etcd: true\n    configReloaders: true\n    general: true\n    k8s: true\n    kubeApiserverAvailability: true\n    kubeApiserverBurnrate: true\n    kubeApiserverHistogram: true\n    kubeApiserverSlos: true\n    kubeControllerManager: true\n    kubelet: true\n    kubeProxy: true\n    kubePrometheusGeneral: true\n    kubePrometheusNodeRecording: true\n    kubernetesApps: true\n    kubernetesResources: true\n    kubernetesStorage: true\n    kubernetesSystem: true\n    kubeSchedulerAlerting: true\n    kubeSchedulerRecording: true\n    kubeStateMetrics: true\n    network: true\n    node: true\n    nodeExporterAlerting: true\n    nodeExporterRecording: true\n    prometheus: true\n    prometheusOperator: true\n    windows: true\n\n  ## Reduce app namespace alert scope\n  appNamespacesTarget: \".*\"\n\n  ## Labels for default rules\n  labels: {}\n  ## Annotations for default rules\n  annotations: {}\n\n  ## Additional labels for PrometheusRule alerts\n  additionalRuleLabels: {}\n\n  ## Additional annotations for PrometheusRule alerts\n  additionalRuleAnnotations: {}\n\n  ## Additional labels for specific PrometheusRule alert groups\n  additionalRuleGroupLabels:\n    alertmanager: {}\n    etcd: {}\n    configReloaders: {}\n    general: {}\n    k8s: {}\n    kubeApiserverAvailability: {}\n    kubeApiserverBurnrate: {}\n    kubeApiserverHistogram: {}\n    kubeApiserverSlos: {}\n    kubeControllerManager: {}\n    kubelet: {}\n    kubeProxy: {}\n    kubePrometheusGeneral: {}\n    kubePrometheusNodeRecording: {}\n    kubernetesApps: {}\n    kubernetesResources: {}\n    kubernetesStorage: {}\n    kubernetesSystem: {}\n    kubeSchedulerAlerting: {}\n    kubeSchedulerRecording: {}\n    kubeStateMetrics: {}\n    network: {}\n    node: {}\n    nodeExporterAlerting: {}\n    nodeExporterRecording: {}\n    prometheus: {}\n    prometheusOperator: {}\n\n  ## Additional annotations for specific PrometheusRule alerts groups\n  additionalRuleGroupAnnotations:\n    alertmanager: {}\n    etcd: {}\n    configReloaders: {}\n    general: {}\n    k8s: {}\n    kubeApiserverAvailability: {}\n    kubeApiserverBurnrate: {}\n    kubeApiserverHistogram: {}\n    kubeApiserverSlos: {}\n    kubeControllerManager: {}\n    kubelet: {}\n    kubeProxy: {}\n    kubePrometheusGeneral: {}\n    kubePrometheusNodeRecording: {}\n    kubernetesApps: {}\n    kubernetesResources: {}\n    kubernetesStorage: {}\n    kubernetesSystem: {}\n    kubeSchedulerAlerting: {}\n    kubeSchedulerRecording: {}\n    kubeStateMetrics: {}\n    network: {}\n    node: {}\n    nodeExporterAlerting: {}\n    nodeExporterRecording: {}\n    prometheus: {}\n    prometheusOperator: {}\n\n  ## Prefix for runbook URLs. Use this to override the first part of the runbookURLs that is common to all rules.\n  runbookUrl: \"https://runbooks.prometheus-operator.dev/runbooks\"\n\n  ## Disabled PrometheusRule alerts\n  disabled: {}\n  # KubeAPIDown: true\n  # NodeRAIDDegraded: true\n\n## Deprecated way to provide custom recording or alerting rules to be deployed into the cluster.\n##\n# additionalPrometheusRules: []\n#  - name: my-rule-file\n#    groups:\n#      - name: my_group\n#        rules:\n#        - record: my_record\n#          expr: 100 * my_record\n\n## Provide custom recording or alerting rules to be deployed into the cluster.\n##\nadditionalPrometheusRulesMap: {}\n#  rule-name:\n#    groups:\n#    - name: my_group\n#      rules:\n#      - record: my_record\n#        expr: 100 * my_record\n\n##\nglobal:\n  rbac:\n    create: true\n\n    ## Create ClusterRoles that extend the existing view, edit and admin ClusterRoles to interact with prometheus-operator CRDs\n    ## Ref: https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles\n    createAggregateClusterRoles: false\n    pspEnabled: false\n    pspAnnotations: {}\n      ## Specify pod annotations\n      ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor\n      ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp\n      ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl\n      ##\n      # seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*'\n      # seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default'\n      # apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default'\n\n  ## Global image registry to use if it needs to be overriden for some specific use cases (e.g local registries, custom images, ...)\n  ##\n  imageRegistry: \"\"\n\n  ## Reference to one or more secrets to be used when pulling images\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n  ##\n  imagePullSecrets: []\n  # - name: \"image-pull-secret\"\n  # or\n  # - \"image-pull-secret\"\n\nwindowsMonitoring:\n  ## Deploys the windows-exporter and Windows-specific dashboards and rules\n  enabled: false\n  ## Job must match jobLabel in the PodMonitor/ServiceMonitor and is used for the rules\n  job: prometheus-windows-exporter\n\n## Configuration for alertmanager\n## ref: https://prometheus.io/docs/alerting/alertmanager/\n##\nalertmanager:\n\n  ## Deploy alertmanager\n  ##\n  enabled: true\n\n  ## Annotations for Alertmanager\n  ##\n  annotations: {}\n\n  ## Api that prometheus will use to communicate with alertmanager. Possible values are v1, v2\n  ##\n  apiVersion: v2\n\n  ## Service account for Alertmanager to use.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n  ##\n  serviceAccount:\n    create: true\n    name: \"\"\n    annotations: {}\n    automountServiceAccountToken: true\n\n  ## Configure pod disruption budgets for Alertmanager\n  ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget\n  ## This configuration is immutable once created and will require the PDB to be deleted to be changed\n  ## https://github.com/kubernetes/kubernetes/issues/45398\n  ##\n  podDisruptionBudget:\n    enabled: false\n    minAvailable: 1\n    maxUnavailable: \"\"\n\n  ## Alertmanager configuration directives\n  ## ref: https://prometheus.io/docs/alerting/configuration/#configuration-file\n  ##      https://prometheus.io/webtools/alerting/routing-tree-editor/\n  ##\n  config:\n    global:\n      resolve_timeout: 5m\n    inhibit_rules:\n      - source_matchers:\n          - 'severity = critical'\n        target_matchers:\n          - 'severity =~ warning|info'\n        equal:\n          - 'namespace'\n          - 'alertname'\n      - source_matchers:\n          - 'severity = warning'\n        target_matchers:\n          - 'severity = info'\n        equal:\n          - 'namespace'\n          - 'alertname'\n      - source_matchers:\n          - 'alertname = InfoInhibitor'\n        target_matchers:\n          - 'severity = info'\n        equal:\n          - 'namespace'\n    route:\n      group_by: ['namespace']\n      group_wait: 30s\n      group_interval: 5m\n      repeat_interval: 12h\n      receiver: 'null'\n      routes:\n      - receiver: 'null'\n        matchers:\n          - alertname =~ \"InfoInhibitor|Watchdog\"\n    receivers:\n    - name: 'null'\n    templates:\n    - '/etc/alertmanager/config/*.tmpl'\n\n  ## Alertmanager configuration directives (as string type, preferred over the config hash map)\n  ## stringConfig will be used only, if tplConfig is true\n  ## ref: https://prometheus.io/docs/alerting/configuration/#configuration-file\n  ##      https://prometheus.io/webtools/alerting/routing-tree-editor/\n  ##\n  stringConfig: \"\"\n\n  ## Pass the Alertmanager configuration directives through Helm's templating\n  ## engine. If the Alertmanager configuration contains Alertmanager templates,\n  ## they'll need to be properly escaped so that they are not interpreted by\n  ## Helm\n  ## ref: https://helm.sh/docs/developing_charts/#using-the-tpl-function\n  ##      https://prometheus.io/docs/alerting/configuration/#tmpl_string\n  ##      https://prometheus.io/docs/alerting/notifications/\n  ##      https://prometheus.io/docs/alerting/notification_examples/\n  tplConfig: false\n\n  ## Alertmanager template files to format alerts\n  ## By default, templateFiles are placed in /etc/alertmanager/config/ and if\n  ## they have a .tmpl file suffix will be loaded. See config.templates above\n  ## to change, add other suffixes. If adding other suffixes, be sure to update\n  ## config.templates above to include those suffixes.\n  ## ref: https://prometheus.io/docs/alerting/notifications/\n  ##      https://prometheus.io/docs/alerting/notification_examples/\n  ##\n  templateFiles: {}\n  #\n  ## An example template:\n  #   template_1.tmpl: |-\n  #       {{ define \"cluster\" }}{{ .ExternalURL | reReplaceAll \".*alertmanager\\\\.(.*)\" \"$1\" }}{{ end }}\n  #\n  #       {{ define \"slack.myorg.text\" }}\n  #       {{- $root := . -}}\n  #       {{ range .Alerts }}\n  #         *Alert:* {{ .Annotations.summary }} - `{{ .Labels.severity }}`\n  #         *Cluster:* {{ template \"cluster\" $root }}\n  #         *Description:* {{ .Annotations.description }}\n  #         *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:>\n  #         *Runbook:* <{{ .Annotations.runbook }}|:spiral_note_pad:>\n  #         *Details:*\n  #           {{ range .Labels.SortedPairs }} - *{{ .Name }}:* `{{ .Value }}`\n  #           {{ end }}\n  #       {{ end }}\n  #       {{ end }}\n\n  ingress:\n    enabled: false\n\n    # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName\n    # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress\n    # ingressClassName: nginx\n\n    annotations: {}\n\n    labels: {}\n\n    ## Override ingress to a different defined port on the service\n    # servicePort: 8081\n    ## Override ingress to a different service then the default, this is useful if you need to\n    ## point to a specific instance of the alertmanager (eg kube-prometheus-stack-alertmanager-0)\n    # serviceName: kube-prometheus-stack-alertmanager-0\n\n    ## Hosts must be provided if Ingress is enabled.\n    ##\n    hosts: []\n      # - alertmanager.domain.com\n\n    ## Paths to use for ingress rules - one path should match the alertmanagerSpec.routePrefix\n    ##\n    paths: []\n    # - /\n\n    ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched)\n    ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types\n    # pathType: ImplementationSpecific\n\n    ## TLS configuration for Alertmanager Ingress\n    ## Secret must be manually created in the namespace\n    ##\n    tls: []\n    # - secretName: alertmanager-general-tls\n    #   hosts:\n    #   - alertmanager.example.com\n\n  ## Configuration for Alertmanager secret\n  ##\n  secret:\n    annotations: {}\n\n  ## Configuration for creating an Ingress that will map to each Alertmanager replica service\n  ## alertmanager.servicePerReplica must be enabled\n  ##\n  ingressPerReplica:\n    enabled: false\n\n    # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName\n    # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress\n    # ingressClassName: nginx\n\n    annotations: {}\n    labels: {}\n\n    ## Final form of the hostname for each per replica ingress is\n    ## {{ ingressPerReplica.hostPrefix }}-{{ $replicaNumber }}.{{ ingressPerReplica.hostDomain }}\n    ##\n    ## Prefix for the per replica ingress that will have `-$replicaNumber`\n    ## appended to the end\n    hostPrefix: \"\"\n    ## Domain that will be used for the per replica ingress\n    hostDomain: \"\"\n\n    ## Paths to use for ingress rules\n    ##\n    paths: []\n    # - /\n\n    ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched)\n    ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types\n    # pathType: ImplementationSpecific\n\n    ## Secret name containing the TLS certificate for alertmanager per replica ingress\n    ## Secret must be manually created in the namespace\n    tlsSecretName: \"\"\n\n    ## Separated secret for each per replica Ingress. Can be used together with cert-manager\n    ##\n    tlsSecretPerReplica:\n      enabled: false\n      ## Final form of the secret for each per replica ingress is\n      ## {{ tlsSecretPerReplica.prefix }}-{{ $replicaNumber }}\n      ##\n      prefix: \"alertmanager\"\n\n  ## Configuration for Alertmanager service\n  ##\n  service:\n    annotations: {}\n    labels: {}\n    clusterIP: \"\"\n\n    ## Port for Alertmanager Service to listen on\n    ##\n    port: 9093\n    ## To be used with a proxy extraContainer port\n    ##\n    targetPort: 9093\n    ## Port to expose on each node\n    ## Only used if service.type is 'NodePort'\n    ##\n    nodePort: 30903\n    ## List of IP addresses at which the Prometheus server service is available\n    ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips\n    ##\n\n    ## Additional ports to open for Alertmanager service\n    additionalPorts: []\n    # additionalPorts:\n    # - name: authenticated\n    #   port: 8081\n    #   targetPort: 8081\n\n    externalIPs: []\n    loadBalancerIP: \"\"\n    loadBalancerSourceRanges: []\n\n    ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints\n    ##\n    externalTrafficPolicy: Cluster\n\n    ## If you want to make sure that connections from a particular client are passed to the same Pod each time\n    ## Accepts 'ClientIP' or ''\n    ##\n    sessionAffinity: \"\"\n\n    ## Service type\n    ##\n    type: ClusterIP\n\n  ## Configuration for creating a separate Service for each statefulset Alertmanager replica\n  ##\n  servicePerReplica:\n    enabled: false\n    annotations: {}\n\n    ## Port for Alertmanager Service per replica to listen on\n    ##\n    port: 9093\n\n    ## To be used with a proxy extraContainer port\n    targetPort: 9093\n\n    ## Port to expose on each node\n    ## Only used if servicePerReplica.type is 'NodePort'\n    ##\n    nodePort: 30904\n\n    ## Loadbalancer source IP ranges\n    ## Only used if servicePerReplica.type is \"LoadBalancer\"\n    loadBalancerSourceRanges: []\n\n    ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints\n    ##\n    externalTrafficPolicy: Cluster\n\n    ## Service type\n    ##\n    type: ClusterIP\n\n  ## If true, create a serviceMonitor for alertmanager\n  ##\n  serviceMonitor:\n    ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n    ##\n    interval: \"\"\n    selfMonitor: true\n\n    ## Additional labels\n    ##\n    additionalLabels: {}\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n    ## proxyUrl: URL of a proxy that should be used for scraping.\n    ##\n    proxyUrl: \"\"\n\n    ## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS.\n    scheme: \"\"\n\n    ## enableHttp2: Whether to enable HTTP2.\n    ## See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint\n    enableHttp2: true\n\n    ## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS.\n    ## Of type: https://github.com/coreos/prometheus-operator/blob/main/Documentation/api.md#tlsconfig\n    tlsConfig: {}\n\n    bearerTokenFile:\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    metricRelabelings: []\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    relabelings: []\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n  ## Settings affecting alertmanagerSpec\n  ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#alertmanagerspec\n  ##\n  alertmanagerSpec:\n    ## Standard object's metadata. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata\n    ## Metadata Labels and Annotations gets propagated to the Alertmanager pods.\n    ##\n    podMetadata: {}\n\n    ## Image of Alertmanager\n    ##\n    image:\n      registry: quay.io\n      repository: prometheus/alertmanager\n      tag: v0.25.0\n      sha: \"\"\n\n    ## If true then the user will be responsible to provide a secret with alertmanager configuration\n    ## So when true the config part will be ignored (including templateFiles) and the one in the secret will be used\n    ##\n    useExistingSecret: false\n\n    ## Secrets is a list of Secrets in the same namespace as the Alertmanager object, which shall be mounted into the\n    ## Alertmanager Pods. The Secrets are mounted into /etc/alertmanager/secrets/.\n    ##\n    secrets: []\n\n    ## ConfigMaps is a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods.\n    ## The ConfigMaps are mounted into /etc/alertmanager/configmaps/.\n    ##\n    configMaps: []\n\n    ## ConfigSecret is the name of a Kubernetes Secret in the same namespace as the Alertmanager object, which contains configuration for\n    ## this Alertmanager instance. Defaults to 'alertmanager-' The secret is mounted into /etc/alertmanager/config.\n    ##\n    # configSecret:\n\n    ## WebTLSConfig defines the TLS parameters for HTTPS\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#alertmanagerwebspec\n    web: {}\n\n    ## AlertmanagerConfigs to be selected to merge and configure Alertmanager with.\n    ##\n    alertmanagerConfigSelector: {}\n    ## Example which selects all alertmanagerConfig resources\n    ## with label \"alertconfig\" with values any of \"example-config\" or \"example-config-2\"\n    # alertmanagerConfigSelector:\n    #   matchExpressions:\n    #     - key: alertconfig\n    #       operator: In\n    #       values:\n    #         - example-config\n    #         - example-config-2\n    #\n    ## Example which selects all alertmanagerConfig resources with label \"role\" set to \"example-config\"\n    # alertmanagerConfigSelector:\n    #   matchLabels:\n    #     role: example-config\n\n    ## Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace.\n    ##\n    alertmanagerConfigNamespaceSelector: {}\n    ## Example which selects all namespaces\n    ## with label \"alertmanagerconfig\" with values any of \"example-namespace\" or \"example-namespace-2\"\n    # alertmanagerConfigNamespaceSelector:\n    #   matchExpressions:\n    #     - key: alertmanagerconfig\n    #       operator: In\n    #       values:\n    #         - example-namespace\n    #         - example-namespace-2\n\n    ## Example which selects all namespaces with label \"alertmanagerconfig\" set to \"enabled\"\n    # alertmanagerConfigNamespaceSelector:\n    #   matchLabels:\n    #     alertmanagerconfig: enabled\n\n    ## AlermanagerConfig to be used as top level configuration\n    ##\n    alertmanagerConfiguration: {}\n    ## Example with select a global alertmanagerconfig\n    # alertmanagerConfiguration:\n    #   name: global-alertmanager-Configuration\n\n    ## Defines the strategy used by AlertmanagerConfig objects to match alerts. eg:\n    ##\n    alertmanagerConfigMatcherStrategy: {}\n    ## Example with use OnNamespace strategy\n    # alertmanagerConfigMatcherStrategy:\n    #   type: OnNamespace\n\n    ## Define Log Format\n    # Use logfmt (default) or json logging\n    logFormat: logfmt\n\n    ## Log level for Alertmanager to be configured with.\n    ##\n    logLevel: info\n\n    ## Size is the expected size of the alertmanager cluster. The controller will eventually make the size of the\n    ## running cluster equal to the expected size.\n    replicas: 1\n\n    ## Time duration Alertmanager shall retain data for. Default is '120h', and must match the regular expression\n    ## [0-9]+(ms|s|m|h) (milliseconds seconds minutes hours).\n    ##\n    retention: 120h\n\n    ## Storage is the definition of how storage will be used by the Alertmanager instances.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/storage.md\n    ##\n    storage: {}\n    # volumeClaimTemplate:\n    #   spec:\n    #     storageClassName: gluster\n    #     accessModes: [\"ReadWriteOnce\"]\n    #     resources:\n    #       requests:\n    #         storage: 50Gi\n    #     selector: {}\n\n\n    ## The external URL the Alertmanager instances will be available under. This is necessary to generate correct URLs. This is necessary if Alertmanager is not served from root of a DNS name. string  false\n    ##\n    externalUrl:\n\n    ## The route prefix Alertmanager registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true,\n    ## but the server serves requests under a different route prefix. For example for use with kubectl proxy.\n    ##\n    routePrefix: /\n\n    ## scheme: HTTP scheme to use. Can be used with `tlsConfig` for example if using istio mTLS.\n    scheme: \"\"\n\n    ## tlsConfig: TLS configuration to use when connect to the endpoint. For example if using istio mTLS.\n    ## Of type: https://github.com/coreos/prometheus-operator/blob/main/Documentation/api.md#tlsconfig\n    tlsConfig: {}\n\n    ## If set to true all actions on the underlying managed objects are not going to be performed, except for delete actions.\n    ##\n    paused: false\n\n    ## Define which Nodes the Pods are scheduled on.\n    ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n    ##\n    nodeSelector: {}\n\n    ## Define resources requests and limits for single Pods.\n    ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n    ##\n    resources: {}\n    # requests:\n    #   memory: 400Mi\n\n    ## Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node.\n    ## The default value \"soft\" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided.\n    ## The value \"hard\" means that the scheduler is *required* to not schedule two replica pods onto the same node.\n    ## The value \"\" will disable pod anti-affinity so that no anti-affinity rules will be configured.\n    ##\n    podAntiAffinity: \"\"\n\n    ## If anti-affinity is enabled sets the topologyKey to use for anti-affinity.\n    ## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone\n    ##\n    podAntiAffinityTopologyKey: kubernetes.io/hostname\n\n    ## Assign custom affinity rules to the alertmanager instance\n    ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n    ##\n    affinity: {}\n    # nodeAffinity:\n    #   requiredDuringSchedulingIgnoredDuringExecution:\n    #     nodeSelectorTerms:\n    #     - matchExpressions:\n    #       - key: kubernetes.io/e2e-az-name\n    #         operator: In\n    #         values:\n    #         - e2e-az1\n    #         - e2e-az2\n\n    ## If specified, the pod's tolerations.\n    ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n    ##\n    tolerations: []\n    # - key: \"key\"\n    #   operator: \"Equal\"\n    #   value: \"value\"\n    #   effect: \"NoSchedule\"\n\n    ## If specified, the pod's topology spread constraints.\n    ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n    ##\n    topologySpreadConstraints: []\n    # - maxSkew: 1\n    #   topologyKey: topology.kubernetes.io/zone\n    #   whenUnsatisfiable: DoNotSchedule\n    #   labelSelector:\n    #     matchLabels:\n    #       app: alertmanager\n\n    ## SecurityContext holds pod-level security attributes and common container settings.\n    ## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext  false\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n    ##\n    securityContext:\n      runAsGroup: 2000\n      runAsNonRoot: true\n      runAsUser: 1000\n      fsGroup: 2000\n      seccompProfile:\n        type: RuntimeDefault\n\n    ## ListenLocal makes the Alertmanager server listen on loopback, so that it does not bind against the Pod IP.\n    ## Note this is only for the Alertmanager UI, not the gossip communication.\n    ##\n    listenLocal: false\n\n    ## Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to an Alertmanager pod.\n    ##\n    containers: []\n    # containers:\n    # - name: oauth-proxy\n    #   image: quay.io/oauth2-proxy/oauth2-proxy:v7.3.0\n    #   args:\n    #   - --upstream=http://127.0.0.1:9093\n    #   - --http-address=0.0.0.0:8081\n    #   - ...\n    #   ports:\n    #   - containerPort: 8081\n    #     name: oauth-proxy\n    #     protocol: TCP\n    #   resources: {}\n\n    # Additional volumes on the output StatefulSet definition.\n    volumes: []\n\n    # Additional VolumeMounts on the output StatefulSet definition.\n    volumeMounts: []\n\n    ## InitContainers allows injecting additional initContainers. This is meant to allow doing some changes\n    ## (permissions, dir tree) on mounted volumes before starting prometheus\n    initContainers: []\n\n    ## Priority class assigned to the Pods\n    ##\n    priorityClassName: \"\"\n\n    ## AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster.\n    ##\n    additionalPeers: []\n\n    ## PortName to use for Alert Manager.\n    ##\n    portName: \"http-web\"\n\n    ## ClusterAdvertiseAddress is the explicit address to advertise in cluster. Needs to be provided for non RFC1918 [1] (public) addresses. [1] RFC1918: https://tools.ietf.org/html/rfc1918\n    ##\n    clusterAdvertiseAddress: false\n\n    ## clusterGossipInterval determines interval between gossip attempts.\n    ## Needs to be specified as GoDuration, a time duration that can be parsed by Go’s time.ParseDuration() (e.g. 45ms, 30s, 1m, 1h20m15s)\n    clusterGossipInterval: \"\"\n\n    ## clusterPeerTimeout determines timeout for cluster peering.\n    ## Needs to be specified as GoDuration, a time duration that can be parsed by Go’s time.ParseDuration() (e.g. 45ms, 30s, 1m, 1h20m15s)\n    clusterPeerTimeout: \"\"\n\n    ## clusterPushpullInterval determines interval between pushpull attempts.\n    ## Needs to be specified as GoDuration, a time duration that can be parsed by Go’s time.ParseDuration() (e.g. 45ms, 30s, 1m, 1h20m15s)\n    clusterPushpullInterval: \"\"\n\n    ## ForceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica.\n    ## Use case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each.\n    forceEnableClusterMode: false\n\n    ## Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to\n    ## be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).\n    minReadySeconds: 0\n\n  ## ExtraSecret can be used to store various data in an extra secret\n  ## (use it for example to store hashed basic auth credentials)\n  extraSecret:\n    ## if not set, name will be auto generated\n    # name: \"\"\n    annotations: {}\n    data: {}\n  #   auth: |\n  #     foo:$apr1$OFG3Xybp$ckL0FHDAkoXYIlH9.cysT0\n  #     someoneelse:$apr1$DMZX2Z4q$6SbQIfyuLQd.xmo/P0m2c.\n\n## Using default values from https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml\n##\ngrafana:\n  enabled: true\n  namespaceOverride: \"\"\n\n  ## ForceDeployDatasources Create datasource configmap even if grafana deployment has been disabled\n  ##\n  forceDeployDatasources: false\n\n  ## ForceDeployDashboard Create dashboard configmap even if grafana deployment has been disabled\n  ##\n  forceDeployDashboards: false\n\n  ## Deploy default dashboards\n  ##\n  defaultDashboardsEnabled: true\n\n  ## Timezone for the default dashboards\n  ## Other options are: browser or a specific timezone, i.e. Europe/Luxembourg\n  ##\n  defaultDashboardsTimezone: utc\n\n  adminPassword: prom-operator\n\n  rbac:\n    ## If true, Grafana PSPs will be created\n    ##\n    pspEnabled: false\n\n  ingress:\n    ## If true, Grafana Ingress will be created\n    ##\n    enabled: false\n\n    ## IngressClassName for Grafana Ingress.\n    ## Should be provided if Ingress is enable.\n    ##\n    # ingressClassName: nginx\n\n    ## Annotations for Grafana Ingress\n    ##\n    annotations: {}\n      # kubernetes.io/ingress.class: nginx\n      # kubernetes.io/tls-acme: \"true\"\n\n    ## Labels to be added to the Ingress\n    ##\n    labels: {}\n\n    ## Hostnames.\n    ## Must be provided if Ingress is enable.\n    ##\n    # hosts:\n    #   - grafana.domain.com\n    hosts: []\n\n    ## Path for grafana ingress\n    path: /\n\n    ## TLS configuration for grafana Ingress\n    ## Secret must be manually created in the namespace\n    ##\n    tls: []\n    # - secretName: grafana-general-tls\n    #   hosts:\n    #   - grafana.example.com\n\n  sidecar:\n    dashboards:\n      enabled: true\n      label: grafana_dashboard\n      labelValue: \"1\"\n      # Allow discovery in all namespaces for dashboards\n      searchNamespace: ALL\n\n      ## Annotations for Grafana dashboard configmaps\n      ##\n      annotations: {}\n      multicluster:\n        global:\n          enabled: false\n        etcd:\n          enabled: false\n      provider:\n        allowUiUpdates: false\n    datasources:\n      enabled: true\n      defaultDatasourceEnabled: true\n      isDefaultDatasource: true\n\n      uid: prometheus\n\n      ## URL of prometheus datasource\n      ##\n      # url: http://prometheus-stack-prometheus:9090/\n\n      ## Prometheus request timeout in seconds\n      # timeout: 30\n\n      # If not defined, will use prometheus.prometheusSpec.scrapeInterval or its default\n      # defaultDatasourceScrapeInterval: 15s\n\n      ## Annotations for Grafana datasource configmaps\n      ##\n      annotations: {}\n\n      ## Set method for HTTP to send query to datasource\n      httpMethod: POST\n\n      ## Create datasource for each Pod of Prometheus StatefulSet;\n      ## this uses headless service `prometheus-operated` which is\n      ## created by Prometheus Operator\n      ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/0fee93e12dc7c2ea1218f19ae25ec6b893460590/pkg/prometheus/statefulset.go#L255-L286\n      createPrometheusReplicasDatasources: false\n      label: grafana_datasource\n      labelValue: \"1\"\n\n      ## Field with internal link pointing to existing data source in Grafana.\n      ## Can be provisioned via additionalDataSources\n      exemplarTraceIdDestinations: {}\n        # datasourceUid: Jaeger\n        # traceIdLabelName: trace_id\n      alertmanager:\n        enabled: true\n        uid: alertmanager\n        handleGrafanaManagedAlerts: false\n        implementation: prometheus\n\n  extraConfigmapMounts: []\n  # - name: certs-configmap\n  #   mountPath: /etc/grafana/ssl/\n  #   configMap: certs-configmap\n  #   readOnly: true\n\n  deleteDatasources: []\n  # - name: example-datasource\n  #   orgId: 1\n\n  ## Configure additional grafana datasources (passed through tpl)\n  ## ref: http://docs.grafana.org/administration/provisioning/#datasources\n  additionalDataSources: []\n  # - name: prometheus-sample\n  #   access: proxy\n  #   basicAuth: true\n  #   basicAuthPassword: pass\n  #   basicAuthUser: daco\n  #   editable: false\n  #   jsonData:\n  #       tlsSkipVerify: true\n  #   orgId: 1\n  #   type: prometheus\n  #   url: https://{{ printf \"%s-prometheus.svc\" .Release.Name }}:9090\n  #   version: 1\n\n  ## Passed to grafana subchart and used by servicemonitor below\n  ##\n  service:\n    portName: http-web\n\n  serviceMonitor:\n    # If true, a ServiceMonitor CRD is created for a prometheus operator\n    # https://github.com/coreos/prometheus-operator\n    #\n    enabled: true\n\n    # Path to use for scraping metrics. Might be different if server.root_url is set\n    # in grafana.ini\n    path: \"/metrics\"\n\n    #  namespace: monitoring  (defaults to use the namespace this chart is deployed to)\n\n    # labels for the ServiceMonitor\n    labels: {}\n\n    # Scrape interval. If not set, the Prometheus default scrape interval is used.\n    #\n    interval: \"\"\n    scheme: http\n    tlsConfig: {}\n    scrapeTimeout: 30s\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    relabelings: []\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n## Flag to disable all the kubernetes component scrapers\n##\nkubernetesServiceMonitors:\n  enabled: true\n\n## Component scraping the kube api server\n##\nkubeApiServer:\n  enabled: true\n  tlsConfig:\n    serverName: kubernetes\n    insecureSkipVerify: false\n  serviceMonitor:\n    ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n    ##\n    interval: \"\"\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n    ## proxyUrl: URL of a proxy that should be used for scraping.\n    ##\n    proxyUrl: \"\"\n\n    jobLabel: component\n    selector:\n      matchLabels:\n        component: apiserver\n        provider: kubernetes\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    metricRelabelings:\n      # Drop excessively noisy apiserver buckets.\n      - action: drop\n        regex: apiserver_request_duration_seconds_bucket;(0.15|0.2|0.3|0.35|0.4|0.45|0.6|0.7|0.8|0.9|1.25|1.5|1.75|2|3|3.5|4|4.5|6|7|8|9|15|25|40|50)\n        sourceLabels:\n          - __name__\n          - le\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    relabelings: []\n    # - sourceLabels:\n    #     - __meta_kubernetes_namespace\n    #     - __meta_kubernetes_service_name\n    #     - __meta_kubernetes_endpoint_port_name\n    #   action: keep\n    #   regex: default;kubernetes;https\n    # - targetLabel: __address__\n    #   replacement: kubernetes.default.svc:443\n\n    ## Additional labels\n    ##\n    additionalLabels: {}\n    #  foo: bar\n\n## Component scraping the kubelet and kubelet-hosted cAdvisor\n##\nkubelet:\n  enabled: true\n  namespace: kube-system\n\n  serviceMonitor:\n    ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n    ##\n    interval: \"\"\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n    ## proxyUrl: URL of a proxy that should be used for scraping.\n    ##\n    proxyUrl: \"\"\n\n    ## Enable scraping the kubelet over https. For requirements to enable this see\n    ## https://github.com/prometheus-operator/prometheus-operator/issues/926\n    ##\n    https: true\n\n    ## Enable scraping /metrics/cadvisor from kubelet's service\n    ##\n    cAdvisor: true\n\n    ## Enable scraping /metrics/probes from kubelet's service\n    ##\n    probes: true\n\n    ## Enable scraping /metrics/resource from kubelet's service\n    ## This is disabled by default because container metrics are already exposed by cAdvisor\n    ##\n    resource: false\n    # From kubernetes 1.18, /metrics/resource/v1alpha1 renamed to /metrics/resource\n    resourcePath: \"/metrics/resource/v1alpha1\"\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    cAdvisorMetricRelabelings:\n      # Drop less useful container CPU metrics.\n      - sourceLabels: [__name__]\n        action: drop\n        regex: 'container_cpu_(cfs_throttled_seconds_total|load_average_10s|system_seconds_total|user_seconds_total)'\n      # Drop less useful container / always zero filesystem metrics.\n      - sourceLabels: [__name__]\n        action: drop\n        regex: 'container_fs_(io_current|io_time_seconds_total|io_time_weighted_seconds_total|reads_merged_total|sector_reads_total|sector_writes_total|writes_merged_total)'\n      # Drop less useful / always zero container memory metrics.\n      - sourceLabels: [__name__]\n        action: drop\n        regex: 'container_memory_(mapped_file|swap)'\n      # Drop less useful container process metrics.\n      - sourceLabels: [__name__]\n        action: drop\n        regex: 'container_(file_descriptors|tasks_state|threads_max)'\n      # Drop container spec metrics that overlap with kube-state-metrics.\n      - sourceLabels: [__name__]\n        action: drop\n        regex: 'container_spec.*'\n      # Drop cgroup metrics with no pod.\n      - sourceLabels: [id, pod]\n        action: drop\n        regex: '.+;'\n    # - sourceLabels: [__name__, image]\n    #   separator: ;\n    #   regex: container_([a-z_]+);\n    #   replacement: $1\n    #   action: drop\n    # - sourceLabels: [__name__]\n    #   separator: ;\n    #   regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)\n    #   replacement: $1\n    #   action: drop\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    probesMetricRelabelings: []\n    # - sourceLabels: [__name__, image]\n    #   separator: ;\n    #   regex: container_([a-z_]+);\n    #   replacement: $1\n    #   action: drop\n    # - sourceLabels: [__name__]\n    #   separator: ;\n    #   regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)\n    #   replacement: $1\n    #   action: drop\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    ## metrics_path is required to match upstream rules and charts\n    cAdvisorRelabelings:\n      - action: replace\n        sourceLabels: [__metrics_path__]\n        targetLabel: metrics_path\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    probesRelabelings:\n      - action: replace\n        sourceLabels: [__metrics_path__]\n        targetLabel: metrics_path\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    resourceRelabelings:\n      - action: replace\n        sourceLabels: [__metrics_path__]\n        targetLabel: metrics_path\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    metricRelabelings: []\n    # - sourceLabels: [__name__, image]\n    #   separator: ;\n    #   regex: container_([a-z_]+);\n    #   replacement: $1\n    #   action: drop\n    # - sourceLabels: [__name__]\n    #   separator: ;\n    #   regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)\n    #   replacement: $1\n    #   action: drop\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    ## metrics_path is required to match upstream rules and charts\n    relabelings:\n      - action: replace\n        sourceLabels: [__metrics_path__]\n        targetLabel: metrics_path\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n    ## Additional labels\n    ##\n    additionalLabels: {}\n    #  foo: bar\n\n## Component scraping the kube controller manager\n##\nkubeControllerManager:\n  enabled: true\n\n  ## If your kube controller manager is not deployed as a pod, specify IPs it can be found on\n  ##\n  endpoints: []\n  # - 10.141.4.22\n  # - 10.141.4.23\n  # - 10.141.4.24\n\n  ## If using kubeControllerManager.endpoints only the port and targetPort are used\n  ##\n  service:\n    enabled: true\n    ## If null or unset, the value is determined dynamically based on target Kubernetes version due to change\n    ## of default port in Kubernetes 1.22.\n    ##\n    port: null\n    targetPort: null\n    # selector:\n    #   component: kube-controller-manager\n\n  serviceMonitor:\n    enabled: true\n    ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n    ##\n    interval: \"\"\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n    ## proxyUrl: URL of a proxy that should be used for scraping.\n    ##\n    proxyUrl: \"\"\n\n    ## Enable scraping kube-controller-manager over https.\n    ## Requires proper certs (not self-signed) and delegated authentication/authorization checks.\n    ## If null or unset, the value is determined dynamically based on target Kubernetes version.\n    ##\n    https: null\n\n    # Skip TLS certificate validation when scraping\n    insecureSkipVerify: null\n\n    # Name of the server to use when validating TLS certificate\n    serverName: null\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    metricRelabelings: []\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    relabelings: []\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n    ## Additional labels\n    ##\n    additionalLabels: {}\n    #  foo: bar\n\n## Component scraping coreDns. Use either this or kubeDns\n##\ncoreDns:\n  enabled: true\n  service:\n    port: 9153\n    targetPort: 9153\n    # selector:\n    #   k8s-app: kube-dns\n  serviceMonitor:\n    ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n    ##\n    interval: \"\"\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n    ## proxyUrl: URL of a proxy that should be used for scraping.\n    ##\n    proxyUrl: \"\"\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    metricRelabelings: []\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    relabelings: []\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n    ## Additional labels\n    ##\n    additionalLabels: {}\n    #  foo: bar\n\n## Component scraping kubeDns. Use either this or coreDns\n##\nkubeDns:\n  enabled: false\n  service:\n    dnsmasq:\n      port: 10054\n      targetPort: 10054\n    skydns:\n      port: 10055\n      targetPort: 10055\n    # selector:\n    #   k8s-app: kube-dns\n  serviceMonitor:\n    ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n    ##\n    interval: \"\"\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n    ## proxyUrl: URL of a proxy that should be used for scraping.\n    ##\n    proxyUrl: \"\"\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    metricRelabelings: []\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    relabelings: []\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    dnsmasqMetricRelabelings: []\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    dnsmasqRelabelings: []\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n    ## Additional labels\n    ##\n    additionalLabels: {}\n    #  foo: bar\n\n## Component scraping etcd\n##\nkubeEtcd:\n  enabled: true\n\n  ## If your etcd is not deployed as a pod, specify IPs it can be found on\n  ##\n  endpoints: []\n  # - 10.141.4.22\n  # - 10.141.4.23\n  # - 10.141.4.24\n\n  ## Etcd service. If using kubeEtcd.endpoints only the port and targetPort are used\n  ##\n  service:\n    enabled: true\n    port: 2381\n    targetPort: 2381\n    # selector:\n    #   component: etcd\n\n  ## Configure secure access to the etcd cluster by loading a secret into prometheus and\n  ## specifying security configuration below. For example, with a secret named etcd-client-cert\n  ##\n  ## serviceMonitor:\n  ##   scheme: https\n  ##   insecureSkipVerify: false\n  ##   serverName: localhost\n  ##   caFile: /etc/prometheus/secrets/etcd-client-cert/etcd-ca\n  ##   certFile: /etc/prometheus/secrets/etcd-client-cert/etcd-client\n  ##   keyFile: /etc/prometheus/secrets/etcd-client-cert/etcd-client-key\n  ##\n  serviceMonitor:\n    enabled: true\n    ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n    ##\n    interval: \"\"\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n    ## proxyUrl: URL of a proxy that should be used for scraping.\n    ##\n    proxyUrl: \"\"\n    scheme: http\n    insecureSkipVerify: false\n    serverName: \"\"\n    caFile: \"\"\n    certFile: \"\"\n    keyFile: \"\"\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    metricRelabelings: []\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    relabelings: []\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n    ## Additional labels\n    ##\n    additionalLabels: {}\n    #  foo: bar\n\n## Component scraping kube scheduler\n##\nkubeScheduler:\n  enabled: true\n\n  ## If your kube scheduler is not deployed as a pod, specify IPs it can be found on\n  ##\n  endpoints: []\n  # - 10.141.4.22\n  # - 10.141.4.23\n  # - 10.141.4.24\n\n  ## If using kubeScheduler.endpoints only the port and targetPort are used\n  ##\n  service:\n    enabled: true\n    ## If null or unset, the value is determined dynamically based on target Kubernetes version due to change\n    ## of default port in Kubernetes 1.23.\n    ##\n    port: null\n    targetPort: null\n    # selector:\n    #   component: kube-scheduler\n\n  serviceMonitor:\n    enabled: true\n    ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n    ##\n    interval: \"\"\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n    ## proxyUrl: URL of a proxy that should be used for scraping.\n    ##\n    proxyUrl: \"\"\n    ## Enable scraping kube-scheduler over https.\n    ## Requires proper certs (not self-signed) and delegated authentication/authorization checks.\n    ## If null or unset, the value is determined dynamically based on target Kubernetes version.\n    ##\n    https: null\n\n    ## Skip TLS certificate validation when scraping\n    insecureSkipVerify: null\n\n    ## Name of the server to use when validating TLS certificate\n    serverName: null\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    metricRelabelings: []\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    relabelings: []\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n    ## Additional labels\n    ##\n    additionalLabels: {}\n    #  foo: bar\n\n## Component scraping kube proxy\n##\nkubeProxy:\n  enabled: true\n\n  ## If your kube proxy is not deployed as a pod, specify IPs it can be found on\n  ##\n  endpoints: []\n  # - 10.141.4.22\n  # - 10.141.4.23\n  # - 10.141.4.24\n\n  service:\n    enabled: true\n    port: 10249\n    targetPort: 10249\n    # selector:\n    #   k8s-app: kube-proxy\n\n  serviceMonitor:\n    enabled: true\n    ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n    ##\n    interval: \"\"\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n    ## proxyUrl: URL of a proxy that should be used for scraping.\n    ##\n    proxyUrl: \"\"\n\n    ## Enable scraping kube-proxy over https.\n    ## Requires proper certs (not self-signed) and delegated authentication/authorization checks\n    ##\n    https: false\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    metricRelabelings: []\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    relabelings: []\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    ## Additional labels\n    ##\n    additionalLabels: {}\n    #  foo: bar\n\n## Component scraping kube state metrics\n##\nkubeStateMetrics:\n  enabled: true\n\n## Configuration for kube-state-metrics subchart\n##\nkube-state-metrics:\n  namespaceOverride: \"\"\n  rbac:\n    create: true\n  releaseLabel: true\n  prometheus:\n    monitor:\n      enabled: true\n\n      ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n      ##\n      interval: \"\"\n\n      ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n      ##\n      sampleLimit: 0\n\n      ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n      ##\n      targetLimit: 0\n\n      ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n      ##\n      labelLimit: 0\n\n      ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n      ##\n      labelNameLengthLimit: 0\n\n      ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n      ##\n      labelValueLengthLimit: 0\n\n      ## Scrape Timeout. If not set, the Prometheus default scrape timeout is used.\n      ##\n      scrapeTimeout: \"\"\n\n      ## proxyUrl: URL of a proxy that should be used for scraping.\n      ##\n      proxyUrl: \"\"\n\n      # Keep labels from scraped data, overriding server-side labels\n      ##\n      honorLabels: true\n\n      ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n      ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n      ##\n      metricRelabelings: []\n      # - action: keep\n      #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n      #   sourceLabels: [__name__]\n\n      ## RelabelConfigs to apply to samples before scraping\n      ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n      ##\n      relabelings: []\n      # - sourceLabels: [__meta_kubernetes_pod_node_name]\n      #   separator: ;\n      #   regex: ^(.*)$\n      #   targetLabel: nodename\n      #   replacement: $1\n      #   action: replace\n\n  selfMonitor:\n    enabled: false\n\n## Deploy node exporter as a daemonset to all nodes\n##\nnodeExporter:\n  enabled: true\n\n## Configuration for prometheus-node-exporter subchart\n##\nprometheus-node-exporter:\n  namespaceOverride: \"\"\n  podLabels:\n    ## Add the 'node-exporter' label to be used by serviceMonitor to match standard common usage in rules and grafana dashboards\n    ##\n    jobLabel: node-exporter\n  releaseLabel: true\n  extraArgs:\n    - --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)($|/)\n    - --collector.filesystem.fs-types-exclude=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$\n  service:\n    portName: http-metrics\n  prometheus:\n    monitor:\n      enabled: true\n\n      jobLabel: jobLabel\n\n      ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n      ##\n      interval: \"\"\n\n      ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n      ##\n      sampleLimit: 0\n\n      ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n      ##\n      targetLimit: 0\n\n      ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n      ##\n      labelLimit: 0\n\n      ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n      ##\n      labelNameLengthLimit: 0\n\n      ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n      ##\n      labelValueLengthLimit: 0\n\n      ## How long until a scrape request times out. If not set, the Prometheus default scape timeout is used.\n      ##\n      scrapeTimeout: \"\"\n\n      ## proxyUrl: URL of a proxy that should be used for scraping.\n      ##\n      proxyUrl: \"\"\n\n      ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n      ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n      ##\n      metricRelabelings: []\n      # - sourceLabels: [__name__]\n      #   separator: ;\n      #   regex: ^node_mountstats_nfs_(event|operations|transport)_.+\n      #   replacement: $1\n      #   action: drop\n\n      ## RelabelConfigs to apply to samples before scraping\n      ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n      ##\n      relabelings: []\n      # - sourceLabels: [__meta_kubernetes_pod_node_name]\n      #   separator: ;\n      #   regex: ^(.*)$\n      #   targetLabel: nodename\n      #   replacement: $1\n      #   action: replace\n  rbac:\n    ## If true, create PSPs for node-exporter\n    ##\n    pspEnabled: false\n\n## Manages Prometheus and Alertmanager components\n##\nprometheusOperator:\n  enabled: true\n\n  ## Number of old replicasets to retain ##\n  ## The default value is 10, 0 will garbage-collect old replicasets ##\n  revisionHistoryLimit: 10\n\n  ## Prometheus-Operator v0.39.0 and later support TLS natively.\n  ##\n  tls:\n    enabled: true\n    # Value must match version names from https://golang.org/pkg/crypto/tls/#pkg-constants\n    tlsMinVersion: VersionTLS13\n    # The default webhook port is 10250 in order to work out-of-the-box in GKE private clusters and avoid adding firewall rules.\n    internalPort: 10250\n\n  ## Admission webhook support for PrometheusRules resources added in Prometheus Operator 0.30 can be enabled to prevent incorrectly formatted\n  ## rules from making their way into prometheus and potentially preventing the container from starting\n  admissionWebhooks:\n    ## Valid values: Fail, Ignore, IgnoreOnInstallOnly\n    ## IgnoreOnInstallOnly - If Release.IsInstall returns \"true\", set \"Ignore\" otherwise \"Fail\"\n    failurePolicy: \"\"\n    ## The default timeoutSeconds is 10 and the maximum value is 30.\n    timeoutSeconds: 10\n    enabled: true\n    ## A PEM encoded CA bundle which will be used to validate the webhook's server certificate.\n    ## If unspecified, system trust roots on the apiserver are used.\n    caBundle: \"\"\n    ## If enabled, generate a self-signed certificate, then patch the webhook configurations with the generated data.\n    ## On chart upgrades (or if the secret exists) the cert will not be re-generated. You can use this to provide your own\n    ## certs ahead of time if you wish.\n    ##\n    annotations: {}\n    #   argocd.argoproj.io/hook: PreSync\n    #   argocd.argoproj.io/hook-delete-policy: HookSucceeded\n    patch:\n      enabled: true\n      image:\n        registry: registry.k8s.io\n        repository: ingress-nginx/kube-webhook-certgen\n        tag: v20221220-controller-v1.5.1-58-g787ea74b6\n        sha: \"\"\n        pullPolicy: IfNotPresent\n      resources: {}\n      ## Provide a priority class name to the webhook patching job\n      ##\n      priorityClassName: \"\"\n      annotations: {}\n      #   argocd.argoproj.io/hook: PreSync\n      #   argocd.argoproj.io/hook-delete-policy: HookSucceeded\n      podAnnotations: {}\n      nodeSelector: {}\n      affinity: {}\n      tolerations: []\n\n      ## SecurityContext holds pod-level security attributes and common container settings.\n      ## This defaults to non root user with uid 2000 and gid 2000. *v1.PodSecurityContext  false\n      ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n      ##\n      securityContext:\n        runAsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n        seccompProfile:\n          type: RuntimeDefault\n\n    # Security context for create job container\n    createSecretJob:\n      securityContext:\n        allowPrivilegeEscalation: false\n        readOnlyRootFilesystem: true\n        capabilities:\n          drop:\n          - ALL\n\n      # Security context for patch job container\n    patchWebhookJob:\n      securityContext:\n        allowPrivilegeEscalation: false\n        readOnlyRootFilesystem: true\n        capabilities:\n          drop:\n          - ALL\n\n    # Use certmanager to generate webhook certs\n    certManager:\n      enabled: false\n      # self-signed root certificate\n      rootCert:\n        duration: \"\"  # default to be 5y\n      admissionCert:\n        duration: \"\"  # default to be 1y\n      # issuerRef:\n      #   name: \"issuer\"\n      #   kind: \"ClusterIssuer\"\n\n  ## Namespaces to scope the interaction of the Prometheus Operator and the apiserver (allow list).\n  ## This is mutually exclusive with denyNamespaces. Setting this to an empty object will disable the configuration\n  ##\n  namespaces: {}\n    # releaseNamespace: true\n    # additional:\n    # - kube-system\n\n  ## Namespaces not to scope the interaction of the Prometheus Operator (deny list).\n  ##\n  denyNamespaces: []\n\n  ## Filter namespaces to look for prometheus-operator custom resources\n  ##\n  alertmanagerInstanceNamespaces: []\n  alertmanagerConfigNamespaces: []\n  prometheusInstanceNamespaces: []\n  thanosRulerInstanceNamespaces: []\n\n  ## The clusterDomain value will be added to the cluster.peer option of the alertmanager.\n  ## Without this specified option cluster.peer will have value alertmanager-monitoring-alertmanager-0.alertmanager-operated:9094 (default value)\n  ## With this specified option cluster.peer will have value alertmanager-monitoring-alertmanager-0.alertmanager-operated.namespace.svc.cluster-domain:9094\n  ##\n  # clusterDomain: \"cluster.local\"\n\n  networkPolicy:\n    ## Enable creation of NetworkPolicy resources.\n    ##\n    enabled: false\n\n    ## Flavor of the network policy to use.\n    #  Can be:\n    #  * kubernetes for networking.k8s.io/v1/NetworkPolicy\n    #  * cilium     for cilium.io/v2/CiliumNetworkPolicy\n    flavor: kubernetes\n\n    # cilium:\n    #   egress:\n\n    ## match labels used in selector\n    # matchLabels: {}\n\n  ## Service account for Prometheus Operator to use.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n  ##\n  serviceAccount:\n    create: true\n    name: \"\"\n\n  ## Configuration for Prometheus operator service\n  ##\n  service:\n    annotations: {}\n    labels: {}\n    clusterIP: \"\"\n\n  ## Port to expose on each node\n  ## Only used if service.type is 'NodePort'\n  ##\n    nodePort: 30080\n\n    nodePortTls: 30443\n\n  ## Additional ports to open for Prometheus service\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#multi-port-services\n  ##\n    additionalPorts: []\n\n  ## Loadbalancer IP\n  ## Only use if service.type is \"LoadBalancer\"\n  ##\n    loadBalancerIP: \"\"\n    loadBalancerSourceRanges: []\n\n    ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints\n    ##\n    externalTrafficPolicy: Cluster\n\n  ## Service type\n  ## NodePort, ClusterIP, LoadBalancer\n  ##\n    type: ClusterIP\n\n    ## List of IP addresses at which the Prometheus server service is available\n    ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips\n    ##\n    externalIPs: []\n\n  # ## Labels to add to the operator deployment\n  # ##\n  labels: {}\n\n  ## Annotations to add to the operator deployment\n  ##\n  annotations: {}\n\n  ## Labels to add to the operator pod\n  ##\n  podLabels: {}\n\n  ## Annotations to add to the operator pod\n  ##\n  podAnnotations: {}\n\n  ## Assign a PriorityClassName to pods if set\n  # priorityClassName: \"\"\n\n  ## Define Log Format\n  # Use logfmt (default) or json logging\n  # logFormat: logfmt\n\n  ## Decrease log verbosity to errors only\n  # logLevel: error\n\n  ## If true, the operator will create and maintain a service for scraping kubelets\n  ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/helm/prometheus-operator/README.md\n  ##\n  kubeletService:\n    enabled: true\n    namespace: kube-system\n    ## Use '{{ template \"kube-prometheus-stack.fullname\" . }}-kubelet' by default\n    name: \"\"\n\n  ## Create a servicemonitor for the operator\n  ##\n  serviceMonitor:\n    ## Labels for ServiceMonitor\n    additionalLabels: {}\n\n    ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n    ##\n    interval: \"\"\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n    ## Scrape timeout. If not set, the Prometheus default scrape timeout is used.\n    scrapeTimeout: \"\"\n    selfMonitor: true\n\n    ## Metric relabel configs to apply to samples before ingestion.\n    ##\n    metricRelabelings: []\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    #   relabel configs to apply to samples before ingestion.\n    ##\n    relabelings: []\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n  ## Resource limits & requests\n  ##\n  resources: {}\n  # limits:\n  #   cpu: 200m\n  #   memory: 200Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 100Mi\n\n  # Required for use in managed kubernetes clusters (such as AWS EKS) with custom CNI (such as calico),\n  # because control-plane managed by AWS cannot communicate with pods' IP CIDR and admission webhooks are not working\n  ##\n  hostNetwork: false\n\n  ## Define which Nodes the Pods are scheduled on.\n  ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n  ##\n  nodeSelector: {}\n\n  ## Tolerations for use with node taints\n  ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  ##\n  tolerations: []\n  # - key: \"key\"\n  #   operator: \"Equal\"\n  #   value: \"value\"\n  #   effect: \"NoSchedule\"\n\n  ## Assign custom affinity rules to the prometheus operator\n  ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n  ##\n  affinity: {}\n    # nodeAffinity:\n    #   requiredDuringSchedulingIgnoredDuringExecution:\n    #     nodeSelectorTerms:\n    #     - matchExpressions:\n    #       - key: kubernetes.io/e2e-az-name\n    #         operator: In\n    #         values:\n    #         - e2e-az1\n    #         - e2e-az2\n  dnsConfig: {}\n    # nameservers:\n    #   - 1.2.3.4\n    # searches:\n    #   - ns1.svc.cluster-domain.example\n    #   - my.dns.search.suffix\n    # options:\n    #   - name: ndots\n    #     value: \"2\"\n  #   - name: edns0\n  securityContext:\n    fsGroup: 65534\n    runAsGroup: 65534\n    runAsNonRoot: true\n    runAsUser: 65534\n    seccompProfile:\n      type: RuntimeDefault\n\n  ## Container-specific security context configuration\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n  ##\n  containerSecurityContext:\n    allowPrivilegeEscalation: false\n    readOnlyRootFilesystem: true\n    capabilities:\n      drop:\n      - ALL\n\n  # Enable vertical pod autoscaler support for prometheus-operator\n  verticalPodAutoscaler:\n    enabled: false\n\n    # Recommender responsible for generating recommendation for the object.\n    # List should be empty (then the default recommender will generate the recommendation)\n    # or contain exactly one recommender.\n    # recommenders:\n    # - name: custom-recommender-performance\n\n    # List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory\n    controlledResources: []\n    # Specifies which resource values should be controlled: RequestsOnly or RequestsAndLimits.\n    # controlledValues: RequestsAndLimits\n\n    # Define the max allowed resources for the pod\n    maxAllowed: {}\n    # cpu: 200m\n    # memory: 100Mi\n    # Define the min allowed resources for the pod\n    minAllowed: {}\n    # cpu: 200m\n    # memory: 100Mi\n\n    updatePolicy:\n      # Specifies minimal number of replicas which need to be alive for VPA Updater to attempt pod eviction\n      # minReplicas: 1\n      # Specifies whether recommended updates are applied when a Pod is started and whether recommended updates\n      # are applied during the life of a Pod. Possible values are \"Off\", \"Initial\", \"Recreate\", and \"Auto\".\n      updateMode: Auto\n\n  ## Prometheus-operator image\n  ##\n  image:\n    registry: quay.io\n    repository: prometheus-operator/prometheus-operator\n    # if not set appVersion field from Chart.yaml is used\n    tag: \"\"\n    sha: \"\"\n    pullPolicy: IfNotPresent\n\n  ## Prometheus image to use for prometheuses managed by the operator\n  ##\n  # prometheusDefaultBaseImage: prometheus/prometheus\n\n  ## Prometheus image registry to use for prometheuses managed by the operator\n  ##\n  # prometheusDefaultBaseImageRegistry: quay.io\n\n  ## Alertmanager image to use for alertmanagers managed by the operator\n  ##\n  # alertmanagerDefaultBaseImage: prometheus/alertmanager\n\n  ## Alertmanager image registry to use for alertmanagers managed by the operator\n  ##\n  # alertmanagerDefaultBaseImageRegistry: quay.io\n\n  ## Prometheus-config-reloader\n  ##\n  prometheusConfigReloader:\n    image:\n      registry: quay.io\n      repository: prometheus-operator/prometheus-config-reloader\n      # if not set appVersion field from Chart.yaml is used\n      tag: \"\"\n      sha: \"\"\n\n    # add prometheus config reloader liveness and readiness probe. Default: false\n    enableProbe: false\n\n    # resource config for prometheusConfigReloader\n    resources:\n      requests:\n        cpu: 200m\n        memory: 50Mi\n      limits:\n        cpu: 200m\n        memory: 50Mi\n\n  ## Thanos side-car image when configured\n  ##\n  thanosImage:\n    registry: quay.io\n    repository: thanos/thanos\n    tag: v0.31.0\n    sha: \"\"\n\n  ## Set a Label Selector to filter watched prometheus and prometheusAgent\n  ##\n  prometheusInstanceSelector: \"\"\n\n  ## Set a Label Selector to filter watched alertmanager\n  ##\n  alertmanagerInstanceSelector: \"\"\n\n  ## Set a Label Selector to filter watched thanosRuler\n  thanosRulerInstanceSelector: \"\"\n\n  ## Set a Field Selector to filter watched secrets\n  ##\n  secretFieldSelector: \"type!=kubernetes.io/dockercfg,type!=kubernetes.io/service-account-token,type!=helm.sh/release.v1\"\n\n## Deploy a Prometheus instance\n##\nprometheus:\n  enabled: true\n\n  ## Toggle prometheus into agent mode\n  ## Note many of features described below (e.g. rules, query, alerting, remote read, thanos) will not work in agent mode.\n  ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/designs/prometheus-agent.md\n  ##\n  agentMode: false\n\n  ## Annotations for Prometheus\n  ##\n  annotations: {}\n\n  ## Configure network policy for the prometheus\n  networkPolicy:\n    enabled: false\n\n    ## Flavor of the network policy to use.\n    #  Can be:\n    #  * kubernetes for networking.k8s.io/v1/NetworkPolicy\n    #  * cilium     for cilium.io/v2/CiliumNetworkPolicy\n    flavor: kubernetes\n\n    # cilium:\n    #   endpointSelector:\n    #   egress:\n    #   ingress:\n\n    # egress:\n    # - {}\n    # ingress:\n    # - {}\n    # podSelector:\n    #   matchLabels:\n    #     app: prometheus\n\n  ## Service account for Prometheuses to use.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n  ##\n  serviceAccount:\n    create: true\n    name: \"\"\n    annotations: {}\n\n  # Service for thanos service discovery on sidecar\n  # Enable this can make Thanos Query can use\n  # `--store=dnssrv+_grpc._tcp.${kube-prometheus-stack.fullname}-thanos-discovery.${namespace}.svc.cluster.local` to discovery\n  # Thanos sidecar on prometheus nodes\n  # (Please remember to change ${kube-prometheus-stack.fullname} and ${namespace}. Not just copy and paste!)\n  thanosService:\n    enabled: false\n    annotations: {}\n    labels: {}\n\n    ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints\n    ##\n    externalTrafficPolicy: Cluster\n\n    ## Service type\n    ##\n    type: ClusterIP\n\n    ## gRPC port config\n    portName: grpc\n    port: 10901\n    targetPort: \"grpc\"\n\n    ## HTTP port config (for metrics)\n    httpPortName: http\n    httpPort: 10902\n    targetHttpPort: \"http\"\n\n    ## ClusterIP to assign\n    # Default is to make this a headless service (\"None\")\n    clusterIP: \"None\"\n\n    ## Port to expose on each node, if service type is NodePort\n    ##\n    nodePort: 30901\n    httpNodePort: 30902\n\n  # ServiceMonitor to scrape Sidecar metrics\n  # Needs thanosService to be enabled as well\n  thanosServiceMonitor:\n    enabled: false\n    interval: \"\"\n\n    ## Additional labels\n    ##\n    additionalLabels: {}\n\n    ## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS.\n    scheme: \"\"\n\n    ## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS.\n    ## Of type: https://github.com/coreos/prometheus-operator/blob/main/Documentation/api.md#tlsconfig\n    tlsConfig: {}\n\n    bearerTokenFile:\n\n    ## Metric relabel configs to apply to samples before ingestion.\n    metricRelabelings: []\n\n    ## relabel configs to apply to samples before ingestion.\n    relabelings: []\n\n  # Service for external access to sidecar\n  # Enabling this creates a service to expose thanos-sidecar outside the cluster.\n  thanosServiceExternal:\n    enabled: false\n    annotations: {}\n    labels: {}\n    loadBalancerIP: \"\"\n    loadBalancerSourceRanges: []\n\n    ## gRPC port config\n    portName: grpc\n    port: 10901\n    targetPort: \"grpc\"\n\n    ## HTTP port config (for metrics)\n    httpPortName: http\n    httpPort: 10902\n    targetHttpPort: \"http\"\n\n    ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints\n    ##\n    externalTrafficPolicy: Cluster\n\n    ## Service type\n    ##\n    type: LoadBalancer\n\n    ## Port to expose on each node\n    ##\n    nodePort: 30901\n    httpNodePort: 30902\n\n  ## Configuration for Prometheus service\n  ##\n  service:\n    annotations: {}\n    labels: {}\n    clusterIP: \"\"\n\n    ## Port for Prometheus Service to listen on\n    ##\n    port: 9090\n\n    ## To be used with a proxy extraContainer port\n    targetPort: 9090\n\n    ## List of IP addresses at which the Prometheus server service is available\n    ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips\n    ##\n    externalIPs: []\n\n    ## Port to expose on each node\n    ## Only used if service.type is 'NodePort'\n    ##\n    nodePort: 30090\n\n    ## Loadbalancer IP\n    ## Only use if service.type is \"LoadBalancer\"\n    loadBalancerIP: \"\"\n    loadBalancerSourceRanges: []\n\n    ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints\n    ##\n    externalTrafficPolicy: Cluster\n\n    ## Service type\n    ##\n    type: ClusterIP\n\n    ## Additional port to define in the Service\n    additionalPorts: []\n    # additionalPorts:\n    # - name: authenticated\n    #   port: 8081\n    #   targetPort: 8081\n\n    ## Consider that all endpoints are considered \"ready\" even if the Pods themselves are not\n    ## Ref: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/#ServiceSpec\n    publishNotReadyAddresses: false\n\n    sessionAffinity: \"\"\n\n  ## Configuration for creating a separate Service for each statefulset Prometheus replica\n  ##\n  servicePerReplica:\n    enabled: false\n    annotations: {}\n\n    ## Port for Prometheus Service per replica to listen on\n    ##\n    port: 9090\n\n    ## To be used with a proxy extraContainer port\n    targetPort: 9090\n\n    ## Port to expose on each node\n    ## Only used if servicePerReplica.type is 'NodePort'\n    ##\n    nodePort: 30091\n\n    ## Loadbalancer source IP ranges\n    ## Only used if servicePerReplica.type is \"LoadBalancer\"\n    loadBalancerSourceRanges: []\n\n    ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints\n    ##\n    externalTrafficPolicy: Cluster\n\n    ## Service type\n    ##\n    type: ClusterIP\n\n  ## Configure pod disruption budgets for Prometheus\n  ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget\n  ## This configuration is immutable once created and will require the PDB to be deleted to be changed\n  ## https://github.com/kubernetes/kubernetes/issues/45398\n  ##\n  podDisruptionBudget:\n    enabled: false\n    minAvailable: 1\n    maxUnavailable: \"\"\n\n  # Ingress exposes thanos sidecar outside the cluster\n  thanosIngress:\n    enabled: false\n\n    # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName\n    # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress\n    # ingressClassName: nginx\n\n    annotations: {}\n    labels: {}\n    servicePort: 10901\n\n    ## Port to expose on each node\n    ## Only used if service.type is 'NodePort'\n    ##\n    nodePort: 30901\n\n    ## Hosts must be provided if Ingress is enabled.\n    ##\n    hosts: []\n      # - thanos-gateway.domain.com\n\n    ## Paths to use for ingress rules\n    ##\n    paths: []\n    # - /\n\n    ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched)\n    ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types\n    # pathType: ImplementationSpecific\n\n    ## TLS configuration for Thanos Ingress\n    ## Secret must be manually created in the namespace\n    ##\n    tls: []\n    # - secretName: thanos-gateway-tls\n    #   hosts:\n    #   - thanos-gateway.domain.com\n    #\n\n  ## ExtraSecret can be used to store various data in an extra secret\n  ## (use it for example to store hashed basic auth credentials)\n  extraSecret:\n    ## if not set, name will be auto generated\n    # name: \"\"\n    annotations: {}\n    data: {}\n  #   auth: |\n  #     foo:$apr1$OFG3Xybp$ckL0FHDAkoXYIlH9.cysT0\n  #     someoneelse:$apr1$DMZX2Z4q$6SbQIfyuLQd.xmo/P0m2c.\n\n  ingress:\n    enabled: false\n\n    # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName\n    # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress\n    # ingressClassName: nginx\n\n    annotations: {}\n    labels: {}\n\n    ## Redirect ingress to an additional defined port on the service\n    # servicePort: 8081\n\n    ## Hostnames.\n    ## Must be provided if Ingress is enabled.\n    ##\n    # hosts:\n    #   - prometheus.domain.com\n    hosts: []\n\n    ## Paths to use for ingress rules - one path should match the prometheusSpec.routePrefix\n    ##\n    paths: []\n    # - /\n\n    ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched)\n    ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types\n    # pathType: ImplementationSpecific\n\n    ## TLS configuration for Prometheus Ingress\n    ## Secret must be manually created in the namespace\n    ##\n    tls: []\n      # - secretName: prometheus-general-tls\n      #   hosts:\n      #     - prometheus.example.com\n\n  ## Configuration for creating an Ingress that will map to each Prometheus replica service\n  ## prometheus.servicePerReplica must be enabled\n  ##\n  ingressPerReplica:\n    enabled: false\n\n    # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName\n    # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress\n    # ingressClassName: nginx\n\n    annotations: {}\n    labels: {}\n\n    ## Final form of the hostname for each per replica ingress is\n    ## {{ ingressPerReplica.hostPrefix }}-{{ $replicaNumber }}.{{ ingressPerReplica.hostDomain }}\n    ##\n    ## Prefix for the per replica ingress that will have `-$replicaNumber`\n    ## appended to the end\n    hostPrefix: \"\"\n    ## Domain that will be used for the per replica ingress\n    hostDomain: \"\"\n\n    ## Paths to use for ingress rules\n    ##\n    paths: []\n    # - /\n\n    ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched)\n    ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types\n    # pathType: ImplementationSpecific\n\n    ## Secret name containing the TLS certificate for Prometheus per replica ingress\n    ## Secret must be manually created in the namespace\n    tlsSecretName: \"\"\n\n    ## Separated secret for each per replica Ingress. Can be used together with cert-manager\n    ##\n    tlsSecretPerReplica:\n      enabled: false\n      ## Final form of the secret for each per replica ingress is\n      ## {{ tlsSecretPerReplica.prefix }}-{{ $replicaNumber }}\n      ##\n      prefix: \"prometheus\"\n\n  ## Configure additional options for default pod security policy for Prometheus\n  ## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/\n  podSecurityPolicy:\n    allowedCapabilities: []\n    allowedHostPaths: []\n    volumes: []\n\n  serviceMonitor:\n    ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n    ##\n    interval: \"\"\n    selfMonitor: true\n\n    ## Additional labels\n    ##\n    additionalLabels: {}\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n    ## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS.\n    scheme: \"\"\n\n    ## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS.\n    ## Of type: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#tlsconfig\n    tlsConfig: {}\n\n    bearerTokenFile:\n\n    ## Metric relabel configs to apply to samples before ingestion.\n    ##\n    metricRelabelings: []\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    #   relabel configs to apply to samples before ingestion.\n    ##\n    relabelings: []\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n  ## Settings affecting prometheusSpec\n  ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#prometheusspec\n  ##\n  prometheusSpec:\n    ## If true, pass --storage.tsdb.max-block-duration=2h to prometheus. This is already done if using Thanos\n    ##\n    disableCompaction: false\n    ## APIServerConfig\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#apiserverconfig\n    ##\n    apiserverConfig: {}\n\n    ## Allows setting additional arguments for the Prometheus container\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.Prometheus\n    additionalArgs: []\n\n    ## Interval between consecutive scrapes.\n    ## Defaults to 30s.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/release-0.44/pkg/prometheus/promcfg.go#L180-L183\n    ##\n    scrapeInterval: \"\"\n\n    ## Number of seconds to wait for target to respond before erroring\n    ##\n    scrapeTimeout: \"\"\n\n    ## Interval between consecutive evaluations.\n    ##\n    evaluationInterval: \"\"\n\n    ## ListenLocal makes the Prometheus server listen on loopback, so that it does not bind against the Pod IP.\n    ##\n    listenLocal: false\n\n    ## EnableAdminAPI enables Prometheus the administrative HTTP API which includes functionality such as deleting time series.\n    ## This is disabled by default.\n    ## ref: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis\n    ##\n    enableAdminAPI: false\n\n    ## Sets version of Prometheus overriding the Prometheus version as derived\n    ## from the image tag. Useful in cases where the tag does not follow semver v2.\n    version: \"\"\n\n    ## WebTLSConfig defines the TLS parameters for HTTPS\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#webtlsconfig\n    web: {}\n\n    ## Exemplars related settings that are runtime reloadable.\n    ## It requires to enable the exemplar storage feature to be effective.\n    exemplars: \"\"\n      ## Maximum number of exemplars stored in memory for all series.\n      ## If not set, Prometheus uses its default value.\n      ## A value of zero or less than zero disables the storage.\n      # maxSize: 100000\n\n    # EnableFeatures API enables access to Prometheus disabled features.\n    # ref: https://prometheus.io/docs/prometheus/latest/disabled_features/\n    enableFeatures: []\n    # - exemplar-storage\n\n    ## Image of Prometheus.\n    ##\n    image:\n      registry: quay.io\n      repository: prometheus/prometheus\n      tag: v2.45.0\n      sha: \"\"\n\n    ## Tolerations for use with node taints\n    ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n    ##\n    tolerations: []\n    #  - key: \"key\"\n    #    operator: \"Equal\"\n    #    value: \"value\"\n    #    effect: \"NoSchedule\"\n\n    ## If specified, the pod's topology spread constraints.\n    ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n    ##\n    topologySpreadConstraints: []\n    # - maxSkew: 1\n    #   topologyKey: topology.kubernetes.io/zone\n    #   whenUnsatisfiable: DoNotSchedule\n    #   labelSelector:\n    #     matchLabels:\n    #       app: prometheus\n\n    ## Alertmanagers to which alerts will be sent\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#alertmanagerendpoints\n    ##\n    ## Default configuration will connect to the alertmanager deployed as part of this release\n    ##\n    alertingEndpoints: []\n    # - name: \"\"\n    #   namespace: \"\"\n    #   port: http\n    #   scheme: http\n    #   pathPrefix: \"\"\n    #   tlsConfig: {}\n    #   bearerTokenFile: \"\"\n    #   apiVersion: v2\n\n    ## External labels to add to any time series or alerts when communicating with external systems\n    ##\n    externalLabels: {}\n\n    ## enable --web.enable-remote-write-receiver flag on prometheus-server\n    ##\n    enableRemoteWriteReceiver: false\n\n    ## Name of the external label used to denote replica name\n    ##\n    replicaExternalLabelName: \"\"\n\n    ## If true, the Operator won't add the external label used to denote replica name\n    ##\n    replicaExternalLabelNameClear: false\n\n    ## Name of the external label used to denote Prometheus instance name\n    ##\n    prometheusExternalLabelName: \"\"\n\n    ## If true, the Operator won't add the external label used to denote Prometheus instance name\n    ##\n    prometheusExternalLabelNameClear: false\n\n    ## External URL at which Prometheus will be reachable.\n    ##\n    externalUrl: \"\"\n\n    ## Define which Nodes the Pods are scheduled on.\n    ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n    ##\n    nodeSelector: {}\n\n    ## Secrets is a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods.\n    ## The Secrets are mounted into /etc/prometheus/secrets/. Secrets changes after initial creation of a Prometheus object are not\n    ## reflected in the running Pods. To change the secrets mounted into the Prometheus Pods, the object must be deleted and recreated\n    ## with the new list of secrets.\n    ##\n    secrets: []\n\n    ## ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods.\n    ## The ConfigMaps are mounted into /etc/prometheus/configmaps/.\n    ##\n    configMaps: []\n\n    ## QuerySpec defines the query command line flags when starting Prometheus.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#queryspec\n    ##\n    query: {}\n\n    ## If nil, select own namespace. Namespaces to be selected for PrometheusRules discovery.\n    ruleNamespaceSelector: {}\n    ## Example which selects PrometheusRules in namespaces with label \"prometheus\" set to \"somelabel\"\n    # ruleNamespaceSelector:\n    #   matchLabels:\n    #     prometheus: somelabel\n\n    ## If true, a nil or {} value for prometheus.prometheusSpec.ruleSelector will cause the\n    ## prometheus resource to be created with selectors based on values in the helm deployment,\n    ## which will also match the PrometheusRule resources created\n    ##\n    ruleSelectorNilUsesHelmValues: true\n\n    ## PrometheusRules to be selected for target discovery.\n    ## If {}, select all PrometheusRules\n    ##\n    ruleSelector: {}\n    ## Example which select all PrometheusRules resources\n    ## with label \"prometheus\" with values any of \"example-rules\" or \"example-rules-2\"\n    # ruleSelector:\n    #   matchExpressions:\n    #     - key: prometheus\n    #       operator: In\n    #       values:\n    #         - example-rules\n    #         - example-rules-2\n    #\n    ## Example which select all PrometheusRules resources with label \"role\" set to \"example-rules\"\n    # ruleSelector:\n    #   matchLabels:\n    #     role: example-rules\n\n    ## If true, a nil or {} value for prometheus.prometheusSpec.serviceMonitorSelector will cause the\n    ## prometheus resource to be created with selectors based on values in the helm deployment,\n    ## which will also match the servicemonitors created\n    ##\n    serviceMonitorSelectorNilUsesHelmValues: true\n\n    ## ServiceMonitors to be selected for target discovery.\n    ## If {}, select all ServiceMonitors\n    ##\n    serviceMonitorSelector: {}\n    ## Example which selects ServiceMonitors with label \"prometheus\" set to \"somelabel\"\n    # serviceMonitorSelector:\n    #   matchLabels:\n    #     prometheus: somelabel\n\n    ## Namespaces to be selected for ServiceMonitor discovery.\n    ##\n    serviceMonitorNamespaceSelector: {}\n    ## Example which selects ServiceMonitors in namespaces with label \"prometheus\" set to \"somelabel\"\n    # serviceMonitorNamespaceSelector:\n    #   matchLabels:\n    #     prometheus: somelabel\n\n    ## If true, a nil or {} value for prometheus.prometheusSpec.podMonitorSelector will cause the\n    ## prometheus resource to be created with selectors based on values in the helm deployment,\n    ## which will also match the podmonitors created\n    ##\n    podMonitorSelectorNilUsesHelmValues: true\n\n    ## PodMonitors to be selected for target discovery.\n    ## If {}, select all PodMonitors\n    ##\n    podMonitorSelector: {}\n    ## Example which selects PodMonitors with label \"prometheus\" set to \"somelabel\"\n    # podMonitorSelector:\n    #   matchLabels:\n    #     prometheus: somelabel\n\n    ## If nil, select own namespace. Namespaces to be selected for PodMonitor discovery.\n    podMonitorNamespaceSelector: {}\n    ## Example which selects PodMonitor in namespaces with label \"prometheus\" set to \"somelabel\"\n    # podMonitorNamespaceSelector:\n    #   matchLabels:\n    #     prometheus: somelabel\n\n    ## If true, a nil or {} value for prometheus.prometheusSpec.probeSelector will cause the\n    ## prometheus resource to be created with selectors based on values in the helm deployment,\n    ## which will also match the probes created\n    ##\n    probeSelectorNilUsesHelmValues: true\n\n    ## Probes to be selected for target discovery.\n    ## If {}, select all Probes\n    ##\n    probeSelector: {}\n    ## Example which selects Probes with label \"prometheus\" set to \"somelabel\"\n    # probeSelector:\n    #   matchLabels:\n    #     prometheus: somelabel\n\n    ## If nil, select own namespace. Namespaces to be selected for Probe discovery.\n    probeNamespaceSelector: {}\n    ## Example which selects Probe in namespaces with label \"prometheus\" set to \"somelabel\"\n    # probeNamespaceSelector:\n    #   matchLabels:\n    #     prometheus: somelabel\n\n    ## If true, a nil or {} value for prometheus.prometheusSpec.scrapeConfigSelector will cause the\n    ## prometheus resource to be created with selectors based on values in the helm deployment,\n    ## which will also match the scrapeConfigs created\n    ##\n    scrapeConfigSelectorNilUsesHelmValues: true\n\n    ## scrapeConfigs to be selected for target discovery.\n    ## If {}, select all scrapeConfigs\n    ##\n    scrapeConfigSelector: {}\n    ## Example which selects scrapeConfigs with label \"prometheus\" set to \"somelabel\"\n    # scrapeConfig:\n    #   matchLabels:\n    #     prometheus: somelabel\n\n    ## If nil, select own namespace. Namespaces to be selected for scrapeConfig discovery.\n    scrapeConfigNamespaceSelector: {}\n    ## Example which selects scrapeConfig in namespaces with label \"prometheus\" set to \"somelabel\"\n    # scrapeConfigNamespaceSelector:\n    #   matchLabels:\n    #     prometheus: somelabel\n\n    ## How long to retain metrics\n    ##\n    retention: 10d\n\n    ## Maximum size of metrics\n    ##\n    retentionSize: \"\"\n\n    ## Allow out-of-order/out-of-bounds samples ingested into Prometheus for a specified duration\n    ## See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#tsdb\n    tsdb:\n      outOfOrderTimeWindow: 0s\n\n    ## Enable compression of the write-ahead log using Snappy.\n    ##\n    walCompression: true\n\n    ## If true, the Operator won't process any Prometheus configuration changes\n    ##\n    paused: false\n\n    ## Number of replicas of each shard to deploy for a Prometheus deployment.\n    ## Number of replicas multiplied by shards is the total number of Pods created.\n    ##\n    replicas: 1\n\n    ## EXPERIMENTAL: Number of shards to distribute targets onto.\n    ## Number of replicas multiplied by shards is the total number of Pods created.\n    ## Note that scaling down shards will not reshard data onto remaining instances, it must be manually moved.\n    ## Increasing shards will not reshard data either but it will continue to be available from the same instances.\n    ## To query globally use Thanos sidecar and Thanos querier or remote write data to a central location.\n    ## Sharding is done on the content of the `__address__` target meta-label.\n    ##\n    shards: 1\n\n    ## Log level for Prometheus be configured in\n    ##\n    logLevel: info\n\n    ## Log format for Prometheus be configured in\n    ##\n    logFormat: logfmt\n\n    ## Prefix used to register routes, overriding externalUrl route.\n    ## Useful for proxies that rewrite URLs.\n    ##\n    routePrefix: /\n\n    ## Standard object's metadata. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata\n    ## Metadata Labels and Annotations gets propagated to the prometheus pods.\n    ##\n    podMetadata: {}\n    # labels:\n    #   app: prometheus\n    #   k8s-app: prometheus\n\n    ## Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node.\n    ## The default value \"soft\" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided.\n    ## The value \"hard\" means that the scheduler is *required* to not schedule two replica pods onto the same node.\n    ## The value \"\" will disable pod anti-affinity so that no anti-affinity rules will be configured.\n    podAntiAffinity: \"\"\n\n    ## If anti-affinity is enabled sets the topologyKey to use for anti-affinity.\n    ## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone\n    ##\n    podAntiAffinityTopologyKey: kubernetes.io/hostname\n\n    ## Assign custom affinity rules to the prometheus instance\n    ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n    ##\n    affinity: {}\n    # nodeAffinity:\n    #   requiredDuringSchedulingIgnoredDuringExecution:\n    #     nodeSelectorTerms:\n    #     - matchExpressions:\n    #       - key: kubernetes.io/e2e-az-name\n    #         operator: In\n    #         values:\n    #         - e2e-az1\n    #         - e2e-az2\n\n    ## The remote_read spec configuration for Prometheus.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#remotereadspec\n    remoteRead: []\n    # - url: http://remote1/read\n    ## additionalRemoteRead is appended to remoteRead\n    additionalRemoteRead: []\n\n    ## The remote_write spec configuration for Prometheus.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#remotewritespec\n    remoteWrite: []\n    # - url: http://remote1/push\n    ## additionalRemoteWrite is appended to remoteWrite\n    additionalRemoteWrite: []\n\n    ## Enable/Disable Grafana dashboards provisioning for prometheus remote write feature\n    remoteWriteDashboards: false\n\n    ## Resource limits & requests\n    ##\n    resources: {}\n    # requests:\n    #   memory: 400Mi\n\n    ## Prometheus StorageSpec for persistent data\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/storage.md\n    ##\n    storageSpec: {}\n    ## Using PersistentVolumeClaim\n    ##\n    #  volumeClaimTemplate:\n    #    spec:\n    #      storageClassName: gluster\n    #      accessModes: [\"ReadWriteOnce\"]\n    #      resources:\n    #        requests:\n    #          storage: 50Gi\n    #    selector: {}\n\n    ## Using tmpfs volume\n    ##\n    #  emptyDir:\n    #    medium: Memory\n\n    # Additional volumes on the output StatefulSet definition.\n    volumes: []\n\n    # Additional VolumeMounts on the output StatefulSet definition.\n    volumeMounts: []\n\n    ## AdditionalScrapeConfigs allows specifying additional Prometheus scrape configurations. Scrape configurations\n    ## are appended to the configurations generated by the Prometheus Operator. Job configurations must have the form\n    ## as specified in the official Prometheus documentation:\n    ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are\n    ## appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility\n    ## to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible\n    ## scrape configs are going to break Prometheus after the upgrade.\n    ## AdditionalScrapeConfigs can be defined as a list or as a templated string.\n    ##\n    ## The scrape configuration example below will find master nodes, provided they have the name .*mst.*, relabel the\n    ## port to 2379 and allow etcd scraping provided it is running on all Kubernetes master nodes\n    ##\n    additionalScrapeConfigs: []\n    # - job_name: kube-etcd\n    #   kubernetes_sd_configs:\n    #     - role: node\n    #   scheme: https\n    #   tls_config:\n    #     ca_file:   /etc/prometheus/secrets/etcd-client-cert/etcd-ca\n    #     cert_file: /etc/prometheus/secrets/etcd-client-cert/etcd-client\n    #     key_file:  /etc/prometheus/secrets/etcd-client-cert/etcd-client-key\n    #   relabel_configs:\n    #   - action: labelmap\n    #     regex: __meta_kubernetes_node_label_(.+)\n    #   - source_labels: [__address__]\n    #     action: replace\n    #     targetLabel: __address__\n    #     regex: ([^:;]+):(\\d+)\n    #     replacement: ${1}:2379\n    #   - source_labels: [__meta_kubernetes_node_name]\n    #     action: keep\n    #     regex: .*mst.*\n    #   - source_labels: [__meta_kubernetes_node_name]\n    #     action: replace\n    #     targetLabel: node\n    #     regex: (.*)\n    #     replacement: ${1}\n    #   metric_relabel_configs:\n    #   - regex: (kubernetes_io_hostname|failure_domain_beta_kubernetes_io_region|beta_kubernetes_io_os|beta_kubernetes_io_arch|beta_kubernetes_io_instance_type|failure_domain_beta_kubernetes_io_zone)\n    #     action: labeldrop\n    #\n    ## If scrape config contains a repetitive section, you may want to use a template.\n    ## In the following example, you can see how to define `gce_sd_configs` for multiple zones\n    # additionalScrapeConfigs: |\n    #  - job_name: \"node-exporter\"\n    #    gce_sd_configs:\n    #    {{range $zone := .Values.gcp_zones}}\n    #    - project: \"project1\"\n    #      zone: \"{{$zone}}\"\n    #      port: 9100\n    #    {{end}}\n    #    relabel_configs:\n    #    ...\n\n\n    ## If additional scrape configurations are already deployed in a single secret file you can use this section.\n    ## Expected values are the secret name and key\n    ## Cannot be used with additionalScrapeConfigs\n    additionalScrapeConfigsSecret: {}\n      # enabled: false\n      # name:\n      # key:\n\n    ## additionalPrometheusSecretsAnnotations allows to add annotations to the kubernetes secret. This can be useful\n    ## when deploying via spinnaker to disable versioning on the secret, strategy.spinnaker.io/versioned: 'false'\n    additionalPrometheusSecretsAnnotations: {}\n\n    ## AdditionalAlertManagerConfigs allows for manual configuration of alertmanager jobs in the form as specified\n    ## in the official Prometheus documentation https://prometheus.io/docs/prometheus/latest/configuration/configuration/#<alertmanager_config>.\n    ## AlertManager configurations specified are appended to the configurations generated by the Prometheus Operator.\n    ## As AlertManager configs are appended, the user is responsible to make sure it is valid. Note that using this\n    ## feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release\n    ## notes to ensure that no incompatible AlertManager configs are going to break Prometheus after the upgrade.\n    ##\n    additionalAlertManagerConfigs: []\n    # - consul_sd_configs:\n    #   - server: consul.dev.test:8500\n    #     scheme: http\n    #     datacenter: dev\n    #     tag_separator: ','\n    #     services:\n    #       - metrics-prometheus-alertmanager\n\n    ## If additional alertmanager configurations are already deployed in a single secret, or you want to manage\n    ## them separately from the helm deployment, you can use this section.\n    ## Expected values are the secret name and key\n    ## Cannot be used with additionalAlertManagerConfigs\n    additionalAlertManagerConfigsSecret: {}\n      # name:\n      # key:\n      # optional: false\n\n    ## AdditionalAlertRelabelConfigs allows specifying Prometheus alert relabel configurations. Alert relabel configurations specified are appended\n    ## to the configurations generated by the Prometheus Operator. Alert relabel configurations specified must have the form as specified in the\n    ## official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs.\n    ## As alert relabel configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the\n    ## possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible alert relabel\n    ## configs are going to break Prometheus after the upgrade.\n    ##\n    additionalAlertRelabelConfigs: []\n    # - separator: ;\n    #   regex: prometheus_replica\n    #   replacement: $1\n    #   action: labeldrop\n\n    ## If additional alert relabel configurations are already deployed in a single secret, or you want to manage\n    ## them separately from the helm deployment, you can use this section.\n    ## Expected values are the secret name and key\n    ## Cannot be used with additionalAlertRelabelConfigs\n    additionalAlertRelabelConfigsSecret: {}\n      # name:\n      # key:\n\n    ## SecurityContext holds pod-level security attributes and common container settings.\n    ## This defaults to non root user with uid 1000 and gid 2000.\n    ## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md\n    ##\n    securityContext:\n      runAsGroup: 2000\n      runAsNonRoot: true\n      runAsUser: 1000\n      fsGroup: 2000\n      seccompProfile:\n        type: RuntimeDefault\n\n    ## Priority class assigned to the Pods\n    ##\n    priorityClassName: \"\"\n\n    ## Thanos configuration allows configuring various aspects of a Prometheus server in a Thanos environment.\n    ## This section is experimental, it may change significantly without deprecation notice in any release.\n    ## This is experimental and may change significantly without backward compatibility in any release.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#thanosspec\n    ##\n    thanos: {}\n      # secretProviderClass:\n      #   provider: gcp\n      #   parameters:\n      #     secrets: |\n      #       - resourceName: \"projects/$PROJECT_ID/secrets/testsecret/versions/latest\"\n      #         fileName: \"objstore.yaml\"\n      # objectStorageConfigFile: /var/secrets/object-store.yaml\n\n    ## Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to a Prometheus pod.\n    ## if using proxy extraContainer update targetPort with proxy container port\n    containers: []\n    # containers:\n    # - name: oauth-proxy\n    #   image: quay.io/oauth2-proxy/oauth2-proxy:v7.3.0\n    #   args:\n    #   - --upstream=http://127.0.0.1:9093\n    #   - --http-address=0.0.0.0:8081\n    #   - ...\n    #   ports:\n    #   - containerPort: 8081\n    #     name: oauth-proxy\n    #     protocol: TCP\n    #   resources: {}\n\n    ## InitContainers allows injecting additional initContainers. This is meant to allow doing some changes\n    ## (permissions, dir tree) on mounted volumes before starting prometheus\n    initContainers: []\n\n    ## PortName to use for Prometheus.\n    ##\n    portName: \"http-web\"\n\n    ## ArbitraryFSAccessThroughSMs configures whether configuration based on a service monitor can access arbitrary files\n    ## on the file system of the Prometheus container e.g. bearer token files.\n    arbitraryFSAccessThroughSMs: false\n\n    ## OverrideHonorLabels if set to true overrides all user configured honor_labels. If HonorLabels is set in ServiceMonitor\n    ## or PodMonitor to true, this overrides honor_labels to false.\n    overrideHonorLabels: false\n\n    ## OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs.\n    overrideHonorTimestamps: false\n\n    ## IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from the podmonitor and servicemonitor\n    ## configs, and they will only discover endpoints within their current namespace. Defaults to false.\n    ignoreNamespaceSelectors: false\n\n    ## EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric that is user created.\n    ## The label value will always be the namespace of the object that is being created.\n    ## Disabled by default\n    enforcedNamespaceLabel: \"\"\n\n    ## PrometheusRulesExcludedFromEnforce - list of prometheus rules to be excluded from enforcing of adding namespace labels.\n    ## Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair\n    ## Deprecated, use `excludedFromEnforcement` instead\n    prometheusRulesExcludedFromEnforce: []\n\n    ## ExcludedFromEnforcement - list of object references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects\n    ## to be excluded from enforcing a namespace label of origin.\n    ## Works only if enforcedNamespaceLabel set to true.\n    ## See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#objectreference\n    excludedFromEnforcement: []\n\n    ## QueryLogFile specifies the file to which PromQL queries are logged. Note that this location must be writable,\n    ## and can be persisted using an attached volume. Alternatively, the location can be set to a stdout location such\n    ## as /dev/stdout to log querie information to the default Prometheus log stream. This is only available in versions\n    ## of Prometheus >= 2.16.0. For more details, see the Prometheus docs (https://prometheus.io/docs/guides/query-log/)\n    queryLogFile: false\n\n    ## EnforcedSampleLimit defines global limit on number of scraped samples that will be accepted. This overrides any SampleLimit\n    ## set per ServiceMonitor or/and PodMonitor. It is meant to be used by admins to enforce the SampleLimit to keep overall\n    ## number of samples/series under the desired limit. Note that if SampleLimit is lower that value will be taken instead.\n    enforcedSampleLimit: false\n\n    ## EnforcedTargetLimit defines a global limit on the number of scraped targets. This overrides any TargetLimit set\n    ## per ServiceMonitor or/and PodMonitor. It is meant to be used by admins to enforce the TargetLimit to keep the overall\n    ## number of targets under the desired limit. Note that if TargetLimit is lower, that value will be taken instead, except\n    ## if either value is zero, in which case the non-zero value will be used. If both values are zero, no limit is enforced.\n    enforcedTargetLimit: false\n\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. If more than this number of labels are present\n    ## post metric-relabeling, the entire scrape will be treated as failed. 0 means no limit. Only valid in Prometheus versions\n    ## 2.27.0 and newer.\n    enforcedLabelLimit: false\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. If a label name is longer than this number\n    ## post metric-relabeling, the entire scrape will be treated as failed. 0 means no limit. Only valid in Prometheus versions\n    ## 2.27.0 and newer.\n    enforcedLabelNameLengthLimit: false\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. If a label value is longer than this\n    ## number post metric-relabeling, the entire scrape will be treated as failed. 0 means no limit. Only valid in Prometheus\n    ## versions 2.27.0 and newer.\n    enforcedLabelValueLengthLimit: false\n\n    ## AllowOverlappingBlocks enables vertical compaction and vertical query merge in Prometheus. This is still experimental\n    ## in Prometheus so it may change in any upcoming release.\n    allowOverlappingBlocks: false\n\n    ## Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to\n    ## be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).\n    minReadySeconds: 0\n\n    # Required for use in managed kubernetes clusters (such as AWS EKS) with custom CNI (such as calico),\n    # because control-plane managed by AWS cannot communicate with pods' IP CIDR and admission webhooks are not working\n    # Use the host's network namespace if true. Make sure to understand the security implications if you want to enable it.\n    # When hostNetwork is enabled, this will set dnsPolicy to ClusterFirstWithHostNet automatically.\n    hostNetwork: false\n\n    # HostAlias holds the mapping between IP and hostnames that will be injected\n    # as an entry in the pod’s hosts file.\n    hostAliases: []\n    #  - ip: 10.10.0.100\n    #    hostnames:\n    #      - a1.app.local\n    #      - b1.app.local\n\n    ## TracingConfig configures tracing in Prometheus.\n    ## See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#prometheustracingconfig\n    tracingConfig: {}\n\n  additionalRulesForClusterRole: []\n  #  - apiGroups: [ \"\" ]\n  #    resources:\n  #      - nodes/proxy\n  #    verbs: [ \"get\", \"list\", \"watch\" ]\n\n  additionalServiceMonitors: []\n  ## Name of the ServiceMonitor to create\n  ##\n  # - name: \"\"\n\n    ## Additional labels to set used for the ServiceMonitorSelector. Together with standard labels from\n    ## the chart\n    ##\n    # additionalLabels: {}\n\n    ## Service label for use in assembling a job name of the form <label value>-<port>\n    ## If no label is specified, the service name is used.\n    ##\n    # jobLabel: \"\"\n\n    ## labels to transfer from the kubernetes service to the target\n    ##\n    # targetLabels: []\n\n    ## labels to transfer from the kubernetes pods to the target\n    ##\n    # podTargetLabels: []\n\n    ## Label selector for services to which this ServiceMonitor applies\n    ##\n    # selector: {}\n\n    ## Namespaces from which services are selected\n    ##\n    # namespaceSelector:\n      ## Match any namespace\n      ##\n      # any: false\n\n      ## Explicit list of namespace names to select\n      ##\n      # matchNames: []\n\n    ## Endpoints of the selected service to be monitored\n    ##\n    # endpoints: []\n      ## Name of the endpoint's service port\n      ## Mutually exclusive with targetPort\n      # - port: \"\"\n\n      ## Name or number of the endpoint's target port\n      ## Mutually exclusive with port\n      # - targetPort: \"\"\n\n      ## File containing bearer token to be used when scraping targets\n      ##\n      #   bearerTokenFile: \"\"\n\n      ## Interval at which metrics should be scraped\n      ##\n      #   interval: 30s\n\n      ## HTTP path to scrape for metrics\n      ##\n      #   path: /metrics\n\n      ## HTTP scheme to use for scraping\n      ##\n      #   scheme: http\n\n      ## TLS configuration to use when scraping the endpoint\n      ##\n      #   tlsConfig:\n\n          ## Path to the CA file\n          ##\n          # caFile: \"\"\n\n          ## Path to client certificate file\n          ##\n          # certFile: \"\"\n\n          ## Skip certificate verification\n          ##\n          # insecureSkipVerify: false\n\n          ## Path to client key file\n          ##\n          # keyFile: \"\"\n\n          ## Server name used to verify host name\n          ##\n          # serverName: \"\"\n\n  additionalPodMonitors: []\n  ## Name of the PodMonitor to create\n  ##\n  # - name: \"\"\n\n    ## Additional labels to set used for the PodMonitorSelector. Together with standard labels from\n    ## the chart\n    ##\n    # additionalLabels: {}\n\n    ## Pod label for use in assembling a job name of the form <label value>-<port>\n    ## If no label is specified, the pod endpoint name is used.\n    ##\n    # jobLabel: \"\"\n\n    ## Label selector for pods to which this PodMonitor applies\n    ##\n    # selector: {}\n\n    ## PodTargetLabels transfers labels on the Kubernetes Pod onto the target.\n    ##\n    # podTargetLabels: {}\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    # sampleLimit: 0\n\n    ## Namespaces from which pods are selected\n    ##\n    # namespaceSelector:\n      ## Match any namespace\n      ##\n      # any: false\n\n      ## Explicit list of namespace names to select\n      ##\n      # matchNames: []\n\n    ## Endpoints of the selected pods to be monitored\n    ## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#podmetricsendpoint\n    ##\n    # podMetricsEndpoints: []\n\n## Configuration for thanosRuler\n## ref: https://thanos.io/tip/components/rule.md/\n##\nthanosRuler:\n\n  ## Deploy thanosRuler\n  ##\n  enabled: false\n\n  ## Annotations for ThanosRuler\n  ##\n  annotations: {}\n\n  ## Service account for ThanosRuler to use.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n  ##\n  serviceAccount:\n    create: true\n    name: \"\"\n    annotations: {}\n\n  ## Configure pod disruption budgets for ThanosRuler\n  ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget\n  ## This configuration is immutable once created and will require the PDB to be deleted to be changed\n  ## https://github.com/kubernetes/kubernetes/issues/45398\n  ##\n  podDisruptionBudget:\n    enabled: false\n    minAvailable: 1\n    maxUnavailable: \"\"\n\n  ingress:\n    enabled: false\n\n    # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName\n    # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress\n    # ingressClassName: nginx\n\n    annotations: {}\n\n    labels: {}\n\n    ## Hosts must be provided if Ingress is enabled.\n    ##\n    hosts: []\n      # - thanosruler.domain.com\n\n    ## Paths to use for ingress rules - one path should match the thanosruler.routePrefix\n    ##\n    paths: []\n    # - /\n\n    ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched)\n    ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types\n    # pathType: ImplementationSpecific\n\n    ## TLS configuration for ThanosRuler Ingress\n    ## Secret must be manually created in the namespace\n    ##\n    tls: []\n    # - secretName: thanosruler-general-tls\n    #   hosts:\n    #   - thanosruler.example.com\n\n  ## Configuration for ThanosRuler service\n  ##\n  service:\n    annotations: {}\n    labels: {}\n    clusterIP: \"\"\n\n    ## Port for ThanosRuler Service to listen on\n    ##\n    port: 10902\n    ## To be used with a proxy extraContainer port\n    ##\n    targetPort: 10902\n    ## Port to expose on each node\n    ## Only used if service.type is 'NodePort'\n    ##\n    nodePort: 30905\n    ## List of IP addresses at which the Prometheus server service is available\n    ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips\n    ##\n\n    ## Additional ports to open for ThanosRuler service\n    additionalPorts: []\n\n    externalIPs: []\n    loadBalancerIP: \"\"\n    loadBalancerSourceRanges: []\n\n    ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints\n    ##\n    externalTrafficPolicy: Cluster\n\n    ## Service type\n    ##\n    type: ClusterIP\n\n  ## If true, create a serviceMonitor for thanosRuler\n  ##\n  serviceMonitor:\n    ## Scrape interval. If not set, the Prometheus default scrape interval is used.\n    ##\n    interval: \"\"\n    selfMonitor: true\n\n    ## Additional labels\n    ##\n    additionalLabels: {}\n\n    ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n    ##\n    sampleLimit: 0\n\n    ## TargetLimit defines a limit on the number of scraped targets that will be accepted.\n    ##\n    targetLimit: 0\n\n    ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelLimit: 0\n\n    ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelNameLengthLimit: 0\n\n    ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n    ##\n    labelValueLengthLimit: 0\n\n    ## proxyUrl: URL of a proxy that should be used for scraping.\n    ##\n    proxyUrl: \"\"\n\n    ## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS.\n    scheme: \"\"\n\n    ## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS.\n    ## Of type: https://github.com/coreos/prometheus-operator/blob/main/Documentation/api.md#tlsconfig\n    tlsConfig: {}\n\n    bearerTokenFile:\n\n    ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    metricRelabelings: []\n    # - action: keep\n    #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'\n    #   sourceLabels: [__name__]\n\n    ## RelabelConfigs to apply to samples before scraping\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig\n    ##\n    relabelings: []\n    # - sourceLabels: [__meta_kubernetes_pod_node_name]\n    #   separator: ;\n    #   regex: ^(.*)$\n    #   targetLabel: nodename\n    #   replacement: $1\n    #   action: replace\n\n  ## Settings affecting thanosRulerpec\n  ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#thanosrulerspec\n  ##\n  thanosRulerSpec:\n    ## Standard object's metadata. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata\n    ## Metadata Labels and Annotations gets propagated to the ThanosRuler pods.\n    ##\n    podMetadata: {}\n\n    ## Image of ThanosRuler\n    ##\n    image:\n      registry: quay.io\n      repository: thanos/thanos\n      tag: v0.31.0\n      sha: \"\"\n\n    ## Namespaces to be selected for PrometheusRules discovery.\n    ## If nil, select own namespace. Namespaces to be selected for ServiceMonitor discovery.\n    ## See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#namespaceselector for usage\n    ##\n    ruleNamespaceSelector: {}\n\n    ## If true, a nil or {} value for thanosRuler.thanosRulerSpec.ruleSelector will cause the\n    ## prometheus resource to be created with selectors based on values in the helm deployment,\n    ## which will also match the PrometheusRule resources created\n    ##\n    ruleSelectorNilUsesHelmValues: true\n\n    ## PrometheusRules to be selected for target discovery.\n    ## If {}, select all PrometheusRules\n    ##\n    ruleSelector: {}\n    ## Example which select all PrometheusRules resources\n    ## with label \"prometheus\" with values any of \"example-rules\" or \"example-rules-2\"\n    # ruleSelector:\n    #   matchExpressions:\n    #     - key: prometheus\n    #       operator: In\n    #       values:\n    #         - example-rules\n    #         - example-rules-2\n    #\n    ## Example which select all PrometheusRules resources with label \"role\" set to \"example-rules\"\n    # ruleSelector:\n    #   matchLabels:\n    #     role: example-rules\n\n    ## Define Log Format\n    # Use logfmt (default) or json logging\n    logFormat: logfmt\n\n    ## Log level for ThanosRuler to be configured with.\n    ##\n    logLevel: info\n\n    ## Size is the expected size of the thanosRuler cluster. The controller will eventually make the size of the\n    ## running cluster equal to the expected size.\n    replicas: 1\n\n    ## Time duration ThanosRuler shall retain data for. Default is '24h', and must match the regular expression\n    ## [0-9]+(ms|s|m|h) (milliseconds seconds minutes hours).\n    ##\n    retention: 24h\n\n    ## Interval between consecutive evaluations.\n    ##\n    evaluationInterval: \"\"\n\n    ## Storage is the definition of how storage will be used by the ThanosRuler instances.\n    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/storage.md\n    ##\n    storage: {}\n    # volumeClaimTemplate:\n    #   spec:\n    #     storageClassName: gluster\n    #     accessModes: [\"ReadWriteOnce\"]\n    #     resources:\n    #       requests:\n    #         storage: 50Gi\n    #   selector: {}\n\n    ## AlertmanagerConfig define configuration for connecting to alertmanager.\n    ## Only available with Thanos v0.10.0 and higher. Maps to the alertmanagers.config Thanos Ruler arg.\n    alertmanagersConfig: {}\n    #   - api_version: v2\n    #     http_config:\n    #       basic_auth:\n    #         username: some_user\n    #         password: some_pass\n    #     static_configs:\n    #       - alertmanager.thanos.io\n    #     scheme: http\n    #     timeout: 10s\n\n    ## DEPRECATED. Define URLs to send alerts to Alertmanager. For Thanos v0.10.0 and higher, alertmanagersConfig should be used instead.\n    ## Note: this field will be ignored if alertmanagersConfig is specified. Maps to the alertmanagers.url Thanos Ruler arg.\n    # alertmanagersUrl:\n\n    ## The external URL the Thanos Ruler instances will be available under. This is necessary to generate correct URLs. This is necessary if Thanos Ruler is not served from root of a DNS name. string false\n    ##\n    externalPrefix:\n\n    ## The route prefix ThanosRuler registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true,\n    ## but the server serves requests under a different route prefix. For example for use with kubectl proxy.\n    ##\n    routePrefix: /\n\n    ## ObjectStorageConfig configures object storage in Thanos. Alternative to\n    ## ObjectStorageConfigFile, and lower order priority.\n    objectStorageConfig: {}\n\n    ## ObjectStorageConfigFile specifies the path of the object storage configuration file.\n    ## When used alongside with ObjectStorageConfig, ObjectStorageConfigFile takes precedence.\n    objectStorageConfigFile: \"\"\n\n    ## QueryEndpoints defines Thanos querier endpoints from which to query metrics.\n    ## Maps to the --query flag of thanos ruler.\n    queryEndpoints: []\n\n    ## Define configuration for connecting to thanos query instances. If this is defined, the queryEndpoints field will be ignored.\n    ## Maps to the query.config CLI argument. Only available with thanos v0.11.0 and higher.\n    queryConfig: {}\n\n    ## Labels configure the external label pairs to ThanosRuler. A default replica\n    ## label `thanos_ruler_replica` will be always added as a label with the value\n    ## of the pod's name and it will be dropped in the alerts.\n    labels: {}\n\n    ## If set to true all actions on the underlying managed objects are not going to be performed, except for delete actions.\n    ##\n    paused: false\n\n    ## Define which Nodes the Pods are scheduled on.\n    ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n    ##\n    nodeSelector: {}\n\n    ## Define resources requests and limits for single Pods.\n    ## ref: https://kubernetes.io/docs/user-guide/compute-resources/\n    ##\n    resources: {}\n    # requests:\n    #   memory: 400Mi\n\n    ## Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node.\n    ## The default value \"soft\" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided.\n    ## The value \"hard\" means that the scheduler is *required* to not schedule two replica pods onto the same node.\n    ## The value \"\" will disable pod anti-affinity so that no anti-affinity rules will be configured.\n    ##\n    podAntiAffinity: \"\"\n\n    ## If anti-affinity is enabled sets the topologyKey to use for anti-affinity.\n    ## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone\n    ##\n    podAntiAffinityTopologyKey: kubernetes.io/hostname\n\n    ## Assign custom affinity rules to the thanosRuler instance\n    ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n    ##\n    affinity: {}\n    # nodeAffinity:\n    #   requiredDuringSchedulingIgnoredDuringExecution:\n    #     nodeSelectorTerms:\n    #     - matchExpressions:\n    #       - key: kubernetes.io/e2e-az-name\n    #         operator: In\n    #         values:\n    #         - e2e-az1\n    #         - e2e-az2\n\n    ## If specified, the pod's tolerations.\n    ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n    ##\n    tolerations: []\n    # - key: \"key\"\n    #   operator: \"Equal\"\n    #   value: \"value\"\n    #   effect: \"NoSchedule\"\n\n    ## If specified, the pod's topology spread constraints.\n    ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n    ##\n    topologySpreadConstraints: []\n    # - maxSkew: 1\n    #   topologyKey: topology.kubernetes.io/zone\n    #   whenUnsatisfiable: DoNotSchedule\n    #   labelSelector:\n    #     matchLabels:\n    #       app: thanos-ruler\n\n    ## SecurityContext holds pod-level security attributes and common container settings.\n    ## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext  false\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n    ##\n    securityContext:\n      runAsGroup: 2000\n      runAsNonRoot: true\n      runAsUser: 1000\n      fsGroup: 2000\n      seccompProfile:\n        type: RuntimeDefault\n\n    ## ListenLocal makes the ThanosRuler server listen on loopback, so that it does not bind against the Pod IP.\n    ## Note this is only for the ThanosRuler UI, not the gossip communication.\n    ##\n    listenLocal: false\n\n    ## Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to an ThanosRuler pod.\n    ##\n    containers: []\n\n    # Additional volumes on the output StatefulSet definition.\n    volumes: []\n\n    # Additional VolumeMounts on the output StatefulSet definition.\n    volumeMounts: []\n\n    ## InitContainers allows injecting additional initContainers. This is meant to allow doing some changes\n    ## (permissions, dir tree) on mounted volumes before starting prometheus\n    initContainers: []\n\n    ## Priority class assigned to the Pods\n    ##\n    priorityClassName: \"\"\n\n    ## PortName to use for ThanosRuler.\n    ##\n    portName: \"web\"\n\n  ## ExtraSecret can be used to store various data in an extra secret\n  ## (use it for example to store hashed basic auth credentials)\n  extraSecret:\n    ## if not set, name will be auto generated\n    # name: \"\"\n    annotations: {}\n    data: {}\n  #   auth: |\n  #     foo:$apr1$OFG3Xybp$ckL0FHDAkoXYIlH9.cysT0\n  #     someoneelse:$apr1$DMZX2Z4q$6SbQIfyuLQd.xmo/P0m2c.\n\n## Setting to true produces cleaner resource names, but requires a data migration because the name of the persistent volume changes. Therefore this should only be set once on initial installation.\n##\ncleanPrometheusOperatorObjectNames: false\n\n## Extra manifests to deploy as an array\nextraManifests: []\n  # - apiVersion: v1\n  #   kind: ConfigMap\n  #   metadata:\n  #   labels:\n  #     name: prometheus-extra\n  #   data:\n  #     extra-data: \"value\"\n"
  },
  {
    "path": "build/charts/laf-server/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "build/charts/laf-server/Chart.yaml",
    "content": "apiVersion: v2\nname: laf-server\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.16.0\"\n"
  },
  {
    "path": "build/charts/laf-server/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n{{- if .Values.ingress.enabled }}\n{{- range $host := .Values.ingress.hosts }}\n  {{- range .paths }}\n  http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}\n  {{- end }}\n{{- end }}\n{{- else if contains \"NodePort\" .Values.service.type }}\n  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"laf-server.fullname\" . }})\n  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include \"laf-server.fullname\" . }}'\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"laf-server.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ include \"laf-server.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n  export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath=\"{.spec.containers[0].ports[0].containerPort}\")\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n  kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT\n{{- end }}\n"
  },
  {
    "path": "build/charts/laf-server/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"laf-server.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"laf-server.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"laf-server.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"laf-server.labels\" -}}\nhelm.sh/chart: {{ include \"laf-server.chart\" . }}\n{{ include \"laf-server.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"runtime-exporter.labels\" -}}\nhelm.sh/chart: {{ include \"laf-server.chart\" . }}\n{{ include \"runtime-exporter.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"laf-server.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"laf-server.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"runtime-exporter.selectorLabels\" -}}\napp.kubernetes.io/name: runtime-exporter\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"laf-server.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"laf-server.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/laf-server/templates/cert-issuer.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: Issuer\nmetadata:\n  name: laf-issuer\nspec:\n  acme:\n    server: https://acme-v02.api.letsencrypt.org/directory\n    email: laf-deploy@{{ .Values.default_region.runtime_domain }}\n    privateKeySecretRef:\n      name: letsencrypt-prod\n    solvers:\n      - http01:\n          ingress:\n            class: nginx\n"
  },
  {
    "path": "build/charts/laf-server/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"laf-server.fullname\" . }}\n  labels:\n    {{- include \"laf-server.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"laf-server.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"laf-server.selectorLabels\" . | nindent 8 }}\n    spec:\n      automountServiceAccountToken: {{ .Values.serviceAccount.create }}\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ include \"laf-server.serviceAccountName\" . }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: http\n              containerPort: 3000\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: /v1/regions\n              port: http\n          readinessProbe:\n            httpGet:\n              path: /v1/regions\n              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n          env:\n            - name: DEFAULT_REGION_NAMESPACE\n              value: {{ .Values.default_region.fixed_namespace | quote}}\n            - name: DATABASE_URL\n              value: {{ .Values.databaseUrl | quote}}\n            - name: JWT_SECRET\n              value: {{ .Values.jwt.secret | quote}}\n            - name: API_SERVER_URL\n              value: {{ .Values.apiServerUrl | quote}}\n            - name: JWT_EXPIRES_IN\n              value: {{ .Values.jwt.expires_in | quote}}\n            - name: DEFAULT_REGION_DATABASE_URL\n              value: {{ .Values.default_region.database_url | quote}}\n            - name: DEFAULT_REGION_MINIO_DOMAIN\n              value: {{ .Values.default_region.minio_domain }}\n            - name: DEFAULT_REGION_MINIO_EXTERNAL_ENDPOINT\n              value: {{ .Values.default_region.minio_external_endpoint }}\n            - name: DEFAULT_REGION_MINIO_INTERNAL_ENDPOINT\n              value: {{ .Values.default_region.minio_internal_endpoint }}\n            - name: DEFAULT_REGION_MINIO_ROOT_ACCESS_KEY\n              value: {{ .Values.default_region.minio_root_access_key | quote}}\n            - name: DEFAULT_REGION_MINIO_ROOT_SECRET_KEY\n              value: {{ .Values.default_region.minio_root_secret_key | quote}}\n            - name: DEFAULT_REGION_RUNTIME_DOMAIN\n              value: {{ .Values.default_region.runtime_domain }}\n            - name: DEFAULT_REGION_WEBSITE_DOMAIN\n              value: {{ .Values.default_region.website_domain }}\n            - name: DEFAULT_REGION_TLS_ENABLED\n              value: {{ .Values.default_region.tls.enabled | quote}}\n            - name: DEFAULT_REGION_TLS_WILDCARD_CERTIFICATE_SECRET_NAME\n              value: {{ .Values.default_region.tls.wildcard_certificate_secret_name | quote}}\n            - name: DEFAULT_REGION_PROMETHEUS_URL\n              value: {{ .Values.default_region.prometheus_url }}\n            - name: SITE_NAME\n              value: {{ .Values.siteName | quote}}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n"
  },
  {
    "path": "build/charts/laf-server/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"laf-server.fullname\" . }}\n  labels:\n    {{- include \"laf-server.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"laf-server.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/laf-server/templates/ingress.yaml",
    "content": "\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: laf-server-ingress\nspec:\n  ingressClassName: nginx\n  rules:\n  - host: {{ .Values.apiServerHost }}\n    http:\n      paths:\n      - backend:\n          service:\n            name: laf-server\n            port:\n              number: 3000\n        path: /\n        pathType: Prefix\n"
  },
  {
    "path": "build/charts/laf-server/templates/rumtime-exporter.yaml",
    "content": "{{- if .Values.default_region.runtime_exporter_secret }}\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    {{- include \"runtime-exporter.labels\" . | nindent 4 }}\n  name: runtime-exporter\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      {{- include \"runtime-exporter.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata: \n      labels:\n        {{- include \"runtime-exporter.selectorLabels\" . | nindent 8 }}\n    spec:\n      automountServiceAccountToken: {{ .Values.serviceAccount.create }}\n      serviceAccountName: {{ include \"laf-server.serviceAccountName\" . }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - image: docker.io/lafyun/runtime-exporter:latest\n          imagePullPolicy: Always\n          name: runtime-exporter\n          ports:\n            - name: http\n              containerPort: 2342\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: /healthz\n              port: http\n          readinessProbe:\n            httpGet:\n              path: /healthz\n              port: http \n          env:\n            - name: API_SECRET\n              value: {{ .Values.default_region.runtime_exporter_secret | quote }}\n            - name: NAMESPACE\n              value: {{ .Release.Namespace | quote }}\n            - name: DB_NAMESPACE\n              value: {{ .Release.Namespace | quote }}\n--- \napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    {{- include \"runtime-exporter.labels\" . | nindent 4 }}\n  name: runtime-exporter\nspec:\n  ports:\n    - name: http\n      port: 2342\n      protocol: TCP\n      targetPort: http \n  selector:\n    {{- include \"runtime-exporter.selectorLabels\" . | nindent 4 }}\n\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    {{- include \"runtime-exporter.labels\" . | nindent 4 }}\n    release: prometheus\n  name: runtime-exporter\nspec:\n  endpoints:\n    - interval: 60s\n      path: \"/runtime/metrics/{{ .Values.default_region.runtime_exporter_secret}}\"\n      scrapeTimeout: 10s\n      honorLabels: true\n    - interval: 60s\n      path: \"/database/metrics/{{ .Values.default_region.runtime_exporter_secret}}\"\n      scrapeTimeout: 10s\n      honorLabels: true\n  namespaceSelector:\n    matchNames:\n      - {{ .Release.Namespace }}\n  selector:\n    matchLabels:\n      {{- include \"runtime-exporter.labels\" . | nindent 6 }}\n---\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    {{- include \"runtime-exporter.labels\" . | nindent 4 }}\n    release: prometheus\n  name: prometheus-laf-billing.rules\nspec:\n  groups:\n    - name: prometheus-laf-billing.rules\n      interval: 60s\n      rules:\n        - record: laf:billing:cpu\n          expr: max_over_time(sum by (appid) (laf_runtime_cpu_limit{container!=\"\"})[1h:])\n        - record: laf:billing:memory\n          expr: max_over_time(sum by (appid) (laf_runtime_memory_limit{container!=\"\"})[1h:])\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: kb-mongodb\nspec:\n  endpoints:\n    - interval: 30s\n      path: /metrics\n      port: http-metrics\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: mongodb\n      apps.kubeblocks.io/component-name: mongodb\n{{- end }}"
  },
  {
    "path": "build/charts/laf-server/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: laf-server\n  labels:\n    {{- include \"laf-server.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"laf-server.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "build/charts/laf-server/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"laf-server.serviceAccountName\" . }}\n  labels:\n    {{- include \"laf-server.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: {{ include \"laf-server.serviceAccountName\" . }}-cluster-role-binding\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cluster-admin\nsubjects:\n- kind: ServiceAccount\n  name: {{ include \"laf-server.serviceAccountName\" . }}\n  namespace: {{ .Release.Namespace }}\n\n{{- end }}"
  },
  {
    "path": "build/charts/laf-server/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"laf-server.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"laf-server.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: \"busybox:1.28\"\n      command: ['wget']\n      args: ['{{ include \"laf-server.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "build/charts/laf-server/values.yaml",
    "content": "# Default values for laf-server.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\napiServerHost: \"\"\ndatabaseUrl: \"\"\napiServerUrl: \"\"\nsiteName: \"laf\"\n# init default region conf\ndefault_region:\n  fixed_namespace: \"\"\n  # db conf\n  database_url: \"\"\n  # minio conf\n  minio_domain: \"\"\n  minio_external_endpoint: \"\"\n  minio_internal_endpoint: \"\"\n  minio_root_access_key: \"\"\n  minio_root_secret_key: \"\"\n  # gateway conf\n  tls:\n    enabled: false\n    wildcard_certificate_secret_name: \"\"\n  runtime_domain: \"\"\n  website_domain: \"\"\n  # runtime-exporter\n  runtime_exporter_secret: \"\"\n  # prometheus\n  prometheus_url: \"\"\njwt:\n  secret: laf_server_abc123\n  expires_in: 7d\n\nreplicaCount: 1\n\nimage:\n  repository: docker.io/lafyun/laf-server\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"latest\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"laf-server\"\n\nserviceAccount:\n  # Specifies whether a service account should be created\n  create: true\n  # Annotations to add to the service account\n  annotations: {}\n  # The name of the service account to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name: \"\"\n\npodAnnotations: {}\n\npodSecurityContext:\n  {}\n  # fsGroup: 2000\n\nsecurityContext:\n  {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 3000\n\ningress:\n  enabled: false\n  className: \"\"\n  annotations:\n    {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n  hosts:\n    - host: chart-example.local\n      paths:\n        - path: /\n          pathType: ImplementationSpecific\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\nresources:\n  {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "build/charts/laf-web/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "build/charts/laf-web/Chart.yaml",
    "content": "apiVersion: v2\nname: laf-web\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.16.0\"\n"
  },
  {
    "path": "build/charts/laf-web/templates/NOTES.txt",
    "content": "\nDomains: \n- http://{{ .Values.domain }}\n- http://api.{{ .Values.domain }}\n- http://minio.{{ .Values.domain }}\n\n> Please resolve the `*.{{ .Values.domain }}` and `{{ .Values.domain }}` to the IP address of the server."
  },
  {
    "path": "build/charts/laf-web/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"laf-web.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"laf-web.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"laf-web.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"laf-web.labels\" -}}\nhelm.sh/chart: {{ include \"laf-web.chart\" . }}\n{{ include \"laf-web.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"laf-web.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"laf-web.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"laf-web.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"laf-web.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/laf-web/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"laf-web.fullname\" . }}\n  labels:\n    {{- include \"laf-web.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"laf-web.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"laf-web.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ include \"laf-web.serviceAccountName\" . }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: /\n              port: http\n          readinessProbe:\n            httpGet:\n              path: /\n              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n"
  },
  {
    "path": "build/charts/laf-web/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"laf-web.fullname\" . }}\n  labels:\n    {{- include \"laf-web.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"laf-web.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/laf-web/templates/ingress.yaml",
    "content": "\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: laf-web-ingress\nspec:\n  ingressClassName: nginx\n  rules:\n  - host: {{ .Values.domain }}\n    http:\n      paths:\n      - backend:\n          service:\n            name: laf-web\n            port:\n              number: 80\n        path: /\n        pathType: Prefix\n      - backend:\n          service:\n            name: laf-server\n            port:\n              number: 3000\n        path: /v1/\n        pathType: Prefix\n"
  },
  {
    "path": "build/charts/laf-web/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: laf-web\n  labels:\n    {{- include \"laf-web.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"laf-web.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "build/charts/laf-web/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"laf-web.serviceAccountName\" . }}\n  labels:\n    {{- include \"laf-web.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/laf-web/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"laf-web.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"laf-web.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: \"busybox:1.28\"\n      command: ['wget']\n      args: ['{{ include \"laf-web.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "build/charts/laf-web/values.yaml",
    "content": "# Default values for laf-web.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\ndomain: \"\"\nreplicaCount: 1\n\nimage:\n  repository: docker.io/lafyun/laf-web\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"latest\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"laf-web\"\n\nserviceAccount:\n  # Specifies whether a service account should be created\n  create: false\n  # Annotations to add to the service account\n  annotations: {}\n  # The name of the service account to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: ClusterIP\n  port: 80\n\ningress:\n  enabled: false\n  className: \"\"\n  annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n  hosts:\n    - host: chart-example.local\n      paths:\n        - path: /\n          pathType: ImplementationSpecific\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\nresources: {}\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  # limits:\n  #   cpu: 100m\n  #   memory: 128Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "build/charts/minio/Chart.yaml",
    "content": "apiVersion: v1\nappVersion: RELEASE.2022-11-11T03-44-20Z\ndescription: Multi-Cloud Object Storage\nhome: https://min.io\nicon: https://min.io/resources/img/logo/MINIO_wordmark.png\nkeywords:\n- minio\n- storage\n- object-storage\n- s3\n- cluster\nmaintainers:\n- email: dev@minio.io\n  name: MinIO, Inc\nname: minio\nsources:\n- https://github.com/minio/minio\nversion: 5.0.1\n"
  },
  {
    "path": "build/charts/minio/README.md",
    "content": "# MinIO Helm Chart\n\n[![Slack](https://slack.min.io/slack?type=svg)](https://slack.min.io) [![license](https://img.shields.io/badge/license-AGPL%20V3-blue)](https://github.com/minio/minio/blob/master/LICENSE)\n\nMinIO is a High Performance Object Storage released under GNU Affero General Public License v3.0. It is API compatible with Amazon S3 cloud storage service. Use MinIO to build high performance infrastructure for machine learning, analytics and application data workloads.\n\nFor more detailed documentation please visit [here](https://min.io/docs/minio/linux/index.html)\n\n## Introduction\n\nThis chart bootstraps MinIO Cluster on [Kubernetes](http://kubernetes.io) using the [Helm](https://helm.sh) package manager.\n\n## Prerequisites\n\n- Helm cli with Kubernetes cluster configured.\n- PV provisioner support in the underlying infrastructure. (We recommend using <https://github.com/minio/direct-csi>)\n- Use Kubernetes version v1.19 and later for best experience.\n\n## Configure MinIO Helm repo\n\n```bash\nhelm repo add minio https://charts.min.io/\n```\n\n### Installing the Chart\n\nInstall this chart using:\n\n```bash\nhelm install --namespace minio --set rootUser=rootuser,rootPassword=rootpass123 --generate-name minio/minio\n```\n\nThe command deploys MinIO on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.\n\n### Upgrading the Chart\n\nYou can use Helm to update MinIO version in a live release. Assuming your release is named as `my-release`, get the values using the command:\n\n```bash\nhelm get values my-release > old_values.yaml\n```\n\nThen change the field `image.tag` in `old_values.yaml` file with MinIO image tag you want to use. Now update the chart using\n\n```bash\nhelm upgrade -f old_values.yaml my-release minio/minio\n```\n\nDefault upgrade strategies are specified in the `values.yaml` file. Update these fields if you'd like to use a different strategy.\n\n### Configuration\n\nRefer the [Values file](./values.yaml) for all the possible config fields.\n\nYou can specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,\n\n```bash\nhelm install --name my-release --set persistence.size=1Ti minio/minio\n```\n\nThe above command deploys MinIO server with a 1Ti backing persistent volume.\n\nAlternately, you can provide a YAML file that specifies parameter values while installing the chart. For example,\n\n```bash\nhelm install --name my-release -f values.yaml minio/minio\n```\n\n### Persistence\n\nThis chart provisions a PersistentVolumeClaim and mounts corresponding persistent volume to default location `/export`. You'll need physical storage available in the Kubernetes cluster for this to work. If you'd rather use `emptyDir`, disable PersistentVolumeClaim by:\n\n```bash\nhelm install --set persistence.enabled=false minio/minio\n```\n\n> *\"An emptyDir volume is first created when a Pod is assigned to a Node, and exists as long as that Pod is running on that node. When a Pod is removed from a node for any reason, the data in the emptyDir is deleted forever.\"*\n\n### Existing PersistentVolumeClaim\n\nIf a Persistent Volume Claim already exists, specify it during installation.\n\n1. Create the PersistentVolume\n2. Create the PersistentVolumeClaim\n3. Install the chart\n\n```bash\nhelm install --set persistence.existingClaim=PVC_NAME minio/minio\n```\n\n### NetworkPolicy\n\nTo enable network policy for MinIO,\ninstall [a networking plugin that implements the Kubernetes\nNetworkPolicy spec](https://kubernetes.io/docs/tasks/administer-cluster/declare-network-policy#before-you-begin),\nand set `networkPolicy.enabled` to `true`.\n\nFor Kubernetes v1.5 & v1.6, you must also turn on NetworkPolicy by setting\nthe DefaultDeny namespace annotation. Note: this will enforce policy for *all* pods in the namespace:\n\n```\nkubectl annotate namespace default \"net.beta.kubernetes.io/network-policy={\\\"ingress\\\":{\\\"isolation\\\":\\\"DefaultDeny\\\"}}\"\n```\n\nWith NetworkPolicy enabled, traffic will be limited to just port 9000.\n\nFor more precise policy, set `networkPolicy.allowExternal=true`. This will\nonly allow pods with the generated client label to connect to MinIO.\nThis label will be displayed in the output of a successful install.\n\n### Existing secret\n\nInstead of having this chart create the secret for you, you can supply a preexisting secret, much\nlike an existing PersistentVolumeClaim.\n\nFirst, create the secret:\n\n```bash\nkubectl create secret generic my-minio-secret --from-literal=rootUser=foobarbaz --from-literal=rootPassword=foobarbazqux\n```\n\nThen install the chart, specifying that you want to use an existing secret:\n\n```bash\nhelm install --set existingSecret=my-minio-secret minio/minio\n```\n\nThe following fields are expected in the secret:\n\n| .data.\\<key\\> in Secret | Corresponding variable | Description    | Required |\n|:------------------------|:-----------------------|:---------------|:---------|\n| `rootUser`              | `rootUser`             | Root user.     | yes      |\n| `rootPassword`          | `rootPassword`         | Root password. | yes      |\n\nAll corresponding variables will be ignored in values file.\n\n### Configure TLS\n\nTo enable TLS for MinIO containers, acquire TLS certificates from a CA or create self-signed certificates. While creating / acquiring certificates ensure the corresponding domain names are set as per the standard [DNS naming conventions](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-identity) in a Kubernetes StatefulSet (for a distributed MinIO setup). Then create a secret using\n\n```bash\nkubectl create secret generic tls-ssl-minio --from-file=path/to/private.key --from-file=path/to/public.crt\n```\n\nThen install the chart, specifying that you want to use the TLS secret:\n\n```bash\nhelm install --set tls.enabled=true,tls.certSecret=tls-ssl-minio minio/minio\n```\n\n### Installing certificates from third party CAs\n\nMinIO can connect to other servers, including MinIO nodes or other server types such as NATs and Redis. If these servers use certificates that were not registered with a known CA, add trust for these certificates to MinIO Server by bundling these certificates into a Kubernetes secret and providing it to Helm via the `trustedCertsSecret` value. If `.Values.tls.enabled` is `true` and you're installing certificates for third party CAs, remember to include MinIO's own certificate with key `public.crt`, if it also needs to be trusted.\n\nFor instance, given that TLS is enabled and you need to add trust for MinIO's own CA and for the CA of a Keycloak server, a Kubernetes secret can be created from the certificate files using `kubectl`:\n\n```\nkubectl -n minio create secret generic minio-trusted-certs --from-file=public.crt --from-file=keycloak.crt\n```\n\nIf TLS is not enabled, you would need only the third party CA:\n\n```\nkubectl -n minio create secret generic minio-trusted-certs --from-file=keycloak.crt\n```\n\nThe name of the generated secret can then be passed to Helm using a values file or the `--set` parameter:\n\n```\ntrustedCertsSecret: \"minio-trusted-certs\"\n\nor\n\n--set trustedCertsSecret=minio-trusted-certs\n```\n\n### Create buckets after install\n\nInstall the chart, specifying the buckets you want to create after install:\n\n```bash\nhelm install --set buckets[0].name=bucket1,buckets[0].policy=none,buckets[0].purge=false minio/minio\n```\n\nDescription of the configuration parameters used above -\n\n- `buckets[].name` - name of the bucket to create, must be a string with length > 0\n- `buckets[].policy` - can be one of none|download|upload|public\n- `buckets[].purge` - purge if bucket exists already\n\n### Create policies after install\n\nInstall the chart, specifying the policies you want to create after install:\n\n```bash\nhelm install --set policies[0].name=mypolicy,policies[0].statements[0].resources[0]='arn:aws:s3:::bucket1',policies[0].statements[0].actions[0]='s3:ListBucket',policies[0].statements[0].actions[1]='s3:GetObject' minio/minio\n```\n\nDescription of the configuration parameters used above -\n\n- `policies[].name` - name of the policy to create, must be a string with length > 0\n- `policies[].statements[]` - list of statements, includes actions and resources\n- `policies[].statements[].resources[]` - list of resources that applies the statement\n- `policies[].statements[].actions[]` - list of actions granted\n\n### Create user after install\n\nInstall the chart, specifying the users you want to create after install:\n\n```bash\nhelm install --set users[0].accessKey=accessKey,users[0].secretKey=secretKey,users[0].policy=none,users[1].accessKey=accessKey2,users[1].secretRef=existingSecret,users[1].secretKey=password,users[1].policy=none minio/minio\n```\n\nDescription of the configuration parameters used above -\n\n- `users[].accessKey` - accessKey of user\n- `users[].secretKey` - secretKey of usersecretRef\n- `users[].existingSecret` - secret name that contains the secretKey of user\n- `users[].existingSecretKey` - data key in existingSecret secret containing the secretKey\n- `users[].policy` - name of the policy to assign to user\n\n## Uninstalling the Chart\n\nAssuming your release is named as `my-release`, delete it using the command:\n\n```bash\nhelm delete my-release\n```\n\nor\n\n```bash\nhelm uninstall my-release\n```\n\nThe command removes all the Kubernetes components associated with the chart and deletes the release.\n"
  },
  {
    "path": "build/charts/minio/templates/NOTES.txt",
    "content": "{{- if eq .Values.service.type \"ClusterIP\" \"NodePort\" }}\nMinIO can be accessed via port {{ .Values.service.port }} on the following DNS name from within your cluster:\n{{ template \"minio.fullname\" . }}.{{ .Release.Namespace }}.svc.cluster.local\n\nTo access MinIO from localhost, run the below commands:\n\n  1. export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l \"release={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n\n  2. kubectl port-forward $POD_NAME 9000 --namespace {{ .Release.Namespace }}\n\nRead more about port forwarding here: http://kubernetes.io/docs/user-guide/kubectl/kubectl_port-forward/\n\nYou can now access MinIO server on http://localhost:9000. Follow the below steps to connect to MinIO server with mc client:\n\n  1. Download the MinIO mc client - https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart\n\n  2. export MC_HOST_{{ template \"minio.fullname\" . }}-local=http://$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template \"minio.secretName\" . }} -o jsonpath=\"{.data.rootUser}\" | base64 --decode):$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template \"minio.secretName\" . }} -o jsonpath=\"{.data.rootPassword}\" | base64 --decode)@localhost:{{ .Values.service.port }}\n\n  3. mc ls {{ template \"minio.fullname\" . }}-local\n\n{{- end }}\n{{- if eq .Values.service.type \"LoadBalancer\" }}\nMinIO can be accessed via port {{ .Values.service.port }} on an external IP address. Get the service external IP address by:\nkubectl get svc --namespace {{ .Release.Namespace }} -l app={{ template \"minio.fullname\" . }}\n\nNote that the public IP may take a couple of minutes to be available.\n\nYou can now access MinIO server on http://<External-IP>:9000. Follow the below steps to connect to MinIO server with mc client:\n\n  1. Download the MinIO mc client - https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart\n\n  2. export MC_HOST_{{ template \"minio.fullname\" . }}-local=http://$(kubectl get secret {{ template \"minio.secretName\" . }} --namespace {{ .Release.Namespace }} -o jsonpath=\"{.data.rootUser}\" | base64 --decode):$(kubectl get secret {{ template \"minio.secretName\" . }} -o jsonpath=\"{.data.rootPassword}\" | base64 --decode)@<External-IP>:{{ .Values.service.port }}\n\n  3. mc ls {{ template \"minio.fullname\" . }}\n\nAlternately, you can use your browser or the MinIO SDK to access the server - https://min.io/docs/minio/linux/reference/minio-server/minio-server.html\n{{- end }}\n\n{{ if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }}\nNote: Since NetworkPolicy is enabled, only pods with label\n{{ template \"minio.fullname\" . }}-client=true\"\nwill be able to connect to this minio cluster.\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/_helper_create_bucket.txt",
    "content": "#!/bin/sh\nset -e ; # Have script exit in the event of a failed command.\n\n{{- if .Values.configPathmc }}\nMC_CONFIG_DIR=\"{{ .Values.configPathmc }}\"\nMC=\"/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}\"\n{{- else }}\nMC=\"/usr/bin/mc --insecure\"\n{{- end }}\n\n# connectToMinio\n# Use a check-sleep-check loop to wait for MinIO service to be available\nconnectToMinio() {\n  SCHEME=$1\n  ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts\n  set -e ; # fail if we can't read the keys.\n  ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ;\n  set +e ; # The connections to minio are allowed to fail.\n  echo \"Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT\" ;\n  MC_COMMAND=\"${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET\" ;\n  $MC_COMMAND ;\n  STATUS=$? ;\n  until [ $STATUS = 0 ]\n  do\n    ATTEMPTS=`expr $ATTEMPTS + 1` ;\n    echo \\\"Failed attempts: $ATTEMPTS\\\" ;\n    if [ $ATTEMPTS -gt $LIMIT ]; then\n      exit 1 ;\n    fi ;\n    sleep 2 ; # 1 second intervals between attempts\n    $MC_COMMAND ;\n    STATUS=$? ;\n  done ;\n  set -e ; # reset `e` as active\n  return 0\n}\n\n# checkBucketExists ($bucket)\n# Check if the bucket exists, by using the exit code of `mc ls`\ncheckBucketExists() {\n  BUCKET=$1\n  CMD=$(${MC} ls myminio/$BUCKET > /dev/null 2>&1)\n  return $?\n}\n\n# createBucket ($bucket, $policy, $purge)\n# Ensure bucket exists, purging if asked to\ncreateBucket() {\n  BUCKET=$1\n  POLICY=$2\n  PURGE=$3\n  VERSIONING=$4\n  OBJECTLOCKING=$5\n\n  # Purge the bucket, if set & exists\n  # Since PURGE is user input, check explicitly for `true`\n  if [ $PURGE = true ]; then\n    if checkBucketExists $BUCKET ; then\n      echo \"Purging bucket '$BUCKET'.\"\n      set +e ; # don't exit if this fails\n      ${MC} rm -r --force myminio/$BUCKET\n      set -e ; # reset `e` as active\n    else\n      echo \"Bucket '$BUCKET' does not exist, skipping purge.\"\n    fi\n  fi\n\n# Create the bucket if it does not exist and set objectlocking if enabled (NOTE: versioning will be not changed if OBJECTLOCKING is set because it enables versioning to the Buckets created)\nif ! checkBucketExists $BUCKET ; then\n    if [ ! -z $OBJECTLOCKING ] ; then\n      if [ $OBJECTLOCKING = true ] ; then\n          echo \"Creating bucket with OBJECTLOCKING '$BUCKET'\"\n          ${MC} mb --with-lock myminio/$BUCKET\n      elif [ $OBJECTLOCKING = false ] ; then\n            echo \"Creating bucket '$BUCKET'\"\n            ${MC} mb myminio/$BUCKET\n      fi\n  elif [ -z $OBJECTLOCKING ] ; then\n        echo \"Creating bucket '$BUCKET'\"\n        ${MC} mb myminio/$BUCKET\n  else\n    echo \"Bucket '$BUCKET' already exists.\"  \n  fi\n  fi\n\n\n  # set versioning for bucket if objectlocking is disabled or not set\n  if [ -z $OBJECTLOCKING ] ; then\n  if [ ! -z $VERSIONING ] ; then\n    if [ $VERSIONING = true ] ; then\n        echo \"Enabling versioning for '$BUCKET'\"\n        ${MC} version enable myminio/$BUCKET\n    elif [ $VERSIONING = false ] ; then\n        echo \"Suspending versioning for '$BUCKET'\"\n        ${MC} version suspend myminio/$BUCKET\n    fi\n    fi\n  else\n      echo \"Bucket '$BUCKET' versioning unchanged.\"\n  fi\n\n\n  # At this point, the bucket should exist, skip checking for existence\n  # Set policy on the bucket\n  echo \"Setting policy of bucket '$BUCKET' to '$POLICY'.\"\n  ${MC} anonymous set $POLICY myminio/$BUCKET\n}\n\n# Try connecting to MinIO instance\n{{- if .Values.tls.enabled }}\nscheme=https\n{{- else }}\nscheme=http\n{{- end }}\nconnectToMinio $scheme\n\n{{ if .Values.buckets }}\n{{ $global := . }}\n# Create the buckets\n{{- range .Values.buckets }}\ncreateBucket {{ tpl .name $global }} {{ .policy | default \"none\" | quote }} {{ .purge | default false }} {{ .versioning | default false }} {{ .objectlocking  | default false }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/_helper_create_policy.txt",
    "content": "#!/bin/sh\nset -e ; # Have script exit in the event of a failed command.\n\n{{- if .Values.configPathmc }}\nMC_CONFIG_DIR=\"{{ .Values.configPathmc }}\"\nMC=\"/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}\"\n{{- else }}\nMC=\"/usr/bin/mc --insecure\"\n{{- end }}\n\n# connectToMinio\n# Use a check-sleep-check loop to wait for MinIO service to be available\nconnectToMinio() {\n  SCHEME=$1\n  ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts\n  set -e ; # fail if we can't read the keys.\n  ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ;\n  set +e ; # The connections to minio are allowed to fail.\n  echo \"Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT\" ;\n  MC_COMMAND=\"${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET\" ;\n  $MC_COMMAND ;\n  STATUS=$? ;\n  until [ $STATUS = 0 ]\n  do\n    ATTEMPTS=`expr $ATTEMPTS + 1` ;\n    echo \\\"Failed attempts: $ATTEMPTS\\\" ;\n    if [ $ATTEMPTS -gt $LIMIT ]; then\n      exit 1 ;\n    fi ;\n    sleep 2 ; # 1 second intervals between attempts\n    $MC_COMMAND ;\n    STATUS=$? ;\n  done ;\n  set -e ; # reset `e` as active\n  return 0\n}\n\n# checkPolicyExists ($policy)\n# Check if the policy exists, by using the exit code of `mc admin policy info`\ncheckPolicyExists() {\n  POLICY=$1\n  CMD=$(${MC} admin policy info myminio $POLICY > /dev/null 2>&1)\n  return $?\n}\n\n# createPolicy($name, $filename)\ncreatePolicy () {\n  NAME=$1\n  FILENAME=$2\n\n  # Create the name if it does not exist\n  echo \"Checking policy: $NAME (in /config/$FILENAME.json)\"\n  if ! checkPolicyExists $NAME ; then\n    echo \"Creating policy '$NAME'\"\n  else\n    echo \"Policy '$NAME' already exists.\"\n  fi\n  ${MC} admin policy add myminio $NAME /config/$FILENAME.json\n\n}\n\n# Try connecting to MinIO instance\n{{- if .Values.tls.enabled }}\nscheme=https\n{{- else }}\nscheme=http\n{{- end }}\nconnectToMinio $scheme\n\n{{ if .Values.policies }}\n# Create the policies\n{{- range $idx, $policy := .Values.policies }}\ncreatePolicy {{ $policy.name }} policy_{{ $idx }}\n{{- end }}\n{{- end }}"
  },
  {
    "path": "build/charts/minio/templates/_helper_create_user.txt",
    "content": "#!/bin/sh\nset -e ; # Have script exit in the event of a failed command.\n\n{{- if .Values.configPathmc }}\nMC_CONFIG_DIR=\"{{ .Values.configPathmc }}\"\nMC=\"/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}\"\n{{- else }}\nMC=\"/usr/bin/mc --insecure\"\n{{- end }}\n\n# AccessKey and secretkey credentials file are added to prevent shell execution errors caused by special characters.\n# Special characters for example : ',\",<,>,{,}\nMINIO_ACCESSKEY_SECRETKEY_TMP=\"/tmp/accessKey_and_secretKey_tmp\"\n\n# connectToMinio\n# Use a check-sleep-check loop to wait for MinIO service to be available\nconnectToMinio() {\n  SCHEME=$1\n  ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts\n  set -e ; # fail if we can't read the keys.\n  ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ;\n  set +e ; # The connections to minio are allowed to fail.\n  echo \"Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT\" ;\n  MC_COMMAND=\"${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET\" ;\n  $MC_COMMAND ;\n  STATUS=$? ;\n  until [ $STATUS = 0 ]\n  do\n    ATTEMPTS=`expr $ATTEMPTS + 1` ;\n    echo \\\"Failed attempts: $ATTEMPTS\\\" ;\n    if [ $ATTEMPTS -gt $LIMIT ]; then\n      exit 1 ;\n    fi ;\n    sleep 2 ; # 1 second intervals between attempts\n    $MC_COMMAND ;\n    STATUS=$? ;\n  done ;\n  set -e ; # reset `e` as active\n  return 0\n}\n\n# checkUserExists ()\n# Check if the user exists, by using the exit code of `mc admin user info`\ncheckUserExists() {\n  CMD=$(${MC} admin user info myminio $(head -1 $MINIO_ACCESSKEY_SECRETKEY_TMP) > /dev/null 2>&1)\n  return $?\n}\n\n# createUser ($policy)\ncreateUser() {\n  POLICY=$1\n  #check accessKey_and_secretKey_tmp file\n  if [[ ! -f $MINIO_ACCESSKEY_SECRETKEY_TMP ]];then\n    echo \"credentials file does not exist\"\n    return 1\n  fi\n  if [[ $(cat $MINIO_ACCESSKEY_SECRETKEY_TMP|wc -l) -ne 2 ]];then\n    echo \"credentials file is invalid\"\n    rm -f $MINIO_ACCESSKEY_SECRETKEY_TMP\n    return 1\n  fi\n  USER=$(head -1 $MINIO_ACCESSKEY_SECRETKEY_TMP)\n  # Create the user if it does not exist\n  if ! checkUserExists ; then\n    echo \"Creating user '$USER'\"\n    cat $MINIO_ACCESSKEY_SECRETKEY_TMP | ${MC} admin user add myminio\n  else\n    echo \"User '$USER' already exists.\"\n  fi\n  #clean up credentials files.\n  rm -f $MINIO_ACCESSKEY_SECRETKEY_TMP\n\n  # set policy for user\n  if [ ! -z $POLICY -a $POLICY != \" \" ] ; then\n      echo \"Adding policy '$POLICY' for '$USER'\"\n      ${MC} admin policy set myminio $POLICY user=$USER\n  else\n      echo \"User '$USER' has no policy attached.\"\n  fi\n}\n\n# Try connecting to MinIO instance\n{{- if .Values.tls.enabled }}\nscheme=https\n{{- else }}\nscheme=http\n{{- end }}\nconnectToMinio $scheme\n\n{{ if .Values.users }}\n{{ $global := . }}\n# Create the users\n{{- range .Values.users }}\necho {{ tpl .accessKey $global }} > $MINIO_ACCESSKEY_SECRETKEY_TMP\n{{- if .existingSecret }}\ncat /config/secrets/{{ tpl .existingSecretKey $global }} >> $MINIO_ACCESSKEY_SECRETKEY_TMP\n# Add a new line if it doesn't exist\nsed -i '$a\\' $MINIO_ACCESSKEY_SECRETKEY_TMP\ncreateUser {{ .policy }}\n{{ else }}\necho {{ .secretKey }} >> $MINIO_ACCESSKEY_SECRETKEY_TMP\ncreateUser {{ .policy }}\n{{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/_helper_custom_command.txt",
    "content": "#!/bin/sh\nset -e ; # Have script exit in the event of a failed command.\n\n{{- if .Values.configPathmc }}\nMC_CONFIG_DIR=\"{{ .Values.configPathmc }}\"\nMC=\"/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}\"\n{{- else }}\nMC=\"/usr/bin/mc --insecure\"\n{{- end }}\n\n# connectToMinio\n# Use a check-sleep-check loop to wait for MinIO service to be available\nconnectToMinio() {\n  SCHEME=$1\n  ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts\n  set -e ; # fail if we can't read the keys.\n  ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ;\n  set +e ; # The connections to minio are allowed to fail.\n  echo \"Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT\" ;\n  MC_COMMAND=\"${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET\" ;\n  $MC_COMMAND ;\n  STATUS=$? ;\n  until [ $STATUS = 0 ]\n  do\n    ATTEMPTS=`expr $ATTEMPTS + 1` ;\n    echo \\\"Failed attempts: $ATTEMPTS\\\" ;\n    if [ $ATTEMPTS -gt $LIMIT ]; then\n      exit 1 ;\n    fi ;\n    sleep 2 ; # 1 second intervals between attempts\n    $MC_COMMAND ;\n    STATUS=$? ;\n  done ;\n  set -e ; # reset `e` as active\n  return 0\n}\n\n# runCommand ($@)\n# Run custom mc command\nrunCommand() {\n  ${MC} \"$@\"\n  return $?\n}\n\n# Try connecting to MinIO instance\n{{- if .Values.tls.enabled }}\nscheme=https\n{{- else }}\nscheme=http\n{{- end }}\nconnectToMinio $scheme\n\n{{ if .Values.customCommands }}\n# Run custom commands\n{{- range .Values.customCommands }}\nrunCommand {{ .command }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/_helper_policy.tpl",
    "content": "{{- $statements_length := len .statements -}}\n{{- $statements_length := sub $statements_length 1 -}}\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n{{- range $i, $statement := .statements }}\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n\"{{ $statement.actions | join \"\\\",\\n\\\"\" }}\"\n      ]{{ if $statement.resources }},\n      \"Resource\": [\n\"{{ $statement.resources | join \"\\\",\\n\\\"\" }}\"\n      ]{{ end }}\n{{- if $statement.conditions }}\n{{- $condition_len := len $statement.conditions }}\n{{- $condition_len := sub $condition_len 1 }}\n      ,\n      \"Condition\": {\n {{- range $k,$v := $statement.conditions }}\n {{- range $operator,$object := $v }}\n        \"{{ $operator }}\": { {{ $object }} }{{- if lt $k $condition_len }},{{- end }}\n {{- end }}{{- end }}\n      }{{- end }} \n    }{{ if lt $i $statements_length }},{{end }}\n{{- end }}\n  ]\n}\n"
  },
  {
    "path": "build/charts/minio/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"minio.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"minio.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"minio.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for networkpolicy.\n*/}}\n{{- define \"minio.networkPolicy.apiVersion\" -}}\n{{- if semverCompare \">=1.4-0, <1.7-0\" .Capabilities.KubeVersion.Version -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \">=1.7-0, <1.16-0\" .Capabilities.KubeVersion.Version -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else if semverCompare \"^1.16-0\" .Capabilities.KubeVersion.Version -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for deployment.\n*/}}\n{{- define \"minio.deployment.apiVersion\" -}}\n{{- if semverCompare \"<1.9-0\" .Capabilities.KubeVersion.Version -}}\n{{- print \"apps/v1beta2\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for statefulset.\n*/}}\n{{- define \"minio.statefulset.apiVersion\" -}}\n{{- if semverCompare \"<1.16-0\" .Capabilities.KubeVersion.Version -}}\n{{- print \"apps/v1beta2\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for ingress.\n*/}}\n{{- define \"minio.ingress.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" .Capabilities.KubeVersion.GitVersion -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for console ingress.\n*/}}\n{{- define \"minio.consoleIngress.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" .Capabilities.KubeVersion.GitVersion -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nDetermine secret name.\n*/}}\n{{- define \"minio.secretName\" -}}\n{{- if .Values.existingSecret -}}\n{{- .Values.existingSecret }}\n{{- else -}}\n{{- include \"minio.fullname\" . -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nDetermine name for scc role and rolebinding\n*/}}\n{{- define \"minio.sccRoleName\" -}}\n{{- printf \"%s-%s\" \"scc\" (include \"minio.fullname\" .) | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nProperly format optional additional arguments to MinIO binary\n*/}}\n{{- define \"minio.extraArgs\" -}}\n{{- range .Values.extraArgs -}}\n{{ \" \" }}{{ . }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names\n*/}}\n{{- define \"minio.imagePullSecrets\" -}}\n{{/*\nHelm 2.11 supports the assignment of a value to a variable defined in a different scope,\nbut Helm 2.9 and 2.10 does not support it, so we need to implement this if-else logic.\nAlso, we can not use a single if because lazy evaluation is not an option\n*/}}\n{{- if .Values.global }}\n{{- if .Values.global.imagePullSecrets }}\nimagePullSecrets:\n{{- range .Values.global.imagePullSecrets }}\n  - name: {{ . }}\n{{- end }}\n{{- else if .Values.imagePullSecrets }}\nimagePullSecrets:\n    {{ toYaml .Values.imagePullSecrets }}\n{{- end -}}\n{{- else if .Values.imagePullSecrets }}\nimagePullSecrets:\n    {{ toYaml .Values.imagePullSecrets }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nFormats volumeMount for MinIO TLS keys and trusted certs\n*/}}\n{{- define \"minio.tlsKeysVolumeMount\" -}}\n{{- if .Values.tls.enabled }}\n- name: cert-secret-volume\n  mountPath: {{ .Values.certsPath }}\n{{- end }}\n{{- if or .Values.tls.enabled (ne .Values.trustedCertsSecret \"\") }}\n{{- $casPath := printf \"%s/CAs\" .Values.certsPath | clean }}\n- name: trusted-cert-secret-volume\n  mountPath: {{ $casPath }}\n{{- end }}\n{{- end -}}\n\n{{/*\nFormats volume for MinIO TLS keys and trusted certs\n*/}}\n{{- define \"minio.tlsKeysVolume\" -}}\n{{- if .Values.tls.enabled }}\n- name: cert-secret-volume\n  secret:\n    secretName: {{ .Values.tls.certSecret }}\n    items:\n    - key: {{ .Values.tls.publicCrt }}\n      path: public.crt\n    - key: {{ .Values.tls.privateKey }}\n      path: private.key\n{{- end }}\n{{- if or .Values.tls.enabled (ne .Values.trustedCertsSecret \"\") }}\n{{- $certSecret := eq .Values.trustedCertsSecret \"\" | ternary .Values.tls.certSecret .Values.trustedCertsSecret }}\n{{- $publicCrt := eq .Values.trustedCertsSecret \"\" | ternary .Values.tls.publicCrt \"\" }}\n- name: trusted-cert-secret-volume\n  secret:\n    secretName: {{ $certSecret }}\n    {{- if ne $publicCrt \"\" }}\n    items:\n    - key: {{ $publicCrt }}\n      path: public.crt\n    {{- end }}\n{{- end }}\n{{- end -}}\n\n{{/*\nReturns the available value for certain key in an existing secret (if it exists),\notherwise it generates a random value.\n*/}}\n{{- define \"minio.getValueFromSecret\" }}\n  {{- $len := (default 16 .Length) | int -}}\n  {{- $obj := (lookup \"v1\" \"Secret\" .Namespace .Name).data -}}\n  {{- if $obj }}\n      {{- index $obj .Key | b64dec -}}\n  {{- else -}}\n      {{- randAlphaNum $len -}}\n  {{- end -}}\n{{- end }}\n\n{{- define \"minio.root.username\" -}}\n  {{- if .Values.rootUser }}\n    {{- .Values.rootUser | toString }}\n  {{- else }}\n    {{- include \"minio.getValueFromSecret\" (dict \"Namespace\" .Release.Namespace \"Name\" (include \"minio.fullname\" .) \"Length\" 20 \"Key\" \"rootUser\") }}\n  {{- end }}\n{{- end -}}\n\n{{- define \"minio.root.password\" -}}\n  {{- if .Values.rootPassword }}\n    {{- .Values.rootPassword | toString }}\n  {{- else }}\n    {{- include \"minio.getValueFromSecret\" (dict \"Namespace\" .Release.Namespace \"Name\" (include \"minio.fullname\" .) \"Length\" 40 \"Key\" \"rootPassword\") }}\n  {{- end }}\n{{- end -}}"
  },
  {
    "path": "build/charts/minio/templates/configmap.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ template \"minio.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\ndata:\n  initialize: |-\n{{ include (print $.Template.BasePath \"/_helper_create_bucket.txt\") . | indent 4 }}\n  add-user: |-\n{{ include (print $.Template.BasePath \"/_helper_create_user.txt\") . | indent 4 }}\n  add-policy: |-\n{{ include (print $.Template.BasePath \"/_helper_create_policy.txt\") . | indent 4 }}\n{{- range $idx, $policy := .Values.policies }}\n  # {{ $policy.name }}\n  policy_{{ $idx }}.json: |-\n{{ include (print $.Template.BasePath \"/_helper_policy.tpl\") . | indent 4 }}\n{{ end }}\n  custom-command: |-\n{{ include (print $.Template.BasePath \"/_helper_custom_command.txt\") . | indent 4 }}\n"
  },
  {
    "path": "build/charts/minio/templates/console-ingress.yaml",
    "content": "# minio console ingress\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  annotations:\n    k8s.apisix.apache.org/enable-websocket: \"true\"\n  name: minio-console-ingress\nspec:\n  ingressClassName: nginx\n  rules:\n  - host: {{ .Values.consoleHost }}\n    http:\n      paths:\n      - backend:\n          service:\n            name: minio-console\n            port:\n              number: 9001\n        path: /\n        pathType: Prefix\n"
  },
  {
    "path": "build/charts/minio/templates/console-service.yaml",
    "content": "{{ $scheme := \"http\" }}\n{{- if .Values.tls.enabled }}\n{{ $scheme = \"https\" }}\n{{ end }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"minio.fullname\" . }}-console\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\n{{- if .Values.consoleService.annotations }}\n  annotations:\n{{ toYaml .Values.consoleService.annotations | indent 4 }}\n{{- end }}\nspec:\n{{- if (or (eq .Values.consoleService.type \"ClusterIP\" \"\") (empty .Values.consoleService.type)) }}\n  type: ClusterIP\n  {{- if not (empty .Values.consoleService.clusterIP) }}\n  clusterIP: {{ .Values.consoleService.clusterIP }}\n  {{end}}\n{{- else if eq .Values.consoleService.type \"LoadBalancer\" }}\n  type: {{ .Values.consoleService.type }}\n  loadBalancerIP: {{ default \"\" .Values.consoleService.loadBalancerIP }}\n{{- else }}\n  type: {{ .Values.consoleService.type }}\n{{- end }}\n  ports:\n    - name: {{ $scheme }}\n      port: {{ .Values.consoleService.port }}\n      protocol: TCP\n{{- if (and (eq .Values.consoleService.type \"NodePort\") ( .Values.consoleService.nodePort)) }}\n      nodePort: {{ .Values.consoleService.nodePort }}\n{{- else }}\n      targetPort: {{ .Values.minioConsolePort }}\n{{- end}}\n{{- if .Values.consoleService.externalIPs }}\n  externalIPs:\n{{- range $i , $ip := .Values.consoleService.externalIPs }}\n  - {{ $ip }}\n{{- end }}\n{{- end }}\n  selector:\n    app: {{ template \"minio.name\" . }}\n    release: {{ .Release.Name }}\n"
  },
  {
    "path": "build/charts/minio/templates/deployment.yaml",
    "content": "{{- if eq .Values.mode \"standalone\" }}\n{{ $scheme := \"http\" }}\n{{- if .Values.tls.enabled }}\n{{ $scheme = \"https\" }}\n{{ end }}\n{{ $bucketRoot := or ($.Values.bucketRoot) ($.Values.mountPath) }}\napiVersion: {{ template \"minio.deployment.apiVersion\" . }}\nkind: Deployment\nmetadata:\n  name: {{ template \"minio.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\n{{- if .Values.additionalLabels }}\n{{ toYaml .Values.additionalLabels | trimSuffix \"\\n\" | indent 4 }}\n{{- end }}\n{{- if .Values.additionalAnnotations }}\n  annotations:\n{{ toYaml .Values.additionalAnnotations | trimSuffix \"\\n\" | indent 4 }}\n{{- end }}\nspec:\n  strategy:\n    type: {{ .Values.DeploymentUpdate.type }}\n    {{- if eq .Values.DeploymentUpdate.type \"RollingUpdate\" }}\n    rollingUpdate:\n      maxSurge: {{ .Values.DeploymentUpdate.maxSurge }}\n      maxUnavailable: {{ .Values.DeploymentUpdate.maxUnavailable }}\n    {{- end}}\n  replicas: 1\n  selector:\n    matchLabels:\n      app: {{ template \"minio.name\" . }}\n      release: {{ .Release.Name }}\n  template:\n    metadata:\n      name: {{ template \"minio.fullname\" . }}\n      labels:\n        app: {{ template \"minio.name\" . }}\n        release: {{ .Release.Name }}\n{{- if .Values.podLabels }}\n{{ toYaml .Values.podLabels | indent 8 }}\n{{- end }}\n      annotations:\n{{- if not .Values.ignoreChartChecksums }}\n        checksum/secrets: {{ include (print $.Template.BasePath \"/secrets.yaml\") . | sha256sum }}\n        checksum/config: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n{{- end }}\n{{- if .Values.podAnnotations }}\n{{ toYaml .Values.podAnnotations | trimSuffix \"\\n\" | indent 8 }}\n{{- end }}\n    spec:\n      {{- if .Values.priorityClassName }}\n      priorityClassName: \"{{ .Values.priorityClassName }}\"\n      {{- end }}\n      {{- if .Values.runtimeClassName }}\n      runtimeClassName: \"{{ .Values.runtimeClassName }}\"\n      {{- end }}\n{{- if and .Values.securityContext.enabled .Values.persistence.enabled }}\n      securityContext:\n        runAsUser: {{ .Values.securityContext.runAsUser }}\n        runAsGroup: {{ .Values.securityContext.runAsGroup }}\n        fsGroup: {{ .Values.securityContext.fsGroup }}\n        {{- if and (ge .Capabilities.KubeVersion.Major \"1\") (ge .Capabilities.KubeVersion.Minor \"20\") }}\n        fsGroupChangePolicy: {{ .Values.securityContext.fsGroupChangePolicy }}\n        {{- end }}\n{{- end }}\n{{ if .Values.serviceAccount.create }}\n      serviceAccountName: {{ .Values.serviceAccount.name }}\n{{- end }}\n      containers:\n        - name: {{ .Chart.Name }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          command:\n            - \"/bin/sh\"\n            - \"-ce\"\n            - \"/usr/bin/docker-entrypoint.sh minio server {{ $bucketRoot }} -S {{ .Values.certsPath }} --address :{{ .Values.minioAPIPort }} --console-address :{{ .Values.minioConsolePort }} {{- template \"minio.extraArgs\" . }}\"\n          volumeMounts:\n            - name: minio-user\n              mountPath: \"/tmp/credentials\"\n              readOnly: true\n            - name: export\n              mountPath: {{ .Values.mountPath }}\n              {{- if and .Values.persistence.enabled .Values.persistence.subPath }}\n              subPath: \"{{ .Values.persistence.subPath }}\"\n              {{- end }}\n            {{- if .Values.extraSecret }}\n            - name: extra-secret\n              mountPath: \"/tmp/minio-config-env\"\n            {{- end }}\n            {{- include \"minio.tlsKeysVolumeMount\" . | indent 12 }}\n            {{- if .Values.extraVolumeMounts }}\n              {{- toYaml .Values.extraVolumeMounts | nindent 12 }}\n            {{- end }}\n          ports:\n            - name: {{ $scheme }}\n              containerPort: {{ .Values.minioAPIPort }}\n            - name: {{ $scheme }}-console\n              containerPort: {{ .Values.minioConsolePort }}\n          env:\n            - name: MINIO_ROOT_USER\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"minio.secretName\" . }}\n                  key: rootUser\n            - name: MINIO_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"minio.secretName\" . }}\n                  key: rootPassword\n            {{- if .Values.extraSecret }}\n            - name: MINIO_CONFIG_ENV_FILE\n              value: \"/tmp/minio-config-env/config.env\"\n            {{- end}}\n            {{- if .Values.metrics.serviceMonitor.public }}\n            - name: MINIO_PROMETHEUS_AUTH_TYPE\n              value: \"public\"\n            {{- end}}\n            {{- if .Values.oidc.enabled }}\n            - name: MINIO_IDENTITY_OPENID_CONFIG_URL\n              value: {{ .Values.oidc.configUrl }}\n            - name: MINIO_IDENTITY_OPENID_CLIENT_ID\n              value: {{ .Values.oidc.clientId }}\n            - name: MINIO_IDENTITY_OPENID_CLIENT_SECRET\n              value: {{ .Values.oidc.clientSecret }}\n            - name: MINIO_IDENTITY_OPENID_CLAIM_NAME\n              value: {{ .Values.oidc.claimName }}\n            - name: MINIO_IDENTITY_OPENID_CLAIM_PREFIX\n              value: {{ .Values.oidc.claimPrefix }}\n            - name: MINIO_IDENTITY_OPENID_SCOPES\n              value: {{ .Values.oidc.scopes }}\n            - name: MINIO_IDENTITY_OPENID_REDIRECT_URI\n              value: {{ .Values.oidc.redirectUri }}\n            - name: MINIO_IDENTITY_OPENID_COMMENT\n              value: {{ .Values.oidc.comment }}\n            {{- end}}\n            {{- if .Values.etcd.endpoints }}\n            - name: MINIO_ETCD_ENDPOINTS\n              value: {{ join \",\" .Values.etcd.endpoints | quote }}\n            {{- if .Values.etcd.clientCert }}\n            - name: MINIO_ETCD_CLIENT_CERT\n              value: \"/tmp/credentials/etcd_client_cert.pem\"\n            {{- end }}\n            {{- if .Values.etcd.clientCertKey }}\n            - name: MINIO_ETCD_CLIENT_CERT_KEY\n              value: \"/tmp/credentials/etcd_client_cert_key.pem\"\n            {{- end }}\n            {{- if .Values.etcd.pathPrefix }}\n            - name: MINIO_ETCD_PATH_PREFIX\n              value: {{ .Values.etcd.pathPrefix }}\n            {{- end }}\n            {{- if .Values.etcd.corednsPathPrefix }}\n            - name: MINIO_ETCD_COREDNS_PATH\n              value: {{ .Values.etcd.corednsPathPrefix }}\n            {{- end }}\n            {{- end }}\n            {{- range $key, $val := .Values.environment }}\n            - name: {{ $key }}\n              value: {{ $val | quote }}\n            {{- end}}\n          resources:\n{{ toYaml .Values.resources | indent 12 }}\n{{- with .Values.nodeSelector }}\n      nodeSelector:\n{{ toYaml . | indent 8 }}\n{{- end }}\n{{- include \"minio.imagePullSecrets\" . | indent 6 }}\n{{- with .Values.affinity }}\n      affinity:\n{{ toYaml . | indent 8 }}\n{{- end }}\n{{- with .Values.tolerations }}\n      tolerations:\n{{ toYaml . | indent 8 }}\n{{- end }}\n      volumes:\n        - name: export\n        {{- if .Values.persistence.enabled }}\n          persistentVolumeClaim:\n            claimName: {{ .Values.persistence.existingClaim | default (include \"minio.fullname\" .) }}\n        {{- else }}\n          emptyDir: {}\n        {{- end }}\n        {{- if .Values.extraSecret }}\n        - name: extra-secret\n          secret:\n            secretName: {{ .Values.extraSecret }}\n        {{- end }}\n        - name: minio-user\n          secret:\n            secretName: {{ template \"minio.secretName\" . }}\n        {{- include \"minio.tlsKeysVolume\" . | indent 8 }}\n        {{- if .Values.extraVolumes }}\n          {{ toYaml .Values.extraVolumes | nindent 8 }}\n        {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/ingress.yaml",
    "content": "# minio console ingress\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: oss-ingress\nspec:\n  ingressClassName: nginx\n  rules:\n  - host: {{ .Values.domain }}\n    http:\n      paths:\n      - backend:\n          service:\n            name: minio\n            port:\n              number: 9000\n        path: /\n        pathType: Prefix\n"
  },
  {
    "path": "build/charts/minio/templates/networkpolicy.yaml",
    "content": "{{- if .Values.networkPolicy.enabled }}\nkind: NetworkPolicy\napiVersion: {{ template \"minio.networkPolicy.apiVersion\" . }}\nmetadata:\n  name: {{ template \"minio.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\nspec:\n  podSelector:\n    matchLabels:\n      app: {{ template \"minio.name\" . }}\n      release: {{ .Release.Name }}\n  ingress:\n    - ports:\n        - port: {{ .Values.minioAPIPort }}\n        - port: {{ .Values.minioConsolePort }}\n      {{- if not .Values.networkPolicy.allowExternal }}\n      from:\n        - podSelector:\n            matchLabels:\n              {{ template \"minio.name\" . }}-client: \"true\"\n      {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/poddisruptionbudget.yaml",
    "content": "{{- if .Values.podDisruptionBudget.enabled }}\napiVersion: policy/v1beta1\nkind: PodDisruptionBudget\nmetadata:\n  name: minio\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}\nspec:\n  maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }}\n  selector:\n    matchLabels:\n      app: {{ template \"minio.name\" . }}\n{{- end }}"
  },
  {
    "path": "build/charts/minio/templates/post-install-create-bucket-job.yaml",
    "content": "{{- if .Values.buckets }}\napiVersion: batch/v1\nkind: Job\nmetadata:\n  name: {{ template \"minio.fullname\" . }}-make-bucket-job\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}-make-bucket-job\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\n  annotations:\n    \"helm.sh/hook\": post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": hook-succeeded,before-hook-creation\n{{- with .Values.makeBucketJob.annotations }}\n{{ toYaml . | indent 4 }}\n{{- end }}\nspec:\n  template:\n    metadata:\n      labels:\n        app: {{ template \"minio.name\" . }}-job\n        release: {{ .Release.Name }}\n{{- if .Values.podLabels }}\n{{ toYaml .Values.podLabels | indent 8 }}\n{{- end }}\n{{- if .Values.makeBucketJob.podAnnotations }}\n      annotations:\n{{ toYaml .Values.makeBucketJob.podAnnotations | indent 8 }}\n{{- end }}\n    spec:\n      restartPolicy: OnFailure\n{{- include \"minio.imagePullSecrets\" . | indent 6 }}\n{{- if .Values.nodeSelector }}\n      nodeSelector:\n{{ toYaml .Values.makeBucketJob.nodeSelector | indent 8 }}\n{{- end }}\n{{- with .Values.makeBucketJob.affinity }}\n      affinity:\n{{ toYaml . | indent 8 }}\n{{- end }}\n{{- with .Values.makeBucketJob.tolerations }}\n      tolerations:\n{{ toYaml . | indent 8 }}\n{{- end }}\n{{- if .Values.makeBucketJob.securityContext.enabled }}\n      securityContext:\n        runAsUser: {{ .Values.makeBucketJob.securityContext.runAsUser }}\n        runAsGroup: {{ .Values.makeBucketJob.securityContext.runAsGroup }}\n        fsGroup: {{ .Values.makeBucketJob.securityContext.fsGroup }}\n{{- end }}\n      volumes:\n        - name: minio-configuration\n          projected:\n            sources:\n            - configMap:\n                name: {{ template \"minio.fullname\" . }}\n            - secret:\n                name: {{ template \"minio.secretName\" . }}\n        {{- if .Values.tls.enabled }}\n        - name: cert-secret-volume-mc\n          secret:\n            secretName: {{ .Values.tls.certSecret }}\n            items:\n            - key: {{ .Values.tls.publicCrt }}\n              path: CAs/public.crt\n        {{ end }}\n        {{- if .Values.makeBucketJob.extraVolumes }}\n          {{- toYaml .Values.makeBucketJob.extraVolumes | nindent 8 }}\n        {{- end }}\n{{ if .Values.serviceAccount.create }}\n      serviceAccountName: {{ .Values.serviceAccount.name }}\n{{- end }}\n      containers:\n      - name: minio-mc\n        image: \"{{ .Values.mcImage.repository }}:{{ .Values.mcImage.tag }}\"\n        imagePullPolicy: {{ .Values.mcImage.pullPolicy }}\n        {{- if .Values.makeBucketJob.exitCommand }}\n        command: [\"/bin/sh\", \"-c\"]\n        args: [\"/bin/sh /config/initialize; x=$(echo $?); {{ .Values.makeBucketJob.exitCommand }} && exit $x\" ]\n        {{- else }}\n        command: [\"/bin/sh\", \"/config/initialize\"]\n        {{- end }}\n        env:\n          - name: MINIO_ENDPOINT\n            value: {{ template \"minio.fullname\" . }}\n          - name: MINIO_PORT\n            value: {{ .Values.service.port | quote }}\n        volumeMounts:\n          - name: minio-configuration\n            mountPath: /config\n          {{- if .Values.tls.enabled }}\n          - name: cert-secret-volume-mc\n            mountPath: {{ .Values.configPathmc }}certs\n          {{ end }}\n          {{- if .Values.makeBucketJob.extraVolumeMounts }}\n            {{- toYaml .Values.makeBucketJob.extraVolumeMounts | nindent 10 }}\n          {{- end }}\n        resources:\n{{ toYaml .Values.makeBucketJob.resources | indent 10 }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/post-install-create-policy-job.yaml",
    "content": "{{- if .Values.policies }}\napiVersion: batch/v1\nkind: Job\nmetadata:\n  name: {{ template \"minio.fullname\" . }}-make-policies-job\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}-make-policies-job\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\n  annotations:\n    \"helm.sh/hook\": post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": hook-succeeded,before-hook-creation\n{{- with .Values.makePolicyJob.annotations }}\n{{ toYaml . | indent 4 }}\n{{- end }}\nspec:\n  template:\n    metadata:\n      labels:\n        app: {{ template \"minio.name\" . }}-job\n        release: {{ .Release.Name }}\n{{- if .Values.podLabels }}\n{{ toYaml .Values.podLabels | indent 8 }}\n{{- end }}\n{{- if .Values.makePolicyJob.podAnnotations }}\n      annotations:\n{{ toYaml .Values.makePolicyJob.podAnnotations | indent 8 }}\n{{- end }}\n    spec:\n      restartPolicy: OnFailure\n{{- include \"minio.imagePullSecrets\" . | indent 6 }}\n{{- if .Values.nodeSelector }}\n      nodeSelector:\n{{ toYaml .Values.makePolicyJob.nodeSelector | indent 8 }}\n{{- end }}\n{{- with .Values.makePolicyJob.affinity }}\n      affinity:\n{{ toYaml . | indent 8 }}\n{{- end }}\n{{- with .Values.makePolicyJob.tolerations }}\n      tolerations:\n{{ toYaml . | indent 8 }}\n{{- end }}\n{{- if .Values.makePolicyJob.securityContext.enabled }}\n      securityContext:\n        runAsUser: {{ .Values.makePolicyJob.securityContext.runAsUser }}\n        runAsGroup: {{ .Values.makePolicyJob.securityContext.runAsGroup }}\n        fsGroup: {{ .Values.makePolicyJob.securityContext.fsGroup }}\n{{- end }}\n      volumes:\n        - name: minio-configuration\n          projected:\n            sources:\n            - configMap:\n                name: {{ template \"minio.fullname\" . }}\n            - secret:\n                name: {{ template \"minio.secretName\" . }}\n        {{- if .Values.tls.enabled }}\n        - name: cert-secret-volume-mc\n          secret:\n            secretName: {{ .Values.tls.certSecret }}\n            items:\n            - key: {{ .Values.tls.publicCrt }}\n              path: CAs/public.crt\n        {{ end }}\n        {{- if .Values.makePolicyJob.extraVolumes }}\n          {{- toYaml .Values.makePolicyJob.extraVolumes | nindent 8 }}\n        {{- end }}\n{{ if .Values.serviceAccount.create }}\n      serviceAccountName: {{ .Values.serviceAccount.name }}\n{{- end }}\n      containers:\n      - name: minio-mc\n        image: \"{{ .Values.mcImage.repository }}:{{ .Values.mcImage.tag }}\"\n        imagePullPolicy: {{ .Values.mcImage.pullPolicy }}\n        {{- if .Values.makePolicyJob.exitCommand }}\n        command: [\"/bin/sh\", \"-c\"]\n        args: [\"/bin/sh /config/add-policy; x=$(echo $?); {{ .Values.makePolicyJob.exitCommand }} && exit $x\" ]\n        {{- else }}\n        command: [\"/bin/sh\", \"/config/add-policy\"]\n        {{- end }}\n        env:\n          - name: MINIO_ENDPOINT\n            value: {{ template \"minio.fullname\" . }}\n          - name: MINIO_PORT\n            value: {{ .Values.service.port | quote }}\n        volumeMounts:\n          - name: minio-configuration\n            mountPath: /config\n          {{- if .Values.tls.enabled }}\n          - name: cert-secret-volume-mc\n            mountPath: {{ .Values.configPathmc }}certs\n          {{ end }}\n          {{- if .Values.makePolicyJob.extraVolumeMounts }}\n            {{- toYaml .Values.makePolicyJob.extraVolumeMounts | nindent 10 }}\n          {{- end }}\n        resources:\n{{ toYaml .Values.makePolicyJob.resources | indent 10 }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/post-install-create-user-job.yaml",
    "content": "{{- $global := . -}}\n{{- if .Values.users }}\napiVersion: batch/v1\nkind: Job\nmetadata:\n  name: {{ template \"minio.fullname\" . }}-make-user-job\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}-make-user-job\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\n  annotations:\n    \"helm.sh/hook\": post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": hook-succeeded,before-hook-creation\n{{- with .Values.makeUserJob.annotations }}\n{{ toYaml . | indent 4 }}\n{{- end }}\nspec:\n  template:\n    metadata:\n      labels:\n        app: {{ template \"minio.name\" . }}-job\n        release: {{ .Release.Name }}\n{{- if .Values.podLabels }}\n{{ toYaml .Values.podLabels | indent 8 }}\n{{- end }}\n{{- if .Values.makeUserJob.podAnnotations }}\n      annotations:\n{{ toYaml .Values.makeUserJob.podAnnotations | indent 8 }}\n{{- end }}\n    spec:\n      restartPolicy: OnFailure\n{{- include \"minio.imagePullSecrets\" . | indent 6 }}\n{{- if .Values.nodeSelector }}\n      nodeSelector:\n{{ toYaml .Values.makeUserJob.nodeSelector | indent 8 }}\n{{- end }}\n{{- with .Values.makeUserJob.affinity }}\n      affinity:\n{{ toYaml . | indent 8 }}\n{{- end }}\n{{- with .Values.makeUserJob.tolerations }}\n      tolerations:\n{{ toYaml . | indent 8 }}\n{{- end }}\n{{- if .Values.makeUserJob.securityContext.enabled }}\n      securityContext:\n        runAsUser: {{ .Values.makeUserJob.securityContext.runAsUser }}\n        runAsGroup: {{ .Values.makeUserJob.securityContext.runAsGroup }}\n        fsGroup: {{ .Values.makeUserJob.securityContext.fsGroup }}\n{{- end }}\n      volumes:\n        - name: minio-configuration\n          projected:\n            sources:\n            - configMap:\n                name: {{ template \"minio.fullname\" . }}\n            - secret:\n                name: {{ template \"minio.secretName\" . }}\n            {{- range .Values.users }}\n            {{- if .existingSecret }}\n            - secret:\n                name: {{ tpl .existingSecret $global }}\n                items:\n                  - key: {{ .existingSecretKey }}\n                    path: secrets/{{ tpl .existingSecretKey $global }}\n            {{- end }}\n            {{- end }}\n        {{- if .Values.tls.enabled }}\n        - name: cert-secret-volume-mc\n          secret:\n            secretName: {{ .Values.tls.certSecret }}\n            items:\n            - key: {{ .Values.tls.publicCrt }}\n              path: CAs/public.crt\n        {{ end }}\n        {{- if .Values.makeUserJob.extraVolumes }}\n          {{- toYaml .Values.makeUserJob.extraVolumes | nindent 8 }}\n        {{- end }}\n{{ if .Values.serviceAccount.create }}\n      serviceAccountName: {{ .Values.serviceAccount.name }}\n{{- end }}\n      containers:\n      - name: minio-mc\n        image: \"{{ .Values.mcImage.repository }}:{{ .Values.mcImage.tag }}\"\n        imagePullPolicy: {{ .Values.mcImage.pullPolicy }}\n        {{- if .Values.makeUserJob.exitCommand }}\n        command: [\"/bin/sh\", \"-c\"]\n        args: [\"/bin/sh /config/add-user; x=$(echo $?); {{ .Values.makeUserJob.exitCommand }} && exit $x\" ]\n        {{- else }}\n        command: [\"/bin/sh\", \"/config/add-user\"]\n        {{- end }}\n        env:\n          - name: MINIO_ENDPOINT\n            value: {{ template \"minio.fullname\" . }}\n          - name: MINIO_PORT\n            value: {{ .Values.service.port | quote }}\n        volumeMounts:\n          - name: minio-configuration\n            mountPath: /config\n          {{- if .Values.tls.enabled }}\n          - name: cert-secret-volume-mc\n            mountPath: {{ .Values.configPathmc }}certs\n          {{ end }}\n          {{- if .Values.makeUserJob.extraVolumeMounts }}\n            {{- toYaml .Values.makeUserJob.extraVolumeMounts | nindent 10 }}\n          {{- end }}\n        resources:\n{{ toYaml .Values.makeUserJob.resources | indent 10 }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/post-install-custom-command.yaml",
    "content": "{{- if .Values.customCommands }}\napiVersion: batch/v1\nkind: Job\nmetadata:\n  name: {{ template \"minio.fullname\" . }}-custom-command-job\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}-custom-command-job\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\n  annotations:\n    \"helm.sh/hook\": post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": hook-succeeded,before-hook-creation\n{{- with .Values.customCommandJob.annotations }}\n{{ toYaml . | indent 4 }}\n{{- end }}\nspec:\n  template:\n    metadata:\n      labels:\n        app: {{ template \"minio.name\" . }}-job\n        release: {{ .Release.Name }}\n{{- if .Values.podLabels }}\n{{ toYaml .Values.podLabels | indent 8 }}\n{{- end }}\n{{- if .Values.customCommandJob.podAnnotations }}\n      annotations:\n{{ toYaml .Values.customCommandJob.podAnnotations | indent 8 }}\n{{- end }}\n    spec:\n      restartPolicy: OnFailure\n{{- include \"minio.imagePullSecrets\" . | indent 6 }}\n{{- if .Values.nodeSelector }}\n      nodeSelector:\n{{ toYaml .Values.customCommandJob.nodeSelector | indent 8 }}\n{{- end }}\n{{- with .Values.customCommandJob.affinity }}\n      affinity:\n{{ toYaml . | indent 8 }}\n{{- end }}\n{{- with .Values.customCommandJob.tolerations }}\n      tolerations:\n{{ toYaml . | indent 8 }}\n{{- end }}\n{{- if .Values.customCommandJob.securityContext.enabled }}\n      securityContext:\n        runAsUser: {{ .Values.customCommandJob.securityContext.runAsUser }}\n        runAsGroup: {{ .Values.customCommandJob.securityContext.runAsGroup }}\n        fsGroup: {{ .Values.customCommandJob.securityContext.fsGroup }}\n{{- end }}\n      volumes:\n        - name: minio-configuration\n          projected:\n            sources:\n            - configMap:\n                name: {{ template \"minio.fullname\" . }}\n            - secret:\n                name: {{ template \"minio.secretName\" . }}\n        {{- if .Values.tls.enabled }}\n        - name: cert-secret-volume-mc\n          secret:\n            secretName: {{ .Values.tls.certSecret }}\n            items:\n            - key: {{ .Values.tls.publicCrt }}\n              path: CAs/public.crt\n        {{ end }}\n      containers:\n      - name: minio-mc\n        image: \"{{ .Values.mcImage.repository }}:{{ .Values.mcImage.tag }}\"\n        imagePullPolicy: {{ .Values.mcImage.pullPolicy }}\n        {{- if .Values.customCommandJob.exitCommand }}\n        command: [\"/bin/sh\", \"-c\"]\n        args: [\"/bin/sh /config/custom-command; x=$(echo $?); {{ .Values.customCommandJob.exitCommand }} && exit $x\" ]\n        {{- else }}\n        command: [\"/bin/sh\", \"/config/custom-command\"]\n        {{- end }}\n        env:\n          - name: MINIO_ENDPOINT\n            value: {{ template \"minio.fullname\" . }}\n          - name: MINIO_PORT\n            value: {{ .Values.service.port | quote }}\n        volumeMounts:\n          - name: minio-configuration\n            mountPath: /config\n          {{- if .Values.tls.enabled }}\n          - name: cert-secret-volume-mc\n            mountPath: {{ .Values.configPathmc }}certs\n          {{ end }}\n        resources:\n{{ toYaml .Values.customCommandJob.resources | indent 10 }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/pvc.yaml",
    "content": "{{- if eq .Values.mode \"standalone\" }}\n{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: {{ template \"minio.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\n{{- if .Values.persistence.annotations }}\n  annotations:\n{{ toYaml .Values.persistence.annotations | trimSuffix \"\\n\" | indent 4 }}\n{{- end }}\nspec:\n  accessModes:\n    - {{ .Values.persistence.accessMode | quote }}\n  resources:\n    requests:\n      storage: {{ .Values.persistence.size | quote }}\n\n{{- if .Values.persistence.storageClass }}\n{{- if (eq \"-\" .Values.persistence.storageClass) }}\n  storageClassName: \"\"\n{{- else }}\n  storageClassName: \"{{ .Values.persistence.storageClass }}\"\n{{- end }}\n{{- end }}\n{{- if .Values.persistence.VolumeName }}\n  volumeName: \"{{ .Values.persistence.VolumeName }}\"\n{{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/secrets.yaml",
    "content": "{{- if not .Values.existingSecret }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"minio.secretName\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\ntype: Opaque\ndata:\n  rootUser: {{ include \"minio.root.username\" . | b64enc | quote }}\n  rootPassword: {{ include \"minio.root.password\" . | b64enc | quote }}\n  {{- if .Values.etcd.clientCert }}\n  etcd_client.crt: {{ .Values.etcd.clientCert | toString | b64enc | quote }}\n  {{- end }}\n  {{- if .Values.etcd.clientCertKey }}\n  etcd_client.key: {{ .Values.etcd.clientCertKey | toString | b64enc | quote }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/securitycontextconstraints.yaml",
    "content": "{{- if and .Values.securityContext.enabled .Values.persistence.enabled (.Capabilities.APIVersions.Has \"security.openshift.io/v1\") }}\napiVersion: security.openshift.io/v1\nkind: SecurityContextConstraints\nmetadata:\n  name: {{ template \"minio.fullname\" . }}\n  labels:\n    app: {{ template \"minio.name\" . }}\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\nallowHostDirVolumePlugin: false\nallowHostIPC: false\nallowHostNetwork: false\nallowHostPID: false\nallowHostPorts: false\nallowPrivilegeEscalation: true\nallowPrivilegedContainer: false\nallowedCapabilities: []\nreadOnlyRootFilesystem: false\ndefaultAddCapabilities: []\nrequiredDropCapabilities:\n- KILL\n- MKNOD\n- SETUID\n- SETGID\nfsGroup:\n  type: MustRunAs\n  ranges:\n  - max: {{ .Values.securityContext.fsGroup }}\n    min: {{ .Values.securityContext.fsGroup }}\nrunAsUser:\n  type: MustRunAs\n  uid: {{ .Values.securityContext.runAsUser }}\nseLinuxContext:\n  type: MustRunAs\nsupplementalGroups:\n  type: RunAsAny\nvolumes:\n- configMap\n- downwardAPI\n- emptyDir\n- persistentVolumeClaim\n- projected\n- secret\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/service.yaml",
    "content": "{{ $scheme := \"http\" }}\n{{- if .Values.tls.enabled }}\n{{ $scheme = \"https\" }}\n{{ end }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"minio.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\n    monitoring: \"true\"\n{{- if .Values.service.annotations }}\n  annotations:\n{{ toYaml .Values.service.annotations | indent 4 }}\n{{- end }}\nspec:\n{{- if (or (eq .Values.service.type \"ClusterIP\" \"\") (empty .Values.service.type)) }}\n  type: ClusterIP\n  {{- if not (empty .Values.service.clusterIP) }}\n  clusterIP: {{ .Values.service.clusterIP }}\n  {{end}}\n{{- else if eq .Values.service.type \"LoadBalancer\" }}\n  type: {{ .Values.service.type }}\n  loadBalancerIP: {{ default \"\" .Values.service.loadBalancerIP }}\n{{- else }}\n  type: {{ .Values.service.type }}\n{{- end }}\n  ports:\n    - name: {{ $scheme }}\n      port: {{ .Values.service.port }}\n      protocol: TCP\n{{- if (and (eq .Values.service.type \"NodePort\") ( .Values.service.nodePort)) }}\n      nodePort: {{ .Values.service.nodePort }}\n{{- else }}\n      targetPort: {{ .Values.minioAPIPort }}\n{{- end}}\n{{- if .Values.service.externalIPs }}\n  externalIPs:\n{{- range $i , $ip := .Values.service.externalIPs }}\n  - {{ $ip }}\n{{- end }}\n{{- end }}\n  selector:\n    app: {{ template \"minio.name\" . }}\n    release: {{ .Release.Name }}\n"
  },
  {
    "path": "build/charts/minio/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ .Values.serviceAccount.name | quote }}\n  namespace: {{ .Release.Namespace | quote }}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/minio/templates/servicemonitor.yaml",
    "content": "{{- if and .Values.metrics.serviceMonitor.enabled .Values.metrics.serviceMonitor.includeNode}}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"minio.fullname\" . }}\n  {{- if .Values.metrics.serviceMonitor.namespace }}\n  namespace: {{ .Values.metrics.serviceMonitor.namespace }}\n  {{ else }}\n  namespace: {{ .Release.Namespace | quote }}\n  {{- end }}\n  labels:\n    app: {{ template \"minio.name\" . }}\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\n    {{- if .Values.metrics.serviceMonitor.additionalLabels }}\n{{ toYaml .Values.metrics.serviceMonitor.additionalLabels | indent 4 }}\n    {{- end }}\n{{- if .Values.metrics.serviceMonitor.annotations }}\n  annotations:\n{{ toYaml .Values.metrics.serviceMonitor.annotations | trimSuffix \"\\n\" | indent 4 }}\n{{- end }}\nspec:\n  endpoints:\n    {{- if .Values.tls.enabled }}\n    - port: https\n      scheme: https\n      tlsConfig:\n        ca:\n          secret:\n            name: {{ .Values.tls.certSecret }}\n            key: {{ .Values.tls.publicCrt }}\n        serverName: {{ template \"minio.fullname\" . }}\n    {{ else }}\n    - port: http\n      scheme: http\n    {{- end }}\n      path: /minio/v2/metrics/node\n      {{- if .Values.metrics.serviceMonitor.interval }}\n      interval: {{ .Values.metrics.serviceMonitor.interval }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.scrapeTimeout }}\n      scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.relabelConfigs }}\n{{ toYaml .Values.metrics.serviceMonitor.relabelConfigs | indent 6 }}\n      {{- end }}\n      {{- if not .Values.metrics.serviceMonitor.public }}\n      bearerTokenSecret:\n        name: {{ template \"minio.fullname\" . }}-prometheus\n        key: token\n      {{- end }}\n  namespaceSelector:\n    matchNames:\n      - {{ .Release.Namespace | quote }}\n  selector:\n    matchLabels:\n      app: {{ include \"minio.name\" . }}\n      release: {{ .Release.Name }}\n      monitoring: \"true\"\n{{- end }}\n{{- if .Values.metrics.serviceMonitor.enabled }}\n---\napiVersion: monitoring.coreos.com/v1\nkind: Probe\nmetadata:\n  name: {{ template \"minio.fullname\" . }}-cluster\n  {{- if .Values.metrics.serviceMonitor.namespace }}\n  namespace: {{ .Values.metrics.serviceMonitor.namespace }}\n  {{ else }}\n  namespace: {{ .Release.Namespace | quote }}\n  {{- end }}\n  labels:\n    app: {{ template \"minio.name\" . }}\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\n    {{- if .Values.metrics.serviceMonitor.additionalLabels }}\n{{ toYaml .Values.metrics.serviceMonitor.additionalLabels | indent 4 }}\n    {{- end }}\nspec:\n  jobName: {{ template \"minio.fullname\" . }}\n  {{- if .Values.tls.enabled }}\n  tlsConfig:\n    ca:\n      secret:\n        name: {{ .Values.tls.certSecret }}\n        key: {{ .Values.tls.publicCrt }}\n    serverName: {{ template \"minio.fullname\" . }}\n  {{- end }}\n  prober:\n    url: {{ template \"minio.fullname\" . }}.{{ .Release.Namespace }}:{{ .Values.service.port }}\n    path: /minio/v2/metrics/cluster\n    {{- if .Values.tls.enabled }}\n    scheme: https\n    {{ else }}\n    scheme: http\n    {{- end }}\n  {{- if .Values.metrics.serviceMonitor.relabelConfigsCluster }}\n{{ toYaml .Values.metrics.serviceMonitor.relabelConfigsCluster | indent 2 }}\n  {{- end }}\n  targets:\n    staticConfig:\n      static:\n      - {{ template \"minio.fullname\" . }}.{{ .Release.Namespace }}\n      {{- if not .Values.metrics.serviceMonitor.public }}\n      {{- if .Values.metrics.serviceMonitor.interval }}\n      interval: {{ .Values.metrics.serviceMonitor.interval }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.scrapeTimeout }}\n      scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}\n      {{- end }}\n      bearerTokenSecret:\n        name: {{ template \"minio.fullname\" . }}-prometheus\n        key: token\n      {{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/templates/statefulset.yaml",
    "content": "{{- if eq .Values.mode \"distributed\" }}\n{{ $poolCount := .Values.pools | int }}\n{{ $nodeCount := .Values.replicas | int }}\n{{ $replicas := mul $poolCount $nodeCount }}\n{{ $drivesPerNode := .Values.drivesPerNode | int }}\n{{ $scheme := \"http\" }}\n{{- if .Values.tls.enabled }}\n{{ $scheme = \"https\" }}\n{{ end }}\n{{ $mountPath := .Values.mountPath }}\n{{ $bucketRoot := or ($.Values.bucketRoot) ($.Values.mountPath) }}\n{{ $subPath := .Values.persistence.subPath }}\n{{ $penabled := .Values.persistence.enabled }}\n{{ $accessMode := .Values.persistence.accessMode }}\n{{ $storageClass := .Values.persistence.storageClass }}\n{{ $psize := .Values.persistence.size }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"minio.fullname\" . }}-svc\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}\n    chart: {{ template \"minio.chart\" . }}\n    release: \"{{ .Release.Name }}\"\n    heritage: \"{{ .Release.Service }}\"\nspec:\n  publishNotReadyAddresses: true\n  clusterIP: None\n  ports:\n    - name: {{ $scheme }}\n      port: {{ .Values.service.port }}\n      protocol: TCP\n      targetPort: {{ .Values.minioAPIPort }}\n  selector:\n    app: {{ template \"minio.name\" . }}\n    release: {{ .Release.Name }}\n---\napiVersion: {{ template \"minio.statefulset.apiVersion\" . }}\nkind: StatefulSet\nmetadata:\n  name: {{ template \"minio.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels:\n    app: {{ template \"minio.name\" . }}\n    chart: {{ template \"minio.chart\" . }}\n    release: {{ .Release.Name }}\n    heritage: {{ .Release.Service }}\n{{- if .Values.additionalLabels }}\n{{ toYaml .Values.additionalLabels | trimSuffix \"\\n\" | indent 4 }}\n{{- end }}\n{{- if .Values.additionalAnnotations }}\n  annotations:\n{{ toYaml .Values.additionalAnnotations | trimSuffix \"\\n\" | indent 4 }}\n{{- end }}\nspec:\n  updateStrategy:\n    type: {{ .Values.StatefulSetUpdate.updateStrategy }}\n  podManagementPolicy: \"Parallel\"\n  serviceName: {{ template \"minio.fullname\" . }}-svc\n  replicas: {{ $replicas }}\n  selector:\n    matchLabels:\n      app: {{ template \"minio.name\" . }}\n      release: {{ .Release.Name }}\n  template:\n    metadata:\n      name: {{ template \"minio.fullname\" . }}\n      labels:\n        app: {{ template \"minio.name\" . }}\n        release: {{ .Release.Name }}\n{{- if .Values.podLabels }}\n{{ toYaml .Values.podLabels | indent 8 }}\n{{- end }}\n      annotations:\n{{- if not .Values.ignoreChartChecksums }}\n        checksum/secrets: {{ include (print $.Template.BasePath \"/secrets.yaml\") . | sha256sum }}\n        checksum/config: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n{{- end }}\n{{- if .Values.podAnnotations }}\n{{ toYaml .Values.podAnnotations | trimSuffix \"\\n\" | indent 8 }}\n{{- end }}\n    spec:\n      {{- if .Values.priorityClassName }}\n      priorityClassName: \"{{ .Values.priorityClassName }}\"\n      {{- end }}\n      {{- if .Values.runtimeClassName }}\n      runtimeClassName: \"{{ .Values.runtimeClassName }}\"\n      {{- end }}\n{{- if and .Values.securityContext.enabled .Values.persistence.enabled }}\n      securityContext:\n        runAsUser: {{ .Values.securityContext.runAsUser }}\n        runAsGroup: {{ .Values.securityContext.runAsGroup }}\n        fsGroup: {{ .Values.securityContext.fsGroup }}\n        {{- if and (ge .Capabilities.KubeVersion.Major \"1\") (ge .Capabilities.KubeVersion.Minor \"20\") }}\n        fsGroupChangePolicy: {{ .Values.securityContext.fsGroupChangePolicy }}\n        {{- end }}\n{{- end }}\n{{ if .Values.serviceAccount.create }}\n      serviceAccountName: {{ .Values.serviceAccount.name }}\n{{- end }}\n      containers:\n        - name: {{ .Chart.Name }}\n          image: {{ .Values.image.repository }}:{{ .Values.image.tag }}\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n\n          command: [ \"/bin/sh\",\n            \"-ce\",\n            \"/usr/bin/docker-entrypoint.sh minio server {{- range $i := until $poolCount }}{{ $factor := mul $i $nodeCount }}{{ $endIndex := add $factor $nodeCount }}{{ $beginIndex := mul $i $nodeCount }}  {{ $scheme }}://{{ template `minio.fullname` $ }}-{{ `{` }}{{ $beginIndex }}...{{ sub $endIndex 1 }}{{ `}`}}.{{ template `minio.fullname` $ }}-svc.{{ $.Release.Namespace }}.svc.{{ $.Values.clusterDomain }}{{if (gt $drivesPerNode 1)}}{{ $bucketRoot }}-{{ `{` }}0...{{ sub $drivesPerNode 1 }}{{ `}` }}{{else}}{{ $bucketRoot }}{{end}}{{- end}} -S {{ .Values.certsPath }} --address :{{ .Values.minioAPIPort }} --console-address :{{ .Values.minioConsolePort }} {{- template `minio.extraArgs` . }}\" ]\n          volumeMounts:\n            {{- if $penabled }}\n            {{- if (gt $drivesPerNode 1) }}\n            {{- range $i := until $drivesPerNode }}\n            - name: export-{{ $i }}\n              mountPath: {{ $mountPath }}-{{ $i }}\n              {{- if and $penabled $subPath }}\n              subPath: {{ $subPath }}\n              {{- end }}\n            {{- end }}\n            {{- else }}\n            - name: export\n              mountPath: {{ $mountPath }}\n              {{- if and $penabled $subPath }}\n              subPath: {{ $subPath }}\n              {{- end }}\n            {{- end }}\n            {{- end }}\n            {{- if .Values.extraSecret }}\n            - name: extra-secret\n              mountPath: \"/tmp/minio-config-env\"\n            {{- end }}\n            {{- include \"minio.tlsKeysVolumeMount\" . | indent 12 }}\n            {{- if .Values.extraVolumeMounts }}\n              {{- toYaml .Values.extraVolumeMounts | nindent 12 }}\n            {{- end }}\n          ports:\n            - name: {{ $scheme }}\n              containerPort: {{ .Values.minioAPIPort }}\n            - name: {{ $scheme }}-console\n              containerPort: {{ .Values.minioConsolePort }}\n          env:\n            - name: MINIO_DOMAIN\n              value: {{ .Values.domain }}\n            - name: MINIO_ROOT_USER\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"minio.secretName\" . }}\n                  key: rootUser\n            - name: MINIO_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"minio.secretName\" . }}\n                  key: rootPassword\n            {{- if .Values.extraSecret }}\n            - name: MINIO_CONFIG_ENV_FILE\n              value: \"/tmp/minio-config-env/config.env\"\n            {{- end}}\n            {{- if .Values.metrics.serviceMonitor.public }}\n            - name: MINIO_PROMETHEUS_AUTH_TYPE\n              value: \"public\"\n            {{- end}}\n            {{- if .Values.oidc.enabled }}\n            - name: MINIO_IDENTITY_OPENID_CONFIG_URL\n              value: {{ .Values.oidc.configUrl }}\n            - name: MINIO_IDENTITY_OPENID_CLIENT_ID\n              value: {{ .Values.oidc.clientId }}\n            - name: MINIO_IDENTITY_OPENID_CLIENT_SECRET\n              value: {{ .Values.oidc.clientSecret }}\n            - name: MINIO_IDENTITY_OPENID_CLAIM_NAME\n              value: {{ .Values.oidc.claimName }}\n            - name: MINIO_IDENTITY_OPENID_CLAIM_PREFIX\n              value: {{ .Values.oidc.claimPrefix }}\n            - name: MINIO_IDENTITY_OPENID_SCOPES\n              value: {{ .Values.oidc.scopes }}\n            - name: MINIO_IDENTITY_OPENID_REDIRECT_URI\n              value: {{ .Values.oidc.redirectUri }}\n            - name: MINIO_IDENTITY_OPENID_COMMENT\n              value: {{ .Values.oidc.comment }}\n            {{- end}}\n            {{- range $key, $val := .Values.environment }}\n            - name: {{ $key }}\n              value: {{ $val | quote }}\n            {{- end}}\n          resources:\n{{ toYaml .Values.resources | indent 12 }}\n    {{- with .Values.nodeSelector }}\n      nodeSelector:\n{{ toYaml . | indent 8 }}\n    {{- end }}\n{{- include \"minio.imagePullSecrets\" . | indent 6 }}\n    {{- with .Values.affinity }}\n      affinity:\n{{ toYaml . | indent 8 }}\n    {{- end }}\n    {{- with .Values.tolerations }}\n      tolerations:\n{{ toYaml . | indent 8 }}\n    {{- end }}\n    {{- if and (gt $replicas 1) (ge .Capabilities.KubeVersion.Major \"1\") (ge .Capabilities.KubeVersion.Minor \"19\") }}\n    {{- with .Values.topologySpreadConstraints }}\n      topologySpreadConstraints:\n{{ toYaml . | indent 8 }}\n    {{- end }}\n    {{- end }}\n      volumes:\n        - name: minio-user\n          secret:\n            secretName: {{ template \"minio.secretName\" . }}\n        {{- if .Values.extraSecret }}\n        - name: extra-secret\n          secret:\n            secretName: {{ .Values.extraSecret }}\n        {{- end }}\n        {{- include \"minio.tlsKeysVolume\" . | indent 8 }}\n        {{- if .Values.extraVolumes }}\n          {{ toYaml .Values.extraVolumes | nindent 8 }}\n        {{- end }}\n{{- if .Values.persistence.enabled }}\n  volumeClaimTemplates:\n  {{- if gt $drivesPerNode 1 }}\n    {{- range $diskId := until $drivesPerNode}}\n    - metadata:\n        name: export-{{ $diskId }}\n      {{- if $.Values.persistence.annotations }}\n        annotations:\n{{ toYaml $.Values.persistence.annotations | trimSuffix \"\\n\" | indent 10 }}\n      {{- end }}\n      spec:\n        accessModes: [ {{ $accessMode | quote }} ]\n        {{- if $storageClass }}\n        storageClassName: {{ $storageClass }}\n        {{- end }}\n        resources:\n          requests:\n            storage: {{ $psize }}\n    {{- end }}\n  {{- else }}\n    - metadata:\n        name: export\n      {{- if $.Values.persistence.annotations }}\n        annotations:\n{{ toYaml $.Values.persistence.annotations | trimSuffix \"\\n\" | indent 10 }}\n      {{- end }}\n      spec:\n        accessModes: [ {{ $accessMode | quote }} ]\n        {{- if $storageClass }}\n        storageClassName: {{ $storageClass }}\n        {{- end }}\n        resources:\n          requests:\n            storage: {{ $psize }}\n  {{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/minio/values.yaml",
    "content": "## Provide a name in place of minio for `app:` labels\n##\n\nconsoleHost: \"\"\ndomain: \"\"\n\nnameOverride: \"\"\n\n## Provide a name to substitute for the full names of resources\n##\nfullnameOverride: \"\"\n\n## set kubernetes cluster domain where minio is running\n##\nclusterDomain: cluster.local\n\n## Set default image, imageTag, and imagePullPolicy. mode is used to indicate the\n##\nimage:\n  repository: quay.io/minio/minio\n  tag: RELEASE.2023-03-22T06-36-24Z\n  pullPolicy: IfNotPresent\n\nimagePullSecrets: []\n# - name: \"image-pull-secret\"\n\n## Set default image, imageTag, and imagePullPolicy for the `mc` (the minio\n## client used to create a default bucket).\n##\nmcImage:\n  repository: quay.io/minio/mc\n  tag: RELEASE.2022-11-07T23-47-39Z\n  pullPolicy: IfNotPresent\n\n## minio mode, i.e. standalone or distributed\nmode: distributed ## other supported values are \"standalone\"\n\n## Additional labels to include with deployment or statefulset\nadditionalLabels: {}\n\n## Additional annotations to include with deployment or statefulset\nadditionalAnnotations: {}\n\n## Typically the deployment/statefulset includes checksums of secrets/config,\n## So that when these change on a subsequent helm install, the deployment/statefulset\n## is restarted. This can result in unnecessary restarts under GitOps tooling such as\n## flux, so set to \"true\" to disable this behaviour.\nignoreChartChecksums: false\n\n## Additional arguments to pass to minio binary\nextraArgs: []\n\n## Additional volumes to minio container\nextraVolumes: []\n\n## Additional volumeMounts to minio container\nextraVolumeMounts: []\n\n## Internal port number for MinIO S3 API container\n## Change service.port to change external port number\nminioAPIPort: \"9000\"\n\n## Internal port number for MinIO Browser Console container\n## Change consoleService.port to change external port number\nminioConsolePort: \"9001\"\n\n## Update strategy for Deployments\nDeploymentUpdate:\n  type: RollingUpdate\n  maxUnavailable: 0\n  maxSurge: 100%\n\n## Update strategy for StatefulSets\nStatefulSetUpdate:\n  updateStrategy: RollingUpdate\n\n## Pod priority settings\n## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/\n##\npriorityClassName: \"\"\n\n## Pod runtime class name\n## ref https://kubernetes.io/docs/concepts/containers/runtime-class/\n##\nruntimeClassName: \"\"\n\n## Set default rootUser, rootPassword\n## AccessKey and secretKey is generated when not set\n## Distributed MinIO ref: https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html\n##\nrootUser: minio-root\nrootPassword: passw0rd\n\n## Use existing Secret that store following variables:\n##\n## | Chart var             | .data.<key> in Secret    |\n## |:----------------------|:-------------------------|\n## | rootUser              | rootUser                 |\n## | rootPassword          | rootPassword             |\n##\n## All mentioned variables will be ignored in values file.\n## .data.rootUser and .data.rootPassword are mandatory,\n## others depend on enabled status of corresponding sections.\nexistingSecret: \"\"\n\n## Directory on the MinIO pof\ncertsPath: \"/etc/minio/certs/\"\nconfigPathmc: \"/etc/minio/mc/\"\n\n## Path where PV would be mounted on the MinIO Pod\nmountPath: \"/export\"\n## Override the root directory which the minio server should serve from.\n## If left empty, it defaults to the value of {{ .Values.mountPath }}\n## If defined, it must be a sub-directory of the path specified in {{ .Values.mountPath }}\n##\nbucketRoot: \"\"\n\n# Number of drives attached to a node\ndrivesPerNode: 4\n# Number of MinIO containers running\nreplicas: 1\n# Number of expanded MinIO clusters\npools: 1\n\n## TLS Settings for MinIO\ntls:\n  enabled: false\n  ## Create a secret with private.key and public.crt files and pass that here. Ref: https://github.com/minio/minio/tree/master/docs/tls/kubernetes#2-create-kubernetes-secret\n  certSecret: \"\"\n  publicCrt: public.crt\n  privateKey: private.key\n\n## Trusted Certificates Settings for MinIO. Ref: https://min.io/docs/minio/linux/operations/network-encryption.html#third-party-certificate-authorities\n## Bundle multiple trusted certificates into one secret and pass that here. Ref: https://github.com/minio/minio/tree/master/docs/tls/kubernetes#2-create-kubernetes-secret\n## When using self-signed certificates, remember to include MinIO's own certificate in the bundle with key public.crt.\n## If certSecret is left empty and tls is enabled, this chart installs the public certificate from .Values.tls.certSecret.\ntrustedCertsSecret: \"\"\n\n## Enable persistence using Persistent Volume Claims\n## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/\n##\npersistence:\n  enabled: true\n  annotations: {}\n\n  ## A manually managed Persistent Volume and Claim\n  ## Requires persistence.enabled: true\n  ## If defined, PVC must be created manually before volume will be bound\n  existingClaim: \"\"\n\n  ## minio data Persistent Volume Storage Class\n  ## If defined, storageClassName: <storageClass>\n  ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n  ## If undefined (the default) or set to null, no storageClassName spec is\n  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on\n  ##   GKE, AWS & OpenStack)\n  ##\n  ## Storage class of PV to bind. By default it looks for standard storage class.\n  ## If the PV uses a different storage class, specify that here.\n  storageClass: \"\"\n  VolumeName: \"\"\n  accessMode: ReadWriteOnce\n  size: 20Gi\n\n  ## If subPath is set mount a sub folder of a volume instead of the root of the volume.\n  ## This is especially handy for volume plugins that don't natively support sub mounting (like glusterfs).\n  ##\n  subPath: \"\"\n\n## Expose the MinIO service to be accessed from outside the cluster (LoadBalancer service).\n## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.\n## ref: http://kubernetes.io/docs/user-guide/services/\n##\nservice:\n  type: ClusterIP\n  clusterIP: ~\n  port: \"9000\"\n  nodePort: 32000\n\n## Configure Ingress based on the documentation here: https://kubernetes.io/docs/concepts/services-networking/ingress/\n##\n\ningress:\n  enabled: false\n  # ingressClassName: \"\"\n  labels: {}\n    # node-role.kubernetes.io/ingress: platform\n\n  annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n    # kubernetes.io/ingress.allow-http: \"false\"\n    # kubernetes.io/ingress.global-static-ip-name: \"\"\n    # nginx.ingress.kubernetes.io/secure-backends: \"true\"\n    # nginx.ingress.kubernetes.io/backend-protocol: \"HTTPS\"\n    # nginx.ingress.kubernetes.io/whitelist-source-range: 0.0.0.0/0\n  path: /\n  hosts:\n    - minio-example.local\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\nconsoleService:\n  type: ClusterIP\n  clusterIP: ~\n  port: \"9001\"\n  nodePort: 32001\n\nconsoleIngress:\n  enabled: false\n  # ingressClassName: \"\"\n  labels: {}\n    # node-role.kubernetes.io/ingress: platform\n\n  annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n    # kubernetes.io/ingress.allow-http: \"false\"\n    # kubernetes.io/ingress.global-static-ip-name: \"\"\n    # nginx.ingress.kubernetes.io/secure-backends: \"true\"\n    # nginx.ingress.kubernetes.io/backend-protocol: \"HTTPS\"\n    # nginx.ingress.kubernetes.io/whitelist-source-range: 0.0.0.0/0\n  path: /\n  hosts:\n    - console.minio-example.local\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\n## Node labels for pod assignment\n## Ref: https://kubernetes.io/docs/user-guide/node-selection/\n##\nnodeSelector: {}\ntolerations: []\naffinity: {}\ntopologySpreadConstraints: []\n\n## Add stateful containers to have security context, if enabled MinIO will run as this\n## user and group NOTE: securityContext is only enabled if persistence.enabled=true\nsecurityContext:\n  enabled: true\n  runAsUser: 1000\n  runAsGroup: 1000\n  fsGroup: 1000\n  fsGroupChangePolicy: \"OnRootMismatch\"\n\n# Additational pod annotations\npodAnnotations: {}\n\n# Additional pod labels\npodLabels: {}\n\n## Configure resource requests and limits\n## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n##\nresources:\n  requests:\n    memory: 100Mi\n\n## List of policies to be created after minio install\n##\n## In addition to default policies [readonly|readwrite|writeonly|consoleAdmin|diagnostics]\n## you can define additional policies with custom supported actions and resources\npolicies:\n## writeexamplepolicy policy grants creation or deletion of buckets with name\n## starting with example. In addition, grants objects write permissions on buckets starting with\n## example.\n- name: laf_owner_by_prefix\n  statements:\n    - resources:\n        - 'arn:aws:s3:::${aws:username}-*'\n      effect: Allow\n      actions:\n        - \"s3:GetBucketPolicy\"\n        - \"s3:GetObject\"\n        - \"s3:ListBucket\"\n        - \"s3:ListBucketMultipartUploads\"\n        - \"s3:ListMultipartUploadParts\"\n        - \"s3:PutObject\"\n        - \"s3:DeleteObject\"\n        - \"s3:GetBucketLocation\"\n\n- name: laf_owner_readonly_by_prefix\n  statements:\n    - resources:\n        - 'arn:aws:s3:::${aws:username}-*'\n      effect: Allow\n      actions:\n        - \"s3:GetBucketPolicy\"\n        - \"s3:GetObject\"\n        - \"s3:ListBucket\"\n        - \"s3:ListBucketMultipartUploads\"\n        - \"s3:ListMultipartUploadParts\"\n        - \"s3:DeleteObject\"\n        - \"s3:GetBucketLocation\"\n\n## readonlyexamplepolicy policy grants access to buckets with name starting with example.\n## In addition, grants objects read permissions on buckets starting with example.\n# - name: readonlyexamplepolicy\n#   statements:\n#     - resources:\n#         - 'arn:aws:s3:::example*/*'\n#       actions:\n#         - \"s3:GetObject\"\n#     - resources:\n#         - 'arn:aws:s3:::example*'\n#       actions:\n#         - \"s3:GetBucketLocation\"\n#         - \"s3:ListBucket\"\n#         - \"s3:ListBucketMultipartUploads\"\n## conditionsexample policy creates all access to example bucket with aws:username=\"johndoe\" and source ip range 10.0.0.0/8 and 192.168.0.0/24 only\n# - name: conditionsexample\n#   statements:\n#     - resources:\n#       - 'arn:aws:s3:::example/*'\n#       actions:\n#       - 's3:*'\n#       conditions:\n#         - StringEquals: '\"aws:username\": \"johndoe\"'\n#         - IpAddress: |\n#             \"aws:SourceIp\": [\n#               \"10.0.0.0/8\",\n#               \"192.168.0.0/24\"\n#             ]\n#\n## Additional Annotations for the Kubernetes Job makePolicyJob\nmakePolicyJob:\n  podAnnotations: {}\n  annotations: {}\n  securityContext:\n    enabled: false\n    runAsUser: 1000\n    runAsGroup: 1000\n    fsGroup: 1000\n  resources:\n    requests:\n      memory: 128Mi\n  nodeSelector: {}\n  tolerations: []\n  affinity: {}\n  extraVolumes: []\n  extraVolumeMounts: []\n  # Command to run after the main command on exit\n  exitCommand: \"\"\n\n## List of users to be created after minio install\n##\nusers:\n  ## Username, password and policy to be assigned to the user\n  ## Default policies are [readonly|readwrite|writeonly|consoleAdmin|diagnostics]\n  ## Add new policies as explained here https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management.html#access-management\n  ## NOTE: this will fail if LDAP is enabled in your MinIO deployment\n  ## make sure to disable this if you are using LDAP.\n  # - accessKey: temp-user\n  #   secretKey: abc123456\n    # policy: consoleAdmin\n  # Or you can refer to specific secret\n  #- accessKey: externalSecret\n  #  existingSecret: my-secret\n  #  existingSecretKey: password\n  #  policy: readonly\n\n\n## Additional Annotations for the Kubernetes Job makeUserJob\nmakeUserJob:\n  podAnnotations: {}\n  annotations: {}\n  securityContext:\n    enabled: false\n    runAsUser: 1000\n    runAsGroup: 1000\n    fsGroup: 1000\n  resources:\n    requests:\n      memory: 128Mi\n  nodeSelector: {}\n  tolerations: []\n  affinity: {}\n  extraVolumes: []\n  extraVolumeMounts: []\n  # Command to run after the main command on exit\n  exitCommand: \"\"\n\n## List of buckets to be created after minio install\n##\nbuckets:\n  #   # Name of the bucket\n  # - name: bucket1\n  #   # Policy to be set on the\n  #   # bucket [none|download|upload|public]\n  #   policy: none\n  #   # Purge if bucket exists already\n  #   purge: false\n  #   # set versioning for\n  #   # bucket [true|false]\n  #   versioning: false\n  #   # set objectlocking for\n  #   # bucket [true|false] NOTE: versioning is enabled by default if you use locking \n  #   objectlocking: false\n  # - name: bucket2\n  #   policy: none\n  #   purge: false\n  #   versioning: true\n  #   # set objectlocking for\n  #   # bucket [true|false] NOTE: versioning is enabled by default if you use locking \n  #   objectlocking: false\n\n## Additional Annotations for the Kubernetes Job makeBucketJob\nmakeBucketJob:\n  podAnnotations: {}\n  annotations: {}\n  securityContext:\n    enabled: false\n    runAsUser: 1000\n    runAsGroup: 1000\n    fsGroup: 1000\n  resources:\n    requests:\n      memory: 128Mi\n  nodeSelector: {}\n  tolerations: []\n  affinity: {}\n  extraVolumes: []\n  extraVolumeMounts: []\n  # Command to run after the main command on exit\n  exitCommand: \"\"\n  \n## List of command to run after minio install\n## NOTE: the mc command TARGET is always \"myminio\"\ncustomCommands:\n  # - command: \"admin policy set myminio consoleAdmin group='cn=ops,cn=groups,dc=example,dc=com'\"\n  - command: \"alias ls && ls /config\"\n  - command: \"admin user add myminio temp-user abcd123456\"\n  - command: \"admin group add myminio laf_owner_by_prefix_group temp-user\"\n  - command: \"admin group add myminio laf_owner_readonly_by_prefix_group temp-user\"\n  - command: \"admin policy add myminio laf_owner_by_prefix /config/policy_0.json\"\n  - command: \"admin policy set myminio laf_owner_by_prefix group=laf_owner_by_prefix_group\"\n  - command: \"admin policy add myminio laf_owner_readonly_by_prefix /config/policy_1.json\"\n  - command: \"admin policy set myminio laf_owner_readonly_by_prefix group=laf_owner_readonly_by_prefix_group\"\n\n## Additional Annotations for the Kubernetes Job customCommandJob\ncustomCommandJob:\n  podAnnotations: {}\n  annotations: {}\n  securityContext:\n    enabled: false\n    runAsUser: 1000\n    runAsGroup: 1000\n    fsGroup: 1000\n  resources:\n    requests:\n      memory: 128Mi\n  nodeSelector: {}\n  tolerations: []\n  affinity: {}\n  # Command to run after the main command on exit\n  exitCommand: \"\"\n  \n## Use this field to add environment variables relevant to MinIO server. These fields will be passed on to MinIO container(s)\n## when Chart is deployed\nenvironment:\n  ## Please refer for comprehensive list https://min.io/docs/minio/linux/reference/minio-server/minio-server.html\n  ## MINIO_SUBNET_LICENSE: \"License key obtained from https://subnet.min.io\"\n  ## MINIO_BROWSER: \"off\"\n\n## The name of a secret in the same kubernetes namespace which contain secret values\n## This can be useful for LDAP password, etc\n## The key in the secret must be 'config.env'\n##\n# extraSecret: minio-extraenv\n\n## OpenID Identity Management\n## The following section documents environment variables for enabling external identity management using an OpenID Connect (OIDC)-compatible provider.\n## See https://min.io/docs/minio/linux/operations/external-iam/configure-openid-external-identity-management.html for a tutorial on using these variables.\noidc:\n  enabled: false\n  configUrl: \"https://identity-provider-url/.well-known/openid-configuration\"\n  clientId: \"minio\"\n  clientSecret: \"\"\n  claimName: \"policy\"\n  scopes: \"openid,profile,email\"\n  redirectUri: \"https://console-endpoint-url/oauth_callback\"\n  # Can leave empty\n  claimPrefix: \"\"\n  comment: \"\"\n\nnetworkPolicy:\n  enabled: false\n  allowExternal: true\n\n## PodDisruptionBudget settings\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/\n##\npodDisruptionBudget:\n  enabled: false\n  maxUnavailable: 1\n\n## Specify the service account to use for the MinIO pods. If 'create' is set to 'false'\n## and 'name' is left unspecified, the account 'default' will be used.\nserviceAccount:\n  create: true\n  ## The name of the service account to use. If 'create' is 'true', a service account with that name\n  ## will be created.\n  name: \"minio-sa\"\n\nmetrics:\n  serviceMonitor:\n    enabled: false\n    # scrape each node/pod individually for additional metrics\n    includeNode: false\n    public: true\n    additionalLabels: {}\n    # for node metrics\n    relabelConfigs: {}\n    # for cluster metrics\n    relabelConfigsCluster: {}\n      # metricRelabelings:\n      #   - regex: (server|pod)\n      #     action: labeldrop\n    # namespace: monitoring\n    interval: 30s\n    scrapeTimeout: 10s\n\n## ETCD settings: https://github.com/minio/minio/blob/master/docs/sts/etcd.md\n## Define endpoints to enable this section.\netcd:\n  endpoints: []\n  pathPrefix: \"\"\n  corednsPathPrefix: \"\"\n  clientCert: \"\"\n  clientCertKey: \"\"\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/Chart.yaml",
    "content": "apiVersion: v2\nappVersion: 0.39.0\ndescription: A Prometheus exporter for MongoDB metrics\nhome: https://github.com/percona/mongodb_exporter\nkeywords:\n- exporter\n- metrics\n- mongodb\n- prometheus\nmaintainers:\n- email: ssheehy@firescope.com\n  name: steven-sheehy\n- email: rootsandtrees@posteo.de\n  name: zeritti\nname: prometheus-mongodb-exporter\nsources:\n- https://github.com/percona/mongodb_exporter\nversion: 3.2.0\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/README.md",
    "content": "# Prometheus MongoDB Exporter\n\nA Prometheus exporter for [MongoDB](https://www.mongodb.com/) metrics.\n\nInstalls the [MongoDB Exporter](https://github.com/percona/mongodb_exporter) for [Prometheus](https://prometheus.io/). The\nMongoDB Exporter collects and exports oplog, replica set, server status, sharding and storage engine metrics.\n\n## Get Repository Info\n\n```console\nhelm repo add prometheus-community https://prometheus-community.github.io/helm-charts\nhelm repo update\n```\n\n_See [`helm repo`](https://helm.sh/docs/helm/helm_repo/) for command documentation._\n\n## Install Chart\n\n```console\nhelm install [RELEASE_NAME] prometheus-community/prometheus-mongodb-exporter\n```\n\n_See [configuration](#configuration) below._\n\n_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._\n\n## Uninstall Chart\n\n```console\nhelm uninstall [RELEASE_NAME]\n```\n\nThis removes all the Kubernetes components associated with the chart and deletes the release.\n\n_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._\n\n## Upgrading Chart\n\n```console\nhelm upgrade [RELEASE_NAME] [CHART] --install\n```\n\n_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._\n\n### Upgrading an existing Release to a new major version\n\nA major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions.\n\n#### From 2.x to 3.x\n\nThis version uses the original percona/mongodb_exporter docker image again, as described in the readme and Chart.yaml. It's maintained and it uses frequent docker builds, so this is preferable for security reasons.\n\nThe commnad arguments of the exporter have changed. If you have custom `extraArgs` settings you have to adjust them. Because of the newer version of the exporter image metrics may varry though, so you might need to adjust your dashboard querries or try out the \"--compatible-mode\" parameter in `extraArgs`.\n\nThe `mongodb.uri` variable got \"mongodb://monogdb:27017\" as default parameter.\n\nChart API was raisded to v2, so Helm 2 is not supported anymore.\n\nThe servicemonitor has been disabled by default as prometheus operator might not be installed in cluster.\n\n## Configuration\n\nSee [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands:\n\n```console\nhelm show values prometheus-community/prometheus-mongodb-exporter\n```\n\n### MongoDB Server Connection\n\nTo use the chart, ensure the `mongodb.uri` is populated with a valid [MongoDB URI](https://docs.mongodb.com/manual/reference/connection-string) or an existing secret (in the releases namespace) containing the key defined on `existingSecret.key`, with the URI is referred via `existingSecret.name`. If no secret key is defined, the default value is `mongodb-uri`.\n\nIf the MongoDB server requires authentication, credentials should be populated in the connection string as well. The MongoDB Exporter supports connecting to either a MongoDB replica set member, shard, or standalone instance.\n\n### Service Monitor\n\nThe chart comes with a ServiceMonitor for use with the [Prometheus Operator](https://github.com/helm/charts/tree/master/stable/prometheus-operator). By default, the ServiceMonitor is disabled. You can enable the ServiceMonitor by setting `serviceMonitor.enabled` to `true`. For the ServiceMonitor to be detected by the Prometheus Operator, you must add the selector label to `serviceMonitor.additionalLabels`. You can find this label under `spec.serviceMonitorSelector` of the Prometheus CRD.\n\nIf you're not using the Prometheus Operator, you can instead populate the `podAnnotations` as below:\n\n```yaml\npodAnnotations:\n  prometheus.io/scrape: \"true\"\n  prometheus.io/port: \"metrics\"\n```\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/ci/env-values.yaml",
    "content": "---\n# Test adding environment variables\n\nmongodb:\n  uri: mongodb://localhost:9216\nserviceMonitor:\n  enabled: false\nenv:\n  TEST_ENV: test\n  MONGODB_URI: mongodb://hostfromenv:9216\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/ci/servicemonitor-disabled-values.yaml",
    "content": "mongodb:\n  uri: mongodb://localhost:9216\nserviceMonitor:\n  enabled: false\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/templates/NOTES.txt",
    "content": "Verify the application is working by running these commands:\n{{if contains \"NodePort\" .Values.service.type }}\n  NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"prometheus-mongodb-exporter.fullname\" . }})\n  curl http://$NODE_IP:$NODE_PORT/metrics\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n  # NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n  SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"prometheus-mongodb-exporter.fullname\" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')\n  curl http://$SERVICE_IP:{{ .Values.service.port }}/metrics\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n  kubectl port-forward service/{{ include \"prometheus-mongodb-exporter.fullname\" . }} {{ .Values.service.port }}\n  curl http://127.0.0.1:{{ .Values.service.port }}/metrics\n{{- end }}\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"prometheus-mongodb-exporter.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"prometheus-mongodb-exporter.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"prometheus-mongodb-exporter.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"prometheus-mongodb-exporter.labels\" -}}\nhelm.sh/chart: {{ include \"prometheus-mongodb-exporter.chart\" . }}\n{{ include \"prometheus-mongodb-exporter.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- with .Values.customLabels }}\n{{ toYaml . }}\n{{- end }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"prometheus-mongodb-exporter.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"prometheus-mongodb-exporter.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"prometheus-mongodb-exporter.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"prometheus-mongodb-exporter.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n\n{{/*\nDetermine secret name, can either be the self-created of an existing one\n*/}}\n{{- define \"prometheus-mongodb-exporter.secretName\" -}}\n{{- if .Values.existingSecret.name -}}\n    {{- .Values.existingSecret.name -}}\n{{- else -}}\n    {{ include \"prometheus-mongodb-exporter.fullname\" . }}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"prometheus-mongodb-exporter.fullname\" . }}\n  labels:\n    {{- include \"prometheus-mongodb-exporter.labels\" . | nindent 4 }}\n  annotations:\n    {{- toYaml .Values.annotations | nindent 4 }}\nspec:\n  replicas: {{ .Values.replicas }}\n  selector:\n    matchLabels:\n      {{- include \"prometheus-mongodb-exporter.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      annotations:\n        checksum/config: {{ include (print $.Template.BasePath \"/secret.yaml\") . | sha256sum }}\n        {{- if .Values.podAnnotations }}\n          {{- toYaml .Values.podAnnotations | nindent 8 }}\n        {{- end }}\n      labels:\n        {{- include \"prometheus-mongodb-exporter.selectorLabels\" . | nindent 8 }}\n        {{- if .Values.podLabels }}\n          {{- toYaml .Values.podLabels | nindent 8 }}\n        {{- end }}\n    spec:\n      serviceAccountName: {{ template \"prometheus-mongodb-exporter.serviceAccountName\" . }}\n      containers:\n        - name: mongodb-exporter\n          env:\n            - name: MONGODB_URI\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"prometheus-mongodb-exporter.secretName\" . }}\n                  key: {{ .Values.existingSecret.key }}\n          {{- if .Values.env }}\n          {{- range $key, $value := .Values.env }}\n            - name: \"{{ $key }}\"\n              value: \"{{ $value }}\"\n          {{- end }}\n          {{- end }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          args:\n            - --web.listen-address={{ printf \":%s\" .Values.port }}\n            {{- toYaml .Values.extraArgs | nindent 12 }}\n          ports:\n            - name: metrics\n              containerPort: {{ .Values.port }}\n              protocol: TCP\n          livenessProbe:\n            {{- toYaml .Values.livenessProbe | nindent 12 }}\n          readinessProbe:\n            {{- toYaml .Values.readinessProbe | nindent 12 }}\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          volumeMounts:\n            {{- toYaml .Values.volumeMounts | nindent 12 }}\n      affinity:\n        {{- toYaml .Values.affinity | nindent 8 }}\n      imagePullSecrets:\n        {{- toYaml .Values.imagePullSecrets | nindent 8 }}\n      nodeSelector:\n        {{- toYaml .Values.nodeSelector | nindent 8 }}\n      {{- if .Values.priorityClassName }}\n      priorityClassName: {{ .Values.priorityClassName }}\n      {{- end }}\n      terminationGracePeriodSeconds: 30\n      tolerations:\n        {{- toYaml .Values.tolerations | nindent 8 }}\n      volumes:\n        {{- toYaml .Values.volumes | nindent 8 }}\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/templates/secret.yaml",
    "content": "{{- if not .Values.existingSecret.name -}}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"prometheus-mongodb-exporter.secretName\" . }}\n  labels:\n    {{- include \"prometheus-mongodb-exporter.labels\" . | nindent 4 }}\ntype: Opaque\ndata:\n  mongodb-uri: {{ required \"A MongoDB URI is required\" .Values.mongodb.uri | b64enc }}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"prometheus-mongodb-exporter.fullname\" . }}\n  labels:\n    {{- include \"prometheus-mongodb-exporter.labels\" . | nindent 4 }}\n{{- if .Values.service.labels }}\n{{ toYaml .Values.service.labels | indent 4 }}\n{{- end }}\n  annotations:\n    {{- toYaml .Values.service.annotations | nindent 4 }}\nspec:\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: metrics\n      protocol: TCP\n      name: {{ .Values.service.portName }}\n  selector:\n    {{- include \"prometheus-mongodb-exporter.selectorLabels\" . | nindent 4 }}\n  type: {{ .Values.service.type }}\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ template \"prometheus-mongodb-exporter.serviceAccountName\" . }}\n  labels:\n    {{- include \"prometheus-mongodb-exporter.labels\" . | nindent 4 }}\n{{- end -}}\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/templates/servicemonitor.yaml",
    "content": "{{ if .Values.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ include \"prometheus-mongodb-exporter.fullname\" . }}\n  labels:\n    {{- include \"prometheus-mongodb-exporter.labels\" . | nindent 4 }}\n    {{- range $key, $value := .Values.serviceMonitor.additionalLabels }}\n    {{ $key }}: {{ $value | quote }}\n    {{- end }}\n  {{- if .Values.serviceMonitor.namespace }}\n  namespace: {{ .Values.serviceMonitor.namespace }}\n  {{- end }}\nspec:\n  endpoints:\n  - port: {{ .Values.service.portName }}\n    interval: {{ .Values.serviceMonitor.interval }}\n    scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}\n    {{- if .Values.serviceMonitor.metricRelabelings }}\n    metricRelabelings: {{ toYaml .Values.serviceMonitor.metricRelabelings | nindent 4 }}\n    {{- end }}\n    {{- if .Values.serviceMonitor.scheme }}\n    scheme: {{ .Values.serviceMonitor.scheme }}\n    {{- end }}\n    {{- if .Values.serviceMonitor.tlsConfig }}\n    tlsConfig:\n      {{- toYaml .Values.serviceMonitor.tlsConfig | nindent 6 }}\n    {{- end }}\n  namespaceSelector:\n    matchNames:\n    - {{ .Release.Namespace }}\n  selector:\n    matchLabels:\n      {{- include \"prometheus-mongodb-exporter.selectorLabels\" . | nindent 6 }}\n{{- if .Values.serviceMonitor.targetLabels }}\n  targetLabels:\n{{- range .Values.serviceMonitor.targetLabels }}\n    - {{ . }}\n{{- end }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"prometheus-mongodb-exporter.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"prometheus-mongodb-exporter.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test-success\nspec:\n  containers:\n  - name: wget\n    image: busybox\n    command: ['wget']\n    args:  ['-qO-', '{{ include \"prometheus-mongodb-exporter.fullname\" . }}:{{ .Values.service.port }}/metrics']\n  restartPolicy: Never\n"
  },
  {
    "path": "build/charts/prometheus-mongodb-exporter/values.yaml",
    "content": "affinity: {}\n\nannotations: {}\n\n## Additional labels to add to all resources\ncustomLabels: {}\n\n# Extra environment variables that will be passed into the exporter pod\nenv: {}\n\nextraArgs:\n  - --collect-all\n\nfullnameOverride: \"\"\n\nimage:\n  pullPolicy: IfNotPresent\n  repository: percona/mongodb_exporter\n  tag: \"\"\n\nimagePullSecrets: []\n\nlivenessProbe:\n  httpGet:\n    path: /\n    port: metrics\n  initialDelaySeconds: 10\n\n# [mongodb[+srv]://][user:pass@]host1[:port1][,host2[:port2],...][/database][?options]\nmongodb:\n  uri: \"mongodb://mongodb:27017\"\n\n# Name of an externally managed secret (in the same namespace) containing the connection uri as key `mongodb-uri`.\n# If this is provided, the value mongodb.uri is ignored.\nexistingSecret:\n  name: \"\"\n  key: \"mongodb-uri\"\n\nnameOverride: \"\"\n\nnodeSelector: {}\n\npodAnnotations: {}\n#  prometheus.io/scrape: \"true\"\n#  prometheus.io/port: \"metrics\"\n\npodLabels: {}\n\nport: \"9216\"\n\npriorityClassName: \"\"\n\nreadinessProbe:\n  httpGet:\n    path: /\n    port: metrics\n  initialDelaySeconds: 10\n\nreplicas: 1\n\nresources: {}\n  # limits:\n  #   cpu: 250m\n  #   memory: 192Mi\n  # requests:\n  #   cpu: 100m\n  #   memory: 128Mi\n\nsecurityContext:\n  allowPrivilegeEscalation: false\n  capabilities:\n    drop: [\"all\"]\n  readOnlyRootFilesystem: true\n  runAsGroup: 10000\n  runAsNonRoot: true\n  runAsUser: 10000\n\nservice:\n  labels: {}\n  annotations: {}\n  port: 9216\n  type: ClusterIP\n  portName: metrics\n\nserviceAccount:\n  create: true\n  # If create is true and name is not set, then a name is generated using the\n  # fullname template.\n  name:\n\nserviceMonitor:\n  enabled: false\n  interval: 30s\n  scrapeTimeout: 10s\n  namespace:\n  additionalLabels: {}\n  targetLabels: []\n  metricRelabelings: []\n  scheme: \"\"\n  tlsConfig: {}\n\ntolerations: []\n\n# Volumes that will be attached to the exporter deployment\nvolumes: []\n\n# Volumes that will be mounted into the exporter pod\nvolumeMounts: []\n"
  },
  {
    "path": "build/images/shim/ImageList",
    "content": "\nquay.io/minio/minio:RELEASE.2023-03-22T06-36-24Z\nquay.io/minio/mc:RELEASE.2022-11-07T23-47-39Z\n"
  },
  {
    "path": "build/mongodb.yaml",
    "content": "apiVersion: apps.kubeblocks.io/v1alpha1\nkind: Cluster\nmetadata:\n  finalizers:\n    - cluster.kubeblocks.io/finalizer\n  labels:\n    kb.io/database: mongodb-8.0.4\n    app.kubernetes.io/instance: mongodb\n    helm.sh/chart: mongodb-cluster-0.9.1\n  name: mongodb\nspec:\n  affinity:\n    podAntiAffinity: Preferred\n    tenancy: SharedNode\n    topologyKeys:\n      - kubernetes.io/hostname\n  componentSpecs:\n    - componentDef: mongodb\n      monitor: true\n      name: mongodb\n      replicas: 1\n      resources:\n        limits:\n          cpu: 1000m\n          memory: 1024Mi\n        requests:\n          cpu: 100m\n          memory: 102Mi\n      serviceAccountName: \"\"\n      serviceVersion: 8.0.4\n      volumeClaimTemplates:\n        - name: data\n          spec:\n            accessModes:\n              - ReadWriteOnce\n            resources:\n              requests:\n                storage: $CAPACITY\n  terminationPolicy: Delete\n"
  },
  {
    "path": "build/prometheus-helm.yaml",
    "content": "fullnameOverride: prometheus\nalertmanager:\n  enabled: false\ngrafana:\n  enabled: false\ncoreDns:\n  enabled: false\nnodeExporter:\n  enabled: false\nkubeApiServer:\n  enabled: false\nkubeScheduler:\n  enabled: false\nkubeControllerManager:\n  enabled: false\nkubeEtcd:\n  enabled: false\nkubeProxy:\n  enabled: false\nkubeStateMetrics:\n  enabled: false\nprometheus:\n  prometheusSpec:\n    storageSpec:\n      volumeClaimTemplate:\n        spec:\n          accessModes: [\"ReadWriteOnce\"]\n          resources:\n            requests:\n              storage: $PROMETHEUS_PV_SIZE\n  networkPolicy:\n    enabled: true\n    ingress:\n      - from:\n        - namespaceSelector:\n            matchLabels:\n              kubernetes.io/metadata.name: $NAMESPACE\n    egress:\n      - {}"
  },
  {
    "path": "build/start.sh",
    "content": "echo \"DOMAIN: $DOMAIN\"\n\n# check $DOMAIN is available\nif ! host $DOMAIN; then\n    echo \"Domain $DOMAIN is not available\"\n    exit 1\nfi\n\n# *************** Environment Variables ************** #\n\n## envs - global\nEXTERNAL_HTTP_SCHEMA=${EXTERNAL_HTTP_SCHEMA:-https}\n\nNAMESPACE=${NAMESPACE:-laf-system}\nPASSWD_OR_SECRET=$(tr -cd 'a-z0-9' </dev/urandom | head -c32)\n\nENABLE_MONITOR=${ENABLE_MONITOR:-true}\n\n# *************** Deployments **************** #\n\n## 0. create namespace\nkubectl create namespace ${NAMESPACE} || true\n\n## 1. install mongodb\nset -e\nset -x\n\nsed \"s/\\$CAPACITY/${DB_PV_SIZE:-5Gi}/g\" mongodb.yaml | kubectl apply -n ${NAMESPACE} -f -\nkubectl wait --for=condition=Ready --timeout=120s cluster.apps.kubeblocks.io/mongodb -n ${NAMESPACE}\n\nDB_USERNAME=$(kubectl get secret -n ${NAMESPACE} mongodb-mongodb-account-root -ojsonpath='{.data.username}' | base64 -d)\nDB_PASSWORD=$(kubectl get secret -n ${NAMESPACE} mongodb-mongodb-account-root -ojsonpath='{.data.password}' | base64 -d)\nDB_HOST=\"mongodb-mongodb.${NAMESPACE}.svc\"\nDB_PORT=27017\nDATABASE_URL=\"mongodb://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/sys_db?authSource=admin&replicaSet=mongodb-mongodb&w=majority\"\n\n## 2. install prometheus\nPROMETHEUS_URL=http://prometheus-operated.${NAMESPACE}.svc.cluster.local:9090\nif [ \"$ENABLE_MONITOR\" = \"true\" ]; then\n    sed -e \"s/\\$NAMESPACE/$NAMESPACE/g\" \\\n        -e \"s/\\$PROMETHEUS_PV_SIZE/${PROMETHEUS_PV_SIZE:-20Gi}/g\" \\\n        prometheus-helm.yaml >prometheus-helm-with-values.yaml\n\n    helm install prometheus --version 48.3.3 -n ${NAMESPACE} \\\n        -f ./prometheus-helm-with-values.yaml \\\n        ./charts/kube-prometheus-stack\nfi\n\n## 3. install minio\nMINIO_ROOT_ACCESS_KEY=minio-root-user\nMINIO_ROOT_SECRET_KEY=$PASSWD_OR_SECRET\nMINIO_DOMAIN=oss.${DOMAIN}\nMINIO_EXTERNAL_ENDPOINT=\"${EXTERNAL_HTTP_SCHEMA}://${MINIO_DOMAIN}\"\nMINIO_INTERNAL_ENDPOINT=\"http://minio.${NAMESPACE}.svc.cluster.local:9000\"\n\nhelm install minio -n ${NAMESPACE} \\\n    --set rootUser=${MINIO_ROOT_ACCESS_KEY} \\\n    --set rootPassword=${MINIO_ROOT_SECRET_KEY} \\\n    --set persistence.size=${OSS_PV_SIZE:-3Gi} \\\n    --set domain=${MINIO_DOMAIN} \\\n    --set consoleHost=minio.${DOMAIN} \\\n    --set metrics.serviceMonitor.enabled=${ENABLE_MONITOR} \\\n    --set metrics.serviceMonitor.additionalLabels.release=prometheus \\\n    --set metrics.serviceMonitor.additionalLabels.namespace=${NAMESPACE} \\\n    ./charts/minio\n\n## 4. install laf-server\nSERVER_JWT_SECRET=$PASSWD_OR_SECRET\nRUNTIME_EXPORTER_SECRET=$PASSWD_OR_SECRET\nhelm install server -n ${NAMESPACE} \\\n    --set databaseUrl=${DATABASE_URL} \\\n    --set jwt.secret=${SERVER_JWT_SECRET} \\\n    --set apiServerHost=api.${DOMAIN} \\\n    --set apiServerUrl=${EXTERNAL_HTTP_SCHEMA}://api.${DOMAIN} \\\n    --set siteName=${DOMAIN} \\\n    --set default_region.fixed_namespace=${NAMESPACE} \\\n    --set default_region.database_url=${DATABASE_URL} \\\n    --set default_region.minio_domain=${MINIO_DOMAIN} \\\n    --set default_region.minio_external_endpoint=${MINIO_EXTERNAL_ENDPOINT} \\\n    --set default_region.minio_internal_endpoint=${MINIO_INTERNAL_ENDPOINT} \\\n    --set default_region.minio_root_access_key=${MINIO_ROOT_ACCESS_KEY} \\\n    --set default_region.minio_root_secret_key=${MINIO_ROOT_SECRET_KEY} \\\n    --set default_region.runtime_domain=${DOMAIN} \\\n    --set default_region.website_domain=${DOMAIN} \\\n    --set default_region.tls.enabled=false \\\n    $([ \"$ENABLE_MONITOR\" = \"true\" ] && echo \"--set default_region.runtime_exporter_secret=${RUNTIME_EXPORTER_SECRET}\") \\\n    $([ \"$ENABLE_MONITOR\" = \"true\" ] && echo \"--set default_region.prometheus_url=${PROMETHEUS_URL}\") \\\n    ./charts/laf-server\n\n## 5. install laf-web\nhelm install web -n ${NAMESPACE} \\\n    --set domain=${DOMAIN} \\\n    ./charts/laf-web\n"
  },
  {
    "path": "cli/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"laf/cli\"\n}"
  },
  {
    "path": "cli/.npmignore",
    "content": "./node_modules\n.DS_Store\nsrc\ntests"
  },
  {
    "path": "cli/README.md",
    "content": "## Project Introduction\n\nlaf-cli is a command-line tool designed to help developers quickly create, deploy, and manage applications on laf.\n\n## Quick Start\n\nTo install laf-cli, use npm:\n```bash\nnpm install -g laf-cli\n```\n\nOnce installation is complete, verify the installation using:\n```bash\nlaf -v\n```\n\nTo log in, use the login command with your personal access token (PAT), which can be obtained from User Settings -> Personal Access Tokens:\n```bash\nlaf login <pat>\n```\n\nView the list of applications and initialize an application:\n```bash\nlaf app list\nlaf app init <appId>\n```\n\nFor more commands and usage:\n```bash\nlaf -h\n```\n\n## Development\n\nTo begin development, follow the steps below:\n\n1. Navigate to the cli directory in the terminal:\n```bash\ncd cli\n```\n\n2. Install the required dependencies: \n```bash\nnpm install\n```\n\n3. Run the watch command:\n```bash\nnpm run watch\n```\n\n4. Open a new terminal and run link command:\n```bash\nnpm link\n```\n\n5. Finally, verify that everything is working as expected:\n```bash\nlaf -v\n```\n\n## File Tree\n\n```\n├── src\n|  ├── action\n|  |  ├── application\n|  |  ├── auth\n|  |  ├── dependency\n|  |  ├── function\n|  |  ├── policy\n|  |  ├── storage\n|  |  └── website\n|  ├── api\n|  |  └── v1\n|  ├── command\n|  |  ├── application\n|  |  ├── auth\n|  |  ├── dependency\n|  |  ├── function\n|  |  ├── policy\n|  |  ├── storage\n|  |  └── website\n|  ├── common\n|  ├── config\n|  └── util\n└── template\n```\n"
  },
  {
    "path": "cli/package.json",
    "content": "{\n  \"name\": \"laf-cli\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"dist/main.js\",\n  \"bin\": {\n    \"laf\": \"dist/main.js\"\n  },\n  \"scripts\": {\n    \"dev\": \"tsc -w\",\n    \"watch\": \"tsc -w\",\n    \"build\": \"tsc\",\n    \"prepublishOnly\": \"npm run build\",\n    \"lint\": \"eslint . --fix --ext .ts --ext .js\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/labring/laf.git\"\n  },\n  \"keywords\": [\n    \"laf\"\n  ],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"bugs\": {\n    \"url\": \"https://github.com/labring/laf/issues\"\n  },\n  \"devDependencies\": {\n    \"@types/mime\": \"^2.0.3\",\n    \"@types/node\": \"^17.0.45\"\n  },\n  \"dependencies\": {\n    \"@aws-sdk/client-s3\": \"^3.45.0\",\n    \"axios\": \"^1.2.1\",\n    \"class-transformer\": \"^0.5.1\",\n    \"cli\": \"^1.0.1\",\n    \"cli-table3\": \"^0.6.3\",\n    \"commander\": \"^9.3.0\",\n    \"dayjs\": \"^1.11.7\",\n    \"dotenv\": \"^16.3.1\",\n    \"form-data\": \"^4.0.0\",\n    \"mime\": \"^3.0.0\",\n    \"node-emoji\": \"^1.11.0\",\n    \"prompts\": \"^2.4.1\",\n    \"reflect-metadata\": \"^0.1.13\",\n    \"typescript\": \"^4.7.4\",\n    \"urlencode\": \"^1.1.0\",\n    \"yaml\": \"^2.1.3\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,js}\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "cli/src/action/application/index.ts",
    "content": "import { applicationControllerFindAll, applicationControllerFindOne } from '../../api/v1/application'\nimport * as Table from 'cli-table3'\nimport * as path from 'node:path'\nimport * as fs from 'node:fs'\nimport { pull as depPull } from '../dependency'\nimport { pullAll as policyPull } from '../policy'\nimport { pullAll as funcPull } from '../function'\nimport { pull as envPull } from '../environment'\nimport { AppSchema } from '../../schema/app'\n\nimport {\n  DEBUG_TOKEN_EXPIRE,\n  FUNCTION_SCHEMA_DIRECTORY,\n  GITIGNORE_FILE,\n  GLOBAL_FILE,\n  PACKAGE_FILE,\n  STORAGE_TOKEN_EXPIRE,\n  TEMPLATE_DIR,\n  TSCONFIG_FILE,\n  TYPE_DIR,\n} from '../../common/constant'\nimport { ensureDirectory, exist } from '../../util/file'\n\nimport { getEmoji } from '../../util/print'\nimport { formatDate } from '../../util/format'\nimport { regionControllerGetRegions } from '../../api/v1/public'\nimport { ProjectSchema } from '../../schema/project'\nimport { getBaseDir } from '../../util/sys'\n\nexport async function list() {\n  const table = new Table({\n    head: ['appid', 'name', 'state', 'region', 'spec', 'createdAt', 'expireAt'],\n  })\n  const apps = await applicationControllerFindAll()\n  const regionMap = await getRegionMap()\n  for (const item of apps) {\n    table.push([\n      item.appid,\n      item.name,\n      item.state,\n      regionMap.get(item.regionId)?.displayName,\n      `${parseFloat(item.bundle?.resource?.limitCPU) / 1000.0}C/${item.bundle?.resource?.limitMemory}MB`,\n      formatDate(item.subscription?.createdAt),\n      formatDate(item.subscription?.expiredAt),\n    ])\n  }\n  console.log(table.toString())\n}\n\nasync function getRegionMap(): Promise<Map<string, any>> {\n  const regionMap = new Map<string, any>()\n  const regions = await regionControllerGetRegions()\n  for (const region of regions) {\n    regionMap.set(region._id, region)\n  }\n  return regionMap\n}\n\nexport async function init(appid: string, options: { sync: boolean; basicMode: boolean }) {\n  if (AppSchema.exist()) {\n    console.log(\n      `${getEmoji(\n        '❌',\n      )} The .app.yaml file already exists in the current directory. Please change the directory or delete the .app.yaml file`,\n    )\n    return\n  }\n\n  const app = await applicationControllerFindOne(appid)\n\n  // init app schema\n  const timestamp = Date.parse(new Date().toString()) / 1000\n  const appSchema: AppSchema = {\n    name: app.name,\n    appid: app.appid,\n    invokeUrl: app.tls ? 'https://' + app.domain.domain : 'http://' + app.domain.domain,\n    function: {\n      developToken: app.develop_token,\n      developTokenExpire: timestamp + DEBUG_TOKEN_EXPIRE,\n    },\n    storage: {\n      endpoint: app.storage.endpoint,\n      accessKeyId: app.storage.accessKey,\n      accessKeySecret: app.storage.secretKey,\n      sessionToken: app.storage.sessionToken,\n      expire: timestamp + STORAGE_TOKEN_EXPIRE,\n    },\n  }\n  AppSchema.write(appSchema)\n\n  if (options.basicMode) {\n    console.log(`${getEmoji('🚀')} application ${app.name} init schema success`)\n    return\n  }\n\n  if (!ProjectSchema.exist()) {\n    // init project schema\n    const projectSchema: ProjectSchema = {\n      version: '1.0.0',\n      name: app.name,\n      spec: {\n        runtime: app.runtime.name,\n      },\n    }\n    ProjectSchema.write(projectSchema)\n\n    // init function\n    initFunction()\n\n    // init policy\n    initPolicy()\n  }\n\n  if (options.sync) {\n    // pull dependencies\n    depPull()\n    // pull policies\n    policyPull()\n    // pull functions\n    funcPull({ force: true })\n    // pull env\n    envPull()\n  }\n  console.log(`${getEmoji('🚀')} application ${app.name} init success`)\n}\n\nfunction initFunction() {\n  // if not exist，create functions directory\n  ensureDirectory(path.join(getBaseDir(), FUNCTION_SCHEMA_DIRECTORY))\n\n  const typeDir = path.resolve(getBaseDir(), TYPE_DIR)\n  ensureDirectory(typeDir)\n\n  // from template dir\n  const templateDir = path.resolve(__dirname, '../../../', TEMPLATE_DIR)\n\n  // generate global.d.ts\n  const fromGlobalFile = path.resolve(templateDir, GLOBAL_FILE)\n  const outGlobalFile = path.resolve(typeDir, GLOBAL_FILE)\n  fs.writeFileSync(outGlobalFile, fs.readFileSync(fromGlobalFile, 'utf-8'))\n\n  // generate package.json\n  const fromPackageFile = path.resolve(templateDir, PACKAGE_FILE)\n  const outPackageFile = path.resolve(getBaseDir(), PACKAGE_FILE)\n  fs.writeFileSync(outPackageFile, fs.readFileSync(fromPackageFile, 'utf-8'))\n\n  // generate tsconfig.json\n  const fromTsConfigFile = path.resolve(templateDir, TSCONFIG_FILE)\n  const outTsConfigFile = path.resolve(getBaseDir(), TSCONFIG_FILE)\n  fs.writeFileSync(outTsConfigFile, fs.readFileSync(fromTsConfigFile, 'utf-8'))\n\n  // generate .gitignore\n  const fromGitIgnoreFile = path.resolve(templateDir, GITIGNORE_FILE)\n  const outGitIgnoreFile = path.resolve(getBaseDir(), '.' + GITIGNORE_FILE)\n  if (!exist(outGitIgnoreFile)) {\n    fs.writeFileSync(outGitIgnoreFile, fs.readFileSync(fromGitIgnoreFile, 'utf-8'))\n  }\n}\n\nfunction initPolicy() {\n  ensureDirectory(path.join(getBaseDir(), 'policies'))\n}\n"
  },
  {
    "path": "cli/src/action/database/index.ts",
    "content": "import { databaseControllerExport, databaseControllerImport } from '../../api/custom'\nimport { AppSchema } from '../../schema/app'\nimport * as fs from 'fs'\nimport { getEmoji } from '../../util/print'\nimport * as path from 'path'\nimport { exist } from '../../util/file'\nimport * as FormData from 'form-data'\n\nexport async function exportDB(exportPath: string): Promise<void> {\n  const appSchema = AppSchema.read()\n\n  const res = await databaseControllerExport(appSchema.appid)\n  // get absolute path\n  const absPath = path.resolve(exportPath)\n  res.pipe(fs.createWriteStream(path.join(absPath, `${appSchema.appid}-db.gz`)))\n  console.log(`${getEmoji('✅')} database export success`)\n}\n\nexport async function importDB(sourceAppid, importPath: string): Promise<void> {\n  const appSchema = AppSchema.read()\n\n  // get absolute path\n  const absPath = path.resolve(importPath)\n  if (!exist(absPath)) {\n    console.log(`${getEmoji('❌')} import database file not exist`)\n    return\n  }\n\n  const formData = new FormData()\n  formData.append('file', fs.createReadStream(absPath), 'database.gz')\n  formData.append('sourceAppid', sourceAppid)\n  await databaseControllerImport(appSchema.appid, formData)\n  console.log(`${getEmoji('✅')} database import success`)\n}\n"
  },
  {
    "path": "cli/src/action/dependency/index.ts",
    "content": "import * as path from 'node:path'\nimport * as fs from 'node:fs'\nimport {\n  dependencyControllerAdd,\n  dependencyControllerGetDependencies,\n  dependencyControllerUpdate,\n} from '../../api/v1/application'\nimport { PACKAGE_FILE } from '../../common/constant'\nimport { CreateDependencyDto, UpdateDependencyDto } from '../../api/v1/data-contracts'\nimport { waitApplicationState } from '../../common/wait'\nimport { getEmoji } from '../../util/print'\nimport { AppSchema } from '../../schema/app'\nimport { ProjectSchema } from '../../schema/project'\nimport { getBaseDir } from '../../util/sys'\n\nexport async function add(dependencyName: string, options: { targetVersion: string; remote: boolean }) {\n  const appSchema = AppSchema.read()\n  const dependencyDto: CreateDependencyDto = {\n    name: dependencyName,\n    spec: 'latest',\n  }\n  if (options.targetVersion) {\n    dependencyDto.spec = options.targetVersion\n  }\n  await dependencyControllerAdd(appSchema.appid, [dependencyDto])\n  await waitApplicationState('Running')\n\n  if (options.remote) {\n    console.log(`${getEmoji('✅')} dependency ${dependencyDto.name}:${dependencyDto.spec} added to remote`)\n  } else {\n    await pullOne()\n    console.log(`${getEmoji('✅')} dependency ${dependencyDto.name}:${dependencyDto.spec} installed`)\n    console.log(`${getEmoji('👉')} please run \\`npm install\\` to install dependency`)\n  }\n}\n\nexport async function pull() {\n  await pullOne()\n  console.log(`${getEmoji('✅')} dependency pulled`)\n  console.log(`${getEmoji('👉')} please run 'npm install' install dependencies`)\n}\n\nasync function pullOne(updateYaml = true) {\n  const appSchema = AppSchema.read()\n\n  const dependencies = await dependencyControllerGetDependencies(appSchema.appid)\n\n  const packagePath = path.resolve(getBaseDir(), PACKAGE_FILE)\n  const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf-8'))\n  const devDependencies = {}\n  const localDependencies = {}\n  for (const dependency of dependencies) {\n    devDependencies[dependency.name] = dependency.spec\n\n    // add a non-built-in dependency\n    if (!dependency.builtin) {\n      localDependencies[dependency.name] = dependency.spec\n    }\n  }\n  packageJson.devDependencies = devDependencies\n  fs.writeFileSync(packagePath, JSON.stringify(packageJson, null, 2))\n\n  // write to config\n  if (updateYaml) {\n    const projectSchema = ProjectSchema.read()\n    projectSchema.spec.dependencies = localDependencies\n    ProjectSchema.write(projectSchema)\n  }\n}\n\nexport async function push(options: { updatePackage: boolean }) {\n  const appSchema = AppSchema.read()\n\n  const serverDependencies = await dependencyControllerGetDependencies(appSchema.appid)\n  const serverDependenciesMap = new Map<string, boolean>()\n  for (const item of serverDependencies) {\n    serverDependenciesMap.set(item.name, true)\n  }\n\n  const projectSchema = ProjectSchema.read()\n\n  for (const key in projectSchema.spec.dependencies) {\n    if (!serverDependenciesMap.has(key)) {\n      const createDependencyDto: CreateDependencyDto = {\n        name: key,\n        spec: projectSchema.spec.dependencies[key],\n      }\n      await dependencyControllerAdd(appSchema.appid, [createDependencyDto])\n    } else {\n      const updateDependencyDto: UpdateDependencyDto = {\n        name: key,\n        spec: projectSchema.spec.dependencies[key],\n      }\n      await dependencyControllerUpdate(appSchema.appid, [updateDependencyDto])\n    }\n  }\n\n  console.log(`${getEmoji('✅')} dependency pushed`)\n\n  // update package.json\n  if (options.updatePackage) {\n    await pullOne(false)\n    console.log(`${getEmoji('👉')} please run 'npm install' install dependencies`)\n  }\n}\n"
  },
  {
    "path": "cli/src/action/deploy/index.ts",
    "content": "import { bucketControllerFindAll } from '../../api/v1/storage'\nimport { AppSchema } from '../../schema/app'\nimport { DeploySchema } from '../../schema/deploy'\nimport { pushAll as pushAllFunctions } from '../function'\nimport { create as createBucket, push as pushBucket } from '../storage'\nimport { create as createWebsite } from '../website'\nimport { push as pushDependency } from '../dependency'\nimport { pullAll as pullAllPolicies } from '../policy'\nimport { getEmoji } from '../../util/print'\nimport { websiteControllerFindAll } from '../../api/v1/websitehosting'\n\nexport async function deploy() {\n  if (!DeploySchema.exist()) {\n    console.log('deploy.yaml not exist, please create it first')\n    return\n  }\n\n  const appSchema = AppSchema.read()\n  const deploySchema = DeploySchema.read()\n\n  // install dependencies\n  await pushDependency({ updatePackage: true })\n\n  // push all functions\n  await pushAllFunctions({ force: true })\n\n  // push all policies\n  await pullAllPolicies()\n\n  // create bucket if not exist\n  if (deploySchema?.resources?.buckets) {\n    const buckets = await bucketControllerFindAll(appSchema.appid)\n    const bucketMap = new Map<string, string>()\n    buckets.forEach((bucket) => {\n      bucketMap.set(bucket.shortName, bucket.name)\n    })\n\n    for (const bucket of deploySchema?.resources?.buckets) {\n      if (!bucketMap.has(bucket.name)) {\n        await createBucket(bucket.name, { policy: bucket.policy })\n      } else {\n        console.log(`bucket ${bucket.name} already exist, skip`)\n      }\n    }\n  }\n\n  if (deploySchema?.resources?.websites) {\n    const websites = await websiteControllerFindAll(appSchema.appid)\n    const websiteMap = new Map<string, boolean>()\n    websites.forEach((website) => {\n      websiteMap.set(website.bucketName, true)\n    })\n\n    for (const website of deploySchema?.resources?.websites) {\n      if (!websiteMap.has(website.bucketName) && !websiteMap.has(appSchema.appid + '-' + website.bucketName)) {\n        await createWebsite(website.bucketName, {})\n      } else {\n        console.log(`website:${website.bucketName} already exist, skip`)\n      }\n    }\n  }\n\n  if (deploySchema?.actions?.buckets) {\n    // push all buckets\n    for (const bucket of deploySchema?.actions?.buckets) {\n      await pushBucket(bucket.bucketName, bucket.srcDir, { force: true, detail: false })\n    }\n  }\n\n  console.log(`${getEmoji('🚀')} deploy success`)\n}\n"
  },
  {
    "path": "cli/src/action/environment/index.ts",
    "content": "import { environmentVariableControllerGet, environmentVariableControllerUpdateAll } from '../../api/v1/application'\nimport { AppSchema } from '../../schema/app'\nimport { EnvironmentSchema } from '../../schema/environment'\nimport { getEmoji } from '../../util/print'\n\nexport async function pull(): Promise<void> {\n  const appSchema = AppSchema.read()\n  const env = await environmentVariableControllerGet(appSchema.appid)\n  EnvironmentSchema.write(env)\n  console.log(`${getEmoji('✅')} env pulled`)\n}\n\nexport async function push(): Promise<void> {\n  const appSchema = AppSchema.read()\n  const env = EnvironmentSchema.read()\n  await environmentVariableControllerUpdateAll(appSchema.appid, env)\n  console.log(`${getEmoji('✅')} env pushed`)\n}\n"
  },
  {
    "path": "cli/src/action/function/index.ts",
    "content": "import { CompileFunctionDto, CreateFunctionDto, UpdateFunctionDto } from '../../api/v1/data-contracts'\nimport {\n  functionControllerCompile,\n  functionControllerCreate,\n  functionControllerFindAll,\n  functionControllerFindOne,\n  functionControllerRemove,\n  functionControllerUpdate,\n  logControllerGetLogs,\n} from '../../api/v1/function'\nimport * as path from 'node:path'\nimport * as fs from 'node:fs'\nimport * as Table from 'cli-table3'\nimport { formatDate } from '../../util/format'\nimport { invokeFunction } from '../../api/debug'\nimport { exist, remove } from '../../util/file'\nimport { getEmoji } from '../../util/print'\nimport { getBaseDir } from '../../util/sys'\nimport { FUNCTION_SCHEMA_DIRECTORY } from '../../common/constant'\nimport { confirm } from '../../common/prompts'\nimport { AppSchema } from '../../schema/app'\nimport { FunctionSchema } from '../../schema/function'\nimport * as urlencode from 'urlencode'\nimport { lstatSync } from 'fs'\n\nexport async function create(\n  funcName: string,\n  options: {\n    websocket: boolean\n    methods: ('GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD')[]\n    tags: string[]\n    description: string\n  },\n) {\n  const appSchema = AppSchema.read()\n  const createDto: CreateFunctionDto = {\n    name: funcName,\n    description: options.description,\n    methods: options.methods,\n    code: `\\nimport cloud from '@lafjs/cloud'\\n\\nexport default async function (ctx: FunctionContext) {\\n  console.log('Hello World')\\n  return { data: 'hi, laf' }\\n}\\n`,\n    tags: options.tags,\n  }\n  await functionControllerCreate(appSchema.appid, createDto)\n  pullOne(funcName)\n  console.log(`${getEmoji('✅')} function ${funcName} created`)\n}\n\nexport async function list() {\n  const appSchema = AppSchema.read()\n  const funcs = await functionControllerFindAll(appSchema.appid)\n  const table = new Table({\n    head: ['name', 'desc', 'websocket', 'methods', 'tags', 'updatedAt'],\n  })\n  for (const func of funcs) {\n    table.push([\n      func.name,\n      func.description,\n      func.websocket,\n      func.methods.join(','),\n      func.tags.join(','),\n      formatDate(func.updatedAt),\n    ])\n  }\n  console.log(table.toString())\n}\n\nexport async function del(funcName: string) {\n  const appSchema = AppSchema.read()\n  await functionControllerRemove(appSchema.appid, urlencode(funcName))\n  if (FunctionSchema.exist(funcName)) {\n    FunctionSchema.delete(funcName)\n  }\n  const funcPath = path.join(getBaseDir(), 'functions', funcName + '.ts')\n  if (exist(funcPath)) {\n    remove(funcPath)\n  }\n  console.log(`${getEmoji('✅')} function ${funcName} deleted`)\n}\n\nasync function pull(funcName: string) {\n  const appSchema = AppSchema.read()\n  const func = await functionControllerFindOne(appSchema.appid, urlencode(funcName))\n  const functionSchema: FunctionSchema = {\n    name: func.name,\n    desc: func.desc,\n    methods: func.methods,\n    tags: func.tags,\n  }\n  FunctionSchema.write(func.name, functionSchema)\n  const codePath = path.join(getBaseDir(), 'functions', func.name + '.ts')\n  fs.writeFileSync(codePath, func.source.code)\n}\n\nexport async function pullAll(options: { force: boolean }) {\n  const appSchema = AppSchema.read()\n  const funcs = await functionControllerFindAll(appSchema.appid)\n  const serverFuncMap = new Map<string, boolean>()\n  for (const func of funcs) {\n    await pull(func.name)\n    console.log(`${getEmoji('✅')} function ${func.name} pulled`)\n    serverFuncMap.set(func.name, true)\n  }\n  // remove remote not exist function\n  const localFuncs = getLocalFuncs()\n  for (const item of localFuncs) {\n    if (!serverFuncMap.has(item)) {\n      if (options.force) {\n        removeFunction(item)\n        console.log(`${getEmoji('✅')} function ${item} deleted`)\n      } else {\n        const res = await confirm('confirm remove function in local ' + item + '?')\n        if (res.value) {\n          removeFunction(item)\n          console.log(`${getEmoji('✅')} function ${item} deleted`)\n        }\n      }\n    }\n  }\n}\n\nexport async function pullOne(funcName: string) {\n  await pull(funcName)\n  console.log(`${getEmoji('✅')} function ${funcName} pulled`)\n}\n\nasync function push(funcName: string, isCreate: boolean) {\n  const appSchema = AppSchema.read()\n  const funcSchema = FunctionSchema.read(funcName)\n  const codePath = path.join(getBaseDir(), 'functions', funcName + '.ts')\n  const code = fs.readFileSync(codePath, 'utf-8')\n  if (isCreate) {\n    const createDto: CreateFunctionDto = {\n      name: funcName,\n      description: funcSchema.desc || '',\n      methods: funcSchema.methods as any,\n      code,\n      tags: funcSchema.tags,\n    }\n    await functionControllerCreate(appSchema.appid, createDto)\n  } else {\n    const updateDto: UpdateFunctionDto = {\n      description: funcSchema.desc || '',\n      methods: funcSchema.methods as any,\n      code,\n      tags: funcSchema.tags,\n    }\n    await functionControllerUpdate(appSchema.appid, urlencode(funcName), updateDto)\n  }\n}\n\nexport async function pushAll(options: { force: boolean }) {\n  const appSchema = AppSchema.read()\n  const serverFuncs = await functionControllerFindAll(appSchema.appid)\n  const serverFuncMap = new Map<string, FunctionSchema>()\n  for (const func of serverFuncs) {\n    serverFuncMap.set(func.name, func)\n  }\n  const localFuncs = getLocalFuncs()\n  for (const item of localFuncs) {\n    await push(item, !serverFuncMap.has(item))\n    console.log(`${getEmoji('✅')} function ${item} pushed`)\n  }\n\n  const localFuncMap = new Map<string, boolean>()\n  for (const item of localFuncs) {\n    localFuncMap.set(item, true)\n  }\n\n  // delete server functions\n  for (const item of serverFuncs) {\n    if (!localFuncMap.has(item.name)) {\n      if (options.force) {\n        await functionControllerRemove(appSchema.appid, urlencode(item.name))\n        console.log(`${getEmoji('✅')} function ${item.name} deleted`)\n      } else {\n        const res = await confirm('confirm remove function ' + item.name + '?')\n        if (res.value) {\n          await functionControllerRemove(appSchema.appid, urlencode(item.name))\n          console.log(`${getEmoji('✅')} function ${item.name} deleted`)\n        } else {\n          console.log(`${getEmoji('🎃')} cancel remove function ${item.name}`)\n        }\n      }\n    }\n  }\n\n  console.log(`${getEmoji('✅')} all functions pushed`)\n}\n\nexport async function pushOne(funcName: string) {\n  const appSchema = AppSchema.read()\n  const serverFuncs = await functionControllerFindAll(appSchema.appid)\n  let isCreate = true\n  for (const func of serverFuncs) {\n    if (func.name === funcName) {\n      isCreate = false\n      break\n    }\n  }\n  await push(funcName, isCreate)\n  console.log(`${getEmoji('✅')} function ${funcName} pushed`)\n}\n\nexport async function exec(\n  funcName: string,\n  options: {\n    log: string\n    requestId: boolean\n    method: string\n    query: string\n    data: string\n    headers: any\n  },\n) {\n  // compile code\n  const codePath = path.join(getBaseDir(), 'functions', funcName + '.ts')\n  if (!exist(codePath)) {\n    console.error(`${getEmoji('❌')} function ${funcName} not found, please pull or create it!`)\n    process.exit(1)\n  }\n  const code = fs.readFileSync(codePath, 'utf-8')\n  const compileDto: CompileFunctionDto = {\n    code,\n  }\n  const appSchema = AppSchema.read()\n  const func = await functionControllerCompile(appSchema.appid, urlencode(funcName), compileDto)\n\n  // transform headers json string to object. -H '{\"Content-Type\": \"application/json\"}'\n  if (options.headers) {\n    try {\n      options.headers = JSON.parse(options.headers)\n    } catch (e) {\n      options.headers = {}\n    }\n  }\n\n  // transform data json string to object. eg -d '{\"key\": \"val\"}' or  -d 'key=val'\n  if (options.data) {\n    try {\n      options.data = JSON.parse(options.data)\n    } catch (e) {\n      options.data = options.data\n    }\n  }\n\n  const res = await invokeFunction(\n    appSchema.invokeUrl || '',\n    appSchema?.function?.developToken,\n    funcName,\n    func,\n    options.method,\n    options.query,\n    options.data,\n    options.headers,\n  )\n\n  // print requestId\n  if (options.requestId) {\n    console.log(`requestId: ${res.requestId}`)\n  }\n\n  // print response\n  console.log(res.res)\n\n  // print log\n  if (options.log) {\n    await printLog(appSchema.appid, res.requestId)\n  }\n}\n\nasync function printLog(appid: string, requestId: string) {\n  const data = await logControllerGetLogs({\n    appid,\n    requestId,\n    page: '1',\n    pageSize: '100',\n  })\n  for (const log of data.list) {\n    console.log(`[${formatDate(log.createdAt)}] ${log.data}`)\n  }\n}\n\nfunction getLocalFuncs(): string[] {\n  const funcDir = path.join(getBaseDir(), FUNCTION_SCHEMA_DIRECTORY)\n  const funcs = getLocalFunction(funcDir, '')\n  return funcs\n}\n\nfunction getLocalFunction(dir: string, prefix: string): string[] {\n  const files = fs.readdirSync(dir)\n  const funcNames: string[] = []\n  files.forEach((file) => {\n    const filePath = path.join(dir, file)\n    const stat = lstatSync(filePath)\n    if (stat.isDirectory()) {\n      funcNames.push(...getLocalFunction(filePath, path.join(prefix || '', file)))\n    }\n    if (stat.isFile() && file.endsWith('.ts')) {\n      funcNames.push(\n        path\n          .join(prefix || '', file)\n          .replace(/\\\\/g, '/')\n          .replace(/\\.ts$/, ''),\n      )\n    }\n  })\n  return funcNames\n}\n\nfunction removeFunction(name: string) {\n  if (FunctionSchema.exist(name)) {\n    FunctionSchema.delete(name)\n  }\n  const funcPath = path.join(getBaseDir(), 'functions', name + '.ts')\n  if (exist(funcPath)) {\n    remove(funcPath)\n  }\n}\n"
  },
  {
    "path": "cli/src/action/policy/dto.ts",
    "content": "interface PolicyRule {\n  collectionName: string\n  rules: Rules\n}\n\ninterface Rules {\n  read: boolean\n  count: boolean\n  update: boolean\n  remove: boolean\n  add: boolean\n}\n"
  },
  {
    "path": "cli/src/action/policy/index.ts",
    "content": "import * as Table from 'cli-table3'\nimport {\n  policyControllerCreate,\n  policyControllerFindAll,\n  policyControllerRemove,\n  policyRuleControllerCreate,\n  policyRuleControllerFindAll,\n  policyRuleControllerRemove,\n  policyRuleControllerUpdate,\n} from '../../api/v1/database'\nimport { formatDate } from '../../util/format'\nimport * as path from 'node:path'\nimport * as fs from 'node:fs'\nimport { POLICIES_DIRECTORY_NAME } from '../../common/constant'\nimport { writeYamlFile, loadYamlFile } from '../../util/file'\nimport { CreatePolicyDto, CreatePolicyRuleDto, UpdatePolicyRuleDto } from '../../api/v1/data-contracts'\nimport { getEmoji } from '../../util/print'\nimport { getBaseDir } from '../../util/sys'\nimport { confirm } from '../../common/prompts'\nimport { AppSchema } from '../../schema/app'\n\nexport async function list() {\n  const appSchema = AppSchema.read()\n  const policies = await policyControllerFindAll(appSchema.appid)\n  const table = new Table({\n    head: ['name', 'ruleCount', 'createdAt'],\n  })\n  for (const item of policies) {\n    table.push([item.name, item.rules?.length, formatDate(item.createdAt)])\n  }\n  console.log(table.toString())\n}\n\nexport async function pullOne(policyName: string) {\n  await pull(policyName)\n  console.log(`${getEmoji('✅')} pull policy ${policyName} success`)\n}\n\nexport async function pullAll() {\n  const appSchema = AppSchema.read()\n  const policies = await policyControllerFindAll(appSchema.appid)\n\n  for (const item of policies) {\n    await pull(item.name)\n  }\n\n  console.log(`${getEmoji('✅')} pull all policies success`)\n}\n\nasync function pull(policyName: string) {\n  const appSchema = AppSchema.read()\n  const rules = await policyRuleControllerFindAll(appSchema.appid, policyName)\n  const rulePath = path.join(getBaseDir(), POLICIES_DIRECTORY_NAME, policyName + '.yaml')\n  const ruleList: PolicyRule[] = []\n  for (const item of rules) {\n    ruleList.push({\n      collectionName: item.collectionName,\n      rules: {\n        read: item.value.read,\n        count: item.value.count,\n        update: item.value.update,\n        remove: item.value.remove,\n        add: item.value.add,\n      },\n    })\n  }\n  writeYamlFile(rulePath, ruleList)\n}\n\nexport async function pushOne(policyName: string) {\n  const appSchema = AppSchema.read()\n  const policies = await policyControllerFindAll(appSchema.appid)\n  let isCreate = true\n  for (const item of policies) {\n    if (item.name === policyName) {\n      isCreate = false\n      break\n    }\n  }\n  await push(policyName, isCreate)\n  console.log(`${getEmoji('✅')} push policy ${policyName} success`)\n}\n\nexport async function pushAll(options: { force: boolean }) {\n  const appSchema = AppSchema.read()\n\n  // get server policies\n  const serverPolicies = await policyControllerFindAll(appSchema.appid)\n  const serverPoliciesMap = new Map<string, boolean>()\n  for (const item of serverPolicies) {\n    serverPoliciesMap.set(item.name, true)\n  }\n\n  // get local policies\n  const localPolicies = getLocalPolicies()\n  const localPoliciesMap = new Map<string, boolean>()\n  for (const item of localPolicies) {\n    localPoliciesMap.set(item, true)\n  }\n\n  // push local policies\n  for (const item of localPolicies) {\n    await push(item, !serverPoliciesMap.has(item))\n  }\n\n  // delete server policies\n  for (const item of serverPolicies) {\n    if (!localPoliciesMap.has(item.name)) {\n      if (options.force) {\n        await policyControllerRemove(appSchema.appid, item.name)\n      } else {\n        const res = await confirm('confirm remove policy ' + item.name + '?')\n        if (res.value) {\n          await policyControllerRemove(appSchema.appid, item.name)\n        } else {\n          console.log(`${getEmoji('🎃')} cancel remove policy ${item.name}`)\n        }\n      }\n    }\n  }\n  console.log(`${getEmoji('✅')} push all policies success`)\n}\n\nasync function push(policyName: string, isCreate: boolean) {\n  const appSchema = AppSchema.read()\n  if (isCreate) {\n    const createPolicyDto: CreatePolicyDto = {\n      name: policyName,\n    }\n    await policyControllerCreate(appSchema.appid, createPolicyDto)\n  }\n  const serverRules = await policyRuleControllerFindAll(appSchema.appid, policyName)\n  const serverRulesMap = new Map<string, boolean>()\n  for (const item of serverRules) {\n    serverRulesMap.set(item.collectionName, true)\n  }\n  const rulePath = path.join(getBaseDir(), POLICIES_DIRECTORY_NAME, policyName + '.yaml')\n  const localRules: PolicyRule[] = loadYamlFile(rulePath)\n  const localRulesMap = new Map<string, boolean>()\n\n  // update or create rule\n  for (const item of localRules) {\n    if (serverRulesMap.has(item.collectionName)) {\n      // rule exist, update\n      const updateRuleDto: UpdatePolicyRuleDto = {\n        value: JSON.stringify(item.rules),\n      }\n      await policyRuleControllerUpdate(appSchema.appid, policyName, item.collectionName, updateRuleDto)\n    } else {\n      // rule not exist, create\n      const createRuleDto: CreatePolicyRuleDto = {\n        collectionName: item.collectionName,\n        value: JSON.stringify(item.rules),\n      }\n      await policyRuleControllerCreate(appSchema.appid, policyName, createRuleDto)\n    }\n    localRulesMap.set(item.collectionName, true)\n  }\n\n  // delete rule\n  for (const item of serverRules) {\n    if (!localRulesMap.has(item.collectionName)) {\n      await policyRuleControllerRemove(appSchema.appid, policyName, item.collectionName)\n    }\n  }\n}\n\nfunction getLocalPolicies(): string[] {\n  const dir = path.join(getBaseDir(), POLICIES_DIRECTORY_NAME)\n  const files = fs.readdirSync(dir)\n  const policies: string[] = []\n  for (const item of files) {\n    if (item.endsWith('.yaml')) {\n      policies.push(item.replace('.yaml', ''))\n    }\n  }\n  return policies\n}\n"
  },
  {
    "path": "cli/src/action/storage/index.ts",
    "content": "import {\n  bucketControllerCreate,\n  bucketControllerFindAll,\n  bucketControllerRemove,\n  bucketControllerUpdate,\n} from '../../api/v1/storage'\nimport * as Table from 'cli-table3'\nimport * as prompts from 'prompts'\nimport { CreateBucketDto, UpdateBucketDto } from '../../api/v1/data-contracts'\nimport { getEmoji } from '../../util/print'\nimport { getS3ClientV3 } from './s3'\nimport * as path from 'node:path'\nimport { ensureDirectory, readDirectoryRecursive, compareFileMD5, exist } from '../../util/file'\nimport * as fs from 'node:fs'\nimport * as mime from 'mime'\nimport { ListObjectsCommand, GetObjectCommand, PutObjectCommand, DeleteObjectCommand } from '@aws-sdk/client-s3'\nimport { Readable } from 'node:stream'\nimport { AppSchema } from '../../schema/app'\n\nexport async function list() {\n  const appSchema = AppSchema.read()\n  const buckets = await bucketControllerFindAll(appSchema.appid)\n  const table = new Table({\n    head: ['name', 'shortName', 'policy', 'updatedAt'],\n  })\n  for (const item of buckets) {\n    table.push([item.name, item.shortName, item.policy, item.updatedAt])\n  }\n  console.log(table.toString())\n}\n\nconst policySelect = {\n  type: 'select',\n  name: 'policy',\n  message: 'please select policy',\n  choices: [\n    { title: 'private', value: 'private' },\n    { title: 'readonly', value: 'readonly' },\n    { title: 'readwrite', value: 'readwrite' },\n  ],\n}\n\nexport async function create(bucketName, options: { policy: string }) {\n  const appSchema = AppSchema.read()\n  let policy = options.policy\n  if (!policy) {\n    console.log('please select bucket storage policy')\n    const policyResult = await prompts(policySelect)\n    policy = policyResult.policy\n  }\n  const bucketDto: CreateBucketDto = {\n    shortName: bucketName,\n    policy: policy as any,\n  }\n\n  await bucketControllerCreate(appSchema.appid, bucketDto)\n  console.log(`${getEmoji('✅')} bucket ${bucketName} created`)\n}\n\nexport async function update(bucketName, options: { policy: string }) {\n  const appSchema = AppSchema.read()\n  let policy = options.policy\n  if (!policy) {\n    console.log('please select the storage policy to be replaced')\n    const policyResult = await prompts(policySelect)\n    policy = policyResult.policy\n  }\n\n  const bucketDto: UpdateBucketDto = {\n    policy: policy as any,\n  }\n  await bucketControllerUpdate(appSchema.appid, bucketName, bucketDto)\n  console.log(`${getEmoji('✅')} bucket ${bucketName} updated`)\n}\n\nexport async function del(bucketName, options) {\n  if (options) {\n  }\n  const appSchema = AppSchema.read()\n  await bucketControllerRemove(appSchema.appid, bucketName)\n  console.log(`${getEmoji('✅')} bucket ${bucketName} deleted`)\n}\n\nexport async function pull(bucketName: string, outPath: string, options: { force: boolean; detail: boolean }) {\n  const appSchema = AppSchema.read()\n  const client = getS3ClientV3(appSchema.storage)\n  const listCommand = new ListObjectsCommand({\n    Bucket: bucketName,\n    Delimiter: '',\n  })\n  const res = await client.send(listCommand)\n  const bucketObjects = res.Contents || []\n\n  const absPath = path.resolve(outPath)\n  ensureDirectory(absPath)\n\n  // get local files\n  const localFiles = readDirectoryRecursive(absPath).map((file) => {\n    return {\n      key: path.relative(absPath, file).replace(/\\\\/g, '/'),\n      absPath: path.resolve(file),\n    }\n  })\n\n  // get need download files\n  const downloadFiles = getDownloadFiles(localFiles, bucketObjects)\n\n  // download files\n  if (downloadFiles?.length > 0) {\n    downloadFiles.forEach(async (item) => {\n      const index = item.Key.lastIndexOf('/')\n      if (index > 0) {\n        const newDir = item.Key.substring(0, index)\n        const newPath = path.resolve(absPath, newDir)\n        ensureDirectory(newPath)\n      }\n\n      const getCommand = new GetObjectCommand({\n        Bucket: bucketName,\n        Key: item.Key,\n      })\n      const obj = await client.send(getCommand)\n      const filepath = path.resolve(absPath, item.Key)\n      const readableStream: Readable = obj.Body as Readable\n      if (options.detail) {\n        console.log(`${getEmoji('📥')} download file: ${filepath}`)\n      }\n      const writer = fs.createWriteStream(filepath)\n      readableStream.pipe(writer)\n    })\n  }\n}\n\nexport async function push(bucketName: string, inPath: string, options: { force: boolean; detail: boolean }) {\n  const appSchema = AppSchema.read()\n\n  const client = getS3ClientV3(appSchema.storage)\n  const listCommand = new ListObjectsCommand({\n    Bucket: bucketName,\n    Delimiter: '',\n  })\n  const res = await client.send(listCommand)\n  const bucketObjects = res.Contents || []\n\n  const absPath = path.resolve(inPath)\n  if (!exist(absPath)) {\n    console.log(`${getEmoji('❌')} ${absPath} not exist`)\n    process.exit(1)\n  }\n\n  // get local files\n  const localFiles = readDirectoryRecursive(absPath).map((file) => {\n    return {\n      key: path.relative(absPath, file).replace(/\\\\/g, '/'),\n      absPath: path.resolve(file),\n    }\n  })\n\n  // get need upload files\n  const uploadFiles = getUploadFiles(localFiles, bucketObjects)\n  console.log(`${getEmoji('📤')} upload files: ${uploadFiles.length}`)\n  if (uploadFiles?.length > 0) {\n    for (const file of uploadFiles) {\n      const putCommand = new PutObjectCommand({\n        Bucket: bucketName,\n        Key: file.key,\n        Body: fs.readFileSync(path.resolve(absPath, file.absPath)),\n        ContentType: mime.getType(file.key),\n      })\n      await client.send(putCommand)\n\n      if (options.detail) {\n        console.log(`${getEmoji('📤')} upload file: ${file.absPath}`)\n      }\n    }\n  }\n\n  const deletesFiles = getDeletedFiles(localFiles, bucketObjects)\n  if (deletesFiles?.length > 0) {\n    console.log(`${getEmoji('📤')} delete files: ${deletesFiles.length}`)\n    for (const file of deletesFiles) {\n      const deleteCommand = new DeleteObjectCommand({\n        Bucket: bucketName,\n        Key: file.Key,\n      })\n      await client.send(deleteCommand)\n\n      if (options.detail) {\n        console.log(`${getEmoji('📤')} delete file: ${file.Key}`)\n      }\n    }\n  }\n}\n\n// get download files\nfunction getDownloadFiles(sourceFiles: { key: string; absPath: string }[], bucketObjects: any) {\n  const downloadFiles = bucketObjects.filter((bucketObject) => {\n    const sourceFile = sourceFiles.find((sourceFile) => bucketObject.Key === sourceFile.key)\n    if (!sourceFile) {\n      return true\n    }\n    return !compareFileMD5(sourceFile.absPath, bucketObject)\n  })\n  return downloadFiles\n}\n\n// get upload files\nfunction getUploadFiles(sourceFiles: { key: string; absPath: string }[], bucketObjects: any) {\n  const uploadFiles = sourceFiles.filter((sourceFile) => {\n    const bucketObject = bucketObjects.find((bucketObject) => bucketObject.Key === sourceFile.key)\n    if (!bucketObject) {\n      return true\n    }\n    return !compareFileMD5(sourceFile.absPath, bucketObject)\n  })\n  return uploadFiles\n}\n\n// get deleted files\nfunction getDeletedFiles(sourceFiles: { key: string; absPath: string }[], bucketObjects: any[]) {\n  const deletedFiles = bucketObjects.filter((bucketObject) => {\n    const key = bucketObject.Key\n    return !sourceFiles.find((sourceFile) => sourceFile.key === key)\n  })\n  return deletedFiles\n}\n"
  },
  {
    "path": "cli/src/action/storage/s3.ts",
    "content": "import { S3Client } from '@aws-sdk/client-s3'\n\nexport function getS3ClientV3(credentials: any): S3Client {\n  return new S3Client({\n    credentials: {\n      accessKeyId: credentials.accessKeyId,\n      secretAccessKey: credentials.accessKeySecret,\n      sessionToken: credentials.sessionToken,\n    },\n    endpoint: credentials.endpoint,\n    forcePathStyle: true,\n    region: 'us-east-1',\n  })\n}\n"
  },
  {
    "path": "cli/src/action/trigger/index.ts",
    "content": "import { CreateTriggerDto } from '../../api/v1/data-contracts'\nimport { triggerControllerCreate, triggerControllerFindAll, triggerControllerRemove } from '../../api/v1/trigger'\nimport { AppSchema } from '../../schema/app'\nimport * as Table from 'cli-table3'\nimport { getEmoji } from '../../util/print'\nimport { formatDate } from '../../util/format'\n\nexport async function list(): Promise<void> {\n  const appSchema = AppSchema.read()\n  const triggers = await triggerControllerFindAll(appSchema.appid)\n  const table = new Table({\n    head: ['id', 'name', 'target', 'cron', 'createdAt'],\n  })\n\n  for (const trigger of triggers) {\n    table.push([trigger._id, trigger.desc, trigger.target, trigger.cron, formatDate(trigger.createdAt)])\n  }\n  console.log(table.toString())\n}\n\nexport async function create(name: string, target: string, cron: string): Promise<void> {\n  const appSchema = AppSchema.read()\n\n  const createDto: CreateTriggerDto = {\n    desc: name,\n    target,\n    cron,\n  }\n  await triggerControllerCreate(appSchema.appid, createDto)\n  console.log(`${getEmoji('✅')} trigger \"${name}\" created`)\n}\n\nexport async function del(options: { id?: string; name?: string }): Promise<void> {\n  const appSchema = AppSchema.read()\n  if (options.id) {\n    await triggerControllerRemove(options.id, appSchema.appid)\n    console.log(`${getEmoji('✅')} trigger \"${options.id}\" deleted`)\n  } else if (options.name) {\n    const triggers = await triggerControllerFindAll(appSchema.appid)\n    const trigger = triggers.find((t) => t.desc === options.name)\n    if (trigger) {\n      await triggerControllerRemove(trigger._id, appSchema.appid)\n      console.log(`${getEmoji('✅')} trigger \"${options.name}\" deleted`)\n    } else {\n      console.log(`${getEmoji('❌')} trigger \"${options.name}\" not found`)\n    }\n  }\n}\n"
  },
  {
    "path": "cli/src/action/user/index.ts",
    "content": "import { DEFAULT_SERVER, TOKEN_EXPIRE } from '../../common/constant'\nimport { getEmoji } from '../../util/print'\nimport { UserSchema } from '../../schema/user'\nimport { pat2token } from '../../api/pat'\nimport * as Table from 'cli-table3'\n\nexport async function login(pat: string) {\n  const user = UserSchema.getCurrentUser()\n\n  // transfer pat to token\n  const patDto = {\n    pat: pat,\n  }\n  const token = await pat2token(user.server, patDto)\n\n  // save user to user schema\n  const userSchema = UserSchema.read()\n  for (let index = 0; index < userSchema.users.length; index++) {\n    if (userSchema.users[index].name === user.name) {\n      userSchema.users[index].pat = pat\n      userSchema.users[index].token = token\n      userSchema.users[index].expire = Date.parse(new Date().toString()) / 1000 + TOKEN_EXPIRE\n      UserSchema.write(userSchema)\n      console.log(`${getEmoji('🎉')} login success`)\n      return\n    }\n  }\n\n  console.log(`${getEmoji('❌')} user not found`)\n}\n\nexport async function logout() {\n  const userSchema = UserSchema.read()\n  userSchema.users[userSchema.selected].pat = ''\n  userSchema.users[userSchema.selected].token = ''\n  userSchema.users[userSchema.selected].expire = 0\n  UserSchema.write(userSchema)\n\n  console.log(`${getEmoji('👋')} logout success`)\n}\n\nexport async function list() {\n  const table = new Table({\n    head: ['current', 'name', 'server url'],\n  })\n\n  UserSchema.read().users.forEach((user, index) => {\n    table.push([index === UserSchema.read().selected ? '*' : '', user.name, user.server])\n  })\n  console.log(table.toString())\n}\n\nexport async function add(name, options: { remote?: string }) {\n  const userSchema = UserSchema.read()\n  for (let index = 0; index < userSchema.users.length; index++) {\n    if (userSchema.users[index].name === name) {\n      console.log(`user ${name} already exist`)\n      return\n    }\n  }\n\n  let server = options.remote || DEFAULT_SERVER\n  if (server?.endsWith('/')) {\n    server = server.substring(0, server.length - 1)\n  }\n  userSchema.users.push({\n    name: name,\n    server: server,\n  })\n  UserSchema.write(userSchema)\n\n  console.log(`${getEmoji('✅')} add user ${name} success`)\n}\n\nexport async function del(name: string) {\n  if (UserSchema.getCurrentUser.name === name) {\n    console.log(`can not delete current user, please switch to another user first`)\n    return\n  }\n\n  const userSchema = UserSchema.read()\n  const newUsers = userSchema.users.filter((user, _) => user.name !== name)\n  userSchema.users = newUsers\n  UserSchema.write(userSchema)\n}\n\nexport async function switchUser(name: string) {\n  const userSchema = UserSchema.read()\n  for (let index = 0; index < userSchema.users.length; index++) {\n    if (userSchema.users[index].name === name) {\n      userSchema.selected = index\n      UserSchema.write(userSchema)\n      console.log(`${getEmoji('✅')} switch user success`)\n      return\n    }\n  }\n  console.log(`user ${name} not exist`)\n}\n"
  },
  {
    "path": "cli/src/action/website/index.ts",
    "content": "import {\n  websiteControllerBindDomain,\n  websiteControllerCreate,\n  websiteControllerFindAll,\n  websiteControllerRemove,\n} from '../../api/v1/websitehosting'\nimport * as Table from 'cli-table3'\nimport { formatDate } from '../../util/format'\nimport { BindCustomDomainDto, CreateWebsiteDto } from '../../api/v1/data-contracts'\nimport { getEmoji } from '../../util/print'\nimport { AppSchema } from '../../schema/app'\n\nexport async function list() {\n  const appSchema = AppSchema.read()\n  const websites = await websiteControllerFindAll(appSchema.appid)\n  const table = new Table({\n    head: ['bucketName', 'domain', 'state', 'updatedAt'],\n  })\n  for (const item of websites) {\n    table.push([item.bucketName, item.domain, item.state, formatDate(item.updatedAt)])\n  }\n  console.log(table.toString())\n}\n\nexport async function create(bucketName: string, options: any) {\n  const appSchema = AppSchema.read()\n\n  const createDto: CreateWebsiteDto = {\n    bucketName,\n    state: 'Active',\n  }\n  const website = await websiteControllerCreate(appSchema.appid, createDto)\n\n  if (options) {\n  }\n\n  console.log(`${getEmoji('✅')} create website success!`)\n  console.log(`You can access through this domain: ${website.domain}`)\n}\n\nexport async function del(bucketName: string, options: any) {\n  const appSchema = AppSchema.read()\n  const websites = await websiteControllerFindAll(appSchema.appid)\n\n  if (options) {\n  }\n\n  const targetId = websites.find((item) => item.bucketName === bucketName)?._id\n  if (!targetId) {\n    console.log(`${getEmoji('❌')} website ${bucketName} not found`)\n    return\n  }\n  await websiteControllerRemove(appSchema.appid, targetId)\n\n  console.log(`${getEmoji('✅')} delete website success!`)\n}\n\nexport async function custom(bucketName: string, domain: string, options: any) {\n  const appSchema = AppSchema.read()\n  const websites = await websiteControllerFindAll(appSchema.appid)\n\n  if (options) {\n  }\n\n  const targetId = websites.find((item) => item.bucketName === bucketName)?._id\n  if (!targetId) {\n    console.log(`${getEmoji('❌')} website ${bucketName} not found`)\n    return\n  }\n\n  const patchDto: BindCustomDomainDto = {\n    domain,\n  }\n  const website = await websiteControllerBindDomain(appSchema.appid, targetId, patchDto)\n\n  console.log(`${getEmoji('✅')} bind custom success!`)\n  console.log(`You can access through this domain: ${website.domain}`)\n}\n"
  },
  {
    "path": "cli/src/api/custom.ts",
    "content": "import { request } from '../util/request'\n\nexport async function databaseControllerExport(appid: string): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/databases/export`,\n    method: 'GET',\n    responseType: 'stream',\n  })\n}\n\nexport async function databaseControllerImport(appid: string, data: any): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/databases/import`,\n    method: 'PUT',\n    data: data,\n    headers: {\n      'Content-Type': 'multipart/form-data',\n    },\n  })\n}\n"
  },
  {
    "path": "cli/src/api/debug.ts",
    "content": "import axios, { AxiosRequestHeaders, AxiosResponse } from 'axios'\nimport * as urlencode from 'urlencode'\n\nexport async function invokeFunction(\n  invokeUrl: string,\n  token: string,\n  funcName: string,\n  funcData: any,\n  method = 'GET',\n  query = '',\n  data = '',\n  customerHeader: any = {},\n): Promise<{ res: any; requestId: string }> {\n  const header: AxiosRequestHeaders | any = {\n    'x-laf-develop-token': token,\n    'x-laf-func-data': urlencode(JSON.stringify(funcData)),\n    'Content-Type': 'application/x-www-form-urlencoded', // default content type\n    ...customerHeader,\n  }\n  const res = await request({\n    url: invokeUrl + '/' + funcName + (query ? '?' + query : ''),\n    method: method,\n    headers: header,\n    data: data,\n  })\n  return {\n    res: res.data,\n    requestId: res.headers['request-id'],\n  }\n}\n\nconst request = axios.create({\n  baseURL: '/',\n  withCredentials: true,\n  timeout: 30000,\n})\n\n// request interceptor\nrequest.interceptors.request.use(\n  (config: any) => {\n    const _headers: AxiosRequestHeaders | any = {\n      'Content-Type': 'application/json',\n    }\n    config.headers = {\n      ..._headers,\n      ...config.headers,\n    }\n    return config\n  },\n  (error) => {\n    console.log('exec error', error)\n  },\n)\n\n// response interceptor\nrequest.interceptors.response.use(\n  (response: AxiosResponse) => {\n    return response\n  },\n  (error) => {\n    if (axios.isCancel(error)) {\n      console.log('repeated request: ' + error.message)\n      process.exit(1)\n    } else {\n      return Promise.reject(error)\n    }\n  },\n)\n"
  },
  {
    "path": "cli/src/api/pat.ts",
    "content": "import { request } from '../util/request'\n\nexport async function pat2token(server: string, data: { pat: string }): Promise<any> {\n  return request({\n    url: server + `/v1/auth/pat2token`,\n    method: 'POST',\n    data: data,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/account.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport {\n  AccountControllerGetChargeOrderAmountParams,\n  AccountControllerGetChargeRecordsParams,\n  AccountControllerInviteCodeProfitParams,\n  AccountControllerWechatNotifyData,\n  CreateChargeOrderDto,\n  UseGiftCodeDto,\n} from './data-contracts'\n\n/**\n * No description\n *\n * @tags Account\n * @name AccountControllerFindOne\n * @summary Get account info\n * @request GET:/v1/accounts\n * @secure\n */\nexport async function accountControllerFindOne(configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/accounts`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Account\n * @name AccountControllerGetChargeOrderAmount\n * @summary Get charge order total amount\n * @request GET:/v1/accounts/charge-order/amount\n * @secure\n */\nexport async function accountControllerGetChargeOrderAmount(\n  query: AccountControllerGetChargeOrderAmountParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/accounts/charge-order/amount`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Account\n * @name AccountControllerGetChargeOrder\n * @summary Get charge order\n * @request GET:/v1/accounts/charge-order/{id}\n * @secure\n */\nexport async function accountControllerGetChargeOrder(id: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/accounts/charge-order/${id}`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Account\n * @name AccountControllerGetChargeRecords\n * @summary get all charge order\n * @request GET:/v1/accounts/charge-orders\n * @secure\n */\nexport async function accountControllerGetChargeRecords(\n  query: AccountControllerGetChargeRecordsParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/accounts/charge-orders`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Account\n * @name AccountControllerCharge\n * @summary Create charge order\n * @request POST:/v1/accounts/charge-order\n * @secure\n */\nexport async function accountControllerCharge(\n  data: CreateChargeOrderDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/accounts/charge-order`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Account\n * @name AccountControllerGetChargeRewardList\n * @summary Get charge reward list\n * @request GET:/v1/accounts/charge-reward\n * @secure\n */\nexport async function accountControllerGetChargeRewardList(configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/accounts/charge-reward`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Account\n * @name AccountControllerWechatNotify\n * @request POST:/v1/accounts/payment/wechat-notify\n * @secure\n */\nexport async function accountControllerWechatNotify(\n  configParams: RequestParams = {},\n): Promise<AccountControllerWechatNotifyData> {\n  return request({\n    url: `/v1/accounts/payment/wechat-notify`,\n    method: 'POST',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Account\n * @name AccountControllerGiftCode\n * @summary Use a gift code\n * @request POST:/v1/accounts/gift-code\n * @secure\n */\nexport async function accountControllerGiftCode(data: UseGiftCodeDto, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/accounts/gift-code`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Account\n * @name AccountControllerInviteCode\n * @summary get a invite code\n * @request GET:/v1/accounts/invite-code\n * @secure\n */\nexport async function accountControllerInviteCode(configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/accounts/invite-code`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Account\n * @name AccountControllerInviteCodeProfit\n * @summary get invite code profit\n * @request GET:/v1/accounts/invite-profit\n * @secure\n */\nexport async function accountControllerInviteCodeProfit(\n  query: AccountControllerInviteCodeProfitParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/accounts/invite-profit`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/application.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport {\n  ApplicationControllerFindOneData,\n  BindCustomDomainDto,\n  CreateApplicationDto,\n  CreateDependencyDto,\n  CreateEnvironmentDto,\n  DeleteDependencyDto,\n  UpdateApplicationBundleDto,\n  UpdateApplicationNameDto,\n  UpdateApplicationStateDto,\n  UpdateDependencyDto,\n} from './data-contracts'\n\n/**\n * No description\n *\n * @tags Application\n * @name ApplicationControllerCreate\n * @summary Create application\n * @request POST:/v1/applications\n * @secure\n */\nexport async function applicationControllerCreate(\n  data: CreateApplicationDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/applications`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name ApplicationControllerFindAll\n * @summary Get user application list\n * @request GET:/v1/applications\n * @secure\n */\nexport async function applicationControllerFindAll(configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/applications`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name ApplicationControllerFindOne\n * @summary Get an application by appid\n * @request GET:/v1/applications/{appid}\n * @secure\n */\nexport async function applicationControllerFindOne(\n  appid: string,\n  configParams: RequestParams = {},\n): Promise<ApplicationControllerFindOneData> {\n  return request({\n    url: `/v1/applications/${appid}`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name ApplicationControllerDelete\n * @summary Delete an application\n * @request DELETE:/v1/applications/{appid}\n * @secure\n */\nexport async function applicationControllerDelete(appid: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/applications/${appid}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name ApplicationControllerUpdateName\n * @summary Update application name\n * @request PATCH:/v1/applications/{appid}/name\n * @secure\n */\nexport async function applicationControllerUpdateName(\n  appid: string,\n  data: UpdateApplicationNameDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/applications/${appid}/name`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name ApplicationControllerUpdateState\n * @summary Update application state\n * @request PATCH:/v1/applications/{appid}/state\n * @secure\n */\nexport async function applicationControllerUpdateState(\n  appid: string,\n  data: UpdateApplicationStateDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/applications/${appid}/state`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name ApplicationControllerUpdateBundle\n * @summary Update application bundle\n * @request PATCH:/v1/applications/{appid}/bundle\n * @secure\n */\nexport async function applicationControllerUpdateBundle(\n  appid: string,\n  data: UpdateApplicationBundleDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/applications/${appid}/bundle`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name ApplicationControllerBindDomain\n * @summary Bind custom domain to application\n * @request PATCH:/v1/applications/{appid}/domain\n * @secure\n */\nexport async function applicationControllerBindDomain(\n  appid: string,\n  data: BindCustomDomainDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/applications/${appid}/domain`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name ApplicationControllerRemove\n * @summary Remove custom domain of application\n * @request DELETE:/v1/applications/{appid}/domain\n * @secure\n */\nexport async function applicationControllerRemove(appid: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/applications/${appid}/domain`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name ApplicationControllerCheckResolved\n * @summary Check if domain is resolved\n * @request POST:/v1/applications/{appid}/domain/resolved\n * @secure\n */\nexport async function applicationControllerCheckResolved(\n  appid: string,\n  data: BindCustomDomainDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/applications/${appid}/domain/resolved`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name EnvironmentVariableControllerUpdateAll\n * @summary Update environment variables (replace all)\n * @request POST:/v1/apps/{appid}/environments\n * @secure\n */\nexport async function environmentVariableControllerUpdateAll(\n  appid: string,\n  data: CreateEnvironmentDto[],\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/environments`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name EnvironmentVariableControllerAdd\n * @summary Set a environment variable (create/update)\n * @request PATCH:/v1/apps/{appid}/environments\n * @secure\n */\nexport async function environmentVariableControllerAdd(\n  appid: string,\n  data: CreateEnvironmentDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/environments`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name EnvironmentVariableControllerGet\n * @summary Get environment variables\n * @request GET:/v1/apps/{appid}/environments\n * @secure\n */\nexport async function environmentVariableControllerGet(appid: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/environments`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name EnvironmentVariableControllerDelete\n * @summary Delete an environment variable by name\n * @request DELETE:/v1/apps/{appid}/environments/{name}\n * @secure\n */\nexport async function environmentVariableControllerDelete(\n  appid: string,\n  name: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/environments/${name}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name DependencyControllerAdd\n * @summary Add application dependencies\n * @request POST:/v1/apps/{appid}/dependencies\n * @secure\n */\nexport async function dependencyControllerAdd(\n  appid: string,\n  data: CreateDependencyDto[],\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/dependencies`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name DependencyControllerUpdate\n * @summary Update application dependencies\n * @request PATCH:/v1/apps/{appid}/dependencies\n * @secure\n */\nexport async function dependencyControllerUpdate(\n  appid: string,\n  data: UpdateDependencyDto[],\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/dependencies`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name DependencyControllerGetDependencies\n * @summary Get application dependencies\n * @request GET:/v1/apps/{appid}/dependencies\n * @secure\n */\nexport async function dependencyControllerGetDependencies(\n  appid: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/dependencies`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Application\n * @name DependencyControllerRemove\n * @summary Remove a dependency\n * @request DELETE:/v1/apps/{appid}/dependencies\n * @secure\n */\nexport async function dependencyControllerRemove(\n  appid: string,\n  data: DeleteDependencyDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/dependencies`,\n    method: 'DELETE',\n    data: data,\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/authentication.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport {\n  CreatePATDto,\n  PasswdCheckDto,\n  PasswdResetDto,\n  PasswdSigninDto,\n  PasswdSignupDto,\n  Pat2TokenDto,\n  PhoneSigninDto,\n  SendEmailCodeDto,\n  SendPhoneCodeDto,\n} from './data-contracts'\n\n/**\n * No description\n *\n * @tags Authentication\n * @name UserPasswordControllerSignup\n * @summary Signup by user-password\n * @request POST:/v1/auth/passwd/signup\n */\nexport async function userPasswordControllerSignup(\n  data: PasswdSignupDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/auth/passwd/signup`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Authentication\n * @name UserPasswordControllerSignin\n * @summary Signin by user-password\n * @request POST:/v1/auth/passwd/signin\n */\nexport async function userPasswordControllerSignin(\n  data: PasswdSigninDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/auth/passwd/signin`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Authentication\n * @name UserPasswordControllerReset\n * @summary Reset password\n * @request POST:/v1/auth/passwd/reset\n */\nexport async function userPasswordControllerReset(\n  data: PasswdResetDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/auth/passwd/reset`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Authentication\n * @name UserPasswordControllerCheck\n * @summary Check if user-password is set\n * @request POST:/v1/auth/passwd/check\n */\nexport async function userPasswordControllerCheck(\n  data: PasswdCheckDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/auth/passwd/check`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Authentication\n * @name PhoneControllerSendCode\n * @summary Send phone verify code\n * @request POST:/v1/auth/phone/sms/code\n */\nexport async function phoneControllerSendCode(data: SendPhoneCodeDto, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/auth/phone/sms/code`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Authentication\n * @name PhoneControllerSignin\n * @summary Signin by phone and verify code\n * @request POST:/v1/auth/phone/signin\n */\nexport async function phoneControllerSignin(data: PhoneSigninDto, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/auth/phone/signin`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Authentication\n * @name AuthenticationControllerGetProviders\n * @summary Auth providers\n * @request GET:/v1/auth/providers\n */\nexport async function authenticationControllerGetProviders(configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/auth/providers`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Authentication\n * @name AuthenticationControllerPat2Token\n * @summary Get user token by PAT\n * @request POST:/v1/auth/pat2token\n */\nexport async function authenticationControllerPat2Token(\n  data: Pat2TokenDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/auth/pat2token`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Authentication\n * @name EmailControllerSendCode\n * @summary Send email verify code\n * @request POST:/v1/auth/email/code\n */\nexport async function emailControllerSendCode(data: SendEmailCodeDto, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/auth/email/code`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Authentication\n * @name PatControllerCreate\n * @summary Create a PAT\n * @request POST:/v1/pats\n * @secure\n */\nexport async function patControllerCreate(data: CreatePATDto, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/pats`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Authentication\n * @name PatControllerFindAll\n * @summary List PATs\n * @request GET:/v1/pats\n * @secure\n */\nexport async function patControllerFindAll(configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/pats`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Authentication\n * @name PatControllerRemove\n * @summary Delete a PAT\n * @request DELETE:/v1/pats/{id}\n * @secure\n */\nexport async function patControllerRemove(id: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/pats/${id}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/billing.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport {\n  BillingControllerFindAllParams,\n  BillingControllerGetExpenseByDayParams,\n  BillingControllerGetExpenseParams,\n  CalculatePriceDto,\n} from './data-contracts'\n\n/**\n * No description\n *\n * @tags Billing\n * @name BillingControllerFindAll\n * @summary Get billings of an application\n * @request GET:/v1/billings\n * @secure\n */\nexport async function billingControllerFindAll(\n  query: BillingControllerFindAllParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/billings`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Billing\n * @name BillingControllerGetExpense\n * @summary Get my total amount\n * @request GET:/v1/billings/amount\n * @secure\n */\nexport async function billingControllerGetExpense(\n  query: BillingControllerGetExpenseParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/billings/amount`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Billing\n * @name BillingControllerGetExpenseByDay\n * @summary Get my total amount by day\n * @request GET:/v1/billings/amounts\n * @secure\n */\nexport async function billingControllerGetExpenseByDay(\n  query: BillingControllerGetExpenseByDayParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/billings/amounts`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Billing\n * @name ResourceControllerCalculatePrice\n * @summary Calculate pricing\n * @request POST:/v1/resources/price\n */\nexport async function resourceControllerCalculatePrice(\n  data: CalculatePriceDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/resources/price`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Billing\n * @name ResourceControllerGetResourceOptions\n * @summary Get resource option list\n * @request GET:/v1/resources/resource-options\n */\nexport async function resourceControllerGetResourceOptions(configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/resources/resource-options`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Billing\n * @name ResourceControllerGetResourceOptionsByRegionId\n * @summary Get resource option list by region id\n * @request GET:/v1/resources/resource-options/{regionId}\n */\nexport async function resourceControllerGetResourceOptionsByRegionId(\n  regionId: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/resources/resource-options/${regionId}`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Billing\n * @name ResourceControllerGetResourceBundles\n * @summary Get resource template list\n * @request GET:/v1/resources/resource-bundles\n */\nexport async function resourceControllerGetResourceBundles(configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/resources/resource-bundles`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/data-contracts.ts",
    "content": "export interface ResponseUtil {\n  error?: string\n  data?: object\n}\n\nexport interface RuntimeImageGroup {\n  main: string\n  init: string\n  sidecar?: string\n}\n\nexport interface Runtime {\n  _id: string\n  name: string\n  type: string\n  image: RuntimeImageGroup\n  state: string\n  version: string\n  latest: boolean\n}\n\nexport type CloudFunction = object\n\nexport interface CreateFunctionDto {\n  /** Function name is unique in the application */\n  name: string\n  description?: string\n  methods: ('GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD')[]\n  /** The source code of the function */\n  code: string\n  tags?: string[]\n}\n\nexport interface UpdateFunctionDebugDto {\n  params: object\n}\n\nexport interface UpdateFunctionDto {\n  /** Function name is unique in the application */\n  description?: string\n  methods: ('GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD')[]\n  /** The source code of the function */\n  code: string\n  tags?: string[]\n}\n\nexport interface CompileFunctionDto {\n  /** The source code of the function */\n  code: string\n}\n\nexport interface CloudFunctionHistorySource {\n  code: string\n}\n\nexport interface CloudFunctionHistory {\n  _id: string\n  appid: string\n  functionId: string\n  source: CloudFunctionHistorySource\n  /** @format date-time */\n  createdAt: string\n}\n\nexport interface Region {\n  _id: string\n  name: string\n  displayName: string\n  tls: boolean\n  state: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface ApplicationBundleResource {\n  /** @example 500 */\n  limitCPU: number\n  /** @example 1024 */\n  limitMemory: number\n  /** @example 1024 */\n  databaseCapacity: number\n  /** @example 1024 */\n  storageCapacity: number\n  /** @example 100 */\n  limitCountOfCloudFunction: number\n  /** @example 3 */\n  limitCountOfBucket: number\n  /** @example 3 */\n  limitCountOfDatabasePolicy: number\n  /** @example 1 */\n  limitCountOfTrigger: number\n  /** @example 3 */\n  limitCountOfWebsiteHosting: number\n  reservedTimeAfterExpired: number\n}\n\nexport interface Autoscaling {\n  enable: boolean\n  minReplicas: number\n  maxReplicas: number\n  targetCPUUtilizationPercentage: number\n  targetMemoryUtilizationPercentage: number\n}\n\nexport interface ApplicationBundle {\n  _id: string\n  appid: string\n  resource: ApplicationBundleResource\n  autoscaling: Autoscaling\n  isTrialTier?: boolean\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface EnvironmentVariable {\n  name: string\n  value: string\n}\n\nexport interface ApplicationConfiguration {\n  _id: string\n  appid: string\n  environments: EnvironmentVariable[]\n  dependencies: string[]\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface RuntimeDomain {\n  _id: string\n  appid: string\n  domain: string\n  customDomain?: string\n  state: 'Active' | 'Inactive' | 'Deleted'\n  phase: 'Creating' | 'Created' | 'Deleting' | 'Deleted'\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface ApplicationWithRelations {\n  _id: string\n  name: string\n  appid: string\n  regionId: string\n  runtimeId: string\n  tags: string[]\n  state: 'Running' | 'Stopped' | 'Restarting' | 'Deleted'\n  phase: 'Creating' | 'Created' | 'Starting' | 'Started' | 'Stopping' | 'Stopped' | 'Deleting' | 'Deleted'\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n  createdBy: string\n  region?: Region\n  bundle?: ApplicationBundle\n  runtime?: Runtime\n  configuration?: ApplicationConfiguration\n  domain?: RuntimeDomain\n}\n\nexport interface CreateAutoscalingDto {\n  /** @default false */\n  enable: boolean\n  /** @default 1 */\n  minReplicas: number\n  /** @default 5 */\n  maxReplicas: number\n  /** @default 50 */\n  targetCPUUtilizationPercentage?: number\n  /** @default 50 */\n  targetMemoryUtilizationPercentage?: number\n}\n\nexport interface CreateApplicationDto {\n  /** @example 200 */\n  cpu: number\n  /** @example 256 */\n  memory: number\n  /** @example 2048 */\n  databaseCapacity: number\n  /** @example 4096 */\n  storageCapacity: number\n  autoscaling: CreateAutoscalingDto\n  name: string\n  /** @default \"Running\" */\n  state: 'Running'\n  regionId: string\n  runtimeId: string\n}\n\nexport interface Application {\n  _id: string\n  name: string\n  appid: string\n  regionId: string\n  runtimeId: string\n  tags: string[]\n  state: 'Running' | 'Stopped' | 'Restarting' | 'Deleted'\n  phase: 'Creating' | 'Created' | 'Starting' | 'Started' | 'Stopping' | 'Stopped' | 'Deleting' | 'Deleted'\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n  createdBy: string\n}\n\nexport interface UpdateApplicationNameDto {\n  name: string\n}\n\nexport interface UpdateApplicationStateDto {\n  state: 'Running' | 'Stopped' | 'Restarting' | 'Deleted'\n}\n\nexport interface UpdateApplicationBundleDto {\n  /** @example 200 */\n  cpu: number\n  /** @example 256 */\n  memory: number\n  /** @example 2048 */\n  databaseCapacity: number\n  /** @example 4096 */\n  storageCapacity: number\n  autoscaling: CreateAutoscalingDto\n}\n\nexport interface BindCustomDomainDto {\n  domain: string\n}\n\nexport interface CreateEnvironmentDto {\n  name: string\n  value: string\n}\n\nexport interface CreateBucketDto {\n  /** The short name of the bucket which not contain the appid */\n  shortName: string\n  policy: 'readwrite' | 'readonly' | 'private'\n}\n\nexport interface UpdateBucketDto {\n  policy: 'readwrite' | 'readonly' | 'private'\n}\n\nexport interface CreateCollectionDto {\n  name: string\n}\n\nexport interface Collection {\n  name: string\n  type: string\n  options: object\n  info: object\n  idIndex: object\n}\n\nexport interface UpdateCollectionDto {\n  validatorSchema?: object\n  validationLevel?: string\n}\n\nexport interface DatabasePolicyRule {\n  _id: string\n  appid: string\n  policyName: string\n  collectionName: string\n  value: object\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface DatabasePolicyWithRules {\n  _id: string\n  appid: string\n  name: string\n  injector?: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n  rules: DatabasePolicyRule[]\n}\n\nexport interface CreatePolicyDto {\n  name: string\n}\n\nexport interface DatabasePolicy {\n  _id: string\n  appid: string\n  name: string\n  injector?: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface UpdatePolicyDto {\n  injector: string\n}\n\nexport interface CreatePolicyRuleDto {\n  collectionName: string\n  value: string\n}\n\nexport interface UpdatePolicyRuleDto {\n  value: string\n}\n\nexport interface Account {\n  _id: string\n  balance: number\n  state: 'Active' | 'Inactive'\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n  createdBy: string\n}\n\nexport type Number = object\n\nexport interface AccountChargeOrder {\n  _id: string\n  accountId: string\n  amount: number\n  currency: 'CNY' | 'USD'\n  phase: 'Pending' | 'Paid' | 'Failed'\n  channel: 'Manual' | 'Alipay' | 'WeChat' | 'Stripe' | 'Paypal' | 'Google' | 'GiftCode' | 'InviteCode'\n  result: object\n  message: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n  createdBy: string\n}\n\nexport interface GetAccountChargeOrdersDto {\n  _id: string\n  accountId: string\n  amount: number\n  currency: 'CNY' | 'USD'\n  phase: 'Pending' | 'Paid' | 'Failed'\n  channel: 'Manual' | 'Alipay' | 'WeChat' | 'Stripe' | 'Paypal' | 'Google'\n  result: object\n  message: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n  createdBy: string\n  reward: number\n}\n\nexport interface WeChatPaymentCreateOrderResult {\n  code_url: string\n}\n\nexport interface CreateChargeOrderOutDto {\n  order: AccountChargeOrder\n  result: WeChatPaymentCreateOrderResult\n}\n\nexport interface CreateChargeOrderDto {\n  /** @example 1000 */\n  amount: number\n  /** @example \"WeChat\" */\n  channel: string\n  /** @example \"CNY\" */\n  currency: string\n}\n\nexport interface AccountChargeReward {\n  _id: string\n  amount: number\n  reward: number\n  message?: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface UseGiftCodeDto {\n  /** gift code */\n  code: string\n}\n\nexport interface InviteCode {\n  _id: string\n  uid: string\n  code: string\n  state: 'Active' | 'Inactive'\n  name: string\n  description: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface InviteCodeProfit {\n  _id: string\n  uid: string\n  invitedBy: string\n  codeId: string\n  /** @format date-time */\n  createdAt: string\n  profit: number\n  username: string\n}\n\nexport interface CreateWebsiteDto {\n  bucketName: string\n  state: string\n}\n\nexport interface PasswdSignupDto {\n  /**\n   * username, 3-64 characters\n   * @example \"laf-user\"\n   */\n  username: string\n  /**\n   * password, 8-64 characters\n   * @example \"laf-user-password\"\n   */\n  password: string\n  /**\n   * phone\n   * @example \"13805718888\"\n   */\n  phone?: string\n  /**\n   * verify code\n   * @example \"032456\"\n   */\n  code?: string\n  /**\n   * type\n   * @example \"Signup\"\n   */\n  type?: string\n  /**\n   * invite code\n   * @example \"iLeMi7x\"\n   */\n  inviteCode?: string\n}\n\nexport interface PasswdSigninDto {\n  /**\n   * username\n   * @example \"laf-user\"\n   */\n  username: string\n  /**\n   * password, 8-64 characters\n   * @example \"laf-user-password\"\n   */\n  password: string\n}\n\nexport interface PasswdResetDto {\n  /**\n   * new password, 8-64 characters\n   * @example \"laf-user-password\"\n   */\n  password: string\n  /**\n   * phone\n   * @example \"13805718888\"\n   */\n  phone: string\n  /**\n   * verify code\n   * @example \"032456\"\n   */\n  code: string\n  /**\n   * type\n   * @example \"ResetPassword\"\n   */\n  type: string\n}\n\nexport interface PasswdCheckDto {\n  /**\n   * username | phone | email\n   * @example \"laf-user | 13805718888 | laf-user@laf.com\"\n   */\n  username: string\n}\n\nexport interface SendPhoneCodeDto {\n  /**\n   * phone\n   * @example \"13805718888\"\n   */\n  phone: string\n  /**\n   * verify code type\n   * @example \"Signin | Signup | ResetPassword | Bind | Unbind | ChangePhone\"\n   */\n  type: string\n}\n\nexport interface PhoneSigninDto {\n  /**\n   * phone\n   * @example \"13805718888\"\n   */\n  phone: string\n  code: string\n  /**\n   * username\n   * @example \"laf-user\"\n   */\n  username: string\n  /**\n   * password, 8-64 characters\n   * @example \"laf-user-password\"\n   */\n  password: string\n  /**\n   * invite code\n   * @example \"iLeMi7x\"\n   */\n  inviteCode?: string\n}\n\nexport interface Pat2TokenDto {\n  /**\n   * PAT\n   * @example \"laf_1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef\"\n   */\n  pat: string\n}\n\nexport interface SendEmailCodeDto {\n  email: string\n  /** verify code type */\n  type: 'bind' | 'Unbind'\n}\n\nexport interface CreatePATDto {\n  name: string\n  /** @min 60 */\n  expiresIn: number\n}\n\nexport interface IdVerified {\n  isVerified: boolean\n  idVerifyFailedTimes: number\n}\n\nexport interface UserProfile {\n  _id: string\n  uid: string\n  openData?: object\n  avatar?: string\n  name?: string\n  idVerified: IdVerified\n  idCard: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface UserWithProfile {\n  _id: string\n  username: string\n  email?: string\n  phone?: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n  profile?: UserProfile\n}\n\nexport interface BindPhoneDto {\n  /**\n   * old phone number\n   * @example \"13805718888\"\n   */\n  oldPhoneNumber: string\n  /**\n   * new phone number\n   * @example \"13805718888\"\n   */\n  newPhoneNumber: string\n  /**\n   * sms verify code for old phone number\n   * @example \"032476\"\n   */\n  oldSmsCode: string\n  /**\n   * sms verify code for new phone number\n   * @example \"032476\"\n   */\n  newSmsCode: string\n}\n\nexport interface BindEmailDto {\n  email: string\n  /**\n   * verify code\n   * @example \"032476\"\n   */\n  code: string\n}\n\nexport interface BindUsernameDto {\n  /**\n   * username\n   * @example \"laf-user\"\n   */\n  username: string\n}\n\nexport interface CreateTriggerDto {\n  desc: string\n  cron: string\n  target: string\n}\n\nexport interface FunctionLog {\n  _id: string\n  request_id: string\n  func: string\n  data: string\n  /** @format date-time */\n  created_at: string\n}\n\nexport interface CreateDependencyDto {\n  name: string\n  spec: string\n}\n\nexport interface UpdateDependencyDto {\n  name: string\n  spec: string\n}\n\nexport interface DeleteDependencyDto {\n  name: string\n}\n\nexport interface ApplicationBillingDetailItem {\n  usage: number\n  amount: number\n}\n\nexport interface ApplicationBillingDetail {\n  cpu: ApplicationBillingDetailItem\n  memory: ApplicationBillingDetailItem\n  databaseCapacity: ApplicationBillingDetailItem\n  storageCapacity: ApplicationBillingDetailItem\n  networkTraffic: ApplicationBillingDetailItem\n}\n\nexport interface ApplicationBilling {\n  _id: string\n  appid: string\n  state: 'Pending' | 'Done'\n  amount: number\n  detail: ApplicationBillingDetail\n  /** @format date-time */\n  startAt: string\n  /** @format date-time */\n  endAt: string\n  createdBy: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface BillingsByDayDto {\n  totalAmount: string\n  /** @format date-time */\n  day: string\n}\n\nexport interface CalculatePriceResultDto {\n  /** @example 0.072 */\n  cpu: number\n  /** @example 0.036 */\n  memory: number\n  /** @example 0.036 */\n  storageCapacity: number\n  /** @example 0.036 */\n  databaseCapacity: number\n  /** @example 0.18 */\n  total: number\n}\n\nexport interface CalculatePriceDto {\n  /** @example 200 */\n  cpu: number\n  /** @example 256 */\n  memory: number\n  /** @example 2048 */\n  databaseCapacity: number\n  /** @example 4096 */\n  storageCapacity: number\n  autoscaling: CreateAutoscalingDto\n  regionId: string\n}\n\nexport interface ResourceSpec {\n  value: number\n  label?: string\n}\n\nexport interface ResourceOption {\n  _id: string\n  regionId: string\n  type: 'cpu' | 'memory' | 'databaseCapacity' | 'storageCapacity' | 'networkTraffic'\n  price: number\n  specs: ResourceSpec[]\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface ResourceBundleSpecMap {\n  cpu: ResourceSpec\n  memory: ResourceSpec\n  databaseCapacity: ResourceSpec\n  storageCapacity: ResourceSpec\n  networkTraffic?: ResourceSpec\n}\n\nexport interface ResourceBundle {\n  _id: string\n  regionId: string\n  name: string\n  displayName: string\n  spec: ResourceBundleSpecMap\n  enableFreeTier?: boolean\n  limitCountOfFreeTierPerUser?: number\n  message?: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface FunctionTemplateItemSource {\n  /** The source code of the function */\n  code: string\n}\n\nexport interface FunctionTemplateItems {\n  _id: string\n  templateId: string\n  name: string\n  desc: string\n  source: FunctionTemplateItemSource\n  methods: ('GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD')[]\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface UserInfo {\n  username?: string\n  email?: string\n}\n\nexport interface FunctionTemplatesDto {\n  _id: string\n  uid: string\n  name: string\n  dependencies: string[]\n  environments: EnvironmentVariable[]\n  private: boolean\n  isRecommended: boolean\n  description: string\n  star: number\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n  items?: FunctionTemplateItems[]\n  user?: UserInfo\n  author: string\n  stared: boolean\n}\n\nexport interface FunctionTemplateItemDto {\n  /** FunctionTemplate item name */\n  name: string\n  description?: string\n  methods: ('GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD')[]\n  /** The source code of the function */\n  code: string\n}\n\nexport interface CreateFunctionTemplateDto {\n  /** function template name */\n  name: string\n  /** Dependencies */\n  dependencies: CreateDependencyDto[]\n  /** environments */\n  environments: CreateEnvironmentDto[]\n  /** Private flag */\n  private: boolean\n  /** function template description */\n  description?: string\n  /** items of the function template */\n  items: FunctionTemplateItemDto[]\n}\n\nexport type ObjectId = object\n\nexport interface UpdateFunctionTemplateDto {\n  /** Function template id */\n  functionTemplateId: ObjectId\n  /** Template name */\n  name: string\n  /** Dependencies */\n  dependencies: CreateDependencyDto[]\n  /** Environments */\n  environments: CreateEnvironmentDto[]\n  /** Private flag */\n  private: boolean\n  /** function template description */\n  description?: string\n  /** items of the function template */\n  items?: FunctionTemplateItemDto[]\n}\n\nexport interface GetFunctionTemplateUsedByDto {\n  uid: string\n}\n\nexport interface DeleteRecycleBinItemsDto {\n  /** The list of item ids */\n  ids: string[]\n}\n\nexport interface RestoreRecycleBinItemsDto {\n  /** The list of item ids */\n  ids: string[]\n}\n\nexport interface CloudFunctionSourceDto {\n  code: string\n  compiled: string\n  uri?: string\n  version: number\n  hash?: string\n  lang?: string\n}\n\nexport interface FunctionRecycleBinItemsDto {\n  _id: string\n  appid: string\n  /** Function name is unique in the application */\n  name: string\n  source: CloudFunctionSourceDto\n  description?: string\n  tags?: string[]\n  methods: ('GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD')[]\n  params?: object\n  createdAt: string\n  updatedAt: string\n  createdBy: string\n}\n\nexport interface Group {\n  _id: string\n  name: string\n  appid: string\n  createdBy: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface User {\n  _id: string\n  username: string\n  email?: string\n  phone?: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface GetGroupInviteCodeDetailDto {\n  group: Group\n  invitedBy: User\n}\n\nexport interface CreateGroupDto {\n  name: string\n}\n\nexport interface UpdateGroupDto {\n  name: string\n}\n\nexport interface FindGroupInviteCodeDto {\n  usedBy: User\n}\n\nexport interface GroupInviteCode {\n  _id: string\n  usedBy?: string\n  code: string\n  role: string\n  groupId: string\n  createdBy: string\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface GenerateGroupInviteCodeDto {\n  role: 'owner' | 'admin' | 'developer'\n}\n\nexport interface FindGroupMemberDto {\n  username: string\n}\n\nexport interface GroupMember {\n  _id: string\n  uid: string\n  groupId: string\n  role: 'owner' | 'admin' | 'developer'\n  /** @format date-time */\n  createdAt: string\n  /** @format date-time */\n  updatedAt: string\n}\n\nexport interface UpdateGroupMemberRoleDto {\n  role: 'owner' | 'admin' | 'developer'\n}\n\nexport type ApplicationControllerFindOneData = any\n\nexport type DatabaseControllerProxyData = any\n\nexport type DatabaseControllerExportDatabaseData = any\n\nexport type DatabaseControllerImportDatabaseData = any\n\nexport interface AccountControllerGetChargeOrderAmountParams {\n  startTime: number\n  endTime: number\n}\n\nexport interface AccountControllerGetChargeRecordsParams {\n  id: string\n  channel: string\n  startTime: string\n  endTime: string\n  state: string\n  page: number\n  pageSize: number\n}\n\nexport type AccountControllerWechatNotifyData = any\n\nexport interface AccountControllerInviteCodeProfitParams {\n  page: number\n  pageSize: number\n}\n\nexport type UserControllerGetAvatarData = any\n\nexport interface LogControllerGetLogsParams {\n  /** The request id. Optional */\n  requestId?: string\n  /** The function name. Optional */\n  functionName?: string\n  /** The page size, default is 10 */\n  pageSize?: string\n  /** The page number, default is 1 */\n  page?: string\n  appid: string\n}\n\nexport type RegionControllerGetRegionsData = any\n\nexport type SettingControllerGetSettingsData = any\n\nexport type SettingControllerGetSettingByKeyData = any\n\nexport interface BillingControllerFindAllParams {\n  /** appid */\n  appid?: string[]\n  /** billing state */\n  state?: string\n  /**\n   * pagination start time\n   * @example \"2021-01-01T00:00:00.000Z\"\n   */\n  startTime?: string\n  /**\n   * pagination end time\n   * @example \"2022-01-01T00:00:00.000Z\"\n   */\n  endTime?: string\n  /**\n   * page number\n   * @example 1\n   */\n  page?: number\n  /**\n   * page size\n   * @example 10\n   */\n  pageSize?: number\n}\n\nexport interface BillingControllerGetExpenseParams {\n  startTime: number\n  endTime: number\n  appid: string[]\n  state: string\n}\n\nexport interface BillingControllerGetExpenseByDayParams {\n  startTime: number\n  endTime: number\n  appid: string[]\n  state: string\n}\n\nexport interface FunctionTemplateControllerGetAllFunctionTemplateParams {\n  asc: number\n  page: number\n  pageSize: number\n  keyword: string\n  sort: string\n}\n\nexport interface FunctionTemplateControllerGetFunctionTemplateUsedByParams {\n  asc: number\n  page: number\n  pageSize: number\n  id: string\n}\n\nexport interface FunctionTemplateControllerGetMyFunctionTemplateParams {\n  page: number\n  pageSize: number\n  keyword: string\n  asc: number\n  sort: string\n  type: string\n}\n\nexport interface FunctionTemplateControllerGetRecommendFunctionTemplateParams {\n  asc: number\n  page: number\n  pageSize: number\n  keyword: string\n  sort: string\n}\n\nexport interface FunctionRecycleBinControllerGetRecycleBinParams {\n  keyword: string\n  page: number\n  pageSize: number\n  startTime: number\n  endTime: number\n  appid: string\n}\n\nexport interface MonitorControllerGetDataParams {\n  q: ('cpuUsage' | 'memoryUsage' | 'networkReceive' | 'networkTransmit' | 'databaseUsage' | 'storageUsage')[]\n  /**\n   * Query step in seconds\n   * @min 60\n   * @max 3600\n   */\n  step: number\n  /** Query type */\n  type: 'range' | 'instant'\n  appid: string\n}\n"
  },
  {
    "path": "cli/src/api/v1/database.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport {\n  CreateCollectionDto,\n  CreatePolicyDto,\n  CreatePolicyRuleDto,\n  DatabaseControllerProxyData,\n  UpdateCollectionDto,\n  UpdatePolicyDto,\n  UpdatePolicyRuleDto,\n} from './data-contracts'\n\n/**\n * No description\n *\n * @tags Database\n * @name CollectionControllerCreate\n * @summary Create a new collection in database\n * @request POST:/v1/apps/{appid}/collections\n * @secure\n */\nexport async function collectionControllerCreate(\n  appid: string,\n  data: CreateCollectionDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/collections`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Database\n * @name CollectionControllerFindAll\n * @summary Get collection list of an application\n * @request GET:/v1/apps/{appid}/collections\n * @secure\n */\nexport async function collectionControllerFindAll(appid: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/collections`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Database\n * @name CollectionControllerFindOne\n * @summary Get collection by name\n * @request GET:/v1/apps/{appid}/collections/{name}\n * @secure\n */\nexport async function collectionControllerFindOne(\n  appid: string,\n  name: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/collections/${name}`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Database\n * @name CollectionControllerUpdate\n * @summary Update a collection\n * @request PATCH:/v1/apps/{appid}/collections/{name}\n * @secure\n */\nexport async function collectionControllerUpdate(\n  appid: string,\n  name: string,\n  data: UpdateCollectionDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/collections/${name}`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Database\n * @name CollectionControllerRemove\n * @summary Delete a collection by its name\n * @request DELETE:/v1/apps/{appid}/collections/{name}\n * @secure\n */\nexport async function collectionControllerRemove(\n  appid: string,\n  name: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/collections/${name}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Database\n * @name PolicyControllerCreate\n * @summary Create database policy\n * @request POST:/v1/apps/{appid}/policies\n * @secure\n */\nexport async function policyControllerCreate(\n  appid: string,\n  data: CreatePolicyDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/policies`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Database\n * @name PolicyControllerFindAll\n * @summary Get database policy list\n * @request GET:/v1/apps/{appid}/policies\n * @secure\n */\nexport async function policyControllerFindAll(appid: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/policies`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Database\n * @name PolicyControllerUpdate\n * @summary Update database policy\n * @request PATCH:/v1/apps/{appid}/policies/{name}\n * @secure\n */\nexport async function policyControllerUpdate(\n  appid: string,\n  name: string,\n  data: UpdatePolicyDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/policies/${name}`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Database\n * @name PolicyControllerRemove\n * @summary Remove a database policy\n * @request DELETE:/v1/apps/{appid}/policies/{name}\n * @secure\n */\nexport async function policyControllerRemove(\n  appid: string,\n  name: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/policies/${name}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Database\n * @name DatabaseControllerProxy\n * @summary The database proxy for database management\n * @request POST:/v1/apps/{appid}/databases/proxy\n * @secure\n */\nexport async function databaseControllerProxy(\n  appid: string,\n  configParams: RequestParams = {},\n): Promise<DatabaseControllerProxyData> {\n  return request({\n    url: `/v1/apps/${appid}/databases/proxy`,\n    method: 'POST',\n    ...configParams,\n  })\n}\n\n/**\n * No description\n *\n * @tags Database\n * @name PolicyRuleControllerCreate\n * @summary Create database policy rule\n * @request POST:/v1/apps/{appid}/policies/{name}/rules\n * @secure\n */\nexport async function policyRuleControllerCreate(\n  appid: string,\n  name: string,\n  data: CreatePolicyRuleDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/policies/${name}/rules`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Database\n * @name PolicyRuleControllerFindAll\n * @summary Get database policy rules\n * @request GET:/v1/apps/{appid}/policies/{name}/rules\n * @secure\n */\nexport async function policyRuleControllerFindAll(\n  appid: string,\n  name: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/policies/${name}/rules`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Database\n * @name PolicyRuleControllerUpdate\n * @summary Update database policy rule by collection name\n * @request PATCH:/v1/apps/{appid}/policies/{name}/rules/{collection}\n * @secure\n */\nexport async function policyRuleControllerUpdate(\n  appid: string,\n  name: string,\n  collection: string,\n  data: UpdatePolicyRuleDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/policies/${name}/rules/${collection}`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Database\n * @name PolicyRuleControllerRemove\n * @summary Remove a database policy rule by collection name\n * @request DELETE:/v1/apps/{appid}/policies/{name}/rules/{collection}\n * @secure\n */\nexport async function policyRuleControllerRemove(\n  appid: string,\n  name: string,\n  collection: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/policies/${name}/rules/${collection}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/function.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport {\n  CompileFunctionDto,\n  CreateFunctionDto,\n  LogControllerGetLogsParams,\n  UpdateFunctionDebugDto,\n  UpdateFunctionDto,\n} from './data-contracts'\n\n/**\n * No description\n *\n * @tags Function\n * @name FunctionControllerCreate\n * @summary Create a new function\n * @request POST:/v1/apps/{appid}/functions\n * @secure\n */\nexport async function functionControllerCreate(\n  appid: string,\n  data: CreateFunctionDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/functions`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Function\n * @name FunctionControllerFindAll\n * @summary Query function list of an app\n * @request GET:/v1/apps/{appid}/functions\n * @secure\n */\nexport async function functionControllerFindAll(appid: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/functions`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Function\n * @name FunctionControllerFindOne\n * @summary Get a function by its name\n * @request GET:/v1/apps/{appid}/functions/{name}\n * @secure\n */\nexport async function functionControllerFindOne(\n  appid: string,\n  name: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/functions/${name}`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Function\n * @name FunctionControllerUpdate\n * @summary Update a function\n * @request PATCH:/v1/apps/{appid}/functions/{name}\n * @secure\n */\nexport async function functionControllerUpdate(\n  appid: string,\n  name: string,\n  data: UpdateFunctionDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/functions/${name}`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Function\n * @name FunctionControllerRemove\n * @summary Delete a function\n * @request DELETE:/v1/apps/{appid}/functions/{name}\n * @secure\n */\nexport async function functionControllerRemove(\n  appid: string,\n  name: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/functions/${name}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Function\n * @name FunctionControllerUpdateDebug\n * @summary Update function debug info\n * @request PATCH:/v1/apps/{appid}/functions/{name}/debug/params\n * @secure\n */\nexport async function functionControllerUpdateDebug(\n  appid: string,\n  name: string,\n  data: UpdateFunctionDebugDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/functions/${name}/debug/params`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Function\n * @name FunctionControllerCompile\n * @summary Compile a function\n * @request POST:/v1/apps/{appid}/functions/{name}/compile\n * @secure\n */\nexport async function functionControllerCompile(\n  appid: string,\n  name: string,\n  data: CompileFunctionDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/functions/${name}/compile`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Function\n * @name FunctionControllerGetHistory\n * @summary Get cloud function history\n * @request GET:/v1/apps/{appid}/functions/{name}/history\n * @secure\n */\nexport async function functionControllerGetHistory(\n  appid: string,\n  name: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/functions/${name}/history`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Function\n * @name LogControllerGetLogs\n * @summary Get function logs\n * @request GET:/v1/apps/{appid}/logs/functions\n * @secure\n */\nexport async function logControllerGetLogs(\n  { appid, ...query }: LogControllerGetLogsParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/logs/functions`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/functiontemplate.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport {\n  CreateFunctionTemplateDto,\n  FunctionTemplateControllerGetAllFunctionTemplateParams,\n  FunctionTemplateControllerGetFunctionTemplateUsedByParams,\n  FunctionTemplateControllerGetMyFunctionTemplateParams,\n  FunctionTemplateControllerGetRecommendFunctionTemplateParams,\n  UpdateFunctionTemplateDto,\n} from './data-contracts'\n\n/**\n * No description\n *\n * @tags FunctionTemplate\n * @name FunctionTemplateControllerCreateFunctionTemplate\n * @summary create a function template\n * @request POST:/v1/function-templates\n * @secure\n */\nexport async function functionTemplateControllerCreateFunctionTemplate(\n  data: CreateFunctionTemplateDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/function-templates`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags FunctionTemplate\n * @name FunctionTemplateControllerGetAllFunctionTemplate\n * @summary get all function template\n * @request GET:/v1/function-templates\n * @secure\n */\nexport async function functionTemplateControllerGetAllFunctionTemplate(\n  query: FunctionTemplateControllerGetAllFunctionTemplateParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/function-templates`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags FunctionTemplate\n * @name FunctionTemplateControllerUseFunctionTemplate\n * @summary use a function template\n * @request POST:/v1/function-templates/{templateId}/{appid}\n * @secure\n */\nexport async function functionTemplateControllerUseFunctionTemplate(\n  templateId: string,\n  appid: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/function-templates/${templateId}/${appid}`,\n    method: 'POST',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags FunctionTemplate\n * @name FunctionTemplateControllerUpdateFunctionTemplate\n * @summary update a function template\n * @request PATCH:/v1/function-templates/update/{id}\n * @secure\n */\nexport async function functionTemplateControllerUpdateFunctionTemplate(\n  id: string,\n  data: UpdateFunctionTemplateDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/function-templates/update/${id}`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags FunctionTemplate\n * @name FunctionTemplateControllerDeleteFunctionTemplate\n * @summary delete a function template\n * @request DELETE:/v1/function-templates/{id}\n * @secure\n */\nexport async function functionTemplateControllerDeleteFunctionTemplate(\n  id: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/function-templates/${id}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags FunctionTemplate\n * @name FunctionTemplateControllerGetOneFunctionTemplate\n * @summary get one function template\n * @request GET:/v1/function-templates/{id}\n * @secure\n */\nexport async function functionTemplateControllerGetOneFunctionTemplate(\n  id: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/function-templates/${id}`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags FunctionTemplate\n * @name FunctionTemplateControllerStarFunctionTemplate\n * @summary star a function template\n * @request PUT:/v1/function-templates/{templateId}/star\n * @secure\n */\nexport async function functionTemplateControllerStarFunctionTemplate(\n  templateId: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/function-templates/${templateId}/star`,\n    method: 'PUT',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags FunctionTemplate\n * @name FunctionTemplateControllerGetUserFunctionTemplateStarState\n * @summary get function template user star state\n * @request GET:/v1/function-templates/{id}/star-state\n * @secure\n */\nexport async function functionTemplateControllerGetUserFunctionTemplateStarState(\n  id: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/function-templates/${id}/star-state`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags FunctionTemplate\n * @name FunctionTemplateControllerGetFunctionTemplateUsedBy\n * @summary get people who use this function template\n * @request GET:/v1/function-templates/{id}/used-by\n * @secure\n */\nexport async function functionTemplateControllerGetFunctionTemplateUsedBy(\n  { id, ...query }: FunctionTemplateControllerGetFunctionTemplateUsedByParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/function-templates/${id}/used-by`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags FunctionTemplate\n * @name FunctionTemplateControllerGetMyFunctionTemplate\n * @summary get my function template\n * @request GET:/v1/function-templates/my\n * @secure\n */\nexport async function functionTemplateControllerGetMyFunctionTemplate(\n  query: FunctionTemplateControllerGetMyFunctionTemplateParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/function-templates/my`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags FunctionTemplate\n * @name FunctionTemplateControllerGetRecommendFunctionTemplate\n * @summary get all recommend function template\n * @request GET:/v1/function-templates/recommend\n * @secure\n */\nexport async function functionTemplateControllerGetRecommendFunctionTemplate(\n  query: FunctionTemplateControllerGetRecommendFunctionTemplateParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/function-templates/recommend`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/group.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport { CreateGroupDto, GenerateGroupInviteCodeDto, UpdateGroupDto, UpdateGroupMemberRoleDto } from './data-contracts'\n\n/**\n * No description\n *\n * @tags Group\n * @name GroupControllerFindGroupByAppId\n * @summary Find internal group of the application\n * @request GET:/v1/group/application/{appid}/group\n * @secure\n */\nexport async function groupControllerFindGroupByAppId(appid: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/group/application/${appid}/group`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupControllerFindGroupByInviteCode\n * @summary Get group by invite code\n * @request GET:/v1/group/invite/code/{code}/group\n * @secure\n */\nexport async function groupControllerFindGroupByInviteCode(\n  code: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/group/invite/code/${code}/group`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupControllerFindAll\n * @summary Get group list of the user\n * @request GET:/v1/group\n * @secure\n */\nexport async function groupControllerFindAll(configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/group`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupControllerCreate\n * @summary Create group for the user\n * @request POST:/v1/group\n * @secure\n */\nexport async function groupControllerCreate(data: CreateGroupDto, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/group`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupControllerDelete\n * @summary Delete a group\n * @request DELETE:/v1/group/{groupId}\n * @secure\n */\nexport async function groupControllerDelete(groupId: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/group/${groupId}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupControllerFindOne\n * @summary Get detail of a group\n * @request GET:/v1/group/{groupId}\n * @secure\n */\nexport async function groupControllerFindOne(groupId: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/group/${groupId}`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupControllerUpdateGroup\n * @summary Update group\n * @request PATCH:/v1/group/{groupId}\n * @secure\n */\nexport async function groupControllerUpdateGroup(\n  groupId: string,\n  data: UpdateGroupDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/group/${groupId}`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupInviteControllerGetInviteCode\n * @summary Get group invite code\n * @request GET:/v1/group/{groupId}/invite/code\n * @secure\n */\nexport async function groupInviteControllerGetInviteCode(\n  groupId: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/group/${groupId}/invite/code`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupInviteControllerGenerateInviteCode\n * @summary Update group invite code\n * @request POST:/v1/group/{groupId}/invite/code\n * @secure\n */\nexport async function groupInviteControllerGenerateInviteCode(\n  groupId: string,\n  data: GenerateGroupInviteCodeDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/group/${groupId}/invite/code`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupInviteControllerDeleteInviteCode\n * @summary Delete group invite code\n * @request DELETE:/v1/group/{groupId}/invite/code/{code}\n * @secure\n */\nexport async function groupInviteControllerDeleteInviteCode(\n  code: string,\n  groupId: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/group/${groupId}/invite/code/${code}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupMemberControllerFindMembers\n * @summary Get members of a group\n * @request GET:/v1/group/{groupId}/member\n * @secure\n */\nexport async function groupMemberControllerFindMembers(\n  groupId: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/group/${groupId}/member`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupMemberControllerAddMember\n * @summary Join a group\n * @request POST:/v1/group/{code}/member/join\n * @secure\n */\nexport async function groupMemberControllerAddMember(code: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/group/${code}/member/join`,\n    method: 'POST',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupMemberControllerRemoveMember\n * @summary Remove a group member\n * @request DELETE:/v1/group/{groupId}/member/{userId}\n * @secure\n */\nexport async function groupMemberControllerRemoveMember(\n  groupId: string,\n  userId: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/group/${groupId}/member/${userId}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupMemberControllerUpdateMemberRole\n * @summary Update the role of a member\n * @request PATCH:/v1/group/{groupId}/member/{userId}/role\n * @secure\n */\nexport async function groupMemberControllerUpdateMemberRole(\n  groupId: string,\n  userId: string,\n  data: UpdateGroupMemberRoleDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/group/${groupId}/member/${userId}/role`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Group\n * @name GroupMemberControllerLeaveGroup\n * @summary Leave a group\n * @request POST:/v1/group/{groupId}/member/leave\n * @secure\n */\nexport async function groupMemberControllerLeaveGroup(groupId: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/group/${groupId}/member/leave`,\n    method: 'POST',\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/monitor.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport { MonitorControllerGetDataParams } from './data-contracts'\n\n/**\n * No description\n *\n * @tags Monitor\n * @name MonitorControllerGetData\n * @summary Get monitor metrics data\n * @request GET:/v1/monitor/{appid}/metrics\n * @secure\n */\nexport async function monitorControllerGetData(\n  { appid, ...query }: MonitorControllerGetDataParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/monitor/${appid}/metrics`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/public.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport {\n  RegionControllerGetRegionsData,\n  SettingControllerGetSettingByKeyData,\n  SettingControllerGetSettingsData,\n} from './data-contracts'\n\n/**\n * No description\n *\n * @tags Public\n * @name AppControllerGetRuntimes\n * @summary Get application runtime list\n * @request GET:/v1/runtimes\n */\nexport async function appControllerGetRuntimes(configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/runtimes`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Public\n * @name RegionControllerGetRegions\n * @summary Get region list\n * @request GET:/v1/regions\n */\nexport async function regionControllerGetRegions(\n  configParams: RequestParams = {},\n): Promise<RegionControllerGetRegionsData> {\n  return request({\n    url: `/v1/regions`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Public\n * @name SettingControllerGetSettings\n * @summary Get site settings\n * @request GET:/v1/settings\n */\nexport async function settingControllerGetSettings(\n  configParams: RequestParams = {},\n): Promise<SettingControllerGetSettingsData> {\n  return request({\n    url: `/v1/settings`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Public\n * @name SettingControllerGetSettingByKey\n * @summary Get one site setting by key\n * @request GET:/v1/settings/{key}\n */\nexport async function settingControllerGetSettingByKey(\n  key: string,\n  configParams: RequestParams = {},\n): Promise<SettingControllerGetSettingByKeyData> {\n  return request({\n    url: `/v1/settings/${key}`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/recyclebin.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport {\n  DeleteRecycleBinItemsDto,\n  FunctionRecycleBinControllerGetRecycleBinParams,\n  RestoreRecycleBinItemsDto,\n} from './data-contracts'\n\n/**\n * No description\n *\n * @tags RecycleBin\n * @name FunctionRecycleBinControllerDeleteRecycleBinItems\n * @summary Delete function Recycle bin items\n * @request POST:/v1/recycle-bin/{appid}/functions/delete\n * @secure\n */\nexport async function functionRecycleBinControllerDeleteRecycleBinItems(\n  appid: string,\n  data: DeleteRecycleBinItemsDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/recycle-bin/${appid}/functions/delete`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags RecycleBin\n * @name FunctionRecycleBinControllerEmptyRecycleBin\n * @summary Empty function Recycle bin items\n * @request DELETE:/v1/recycle-bin/{appid}/functions\n * @secure\n */\nexport async function functionRecycleBinControllerEmptyRecycleBin(\n  appid: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/recycle-bin/${appid}/functions`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags RecycleBin\n * @name FunctionRecycleBinControllerGetRecycleBin\n * @summary Get cloud function recycle bin\n * @request GET:/v1/recycle-bin/{appid}/functions\n * @secure\n */\nexport async function functionRecycleBinControllerGetRecycleBin(\n  { appid, ...query }: FunctionRecycleBinControllerGetRecycleBinParams,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/recycle-bin/${appid}/functions`,\n    method: 'GET',\n    params: query,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags RecycleBin\n * @name FunctionRecycleBinControllerRestoreRecycleBinItems\n * @summary restore function Recycle bin items\n * @request POST:/v1/recycle-bin/{appid}/functions/restore\n * @secure\n */\nexport async function functionRecycleBinControllerRestoreRecycleBinItems(\n  appid: string,\n  data: RestoreRecycleBinItemsDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/recycle-bin/${appid}/functions/restore`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/storage.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport { CreateBucketDto, UpdateBucketDto } from './data-contracts'\n\n/**\n * No description\n *\n * @tags Storage\n * @name BucketControllerCreate\n * @summary Create a new bucket\n * @request POST:/v1/apps/{appid}/buckets\n * @secure\n */\nexport async function bucketControllerCreate(\n  appid: string,\n  data: CreateBucketDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/buckets`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Storage\n * @name BucketControllerFindAll\n * @summary Get bucket list of an app\n * @request GET:/v1/apps/{appid}/buckets\n * @secure\n */\nexport async function bucketControllerFindAll(appid: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/buckets`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Storage\n * @name BucketControllerFindOne\n * @summary Get a bucket by name\n * @request GET:/v1/apps/{appid}/buckets/{name}\n * @secure\n */\nexport async function bucketControllerFindOne(\n  appid: string,\n  name: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/buckets/${name}`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Storage\n * @name BucketControllerUpdate\n * @summary Update a bucket\n * @request PATCH:/v1/apps/{appid}/buckets/{name}\n * @secure\n */\nexport async function bucketControllerUpdate(\n  appid: string,\n  name: string,\n  data: UpdateBucketDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/buckets/${name}`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Storage\n * @name BucketControllerRemove\n * @summary Delete a bucket\n * @request DELETE:/v1/apps/{appid}/buckets/{name}\n * @secure\n */\nexport async function bucketControllerRemove(\n  appid: string,\n  name: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/buckets/${name}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/trigger.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport { CreateTriggerDto } from './data-contracts'\n\n/**\n * No description\n *\n * @tags Trigger\n * @name TriggerControllerCreate\n * @summary Create a cron trigger\n * @request POST:/v1/apps/{appid}/triggers\n * @secure\n */\nexport async function triggerControllerCreate(\n  appid: string,\n  data: CreateTriggerDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/triggers`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Trigger\n * @name TriggerControllerFindAll\n * @summary Get trigger list of an application\n * @request GET:/v1/apps/{appid}/triggers\n * @secure\n */\nexport async function triggerControllerFindAll(appid: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/triggers`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags Trigger\n * @name TriggerControllerRemove\n * @summary Remove a cron trigger\n * @request DELETE:/v1/apps/{appid}/triggers/{id}\n * @secure\n */\nexport async function triggerControllerRemove(\n  id: string,\n  appid: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/triggers/${id}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/user.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport { BindEmailDto, BindPhoneDto, BindUsernameDto, UserControllerGetAvatarData } from './data-contracts'\n\n/**\n * No description\n *\n * @tags User\n * @name UserControllerGetAvatar\n * @summary Get avatar of user\n * @request GET:/v1/user/avatar/{uid}\n * @secure\n */\nexport async function userControllerGetAvatar(\n  uid: string,\n  configParams: RequestParams = {},\n): Promise<UserControllerGetAvatarData> {\n  return request({\n    url: `/v1/user/avatar/${uid}`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags User\n * @name UserControllerBindPhone\n * @summary Bind phone\n * @request POST:/v1/user/bind/phone\n * @secure\n */\nexport async function userControllerBindPhone(data: BindPhoneDto, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/user/bind/phone`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags User\n * @name UserControllerBindEmail\n * @summary Bind email\n * @request POST:/v1/user/bind/email\n * @secure\n */\nexport async function userControllerBindEmail(data: BindEmailDto, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/user/bind/email`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags User\n * @name UserControllerBindUsername\n * @summary Bind username\n * @request POST:/v1/user/bind/username\n * @secure\n */\nexport async function userControllerBindUsername(\n  data: BindUsernameDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/user/bind/username`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags User\n * @name UserControllerGetProfile\n * @summary Get current user profile\n * @request GET:/v1/user/profile\n * @secure\n */\nexport async function userControllerGetProfile(configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/user/profile`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/api/v1/websitehosting.ts",
    "content": "import { request, RequestParams } from '../../util/request'\nimport { BindCustomDomainDto, CreateWebsiteDto } from './data-contracts'\n\n/**\n * No description\n *\n * @tags WebsiteHosting\n * @name WebsiteControllerCreate\n * @summary Create a new website\n * @request POST:/v1/apps/{appid}/websites\n * @secure\n */\nexport async function websiteControllerCreate(\n  appid: string,\n  data: CreateWebsiteDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/websites`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags WebsiteHosting\n * @name WebsiteControllerFindAll\n * @summary Get all websites of an app\n * @request GET:/v1/apps/{appid}/websites\n * @secure\n */\nexport async function websiteControllerFindAll(appid: string, configParams: RequestParams = {}): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/websites`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags WebsiteHosting\n * @name WebsiteControllerFindOne\n * @summary Get a website hosting of an app\n * @request GET:/v1/apps/{appid}/websites/{id}\n * @secure\n */\nexport async function websiteControllerFindOne(\n  appid: string,\n  id: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/websites/${id}`,\n    method: 'GET',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags WebsiteHosting\n * @name WebsiteControllerBindDomain\n * @summary Bind custom domain to website\n * @request PATCH:/v1/apps/{appid}/websites/{id}\n * @secure\n */\nexport async function websiteControllerBindDomain(\n  appid: string,\n  id: string,\n  data: BindCustomDomainDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/websites/${id}`,\n    method: 'PATCH',\n    data: data,\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags WebsiteHosting\n * @name WebsiteControllerRemove\n * @summary Delete a website hosting\n * @request DELETE:/v1/apps/{appid}/websites/{id}\n * @secure\n */\nexport async function websiteControllerRemove(\n  appid: string,\n  id: string,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/websites/${id}`,\n    method: 'DELETE',\n    ...configParams,\n  })\n}\n/**\n * No description\n *\n * @tags WebsiteHosting\n * @name WebsiteControllerCheckResolved\n * @summary Check if domain is resolved\n * @request POST:/v1/apps/{appid}/websites/{id}/resolved\n * @secure\n */\nexport async function websiteControllerCheckResolved(\n  appid: string,\n  id: string,\n  data: BindCustomDomainDto,\n  configParams: RequestParams = {},\n): Promise<any> {\n  return request({\n    url: `/v1/apps/${appid}/websites/${id}/resolved`,\n    method: 'POST',\n    data: data,\n    ...configParams,\n  })\n}\n"
  },
  {
    "path": "cli/src/command/application/index.ts",
    "content": "import { Command, program } from 'commander'\nimport { init, list } from '../../action/application'\n\nexport function command(): Command {\n  const cmd = program.command('app')\n\n  cmd\n    .command('init <appid>')\n    .description('initialize application')\n    .option('-s, --sync', 'sync application data', false)\n    .option('-b --basic-mode', 'only create .app.yaml, do not init whole project', false)\n    .action((appid, options) => {\n      init(appid, options)\n    })\n\n  cmd\n    .command('list')\n    .description('list application')\n    .action(() => {\n      list()\n    })\n\n  return cmd\n}\n"
  },
  {
    "path": "cli/src/command/database/index.ts",
    "content": "import { Command, program } from 'commander'\nimport { checkApplication } from '../../common/hook'\nimport { exportDB, importDB } from '../../action/database'\n\nexport function command(): Command {\n  const cmd = program\n    .command('database')\n    .alias('db')\n    .hook('preAction', () => {\n      checkApplication()\n    })\n\n  cmd\n    .command('export')\n    .argument('[exportPath]', 'exportPath')\n    .description('export database')\n    .action((exportPath: string) => {\n      exportDB(exportPath)\n    })\n\n  cmd\n    .command('import')\n    .argument('[sourceAppid]', 'sourceAppid')\n    .argument('[importPath]', 'importPath')\n    .description('import database')\n    .action((sourceAppid, importPath: string) => {\n      importDB(sourceAppid, importPath)\n    })\n\n  return cmd\n}\n"
  },
  {
    "path": "cli/src/command/dependency/index.ts",
    "content": "import { Command, program } from 'commander'\nimport { add, pull, push } from '../../action/dependency'\nimport { checkApplication } from '../../common/hook'\n\nexport function command(): Command {\n  const cmd = program.command('dep').hook('preAction', () => {\n    checkApplication()\n  })\n\n  cmd\n    .command('add <dependencyName>')\n    .description('add dependency')\n    .option('-t, --targetVersion <type>', 'dependency target version')\n    .option('-r, --remote', 'add dependency to remote only', false)\n    .action((dependencyName, options) => {\n      add(dependencyName, options)\n    })\n\n  cmd\n    .command('pull')\n    .description('pull dependency')\n    .action(() => {\n      pull()\n    })\n\n  cmd\n    .command('push')\n    .description('push dependency')\n    .option('--no-updatePackage', 'do not update package.json')\n    .action((options) => {\n      push(options)\n    })\n\n  return cmd\n}\n"
  },
  {
    "path": "cli/src/command/deploy/index.ts",
    "content": "import { Command, program } from 'commander'\nimport { deploy } from '../../action/deploy'\n\nexport function command(): Command {\n  const cmd = program.command('deploy').action(() => {\n    deploy()\n  })\n\n  return cmd\n}\n"
  },
  {
    "path": "cli/src/command/environment/index.ts",
    "content": "import { Command, program } from 'commander'\nimport { checkApplication } from '../../common/hook'\nimport { pull, push } from '../../action/environment'\n\nexport function command(): Command {\n  const cmd = program\n    .command('environment')\n    .alias('env')\n    .hook('preAction', () => {\n      checkApplication()\n    })\n\n  cmd\n    .command('pull')\n    .description('pull environment variables')\n    .action(() => {\n      pull()\n    })\n\n  cmd\n    .command('push')\n    .description('push environment variables')\n    .action(() => {\n      push()\n    })\n\n  return cmd\n}\n"
  },
  {
    "path": "cli/src/command/function/index.ts",
    "content": "import { Command, program } from 'commander'\nimport { create, del, exec, list, pullAll, pullOne, pushAll, pushOne } from '../../action/function'\nimport { checkApplication, checkFunctionDebugToken } from '../../common/hook'\n\nexport function command(): Command {\n  const cmd = program.command('func').hook('preAction', () => {\n    checkApplication()\n  })\n\n  cmd\n    .command('create <funcName>')\n    .description('Create function')\n    .option('-w --websocket', 'enable websocket', false)\n    .option('-m --methods <items...>', 'http methods', ['GET', 'POST'])\n    .option('-t --tags <items...>', 'tags', [])\n    .option('-d --description <description>', 'function description', '')\n    .action((funcName, options) => {\n      if (!/^[a-zA-Z0-9_.\\-/]{1,256}$/.test(funcName)) {\n        return console.log(\n          'Function names must consist of letters, numbers, periods (.), and hyphens (-), matching the regex: /^[a-zA-Z0-9.-]{1,128}$/.',\n        )\n      }\n      create(funcName, options)\n    })\n\n  cmd\n    .command('del <funcName>')\n    .description('del function')\n    .action((funcName) => {\n      del(funcName)\n    })\n\n  cmd\n    .command('list')\n    .description('list application')\n    .action(() => {\n      list()\n    })\n\n  cmd\n    .command('pull')\n    .argument('[funcName]', 'funcName')\n    .option('-f, --force', 'force to overwrite the local', false)\n    .description('pull function, if funcName does not exist, pull all')\n    .action((funcName, options) => {\n      if (funcName) {\n        pullOne(funcName)\n      } else {\n        pullAll(options)\n      }\n    })\n\n  cmd\n    .command('push')\n    .argument('[funcName]', 'funcName')\n    .option('-f, --force', 'force to overwrite the server', false)\n    .description('push function, if funcName does not exist, push all')\n    .action((funcName, options) => {\n      if (funcName) {\n        pushOne(funcName)\n      } else {\n        pushAll(options)\n      }\n    })\n\n  cmd\n    .command('exec <funcName>')\n    .description('exec function')\n    .option('-l --log', 'print log')\n    .option('-X --method <method>', 'request method, eg -X HEAD/GET/POST/PUT/DELETE')\n    .option('-H --headers <request headers>', 'request headers, eg -H \\'{\"Content-Type\": \"application/json\"}\\'')\n    .option('-q --query <request query params>', 'request query params, eg -q \"key1=val1&key2=val2\"')\n    .option('-d --data <request body data>', 'request body data, eg -d \\'{\"key1\": \"val1\"}\\'')\n    .option('-r --requestId', 'print requestId', false)\n    .hook('preAction', async () => {\n      await checkFunctionDebugToken()\n    })\n    .action((funcName, options) => {\n      exec(funcName, options)\n    })\n\n  return cmd\n}\n"
  },
  {
    "path": "cli/src/command/policy/index.ts",
    "content": "import { Command, program } from 'commander'\nimport { list, pullOne, pushOne, pullAll, pushAll } from '../../action/policy'\nimport { checkApplication } from '../../common/hook'\n\nexport function command(): Command {\n  const cmd = program.command('policy').hook('preAction', () => {\n    checkApplication()\n  })\n\n  cmd\n    .command('list')\n    .description('policy list')\n    .action(() => {\n      list()\n    })\n\n  cmd\n    .command('pull [policyName]')\n    .description('pull police from server')\n    .action((policyName) => {\n      if (policyName) {\n        pullOne(policyName)\n      } else {\n        pullAll()\n      }\n    })\n\n  cmd\n    .command('push [policyName]')\n    .description('push police to server')\n    .option('-f, --force', 'force to overwrite the server', false)\n    .action((policyName, options) => {\n      if (policyName) {\n        pushOne(policyName)\n      } else {\n        pushAll(options)\n      }\n    })\n\n  return cmd\n}\n"
  },
  {
    "path": "cli/src/command/storage/index.ts",
    "content": "import { Command, program } from 'commander'\nimport { create, del, list, pull, push, update } from '../../action/storage'\nimport { checkApplication, checkStorageToken } from '../../common/hook'\n\nexport function command(): Command {\n  const cmd = program.command('storage').hook('preAction', () => {\n    checkApplication()\n  })\n\n  cmd\n    .command('list')\n    .description('bucket list')\n    .action(() => {\n      list()\n    })\n\n  cmd\n    .command('create <bucketName>')\n    .description('create a bucket')\n    .option('-p, --policy <policy>', 'bucket policy(private, readonly, readwrite)')\n    .action((bucketName, options) => {\n      create(bucketName, options)\n    })\n\n  cmd\n    .command('update <bucketName>')\n    .description('update bucket')\n    .option('-p, --policy <policy>', 'bucket policy(private, readonly, readwrite)')\n    .action((bucketName, options) => {\n      update(bucketName, options)\n    })\n\n  cmd\n    .command('del <bucketName>')\n    .description('delete bucket')\n    .action((bucketName, options) => {\n      del(bucketName, options)\n    })\n\n  cmd\n    .command('pull <bucketName> <outPath>')\n    .description('pull file from bucket')\n    .option('-f, --force', 'force pull', false) //TODO\n    .option('-d, --detail', 'print detail', false)\n    .hook('preAction', async () => {\n      await checkStorageToken()\n    })\n    .action((bucketName, outPath, options) => {\n      pull(bucketName, outPath, options)\n    })\n\n  cmd\n    .command('push <bucketName> <inPath>')\n    .description('Push file to bucket')\n    .option('-f, --force', 'force push', false) //TODO\n    .option('-d, --detail', 'print detail', false)\n    .hook('preAction', async () => {\n      await checkStorageToken()\n    })\n    .action((bucketName, inPath, options) => {\n      push(bucketName, inPath, options)\n    })\n\n  return cmd\n}\n"
  },
  {
    "path": "cli/src/command/trigger/index.ts",
    "content": "import { Command, program } from 'commander'\nimport { checkApplication } from '../../common/hook'\nimport { create, del, list } from '../../action/trigger'\n\nexport function command(): Command {\n  const cmd = program.command('trigger').hook('preAction', () => {\n    checkApplication()\n  })\n\n  cmd\n    .command('list')\n    .description('trigger list')\n    .action(() => {\n      list()\n    })\n\n  cmd\n    .command('create <name> <target> <cron>')\n    .description('create a trigger')\n    .action((name, target, cron) => {\n      create(name, target, cron)\n    })\n\n  cmd\n    .command('del [id]')\n    .description('delete a trigger')\n    .option('-n, --name <name>', 'trigger name')\n    .action((id, options) => {\n      if (!id && !options.name) {\n        console.log('please enter an id or name to delete')\n        return\n      }\n      del({\n        id,\n        name: options.name,\n      })\n    })\n\n  return cmd\n}\n"
  },
  {
    "path": "cli/src/command/user/index.ts",
    "content": "import { program, Command } from 'commander'\nimport { login, logout, list, switchUser, add, del } from '../../action/user'\n\nexport function loginCommand(): Command {\n  const cmd = program\n    .command('login <pat>')\n    .description('login client')\n    .action((pat) => {\n      login(pat)\n    })\n  return cmd\n}\n\nexport function logoutCommand(): Command {\n  const cmd = program\n    .command('logout')\n    .description('logout client')\n    .action(() => {\n      logout()\n    })\n  return cmd\n}\n\nexport function command(): Command {\n  const cmd = program.command('user').description('user management')\n\n  cmd\n    .command('list')\n    .description('list user')\n    .action(() => {\n      list()\n    })\n\n  cmd\n    .command('switch <name>')\n    .description('switch user')\n    .action((name) => {\n      switchUser(name)\n    })\n\n  cmd\n    .command('add <name>')\n    .description('add user')\n    .option('-r, --remote [value]', 'remote server address', '')\n    .action((name, options) => {\n      add(name, options)\n    })\n\n  cmd\n    .command('del <name>')\n    .description('delete user')\n    .action((name) => {\n      del(name)\n    })\n\n  return cmd\n}\n"
  },
  {
    "path": "cli/src/command/website/index.ts",
    "content": "import { Command, program } from 'commander'\nimport { create, custom, del, list } from '../../action/website'\nimport { checkApplication } from '../../common/hook'\n\nexport function command(): Command {\n  const cmd = program.command('website').hook('preAction', () => {\n    checkApplication()\n  })\n\n  cmd\n    .command('list')\n    .description('website list')\n    .action(() => {\n      list()\n    })\n\n  cmd\n    .command('create <bucketName>')\n    .description('create a website')\n    .action((bucketName, options) => {\n      create(bucketName, options)\n    })\n\n  cmd\n    .command('del <bucketName>')\n    .description('del website')\n    .action((bucketName, options) => {\n      del(bucketName, options)\n    })\n\n  cmd\n    .command('custom <bucketName> <domain>')\n    .description('custom website domain')\n    .action((bucketName, domain, options) => {\n      custom(bucketName, domain, options)\n    })\n\n  return cmd\n}\n"
  },
  {
    "path": "cli/src/common/constant.ts",
    "content": "// token expire time 7 days\nexport const TOKEN_EXPIRE = 3600 * 24 * 7\n\n// debug token expire time 7 days\nexport const DEBUG_TOKEN_EXPIRE = 3600 * 24 * 7\n\n// storage token expire time 7 days\nexport const STORAGE_TOKEN_EXPIRE = 3600 * 24 * 7\n\n// remote server config\nexport const DEFAULT_REMOTE_SERVER = 'https://api.laf.run'\n\n// template file\nexport const TEMPLATE_DIR = 'template'\nexport const TYPE_DIR = 'types'\nexport const GLOBAL_FILE = 'global.d.ts'\nexport const PACKAGE_FILE = 'package.json'\nexport const TSCONFIG_FILE = 'tsconfig.json'\nexport const GITIGNORE_FILE = 'gitignore'\n\n// schema path\nexport const APP_SCHEMA_NAME = '.app.yaml'\nexport const PROJECT_SCHEMA_NAME = 'laf.yaml'\nexport const USER_SCHEMA_NAME = 'user.yaml'\nexport const FUNCTION_SCHEMA_DIRECTORY = 'functions'\nexport const FUNCTION_SCHEMA_SUFFIX = '.yaml'\nexport const DEPLOY_SCHEMA_NAME = 'deploy.yaml'\nexport const ENVIRONMENT_SCHEMA_NAME = '.env'\n\nexport const IGNORE_FILE_NAME = '.gitignore'\nexport const POLICIES_DIRECTORY_NAME = 'policies'\n\nexport const DEFAULT_SERVER = 'https://api.laf.run'\n"
  },
  {
    "path": "cli/src/common/hook.ts",
    "content": "import { AppSchema } from '../schema/app'\n\nexport function checkApplication() {\n  if (!AppSchema.exist()) {\n    console.error('Please run \"laf app init\" to initialize the application first')\n    process.exit(1)\n  }\n}\n\nexport async function checkFunctionDebugToken() {\n  const appSchema = AppSchema.read()\n  const { developToken, developTokenExpire } = appSchema.function\n  const timestamp = Date.parse(new Date().toString()) / 1000\n  if (!developToken || developTokenExpire < timestamp) {\n    await AppSchema.refresh()\n  }\n}\n\nexport async function checkStorageToken() {\n  const appSchema = AppSchema.read()\n  const { expire } = appSchema.storage\n  const timestamp = Date.parse(new Date().toString()) / 1000\n  if (expire < timestamp) {\n    await AppSchema.refresh()\n  }\n}\n"
  },
  {
    "path": "cli/src/common/prompts.ts",
    "content": "import * as prompts from 'prompts'\n\nexport async function confirm(message: string) {\n  return await prompts({\n    type: 'confirm',\n    name: 'value',\n    message: message,\n    initial: false,\n  })\n}\n"
  },
  {
    "path": "cli/src/common/wait.ts",
    "content": "import { applicationControllerFindOne } from '../api/v1/application'\nimport { AppSchema } from '../schema/app'\n\nconst sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay))\n\nconst interval = 2000 // interval 1000ms\nexport async function waitApplicationState(targetState: string) {\n  const appSchema = AppSchema.read()\n  while (true) {\n    const app = await applicationControllerFindOne(appSchema.appid)\n    if (app.state === targetState) {\n      return\n    }\n    sleep(interval)\n    console.log(`application waiting ${targetState}....`)\n  }\n}\n"
  },
  {
    "path": "cli/src/main.ts",
    "content": "#!/usr/bin/env node\n\nimport { Command } from 'commander'\nimport { command as applicationCommand } from './command/application/'\nimport { command as functionCommand } from './command/function/'\nimport { command as dependencyCommand } from './command/dependency/'\nimport { loginCommand, logoutCommand, command as userCommand } from './command/user'\nimport { command as storageCommand } from './command/storage'\nimport { command as policyCommand } from './command/policy'\nimport { command as websiteCommand } from './command/website'\nimport { command as deployCommand } from './command/deploy'\nimport { command as triggerCommand } from './command/trigger'\nimport { command as databaseCommand } from './command/database'\nimport { command as environmentCommand } from './command/environment'\n\nconst program = new Command()\nprogram.option('-v, --version', 'output version').action((options) => {\n  if (!options.version) {\n    program.outputHelp()\n    return\n  }\n  const version = require('../package.json').version\n  console.log(version)\n})\n\nprogram.addCommand(loginCommand())\nprogram.addCommand(logoutCommand())\nprogram.addCommand(userCommand())\nprogram.addCommand(applicationCommand())\nprogram.addCommand(functionCommand())\nprogram.addCommand(storageCommand())\nprogram.addCommand(dependencyCommand())\nprogram.addCommand(policyCommand())\nprogram.addCommand(websiteCommand())\nprogram.addCommand(deployCommand())\nprogram.addCommand(triggerCommand())\nprogram.addCommand(databaseCommand())\nprogram.addCommand(environmentCommand())\n\nprogram.parse(process.argv)\n"
  },
  {
    "path": "cli/src/schema/app.ts",
    "content": "import * as path from 'path'\nimport { APP_SCHEMA_NAME, DEBUG_TOKEN_EXPIRE, STORAGE_TOKEN_EXPIRE } from '../common/constant'\nimport { getAppPath } from '../util/sys'\nimport { exist, loadYamlFile, writeYamlFile } from '../util/file'\nimport { applicationControllerFindOne } from '../api/v1/application'\n\nexport class AppSchema {\n  name: string\n  appid: string\n  invokeUrl?: string\n  function?: {\n    developToken?: string\n    developTokenExpire?: number\n  }\n  storage?: {\n    endpoint: string\n    accessKeyId: string\n    accessKeySecret: string\n    sessionToken?: string\n    expire: number\n  }\n\n  static read(): AppSchema {\n    const configPath = path.join(getAppPath(), APP_SCHEMA_NAME)\n    return loadYamlFile(configPath)\n  }\n\n  static write(schema: AppSchema): void {\n    const configPath = path.join(getAppPath(), APP_SCHEMA_NAME)\n    return writeYamlFile(configPath, schema)\n  }\n\n  static exist(): boolean {\n    const configPath = path.join(getAppPath(), APP_SCHEMA_NAME)\n    return exist(configPath)\n  }\n\n  static async refresh() {\n    const appSchema = this.read()\n    const app = await applicationControllerFindOne(appSchema.appid)\n    const timestamp = Date.parse(new Date().toString()) / 1000\n\n    appSchema.function = {\n      developToken: app.develop_token,\n      developTokenExpire: timestamp + DEBUG_TOKEN_EXPIRE,\n    }\n\n    appSchema.storage = {\n      endpoint: app.storage.endpoint,\n      accessKeyId: app.storage.accessKey,\n      accessKeySecret: app.storage.secretKey,\n      expire: timestamp + STORAGE_TOKEN_EXPIRE,\n    }\n\n    this.write(appSchema)\n  }\n}\n"
  },
  {
    "path": "cli/src/schema/deploy.ts",
    "content": "import { DEPLOY_SCHEMA_NAME } from '../common/constant'\nimport { exist, loadYamlFile } from '../util/file'\nimport { getAppPath } from '../util/sys'\nimport * as path from 'node:path'\n\nexport class DeploySchema {\n  name: string\n\n  resources?: {\n    buckets?: BucketResource[]\n    websites?: WebsiteResource[]\n  }\n\n  actions?: {\n    buckets?: BucketAction[]\n  }\n\n  static read(): DeploySchema {\n    const configPath = path.join(getAppPath(), DEPLOY_SCHEMA_NAME)\n    return loadYamlFile(configPath)\n  }\n\n  static exist(): boolean {\n    const configPath = path.join(getAppPath(), DEPLOY_SCHEMA_NAME)\n    return exist(configPath)\n  }\n}\n\nexport class BucketResource {\n  name: string\n  policy: 'private' | 'readonly' | 'readwrite'\n}\n\nexport class WebsiteResource {\n  name: string\n  bucketName: string\n}\n\nexport class BucketAction {\n  name: string\n  bucketName: string\n  srcDir: string\n}\n"
  },
  {
    "path": "cli/src/schema/environment.ts",
    "content": "import * as path from 'node:path'\nimport * as fs from 'node:fs'\nimport { getAppPath } from '../util/sys'\nimport { ENVIRONMENT_SCHEMA_NAME } from '../common/constant'\nimport * as dotenv from 'dotenv'\nimport { exist } from '../util/file'\n\nexport class EnvironmentSchema {\n  variables: EnvironmentVariable[]\n\n  static read(): EnvironmentVariable[] {\n    const configPath = path.join(getAppPath(), ENVIRONMENT_SCHEMA_NAME)\n    if (!exist(configPath)) {\n      return null\n    }\n    const dataStr = fs.readFileSync(configPath, 'utf-8')\n    const data = dotenv.parse(dataStr)\n    const env: EnvironmentVariable[] = []\n    for (const key in data) {\n      env.push({\n        name: key,\n        value: data[key],\n      })\n    }\n    return env\n  }\n\n  static write(env: EnvironmentVariable[]): void {\n    const configPath = path.join(getAppPath(), ENVIRONMENT_SCHEMA_NAME)\n    let dataStr = ''\n    for (const item of env) {\n      dataStr += `${item.name}=${item.value}\\n`\n    }\n    fs.writeFileSync(configPath, dataStr)\n  }\n}\n\nexport interface EnvironmentVariable {\n  name: string\n  value: string\n}\n"
  },
  {
    "path": "cli/src/schema/function.ts",
    "content": "import * as path from 'path'\nimport { FUNCTION_SCHEMA_DIRECTORY, FUNCTION_SCHEMA_SUFFIX } from '../common/constant'\nimport { exist, loadYamlFile, remove, writeYamlFile } from '../util/file'\nimport { getBaseDir } from '../util/sys'\nimport { mkdirSync } from 'fs'\n\nexport class FunctionSchema {\n  name: string\n  desc?: string\n  tags?: string[]\n  methods: string[]\n\n  static read(name: string): FunctionSchema {\n    const funcConfigPath = path.join(getBaseDir(), FUNCTION_SCHEMA_DIRECTORY, name + FUNCTION_SCHEMA_SUFFIX)\n    return loadYamlFile(funcConfigPath)\n  }\n\n  static write(name: string, schema: FunctionSchema): void {\n    if (path.dirname(name) !== '.') {\n      const dir = path.join(getBaseDir(), FUNCTION_SCHEMA_DIRECTORY, path.dirname(name))\n      if (!exist(dir)) {\n        mkdirSync(dir, { recursive: true })\n      }\n    }\n    const funcConfigPath = path.join(getBaseDir(), FUNCTION_SCHEMA_DIRECTORY, name + FUNCTION_SCHEMA_SUFFIX)\n    return writeYamlFile(funcConfigPath, schema)\n  }\n\n  static exist(name: string): boolean {\n    const funcConfigPath = path.join(getBaseDir(), FUNCTION_SCHEMA_DIRECTORY, name + FUNCTION_SCHEMA_SUFFIX)\n    return exist(funcConfigPath)\n  }\n\n  static delete(name: string) {\n    const funcConfigPath = path.join(getBaseDir(), FUNCTION_SCHEMA_DIRECTORY, name + FUNCTION_SCHEMA_SUFFIX)\n    remove(funcConfigPath)\n  }\n}\n"
  },
  {
    "path": "cli/src/schema/project.ts",
    "content": "import * as path from 'path'\nimport { getAppPath } from '../util/sys'\nimport { exist, loadYamlFile, writeYamlFile } from '../util/file'\nimport { PROJECT_SCHEMA_NAME } from '../common/constant'\n\nexport class ProjectSchema {\n  version: string\n  name: string\n  metadata?: {\n    description?: string\n    author?: string\n    license?: string\n    homepage?: string\n    repository?: string\n  }\n  spec: {\n    runtime: string\n    dependencies?: object\n    baseDir?: string\n    bucket?: string[]\n  }\n\n  static read(): ProjectSchema {\n    const configPath = path.join(getAppPath(), PROJECT_SCHEMA_NAME)\n    return loadYamlFile(configPath)\n  }\n\n  static write(schema: ProjectSchema) {\n    const configPath = path.join(getAppPath(), PROJECT_SCHEMA_NAME)\n    return writeYamlFile(configPath, schema)\n  }\n\n  static exist() {\n    const configPath = path.join(getAppPath(), PROJECT_SCHEMA_NAME)\n    return exist(configPath)\n  }\n}\n"
  },
  {
    "path": "cli/src/schema/user.ts",
    "content": "import path = require('path')\nimport { ensureDirectory, exist, loadYamlFile, writeYamlFile } from '../util/file'\nimport { DEFAULT_SERVER, TOKEN_EXPIRE, USER_SCHEMA_NAME } from '../common/constant'\nimport { pat2token } from '../api/pat'\n\nexport class UserSchema {\n  users: {\n    name: string\n    server: string\n    pat?: string\n    token?: string\n    expire?: number\n  }[]\n  selected: number\n\n  static getCurrentUser() {\n    const schema = this.read()\n    return schema.users[schema.selected]\n  }\n\n  static async refreshToken() {\n    const user = this.getCurrentUser()\n    const timestamp = Date.parse(new Date().toString()) / 1000\n    if (timestamp > user.expire) {\n      const patDto = {\n        pat: user.pat,\n      }\n      const token = await pat2token(user.server, patDto)\n      const schema = this.read()\n      schema.users[schema.selected].token = token\n      schema.users[schema.selected].expire = timestamp + TOKEN_EXPIRE\n      this.write(schema)\n      return token\n    }\n    return user.token\n  }\n\n  static read(): UserSchema {\n    if (!this.exist()) {\n      this.write({\n        users: [\n          {\n            name: 'default',\n            server: DEFAULT_SERVER,\n          },\n        ],\n        selected: 0,\n      })\n    }\n    const configPath = path.join(process.env.HOME || process.env.USERPROFILE, '.laf', USER_SCHEMA_NAME)\n    return loadYamlFile(configPath)\n  }\n\n  static write(schema: UserSchema) {\n    const directoryPath = path.join(process.env.HOME || process.env.USERPROFILE, '.laf')\n    ensureDirectory(directoryPath)\n    const configPath = path.join(process.env.HOME || process.env.USERPROFILE, '.laf', USER_SCHEMA_NAME)\n    writeYamlFile(configPath, schema)\n  }\n\n  static exist() {\n    const configPath = path.join(process.env.HOME || process.env.USERPROFILE, '.laf', USER_SCHEMA_NAME)\n    return exist(configPath)\n  }\n}\n"
  },
  {
    "path": "cli/src/util/file.ts",
    "content": "import * as fs from 'node:fs'\nimport * as path from 'node:path'\nimport { parse, stringify } from 'yaml'\nimport { createHash } from 'node:crypto'\n\nexport function exist(fp: string): boolean {\n  return fs.existsSync(fp)\n}\n\nexport function remove(fp: string) {\n  fs.unlinkSync(fp)\n}\n\nexport function ensureDirectory(dir: string) {\n  try {\n    fs.accessSync(dir, fs.constants.R_OK | fs.constants.W_OK)\n  } catch (err) {\n    fs.mkdirSync(dir, { recursive: true })\n  }\n}\n\nexport function loadYamlFile(filePath: string): any {\n  const metadataStr = fs.readFileSync(filePath, 'utf-8')\n  const yamlData = parse(metadataStr)\n  return yamlData\n}\n\nexport function writeYamlFile(filePath: string, data: any) {\n  const yamlData = stringify(data)\n  fs.writeFileSync(filePath, yamlData)\n}\n\nexport function readDirectoryRecursive(dir: string): string[] {\n  const files = fs.readdirSync(dir)\n  const result = []\n  for (const file of files) {\n    const filepath = path.join(dir, file)\n    const stats = fs.statSync(filepath)\n    if (stats.isDirectory()) {\n      result.push(...readDirectoryRecursive(filepath))\n    } else {\n      result.push(filepath)\n    }\n  }\n  return result\n}\n\n// compare file md5\nexport function compareFileMD5(sourceFile: string, bucketObject: any) {\n  const sourceData = fs.readFileSync(sourceFile)\n  const sourceFileMD5 = createHash('md5').update(sourceData).digest('hex')\n  const etag = bucketObject.ETag.replace(/\\\"/g, '')\n  return sourceFileMD5 === etag\n}\n"
  },
  {
    "path": "cli/src/util/format.ts",
    "content": "import * as dayjs from 'dayjs'\n\nexport function formatDate(\n  date?: string | number | Date | dayjs.Dayjs | null | undefined,\n  format = 'YYYY-MM-DD HH:mm:ss',\n) {\n  return dayjs(date).format(format)\n}\n\nexport function formatSize(size: number) {\n  const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n  let i = 0\n  while (size >= 1024) {\n    size /= 1024\n    i++\n  }\n  return size.toFixed(2) + ' ' + units[i]\n}\n"
  },
  {
    "path": "cli/src/util/print.ts",
    "content": "import * as emoji from 'node-emoji'\n\nexport function getEmoji(value: any) {\n  return emoji.get(emoji.find(value).key)\n}\n"
  },
  {
    "path": "cli/src/util/request.ts",
    "content": "// request.ts\nimport axios, { AxiosRequestHeaders, AxiosResponse } from 'axios'\nimport { UserSchema } from '../schema/user'\n\nexport const request = axios.create({\n  baseURL: '/',\n  withCredentials: true,\n  timeout: 30000,\n})\n\n// request interceptor\nrequest.interceptors.request.use(\n  async (config: any) => {\n    const _headers: AxiosRequestHeaders | any = {}\n    if (config.headers['Content-Type']) {\n      _headers['Content-Type'] = config.headers['Content-Type']\n    } else {\n      _headers['Content-Type'] = 'application/json'\n    }\n\n    // load remote server and token\n    if (UserSchema.exist() && config.url?.startsWith('/v1/')) {\n      const user = UserSchema.getCurrentUser()\n      const { server, expire } = user\n      let { token } = user\n      if (token === undefined || token === '') {\n        console.log('please login first')\n        process.exit(1)\n      }\n      if (config.url?.indexOf('pat2token') === -1) {\n        const timestamp = Date.parse(new Date().toString()) / 1000\n        if (expire < timestamp) {\n          token = await UserSchema.refreshToken()\n        }\n        config.url = server + config.url\n      }\n      _headers.Authorization = 'Bearer ' + token\n    }\n\n    config.headers = {\n      ..._headers,\n      ...config.headers,\n    }\n    return config\n  },\n  (error) => {\n    error.data = {}\n    error.data.msg = 'The server is abnormal, please contact the administrator!'\n    console.log('request error', error)\n  },\n)\n\n// response interceptor\nrequest.interceptors.response.use(\n  (response: AxiosResponse) => {\n    const { data, headers } = response\n    if (headers['content-type'] === 'application/octet-stream') {\n      return data\n    }\n    if (data.error == null) {\n      return data.data\n    }\n    console.error(data.error)\n    process.exit(1)\n  },\n  (error) => {\n    if (axios.isCancel(error)) {\n      console.log('repeated request: ' + error.message)\n      process.exit(1)\n    } else {\n      // handle error code\n      const { status, data } = error.response\n      if (status === 400) {\n        console.log('Bad request!')\n        console.log(data.message)\n        process.exit(1)\n      } else if (status === 401) {\n        console.log('User not logged in or expired, please log in again')\n        process.exit(1)\n      } else if (status == 403) {\n        console.log('Unauthorized resource request')\n        process.exit(1)\n      } else if (status === 500) {\n        console.log('Internal server error!')\n        process.exit(1)\n      } else if (status === 503) {\n        console.log('The server is abnormal, please contact the administrator!')\n        process.exit(1)\n      } else if (status === 404) {\n        console.log(`Request ${error.response.config.url} not found, please check remote server url`)\n        process.exit(1)\n      }\n      return Promise.reject(error.message)\n    }\n  },\n)\n\nexport type RequestParams = any\n"
  },
  {
    "path": "cli/src/util/sys.ts",
    "content": "import { ProjectSchema } from '../schema/project'\n\nexport function getAppPath(): string {\n  return process.cwd()\n}\n\nexport function getBaseDir(): string {\n  const projectSchema = ProjectSchema.read()\n  return projectSchema?.spec?.baseDir || './'\n}\n"
  },
  {
    "path": "cli/template/gitignore",
    "content": "node_modules\n.app.yaml\npackage-lock.json\nlaf.yaml\n"
  },
  {
    "path": "cli/template/global.d.ts",
    "content": "/**\n * The input parameters of cloud function calls\n */\ndeclare interface FunctionContext {\n  __function_name: string\n\n  /**\n   * This object is parsed from JWT Token Payload\n   */\n  user?: {\n    [key: string]: any\n  }\n\n  /**\n   * Uploaded file, the file object array\n   */\n  files?: File[]\n\n  /**\n   * HTTP headers\n   */\n  headers?: IncomingHttpHeaders\n\n  /**\n   * HTTP Query parameter (URL parameter), JSON object\n   */\n  query?: any\n\n  /**\n   * HTTP Body\n   */\n  body?: any\n\n  /**\n   *\n   */\n  params?: any\n\n  /**\n   * HTTP Request ID\n   */\n  requestId?: string\n\n  /**\n   * HTTP Method\n   */\n  method?: string\n\n  /**\n   * Express request object\n   */\n  request?: HttpRequest\n\n  /**\n   * Express response object\n   */\n  response?: HttpResponse\n\n  /**\n   * WebSocket object\n   */\n  socket?: WebSocket\n\n  [key: string]: any\n}\n\n\n// ============ The following is copied from another library and generally does not require direct modification============\n\nclass IncomingMessage extends Readable {\n  constructor(socket: Socket);\n  /**\n   * The 'message.aborted' property will be 'true' if the request has\n   * been aborted.\n   * @since v10.1.0\n   * @deprecated Since v17.0.0,v16.12.0 - Check 'message.destroyed' from <a href=\"stream.html#class-streamreadable\" class=\"type\">stream.Readable</a>.\n   */\n  aborted: boolean;\n  /**\n   * In case of server request, the HTTP version sent by the client. In the case of\n   * client response, the HTTP version of the connected-to server.\n   * Probably either ''1.1'' or ''1.0''.\n   *\n   * Also 'message.httpVersionMajor' is the first integer and'message.httpVersionMinor' is the second.\n   * @since v0.1.1\n   */\n  httpVersion: string;\n  httpVersionMajor: number;\n  httpVersionMinor: number;\n  /**\n   * The 'message.complete' property will be 'true' if a complete HTTP message has\n   * been received and successfully parsed.\n   *\n   * This property is particularly useful as a means of determining if a client or\n   * server fully transmitted a message before a connection was terminated:\n   *\n   * '''js\n   * const req = http.request({\n   *   host: '127.0.0.1',\n   *   port: 8080,\n   *   method: 'POST'\n   * }, (res) => {\n   *   res.resume();\n   *   res.on('end', () => {\n   *     if (!res.complete)\n   *       console.error(\n   *         'The connection was terminated while the message was still being sent');\n   *   });\n   * });\n   * '''\n   * @since v0.3.0\n   */\n  complete: boolean;\n  /**\n   * Alias for 'message.socket'.\n   * @since v0.1.90\n   * @deprecated Since v16.0.0 - Use 'socket'.\n   */\n  connection: Socket;\n  /**\n   * The 'net.Socket' object associated with the connection.\n   *\n   * With HTTPS support, use 'request.socket.getPeerCertificate()' to obtain the\n   * client's authentication details.\n   *\n   * This property is guaranteed to be an instance of the 'net.Socket' class,\n   * a subclass of 'stream.Duplex', unless the user specified a socket\n   * type other than 'net.Socket' or internally nulled.\n   * @since v0.3.0\n   */\n  socket: Socket;\n  /**\n   * The request/response headers object.\n   *\n   * Key-value pairs of header names and values. Header names are lower-cased.\n   *\n   * '''js\n   * // Prints something like:\n   * //\n   * // { 'user-agent': 'curl/7.22.0',\n   * //   host: '127.0.0.1:8000',\n   * //   accept: '*' }\n   * console.log(request.getHeaders());\n   * '''\n   *\n   * Duplicates in raw headers are handled in the following ways, depending on the\n   * header name:\n   *\n   * * Duplicates of 'age', 'authorization', 'content-length', 'content-type','etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since','last-modified', 'location',\n   * 'max-forwards', 'proxy-authorization', 'referer','retry-after', 'server', or 'user-agent' are discarded.\n   * * 'set-cookie' is always an array. Duplicates are added to the array.\n   * * For duplicate 'cookie' headers, the values are joined together with '; '.\n   * * For all other headers, the values are joined together with ', '.\n   * @since v0.1.5\n   */\n  headers: IncomingHttpHeaders;\n  /**\n   * The raw request/response headers list exactly as they were received.\n   *\n   * The keys and values are in the same list. It is _not_ a\n   * list of tuples. So, the even-numbered offsets are key values, and the\n   * odd-numbered offsets are the associated values.\n   *\n   * Header names are not lowercased, and duplicates are not merged.\n   *\n   * '''js\n   * // Prints something like:\n   * //\n   * // [ 'user-agent',\n   * //   'this is invalid because there can be only one',\n   * //   'User-Agent',\n   * //   'curl/7.22.0',\n   * //   'Host',\n   * //   '127.0.0.1:8000',\n   * //   'ACCEPT',\n   * //   '*' ]\n   * console.log(request.rawHeaders);\n   * '''\n   * @since v0.11.6\n   */\n  rawHeaders: string[];\n  /**\n   * The request/response trailers object. Only populated at the ''end'' event.\n   * @since v0.3.0\n   */\n  trailers: NodeJS.Dict<string>;\n  /**\n   * The raw request/response trailer keys and values exactly as they were\n   * received. Only populated at the ''end'' event.\n   * @since v0.11.6\n   */\n  rawTrailers: string[];\n  /**\n   * Calls 'message.socket.setTimeout(msecs, callback)'.\n   * @since v0.5.9\n   */\n  setTimeout(msecs: number, callback?: () => void): this;\n  /**\n   * **Only valid for request obtained from {@link Server}.**\n   *\n   * The request method as a string. Read only. Examples: ''GET'', ''DELETE''.\n   * @since v0.1.1\n   */\n  method?: string | undefined;\n  /**\n   * **Only valid for request obtained from {@link Server}.**\n   *\n   * Request URL string. This contains only the URL that is present in the actual\n   * HTTP request. Take the following request:\n   *\n   * '''http\n   * GET /status?name=ryan HTTP/1.1\n   * Accept: text/plain\n   * '''\n   *\n   * To parse the URL into its parts:\n   *\n   * '''js\n   * new URL(request.url, 'http://\\${request.getHeaders().host}');\n   * '''\n   *\n   * When 'request.url' is ''/status?name=ryan'' and'request.getHeaders().host' is ''localhost:3000'':\n   *\n   * '''console\n   * $ node\n   * > new URL(request.url, 'http://\\${request.getHeaders().host}')\n   * URL {\n   *   href: 'http://localhost:3000/status?name=ryan',\n   *   origin: 'http://localhost:3000',\n   *   protocol: 'http:',\n   *   username: '',\n   *   password: '',\n   *   host: 'localhost:3000',\n   *   hostname: 'localhost',\n   *   port: '3000',\n   *   pathname: '/status',\n   *   search: '?name=ryan',\n   *   searchParams: URLSearchParams { 'name' => 'ryan' },\n   *   hash: ''\n   * }\n   * '''\n   * @since v0.1.90\n   */\n  url?: string | undefined;\n  /**\n   * **Only valid for response obtained from {@link ClientRequest}.**\n   *\n   * The 3-digit HTTP response status code. E.G. '404'.\n   * @since v0.1.1\n   */\n  statusCode?: number | undefined;\n  /**\n   * **Only valid for response obtained from {@link ClientRequest}.**\n   *\n   * The HTTP response status message (reason phrase). E.G. 'OK' or 'Internal Server Error'.\n   * @since v0.11.10\n   */\n  statusMessage?: string | undefined;\n  /**\n   * Calls 'destroy()' on the socket that received the 'IncomingMessage'. If 'error'is provided, an ''error'' event is emitted on the socket and 'error' is passed\n   * as an argument to any listeners on the event.\n   * @since v0.3.0\n   */\n  destroy(error?: Error): this;\n}\n\n\n/**\n* @see https://expressjs.com/en/api.html#req.params\n*\n* @example\n*     app.get('/user/:id', (req, res) => res.send(req.params.id)); // implicitly 'ParamsDictionary'\n*     app.get<ParamsArray>(/user\\/(.*)/, (req, res) => res.send(req.params[0]));\n*     app.get<ParamsArray>('/user/*', (req, res) => res.send(req.params[0]));\n*/\ninterface HttpRequest extends IncomingMessage {\n  /**\n   * Return request header.\n   *\n   * The 'Referrer' header field is special-cased,\n   * both 'Referrer' and 'Referer' are interchangeable.\n   *\n   * Examples:\n   *\n   *     req.get('Content-Type');\n   *     // => \"text/plain\"\n   *\n   *     req.get('content-type');\n   *     // => \"text/plain\"\n   *\n   *     req.get('Something');\n   *     // => undefined\n   *\n   * Aliased as 'req.header()'.\n   */\n  get(name: 'set-cookie'): string[] | undefined;\n  get(name: string): string | undefined;\n\n  header(name: 'set-cookie'): string[] | undefined;\n  header(name: string): string | undefined;\n\n  /**\n   * Check if the given 'type(s)' is acceptable, returning\n   * the best match when true, otherwise 'undefined', in which\n   * case you should respond with 406 \"Not Acceptable\".\n   *\n   * The 'type' value may be a single mime type string\n   * such as \"application/json\", the extension name\n   * such as \"json\", a comma-delimted list such as \"json, html, text/plain\",\n   * or an array '[\"json\", \"html\", \"text/plain\"]'. When a list\n   * or array is given the _best_ match, if any is returned.\n   *\n   * Examples:\n   *\n   *     // Accept: text/html\n   *     req.accepts('html');\n   *     // => \"html\"\n   *\n   *     // Accept: text/*, application/json\n   *     req.accepts('html');\n   *     // => \"html\"\n   *     req.accepts('text/html');\n   *     // => \"text/html\"\n   *     req.accepts('json, text');\n   *     // => \"json\"\n   *     req.accepts('application/json');\n   *     // => \"application/json\"\n   *\n   *     // Accept: text/*, application/json\n   *     req.accepts('image/png');\n   *     req.accepts('png');\n   *     // => undefined\n   *\n   *     // Accept: text/*;q=.5, application/json\n   *     req.accepts(['html', 'json']);\n   *     req.accepts('html, json');\n   *     // => \"json\"\n   */\n  accepts(): string[];\n  accepts(type: string): string | false;\n  accepts(type: string[]): string | false;\n  accepts(...type: string[]): string | false;\n\n  /**\n   * Returns the first accepted charset of the specified character sets,\n   * based on the request's Accept-Charset HTTP header field.\n   * If none of the specified charsets is accepted, returns false.\n   *\n   * For more information, or if you have issues or concerns, see accepts.\n   */\n  acceptsCharsets(): string[];\n  acceptsCharsets(charset: string): string | false;\n  acceptsCharsets(charset: string[]): string | false;\n  acceptsCharsets(...charset: string[]): string | false;\n\n  /**\n   * Returns the first accepted encoding of the specified encodings,\n   * based on the request's Accept-Encoding HTTP header field.\n   * If none of the specified encodings is accepted, returns false.\n   *\n   * For more information, or if you have issues or concerns, see accepts.\n   */\n  acceptsEncodings(): string[];\n  acceptsEncodings(encoding: string): string | false;\n  acceptsEncodings(encoding: string[]): string | false;\n  acceptsEncodings(...encoding: string[]): string | false;\n\n  /**\n   * Returns the first accepted language of the specified languages,\n   * based on the request's Accept-Language HTTP header field.\n   * If none of the specified languages is accepted, returns false.\n   *\n   * For more information, or if you have issues or concerns, see accepts.\n   */\n  acceptsLanguages(): string[];\n  acceptsLanguages(lang: string): string | false;\n  acceptsLanguages(lang: string[]): string | false;\n  acceptsLanguages(...lang: string[]): string | false;\n\n  /**\n   * Parse Range header field, capping to the given 'size'.\n   *\n   * Unspecified ranges such as \"0-\" require knowledge of your resource length. In\n   * the case of a byte range this is of course the total number of bytes.\n   * If the Range header field is not given 'undefined' is returned.\n   * If the Range header field is given, return value is a result of range-parser.\n   * See more ./types/range-parser/index.d.ts\n   *\n   * NOTE: remember that ranges are inclusive, so for example \"Range: users=0-3\"\n   * should respond with 4 users when available, not 3.\n   *\n   */\n  range(size: number, options?: RangeParserOptions): RangeParserRanges | RangeParserResult | undefined;\n\n  /**\n   * Return an array of Accepted media types\n   * ordered from highest quality to lowest.\n   */\n  accepted: MediaType[];\n\n  /**\n   * @deprecated since 4.11 Use either req.params, req.body or req.query, as applicable.\n   *\n   * Return the value of param 'name' when present or 'defaultValue'.\n   *\n   *  - Checks route placeholders, ex: _/user/:id_\n   *  - Checks body params, ex: id=12, {\"id\":12}\n   *  - Checks query string params, ex: ?id=12\n   *\n   * To utilize request bodies, 'req.body'\n   * should be an object. This can be done by using\n   * the 'connect.bodyParser()' middleware.\n   */\n  param(name: string, defaultValue?: any): string;\n\n  /**\n   * Check if the incoming request contains the \"Content-Type\"\n   * header field, and it contains the give mime 'type'.\n   *\n   * Examples:\n   *\n   *      // With Content-Type: text/html; charset=utf-8\n   *      req.is('html');\n   *      req.is('text/html');\n   *      req.is('text/*');\n   *      // => true\n   *\n   *      // When Content-Type is application/json\n   *      req.is('json');\n   *      req.is('application/json');\n   *      req.is('application/*');\n   *      // => true\n   *\n   *      req.is('html');\n   *      // => false\n   */\n  is(type: string | string[]): string | false | null;\n\n  /**\n   * Return the protocol string \"http\" or \"https\"\n   * when requested with TLS. When the \"trust proxy\"\n   * setting is enabled the \"X-Forwarded-Proto\" header\n   * field will be trusted. If you're running behind\n   * a reverse proxy that supplies https for you this\n   * may be enabled.\n   */\n  protocol: string;\n\n  /**\n   * Short-hand for:\n   *\n   *    req.protocol == 'https'\n   */\n  secure: boolean;\n\n  /**\n   * Return the remote address, or when\n   * \"trust proxy\" is 'true' return\n   * the upstream addr.\n   */\n  ip: string;\n\n  /**\n   * When \"trust proxy\" is 'true', parse\n   * the \"X-Forwarded-For\" ip address list.\n   *\n   * For example if the value were \"client, proxy1, proxy2\"\n   * you would receive the array '[\"client\", \"proxy1\", \"proxy2\"]'\n   * where \"proxy2\" is the furthest down-stream.\n   */\n  ips: string[];\n\n  /**\n   * Return subdomains as an array.\n   *\n   * Subdomains are the dot-separated parts of the host before the main domain of\n   * the app. By default, the domain of the app is assumed to be the last two\n   * parts of the host. This can be changed by setting \"subdomain offset\".\n   *\n   * For example, if the domain is \"tobi.ferrets.example.com\":\n   * If \"subdomain offset\" is not set, req.subdomains is '[\"ferrets\", \"tobi\"]'.\n   * If \"subdomain offset\" is 3, req.subdomains is '[\"tobi\"]'.\n   */\n  subdomains: string[];\n\n  /**\n   * Short-hand for 'url.parse(req.url).pathname'.\n   */\n  path: string;\n\n  /**\n   * Parse the \"Host\" header field hostname.\n   */\n  hostname: string;\n\n  /**\n   * @deprecated Use hostname instead.\n   */\n  host: string;\n\n  /**\n   * Check if the request is fresh, aka\n   * Last-Modified and/or the ETag\n   * still match.\n   */\n  fresh: boolean;\n\n  /**\n   * Check if the request is stale, aka\n   * \"Last-Modified\" and / or the \"ETag\" for the\n   * resource has changed.\n   */\n  stale: boolean;\n\n  /**\n   * Check if the request was an _XMLHttpRequest_.\n   */\n  xhr: boolean;\n\n  //body: { username: string; password: string; remember: boolean; title: string; };\n  body: ReqBody;\n\n  //cookies: { string; remember: boolean; };\n  cookies: any;\n\n  method: string;\n\n  params: P;\n\n  query: ReqQuery;\n\n  route: any;\n\n  signedCookies: any;\n\n  originalUrl: string;\n\n  url: string;\n\n  baseUrl: string;\n\n  app: Application;\n\n  /**\n   * After middleware.init executed, Request will contain res and next properties\n   * See: express/lib/middleware/init.js\n   */\n  res?: Response<ResBody, Locals> | undefined;\n  next?: NextFunction | undefined;\n}\n\n\ndeclare class OutgoingMessage extends Writable {\n  readonly req: IncomingMessage;\n  chunkedEncoding: boolean;\n  shouldKeepAlive: boolean;\n  useChunkedEncodingByDefault: boolean;\n  sendDate: boolean;\n  /**\n   * @deprecated Use 'writableEnded' instead.\n   */\n  // finished: boolean;\n  /**\n   * Read-only. 'true' if the headers were sent, otherwise 'false'.\n   * @since v0.9.3\n   */\n  readonly headersSent: boolean;\n  /**\n   * Aliases of 'outgoingMessage.socket'\n   * @since v0.3.0\n   * @deprecated Since v15.12.0 - Use 'socket' instead.\n   */\n  // readonly connection: Socket | null;\n  /**\n   * Reference to the underlying socket. Usually, users will not want to access\n   * this property.\n   *\n   * After calling 'outgoingMessage.end()', this property will be nulled.\n   * @since v0.3.0\n   */\n  readonly socket: Socket | null;\n  constructor();\n  /**\n   * occurs, Same as binding to the 'timeout' event.\n   *\n   * Once a socket is associated with the message and is connected,'socket.setTimeout()' will be called with 'msecs' as the first parameter.\n   * @since v0.9.12\n   * @param callback Optional function to be called when a timeout\n   */\n  setTimeout(msecs: number, callback?: () => void): this;\n  /**\n   * Sets a single header value for the header object.\n   * @since v0.4.0\n   * @param name Header name\n   * @param value Header value\n   */\n  setHeader(name: string, value: number | string | ReadonlyArray<string>): this;\n  /**\n   * Gets the value of HTTP header with the given name. If such a name doesn't\n   * exist in message, it will be 'undefined'.\n   * @since v0.4.0\n   * @param name Name of header\n   */\n  getHeader(name: string): number | string | string[] | undefined;\n  /**\n   * Returns a shallow copy of the current outgoing headers. Since a shallow\n   * copy is used, array values may be mutated without additional calls to\n   * various header-related HTTP module methods. The keys of the returned\n   * object are the header names and the values are the respective header\n   * values. All header names are lowercase.\n   *\n   * The object returned by the 'outgoingMessage.getHeaders()' method does\n   * not prototypically inherit from the JavaScript Object. This means that\n   * typical Object methods such as 'obj.toString()', 'obj.hasOwnProperty()',\n   * and others are not defined and will not work.\n   *\n   * outgoingMessage.setHeader('Foo', 'bar');\n   * outgoingMessage.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']);\n   *\n   * const headers = outgoingMessage.getHeaders();\n   * // headers === { foo: 'bar', 'set-cookie': ['foo=bar', 'bar=baz'] }\n   *\n   * @since v8.0.0\n   */\n  getHeaders(): OutgoingHttpHeaders;\n  /**\n   * Returns an array of names of headers of the outgoing outgoingMessage. All\n   * names are lowercase.\n   * @since v8.0.0\n   */\n  getHeaderNames(): string[];\n  /**\n   * Returns 'true' if the header identified by 'name' is currently set in the\n   * outgoing headers. The header name is case-insensitive.\n   *\n   * const hasContentType = outgoingMessage.hasHeader('content-type');\n   *\n   * @since v8.0.0\n   */\n  hasHeader(name: string): boolean;\n  /**\n   * Removes a header that is queued for implicit sending.\n   *\n   * outgoingMessage.removeHeader('Content-Encoding');\n   *\n   * @since v0.4.0\n   */\n  removeHeader(name: string): void;\n  /**\n   * Adds HTTP trailers (headers but at the end of the message) to the message.\n   *\n   * Trailers are **only** be emitted if the message is chunked encoded. If not,\n   * the trailer will be silently discarded.\n   *\n   * HTTP requires the 'Trailer' header to be sent to emit trailers,\n   * with a list of header fields in its value, e.g.\n   *\n   * message.writeHead(200, { 'Content-Type': 'text/plain',\n   *                          'Trailer': 'Content-MD5' });\n   * message.write(fileData);\n   * message.addTrailers({ 'Content-MD5': '7895bf4b8828b55ceaf47747b4bca667' });\n   * message.end();\n   *\n   * Attempting to set a header field name or value that contains invalid characters\n   * will result in a 'TypeError' being thrown.\n   * @since v0.3.0\n   */\n  addTrailers(headers: OutgoingHttpHeaders | ReadonlyArray<[string, string]>): void;\n  /**\n   * Compulsorily flushes the message headers\n   *\n   * For efficiency reason, Node.js normally buffers the message headers\n   * until 'outgoingMessage.end()' is called or the first chunk of message data\n   * is written. It then tries to pack the headers and data into a single TCP\n   * packet.\n   *\n   * It is usually desired (it saves a TCP round-trip), but not when the first\n   * data is not sent until possibly much later. 'outgoingMessage.flushHeaders()' bypasses the optimization and kickstarts the request.\n   * @since v1.6.0\n   */\n  flushHeaders(): void;\n}\n\ndeclare class ServerResponse extends OutgoingMessage {\n  statusCode: number;\n  statusMessage: string;\n\n  constructor(req: IncomingMessage);\n\n  assignSocket(socket: Socket): void;\n  detachSocket(socket: Socket): void;\n  // https://github.com/nodejs/node/blob/master/test/parallel/test-http-write-callbacks.js#L53\n  // no args in writeContinue callback\n  writeContinue(callback?: () => void): void;\n  writeHead(statusCode: number, reasonPhrase?: string, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[]): this;\n  writeHead(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[]): this;\n  writeProcessing(): void;\n}\n\ninterface HttpResponse extends ServerResponse {\n  /**\n   * Set status 'code'.\n   */\n  status(code: StatusCode): this;\n\n  /**\n   * Set the response HTTP status code to 'statusCode' and send its string representation as the response body.\n   * @link http://expressjs.com/4x/api.html#res.sendStatus\n   *\n   * Examples:\n   *\n   *    res.sendStatus(200); // equivalent to res.status(200).send('OK')\n   *    res.sendStatus(403); // equivalent to res.status(403).send('Forbidden')\n   *    res.sendStatus(404); // equivalent to res.status(404).send('Not Found')\n   *    res.sendStatus(500); // equivalent to res.status(500).send('Internal Server Error')\n   */\n  sendStatus(code: StatusCode): this;\n\n  /**\n   * Set Link header field with the given 'links'.\n   *\n   * Examples:\n   *\n   *    res.links({\n   *      next: 'http://api.example.com/users?page=2',\n   *      last: 'http://api.example.com/users?page=5'\n   *    });\n   */\n  links(links: any): this;\n\n  /**\n   * Send a response.\n   *\n   * Examples:\n   *\n   *     res.send(new Buffer('wahoo'));\n   *     res.send({ some: 'json' });\n   *     res.send('<p>some html</p>');\n   *     res.status(404).send('Sorry, cant find that');\n   */\n  send: Send<ResBody, this>;\n\n  /**\n   * Send JSON response.\n   *\n   * Examples:\n   *\n   *     res.json(null);\n   *     res.json({ user: 'tj' });\n   *     res.status(500).json('oh noes!');\n   *     res.status(404).json('I dont have that');\n   */\n  json: Send<ResBody, this>;\n\n  /**\n   * Send JSON response with JSONP callback support.\n   *\n   * Examples:\n   *\n   *     res.jsonp(null);\n   *     res.jsonp({ user: 'tj' });\n   *     res.status(500).jsonp('oh noes!');\n   *     res.status(404).jsonp('I dont have that');\n   */\n  jsonp: Send<ResBody, this>;\n\n  /**\n   * Transfer the file at the given 'path'.\n   *\n   * Automatically sets the _Content-Type_ response header field.\n   * The callback 'fn(err)' is invoked when the transfer is complete\n   * or when an error occurs. Be sure to check 'res.headersSent'\n   * if you wish to attempt responding, as the header and some data\n   * may have already been transferred.\n   *\n   * Options:\n   *\n   *   - 'maxAge'   defaulting to 0 (can be string converted by 'ms')\n   *   - 'root'     root directory for relative filenames\n   *   - 'headers'  object of headers to serve with file\n   *   - 'dotfiles' serve dotfiles, defaulting to false; can be '\"allow\"' to send them\n   *\n   * Other options are passed along to 'send'.\n   *\n   * Examples:\n   *\n   *  The following example illustrates how 'res.sendFile()' may\n   *  be used as an alternative for the 'static()' middleware for\n   *  dynamic situations. The code backing 'res.sendFile()' is actually\n   *  the same code, so HTTP cache support etc is identical.\n   *\n   *     app.get('/user/:uid/photos/:file', function(req, res){\n   *       var uid = req.params.uid\n   *         , file = req.params.file;\n   *\n   *       req.user.mayViewFilesFrom(uid, function(yes){\n   *         if (yes) {\n   *           res.sendFile('/uploads/' + uid + '/' + file);\n   *         } else {\n   *           res.send(403, 'Sorry! you cant see that.');\n   *         }\n   *       });\n   *     });\n   *\n   * @api public\n   */\n  sendFile(path: string, fn?: Errback): void;\n  sendFile(path: string, options: any, fn?: Errback): void;\n\n  /**\n   * @deprecated Use sendFile instead.\n   */\n  // sendfile(path: string): void;\n  /**\n   * @deprecated Use sendFile instead.\n   */\n  // sendfile(path: string, options: any): void;\n  /**\n   * @deprecated Use sendFile instead.\n   */\n  // sendfile(path: string, fn: Errback): void;\n  /**\n   * @deprecated Use sendFile instead.\n   */\n  // sendfile(path: string, options: any, fn: Errback): void;\n\n  /**\n   * Transfer the file at the given 'path' as an attachment.\n   *\n   * Optionally providing an alternate attachment 'filename',\n   * and optional callback 'fn(err)'. The callback is invoked\n   * when the data transfer is complete, or when an error has\n   * ocurred. Be sure to check 'res.headersSent' if you plan to respond.\n   *\n   * The optional options argument passes through to the underlying\n   * res.sendFile() call, and takes the exact same parameters.\n   *\n   * This method uses 'res.sendfile()'.\n   */\n  download(path: string, fn?: Errback): void;\n  download(path: string, filename: string, fn?: Errback): void;\n  download(path: string, filename: string, options: any, fn?: Errback): void;\n\n  /**\n   * Set _Content-Type_ response header with 'type' through 'mime.lookup()'\n   * when it does not contain \"/\", or set the Content-Type to 'type' otherwise.\n   *\n   * Examples:\n   *\n   *     res.type('.html');\n   *     res.type('html');\n   *     res.type('json');\n   *     res.type('application/json');\n   *     res.type('png');\n   */\n  contentType(type: string): this;\n\n  /**\n   * Set _Content-Type_ response header with 'type' through 'mime.lookup()'\n   * when it does not contain \"/\", or set the Content-Type to 'type' otherwise.\n   *\n   * Examples:\n   *\n   *     res.type('.html');\n   *     res.type('html');\n   *     res.type('json');\n   *     res.type('application/json');\n   *     res.type('png');\n   */\n  type(type: string): this;\n\n  /**\n   * Respond to the Acceptable formats using an 'obj'\n   * of mime-type callbacks.\n   *\n   * This method uses 'req.accepted', an array of\n   * acceptable types ordered by their quality values.\n   * When \"Accept\" is not present the _first_ callback\n   * is invoked, otherwise the first match is used. When\n   * no match is performed the server responds with\n   * 406 \"Not Acceptable\".\n   *\n   * Content-Type is set for you, however if you choose\n   * you may alter this within the callback using 'res.type()'\n   * or 'res.set('Content-Type', ...)'.\n   *\n   *    res.format({\n   *      'text/plain': function(){\n   *        res.send('hey');\n   *      },\n   *\n   *      'text/html': function(){\n   *        res.send('<p>hey</p>');\n   *      },\n   *\n   *      'appliation/json': function(){\n   *        res.send({ message: 'hey' });\n   *      }\n   *    });\n   *\n   * In addition to canonicalized MIME types you may\n   * also use extnames mapped to these types:\n   *\n   *    res.format({\n   *      text: function(){\n   *        res.send('hey');\n   *      },\n   *\n   *      html: function(){\n   *        res.send('<p>hey</p>');\n   *      },\n   *\n   *      json: function(){\n   *        res.send({ message: 'hey' });\n   *      }\n   *    });\n   *\n   * By default Express passes an 'Error'\n   * with a '.status' of 406 to 'next(err)'\n   * if a match is not made. If you provide\n   * a '.default' callback it will be invoked\n   * instead.\n   */\n  format(obj: any): this;\n\n  /**\n   * Set _Content-Disposition_ header to _attachment_ with optional 'filename'.\n   */\n  attachment(filename?: string): this;\n\n  /**\n   * Set header 'field' to 'val', or pass\n   * an object of header fields.\n   *\n   * Examples:\n   *\n   *    res.set('Foo', ['bar', 'baz']);\n   *    res.set('Accept', 'application/json');\n   *    res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });\n   *\n   * Aliased as 'res.header()'.\n   */\n  set(field: any): this;\n  set(field: string, value?: string | string[]): this;\n\n  header(field: any): this;\n  header(field: string, value?: string | string[]): this;\n\n  // Property indicating if HTTP headers has been sent for the response.\n  headersSent: boolean;\n\n  /** Get value for header 'field'. */\n  get(field: string): string;\n\n  /** Clear cookie 'name'. */\n  clearCookie(name: string, options?: any): this;\n\n  /**\n   * Set cookie 'name' to 'val', with the given 'options'.\n   *\n   * Options:\n   *\n   *    - 'maxAge'   max-age in milliseconds, converted to 'expires'\n   *    - 'signed'   sign the cookie\n   *    - 'path'     defaults to \"/\"\n   *\n   * Examples:\n   *\n   *    // \"Remember Me\" for 15 minutes\n   *    res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });\n   *\n   *    // save as above\n   *    res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true })\n   */\n  cookie(name: string, val: string, options: CookieOptions): this;\n  cookie(name: string, val: any, options: CookieOptions): this;\n  cookie(name: string, val: any): this;\n\n  /**\n   * Set the location header to 'url'.\n   *\n   * The given 'url' can also be the name of a mapped url, for\n   * example by default express supports \"back\" which redirects\n   * to the _Referrer_ or _Referer_ headers or \"/\".\n   *\n   * Examples:\n   *\n   *    res.location('/foo/bar').;\n   *    res.location('http://example.com');\n   *    res.location('../login'); // /blog/post/1 -> /blog/login\n   *\n   * Mounting:\n   *\n   *   When an application is mounted and 'res.location()'\n   *   is given a path that does _not_ lead with \"/\" it becomes\n   *   relative to the mount-point. For example if the application\n   *   is mounted at \"/blog\", the following would become \"/blog/login\".\n   *\n   *      res.location('login');\n   *\n   *   While the leading slash would result in a location of \"/login\":\n   *\n   *      res.location('/login');\n   */\n  location(url: string): this;\n\n  /**\n   * Redirect to the given 'url' with optional response 'status'\n   * defaulting to 302.\n   *\n   * The resulting 'url' is determined by 'res.location()', so\n   * it will play nicely with mounted apps, relative paths,\n   * '\"back\"' etc.\n   *\n   * Examples:\n   *\n   *    res.redirect('/foo/bar');\n   *    res.redirect('http://example.com');\n   *    res.redirect(301, 'http://example.com');\n   *    res.redirect('http://example.com', 301);\n   *    res.redirect('../login'); // /blog/post/1 -> /blog/login\n   */\n  redirect(url: string): void;\n  redirect(status: number, url: string): void;\n  redirect(url: string, status: number): void;\n\n  /**\n   * Render 'view' with the given 'options' and optional callback 'fn'.\n   * When a callback function is given a response will _not_ be made\n   * automatically, otherwise a response of _200_ and _text/html_ is given.\n   *\n   * Options:\n   *\n   *  - 'cache'     boolean hinting to the engine it should cache\n   *  - 'filename'  filename of the view being rendered\n   */\n  render(view: string, options?: object, callback?: (err: Error, html: string) => void): void;\n  render(view: string, callback?: (err: Error, html: string) => void): void;\n\n  locals: Locals;\n\n  charset: string;\n\n  /**\n   * Adds the field to the Vary response header, if it is not there already.\n   * Examples:\n   *\n   *     res.vary('User-Agent').render('docs');\n   *\n   */\n  vary(field: string): this;\n\n  // app: Application;\n\n  /**\n   * Appends the specified value to the HTTP response header field.\n   * If the header is not already set, it creates the header with the specified value.\n   * The value parameter can be a string or an array.\n   *\n   * Note: calling res.set() after res.append() will reset the previously-set header value.\n   *\n   * @since 4.11.0\n   */\n  append(field: string, value?: string[] | string): this;\n\n  /**\n   * After middleware.init executed, Response will contain req property\n   * See: express/lib/middleware/init.js\n   */\n  // req?: Request;\n}\n\n\n\n\n// WebSocket socket.\ndeclare class WebSocket extends EventEmitter {\n  /** The connection is not yet open. */\n  static readonly CONNECTING: 0;\n  /** The connection is open and ready to communicate. */\n  static readonly OPEN: 1;\n  /** The connection is in the process of closing. */\n  static readonly CLOSING: 2;\n  /** The connection is closed. */\n  static readonly CLOSED: 3;\n\n  binaryType: \"nodebuffer\" | \"arraybuffer\" | \"fragments\";\n  readonly bufferedAmount: number;\n  readonly extensions: string;\n  readonly protocol: string;\n  /** The current state of the connection */\n  readonly readyState:\n    | typeof WebSocket.CONNECTING\n    | typeof WebSocket.OPEN\n    | typeof WebSocket.CLOSING\n    | typeof WebSocket.CLOSED;\n  readonly url: string;\n\n  /** The connection is not yet open. */\n  readonly CONNECTING: 0;\n  /** The connection is open and ready to communicate. */\n  readonly OPEN: 1;\n  /** The connection is in the process of closing. */\n  readonly CLOSING: 2;\n  /** The connection is closed. */\n  readonly CLOSED: 3;\n\n  onopen: (event: WebSocket.Event) => void;\n  onerror: (event: WebSocket.ErrorEvent) => void;\n  onclose: (event: WebSocket.CloseEvent) => void;\n  onmessage: (event: WebSocket.MessageEvent) => void;\n\n  constructor(address: string | URL, options?: WebSocket.ClientOptions | ClientRequestArgs);\n  constructor(\n    address: string | URL,\n    protocols?: string | string[],\n    options?: WebSocket.ClientOptions | ClientRequestArgs,\n  );\n\n  close(code?: number, data?: string | Buffer): void;\n  ping(data?: any, mask?: boolean, cb?: (err: Error) => void): void;\n  pong(data?: any, mask?: boolean, cb?: (err: Error) => void): void;\n  send(data: any, cb?: (err?: Error) => void): void;\n  send(\n    data: any,\n    options: { mask?: boolean | undefined; binary?: boolean | undefined; compress?: boolean | undefined; fin?: boolean | undefined },\n    cb?: (err?: Error) => void,\n  ): void;\n  terminate(): void;\n\n  // HTML5 WebSocket events\n  addEventListener(\n    method: \"message\",\n    cb: (event: WebSocket.MessageEvent) => void,\n    options?: WebSocket.EventListenerOptions,\n  ): void;\n  addEventListener(\n    method: \"close\",\n    cb: (event: WebSocket.CloseEvent) => void,\n    options?: WebSocket.EventListenerOptions,\n  ): void;\n  addEventListener(\n    method: \"error\",\n    cb: (event: WebSocket.ErrorEvent) => void,\n    options?: WebSocket.EventListenerOptions,\n  ): void;\n  addEventListener(\n    method: \"open\",\n    cb: (event: WebSocket.Event) => void,\n    options?: WebSocket.EventListenerOptions,\n  ): void;\n\n  removeEventListener(method: \"message\", cb: (event: WebSocket.MessageEvent) => void): void;\n  removeEventListener(method: \"close\", cb: (event: WebSocket.CloseEvent) => void): void;\n  removeEventListener(method: \"error\", cb: (event: WebSocket.ErrorEvent) => void): void;\n  removeEventListener(method: \"open\", cb: (event: WebSocket.Event) => void): void;\n\n  // Events\n  on(event: \"close\", listener: (this: WebSocket, code: number, reason: Buffer) => void): this;\n  on(event: \"error\", listener: (this: WebSocket, err: Error) => void): this;\n  on(event: \"upgrade\", listener: (this: WebSocket, request: IncomingMessage) => void): this;\n  on(event: \"message\", listener: (this: WebSocket, data: WebSocket.RawData, isBinary: boolean) => void): this;\n  on(event: \"open\", listener: (this: WebSocket) => void): this;\n  on(event: \"ping\" | \"pong\", listener: (this: WebSocket, data: Buffer) => void): this;\n  on(\n    event: \"unexpected-response\",\n    listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void,\n  ): this;\n  on(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;\n\n  once(event: \"close\", listener: (this: WebSocket, code: number, reason: Buffer) => void): this;\n  once(event: \"error\", listener: (this: WebSocket, err: Error) => void): this;\n  once(event: \"upgrade\", listener: (this: WebSocket, request: IncomingMessage) => void): this;\n  once(event: \"message\", listener: (this: WebSocket, data: WebSocket.RawData, isBinary: boolean) => void): this;\n  once(event: \"open\", listener: (this: WebSocket) => void): this;\n  once(event: \"ping\" | \"pong\", listener: (this: WebSocket, data: Buffer) => void): this;\n  once(\n    event: \"unexpected-response\",\n    listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void,\n  ): this;\n  once(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;\n\n  off(event: \"close\", listener: (this: WebSocket, code: number, reason: Buffer) => void): this;\n  off(event: \"error\", listener: (this: WebSocket, err: Error) => void): this;\n  off(event: \"upgrade\", listener: (this: WebSocket, request: IncomingMessage) => void): this;\n  off(event: \"message\", listener: (this: WebSocket, data: WebSocket.RawData, isBinary: boolean) => void): this;\n  off(event: \"open\", listener: (this: WebSocket) => void): this;\n  off(event: \"ping\" | \"pong\", listener: (this: WebSocket, data: Buffer) => void): this;\n  off(\n    event: \"unexpected-response\",\n    listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void,\n  ): this;\n  off(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;\n\n  addListener(event: \"close\", listener: (code: number, reason: Buffer) => void): this;\n  addListener(event: \"error\", listener: (err: Error) => void): this;\n  addListener(event: \"upgrade\", listener: (request: IncomingMessage) => void): this;\n  addListener(event: \"message\", listener: (data: WebSocket.RawData, isBinary: boolean) => void): this;\n  addListener(event: \"open\", listener: () => void): this;\n  addListener(event: \"ping\" | \"pong\", listener: (data: Buffer) => void): this;\n  addListener(\n    event: \"unexpected-response\",\n    listener: (request: ClientRequest, response: IncomingMessage) => void,\n  ): this;\n  addListener(event: string | symbol, listener: (...args: any[]) => void): this;\n\n  removeListener(event: \"close\", listener: (code: number, reason: Buffer) => void): this;\n  removeListener(event: \"error\", listener: (err: Error) => void): this;\n  removeListener(event: \"upgrade\", listener: (request: IncomingMessage) => void): this;\n  removeListener(event: \"message\", listener: (data: WebSocket.RawData, isBinary: boolean) => void): this;\n  removeListener(event: \"open\", listener: () => void): this;\n  removeListener(event: \"ping\" | \"pong\", listener: (data: Buffer) => void): this;\n  removeListener(\n    event: \"unexpected-response\",\n    listener: (request: ClientRequest, response: IncomingMessage) => void,\n  ): this;\n  removeListener(event: string | symbol, listener: (...args: any[]) => void): this;\n}"
  },
  {
    "path": "cli/template/package.json",
    "content": "{\n  \"name\": \"laf-app\",\n  \"description\": \"the app engine service of lat\",\n  \"dependencies\": {},\n  \"devDependencies\": {}\n}"
  },
  {
    "path": "cli/template/tsconfig.json",
    "content": "{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\n        \"functions/*\"\n      ]\n    },\n    \"declaration\": true,\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true,\n    \"importHelpers\": false,\n    \"module\": \"Node16\",\n    \"declarationMap\": true,\n    // \"declarationDir\": \"types\",\n    \"noEmitOnError\": false,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": false,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"outDir\": \"dist\",\n    \"pretty\": true,\n    \"removeComments\": true,\n    \"stripInternal\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true,\n    \"target\": \"ES2022\",\n    \"alwaysStrict\": true,\n    \"lib\": [\n      \"ES2022\"\n    ]\n  },\n  \"include\": [\n    \"functions/**/*\",\n    \"types/**/*\"\n  ],\n  \"exclude\": [\n    \"tests\"\n  ]\n}"
  },
  {
    "path": "cli/tsconfig.json",
    "content": "{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"declaration\": true,\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true,\n    \"importHelpers\": false,\n    \"module\": \"commonjs\",\n    \"declarationMap\": true,\n    // \"declarationDir\": \"types\",\n    \"noEmitOnError\": false,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": false,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"outDir\": \"dist\",\n    \"pretty\": true,\n    \"removeComments\": true,\n    \"stripInternal\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true,\n    \"target\": \"es2017\",\n    \"alwaysStrict\": true,\n    \"lib\": [\n      \"es2015\",\n      \"es6\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*\",\n  ],\n  \"exclude\": [\n    \"tests\",\n  ]\n}"
  },
  {
    "path": "deploy/README.md",
    "content": "\n## Intro\n\n> WARNING: This is a work in progress. The scripts are not yet ready for production use.\n\n> This script is used to deploy the v1.0 development environment. The v1.0 environment has not been released yet, so this script is only for laf contributors to use in the development environment.\n\n## Create development environment on Linux\n\n> TIP: Please confirm to operate under the root user!\n\n```bash\ncd deploy\n\n# replace with your domain here.\nexport DOMAIN=127.0.0.1.nip.io\n\n# install k8s cluster\nsh install-on-linux.sh $DOMAIN\n```\n\n## Create development environment on MacOS\n\n1. Install multipass on MacOS\n\n```bash\n# Skip this step if you have already installed multipass\n# see https://multipass.run/install\nbrew install --cask multipass\n```\n\n2. Grant `Settings -> Security & Privacy -> Full Disk Access` for multipassd\n\n3. Create vm & deploy in it\n\n```bash\ncd deploy\nsh install-on-mac.sh  # create vm & setup in it\n```\n## Create development environment on Windows\n\n1. Install [multipass](https://multipass.run/install) on Windows\n\n> Skip this step if you have already installed multipass\n>\n> Note: `Restart` your computer after install multipass\n\n2. Create vm and mount laf into vm\n```powershell\nmultipass launch --name laf-dev --cpus 2 --memory 4G --disk 50G\n\n# Enable multipass mount local directory into vm\nmultipass set local.privileged-mounts=true\n\n# Mount laf into vm\nmultipass mount ${YOUR_LAF_DIRECOTRY_PATH} laf-dev:/laf/\n```\n\n3. **Remember change CRLF To LF**\n\nFile EOF will end by CRLF on windows by default, you need change back to ensure shell scripts could run successfully after mount.\n\n\n4. Run install-script in vm\n```powershell\n# Get VM ip\nmultipass info laf-dev | Where-Object{$_ -match \"IPv4\"} | ForEach-Object{ ($_ -split \"\\s+\")[1] }\n#eg. 172.27.x.y -> 172.27.x.y.nip.io\nmultipass exec laf-dev -- sudo -u root sh /laf/deploy/install-on-linux.sh $VM_IP_GOT_ABOVE.nip.io\n```\n\n\n5. Wait k8s cluster ready & Copy kubeconfig to host\n```powershell\nmultipass exec $NAME -- sudo -u root kubectl get nodes\n# After nodes status changed to Ready, you can copy kubeconfig file into your host machine\nmultipass exec laf-dev -- sudo -u root cat /root/.kube/config > $HOST_PATH_WHERE_YOU_WANT_LOCATE_CONFIG_FILE\n```\n"
  },
  {
    "path": "deploy/install-on-linux.sh",
    "content": "#!/usr/bin/env sh\n# Intro: start laf with sealos in linux\n# Usage: sh ./install-on-linux.sh <domain>\n\n# TIP: use `sh -x install-on-linux.sh` to debug\n\n# set the first param as domain\nDOMAIN=\"$1\"\n# if domain is empty string, use default domain\nif [ -z \"$DOMAIN\" ]; then\n    DOMAIN=\"127.0.0.1.nip.io\"\nfi\n\n# Install Sealos\n\n# if apt installed, use `apt` to install\nif [ -x \"$(command -v apt)\" ]; then\n  echo \"deb [trusted=yes] https://apt.fury.io/labring/ /\" | tee /etc/apt/sources.list.d/labring.list\n  apt update\n  apt install iptables host -y\n  apt install sealos=4.3.5 -y\n  apt install jq -y\n  \n  # fix /etc/hosts overwrite bug in ubuntu while restarting\n  sed -i \"/update_etc_hosts/c \\\\ - ['update_etc_hosts', 'once-per-instance']\" /etc/cloud/cloud.cfg && touch /var/lib/cloud/instance/sem/config_update_etc_hosts\nfi\n\n# if yum installed, use `yum` to install\nif [ -x \"$(command -v yum)\" ]; then\n  cat > /etc/yum.repos.d/labring.repo << EOF\n[fury]\nname=labring Yum Repo\nbaseurl=https://yum.fury.io/labring/\nenabled=1\ngpgcheck=0\nEOF\n  # yum update\n  yum clean all\n  yum install -y bind-utils iptables\n  yum install sealos=4.3.7 -y\n  yum install jq -y\nfi\n\nARCH=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/)\necho \"ARCH: $ARCH\"\n\n# if sealos not installed\nif [ ! -x \"$(command -v sealos)\" ]; then\n    echo \"sealos not installed\"\n    exit 1\nfi\n\nset -e\n\n# pull sealos cluster images\nsealos pull labring/kubernetes:v1.24.9\nsealos pull labring/flannel:v0.19.0\nsealos pull labring/helm:v3.8.2\nsealos pull labring/openebs:v1.9.0\nsealos pull labring/cert-manager:v1.8.0\nsealos pull labring/metrics-server:v0.6.2\nsealos pull lafyun/laf:latest\nsealos pull docker.io/labring/ingress-nginx:v1.8.1\nsealos pull labring/kubeblocks:v0.7.1\n\n# install k8s cluster\nsealos run labring/kubernetes:v1.24.9 labring/flannel:v0.19.0 labring/helm:v3.8.2\n\n# taint master node\nNODENAME=$(kubectl get nodes -ojsonpath='{.items[0].metadata.name}')\nkubectl taint node $NODENAME node-role.kubernetes.io/master- || true\nkubectl taint node $NODENAME node-role.kubernetes.io/control-plane- || true\n\n# install required components\nsealos run labring/openebs:v1.9.0\nsealos run labring/cert-manager:v1.8.0\nsealos run labring/metrics-server:v0.6.2\nsealos run docker.io/labring/ingress-nginx:v1.8.1 \\\n  -e HELM_OPTS=\"--set controller.hostNetwork=true --set controller.kind=DaemonSet --set controller.service.enabled=false\"\n# TODO: use kubeblocks v0.9.1\nsealos run labring/kubeblocks:v0.7.1\n\n\nsealos run --env DOMAIN=$DOMAIN --env DB_PV_SIZE=5Gi --env OSS_PV_SIZE=5Gi --env EXTERNAL_HTTP_SCHEMA=http lafyun/laf:latest\n"
  },
  {
    "path": "deploy/install-on-mac.sh",
    "content": "#!/usr/bin/env sh\n\n# Intro: Start a VM by multipass with laf deployment environment.\n\n# [ Required ] Install multipass by before run this script (https://multipass.run/install): \n#   MacOS:   brew install --cask multipass\n#   Linux:   sudo snap install multipass\n#   Windows: https://multipass.run/install\n\n# Usage: ./vm_run.sh <vm_name> <kubeconfig_output>\n# - sh install-on-mac.sh\n# - sh install-on-mac.sh laf-dev ~/.kube/config\n\nNAME=\"laf-dev\"\n# if set first param in command line\nif [ -n \"$1\" ]; then\n    NAME=\"$1\"\nfi\n\nSCRIPT_DIR=$(pwd)/$(dirname \"$0\")\nPROJECT_ROOT=$SCRIPT_DIR/..\nKUBECONF=~/.kube/config\n\n# if set second param in command line, use it as KUBECONF_DIR\nif [ -n \"$2\" ]; then\n    KUBECONF=\"$2\"\nfi\n\nKUBECONF_DIR=$(dirname \"$KUBECONF\")\nset -e\n# check if .kube path is exist\nif [ ! -d \"$KUBECONF_DIR\" ]; then\n    mkdir \"$KUBECONF_DIR\"\n    echo \"$KUBECONF_DIR created\"\nfi\n\n# check if multipass is installed\nif ! command -v multipass &> /dev/null\nthen\n    echo \"ERROR: multipass could not be found, please install it first:\"\n    echo \"  On MacOS:    brew install --cask multipass\"\n    echo \"  On Linux:    sudo snap install multipass\"\n    echo \"  On Windows:  https://multipass.run/install\"\n    exit 1\nfi\n\n# delete the vm if it already exists\nif multipass list | grep -e \"^$NAME \"; then\n    echo \"Deleting the existing vm $NAME\"\n    multipass delete -p \"$NAME\"\nfi\n\necho \"Creating VM...\"\necho \"\\tmultipass launch --name $NAME --cpus 2 --memory 4G --disk 50G\"\nmultipass launch --name \"$NAME\" --cpus 2 --memory 4G --disk 50G 22.04\n# shellcheck disable=SC2181\nif [ $? -eq 0 ]; then\n    echo \"vm is created\"\nelse\n    echo \"ERROR: failed to create vm, please retry\"\n    exit 1\nfi\n\n# wait for vm to be ready\necho \"Waiting for vm to be ready...\"\nwhile ! multipass list | grep -e \"^$NAME \" | grep -e \"Running\"; do\n    sleep 1\ndone\n\n# mount laf project root to vm\necho \"Mounting project to vm: $PROJECT_ROOT -> $NAME:/laf/\"\nmultipass mount $PROJECT_ROOT $NAME:/laf/\n\n# shellcheck disable=SC2139\nalias vm_root_exec=\"multipass exec $NAME -- sudo -u root\"\nvm_ip=$(multipass info \"$NAME\" | grep IPv4: | awk '{print $2}')\n\n# install k8s cluster\necho \"Installing k8s cluster\"\nDOMAIN=\"$vm_ip.nip.io\"\nvm_root_exec sh /laf/deploy/install-on-linux.sh $DOMAIN\n\n# waiting for k8s cluster to be ready\ni=0\nwhile true; do\n    echo \"Waiting for k8s cluster ready...\"\n    state=$(vm_root_exec kubectl get nodes | grep Ready | awk '{print $2}')\n    if [ \"$state\" = \"Ready\" ]; then\n        break\n    fi\n    i=$((i+1))\n    if [ $i -gt 100 ]; then\n        echo \"ERROR: k8s cluster is not ready\"\n        exit 1\n    fi\n    sleep 3\ndone\n\nset -x\nset -e\n# copy kubeconfig to host\nmultipass exec \"$NAME\" -- sudo -u root cat /root/.kube/config > \"$KUBECONF\"\n\n# replace ip address in kubeconf\nsed -i -e \"s/apiserver.cluster.local/$vm_ip/g\" \"$KUBECONF\"\nset +x\n\necho \"k8s cluster is ready.\"\necho \"ip: $vm_ip\"\n"
  },
  {
    "path": "docs/.eslintignore",
    "content": "public"
  },
  {
    "path": "docs/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"laf/docs\"\n}"
  },
  {
    "path": "docs/.gitignore",
    "content": "\n\n.vitepress/cache"
  },
  {
    "path": "docs/.vitepress/config.mts",
    "content": "import { defineConfig } from 'vitepress'\nimport { NavItemsInEnglish, SidebarItemsInEnglish } from './en.mts'\nimport { NavItemsInZh, SidebarItemsInZh } from './zh.mts'\n\n// https://vitepress.dev/reference/site-config\nexport default defineConfig({\n  themeConfig: {\n    search: {\n      provider: 'local'\n    }\n  },\n  lastUpdated: true,\n  markdown: {\n    lineNumbers: true,\n  },\n\n  locales: {  \n    root: {\n      label: '简体中文',\n      lang: 'zh-CN',\n      link: '/zh/',\n      title: \"Laf 开发文档\",\n      description: \"laf 开发文档，像写博客一样写函数。\",\n      themeConfig: {\n        logo: \"/logo.png\",\n        footer: {\n          message: \"Apache License V2.0\",\n          copyright: \"Copyright © 2021-2024 labring/laf\",\n        },\n        editLink: {\n          pattern: \"https://github.com/labring/laf/edit/main/docs/:path\",\n          text: \"我修改这一页\",\n        },\n        lastUpdated: {\n          text: \"更新于\"\n        },\n        docFooter: {\n          prev: '上一篇',\n          next: '下一篇'\n        },\n        socialLinks: [\n          { icon: \"github\", link: \"https://github.com/labring/laf\" },\n          { icon: \"discord\", link: \"https://discord.gg/KaxHF86CcF\" },\n          { icon: \"twitter\", link: \"https://twitter.com/laf_dev\" },\n        ],\n        returnToTopLabel: '返回顶部',\n        externalLinkIcon: true,\n        outline: 'deep',\n\n        // https://vitepress.dev/reference/default-theme-config\n        nav: NavItemsInZh,\n\n        sidebar: SidebarItemsInZh,\n      },\n    },\n    en: {\n      label: 'English',\n      lang: 'en',\n      link: '/en/',\n      title: \"Laf Documentation\",\n      description: \"Development documentation of laf, write function like writing blog.\",\n      themeConfig: {\n        logo: \"/logo.png\",\n        footer: {\n          message: \"Apache License V2.0\",\n          copyright: \"Copyright © 2021-2024 labring/laf\",\n        },\n        editLink: {\n          pattern: \"https://github.com/labring/laf/edit/main/docs/:path\",\n          text: \"Edit this page on GitHub\",\n        },\n        socialLinks: [\n          { icon: \"github\", link: \"https://github.com/labring/laf\" },\n          { icon: \"discord\", link: \"https://discord.gg/KaxHF86CcF\" },\n          { icon: \"twitter\", link: \"https://twitter.com/laf_dev\" },\n        ],\n\n        outline: 'deep',\n\n        externalLinkIcon: true,\n\n        // https://vitepress.dev/reference/default-theme-config\n        nav: NavItemsInEnglish,\n\n        sidebar: SidebarItemsInEnglish,\n      }\n    },\n  },\n\n})\n"
  },
  {
    "path": "docs/.vitepress/en.mts",
    "content": "import { DefaultTheme } from 'vitepress'\n\n\nexport const NavItemsInEnglish: DefaultTheme.NavItem[] = [\n  // { text: 'Guides', link: '/en/' },\n  // { text: 'Examples', link: './markdown-examples' }\n]\n\nexport const SidebarItemsInEnglish: DefaultTheme.SidebarItem[] = [\n  {\n    text: 'Getting Started',\n    items: [\n      { text: 'Overview', link: '/en/' },\n      { text: 'Architecture', link: '/en/architecture' },\n    ]\n  }\n]"
  },
  {
    "path": "docs/.vitepress/theme/custom.css",
    "content": ".VPSidebar::-webkit-scrollbar {\n  display: none;\n}\n\n/* \n.VPDocAside .outline-link {\n  color: rgb(6, 63, 148);\n}\n\n.VPDocAside .outline-link {\n  font-size: 14px;\n}\n\n.VPDocAside .outline-link.active {\n  color: rgb(82, 7, 234);\n}\n\n\n.VPDocAside .outline-link:hover {\n  color: rgb(82, 7, 234);\n} */"
  },
  {
    "path": "docs/.vitepress/theme/index.ts",
    "content": "import DefaultTheme from 'vitepress/theme'\nimport './custom.css'\n\nexport default DefaultTheme"
  },
  {
    "path": "docs/.vitepress/zh.mts",
    "content": "import { DefaultTheme } from 'vitepress'\n\n\nfunction wrapGray(content: string) {\n  return `<span style='color:darkgray'>${content}</span>`\n}\n\nexport const NavItemsInZh: DefaultTheme.NavItem[] = [\n  { text: '开发指南', link: '/zh/' },\n  { text: '使用实例', link: '/zh/examples/' },\n  { text: '旧版文档', link: 'https://doc.laf.run/old/' }\n]\n\nexport const SidebarItemsInZh: DefaultTheme.SidebarItem[] = [\n  {\n    text: '入门',\n    link: '/zh/',\n    items: [\n      {\n        text: 'laf 介绍',\n        link: '/zh/',\n      },\n      {\n        text: '快速开始',\n        link: '/zh/quick-start/login'\n      }\n    ],\n  },\n  {\n    text: '云函数',\n    collapsed: false,\n    items: [\n      { text: '云函数简介', link: '/zh/cloud-function/' },\n      { text: '快速开始', link: '/zh/cloud-function/quick-start' },\n      {\n        text: '处理 HTTP',\n        collapsed: true,\n        items: [\n          { text: '请求', link: '/zh/cloud-function/request' },\n          { text: '响应', link: '/zh/cloud-function/response' },\n          { text: '认证', link: '/zh/cloud-function/auth' },\n          { text: '文件上传', link: '/zh/cloud-function/files' },\n        ]\n      },\n      { text: '发起网络请求', link: '/zh/cloud-function/fetch' },\n      { text: '函数引用', link: '/zh/cloud-function/import' },\n      { text: '环境变量', link: '/zh/cloud-function/env' },\n      { text: '依赖管理', link: '/zh/cloud-function/deps' },\n      { text: '定时任务', link: '/zh/cloud-function/cron' },\n      {\n        text: '内置云函数',\n        collapsed: true,\n        items: [\n          { text: '拦截器', link: '/zh/cloud-function/interceptor' },\n          { text: '初始化', link: '/zh/cloud-function/init' },\n          { text: 'WebSocket', link: '/zh/cloud-function/websocket' },\n        ],\n      },\n    ]\n  },\n  {\n    text: '云数据库',\n    collapsed: false,\n    items: [\n      { text: '云数据库简介', link: '/zh/cloud-database/' },\n      { text: '快速开始', link: '/zh/cloud-database/quick-start' },\n      { text: '插入文档', link: '/zh/cloud-database/insert' },\n      {\n        text: '查询文档',\n        link: '/zh/cloud-database/find',\n        collapsed: true,\n        items: [\n          { text: '条件查询', link: '/zh/cloud-database/query/condition' },\n          { text: '排序查询', link: '/zh/cloud-database/query/sort' },\n          { text: '分页查询', link: '/zh/cloud-database/query/pagination' },\n          { text: '嵌套文档查询', link: '/zh/cloud-database/query/nested' },\n          { text: '正则模糊查询', link: '/zh/cloud-database/query/regex' },\n          { text: '数组查询', link: '/zh/cloud-database/query/array' },\n        ]\n      },\n      { text: '更新文档', link: '/zh/cloud-database/update' },\n      { text: '删除文档', link: '/zh/cloud-database/delete' },\n      {\n        text: '进阶使用',\n        collapsed: true,\n        items: [\n          { text: '聚合查询(TBD)' },\n          { text: '事务(TBD)' },\n          { text: '组合操作(TBD)' },\n          { text: '索引(TBD)' },\n          { text: '时序集合(TBD)' },\n          { text: '变更流(TBD)' },\n        ]\n      },\n      {\n        text: wrapGray('旧版语法'),\n        collapsed: true,\n        items: [\n          { text: wrapGray('数据库简介'), link: '/zh/cloud-database/database-ql/' },\n          { text: wrapGray('数据库入门'), link: '/zh/cloud-database/database-ql/quickstart' },\n          { text: wrapGray('新增数据'), link: '/zh/cloud-database/database-ql/add' },\n          { text: wrapGray('查询数据'), link: '/zh/cloud-database/database-ql/find' },\n          { text: wrapGray('更新数据'), link: '/zh/cloud-database/database-ql/update' },\n          { text: wrapGray('删除数据'), link: '/zh/cloud-database/database-ql/del' },\n          { text: wrapGray('数据库操作符'), link: '/zh/cloud-database/database-ql/command' },\n          { text: wrapGray('数据库聚合操作'), link: '/zh/cloud-database/database-ql/aggregate' },\n          { text: wrapGray('数据库运算'), link: '/zh/cloud-database/database-ql/operator' },\n        ]\n      }\n    ],\n  },\n  {\n    text: '云存储',\n    collapsed: false,\n    items: [\n      { text: '云存储简介', link: '/zh/cloud-storage/' },\n      { text: '上传文件', link: '/zh/cloud-storage/upload' },\n      { text: '读取文件', link: '/zh/cloud-storage/read' },\n      { text: '删除文件', link: '/zh/cloud-storage/delete' },\n      { text: '文件列表', link: '/zh/cloud-storage/list' },\n      { text: '生成文件上传地址', link: '/zh/cloud-storage/upload-url' },\n      { text: '生成文件下载地址', link: '/zh/cloud-storage/download-url' },\n      { text: '网站托管', link: '/zh/cloud-storage/website-hosting' },\n      {\n        text: '更多例子',\n        collapsed: true,\n        items: [\n          { text: '微信小程序上传文件', link: '/zh/examples/wxmp-upload' },\n          { text: 'GitHub Action 持续集成网站托管', link: '/zh/examples/website-hosting-ci-cd.md' },\n          { text: 'Web 前端上传文件(TBD)' },\n          { text: '微信小程序上传文件(TBD)' },\n        ]\n      }\n    ],\n  },\n  {\n    text: '工具',\n    items: [{ text: 'laf-cli', link: '/zh/cli/' }],\n  },\n  {\n    text: '其他',\n    items: [\n      { text: 'Laf 迁移到 Sealaf', link: '/zh/other/sealaf-migration' },\n    ],\n  }\n]"
  },
  {
    "path": "docs/Dockerfile",
    "content": "FROM bitnami/openresty:latest\n\nWORKDIR /app\nEXPOSE 8080\n\nADD ./.vitepress/dist /app/\n"
  },
  {
    "path": "docs/en/architecture.md",
    "content": "\n> TBD"
  },
  {
    "path": "docs/en/index.md",
    "content": "\n# Introduction\n\n## 👀 What is `laf`\n\n`laf` is an open-source cloud development platform that offers ready-to-use application resources such as cloud functions, cloud databases, and cloud storage. It allows developers to focus on business development without the need to tinker with servers, enabling them to quickly unleash their creativity.\n\n![dev](./ide.png)\n\n\n## 🖥 Online experience\n\n🎉 [laf.dev](https://laf.dev) Free experience `laf` cloud development.\n\n\n## 🎉 Features of `laf`\n\n- Cloud Functions\n- Cloud Database\n- Cloud Storage\n- WebIDE, Write code like writing a blog\n- Website Hosting\n- WebSocket support\n\n## 👨‍💻 Who uses `laf`?\n\n1. Front-end developers + `laf` = Full-stack developers, transforming front-end developers into true full-stack developers.\n\n   - `laf` provides [laf-client-sdk](https://github.com/labring/laf/tree/main/packages/client-sdk) for front-end developers, suitable for any JavaScript runtime environment.\n   - `laf` allows front-end and back-end code to be developed using JavaScript/TypeScript, eliminating the barrier between them and enabling a quick learning curve.\n   - `laf` offers static website hosting, allowing direct deployment of front-end built web pages without the need for server configuration, nginx, domains, etc.\n   - `laf` will provide SDKs for various client platforms (Flutter/Android/iOS, etc.) in the future, offering backend development services and a consistent development experience for all client developers.\n\n2. Back-end developers can free themselves from trivial tasks and focus on the core business, enhancing development efficiency.\n\n   - `laf` saves effort on server maintenance, multi-environment deployment, and management.\n   - `laf` eliminates the need for configuration and debugging of nginx.\n   - `laf` eliminates the repetitive work of manually deploying databases and addressing security concerns for each project.\n   - `laf` eliminates the tedious iterative experience of \"making changes and taking half a day to publish.\"\n   - `laf` allows you to view function execution logs anytime, anywhere on the web without the need to connect to servers or spend time searching.\n   - `laf` enables you to \"write a function like writing a blog,\" making it easy to publish and invoke functions effortlessly.\n\n3. Cloud development users, if you are a user of other cloud development platforms, `laf` not only provides a more powerful and fast development experience but also prevents vendor lock-in.\n\n   - You can deliver source code to clients and privately deploy a `laf` + your cloud development application. Closed-source cloud development services cannot deliver independently runnable source code.\n   - You can deploy your own product to your servers at any time according to future needs, as `laf` is open-source and free.\n   - You can even modify and customize your own cloud development platform, as `laf` is open-source and highly extensible.\n\n4. Independent developers and startup teams can save costs, start quickly, and focus on their business.\n\n   - Reduce the project development process, start quickly, and shorten the product validation cycle.\n   - Greatly improve iteration speed, adapt to changes at any time, and release updates quickly.\n   - Focus on the core business of the product, quickly launch Minimum Viable Products (MVP), and validate the product and market rapidly.\n   - One person + `laf` = a team.\n\n> life is short, you need laf:)\n\n\n## 🏘️ Community Groups\n\n- [Discord](https://discord.gg/uWZqAwwdvy)\n- [Twitter](https://twitter.com/laf_dev)\n\n## 🌟 Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=labring/laf&type=Date)](https://star-history.com/#labring/laf&Date)\n"
  },
  {
    "path": "docs/package.json",
    "content": "{\n  \"version\": \"1.0.0\",\n  \"name\": \"laf-docs\",\n  \"private\": true,\n  \"scripts\": {\n    \"start\": \"npm run dev\",\n    \"dev\": \"vitepress dev\",\n    \"preinstall\": \"node ./scripts/check-version.js\",\n    \"build\": \"vitepress build\",\n    \"serve\": \"vitepress serve\",\n    \"after-build\": \"sed -i -e \\\"s@</body>@<div style='font-size: 14px; padding-bottom: 30px; color: darkblue;text-align: center;'><a href='https://beian.miit.gov.cn/' target='_blank'>粤ICP备2023048773号</a></div></body>@g\\\" ./.vitepress/dist/index.html\",\n    \"docs:deploy\": \"npm run build && sh ./deploy.sh\",\n    \"docker-build\": \"docker build --platform linux/amd64 -t lafyun/docs:latest .\",\n    \"lint\": \"eslint . --fix --ext .ts --ext .js\",\n    \"docs:dev\": \"vitepress dev\",\n    \"docs:build\": \"vitepress build\",\n    \"docs:preview\": \"vitepress preview\"\n  },\n  \"main\": \"index.js\",\n  \"keywords\": [\n    \"laf\",\n    \"lafyun\",\n    \"laf.run\",\n    \"laf.dev\",\n    \"sealos\",\n    \"laf.js\"\n  ],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"vitepress\": \"^1.0.0-rc.31\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,js}\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "docs/public/CNAME",
    "content": "lafjs.github.io"
  },
  {
    "path": "docs/public/fancybox.css",
    "content": ".carousel{position:relative;box-sizing:border-box}.carousel *,.carousel *:before,.carousel *:after{box-sizing:inherit}.carousel.is-draggable{cursor:move;cursor:grab}.carousel.is-dragging{cursor:move;cursor:grabbing}.carousel__viewport{position:relative;overflow:hidden;max-width:100%;max-height:100%}.carousel__track{display:flex}.carousel__slide{flex:0 0 auto;width:var(--carousel-slide-width, 60%);max-width:100%;padding:1rem;position:relative;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.has-dots{margin-bottom:calc(0.5rem + 22px)}.carousel__dots{margin:0 auto;padding:0;position:absolute;top:calc(100% + 0.5rem);left:0;right:0;display:flex;justify-content:center;list-style:none;user-select:none}.carousel__dots .carousel__dot{margin:0;padding:0;display:block;position:relative;width:22px;height:22px;cursor:pointer}.carousel__dots .carousel__dot:after{content:\"\";width:8px;height:8px;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);background-color:currentColor;opacity:.25;transition:opacity .15s ease-in-out}.carousel__dots .carousel__dot.is-selected:after{opacity:1}.carousel__button{width:var(--carousel-button-width, 48px);height:var(--carousel-button-height, 48px);padding:0;border:0;display:flex;justify-content:center;align-items:center;pointer-events:all;cursor:pointer;color:var(--carousel-button-color, currentColor);background:var(--carousel-button-bg, transparent);border-radius:var(--carousel-button-border-radius, 50%);box-shadow:var(--carousel-button-shadow, none);transition:opacity .15s ease}.carousel__button.is-prev,.carousel__button.is-next{position:absolute;top:50%;transform:translateY(-50%)}.carousel__button.is-prev{left:10px}.carousel__button.is-next{right:10px}.carousel__button[disabled]{cursor:default;opacity:.3}.carousel__button svg{width:var(--carousel-button-svg-width, 50%);height:var(--carousel-button-svg-height, 50%);fill:none;stroke:currentColor;stroke-width:var(--carousel-button-svg-stroke-width, 1.5);stroke-linejoin:bevel;stroke-linecap:round;filter:var(--carousel-button-svg-filter, none);pointer-events:none}html.with-fancybox{scroll-behavior:auto}body.compensate-for-scrollbar{overflow:hidden !important;touch-action:none}.fancybox__container{position:fixed;top:0;left:0;bottom:0;right:0;direction:ltr;margin:0;padding:env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px);box-sizing:border-box;display:flex;flex-direction:column;color:var(--fancybox-color, #fff);-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;z-index:1050;outline:none;transform-origin:top left;--carousel-button-width: 48px;--carousel-button-height: 48px;--carousel-button-svg-width: 24px;--carousel-button-svg-height: 24px;--carousel-button-svg-stroke-width: 2.5;--carousel-button-svg-filter: drop-shadow(1px 1px 1px rgba(0, 0, 0, 0.4))}.fancybox__container *,.fancybox__container *::before,.fancybox__container *::after{box-sizing:inherit}.fancybox__container :focus{outline:none}body:not(.is-using-mouse) .fancybox__container :focus{box-shadow:0 0 0 1px #fff,0 0 0 2px var(--fancybox-accent-color, rgba(1, 210, 232, 0.94))}@media all and (min-width: 1024px){.fancybox__container{--carousel-button-width:48px;--carousel-button-height:48px;--carousel-button-svg-width:27px;--carousel-button-svg-height:27px}}.fancybox__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:var(--fancybox-bg, rgba(24, 24, 27, 0.92))}.fancybox__carousel{position:relative;flex:1 1 auto;min-height:0;height:100%;z-index:10}.fancybox__carousel.has-dots{margin-bottom:calc(0.5rem + 22px)}.fancybox__viewport{position:relative;width:100%;height:100%;overflow:visible;cursor:default}.fancybox__track{display:flex;height:100%}.fancybox__slide{flex:0 0 auto;width:100%;max-width:100%;margin:0;padding:48px 8px 8px 8px;position:relative;overscroll-behavior:contain;display:flex;flex-direction:column;outline:0;overflow:auto;--carousel-button-width: 36px;--carousel-button-height: 36px;--carousel-button-svg-width: 22px;--carousel-button-svg-height: 22px}.fancybox__slide::before,.fancybox__slide::after{content:\"\";flex:0 0 0;margin:auto}@media all and (min-width: 1024px){.fancybox__slide{padding:64px 100px}}.fancybox__content{margin:0 env(safe-area-inset-right, 0px) 0 env(safe-area-inset-left, 0px);padding:36px;color:var(--fancybox-content-color, #374151);background:var(--fancybox-content-bg, #fff);position:relative;align-self:center;display:flex;flex-direction:column;z-index:20}.fancybox__content :focus:not(.carousel__button.is-close){outline:thin dotted;box-shadow:none}.fancybox__caption{align-self:center;max-width:100%;margin:0;padding:1rem 0 0 0;line-height:1.375;color:var(--fancybox-color, currentColor);visibility:visible;cursor:auto;flex-shrink:0;overflow-wrap:anywhere}.is-loading .fancybox__caption{visibility:hidden}.fancybox__container>.carousel__dots{top:100%;color:var(--fancybox-color, #fff)}.fancybox__nav .carousel__button{z-index:40}.fancybox__nav .carousel__button.is-next{right:8px}@media all and (min-width: 1024px){.fancybox__nav .carousel__button.is-next{right:40px}}.fancybox__nav .carousel__button.is-prev{left:8px}@media all and (min-width: 1024px){.fancybox__nav .carousel__button.is-prev{left:40px}}.carousel__button.is-close{position:absolute;top:8px;right:8px;top:calc(env(safe-area-inset-top, 0px) + 8px);right:calc(env(safe-area-inset-right, 0px) + 8px);z-index:40}@media all and (min-width: 1024px){.carousel__button.is-close{right:40px}}.fancybox__content>.carousel__button.is-close{position:absolute;top:-40px;right:0;color:var(--fancybox-color, #fff)}.fancybox__no-click,.fancybox__no-click button{pointer-events:none}.fancybox__spinner{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:50px;height:50px;color:var(--fancybox-color, currentColor)}.fancybox__slide .fancybox__spinner{cursor:pointer;z-index:1053}.fancybox__spinner svg{animation:fancybox-rotate 2s linear infinite;transform-origin:center center;position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:100%;height:100%}.fancybox__spinner svg circle{fill:none;stroke-width:2.75;stroke-miterlimit:10;stroke-dasharray:1,200;stroke-dashoffset:0;animation:fancybox-dash 1.5s ease-in-out infinite;stroke-linecap:round;stroke:currentColor}@keyframes fancybox-rotate{100%{transform:rotate(360deg)}}@keyframes fancybox-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.fancybox__backdrop,.fancybox__caption,.fancybox__nav,.carousel__dots,.carousel__button.is-close{opacity:var(--fancybox-opacity, 1)}.fancybox__container.is-animated[aria-hidden=false] .fancybox__backdrop,.fancybox__container.is-animated[aria-hidden=false] .fancybox__caption,.fancybox__container.is-animated[aria-hidden=false] .fancybox__nav,.fancybox__container.is-animated[aria-hidden=false] .carousel__dots,.fancybox__container.is-animated[aria-hidden=false] .carousel__button.is-close{animation:.15s ease backwards fancybox-fadeIn}.fancybox__container.is-animated.is-closing .fancybox__backdrop,.fancybox__container.is-animated.is-closing .fancybox__caption,.fancybox__container.is-animated.is-closing .fancybox__nav,.fancybox__container.is-animated.is-closing .carousel__dots,.fancybox__container.is-animated.is-closing .carousel__button.is-close{animation:.15s ease both fancybox-fadeOut}.fancybox-fadeIn{animation:.15s ease both fancybox-fadeIn}.fancybox-fadeOut{animation:.1s ease both fancybox-fadeOut}.fancybox-zoomInUp{animation:.2s ease both fancybox-zoomInUp}.fancybox-zoomOutDown{animation:.15s ease both fancybox-zoomOutDown}.fancybox-throwOutUp{animation:.15s ease both fancybox-throwOutUp}.fancybox-throwOutDown{animation:.15s ease both fancybox-throwOutDown}@keyframes fancybox-fadeIn{from{opacity:0}to{opacity:1}}@keyframes fancybox-fadeOut{to{opacity:0}}@keyframes fancybox-zoomInUp{from{transform:scale(0.97) translate3d(0, 16px, 0);opacity:0}to{transform:scale(1) translate3d(0, 0, 0);opacity:1}}@keyframes fancybox-zoomOutDown{to{transform:scale(0.97) translate3d(0, 16px, 0);opacity:0}}@keyframes fancybox-throwOutUp{to{transform:translate3d(0, -30%, 0);opacity:0}}@keyframes fancybox-throwOutDown{to{transform:translate3d(0, 30%, 0);opacity:0}}.fancybox__carousel .carousel__slide{scrollbar-width:thin;scrollbar-color:#ccc rgba(255,255,255,.1)}.fancybox__carousel .carousel__slide::-webkit-scrollbar{width:8px;height:8px}.fancybox__carousel .carousel__slide::-webkit-scrollbar-track{background-color:rgba(255,255,255,.1)}.fancybox__carousel .carousel__slide::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:2px;box-shadow:inset 0 0 4px rgba(0,0,0,.2)}.fancybox__carousel.is-draggable .fancybox__slide,.fancybox__carousel.is-draggable .fancybox__slide .fancybox__content{cursor:move;cursor:grab}.fancybox__carousel.is-dragging .fancybox__slide,.fancybox__carousel.is-dragging .fancybox__slide .fancybox__content{cursor:move;cursor:grabbing}.fancybox__carousel .fancybox__slide .fancybox__content{cursor:auto}.fancybox__carousel .fancybox__slide.can-zoom_in .fancybox__content{cursor:zoom-in}.fancybox__carousel .fancybox__slide.can-zoom_out .fancybox__content{cursor:zoom-out}.fancybox__carousel .fancybox__slide.is-draggable .fancybox__content{cursor:move;cursor:grab}.fancybox__carousel .fancybox__slide.is-dragging .fancybox__content{cursor:move;cursor:grabbing}.fancybox__image{transform-origin:0 0;user-select:none;transition:none}.has-image .fancybox__content{padding:0;background:rgba(0,0,0,0);min-height:1px}.is-closing .has-image .fancybox__content{overflow:visible}.has-image[data-image-fit=contain]{overflow:visible;touch-action:none}.has-image[data-image-fit=contain] .fancybox__content{flex-direction:row;flex-wrap:wrap}.has-image[data-image-fit=contain] .fancybox__image{max-width:100%;max-height:100%;object-fit:contain}.has-image[data-image-fit=contain-w]{overflow-x:hidden;overflow-y:auto}.has-image[data-image-fit=contain-w] .fancybox__content{min-height:auto}.has-image[data-image-fit=contain-w] .fancybox__image{max-width:100%;height:auto}.has-image[data-image-fit=cover]{overflow:visible;touch-action:none}.has-image[data-image-fit=cover] .fancybox__content{width:100%;height:100%}.has-image[data-image-fit=cover] .fancybox__image{width:100%;height:100%;object-fit:cover}.fancybox__carousel .fancybox__slide.has-iframe .fancybox__content,.fancybox__carousel .fancybox__slide.has-map .fancybox__content,.fancybox__carousel .fancybox__slide.has-pdf .fancybox__content,.fancybox__carousel .fancybox__slide.has-video .fancybox__content,.fancybox__carousel .fancybox__slide.has-html5video .fancybox__content{max-width:100%;flex-shrink:1;min-height:1px;overflow:visible}.fancybox__carousel .fancybox__slide.has-iframe .fancybox__content,.fancybox__carousel .fancybox__slide.has-map .fancybox__content,.fancybox__carousel .fancybox__slide.has-pdf .fancybox__content{width:100%;height:80%}.fancybox__carousel .fancybox__slide.has-video .fancybox__content,.fancybox__carousel .fancybox__slide.has-html5video .fancybox__content{width:960px;height:540px;max-width:100%;max-height:100%}.fancybox__carousel .fancybox__slide.has-map .fancybox__content,.fancybox__carousel .fancybox__slide.has-pdf .fancybox__content,.fancybox__carousel .fancybox__slide.has-video .fancybox__content,.fancybox__carousel .fancybox__slide.has-html5video .fancybox__content{padding:0;background:rgba(24,24,27,.9);color:#fff}.fancybox__carousel .fancybox__slide.has-map .fancybox__content{background:#e5e3df}.fancybox__html5video,.fancybox__iframe{border:0;display:block;height:100%;width:100%;background:rgba(0,0,0,0)}.fancybox-placeholder{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.fancybox__thumbs{flex:0 0 auto;position:relative;padding:0px 3px;opacity:var(--fancybox-opacity, 1)}.fancybox__container.is-animated[aria-hidden=false] .fancybox__thumbs{animation:.15s ease-in backwards fancybox-fadeIn}.fancybox__container.is-animated.is-closing .fancybox__thumbs{opacity:0}.fancybox__thumbs .carousel__slide{flex:0 0 auto;width:var(--fancybox-thumbs-width, 96px);margin:0;padding:8px 3px;box-sizing:content-box;display:flex;align-items:center;justify-content:center;overflow:visible;cursor:pointer}.fancybox__thumbs .carousel__slide .fancybox__thumb::after{content:\"\";position:absolute;top:0;left:0;right:0;bottom:0;border-width:5px;border-style:solid;border-color:var(--fancybox-accent-color, rgba(34, 213, 233, 0.96));opacity:0;transition:opacity .15s ease;border-radius:var(--fancybox-thumbs-border-radius, 4px)}.fancybox__thumbs .carousel__slide.is-nav-selected .fancybox__thumb::after{opacity:.92}.fancybox__thumbs .carousel__slide>*{pointer-events:none;user-select:none}.fancybox__thumb{position:relative;width:100%;padding-top:calc(100%/(var(--fancybox-thumbs-ratio, 1.5)));background-size:cover;background-position:center center;background-color:rgba(255,255,255,.1);background-repeat:no-repeat;border-radius:var(--fancybox-thumbs-border-radius, 4px)}.fancybox__toolbar{position:absolute;top:0;right:0;left:0;z-index:20;background:linear-gradient(to top, hsla(0deg, 0%, 0%, 0) 0%, hsla(0deg, 0%, 0%, 0.006) 8.1%, hsla(0deg, 0%, 0%, 0.021) 15.5%, hsla(0deg, 0%, 0%, 0.046) 22.5%, hsla(0deg, 0%, 0%, 0.077) 29%, hsla(0deg, 0%, 0%, 0.114) 35.3%, hsla(0deg, 0%, 0%, 0.155) 41.2%, hsla(0deg, 0%, 0%, 0.198) 47.1%, hsla(0deg, 0%, 0%, 0.242) 52.9%, hsla(0deg, 0%, 0%, 0.285) 58.8%, hsla(0deg, 0%, 0%, 0.326) 64.7%, hsla(0deg, 0%, 0%, 0.363) 71%, hsla(0deg, 0%, 0%, 0.394) 77.5%, hsla(0deg, 0%, 0%, 0.419) 84.5%, hsla(0deg, 0%, 0%, 0.434) 91.9%, hsla(0deg, 0%, 0%, 0.44) 100%);padding:0;touch-action:none;display:flex;justify-content:space-between;--carousel-button-svg-width: 20px;--carousel-button-svg-height: 20px;opacity:var(--fancybox-opacity, 1);text-shadow:var(--fancybox-toolbar-text-shadow, 1px 1px 1px rgba(0, 0, 0, 0.4))}@media all and (min-width: 1024px){.fancybox__toolbar{padding:8px}}.fancybox__container.is-animated[aria-hidden=false] .fancybox__toolbar{animation:.15s ease-in backwards fancybox-fadeIn}.fancybox__container.is-animated.is-closing .fancybox__toolbar{opacity:0}.fancybox__toolbar__items{display:flex}.fancybox__toolbar__items--left{margin-right:auto}.fancybox__toolbar__items--center{position:absolute;left:50%;transform:translateX(-50%)}.fancybox__toolbar__items--right{margin-left:auto}@media(max-width: 640px){.fancybox__toolbar__items--center:not(:last-child){display:none}}.fancybox__counter{min-width:72px;padding:0 10px;line-height:var(--carousel-button-height, 48px);text-align:center;font-size:17px;font-variant-numeric:tabular-nums;-webkit-font-smoothing:subpixel-antialiased}.fancybox__progress{background:var(--fancybox-accent-color, rgba(34, 213, 233, 0.96));height:3px;left:0;position:absolute;right:0;top:0;transform:scaleX(0);transform-origin:0;transition-property:transform;transition-timing-function:linear;z-index:30;user-select:none}.fancybox__container:fullscreen::backdrop{opacity:0}.fancybox__button--fullscreen g:nth-child(2){display:none}.fancybox__container:fullscreen .fancybox__button--fullscreen g:nth-child(1){display:none}.fancybox__container:fullscreen .fancybox__button--fullscreen g:nth-child(2){display:block}.fancybox__button--slideshow g:nth-child(2){display:none}.fancybox__container.has-slideshow .fancybox__button--slideshow g:nth-child(1){display:none}.fancybox__container.has-slideshow .fancybox__button--slideshow g:nth-child(2){display:block}"
  },
  {
    "path": "docs/public/fancybox.umd.js",
    "content": "// @fancyapps/ui/Fancybox v4.0.31\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((t=\"undefined\"!=typeof globalThis?globalThis:t||self).window=t.window||{})}(this,(function(t){\"use strict\";function e(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,n)}return i}function i(t){for(var i=1;i<arguments.length;i++){var n=null!=arguments[i]?arguments[i]:{};i%2?e(Object(n),!0).forEach((function(e){r(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):e(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function n(t){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n(t)}function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function a(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function s(t,e,i){return e&&a(t.prototype,e),i&&a(t,i),Object.defineProperty(t,\"prototype\",{writable:!1}),t}function r(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function l(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&h(t,e)}function c(t){return c=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},c(t)}function h(t,e){return h=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},h(t,e)}function d(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}function u(t,e){if(e&&(\"object\"==typeof e||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return d(t)}function f(t){var e=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=c(t);if(e){var o=c(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return u(this,i)}}function v(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=c(t)););return t}function p(){return p=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,i){var n=v(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(arguments.length<3?t:i):o.value}},p.apply(this,arguments)}function g(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var i=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null==i)return;var n,o,a=[],s=!0,r=!1;try{for(i=i.call(t);!(s=(n=i.next()).done)&&(a.push(n.value),!e||a.length!==e);s=!0);}catch(t){r=!0,o=t}finally{try{s||null==i.return||i.return()}finally{if(r)throw o}}return a}(t,e)||y(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function m(t){return function(t){if(Array.isArray(t))return b(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(t)||y(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function y(t,e){if(t){if(\"string\"==typeof t)return b(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===i&&t.constructor&&(i=t.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(t):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?b(t,e):void 0}}function b(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i<e;i++)n[i]=t[i];return n}function x(t,e){var i=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!i){if(Array.isArray(t)||(i=y(t))||e&&t&&\"number\"==typeof t.length){i&&(t=i);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,s=!0,r=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){r=!0,a=t},f:function(){try{s||null==i.return||i.return()}finally{if(r)throw a}}}}var w=function(t){return\"object\"===n(t)&&null!==t&&t.constructor===Object&&\"[object Object]\"===Object.prototype.toString.call(t)},k=function t(){for(var e=!1,i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];\"boolean\"==typeof o[0]&&(e=o.shift());var s=o[0];if(!s||\"object\"!==n(s))throw new Error(\"extendee must be an object\");for(var r=o.slice(1),l=r.length,c=0;c<l;c++){var h=r[c];for(var d in h)if(h.hasOwnProperty(d)){var u=h[d];if(e&&(Array.isArray(u)||w(u))){var f=Array.isArray(u)?[]:{};s[d]=t(!0,s.hasOwnProperty(d)?s[d]:f,u)}else s[d]=u}}return s},S=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e4;return t=parseFloat(t)||0,Math.round((t+Number.EPSILON)*e)/e},C=function t(e){return!!(e&&\"object\"===n(e)&&e instanceof Element&&e!==document.body)&&(!e.__Panzoom&&(function(t){var e=getComputedStyle(t)[\"overflow-y\"],i=getComputedStyle(t)[\"overflow-x\"],n=(\"scroll\"===e||\"auto\"===e)&&Math.abs(t.scrollHeight-t.clientHeight)>1,o=(\"scroll\"===i||\"auto\"===i)&&Math.abs(t.scrollWidth-t.clientWidth)>1;return n||o}(e)?e:t(e.parentNode)))},$=\"undefined\"!=typeof window&&window.ResizeObserver||function(){function t(e){o(this,t),this.observables=[],this.boundCheck=this.check.bind(this),this.boundCheck(),this.callback=e}return s(t,[{key:\"observe\",value:function(t){if(!this.observables.some((function(e){return e.el===t}))){var e={el:t,size:{height:t.clientHeight,width:t.clientWidth}};this.observables.push(e)}}},{key:\"unobserve\",value:function(t){this.observables=this.observables.filter((function(e){return e.el!==t}))}},{key:\"disconnect\",value:function(){this.observables=[]}},{key:\"check\",value:function(){var t=this.observables.filter((function(t){var e=t.el.clientHeight,i=t.el.clientWidth;if(t.size.height!==e||t.size.width!==i)return t.size.height=e,t.size.width=i,!0})).map((function(t){return t.el}));t.length>0&&this.callback(t),window.requestAnimationFrame(this.boundCheck)}}]),t}(),E=s((function t(e){o(this,t),this.id=self.Touch&&e instanceof Touch?e.identifier:-1,this.pageX=e.pageX,this.pageY=e.pageY,this.clientX=e.clientX,this.clientY=e.clientY})),P=function(t,e){return e?Math.sqrt(Math.pow(e.clientX-t.clientX,2)+Math.pow(e.clientY-t.clientY,2)):0},T=function(t,e){return e?{clientX:(t.clientX+e.clientX)/2,clientY:(t.clientY+e.clientY)/2}:t},L=function(t){return\"changedTouches\"in t},_=function(){function t(e){var i=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=n.start,s=void 0===a?function(){return!0}:a,r=n.move,l=void 0===r?function(){}:r,c=n.end,h=void 0===c?function(){}:c;o(this,t),this._element=e,this.startPointers=[],this.currentPointers=[],this._pointerStart=function(t){if(!(t.buttons>0&&0!==t.button)){var e=new E(t);i.currentPointers.some((function(t){return t.id===e.id}))||i._triggerPointerStart(e,t)&&(window.addEventListener(\"mousemove\",i._move),window.addEventListener(\"mouseup\",i._pointerEnd))}},this._touchStart=function(t){for(var e=0,n=Array.from(t.changedTouches||[]);e<n.length;e++){var o=n[e];i._triggerPointerStart(new E(o),t)}},this._move=function(t){var e,n=i.currentPointers.slice(),o=L(t)?Array.from(t.changedTouches).map((function(t){return new E(t)})):[new E(t)],a=[],s=x(o);try{var r=function(){var t=e.value,n=i.currentPointers.findIndex((function(e){return e.id===t.id}));if(n<0)return\"continue\";a.push(t),i.currentPointers[n]=t};for(s.s();!(e=s.n()).done;)r()}catch(t){s.e(t)}finally{s.f()}i._moveCallback(n,i.currentPointers.slice(),t)},this._triggerPointerEnd=function(t,e){var n=i.currentPointers.findIndex((function(e){return e.id===t.id}));return!(n<0)&&(i.currentPointers.splice(n,1),i.startPointers.splice(n,1),i._endCallback(t,e),!0)},this._pointerEnd=function(t){t.buttons>0&&0!==t.button||i._triggerPointerEnd(new E(t),t)&&(window.removeEventListener(\"mousemove\",i._move,{passive:!1}),window.removeEventListener(\"mouseup\",i._pointerEnd,{passive:!1}))},this._touchEnd=function(t){for(var e=0,n=Array.from(t.changedTouches||[]);e<n.length;e++){var o=n[e];i._triggerPointerEnd(new E(o),t)}},this._startCallback=s,this._moveCallback=l,this._endCallback=h,this._element.addEventListener(\"mousedown\",this._pointerStart,{passive:!1}),this._element.addEventListener(\"touchstart\",this._touchStart,{passive:!1}),this._element.addEventListener(\"touchmove\",this._move,{passive:!1}),this._element.addEventListener(\"touchend\",this._touchEnd),this._element.addEventListener(\"touchcancel\",this._touchEnd)}return s(t,[{key:\"stop\",value:function(){this._element.removeEventListener(\"mousedown\",this._pointerStart,{passive:!1}),this._element.removeEventListener(\"touchstart\",this._touchStart,{passive:!1}),this._element.removeEventListener(\"touchmove\",this._move,{passive:!1}),this._element.removeEventListener(\"touchend\",this._touchEnd),this._element.removeEventListener(\"touchcancel\",this._touchEnd),window.removeEventListener(\"mousemove\",this._move),window.removeEventListener(\"mouseup\",this._pointerEnd)}},{key:\"_triggerPointerStart\",value:function(t,e){return!!this._startCallback(t,e)&&(this.currentPointers.push(t),this.startPointers.push(t),!0)}}]),t}(),A=function(t,e){return t.split(\".\").reduce((function(t,e){return t&&t[e]}),e)},O=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o(this,t),this.options=k(!0,{},e),this.plugins=[],this.events={};for(var i=0,n=[\"on\",\"once\"];i<n.length;i++)for(var a=n[i],s=0,r=Object.entries(this.options[a]||{});s<r.length;s++){var l=r[s];this[a].apply(this,m(l))}}return s(t,[{key:\"option\",value:function(t,e){t=String(t);var i=A(t,this.options);if(\"function\"==typeof i){for(var n,o=arguments.length,a=new Array(o>2?o-2:0),s=2;s<o;s++)a[s-2]=arguments[s];i=(n=i).call.apply(n,[this,this].concat(a))}return void 0===i?e:i}},{key:\"localize\",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t=(t=String(t).replace(/\\{\\{(\\w+).?(\\w+)?\\}\\}/g,(function(t,n,o){var a=\"\";o?a=e.option(\"\".concat(n[0]+n.toLowerCase().substring(1),\".l10n.\").concat(o)):n&&(a=e.option(\"l10n.\".concat(n))),a||(a=t);for(var s=0;s<i.length;s++)a=a.split(i[s][0]).join(i[s][1]);return a}))).replace(/\\{\\{(.*)\\}\\}/,(function(t,e){return e}))}},{key:\"on\",value:function(t,e){var i=this;if(w(t)){for(var n=0,o=Object.entries(t);n<o.length;n++){var a=o[n];this.on.apply(this,m(a))}return this}return String(t).split(\" \").forEach((function(t){var n=i.events[t]=i.events[t]||[];-1==n.indexOf(e)&&n.push(e)})),this}},{key:\"once\",value:function(t,e){var i=this;if(w(t)){for(var n=0,o=Object.entries(t);n<o.length;n++){var a=o[n];this.once.apply(this,m(a))}return this}return String(t).split(\" \").forEach((function(t){var n=function n(){i.off(t,n);for(var o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];e.call.apply(e,[i,i].concat(a))};n._=e,i.on(t,n)})),this}},{key:\"off\",value:function(t,e){var i=this;if(!w(t))return t.split(\" \").forEach((function(t){var n=i.events[t];if(!n||!n.length)return i;for(var o=-1,a=0,s=n.length;a<s;a++){var r=n[a];if(r&&(r===e||r._===e)){o=a;break}}-1!=o&&n.splice(o,1)})),this;for(var n=0,o=Object.entries(t);n<o.length;n++){var a=o[n];this.off.apply(this,m(a))}}},{key:\"trigger\",value:function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),n=1;n<e;n++)i[n-1]=arguments[n];var o,a=x(m(this.events[t]||[]).slice());try{for(a.s();!(o=a.n()).done;){var s=o.value;if(s&&!1===s.call.apply(s,[this,this].concat(i)))return!1}}catch(t){a.e(t)}finally{a.f()}var r,l=x(m(this.events[\"*\"]||[]).slice());try{for(l.s();!(r=l.n()).done;){var c=r.value;if(c&&!1===c.call.apply(c,[this,t,this].concat(i)))return!1}}catch(t){l.e(t)}finally{l.f()}return!0}},{key:\"attachPlugins\",value:function(t){for(var e={},i=0,n=Object.entries(t||{});i<n.length;i++){var o=g(n[i],2),a=o[0],s=o[1];!1===this.options[a]||this.plugins[a]||(this.options[a]=k({},s.defaults||{},this.options[a]),e[a]=new s(this))}for(var r=0,l=Object.entries(e);r<l.length;r++){var c=g(l[r],2);c[0],c[1].attach(this)}return this.plugins=Object.assign({},this.plugins,e),this}},{key:\"detachPlugins\",value:function(){for(var t in this.plugins){var e=void 0;(e=this.plugins[t])&&\"function\"==typeof e.detach&&e.detach(this)}return this.plugins={},this}}]),t}(),z={touch:!0,zoom:!0,pinchToZoom:!0,panOnlyZoomed:!1,lockAxis:!1,friction:.64,decelFriction:.88,zoomFriction:.74,bounceForce:.2,baseScale:1,minScale:1,maxScale:2,step:.5,textSelection:!1,click:\"toggleZoom\",wheel:\"zoom\",wheelFactor:42,wheelLimit:5,draggableClass:\"is-draggable\",draggingClass:\"is-dragging\",ratio:1},M=function(t){l(n,t);var e=f(n);function n(t){var i,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};o(this,n),(i=e.call(this,k(!0,{},z,a))).state=\"init\",i.$container=t;for(var s=0,r=[\"onLoad\",\"onWheel\",\"onClick\"];s<r.length;s++){var l=r[s];i[l]=i[l].bind(d(i))}return i.initLayout(),i.resetValues(),i.attachPlugins(n.Plugins),i.trigger(\"init\"),i.updateMetrics(),i.attachEvents(),i.trigger(\"ready\"),!1===i.option(\"centerOnStart\")?i.state=\"ready\":i.panTo({friction:0}),t.__Panzoom=d(i),i}return s(n,[{key:\"initLayout\",value:function(){var t=this.$container;if(!(t instanceof HTMLElement))throw new Error(\"Panzoom: Container not found\");var e=this.option(\"content\")||t.querySelector(\".panzoom__content\");if(!e)throw new Error(\"Panzoom: Content not found\");this.$content=e;var i,n=this.option(\"viewport\")||t.querySelector(\".panzoom__viewport\");n||!1===this.option(\"wrapInner\")||((n=document.createElement(\"div\")).classList.add(\"panzoom__viewport\"),(i=n).append.apply(i,m(t.childNodes)),t.appendChild(n));this.$viewport=n||e.parentNode}},{key:\"resetValues\",value:function(){this.updateRate=this.option(\"updateRate\",/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)?250:24),this.container={width:0,height:0},this.viewport={width:0,height:0},this.content={origWidth:0,origHeight:0,width:0,height:0,x:this.option(\"x\",0),y:this.option(\"y\",0),scale:this.option(\"baseScale\")},this.transform={x:0,y:0,scale:1},this.resetDragPosition()}},{key:\"onLoad\",value:function(t){this.updateMetrics(),this.panTo({scale:this.option(\"baseScale\"),friction:0}),this.trigger(\"load\",t)}},{key:\"onClick\",value:function(t){if(!(t.defaultPrevented||document.activeElement&&document.activeElement.closest(\"[contenteditable]\")))if(!this.option(\"textSelection\")||!window.getSelection().toString().length||t.target&&t.target.hasAttribute(\"data-fancybox-close\")){var e=this.$content.getClientRects()[0];if(\"ready\"!==this.state&&(this.dragPosition.midPoint||Math.abs(e.top-this.dragStart.rect.top)>1||Math.abs(e.left-this.dragStart.rect.left)>1))return t.preventDefault(),void t.stopPropagation();!1!==this.trigger(\"click\",t)&&this.option(\"zoom\")&&\"toggleZoom\"===this.option(\"click\")&&(t.preventDefault(),t.stopPropagation(),this.zoomWithClick(t))}else t.stopPropagation()}},{key:\"onWheel\",value:function(t){!1!==this.trigger(\"wheel\",t)&&this.option(\"zoom\")&&this.option(\"wheel\")&&this.zoomWithWheel(t)}},{key:\"zoomWithWheel\",value:function(t){void 0===this.changedDelta&&(this.changedDelta=0);var e=Math.max(-1,Math.min(1,-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)),i=this.content.scale,n=i*(100+e*this.option(\"wheelFactor\"))/100;if(e<0&&Math.abs(i-this.option(\"minScale\"))<.01||e>0&&Math.abs(i-this.option(\"maxScale\"))<.01?(this.changedDelta+=Math.abs(e),n=i):(this.changedDelta=0,n=Math.max(Math.min(n,this.option(\"maxScale\")),this.option(\"minScale\"))),!(this.changedDelta>this.option(\"wheelLimit\"))&&(t.preventDefault(),n!==i)){var o=this.$content.getBoundingClientRect(),a=t.clientX-o.left,s=t.clientY-o.top;this.zoomTo(n,{x:a,y:s})}}},{key:\"zoomWithClick\",value:function(t){var e=this.$content.getClientRects()[0],i=t.clientX-e.left,n=t.clientY-e.top;this.toggleZoom({x:i,y:n})}},{key:\"attachEvents\",value:function(){var t=this;this.$content.addEventListener(\"load\",this.onLoad),this.$container.addEventListener(\"wheel\",this.onWheel,{passive:!1}),this.$container.addEventListener(\"click\",this.onClick,{passive:!1}),this.initObserver();var e=new _(this.$container,{start:function(i,n){if(!t.option(\"touch\"))return!1;if(t.velocity.scale<0)return!1;var o=n.composedPath()[0];if(!e.currentPointers.length){if(-1!==[\"BUTTON\",\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\"].indexOf(o.nodeName))return!1;if(t.option(\"textSelection\")&&function(t,e,i){for(var n=t.childNodes,o=document.createRange(),a=0;a<n.length;a++){var s=n[a];if(s.nodeType===Node.TEXT_NODE){o.selectNodeContents(s);var r=o.getBoundingClientRect();if(e>=r.left&&i>=r.top&&e<=r.right&&i<=r.bottom)return s}}return!1}(o,i.clientX,i.clientY))return!1}return!C(o)&&(!1!==t.trigger(\"touchStart\",n)&&(\"mousedown\"===n.type&&n.preventDefault(),t.state=\"pointerdown\",t.resetDragPosition(),t.dragPosition.midPoint=null,t.dragPosition.time=Date.now(),!0))},move:function(i,n,o){if(\"pointerdown\"===t.state)if(!1!==t.trigger(\"touchMove\",o)){if(!(n.length<2&&!0===t.option(\"panOnlyZoomed\")&&t.content.width<=t.viewport.width&&t.content.height<=t.viewport.height&&t.transform.scale<=t.option(\"baseScale\"))&&(!(n.length>1)||t.option(\"zoom\")&&!1!==t.option(\"pinchToZoom\"))){var a=T(i[0],i[1]),s=T(n[0],n[1]),r=s.clientX-a.clientX,l=s.clientY-a.clientY,c=P(i[0],i[1]),h=P(n[0],n[1]),d=c&&h?h/c:1;t.dragOffset.x+=r,t.dragOffset.y+=l,t.dragOffset.scale*=d,t.dragOffset.time=Date.now()-t.dragPosition.time;var u=1===t.dragStart.scale&&t.option(\"lockAxis\");if(u&&!t.lockAxis){if(Math.abs(t.dragOffset.x)<6&&Math.abs(t.dragOffset.y)<6)return void o.preventDefault();var f=Math.abs(180*Math.atan2(t.dragOffset.y,t.dragOffset.x)/Math.PI);t.lockAxis=f>45&&f<135?\"y\":\"x\"}if(\"xy\"===u||\"y\"!==t.lockAxis){if(o.preventDefault(),o.stopPropagation(),o.stopImmediatePropagation(),t.lockAxis&&(t.dragOffset[\"x\"===t.lockAxis?\"y\":\"x\"]=0),t.$container.classList.add(t.option(\"draggingClass\")),t.transform.scale===t.option(\"baseScale\")&&\"y\"===t.lockAxis||(t.dragPosition.x=t.dragStart.x+t.dragOffset.x),t.transform.scale===t.option(\"baseScale\")&&\"x\"===t.lockAxis||(t.dragPosition.y=t.dragStart.y+t.dragOffset.y),t.dragPosition.scale=t.dragStart.scale*t.dragOffset.scale,n.length>1){var v=T(e.startPointers[0],e.startPointers[1]),p=v.clientX-t.dragStart.rect.x,g=v.clientY-t.dragStart.rect.y,m=t.getZoomDelta(t.content.scale*t.dragOffset.scale,p,g),y=m.deltaX,b=m.deltaY;t.dragPosition.x-=y,t.dragPosition.y-=b,t.dragPosition.midPoint=s}else t.setDragResistance();t.transform={x:t.dragPosition.x,y:t.dragPosition.y,scale:t.dragPosition.scale},t.startAnimation()}}}else o.preventDefault()},end:function(n,o){if(\"pointerdown\"===t.state)if(t._dragOffset=i({},t.dragOffset),e.currentPointers.length)t.resetDragPosition();else if(t.state=\"decel\",t.friction=t.option(\"decelFriction\"),t.recalculateTransform(),t.$container.classList.remove(t.option(\"draggingClass\")),!1!==t.trigger(\"touchEnd\",o)&&\"decel\"===t.state){var a=t.option(\"minScale\");if(t.transform.scale<a)t.zoomTo(a,{friction:.64});else{var s=t.option(\"maxScale\");if(t.transform.scale-s>.01){var r=t.dragPosition.midPoint||n,l=t.$content.getClientRects()[0];t.zoomTo(s,{friction:.64,x:r.clientX-l.left,y:r.clientY-l.top})}else;}}}});this.pointerTracker=e}},{key:\"initObserver\",value:function(){var t=this;this.resizeObserver||(this.resizeObserver=new $((function(){t.updateTimer||(t.updateTimer=setTimeout((function(){var e=t.$container.getBoundingClientRect();e.width&&e.height?((Math.abs(e.width-t.container.width)>1||Math.abs(e.height-t.container.height)>1)&&(t.isAnimating()&&t.endAnimation(!0),t.updateMetrics(),t.panTo({x:t.content.x,y:t.content.y,scale:t.option(\"baseScale\"),friction:0})),t.updateTimer=null):t.updateTimer=null}),t.updateRate))})),this.resizeObserver.observe(this.$container))}},{key:\"resetDragPosition\",value:function(){this.lockAxis=null,this.friction=this.option(\"friction\"),this.velocity={x:0,y:0,scale:0};var t=this.content,e=t.x,n=t.y,o=t.scale;this.dragStart={rect:this.$content.getBoundingClientRect(),x:e,y:n,scale:o},this.dragPosition=i(i({},this.dragPosition),{},{x:e,y:n,scale:o}),this.dragOffset={x:0,y:0,scale:1,time:0}}},{key:\"updateMetrics\",value:function(t){!0!==t&&this.trigger(\"beforeUpdate\");var e,n=this.$container,o=this.$content,a=this.$viewport,s=o instanceof HTMLImageElement,r=this.option(\"zoom\"),l=this.option(\"resizeParent\",r),c=this.option(\"width\"),h=this.option(\"height\"),d=c||(e=o,Math.max(parseFloat(e.naturalWidth||0),parseFloat(e.width&&e.width.baseVal&&e.width.baseVal.value||0),parseFloat(e.offsetWidth||0),parseFloat(e.scrollWidth||0))),u=h||function(t){return Math.max(parseFloat(t.naturalHeight||0),parseFloat(t.height&&t.height.baseVal&&t.height.baseVal.value||0),parseFloat(t.offsetHeight||0),parseFloat(t.scrollHeight||0))}(o);Object.assign(o.style,{width:c?\"\".concat(c,\"px\"):\"\",height:h?\"\".concat(h,\"px\"):\"\",maxWidth:\"\",maxHeight:\"\"}),l&&Object.assign(a.style,{width:\"\",height:\"\"});var f=this.option(\"ratio\");c=d=S(d*f),h=u=S(u*f);var v=o.getBoundingClientRect(),p=a.getBoundingClientRect(),g=a==n?p:n.getBoundingClientRect(),m=Math.max(a.offsetWidth,S(p.width)),y=Math.max(a.offsetHeight,S(p.height)),b=window.getComputedStyle(a);if(m-=parseFloat(b.paddingLeft)+parseFloat(b.paddingRight),y-=parseFloat(b.paddingTop)+parseFloat(b.paddingBottom),this.viewport.width=m,this.viewport.height=y,r){if(Math.abs(d-v.width)>.1||Math.abs(u-v.height)>.1){var x=function(t,e,i,n){var o=Math.min(i/t||0,n/e);return{width:t*o||0,height:e*o||0}}(d,u,Math.min(d,v.width),Math.min(u,v.height));c=S(x.width),h=S(x.height)}Object.assign(o.style,{width:\"\".concat(c,\"px\"),height:\"\".concat(h,\"px\"),transform:\"\"})}if(l&&(Object.assign(a.style,{width:\"\".concat(c,\"px\"),height:\"\".concat(h,\"px\")}),this.viewport=i(i({},this.viewport),{},{width:c,height:h})),s&&r&&\"function\"!=typeof this.options.maxScale){var w=this.option(\"maxScale\");this.options.maxScale=function(){return this.content.origWidth>0&&this.content.fitWidth>0?this.content.origWidth/this.content.fitWidth:w}}this.content=i(i({},this.content),{},{origWidth:d,origHeight:u,fitWidth:c,fitHeight:h,width:c,height:h,scale:1,isZoomable:r}),this.container={width:g.width,height:g.height},!0!==t&&this.trigger(\"afterUpdate\")}},{key:\"zoomIn\",value:function(t){this.zoomTo(this.content.scale+(t||this.option(\"step\")))}},{key:\"zoomOut\",value:function(t){this.zoomTo(this.content.scale-(t||this.option(\"step\")))}},{key:\"toggleZoom\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.option(\"maxScale\"),i=this.option(\"baseScale\"),n=this.content.scale>i+.5*(e-i)?i:e;this.zoomTo(n,t)}},{key:\"zoomTo\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.option(\"baseScale\"),e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=e.x,n=void 0===i?null:i,o=e.y,a=void 0===o?null:o;t=Math.max(Math.min(t,this.option(\"maxScale\")),this.option(\"minScale\"));var s=S(this.content.scale/(this.content.width/this.content.fitWidth),1e7);null===n&&(n=this.content.width*s*.5),null===a&&(a=this.content.height*s*.5);var r=this.getZoomDelta(t,n,a),l=r.deltaX,c=r.deltaY;n=this.content.x-l,a=this.content.y-c,this.panTo({x:n,y:a,scale:t,friction:this.option(\"zoomFriction\")})}},{key:\"getZoomDelta\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=this.content.fitWidth*this.content.scale,o=this.content.fitHeight*this.content.scale,a=e>0&&n?e/n:0,s=i>0&&o?i/o:0,r=this.content.fitWidth*t,l=this.content.fitHeight*t,c=(r-n)*a,h=(l-o)*s;return{deltaX:c,deltaY:h}}},{key:\"panTo\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.x,n=void 0===e?this.content.x:e,o=t.y,a=void 0===o?this.content.y:o,s=t.scale,r=t.friction,l=void 0===r?this.option(\"friction\"):r,c=t.ignoreBounds,h=void 0!==c&&c;if(s=s||this.content.scale||1,!h){var d=this.getBounds(s),u=d.boundX,f=d.boundY;u&&(n=Math.max(Math.min(n,u.to),u.from)),f&&(a=Math.max(Math.min(a,f.to),f.from))}this.friction=l,this.transform=i(i({},this.transform),{},{x:n,y:a,scale:s}),l?(this.state=\"panning\",this.velocity={x:(1/this.friction-1)*(n-this.content.x),y:(1/this.friction-1)*(a-this.content.y),scale:(1/this.friction-1)*(s-this.content.scale)},this.startAnimation()):this.endAnimation()}},{key:\"startAnimation\",value:function(){var t=this;this.rAF?cancelAnimationFrame(this.rAF):this.trigger(\"startAnimation\"),this.rAF=requestAnimationFrame((function(){return t.animate()}))}},{key:\"animate\",value:function(){var t=this;if(this.setEdgeForce(),this.setDragForce(),this.velocity.x*=this.friction,this.velocity.y*=this.friction,this.velocity.scale*=this.friction,this.content.x+=this.velocity.x,this.content.y+=this.velocity.y,this.content.scale+=this.velocity.scale,this.isAnimating())this.setTransform();else if(\"pointerdown\"!==this.state)return void this.endAnimation();this.rAF=requestAnimationFrame((function(){return t.animate()}))}},{key:\"getBounds\",value:function(t){var e=this.boundX,i=this.boundY;if(void 0!==e&&void 0!==i)return{boundX:e,boundY:i};e={from:0,to:0},i={from:0,to:0},t=t||this.transform.scale;var n=this.content.fitWidth*t,o=this.content.fitHeight*t,a=this.viewport.width,s=this.viewport.height;if(n<a){var r=S(.5*(a-n));e.from=r,e.to=r}else e.from=S(a-n);if(o<s){var l=.5*(s-o);i.from=l,i.to=l}else i.from=S(s-o);return{boundX:e,boundY:i}}},{key:\"setEdgeForce\",value:function(){if(\"decel\"===this.state){var t,e,i,n,o=this.option(\"bounceForce\"),a=this.getBounds(Math.max(this.transform.scale,this.content.scale)),s=a.boundX,r=a.boundY;if(s&&(t=this.content.x<s.from,e=this.content.x>s.to),r&&(i=this.content.y<r.from,n=this.content.y>r.to),t||e){var l=((t?s.from:s.to)-this.content.x)*o,c=this.content.x+(this.velocity.x+l)/this.friction;c>=s.from&&c<=s.to&&(l+=this.velocity.x),this.velocity.x=l,this.recalculateTransform()}if(i||n){var h=((i?r.from:r.to)-this.content.y)*o,d=this.content.y+(h+this.velocity.y)/this.friction;d>=r.from&&d<=r.to&&(h+=this.velocity.y),this.velocity.y=h,this.recalculateTransform()}}}},{key:\"setDragResistance\",value:function(){if(\"pointerdown\"===this.state){var t,e,i,n,o=this.getBounds(this.dragPosition.scale),a=o.boundX,s=o.boundY;if(a&&(t=this.dragPosition.x<a.from,e=this.dragPosition.x>a.to),s&&(i=this.dragPosition.y<s.from,n=this.dragPosition.y>s.to),(t||e)&&(!t||!e)){var r=t?a.from:a.to,l=r-this.dragPosition.x;this.dragPosition.x=r-.3*l}if((i||n)&&(!i||!n)){var c=i?s.from:s.to,h=c-this.dragPosition.y;this.dragPosition.y=c-.3*h}}}},{key:\"setDragForce\",value:function(){\"pointerdown\"===this.state&&(this.velocity.x=this.dragPosition.x-this.content.x,this.velocity.y=this.dragPosition.y-this.content.y,this.velocity.scale=this.dragPosition.scale-this.content.scale)}},{key:\"recalculateTransform\",value:function(){this.transform.x=this.content.x+this.velocity.x/(1/this.friction-1),this.transform.y=this.content.y+this.velocity.y/(1/this.friction-1),this.transform.scale=this.content.scale+this.velocity.scale/(1/this.friction-1)}},{key:\"isAnimating\",value:function(){return!(!this.friction||!(Math.abs(this.velocity.x)>.05||Math.abs(this.velocity.y)>.05||Math.abs(this.velocity.scale)>.05))}},{key:\"setTransform\",value:function(t){var e,n,o,a,s;(t?(e=S(this.transform.x),n=S(this.transform.y),o=this.transform.scale,this.content=i(i({},this.content),{},{x:e,y:n,scale:o})):(e=S(this.content.x),n=S(this.content.y),o=this.content.scale/(this.content.width/this.content.fitWidth),this.content=i(i({},this.content),{},{x:e,y:n})),this.trigger(\"beforeTransform\"),e=S(this.content.x),n=S(this.content.y),t&&this.option(\"zoom\"))?(a=S(this.content.fitWidth*o),s=S(this.content.fitHeight*o),this.content.width=a,this.content.height=s,this.transform=i(i({},this.transform),{},{width:a,height:s,scale:o}),Object.assign(this.$content.style,{width:\"\".concat(a,\"px\"),height:\"\".concat(s,\"px\"),maxWidth:\"none\",maxHeight:\"none\",transform:\"translate3d(\".concat(e,\"px, \").concat(n,\"px, 0) scale(1)\")})):this.$content.style.transform=\"translate3d(\".concat(e,\"px, \").concat(n,\"px, 0) scale(\").concat(o,\")\");this.trigger(\"afterTransform\")}},{key:\"endAnimation\",value:function(t){cancelAnimationFrame(this.rAF),this.rAF=null,this.velocity={x:0,y:0,scale:0},this.setTransform(!0),this.state=\"ready\",this.handleCursor(),!0!==t&&this.trigger(\"endAnimation\")}},{key:\"handleCursor\",value:function(){var t=this.option(\"draggableClass\");t&&this.option(\"touch\")&&(1==this.option(\"panOnlyZoomed\")&&this.content.width<=this.viewport.width&&this.content.height<=this.viewport.height&&this.transform.scale<=this.option(\"baseScale\")?this.$container.classList.remove(t):this.$container.classList.add(t))}},{key:\"detachEvents\",value:function(){this.$content.removeEventListener(\"load\",this.onLoad),this.$container.removeEventListener(\"wheel\",this.onWheel,{passive:!1}),this.$container.removeEventListener(\"click\",this.onClick,{passive:!1}),this.pointerTracker&&(this.pointerTracker.stop(),this.pointerTracker=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}},{key:\"destroy\",value:function(){\"destroy\"!==this.state&&(this.state=\"destroy\",clearTimeout(this.updateTimer),this.updateTimer=null,cancelAnimationFrame(this.rAF),this.rAF=null,this.detachEvents(),this.detachPlugins(),this.resetDragPosition())}}]),n}(O);M.version=\"4.0.31\",M.Plugins={};var I=function(t,e){var i=0;return function(){var n=(new Date).getTime();if(!(n-i<e))return i=n,t.apply(void 0,arguments)}},R=function(){function t(e){o(this,t),this.$container=null,this.$prev=null,this.$next=null,this.carousel=e,this.onRefresh=this.onRefresh.bind(this)}return s(t,[{key:\"option\",value:function(t){return this.carousel.option(\"Navigation.\".concat(t))}},{key:\"createButton\",value:function(t){var e,i=this,n=document.createElement(\"button\");n.setAttribute(\"title\",this.carousel.localize(\"{{\".concat(t.toUpperCase(),\"}}\")));var o=this.option(\"classNames.button\")+\" \"+this.option(\"classNames.\".concat(t));return(e=n.classList).add.apply(e,m(o.split(\" \"))),n.setAttribute(\"tabindex\",\"0\"),n.innerHTML=this.carousel.localize(this.option(\"\".concat(t,\"Tpl\"))),n.addEventListener(\"click\",(function(e){e.preventDefault(),e.stopPropagation(),i.carousel[\"slide\".concat(\"next\"===t?\"Next\":\"Prev\")]()})),n}},{key:\"build\",value:function(){var t;this.$container||(this.$container=document.createElement(\"div\"),(t=this.$container.classList).add.apply(t,m(this.option(\"classNames.main\").split(\" \"))),this.carousel.$container.appendChild(this.$container));this.$next||(this.$next=this.createButton(\"next\"),this.$container.appendChild(this.$next)),this.$prev||(this.$prev=this.createButton(\"prev\"),this.$container.appendChild(this.$prev))}},{key:\"onRefresh\",value:function(){var t=this.carousel.pages.length;t<=1||t>1&&this.carousel.elemDimWidth<this.carousel.wrapDimWidth&&!Number.isInteger(this.carousel.option(\"slidesPerPage\"))?this.cleanup():(this.build(),this.$prev.removeAttribute(\"disabled\"),this.$next.removeAttribute(\"disabled\"),this.carousel.option(\"infiniteX\",this.carousel.option(\"infinite\"))||(this.carousel.page<=0&&this.$prev.setAttribute(\"disabled\",\"\"),this.carousel.page>=t-1&&this.$next.setAttribute(\"disabled\",\"\")))}},{key:\"cleanup\",value:function(){this.$prev&&this.$prev.remove(),this.$prev=null,this.$next&&this.$next.remove(),this.$next=null,this.$container&&this.$container.remove(),this.$container=null}},{key:\"attach\",value:function(){this.carousel.on(\"refresh change\",this.onRefresh)}},{key:\"detach\",value:function(){this.carousel.off(\"refresh change\",this.onRefresh),this.cleanup()}}]),t}();R.defaults={prevTpl:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" tabindex=\"-1\"><path d=\"M15 3l-9 9 9 9\"/></svg>',nextTpl:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" tabindex=\"-1\"><path d=\"M9 3l9 9-9 9\"/></svg>',classNames:{main:\"carousel__nav\",button:\"carousel__button\",next:\"is-next\",prev:\"is-prev\"}};var F=function(){function t(e){o(this,t),this.carousel=e,this.$list=null,this.events={change:this.onChange.bind(this),refresh:this.onRefresh.bind(this)}}return s(t,[{key:\"buildList\",value:function(){var t=this;if(!(this.carousel.pages.length<this.carousel.option(\"Dots.minSlideCount\"))){var e=document.createElement(\"ol\");return e.classList.add(\"carousel__dots\"),e.addEventListener(\"click\",(function(e){if(\"page\"in e.target.dataset){e.preventDefault(),e.stopPropagation();var i=parseInt(e.target.dataset.page,10),n=t.carousel;i!==n.page&&(n.pages.length<3&&n.option(\"infinite\")?n[0==i?\"slidePrev\":\"slideNext\"]():n.slideTo(i))}})),this.$list=e,this.carousel.$container.appendChild(e),this.carousel.$container.classList.add(\"has-dots\"),e}}},{key:\"removeList\",value:function(){this.$list&&(this.$list.parentNode.removeChild(this.$list),this.$list=null),this.carousel.$container.classList.remove(\"has-dots\")}},{key:\"rebuildDots\",value:function(){var t=this,e=this.$list,i=!!e,n=this.carousel.pages.length;if(n<2)i&&this.removeList();else{i||(e=this.buildList());var o=this.$list.children.length;if(o>n)for(var a=n;a<o;a++)this.$list.removeChild(this.$list.lastChild);else{for(var s=function(e){var i=document.createElement(\"li\");i.classList.add(\"carousel__dot\"),i.dataset.page=e,i.setAttribute(\"role\",\"button\"),i.setAttribute(\"tabindex\",\"0\"),i.setAttribute(\"title\",t.carousel.localize(\"{{GOTO}}\",[[\"%d\",e+1]])),i.addEventListener(\"keydown\",(function(t){var e,n=t.code;\"Enter\"===n||\"NumpadEnter\"===n?e=i:\"ArrowRight\"===n?e=i.nextSibling:\"ArrowLeft\"===n&&(e=i.previousSibling),e&&e.click()})),t.$list.appendChild(i)},r=o;r<n;r++)s(r);this.setActiveDot()}}}},{key:\"setActiveDot\",value:function(){if(this.$list){this.$list.childNodes.forEach((function(t){t.classList.remove(\"is-selected\")}));var t=this.$list.childNodes[this.carousel.page];t&&t.classList.add(\"is-selected\")}}},{key:\"onChange\",value:function(){this.setActiveDot()}},{key:\"onRefresh\",value:function(){this.rebuildDots()}},{key:\"attach\",value:function(){this.carousel.on(this.events)}},{key:\"detach\",value:function(){this.removeList(),this.carousel.off(this.events),this.carousel=null}}]),t}(),N=function(){function t(e){o(this,t),this.carousel=e,this.selectedIndex=null,this.friction=0,this.onNavReady=this.onNavReady.bind(this),this.onNavClick=this.onNavClick.bind(this),this.onNavCreateSlide=this.onNavCreateSlide.bind(this),this.onTargetChange=this.onTargetChange.bind(this)}return s(t,[{key:\"addAsTargetFor\",value:function(t){this.target=this.carousel,this.nav=t,this.attachEvents()}},{key:\"addAsNavFor\",value:function(t){this.target=t,this.nav=this.carousel,this.attachEvents()}},{key:\"attachEvents\",value:function(){this.nav.options.initialSlide=this.target.options.initialPage,this.nav.on(\"ready\",this.onNavReady),this.nav.on(\"createSlide\",this.onNavCreateSlide),this.nav.on(\"Panzoom.click\",this.onNavClick),this.target.on(\"change\",this.onTargetChange),this.target.on(\"Panzoom.afterUpdate\",this.onTargetChange)}},{key:\"onNavReady\",value:function(){this.onTargetChange(!0)}},{key:\"onNavClick\",value:function(t,e,i){var n=i.target.closest(\".carousel__slide\");if(n){i.stopPropagation();var o=parseInt(n.dataset.index,10),a=this.target.findPageForSlide(o);this.target.page!==a&&this.target.slideTo(a,{friction:this.friction}),this.markSelectedSlide(o)}}},{key:\"onNavCreateSlide\",value:function(t,e){e.index===this.selectedIndex&&this.markSelectedSlide(e.index)}},{key:\"onTargetChange\",value:function(){var t=this.target.pages[this.target.page].indexes[0],e=this.nav.findPageForSlide(t);this.nav.slideTo(e),this.markSelectedSlide(t)}},{key:\"markSelectedSlide\",value:function(t){this.selectedIndex=t,m(this.nav.slides).filter((function(t){return t.$el&&t.$el.classList.remove(\"is-nav-selected\")}));var e=this.nav.slides[t];e&&e.$el&&e.$el.classList.add(\"is-nav-selected\")}},{key:\"attach\",value:function(t){var e=t.options.Sync;(e.target||e.nav)&&(e.target?this.addAsNavFor(e.target):e.nav&&this.addAsTargetFor(e.nav),this.friction=e.friction)}},{key:\"detach\",value:function(){this.nav&&(this.nav.off(\"ready\",this.onNavReady),this.nav.off(\"Panzoom.click\",this.onNavClick),this.nav.off(\"createSlide\",this.onNavCreateSlide)),this.target&&(this.target.off(\"Panzoom.afterUpdate\",this.onTargetChange),this.target.off(\"change\",this.onTargetChange))}}]),t}();N.defaults={friction:.92};var D={Navigation:R,Dots:F,Sync:N},B={slides:[],preload:0,slidesPerPage:\"auto\",initialPage:null,initialSlide:null,friction:.92,center:!0,infinite:!0,fill:!0,dragFree:!1,prefix:\"\",classNames:{viewport:\"carousel__viewport\",track:\"carousel__track\",slide:\"carousel__slide\",slideSelected:\"is-selected\"},l10n:{NEXT:\"Next slide\",PREV:\"Previous slide\",GOTO:\"Go to slide #%d\"}},H=function(t){l(n,t);var e=f(n);function n(t){var i,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(o(this,n),a=k(!0,{},B,a),(i=e.call(this,a)).state=\"init\",i.$container=t,!(i.$container instanceof HTMLElement))throw new Error(\"No root element provided\");return i.slideNext=I(i.slideNext.bind(d(i)),250),i.slidePrev=I(i.slidePrev.bind(d(i)),250),i.init(),t.__Carousel=d(i),i}return s(n,[{key:\"init\",value:function(){this.pages=[],this.page=this.pageIndex=null,this.prevPage=this.prevPageIndex=null,this.attachPlugins(n.Plugins),this.trigger(\"init\"),this.initLayout(),this.initSlides(),this.updateMetrics(),this.$track&&this.pages.length&&(this.$track.style.transform=\"translate3d(\".concat(-1*this.pages[this.page].left,\"px, 0px, 0) scale(1)\")),this.manageSlideVisiblity(),this.initPanzoom(),this.state=\"ready\",this.trigger(\"ready\")}},{key:\"initLayout\",value:function(){var t,e,i,n,o=this.option(\"prefix\"),a=this.option(\"classNames\");(this.$viewport=this.option(\"viewport\")||this.$container.querySelector(\".\".concat(o).concat(a.viewport)),this.$viewport)||(this.$viewport=document.createElement(\"div\"),(t=this.$viewport.classList).add.apply(t,m((o+a.viewport).split(\" \"))),(e=this.$viewport).append.apply(e,m(this.$container.childNodes)),this.$container.appendChild(this.$viewport));(this.$track=this.option(\"track\")||this.$container.querySelector(\".\".concat(o).concat(a.track)),this.$track)||(this.$track=document.createElement(\"div\"),(i=this.$track.classList).add.apply(i,m((o+a.track).split(\" \"))),(n=this.$track).append.apply(n,m(this.$viewport.childNodes)),this.$viewport.appendChild(this.$track))}},{key:\"initSlides\",value:function(){var t=this;this.slides=[],this.$viewport.querySelectorAll(\".\".concat(this.option(\"prefix\")).concat(this.option(\"classNames.slide\"))).forEach((function(e){var i={$el:e,isDom:!0};t.slides.push(i),t.trigger(\"createSlide\",i,t.slides.length)})),Array.isArray(this.options.slides)&&(this.slides=k(!0,m(this.slides),this.options.slides))}},{key:\"updateMetrics\",value:function(){var t,e=this,n=0,o=[];this.slides.forEach((function(i,a){var s=i.$el,r=i.isDom||!t?e.getSlideMetrics(s):t;i.index=a,i.width=r,i.left=n,t=r,n+=r,o.push(a)}));var a=Math.max(this.$track.offsetWidth,S(this.$track.getBoundingClientRect().width)),s=getComputedStyle(this.$track);a-=parseFloat(s.paddingLeft)+parseFloat(s.paddingRight),this.contentWidth=n,this.viewportWidth=a;var r=[],l=this.option(\"slidesPerPage\");if(Number.isInteger(l)&&n>a)for(var c=0;c<this.slides.length;c+=l)r.push({indexes:o.slice(c,c+l),slides:this.slides.slice(c,c+l)});else for(var h=0,d=0,u=0;u<this.slides.length;u+=1){var f=this.slides[u];(!r.length||d+f.width>a)&&(r.push({indexes:[],slides:[]}),h=r.length-1,d=0),d+=f.width,r[h].indexes.push(u),r[h].slides.push(f)}var v=this.option(\"center\"),p=this.option(\"fill\");r.forEach((function(t,i){t.index=i,t.width=t.slides.reduce((function(t,e){return t+e.width}),0),t.left=t.slides[0].left,v&&(t.left+=.5*(a-t.width)*-1),p&&!e.option(\"infiniteX\",e.option(\"infinite\"))&&n>a&&(t.left=Math.max(t.left,0),t.left=Math.min(t.left,n-a))}));var g,y=[];r.forEach((function(t){var e=i({},t);g&&e.left===g.left?(g.width+=e.width,g.slides=[].concat(m(g.slides),m(e.slides)),g.indexes=[].concat(m(g.indexes),m(e.indexes))):(e.index=y.length,g=e,y.push(e))})),this.pages=y;var b=this.page;if(null===b){var x=this.option(\"initialSlide\");b=null!==x?this.findPageForSlide(x):parseInt(this.option(\"initialPage\",0),10)||0,y[b]||(b=y.length&&b>y.length?y[y.length-1].index:0),this.page=b,this.pageIndex=b}this.updatePanzoom(),this.trigger(\"refresh\")}},{key:\"getSlideMetrics\",value:function(t){if(!t){var e,i,n=this.slides[0];if((t=document.createElement(\"div\")).dataset.isTestEl=1,t.style.visibility=\"hidden\",(e=t.classList).add.apply(e,m((this.option(\"prefix\")+this.option(\"classNames.slide\")).split(\" \"))),n.customClass)(i=t.classList).add.apply(i,m(n.customClass.split(\" \")));this.$track.prepend(t)}var o=Math.max(t.offsetWidth,S(t.getBoundingClientRect().width)),a=t.currentStyle||window.getComputedStyle(t);return o=o+(parseFloat(a.marginLeft)||0)+(parseFloat(a.marginRight)||0),t.dataset.isTestEl&&t.remove(),o}},{key:\"findPageForSlide\",value:function(t){t=parseInt(t,10)||0;var e=this.pages.find((function(e){return e.indexes.indexOf(t)>-1}));return e?e.index:null}},{key:\"slideNext\",value:function(){this.slideTo(this.pageIndex+1)}},{key:\"slidePrev\",value:function(){this.slideTo(this.pageIndex-1)}},{key:\"slideTo\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=e.x,n=void 0===i?-1*this.setPage(t,!0):i,o=e.y,a=void 0===o?0:o,s=e.friction,r=void 0===s?this.option(\"friction\"):s;this.Panzoom.content.x===n&&!this.Panzoom.velocity.x&&r||(this.Panzoom.panTo({x:n,y:a,friction:r,ignoreBounds:!0}),\"ready\"===this.state&&\"ready\"===this.Panzoom.state&&this.trigger(\"settle\"))}},{key:\"initPanzoom\",value:function(){var t=this;this.Panzoom&&this.Panzoom.destroy();var e=k(!0,{},{content:this.$track,wrapInner:!1,resizeParent:!1,zoom:!1,click:!1,lockAxis:\"x\",x:this.pages.length?-1*this.pages[this.page].left:0,centerOnStart:!1,textSelection:function(){return t.option(\"textSelection\",!1)},panOnlyZoomed:function(){return this.content.width<=this.viewport.width}},this.option(\"Panzoom\"));this.Panzoom=new M(this.$container,e),this.Panzoom.on({\"*\":function(e){for(var i=arguments.length,n=new Array(i>1?i-1:0),o=1;o<i;o++)n[o-1]=arguments[o];return t.trigger.apply(t,[\"Panzoom.\".concat(e)].concat(n))},afterUpdate:function(){t.updatePage()},beforeTransform:this.onBeforeTransform.bind(this),touchEnd:this.onTouchEnd.bind(this),endAnimation:function(){t.trigger(\"settle\")}}),this.updateMetrics(),this.manageSlideVisiblity()}},{key:\"updatePanzoom\",value:function(){this.Panzoom&&(this.Panzoom.content=i(i({},this.Panzoom.content),{},{fitWidth:this.contentWidth,origWidth:this.contentWidth,width:this.contentWidth}),this.pages.length>1&&this.option(\"infiniteX\",this.option(\"infinite\"))?this.Panzoom.boundX=null:this.pages.length&&(this.Panzoom.boundX={from:-1*this.pages[this.pages.length-1].left,to:-1*this.pages[0].left}),this.option(\"infiniteY\",this.option(\"infinite\"))?this.Panzoom.boundY=null:this.Panzoom.boundY={from:0,to:0},this.Panzoom.handleCursor())}},{key:\"manageSlideVisiblity\",value:function(){var t=this,e=this.contentWidth,i=this.viewportWidth,n=this.Panzoom?-1*this.Panzoom.content.x:this.pages.length?this.pages[this.page].left:0,o=this.option(\"preload\"),a=this.option(\"infiniteX\",this.option(\"infinite\")),s=parseFloat(getComputedStyle(this.$viewport,null).getPropertyValue(\"padding-left\")),r=parseFloat(getComputedStyle(this.$viewport,null).getPropertyValue(\"padding-right\"));this.slides.forEach((function(l){var c,h,d=0;c=n-s,h=n+i+r,c-=o*(i+s+r),h+=o*(i+s+r);var u=l.left+l.width>c&&l.left<h;c=n+e-s,h=n+e+i+r,c-=o*(i+s+r);var f=a&&l.left+l.width>c&&l.left<h;c=n-e-s,h=n-e+i+r,c-=o*(i+s+r);var v=a&&l.left+l.width>c&&l.left<h;f||u||v?(t.createSlideEl(l),u&&(d=0),f&&(d=-1),v&&(d=1),l.left+l.width>n&&l.left<=n+i+r&&(d=0)):t.removeSlideEl(l),l.hasDiff=d}));var l=0,c=0;this.slides.forEach((function(t,i){var n=0;t.$el?(i!==l||t.hasDiff?n=c+t.hasDiff*e:c=0,t.$el.style.left=Math.abs(n)>.1?\"\".concat(c+t.hasDiff*e,\"px\"):\"\",l++):c+=t.width})),this.markSelectedSlides()}},{key:\"createSlideEl\",value:function(t){var e;if(t){if(!t.$el){var i,n=document.createElement(\"div\");if(n.dataset.index=t.index,(e=n.classList).add.apply(e,m((this.option(\"prefix\")+this.option(\"classNames.slide\")).split(\" \"))),t.customClass)(i=n.classList).add.apply(i,m(t.customClass.split(\" \")));t.html&&(n.innerHTML=t.html);var o=[];this.slides.forEach((function(t,e){t.$el&&o.push(e)}));var a=t.index,s=null;if(o.length){var r=o.reduce((function(t,e){return Math.abs(e-a)<Math.abs(t-a)?e:t}));s=this.slides[r]}return this.$track.insertBefore(n,s&&s.$el?s.index<t.index?s.$el.nextSibling:s.$el:null),t.$el=n,this.trigger(\"createSlide\",t,a),t}var l,c=t.$el.dataset.index;c&&parseInt(c,10)===t.index||(t.$el.dataset.index=t.index,t.$el.querySelectorAll(\"[data-lazy-srcset]\").forEach((function(t){t.srcset=t.dataset.lazySrcset})),t.$el.querySelectorAll(\"[data-lazy-src]\").forEach((function(t){var e=t.dataset.lazySrc;t instanceof HTMLImageElement?t.src=e:t.style.backgroundImage=\"url('\".concat(e,\"')\")})),(l=t.$el.dataset.lazySrc)&&(t.$el.style.backgroundImage=\"url('\".concat(l,\"')\")),t.state=\"ready\")}}},{key:\"removeSlideEl\",value:function(t){t.$el&&!t.isDom&&(this.trigger(\"removeSlide\",t),t.$el.remove(),t.$el=null)}},{key:\"markSelectedSlides\",value:function(){var t=this,e=this.option(\"classNames.slideSelected\"),i=\"aria-hidden\";this.slides.forEach((function(n,o){var a=n.$el;if(a){var s=t.pages[t.page];s&&s.indexes&&s.indexes.indexOf(o)>-1?(e&&!a.classList.contains(e)&&(a.classList.add(e),t.trigger(\"selectSlide\",n)),a.removeAttribute(i)):(e&&a.classList.contains(e)&&(a.classList.remove(e),t.trigger(\"unselectSlide\",n)),a.setAttribute(i,!0))}}))}},{key:\"updatePage\",value:function(){this.updateMetrics(),this.slideTo(this.page,{friction:0})}},{key:\"onBeforeTransform\",value:function(){this.option(\"infiniteX\",this.option(\"infinite\"))&&this.manageInfiniteTrack(),this.manageSlideVisiblity()}},{key:\"manageInfiniteTrack\",value:function(){var t=this.contentWidth,e=this.viewportWidth;if(!(!this.option(\"infiniteX\",this.option(\"infinite\"))||this.pages.length<2||t<e)){var i=this.Panzoom,n=!1;return i.content.x<-1*(t-e)&&(i.content.x+=t,this.pageIndex=this.pageIndex-this.pages.length,n=!0),i.content.x>e&&(i.content.x-=t,this.pageIndex=this.pageIndex+this.pages.length,n=!0),n&&\"pointerdown\"===i.state&&i.resetDragPosition(),n}}},{key:\"onTouchEnd\",value:function(t,e){var i=this.option(\"dragFree\");if(!i&&this.pages.length>1&&t.dragOffset.time<350&&Math.abs(t.dragOffset.y)<1&&Math.abs(t.dragOffset.x)>5)this[t.dragOffset.x<0?\"slideNext\":\"slidePrev\"]();else if(i){var n=g(this.getPageFromPosition(-1*t.transform.x),2)[1];this.setPage(n)}else this.slideToClosest()}},{key:\"slideToClosest\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getPageFromPosition(-1*this.Panzoom.content.x),i=g(e,2),n=i[1];this.slideTo(n,t)}},{key:\"getPageFromPosition\",value:function(t){var e=this.pages.length;this.option(\"center\")&&(t+=.5*this.viewportWidth);var i=Math.floor(t/this.contentWidth);t-=i*this.contentWidth;var n=this.slides.find((function(e){return e.left<=t&&e.left+e.width>t}));if(n){var o=this.findPageForSlide(n.index);return[o,o+i*e]}return[0,0]}},{key:\"setPage\",value:function(t,e){var i=0,n=parseInt(t,10)||0,o=this.page,a=this.pageIndex,s=this.pages.length,r=this.contentWidth,l=this.viewportWidth;if(t=(n%s+s)%s,this.option(\"infiniteX\",this.option(\"infinite\"))&&r>l){var c=Math.floor(n/s)||0,h=r;if(i=this.pages[t].left+c*h,!0===e&&s>2){var d=-1*this.Panzoom.content.x,u=i-h,f=i+h,v=Math.abs(d-i),p=Math.abs(d-u),g=Math.abs(d-f);g<v&&g<=p?(i=f,n+=s):p<v&&p<g&&(i=u,n-=s)}}else t=n=Math.max(0,Math.min(n,s-1)),i=this.pages.length?this.pages[t].left:0;return this.page=t,this.pageIndex=n,null!==o&&t!==o&&(this.prevPage=o,this.prevPageIndex=a,this.trigger(\"change\",t,o)),i}},{key:\"destroy\",value:function(){var t=this;this.state=\"destroy\",this.slides.forEach((function(e){t.removeSlideEl(e)})),this.slides=[],this.Panzoom.destroy(),this.detachPlugins()}}]),n}(O);H.version=\"4.0.31\",H.Plugins=D;var W=!(\"undefined\"==typeof window||!window.document||!window.document.createElement),j=null,X=[\"a[href]\",\"area[href]\",'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\"select:not([disabled]):not([aria-hidden])\",\"textarea:not([disabled]):not([aria-hidden])\",\"button:not([disabled]):not([aria-hidden])\",\"iframe\",\"object\",\"embed\",\"video\",\"audio\",\"[contenteditable]\",'[tabindex]:not([tabindex^=\"-\"]):not([disabled]):not([aria-hidden])'],q=function(t){if(t&&W){null===j&&document.createElement(\"div\").focus({get preventScroll(){return j=!0,!1}});try{if(t.setActive)t.setActive();else if(j)t.focus({preventScroll:!0});else{var e=window.pageXOffset||document.body.scrollTop,i=window.pageYOffset||document.body.scrollLeft;t.focus(),document.body.scrollTo({top:e,left:i,behavior:\"auto\"})}}catch(t){}}},U=function(){function t(e){o(this,t),this.fancybox=e,this.viewport=null,this.pendingUpdate=null;for(var i=0,n=[\"onReady\",\"onResize\",\"onTouchstart\",\"onTouchmove\"];i<n.length;i++){var a=n[i];this[a]=this[a].bind(this)}}return s(t,[{key:\"onReady\",value:function(){var t=window.visualViewport;t&&(this.viewport=t,this.startY=0,t.addEventListener(\"resize\",this.onResize),this.updateViewport()),window.addEventListener(\"touchstart\",this.onTouchstart,{passive:!1}),window.addEventListener(\"touchmove\",this.onTouchmove,{passive:!1}),window.addEventListener(\"wheel\",this.onWheel,{passive:!1})}},{key:\"onResize\",value:function(){this.updateViewport()}},{key:\"updateViewport\",value:function(){var t=this.fancybox,e=this.viewport,i=e.scale||1,n=t.$container;if(n){var o=\"\",a=\"\",s=\"\";i-1>.1&&(o=\"\".concat(e.width*i,\"px\"),a=\"\".concat(e.height*i,\"px\"),s=\"translate3d(\".concat(e.offsetLeft,\"px, \").concat(e.offsetTop,\"px, 0) scale(\").concat(1/i,\")\")),n.style.width=o,n.style.height=a,n.style.transform=s}}},{key:\"onTouchstart\",value:function(t){this.startY=t.touches?t.touches[0].screenY:t.screenY}},{key:\"onTouchmove\",value:function(t){var e=this.startY,i=window.innerWidth/window.document.documentElement.clientWidth;if(t.cancelable&&!(t.touches.length>1||1!==i)){var n=C(t.composedPath()[0]);if(n){var o=window.getComputedStyle(n),a=parseInt(o.getPropertyValue(\"height\"),10),s=t.touches?t.touches[0].screenY:t.screenY,r=e<=s&&0===n.scrollTop,l=e>=s&&n.scrollHeight-n.scrollTop===a;(r||l)&&t.preventDefault()}else t.preventDefault()}}},{key:\"onWheel\",value:function(t){C(t.composedPath()[0])||t.preventDefault()}},{key:\"cleanup\",value:function(){this.pendingUpdate&&(cancelAnimationFrame(this.pendingUpdate),this.pendingUpdate=null);var t=this.viewport;t&&(t.removeEventListener(\"resize\",this.onResize),this.viewport=null),window.removeEventListener(\"touchstart\",this.onTouchstart,!1),window.removeEventListener(\"touchmove\",this.onTouchmove,!1),window.removeEventListener(\"wheel\",this.onWheel,{passive:!1})}},{key:\"attach\",value:function(){this.fancybox.on(\"initLayout\",this.onReady)}},{key:\"detach\",value:function(){this.fancybox.off(\"initLayout\",this.onReady),this.cleanup()}}]),t}(),Y=function(){function t(e){o(this,t),this.fancybox=e,this.$container=null,this.state=\"init\";for(var i=0,n=[\"onPrepare\",\"onClosing\",\"onKeydown\"];i<n.length;i++){var a=n[i];this[a]=this[a].bind(this)}this.events={prepare:this.onPrepare,closing:this.onClosing,keydown:this.onKeydown}}return s(t,[{key:\"onPrepare\",value:function(){this.getSlides().length<this.fancybox.option(\"Thumbs.minSlideCount\")?this.state=\"disabled\":!0===this.fancybox.option(\"Thumbs.autoStart\")&&this.fancybox.Carousel.Panzoom.content.height>=this.fancybox.option(\"Thumbs.minScreenHeight\")&&this.build()}},{key:\"onClosing\",value:function(){this.Carousel&&this.Carousel.Panzoom.detachEvents()}},{key:\"onKeydown\",value:function(t,e){e===t.option(\"Thumbs.key\")&&this.toggle()}},{key:\"build\",value:function(){var t=this;if(!this.$container){var e=document.createElement(\"div\");e.classList.add(\"fancybox__thumbs\"),this.fancybox.$carousel.parentNode.insertBefore(e,this.fancybox.$carousel.nextSibling),this.Carousel=new H(e,k(!0,{Dots:!1,Navigation:!1,Sync:{friction:0},infinite:!1,center:!0,fill:!0,dragFree:!0,slidesPerPage:1,preload:1},this.fancybox.option(\"Thumbs.Carousel\"),{Sync:{target:this.fancybox.Carousel},slides:this.getSlides()})),this.Carousel.Panzoom.on(\"wheel\",(function(e,i){i.preventDefault(),t.fancybox[i.deltaY<0?\"prev\":\"next\"]()})),this.$container=e,this.state=\"visible\"}}},{key:\"getSlides\",value:function(){var t,e=[],i=x(this.fancybox.items);try{for(i.s();!(t=i.n()).done;){var n=t.value,o=n.thumb;o&&e.push({html:this.fancybox.option(\"Thumbs.tpl\").replace(/\\{\\{src\\}\\}/gi,o),customClass:\"has-thumb has-\".concat(n.type||\"image\")})}}catch(t){i.e(t)}finally{i.f()}return e}},{key:\"toggle\",value:function(){\"visible\"===this.state?this.hide():\"hidden\"===this.state?this.show():this.build()}},{key:\"show\",value:function(){\"hidden\"===this.state&&(this.$container.style.display=\"\",this.Carousel.Panzoom.attachEvents(),this.state=\"visible\")}},{key:\"hide\",value:function(){\"visible\"===this.state&&(this.Carousel.Panzoom.detachEvents(),this.$container.style.display=\"none\",this.state=\"hidden\")}},{key:\"cleanup\",value:function(){this.Carousel&&(this.Carousel.destroy(),this.Carousel=null),this.$container&&(this.$container.remove(),this.$container=null),this.state=\"init\"}},{key:\"attach\",value:function(){this.fancybox.on(this.events)}},{key:\"detach\",value:function(){this.fancybox.off(this.events),this.cleanup()}}]),t}();Y.defaults={minSlideCount:2,minScreenHeight:500,autoStart:!0,key:\"t\",Carousel:{},tpl:'<div class=\"fancybox__thumb\" style=\"background-image:url(\\'{{src}}\\')\"></div>'};var V=function(t,e){for(var i=new URL(t),n=new URLSearchParams(i.search),o=new URLSearchParams,a=0,s=[].concat(m(n),m(Object.entries(e)));a<s.length;a++){var r=g(s[a],2),l=r[0],c=r[1];\"t\"===l?o.set(\"start\",parseInt(c)):o.set(l,c)}o=o.toString();var h=t.match(/#t=((.*)?\\d+s)/);return h&&(o+=\"#t=\".concat(h[1])),o},Z={video:{autoplay:!0,ratio:16/9},youtube:{autohide:1,fs:1,rel:0,hd:1,wmode:\"transparent\",enablejsapi:1,html5:1},vimeo:{hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1},html5video:{tpl:'<video class=\"fancybox__html5video\" playsinline controls controlsList=\"nodownload\" poster=\"{{poster}}\">\\n  <source src=\"{{src}}\" type=\"{{format}}\" />Sorry, your browser doesn\\'t support embedded videos.</video>',format:\"\"}},G=function(){function t(e){o(this,t),this.fancybox=e;for(var i=0,n=[\"onInit\",\"onReady\",\"onCreateSlide\",\"onRemoveSlide\",\"onSelectSlide\",\"onUnselectSlide\",\"onRefresh\",\"onMessage\"];i<n.length;i++){var a=n[i];this[a]=this[a].bind(this)}this.events={init:this.onInit,ready:this.onReady,\"Carousel.createSlide\":this.onCreateSlide,\"Carousel.removeSlide\":this.onRemoveSlide,\"Carousel.selectSlide\":this.onSelectSlide,\"Carousel.unselectSlide\":this.onUnselectSlide,\"Carousel.refresh\":this.onRefresh}}return s(t,[{key:\"onInit\",value:function(){var t,e=x(this.fancybox.items);try{for(e.s();!(t=e.n()).done;){var i=t.value;this.processType(i)}}catch(t){e.e(t)}finally{e.f()}}},{key:\"processType\",value:function(t){if(t.html)return t.src=t.html,t.type=\"html\",void delete t.html;var e=t.src||\"\",i=t.type||this.fancybox.options.type,n=null;if(!e||\"string\"==typeof e){if(n=e.match(/(?:youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(?:watch\\?(?:.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(?:.*)|[\\w-]{11}|\\?listType=(?:.*)&list=(?:.*))(?:.*)/i)){var o=V(e,this.fancybox.option(\"Html.youtube\")),a=encodeURIComponent(n[1]);t.videoId=a,t.src=\"https://www.youtube-nocookie.com/embed/\".concat(a,\"?\").concat(o),t.thumb=t.thumb||\"https://i.ytimg.com/vi/\".concat(a,\"/mqdefault.jpg\"),t.vendor=\"youtube\",i=\"video\"}else if(n=e.match(/^.+vimeo.com\\/(?:\\/)?([\\d]+)(.*)?/)){var s=V(e,this.fancybox.option(\"Html.vimeo\")),r=encodeURIComponent(n[1]);t.videoId=r,t.src=\"https://player.vimeo.com/video/\".concat(r,\"?\").concat(s),t.vendor=\"vimeo\",i=\"video\"}else(n=e.match(/(?:maps\\.)?google\\.([a-z]{2,3}(?:\\.[a-z]{2})?)\\/(?:(?:(?:maps\\/(?:place\\/(?:.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(?:\\?ll=))(.*)?/i))?(t.src=\"//maps.google.\".concat(n[1],\"/?ll=\").concat((n[2]?n[2]+\"&z=\"+Math.floor(n[3])+(n[4]?n[4].replace(/^\\//,\"&\"):\"\"):n[4]+\"\").replace(/\\?/,\"&\"),\"&output=\").concat(n[4]&&n[4].indexOf(\"layer=c\")>0?\"svembed\":\"embed\"),i=\"map\"):(n=e.match(/(?:maps\\.)?google\\.([a-z]{2,3}(?:\\.[a-z]{2})?)\\/(?:maps\\/search\\/)(.*)/i))&&(t.src=\"//maps.google.\".concat(n[1],\"/maps?q=\").concat(n[2].replace(\"query=\",\"q=\").replace(\"api=1\",\"\"),\"&output=embed\"),i=\"map\");i||(\"#\"===e.charAt(0)?i=\"inline\":(n=e.match(/\\.(mp4|mov|ogv|webm)((\\?|#).*)?$/i))?(i=\"html5video\",t.format=t.format||\"video/\"+(\"ogv\"===n[1]?\"ogg\":n[1])):e.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i)?i=\"image\":e.match(/\\.(pdf)((\\?|#).*)?$/i)&&(i=\"pdf\")),t.type=i||this.fancybox.option(\"defaultType\",\"image\"),\"html5video\"!==i&&\"video\"!==i||(t.video=k({},this.fancybox.option(\"Html.video\"),t.video),t._width&&t._height?t.ratio=parseFloat(t._width)/parseFloat(t._height):t.ratio=t.ratio||t.video.ratio||Z.video.ratio)}}},{key:\"onReady\",value:function(){var t=this;this.fancybox.Carousel.slides.forEach((function(e){e.$el&&(t.setContent(e),e.index===t.fancybox.getSlide().index&&t.playVideo(e))}))}},{key:\"onCreateSlide\",value:function(t,e,i){\"ready\"===this.fancybox.state&&this.setContent(i)}},{key:\"loadInlineContent\",value:function(t){var e;if(t.src instanceof HTMLElement)e=t.src;else if(\"string\"==typeof t.src){var i=t.src.split(\"#\",2),n=2===i.length&&\"\"===i[0]?i[1]:i[0];e=document.getElementById(n)}if(e){if(\"clone\"===t.type||e.$placeHolder){var o=(e=e.cloneNode(!0)).getAttribute(\"id\");o=o?\"\".concat(o,\"--clone\"):\"clone-\".concat(this.fancybox.id,\"-\").concat(t.index),e.setAttribute(\"id\",o)}else{var a=document.createElement(\"div\");a.classList.add(\"fancybox-placeholder\"),e.parentNode.insertBefore(a,e),e.$placeHolder=a}this.fancybox.setContent(t,e)}else this.fancybox.setError(t,\"{{ELEMENT_NOT_FOUND}}\")}},{key:\"loadAjaxContent\",value:function(t){var e=this.fancybox,i=new XMLHttpRequest;e.showLoading(t),i.onreadystatechange=function(){i.readyState===XMLHttpRequest.DONE&&\"ready\"===e.state&&(e.hideLoading(t),200===i.status?e.setContent(t,i.responseText):e.setError(t,404===i.status?\"{{AJAX_NOT_FOUND}}\":\"{{AJAX_FORBIDDEN}}\"))};var n=t.ajax||null;i.open(n?\"POST\":\"GET\",t.src),i.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),i.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),i.send(n),t.xhr=i}},{key:\"loadIframeContent\",value:function(t){var e=this,i=this.fancybox,n=document.createElement(\"iframe\");if(n.className=\"fancybox__iframe\",n.setAttribute(\"id\",\"fancybox__iframe_\".concat(i.id,\"_\").concat(t.index)),n.setAttribute(\"allow\",\"autoplay; fullscreen\"),n.setAttribute(\"scrolling\",\"auto\"),t.$iframe=n,\"iframe\"!==t.type||!1===t.preload)return n.setAttribute(\"src\",t.src),this.fancybox.setContent(t,n),void this.resizeIframe(t);i.showLoading(t);var o=document.createElement(\"div\");o.style.visibility=\"hidden\",this.fancybox.setContent(t,o),o.appendChild(n),n.onerror=function(){i.setError(t,\"{{IFRAME_ERROR}}\")},n.onload=function(){i.hideLoading(t);var o=!1;n.isReady||(n.isReady=!0,o=!0),n.src.length&&(n.parentNode.style.visibility=\"\",e.resizeIframe(t),o&&i.revealContent(t))},n.setAttribute(\"src\",t.src)}},{key:\"setAspectRatio\",value:function(t){var e=t.$content,i=t.ratio;if(e){var n=t._width,o=t._height;if(i||n&&o){Object.assign(e.style,{width:n&&o?\"100%\":\"\",height:n&&o?\"100%\":\"\",maxWidth:\"\",maxHeight:\"\"});var a=e.offsetWidth,s=e.offsetHeight;if(o=o||s,(n=n||a)>a||o>s){var r=Math.min(a/n,s/o);n*=r,o*=r}Math.abs(n/o-i)>.01&&(i<n/o?n=o*i:o=n/i),Object.assign(e.style,{width:\"\".concat(n,\"px\"),height:\"\".concat(o,\"px\")})}}}},{key:\"resizeIframe\",value:function(t){var e=t.$iframe;if(e){var i=t._width||0,n=t._height||0;i&&n&&(t.autoSize=!1);var o=e.parentNode,a=o&&o.style;if(!1!==t.preload&&!1!==t.autoSize&&a)try{var s=window.getComputedStyle(o),r=parseFloat(s.paddingLeft)+parseFloat(s.paddingRight),l=parseFloat(s.paddingTop)+parseFloat(s.paddingBottom),c=e.contentWindow.document,h=c.getElementsByTagName(\"html\")[0],d=c.body;a.width=\"\",d.style.overflow=\"hidden\",i=i||h.scrollWidth+r,a.width=\"\".concat(i,\"px\"),d.style.overflow=\"\",a.flex=\"0 0 auto\",a.height=\"\".concat(d.scrollHeight,\"px\"),n=h.scrollHeight+l}catch(t){}if(i||n){var u={flex:\"0 1 auto\"};i&&(u.width=\"\".concat(i,\"px\")),n&&(u.height=\"\".concat(n,\"px\")),Object.assign(a,u)}}}},{key:\"onRefresh\",value:function(t,e){var i=this;e.slides.forEach((function(t){t.$el&&(t.$iframe&&i.resizeIframe(t),t.ratio&&i.setAspectRatio(t))}))}},{key:\"setContent\",value:function(t){if(t&&!t.isDom){switch(t.type){case\"html\":this.fancybox.setContent(t,t.src);break;case\"html5video\":this.fancybox.setContent(t,this.fancybox.option(\"Html.html5video.tpl\").replace(/\\{\\{src\\}\\}/gi,t.src).replace(\"{{format}}\",t.format||t.html5video&&t.html5video.format||\"\").replace(\"{{poster}}\",t.poster||t.thumb||\"\"));break;case\"inline\":case\"clone\":this.loadInlineContent(t);break;case\"ajax\":this.loadAjaxContent(t);break;case\"pdf\":case\"video\":case\"map\":t.preload=!1;case\"iframe\":this.loadIframeContent(t)}t.ratio&&this.setAspectRatio(t)}}},{key:\"onSelectSlide\",value:function(t,e,i){\"ready\"===t.state&&this.playVideo(i)}},{key:\"playVideo\",value:function(t){if(\"html5video\"===t.type&&t.video.autoplay)try{var e=t.$el.querySelector(\"video\");if(e){var i=e.play();void 0!==i&&i.then((function(){})).catch((function(t){e.muted=!0,e.play()}))}}catch(t){}if(\"video\"===t.type&&t.$iframe&&t.$iframe.contentWindow){!function e(){if(\"done\"===t.state&&t.$iframe&&t.$iframe.contentWindow){var i;if(t.$iframe.isReady)return t.video&&t.video.autoplay&&(i=\"youtube\"==t.vendor?{event:\"command\",func:\"playVideo\"}:{method:\"play\",value:\"true\"}),void(i&&t.$iframe.contentWindow.postMessage(JSON.stringify(i),\"*\"));\"youtube\"===t.vendor&&(i={event:\"listening\",id:t.$iframe.getAttribute(\"id\")},t.$iframe.contentWindow.postMessage(JSON.stringify(i),\"*\"))}t.poller=setTimeout(e,250)}()}}},{key:\"onUnselectSlide\",value:function(t,e,i){if(\"html5video\"!==i.type){var n=!1;\"vimeo\"==i.vendor?n={method:\"pause\",value:\"true\"}:\"youtube\"===i.vendor&&(n={event:\"command\",func:\"pauseVideo\"}),n&&i.$iframe&&i.$iframe.contentWindow&&i.$iframe.contentWindow.postMessage(JSON.stringify(n),\"*\"),clearTimeout(i.poller)}else try{i.$el.querySelector(\"video\").pause()}catch(t){}}},{key:\"onRemoveSlide\",value:function(t,e,i){i.xhr&&(i.xhr.abort(),i.xhr=null),i.$iframe&&(i.$iframe.onload=i.$iframe.onerror=null,i.$iframe.src=\"//about:blank\",i.$iframe=null);var n=i.$content;\"inline\"===i.type&&n&&(n.classList.remove(\"fancybox__content\"),\"none\"!==n.style.display&&(n.style.display=\"none\")),i.$closeButton&&(i.$closeButton.remove(),i.$closeButton=null);var o=n&&n.$placeHolder;o&&(o.parentNode.insertBefore(n,o),o.remove(),n.$placeHolder=null)}},{key:\"onMessage\",value:function(t){try{var e=JSON.parse(t.data);if(\"https://player.vimeo.com\"===t.origin){if(\"ready\"===e.event){var i,n=x(document.getElementsByClassName(\"fancybox__iframe\"));try{for(n.s();!(i=n.n()).done;){var o=i.value;o.contentWindow===t.source&&(o.isReady=1)}}catch(t){n.e(t)}finally{n.f()}}}else\"https://www.youtube-nocookie.com\"===t.origin&&\"onReady\"===e.event&&(document.getElementById(e.id).isReady=1)}catch(t){}}},{key:\"attach\",value:function(){this.fancybox.on(this.events),window.addEventListener(\"message\",this.onMessage,!1)}},{key:\"detach\",value:function(){this.fancybox.off(this.events),window.removeEventListener(\"message\",this.onMessage,!1)}}]),t}();G.defaults=Z;var K=function(){function t(e){o(this,t),this.fancybox=e;for(var i=0,n=[\"onReady\",\"onClosing\",\"onDone\",\"onPageChange\",\"onCreateSlide\",\"onRemoveSlide\",\"onImageStatusChange\"];i<n.length;i++){var a=n[i];this[a]=this[a].bind(this)}this.events={ready:this.onReady,closing:this.onClosing,done:this.onDone,\"Carousel.change\":this.onPageChange,\"Carousel.createSlide\":this.onCreateSlide,\"Carousel.removeSlide\":this.onRemoveSlide}}return s(t,[{key:\"onReady\",value:function(){var t=this;this.fancybox.Carousel.slides.forEach((function(e){e.$el&&t.setContent(e)}))}},{key:\"onDone\",value:function(t,e){this.handleCursor(e)}},{key:\"onClosing\",value:function(t){clearTimeout(this.clickTimer),this.clickTimer=null,t.Carousel.slides.forEach((function(t){t.$image&&(t.state=\"destroy\"),t.Panzoom&&t.Panzoom.detachEvents()})),\"closing\"===this.fancybox.state&&this.canZoom(t.getSlide())&&this.zoomOut()}},{key:\"onCreateSlide\",value:function(t,e,i){\"ready\"===this.fancybox.state&&this.setContent(i)}},{key:\"onRemoveSlide\",value:function(t,e,i){i.$image&&(i.$el.classList.remove(t.option(\"Image.canZoomInClass\")),i.$image.remove(),i.$image=null),i.Panzoom&&(i.Panzoom.destroy(),i.Panzoom=null),i.$el&&i.$el.dataset&&delete i.$el.dataset.imageFit}},{key:\"setContent\",value:function(t){var e=this;if(!(t.isDom||t.html||t.type&&\"image\"!==t.type||t.$image)){t.type=\"image\",t.state=\"loading\";var i=document.createElement(\"div\");i.style.visibility=\"hidden\";var n=document.createElement(\"img\");n.addEventListener(\"load\",(function(i){i.stopImmediatePropagation(),e.onImageStatusChange(t)})),n.addEventListener(\"error\",(function(){e.onImageStatusChange(t)})),n.src=t.src,n.alt=\"\",n.draggable=!1,n.classList.add(\"fancybox__image\"),t.srcset&&n.setAttribute(\"srcset\",t.srcset),t.sizes&&n.setAttribute(\"sizes\",t.sizes),t.$image=n;var o=this.fancybox.option(\"Image.wrap\");if(o){var a=document.createElement(\"div\");a.classList.add(\"string\"==typeof o?o:\"fancybox__image-wrap\"),a.appendChild(n),i.appendChild(a),t.$wrap=a}else i.appendChild(n);t.$el.dataset.imageFit=this.fancybox.option(\"Image.fit\"),this.fancybox.setContent(t,i),n.complete||n.error?this.onImageStatusChange(t):this.fancybox.showLoading(t)}}},{key:\"onImageStatusChange\",value:function(t){var e=this,i=t.$image;i&&\"loading\"===t.state&&(i.complete&&i.naturalWidth&&i.naturalHeight?(this.fancybox.hideLoading(t),\"contain\"===this.fancybox.option(\"Image.fit\")&&this.initSlidePanzoom(t),t.$el.addEventListener(\"wheel\",(function(i){return e.onWheel(t,i)}),{passive:!1}),t.$content.addEventListener(\"click\",(function(i){return e.onClick(t,i)}),{passive:!1}),this.revealContent(t)):this.fancybox.setError(t,\"{{IMAGE_ERROR}}\"))}},{key:\"initSlidePanzoom\",value:function(t){var e=this;t.Panzoom||(t.Panzoom=new M(t.$el,k(!0,this.fancybox.option(\"Image.Panzoom\",{}),{viewport:t.$wrap,content:t.$image,width:t._width,height:t._height,wrapInner:!1,textSelection:!0,touch:this.fancybox.option(\"Image.touch\"),panOnlyZoomed:!0,click:!1,wheel:!1})),t.Panzoom.on(\"startAnimation\",(function(){e.fancybox.trigger(\"Image.startAnimation\",t)})),t.Panzoom.on(\"endAnimation\",(function(){\"zoomIn\"===t.state&&e.fancybox.done(t),e.handleCursor(t),e.fancybox.trigger(\"Image.endAnimation\",t)})),t.Panzoom.on(\"afterUpdate\",(function(){e.handleCursor(t),e.fancybox.trigger(\"Image.afterUpdate\",t)})))}},{key:\"revealContent\",value:function(t){null===this.fancybox.Carousel.prevPage&&t.index===this.fancybox.options.startIndex&&this.canZoom(t)?this.zoomIn():this.fancybox.revealContent(t)}},{key:\"getZoomInfo\",value:function(t){var e=t.$thumb.getBoundingClientRect(),i=e.width,n=e.height,o=t.$content.getBoundingClientRect(),a=o.width,s=o.height,r=o.top-e.top,l=o.left-e.left,c=this.fancybox.option(\"Image.zoomOpacity\");return\"auto\"===c&&(c=Math.abs(i/n-a/s)>.1),{top:r,left:l,scale:a&&i?i/a:1,opacity:c}}},{key:\"canZoom\",value:function(t){var e=this.fancybox,i=e.$container;if(window.visualViewport&&1!==window.visualViewport.scale)return!1;if(t.Panzoom&&!t.Panzoom.content.width)return!1;if(!e.option(\"Image.zoom\")||\"contain\"!==e.option(\"Image.fit\"))return!1;var n=t.$thumb;if(!n||\"loading\"===t.state)return!1;i.classList.add(\"fancybox__no-click\");var o,a=n.getBoundingClientRect();if(this.fancybox.option(\"Image.ignoreCoveredThumbnail\")){var s=document.elementFromPoint(a.left+1,a.top+1)===n,r=document.elementFromPoint(a.right-1,a.bottom-1)===n;o=s&&r}else o=document.elementFromPoint(a.left+.5*a.width,a.top+.5*a.height)===n;return i.classList.remove(\"fancybox__no-click\"),o}},{key:\"zoomIn\",value:function(){var t=this.fancybox,e=t.getSlide(),i=e.Panzoom,n=this.getZoomInfo(e),o=n.top,a=n.left,s=n.scale,r=n.opacity;t.trigger(\"reveal\",e),i.panTo({x:-1*a,y:-1*o,scale:s,friction:0,ignoreBounds:!0}),e.$content.style.visibility=\"\",e.state=\"zoomIn\",!0===r&&i.on(\"afterTransform\",(function(t){\"zoomIn\"!==e.state&&\"zoomOut\"!==e.state||(t.$content.style.opacity=Math.min(1,1-(1-t.content.scale)/(1-s)))})),i.panTo({x:0,y:0,scale:1,friction:this.fancybox.option(\"Image.zoomFriction\")})}},{key:\"zoomOut\",value:function(){var t=this,e=this.fancybox,i=e.getSlide(),n=i.Panzoom;if(n){i.state=\"zoomOut\",e.state=\"customClosing\",i.$caption&&(i.$caption.style.visibility=\"hidden\");var o=this.fancybox.option(\"Image.zoomFriction\"),a=function(e){var a=t.getZoomInfo(i),s=a.top,r=a.left,l=a.scale,c=a.opacity;e||c||(o*=.82),n.panTo({x:-1*r,y:-1*s,scale:l,friction:o,ignoreBounds:!0}),o*=.98};window.addEventListener(\"scroll\",a),n.once(\"endAnimation\",(function(){window.removeEventListener(\"scroll\",a),e.destroy()})),a()}}},{key:\"handleCursor\",value:function(t){if(\"image\"===t.type&&t.$el){var e=t.Panzoom,i=this.fancybox.option(\"Image.click\",!1,t),n=this.fancybox.option(\"Image.touch\"),o=t.$el.classList,a=this.fancybox.option(\"Image.canZoomInClass\"),s=this.fancybox.option(\"Image.canZoomOutClass\");if(o.remove(s),o.remove(a),e&&\"toggleZoom\"===i)e&&1===e.content.scale&&e.option(\"maxScale\")-e.content.scale>.01?o.add(a):e.content.scale>1&&!n&&o.add(s);else\"close\"===i&&o.add(s)}}},{key:\"onWheel\",value:function(t,e){if(\"ready\"===this.fancybox.state&&!1!==this.fancybox.trigger(\"Image.wheel\",e))switch(this.fancybox.option(\"Image.wheel\")){case\"zoom\":\"done\"===t.state&&t.Panzoom&&t.Panzoom.zoomWithWheel(e);break;case\"close\":this.fancybox.close();break;case\"slide\":this.fancybox[e.deltaY<0?\"prev\":\"next\"]()}}},{key:\"onClick\",value:function(t,e){var i=this;if(\"ready\"===this.fancybox.state){var n=t.Panzoom;if(!n||!n.dragPosition.midPoint&&0===n.dragOffset.x&&0===n.dragOffset.y&&1===n.dragOffset.scale){if(this.fancybox.Carousel.Panzoom.lockAxis)return!1;var o=function(n){switch(n){case\"toggleZoom\":e.stopPropagation(),t.Panzoom&&t.Panzoom.zoomWithClick(e);break;case\"close\":i.fancybox.close();break;case\"next\":e.stopPropagation(),i.fancybox.next()}},a=this.fancybox.option(\"Image.click\"),s=this.fancybox.option(\"Image.doubleClick\");s?this.clickTimer?(clearTimeout(this.clickTimer),this.clickTimer=null,o(s)):this.clickTimer=setTimeout((function(){i.clickTimer=null,o(a)}),300):o(a)}}}},{key:\"onPageChange\",value:function(t,e){var i=t.getSlide();e.slides.forEach((function(t){t.Panzoom&&\"done\"===t.state&&t.index!==i.index&&t.Panzoom.panTo({x:0,y:0,scale:1,friction:.8})}))}},{key:\"attach\",value:function(){this.fancybox.on(this.events)}},{key:\"detach\",value:function(){this.fancybox.off(this.events)}}]),t}();K.defaults={canZoomInClass:\"can-zoom_in\",canZoomOutClass:\"can-zoom_out\",zoom:!0,zoomOpacity:\"auto\",zoomFriction:.82,ignoreCoveredThumbnail:!1,touch:!0,click:\"toggleZoom\",doubleClick:null,wheel:\"zoom\",fit:\"contain\",wrap:!1,Panzoom:{ratio:1}};var J=function(){function t(e){o(this,t),this.fancybox=e;for(var i=0,n=[\"onChange\",\"onClosing\"];i<n.length;i++){var a=n[i];this[a]=this[a].bind(this)}this.events={initCarousel:this.onChange,\"Carousel.change\":this.onChange,closing:this.onClosing},this.hasCreatedHistory=!1,this.origHash=\"\",this.timer=null}return s(t,[{key:\"onChange\",value:function(t){var e=this,i=t.Carousel;this.timer&&clearTimeout(this.timer);var n=null===i.prevPage,o=t.getSlide(),a=new URL(document.URL).hash,s=!1;if(o.slug)s=\"#\"+o.slug;else{var r=o.$trigger&&o.$trigger.dataset,l=t.option(\"slug\")||r&&r.fancybox;l&&l.length&&\"true\"!==l&&(s=\"#\"+l+(i.slides.length>1?\"-\"+(o.index+1):\"\"))}n&&(this.origHash=a!==s?a:\"\"),s&&a!==s&&(this.timer=setTimeout((function(){try{window.history[n?\"pushState\":\"replaceState\"]({},document.title,window.location.pathname+window.location.search+s),n&&(e.hasCreatedHistory=!0)}catch(t){}}),300))}},{key:\"onClosing\",value:function(){if(this.timer&&clearTimeout(this.timer),!0!==this.hasSilentClose)try{return void window.history.replaceState({},document.title,window.location.pathname+window.location.search+(this.origHash||\"\"))}catch(t){}}},{key:\"attach\",value:function(t){t.on(this.events)}},{key:\"detach\",value:function(t){t.off(this.events)}}],[{key:\"startFromUrl\",value:function(){var e=t.Fancybox;if(e&&!e.getInstance()&&!1!==e.defaults.Hash){var i=t.getParsedURL(),n=i.hash,o=i.slug,a=i.index;if(o){var s=document.querySelector('[data-slug=\"'.concat(n,'\"]'));if(s&&s.dispatchEvent(new CustomEvent(\"click\",{bubbles:!0,cancelable:!0})),!e.getInstance()){var r=document.querySelectorAll('[data-fancybox=\"'.concat(o,'\"]'));r.length&&(null===a&&1===r.length?s=r[0]:a&&(s=r[a-1]),s&&s.dispatchEvent(new CustomEvent(\"click\",{bubbles:!0,cancelable:!0})))}}}}},{key:\"onHashChange\",value:function(){var e=t.getParsedURL(),i=e.slug,n=e.index,o=t.Fancybox,a=o&&o.getInstance();if(a&&a.plugins.Hash){if(i){var s=a.Carousel;if(i===a.option(\"slug\"))return s.slideTo(n-1);var r,l=x(s.slides);try{for(l.s();!(r=l.n()).done;){var c=r.value;if(c.slug&&c.slug===i)return s.slideTo(c.index)}}catch(t){l.e(t)}finally{l.f()}var h=a.getSlide(),d=h.$trigger&&h.$trigger.dataset;if(d&&d.fancybox===i)return s.slideTo(n-1)}a.plugins.Hash.hasSilentClose=!0,a.close()}t.startFromUrl()}},{key:\"create\",value:function(e){function i(){window.addEventListener(\"hashchange\",t.onHashChange,!1),t.startFromUrl()}t.Fancybox=e,W&&window.requestAnimationFrame((function(){/complete|interactive|loaded/.test(document.readyState)?i():document.addEventListener(\"DOMContentLoaded\",i)}))}},{key:\"destroy\",value:function(){window.removeEventListener(\"hashchange\",t.onHashChange,!1)}},{key:\"getParsedURL\",value:function(){var t=window.location.hash.substr(1),e=t.split(\"-\"),i=e.length>1&&/^\\+?\\d+$/.test(e[e.length-1])&&parseInt(e.pop(-1),10)||null;return{hash:t,slug:e.join(\"-\"),index:i}}}]),t}(),Q={pageXOffset:0,pageYOffset:0,element:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement},activate:function(t){Q.pageXOffset=window.pageXOffset,Q.pageYOffset=window.pageYOffset,t.requestFullscreen?t.requestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.msRequestFullscreen&&t.msRequestFullscreen()},deactivate:function(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()}},tt=function(){function t(e){o(this,t),this.fancybox=e,this.active=!1,this.handleVisibilityChange=this.handleVisibilityChange.bind(this)}return s(t,[{key:\"isActive\",value:function(){return this.active}},{key:\"setTimer\",value:function(){var t=this;if(this.active&&!this.timer){var e=this.fancybox.option(\"slideshow.delay\",3e3);this.timer=setTimeout((function(){t.timer=null,t.fancybox.option(\"infinite\")||t.fancybox.getSlide().index!==t.fancybox.Carousel.slides.length-1?t.fancybox.next():t.fancybox.jumpTo(0,{friction:0})}),e);var i=this.$progress;i||((i=document.createElement(\"div\")).classList.add(\"fancybox__progress\"),this.fancybox.$carousel.parentNode.insertBefore(i,this.fancybox.$carousel),this.$progress=i,i.offsetHeight),i.style.transitionDuration=\"\".concat(e,\"ms\"),i.style.transform=\"scaleX(1)\"}}},{key:\"clearTimer\",value:function(){clearTimeout(this.timer),this.timer=null,this.$progress&&(this.$progress.style.transitionDuration=\"\",this.$progress.style.transform=\"\",this.$progress.offsetHeight)}},{key:\"activate\",value:function(){this.active||(this.active=!0,this.fancybox.$container.classList.add(\"has-slideshow\"),\"done\"===this.fancybox.getSlide().state&&this.setTimer(),document.addEventListener(\"visibilitychange\",this.handleVisibilityChange,!1))}},{key:\"handleVisibilityChange\",value:function(){this.deactivate()}},{key:\"deactivate\",value:function(){this.active=!1,this.clearTimer(),this.fancybox.$container.classList.remove(\"has-slideshow\"),document.removeEventListener(\"visibilitychange\",this.handleVisibilityChange,!1)}},{key:\"toggle\",value:function(){this.active?this.deactivate():this.fancybox.Carousel.slides.length>1&&this.activate()}}]),t}(),et={display:[\"counter\",\"zoom\",\"slideshow\",\"fullscreen\",\"thumbs\",\"close\"],autoEnable:!0,items:{counter:{position:\"left\",type:\"div\",class:\"fancybox__counter\",html:'<span data-fancybox-index=\"\"></span>&nbsp;/&nbsp;<span data-fancybox-count=\"\"></span>',attr:{tabindex:-1}},prev:{type:\"button\",class:\"fancybox__button--prev\",label:\"PREV\",html:'<svg viewBox=\"0 0 24 24\"><path d=\"M15 4l-8 8 8 8\"/></svg>',attr:{\"data-fancybox-prev\":\"\"}},next:{type:\"button\",class:\"fancybox__button--next\",label:\"NEXT\",html:'<svg viewBox=\"0 0 24 24\"><path d=\"M8 4l8 8-8 8\"/></svg>',attr:{\"data-fancybox-next\":\"\"}},fullscreen:{type:\"button\",class:\"fancybox__button--fullscreen\",label:\"TOGGLE_FULLSCREEN\",html:'<svg viewBox=\"0 0 24 24\">\\n                <g><path d=\"M3 8 V3h5\"></path><path d=\"M21 8V3h-5\"></path><path d=\"M8 21H3v-5\"></path><path d=\"M16 21h5v-5\"></path></g>\\n                <g><path d=\"M7 2v5H2M17 2v5h5M2 17h5v5M22 17h-5v5\"/></g>\\n            </svg>',click:function(t){t.preventDefault(),Q.element()?Q.deactivate():Q.activate(this.fancybox.$container)}},slideshow:{type:\"button\",class:\"fancybox__button--slideshow\",label:\"TOGGLE_SLIDESHOW\",html:'<svg viewBox=\"0 0 24 24\">\\n                <g><path d=\"M6 4v16\"/><path d=\"M20 12L6 20\"/><path d=\"M20 12L6 4\"/></g>\\n                <g><path d=\"M7 4v15M17 4v15\"/></g>\\n            </svg>',click:function(t){t.preventDefault(),this.Slideshow.toggle()}},zoom:{type:\"button\",class:\"fancybox__button--zoom\",label:\"TOGGLE_ZOOM\",html:'<svg viewBox=\"0 0 24 24\"><circle cx=\"10\" cy=\"10\" r=\"7\"></circle><path d=\"M16 16 L21 21\"></svg>',click:function(t){t.preventDefault();var e=this.fancybox.getSlide().Panzoom;e&&e.toggleZoom()}},download:{type:\"link\",label:\"DOWNLOAD\",class:\"fancybox__button--download\",html:'<svg viewBox=\"0 0 24 24\"><path d=\"M12 15V3m0 12l-4-4m4 4l4-4M2 17l.62 2.48A2 2 0 004.56 21h14.88a2 2 0 001.94-1.51L22 17\"/></svg>',click:function(t){t.stopPropagation()}},thumbs:{type:\"button\",label:\"TOGGLE_THUMBS\",class:\"fancybox__button--thumbs\",html:'<svg viewBox=\"0 0 24 24\"><circle cx=\"4\" cy=\"4\" r=\"1\" /><circle cx=\"12\" cy=\"4\" r=\"1\" transform=\"rotate(90 12 4)\"/><circle cx=\"20\" cy=\"4\" r=\"1\" transform=\"rotate(90 20 4)\"/><circle cx=\"4\" cy=\"12\" r=\"1\" transform=\"rotate(90 4 12)\"/><circle cx=\"12\" cy=\"12\" r=\"1\" transform=\"rotate(90 12 12)\"/><circle cx=\"20\" cy=\"12\" r=\"1\" transform=\"rotate(90 20 12)\"/><circle cx=\"4\" cy=\"20\" r=\"1\" transform=\"rotate(90 4 20)\"/><circle cx=\"12\" cy=\"20\" r=\"1\" transform=\"rotate(90 12 20)\"/><circle cx=\"20\" cy=\"20\" r=\"1\" transform=\"rotate(90 20 20)\"/></svg>',click:function(t){t.stopPropagation();var e=this.fancybox.plugins.Thumbs;e&&e.toggle()}},close:{type:\"button\",label:\"CLOSE\",class:\"fancybox__button--close\",html:'<svg viewBox=\"0 0 24 24\"><path d=\"M20 20L4 4m16 0L4 20\"></path></svg>',attr:{\"data-fancybox-close\":\"\",tabindex:0}}}},it=function(){function t(e){var i=this;o(this,t),this.fancybox=e,this.$container=null,this.state=\"init\";for(var n=0,a=[\"onInit\",\"onPrepare\",\"onDone\",\"onKeydown\",\"onClosing\",\"onChange\",\"onSettle\",\"onRefresh\"];n<a.length;n++){var s=a[n];this[s]=this[s].bind(this)}this.events={init:this.onInit,prepare:this.onPrepare,done:this.onDone,keydown:this.onKeydown,closing:this.onClosing,\"Carousel.change\":this.onChange,\"Carousel.settle\":this.onSettle,\"Carousel.Panzoom.touchStart\":function(){return i.onRefresh()},\"Image.startAnimation\":function(t,e){return i.onRefresh(e)},\"Image.afterUpdate\":function(t,e){return i.onRefresh(e)}}}return s(t,[{key:\"onInit\",value:function(){if(this.fancybox.option(\"Toolbar.autoEnable\")){var t,e=!1,i=x(this.fancybox.items);try{for(i.s();!(t=i.n()).done;){if(\"image\"===t.value.type){e=!0;break}}}catch(t){i.e(t)}finally{i.f()}if(!e)return void(this.state=\"disabled\")}var n,o=x(this.fancybox.option(\"Toolbar.display\"));try{for(o.s();!(n=o.n()).done;){var a=n.value;if(\"close\"===(w(a)?a.id:a)){this.fancybox.options.closeButton=!1;break}}}catch(t){o.e(t)}finally{o.f()}}},{key:\"onPrepare\",value:function(){var t=this.fancybox;if(\"init\"===this.state&&(this.build(),this.update(),this.Slideshow=new tt(t),!t.Carousel.prevPage&&(t.option(\"slideshow.autoStart\")&&this.Slideshow.activate(),t.option(\"fullscreen.autoStart\")&&!Q.element())))try{Q.activate(t.$container)}catch(t){}}},{key:\"onFsChange\",value:function(){window.scrollTo(Q.pageXOffset,Q.pageYOffset)}},{key:\"onSettle\",value:function(){var t=this.fancybox,e=this.Slideshow;e&&e.isActive()&&(t.getSlide().index!==t.Carousel.slides.length-1||t.option(\"infinite\")?\"done\"===t.getSlide().state&&e.setTimer():e.deactivate())}},{key:\"onChange\",value:function(){this.update(),this.Slideshow&&this.Slideshow.isActive()&&this.Slideshow.clearTimer()}},{key:\"onDone\",value:function(t,e){var i=this.Slideshow;e.index===t.getSlide().index&&(this.update(),i&&i.isActive()&&(t.option(\"infinite\")||e.index!==t.Carousel.slides.length-1?i.setTimer():i.deactivate()))}},{key:\"onRefresh\",value:function(t){t&&t.index!==this.fancybox.getSlide().index||(this.update(),!this.Slideshow||!this.Slideshow.isActive()||t&&\"done\"!==t.state||this.Slideshow.deactivate())}},{key:\"onKeydown\",value:function(t,e,i){\" \"===e&&this.Slideshow&&(this.Slideshow.toggle(),i.preventDefault())}},{key:\"onClosing\",value:function(){this.Slideshow&&this.Slideshow.deactivate(),document.removeEventListener(\"fullscreenchange\",this.onFsChange)}},{key:\"createElement\",value:function(t){var e,i;(\"div\"===t.type?e=document.createElement(\"div\"):(e=document.createElement(\"link\"===t.type?\"a\":\"button\")).classList.add(\"carousel__button\"),e.innerHTML=t.html,e.setAttribute(\"tabindex\",t.tabindex||0),t.class)&&(i=e.classList).add.apply(i,m(t.class.split(\" \")));for(var n in t.attr)e.setAttribute(n,t.attr[n]);t.label&&e.setAttribute(\"title\",this.fancybox.localize(\"{{\".concat(t.label,\"}}\"))),t.click&&e.addEventListener(\"click\",t.click.bind(this)),\"prev\"===t.id&&e.setAttribute(\"data-fancybox-prev\",\"\"),\"next\"===t.id&&e.setAttribute(\"data-fancybox-next\",\"\");var o=e.querySelector(\"svg\");return o&&(o.setAttribute(\"role\",\"img\"),o.setAttribute(\"tabindex\",\"-1\"),o.setAttribute(\"xmlns\",\"http://www.w3.org/2000/svg\")),e}},{key:\"build\",value:function(){var t=this;this.cleanup();var e,i=this.fancybox.option(\"Toolbar.items\"),n=[{position:\"left\",items:[]},{position:\"center\",items:[]},{position:\"right\",items:[]}],o=this.fancybox.plugins.Thumbs,a=x(this.fancybox.option(\"Toolbar.display\"));try{var s=function(){var a=e.value,s=void 0,r=void 0;if(w(a)?(s=a.id,r=k({},i[s],a)):r=i[s=a],[\"counter\",\"next\",\"prev\",\"slideshow\"].includes(s)&&t.fancybox.items.length<2)return\"continue\";if(\"fullscreen\"===s){if(!document.fullscreenEnabled||window.fullScreen)return\"continue\";document.addEventListener(\"fullscreenchange\",t.onFsChange)}if(\"thumbs\"===s&&(!o||\"disabled\"===o.state))return\"continue\";if(!r)return\"continue\";var l=r.position||\"right\",c=n.find((function(t){return t.position===l}));c&&c.items.push(r)};for(a.s();!(e=a.n()).done;)s()}catch(t){a.e(t)}finally{a.f()}var r=document.createElement(\"div\");r.classList.add(\"fancybox__toolbar\");for(var l=0,c=n;l<c.length;l++){var h=c[l];if(h.items.length){var d=document.createElement(\"div\");d.classList.add(\"fancybox__toolbar__items\"),d.classList.add(\"fancybox__toolbar__items--\".concat(h.position));var u,f=x(h.items);try{for(f.s();!(u=f.n()).done;){var v=u.value;d.appendChild(this.createElement(v))}}catch(t){f.e(t)}finally{f.f()}r.appendChild(d)}}this.fancybox.$carousel.parentNode.insertBefore(r,this.fancybox.$carousel),this.$container=r}},{key:\"update\",value:function(){var t,e=this.fancybox.getSlide(),i=e.index,n=this.fancybox.items.length,o=e.downloadSrc||(\"image\"!==e.type||e.error?null:e.src),a=x(this.fancybox.$container.querySelectorAll(\"a.fancybox__button--download\"));try{for(a.s();!(t=a.n()).done;){var s=t.value;o?(s.removeAttribute(\"disabled\"),s.removeAttribute(\"tabindex\"),s.setAttribute(\"href\",o),s.setAttribute(\"download\",o),s.setAttribute(\"target\",\"_blank\")):(s.setAttribute(\"disabled\",\"\"),s.setAttribute(\"tabindex\",-1),s.removeAttribute(\"href\"),s.removeAttribute(\"download\"))}}catch(t){a.e(t)}finally{a.f()}var r,l=e.Panzoom,c=l&&l.option(\"maxScale\")>l.option(\"baseScale\"),h=x(this.fancybox.$container.querySelectorAll(\".fancybox__button--zoom\"));try{for(h.s();!(r=h.n()).done;){var d=r.value;c?d.removeAttribute(\"disabled\"):d.setAttribute(\"disabled\",\"\")}}catch(t){h.e(t)}finally{h.f()}var u,f=x(this.fancybox.$container.querySelectorAll(\"[data-fancybox-index]\"));try{for(f.s();!(u=f.n()).done;){u.value.innerHTML=e.index+1}}catch(t){f.e(t)}finally{f.f()}var v,p=x(this.fancybox.$container.querySelectorAll(\"[data-fancybox-count]\"));try{for(p.s();!(v=p.n()).done;){v.value.innerHTML=n}}catch(t){p.e(t)}finally{p.f()}if(!this.fancybox.option(\"infinite\")){var g,m=x(this.fancybox.$container.querySelectorAll(\"[data-fancybox-prev]\"));try{for(m.s();!(g=m.n()).done;){var y=g.value;0===i?y.setAttribute(\"disabled\",\"\"):y.removeAttribute(\"disabled\")}}catch(t){m.e(t)}finally{m.f()}var b,w=x(this.fancybox.$container.querySelectorAll(\"[data-fancybox-next]\"));try{for(w.s();!(b=w.n()).done;){var k=b.value;i===n-1?k.setAttribute(\"disabled\",\"\"):k.removeAttribute(\"disabled\")}}catch(t){w.e(t)}finally{w.f()}}}},{key:\"cleanup\",value:function(){this.Slideshow&&this.Slideshow.isActive()&&this.Slideshow.clearTimer(),this.$container&&this.$container.remove(),this.$container=null}},{key:\"attach\",value:function(){this.fancybox.on(this.events)}},{key:\"detach\",value:function(){this.fancybox.off(this.events),this.cleanup()}}]),t}();it.defaults=et;var nt={ScrollLock:U,Thumbs:Y,Html:G,Toolbar:it,Image:K,Hash:J},ot={startIndex:0,preload:1,infinite:!0,showClass:\"fancybox-zoomInUp\",hideClass:\"fancybox-fadeOut\",animated:!0,hideScrollbar:!0,parentEl:null,mainClass:null,autoFocus:!0,trapFocus:!0,placeFocusBack:!0,click:\"close\",closeButton:\"inside\",dragToClose:!0,keyboard:{Escape:\"close\",Delete:\"close\",Backspace:\"close\",PageUp:\"next\",PageDown:\"prev\",ArrowUp:\"next\",ArrowDown:\"prev\",ArrowRight:\"next\",ArrowLeft:\"prev\"},template:{closeButton:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" tabindex=\"-1\"><path d=\"M20 20L4 4m16 0L4 20\"/></svg>',spinner:'<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"50\" height=\"50\" viewBox=\"25 25 50 50\" tabindex=\"-1\"><circle cx=\"50\" cy=\"50\" r=\"20\"/></svg>',main:null},l10n:{CLOSE:\"Close\",NEXT:\"Next\",PREV:\"Previous\",MODAL:\"You can close this modal content with the ESC key\",ERROR:\"Something Went Wrong, Please Try Again Later\",IMAGE_ERROR:\"Image Not Found\",ELEMENT_NOT_FOUND:\"HTML Element Not Found\",AJAX_NOT_FOUND:\"Error Loading AJAX : Not Found\",AJAX_FORBIDDEN:\"Error Loading AJAX : Forbidden\",IFRAME_ERROR:\"Error Loading Page\",TOGGLE_ZOOM:\"Toggle zoom level\",TOGGLE_THUMBS:\"Toggle thumbnails\",TOGGLE_SLIDESHOW:\"Toggle slideshow\",TOGGLE_FULLSCREEN:\"Toggle full-screen mode\",DOWNLOAD:\"Download\"}},at=new Map,st=0,rt=function(t){l(i,t);var e=f(i);function i(t){var n,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o(this,i),t=t.map((function(t){return t.width&&(t._width=t.width),t.height&&(t._height=t.height),t})),(n=e.call(this,k(!0,{},ot,a))).bindHandlers(),n.state=\"init\",n.setItems(t),n.attachPlugins(i.Plugins),n.trigger(\"init\"),!0===n.option(\"hideScrollbar\")&&n.hideScrollbar(),n.initLayout(),n.initCarousel(),n.attachEvents(),at.set(n.id,d(n)),n.trigger(\"prepare\"),n.state=\"ready\",n.trigger(\"ready\"),n.$container.setAttribute(\"aria-hidden\",\"false\"),n.option(\"trapFocus\")&&n.focus(),n}return s(i,[{key:\"option\",value:function(t){for(var e,n=this.getSlide(),o=n?n[t]:void 0,a=arguments.length,s=new Array(a>1?a-1:0),r=1;r<a;r++)s[r-1]=arguments[r];if(void 0!==o){var l;if(\"function\"==typeof o)o=(l=o).call.apply(l,[this,this].concat(s));return o}return(e=p(c(i.prototype),\"option\",this)).call.apply(e,[this,t].concat(s))}},{key:\"bindHandlers\",value:function(){for(var t=0,e=[\"onMousedown\",\"onKeydown\",\"onClick\",\"onFocus\",\"onCreateSlide\",\"onSettle\",\"onTouchMove\",\"onTouchEnd\",\"onTransform\"];t<e.length;t++){var i=e[t];this[i]=this[i].bind(this)}}},{key:\"attachEvents\",value:function(){document.addEventListener(\"mousedown\",this.onMousedown),document.addEventListener(\"keydown\",this.onKeydown,!0),this.option(\"trapFocus\")&&document.addEventListener(\"focus\",this.onFocus,!0),this.$container.addEventListener(\"click\",this.onClick)}},{key:\"detachEvents\",value:function(){document.removeEventListener(\"mousedown\",this.onMousedown),document.removeEventListener(\"keydown\",this.onKeydown,!0),document.removeEventListener(\"focus\",this.onFocus,!0),this.$container.removeEventListener(\"click\",this.onClick)}},{key:\"initLayout\",value:function(){var t=this;this.$root=this.option(\"parentEl\")||document.body;var e=this.option(\"template.main\");e&&(this.$root.insertAdjacentHTML(\"beforeend\",this.localize(e)),this.$container=this.$root.querySelector(\".fancybox__container\")),this.$container||(this.$container=document.createElement(\"div\"),this.$root.appendChild(this.$container)),this.$container.onscroll=function(){return t.$container.scrollLeft=0,!1},Object.entries({class:\"fancybox__container\",role:\"dialog\",tabIndex:\"-1\",\"aria-modal\":\"true\",\"aria-hidden\":\"true\",\"aria-label\":this.localize(\"{{MODAL}}\")}).forEach((function(e){var i;return(i=t.$container).setAttribute.apply(i,m(e))})),this.option(\"animated\")&&this.$container.classList.add(\"is-animated\"),this.$backdrop=this.$container.querySelector(\".fancybox__backdrop\"),this.$backdrop||(this.$backdrop=document.createElement(\"div\"),this.$backdrop.classList.add(\"fancybox__backdrop\"),this.$container.appendChild(this.$backdrop)),this.$carousel=this.$container.querySelector(\".fancybox__carousel\"),this.$carousel||(this.$carousel=document.createElement(\"div\"),this.$carousel.classList.add(\"fancybox__carousel\"),this.$container.appendChild(this.$carousel)),this.$container.Fancybox=this,this.id=this.$container.getAttribute(\"id\"),this.id||(this.id=this.options.id||++st,this.$container.setAttribute(\"id\",\"fancybox-\"+this.id));var i,n=this.option(\"mainClass\");n&&(i=this.$container.classList).add.apply(i,m(n.split(\" \")));return document.documentElement.classList.add(\"with-fancybox\"),this.trigger(\"initLayout\"),this}},{key:\"setItems\",value:function(t){var e,i=[],n=x(t);try{for(n.s();!(e=n.n()).done;){var o=e.value,a=o.$trigger;if(a){var s=a.dataset||{};o.src=s.src||a.getAttribute(\"href\")||o.src,o.type=s.type||o.type,!o.src&&a instanceof HTMLImageElement&&(o.src=a.currentSrc||o.$trigger.src)}var r=o.$thumb;if(!r){var l=o.$trigger&&o.$trigger.origTarget;l&&(r=l instanceof HTMLImageElement?l:l.querySelector(\"img:not([aria-hidden])\")),!r&&o.$trigger&&(r=o.$trigger instanceof HTMLImageElement?o.$trigger:o.$trigger.querySelector(\"img:not([aria-hidden])\"))}o.$thumb=r||null;var c=o.thumb;!c&&r&&!(c=r.currentSrc||r.src)&&r.dataset&&(c=r.dataset.lazySrc||r.dataset.src),c||\"image\"!==o.type||(c=o.src),o.thumb=c||null,o.caption=o.caption||\"\",i.push(o)}}catch(t){n.e(t)}finally{n.f()}this.items=i}},{key:\"initCarousel\",value:function(){var t=this;return this.Carousel=new H(this.$carousel,k(!0,{},{prefix:\"\",classNames:{viewport:\"fancybox__viewport\",track:\"fancybox__track\",slide:\"fancybox__slide\"},textSelection:!0,preload:this.option(\"preload\"),friction:.88,slides:this.items,initialPage:this.options.startIndex,slidesPerPage:1,infiniteX:this.option(\"infinite\"),infiniteY:!0,l10n:this.option(\"l10n\"),Dots:!1,Navigation:{classNames:{main:\"fancybox__nav\",button:\"carousel__button\",next:\"is-next\",prev:\"is-prev\"}},Panzoom:{textSelection:!0,panOnlyZoomed:function(){return t.Carousel&&t.Carousel.pages&&t.Carousel.pages.length<2&&!t.option(\"dragToClose\")},lockAxis:function(){if(t.Carousel){var e=\"x\";return t.option(\"dragToClose\")&&(e+=\"y\"),e}}},on:{\"*\":function(e){for(var i=arguments.length,n=new Array(i>1?i-1:0),o=1;o<i;o++)n[o-1]=arguments[o];return t.trigger.apply(t,[\"Carousel.\".concat(e)].concat(n))},init:function(e){return t.Carousel=e},createSlide:this.onCreateSlide,settle:this.onSettle}},this.option(\"Carousel\"))),this.option(\"dragToClose\")&&this.Carousel.Panzoom.on({touchMove:this.onTouchMove,afterTransform:this.onTransform,touchEnd:this.onTouchEnd}),this.trigger(\"initCarousel\"),this}},{key:\"onCreateSlide\",value:function(t,e){var i=e.caption||\"\";if(\"function\"==typeof this.options.caption&&(i=this.options.caption.call(this,this,this.Carousel,e)),\"string\"==typeof i&&i.length){var n=document.createElement(\"div\"),o=\"fancybox__caption_\".concat(this.id,\"_\").concat(e.index);n.className=\"fancybox__caption\",n.innerHTML=i,n.setAttribute(\"id\",o),e.$caption=e.$el.appendChild(n),e.$el.classList.add(\"has-caption\"),e.$el.setAttribute(\"aria-labelledby\",o)}}},{key:\"onSettle\",value:function(){this.option(\"autoFocus\")&&this.focus()}},{key:\"onFocus\",value:function(t){this.isTopmost()&&this.focus(t)}},{key:\"onClick\",value:function(t){if(!t.defaultPrevented){var e=t.composedPath()[0];if(e.matches(\"[data-fancybox-close]\"))return t.preventDefault(),void i.close(!1,t);if(e.matches(\"[data-fancybox-next]\"))return t.preventDefault(),void i.next();if(e.matches(\"[data-fancybox-prev]\"))return t.preventDefault(),void i.prev();var n=document.activeElement;if(n){if(n.closest(\"[contenteditable]\"))return;e.matches(X)||n.blur()}if(!e.closest(\".fancybox__content\"))if(!getSelection().toString().length)if(!1!==this.trigger(\"click\",t))switch(this.option(\"click\")){case\"close\":this.close();break;case\"next\":this.next()}}}},{key:\"onTouchMove\",value:function(){var t=this.getSlide().Panzoom;return!t||1===t.content.scale}},{key:\"onTouchEnd\",value:function(t){var e=t.dragOffset.y;Math.abs(e)>=150||Math.abs(e)>=35&&t.dragOffset.time<350?(this.option(\"hideClass\")&&(this.getSlide().hideClass=\"fancybox-throwOut\".concat(t.content.y<0?\"Up\":\"Down\")),this.close()):\"y\"===t.lockAxis&&t.panTo({y:0})}},{key:\"onTransform\",value:function(t){if(this.$backdrop){var e=Math.abs(t.content.y),i=e<1?\"\":Math.max(.33,Math.min(1,1-e/t.content.fitHeight*1.5));this.$container.style.setProperty(\"--fancybox-ts\",i?\"0s\":\"\"),this.$container.style.setProperty(\"--fancybox-opacity\",i)}}},{key:\"onMousedown\",value:function(){\"ready\"===this.state&&document.body.classList.add(\"is-using-mouse\")}},{key:\"onKeydown\",value:function(t){if(this.isTopmost()){document.body.classList.remove(\"is-using-mouse\");var e=t.key,i=this.option(\"keyboard\");if(i&&!t.ctrlKey&&!t.altKey&&!t.shiftKey){var n=t.composedPath()[0],o=document.activeElement&&document.activeElement.classList,a=o&&o.contains(\"carousel__button\");if(\"Escape\"!==e&&!a)if(t.target.isContentEditable||-1!==[\"BUTTON\",\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\"].indexOf(n.nodeName))return;if(!1!==this.trigger(\"keydown\",e,t)){var s=i[e];\"function\"==typeof this[s]&&this[s]()}}}}},{key:\"getSlide\",value:function(){var t=this.Carousel;if(!t)return null;var e=null===t.page?t.option(\"initialPage\"):t.page,i=t.pages||[];return i.length&&i[e]?i[e].slides[0]:null}},{key:\"focus\",value:function(t){if(!(i.ignoreFocusChange||[\"init\",\"closing\",\"customClosing\",\"destroy\"].indexOf(this.state)>-1)){var e=this.$container,n=this.getSlide(),o=\"done\"===n.state?n.$el:null;if(!o||!o.contains(document.activeElement)){t&&t.preventDefault(),i.ignoreFocusChange=!0;for(var a,s=[],r=0,l=Array.from(e.querySelectorAll(X));r<l.length;r++){var c=l[r],h=c.offsetParent,d=o&&o.contains(c),u=!this.Carousel.$viewport.contains(c);h&&(d||u)?(s.push(c),void 0!==c.dataset.origTabindex&&(c.tabIndex=c.dataset.origTabindex,c.removeAttribute(\"data-orig-tabindex\")),(c.hasAttribute(\"autoFocus\")||!a&&d&&!c.classList.contains(\"carousel__button\"))&&(a=c)):(c.dataset.origTabindex=void 0===c.dataset.origTabindex?c.getAttribute(\"tabindex\"):c.dataset.origTabindex,c.tabIndex=-1)}t?s.indexOf(t.target)>-1?this.lastFocus=t.target:this.lastFocus===e?q(s[s.length-1]):q(e):this.option(\"autoFocus\")&&a?q(a):s.indexOf(document.activeElement)<0&&q(e),this.lastFocus=document.activeElement,i.ignoreFocusChange=!1}}}},{key:\"hideScrollbar\",value:function(){if(W){var t=window.innerWidth-document.documentElement.getBoundingClientRect().width,e=\"fancybox-style-noscroll\",i=document.getElementById(e);i||t>0&&((i=document.createElement(\"style\")).id=e,i.type=\"text/css\",i.innerHTML=\".compensate-for-scrollbar {padding-right: \".concat(t,\"px;}\"),document.getElementsByTagName(\"head\")[0].appendChild(i),document.body.classList.add(\"compensate-for-scrollbar\"))}}},{key:\"revealScrollbar\",value:function(){document.body.classList.remove(\"compensate-for-scrollbar\");var t=document.getElementById(\"fancybox-style-noscroll\");t&&t.remove()}},{key:\"clearContent\",value:function(t){this.Carousel.trigger(\"removeSlide\",t),t.$content&&(t.$content.remove(),t.$content=null),t.$closeButton&&(t.$closeButton.remove(),t.$closeButton=null),t._className&&t.$el.classList.remove(t._className)}},{key:\"setContent\",value:function(t,e){var i,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=t.$el;if(e instanceof HTMLElement)[\"img\",\"iframe\",\"video\",\"audio\"].indexOf(e.nodeName.toLowerCase())>-1?(i=document.createElement(\"div\")).appendChild(e):i=e;else{var a=document.createRange().createContextualFragment(e);(i=document.createElement(\"div\")).appendChild(a)}if(t.filter&&!t.error&&(i=i.querySelector(t.filter)),i instanceof Element)return t._className=\"has-\".concat(n.suffix||t.type||\"unknown\"),o.classList.add(t._className),i.classList.add(\"fancybox__content\"),\"none\"!==i.style.display&&\"none\"!==getComputedStyle(i).getPropertyValue(\"display\")||(i.style.display=t.display||this.option(\"defaultDisplay\")||\"flex\"),t.id&&i.setAttribute(\"id\",t.id),t.$content=i,o.prepend(i),this.manageCloseButton(t),\"loading\"!==t.state&&this.revealContent(t),i;this.setError(t,\"{{ELEMENT_NOT_FOUND}}\")}},{key:\"manageCloseButton\",value:function(t){var e=this,i=void 0===t.closeButton?this.option(\"closeButton\"):t.closeButton;if(i&&(\"top\"!==i||!this.$closeButton)){var n=document.createElement(\"button\");n.classList.add(\"carousel__button\",\"is-close\"),n.setAttribute(\"title\",this.options.l10n.CLOSE),n.innerHTML=this.option(\"template.closeButton\"),n.addEventListener(\"click\",(function(t){return e.close(t)})),\"inside\"===i?(t.$closeButton&&t.$closeButton.remove(),t.$closeButton=t.$content.appendChild(n)):this.$closeButton=this.$container.insertBefore(n,this.$container.firstChild)}}},{key:\"revealContent\",value:function(t){var e=this;this.trigger(\"reveal\",t),t.$content.style.visibility=\"\";var i=!1;t.error||\"loading\"===t.state||null!==this.Carousel.prevPage||t.index!==this.options.startIndex||(i=void 0===t.showClass?this.option(\"showClass\"):t.showClass),i?(t.state=\"animating\",this.animateCSS(t.$content,i,(function(){e.done(t)}))):this.done(t)}},{key:\"animateCSS\",value:function(t,e,i){if(t&&t.dispatchEvent(new CustomEvent(\"animationend\",{bubbles:!0,cancelable:!0})),t&&e){t.addEventListener(\"animationend\",(function n(o){o.currentTarget===this&&(t.removeEventListener(\"animationend\",n),i&&i(),t.classList.remove(e))})),t.classList.add(e)}else\"function\"==typeof i&&i()}},{key:\"done\",value:function(t){t.state=\"done\",this.trigger(\"done\",t);var e=this.getSlide();e&&t.index===e.index&&this.option(\"autoFocus\")&&this.focus()}},{key:\"setError\",value:function(t,e){t.error=e,this.hideLoading(t),this.clearContent(t);var i=document.createElement(\"div\");i.classList.add(\"fancybox-error\"),i.innerHTML=this.localize(e||\"<p>{{ERROR}}</p>\"),this.setContent(t,i,{suffix:\"error\"})}},{key:\"showLoading\",value:function(t){var e=this;t.state=\"loading\",t.$el.classList.add(\"is-loading\");var i=t.$el.querySelector(\".fancybox__spinner\");i||((i=document.createElement(\"div\")).classList.add(\"fancybox__spinner\"),i.innerHTML=this.option(\"template.spinner\"),i.addEventListener(\"click\",(function(){e.Carousel.Panzoom.velocity||e.close()})),t.$el.prepend(i))}},{key:\"hideLoading\",value:function(t){var e=t.$el&&t.$el.querySelector(\".fancybox__spinner\");e&&(e.remove(),t.$el.classList.remove(\"is-loading\")),\"loading\"===t.state&&(this.trigger(\"load\",t),t.state=\"ready\")}},{key:\"next\",value:function(){var t=this.Carousel;t&&t.pages.length>1&&t.slideNext()}},{key:\"prev\",value:function(){var t=this.Carousel;t&&t.pages.length>1&&t.slidePrev()}},{key:\"jumpTo\",value:function(){var t;this.Carousel&&(t=this.Carousel).slideTo.apply(t,arguments)}},{key:\"isClosing\",value:function(){return[\"closing\",\"customClosing\",\"destroy\"].includes(this.state)}},{key:\"isTopmost\",value:function(){return i.getInstance().id==this.id}},{key:\"close\",value:function(t){var e=this;if(t&&t.preventDefault(),!this.isClosing()&&!1!==this.trigger(\"shouldClose\",t)&&(this.state=\"closing\",this.Carousel.Panzoom.destroy(),this.detachEvents(),this.trigger(\"closing\",t),\"destroy\"!==this.state)){this.$container.setAttribute(\"aria-hidden\",\"true\"),this.$container.classList.add(\"is-closing\");var i=this.getSlide();if(this.Carousel.slides.forEach((function(t){t.$content&&t.index!==i.index&&e.Carousel.trigger(\"removeSlide\",t)})),\"closing\"===this.state){var n=void 0===i.hideClass?this.option(\"hideClass\"):i.hideClass;this.animateCSS(i.$content,n,(function(){e.destroy()}),!0)}}}},{key:\"destroy\",value:function(){if(\"destroy\"!==this.state){this.state=\"destroy\",this.trigger(\"destroy\");var t=this.option(\"placeFocusBack\")?this.option(\"triggerTarget\",this.getSlide().$trigger):null;this.Carousel.destroy(),this.detachPlugins(),this.Carousel=null,this.options={},this.events={},this.$container.remove(),this.$container=this.$backdrop=this.$carousel=null,t&&q(t),at.delete(this.id);var e=i.getInstance();e?e.focus():(document.documentElement.classList.remove(\"with-fancybox\"),document.body.classList.remove(\"is-using-mouse\"),this.revealScrollbar())}}}],[{key:\"show\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new i(t,e)}},{key:\"fromEvent\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t.defaultPrevented&&!(t.button&&0!==t.button||t.ctrlKey||t.metaKey||t.shiftKey)){var n,o,a,s=t.composedPath()[0],r=s;if((r.matches(\"[data-fancybox-trigger]\")||(r=r.closest(\"[data-fancybox-trigger]\")))&&(e.triggerTarget=r,n=r&&r.dataset&&r.dataset.fancyboxTrigger),n){var l=document.querySelectorAll('[data-fancybox=\"'.concat(n,'\"]')),c=parseInt(r.dataset.fancyboxIndex,10)||0;r=l.length?l[c]:r}Array.from(i.openers.keys()).reverse().some((function(e){a=r||s;var i=!1;try{a instanceof Element&&(\"string\"==typeof e||e instanceof String)&&(i=a.matches(e)||(a=a.closest(e)))}catch(t){}return!!i&&(t.preventDefault(),o=e,!0)}));var h=!1;if(o){e.event=t,e.target=a,a.origTarget=s,h=i.fromOpener(o,e);var d=i.getInstance();d&&\"ready\"===d.state&&t.detail&&document.body.classList.add(\"is-using-mouse\")}return h}}},{key:\"fromOpener\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=function(t){for(var e=[\"false\",\"0\",\"no\",\"null\",\"undefined\"],i=[\"true\",\"1\",\"yes\"],n=Object.assign({},t.dataset),o={},a=0,s=Object.entries(n);a<s.length;a++){var r=g(s[a],2),l=r[0],c=r[1];if(\"fancybox\"!==l)if(\"width\"===l||\"height\"===l)o[\"_\".concat(l)]=c;else if(\"string\"==typeof c||c instanceof String)if(e.indexOf(c)>-1)o[l]=!1;else if(i.indexOf(o[l])>-1)o[l]=!0;else try{o[l]=JSON.parse(c)}catch(t){o[l]=c}else o[l]=c}return t instanceof Element&&(o.$trigger=t),o},o=[],a=e.startIndex||0,s=e.target||null,r=void 0!==(e=k({},e,i.openers.get(t))).groupAll&&e.groupAll,l=void 0===e.groupAttr?\"data-fancybox\":e.groupAttr,c=l&&s?s.getAttribute(\"\".concat(l)):\"\";if(!s||c||r){var h=e.root||(s?s.getRootNode():document.body);o=[].slice.call(h.querySelectorAll(t))}if(s&&!r&&(o=c?o.filter((function(t){return t.getAttribute(\"\".concat(l))===c})):[s]),!o.length)return!1;var d=i.getInstance();return!(d&&o.indexOf(d.options.$trigger)>-1)&&(a=s?o.indexOf(s):a,new i(o=o.map(n),k({},e,{startIndex:a,$trigger:s})))}},{key:\"bind\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};function n(){document.body.addEventListener(\"click\",i.fromEvent,!1)}W&&(i.openers.size||(/complete|interactive|loaded/.test(document.readyState)?n():document.addEventListener(\"DOMContentLoaded\",n)),i.openers.set(t,e))}},{key:\"unbind\",value:function(t){i.openers.delete(t),i.openers.size||i.destroy()}},{key:\"destroy\",value:function(){for(var t;t=i.getInstance();)t.destroy();i.openers=new Map,document.body.removeEventListener(\"click\",i.fromEvent,!1)}},{key:\"getInstance\",value:function(t){return t?at.get(t):Array.from(at.values()).reverse().find((function(t){return!t.isClosing()&&t}))||null}},{key:\"close\",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=arguments.length>1?arguments[1]:void 0;if(t){var n,o=x(at.values());try{for(o.s();!(n=o.n()).done;){var a=n.value;a.close(e)}}catch(t){o.e(t)}finally{o.f()}}else{var s=i.getInstance();s&&s.close(e)}}},{key:\"next\",value:function(){var t=i.getInstance();t&&t.next()}},{key:\"prev\",value:function(){var t=i.getInstance();t&&t.prev()}}]),i}(O);rt.version=\"4.0.31\",rt.defaults=ot,rt.openers=new Map,rt.Plugins=nt,rt.bind(\"[data-fancybox]\");for(var lt=0,ct=Object.entries(rt.Plugins||{});lt<ct.length;lt++){var ht=g(ct[lt],2);ht[0];var dt=ht[1];\"function\"==typeof dt.create&&dt.create(rt)}t.Carousel=H,t.Fancybox=rt,t.Panzoom=M}));\n"
  },
  {
    "path": "docs/scripts/check-version.js",
    "content": "// Lock lockFileVersion to version 2 And resolve import error when import xxx from 'node:xxx'\nif (process.version && +process.version.slice(1).split('.')[0] < 18) {\n  console.log(\n    `Required node version >= 18 not satisfied with current version ${process.version}.`\n  )\n  process.exit(1)\n}\n"
  },
  {
    "path": "docs/zh/cli/index.md",
    "content": "---\ntitle: laf-cli 命令行工具\n---\n\n# laf-cli 命令行工具\n\n## 简介\n\n`laf-cli` 可以让你实现本地开发同步 Web 端，用你最熟悉的开发工具，更加高效。\n\n## 安装\n\n```shell\n# 要求  node 版本 >= 16\nnpm i laf-cli -g\n```\n\ncli 的主要功能就是把在 laf web 上的操作集成到命令行里，下面我们根据 web 端的操作来一个个演示。\n\n## 登录\n\n想要执行登录操作我们需要先拿到我们的 PAT（访问凭证）。\n\n![](../doc-images/creat-token.png)\n\n默认登录 `laf.run`，如果要登录 `laf.dev` 或私有部署的 laf 或其他`laf.run`账号可通过 添加 user：\n\n```shell\nlaf user add dev -r https://laf.dev\nlaf user switch dev\nlaf user list\nlaf login [pat]\n```\n\n### 退出登录\n\n```shell\nlaf logout\n```\n\n## App\n\n在 web 端登录之后我们会看到我们的 app 列表，那么在 cli 中想查看 app 列表只需要执行。\n\n```shell\nlaf app list\n```\n\n### 初始化 app\n\n初始化需要用到 appid，我们可以在 web 端首页拿到。  \n这里稍微解释一下，初始化 app 是指在你运行这个命令的目录下生成模版文件，默认是空的，如果想把 web 端的东西同步过来需要加上 -s。\n::: tip\n建议在一个空的目录下尝试此命令。\n:::\n\n```shell\nlaf app init [appid]\n```\n\n## 依赖\n\n我们可以通过 pull 命令把 web 端的依赖拉到本地，然后 npm i 即可。\n\n```shell\nlaf dep pull\n```\n\n如果我们想添加依赖可以使用 add，注意这里的 add 是在 web 端和本地同时添加这个依赖，添加之后 npm i 即可使用。\n\n```shell\nlaf dep add [dependencyName]\n```\n\n如果我们的依赖文件，或者说整个本地文件都是从其他地方拷贝过来的，可以通过 push 命令把 dependency.yaml 文件中的所有依赖都安装到 web 端。\n\n```shell\nlaf dep push\n```\n\n## 云函数\n\n新建云函数，此命令是在本地和 web 同时创建云函数。\n\n```shell\n laf func create [funcName]\n```\n\n删除云函数，同新建一样本地和 web 同时删除。\n\n```shell\nlaf func del [funcName]\n```\n\n查看云函数列表。\n\n```shell\nlaf func list\n```\n\n更新 web 端云函数代码到本地。\n\n```shell\nlaf func pull [funcName] \n```\n\n推送本地云函数代码到 web。\n\n```shell\nlaf func push [funcName] \n```\n\n执行云函数，执行结果会打印在命令行，日志需要在 web 上查看。\n\n```shell\nlaf func exec [funcName]\n```\n\n## 存储\n\n查看 bucket 列表。\n\n```shell\nlaf storage list\n```\n\n新建 bucket。\n\n```shell\nlaf storage create [bucketName]\n```\n\n删除 bucket。\n\n```shell\nlaf storage del [bucketName]\n```\n\n更新 bucket 权限。\n\n```shell\nlaf storage update [bucketName]\n```\n\n下载 bucket 文件到本地。\n\n```shell\nlaf storage pull [bucketName] [outPath]\n```\n\n上传本地文件到 bucket。\n\n```shell\nlaf storage push [bucketName] [inPath]\n```\n\n## 访问策略\n\n查看所有访问策略。\n\n```shell\nlaf policy list\n```\n\n拉取访问策略到本地，参数 policyName 是可选，不填代表拉取全部。\n\n```shell\nlaf policy pull [policyName] \n```\n\n推送访问策略到 web，参数 policyName 是可选，不填代表推送全部。\n\n```shell\nlaf policy push [policyName]\n```\n\n## 网站托管\n\n查看托管列表。\n\n```shell\nlaf website list\n```\n\n开启网站托管，此命令是开启 [bucketName] 的网站托管。\n\n```shell\nlaf website create [bucketName]\n```\n\n关闭网站托管，此命令是关闭 [bucketName] 的网站托管。\n\n```shell\nlaf website del [bucketName]\n```\n\n自定义域名，此命令是为已开启网站托管的 [bucketName] 设置自定义域名。\n\n```shell\nlaf website custom [bucketName] [domain]\n```\n"
  },
  {
    "path": "docs/zh/client-sdk/index.md",
    "content": "---\ntitle: laf-client-sdk\n---\n\n# laf-client-sdk\n\n## 介绍\n\nlaf 为前端提供了 `laf-client-sdk` 适用于前端 js 运行环境。\n\n:::warning\n优先推荐使用 HTTP 的方式请求云函数\n:::\n\n## 安装\n\n```bash\n npm install laf-client-sdk\n```\n\n## 使用示例\n\n```js\nimport { Cloud } from \"laf-client-sdk\";\n\nconst cloud = new Cloud({\n  // 这里 APPID 需要换成对应的 APPID\n  baseUrl: \"https://APPID.laf.run\",\n  // 这里是访问策略的入口地址，如果没有访问策略可不填\n  dbProxyUrl: \"/proxy/app\",\n  // 请求时带的 token，可空\n  getAccessToken: () => localStorage.getItem(\"access_token\"),\n});\n```\n\n## 参数\n\n`baseUrl` Laf 应用链接，格式为 `https://APPID.laf.run`，APPID 为你的 Laf 应用的 appid\n\n`dbProxyUrl` 数据库访问策略入口，格式为 `/proxy/` 开头加上你新建策略名，如果不需要操作数据库，可不填此参数\n\n`getAccessToken` 请求时带的 token，token 为 JWT token，如果不涉及权限可空\n\n`environment` 目前兼容三种环境 `wxmp`  `uniapp`  `h5`，`wxmp` 为微信小程序\n\n## 微信小程序中使用\n\n```js\nimport { Cloud } from \"laf-client-sdk\";\n\nconst cloud = new Cloud({\n  baseUrl: \"https://APPID.laf.run\",\n  dbProxyUrl: \"/proxy/app\",\n  getAccessToken: () => wx.getStorageSync('access_token'),\n  environment: \"wxmp\",\n});\n```\n\n::: warning\n微信小程序中使用 NPM 依赖，需要 `构建NPM`\n:::\n\n### `Typescript` 版微信小程序构建方法\n\n1、终端 npm 初始化，在小程序项目文件夹中执行 `npm init -y`\n\n2、安装客户端 SDK，在小程序项目文件夹中执行 `npm i laf-client-sdk`\n\n3、修改 project.config.json\n\nsetting 下新增：\n\n```typescript\n\"packNpmManually\": true,\n\"packNpmRelationList\": [\n  {\n    \"packageJsonPath\": \"./package.json\",\n    \"miniprogramNpmDistDir\": \"miniprogram/\"\n  }\n]\n```\n\n4、构建 NPM，微信开发者工具中，点击\"工具\"-\"构建 npm\"\n\n5、页面中调用 SDK 的功能\n\n### `Javascript` 版微信小程序构建方法\n\n1、终端 npm 初始化，在小程序项目文件夹中执行 `npm init -y`\n\n2、安装客户端 SDK，在小程序项目文件夹中执行 `npm i laf-client-sdk`\n\n3、构建 NPM，微信开发者工具中，点击\"工具\"-\"构建 npm\"\n\n6、页面中调用 SDK 的功能\n\n## UNI-APP 中使用\n\n```js\nimport { Cloud } from \"laf-client-sdk\";\n\nconst cloud = new Cloud({\n  baseUrl: \"https://APPID.laf.run\",\n  dbProxyUrl: \"/proxy/app\",\n  getAccessToken: () => uni.getStorageSync(\"access_token\"),\n  environment: \"uniapp\",\n});\n```\n\n## H5 中使用\n\n```js\nimport { Cloud } from \"laf-client-sdk\";\n\nconst cloud = new Cloud({\n  baseUrl: \"https://APPID.laf.run\",\n  dbProxyUrl: \"/proxy/app\",\n  getAccessToken: () => localStorage.getItem(\"access_token\"),\n  environment: \"h5\",\n});\n```\n\n## 调用云函数\n\n::: tip\n`laf-client-sdk` 调用云函数只支持 POST 请求云函数\n:::\n\n```typescript\nimport { Cloud } from \"laf-client-sdk\";\n\nconst cloud = new Cloud({\n  baseUrl: \"https://APPID.laf.run\",\n  dbProxyUrl: \"/proxy/app\",\n  getAccessToken: () => localStorage.getItem(\"access_token\"),\n});\n\n// 调用 getCode 云函数，并且传入参数\nconst res = await cloud.invoke(\"getCode\", { phone: phone.value });\n```\n\n## 操作数据库\n\n:::tip\n通过 `laf-client-sdk` 我们可以像在云函数中一样操作数据库。\n还有就是需要配合相对应的访问策略。\n:::\n\n```typescript\nimport { Cloud } from \"laf-client-sdk\";\n\nconst cloud = new Cloud({\n  baseUrl: \"https://APPID.laf.run\",\n  dbProxyUrl: \"/proxy/app\", //数据库访问策略\n  getAccessToken: () => localStorage.getItem(\"access_token\"),\n});\nconst db = cloud.database()\n\n// 获取用户表中的数据。\nconst res = await db.collection('user').get()\n```\n"
  },
  {
    "path": "docs/zh/cloud-database/database-ql/add.md",
    "content": "---\ntitle: 新增数据\n---\n\n# 新增数据\n\nLaf 云函数库中，新增数据非常简单，正规说法为插入文档。以下是插入单个文档和批量插入文档的写法。\n\n同时 Laf 云数据库是 `Schema Free` 的，意味着你可以插入任意的字段和数据类型。\n\n::: tip\n使用 `cloud.database()`新增数据的方法无法自定义 id，所有新增的数据，都会自动生成 id，生成的 id 类型为为 `string`\n\n使用 `mongodb 原生写法` ，可以自定义 id，也可以自动生成 id，生成的 id 类型为 `ObjectId`\n:::\n\n## 插入单个文档\n\n下例向 user 集合中添加了一条记录。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.database()\n\nexport default async function (ctx: FunctionContext) {\n  // 向 user 集合中添加一条记录\n  const res = await db.collection('user').add({ name: \"jack\" })\n  console.log(res)\n}\n```\n\n## 批量新增文档\n\n当然我们也可以批量添加多条记录，只需要多传入一个对象`{ multi: true }`即可。\n\n```typescript\nconst list = [\n  { name: \"jack\" },\n  { name: \"rose\" }\n]\n// 向 user 集合中加入多条记录\nconst res = await db.collection('user').add(list, { multi: true })\nconsole.log(res)\n```\n\n## mongodb 原生写法\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport async function main(ctx: FunctionContext) {\n  // 向 user 集合中插入单个文档\n  const result1 = await db.collection('user').insertOne({ name: \"jack\" })\n  console.log(result1)\n  // 向 user 集合中批量插入文档\n  const documents = [\n    { name: \"Jane Doe\", age: 25 },\n    { name: \"Bob Smith\", age: 40 }\n  ];\n  const result2 = await db.collection('user').insertMany(documents);\n  console.log(result2)\n}\n```\n"
  },
  {
    "path": "docs/zh/cloud-database/database-ql/aggregate.md",
    "content": "---\ntitle: 数据库聚合操作\n---\n\n# 数据库聚合操作\n\n在进行复杂的数据查询时，需要用到聚合操作。\n\n## 获取数据库集合的聚合操作实例\n\n```js\ndb.collection('scores').aggregate()\n```\n\n**注意：**\n\n- 聚合操作实例仅用于查询，不可执行增删改操作。在聚合操作实例上只能使用聚合操作方法，不能使用 `where/orderBy` 等基础方法，`where` 需改为 `match`，`orderBy` 应使用 `sort` 实现，细节请阅读下方聚合操作文档。\n- 聚合操作在大数据量下性能不如简单查询，请根据自身业务选择合适的用法\n\n云函数中使用时切勿复用 aggregate 实例，容易引发 Bug。\n\n以下两种写法均为错误示例：\n\n```js\nconst db = cloud.database()\nconst collection = db.collection('test')\nconst aggregate = collection.aggregate() // 云函数实例复用时，此聚合实例也会复用，导致 Bug\nexport default async function (ctx: FunctionContext) {\n  const res = await aggregate.match({a:1}).end()\n  return {res}\n}\n```\n\n```js\nconst db = cloud.database()\nconst collection = db.collection('test')\nexport default async function (ctx: FunctionContext) {\n  const aggregate = collection.aggregate() // 此聚合实例分别在两个请求内使用，导致 Bug\n  const res1 = await aggregate.match({a:1}).end()\n  const res2 = await aggregate.match({a:2}).end()\n  return {res1, res2}\n}\n```\n\n将上述两个用法修正为正确用法分别如下：\n\n```js\nconst db = cloud.database()\nconst collection = db.collection('test')\nexport default async function (ctx: FunctionContext) {\n  const aggregate = collection.aggregate() // 每次执行云函数会有独立的聚合实例\n  const res = await aggregate.match({a:1}).end()\n  return {res}\n}\n```\n\n```js\nconst db = cloud.database()\nconst collection = db.collection('test')\nexport default async function (ctx: FunctionContext) {\n  const res1 = await collection.aggregate().match({a:1}).end() // 两个请求分别调用 aggregate 方法产生聚合实例\n  const res2 = await collection.aggregate().match({a:2}).end()\n  return {res1, res2}\n}\n```\n\n## 聚合表达式\n\n表达式可以是字段路径、常量、或数据库运算方法。表达式可以嵌套表达式。\n\n**字段路径**\n\n表达式用字段路径表示法来指定记录中的字段。字段路径的表示由一个 `$` 符号加上字段名或嵌套字段名。嵌套字段名用点将嵌套的各级字段连接起来。如 `$profile` 就表示 `profile` 的字段路径，`$profile.name` 就表示 `profile.name` 的字段路径（`profile` 字段中嵌套的 `name` 字段）。\n\n例如：现有以下数据\n\n```json\n[{\n  \"profile\": {\n    \"name\": \"Chloe\"\n  },\n  \"status\": 0\n}]\n```\n\n```js\n// 执行以下操作\nlet res = await db.collection('scores').aggregate()\n  .addFields({\n    name: '$profile.name'\n  })\n  .end()\n\n// 返回值为\n{\n  \"data\": [{\n    \"profile\": {\n      \"name\": \"Chloe\"\n    },\n    \"status\": 0,\n    \"name\": \"Chloe\"\n  }]\n}\n```\n\n**常量**\n\n常量可以是任意类型。默认情况下 $ 开头的字符串都会被当做字段路径处理，如果想要避免这种行为，使用 `db.command.aggregate.literal` 声明为常量。\n\n**数据库运算方法**\n\n<!-- 参考 [数据库运算方法](cf-database-aggregate-operator.md) -->\n\n参考数据库运算方法\n\n## addFields\n\n聚合阶段。添加新字段到输出的记录。经过 `addFields` 聚合阶段，输出的所有记录中除了输入时带有的字段外，还将带有 `addFields` 指定的字段。\n\n**API 说明**\n\n`addFields` 等同于同时指定了所有已有字段和新增字段的 `project` 阶段。\n\n**`addFields` 的形式如下：**\n\n```js\naddFields({\n  <新字段>: <表达式>\n})\n```\n\n`addFields` 可指定多个新字段，每个新字段的值由使用的表达式决定。\n\n如果指定的新字段与原有字段重名，则新字段的值会覆盖原有字段的值。注意 `addFields` 不能用来给数组字段添加元素。\n\n**示例 1：连续两次 addFields**\n\n假设集合 scores 有如下记录：\n\n```js\n{\n  _id: 1,\n  student: \"Maya\",\n  homework: [ 10, 5, 10 ],\n  quiz: [ 10, 8 ],\n  extraCredit: 0\n}\n{\n  _id: 2,\n  student: \"Ryan\",\n  homework: [ 5, 6, 5 ],\n  quiz: [ 8, 8 ],\n  extraCredit: 8\n}\n```\n\n应用两次 `addFields`，第一次增加两个字段分别为 `homework` 和 `quiz` 的和值，第二次增加一个字段再基于上两个和值求一次和值。\n\n```js\nconst $ = db.command.aggregate\nlet res = await db.collection('scores').aggregate()\n  .addFields({\n    totalHomework: $.sum('$homework'),\n    totalQuiz: $.sum('$quiz')\n  })\n  .addFields({\n    totalScore: $.add(['$totalHomework', '$totalQuiz', '$extraCredit'])\n  })\n  .end()\n```\n\n返回结果如下：\n\n```js\n{\n  \"_id\" : 1,\n  \"student\" : \"Maya\",\n  \"homework\" : [ 10, 5, 10 ],\n  \"quiz\" : [ 10, 8 ],\n  \"extraCredit\" : 0,\n  \"totalHomework\" : 25,\n  \"totalQuiz\" : 18,\n  \"totalScore\" : 43\n}\n{\n  \"_id\" : 2,\n  \"student\" : \"Ryan\",\n  \"homework\" : [ 5, 6, 5 ],\n  \"quiz\" : [ 8, 8 ],\n  \"extraCredit\" : 8,\n  \"totalHomework\" : 16,\n  \"totalQuiz\" : 16,\n  \"totalScore\" : 40\n}\n```\n\n**示例 2：在嵌套记录里增加字段**\n\n可以用点表示法在嵌套记录里增加字段。假设 vehicles 集合含有如下记录：\n\n```js\n{ _id: 1, type: \"car\", specs: { doors: 4, wheels: 4 } }\n{ _id: 2, type: \"motorcycle\", specs: { doors: 0, wheels: 2 } }\n{ _id: 3, type: \"jet ski\" }\n```\n\n可以用如下操作在 `specs` 字段下增加一个新的字段 `fuel_type`，值都设为固定字符串 `unleaded`：\n\n```js\nlet res = await db.collection('vehicles').aggregate()\n  .addFields({\n    'specs.fuel_type': 'unleaded'\n  })\n  .end()\n```\n\n返回结果如下：\n\n```js\n{ _id: 1, type: \"car\",\n   specs: { doors: 4, wheels: 4, fuel_type: \"unleaded\" } }\n{ _id: 2, type: \"motorcycle\",\n   specs: { doors: 0, wheels: 2, fuel_type: \"unleaded\" } }\n{ _id: 3, type: \"jet ski\",\n   specs: { fuel_type: \"unleaded\" } }\n```\n\n**示例 3：设置字段值为另一个字段**\n\n可以通过 `$` 加字段名组成的字符串作为值的表达式来设置字段的值为另一个字段的值。\n\n同样用上一个集合示例，可以用如下操作添加一个字段 `vehicle_type`，将其值设置为 `type` 字段的值：\n\n```js\nlet res = await db.collection('vehicles').aggregate()\n  .addFields({\n    vehicle_type: '$type'\n  })\n  .end()\n```\n\n返回结果如下：\n\n```js\n{ _id: 1, type: \"car\", vehicle_type: \"car\",\n   specs: { doors: 4, wheels: 4, fuel_type: \"unleaded\" } }\n{ _id: 2, type: \"motorcycle\", vehicle_type: \"motorcycle\",\n   specs: { doors: 0, wheels: 2, fuel_type: \"unleaded\" } }\n{ _id: 3, type: \"jet ski\", vehicle_type: \"jet ski\",\n   specs: { fuel_type: \"unleaded\" } }\n```\n\n## bucket\n\n聚合阶段。将输入记录根据给定的条件和边界划分成不同的组，每组即一个 `bucket`。\n\n**API 说明**\n\n每组分别作为一个记录输出，包含一个以下界为值的 `_id` 字段和一个以组中记录数为值的 `count` 字段。`count` 在没有指定 `output` 的时候是默认输出的。\n\n`bucket` 只会在组内有至少一个记录的时候输出。\n\n**bucket 的形式如下：**\n\n```js\nbucket({\n  groupBy: <expression>,\n  boundaries: [<lowerbound1>, <lowerbound2>, ...],\n  default: <literal>,\n  output: {\n    <output1>: <accumulator expr>,\n    ...\n    <outputN>: <accumulator expr>\n  }\n})\n```\n\n`groupBy` 是一个用以决定分组的表达式，会应用在各个输入记录上。可以用 `$` 前缀加上要用以分组的字段路径来作为表达式。除非用 `default` 指定了默认值，否则每个记录都需要包含指定的字段，且字段值必须在 `boundaries` 指定的范围之内。\n\n`boundaries` 是一个数组，每个元素分别是每组的下界。必须至少指定两个边界值。数组值必须是同类型递增的值。\n\n`default` 可选，指定之后，没有进入任何分组的记录将都进入一个默认分组，这个分组记录的 `_id` 即由 `default` 决定。`default` 的值必须小于 `boundaries` 中的最小值或大于等于其中的最大值。`default` 的值可以与 `boundaries` 元素值类型不同。\n\n`output` 可选，用以决定输出记录除了 `_id` 外还要包含哪些字段，各个字段的值必须用累加器表达式指定。当 `output` 指定时，默认的 `count` 是不会被默认输出的，必须手动指定：\n\n```js\noutput: {\n  count: $.sum(1),\n  ...\n  <outputN>: <accumulator expr>\n}\n```\n\n使用 bucket 需要满足以下至少一个条件，否则会抛出错误：\n\n每一个输入记录应用 groupBy 表达式获取的值都必须是一个在 boundaries 内的值\n\n指定一个 default 值，该值在 boundaries 以外，或与 boundaries 元素的值不同的类型。\n\n**示例**\n\n假设集合 items 有如下记录：\n\n```js\n{\n  _id: \"1\",\n  price: 10\n}\n{\n  _id: \"2\",\n  price: 50\n}\n{\n  _id: \"3\",\n  price: 20\n}\n{\n  _id: \"4\",\n  price: 80\n}\n{\n  _id: \"5\",\n  price: 200\n}\n```\n\n对上述记录进行分组，将 [0, 50) 分为一组，[50, 100) 分为一组，其他分为一组：\n\n```js\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .bucket({\n    groupBy: '$price',\n    boundaries: [0, 50, 100],\n    default: 'other',\n    output: {\n      count: $.sum(1),\n      ids: $.push('$_id')\n    }\n  })\n  .end()\n```\n\n返回结果如下：\n\n```js\n[\n  {\n    \"_id\": 0,\n    \"count\": 2,\n    \"ids\": [\n      \"1\",\n      \"3\"\n    ]\n  },\n  {\n    \"_id\": 50,\n    \"count\": 2,\n    \"ids\": [\n      \"2\",\n      \"4\"\n    ]\n  },\n  {\n    \"_id\": \"other\",\n    \"count\": 1,\n    \"ids\": [\n      \"5\"\n    ]\n  }\n]\n```\n\n## bucketAuto\n\n聚合阶段。将输入记录根据给定的条件划分成不同的组，每组即一个 `bucket`。与 `bucket` 的其中一个不同之处在于无需指定 `boundaries`，`bucketAuto` 会自动尝试将记录尽可能平均的分散到每组中。\n\n**API 说明**\n每组分别作为一个记录输出，包含一个以包含组中最大值和最小值两个字段的对象为值的 _id 字段和一个以组中记录数为值的 count 字段。count 在没有指定 output 的时候是默认输出的。\n\n**bucketAuto 的形式如下：**\n\n```js\nbucketAuto({\n  groupBy: <expression>,\n  buckets: <number>,\n  granularity: <string>,\n  output: {\n    <output1>: <accumulator expr>,\n    ...\n    <outputN>: <accumulator expr>\n  }\n})\n```\n\n`groupBy` 是一个用以决定分组的表达式，会应用在各个输入记录上。可以用 $ 前缀加上要用以分组的字段路径来作为表达式。除非用 `default` 指定了默认值，否则每个记录都需要包含指定的字段，且字段值必须在 `boundaries` 指定的范围之内。\n\n`buckets` 是一个用于指定划分组数的正整数。\n\n`granularity` 是可选枚举值字符串，用于保证自动计算出的边界符合给定的规则。这个字段仅可在所有 `groupBy` 值都是数字并且没有 `NaN` 的情况下使用。枚举值包括：`R5、R10、R20、R40、R80、1-2-5、E6、E12、E24、E48、E96、E192、POWERSOF2`。\n\n`output` 可选，用以决定输出记录除了 `_id` 外还要包含哪些字段，各个字段的值必须用累加器表达式指定。当 `output` 指定时，默认的 `count` 是不会被默认输出的，必须手动指定：\n\n```js\noutput: {\n  count: $.sum(1),\n  ...\n  <outputN>: <accumulator expr>\n}\n```\n\n在以下情况中，输出的分组可能会小于给定的组数：\n\n输入记录数少于分组数\n\n- `groupBy` 计算得到的唯一值少于分组数\n- `granularity` 的间距少于分组数\n- `granularity` 不够精细以至于不能平均分配到各组\n\n**granularity 详细说明**\n\n`granularity` 用于保证边界值属于一个给定的数字序列。\n\n**Renard 序列**\n\nRenard 序列是以 10 的 5 / 10 / 20 / 40 / 80 次方根来推导的、在 1.0 到 10.0 (如果是 R80 则是 10.3) 之间的数字序列。\n\n设置 granularity 为 R5 / R10 / R20 / R40 / R80 就把边界值限定在序列内。如果 groupBy 的值不在 1.0 到 10.0 (如果是 R80 则是 10.3) 内，则序列数字会自动乘以 10。\n\n**E 序列**\n\nE 序列是以 10 的 6 / 12 / 24 / 48 / 96 / 192 次方跟来推导的、带有一个特定误差的、在 1.0 到 10.0 之间的数字序列。\n\n**1-2-5 序列**\n\n1-2-5 序列 表现与三值 Renard 序列一样。\n\n**2的次方序列**\n\n由 2 的各次方组成的序列数字。\n\n**示例**\n\n假设集合 items 有如下记录：\n\n```js\n{\n  _id: \"1\",\n  price: 10.5\n}\n{\n  _id: \"2\",\n  price: 50.3\n}\n{\n  _id: \"3\",\n  price: 20.8\n}\n{\n  _id: \"4\",\n  price: 80.2\n}\n{\n  _id: \"5\",\n  price: 200.3\n}\n```\n\n对上述记录进行自动分组，分成三组：\n\n```js\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .bucketAuto({\n    groupBy: '$price',\n    buckets: 3,\n  })\n  .end()\n```\n\n返回结果如下：\n\n```js\n{\n  \"_id\": {\n    \"min\": 10.5,\n    \"max\": 50.3\n  },\n  \"count\": 2\n}\n{\n  \"_id\": {\n    \"min\": 50.3,\n    \"max\": 200.3\n  },\n  \"count\": 2\n}\n{\n  \"_id\": {\n    \"min\": 200.3,\n    \"max\": 200.3\n  },\n  \"count\": 1\n}\n```\n\n## count\n\n聚合阶段。计算上一聚合阶段输入到本阶段的记录数，输出一个记录，其中指定字段的值为记录数。\n\n**API 说明**\n\n**count 的形式如下：**\n\n```js\ncount(<string>)\n```\n\n`<string>` 是输出记录数的字段的名字，不能是空字符串，不能以 $ 开头，不能包含 . 字符。\n\ncount 阶段等同于 group + project 的操作：\n\n```js\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .group({\n    _id: null,\n    count: $.sum(1),\n  })\n  .project({\n    _id: 0,\n  })\n  .end()\n```\n\n上述操作会输出一个包含 count 字段的记录。\n\n**示例**\n\n假设集合 items 有如下记录：\n\n```js\n{\n  _id: \"1\",\n  price: 10.5\n}\n{\n  _id: \"2\",\n  price: 50.3\n}\n{\n  _id: \"3\",\n  price: 20.8\n}\n{\n  _id: \"4\",\n  price: 80.2\n}\n{\n  _id: \"5\",\n  price: 200.3\n}\n```\n\n找出价格大于 50 的记录数：\n\n```js\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .match({\n    price: $.gt(50)\n  })\n  .count('expensiveCount')\n  .end()\n```\n\n返回结果如下：\n\n```js\n{\n  \"expensiveCount\": 3\n}\n```\n\n## geoNear\n\n聚合阶段。将记录按照离给定点从近到远输出。\n\n|属性        |类型   |默认值 |必填 |说明                                              |\n|----        |----   |----  |---- |----                                              |\n|near        |GeoPoint |    |是  |GeoJSON Point，用于判断距离的点                                |\n|spherical     |true   |    |是  |必填，值为 true                                        |\n|maxDistance    |number  |    |否  |距离最大值                                           |\n|minDistance    |number  |    |否  |距离最小值                                           |\n|query       |Object  |    |否  |要求记录必须同时满足该条件（语法同 where）                           |\n|distanceMultiplier |number  |    |否  |返回时在距离上乘以该数字                                    |\n|distanceField   |string  |    |是  |存放距离的输出字段名，可以用点表示法表示一个嵌套字段                      |\n|includeLocs    |string  |    |否  |列出要用于距离计算的字段，如果记录中有多个字段都是地理位置时有用                |\n|key        |string  |    |否  |选择要用的地理位置索引。如果集合由多个地理位置索引，则必须指定一个，指定的方式是指定对应的字段 |\n\n**API 说明**\n\n- `geoNear` 必须为第一个聚合阶段\n- 必须有地理位置索引。如果有多个，必须用 `key` 参数指定要使用的索引。\n\n**示例**\n\n假设集合 attractions 有如下记录：\n\n```js\n{\n  \"_id\": \"geoNear.0\",\n  \"city\": \"Guangzhou\",\n  \"docType\": \"geoNear\",\n  \"location\": {\n    \"type\": \"Point\",\n    \"coordinates\": [\n      113.30593,\n      23.1361155\n    ]\n  },\n  \"name\": \"Canton Tower\"\n},\n{\n  \"_id\": \"geoNear.1\",\n  \"city\": \"Guangzhou\",\n  \"docType\": \"geoNear\",\n  \"location\": {\n    \"type\": \"Point\",\n    \"coordinates\": [\n      113.306789,\n      23.1564721\n    ]\n  },\n  \"name\": \"Baiyun Mountain\"\n},\n{\n  \"_id\": \"geoNear.2\",\n  \"city\": \"Beijing\",\n  \"docType\": \"geoNear\",\n  \"location\": {\n    \"type\": \"Point\",\n    \"coordinates\": [\n      116.3949659,\n      39.9163447\n    ]\n  },\n  \"name\": \"The Palace Museum\"\n},\n{\n  \"_id\": \"geoNear.3\",\n  \"city\": \"Beijing\",\n  \"docType\": \"geoNear\",\n  \"location\": {\n    \"type\": \"Point\",\n    \"coordinates\": [\n      116.2328567,\n      40.242373\n    ]\n  },\n  \"name\": \"Great Wall\"\n}\n```\n\n```js\nconst $ = db.command.aggregate\nlet res = await db.collection('attractions').aggregate()\n  .geoNear({\n    distanceField: 'distance', // 输出的每个记录中 distance 即是与给定点的距离\n    spherical: true,\n    near: new db.Geo.Point(113.3089506, 23.0968251),\n    query: {\n      docType: 'geoNear',\n    },\n    key: 'location', // 若只有 location 一个地理位置索引的字段，则不需填\n    includeLocs: 'location', // 若只有 location 一个是地理位置，则不需填\n  })\n  .end()\n```\n\n返回结果如下：\n\n```js\n{\n  \"_id\": \"geoNear.0\",\n  \"location\": {\n    \"type\": \"Point\",\n    \"coordinates\": [\n      113.30593,\n      23.1361155\n    ]\n  },\n  \"docType\": \"geoNear\",\n  \"name\": \"Canton Tower\",\n  \"city\": \"Guangzhou\",\n  \"distance\": 4384.68131486958\n},\n{\n  \"_id\": \"geoNear.1\",\n  \"city\": \"Guangzhou\",\n  \"location\": {\n    \"type\": \"Point\",\n    \"coordinates\": [\n      113.306789,\n      23.1564721\n    ]\n  },\n  \"docType\": \"geoNear\",\n  \"name\": \"Baiyun Mountain\",\n  \"distance\": 6643.521654040738\n},\n{\n  \"_id\": \"geoNear.2\",\n  \"docType\": \"geoNear\",\n  \"name\": \"The Palace Museum\",\n  \"city\": \"Beijing\",\n  \"location\": {\n    \"coordinates\": [\n      116.3949659,\n      39.9163447\n    ],\n    \"type\": \"Point\"\n  },\n  \"distance\": 1894750.4414538583\n},\n{\n  \"_id\": \"geoNear.3\",\n  \"docType\": \"geoNear\",\n  \"name\": \"Great Wall\",\n  \"city\": \"Beijing\",\n  \"location\": {\n    \"type\": \"Point\",\n    \"coordinates\": [\n      116.2328567,\n      40.242373\n    ]\n  },\n  \"distance\": 1928300.3308822548\n}\n```\n\n## group\n\n聚合阶段。将输入记录按给定表达式分组，输出时每个记录代表一个分组，每个记录的 _id 是区分不同组的 key。输出记录中也可以包括累计值，将输出字段设为累计值即会从该分组中计算累计值。\n\n使用group可以很方便的实现类似SQL的distinct功能\n\n**API 说明**\n\n**group 的形式如下：**\n\n```js\ngroup({\n  _id: <expression>,\n  <field1>: <accumulator1>,\n  ...\n  <fieldN>: <accumulatorN>\n})\n```\n\n`_id` 参数是必填的，如果填常量则只有一组。其他字段是可选的，都是累计值，用 `$.sum` 等累计器(`const $ = db.command.aggregate`)，但也可以使用其他表达式。\n\n累计器必须是以下操作符之一：\n\n详细使用方法见[累计器操作符](#累计器操作符)\n\n|操作符    |说明                                                     |\n|----     |----                                                     |\n|addToSet   |向数组中添加值，如果数组中已存在该值，不执行任何操作                             |\n|avg     |返回一组集合中，指定字段对应数据的平均值                                   |\n|sum     |计算并且返回一组字段所有数值的总和                                      |\n|first    |返回指定字段在一组集合的第一条记录对应的值。仅当这组集合是按照某种定义排序（ sort ）后，此操作才有意义。   |\n|last     |返回指定字段在一组集合的最后一条记录对应的值。仅当这组集合是按照某种定义排序（ sort ）后，此操作才有意义。  |\n|max     |返回一组数值的最大值                                             |\n|min     |返回一组数值的最小值                                             |\n|push     |在 group 阶段，返回一组中表达式指定列与对应的值，一起组成的数组                       |\n|stdDevPop  |返回一组字段对应值的标准差                                          |\n|stdDevSamp  |计算输入值的样本标准偏差。如果输入值代表数据总体，或者不概括更多的数据，请改用 db.command.aggregate.stdDevPop|\n|mergeObjects |将多个文档合并为单个文档                                           |\n\n**内存限制**\n\n该阶段有 100M 内存使用限制。\n\n**示例 1：按字段值分组**\n\n假设集合 avatar 有如下记录：\n\n```js\n{\n  _id: \"1\",\n  alias: \"john\",\n  region: \"asia\",\n  scores: [40, 20, 80],\n  coins: 100\n}\n{\n  _id: \"2\",\n  alias: \"arthur\",\n  region: \"europe\",\n  scores: [60, 90],\n  coins: 20\n}\n{\n  _id: \"3\",\n  alias: \"george\",\n  region: \"europe\",\n  scores: [50, 70, 90],\n  coins: 50\n}\n{\n  _id: \"4\",\n  alias: \"john\",\n  region: \"asia\",\n  scores: [30, 60, 100, 90],\n  coins: 40\n}\n{\n  _id: \"5\",\n  alias: \"george\",\n  region: \"europe\",\n  scores: [20],\n  coins: 60\n}\n{\n  _id: \"6\",\n  alias: \"john\",\n  region: \"asia\",\n  scores: [40, 80, 70],\n  coins: 120\n}\n```\n\n```js\nconst $ = db.command.aggregate\nlet res = await db.collection('avatar').aggregate()\n  .group({\n    _id: '$alias',\n    num: $.sum(1)\n  })\n  .end()\n```\n\n返回结果如下：\n\n```js\n{\n  \"_id\": \"john\",\n  \"num\": 3\n}\n{\n  \"_id\": \"authur\",\n  \"num\": 1\n}\n{\n  \"_id\": \"george\",\n  \"num\": 2\n}\n```\n\n**示例 2：按多个值分组**\n\n可以给 _id 传入记录的方式按多个值分组。还是沿用上面的示例数据，按各个区域（region）获得相同最高分（score）的来分组，并求出各组虚拟币（coins）的总量：\n\n```js\nconst $ = db.command.aggregate\nlet res = await db.collection('avatar').aggregate()\n  .group({\n    _id: {\n      region: '$region',\n      maxScore: $.max('$scores')\n    },\n    totalCoins: $.sum('$coins')\n  })\n  .end()\n```\n\n返回结果如下：\n\n```js\n{\n  \"_id\": {\n    \"region\": \"asia\",\n    \"maxScore\": 80\n  },\n  \"totalCoins\": 220\n}\n{\n  \"_id\": {\n    \"region\": \"asia\",\n    \"maxScore\": 100\n  },\n  \"totalCoins\": 40\n}\n{\n  \"_id\": {\n    \"region\": \"europe\",\n    \"maxScore\": 90\n  },\n  \"totalCoins\": 70\n}\n{\n  \"_id\": {\n    \"region\": \"europe\",\n    \"maxScore\": 20\n  },\n  \"totalCoins\": 60\n}\n```\n\n## limit\n\n聚合阶段。限制输出到下一阶段的记录数。\n\n**示例**\n\n假设集合 items 有如下记录：\n\n```js\n{\n  _id: \"1\",\n  price: 10\n}\n{\n  _id: \"2\",\n  price: 50\n}\n{\n  _id: \"3\",\n  price: 20\n}\n{\n  _id: \"4\",\n  price: 80\n}\n{\n  _id: \"5\",\n  price: 200\n}\n```\n\n返回价格大于 20 的记录的最小的两个记录：\n\n```js\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .match({\n    price: $.gt(20)\n  })\n  .sort({\n    price: 1,\n  })\n  .limit(2)\n  .end()\n```\n\n返回结果如下：\n\n```js\n{\n  \"_id\": \"2\",\n  \"price\": 50\n}\n{\n  \"_id\": \"4\",\n  \"price\": 80\n}\n```\n\n## lookup\n\n聚合阶段。联表查询。与同个数据库下的一个指定的集合做 left outer join(左外连接)。对该阶段的每一个输入记录，lookup 会在该记录中增加一个数组字段，该数组是被联表中满足匹配条件的记录列表。lookup 会将连接后的结果输出给下个阶段。\n\n**API 说明**\n\n`lookup` 有两种使用方式\n\n### 相等匹配\n\n将输入记录的一个字段和被连接集合的一个字段进行相等匹配时，采用以下定义：\n\n```js\nlookup({\n  from: <要连接的集合名>,\n  localField: <输入记录的要进行相等匹配的字段>,\n  foreignField: <被连接集合的要进行相等匹配的字段>,\n  as: <输出的数组字段名>\n})\n```\n\n**参数详细说明**\n\n|参数字段   |说明                                                                          |\n|----     |----                                                                          |\n|from     |要进行连接的另外一个集合的名字                                                             |\n|localField  |当前流水线的输入记录的字段名，该字段将被用于与 from 指定的集合的 foreignField 进行相等匹配。如果输入记录中没有该字段，则该字段的值在匹配时会被视作 null|\n|foreignField |被连接集合的字段名，该字段会被用于与 localField 进行相等匹配。如果被连接集合的记录中没有该字段，该字段的值将在匹配时被视作 null            |\n|as      |指定连接匹配出的记录列表要存放的字段名，这个数组包含的是匹配出的来自 from 集合的记录。如果输入记录中本来就已有该字段，则该字段会被覆写         |\n\n这个操作等价于以下伪 SQL 操作：\n\n```\nSELECT *, <output array field>\nFROM collection\nWHERE <output array field> IN (SELECT *\n                               FROM <collection to join>\n                               WHERE <foreignField>= <collection.localField>);\n```\n\n**例子：**\n\n- 指定一个相等匹配条件\n- 对数组字段应用相等匹配\n- 组合 mergeObjects 应用相等匹配\n\n### 自定义连接条件、拼接子查询\n\n如果需要指定除相等匹配之外的连接条件，或指定多个相等匹配条件，或需要拼接被连接集合的子查询结果，那可以使用如下定义：\n\n```js\nlookup({\n  from: <要连接的集合名>,\n  let: { <变量 1>: <表达式 1>, ..., <变量 n>: <表达式 n> },\n  pipeline: [ <在要连接的集合上进行的流水线操作> ],\n  as: <输出的数组字段名>\n})\n```\n\n**参数详细说明**\n\n|参数字段 |说明                                                                                                                                                    |\n|----   |----                                                                                                                                                    |\n|from   |要进行连接的另外一个集合的名字                                                                                                                                       |\n|let   |可选。指定在 pipeline 中可以使用的变量，变量的值可以引用输入记录的字段，比如 let: { userName: '$name' } 就代表将输入记录的 name 字段作为变量 userName 的值。在 pipeline 中无法直接访问输入记录的字段，必须通过 let 定义之后才能访问，访问的方式是在 expr 操作符中用 $$变量名 的方式访问，比如 $$userName。 |\n|pipeline |指定要在被连接集合中运行的聚合操作。如果要返回整个集合，则该字段取值空数组 []。在 pipeline 中无法直接访问输入记录的字段，必须通过 let 定义之后才能访问，访问的方式是在 expr 操作符中用 $$变量名 的方式访问，比如 $$userName。                                       |\n|as    |指定连接匹配出的记录列表要存放的字段名，这个数组包含的是匹配出的来自 from 集合的记录。如果输入记录中本来就已有该字段，则该字段会被覆写                                                                                   |\n\n该操作等价于以下伪 SQL 语句：\n\n```\nSELECT *, <output array field>\nFROM collection\nWHERE <output array field> IN (SELECT <documents as determined from the pipeline>\n                               FROM <collection to join>\n                               WHERE <pipeline> );\n```\n\n**例子**\n\n- 指定多个连接条件\n- 拼接被连接集合的子查询\n\n**示例**\n\n**指定一个相等匹配条件**\n\n假设 orders 集合有以下记录：\n\n```js\n[\n  {\"_id\":4,\"book\":\"novel 1\",\"price\":30,\"quantity\":2},\n  {\"_id\":5,\"book\":\"science 1\",\"price\":20,\"quantity\":1},\n  {\"_id\":6}\n]\n```\n\nbooks 集合有以下记录：\n\n```js\n[\n  {\"_id\":\"book1\",\"author\":\"author 1\",\"category\":\"novel\",\"stock\":10,\"time\":1564456048486,\"title\":\"novel 1\"},\n  {\"_id\":\"book3\",\"author\":\"author 3\",\"category\":\"science\",\"stock\":30,\"title\":\"science 1\"},\n  {\"_id\":\"book4\",\"author\":\"author 3\",\"category\":\"science\",\"stock\":40,\"title\":\"science 2\"},\n  {\"_id\":\"book2\",\"author\":\"author 2\",\"category\":\"novel\",\"stock\":20,\"title\":\"novel 2\"},\n  {\"_id\":\"book5\",\"author\":\"author 4\",\"category\":\"science\",\"stock\":50,\"title\":null},\n  {\"_id\":\"book6\",\"author\":\"author 5\",\"category\":\"novel\",\"stock\":\"60\"}\n]\n```\n\n以下聚合操作可以通过一个相等匹配条件连接 `orders` 和 `books` 集合，匹配的字段是 `orders` 集合的 `book` 字段和 `books` 集合的 title 字段：\n\n```js\nconst db = cloud.database()\nlet res = await db.collection('orders').aggregate()\n  .lookup({\n    from: 'books',\n    localField: 'book',\n    foreignField: 'title',\n    as: 'bookList',\n  })\n  .end()\n```\n\n结果：\n\n```js\n[\n  {\n    \"_id\": 4,\n    \"book\": \"novel 1\",\n    \"price\": 30,\n    \"quantity\": 2,\n    \"bookList\": [\n      {\n        \"_id\": \"book1\",\n        \"title\": \"novel 1\",\n        \"author\": \"author 1\",\n        \"category\": \"novel\",\n        \"stock\": 10\n      }\n    ]\n  },\n  {\n    \"_id\": 5,\n    \"book\": \"science 1\",\n    \"price\": 20,\n    \"quantity\": 1,\n    \"bookList\": [\n      {\n        \"_id\": \"book3\",\n        \"category\": \"science\",\n        \"title\": \"science 1\",\n        \"author\": \"author 3\",\n        \"stock\": 30\n      }\n    ]\n  },\n  {\n    \"_id\": 6,\n    \"bookList\": [\n      {\n        \"_id\": \"book5\",\n        \"category\": \"science\",\n        \"author\": \"author 4\",\n        \"stock\": 50,\n        \"title\": null\n      },\n      {\n        \"_id\": \"book6\",\n        \"author\": \"author 5\",\n        \"stock\": \"60\",\n        \"category\": \"novel\"\n      }\n    ]\n  }\n]\n```\n\n对数组字段应用相等匹配\n假设 authors 集合有以下记录：\n\n```js\n[\n  {\"_id\": 1, \"name\": \"author 1\", \"intro\": \"Two-time best-selling sci-fiction novelist\"},\n  {\"_id\": 3, \"name\": \"author 3\", \"intro\": \"UCB assistant professor\"},\n  {\"_id\": 4, \"name\": \"author 4\", \"intro\": \"major in CS\"}\n]\n```\n\nbooks 集合有以下记录：\n\n```js\n[\n  {\"_id\":\"book1\",\"authors\":[\"author 1\"],\"category\":\"novel\",\"stock\":10,\"time\":1564456048486,\"title\":\"novel 1\"},\n  {\"_id\":\"book3\",\"authors\":[\"author 3\", \"author 4\"],\"category\":\"science\",\"stock\":30,\"title\":\"science 1\"},\n  {\"_id\":\"book4\",\"authors\":[\"author 3\"],\"category\":\"science\",\"stock\":40,\"title\":\"science 2\"}\n]\n```\n\n以下操作获取作者信息及他们分别发表的书籍，使用了 lookup 操作匹配 authors 集合的 name 字段和 books 集合的 authors 数组字段：\n\n```js\nconst db = cloud.database()\nlet res = await db.collection('authors').aggregate()\n  .lookup({\n    from: 'books',\n    localField: 'name',\n    foreignField: 'authors',\n    as: 'publishedBooks',\n  })\n  .end()\n```\n\n结果\n\n```js\n[\n  {\n    \"_id\": 1,\n    \"intro\": \"Two-time best-selling sci-fiction novelist\",\n    \"name\": \"author 1\",\n    \"publishedBooks\": [\n      {\n        \"_id\": \"book1\",\n        \"title\": \"novel 1\",\n        \"category\": \"novel\",\n        \"stock\": 10,\n        \"authors\": [\n          \"author 1\"\n        ]\n      }\n    ]\n  },\n  {\n    \"_id\": 3,\n    \"name\": \"author 3\",\n    \"intro\": \"UCB assistant professor\",\n    \"publishedBooks\": [\n      {\n        \"_id\": \"book3\",\n        \"category\": \"science\",\n        \"title\": \"science 1\",\n        \"stock\": 30,\n        \"authors\": [\n          \"author 3\",\n          \"author 4\"\n        ]\n      },\n      {\n        \"_id\": \"book4\",\n        \"title\": \"science 2\",\n        \"category\": \"science\",\n        \"stock\": 40,\n        \"authors\": [\n          \"author 3\"\n        ]\n      }\n    ]\n  },\n  {\n    \"_id\": 4,\n    \"intro\": \"major in CS\",\n    \"name\": \"author 4\",\n    \"publishedBooks\": [\n      {\n        \"_id\": \"book3\",\n        \"category\": \"science\",\n        \"title\": \"science 1\",\n        \"stock\": 30,\n        \"authors\": [\n          \"author 3\",\n          \"author 4\"\n        ]\n      }\n    ]\n  }\n]\n```\n\n**组合 mergeObjects 应用相等匹配**\n\n假设 `orders` 集合有以下记录：\n\n```js\n[\n  {\"_id\":4,\"book\":\"novel 1\",\"price\":30,\"quantity\":2},\n  {\"_id\":5,\"book\":\"science 1\",\"price\":20,\"quantity\":1},\n  {\"_id\":6}\n]\n```\n\n`books` 集合有以下记录：\n\n```js\n[\n  {\"_id\":\"book1\",\"author\":\"author 1\",\"category\":\"novel\",\"stock\":10,\"time\":1564456048486,\"title\":\"novel 1\"},\n  {\"_id\":\"book3\",\"author\":\"author 3\",\"category\":\"science\",\"stock\":30,\"title\":\"science 1\"},\n  {\"_id\":\"book4\",\"author\":\"author 3\",\"category\":\"science\",\"stock\":40,\"title\":\"science 2\"},\n  {\"_id\":\"book2\",\"author\":\"author 2\",\"category\":\"novel\",\"stock\":20,\"title\":\"novel 2\"},\n  {\"_id\":\"book5\",\"author\":\"author 4\",\"category\":\"science\",\"stock\":50,\"title\":null},\n  {\"_id\":\"book6\",\"author\":\"author 5\",\"category\":\"novel\",\"stock\":\"60\"}\n]\n```\n\n以下操作匹配 orders 的 book 字段和 books 的 title 字段，并将 books 匹配结果直接 merge 到 orders 记录中。\n\n```js\nvar db = cloud.database()\nvar $ = db.command.aggregate\nlet res = await db.collection('orders').aggregate()\n  .lookup({\n    from: \"books\",\n    localField: \"book\",\n    foreignField: \"title\",\n    as: \"bookList\"\n  })\n  .replaceRoot({\n    newRoot: $.mergeObjects([ $.arrayElemAt(['$bookList', 0]), '$$ROOT' ])\n  })\n  .project({\n    bookList: 0\n  })\n  .end()\n```\n\n结果\n\n```js\n[\n  {\n    \"_id\": 4,\n    \"title\": \"novel 1\",\n    \"author\": \"author 1\",\n    \"time\": 1564456048486,\n    \"category\": \"novel\",\n    \"stock\": 10,\n    \"book\": \"novel 1\",\n    \"price\": 30,\n    \"quantity\": 2\n  },\n  {\n    \"_id\": 5,\n    \"category\": \"science\",\n    \"title\": \"science 1\",\n    \"author\": \"author 3\",\n    \"stock\": 30,\n    \"book\": \"science 1\",\n    \"price\": 20,\n    \"quantity\": 1\n  },\n  {\n    \"_id\": 6,\n    \"category\": \"science\",\n    \"author\": \"author 4\",\n    \"stock\": 50,\n    \"title\": null\n  }\n]\n```\n\n**指定多个连接条件**\n\n假设 `orders` 集合有以下记录：\n\n```js\n[\n  {\"_id\":4,\"book\":\"novel 1\",\"price\":300,\"quantity\":20},\n  {\"_id\":5,\"book\":\"science 1\",\"price\":20,\"quantity\":1}\n]\n```\n\n`books` 集合有以下记录：\n\n```js\n[\n  {\"_id\":\"book1\",\"author\":\"author 1\",\"category\":\"novel\",\"stock\":10,\"time\":1564456048486,\"title\":\"novel 1\"},\n  {\"_id\":\"book3\",\"author\":\"author 3\",\"category\":\"science\",\"stock\":30,\"title\":\"science 1\"}\n]\n```\n\n以下操作连接 `orders` 和 `books` 集合，要求两个条件：\n\n- orders 的 book 字段与 books 的 title 字段相等\n- books 的 stock 字段 大于或等于 orders 的 quantity 字段\n\n```js\nconst db = cloud.database()\nconst dbCmd = db.command\nconst $ = dbCmd.aggregate\nlet res = await db.collection('orders').aggregate()\n  .lookup({\n    from: 'books',\n    let: {\n      order_book: '$book',\n      order_quantity: '$quantity'\n    },\n    pipeline: $.pipeline()\n      .match(dbCmd.expr($.and([\n        $.eq(['$title', '$$order_book']),\n        $.gte(['$stock', '$$order_quantity'])\n      ])))\n      .project({\n        _id: 0,\n        title: 1,\n        author: 1,\n        stock: 1\n      })\n      .done(),\n    as: 'bookList',\n  })\n  .end()\n```\n\n结果：\n\n```js\n[\n  {\n    \"_id\": 4,\n    \"book\": \"novel 1\",\n    \"price\": 300,\n    \"quantity\": 20,\n    \"bookList\": []\n  },\n  {\n    \"_id\": 5,\n    \"book\": \"science 1\",\n    \"price\": 20,\n    \"quantity\": 1,\n    \"bookList\": [\n      {\n        \"title\": \"science 1\",\n        \"author\": \"author 3\",\n        \"stock\": 30\n      }\n    ]\n  }\n]\n```\n\n**拼接被连接集合的子查询**\n\n假设 `orders` 集合有以下记录：\n\n```js\n[\n  {\"_id\":4,\"book\":\"novel 1\",\"price\":30,\"quantity\":2},\n  {\"_id\":5,\"book\":\"science 1\",\"price\":20,\"quantity\":1}\n]\n```\n\n`books` 集合有以下记录：\n\n```js\n[\n  {\"_id\":\"book1\",\"author\":\"author 1\",\"category\":\"novel\",\"stock\":10,\"time\":1564456048486,\"title\":\"novel 1\"},\n  {\"_id\":\"book3\",\"author\":\"author 3\",\"category\":\"science\",\"stock\":30,\"title\":\"science 1\"},\n  {\"_id\":\"book4\",\"author\":\"author 3\",\"category\":\"science\",\"stock\":40,\"title\":\"science 2\"}\n]\n```\n\n在每条输出记录上加上一个数组字段，该数组字段的值是对 books 集合的一个查询语句的结果：\n\n```js\nconst db = cloud.database()\nconst $ = db.command.aggregate\nlet res = await db.collection('orders').aggregate()\n  .lookup({\n    from: 'books',\n    let: {\n      order_book: '$book',\n      order_quantity: '$quantity'\n    },\n    pipeline: $.pipeline()\n      .match({\n        author: 'author 3'\n      })\n      .project({\n        _id: 0,\n        title: 1,\n        author: 1,\n        stock: 1\n      })\n      .done(),\n    as: 'bookList',\n  })\n  .end()\n```\n\n结果\n\n```js\n[\n  {\n    \"_id\": 4,\n    \"book\": \"novel 1\",\n    \"price\": 30,\n    \"quantity\": 20,\n    \"bookList\": [\n      {\n        \"title\": \"science 1\",\n        \"author\": \"author 3\",\n        \"stock\": 30\n      },\n      {\n        \"title\": \"science 2\",\n        \"author\": \"author 3\",\n        \"stock\": 40\n      }\n    ]\n  },\n  {\n    \"_id\": 5,\n    \"book\": \"science 1\",\n    \"price\": 20,\n    \"quantity\": 1,\n    \"bookList\": [\n      {\n        \"title\": \"science 1\",\n        \"author\": \"author 3\",\n        \"stock\": 30\n      },\n      {\n        \"title\": \"science 2\",\n        \"author\": \"author 3\",\n        \"stock\": 40\n      }\n    ]\n  }\n]\n```\n\n**多表联表查询**\n\n假设 `orders` 集合有以下记录：\n\n```js\n[\n  {\"_id\":4,\"book\":\"book1\",\"price\":30,\"quantity\":2},\n  {\"_id\":5,\"book\":\"book2\",\"price\":20,\"quantity\":1}\n]\n```\n\n`books` 集合有以下记录：\n\n```js\n[\n  {\"_id\":\"book1\",\"author\":\"author1\",\"title\":\"novel 1\"},\n  {\"_id\":\"book2\",\"author\":\"author2\",\"title\":\"science 1\"},\n]\n```\n\n`authors` 集合有以下记录：\n\n```js\n[\n  {\"_id\":\"author1\",\"name\":\"A1\"},\n  {\"_id\":\"author2\",\"author\":\"A2\"}\n]\n```\n\n如需orders关联books，book再关联authors查询，可以在pipeline内再使用lookup\n\n```js\nconst db = cloud.database()\nconst dbCmd = db.command\nconst $ = db.command.aggregate\nlet res = await db.collection('orders').aggregate()\n  .lookup({\n    from: 'books',\n    let: {\n      book_id: '$book'\n    },\n    pipeline: $.pipeline()\n      .match(\n        dbCmd.expr($.eq(['$_id', '$$book_id']))\n      )\n      .lookup({\n        from: 'authors',\n        let: {\n          author_id: '$author'\n        },\n        pipeline: $.pipeline()\n          .match(\n            dbCmd.expr($.eq(['$_id', '$$author_id']))\n          )\n          .done(),\n        as: 'authorList'\n      })\n      .done(),\n    as: 'bookList',\n  })\n  .end()\n\n```\n\n结果如下\n\n```js\n[\n  {\n  \"_id\":4,\n  \"book\":\"book1\",\n  \"price\":30,\n  \"quantity\":2,\n  \"bookList\": [{\n   \"_id\":\"book1\",\n   \"author\":\"author1\",\n   \"title\":\"novel 1\",\n   authorList: [{\n    \"_id\":\"author1\",\n    \"name\":\"A1\"\n   }]\n  }]\n },\n  {\n  \"_id\":5,\n  \"book\":\"book2\",\n  \"price\":20,\n  \"quantity\":1,\n  \"bookList\": [{\n   \"_id\":\"book2\",\n   \"author\":\"author2\",\n   \"title\":\"science 1\",\n   authorList: [{\n    \"_id\":\"author2\",\n    \"name\":\"A2\"\n   }]\n  }]\n }\n]\n```\n\n## match\n\n聚合阶段。根据条件过滤文档，并且把符合条件的文档传递给下一个流水线阶段。\n\n**API 说明**\n\n**match 的形式如下：**\n\n```js\nmatch(<查询条件>)\n```\n\n查询条件与普通查询一致，可以用普通查询操作符，注意 match 阶段和其他聚合阶段不同，不可使用数据库运算方法，只能使用查询操作符。\n\n```js\n// 直接使用字符串\nmatch({\n  name: 'Tony Stark'\n})\n```\n\n```js\n// 使用操作符\nconst dbCmd = db.command\nmatch({\n  age: dbCmd.gt(18)\n})\n```\n\n**示例**\n\n假设集合 articles 有如下记录：\n\n```js\n{ \"_id\" : \"1\", \"author\" : \"stark\",  \"score\" : 80 }\n{ \"_id\" : \"2\", \"author\" : \"stark\",  \"score\" : 85 }\n{ \"_id\" : \"3\", \"author\" : \"bob\",    \"score\" : 60 }\n{ \"_id\" : \"4\", \"author\" : \"li\",     \"score\" : 55 }\n{ \"_id\" : \"5\", \"author\" : \"jimmy\",  \"score\" : 60 }\n{ \"_id\" : \"6\", \"author\" : \"li\",     \"score\" : 94 }\n{ \"_id\" : \"7\", \"author\" : \"justan\", \"score\" : 95 }\n```\n\n**匹配**\n\n下面是一个直接匹配的例子：\n\n```js\nlet res = await db.collection('articles')\n  .aggregate()\n  .match({\n    author: 'stark'\n  })\n  .end()\n```\n\n这里的代码尝试找到所有 author 字段是 stark 的文章，那么匹配如下：\n\n```js\n{ \"_id\" : \"1\", \"author\" : \"stark\", \"score\" : 80 }\n{ \"_id\" : \"2\", \"author\" : \"stark\", \"score\" : 85 }\n```\n\n**计数**\n\nmatch 过滤出文档后，还可以与其他流水线阶段配合使用。\n\n比如下面这个例子，我们使用 group 进行搭配，计算 score 字段大于 80 的文档数量：\n\n```js\nconst dbCmd = db.command\nconst $ = dbCmd.aggregate\nlet res = await db.collection('articles')\n  .aggregate()\n  .match({\n    score: dbCmd.gt(80)\n  })\n  .group({\n      _id: null,\n      count: $.sum(1)\n  })\n  .end()\n```\n\n返回值如下：\n\n```js\n{ \"_id\" : null, \"count\" : 3 }\n```\n\n## project\n\n聚合阶段。把指定的字段传递给下一个流水线，指定的字段可以是某个已经存在的字段，也可以是计算出来的新字段。\n\n**API 说明**\n\n**project 的形式如下：**\n\n```js\nproject({\n  <表达式>\n})\n```\n\n表达式可以有以下格式：\n\n|格式         |说明                                              |\n|----         |----                                              |\n|<字段>: <1 或 true> |指定包含某个已有字段                                      |\n|_id: <0 或 false>  |舍弃 _id 字段                                         |\n|<字段>: <表达式>   |加入一个新字段，或者重置某个已有字段                              |\n|<字段>: <0 或 false> |舍弃某个字段（如果你指定舍弃了某个非 _id 字段，那么在此次 project 中，你不能再使用其它表达式） |\n\n**指定包含字段**\n\n_id 字段是默认包含在输出中的，除此之外其他任何字段，如果想要在输出中体现的话，必须在 project 中指定； 如果指定包含一个尚不存在的字段，那么 project 会忽略这个字段，不会加入到输出的文档中；\n\n**指定排除字段**\n\n如果你在 project 中指定排除某个字段，那么其它字段都会体现在输出中； 如果指定排除的是非 _id 字段，那么在本次 project 中，不能再使用其它表达式；\n\n**加入新的字段或重置某个已有字段**\n\n你可以使用一些特殊的表达式加入新的字段，或重置某个已有字段。\n\n**多层嵌套的字段**\n\n有时有些字段处于多层嵌套的底层，我们可以使用点记法：\n\n```js\n\"contact.phone.number\": <1 or 0 or 表达式>\n```\n\n也可以直接使用嵌套的格式：\n\n```js\ncontact: { phone: { number: <1 or 0 or 表达式> } }\n```\n\n**示例**\n\n假设我们有一个 articles 集合，其中含有以下文档：\n\n```js\n{\n    \"_id\": 666,\n    \"title\": \"This is title\",\n    \"author\": \"Nobody\",\n    \"isbn\": \"123456789\",\n    \"introduction\": \"......\"\n}\n```\n\n**指定包含某些字段**\n\n下面的代码使用 project，让输出只包含 _id、title 和 author 字段：\n\n```js\nlet res = await db.collection('articles')\n  .aggregate()\n  .project({\n    title: 1,\n    author: 1\n  })\n  .end()\n```\n\n输出如下：\n\n```js\n{ \"_id\" : 666, \"title\" : \"This is title\", \"author\" : \"Nobody\" }\n```\n\n**去除输出中的 _id 字段**\n\n_id 是默认包含在输出中的，如果不想要它，可以指定去除它：\n\n```js\nlet res = await db.collection('articles')\n  .aggregate()\n  .project({\n    _id: 0,  // 指定去除 _id 字段\n    title: 1,\n    author: 1\n  })\n  .end()\n```\n\n输出如下：\n\n```js\n{ \"title\" : \"This is title\", \"author\" : \"Nobody\" }\n```\n\n**去除某个非 _id 字段**\n\n我们还可以指定在输出中去掉某个非 _id 字段，这样其它字段都会被输出：\n\n```js\nlet res = await db.collection('articles')\n  .aggregate()\n  .project({\n    isbn: 0,  // 指定去除 isbn 字段\n  })\n  .end()\n```\n\n输出如下，相比输入，没有了 isbn 字段：\n\n```js\n{\n    \"_id\" : 666,\n    \"title\" : \"This is title\",\n    \"author\" : \"Nobody\",\n    \"introduction\": \"......\"\n}\n```\n\n**加入计算出的新字段**\n\n假设我们有一个 students 集合，其中包含以下文档：\n\n```js\n{\n    \"_id\": 1,\n    \"name\": \"小明\",\n    \"scores\": {\n        \"chinese\": 80,\n        \"math\": 90,\n        \"english\": 70\n    }\n}\n```\n\n下面的代码，我们使用 project，在输出中加入了一个新的字段 totalScore：\n\n```js\nconst { sum } = db.command.aggregate\nlet res = await db.collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    name: 1,\n    totalScore: sum([\n        \"$scores.chinese\",\n        \"$scores.math\",\n        \"$scores.english\"\n    ])\n  })\n  .end()\n```\n\n输出为：\n\n```js\n{ \"name\": \"小明\", \"totalScore\": 240 }\n```\n\n**加入新的数组字段**\n\n假设我们有一个 points 集合，包含以下文档：\n\n```js\n{ \"_id\": 1, \"x\": 1, \"y\": 1 }\n{ \"_id\": 2, \"x\": 2, \"y\": 2 }\n{ \"_id\": 3, \"x\": 3, \"y\": 3 }\n```\n\n下面的代码，我们使用 project，把 x 和 y 字段，放入到一个新的数组字段 coordinate 中：\n\n```js\nlet res = await db.collection('points')\n  .aggregate()\n  .project({\n    coordinate: [\"$x\", \"$y\"]\n  })\n  .end()\n```\n\n输出如下：\n\n```js\n{ \"_id\": 1, \"coordinate\": [1, 1] }\n{ \"_id\": 2, \"coordinate\": [2, 2] }\n{ \"_id\": 3, \"coordinate\": [3, 3] }\n```\n\n## replaceRoot\n\n聚合阶段。指定一个已有字段作为输出的根节点，也可以指定一个计算出的新字段作为根节点。\n\n**API 说明**\n\n**replaceRoot 使用形式如下：**\n\n```js\nreplaceRoot({\n    newRoot: <表达式>\n})\n```\n\n表达式格式如下：\n\n|格式   |说明                           |\n|----   |----                           |\n|<字段名> |指定一个已有字段作为输出的根节点（如果字段不存在则报错） |\n|<对象>  |计算一个新字段，并且把这个新字段作为根节点        |\n\n**示例**\n\n**使用已有字段作为根节点**\n\n假设我们有一个 schools 集合，内容如下：\n\n```js\n{\n  \"_id\": 1,\n  \"name\": \"SFLS\",\n  \"teachers\": {\n    \"chinese\": 22,\n    \"math\": 18,\n    \"english\": 21,\n    \"other\": 123\n  }\n}\n```\n\n下面的代码使用 replaceRoot，把 teachers 字段作为根节点输出：\n\n```js\nlet res = await db.collection('schools')\n  .aggregate()\n  .replaceRoot({\n    newRoot: '$teachers'\n  })\n  .end()\n```\n\n输出如下：\n\n```js\n{\n  \"chinese\": 22,\n  \"math\": 18,\n  \"english\": 21,\n  \"other\": 123\n}\n```\n\n**使用计算出的新字段作为根节点**\n\n假设我们有一个 roles 集合，内容如下：\n\n```js\n{ \"_id\": 1, \"first_name\": \"四郎\", \"last_name\": \"黄\" }\n{ \"_id\": 2, \"first_name\": \"邦德\", \"last_name\": \"马\" }\n{ \"_id\": 3, \"first_name\": \"牧之\", \"last_name\": \"张\" }\n```\n\n下面的代码使用 replaceRoot，把 first_name 和 last_name 拼在一起：\n\n```js\nconst { concat } = db.command.aggregate\nlet res = await db.collection('roles')\n  .aggregate()\n  .replaceRoot({\n    newRoot: {\n      full_name: concat(['$last_name', '$first_name'])\n    }\n  })\n  .end()\n```\n\n输出如下：\n\n```js\n{ \"full_name\": \"黄四郎\" }\n{ \"full_name\": \"马邦德\" }\n{ \"full_name\": \"张牧之\" }\n```\n\n## sample\n\n**注意**\n\n- 此方法在数据量大的集合高频调用时可能会导致响应缓慢\n- 腾讯云数据库操作有默认20的limit，如需使用sample返回20条以上数据，请额外指定limit，例：`sample({size:40}).limit(40)`\n\n聚合阶段。随机从文档中选取指定数量的记录。\n\n**API 说明**\n\n**sample 的形式如下：**\n\n```js\nsample({\n    size: <正整数>\n})\n```\n\n请注意：size 是正整数，否则会出错。\n\n**示例**\n\n假设文档 users 有以下记录：\n\n```js\n{ \"name\": \"a\" }\n{ \"name\": \"b\" }\n```\n\n**随机选取**\n\n如果现在进行抽奖活动，需要选出一名幸运用户。那么 sample 的调用方式如下：\n\n```js\nlet res = await db.collection('users')\n  .aggregate()\n  .sample({\n    size: 1\n  })\n  .end()\n```\n\n返回了随机选中的一个用户对应的记录，结果如下：\n\n```js\n{ \"_id\": \"696529e4-7e82-4e7f-812e-5144714edff6\", \"name\": \"b\" }\n```\n\n## skip\n\n聚合阶段。指定一个正整数，跳过对应数量的文档，输出剩下的文档。\n\n**示例**\n\n```js\nlet res = await db.collection('users')\n  .aggregate()\n  .skip(5)\n  .end()\n```\n\n这段代码会跳过查找到的前 5 个文档，并且把剩余的文档输出。\n\n## sort\n\n聚合阶段。根据指定的字段，对输入的文档进行排序。\n\n**API 说明**\n\n**形式如下：**\n\n```js\nsort({\n    <字段名 1>: <排序规则>,\n    <字段名 2>: <排序规则>,\n})\n```\n\n<排序规则>可以是以下取值：\n\n- 1 代表升序排列（从小到大）；\n- -1 代表降序排列（从大到小）；\n\n**示例**\n\n升序/降序排列\n\n假设我们有集合 articles，其中包含数据如下：\n\n```js\n{ \"_id\": \"1\", \"author\": \"stark\",  \"score\": 80, \"age\": 18 }\n{ \"_id\": \"2\", \"author\": \"bob\",    \"score\": 60, \"age\": 18 }\n{ \"_id\": \"3\", \"author\": \"li\",     \"score\": 55, \"age\": 19 }\n{ \"_id\": \"4\", \"author\": \"jimmy\",  \"score\": 60, \"age\": 22 }\n{ \"_id\": \"5\", \"author\": \"justan\", \"score\": 95, \"age\": 33 }\n```\n\n```js\nlet res = await db.collection('articles')\n  .aggregate()\n  .sort({\n      age: -1,\n      score: -1\n  })\n  .end()\n```\n\n上面的代码在 students 集合中进行聚合搜索，并且将结果排序，首先根据 age 字段降序排列，然后再根据 score 字段进行降序排列。\n\n输出结果如下：\n\n```js\n{ \"_id\": \"5\", \"author\": \"justan\", \"score\": 95, \"age\": 33 }\n{ \"_id\": \"4\", \"author\": \"jimmy\",  \"score\": 60, \"age\": 22 }\n{ \"_id\": \"3\", \"author\": \"li\",     \"score\": 55, \"age\": 19 }\n{ \"_id\": \"1\", \"author\": \"stark\",  \"score\": 80, \"age\": 18 }\n{ \"_id\": \"2\", \"author\": \"bob\",    \"score\": 60, \"age\": 18 }\n```\n\n## sortByCount\n\n聚合阶段。根据传入的表达式，将传入的集合进行分组（group）。然后计算不同组的数量，并且将这些组按照它们的数量进行排序，返回排序后的结果。\n\n**API 说明**\n\n**sortByCount 的调用方式如下：**\n\n```js\nsortByCount(<表达式>)\n```\n\n表达式的形式是：$ + 指定字段。请注意：不要漏写 $ 符号。\n\n**示例**\n\n**统计基础类型**\n\n假设集合 passages 的记录如下：\n\n```js\n{ \"category\": \"Web\" }\n{ \"category\": \"Web\" }\n{ \"category\": \"Life\" }\n```\n\n下面的代码就可以统计文章的分类信息，并且计算每个分类的数量。即对 category 字段执行 sortByCount 聚合操作。\n\n```js\nlet res = await db.collection('passages')\n  .aggregate()\n  .sortByCount('$category')\n  .end()\n```\n\n返回的结果如下所示：Web 分类下有2篇文章，Life 分类下有1篇文章。\n\n```js\n{ \"_id\": \"Web\", \"count\": 2 }\n{ \"_id\": \"Life\", \"count\": 1 }\n```\n\n**解构数组类型**\n\n假设集合 passages 的记录如下：tags 字段对应的值是数组类型。\n\n```js\n{ \"tags\": [ \"JavaScript\", \"C#\" ] }\n{ \"tags\": [ \"Go\", \"C#\" ] }\n{ \"tags\": [ \"Go\", \"Python\", \"JavaScript\" ] }\n```\n\n如何统计文章的标签信息，并且计算每个标签的数量？因为 tags 字段对应的数组，所以需要借助 unwind 操作解构 tags 字段，然后再调用 sortByCount。\n\n下面的代码实现了这个功能：\n\n```js\nlet res = await db.collection('passages')\n  .aggregate()\n  .unwind(`$tags`)\n  .sortByCount(`$tags`)\n  .end()\n```\n\n返回的结果如下所示：\n\n```js\n{ \"_id\": \"Go\", \"count\": 2 }\n{ \"_id\": \"C#\", \"count\": 2 }\n{ \"_id\": \"JavaScript\", \"count\": 2 }\n{ \"_id\": \"Python\", \"count\": 1 }\n```\n\n## unwind\n\n聚合阶段。使用指定的数组字段中的每个元素，对文档进行拆分。拆分后，文档会从一个变为一个或多个，分别对应数组的每个元素。\n\n**API 说明**\n\n使用指定的数组字段中的每个元素，对文档进行拆分。拆分后，文档会从一个变为一个或多个，分别对应数组的每个元素。\n\n**unwind 有两种使用形式：**\n\n**参数是一个字段名**\n\n```js\nunwind(<字段名>)\n```\n\n**参数是一个对象**\n\n```js\nunwind({\n    path: <字段名>,\n    includeArrayIndex: <string>,\n    preserveNullAndEmptyArrays: <boolean>\n})\n```\n\n|字段            |类型  |说明                                                                        |\n|----            |----  |----                                                                        |\n|path            |string |想要拆分的数组的字段名，需要以 $ 开头。                                                      |\n|includeArrayIndex     |string |可选项，传入一个新的字段名，数组索引会保存在这个新的字段上。新的字段名不能以 $ 开头。                               |\n|preserveNullAndEmptyArrays |boolean|如果为 true，那么在 path 对应的字段为 null、空数组或者这个字段不存在时，依然会输出这个文档；如果为 false，unwind 将不会输出这些文档。默认为 false。|\n\n**示例**\n\n**拆分数组**\n\n假设我们有一个 products 集合，包含数据如下：\n\n```js\n{ \"_id\": \"1\", \"product\": \"tshirt\", \"size\": [\"S\", \"M\", \"L\"] }\n{ \"_id\": \"2\", \"product\": \"pants\", \"size\": [] }\n{ \"_id\": \"3\", \"product\": \"socks\", \"size\": null }\n{ \"_id\": \"4\", \"product\": \"trousers\", \"size\": [\"S\"] }\n{ \"_id\": \"5\", \"product\": \"sweater\", \"size\": [\"M\", \"L\"] }\n```\n\n我们根据 size 字段对这些文档进行拆分\n\n```js\ndb.collection('products')\n  .aggregate()\n  .unwind('$size')\n  .end()\n```\n\n输出如下：\n\n```js\n{ \"_id\": \"1\", \"product\": \"tshirt\", \"size\": \"S\" }\n{ \"_id\": \"1\", \"product\": \"tshirt\", \"size\": \"M\" }\n{ \"_id\": \"1\", \"product\": \"tshirt\", \"size\": \"L\" }\n{ \"_id\": \"4\", \"product\": \"trousers\", \"size\": \"S\" }\n{ \"_id\": \"5\", \"product\": \"sweater\", \"size\": \"M\" }\n{ \"_id\": \"5\", \"product\": \"sweater\", \"size\": \"L\" }\n```\n\n**拆分后，保留原数组的索引**\n\n我们根据 size 字段对文档进行拆分后，想要保留原数组索引在新的 index 字段中。\n\n```js\nlet res = await db.collection('products')\n  .aggregate()\n  .unwind({\n      path: '$size',\n      includeArrayIndex: 'index'\n  })\n  .end()\n```\n\n输出如下：\n\n```js\n{ \"_id\": \"1\", \"product\": \"tshirt\", \"size\": \"S\", \"index\": 0 }\n{ \"_id\": \"1\", \"product\": \"tshirt\", \"size\": \"M\", \"index\": 1 }\n{ \"_id\": \"1\", \"product\": \"tshirt\", \"size\": \"L\", \"index\": 2 }\n{ \"_id\": \"4\", \"product\": \"trousers\", \"size\": \"S\", \"index\": 0 }\n{ \"_id\": \"5\", \"product\": \"sweater\", \"size\": \"M\", \"index\": 0 }\n{ \"_id\": \"5\", \"product\": \"sweater\", \"size\": \"L\", \"index\": 1 }\n```\n\n**保留字段为空的文档**\n\n注意到我们的集合中有两行特殊的空值数据：\n\n```js\n...\n{ \"_id\": \"2\", \"product\": \"pants\", \"size\": [] }\n{ \"_id\": \"3\", \"product\": \"socks\", \"size\": null }\n...\n```\n\n如果想要在输出中保留 size 为空数组、null，或者 size 字段不存在的文档，可以使用 preserveNullAndEmptyArrays 参数\n\n```js\nlet res = await db.collection('products')\n  .aggregate()\n  .unwind({\n      path: '$size',\n      preserveNullAndEmptyArrays: true\n  })\n  .end()\n```\n\n输出如下：\n\n```js\n{ \"_id\": \"1\", \"product\": \"tshirt\", \"size\": \"S\" }\n{ \"_id\": \"1\", \"product\": \"tshirt\", \"size\": \"M\" }\n{ \"_id\": \"1\", \"product\": \"tshirt\", \"size\": \"L\" }\n{ \"_id\": \"2\", \"product\": \"pants\", \"size\": null }\n{ \"_id\": \"3\", \"product\": \"socks\", \"size\": null }\n{ \"_id\": \"4\", \"product\": \"trousers\", \"size\": \"S\" }\n{ \"_id\": \"5\", \"product\": \"sweater\", \"size\": \"M\" }\n{ \"_id\": \"5\", \"product\": \"sweater\", \"size\": \"L\" }\n```\n\n## end\n\n标志聚合操作定义完成，发起实际聚合操作\n\n**返回值**\n\nPromise.&lt;Object&gt;\n\n|属性 |类型       |说明     |\n|--- |---       |---     |\n|list |Array.&lt;any&gt;|聚合结果列表 |\n\n**示例代码**\n\n```js\nconst $ = db.command.aggregate\nlet res = await db.collection('books').aggregate()\n  .group({\n    // 按 category 字段分组\n    _id: '$category',\n    // 让输出的每组记录有一个 avgSales 字段，其值是组内所有记录的 sales 字段的平均值\n    avgSales: $.avg('$sales')\n  })\n  .end()\n```\n"
  },
  {
    "path": "docs/zh/cloud-database/database-ql/command.md",
    "content": "---\ntitle: 数据库操作符\n---\n\n# 数据库操作符\n\nLaf 云函数支持多种不同的数据库操作符，用于执行查询、更新、删除等操作。\n\n## 初始化操作符\n\n```typescript\nconst db = cloud.database()\nconst _ = db.command\n// 后续操作 用 _ 即可\n```\n\n## 查询·逻辑操作符\n\n### and\n\n查询操作符，用于表示逻辑 \"与\" 的关系，表示需同时满足多个查询筛选条件  \n\n#### 使用说明\n\n `and` 有两种使用情况：  \n\n**1. 用在根查询条件**\n\n 此时需传入多个查询条件，表示需同时满足提供的多个完整查询条件  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where(_.and([\n  {\n    progress: _.gt(50)\n  },\n  {\n    tags: 'cloud'\n  }\n])).get()\n```\n\n但以上用 `and` 组成的查询条件是不必要的，因为传入的对象的各字段隐式组成了 \"与\" 的关系，上述条件等价于下方更简洁的写法：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where({\n  progress: _.gt(50),\n  tags: 'cloud'\n}).get()\n```\n\n通常需要显示使用 `and` 是用在有跨字段或操作的时候\n\n**2. 用在字段查询条件**\n\n 需传入多个查询操作符或常量，表示字段需满足或匹配给定的条件。  \n\n 如以下用前置写法的方式表示 \"progress 字段值大于 50 且小于 100\"  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where({\n  progress: _.and(_.gt(50), _.lt(100))\n}).get()\n```\n\n还可以用后置写法的方式表示同样的条件：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where({\n  progress: _.gt(50).and(_.lt(100))\n}).get()\n```\n\n注意 `Command` 默认也可以直接链式调用其他 `Command`，默认表示多个 `Command` 的与操作，因此上述代码还可以精简为：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where({\n  progress: _.gt(50).lt(100)\n}).get()\n```\n\n### or\n\n查询操作符，用于表示逻辑 \"或\" 的关系，表示需同时满足多个查询筛选条件。或指令有两种用法，一是可以进行字段值的 \"或\" 操作，二是也可以进行跨字段的“或”操作。  \n\n#### 字段值的或操作\n\n 字段值的“或”操作指的是指定一个字段值为多个值之一即可。  \n\n 如筛选出进度大于 80 或小于 20 的 todo：  \n\n 流式写法：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where({\n  progress: _.gt(80).or(_.lt(20))\n}).get()\n```\n\n前置写法：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where({\n  progress: _.or(_.gt(80), _.lt(20))\n}).get()\n```\n\n前置写法也可接收一个数组：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where({\n  progress: _.or([_.gt(80), _.lt(20)])\n}).get()\n```\n\n#### 跨字段的或操作\n\n 跨字段的“或”操作指条件“或”，相当于可以传入多个 where 语句，满足其中一个即可。  \n\n 如筛选出进度大于 80 或已标为已完成的 todo：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where(_.or([\n  {\n    progress: _.gt(80)\n  },\n  {\n    done: true\n  }\n])).get()\n```\n\n### not\n\n查询操作符，用于表示逻辑 \"非\" 的关系，表示需不满足指定的条件。  \n\n#### 示例\n\n 如筛选出进度不等于 100 的 todo：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where({\n  progress: _.not(_.eq(100))\n}).get()\n```\n\n`not` 也可搭配其他逻辑指令使用，包括 `and`, `or`, `nor`, `not`，如 `or`：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where({\n  progress: _.not(_.or([_.lt(50), _.eq(100)]))\n}).get()\n```\n\n### nor\n\n查询操作符，用于表示逻辑 \"都不\" 的关系，表示需不满足指定的所有条件。如果记录中没有对应的字段，则默认满足条件。  \n\n#### 示例 1\n\n 筛选出进度既不小于 20 又不大于 80 的 todo：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where({\n  progress: _.nor([_.lt(20), _.gt(80)])\n}).get()\n```\n\n以上同时会筛选出不存在 `progress` 字段的记录，如果要要求 `progress` 字段存在，可以用 `exists` 指令：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where({\n  progress: _.exists(true).nor([_.lt(20), _.gt(80)])\n  // 等价于以下非链式调用的写法：\n  // progress: _.exists(true).and(_.nor([_.lt(20), _.gt(80)]))\n}).get()\n```\n\n#### 示例 2\n\n 筛选出 `progress` 不小于 20 且 `tags` 数组不包含 `miniprogram` 字符串的记录：  \n\n```js\nconst _ = db.command\ndb.collection('todo').where(_.nor([{\n  progress: _.lt(20),\n}, {\n  tags: 'miniprogram',\n}])).get()\n```\n\n以上会筛选出满足以下条件之一的记录：  \n\n1. `progress` 不小于 20 且 `tags` 数组不包含 `miniprogram` 字符串 3. `progress` 不小于 20 且 `tags` 字段不存在 5. `progress` 字段不存在 且 `tags` 数组不包含 `miniprogram` 字符串 7. `progress` 不小于 20 且 `tags` 字段不存在\n 如果要求 `progress` 和 `tags` 字段存在，可以用 `exists` 指令：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todo').where(\n  _.nor([{\n    progress: _.lt(20),\n  }, {\n    tags: 'miniprogram',\n  }])\n  .and({\n    progress: _.exists(true),\n    tags: _.exists(true),\n  })\n).get()\n```\n\n## 查询·比较操作符\n\n### eq\n\n查询筛选条件，表示字段等于某个值。`eq` 指令接受一个字面量 (literal)，可以是 `number`, `boolean`, `string`, `object`, `array`, `Date`。  \n\n#### 使用说明\n\n 比如筛选出所有自己发表的文章，除了用传对象的方式：  \n\n```js\nconst openID = 'xxx'\nlet res = await db.collection('articles').where({\n  _openid: openID\n}).get()\n```\n\n还可以用指令：  \n\n```js\nconst _ = db.command\nconst openID = 'xxx'\nlet res = await db.collection('articles').where({\n  _openid: _.eq(openid)\n}).get()\n```\n\n注意 `eq` 指令比对象的方式有更大的灵活性，可以用于表示字段等于某个对象的情况，比如：  \n\n```js\n// 这种写法表示匹配 stat.publishYear == 2018 且 stat.language == 'zh-CN'\nlet res = await db.collection('articles').where({\n  stat: {\n    publishYear: 2018,\n    language: 'zh-CN'\n  }\n}).get()\n// 这种写法表示 stat 对象等于 { publishYear: 2018, language: 'zh-CN' }\nconst _ = db.command\nlet res = await db.collection('articles').where({\n  stat: _.eq({\n    publishYear: 2018,\n    language: 'zh-CN'\n  })\n}).get()\n```\n\n### neq\n\n查询筛选条件，表示字段不等于某个值。`eq` 指令接受一个字面量 (literal)，可以是 `number`, `boolean`, `string`, `object`, `array`, `Date`。  \n\n#### 使用说明\n\n 表示字段不等于某个值，和 [eq](#eq) 相反\n\n### lt\n\n查询筛选操作符，表示需小于指定值。可以传入 `Date` 对象用于进行日期比较。  \n\n#### 示例代码\n\n 找出进度小于 50 的 todo  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  progress: _.lt(50)\n})\n.get()\n```\n\n### lte\n\n查询筛选操作符，表示需小于或等于指定值。可以传入 `Date` 对象用于进行日期比较。  \n\n#### 示例代码\n\n 找出进度小于或等于 50 的 todo  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  progress: _.lte(50)\n})\n.get()\n```\n\n### gt\n\n查询筛选操作符，表示需大于指定值。可以传入 `Date` 对象用于进行日期比较。  \n\n#### 示例代码\n\n 找出进度大于 50 的 todo  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  progress: _.gt(50)\n})\n.get()\n```\n\n### gte\n\n查询筛选操作符，表示需大于或等于指定值。可以传入 `Date` 对象用于进行日期比较。  \n\n#### 示例代码\n\n 找出进度大于或等于 50 的 todo  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  progress: _.gte(50)\n})\n.get()\n```\n\n### in\n\n查询筛选操作符，表示要求值在给定的数组内。  \n\n#### 示例代码\n\n 找出进度为 0 或 100 的 todo  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  progress: _.in([0, 100])\n})\n.get()\n```\n\n### nin\n\n查询筛选操作符，表示要求值不在给定的数组内。  \n\n#### 示例代码\n\n 找出进度不是 0 或 100 的 todo  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  progress: _.nin([0, 100])\n})\n.get()\n```\n\n## 查询·字段操作符\n\n### exists\n\n判断字段是否存在，true 为存在，false 为不存在\n\n#### 示例代码\n\n 找出存在 tags 字段的记录  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  tags: _.exists(true)\n})\n.get()\n```\n\n### mod\n\n查询筛选操作符，给定除数 divisor 和余数 remainder，要求字段作为被除数时 value % divisor = remainder。  \n\n#### 示例代码\n\n 找出进度为 10 的倍数的字段的记录  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  progress: _.mod(10, 0)\n})\n.get()\n```\n\n## 查询·数组操作符\n\n### all\n\n数组查询操作符。用于数组字段的查询筛选条件，要求数组字段中包含给定数组的所有元素。  \n\n#### 示例代码 1：普通数组\n\n 找出 tags 数组字段同时包含 cloud 和 database 的记录  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  tags: _.all(['cloud', 'database'])\n})\n.get()\n```\n\n#### 示例代码 2：对象数组\n\n 如果数组元素是对象，则可以用 `_.elemMatch` 匹配对象的部分字段  \n\n 假设有字段 `places` 定义如下：  \n\n```js\n{\n  \"type\": string\n  \"area\": number\n  \"age\": number\n}\n```\n\n找出数组字段中至少同时包含一个满足“area 大于 100 且 age 小于 2”的元素和一个满足“type 为 mall 且 age 大于 5”的元素  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  places: _.all([\n    _.elemMatch({\n      area: _.gt(100),\n      age: _.lt(2),\n    }),\n    _.elemMatch({\n      type: 'mall',\n      age: _.gt(5),\n    }),\n  ]),\n})\n.get()\n```\n\n### elemMatch\n\n用于数组字段的查询筛选条件，要求数组中包含至少一个满足 `elemMatch` 给定的所有条件的元素  \n\n#### 示例代码：数组是对象数组的情况\n\n 假设集合示例数据如下：  \n\n```js\n{\n  \"_id\": \"a0\",\n  \"city\": \"x0\",\n  \"places\": [{\n    \"type\": \"garden\",\n    \"area\": 300,\n    \"age\": 1\n  }, {\n    \"type\": \"theatre\",\n    \"area\": 50,\n    \"age\": 15\n  }]\n}\n```\n\n找出 `places` 数组字段中至少同时包含一个满足“area 大于 100 且 age 小于 2”的元素  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  places: _.elemMatch({\n    area: _.gt(100),\n    age: _.lt(2),\n  })\n})\n.get()\n```\n\n*注意**：如果不使用 `elemMatch` 而直接如下指定条件，则表示的是 `places` 数组字段中至少有一个元素的 `area` 字段大于 100 且 `places` 数组字段中至少有一个元素的 `age` 字段小于 2：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  places: {\n    area: _.gt(100),\n    age: _.lt(2),\n  }\n})\n.get()\n```\n\n#### 示例代码：数组元素都是普通数据类型的情况\n\n 假设集合示例数据如下：  \n\n```js\n{\n  \"_id\": \"a0\",\n  \"scores\": [60, 80, 90]\n}\n```\n\n找出 `scores` 数组字段中至少同时包含一个满足“大于 80 且小于 100”的元素  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  scores: _.elemMatch(_.gt(80).lt(100))\n})\n.get()\n```\n\n### size\n\n更新操作符，用于数组字段的查询筛选条件，要求数组长度为给定值  \n\n#### 示例\n\n 找出 tags 数组字段长度为 2 的所有记录  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').where({\n  places: _.size(2)\n})\n.get()\n```\n\n## 查询·地理位置操作符\n\n### geoNear\n\n按从近到远的顺序，找出字段值在给定点的附近的记录。  \n\n#### 索引要求\n\n 需对查询字段建立地理位置索引  \n\n#### 示例代码\n\n 找出离给定位置 1 公里到 5 公里范围内的记录  \n\n```js\nconst _ = db.command\nlet res = await db.collection('restaurants').where({\n  location: _.geoNear({\n    geometry: new db.Geo.Point(113.323809, 23.097732),\n    minDistance: 1000,\n    maxDistance: 5000,\n  })\n}).get()\n```\n\n### geoWithin\n\n找出字段值在指定区域内的记录，无排序。指定的区域必须是多边形（Polygon）或多边形集合（MultiPolygon）。  \n\n#### 索引要求\n\n 需对查询字段建立地理位置索引  \n\n#### 示例代码 1：给定多边形\n\n```js\nconst _ = db.command\nconst { Point, LineString, Polygon } = db.Geo\nlet res = await .collection('restaurants').where({\n  location: _.geoWithin({\n    geometry: new Polygon([\n      new LineString([\n        new Point(0, 0),\n        new Point(3, 2),\n        new Point(2, 3),\n        new Point(0, 0)\n      ])\n    ]),\n  })\n}).get()\n```\n\n#### 示例代码 2：给定圆形\n\n 可以不用 `geometry` 而用 `centerSphere` 构建一个圆形。  \n\n  `centerSphere` 对应的值的定义是：`[ [经度, 纬度], 半径 ]`  \n\n 半径需以弧度计，比如需要 10km 的半径，则用距离除以地球半径 6378.1km 得出的数字。  \n\n```js\nconst _ = db.command\nlet res = await db.collection('restaurants').where({\n  location: _.geoWithin({\n    centerSphere: [\n      [-88, 30],\n      10 / 6378.1,\n    ]\n  })\n}).get()\n```\n\n### geoIntersects\n\n找出给定的地理位置图形相交的记录  \n\n#### 索引要求\n\n 需对查询字段建立地理位置索引  \n\n#### 示例代码：找出和一个多边形相交的记录\n\n```js\nconst _ = db.command\nconst { Point, LineString, Polygon } = db.Geo\nlet res = await db.collection('restaurants').where({\n  location: _.geoIntersects({\n    geometry: new Polygon([\n      new LineString([\n        new Point(0, 0),\n        new Point(3, 2),\n        new Point(2, 3),\n        new Point(0, 0)\n      ])\n    ]),\n  })\n}).get()\n```\n\n## 查询·表达式操作符\n\n### expr\n\n查询操作符，用于在查询语句中使用聚合表达式，方法接收一个参数，该参数必须为聚合表达式  \n\n#### 使用说明\n\n1. `expr` 可用于在聚合 `match`流水线阶段中引入聚合表达式 3. 如果聚合 `match`阶段是在 `lookup`) 阶段内，此时的 `expr` 表达式内可使用 `lookup` 中使用 `let` 参数定义的变量，具体示例可见 `lookup` 的 `指定多个连接条件` 例子 5. `expr` 可用在普通查询语句（`where`）中引入聚合表达式\n\n#### 示例代码 1：比较同一个记录中的两个字段\n\n 假设 `items` 集合的数据结构如下：  \n\n```js\n{\n  \"_id\": string,\n  \"inStock\": number, // 库存量\n  \"ordered\": number  // 被订量\n}\n```\n\n找出被订量大于库存量的记录：  \n\n```js\nconst _ = db.command\nconst $ = _.aggregate\nlet res = await db.collection('items').where(_.expr($.gt(['$ordered', '$inStock']))).get()\n```\n\n#### 示例代码 2：与条件语句组合使用\n\n 假设 `items` 集合的数据结构如下：  \n\n```json\n{\n  \"_id\": string,\n  \"price\": number\n}\n```\n\n假设价格小于等于 10 的打 8 折，大于 10 的打 5 折，让数据库查询返回打折后价格小于等于 8 的记录：  \n\n```js\nconst _ = db.command\nconst $ = _.aggregate\nlet res = await db.collection('items').where(\n  _.expr(\n    $.lt([\n      $.cond({\n        if: $.gte(['$price', 10]),\n        then: $.multiply(['$price', '0.5']),\n        else: $.multiply(['$price', '0.8']),\n      })\n      ,\n      8\n    ])\n)).get()\n```\n\n## 更新·字段操作符\n\n### set\n\n更新操作符，用于设定字段等于指定值。  \n\n#### 使用说明\n\n 这种方法相比传入纯 JS 对象的好处是能够指定字段等于一个对象  \n\n#### 示例\n\n```js\n// 以下方法只会更新 style.color 为 red，而不是将 style 更新为 { color: 'red' }，即不影响 style 中的其他字段\nlet res = await db.collection('todos').doc('doc-id').update({\n  style: {\n    color: 'red'\n  }\n})\n\n// 以下方法更新 style 为 { color: 'red', size: 'large' }\nlet res = await db.collection('todos').doc('doc-id').update({\n  style: _.set({\n    color: 'red',\n    size: 'large'\n  })\n})\n```\n\n### remove\n\n更新操作符，用于表示删除某个字段。  \n\n#### 示例代码\n\n 删除 style 字段：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('todo-id').update({\n  style: _.remove()\n})\n```\n\n### inc\n\n更新操作符，原子操作，用于指示字段自增  \n\n#### 原子自增\n\n 多个用户同时写，对数据库来说都是将字段自增，不会有后来者覆写前者的情况  \n\n#### 示例代码\n\n 将一个 todo 的进度自增 10：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('todo-id').update({\n  progress: _.inc(10)\n})\n```\n\n### mul\n\n更新操作符，原子操作，用于指示字段自乘某个值  \n\n#### 原子自乘\n\n 多个用户同时写，对数据库来说都是将字段自乘，不会有后来者覆写前者的情况  \n\n#### 示例代码\n\n 将一个 todo 的进度自乘 10：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('todo-id').update({\n  progress: _.mul(10)\n})\n```\n\n### min\n\n更新操作符，给定一个值，只有该值小于字段当前值才进行更新。  \n\n#### 示例代码\n\n 如果字段 progress > 50，则更新到 50  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  progress: _.min(50)\n})\n```\n\n### max\n\n更新操作符，给定一个值，只有该值大于字段当前值才进行更新。  \n\n#### 示例代码\n\n 如果字段 progress < 50，则更新到 50  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  progress: _.max(50)\n})\n```\n\n### rename\n\n更新操作符，字段重命名。如果需要对嵌套深层的字段做重命名，需要用点路径表示法。不能对嵌套在数组里的对象的字段进行重命名。  \n\n#### 示例 1：重命名顶层字段\n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  progress: _.rename('totalProgress')\n})\n```\n\n#### 示例 2：重命名嵌套字段\n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  someObject: {\n    someField: _.rename('someObject.renamedField')\n  }\n})\n```\n\n或：\n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  'someObject.someField': _.rename('someObject.renamedField')\n})\n```\n\n## 更新·数组操作符\n\n### push\n\n数组更新操作符。对一个值为数组的字段，往数组添加一个或多个值。或字段原为空，则创建该字段并设数组为传入值。  \n\n#### 参数说明\n\n**position 说明**\n\n 要求必须同时有 `each` 参数存在。  \n\n 非负数代表从数组开始位置数的位置，从 0 开始计。如果数值大于等于数组长度，则视为在尾部添加。负数代表从数组尾部倒数的位置，比如 -1 就代表倒数第二个元素的位置。如果负数数值的绝对值大于等于数组长度，则视为从数组头部添加。  \n\n**sort 说明**\n\n 要求必须同时有 `each` 参数存在。给定 1 代表升序，-1 代表降序。  \n\n 如果数组元素是记录，则用 `{ <字段>: 1 | -1 }` 的格式表示根据记录中的什么字段做升降序排序。  \n\n**slice** 说明**\n\n 要求必须同时有 `each` 参数存在  \n\n|值  |说明         |\n|:-: |:-:         |\n|0  |将字段更新为空数组  |\n|正数 |数组只保留前 n 个元素|\n|负数 |数组只保留后 n 个元素|\n\n#### 示例 1：尾部添加元素\n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.push(['mini-program', 'cloud'])\n})\n```\n\n#### 示例 2：从第二个位置开始插入\n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.push({\n    each: ['mini-program', 'cloud'],\n    position: 1,\n  })\n})\n```\n\n#### 示例 3：排序\n\n插入后对整个数组做排序  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.push({\n    each: ['mini-program', 'cloud'],\n    sort: 1,\n  })\n})\n```\n\n不插入，只对数组做排序  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.push({\n    each: [],\n    sort: 1,\n  })\n})\n```\n\n如果字段是对象数组，可以如下根据元素对象里的字段进行排序：  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.push({\n    each: [\n      { name: 'miniprogram', weight: 8 },\n      { name: 'cloud', weight: 6 },\n    ],\n    sort: {\n      weight: 1,\n    },\n  })\n})\n```\n\n#### 示例 4：截断保留\n\n 插入后只保留后 2 个元素  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.push({\n    each: ['mini-program', 'cloud'],\n    slice: -2,\n  })\n})\n```\n\n#### 示例 5：在指定位置插入、然后排序、最后只保留前 2 个元素\n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.push({\n    each: ['mini-program', 'cloud'],\n    position: 1,\n    slice: 2,\n    sort: 1,\n  })\n})\n```\n\n### pop\n\n数组更新操作符，对一个值为数组的字段，将数组尾部元素删除，仅可以删除末尾一个\n\n#### 示例代码\n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.pop()\n})\n```\n\n### unshift\n\n数组更新操作符，对一个值为数组的字段，往数组头部添加一个或多个值。或字段原为空，则创建该字段并设数组为传入值。  \n\n#### 示例代码\n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.unshift(['mini-program', 'cloud'])\n})\n```\n\n### shift\n\n数组更新操作符，对一个值为数组的字段，将数组头部元素删除。  \n\n#### 示例代码\n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.shift()\n})\n```\n\n### pull\n\n数组更新操作符。给定一个值或一个查询条件，将数组中所有匹配给定值或查询条件的元素都移除掉。  \n\n#### 示例代码 1：根据常量匹配移除\n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.pull('database')\n})\n```\n\n#### 示例代码 2：根据查询条件匹配移除\n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.pull(_.in(['database', 'cloud']))\n})\n```\n\n#### 示例代码 3：对象数组时，根据查询条件匹配移除\n\n 假设有字段 `places` 数组中的元素结构如下  \n\n```json\n{\n  \"type\": string\n  \"area\": number\n  \"age\": number\n}\n```\n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  places: _.pull({\n    area: _.gt(100),\n    age: _.lt(2),\n  })\n})\n```\n\n#### 示例代码 4：有嵌套对象的对象数组时，根据查询条件匹配移除\n\n 假设有字段 `cities` 数组中的元素结构如下  \n\n```js\n{\n  \"name\": string\n  \"places\": Place[]\n}\n```\n\n`Place` 结构如下：  \n\n```js\n{\n  \"type\": string\n  \"area\": number\n  \"age\": number\n}\n```\n\n可用 `elemMatch` 匹配嵌套在对象数组里面的对象数组字段 places  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  cities: _.pull({\n    places: _.elemMatch({\n      area: _.gt(100),\n      age: _.lt(2),\n    })\n  })\n})\n```\n\n### pullAll\n\n数组更新操作符。给定一个值或一个查询条件，将数组中所有匹配给定值的元素都移除掉。跟 `pull` 的差别在于只能指定常量值、传入的是数组。  \n\n#### 示例代码：根据常量匹配移除\n\n 从 tags 中移除所有 database 和 cloud 字符串  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.pullAll(['database', 'cloud'])\n})\n```\n\n### addToSet\n\n数组更新操作符。原子操作。给定一个或多个元素，除非数组中已存在该元素，否则添加进数组。  \n\n#### 示例代码 1：添加一个元素\n\n 如果 tags 数组中不包含 database，添加进去  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.addToSet('database')\n})\n```\n\n#### 示例代码 2：添加多个元素\n\n需传入一个对象，其中有一个字段 `each`，其值为数组，每个元素就是要添加的元素  \n\n```js\nconst _ = db.command\nlet res = await db.collection('todos').doc('doc-id').update({\n  tags: _.addToSet({\n    $each: ['database', 'cloud']\n  })\n})\n```\n"
  },
  {
    "path": "docs/zh/cloud-database/database-ql/del.md",
    "content": "---\ntitle: 删除数据\n---\n\n# 删除数据\n\nLaf 云数据库删除数据，包括删除文档和删除集合。同时支持单个删除和批量删除。\n\n## 通过指定条件删除单个文档\n\n我们可以配合 `where` 以及各种高级指令来使用 `remove`。\n\n```js\n  // 删除 user 集合中，name 为 jack 的一条记录\n  const res = await db.collection('user').where({ name: \"jack\" }).remove()\n  console.log(res)\n```\n\n## 通过指定条件批量删除文档\n\n上面示例执行一次只能删除一条数据，如果想要批量删除要在 `remove()` 中添加 `{multi: true}`\n\n```js\n// 删除 user 表中所有 name 为 jack 的记录\nawait db.collection('user')\n.where({ name: \"jack\" })\n.remove({ multi: true })\n```\n\n## 清空集合（危险操作）\n\n如果我们想删除一个集合中的所有数据，可以这样操作。\n\n```js\n// 清空 user 集合\nawait db.collection('user').remove({ multi: true })\n```\n"
  },
  {
    "path": "docs/zh/cloud-database/database-ql/find.md",
    "content": "---\ntitle: 查询数据\n---\n\n# 查询数据\n\nLaf 云数据库支持传入不同的条件来查询数据，并且对查询结果进行处理。本文档将通过示例说明如何通过 `cloud.database()` 在云函数中执行查询。\n\n查询数据操作主要支持 `where()` `limit()` `skip()` `orderBy()` `field()` `get()` `getOne()` `count()` 等\n\n包括：\n\n[[toc]]\n\n## 获取所有记录\n\n::: tip\n可通过 `where` 设置查询条件，以及通过 `limit` 设置显示数量等\n:::\n\n```typescript\nimport cloud from '@lafjs/cloud'\n// 获取数据库引用\nconst db = cloud.database()\n\nexport async function main(ctx: FunctionContext) {\n  // get 方法发起查询请求，不带 where 就是直接查询全部数据，默认最多查询 100 条数据\n  const result1 = await db.collection('user').get()\n  console.log(result1) \n\n  // get 方法发起查询请求，配置 where 条件\n  const result2 = await db.collection('user').where({\n    name: 'laf'\n  }).get()\n  console.log(result2) \n\n  // get 方法发起查询请求，想一次获取更多数据，最多一次获取 1000 条数据\n  const result3 = await db.collection('user').limit(1000).get()\n  console.log(result3) \n}\n```\n\n`get()` 前面支持 `where()`、`limit()`、`skip()`、`orderBy()`、`field()` 等操作。下面会逐一讲解。\n\n## 获取一条记录\n\n如果我们查询的数据只有一条，我们也可以使用 getOne 方法，它和 get 方法不同的是它只能获取一条数据，并且 data 的格式为对象。\n\n```typescript\nimport cloud from '@lafjs/cloud'\n// 获取数据库引用\nconst db = cloud.database()\n\nexport async function main(ctx: FunctionContext) {\n  const res = await db.collection('user').getOne()\n  console.log(res)  \n// getOne 获取的结果：\n// {\n//   ok: true,\n//   data: { _id: '641d21992de2b789c963e5e0', name: 'jack' },\n//   requestId: undefined\n// }\n\n  const res = await db.collection('user').get()\n  console.log(res) \n// get 获取的结果：\n// {\n//   data: [ { _id: '641d22292de2b789c963e5fd', name: 'jack' } ],\n//   requestId: undefined,\n//   ok: true\n// }\n}\n```\n\n`getOne()` 前面支持 `where()`、`limit()`、`skip()`、`orderBy()`、`field()` 等操作。下面会逐一讲解。\n\n## 添加查询条件\n\n`collection.where()`\n\n设置查询条件条件\nwhere 可接收对象作为参数，表示筛选出拥有和传入对象相同的 key-value 的文档。支持多个条件同时筛选。\n\n比如筛选出所有名字叫 jack 的用户：\n\n```typescript\n// 查询 user 集合中 name 字段等于 jack 的记录\nawait db.collection(\"user\").where({\n name:\"jack\"\n});\n```\n\n:::tip\n这里注意，`where` 并不会去查询数据，需参考我们上面的栗子加上 `get()` 或者 `getOne()`\n:::\n\n## 根据 ID 查询数据\n\n`collection.doc()`\n\n跟 `where` 的区别是，`doc` 只根据_id 筛选\n\n::: warning\n如果是用 cloud.database() 新增的文档，_id 类型为字符串\n如果是用 cloud.mongo.db 新增的文档，_id 类型一般为 ObjectId\n:::\n\n```typescript\n// 查询 user 集合中 _id 为 '644148fd1eeb2b524dba499e' 的文档\nawait db.collection(\"user\").doc('644148fd1eeb2b524dba499e').get();\n\n// 其实等同于 where 的筛选条件只有 _id\nawait db.collection(\"user\").where({\n  _id: '644148fd1eeb2b524dba499e'\n}).getOne();\n```\n\n```typescript\n// _id 的类型为 ObjectId 的情况\nimport { ObjectId } from 'mongodb' // 需要在云函数顶部引入 ObjectId 类型\n\nawait db.collection(\"user\").doc(ObjectId('644148fd1eeb2b524dba499e'));\n```\n\n## 高级查询指令\n\n::: tip\n`where` 结尾不会直接查询，需要后面加 `get` 或 `getOne`\n:::\n\n### gt 字段大于指定值\n\n可用于查询数字、日期等类型的字段。如果是字符串对比，则会按照字典序进行比较。\n  \n此例子筛选出所有年龄大于 18 的用户：\n\n```typescript\nconst db = cloud.database()\nconst _ = db.command; // 这里拿到指令\nawait db.collection(\"user\").where({\n    age: _.gt(18) // 表示大于 18\n  },\n);\n```\n\n### gte 字段大于或等于指定值\n\n可用于查询数字、日期等类型的字段。如果是字符串对比，则会按照字典序进行比较。\n\n```typescript\nconst db = cloud.database()\nconst _ = db.command; // 这里拿到指令\nawait db.collection(\"user\").where({\n    age: _.gte(18) // 表示大于或等于 18\n  },\n);\n```\n\n### lt 字段小于指定值\n\n可用于查询数字、日期等类型的字段。如果是字符串对比，则会按照字典序进行比较。\n\n### lte 字段小于或等于指定值\n\n可用于查询数字、日期等类型的字段。如果是字符串对比，则会按照字典序进行比较。\n\n### eq 表示字段等于某个值\n\n`eq` 指令接受一个字面量 (literal)，可以是 `number`, `boolean`, `string`, `object`, `array`。\n\n比如筛选出所有自己发表的文章，除了用传对象的方式：\n\n```typescript\nconst myOpenID = \"xxx\";\nawait db.collection(\"articles\").where({\n  _openid: myOpenID,\n});\n```\n\n还可以用指令：\n\n```typescript\nconst db = cloud.database()\nconst _ = db.command;\nconst myOpenID = \"xxx\";\nawait db.collection(\"articles\").where({\n  _openid: _.eq(myOpenID),\n});\n```\n\n注意 `eq` 指令比对象的方式有更大的灵活性，可以用于表示字段等于某个对象的情况，比如：\n\n```typescript\n// 这种写法表示匹配 stat.publishYear == 2018 且 stat.language == 'zh-CN'\nawait db.collection(\"articles\").where({\n  stat: {\n    publishYear: 2018,\n    language: \"zh-CN\",\n  },\n});\n\n// 这种写法表示 stat 对象等于 { publishYear: 2018, language: 'zh-CN' }\nconst _ = db.command;\nawait db.collection(\"articles\").where({\n  stat: _.eq({\n    publishYear: 2018,\n    language: \"zh-CN\",\n  }),\n});\n```\n\n### neq 表示字段不等于某个值\n\n字段不等于。`neq` 指令接受一个字面量 (literal)，可以是 `number`, `boolean`, `string`, `object`, `array`。\n\n如筛选出品牌不为 X 的计算机：\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"goods\").where({\n  category: \"computer\",\n  type: {\n    brand: _.neq(\"X\"),\n  },\n});\n```\n\n### in 字段值在给定的数组中\n\n如：筛选出年龄为 18 或 20 岁的用户：\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"user\").where({\n    age: _.in([18, 20]),\n});\n```\n\n### nin 字段值不在给定的数组中\n\n筛选出年龄不是 18 或 20 岁的用户：\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"user\").where({\n    age: _.nin([8, 20]),\n});\n```\n\n### and 表示需同时满足指定的两个或以上的条件\n\n如筛选出年龄大于 18 小于 60 的用户：\n\n流式写法：\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"user\").where({\n    age: _.gt(18).and(_.lt(60)),\n});\n```\n\n前置写法：\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"user\").where({\n    age: _.and(_.gt(18), _.lt(60)),\n});\n```\n\n### or 表示需满足所有指定条件中的至少一个\n\n如筛选出用户年龄等于 18 或等于 60 的用户：\n\n流式写法：\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"user\").where({\n    age: _.eq(18).or(_.eq(60)),\n});\n```\n\n前置写法：\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"user\").where({\n    age: _.or(_.eq(18),_.eq(60)),\n});\n```\n\n如果要跨字段“或”操作：(如筛选出内存 8g 或 cpu 3.2 ghz 的计算机)\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"goods\").where(\n  _.or(\n    {\n      type: {\n        memory: _.gt(8),\n      },\n    },\n    {\n      type: {\n        cpu: 3.2,\n      },\n    }\n  )\n);\n```\n\n### exists 判断字段是否存在\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"users\").where(\n  name: _.exists(true), // name 字段存在\n  age: _.exists(false), // age 字段不存在\n);\n```\n\n## 正则表达式查询\n\n`new RegExp` 根据正则表达式进行筛选\n\n例如下面可以筛选出 `version` 字段开头是 \"数字+s\" 的记录，并且忽略大小写：\n\n```typescript\n// 可以直接使用正则表达式\nawait db.collection('articles').where({\n  version: /^\\ds/i\n})\n\n// 或者\nawait db.collection('articles').where({\n  version: new RegExp('^\\\\ds','i')\n})\n```\n\n## 获取查询数量\n\ncollection.count() 查询符合条件的数量\n\n参数\n\n```typescript\nawait db.collection(\"goods\").where({\n  category: \"computer\",\n  type: {\n    memory: 8,\n  },\n}).count()\n```\n\n响应参数\n\n| 字段      | 类型    | 必填 | 说明                     |\n| --------- | ------- | ---- | ------------------------ |\n| code      | string  | 否   | 状态码，操作成功则不返回 |\n| message   | string  | 否   | 错误描述                 |\n| total     | Integer | 否   | 计数结果                 |\n| requestId | string  | 否   | 请求序列号，用于错误排查 |\n\n## 设置记录数量\n\ncollection.limit() 限制展示数量，最大 1000\n\n参数说明\n\n| 参数  | 类型    | 必填 | 说明           |\n| ----- | ------- | ---- | -------------- |\n| value | Integer | 是   | 限制展示的数值 |\n\n使用示例\n\n```typescript\nawait db.collection(\"user\").limit(1).get()\n```\n\n## 设置起始位置\n\ncollection.skip() 跳过展示的数据\n\n参数说明\n\n| 参数  | 类型    | 必填 | 说明           |\n| ----- | ------- | ---- | -------------- |\n| value | Integer | 是   | 跳过展示的数据 |\n\n使用示例\n\n```typescript\nawait db.collection(\"user\").skip(4).get()\n```\n\n## 分页查询\n\n`skip()` 和 `limit()` 组合可做分页查询，这里不能用 `getOne()`\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.database()\n\nexport async function main(ctx: FunctionContext) {\n  // 每页显示数量\n  const pageSize = 3;\n  // 第几页\n  const page = 2;\n  const res = await db.collection('user')\n  .skip((page - 1) * pageSize)\n  .limit(pageSize)\n  .get()\n}\n```\n\n## 嵌套查询\n\n如果是对象或数组中的某个字段进行查询\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.database()\n\nexport async function main(ctx: FunctionContext) {\n  // 查询 userInfo.name = 'Jack' 且 userInfo.age = 10 的数据\n  // 写法 1\n  const result1 = await db.collection('user')\n  .where({\n    userInfo: {\n      name: \"Jack\",\n      age: 10\n    }\n  }).get()\n  // 写法 2\n  const result2 = await db.collection('user')\n  .where({\n    'userInfo.name': 'Jack',\n    'userInfo.age': 10\n  }).get()\n}\n```\n\n如数据库中 `test` 集合中有如下数据\n\n```json\n[\n  {\n    \"arr\":[{\n      \"name\": \"item-1\"\n    },{\n      \"name\": \"item-2\"\n    }]\n  },\n  {\n    \"arr\":[{\n      \"name\": \"item-3\"\n    },{\n      \"name\": \"item-4\"\n    }]\n  }\n]\n```\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.database()\n\nexport async function main(ctx: FunctionContext) {\n  // 查询 arr[0].name = 'item-1'  的数据\n  const result = await db.collection('test')\n  .where({\n    'arr.0.name': \"item-1\"\n  }).get()\n}\n```\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.database()\n\nexport async function main(ctx: FunctionContext) {\n  // 查询 arr 内某个元素的 name 为 'item-2' 的文档\n  const result = await db.collection('test')\n  .where({\n    'arr.name': \"item-2\"\n  }).get()\n}\n```\n\n## 对结果排序\n\ncollection.orderBy() 对数据排序后再展示\n\n参数说明\n\n| 参数      | 类型   | 必填 | 说明                                |\n| --------- | ------ | ---- | ----------------------------------- |\n| field     | string | 是   | 排序的字段                          |\n| orderType | string | 是   | 排序的顺序，升序 (asc) 或 降序 (desc) |\n\n使用示例\n\n```typescript\n// 按照创建时间 createAt 的升序排序\nawait db.collection(\"user\").orderBy(\"createAt\", \"asc\").get()\n```\n\n## 指定返回字段\n\ncollection.field() 只返回指定字段\n\n参数说明\n\n| 参数 | 类型   | 必填 | 说明                                      |\n| ---- | ------ | ---- | ----------------------------------------- |\n| -    | object | 是   | 要过滤的字段，不返回传 0，返回传 1 |\n\n::: tip\n备注：只能指定要返回的字段或者不要返回的字段，即 `{'a': 1, 'b': 0}` 是一种错误的参数格式。默认会显示 id。\n:::\n\n使用示例\n\n```typescript\nawait db.collection(\"user\").field({ age: 1 });\n```\n\n同样的后面也要加上 `get()` 或 `getOne()` ，才可以查询到结果\n\n## with 关联查询\n\nwith / withOne 联表查询，可以实现查询一个集合时，连同某个字段的相关联记录一同查出（可跨表），比如查询“班级”时连同班级内的“学生”一起查询出来，又比如查询“文章”时连同它的“作者”一并查出等等。\n\n:::info\nwith / withOne 联表查询在 sdk 内部是先查询了主表后，再查询子表，然后在本地（云函数或客户端）完成拼接后再传回业务开发者；如果你还没有使用 with 联表查询，推荐使用聚合操作的 [lookup 联表查询](#lookup-关联查询)。\n:::\n\n### 一对多关系查询\n\n主要用于「一对多」关系的子查询，可跨表查询，要求用户拥有子表的查询权限\n\n```typescript\nawait const { data } = await db\n  .collection(\"article\")\n  .with({\n    query: db.collection(\"tag\"),\n    localField: \"id\", // 主表连接键，即 article.id\n    foreignField: \"article_id\", // 子表连接键，即 tag.article_id\n    as: \"tags\", // 查询结果中字段重命名，缺省为子表名\n  })\n  .get();\nconsole.log(data);\n//  [ { id: 1, name: xxx, tags: [...] }  ]\n```\n\n### 一对一关系查询\n\n> 类似 sql left join 查询\n\n```typescript\nconst { data } = await db\n  .collection(\"article\")\n  .withOne({\n    query: db.collection(\"user\"),\n    localField: \"author_id\", // 主表连接键，即 article.id\n    foreignField: \"id\", // 子表连接键，即 tag.article_id\n    as: \"author\", // 查询结果中字段重命名，缺省为子表名\n  })\n  .get();\n\nconsole.log(data);\n//  [ { id: 1, name: xxx, author: {...} }  ]\n```\n\n## lookup 关联查询\n\n:::info\nlookup 联表查询并非 `collection` 下的方法！\n\n事实上其为聚合 `aggregate` 下的方法，然而前文提到了 `with 联表查询` 用途与此一致，故在此先做说明，以避免开发者以为 lookup 不得使用，导致额外适配成 with 联表查询的成本。\n:::\n\n用途与 `with 联表查询` 基本一致，同 with 联表查询的示例：查询 article 集合时，把各记录的 tag 标签一同查出。\n\n```typescript\nconst { data } = await db\n  .collection(\"article\")\n  .aggregate()\n  .lookup({\n    from: \"tag\",\n    localField: \"id\", // 主表连接键，即 article.id\n    foreignField: \"article_id\", // 子表连接键，即 tag.article_id\n    as: \"tags\", // 查询结果中字段重命名，缺省为子表名\n  })\n  .end();\nconsole.log(data);\n```\n"
  },
  {
    "path": "docs/zh/cloud-database/database-ql/geo.md",
    "content": "---\ntitle: 地理信息 API\n---\n\n# 地理信息 API\n\n注意：**如果需要对类型为地理位置的字段进行搜索，一定要建立地理位置索引**。\n\n## GEO 数据类型\n\n### Point\n\n用于表示地理位置点，用经纬度唯一标记一个点，这是一个特殊的数据存储类型。\n\n签名：`Point(longitude: number, latitude: number)`\n\n示例：\n\n```js\nnew db.Geo.Point(longitude, latitude);\n```\n\n### LineString\n\n用于表示地理路径，是由两个或者更多的 `Point` 组成的线段。\n\n签名：`LineString(points: Point[])`\n\n示例：\n\n```js\nnew db.Geo.LineString([\n  new db.Geo.Point(lngA, latA),\n  new db.Geo.Point(lngB, latB),\n  // ...\n]);\n```\n\n### Polygon\n\n用于表示地理上的一个多边形（有洞或无洞均可），它是由一个或多个**闭环** `LineString` 组成的几何图形。\n\n由一个环组成的 `Polygon` 是没有洞的多边形，由多个环组成的是有洞的多边形。对由多个环（`LineString`）组成的多边形（`Polygon`），第一个环是外环，所有其他环是内环（洞）。\n\n签名：`Polygon(lines: LineString[])`\n\n示例：\n\n```js\nnew db.Geo.Polygon([\n  new db.Geo.LineString(...),\n  new db.Geo.LineString(...),\n  // ...\n])\n```\n\n### MultiPoint\n\n用于表示多个点 `Point` 的集合。\n\n签名：`MultiPoint(points: Point[])`\n\n示例：\n\n```js\nnew db.Geo.MultiPoint([\n  new db.Geo.Point(lngA, latA),\n  new db.Geo.Point(lngB, latB),\n  // ...\n]);\n```\n\n### MultiLineString\n\n用于表示多个地理路径 `LineString` 的集合。\n\n签名：`MultiLineString(lines: LineString[])`\n\n示例：\n\n```js\nnew db.Geo.MultiLineString([\n  new db.Geo.LineString(...),\n  new db.Geo.LineString(...),\n  // ...\n])\n```\n\n### MultiPolygon\n\n用于表示多个地理多边形 `Polygon` 的集合。\n\n签名：`MultiPolygon(polygons: Polygon[])`\n\n示例：\n\n```js\nnew db.Geo.MultiPolygon([\n  new db.Geo.Polygon(...),\n  new db.Geo.Polygon(...),\n  // ...\n])\n```\n\n## GEO 操作符\n\n### geoNear\n\n按从近到远的顺序，找出字段值在给定点的附近的记录。\n\n签名：\n\n```js\ndb.command.geoNear(options: IOptions)\n\ninterface IOptions {\n  geometry: Point // 点的地理位置\n  maxDistance?: number // 选填，最大距离，米为单位\n  minDistance?: number // 选填，最小距离，米为单位\n}\n```\n\n示例：\n\n```js\ndb.collection(\"user\").where({\n  location: db.command.geoNear({\n    geometry: new db.Geo.Point(lngA, latA),\n    maxDistance: 1000,\n    minDistance: 0,\n  }),\n});\n```\n\n### geoWithin\n\n找出字段值在指定 Polygon / MultiPolygon 内的记录，无排序\n\n签名：\n\n```js\ndb.command.geoWithin(IOptions);\n\ninterface IOptions {\n  geometry: Polygon | MultiPolygon; // 地理位置\n}\n```\n\n示例：\n\n```js\n// 一个闭合的区域\nconst area = new Polygon([\n  new LineString([\n    new Point(lngA, latA),\n    new Point(lngB, latB),\n    new Point(lngC, latC),\n    new Point(lngA, latA),\n  ]),\n]);\n\n// 搜索 location 字段在这个区域中的 user\ndb.collection(\"user\").where({\n  location: db.command.geoWithin({\n    geometry: area,\n  }),\n});\n```\n\n### geoIntersects\n\n找出字段值和给定的地理位置图形相交的记录\n\n签名：\n\n```js\ndb.command.geoIntersects(IOptions);\n\ninterface IOptions {\n  geometry:\n    | Point\n    | LineString\n    | MultiPoint\n    | MultiLineString\n    | Polygon\n    | MultiPolygon; // 地理位置\n}\n```\n\n示例：\n\n```js\n// 一条路径\nconst line = new LineString([new Point(lngA, latA), new Point(lngB, latB)]);\n\n// 搜索 location 与这条路径相交的 user\ndb.collection(\"user\").where({\n  location: db.command.geoIntersects({\n    geometry: line,\n  }),\n});\n```\n"
  },
  {
    "path": "docs/zh/cloud-database/database-ql/index.md",
    "content": "---\ntitle: 云数据库介绍\n---\n\n# 云数据库介绍\n\nLaf 云数据库提供了开箱即用的数据库，无需复杂配置和连接。在云函数中可通过 `cloud.database()` 新建 DB 实例去操作数据库。\n\nLaf 云数据库是使用的 `MongoDB` ，既保留了 `MongoDB` 原生查询数据库操作方法，也封装了更方便的操作方法。\n\nLaf 云数据库是一个 JSON 格式的文档型数据库，数据库中的每条记录都是一个 JSON 格式的文档。因此在 Laf 数据库中，集合对应 MySQL 的数据表，文档对应 MySQL 的行，字段对应 MySQL 的列。\n\n## 基本概念\n\n### 文档\n\n数据库的每条记录都是一个 JSON 格式的文档，如：\n\n```typescript\n{\n  \"username\": \"hello\",\n  \"password\": \"123456\",\n  \"extraInfo\": {\n    \"mobile\": \"15912345678\"\n  }\n}\n```\n\n### 集合\n\n集合是一组文档的集合，每个文档都在一个集合里面。如所有的用户放在 `users` 集合里。\n\n```typescript\n[\n  {\n    \"username\": \"name1\",\n    \"password\": \"123456\",\n    \"extraInfo\": {\n      \"mobile\": \"15912345678\"\n    }\n  },\n  {\n    \"username\": \"name2\",\n    \"password\": \"12345678\",\n    \"extraInfo\": {\n      \"mobile\": \"15912345679\"\n    }\n  }\n  ...\n]\n```\n\n### 数据库\n\n每个 Laf 应用有且仅有一个数据库，但是一个数据库可以创建多个集合。\n\n![dblist](./dblist.jpg)\n\n上图代表当前 laf 应用下有 2 个集合，分别是 `test` 集合和 `messages` 集合\n\n同时在 laf 的 `Web IDE` 中可以很方便的看到全部的集合列表，以及简单的管理。\n\n## 数据类型\n\n云数据库提供了以下类型：\n\n### 常用数据类型\n\n- `String` 字符串类型，存储任意长度的 UTF-8 编码的字符串\n- `Number` 数字类型，包括整数和浮点数\n- `Boolean` 布尔类型，包括 true 和 false\n- `Date` 日期类型，存储日期和时间\n- `ObjectId` 对象 ID 类型，用于存储文档的唯一标识符\n- `Array` 数组类型，可以包含任意数量的值，包括其他数据类型和嵌套数组\n- `Object` 对象类型，可以包含任意数量的键值对，其中值可以是任何数据类型，包括其他对象和嵌套数组\n\n### 其他数据类型\n\n- `Null` 相当于一个占位符，表示一个字段存在但是值为空\n- `GeoPoint` 地理位置点\n- `GeoLineStringLine` 地理路径\n- `GeoPolygon` 地理多边形\n- `GeoMultiPoint` 多个地理位置点\n- `GeoMultiLineString` 多个地理路径\n- `GeoMultiPolygon` 多个地理多边形\n"
  },
  {
    "path": "docs/zh/cloud-database/database-ql/operator.md",
    "content": "---\ntitle: 数据库运算\n---\n\n# 数据库运算\n\n**等同于 mongoDB 聚合操作符概念**\n\n## 算术操作符\n\n### abs\n\n<!--\n/// meta\nkeyword: abs，绝对值\n-->\n\n返回一个数字的绝对值。  \n\n#### API 说明\n\n语法如下：  \n\n```typescript\ndb.command.aggregate.abs(<number>)\n```\n\n`abs` 传入的值除了数字常量外，也可以是任何最终解析成一个数字的表达式。  \n\n 如果表达式解析为 `null` 或者指向一个不存在的字段，则 `abs` 的结果是 `null`。如果值解析为 `NaN`，则结果是 `NaN`。  \n\n#### 示例代码\n\n 假设集合 `ratings` 有如下记录：  \n\n```typescript\n{ _id: 1, start: 5, end: 8 }\n{ _id: 2, start: 4, end: 4 }\n{ _id: 3, start: 9, end: 7 }\n{ _id: 4, start: 6, end: 7 }\n```\n\n···\n可以用如下方式求得各个记录的 `start` 和 `end` 之间的绝对差异大小：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('ratings').aggregate()\n  .project({\n    delta: $.abs($.subtract(['$start', '$end']))\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\" : 1, \"delta\" : 3 }\n{ \"_id\" : 2, \"delta\" : 0 }\n{ \"_id\" : 3, \"delta\" : 2 }\n{ \"_id\" : 4, \"delta\" : 1 }\n```\n\n### add\n\n<!--\n/// meta\nkeyword: 相加，add，日期\n-->\n\n将数字相加或将数字加在日期上。如果数组中的其中一个值是日期，那么其他值将被视为毫秒数加在该日期上。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.add([<表达式1>, <表达式2>, ...])\n```\n\n表达式可以是形如 `$ + 指定字段`，也可以是普通字符串。只要能够被解析成字符串即可。  \n\n#### 示例代码\n\n 假设集合 `staff` 有如下记录：  \n\n```typescript\n{ _id: 1, department: \"x\", sales: 5, engineer: 10, lastUpdate: ISODate(\"2019-05-01T00:00:00Z\") }\n{ _id: 2, department: \"y\", sales: 10, engineer: 20, lastUpdate: ISODate(\"2019-05-01T02:00:00Z\") }\n{ _id: 3, department: \"z\", sales: 20, engineer: 5, lastUpdate: ISODate(\"2019-05-02T03:00:00Z\") }\n```\n\n**数字求和**\n\n 可以用如下方式求得各个记录人数总数：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('staff').aggregate()\n  .project({\n    department: 1,\n    total: $.add(['$sales', '$engineer'])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ _id: 1, department: \"x\", total: 15 }\n{ _id: 2, department: \"y\", total: 30 }\n{ _id: 3, department: \"z\", total: 25 }\n```\n\n**增加日期值**\n\n 如下操作可以获取各个记录的 `lastUpdate` 加一个小时之后的值：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('staff').aggregate()\n  .project({\n    department: 1,\n    lastUpdate: $.add(['$lastUpdate', 60*60*1000])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ _id: 1, department: \"x\", lastUpdate: ISODate(\"2019-05-01T01:00:00Z\") }\n{ _id: 2, department: \"y\", lastUpdate: ISODate(\"2019-05-01T03:00:00Z\") }\n{ _id: 3, department: \"z\", lastUpdate: ISODate(\"2019-05-02T04:00:00Z\") }\n```\n\n### ceil\n\n向上取整，返回大于或等于给定数字的最小整数。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.ceil(<number>)\n```\n\n`<number>` 可以是任意解析为数字的表达式。如果表达式解析为 `null` 或指向一个不存在的字段，则返回 `null`，如果解析为 `NaN`，则返回 `NaN`。  \n\n#### 示例代码\n\n 假设集合 `sales` 有如下记录：  \n\n```typescript\n{ _id: 1, sales: 5.2 }\n{ _id: 2, sales: 1.32 }\n{ _id: 3, sales: -3.2 }\n```\n\n可以用如下方式取各个数字的向上取整值：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('sales').aggregate()\n  .project({\n    sales: $.ceil('$sales')\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ _id: 1, sales: 6 }\n{ _id: 2, sales: 2 }\n{ _id: 3, sales: -3 }\n```\n\n### divide\n\n传入被除数和除数，求商。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.divide([<被除数表达式>, <除数表达式>])\n```\n\n表达式可以是任意解析为数字的表达式。  \n\n#### 示例代码\n\n 假设集合 `railroads` 有如下记录：  \n\n```typescript\n{ _id: 1, meters: 5300 }\n{ _id: 2, meters: 64000 }\n{ _id: 3, meters: 130 }\n```\n\n可以用如下方式取各个数字转换为千米之后的值：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('railroads').aggregate()\n  .project({\n    km: $.divide(['$meters', 1000])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ _id: 1, km: 5.3 }\n{ _id: 2, km: 64 }\n{ _id: 3, km: 0.13 }\n```\n\n### exp\n\n取 e（自然对数的底数，欧拉数）的 n 次方。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.exp(<exponent>)\n```\n\n`<exponent>` 可以是任意解析为数字的表达式。如果表达式解析为 `null` 或指向一个不存在的字段，则返回 `null`，如果解析为 `NaN`，则返回 `NaN`。  \n\n#### 示例代码\n\n 假设集合 `math` 有如下记录：  \n\n```typescript\n{ _id: 1, exp: 0 }\n{ _id: 2, exp: 1 }\n{ _id: 3, exp: 2 }\n```\n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('math').aggregate()\n  .project({\n    result: $.exp('$exp')\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ _id: 1, result: 1 }\n{ _id: 2, result: 2.71828182845905 }\n{ _id: 3, result: 7.38905609893065 }\n```\n\n### floor\n\n向下取整，返回大于或等于给定数字的最小整数。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.floor(<number>)\n```\n\n`<number>` 可以是任意解析为数字的表达式。如果表达式解析为 `null` 或指向一个不存在的字段，则返回 `null`，如果解析为 `NaN`，则返回 `NaN`。  \n\n#### 示例代码\n\n 假设集合 `sales` 有如下记录：  \n\n```typescript\n{ _id: 1, sales: 5.2 }\n{ _id: 2, sales: 1.32 }\n{ _id: 3, sales: -3.2 }\n```\n\n可以用如下方式取各个数字的向下取整值：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('sales').aggregate()\n  .project({\n    sales: $.floor('$sales')\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ _id: 1, sales: 5 }\n{ _id: 2, sales: 1 }\n{ _id: 3, sales: -4 }\n```\n\n### ln\n\n计算给定数字在自然对数值。  \n\n#### API 说明\n\n语法如下：  \n\n```typescript\ndb.command.aggregate.ln(<number>)\n```\n\n`<number>` 可以是任意解析为非负数字的表达式。  \n\n`ln` 等价于 `log([<number>, Math.E])`，其中 `Math.E` 是 `JavaScript` 获取 `e` 的值的方法。  \n\n#### 示例代码\n\n假设集合 curve 有如下记录：\n\n```typescript\n{ _id: 1, x: 1 }\n{ _id: 2, x: 2 }\n{ _id: 3, x: 3 }\n```\n\n计算 ln(x) 的值：\n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('curve').aggregate()\n  .project({\n    log: $.ln('$x')\n  })\n  .end()\n```\n\n返回结果如下：\n\n```typescript\n{ _id: 1, ln: 0 }\n{ _id: 2, ln: 0.6931471805599453 }\n{ _id: 3, ln: 1.0986122886681098 }\n```\n\n### log\n\n计算给定数字在给定对数底下的 log 值。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.log([<number>, <base>])\n```\n\n`<number>` 可以是任意解析为非负数字的表达式。`<base>` 可以是任意解析为大于 1 的数字的表达式。  \n\n 如果任一参数解析为 `null` 或指向任意一个不存在的字段，`log` 返回 `null`。如果任一参数解析为 `NaN`，`log` 返回 `NaN`。  \n\n#### 示例代码\n\n 假设集合 `curve` 有如下记录：  \n\n```typescript\n{ _id: 1, x: 1 }\n{ _id: 2, x: 2 }\n{ _id: 3, x: 3 }\n```\n\n计算 `log2(x)` 的值：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('curve').aggregate()\n  .project({\n    log: $.log(['$x', 2])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ _id: 1, log: 0 }\n{ _id: 2, log: 1 }\n{ _id: 3, log: 1.58496250072 }\n```\n\n### log10\n\n计算给定数字在对数底为 10 下的 log 值。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.log(<number>)\n```\n\n`<number>` 可以是任意解析为非负数字的表达式。  \n\n `log10` 等同于 `log` 方法的第二个参数固定为 10。  \n\n#### 示例代码\n\n#### db.command.aggregate.log10\n\n计算给定数字在对数底为 10 下的 log 值。  \n\n语法如下：  \n\n```typescript\ndb.command.aggregate.log(<number>)\n```\n\n`<number>` 可以是任意解析为非负数字的表达式。  \n\n `log10` 等同于 `log` 方法的第二个参数固定为 10。\n\n### mod\n\n取模运算，取数字取模后的值。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.mod([<dividend>, <divisor>])\n```\n\n第一个数字是被除数，第二个数字是除数。参数可以是任意解析为数字的表达式。  \n\n#### 示例代码\n\n 假设集合 `shopping` 有如下记录：  \n\n```typescript\n{ _id: 1, bags: 3, items: 5 }\n{ _id: 2, bags: 2, items: 8 }\n{ _id: 3, bags: 5, items: 16 }\n```\n\n各记录取 `items` 除以 `bags` 的余数（`items % bags`）：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('shopping').aggregate()\n  .project({\n    overflow: $.mod(['$items', '$bags'])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ _id: 1, overflow: 2 }\n{ _id: 2, overflow: 0 }\n{ _id: 3, overflow: 1 }\n```\n\n### multiply\n\n取传入的数字参数相乘的结果。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.multiply([<expression1>, <expression2>, ...])\n```\n\n参数可以是任意解析为数字的表达式。  \n\n#### 示例代码\n\n 假设集合 `fruits` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"name\": \"apple\", \"price\": 10, \"quantity\": 100 }\n{ \"_id\": 2, \"name\": \"orange\", \"price\": 15, \"quantity\": 50 }\n{ \"_id\": 3, \"name\": \"lemon\", \"price\": 5, \"quantity\": 20 }\n```\n\n求各个水果的的总价值：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('fruits').aggregate()\n  .project({\n    name: 1,\n    total: $.multiply(['$price', '$quantity']),\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"name\": \"apple\", \"total\": 1000 }\n{ \"_id\": 2, \"name\": \"orange\", \"total\": 750 }\n{ \"_id\": 3, \"name\": \"lemo\", \"total\": 100 }\n```\n\n### pow\n\n求给定基数的指数次幂。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.pow([<base>, <exponent>])\n```\n\n参数可以是任意解析为数字的表达式。  \n\n#### 示例代码\n\n 假设集合 `stats` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"x\": 2, \"y\": 3 }\n{ \"_id\": 2, \"x\": 5, \"y\": 7 }\n{ \"_id\": 3, \"x\": 10, \"y\": 20 }\n```\n\n求 `x` 和 `y` 的平方和：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('stats').aggregate()\n  .project({\n    sumOfSquares: $.add([$.pow(['$x', 2]), $.pow(['$y', 2])]),\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"sumOfSquares\": 13 }\n{ \"_id\": 2, \"sumOfSquares\": 74 }\n{ \"_id\": 3, \"sumOfSquares\": 500 }\n```\n\n### sqrt\n\n求平方根。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.sqrt([<number>])\n```\n\n参数可以是任意解析为非负数字的表达式。  \n\n#### 示例代码\n\n 假设直角三角形集合 `triangle` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"x\": 2, \"y\": 3 }\n{ \"_id\": 2, \"x\": 5, \"y\": 7 }\n{ \"_id\": 3, \"x\": 10, \"y\": 20 }\n```\n\n假设 `x` 和 `y` 分别为两直角边，则求斜边长：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('triangle').aggregate()\n  .project({\n    len: $.sqrt([$.add([$.pow(['$x', 2]), $.pow(['$y', 2])])]),\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"len\": 3.605551275463989 }\n{ \"_id\": 2, \"len\": 8.602325267042627 }\n{ \"_id\": 3, \"len\": 22.360679774997898 }\n```\n\n### subtract\n\n将两个数字相减然后返回差值，或将两个日期相减然后返回相差的毫秒数，或将一个日期减去一个数字返回结果的日期。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.subtract([<expression1>, <expression2>])\n```\n\n参数可以是任意解析为数字或日期的表达式。  \n\n#### 示例代码\n\n 假设集合 `scores` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"max\": 10, \"min\": 1 }\n{ \"_id\": 2, \"max\": 7, \"min\": 5 }\n{ \"_id\": 3, \"max\": 6, \"min\": 6 }\n```\n\n求各个记录的 `max` 和 `min` 的差值。：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('scores').aggregate()\n  .project({\n    diff: $.subtract(['$max', '$min'])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"diff\": 9 }\n{ \"_id\": 2, \"diff\": 2 }\n{ \"_id\": 3, \"diff\": 0 }\n```\n\n### trunc\n\n将数字截断为整形。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.trunc(<number>)\n```\n\n参数可以是任意解析为数字的表达式。  \n\n#### 示例代码\n\n 假设集合 `scores` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"value\": 1.21 }\n{ \"_id\": 2, \"value\": 3.83 }\n{ \"_id\": 3, \"value\": -4.94 }\n```\n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('scores').aggregate()\n  .project({\n    int: $.trunc('$value')\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"value\": 1 }\n{ \"_id\": 2, \"value\": 3 }\n{ \"_id\": 3, \"value\": -4 }\n```\n\n## 数组操作符\n\n### arrayElemAt\n\n返回在指定数组下标的元素。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.arrayElemAt([<array>, <index>])\n```\n\n`<array>` 可以是任意解析为数组的表达式。  \n\n `<index>` 可以是任意解析为整形的表达式。如果是正数，`arrayElemAt` 返回在 `index` 位置的元素，如果是负数，`arrayElemAt` 返回从数组尾部算起的 `index` 位置的元素。  \n\n#### 示例代码\n\n 假设集合 `exams` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"scores\": [80, 60, 65, 90] }\n{ \"_id\": 2, \"scores\": [78] }\n{ \"_id\": 3, \"scores\": [95, 88, 92] }\n```\n\n求各个第一次考试的分数和和最后一次的分数：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('exams').aggregate()\n  .project({\n    first: $.arrayElemAt(['$scores', 0]),\n    last: $.arrayElemAt(['$scores', -1]),\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"first\": 80, \"last\": 90 }\n{ \"_id\": 2, \"first\": 78, \"last\": 78 }\n{ \"_id\": 3, \"first\": 95, \"last\": 92 }\n```\n\n### arrayToObject\n\n将一个数组转换为对象。  \n\n#### API 说明\n\n 语法可以取两种：  \n\n 第一种：传入一个二维数组，第二维的数组长度必须为 2，其第一个值为字段名，第二个值为字段值  \n\n```typescript\ndb.command.aggregate.arrayToObject([\n  [<key1>, <value1>],\n  [<key2>, <value2>],\n  ...\n])\n```\n\n第二种：传入一个对象数组，各个对象必须包含字段 `k` 和 `v`，分别指定字段名和字段值  \n\n```typescript\ndb.command.aggregate.arrayToObject([\n  { \"k\": <key1>, \"v\": <value1> },\n  { \"k\": <key2>, \"v\": <value2> },\n  ...\n])\n```\n\n传入 `arrayToObject` 的参数只要可以解析为上述两种表示法之一即可。  \n\n#### 示例代码\n\n 假设集合 `shops` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"sales\": [ [\"max\", 100], [\"min\", 50] ] }\n{ \"_id\": 2, \"sales\": [ [\"max\", 70], [\"min\", 60] ] }\n{ \"_id\": 3, \"sales\": [ { \"k\": \"max\", \"v\": 50 }, { \"k\": \"min\", \"v\": 30 } ] }\n```\n\n将数组转换为对象：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('shops').aggregate()\n  .project({\n    sales: $.arrayToObject('$sales'),\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"sales\": { \"max\": 100, \"min\": 50 } }\n{ \"_id\": 2, \"sales\": { \"max\": 70, \"min\": 60 } }\n{ \"_id\": 3, \"sales\": { \"max\": 50, \"min\": 30 } }\n```\n\n### concatArrays\n\n将多个数组拼接成一个数组。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.concatArrays([ <array1>, <array2>, ... ])\n```\n\n参数可以是任意解析为数组的表达式。  \n\n#### 示例代码\n\n 假设集合 `items` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"fruits\": [ \"apple\" ], \"vegetables\": [ \"carrot\" ] }\n{ \"_id\": 2, \"fruits\": [ \"orange\", \"lemon\" ], \"vegetables\": [ \"cabbage\" ] }\n{ \"_id\": 3, \"fruits\": [ \"strawberry\" ], \"vegetables\": [ \"spinach\" ] }\n```\n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .project({\n    list: $.concatArrays(['$fruits', '$vegetables']),\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"list\": [ \"apple\", \"carrot\" ] }\n{ \"_id\": 2, \"list\": [ \"orange\", \"lemon\", \"cabbage\" ] }\n{ \"_id\": 3, \"list\": [ \"strawberry\", \"spinach\" ] }\n```\n\n### filter\n\n根据给定条件返回满足条件的数组的子集。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.filter({\n  input: <array>,\n  as: <string>,\n  cond: <expression>\n})\n```\n\n|字段 |说明                                                           |\n|---- |----                                                           |\n|input|一个可以解析为数组的表达式                                                |\n|as  |可选，用于表示数组各个元素的变量，默认为 this                                      |\n|cond |一个可以解析为布尔值的表达式，用于判断各个元素是否满足条件，各个元素的名字由 as 参数决定（参数名需加 $$ 前缀，如 $$this）|\n\n参数可以是任意解析为数组的表达式。  \n\n#### 示例代码\n\n 假设集合 `fruits` 有如下记录：  \n\n```typescript\n{\n  \"_id\": 1,\n  \"stock\": [\n    { \"name\": \"apple\", \"price\": 10 },\n    { \"name\": \"orange\", \"price\": 20 }\n  ],\n}\n{\n  \"_id\": 2,\n  \"stock\": [\n    { \"name\": \"lemon\", \"price\": 15 },\n  ],\n}\n```\n\n```typescript\nconst _ = db.command\nconst $ = db.command.aggregate\nlet res = await db.collection('fruits').aggregate()\n  .project({\n    stock: $.filter({\n      input: '$stock',\n      as: 'item',\n      cond: $.gte(['$$item.price', 15])\n    })\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"stock\": [ { \"name\": \"orange\", \"price\": 20} ] }\n{ \"_id\": 2, \"stock\": [ { \"name\": \"lemon\", \"price\": 15 } ] }\n```\n\n### in\n\n给定一个值和一个数组，如果值在数组中则返回 `true`，否则返回 `false`。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.in([<value>, <array>])\n```\n\n`<value>` 可以是任意表达式。  \n\n `<array>` 可以是任意解析为数组的表达式。  \n\n#### 示例代码\n\n 假设集合 `shops` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"topsellers\": [\"bread\", \"ice cream\", \"butter\"] }\n{ \"_id\": 2, \"topsellers\": [\"ice cream\", \"cheese\", \"yagurt\"] }\n{ \"_id\": 3, \"topsellers\": [\"croissant\", \"cucumber\", \"coconut\"] }\n```\n\n标记销量最高的商品包含 `ice cream` 的记录。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('price').aggregate()\n  .project({\n    included: $.in(['ice cream', '$topsellers'])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"included\": true }\n{ \"_id\": 2, \"included\": true }\n{ \"_id\": 3, \"included\": false }\n```\n\n### indexOfArray\n\n在数组中找出等于给定值的第一个元素的下标，如果找不到则返回 -1。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.indexOfArray([ <array expression>, <search expression>, <start>, <end> ])\n```\n\n|字段 |类型  |说明                                      |\n|---- |----  |----                                      |\n|-  |string |一个可以解析为数组的表达式，如果解析为 null，则 indexOfArray 返回 null     |\n|-  |string |对数据各个元素应用的条件匹配表达式                       |\n|-  |integer|可选，用于指定搜索的开始下标，必须是非负整数                  |\n|-  |integer|可选，用于指定搜索的结束下标，必须是非负整数，指定了 时也应指定，否则 默认当做|\n\n参数可以是任意解析为数组的表达式。  \n\n#### 示例代码\n\n 假设集合 `stats` 有如下记录：  \n\n```typescript\n{\n  \"_id\": 1,\n  \"sales\": [ 1, 6, 2, 2, 5 ]\n}\n{\n  \"_id\": 2,\n  \"sales\": [ 4, 2, 1, 5, 2 ]\n}\n{\n  \"_id\": 3,\n  \"sales\": [ 2, 5, 3, 3, 1 ]\n}\n```\n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('stats').aggregate()\n  .project({\n    index: $.indexOfArray(['$sales', 2, 2])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"index\": 2 }\n{ \"_id\": 2, \"index\": 4 }\n{ \"_id\": 3, \"index\": -1 }\n```\n\n### isArray\n\n判断给定表达式是否是数组，返回布尔值。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.isArray(<expression>)\n```\n\n参数可以是任意表达式。  \n\n#### 示例代码\n\n 假设集合 `stats` 有如下记录：  \n\n```typescript\n{\n  \"_id\": 1,\n  \"base\": 10,\n  \"sales\": [ 1, 6, 2, 2, 5 ]\n}\n{\n  \"_id\": 2,\n  \"base\": 1,\n  \"sales\": 100\n}\n```\n\n计算总销量，如果 `sales` 是数字，则求 `sales * base`，如果 `sales` 是数组，则求数组元素之和与 `base` 的乘积。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('stats').aggregate()\n  .project({\n    sum: $.cond({\n      if: $.isArray('$sales'),\n      then: $.multiply([$.sum(['$sales']), '$base']),\n      else: $.multiply(['$sales', '$base']),\n    })\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"sum\": 160 }\n{ \"_id\": 2, \"sum\": 100 }\n```\n\n### map\n\n类似 JavaScript Array 上的 `map` 方法，将给定数组的每个元素按给定转换方法转换后得出新的数组。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.map({\n  input: <expression>,\n  as: <string>,\n  in: <expression>\n})\n```\n\n|字段 |说明                                                   |\n|---- |----                                                   |\n|input|一个可以解析为数组的表达式                                        |\n|as  |可选，用于表示数组各个元素的变量，默认为 this                              |\n|in  |一个可以应用在给定数组的各个元素上的表达式，各个元素的名字由 as 参数决定（参数名需加 $$ 前缀，如 $$this）|\n\n#### 示例代码\n\n 假设集合 `stats` 有如下记录：  \n\n```typescript\n{\n  \"_id\": 1,\n  \"sales\": [ 1.32, 6.93, 2.48, 2.82, 5.74 ]\n}\n{\n  \"_id\": 2,\n  \"sales\": [ 2.97, 7.13, 1.58, 6.37, 3.69 ]\n}\n```\n\n将各个数字截断为整形，然后求和  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('stats').aggregate()\n  .project({\n    truncated: $.map({\n      input: '$sales',\n      as: 'num',\n      in: $.trunc('$$num'),\n    })\n  })\n  .project({\n    total: $.sum('$truncated')\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"total\": 16 }\n{ \"_id\": 2, \"total\": 19 }\n```\n\n### objectToArray\n\n将一个对象转换为数组。方法把对象的每个键值对都变成输出数组的一个元素，元素形如 `{ k: <key>, v: <value> }`。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.objectToArray(<object>)\n```\n\n#### 示例代码\n\n 假设集合 `items` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"attributes\": { \"color\": \"red\", \"price\": 150 } }\n{ \"_id\": 2, \"attributes\": { \"color\": \"blue\", \"price\": 50 } }\n{ \"_id\": 3, \"attributes\": { \"color\": \"yellow\", \"price\": 10 } }\n```\n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .project({\n    array: $.objectToArray('$attributes')\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"array\": [{ \"k\": \"color\", \"v\": \"red\" }, { \"k\": \"price\", \"v\": 150 }] }\n{ \"_id\": 2, \"array\": [{ \"k\": \"color\", \"v\": \"blue\" }, { \"k\": \"price\", \"v\": 50 }] }\n{ \"_id\": 3, \"array\": [{ \"k\": \"color\", \"v\": \"yellow\" }, { \"k\": \"price\", \"v\": 10 }] }\n```\n\n### range\n\n返回一组生成的序列数字。给定开始值、结束值、非零的步长，`range` 会返回从开始值开始逐步增长、步长为给定步长、但不包括结束值的序列。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.range([<start>, <end>, <non-zero step>])\n```\n\n|字段     |说明                         |\n|----     |----                         |\n|start    |开始值，一个可以解析为整形的表达式          |\n|end     |结束值，一个可以解析为整形的表达式          |\n|non-zero step|可选，步长，一个可以解析为非零整形的表达式，默认为 1 |\n\n#### 示例代码\n\n 假设集合 `stats` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"max\": 52 }\n{ \"_id\": 2, \"max\": 38 }\n```\n\n```typescript\nconst $ = db.command.aggregate\ndb.collection('stats').aggregate()\n  .project({\n    points: $.range([0, '$max', 10])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"points\": [0, 10, 20, 30, 40, 50] }\n{ \"_id\": 2, \"points\": [0, 10, 20, 30] }\n```\n\n### reduce\n\n类似 JavaScript 的 `reduce` 方法，应用一个表达式于数组各个元素然后归一成一个元素。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.reduce({\n  input: <array>\n  initialValue: <expression>,\n  in: <expression>\n})\n```\n\n|字段     |说明                                                    |\n|----     |----                                                    |\n|input    |输入数组，可以是任意解析为数组的表达式                                   |\n|initialValue |初始值                                                   |\n|in      |用来作用于每个元素的表达式，在 in 中有两个可用变量，value 是表示累计值的变量，this 是表示当前数组元素的变量|\n\n#### 示例代码\n\n**简易字符串拼接**\n\n 假设集合 `player` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"fullname\": [ \"Stephen\", \"Curry\" ] }\n{ \"_id\": 2, \"fullname\": [ \"Klay\", \"Thompsom\" ] }\n```\n\n获取各个球员的全名，并加 `Player:` 前缀：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('player').aggregate()\n  .project({\n    info: $.reduce({\n      input: '$fullname',\n      initialValue: 'Player:',\n      in: $.concat(['$$value', ' ', '$$this']),\n    })\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"info\": \"Player: Stephen Curry\" }\n{ \"_id\": 2, \"info\": \"Player: Klay Thompson\" }\n```\n\n获取各个球员的全名，不加前缀：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('player').aggregate()\n  .project({\n    name: $.reduce({\n      input: '$fullname',\n      initialValue: '',\n      in: $.concat([\n        '$$value',\n        $.cond({\n          if: $.eq(['$$value', '']),\n          then: '',\n          else: ' ',\n        }),\n        '$$this',\n      ]),\n    })\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"name\": \"Stephen Curry\" }\n{ \"_id\": 2, \"name\": \"Klay Thompson\" }\n```\n\n### reverseArray\n\n返回给定数组的倒序形式。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.reverseArray(<array>)\n```\n\n参数可以是任意解析为数组表达式。  \n\n#### 示例代码\n\n 假设集合 `stats` 有如下记录：  \n\n```typescript\n{\n  \"_id\": 1,\n  \"sales\": [ 1, 2, 3, 4, 5 ]\n}\n```\n\n取 `sales` 倒序：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('stats').aggregate()\n  .project({\n    reversed: $.reverseArray('$sales'),\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"reversed\": [5, 4, 3, 2, 1] }\n```\n\n### size\n\n返回数组长度。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.size(<array>)\n```\n\n`<array>` 可以是任意解析为数组的表达式。  \n\n#### 示例代码\n\n 假设集合 `shops` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"staff\": [ \"John\", \"Middleton\", \"George\" ] }\n{ \"_id\": 2, \"staff\": [ \"Steph\", \"Jack\" ] }\n```\n\n计算各个商店的雇员数量：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('shops').aggregate()\n  .project({\n    totalStaff: $.size('$staff')\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"totalStaff\": 3 }\n{ \"_id\": 2, \"totalStaff\": 2 }\n```\n\n### slice\n\n类似 JavaScritp 的 `slice` 方法。返回给定数组的指定子集。  \n\n#### API 说明\n\n 语法有两种：  \n\n 返回从开头或结尾开始的 `n` 个元素：  \n\n```typescript\ndb.command.aggregate.slice([<array>, <n>])\n```\n\n返回从指定位置算作数组开头、再向后或向前的 `n` 个元素：  \n\n```typescript\ndb.command.aggregate.slice([<array>, <position>, <n>])\n```\n\n`<array>` 可以是任意解析为数组的表达式。  \n\n `<position>` 可以是任意解析为整形的表达式。如果是正数，则将数组的第 `<position>` 个元素作为数组开始；如果 `<position>` 比数组长度更长，`slice` 返回空数组。如果是负数，则将数组倒数第 `<position>` 个元素作为数组开始；如果 `<position>` 的绝对值大于数组长度，则开始位置即为数组开始位置。  \n\n `<n>` 可以是任意解析为整形的表达式。如果 `<position>` 有提供，则 `<n>` 必须为正整数。如果是正数，`slice` 返回前 `n` 个元素。如果是负数，`slice` 返回后 `n` 个元素。  \n\n#### 示例代码\n\n 假设集合 `people` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"hobbies\": [ \"basketball\", \"football\", \"tennis\", \"badminton\" ] }\n{ \"_id\": 2, \"hobbies\": [ \"golf\", \"handball\" ] }\n{ \"_id\": 3, \"hobbies\": [ \"table tennis\", \"swimming\", \"rowing\" ] }\n```\n\n统一返回前两个爱好：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('fruits').aggregate()\n  .project({\n    hobbies: $.slice(['$hobbies', 2]),\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"hobbies\": [ \"basketball\", \"football\" ] }\n{ \"_id\": 2, \"hobbies\": [ \"golf\", \"handball\" ] }\n{ \"_id\": 3, \"hobbies\": [ \"table tennis\", \"swimming\" ] }\n```\n\n### zip\n\n把二维数组的第二维数组中的相同序号的元素分别拼装成一个新的数组进而组装成一个新的二维数组。如可将 `[ [ 1, 2, 3 ], [ \"a\", \"b\", \"c\" ] ]` 转换成 `[ [ 1, \"a\" ], [ 2, \"b\" ], [ 3, \"c\" ] ]`。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.zip({\n  inputs: [<array1>, <array2>, ...],\n  useLongestLength: <boolean>,\n  defaults: <array>\n})\n```\n\n`inputs` 是一个二维数组（`inputs` 不可以是字段引用），其中每个元素的表达式（这个可以是字段引用）都可以解析为数组。如果其中任意一个表达式返回 `null`，`<inputs>` 也返回 `null`。如果其中任意一个表达式不是指向一个合法的字段 / 解析为数组 / 解析为 `null`，则返回错误。  \n\n `useLongestLength` 决定输出数组的长度是否采用输入数组中的最长数组的长度。默认为 `false`，即输入数组中的最短的数组的长度即是输出数组的各个元素的长度。  \n\n `defaults` 是一个数组，用于指定在输入数组长度不一的情况下时采用的数组各元素默认值。指定这个字段则必须指定 `useLongestLength`，否则返回错误。如果 `useLongestLength` 是 `true` 但是 `defaults` 是空或没有指定，则 `zip` 用 `null` 做数组元素的缺省默认值。指定各元素默认值时 `defaults` 数组的长度必须是输入数组最大的长度。  \n\n#### 示例代码\n\n 假设集合 `stats` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"zip1\": [1, 2], \"zip2\": [3, 4], \"zip3\": [5, 6] ] }\n{ \"_id\": 2, \"zip1\": [1, 2], \"zip2\": [3], \"zip3\": [4, 5, 6] ] }\n{ \"_id\": 3, \"zip1\": [1, 2], \"zip2\": [3] ] }\n```\n\n**只传 inputs**\n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .project({\n    zip: $.zip({\n      inputs: [\n        '$zip1', // 字段引用\n        '$zip2',\n        '$zip3',\n      ],\n    })\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"zip\": [ [1, 3, 5], [2, 4, 6] ] }\n{ \"_id\": 2, \"zip\": [ [1, 3, 4] ] }\n{ \"_id\": 3, \"zip\": null }\n```\n\n**设置 useLongestLength**\n\n 如果设 `useLongestLength` 为 `true`：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .project({\n    zip: $.zip({\n      inputs: [\n        '$zip1', // 字段引用\n        '$zip2',\n        '$zip3',\n      ],\n      useLongestLength: true,\n    })\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"zip\": [ [1, 3, 5], [2, 4, 6] ] }\n{ \"_id\": 2, \"zip\": [ [1, 3, 4], [2, null, 5], [null, null, 6] ] }\n{ \"_id\": 3, \"zip\": null }\n```\n\n**设置 defaults**\n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .project({\n    zip: $.zip({\n      inputs: [\n        '$zip1', // 字段引用\n        '$zip2',\n        '$zip3',\n      ],\n      useLongestLength: true,\n      defaults: [-300, -200, -100],\n    })\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"zip\": [ [1, 3, 5], [2, 4, 6] ] }\n{ \"_id\": 2, \"zip\": [ [1, 3, 4], [2, -200, 5], [-300, -200, 6] ] }\n{ \"_id\": 3, \"zip\": null }\n```\n\n## 布尔操作符\n\n### and\n\n给定多个表达式，`and` 仅在所有表达式都返回 `true` 时返回 `true`，否则返回 `false`。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.and([<expression1>, <expression2>, ...])\n```\n\n如果表达式返回 `false`、`null`、`0`、或 `undefined`，表达式会解析为 `false`，否则对其他返回值都认为是 `true`。  \n\n#### 示例代码\n\n 假设集合 `price` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"min\": 10, \"max\": 100 }\n{ \"_id\": 2, \"min\": 60, \"max\": 80 }\n{ \"_id\": 3, \"min\": 30, \"max\": 50 }\n```\n\n求 `min` 大于等于 30 且 `max` 小于等于 80 的记录。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('price').aggregate()\n  .project({\n    fullfilled: $.and([$.gte(['$min', 30]), $.lte(['$max', 80])])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"fullfilled\": false }\n{ \"_id\": 2, \"fullfilled\": true }\n{ \"_id\": 3, \"fullfilled\": true }\n```\n\n### not\n\n给定一个表达式，如果表达式返回 `true`，则 `not` 返回 `false`，否则返回 `true`。注意表达式不能为逻辑表达式（`and`、`or`、`nor`、`not`）。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.not(<expression>)\n```\n\n如果表达式返回 `false`、`null`、`0`、或 `undefined`，表达式会解析为 `false`，否则对其他返回值都认为是 `true`。  \n\n#### 示例代码\n\n 假设集合 `price` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"min\": 10, \"max\": 100 }\n{ \"_id\": 2, \"min\": 60, \"max\": 80 }\n{ \"_id\": 3, \"min\": 30, \"max\": 50 }\n```\n\n求 `min` 不大于 40 的记录。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('price').aggregate()\n  .project({\n    fullfilled: $.not($.gt(['$min', 40]))\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"fullfilled\": true }\n{ \"_id\": 2, \"fullfilled\": false }\n{ \"_id\": 3, \"fullfilled\": true }\n```\n\n### or\n\n给定多个表达式，如果任意一个表达式返回 `true`，则 `or` 返回 `true`，否则返回 `false`。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.or([<expression1>, <expression2>, ...])\n```\n\n如果表达式返回 `false`、`null`、`0`、或 `undefined`，表达式会解析为 `false`，否则对其他返回值都认为是 `true`。  \n\n#### 示例代码\n\n 假设集合 `price` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"min\": 10, \"max\": 100 }\n{ \"_id\": 2, \"min\": 50, \"max\": 60 }\n{ \"_id\": 3, \"min\": 30, \"max\": 50 }\n```\n\n求 `min` 小于 40 或 `max` 大于 60 的记录。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('price').aggregate()\n  .project({\n    fullfilled: $.or([$.lt(['$min', 40]), $.gt(['$max', 60])])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"fullfilled\": true }\n{ \"_id\": 2, \"fullfilled\": false }\n{ \"_id\": 3, \"fullfilled\": true }\n```\n\n## 比较操作符\n\n### cmp\n\n给定两个值，返回其比较值：  \n\n#### API 说明\n\n 如果第一个值小于第二个值，返回 -1\n如果第一个值大于第二个值，返回 1\n如果两个值相等，返回 0  \n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.cmp([<expression1>, <expression2>])\n```\n\n#### 示例代码\n\n 假设集合 `price` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"shop1\": 10, \"shop2\": 100 }\n{ \"_id\": 2, \"shop1\": 80, \"shop2\": 20 }\n{ \"_id\": 3, \"shop1\": 50, \"shop2\": 50 }\n```\n\n求 `shop1` 和 `shop2` 的各个物品的价格对比。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('price').aggregate()\n  .project({\n    compare: $.cmp(['$shop1', '$shop2']))\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"compare\": -1 }\n{ \"_id\": 2, \"compare\": 1 }\n{ \"_id\": 3, \"compare\": 0 }\n```\n\n### eq\n\n匹配两个值，如果相等则返回 `true`，否则返回 `false`。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.eq([<value1>, <value2>])\n```\n\n#### 示例代码\n\n 假设集合 `price` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"value\": 10 }\n{ \"_id\": 2, \"value\": 80 }\n{ \"_id\": 3, \"value\": 50 }\n```\n\n求 `value` 等于 50 的记录。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('price').aggregate()\n  .project({\n    matched: $.eq(['$value', 50])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"matched\": false }\n{ \"_id\": 2, \"matched\": false }\n{ \"_id\": 3, \"matched\": true }\n```\n\n### gt\n\n匹配两个值，如果前者大于后者则返回 `true`，否则返回 `false`。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.gt([<value1>, <value2>])\n```\n\n#### 示例代码\n\n 假设集合 `price` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"value\": 10 }\n{ \"_id\": 2, \"value\": 80 }\n{ \"_id\": 3, \"value\": 50 }\n```\n\n判断 `value` 是否大于 50。  \n\n```typescript\nconst $ = db.command.aggregate\ndb.collection('price').aggregate()\n  .project({\n    matched: $.gt(['$value', 50])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"matched\": false }\n{ \"_id\": 2, \"matched\": true }\n{ \"_id\": 3, \"matched\": false }\n```\n\n### gte\n\n匹配两个值，如果前者大于或等于后者则返回 `true`，否则返回 `false`。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.gte([<value1>, <value2>])\n```\n\n#### 示例代码\n\n 假设集合 `price` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"value\": 10 }\n{ \"_id\": 2, \"value\": 80 }\n{ \"_id\": 3, \"value\": 50 }\n```\n\n判断 `value` 是否大于或等于 50。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await b.collection('price').aggregate()\n  .project({\n    matched: $.gte(['$value', 50])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"matched\": false }\n{ \"_id\": 2, \"matched\": true }\n{ \"_id\": 3, \"matched\": true }\n```\n\n### lt\n\n匹配两个值，如果前者小于后者则返回 `true`，否则返回 `false`。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.lt([<value1>, <value2>])\n```\n\n#### 示例代码\n\n 假设集合 `price` 有如下记录：  \n\n```\n{ \"_id\": 1, \"value\": 10 }\n{ \"_id\": 2, \"value\": 80 }\n{ \"_id\": 3, \"value\": 50 }\n```\n\n判断 `value` 是否小于 50。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('price').aggregate()\n  .project({\n    matched: $.lt(['$value', 50])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"matched\": true }\n{ \"_id\": 2, \"matched\": false }\n{ \"_id\": 3, \"matched\": false }\n```\n\n### lte\n\n匹配两个值，如果前者小于或等于后者则返回 `true`，否则返回 `false`。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.lte([<value1>, <value2>])\n```\n\n#### 示例代码\n\n 假设集合 `price` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"value\": 10 }\n{ \"_id\": 2, \"value\": 80 }\n{ \"_id\": 3, \"value\": 50 }\n```\n\n判断 `value` 是否小于 50。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('price').aggregate()\n  .project({\n    matched: $.lte(['$value', 50])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"matched\": true }\n{ \"_id\": 2, \"matched\": false }\n{ \"_id\": 3, \"matched\": true }\n```\n\n### neq\n\n匹配两个值，如果不相等则返回 `true`，否则返回 `false`。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.neq([<value1>, <value2>])\n```\n\n#### 示例代码\n\n 假设集合 `price` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"value\": 10 }\n{ \"_id\": 2, \"value\": 80 }\n{ \"_id\": 3, \"value\": 50 }\n```\n\n求 `value` 不等于 50 的记录。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('price').aggregate()\n  .project({\n    matched: $.neq(['$value', 50])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"matched\": true }\n{ \"_id\": 2, \"matched\": true }\n{ \"_id\": 3, \"matched\": false }\n```\n\n## 条件操作符\n\n### cond\n\n计算布尔表达式，返回指定的两个值其中之一。  \n\n#### API 说明\n\n `cond` 的使用形式如下：  \n\n```typescript\ncond({ if: <布尔表达式>, then: <真值>, else: <假值>  })\n```\n\n或者：  \n\n```typescript\ncond([ <布尔表达式>, <真值>, <假值> ])\n```\n\n两种形式中，三个参数（`if`、`then`、`else`）都是必须的。  \n\n 如果布尔表达式为真，那么 `$cond` 将会返回 `<真值>`，否则会返回 `<假值>`  \n\n#### 示例代码\n\n 假设集合 `items` 的记录如下：  \n\n```typescript\n{ \"_id\": \"0\", \"name\": \"item-a\", \"amount\": 100 }\n{ \"_id\": \"1\", \"name\": \"item-b\", \"amount\": 200 }\n{ \"_id\": \"2\", \"name\": \"item-c\", \"amount\": 300 }\n```\n\n我们可以使用 `cond`，根据 `amount` 字段，来生成新的字段 `discount`：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .project({\n    name: 1,\n    discount: $.cond({\n        if: $.gte(['$amount', 200]),\n        then: 0.7,\n        else: 0.9\n    })\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{ \"_id\": \"0\", \"name\": \"item-a\", \"discount\": 0.9 }\n{ \"_id\": \"1\", \"name\": \"item-b\", \"discount\": 0.7 }\n{ \"_id\": \"2\", \"name\": \"item-c\", \"discount\": 0.7 }\n```\n\n### ifNull\n\n计算给定的表达式，如果表达式结果为 null、undefined 或者不存在，那么返回一个替代值；否则返回原值。  \n\n#### API 说明\n\n `ifNull` 的使用形式如下：  \n\n```typescript\nifNull([ <表达式>, <替代值> ])\n```\n\n#### 示例代码\n\n 假设集合 `items` 的记录如下：  \n\n```typescript\n{ \"_id\": \"0\", \"name\": \"A\", \"description\": \"这是商品 A\" }\n{ \"_id\": \"1\", \"name\": \"B\", \"description\": null }\n{ \"_id\": \"2\", \"name\": \"C\" }\n```\n\n我们可以使用 `ifNull`，对不存在 `desc` 字段的文档，或者 `desc` 字段为 `null` 的文档，补充一个替代值。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .project({\n    _id: 0,\n    name: 1,\n    description: $.ifNull(['$description', '商品描述空缺'])\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{ \"name\": \"A\", \"description\": \"这是商品 A\" }\n{ \"name\": \"B\", \"description\": \"商品描述空缺\" }\n{ \"name\": \"C\", \"description\": \"商品描述空缺\" }\n```\n\n### switch\n\n根据给定的 `switch-case-default` 计算返回值、  \n\n#### API 说明\n\n `switch` 的使用形式如下：  \n\n```typescript\nswitch({\n    branches: [\n        case: <表达式>, then: <表达式>,\n        case: <表达式>, then: <表达式>,\n        ...\n    ],\n    default: <表达式>\n})\n```\n\n#### 示例代码\n\n 假设集合 `items` 的记录如下：  \n\n```typescript\n{ \"_id\": \"0\", \"name\": \"item-a\", \"amount\": 100 }\n{ \"_id\": \"1\", \"name\": \"item-b\", \"amount\": 200 }\n{ \"_id\": \"2\", \"name\": \"item-c\", \"amount\": 300 }\n```\n\n我们可以使用 `switch`，根据 `amount` 字段，来生成新的字段 `discount`：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .project({\n    name: 1,\n    discount: $.switch({\n        branches: [\n            { case: $.gt(['$amount', 250]), then: 0.8 },\n            { case: $.gt(['$amount', 150]), then: 0.9 }\n        ],\n        default: 1\n    })\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{ \"_id\": \"0\", \"name\": \"item-a\", \"discount\": 1 }\n{ \"_id\": \"1\", \"name\": \"item-b\", \"discount\": 0.9 }\n{ \"_id\": \"2\", \"name\": \"item-c\", \"discount\": 0.8 }\n```\n\n## 日期操作符\n\n**注意**\n\n- 以下日期操作符中`timezone`均支持以下几种形式\n\n```typescript\ntimezone: \"Asia/Shanghai\" // Asia/Shanghai时区\ntimezone: \"+08\" // utc+8 时区\ntimezone: \"+08:30\" // 时区偏移 8 小时 30 分\ntimezone: \"+0830\" // 时区偏移 8 小时 30 分，同上\n```\n\n### dateFromParts\n\n给定日期的相关信息，构建并返回一个日期对象。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.dateFromParts({\n    year: <year>,\n    month: <month>,\n    day: <day>,\n    hour: <hour>,\n    minute: <minute>,\n    second: <second>,\n    millisecond: <ms>,\n    timezone: <tzExpression>\n})\n```\n\n你也可以使用 ISO 8601 的标准：  \n\n```typescript\ndb.command.aggregate.dateFromParts({\n    isoWeekYear: <year>,\n    isoWeek: <week>,\n    isoDayOfWeek: <day>,\n    hour: <hour>,\n    minute: <minute>,\n    second: <second>,\n    millisecond: <ms>,\n    timezone: <tzExpression>\n})\n```\n\n#### 示例代码\n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    date: $.dateFromParts({\n        year: 2017,\n        month: 2,\n        day: 8,\n        hour: 12,\n        timezone: 'America/New_York'\n    }),\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"date\": ISODate(\"2017-02-08T17:00:00.000Z\")\n}\n```\n\n### dateFromString\n\n将一个日期/时间字符串转换为日期对象  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\ndb.command.aggregate.dateFromString({\n    dateString: <dateStringExpression>,\n    timezone: <tzExpression>\n})\n```\n\n#### 示例代码\n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    date: $.dateFromString({\n        dateString: \"2019-05-14T09:38:51.686Z\"\n    })\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n### dateToString\n\n根据指定的表达式将日期对象格式化为符合要求的字符串。  \n\n#### API 说明\n\n `dateToString` 的调用形式如下：  \n\n```typescript\ndb.command.aggregate.dateToString({\n  date: <日期表达式>,\n  format: <格式化表达式>,\n  timezone: <时区表达式>,\n  onNull: <空值表达式>\n})\n```\n\n下面是四种表达式的详细说明：  \n\n|名称     |描述                                                                                                           |\n|----     |----                                                                                                           |\n|日期表达式  |必选。指定字段值应该是能转化为字符串的日期。                                                                                       |\n|格式化表达式 |可选。它可以是任何包含“格式说明符”的有效字符串。                                                                                    |\n|时区表达式  |可选。指明运算结果的时区。它可以解析格式为 [UTC Offset](https://en.wikipedia.org/wiki/List_of_UTC_time_offsets) 或者 [Olson Timezone Identifier](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 的字符串。|\n|空值表达式  |可选。当 <日期表达式> 返回空或者不存在的时候，会返回此表达式指明的值。                                                                          |\n\n下面是格式说明符的详细说明：  \n\n|说明符 |描述               |合法值   |\n|----  |----               |----    |\n|%d   |月份的日期（2 位数，0 填充）    |01 - 31  |\n|%G   |ISO 8601 格式的年份       |0000 - 9999|\n|%H   |小时（2 位数，0 填充，24 小时制）  |00 - 23  |\n|%j   |一年中的一天（3 位数，0 填充）   |001 - 366 |\n|%L   |毫秒（3 位数，0 填充）       |000 - 999 |\n|%m   |月份（2 位数，0 填充）       |01 - 12  |\n|%M   |分钟（2 位数，0 填充）       |00 - 59  |\n|%S   |秒（2 位数，0 填充）        |00 - 60  |\n|%w   |星期几              |1 - 7   |\n|%u   |ISO 8601 格式的星期几      |1 - 7   |\n|%U   |一年中的一周（2 位数，0 填充）   |00 - 53  |\n|%V   |ISO 8601 格式的一年中的一周   |1 - 53   |\n|%Y   |年份（4 位数，0 填充）       |0000 - 9999|\n|%z   |与 UTC 的时区偏移量       |+/-[hh][mm]|\n|%Z   |以分钟为单位，与 UTC 的时区偏移量|+/-mmm   |\n|%%   |百分号作为字符          |%     |\n\n#### 示例代码\n\n 假设集合 `students` 有如下记录：  \n\n```typescript\n{ \"date\": \"1999-12-11T16:00:00.000Z\", \"firstName\": \"Yuanxin\", \"lastName\": \"Dong\" }\n{ \"date\": \"1998-11-10T16:00:00.000Z\", \"firstName\": \"Weijia\", \"lastName\": \"Wang\" }\n{ \"date\": \"1997-10-09T16:00:00.000Z\", \"firstName\": \"Chengxi\", \"lastName\": \"Li\" }\n```\n\n**格式化日期**\n\n 下面是将 `date` 字段的值，格式化成形如 `年份-月份-日期` 的字符串：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    formatDate: $.dateToString({\n      date: '$date',\n      format: '%Y-%m-%d'\n    })\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"formatDate\": \"1999-12-11\" }\n{ \"formatDate\": \"1998-11-10\" }\n{ \"formatDate\": \"1997-10-09\" }\n```\n\n**时区时间**\n\n 下面是将 `date` 字段值格式化为上海时区时间的例子：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    formatDate: $.dateToString({\n      date: '$date',\n      format: '%H:%M:%S',\n      timezone: 'Asia/Shanghai'\n    })\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"formatDate\": \"00:00:00\" }\n{ \"formatDate\": \"00:00:00\" }\n{ \"formatDate\": \"00:00:00\" }\n```\n\n**缺失情况的默认值**\n\n 当指定的 `<日期表达式>` 返回空或者不存在的时候，可以设置缺失情况下的默认值：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    formatDate: $.dateToString({\n      date: '$empty',\n      onNull: 'null'\n    })\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"formatDate\": \"null\" }\n{ \"formatDate\": \"null\" }\n{ \"formatDate\": \"null\" }\n```\n\n### dayOfMonth\n\n返回日期字段对应的天数（一个月中的哪一天），是一个介于 1 至 31 之间的数字。  \n\n#### API 说明\n\n该接口有以下两种用法，语法如下：  \n\n```typescript\ndb.command.aggregate.dayOfMonth(<日期字段>)\n\ndb.command.aggregate.dayOfMonth({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n 假设集合 `dates` 有以下文档：  \n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `dayOfMonth()` 对 `date` 字段进行投影，获取对应的日期：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    dayOfMonth: $.dayOfMonth('$date')\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"dayOfMonth\": 14\n}\n```\n\n### dayOfWeek\n\n返回日期字段对应的天数（一周中的第几天），是一个介于 1（周日）到 7（周六）之间的整数。  \n\n#### API 说明\n\n**注意：周日是每周的第 1 天**  \n\n该接口有以下两种用法，语法如下：  \n\n```typescript\ndb.command.aggregate.dayOfWeek(<日期字段>)\n\ndb.command.aggregate.dayOfWeek({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n 假设集合 `dates` 有以下文档：  \n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `dayOfWeek()` 对 `date` 字段进行投影，获取对应的天数（一周中的第几天）：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    dayOfWeek: $.dayOfWeek('$date')\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"dayOfWeek\": 3\n}\n```\n\n### dayOfYear\n\n返回日期字段对应的天数（一年中的第几天），是一个介于 1 到 366 之间的整数。  \n\n#### API 说明\n\n该接口有以下两种用法，语法如下：  \n  \n```typescript\ndb.command.aggregate.dayOfYear(<日期字段>)\n\ndb.command.aggregate.dayOfYear({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n 假设集合 `dates` 有以下文档：  \n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `dayOfYear()` 对 `date` 字段进行投影，获取对应的天数（一年中的第几天）：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    dayOfYear: $.dayOfYear('$date')\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"dayOfYear\": 134\n}\n```\n\n### hour\n\n返回日期字段对应的小时数，是一个介于 0 到 23 之间的整数。  \n\n#### API 说明\n\n该接口有以下两种用法，语法如下：  \n  \n```typescript\ndb.command.aggregate.hour(<日期字段>)\n\ndb.command.aggregate.hour({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n 假设集合 `dates` 有以下文档：  \n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `hour()` 对 `date` 字段进行投影，获取对应的小时数：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    hour: $.hour('$date')\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"hour\": 9\n}\n```\n\n### isoDayOfWeek\n\n返回日期字段对应的 ISO 8601 标准的天数（一周中的第几天），是一个介于 1（周一）到 7（周日）之间的整数。  \n\n#### API 说明\n\n该接口有以下两种用法，语法如下：  \n  \n```typescript\ndb.command.aggregate.isoDayOfWeek(<日期字段>)\n\ndb.command.aggregate.isoDayOfWeek({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n假设集合 `dates` 有以下文档：\n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `isoDayOfWeek()` 对 `date` 字段进行投影，获取对应的 ISO 8601 标准的天数（一周中的第几天）：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    isoDayOfWeek: $.isoDayOfWeek('$date')\n  })\n  .end()\n```\n\n输出如下：\n\n```typescript\n{\n    \"isoDayOfWeek\": 2\n}\n```\n\n### isoWeek\n\n返回日期字段对应的 ISO 8601 标准的周数（一年中的第几周），是一个介于 1 到 53 之间的整数。  \n\n#### API 说明\n\n根据 ISO 8601 标准，周一到周日视为一周，本年度第一个周四所在的那周，视为本年度的第 1 周。  \n\n例如：2016 年 1 月 7 日是那年的第一个周四，那么 2016.01.04（周一）到 2016.01.10（周日）即为第 1 周。同理，2016 年 1 月 1 日的周数为 53。  \n\n该接口有以下两种用法，语法如下：  \n  \n```typescript\ndb.command.aggregate.isoWeek(<日期字段>)\n\ndb.command.aggregate.isoWeek({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n假设集合 `dates` 有以下文档：  \n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `isoWeek()` 对 `date` 字段进行投影，获取对应的 ISO 8601 标准的周数（一年中的第几周）：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    isoWeek: $.isoWeek('$date')\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"isoWeek\": 20\n}\n```\n\n### isoWeekYear\n\n返回日期字段对应的 ISO 8601 标准的天数（一年中的第几天）。  \n\n#### API 说明\n\n此处的“年”以第一周的周一为开始，以最后一周的周日为结束。  \n\n该接口有以下两种用法，语法如下：  \n  \n```typescript\ndb.command.aggregate.isoWeekYear(<日期字段>)\n\ndb.command.aggregate.isoWeekYear({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n假设集合 `dates` 有以下文档：  \n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `isoWeekYear()` 对 `date` 字段进行投影，获取对应的 ISO 8601 标准的天数（一年中的第几天）：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    isoWeekYear: $.isoWeekYear('$date')\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"isoWeekYear\": 2019\n}\n```\n\n### millisecond\n\n返回日期字段对应的毫秒数，是一个介于 0 到 999 之间的整数。  \n\n#### API 说明\n\n该接口有以下两种用法，语法如下：  \n  \n```typescript\ndb.command.aggregate.millisecond(<日期字段>)\n\ndb.command.aggregate.millisecond({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n假设集合 `dates` 有以下文档：\n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `millisecond()` 对 `date` 字段进行投影，获取对应的毫秒数：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    millisecond: $.millisecond('$date'),\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"millisecond\": 686\n}\n```\n\n### minute\n\n返回日期字段对应的分钟数，是一个介于 0 到 59 之间的整数。  \n\n#### API 说明\n\n该接口有以下两种用法，语法如下：  \n  \n```typescript\ndb.command.aggregate.minute(<日期字段>)\n\ndb.command.aggregate.minute({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n假设集合 `dates` 有以下文档：\n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `minute()` 对 `date` 字段进行投影，获取对应的分钟数：\n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    minute: $.minute('$date')\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"minute\": 38\n}\n```\n\n### month\n\n返回日期字段对应的月份，是一个介于 1 到 12 之间的整数。  \n\n#### API 说明\n\n该接口有以下两种用法，语法如下：  \n  \n```typescript\ndb.command.aggregate.month(<日期字段>)\n\ndb.command.aggregate.month({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n 假设集合 `dates` 有以下文档：  \n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `month()` 对 `date` 字段进行投影，获取对应的月份：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    month: $.month('$date')\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"month\": 5\n}\n```\n\n### second\n\n返回日期字段对应的秒数，是一个介于 0 到 59 之间的整数，在特殊情况下（闰秒）可能等于 60。  \n\n#### API 说明\n\n该接口有以下两种用法，语法如下：  \n  \n```typescript\ndb.command.aggregate.second(<日期字段>)\n\ndb.command.aggregate.second({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n假设集合 `dates` 有以下文档：\n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `second()` 对 `date` 字段进行投影，获取对应的秒数：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    second: $.second('$date')\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"second\": 51\n}\n```\n\n### week\n\n返回日期字段对应的周数（一年中的第几周），是一个介于 0 到 53 之间的整数。  \n\n#### API 说明\n\n每周以周日为开头，**每年的第一个周日**即为 `week 1` 的开始，这天之前是 `week 0`。  \n\n该接口有以下两种用法，语法如下：  \n  \n```typescript\ndb.command.aggregate.week(<日期字段>)\n\ndb.command.aggregate.week({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n假设集合 `dates` 有以下文档：  \n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `week()` 对 `date` 字段进行投影，获取对应的周数（一年中的第几周）：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    week: $.week('$date')\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{\n    \"week\": 19\n}\n```\n\n### year\n\n返回日期字段对应的年份。  \n\n#### API 说明\n\n该接口有以下两种用法，语法如下：  \n  \n```typescript\ndb.command.aggregate.year(<日期字段>)\n\ndb.command.aggregate.year({date:<日期字段>,timezone:<时区>})\n```\n\n#### 示例代码\n\n假设集合 `dates` 有以下文档：\n\n```typescript\n{\n    \"_id\": 1,\n    \"date\": ISODate(\"2019-05-14T09:38:51.686Z\")\n}\n```\n\n我们使用 `year()` 对 `date` 字段进行投影，获取对应的年份：\n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('dates')\n  .aggregate()\n  .project({\n    _id: 0,\n    year: $.year('$date')\n  })\n  .end()\n```\n\n输出如下：\n\n```typescript\n{\n    \"year\": 2019\n}\n```\n\n## 常量操作符\n\n### literal\n\n直接返回一个值的字面量，不经过任何解析和处理。  \n\n#### API 说明\n\n `literal` 使用形式如下：  \n\n```typescript\nliteral(<值>)\n```\n\n如果 `<值>` 是一个表达式，那么 `literal` **不会**解析或者计算这个表达式，而是直接返回这个表达式。  \n\n#### 示例代码\n\n 比如我们有一个 `items` 集合，其中数据如下：  \n\n```typescript\n{ \"_id\": \"0\", \"price\": \"$1\" }\n{ \"_id\": \"1\", \"price\": \"$5.60\" }\n{ \"_id\": \"2\", \"price\": \"$8.90\" }\n```\n\n**以字面量的形式使用 $**\n\n 下面的代码使用 `literal`，生成了一个新的字段 `isOneDollar`，表示 `price` 字段是否严格等于 `\"$1\"`。  \n\n 注意：我们这里无法使用 `eq(['$price', '$1'])`，因为 `\"$1\"` 是一个表达式，代表 `\"1\"` 字段对应的值，而不是字符串字面量 `\"$1\"`。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('items').aggregate()\n  .project({\n    isOneDollar: $.eq(['$price', $.literal('$1')])\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{ \"_id\": \"0\", \"isOneDollar\": true }\n{ \"_id\": \"1\", \"isOneDollar\": false }\n{ \"_id\": \"2\", \"isOneDollar\": false }\n```\n\n**投影一个字段，对应的值为 1**\n\n 下面的代码使用 `literal`，投影了一个新的字段 `amount`，其值为 `1`。  \n\n```typescript\nconst $ = db.command.aggregate\ndb.collection('items').aggregate()\n  .project({\n    price: 1,\n    amount: $.literal(1)\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{ \"_id\": \"0\", \"price\": \"$1\", \"amount\": 1 }\n{ \"_id\": \"1\", \"price\": \"$5.60\", \"amount\": 1 }\n{ \"_id\": \"2\", \"price\": \"$8.90\", \"amount\": 1 }\n```\n\n## 对象操作符\n\n### mergeObjects\n\n将多个文档合并为单个文档。  \n\n#### API 说明\n\n 使用形式如下：\n在 `group()` 中使用时：  \n\n```typescript\nmergeObjects(<document>)\n```\n\n在其它表达式中使用时：  \n\n```typescript\nmergeObjects([<document1>, <document2>, ...])\n```\n\n#### 示例代码\n\n**搭配 `group()` 使用**\n\n 假设集合 `sales` 存在以下文档：  \n\n```typescript\n{ \"_id\": 1, \"year\": 2018, \"name\": \"A\", \"volume\": { \"2018Q1\": 500, \"2018Q2\": 500 } }\n{ \"_id\": 2, \"year\": 2017, \"name\": \"A\", \"volume\": { \"2017Q1\": 400, \"2017Q2\": 300, \"2017Q3\": 0, \"2017Q4\": 0 } }\n{ \"_id\": 3, \"year\": 2018, \"name\": \"B\", \"volume\": { \"2018Q1\": 100 } }\n{ \"_id\": 4, \"year\": 2017, \"name\": \"B\", \"volume\": { \"2017Q3\": 100, \"2017Q4\": 250 } }\n```\n\n下面的代码使用 `mergeObjects()`，将用相同 `name` 的文档合并：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('sales').aggregate()\n  .group({\n    _id: '$name',\n    mergedVolume: $.mergeObjects('$volume')\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{ \"_id\": \"A\", \"mergedVolume\": { \"2017Q1\": 400, \"2017Q2\": 300, \"2017Q3\": 0, \"2017Q4\": 0, \"2018Q1\": 500, \"2018Q2\": 500 } }\n{ \"_id\": \"B\", \"mergedVolume\": { \"2017Q3\": 100, \"2017Q4\": 250, \"2018Q1\": 100 } }\n```\n\n**一般用法**\n\n假设集合 `test` 存在以下文档：  \n\n```typescript\n{ \"_id\": 1, \"foo\": { \"a\": 1 }, \"bar\": { \"b\": 2 } }\n{ \"_id\": 2, \"foo\": { \"c\": 1 }, \"bar\": { \"d\": 2 } }\n{ \"_id\": 3, \"foo\": { \"e\": 1 }, \"bar\": { \"f\": 2 } }\n```\n\n下面的代码使用 `mergeObjects()`，将文档中的 `foo` 和 `bar` 字段合并为 `foobar`：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('sales').aggregate()\n  .project({\n    foobar: $.mergeObjects(['$foo', '$bar'])\n  })\n  .end()\n```\n\n输出结果如下：  \n\n```typescript\n{ \"_id\": 1, \"foobar\": { \"a\": 1, \"b\": 2 } }\n{ \"_id\": 2, \"foobar\": { \"c\": 1, \"d\": 2 } }\n{ \"_id\": 3, \"foobar\": { \"e\": 1, \"f\": 2 } }\n```\n\n## 集合操作符\n\n### allElementsTrue\n\n输入一个数组，或者数组字段的表达式。如果数组中所有元素均为真值，那么返回 `true`，否则返回 `false`。空数组永远返回 `true`。  \n\n#### API 说明\n\n语法如下：\n\n```typescript\nallElementsTrue([<expression>])\n```\n\n#### 示例代码\n\n假设集合 `test` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"array\": [ true ] }\n{ \"_id\": 2, \"array\": [ ] }\n{ \"_id\": 3, \"array\": [ false ] }\n{ \"_id\": 4, \"array\": [ true, false ] }\n{ \"_id\": 5, \"array\": [ 0 ] }\n{ \"_id\": 6, \"array\": [ \"stark\" ] }\n```\n\n下面的代码使用 `allElementsTrue()`，判断 `array` 字段中是否均为真值：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('price')\n  .aggregate()\n  .project({\n    isAllTrue: $.allElementsTrue(['$array'])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"isAllTrue\": true }\n{ \"_id\": 2, \"isAllTrue\": true }\n{ \"_id\": 3, \"isAllTrue\": false }\n{ \"_id\": 4, \"isAllTrue\": false }\n{ \"_id\": 5, \"isAllTrue\": false }\n{ \"_id\": 6, \"isAllTrue\": true }\n```\n\n### anyElementTrue\n\n输入一个数组，或者数组字段的表达式。如果数组中任意一个元素为真值，那么返回 `true`，否则返回 `false`。空数组永远返回 `false`。  \n\n#### API 说明\n\n 语法如下：  \n\n```typescript\nanyElementTrue([<expression>])\n```\n\n#### 示例代码\n\n 假设集合 `test` 有如下记录：  \n\n```typescript\n{ \"_id\": 1, \"array\": [ true ] }\n{ \"_id\": 2, \"array\": [ ] }\n{ \"_id\": 3, \"array\": [ false ] }\n{ \"_id\": 4, \"array\": [ true, false ] }\n{ \"_id\": 5, \"array\": [ 0 ] }\n{ \"_id\": 6, \"array\": [ \"stark\" ] }\n```\n\n下面的代码使用 `anyElementTrue()`，判断 `array` 字段中是否含有真值：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('price')\n  .aggregate()\n  .project({\n    isAnyTrue: $.anyElementTrue(['$array'])\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"_id\": 1, \"isAnyTrue\": true }\n{ \"_id\": 2, \"isAnyTrue\": false }\n{ \"_id\": 3, \"isAnyTrue\": false }\n{ \"_id\": 4, \"isAnyTrue\": true }\n{ \"_id\": 5, \"isAnyTrue\": false }\n{ \"_id\": 6, \"isAnyTrue\": true }\n```\n\n### setDifference\n\n输入两个集合，输出只存在于第一个集合中的元素。  \n\n#### API 说明\n\n 使用形式如下：  \n\n```typescript\nsetDifference([<expression1>, <expression2>])\n```\n\n#### 示例代码\n\n 假设集合 `test` 存在以下数据：  \n\n```typescript\n{ \"_id\": 1, \"A\": [ 1, 2 ], \"B\": [ 1, 2 ] }\n{ \"_id\": 2, \"A\": [ 1, 2 ], \"B\": [ 2, 1, 2 ] }\n{ \"_id\": 3, \"A\": [ 1, 2 ], \"B\": [ 1, 2, 3 ] }\n{ \"_id\": 4, \"A\": [ 1, 2 ], \"B\": [ 3, 1 ] }\n{ \"_id\": 5, \"A\": [ 1, 2 ], \"B\": [ ] }\n{ \"_id\": 6, \"A\": [ 1, 2 ], \"B\": [ {}, [] ] }\n{ \"_id\": 7, \"A\": [ ], \"B\": [ ] }\n{ \"_id\": 8, \"A\": [ ], \"B\": [ 1 ] }\n```\n\n下面的代码使用 `setDifference`，找到只存在于 `B` 中的数字：  \n\n```typescript\nlet res = await db.collection('test')\n  .aggregate()\n  .project({\n    isBOnly: $.setDifference(['$B', '$A'])\n  })\n  .end()\n```\n\n```typescript\n{ \"_id\": 1, \"isBOnly\": [] }\n{ \"_id\": 2, \"isBOnly\": [] }\n{ \"_id\": 3, \"isBOnly\": [3] }\n{ \"_id\": 4, \"isBOnly\": [3] }\n{ \"_id\": 5, \"isBOnly\": [] }\n{ \"_id\": 6, \"isBOnly\": [{}, []] }\n{ \"_id\": 7, \"isBOnly\": [] }\n{ \"_id\": 8, \"isBOnly\": [1] }\n```\n\n### setEquals\n\n输入两个集合，判断两个集合中包含的元素是否相同（不考虑顺序、去重）。  \n\n#### API 说明\n\n 使用形式如下：  \n\n```typescript\nsetEquals([<expression1>, <expression2>])\n```\n\n#### 示例代码\n\n 假设集合 `test` 存在以下数据：  \n\n```typescript\n{ \"_id\": 1, \"A\": [ 1, 2 ], \"B\": [ 1, 2 ] }\n{ \"_id\": 2, \"A\": [ 1, 2 ], \"B\": [ 2, 1, 2 ] }\n{ \"_id\": 3, \"A\": [ 1, 2 ], \"B\": [ 1, 2, 3 ] }\n{ \"_id\": 4, \"A\": [ 1, 2 ], \"B\": [ 3, 1 ] }\n{ \"_id\": 5, \"A\": [ 1, 2 ], \"B\": [ ] }\n{ \"_id\": 6, \"A\": [ 1, 2 ], \"B\": [ {}, [] ] }\n{ \"_id\": 7, \"A\": [ ], \"B\": [ ] }\n{ \"_id\": 8, \"A\": [ ], \"B\": [ 1 ] }\n```\n\n下面的代码使用 `setEquals`，判断两个集合中包含的元素是否相同：  \n\n```typescript\nlet res = await db.collection('test')\n  .aggregate()\n  .project({\n    sameElements: $.setEquals(['$A', '$B'])\n  })\n  .end()\n```\n\n```typescript\n{ \"_id\": 1, \"sameElements\": true }\n{ \"_id\": 2, \"sameElements\": true }\n{ \"_id\": 3, \"sameElements\": false }\n{ \"_id\": 4, \"sameElements\": false }\n{ \"_id\": 5, \"sameElements\": false }\n{ \"_id\": 6, \"sameElements\": false }\n{ \"_id\": 7, \"sameElements\": true }\n{ \"_id\": 8, \"sameElements\": false }\n```\n\n### setIntersection\n\n输入两个集合，输出两个集合的交集。  \n\n#### API 说明\n\n 使用形式如下：  \n\n```typescript\nsetIntersection([<expression1>, <expression2>])\n```\n\n#### 示例代码\n\n 假设集合 `test` 存在以下数据：  \n\n```typescript\n{ \"_id\": 1, \"A\": [ 1, 2 ], \"B\": [ 1, 2 ] }\n{ \"_id\": 2, \"A\": [ 1, 2 ], \"B\": [ 2, 1, 2 ] }\n{ \"_id\": 3, \"A\": [ 1, 2 ], \"B\": [ 1, 2, 3 ] }\n{ \"_id\": 4, \"A\": [ 1, 2 ], \"B\": [ 3, 1 ] }\n{ \"_id\": 5, \"A\": [ 1, 2 ], \"B\": [ ] }\n{ \"_id\": 6, \"A\": [ 1, 2 ], \"B\": [ {}, [] ] }\n{ \"_id\": 7, \"A\": [ ], \"B\": [ ] }\n{ \"_id\": 8, \"A\": [ ], \"B\": [ 1 ] }\n```\n\n下面的代码使用 `setIntersection`，输出两个集合的交集：  \n\n```typescript\nlet res = await db.collection('test')\n  .aggregate()\n  .project({\n    commonToBoth: $.setIntersection(['$A', '$B'])\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{ \"_id\": 1, \"commonToBoth\": [ 1, 2 ] }\n{ \"_id\": 2, \"commonToBoth\": [ 1, 2 ] }\n{ \"_id\": 3, \"commonToBoth\": [ 1, 2 ] }\n{ \"_id\": 4, \"commonToBoth\": [ 1 ] }\n{ \"_id\": 5, \"commonToBoth\": [ ] }\n{ \"_id\": 6, \"commonToBoth\": [ ] }\n{ \"_id\": 7, \"commonToBoth\": [ ] }\n{ \"_id\": 8, \"commonToBoth\": [ ] }\n```\n\n### setIsSubset\n\n输入两个集合，判断第一个集合是否是第二个集合的子集。  \n\n#### API 说明\n\n 使用形式如下：  \n\n```typescript\nsetIsSubset([<expression1>, <expression2>])\n```\n\n#### 示例代码\n\n 假设集合 `test` 存在以下数据：  \n\n```typescript\n{ \"_id\": 1, \"A\": [ 1, 2 ], \"B\": [ 1, 2 ] }\n{ \"_id\": 2, \"A\": [ 1, 2 ], \"B\": [ 2, 1, 2 ] }\n{ \"_id\": 3, \"A\": [ 1, 2 ], \"B\": [ 1, 2, 3 ] }\n{ \"_id\": 4, \"A\": [ 1, 2 ], \"B\": [ 3, 1 ] }\n{ \"_id\": 5, \"A\": [ 1, 2 ], \"B\": [ ] }\n{ \"_id\": 6, \"A\": [ 1, 2 ], \"B\": [ {}, [] ] }\n{ \"_id\": 7, \"A\": [ ], \"B\": [ ] }\n{ \"_id\": 8, \"A\": [ ], \"B\": [ 1 ] }\n```\n\n下面的代码使用 `setIsSubset`，判断第一个集合是否是第二个集合的子集：  \n\n```typescript\nlet res = await db.collection('test')\n  .aggregate()\n  .project({\n    AisSubsetOfB: $.setIsSubset(['$A', '$B'])\n  })\n  .end()\n```\n\n```typescript\n{ \"_id\": 1, \"AisSubsetOfB\": true }\n{ \"_id\": 2, \"AisSubsetOfB\": true }\n{ \"_id\": 3, \"AisSubsetOfB\": true }\n{ \"_id\": 4, \"AisSubsetOfB\": false }\n{ \"_id\": 5, \"AisSubsetOfB\": false }\n{ \"_id\": 6, \"AisSubsetOfB\": false }\n{ \"_id\": 7, \"AisSubsetOfB\": true }\n{ \"_id\": 8, \"AisSubsetOfB\": true }\n```\n\n### setUnion\n\n输入两个集合，输出两个集合的并集。  \n\n#### API 说明\n\n 使用形式如下：  \n\n```typescript\nsetUnion([<expression1>, <expression2>])\n```\n\n#### 示例代码\n\n 假设集合 `test` 存在以下数据：  \n\n```typescript\n{ \"_id\": 1, \"A\": [ 1, 2 ], \"B\": [ 1, 2 ] }\n{ \"_id\": 2, \"A\": [ 1, 2 ], \"B\": [ 2, 1, 2 ] }\n{ \"_id\": 3, \"A\": [ 1, 2 ], \"B\": [ 1, 2, 3 ] }\n{ \"_id\": 4, \"A\": [ 1, 2 ], \"B\": [ 3, 1 ] }\n{ \"_id\": 5, \"A\": [ 1, 2 ], \"B\": [ ] }\n{ \"_id\": 6, \"A\": [ 1, 2 ], \"B\": [ {}, [] ] }\n{ \"_id\": 7, \"A\": [ ], \"B\": [ ] }\n{ \"_id\": 8, \"A\": [ ], \"B\": [ 1 ] }\n```\n\n下面的代码使用 `setUnion`，输出两个集合的并集：  \n\n```typescript\nlet res = await db.collection('test')\n  .aggregate()\n  .project({\n    AB: $.setUnion(['$A', '$B'])\n  })\n  .end()\n```\n\n输出如下：  \n\n```typescript\n{ \"_id\": 1, \"AB\": [ 1, 2 ] }\n{ \"_id\": 2, \"AB\": [ 1, 2 ] }\n{ \"_id\": 3, \"AB\": [ 1, 2, 3 ] }\n{ \"_id\": 4, \"AB\": [ 1, 2, 3 ] }\n{ \"_id\": 5, \"AB\": [ 1, 2 ] }\n{ \"_id\": 6, \"AB\": [ 1, 2, {}, [] ] }\n{ \"_id\": 7, \"AB\": [ ] }\n{ \"_id\": 8, \"AB\": [ 1 ] }\n```\n\n## 字符串操作符\n\n### concat\n\n连接字符串，返回拼接后的字符串。  \n\n#### API 说明\n\n `concat` 的语法如下：  \n\n```typescript\ndb.command.aggregate.concat([<表达式1>, <表达式2>, ...])\n```\n\n表达式可以是形如 `$ + 指定字段`，也可以是普通字符串。只要能够被解析成字符串即可。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"firstName\": \"Yuanxin\", \"group\": \"a\", \"lastName\": \"Dong\", \"score\": 84 }\n{ \"firstName\": \"Weijia\", \"group\": \"a\", \"lastName\": \"Wang\", \"score\": 96 }\n{ \"firstName\": \"Chengxi\", \"group\": \"b\", \"lastName\": \"Li\", \"score\": 80 }\n```\n\n借助 `concat` 可以拼接 `lastName` 和 `firstName` 字段，得到每位学生的名字全称：  \n\n```typescript\nconst $ = db.command.aggregate\ndb\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    fullName: $.concat(['$firstName', ' ', '$lastName'])\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"fullName\": \"Yuanxin Dong\" }\n{ \"fullName\": \"Weijia Wang\" }\n{ \"fullName\": \"Chengxi Li\" }\n```\n\n### indexOfBytes\n\n在目标字符串中查找子字符串，并返回第一次出现的 `UTF-8` 的字节索引（从 0 开始）。如果不存在子字符串，返回 -1。  \n\n#### API 说明\n\n `indexOfBytes` 的语法如下：  \n\n```typescript\ndb.command.aggregate.indexOfBytes([<目标字符串表达式>, <子字符串表达式>, <开始位置表达式>, <结束位置表达式>])\n```\n\n下面是 4 种表达式的详细描述：  \n\n|表达式      |描述               |\n|----       |----               |\n|目标字符串表达式 |任何可以被解析为字符串的表达式  |\n|子字符串表达式  |任何可以被解析为字符串的表达式  |\n|开始位置表达式  |任何可以被解析为非负整数的表达式 |\n|结束位置表达式  |任何可以被解析为非负整数的表达式 |\n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"firstName\": \"Yuanxin\", \"group\": \"a\", \"lastName\": \"Dong\", \"score\": 84 }\n{ \"firstName\": \"Weijia\", \"group\": \"a\", \"lastName\": \"Wang\", \"score\": 96 }\n{ \"firstName\": \"Chengxi\", \"group\": \"b\", \"lastName\": \"Li\", \"score\": 80 }\n```\n\n借助 `indexOfBytes` 查找字符 `\"a\"` 在字段 `firstName` 中的位置：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    aStrIndex: $.indexOfBytes(['$firstName', 'a'])\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"aStrIndex\": 2 }\n{ \"aStrIndex\": 5 }\n{ \"aStrIndex\": -1 }\n```\n\n### indexOfCP\n\n在目标字符串中查找子字符串，并返回第一次出现的 `UTF-8` 的 `code point` 索引（从 0 开始）。如果不存在子字符串，返回 -1。  \n\n#### API 说明\n\n `code point` 是“码位”，又名“编码位置”。这里特指 `Unicode` 包中的码位，范围是从 0（16 进制）到 10FFFF（16 进制）。  \n\n `indexOfCP` 的语法如下：  \n\n```typescript\ndb.command.aggregate.indexOfCP([<目标字符串表达式>, <子字符串表达式>, <开始位置表达式>, <结束位置表达式>])\n```\n\n下面是 4 种表达式的详细描述：  \n\n|表达式      |描述               |\n|----       |----               |\n|目标字符串表达式 |任何可以被解析为字符串的表达式  |\n|子字符串表达式  |任何可以被解析为字符串的表达式  |\n|开始位置表达式  |任何可以被解析为非负整数的表达式 |\n|结束位置表达式  |任何可以被解析为非负整数的表达式 |\n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"firstName\": \"Yuanxin\", \"group\": \"a\", \"lastName\": \"Dong\", \"score\": 84 }\n{ \"firstName\": \"Weijia\", \"group\": \"a\", \"lastName\": \"Wang\", \"score\": 96 }\n{ \"firstName\": \"Chengxi\", \"group\": \"b\", \"lastName\": \"Li\", \"score\": 80 }\n```\n\n借助 `indexOfCP` 查找字符 `\"a\"` 在字段 `firstName` 中的位置：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    aStrIndex: $.indexOfCP(['$firstName', 'a'])\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"aStrIndex\": 2 }\n{ \"aStrIndex\": 5 }\n{ \"aStrIndex\": -1 }\n```\n\n### split\n\n按照分隔符分隔数组，并且删除分隔符，返回子字符串组成的数组。如果字符串无法找到分隔符进行分隔，返回原字符串作为数组的唯一元素。  \n\n#### API 说明\n\n `split` 的语法如下：  \n\n```typescript\ndb.command.aggregate.split([<字符串表达式>, <分隔符表达式>])\n```\n\n字符串表达式和分隔符表达式可以是任意形式的表达式，只要它可以被解析为字符串即可。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"birthday\": \"1999/12/12\" }\n{ \"birthday\": \"1998/11/11\" }\n{ \"birthday\": \"1997/10/10\" }\n```\n\n通过 `split` 将每条记录中的 `birthday` 字段对应值分隔成数组，每个数组分别由代表年、月、日的 3 个元素组成：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    birthday: $.split(['$birthday', '/'])\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"birthday\": [ \"1999\", \"12\", \"12\" ] }\n{ \"birthday\": [ \"1998\", \"11\", \"11\" ] }\n{ \"birthday\": [ \"1997\", \"10\", \"10\" ] }\n```\n\n### strLenBytes\n\n计算并返回指定字符串中 `utf-8` 编码的字节数量。  \n\n#### API 说明\n\n `strLenBytes` 的语法如下：  \n\n```typescript\ndb.command.aggregate.strLenBytes(<表达式>)\n```\n\n只要表达式可以被解析成字符串，那么它就是有效表达式。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"name\": \"dongyuanxin\", \"nickname\": \"心谭\" }\n```\n\n借助 `strLenBytes` 计算 `name` 字段和 `nickname` 字段对应值的字节长度：  \n\n```typescript\nconst $ = db.command.aggregate\ndb\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    nameLength: $.strLenBytes('$name'),\n    nicknameLength: $.strLenBytes('$nickname')\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"nameLength\": 11, \"nicknameLength\": 6 }\n```\n\n### strLenCP\n\n计算并返回指定字符串的 UTF-8 [code points<span></span>](http://www.unicode.org/glossary/#code_point) 数量。  \n\n#### API 说明\n\n `strLenCP` 的语法如下：  \n\n```typescript\ndb.command.aggregate.strLenCP(<表达式>)\n```\n\n只要表达式可以被解析成字符串，那么它就是有效表达式。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"name\": \"dongyuanxin\", \"nickname\": \"心谭\" }\n```\n\n借助 `strLenCP` 计算 `name` 字段和 `nickname` 字段对应值的 UTF-8 [code points<span></span>](http://www.unicode.org/glossary/#code_point)的数量：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    nameLength: $.strLenCP('$name'),\n    nicknameLength: $.strLenCP('$nickname')\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"nameLength\": 11, \"nicknameLength\": 2 }\n```\n\n### strcasecmp\n\n对两个字符串在不区分大小写的情况下进行大小比较，并返回比较的结果。  \n\n#### API 说明\n\n `strcasecmp` 的语法如下：  \n\n```typescript\ndb.command.aggregate.strcasecmp([<表达式1>, <表达式2>])\n```\n\n只要 `表达式1`和 `表达式2` 可以被解析成字符串，那么它们就是有效的。  \n\n 返回的比较结果有 1，0 和 -1 三种：  \n\n- 1：`表达式1` 解析的字符串 > `表达式2` 解析的字符串 - 0：`表达式1` 解析的字符串 = `表达式2` 解析的字符串 - -1：`表达式1` 解析的字符串 < `表达式2` 解析的字符串\n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"firstName\": \"Yuanxin\", \"group\": \"a\", \"lastName\": \"Dong\", \"score\": 84 }\n{ \"firstName\": \"Weijia\", \"group\": \"a\", \"lastName\": \"Wang\", \"score\": 96 }\n{ \"firstName\": \"Chengxi\", \"group\": \"b\", \"lastName\": \"Li\", \"score\": 80 }\n```\n\n借助 `strcasecmp` 比较 `firstName` 字段值和 `lastName` 字段值的大小：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    result: $.strcasecmp(['$firstName', '$lastName']),\n  })\n  .end()\n```\n\n返回结果如下：  \n\n```typescript\n{ \"result\": 1 }\n{ \"result\": 1 }\n{ \"result\": -1 }\n```\n\n### substr\n\n返回字符串从指定位置开始的指定长度的子字符串。它是 `db.command.aggregate.substrBytes` 的别名，更推荐使用后者。  \n\n#### API 说明\n\n `substr` 的语法如下：  \n\n```typescript\ndb.command.aggregate.substr([<表达式1>, <表达式2>, <表达式3>])\n```\n\n`表达式1` 是任何可以解析为字符串的有效表达式，`表达式2` 和 `表达式3` 是任何可以解析为数字的有效表达式。  \n\n 如果 `表达式2` 是负数，返回的结果为 `\"\"`。  \n\n 如果 `表达式3` 是负数，返回的结果为从 `表达式2` 指定的开始位置以及之后其余部分的子字符串。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"birthday\": \"1999/12/12\", \"firstName\": \"Yuanxin\", \"group\": \"a\", \"lastName\": \"Dong\", \"score\": 84 }\n{ \"birthday\": \"1998/11/11\", \"firstName\": \"Weijia\", \"group\": \"a\", \"lastName\": \"Wang\", \"score\": 96 }\n{ \"birthday\": \"1997/10/10\", \"firstName\": \"Chengxi\", \"group\": \"b\", \"lastName\": \"Li\", \"score\": 80 }\n```\n\n借助 `substr` 可以提取 `birthday` 中的年、月、日信息，代码如下：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    year: $.substr(['$birthday', 0, 4]),\n    month: $.substr(['$birthday', 5, 2]),\n    day: $.substr(['$birthday', 8, -1])\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"day\": \"12\", \"month\": \"12\", \"year\": \"1999\" }\n{ \"day\": \"11\", \"month\": \"11\", \"year\": \"1998\" }\n{ \"day\": \"10\", \"month\": \"10\", \"year\": \"1997\" }\n```\n\n### substrBytes\n\n返回字符串从指定位置开始的指定长度的子字符串。子字符串是由字符串中指定的 `UTF-8` 字节索引的字符开始，长度为指定的字节数。  \n\n#### API 说明\n\n `substrBytes` 的语法如下：  \n\n```typescript\ndb.command.aggregate.substrBytes([<表达式1>, <表达式2>, <表达式3>])\n```\n\n`表达式1` 是任何可以解析为字符串的有效表达式，`表达式2` 和 `表达式3` 是任何可以解析为数字的有效表达式。  \n\n 如果 `表达式2` 是负数，返回的结果为 `\"\"`。  \n\n 如果 `表达式3` 是负数，返回的结果为从 `表达式2` 指定的开始位置以及之后其余部分的子字符串。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"birthday\": \"1999/12/12\", \"firstName\": \"Yuanxin\", \"group\": \"a\", \"lastName\": \"Dong\", \"score\": 84 }\n{ \"birthday\": \"1998/11/11\", \"firstName\": \"Weijia\", \"group\": \"a\", \"lastName\": \"Wang\", \"score\": 96 }\n{ \"birthday\": \"1997/10/10\", \"firstName\": \"Chengxi\", \"group\": \"b\", \"lastName\": \"Li\", \"score\": 80 }\n```\n\n借助 `substrBytes` 可以提取 `birthday` 中的年、月、日信息，代码如下：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    year: $.substrBytes(['$birthday', 0, 4]),\n    month: $.substrBytes(['$birthday', 5, 2]),\n    day: $.substrBytes(['$birthday', 8, -1])\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"day\": \"12\", \"month\": \"12\", \"year\": \"1999\" }\n{ \"day\": \"11\", \"month\": \"11\", \"year\": \"1998\" }\n{ \"day\": \"10\", \"month\": \"10\", \"year\": \"1997\" }\n```\n\n### substrCP\n\n返回字符串从指定位置开始的指定长度的子字符串。子字符串是由字符串中指定的 `UTF-8` 字节索引的字符开始，长度为指定的字节数。  \n\n#### API 说明\n\n `substrCP` 的语法如下：  \n\n```typescript\ndb.command.aggregate.substrCP([<表达式1>, <表达式2>, <表达式3>])\n```\n\n`表达式1` 是任何可以解析为字符串的有效表达式，`表达式2` 和 `表达式3` 是任何可以解析为数字的有效表达式。  \n\n 如果 `表达式2` 是负数，返回的结果为 `\"\"`。  \n\n 如果 `表达式3` 是负数，返回的结果为从 `表达式2` 指定的开始位置以及之后其余部分的子字符串。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"name\": \"dongyuanxin\", \"nickname\": \"心谭\" }\n```\n\n借助 `substrCP` 可以提取 `nickname` 字段值的第一个汉字：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    firstCh: $.substrCP(['$nickname', 0, 1])\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"firstCh\": \"心\" }\n```\n\n### toLower\n\n将字符串转化为小写并返回。  \n\n#### API 说明\n\n `toLower` 的语法如下：  \n\n```typescript\ndb.command.aggregate.toLower(表达式)\n```\n\n只要表达式可以被解析成字符串，那么它就是有效表达式。例如：`$ + 指定字段`。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"firstName\": \"Yuanxin\", \"group\": \"a\", \"lastName\": \"Dong\", \"score\": 84 }\n{ \"firstName\": \"Weijia\", \"group\": \"a\", \"lastName\": \"Wang\", \"score\": 96 }\n{ \"firstName\": \"Chengxi\", \"group\": \"b\", \"lastName\": \"Li\", \"score\": 80 }\n```\n\n借助 `toLower` 将 `firstName` 的字段值转化为小写：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    result: $.toLower('$firstName'),\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"result\": \"yuanxin\" }\n{ \"result\": \"weijia\" }\n{ \"result\": \"chengxi\" }\n```\n\n### toUpper\n\n将字符串转化为大写并返回。  \n\n#### API 说明\n\n `toUpper` 的语法如下：  \n\n```typescript\ndb.command.aggregate.toUpper(表达式)\n```\n\n只要表达式可以被解析成字符串，那么它就是有效表达式。例如：`$ + 指定字段`。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"firstName\": \"Yuanxin\", \"group\": \"a\", \"lastName\": \"Dong\", \"score\": 84 }\n{ \"firstName\": \"Weijia\", \"group\": \"a\", \"lastName\": \"Wang\", \"score\": 96 }\n{ \"firstName\": \"Chengxi\", \"group\": \"b\", \"lastName\": \"Li\", \"score\": 80 }\n```\n\n借助 `toUpper` 将 `lastName` 的字段值转化为大写：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .project({\n    _id: 0,\n    result: $.toUpper('$lastName'),\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"result\": \"DONG\" }\n{ \"result\": \"WANG\" }\n{ \"result\": \"LI\" }\n```\n\n## 分组运算方法\n\n### addToSet\n\n聚合运算符。向数组中添加值，如果数组中已存在该值，不执行任何操作。它只能在 `group stage` 中使用。  \n\n#### API 说明\n\n`addToSet` 语法如下：  \n\n```typescript\ndb.command.aggregate.addToSet(<表达式>)\n```\n\n表达式是形如 `$ + 指定字段` 的字符串。如果指定字段的值是数组，那么整个数组会被当作一个元素。  \n\n#### 示例代码\n\n假设集合 `passages` 的记录如下：  \n\n```typescript\n{ \"category\": \"web\", \"tags\": [ \"JavaScript\", \"CSS\" ], \"title\": \"title1\" }\n{ \"category\": \"System\", \"tags\": [ \"C++\", \"C\" ], \"title\": \"title2\" }\n```\n\n**非数组字段**\n\n 每条记录的 `category` 对应值的类型是非数组，利用 `addToSet` 统计所有分类：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('passages')\n  .aggregate()\n  .group({\n    _id: null,\n    categories: $.addToSet('$category')\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"_id\": null, \"categories\": [ \"System\", \"web\" ] }\n```\n\n**数组字段**\n\n 每条记录的 `tags` 对应值的类型是数组，数组不会被自动展开：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('passages')\n  .aggregate()\n  .group({\n    _id: null,\n    tagsList: $.addToSet('$tags')\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"_id\": null, \"tagsList\": [ [ \"C++\", \"C\" ], [ \"JavaScript\", \"CSS\" ] ] }\n```\n\n### avg\n\n<!--\n/// meta\nkeyword: 均值\n-->\n\n返回一组集合中，指定字段对应数据的平均值。  \n\n#### API 说明\n\n `avg` 的语法如下：  \n\n```typescript\ndb.command.aggregate.avg(<number>)\n```\n\n`avg` 传入的值除了数字常量外，也可以是任何最终解析成一个数字的表达式。它会忽略非数字值。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"group\": \"a\", \"name\": \"stu1\", \"score\": 84 }\n{ \"group\": \"a\", \"name\": \"stu2\", \"score\": 96 }\n{ \"group\": \"b\", \"name\": \"stu3\", \"score\": 80 }\n{ \"group\": \"b\", \"name\": \"stu4\", \"score\": 100 }\n```\n\n借助 `avg` 可以计算所有记录的 `score` 的平均值：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .group({\n    _id: null,\n    average: $.avg('$score')\n  })\n  .end()\n```\n\n返回的结果如下：  \n\n```typescript\n{ \"_id\": null, \"average\": 90 }\n```\n\n### first\n\n返回指定字段在一组集合的第一条记录对应的值。仅当这组集合是按照某种定义排序（ `sort` ）后，此操作才有意义。  \n\n#### API 说明\n\n `first` 的语法如下：  \n\n```typescript\ndb.command.aggregate.first(<表达式>)\n```\n\n表达式是形如 `$ + 指定字段` 的字符串。  \n\n `first` 只能在 `group` 阶段被使用，并且需要配合 `sort` 才有意义。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"group\": \"a\", \"name\": \"stu1\", \"score\": 84 }\n{ \"group\": \"a\", \"name\": \"stu2\", \"score\": 96 }\n{ \"group\": \"b\", \"name\": \"stu3\", \"score\": 80 }\n{ \"group\": \"b\", \"name\": \"stu4\", \"score\": 100 }\n```\n\n如果需要得到所有记录中 `score` 的最小值，可以先将所有记录按照 `score` 排序，然后取出第一条记录的 `first`。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .sort({\n    score: 1\n  })\n  .group({\n    _id: null,\n    min: $.first('$score')\n  })\n  .end()\n```\n\n返回的数据结果如下：  \n\n```typescript\n{ \"_id\": null, \"min\": 80 }\n```\n\n### last\n\n返回指定字段在一组集合的最后一条记录对应的值。仅当这组集合是按照某种定义排序（ `sort` ）后，此操作才有意义。  \n\n#### API 说明\n\n `last` 的语法如下：  \n\n```typescript\ndb.command.aggregate.last(<表达式>)\n```\n\n表达式是形如 `$ + 指定字段` 的字符串。  \n\n `last` 只能在 `group` 阶段被使用，并且需要配合 `sort` 才有意义。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"group\": \"a\", \"name\": \"stu1\", \"score\": 84 }\n{ \"group\": \"a\", \"name\": \"stu2\", \"score\": 96 }\n{ \"group\": \"b\", \"name\": \"stu3\", \"score\": 80 }\n{ \"group\": \"b\", \"name\": \"stu4\", \"score\": 100 }\n```\n\n如果需要得到所有记录中 `score` 的最大值，可以先将所有记录按照 `score` 排序，然后取出最后一条记录的 `last`。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .sort({\n    score: 1\n  })\n  .group({\n    _id: null,\n    max: $.last('$score')\n  })\n  .end()\n```\n\n返回的数据结果如下：  \n\n```typescript\n{ \"_id\": null, \"max\": 100 }\n```\n\n### max\n\n返回一组数值的最大值。  \n\n#### API 说明\n\n `max` 的语法如下：  \n\n```typescript\ndb.command.aggregate.max(<表达式>)\n```\n\n表达式是形如 `$ + 指定字段` 的字符串。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"group\": \"a\", \"name\": \"stu1\", \"score\": 84 }\n{ \"group\": \"a\", \"name\": \"stu2\", \"score\": 96 }\n{ \"group\": \"b\", \"name\": \"stu3\", \"score\": 80 }\n{ \"group\": \"b\", \"name\": \"stu4\", \"score\": 100 }\n```\n\n借助 `max` 可以统计不同组（ `group` ）中成绩的最高值，代码如下：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .group({\n    _id: '$group',\n    maxScore: $.max('$score')\n  })\n  .end()\n```\n\n返回的数据结果如下：  \n\n```typescript\n{ \"_id\": \"b\", \"maxScore\": 100 }\n{ \"_id\": \"a\", \"maxScore\": 96 }\n...\n```\n\n### min\n\n返回一组数值的最小值。  \n\n#### API 说明\n\n `min` 的语法如下：  \n\n```typescript\ndb.command.aggregate.min(<表达式>)\n```\n\n表达式是形如 `$ + 指定字段` 的字符串。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"group\": \"a\", \"name\": \"stu1\", \"score\": 84 }\n{ \"group\": \"a\", \"name\": \"stu2\", \"score\": 96 }\n{ \"group\": \"b\", \"name\": \"stu3\", \"score\": 80 }\n{ \"group\": \"b\", \"name\": \"stu4\", \"score\": 100 }\n```\n\n借助 `min` 可以统计不同组（ `group` ）中成绩的最低值，代码如下：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .group({\n    _id: '$group',\n    minScore: $.min('$score')\n  })\n  .end()\n```\n\n返回的数据结果如下：  \n\n```typescript\n{ \"_id\": \"b\", \"minScore\": 80 }\n{ \"_id\": \"a\", \"minScore\": 84 }\n```\n\n### push\n\n在 `group` 阶段，返回一组中表达式指定列与对应的值，一起组成的数组。  \n\n#### API 说明\n\n `push` 语法如下：  \n\n```typescript\ndb.command.aggregate.push({\n  <字段名1>: <指定字段1>,\n  <字段名2>: <指定字段2>,\n  ...\n})\n```\n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"group\": \"a\", \"name\": \"stu1\", \"score\": 84 }\n{ \"group\": \"a\", \"name\": \"stu2\", \"score\": 96 }\n{ \"group\": \"b\", \"name\": \"stu3\", \"score\": 80 }\n{ \"group\": \"b\", \"name\": \"stu4\", \"score\": 100 }\n```\n\n借助 `push` 操作，对不同分组 ( `group` ) 的所有记录，聚合所有数据并且将其放入一个新的字段中，进一步结构化和语义化数据。  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('students')\n  .aggregate()\n  .group({\n    _id: '$group',\n    students: $.push({\n      name: '$name',\n      score: '$score'\n    })\n  })\n  .end()\n```\n\n输出结果如下：  \n\n```typescript\n{ \"_id\": \"b\", \"students\": [{ \"name\": \"stu3\", \"score\": 80 }, { \"name\": \"stu4\", \"score\": 100 }] }\n{ \"_id\": \"a\", \"students\": [{ \"name\": \"stu1\", \"score\": 84 }, { \"name\": \"stu2\", \"score\": 96 }] }\n```\n\n### stdDevPop\n\n返回一组字段对应值的标准差。  \n\n#### API 说明\n\n `stdDevPop` 的使用形式如下：  \n\n```typescript\ndb.command.aggregate.stdDevPop(<表达式>)\n```\n\n表达式传入的是指定字段，指定字段对应的值的数据类型必须是 `number` ，否则结果会返回 `null`。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：`a` 组同学的成绩分别是 84 和 96，`b`组同学的成绩分别是 80 和 100。  \n\n```typescript\n{ \"group\":\"a\", \"score\":84 }\n{ \"group\":\"a\", \"score\":96 }\n{ \"group\":\"b\", \"score\":80 }\n{ \"group\":\"b\", \"score\":100 }\n```\n\n可以用 `stdDevPop` 来分别计算 `a` 和 `b` 两组同学成绩的标准差，以此来比较哪一组同学的成绩更稳定。代码如下：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('students').aggregate()\n  .group({\n    _id: '$group',\n    stdDev: $.stdDevPop('$score')\n  })\n  .end()\n```\n\n返回的数据结果如下：  \n\n```typescript\n{ \"_id\": \"b\", \"stdDev\": 10 }\n{ \"_id\": \"a\", \"stdDev\": 6 }\n```\n\n### stdDevSamp\n\n计算输入值的样本标准偏差。如果输入值代表数据总体，或者不概括更多的数据，请改用 `db.command.aggregate.stdDevPop`。  \n\n#### API 说明\n\n `stdDevSamp` 的使用形式如下：  \n\n```typescript\ndb.command.aggregate.stdDevSamp(<表达式>)\n```\n\n表达式传入的是指定字段，`stdDevSamp` 会自动忽略非数字值。如果指定字段所有的值均是非数字，那么结果返回 `null`。  \n\n#### 示例代码\n\n 假设集合 `students` 的记录如下：  \n\n```typescript\n{ \"score\": 80 }\n{ \"score\": 100 }\n```\n\n可以用 `stdDevSamp` 来计算成绩的标准样本偏差。代码如下：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db.collection('students').aggregate()\n  .group({\n    _id: null,\n    ageStdDev: $.stdDevSamp('$score')\n  })\n  .end()\n```\n\n返回的数据结果如下：  \n\n```typescript\n{ \"_id\": null, \"ageStdDev\": 14.142135623730951 }\n```\n\n如果向集合 `students` 添加一条新记录，它的 `score` 字段类型是 `string`：  \n\n```typescript\n{ \"score\": \"aa\" }\n```\n\n用上面代码计算标准样本偏差时，`stdDevSamp` 会自动忽略类型不为 `number` 的记录，返回结果保持不变。\n\n### sum\n\n<!--\n/// meta\nkeyword: 求和\n-->\n\n计算并且返回一组字段所有数值的总和。  \n\n#### API 说明\n\n `sum` 的使用形式如下：  \n\n```typescript\ndb.command.aggregate.sum(<表达式>)\n```\n\n表达式可以传入指定字段，也可以传入指定字段组成的列表。`sum` 会自动忽略非数字值。如果字段下的所有值均是非数字，那么结果返回 0。若传入数字常量，则当做所有记录该字段的值都给给定常量，在聚合时相加，最终值为输入记录数乘以常量。  \n\n#### 示例代码\n\n 假设代表商品的集合 `goods` 的记录如下：`price` 代表商品销售额，`cost` 代表商品成本  \n\n```typescript\n{ \"cost\": -10, \"price\": 100 }\n{ \"cost\": -15, \"price\": 1 }\n{ \"cost\": -10, \"price\": 10 }\n```\n\n**单独字段**\n\n 借助 `sum` 可以计算所有商品的销售总和，代码如下：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('goods')\n  .aggregate()\n  .group({\n    _id: null,\n    totalPrice: $.sum('$price')\n  })\n  .end()\n```\n\n返回的数据结果如下：销售额是 111  \n\n```typescript\n{ \"_id\": null, \"totalPrice\": 111 }\n```\n\n**字段列表**\n\n 如果需要计算所有商品的利润总额，那么需要将每条记录的 `cost` 和 `price` 相加得到此记录对应商品的利润。最后再计算所有商品的利润总额。  \n\n 借助 `sum`，代码如下：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('goods')\n  .aggregate()\n  .group({\n    _id: null,\n    totalProfit: $.sum(\n      $.sum(['$price', '$cost'])\n    )\n  })\n  .end()\n```\n\n返回的数据结果如下：利润总额为 76  \n\n```typescript\n{ \"_id\": null, \"totalProfit\": 76 }\n```\n\n## 变量操作符\n\n### let\n\n自定义变量，并且在指定表达式中使用，返回的结果是表达式的结果。  \n\n#### API 说明\n\n `let` 的语法如下：  \n\n```typescript\ndb.command.aggregate.let({\n  vars: {\n    <变量1>: <变量表达式>,\n    <变量2>: <变量表达式>,\n    ...\n  },\n  in: <结果表达式>\n})\n```\n\n`vars` 中可以定义多个变量，变量的值由 `变量表达式` 计算而来，并且被定义的变量只有在 `in` 中的 `结果表达式` 才可以访问。  \n\n 在 `in` 的结果表达式中访问自定义变量时候，请在变量名前加上双美元符号 ( `$$` ) 并用引号括起来。  \n\n#### 示例代码\n\n 假设代表商品的集合 `goods` 的记录如下：`price` 代表商品价格，`discount` 代表商品折扣率，`cost` 代表商品成本  \n\n```typescript\n{ \"cost\": -10, \"discount\": 0.95, \"price\": 100 }\n{ \"cost\": -15, \"discount\": 0.98, \"price\": 1 }\n{ \"cost\": -10, \"discount\": 1, \"price\": 10 }\n```\n\n借助 `let` 可以定义并计算每件商品实际的销售价格，并将其赋值给自定义变量 `priceTotal`。最后再将 `priceTotal` 与 `cost` 进行取和 ( `sum` ) 运算，得到每件商品的利润。  \n\n 代码如下：  \n\n```typescript\nconst $ = db.command.aggregate\nlet res = await db\n  .collection('goods')\n  .aggregate()\n  .project({\n    profit: $.let({\n      vars: {\n        priceTotal: $.multiply(['$price', '$discount'])\n      },\n      in: $.sum(['$$priceTotal', '$cost'])\n    })\n  })\n  .end()\n```\n\n返回的数据结果如下：  \n\n```\n{ \"profit\": 85 }\n{ \"profit\": -14.02 }\n{ \"profit\": 0 }\n```\n"
  },
  {
    "path": "docs/zh/cloud-database/database-ql/policy.md",
    "content": "---\ntitle: 访问策略\n---\n\n# 访问策略\n\n前端可使用 [laf-client-sdk](https://github.com/labring/laf/tree/main/packages/client-sdk) “直连”数据库，无需与服务端对接口。\n\n访问策略用来对客户端对数据库的操作进行安全控制，一个访问策略由多个集合的访问规则组成，每个集合可配置读写操作权限的访问规则。\n\n开发者可以为应用创建多个访问策略，以供不同的客户端使用。\n\n通常应用可创建两个访问策略：\n\n- `app` 用于用户端客户端的访问策略，一般可以是 App、小程序、H5 等\n- `admin` 用于应用的后台管理的访问策略\n\n## 创建策略\n\n首先我们切换到集合页面，按照下面步骤为 user 集合添加一个访问策略。\n\n:::tip\n如果你还没有 user 集合就先创建一个。\n:::\n\n![creat-polocy](../../doc-images/creat-polocy.png)\n\n![add-polocy](../../doc-images/add-polocy.png)\n\n做完这两步之后，我们就成功的创建了一个访问策略，并且把策略放在了 user 集合上。\n这里我们解释一下规则内容：  \n\n```js\n{\n  \"read\": true, // 查询权限\n  \"count\": true, // 计数权限\n  \"update\": false, // 修改权限\n  \"remove\": false, // 删除权限\n  \"add\": false // 新增权限\n}\n```\n\n我们把值设为 true 则代表允许，false 则为不允许，按照我们刚刚默认的规则，前端可以直接对我们的集合进行`查询`和`计数`操作，而增 删 改，是不允许的。  \n这里还有另外一个值得留意的地方，就是\"入口地址\" 刚刚我们设置的策略名称为 app，那么入口地址就是 /proxy/app，接下来演示一下如何使用。\n\n## 前端“直连”\n\n在演示之前我们先往 user 集合中加一点数据。\n\n![polocy-db-data](../../doc-images/polocy-db-data.png)\n\n我们来到前端项目，这里使用 Vue 项目来演示，其他项目同理。\n\n### 首先安装 SDK  \n\n```bash\nnpm i laf-client-sdk\n```\n\n### 然后创建 cloud 对像\n\n这里注意了，我们多填写一个参数 dbProxyUrl，那么它的值就是我们刚刚强调的入口地址 `/proxy/app`\n\n```js\nimport { Cloud } from \"laf-client-sdk\";\n\nconst cloud = new Cloud({\n  baseUrl: \"https:/<APP_ID>.laf.run\",   // <APP_ID> 在首页应用列表获取\n  getAccessToken: () => \"\",    // 这里不需要授权，先填空\n  dbProxyUrl: \"/proxy/app\", // 这里就填写我们刚刚强调的“入口地址”\n})\n```\n\n创建完 cloud 对像之后我们尝试一下在前端直接发起查询。\n\n```js\nasync function get() {\n  const res = await cloud.database().collection(\"user\").get();\n  console.log(res);\n//   {\n//   \"data\": [\n//       {\n//           \"_id\": \"641d22292de2b789c963e5fd\",\n//           \"name\": \"jack\"\n//       },\n//       {\n//           \"_id\": \"641e87d52c9ce609db4d6047\",\n//           \"name\": \"rose\"\n//       }\n//   ],\n//   \"ok\": true\n// }\n}\n```\n\n现在我们来试试 count。\n\n```js\nasync function get() {\n  const res = await cloud.database().collection(\"user\").count();\n  console.log(res);\n  // {\n  //   \"total\": 2,\n  //   \"ok\": true\n  // }\n}\n```\n\n可以看到，简单的查询计数我们已经不需要写云函数，直接在前端即可实现，如果你想体验 `增删改` 可以修改对应策略的权限为 true，但这是一个很危险的行为。\n\n访问策略也可以是表达式，以下为 `users` （用户集合）的访问策略示例：\n其中`query` 是数据查询的条件对象，`uid === query._id` 表示该策略只允许当前用户读取自己的用户数据。\n\n```json\n  \"users\"\n  {\n    \"read\": \"uid === query._id\"\n  }\n```\n\n> 注意： `uid` 为 JWT Payload 中的字段，代表当前登录用户的 ID，你可在云函数中生成 JWT 令牌，其中 payload 中的字段都可在访问策略中使用。\n\n## 验证器\n\n访问规则由一个或多个验证器组成，`\"read\": true` 使用的是 `condition` 验证器，该验证器接一个表达式来控制是否允许访问。\n以上使用的是简写形式，完整的写法如下：\n\n```json\n{\n  \"read\": {\n    \"condition\": true\n  }\n}\n```\n\n当前内置了以下验证器：\n\n- `condition` 条件验证器，接受一个表达式，返回真值即代表允许访问，表达式中默认可用对象有\n  - `JWT Payloads` JWT 令牌 payload 中的字段，如示例中的 `uid`\n  - `query` 数据查询条件\n  - `data` 更新或新增数据操作时的数据对象\n- `data` 数据验证器，接受一个对象，对「更新或新增数据操作时的数据对象」中的各字段进行验证，具体参考以下示例\n- `query` 查询条件对象验证器，接受一个对象，对「查询条件对象」中的各字段进行验证，具体参考以下示例\n- `multi` 是否允许批量操作，接受一个表达式做为配置。默认只有 `read` 操作允许批量操作，如需开启其它批量操作需要显式指定此验证器\n\n## 实践建议\n\n初识访问规则，可能会觉其烦琐难以掌握，而且容易写错，或是对其安全性不自信、自知，所以根据我们在大量项目中的实践经验，给出一些建议：\n\n- 最小权限原则，即只给客户端必要的访问权限，只开放给客户端必要的集合；\n\n  - 即便只开放 `read` 权限，也可能节省 30%～ 50% 的后端接口；\n  - 再配合一些基本的 `condition` 判断，可有效减少 70%～ 90% 的后端接口；\n\n- 事务性的数据操作、复杂的表单提交，建议使用云函数实现：\n\n  - 云函数与客户端 SDK 接口一致，简单、轻量、快捷，无二次学习成本，调试更容易、无部署负担\n  - 云函数中访问数据库，无需编写访问规则，因为云函数是服务端执行的可信代码\n\n- 访问规则虽然也可以完成很多复杂的验证，但是除非你非常熟练的掌握了它，否则建议用云函数来实现这部分逻辑\n\n## 访问规则示例\n\n> 提供几个简单的示例以供参考和理解。\n\n### 简单示例 1：简单个人博客\n\n```json\n\"categories\"\n{\n  \"read\": true,\n  \"update\": \"uid\",\n  \"add\": \"uid\",\n  \"remove\": \"uid\"\n},\n\"articles\"\n{\n  \"read\": true,\n  \"update\": \"uid\",\n  \"add\": \"uid\",\n  \"remove\": \"uid\"\n}\n```\n\n> 提示：其中类似 `\"update\": \"uid\"` 的规则，是 `uid` 不为假值的意思 (undefined | null | false 等)\n\n### 简单示例 2：多用户博客\n\n```json\n\n{\n  \"read\": true,\n  \"update\": \"uid === query.author_id\",\n  \"add\": \"uid === query.author_id\",\n  \"remove\": \"uid === query.author_id\"\n}\n\n```\n\n### 复杂示例 1：数据验证\n\n```json\n{\n  \"read\": true,\n  \"add\": {\n    \"condition\": \"uid === query.author_id\",\n    \"data\": {\n      \"title\": { \"length\": [1, 64], \"required\": true },\n      \"content\": { \"length\": [1, 4096] },\n      \"status\": { \"boolean\": [true, false] },\n      \"likes\": { \"number\": [0], \"default\": 0 },\n      \"author_id\": \"$value == uid\"\n    }\n  },\n  \"remove\": \"uid === query.author_id\",\n  \"count\": true\n}\n```\n\n### 复杂示例 2：更高级的数据验证\n\n> 场景介绍：用户之间站内消息表访问规则\n\n```json\n{\n  \"read\": \"uid === query.receiver || uid === query.sender\",\n  \"update\": {\n    \"condition\": \"$uid === query.receiver\",\n    \"data\": {\n      \"read\": { \"in\": [true] }\n    }\n  },\n  \"add\": {\n    \"condition\": \"uid === data.sender\",\n    \"data\": {\n      \"read\": { \"in\": [false] },\n      \"content\": { \"length\": [1, 20480], \"required\": true },\n      \"receiver\": { \"exists\": \"/users/id\" },\n      \"read\": { \"in\": [true, false], \"default\": false }\n    }\n  },\n  \"remove\": false\n}\n```\n\n### data 验证器示例\n\n```json\n  \"categories\"\n{\n  \"read\": true,\n  \"update\": \"role === 'admin'\",\n  \"add\": {\n    \"condition\": \"role === 'admin'\",\n    \"data\": {\n      \"password\": { \"match\": \"^\\\\d{6,10}$\" },\n      \"author_id\": \"$value == uid\",\n      \"type\": { \"required\": true, \"in\": [\"choice\", \"fill\"] },\n      \"title\": { \"length\": [4, 64], \"required\": true, \"unique\": true },\n      \"content\": { \"length\": [4, 20480] },\n      \"total\": { \"number\": [0, 100], \"default\": 0, \"required\": true }\n    }\n  }\n}\n```\n"
  },
  {
    "path": "docs/zh/cloud-database/database-ql/quickstart.md",
    "content": "---\ntitle: 数据库入门\n---\n\n# 数据库入门\n\nLaf 为每个应用提供了一个开箱即用的数据库，并且非常易用。下面是一个简单的数据库的增删改查的例子，来快速的了解 Laf 的数据库操作。\n\n## 新建数据库实例\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.database() \n// db 为新建的数据库实例\n```\n\n## 云函数插入文档\n\n使用 `add` 方法可以往集合插入数据\n\n如下例子：往 `user` 集合中添加一个文档，`name` 为 `Jack` 的数据\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.database() \n\nexport async function main(ctx: FunctionContext) {\n  const res = await db.collection('user').add({\n    name: 'Jack'\n  })\n  console.log(res)\n}\n```\n\n```json\n// 集合 test 中会新增数据，_id 为自动生成\n{\n  \"_id\": \"6442b2cac4f3afd9a186ecd9\",\n  \"name\": \"Jack\"\n}\n```\n\n## 云函数查询文档\n\n使用 `get` 方法可以查询集合中的文档\n\n::: tip\n`get` 方法一次最多能获取 100 条记录，如需一次查询更多请看数据查询文档\n:::\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.database() \n\nexport async function main(ctx: FunctionContext) {\n  const res = await db.collection('user').get()\n  console.log(res)\n  // 查询结果\n  // {\n  //   data: [ { _id: '6442b2cac4f3afd9a186ecd9', name: 'Jack' } ],\n  //   requestId: undefined,\n  //   ok: true\n  // }\n}\n```\n\n使用 `getOne` 方法查询集合中的文档\n\n::: tip\n`getOne` 方法一次获取一条最新数据\n:::\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.database() \n\nexport async function main(ctx: FunctionContext) {\n  const res = await db.collection('user').getOne()\n  console.log(res)\n  // 查询结果\n  // {\n  //   ok: true,\n  //   data: { _id: '6442b2cac4f3afd9a186ecd9', name: 'Jack' },\n  //   requestId: undefined\n  // }\n}\n```\n\n## 云函数修改文档\n\n查出 `name` 为 `Jack` 的文档的_id，然后根据_id 修改文档\n\n使用 `update` 方法修改文档\n\n::: tip\n`where` 可设置查询条件，`doc` 根据 id 查询\n:::\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.database() \n\nexport async function main(ctx: FunctionContext) {\n  const res = await db.collection('test').where({\n    name:'Jack'\n  }).get()\n  // console.log(res)\n  const id = res.data[0]._id\n  const updateRes = await db.collection('test').doc(id).update({\n    name:'Tom'\n  })\n  console.log(updateRes)\n  // 修改结果：updated:1 代表已成功修改 1 个文档\n  // {\n  //   requestId: undefined,\n  //   updated: 1,\n  //   matched: 1,\n  //   upsertId: null,\n  //   ok: true\n  // }\n}\n```\n\n## 云函数删除文档\n\n先查出 `name` 为 `Tom` 的文档并删除\n\n::: tip\n`remove` 默认只能删除单条数据，如需批量删除，请查看数据删除文档\n:::\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.database() \n\nexport async function main(ctx: FunctionContext) {\n  const res = await db.collection('test').where({ name: \"Tom\" }).remove()\n  console.log(res)\n  // 删除结果：deleted:1 代表已成功删除 1 个文档\n  // { requestId: undefined, deleted: 1, ok: true }\n}\n```\n\n--------\n\n相信一步一步跟着文档操作，已经初步的了解数据库的增删改查，但是如果需要深入使用数据库操作，还需要仔细查看后续的文档\n"
  },
  {
    "path": "docs/zh/cloud-database/database-ql/update.md",
    "content": "---\ntitle: 更新数据\n---\n\n# 更新数据\n\nLaf 云数据库更新数据，实际上就是针对集合中的文档进行修改，通过 `where` 等操作符设置查询条件，然后通过 `update` 或 `set` 等更新操作符进行修改。\n\n## 更新文档\n\n### 更新指定文档\n\n我们这里把 jack 的名字改为 Tom。\n\n```typescript\nawait db.collection('user')\n.where({ name: 'jack' })\n.update({ name: \"Tom\" })\n```\n\n同样我们也可以一次更新同一个文档的多个属性，比如：更改名字的同时也更改年龄。\n\n```typescript\nawait db.collection('user')\n.where({ name: 'jack' })\n.update({ name: \"Tom\", age: \"18\" })\n```\n\n### 批量更新文档\n\n这里我们没有加条件限制，直接把 `user` 表中的所有 `name` 都改成了 `Tom` ，操作和之前一样只需要多传入一个对像 `{multi:true}` 即可。\n\n```typescript\nawait db.collection('user')\n.update({ name: \"Tom\" },{ multi:true })\n```\n\n## 更新指令\n\n### set\n\n更新指令。如果数据不存在，则会新增一个文档。\n\n::: warning\n注意：使用 `set` 需要使用 `doc` 去根据 ID 查询文档，然后进行更新，如果查询不到文档，则会新增一个文档。\n:::\n\n```typescript\nawait collection.doc('644148fd1eeb2b524dba499e').set({\n  name: \"Hey\"\n})\n```\n\n### inc\n\n更新指令。用于指示字段自增某个值，需要是正整数或者负整数。这是个原子操作，使用这个操作指令而不是先读数据、再加、再写回的好处是：\n\n1. 原子性：多个用户同时写，对数据库来说都是将字段加一，不会有后来者覆写前者的情况\n2. 减少一次网络请求：不需先读再写\n\n之后的 mul 指令同理。\n\n如给收藏的商品数量加一：\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"user\")\n  .where({\n    _openid: \"my-open-id\",\n  })\n  .update({\n    count: {\n      favorites: _.inc(1),\n    },\n  })\n```\n\n### mul\n\n更新指令。用于指示字段自乘某个值。需要是正整数或者负整数或者 0。\n\n### remove\n\n更新指令。用于表示删除某个字段。如某人删除了自己一条商品评价中的评分：\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"comments\")\n  .doc(\"comment-id\")\n  .update({\n    rating: _.remove(),\n  })\n```\n\n### push\n\n向数组尾部追加元素，支持传入单个元素或数组\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"comments\")\n  .doc(\"comment-id\")\n  .update({\n    // users: _.push('aaa')\n    users: _.push([\"aaa\", \"bbb\"]),\n  })\n```\n\n### pop\n\n删除数组尾部元素\n\n```typescript\nconst _ = db.command;\nawait db.collection(\"comments\")\n  .doc(\"comment-id\")\n  .update({\n    users: _.pop(),\n  })\n```\n\n### unshift\n\n向数组头部添加元素，支持传入单个元素或数组。使用同 push\n\n### shift\n\n删除数组头部元素。使用同 pop\n"
  },
  {
    "path": "docs/zh/cloud-database/delete.md",
    "content": "\n# 云数据库 - 删除文档\n\n本节将介绍如何从云数据库中删除集合中的文档。\n\n::: info 本节目录\n[[toc]]\n:::\n\n## 删除单条文档\n\n如果您想从集合中删除现有文档，可以使用 `deleteOne()` 删除一个文档，该方法接受一个查询条件，匹配您想要删除的文档。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const ret = await db.collection('users').deleteOne({\n    name: 'laf'\n  })\n\n  console.log(ret)\n}\n```\n\n::: details 查看输出\n```js\n{\n  acknowledged: true,\n  deletedCount: 1\n}\n```\n:::\n\n::: info 更多参考\n- [db.collection.deleteOne() 完整说明](https://www.mongodb.com/docs/manual/reference/method/db.collection.deleteOne/)\n- [API: Collection.deleteOne()](https://mongodb.github.io/node-mongodb-native/5.0/classes/Collection.html#deleteOne)\n:::\n\n\n## 删除多条文档\n\n如果您想从集合中删除多个文档，可以使用 `deleteMany()` 删除多个文档，该方法接受一个查询条件，匹配您想要删除的文档。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  // 删除 age 小于 10 的文档\n  const ret = await db.collection('users').deleteMany({\n    age: { $lt: 10 }\n  })\n\n  console.log(ret)\n}\n```\n\n::: details 查看输出\n```js\n{\n  acknowledged: true,\n  deletedCount: 2\n}\n```\n:::\n\n::: info 更多参考\n- [db.collection.deleteMany() 完整说明](https://www.mongodb.com/docs/manual/reference/method/db.collection.deleteMany/)\n- [API: Collection.deleteMany()](https://mongodb.github.io/node-mongodb-native/5.0/classes/Collection.html#deleteMany)\n:::\n\n\n## 下一步\n::: tip\n- [插入文档](./insert.md)\n- [查询文档](./find.md)\n- [更新文档](./update.md)\n:::"
  },
  {
    "path": "docs/zh/cloud-database/find.md",
    "content": "\n# 云数据库 - 查询文档\n\n本节介绍在云数据库中查询文档的用法。\n\n::: info 本节目录\n[[toc]]\n:::\n\n\n## 概述\n\n你可以执行查找操作以从云数据库检索数据。通过调用 `find()` 或 `findOne()` 方法来执行查找操作，以获取匹配查询条件的文档。\n\nNode.js 驱动程序提供了以下方法来查找文档：\n\n- `find()`\n- `findOne()`\n- `countDocuments`\n\n## 查找单个文档\n\n`findOne()` 方法返回集合中第一个匹配查询条件的文档。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const doc = await db.collection('users').findOne({\n    name: '王小波'\n  })\n\n  console.log(doc)\n}\n```\n\n::: details 查看输出\n```js\n{\n  _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n  name: '王小波',\n  age: 44,\n  books: [ '黄金时代', '白银时代', '青铜时代' ]\n}\n```\n:::\n\n::: info 更多参考\n- [db.collection.findOne() 完整说明](https://www.mongodb.com/docs/manual/reference/method/db.collection.findOne/)\n- [API: Collection.findOne()](https://mongodb.github.io/node-mongodb-native/5.0/classes/Collection.html#findOne)\n:::\n\n## 查找多个文档\n\n`find()` 方法返回集合中所有匹配查询条件的文档。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users')\n    .find({ age: 44 })\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n::: details 查看输出\n```js\n[\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n    name: '王小波',\n    age: 44,\n    books: [ '黄金时代', '白银时代', '青铜时代' ]\n  },\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f70\"),\n    name: '张小柱',\n    age: 44,\n    books: []\n  }\n]\n```\n:::\n\n::: info 更多参考\n- [db.collection.find() 完整说明](https://www.mongodb.com/docs/manual/reference/method/db.collection.find/)\n- [API: Collection.find()](https://mongodb.github.io/node-mongodb-native/5.0/classes/Collection.html#find)\n:::\n\n\n## 查询文档数量\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const count = await db.collection('users')\n    .countDocuments({ age: 44 })\n\n  console.log(count)\n}\n```\n\n::: info 更多参考\n- [db.collection.countDocuments() 完整说明](https://www.mongodb.com/docs/manual/reference/method/db.collection.count/)\n- [API: Collection.countDocuments()](https://mongodb.github.io/node-mongodb-native/5.0/classes/Collection.html#countDocuments)\n:::\n\n## 下一步\n::: tip\n- [插入文档](./insert.md)\n- [更新文档](./update.md)\n- [删除文档](./delete.md)\n\n:::"
  },
  {
    "path": "docs/zh/cloud-database/index.md",
    "content": "\n# 云数据库介绍\n\nLaf 云数据库提供了开箱即用的数据库服务，无需自行搭建和配置数据库，即可快速使用数据库服务。\n\n::: info 本节目录\n[[toc]]\n:::\n\n## 基本概念\n\n### 文档（Document）\n\n文档是云数据库中数据的基本单元，类似于关系型数据库中的行。文档是一个键值对的有序集合，文档中的键值对是有序的，文档中的键是字符串，值可以是各种复杂的数据类型。\n\n```json\n{\n    \"_id\": \"5f7b6b6b6b6b6b6b6b6b6b6b\",\n    \"name\": \"张三\",\n    \"age\": 18,\n    \"hobbies\": [\"篮球\", \"足球\", \"游泳\"],\n    \"address\": {\n        \"province\": \"广东省\",\n        \"city\": \"珠海市\",\n        \"district\": \"香洲区\"\n    }\n}\n```\n::: info\n在云数据库中，每个文档都有一个 `_id` 字段，用于唯一标识一个文档。如果插入文档时没有指定 `_id` 字段，会自动生成一个唯一的 `_id` 字段。\n:::\n\n### 集合（Collection）\n\n集合是一组文档的集合，类似于关系型数据库中的表。集合中的文档可以是不同的结构，但是通常情况下，集合中的文档都有着相同的结构。\n![MongoDb Collection](collection.png)\n\n### 数据库（Database）\n\n数据库是一组集合的集合，类似于关系型数据库中的数据库。\n\n\n## 下一步\n::: tip\n- [快速开始](./quick-start.md)\n- [插入文档](./insert.md)\n- [查询文档](./find.md)\n- [更新文档](./update.md)\n- [删除文档](./delete.md)\n\n> _Laf 云数据库底层是 [MongoDB](https://www.mongodb.com/)，可以直接使用原生 MongoDB 的语法进行操作。_\n:::"
  },
  {
    "path": "docs/zh/cloud-database/insert.md",
    "content": "\n# 云数据库 - 插入文档\n\n本节介绍云数据库中插入文档的用法。\n\n::: info 本节目录\n[[toc]]\n:::\n\n\n## 概述\n\n插入操作将一个或多个文档插入到集合中。Node.js 驱动程序提供了以下方法来执行插入操作：\n\n- `insertOne()`\n- `insertMany()`\n\n\n## 插入单个文档\n\n`insertOne()` 方法将一个文档插入到集合中。\n\n如果集合不存在，`insertOne()` 方法会自动创建集合并插入文档。\n\n执行成功后，该方法返回一个 `InsertOneResult` 实例，该实例表示新文档的 `_id`。\n\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const ret = await db.collection('users').insertOne({ \n    name: '王小波',\n    age: 44,\n    books: ['黄金时代', '白银时代', '青铜时代']\n  })\n\n  console.log(ret)\n}\n```\n\n::: details 查看输出\n```js\n{\n  acknowledged: true,\n  insertedId: new ObjectId(\"65798555f313010ca6017f72\")\n}\n```\n:::\n\n::: info 更多参考\n- [db.collection.insertOne() 完整说明](https://www.mongodb.com/docs/manual/reference/method/db.collection.insertOne/)\n- [API: Collection.insertOne()](https://mongodb.github.io/node-mongodb-native/5.0/classes/Collection.html#insertOne)\n:::\n\n\n## 插入多个文档\n\n`insertMany()` 方法将一个或多个文档插入到集合中。\n\n如果集合不存在，`insertMany()` 方法会自动创建集合并插入文档。\n\n执行成功后，该方法返回一个 `InsertManyResult` 实例，该实例表示新文档的 `_id`。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const ret = await db.collection('users').insertMany([\n    { \n      name: '王小波',\n      age: 44,\n      books: ['黄金时代', '白银时代', '青铜时代']\n    },\n    { \n      name: '孙连城',\n      age: 33,\n      books: ['无边的宇宙']\n    }\n  ])\n\n  console.log(ret)\n}\n```\n\n::: details 查看输出\n```js\n{\n  acknowledged: true,\n  insertedCount: 2,\n  insertedIds: {\n    '0': new ObjectId(\"6579853af313010ca6017f70\"),\n    '1': new ObjectId(\"6579853af313010ca6017f71\")\n  }\n}\n```\n:::\n\n::: info 更多参考\n- [db.collection.insertMany() 完整说明](https://www.mongodb.com/docs/manual/reference/method/db.collection.insertMany/)\n- [API: Collection.insertMany()](https://mongodb.github.io/node-mongodb-native/5.0/classes/Collection.html#insertMany)\n:::\n\n\n## 下一步\n::: tip\n- [查询文档](./find.md)\n- [更新文档](./update.md)\n- [删除文档](./delete.md)\n:::"
  },
  {
    "path": "docs/zh/cloud-database/query/array.md",
    "content": "\n\n# 查询数组类型字段\n\n本节介绍如何查询文档中的数组类型字段。\n\n假设我们有如下文档：\n\n```json\n[\n  {\n    \"name\": \"张三\",\n    \"age\": 18,\n    \"hobbies\": [\"乒乓球\", \"足球\"],\n    \"serviceYears\": [2009, 2010, 2011, 2012]\n  },\n  {\n    \"name\": \"李四\",\n    \"age\": 20,\n    \"hobbies\": [\"乒乓球\", \"羽毛球\"],\n    \"serviceYears\": [2011, 2012, 2013, 2014]\n  }\n]\n```\n\n## 查询数组中包含某个元素的文档\n\n下面的示例查询所有喜欢打乒乓球的用户。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users')\n    .find({  \n      hobbies: '乒乓球'\n    })\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n::: details 查看输出\n```js\n[\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n    name: '张三',\n    age: 18,\n    hobbies: ['乒乓球', '足球']\n  },\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n    name: '李四',\n    age: 20,\n    hobbies: ['乒乓球', '羽毛球']\n  }\n]\n```\n:::\n\n## 配合条件操作符查询数组中的元素\n\n下面的示例查询服役年份大于等于 2011 年的用户。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users')\n    .find({  \n      serviceYears: { $gte: 2011 }\n    })\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n::: details 查看输出\n```js\n[\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n    name: '张三',\n    age: 18,\n    serviceYears: [2009, 2010, 2011, 2012]\n  },\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n    name: '李四',\n    age: 20,\n    serviceYears: [2011, 2012, 2013, 2014]\n  }\n]\n```\n:::\n\n\n## 更多用法\n\n::: info 引用链接\n- [查询数组](https://www.mongodb.com/docs/manual/tutorial/query-arrays/#query-an-array)\n- [查询数组中的嵌套文档](https://www.mongodb.com/docs/manual/tutorial/query-array-of-documents/)\n:::"
  },
  {
    "path": "docs/zh/cloud-database/query/condition.md",
    "content": "\n# 条件查询\n\n## 概述\n\n大多数 CRUD 操作允许你指定查询条件来缩小匹配文档的范围。查询条件包含一个或多个查询操作符，应用于特定字段，用于确定哪些文档包含在结果集中。\n\n在查询条件中，您可以将字段与字面值进行匹配，例如 `{ title: 'The Room' }`，也可以组合查询操作符来表达更复杂的匹配条件。\n\n在本节中，我们将介绍以下类别的查询操作符，并展示如何使用它们：\n\n- 比较操作符\n- 逻辑操作符\n\n\n## 比较操作符\n\n| 名称 | 描述 |\n| --- | --- |\n| `$eq` | 匹配字段值等于指定值的文档。 |\n| `$gt` | 匹配字段值大于指定值的文档。 |\n| `$gte` | 匹配字段值大于或等于指定值的文档。 |\n| `$in` | 匹配字段值等于指定数组中任意值的文档。 |\n| `$lt` | 匹配字段值小于指定值的文档。 |\n| `$lte` | 匹配字段值小于或等于指定值的文档。 |\n| `$ne` | 匹配字段值不等于指定值的文档。 |\n| `$nin` | 匹配字段值不等于指定数组中任意值的文档。 |\n\n\n### `$gt` `$lt` 示例\n\n你可以使用多个查询操作符来组合查询条件。例如，以下查询条件将匹配年龄大于 40 且小于 50 的用户：\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  // 查询年龄大于 40 且小于 50 的用户\n  const docs = await db.collection('users')\n    .find({ \n      age: { $gt: 40, $lt: 50 }\n    })\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n\n### `$in` 示例\n\n以下示例将匹配年龄为 12、24 或 36 的用户：\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users')\n    .find({ \n      age: { $in: [12, 24, 36] }\n    })\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n## 逻辑操作符\n\n| 名称 | 描述 |\n| --- | --- |\n| `$and` | 匹配同时满足所有查询条件的文档。 |\n| `$not` | 匹配不满足查询条件的文档。 |\n| `$nor` | 匹配不满足所有查询条件的文档。 |\n| `$or` | 匹配满足任意查询条件的文档。 |\n\n### `$or` 示例\n\n以下示例将查询满足法定婚龄的用户：\n- 男性年龄大于等于 22 岁\n- 女性年龄大于等于 20 岁\n\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users').find({\n    $or: [\n      { gender: '男', age: { $gte: 22 }},\n      { gender: '女', age: { $gte: 20}}\n    ]\n  }).toArray()\n\n  console.log(docs)\n}\n```\n\n## 更多用法\n\n::: info 引用链接\n- [查询条件](https://www.mongodb.com/docs/drivers/node/v5.0/fundamentals/crud/query-document/)\n- [逻辑操作符](https://www.mongodb.com/docs/manual/reference/operator/query-logical/)\n- [比较操作符](https://www.mongodb.com/docs/manual/reference/operator/query-comparison/)\n- [元素操作符](https://www.mongodb.com/docs/manual/reference/operator/query-element/)\n- [数组操作符](https://www.mongodb.com/docs/manual/reference/operator/query-array/)\n:::"
  },
  {
    "path": "docs/zh/cloud-database/query/nested.md",
    "content": "\n\n# 嵌套文档查询\n\n本节介绍如何查询嵌套文档。\n\n嵌套文档是指文档中包含文档的情况，例如：\n\n```json\n[\n  {\n    \"name\": \"张三\",\n    \"age\": 18,\n    \"address\": {\n      \"city\": \"北京\",\n      \"street\": \"中关村\"\n    }\n  },\n  {\n    \"name\": \"李四\",\n    \"age\": 20,\n    \"address\": {\n      \"city\": \"上海\",\n      \"street\": \"浦东\"\n    }\n  }\n]\n```\n\n\n## 使用 `.` 表示法对嵌套字段进行查询\n\n下面的示例使用 `.` 表示法查询所有居住在北京的用户。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users')\n    .find({  \n      'address.city': '北京'\n    })\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n::: details 查看输出\n```js\n[\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n    name: '张三',\n    age: 18,\n    address: {\n      city: '北京',\n      street: '中关村'\n    }\n  }\n]\n```\n:::\n\n## $in 操作符示例\n\n以下示例将查询居住在北京或上海的用户。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users')\n    .find({ \n      'address.city': { $in: ['北京', '上海'] }\n    })\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n## 更多用法\n\n::: info 引用链接\n- [嵌套文档查询](https://www.mongodb.com/docs/manual/tutorial/query-embedded-documents/)\n- [查询条件](https://www.mongodb.com/docs/drivers/node/v5.0/fundamentals/crud/query-document/)\n- [$in 用法](https://www.mongodb.com/docs/manual/reference/operator/query/in/#mongodb-query-op.-in)\n:::"
  },
  {
    "path": "docs/zh/cloud-database/query/pagination.md",
    "content": "\n\n# 对文档进行分页查询\n\n## 概述\n\n分页查询是指将查询结果分页返回，以便于客户端进行分页展示。在云数据库中，分页查询可以通过 `limit` 和 `skip` 来实现。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users')\n    .find({})\n    .skip(0)\n    .limit(10)\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n其中 `skip` 用于指定跳过的文档数量，`limit` 用于指定返回的文档数量，即每页的文档数量。\n上述代码中，我们指定跳过 0 个文档，返回 10 个文档，即返回第 1 页的文档。\n\n\n## 分页查询示例\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function (ctx: FunctionContext) {\n  // 每页的文档数量，默认为 10\n  const pageSize = ctx.query.pageSize || 10\n\n  // 当前页码，默认为第一页\n  const pageIndex = ctx.query.pageIndex || 1\n\n  // 计算查询的起始位置，即跳过的文档数量\n  const skip = pageSize * (pageIndex - 1)\n\n  // 查询文档\n  const docs = await db.collection('users')\n    .find({})\n    .skip(skip)\n    .limit(pageSize)\n    .toArray()\n  \n  // 查询总数\n  const total = await db.collection('users').countDocuments()\n\n  return {\n    list: docs,\n    total,\n    pageSize,\n    pageIndex\n  }\n}\n```\n\n::: info 更多参考\n- [skip() 完整说明](https://www.mongodb.com/docs/manual/reference/method/cursor.skip/)\n- [limit() 完整说明](https://www.mongodb.com/docs/manual/reference/method/cursor.limit/)\n- [API: skip()](https://mongodb.github.io/node-mongodb-native/5.0/classes/FindCursor.html#skip)\n- [API: limit()](https://mongodb.github.io/node-mongodb-native/5.0/classes/FindCursor.html#limit)\n:::\n"
  },
  {
    "path": "docs/zh/cloud-database/query/regex.md",
    "content": "\n\n# 使用正则进行模糊查询\n\n## 概述\n\n本节介绍如何使用正则表达式对文本字段进行模糊查询。\n\n\n## 正则表达式查询\n\n下面的示例使用正则表达式查询所有名字中包含`王`的用户。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users')\n    .find({  \n      name: { $regex: /王/ }\n    })\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n::: details 查看输出\n```js\n[\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n    name: '王小波',\n    age: 1000\n  },\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n    name: '兰陵王',\n    age: 30\n  }\n]\n```\n:::\n\n## 在 `$in` 操作符中使用正则表达式\n\n下面的示例使用正则表达式查询所有姓`王`或`陈`的用户，即首字为`王`或`陈`的用户。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users')\n    .find({  \n      name: { $in: [/^王/, /^陈/] } \n    })\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n::: details 查看输出\n```js\n[\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n    name: '王小波',\n    age: 1000\n  },\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n    name: '陈奕迅',\n    age: 40\n  }\n]\n```\n:::\n\n\n## $regex 和 $not 操作符组合使用\n\n下面的示例使用 `$regex` 和 `$not` 操作符查询所有**不姓**`王`的用户。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users')\n    .find({  \n      name: { $not: { $regex: /^王/ } } \n    })\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n::: details 查看输出\n```js\n[\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n    name: '陈奕迅',\n    age: 40\n  },\n  {\n    _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n    name: '兰陵王',\n    age: 30\n  }\n]\n```\n:::\n\n\n## 更多用法\n\n::: info 引用链接\n- [正则表达式](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions)\n- [$regex 用法](https://docs.mongodb.com/manual/reference/operator/query/regex/)\n- [$not 用法](https://docs.mongodb.com/manual/reference/operator/query/not/)\n- [$in 用法](https://docs.mongodb.com/manual/reference/operator/query/in/)\n:::"
  },
  {
    "path": "docs/zh/cloud-database/query/sort.md",
    "content": "\n# 对查询进行排序\n\n你可以使用 `sort()` 方法对查询结果进行排序，其用法如下：\n\n```typescript\nsort({ field: 1 })\n```\n\n其中 `field` 为排序字段，`1` 表示升序，`-1` 表示降序。\n\n## 升序查询\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users')\n    .find({})\n    .sort({ age: 1})\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n## 降序查询\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const docs = await db.collection('users')\n    .find({})\n    .sort({ age: -1})\n    .toArray()\n\n  console.log(docs)\n}\n```\n\n\n::: info 更多参考\n- [sort() 完整说明](https://www.mongodb.com/docs/manual/reference/method/cursor.sort/)\n- [API: sort()](https://mongodb.github.io/node-mongodb-native/5.0/classes/FindCursor.html#sort)\n:::"
  },
  {
    "path": "docs/zh/cloud-database/quick-start.md",
    "content": "\n# 云数据库快速入门\n\n本文通过 3 分钟，快速介绍如何操作云数据库。\n\n::: info 本节目录\n[[toc]]\n:::\n\n## 获取数据库实例\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n```\n\n## 插入文档\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const ret = await db.collection('users').insertOne({ \n    name: '王小波',\n    age: 44,\n    books: ['黄金时代', '白银时代', '青铜时代']\n  })\n\n  console.log(ret)\n}\n```\n\n::: details 查看输出\n```js\n{\n  acknowledged: true,\n  insertedId: new ObjectId(\"65797a86f313010ca6017f6f\")\n}\n```\n:::\n\n\n## 查询文档\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const doc = await db.collection('users').findOne({\n    name: '王小波'\n  })\n\n  console.log(doc)\n}\n\n```\n\n::: details 查看输出\n```js\n{\n  _id: new ObjectId(\"65797a86f313010ca6017f6f\"),\n  name: '王小波',\n  age: 44,\n  books: [ '黄金时代', '白银时代', '青铜时代' ]\n}\n```\n:::\n\n\n## 更新文档\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const ret = await db.collection('users').updateOne({\n    name: '王小波'\n  }, {\n    $set: {\n      age: 1000\n    }\n  })\n\n  console.log(ret)\n}\n```\n\n::: details 查看输出\n```js\n{\n  acknowledged: true,\n  modifiedCount: 1,\n  upsertedId: null,\n  upsertedCount: 0,\n  matchedCount: 1\n}\n```\n:::\n\n## 删除文档\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const ret = await db.collection('users').deleteOne({\n    name: '张小柱'\n  })\n\n  console.log(ret)\n}\n```\n\n::: details 查看输出\n```js\n{ \n  acknowledged: true,\n  deletedCount: 0   // 由于没有找到张小柱，所以删除数量为 0\n}\n```\n:::\n\n## 下一步\n\n::: tip \n- [插入文档](./insert.md)\n- [查询文档](./find.md)\n- [更新文档](./update.md)\n- [删除文档](./delete.md)\n\n>_Laf 使用的数据库 API 是 [MongoDb 官方 Node.js SDK](https://www.mongodb.com/docs/drivers/node/v5.0/quick-reference/)，你也可以直接参考官方文档。_\n:::\n"
  },
  {
    "path": "docs/zh/cloud-database/update.md",
    "content": "\n# 云数据库 - 更新文档\n本节介绍在云数据库中更新文档的用法。\n\n::: info 本节目录\n[[toc]]\n:::\n\n## 概述\n\n你可以使用更新和替换操作修改集合中的文档。\n\n更新文档时，你可以使用更新操作或替换操作：\n\n- 更新操作修改文档的字段和值，同时保持其他字段和值不变。\n- 替换操作将现有文档中的所有字段和值替换为指定的字段和值，同时保持 _id 字段值不变。\n\nNode.js 驱动程序提供了以下方法来更改文档：\n\n- `updateOne()`\n- `updateMany()`\n- `replaceOne()`\n\n## 更新单个文档\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const ret = await db.collection('users').updateOne({\n    name: '王小波'\n  }, {\n    $set: { age: 1000 }\n  })\n\n  console.log(ret)\n}\n```\n\n::: details 查看输出\n```js\n{\n  acknowledged: true,\n  modifiedCount: 1,\n  upsertedId: null,\n  upsertedCount: 0,\n  matchedCount: 1\n}\n```\n:::\n\n::: info 更多参考\n- [db.collection.updateOne() 完整说明](https://www.mongodb.com/docs/manual/reference/method/db.collection.updateOne/)\n- [API: Collection.updateOne()](https://mongodb.github.io/node-mongodb-native/5.0/classes/Collection.html#updateOne)\n:::\n\n\n## 更新多条文档\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const ret = await db.collection('users').updateMany({\n    createdAt: { $exists: false }\n  }, {\n    $set: { createdAt: new Date() }\n  })\n\n  console.log(ret)\n}\n```\n\n::: details 查看输出\n```js\n{\n  acknowledged: true,\n  modifiedCount: 2,\n  upsertedId: null,\n  upsertedCount: 0,\n  matchedCount: 2\n}\n```\n:::\n\n::: info 更多参考\n- [db.collection.updateMany() 完整说明](https://www.mongodb.com/docs/manual/reference/method/db.collection.updateMany/)\n- [API: Collection.updateMany()](https://mongodb.github.io/node-mongodb-native/5.0/classes/Collection.html#updateMany)\n:::\n\n\n## 替换单个文档\n\n`replaceOne()` 方法替换集合中的单个文档。\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function () {\n  const ret = await db.collection('users').replaceOne(\n    { name: '王小波' },\n    { \n      name: '王小波',\n      age: 1000,\n      createdAt: new Date()\n    })\n\n  console.log(ret)\n}\n```\n\n::: details 查看输出\n```js\n{\n  acknowledged: true,\n  modifiedCount: 1,\n  upsertedId: null,\n  upsertedCount: 0,\n  matchedCount: 1\n}\n```\n:::\n\n::: info 更多参考\n- [db.collection.replaceOne() 完整说明](https://www.mongodb.com/docs/manual/reference/method/db.collection.replaceOne/)\n- [API: Collection.replaceOne()](https://mongodb.github.io/node-mongodb-native/5.0/classes/Collection.html#replaceOne)\n:::\n\n## 下一步\n::: tip\n- [插入文档](./insert.md)\n- [查询文档](./find.md)\n- [删除文档](./delete.md)\n:::"
  },
  {
    "path": "docs/zh/cloud-function/auth.md",
    "content": "\n\n# 基于 JWT 的身份验证\n\n关于 JWT 的介绍，可以参考文末参考链接，本节不在赘述。\n\n::: info 本节目录\n[[toc]]\n:::\n\n\n## 生成 JWT\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  const payload = { \n    user_id: 123,\n    exp: Math.floor(Date.now()/1000) + 60 * 60 * 24 * 7, // 有效期为 7 天\n  }\n  const token = cloud.getToken(payload)\n\n  return token\n}\n```\n\n## 验证 JWT\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  const token = ctx.headers.token\n  const payload = cloud.parseToken(token)\n\n  if(payload.uid === 123) {\n    return 'success'\n  } else {\n    return 'fail'\n  }\n}\n```\n\n## 开箱即用的 `Bearer Token`\n\n::: info\nLaf 云函数内置了 `Bearer Token` 的身份验证，即 `Authorization` 请求头的值为 `Bearer ${jwt}`，可直接使用。\n关于 `Bearer Token` 的介绍不再赘述，需要你需要自行了解其含义用法。\n:::\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  const payload = ctx.user\n\n  if(payload.uid === 123) {\n    return 'success'\n  } else {\n    return 'fail'\n  }\n}\n```\n\n::: info\n客户端请求时，只需在请求头中添加 `Authorization: Bearer ${jwt}` 即可，Laf 云函数会自动验证身份，并将解析后的 `payload` 存储在 `ctx.user` 中。\n\n如果请求未携带 `Authorization` 请求头，或者 `Authorization` 请求头的值不是 `Bearer ${jwt}`，则 `ctx.user` 为 `null`。\n\n如果 token 验证不通过， `ctx.user` 为 `null`。\n:::\n\n\n## 参考链接\n\n- [JWT 中文详解](https://zhuanlan.zhihu.com/p/651660344)\n- [JWT 官网](https://jwt.io/)\n\n\n## 下一步\n::: tip\n- [HTTP 请求](./request.md)\n- [HTTP 响应](./response.md)\n- [处理文件上传](./files.md)\n- [发起网络请求](./fetch.md)\n- [云数据库](../cloud-database/index.md)\n:::\n"
  },
  {
    "path": "docs/zh/cloud-function/cron.md",
    "content": "\n# 定时任务\n\n本节介绍使用触发器，定时触发云函数的执行。\n\n![Cron Trigger](cron.png)\n\n如图，在「应用开发控制台」中，云函数编辑器页面左上触，可打开触发器管理面板，按界面操作即可新建定时触发器来实现定时任务。"
  },
  {
    "path": "docs/zh/cloud-function/deps.md",
    "content": "\n\n# 依赖包管理\n\n本节介绍应用的依赖包管理，laf 应用支持添加三方的 npm packages。\n\n::: info 本节目录\n[[toc]]\n:::\n\n应用的依赖分为两种：\n- 自定义依赖，是开发者为应用主动添加的依赖\n- 内置依赖，是运行时中自带的依赖，无需安装\n\n## 自定义依赖\n\n应用添加的`自定义依赖`包在运行时内部，会存储在一个单独的目录下， 与`内置依赖`不在同一目录。\n\n`自定义依赖` 的加载优先级会高于 `内置依赖`，即你可以添加一个`内置依赖`中已存在的依赖包，云函数会优先加载你添加的依赖版本。\n\n自定义依赖的添加和管理，在「laf 应用开发控制台」中云函数列表的下方，可根据页面对应的操作来完成自定义依赖的管理，不再赘述。\n\n## 内置依赖\n\n\n**此表中依赖项及其版本，可能并不会随着迭代及时更新，知悉。**\n\n```json\n{\n  \"@aws-sdk/client-s3\": \"^3.468.0\",\n  \"@aws-sdk/client-sts\": \"^3.468.0\",\n  \"@aws-sdk/s3-request-presigner\": \"^3.468.0\",\n  \"@kubernetes/client-node\": \"^0.18.0\",\n  \"@lafjs/cloud\": \"^1.0.0-beta.14\",\n  \"@types/pako\": \"^2.0.2\",\n  \"axios\": \"^1.4.0\",\n  \"chalk\": \"^4.1.2\",\n  \"chatgpt\": \"^5.2.5\",\n  \"cors\": \"^2.8.5\",\n  \"database-proxy\": \"^1.0.0-beta.14\",\n  \"dayjs\": \"^1.11.7\",\n  \"dotenv\": \"^8.2.0\",\n  \"ejs\": \"^3.1.8\",\n  \"express\": \"^4.18.2\",\n  \"express-http-proxy\": \"^2.0.0\",\n  \"express-xml-bodyparser\": \"^0.3.0\",\n  \"jsonwebtoken\": \"^9.0.0\",\n  \"lodash\": \"^4.17.21\",\n  \"minio\": \"^7.0.32\",\n  \"mongodb\": \"^5.9.2\",\n  \"mongodb-uri\": \"^0.9.7\",\n  \"multer\": \"^1.4.5-lts.1\",\n  \"node-modules-utils\": \"^1.0.0-beta.14\",\n  \"nodemailer\": \"^6.6.3\",\n  \"pako\": \"^2.1.0\",\n  \"validator\": \"^13.7.0\",\n  \"ws\": \"^8.11.0\"\n}\n```\n\n## 依赖缓存\n\n在应用启动时，运行时会自动运行 `npm install` 指令安装依赖，在首次安装成功后，会将已安装的依赖目录打包缓存到云存储中。\n\n后续再重启/启动应用时，会自动使用缓存，从而大大减少启动时间。\n\nLaf 会自动为每个应用自动创建一个 `cloud-bin` 的文件桶，依赖缓存文件会自动上传到该文件桶中，文件名为 `node_modules.tar`。\n\n开发者如果主动删除 `node_modules.tar` 文件，则下次启动的时候会重新安装依赖并缓存。\n\n开发者如果主动删除 `cloud-bin` 文件桶，则下次启动时 laf 会自动创建该文件桶。\n\n## 离线使用\n\n如果开发者需要在完全离线的环境下，无法使用在线的 npm registry 服务，即无法执行 `npm install` 进行依赖安装，可通过以下方式完成离线使用：\n\n- 在有网环境中将要使用的依赖打包为 `node_modules.tar`，并上传到 `cloud-bin` 文件中，以缓存的方式提供给运行时\n- 给应用添加 `LF_NODE_MODULES_CACHE=always` 环境变量，以控制运行时跳过执行 `npm install` 操作\n\n\n## 下一步\n::: tip\n- [发起网络请求](./fetch.md)\n- [环境变量](./env.md)\n- [云数据库](../cloud-database/index.md)\n- [云存储](../cloud-storage/index.md)\n- [函数引用](./import.md)\n:::"
  },
  {
    "path": "docs/zh/cloud-function/env.md",
    "content": "\n\n# 环境变量\n\n在 laf「开发控制台」，点击左下角的「设置」按钮，可打开「应用设置」面板，在「环境变量」可修改/添加环境变量。\n\n\n![Environment Variables](env.png)\n\n## 访问环境变量\n\n可通过 `process.env` 访问应用环境变量。\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  const appid = process.env.APPID\n  console.log(appid)\n}\n```\n\n## 内置的环境变量\n\n::: warning 提示\n通常不需要手动修改应用的内置环境变量，可能会对应用产生不可预期的影响，除非你很清楚其用法用途。\n:::\n\n### `APPID`\n\n`process.env.APPID` 可获取当前应用的 `appid`，请勿修改此项。\n\n### `NPM_INSTALL_FLAGS`\n\n`process.env.NPM_INSTALL_FLAGS` 可用于配置应用安装依赖时的额外参数，默认为空。\n\n如果你需要指定应用执行 `npm install` 指令的镜像源，可添加此环境变量覆盖默认配置，如：\n\n```sh\nNPM_INSTALL_FLAGS=\"--registry=https://registry.npmjs.org\"\n```\n\n::: tip\n在 [laf.run](https://laf.run) 公有云上，为了加速中国大陆地区的应用初始化速度，使用了加速镜像，该值默认为 `--registry=https://registry.npmmirror.com --canvas_binary_host_mirror=https://npmmirror.com/mirrors/canvas --sharp_binary_host=https://npmmirror.com/mirrors/sharp --sharp_libvips_binary_host=https://npm.taobao.org/mirrors/sharp-libvips`\n:::\n\n\n### `SERVER_SECRET`\n\n`process.env.SERVER_SECRET` 是应用运行时默认的服务端密钥，默认用于内置的 JWT 令牌的生成和验签，通常不需要修改此项。\n\n**⚠️ 此项环境变量不可为空，不可被删除。**\n\n> 相关内容 [云函数认证](./auth.md)。\n\n### `DB_URI`\n\n`process.env.DB_URI` 用于获取云数据库的连接地址，请勿修改此项。\n\n### `LOG_LEVEL`\n\n`process.env.LOG_LEVEL` 用于控制日志输出的级别，默认值为 `debug`，可选值有：\n- `debug` 输出所有日志。\n- `info`  输出除 `console.debug()` 以外的所有日志。\n- `warn`  仅输出 `console.warn()` 和 `console.error()`的日志。\n- `error` 仅输出 `console.error()` 日志。\n\n\n### `LOG_DEPTH`\n\n`process.env.LOG_DEPTH` 用于控制打印 Javascript 对象的嵌套深度，默认值为 `1`，最大可用值为 `5`。\n\n\n### `REQUEST_LIMIT_SIZE`\n\n`process.env.REQUEST_LIMIT_SIZE` 用于配置 HTTP 请求体大小的上限，默认值为 `10mb`，开发者可根据业务需要调整此值。\n\n\n### `OSS_EXTERNAL_ENDPOINT` \n\n`process.env.OSS_EXTERNAL_ENDPOINT` 用于获取云存储的外网访问入口地址，在公有云中其值为 `https://oss.laf.run`，请勿修改此项。\n\n### `OSS_INTERNAL_ENDPOINT`\n\n`process.env.OSS_INTERNAL_ENDPOINT` 用于获取云存储的内网访问入口地址，请勿修改此项。\n\n### `OSS_REGION`\n\n`process.env.OSS_REGION` 用于获取云存储的区域信息，请勿修改此项。\n\n### `OSS_ACCESS_KEY`\n\n`process.env.OSS_ACCESS_KEY` 用于获取云存储的用户名，请勿修改此项。\n\n### `OSS_ACCESS_SECRET`\n\n`process.env.OSS_ACCESS_SECRET` 用于获取云存储的密码，请勿修改此项。\n\n### `NODE_VERSION`\n\n`process.env.NODE_VERSION` 用于获取应用运行时的 `Node.js` 版本。\n\n### `NODE_MODULES_PUSH_URL`\n\n`process.env.NODE_MODULES_PUSH_URL` 用于配置 `node_modules.tar` 缓存文件的下载地址，通常不需要修改。\n\n默认应用的 `node_modules` 文件会缓存在应用自身的 `cloud-bin` 文件桶中，此环境变量的值为该文件桶的访问地址。\n\n### `NODE_MODULES_PULL_URL`\n\n`process.env.NODE_MODULES_PULL_URL` 用于配置 `node_modules.tar` 缓存文件的上传地址，通常不需要修改。\n\n默认应用的 `node_modules` 文件会缓存到应用自身的 `cloud-bin` 文件桶中，此环境变量的值为该文件桶的上传地址。\n\n\n### `RESTART_AT`\n\n`process.env.RESTART_AT` 用于获取应用上一次重启的时间戳，其值形式如： `1703158202968`。\n\n\n## 下一步\n::: tip\n- [HTTP 请求](./request.md)\n- [HTTP 响应](./response.md)\n- [HTTP 认证](./auth.md)\n- [处理文件上传](./files.md)\n- [发起网络请求](./fetch.md)\n- [云数据库](../cloud-database/index.md)\n- [云存储](../cloud-storage/index.md)\n- [函数引用](./import.md)\n- [依赖管理](./deps.md)\n:::\n"
  },
  {
    "path": "docs/zh/cloud-function/fetch.md",
    "content": "\n\n# 在云函数中发起网络请求\n\n本节介绍在云函数中发起 HTTP 请求。\n\n::: info 本节目录\n[[toc]]\n:::\n\n[Fetch API](https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API) 提供了一个全局 fetch() 方法，该方法提供了一种简单的方式来跨网络异步获取资源。\n\n\n## 发起 GET 请求\n\n### 获取 JSON 数据\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  const res = await fetch('https://api.github.com/users/maslow')\n  const obj = await res.json()\n  return obj\n}\n```\n\n### 获取文本类型数据\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  const res = await fetch('http://www.baidu.com/')\n  const html = await res.text()\n  return html\n}\n```\n\n### 下载文件并上传到云存储\n::: tip\n本例演示使用 `fetch()` 方法下载网络图片，并保存到云存储中，需要你提前在 laf 控制台创建一个文件桶，本例中文件桶名假定为 `data`。\n:::\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  // 下载图片\n  const imgUrl = 'https://laf.run/logo_text.png'\n  const res = await fetch(imgUrl)\n  const imageBuffer = Buffer.from(await res.arrayBuffer())\n\n  // 上传到云存储\n  const bucket = cloud.storage.bucket('data')\n  await bucket.writeFile('test.png', imageBuffer, {\n    ContentType: res.headers.get('content-type')\n  })\n\n  return 'ok'\n}\n```\n\n::: info 更多参考\n操作云存储的详细用法，请参考[云存储上传文件](../cloud-storage/upload.md)。\n:::\n\n\n## 发起 POST 请求\n\n### 提交 JSON 数据\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  const url = 'https://laf.run/v1/auth/passwd/signin'\n  const user =  { \n    username:  'laf-user',\n    password:  'your-laf-run-password'\n  }\n\n  const response = await fetch(url, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json;charset=utf-8'\n    }, \n    body: JSON.stringify(user) \n  })\n\n  const token = await res.json()\n  return token\n}\n```\n\n\n::: tip 更多参考\n\n可查看 Fetch API 中文详细教程 [《阮一峰的网络日志 - Fetch API 教程》](https://www.ruanyifeng.com/blog/2020/12/fetch-tutorial.html)。\n:::\n\n## 下一步\n::: tip\n- [HTTP 请求](./request.md)\n- [HTTP 响应](./response.md)\n- [HTTP 认证](./auth.md)\n- [处理文件上传](./files.md)\n- [函数引用](./import.md)\n- [云存储](../cloud-storage/index.md)\n:::\n\n"
  },
  {
    "path": "docs/zh/cloud-function/files.md",
    "content": "\n\n# 处理客户端上传的文件\n\n本节介绍如何使用云函数处理客户端上传的文件。\n\n::: info 本节目录\n[[toc]]\n:::\n\n## 获取上传的文件对象\n\n::: info\n在客户端上传到云函数的文件，可以通过 `ctx.files` 获取到，其值是一个数组，支持上传多个文件。\n:::\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  console.log(ctx.files)\n}\n```\n\n\n::: info 输出结果\n```typescript\n[\n  {\n    fieldname: 'file',\n    originalname: 'WWcBsfDKw45X965dd934f04a7b0a405467b91800d7ce.jpg',\n    encoding: '7bit',\n    mimetype: 'image/jpeg',\n    destination: '/tmp',\n    filename: 'e6feb0a3-85d7-4fe3-b9ae-78701146acd8.jpg',\n    path: '/tmp/e6feb0a3-85d7-4fe3-b9ae-78701146acd8.jpg',\n    size: 219043\n  }\n]\n```\n:::\n\n\n\n## 读取客户端上传的文件\n\n::: info\n本例演示读取用户上传的文件内容。\n:::\n\n```typescript\nimport { readFile } from 'node:fs/promises'\n\nexport default async function (ctx: FunctionContext) {\n  if (ctx.files.length === 0) {\n    return 'no file found'\n  }\n  \n  const file = ctx.files[0]\n  const data = await readFile(file.path, 'utf8')\n  console.log(data)\n}\n```\n\n## 将客户端上传的文件保存到云存储\n\n::: info\n本例演示将客户端上传的文件保存到云存储中，需要你提前在 laf 控制台创建一个文件桶，本例中文件桶名假定为 `data`。\n:::\n\n```typescript\nimport cloud from '@lafjs/cloud'\nimport { createReadStream } from 'node:fs'\n\nexport default async function (ctx: FunctionContext) {\n  if (ctx.files.length === 0) {\n    return 'no file found'\n  }\n\n  const file = ctx.files[0]\n  const stream = createReadStream(file.path)\n\n  const bucket = cloud.storage.bucket('test')\n  const res = await bucket.writeFile(file.originalname, stream, {\n    ContentType: file.mimetype\n  })\n\n  return res\n}\n```\n\n::: info 更多参考\n操作云存储的详细用法，请参考[云存储上传文件](../cloud-storage/upload.md)。\n:::\n\n## 下一步\n::: tip\n- [HTTP 请求](./request.md)\n- [HTTP 响应](./response.md)\n- [HTTP 认证](./auth.md)\n- [云存储](../cloud-storage/index.md)\n- [发起网络请求](./fetch.md)\n- [函数引用](./import.md)\n:::\n\n"
  },
  {
    "path": "docs/zh/cloud-function/import.md",
    "content": "\n\n# 函数引用\n\n本节介绍云函数之间的引用，主要用于复用代码逻辑。\n\n::: info 本节目录\n[[toc]]\n:::\n\n## import\n\n本例创建一个工具模块 `utils`，可供其它云函数引入调用。\n\n::: tip 创建一个云函数名为 `utils`，做为工具模块使用\n```typescript\nimport { createHash, randomUUID } from 'crypto'\n\nexport function md5(data: any) {\n  return createHash('md5').update(data).digest('hex')\n}\n\nexport function sha256(data: any) {\n  return createHash('sha256').update(data).digest('hex')\n}\n\nexport function uuid() {\n  return randomUUID()\n}\n```\n:::\n\n::: warning 在云函数中引用 `utils` 工具函数\n```typescript\nimport { uuid, md5 } from '@/utils'\n\nexport default async function (ctx: FunctionContext) {\n  console.log('生成一个 UUID: ', uuid())\n  console.log('计算 md5 值: ', md5('123456'))\n}\n```\n:::\n\n::: details 查看输出结果\n```text\n生成一个 UUID:  25fdca90-9211-4bf2-952a-900356b05eb4\n计算 md5 值:  e10adc3949ba59abbe56e057f20f883e\n```\n:::\n\n## 实现一个内存缓存\n\n每个云函数模块，可当成一个 Node.js module 使用，我们使用函数模块来实现一个简单的缓存模块\n\n::: tip 创建一个云函数名为 `memcache`，实现一个缓存模块\n```typescript\nconst cached = new Map()\n\nfunction get(key: string) {\n  return cached.get(key)\n}\n\nfunction set(key: string, value: any) {\n  cached.set(key, value)\n}\n\nfunction keys() {\n  return cached.keys()\n}\n\nfunction size() {\n  return cached.size\n}\n\nfunction remove (key: string) {\n  return cached.delete(key)\n}\n\nfunction clear() {\n  cached.clear()\n}\n\n\nexport default { get, set, keys, size, remove, clear }\n```\n:::\n\n::: warning 在云函数中使用 `memcache` 缓存\n```typescript\nimport cache from '@/memcache'\n\nexport default async function (ctx: FunctionContext) {\n  cache.set('name', 'maslow')\n  console.log(cache.get('name'))\n\n  cache.clear()\n  console.log(cache.size())\n}\n```\n:::\n\n::: details 查看输出结果\n```text\nmaslow\n0\n```\n:::\n\n## 下一步\n::: tip\n- [HTTP 请求](./request.md)\n- [HTTP 响应](./response.md)\n- [HTTP 认证](./auth.md)\n- [处理文件上传](./files.md)\n- [发起网络请求](./fetch.md)\n- [环境变量](./env.md)\n- [云存储](../cloud-storage/index.md)\n:::\n\n"
  },
  {
    "path": "docs/zh/cloud-function/index.md",
    "content": "\n# 云函数简介\n\n云函数为应用提供计算能力，是 laf 最核心的应用资源之一。\n\n::: tip\nLaf 云函数并不是传统意义上的函数计算服务，Laf 应用是常驻的进程实例。\n:::\n\n::: info 本节目录\n[[toc]]\n:::\n\n## 能力\n\n- 处理 HTTP 请求\n- 操作数据库\n- 操作云存储\n- 调用三方服务\n- 定时任务\n- 处理 WebSocket\n\n\n## 特点\n\n### 毫秒级发布\n\nLaf 云函数可实现像写博客一样写代码，在线编写、一键发布、毫秒级生效，无需在改动代码后漫长的等待构建与发布过程。\n\n### 无冷启动\n\nLaf 应用是常驻内存的实例，天然没有冷启动时延问题，云函数的调用时延通常小于 10ms。\n\n### 性能优异\n\n同一个 Laf 应用的所有云函数由一个 Node.js Runtime 常驻进程来提供服务，可以充分利用 Node.js 异步 IO 模型提供强大的网络并发处理能力。\n\n### 成本低廉\n\n由于 Laf 应用是常驻实例，单实例可以处理数千数万的并发请求，调用成本极低。\n传统的函数计算一个请求一个实例，一千个请求就需要上千个实例来处理，其成本极其昂贵，两者调用成本相差数十甚至百倍。\n\n### 长连接\n\nLaf 云函数天然支持标准的 WebSocket 长连接处理， 实测单实例即可处理 `100K WebSocket` 连接。\n传统的函数计算一般不支持 WebSocket 长连接，或通过网关间接支持非标准的、成本极其昂贵的长连接方案。\n\n### 弹性伸缩\n\nLaf 应用支持以实例为单位的自动水平伸缩，基于 Kubernetes HPA 实现。可根据业务负载情况自动伸缩实例数量，自动应对峰谷时段负载。\n\n## 下一步\n::: tip\n- [快速开始](./quick-start.md)\n- [HTTP 请求](./request.md)\n- [HTTP 响应](./response.md)\n- [HTTP 认证](./auth.md)\n- [处理文件上传](./files.md)\n- [发起网络请求](./fetch.md)\n- [函数引用](./import.md)\n:::\n\n"
  },
  {
    "path": "docs/zh/cloud-function/init.md",
    "content": "\n# 用于应用初始化的云函数\n\n本节介绍一个特殊的云函数，它会在应用启动时自动执行一次。\n\n::: info 本节目录\n[[toc]]\n:::\n\n\n## 创建初始化云函数\n\n创建一个云函数并且命名为 `__init__` 即可，当应用实例启动时，会自动执行该云函数。\n\n::: tip\n- 应用启动、重启皆会触发该云函数的执行。\n- 若应用有多个实例，则启动时会触发多次执行，即每个应用实例启动时都会触发初始化函数的执行。\n:::\n\n下面的代码展示在应用启动时初始化一个管理员：\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  const db = cloud.mongo.db\n  const admin = await db.collection('admin').findOne()\n\n  if(!admin) {\n    await db.collection('admin').insertOne({\n      username: 'admin',\n      password: 'abc123',\n      createdAt: new Date()\n    })\n  }\n}\n```\n\n## 下一步\n::: tip\n- [HTTP 请求](./request.md)\n- [HTTP 响应](./response.md)\n- [HTTP 认证](./auth.md)\n- [处理文件上传](./files.md)\n- [发起网络请求](./fetch.md)\n- [云数据库](../cloud-database/index.md)\n- [云存储](../cloud-storage/index.md)\n:::\n\n"
  },
  {
    "path": "docs/zh/cloud-function/interceptor.md",
    "content": "\n# 拦截器\n\n本节介绍云函数拦截器，当请求云函数时会先执行拦截器，可以通过拦截器对云函数的请求加以控制。\n\n::: info 本节目录\n[[toc]]\n:::\n\n## 创建拦截器\n\n拦截器也是一个云函数，创建一个云函数并且命名为 `__interceptor__` 即创建了拦截器云函数。\n\n::: tip\n`__interceptor__` 为固定命名，其它名称无效。\n:::\n\n下面是一个简单的拦截器示例，与其它云函数不同的是，拦截器云函数接受两个参数，第二个参数 `next` 为一个回调函数。\n\n```typescript\nexport default async function (ctx: FunctionContext, next: Function) {\n  const password = ctx.query.password\n  if (password === '123456') {\n    return await next(ctx)\n  }\n\n  return '禁止访问'\n}\n```\n\n## 拦截指定 IP 的请求\n\n```typescript\nexport default async function (ctx: FunctionContext, next: Function) {\n  const ip = ctx.headers['x-forwarded-for']\n  // 拦截指定的 IP 地址\n  if(ip === '111.111.111.111') {\n    ctx.response.status(403).send('禁止访问')\n    return\n  } \n  \n  // 继续执行后面的云函数\n  return await next(ctx)\n}\n```\n\n## 拦截未认证的请求\n\n```typescript\nexport default  async function (ctx: FunctionContext, next: Function) {\n  if(ctx.user) {\n    return await next(ctx)\n  }\n\n  ctx.response.status(403).send('禁止访问')\n}\n```\n\n## 下一步\n::: tip\n- [HTTP 请求](./request.md)\n- [HTTP 响应](./response.md)\n- [HTTP 认证](./auth.md)\n- [处理文件上传](./files.md)\n- [发起网络请求](./fetch.md)\n- [函数引用](./import.md)\n:::\n\n"
  },
  {
    "path": "docs/zh/cloud-function/quick-start.md",
    "content": "\n\n# 云函数快速入门\n\n本节通过给出几个简单的云函数示例，快速展示云函数的能力和用法。\n\n::: tip\n你可以在 `https://laf.run` 上创建一个应用，然后创建函数来调试这些云函数代码。\n:::\n\n::: info 本节目录\n[[toc]]\n:::\n\n## Hello World\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  console.log('Hello World')\n  return 'hi, laf'\n}\n```\n\n这个最简单的云函数，打印一条日志 `Hello World`，并返回 `hi, laf` 做为其响应内容。\n通过浏览器访问其地址即可看到 `hi, laf`。\n\n## 获取请求参数\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  // 获取请求参数\n  console.log(ctx.query)\n\n  // 获取客户端的 IP 地址\n  const ip = ctx.headers['x-forwarded-for']\n\n  return `你的 IP 地址是：${ip}`\n}\n```\n\n## 响应 JSON 对象\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  // ...\n\n  return {\n    code: 'success',\n    message: '操作成功',\n    data: []\n  }\n}\n```\n\n## 访问数据库\n\n```typescript\nimport cloud from '@lafjs/cloud'\nconst db = cloud.mongo.db\n\nexport default async function (ctx: FunctionContext) {\n  // 新增数据\n  await db.collection('users').insertOne({\n    username: 'laf',\n    created_at: new Date()\n  })\n\n  // 查询数据\n  const users = await db.collection('users')\n    .find()\n    .toArray()\n\n  return users\n}\n```\n\n## 发起 HTTP 请求\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  const res = await fetch('https://laf.run/v1/regions')\n  const obj = await res.json()\n  return obj\n}\n```\n\n## 下一步\n::: tip\n- [HTTP 请求](./request.md)\n- [HTTP 响应](./response.md)\n- [HTTP 认证](./auth.md)\n- [处理文件上传](./files.md)\n- [发起网络请求](./fetch.md)\n- [云数据库](../cloud-database/index.md)\n- [云存储](../cloud-storage/index.md)\n- [函数引用](./import.md)\n- [环境变量](./env.md)\n:::\n\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "docs/zh/cloud-function/request.md",
    "content": "\n\n\n# HTTP 请求\n\n本节介绍云函数处理 HTTP 请求相关的用法。\n\n::: info 本节目录\n[[toc]]\n:::\n\n## 获取查询参数\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  const id = ctx.query.id\n  console.log(id)\n}\n```\n\n::: info\n`ctx.query` 为 `Object` 类型，可直接获取到查询参数，详见 [req.query](https://expressjs.com/en/api.html#req.query)。\n:::\n\n## 获取请求体\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  const body = ctx.body\n  console.log(body)\n}\n```\n\n::: info\n`ctx.body` 为 `Object` 类型，可直接获取到请求体，详见 [req.body](https://expressjs.com/en/api.html#req.body)。\n:::\n\n\n## 获取客户端 IP 地址\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  const ip = ctx.headers['x-forwarded-for']\n  return `你的 IP 是：${ip}`\n}\n\n```\n\n## 获取请求对象\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  const req = ctx.request\n\n  console.log(req.url)      // 获取请求的 url\n  console.log(req.path)     // 获取请求 path\n  console.log(req.hostname) // 获取请求 hostname\n}\n```\n\n::: details 查看输出\n```text\n/test?id=1\n/test\nc07iol.laf.dev\n```\n:::\n\n`ctx.request` 请求对象，是一个 `express.js` 的 `Request` 对象，详见 [Express.js 文档](https://expressjs.com/en/api.html#req)。\n\n## 下一步\n::: tip\n- [HTTP 响应](./response.md)\n- [HTTP 认证](./auth.md)\n- [处理文件上传](./files.md)\n- [发起网络请求](./fetch.md)\n:::\n\n\n"
  },
  {
    "path": "docs/zh/cloud-function/response.md",
    "content": "\n\n# HTTP 响应\n\n本节介绍云函数处理 HTTP 响应相关的用法。\n\n::: info 本节目录\n[[toc]]\n:::\n\n## 返回文本\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  return 'hello world'\n}\n```\n\n## 返回 JSON\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  return {\n    code: 0,\n    message: 'success'\n  }\n}\n```\n\n## 返回 HTML\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  ctx.response.setHeader('Content-Type', 'text/html')\n  return '<h1>hello world</h1>'\n}\n```\n\n## 返回状态码\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  ctx.response.status(404)\n  return 'Not Found'\n}\n```\n\n## 返回重定向\n\n```typescript\nexport default async function (ctx: FunctionContext) {\n  ctx.response.redirect('https://laf.run')\n}\n```\n\n\n## 流式响应\n\n```typescript\nimport { createReadStream } from 'node:fs'\n\nexport default async function (ctx: FunctionContext) {\n  const response = ctx.response\n  response.chunkedEncoding = true\n\n  const stream = createReadStream('package.json')\n  stream.on('data', chunk => {\n    response.write(chunk)\n  })\n  \n  stream.on('end', () => {\n    response.end()\n  })\n}\n```\n\n\n## 返回 Cookie\n  \n```typescript\nexport default async function (ctx: FunctionContext) {\n  ctx.response.cookie('session_id', 'abc123')\n  return 'hello world'\n}\n```\n\n## 下一步\n::: tip\n- [HTTP 请求](./request.md)\n- [HTTP 认证](./auth.md)\n- [处理文件上传](./files.md)\n- [发起网络请求](./fetch.md)\n:::\n\n\n"
  },
  {
    "path": "docs/zh/cloud-function/websocket.md",
    "content": "\n# 云函数处理 WebSocket 连接\n\n本节介绍使用云函数处理 WebSocket 连接。\n\n## 创建 WebSocket 云函数\n\n创建一个固定命名为 `__websocket__` 的云函数，该云函数专用于处理 WebSocket 连接。\n\n::: tip\nWebSocket 云函数名为固定云函数名：`__websocket__`，其他名称均不会生效\n:::\n\n以下是处理 WebSocket 的示例代码：\n\n```typescript\nexport async function main(ctx: FunctionContext) {\n\n  if (ctx.method === \"WebSocket:connection\") {\n    ctx.socket.send('hi connection succeed')\n  }\n\n  if (ctx.method === 'WebSocket:message') {\n    const { data } = ctx.params\n    console.log(data.toString())\n    ctx.socket.send(\"I have received your message\");\n  }\n\n  if (ctx.method === 'WebSocket:error') {\n    const error = ctx.params\n    console.log(error)\n  }\n\n  if (ctx.method === 'WebSocket:close') {\n    const { code, reason } = ctx.params\n    console.log(code, reason)\n  }\n}\n```\n\n### 客户端连接\n\n```typescript\nconst wss = new WebSocket(\"wss://your-own-appid.laf.run\")\n\nwss.onopen = (socket) => {\n  console.log(\"connected\")\n  wss.send(\"hi\")\n};\n\nwss.onmessage = (res) => {\n  console.log(\"收到了新的信息......\");\n  console.log(res.data);\n};\n\nwss.onclose = () => {\n  console.log(\"closed\");\n}\n```\n\n## 下一步\n::: tip\n- [HTTP 请求](./request.md)\n- [HTTP 响应](./response.md)\n- [HTTP 认证](./auth.md)\n- [处理文件上传](./files.md)\n- [发起网络请求](./fetch.md)\n- [云数据库](../cloud-database/index.md)\n- [云存储](../cloud-storage/index.md)\n:::\n"
  },
  {
    "path": "docs/zh/cloud-storage/delete.md",
    "content": "\n# 在云函数中删除文件\n\n::: tip\n在云函数中操作云存储，需要提前创建一个存储桶（Bucket），以下示例使用 `data` 存储桶演示上传文件操作，请提前创建该存储桶。\n:::\n\n## 删除文件\n\n```ts\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  // 获取存储桶\n  const bucket = cloud.storage.bucket('data')\n\n  // 删除文件\n  await bucket.deleteFile('index.html')\n}\n```\n\n::: tip\n注意：如果文件不存在，也会正常返回，不会抛出异常。\n:::\n"
  },
  {
    "path": "docs/zh/cloud-storage/download-url.md",
    "content": "\n# 使用云函数生成文件下载地址\n\n::: tip\n在云函数中操作云存储，需要提前创建一个存储桶（Bucket），以下示例使用 `data` 存储桶演示上传文件操作，请提前创建该存储桶。\n:::\n\n获取文件的访问地址有两种情况：\n1. 若存储桶的访问权限为 `public` 或 `readonly`，则可直接使用文件的公共访问地址。\n2. 若存储桶的访问权限为 `private`，则需要生成一个带签名的临时访问地址。\n\n\n## 获取文件永久访问地址\n::: tip\n仅当存储桶的访问权限为 `public` 或 `readonly`，则可直接使用文件的公共访问地址。\n且该地址永久有效，除非存储桶的访问权限被修改。\n:::\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  const bucket = cloud.storage.bucket('data')\n  const url = bucket.externalUrl('index.html')\n  return url\n}\n```\n\n\n## 获取文件临时访问地址（带签名）\n\n使用云函数生成一个临时的下载地址，客户端可直接使用该地址下载文件。\n\n::: tip\n当存储桶的访问权限为 `private`，则需要生成一个带签名的临时访问地址。\n且该地址默认有效期为 3600 秒，即 1 小时。\n:::\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  const bucket = cloud.storage.bucket('data')\n  const url = await bucket.getDownloadUrl('index.html')\n  return url\n}\n\n```\n\n::: details 使用 curl 测试下载地址\n\n```bash\n# 下载文件，请将 YOUR_DOWNLOAD_URL 替换为上一步获取的下载地址\ncurl -X GET YOUR_DOWNLOAD_URL\n```\n:::\n\n## 设置文件下载地址的有效期\n\n::: info\n- 地址默认有效期为 3600 秒，即 1 小时。\n- 最大有效期为 3600 * 24 * 7 秒，即 7 天。\n:::\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  const bucket = cloud.storage.bucket('data')\n\n  // 第二个参数为下载地址有效期，单位为秒\n  const url = bucket.getDownloadUrl('index.html', 3600 * 24 * 7)\n  return url\n}\n```"
  },
  {
    "path": "docs/zh/cloud-storage/index.md",
    "content": "\n# 云存储简介\n\n`laf` 云存储是兼容 S3 API 的对象存储服务，支持多种存储桶权限，包括公有读、私有读、公有读写，支持通过 HTTP/HTTPS 访问，支持自定义文件元数据，支持文件上传、下载、删除、获取文件列表等操作。\n\n\n## 存储桶（Bucket）\n\n在云存储中，存储桶是存储文件的容器，所有的文件都必须存储在存储桶中，每个存储桶都有一个唯一的名称。\n\n\n::: info\n云存储支持创建多个存储桶，每一个存储桶都是一个独立的存储空间，文件桶的名称必须是全局唯一的，且只能包含小写字母、数字和 `-` 字符，且长度不能超过 63 个字符。\n\n在 laf 应用中，文件桶的名称是由应用的 `appid` 作为前缀，然后加上存储桶的名称，例如：`{appid}-bucket`，这样可以保证每个应用的文件桶名称都是唯一的。\n:::\n\n\n## 存储桶权限\n\n云存储支持多种存储桶权限，包括公有读、私有读、公有读写。\n\n在创建存储桶时，可以指定存储桶的权限： \n- `public` 公有读写权限，无需凭证即可对存储桶中的文件进行读写操作。\n- `readonly` 公有读权限，无需凭证即可对存储桶中的文件进行读操作，但是需要凭证才能对存储桶中的文件进行写操作。\n- `private` 私有读写权限，需要使用凭证才能对存储桶中的文件进行读写操作。\n\n::: tip\n通常不建议使用 `public` 权限，因为这样会导致存储桶中的文件可以被任何人访问。\n:::\n\n## 网站托管\n\n`laf` 云存储支持将存储桶中的文件作为静态网站进行托管:\n\n1. 将存储桶的权限设置为 `readonly`，只有 `readonly` 权限的存储桶才能作为静态网站进行托管。\n2. 在 `laf 控制台` 中开启存储桶的网站托管功能。\n3. 在存储桶中创建一个名为 `index.html` 的文件，作为默认首页。\n\n\n## Cloud Bin Bucket\n\nLaf 会为每个应用自动创建一个名为 `{appid}-cloud-bin` 的存储桶，用于存储应用的缓存和备份文件，默认该存储桶的权限为 `private`，建议不要修改该存储桶的权限。\n"
  },
  {
    "path": "docs/zh/cloud-storage/list.md",
    "content": "\n# 在云函数中获取文件列表\n\n::: tip\n在云函数中操作云存储，需要提前创建一个存储桶（Bucket），以下示例使用 `data` 存储桶演示上传文件操作，请提前创建该存储桶。\n:::\n\n## 获取文件列表\n\n```ts\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  // 获取存储桶\n  const bucket = cloud.storage.bucket('data')\n\n  // 获取文件列表\n  const res = await bucket.listFiles()\n  return res\n}\n```\n\n返回结果 `res.Contents` 格式如下：\n\n```json\n [\n    {\n      \"Key\": \"laf.jpg\",\n      \"LastModified\": \"2023-12-12T12:03:36.154Z\",\n      \"ETag\": \"f0ce41411bdec6212f0836ebfbc56375\",\n      \"Size\": 49425\n    },\n    {\n      \"Key\": \"test.html\",\n      \"LastModified\": \"2023-12-12T11:38:53.117Z\",\n      \"ETag\": \"08ba5fadaac344913c216bcd26348263\",\n      \"Size\": 10\n    }\n]\n```\n\n\n## 只获取当前目录下的文件列表\n  \n```ts\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  // 获取存储桶\n  const bucket = cloud.storage.bucket('data')\n\n  // 获取文件列表\n  const res = await bucket.listFiles({ Delimiter: '/' })\n  return res\n}\n```\n\n::: info\n`Delimiter` 是一个分隔符，用于对存储桶中的对象名称进行分组。如果您希望获取当前目录下的文件列表，可以使用 `Delimiter` 参数。\n若不指定 `Delimiter` 参数，则返回存储桶中所有文件的列表，包括子目录下的文件。\n:::\n\n\n## 获取子目录下的文件列表\n\n\n```ts\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  // 获取存储桶\n  const bucket = cloud.storage.bucket('data')\n\n  // 获取 `images/` 目录下的文件列表\n  const res = await bucket.listFiles({ Prefix: 'images/', Delimiter: '/' })\n  return res\n}\n```\n\n::: tip\n`Prefix` 是一个前缀，用于对存储桶中的对象名称进行筛选。如果您希望获取子目录下的文件列表，可以使用 `Prefix` 参数。\n:::\n\n\n## 获取指定数量的文件列表\n\n```ts\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  // 获取存储桶\n  const bucket = cloud.storage.bucket('data')\n\n  // 获取前 10 个文件\n  const res = await bucket.listFiles({ MaxKeys: 10 })\n  return res\n}\n```\n\n::: tip\n`MaxKeys` 用于对存储桶中的对象数量进行限定。如果您希望获取指定数量的文件列表，可以使用 `MaxKeys` 参数，默认值为 1000。\n:::\n\n## 分页获取文件列表\n\n```ts\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  const marker = ctx.query.marker\n  const bucket = cloud.storage.bucket('data')\n  const res = await bucket.listFiles({ MaxKeys: 10, Marker: marker })\n  return res\n}\n```\n\n::: tip\n`listFiles` 返回的 res 对象中包含 `NextMarker` 和 `IsTruncated` 两个属性，用于分页获取下一页文件列表：\n\n- `IsTruncated` 用于判断是否还有下一页文件列表，如果为 `true`，则表示还有下一页文件列表，否则表示已经是最后一页文件列表。\n- `NextMarker` 用于指定下一页文件列表的起始位置，如果 `IsTruncated` 为 `true`，则可以使用 `NextMarker` 作为 `Marker` 参数，获取下一页文件列表。\n:::"
  },
  {
    "path": "docs/zh/cloud-storage/read.md",
    "content": "\n# 在云函数中读文件\n\n::: tip\n在云函数中操作云存储，需要提前创建一个存储桶（Bucket），以下示例使用 `data` 存储桶演示上传文件操作，请提前创建该存储桶。\n:::\n\n## 读文件\n\n```ts\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  // 获取存储桶\n  const bucket = cloud.storage.bucket('data')\n\n  // 读文件\n  const res = await bucket.readFile('index.html')\n\n  // 转换为字符串\n  const data = await res.Body.transformToString()\n\n  console.log(data)\n}\n```\n\n## 读文件为 Buffer\n\n```ts\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  // 获取存储桶\n  const bucket = cloud.storage.bucket('data')\n\n  // 读文件\n  const res = await bucket.readFile('index.html')\n\n  // 转换为 Buffer\n  const bytes = await res.Body.transformToByteArray()\n  const buffer = Buffer.from(bytes)\n\n  console.log(buffer)\n}\n```\n"
  },
  {
    "path": "docs/zh/cloud-storage/upload-url.md",
    "content": "\n\n# 使用云函数生成文件上传地址\n\n\n::: tip\n在云函数中操作云存储，需要提前创建一个存储桶（Bucket），以下示例使用 `data` 存储桶演示上传文件操作，请提前创建该存储桶。\n:::\n\n## 生成上传地址\n\n使用云函数生成一个临时的上传地址，客户端可直接使用该地址上传文件。\n\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  const bucket = cloud.storage.bucket('data')\n  const url = bucket.getUploadUrl('index.html')\n  return url\n}\n```\n\n\n::: details 使用 curl 测试上传地址\n\n```bash\n#请将 YOUR_UPLOAD_URL 替换为上一步获取的上传地址\n\ncurl -X PUT -H \"Content-Type: text/html\" -d 'hi, laf' YOUR_UPLOAD_URL\n```\n:::\n\n## 设置上传地址有效期\n\n::: info\n- 生成的地址默认有效期为 3600 秒，即 1 小时。\n- 可设置的最大有效期为 3600 * 24 * 7 秒，即 7 天。\n:::\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  const bucket = cloud.storage.bucket('data')\n\n  // 第二个参数为上传地址有效期，单位为秒。\n  const url = bucket.getUploadUrl('index.html', 3600 * 24 * 7)\n  return url\n}\n```\n\n"
  },
  {
    "path": "docs/zh/cloud-storage/upload.md",
    "content": "\n# 在云函数中上传文件\n\n::: tip\n在云函数中操作云存储，需要提前创建一个存储桶（Bucket），以下示例使用 `data` 存储桶演示上传文件操作，请提前创建该存储桶。\n:::\n\n\n## 上传文件\n\n```ts\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  // 获取存储桶\n  const bucket = cloud.storage.bucket('data')\n\n  // 写文件\n  const content = 'hello, laf'\n  await bucket.writeFile('laf.html', content)\n}\n```\n\n\n## 指定文件类型（MIME）\n\n在上面的示例中，文件类型默认为 `application/octet-stream`，如果需要指定文件类型，可以在 `writeFile` 方法中传入 `options.ContentType` 参数：\n\n```ts\nimport cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  // 获取存储桶\n  const bucket = cloud.storage.bucket('data')\n\n  // 写文件并指定文件类型为 text/html\n  const content = 'hello, laf'\n  await bucket.writeFile('index.html', content, {\n    ContentType: 'text/html'\n  })\n}\n```\n\n更多文件类型请参考 [MIME Types](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types)。\n\n\n\n## 上传文件流\n\n```ts\nimport cloud from '@lafjs/cloud'\nimport { createReadStream } from 'node:fs'\n\nexport default async function (ctx: FunctionContext) {\n\n  // 获取存储桶\n  const bucket = cloud.storage.bucket('data')\n\n  // 读文件流\n  const stream = createReadStream('./package.json')\n\n  // 写文件\n  await bucket.writeFile('laf.json', stream, {\n    ContentType: 'application/json'\n  })\n}\n```\n\n## 上传文件 Buffer\n\n```ts\nimport cloud from '@lafjs/cloud'\nimport { readFile } from 'node:fs/promises'\n\nexport default async function (ctx: FunctionContext) {\n\n  // 获取存储桶\n  const bucket = cloud.storage.bucket('data')\n\n  // 读文件 Buffer\n  const buffer = await readFile('./package.json')\n\n  // 写文件\n  await bucket.writeFile('laf.json', buffer, {\n    ContentType: 'application/json'\n  })\n}\n```\n"
  },
  {
    "path": "docs/zh/cloud-storage/website-hosting.md",
    "content": "\n# 网站托管\n\n在 laf 云存储中，可以选择一个存储桶开启网站托管服务。\n\n网站托管会为你的网站自动提供一个独立的域名，也可以绑定自定义域名。\n\n在存储桶中上传一个 `index.html` 的文件，作为默认首页。\n\n\n## 开启网站托管\n\n1. 创建一个存储桶，并设置其权限策略为 `readonly`,只有此权限的存储桶才能开启网站托管。\n2. 将你的网站文件上传到该存储桶即可。\n3. 在 `laf 控制台` 云存储页面，点击右上角「开启网站托管」，即可通过生成的地址访问你的网站。\n\n![Website-hosting](website-hosting-0.png)\n\n\n## 绑定自定义域名\n\n网站托管支持绑定自己的域名，并会自动为其生成 HTTPS 证书，支持 `https` 和 `http` 访问。\n\n按页面上操作提示，完成域名的 `CNAME` 解析，等待解析生效后，可继续绑定操作。\n\n![bind custom domain](website-hosting-domain.png)\n\n::: tip 提示\n- 域名解析生效时间：1～10分钟不等，待解析生效后才可继续绑定操作。\n- 绑定自己的域名后，laf 将会自动为您的域名配置 `SSL` 证书，这个过程可能会有 1～2 分钟，之后即可通过 `https` 进行访问\n:::\n\n\n\n## 更多\n\n[用 GitHub Action 自动构建前端并发布到网站托管](/zh/examples/website-hosting-ci-cd.md)"
  },
  {
    "path": "docs/zh/examples/index.md",
    "content": "\n# laf 使用实例\n\n\n\n\n\n\n\n## 云存储\n- [微信小程序上传文件](/zh/examples/wxmp-upload.md)\n- [用 GitHub Action 自动构建前端并发布到网站托管](/zh/examples/website-hosting-ci-cd.md)"
  },
  {
    "path": "docs/zh/examples/website-hosting-ci-cd.md",
    "content": "\n# 用 GitHub Action 自动构建前端并发布到网站托管\n\n使用 `Github Actions` 即可实现自动化构建前端并推送到 laf 云存储中。\n\n\n## 实现\n\n1、在自己的前端项目的主分支中，新建 Actions，下面是一个基础模板\n\n本模板效果是，如果有新代码推送到主分支，会自动触发 Actions\n\n- `API_URL` 为你当前的 Laf 应用的 API 地址，如： `https://api.laf.run`\n\n- `WEB_PATH` 为你前端在当前项目的哪个路径，如果前端项目在根目录，则无需修改。如果在 web 目录下，则改成 `'web'` 即可。\n\n- `DIST_PATH` 为编译后的目录名称，绝大部分项目编译后的目录名均为 dist\n\n```yaml\nname: Build\non:\n  push:\n    branches:\n      - main\n\nenv:\n  BUCKET_NAME: ${{ secrets.DOC_BUCKET_NAME }}\n  LAF_APPID: ${{ secrets.LAF_APPID }}\n  LAF_PAT: ${{ secrets.LAF_PAT }}\n  API_URL: 'https://api.laf.run'\n  WEB_PATH: .\n  DIST_PATH: 'dist'\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n      - name: Setup Node.js\n        uses: actions/setup-node@v3\n        with:\n          node-version: '16.x'\n      # 安装项目依赖\n      - name: Install Dependencies\n        working-directory: ${{ env.WEB_PATH }}\n        run: npm install\n      # 编译项目\n      - name: Build\n        working-directory: ${{ env.WEB_PATH }}\n        run: npm run build\n      # 安装 laf-cli\n      - name: Install Laf-CLI\n        run: npm i laf-cli -g\n      # 登录 laf api\n      - name: Login laf-cli\n        working-directory: ${{ env.WEB_PATH }}\n        run: |\n          laf user add ${{ env.LAF_APPID }} -r ${{ env.API_URL }}\n          laf user switch ${{ env.LAF_APPID }}\n          laf login $LAF_PAT\n      # 初始化 Laf 应用然后将编译好的代码推送到云存储\n      - name: Init appid and push\n        working-directory: ${{ env.WEB_PATH }}\n        env:\n          LAF_APPID: ${{ env.LAF_APPID }}\n        run: |\n          laf app init ${{ env.LAF_APPID }}\n          laf storage push -f ${{ env.BUCKET_NAME }} ${{ env.DIST_PATH }}/\n```\n"
  },
  {
    "path": "docs/zh/examples/wxmp-upload.md",
    "content": "\n# 微信小程序中上传文件\n\n\n::: tip\n在云函数中操作云存储，需要提前创建一个存储桶（Bucket），以下示例使用 `data` 存储桶演示上传文件操作，请提前创建该存储桶。\n:::\n\n## 接受上传文件的云函数\n\n```typescript\nimport cloud from \"@lafjs/cloud\"\nimport { readFile } from 'fs/promises'\n\nexport default async function (ctx: FunctionContext) {\n  const file = ctx.files[0]\n  const data = await readFile(file.path)\n\n  const bucket = cloud.storage.bucket('data')\n  await bucket.writeFile(file.filename, data, {\n    ContentType: file.mimetype\n  })\n\n  const url = bucket.externalUrl(file.filename)\n  return url\n}\n```\n\n\n## 小程序中上传文件到云函数\n\n以微信小程序为例\n\n```js\n// 微信聊天回话选择文件\nwx.chooseMessageFile({\n  count: 1,\n  type: 'all',\n  success(res) {\n    // 选择的文件临时路径\n    const tempFilePaths = res.tempFiles[0].path\n    wx.uploadFile({\n      url: '云函数地址',\n      filePath: tempFilePaths,\n      name: 'file',\n      success(res) {\n        console.log(res.data)\n      }\n    })\n  }\n})\n```\n"
  },
  {
    "path": "docs/zh/index.md",
    "content": "# laf 概览\n\n## 👀 `laf` 是什么\n\n`laf` 是开源的云开发平台，提供云函数、云数据库、云存储等开箱即用的应用资源。\n\n让开发者专注于业务开发，无需折腾服务器，快速释放创意。\n\n![](./overview-ide.png)\n\n## 🖥 在线体验\n\n🎉 [laf.run](https://bja.sealos.run) （国内版）<br/>\n🎉 [laf.dev](https://cloud.sealos.io) （海外版）\n\n## 🎉 `laf` 有什么\n\n- 云函数\n- 云数据库\n- 云存储\n- 网站托管\n- WebSocket 支持\n- WebIDE，像写博客一样写代码\n\n## 👨‍💻 谁适合使用 `laf` ?\n\n1. 前端开发者 + `laf` = 全栈开发者，前端秒变全栈\n\n   - `laf` 云函数使用 js/ts 开发，前后端代码无隔裂，无门槛快速上手\n   - `laf` 提供了静态网站托管，可将前端构建的网页直接同步部署上来，无需再配置服务器、nginx、域名等\n\n2. 后端开发者，可以从琐事中解放出来，专注于业务本身，提升开发效率\n\n   - 节约服务器运维、多环境部署和多应用管理的成本\n   - 告别域名、证书、调试 nginx 等配置\n   - 不必手动部署数据库、安全防护等重复工作\n   - 告别「修改一次、发布半天」的重复繁琐的迭代体验\n   - 「像写博客一样写一个函数」，招之即来，挥之即去，随手发布！\n\n3. 不被云厂商锁定\n\n   - 可以为客户提供源码交付，为客户私有部署一套 `laf` ，而使用闭源的云开发服务，无法交付可独立运行的源码\n   - 可以根据未来的需要，随时将迁移到自己的服务器上，`laf` 是开源免费的\n   - 可以修改、订制自己的云开发平台，`laf` 是开源的、高度可扩展的\n\n4. 独立开发者、创业团队，节约成本，快速开始，专注业务\n   - 减少启动项目开发的流程，快速启动，缩短产品验证周期\n   - 极大程度提高迭代速度，随时应对变化，随时发布\n   - 专注于产品业务本身，快速推出最小可用产品 (MVP)，快速进行产品、市场验证\n   - 一个人 + `laf` = 团队\n\n> life is short, you need laf:)\n\n## 🎉 私有化部署？\n\n> 本地部署：需要自己配置域名、证书、网关等并且熟悉 kubernetes 的运维，可参考下面的文档。\n\n[Deployment](https://github.com/labring/laf/blob/main/deploy/README.md)\n\n## 🏘️ 社群\n\n- [论坛](https://forum.laf.run/)\n- [微信群](https://cdn.jsdelivr.net/gh/yangchuansheng/imghosting3@main/uPic/2022-04-22-14-21-MRJH9o.png)\n- QQ 群：`603059673`\n- 官方公众号：`laf-dev`\n\n## 下一步\n\n::: tip\n\n- [快速开始](/zh/quick-start/login)\n  :::\n"
  },
  {
    "path": "docs/zh/other/sealaf-migration.md",
    "content": "# Laf 迁移到 Sealaf（Sealos 云开发）\n\n## 迁移内容\n- 云函数\n- 云存储\n- 数据库\n- 触发器\n- 环境变量\n- 函数依赖\n- 自定义域名\n- 网站托管\n\n## 迁移步骤\n::: warning\n💡 关于 **laf-cli** 的详细使用方法请参考 [laf-cli 文档](../cli/) \n:::\n\n### 1. 分别在 laf 和 sealaf 创建 PAT\n![add-pat](../doc-images/add-pat.png)\n\n---\n\n### 2. 下载 cli 并初始化用户\n```bash\nnpm install -g laf-cli\n\nlaf user add laf -r https://laf.run\n# 填入对应可用区的 api url\nlaf user add sealaf-hzh -r https://sealaf-api.hzh.sealos.run \n\nlaf user switch laf\n# <PAT> 替换为刚刚创建的 PAT\nlaf login <PAT>\nlaf user switch sealaf-hzh\nlaf login <PAT>\n```\n---\n\n:::info\nSealos 不同可用区 Sealaf 对应的 api 地址如下：\n\n新加坡：https://sealaf-api.cloud.sealos.io\n\n广州：https://sealaf-api.gzg.sealos.run\n\n杭州：https://sealaf-api.hzh.sealos.run\n\n北京：https://sealaf-api.bja.sealos.run\n:::\n---\n\n### 3. 拉取原应用数据\n```bash\nAPPID=\"\" # laf 上的 appid\nmkdir $APPID && cd $APPID\n\nlaf user switch laf\nlaf app init $APPID\n\n# 拉取云存储、环境变量、依赖\nlaf func pull\n\nlaf env pull\n\nlaf dep pull\n\n# 列出存储\nlaf storage list\n\n# 依次拉取存储到指定目录\nlaf storage pull <bucketName> <path>\n\n# 拉取数据库\nmkdir db\nlaf database export ./db\n\n# 删除 .app.yaml 以便重新 init 新应用\nrm .app.yaml\n```\n---\n\n### 4. 推送数据到新应用\n```bash\nNEW_APPID=\"\"\nlaf user switch sealaf-hzh\n\nlaf app init $NEW_APPID\n\nlaf func push\n\nlaf env push\n\nlaf dep push\n\n# 需要先在 sealos 对象存储上手动创建桶\nlaf storage push <bucketName> <path>\n\n# 导入数据库\nlaf database import $APPID ./db/xxx.gz\n\nrm .app.yaml\n```\n---\n\n### 5. **重启应用**\n重启以确保环境变量等生效\n\n---\n\n### 6. （可选）手动创建触发器、自定义域名\n- 方式一：使用 laf-cli 创建触发器\n```bash\n# 列出触发器\nlaf trigger list\n# 创建\nlaf create <name> <target> <cron>\n```\n\n- 方式二：在 Sealaf 界面直接创建触发器\n---\n\n### 7. （可选）在 sealos 对象存储开启网站托管\n![sealos-website-hosting](../doc-images/sealos-website-hosting.png)\n\n---\n\n### 8. （可选）`cloud.storage.bucket` 变更\n如果原应用代码中使用了 `cloud.storage.bucket(bucketName)`，需要在新应用中手动修改为新的 bucket 名称（注意：现在必须填完整桶名）"
  },
  {
    "path": "docs/zh/quick-start/Todo.md",
    "content": "---\ntitle: 快速开始\n---\n\n# 快速开始\n\n我们将在 [laf.run](https://laf.run) 上，通过开发一个简单的「Todo」的功能，快速体验 `laf` 云开发。\n\n![todo-demo](../doc-images/todo-demo.png)\n\n## 准备工作\n\n1. 你需要在 [laf.run](https://laf.run) 上注册一个账户。\n2. 登录到 [laf.run](https://laf.run)，点击 `新建` 按钮，创建一个空应用。\n3. 待应用成功启动后，点击右侧「开发」按钮，进入应用的「开发控制台」，接下来，我们将在「开发控制台」进行第一个 `laf` 应用的功能开发。\n\n## 编写云函数\n\n首先需要创建一个云函数。\n\n![create-function](../doc-images/create-function.png)\n\n然后在`get-list`云函数中写上以下代码，写完以后记得在右上角找到`发布`两个字，点一下发布。\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nconst db = cloud.database()\nexport async function main(ctx: FunctionContext) {\n  // 从 list 集合中查询数据\n  const res = await db.collection('list').get()\n  // 返回给前端\n  return res\n}\n```\n\n按照刚刚的方式我们再创建 `add-todo` `del-todo` `update-todo`，三个云函数，并分别写入代码。\n\n`add-todo`\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nconst db = cloud.database()\nexport async function main(ctx: FunctionContext) {\n  // ctx.body 是前端传入的参数\n  const data = ctx.body\n  const res = await db.collection('list').add(data)\n\n  return res\n}\n```\n\n`del-todo`\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nconst db = cloud.database()\nexport async function main(ctx: FunctionContext) {\n\n  const { id } = ctx.body\n  // 根据 id 删除数据\n  const res = db.collection(\"list\").where({ _id: id }).remove()\n\n  return res\n}\n```\n\n`update-todo`\n\n```typescript\nimport cloud from '@lafjs/cloud'\n\nconst db = cloud.database()\nexport async function main(ctx: FunctionContext) {\n\n  const { id, data } = ctx.body\n  // _id 是唯一主键，不能修改，所以我们这里删掉\n  delete data._id\n  // 根据 id 来修改数据\n  const res = await db.collection('list').where({ _id: id }).update(data)\n\n  return res\n}\n\n```\n\n:::tip\n再次提醒，更改过的每一个云函数都需要`发布`才能生效哦！\n:::\n\n## 创建集合\n\n这里的集合，对应着传统数据库的表，用来存储数据。\n\n![create-gather](../doc-images/create-gather.png)\n\n## 前端\n\n前端这里我们用的是 Vue 项目来演示，React/Angular/小程序，操作都是相同的。\n\n你也可以使用我们提供的[前端模板](https://github.com/labring/laf-examples/tree/main/laf-todo-demo)。\n\n首先需要在前端项目中安装 `laf-client-sdk`。\n\n```shell\nnpm install laf-client-sdk\n```  \n\n这里我们需要用到`<APPID>`，可以在控制台找到。\n\n![AppID](../doc-images/AppID.png)\n\n引入并创建 cloud 对象，这里需要注意的是`<APPID>`需要换成自己的。\n\n```js\nimport { Cloud } from \"laf-client-sdk\"; // 引入\n\n// 创建 cloud 对象\nconst cloud = new Cloud({\n  baseUrl: \"https://<AppID>.laf.run\", // 这里的 <AppID> 需要换成自己的 AppID\n  getAccessToken: () => '', // 这里先为空\n});\n```\n\n然后我们在前端需要的地方调用我们的云函数。\n\n```js\nasync function getList() {\n  // 调用 get-list 云函数不传参\n  const res = await cloud.invoke(\"get-list\");\n  list.value = res.data;\n}\n\nasync function submit() {\n  if (!newTodo.value) return;\n\n  const obj = {\n    name: newTodo.value,\n    complete: false,\n  };\n  // 调用 add-todo 传入参数 obj\n  await cloud.invoke(\"add-todo\", obj);\n  newTodo.value = \"\";\n\n  getList();\n}\n\n\nasync function complete(index, id) {\n  list.value[index].complete = !list.value[index].complete;\n  // 调用 update-todo 传入参数\n  await cloud.invoke(\"update-todo\", {\n    id,\n    data: list.value[index],\n  });\n}\n\n\nasync function del(id) {\n  // 调用 del-todo 传入参数\n  await cloud.invoke(\"del-todo\", { id });\n  getList();\n}\n```\n\n以上就是一个 Todo List 所需要的所有功能啦。"
  },
  {
    "path": "docs/zh/quick-start/login.md",
    "content": "\n# 快速开始\n\n本文将指引你开发一个简单的「用户登录/注册」的功能，快速体验 `laf` 云开发，预计完成时间 5 分钟。\n\n\n## 创建应用\n\n1. 你需要在 [laf.run](https://laf.run) 上注册一个账户\n2. 在 [laf 控制台](https://laf.run)，点击左上角的 `新建` 按钮，创建一个新应用\n3. 待应用成功启动后，点击右侧「开发」按钮，进入应用的「开发控制台」，接下来，我们将在「开发控制台」进行第一个 `laf` 应用的功能开发\n\n## 编写云函数\n\n本教程会编写两个云函数：\n\n- `register` 处理注册请求\n- `login` 处理登录请求。\n\n### 用户注册云函数\n\n在「云函数」管理页面，点击「新建函数」，创建注册云函数 `register`，\n\n点击 `register` 函数，进入 WebIDE，编写以下代码：\n\n```typescript\nimport cloud from \"@lafjs/cloud\";\nimport { createHash } from \"crypto\";\n\nconst db = cloud.mongo.db\n\nexport default async function (ctx: FunctionContext) {\n  const username = ctx.body?.username || \"\";\n  const password = ctx.body?.password || \"\";\n\n  // check param\n  if (!/^[a-zA-Z0-9]{3,16}$/.test(username))\n    return { error: \"invalid username\" };\n  if (!/^[a-zA-Z0-9]{3,16}$/.test(password))\n    return { error: \"invalid password\" };\n\n  // check username existed\n  const exists = await db\n    .collection(\"users\")\n    .countDocuments({ username: username })\n\n  if (exists > 0) return { error: \"username already existed\" };\n\n  // add user\n  const res = await db.collection(\"users\").insertOne({\n    username: username,\n    password: createHash(\"sha256\").update(password).digest(\"hex\"),\n    created_at: new Date(),\n  });\n\n  console.log(\"user registered: \", res.insertedId);\n  return { data: res.insertedId };\n};\n```\n\n点击右上角的「发布」函数即发布上线！\n\n### 用户登录云函数\n\n同上，创建 `login` 云函数，编写以下代码：\n\n```typescript\nimport cloud from \"@lafjs/cloud\";\nimport { createHash } from \"crypto\";\n\nconst db = cloud.mongo.db\n\nexport default async function (ctx: FunctionContext) {\n  const username = ctx.body?.username || \"\"\n  const password = ctx.body?.password || \"\"\n\n  // check user login\n  const user = await db\n    .collection(\"users\")\n    .findOne({\n      username: username,\n      password: createHash(\"sha256\").update(password).digest(\"hex\"),\n    })\n\n  if (!user) return { error: \"invalid username or password\" };\n\n  // generate jwt token\n  const user_id = user._id;\n  const payload = {\n    uid: user_id,\n    exp: Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 7,\n  };\n\n  const access_token = cloud.getToken(payload);\n\n  return {\n    uid: user_id,\n    access_token: access_token,\n  };\n};\n```\n\n点击右上角的「发布」函数即发布上线！\n\n::: details 使用 curl 调用云函数\n\n你可以在右上方复制云函数的调用地址，\n或将以下 curl 命令中的 `APPID` 替换成你的 APPID 后执行：\n\n```bash\n# 注册用户\ncurl -X POST -H \"Content-Type: application/json\" -d '{\"username\": \"admin\", \"password\": \"admin\"}' https://APPID.laf.run/register\n\n# 用户登录\ncurl -X POST -H \"Content-Type: application/json\" -d '{\"username\": \"admin\", \"password\": \"admin\"}' https://APPID.laf.run/login\n\n```\n:::\n\n\n::: details 在前端项目中用 HTTP 请求调用云函数\n\n```js\nimport axios from 'axios'\n\nconst baseUrl = 'https://APPID.laf.run'\n\n// register\nasync function register(username, password) {\n  try {\n    const response = await axios.post(baseUrl + \"/register\", {\n      username: username,\n      password: password\n    });\n    console.log(response);\n  } catch (error) {\n    console.error(error);\n  }\n}\n\n// login\nasync function login(username, password) {\n  try {\n    const response = await axios.post(baseUrl + \"/login\", {\n      username: username,\n      password: password\n    })\n    console.log(response)\n  } catch (error) {\n    console.error(error)\n  }\n}\n```\n\n可以在你的 Vue/React/Angular/小程序 页面中调用这两个云函数完成具体的登录注册功能！\n:::\n\n## 下一步\n\n::: tip\n- [云函数](/zh/cloud-function/)\n- [云数据库](/zh/cloud-database/)\n- [云存储](/zh/cloud-storage/)\n:::\n"
  },
  {
    "path": "e2e/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"laf/test\"\n}"
  },
  {
    "path": "e2e/.gitignore",
    "content": ".env\n"
  },
  {
    "path": "e2e/0-user/00-signup.test.ts",
    "content": "import { describe, expect, test } from '@jest/globals'\nimport { ClearTestUser, api } from '../api'\nimport * as crypto from 'crypto'\nimport { Config } from '../config'\n\ndescribe('signup user with password', () => {\n  const randomUsername = crypto.randomUUID()\n\n  test('signup user with valid username & password should be ok', async () => {\n    const res = await api.post('/v1/auth/passwd/signup', {\n      username: randomUsername,\n      password: Config.TEST_PASSWORD,\n    })\n\n    expect(res.status).toBe(201)\n    expect(res.data?.data).toHaveProperty('token')\n  })\n\n  test('signup user with same username', async () => {\n    const res = await api.post('/v1/auth/passwd/signup', {\n      username: randomUsername,\n      password: Config.TEST_PASSWORD,\n    })\n\n    // Received value: {\"data\": null, \"error\": \"user already exists\"}\n    expect(res.status).toBe(201)\n    expect(res.data?.error).toBe('user already exists')\n  })\n\n  test('signup user with short password', async () => {\n    const res = await api.post('/v1/auth/passwd/signup', {\n      username: randomUsername,\n      password: '123',\n    })\n\n    // console.log(res.data)\n    // {\n    //   message: [ 'password must be longer than or equal to 8 characters' ],\n    //   error: 'Bad Request'\n    // }\n    expect(res.status).toBe(400)\n    expect(res.data?.message).toContain(\n      'password must be longer than or equal to 8 characters'\n    )\n  })\n\n  afterAll(async () => {\n    await ClearTestUser(randomUsername)\n  })\n})\n"
  },
  {
    "path": "e2e/0-user/01-signin.test.ts",
    "content": "import { describe, expect, test } from '@jest/globals'\nimport { ClearTestUser, api } from '../api'\nimport * as crypto from 'crypto'\nimport { Config } from '../config'\n\ndescribe('signin user with password', () => {\n  const randomUsername = crypto.randomUUID()\n\n  beforeAll(async () => {\n    const res = await api.post('/v1/auth/passwd/signup', {\n      username: randomUsername,\n      password: Config.TEST_PASSWORD,\n    })\n\n    expect(res.status).toBe(201)\n    expect(res.data?.data).toHaveProperty('token')\n  })\n\n  test('signin user with valid username & password should be ok', async () => {\n    const res = await api.post('/v1/auth/passwd/signin', {\n      username: randomUsername,\n      password: Config.TEST_PASSWORD,\n    })\n\n    // console.log(res.data)\n    // {\n    //   error: null,\n    //   data: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2NGQxYjgyMWU0MzY1NzYzMjY3Nzc0YWUiLCJpYXQiOjE2OTE0NjU3NjEsImV4cCI6MTY5MjA3MDU2MX0.2HCv9R2MhwMNk4CDyvPquzd_hxkR6AQiYEfPu3Chs-Q'\n    // }\n    expect(res.status).toBe(201)\n    expect(res.data?.error).toBeNull()\n    const token = res.data?.data\n    expect(token).not.toBeNull()\n\n    // get user profile\n    const res2 = await api.get('/v1/user/profile', {\n      headers: { Authorization: `Bearer ${token}` },\n    })\n\n    // console.log(res2.data)\n    // {\n    //   error: null,\n    //   data: {\n    //     _id: '64d1bf33e4365763267774e7',\n    //     username: '7fc0ffc6-1f4a-43ef-bd25-6e97148c6046',\n    //     phone: null,\n    //     email: null,\n    //     profile: {\n    //       _id: '64d1bf33e4365763267774e9',\n    //       uid: '64d1bf33e4365763267774e7',\n    //       name: '7fc0ffc6-1f4a-43ef-bd25-6e97148c6046',\n    //     }\n    //   }\n    // }\n    expect(res2.status).toBe(200)\n    expect(res2.data?.error).toBeNull()\n\n    const user = res2.data?.data\n    expect(user).not.toBeNull()\n    expect(user.profile).not.toBeNull()\n    expect(user.username).toBe(randomUsername)\n    expect(user.phone).toBeNull()\n    expect(user.email).toBeNull()\n    expect(user.profile.uid).toBe(user._id)\n  })\n\n  test('signin user with wrong password', async () => {\n    const res = await api.post('/v1/auth/passwd/signin', {\n      username: randomUsername,\n      password: 'wrong-password',\n    })\n\n    // console.log(res.data)\n    // { error: 'password incorrect', data: null }\n    expect(res.status).toBe(201)\n    expect(res.data?.error).toBe('password incorrect')\n  })\n\n  test('signin user with wrong username', async () => {\n    const res = await api.post('/v1/auth/passwd/signin', {\n      username: 'wrong-username',\n      password: Config.TEST_PASSWORD,\n    })\n\n    // console.log(res.data)\n    // { error: 'user not found', data: null }\n    expect(res.status).toBe(201)\n    expect(res.data?.error).toBe('user not found')\n  })\n\n  afterAll(async () => {\n    await ClearTestUser(randomUsername)\n  })\n})\n"
  },
  {
    "path": "e2e/1-application/00-create.test.ts",
    "content": "import { describe, expect, test } from '@jest/globals'\nimport { api, EnsureTestToken, GetRegion, GetRuntime } from '../api'\nimport * as crypto from 'crypto'\nimport { Config } from '../config'\n\ndescribe('create testing application normally', () => {\n  const appName = Config.TEST_APP_NAME\n  let appid = null\n  let token = null\n  beforeAll(async () => {\n    token = await EnsureTestToken()\n    expect(token).toBeTruthy()\n  })\n\n  test(\n    'create testing application should be ok',\n    async () => {\n      const region = await GetRegion()\n      const runtime = await GetRuntime()\n\n      const data = {\n        cpu: 200,\n        memory: 256,\n        databaseCapacity: 1024,\n        storageCapacity: 2048,\n        autoscaling: {\n          enable: false,\n          minReplicas: 1,\n          maxReplicas: 5,\n          targetCPUUtilizationPercentage: 50,\n          targetMemoryUtilizationPercentage: 50,\n        },\n        name: appName,\n        state: 'Running',\n        regionId: region._id.toString(),\n        runtimeId: runtime._id.toString(),\n      }\n\n      const res = await api.post('/v1/applications', data, {\n        headers: { Authorization: `Bearer ${token}` },\n      })\n\n      expect(res.status).toBe(201)\n\n      const application = res.data?.data\n      expect(application).toBeTruthy()\n      expect(application.name).toBe(data.name)\n      expect(application.state).toBe(data.state)\n      expect(application.regionId).toBe(data.regionId)\n      expect(application.runtimeId).toBe(data.runtimeId)\n      expect(application.appid).toBeTruthy()\n\n      const bundle = application.bundle\n      expect(bundle).toBeTruthy()\n      expect(bundle.appid).toBe(application.appid)\n\n      const resource = bundle.resource\n      expect(resource).toBeTruthy()\n      expect(resource.limitCPU).toBe(data.cpu)\n      expect(resource.limitMemory).toBe(data.memory)\n      expect(resource.databaseCapacity).toBe(data.databaseCapacity)\n      expect(resource.storageCapacity).toBe(data.storageCapacity)\n\n      expect(bundle.autoscaling).toEqual(data.autoscaling)\n\n      const configuration = application.configuration\n      expect(configuration).toBeTruthy()\n      expect(configuration.appid).toBe(application.appid)\n\n      const environments: any[] = configuration.environments || []\n      expect(environments.length).toBe(1)\n\n      appid = application.appid\n    },\n    10 * 1000\n  )\n\n  test(\n    'wait for application phase to be Started',\n    async () => {\n      let app = null\n      for (let i = 0; i < 20; i++) {\n        const res2 = await api.get(`/v1/applications/${appid}`, {\n          headers: { Authorization: `Bearer ${token}` },\n        })\n        app = res2.data?.data\n        if (app.phase === 'Started') {\n          break\n        }\n        await new Promise((resolve) => setTimeout(resolve, 3000))\n      }\n\n      expect(app.phase).toBe('Started')\n    },\n    100 * 1000\n  )\n})\n\ndescribe('create testing application with invalid inputs', () => {\n  const randomName = 'testing-' + crypto.randomUUID()\n  const appid = null\n  let token = null\n  beforeAll(async () => {\n    token = await EnsureTestToken()\n    expect(token).toBeTruthy()\n  })\n\n  test.skip('create testing application with invalid cpu should be failed', async () => {\n    const region = await GetRegion()\n    const runtime = await GetRuntime()\n\n    const data = {\n      cpu: 0,\n      memory: 256,\n      databaseCapacity: 1024,\n      storageCapacity: 2048,\n      autoscaling: {\n        enable: false,\n        minReplicas: 1,\n        maxReplicas: 5,\n        targetCPUUtilizationPercentage: 50,\n        targetMemoryUtilizationPercentage: 50,\n      },\n      name: randomName,\n      state: 'Running',\n      regionId: region._id.toString(),\n      runtimeId: runtime._id.toString(),\n    }\n\n    const res = await api.post('/v1/applications', data, {\n      headers: { Authorization: `Bearer ${token}` },\n    })\n\n    console.log(res.data)\n    expect(res.status).toBe(400)\n    expect(res.data?.message).toBe('invalid cpu')\n  })\n\n  test.skip('create testing application with invalid memory should be failed', async () => {\n    const region = await GetRegion()\n    const runtime = await GetRuntime()\n\n    const data = {\n      cpu: 200,\n      memory: 0,\n      databaseCapacity: 1024,\n      storageCapacity: 2048,\n      autoscaling: {\n        enable: false,\n        minReplicas: 1,\n        maxReplicas: 5,\n        targetCPUUtilizationPercentage: 50,\n        targetMemoryUtilizationPercentage: 50,\n      },\n      name: randomName,\n      state: 'Running',\n      regionId: region._id.toString(),\n      runtimeId: runtime._id.toString(),\n    }\n\n    const res = await api.post('/v1/applications', data, {\n      headers: { Authorization: `Bearer ${token}` },\n    })\n\n    console.log(res.data)\n    expect(res.status).toBe(400)\n    expect(res.data?.message).toBe('invalid memory')\n  })\n\n  test.skip('create testing application with invalid databaseCapacity should be failed', async () => {\n    const region = await GetRegion()\n    const runtime = await GetRuntime()\n\n    const data = {\n      cpu: 200,\n      memory: 256,\n      databaseCapacity: 0,\n      storageCapacity: 2048,\n      autoscaling: {\n        enable: false,\n        minReplicas: 1,\n        maxReplicas: 5,\n        targetCPUUtilizationPercentage: 50,\n        targetMemoryUtilizationPercentage: 50,\n      },\n      name: randomName,\n      state: 'Running',\n      regionId: region._id.toString(),\n      runtimeId: runtime._id.toString(),\n    }\n\n    const res = await api.post('/v1/applications', data, {\n      headers: { Authorization: `Bearer ${token}` },\n    })\n\n    console.log(res.data)\n    expect(res.status).toBe(400)\n    expect(res.data?.message).toBe('invalid databaseCapacity')\n  })\n\n  test.skip('create testing application with invalid storageCapacity should be failed', async () => {\n    const region = await GetRegion()\n    const runtime = await GetRuntime()\n\n    const data = {\n      cpu: 200,\n      memory: 256,\n      databaseCapacity: 1024,\n      storageCapacity: 0,\n      autoscaling: {\n        enable: false,\n        minReplicas: 1,\n        maxReplicas: 5,\n        targetCPUUtilizationPercentage: 50,\n        targetMemoryUtilizationPercentage: 50,\n      },\n      name: randomName,\n      state: 'Running',\n      regionId: region._id.toString(),\n      runtimeId: runtime._id.toString(),\n    }\n\n    const res = await api.post('/v1/applications', data, {\n      headers: { Authorization: `Bearer ${token}` },\n    })\n\n    console.log(res.data)\n    expect(res.status).toBe(400)\n    expect(res.data?.message).toBe('invalid storageCapacity')\n  })\n\n  test('create testing application with invalid state should be failed', async () => {\n    const region = await GetRegion()\n    const runtime = await GetRuntime()\n\n    const data = {\n      cpu: 200,\n      memory: 256,\n      databaseCapacity: 1024,\n      storageCapacity: 2048,\n      autoscaling: {\n        enable: false,\n        minReplicas: 1,\n        maxReplicas: 5,\n        targetCPUUtilizationPercentage: 50,\n        targetMemoryUtilizationPercentage: 50,\n      },\n      name: randomName,\n      state: 'Stopped',\n      regionId: region._id.toString(),\n      runtimeId: runtime._id.toString(),\n    }\n\n    const res = await api.post('/v1/applications', data, {\n      headers: { Authorization: `Bearer ${token}` },\n    })\n\n    // console.log(res.data)\n    // {\n    //   statusCode: 400,\n    //   message: [ 'state must be one of the following values: Running' ],\n    //   error: 'Bad Request'\n    // }\n    expect(res.status).toBe(400)\n    expect(res.data?.message).toContain(\n      'state must be one of the following values: Running'\n    )\n  })\n\n  test('create testing application with invalid regionId should be failed', async () => {\n    const runtime = await GetRuntime()\n\n    const data = {\n      cpu: 200,\n      memory: 256,\n      databaseCapacity: 1024,\n      storageCapacity: 2048,\n      autoscaling: {\n        enable: false,\n        minReplicas: 1,\n        maxReplicas: 5,\n        targetCPUUtilizationPercentage: 50,\n        targetMemoryUtilizationPercentage: 50,\n      },\n      name: randomName,\n      state: 'Running',\n      regionId: runtime._id.toString(), // use runtime id as the wrong region id\n      runtimeId: runtime._id.toString(),\n    }\n\n    const res = await api.post('/v1/applications', data, {\n      headers: { Authorization: `Bearer ${token}` },\n    })\n\n    // console.log(res.data)\n    // { error: 'region 64d1e43b2f3799b5ea629c5d not found', data: null }\n    expect(res.status).toBe(201)\n    expect(res.data?.error).toContain('region')\n    expect(res.data?.error).toContain('not found')\n  })\n\n  test('create testing application with invalid runtimeId should be failed', async () => {\n    const region = await GetRegion()\n    // const runtime = await GetRuntime()\n\n    const data = {\n      cpu: 200,\n      memory: 256,\n      databaseCapacity: 1024,\n      storageCapacity: 2048,\n      autoscaling: {\n        enable: false,\n        minReplicas: 1,\n        maxReplicas: 5,\n        targetCPUUtilizationPercentage: 50,\n        targetMemoryUtilizationPercentage: 50,\n      },\n      name: randomName,\n      state: 'Running',\n      regionId: region._id.toString(),\n      runtimeId: region._id.toString(), // use region id as the wrong runtime id\n    }\n\n    const res = await api.post('/v1/applications', data, {\n      headers: { Authorization: `Bearer ${token}` },\n    })\n\n    // console.log(res.data)\n    expect(res.status).toBe(201)\n    expect(res.data?.error).toContain('runtime')\n    expect(res.data?.error).toContain('not found')\n  })\n})\n"
  },
  {
    "path": "e2e/2-monitor/00-query.test.ts",
    "content": "import { describe, expect, test } from '@jest/globals'\nimport { api, EnsureTestToken } from '../api'\nimport { Config } from '../config'\n\ndescribe('query monitor metrics normally', () => {\n  const appid = Config.TEST_APPID\n  let token = null\n  beforeAll(async () => {\n    token = await EnsureTestToken()\n    expect(token).toBeTruthy()\n  })\n\n  test(\n    'query monitor metrics range',\n    async () => {\n      const metrics = [\n        'cpuUsage',\n        'memoryUsage',\n        'storageUsage',\n        'databaseUsage',\n      ]\n\n      const query = {\n        q: metrics,\n        step: 300,\n        type: 'range',\n      }\n\n      const res = await api.get(`/v1/monitor/${appid}/metrics`, {\n        params: query,\n        headers: { Authorization: `Bearer ${token}` },\n      })\n\n      expect(res.status).toBe(200)\n\n      const data = res.data?.data\n      expect(Object.keys(data)).toEqual(expect.arrayContaining(metrics))\n\n      Object.values(data).forEach((v: []) => {\n        expect(Array.isArray(v)).toBeTruthy()\n        v.forEach((item) => {\n          expect([\n            ['values', 'metric'],\n            ['value', 'metric'],\n          ]).toContainEqual(expect.arrayContaining(Object.keys(item)))\n        })\n      })\n    },\n    10 * 1000\n  )\n\n  test(\n    'query monitor metrics instant',\n    async () => {\n      const metrics = [\n        'cpuUsage',\n        'memoryUsage',\n        'storageUsage',\n        'databaseUsage',\n      ]\n\n      const query = {\n        q: metrics,\n        step: 300,\n        type: 'instant',\n      }\n\n      const res = await api.get(`/v1/monitor/${appid}/metrics`, {\n        params: query,\n        headers: { Authorization: `Bearer ${token}` },\n      })\n\n      expect(res.status).toBe(200)\n\n      const data = res.data?.data\n      expect(Object.keys(data)).toEqual(expect.arrayContaining(metrics))\n\n      Object.values(data).forEach((v: []) => {\n        expect(Array.isArray(v)).toBeTruthy()\n\n        expect([\n          ['values', 'metric'],\n          ['value', 'metric'],\n        ]).toContainEqual(expect.arrayContaining(Object.keys(v)))\n      })\n    },\n    10 * 1000\n  )\n})\n\ndescribe('query monitor metrics with invalid inputs', () => {\n  const appid = Config.TEST_APPID\n  let token = null\n  beforeAll(async () => {\n    token = await EnsureTestToken()\n    expect(token).toBeTruthy()\n  })\n\n  test(\n    'query monitor metrics with invalid step',\n    async () => {\n      const metrics = [\n        'cpuUsage',\n        'memoryUsage',\n        'storageUsage',\n        'databaseUsage',\n      ]\n\n      const query = {\n        q: metrics,\n        step: 50,\n      }\n\n      const res = await api.get(`/v1/monitor/${appid}/metrics`, {\n        params: query,\n        headers: { Authorization: `Bearer ${token}` },\n      })\n\n      expect(res.status).toBe(400)\n    },\n    10 * 1000\n  )\n\n  test(\n    'query monitor metrics with invalid metrics',\n    async () => {\n      const metrics = ['cpuUsage', 'memoryUsage', 'storageUsage', 'invalid']\n\n      const query = {\n        q: metrics,\n        step: 50,\n      }\n\n      const res = await api.get(`/v1/monitor/${appid}/metrics`, {\n        params: query,\n        headers: { Authorization: `Bearer ${token}` },\n      })\n\n      expect(res.status).toBe(400)\n    },\n    10 * 1000\n  )\n})\n"
  },
  {
    "path": "e2e/9-cleaning/00-clean.test.ts",
    "content": "import { describe, test } from '@jest/globals'\nimport { ClearTestApplications, ClearTestUser } from '../api'\nimport { Config } from '../config'\n\ndescribe('cleaning', () => {\n  test(\n    'clear testing applications',\n    async () => {\n      await ClearTestApplications()\n    },\n    10 * 1000\n  )\n\n  test(\n    'clear testing user',\n    async () => {\n      await ClearTestUser(Config.TEST_USERNAME)\n    },\n    10 * 1000\n  )\n})\n"
  },
  {
    "path": "e2e/api.ts",
    "content": "import axios from 'axios'\nimport { Config } from './config'\nimport { getDbClient } from './system-db'\n\nexport const api = axios.create({\n  baseURL: Config.API_ENDPOINT,\n  validateStatus: (status) => {\n    return status >= 200 && status <= 430\n  },\n})\n\nexport async function EnsureTestToken() {\n  const res = await api.post('/v1/auth/passwd/signin', {\n    username: Config.TEST_USERNAME,\n    password: Config.TEST_PASSWORD,\n  })\n\n  const token: string = res.data?.data\n  if (token) {\n    return token\n  }\n\n  const res2 = await api.post('/v1/auth/passwd/signup', {\n    username: Config.TEST_USERNAME,\n    password: Config.TEST_PASSWORD,\n  })\n\n  const token2: string = res2.data?.data?.token\n  return token2\n}\n\nexport async function GetTestApplication() {\n  const client = await getDbClient()\n  const db = client.db()\n  try {\n    const user = await db\n      .collection('User')\n      .findOne({ username: Config.TEST_USERNAME })\n    const app = await db.collection('Application').findOne({\n      createdBy: user._id,\n      state: 'Running',\n      phase: 'Started',\n      name: Config.TEST_APP_NAME,\n    })\n    return app\n  } finally {\n    await client.close()\n  }\n}\n\nexport async function ClearTestApplications() {\n  const client = await getDbClient()\n  const db = client.db()\n  const user = await db\n    .collection('User')\n    .findOne({ username: Config.TEST_USERNAME })\n\n  try {\n    if (!user) return\n    await db\n      .collection('Application')\n      .updateMany({ createdBy: user._id }, { $set: { state: 'Deleted' } })\n  } finally {\n    await client.close()\n  }\n}\n\nexport async function ClearTestUser(username: string) {\n  const client = await getDbClient()\n  const db = client.db()\n  try {\n    const user = await db.collection('User').findOne({ username: username })\n    if (!user) return\n    await db.collection('UserPassword').deleteMany({ uid: user._id })\n    await db.collection('UserProfile').deleteOne({ uid: user._id })\n    await db.collection('Account').deleteOne({ createdBy: user._id })\n    await db.collection('User').deleteOne({ _id: user._id })\n  } finally {\n    await client.close()\n  }\n}\n\nexport async function GetRegion() {\n  const client = await getDbClient()\n  const db = client.db()\n  try {\n    const region = await db.collection('Region').findOne()\n    return region\n  } finally {\n    await client.close()\n  }\n}\n\nexport async function GetRuntime() {\n  const client = await getDbClient()\n  const db = client.db()\n  try {\n    const runtime = await db.collection('Runtime').findOne()\n    return runtime\n  } finally {\n    await client.close()\n  }\n}\n"
  },
  {
    "path": "e2e/config.ts",
    "content": "import * as dotenv from 'dotenv'\n\ndotenv.config()\n\nexport class Config {\n  static get DOMAIN() {\n    if (!process.env.DOMAIN) throw new Error('DOMAIN is not set')\n    return process.env.DOMAIN\n  }\n\n  static get API_ENDPOINT() {\n    return process.env.API_ENDPOINT || `http://api.${Config.DOMAIN}`\n  }\n\n  static get MONGO_URI() {\n    if (!process.env.MONGO_URI) throw new Error('MONGO_URI is not set')\n    return process.env.MONGO_URI\n  }\n\n  static get TEST_USERNAME() {\n    return process.env.TEST_USERNAME || 'testing-e2e-user'\n  }\n\n  static get TEST_PASSWORD() {\n    return process.env.TEST_PASSWORD || 'testing-e2e-password'\n  }\n\n  static get TEST_APP_NAME() {\n    return process.env.TEST_APP_NAME || 'testing-e2e-application-name'\n  }\n\n  static get TEST_APPID() {\n    if (!process.env.TEST_APPID) throw new Error('TEST_APPID is not set')\n    return process.env.TEST_APPID\n  }\n}\n"
  },
  {
    "path": "e2e/e2e.sh",
    "content": "#!/bin/bash\n\n# This script is used to run e2e test,\n# You can also run it locally to test laf installation and deployment.\n\n# cd to this dir and run `sh e2e.sh` to test\n\n############# setup env vars #############\n\necho \"================= setup env vars =================\"\n\nif [ -z \"$DOMAIN\" ]; then\n  DOMAIN=\"127.0.0.1.nip.io\"\nfi\n\nexport API_ENDPOINT=\"http://api.${DOMAIN}\"\n\nif [ -z \"$GET_LAF_API_ROUTE_MAX_RETRY_COUNT\" ]; then\n  GET_LAF_API_ROUTE_MAX_RETRY_COUNT=60\nfi\n\nif [ -z \"${LAF_DEPLOYMENT_TIMEOUT}\" ]; then\n  LAF_DEPLOYMENT_TIMEOUT=180\nfi\n\n\n\necho \"================= Check Laf Deployment =================\"\n\nset +e\nkubectl wait --for=condition=Ready pod --all -n laf-system --timeout=${LAF_DEPLOYMENT_TIMEOUT}s\nif [ $? -ne 0 ]; then\n  echo \"some pods in laf-system namespace are not running\\n\"\n  echo \"try to describe pods in laf-system namespace whose status is not Running\\n\"\n  kubectl get pods -n laf-system --field-selector=status.phase!=Running -o=name | xargs kubectl describe -n laf-system\n  echo \"try to log pods in laf-system namespace whose status is not Running\\n\"\n  kubectl get pods -n laf-system --field-selector=status.phase!=Running -o=name | xargs kubectl logs -n laf-system\n  exit 1\nfi\n\n############## Get Laf config and secrets ##############\n\nexport MONGODB_USER=$(kubectl get secret --namespace laf-system mongodb-mongodb-init -o jsonpath=\"{.data.username}\" | base64 --decode)\nexport MONGODB_PASSWORD=$(kubectl get secret --namespace laf-system mongodb-mongodb-init -o jsonpath=\"{.data.password}\" | base64 --decode)\nexport MONGO_URI=\"mongodb://${MONGODB_USER}:${MONGODB_PASSWORD}@mongodb-0.mongo.laf-system.svc.cluster.local:27017/sys_db?authSource=admin&replicaSet=rs0&w=majority\"\n\necho \"mongodb user is ${MONGODB_USER}\"\necho \"mongodb passwd is ${MONGODB_PASSWORD}\"\n\n\necho \"================= Get Laf region =================\"\n\nresponse=$(curl -X 'GET' -sS \"${API_ENDPOINT}/v1/regions\" -H 'accept: */*')\nREGION_ID=$(echo $response | jq -r '.data[0]._id')\n\necho \"REGION_ID is ${REGION_ID}\"\n\n############## Run tests ##############\necho \"================= Run tests =================\"\nnpm test -- --runInBand"
  },
  {
    "path": "e2e/jest-sequencer.js",
    "content": "const TestSequencer = require('@jest/test-sequencer').default\nconst path = require('path')\n\nclass CustomSequencer extends TestSequencer {\n  sort(tests) {\n    const target_test_path = path.join(__dirname, 'target.test.js')\n\n    const target_test_index = tests.findIndex(\n      (t) => t.path === target_test_path\n    )\n\n    if (target_test_index == -1) {\n      return tests\n    }\n\n    const target_test = tests[target_test_index]\n\n    const ordered_tests = tests.slice()\n\n    ordered_tests.splice(target_test_index, 1)\n    ordered_tests.push(target_test) // adds to the tail\n    // ordered_tests.unshift(target_test); // adds to the head\n\n    return ordered_tests\n  }\n}\n\nmodule.exports = CustomSequencer\n"
  },
  {
    "path": "e2e/jest.config.js",
    "content": "/** @type {import('ts-jest').JestConfigWithTsJest} */\nmodule.exports = {\n  preset: 'ts-jest',\n  testEnvironment: 'node',\n  testSequencer: './jest-sequencer.js',\n  maxWorkers: 1,\n  verbose: true,\n}\n"
  },
  {
    "path": "e2e/package.json",
    "content": "{\n  \"name\": \"laf-testing\",\n  \"version\": \"1.0.0\",\n  \"private\": true,\n  \"description\": \"\",\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"lint\": \"eslint . --fix --ext .ts --ext .js\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"@jest/globals\": \"^29.6.2\",\n    \"@types/jest\": \"^29.5.3\",\n    \"ts-jest\": \"^29.1.1\"\n  },\n  \"dependencies\": {\n    \"axios\": \"^1.4.0\",\n    \"dotenv\": \"^16.3.1\",\n    \"mongodb\": \"^5.7.0\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,js}\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "e2e/system-db.ts",
    "content": "import { Config } from './config'\nimport { MongoClient } from 'mongodb'\n\nexport async function getDbClient() {\n  const client = new MongoClient(Config.MONGO_URI)\n  await client.connect()\n  return client\n}\n\nexport async function getDb() {\n  const client = await getDbClient()\n  return client.db()\n}\n"
  },
  {
    "path": "e2e/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"module\": \"commonjs\",\n    \"declaration\": true,\n    \"removeComments\": true,\n    \"emitDecoratorMetadata\": true,\n    \"experimentalDecorators\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"target\": \"es2017\",\n    \"sourceMap\": true,\n    \"outDir\": \"./dist\",\n    \"baseUrl\": \"./\",\n    \"incremental\": true,\n    \"skipLibCheck\": true,\n    \"strictNullChecks\": false,\n    \"noImplicitAny\": false,\n    \"strictBindCallApply\": false,\n    \"forceConsistentCasingInFileNames\": false,\n    \"noFallthroughCasesInSwitch\": false\n  }\n}"
  },
  {
    "path": "lerna.json",
    "content": "{\n  \"packages\": [\n    \"./packages/*\",\n    \"./docs\",\n    \"./server\",\n    \"./web\",\n    \"./runtimes/nodejs\",\n    \"./cli\",\n    \"./services/*\",\n    \"./e2e\"\n  ],\n  \"version\": \"1.0.0\",\n  \"command\": {\n    \"publish\": {\n      \"ignoreChanges\": [\n        \"package-lock.json\",\n        \"*.md\",\n        \"tests\",\n        \"http\",\n        \"ecosystem.config*\"\n      ]\n    }\n  }\n}"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"laf-project\",\n  \"version\": \"1.0.0-beta.4\",\n  \"description\": \"laf.js serverless cloud development platform\",\n  \"private\": \"true\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/labring/laf.git\"\n  },\n  \"scripts\": {\n    \"install\": \"lerna exec npm install --parallel\",\n    \"lint\": \"lerna run lint --parallel\",\n    \"lint-staged\": \"lerna exec --since HEAD --parallel -- lint-staged --no-stash\",\n    \"build\": \"lerna run build --parallel\",\n    \"watch\": \"lerna run watch --parallel\",\n    \"prepublishOnly\": \"npm run build\",\n    \"changelog\": \"npx conventional-changelog -i CHANGELOG.md -s -r 0 -p angular\",\n    \"clean:build\": \"rm -rf ./packages/*/dist\",\n    \"stats\": \"find ./packages -name '*.ts' | xargs cat | grep -v ^$| wc -l\",\n    \"prepare\": \"husky install\"\n  },\n  \"keywords\": [\n    \"laf\",\n    \"faas\",\n    \"baas\",\n    \"serverless\",\n    \"firebase\",\n    \"minio\",\n    \"mongodb\",\n    \"supabase\",\n    \"appwrite\",\n    \"cloudbase\"\n  ],\n  \"devDependencies\": {\n    \"conventional-changelog-cli\": \"^2.1.1\",\n    \"cross-env\": \"^7.0.3\",\n    \"editorconfig\": \"^2.0.0\",\n    \"eslint-config-laf\": \"./packages/eslint-config-laf\",\n    \"husky\": \"^8.0.0\",\n    \"lerna\": \"^6.4.1\",\n    \"lint-staged\": \"^15.1.0\",\n    \"typescript\": \"5.0.4\"\n  }\n}"
  },
  {
    "path": "packages/client-sdk/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"laf/package\"\n}"
  },
  {
    "path": "packages/client-sdk/.npmignore",
    "content": "./node_modules\n.DS_Store\nsrc\ntests"
  },
  {
    "path": "packages/client-sdk/README.md",
    "content": "### 介绍\n\nJavascript client sdk of [`laf`](https://github.com/labring/laf).\n\n### 安装\n\n```sh\n    npm install laf-client-sdk\n```\n\n### 使用示例\n\n```js\nimport { Cloud } from \"laf-client-sdk\";\n\nconst cloud = new Cloud({\n  // the laf app server base url\n  baseUrl: \"https://APPID.lafyun.com\",\n  // the database proxy entry, `app` is the policy name which response for the security of database access\n  dbProxyUrl: \"/proxy/app\",\n  getAccessToken: () => localStorage.getItem(\"access_token\"),\n});\n\nconst db = cloud.database();\n\n// query documents\nconst cates = await db.collection(\"categories\").get();\n\n// query a document\nconst cate = await db.collection(\"categories\").doc(\"the-doc-id\").get();\n\n// query with options\nconst articles = await db\n  .collection(\"articles\")\n  .where({})\n  .orderBy({ createdAt: \"asc\" })\n  .offset(0)\n  .limit(20)\n  .get();\n\n// count documents\nconst total = await db\n  .collection(\"articles\")\n  .where({ createdBy: \"the-user-id\" })\n  .count();\n\n// update document\nconst updated = await db.collection(\"articles\").doc(\"the-doc-id\").update({\n  title: \"new-title\",\n});\n\n// add a document\nconst created = await db.collection(\"articles\").add({\n  title: \"less api database\",\n  content: \"less api more life\",\n  createdAt: new Date(\"2019-09-01\"),\n});\n\n// delete a document\nconst removed = await db.collection(\"articles\").doc(\"the-doc-id\").remove();\n```\n\n#### 微信小程序中使用\n\n```js\nconst cloud = new Cloud({\n  // the laf app server base url\n  baseUrl: \"https://APPID.lafyun.com\",\n  // the database proxy entry, `app` is the policy name which response for the security of database access\n  dbProxyUrl: \"/proxy/app\",\n  getAccessToken: () => wx.getStorageSync('access_token'),\n  environment: \"wxmp\",\n});\n```\n\n#### UNI-APP 中使用\n\n```js\nconst cloud = new Cloud({\n  // the laf app server base url\n  baseUrl: \"https://APPID.lafyun.com\",\n  // the database proxy entry, `app` is the policy name which response for the security of database access\n  getAccessToken: () => localStorage.getItem(\"access_token\"),\n  environment: \"uniapp\",\n});\n```\n\n### 数据库操作\n\n客户端数据操作采取了[腾讯云云开发的接口](https://github.com/TencentCloudBase/tcb-js-sdk/blob/master/docs/database.md)设计。\n\n# API Reference\n\n- [获取数据库的引用](#获取数据库的引用)\n- [获取集合的引用](#获取集合的引用)\n  - [集合 Collection](#集合-collection)\n  - [记录 Record / Document](#记录-record--document)\n  - [查询筛选指令 Query Command](#查询筛选指令-query-command)\n  - [字段更新指令 Update Command](#字段更新指令-update-command)\n- [支持的数据类型](#支持的数据类型)\n- [新增文档](#新增文档)\n- [查询文档](#查询文档)\n  - [添加查询条件](#添加查询条件)\n  - [获取查询数量](#获取查询数量)\n  - [设置记录数量](#设置记录数量)\n  - [设置起始位置](#设置起始位置)\n  - [对结果排序](#对结果排序)\n  - [指定返回字段](#指定返回字段)\n  - [查询指令](#查询指令)\n    - [eq](#eq)\n    - [neq](#neq)\n    - [gt](#gt)\n    - [gte](#gte)\n    - [lt](#lt)\n    - [lte](#lte)\n    - [in](#in)\n    - [nin](#nin)\n    - [and](#and)\n    - [or](#or)\n  - [正则表达式查询](#正则表达式查询)\n    - [db.RegExp](#dbregexp)\n- [删除文档](#删除文档)\n- [更新文档](#更新文档)\n  - [更新指定文档](#更新指定文档)\n  - [更新文档，如果不存在则创建](#更新文档如果不存在则创建)\n  - [批量更新文档](#批量更新文档)\n  - [更新指令](#更新指令)\n    - [set](#set)\n    - [inc](#inc)\n    - [mul](#mul)\n    - [remove](#remove)\n    - [push](#push)\n    - [pop](#pop)\n    - [unshift](#unshift)\n    - [shift](#shift)\n\n## 获取数据库的引用\n\n```js\nconst db = cloud.database();\n```\n\n## 获取集合的引用\n\n```js\n// 获取 `user` 集合的引用\nconst collection = db.collection(\"user\");\n```\n\n### 集合 Collection\n\n通过 `db.collection(name)` 可以获取指定集合的引用，在集合上可以进行以下操作\n\n| 类型     | 接口    | 说明                                                                               |\n| -------- | ------- | ---------------------------------------------------------------------------------- |\n| 写       | add     | 新增记录（触发请求）                                                               |\n| 计数     | count   | 获取复合条件的记录条数                                                             |\n| 读       | get     | 获取集合中的记录，如果有使用 where 语句定义查询条件，则会返回匹配结果集 (触发请求) |\n| 引用     | doc     | 获取对该集合中指定 id 的记录的引用                                                 |\n| 查询条件 | where   | 通过指定条件筛选出匹配的记录，可搭配查询指令（eq, gt, in, ...）使用                |\n|          | skip    | 跳过指定数量的文档，常用于分页，传入 offset                                        |\n|          | orderBy | 排序方式                                                                           |\n|          | limit   | 返回的结果集(文档数量)的限制，有默认值和上限值                                     |\n|          | field   | 指定需要返回的字段                                                                 |\n\n查询及更新指令用于在 `where` 中指定字段需满足的条件，指令可通过 `db.command` 对象取得。\n\n### 记录 Record / Document\n\n通过 `db.collection(collectionName).doc(docId)` 可以获取指定集合上指定 id 的记录的引用，在记录上可以进行以下操作\n\n| 接口 | 说明   |\n| ---- | ------ | ---------------------- |\n| 写   | set    | 覆写记录               |\n|      | update | 局部更新记录(触发请求) |\n|      | remove | 删除记录(触发请求)     |\n| 读   | get    | 获取记录(触发请求)     |\n\n### 查询筛选指令 Query Command\n\n以下指令挂载在 `db.command` 下\n\n| 类型     | 接口 | 说明                               |\n| -------- | ---- | ---------------------------------- |\n| 比较运算 | eq   | 字段 ==                            |\n|          | neq  | 字段 !=                            |\n|          | gt   | 字段 >                             |\n|          | gte  | 字段 >=                            |\n|          | lt   | 字段 <                             |\n|          | lte  | 字段 <=                            |\n|          | in   | 字段值在数组里                     |\n|          | nin  | 字段值不在数组里                   |\n| 逻辑运算 | and  | 表示需同时满足指定的所有条件       |\n|          | or   | 表示需同时满足指定条件中的至少一个 |\n\n### 字段更新指令 Update Command\n\n以下指令挂载在 `db.command` 下\n\n| 类型 | 接口    | 说明                             |\n| ---- | ------- | -------------------------------- |\n| 字段 | set     | 设置字段值                       |\n|      | remove  | 删除字段                         |\n|      | inc     | 加一个数值，原子自增             |\n|      | mul     | 乘一个数值，原子自乘             |\n|      | push    | 数组类型字段追加尾元素，支持数组 |\n|      | pop     | 数组类型字段删除尾元素，支持数组 |\n|      | shift   | 数组类型字段删除头元素，支持数组 |\n|      | unshift | 数组类型字段追加头元素，支持数组 |\n\n## 支持的数据类型\n\n数据库提供以下几种数据类型：\n\n- String：字符串\n- Number：数字\n- Object：对象\n- Array：数组\n- Bool：布尔值\n- GeoPoint：地理位置点\n- GeoLineStringL: 地理路径\n- GeoPolygon: 地理多边形\n- GeoMultiPoint: 多个地理位置点\n- GeoMultiLineString: 多个地理路径\n- GeoMultiPolygon: 多个地理多边形\n- Date：时间\n- Null\n\n以下对几个特殊的数据类型做个补充说明\n\n1. 时间 Date\n\nDate 类型用于表示时间，精确到毫秒，可以用 JavaScript 内置 Date 对象创建。需要特别注意的是，用此方法创建的时间是客户端时间，不是服务端时间。如果需要使用服务端时间，应该用 API 中提供的 serverDate 对象来创建一个服务端当前时间的标记，当使用了 serverDate 对象的请求抵达服务端处理时，该字段会被转换成服务端当前的时间，更棒的是，我们在构造 serverDate 对象时还可通过传入一个有 offset 字段的对象来标记一个与当前服务端时间偏移 offset 毫秒的时间，这样我们就可以达到比如如下效果：指定一个字段为服务端时间往后一个小时。\n\n那么当我们需要使用客户端时间时，存放 Date 对象和存放毫秒数是否是一样的效果呢？不是的，我们的数据库有针对日期类型的优化，建议大家使用时都用 Date 或 serverDate 构造时间对象。\n\n```js\n//服务端当前时间\nnew db.serverDate();\n```\n\n```js\n//服务端当前时间加1S\nnew db.serverDate({\n  offset: 1000,\n});\n```\n\n2. 地理位置\n\n参考：[GEO 地理位置](#GEO地理位置)\n\n3. Null\n\nNull 相当于一个占位符，表示一个字段存在但是值为空。\n\n## 新增文档\n\n方法 1： collection.add(data)\n\n示例：\n\n| 参数 | 类型   | 必填 | 说明                                       |\n| ---- | ------ | ---- | ------------------------------------------ |\n| data | object | 是   | {\\_id: '10001', 'name': 'Ben'} \\_id 非必填 |\n\n```js\n//promise\ncollection\n  .add({\n    name: \"Ben\",\n  })\n  .then((res) => {});\n\n//callback\ncollection.add(\n  {\n    name: \"Ben\",\n  },\n  function (err, res) {}\n);\n```\n\n方法 2： collection.doc().set(data)\n\n也可通过 `set` 方法新增一个文档，需先取得文档引用再调用 `set` 方法。\n如果文档不存在，`set` 方法会创建一个新文档。\n\n```js\n//promise\ncollection.doc().set({\n  name: \"Hey\",\n});\n\n//callback\ncollection.doc().set(\n  {\n    name: \"Hey\",\n  },\n  function (err, res) {}\n);\n```\n\n## 查询文档\n\n支持 `where()`、`limit()`、`skip()`、`orderBy()`、`get()`、`update()`、`field()`、`count()` 等操作。\n\n只有当调用`get()` `update()`时才会真正发送请求。\n注：默认取前 100 条数据，最大取前 100 条数据。\n\n### 添加查询条件\n\ncollection.where()\n参数\n\n设置过滤条件\nwhere 可接收对象作为参数，表示筛选出拥有和传入对象相同的 key-value 的文档。比如筛选出所有类型为计算机的、内存为 8g 的商品：\n\n```js\ndb.collection(\"goods\").where({\n  category: \"computer\",\n  type: {\n    memory: 8,\n  },\n});\n```\n\n如果要表达更复杂的查询，可使用高级查询指令，比如筛选出所有内存大于 8g 的计算机商品：\n\n```js\nconst _ = db.command; // 取指令\ndb.collection(\"goods\").where({\n  category: \"computer\",\n  type: {\n    memory: _.gt(8), // 表示大于 8\n  },\n});\n```\n\n### 获取查询数量\n\ncollection.count()\n\n参数\n\n```js\n//promise\ndb.collection(\"goods\")\n  .where({\n    category: \"computer\",\n    type: {\n      memory: 8,\n    },\n  })\n  .count()\n  .then(function (res) {});\n\n//callback\ndb.collection(\"goods\")\n  .where({\n    category: \"computer\",\n    type: {\n      memory: 8,\n    },\n  })\n  .count(function (err, res) {});\n```\n\n响应参数\n\n| 字段      | 类型    | 必填 | 说明                     |\n| --------- | ------- | ---- | ------------------------ |\n| code      | string  | 否   | 状态码，操作成功则不返回 |\n| message   | string  | 否   | 错误描述                 |\n| total     | Integer | 否   | 计数结果                 |\n| requestId | string  | 否   | 请求序列号，用于错误排查 |\n\n### 设置记录数量\n\ncollection.limit()\n\n参数说明\n\n| 参数  | 类型    | 必填 | 说明           |\n| ----- | ------- | ---- | -------------- |\n| value | Integer | 是   | 限制展示的数值 |\n\n使用示例\n\n```js\n//promise\ncollection\n  .limit(1)\n  .get()\n  .then(function (res) {});\n\n//callback\ncollection.limit(1).get(function (err, res) {});\n```\n\n### 设置起始位置\n\ncollection.skip()\n\n参数说明\n\n| 参数  | 类型    | 必填 | 说明           |\n| ----- | ------- | ---- | -------------- |\n| value | Integer | 是   | 跳过展示的数据 |\n\n使用示例\n\n```js\n//promise\ncollection\n  .skip(4)\n  .get()\n  .then(function (res) {});\n\n//callback\ncollection.skip(4).get(function (err, res) {});\n```\n\n### 对结果排序\n\ncollection.orderBy()\n\n参数说明\n\n| 参数      | 类型   | 必填 | 说明                                |\n| --------- | ------ | ---- | ----------------------------------- |\n| field     | string | 是   | 排序的字段                          |\n| orderType | string | 是   | 排序的顺序，升序(asc) 或 降序(desc) |\n\n使用示例\n\n```js\n//promise\ncollection\n  .orderBy(\"name\", \"asc\")\n  .get()\n  .then(function (res) {});\n\n//callback\ncollection.orderBy(\"name\", \"asc\").get(function (err, res) {});\n```\n\n### 指定返回字段\n\ncollection.field()\n\n参数说明\n\n| 参数 | 类型   | 必填 | 说明                               |\n| ---- | ------ | ---- | ---------------------------------- |\n| -    | object | 是   | 要过滤的字段，不返回传 0，返回传 1 |\n\n使用示例\n\n```js\ncollection.field({ age: 1 });\n```\n\n备注：只能指定要返回的字段或者不要返回的字段。即{'a': 1, 'b': 0}是一种错误的参数格式\n\n### 查询指令\n\n#### eq\n\n表示字段等于某个值。`eq` 指令接受一个字面量 (literal)，可以是 `number`, `boolean`, `string`, `object`, `array`。\n\n比如筛选出所有自己发表的文章，除了用传对象的方式：\n\n```js\nconst myOpenID = \"xxx\";\ndb.collection(\"articles\").where({\n  _openid: myOpenID,\n});\n```\n\n还可以用指令：\n\n```js\nconst _ = db.command;\nconst myOpenID = \"xxx\";\ndb.collection(\"articles\").where({\n  _openid: _.eq(openid),\n});\n```\n\n注意 `eq` 指令比对象的方式有更大的灵活性，可以用于表示字段等于某个对象的情况，比如：\n\n```js\n// 这种写法表示匹配 stat.publishYear == 2018 且 stat.language == 'zh-CN'\ndb.collection(\"articles\").where({\n  stat: {\n    publishYear: 2018,\n    language: \"zh-CN\",\n  },\n});\n// 这种写法表示 stat 对象等于 { publishYear: 2018, language: 'zh-CN' }\nconst _ = db.command;\ndb.collection(\"articles\").where({\n  stat: _.eq({\n    publishYear: 2018,\n    language: \"zh-CN\",\n  }),\n});\n```\n\n#### neq\n\n字段不等于。`neq` 指令接受一个字面量 (literal)，可以是 `number`, `boolean`, `string`, `object`, `array`。\n\n如筛选出品牌不为 X 的计算机：\n\n```js\nconst _ = db.command;\ndb.collection(\"goods\").where({\n  category: \"computer\",\n  type: {\n    brand: _.neq(\"X\"),\n  },\n});\n```\n\n#### gt\n\n字段大于指定值。\n\n如筛选出价格大于 2000 的计算机：\n\n```js\nconst _ = db.command;\ndb.collection(\"goods\").where({\n  category: \"computer\",\n  price: _.gt(2000),\n});\n```\n\n#### gte\n\n字段大于或等于指定值。\n\n#### lt\n\n字段小于指定值。\n\n#### lte\n\n字段小于或等于指定值。\n\n#### in\n\n字段值在给定的数组中。\n\n筛选出内存为 8g 或 16g 的计算机商品：\n\n```js\nconst _ = db.command;\ndb.collection(\"goods\").where({\n  category: \"computer\",\n  type: {\n    memory: _.in([8, 16]),\n  },\n});\n```\n\n#### nin\n\n字段值不在给定的数组中。\n\n筛选出内存不是 8g 或 16g 的计算机商品：\n\n```js\nconst _ = db.command;\ndb.collection(\"goods\").where({\n  category: \"computer\",\n  type: {\n    memory: _.nin([8, 16]),\n  },\n});\n```\n\n#### and\n\n表示需同时满足指定的两个或以上的条件。\n\n如筛选出内存大于 4g 小于 32g 的计算机商品：\n\n流式写法：\n\n```js\nconst _ = db.command;\ndb.collection(\"goods\").where({\n  category: \"computer\",\n  type: {\n    memory: _.gt(4).and(_.lt(32)),\n  },\n});\n```\n\n前置写法：\n\n```js\nconst _ = db.command;\ndb.collection(\"goods\").where({\n  category: \"computer\",\n  type: {\n    memory: _.and(_.gt(4), _.lt(32)),\n  },\n});\n```\n\n#### or\n\n表示需满足所有指定条件中的至少一个。如筛选出价格小于 4000 或在 6000-8000 之间的计算机：\n\n流式写法：\n\n```js\nconst _ = db.command;\ndb.collection(\"goods\").where({\n  category: \"computer\",\n  type: {\n    price: _.lt(4000).or(_.gt(6000).and(_.lt(8000))),\n  },\n});\n```\n\n前置写法：\n\n```js\nconst _ = db.command;\ndb.collection(\"goods\").where({\n  category: \"computer\",\n  type: {\n    price: _.or(_.lt(4000), _.and(_.gt(6000), _.lt(8000))),\n  },\n});\n```\n\n如果要跨字段 “或” 操作：(如筛选出内存 8g 或 cpu 3.2 ghz 的计算机)\n\n```js\nconst _ = db.command;\ndb.collection(\"goods\").where(\n  _.or(\n    {\n      type: {\n        memory: _.gt(8),\n      },\n    },\n    {\n      type: {\n        cpu: 3.2,\n      },\n    }\n  )\n);\n```\n\n### 正则表达式查询\n\n#### db.RegExp\n\n根据正则表达式进行筛选\n\n例如下面可以筛选出 `version` 字段开头是 \"数字+s\" 的记录，并且忽略大小写：\n\n```js\n// 可以直接使用正则表达式\ndb.collection('articles').where({\n  version: /^\\ds/i\n})\n\n// 或者\ndb.collection('articles').where({\n  version: new db.RegExp({\n    regex: '^\\\\ds'   // 正则表达式为 /^\\ds/，转义后变成 '^\\\\ds'\n    options: 'i'    // i表示忽略大小写\n  })\n})\n```\n\n## 删除文档\n\n方式 1 通过 \b 指定文档 ID\n\ncollection.doc(\\_id).remove()\n\n```js\n// 清理全部数据\ncollection\n  .get()\n  .then((res) => {\n    const promiseList = res.data.map((document) => {\n      return collection.doc(document._id).remove();\n    });\n    Promise.all(promiseList);\n  })\n  .catch((e) => {});\n```\n\n方式 2 条件查找文档然后直接批量删除\n\ncollection.where().remove()\n\n```js\n// 删除字段a的值大于2的文档\n//promise\ncollection\n  .where({\n    a: _.gt(2),\n  })\n  .remove()\n  .then(function (res) {});\n\n//callback\n//promise\ncollection\n  .where({\n    a: _.gt(2),\n  })\n  .remove(function (err, res) {});\n```\n\n## 更新文档\n\n### 更新指定文档\n\ncollection.doc().update()\n\n```js\ncollection.doc(\"doc-id\").update({\n  name: \"Hey\",\n});\n```\n\n### 更新文档，如果不存在则创建\n\ncollection.doc().set()\n\n```js\n//promise\ncollection\n  .doc(\"doc-id\")\n  .set({\n    name: \"Hey\",\n  })\n  .then(function (res) {});\n\n//callback\ncollection.doc(\"doc-id\").set(\n  {\n    name: \"Hey\",\n  },\n  function (err, res) {}\n);\n```\n\n### 批量更新文档\n\ncollection.update()\n\n```js\n//promise\ncollection\n  .where({ name: _.eq(\"hey\") })\n  .update({\n    age: 18,\n  })\n  .then(function (res) {});\n//callback\ncollection.where({ name: _.eq(\"hey\") }).update(\n  {\n    age: 18,\n  },\n  function (err, res) {}\n);\n```\n\n### 更新指令\n\n#### set\n\n更新指令。用于设定字段等于指定值。这种方法相比传入纯 JS 对象的好处是能够指定字段等于一个对象：\n\n```js\n// 以下方法只会更新 property.location 和 property.size，如果 property 对象中有\n//promise\ndb.collection(\"photo\")\n  .doc(\"doc-id\")\n  .update({\n    data: {\n      property: {\n        location: \"guangzhou\",\n        size: 8,\n      },\n    },\n  })\n  .then(function (res) {});\n//callback\ndb.collection(\"photo\")\n  .doc(\"doc-id\")\n  .update(\n    {\n      data: {\n        property: {\n          location: \"guangzhou\",\n          size: 8,\n        },\n      },\n    },\n    function (err, res) {}\n  );\n```\n\n#### inc\n\n更新指令。用于指示字段自增某个值，这是个原子操作，使用这个操作指令而不是先读数据、再加、再写回的好处是：\n\n1. 原子性：多个用户同时写，对数据库来说都是将字段加一，不会有后来者覆写前者的情况\n2. 减少一次网络请求：不需先读再写\n\n之后的 mul 指令同理。\n\n如给收藏的商品数量加一：\n\n```js\nconst _ = db.command;\n//promise\ndb.collection(\"user\")\n  .where({\n    _openid: \"my-open-id\",\n  })\n  .update({\n    count: {\n      favorites: _.inc(1),\n    },\n  })\n  .then(function (res) {});\n//callback\ndb.collection(\"user\")\n  .where({\n    _openid: \"my-open-id\",\n  })\n  .update(\n    {\n      count: {\n        favorites: _.inc(1),\n      },\n    },\n    function (err, res) {}\n  );\n```\n\n#### mul\n\n更新指令。用于指示字段自乘某个值。\n\n#### remove\n\n更新指令。用于表示删除某个字段。如某人删除了自己一条商品评价中的评分：\n\n```js\n//promise\nconst _ = db.command;\ndb.collection(\"comments\")\n  .doc(\"comment-id\")\n  .update({\n    rating: _.remove(),\n  })\n  .then(function (res) {});\n\n//callback\nconst _ = db.command;\ndb.collection(\"comments\")\n  .doc(\"comment-id\")\n  .update(\n    {\n      rating: _.remove(),\n    },\n    function (err, res) {}\n  );\n```\n\n#### push\n\n向数组尾部追加元素，支持传入单个元素或数组\n\n```js\nconst _ = db.command;\n//promise\ndb.collection(\"comments\")\n  .doc(\"comment-id\")\n  .update({\n    // users: _.push('aaa')\n    users: _.push([\"aaa\", \"bbb\"]),\n  })\n  .then(function (res) {});\n\n//callback\ndb.collection(\"comments\")\n  .doc(\"comment-id\")\n  .update(\n    {\n      // users: _.push('aaa')\n      users: _.push([\"aaa\", \"bbb\"]),\n    },\n    function (err, res) {}\n  );\n```\n\n#### pop\n\n删除数组尾部元素\n\n```js\nconst _ = db.command;\n//promise\ndb.collection(\"comments\")\n  .doc(\"comment-id\")\n  .update({\n    users: _.pop(),\n  })\n  .then(function (res) {});\n\n//callback\ndb.collection(\"comments\")\n  .doc(\"comment-id\")\n  .update(\n    {\n      users: _.pop(),\n    },\n    function (err, res) {}\n  );\n```\n\n#### unshift\n\n向数组头部添加元素，支持传入单个元素或数组。使用同 push\n\n#### shift\n\n删除数组头部元素。使用同 pop\n\n### With 子表查询（支持 MongoDb 和 MySQL）\n\n#### 一对多关系查询\n\n> 主要用于「一对多」关系的子查询，可跨库查询，要求用户拥有子表的查询权限\n\n```js\nconst { data } = await db\n  .collection(\"article\")\n  .with({\n    query: db.collection(\"tag\"),\n    localField: \"id\", // 主表连接键，即 article.id\n    foreignField: \"article_id\", // 子表连接键，即 tag.article_id\n    as: \"tags\", // 查询结果中字段重命名，缺省为子表名\n  })\n  .get();\n\nconsole.log(data);\n//  [ { id: 1, name: xxx, tags: [...] }  ]\n```\n\n#### 一对一关系查询\n\n> 类似 left join 查询，但此种方法支持 MongoDb 和 SQL\n\n```js\nconst { data } = await db\n  .collection(\"article\")\n  .withOne({\n    query: db.collection(\"user\"),\n    localField: \"author_id\", // 主表连接键，即 article.id\n    foreignField: \"id\", // 子表连接键，即 tag.article_id\n    as: \"author\", // 查询结果中字段重命名，缺省为子表名\n  })\n  .get();\n\nconsole.log(data);\n//  [ { id: 1, name: xxx, author: {...} }  ]\n```\n\n## GEO 地理位置\n\n注意：**如果需要对类型为地理位置的字段进行搜索，一定要建立地理位置索引**。\n\n### GEO 数据类型\n\n#### Point\n\n用于表示地理位置点，用经纬度唯一标记一个点，这是一个特殊的数据存储类型。\n\n签名：`Point(longitude: number, latitude: number)`\n\n示例：\n\n```js\nnew db.Geo.Point(longitude, latitude);\n```\n\n#### LineString\n\n用于表示地理路径，是由两个或者更多的 `Point` 组成的线段。\n\n签名：`LineString(points: Point[])`\n\n示例：\n\n```js\nnew db.Geo.LineString([\n  new db.Geo.Point(lngA, latA),\n  new db.Geo.Point(lngB, latB),\n  // ...\n]);\n```\n\n#### Polygon\n\n用于表示地理上的一个多边形（有洞或无洞均可），它是由一个或多个**闭环** `LineString` 组成的几何图形。\n\n由一个环组成的 `Polygon` 是没有洞的多边形，由多个环组成的是有洞的多边形。对由多个环（`LineString`）组成的多边形（`Polygon`），第一个环是外环，所有其他环是内环（洞）。\n\n签名：`Polygon(lines: LineString[])`\n\n示例：\n\n```js\nnew db.Geo.Polygon([\n  new db.Geo.LineString(...),\n  new db.Geo.LineString(...),\n  // ...\n])\n```\n\n#### MultiPoint\n\n用于表示多个点 `Point` 的集合。\n\n签名：`MultiPoint(points: Point[])`\n\n示例：\n\n```js\nnew db.Geo.MultiPoint([\n  new db.Geo.Point(lngA, latA),\n  new db.Geo.Point(lngB, latB),\n  // ...\n]);\n```\n\n#### MultiLineString\n\n用于表示多个地理路径 `LineString` 的集合。\n\n签名：`MultiLineString(lines: LineString[])`\n\n示例：\n\n```js\nnew db.Geo.MultiLineString([\n  new db.Geo.LineString(...),\n  new db.Geo.LineString(...),\n  // ...\n])\n```\n\n#### MultiPolygon\n\n用于表示多个地理多边形 `Polygon` 的集合。\n\n签名：`MultiPolygon(polygons: Polygon[])`\n\n示例：\n\n```js\nnew db.Geo.MultiPolygon([\n  new db.Geo.Polygon(...),\n  new db.Geo.Polygon(...),\n  // ...\n])\n```\n\n### GEO 操作符\n\n#### geoNear\n\n按从近到远的顺序，找出字段值在给定点的附近的记录。\n\n签名：\n\n```js\ndb.command.geoNear(options: IOptions)\n\ninterface IOptions {\n  geometry: Point // 点的地理位置\n  maxDistance?: number // 选填，最大距离，米为单位\n  minDistance?: number // 选填，最小距离，米为单位\n}\n```\n\n示例：\n\n```js\ndb.collection(\"user\").where({\n  location: db.command.geoNear({\n    geometry: new db.Geo.Point(lngA, latA),\n    maxDistance: 1000,\n    minDistance: 0,\n  }),\n});\n```\n\n#### geoWithin\n\n找出字段值在指定 Polygon / MultiPolygon 内的记录，无排序\n\n签名：\n\n```js\ndb.command.geoWithin(IOptions);\n\ninterface IOptions {\n  geometry: Polygon | MultiPolygon; // 地理位置\n}\n```\n\n示例：\n\n```js\n// 一个闭合的区域\nconst area = new Polygon([\n  new LineString([\n    new Point(lngA, latA),\n    new Point(lngB, latB),\n    new Point(lngC, latC),\n    new Point(lngA, latA),\n  ]),\n]);\n\n// 搜索 location 字段在这个区域中的 user\ndb.collection(\"user\").where({\n  location: db.command.geoWithin({\n    geometry: area,\n  }),\n});\n```\n\n#### geoIntersects\n\n找出字段值和给定的地理位置图形相交的记录\n\n签名：\n\n```js\ndb.command.geoIntersects(IOptions);\n\ninterface IOptions {\n  geometry:\n    | Point\n    | LineString\n    | MultiPoint\n    | MultiLineString\n    | Polygon\n    | MultiPolygon; // 地理位置\n}\n```\n\n示例：\n\n```js\n// 一条路径\nconst line = new LineString([new Point(lngA, latA), new Point(lngB, latB)]);\n\n// 搜索 location 与这条路径相交的 user\ndb.collection(\"user\").where({\n  location: db.command.geoIntersects({\n    geometry: line,\n  }),\n});\n```\n"
  },
  {
    "path": "packages/client-sdk/package.json",
    "content": "{\n  \"name\": \"laf-client-sdk\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"dist/commonjs/index.js\",\n  \"module\": \"dist/esm/index.js\",\n  \"scripts\": {\n    \"watch\": \"tsc -w\",\n    \"test\": \"mocha tests/units/*test.js\",\n    \"build\": \"tsc -p tsconfig.json && tsc -p tsconfig.esm.json\",\n    \"build:bundle\": \"webpack\",\n    \"lint\": \"eslint . --fix --ext .ts --ext .js\",\n    \"prepublishOnly\": \"npm run build\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/labring/laf.git\"\n  },\n  \"keywords\": [\n    \"laf\",\n    \"laf-client\"\n  ],\n  \"author\": \"maslow (wangfugen@126.com)\",\n  \"license\": \"ISC\",\n  \"bugs\": {\n    \"url\": \"https://github.com/labring/laf/issues\"\n  },\n  \"homepage\": \"https://github.com/labring/laf#readme\",\n  \"dependencies\": {\n    \"axios\": \"^0.21.1\",\n    \"database-ql\": \"1.0.0-beta.14\"\n  },\n  \"devDependencies\": {\n    \"clean-webpack-plugin\": \"^3.0.0\",\n    \"html-webpack-plugin\": \"^4.3.0\",\n    \"mocha\": \"^9.2.0\",\n    \"mongodb\": \"^3.6.3\",\n    \"ts-loader\": \"^7.0.5\",\n    \"typescript\": \"^3.6.2\",\n    \"webpack\": \"^4.43.0\",\n    \"webpack-cli\": \"^4.9.2\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,js}\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "packages/client-sdk/src/cloud.ts",
    "content": "import { Db } from 'database-ql'\nimport { Request } from './request/request'\nimport { UniRequest } from './request/request-uni'\nimport { WxmpRequest } from './request/request-wxmp'\nimport { TaroRequest } from './request/request-taro'\nimport { CloudOptions, EnvironmentType, RequestInterface } from './types'\n\ninterface GlobalObjectType {\n  getSystemInfoSync: any\n}\ndeclare const uni: GlobalObjectType\n\n/**\n * class Cloud provide the interface to request cloud function and cloud database.\n */\nclass Cloud {\n  private config: CloudOptions\n\n  /**\n   * request class by environment\n   */\n  private get requestClass() {\n    const env = this.config?.environment\n    let ret = Request\n    if (this.config?.requestClass) {\n      ret = this.config?.requestClass\n    } else if (env === EnvironmentType.UNI_APP) {\n      const { uniPlatform } = uni.getSystemInfoSync()\n      if (uniPlatform == 'mp-weixin') {\n        ret = WxmpRequest\n      } else {\n        ret = UniRequest\n      }\n    } else if (env === EnvironmentType.WX_MP) {\n      ret = WxmpRequest\n    } else if (env === EnvironmentType.TARO) {\n      ret = TaroRequest\n    } else {\n      ret = Request\n    }\n\n    return ret\n  }\n\n  /**\n   * internal request class\n   */\n  protected _request: RequestInterface\n\n  /**\n   * Create a cloud instance\n   * @param config\n   */\n  constructor(config: CloudOptions) {\n    const warningFunc = () => {\n      console.warn('WARNING: no getAccessToken set for db proxy request')\n      return ''\n    }\n\n    this.config = {\n      baseUrl: config.baseUrl,\n      dbProxyUrl: config.dbProxyUrl,\n      getAccessToken: config?.getAccessToken || warningFunc,\n      environment: config?.environment || EnvironmentType.H5,\n      primaryKey: config?.primaryKey,\n      timeout: config?.timeout,\n      headers: config?.headers,\n      requestClass: config?.requestClass,\n    }\n\n    const reqClass = this.requestClass\n    this._request = new reqClass(this.config)\n  }\n\n  /**\n   * Get a cloud database instance\n   * @returns\n   */\n  database() {\n    return new Db({\n      request: this._request,\n      primaryKey: this.config?.primaryKey,\n    })\n  }\n\n  /**\n   * Invoke cloud function by name use POST http method\n   * @alias alias of `invoke()` for history reason\n   * @param functionName\n   * @param data\n   * @returns\n   */\n  async invokeFunction<T = any>(functionName: string, data?: any): Promise<T> {\n    const url = this.config.baseUrl + `/${functionName}`\n    const res = await this._request.request(url, data)\n\n    return res.data\n  }\n\n  /**\n   * Invoke cloud function by name use POST http method\n   * @param functionName\n   * @param data\n   * @returns\n   */\n  async invoke<T = any>(functionName: string, data?: any): Promise<T> {\n    return await this.invokeFunction(functionName, data)\n  }\n}\n\nexport { Cloud, Db, Request }\n"
  },
  {
    "path": "packages/client-sdk/src/index-bundle.ts",
    "content": "import { init, Cloud, Db, EnvironmentType } from './index'\n\nexport * from './index'\n\n// 此行是为了运行测试用例时， 报 window undefined 使用；\n// 如果浏览器环境因此报错， 需要注释掉本行；\n// var window: any\n\nif (window) {\n  window['LafClient'] = {\n    initLessClient: init,\n    Cloud,\n    Db,\n    EnvironmentType,\n  }\n}\n"
  },
  {
    "path": "packages/client-sdk/src/index.ts",
    "content": "/**\n * set `globalThis` trickily\n */\n;((t) => {\n  function setGlobalThis() {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const globalObj = this\n    globalObj.globalThis = globalObj\n    // @ts-ignore\n    delete t.prototype._T_\n  }\n\n  if (typeof globalThis !== 'object') {\n    if (this) {\n      setGlobalThis()\n    } else {\n      Object.defineProperty(t.prototype, '_T_', {\n        configurable: true,\n        get: setGlobalThis,\n      })\n      // @ts-ignore\n      _T_\n    }\n  }\n})(Object)\n\n/**\n * hack `process` missing for wechat miniprogram\n */\nif (globalThis.wx && !globalThis.process) {\n  ;(globalThis as any).process = {\n    env: {},\n  }\n  console.info('hacked for `process` missing for wechat miniprogram')\n}\n\nimport { Cloud, Db } from './cloud'\nimport { CloudOptions } from './types'\n\nexport * from './request'\nexport * from './types'\n\nfunction init(config: CloudOptions): Cloud {\n  return new Cloud(config)\n}\n\nexport { init, Cloud, Db }\n"
  },
  {
    "path": "packages/client-sdk/src/request/index.ts",
    "content": "export * from './request'\nexport * from './request-uni'\nexport * from './request-wxmp'\n"
  },
  {
    "path": "packages/client-sdk/src/request/request-taro.ts",
    "content": "import { Request } from './request'\nimport { CloudOptions, EnvironmentType } from '../types'\n\ninterface GlobalObjectType {\n  request: any\n  uploadFile: any\n}\ndeclare const taro: GlobalObjectType\n\n/**\n * Taro 环境请求类\n */\nexport class TaroRequest extends Request {\n  constructor(config: CloudOptions) {\n    super(config)\n  }\n\n  /**\n   * Taro 环境请求方法\n   * @override\n   * @param data\n   * @returns\n   */\n  async request(url: string, data: any, _options?: any) {\n    if (this.options.environment !== EnvironmentType.TARO) {\n      throw new Error('environment type must be taro')\n    }\n\n    const token = this.options.getAccessToken()\n    const header = this.getHeaders(token)\n    const options = {\n      url,\n      header,\n      method: _options?.method ?? 'POST',\n      data,\n      dataType: 'json',\n    }\n\n    const res = await taro.request(options)\n    return res\n  }\n}\n"
  },
  {
    "path": "packages/client-sdk/src/request/request-uni.ts",
    "content": "import { Request } from './request'\nimport { CloudOptions, EnvironmentType } from '../types'\n\ninterface GlobalObjectType {\n  request: any\n  uploadFile: any\n}\ndeclare const uni: GlobalObjectType\n\n/**\n * Uni-app 环境请求类\n */\nexport class UniRequest extends Request {\n  constructor(config: CloudOptions) {\n    super(config)\n  }\n\n  /**\n   * uni-app 环境请求方法\n   * @override\n   * @param data\n   * @returns\n   */\n  async request(url: string, data: any, _options?: any) {\n    if (this.options.environment !== EnvironmentType.UNI_APP) {\n      throw new Error('environment type must be uniapp')\n    }\n\n    const token = this.options.getAccessToken()\n    const header = this.getHeaders(token)\n    const options = {\n      url,\n      header,\n      method: _options?.method ?? 'POST',\n      data,\n      dataType: 'json',\n    }\n\n    const res = await uni.request(options)\n    return res\n  }\n}\n"
  },
  {
    "path": "packages/client-sdk/src/request/request-wxmp.ts",
    "content": "import { CloudOptions, EnvironmentType } from '../types'\nimport { Request } from './request'\n\ninterface GlobalObjectType {\n  request: any\n  uploadFile: any\n}\ndeclare const wx: GlobalObjectType\n\n/**\n * 微信小程序环境请求类\n */\nexport class WxmpRequest extends Request {\n  constructor(config: CloudOptions) {\n    super(config)\n  }\n\n  /**\n   * 微信小程序环境请求方法\n   * @override\n   * @param data\n   * @returns\n   */\n  async request(url: string, data: any, _options?: any) {\n    if (this.options.environment !== EnvironmentType.WX_MP) {\n      throw new Error('environment type must be wxmp')\n    }\n\n    const token = this.options.getAccessToken()\n    const header = this.getHeaders(token)\n\n    const options = {\n      url,\n      header,\n      method: _options?.method ?? 'POST',\n      data,\n      dataType: 'json',\n    }\n\n    return new Promise((resolve, reject) => {\n      wx.request({\n        ...options,\n        success(res: any) {\n          resolve(res)\n        },\n        fail(err: any) {\n          reject(err)\n        },\n      })\n    })\n  }\n}\n"
  },
  {
    "path": "packages/client-sdk/src/request/request.ts",
    "content": "import axios from 'axios'\nimport { CloudOptions, EnvironmentType, RequestInterface } from '../types'\n\n/**\n * 默认使用 axios 发送请求，可支持浏览器 和 Node.js 环境，如需支持其它平台，请派生子类并重写 `send()` 方法\n */\nexport class Request implements RequestInterface {\n  protected options: CloudOptions\n  constructor(options: CloudOptions) {\n    this.options = Object.assign({}, options)\n    this.options.timeout = options?.timeout || 15000\n  }\n\n  /**\n   * 发送 less-api 数据操作请求, 由 `Db` 中调用\n   * @param action\n   * @param data\n   * @returns\n   */\n  async send(action: string, data: object) {\n    const params = Object.assign({}, data, {\n      action,\n    })\n\n    const slowQueryWarning = setTimeout(() => {\n      console.warn(\n        'Database operation is longer than 3s. Please check query performance and your network environment.'\n      )\n    }, 3000)\n\n    try {\n      const req_url = this.options.baseUrl + this.options.dbProxyUrl\n      const res = await this.request(req_url, params)\n      return res.data\n    } finally {\n      clearTimeout(slowQueryWarning)\n    }\n  }\n\n  /**\n   * 发出 HTTP 请求，主要于 `less-api` 数据请求和 `less-framework` 云函数调用时使用\n   * 默认使用 axios 发送请求，可支持浏览器 和 Node.js 环境，如需支持其它平台，请派生子类并重写本方法\n   * @param data\n   * @returns\n   */\n  async request(url: string, data: any): Promise<any> {\n    if (this.options.environment !== EnvironmentType.H5) {\n      throw new Error('environment type must be h5')\n    }\n\n    const token = this.options.getAccessToken()\n    const headers = this.getHeaders(token)\n\n    const res = await axios.post(url, data, {\n      headers,\n      timeout: this.options.timeout,\n    })\n\n    return res\n  }\n\n  /**\n   * 获取必要的请求头\n   * @param token\n   * @returns\n   */\n  protected getHeaders(token: string, headers?: object) {\n    headers = headers ?? { 'Content-Type': 'application/json' }\n    if (token) {\n      headers['Authorization'] = `Bearer ${token}`\n    }\n\n    const optionHeader = this.options?.headers || {}\n    return Object.assign(headers, optionHeader)\n  }\n}\n"
  },
  {
    "path": "packages/client-sdk/src/types.ts",
    "content": "import { RequestInterface as BaseRequestInterface } from 'database-ql'\n\nexport interface RequestInterface extends BaseRequestInterface {\n  request(url: string, data: any, options?: any): Promise<any>\n}\n\nexport enum EnvironmentType {\n  H5 = 'h5',\n  WX_MP = 'wxmp',\n  UNI_APP = 'uniapp',\n  TARO = 'taro',\n}\n\ntype GetAccessTokenFuncType = () => string\n\nexport interface CloudOptions {\n  /**\n   * `laf` 应用服务的地址，如： \"https://APPID.lafyun.com\"\n   * @tip 后面 `不要` 以 `/` 结尾\n   */\n  baseUrl?: string\n\n  /**\n   * 数据库访问代理的入口地址， 如： `/proxy/app`，`/proxy/admin`\n   */\n  dbProxyUrl?: string\n\n  /**\n   * 获取访问令牌的函数\n   */\n  getAccessToken?: GetAccessTokenFuncType\n\n  /**\n   * 请求头\n   */\n  headers?: object\n  /**\n   * 请求超时时间\n   */\n  timeout?: number\n\n  /**\n   * 执行环境，默认为浏览器和 Node.js 环境\n   */\n  environment?: EnvironmentType\n\n  /**\n   * 用户自定义请求类，默认此项为空，实际请求类由 `environment` 决定。\n   * 如果使用了自定义请求类，则会忽略 `environment` 的值；\n   * 自定义请求类需要 实现 `RequestInterface` 接口，一般建议直接继承 `class Request`，重写父类部分方法即可。\n   * \n   * ```js\n   * import { Request } from 'laf'\n   * class MyRequest extends Request {\n   *  async request(url, data) {\n   *    const res = await super.request(url, data)\n   *    // do your own logics\n        return res\n   *  }\n   * }\n   * ```\n   */\n  requestClass?: any\n\n  /**\n   * Mongodb 主键为 '_id', 使用 MySQL 时可将此键设为 id\n   */\n  primaryKey?: string\n}\n\nexport interface UploadFileOption {\n  /**\n   * 开发者服务器 url\n   */\n  url: string\n  /**\n   * 文件类型，image/video/audio，仅支付宝小程序，且必填。\n   * - image: 图像\n   * - video: 视频\n   * - audio: 音频\n   */\n  fileType?: 'image' | 'video' | 'audio'\n  /**\n   * 要上传的文件对象\n   */\n  file?: File\n  /**\n   * 要上传文件资源的路径\n   */\n  filePath?: string\n  /**\n   * 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容\n   */\n  name?: string\n  /**\n   * 需要上传的文件列表。\n   */\n  files?: UploadFile[]\n  /**\n   * HTTP 请求 Header, header 中不能设置 Referer\n   */\n  header?: any\n  /**\n   * HTTP 请求中其他额外的 form data\n   */\n  formData?: any\n  /**\n   * 超时时间，单位 ms\n   */\n  timeout?: number\n}\n\nexport interface UploadFile {\n  /**\n   * multipart 提交时，表单的项目名，默认为 file，如果 name 不填或填的值相同，可能导致服务端读取文件时只能读取到一个文件。\n   */\n  name?: string\n  /**\n   * 要上传的文件对象\n   */\n  file?: File\n  /**\n   * 要上传文件资源的路径\n   */\n  uri?: string\n}\n"
  },
  {
    "path": "packages/client-sdk/tests/_app.js",
    "content": "const express = require('express')\nconst { Entry, MongoAccessor } = require('less-api')\nconst util = require('util')\n\nconst rules = {\n  categories: {\n    '.read': true,\n    '.update': {\n      condition: true,\n      multi: true,\n    },\n    '.add': true,\n    '.remove': true,\n  },\n}\n\nconst app = new express()\napp.use(express.json())\n\n// init the less-api Entry & Db Accessor\nconst dbOptions = {\n  useNewUrlParser: true,\n  useUnifiedTopology: true,\n}\nconst accessor = new MongoAccessor(\n  'mydb',\n  'mongodb://localhost:27017',\n  dbOptions\n)\nconst entry = new Entry(accessor)\nentry.init()\nentry.loadRules(rules)\n\napp.post('/entry', async (req, res) => {\n  const { role, userId } = parseToken(req.headers['authorization'])\n\n  // console.log({body: req.body})\n  // parse params\n  const params = entry.parseParams(req.body)\n  console.log(util.inspect(params, false, null, true /* enable colors */))\n\n  const injections = {\n    $role: role,\n    $userid: userId,\n  }\n\n  // validate query\n  const result = await entry.validate(params, injections)\n  if (result.errors) {\n    return res.send({\n      code: 1,\n      error: result.errors,\n    })\n  }\n\n  // execute query\n  const data = await entry.execute(params)\n  return res.send({\n    code: 0,\n    data,\n  })\n})\n\napp.listen(8080, () => console.log('listening on 8080'))\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nfunction parseToken(_token) {\n  return {\n    role: 'admin',\n    userId: 123,\n  }\n}\n"
  },
  {
    "path": "packages/client-sdk/tests/http/add_test.js",
    "content": "const assert = require('assert')\nconst client = require('../../dist/commonjs/index')\nconst config = require('./config')\n\ndescribe('client-sdk(http): db.add()', function () {\n  it('add one should be ok', async () => {\n    const cloud = client.init({\n      dbProxyUrl: config.dbProxyUrl,\n      getAccessToken: config.getAccessToken,\n    })\n\n    const result = await cloud.database().collection('categories').add({\n      title: 'title-add-2',\n      content: 'content-add-2',\n    })\n\n    console.log({ result })\n    const { data } = await cloud\n      .database()\n      .collection('categories')\n      .doc(result.id)\n      .get()\n\n    assert.ok(result.id)\n    assert.equal(data._id, result.id)\n  })\n})\n"
  },
  {
    "path": "packages/client-sdk/tests/http/config.js",
    "content": "const config = {\n  dbProxyUrl:\n    'https://6217ba84-5f56-45b1-a46b-7fb69a7ea1e9.lafyun.com/proxy/app',\n  getAccessToken: () => '',\n}\n\nmodule.exports = config\n"
  },
  {
    "path": "packages/client-sdk/tests/http/read_test.js",
    "content": "const assert = require('assert')\nconst client = require('../../dist/commonjs/index')\nconst config = require('./config')\n\ndescribe('client-sdk(http): db.get()', function () {\n  it('read empty should be ok', async () => {\n    const cloud = client.init({\n      dbProxyUrl: config.dbProxyUrl,\n      getAccessToken: config.getAccessToken,\n    })\n\n    const res = await cloud.database().collection('categories').get()\n\n    assert.ok(res.data instanceof Array)\n  })\n})\n"
  },
  {
    "path": "packages/client-sdk/tests/http/update_test.js",
    "content": "/* eslint-disable indent */\nconst assert = require('assert')\nconst client = require('../../dist/commonjs/index')\nconst config = require('./config')\ndescribe('client-sdk(http): db::update()', function () {\n  const cloud = client.init({\n    dbProxyUrl: config.dbProxyUrl,\n    getAccessToken: config.getAccessToken,\n  })\n\n  let result = null\n  before(async () => {\n    result = await cloud.database().collection('categories').add({\n      title: 'title-update-666',\n      content: 'content-update-666',\n      age: 0,\n    })\n\n    assert.ok(result.id)\n  })\n\n  it('update one should be ok', async () => {\n    await cloud.database().collection('categories').doc(result.id).update({\n      title: 'updated-title',\n    })\n\n    const { data } = await cloud\n      .database()\n      .collection('categories')\n      .doc(result.id)\n      .get()\n\n    console.log(data)\n    assert.equal(data._id, result.id)\n    assert.equal(data.title, 'updated-title')\n  })\n\n  it('update with $operator should be ok', async () => {\n    const db = cloud.database()\n    const _ = db.command\n\n    await db\n      .collection('categories')\n      .doc(result.id)\n      .update({\n        title: 'updated-title',\n        age: _.inc(1),\n        content: _.remove(),\n      })\n\n    const { data } = await cloud\n      .database()\n      .collection('categories')\n      .doc(result.id)\n      .get()\n\n    assert.equal(data._id, result.id)\n    assert.equal(data.title, 'updated-title')\n    assert.equal(data.age, 1)\n    assert.equal(data.content, undefined)\n  })\n\n  it('update many should be ok', async () => {\n    const db = cloud.database()\n\n    await db.collection('categories').where({}).update(\n      {\n        updatedField: 'content-add-3',\n      },\n      { multi: true }\n    )\n\n    const { data } = await cloud.database().collection('categories').get()\n\n    data.forEach((d) => {\n      assert.equal(d.updatedField, 'content-add-3')\n    })\n  })\n\n  it('set one should be ok', async () => {\n    const db = cloud.database()\n\n    await db.collection('categories').doc(result.id).set({\n      setField: 'content-set-1',\n    })\n\n    const { data } = await cloud\n      .database()\n      .collection('categories')\n      .doc(result.id)\n      .get()\n\n    assert.equal(data._id, result.id)\n    assert.equal(data.setField, 'content-set-1')\n  })\n})\n"
  },
  {
    "path": "packages/client-sdk/tests/units/cloud_test.js",
    "content": "const assert = require('assert')\nconst client = require('../../dist/commonjs/index')\nconst Db = client.Db\n\nfunction getAccessToken() {\n  return 'test-token-xxx'\n}\n\ndescribe('client-sdk(unit): Cloud', function () {\n  const config = {\n    dbProxyUrl: 'http://localhost:8080/entry',\n    getAccessToken,\n  }\n\n  it('init() should be ok', () => {\n    const cloud = client.init(config)\n\n    assert.ok(cloud instanceof client.Cloud)\n    assert.equal(cloud.config.dbProxyUrl, config.dbProxyUrl)\n    assert.equal(cloud.config.getAccessToken, getAccessToken)\n  })\n\n  it('database() should be ok', () => {\n    const cloud = client.init(config)\n    const db = cloud.database()\n\n    assert.ok(db instanceof Db)\n  })\n})\n"
  },
  {
    "path": "packages/client-sdk/tsconfig.esm.json",
    "content": "{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"charset\": \"utf8\",\n    \"declaration\": true,\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true,\n    \"importHelpers\": false,\n    \"module\": \"es6\",\n    // \"declarationDir\": \"types\",\n    \"noEmitOnError\": false,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": false,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"outDir\": \"dist/esm\",\n    \"pretty\": true,\n    \"removeComments\": false,\n    \"stripInternal\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true,\n    \"moduleResolution\": \"node\",\n    \"target\": \"es5\",\n    \"lib\": [\n      \"es2015\",\n      \"es6\",\n      \"dom\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*\"\n  ],\n  \"exclude\": [\n    // \"node_modules\",\n    \"test\"\n  ]\n}"
  },
  {
    "path": "packages/client-sdk/tsconfig.json",
    "content": "{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"declaration\": true,\n    \"declarationMap\": false,\n    \"sourceMap\": true,\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true,\n    \"importHelpers\": false,\n    \"module\": \"commonjs\",\n    // \"declarationDir\": \"types\",\n    \"noEmitOnError\": false,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": false,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"outDir\": \"dist/commonjs\",\n    \"pretty\": true,\n    \"removeComments\": false,\n    \"stripInternal\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true,\n    \"target\": \"es2017\",\n    \"lib\": [\n      \"es2015\",\n      \"es6\",\n      \"dom\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*\"\n  ],\n  \"exclude\": [\n    \"tests\"\n  ]\n}"
  },
  {
    "path": "packages/client-sdk/webpack.config.js",
    "content": "/* eslint-disable indent */\nconst path = require('path')\nconst HtmlWebpackPlugin = require('html-webpack-plugin')\nconst { CleanWebpackPlugin } = require('clean-webpack-plugin')\n\nmodule.exports = {\n  entry: {\n    'laf-client': './src/index-bundle.ts',\n  },\n  devtool: 'inline-source-map',\n  target: 'web',\n  module: {\n    rules: [\n      {\n        test: /\\.tsx?$/,\n        use: 'ts-loader',\n        exclude: /node_modules/,\n      },\n    ],\n  },\n  resolve: {\n    extensions: ['.ts', '.js'],\n  },\n  plugins: [\n    new CleanWebpackPlugin(),\n    new HtmlWebpackPlugin({\n      title: 'Output Management',\n    }),\n  ],\n  output: {\n    filename: '[name].bundle.js',\n    path: path.resolve(__dirname, 'dist'),\n    // libraryTarget: 'umd'\n  },\n}\n"
  },
  {
    "path": "packages/cloud-sdk/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"laf/package\"\n}"
  },
  {
    "path": "packages/cloud-sdk/.npmignore",
    "content": "./node_modules\n.DS_Store\nsrc\ntests"
  },
  {
    "path": "packages/cloud-sdk/README.md",
    "content": "\n\n\n> @lafjs/cloud is used in cloud function, exposing resource objects to cloud function.\n\n```ts\nimport cloud from '@lafjs/cloud'\n\nexports.main = async function (ctx) {\n\n  const db = cloud.database()\n  const res = await db.collection('messages').get()\n\n  return res.data\n}\n```"
  },
  {
    "path": "packages/cloud-sdk/package.json",
    "content": "{\n  \"name\": \"@lafjs/cloud\",\n  \"version\": \"1.0.0\",\n  \"description\": \"The cloud sdk for laf cloud function\",\n  \"main\": \"dist/index.js\",\n  \"scripts\": {\n    \"watch\": \"tsc -w\",\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\",\n    \"lint\": \"eslint . --fix --ext .ts --ext .js\",\n    \"build\": \"tsc -p tsconfig.json\",\n    \"prepublishOnly\": \"npm run build\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/labring/laf.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/labring/laf/issues\"\n  },\n  \"homepage\": \"https://github.com/labring/laf#readme\",\n  \"keywords\": [\n    \"laf\"\n  ],\n  \"author\": \"maslow (wangfugen@126.com)\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"typescript\": \"^4.9.4\"\n  },\n  \"dependencies\": {\n    \"@aws-sdk/client-s3\": \"^3.468.0\",\n    \"@aws-sdk/client-sts\": \"^3.468.0\",\n    \"@aws-sdk/s3-request-presigner\": \"^3.468.0\",\n    \"@types/express\": \"^4.17.15\",\n    \"@types/ws\": \"^8.5.3\",\n    \"axios\": \"^1.2.1\",\n    \"database-proxy\": \"^1.0.0\",\n    \"mongodb\": \"^5.9.2\",\n    \"ws\": \"^8.11.0\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,js}\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "packages/cloud-sdk/src/cloud.interface.ts",
    "content": "import { AxiosStatic } from 'axios'\nimport * as mongodb from 'mongodb'\nimport { Db } from 'database-proxy'\nimport { WebSocket } from 'ws'\nimport { FunctionContext } from './function.interface'\nimport { CloudStorage } from './storage'\n\nexport type InvokeFunctionType = (\n  name: string,\n  param?: FunctionContext\n) => Promise<any>\nexport type GetTokenFunctionType = (payload: any, secret?: string) => string\nexport type ParseTokenFunctionType = (\n  token: string,\n  secret?: string\n) => any | null\n\nexport interface MongoDriverObject {\n  client: mongodb.MongoClient\n  db: mongodb.Db\n}\n\nexport interface CloudSdkInterface {\n  /**\n   * Sending an HTTP request is actually an Axios instance. You can refer to the Axios documentation directly.\n   * @deprecated this is deprecated and will be removed in future, use the global `fetch()` directly @see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch\n   * @see https://axios-http.com/docs/intro\n   */\n  fetch?: AxiosStatic\n\n  /**\n   * Get a database-ql instance\n   * @deprecated use `mongo.db` instead\n   */\n  database(): Db\n\n  /**\n   * Invoke cloud function\n   * @deprecated Just import the cloud function directly, and then call it\n   */\n  invoke: InvokeFunctionType\n\n  /**\n   * Cloud function global memory `shared` object, which can share data across multiple requests and different cloud functions\n   * 1. Some global configurations can be initialized into `shared`, such as 3rd-party API configuration\n   * 2. You can share some common methods, such as checkPermission(), to improve the performance of cloud functions\n   * 3. It can cache hot data and is recommended to use it in a small amount (this object is allocated in the node VM heap because of the memory limit of the node VM heap)\n   * @deprecated this is deprecated and will be removed in future\n   */\n  shared: Map<string, any>\n\n  /**\n   * Generate a JWT Token, if don't provide `secret` fields, use current server secret key to do signature\n   */\n  getToken: GetTokenFunctionType\n\n  /**\n   * Parse a JWT Token, if don't provide `secret` fields, use current server secret key to verify signature\n   */\n  parseToken: ParseTokenFunctionType\n\n  /**\n   * The mongodb instance of MongoDB node.js native driver.\n   * @see https://www.mongodb.com/docs/drivers/node/current/quick-reference/\n   *\n   * #### Transaction operations\n   * ```js\n   *  const session = mongo.client.startSession()\n   *  try {\n   *       await session.withTransaction(async () => {\n   *          await mongo.db.collection('xxx').updateOne({}, { session })\n   *          await mongo.db.collection('yyy').deleteMany({}, { session })\n   *       })\n   *  } finally {\n   *       await session.endSession()\n   *  }\n   * ```\n   * #### Indexes operations\n   * ```js\n   *    await mongo.db.collection('users').createIndex('username', { unique: true })\n   * ```\n   * #### Aggregation operations\n   * ```js\n   *    await mongo.db.collection('users')\n   *      .aggregate([])\n   *      .toArray()\n   * ```\n   */\n  mongo: MongoDriverObject\n\n  /**\n   * Websocket connection list\n   */\n  sockets: Set<WebSocket>\n\n  /**\n   * Current app id\n   */\n  appid: string\n\n  /**\n   * @deprecated this is deprecated and will be removed in future, use `process.env` instead\n   */\n  env: any\n\n  /**\n   * Cloud storage instance\n   */\n  storage: CloudStorage\n}\n"
  },
  {
    "path": "packages/cloud-sdk/src/cloud.ts",
    "content": "import { Db } from 'database-proxy'\nimport request, { AxiosStatic } from 'axios'\nimport {\n  CloudSdkInterface,\n  GetTokenFunctionType,\n  InvokeFunctionType,\n  MongoDriverObject,\n  ParseTokenFunctionType,\n} from './cloud.interface'\nimport { WebSocket } from 'ws'\nimport { CloudStorage } from './storage'\n\nexport class Cloud implements CloudSdkInterface {\n  /**\n   * This method should be overwrite\n   * @returns\n   */\n  static create: () => CloudSdkInterface\n\n  private _cloud: CloudSdkInterface\n\n  private get cloud(): CloudSdkInterface {\n    if (globalThis.createCloudSdk && !Cloud.create) {\n      Cloud.create = globalThis.createCloudSdk\n    }\n\n    if (!this._cloud) {\n      this._cloud = Cloud.create()\n    }\n    return this._cloud\n  }\n\n  /**\n   * Sending an HTTP request is actually an Axios instance. You can refer to the Axios documentation directly.\n   * @deprecated this is deprecated and will be removed in future, use the global `fetch()` directly @see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch\n   * @see https://axios-http.com/docs/intro\n   */\n  fetch: AxiosStatic = request\n\n  database(): Db {\n    return this.cloud.database()\n  }\n\n  /**\n   * Invoke cloud function\n   * @deprecated Just import the cloud function directly, and then call it\n   */\n  invoke: InvokeFunctionType = (name: string, param?: any) => {\n    return this.cloud.invoke(name, param)\n  }\n\n  getToken: GetTokenFunctionType = (param: any) => {\n    return this.cloud.getToken(param)\n  }\n\n  parseToken: ParseTokenFunctionType = (token: string) => {\n    return this.cloud.parseToken(token)\n  }\n\n  get shared(): Map<string, any> {\n    return this.cloud.shared\n  }\n\n  get mongo(): MongoDriverObject {\n    return this.cloud.mongo\n  }\n\n  get sockets(): Set<WebSocket> {\n    return this.cloud.sockets\n  }\n\n  get appid(): string {\n    return this.cloud.appid\n  }\n\n  /**\n   * @deprecated this is deprecated and will be removed in future, use `process.env` instead\n   */\n  get env() {\n    return this.cloud.env\n  }\n\n  storage: CloudStorage = new CloudStorage()\n}\n"
  },
  {
    "path": "packages/cloud-sdk/src/function.interface.ts",
    "content": "import { IncomingHttpHeaders } from 'http'\nimport { Request, Response } from 'express'\nimport WebSocket = require('ws')\n\nexport type RequireFuncType = (module: string) => any\n\n/**\n * ctx passed to function\n */\nexport interface FunctionContext {\n  files?: File[]\n  headers?: IncomingHttpHeaders\n  query?: any\n  body?: any\n  params?: any\n  /**\n   * @deprecated use user instead\n   */\n  auth?: any\n  user?: any\n  requestId?: string\n  method?: string\n  socket?: WebSocket\n  request?: Request\n  response?: Response\n  __function_name?: string\n  [key: string]: any\n}\n\n/**\n * Result object returned by the running function\n */\nexport interface FunctionResult {\n  data?: any\n  error?: Error\n  time_usage: number\n}\n\nexport enum FunctionStatus {\n  DISABLED = 0,\n  ENABLED = 1,\n}\n\n/**\n * Model CloudFunctionSource\n *\n */\nexport type CloudFunctionSource = {\n  code: string\n  compiled: string | null\n  uri: string | null\n  version: number\n  hash: string | null\n  lang: string | null\n}\n\n/**\n * cloud function data structure\n */\nexport interface ICloudFunctionData {\n  id: string\n  appid: string\n  name: string\n  source: CloudFunctionSource\n  desc: string\n  tags: string[]\n  websocket: boolean\n  methods: string[]\n  createdAt: Date\n  updatedAt: Date\n  createdBy: string\n}\n\n/** Object containing file metadata and access information. */\ninterface File {\n  /** Name of the form field associated with this file. */\n  fieldname: string\n  /** Name of the file on the uploader's computer. */\n  originalname: string\n  /**\n   * Value of the `Content-Transfer-Encoding` header for this file.\n   * @deprecated since July 2015\n   * @see RFC 7578, Section 4.7\n   */\n  encoding: string\n  /** Value of the `Content-Type` header for this file. */\n  mimetype: string\n  /** Size of the file in bytes. */\n  size: number\n  /** `DiskStorage` only: Directory to which this file has been uploaded. */\n  destination: string\n  /** `DiskStorage` only: Name of this file within `destination`. */\n  filename: string\n  /** `DiskStorage` only: Full path to the uploaded file. */\n  path: string\n}\n"
  },
  {
    "path": "packages/cloud-sdk/src/index.ts",
    "content": "import { Cloud } from './cloud'\n\nexport * from './cloud.interface'\nexport * from './function.interface'\nexport * from './cloud'\n\nconst cloud = new Cloud()\n\nexport default cloud\n"
  },
  {
    "path": "packages/cloud-sdk/src/storage.ts",
    "content": "import * as assert from 'node:assert'\nimport { Readable } from 'node:stream'\nimport { IncomingMessage } from 'node:http'\nimport {\n  S3,\n  GetObjectCommandInput,\n  PutObjectCommandInput,\n  DeleteObjectCommandInput,\n  ListObjectsCommandInput,\n  PutObjectCommand,\n  GetObjectCommand,\n  GetObjectCommandOutput,\n  PutObjectCommandOutput,\n  DeleteObjectCommandOutput,\n  ListObjectsCommandOutput,\n} from '@aws-sdk/client-s3'\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner'\nimport { IS_SEALAF } from './util'\n\nexport type NodeJsRuntimeStreamingBlobPayloadOutputTypes = SdkStream<\n  Readable | IncomingMessage\n>\nexport type SdkStream<BaseStream> = BaseStream & SdkStreamMixin\n\nexport interface SdkStreamMixin {\n  transformToByteArray: () => Promise<Uint8Array>\n  transformToString: (encoding?: string) => Promise<string>\n  transformToWebStream: () => ReadableStream\n}\n\nexport interface ResponseMetadata {\n  /**\n   * The status code of the last HTTP response received for this operation.\n   */\n  httpStatusCode?: number\n  /**\n   * A unique identifier for the last request sent for this operation. Often\n   * requested by AWS service teams to aid in debugging.\n   */\n  requestId?: string\n  /**\n   * A secondary identifier for the last request sent. Used for debugging.\n   */\n  extendedRequestId?: string\n  /**\n   * A tertiary identifier for the last request sent. Used for debugging.\n   */\n  cfId?: string\n  /**\n   * The number of times this operation was attempted.\n   */\n  attempts?: number\n  /**\n   * The total amount of time (in milliseconds) that was spent waiting between\n   * retry attempts.\n   */\n  totalRetryDelay?: number\n}\n\nexport interface ExtendGetObjectCommandOutput extends GetObjectCommandOutput {\n  Body: NodeJsRuntimeStreamingBlobPayloadOutputTypes\n  $metadata: ResponseMetadata\n}\n\nexport interface ExtendPutObjectCommandOutput extends PutObjectCommandOutput {\n  $metadata: ResponseMetadata\n}\n\nexport interface ExtendDeleteObjectCommandOutput\n  extends DeleteObjectCommandOutput {\n  $metadata: ResponseMetadata\n}\n\nexport interface ExtendListObjectsCommandOutput\n  extends ListObjectsCommandOutput {\n  $metadata: ResponseMetadata\n}\n\n/**\n * `ICloudStorage` is an interface for cloud storage services.\n */\nexport class CloudStorage {\n  protected _externalS3Client: S3\n  protected _internalS3Client: S3\n\n  protected get appid() {\n    assert(process.env.APPID, 'APPID is required')\n    return process.env.APPID\n  }\n\n  public get externalEndpoint() {\n    assert(\n      process.env.OSS_EXTERNAL_ENDPOINT,\n      'OSS_EXTERNAL_ENDPOINT is required'\n    )\n    return process.env.OSS_EXTERNAL_ENDPOINT\n  }\n\n  public get internalEndpoint() {\n    assert(\n      process.env.OSS_INTERNAL_ENDPOINT,\n      'OSS_INTERNAL_ENDPOINT is required'\n    )\n    return process.env.OSS_INTERNAL_ENDPOINT\n  }\n\n  /**\n   * Get external S3 client of `@aws-sdk/client-s3`.\n   * You can use this client to access the bucket through the external endpoint.\n   * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/\n   * @returns\n   */\n  public getExternalS3Client() {\n    if (!this._externalS3Client) {\n      assert(\n        process.env.OSS_EXTERNAL_ENDPOINT,\n        'OSS_EXTERNAL_ENDPOINT is required'\n      )\n      assert(process.env.OSS_REGION, 'OSS_REGION is required')\n      assert(process.env.OSS_ACCESS_KEY, 'OSS_ACCESS_KEY is required')\n      assert(process.env.OSS_ACCESS_SECRET, 'OSS_ACCESS_SECRET is required')\n\n      this._externalS3Client = new S3({\n        endpoint: process.env.OSS_EXTERNAL_ENDPOINT,\n        region: process.env.OSS_REGION,\n        credentials: {\n          accessKeyId: process.env.OSS_ACCESS_KEY,\n          secretAccessKey: process.env.OSS_ACCESS_SECRET,\n        },\n        forcePathStyle: true,\n      })\n    }\n\n    return this._externalS3Client\n  }\n\n  /**\n   * Get internal S3 client of `@aws-sdk/client-s3`.\n   * You can use this client to access the bucket through the internal endpoint.\n   * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/\n   */\n  public getInternalS3Client() {\n    if (!this._internalS3Client) {\n      assert(\n        process.env.OSS_INTERNAL_ENDPOINT,\n        'OSS_INTERNAL_ENDPOINT is required'\n      )\n      assert(process.env.OSS_REGION, 'OSS_REGION is required')\n      assert(process.env.OSS_ACCESS_KEY, 'OSS_ACCESS_KEY is required')\n      assert(process.env.OSS_ACCESS_SECRET, 'OSS_ACCESS_SECRET is required')\n\n      this._internalS3Client = new S3({\n        endpoint: process.env.OSS_INTERNAL_ENDPOINT,\n        region: process.env.OSS_REGION,\n        credentials: {\n          accessKeyId: process.env.OSS_ACCESS_KEY,\n          secretAccessKey: process.env.OSS_ACCESS_SECRET,\n        },\n        forcePathStyle: true,\n      })\n    }\n\n    return this._internalS3Client\n  }\n\n  /**\n   * Get bucket by bucket name\n   * @returns\n   */\n  bucket(bucketName: string): CloudStorageBucket {\n    assert(bucketName, 'bucketName is required')\n    if (IS_SEALAF || bucketName.startsWith(`${this.appid}-`)) {\n      return new CloudStorageBucket(this, bucketName)\n    }\n    const name = `${this.appid}-${bucketName}`\n    return new CloudStorageBucket(this, name)\n  }\n}\n\nexport class CloudStorageBucket {\n  protected readonly storage: CloudStorage\n  readonly name: string\n\n  constructor(storage: CloudStorage, name: string) {\n    assert(storage, 'storage is required')\n    assert(name, 'name is required')\n\n    this.storage = storage\n    this.name = name\n  }\n\n  /**\n   * Read file from bucket\n   * @param filename filename is the key of the object, it can contain subdirectories, e.g. `a/b/c.txt`\n   * @param options\n   * @returns\n   * @see https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html\n   */\n  public async readFile(\n    filename: string,\n    options?: Omit<GetObjectCommandInput, 'Bucket' | 'Key'>\n  ) {\n    assert(filename, 'filename is required')\n    const internal = this.storage.getInternalS3Client()\n\n    const args: GetObjectCommandInput = {\n      Bucket: this.name,\n      Key: filename,\n      ...options,\n    }\n\n    const res = await internal.getObject(args)\n    return res as ExtendGetObjectCommandOutput\n  }\n\n  /**\n   * Write file to bucket\n   * @param filename filename is the key of the object, it can contain subdirectories, e.g. `a/b/c.txt`\n   * @param body body is the content of the object, it can be a string, a Buffer, a Readable stream, or a Blob\n   * @param options\n   * @returns\n   * @see https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html\n   */\n  public async writeFile(\n    filename: string,\n    body: string | Blob | Buffer | Uint8Array | Readable,\n    options?: Omit<PutObjectCommandInput, 'Bucket' | 'Key' | 'Body'>\n  ) {\n    assert(filename, 'key is required')\n    assert(body, 'body is required')\n    const external = this.storage.getInternalS3Client()\n\n    const args: PutObjectCommandInput = {\n      Bucket: this.name,\n      Key: filename,\n      Body: body,\n      ...options,\n    }\n    const res = await external.putObject(args)\n    return res as ExtendPutObjectCommandOutput\n  }\n\n  /**\n   * Delete file from bucket\n   * @param filename filename is the key of the object, it can contain subdirectories, e.g. `a/b/c.txt`\n   * @param options\n   * @returns\n   * @see https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html\n   */\n  public async deleteFile(\n    filename: string,\n    options?: Omit<DeleteObjectCommandInput, 'Bucket' | 'Key'>\n  ) {\n    assert(filename, 'filename is required')\n    const external = this.storage.getInternalS3Client()\n\n    const args: DeleteObjectCommandInput = {\n      Bucket: this.name,\n      Key: filename,\n      ...options,\n    }\n    const res = await external.deleteObject(args)\n    return res as ExtendDeleteObjectCommandOutput\n  }\n\n  /**\n   * List files in bucket\n   * @param prefix prefix is the key prefix of the object, it can contain subdirectories, e.g. `a/b/`\n   * @param options\n   * @returns\n   * @see https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html\n   */\n  public async listFiles(options?: Omit<ListObjectsCommandInput, 'Bucket'>) {\n    const internal = this.storage.getInternalS3Client()\n\n    const args: ListObjectsCommandInput = {\n      Bucket: this.name,\n      ...options,\n    }\n    const res = await internal.listObjects(args)\n    return res as ExtendListObjectsCommandOutput\n  }\n\n  /**\n   * Get external url of the file.\n   * You can ONLY use this url to access file from `readonly` bucket or `public` bucket.\n   * Use `getDownloadUrl()` to get a signed url for `private` bucket.\n   * @param filename filename is the key of the object, it can contain subdirectories, e.g. `a/b/c.txt`\n   * @returns\n   */\n  public externalUrl(filename: string) {\n    assert(filename, 'filename is required')\n    return `${this.storage.externalEndpoint}/${this.name}/${filename}`\n  }\n\n  /**\n   * Get internal url of the file.\n   * You can ONLY use this url to access file from `readonly` bucket or `public` bucket.\n   * Use `getDownloadUrl()` to get a signed url for `private` bucket.\n   * @param filename filename is the key of the object, it can contain subdirectories, e.g. `a/b/c.txt`\n   * @returns\n   */\n  public internalUrl(filename: string) {\n    assert(filename, 'filename is required')\n    return `${this.storage.internalEndpoint}/${this.name}/${filename}`\n  }\n\n  /**\n   * Get upload url, you can use this url to upload file directly to bucket\n   * @param filename filename is the key of the object, it can contain subdirectories, e.g. `a/b/c.txt`\n   * @param expiresIn expiresIn is the seconds of the signed url, default is `3600` seconds which is 1 hour\n   * @param options\n   * @returns\n   */\n  public async getUploadUrl(\n    filename: string,\n    expiresIn = 3600,\n    options?: Omit<PutObjectCommandInput, 'Bucket' | 'Key'>\n  ) {\n    assert(filename, 'filename is required')\n    const external = this.storage.getExternalS3Client()\n\n    const args = new PutObjectCommand({\n      Bucket: this.name,\n      Key: filename,\n      ...options,\n    })\n\n    const url = await getSignedUrl(external, args, { expiresIn: expiresIn })\n    return url\n  }\n\n  /**\n   * Get download url, you can use this url to download file directly from bucket\n   * @param filename filename is the key of the object, it can contain subdirectories, e.g. `a/b/c.txt`\n   * @param expiresIn expiresIn is the seconds of the signed url, default is `3600` seconds which is 1 hour\n   * @param options\n   * @returns\n   */\n  public async getDownloadUrl(\n    filename: string,\n    expiresIn = 3600,\n    options?: Omit<GetObjectCommandInput, 'Bucket' | 'Key'>\n  ) {\n    assert(filename, 'filename is required')\n    const external = this.storage.getExternalS3Client()\n\n    const args = new GetObjectCommand({\n      Bucket: this.name,\n      Key: filename,\n      ...options,\n    })\n\n    const url = await getSignedUrl(external, args, { expiresIn: expiresIn })\n    return url\n  }\n}\n"
  },
  {
    "path": "packages/cloud-sdk/src/util.ts",
    "content": "export const IS_SEALAF = process.env.IS_SEALAF === 'true'\n"
  },
  {
    "path": "packages/cloud-sdk/tsconfig.json",
    "content": "{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"charset\": \"utf8\",\n    \"declaration\": true,\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true,\n    \"importHelpers\": false,\n    \"module\": \"commonjs\",\n    \"declarationMap\": true,\n    // \"declarationDir\": \"types\",\n    \"noEmitOnError\": false,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": false,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"outDir\": \"dist\",\n    \"pretty\": true,\n    \"removeComments\": false,\n    \"stripInternal\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true,\n    \"target\": \"es2017\",\n    \"alwaysStrict\": true,\n    \"lib\": [\n      \"es2015\",\n      \"es6\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*\",\n  ],\n  \"exclude\": [\n    \"tests\",\n  ]\n}"
  },
  {
    "path": "packages/database-proxy/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"laf/package\"\n}"
  },
  {
    "path": "packages/database-proxy/.npmignore",
    "content": "node_modules\ncoverage\n.nyc_output\n.DS_Store\nDS_Store\nsrc\ntests\ndocs"
  },
  {
    "path": "packages/database-proxy/README.md",
    "content": "\n## 介绍\n\n    `database-proxy` 是一个「超级API」，一个 API 替代服务端 90% 的传统 APIs。\n\n    通过一套「访问控制规则」配置数据库访问，让前端开发者“安全直连”数据库，再也不需要和服务端对接口了！\n\n    客户端使用 `laf-client-sdk` ，像在服务端操作数据库那样，在客户端直接读写相应的数据即可。\n\n## 使用\n\n```sh\n    npm install database-proxy\n```\n\n### 服务端代码示例\n\n```js\nconst app = require('express')()\nconst { Proxy, MongoAccessor, Policy } = require('database-proxy')\nconst { MongoClient } = require('mongodb')\n\napp.use(express.json())\n\n// design the access control policy rules\nconst rules = {\n    categories: {\n        \"read\": true,\n        \"update\": \"!uid\",\n        \"add\": \"!uid\",\n        \"remove\": \"!uid\"\n    }\n}\n\nconst client = new MongoClient('mongodb://localhost:27017')\nclient.connect()\n\n// create an accessor\nconst accessor = new MongoAccessor(client)\n\n\n// create a policy\nconst policy = new Policy(accessor)\npolicy.load(rules)\n\n// create an proxy\nconst proxy = new Proxy(accessor, policy)\n\napp.post('/proxy', async (req, res) => {\n  const { uid } = parseToken(req.headers['authorization'])\n\n  const injections = {\n    uid: uid\n  }\n\n  // parse params\n  const params = proxy.parseParams(req.body)\n\n  // validate query\n  const result = await proxy.validate(params, injections)\n  if (result.errors) {\n    return res.send({\n      code: 1,\n      error: result.errors\n    })\n  }\n\n  // execute query\n  const data = await proxy.execute(params)\n  return res.send({\n    code: 0,\n    data\n  })\n})\n\napp.listen(8080, () => console.log('listening on 8080'))\n```\n\n### 客户端使用\n\n```sh\n    npm install laf-client-sdk\n```\n\n```js\nconst cloud = require('laf-client-sdk').init({\n    dbProxyUrl: 'http://localhost:8080/proxy',\n    getAccessToken: () => localStorage.getItem('access_token')\n})\n\nconst db = cloud.database()\n\n// 查询文档\nconst res = await db.collection('categories').get()\n\n// 条件查询\nconst res = await db.collection('articles')\n    .where({status: 'published'})\n    .orderBy({createdAt: 'asc'})\n    .offset(0)\n    .limit(20)\n    .get()\n\n// 更新\nconst res = await db.collection('articles')\n    .doc('the-doc-id').update({\n        title: 'new-title'\n    })\n```\n\n更多使用参考[客户端使用文档](./packages/laf-client-sdk/README.md)\n\n### 数据访问安全规则示例\n\n#### 简单示例 1：简单博客\n\n```json\n{\n    \"categories\": {\n        \"read\": true,\n        \"update\": \"$admin === true\",\n        \"add\": \"$admin === true\",\n        \"remove\": \"$admin === true\"\n    },\n    \"articles\": {\n        \"read\": true,\n        \"update\": \"$admin === true\",\n        \"add\": \"$admin === true\",\n        \"remove\": \"$admin === true\"\n    }\n}\n```\n\n#### 简单示例 2：多用户博客\n\n```json\n{\n    \"articles\": {\n        \"read\": true,\n        \"update\": \"$userid && $userid === query.createdBy\",\n        \"add\": \"$userid && data.createdBy === $userid\",\n        \"remove\": \"$userid === query.createBy || $admin === true\"\n    }\n}\n```\n\n#### 复杂示例 1： 数据验证\n\n```json\n{\n    \"articles\": {\n        \"add\": {\n            \"condition\": \"$userid && data.createdBy === $userid\"\n        },\n        \"remove\": \"$userid === query.createBy || $admin === true\",\n        \"$schema\": {\n            \"title\": {\"length\": [1, 64], \"required\": true},\n            \"content\": {\"length\": [1, 4096]},\n            \"like\": { \"number\": [0,], \"default\": 0}\n        }\n    }\n}\n```\n\n#### 复杂示例 2：更高级的数据验证\n\n> 场景介绍： 用户之间站内消息表访问规则\n\n```json\n{\n    \"messages\": {\n        \"read\": \"$userid && ($userid === query.receiver || $userid === query.sender)\",\n        \"update\": {\n            \"condition\": \"$userid && $userid === query.receiver\",\n            \"data\": {\n                \"read\": {\"in\": [true]}\n            }\n        },\n        \"add\": {\n            \"condition\": \"$userid && $userid === data.sender\",\n             \"data\": {\n                \"read\": {\"in\": [false]}\n            }\n        },\n        \"remove\": false,\n        \"$schema\": {\n            \"content\": {\"length\": [1, 20480], \"required\": true},\n            \"receiver\": {\"exists\": \"/users/id\"},\n            \"read\": { \"in\": [true, false], \"default\": false }\n        }\n    }\n}\n```\n\n## 运行测试\n\n安装依赖\n\n```sh\n    npm i\n```\n\n### 单元测试\n\n```sh\n    npx mocha tests/units/*.test.js\n```\n\n### 数据库访问测试\n#### Mongo\n\n使用 Docker 启动个测试数据库，等待mongo 启动成功\n\n```sh\n    docker pull mongo\n    docker run --rm -p 27018:27017 --name mongotest -d mongo\n```\n\n执行测试用例\n\n```sh\n    npx mocha tests/mongo_db/*.test.js\n```\n\n停止&删除 Mongo 实例\n\n```sh\n    docker rm -f mongotest\n```\n\n#### MySQL\n\n使用 Docker 启动个测试数据库，等待mongo 启动成功\n\n```sh\n    docker pull mysql\n    docker run --name mysqltest -e MYSQL_ROOT_PASSWORD=kissme -e MYSQL_DATABASE=testdb -d -p 3306:3306 mysql\n```\n\n手动创建测试使用的数据表：\n```sql\ncreate table IF NOT EXISTS categories (\n  id int not null auto_increment,\n  name varchar(64) not null, \n  created_at int, \n  primary key(id)\n)ENGINE=InnoDB DEFAULT CHARSET=utf8;\n\ncreate table IF NOT EXISTS articles (\n  id int not null auto_increment,\n  title varchar(64) not null, \n  category_id int,\n  content text,\n  created_at int, \n  updated_at int,\n  created_by int,\n  primary key(id)\n)ENGINE=InnoDB DEFAULT CHARSET=utf8;\n```\n\n执行测试用例\n\n```sh\n    npx mocha tests/mysql_db/*.test.js\n```\n\n停止&删除 Mongo 实例\n\n```sh\n    docker rm -f mysqltest\n```\n\n### 执行所有测试用例\n\n> 请确保已经运行 mongo 和 mysql 测试的实例；\n\n```sh\nnpx mocha tests/**/*.test.js\n```"
  },
  {
    "path": "packages/database-proxy/docs/convert-sql.md",
    "content": "\n## Mongo 查询语法转 SQL 的分析\n\n### case 1\n```js\nquery = {}\n// where 1=1\n```\n\n### case 2\n\n```js\nquery = { id: 0}\n// where 1=1 and id = 0\n```\n\n### case 3\n\n```js\nquery = { id: 0, name: \"abc\"}\n// where 1=1 and id = 0 and name = \"abc\"\n```\n\n### case 4\n\n```js\nquery = {\n  id: 0,\n  f1: {\n    f2: 0\n  }\n}\n// Error，不支持此种嵌套属性\n```\n\n### case 5\n\n```js\nquery = {\n  f1: 0, \n  f2: {\n    $ne: 0\n  },\n  f3: {\n    $in: [1, 2, 3]\n  }\n}\n\n// where 1=1 and f1 = 0 and f2 <> 0 and f3 in (1, 2, 3)\n```\n\n### case 6\n\n```js\nquery = {\n  f1: 0,\n  $and: [\n    {\n      f2: { $gt: 0 }\n    },\n    {\n      f2: { $lt: 1 }\n    }\n  ]\n}\n\n// where 1=1 and f1 = 0 and (f2 > 0 and f2 < 1)\n```\n\n### case 7\n\n```js\nquery = {\n  f1: 0,\n  $or: [\n    {\n      f2: { $gt: 0 }\n    },\n    {\n      f2: { $lt: 1 }\n    }\n  ]\n}\n\n// where 1=1 and f1 = 0 and (f2 > 0 or f2 < 1)\n```\n\n### case 8\n\n```js\nquery = {\n  f1: 0,\n  '$or': [\n    { f2: 1},\n    { f6: { '$lt': 4000 } },\n    {\n      '$and': [ { f6: { '$gt': 6000 } }, { f6: { '$lt': 8000 } } ]\n    }\n  ]\n}\n\n// where 1=1 and f1 = 0 and (f2 = 1 or f6 < 4000 or (f6 > 6000 and f6 < 8000))\n```\n\n### case 9\n\n```js\nquery = {\n  f1: 0,\n  f2: {\n    $like: '%keyword%'\n  }\n}\n\n// where 1=1 and f1 = 0 and f2 like \"%keyword%\"\n```\n\n## Mongo 更新语法转 SQL 的分析\n\n### case 1\n\n```js\ndata = {\n  $set: {\n    f1: 0,\n    f2: 1\n  }\n}\n\n// update xxx set f1 = 0, f2 = 1 where 1=1\n```\n\n### case 2\n\n```js\n// 此种语法对应的是 less-api-client-js 的 `set` 方法，会覆盖整个文档，Mysql 并不支持此种写法\ndata = {\n  f1: 0,\n  f2: 1\n}\n\n// 遇到此种写法，应直接报错 或者 生成 update xxx set f1 = 0, f2 = 1 where 1=1 兼容执行\n```\n\n### case 3\n\n```js\ndata = {\n  '$set': { name: \"abc\" },\n  '$inc': { upvote: 1 },\n}\n\n// update xxx set name = \"abc\", upvote = upvote + 1 where 1=1\n```\n\n### case 4\n\n```js\ndata = {\n  $set: { f1: 0}, \n  '$unset': { f2: '' }\n}\n\n// Error：MySQL不支持 $unset 操作，可直接报错 或者 生成 set f2 = null 兼容执行\n// 建议客户端使用 $set: { f1: 0, f2: null} 方式代替 $unset\n// 其它操作如 $push $pop $shift $unshift 数组操作同理，不支持且不兼容\n```\n\n## 注意事项\n\n### 参数化防注入\n\n生成的 sql 应该满足参数化要求，以防止 SQL 注入， 上面生成的 SQL 示例并不是参数化版的。\n\n```sql\n-- 非参数化版\nwhere 1=1 and id = 0 and name = \"abc\"\n\n-- 参数化版 SQL\nwhere 1=1 and id = ? and name = ?\n\n-- values\nvalues = [0, \"abc\"]\n```\n\n### 使用条件与限制\n  1. 不允许嵌套属性查询\n  2. 暂不支持 like [已支持]\n  3. 暂不支持 联表查询\n  4. 暂不支持事务"
  },
  {
    "path": "packages/database-proxy/docs/qa-1.md",
    "content": "\n\n## 关于查询(query)权限中使用 $and $or 以及 $neq 等操作符的安全问题\n\n### 讨论示例-1：\n\n```json\n{\n  f1: 0,\n  f2: 1,\n  f3: {\n    $neq: 2\n  },\n}\n```\n规则-a: `$condition: query.f1 == 0`，这种情况， 默认 f1 和 f2 是 AND 关系， 规则指定 f1 == 0 才能通过， 不关心 f2、f3 的查询条件不必考虑，f1 == 0 是唯一严格规则。\n\n规则-b: `$condition: query.f3 == 0`，表示 f3 只能为指定值，不可为操作符，只要 f3 == 0 不成立，都不予通过。\n\n规则-c: `$condition: query.f3.$neq == 2`， 如果改成这个样子，那就也算是可以针对操作符做规则限定了，不过限定的比较死，使用场景应该不多。\n\n规则-d: `$condition: query.f3 != 0`，表示 f3 只要为不 0，便可通过，属于很宽松的条件，场景相对较少。\n\n\n### 讨论示例-2：\n```json\n{\n  uid: 1,\n  f2: {\n    $neq: 2\n  },\n  $and: [ { f3: { '$ne': 0 } }, { f3: { '$ne': 1 } } ],\n}\n```\n规则-a: `$condition: query.uid == 0`，此为严格规则 uid 必须为 0， 只要满足 uid == 0 的数据，可以由客户端任何查询。故支持 $and $or 没有问题。\n\n\n### 讨论示例-3：\n\n```json\n{\n  uid: 1,\n  f2: {\n    $neq: 2\n  },\n  $or: [ { f3: { '$ne': 0 } }, { f3: { '$ne': 1 } } ],\n}\n```\n规则-a: `$condition: query.uid == 0`，此为严格规则 uid 必须为 0， 只要满足 uid == 0 的数据，可以由客户端任何查询。故支持 $and $or 没有问题。\n\n\n### 讨论示例-4：查询 两个用户的数据\n\n```json\n{\n  uid: {\n    $in: [1, 2]\n  },\n}\n```\n规则-a: `$condition: query.uid == 1 || query.uid == 2`， 该规则表示 uid 必须等于 1 或 必须等于2，并不支持 $in 操作符，帮规则不通过。 如果需要两种数据，建议客户端分两次查询，一次 `{uid:1}` 第二次 `{uid:2}` ，然后将数据在前端合并即可。\n\n\n## 总结\n\n规则验证时， 以“值”为依据，而操作符是指定的条件，并不能通过规则验证。\n"
  },
  {
    "path": "packages/database-proxy/docs/qa-query-rules.md",
    "content": "\n### Query 安全性考虑\n\n#### 规则为数组时\n```\nquery: [\"id\", \"status\"]\n\nquery { $or: [...] }          // 这种情况可绕过数组限制 @TODO\nquery { \"id\": 0, $or: [...] } // 这种情况可绕过数组限制 @TODO\n```\n\n如果不用数组，是否可限定指定字段\n```\nquery: {\n  id: \"$uid == query.id\",   // 此种情况下，如果客户端不传 id，则无效，需指定 required = true\n  status: { \n    required: true,         // 此种情况下，可强制开启\n    condition: \"$value==1\"  \n  }\n}\n```\n\n结论：\n如果不用数组，可通过 required 强制启用指定字段，但是仍然可通过 opeartor 指定。\n数组需要单独处理，如果需要数组限定范围，可禁用 operator。\n或者，递归遍历所有操作符内的字段，继续使用数组限定范围。 【已按此实现】\n\n### Query 规则场景\n\n#### 场景1: 用户数据简单查询\n\n使用 contidion 验证器，严格验证，指定权限下限，可确定数据安全。\n```\ncondition: \"$uid==query.uid\"\n```\n\n使用 query 字段约束, 非严格验证，用户若不传 uid 则不会触发该约束\n```\nquery: {\n  uid: \"$value == $uid\"\n}\n```\n\n使用 query 验证多条件\n\n以下规则并不是「强制」的，只有用户传了某字段，才会触发该字段验证，如需强制验证需设置 required: true\n1. 其中，如果用户不传 uid 则不会触发 uid 的约束条件。\n2. 此 query 原定是可以限定用户只能用 uid 和 status 查询，但现在存在 operator 绕过的漏洞。【已修复：递归枚举所有输入查询字段,实现了字段的限定】\n```\nquery: {\n  uid: \"$value == $uid\",\n  status: { in: ['saved', 'published'], required: true},\n}\n```\n\n使用 query 验证是否可绕过?\n```\nquery: {\n  created_by: {\n    required: true,\n    cond: \"$value == $uid\"\n  }\n}\n// 问：如果用户使用 $or: [ created_by: 1, status: true] 是否能绕过以上 cond 验证，从而以 status 为依据?\n// 答：不能，query 验证器是以规则中配置的 fields 为依据判定和取值的，以上规则 query.created_by 表达式是取不到值的。\n//    即，query 验证器中显式定义约束的字段，如果出现在操作符内，其值是 undefined，无法通过约束，所以约束有效。\n```\n\n\n#### 场景2：存在逻辑删除数据的查询\n\n##### 若有专用字段存储删除状态时:\n\n默认查询未删除的数据，此写法有要求数据有 del_flag 字段且值为 0 的 data 约束，如果该文档中没有此字段，则查询不到。\n且该约束并不强制用户只能访问 未删除数据，只是缺省查询未删除。\n如果用户指定 del_flag 为其它值，也是可以查询的。\n```\nquery: {\n  del_flag: { default: 0 }\n}\n```\n\n如果要禁止用户访问已逻辑删除的数据：\n```\n// 此方法禁止查询删除的数据，且前端必须传此字段\nquery: {\n  del_flag: { \n    condition: \"$value != 1\", \n    required: true \n  }\n}\n// \nquery: {\n  del_flag: { override: 1 }\n}\n```\n\n##### 逻辑删除更新\n\n```\n// 用户可删除或恢复自己创建的数据，如果用户不修改 del_flag，则不传即可，不影响修改其它字段\nupdate: {\n  data: {\n    del_flag: {\n      cond: \"$uid == query.created_by\",\n      in: [0,1]\n    },\n    otherfield: {...}\n  }\n}\n\n// 禁止用户删除数据，即禁止修改 del_flag，但可修改其它字段\n// 只要不配置 del_field 字段的约束即可，缺省禁止更新\nupdate: {\n  data: {\n    otherfield: {...}\n  },\n  // 或者\n  data: [\"otherfield1\", \"otherfield2\"]\n}\n\n// 补充说明，若缺省 data 规则，则用户可修改所有字段\nupdate: {\n  condition: true\n}\n\n```\n\n\n\n"
  },
  {
    "path": "packages/database-proxy/docs/ruler_v2_design.md",
    "content": "\n## 关于访问规则重新设计的讨论\n\n1. query 重定义\n2. 支持 $schema 定义\n3. 将 data 验证器中对 add 和 update 操作的逻辑拆分\n4. data-update 不需要 required 和 default\n\n> 重点研究 query，核心安全控制在于 query；\n\n### data.add \n\n1. data 中不包含任何操作符\n2. 不需要 merge 选项\n3. 配置为数组时，限定只允许写入数组中指定的字段\n4. data.add 即 schema，考虑两者之间的关系\n\n### data.update\n\n1. 默认 merge == true 为 update， merge == false 时为 set(replace)\n2. update 时有 $set $unset $push $inc 等操作符\n3. data.update: update & set 做区分\n\n### data.add data.update schema\n\n1. 可考虑弱化 data.add data.update 的用法\n2. schema 还是 data 的别名实现，schema 可同时作用于 udpate & add"
  },
  {
    "path": "packages/database-proxy/docs/rules-v1.json",
    "content": "{\n    \"categories\": {\n        \".read\": true,\n        \".update\": \"$role === 'admin'\",\n        \".add\": \"$role === 'admin'\",\n        \".remove\": \"$role === 'admin'\"\n    },\n    \"articles\": {\n        \".read\": true,\n        \".update\": {\n            \"condition\": \"$admin === true\",\n            \"data\": {\n                \"title\": {\"length\": [1, 64], \"required\": true },\n                \"content\": {\"length\": [1, 20480]},\n                \"password\": { \"match\": \"^\\\\d{6,10}$\"},\n                \"author_id\": \"value == $userid\"\n            },\n            \"query\": {\n                \"_id\": \"get($value).author_id === $userid\"\n            }\n        },\n        \".add\": {\n            \"condition\": \"$admin === true\",\n            \"data\": { \n                \"type\": {\"required\": true, \"in\": [\"choice\", \"fill\"]}, \n                \"title\": {\"length\": [4, 64], \"required\": true, \"unique\": true},\n                \"content\": {\"length\": [4, 20480]},\n                \"total\": {\"number\": [0, 100], \"default\": 0, \"required\": true},\n                \"author_id\": { \"condition\": \"$value == $userid\" }\n            }\n        },\n        \".remove\": {\n            \"condition\":\"$admin === true\",\n            \"query\": {\n                \"id\": \"get($value).author_id === $userid // TODO 尚未实现 get 函数\"\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "packages/database-proxy/docs/rules-v2.json",
    "content": "{\n    \"categories\": {\n        \"read\": true,\n        \"update\": \"$role === 'admin'\",\n        \"add\": \"$role === 'admin'\",\n        \"remove\": \"$role === 'admin'\",\n        \"count\": true,\n        \"watch\": true,\n        \"$schema\": {\n            \"password\": { \"match\": \"^\\\\d{6,10}$\"},\n            \"author_id\": \"$value == $userid\",\n            \"type\": {\"required\": true, \"in\": [\"choice\", \"fill\"]}, \n            \"title\": {\"length\": [4, 64], \"required\": true, \"unique\": true},\n            \"content\": {\"length\": [4, 20480]},\n            \"total\": {\"number\": [0, 100], \"default\": 0, \"required\": true}\n        },\n        \"$version\": 2\n    }\n}\n"
  },
  {
    "path": "packages/database-proxy/docs/todo.md",
    "content": "\n### 规则相关\n\n#### 1. 将规则测试用例拆到单独的测试文件中，不断完善每种规则的测试覆盖\n\n#### 2. query 规则为数组时，缺少相关测试用例，此功能尚未验证可用性\n\n### 代码优化\n\n#### 1. 给 ruler 和 validator 代码添加丰富的注释"
  },
  {
    "path": "packages/database-proxy/package.json",
    "content": "{\n  \"name\": \"database-proxy\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Through a set of access control rules configuration database access to realize the client directly access the database via HTTP.\",\n  \"main\": \"./dist\",\n  \"scripts\": {\n    \"test-all\": \"mocha tests/**/*test.js\",\n    \"test-units\": \"mocha tests/units/**\",\n    \"test\": \"npm run test-units\",\n    \"build\": \"tsc -p tsconfig.json\",\n    \"watch\": \"tsc -w\",\n    \"prepublishOnly\": \"npm run build\",\n    \"lint\": \"eslint . --fix --ext .ts --ext .js\"\n  },\n  \"keywords\": [\n    \"BaaS\",\n    \"cloud\",\n    \"mongo\",\n    \"mysql\",\n    \"acl\",\n    \"serverless\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/labring/laf.git\"\n  },\n  \"author\": \"maslow(wangfugen@126.com)\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"database-ql\": \"^1.0.0\",\n    \"mongodb\": \"^5.9.2\",\n    \"mysql2\": \"^2.2.5\",\n    \"validator\": \"^13.7.0\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.10.4\",\n    \"@types/validator\": \"^10.11.3\",\n    \"mocha\": \"^9.0.2\",\n    \"typescript\": \"^5.3.3\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,js}\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "packages/database-proxy/src/accessor/accessor.ts",
    "content": "import { Params } from '../types'\n\nexport interface ReadResult {\n  list: object[]\n  total?: number\n  limit?: number\n  offset?: number\n}\n\nexport interface UpdateResult {\n  upsert_id: string\n  updated: number\n  matched: number\n}\n\nexport interface AddResult {\n  _id: string\n  insertedCount: number\n}\n\nexport interface RemoveResult {\n  deleted: number\n}\n\nexport interface CountResult {\n  total: number\n}\n\nexport interface CreateIndexResult {\n  indexName: string\n}\n\nexport interface DropIndexResult {\n  result: any\n}\n\nexport interface ListIndexesResult {\n  list: object[]\n}\n\nexport interface AccessorInterface {\n  type: string\n  execute(\n    params: Params\n  ): Promise<\n    | ReadResult\n    | UpdateResult\n    | AddResult\n    | RemoveResult\n    | CountResult\n    | CreateIndexResult\n    | DropIndexResult\n    | ListIndexesResult\n  >\n  get(collection: string, query: any): Promise<any>\n  close(): void\n  on(event: string | symbol, listener: (...args: any[]) => void): void\n  off(event: string | symbol, listener: (...args: any[]) => void): void\n  emit(event: string | symbol, ...args: any[]): boolean\n  once(event: string | symbol, listener: (...args: any[]) => void): void\n  removeAllListeners(event?: string | symbol): void\n}\n"
  },
  {
    "path": "packages/database-proxy/src/accessor/index.ts",
    "content": "export * from './accessor'\n\nexport * from './mongo'\n\nexport * from './mysql'\n"
  },
  {
    "path": "packages/database-proxy/src/accessor/mongo.ts",
    "content": "import {\n  AccessorInterface,\n  ReadResult,\n  UpdateResult,\n  AddResult,\n  RemoveResult,\n  CountResult,\n  ListIndexesResult,\n  DropIndexResult,\n  CreateIndexResult,\n} from './accessor'\nimport { Params, ActionType, Order, Direction } from '../types'\nimport { MongoClient, ObjectId, UpdateOptions, Filter } from 'mongodb'\nimport * as mongodb from 'mongodb'\nimport { DefaultLogger, LoggerInterface } from '../logger'\nimport { EventEmitter } from 'events'\nimport { EJSON } from 'bson'\nimport { AggregateStage } from 'database-ql/dist/commonjs/interface'\n\n/**\n * Mongodb Accessor is responsible for performing MongoDB data operations.\n */\nexport class MongoAccessor implements AccessorInterface {\n  readonly type = 'mongo'\n\n  readonly client: MongoClient\n  protected _event = new EventEmitter()\n\n  get db() {\n    return this.client.db()\n  }\n\n  private _logger: LoggerInterface\n\n  get logger() {\n    if (!this._logger) {\n      this._logger = new DefaultLogger()\n    }\n    return this._logger\n  }\n\n  setLogger(logger: LoggerInterface) {\n    this._logger = logger\n  }\n\n  constructor(client: MongoClient) {\n    this.client = client\n  }\n\n  emit(event: string | symbol, ...args: any[]): boolean {\n    return this._event.emit(event, ...args)\n  }\n\n  once(event: string | symbol, listener: (...args: any[]) => void): void {\n    this.once(event, listener)\n  }\n\n  removeAllListeners(event?: string | symbol): void {\n    this._event.removeAllListeners(event)\n  }\n\n  on(event: string | symbol, listener: (...args: any[]) => void): void {\n    this._event.on(event, listener)\n  }\n\n  off(event: string | symbol, listener: (...args: any[]) => void): void {\n    this._event.off(event, listener)\n  }\n\n  async close() {\n    await this.client.close()\n    this.logger.info('mongo connection closed')\n  }\n\n  async execute(\n    params: Params\n  ): Promise<\n    | ReadResult\n    | UpdateResult\n    | AddResult\n    | RemoveResult\n    | CountResult\n    | CreateIndexResult\n    | DropIndexResult\n    | ListIndexesResult\n    | never\n  > {\n    const { collection, action } = params\n\n    this.logger.info(\n      `mongo start executing {${collection}}: ` + JSON.stringify(params)\n    )\n\n    switch (action) {\n      case ActionType.READ:\n        return await this.read(collection, params)\n      case ActionType.UPDATE:\n        return await this.update(collection, params)\n      case ActionType.AGGREGATE:\n        return await this.aggregate(collection, params)\n      case ActionType.REMOVE:\n        return await this.remove(collection, params)\n      case ActionType.ADD:\n        return await this.add(collection, params)\n      case ActionType.COUNT:\n        return await this.count(collection, params)\n      case ActionType.CREATE_INDEX:\n        return await this.createIndex(collection, params)\n      case ActionType.CREATE_INDEX:\n        return await this.createIndex(collection, params)\n      case ActionType.DROP_INDEX:\n        return await this.dropIndex(collection, params)\n      case ActionType.LIST_INDEXES:\n        return await this.listIndexes(collection, params)\n    }\n\n    const error = new Error(`invalid 'action': ${action}`)\n    this.logger.error(`mongo end of executing occurred error: `, error)\n    throw error\n  }\n\n  /**\n   * Query a single document, mainly used for data queries in `access rules`\n   */\n  async get(collection: string, query: Filter<any>): Promise<any> {\n    const coll = this.db.collection(collection)\n    return await coll.findOne(query)\n  }\n\n  /**\n   * Emit result event\n   * @param params\n   * @param data\n   */\n  protected emitResult(params: Params, result: any) {\n    this.emit('result', { params, result })\n  }\n\n  /**\n   * Execute read query\n   * @param collection collection name\n   * @param params query params\n   * @returns\n   */\n  protected async read(\n    collection: string,\n    params: Params\n  ): Promise<ReadResult> {\n    const coll = this.db.collection(collection)\n\n    const { order, offset, limit, projection, count } = params\n    const query: any = this.deserializedEjson(params.query || {})\n\n    const options: any = {\n      limit: 100,\n      skip: 0,\n    }\n\n    if (order) options.sort = this.processOrder(order)\n    if (offset) options.skip = offset\n    if (projection) options.projection = projection\n\n    if (limit) {\n      options.limit = limit\n    }\n\n    this.logger.debug(`mongo before read {${collection}}: `, { query, options })\n    const data = await coll.find(query, options).toArray()\n    this.logger.debug(`mongo end of read {${collection}}: `, {\n      query,\n      options,\n      dataLength: data.length,\n    })\n\n    let total: number\n    if (count) {\n      total = await coll.countDocuments(query as Filter<any>)\n    }\n\n    this.emitResult(params, { data })\n    const serialized = data.map((doc) => this.serializeBson(doc))\n    return {\n      list: serialized,\n      limit: options.limit,\n      offset: options.skip,\n      total,\n    }\n  }\n\n  /**\n   * Execute aggregate query\n   * @param collection\n   * @param params\n   * @returns\n   */\n  protected async aggregate(\n    collection: string,\n    params: Params\n  ): Promise<ReadResult> {\n    const coll = this.db.collection(collection)\n    const stages = this.processAggregateStages(params.stages)\n\n    this.logger.debug(`mongo before aggregate {${collection}}: `, stages)\n    const data = await coll.aggregate(stages).toArray()\n    this.logger.debug(`mongo after aggregate {${collection}}: `, stages, {\n      dataLength: data.length,\n    })\n\n    this.emitResult(params, { data })\n    const serialized = data.map((doc) => this.serializeBson(doc))\n    return { list: serialized }\n  }\n\n  /**\n   * Execute update query\n   * @param collection Collection name\n   * @param params\n   * @returns\n   */\n  protected async update(\n    collection: string,\n    params: Params\n  ): Promise<UpdateResult> {\n    const coll = this.db.collection(collection)\n\n    let { query, data, multi, upsert, merge } = params\n\n    query = this.deserializedEjson(query || {})\n    data = this.deserializedEjson(data || {})\n\n    const options: UpdateOptions = {}\n    if (upsert) options.upsert = upsert\n\n    // merge 不为 true 代表替换操作，暂只允许单条替换\n    if (!merge) {\n      this.logger.debug(`mongo before update (replaceOne) {${collection}}: `, {\n        query,\n        data,\n        options,\n        merge,\n        multi,\n      })\n      const result: any = await coll.replaceOne(query, data, options)\n      const _data = {\n        upsert_id: result.upsertedId,\n        updated: result.modifiedCount,\n        matched: result.matchedCount,\n      }\n      this.emitResult(params, _data)\n      return _data\n    }\n\n    let result: mongodb.UpdateResult\n\n    // multi 表示更新一条或多条\n    if (!multi) {\n      this.logger.debug(`mongo before update (updateOne) {${collection}}: `, {\n        query,\n        data,\n        options,\n        merge,\n        multi,\n      })\n      result = await coll.updateOne(query, data, options)\n    } else {\n      options.upsert = false\n      this.logger.debug(`mongo before update (updateMany) {${collection}}: `, {\n        query,\n        data,\n        options,\n        merge,\n        multi,\n      })\n      result = (await coll.updateMany(\n        query,\n        data,\n        options\n      )) as mongodb.UpdateResult\n    }\n\n    const ret: UpdateResult = {\n      upsert_id: this.serializeBson(result.upsertedId) as any,\n      updated: result.modifiedCount,\n      matched: result.matchedCount,\n    }\n\n    this.emitResult(params, ret)\n    this.logger.debug(`mongo end of update {${collection}}: `, {\n      query,\n      data,\n      options,\n      merge,\n      multi,\n      result: ret,\n    })\n    return ret\n  }\n\n  /**\n   * Execute insert query\n   * @param collection Collection name\n   * @param params\n   * @returns\n   */\n  protected async add(collection: string, params: Params): Promise<AddResult> {\n    const coll = this.db.collection(collection)\n    let { data, multi } = params\n    data = this.deserializedEjson(data || {})\n\n    let result: mongodb.InsertOneResult | mongodb.InsertManyResult\n    this.logger.debug(`mongo before add {${collection}}: `, { data, multi })\n\n    // multi 表示单条或多条添加\n    if (!multi) {\n      data._id = this.generateDocId()\n      result = await coll.insertOne(data)\n    } else {\n      data = data instanceof Array ? data : [data]\n      data.forEach((ele: any) => (ele._id = this.generateDocId()))\n      result = await coll.insertMany(data)\n    }\n\n    const ids =\n      (result as mongodb.InsertManyResult).insertedIds ||\n      (result as mongodb.InsertOneResult).insertedId\n\n    const ret: AddResult = {\n      _id: this.serializeBson(ids) as any,\n      insertedCount: (result as mongodb.InsertManyResult).insertedCount,\n    }\n\n    this.emitResult(params, ret)\n    this.logger.debug(`mongo end of add {${collection}}: `, {\n      data,\n      multi,\n      result: ret,\n    })\n    return ret\n  }\n\n  /**\n   * Execute remove query\n   * @param collection 集合名\n   * @param params 请求参数\n   * @returns 执行结果\n   */\n  protected async remove(\n    collection: string,\n    params: Params\n  ): Promise<RemoveResult> {\n    const coll = this.db.collection(collection)\n    let { query, multi } = params\n    query = this.deserializedEjson(query || {})\n\n    let result: any\n    this.logger.debug(`mongo before remove {${collection}}: `, { query, multi })\n\n    // multi means delete one or more\n    if (!multi) {\n      result = await coll.deleteOne(query)\n    } else {\n      result = await coll.deleteMany(query)\n    }\n\n    const ret = {\n      deleted: result.deletedCount,\n    }\n\n    this.emitResult(params, ret)\n    this.logger.debug(`mongo end of remove {${collection}}: `, ret)\n    return ret\n  }\n\n  /**\n   * Execute count query\n   * @param collection collection name\n   * @param params query params\n   * @returns\n   */\n  protected async count(\n    collection: string,\n    params: Params\n  ): Promise<CountResult> {\n    const coll = this.db.collection(collection)\n\n    const query = this.deserializedEjson(params.query || {}) as any\n    const options = {}\n\n    this.logger.debug(`mongo before count {${collection}}: `, { query })\n    const result = await coll.countDocuments(query, options)\n    this.logger.debug(`mongo end of count {${collection}}: `, { query, result })\n\n    this.emitResult(params, result)\n    return {\n      total: result,\n    }\n  }\n\n  /**\n   * Convert order params to Mongodb's order format\n   * @param order\n   * @returns\n   */\n  protected processOrder(order: Order[]) {\n    if (!(order instanceof Array)) return undefined\n\n    return order.map((o) => {\n      const dir = o.direction === Direction.DESC ? -1 : 1\n      return [o.field, dir]\n    })\n  }\n\n  /**\n   * Generate a hex string document id\n   * @returns\n   */\n  protected generateDocId(): string {\n    const id = new ObjectId()\n    return id.toHexString()\n  }\n\n  /**\n   * Serialize Bson to Extended JSON\n   * @see https://docs.mongodb.com/manual/reference/mongodb-extended-json/\n   * @param bsonDoc\n   * @returns\n   */\n  protected serializeBson(bsonDoc: any) {\n    return EJSON.serialize(bsonDoc, { relaxed: true })\n  }\n\n  /**\n   * Deserialize Extended JSOn to Bson\n   * @see https://docs.mongodb.com/manual/reference/mongodb-extended-json/\n   * @param ejsonDoc\n   * @returns\n   */\n  protected deserializedEjson(ejsonDoc: any) {\n    return EJSON.deserialize(ejsonDoc, { relaxed: true })\n  }\n\n  /**\n   * Convert aggregate stages params to Mongodb aggregate pipelines\n   * @param stages\n   * @returns\n   */\n  protected processAggregateStages(stages: AggregateStage[]) {\n    const _stages = stages.map((item) => {\n      const key = item.stageKey\n      const value = EJSON.parse(item.stageValue, { relaxed: true })\n      return { [key]: value }\n    })\n    return _stages\n  }\n\n  /**\n   * Execute create index query\n   * @param collection Collection name\n   * @param params\n   * @returns\n   */\n  protected async createIndex(\n    collection: string,\n    params: Params\n  ): Promise<CreateIndexResult> {\n    const coll = this.db.collection(collection)\n    let { data } = params\n    data = this.deserializedEjson(data || {})\n\n    const { keys, options } = data\n\n    this.logger.debug(`mongo before creating index {${collection}}: `, { data })\n\n    const result = await coll.createIndex(\n      keys as mongodb.IndexSpecification,\n      options as mongodb.CreateIndexesOptions\n    )\n\n    const ret: CreateIndexResult = {\n      indexName: result,\n    }\n\n    this.emitResult(params, ret)\n    this.logger.debug(`mongo end of creating index {${collection}}: `, {\n      data,\n      result: ret,\n    })\n    return ret\n  }\n\n  /**\n   * Execute drop index query\n   * @param collection Collection name\n   * @param params\n   * @returns\n   */\n  protected async dropIndex(\n    collection: string,\n    params: Params\n  ): Promise<DropIndexResult> {\n    const coll = this.db.collection(collection)\n    let { data } = params\n    data = this.deserializedEjson(data || {})\n\n    this.logger.debug(`mongo before drop index {${collection}}: `, { data })\n\n    const result = await coll.dropIndex(data)\n\n    const ret: DropIndexResult = {\n      result,\n    }\n\n    this.emitResult(params, ret)\n    this.logger.debug(`mongo end of drop index {${collection}}: `, {\n      data,\n      result: ret,\n    })\n    return ret\n  }\n\n  /**\n   * Execute list indexes query\n   * @param collection Collection name\n   * @param params\n   * @returns\n   */\n  protected async listIndexes(\n    collection: string,\n    params: Params\n  ): Promise<ListIndexesResult> {\n    const coll = this.db.collection(collection)\n    let { data } = params\n    data = this.deserializedEjson(data || {})\n\n    this.logger.debug(`mongo before listing indexes {${collection}}: `, {\n      data,\n    })\n\n    const result = await coll.listIndexes(data).toArray()\n\n    this.logger.debug(`mongo end of listing indexes {${collection}}: `, {\n      data,\n    })\n\n    this.emitResult(params, { result })\n    const serialized = result.map((doc) => this.serializeBson(doc))\n    return { list: serialized }\n  }\n}\n"
  },
  {
    "path": "packages/database-proxy/src/accessor/mysql.ts",
    "content": "import {\n  AccessorInterface,\n  ReadResult,\n  UpdateResult,\n  AddResult,\n  RemoveResult,\n  CountResult,\n} from './accessor'\nimport { Params, ActionType } from '../types'\nimport {\n  createPool,\n  Pool,\n  ResultSetHeader,\n  OkPacket,\n  RowDataPacket,\n} from 'mysql2/promise'\nimport { ConnectionOptions } from 'mysql2'\nimport { SqlBuilder } from './sql_builder'\nimport { DefaultLogger } from '..'\nimport { LoggerInterface } from '../logger'\nimport { EventEmitter } from 'events'\n\n/**\n * Mysql Accessor\n */\nexport class MysqlAccessor implements AccessorInterface {\n  readonly type: string = 'mysql'\n  readonly db_name: string\n  readonly options: ConnectionOptions\n  readonly pool: Pool\n  private _logger: LoggerInterface\n  readonly _event = new EventEmitter()\n\n  get logger() {\n    if (!this._logger) {\n      this._logger = new DefaultLogger()\n    }\n    return this._logger\n  }\n\n  setLogger(logger: LoggerInterface) {\n    this._logger = logger\n  }\n\n  get conn(): Pool {\n    return this.pool\n  }\n\n  constructor(options?: ConnectionOptions) {\n    this.db_name = options.database\n    this.options = options\n    this.pool = createPool(options)\n    this.logger.info(`mysql accessor init`)\n  }\n\n  emit(event: string | symbol, ...args: any[]): boolean {\n    return this._event.emit(event, ...args)\n  }\n\n  once(event: string | symbol, listener: (...args: any[]) => void): void {\n    this.once(event, listener)\n  }\n\n  removeAllListeners(event?: string | symbol): void {\n    this._event.removeAllListeners(event)\n  }\n\n  on(event: string | symbol, listener: (...args: any[]) => void): void {\n    this._event.on(event, listener)\n  }\n\n  off(event: string | symbol, listener: (...args: any[]) => void): void {\n    this._event.off(event, listener)\n  }\n\n  async close() {\n    await this.conn.end()\n    this.logger.info('mysql connection closed')\n  }\n\n  async execute(\n    params: Params\n  ): Promise<\n    ReadResult | UpdateResult | AddResult | RemoveResult | CountResult | never\n  > {\n    const { collection, action } = params\n\n    this.logger.info(\n      `mysql start executing {${collection}}: ` + JSON.stringify(params)\n    )\n\n    if (action === ActionType.READ) {\n      return await this.read(collection, params)\n    }\n\n    if (action === ActionType.UPDATE) {\n      return await this.update(collection, params)\n    }\n\n    if (action === ActionType.ADD) {\n      return await this.add(collection, params)\n    }\n\n    if (action === ActionType.REMOVE) {\n      return await this.remove(collection, params)\n    }\n\n    if (action === ActionType.COUNT) {\n      return await this.count(collection, params)\n    }\n\n    const error = `invalid 'action': ${action}`\n    this.logger.error(`mysql end of executing occurred:` + error)\n    throw new Error(error)\n  }\n\n  async get(collection: string, query: any): Promise<any> {\n    const params: Params = {\n      collection: collection,\n      action: ActionType.READ,\n      query: query,\n      limit: 1,\n    }\n    const { sql, values } = SqlBuilder.from(params).select()\n    const [rows] = await this.conn.execute(sql, values)\n    return (rows as []).length ? rows[0] : null\n  }\n\n  protected async read(\n    _collection: string,\n    params: Params\n  ): Promise<ReadResult> {\n    const { collection } = params\n    const { sql, values } = SqlBuilder.from(params).select()\n\n    const nestTables = params.nested ?? false\n\n    this.logger.debug(`mysql read {${collection}}: `, { sql, values })\n    const [rows] = await this.conn.execute<RowDataPacket[]>({\n      sql,\n      values,\n      nestTables,\n    })\n    return {\n      list: rows,\n    }\n  }\n\n  protected async update(\n    _collection: string,\n    params: Params\n  ): Promise<UpdateResult> {\n    const { collection } = params\n\n    const { sql, values } = SqlBuilder.from(params).update()\n\n    this.logger.debug(`mysql update {${collection}}: `, { sql, values })\n    const [ret] = await this.conn.execute<ResultSetHeader>(sql, values)\n\n    return {\n      updated: ret.affectedRows,\n      matched: ret.affectedRows,\n      upsert_id: undefined,\n    }\n  }\n\n  protected async add(_collection: string, params: Params): Promise<AddResult> {\n    const { multi, collection } = params\n\n    if (multi) {\n      console.warn('mysql add(): {multi == true} has been ignored!')\n    }\n\n    const { sql, values } = SqlBuilder.from(params).insert()\n\n    this.logger.debug(`mysql add {${collection}}: `, { sql, values })\n    const [ret] = await this.conn.execute<ResultSetHeader>(sql, values)\n\n    return {\n      _id: ret.insertId as any,\n      insertedCount: ret.affectedRows,\n    }\n  }\n\n  protected async remove(\n    _collection: string,\n    params: Params\n  ): Promise<RemoveResult> {\n    const { collection } = params\n\n    const { sql, values } = SqlBuilder.from(params).delete()\n    this.logger.debug(`mysql remove {${collection}}: `, { sql, values })\n\n    const [ret] = await this.conn.execute<OkPacket>(sql, values)\n    return {\n      deleted: ret.affectedRows,\n    }\n  }\n\n  protected async count(\n    _collection: string,\n    params: Params\n  ): Promise<CountResult> {\n    const { collection } = params\n\n    const { sql, values } = SqlBuilder.from(params).count()\n\n    this.logger.debug(`mysql count {${collection}}: `, { sql, values })\n    const [ret] = await this.conn.execute<RowDataPacket[]>(sql, values)\n\n    if (ret.length === 0) {\n      return { total: 0 }\n    }\n    return {\n      total: ret[0].total,\n    }\n  }\n}\n"
  },
  {
    "path": "packages/database-proxy/src/accessor/sql_builder.ts",
    "content": "import assert = require('assert')\nimport {\n  Direction,\n  JoinParam,\n  JoinType,\n  LOGIC_COMMANDS,\n  Order,\n  Params,\n  QUERY_COMMANDS,\n  UPDATE_COMMANDS,\n} from '../types'\n\n/**\n *  SqlBuilder: Mongo 操作语法生成 SQL 语句\n */\nexport class SqlBuilder {\n  readonly params: Params\n  private _values: any[] = []\n\n  constructor(params: Params) {\n    this._values = []\n    this.params = params\n  }\n\n  static from(params: Params): SqlBuilder {\n    return new SqlBuilder(params)\n  }\n\n  get table(): string {\n    return this.params.collection\n  }\n\n  get query(): any {\n    return this.params.query || {}\n  }\n\n  get projection(): any {\n    return this.params.projection || {}\n  }\n\n  get orders(): Order[] {\n    return this.params.order || []\n  }\n\n  get data(): any {\n    return this.params.data || {}\n  }\n\n  get joins(): JoinParam[] {\n    return this.params.joins || []\n  }\n\n  select() {\n    const fields = this.buildProjection()\n    const joins = this.buildJoins()\n    const query = this.buildQuery()\n    const orderBy = this.buildOrder()\n    const limit = this.buildLimit()\n\n    const sql = `select ${fields} from ${this.table} ${joins}${query} ${orderBy} ${limit}`\n    const values = this.values()\n    return {\n      sql,\n      values,\n    }\n  }\n\n  update() {\n    this.checkData()\n\n    const data = this.buildUpdateData()\n    const joins = this.buildJoins()\n    const query = this.buildQuery()\n\n    // 当 multi 为 true 时允许多条更新，反之则只允许更新一条数据\n    // multi 默认为 false\n    const multi = this.params.multi\n    const limit = multi ? '' : `limit 1`\n    const orderBy = this.buildOrder()\n\n    const sql = `update ${this.table} ${data} ${joins}${query} ${orderBy} ${limit}`\n    const values = this.values()\n\n    return { sql, values }\n  }\n\n  delete() {\n    const joins = this.buildJoins()\n    const query = this.buildQuery()\n\n    // 当 multi 为 true 时允许多条更新，反之则只允许更新一条数据\n    const multi = this.params.multi\n    const limit = multi ? '' : `limit 1`\n    const orderBy = this.buildOrder()\n    const sql = `delete from ${this.table} ${joins}${query} ${orderBy} ${limit} `\n    const values = this.values()\n    return {\n      sql,\n      values,\n    }\n  }\n\n  insert() {\n    this.checkData()\n    const data = this.buildInsertData()\n    const sql = `insert into ${this.table} ${data}`\n    const values = this.values()\n    return { sql, values }\n  }\n\n  count() {\n    const joins = this.buildJoins()\n    const query = this.buildQuery()\n\n    const sql = `select count(*) as total from ${this.table} ${joins}${query}`\n    const values = this.values()\n    return {\n      sql,\n      values,\n    }\n  }\n\n  protected addValues(values: any[]) {\n    this._values.push(...values)\n  }\n\n  // 构建联表语句(join)\n  protected buildJoins(): string {\n    const joins = this.joins\n    const leftTable = this.params.collection\n\n    if (joins.length === 0) return ''\n    const strs = []\n    for (const join of joins) {\n      const { collection, leftKey, rightKey, type } = join\n      assert(this.checkJoinType(type), `invalid join type: ${type}`)\n      this.checkField(collection)\n      this.checkField(leftKey)\n      this.checkField(rightKey)\n      const rightTable = collection\n      const str = `${type} join ${rightTable} on ${leftTable}.${leftKey} = ${rightTable}.${rightKey}`\n      strs.push(str)\n    }\n\n    const ret = strs.join(' ')\n    /**\n     * 因为 join 功能是后加的， 空 joins 拼入 sql 后，会增加两\n     * 这样会导致，原来的单元测试用例都无法通过的问题\n     * 如果 joins 为空，那么就只插入空串，无空格即可\n     */\n    const wrapped_joins = ret == '' ? '' : ` ${ret} `\n    return wrapped_joins\n  }\n\n  protected checkJoinType(joinType: string): boolean {\n    const types: string[] = [\n      JoinType.FULL,\n      JoinType.INNER,\n      JoinType.LEFT,\n      JoinType.RIGHT,\n    ]\n    return types.includes(joinType)\n  }\n\n  // build query string\n  protected buildQuery(): string {\n    const builder = SqlQueryBuilder.from(this.query)\n    const sql = builder.build()\n    const values = builder.values()\n    this.addValues(values)\n\n    return sql\n  }\n\n  // build update data string: set x=a, y=b ...\n  /**\n   *\n   * ```js\n   * {\n   *   action: 'database.updateDocument',\n   *   collection: 'categories',\n   *   query: { _id: '6024f815acbf480fbb9648ce' },\n   *   data: {\n   *       '$set': { title: 'updated-title' },\n   *       '$inc': { age: 1 },\n   *       '$unset': { content: '' }\n   *   },\n   *   merge: true\n   * }\n   * ```\n   */\n  protected buildUpdateData(): string {\n    const strs = []\n    // sql 不支持 merge 为 false 的情况（合并更新，即替换）\n    assert(this.params.merge, 'invalid params: {merge} should be true in sql')\n\n    // $set\n    if (this.data[UPDATE_COMMANDS.SET]) {\n      const _data = this.data[UPDATE_COMMANDS.SET]\n      assert(\n        typeof _data === 'object',\n        'invalid data: value of $set must be object'\n      )\n      for (const key in _data) {\n        const _val = _data[key]\n        assert(\n          this.isBasicValue(_val),\n          `invalid data: value of data only support BASIC VALUE(number|boolean|string|undefined|null), {${key}:${_val}} given`\n        )\n        this.addValues([_val])\n        strs.push(`${key}=?`)\n      }\n    }\n\n    // $inc\n    if (this.data[UPDATE_COMMANDS.INC]) {\n      const _data = this.data[UPDATE_COMMANDS.INC]\n      assert(\n        typeof _data === 'object',\n        'invalid data: value of $inc must be object'\n      )\n      for (const key in _data) {\n        const _val = _data[key]\n        assert(\n          typeof _val === 'number',\n          `invalid data: value of $inc property only support number, {${key}:${_val}} given`\n        )\n        this.addValues([_val])\n        strs.push(`${key}= ${key} + ?`)\n      }\n    }\n\n    // $mul\n    if (this.data[UPDATE_COMMANDS.MUL]) {\n      const _data = this.data[UPDATE_COMMANDS.MUL]\n      assert(\n        typeof _data === 'object',\n        'invalid data: value of $mul must be object'\n      )\n      for (const key in _data) {\n        const _val = _data[key]\n        assert(\n          typeof _val === 'number',\n          `invalid data: value of $mul property only support number, {${key}:${_val}} given`\n        )\n        this.addValues([_val])\n        strs.push(`${key}= ${key} * ?`)\n      }\n    }\n\n    // $unset\n    if (this.data[UPDATE_COMMANDS.REMOVE]) {\n      const _data = this.data[UPDATE_COMMANDS.REMOVE]\n      assert(\n        typeof _data === 'object',\n        'invalid data: value of $unset must be object'\n      )\n      for (const key in _data) {\n        strs.push(`${key}= null`)\n      }\n    }\n\n    assert(strs.length, 'invalid data: set statement in sql is empty')\n\n    return 'set ' + strs.join(',')\n  }\n\n  // build insert data string: (field1, field2) values (a, b, c) ...\n  protected buildInsertData(): string {\n    const fields = Object.keys(this.data)\n    const values = fields.map((key) => {\n      const _val = this.data[key]\n      assert(\n        this.isBasicValue(_val),\n        `invalid data: value of data only support BASIC VALUE(number|boolean|string|undefined|null), {${key}:${_val}} given`\n      )\n      this.addValues([_val])\n      return '?'\n    })\n\n    const s_fields = fields.join(',')\n    const s_values = values.join(',')\n\n    return `(${s_fields}) values (${s_values})`\n  }\n\n  protected _buildData(): { fields: string[]; values: any[] } {\n    const fields = Object.keys(this.data)\n    const values = fields.map((key) => {\n      const _val = this.data[key]\n      assert(\n        this.isBasicValue(_val),\n        `invalid data: value of data only support BASIC VALUE(number|boolean|string|undefined|null), {${key}:${_val}} given`\n      )\n      return _val\n    })\n\n    return { fields, values }\n  }\n\n  protected buildOrder(): string {\n    if (this.orders.length === 0) {\n      return ''\n    }\n    const strs = this.orders.map((ord) => {\n      assert(\n        [Direction.ASC, Direction.DESC].includes(ord.direction),\n        `invalid query: order value of {${ord.field}:${ord.direction}} MUST be 'desc' or 'asc'`\n      )\n      return `${ord.field} ${ord.direction}`\n    })\n    return 'order by ' + strs.join(',')\n  }\n\n  protected buildLimit(_limit?: number): string {\n    const offset = this.params.offset || 0\n    const limit = this.params.limit || _limit || 100\n    assert(typeof offset === 'number', 'invalid query: offset must be number')\n    assert(typeof limit === 'number', 'invalid query: limit must be number')\n\n    return `limit ${offset},${limit}`\n  }\n\n  /**\n   * 指定返回的字段\n   * @tip 在 mongo 中可以指定只显示哪些字段 或者 不显示哪些字段，而在 SQL 中我们只支持[只显示哪些字段]\n   * 示例数据:    `projection: { age: 1, f1: 1}`\n   */\n  protected buildProjection(): string {\n    const fields = []\n    for (const key in this.projection) {\n      this.checkProjection(key)\n      const value = this.projection[key]\n      assert(\n        value,\n        `invalid query: value of projection MUST be {true} or {1}, {false} or {0} is not supported in sql`\n      )\n      fields.push(key)\n    }\n    if (fields.length === 0) {\n      return '*'\n    }\n    return fields.join(',')\n  }\n\n  protected values(): any[] {\n    return this._values || []\n  }\n\n  // 是否为值属性(number, string, boolean, undefine, null)\n  protected isBasicValue(value) {\n    if (value === null) {\n      return true\n    }\n    const type = typeof value\n    return ['number', 'string', 'boolean', 'undefined'].includes(type)\n  }\n\n  // data 不可为空\n  protected checkData() {\n    assert(this.data, `invalid data: data can NOT be ${this.data}`)\n    assert(\n      typeof this.data === 'object',\n      `invalid data: data must be an object`\n    )\n\n    assert(\n      !(this.data instanceof Array),\n      `invalid data: data cannot be Array while using SQL`\n    )\n\n    const keys = Object.keys(this.data)\n    keys.forEach(this.checkField)\n    assert(keys.length, `invalid data: data can NOT be empty object`)\n  }\n\n  protected checkField(field_name: string) {\n    if (SecurityCheck.checkField(field_name) === false)\n      throw new Error(`invalid field : '${field_name}'`)\n  }\n\n  protected checkProjection(name: string) {\n    if (SecurityCheck.checkProjection(name) === false) {\n      throw new Error(`invalid projection field : '${name}'`)\n    }\n  }\n}\n\n/**\n * Mongo 查询转换为 SQL 查询\n */\nexport class SqlQueryBuilder {\n  readonly query: any\n  private _values: any[] = [] // SQL 参数化使用，收集SQL参数值\n\n  constructor(query: any) {\n    this.query = query\n  }\n\n  static from(query: any) {\n    return new SqlQueryBuilder(query)\n  }\n\n  //\n  build(): string | null {\n    assert(\n      this.hasNestedFieldInQuery() === false,\n      'invalid query: nested property in query'\n    )\n\n    let strs = ['where 1=1']\n    // 遍历查询属性\n    for (const key in this.query) {\n      const v = this.buildOne(key, this.query[key])\n      strs.push(v)\n    }\n\n    strs = strs.filter((s) => s != '' && s != undefined)\n    if (strs.length === 1) {\n      return strs[0]\n    }\n\n    return strs.join(' and ')\n  }\n\n  values(): any[] {\n    return this._values\n  }\n\n  // 处理一条查询属性（逻辑操作符属性、值属性、查询操作符属性）\n  protected buildOne(key: string, value: any) {\n    this.checkField(key)\n\n    // 若是逻辑操作符\n    if (this.isLogicOperator(key)) {\n      return this.processLogicOperator(key, value)\n    }\n\n    // 若是值属性（number, string, boolean)\n    if (this.isBasicValue(value)) {\n      return this.processBasicValue(key, value, QUERY_COMMANDS.EQ)\n    }\n\n    // 若是查询操作符(QUERY_COMMANDS)\n    if (typeof value === 'object') {\n      return this.processQueryOperator(key, value)\n    }\n\n    throw new Error(`unknow query property found: {${key}: ${value}}`)\n  }\n\n  // 递归处理逻辑操作符的查询($and $or)\n  /**\n    ```js\n        query = {\n        f1: 0,\n        '$or': [\n            { f2: 1},\n            { f6: { '$lt': 4000 } },\n            {\n            '$and': [ { f6: { '$gt': 6000 } }, { f6: { '$lt': 8000 } } ]\n            }\n        ]\n        }\n        // where 1=1 and f1 = 0 and (f2 = 1 and f6 < 4000 or (f6 > 6000 and f6 < 8000))\n    ```\n    */\n  protected processLogicOperator(operator: string, value: any[]) {\n    const that = this\n\n    function _process(key: string, _value: any[] | any): string {\n      // 如果是逻辑符，则 value 为数组遍历子元素\n      if (that.isLogicOperator(key)) {\n        assert(\n          _value instanceof Array,\n          `invalid query: value of logic operator must be array, but ${_value} given`\n        )\n\n        const result = []\n        for (const item of _value) {\n          // 逻辑符子项遍历\n          for (const k in item) {\n            // 操作\n            const r = _process(k, item[k])\n            result.push(r)\n          }\n        }\n        // 将逻辑符中每个子项的结果用 逻辑符 连接起来\n        const op = that.mapLogicOperator(key)\n        const _v = result.join(` ${op} `) // keep spaces in both ends\n        return `(${_v})` //\n      }\n\n      // 若是值属性（number, string, boolean)\n      if (that.isBasicValue(_value)) {\n        return that.processBasicValue(key, _value, QUERY_COMMANDS.EQ)\n      }\n\n      // 若是查询操作符(QUERY_COMMANDS)\n      if (typeof _value === 'object') {\n        return that.processQueryOperator(key, _value)\n      }\n    }\n\n    return _process(operator, value)\n  }\n\n  // 处理值属性\n  protected processBasicValue(\n    field: string,\n    value: string | number | boolean | [],\n    operator: string\n  ) {\n    this.checkField(field)\n\n    const op = this.mapQueryOperator(operator)\n\n    let _v = null\n\n    // $in $nin 值是数组, 需单独处理\n    const { IN, NIN } = QUERY_COMMANDS\n    if ([IN, NIN].includes(operator)) {\n      ;(value as any[]).forEach((v) => this.addValue(v))\n\n      const arr = (value as any[]).map((_) => '?')\n      const vals = arr.join(',')\n      _v = `(${vals})`\n    } else {\n      assert(\n        this.isBasicValue(value),\n        `invalid query: typeof '${field}' must be number|string|boolean|undefined|null, but ${typeof value} given`\n      )\n      this.addValue(value)\n      _v = '?'\n    }\n\n    return `${field} ${op} ${_v}`\n  }\n\n  // 处理查询操作符属性\n  protected processQueryOperator(field: string, value: any) {\n    let strs = []\n    // key 就是查询操作符\n    for (const key in value) {\n      this.checkField(key)\n      // @todo 暂且跳过[非]查询操作符，这种情况应该报错?\n      if (!this.isQueryOperator(key)) {\n        continue\n      }\n\n      const sub_value = value[key]\n      const result = this.processBasicValue(field, sub_value, key)\n      strs.push(result)\n    }\n    strs = strs.filter((s) => s != '' && s != undefined)\n    if (strs.length === 0) {\n      return ''\n    }\n    return strs.join(' and ')\n  }\n\n  protected addValue(value: any) {\n    this._values.push(value)\n  }\n\n  // 是否为值属性(number, string, boolean)\n  protected isBasicValue(value) {\n    const type = typeof value\n    return ['number', 'string', 'boolean'].includes(type)\n  }\n\n  // 是否为逻辑操作符\n  protected isLogicOperator(key: string) {\n    const keys = Object.keys(LOGIC_COMMANDS).map((k) => LOGIC_COMMANDS[k])\n    return keys.includes(key)\n  }\n\n  // 是否为查询操作符(QUERY_COMMANDS)\n  protected isQueryOperator(key: string) {\n    const keys = Object.keys(QUERY_COMMANDS).map((k) => QUERY_COMMANDS[k])\n    return keys.includes(key)\n  }\n\n  // 是否为操作符\n  protected isOperator(key: string) {\n    return this.isLogicOperator(key) || this.isQueryOperator(key)\n  }\n\n  // 获取所有的查询操作符\n  // @TODO not used\n  protected getQueryOperators(): string[] {\n    const logics = Object.keys(LOGIC_COMMANDS).map((key) => LOGIC_COMMANDS[key])\n    const queries = Object.keys(QUERY_COMMANDS).map(\n      (key) => QUERY_COMMANDS[key]\n    )\n\n    return [...logics, ...queries]\n  }\n\n  // 判断 Query 中是否有属性嵌套\n  public hasNestedFieldInQuery() {\n    for (const key in this.query) {\n      // 忽略对象顶层属性操作符\n      if (this.isOperator(key)) {\n        continue\n      }\n      // 子属性是否有对象\n      const obj = this.query[key]\n      if (typeof obj !== 'object') {\n        continue\n      }\n\n      if (this.hasObjectIn(obj)) {\n        return true\n      }\n    }\n    return false\n  }\n\n  // 判断给定对象（Object）中是否存在某个属性为非操作符对象\n  protected hasObjectIn(object: any) {\n    for (const key in object) {\n      // 检测到非操作符对象，即判定存在\n      if (!this.isOperator(key)) {\n        return true\n      }\n    }\n    return false\n  }\n\n  // 转换 mongo 查询操作符到 sql\n  protected mapQueryOperator(operator: string) {\n    assert(\n      this.isQueryOperator(operator),\n      `invalid query: operator ${operator} must be query operator`\n    )\n    let op = ''\n    switch (operator) {\n      case QUERY_COMMANDS.EQ:\n        op = '='\n        break\n      case QUERY_COMMANDS.NEQ:\n        op = '<>'\n        break\n      case QUERY_COMMANDS.GT:\n        op = '>'\n        break\n      case QUERY_COMMANDS.GTE:\n        op = '>='\n        break\n      case QUERY_COMMANDS.LT:\n        op = '<'\n        break\n      case QUERY_COMMANDS.LTE:\n        op = '<='\n        break\n      case QUERY_COMMANDS.IN:\n        op = 'in'\n        break\n      case QUERY_COMMANDS.NIN:\n        op = 'not in'\n        break\n      case QUERY_COMMANDS.LIKE:\n        op = 'like'\n        break\n    }\n\n    assert(op != '', `invalid query: unsupperted query operator ${operator}`)\n    return op\n  }\n\n  // 转换 mongo 逻辑操作符到 sql\n  protected mapLogicOperator(operator: string) {\n    assert(\n      this.isLogicOperator(operator),\n      `invalid query: operator ${operator} must be logic operator`\n    )\n\n    let op = ''\n    switch (operator) {\n      case LOGIC_COMMANDS.AND:\n        op = 'and'\n        break\n      case LOGIC_COMMANDS.OR:\n        op = 'or'\n        break\n    }\n\n    assert(op != '', `invalid query: unsupperted logic operator ${operator}`)\n    return op\n  }\n\n  protected checkField(field_name) {\n    if (SecurityCheck.checkField(field_name) === false)\n      throw new Error(`invalid field : '${field_name}'`)\n  }\n}\n\n/**\n * 安全检测工具： SQL注入，字段合法性\n */\nclass SecurityCheck {\n  // 检查字段名是否合法：data field, query field\n  static checkField(name: string): boolean {\n    if (this.isOperator(name)) {\n      return true\n    }\n\n    const black_list = [\n      ' ',\n      '#',\n      // ' or ',\n      ';',\n      `'`,\n      `\"`,\n      '`',\n      '-',\n      '/',\n      '*',\n      '\\\\',\n      '+',\n      '%',\n    ]\n    if (this.containStrs(name, black_list)) {\n      return false\n    }\n\n    return true\n  }\n\n  // 检查字段名是否合法：data field, query field\n  static checkProjection(name: string): boolean {\n    const black_list = [\n      '#',\n      ' or ',\n      ';',\n      `'`,\n      `\"`,\n      '`',\n      '+',\n      '-',\n      '/',\n      '\\\\',\n      '%',\n    ]\n    if (this.containStrs(name, black_list)) {\n      return false\n    }\n\n    return true\n  }\n\n  static containStrs(source: string, str_list: string[]): boolean {\n    for (const ch of str_list) {\n      if (source.indexOf(ch) >= 0) return true\n    }\n\n    return false\n  }\n\n  // 是否为逻辑操作符\n  static isLogicOperator(key: string): boolean {\n    const keys = Object.keys(LOGIC_COMMANDS).map((k) => LOGIC_COMMANDS[k])\n    return keys.includes(key)\n  }\n\n  // 是否为查询操作符(QUERY_COMMANDS)\n  static isQueryOperator(key: string): boolean {\n    const keys = Object.keys(QUERY_COMMANDS).map((k) => QUERY_COMMANDS[k])\n    return keys.includes(key)\n  }\n\n  // 是否为操作符\n  static isOperator(key: string): boolean {\n    return this.isLogicOperator(key) || this.isQueryOperator(key)\n  }\n}\n"
  },
  {
    "path": "packages/database-proxy/src/dbi/index.ts",
    "content": "import { AccessorInterface } from '../accessor'\nimport { Db } from 'database-ql'\nimport { Request } from './request'\n\nexport function getDb(accessor: AccessorInterface): Db {\n  return new Db({\n    request: new Request(accessor),\n  })\n}\n"
  },
  {
    "path": "packages/database-proxy/src/dbi/request.ts",
    "content": "import { Proxy } from '../proxy'\nimport { RequestInterface } from 'database-ql'\nimport { AccessorInterface } from '..'\nimport { QueryParam, ResponseStruct } from 'database-ql/dist/commonjs/interface'\nimport { ActionType } from 'database-ql/dist/commonjs/constant'\n\nexport class Request implements RequestInterface {\n  private accessor: AccessorInterface\n\n  constructor(accessor: AccessorInterface) {\n    this.accessor = accessor\n  }\n\n  async send(action: ActionType, data: QueryParam): Promise<ResponseStruct> {\n    const accessor = this.accessor\n    const params = Proxy.parse(action as any, data)\n    const ret = await accessor.execute(params)\n\n    return {\n      code: 0,\n      data: ret,\n      error: undefined,\n      requestId: undefined,\n    }\n  }\n}\n"
  },
  {
    "path": "packages/database-proxy/src/index.ts",
    "content": "export * from './proxy'\nexport * from './policy'\nexport * from './accessor'\nexport * from './types'\nexport * from './processor'\n\nexport * from './dbi'\nexport * from './logger'\n\nexport { Db } from 'database-ql'\n"
  },
  {
    "path": "packages/database-proxy/src/logger.ts",
    "content": "export interface LoggerInterface {\n  level: number\n  trace(...params: any[]): void\n  debug(...params: any[]): void\n  info(...params: any[]): void\n  warn(...params: any[]): void\n  error(...params: any[]): void\n  fatal(...params: any[]): void\n}\n\nexport class DefaultLogger implements LoggerInterface {\n  level: number\n  constructor(level?: number) {\n    this.level = level ?? 3\n  }\n  trace(...params: any[]): void {\n    if (this.level >= 6) console.trace(...params)\n  }\n  debug(...params: any[]): void {\n    if (this.level >= 5) console.debug(...params)\n  }\n  info(...params: any[]): void {\n    if (this.level >= 4) console.info(...params)\n  }\n  warn(...params: any[]): void {\n    if (this.level >= 3) console.warn(...params)\n  }\n  error(...params: any[]): void {\n    if (this.level >= 2) console.error(...params)\n  }\n  fatal(...params: any[]): void {\n    if (this.level >= 1) console.error(...params)\n  }\n}\n"
  },
  {
    "path": "packages/database-proxy/src/policy/index.ts",
    "content": "export * from './interface'\nexport * from './policy'\n"
  },
  {
    "path": "packages/database-proxy/src/policy/interface.ts",
    "content": "import { Params } from '../types'\nimport { Handler, Processor } from '../processor'\nimport { AccessorInterface } from '../accessor'\n\n// Permission Rule\nexport interface PermissionRule {\n  [name: string]: Processor\n}\n\n// Validate Error Struct\nexport interface ValidateError {\n  type: string | number\n  error: string | object\n}\n\n// Validate Result Struct\nexport interface ValidateResult {\n  errors?: ValidateError[]\n  matched?: PermissionRule\n}\n\n/**\n * Ruler Interface\n */\nexport interface PolicyInterface {\n  /**\n   * collection names in rules\n   * @readonly\n   */\n  collections: string[]\n\n  /**\n   * accessor\n   * @readonly\n   */\n  accessor: AccessorInterface\n\n  /**\n   * load all rules\n   * @param rules json object roles\n   */\n  load(rules: any): boolean\n\n  /**\n   * validate the request params\n   * @param params\n   * @param injections\n   */\n  validate(params: Params, injections: object): Promise<ValidateResult>\n\n  /**\n   * register a validator for using in rules\n   * @param name\n   * @param handler\n   */\n  register(name: string, handler: Handler): void\n}\n"
  },
  {
    "path": "packages/database-proxy/src/policy/policy.ts",
    "content": "import * as assert from 'assert'\nimport { Params, getAction, ActionType } from '../types'\nimport { Handler, Processor, HandlerContext } from '../processor'\nimport * as BUILT_IN_VALIDATORS from '../validators'\nimport { AccessorInterface } from '../accessor'\nimport { DefaultLogger, LoggerInterface } from '../logger'\nimport {\n  PermissionRule,\n  PolicyInterface,\n  ValidateError,\n  ValidateResult,\n} from './interface'\n\n/**\n * 访问规则结构：\n * DatabaseRule:\n *   -> CollectionRule:\n *       ->  read: PermissionRule[]\n *       ->  add:  PermissionRule[]\n *       ->  update: PermissionRule[]\n *       ->  remove: PermissionRule[]\n *       ->  count:  PermissionRule[]\n *       ->  watch:  PermissionRule[]\n */\n\nexport enum PermissionTypeV1 {\n  READ = '.read',\n  UPDATE = '.update',\n  ADD = '.add',\n  REMOVE = '.remove',\n  COUNT = '.count',\n}\n\nexport enum PermissionType {\n  READ = 'read',\n  UPDATE = 'update',\n  ADD = 'add',\n  REMOVE = 'remove',\n  COUNT = 'count',\n  WATCH = 'watch',\n  AGGREGATE = 'aggregate',\n}\n\n// 数据库规则\nexport interface DatabaseRule {\n  [collection: string]: CollectionRule\n}\n\n// 集合规则\nexport type CollectionRule = {\n  // 集合数据的结构约束\n  $schema: PermissionRule[]\n  read: PermissionRule[]\n  add: PermissionRule[]\n  update: PermissionRule[]\n  remove: PermissionRule[]\n  count: PermissionRule[]\n  watch: PermissionRule[]\n}\n\n// 验证器容器\nexport interface ValidatorMap {\n  [name: string]: Handler\n}\n\nexport class Policy implements PolicyInterface {\n  readonly version = 2\n  protected _accessor: AccessorInterface\n  protected _logger: LoggerInterface\n\n  /**\n   * 验证器注册表\n   */\n  protected validators: ValidatorMap\n\n  /**\n   * 解析后的数据库规则树\n   */\n  protected rules: DatabaseRule\n\n  private get logger() {\n    if (!this._logger) {\n      this._logger = new DefaultLogger(0)\n    }\n    return this._logger\n  }\n\n  public setLogger(logger: LoggerInterface) {\n    this._logger = logger\n  }\n\n  get accessor(): AccessorInterface {\n    return this._accessor\n  }\n\n  public setAccessor(accessor: AccessorInterface) {\n    this._accessor = accessor\n  }\n\n  get collections() {\n    if (!this.rules) return []\n    return Object.keys(this.rules)\n  }\n\n  constructor(accessor?: AccessorInterface) {\n    this._accessor = accessor\n    this.validators = {}\n    this.rules = {}\n    this.loadBuiltins()\n  }\n\n  /**\n   * 加载 rules in json\n   * @param rules any\n   * @returns\n   */\n  load(rules: any) {\n    this.logger.debug(`load rules: `, JSON.stringify(rules))\n    assert.equal(typeof rules, 'object', \"invalid 'rules'\")\n\n    // 处理每张数据库表的访问规则\n    for (const collection in rules) {\n      this.add(collection, rules[collection])\n    }\n\n    this.logger.info(`all rules loaded`)\n    return true\n  }\n\n  /**\n   * 添加一个集合的访问规则，同 {set()}，但当集合已存在时，则添加失败\n   * @param collection 集合名称\n   * @param rules 集合的访问规则，是一个对象， like { \"read\": {...}, 'update': {...} }\n   */\n  add(collection: string, rules: any) {\n    if (this.collections.includes(collection)) {\n      throw new Error(\n        `add collection rules failed: ${collection} already exists`\n      )\n    }\n\n    this.set(collection, rules)\n  }\n\n  /**\n   * 设置一个集合的访问规则，若集合规则已存在，则替换其规则\n   * @param collection 集合名称\n   * @param rules 集合的访问规则，是一个对象， like { \"read\": {...}, 'update': {...} }\n   */\n  set(collection: string, rules: any) {\n    this.logger.info(`set collection rules: ${collection}...`)\n\n    rules = this.convertPermissionConfig(rules)\n\n    // 集合权限，是一个对象， like { \"read\": {...}, 'update': {...} }\n    const collectionRule = {} as CollectionRule\n\n    // 处理每种权限规则, like ['read', 'update' ...]\n    const perm_types = Object.keys(rules) as PermissionType[]\n    for (const ptype of perm_types) {\n      // skip non-permisstion-type item, like '$schema'\n      if ((ptype as string) === '$schema') {\n        continue\n      }\n\n      // 权限对应的验证器配置, like { 'condition': true, 'data': {...} }\n      const permissionConfig = rules[ptype]\n      const permissionConfigArr =\n        this.wrapRawPermissionRuleToArray(permissionConfig)\n\n      // add schema config if ADD or UPDATE\n      if ([PermissionType.ADD, PermissionType.UPDATE].includes(ptype)) {\n        permissionConfigArr.forEach((pmc) => {\n          pmc['schema'] = rules['$schema']\n        })\n      }\n\n      // instantiate validators\n      collectionRule[ptype] = this.instantiateValidators(permissionConfigArr)\n    }\n\n    this.rules[collection] = collectionRule\n  }\n\n  /**\n   * 转换 v1 版本的权限名到 v2\n   * example:\n   * \".read\" -> \"read\"\n   * \".update\" -> \".update\"\n   * ...\n   * @param rules\n   * @returns\n   */\n  private convertPermissionConfig(rules: any): any {\n    const newRules = {}\n    for (const key in rules) {\n      let type = key\n      switch (key) {\n        case PermissionTypeV1.READ:\n          type = PermissionType.READ\n          break\n        case PermissionTypeV1.UPDATE:\n          type = PermissionType.UPDATE\n          break\n        case PermissionTypeV1.ADD:\n          type = PermissionType.ADD\n          break\n        case PermissionTypeV1.COUNT:\n          type = PermissionType.COUNT\n          break\n        case PermissionTypeV1.REMOVE:\n          type = PermissionType.REMOVE\n          break\n      }\n      newRules[type] = rules[key]\n    }\n    return newRules\n  }\n\n  /**\n   * normalize：将输入规则格式转为内部统一形式，即对象数组\n   * 1. boolean -> [{ condition: \"bool string\"}]\n   * 2. string -> [{ condition: \"expression string\" }]\n   * 3. object -> [ object ]\n   * 4. array -> array\n   * @param permissionRules\n   * @returns\n   */\n  private wrapRawPermissionRuleToArray(permissionRules: any): any[] {\n    assert.notEqual(permissionRules, undefined, 'permissionRules is undefined')\n\n    let rules = permissionRules\n\n    // 权限规则为布尔时，默认使用 condition 验证器\n    if ([true, false].includes(rules)) {\n      rules = [{ condition: `${rules}` }]\n    }\n\n    // 权限规则为字符串时，默认使用 condition 验证器\n    if (typeof rules === 'string') rules = [{ condition: rules }]\n\n    // 权限规则不为数组时，转为数组\n    if (!(rules instanceof Array)) rules = [rules]\n    return rules\n  }\n\n  /**\n   * 实例化验证器\n   * @param permissionRules 权限规则\n   */\n  private instantiateValidators(rules: any[]): PermissionRule[] {\n    const result: PermissionRule[] = rules.map((raw_rule) => {\n      const prule: PermissionRule = {}\n\n      // 检查用户配置的验证器是否已注册\n      for (const vname in raw_rule) {\n        const handler = this.validators[vname]\n        if (!handler) {\n          throw new Error(`unknown validator '${vname}' in your rules`)\n        }\n      }\n\n      // 逐一实例化验证器\n      for (const vname in this.validators) {\n        const handler = this.validators[vname]\n\n        // 如果用户并未配置此验证器，则其配置缺省为 undefined，验证器实现时需处理缺省情况\n        const config = raw_rule[vname]\n        prule[vname] = new Processor(vname, handler, config)\n      }\n      return prule\n    })\n\n    return result\n  }\n\n  /**\n   * 验证访问规则\n   * @param params\n   * @param injections\n   */\n  async validate(params: Params, injections: object): Promise<ValidateResult> {\n    const { collection, action: actionType } = params\n    this.logger.debug(`ruler validate with injections: `, injections)\n\n    const errors: ValidateError[] = []\n\n    // 判断所访问的集合是否配置规则\n    if (!this.collections.includes(collection)) {\n      this.logger.debug(`validate() ${collection} not in rules`)\n      const err: ValidateError = {\n        type: 0,\n        error: `collection \"${collection}\" not found`,\n      }\n      errors.push(err)\n      return { errors }\n    }\n\n    // action 是否合法\n    const action = getAction(actionType)\n    if (!action) {\n      const err: ValidateError = {\n        type: 0,\n        error: `action \"${actionType}\" invalid`,\n      }\n      errors.push(err)\n      return { errors }\n    }\n\n    const permName = this.getPermissionName(action.type)\n    const permRules: PermissionRule[] = this.rules[collection][permName]\n\n    // if no permission rules\n    if (!permRules) {\n      const err: ValidateError = {\n        type: 0,\n        error: `${collection} ${actionType} don't has any rules`,\n      }\n      errors.push(err)\n      return { errors }\n    }\n\n    this.logger.trace(\n      `${actionType} -> ${collection} permission rules: `,\n      permRules\n    )\n\n    // loop for validating every permission rule\n    let matched = null\n    const context: HandlerContext = { ruler: this, params, injections }\n\n    for (const validtrs of permRules) {\n      let error: ValidateError = null\n      // 执行一条规则的所有验证器\n      for (const vname in validtrs) {\n        const result = await validtrs[vname].run(context)\n        // 任一验证器执行不通过，则跳过本条规则\n        if (result) {\n          error = { type: vname, error: result }\n          break\n        }\n      }\n\n      if (error) errors.push(error)\n\n      // 本条规则验证通过\n      if (!error) {\n        matched = validtrs\n        break\n      }\n    }\n\n    // return error if no permission rule matched\n    if (!matched) {\n      this.logger.debug(`validate rejected: ${actionType} -> ${collection} `)\n      this.logger.trace(`validate errors: `, errors)\n      return { errors }\n    }\n\n    this.logger.debug(`validate passed: ${actionType} -> ${collection} `)\n    this.logger.trace(`matched: `, matched)\n\n    return { matched }\n  }\n\n  /**\n   * 注册验证器\n   * @param name\n   * @param handler\n   */\n  register(name: string, handler: Handler) {\n    assert.ok(name, `register error: name must not be empty`)\n    assert.ok(\n      handler instanceof Function,\n      `${name} register error: 'handler' must be a callable function`\n    )\n\n    const exists = Object.keys(this.validators).filter((vn) => vn === name)\n    assert.ok(!exists.length, `validator's name: '${name}' duplicated`)\n\n    this.validators[name] = handler\n  }\n\n  /**\n   * 加载内置验证器\n   */\n  private loadBuiltins() {\n    for (const name in BUILT_IN_VALIDATORS) {\n      const handler = BUILT_IN_VALIDATORS[name] as Handler\n      this.register(name, handler)\n    }\n  }\n\n  /**\n   * 获取指定 ActionType 对应的权限名\n   * @param action ActionType\n   * @returns\n   */\n  private getPermissionName(action: ActionType): PermissionType {\n    switch (action) {\n      case ActionType.ADD:\n        return PermissionType.ADD\n      case ActionType.READ:\n        return PermissionType.READ\n      case ActionType.AGGREGATE:\n        return PermissionType.AGGREGATE\n      case ActionType.UPDATE:\n        return PermissionType.UPDATE\n      case ActionType.REMOVE:\n        return PermissionType.REMOVE\n      case ActionType.COUNT:\n        return PermissionType.COUNT\n\n      default:\n        throw new Error('getPermissionName() unknown action')\n    }\n  }\n}\n"
  },
  {
    "path": "packages/database-proxy/src/processor.ts",
    "content": "import * as assert from 'assert'\nimport { Params } from './types'\nimport { PolicyInterface } from './policy/interface'\n\nexport enum ProcessTypes {\n  Validator = 'validator',\n}\n\nexport interface HandlerContext {\n  ruler: PolicyInterface\n  params: Params\n  injections: any\n}\n\nexport interface Handler {\n  (config: any, context: HandlerContext): any\n}\n\nexport class Processor {\n  protected handler: Handler\n  readonly name: string\n  readonly type: ProcessTypes\n  readonly config: any\n  constructor(\n    name: string,\n    handler: Handler,\n    config: any,\n    type: ProcessTypes = ProcessTypes.Validator\n  ) {\n    assert.ok(handler instanceof Function, `${name}'s handler must be callable`)\n\n    this.name = name\n    this.handler = handler\n\n    this.type = type\n    this.config = config\n  }\n\n  async run(context: HandlerContext): Promise<any> {\n    return await this.handler.call(this, this.config, context)\n  }\n}\n"
  },
  {
    "path": "packages/database-proxy/src/proxy.ts",
    "content": "import { AccessorInterface } from './accessor/accessor'\nimport { Params, ActionType, getAction } from './types'\nimport assert = require('assert')\nimport { DefaultLogger, LoggerInterface } from './logger'\nimport { PolicyInterface } from './policy'\n\nexport class Proxy {\n  private _accessor: AccessorInterface\n  private _policy: PolicyInterface\n  private _logger: LoggerInterface\n\n  constructor(accessor: AccessorInterface, policy: PolicyInterface) {\n    if (policy) {\n      this._policy = policy\n    }\n\n    if (accessor) {\n      this._accessor = accessor\n    }\n  }\n\n  get logger(): LoggerInterface {\n    if (!this._logger) {\n      this._logger = new DefaultLogger()\n    }\n    return this._logger\n  }\n\n  setLogger(logger: LoggerInterface) {\n    this._logger = logger\n  }\n\n  get accessor(): AccessorInterface {\n    assert(this._accessor, 'proxy: accessor is empty')\n    return this._accessor\n  }\n\n  /**\n   * @deprecated\n   * @param accessor\n   */\n  async setAccessor(accessor: AccessorInterface) {\n    this.logger.info(`change proxy's accessor: ` + accessor.type)\n    this._accessor = accessor\n  }\n\n  get policy(): PolicyInterface {\n    return this._policy\n  }\n\n  /**\n   * set policy\n   * @deprecated\n   * @param ruler\n   */\n  async setPolicy(policy: PolicyInterface) {\n    this.logger.info(`change proxy's policy`)\n    this._policy = policy\n  }\n\n  /**\n   * perform data request\n   * @param params\n   * @returns\n   */\n  async execute(params: Params) {\n    this.logger.info(`entry before executing`)\n    assert(this._accessor, 'accessor not configured for Proxy')\n    return await this.accessor.execute(params)\n  }\n\n  /**\n   * perform validation on request\n   * @param params\n   * @param injections\n   * @returns\n   */\n  async validate(params: Params, injections: object) {\n    this.logger.info(`entry validating`)\n    return await this.policy.validate(params, injections)\n  }\n\n  /**\n   * Parse request params\n   * @param reqParams req.body\n   * @returns\n   */\n  parseParams(reqParams: any): Params {\n    const { action } = reqParams\n    this.logger.info(`params parsing`)\n    const result = Proxy.parse(action, reqParams)\n    this.logger.debug(`params parsed: `, JSON.stringify(result))\n    return result\n  }\n\n  /**\n   * Parse request params\n   * @param actionType\n   * @param reqParams\n   * @returns\n   */\n  static parse(actionType: ActionType, reqParams: any): Params {\n    const { collectionName: collection } = reqParams\n\n    const params: Params = { action: actionType, collection }\n    const action = getAction(actionType)\n    if (!action) {\n      throw new Error(`unknown action: ${actionType}`)\n    }\n\n    // copy the params\n    action.fields.forEach((field) => {\n      if (reqParams[field]) params[field] = reqParams[field]\n    })\n\n    return params\n  }\n}\n"
  },
  {
    "path": "packages/database-proxy/src/types.ts",
    "content": "export enum ActionType {\n  READ = 'database.queryDocument',\n  UPDATE = 'database.updateDocument',\n  ADD = 'database.addDocument',\n  REMOVE = 'database.deleteDocument',\n  COUNT = 'database.countDocument',\n  WATCH = 'database.watchDocument',\n  AGGREGATE = 'database.aggregateDocuments',\n  CREATE_INDEX = 'database.createIndex',\n  CREATE_INDEXES = 'database.createIndexes',\n  DROP_INDEX = 'database.dropIndex',\n  DROP_INDEXES = 'database.dropIndexes',\n  LIST_INDEXES = 'database.listIndexes',\n}\n\nexport interface Action {\n  readonly type: ActionType\n  readonly fields: string[]\n}\n//  params types\nexport enum Direction {\n  DESC = 'desc',\n  ASC = 'asc',\n}\n\nexport interface Order {\n  direction: Direction\n  field: string\n}\n\n// left, right, inner, full\nexport enum JoinType {\n  INNER = 'inner',\n  LEFT = 'left',\n  RIGHT = 'right',\n  FULL = 'full',\n}\n\nexport interface JoinParam {\n  collection: string\n  type: JoinType\n  leftKey: string\n  rightKey: string\n}\n\nexport interface Params {\n  collection: string\n  action: ActionType\n  query?: any\n  data?: any\n\n  order?: Order[]\n  offset?: number\n  limit?: number\n  projection?: any\n  count?: boolean\n\n  multi?: boolean\n  upsert?: boolean\n  merge?: boolean\n\n  stages?: { stageKey: string; stageValue: string }[]\n\n  /**\n   * nested table name, when use join, like [{ tableName: {id: 1, name: 'xxx'}, subTable: {id: 1, age: 1}}]\n   * @deprecated this field is only used for mysql, and will be deprecated\n   * @see https://github.com/mysqljs/mysql#joins-with-overlapping-column-names\n   */\n  nested?: boolean\n\n  /**\n   * SQL join\n   * @deprecated this field is only used for mysql, and will be deprecated\n   */\n  joins?: JoinParam[]\n}\n\nconst ReadAcceptParams = [\n  'query',\n  'order',\n  'offset',\n  'limit',\n  'projection',\n  'multi',\n  'count',\n  'joins',\n  'nested',\n]\nconst UpdateAcceptParams = [\n  'query',\n  'data',\n  'multi',\n  'upsert',\n  'merge',\n  'joins',\n]\nconst AddAcceptParams = ['data', 'multi']\nconst RemoveAcceptParams = ['query', 'multi', 'joins']\nconst CountAcceptParams = ['query', 'joins']\nconst AggregateAcceptParams = ['stages']\nconst CreateIndexParams = ['data']\nconst DropIndexParams = ['data']\nconst DropIndexesParams = ['data']\nconst ListIndexesParams = ['data']\n\nconst ReadAction: Action = { type: ActionType.READ, fields: ReadAcceptParams }\nconst UpdateAction: Action = {\n  type: ActionType.UPDATE,\n  fields: UpdateAcceptParams,\n}\nconst RemoveAction: Action = {\n  type: ActionType.REMOVE,\n  fields: RemoveAcceptParams,\n}\nconst AddAction: Action = { type: ActionType.ADD, fields: AddAcceptParams }\nconst CountAction: Action = {\n  type: ActionType.COUNT,\n  fields: CountAcceptParams,\n}\nconst WatchAction: Action = { type: ActionType.WATCH, fields: ReadAcceptParams }\nconst AggregateAction: Action = {\n  type: ActionType.AGGREGATE,\n  fields: AggregateAcceptParams,\n}\nconst CreateIndexAction: Action = {\n  type: ActionType.CREATE_INDEX,\n  fields: CreateIndexParams,\n}\nconst DropIndexAction: Action = {\n  type: ActionType.DROP_INDEX,\n  fields: DropIndexParams,\n}\nconst DropIndexesAction: Action = {\n  type: ActionType.DROP_INDEXES,\n  fields: DropIndexesParams,\n}\nconst ListIndexesAction: Action = {\n  type: ActionType.LIST_INDEXES,\n  fields: ListIndexesParams,\n}\n\nexport function getAction(actionName: ActionType): Action | null {\n  let action: Action\n  switch (actionName) {\n    case ActionType.READ:\n      action = ReadAction\n      break\n    case ActionType.UPDATE:\n      action = UpdateAction\n      break\n    case ActionType.ADD:\n      action = AddAction\n      break\n    case ActionType.REMOVE:\n      action = RemoveAction\n      break\n    case ActionType.COUNT:\n      action = CountAction\n      break\n    case ActionType.WATCH:\n      action = WatchAction\n      break\n    case ActionType.AGGREGATE:\n      action = AggregateAction\n      break\n    case ActionType.CREATE_INDEX:\n      action = CreateIndexAction\n      break\n    case ActionType.DROP_INDEX:\n      action = DropIndexAction\n      break\n    case ActionType.DROP_INDEXES:\n      action = DropIndexesAction\n      break\n    case ActionType.LIST_INDEXES:\n      action = ListIndexesAction\n      break\n    default:\n      action = null\n  }\n  return action\n}\n\nexport const UPDATE_COMMANDS = {\n  SET: '$set',\n  REMOVE: '$unset',\n  INC: '$inc',\n  MUL: '$mul',\n  PUSH: '$push',\n  PULL: '$pull',\n  PULL_ALL: '$pullAll',\n  POP: '$pop',\n  SHIFT: '$shift',\n  UNSHIFT: '$unshift',\n  BIT: '$bit',\n  ADD_TO_SET: '$addToSet',\n  RENAME: '$rename',\n  MAX: '$max',\n  MIN: '$min',\n}\n\nexport const LOGIC_COMMANDS = {\n  AND: '$and',\n  OR: '$or',\n  NOT: '$not',\n  NOR: '$nor',\n}\n\nexport const QUERY_COMMANDS = {\n  EQ: '$eq',\n  NEQ: '$ne',\n  GT: '$gt',\n  GTE: '$gte',\n  LT: '$lt',\n  LTE: '$lte',\n  IN: '$in',\n  NIN: '$nin',\n  ALL: '$all',\n  EXISTS: '$exists',\n  SIZE: '$size',\n  MOD: '$mod',\n  ELE_MATCH: '$elemMatch',\n  GEO_NEAR: '$geoNear',\n  GEO_WITHIN: '$geoWithin',\n  GEO_INTERSECTS: '$geoIntersects',\n  LIKE: '$like', // only for SQL query\n  EXPR: '$expr',\n  TEXT: '$text',\n  SEARCH: '$search',\n}\n"
  },
  {
    "path": "packages/database-proxy/src/utils/constraint.ts",
    "content": "import { assert } from 'console'\nimport * as $ from 'validator'\nimport { HandlerContext } from '../processor'\nimport { executeScript, parseQueryURI } from './script'\n\nexport enum ConstraintTypes {\n  REQUIRED = 'required',\n  IN = 'in',\n  DEFAULT = 'default',\n  LENGTH = 'length',\n  NUMBER = 'number',\n  UNIQUE = 'unique',\n  MATCH = 'match',\n  EXISTS = 'exists',\n  CONDITION = 'condition',\n  COND = 'cond',\n  NOT_EXISTS = 'notExists',\n}\n\nexport class Constraint {\n  static readonly ALLOWED_CONSTRAINTS = [\n    ConstraintTypes.REQUIRED,\n    ConstraintTypes.IN,\n    ConstraintTypes.DEFAULT,\n    ConstraintTypes.LENGTH,\n    ConstraintTypes.NUMBER,\n    ConstraintTypes.UNIQUE,\n    ConstraintTypes.MATCH,\n    ConstraintTypes.EXISTS,\n    ConstraintTypes.CONDITION,\n    ConstraintTypes.COND,\n    ConstraintTypes.NOT_EXISTS,\n  ]\n\n  readonly context: HandlerContext\n  data: any\n\n  ignoreConstraints: string[]\n\n  constructor(\n    context: HandlerContext,\n    data: any,\n    ignoreConstraints?: string[]\n  ) {\n    assert(context, 'context cannot be empty')\n    assert(data, 'data to be constrainted cannot be empty')\n\n    this.context = context\n    this.data = data\n    this.ignoreConstraints = ignoreConstraints ?? []\n  }\n\n  /**\n   * 验证请求 query 中的一个字段\n   * 1. 如果请求 query 中缺省了该字段，除进行 required 和 default 检查外，则不进行额外约束，直接通过\n   * 2. 如果请求 query 中存在该字段，则对该字段进行所有约束检查，任意一条检查未通过则返回检查失败\n   * @param field 要验证的字段名\n   * @param constrains 此字段的约束配置\n   * @param context 请求上下文\n   * @returns\n   */\n  async constraintField(field: string, constrains: any) {\n    assert(this.context, 'context cannot be empty')\n    assert(this.data, 'data to be constrainted cannot be empty')\n\n    const data = this.data\n    if (typeof constrains === 'string') {\n      constrains = { condition: constrains }\n    }\n\n    if (typeof constrains !== 'object') {\n      return `config error: [${field}]'s constraint config must be an object`\n    }\n\n    /**\n     * 当此字段缺省时，进行 required 和 default 约束检查\n     * 1. 如果存在 default 设置，则将缺省字段设置为默认值，跳过 required 以及后续约束检查，直接通过\n     * 2. 如果不存在 default，则进行 requied 约束检查，并跳过后续约束检查\n     */\n    if (!this.ignored('default') && data[field] === undefined) {\n      // if default\n      if (constrains['default'] !== undefined) {\n        data[field] = data[field] = constrains['default']\n        return null\n      } else if (!this.ignored('required')) {\n        const isRequired = constrains['required'] == true\n        return isRequired ? `${field} is required` : null\n      }\n    }\n\n    // 排除掉 required & default 约束\n    const constraintNames = (\n      Object.keys(constrains) as ConstraintTypes[]\n    ).filter(\n      (name) =>\n        [ConstraintTypes.REQUIRED, ConstraintTypes.DEFAULT].includes(name) ==\n        false\n    )\n\n    // 对每个约束进行检查\n    for (const constraintName of constraintNames) {\n      if (this.ignored(constraintName)) {\n        continue\n      }\n      const options = constrains[constraintName]\n      const error = await this.checkConstraint(constraintName, options, field)\n      if (error) return error\n    }\n\n    return null\n  }\n\n  /**\n   * 对字段进行约束性检查\n   * @param constraintName 约束名\n   * @param constraintOption 约束配置\n   * @param fieldKey query 字段名\n   * @param context 请求上下文\n   * @returns error or null\n   */\n  async checkConstraint(\n    constraintName: ConstraintTypes,\n    constraintOption: any,\n    fieldKey: string\n  ) {\n    assert(this.context, 'context cannot be empty')\n    assert(this.data, 'data to be constrainted cannot be empty')\n\n    const data = this.data\n    if (!Constraint.ALLOWED_CONSTRAINTS.includes(constraintName)) {\n      return `config error: unknown rule [${constraintName}]`\n    }\n\n    const value = data[fieldKey]\n    const option = constraintOption\n\n    if (constraintName === ConstraintTypes.CONDITION) {\n      return await this.performCondition(option, fieldKey, value)\n    }\n\n    if (constraintName === ConstraintTypes.COND) {\n      return await this.performCondition(option, fieldKey, value)\n    }\n\n    if (constraintName === ConstraintTypes.IN) {\n      return this.performIn(option, fieldKey, value)\n    }\n\n    if (constraintName === ConstraintTypes.LENGTH) {\n      return this.performLength(option, fieldKey, value)\n    }\n\n    if (constraintName === ConstraintTypes.NUMBER) {\n      return this.performNumber(option, fieldKey, value)\n    }\n\n    if (constraintName === ConstraintTypes.MATCH) {\n      return this.performMatch(option, fieldKey, value)\n    }\n\n    // {\"exists\": \"/users/id\"},\n    if (constraintName === ConstraintTypes.EXISTS) {\n      return await this.performExists(option, fieldKey, value)\n    }\n\n    // {\"notExists\": \"/users/id\"},\n    if (constraintName === ConstraintTypes.NOT_EXISTS) {\n      return await this.performNotExists(option, fieldKey, value)\n    }\n\n    if (constraintName === ConstraintTypes.UNIQUE && constraintOption) {\n      return await this.performUnique(option, fieldKey, value)\n    }\n\n    return null\n  }\n\n  /**\n   * 约束未被忽略\n   * @param constraintName 约束名\n   * @returns\n   */\n  private ignored(constraintName: string): boolean {\n    return this.ignoreConstraints.includes(constraintName)\n  }\n\n  private async performCondition(\n    constraintOption: string,\n    fieldKey: string,\n    value: any\n  ) {\n    const { injections } = this.context\n\n    const global = { ...injections, $value: value, $v: value }\n    const { result, error } = await executeScript(\n      constraintOption,\n      global,\n      this.context,\n      fieldKey\n    )\n    if (error) return error\n\n    // 如果 result 为真，则通过验证\n    if (result) return null\n\n    return `condition evaluted to false`\n  }\n\n  private performIn(constraintOption: any[], fieldKey: string, value: any) {\n    if (!(constraintOption instanceof Array)) {\n      return `config error: ${fieldKey}#in must be an array`\n    }\n\n    if (!constraintOption.includes(value)) {\n      const str = constraintOption.join(',')\n      return `${fieldKey} should equal to one of [${str}]`\n    }\n  }\n\n  private performLength(\n    constraintOption: number[],\n    fieldKey: string,\n    value: any\n  ) {\n    if (!(constraintOption instanceof Array && constraintOption.length)) {\n      return `config error: ${fieldKey}#length must be an array with 1-2 integer element, ex. [3, 10]`\n    }\n\n    const min = constraintOption[0]\n    const max = constraintOption.length >= 2 ? constraintOption[1] : undefined\n    const ok = $.isLength(value, min, max)\n    if (!ok) {\n      let error = `length of ${fieldKey} should >= ${min}`\n      if (max !== undefined) error += ` and <= ${max}`\n      return error\n    }\n  }\n\n  private performNumber(\n    constraintOption: number[],\n    fieldKey: string,\n    value: any\n  ) {\n    if (!(constraintOption instanceof Array && constraintOption.length)) {\n      return `config error: ${fieldKey}#number must be an array with 1-2 integer element, ex. [3, 10]`\n    }\n\n    const min = constraintOption[0]\n    const max = constraintOption.length >= 2 ? constraintOption[1] : Infinity\n\n    const ok = value >= min && value <= max\n    if (!ok) {\n      let error = `${fieldKey} should >= ${min}`\n      if (max !== Infinity) error += ` and <= ${max}`\n      return error\n    }\n  }\n\n  private performMatch(constraintOption: string, fieldKey: string, value: any) {\n    if (!(typeof constraintOption === 'string' && constraintOption.length)) {\n      return `config error: ${fieldKey}#match must be a string`\n    }\n\n    try {\n      const partten = new RegExp(constraintOption)\n      const ok = partten.test(value)\n      if (!ok) {\n        return `${fieldKey} had invalid format`\n      }\n    } catch (error) {\n      return error\n    }\n  }\n\n  private async performExists(\n    constraintOption: string,\n    fieldKey: string,\n    value: any\n  ) {\n    if (!(typeof constraintOption === 'string' && constraintOption.length)) {\n      return `config error: ${fieldKey}#exists must be a string`\n    }\n\n    const { collection, field } = parseQueryURI(constraintOption)\n    const accessor = this.context.ruler.accessor\n\n    const ret = await accessor.get(collection, { [field]: value })\n    if (!ret) return `${fieldKey} not exists in ${collection}`\n  }\n\n  private async performNotExists(\n    constraintOption: string,\n    fieldKey: string,\n    value: any\n  ) {\n    if (!(typeof constraintOption === 'string' && constraintOption.length)) {\n      return `config error: ${fieldKey}#notExists must be a string`\n    }\n\n    const { collection, field } = parseQueryURI(constraintOption)\n    const accessor = this.context.ruler.accessor\n\n    const ret = await accessor.get(collection, { [field]: value })\n    if (ret) return `${fieldKey} already exists in ${collection}`\n  }\n\n  private async performUnique(\n    _constraintOption: string,\n    fieldKey: string,\n    value: any\n  ) {\n    const accessor = this.context.ruler.accessor\n    const collection = this.context.params.collection\n    const ret = await accessor.get(collection, { [fieldKey]: value })\n    if (ret) return `${fieldKey} already exists`\n  }\n}\n"
  },
  {
    "path": "packages/database-proxy/src/utils/script.ts",
    "content": "import * as vm from 'vm'\nimport { HandlerContext } from '..'\nimport { AccessorInterface } from '../accessor'\n\ninterface QueryResultPair {\n  query: [string, any]\n  result: any\n}\n\n/**\n * 用于各场景下的 condition 表达式执行，支持 get() 函数\n * @param code js code\n * @param objects 要注入执行环境的对象\n * @param context 请求上下文\n * @param defaultField 当前上下文可指定的字段，用于 query 或 data 验证字段\n * @returns\n */\nexport async function executeScript(\n  code: string,\n  objects: any,\n  context: HandlerContext,\n  defaultField?: string\n): Promise<{ result?: any; error?: any }> {\n  try {\n    objects = objects ?? {}\n    const { params, ruler } = context\n    const global = { ...objects }\n\n    /**\n     * 获取代码里可能出现的 get() 函数\n     * 因 get() 是异步的，无法直接执行，所以提前获取其调用位置和参数\n     */\n    const queries = getQueries(code, global)\n\n    // 逐个调用代码中的 get() 函数，并保存其返回结果\n    const prepared: QueryResultPair[] = []\n    for (const query of queries) {\n      const [value, target] = query\n      let { collection, field } = parseQueryURI(target)\n      // 缺省时查当前请求的集合\n      if (!collection) collection = params.collection\n      if (!field) field = defaultField ?? '_id'\n\n      const result = await doGetQuery(collection, field, value, ruler.accessor)\n      prepared.push({ query, result })\n    }\n\n    // 构造 get() 函数\n    function GetFunc(target: string, value: any) {\n      for (const el of prepared) {\n        const [v, t] = el.query\n        if (t === target && v === value) return el.result\n      }\n      return null\n    }\n\n    global.get = GetFunc\n    const script = new vm.Script(code)\n    const result = script.runInNewContext(global)\n    return { result }\n  } catch (error) {\n    return { error }\n  }\n}\n\n/**\n * 解析查询路径\n * @param target target like '/users/_id'  or `users/_id` or `_id` or undefined\n * @param defaultCollection\n * @param defaultField\n * @returns\n */\nexport function parseQueryURI(target: string): {\n  collection?: string\n  field?: string\n} {\n  if (!target) {\n    return {}\n  }\n\n  const arr = target.split('/')\n  if (arr.length === 1) {\n    return { field: arr[0] }\n  }\n\n  if (arr.length === 2) {\n    return { collection: arr[0], field: arr[1] }\n  }\n\n  if (arr.length === 3) {\n    return { collection: arr[1], field: arr[2] }\n  }\n}\n\nasync function doGetQuery(\n  collection: string,\n  field: string,\n  value: any,\n  accessor: AccessorInterface\n): Promise<any> {\n  const query = {\n    [field]: value,\n  }\n  const result = await accessor.get(collection, query)\n  return result\n}\n\nfunction getQueries(code: string, injections: any): [string, any][] {\n  const wrapper = `\n    const __arr = []\n    function get(...params){\n        __arr.push(params)\n        return {}\n    }\n    ${code};\n    (__arr);\n  `\n  const script = new vm.Script(wrapper)\n  const queries = script.runInNewContext(injections)\n  return queries\n}\n"
  },
  {
    "path": "packages/database-proxy/src/utils/security.ts",
    "content": "import { LOGIC_COMMANDS, QUERY_COMMANDS, UPDATE_COMMANDS } from '../types'\n\n/**\n * 安全工具\n */\nexport class SecurityUtil {\n  // 检查字段名是否合法：data field, query field\n  static checkField(name: string): boolean {\n    if (this.isQueryOrLogicOperator(name)) {\n      return true\n    }\n\n    const black_list = [\n      ' ',\n      '#',\n      // ' or ',\n      ';',\n      `'`,\n      `\"`,\n      '`',\n      '-',\n      '/',\n      '*',\n      '\\\\',\n      '+',\n      '%',\n    ]\n    if (this.containChars(name, black_list)) {\n      return false\n    }\n\n    return true\n  }\n\n  // 检查字段名是否合法：data field, query field\n  static checkProjection(name: string): boolean {\n    const black_list = [\n      '#',\n      ' or ',\n      ';',\n      `'`,\n      `\"`,\n      '`',\n      '+',\n      '-',\n      '/',\n      '\\\\',\n      '%',\n    ]\n    if (this.containChars(name, black_list)) {\n      return false\n    }\n\n    return true\n  }\n\n  /**\n   * 递归收集 query 中的字段列表，去除操作符（逻辑、查询操作符）\n   * @param query 请求 query 对象\n   * @returns\n   */\n  static resolveFieldFromQuery(query: object): string[] {\n    const sets = []\n    for (const key in query) {\n      if (this.isQueryOrLogicOperator(key)) {\n        const ret = this.resolveFieldFromQuery(query[key])\n        sets.push(...ret)\n      } else {\n        sets.push(key)\n      }\n    }\n\n    return sets\n  }\n\n  /**\n   * 递归收集 data 中的字段列表，去除更新操作符\n   * @param data\n   */\n  static resolveFieldFromData(data: object): string[] {\n    const sets = []\n    for (const key in data) {\n      if (this.isUpdateOperator(key)) {\n        const ret = this.resolveFieldFromData(data[key])\n        sets.push(...ret)\n      } else {\n        sets.push(key)\n      }\n    }\n\n    return sets\n  }\n\n  /**\n   * 判断字段列是否都在白名单内\n   * @param input_fields [string] 输入字段列表\n   * @param allow_fields [string] 允许的字段列表\n   */\n  static isAllowedFields(\n    input_fields: string[],\n    allow_fields: string[]\n  ): string | null {\n    for (const fd of input_fields) {\n      if (!allow_fields.includes(fd)) return `the field '${fd}' is NOT allowed]`\n    }\n    return null\n  }\n\n  /**\n   * 检查给定字符串中是否包含指定字符\n   * @param source 字符串\n   * @param str_list 字符白名单或黑名单\n   * @returns\n   */\n  static containChars(source: string, str_list: string[]): boolean {\n    for (const ch of str_list) {\n      if (source.indexOf(ch) >= 0) return true\n    }\n\n    return false\n  }\n\n  // 是否为逻辑操作符\n  static isLogicOperator(key: string): boolean {\n    const keys = Object.keys(LOGIC_COMMANDS).map((k) => LOGIC_COMMANDS[k])\n    return keys.includes(key)\n  }\n\n  // 是否为查询操作符(QUERY_COMMANDS)\n  static isQueryOperator(key: string): boolean {\n    const keys = Object.keys(QUERY_COMMANDS).map((k) => QUERY_COMMANDS[k])\n    return keys.includes(key)\n  }\n\n  // 是否为查询或逻辑操作符\n  static isQueryOrLogicOperator(key: string): boolean {\n    return this.isLogicOperator(key) || this.isQueryOperator(key)\n  }\n\n  // 是否存在更新操作符\n  static hasUpdateOperator(data: any): boolean {\n    const OPTRS = Object.values(UPDATE_COMMANDS)\n\n    let has = false\n    const checkMixed = (objs) => {\n      if (typeof objs !== 'object') return\n\n      for (const key in objs) {\n        if (OPTRS.includes(key)) {\n          has = true\n        } else if (typeof objs[key] === 'object') {\n          checkMixed(objs[key])\n        }\n      }\n    }\n    checkMixed(data)\n\n    return has\n  }\n\n  // 是否为更新操作符\n  static isUpdateOperator(key: string): boolean {\n    const keys = Object.keys(UPDATE_COMMANDS).map((k) => UPDATE_COMMANDS[k])\n    return keys.includes(key)\n  }\n\n  /**\n   * 将带操作符的 data 对象平铺\n   * \n  data: {\n      title: '',\n      $set: {\n          content: '',\n          author: 123\n      },\n      $inc: {\n          age: 1\n      },\n      $push: {\n          grades: 99,\n      },\n  }\n  */\n  static flattenData(data: any = {}): object {\n    const result = {}\n\n    for (const key in data) {\n      if (!this.isUpdateOperator(key)) {\n        result[key] = data[key]\n        continue\n      }\n\n      const obj = data[key]\n      for (const k in obj) {\n        result[k] = obj[k]\n      }\n    }\n    return result\n  }\n}\n"
  },
  {
    "path": "packages/database-proxy/src/validators/condition/index.ts",
    "content": "import * as vm from 'vm'\nimport { Handler } from '../../processor'\nimport { AccessorInterface } from '../../accessor'\n\ninterface QueryResultPair {\n  query: [string, any]\n  result: any\n}\n\nexport const ConditionHandler: Handler = async function (config, context) {\n  // 缺省验证时，给予通过\n  if (config === undefined) {\n    return null\n  }\n\n  try {\n    const { injections, params, ruler } = context\n    const global = { ...injections, ...params }\n\n    const queries = getQueries(config, global)\n\n    const prepared: QueryResultPair[] = []\n\n    for (const query of queries) {\n      const [target, value] = query\n      const result = await doQuery(target, value, ruler.accessor)\n      prepared.push({ query, result })\n    }\n\n    function GetFunc(target: string, value: any) {\n      for (const el of prepared) {\n        const [t, v] = el.query\n        if (t === target && v === value) return el.result\n      }\n      return null\n    }\n\n    global.get = GetFunc\n    const script = new vm.Script(config)\n    const result = script.runInNewContext(global)\n    if (result) return null\n\n    return 'the expression evaluated to a falsy value'\n  } catch (error) {\n    return error\n  }\n}\n\nasync function doQuery(\n  target: string,\n  value: any,\n  accessor: AccessorInterface\n): Promise<any> {\n  // target like '/users/_id'\n  const [, collection, field] = target.split('/')\n  const query = {\n    [field]: value,\n  }\n  const result = await accessor.get(collection, query)\n  return result\n}\n\nfunction getQueries(code: string, injections: any): [string, any][] {\n  const wrapper = `\n    let collection = []\n    function get(...params){\n        collection.push(params)\n        return {}\n    }\n    ${code};\n    (collection);\n  `\n  const script = new vm.Script(wrapper)\n  const queries = script.runInNewContext(injections)\n  return queries\n}\n"
  },
  {
    "path": "packages/database-proxy/src/validators/data/index.ts",
    "content": "import { Handler } from '../../processor'\nimport { HandlerContext } from '../..'\nimport { ActionType } from '../../types'\nimport { SecurityUtil } from '../../utils/security'\nimport { Constraint, ConstraintTypes } from '../../utils/constraint'\nimport { assert } from 'console'\n\nexport const DataHandler: Handler = async function (config, context) {\n  // 缺省时，直接通过\n  if (config === undefined) {\n    return null\n  }\n\n  const { data, merge, action } = context.params\n\n  if (!data) return 'data is undefined'\n  if (typeof data !== 'object') return 'data must be an object'\n\n  if (action === ActionType.ADD) {\n    return await dealAddData(config, context)\n  }\n\n  if (action === ActionType.UPDATE && merge) {\n    return await dealUpdateData(config, context)\n  }\n\n  if (action === ActionType.UPDATE && !merge) {\n    return await dealAddData(config, context)\n  }\n}\n\n/**\n * 处理 add data\n * @param config\n * @param context\n * @returns\n */\nasync function dealAddData(config: any, context: HandlerContext) {\n  const { data } = context.params\n\n  // data in add 不可有操作符\n  if (SecurityUtil.hasUpdateOperator(data)) {\n    return 'data must not contain any operator'\n  }\n\n  const input_fields = Object.keys(data)\n  if (!input_fields.length) return 'data is empty'\n\n  // 数组代表只允许出现的字段\n  if (config instanceof Array) {\n    const allow_fields = config\n    const error = SecurityUtil.isAllowedFields(input_fields, allow_fields)\n    return error\n  }\n\n  // 对象则逐一检查字段约束\n  if (typeof config === 'object') {\n    const allow_fields = Object.keys(config)\n    let error = SecurityUtil.isAllowedFields(input_fields, allow_fields)\n    if (error) return error\n\n    const constraint = new Constraint(context, data)\n    for (const field of allow_fields) {\n      error = await constraint.constraintField(field, config[field])\n      if (error) return error\n    }\n    return null\n  }\n\n  return 'config error: config must be an array or object'\n}\n\n/**\n * 处理 update data\n * @param config\n * @param context\n * @returns\n */\nasync function dealUpdateData(config: any, context: HandlerContext) {\n  const { data, merge } = context.params\n  assert(merge, 'merge should be true when perform updating')\n\n  const flatten = SecurityUtil.flattenData(data)\n\n  const fields = Object.keys(flatten)\n  if (!fields.length) return 'data is empty'\n  let allow_fields = []\n\n  // 更新时必须有更新操作符，如 $set $push $inc $mul 之类的操作符\n  if (!SecurityUtil.hasUpdateOperator(data)) {\n    return 'data must contain operator while `merge` with true'\n  }\n\n  // 数组代表只允许出现的字段\n  if (config instanceof Array) {\n    allow_fields = config\n    const error = SecurityUtil.isAllowedFields(fields, allow_fields)\n    return error\n  }\n\n  // 对象则逐一检查字段约束\n  if (typeof config === 'object') {\n    allow_fields = Object.keys(config)\n    let error = SecurityUtil.isAllowedFields(fields, allow_fields)\n    if (error) return error\n\n    // 只对 $set 数据做约束检查\n    const set_data = data.$set ?? {}\n\n    // 更新时忽略 required 和 default 约束\n    const constraint = new Constraint(context, set_data, [\n      ConstraintTypes.REQUIRED,\n      ConstraintTypes.DEFAULT,\n    ])\n    for (const field of allow_fields) {\n      error = await constraint.constraintField(field, config[field])\n      if (error) return error\n    }\n    return null\n  }\n\n  return 'config error: config must be an array or object'\n}\n"
  },
  {
    "path": "packages/database-proxy/src/validators/index.ts",
    "content": "import { ConditionHandler } from './condition'\nimport { DataHandler } from './data'\nimport { QueryHandler } from './query'\nimport { MultiHandler } from './multi'\nimport { JoinHandler } from './join'\nimport { LookupHandler } from './lookup'\n\nexport const condition = ConditionHandler\nexport const cond = ConditionHandler // alias of condition\n\nexport const data = DataHandler\nexport const schema = DataHandler // alias of data\nexport const query = QueryHandler\nexport const multi = MultiHandler\nexport const join = JoinHandler\nexport const lookup = LookupHandler\n"
  },
  {
    "path": "packages/database-proxy/src/validators/join/index.ts",
    "content": "import { Handler } from '../../processor'\nimport { ActionType, JoinType } from '../../types'\n// import { execScript } from '../utils'\n/**\n * 本验证器应该加载为了缺省验证器，即用户未配置 join 时，也会进行缺省验证\n * Join 联表的验证规则，可支持以下两种写法：\n * 1. 配置可以与哪些表关联查询 join [\"t1\", \"t2\"]\n * 2. 更详细的配置，指定关联字段，客户端关联字段需要于此一致\n *    如果缺省，则使用配置作为默认字段 join { t1 [\"leftid\", \"rightid\"], t2 [\"lid\", \"rid\"] }\n * @param config\n * @param context\n */\n\nexport const JoinHandler: Handler = async function (config, context) {\n  const { action } = context.params\n  const joins = context.params.joins || []\n\n  // 无联表的查询直接通过\n  if (joins.length === 0) {\n    return null\n  }\n\n  // 只有读操作可联表\n  if (action !== ActionType.READ) {\n    return 'operation denied: only READ support join query'\n  }\n\n  // 缺省验证规则：默认不允许 join 操作\n  if (config === undefined) {\n    return 'join query denied by default'\n  }\n\n  // 当配置为字符串时，拼成数组\n  if (typeof config === 'string') {\n    config = [config]\n  }\n\n  if (!(config instanceof Array)) {\n    return 'config must be string or string[]'\n  }\n\n  // 配置为数组形式时, like ['x_table', 'y_table']\n  // 代表为允许联查的表名\n  if (!config.every((it) => typeof it === 'string')) {\n    return `config must be string or string[]`\n  }\n\n  for (const join of joins) {\n    if (!config.includes(join.collection)) {\n      return `join query with ${join.collection} denied`\n    }\n\n    // TODO 需要实现对子表权限的判断？否则 right, full 操作会有安全问题\n    // 暂只允许 left join 以防止此问题\n    if (join.type != JoinType.LEFT) {\n      return `only left join supported by now`\n    }\n  }\n\n  return null\n}\n"
  },
  {
    "path": "packages/database-proxy/src/validators/lookup/index.ts",
    "content": "import { Handler } from '../../processor'\nimport { ActionType } from '../../types'\n\n/**\n * 此验证器是缺省验证器，不可配置：\n * - 检查 aggregate 操作中是否包含 $lookup，并禁止客户端进行 $lookup 操作\n *\n * @TODO 未来可考虑支持 $lookup 的子查询权限验证，相对复杂，暂不考虑\n *\n * @param config\n * @param context\n */\n\nexport const LookupHandler: Handler = async function (_config, context) {\n  const { action } = context.params\n  if (action !== ActionType.AGGREGATE) {\n    return null\n  }\n\n  const stages = context.params?.stages || []\n  const [foundLookup] = stages.filter((item) => item.stageKey === '$lookup')\n\n  if (foundLookup) {\n    return '$lookup operation is forbidden for client'\n  }\n\n  return null\n}\n"
  },
  {
    "path": "packages/database-proxy/src/validators/multi/index.ts",
    "content": "import { Handler } from '../../processor'\nimport { ActionType } from '../../types'\nimport { executeScript } from '../../utils/script'\n\n/**\n * 是否允许用户操作多条数据\n * 1. 读操作默认允许查询多条\n * 2. 写操作默认不允许多条操作\n * @param config\n * @param context\n */\nexport const MultiHandler: Handler = async function (config, context) {\n  const { query, multi, data, action } = context.params\n\n  let allow_multi = false\n\n  // 读操作默认开启 multi\n  if (action === ActionType.READ) {\n    allow_multi = true\n  }\n\n  // 布尔值配置方式\n  if ([true, false].includes(config)) {\n    allow_multi = config\n  }\n\n  // 字符串代表表达式\n  if (typeof config === 'string') {\n    const { injections } = context\n    const global = {\n      ...injections,\n      query,\n      data,\n      multi,\n    }\n    const { result } = await executeScript(config, global, context)\n    allow_multi = result ? true : false\n  }\n\n  if (action === ActionType.ADD) {\n    // 要插入的数据是数组，但传入的 multi 却是假值\n    if (data instanceof Array && !multi) {\n      return 'multi insert operation denied'\n    }\n  }\n\n  // 规则允许，则直接通过\n  if (allow_multi) {\n    return null\n  }\n\n  // 规则不允许 multi 且不匹配则拒绝\n  if (!allow_multi && multi) {\n    return 'multi operation denied'\n  }\n\n  return null\n}\n"
  },
  {
    "path": "packages/database-proxy/src/validators/query/index.ts",
    "content": "import { Handler } from '../../processor'\nimport { HandlerContext } from '../..'\nimport { SecurityUtil } from '../../utils/security'\nimport { Constraint } from '../../utils/constraint'\n\n/**\n * 对 query 对象进行验证\n * 1. 如果配置为数组，则代表只允许数组内的字段名做为查询条件，如 ['id', 'status']\n * 2. 如果配置为对象，也只允许使用对象内的字段名做为查询条件，并对每个字段做约束性检查\n * @param config 验证器配置，可为数组或对象\n * @param context 上下文\n * @returns\n */\nexport const QueryHandler: Handler = async function (config, context) {\n  // 缺省时，直接通过\n  if (config === undefined) {\n    return null\n  }\n  const { query } = context.params\n\n  if (!query) return 'query is undefined'\n  if (typeof query !== 'object') return 'query must be an object'\n\n  // 数组代表只允许出现的字段\n  if (config instanceof Array) {\n    return checkWithArray(config, context)\n  }\n\n  // 如果是对象，则 key 为字段名，值为字段约束条件\n  if (typeof config === 'object') {\n    return checkWithObject(config, context)\n  }\n\n  return 'config error: config must be an array or object'\n}\n\n/**\n * 如果配置规则为数组，则代表限定的 query 字段列表\n * @param fields 允许的字段\n * @param context 上下文\n * @returns\n */\nfunction checkWithArray(\n  fields: string[],\n  context: HandlerContext\n): string | null {\n  const { query } = context.params\n  const input_fields = SecurityUtil.resolveFieldFromQuery(query)\n\n  const error = SecurityUtil.isAllowedFields(input_fields, fields)\n  return error\n}\n\n/**\n * 如果配置为对象，则对其中每个字段进行约束检查\n * @param object 字段及其约束\n * @param context 上下文\n * @returns\n */\nasync function checkWithObject(\n  object: any,\n  context: HandlerContext\n): Promise<string | null> {\n  const { query } = context.params\n  const input_fields = SecurityUtil.resolveFieldFromQuery(query)\n  const allow_fields = Object.keys(object)\n\n  let error = SecurityUtil.isAllowedFields(input_fields, allow_fields)\n  if (error) return error\n\n  const constraint = new Constraint(context, query)\n  for (const field of allow_fields) {\n    error = await constraint.constraintField(field, object[field])\n    if (error) return error\n  }\n  return null\n}\n"
  },
  {
    "path": "packages/database-proxy/tests/mongo_db/_db.js",
    "content": "const dbconfig = {\n  dbName: 'testdb',\n  url: 'mongodb://localhost:27018',\n  connSettings: {\n    directConnection: true,\n  },\n}\n\nmodule.exports = {\n  dbconfig,\n}\n"
  },
  {
    "path": "packages/database-proxy/tests/mongo_db/add.test.js",
    "content": "const assert = require('assert')\nconst { Proxy, MongoAccessor, ActionType } = require('../../dist')\n\nconst { dbconfig } = require('./_db')\n\nconst COLL_NAME = 'test_add'\n\nasync function restoreTestData(coll) {\n  await coll.deleteMany({})\n}\n\ndescribe('db-proxy(mongo): db.add()', function () {\n  this.timeout(10000)\n\n  const accessor = new MongoAccessor(\n    dbconfig.dbName,\n    dbconfig.url,\n    dbconfig.connSettings\n  )\n  const entry = new Proxy(accessor)\n  let coll = null\n\n  before(async () => {\n    await accessor.init()\n\n    // insert data\n    coll = accessor.db.collection(COLL_NAME)\n    await restoreTestData(coll)\n  })\n\n  it('add one should be ok', async () => {\n    await restoreTestData(coll)\n\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.ADD,\n      data: { title: 'title-1', content: 'content-1' },\n    }\n    const r = await entry.execute(params)\n    assert.ok(r._id)\n\n    const inserted = await coll.find().toArray()\n    assert.ok(inserted instanceof Array)\n    assert.equal(inserted.length, 1)\n    assert.equal(inserted[0].title, 'title-1')\n    assert.equal(inserted[0].content, 'content-1')\n  })\n\n  it('add two docs with multi === true should be ok', async () => {\n    await restoreTestData(coll)\n\n    const TEST_DATA = [\n      { title: 'title-1', content: 'content-1' },\n      { title: 'title-2', content: 'content-2' },\n    ]\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.ADD,\n      data: TEST_DATA,\n      multi: true,\n    }\n\n    const r = await entry.execute(params)\n    assert.equal(r.insertedCount, 2)\n    assert.ok(r._id) // object: { '0': 5d71614ff3922156c0f01f23, '1': 5d71614ff3922156c0f01f24 }\n\n    const inserted = await coll.find().toArray()\n\n    assert.ok(inserted instanceof Array)\n    assert.equal(inserted.length, 2)\n\n    assert.equal(inserted[0].title, 'title-1')\n    assert.equal(inserted[0].content, 'content-1')\n\n    assert.equal(inserted[1].title, 'title-2')\n    assert.equal(inserted[1].content, 'content-2')\n  })\n\n  it('add tow docs with multi === false should catch an error', async () => {\n    await restoreTestData(coll)\n\n    const TEST_DATA = [\n      { title: 'title-1', content: 'content-1' },\n      { title: 'title-2', content: 'content-2' },\n    ]\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.ADD,\n      data: TEST_DATA,\n      multi: false,\n    }\n\n    try {\n      await entry.execute(params)\n    } catch (err) {\n      assert.ok(\n        err\n          .toString()\n          .indexOf(\n            \"BSON field 'insert.documents.0' is the wrong type 'array', expected type 'object'\"\n          ) > 0\n      )\n    }\n  })\n\n  after(async () => {\n    await coll.deleteMany({})\n    if (entry) accessor.conn.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mongo_db/aggregate.test.js",
    "content": "const assert = require('assert')\nconst { EJSON } = require('bson')\nconst { Proxy, MongoAccessor, ActionType, Policy } = require('../../dist')\n\nconst { dbconfig } = require('./_db')\n\nconst TEST_DATA = [\n  { title: 'title-1', content: 'content-1', state: 0, gender: 1 },\n  { title: 'title-2', content: 'content-2', state: 1, gender: 0 },\n  { title: 'title-3', content: 'content-3', state: 3, gender: 1 },\n]\n\ndescribe('db-proxy(mongo): db.aggregate()', function () {\n  this.timeout(10000)\n\n  const accessor = new MongoAccessor(\n    dbconfig.dbName,\n    dbconfig.url,\n    dbconfig.connSettings\n  )\n  const proxy = new Proxy(accessor, new Policy())\n  let coll = null\n\n  before(async () => {\n    await accessor.init()\n\n    // insert data\n    coll = accessor.db.collection('test_read')\n    await coll.deleteMany({})\n    const r = await coll.insertMany(TEST_DATA)\n    assert.equal(r.insertedCount, TEST_DATA.length)\n  })\n\n  it('$match ', async () => {\n    const params = {\n      collection: 'test_read',\n      action: ActionType.AGGREGATE,\n      stages: [\n        {\n          stageKey: '$match',\n          stageValue: EJSON.stringify({ title: TEST_DATA[0].title }),\n        },\n      ],\n    }\n    const data = await proxy.execute(params)\n    assert.ok(data.list instanceof Array)\n    assert.equal(data.list.length, 1)\n  })\n\n  it('$group ', async () => {\n    const params = {\n      collection: 'test_read',\n      action: ActionType.AGGREGATE,\n      stages: [\n        {\n          stageKey: '$group',\n          stageValue: EJSON.stringify({\n            _id: '$gender',\n            items: {\n              $push: { title: '$title', content: '$content', state: '$state' },\n            },\n          }),\n        },\n      ],\n    }\n    const data = await proxy.execute(params)\n    assert.ok(data.list instanceof Array)\n    assert.equal(data.list.length, 2)\n  })\n\n  after(async () => {\n    await coll.deleteMany({})\n    if (proxy) accessor.conn.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mongo_db/count.test.js",
    "content": "const assert = require('assert')\nconst { Proxy, MongoAccessor, ActionType } = require('../../dist')\nconst { dbconfig } = require('./_db')\n\nconst TEST_DATA = [\n  { type: 'a', title: 'title-1', content: 'content-1' },\n  { type: 'a', title: 'title-2', content: 'content-2' },\n  { type: 'b', title: 'title-3', content: 'content-3' },\n]\n\ndescribe('db-proxy(mongo): db.count()', function () {\n  this.timeout(10000)\n\n  const accessor = new MongoAccessor(\n    dbconfig.dbName,\n    dbconfig.url,\n    dbconfig.connSettings\n  )\n  const entry = new Proxy(accessor)\n  let coll = null\n\n  before(async () => {\n    await accessor.init()\n\n    // insert data\n    coll = accessor.db.collection('test_count')\n    await coll.deleteMany({})\n    const r = await coll.insertMany(TEST_DATA)\n    assert.equal(r.insertedCount, TEST_DATA.length)\n  })\n\n  it('count all without query should be ok', async () => {\n    const params = {\n      collection: 'test_count',\n      action: ActionType.COUNT,\n    }\n    const result = await entry.execute(params)\n    assert.ok(result)\n    assert.equal(result.total, TEST_DATA.length)\n  })\n\n  it('count with query should be ok', async () => {\n    const params = {\n      collection: 'test_count',\n      action: ActionType.COUNT,\n      query: { type: 'a' },\n    }\n    let result = await entry.execute(params)\n    assert.ok(result)\n    assert.equal(result.total, 2)\n\n    params.query.type = 'b'\n    result = await entry.execute(params)\n    assert.ok(result)\n    assert.equal(result.total, 1)\n\n    params.query = { $or: [{ type: 'a' }, { type: 'b' }] }\n    result = await entry.execute(params)\n    assert.ok(result)\n    assert.equal(result.total, 3)\n\n    params.query.type = 'invalid_type'\n    result = await entry.execute(params)\n    assert.ok(result)\n    assert.equal(result.total, 0)\n  })\n\n  after(async () => {\n    await coll.deleteMany({})\n    if (entry) accessor.conn.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mongo_db/dbi.test.js",
    "content": "const assert = require('assert')\nconst { Proxy, MongoAccessor, ActionType, getDb } = require('../../dist')\n\nconst { dbconfig } = require('./_db')\n\nconst TEST_DATA = [\n  { title: 'title-1', content: 'content-1' },\n  { title: 'title-2', content: 'content-2' },\n  { title: 'title-3', content: 'content-3' },\n]\n\ndescribe('db-proxy(mongo): DBI', function () {\n  this.timeout(10000)\n\n  const accessor = new MongoAccessor(\n    dbconfig.dbName,\n    dbconfig.url,\n    dbconfig.connSettings\n  )\n  const db = getDb(accessor)\n\n  before(async () => {\n    // insert data\n    await accessor.init()\n\n    const r = await db.collection('dbi_test').add(TEST_DATA[0])\n    assert.ok(r.id)\n  })\n\n  it('read one should be ok', async () => {\n    const { data } = await db.collection('dbi_test').where({}).get()\n    assert.ok(data.length)\n  })\n\n  it('aggregate should be ok', async () => {\n    const res = await db\n      .collection('dbi_test')\n      .aggregate([{ $match: { title: 'title-1' } }])\n      .end()\n\n    assert.equal(res.data.length, 1)\n    assert.equal(res.data[0].title, 'title-1')\n  })\n\n  after(async () => {\n    await db.collection('dbi_test').where({}).remove({ multi: true })\n    accessor.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mongo_db/read.test.js",
    "content": "const assert = require('assert')\nconst { Proxy, MongoAccessor, ActionType, Policy } = require('../../dist')\n\nconst { dbconfig } = require('./_db')\n\nconst TEST_DATA = [\n  { title: 'title-1', content: 'content-1' },\n  { title: 'title-2', content: 'content-2' },\n  { title: 'title-3', content: 'content-3' },\n]\n\ndescribe('db-proxy(mongo): db.get()', function () {\n  this.timeout(10000)\n\n  const accessor = new MongoAccessor(\n    dbconfig.dbName,\n    dbconfig.url,\n    dbconfig.connSettings\n  )\n  const entry = new Proxy(accessor, new Policy())\n  let coll = null\n\n  before(async () => {\n    await accessor.init()\n\n    // insert data\n    coll = accessor.db.collection('test_read')\n    await coll.deleteMany({})\n    const r = await coll.insertMany(TEST_DATA)\n    assert.equal(r.insertedCount, TEST_DATA.length)\n  })\n\n  it('read all without query should be ok', async () => {\n    const params = {\n      collection: 'test_read',\n      action: ActionType.READ,\n    }\n    const data = await entry.execute(params)\n    assert.ok(data.list instanceof Array)\n    assert.equal(data.list.length, TEST_DATA.length)\n  })\n\n  it('read with query should be ok', async () => {\n    const params = {\n      collection: 'test_read',\n      action: ActionType.READ,\n      query: { title: TEST_DATA[0].title },\n    }\n    const data = await entry.execute(params)\n    assert.ok(data.list instanceof Array)\n    assert.equal(data.list.length, 1)\n    assert.equal(data.list[0].title, TEST_DATA[0].title)\n  })\n\n  it('read with order(desc) should be ok', async () => {\n    const params = {\n      collection: 'test_read',\n      action: ActionType.READ,\n      query: {},\n      order: [{ field: 'title', direction: 'desc' }],\n    }\n    const data = await entry.execute(params)\n    assert.ok(data.list instanceof Array)\n    assert.equal(data.list.length, TEST_DATA.length)\n    const lastItem = TEST_DATA[TEST_DATA.length - 1]\n    assert.equal(data.list[0].title, lastItem.title)\n  })\n\n  it('read with order(asc) should be ok', async () => {\n    const params = {\n      collection: 'test_read',\n      action: ActionType.READ,\n      query: {},\n      order: [{ field: 'title', direction: 'asc' }],\n    }\n    const data = await entry.execute(params)\n    assert.ok(data.list instanceof Array)\n    assert.equal(data.list.length, TEST_DATA.length)\n    assert.equal(data.list[0].title, TEST_DATA[0].title)\n  })\n\n  it('read with offset should be ok', async () => {\n    const params = {\n      collection: 'test_read',\n      action: ActionType.READ,\n      query: {},\n      offset: 1,\n    }\n    const data = await entry.execute(params)\n    assert.ok(data.list instanceof Array)\n    assert.equal(data.list.length, TEST_DATA.length - 1)\n    assert.equal(data.list[0].title, TEST_DATA[1].title)\n  })\n\n  it('read with exceed offset should be ok', async () => {\n    const params = {\n      collection: 'test_read',\n      action: ActionType.READ,\n      query: {},\n      offset: 99999,\n    }\n    const data = await entry.execute(params)\n    assert.ok(data.list instanceof Array)\n    assert.equal(data.list.length, 0)\n  })\n\n  it('read with limit = 0 should be ok', async () => {\n    const params = {\n      collection: 'test_read',\n      action: ActionType.READ,\n      query: {},\n      order: [{ field: 'title', direction: 'asc' }],\n      limit: 0,\n    }\n    const data = await entry.execute(params)\n    assert.ok(data.list instanceof Array)\n    assert.equal(data.list.length, 3)\n    assert.equal(data.list[0].title, TEST_DATA[0].title)\n  })\n\n  it('read with limit should be ok', async () => {\n    const params = {\n      collection: 'test_read',\n      action: ActionType.READ,\n      query: {},\n      limit: 1,\n    }\n    const data = await entry.execute(params)\n    assert.ok(data.list instanceof Array)\n    assert.equal(data.list.length, 1)\n    assert.equal(data.list[0].title, TEST_DATA[0].title)\n  })\n\n  it('read with count should be ok', async () => {\n    const params = {\n      collection: 'test_read',\n      action: ActionType.READ,\n      query: {},\n      count: true,\n    }\n    const data = await entry.execute(params)\n    assert.ok(data.list instanceof Array)\n    assert.equal(data.list.length, TEST_DATA.length)\n    assert.equal(data.total, TEST_DATA.length)\n  })\n\n  it('read with projection should be ok', async () => {\n    const params = {\n      collection: 'test_read',\n      action: ActionType.READ,\n      query: {},\n      projection: { title: 1 },\n    }\n    const data = await entry.execute(params)\n    assert.ok(data.list instanceof Array)\n    assert.equal(data.list.length, TEST_DATA.length)\n    assert.ok(data.list[0].title)\n    assert.ok(data.list[0]._id)\n    assert.ok(!data.list[0].content)\n  })\n\n  after(async () => {\n    await coll.deleteMany({})\n    if (entry) accessor.conn.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mongo_db/remove.test.js",
    "content": "const assert = require('assert')\nconst { Proxy, MongoAccessor, ActionType } = require('../../dist')\nconst { dbconfig } = require('./_db')\n\nconst COLL_NAME = 'test_remove'\nconst TEST_DATA = [\n  { title: 'title-1', content: 'content-1' },\n  { title: 'title-2', content: 'content-2' },\n  { title: 'title-3', content: 'content-3' },\n]\n\nasync function restoreTestData(coll) {\n  await coll.deleteMany({})\n  const r = await coll.insertMany(TEST_DATA)\n  assert.equal(r.insertedCount, TEST_DATA.length)\n}\n\ndescribe('db-proxy(mongo): db.remove()', function () {\n  this.timeout(10000)\n\n  const accessor = new MongoAccessor(\n    dbconfig.dbName,\n    dbconfig.url,\n    dbconfig.connSettings\n  )\n  const entry = new Proxy(accessor)\n  let coll = null\n\n  before(async () => {\n    await accessor.init()\n\n    // insert data\n    coll = accessor.db.collection(COLL_NAME)\n    await restoreTestData(coll)\n  })\n\n  it('remove all should be ok', async () => {\n    await restoreTestData(coll)\n\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.REMOVE,\n      multi: true,\n    }\n    const r = await entry.execute(params)\n    assert.equal(r.deleted, 3)\n\n    const data = await coll.find().toArray()\n    assert.equal(data.length, 0)\n  })\n\n  it('remove one should be ok', async () => {\n    await restoreTestData(coll)\n\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.REMOVE,\n      query: { title: 'title-1' },\n    }\n    const r = await entry.execute(params)\n    assert.equal(r.deleted, 1)\n\n    const data = await coll.find().toArray()\n    assert.equal(data.length, 2)\n    assert.equal(data[0].title, 'title-2')\n    assert.equal(data[0].content, 'content-2')\n  })\n\n  it('remove two should be ok', async () => {\n    await restoreTestData(coll)\n\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.REMOVE,\n      query: {\n        $or: [{ title: 'title-1' }, { title: 'title-2' }],\n      },\n      multi: true,\n    }\n    const r = await entry.execute(params)\n    assert.equal(r.deleted, 2)\n\n    const data = await coll.find().toArray()\n\n    assert.equal(data.length, 1)\n    assert.equal(data[0].title, 'title-3')\n    assert.equal(data[0].content, 'content-3')\n  })\n\n  after(async () => {\n    await coll.deleteMany({})\n    if (entry) accessor.conn.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mongo_db/update.test.js",
    "content": "const assert = require('assert')\nconst { Proxy, MongoAccessor, ActionType } = require('../../dist')\nconst { dbconfig } = require('./_db')\n\nconst COLL_NAME = 'test_update'\nconst TEST_DATA = [\n  { title: 'title-1', content: 'content-1' },\n  { title: 'title-2', content: 'content-2' },\n  { title: 'title-3', content: 'content-3' },\n]\n\nasync function restoreTestData(coll) {\n  await coll.deleteMany({})\n  const r = await coll.insertMany(TEST_DATA)\n  assert.equal(r.insertedCount, TEST_DATA.length)\n}\n\ndescribe('db-proxy(mongo): db.update()', function () {\n  this.timeout(10000)\n\n  const accessor = new MongoAccessor(\n    dbconfig.dbName,\n    dbconfig.url,\n    dbconfig.connSettings\n  )\n  const entry = new Proxy(accessor)\n  let coll = null\n\n  before(async () => {\n    await accessor.init()\n\n    // insert data\n    coll = accessor.db.collection(COLL_NAME)\n    await restoreTestData(coll)\n  })\n\n  it('update first without query should be ok', async () => {\n    await restoreTestData(coll)\n\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.UPDATE,\n      query: {},\n      data: {\n        $set: {\n          title: 'title-updated-1',\n        },\n      },\n      merge: true,\n    }\n    const result = await entry.execute(params)\n\n    assert.equal(result.updated, 1) // modified\n    assert.equal(result.matched, 1) // matched\n\n    const updated = await coll.find().toArray()\n    assert.equal(updated[0].title, 'title-updated-1') // changed\n    assert.equal(updated[0].content, TEST_DATA[0].content) // unchanged\n\n    assert.equal(updated[1].title, TEST_DATA[1].title) // unchanged\n    assert.equal(updated[1].content, TEST_DATA[1].content) // unchanged\n\n    assert.equal(updated[1].title, TEST_DATA[1].title) // unchanged\n    assert.equal(updated[1].content, TEST_DATA[1].content) // unchanged\n  })\n\n  it('update one with query should be ok', async () => {\n    await restoreTestData(coll)\n\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.UPDATE,\n      query: {\n        title: TEST_DATA[0].title,\n      },\n      data: {\n        $set: {\n          title: 'title-updated-1',\n        },\n      },\n      merge: true,\n    }\n    const result = await entry.execute(params)\n\n    assert.equal(result.updated, 1) // modified\n    assert.equal(result.matched, 1) // matched\n\n    const [updated] = await coll.find().toArray()\n    assert.equal(updated.title, 'title-updated-1') // changed\n    assert.equal(updated.content, TEST_DATA[0].content) // unchanged\n  })\n\n  it('update one with operator [$set] existing in data should be ok', async () => {\n    await restoreTestData(coll)\n\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.UPDATE,\n      query: {\n        title: TEST_DATA[0].title,\n      },\n      data: {\n        $set: {\n          title: 'title-updated-1',\n        },\n      },\n      merge: true,\n    }\n    const result = await entry.execute(params)\n\n    assert.equal(result.updated, 1) // modified\n    assert.equal(result.matched, 1) // matched\n\n    const [updated] = await coll.find().toArray()\n    assert.equal(updated.title, 'title-updated-1') // changed\n    assert.equal(updated.content, TEST_DATA[0].content) // unchanged\n  })\n\n  it('update one with operator [$push] existing in data should be ok', async () => {\n    await restoreTestData(coll)\n\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.UPDATE,\n      query: {\n        title: TEST_DATA[0].title,\n      },\n      data: {\n        $set: { title: 'title-updated-1' },\n        $push: {\n          arr: 'item',\n        },\n      },\n      merge: true,\n    }\n    const result = await entry.execute(params)\n\n    assert.equal(result.updated, 1) // modified\n    assert.equal(result.matched, 1) // matched\n\n    const [updated] = await coll.find().toArray()\n    assert.ok(updated.arr instanceof Array)\n    assert.equal(updated.arr[0], 'item')\n    assert.equal(updated.title, 'title-updated-1') // changed\n    assert.equal(updated.content, TEST_DATA[0].content) // unchanged\n  })\n\n  it('update all should be ok', async () => {\n    await restoreTestData(coll)\n\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.UPDATE,\n      query: {},\n      data: {\n        $set: {\n          title: 'title-updated-all',\n        },\n      },\n      merge: true,\n      multi: true,\n    }\n    const result = await entry.execute(params)\n\n    assert.equal(result.updated, 3) // modified\n    assert.equal(result.matched, 3) // matched\n\n    const updated = await coll.find().toArray()\n    assert.equal(updated[0].title, 'title-updated-all') // changed\n    assert.equal(updated[0].content, TEST_DATA[0].content) // unchanged\n\n    assert.equal(updated[1].title, 'title-updated-all') // changed\n    assert.equal(updated[1].content, TEST_DATA[1].content) // unchanged\n\n    assert.equal(updated[2].title, 'title-updated-all') // changed\n    assert.equal(updated[2].content, TEST_DATA[2].content) // unchanged\n  })\n\n  it('update parts using $or in query should be ok', async () => {\n    await restoreTestData(coll)\n\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.UPDATE,\n      query: {\n        $or: [{ title: TEST_DATA[0].title }, { title: TEST_DATA[1].title }],\n      },\n      data: {\n        $set: {\n          title: 'title-updated-all',\n        },\n      },\n      merge: true,\n      multi: true,\n    }\n    const result = await entry.execute(params)\n\n    assert.equal(result.updated, 2) // modified\n    assert.equal(result.matched, 2) // matched\n\n    const updated = await coll.find().toArray()\n    assert.equal(updated[0].title, 'title-updated-all') // changed\n    assert.equal(updated[0].content, TEST_DATA[0].content) // unchanged\n\n    assert.equal(updated[1].title, 'title-updated-all') // changed\n    assert.equal(updated[1].content, TEST_DATA[1].content) // unchanged\n  })\n\n  it('replace one should be ok', async () => {\n    await restoreTestData(coll)\n\n    const params = {\n      collection: COLL_NAME,\n      action: ActionType.UPDATE,\n      query: {\n        title: TEST_DATA[0].title,\n      },\n      data: { title: 'title-updated-1' },\n      merge: false,\n    }\n    const result = await entry.execute(params)\n\n    assert.equal(result.updated, 1) // modified\n    assert.equal(result.matched, 1) // matched\n\n    const [updated] = await coll.find().toArray()\n    assert.equal(updated.title, 'title-updated-1') // changed\n    assert.equal(updated.content, undefined) // replaced\n  })\n\n  after(async () => {\n    await coll.deleteMany({})\n    if (entry) accessor.conn.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mysql_db/_db.js",
    "content": "// docker run --name mysqldb -e MYSQL_ROOT_PASSWORD=kissme -e MYSQL_DATABASE=testdb -d -p 3306:3306 mysql\nconst dbconfig = {\n  db: 'testdb',\n  user: 'root',\n  password: 'kissme',\n  host: 'localhost',\n  port: 3306,\n  connectionLimit: 30,\n}\n\nmodule.exports = dbconfig\n"
  },
  {
    "path": "packages/database-proxy/tests/mysql_db/count.test.ignore.js",
    "content": "const assert = require('assert')\nconst { MysqlAccessor, Proxy, ActionType } = require('../../dist')\nconst config = require('./_db')\n\ndescribe('Database Mysql count', function () {\n  this.timeout(10000)\n\n  const accessor = new MysqlAccessor({\n    database: config.db,\n    user: config.user,\n    password: config.password,\n    host: config.host,\n    port: config.port,\n  })\n\n  const table = 'test_table'\n\n  const entry = new Proxy(accessor)\n\n  before(async () => {\n    await accessor.conn.execute(\n      `create table IF NOT EXISTS ${table} (id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, age int, primary key(id))`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id,name, age) values(111, 'less-api-1', 2)`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id,name, age) values(112, 'less-api-2', 18)`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id,name, age) values(113, 'less-api-3', 28)`\n    )\n  })\n\n  it('count one passed', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.COUNT,\n      query: { id: 111 },\n    }\n    const r = await entry.execute(params)\n\n    assert.strictEqual(r.total, 1)\n  })\n\n  it('count all passed', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.COUNT,\n      query: {},\n    }\n    const r = await entry.execute(params)\n\n    assert.strictEqual(r.total, 3)\n  })\n\n  it('count age > 2', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.COUNT,\n      query: { age: { $gt: 2 } },\n    }\n    const r = await entry.execute(params)\n\n    assert.strictEqual(r.total, 2)\n  })\n\n  after(async () => {\n    await accessor.conn.execute(`drop table ${table}`)\n    accessor.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mysql_db/dbi.test.ignore.js",
    "content": "const assert = require('assert')\nconst { MysqlAccessor, getDb } = require('../../dist')\n\nconst config = require('./_db')\n\nconst TEST_DATA = [\n  { name: 'title-1', age: 2 },\n  { name: 'title-2', age: 18 },\n  { name: 'title-3', age: 100 },\n]\nconst table = 'test_table'\n\ndescribe('Database Interface with Mysql read', function () {\n  this.timeout(10000)\n\n  const accessor = new MysqlAccessor({\n    database: config.db,\n    user: config.user,\n    password: config.password,\n    host: config.host,\n    port: config.port,\n  })\n\n  let coll = null\n  let db = null\n\n  before(async () => {\n    // insert data\n    // await accessor.init()\n    await accessor.conn.execute(\n      `create table IF NOT EXISTS ${table} (id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, age int, primary key(id))`\n    )\n\n    db = await getDb(accessor)\n\n    coll = await db.collection(table)\n    const r = await coll.add(TEST_DATA[0])\n    assert.ok(r.id)\n  })\n\n  it('read one should be ok', async () => {\n    const { data } = await coll.where({}).get()\n    assert.ok(data.length)\n  })\n\n  after(async () => {\n    await accessor.conn.execute(`drop table ${table}`)\n    accessor.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mysql_db/delete.test.ignore.js",
    "content": "const assert = require('assert')\nconst { MysqlAccessor, Proxy, ActionType } = require('../../dist')\nconst config = require('./_db')\n\ndescribe('Database Mysql delete', function () {\n  this.timeout(10000)\n\n  const accessor = new MysqlAccessor({\n    database: config.db,\n    user: config.user,\n    password: config.password,\n    host: config.host,\n    port: config.port,\n  })\n\n  const table = 'test_table'\n\n  const entry = new Proxy(accessor)\n\n  before(async () => {\n    await accessor.conn.execute(\n      `create table IF NOT EXISTS ${table} (id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, age int, primary key(id))`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id,name, age) values(111, 'less-api-1', 2)`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id,name, age) values(112, 'less-api-2', 18)`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id,name, age) values(113, 'less-api-3', 28)`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id,name, age) values(114, 'less-api-3', 38)`\n    )\n  })\n\n  it('delete one should be ok', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.REMOVE,\n      query: { id: 111 },\n    }\n    const r = await entry.execute(params)\n\n    assert.strictEqual(r.deleted, 1)\n  })\n\n  it('delete all but multi = false(default) should delete 1', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.REMOVE,\n      query: {},\n      // multi: false // default is false\n    }\n    const r = await entry.execute(params)\n    assert.strictEqual(r.deleted, 1)\n  })\n\n  it('delete all with multi = true passed', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.REMOVE,\n      query: {},\n      multi: true,\n    }\n    const r = await entry.execute(params)\n    assert.strictEqual(r.deleted, 2)\n  })\n\n  after(async () => {\n    await accessor.conn.execute(`drop table ${table}`)\n    accessor.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mysql_db/insert.test.ignore.js",
    "content": "const assert = require('assert')\nconst { MysqlAccessor, Proxy, ActionType } = require('../../dist')\nconst config = require('./_db')\n\ndescribe('Database Mysql add', function () {\n  this.timeout(10000)\n\n  const accessor = new MysqlAccessor({\n    database: config.db,\n    user: config.user,\n    password: config.password,\n    host: config.host,\n    port: config.port,\n  })\n\n  const table = 'test_table'\n\n  const entry = new Proxy(accessor)\n\n  before(async () => {\n    await accessor.conn.execute(\n      `create table IF NOT EXISTS ${table} (id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, age int, primary key(id))`\n    )\n  })\n\n  it('add() one should be ok', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.ADD,\n      data: { id: 123, name: 'less-api', age: 2 },\n    }\n    const r = await entry.execute(params)\n    assert.strictEqual(r._id, 123)\n    assert.strictEqual(r.insertedCount, 1)\n\n    // check inserted result\n    const [rows] = await accessor.conn.execute(`select * from ${table}`)\n\n    assert.ok(rows instanceof Array)\n    assert.strictEqual(rows.length, 1)\n    assert.strictEqual(rows[0].name, 'less-api')\n    assert.strictEqual(rows[0].age, 2)\n  })\n\n  it('add() without data should got error', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.ADD,\n    }\n    try {\n      await entry.execute(params)\n      assert(false)\n    } catch (error) {\n      assert.strictEqual(\n        error.message,\n        'invalid data: data can NOT be empty object'\n      )\n    }\n  })\n\n  it('add() data with {} object should got error', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.ADD,\n      data: {},\n    }\n    try {\n      await entry.execute(params)\n      assert(false)\n    } catch (error) {\n      assert.strictEqual(\n        error.message,\n        'invalid data: data can NOT be empty object'\n      )\n    }\n  })\n\n  it('add() data with array should got error', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.ADD,\n      data: [\n        { id: 123, name: 'less-api', age: 2 },\n        { id: 123, name: 'less-api', age: 2 },\n      ],\n    }\n    try {\n      await entry.execute(params)\n      assert(false)\n    } catch (error) {\n      assert.strictEqual(\n        error.message,\n        'invalid data: data cannot be Array while using SQL'\n      )\n    }\n  })\n\n  after(async () => {\n    await accessor.conn.execute(`drop table ${table}`)\n    accessor.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mysql_db/join.test.ignore.js",
    "content": "const assert = require('assert')\nconst { MysqlAccessor, Proxy, ActionType } = require('../../dist')\nconst { SqlBuilder } = require('../../dist/accessor/sql_builder')\nconst config = require('./_db')\n\ndescribe('Database Mysql join', function () {\n  this.timeout(10000)\n\n  const accessor = new MysqlAccessor({\n    database: config.db,\n    user: config.user,\n    password: config.password,\n    host: config.host,\n    port: config.port,\n  })\n\n  const table = 'test_tbl'\n  const sub_table = 'test_subtbl'\n\n  const entry = new Proxy(accessor)\n\n  before(async () => {\n    await accessor.conn.execute(\n      `create table IF NOT EXISTS ${table} (id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, primary key(id))`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id, name) values(111, 'less-api-1')`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id, name) values(112, 'less-api-2')`\n    )\n\n    await accessor.conn.execute(\n      `create table IF NOT EXISTS ${sub_table} (id int(11) NOT NULL AUTO_INCREMENT, parent_id int(11) NOT NULL, name varchar(255) NOT NULL, age int, primary key(id))`\n    )\n    await accessor.conn.execute(\n      `insert into ${sub_table} (parent_id,name, age) values(111, 'sub-less-api-1', 22)`\n    )\n    await accessor.conn.execute(\n      `insert into ${sub_table} (parent_id, name, age) values(112, 'sub-less-api-2', 29)`\n    )\n  })\n\n  it('read with joins should be ok', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.READ,\n      query: { [`${table}.id`]: 111 },\n      projection: {\n        'test_tbl.*': 1,\n        'test_subtbl.id sid': 1,\n        'test_subtbl.name sname': 1,\n        'test_subtbl.age': 1,\n      },\n      joins: [\n        {\n          type: 'left',\n          collection: sub_table,\n          leftKey: 'id',\n          rightKey: 'parent_id',\n        },\n      ],\n    }\n\n    const r = await entry.execute(params)\n\n    assert.ok(r.list instanceof Array)\n    assert.strictEqual(r.list.length, 1)\n    assert.strictEqual(r.list[0].id, 111)\n    assert.strictEqual(r.list[0].name, 'less-api-1')\n    assert.strictEqual(r.list[0].age, 22)\n  })\n\n  after(async () => {\n    await accessor.conn.execute(`drop table ${table}`)\n    await accessor.conn.execute(`drop table ${sub_table}`)\n    accessor.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mysql_db/read.test.ignore.js",
    "content": "const assert = require('assert')\nconst { MysqlAccessor, Proxy, ActionType } = require('../../dist')\nconst config = require('./_db')\n\ndescribe('Database Mysql read', function () {\n  this.timeout(10000)\n\n  const accessor = new MysqlAccessor({\n    database: config.db,\n    user: config.user,\n    password: config.password,\n    host: config.host,\n    port: config.port,\n  })\n\n  const table = 'test_table'\n\n  const entry = new Proxy(accessor)\n\n  before(async () => {\n    await accessor.conn.execute(\n      `create table IF NOT EXISTS ${table} (id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, age int, primary key(id))`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id,name, age) values(111, 'less-api-1', 2)`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id,name, age) values(112, 'less-api-2', 18)`\n    )\n  })\n\n  it('read one should be ok', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.READ,\n      query: { id: 111 },\n    }\n    const r = await entry.execute(params)\n\n    assert.ok(r.list instanceof Array)\n    assert.strictEqual(r.list.length, 1)\n    assert.strictEqual(r.list[0].id, 111)\n    assert.strictEqual(r.list[0].name, 'less-api-1')\n    assert.strictEqual(r.list[0].age, 2)\n  })\n\n  it('read all passed', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.READ,\n      query: {},\n    }\n    const r = await entry.execute(params)\n\n    assert.ok(r.list instanceof Array)\n    assert.strictEqual(r.list.length, 2)\n    assert.strictEqual(r.list[0].id, 111)\n    assert.strictEqual(r.list[0].name, 'less-api-1')\n    assert.strictEqual(r.list[0].age, 2)\n\n    assert.strictEqual(r.list[1].id, 112)\n  })\n\n  it('read age > 2', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.READ,\n      query: { age: { $gt: 2 } },\n    }\n    const r = await entry.execute(params)\n\n    assert.ok(r.list instanceof Array)\n    assert.strictEqual(r.list.length, 1)\n    assert.strictEqual(r.list[0].id, 112)\n    assert.strictEqual(r.list[0].age, 18)\n  })\n\n  it('read by order age desc', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.READ,\n      query: {},\n      order: [{ field: 'age', direction: 'desc' }],\n    }\n    const r = await entry.execute(params)\n\n    assert.ok(r.list instanceof Array)\n    assert.strictEqual(r.list.length, 2)\n    assert.strictEqual(r.list[0].id, 112)\n    assert.strictEqual(r.list[0].age, 18)\n    assert.strictEqual(r.list[1].age, 2)\n  })\n\n  it('read by order age asc', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.READ,\n      query: {},\n      order: [{ field: 'age', direction: 'asc' }],\n    }\n    const r = await entry.execute(params)\n\n    assert.ok(r.list instanceof Array)\n    assert.strictEqual(r.list.length, 2)\n    assert.strictEqual(r.list[0].id, 111)\n    assert.strictEqual(r.list[0].age, 2)\n    assert.strictEqual(r.list[1].age, 18)\n  })\n\n  it('read with projection passed', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.READ,\n      query: {},\n      projection: { name: 1, age: 1 },\n    }\n    const r = await entry.execute(params)\n\n    assert.ok(r.list instanceof Array)\n    assert.strictEqual(r.list.length, 2)\n    assert.strictEqual(r.list[0].id, undefined)\n    assert.strictEqual(r.list[0].name, 'less-api-1')\n    assert.strictEqual(r.list[0].age, 2)\n    assert.strictEqual(r.list[1].age, 18)\n  })\n\n  it('read with projection (vlaue = 0) should throw error', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.READ,\n      query: {},\n      projection: { name: 0, age: 0 },\n    }\n    try {\n      await entry.execute(params)\n    } catch (error) {\n      assert.strictEqual(\n        error.message,\n        'invalid query: value of projection MUST be {true} or {1}, {false} or {0} is not supported in sql'\n      )\n    }\n  })\n\n  it('read with like operator passed', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.READ,\n      query: {\n        name: {\n          $like: 'less-api%',\n        },\n      },\n    }\n    const r = await entry.execute(params)\n\n    assert.ok(r.list instanceof Array)\n    assert.strictEqual(r.list.length, 2)\n    assert.strictEqual(r.list[0].id, 111)\n    assert.strictEqual(r.list[0].name, 'less-api-1')\n    assert.strictEqual(r.list[0].age, 2)\n\n    assert.strictEqual(r.list[1].id, 112)\n  })\n\n  after(async () => {\n    await accessor.conn.execute(`drop table ${table}`)\n    accessor.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/mysql_db/update.test.ignore.js",
    "content": "const assert = require('assert')\nconst { MysqlAccessor, Proxy, ActionType } = require('../../dist')\nconst config = require('./_db')\n\ndescribe('Database Mysql update', function () {\n  this.timeout(10000)\n\n  const accessor = new MysqlAccessor({\n    database: config.db,\n    user: config.user,\n    password: config.password,\n    host: config.host,\n    port: config.port,\n  })\n\n  const table = 'test_table'\n\n  const entry = new Proxy(accessor)\n\n  before(async () => {\n    await accessor.conn.execute(\n      `create table IF NOT EXISTS ${table} (id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, age int, primary key(id))`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id,name, age) values(111, 'less-api-1', 2)`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id,name, age) values(112, 'less-api-2', 18)`\n    )\n    await accessor.conn.execute(\n      `insert into ${table} (id,name, age) values(113, 'less-api-3', 28)`\n    )\n  })\n\n  it('update one passed', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.UPDATE,\n      query: { id: 111 },\n      data: { $set: { name: 'updated-1', age: 1 } },\n      merge: true,\n    }\n    const r = await entry.execute(params)\n\n    assert.strictEqual(r.updated, 1)\n    assert.strictEqual(r.matched, 1)\n  })\n\n  it('update all passed', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.UPDATE,\n      query: {},\n      data: { $set: { name: 'updated-all' } },\n      multi: true,\n      merge: true,\n    }\n    const r = await entry.execute(params)\n\n    assert.strictEqual(r.updated, 3)\n    assert.strictEqual(r.matched, 3)\n  })\n\n  it('update with multi = false should only update 1 row', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.UPDATE,\n      query: {},\n      data: { $set: { name: 'updated-all-1' } },\n      multi: false, // default is false\n      merge: true,\n    }\n    const r = await entry.execute(params)\n\n    assert.strictEqual(r.updated, 1)\n    assert.strictEqual(r.matched, 1)\n  })\n\n  it('update age > 2', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.UPDATE,\n      query: { age: { $gt: 2 } },\n      data: { $set: { name: 'updated-parts', age: 11 } },\n      multi: true,\n      merge: true,\n    }\n    const r = await entry.execute(params)\n\n    assert.strictEqual(r.updated, 2)\n    assert.strictEqual(r.matched, 2)\n  })\n\n  it('update with $inc passed', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.UPDATE,\n      query: { age: 1 },\n      data: { $inc: { age: 2 } },\n      merge: true,\n    }\n    const r = await entry.execute(params)\n\n    assert.strictEqual(r.updated, 1)\n    assert.strictEqual(r.matched, 1)\n  })\n\n  it('update with $mul passed', async () => {\n    const params = {\n      collection: table,\n      action: ActionType.UPDATE,\n      query: { age: 3 },\n      data: { $mul: { age: 2 } },\n      merge: true,\n    }\n    const r = await entry.execute(params)\n\n    assert.strictEqual(r.updated, 1)\n    assert.strictEqual(r.matched, 1)\n  })\n\n  after(async () => {\n    await accessor.conn.execute(`drop table ${table}`)\n    accessor.close()\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/accessor.test.js",
    "content": "const assert = require('assert')\nconst { MongoAccessor } = require('../../dist')\n\nconst { MongoClient, Db } = require('mongodb')\n\ndescribe('db-proxy(unit): class Accessor', () => {\n  it('constructor() ok', () => {\n    const client = new MongoClient('mongodb://localhost:27017/test-db')\n    const acc = new MongoAccessor(client)\n    assert.ok(acc.db instanceof Db)\n    assert.ok(acc.client instanceof MongoClient)\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/data.add.constraints/condition.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::data - condition', () => {\n  const rules = {\n    categories: {\n      add: {\n        condition: true,\n        data: {\n          author_id: '$userid == $value',\n          createdBy: {\n            condition: '$userid == $value',\n          },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.addDocument',\n  }\n\n  it('data condition should be ok', async () => {\n    params.data = {\n      author_id: 123,\n      createdBy: 123,\n    }\n\n    const injections = {\n      $userid: 123,\n    }\n\n    const { matched, errors } = await ruler.validate(params, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('data condition should be rejected', async () => {\n    params.data = {\n      author_id: 1,\n      createdBy: 2,\n    }\n\n    const injections = {\n      $userid: 123,\n    }\n\n    const { matched, errors } = await ruler.validate(params, injections)\n    assert.ok(!matched)\n    assert.ok(errors)\n    assert.equal(errors[0].type, 'data')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/data.add.constraints/default.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::data - default', () => {\n  const rules = {\n    categories: {\n      add: {\n        condition: true,\n        data: {\n          title: { default: 'Default Title', required: true },\n          content: { default: 0 },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.addDocument',\n  }\n\n  it('default should be applied both required equals to true and false', async () => {\n    params.data = {\n      content: '',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n\n    assert.equal(params.data.title, 'Default Title')\n    assert.equal(params.data.content, 0)\n  })\n\n  it('given value should replace default value', async () => {\n    params.data = {\n      title: 'Custom Title',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n\n    assert.equal(params.data.title, 'Custom Title')\n    assert.equal(params.data.content, 0)\n  })\n\n  it('given value should replace default value both required == true and false', async () => {\n    params.data = {\n      title: 'Custom Title',\n      content: 'Custom Content',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n\n    assert.equal(params.data.title, 'Custom Title')\n    assert.equal(params.data.content, 'Custom Content')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/data.add.constraints/in.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::data - in', () => {\n  const rules = {\n    categories: {\n      add: {\n        condition: true,\n        data: {\n          title: { in: [true, false] },\n          content: { in: ['China', 'Russia'] },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.addDocument',\n  }\n\n  it('empty data should be rejected', async () => {\n    params.data = {}\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors)\n  })\n\n  it('valid data should be ok ', async () => {\n    params.data = {\n      title: false,\n      content: 'China',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('invalid data should return an error ', async () => {\n    params.data = {\n      content: 'invalid value',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n  })\n\n  it('invalid data for boolean value should return an error ', async () => {\n    params.data = {\n      title: 1,\n      content: 'China',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/data.add.constraints/length.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::data - length', () => {\n  const rules = {\n    categories: {\n      add: {\n        condition: true,\n        data: {\n          title: { length: [3, 6], required: true },\n          content: { length: [3, 6] },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.addDocument',\n  }\n\n  it('length == min should be ok', async () => {\n    params.data = {\n      title: 'abc',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('length == max should be ok', async () => {\n    params.data = {\n      title: '123456',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('length < min should be rejected', async () => {\n    params.data = {\n      title: 'ab',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'length of title should >= 3 and <= 6')\n  })\n\n  it('length > max should be rejected', async () => {\n    params.data = {\n      title: '1234567',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'length of title should >= 3 and <= 6')\n  })\n\n  it('length < min && require == false should be rejected', async () => {\n    params.data = {\n      title: 'good',\n      content: 'a',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'length of content should >= 3 and <= 6')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/data.add.constraints/match.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::data - match', () => {\n  const rules = {\n    categories: {\n      add: {\n        condition: true,\n        data: {\n          account: { match: '^\\\\d{6,10}$' },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.addDocument',\n  }\n\n  it('match should be ok', async () => {\n    params.data = {\n      account: '1234567',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('match invalid value should return an error', async () => {\n    params.data = {\n      account: 'abc',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'account had invalid format')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/data.add.constraints/number.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::data - number', () => {\n  const rules = {\n    categories: {\n      add: {\n        condition: true,\n        data: {\n          total: { number: [0, 100] },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.addDocument',\n  }\n\n  it('number == min should be ok', async () => {\n    params.data = {\n      total: 0,\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('number == max should be ok', async () => {\n    params.data = {\n      total: 100,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('number < min should be rejected', async () => {\n    params.data = {\n      total: -1,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'total should >= 0 and <= 100')\n  })\n\n  it('number > max should be rejected', async () => {\n    params.data = {\n      total: 101,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'total should >= 0 and <= 100')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/data.add.constraints/required.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::data - required', () => {\n  const rules = {\n    categories: {\n      add: {\n        condition: true,\n        data: {\n          title: { required: true },\n          content: {},\n          author: { required: false },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.addDocument',\n  }\n\n  it('data == undefined should be rejected', async () => {\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'data is undefined')\n  })\n\n  it('data is not object should be rejected', async () => {\n    params.data = 'invalid type'\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'data must be an object')\n  })\n\n  it('required == true should be ok', async () => {\n    params.data = {\n      title: 'Title',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('empty data should be rejected', async () => {\n    params.data = {}\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'data is empty')\n  })\n\n  it('required == true should be rejected', async () => {\n    params.data = {\n      content: 'Content',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'title is required')\n  })\n\n  it('required == false should be ok', async () => {\n    params.data = {\n      title: 'Title',\n      content: 'Content',\n      author: 'Author',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/data.add.constraints/test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::data - add', () => {\n  const rules = {\n    categories: {\n      add: {\n        condition: true,\n        data: {\n          title: { required: true },\n          content: {},\n          author: { required: false },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.addDocument',\n  }\n\n  it('add one while operator exists should throw error', async () => {\n    params.data = {\n      title: 'test-title',\n      $set: {\n        content: 'content',\n      },\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'data must not contain any operator')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/data.update.constraints/data.replace.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist')\n\ndescribe('db-proxy(unit): validator::data - merge options (replace & update)', () => {\n  const rules = {\n    categories: {\n      update: {\n        condition: true,\n        data: {\n          title: { required: true },\n          content: {},\n          author: { required: false },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.updateDocument',\n  }\n\n  it('replace one while operator exists and merge == false should throw error', async () => {\n    params.data = {\n      $set: {\n        title: 'test-title',\n        content: 'content',\n      },\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length, 1)\n    // console.log(errors)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'data must not contain any operator')\n  })\n\n  it('update one while operator NOT exists and merge == true should throw error', async () => {\n    params.data = {\n      title: 'test-title',\n    }\n    params.merge = true\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(\n      errors[0].error,\n      'data must contain operator while `merge` with true'\n    )\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/data.update.constraints/default.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist')\n\ndescribe('db-proxy(unit): validator::data - default(update)', () => {\n  const rules = {\n    categories: {\n      update: {\n        condition: true,\n        data: {\n          title: { default: 'Default Title', required: true },\n          content: { default: 0 },\n          another: {},\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.updateDocument',\n  }\n\n  // it('default should not be applied both required equals to true and false when update', async () => {\n  //     params.data = {\n  //         another: ''\n  //     }\n  //     const { matched, errors } = await ruler.validate(params, {})\n  //     assert.ok(matched)\n  //     assert.ok(!errors)\n\n  //     // 更新时默认值应该失效，虽必填\n  //     assert.notStrictEqual(params.data.title, 'Default Title')\n  //     // 更新时默认值应该失效，不必填\n  //     assert.ok(!params.data.content)\n  // })\n\n  it('given value should replace default value', async () => {\n    params.data = {\n      title: 'Custom Title',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n\n    assert.ok(matched)\n    assert.ok(!errors)\n\n    assert.equal(params.data.title, 'Custom Title')\n    assert.ok(!params.data.content)\n  })\n\n  it('given value should replace default value both required == true and false', async () => {\n    params.data = {\n      title: 'Custom Title',\n      content: 'Custom Content',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n\n    assert.equal(params.data.title, 'Custom Title')\n    assert.equal(params.data.content, 'Custom Content')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/data.update.constraints/required.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist')\n\ndescribe('db-proxy(unit): validator::data - required', () => {\n  const rules = {\n    categories: {\n      update: {\n        condition: true,\n        data: {\n          title: { required: true },\n          content: {},\n          author: { required: false },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.updateDocument',\n  }\n\n  it('data == undefined should be rejected', async () => {\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'data is undefined')\n  })\n\n  it('data is not object should be rejected', async () => {\n    params.data = 'invalid type'\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'data must be an object')\n  })\n\n  it('required == true should be ok', async () => {\n    params.data = {\n      title: 'Title',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('empty data should be rejected', async () => {\n    params.data = {}\n    const { matched, errors } = await ruler.validate(params, {})\n\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'data')\n    assert.equal(errors[0].error, 'data is empty')\n  })\n\n  it('required == false should be ok', async () => {\n    params.data = {\n      title: 'Title',\n      content: 'Content',\n      author: 'Author',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/query.constraints/condition.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::query - condition', () => {\n  const rules = {\n    categories: {\n      update: {\n        query: {\n          author_id: '$userid == $value',\n          createdBy: {\n            condition: '$userid == $v',\n          },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.updateDocument',\n  }\n\n  it('query condition should be ok', async () => {\n    params.query = {\n      author_id: 123,\n      createdBy: 123,\n    }\n\n    const injections = {\n      $userid: 123,\n    }\n\n    const { matched, errors } = await ruler.validate(params, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('query condition should be ok', async () => {\n    params.query = {\n      author_id: 123,\n    }\n\n    const injections = {\n      $userid: 123,\n    }\n\n    const { matched, errors } = await ruler.validate(params, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('query condition should be rejected', async () => {\n    params.query = {\n      author_id: 1,\n      createdBy: 2,\n    }\n\n    const injections = {\n      $userid: 123,\n    }\n\n    const { matched, errors } = await ruler.validate(params, injections)\n    assert.ok(!matched)\n    assert.ok(errors)\n    assert.equal(errors[0].type, 'query')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/query.constraints/default.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::query - default', () => {\n  const rules = {\n    categories: {\n      update: {\n        condition: true,\n        query: {\n          title: { default: 'Default Title', required: true },\n          content: { default: 0 },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.updateDocument',\n  }\n\n  it('default should be applied both required equals to true and false', async () => {\n    params.query = {}\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n\n    assert.equal(params.query.title, 'Default Title')\n    assert.equal(params.query.content, 0)\n  })\n\n  it('given value should replace default value', async () => {\n    params.query = {\n      title: 'Custom Title',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n\n    assert.equal(params.query.title, 'Custom Title')\n    assert.equal(params.query.content, 0)\n  })\n\n  it('given value should replace default value both required == true and false', async () => {\n    params.query = {\n      title: 'Custom Title',\n      content: 'Custom Content',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n\n    assert.equal(params.query.title, 'Custom Title')\n    assert.equal(params.query.content, 'Custom Content')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/query.constraints/in.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::query - in', () => {\n  const rules = {\n    categories: {\n      update: {\n        condition: true,\n        query: {\n          title: { in: [true, false] },\n          content: { in: ['China', 'Russia'] },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.updateDocument',\n  }\n\n  it('empty query should be ok', async () => {\n    params.query = {}\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('valid query should be ok ', async () => {\n    params.query = {\n      title: false,\n      content: 'China',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('invalid query should return an error ', async () => {\n    params.query = {\n      content: 'invalid value',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'query')\n  })\n\n  it('invalid query for boolean value should return an error ', async () => {\n    params.query = {\n      title: 1,\n      content: 'China',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'query')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/query.constraints/length.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::query- length', () => {\n  const rules = {\n    categories: {\n      update: {\n        condition: true,\n        query: {\n          title: { length: [3, 6], required: true },\n          content: { length: [3, 6] },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.updateDocument',\n  }\n\n  it('length == min should be ok', async () => {\n    params.query = {\n      title: 'abc',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('length == max should be ok', async () => {\n    params.query = {\n      title: '123456',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('length < min should be rejected', async () => {\n    params.query = {\n      title: 'ab',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'query')\n    assert.equal(errors[0].error, 'length of title should >= 3 and <= 6')\n  })\n\n  it('length > max should be rejected', async () => {\n    params.query = {\n      title: '1234567',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'query')\n    assert.equal(errors[0].error, 'length of title should >= 3 and <= 6')\n  })\n\n  it('length < min && require == false should be rejected', async () => {\n    params.query = {\n      title: 'good',\n      content: 'a',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'query')\n    assert.equal(errors[0].error, 'length of content should >= 3 and <= 6')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/query.constraints/match.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::query - match', () => {\n  const rules = {\n    categories: {\n      update: {\n        condition: true,\n        query: {\n          account: { match: '^\\\\d{6,10}$' },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.updateDocument',\n  }\n\n  it('match should be ok', async () => {\n    params.query = {\n      account: '1234567',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('match invalid value should return an error', async () => {\n    params.query = {\n      account: 'abc',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'query')\n    assert.equal(errors[0].error, 'account had invalid format')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/query.constraints/number.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::query - number', () => {\n  const rules = {\n    categories: {\n      update: {\n        condition: true,\n        query: {\n          total: { number: [0, 100] },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.updateDocument',\n  }\n\n  it('number == min should be ok', async () => {\n    params.query = {\n      total: 0,\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('number == max should be ok', async () => {\n    params.query = {\n      total: 100,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('number < min should be rejected', async () => {\n    params.query = {\n      total: -1,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'query')\n    assert.equal(errors[0].error, 'total should >= 0 and <= 100')\n  })\n\n  it('number > max should be rejected', async () => {\n    params.query = {\n      total: 101,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'query')\n    assert.equal(errors[0].error, 'total should >= 0 and <= 100')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/query.constraints/required.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../../dist/policy')\n\ndescribe('db-proxy(unit): validator::query - required', () => {\n  const rules = {\n    categories: {\n      update: {\n        condition: true,\n        query: {\n          title: { required: true },\n          content: {},\n          author: { required: false },\n        },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  const params = {\n    collection: 'categories',\n    action: 'database.updateDocument',\n  }\n\n  it('query == undefined should be rejected', async () => {\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length, 1)\n    assert.equal(errors[0].type, 'query')\n    assert.equal(errors[0].error, 'query is undefined')\n  })\n\n  it('query is not object should be rejected', async () => {\n    params.query = 'invalid type'\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length, 1)\n    assert.equal(errors[0].type, 'query')\n    assert.equal(errors[0].error, 'query must be an object')\n  })\n\n  it('required == true should be ok', async () => {\n    params.query = {\n      title: 'Title',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('empty query should be rejected', async () => {\n    params.query = {}\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'query')\n    assert.equal(errors[0].error, 'title is required')\n  })\n\n  it('required == true should be rejected', async () => {\n    params.query = {\n      content: 'Content',\n    }\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'query')\n    assert.equal(errors[0].error, 'title is required')\n  })\n\n  it('required == false should be ok', async () => {\n    params.query = {\n      title: 'Title',\n      content: 'Content',\n      author: 'Author',\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/ruler.schema.js",
    "content": "const assert = require('assert')\nconst { DefaultLogger } = require('../../../dist')\n// const { Processor } = require('../../../dist')\nconst { Policy } = require('../../../dist/policy')\n\ndescribe('class Policy validate() - schema', () => {\n  const rules = {\n    categories: {\n      read: true,\n      update: '$admin === true',\n      add: {\n        condition: '$admin === true',\n      },\n      remove: '$admin === true',\n      $schema: {\n        title: { required: true, length: [1, 10] },\n        author: { required: false },\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.setLogger(new DefaultLogger(0))\n  ruler.load(rules)\n  const injections = {\n    $admin: true,\n  }\n\n  const params = {\n    collection: 'categories',\n    action: 'database.queryDocument',\n  }\n\n  it('read should be ok', async () => {\n    params.action = 'database.queryDocument'\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('update should be ok', async () => {\n    params.action = 'database.updateDocument'\n    const p = {\n      ...params,\n      data: {\n        title: 'abc',\n      },\n    }\n    const { errors, matched } = await ruler.validate(p, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('add should be ok', async () => {\n    params.action = 'database.addDocument'\n    const p = {\n      ...params,\n      data: {\n        title: 'abc',\n      },\n    }\n    const { errors, matched } = await ruler.validate(p, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/ruler.test.js",
    "content": "const assert = require('assert')\nconst { Processor } = require('../../../dist')\nconst { Policy } = require('../../../dist/policy')\n\nconst buildins = require('../../../dist/validators')\n\ndescribe('db-proxy(unit): class Policy', () => {\n  it('loadBuiltins() ok', () => {\n    // 初始化 validator 是否正确\n    const ruler = new Policy()\n    const validtrs = ruler.validators\n\n    assert.equal(Object.keys(buildins).length, Object.keys(validtrs).length)\n    for (const name in buildins) {\n      const _names = Object.keys(validtrs)\n      assert.ok(_names.includes(name))\n      assert.equal(buildins[name], validtrs[name])\n    }\n  })\n\n  it('register() ok', () => {\n    const ruler = new Policy()\n    ruler.register('test', (config, context) => {\n      return true\n    })\n    assert.ok(ruler.validators['test'])\n    assert.ok(ruler.validators['test'] instanceof Function)\n    assert.ok(ruler.validators['test']())\n  })\n\n  it('load() ok', () => {\n    const rules = {\n      categories: {\n        read: true,\n        update: 'false',\n      },\n    }\n    const ruler = new Policy()\n    ruler.load(rules)\n\n    const r = ruler.rules.categories\n    assert.ok(r)\n    assert.ok(r['read'])\n    assert.ok(r['update'])\n    assert.ok(!r['add'])\n    assert.ok(r['read'] instanceof Array)\n\n    const v = r['read'][0]\n\n    assert.ok(v)\n    assert.ok(v.condition instanceof Processor)\n    assert.equal(v.condition.name, 'condition')\n    assert.equal(v.condition.type, 'validator')\n    assert.equal(v.condition.config, 'true')\n    assert.ok(v.condition.handler instanceof Function)\n  })\n\n  it('load() should throw unknown validator error', () => {\n    const rules = {\n      categories: {\n        read: {\n          'unknown-validator': 'for-test',\n        },\n      },\n    }\n    const ruler = new Policy()\n    assert.throws(() => ruler.load(rules))\n  })\n})\n\ndescribe('db-proxy(unit): class Policy validate() - condition', () => {\n  const rules = {\n    categories: {\n      read: true,\n      update: '$admin === true',\n      add: {\n        condition: '$admin === true',\n      },\n      remove: '$admin === true',\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n  const injections = {\n    $admin: true,\n  }\n\n  const params = {\n    collection: 'categories',\n    action: 'database.queryDocument',\n  }\n\n  it('read should be ok', async () => {\n    params.action = 'database.queryDocument'\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('update should be ok', async () => {\n    params.action = 'database.updateDocument'\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('add should be ok', async () => {\n    params.action = 'database.addDocument'\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('remove should be ok', async () => {\n    params.action = 'database.deleteDocument'\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('read should be rejected', async () => {\n    rules.categories['read'] = false\n    const ruler = new Policy()\n    ruler.load(rules)\n    const injections = { $admin: false }\n    const params = {\n      collection: 'categories',\n      action: 'database.queryDocument',\n      injections,\n    }\n\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(!matched)\n    assert.ok(errors)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'condition')\n  })\n\n  it('update should be rejected', async () => {\n    const injections = { $admin: false }\n    const params = {\n      collection: 'categories',\n      action: 'database.updateDocument',\n      injections,\n    }\n\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(!matched)\n    assert.ok(errors)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'condition')\n  })\n\n  it('add should be rejected', async () => {\n    const injections = { $admin: false }\n    const params = {\n      collection: 'categories',\n      action: 'database.addDocument',\n      injections,\n    }\n\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(!matched)\n    assert.ok(errors)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'condition')\n  })\n\n  it('remove should be rejected', async () => {\n    const injections = { $admin: false }\n    const params = {\n      collection: 'categories',\n      action: 'database.deleteDocument',\n      injections,\n    }\n\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(!matched)\n    assert.ok(errors)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 'condition')\n  })\n\n  it('invalid categories given should be rejected', async () => {\n    const injections = { $admin: true }\n    const params = {\n      collection: 'invalid_categories',\n      action: 'database.deleteDocument',\n      injections,\n    }\n\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(!matched)\n    assert.ok(errors)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 0)\n  })\n\n  it('invalid action given should be rejected', async () => {\n    const injections = { $admin: true }\n    const params = {\n      collection: 'categories',\n      action: 'invalid.database.deleteDocument',\n      injections,\n    }\n\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(!matched)\n    assert.ok(errors)\n    assert.equal(errors.length, 1)\n    assert.equal(errors[0].type, 0)\n  })\n})\n\ndescribe('db-proxy(unit): class Policy validate() - multiple rules', () => {\n  const rules = {\n    categories: {\n      read: [\n        { condition: \"$role === 'admin'\" },\n        { condition: \"$role === 'product'\" },\n        { condition: \"$role === 'market'\" },\n      ],\n    },\n  }\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  it('injections with { $role: \"admin\" } should be ok', async () => {\n    const injections = { $role: 'admin' }\n    const params = {\n      collection: 'categories',\n      action: 'database.queryDocument',\n      injections,\n    }\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('injections with { $role: \"product\" } should be ok', async () => {\n    const injections = { $role: 'product' }\n    const params = {\n      collection: 'categories',\n      action: 'database.queryDocument',\n      injections,\n    }\n\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('injections with { $role: \"market\" } should be ok', async () => {\n    const injections = { $role: 'market' }\n    const params = {\n      collection: 'categories',\n      action: 'database.queryDocument',\n      injections,\n    }\n\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it(\"injections with { $role: 'other' } should be rejected\", async () => {\n    const injections = { $role: 'other' }\n    const params = {\n      collection: 'categories',\n      action: 'database.queryDocument',\n      injections,\n    }\n\n    const { errors, matched } = await ruler.validate(params, injections)\n    assert.ok(!matched)\n    assert.ok(errors)\n    assert.equal(errors.length, 3)\n    assert.equal(errors[0].type, 'condition')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/rules.json",
    "content": "{\n    \"categories\": {\n        \"read\": true,\n        \"update\": true,\n        \"$schema\": { \n            \"account\": { \"match\": \"^\\\\d{6,10}$\" }\n        }\n    }\n}"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/validator.join.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../dist')\n\ndescribe('db-proxy(unit): validator::join - [no join configured]', () => {\n  const rules = {\n    categories: {\n      read: true,\n      update: true,\n      add: true,\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  it('.read with joins when no join configuration given should be rejected', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.queryDocument',\n      joins: [\n        {\n          type: 'left',\n          collection: 'left_tbl',\n          leftKey: 'lid',\n          rightKey: 'rid',\n        },\n      ],\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length)\n    assert.strictEqual(errors[0].type, 'join')\n  })\n\n  it('.update with joins when no join configuration given should be rejected', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.updateDocument',\n      joins: [\n        {\n          type: 'left',\n          collection: 'left_tbl',\n          leftKey: 'lid',\n          rightKey: 'rid',\n        },\n      ],\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length)\n    assert.strictEqual(errors[0].type, 'join')\n    assert.strictEqual(\n      errors[0].error,\n      'operation denied: only READ support join query'\n    )\n  })\n})\n\ndescribe('db-proxy(unit): validator::join - [join configured]', () => {\n  const rules = {\n    categories: {\n      read: {\n        join: ['sub_tbl1', 'sub_tbl2'],\n      },\n      update: {\n        join: ['sub_tbl1'],\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  it('.read with left joins should be ok', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.queryDocument',\n      joins: [\n        {\n          type: 'left',\n          collection: 'sub_tbl1',\n          leftKey: 'lid',\n          rightKey: 'rid',\n        },\n        {\n          type: 'left',\n          collection: 'sub_tbl2',\n          leftKey: 'lid',\n          rightKey: 'rid',\n        },\n      ],\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('.read with invalid joins should be rejected', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.queryDocument',\n      joins: [\n        {\n          type: 'left',\n          collection: 'another_tbl',\n          leftKey: 'lid',\n          rightKey: 'rid',\n        },\n      ],\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length)\n    assert.strictEqual(errors[0].type, 'join')\n    assert.strictEqual(errors[0].error, 'join query with another_tbl denied')\n  })\n\n  it('.read with non-left-join should be rejected', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.queryDocument',\n      joins: [\n        {\n          type: 'inner',\n          collection: 'sub_tbl1',\n          leftKey: 'lid',\n          rightKey: 'rid',\n        },\n      ],\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length)\n    assert.strictEqual(errors[0].type, 'join')\n    assert.strictEqual(errors[0].error, 'only left join supported by now')\n  })\n\n  it('.update with joins should be rejected', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.updateDocument',\n      joins: [\n        {\n          type: 'left',\n          collection: 'sub_tbl1',\n          leftKey: 'lid',\n          rightKey: 'rid',\n        },\n      ],\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length)\n    assert.strictEqual(errors[0].type, 'join')\n    assert.strictEqual(\n      errors[0].error,\n      'operation denied: only READ support join query'\n    )\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/policy/validator.multi.test.js",
    "content": "const assert = require('assert')\nconst { Policy } = require('../../../dist')\n\ndescribe('db-proxy(unit): validator::multi - [multi config as true]', () => {\n  const rules = {\n    categories: {\n      read: {},\n      update: {\n        multi: true,\n      },\n      add: {\n        multi: 'true',\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  it('.read should be ok', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.queryDocument',\n      multi: true,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('.update should be ok', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.updateDocument',\n      data: {\n        title: 'test-title',\n      },\n      multi: true,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('.add should be ok', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.addDocument',\n      data: {\n        title: 'test-title',\n      },\n      multi: true,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n})\n\ndescribe('db-proxy(unit): validator::multi - [multi config as false]', () => {\n  const rules = {\n    categories: {\n      read: {\n        multi: false,\n      },\n      update: {\n        multi: false,\n      },\n      add: {\n        multi: 'false',\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  it('.read should be ok', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.queryDocument',\n      multi: true,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length === 1)\n    assert.equal(errors[0].type, 'multi')\n    assert.equal(errors[0].error, 'multi operation denied')\n  })\n\n  it('.update should be ok', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.updateDocument',\n      data: {\n        title: 'test-title',\n      },\n      multi: true,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length === 1)\n    assert.equal(errors[0].type, 'multi')\n    assert.equal(errors[0].error, 'multi operation denied')\n  })\n\n  it('.add should be ok', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.addDocument',\n      data: {\n        title: 'test-title',\n      },\n      multi: true,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length === 1)\n    assert.equal(errors[0].type, 'multi')\n    assert.equal(errors[0].error, 'multi operation denied')\n  })\n\n  it('.add should be rejected while data is array and multi given false', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.addDocument',\n      data: [\n        {\n          title: 'test-title',\n        },\n        {\n          title: 'test-title-2',\n        },\n      ],\n      multi: false,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length === 1)\n    assert.equal(errors[0].type, 'multi')\n    assert.equal(errors[0].error, 'multi insert operation denied')\n  })\n\n  it('.add should be rejected while data is array and multi given true', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.addDocument',\n      data: [\n        {\n          title: 'test-title',\n        },\n        {\n          title: 'test-title-2',\n        },\n      ],\n      multi: true,\n    }\n\n    const { matched, errors } = await ruler.validate(params, {})\n    assert.ok(!matched)\n    assert.ok(errors.length === 1)\n    assert.equal(errors[0].type, 'multi')\n    assert.equal(errors[0].error, 'multi operation denied')\n  })\n})\n\ndescribe('db-proxy(unit): validator::multi - [multi config as expression]', () => {\n  const rules = {\n    categories: {\n      remove: {\n        multi: '$uid === query.created_by',\n      },\n    },\n  }\n\n  const ruler = new Policy()\n  ruler.load(rules)\n\n  it('remove should be ok', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.deleteDocument',\n      query: {\n        created_by: 1,\n      },\n      multi: true,\n    }\n\n    const { matched, errors } = await ruler.validate(params, { $uid: 1 })\n    assert.ok(matched)\n    assert.ok(!errors)\n  })\n\n  it('.remove should be rejected', async () => {\n    const params = {\n      collection: 'categories',\n      action: 'database.deleteDocument',\n      query: {\n        created_by: 2,\n      },\n      multi: true,\n    }\n\n    const { matched, errors } = await ruler.validate(params, { $uid: 1 })\n    assert.ok(!matched)\n    assert.ok(errors.length === 1)\n    assert.equal(errors[0].type, 'multi')\n    assert.equal(errors[0].error, 'multi operation denied')\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/proxy.test.js",
    "content": "const assert = require('assert')\nconst { Proxy, MongoAccessor } = require('../../dist')\n\ndescribe('db-proxy(unit): class Proxy', () => {\n  const accessor = new MongoAccessor('test-db', 'mongodb://localhost:27017')\n\n  it('constructor() ok', () => {\n    const entry = new Proxy(accessor)\n\n    assert.ok(entry.accessor instanceof MongoAccessor)\n    assert.equal(accessor, entry.accessor)\n  })\n\n  it('parseParams() ok', () => {\n    const entry = new Proxy(accessor)\n\n    const reqParams = {\n      collectionName: 'test-name',\n      query: { _id: 'test-id' },\n      other: 'test',\n      action: 'database.queryDocument',\n    }\n\n    const r = entry.parseParams(reqParams)\n\n    assert.equal(r.action, 'database.queryDocument')\n    assert.equal(r.collection, 'test-name')\n    assert.ok(r.query)\n    assert.ok(!r.other)\n    assert.equal(r.query._id, 'test-id')\n  })\n\n  it('parseParams() unknown action should get an error', () => {\n    const entry = new Proxy(accessor)\n\n    try {\n      entry.parseParams({ action: 'database.unknowAction' })\n      throw new Error('should get an error but not')\n    } catch (error) {\n      assert.ok(error)\n    }\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/sql_builder.test.js",
    "content": "const assert = require('assert')\nconst { SqlBuilder } = require('../../dist/accessor/sql_builder')\nconst { ActionType } = require('../../dist/types')\nconst { strictCompareArray } = require('../utils')\n\ndescribe('db-proxy(unit): class SqlBuilder', () => {\n  it('constructor() passed', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.READ,\n      query: {},\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    assert.strictEqual(builder.query, params.query)\n    assert.strictEqual(builder.table, params.collection)\n  })\n\n  it('select() with query: passed', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.READ,\n      query: { id: 0, name: 'abc' },\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    const { sql, values } = builder.select()\n    assert.strictEqual(\n      sql,\n      'select * from test_table where 1=1 and id = ? and name = ?  limit 0,100'\n    )\n    strictCompareArray(values, [0, 'abc'])\n  })\n\n  it('select() with projection: passed', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.READ,\n      query: { id: 0, name: 'abc' },\n      projection: { id: true, name: true },\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    const { sql, values } = builder.select()\n\n    assert.strictEqual(\n      sql,\n      'select id,name from test_table where 1=1 and id = ? and name = ?  limit 0,100'\n    )\n    strictCompareArray(values, [0, 'abc'])\n  })\n\n  it('select() with order: passed', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.READ,\n      query: { id: 0, name: 'abc' },\n      order: [\n        { field: 'id', direction: 'asc' },\n        { field: 'name', direction: 'desc' },\n      ],\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    const { sql, values } = builder.select()\n\n    assert.strictEqual(\n      sql,\n      'select * from test_table where 1=1 and id = ? and name = ? order by id asc,name desc limit 0,100'\n    )\n    strictCompareArray(values, [0, 'abc'])\n  })\n\n  it('left join: passed', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.READ,\n      query: { id: 0, name: 'abc' },\n      joins: [\n        { collection: 'x_table', type: 'left', leftKey: 'xid', rightKey: 'id' },\n        { collection: 'y_table', type: 'left', leftKey: 'yid', rightKey: 'id' },\n      ],\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    const { sql, values } = builder.select()\n\n    assert.strictEqual(\n      sql,\n      'select * from test_table  left join x_table on test_table.xid = x_table.id left join y_table on test_table.yid = y_table.id where 1=1 and id = ? and name = ?  limit 0,100'\n    )\n    strictCompareArray(values, [0, 'abc'])\n  })\n\n  it('count() with query: passed', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.COUNT,\n      query: { id: 0, name: 'abc' },\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    const { sql, values } = builder.count()\n\n    assert.strictEqual(\n      sql,\n      'select count(*) as total from test_table where 1=1 and id = ? and name = ?'\n    )\n    strictCompareArray(values, [0, 'abc'])\n  })\n\n  it('delete() with query: passed', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.REMOVE,\n      query: { id: 0, name: 'abc' },\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    const { sql, values } = builder.delete()\n\n    assert.strictEqual(\n      sql,\n      'delete from test_table where 1=1 and id = ? and name = ?  limit 1 '\n    )\n    strictCompareArray(values, [0, 'abc'])\n  })\n\n  it('delete() with multi = true: passed', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.REMOVE,\n      query: { id: 0, name: 'abc' },\n      multi: true,\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    const { sql, values } = builder.delete()\n\n    assert.strictEqual(\n      sql,\n      'delete from test_table where 1=1 and id = ? and name = ?   '\n    )\n    strictCompareArray(values, [0, 'abc'])\n  })\n\n  it('insert() with data: passed', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.ADD,\n      data: { id: 0, name: 'abc' },\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    const { sql, values } = builder.insert()\n\n    assert.strictEqual(sql, 'insert into test_table (id,name) values (?,?)')\n    strictCompareArray(values, [0, 'abc'])\n  })\n\n  it('update() with data: passed', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.UPDATE,\n      data: { $set: { id: 0, name: 'abc' } },\n      merge: true,\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    const { sql, values } = builder.update()\n\n    assert.strictEqual(\n      sql,\n      'update test_table set id=?,name=? where 1=1  limit 1'\n    )\n    strictCompareArray(values, [0, 'abc'])\n  })\n\n  it('update() with query: passed', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.UPDATE,\n      data: { $set: { id: 1, name: 'xyz' } },\n      query: { id: 0, name: 'abc' },\n      merge: true,\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    const { sql, values } = builder.update()\n\n    assert.strictEqual(\n      sql,\n      'update test_table set id=?,name=? where 1=1 and id = ? and name = ?  limit 1'\n    )\n    strictCompareArray(values, [1, 'xyz', 0, 'abc'])\n  })\n\n  it('update() with  multi = true: passed', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.UPDATE,\n      data: { $set: { id: 1, name: 'xyz' } },\n      query: { id: 0, name: 'abc' },\n      multi: true,\n      merge: true,\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    const { sql, values } = builder.update()\n\n    assert.strictEqual(\n      sql,\n      'update test_table set id=?,name=? where 1=1 and id = ? and name = ?  '\n    )\n    strictCompareArray(values, [1, 'xyz', 0, 'abc'])\n  })\n\n  it('update() with operator $unset $inc $mul', () => {\n    const params = {\n      collection: 'test_table',\n      action: ActionType.UPDATE,\n      data: {\n        $set: { id: 1, name: 'xyz' },\n        $unset: { status: '' },\n        $inc: { age: 2 },\n        $mul: { amount: 4 },\n      },\n      query: { id: 0, name: 'abc' },\n      merge: true,\n    }\n\n    const builder = new SqlBuilder(params)\n    assert(builder instanceof SqlBuilder)\n\n    const { sql, values } = builder.update()\n\n    assert.strictEqual(\n      sql,\n      'update test_table set id=?,name=?,age= age + ?,amount= amount * ?,status= null where 1=1 and id = ? and name = ?  limit 1'\n    )\n    strictCompareArray(values, [1, 'xyz', 2, 4, 0, 'abc'])\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/units/sql_query_builder.test.js",
    "content": "const assert = require('assert')\nconst { SqlQueryBuilder } = require('../../dist/accessor/sql_builder')\nconst { strictCompareArray } = require('../utils')\n\n/**\n * 不同的查询情况(case N)，参考 docs/convert-sql.md 文档。\n */\ndescribe('db-proxy(unit): class SqlQueryBuilder', () => {\n  it('Query CASE 1: query = {} shoud be ok', () => {\n    const query = {}\n    const builder = new SqlQueryBuilder(query)\n    assert(builder instanceof SqlQueryBuilder)\n    assert.strictEqual(builder.build(), 'where 1=1')\n  })\n\n  it('Query CASE 2: query = { id: 0} shoud be ok', () => {\n    const query = { id: 0 }\n    const builder = new SqlQueryBuilder(query)\n    assert(builder instanceof SqlQueryBuilder)\n\n    const sql = builder.build()\n    const values = builder.values()\n\n    assert.strictEqual(sql, 'where 1=1 and id = ?')\n    strictCompareArray(values, [0])\n  })\n\n  it('Query CASE 3: query = { id: 0, name: \"abc\"} shoud be ok', () => {\n    const query = { id: 0, name: 'abc' }\n    const builder = new SqlQueryBuilder(query)\n    assert(builder instanceof SqlQueryBuilder)\n\n    const sql = builder.build()\n    const values = builder.values()\n    assert.strictEqual(sql, 'where 1=1 and id = ? and name = ?')\n    strictCompareArray(values, [0, 'abc'])\n  })\n\n  it('Query CASE 4 nested property should return error', () => {\n    const query = {\n      id: 0,\n      f1: {\n        f2: 0,\n      },\n    }\n    const builder = new SqlQueryBuilder(query)\n    assert(builder instanceof SqlQueryBuilder)\n\n    try {\n      const sql = builder.build()\n      assert.strictEqual(sql, null)\n    } catch (error) {\n      assert.strictEqual(\n        error.message,\n        'invalid query: nested property in query'\n      )\n    }\n  })\n\n  it('Query CASE 5 shoud be ok', () => {\n    const query = {\n      f1: 0,\n      f2: {\n        $ne: 0,\n      },\n      f3: {\n        $in: [1, 2, true, 'abc'],\n      },\n    }\n\n    const builder = new SqlQueryBuilder(query)\n    assert(builder instanceof SqlQueryBuilder)\n\n    const sql = builder.build()\n    const values = builder.values()\n    assert.strictEqual(\n      sql,\n      'where 1=1 and f1 = ? and f2 <> ? and f3 in (?,?,?,?)'\n    )\n    strictCompareArray(values, [0, 0, 1, 2, true, 'abc'])\n  })\n\n  it('Query CASE 6 shoud be ok', () => {\n    const query = {\n      f1: 0,\n      $and: [\n        {\n          f2: { $gt: 0 },\n        },\n        {\n          f2: { $lt: 1 },\n        },\n      ],\n    }\n\n    const builder = new SqlQueryBuilder(query)\n    assert(builder instanceof SqlQueryBuilder)\n\n    const sql = builder.build()\n    const values = builder.values()\n\n    assert.strictEqual(sql, 'where 1=1 and f1 = ? and (f2 > ? and f2 < ?)')\n    strictCompareArray(values, [0, 0, 1])\n  })\n\n  it('Query CASE 7 shoud be ok', () => {\n    const query = {\n      f1: 0,\n      $or: [\n        {\n          f2: { $gt: 0 },\n        },\n        {\n          f2: { $lt: 1 },\n        },\n      ],\n    }\n\n    const builder = new SqlQueryBuilder(query)\n    assert(builder instanceof SqlQueryBuilder)\n\n    const sql = builder.build()\n    const values = builder.values()\n\n    assert.strictEqual(sql, 'where 1=1 and f1 = ? and (f2 > ? or f2 < ?)')\n    strictCompareArray(values, [0, 0, 1])\n  })\n\n  it('Query CASE 8 shoud be ok', () => {\n    const query = {\n      f1: 0,\n      $or: [\n        { f2: 1 },\n        { f6: { $lt: 4000 } },\n        {\n          $and: [{ f6: { $gt: 6000 } }, { f6: { $lt: 8000 } }],\n        },\n      ],\n    }\n\n    const builder = new SqlQueryBuilder(query)\n    assert(builder instanceof SqlQueryBuilder)\n\n    const sql = builder.build()\n    const values = builder.values()\n\n    assert.strictEqual(\n      sql,\n      'where 1=1 and f1 = ? and (f2 = ? or f6 < ? or (f6 > ? and f6 < ?))'\n    )\n    strictCompareArray(values, [0, 1, 4000, 6000, 8000])\n  })\n\n  it('Query CASE 9: like shoud be ok', () => {\n    const query = {\n      f1: 0,\n      f2: {\n        $like: '%keyword%',\n      },\n    }\n\n    const builder = new SqlQueryBuilder(query)\n    assert(builder instanceof SqlQueryBuilder)\n\n    const sql = builder.build()\n    const values = builder.values()\n\n    assert.strictEqual(sql, 'where 1=1 and f1 = ? and f2 like ?')\n    strictCompareArray(values, [0, '%keyword%'])\n  })\n})\n"
  },
  {
    "path": "packages/database-proxy/tests/utils.js",
    "content": "const assert = require('assert')\n\n// 只要求值一致，不关心顺序\nfunction compareArray(arr1, arr2) {\n  assert.strictEqual(\n    arr1.length,\n    arr2.length,\n    `compareArray() length: ${arr1.length}) should be equal ${arr2.length}`\n  )\n  for (const item of arr1) {\n    assert(\n      arr2.includes(item),\n      `compareArray() ${item} in arr1 not present in arr2`\n    )\n  }\n}\n\n// 要求数据值和顺序都一致\nfunction strictCompareArray(arr1, arr2) {\n  assert.strictEqual(\n    arr1.length,\n    arr2.length,\n    `array length: ${arr1.length}) should be equal ${arr2.length}`\n  )\n  for (let i = 0; i < arr2.length; i++) {\n    assert.strictEqual(\n      arr1[i],\n      arr2[i],\n      `array length: arr1[${i}] not equal to arr2[${i}]`\n    )\n  }\n}\n\nmodule.exports = {\n  compareArray,\n  strictCompareArray,\n}\n"
  },
  {
    "path": "packages/database-proxy/tsconfig.json",
    "content": "\n{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"declaration\": true,\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true,\n    \"importHelpers\": false,\n    \"module\": \"Node16\",\n    \"declarationMap\": true,\n    // \"declarationDir\": \"types\",\n    \"noEmitOnError\": false,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": false,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"outDir\": \"dist\",\n    \"pretty\": true,\n    \"removeComments\": false,\n    \"stripInternal\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true,\n    \"target\": \"es2017\",\n    \"alwaysStrict\": true,\n    \"lib\": [\n      \"es2015\",\n      \"es6\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*\"\n  ],\n  \"exclude\": [\n    \"tests_modules\",\n    \"tests\",\n    \"test\"\n  ]\n}"
  },
  {
    "path": "packages/database-ql/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"laf/package\"\n}"
  },
  {
    "path": "packages/database-ql/.npmignore",
    "content": "./node_modules\n.DS_Store\n./src\n./tests"
  },
  {
    "path": "packages/database-ql/README.md",
    "content": "\n# 说明\n\n> 供客户端与服务端使用的 `类Mongodb` 的查询语法，可于任意 javascript 环境运行，用于 `laf-client-sdk`、`laf` 中。\n\n# 安装\n\n```sh\nnpm i database-ql\n```\n\n# API Reference\n- [获取数据库的引用](#获取数据库的引用)\n- [获取集合的引用](#获取集合的引用)\n  - [集合 Collection](#集合-collection)\n  - [记录 Record / Document](#记录-record--document)\n  - [查询筛选指令 Query Command](#查询筛选指令-query-command)\n  - [字段更新指令 Update Command](#字段更新指令-update-command)\n- [支持的数据类型](#支持的数据类型)\n- [新增文档](#新增文档)\n- [查询文档](#查询文档)\n  - [添加查询条件](#添加查询条件)\n  - [获取查询数量](#获取查询数量)\n  - [设置记录数量](#设置记录数量)\n  - [设置起始位置](#设置起始位置)\n  - [对结果排序](#对结果排序)\n  - [指定返回字段](#指定返回字段)\n  - [查询指令](#查询指令)\n    - [eq](#eq)\n    - [neq](#neq)\n    - [gt](#gt)\n    - [gte](#gte)\n    - [lt](#lt)\n    - [lte](#lte)\n    - [in](#in)\n    - [nin](#nin)\n    - [and](#and)\n    - [or](#or)\n  - [正则表达式查询](#正则表达式查询)\n    - [db.RegExp](#dbregexp)\n- [删除文档](#删除文档)\n- [更新文档](#更新文档)\n  - [更新指定文档](#更新指定文档)\n  - [更新文档，如果不存在则创建](#更新文档如果不存在则创建)\n  - [批量更新文档](#批量更新文档)\n  - [更新指令](#更新指令)\n    - [set](#set)\n    - [inc](#inc)\n    - [mul](#mul)\n    - [remove](#remove)\n    - [push](#push)\n    - [pop](#pop)\n    - [unshift](#unshift)\n    - [shift](#shift)\n\n## 获取数据库的引用\n\n```js\nconst db = cloud.database();\n```\n\n## 获取集合的引用\n\n```js\n// 获取 `user` 集合的引用\nconst collection = db.collection('user');\n```\n\n### 集合 Collection\n\n通过 `db.collection(name)` 可以获取指定集合的引用，在集合上可以进行以下操作\n\n| 类型     | 接口    | 说明                                                                               |\n| -------- | ------- | ---------------------------------------------------------------------------------- |\n| 写       | add     | 新增记录（触发请求）                                                               |\n| 计数     | count   | 获取复合条件的记录条数                                                             |\n| 读       | get     | 获取集合中的记录，如果有使用 where 语句定义查询条件，则会返回匹配结果集 (触发请求) |\n| 引用     | doc     | 获取对该集合中指定 id 的记录的引用                                                 |\n| 查询条件 | where   | 通过指定条件筛选出匹配的记录，可搭配查询指令（eq, gt, in, ...）使用                |\n|          | skip    | 跳过指定数量的文档，常用于分页，传入 offset                                        |\n|          | orderBy | 排序方式                                                                           |\n|          | limit   | 返回的结果集(文档数量)的限制，有默认值和上限值                                     |\n|          | field   | 指定需要返回的字段                                                                 |\n\n\n查询及更新指令用于在 `where` 中指定字段需满足的条件，指令可通过 `db.command` 对象取得。\n\n\n### 记录 Record / Document\n\n通过 `db.collection(collectionName).doc(docId)` 可以获取指定集合上指定 id 的记录的引用，在记录上可以进行以下操作\n\n| 接口 | 说明   |\n| ---- | ------ |\n| 写   | set    | 覆写记录               |\n|      | update | 局部更新记录(触发请求) |\n|      | remove | 删除记录(触发请求)     |\n| 读   | get    | 获取记录(触发请求)     |\n\n\n### 查询筛选指令 Query Command\n\n以下指令挂载在 `db.command` 下\n\n| 类型     | 接口 | 说明                               |\n| -------- | ---- | ---------------------------------- |\n| 比较运算 | eq   | 字段 ==                            |\n|          | neq  | 字段 !=                            |\n|          | gt   | 字段 >                             |\n|          | gte  | 字段 >=                            |\n|          | lt   | 字段 <                             |\n|          | lte  | 字段 <=                            |\n|          | in   | 字段值在数组里                     |\n|          | nin  | 字段值不在数组里                   |\n| 逻辑运算 | and  | 表示需同时满足指定的所有条件       |\n|          | or   | 表示需同时满足指定条件中的至少一个 |\n\n\n### 字段更新指令 Update Command\n\n以下指令挂载在 `db.command` 下\n\n| 类型 | 接口    | 说明                             |\n| ---- | ------- | -------------------------------- |\n| 字段 | set     | 设置字段值                       |\n|      | remove  | 删除字段                         |\n|      | inc     | 加一个数值，原子自增             |\n|      | mul     | 乘一个数值，原子自乘             |\n|      | push    | 数组类型字段追加尾元素，支持数组 |\n|      | pop     | 数组类型字段删除尾元素，支持数组 |\n|      | shift   | 数组类型字段删除头元素，支持数组 |\n|      | unshift | 数组类型字段追加头元素，支持数组 |\n\n\n## 支持的数据类型\n\n数据库提供以下几种数据类型：\n* String：字符串\n* Number：数字\n* Object：对象\n* Array：数组\n* Bool：布尔值\n* GeoPoint：地理位置点\n* GeoLineStringL: 地理路径\n* GeoPolygon: 地理多边形\n* GeoMultiPoint: 多个地理位置点\n* GeoMultiLineString: 多个地理路径\n* GeoMultiPolygon: 多个地理多边形\n* Date：时间\n* Null\n\n以下对几个特殊的数据类型做个补充说明\n1. 时间 Date\n\n  Date 类型用于表示时间，精确到毫秒，可以用 JavaScript 内置 Date 对象创建。需要特别注意的是，用此方法创建的时间是客户端时间，不是服务端时间。如果需要使用服务端时间，应该用 API 中提供的 serverDate 对象来创建一个服务端当前时间的标记，当使用了 serverDate 对象的请求抵达服务端处理时，该字段会被转换成服务端当前的时间，更棒的是，我们在构造 serverDate 对象时还可通过传入一个有 offset 字段的对象来标记一个与当前服务端时间偏移 offset 毫秒的时间，这样我们就可以达到比如如下效果：指定一个字段为服务端时间往后一个小时。\n\n  那么当我们需要使用客户端时间时，存放 Date 对象和存放毫秒数是否是一样的效果呢？不是的，我们的数据库有针对日期类型的优化，建议大家使用时都用 Date 或 serverDate 构造时间对象。\n\n  ```js\n  //服务端当前时间\n  new db.serverDate()\n  ```\n\n  ```js\n  //服务端当前时间加1S\n  new db.serverDate({\n    offset: 1000\n  })\n  ```\n\n2. 地理位置\n\n参考：[GEO地理位置](#GEO地理位置)\n\n3. Null\n\n  Null 相当于一个占位符，表示一个字段存在但是值为空。\n\n\n## 新增文档\n\n方法1： collection.add(data)\n\n示例：\n\n| 参数 | 类型   | 必填 | 说明                                     |\n| ---- | ------ | ---- | ---------------------------------------- |\n| data | object | 是   | {_id: '10001', 'name': 'Ben'} _id 非必填 |\n\n```js\n//promise\ncollection.add({\n  name: 'Ben'\n}).then((res) => {\n\n});\n\n//callback\ncollection.add({\n  name: 'Ben'\n}, function(err, res) {\n\n})\n```\n\n方法2： collection.doc().set(data)\n\n也可通过 `set` 方法新增一个文档，需先取得文档引用再调用 `set` 方法。\n如果文档不存在，`set` 方法会创建一个新文档。\n\n```js\n//promise\ncollection.doc().set({\n  name: \"Hey\"\n});\n\n//callback\ncollection.doc().set({\n  name: \"Hey\"\n}, function(err, res) {\n\n});\n```\n\n## 查询文档\n\n支持 `where()`、`limit()`、`skip()`、`orderBy()`、`get()`、`update()`、`field()`、`count()` 等操作。\n\n只有当调用`get()` `update()`时才会真正发送请求。\n注：默认取前100条数据，最大取前100条数据。\n\n### 添加查询条件\ncollection.where()\n参数\n\n设置过滤条件\nwhere 可接收对象作为参数，表示筛选出拥有和传入对象相同的 key-value 的文档。比如筛选出所有类型为计算机的、内存为 8g 的商品：\n\n```js\ndb.collection('goods').where({\n  category: 'computer',\n  type: {\n    memory: 8,\n  }\n})\n```\n\n如果要表达更复杂的查询，可使用高级查询指令，比如筛选出所有内存大于 8g 的计算机商品：\n```js\nconst _ = db.command // 取指令\ndb.collection('goods').where({\n  category: 'computer',\n  type: {\n    memory: _.gt(8), // 表示大于 8\n  }\n})\n```\n\n### 获取查询数量\ncollection.count()\n\n参数\n```js\n//promise\ndb.collection('goods').where({\n  category: 'computer',\n  type: {\n    memory: 8,\n  }\n}).count().then(function(res) {\n\n})\n\n//callback\ndb.collection('goods').where({\n  category: 'computer',\n  type: {\n    memory: 8,\n  }\n}).count(function(err, res) {\n\n})\n```\n\n响应参数\n\n| 字段      | 类型    | 必填 | 说明                     |\n| --------- | ------- | ---- | ------------------------ |\n| code      | string  | 否   | 状态码，操作成功则不返回 |\n| message   | string  | 否   | 错误描述                 |\n| total     | Integer | 否   | 计数结果                 |\n| requestId | string  | 否   | 请求序列号，用于错误排查 |\n\n\n\n### 设置记录数量\ncollection.limit()\n\n参数说明\n\n| 参数  | 类型    | 必填 | 说明           |\n| ----- | ------- | ---- | -------------- |\n| value | Integer | 是   | 限制展示的数值 |\n\n使用示例\n\n```js\n//promise\ncollection.limit(1).get().then(function(res) {\n\n});\n\n//callback\ncollection.limit(1).get(function(err, res) {\n\n});\n```\n\n### 设置起始位置\ncollection.skip()\n\n参数说明\n\n| 参数  | 类型    | 必填 | 说明           |\n| ----- | ------- | ---- | -------------- |\n| value | Integer | 是   | 跳过展示的数据 |\n\n使用示例\n\n```js\n//promise\ncollection.skip(4).get().then(function(res) {\n\n});\n\n//callback\ncollection.skip(4).get(function(err, res) {\n\n})\n```\n\n### 对结果排序\ncollection.orderBy()\n\n参数说明\n\n| 参数      | 类型   | 必填 | 说明                                |\n| --------- | ------ | ---- | ----------------------------------- |\n| field     | string | 是   | 排序的字段                          |\n| orderType | string | 是   | 排序的顺序，升序(asc) 或 降序(desc) |\n\n使用示例\n\n```js\n//promise\ncollection.orderBy(\"name\", \"asc\").get().then(function(res) {\n\n});\n\n//callback\ncollection.orderBy(\"name\", \"asc\").get(function(err, res) {\n\n});\n```\n\n### 指定返回字段\n\ncollection.field()\n\n参数说明\n\n| 参数 | 类型   | 必填 | 说明                                    |\n| ---- | ------ | ---- | --------------------------------------- |\n| -    | object | 是   | 要过滤的字段，不返回传0，返回传1 |\n\n使用示例\n\n```js\ncollection.field({ 'age': 1 })\n```\n备注：只能指定要返回的字段或者不要返回的字段。即{'a': 1, 'b': 0}是一种错误的参数格式\n\n### 查询指令\n#### eq\n\n表示字段等于某个值。`eq` 指令接受一个字面量 (literal)，可以是 `number`, `boolean`, `string`, `object`, `array`。\n\n比如筛选出所有自己发表的文章，除了用传对象的方式：\n\n```js\nconst myOpenID = 'xxx'\ndb.collection('articles').where({\n  _openid: myOpenID\n})\n```\n\n还可以用指令：\n\n```js\nconst _ = db.command\nconst myOpenID = 'xxx'\ndb.collection('articles').where({\n  _openid: _.eq(openid)\n})\n```\n\n注意 `eq` 指令比对象的方式有更大的灵活性，可以用于表示字段等于某个对象的情况，比如：\n\n```js\n// 这种写法表示匹配 stat.publishYear == 2018 且 stat.language == 'zh-CN'\ndb.collection('articles').where({\n  stat: {\n    publishYear: 2018,\n    language: 'zh-CN'\n  }\n})\n// 这种写法表示 stat 对象等于 { publishYear: 2018, language: 'zh-CN' }\nconst _ = db.command\ndb.collection('articles').where({\n  stat: _.eq({\n    publishYear: 2018,\n    language: 'zh-CN'\n  })\n})\n```\n\n#### neq\n\n字段不等于。`neq` 指令接受一个字面量 (literal)，可以是 `number`, `boolean`, `string`, `object`, `array`。\n\n如筛选出品牌不为 X 的计算机：\n\n```js\nconst _ = db.command\ndb.collection('goods').where({\n  category: 'computer',\n  type: {\n    brand: _.neq('X')\n  },\n})\n```\n\n#### gt\n\n字段大于指定值。\n\n如筛选出价格大于 2000 的计算机：\n\n```js\nconst _ = db.command\ndb.collection('goods').where({\n  category: 'computer',\n  price: _.gt(2000)\n})\n```\n\n#### gte\n\n字段大于或等于指定值。\n\n#### lt\n\n字段小于指定值。\n\n#### lte\n\n字段小于或等于指定值。\n\n#### in\n\n字段值在给定的数组中。\n\n筛选出内存为 8g 或 16g 的计算机商品：\n\n```js\nconst _ = db.command\ndb.collection('goods').where({\n  category: 'computer',\n  type: {\n    memory: _.in([8, 16])\n  }\n})\n```\n\n#### nin\n\n字段值不在给定的数组中。\n\n筛选出内存不是 8g 或 16g 的计算机商品：\n\n```js\nconst _ = db.command\ndb.collection('goods').where({\n  category: 'computer',\n  type: {\n    memory: _.nin([8, 16])\n  }\n})\n```\n\n#### and\n\n表示需同时满足指定的两个或以上的条件。\n\n如筛选出内存大于 4g 小于 32g 的计算机商品：\n\n流式写法：\n```js\nconst _ = db.command\ndb.collection('goods').where({\n  category: 'computer',\n  type: {\n    memory: _.gt(4).and(_.lt(32))\n  }\n})\n```\n\n前置写法：\n```js\nconst _ = db.command\ndb.collection('goods').where({\n  category: 'computer',\n  type: {\n    memory: _.and(_.gt(4), _.lt(32))\n  }\n})\n```\n\n#### or\n\n表示需满足所有指定条件中的至少一个。如筛选出价格小于 4000 或在 6000-8000 之间的计算机：\n\n流式写法：\n```js\nconst _ = db.command\ndb.collection('goods').where({\n  category: 'computer',\n  type: {\n    price:_.lt(4000).or(_.gt(6000).and(_.lt(8000)))\n  }\n})\n```\n\n前置写法：\n```js\nconst _ = db.command\ndb.collection('goods').where({\n  category: 'computer',\n  type: {\n    price: _.or(_.lt(4000), _.and(_.gt(6000), _.lt(8000)))\n  }\n})\n```\n\n如果要跨字段 “或” 操作：(如筛选出内存 8g 或 cpu 3.2 ghz 的计算机)\n\n```js\nconst _ = db.command\ndb.collection('goods').where(_.or(\n  {\n    type: {\n      memory: _.gt(8)\n    }\n  },\n  {\n    type: {\n      cpu: 3.2\n    }\n  }\n))\n```\n\n### 正则表达式查询\n\n#### db.RegExp\n\n根据正则表达式进行筛选\n\n例如下面可以筛选出 `version` 字段开头是 \"数字+s\" 的记录，并且忽略大小写：\n```js\n// 可以直接使用正则表达式\ndb.collection('articles').where({\n  version: /^\\ds/i\n})\n\n// 或者\ndb.collection('articles').where({\n  version: new db.RegExp({\n    regex: '^\\\\ds'   // 正则表达式为 /^\\ds/，转义后变成 '^\\\\ds'\n    options: 'i'    // i表示忽略大小写\n  }) \n})\n```\n\n## 删除文档\n方式1 通过\b指定文档ID\n\ncollection.doc(_id).remove()\n\n```js\n// 清理全部数据\ncollection.get()\n  .then((res) => {\n    const promiseList = res.data.map(document => {\n      return collection.doc(document._id).remove();\n    });\n    Promise.all(promiseList);\n  })\n  .catch((e) => {\n\n  });\n```\n\n方式2 条件查找文档然后直接批量删除\n\ncollection.where().remove()\n\n```js\n// 删除字段a的值大于2的文档\n//promise\ncollection.where({\n  a: _.gt(2)\n}).remove().then(function(res) {\n  \n})\n\n//callback\n//promise\ncollection.where({\n  a: _.gt(2)\n}).remove(function(err, res) {\n  \n})\n```\n\n## 更新文档\n\n### 更新指定文档\n\ncollection.doc().update()\n\n```js\ncollection.doc('doc-id').update({\n  name: \"Hey\"\n});\n```\n\n### 更新文档，如果不存在则创建\ncollection.doc().set()\n\n```js\n//promise\ncollection.doc('doc-id').set({\n  name: \"Hey\"\n}).then(function(res) {\n  \n});\n\n//callback\ncollection.doc('doc-id').set({\n  name: \"Hey\"\n}, function(err, res) {\n  \n});\n```\n\n### 批量更新文档\ncollection.update()\n\n```js\n//promise\ncollection.where({name: _.eq('hey')}).update({\n  age: 18,\n}).then(function(res) {\n  \n});\n//callback\ncollection.where({name: _.eq('hey')}).update({\n  age: 18,\n}, function(err, res) {\n  \n});\n```\n\n### 更新指令\n\n#### set\n\n更新指令。用于设定字段等于指定值。这种方法相比传入纯 JS 对象的好处是能够指定字段等于一个对象：\n\n```js\n// 以下方法只会更新 property.location 和 property.size，如果 property 对象中有\n//promise\ndb.collection('photo').doc('doc-id').update({\n  data: {\n    property: {\n      location: 'guangzhou',\n      size: 8\n    }\n  }\n}).then(function(res) {\n  \n})\n//callback\ndb.collection('photo').doc('doc-id').update({\n  data: {\n    property: {\n      location: 'guangzhou',\n      size: 8\n    }\n  }\n}, function(err, res) {\n  \n})\n```\n\n#### inc\n\n更新指令。用于指示字段自增某个值，这是个原子操作，使用这个操作指令而不是先读数据、再加、再写回的好处是：\n\n1. 原子性：多个用户同时写，对数据库来说都是将字段加一，不会有后来者覆写前者的情况\n2. 减少一次网络请求：不需先读再写\n\n之后的 mul 指令同理。\n\n如给收藏的商品数量加一：\n\n```js\nconst _ = db.command\n//promise\ndb.collection('user').where({\n  _openid: 'my-open-id'\n}).update({\n  count: {\n    favorites: _.inc(1)\n  }\n}).then(function(res) {\n  \n})\n//callback\ndb.collection('user').where({\n  _openid: 'my-open-id'\n}).update({\n  count: {\n    favorites: _.inc(1)\n  }\n}, function(err, res) {\n  \n})\n```\n\n#### mul\n\n更新指令。用于指示字段自乘某个值。\n\n\n#### remove\n\n更新指令。用于表示删除某个字段。如某人删除了自己一条商品评价中的评分：\n\n```js\n//promise\nconst _ = db.command\ndb.collection('comments').doc('comment-id').update({\n  rating: _.remove()\n}).then(function(res) {\n  \n})\n\n//callback\nconst _ = db.command\ndb.collection('comments').doc('comment-id').update({\n  rating: _.remove()\n}, function(err, res) {\n  \n})\n```\n\n#### push\n向数组尾部追加元素，支持传入单个元素或数组\n\n```js\nconst _ = db.command\n//promise\ndb.collection('comments').doc('comment-id').update({\n  // users: _.push('aaa')\n  users: _.push(['aaa', 'bbb'])\n}).then(function(res) {\n  \n})\n\n//callback\ndb.collection('comments').doc('comment-id').update({\n  // users: _.push('aaa')\n  users: _.push(['aaa', 'bbb'])\n}, function(err, res) {\n  \n})\n```\n\n#### pop\n删除数组尾部元素\n\n```js\nconst _ = db.command\n//promise\ndb.collection('comments').doc('comment-id').update({\n  users: _.pop()\n}).then(function(res) {\n  \n})\n\n//callback\ndb.collection('comments').doc('comment-id').update({\n  users: _.pop()\n}, function(err, res) {\n  \n})\n```\n#### unshift\n向数组头部添加元素，支持传入单个元素或数组。使用同push\n#### shift\n删除数组头部元素。使用同pop\n\n### With 子表查询（支持 MongoDb 和 MySQL）\n\n#### 一对多关系查询\n> 主要用于「一对多」关系的子查询，可跨库查询，要求用户拥有子表的查询权限\n\n```js\nconst { data } = await db.collection('article')\n      .with({\n        query: db.collection('tag'),\n        localField: 'id',         // 主表连接键，即 article.id\n        foreignField: 'article_id',   // 子表连接键，即 tag.article_id\n        as: 'tags'          // 查询结果中字段重命名，缺省为子表名\n      })\n      .get()\n\nconsole.log(data) \n//  [ { id: 1, name: xxx, tags: [...] }  ]\n```\n\n#### 一对一关系查询\n> 类似 left join 查询，但此种方法支持 MongoDb 和 SQL\n\n\n```js\nconst { data } = await db.collection('article')\n      .withOne({\n        query: db.collection('user'),\n        localField: 'author_id',    // 主表连接键，即 article.id\n        foreignField: 'id',             // 子表连接键，即 tag.article_id\n        as: 'author'          // 查询结果中字段重命名，缺省为子表名\n      })\n      .get()\n\nconsole.log(data) \n//  [ { id: 1, name: xxx, author: {...} }  ]\n```\n\n\n\n## GEO地理位置\n\n注意：**如果需要对类型为地理位置的字段进行搜索，一定要建立地理位置索引**。\n\n### GEO数据类型\n\n#### Point\n\n用于表示地理位置点，用经纬度唯一标记一个点，这是一个特殊的数据存储类型。\n\n签名：`Point(longitude: number, latitude: number)`\n\n示例：\n```js\nnew db.Geo.Point(longitude, latitude)\n```\n\n#### LineString\n\n用于表示地理路径，是由两个或者更多的 `Point` 组成的线段。\n\n签名：`LineString(points: Point[])`\n\n示例：\n\n```js\nnew db.Geo.LineString([\n  new db.Geo.Point(lngA, latA),\n  new db.Geo.Point(lngB, latB),\n  // ...\n])\n```\n\n#### Polygon\n\n用于表示地理上的一个多边形（有洞或无洞均可），它是由一个或多个**闭环** `LineString` 组成的几何图形。\n\n由一个环组成的 `Polygon` 是没有洞的多边形，由多个环组成的是有洞的多边形。对由多个环（`LineString`）组成的多边形（`Polygon`），第一个环是外环，所有其他环是内环（洞）。\n\n签名：`Polygon(lines: LineString[])`\n\n示例：\n\n```js\nnew db.Geo.Polygon([\n  new db.Geo.LineString(...),\n  new db.Geo.LineString(...),\n  // ...\n])\n```\n\n#### MultiPoint\n\n用于表示多个点 `Point` 的集合。\n\n签名：`MultiPoint(points: Point[])`\n\n示例：\n\n```js\nnew db.Geo.MultiPoint([\n  new db.Geo.Point(lngA, latA),\n  new db.Geo.Point(lngB, latB),\n  // ...\n])\n```\n\n#### MultiLineString\n\n用于表示多个地理路径 `LineString` 的集合。\n\n签名：`MultiLineString(lines: LineString[])`\n\n示例：\n\n```js\nnew db.Geo.MultiLineString([\n  new db.Geo.LineString(...),\n  new db.Geo.LineString(...),\n  // ...\n])\n```\n\n\n#### MultiPolygon\n\n用于表示多个地理多边形 `Polygon` 的集合。\n\n签名：`MultiPolygon(polygons: Polygon[])`\n\n示例：\n\n```js\nnew db.Geo.MultiPolygon([\n  new db.Geo.Polygon(...),\n  new db.Geo.Polygon(...),\n  // ...\n])\n```\n\n### GEO操作符\n\n#### geoNear\n\n按从近到远的顺序，找出字段值在给定点的附近的记录。\n\n签名：\n```js\ndb.command.geoNear(options: IOptions)\n\ninterface IOptions {\n  geometry: Point // 点的地理位置\n  maxDistance?: number // 选填，最大距离，米为单位\n  minDistance?: number // 选填，最小距离，米为单位\n}\n```\n\n\n示例：\n\n```js\ndb.collection('user').where({\n  location: db.command.geoNear({\n    geometry: new db.Geo.Point(lngA, latA),\n    maxDistance: 1000,\n    minDistance: 0\n  })\n})\n```\n\n#### geoWithin\n\n找出字段值在指定 Polygon / MultiPolygon 内的记录，无排序\n\n签名：\n\n```js\ndb.command.geoWithin(IOptions)\n\ninterface IOptions {\n  geometry: Polygon | MultiPolygon // 地理位置\n}\n```\n\n示例：\n\n```js\n// 一个闭合的区域\nconst area = new Polygon([\n  new LineString([\n    new Point(lngA, latA),\n    new Point(lngB, latB),\n    new Point(lngC, latC),\n    new Point(lngA, latA)\n  ]),\n])\n\n// 搜索 location 字段在这个区域中的 user\ndb.collection('user').where({\n  location: db.command.geoWithin({\n    geometry: area\n  })\n})\n```\n\n#### geoIntersects\n\n找出字段值和给定的地理位置图形相交的记录\n\n签名：\n\n```js\ndb.command.geoIntersects(IOptions)\n\ninterface IOptions {\n  geometry: Point | LineString | MultiPoint | MultiLineString | Polygon | MultiPolygon // 地理位置\n}\n```\n\n示例：\n\n```js\n// 一条路径\nconst line = new LineString([\n  new Point(lngA, latA),\n  new Point(lngB, latB)\n])\n\n// 搜索 location 与这条路径相交的 user\ndb.collection('user').where({\n  location: db.command.geoIntersects({\n    geometry: line\n  })\n})\n```\n"
  },
  {
    "path": "packages/database-ql/package.json",
    "content": "{\n  \"name\": \"database-ql\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Database interface for laf\",\n  \"main\": \"dist/commonjs/index.js\",\n  \"module\": \"dist/esm/index.js\",\n  \"scripts\": {\n    \"watch\": \"tsc -w\",\n    \"test\": \"mocha tests/units/**/*.test.js\",\n    \"build\": \"tsc -p tsconfig.json && tsc -p tsconfig.esm.json\",\n    \"lint\": \"eslint . --fix --ext .ts --ext .js\",\n    \"prepublishOnly\": \"npm run build\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/labring/laf.git\"\n  },\n  \"keywords\": [\n    \"laf\",\n    \"laf-client-sdk\",\n    \"database-ql\"\n  ],\n  \"author\": \"maslow (wangfugen@126.com)\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"express\": \"^4.17.1\",\n    \"mocha\": \"^9.2.0\",\n    \"typescript\": \"^3.6.2\"\n  },\n  \"dependencies\": {\n    \"bson\": \"^5.5.1\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,js}\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/README.md",
    "content": "# 数据库 SDK 设计说明\n\n`@author` haroldhu\n\n[TOC]\n\n## 文件说明\n\n```md\n- collection.ts   // 集合模块，继承 Query 模块\n- constant.ts     // 常量模块\n- db.ts           // 数据库模块\n- document.ts     // 文档模块\n- model.ts        // 类型约束模块\n- query.ts        // 查询模块\n- request.ts      // 请求模块 - 临时模拟使用\n- util.ts         // 工具模块\n- validate.ts     // 校验模块\n```\n\n## 常用命令\n\n```shell\n# 编辑 typescript\ntnpm run tsc\n\n# 实时编译 typescript\ntnpm run tsc:w\n\n# 运行测试用例\ntnpm run tstest\n```\n\n## 类型声明\n\n类型声明写在`.ts`文件里，这样可以及时发现问题。`.d.ts`不能及时暴露问题。\n\n## 设计说明\n\n集合模块继承 Query 模块，为了更好使用查询条件。\n\n主要参考了 firebase - firestore 的设计。\n\n## 字段设计\n\n拉取文档列表后，过滤一遍数据，把特殊类型的字段格式化为相应的js对象。\n\n发送请求新增或更新文档时，过滤一遍数据，把特殊字段编码为后端数据格式。\n\n### 地理位置\n\n每一个地理位置都是一个`GeoPoint`对象。\n\n#### 为什么不在类下面增加一个方法转换成后端数据格式？\n\n这个开发者用不到，所以没有必要暴露出来。\n\n### 日期时间\n\n每一个日期时间都是一个`Date`对象。\n\n## 整体设计\n\n- 使用`document.get()`获取数据时，把`where()`、`orderBy()`、`limit()`、`offset()`、设置的数据拼接到请求里。\n- 对后台返回的数据进行格式化，使其成为一个`DocumentSnapshot`对象，对特殊类型的字段，如地理位置、日期时间进行处理。\n- 使用`document.set()`和`document.update()`时，把数据进行编码，尤其是特殊字段的处理，编码成后端接口的数据格式。\n\n## 扩展说明\n\n开发者可以在每篇文档里记录创建时间和更新时间。\n\n- 创建时间是一个时间对象\n- 更新时间时一个时间对象的数组\n"
  },
  {
    "path": "packages/database-ql/src/aggregate.ts",
    "content": "import { Db } from './index'\nimport { QuerySerializer } from './serializer/query'\nimport { stringifyByEJSON } from './utils/utils'\nimport { getType } from './utils/type'\nimport { Validate } from './validate'\nimport { AggregateStage, RequestInterface } from './interface'\nimport { ActionType } from './constant'\nimport { GetRes } from './result-types'\nimport { Util } from './util'\n\nconst EARTH_RADIUS = 6378100\n\nexport default class Aggregation {\n  _db: Db\n  _request: RequestInterface\n  _stages: AggregateStage[]\n  _collectionName: string\n\n  constructor(db?: Db, collectionName?: string, rawPipeline?: any[]) {\n    this._stages = []\n\n    if (db && collectionName) {\n      this._db = db\n      this._request = this._db.request\n      this._collectionName = collectionName\n\n      if (rawPipeline && rawPipeline.length > 0) {\n        rawPipeline.forEach((stage) => {\n          Validate.isValidAggregation(stage)\n          const stageName = Object.keys(stage)[0]\n          this._pipe(stageName, stage[stageName], true)\n        })\n      }\n    }\n  }\n\n  async end<T = any>() {\n    if (!this._collectionName || !this._db) {\n      throw new Error('Aggregation pipeline cannot send request')\n    }\n\n    if (!this._stages?.length) {\n      throw new Error('Aggregation stage cannot be empty')\n    }\n\n    const res = await this._request.send(ActionType.aggregate, {\n      collectionName: this._collectionName,\n      stages: this._stages,\n    })\n\n    if (res.error) {\n      return {\n        error: res.error,\n        data: res.data,\n        requestId: res.requestId,\n        ok: false,\n        code: res.code,\n      }\n    }\n\n    const documents: any[] = Util.formatResDocumentData(res.data.list)\n    const result: GetRes<T> = {\n      data: documents,\n      requestId: res.requestId,\n      ok: true,\n    }\n    return result\n  }\n\n  unwrap() {\n    return this._stages\n  }\n\n  done() {\n    return this._stages.map(({ stageKey, stageValue }) => {\n      return {\n        [stageKey]: JSON.parse(stageValue),\n      }\n    })\n  }\n\n  _pipe(stage: string, param: any, raw = false) {\n    // 区分param是否为字符串\n    let transformParam = ''\n    if (getType(param) === 'object') {\n      transformParam = stringifyByEJSON(param)\n    } else {\n      transformParam = JSON.stringify(param)\n    }\n\n    this._stages.push({\n      stageKey: raw ? stage : `$${stage}`,\n      stageValue: transformParam,\n    })\n    return this\n  }\n\n  addFields(param) {\n    return this._pipe('addFields', param)\n  }\n\n  bucket(param) {\n    return this._pipe('bucket', param)\n  }\n\n  bucketAuto(param) {\n    return this._pipe('bucketAuto', param)\n  }\n\n  count(param) {\n    return this._pipe('count', param)\n  }\n\n  geoNear(param) {\n    if (param.query) {\n      param.query = QuerySerializer.encode(param.query)\n    }\n\n    // 判断是否有 distanceMultiplier 参数\n    if (\n      param.distanceMultiplier &&\n      typeof param.distanceMultiplier === 'number'\n    ) {\n      param.distanceMultiplier = param.distanceMultiplier * EARTH_RADIUS\n    } else {\n      param.distanceMultiplier = EARTH_RADIUS\n    }\n    return this._pipe('geoNear', param)\n  }\n\n  group(param) {\n    return this._pipe('group', param)\n  }\n\n  limit(param) {\n    return this._pipe('limit', param)\n  }\n\n  match(param) {\n    return this._pipe('match', QuerySerializer.encode(param))\n  }\n\n  project(param) {\n    return this._pipe('project', param)\n  }\n\n  lookup(param) {\n    return this._pipe('lookup', param)\n  }\n\n  replaceRoot(param) {\n    return this._pipe('replaceRoot', param)\n  }\n\n  sample(param) {\n    return this._pipe('sample', param)\n  }\n\n  skip(param) {\n    return this._pipe('skip', param)\n  }\n\n  sort(param) {\n    return this._pipe('sort', param)\n  }\n\n  sortByCount(param) {\n    return this._pipe('sortByCount', param)\n  }\n\n  unwind(param) {\n    return this._pipe('unwind', param)\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/collection.ts",
    "content": "import { Db } from './index'\nimport { DocumentReference } from './document'\nimport { Query } from './query'\nimport Aggregation from './aggregate'\nimport { CreateIndexRes, DropIndexRes, ListIndexesRes } from './result-types'\n\n/**\n * 集合模块，继承 Query 模块\n *\n */\nexport class CollectionReference extends Query {\n  /**\n   * 初始化\n   *\n   * @internal\n   *\n   * @param db    - 数据库的引用\n   * @param coll  - 集合名称\n   */\n  constructor(db: Db, coll: string) {\n    super(db, coll)\n  }\n\n  /**\n   * 读取集合名字\n   */\n  get name() {\n    return this._coll\n  }\n\n  /**\n   * 获取文档的引用\n   *\n   * @param docID - 文档 ID\n   */\n  doc(docID: string | number): DocumentReference {\n    if (!docID) {\n      throw new Error('docID cannot be empty')\n    }\n    return new DocumentReference(this._db, this._coll, docID)\n  }\n\n  /**\n   * 添加一篇文档\n   *\n   * @param data - 数据\n   */\n  add(data: object, options?: { multi: boolean }) {\n    const docRef = new DocumentReference(this._db, this._coll, undefined)\n    return docRef.create(data, options)\n  }\n\n  aggregate(rawPipeline: object[] = []) {\n    return new Aggregation(this._db, this._coll, rawPipeline)\n  }\n\n  /**\n   * 创建索引\n   */\n  public async createIndex(\n    keys: Record<string, number | string>,\n    options?: any\n  ): Promise<CreateIndexRes> {\n    const docRef = new DocumentReference(this._db, this._coll, undefined)\n    return docRef.createIndex(keys, options)\n  }\n\n  /**\n   * 删除索引\n   */\n  public async dropIndex(\n    index: string | Record<string, number | string>\n  ): Promise<DropIndexRes> {\n    const docRef = new DocumentReference(this._db, this._coll, undefined)\n    return docRef.dropIndex(index)\n  }\n\n  public async listIndexes(): Promise<ListIndexesRes> {\n    const docRef = new DocumentReference(this._db, this._coll, undefined)\n    return docRef.listIndexes()\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/command.ts",
    "content": "/* eslint-disable prefer-rest-params */\nimport {\n  IGeoIntersectsOptions,\n  IGeoNearOptions,\n  IGeoWithinOptions,\n  QueryCommand,\n  QUERY_COMMANDS_LITERAL,\n} from './commands/query'\nimport { LogicCommand, LOGIC_COMMANDS_LITERAL } from './commands/logic'\nimport { UpdateCommand, UPDATE_COMMANDS_LITERAL } from './commands/update'\nimport { isArray, isObject, isString } from './utils/type'\nimport Aggregation from './aggregate'\n\nexport type IQueryCondition = Record<string, any> | LogicCommand\n\nexport const Command = {\n  eq(val: any) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.EQ, [val])\n  },\n\n  neq(val: any) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.NEQ, [val])\n  },\n\n  lt(val: any) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.LT, [val])\n  },\n\n  lte(val: any) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.LTE, [val])\n  },\n\n  gt(val: any) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.GT, [val])\n  },\n\n  gte(val: any) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.GTE, [val])\n  },\n\n  in(val: any[]) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.IN, val)\n  },\n\n  nin(val: any[]) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.NIN, val)\n  },\n\n  all(val: any) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.ALL, val)\n  },\n\n  elemMatch(val: any) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.ELEM_MATCH, [val])\n  },\n\n  exists(val: boolean) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.EXISTS, [val])\n  },\n\n  size(val: number) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.SIZE, [val])\n  },\n\n  mod(val: number[]) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.MOD, [val])\n  },\n\n  geoNear(val: IGeoNearOptions) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_NEAR, [val])\n  },\n\n  geoWithin(val: IGeoWithinOptions) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_WITHIN, [val])\n  },\n\n  geoIntersects(val: IGeoIntersectsOptions) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.GEO_INTERSECTS, [val])\n  },\n\n  like(val: string) {\n    return new QueryCommand(QUERY_COMMANDS_LITERAL.LIKE, [val])\n  },\n\n  and(...__expressions__: IQueryCondition[]) {\n    const expressions = isArray(arguments[0])\n      ? arguments[0]\n      : Array.from(arguments)\n    return new LogicCommand(LOGIC_COMMANDS_LITERAL.AND, expressions)\n  },\n\n  nor(...__expressions__: IQueryCondition[]) {\n    const expressions = isArray(arguments[0])\n      ? arguments[0]\n      : Array.from(arguments)\n    return new LogicCommand(LOGIC_COMMANDS_LITERAL.NOR, expressions)\n  },\n\n  or(...__expressions__: IQueryCondition[]) {\n    const expressions = isArray(arguments[0])\n      ? arguments[0]\n      : Array.from(arguments)\n    return new LogicCommand(LOGIC_COMMANDS_LITERAL.OR, expressions)\n  },\n\n  not(...__expressions__: IQueryCondition[]) {\n    const expressions = isArray(arguments[0])\n      ? arguments[0]\n      : Array.from(arguments)\n    return new LogicCommand(LOGIC_COMMANDS_LITERAL.NOT, expressions)\n  },\n\n  set(val: any) {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.SET, [val])\n  },\n\n  remove() {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.REMOVE, [])\n  },\n\n  inc(val: number) {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.INC, [val])\n  },\n\n  mul(val: number) {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.MUL, [val])\n  },\n\n  push(...args: any[]) {\n    let values\n    if (isObject(args[0]) && args[0].hasOwnProperty('each')) {\n      const options: any = args[0]\n      values = {\n        $each: options.each,\n        $position: options.position,\n        $sort: options.sort,\n        $slice: options.slice,\n      }\n    } else if (isArray(args[0])) {\n      values = args[0]\n    } else {\n      values = Array.from(args)\n    }\n\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.PUSH, values)\n  },\n\n  pull(values) {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.PULL, values)\n  },\n\n  pullAll(values) {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.PULL_ALL, values)\n  },\n\n  pop() {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.POP, [])\n  },\n\n  shift() {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.SHIFT, [])\n  },\n\n  unshift(...__values__: any[]) {\n    const values = isArray(arguments[0]) ? arguments[0] : Array.from(arguments)\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.UNSHIFT, values)\n  },\n\n  addToSet(values) {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.ADD_TO_SET, values)\n  },\n\n  rename(values) {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.RENAME, [values])\n  },\n\n  bit(values) {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.BIT, [values])\n  },\n\n  max(values) {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.MAX, [values])\n  },\n\n  min(values) {\n    return new UpdateCommand(UPDATE_COMMANDS_LITERAL.MIN, [values])\n  },\n\n  expr(values: AggregationOperator) {\n    return {\n      $expr: values,\n    }\n  },\n\n  jsonSchema(schema) {\n    return {\n      $jsonSchema: schema,\n    }\n  },\n\n  text(\n    values:\n      | string\n      | {\n          search: string\n          language?: string\n          caseSensitive?: boolean\n          diacriticSensitive: boolean\n        }\n  ) {\n    if (isString(values)) {\n      return {\n        $search: values.search,\n      }\n    } else {\n      return {\n        $search: values.search,\n        $language: values.language,\n        $caseSensitive: values.caseSensitive,\n        $diacriticSensitive: values.diacriticSensitive,\n      }\n    }\n  },\n\n  aggregate: {\n    pipeline() {\n      return new Aggregation()\n    },\n\n    // https://docs.mongodb.com/manual/reference/operator/aggregation/\n    // 算数操作符（15个）\n    abs: (param) => new AggregationOperator('abs', param),\n    add: (param) => new AggregationOperator('add', param),\n    ceil: (param) => new AggregationOperator('ceil', param),\n    divide: (param) => new AggregationOperator('divide', param),\n    exp: (param) => new AggregationOperator('exp', param),\n    floor: (param) => new AggregationOperator('floor', param),\n    ln: (param) => new AggregationOperator('ln', param),\n    log: (param) => new AggregationOperator('log', param),\n    log10: (param) => new AggregationOperator('log10', param),\n    mod: (param) => new AggregationOperator('mod', param),\n    multiply: (param) => new AggregationOperator('multiply', param),\n    pow: (param) => new AggregationOperator('pow', param),\n    sqrt: (param) => new AggregationOperator('sqrt', param),\n    subtract: (param) => new AggregationOperator('subtract', param),\n    trunc: (param) => new AggregationOperator('trunc', param),\n\n    // 数组操作符（15个）\n    arrayElemAt: (param) => new AggregationOperator('arrayElemAt', param),\n    arrayToObject: (param) => new AggregationOperator('arrayToObject', param),\n    concatArrays: (param) => new AggregationOperator('concatArrays', param),\n    filter: (param) => new AggregationOperator('filter', param),\n    in: (param) => new AggregationOperator('in', param),\n    indexOfArray: (param) => new AggregationOperator('indexOfArray', param),\n    isArray: (param) => new AggregationOperator('isArray', param),\n    map: (param) => new AggregationOperator('map', param),\n    range: (param) => new AggregationOperator('range', param),\n    reduce: (param) => new AggregationOperator('reduce', param),\n    reverseArray: (param) => new AggregationOperator('reverseArray', param),\n    size: (param) => new AggregationOperator('size', param),\n    slice: (param) => new AggregationOperator('slice', param),\n    zip: (param) => new AggregationOperator('zip', param),\n\n    //布尔操作符（3个）\n    and: (param) => new AggregationOperator('and', param),\n    not: (param) => new AggregationOperator('not', param),\n    or: (param) => new AggregationOperator('or', param),\n\n    // 比较操作符（7个）\n    cmp: (param) => new AggregationOperator('cmp', param),\n    eq: (param) => new AggregationOperator('eq', param),\n    gt: (param) => new AggregationOperator('gt', param),\n    gte: (param) => new AggregationOperator('gte', param),\n    lt: (param) => new AggregationOperator('lt', param),\n    lte: (param) => new AggregationOperator('lte', param),\n    neq: (param) => new AggregationOperator('ne', param),\n\n    // 条件操作符（3个）\n    cond: (param) => new AggregationOperator('cond', param),\n    ifNull: (param) => new AggregationOperator('ifNull', param),\n    switch: (param) => new AggregationOperator('switch', param),\n\n    // 日期操作符（15个）\n    dateFromParts: (param) => new AggregationOperator('dateFromParts', param),\n    dateFromString: (param) => new AggregationOperator('dateFromString', param),\n    dayOfMonth: (param) => new AggregationOperator('dayOfMonth', param),\n    dayOfWeek: (param) => new AggregationOperator('dayOfWeek', param),\n    dayOfYear: (param) => new AggregationOperator('dayOfYear', param),\n    isoDayOfWeek: (param) => new AggregationOperator('isoDayOfWeek', param),\n    isoWeek: (param) => new AggregationOperator('isoWeek', param),\n    isoWeekYear: (param) => new AggregationOperator('isoWeekYear', param),\n    millisecond: (param) => new AggregationOperator('millisecond', param),\n    minute: (param) => new AggregationOperator('minute', param),\n    month: (param) => new AggregationOperator('month', param),\n    second: (param) => new AggregationOperator('second', param),\n    hour: (param) => new AggregationOperator('hour', param),\n    // 'toDate', 4.0才有\n    week: (param) => new AggregationOperator('week', param),\n    year: (param) => new AggregationOperator('year', param),\n\n    // 字面操作符\n    literal: (param) => new AggregationOperator('literal', param),\n\n    // 对象操作符\n    mergeObjects: (param) => new AggregationOperator('mergeObjects', param),\n    objectToArray: (param) => new AggregationOperator('objectToArray', param),\n\n    // 集合操作符（7个）\n    allElementsTrue: (param) =>\n      new AggregationOperator('allElementsTrue', param),\n    anyElementTrue: (param) => new AggregationOperator('anyElementTrue', param),\n    setDifference: (param) => new AggregationOperator('setDifference', param),\n    setEquals: (param) => new AggregationOperator('setEquals', param),\n    setIntersection: (param) =>\n      new AggregationOperator('setIntersection', param),\n    setIsSubset: (param) => new AggregationOperator('setIsSubset', param),\n    setUnion: (param) => new AggregationOperator('setUnion', param),\n\n    // 字符串操作符（13个）\n    concat: (param) => new AggregationOperator('concat', param),\n    dateToString: (param) => new AggregationOperator('dateToString', param),\n    indexOfBytes: (param) => new AggregationOperator('indexOfBytes', param),\n    indexOfCP: (param) => new AggregationOperator('indexOfCP', param),\n    // 'ltrim',\n    // 'rtrim',\n    split: (param) => new AggregationOperator('split', param),\n    strLenBytes: (param) => new AggregationOperator('strLenBytes', param),\n    strLenCP: (param) => new AggregationOperator('strLenCP', param),\n    strcasecmp: (param) => new AggregationOperator('strcasecmp', param),\n    substr: (param) => new AggregationOperator('substr', param),\n    substrBytes: (param) => new AggregationOperator('substrBytes', param),\n    substrCP: (param) => new AggregationOperator('substrCP', param),\n    toLower: (param) => new AggregationOperator('toLower', param),\n    // 'toString'\n    // 'trim'\n    toUpper: (param) => new AggregationOperator('toUpper', param),\n\n    // 文本操作符\n    meta: (param) => new AggregationOperator('meta', param),\n\n    // group操作符（10个）\n    addToSet: (param) => new AggregationOperator('addToSet', param),\n    avg: (param) => new AggregationOperator('avg', param),\n    first: (param) => new AggregationOperator('first', param),\n    last: (param) => new AggregationOperator('last', param),\n    max: (param) => new AggregationOperator('max', param),\n    min: (param) => new AggregationOperator('min', param),\n    push: (param) => new AggregationOperator('push', param),\n    stdDevPop: (param) => new AggregationOperator('stdDevPop', param),\n    stdDevSamp: (param) => new AggregationOperator('stdDevSamp', param),\n    sum: (param) => new AggregationOperator('sum', param),\n\n    // 变量声明操作符\n    let: (param) => new AggregationOperator('let', param),\n  },\n\n  project: {\n    slice: (param) => new ProjectionOperator('slice', param),\n    elemMatch: (param) => new ProjectionOperator('elemMatch', param),\n  },\n}\n\nclass AggregationOperator {\n  constructor(name, param) {\n    this['$' + name] = param\n  }\n}\n\nclass ProjectionOperator {\n  constructor(name, param) {\n    this['$' + name] = param\n  }\n}\n\nexport default Command\n"
  },
  {
    "path": "packages/database-ql/src/commands/logic.ts",
    "content": "/* eslint-disable prefer-rest-params */\nimport {\n  InternalSymbol,\n  SYMBOL_UNSET_FIELD_NAME,\n  SYMBOL_LOGIC_COMMAND,\n} from '../helper/symbol'\nimport { isQueryCommand } from './query'\n\nexport const AND = 'and'\nexport const OR = 'or'\nexport const NOT = 'not'\nexport const NOR = 'nor'\n\nexport enum LOGIC_COMMANDS_LITERAL {\n  AND = 'and',\n  OR = 'or',\n  NOT = 'not',\n  NOR = 'nor',\n}\n\nexport class LogicCommand {\n  public fieldName: string | InternalSymbol\n  public operator: LOGIC_COMMANDS_LITERAL | string\n  public operands: any[]\n  public _internalType = SYMBOL_LOGIC_COMMAND\n\n  constructor(\n    operator: LOGIC_COMMANDS_LITERAL | string,\n    operands: any,\n    fieldName?: string | InternalSymbol\n  ) {\n    Object.defineProperties(this, {\n      _internalType: {\n        enumerable: false,\n        configurable: false,\n      },\n    })\n\n    this.operator = operator\n    this.operands = operands\n    this.fieldName = fieldName || SYMBOL_UNSET_FIELD_NAME\n\n    if (this.fieldName !== SYMBOL_UNSET_FIELD_NAME) {\n      if (Array.isArray(operands)) {\n        operands = operands.slice()\n        this.operands = operands\n        for (let i = 0, len = operands.length; i < len; i++) {\n          const query = operands[i]\n          if (isLogicCommand(query) || isQueryCommand(query)) {\n            operands[i] = query._setFieldName(this.fieldName as string)\n          }\n        }\n      } else {\n        const query = operands\n        if (isLogicCommand(query) || isQueryCommand(query)) {\n          operands = query._setFieldName(this.fieldName as string)\n        }\n      }\n    }\n\n    /*\n    Object.defineProperties(this, {\n      operator: {\n        configurable: true,\n        enumerable: true,\n        writable: false,\n        value: operator,\n      },\n      operands: {\n        configurable: true,\n        enumerable: true,\n        writable: false,\n        value: operands,\n      },\n      fieldName: {\n        configurable: true,\n        enumerable: true,\n        get() {\n          return _fieldName\n        },\n        set(val) {\n          _fieldName = val\n        }\n      }\n    })\n    */\n  }\n\n  _setFieldName(fieldName: string): LogicCommand {\n    const operands = this.operands.map((operand) => {\n      if (operand instanceof LogicCommand) {\n        return operand._setFieldName(fieldName)\n      } else {\n        return operand\n      }\n    })\n\n    const command = new LogicCommand(this.operator, operands, fieldName)\n    return command\n  }\n\n  /**\n   * Support only command[] or ...command in v1\n   * @param {(LogicCommand[]|object[]|...LogicCommand|...object)} expressions Command[] or ...Command\n   */\n  and(...__expressions__: LogicCommand[]) {\n    const expressions: any[] = Array.isArray(arguments[0])\n      ? arguments[0]\n      : Array.from(arguments)\n    expressions.unshift(this)\n    return new LogicCommand(\n      LOGIC_COMMANDS_LITERAL.AND,\n      expressions,\n      this.fieldName\n    )\n  }\n\n  /**\n   * Support only command[] or ...command in v1\n   * @param {(LogicCommand[]|object[]|...LogicCommand|...object)} expressions Command[] or ...Command\n   */\n  or(...__expressions__: LogicCommand[]) {\n    const expressions: any[] = Array.isArray(arguments[0])\n      ? arguments[0]\n      : Array.from(arguments)\n    expressions.unshift(this)\n    return new LogicCommand(\n      LOGIC_COMMANDS_LITERAL.OR,\n      expressions,\n      this.fieldName\n    )\n  }\n\n  /**\n   * @param {QueryCommand} expression Command\n   */\n  /*\n  not(expression: DB.DatabaseQueryCommand) {\n    assertRequiredParam(expression, 'expression', 'not')\n    return new LogicCommand(LOGIC_COMMANDS_LITERAL.NOT, [expression], this.fieldName)\n  }\n  */\n}\n\nexport function isLogicCommand(object: any): object is LogicCommand {\n  return (\n    object &&\n    object instanceof LogicCommand &&\n    object._internalType === SYMBOL_LOGIC_COMMAND\n  )\n}\n\nexport function isKnownLogicCommand(object: any): object is LogicCommand {\n  return (\n    isLogicCommand && object.operator.toUpperCase() in LOGIC_COMMANDS_LITERAL\n  )\n}\n\nexport default LogicCommand\n"
  },
  {
    "path": "packages/database-ql/src/commands/query.ts",
    "content": "import { LogicCommand } from './logic'\nimport { InternalSymbol, SYMBOL_QUERY_COMMAND } from '../helper/symbol'\nimport {\n  Point,\n  LineString,\n  Polygon,\n  MultiPoint,\n  MultiLineString,\n  MultiPolygon,\n} from '../geo/index'\nimport { isNumber } from '../utils/type'\n\nexport const EQ = 'eq'\nexport const NEQ = 'neq'\nexport const GT = 'gt'\nexport const GTE = 'gte'\nexport const LT = 'lt'\nexport const LTE = 'lte'\nexport const IN = 'in'\nexport const NIN = 'nin'\nexport const ALL = 'all'\nexport const ELEM_MATCH = 'elemMatch'\nexport const EXISTS = 'exists'\nexport const SIZE = 'size'\nexport const MOD = 'mod'\nexport const LIKE = 'like'\n\nexport enum QUERY_COMMANDS_LITERAL {\n  EQ = 'eq',\n  NEQ = 'neq',\n  GT = 'gt',\n  GTE = 'gte',\n  LT = 'lt',\n  LTE = 'lte',\n  IN = 'in',\n  NIN = 'nin',\n  ALL = 'all',\n  ELEM_MATCH = 'elemMatch',\n  EXISTS = 'exists',\n  SIZE = 'size',\n  MOD = 'mod',\n  GEO_NEAR = 'geoNear',\n  GEO_WITHIN = 'geoWithin',\n  GEO_INTERSECTS = 'geoIntersects',\n  LIKE = 'like',\n}\n\nexport class QueryCommand extends LogicCommand {\n  public operator: QUERY_COMMANDS_LITERAL\n\n  constructor(\n    operator: QUERY_COMMANDS_LITERAL,\n    operands: any,\n    fieldName?: string | InternalSymbol\n  ) {\n    super(operator, operands, fieldName)\n    this.operator = operator\n    this._internalType = SYMBOL_QUERY_COMMAND\n  }\n\n  toJSON() {\n    switch (this.operator) {\n      case QUERY_COMMANDS_LITERAL.IN:\n      case QUERY_COMMANDS_LITERAL.NIN:\n        return {\n          ['$' + this.operator]: this.operands,\n        }\n      default:\n        return {\n          ['$' + this.operator]: this.operands[0],\n        }\n    }\n  }\n\n  _setFieldName(fieldName: string): QueryCommand {\n    const command = new QueryCommand(this.operator, this.operands, fieldName)\n    return command\n  }\n\n  eq(val: any) {\n    const command = new QueryCommand(\n      QUERY_COMMANDS_LITERAL.EQ,\n      [val],\n      this.fieldName\n    )\n    return this.and(command)\n  }\n\n  neq(val: any) {\n    const command = new QueryCommand(\n      QUERY_COMMANDS_LITERAL.NEQ,\n      [val],\n      this.fieldName\n    )\n    return this.and(command)\n  }\n\n  gt(val: any) {\n    const command = new QueryCommand(\n      QUERY_COMMANDS_LITERAL.GT,\n      [val],\n      this.fieldName\n    )\n    return this.and(command)\n  }\n\n  gte(val: any) {\n    const command = new QueryCommand(\n      QUERY_COMMANDS_LITERAL.GTE,\n      [val],\n      this.fieldName\n    )\n    return this.and(command)\n  }\n\n  lt(val: any) {\n    const command = new QueryCommand(\n      QUERY_COMMANDS_LITERAL.LT,\n      [val],\n      this.fieldName\n    )\n    return this.and(command)\n  }\n\n  lte(val: any) {\n    const command = new QueryCommand(\n      QUERY_COMMANDS_LITERAL.LTE,\n      [val],\n      this.fieldName\n    )\n    return this.and(command)\n  }\n\n  in(list: any[]) {\n    const command = new QueryCommand(\n      QUERY_COMMANDS_LITERAL.IN,\n      list,\n      this.fieldName\n    )\n    return this.and(command)\n  }\n\n  nin(list: any[]) {\n    const command = new QueryCommand(\n      QUERY_COMMANDS_LITERAL.NIN,\n      list,\n      this.fieldName\n    )\n    return this.and(command)\n  }\n\n  geoNear(val: IGeoNearOptions) {\n    if (!(val.geometry instanceof Point)) {\n      throw new TypeError(\n        `\"geometry\" must be of type Point. Received type ${typeof val.geometry}`\n      )\n    }\n    if (val.maxDistance !== undefined && !isNumber(val.maxDistance)) {\n      throw new TypeError(\n        `\"maxDistance\" must be of type Number. Received type ${typeof val.maxDistance}`\n      )\n    }\n    if (val.minDistance !== undefined && !isNumber(val.minDistance)) {\n      throw new TypeError(\n        `\"minDistance\" must be of type Number. Received type ${typeof val.minDistance}`\n      )\n    }\n    const command = new QueryCommand(\n      QUERY_COMMANDS_LITERAL.GEO_NEAR,\n      [val],\n      this.fieldName\n    )\n    return this.and(command)\n  }\n\n  geoWithin(val: IGeoWithinOptions) {\n    if (\n      !(val.geometry instanceof MultiPolygon) &&\n      !(val.geometry instanceof Polygon)\n    ) {\n      throw new TypeError(\n        `\"geometry\" must be of type Polygon or MultiPolygon. Received type ${typeof val.geometry}`\n      )\n    }\n    const command = new QueryCommand(\n      QUERY_COMMANDS_LITERAL.GEO_WITHIN,\n      [val],\n      this.fieldName\n    )\n    return this.and(command)\n  }\n\n  geoIntersects(val: IGeoIntersectsOptions) {\n    if (\n      !(val.geometry instanceof Point) &&\n      !(val.geometry instanceof LineString) &&\n      !(val.geometry instanceof Polygon) &&\n      !(val.geometry instanceof MultiPoint) &&\n      !(val.geometry instanceof MultiLineString) &&\n      !(val.geometry instanceof MultiPolygon)\n    ) {\n      throw new TypeError(\n        `\"geometry\" must be of type Point, LineString, Polygon, MultiPoint, MultiLineString or MultiPolygon. Received type ${typeof val.geometry}`\n      )\n    }\n    const command = new QueryCommand(\n      QUERY_COMMANDS_LITERAL.GEO_INTERSECTS,\n      [val],\n      this.fieldName\n    )\n    return this.and(command)\n  }\n}\n\nexport function isQueryCommand(object: any): object is QueryCommand {\n  return (\n    object &&\n    object instanceof QueryCommand &&\n    object._internalType === SYMBOL_QUERY_COMMAND\n  )\n}\n\nexport function isKnownQueryCommand(object: any): object is QueryCommand {\n  return (\n    isQueryCommand(object) &&\n    object.operator.toUpperCase() in QUERY_COMMANDS_LITERAL\n  )\n}\n\nexport function isComparisonCommand(object: any): object is QueryCommand {\n  return isQueryCommand(object)\n}\n\nexport default QueryCommand\n\nexport interface IGeoNearOptions {\n  geometry: Point\n  maxDistance?: number\n  minDistance?: number\n}\n\nexport interface IGeoWithinOptions {\n  geometry: Polygon | MultiPolygon\n}\n\nexport interface IGeoIntersectsOptions {\n  geometry:\n    | Point\n    | LineString\n    | Polygon\n    | MultiPoint\n    | MultiLineString\n    | MultiPolygon\n}\n"
  },
  {
    "path": "packages/database-ql/src/commands/update.ts",
    "content": "import {\n  InternalSymbol,\n  SYMBOL_UNSET_FIELD_NAME,\n  SYMBOL_UPDATE_COMMAND,\n} from '../helper/symbol'\n\nexport enum UPDATE_COMMANDS_LITERAL {\n  SET = 'set',\n  REMOVE = 'remove',\n  INC = 'inc',\n  MUL = 'mul',\n  PUSH = 'push',\n  PULL = 'pull',\n  PULL_ALL = 'pullAll',\n  POP = 'pop',\n  SHIFT = 'shift',\n  UNSHIFT = 'unshift',\n  ADD_TO_SET = 'addToSet',\n  BIT = 'bit',\n  RENAME = 'rename',\n  MAX = 'max',\n  MIN = 'min',\n}\n\nexport class UpdateCommand {\n  public fieldName: string | InternalSymbol\n  public operator: UPDATE_COMMANDS_LITERAL\n  public operands: any\n  public _internalType = SYMBOL_UPDATE_COMMAND\n\n  constructor(\n    operator: UPDATE_COMMANDS_LITERAL,\n    operands?: any,\n    fieldName?: string | InternalSymbol\n  ) {\n    Object.defineProperties(this, {\n      _internalType: {\n        enumerable: false,\n        configurable: false,\n      },\n    })\n\n    this.operator = operator\n    this.operands = operands\n    this.fieldName = fieldName || SYMBOL_UNSET_FIELD_NAME\n  }\n\n  _setFieldName(fieldName: string): UpdateCommand {\n    const command = new UpdateCommand(this.operator, this.operands, fieldName)\n    return command\n  }\n}\n\nexport function isUpdateCommand(object: any): object is UpdateCommand {\n  return (\n    object &&\n    object instanceof UpdateCommand &&\n    object._internalType === SYMBOL_UPDATE_COMMAND\n  )\n}\n\nexport function isKnownUpdateCommand(object: any): object is UpdateCommand {\n  return (\n    isUpdateCommand(object) &&\n    object.operator.toUpperCase() in UPDATE_COMMANDS_LITERAL\n  )\n}\n\nexport default UpdateCommand\n"
  },
  {
    "path": "packages/database-ql/src/constant.ts",
    "content": "/**\n * 常量模块\n *\n * @author haroldhu\n */\n\n/**\n * 错误码\n */\nenum ErrorCode {\n  DocIDError = '文档ID不合法',\n  CollNameError = '集合名称不合法',\n  OpStrError = '操作符不合法',\n  DirectionError = '排序字符不合法',\n  IntegerError = 'must be integer',\n  QueryParamTypeError = '查询参数必须为对象',\n  QueryParamValueError = '查询参数对象值不能均为undefined',\n}\n\n/**\n * 字段类型\n */\nconst FieldType = {\n  String: 'String',\n  Number: 'Number',\n  Object: 'Object',\n  Array: 'Array',\n  Boolean: 'Boolean',\n  Null: 'Null',\n  GeoPoint: 'GeoPoint',\n  GeoLineString: 'GeoLineString',\n  GeoPolygon: 'GeoPolygon',\n  GeoMultiPoint: 'GeoMultiPoint',\n  GeoMultiLineString: 'GeoMultiLineString',\n  GeoMultiPolygon: 'GeoMultiPolygon',\n  Timestamp: 'Date',\n  Command: 'Command',\n  ServerDate: 'ServerDate',\n  BsonDate: 'BsonDate',\n  ObjectId: 'ObjectId',\n  Binary: 'Binary',\n}\n\n/**\n * 排序方向\n */\ntype OrderByDirection = 'desc' | 'asc'\n\n/**\n * 排序方向列表\n */\nconst OrderDirectionList = ['desc', 'asc']\n\n/**\n * 查询条件操作符\n */\ntype WhereFilterOp = '<' | '<=' | '==' | '>=' | '>'\n\n/**\n * 操作符列表\n */\nconst WhereFilterOpList = ['<', '<=', '==', '>=', '>']\n\n/**\n * 操作符别名\n */\nenum Operator {\n  lt = '<',\n  gt = '>',\n  lte = '<=',\n  gte = '>=',\n  eq = '==',\n}\n\n/**\n * 操作符映射\n * SDK => MongoDB\n */\nconst OperatorMap = {\n  [Operator.eq]: '$eq',\n  [Operator.lt]: '$lt',\n  [Operator.lte]: '$lte',\n  [Operator.gt]: '$gt',\n  [Operator.gte]: '$gte',\n}\n\nconst UpdateOperatorList = [\n  '$set',\n  '$inc',\n  '$mul',\n  '$unset',\n  '$push',\n  '$pop',\n  '$unshift',\n  '$shift',\n  '$currentDate',\n  '$each',\n  '$position',\n]\n\nenum ActionType {\n  add = 'database.addDocument',\n  query = 'database.queryDocument',\n  update = 'database.updateDocument',\n  count = 'database.countDocument',\n  remove = 'database.deleteDocument',\n  aggregate = 'database.aggregateDocuments',\n  createIndex = 'database.createIndex',\n  dropIndex = 'database.dropIndex',\n  listIndexes = 'database.listIndexes',\n}\n\nexport {\n  ErrorCode,\n  FieldType,\n  WhereFilterOp,\n  WhereFilterOpList,\n  Operator,\n  OperatorMap,\n  OrderByDirection,\n  OrderDirectionList,\n  UpdateOperatorList,\n  ActionType,\n}\n"
  },
  {
    "path": "packages/database-ql/src/document.ts",
    "content": "import { Db } from './index'\nimport { serialize } from './serializer/datatype'\nimport { UpdateCommand } from './commands/update'\nimport { ActionType } from './constant'\nimport {\n  AddRes,\n  CreateIndexRes,\n  DropIndexRes,\n  GetOneRes,\n  ListIndexesRes,\n  RemoveRes,\n  UpdateRes,\n} from './result-types'\nimport { ProjectionType } from './interface'\nimport { Query } from './query'\n\n/**\n * Db document\n */\nexport class DocumentReference {\n  /**\n   * document id\n   */\n  readonly id: any\n\n  /**\n   * query object\n   */\n  private _query: Query\n\n  /**\n   * db reference\n   */\n  private _db: Db\n\n  /**\n   * collection name\n   */\n  readonly _coll: string\n\n  /**\n   * @param db    - db ref\n   * @param coll  - collection\n   * @param docID - document id\n   */\n  constructor(db: Db, coll: string, docID: any, query?: Query) {\n    this._db = db\n    this._coll = coll\n    this.id = docID\n    this._query = query || new Query(db, coll)\n  }\n\n  /**\n   * 创建一篇文档\n   *\n   * @param data - document data\n   */\n  async create(data: any, options?: { multi: boolean }): Promise<AddRes> {\n    if (!data || typeof data !== 'object' || 0 === Object.keys(data)?.length) {\n      throw new Error('data cannot be empty object')\n    }\n\n    const params = {\n      collectionName: this._coll,\n      data: serialize(data),\n      multi: options?.multi ?? false,\n    }\n\n    const res = await this._query.send(ActionType.add, params)\n\n    if (res.error) {\n      return {\n        requestId: res.requestId,\n        error: res.error,\n        ok: false,\n        id: undefined,\n        insertedCount: undefined,\n        code: res.code,\n      }\n    }\n\n    return {\n      id: res.data._id || res.data[this._db.primaryKey],\n      insertedCount: res.data.insertedCount,\n      requestId: res.requestId,\n      ok: true,\n    }\n  }\n\n  /**\n   * 创建或添加数据\n   *\n   * 如果该文档 ID 在数据库中不存在，则创建该文档并插入数据，根据返回数据的 upsertId 判断\n   *\n   * @param data - document data\n   */\n  async set(data: object): Promise<UpdateRes> {\n    if (!this.id) {\n      throw new Error('document id cannot be empty')\n    }\n\n    let hasOperator = false\n    const checkMixed = (objs: any) => {\n      if (typeof objs === 'object') {\n        for (const key in objs) {\n          if (objs[key] instanceof UpdateCommand) {\n            hasOperator = true\n          } else if (typeof objs[key] === 'object') {\n            checkMixed(objs[key])\n          }\n        }\n      }\n    }\n    checkMixed(data)\n\n    if (hasOperator) {\n      // 不能包含操作符\n      throw new Error('data cannot contain operator')\n    }\n\n    // merge === false indicates replace operation\n    const merge = false\n    const res = await this._query\n      .where({ [this._db.primaryKey]: this.id })\n      .update(serialize(data), { merge, multi: false, upsert: true })\n    return res\n  }\n\n  /**\n   * 更新数据\n   *\n   * @param data - 文档数据\n   */\n  async update(data: object): Promise<UpdateRes> {\n    // 把所有更新数据转为带操作符的\n    const merge = true\n    const options = { merge, multi: false, upsert: false }\n\n    const res = await this._query\n      .where({ [this._db.primaryKey]: this.id })\n      .update(data, options)\n    return res\n  }\n\n  /**\n   * 删除文档\n   */\n  async remove(): Promise<RemoveRes> {\n    const res = await this._query\n      .where({ [this._db.primaryKey]: this.id })\n      .remove({ multi: false })\n    return res\n  }\n\n  /**\n   * 返回选中的文档\n   */\n  async get<T = any>(): Promise<GetOneRes<T>> {\n    const res = await this._query\n      .where({ [this._db.primaryKey]: this.id })\n      .getOne()\n    return res\n  }\n\n  /**\n   * 指定要返回的字段\n   *\n   * @param projection\n   */\n  field(projection: string[] | ProjectionType): DocumentReference {\n    return new DocumentReference(\n      this._db,\n      this._coll,\n      this.id,\n      this._query.field(projection)\n    )\n  }\n\n  /**\n   * 创建索引\n   *\n   * @param data - document data\n   */\n  async createIndex(keys: object, options?: object): Promise<CreateIndexRes> {\n    if (typeof keys !== 'object' || Object.keys(keys)?.length === 0) {\n      throw new Error('keys cannot be empty object')\n    }\n\n    const data = {\n      keys,\n      options,\n    }\n\n    const params = {\n      collectionName: this._coll,\n      data: serialize(data),\n    }\n\n    const res = await this._query.send(ActionType.createIndex, params)\n\n    if (res.error) {\n      return {\n        requestId: res.requestId,\n        error: res.error,\n        ok: false,\n        code: res.code,\n        indexName: null,\n      }\n    }\n\n    return {\n      requestId: res.requestId,\n      ok: true,\n      indexName: res.data.indexName,\n    }\n  }\n\n  async dropIndex(index: string | object): Promise<DropIndexRes> {\n    const params = {\n      collectionName: this._coll,\n      data: serialize(index),\n    }\n\n    const res = await this._query.send(ActionType.dropIndex, params)\n\n    if (res.error) {\n      return {\n        requestId: res.requestId,\n        error: res.error,\n        ok: false,\n        code: res.code,\n        result: null,\n      }\n    }\n\n    return {\n      requestId: res.requestId,\n      ok: true,\n      result: res.data.result,\n    }\n  }\n\n  async listIndexes(options?: object): Promise<ListIndexesRes> {\n    const params = {\n      collectionName: this._coll,\n      data: serialize(options),\n    }\n\n    const res = await this._query.send(ActionType.listIndexes, params)\n\n    if (res.error) {\n      return {\n        requestId: res.requestId,\n        error: res.error,\n        ok: false,\n        code: res.code,\n        list: res.data.list,\n      }\n    }\n\n    return {\n      requestId: res.requestId,\n      ok: true,\n      list: res.data.list,\n    }\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/geo/index.ts",
    "content": "export * from './point'\nexport * from './lineString'\nexport * from './polygon'\nexport * from './multiPoint'\nexport * from './multiLineString'\nexport * from './multiPolygon'\n"
  },
  {
    "path": "packages/database-ql/src/geo/interface.ts",
    "content": "export interface ISerializedPoint {\n  type: string\n  coordinates: [number, number]\n}\n\nexport interface ISerializedLineString {\n  type: string\n  coordinates: [number, number][]\n}\n\nexport interface ISerializedPolygon {\n  type: string\n  coordinates: [number, number][][]\n}\n\nexport interface ISerializedMultiPoint {\n  type: string\n  coordinates: [number, number][]\n}\n\nexport interface ISerializedMultiLineString {\n  type: string\n  coordinates: [number, number][][]\n}\n\nexport interface ISerializedMultiPolygon {\n  type: string\n  coordinates: [number, number][][][]\n}\n"
  },
  {
    "path": "packages/database-ql/src/geo/lineString.ts",
    "content": "import { SYMBOL_GEO_LINE_STRING } from '../helper/symbol'\nimport { Point } from './point'\nimport { isArray, isNumber } from '../utils/type'\nimport { ISerializedLineString } from './interface'\n\n/**\n * 线段\n *\n * @author starkewang\n */\nexport class LineString {\n  readonly points: Point[]\n\n  /**\n   * 初始化\n   *\n   * @param points    - GeoPoint\n   */\n  constructor(points: Point[]) {\n    if (!isArray(points)) {\n      throw new TypeError(\n        `\"points\" must be of type Point[]. Received type ${typeof points}`\n      )\n    }\n    if (points.length < 2) {\n      throw new Error('\"points\" must contain 2 points at least')\n    }\n    points.forEach((point) => {\n      if (!(point instanceof Point)) {\n        throw new TypeError(\n          `\"points\" must be of type Point[]. Received type ${typeof point}[]`\n        )\n      }\n    })\n\n    this.points = points\n  }\n\n  parse(key) {\n    return {\n      [key]: {\n        type: 'LineString',\n        coordinates: this.points.map((point) => point.toJSON().coordinates),\n      },\n    }\n  }\n\n  toJSON() {\n    return {\n      type: 'LineString',\n      coordinates: this.points.map((point) => point.toJSON().coordinates),\n    }\n  }\n\n  static validate(lineString: ISerializedLineString) {\n    if (lineString.type !== 'LineString' || !isArray(lineString.coordinates)) {\n      return false\n    }\n    for (const point of lineString.coordinates) {\n      if (!isNumber(point[0]) || !isNumber(point[1])) {\n        return false\n      }\n    }\n    return true\n  }\n\n  static isClosed(lineString: LineString) {\n    const firstPoint = lineString.points[0]\n    const lastPoint = lineString.points[lineString.points.length - 1]\n\n    if (\n      firstPoint.latitude === lastPoint.latitude &&\n      firstPoint.longitude === lastPoint.longitude\n    ) {\n      return true\n    }\n  }\n\n  get _internalType() {\n    return SYMBOL_GEO_LINE_STRING\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/geo/multiLineString.ts",
    "content": "import { SYMBOL_GEO_MULTI_LINE_STRING } from '../helper/symbol'\nimport { isArray, isNumber } from '../utils/type'\nimport { LineString } from './lineString'\nimport { ISerializedMultiLineString } from './interface'\n\n/**\n * 多个 LineString\n *\n * @author starkewang\n */\nexport class MultiLineString {\n  readonly lines: LineString[]\n\n  /**\n   * 初始化\n   *\n   * @param lines    - LineString\n   */\n  constructor(lines: LineString[]) {\n    if (!isArray(lines)) {\n      throw new TypeError(\n        `\"lines\" must be of type LineString[]. Received type ${typeof lines}`\n      )\n    }\n    if (lines.length === 0) {\n      throw new Error('Polygon must contain 1 linestring at least')\n    }\n    lines.forEach((line) => {\n      if (!(line instanceof LineString)) {\n        throw new TypeError(\n          `\"lines\" must be of type LineString[]. Received type ${typeof line}[]`\n        )\n      }\n    })\n\n    this.lines = lines\n  }\n\n  parse(key) {\n    return {\n      [key]: {\n        type: 'MultiLineString',\n        coordinates: this.lines.map((line) => {\n          return line.points.map((point) => [point.longitude, point.latitude])\n        }),\n      },\n    }\n  }\n\n  toJSON() {\n    return {\n      type: 'MultiLineString',\n      coordinates: this.lines.map((line) => {\n        return line.points.map((point) => [point.longitude, point.latitude])\n      }),\n    }\n  }\n\n  static validate(multiLineString: ISerializedMultiLineString) {\n    if (\n      multiLineString.type !== 'MultiLineString' ||\n      !isArray(multiLineString.coordinates)\n    ) {\n      return false\n    }\n    for (const line of multiLineString.coordinates) {\n      for (const point of line) {\n        if (!isNumber(point[0]) || !isNumber(point[1])) {\n          return false\n        }\n      }\n    }\n    return true\n  }\n\n  get _internalType() {\n    return SYMBOL_GEO_MULTI_LINE_STRING\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/geo/multiPoint.ts",
    "content": "import { SYMBOL_GEO_MULTI_POINT } from '../helper/symbol'\nimport { Point } from './point'\nimport { isArray, isNumber } from '../utils/type'\nimport { ISerializedMultiPoint } from './interface'\n\n/**\n * 多个 Point\n *\n * @author starkewang\n */\nexport class MultiPoint {\n  readonly points: Point[]\n\n  /**\n   * 初始化\n   *\n   * @param points    - GeoPoint\n   */\n  constructor(points: Point[]) {\n    if (!isArray(points)) {\n      throw new TypeError(\n        `\"points\" must be of type Point[]. Received type ${typeof points}`\n      )\n    }\n    if (points.length === 0) {\n      throw new Error('\"points\" must contain 1 point at least')\n    }\n    points.forEach((point) => {\n      if (!(point instanceof Point)) {\n        throw new TypeError(\n          `\"points\" must be of type Point[]. Received type ${typeof point}[]`\n        )\n      }\n    })\n\n    this.points = points\n  }\n\n  parse(key) {\n    return {\n      [key]: {\n        type: 'MultiPoint',\n        coordinates: this.points.map((point) => point.toJSON().coordinates),\n      },\n    }\n  }\n\n  toJSON() {\n    return {\n      type: 'MultiPoint',\n      coordinates: this.points.map((point) => point.toJSON().coordinates),\n    }\n  }\n\n  static validate(multiPoint: ISerializedMultiPoint) {\n    if (multiPoint.type !== 'MultiPoint' || !isArray(multiPoint.coordinates)) {\n      return false\n    }\n    for (const point of multiPoint.coordinates) {\n      if (!isNumber(point[0]) || !isNumber(point[1])) {\n        return false\n      }\n    }\n    return true\n  }\n\n  get _internalType() {\n    return SYMBOL_GEO_MULTI_POINT\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/geo/multiPolygon.ts",
    "content": "import { SYMBOL_GEO_POLYGON } from '../helper/symbol'\nimport { isArray, isNumber } from '../utils/type'\nimport { Polygon } from './polygon'\nimport { ISerializedMultiPolygon } from './interface'\n\n/**\n * 多个面\n *\n * @author starkewang\n */\nexport class MultiPolygon {\n  readonly polygons: Polygon[]\n\n  /**\n   * 初始化\n   *\n   * @param polygons    - Polygon[]\n   */\n  constructor(polygons: Polygon[]) {\n    if (!isArray(polygons)) {\n      throw new TypeError(\n        `\"polygons\" must be of type Polygon[]. Received type ${typeof polygons}`\n      )\n    }\n    if (polygons.length === 0) {\n      throw new Error('MultiPolygon must contain 1 polygon at least')\n    }\n    for (const polygon of polygons) {\n      if (!(polygon instanceof Polygon)) {\n        throw new TypeError(\n          `\"polygon\" must be of type Polygon[]. Received type ${typeof polygon}[]`\n        )\n      }\n    }\n\n    this.polygons = polygons\n  }\n\n  parse(key) {\n    return {\n      [key]: {\n        type: 'MultiPolygon',\n        coordinates: this.polygons.map((polygon) => {\n          return polygon.lines.map((line) => {\n            return line.points.map((point) => [point.longitude, point.latitude])\n          })\n        }),\n      },\n    }\n  }\n\n  toJSON() {\n    return {\n      type: 'MultiPolygon',\n      coordinates: this.polygons.map((polygon) => {\n        return polygon.lines.map((line) => {\n          return line.points.map((point) => [point.longitude, point.latitude])\n        })\n      }),\n    }\n  }\n\n  static validate(multiPolygon: ISerializedMultiPolygon) {\n    if (\n      multiPolygon.type !== 'MultiPolygon' ||\n      !isArray(multiPolygon.coordinates)\n    ) {\n      return false\n    }\n    for (const polygon of multiPolygon.coordinates) {\n      for (const line of polygon) {\n        for (const point of line) {\n          if (!isNumber(point[0]) || !isNumber(point[1])) {\n            return false\n          }\n        }\n      }\n    }\n    return true\n  }\n\n  get _internalType() {\n    return SYMBOL_GEO_POLYGON\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/geo/point.ts",
    "content": "import { Validate } from '../validate'\nimport { SYMBOL_GEO_POINT } from '../helper/symbol'\nimport { isArray } from '../utils/type'\nimport { ISerializedPoint } from './interface'\n\n/**\n * 地址位置\n *\n * @author haroldhu\n */\nexport class Point {\n  /**\n   * 纬度\n   * [-90, 90]\n   */\n  readonly latitude: number\n\n  /**\n   * 经度\n   * [-180, 180]\n   */\n  readonly longitude: number\n\n  /**\n   * 初始化\n   *\n   * @param latitude    - 纬度 [-90, 90]\n   * @param longitude   - 经度 [-180, 180]\n   */\n  constructor(longitude: number, latitude: number) {\n    Validate.isGeopoint('longitude', longitude)\n    Validate.isGeopoint('latitude', latitude)\n\n    this.longitude = longitude\n    this.latitude = latitude\n  }\n\n  parse(key) {\n    return {\n      [key]: {\n        type: 'Point',\n        coordinates: [this.longitude, this.latitude],\n      },\n    }\n  }\n\n  toJSON() {\n    return {\n      type: 'Point',\n      coordinates: [this.longitude, this.latitude],\n    }\n  }\n\n  toReadableString() {\n    return `[${this.longitude},${this.latitude}]`\n  }\n\n  static validate(point: ISerializedPoint) {\n    return (\n      point.type === 'Point' &&\n      isArray(point.coordinates) &&\n      Validate.isGeopoint('longitude', point.coordinates[0]) &&\n      Validate.isGeopoint('latitude', point.coordinates[1])\n    )\n  }\n\n  get _internalType() {\n    return SYMBOL_GEO_POINT\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/geo/polygon.ts",
    "content": "import { SYMBOL_GEO_MULTI_POLYGON } from '../helper/symbol'\nimport { isArray, isNumber } from '../utils/type'\nimport { LineString } from './lineString'\nimport { ISerializedPolygon } from './interface'\n\n/**\n * 面\n *\n * @author starkewang\n */\nexport class Polygon {\n  readonly lines: LineString[]\n\n  /**\n   * 初始化\n   *\n   * @param lines    - LineString\n   */\n  constructor(lines: LineString[]) {\n    if (!isArray(lines)) {\n      throw new TypeError(\n        `\"lines\" must be of type LineString[]. Received type ${typeof lines}`\n      )\n    }\n    if (lines.length === 0) {\n      throw new Error('Polygon must contain 1 linestring at least')\n    }\n    lines.forEach((line) => {\n      if (!(line instanceof LineString)) {\n        throw new TypeError(\n          `\"lines\" must be of type LineString[]. Received type ${typeof line}[]`\n        )\n      }\n      if (!LineString.isClosed(line)) {\n        throw new Error(\n          `LineString ${line.points.map((p) =>\n            p.toReadableString()\n          )} is not a closed cycle`\n        )\n      }\n    })\n\n    this.lines = lines\n  }\n\n  parse(key) {\n    return {\n      [key]: {\n        type: 'Polygon',\n        coordinates: this.lines.map((line) => {\n          return line.points.map((point) => [point.longitude, point.latitude])\n        }),\n      },\n    }\n  }\n\n  toJSON() {\n    return {\n      type: 'Polygon',\n      coordinates: this.lines.map((line) => {\n        return line.points.map((point) => [point.longitude, point.latitude])\n      }),\n    }\n  }\n\n  static validate(polygon: ISerializedPolygon) {\n    if (polygon.type !== 'Polygon' || !isArray(polygon.coordinates)) {\n      return false\n    }\n    for (const line of polygon.coordinates) {\n      if (!this.isCloseLineString(line)) {\n        return false\n      }\n      for (const point of line) {\n        if (!isNumber(point[0]) || !isNumber(point[1])) {\n          return false\n        }\n      }\n    }\n    return true\n  }\n\n  static isCloseLineString(lineString) {\n    const firstPoint = lineString[0]\n    const lastPoint = lineString[lineString.length - 1]\n\n    if (firstPoint[0] !== lastPoint[0] || firstPoint[1] !== lastPoint[1]) {\n      return false\n    }\n\n    return true\n  }\n\n  get _internalType() {\n    return SYMBOL_GEO_MULTI_POLYGON\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/helper/symbol.ts",
    "content": "import InternalSymbol from '../utils/symbol'\nexport * from '../utils/symbol'\n\nexport const SYMBOL_UNSET_FIELD_NAME = InternalSymbol.for('UNSET_FIELD_NAME')\n\nexport const SYMBOL_UPDATE_COMMAND = InternalSymbol.for('UPDATE_COMMAND')\nexport const SYMBOL_QUERY_COMMAND = InternalSymbol.for('QUERY_COMMAND')\nexport const SYMBOL_LOGIC_COMMAND = InternalSymbol.for('LOGIC_COMMAND')\n\nexport const SYMBOL_GEO_POINT = InternalSymbol.for('GEO_POINT')\nexport const SYMBOL_GEO_LINE_STRING = InternalSymbol.for(\n  'SYMBOL_GEO_LINE_STRING'\n)\nexport const SYMBOL_GEO_POLYGON = InternalSymbol.for('SYMBOL_GEO_POLYGON')\nexport const SYMBOL_GEO_MULTI_POINT = InternalSymbol.for(\n  'SYMBOL_GEO_MULTI_POINT'\n)\nexport const SYMBOL_GEO_MULTI_LINE_STRING = InternalSymbol.for(\n  'SYMBOL_GEO_MULTI_LINE_STRING'\n)\nexport const SYMBOL_GEO_MULTI_POLYGON = InternalSymbol.for(\n  'SYMBOL_GEO_MULTI_POLYGON'\n)\n\nexport const SYMBOL_SERVER_DATE = InternalSymbol.for('SERVER_DATE')\n\nexport const SYMBOL_REGEXP = InternalSymbol.for('REGEXP')\n"
  },
  {
    "path": "packages/database-ql/src/index.ts",
    "content": "import * as Geo from './geo/index'\nimport { CollectionReference } from './collection'\nimport { Command } from './command'\nimport { ServerDateConstructor } from './serverDate/index'\nimport { RegExpConstructor } from './regexp/index'\nimport { RequestInterface } from './interface'\nimport { ObjectId } from 'bson'\n\n/**\n * 地理位置类型\n */\ninterface GeoType {\n  Point: typeof Geo.Point\n  LineString: typeof Geo.LineString\n  Polygon: typeof Geo.Polygon\n  MultiPoint: typeof Geo.MultiPoint\n  MultiLineString: typeof Geo.MultiLineString\n  MultiPolygon: typeof Geo.MultiPolygon\n}\n\nexport { Query } from './query'\nexport { CollectionReference } from './collection'\nexport { DocumentReference } from './document'\nexport { RequestInterface } from './interface'\n\ninterface DbConfig {\n  /**\n   * Primary key, default is '_id'\n   */\n  primaryKey?: string\n\n  /**\n   * Request instance\n   */\n  request: RequestInterface\n}\n\n/**\n * 数据库模块\n *\n */\nexport class Db {\n  /**\n   * Geo 类型\n   */\n  readonly Geo: GeoType = Geo\n\n  /**\n   * 逻辑操作的命令\n   */\n  readonly command: typeof Command = Command\n\n  /**\n   * This method was deprecated, use js native `new RegExp()` instead\n   * @deprecated\n   */\n  readonly RegExp = RegExpConstructor\n\n  /**\n   * This method is deprecated, not implemented in server side\n   * @deprecated\n   */\n  readonly serverDate = ServerDateConstructor\n\n  readonly primaryKey: string\n\n  readonly request: RequestInterface\n\n  constructor(config?: DbConfig) {\n    if (!config.request) {\n      throw new Error('DbConfig.request cannot be empty')\n    }\n\n    this.request = config.request\n    this.primaryKey = config.primaryKey ?? '_id'\n  }\n\n  /**\n   * 获取集合的引用\n   *\n   * @param collName - 集合名称\n   */\n  collection(collName: string): CollectionReference {\n    if (!collName) {\n      throw new Error('Collection name is required')\n    }\n    return new CollectionReference(this, collName)\n  }\n\n  /**\n   * Generate a hex string id for document\n   * @returns\n   */\n  generateId(): string {\n    const id = new ObjectId()\n    return id.toHexString()\n  }\n\n  /**\n   * Wrapper for ObjectId() of mongodb\n   * @param params\n   * @returns\n   */\n  ObjectId(id?: string | number | ObjectId) {\n    return new ObjectId(id)\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/interface.ts",
    "content": "import { ActionType, OrderByDirection } from './constant'\n\nexport interface ResponseStruct {\n  code: number\n  data: any\n  error: any\n  requestId: string\n  [extra: string]: any\n}\n\nexport interface RequestInterface {\n  send(action: ActionType, data: QueryParam): Promise<ResponseStruct>\n}\n\nexport interface QueryOrder {\n  field: string\n  direction: OrderByDirection\n}\n\nexport interface ProjectionType {\n  [field: string]: 0 | 1\n}\n\nexport interface AggregateStage {\n  stageKey: string\n  stageValue: any\n}\n\nexport interface QueryParam {\n  collectionName: string\n\n  /**\n   * Query options\n   */\n  query?: object\n  order?: QueryOrder[]\n  offset?: number\n  limit?: number\n  projection?: ProjectionType\n  count?: boolean\n\n  /**\n   * Update options\n   */\n  multi?: boolean\n  merge?: boolean\n  upsert?: boolean\n  data?: any\n\n  /**\n   * Aggregate stages\n   */\n  stages?: AggregateStage[]\n}\n"
  },
  {
    "path": "packages/database-ql/src/operator-map.ts",
    "content": "import { QUERY_COMMANDS_LITERAL } from './commands/query'\nimport { LOGIC_COMMANDS_LITERAL } from './commands/logic'\nimport { UPDATE_COMMANDS_LITERAL } from './commands/update'\n\nexport const OperatorMap: { [key: string]: string } = {}\n\nfor (const key in QUERY_COMMANDS_LITERAL) {\n  OperatorMap[key] = '$' + key\n}\n\nfor (const key in LOGIC_COMMANDS_LITERAL) {\n  OperatorMap[key] = '$' + key\n}\n\nfor (const key in UPDATE_COMMANDS_LITERAL) {\n  OperatorMap[key] = '$' + key\n}\n\n// some exceptions\nOperatorMap[QUERY_COMMANDS_LITERAL.NEQ] = '$ne'\nOperatorMap[UPDATE_COMMANDS_LITERAL.REMOVE] = '$unset'\nOperatorMap[UPDATE_COMMANDS_LITERAL.SHIFT] = '$pop' // same as POP\nOperatorMap[UPDATE_COMMANDS_LITERAL.UNSHIFT] = '$push' // same as PUSH\n\nexport function operatorToString(operator: string): string {\n  return OperatorMap[operator] || '$' + operator\n}\n"
  },
  {
    "path": "packages/database-ql/src/query.ts",
    "content": "import { ActionType, OrderByDirection } from './constant'\nimport { Db } from './index'\nimport { Validate } from './validate'\n// import { Util } from './util'\nimport { QuerySerializer } from './serializer/query'\nimport { UpdateSerializer } from './serializer/update'\nimport { ErrorCode } from './constant'\nimport {\n  GetOneRes,\n  GetRes,\n  CountRes,\n  UpdateRes,\n  RemoveRes,\n} from './result-types'\nimport {\n  ProjectionType,\n  QueryOrder,\n  RequestInterface,\n  QueryParam,\n} from './interface'\nimport { Util } from './util'\nimport { serialize } from './serializer/datatype'\n\ninterface QueryOption {\n  /**\n   * 查询数量\n   */\n  limit?: number\n\n  /**\n   * 偏移量\n   */\n  offset?: number\n\n  /**\n   * 指定显示或者不显示哪些字段\n   */\n  projection?: ProjectionType\n\n  /**\n   * 是否返回文档总数\n   */\n  count?: boolean\n}\n\ninterface WithParam {\n  /**\n   * 子查询\n   */\n  query: Query\n\n  /**\n   * 主表联接键（关联字段）\n   */\n  localField: string\n\n  /**\n   * 子表联接键（外键）\n   */\n  foreignField: string\n\n  /**\n   * 结果集字段重命名，缺省则用子表名\n   */\n  as?: string\n\n  /**\n   * 是否是一对一查询，只在 Query.withOne() 中使用\n   */\n  one?: boolean\n}\n\n/**\n * Db query\n */\nexport class Query {\n  /**\n   * Reference to db instance\n   */\n  protected _db: Db\n\n  /**\n   * Collection name\n   */\n  protected _coll: string\n\n  /**\n   * Query conditions\n   */\n  private _fieldFilters: object\n\n  /**\n   * Order by conditions\n   */\n  private _fieldOrders: QueryOrder[]\n\n  /**\n   * Query options\n   */\n  private _queryOptions: QueryOption\n\n  /**\n   * Sub queries\n   */\n  private _withs: WithParam[]\n\n  /**\n   * Request instance\n   */\n  private _request: RequestInterface\n\n  /**\n   * @param db            - db reference\n   * @param coll          - collection name\n   * @param fieldFilters  - query condition\n   * @param fieldOrders   - order by condition\n   * @param queryOptions  - query options\n   */\n  public constructor(\n    db: Db,\n    coll: string,\n    fieldFilters?: object,\n    fieldOrders?: QueryOrder[],\n    queryOptions?: QueryOption,\n    withs?: WithParam[]\n  ) {\n    this._db = db\n    this._coll = coll\n    this._fieldFilters = fieldFilters\n    this._fieldOrders = fieldOrders || []\n    this._queryOptions = queryOptions || {}\n    this._withs = withs || []\n    this._request = this._db.request\n  }\n\n  /**\n   * 查询条件\n   *\n   * @param query\n   */\n  public where(query: object) {\n    // query校验 1. 必填对象类型  2. value 不可均为 undefiend\n    if (Object.prototype.toString.call(query).slice(8, -1) !== 'Object') {\n      throw Error(ErrorCode.QueryParamTypeError)\n    }\n\n    const keys = Object.keys(query)\n\n    const checkFlag = keys.some((item) => {\n      return query[item] !== undefined\n    })\n\n    if (keys.length && !checkFlag) {\n      throw Error(ErrorCode.QueryParamValueError)\n    }\n\n    const _query = QuerySerializer.encode(query)\n    return new Query(\n      this._db,\n      this._coll,\n      _query,\n      this._fieldOrders,\n      this._queryOptions,\n      this._withs\n    )\n  }\n\n  /**\n   * 设置排序方式\n   *\n   * @param fieldPath     - 字段路径\n   * @param directionStr  - 排序方式\n   */\n  public orderBy(fieldPath: string, directionStr: OrderByDirection): Query {\n    Validate.isFieldPath(fieldPath)\n    Validate.isFieldOrder(directionStr)\n\n    const newOrder: QueryOrder = {\n      field: fieldPath,\n      direction: directionStr,\n    }\n    const combinedOrders = this._fieldOrders.concat(newOrder)\n\n    return new Query(\n      this._db,\n      this._coll,\n      this._fieldFilters,\n      combinedOrders,\n      this._queryOptions,\n      this._withs\n    )\n  }\n\n  /**\n   * 添加 一对多 子查询条件\n   * @param param {WithParam}\n   * @returns Query\n   */\n  public with(param: WithParam): Query {\n    const newWith: WithParam = {\n      query: param.query,\n      foreignField: param.foreignField,\n      localField: param.localField,\n      as: param.as ?? param.query._coll,\n      one: param.one ?? false,\n    }\n\n    const combinedWiths = this._withs.concat(newWith)\n    return new Query(\n      this._db,\n      this._coll,\n      this._fieldFilters,\n      this._fieldOrders,\n      this._queryOptions,\n      combinedWiths\n    )\n  }\n\n  /**\n   * 添加 一对一 子查询条件\n   * @param param {WithParam}\n   * @returns Query\n   */\n  public withOne(param: WithParam): Query {\n    const newWith: WithParam = {\n      query: param.query,\n      foreignField: param.foreignField,\n      localField: param.localField,\n      as: param.as ?? param.query._coll,\n      one: true,\n    }\n\n    const combinedWiths = this._withs.concat(newWith)\n    return new Query(\n      this._db,\n      this._coll,\n      this._fieldFilters,\n      this._fieldOrders,\n      this._queryOptions,\n      combinedWiths\n    )\n  }\n\n  /**\n   * 指定要返回的字段\n   *\n   * @param projection\n   */\n  public field(projection: string[] | ProjectionType): Query {\n    let formatted = {} as ProjectionType\n    if (projection instanceof Array) {\n      const result = {} as ProjectionType\n      for (const k of projection) {\n        result[k] = 1\n      }\n      formatted = result\n    } else {\n      for (const k in projection) {\n        if (projection[k]) {\n          if (typeof projection[k] !== 'object') {\n            formatted[k] = 1\n          }\n        } else {\n          formatted[k] = 0\n        }\n      }\n    }\n\n    const option = { ...this._queryOptions }\n    option.projection = formatted\n\n    return new Query(\n      this._db,\n      this._coll,\n      this._fieldFilters,\n      this._fieldOrders,\n      option,\n      this._withs\n    )\n  }\n\n  /**\n   * 设置查询条数\n   *\n   * @param limit - 限制条数，当前限制一次请求获取数据条数不得大于 1000\n   */\n  public limit(limit: number): Query {\n    Validate.isInteger('limit', limit)\n\n    const option = { ...this._queryOptions }\n    option.limit = limit\n\n    return new Query(\n      this._db,\n      this._coll,\n      this._fieldFilters,\n      this._fieldOrders,\n      option,\n      this._withs\n    )\n  }\n\n  /**\n   * 设置偏移量\n   *\n   * @param offset - 偏移量\n   */\n  public skip(offset: number): Query {\n    Validate.isInteger('offset', offset)\n\n    const option = { ...this._queryOptions }\n    option.offset = offset\n\n    return new Query(\n      this._db,\n      this._coll,\n      this._fieldFilters,\n      this._fieldOrders,\n      option,\n      this._withs\n    )\n  }\n\n  /**\n   * 设置分页查询\n   * @param options { current: number, size: number} `current` 是页码，默认为 `1`, `size` 是每页大小, 默认为 10\n   */\n  public page(options: { current: number; size: number }) {\n    const current = options?.current || 1\n    const size = options?.size || 10\n\n    const query = this.skip((current - 1) * size).limit(size)\n\n    query._queryOptions.count = true\n\n    return query\n  }\n\n  /**\n   * 克隆\n   * @returns Query\n   */\n  public clone(): Query {\n    return new Query(\n      this._db,\n      this._coll,\n      this._fieldFilters,\n      this._fieldOrders,\n      this._queryOptions,\n      this._withs\n    )\n  }\n\n  /**\n   * 发起请求获取文档列表\n   *\n   * - 默认 `limit` 为 100\n   * - 可以把通过 `orderBy()`、`where()`、`skip()`、`limit()`设置的数据添加请求参数上\n   */\n  public async get<T = any>(): Promise<GetRes<T>> {\n    if (this._withs?.length) {\n      return await this.internalMerge()\n    } else {\n      return await this.internalGet()\n    }\n  }\n\n  /**\n   * 发起请求获取一个文档\n   * @param options\n   * @returns\n   */\n  public async getOne<T = any>(): Promise<GetOneRes<T>> {\n    const res = await this.limit(1).get<T>()\n    if (res.error) {\n      return res as any\n    }\n\n    if (!res.data.length) {\n      return {\n        ok: true,\n        data: null,\n        requestId: res.requestId,\n      }\n    }\n\n    return {\n      ok: true,\n      data: res.data[0],\n      requestId: res.requestId,\n    }\n  }\n\n  /**\n   * [该接口已废弃，直接使用 `get()` 代替]\n   * 发起请求获取文档列表，当使用 with 条件时使用\n   *\n   * @deprecated\n   *\n   * 1. 调用 get() 执行主查询\n   * 2. 结合主查询的结果，使用 in 执行子表查询\n   * 3. 合并主表 & 子表的结果，即聚合\n   * 4. intersection 可指定是否取两个结果集的交集，缺省则以主表结果为主\n   */\n  public async merge<T = any>(options?: {\n    intersection?: boolean\n  }): Promise<GetRes<T>> {\n    const res = await this.internalMerge(options)\n    return res\n  }\n\n  /**\n   * 获取总数\n   */\n  public async count(): Promise<CountRes> {\n    const param = this.buildQueryParam()\n    const res = await this.send(ActionType.count, param)\n\n    if (res.error) {\n      return {\n        requestId: res.requestId,\n        ok: false,\n        error: res.error,\n        total: undefined,\n        code: res.code,\n      }\n    }\n\n    return {\n      requestId: res.requestId,\n      total: res.data.total,\n      ok: true,\n    }\n  }\n\n  /**\n   * 发起请求批量更新文档\n   *\n   * @param data 数据\n   */\n  public async update(\n    data: object,\n    options?: { multi?: boolean; merge?: boolean; upsert?: boolean }\n  ): Promise<UpdateRes> {\n    if (!data || typeof data !== 'object' || 0 === Object.keys(data)?.length) {\n      throw new Error('data cannot be empty object')\n    }\n\n    if (data.hasOwnProperty('_id')) {\n      throw new Error('can not update the `_id` field')\n    }\n\n    const param = this.buildQueryParam()\n    param.multi = options?.multi ?? false\n    param.merge = options?.merge ?? true\n    param.upsert = options?.upsert ?? false\n    if (param.merge) {\n      param.data = UpdateSerializer.encode(data)\n    } else {\n      param.data = serialize(data)\n    }\n\n    const res = await this.send(ActionType.update, param)\n    if (res.error) {\n      return {\n        requestId: res.requestId,\n        error: res.error,\n        ok: false,\n        code: res.code,\n        updated: undefined,\n        matched: undefined,\n        upsertId: undefined,\n      }\n    }\n\n    return {\n      requestId: res.requestId,\n      updated: res.data.updated,\n      matched: res.data.matched,\n      upsertId: res.data.upsert_id,\n      ok: true,\n    }\n  }\n\n  /**\n   * 条件删除文档\n   */\n  public async remove(options?: { multi: boolean }): Promise<RemoveRes> {\n    if (Object.keys(this._queryOptions).length > 0) {\n      console.warn(\n        '`offset`, `limit` and `projection` are not supported in remove() operation'\n      )\n    }\n\n    if (this._fieldOrders?.length > 0) {\n      console.warn('`orderBy` is not supported in remove() operation')\n    }\n\n    const param = this.buildQueryParam()\n    param.multi = options?.multi ?? false\n\n    const res = await this.send(ActionType.remove, param)\n    if (res.error) {\n      return {\n        requestId: res.requestId,\n        error: res.error,\n        ok: false,\n        deleted: undefined,\n        code: res.code,\n      }\n    }\n\n    return {\n      requestId: res.requestId,\n      deleted: res.data.deleted,\n      ok: true,\n    }\n  }\n\n  /**\n   * Build query param\n   * @returns\n   */\n  protected buildQueryParam() {\n    const param: QueryParam = {\n      collectionName: this._coll,\n    }\n    if (this._fieldFilters) {\n      param.query = this._fieldFilters\n    }\n    if (this._fieldOrders?.length) {\n      param.order = [...this._fieldOrders]\n    }\n    if (this._queryOptions.offset) {\n      param.offset = this._queryOptions.offset\n    }\n    if (this._queryOptions.limit) {\n      param.limit =\n        this._queryOptions.limit < 1000 ? this._queryOptions.limit : 1000\n    } else {\n      param.limit = 100\n    }\n    if (this._queryOptions.projection) {\n      param.projection = this._queryOptions.projection\n    }\n    if (this._queryOptions.count) {\n      param.count = this._queryOptions.count\n    }\n\n    return param\n  }\n\n  /**\n   * 发起请求获取文档列表\n   */\n  protected async internalGet<T = any>(): Promise<GetRes<T>> {\n    const param = this.buildQueryParam()\n    const res = await this.send(ActionType.query, param)\n    if (res.error) {\n      return {\n        error: res.error,\n        data: res.data,\n        requestId: res.requestId,\n        ok: false,\n        code: res.code,\n      }\n    }\n\n    const documents: any[] = Util.formatResDocumentData(res.data.list)\n    const result: GetRes<T> = {\n      data: documents,\n      requestId: res.requestId,\n      ok: true,\n    }\n    if (res.total) result.total = res.data?.total\n    if (res.limit) result.limit = res.data?.limit\n    if (res.offset) result.offset = res.data?.offset\n    return result\n  }\n\n  /**\n   * 发起请求获取文档列表，当使用 with 条件时使用\n   *\n   * 1. 调用 internalGet() 执行主查询\n   * 2. 结合主查询的结果，使用 in 执行子表查询\n   * 3. 合并主表 & 子表的结果，即聚合\n   * 4. intersection 可指定是否取两个结果集的交集，缺省则以主表结果为主\n   */\n  protected async internalMerge<T = any>(options?: {\n    intersection?: boolean\n  }): Promise<GetRes<T>> {\n    options = options ?? ({} as any)\n    const intersection = options?.intersection ?? false\n\n    // 调用 get() 执行主查询\n    const res = await this.internalGet()\n    if (!res.ok) {\n      return res as any\n    }\n\n    // 针对每一个 WithParam 做合并处理\n    for (const _with of this._withs) {\n      const { query, localField, foreignField, as, one } = _with\n      const localValues = res.data.map((localData) => localData[localField])\n\n      // 处理子查询\n      const q = query.clone()\n\n      if (!q._fieldFilters) {\n        q._fieldFilters = {}\n      }\n      q._fieldFilters[foreignField] = { $in: localValues }\n\n      // 执行子查询\n      let r_sub: GetRes<T>\n      if (q._withs.length) {\n        r_sub = await q.merge() // 如果子查询也使用了 with/withOne，则使用 merge() 查询\n      } else {\n        r_sub = await q.get()\n      }\n\n      if (!r_sub.ok) {\n        return r_sub\n      }\n\n      // 按照 localField -> foreignField 的连接关系将子查询结果聚合：\n\n      // 1. 构建 { [value of `foreignField`]: [subQueryData] } 映射表\n      const _map = {}\n      for (const sub of r_sub.data) {\n        const key = sub[foreignField] // 将子表结果的连接键的值做为映射表的 key\n        if (one) {\n          _map[key] = sub\n        } else {\n          _map[key] = _map[key] || []\n          _map[key].push(sub) // 将子表结果放入映射表\n        }\n      }\n\n      // 2. 将聚合结果合并入主表结果集中\n      const results = []\n      for (const m of res.data) {\n        // 此处主表结果中的 [value of `localField`] 与 上面子表结果中的 [value of `foreignField`] 应该是一致的\n        const key = m[localField]\n        m[as] = _map[key]\n\n        // 如果取交集且子表结果无对应数据，则丢弃此条数据\n        if (intersection && !_map[key]) {\n          continue\n        }\n        results.push(m)\n      }\n\n      res.data = results\n    }\n\n    return res as any\n  }\n\n  /**\n   * Send query request\n   * @param action\n   * @param param\n   * @returns\n   */\n  public async send(action: ActionType, param: QueryParam) {\n    return await this._request.send(action, param)\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/regexp/index.ts",
    "content": "import { SYMBOL_REGEXP } from '../helper/symbol'\n\n/**\n * @deprecated This method was deprecated, use js native `RegExp` instead\n */\nexport class RegExp {\n  $regex: string\n  $options: string\n  constructor({ regexp, options }: { regexp: string; options: string }) {\n    if (!regexp) {\n      throw new TypeError('regexp must be a string')\n    }\n    this.$regex = regexp\n    this.$options = options || ''\n  }\n\n  parse() {\n    return {\n      $regex: this.$regex,\n      $options: this.$options,\n    }\n  }\n\n  get _internalType() {\n    return SYMBOL_REGEXP\n  }\n}\n\n/**\n * @deprecated This method was deprecated, use js native `RegExp` instead\n * @param param\n * @returns\n */\nexport function RegExpConstructor(param: { regexp: string; options: string }) {\n  return new RegExp(param)\n}\n"
  },
  {
    "path": "packages/database-ql/src/result-types.ts",
    "content": "interface BaseResult {\n  requestId?: string\n  code?: string | number\n  error?: any\n  ok?: boolean\n}\n\nexport interface GetRes<T> extends BaseResult {\n  data: T[]\n  total?: number\n  limit?: number\n  offset?: number\n}\n\nexport interface GetOneRes<T> extends BaseResult {\n  data: T | null\n}\n\nexport interface UpdateRes extends BaseResult {\n  updated: number\n  matched: number\n  upsertId: number\n}\n\nexport interface AddRes extends BaseResult {\n  id: string | number\n  insertedCount: number\n}\n\nexport interface RemoveRes extends BaseResult {\n  deleted: number\n}\n\nexport interface CountRes extends BaseResult {\n  total: number\n}\n\nexport interface CreateIndexRes extends BaseResult {\n  indexName: string\n}\n\nexport interface DropIndexRes extends BaseResult {\n  result: any\n}\n\nexport interface ListIndexesRes extends BaseResult {\n  list: object[]\n}\n"
  },
  {
    "path": "packages/database-ql/src/serializer/common.ts",
    "content": "import {\n  getType,\n  isObject,\n  isArray,\n  isDate,\n  isRegExp,\n  isInternalObject,\n  isObjectId,\n  isBinary,\n} from '../utils/type'\nimport {\n  serialize as serializeInternalDataType,\n  deserialize as deserializeInternalDataType,\n} from './datatype'\nimport { LogicCommand } from '../commands/logic'\n\nexport type IQueryCondition = Record<string, any> | LogicCommand\n\nexport type AnyObject = {\n  [x: string]: any\n}\n\nfunction flatten(\n  query: Record<string, any>,\n  shouldPreserverObject: (object: object) => boolean,\n  parents: string[],\n  visited: object[]\n): Record<string, any> {\n  const cloned = { ...query }\n\n  for (const key in query) {\n    if (/^\\$/.test(key)) continue\n\n    const value = query[key]\n\n    if (!value) continue\n\n    if (isObject(value) && !shouldPreserverObject(value)) {\n      if (visited.indexOf(value) > -1) {\n        throw new Error('Cannot convert circular structure to JSON')\n      }\n\n      const newParents = [...parents, key]\n\n      const newVisited = [...visited, value]\n\n      const flattenedChild = flatten(\n        value,\n        shouldPreserverObject,\n        newParents,\n        newVisited\n      )\n      cloned[key] = flattenedChild\n\n      let hasKeyNotCombined = false\n      for (const childKey in flattenedChild) {\n        if (!/^\\$/.test(childKey)) {\n          cloned[`${key}.${childKey}`] = flattenedChild[childKey]\n          delete cloned[key][childKey]\n        } else {\n          hasKeyNotCombined = true\n        }\n      }\n\n      if (!hasKeyNotCombined) {\n        delete cloned[key]\n      }\n    }\n  }\n\n  return cloned\n}\n\nexport function flattenQueryObject(\n  query: Record<string, any>\n): Record<string, any> {\n  return flatten(query, isConversionRequired, [], [query])\n}\n\nexport function flattenObject(object: AnyObject): AnyObject {\n  return flatten(object, (_: object) => false, [], [object])\n}\n\nexport function mergeConditionAfterEncode(\n  query: Record<string, any>,\n  condition: Record<string, any>,\n  key: string\n): void {\n  if (!condition[key]) {\n    delete query[key]\n  }\n\n  for (const conditionKey in condition) {\n    if (query[conditionKey]) {\n      if (isArray(query[conditionKey])) {\n        query[conditionKey].push(condition[conditionKey])\n      } else if (isObject(query[conditionKey])) {\n        if (isObject(condition[conditionKey])) {\n          Object.assign(query[conditionKey], condition[conditionKey])\n        } else {\n          console.warn(\n            `unmergable condition, query is object but condition is ${getType(\n              condition\n            )}, can only overwrite`,\n            condition,\n            key\n          )\n          query[conditionKey] = condition[conditionKey]\n        }\n      } else {\n        console.warn(\n          `to-merge query is of type ${getType(query)}, can only overwrite`,\n          query,\n          condition,\n          key\n        )\n        query[conditionKey] = condition[conditionKey]\n      }\n    } else {\n      query[conditionKey] = condition[conditionKey]\n    }\n  }\n}\n\n/**\n * Check `val` if `InternalObject` | `Date` | `RegExp` | `ObjectId` | `isBinary`\n * InternalObject can be:  `LogicCommand` | `QueryCommand` | `UpdateCommand`\n *\n * @tip this method also used is `flatten()` function, `flatten` will reserved the required object\n * @param val\n * @returns\n */\nexport function isConversionRequired(val: any): boolean {\n  return (\n    isInternalObject(val) ||\n    isDate(val) ||\n    isRegExp(val) ||\n    isObjectId(val) ||\n    isBinary(val)\n  )\n}\n\nexport function encodeInternalDataType(val: any): IQueryCondition {\n  return serializeInternalDataType(val)\n}\n\nexport function decodeInternalDataType(object: AnyObject): any {\n  return deserializeInternalDataType(object)\n}\n"
  },
  {
    "path": "packages/database-ql/src/serializer/datatype.ts",
    "content": "// transpile internal data type\nimport {\n  SYMBOL_GEO_POINT,\n  SYMBOL_SERVER_DATE,\n  SYMBOL_REGEXP,\n} from '../helper/symbol'\nimport {\n  getType,\n  isObject,\n  isArray,\n  isDate,\n  isNumber,\n  isInternalObject,\n  isRegExp,\n  isObjectId,\n  isBinary,\n} from '../utils/type'\nimport { Point } from '../geo/index'\nimport { ServerDate } from '../serverDate/index'\nimport { RegExp } from '../regexp/index'\nimport { LogicCommand } from '../commands/logic'\nimport { EJSON } from 'bson'\n\nexport type IQueryCondition = Record<string, any> | LogicCommand\n\nexport type AnyObject = {\n  [x: string]: any\n}\n\nexport function serialize(val: any): IQueryCondition {\n  return serializeHelper(val, [val])\n}\n\nfunction serializeHelper(val: any, visited: object[]): Record<string, any> {\n  if (isInternalObject(val)) {\n    switch (val._internalType) {\n      case SYMBOL_GEO_POINT: {\n        return (val as Point).toJSON()\n      }\n      case SYMBOL_SERVER_DATE: {\n        return (val as ServerDate).parse()\n      }\n      case SYMBOL_REGEXP: {\n        return (val as RegExp).parse()\n      }\n      default: {\n        return val.toJSON ? val.toJSON() : val\n      }\n    }\n  } else if (isDate(val) || isRegExp(val) || isObjectId(val) || isBinary(val)) {\n    return EJSON.serialize(val)\n  } else if (isArray(val)) {\n    return val.map((item) => {\n      if (visited.indexOf(item) > -1) {\n        throw new Error('Cannot convert circular structure to JSON')\n      }\n\n      return serializeHelper(item, [...visited, item])\n    })\n  } else if (isObject(val)) {\n    const ret: AnyObject = { ...val }\n    for (const key in ret) {\n      if (visited.indexOf(ret[key]) > -1) {\n        throw new Error('Cannot convert circular structure to JSON')\n      }\n\n      ret[key] = serializeHelper(ret[key], [...visited, ret[key]])\n    }\n    return ret\n  } else {\n    return val\n  }\n}\n\nexport function deserialize(object: AnyObject): any {\n  const ret = { ...object }\n  for (const key in ret) {\n    switch (key) {\n      case '$date': {\n        switch (getType(ret[key])) {\n          case 'number': {\n            // normal timestamp\n            return new Date(ret[key])\n          }\n          case 'object': {\n            // serverDate\n            return new ServerDate(ret[key])\n          }\n        }\n        break\n      }\n      case 'type': {\n        switch (ret.type) {\n          case 'Point': {\n            // GeoPoint\n            if (\n              isArray(ret.coordinates) &&\n              isNumber(ret.coordinates[0]) &&\n              isNumber(ret.coordinates[1])\n            ) {\n              return new Point(ret.coordinates[0], ret.coordinates[1])\n            }\n            break\n          }\n        }\n        break\n      }\n    }\n  }\n  return object\n}\n"
  },
  {
    "path": "packages/database-ql/src/serializer/query.ts",
    "content": "import {\n  isQueryCommand,\n  isComparisonCommand,\n  QUERY_COMMANDS_LITERAL,\n  QueryCommand,\n} from '../commands/query'\nimport {\n  isLogicCommand,\n  LOGIC_COMMANDS_LITERAL,\n  LogicCommand,\n} from '../commands/logic'\nimport { SYMBOL_UNSET_FIELD_NAME } from '../helper/symbol'\nimport { getType, isObject, isArray, isRegExp } from '../utils/type'\nimport { operatorToString } from '../operator-map'\nimport {\n  flattenQueryObject,\n  isConversionRequired,\n  encodeInternalDataType,\n} from './common'\nimport {\n  IGeoNearOptions,\n  IGeoWithinOptions,\n  IGeoIntersectsOptions,\n} from '../commands/query'\n\nexport type IQueryCondition = Record<string, any> | LogicCommand\n\nexport class QuerySerializer {\n  constructor() {}\n\n  static encode(\n    query: IQueryCondition | QueryCommand | LogicCommand\n  ): IQueryCondition {\n    const encoder = new QueryEncoder()\n    return encoder.encodeQuery(query)\n  }\n}\n\nclass QueryEncoder {\n  encodeQuery(\n    query: IQueryCondition | QueryCommand | LogicCommand,\n    key?: any\n  ): IQueryCondition {\n    if (isConversionRequired(query)) {\n      if (isLogicCommand(query)) {\n        return this.encodeLogicCommand(query)\n      } else if (isQueryCommand(query)) {\n        return this.encodeQueryCommand(query)\n      } else {\n        return { [key]: this.encodeQueryObject(query) }\n      }\n    } else {\n      if (isObject(query)) {\n        return this.encodeQueryObject(query)\n      } else {\n        // abnormal case, should not enter this block\n        return query\n      }\n    }\n  }\n\n  encodeRegExp(query: RegExp) {\n    return {\n      $regex: query.source,\n      $options: query.flags,\n    }\n  }\n\n  encodeLogicCommand(query: LogicCommand): IQueryCondition {\n    switch (query.operator) {\n      case LOGIC_COMMANDS_LITERAL.NOR:\n      case LOGIC_COMMANDS_LITERAL.AND:\n      case LOGIC_COMMANDS_LITERAL.OR: {\n        const $op = operatorToString(query.operator)\n        const subqueries = query.operands.map((oprand) =>\n          this.encodeQuery(oprand, query.fieldName)\n        )\n        return {\n          [$op]: subqueries,\n        }\n      }\n      case LOGIC_COMMANDS_LITERAL.NOT: {\n        const $op = operatorToString(query.operator)\n        const operatorExpression: QueryCommand | RegExp = query.operands[0]\n\n        if (isRegExp(operatorExpression)) {\n          return {\n            [query.fieldName as string]: {\n              [$op]: this.encodeRegExp(operatorExpression),\n            },\n          }\n        } else {\n          const subqueries =\n            this.encodeQuery(operatorExpression)[query.fieldName as string]\n          return {\n            [query.fieldName as string]: {\n              [$op]: subqueries,\n            },\n          }\n        }\n      }\n      default: {\n        const $op = operatorToString(query.operator)\n        if (query.operands.length === 1) {\n          const subquery = this.encodeQuery(query.operands[0])\n          return {\n            [$op]: subquery,\n          }\n        } else {\n          const subqueries = query.operands.map(this.encodeQuery.bind(this))\n          return {\n            [$op]: subqueries,\n          }\n        }\n      }\n    }\n  }\n\n  encodeQueryCommand(query: QueryCommand): IQueryCondition {\n    if (isComparisonCommand(query)) {\n      return this.encodeComparisonCommand(query)\n    } else {\n      // TODO: when more command types are added, change it here\n      return this.encodeComparisonCommand(query)\n    }\n  }\n\n  encodeComparisonCommand(query: QueryCommand): IQueryCondition {\n    if (query.fieldName === SYMBOL_UNSET_FIELD_NAME) {\n      throw new Error(\n        'Cannot encode a comparison command with unset field name'\n      )\n    }\n\n    const $op = operatorToString(query.operator)\n\n    switch (query.operator) {\n      case QUERY_COMMANDS_LITERAL.EQ:\n      case QUERY_COMMANDS_LITERAL.NEQ:\n      case QUERY_COMMANDS_LITERAL.LT:\n      case QUERY_COMMANDS_LITERAL.LTE:\n      case QUERY_COMMANDS_LITERAL.GT:\n      case QUERY_COMMANDS_LITERAL.GTE:\n      case QUERY_COMMANDS_LITERAL.ELEM_MATCH:\n      case QUERY_COMMANDS_LITERAL.EXISTS:\n      case QUERY_COMMANDS_LITERAL.SIZE:\n      case QUERY_COMMANDS_LITERAL.MOD: {\n        return {\n          [query.fieldName as string]: {\n            [$op]: encodeInternalDataType(query.operands[0]),\n          },\n        }\n      }\n      case QUERY_COMMANDS_LITERAL.IN:\n      case QUERY_COMMANDS_LITERAL.NIN:\n      case QUERY_COMMANDS_LITERAL.ALL: {\n        return {\n          [query.fieldName as string]: {\n            [$op]: encodeInternalDataType(query.operands),\n          },\n        }\n      }\n      case QUERY_COMMANDS_LITERAL.GEO_NEAR: {\n        const options: IGeoNearOptions = query.operands[0]\n        return {\n          [query.fieldName as string]: {\n            $nearSphere: {\n              $geometry: options.geometry.toJSON(),\n              $maxDistance: options.maxDistance,\n              $minDistance: options.minDistance,\n            },\n          },\n        }\n      }\n      case QUERY_COMMANDS_LITERAL.GEO_WITHIN: {\n        const options: IGeoWithinOptions = query.operands[0]\n        return {\n          [query.fieldName as string]: {\n            $geoWithin: {\n              $geometry: options.geometry.toJSON(),\n            },\n          },\n        }\n      }\n      case QUERY_COMMANDS_LITERAL.GEO_INTERSECTS: {\n        const options: IGeoIntersectsOptions = query.operands[0]\n        return {\n          [query.fieldName as string]: {\n            $geoIntersects: {\n              $geometry: options.geometry.toJSON(),\n            },\n          },\n        }\n      }\n      default: {\n        return {\n          [query.fieldName as string]: {\n            [$op]: encodeInternalDataType(query.operands[0]),\n          },\n        }\n      }\n    }\n  }\n\n  encodeQueryObject(query: IQueryCondition): IQueryCondition {\n    const flattened = flattenQueryObject(query)\n    for (const key in flattened) {\n      const val = flattened[key]\n      if (isLogicCommand(val)) {\n        flattened[key] = val._setFieldName(key)\n        const condition = this.encodeLogicCommand(flattened[key])\n        this.mergeConditionAfterEncode(flattened, condition, key)\n      } else if (isComparisonCommand(val)) {\n        flattened[key] = val._setFieldName(key)\n        const condition = this.encodeComparisonCommand(flattened[key])\n        this.mergeConditionAfterEncode(flattened, condition, key)\n      } else if (isConversionRequired(val)) {\n        flattened[key] = encodeInternalDataType(val)\n      }\n    }\n    return flattened\n  }\n\n  /**\n   * @description Merge 2 query conditions\n   * @example\n   *\n   * Normal cases:\n   *\n   * C1. merge top-level commands, such as $and and $or:\n   * let A = { $and: [{a: 1}] }\n   * let B = { $and: [{b: 2}] }\n   * merge(A, B) == { $and: [{a: 1}, {b: 2}] }\n   *\n   * C2. merge top-level fields\n   * let A = { a: { $gt: 1 } }\n   * let B = { a: { $lt: 5 } }\n   * merge(A, B) == { a: { $gt: 1, $lt: 5 } }\n   *\n   * Edge cases:\n   *\n   * E1. unmergable top-level fields\n   * Solution: override\n   * let A = { a: 1 }\n   * let B = { a: { $gt: 1 } }\n   * merge(A, B) == B\n   *\n   * @param query\n   * @param condition\n   * @param key\n   */\n  mergeConditionAfterEncode(\n    query: Record<string, any>,\n    condition: Record<string, any>,\n    key: string\n  ): void {\n    if (!condition[key]) {\n      delete query[key]\n    }\n\n    for (const conditionKey in condition) {\n      if (query[conditionKey]) {\n        if (isArray(query[conditionKey])) {\n          // bug\n          query[conditionKey] = query[conditionKey].concat(\n            condition[conditionKey]\n          )\n        } else if (isObject(query[conditionKey])) {\n          if (isObject(condition[conditionKey])) {\n            Object.assign(query, condition)\n          } else {\n            console.warn(\n              `unmergable condition, query is object but condition is ${getType(\n                condition\n              )}, can only overwrite`,\n              condition,\n              key\n            )\n            query[conditionKey] = condition[conditionKey]\n          }\n        } else {\n          console.warn(\n            `to-merge query is of type ${getType(query)}, can only overwrite`,\n            query,\n            condition,\n            key\n          )\n          query[conditionKey] = condition[conditionKey]\n        }\n      } else {\n        query[conditionKey] = condition[conditionKey]\n      }\n    }\n  }\n}\n\n/**\n\n{\n  prop: {\n    mem: _.gt(4).and(_.lt(8)),\n  },\n  price: _.lt(5000).and(_.gt(3000))\n}\n\n=>\n\n{\n  prop: {\n    mem: $and([\n      $gt(4),\n      $lt(8),\n    ])\n  },\n  price: $and([\n    $lt(5000),\n    $gt(3000),\n  ])\n}\n\n=>\n\n{\n  $and: [\n    {\n      'prop.mem': {\n        $gt: 4,\n        $lt: 8\n      }\n    },\n    {\n      'price': {\n        $gt: 3000,\n        $lt: 5000\n      }\n    }\n  ]\n}\n\n */\n\n/**\n\n_.or([\n  {\n    category: 'pc'\n    prop: {\n      mem: _.gt(8).and(_.lt(16)).or(_.eq(32))\n    },\n  },\n  {\n    category: 'pc'\n    prop: {\n      cpu: _.gt(3.2)\n    }\n  }\n])\n\n=>\n\n_.or([\n  {\n    category: 'pc',\n    prop: {\n      mem: $or([\n        $and([\n          $gt(8),\n          $lt(16),\n        ]),\n        $eq(32)\n      ])\n    }\n  },\n  {\n    category: 'pc',\n    prop: {\n      cpu: $gt(3.2)\n    }\n  }\n])\n\n=>\n\n{\n  $or: [\n    {\n      //...\n    },\n    {\n      //...\n    }\n  ]\n}\n\n=>\n\n{\n  $or: [\n    {\n      category: 'pc',\n      $or: [\n        $and: [\n          'prop.mem': {\n            $gt: 8,\n            $lt: 16,\n          },\n        ],\n        'prop.mem': {\n          $eq: 32\n        }\n      ]\n    },\n    {\n      category: 'pc',\n      'prop.cpu': {\n        $eq: 3.2\n      }\n    }\n  ]\n}\n\n */\n"
  },
  {
    "path": "packages/database-ql/src/serializer/update.ts",
    "content": "import {\n  UpdateCommand,\n  isUpdateCommand,\n  UPDATE_COMMANDS_LITERAL,\n} from '../commands/update'\nimport { LogicCommand } from '../commands/logic'\nimport { SYMBOL_UNSET_FIELD_NAME } from '../helper/symbol'\nimport { getType, isArray } from '../utils/type'\nimport { operatorToString } from '../operator-map'\nimport {\n  flattenQueryObject,\n  encodeInternalDataType,\n  mergeConditionAfterEncode,\n} from './common'\nexport type IQueryCondition = Record<string, any> | LogicCommand\n\nexport interface IUpdateCondition {\n  [key: string]: any\n}\n\ninterface IPushModifiers {\n  $each?: any[]\n  $position?: number\n}\n\nexport class UpdateSerializer {\n  private constructor() {}\n\n  static encode(query: IQueryCondition | UpdateCommand): IUpdateCondition {\n    const stringifier = new UpdateSerializer()\n    return stringifier.encodeUpdate(query)\n  }\n\n  encodeUpdate(query: IQueryCondition | UpdateCommand): IUpdateCondition {\n    if (isUpdateCommand(query)) {\n      return this.encodeUpdateCommand(query)\n    } else if (getType(query) === 'object') {\n      return this.encodeUpdateObject(query)\n    } else {\n      return query\n    }\n  }\n\n  encodeUpdateCommand(query: UpdateCommand): IQueryCondition {\n    if (query.fieldName === SYMBOL_UNSET_FIELD_NAME) {\n      throw new Error(\n        'Cannot encode a comparison command with unset field name'\n      )\n    }\n\n    switch (query.operator) {\n      case UPDATE_COMMANDS_LITERAL.PUSH:\n      case UPDATE_COMMANDS_LITERAL.PULL:\n      case UPDATE_COMMANDS_LITERAL.PULL_ALL:\n      case UPDATE_COMMANDS_LITERAL.POP:\n      case UPDATE_COMMANDS_LITERAL.SHIFT:\n      case UPDATE_COMMANDS_LITERAL.UNSHIFT:\n      case UPDATE_COMMANDS_LITERAL.ADD_TO_SET: {\n        return this.encodeArrayUpdateCommand(query)\n      }\n      default: {\n        return this.encodeFieldUpdateCommand(query)\n      }\n    }\n  }\n\n  encodeFieldUpdateCommand(query: UpdateCommand): IQueryCondition {\n    const $op = operatorToString(query.operator)\n\n    switch (query.operator) {\n      case UPDATE_COMMANDS_LITERAL.REMOVE: {\n        return {\n          [$op]: {\n            [query.fieldName as string]: '',\n          },\n        }\n      }\n      default: {\n        return {\n          [$op]: {\n            [query.fieldName as string]: query.operands[0],\n          },\n        }\n      }\n    }\n  }\n\n  encodeArrayUpdateCommand(query: UpdateCommand): IQueryCondition {\n    const $op = operatorToString(query.operator)\n\n    switch (query.operator) {\n      case UPDATE_COMMANDS_LITERAL.PUSH: {\n        let modifiers\n        if (isArray(query.operands)) {\n          modifiers = {\n            $each: query.operands.map(encodeInternalDataType),\n          }\n        } else {\n          modifiers = query.operands\n        }\n\n        return {\n          [$op]: {\n            [query.fieldName as string]: modifiers,\n          },\n        }\n      }\n      case UPDATE_COMMANDS_LITERAL.UNSHIFT: {\n        const modifiers: IPushModifiers = {\n          $each: query.operands.map(encodeInternalDataType),\n          $position: 0,\n        }\n\n        return {\n          [$op]: {\n            [query.fieldName as string]: modifiers,\n          },\n        }\n      }\n      case UPDATE_COMMANDS_LITERAL.POP: {\n        return {\n          [$op]: {\n            [query.fieldName as string]: 1,\n          },\n        }\n      }\n      case UPDATE_COMMANDS_LITERAL.SHIFT: {\n        return {\n          [$op]: {\n            [query.fieldName as string]: -1,\n          },\n        }\n      }\n      default: {\n        return {\n          [$op]: {\n            [query.fieldName as string]: encodeInternalDataType(query.operands),\n          },\n        }\n      }\n    }\n  }\n\n  encodeUpdateObject(query: Record<string, any>): IQueryCondition {\n    const flattened = flattenQueryObject(query)\n    for (const key in flattened) {\n      if (/^\\$/.test(key)) continue\n\n      let val = flattened[key]\n      if (isUpdateCommand(val)) {\n        flattened[key] = val._setFieldName(key)\n        const condition = this.encodeUpdateCommand(flattened[key])\n        mergeConditionAfterEncode(flattened, condition, key)\n      } else {\n        // $set\n        flattened[key] = val = encodeInternalDataType(val)\n        const $setCommand = new UpdateCommand(\n          UPDATE_COMMANDS_LITERAL.SET,\n          [val],\n          key\n        )\n        const condition = this.encodeUpdateCommand($setCommand)\n        mergeConditionAfterEncode(flattened, condition, key)\n      }\n    }\n    return flattened\n  }\n}\n\n/**\n\n{\n  a: {\n    a1: _.set({ a11: 'test' }),\n    a2: _.inc(10)\n  },\n}\n\n=>\n\n{\n  a: {\n    a1: $set({ a11: 'test' }),\n    a2: $inc(10)\n  }\n}\n\n=>\n\n{\n  'a.a1': $set({ a11: 'test' }),\n  'a.a2': $inc(10)\n}\n\n=>\n\n{\n  $set: {\n    'a.a1': {\n      a11: 'test'\n    }\n  },\n  $inc: {\n    'a.a2': 10\n  }\n}\n\n*/\n"
  },
  {
    "path": "packages/database-ql/src/serverDate/index.ts",
    "content": "import { SYMBOL_SERVER_DATE } from '../helper/symbol'\n\nexport class ServerDate {\n  readonly offset: number\n\n  constructor({ offset = 0 } = {}) {\n    this.offset = offset\n  }\n\n  get _internalType() {\n    return SYMBOL_SERVER_DATE\n  }\n\n  parse() {\n    return {\n      $date: {\n        offset: this.offset,\n      },\n    }\n  }\n}\n\n/**\n * @deprecated This method is deprecated, not implemented in server side\n * @param opt\n * @returns\n */\nexport function ServerDateConstructor(opt?: { offset: number }) {\n  return new ServerDate(opt)\n}\n"
  },
  {
    "path": "packages/database-ql/src/util.ts",
    "content": "import { Binary, EJSON, ObjectId } from 'bson'\nimport { FieldType } from './constant'\nimport {\n  Point,\n  LineString,\n  Polygon,\n  MultiPoint,\n  MultiLineString,\n  MultiPolygon,\n} from './geo/index'\nimport { ServerDate } from './serverDate/index'\n\ninterface DocumentModel {\n  _id: string\n}\n\n/**\n * 工具模块\n *\n */\nexport class Util {\n  /**\n   * 格式化后端返回的文档数据\n   *\n   * @param document - 后端文档数据\n   */\n  public static formatResDocumentData = (documents: DocumentModel[]) => {\n    return documents.map((document) => {\n      return Util.formatField(document)\n    })\n  }\n\n  /**\n   * 格式化字段\n   *\n   * 主要是递归数组和对象，把地理位置和日期时间转换为js对象。\n   *\n   * @param document\n   * @internal\n   */\n  public static formatField = (document) => {\n    const keys = Object.keys(document)\n    let protoField = {}\n\n    // 数组递归的情况\n    if (Array.isArray(document)) {\n      protoField = []\n    }\n\n    keys.forEach((key) => {\n      const item = document[key]\n      const type = Util.whichType(item)\n      let realValue\n      switch (type) {\n        case FieldType.GeoPoint:\n          realValue = new Point(item.coordinates[0], item.coordinates[1])\n          break\n        case FieldType.GeoLineString:\n          realValue = new LineString(\n            item.coordinates.map((point) => new Point(point[0], point[1]))\n          )\n          break\n        case FieldType.GeoPolygon:\n          realValue = new Polygon(\n            item.coordinates.map(\n              (line) =>\n                new LineString(line.map(([lng, lat]) => new Point(lng, lat)))\n            )\n          )\n          break\n        case FieldType.GeoMultiPoint:\n          realValue = new MultiPoint(\n            item.coordinates.map((point) => new Point(point[0], point[1]))\n          )\n          break\n        case FieldType.GeoMultiLineString:\n          realValue = new MultiLineString(\n            item.coordinates.map(\n              (line) =>\n                new LineString(line.map(([lng, lat]) => new Point(lng, lat)))\n            )\n          )\n          break\n        case FieldType.GeoMultiPolygon:\n          realValue = new MultiPolygon(\n            item.coordinates.map(\n              (polygon) =>\n                new Polygon(\n                  polygon.map(\n                    (line) =>\n                      new LineString(\n                        line.map(([lng, lat]) => new Point(lng, lat))\n                      )\n                  )\n                )\n            )\n          )\n          break\n        case FieldType.Timestamp:\n          realValue = new Date(item.$timestamp * 1000)\n          break\n        case FieldType.Object:\n        case FieldType.Array:\n          realValue = Util.formatField(item)\n          break\n        case FieldType.ServerDate:\n          realValue = new Date(item.$date)\n          break\n        case FieldType.ObjectId:\n          realValue = EJSON.deserialize(item)\n          break\n        case FieldType.Binary:\n          realValue = EJSON.deserialize(item)\n          break\n        default:\n          realValue = item\n      }\n\n      if (Array.isArray(protoField)) {\n        protoField.push(realValue)\n      } else {\n        protoField[key] = realValue\n      }\n    })\n    return protoField\n  }\n\n  /**\n   * 查看数据类型\n   *\n   * @param obj\n   */\n  public static whichType = (obj: any): string => {\n    let type = Object.prototype.toString.call(obj).slice(8, -1)\n\n    if (type === FieldType.Timestamp) {\n      return FieldType.BsonDate\n    }\n\n    if (type === FieldType.Object) {\n      if (obj instanceof Point) {\n        return FieldType.GeoPoint\n      } else if (obj instanceof Date) {\n        return FieldType.Timestamp\n      } /* else if (obj instanceof Command) {\n        return FieldType.Command;\n      } */ else if (obj instanceof ServerDate) {\n        return FieldType.ServerDate\n      } else if (obj instanceof ObjectId) {\n        return FieldType.ObjectId\n      } else if (obj instanceof Binary) {\n        return FieldType.Binary\n      }\n\n      if (obj.$timestamp) {\n        type = FieldType.Timestamp\n      } else if (obj.$date) {\n        type = FieldType.ServerDate\n      } else if (Point.validate(obj)) {\n        type = FieldType.GeoPoint\n      } else if (LineString.validate(obj)) {\n        type = FieldType.GeoLineString\n      } else if (Polygon.validate(obj)) {\n        type = FieldType.GeoPolygon\n      } else if (MultiPoint.validate(obj)) {\n        type = FieldType.GeoMultiPoint\n      } else if (MultiLineString.validate(obj)) {\n        type = FieldType.GeoMultiLineString\n      } else if (MultiPolygon.validate(obj)) {\n        type = FieldType.GeoMultiPolygon\n      } else if (obj.$oid) {\n        type = FieldType.ObjectId\n      } else if (obj.$binary) {\n        type = FieldType.Binary\n      }\n    }\n    return type\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/src/utils/symbol.ts",
    "content": "const _symbols: { target: any; instance: InternalSymbol }[] = []\nconst __internalMark__ = {}\n\nclass HiddenSymbol {\n  constructor(target: any) {\n    Object.defineProperties(this, {\n      target: {\n        enumerable: false,\n        writable: false,\n        configurable: false,\n        value: target,\n      },\n    })\n  }\n}\n\nexport class InternalSymbol extends HiddenSymbol {\n  constructor(target: any, __mark__: any) {\n    if (__mark__ !== __internalMark__) {\n      throw new TypeError(\n        'InternalSymbol cannot be constructed with new operator'\n      )\n    }\n\n    super(target)\n  }\n\n  static for(target: any) {\n    for (let i = 0, len = _symbols.length; i < len; i++) {\n      if (_symbols[i].target === target) {\n        return _symbols[i].instance\n      }\n    }\n\n    const symbol = new InternalSymbol(target, __internalMark__)\n\n    _symbols.push({\n      target,\n      instance: symbol,\n    })\n\n    return symbol\n  }\n}\n\nexport default InternalSymbol\n"
  },
  {
    "path": "packages/database-ql/src/utils/type.ts",
    "content": "import { Binary, ObjectId } from 'bson'\nimport { InternalSymbol } from './symbol'\n\nexport const getType = (x: any): string =>\n  Object.prototype.toString.call(x).slice(8, -1).toLowerCase()\n\nexport const isObject = <T extends object>(x: any): x is T =>\n  getType(x) === 'object'\n\nexport const isString = (x: any): x is string => getType(x) === 'string'\n\nexport const isNumber = (x: any): x is number => getType(x) === 'number'\n\nexport const isPromise = <T extends Promise<any> = Promise<any>>(\n  x: any\n): x is T => getType(x) === 'promise'\n\ntype AnyFn = (...args: any[]) => any\nexport const isFunction = <T extends AnyFn = AnyFn>(x: any): x is T =>\n  typeof x === 'function'\n\nexport const isArray = <T extends any[] = any[]>(x: any): x is T =>\n  Array.isArray(x)\n\nexport const isDate = (x: any): x is Date => getType(x) === 'date'\n\nexport const isRegExp = (x: any): x is RegExp => getType(x) === 'regexp'\n\n/**\n * Internal Object can be:  `LogicCommand` | `QueryCommand` | `UpdateCommand`\n * @param x\n * @returns\n */\nexport const isInternalObject = (x: any): boolean =>\n  x && x._internalType instanceof InternalSymbol\n\nexport const isPlainObject = (obj: any): obj is object => {\n  if (typeof obj !== 'object' || obj === null) return false\n\n  let proto = obj\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto)\n  }\n\n  return Object.getPrototypeOf(obj) === proto\n}\n\nexport const isObjectId = (x: any): x is ObjectId => {\n  return x?._bsontype === 'ObjectID' || x?._bsontype === 'ObjectId'\n}\n\nexport const isBinary = (x: any): x is Binary => {\n  return x?._bsontype === 'Binary'\n}\n"
  },
  {
    "path": "packages/database-ql/src/utils/utils.ts",
    "content": "import { EJSON } from 'bson'\nimport { isObject } from './type'\n\nexport const sleep = (ms = 0) => new Promise((r) => setTimeout(r, ms))\n\nconst counters: Record<string, number> = {}\n\nexport const autoCount = (domain = 'any'): number => {\n  if (!counters[domain]) {\n    counters[domain] = 0\n  }\n  return counters[domain]++\n}\n\n// 递归过滤对象中的undefiend字段\nexport const filterUndefined = (o) => {\n  // 如果不是对象类型，直接返回\n  if (!isObject(o)) {\n    return o\n  }\n\n  for (const key in o) {\n    if (o[key] === undefined) {\n      delete o[key]\n    } else if (isObject(o[key])) {\n      o[key] = filterUndefined(o[key])\n    }\n  }\n\n  return o\n}\n\nexport const stringifyByEJSON = (params) => {\n  // params中删除undefined的key\n  params = filterUndefined(params)\n\n  return EJSON.stringify(params, { relaxed: false })\n}\n\nexport const parseByEJSON = (params) => {\n  return EJSON.parse(params)\n}\n"
  },
  {
    "path": "packages/database-ql/src/validate.ts",
    "content": "import {\n  ErrorCode,\n  WhereFilterOp,\n  WhereFilterOpList,\n  OrderByDirection,\n  OrderDirectionList,\n  FieldType,\n} from './constant'\nimport { Util } from './util'\nimport { getType } from './utils/type'\n\n/**\n * 校验模块\n *\n * @author haroldhu\n * @internal\n */\nexport class Validate {\n  /**\n   *\n   * @static\n   * @param {StageName:{}|string} stage\n   * @returns {Boolean}\n   * @memberof Validate\n   */\n  static isValidAggregation(stage: object): boolean {\n    if (Object.keys(stage).length !== 1) {\n      throw new Error('aggregation stage must have one key')\n    }\n    return true\n  }\n\n  /**\n   * 检测地址位置的点\n   *\n   * @param point   - 经纬度\n   * @param degree  - 数值\n   */\n  static isGeopoint(point: 'latitude' | 'longitude', degree: number) {\n    if (Util.whichType(degree) !== FieldType.Number) {\n      throw new Error('Geo Point must be number type')\n    }\n\n    // 位置的绝对值\n    const degreeAbs = Math.abs(degree)\n\n    if (point === 'latitude' && degreeAbs > 90) {\n      throw new Error('latitude should be a number ranges from -90 to 90')\n    } else if (point === 'longitude' && degreeAbs > 180) {\n      throw new Error('longitude should be a number ranges from -180 to 180')\n    }\n    return true\n  }\n\n  /**\n   * 参数是否为整数\n   *\n   * @param param - 要验证的参数名\n   * @param num   - 要验证的参数值\n   */\n  static isInteger(param: string, num: number): boolean {\n    if (!Number.isInteger(num)) {\n      throw new Error(param + ErrorCode.IntegerError)\n    }\n    return true\n  }\n\n  static isProjection(param: string, value: object): boolean {\n    // 遍历value 的 属性值， 只有1，0，ProjectionOperator 三种类型\n    if (getType(value) !== 'object') {\n      throw new Error(`${param} projection must be an object`)\n    }\n\n    for (const key in value) {\n      const subValue = value[key]\n      if (getType(subValue) === 'number') {\n        if (subValue !== 0 && subValue !== 1) {\n          throw new Error(\n            'if the value in projection is of number, it must be 0 or 1'\n          )\n        }\n      } else if (getType(subValue) === 'object') {\n      } else {\n        throw new Error('invalid projection')\n      }\n    }\n\n    return true\n  }\n\n  static isOrder(param: string, value: Record<string, any>): boolean {\n    if (getType(value) !== 'object') {\n      throw new Error(`${param} order must be an object`)\n    }\n\n    for (const key in value) {\n      const subValue = value[key]\n      if (subValue !== 1 && subValue !== -1) {\n        throw new Error(`order value must be 1 or -1`)\n      }\n    }\n    return true\n  }\n\n  /**\n   * 是否为合法的排序字符\n   *\n   * @param direction\n   */\n  static isFieldOrder(direction: OrderByDirection): boolean {\n    if (OrderDirectionList.indexOf(direction) === -1) {\n      throw new Error(ErrorCode.DirectionError)\n    }\n    return true\n  }\n\n  /**\n   * 是否为合法的字段地址\n   *\n   * 只能是连续字段名+英文点号\n   *\n   * @param path\n   */\n  static isFieldPath(path: string): boolean {\n    if (!/^[a-zA-Z0-9-_\\.]/.test(path)) {\n      throw new Error()\n    }\n    return true\n  }\n\n  /**\n   * 是否为合法操作符\n   *\n   * @param op\n   */\n  static isOperator(op: WhereFilterOp): boolean {\n    if (WhereFilterOpList.indexOf(op) === -1) {\n      throw new Error(ErrorCode.OpStrError)\n    }\n    return true\n  }\n\n  /**\n   * 集合名称是否正确\n   *\n   * 只能以数字字母开头\n   * 可以包含字母数字、减号、下划线\n   * 最大长度32位\n   *\n   * @param name\n   */\n  static isCollName(name: string): boolean {\n    if (!/^[a-zA-Z0-9]([a-zA-Z0-9-_]){1,32}$/.test(name)) {\n      throw new Error(ErrorCode.CollNameError)\n    }\n    return true\n  }\n}\n"
  },
  {
    "path": "packages/database-ql/tests/units/_utils.js",
    "content": "const { Db } = require('../../dist/commonjs/index')\nconst Actions = {\n  add: 'database.addDocument',\n  get: 'database.queryDocument',\n  update: 'database.updateDocument',\n  count: 'database.countDocument',\n  remove: 'database.deleteDocument',\n  aggregate: 'database.aggregateDocuments',\n}\n\nclass MockRequest {\n  action = null\n  params = null\n\n  /**\n   *\n   * @param {string} action\n   * @param {any} params\n   * @returns\n   */\n  async send(action, params) {\n    let data = {}\n    this.action = action\n    this.params = params\n\n    if (action === Actions.add) {\n      data = { _id: '0', insertedCount: 0 }\n    }\n\n    if (action === Actions.get || action === Actions.aggregate) {\n      data = { list: [] }\n    }\n\n    if (action === Actions.count) {\n      data = { total: 0 }\n    }\n\n    if (action === Actions.update) {\n      data = { updated: 1, upsert_id: '0' }\n    }\n\n    if (action === Actions.remove) {\n      data = { deleted: 1 }\n    }\n\n    if (action === Actions.add) {\n      data = { _id: '0', insertedCount: 1 }\n    }\n\n    return {\n      code: 0,\n      requestId: 'test_req_id',\n      data,\n    }\n  }\n}\n\n// mock db\nfunction getDb() {\n  const req = new MockRequest()\n  const db = new Db({ request: req })\n  return { db, req }\n}\n\nmodule.exports = {\n  MockRequest,\n  Actions,\n  getDb,\n}\n"
  },
  {
    "path": "packages/database-ql/tests/units/aggregate/index.test.js",
    "content": "const { Actions, getDb } = require('../_utils')\nconst assert = require('assert')\nconst { ObjectId } = require('bson')\n\ndescribe('db-ql(unit): db::aggregate()', () => {\n  it('aggregate() with raw pipeline should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db\n      .collection('tasks')\n      .aggregate([\n        {\n          $match: {\n            name: 'laf',\n          },\n        },\n        {\n          $lookup: {\n            from: 'users',\n            localField: 'uid',\n            foreignField: '_id',\n            as: 'user',\n          },\n        },\n      ])\n      .end()\n\n    // console.log(res, req.params)\n    assert.strictEqual(req.action, Actions.aggregate)\n    assert.strictEqual(req.params.collectionName, 'tasks')\n    assert.strictEqual(req.params.stages.length, 2)\n\n    assert.ok(!res.code)\n    assert.ok(res.data instanceof Array)\n  })\n\n  it('aggregate() with empty should be rejected', async () => {\n    const { db, req } = getDb()\n    await db\n      .collection('tasks')\n      .aggregate([])\n      .end()\n      .catch((err) => {\n        assert.equal(err.toString(), 'Error: Aggregation stage cannot be empty')\n      })\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/aggregate/lookup.test.js",
    "content": "const { Actions, getDb } = require('../_utils')\nconst assert = require('assert')\nconst { ObjectId } = require('bson')\n\ndescribe('db-ql(unit): db::aggregate()::$lookup', () => {\n  it('lookup() should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db\n      .collection('tasks')\n      .aggregate()\n      .lookup({\n        from: 'users',\n        localField: 'uid',\n        foreignField: '_id',\n        as: 'user',\n      })\n      .end()\n\n    // console.log(res, req.params)\n    assert.strictEqual(req.action, Actions.aggregate)\n    assert.strictEqual(req.params.collectionName, 'tasks')\n    assert.strictEqual(req.params.stages.length, 1)\n\n    const { stageKey, stageValue } = req.params.stages[0]\n    assert.ok(stageKey, '$lookup')\n    assert.ok(stageValue.includes(`\"from\":\"users\"`))\n    assert.ok(stageValue.includes(`\"localField\":\"uid\"`))\n    assert.ok(stageValue.includes(`\"foreignField\":\"_id\"`))\n    assert.ok(stageValue.includes(`\"as\":\"user\"`))\n\n    assert.ok(!res.code)\n    assert.ok(res.data instanceof Array)\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/aggregate/match.test.js",
    "content": "const { Actions, getDb } = require('../_utils')\nconst assert = require('assert')\nconst { ObjectId, Binary, EJSON } = require('bson')\n\ndescribe('db-ql(unit): db::aggregate()::$match', () => {\n  it('match() should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db\n      .collection('tasks')\n      .aggregate()\n      .match({\n        name: 'laf',\n        uid: new ObjectId(),\n        created_at: new Date(),\n        avatar: new Binary(Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72])),\n      })\n      .end()\n\n    assert.strictEqual(req.action, Actions.aggregate)\n    assert.strictEqual(req.params.collectionName, 'tasks')\n    assert.strictEqual(req.params.stages.length, 1)\n\n    const { stageKey, stageValue } = req.params.stages[0]\n    assert.ok(stageKey, '$match')\n    assert.ok(stageValue.includes(`\"name\":\"laf\"`))\n    assert.ok(stageValue.includes(`\"uid\":{\"$oid\":`))\n    assert.ok(stageValue.includes(`\"created_at\":{\"$date\":`))\n    assert.ok(stageValue.includes(`\"avatar\":{\"$binary\":`))\n\n    assert.ok(!res.code)\n    assert.ok(res.data instanceof Array)\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/doc/create.test.js",
    "content": "const { Actions, getDb } = require('../_utils')\nconst assert = require('assert')\nconst { ObjectId, Binary } = require('bson')\n\ndescribe('db-ql(unit): db::doc().create()', () => {\n  it('create() should be ok', async () => {\n    const { db, req } = getDb()\n\n    const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72])\n    const res = await db\n      .collection('tasks')\n      .doc('nonsense_id')\n      .create({\n        uid: new ObjectId(),\n        name: 'laf',\n        created_at: new Date(),\n        pic: new Binary(buf),\n      })\n\n    assert.strictEqual(req.action, Actions.add)\n    assert.strictEqual(req.params.collectionName, 'tasks')\n    assert.equal(req.params.multi, false)\n    assert.equal(req.params.query, undefined)\n\n    // validate data\n    assert.ok(req.params.data.uid.$oid)\n    assert.strictEqual(req.params.data.name, 'laf')\n    assert.ok(req.params.data.created_at.$date)\n    assert.ok(req.params.data.pic.$binary.base64)\n    assert.ok(req.params.data.pic.$binary.subType)\n    assert.equal(req.params.data.pic.$binary.base64, buf.toString('base64'))\n\n    assert.ok(!res.code)\n    assert.ok(res.insertedCount === 1)\n    assert.equal(res.id, '0')\n  })\n\n  it('create() with empty object should be rejected', async () => {\n    const { db, req } = getDb()\n\n    const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72])\n    await db\n      .collection('tasks')\n      .doc('nonsense_id')\n      .create({})\n      .catch((err) => {\n        assert.equal(err.toString(), 'Error: data cannot be empty object')\n      })\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/doc/get.test.js",
    "content": "const { Actions, getDb } = require('../_utils')\nconst assert = require('assert')\nconst { ObjectId } = require('bson')\n\ndescribe('db-ql(unit): db::doc().get()', () => {\n  it('get() with string id should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db.collection('tasks').doc('test_id').get()\n\n    assert.strictEqual(req.action, Actions.get)\n    assert.strictEqual(req.params.collectionName, 'tasks')\n    assert.equal(req.params.limit, 1)\n    assert.deepEqual(req.params.query, { _id: 'test_id' })\n\n    assert.ok(!res.code)\n    assert.ok(res.data === null)\n  })\n\n  it('get() with ObjectId should be ok', async () => {\n    const { db, req } = getDb()\n\n    const id = new ObjectId()\n    const res = await db.collection('tasks').doc(id).get()\n\n    assert.deepEqual(req.params.query, { _id: { $oid: id.toHexString() } })\n  })\n\n  it('field().get() with array projection should be ok', async () => {\n    const { db, req } = getDb()\n\n    const res = await db\n      .collection('tasks')\n      .doc('test_id')\n      .field(['name', 'age', 'gender'])\n      .get()\n\n    assert.deepEqual(req.params.query, { _id: 'test_id' })\n    assert.deepEqual(req.params.query, { _id: 'test_id' })\n    assert.deepEqual(req.params.projection, { age: 1, gender: 1, name: 1 })\n  })\n\n  it('field().get() with object projection should be ok', async () => {\n    const { db, req } = getDb()\n\n    const res = await db\n      .collection('tasks')\n      .doc('test_id')\n      .field({ name: 0, age: 0, gender: 0 })\n      .get()\n\n    assert.deepEqual(req.params.query, { _id: 'test_id' })\n    assert.deepEqual(req.params.query, { _id: 'test_id' })\n    assert.deepEqual(req.params.projection, { age: 0, gender: 0, name: 0 })\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/doc/update.test.js",
    "content": "const { Actions, getDb } = require('../_utils')\nconst assert = require('assert')\nconst { ObjectId, Binary } = require('bson')\n\ndescribe('db-ql(unit): db::doc().update()', () => {\n  it('update() should be ok', async () => {\n    const { db, req } = getDb()\n\n    const uid = new ObjectId()\n    const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72])\n    const res = await db\n      .collection('tasks')\n      .doc('test_id')\n      .update({\n        uid: uid,\n        name: 'laf',\n        created_at: new Date(),\n        pic: new Binary(buf),\n      })\n\n    assert.strictEqual(req.action, Actions.update)\n    assert.strictEqual(req.params.collectionName, 'tasks')\n    assert.equal(req.params.multi, false)\n    assert.equal(req.params.merge, true)\n    assert.equal(req.params.upsert, false)\n    assert.deepEqual(req.params.query, { _id: 'test_id' })\n\n    // check data\n    assert.deepEqual(req.params.data.$set.uid, { $oid: uid.toHexString() })\n    assert.ok(req.params.data.$set.created_at.$date)\n    assert.equal(\n      req.params.data.$set.pic.$binary.base64,\n      buf.toString('base64')\n    )\n\n    // check result\n    assert.ok(!res.code)\n    assert.equal(res.updated, 1)\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/get/field.test.js",
    "content": "const { getDb } = require('../_utils')\nconst assert = require('assert')\n\ndescribe('db-ql(unit): db::field()', () => {\n  it('field(value: string[]) should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db.collection('tasks').field(['name', 'gender']).get()\n\n    assert.deepEqual(req.params.projection, { name: 1, gender: 1 })\n  })\n\n  it('field(value: { [key: string]: 1 }) should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db.collection('tasks').field({ name: 1, gender: 1 }).get()\n\n    assert.deepEqual(req.params.projection, { name: 1, gender: 1 })\n  })\n\n  it('field(value: { [key: string]: 0 }) should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db.collection('tasks').field({ name: 0, gender: 0 }).get()\n\n    assert.deepEqual(req.params.projection, { name: 0, gender: 0 })\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/get/get.test.js",
    "content": "const { Actions, getDb } = require('../_utils')\nconst assert = require('assert')\n\ndescribe('db-ql(unit): db::get()', () => {\n  it('get() without query options should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db.collection('tasks').get()\n\n    assert.strictEqual(req.action, Actions.get)\n    assert.strictEqual(req.params.collectionName, 'tasks')\n    assert.equal(req.params.limit, 100)\n    assert.deepEqual(req.params.query, undefined)\n\n    assert.ok(!res.code)\n    assert.ok(res.data instanceof Array)\n  })\n\n  it('getOne() without query options should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db.collection('tasks').getOne()\n\n    assert.strictEqual(req.action, Actions.get)\n    assert.strictEqual(req.params.collectionName, 'tasks')\n    assert.equal(req.params.limit, 1)\n    assert.deepEqual(req.params.query, undefined)\n\n    assert.ok(!res.code)\n    assert.ok(res.data === null)\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/get/limit.skip.test.js",
    "content": "const { getDb } = require('../_utils')\nconst assert = require('assert')\n\ndescribe('db-ql(unit): db::limit() & skip()', () => {\n  it('get() default limit is 100 should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db.collection('tasks').get()\n\n    assert.equal(req.params.limit, 100)\n  })\n\n  it('limit().skip() should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db.collection('tasks').limit(33).skip(77).get()\n\n    assert.strictEqual(req.params.limit, 33)\n    assert.strictEqual(req.params.offset, 77)\n  })\n\n  it('where({ filters }) with limit() skip() should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db\n      .collection('tasks')\n      .where({\n        name: 'laf',\n        status: 1,\n      })\n      .limit(555)\n      .skip(999)\n      .get()\n\n    assert.strictEqual(req.params.limit, 555)\n    assert.strictEqual(req.params.offset, 999)\n    assert.deepEqual(req.params.query, { name: 'laf', status: 1 })\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/get/orderby.test.js",
    "content": "const { getDb } = require('../_utils')\nconst assert = require('assert')\n\ndescribe('db-ql(unit): db::orderBy()', () => {\n  it('orderBy() should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db\n      .collection('tasks')\n      .orderBy('age', 'asc')\n      .orderBy('score', 'desc')\n      .get()\n\n    assert.ok(req.params.order.length === 2)\n    assert.deepEqual(req.params.order[0], { field: 'age', direction: 'asc' })\n    assert.deepEqual(req.params.order[1], {\n      field: 'score',\n      direction: 'desc',\n    })\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/get/page.test.js",
    "content": "const { getDb } = require('../_utils')\nconst assert = require('assert')\n\ndescribe('db-ql(unit): db::page()', () => {\n  it('page() should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db.collection('tasks').page().get()\n\n    // console.log(req.params)\n    assert.equal(req.params.limit, 10)\n    assert.equal(req.params.count, true)\n  })\n\n  it('page({ current: 2, size: 10}) should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db\n      .collection('tasks')\n      .page({ current: 3, size: 20 })\n      .get()\n\n    // console.log(req.params)\n    assert.equal(req.params.offset, 40)\n    assert.equal(req.params.limit, 20)\n    assert.equal(req.params.count, true)\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/get/where.test.js",
    "content": "const assert = require('assert')\nconst { ObjectId } = require('bson')\nconst { getDb } = require('../_utils')\n\ndescribe('db-ql(unit): db::where()', () => {\n  it('where({}) should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db.collection('tasks').where({}).get()\n\n    assert.deepEqual(req.params.query, {})\n  })\n\n  it('where({ filters }) should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db\n      .collection('tasks')\n      .where({\n        name: 'laf',\n        status: 1,\n      })\n      .get()\n\n    assert.deepEqual(req.params.query, { name: 'laf', status: 1 })\n  })\n\n  it('where() with date type should be ok', async () => {\n    const { db, req } = getDb()\n    const current = new Date()\n    const res = await db\n      .collection('tasks')\n      .where({\n        name: 'laf',\n        created_at: current,\n      })\n      .get()\n\n    assert.strictEqual(req.params.query.name, 'laf')\n    assert.deepEqual(req.params.query.created_at, {\n      $date: current.toISOString(),\n    })\n  })\n\n  it('where() with RegExp should be ok', async () => {\n    const { db, req } = getDb()\n    const res = await db\n      .collection('tasks')\n      .where({\n        reg: /^abc.*$/,\n        reg2: /^abc.*$/i,\n        reg3: {\n          $regex: '^abc.*$',\n          $options: '',\n        },\n        reg4: db.RegExp({ regexp: '^abc.*$' }),\n        reg5: new RegExp('^abc.*$', 'i'),\n      })\n      .get()\n\n    assert.deepEqual(req.params.query.reg, {\n      $regularExpression: { pattern: '^abc.*$', options: '' },\n    })\n    assert.deepEqual(req.params.query.reg2, {\n      $regularExpression: { pattern: '^abc.*$', options: 'i' },\n    })\n    assert.deepEqual(req.params.query.reg3, {\n      $regex: '^abc.*$',\n      $options: '',\n    })\n    assert.deepEqual(req.params.query.reg4, {\n      $regex: '^abc.*$',\n      $options: '',\n    })\n    assert.deepEqual(req.params.query.reg5, {\n      $regularExpression: { pattern: '^abc.*$', options: 'i' },\n    })\n  })\n\n  it('where() with ObjectId should be ok', async () => {\n    const { db, req } = getDb()\n    const id = new ObjectId()\n    const res = await db\n      .collection('tasks')\n      .where({\n        _id: id,\n      })\n      .get()\n\n    assert.deepEqual(req.params.query._id, { $oid: id.toHexString() })\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/remove/remove.test.js",
    "content": "const { Actions, getDb } = require('../_utils')\nconst assert = require('assert')\n// const { ObjectId, Binary } = require('bson')\n\ndescribe('db-ql(unit): db::remove()', () => {\n  it('remove() should be ok', async () => {\n    const { db, req } = getDb()\n\n    // const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72])\n    // const uid = new ObjectId()\n    const res = await db.collection('tasks').where({ name: 'laf' }).remove()\n\n    assert.strictEqual(req.action, Actions.remove)\n    assert.strictEqual(req.params.collectionName, 'tasks')\n\n    // check options\n    // console.log(req.params, res)\n    assert.equal(req.params.multi, false)\n\n    // check query\n    assert.deepEqual(req.params.query, { name: 'laf' })\n\n    // check result\n    assert.ok(!res.code)\n    assert.equal(res.deleted, 1)\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tests/units/update/update.test.js",
    "content": "const { Actions, getDb } = require('../_utils')\nconst assert = require('assert')\nconst { ObjectId, Binary } = require('bson')\n\ndescribe('db-ql(unit): db::update()', () => {\n  it('update() should be ok', async () => {\n    const { db, req } = getDb()\n\n    const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72])\n    const uid = new ObjectId()\n    const res = await db\n      .collection('tasks')\n      .where({ name: 'laf' })\n      .update({\n        uid: uid,\n        created_at: new Date(),\n        pic: new Binary(buf),\n      })\n\n    assert.strictEqual(req.action, Actions.update)\n    assert.strictEqual(req.params.collectionName, 'tasks')\n\n    // check options\n    assert.equal(req.params.multi, false)\n    assert.equal(req.params.merge, true)\n    assert.equal(req.params.upsert, false)\n\n    // check query\n    assert.deepEqual(req.params.query, { name: 'laf' })\n\n    // check data\n    assert.deepEqual(req.params.data.$set.uid, { $oid: uid.toHexString() })\n    assert.ok(req.params.data.$set.created_at.$date)\n    assert.equal(\n      req.params.data.$set.pic.$binary.base64,\n      buf.toString('base64')\n    )\n\n    // check result\n    assert.ok(!res.code)\n    assert.equal(res.updated, 1)\n  })\n})\n"
  },
  {
    "path": "packages/database-ql/tsconfig.esm.json",
    "content": "{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"charset\": \"utf8\",\n    \"declaration\": true,\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true,\n    \"importHelpers\": false,\n    \"module\": \"es6\",\n    // \"declarationDir\": \"types\",\n    \"noEmitOnError\": false,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": false,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"outDir\": \"dist/esm\",\n    \"pretty\": true,\n    \"removeComments\": false,\n    \"stripInternal\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true,\n    \"moduleResolution\": \"node\",\n    \"target\": \"es5\",\n    \"lib\": [\n      \"es2015\",\n      \"es6\",\n      \"dom\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*\"\n  ],\n  \"exclude\": [\n    // \"node_modules\",\n    \"test\"\n  ]\n}"
  },
  {
    "path": "packages/database-ql/tsconfig.json",
    "content": "{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"charset\": \"utf8\",\n    \"declaration\": true,\n    \"declarationMap\": false,\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true,\n    \"importHelpers\": false,\n    \"module\": \"commonjs\",\n    // \"declarationDir\": \"types\",\n    \"noEmitOnError\": false,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": false,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"outDir\": \"dist/commonjs\",\n    \"pretty\": true,\n    \"removeComments\": false,\n    \"stripInternal\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true,\n    \"target\": \"es2017\",\n    \"lib\": [\n      \"es2015\",\n      \"es6\",\n      \"dom\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*\"\n  ],\n  \"exclude\": [\n    \"tests\"\n  ]\n}"
  },
  {
    "path": "packages/eslint-config-laf/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"./package.js\"\n}"
  },
  {
    "path": "packages/eslint-config-laf/cli.js",
    "content": "module.exports = {\n  extends: './package.js',\n  rules: {\n    'prettier/prettier': [\n      'error',\n      {\n        singleQuote: true,\n        trailingComma: 'all',\n        semi: false,\n        printWidth: 120,\n        tabWidth: 2,\n      },\n    ],\n  },\n}\n"
  },
  {
    "path": "packages/eslint-config-laf/docs.js",
    "content": "module.exports = {\n  extends: './package.js',\n}\n"
  },
  {
    "path": "packages/eslint-config-laf/package.js",
    "content": "module.exports = {\n  parser: '@typescript-eslint/parser',\n  parserOptions: {\n    sourceType: 'module',\n  },\n  ignorePatterns: ['dist'],\n  plugins: ['@typescript-eslint/eslint-plugin'],\n  extends: [\n    'plugin:@typescript-eslint/recommended',\n    'plugin:prettier/recommended',\n  ],\n  env: {\n    node: true,\n  },\n  rules: {\n    '@typescript-eslint/no-empty-function': 'warn',\n    '@typescript-eslint/no-var-requires': 'off',\n    '@typescript-eslint/ban-ts-comment': 'off',\n    '@typescript-eslint/no-extra-semi': 'off',\n    '@typescript-eslint/interface-name-prefix': 'off',\n    '@typescript-eslint/explicit-function-return-type': 'off',\n    '@typescript-eslint/explicit-module-boundary-types': 'off',\n    '@typescript-eslint/no-explicit-any': 'off',\n    '@typescript-eslint/no-this-alias': 'off',\n    'prefer-const': 'warn',\n    'prettier/prettier': [\n      'error',\n      {\n        singleQuote: true,\n        semi: false,\n      },\n    ],\n  },\n}\n"
  },
  {
    "path": "packages/eslint-config-laf/package.json",
    "content": "{\n  \"name\": \"eslint-config-laf\",\n  \"version\": \"1.0.0\",\n  \"private\": true,\n  \"exports\": {\n    \"./web\": \"./web.js\",\n    \"./server\": \"./server.js\",\n    \"./package\": \"./package.js\",\n    \"./service\": \"./service.js\",\n    \"./test\": \"./test.js\",\n    \"./docs\": \"./docs.js\",\n    \"./cli\": \"./cli.js\",\n    \"./runtime\": \"./runtime.js\"\n  },\n  \"scripts\": {\n    \"lint\": \"eslint . --fix --ext .ts --ext .js\"\n  },\n  \"devDependencies\": {\n    \"@typescript-eslint/eslint-plugin\": \"^5.0.0\",\n    \"@typescript-eslint/parser\": \"^5.0.0\",\n    \"eslint\": \"^8.41.0\",\n    \"eslint-config-prettier\": \"^4.1.0\",\n    \"eslint-config-react-app\": \"^7.0.1\",\n    \"eslint-plugin-prettier\": \"^4.0.0\",\n    \"eslint-plugin-simple-import-sort\": \"^10.0.0\",\n    \"prettier\": \"^2.8.8\",\n    \"prettier-plugin-tailwindcss\": \"^0.3.0\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,js}\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "packages/eslint-config-laf/runtime.js",
    "content": "module.exports = {\n  extends: './package.js',\n  rules: {\n    'prettier/prettier': [\n      'error',\n      {\n        singleQuote: true,\n        trailingComma: 'all',\n        semi: false,\n      },\n    ],\n  },\n}\n"
  },
  {
    "path": "packages/eslint-config-laf/server.js",
    "content": "module.exports = {\n  parser: '@typescript-eslint/parser',\n  parserOptions: {\n    sourceType: 'module',\n  },\n  ignorePatterns: ['dist', 'i18n.generated.ts'],\n  plugins: ['@typescript-eslint/eslint-plugin'],\n  extends: [\n    'plugin:@typescript-eslint/recommended',\n    'plugin:prettier/recommended',\n  ],\n  env: {\n    node: true,\n    jest: true,\n  },\n  rules: {\n    '@typescript-eslint/interface-name-prefix': 'off',\n    '@typescript-eslint/explicit-function-return-type': 'off',\n    '@typescript-eslint/explicit-module-boundary-types': 'off',\n    '@typescript-eslint/no-explicit-any': 'off',\n    'no-console': 'warn',\n    'prettier/prettier': [\n      'error',\n      {\n        singleQuote: true,\n        trailingComma: 'all',\n        semi: false,\n      },\n    ],\n  },\n}\n"
  },
  {
    "path": "packages/eslint-config-laf/service.js",
    "content": "module.exports = {\n  extends: './server.js',\n}\n"
  },
  {
    "path": "packages/eslint-config-laf/test.js",
    "content": "module.exports = {\n  extends: './package.js',\n}\n"
  },
  {
    "path": "packages/eslint-config-laf/web.js",
    "content": "module.exports = {\n  extends: ['react-app', 'plugin:prettier/recommended'],\n  ignorePatterns: ['dist', 'public'],\n  rules: {\n    'no-alert': 'error',\n    'react/no-children-prop': 0,\n    'simple-import-sort/imports': 'error',\n    'simple-import-sort/exports': 'error',\n    '@next/next/no-img-element': 0,\n    'no-unused-vars': 'error',\n    'no-console': 'warn',\n    'prettier/prettier': [\n      'error',\n      {\n        printWidth: 100,\n        tabWidth: 2,\n        trailingComma: 'all',\n        semi: true,\n        plugins: [require('prettier-plugin-tailwindcss')],\n      },\n    ],\n  },\n  plugins: ['simple-import-sort'],\n  overrides: [\n    {\n      files: ['*.ts', '*.tsx'],\n      rules: {\n        'simple-import-sort/imports': [\n          'error',\n          {\n            groups: [\n              // Packages `react` related packages come first.\n              ['^react', '^@?\\\\w'],\n              ['^(@chakra-ui)/(/.*|$/)'],\n              // Internal packages.\n              [\n                '^(@/components|@/constants|@/utils|/@/services|/@/pages)(/.*|$)',\n              ],\n              // Side effect imports.\n              ['^\\\\u0000'],\n              // Parent imports. Put `..` last.\n              ['^\\\\.\\\\.(?!/?$)', '^\\\\.\\\\./?$'],\n              // Other relative imports. Put same-folder imports and `.` last.\n              ['^\\\\./(?=.*/)(?!/?$)', '^\\\\.(?!/?$)', '^\\\\./?$'],\n              ['^(./store)(/.*|$)'],\n              // Style imports.\n              ['^.+\\\\.?(css|scss)$'],\n            ],\n          },\n        ],\n      },\n    },\n  ],\n}\n"
  },
  {
    "path": "packages/node-modules-utils/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"laf/package\"\n}"
  },
  {
    "path": "packages/node-modules-utils/README.md",
    "content": "# `node-modules-utils`\n\n> 用于加载、解析项目本地 node_modules 中依赖的信息， 用于 `less-framework` 中， 主要用来获取包的 Typescript 类型文件，供 Web IDE 在线类型提示和补全使用。\n\n## Usage\n\n```\nconst nmUtils = require('node-modules-utils');\n\n// TODO: DEMONSTRATE API\n```\n"
  },
  {
    "path": "packages/node-modules-utils/copy2app.sh",
    "content": "rm -rf ../app-service/node_modules/node-modules-utils/dist\nrm -rf ../app-service/node_modules/node-modules-utils/src\ncp -r dist ../app-service/node_modules/node-modules-utils/dist\ncp -r src ../app-service/node_modules/node-modules-utils/src"
  },
  {
    "path": "packages/node-modules-utils/package.json",
    "content": "{\n  \"name\": \"node-modules-utils\",\n  \"version\": \"1.0.0\",\n  \"description\": \"load package info from node_modules, parse dts (Typescript declaration files, .d.ts) from node_modules\",\n  \"author\": \"maslow <wangfugen@126.com>\",\n  \"homepage\": \"https://github.com/Maslow/less-framework#readme\",\n  \"license\": \"ISC\",\n  \"main\": \"./dist/index.js\",\n  \"typings\": \"./dist/index.d.ts\",\n  \"directories\": {\n    \"lib\": \"src\",\n    \"test\": \"tests\"\n  },\n  \"files\": [\n    \"src\",\n    \"dist\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/Maslow/less-framework.git\"\n  },\n  \"scripts\": {\n    \"build\": \"tsc\",\n    \"watch\": \"tsc -w\",\n    \"test\": \"npx mocha tests/**test.js\",\n    \"prepublishOnly\": \"npm run build\",\n    \"copy2app\": \"sh copy2app.sh\",\n    \"copy2sys\": \"sh copy2sys.sh\",\n    \"copy4dev\": \"sh copy2app.sh && sh copy2sys.sh\",\n    \"lint\": \"eslint . --fix --ext .ts --ext .js\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/Maslow/less-framework/issues\"\n  },\n  \"dependencies\": {\n    \"fs-extra\": \"^10.0.0\"\n  },\n  \"devDependencies\": {\n    \"@types/fs-extra\": \"^9.0.12\",\n    \"@types/node\": \"^16.4.2\",\n    \"typescript\": \"^4.2.3\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,js}\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "packages/node-modules-utils/src/declaration.ts",
    "content": "import * as fse from 'fs-extra'\nimport * as path from 'path'\nimport { ImportParser } from './import-parser'\nimport { PackageInfo } from './package'\n\nexport interface DeclarationType {\n  packageName: string\n  path: string\n  content: string\n  from?: string\n}\n\n/**\n * 解析、处理包的类型声明文件\n */\nexport class PackageDeclaration extends PackageInfo {\n  protected _types: DeclarationType[] = []\n\n  get declarations(): DeclarationType[] {\n    return this._types\n  }\n\n  /**\n   * 解析到的类型文件的入口文件，绝对路径\n   */\n  typingsEntryPath: string\n\n  /**\n   * 加载类型文件\n   * @returns\n   */\n  async load() {\n    await this.parse()\n\n    // 先从 @types 目录中查找\n    const typePkgName = `@types/${this.name}`\n    const r = await this.loadFromTypesPackage(typePkgName)\n    if (r && r.length) {\n      this._types.push(...r)\n      this._types.forEach((data) => (data['from'] = this.name))\n      return\n    }\n\n    await this.loadFromSelfPackage()\n  }\n\n  /**\n   * 从 `@types` 目录获取声明文件\n   */\n  async loadFromTypesPackage(typePkgName: string): Promise<DeclarationType[]> {\n    // check @types/pkg exists\n    const pkg = new PackageInfo(typePkgName, this.nodeModulesRoot)\n    await pkg.parsePackageInfo().catch(() => {})\n    if (!pkg.info) {\n      return []\n    }\n\n    // load type file\n    const typeFile = pkg.info?.types || pkg.info?.typings || 'index.d.ts'\n    const typeFilePath = path.join(pkg.rootPath, typeFile)\n    if (!(await pkg.exists(typeFilePath))) {\n      return []\n    }\n\n    const data = await fse.readFile(typeFilePath, 'utf8')\n    const results: DeclarationType[] = [\n      {\n        packageName: pkg.name,\n        path: pkg.relative_path(typeFilePath),\n        content: data,\n      },\n    ]\n\n    // load sub dependencies type\n    const deps = pkg.dependencyNames\n\n    for (const dep of deps) {\n      const r = await this.loadFromTypesPackage(dep)\n      results.push(...r)\n    }\n    return results\n  }\n\n  /**\n   * 从包目录获取声明文件\n   */\n  async loadFromSelfPackage() {\n    // 解析类型入口文件路径\n    this.typingsEntryPath = await this.resolveTypingsEntryPath()\n\n    // 从入口文件开始，解析并读取所有类型文件\n    await this.readTypings(this.typingsEntryPath)\n\n    // 处理结果中绝对路径\n    for (const data of this._types) {\n      data.path = this.fixTypingFilePath(data.path)\n    }\n  }\n\n  /**\n   * 获取 `typings` (Typescript 类型声明文件的入口) 文件绝对路径\n   * 1. 尝试读取 package.json#typings，若为目录，则自动拼上 index.d.ts\n   * 2. 如果未读取到，则指定 package.json#main 所在目录 下的 index.d.ts 为 typings\n   */\n  async resolveTypingsEntryPath() {\n    let defaultFilename = 'index.d.ts'\n    const entryStat = await this.exists(this.entryFile)\n    if (entryStat.isFile()) {\n      const { name } = path.parse(this.entryFile)\n      defaultFilename = `${name}.d.ts`\n    }\n\n    const defaultTypings = path.join(this.entryPath, defaultFilename)\n    const typings = this.info?.typings || this.info?.types\n\n    if (!typings) {\n      return defaultTypings\n    }\n\n    const typingFile = path.join(this.rootPath, typings)\n    const stat = await this.exists(typingFile)\n    if (!stat) {\n      return defaultTypings\n    }\n\n    if (stat.isDirectory()) {\n      return path.join(typingFile, defaultFilename)\n    }\n\n    return typingFile\n  }\n\n  /**\n   * 读取 typings 类型文件\n   * @param typingFilePath 绝对路径\n   * @returns\n   */\n  protected async readTypings(\n    typingFilePath: string\n  ): Promise<DeclarationType[]> {\n    if (!typingFilePath) {\n      return []\n    }\n\n    if (!(await this.exists(typingFilePath))) {\n      return []\n    }\n\n    const data = await this.loadTypingFile(typingFilePath)\n    if (!data) {\n      return []\n    }\n\n    const entryTypings = {\n      from: this.name,\n      packageName: this.name,\n      path: typingFilePath, // 暂保留为绝对路径，待全部加载完，返回之前 统一处理为相对路径\n      content: data,\n    }\n\n    this._types.push(entryTypings)\n\n    // 解析并处理引入的子类型文件\n    const parser = new ImportParser()\n    const deps = parser.parseDependencies(data, entryTypings.path)\n\n    for (const dep of deps) {\n      if (dep.kind !== 'relative') continue\n\n      const filepath = await this.resolveImportPath(\n        dep.importPath,\n        dep.sourcePath\n      )\n\n      // 已解析的跳过，防止死循环\n      const found = this._types.filter((data) => data.path === filepath)\n      if (found.length) continue\n\n      await this.readTypings(filepath)\n    }\n  }\n\n  /**\n   * 解析 import 路径为对应文件的绝对路径\n   * ```ts\n   *  import './document'\n   *  import './geo/index'\n   *  import './geo'\n   * ```\n   * @param importPath 代码中引入路径，相对路径\n   * @param sourcePath 所在代码文件路径，要求绝对路径\n   */\n  protected async resolveImportPath(importPath: string, sourcePath: string) {\n    const dir_path = path.dirname(sourcePath)\n    const full_path = path.join(dir_path, importPath)\n\n    return await this.tryResolveImportPath(full_path)\n  }\n\n  /**\n   * 尝试解析引入路径:\n   * @param filepath 绝对路径\n   */\n  protected async tryResolveImportPath(\n    absImportPath: string\n  ): Promise<string | null> {\n    const stat0 = await this.exists(absImportPath)\n\n    // 如果文件不存在，则拼接 '.d.ts' 后再尝试解析\n    if (!stat0) {\n      if (absImportPath.endsWith('.d.ts')) {\n        return null\n      }\n\n      const p = absImportPath + '.d.ts'\n      return this.tryResolveImportPath(p)\n    }\n\n    if (stat0.isFile()) {\n      return absImportPath\n    }\n\n    // 如果是文件夹，则拼接 'index.d.ts' 后再尝试解析\n    if (stat0.isDirectory()) {\n      const p = path.join(absImportPath, 'index.d.ts')\n      return this.tryResolveImportPath(p)\n    }\n  }\n\n  /**\n   * 修复获取的类型文件绝对路径为 [packageName/typingsFilePath]：\n   * 1. 转为相对路径，相对于 `this.typingsEntryPath`\n   * 2. 拼接包名\n   * @param filepath\n   */\n  protected fixTypingFilePath(filepath: string) {\n    const dir_path = path.dirname(this.typingsEntryPath)\n    // 先转为相对路径\n    const rel_path = path.relative(dir_path, filepath)\n\n    const final_path = path.join(this.name, rel_path)\n    return final_path\n  }\n\n  /**\n   * 加载类型文件内容\n   * @param filepath\n   * @returns\n   */\n  protected async loadTypingFile(filepath: string) {\n    return await fse.readFile(filepath, 'utf8')\n  }\n}\n\n/**\n * 专用于加载 Node 官方内置的包类型文件\n */\nexport class NodePackageDeclarations {\n  nodeModulesRoot: string\n\n  static NODE_PACKAGES = [\n    'assert',\n    'crypto',\n    'child_process',\n    'path',\n    'process',\n    'readline',\n    'querystring',\n    'os',\n    'dns',\n    'domain',\n    'http',\n    'https',\n    'http2',\n    'module',\n    'net',\n    'tls',\n    'dgram',\n    'stream',\n    'tty',\n    'url',\n    'wasi',\n    'v8',\n    'vm',\n    'worker_threads',\n    'zlib',\n    'punycode',\n    'perf_hooks',\n    'fs',\n    'events',\n    'constants',\n    'console',\n    'cluster',\n    'buffer',\n    'fs/promises',\n    'globals',\n    'util',\n  ]\n\n  typesDir: string\n\n  constructor(nodeModulesRoot: string) {\n    this.nodeModulesRoot = nodeModulesRoot\n    this.typesDir = path.join(this.nodeModulesRoot, '@types/node')\n  }\n\n  /**\n   * 获取 node 所有官方包的声明文件\n   */\n  async getNodeBuiltinPackage(packageName: string): Promise<DeclarationType> {\n    const full_path = path.join(this.typesDir, `${packageName}.d.ts`)\n    const data = await fse.readFile(full_path, 'utf8')\n\n    return {\n      packageName: packageName,\n      content: data,\n      path: `@types/node/${packageName}.d.ts`,\n      from: 'node',\n    }\n  }\n}\n"
  },
  {
    "path": "packages/node-modules-utils/src/import-parser.ts",
    "content": "import * as path from 'path'\nexport interface ImportResourcePathPackage {\n  kind: 'package'\n  packageName: string\n  importPath?: string\n}\n\nexport interface ImportResourcePathRelative {\n  kind: 'relative'\n  importPath: string\n  sourcePath: string\n}\n\nexport interface ImportResourcePathRelativeInPackage {\n  kind: 'relative-in-package'\n  packageName: string\n  importPath: string\n  sourcePath: string\n}\n\nexport type ImportResourcePath =\n  | ImportResourcePathPackage\n  | ImportResourcePathRelative\n  | ImportResourcePathRelativeInPackage\n\nexport class ImportParser {\n  // private REGEX_CLEAN = /[\\n|\\r]/g;\n  private REGEX_DETECT_IMPORT =\n    /(?:(?:(?:import)|(?:export))(?:.)*?from\\s+[\"']([^\"']+)[\"'])|(?:\\/+\\s+<reference\\s+path=[\"']([^\"']+)[\"']\\s+\\/>)/g\n\n  public parseDependencies(\n    source: string,\n    parent: ImportResourcePath | string\n  ): ImportResourcePath[] {\n    const cleaned = source // source.replace(this.REGEX_CLEAN, '');\n    return [...cleaned.matchAll(this.REGEX_DETECT_IMPORT)]\n      .map((x) => x[1] ?? x[2])\n      .filter((x) => !!x)\n      .map((imp) => {\n        const result = this.resolvePath(imp, parent)\n        return result\n      })\n  }\n\n  private resolvePath(\n    importPath: string,\n    parent: ImportResourcePath | string\n  ): ImportResourcePath {\n    if (typeof parent === 'string') {\n      if (importPath.startsWith('.')) {\n        return {\n          kind: 'relative',\n          importPath,\n          sourcePath: parent,\n        }\n      } else if (importPath.startsWith('@')) {\n        const segments = importPath.split('/')\n        return {\n          kind: 'package',\n          packageName: `${segments[0]}/${segments[1]}`,\n          importPath: segments.slice(2).join('/'),\n        }\n      } else {\n        const segments = importPath.split('/')\n        return {\n          kind: 'package',\n          packageName: segments[0],\n          importPath: segments.slice(1).join('/'),\n        }\n      }\n    } else {\n      switch (parent.kind) {\n        case 'package':\n          throw Error('TODO?')\n        case 'relative':\n          throw Error('TODO2?')\n        case 'relative-in-package':\n          if (importPath.startsWith('.')) {\n            return {\n              kind: 'relative-in-package',\n              packageName: parent.packageName,\n              sourcePath: path.join(parent.sourcePath, parent.importPath),\n              importPath: importPath,\n            }\n          } else if (importPath.startsWith('@')) {\n            const segments = importPath.split('/')\n            return {\n              kind: 'package',\n              packageName: `${segments[0]}/${segments[1]}`,\n              importPath: segments.slice(2).join('/'),\n            }\n          } else {\n            const segments = importPath.split('/')\n            return {\n              kind: 'package',\n              packageName: segments[0],\n              importPath: segments.slice(1).join('/'),\n            }\n          }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/node-modules-utils/src/index.ts",
    "content": "export * from './package'\nexport * from './declaration'\nexport * from './import-parser'\n"
  },
  {
    "path": "packages/node-modules-utils/src/package.ts",
    "content": "import * as fse from 'fs-extra'\nimport * as path from 'path'\nexport class PackageInfo {\n  /**\n   * node_modules 绝对路径\n   */\n  protected nodeModulesRoot: string\n\n  protected importPath: string\n\n  /**\n   * package.json 的内容\n   */\n  info: any\n\n  /**\n   * root path\n   * 此包根目录的绝对路径\n   */\n  rootPath: string\n\n  /**\n   * entry file\n   * 为 main / module 指定的入口文件\n   */\n  entryFile: string\n\n  /**\n   * entry path\n   * 为 main / module 指定的入口文件所在目录\n   */\n  entryPath: string\n\n  get name(): string {\n    return this.info?.name\n  }\n\n  get version(): string {\n    return this.info?.version\n  }\n\n  get dependencies(): object {\n    return this.info?.dependencies\n  }\n\n  get dependencyNames(): string[] {\n    if (!this.dependencies) return []\n    return Object.keys(this.dependencies)\n  }\n\n  /**\n   * common entry file\n   */\n  get main(): string {\n    return this.info?.main\n  }\n\n  /**\n   * esm entry file\n   */\n  get module(): string {\n    return this.info?.module\n  }\n\n  /**\n   *\n   * @param importPath 引入的包路径，如 `less-api`, `axios/index`\n   * @param nodeModulesRoot node_modules 所在目录\n   */\n  constructor(importPath: string, nodeModulesRoot: string) {\n    this.importPath = importPath\n    if (nodeModulesRoot) {\n      this.nodeModulesRoot = nodeModulesRoot\n    }\n  }\n\n  /**\n   * 解析包\n   */\n  async parse(onlyInfo = false) {\n    await this.parsePackageInfo()\n    if (!onlyInfo) {\n      await this.parsePackageEntry()\n    }\n  }\n\n  /**\n   * 解析包信息 package.json\n   * @returns\n   */\n  async parsePackageInfo() {\n    let pkg_path = this.abs_path(this.importPath)\n    let result = null\n\n    while (this.relative_path(pkg_path) != '') {\n      result = await this.readPackageJson(path.join(pkg_path, 'package.json'))\n      if (result) {\n        break\n      }\n      pkg_path = path.dirname(pkg_path)\n    }\n\n    if (!result) {\n      throw new Error('parse package info error: ' + this.importPath)\n    }\n\n    this.info = result\n    this.rootPath = pkg_path\n  }\n\n  /**\n   * 解析包入口信息: main / module\n   */\n  async parsePackageEntry() {\n    let entry = ''\n    if (this.main) {\n      entry = this.main\n    } else if (this.module) {\n      entry = this.module\n    }\n\n    const entryFile = path.join(this.rootPath, entry)\n    let entryPath = entryFile\n    const stat = await this.exists(entryFile)\n    if (!stat) {\n      throw new Error('entry file or path not exists')\n    }\n\n    if (stat.isFile()) {\n      entryPath = path.dirname(entryPath)\n    }\n\n    this.entryFile = entryFile\n    this.entryPath = entryPath\n  }\n\n  /**\n   * 读取 package.json\n   * @param dir\n   * @returns\n   */\n  async readPackageJson(file_path: string) {\n    const found = await this.exists(file_path)\n    if (!found) {\n      return null\n    }\n\n    const data = await fse.readFile(file_path, 'utf8')\n    return JSON.parse(data)\n  }\n\n  /**\n   * 转绝对路径，基于 node_modules 路径\n   * @param pathInPackage\n   * @returns\n   */\n  abs_path(pathInPackage: string) {\n    return path.join(this.nodeModulesRoot, pathInPackage)\n  }\n\n  /**\n   * 转相对路径，基于 node_modules 路径\n   * @param absPath\n   * @returns\n   */\n  relative_path(absPath: string) {\n    return path.relative(this.nodeModulesRoot, absPath)\n  }\n\n  /**\n   * 文件或文件是否存在\n   * @param p\n   */\n  async exists(p: string) {\n    try {\n      const stat = await fse.stat(p)\n      return stat\n    } catch (error) {\n      return null\n    }\n  }\n}\n"
  },
  {
    "path": "packages/node-modules-utils/tests/cloud-sdk.test.js",
    "content": "const assert = require('assert')\nconst path = require('path')\nconst { PackageDeclaration } = require('../dist')\n\nconst nmp = path.resolve(__dirname, '../../app-service/node_modules')\n\ndescribe('npm-util(unit): Package Declaration Load', () => {\n  /**\n   * load from self package: @\n   */\n  it('load d.ts of @ (typings)', async () => {\n    const pkg = new PackageDeclaration('@', nmp)\n    await pkg.load()\n    // console.log(pkg.declarations)\n\n    assert.strictEqual(pkg.name, '@')\n    assert.ok(pkg.declarations.length > 0)\n  })\n})\n"
  },
  {
    "path": "packages/node-modules-utils/tests/declare.test.js",
    "content": "const assert = require('assert')\nconst path = require('path')\nconst { PackageDeclaration } = require('../dist')\n\nconst nmp = path.resolve(__dirname, '../../app-service/node_modules')\n\ndescribe('npm-util(unit): Package Declaration Load', () => {\n  /**\n   * load from @types/express\n   */\n  it('load d.ts of express', async () => {\n    const pkg = new PackageDeclaration('express', nmp)\n    await pkg.load()\n    assert.strictEqual(pkg.name, 'express')\n    assert.ok(pkg.declarations.length > 0)\n  })\n\n  /**\n   * load from self package (typings): axios\n   */\n  it('load d.ts of axios (typings)', async () => {\n    const pkg = new PackageDeclaration('axios', nmp)\n    await pkg.load()\n    assert.strictEqual(pkg.name, 'axios')\n    assert.ok(pkg.declarations.length > 0)\n  })\n\n  /**\n   * load from self package (typings): moment, which typings is not 'index.d.ts'\n   */\n  it('load d.ts of moment (typings)', async () => {\n    const pkg = new PackageDeclaration('moment', nmp)\n    await pkg.load()\n    assert.strictEqual(pkg.name, 'moment')\n    assert.ok(pkg.declarations.length > 0)\n  })\n\n  /**\n   * load from self package: database-proxy\n   */\n  it('load d.ts of database-proxy (typings)', async () => {\n    const pkg = new PackageDeclaration('database-proxy', nmp)\n    await pkg.load()\n    // console.log(pkg.declarations)\n\n    assert.strictEqual(pkg.name, 'database-proxy')\n    assert.ok(pkg.declarations.length > 0)\n  })\n\n  /**\n   * load from self package: alipay-sdk\n   */\n  it('load d.ts of alipay-sdk (typings)', async () => {\n    const pkg = new PackageDeclaration('alipay-sdk', nmp)\n    await pkg.load()\n    // console.log(pkg)\n\n    assert.strictEqual(pkg.name, 'alipay-sdk')\n    assert.ok(pkg.declarations.length > 0)\n  })\n})\n"
  },
  {
    "path": "packages/node-modules-utils/tests/import.test.js",
    "content": "const assert = require('assert')\nconst path = require('path')\nconst { ImportParser, PackageDeclaration } = require('../dist')\n\nconst nmp = path.resolve(__dirname, '../../app-service/node_modules')\n\ndescribe('npm-util(unit): Import Parser', () => {\n  it('parse database-proxy index.d.ts', async () => {\n    const pkg = new PackageDeclaration('database-proxy', nmp)\n    await pkg.load()\n    const dec0 = pkg.declarations[0]\n    //  console.log(dec0.packageName, dec0.path)\n\n    const parser = new ImportParser()\n    const r = parser.parseDependencies(dec0.content, dec0.path)\n\n    //  console.log(r)\n    assert.ok(r.length > 0)\n    assert.strictEqual(pkg.name, 'database-proxy')\n    assert.ok(pkg.declarations.length > 0)\n  })\n})\n"
  },
  {
    "path": "packages/node-modules-utils/tests/parse.test.js",
    "content": "const assert = require('assert')\nconst { PackageInfo } = require('../dist')\nconst path = require('path')\nconst nmp = path.resolve(__dirname, '../../app-service/node_modules')\n\ndescribe('npm-util(unit): Package parse', () => {\n  it('get pkg dir: database-ql', async () => {\n    const pkg = new PackageInfo('database-ql', nmp)\n    await pkg.parse()\n    assert.strictEqual(pkg.name, 'database-ql')\n    // console.log(pkg.entryPath)\n    assert(pkg.entryPath?.endsWith('dist/commonjs'))\n  })\n\n  it('get pkg dir: database-ql/index', async () => {\n    const pkg = new PackageInfo('database-ql/index', nmp)\n    await pkg.parse()\n    assert.strictEqual(pkg.name, 'database-ql')\n    assert(pkg.entryPath?.endsWith('dist/commonjs'))\n  })\n\n  it('get pkg dir: database-ql/dist/commonjs', async () => {\n    const pkg = new PackageInfo('database-ql/dist/commonjs', nmp)\n    await pkg.parse()\n    assert.strictEqual(pkg.name, 'database-ql')\n    assert(pkg.entryPath?.endsWith('dist/commonjs'))\n  })\n\n  it('get pkg dir: database-ql/dist/commonjs/commands/index', async () => {\n    const pkg = new PackageInfo('database-ql/dist/commonjs/commands/index', nmp)\n    await pkg.parse()\n    assert.strictEqual(pkg.name, 'database-ql')\n    assert(pkg.entryPath?.endsWith('dist/commonjs'))\n  })\n\n  it('get pkg dir: axios', async () => {\n    const pkg = new PackageInfo('axios', nmp)\n    await pkg.parse()\n    assert.strictEqual(pkg.name, 'axios')\n    assert(pkg.entryPath?.endsWith('axios'))\n  })\n\n  it('get pkg dir: @types/express', async () => {\n    const pkg = new PackageInfo('@types/express', nmp)\n    await pkg.parsePackageInfo()\n    // console.log(pkg)\n    assert.strictEqual(pkg.name, '@types/express')\n  })\n\n  it('get pkg dir: alipay-sdk', async () => {\n    const pkg = new PackageInfo('alipay-sdk', nmp)\n    await pkg.parsePackageInfo()\n    // console.log(pkg)\n    assert.strictEqual(pkg.name, 'alipay-sdk')\n  })\n})\n"
  },
  {
    "path": "packages/node-modules-utils/tsconfig.json",
    "content": "{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"charset\": \"utf8\",\n    \"declaration\": true,\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true,\n    \"importHelpers\": false,\n    \"module\": \"commonjs\",\n    \"declarationMap\": true,\n    // \"declarationDir\": \"types\",\n    \"noEmitOnError\": false,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": false,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"outDir\": \"./dist\",\n    \"pretty\": true,\n    \"removeComments\": true,\n    \"stripInternal\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true,\n    \"target\": \"es2017\",\n    \"alwaysStrict\": true,\n    \"lib\": [\n      \"es2015\",\n      \"es6\",\n      \"ES2020\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*\",\n  ],\n  \"exclude\": [\n    \"tests_modules\",\n    \"tests\",\n    \"test\"\n  ]\n}"
  },
  {
    "path": "packages/run-tests.sh",
    "content": "docker run --rm -p 27018:27017 --name mongotest -d mongo\nnpx mocha ./*/tests/**/*.test.js \ndocker rm -f mongotest"
  },
  {
    "path": "runtimes/nodejs/.dockerignore",
    "content": "# node_modules\n.env\necosystem.config.js\n# dist\ndata\n# src\ntests\ncommitlint.config.js\necosystem.config.js.tpl\n.DS_Store\n.env.development\n.env.production\n.gitignore\nDockerfile\nhttp"
  },
  {
    "path": "runtimes/nodejs/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"laf/runtime\"\n}"
  },
  {
    "path": "runtimes/nodejs/.gitignore",
    "content": "node_modules\ndist\n\nupload\ndata/*\ntmp\n\n.env\n\necosystem.config.js\n.DS_Store\n"
  },
  {
    "path": "runtimes/nodejs/Dockerfile",
    "content": "FROM node:20.10.0\n\nRUN apt update && apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev git dumb-init -y\n\n# RUN npm install npm -g\n\nEXPOSE 8000\nEXPOSE 9000\n\nWORKDIR /app\nENV LOG_LEVEL=debug\n\n# enable chalk colors\nENV FORCE_COLOR=1\n\nCOPY . /app\n# COPY --chown=node:node . /app\nRUN mkdir /app/data || true\nRUN mkdir /tmp/custom_dependency || true\nRUN chown node:node /app/data\nRUN chown node:node /app/functions\nRUN chown node:node /tmp/custom_dependency\n# RUN npm install\n# RUN npm run build\nRUN chown -R node:node /app/node_modules\nRUN chown node:node /app/package.json\nRUN chown node:node /app/package-lock.json\n\nUSER node\n\nENTRYPOINT [\"/usr/bin/dumb-init\", \"--\"]\n\nCMD [ \"sh\", \"/app/start.sh\" ]\n"
  },
  {
    "path": "runtimes/nodejs/Dockerfile.init",
    "content": "FROM node:20.10.0\n\nWORKDIR /app\n\nCOPY ./init.sh /app/init.sh\nCOPY ./upload-dependencies.sh /app/upload-dependencies.sh\n\nRUN chown -R node:node /app\n\nUSER node\n\nCMD [ \"sh\", \"/app/init.sh\" ]\n"
  },
  {
    "path": "runtimes/nodejs/README.md",
    "content": "# Intro\n\n`runtime-nodejs` is the application service engine of `laf`, responsible for:\n\n- The execution of the cloud function\n- Database access proxy\n\n# Development\n\n## You should know\n\n- [Node.js](https://nodejs.org/en/docs)\n- [Express](https://expressjs.com) web framework\n- [Kubernetes](https://kubernetes.io) basic use\n- [Telepresence](https://www.telepresence.io) for local development\n- [MongoDb](https://docs.mongodb.com) basic use\n\n## Prerequisites\n\n- laf cluster installed locally or remotely (~/.kube/config)\n- telepresence installed (see https://www.telepresence.io/reference/install)\n- a running app in laf cluster (appid)\n\n## Start service locally\n\n```sh\ncd runtimes/nodejs\n\n# connect the cluster if not connected\ntelepresence connect -n laf-system\n\nexport appid=your-app-id\n\n# proxy app cluster traffic to local, replace `APPID` with your prepared appid\ntelepresence intercept $appid  -p 8000:8000 -e $(pwd)/.env\n\n# after intercept command, you can use following command to check if intercept active\ntelepresence list\n\n# Start local service first, required nodejs version >= 18.0.0\nnpm install\n\nnpm run build\n\nnpm start\n\n```\n\n> Clean up\n\n```bash\ntelepresence leave $appid\ntelepresence uninstall -a\ntelepresence quit\n```\n"
  },
  {
    "path": "runtimes/nodejs/build-image.sh",
    "content": "\n# Warning: just for development phase, will be move to github action in future.\n\n# get version from package.json\nversion=$(node -p \"require('./package.json').version\")\n\n# build main image\ndocker buildx build --platform linux/amd64,linux/arm64 --push -t docker.io/lafyun/runtime-node:$version -f Dockerfile .\n\n# build init image\ndocker buildx build --platform linux/amd64,linux/arm64 --push -t docker.io/lafyun/runtime-node-init:$version -f Dockerfile.init ."
  },
  {
    "path": "runtimes/nodejs/functions/global.d.ts",
    "content": "/**\n * The input parameters of cloud function calls\n */\ndeclare interface FunctionContext {\n  __function_name: string\n\n  /**\n   * This object is parsed from JWT Token Payload\n   */\n  user?: {\n    [key: string]: any\n  }\n\n  /**\n   * Uploaded file, the file object array\n   */\n  files?: File[]\n\n  /**\n   * HTTP headers\n   */\n  headers?: IncomingHttpHeaders\n\n  /**\n   * HTTP Query parameter (URL parameter), JSON object\n   */\n  query?: any\n\n  /**\n   * HTTP Body\n   */\n  body?: any\n\n  /**\n   *\n   */\n  params?: any\n\n  /**\n   * HTTP Request ID\n   */\n  requestId?: string\n\n  /**\n   * HTTP Method\n   */\n  method?: string\n\n  /**\n   * Express request object\n   */\n  request?: HttpRequest\n\n  /**\n   * Express response object\n   */\n  response?: HttpResponse\n\n  /**\n   * WebSocket object\n   */\n  socket?: WebSocket\n\n  [key: string]: any\n}\n\ninterface IModule {\n  exports: any\n}\n\ninterface IProcess {\n  /**\n   * Environment\n   */\n  env: any\n}\n\ndeclare const module: IModule\ndeclare const process: IProcess\n"
  },
  {
    "path": "runtimes/nodejs/functions/tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfig.json\",\n  \"compilerOptions\": {\n    \"noUnusedLocals\": false,\n    \"noUnusedParameters\": false,\n    \"baseUrl\": \"./\",\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\n    \"./*\"\n  ]\n}"
  },
  {
    "path": "runtimes/nodejs/init.sh",
    "content": "#!/bin/sh\n\nset -e\n\n# skip init if $DEPENDENCIES is empty and $LF_NODE_MODULES_CACHE is not `always`\nif [ -z \"$DEPENDENCIES\" ] && [ \"$LF_NODE_MODULES_CACHE\" != \"always\" ]; then\n  echo \"No dependencies to install.\"\n  exit 0\nfi\n\n### get node_modules cache ###\n# if $NODE_MODULES_URL is not empty\nif [ -n \"$NODE_MODULES_PULL_URL\" ]; then\n  echo \"Downloading node_modules from $NODE_MODULES_PULL_URL\"\n\n  # get start time\n  start_time=$(date +%s)\n\n  # temporarily disable set -e\n  set +e\n\n  # download node_modules.tar and untar to `node_modules`\n  curl -sSfL $NODE_MODULES_PULL_URL -o node_modules.tar\n\n  end_time=$(date +%s)\n\n  # if error\n  if [ $? -ne 0 ]; then\n    echo \"Failed to download node_modules cache.\"\n  else\n    elapsed_time=$(expr $end_time - $start_time)\n    echo \"Downloaded node_modules.tar in $elapsed_time seconds.\"\n\n    # untar node_modules.tar\n    tar -xf node_modules.tar -C .\n\n    # check tar exit code\n    if [ $? -ne 0 ]; then\n      echo \"Failed to extract node_modules cache.\"\n    else\n      end_time_2=$(date +%s)\n      elapsed_time_2=$(expr $end_time_2 - $end_time)\n      echo \"Extracted node_modules cache in $elapsed_time_2 seconds.\"\n    fi\n  fi\n\n  # re-enable set -e\n  set -e\nelse\n  echo \"No node_modules cache found, continuing installation.\"\nfi\n\n# if $LF_NODE_MODULES_CACHE is `always`\nif [ \"$LF_NODE_MODULES_CACHE\" = \"always\" ]; then\n  echo \"LF_NODE_MODULES_CACHE is set to 'always', skipping dependency check and install.\"\n  exit 0\nfi\n\n### dependency check ###\nCACHED_DEPENDENCIES=\"\"\n# if node_modules/.dependencies exists\nif [ -f \"node_modules/.dependencies\" ]; then\n  CACHED_DEPENDENCIES=`cat node_modules/.dependencies`\nfi\n\necho \"Cached dependencies: $CACHED_DEPENDENCIES\"\necho \"Dependencies to install: $DEPENDENCIES\"\n\n# if $CACHED_DEPENDENCIES is equal to $DEPENDENCIES\nif [ \"$CACHED_DEPENDENCIES\" = \"$DEPENDENCIES\" ]; then\n  echo \"No dependencies changed since last cache build.\"\n  exit 0\nelse\n  echo \"Dependencies changed since last cache build.\"\nfi\n\n\n### npm install $DEPENDENCIES ###\nstart_time=$(date +%s)\necho \"npm install $DEPENDENCIES $NPM_INSTALL_FLAGS\"\nnpm install $DEPENDENCIES $NPM_INSTALL_FLAGS\nend_time=$(date +%s)\nelapsed_time=$(expr $end_time - $start_time)\necho \"Installed dependencies in $elapsed_time seconds.\"\n\nsh /app/upload-dependencies.sh /app"
  },
  {
    "path": "runtimes/nodejs/package.json",
    "content": "{\n  \"name\": \"runtime-nodejs\",\n  \"version\": \"1.0.0\",\n  \"description\": \"the node runtime for laf\",\n  \"main\": \"./dist/index.js\",\n  \"typings\": \"./dist/index.d.ts\",\n  \"private\": \"true\",\n  \"scripts\": {\n    \"start\": \"node ./dist/index.js\",\n    \"dev\": \"npx ts-node ./src/index.ts\",\n    \"dev:start\": \"npx nodemon ./dist/index.js\",\n    \"dev:watch\": \"npm run watch\",\n    \"build\": \"tsc -p tsconfig.json\",\n    \"watch\": \"tsc -p tsconfig.json -w\",\n    \"prepublishOnly\": \"npm run build\",\n    \"trace-gc\": \"node --trace_gc --trace_gc_verbose ./dist/index.js\",\n    \"init\": \"node ./dist/init.js\",\n    \"lint\": \"eslint . --fix --ext .ts --ext .js\"\n  },\n  \"keywords\": [\n    \"laf\",\n    \"BaaS\",\n    \"mongodb\",\n    \"firebase\",\n    \"serverless\"\n  ],\n  \"dependencies\": {\n    \"@aws-sdk/client-s3\": \"^3.468.0\",\n    \"@aws-sdk/client-sts\": \"^3.468.0\",\n    \"@aws-sdk/s3-request-presigner\": \"^3.468.0\",\n    \"@kubernetes/client-node\": \"^0.18.0\",\n    \"@lafjs/cloud\": \"^1.0.0\",\n    \"@types/pako\": \"^2.0.2\",\n    \"axios\": \"^1.4.0\",\n    \"chalk\": \"^4.1.2\",\n    \"chatgpt\": \"^5.2.5\",\n    \"cors\": \"^2.8.5\",\n    \"database-proxy\": \"^1.0.0\",\n    \"dayjs\": \"^1.11.7\",\n    \"dotenv\": \"^8.2.0\",\n    \"ejs\": \"^3.1.8\",\n    \"express\": \"^4.18.2\",\n    \"express-http-proxy\": \"^2.0.0\",\n    \"express-xml-bodyparser\": \"^0.3.0\",\n    \"jsonwebtoken\": \"^9.0.0\",\n    \"lodash\": \"^4.17.21\",\n    \"minio\": \"^7.0.32\",\n    \"mongodb\": \"^5.9.2\",\n    \"mongodb-uri\": \"^0.9.7\",\n    \"multer\": \"^1.4.5-lts.1\",\n    \"node-modules-utils\": \"^1.0.0\",\n    \"nodemailer\": \"^6.6.3\",\n    \"openapi3-ts\": \"^4.2.2\",\n    \"pako\": \"^2.1.0\",\n    \"source-map-support\": \"^0.5.21\",\n    \"typescript-language-server\": \"^3.3.2\",\n    \"validator\": \"^13.7.0\",\n    \"vscode-languageserver\": \"^9.0.1\",\n    \"vscode-ws-jsonrpc-cjs\": \"^3.0.0\",\n    \"ws\": \"^8.11.0\",\n    \"zlib\": \"^1.0.5\",\n    \"typescript\": \"^5.0.2\"\n  },\n  \"devDependencies\": {\n    \"@types/cors\": \"^2.8.13\",\n    \"@types/dotenv\": \"^8.2.0\",\n    \"@types/ejs\": \"^3.1.1\",\n    \"@types/express\": \"^4.17.15\",\n    \"@types/express-http-proxy\": \"^1.6.3\",\n    \"@types/express-xml-bodyparser\": \"^0.3.2\",\n    \"@types/jsonwebtoken\": \"^8.5.1\",\n    \"@types/lodash\": \"^4.14.171\",\n    \"@types/mongodb-uri\": \"^0.9.1\",\n    \"@types/multer\": \"^1.4.5\",\n    \"@types/node\": \"^20.9.5\",\n    \"@types/nodemailer\": \"^6.4.4\",\n    \"@types/validator\": \"^13.1.3\",\n    \"@types/ws\": \"^8.5.3\"\n  },\n  \"nodemonConfig\": {\n    \"ignore\": [\n      \"test/*\",\n      \"src/*\",\n      \"http/*\"\n    ],\n    \"delay\": 1000\n  },\n  \"lint-staged\": {\n    \"*.{ts,js}\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/config.ts",
    "content": "import * as dotenv from 'dotenv'\n\n/**\n * parse environment vars from the `.env` file if existing\n */\ndotenv.config()\n\n/**\n * configuration management\n */\nexport default class Config {\n  /**\n   * mongodb connection configuration\n   */\n  static get DB_URI() {\n    if (!process.env['DB_URI']) {\n      throw new Error('env: `DB_URI` is missing')\n    }\n    return process.env['DB_URI']\n  }\n\n  /**\n   * the server secret salt, mainly used for generating tokens\n   */\n  static get SERVER_SECRET(): string {\n    const secret_salt = process.env['SERVER_SECRET']\n    if (!secret_salt) {\n      throw new Error('env: `SERVER_SECRET` is missing')\n    }\n    return secret_salt\n  }\n\n  /**\n   * the logger level : 'debug', 'info', 'warn', 'error'\n   */\n  static get LOG_LEVEL(): 'debug' | 'info' | 'warn' | 'error' {\n    return (process.env['LOG_LEVEL'] as any) || 'debug'\n  }\n\n  /**\n   * the logger display line level : 'info', 'warn', 'error', 'debug'\n   */\n  static get DISPLAY_LINE_LOG_LEVEL(): 'debug' | 'info' | 'warn' | 'error' {\n    return (process.env['DISPLAY_LINE_LOG_LEVEL'] as any) || 'error'\n  }\n\n  /**\n   * the object depth limit when logging\n   */\n  static get LOG_DEPTH(): number {\n    const depth = (process.env['LOG_DEPTH'] as any) ?? 1\n    if (depth < 0) {\n      return 0\n    }\n    return depth > 5 ? 5 : depth\n  }\n\n  /**\n   * the serving port, default is 8000\n   */\n  static get PORT(): number {\n    return (process.env.__PORT ?? 8000) as number\n  }\n\n  static get STORAGE_PORT(): number {\n    return (process.env.__STORAGE_PORT ?? 9000) as number\n  }\n\n  // set keepAliveTimeout from config (default 60 seconds)\n  static get KEEP_ALIVE_TIMEOUT(): number {\n    const defaultMs = 60 * 1000\n    const raw = process.env.__KEEP_ALIVE_TIMEOUT\n    if (raw === undefined || raw === null || raw === '') {\n      return defaultMs\n    }\n    const parsed = Number(raw)\n    if (!Number.isFinite(parsed) || parsed <= 0) {\n      return defaultMs\n    }\n    return parsed\n  }\n\n  /**\n   * in production deploy or not\n   */\n  static get isProd(): boolean {\n    return process.env.NODE_ENV === 'production'\n  }\n\n  static get RUNTIME_IMAGE(): string {\n    return process.env.RUNTIME_IMAGE\n  }\n\n  static get RUNTIME_VERSION(): string {\n    return require('../package.json')?.version\n  }\n\n  static get APPID(): string {\n    return process.env.APPID ?? process.env.APP_ID\n  }\n\n  static get NPM_INSTALL_FLAGS(): string {\n    return process.env.NPM_INSTALL_FLAGS || ''\n  }\n\n  static get REQUEST_LIMIT_SIZE(): string {\n    return process.env.REQUEST_LIMIT_SIZE || '10mb'\n  }\n\n  static get LOG_SERVER_URL(): string {\n    return process.env.LOG_SERVER_URL || ''\n  }\n\n  static get LOG_SERVER_TOKEN(): string {\n    return process.env.LOG_SERVER_TOKEN || ''\n  }\n\n  static get CHANGE_STREAM_RECONNECT_INTERVAL(): number {\n    return (process.env.CHANGE_STREAM_RECONNECT_INTERVAL || 3000) as number\n  }\n\n  static get OSS_INTERNAL_ENDPOINT(): string {\n    return process.env.OSS_INTERNAL_ENDPOINT || ''\n  }\n\n  static get OSS_EXTERNAL_ENDPOINT(): string {\n    return process.env.OSS_EXTERNAL_ENDPOINT\n  }\n\n  static get DISABLE_MODULE_CACHE(): boolean {\n    return process.env.DISABLE_MODULE_CACHE === 'true'\n  }\n\n  static get CUSTOM_DEPENDENCY_BASE_PATH(): string {\n    return process.env.CUSTOM_DEPENDENCY_BASE_PATH || '/tmp/custom_dependency'\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/constants.ts",
    "content": "/**\n * Collection names\n */\nexport const CLOUD_FUNCTION_COLLECTION = '__functions__'\nexport const POLICY_COLLECTION = '__policies__'\nexport const CONFIG_COLLECTION = '__conf__'\nexport const WEBSITE_HOSTING_COLLECTION = '__website_hosting__'\n\nexport const WEBSOCKET_FUNCTION_NAME = '__websocket__'\nexport const INTERCEPTOR_FUNCTION_NAME = '__interceptor__'\nexport const DEFAULT_FUNCTION_NAME = '__default__'\nexport const INIT_FUNCTION_NAME = '__init__'\n"
  },
  {
    "path": "runtimes/nodejs/src/db.ts",
    "content": "/*\n * @Author: Maslow<wangfugen@126.com>\n * @Date: 2021-08-16 15:29:15\n */\n\nimport { MongoAccessor } from 'database-proxy'\nimport Config from './config'\nimport { MongoClient } from 'mongodb'\nimport { logger } from './support/logger'\n\n/**\n * Database Management\n */\nexport class DatabaseAgent {\n  private static _accessor: MongoAccessor\n  private static _client: MongoClient\n  static ready = this.initialize()\n\n  /**\n   * Mongo client\n   */\n  static get client() {\n    return this._client\n  }\n\n  /**\n   * Database instance\n   */\n  static get db() {\n    return this.client.db()\n  }\n\n  static async initialize() {\n    const client = new MongoClient(Config.DB_URI)\n\n    let retryDelay = 1000 // 1s\n    const maxDelay = 30 * 1000 // 30s\n\n    while (true) {\n      try {\n        this._client = await client.connect()\n        logger.info('db connected')\n        return this._client\n      } catch (error) {\n        if (retryDelay > maxDelay) {\n          retryDelay = 1000\n          logger.warn('connect db failed, try again...')\n        }\n\n        await new Promise((resolve) => setTimeout(resolve, retryDelay))\n        retryDelay *= 2\n      }\n    }\n  }\n\n  /**\n   * MongoAccessor instance of database-proxy\n   */\n  static get accessor() {\n    if (!this._accessor) {\n      this._accessor = new MongoAccessor(this.client)\n      this._accessor.logger.level = 0\n    }\n    return this._accessor\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/handler/db-proxy.ts",
    "content": "import { Response } from 'express'\nimport { Proxy } from 'database-proxy'\nimport Config from '../config'\nimport { DatabaseAgent } from '../db'\nimport { logger } from '../support/logger'\nimport { PolicyAgent } from '../support/policy'\nimport { IRequest } from '../support/types'\n\nexport async function handleDatabaseProxy(req: IRequest, res: Response) {\n  const accessor = DatabaseAgent.accessor\n\n  const requestId = req['requestId']\n  const auth = req.user || {}\n  const policy_name = req.params?.policy\n\n  // get corresponding policy\n  const policy_comp = await PolicyAgent.get(policy_name)\n  if (!policy_comp) {\n    return res.status(404).send('Policy Not Found')\n  }\n\n  // create a database proxy\n  const proxy = new Proxy(accessor, policy_comp.policy)\n\n  // parse params\n  const params = proxy.parseParams(req.body)\n\n  // get injections by invoking the injector function of policy\n  const injections = await policy_comp.injector_func(auth, params)\n\n  // validate query\n  const result = await proxy.validate(params, injections)\n  if (result.errors) {\n    logger.error(requestId, `validate return errors: `, result.errors)\n    return res.status(403).send({\n      code: 'permission denied',\n      error: result.errors,\n      injections: Config.isProd ? undefined : injections,\n    })\n  }\n\n  // execute query\n  try {\n    const data = await proxy.execute(params)\n    logger.debug(requestId, 'executed query success with params: ', params)\n\n    return res.send({\n      code: 0,\n      data,\n    })\n  } catch (error) {\n    logger.error(requestId, 'execute query got error:  ', error)\n    return res.send({\n      code: 1,\n      error: error.toString(),\n      injections: Config.isProd ? undefined : injections,\n    })\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/handler/invoke.ts",
    "content": "import { Response } from 'express'\nimport { IRequest } from '../support/types'\nimport { DEFAULT_FUNCTION_NAME, INTERCEPTOR_FUNCTION_NAME } from '../constants'\nimport { parseToken } from '../support/token'\nimport {\n  FunctionExecutor,\n  Console,\n  DebugConsole,\n  FunctionCache,\n  FunctionContext,\n  ICloudFunctionData,\n  FunctionDebugExecutor,\n} from '../support/engine'\nimport pako from 'pako'\nimport { base64ToUint8Array, uint8ArrayToBase64 } from '../support/utils'\n\nexport async function handleInvokeFunction(req: IRequest, res: Response) {\n  const name = req.params?.name\n\n  const ctx: FunctionContext = {\n    __function_name: name,\n    requestId: req.requestId,\n    query: req.query,\n    files: req.files as any,\n    body: req.body,\n    headers: req.headers,\n    method: req.method,\n    auth: req['auth'],\n    user: req.user,\n    request: req,\n    response: res,\n  }\n\n  let useInterceptor = true\n  if (!FunctionCache.get(INTERCEPTOR_FUNCTION_NAME)) {\n    useInterceptor = false\n  }\n\n  // debug mode\n  if (req.get('x-laf-develop-token')) {\n    return await invokeDebug(ctx, useInterceptor)\n  }\n\n  return await invokeFunction(ctx, useInterceptor)\n}\n\n// invoke cloud function\nasync function invokeFunction(\n  ctx: FunctionContext,\n  useInterceptor: boolean,\n): Promise<any> {\n  const requestId = ctx.requestId\n\n  // trigger mode\n  let isTrigger = false\n  if (parseToken(ctx.request.get('x-laf-trigger-token'))) {\n    isTrigger = true\n  }\n\n  const name = ctx.__function_name\n\n  let func = FunctionCache.get(name)\n  if (!func) {\n    func = FunctionCache.get(DEFAULT_FUNCTION_NAME)\n    if (!func) {\n      return ctx.response.status(404).send('Function Not Found')\n    }\n  }\n  // reject while no HTTP enabled\n  if (!func.methods.includes(ctx.request.method.toUpperCase()) && !isTrigger) {\n    return ctx.response.status(405).send('Method Not Allowed')\n  }\n\n  const logger = new Console(func.name)\n  try {\n    // execute the func\n    const executor = new FunctionExecutor(func)\n    const result = await executor.invoke(ctx, useInterceptor)\n\n    if (result.error) {\n      logger.error(result.error)\n      return ctx.response.status(500).send({\n        error: 'Internal Server Error',\n        requestId,\n      })\n    }\n\n    // reject request if interceptor return false\n    if (\n      result.data?.__type__ === '__interceptor__' &&\n      result.data?.__res__ == false\n    ) {\n      return ctx.response.status(403).send({ error: 'Forbidden', requestId })\n    }\n\n    if (ctx.response.writableEnded === false) {\n      let data = result.data\n      if (typeof result.data === 'number') {\n        data = Number(result.data).toString()\n      }\n      return ctx.response.send(data)\n    }\n  } catch (error) {\n    logger.error(requestId, 'failed to invoke error', error)\n    return ctx.response.status(500).send('Internal Server Error')\n  }\n}\n\n// invoke debug function\nasync function invokeDebug(\n  ctx: FunctionContext,\n  useInterceptor: boolean,\n): Promise<any> {\n  // verify the debug token\n  const token = ctx.request.get('x-laf-develop-token')\n  if (!token) {\n    return ctx.response.status(400).send('x-laf-develop-token is required')\n  }\n\n  const auth = parseToken(token) || null\n  if (auth?.type !== 'develop') {\n    return ctx.response\n      .status(403)\n      .send('permission denied: invalid develop token')\n  }\n\n  // parse func_data\n  let funcData: ICloudFunctionData\n\n  // get func_data from header `x-laf-debug-data`\n  if (ctx.request.get('x-laf-debug-data')) {\n    const funcStr = ctx.request.get('x-laf-debug-data')\n    try {\n      // decode base64 string\n      const compressed = base64ToUint8Array(funcStr)\n      const restored = pako.ungzip(compressed, { to: 'string' })\n      funcData = JSON.parse(restored)\n    } catch (error) {\n      return ctx.response.status(400).send('x-laf-debug-data is invalid')\n    }\n  } else if (ctx.request.get('x-laf-func-data')) {\n    // reserve 'x-laf-func-data' check to keep compatible to old clients (laf-web, laf-cli)\n    const funcStr = ctx.request.get('x-laf-func-data')\n    try {\n      const decoded = decodeURIComponent(funcStr)\n      funcData = JSON.parse(decoded)\n    } catch (error) {\n      return ctx.response.status(400).send('x-laf-func-data is invalid')\n    }\n  } else {\n    return ctx.response.status(400).send('x-laf-debug-data is required')\n  }\n\n  const requestId = ctx.requestId\n  const funcName = ctx.request.params?.name\n\n  if (!funcData) {\n    return ctx.response.send({\n      code: 1,\n      error: 'function data not found',\n      requestId,\n    })\n  }\n\n  // for debug usage\n  require('source-map-support').install({\n    emptyCacheBetweenOperations: true,\n    overrideRetrieveFile: true,\n    retrieveFile: (path) =>\n      funcName === path\n        ? funcData.source.compiled\n        : FunctionCache.get(path)?.source.compiled,\n  })\n\n  const debugConsole = new DebugConsole(funcName)\n  const executor = new FunctionDebugExecutor(funcData, debugConsole)\n\n  try {\n    // execute the func\n    ctx.__function_name = funcName\n    const result = await executor.invoke(ctx, useInterceptor)\n\n    // set logs to response header\n    if (result.error) {\n      debugConsole.error(result.error)\n    }\n\n    // In the http module of Node.js, the chunkedEncoding property is used to\n    // indicate whether to use chunked transfer encoding.\n    // If set to true, Node.js automatically handles the splitting and sending of data chunks.\n    // If set to false, the headers have been sent, so do not send logs headers after that, otherwise an error will be reported.\n    if (ctx.response.chunkedEncoding === false) {\n      const logs = debugConsole.getLogs()\n      if (ctx.request.get('x-laf-debug-data')) {\n        const compressed = pako.gzip(logs)\n        const base64Encoded = uint8ArrayToBase64(compressed)\n        ctx.response.set('x-laf-debug-logs', base64Encoded)\n      } else if (ctx.request.get('x-laf-func-data')) {\n        // keep compatible for old version clients(laf web & laf cli)\n        const encoded = encodeURIComponent(logs)\n        ctx.response.set('x-laf-func-logs', encoded)\n      }\n\n      ctx.response.set('x-laf-debug-time-usage', result.time_usage.toString())\n    }\n\n    if (result.error) {\n      return ctx.response.status(500).send({\n        error: 'Internal Server Error',\n        requestId,\n      })\n    }\n\n    // reject request if interceptor return false\n    if (\n      result.data?.__type__ === '__interceptor__' &&\n      result.data?.__res__ === false\n    ) {\n      return ctx.response.status(403).send({ error: 'Forbidden', requestId })\n    }\n\n    if (ctx.response.chunkedEncoding === false) {\n      let data = result.data\n      if (typeof result.data === 'number') {\n        data = Number(result.data).toString()\n      }\n      return ctx.response.send(data)\n    }\n  } catch (error) {\n    debugConsole.error(requestId, 'failed to invoke error', error)\n    return ctx.response.status(500).send('Internal Server Error')\n  } finally {\n    // restore\n    require('source-map-support').install({\n      emptyCacheBetweenOperations: true,\n      overrideRetrieveFile: true,\n      retrieveFile: (path) => FunctionCache.get(path)?.source.compiled,\n    })\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/handler/openapi.ts",
    "content": "import { Response } from 'express'\nimport { parseToken } from '../support/token'\nimport { IRequest } from '../support/types'\nimport { buildOpenAPIDefinition } from '../support/openapi'\nimport Config from '../config'\n\nexport async function handleOpenAPIDefinition(req: IRequest, res: Response) {\n  // verify the openapi token\n  const token = req.query['token'] as string\n  if (!token) {\n    return res.status(400).send('x-laf-openapi-token is required')\n  }\n  const auth = parseToken(token) || null\n  if (auth?.type !== 'openapi') {\n    return res.status(403).send('permission denied: invalid openapi token')\n  }\n\n  const doc = buildOpenAPIDefinition({\n    title: `Laf Application ${Config.APPID} Cloud Function API`,\n    version: '1.0.0',\n    host: req.get('host'),\n    apiVersion: '3.0.0',\n  })\n  res.json(doc)\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/handler/router.ts",
    "content": "/*\n * @Author: Maslow<wangfugen@126.com>\n * @Date: 2021-07-30 10:30:29\n * @LastEditTime: 2022-02-03 00:32:16\n * @Description:\n */\n\nimport { Router } from 'express'\nimport multer from 'multer'\nimport * as path from 'path'\n\nimport { handleDatabaseProxy } from './db-proxy'\nimport { handlePackageTypings } from './typings'\nimport { generateUUID } from '../support/utils'\nimport { handleInvokeFunction } from './invoke'\nimport { DatabaseAgent } from '../db'\nimport { handleOpenAPIDefinition } from './openapi'\n\n/**\n * multer uploader config\n */\nconst uploader = multer({\n  storage: multer.diskStorage({\n    filename: (_req, file, cb) => {\n      const { ext } = path.parse(file.originalname)\n      cb(null, generateUUID() + ext)\n    },\n  }),\n  fileFilter(_req, file, callback) {\n    // solve the problem of garbled unicode names\n    file.originalname = Buffer.from(file.originalname, 'latin1').toString(\n      'utf8',\n    )\n    callback(null, true)\n  },\n})\n\nexport const router = Router()\n\nrouter.post('/proxy/:policy', handleDatabaseProxy)\nrouter.get('/_/typing/package', handlePackageTypings)\nrouter.get('/_/healthz', (_req, res) => {\n  if (DatabaseAgent.client) {\n    res.status(200).send('ok')\n  } else {\n    res.status(503).send('db is not ready')\n  }\n})\nrouter.get('/_/api-docs', handleOpenAPIDefinition)\n/**\n * Invoke cloud function through HTTP request.\n * @method *\n */\n// router.all('/:name', uploader.any(), handleInvokeFunction)\nrouter.all('*', uploader.any(), (req, res) => {\n  let func_name = req.path\n\n  // remove the leading slash\n  if (func_name.startsWith('/')) {\n    func_name = func_name.slice(1)\n  }\n\n  // check length\n  if (func_name.length > 256) {\n    return res.status(500).send('function name is too long')\n  }\n\n  req.params['name'] = func_name\n  handleInvokeFunction(req, res)\n})\n"
  },
  {
    "path": "runtimes/nodejs/src/handler/typings.ts",
    "content": "/*\n * @Author: Maslow<wangfugen@126.com>\n * @Date: 2021-07-30 10:30:29\n * @LastEditTime: 2021-08-18 16:49:35\n * @Description:\n */\n\nimport { Response } from 'express'\nimport { PackageDeclaration, NodePackageDeclarations } from 'node-modules-utils'\nimport path = require('path')\nimport { logger } from '../support/logger'\nimport { IRequest } from '../support/types'\nimport { parseToken } from '../support/token'\nimport { FunctionCache } from '../support/engine'\nimport Config from '../config'\nimport * as fs from 'fs'\n\nconst nodeModulesRoot = path.resolve(__dirname, '../../node_modules')\n\n/**\n * Gets declaration files of a dependency package\n */\nexport async function handlePackageTypings(req: IRequest, res: Response) {\n  // verify the debug token\n  const token = req.get('x-laf-develop-token')\n  if (!token) {\n    return res.status(400).send('x-laf-develop-token is required')\n  }\n  const auth = parseToken(token) || null\n  if (auth?.type !== 'develop') {\n    return res.status(403).send('permission denied: invalid develop token')\n  }\n\n  const packageName = req.query.packageName as string\n  if (!packageName) {\n    return res.status(422).send('invalid package name')\n  }\n\n  // Get all node built-in packages' types\n  if (packageName === '@types/node') {\n    const pkr = new NodePackageDeclarations(nodeModulesRoot)\n    const rets = []\n    for (const name of NodePackageDeclarations.NODE_PACKAGES) {\n      const r = await pkr.getNodeBuiltinPackage(name)\n      rets.push(r)\n    }\n\n    return res.send({\n      code: 0,\n      data: rets,\n    })\n  }\n\n  // Gets a node built-in package types\n  if (NodePackageDeclarations.NODE_PACKAGES.includes(packageName)) {\n    const pkr = new NodePackageDeclarations(nodeModulesRoot)\n    const r = await pkr.getNodeBuiltinPackage(packageName)\n\n    return res.send({\n      code: 0,\n      data: [r],\n    })\n  }\n\n  // get cloud function types\n  if (packageName.startsWith('@/')) {\n    const func = FunctionCache.get(packageName.replace('@/', ''))\n    const r = {\n      packageName: packageName,\n      content: func.source.code,\n      path: `${packageName}/index.ts`,\n      from: 'node',\n    }\n    return res.send({\n      code: 0,\n      data: [r],\n    })\n  }\n\n  // get custom dependency types\n  const customDependencyPath = `${Config.CUSTOM_DEPENDENCY_BASE_PATH}/node_modules/`\n  if (fs.existsSync(`${customDependencyPath}/${packageName}`)) {\n    getThreePartyPackageTypings(req, res, customDependencyPath, packageName)\n  } else {\n    getThreePartyPackageTypings(req, res, nodeModulesRoot, packageName)\n  }\n}\n\nasync function getThreePartyPackageTypings(\n  req: IRequest,\n  res: Response,\n  basePath: string,\n  packageName: string,\n) {\n  const requestId = req['requestId']\n  try {\n    // Gets other three-party package types\n    const pkd = new PackageDeclaration(packageName, basePath)\n    await pkd.load()\n    return res.send({\n      code: 0,\n      data: pkd.declarations,\n    })\n  } catch (error) {\n    if (!Config.isProd) {\n      logger.error(requestId, 'failed to get package typings', error)\n    }\n\n    return res.send({\n      code: 1,\n      error: error.toString(),\n    })\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/index.ts",
    "content": "/*\n * @Author: Maslow<wangfugen@126.com>\n * @Date: 2021-07-30 10:30:29\n * @LastEditTime: 2022-01-20 13:55:22\n * @Description:\n */\n\nimport express from 'express'\nimport cors from 'cors'\n\nimport { parseToken, splitBearerToken } from './support/token'\nimport Config from './config'\nimport { router } from './handler/router'\nimport { logger } from './support/logger'\nimport { GetClientIPFromRequest, generateUUID } from './support/utils'\nimport { WebSocketAgent } from './support/ws'\nimport { DatabaseAgent } from './db'\nimport xmlparser from 'express-xml-bodyparser'\n\n// init static method of class\nimport './support/cloud-sdk'\nimport storageServer from './storage-server'\nimport { DatabaseChangeStream } from './support/database-change-stream'\nimport url from 'url'\n\nimport { LspWebSocket } from './support/lsp'\nimport { createCloudSdk } from './support/cloud-sdk'\nimport { FunctionCache } from './support/engine'\n\nrequire('source-map-support').install({\n  emptyCacheBetweenOperations: true,\n  overrideRetrieveFile: true,\n  retrieveFile: (path) => FunctionCache.get(path)?.source.compiled,\n})\n\n// hack: set createCloudSdk to global object to make it available in @lafjs/cloud package\nglobalThis.createCloudSdk = createCloudSdk\n\nconst app = express()\n\nDatabaseAgent.ready.then(() => {\n  DatabaseChangeStream.initialize()\n})\n\napp.use(\n  cors({\n    origin: true,\n    methods: '*',\n    exposedHeaders: '*',\n    credentials: true,\n    maxAge: 86400,\n  }),\n)\n\n// fix x-real-ip while gateway not set\napp.use((req, _res, next) => {\n  if (!req.headers['x-real-ip']) {\n    req.headers['x-real-ip'] = GetClientIPFromRequest(req)\n  }\n  next()\n})\n\napp.use(express.json({ limit: Config.REQUEST_LIMIT_SIZE }) as any)\napp.use(\n  express.urlencoded({\n    limit: Config.REQUEST_LIMIT_SIZE,\n    extended: true,\n  }) as any,\n)\napp.use(\n  express.raw({\n    limit: Config.REQUEST_LIMIT_SIZE,\n  }) as any,\n)\n\napp.use(xmlparser())\n\nprocess.on('unhandledRejection', (reason, promise) => {\n  logger.error(`Caught unhandledRejection:`, reason, promise)\n})\n\nprocess.on('uncaughtException', (err) => {\n  logger.error(`Caught uncaughtException:`, err)\n})\n\n/**\n * Parsing bearer token\n */\napp.use(function (req, res, next) {\n  const token = splitBearerToken(req.headers['authorization'] ?? '')\n  const auth = parseToken(token) || null\n  req['user'] = auth\n\n  const requestId = (req['requestId'] =\n    req.headers['x-request-id'] || generateUUID())\n  res.set('request-id', requestId)\n  next()\n})\n\napp.use(router)\n\nconst server = app.listen(Config.PORT, () =>\n  logger.info(`server ${process.pid} listened on ${Config.PORT}`),\n)\n\n// set keepAliveTimeout from config (default 60 seconds)\nserver.keepAliveTimeout = Config.KEEP_ALIVE_TIMEOUT\n\n/**\n * WebSocket upgrade & connect\n */\nserver.on('upgrade', (req, socket, head) => {\n  const pathname = req.url ? url.parse(req.url).pathname : undefined\n  if (pathname === '/_/lsp') {\n    LspWebSocket.handleUpgrade(req, socket, head)\n    return\n  }\n\n  WebSocketAgent.server.handleUpgrade(req, socket as any, head, (client) => {\n    WebSocketAgent.server.emit('connection', client, req)\n  })\n})\n\nprocess.on('SIGTERM', gracefullyExit)\nprocess.on('SIGINT', gracefullyExit)\n\nasync function gracefullyExit() {\n  await DatabaseAgent.accessor.close()\n  await server.close()\n  await storageServer.close()\n\n  logger.info('process gracefully exited!')\n  process.exit(0)\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/init.ts",
    "content": "import { execSync } from 'child_process'\nimport Config from './config'\n\nimport { logger } from './support/logger'\n\nasync function main() {\n  try {\n    installPackages()\n  } catch (error) {\n    logger.error(error)\n    return 1\n  }\n\n  return 0\n}\n\nmain()\n  .then((code) => {\n    process.exit(code)\n  })\n  .catch((err) => {\n    logger.error(err)\n    process.exit(2)\n  })\n\n/**\n * Install packages\n * @param packages\n * @returns\n */\nexport function installPackages() {\n  const deps = process.env.DEPENDENCIES\n  if (!deps) {\n    return\n  }\n\n  const flags = Config.NPM_INSTALL_FLAGS\n  logger.info('run command: ', `npm install ${deps} ${flags}`)\n  const r = execSync(`npm install ${deps} ${flags}`)\n  console.log(r.toString())\n}\n\n/**\n * Check if node module exists\n * @param moduleName\n * @returns\n */\nexport function moduleExists(mod: string) {\n  try {\n    require.resolve(mod)\n    return true\n  } catch (_err) {\n    return false\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/storage-server.ts",
    "content": "import * as http from 'http'\nimport Config from './config'\nimport { logger } from './support/logger'\nimport './support/cloud-sdk'\nimport { WebsiteHostingChangeStream } from './support/database-change-stream/website-hosting-change-stream'\nimport axios, { AxiosError } from 'axios'\n\nconst tryPath = (bucket: string, path: string): string[] => {\n  return path.endsWith('/')\n    ? [`/${bucket}${path}index.html`, `/${bucket}/index.html`]\n    : [\n        `/${bucket}${path}`,\n        `/${bucket}${path}/index.html`,\n        `/${bucket}/index.html`,\n      ]\n}\n\nconst websiteHostingPathHandler = async (\n  host: string,\n  url: string,\n): Promise<string> => {\n  const websiteHosting = WebsiteHostingChangeStream.websiteHosting.find(\n    (item) => host === item.domain,\n  )\n  if (!websiteHosting) {\n    return url\n  }\n\n  const minioUrl = new URL(url, Config.OSS_INTERNAL_ENDPOINT)\n\n  const paths = tryPath(websiteHosting.bucketName, minioUrl.pathname)\n\n  for (const path of paths) {\n    minioUrl.pathname = path\n    try {\n      await axios.head(minioUrl.toString())\n      // Url.pathname only contain path eg: /path , Url.search only contain query string eg: ?query=string\n      return minioUrl.pathname + minioUrl.search\n    } catch (err) {\n      if ((err as AxiosError).response?.status !== 404) {\n        break\n      }\n    }\n  }\n  return url // If all paths are unavailable, the original url string is returned.\n}\n\nconst storageServer = http.createServer(\n  async (req: http.IncomingMessage, res: http.ServerResponse) => {\n    const headers = {\n      'Access-Control-Allow-Origin': req.headers.origin || '*',\n      'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE',\n      'Access-Control-Allow-Headers': '*',\n      'Access-Control-Allow-Credentials': 'true',\n    }\n\n    if (req.method === 'OPTIONS') {\n      res.writeHead(204, headers)\n      res.end()\n      return\n    }\n\n    try {\n      const proxyReqUrl = new URL(Config.OSS_INTERNAL_ENDPOINT)\n\n      const path = await websiteHostingPathHandler(\n        req.headers.host || '',\n        req.url || '',\n      )\n\n      const proxyReq = http.request({\n        host: proxyReqUrl.hostname,\n        port: proxyReqUrl.port,\n        headers: req.headers,\n        method: req.method,\n        path: path, // contain query string eg: /path?query=string\n      })\n\n      proxyReq.on('response', (proxyRes: http.IncomingMessage) => {\n        res.writeHead(proxyRes.statusCode || 500, proxyRes.headers)\n        proxyRes.pipe(res)\n      })\n\n      proxyReq.on('error', (err) => {\n        req.emit('close')\n        proxyReq.emit('close')\n        logger.error('Proxy request error:', err)\n        if (!res.headersSent) {\n          res.writeHead(500)\n          res.end('Internal Server Error')\n        }\n      })\n\n      proxyReq.on('close', () => {\n        proxyReq.removeAllListeners()\n        proxyReq.destroy()\n      })\n\n      req.on('aborted', () => {\n        proxyReq.emit('close')\n        req.emit('close')\n        if (!res.headersSent) {\n          res.writeHead(504)\n        }\n        res.end()\n      })\n\n      req.on('close', () => {\n        req.removeAllListeners()\n        req.destroy()\n      })\n\n      req.on('error', (err) => {\n        req.emit('close')\n        proxyReq.emit('close')\n        logger.error('Source request error:', err)\n        if (!res.headersSent) {\n          res.writeHead(500)\n          res.end('Internal Server Error')\n        }\n      })\n\n      req.pipe(proxyReq)\n    } catch (err) {\n      logger.error('Error handling request:', err)\n      if (!res.headersSent) {\n        res.writeHead(500)\n        res.end('Internal Server Error')\n      }\n    }\n  },\n)\n\nstorageServer.listen(Config.STORAGE_PORT, () => {\n  logger.info(\n    `Storage server ${process.pid} listened on ${Config.STORAGE_PORT}`,\n  )\n})\n\nexport default storageServer\n"
  },
  {
    "path": "runtimes/nodejs/src/support/cloud-sdk.ts",
    "content": "import { CloudSdkInterface, Cloud } from '@lafjs/cloud'\nimport { getDb } from 'database-proxy'\nimport { DatabaseAgent } from '../db'\nimport { getToken, parseToken } from './token'\nimport { WebSocketAgent } from './ws'\nimport Config from '../config'\nimport { FunctionContext } from './engine'\nimport { FunctionModule } from './engine/module'\n\nif (!Cloud.create) {\n  Cloud.create = createCloudSdk\n}\n\n/**\n * object shared cross all functions & requests\n */\nconst _shared_preference = new Map<string, any>()\n\n/**\n * Create a new Cloud SDK instance\n *\n * @returns\n */\nexport function createCloudSdk() {\n  const cloud: CloudSdkInterface = {\n    database: () => getDb(DatabaseAgent.accessor),\n    invoke: invokeInFunction,\n    shared: _shared_preference,\n    getToken: getToken,\n    parseToken: parseToken,\n    mongo: {\n      client: DatabaseAgent.client as any,\n      db: DatabaseAgent.db as any,\n    },\n    sockets: WebSocketAgent.clients,\n    appid: Config.APPID,\n    get env() {\n      return process.env\n    },\n    storage: null,\n  }\n\n  /**\n   * Ensure the database is connected, update its Mongo object, otherwise it is null\n   */\n  DatabaseAgent.ready.then(() => {\n    cloud.mongo.client = DatabaseAgent.client as any\n    cloud.mongo.db = DatabaseAgent.accessor.db as any\n  })\n  return cloud\n}\n\n/**\n * The cloud function is invoked in the cloud function, which runs in the cloud function.\n *\n * @param name the name of cloud function to be invoked\n * @ctx ctx the invoke params\n * @returns\n */\nasync function invokeInFunction(name: string, ctx?: FunctionContext) {\n  const mod = FunctionModule.get(name)\n  const func = mod?.default || mod?.main\n\n  if (!func) {\n    throw new Error(`invoke() failed to get function: ${name}`)\n  }\n\n  ctx = ctx ?? ({} as any)\n  ctx.__function_name = name\n\n  ctx.requestId = ctx.requestId ?? 'invoke'\n\n  ctx.method = ctx.method ?? 'call'\n\n  return await func(ctx)\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/database-change-stream/conf-change-stream.ts",
    "content": "import { CONFIG_COLLECTION } from '../../constants'\nimport { DatabaseAgent } from '../../db'\nimport { DatabaseChangeStream } from '.'\n// import {\n//   installDependencies,\n//   uninstallDependencies,\n// } from '../module-hot-reload'\n\nexport class ConfChangeStream {\n  static dependencies = []\n\n  static initialize() {\n    this.updateConfig(true)\n\n    DatabaseChangeStream.onStreamChange(CONFIG_COLLECTION, () =>\n      this.updateConfig(false),\n    )\n  }\n\n  private static async updateConfig(init = false) {\n    const conf = await DatabaseAgent.db\n      .collection(CONFIG_COLLECTION)\n      .findOne({})\n\n    if (!conf) {\n      return\n    }\n\n    const environments = conf.environments || []\n    for (const env of environments) {\n      process.env[env.name] = env.value\n    }\n\n    if (init) {\n      ConfChangeStream.dependencies = conf.dependencies\n      return\n    }\n\n    /*\n    hot reload dependencies\n    */\n\n    // const newDeps = []\n    // const unneededDeps = []\n\n    // for (const dep of conf.dependencies) {\n    //   if (!ConfChangeStream.dependencies.includes(dep)) {\n    //     newDeps.push(dep)\n    //   }\n    // }\n\n    // for (const dep of ConfChangeStream.dependencies) {\n    //   if (!conf.dependencies.includes(dep)) {\n    //     unneededDeps.push(dep)\n    //   }\n    // }\n\n    // ConfChangeStream.dependencies = conf.dependencies\n\n    // if (newDeps.length > 0) {\n    //   installDependencies(newDeps)\n    // }\n    // if (unneededDeps.length > 0) {\n    //   uninstallDependencies(unneededDeps)\n    // }\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/database-change-stream/index.ts",
    "content": "import EventEmitter from 'events'\nimport { DatabaseAgent } from '../../db'\nimport { logger } from '../logger'\nimport Config from '../../config'\nimport {\n  CLOUD_FUNCTION_COLLECTION,\n  CONFIG_COLLECTION,\n  WEBSITE_HOSTING_COLLECTION,\n} from '../../constants'\nimport { ConfChangeStream } from './conf-change-stream'\nimport { WebsiteHostingChangeStream } from './website-hosting-change-stream'\nimport { FunctionCache } from '../engine'\n\nconst collectionsToWatch = [\n  {\n    name: CONFIG_COLLECTION,\n    handler: () => ConfChangeStream,\n  },\n  {\n    name: WEBSITE_HOSTING_COLLECTION,\n    handler: () => WebsiteHostingChangeStream,\n  },\n  {\n    name: CLOUD_FUNCTION_COLLECTION,\n    handler: () => FunctionCache,\n  },\n] as const\n\nexport class DatabaseChangeStream extends EventEmitter {\n  private static instance: DatabaseChangeStream\n\n  private constructor() {\n    super()\n  }\n\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new DatabaseChangeStream()\n    }\n    return this.instance\n  }\n\n  initializeForCollection(collectionName: string) {\n    const stream = DatabaseAgent.db.collection(collectionName).watch()\n\n    stream.on('change', (change) => {\n      this.emit(collectionName, change)\n    })\n\n    stream.once('close', () => {\n      stream.off('change', this.emit)\n      logger.error(`${collectionName} collection change stream closed.`)\n\n      setTimeout(() => {\n        logger.info(\n          `Reconnecting ${collectionName} collection change stream...`,\n        )\n        this.initializeForCollection(collectionName)\n      }, Config.CHANGE_STREAM_RECONNECT_INTERVAL)\n    })\n  }\n\n  static initialize() {\n    const instance = DatabaseChangeStream.getInstance()\n\n    collectionsToWatch.forEach((v) => {\n      instance.initializeForCollection(v.name)\n      v.handler().initialize()\n    })\n  }\n\n  static onStreamChange(\n    collectionName: (typeof collectionsToWatch)[number]['name'],\n    listener: (...args: any[]) => void,\n  ) {\n    const instance = DatabaseChangeStream.getInstance()\n    instance.on(collectionName, listener)\n  }\n\n  static removeAllListeners() {\n    const instance = DatabaseChangeStream.getInstance()\n    instance.removeAllListeners()\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/database-change-stream/website-hosting-change-stream.ts",
    "content": "import { DatabaseChangeStream } from '.'\nimport { WEBSITE_HOSTING_COLLECTION } from '../../constants'\nimport { DatabaseAgent } from '../../db'\n\nexport class WebsiteHostingChangeStream {\n  static websiteHosting = []\n\n  static initialize() {\n    this.onStreamChange()\n\n    DatabaseChangeStream.onStreamChange(\n      WEBSITE_HOSTING_COLLECTION,\n      this.onStreamChange.bind(this),\n    )\n  }\n\n  static async onStreamChange() {\n    const websiteHosting = await DatabaseAgent.db\n      .collection(WEBSITE_HOSTING_COLLECTION)\n      .find()\n      .toArray()\n    this.websiteHosting = websiteHosting\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/engine/cache.ts",
    "content": "import { ICloudFunctionData } from './types'\nimport { logger } from '../logger'\nimport { DatabaseAgent } from '../../db'\nimport { CLOUD_FUNCTION_COLLECTION } from '../../constants'\nimport { InitHook } from '../init-hook'\nimport { DatabaseChangeStream } from '../database-change-stream'\nimport { FunctionModule } from './module'\nimport { ChangeStreamDocument } from 'mongodb'\n\nexport class FunctionCache {\n  private static cache: Map<string, ICloudFunctionData> = new Map()\n\n  static async initialize(): Promise<void> {\n    logger.info('initialize function cache')\n    const funcs = await DatabaseAgent.db\n      .collection<ICloudFunctionData>(CLOUD_FUNCTION_COLLECTION)\n      .find()\n      .toArray()\n\n    for (const func of funcs) {\n      FunctionCache.cache.set(func.name, func)\n    }\n\n    DatabaseChangeStream.onStreamChange(\n      CLOUD_FUNCTION_COLLECTION,\n      FunctionCache.streamChange.bind(this),\n    )\n    logger.info('Function cache initialized.')\n\n    // invoke init function\n    InitHook.invoke()\n  }\n\n  /**\n   * stream the change of cloud function\n   * @param change\n   * @returns\n   */\n  private static async streamChange(\n    change: ChangeStreamDocument<ICloudFunctionData>,\n  ): Promise<void> {\n    if (change.operationType === 'insert') {\n      const func = await DatabaseAgent.db\n        .collection<ICloudFunctionData>(CLOUD_FUNCTION_COLLECTION)\n        .findOne({ _id: change.documentKey._id })\n\n      // add func in map\n      FunctionCache.cache.set(func.name, func)\n    } else if (change.operationType == 'delete') {\n      FunctionModule.deleteCache()\n      // remove this func\n      for (const [funcName, func] of this.cache) {\n        if (change.documentKey._id.equals(func._id)) {\n          FunctionCache.cache.delete(funcName)\n        }\n      }\n    }\n  }\n\n  static get(name: string): ICloudFunctionData {\n    return FunctionCache.cache.get(name)\n  }\n\n  static getAll(): ICloudFunctionData[] {\n    return Array.from(FunctionCache.cache.values())\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/engine/console.ts",
    "content": "import * as util from 'util'\nimport chalk from 'chalk'\nimport { padStart } from 'lodash'\nimport Config from '../../config'\n\nenum LogLevel {\n  DEBUG = 'DEBUG',\n  INFO = 'INFO',\n  WARN = 'WARN',\n  ERROR = 'ERROR',\n}\n\nexport class Console {\n  category: string\n\n  constructor(category: string) {\n    this.category = category\n  }\n\n  protected _format(level: LogLevel, ...params: any[]): string {\n    const time = chalk.gray(new Date().toISOString())\n    let levelStr = padStart(level, 5, ' ')\n    if (level === LogLevel.INFO) {\n      levelStr = chalk.gray(levelStr)\n    } else {\n      levelStr = this._colorize(level, levelStr)\n    }\n\n    const fn = chalk.blueBright(`[${this.category}]`)\n\n    let location = ''\n    if (this._shouldDisplayLine(level)) {\n      try {\n        throw new Error()\n      } catch (e) {\n        try {\n          // exclude involuntary log\n          if (e.stack.includes('Executor.invoke')) {\n            const msgs = e.stack.includes('at DebugConsole._format')\n              ? e.stack.split('\\n')[4].split(':')\n              : e.stack.split('\\n')[3].split(':')\n            const line = msgs[1]\n            let loc = msgs[0].match(/at (.*?) \\(/)[1]\n            loc = loc === 'default_1' ? 'MAIN' : loc\n            location = chalk.gray(`(${loc}:${line})`)\n          }\n        } catch {}\n      }\n    }\n\n    const content = params\n      .map((param) => {\n        if (typeof param === 'string') return this._colorize(level, param)\n        if (typeof param === 'object') {\n          return this._colorize(\n            level,\n            util.inspect(param, { depth: Config.LOG_DEPTH, colors: true }),\n          )\n        }\n        return this._colorize(level, param)\n      })\n      .join(' ')\n\n    // content = this._colorize(level, content)\n    const data = `${time} ${levelStr} ${fn}${location} ${content}`\n    return data\n  }\n\n  debug(...params: any[]) {\n    if (!this._shouldLog(LogLevel.DEBUG)) return\n    const data = this._format(LogLevel.DEBUG, ...params)\n    console.debug(data)\n  }\n\n  info(...params: any[]) {\n    if (!this._shouldLog(LogLevel.INFO)) return\n    const data = this._format(LogLevel.INFO, ...params)\n    console.info(data)\n  }\n\n  log(...params: any[]) {\n    if (!this._shouldLog(LogLevel.INFO)) return\n    const data = this._format(LogLevel.INFO, ...params)\n    console.log(data)\n  }\n\n  warn(...params: any[]) {\n    if (!this._shouldLog(LogLevel.WARN)) return\n    const data = this._format(LogLevel.WARN, ...params)\n    console.warn(data)\n  }\n\n  error(...params: any[]) {\n    if (!this._shouldLog(LogLevel.ERROR)) return\n    const data = this._format(LogLevel.ERROR, ...params)\n    console.error(data)\n  }\n\n  protected _colorize(level: LogLevel, data: any) {\n    let result = data\n    switch (level) {\n      case LogLevel.DEBUG:\n        result = chalk.cyan(data)\n        break\n      case LogLevel.WARN:\n        result = chalk.yellow(data)\n        break\n      case LogLevel.ERROR:\n        result = chalk.red(data)\n        break\n      default:\n        result = data\n        break\n    }\n    return result\n  }\n\n  protected _shouldLog(level: LogLevel) {\n    const LogLevelValue = {\n      [LogLevel.DEBUG]: 0,\n      [LogLevel.INFO]: 1,\n      [LogLevel.WARN]: 2,\n      [LogLevel.ERROR]: 3,\n    }\n    const configLevel = (Config.LOG_LEVEL || 'debug').toUpperCase()\n    const configLevelValue = LogLevelValue[configLevel] ?? 0\n    return LogLevelValue[level] >= configLevelValue\n  }\n\n  protected _shouldDisplayLine(level: LogLevel) {\n    const LogLevelValue = {\n      [LogLevel.INFO]: 1,\n      [LogLevel.WARN]: 2,\n      [LogLevel.ERROR]: 3,\n      [LogLevel.DEBUG]: 4,\n    }\n    const configLevel = (Config.DISPLAY_LINE_LOG_LEVEL || 'error').toUpperCase()\n    const configLevelValue = LogLevelValue[configLevel] ?? 3\n    return LogLevelValue[level] >= configLevelValue\n  }\n}\n\nexport class DebugConsole extends Console {\n  constructor(category: string) {\n    super(category)\n  }\n\n  private _logs: string[] = []\n\n  protected _format(level: LogLevel, ...params: any[]): string {\n    const data = super._format(level, ...params)\n    this._logs.push(data)\n    return data\n  }\n\n  getLogs() {\n    return JSON.stringify(this._logs)\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/engine/executor.ts",
    "content": "import { FunctionContext, FunctionResult, ICloudFunctionData } from './types'\nimport { nanosecond2ms } from '../utils'\nimport { INTERCEPTOR_FUNCTION_NAME } from '../../constants'\nimport { FunctionModule } from './module'\nimport assert from 'assert'\nimport { DebugConsole } from './console'\nimport { logger } from '../logger'\n\nexport class FunctionExecutor {\n  /**\n   * cloud function data struct\n   */\n  protected data: ICloudFunctionData\n  constructor(data: ICloudFunctionData) {\n    assert(data, 'function data cannot be empty')\n    this.data = data\n  }\n\n  async invoke(\n    context: FunctionContext,\n    useInterceptor: boolean,\n  ): Promise<FunctionResult> {\n    const startTime = process.hrtime.bigint()\n\n    try {\n      const mod = this.getModule()\n      const main = mod.default || mod.main\n      if (!main) {\n        throw new Error('FunctionExecutionError: `main` function not found')\n      }\n\n      if (typeof main !== 'function') {\n        throw new Error(\n          'FunctionExecutionError: `main` function must be callable',\n        )\n      }\n\n      let data = null\n      if (this.data.name === INTERCEPTOR_FUNCTION_NAME) {\n        data = await main(context, () => {})\n      } else if (useInterceptor) {\n        data = await this.invokeWithInterceptor(context, main)\n      } else {\n        data = await main(context)\n      }\n\n      const endTime = process.hrtime.bigint()\n      const timeUsage = nanosecond2ms(endTime - startTime)\n      return {\n        data,\n        time_usage: timeUsage,\n      }\n    } catch (error) {\n      const endTime = process.hrtime.bigint()\n      const timeUsage = nanosecond2ms(endTime - startTime)\n\n      return {\n        error,\n        time_usage: timeUsage,\n      }\n    }\n  }\n\n  protected async invokeWithInterceptor(\n    context: FunctionContext,\n    next?: (context: FunctionContext) => Promise<unknown>,\n  ) {\n    const mod = FunctionModule.get(INTERCEPTOR_FUNCTION_NAME)\n    const interceptor = mod.default || mod.main\n    if (!interceptor) {\n      throw new Error(\n        'FunctionExecutionError: `__interceptor__` function not found',\n      )\n    }\n\n    if (typeof interceptor !== 'function') {\n      throw new Error(\n        'FunctionExecutionError: `__interceptor__` function must be callable',\n      )\n    }\n\n    if (interceptor.length === 2) {\n      return interceptor(context, next)\n    } else {\n      logger.warn(\n        'WARNING: the old style interceptor function is deprecated in `__interceptor__`, use `next()` as its second param instead',\n      )\n      const res = await interceptor(context)\n      if (res === false) {\n        return {\n          __type__: '__interceptor__',\n          __res__: false,\n        }\n      }\n      return next(context)\n    }\n  }\n\n  protected getModule() {\n    const mod = FunctionModule.get(this.data.name)\n    return mod\n  }\n}\n\nexport class FunctionDebugExecutor extends FunctionExecutor {\n  protected consoleInstance: DebugConsole\n\n  constructor(data: ICloudFunctionData, consoleInstance: DebugConsole) {\n    super(data)\n    this.consoleInstance = consoleInstance\n  }\n  /**\n   * @override override to\n   */\n  protected getModule() {\n    const name = this.data.name\n    const code = this.data.source.compiled\n    const mod = FunctionModule.compile(name, code, [], this.consoleInstance)\n    return mod\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/engine/index.ts",
    "content": "export * from './cache'\n\nexport * from './executor'\n\nexport * from './types'\n\nexport * from './console'\n"
  },
  {
    "path": "runtimes/nodejs/src/support/engine/module.ts",
    "content": "import { RunningScriptOptions } from 'vm'\nimport { FunctionCache, FunctionModuleGlobalContext } from '.'\nimport Config from '../../config'\nimport { Console } from '.'\nimport * as vm from 'vm'\nimport { createRequire } from 'node:module'\nimport * as path from 'node:path'\nimport { ObjectId } from 'mongodb'\n\nexport const CUSTOM_DEPENDENCY_NODE_MODULES_PATH = `${Config.CUSTOM_DEPENDENCY_BASE_PATH}/node_modules/`\n\nexport class FunctionModule {\n  protected static cache: Map<string, any> = new Map()\n\n  static customRequire = createRequire(CUSTOM_DEPENDENCY_NODE_MODULES_PATH)\n\n  static get(functionName: string): any {\n    const moduleName = `@/${functionName}`\n    return this.require(moduleName, [])\n  }\n\n  static require(moduleName: string, fromModule: string[], filename = ''): any {\n    if (moduleName === '@/cloud-sdk') {\n      return require('@lafjs/cloud')\n    } else if (\n      moduleName.startsWith('@/') ||\n      moduleName.startsWith('./') ||\n      moduleName.startsWith('../')\n    ) {\n      // get function name\n      let fn = ''\n      if (moduleName.startsWith('@/')) {\n        fn = moduleName.replace('@/', '')\n      } else {\n        const dirname = '/'\n        const filePath = path.join(path.dirname(dirname + filename), moduleName)\n        fn = filePath.slice(dirname.length)\n      }\n\n      // check cache\n      if (FunctionModule.cache.has(fn)) {\n        return FunctionModule.cache.get(fn)\n      }\n\n      // check circular dependency\n      if (fromModule?.indexOf(fn) !== -1) {\n        throw new Error(\n          `circular dependency detected: ${fromModule.join(' -> ')} -> ${fn}`,\n        )\n      }\n\n      // build function module\n      const data = FunctionCache.get(fn)\n      if (!data) {\n        throw new Error(`function ${fn} not found`)\n      }\n      const mod = this.compile(fn, data.source.compiled, fromModule)\n\n      // cache module\n      if (!Config.DISABLE_MODULE_CACHE) {\n        FunctionModule.cache.set(fn, mod)\n      }\n      return mod\n    }\n\n    // load custom dependency from custom dependency path first\n    try {\n      return FunctionModule.customRequire(moduleName)\n    } catch (e) {\n      return require(moduleName)\n    }\n  }\n\n  /**\n   * Compile function module\n   */\n  static compile(\n    functionName: string,\n    code: string,\n    fromModules: string[],\n    consoleInstance?: Console,\n  ): any {\n    const wrapped = this.wrap(code)\n    const sandbox = this.buildSandbox(\n      functionName,\n      fromModules,\n      consoleInstance,\n    )\n    const options: RunningScriptOptions = {\n      filename: functionName,\n      displayErrors: true,\n      contextCodeGeneration: {\n        strings: true,\n        wasm: true,\n      },\n    } as any\n\n    const script = this.createScript(wrapped, options)\n    return script.runInNewContext(sandbox, options)\n  }\n\n  static deleteCache(): void {\n    FunctionModule.cache.clear()\n  }\n\n  protected static wrap(code: string): string {\n    // ensure 1 line to balance line offset of error stack\n    return [\n      `function require(name){__from_modules.push(__filename);return __require(name,__from_modules,__filename);}`,\n      `${code}`,\n      `\\nmodule.exports;`,\n    ].join(' ')\n  }\n\n  /**\n   * Create vm.Script\n   */\n  protected static createScript(\n    code: string,\n    options: vm.RunningScriptOptions,\n  ): vm.Script {\n    const _options = {\n      ...options,\n      importModuleDynamically: async (\n        specifier: string,\n        _: vm.Script,\n        _importAssertions: any,\n      ) => {\n        try {\n          const resolvedPath = FunctionModule.customRequire.resolve(specifier)\n          return await import(resolvedPath)\n        } catch (e) {\n          return await import(specifier)\n        }\n      },\n    } as any\n\n    const script = new vm.Script(code, _options)\n    return script\n  }\n\n  /**\n   * Build function module global sandbox\n   */\n  protected static buildSandbox(\n    functionName: string,\n    fromModules: string[],\n    consoleInstance?: Console,\n  ): FunctionModuleGlobalContext {\n    const _module = {\n      exports: {},\n    }\n\n    const fConsole = consoleInstance || new Console(functionName)\n    const __from_modules = fromModules || []\n\n    const sandbox: FunctionModuleGlobalContext = {\n      __filename: functionName,\n      module: _module,\n      exports: _module.exports,\n      console: fConsole,\n      __require: this.require.bind(this),\n      RegExp: RegExp,\n      Buffer: Buffer,\n      setImmediate: setImmediate,\n      clearImmediate: clearImmediate,\n      Float32Array: Float32Array,\n      setInterval: setInterval,\n      clearInterval: clearInterval,\n      setTimeout: setTimeout,\n      clearTimeout: clearTimeout,\n      process: process,\n      URL: URL,\n      fetch: globalThis.fetch,\n      global: null,\n      __from_modules: [...__from_modules],\n      ObjectId: ObjectId,\n    }\n    sandbox.global = sandbox\n    return sandbox\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/engine/types.ts",
    "content": "import { IncomingHttpHeaders } from 'http'\nimport { Request, Response } from 'express'\nimport { ObjectId } from 'mongodb'\nimport WebSocket = require('ws')\n\nexport type RequireFuncType = (\n  module: string,\n  fromModules: string[],\n  filename?: string,\n) => any\n\n/**\n * vm run context (global)\n */\nexport interface FunctionModuleGlobalContext {\n  module: { exports: object }\n  exports: object\n  console: any\n  __require: RequireFuncType\n  Buffer: typeof Buffer\n  RegExp: typeof RegExp\n  setTimeout: typeof setTimeout\n  clearTimeout: typeof clearTimeout\n  setInterval: typeof setInterval\n  clearInterval: typeof clearInterval\n  setImmediate: typeof setImmediate\n  clearImmediate: typeof clearImmediate\n  Float32Array: typeof Float32Array\n  __filename: string\n  URL: typeof URL\n  process: NodeJS.Process\n  global: FunctionModuleGlobalContext\n  __from_modules: string[]\n  fetch: typeof globalThis.fetch\n  ObjectId: typeof ObjectId\n}\n\n/**\n * ctx passed to function\n */\nexport interface FunctionContext {\n  files?: File[]\n  headers?: IncomingHttpHeaders\n  query?: any\n  body?: any\n  user?: any\n  params?: any\n  requestId?: string\n  method?: string\n  socket?: WebSocket\n  request?: Request\n  response?: Response\n  __function_name?: string\n  [key: string]: any\n}\n\n/**\n * Result object returned by the running function\n */\nexport interface FunctionResult {\n  data?: any\n  error?: Error\n  time_usage: number\n}\n\nexport enum FunctionStatus {\n  DISABLED = 0,\n  ENABLED = 1,\n}\n\n/**\n * Model CloudFunctionSource\n *\n */\nexport type CloudFunctionSource = {\n  code: string\n  compiled: string | null\n  uri: string | null\n  version: number\n  hash: string | null\n  lang: string | null\n}\n\n/**\n * cloud function data structure\n */\nexport interface ICloudFunctionData {\n  _id?: ObjectId\n  id: string\n  appid: string\n  name: string\n  source: CloudFunctionSource\n  desc: string\n  tags: string[]\n  methods: string[]\n  createdAt: Date\n  updatedAt: Date\n  createdBy: string\n}\n\n/** Object containing file metadata and access information. */\ninterface File {\n  /** Name of the form field associated with this file. */\n  fieldname: string\n  /** Name of the file on the uploader's computer. */\n  originalname: string\n  /**\n   * Value of the `Content-Transfer-Encoding` header for this file.\n   * @deprecated since July 2015\n   * @see RFC 7578, Section 4.7\n   */\n  encoding: string\n  /** Value of the `Content-Type` header for this file. */\n  mimetype: string\n  /** Size of the file in bytes. */\n  size: number\n  /** `DiskStorage` only: Directory to which this file has been uploaded. */\n  destination: string\n  /** `DiskStorage` only: Name of this file within `destination`. */\n  filename: string\n  /** `DiskStorage` only: Full path to the uploaded file. */\n  path: string\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/init-hook.ts",
    "content": "import { INIT_FUNCTION_NAME } from '../constants'\nimport { FunctionCache, FunctionExecutor } from './engine'\nimport { logger } from './logger'\n\n/**\n * Init hook for `__init__` cloud function\n */\nexport class InitHook {\n  static async invoke() {\n    const func = FunctionCache.get(INIT_FUNCTION_NAME)\n    if (!func) {\n      return\n    }\n    const executor = new FunctionExecutor(func)\n    const result = await executor.invoke(\n      {\n        method: 'INIT',\n        __function_name: func.name,\n      },\n      false,\n    )\n\n    if (result.error) {\n      return logger.error(result.error)\n    }\n\n    logger.info('__init__ hook invoked')\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/logger.ts",
    "content": "/*\n * @Author: Maslow<wangfugen@126.com>\n * @Date: 2021-07-30 10:30:29\n * @LastEditTime: 2021-10-06 19:26:58\n * @Description:\n */\n\nimport { Console } from './engine'\n\n/**\n * The global logger instance\n */\nexport const logger = new Console('#')\n"
  },
  {
    "path": "runtimes/nodejs/src/support/lsp.ts",
    "content": "import path from 'path'\nimport fs from 'fs'\nimport * as rpc from 'vscode-ws-jsonrpc-cjs'\nimport * as lsp from 'vscode-languageserver'\nimport * as server from 'vscode-ws-jsonrpc-cjs/server'\nimport * as ws from 'ws'\nimport { IncomingMessage } from 'http'\nimport { Duplex } from 'stream'\nimport { uniqueId } from 'lodash'\nimport { logger } from './logger'\nimport { parseToken } from './token'\n\nconst WORKSPACE_PATH = path.join(__dirname, '../../functions')\n\nexport class LspWebSocket {\n  private static lspWS = new ws.WebSocketServer({\n    noServer: true,\n    perMessageDeflate: false,\n  })\n\n  static handleUpgrade(\n    request: IncomingMessage,\n    socket: Duplex,\n    upgradeHead: Buffer,\n  ) {\n    // verify the debug token\n    {\n      const token = request.headers['sec-websocket-protocol'] as string\n      if (!token) {\n        request.destroy(new Error('x-laf-develop-token is needed'))\n        return\n      }\n\n      const auth = parseToken(token) || null\n      if (auth?.type !== 'develop') {\n        request.destroy(new Error('permission denied: invalid develop token'))\n        return\n      }\n    }\n\n    this.lspWS.handleUpgrade(request, socket, upgradeHead, (webSocket) => {\n      const socket = {\n        send: (content) =>\n          webSocket.send(content, (error) => {\n            if (error) {\n              throw error\n            }\n          }),\n        onMessage: (cb) => webSocket.on('message', cb),\n        onError: (cb) => webSocket.on('error', cb),\n        onClose: (cb) => webSocket.on('close', cb),\n        dispose: () => webSocket.close(),\n      }\n\n      if (webSocket.readyState === webSocket.OPEN) {\n        const uid = uniqueId()\n        this.launchLsp(socket, uid)\n        logger.info(`Launched ts lsp server ${uid}`)\n      }\n    })\n  }\n\n  static launchLsp(socket: rpc.IWebSocket, uid: string) {\n    if (!fs.existsSync(WORKSPACE_PATH)) {\n      fs.mkdirSync(WORKSPACE_PATH)\n    }\n\n    const reader = new rpc.WebSocketMessageReader(socket)\n    const writer = new rpc.WebSocketMessageWriter(socket)\n\n    // start the language server as an external process\n    const tlsPath = path.join(\n      __dirname,\n      '../../node_modules/typescript-language-server/lib/cli.mjs',\n    )\n\n    const socketConnection = server.createConnection(reader, writer, () =>\n      socket.dispose(),\n    )\n    const serverConnection = server.createServerProcess(\n      'typescript-language-server',\n      'node',\n      [\n        tlsPath,\n        '--stdio',\n        '--log-level',\n        '4',\n        '--tsserver-log-verbosity',\n        'off',\n      ],\n    )\n\n    server.forward(\n      socketConnection,\n      serverConnection,\n      (message: lsp.Message & { method: string }) => {\n        if (\n          message.method === 'window/logMessage' ||\n          message.method === 'initialize'\n        ) {\n          return message\n        }\n\n        // @ts-ignore\n        if (message?.error?.code === -32601) {\n          // suppress error messages that cause lsp server to shut down\n          return '' as any\n        }\n\n        if (lsp.Message.isRequest(message)) {\n          if (message.method === lsp.InitializeRequest.type.method) {\n            const initializeParams = message.params as lsp.InitializeParams\n            initializeParams.processId = process.pid\n            initializeParams.workspaceFolders = [\n              {\n                name: 'statics',\n                uri: `file://${WORKSPACE_PATH}`,\n              },\n            ]\n          }\n        }\n\n        if (lsp.Message.isNotification(message)) {\n          if (\n            message.method === lsp.DidOpenTextDocumentNotification.type.method\n          ) {\n            const params = message.params as lsp.DidOpenTextDocumentParams\n            const [, fullPath] = params.textDocument.uri.split('//')\n\n            if (!fullPath.includes('node_modules')) {\n              // write file if not exists\n              if (!fs.existsSync(fullPath)) {\n                const dir = path.dirname(fullPath)\n                if (!fs.existsSync(dir)) {\n                  fs.mkdirSync(dir, {\n                    recursive: true,\n                  })\n                }\n                fs.writeFileSync(fullPath, params.textDocument.text)\n              }\n            }\n          }\n\n          if (\n            message.method === lsp.DidCloseTextDocumentNotification.type.method\n          ) {\n            const params = message.params as lsp.DidCloseTextDocumentParams\n            const [, fullPath] = params.textDocument.uri.split('//')\n\n            if (!fullPath.includes('node_modules')) {\n              // delete file if exists\n              if (fs.existsSync(fullPath)) {\n                fs.unlinkSync(fullPath)\n              }\n\n              let dir = path.dirname(fullPath)\n\n              // remove empty dir\n              if (dir.startsWith(WORKSPACE_PATH)) {\n                while (dir !== WORKSPACE_PATH) {\n                  if (fs.readdirSync(dir).length === 0) {\n                    fs.rmdirSync(dir)\n                    dir = path.dirname(dir)\n                  }\n                }\n              }\n            }\n          }\n        }\n        return message\n      },\n    )\n\n    socketConnection.onClose(() => {\n      logger.info(`lsp server ${uid} closed`)\n    })\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/module-hot-reload.ts",
    "content": "import { exec } from 'child_process'\nimport * as fs from 'fs'\nimport Module from 'module'\nimport path from 'path'\nimport Config from '../config'\nimport { logger } from './logger'\nimport {\n  CUSTOM_DEPENDENCY_NODE_MODULES_PATH,\n  FunctionModule,\n} from './engine/module'\n\n// === override to disable cache\n// @ts-ignore\nconst originModuleStat = Module._stat\n// @ts-ignore\nModule._stat = (filename: string) => {\n  if (!filename.startsWith(CUSTOM_DEPENDENCY_NODE_MODULES_PATH)) {\n    return originModuleStat(filename)\n  }\n  filename = path.toNamespacedPath(filename)\n\n  let stat\n  try {\n    stat = fs.statSync(filename)\n  } catch (e) {\n    return -2 // not found\n  }\n  if (stat.isDirectory()) {\n    return 1\n  }\n  return 0\n}\n\n// @ts-ignore\nconst originModuleReadPackage = Module._readPackage\n// @ts-ignore\nModule._readPackage = (requestPath: string) => {\n  const pkg = originModuleReadPackage(requestPath)\n  if (\n    pkg.exists === false &&\n    pkg.pjsonPath.startsWith(CUSTOM_DEPENDENCY_NODE_MODULES_PATH)\n  ) {\n    try {\n      const _pkg = JSON.parse(fs.readFileSync(pkg.pjsonPath, 'utf8'))\n      pkg.main = _pkg.main\n      pkg.exists = true\n    } catch {}\n  }\n  return pkg\n}\n// ===\n\nexport function clearModuleCache(moduleId: string) {\n  let filePath: string\n\n  try {\n    filePath = FunctionModule.customRequire.resolve(moduleId)\n  } catch {}\n\n  if (!filePath) {\n    return\n  }\n\n  // Delete itself from module parent\n  if (require.cache[filePath] && require.cache[filePath].parent) {\n    let i = require.cache[filePath].parent.children.length\n\n    while (i--) {\n      if (require.cache[filePath].parent.children[i].id === filePath) {\n        require.cache[filePath].parent.children.splice(i, 1)\n      }\n    }\n  }\n\n  // Remove all descendants from cache as well\n  if (require.cache[filePath]) {\n    const children = require.cache[filePath].children.map((child) => child.id)\n\n    // Delete module from cache\n    delete require.cache[filePath]\n\n    for (const id of children) {\n      clearModuleCache(id)\n    }\n  }\n}\n\nconst getPackageNameWithoutVersion = (name: string) =>\n  name.slice(0, name.indexOf('@', 1))\n\nexport function installDependency(packageName: string) {\n  return new Promise((resolve, reject) => {\n    logger.info(`Installing package ${packageName} ...`)\n    exec(\n      `cd ${Config.CUSTOM_DEPENDENCY_BASE_PATH} && npm install ${packageName}`,\n      (error, stdout) => {\n        if (error) {\n          logger.error(`Error installing package ${packageName}: ${error}`)\n          return reject(error)\n        }\n        // if (stderr) {\n        //   logger.error(`Error installing package ${packageName}: ${stderr}`)\n        //   return reject(new Error(stderr))\n        // }\n        logger.info(`Package ${packageName} installed success`)\n        resolve(stdout)\n\n        exec(\n          `cd ${\n            Config.CUSTOM_DEPENDENCY_BASE_PATH\n          } && sh ${process.cwd()}/upload-dependencies.sh ${\n            Config.CUSTOM_DEPENDENCY_BASE_PATH\n          } > /dev/null 2>&1`,\n        )\n      },\n    )\n  })\n}\n\nexport function installDependencies(packageName: string[]) {\n  return installDependency(packageName.join(' '))\n    .catch(() => {})\n    .finally(() => {\n      packageName.forEach((v) => {\n        clearModuleCache(getPackageNameWithoutVersion(v))\n      })\n    })\n}\n\nexport function uninstallDependency(packageName: string) {\n  return new Promise((resolve, reject) => {\n    logger.info(`Uninstalling package ${packageName} ...`)\n    exec(\n      `cd ${Config.CUSTOM_DEPENDENCY_BASE_PATH} && npm uninstall ${packageName}`,\n      (error, stdout) => {\n        if (error) {\n          logger.error(`Error uninstalling package ${packageName}: ${error}`)\n          return reject(error)\n        }\n        // if (stderr) {\n        //   logger.error(`Error uninstalling package ${packageName}: ${stderr}`)\n        //   return reject(new Error(stderr))\n        // }\n        logger.info(`Package ${packageName} uninstalled success`)\n        resolve(stdout)\n\n        exec(\n          `cd ${\n            Config.CUSTOM_DEPENDENCY_BASE_PATH\n          } && sh ${process.cwd()}/upload-dependencies.sh ${\n            Config.CUSTOM_DEPENDENCY_BASE_PATH\n          } > /dev/null 2>&1`,\n        )\n      },\n    )\n  })\n}\n\nexport function uninstallDependencies(packageName: string[]) {\n  packageName.forEach((v) => clearModuleCache(getPackageNameWithoutVersion(v)))\n\n  return uninstallDependency(\n    packageName.map((v) => getPackageNameWithoutVersion(v)).join(' '),\n  )\n    .catch(() => {})\n    .finally(() => {\n      packageName.forEach((v) =>\n        clearModuleCache(getPackageNameWithoutVersion(v)),\n      )\n    })\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/openapi.ts",
    "content": "import {\n  OpenApiBuilder,\n  PathsObject,\n  PathItemObject,\n  SchemaObjectType,\n} from 'openapi3-ts/oas30'\nimport { FunctionCache, ICloudFunctionData } from './engine'\nimport * as ts from 'typescript'\n\nfunction extractOpenAPIParams(func: ICloudFunctionData) {\n  const sourceFile = ts.createSourceFile(\n    func.name,\n    func.source.code,\n    ts.ScriptTarget.ES2022,\n    /*setParentNodes */ true,\n  )\n  const interfaceDeclarations = sourceFile.statements.filter(\n    ts.isInterfaceDeclaration,\n  )\n\n  const getPropertiesInfo = (\n    properties: ts.NodeArray<ts.TypeElement>,\n  ): { name: string; type: string | object; required: boolean }[] => {\n    return properties\n      .filter(ts.isPropertySignature)\n      .filter((prop) => !!prop.type)\n      .map((prop) => {\n        const type = prop.type!\n        let propType = 'object'\n        switch (type.kind) {\n          case ts.SyntaxKind.StringKeyword:\n            propType = 'string'\n            break\n          case ts.SyntaxKind.BooleanKeyword:\n            propType = 'boolean'\n            break\n          case ts.SyntaxKind.NumberKeyword:\n            propType = 'number'\n            break\n          case ts.SyntaxKind.ObjectKeyword:\n            propType = 'object'\n            break\n          case ts.SyntaxKind.ArrayType:\n            propType = 'array'\n            break\n          default:\n            propType = 'object'\n            break\n        }\n\n        const comments = ts.getTrailingCommentRanges(func.source.code, type.end)\n        let desc = ''\n        if (comments && comments.length > 0) {\n          const comment = func.source.code.slice(\n            comments[0].pos,\n            comments[0].end,\n          )\n          desc = comment.slice(2).trim() || ''\n        }\n\n        return {\n          name: prop.name.getText(),\n          type: propType,\n          required: !prop.questionToken,\n          desc,\n        }\n      })\n  }\n\n  const res: { query: any[]; requestBody: any[]; response: any[] } = {\n    query: [],\n    requestBody: [],\n    response: [],\n  }\n\n  const iQueryDeclaration = interfaceDeclarations.find(\n    (d) => d.name.getText() === 'IQuery',\n  )\n  if (iQueryDeclaration) {\n    res.query = getPropertiesInfo(iQueryDeclaration.members)\n  }\n\n  const iRequestBodyDeclaration = interfaceDeclarations.find(\n    (d) => d.name.getText() === 'IRequestBody',\n  )\n  if (iRequestBodyDeclaration) {\n    res.requestBody = getPropertiesInfo(iRequestBodyDeclaration.members)\n  }\n\n  const iResponseDeclaration = interfaceDeclarations.find(\n    (d) => d.name.getText() === 'IResponse',\n  )\n  if (iResponseDeclaration) {\n    res.response = getPropertiesInfo(iResponseDeclaration.members)\n  }\n\n  return res\n}\n\nexport function buildOpenAPIDefinition(apiConfig: {\n  title: string\n  version: string\n  description?: string\n  contact?: {\n    name: string\n    email: string\n  }\n  host: string\n  apiVersion: string\n}) {\n  const paths: PathsObject = {}\n\n  const funcs = FunctionCache.getAll()\n  funcs.forEach((func) => {\n    const openApi = extractOpenAPIParams(func)\n    const path: PathItemObject = {}\n    if (func.methods.includes('GET')) {\n      path.get = {\n        operationId: `${func.name}_GET`,\n        summary: func.desc,\n        responses: {\n          '200': {\n            description: 'success',\n          },\n        },\n        parameters: openApi.query.map((v) => ({\n          name: v.name,\n          in: 'query',\n          required: v.required,\n          description: v.desc,\n          schema: {\n            type:\n              typeof v.type === 'string'\n                ? (v.type as SchemaObjectType)\n                : 'object',\n          },\n        })),\n        tags: func.tags,\n      }\n    }\n    ;['POST', 'PUT', 'DELETE', 'PATCH'].forEach((method) => {\n      if (func.methods.includes(method)) {\n        path[method.toLowerCase()] = {\n          operationId: `${func.name}_${method}`,\n          summary: func.desc,\n          tags: func.tags,\n        }\n\n        if (openApi.requestBody.length > 0) {\n          path[method.toLowerCase()].requestBody = {\n            required: true,\n            content: {\n              'application/json': {\n                schema: {\n                  type: 'object',\n                  properties: openApi.requestBody.reduce((prev, v) => {\n                    prev[v.name] = { type: v.type, description: v.desc }\n                    return prev\n                  }, {}),\n                  required: openApi.requestBody\n                    .filter((v) => v.required)\n                    .map((v) => v.name),\n                },\n              },\n            },\n          }\n        }\n        if (openApi.response.length > 0) {\n          path[method.toLowerCase()].responses = {\n            default: {\n              description: 'success',\n              content: {\n                'application/json': {\n                  schema: {\n                    type: 'object',\n                    properties: openApi.response.reduce((prev, v) => {\n                      prev[v.name] = { type: v.type, description: v.desc }\n                      return prev\n                    }, {}),\n                    required: openApi.response\n                      .filter((v) => v.required)\n                      .map((v) => v.name),\n                  },\n                },\n              },\n            },\n          }\n        }\n      }\n    })\n\n    paths[`/${func.name}`] = path\n  })\n\n  const builder = OpenApiBuilder.create({\n    openapi: apiConfig.apiVersion,\n    info: {\n      title: apiConfig.title,\n      version: apiConfig.version,\n      description: apiConfig.description,\n      contact: apiConfig.contact,\n    },\n    paths,\n    servers: [\n      {\n        url: apiConfig.host,\n      },\n    ],\n  })\n\n  return builder.getSpec()\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/policy.ts",
    "content": "/*\n * @Author: Maslow<wangfugen@126.com>\n * @Date: 2021-08-04 00:31:53\n * @LastEditTime: 2021-11-05 13:52:52\n * @Description:\n */\n\nimport assert = require('assert')\nimport { Params, Policy } from 'database-proxy'\nimport { logger } from './logger'\nimport { FunctionExecutor, FunctionCache } from './engine'\nimport { DatabaseAgent } from '../db'\nimport { generateUUID } from './utils'\nimport { POLICY_COLLECTION } from '../constants'\n\nexport type InjectionGetter = (payload: any, params: Params) => Promise<any>\n\n/**\n * Composition of a policy and its injector function,  used in policy agent\n */\nexport interface PolicyComposition {\n  name: string\n  policy: Policy\n  injector_func: InjectionGetter\n  cached_at?: number\n}\n\n/**\n * The data structure of the policy\n */\nexport interface PolicyDataStruct {\n  _id: string\n  name: string\n  rules: any[]\n  injector: string\n  status: number\n  created_at: number\n  updated_at: number\n}\n\n/**\n * Policy Agent class\n * - managing multiple policies\n * - initialize injector of policies\n */\nexport class PolicyAgent {\n  private static _data: Map<string, PolicyComposition> = new Map()\n\n  public static async set(name: string, data: PolicyDataStruct) {\n    assert(data, 'policy data cannot be empty')\n\n    const policy = new Policy(DatabaseAgent.accessor)\n    policy.load(data.rules)\n\n    const injector_func = await this.getInjector(data.injector)\n\n    const ret = { name, policy, injector_func, cached_at: Date.now() }\n    this._data.set(name, ret)\n    return ret\n  }\n\n  public static async get(name: string) {\n    // get from cache\n    const cached = this._data.get(name)\n\n    // TODO: consider a better cache policy ?\n    if (cached && Date.now() - cached.cached_at < 1000 * 5) {\n      return cached\n    }\n\n    // clear the stale cache\n    if (cached) {\n      this._data.delete(name)\n    }\n\n    // load from database\n    const data = await this.loadPolicy(name)\n    if (!data) {\n      return null\n    }\n\n    // cache & return\n    return this.set(name, data)\n  }\n\n  public static clear() {\n    this._data.clear()\n  }\n\n  private static async getInjector(\n    injectorName: string,\n  ): Promise<InjectionGetter> {\n    if (!injectorName) {\n      return defaultInjectionGetter\n    }\n\n    try {\n      const funcData = FunctionCache.get(injectorName)\n      assert.ok(funcData, 'getFunctionByName(): function not found')\n\n      const func = new FunctionExecutor(funcData)\n      const ret = await func.invoke(\n        {\n          __function_name: funcData.name,\n          requestId: generateUUID(),\n        },\n        false,\n      )\n      assert(typeof ret.data === 'function', 'function type needed')\n\n      return ret.data\n    } catch (error) {\n      logger.error(\n        `failed to get injector by cloud function: ${injectorName}, now using default injector`,\n        error,\n      )\n      return defaultInjectionGetter\n    }\n  }\n\n  /**\n   * Get all access policies\n   */\n  public static async loadPolicies() {\n    const db = DatabaseAgent.db\n    const docs = await db\n      .collection(POLICY_COLLECTION)\n      .find<PolicyDataStruct>({})\n      .toArray()\n\n    return docs\n  }\n\n  /**\n   * Get a policy by name\n   * @param name\n   * @returns\n   */\n  public static async loadPolicy(name: string) {\n    const db = DatabaseAgent.db\n    const doc = await db\n      .collection(POLICY_COLLECTION)\n      .findOne<PolicyDataStruct>({ name })\n\n    return doc\n  }\n\n  /**\n   * Applying access policies\n   */\n  public static async applyPolicies() {\n    const policies = await this.loadPolicies()\n    this.clear()\n    for (const policy of policies) {\n      await this.set(policy.name, policy)\n    }\n  }\n}\n\n/**\n * default injection getter\n * @param auth the payload object of a standard JWT token\n * @returns injections for validation in policy\n */\nasync function defaultInjectionGetter(auth: any, _params: Params) {\n  auth = auth || {}\n  return {\n    ...auth,\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/token.ts",
    "content": "/*\n * @Author: Maslow<wangfugen@126.com>\n * @Date: 2021-07-30 10:30:29\n * @LastEditTime: 2021-08-18 16:47:35\n * @Description:\n */\n\nimport Config from '../config'\nimport * as jwt from 'jsonwebtoken'\n\n/**\n * Generate a JWT token\n * @param payload\n * @param expire second\n * @returns\n */\nexport function getToken(payload: any, secret?: string): string {\n  return jwt.sign(payload, secret ?? Config.SERVER_SECRET)\n}\n\n/**\n * Parse a JWT token\n * @param token\n * @returns\n */\nexport function parseToken(token: string, secret?: string): any | null {\n  if (!token) return null\n  try {\n    const ret = jwt.verify(token, secret ?? Config.SERVER_SECRET)\n    return ret\n  } catch (error) {\n    return null\n  }\n}\n\n/**\n * split bearer token\n * @param bearer \"Bearer xxxxx\"\n * @returns\n */\nexport function splitBearerToken(bearer: string): string | null {\n  if (!bearer) return null\n\n  const splitted = bearer?.split(' ')\n  const token = splitted?.length === 2 ? splitted[1] : null\n  return token\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/types.ts",
    "content": "import { Request } from 'express'\n\nexport interface IRequest extends Request {\n  user?: any\n  requestId?: string\n  [key: string]: any\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/utils.ts",
    "content": "import * as crypto from 'crypto'\nimport { IRequest } from './types'\n\n/**\n * Generate UUID v4\n * @returns\n */\nexport function generateUUID() {\n  return crypto.randomUUID()\n}\n\n/**\n * Generate a password\n * @param length the length of password, default is 8\n * @param hasNumbers add numbers to password, [0-9]\n * @param hasSymbols add symbols to password, [!@#$%^&*_-=+]\n * @returns\n */\nexport function generatePassword(\n  length = 8,\n  hasNumbers = true,\n  hasSymbols = true,\n) {\n  return generateRandString(length, hasNumbers, hasSymbols)\n}\n\n/**\n * Generate a rand string\n * @param length the length of password, default is 8\n * @param hasNumbers add numbers to password, [0-9]\n * @param hasSymbols add symbols to password, [!@#$%^&*_-=+]\n * @returns\n */\nexport function generateRandString(\n  length = 8,\n  hasNumbers = true,\n  hasSymbols = true,\n) {\n  const alpha = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'\n  const numbers = '0123456789'\n  const symbols = '!@#$%^&*_-=+'\n\n  let chars = alpha\n  if (hasNumbers) chars += numbers\n  if (hasSymbols) chars += symbols\n\n  let str = ''\n  for (let i = 0; i < length; i++) {\n    str += chars.charAt(Math.floor(Math.random() * chars.length))\n  }\n  return str\n}\n\nexport function hashPassword(content: string) {\n  return crypto.createHash('sha256').update(content).digest('hex')\n}\n\n/**\n * Recursively deeply freeze objects\n * @param object\n * @returns\n */\nexport function deepFreeze(object: object) {\n  // Retrieve the property names defined on object\n  const propNames = Object.getOwnPropertyNames(object)\n\n  // Freeze properties before freezing self\n\n  for (const name of propNames) {\n    const value = object[name]\n\n    if (value && typeof value === 'object') {\n      deepFreeze(value)\n    }\n  }\n\n  return Object.freeze(object)\n}\n\n/**\n * nanosecond to ms\n * @param nanoseconds\n * @returns\n */\nexport function nanosecond2ms(nanoseconds: bigint): number {\n  // trim the decimal point by devide 1000\n  const _t = nanoseconds / BigInt(1000)\n\n  const ret = parseFloat(_t.toString()) / 1000\n  return ret\n}\n\n/**\n * sleep\n * @param ms  milliseconds\n * @returns\n */\nexport function sleep(ms: number) {\n  return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n/**\n * generate md5\n * @param content md5 content\n * @returns\n */\nexport function md5(content: string) {\n  return crypto.createHash('md5').update(content).digest('hex')\n}\n\nexport function uint8ArrayToBase64(buffer: Uint8Array) {\n  return Buffer.from(buffer).toString('base64')\n}\n\nexport function base64ToUint8Array(base64: string) {\n  const buffer = Buffer.from(base64, 'base64')\n  return new Uint8Array(buffer)\n}\n\nexport function GetClientIPFromRequest(req: IRequest) {\n  // try to get ip from x-forwarded-for\n  const ips_str = req.headers['x-forwarded-for'] as string\n  if (ips_str) {\n    const ips = ips_str.split(',')\n    return ips[0]\n  }\n\n  // try to get ip from x-real-ip\n  const ip = req.headers['x-real-ip'] as string\n  if (ip) {\n    return ip\n  }\n\n  return null\n}\n"
  },
  {
    "path": "runtimes/nodejs/src/support/ws.ts",
    "content": "import { IncomingMessage } from 'http'\nimport { WebSocket, WebSocketServer } from 'ws'\nimport { WEBSOCKET_FUNCTION_NAME } from '../constants'\nimport { logger } from './logger'\nimport { generateUUID } from './utils'\nimport { FunctionModule } from './engine/module'\nimport { FunctionContext } from './engine'\n\nexport class WebSocketAgent {\n  private static _server = null\n\n  static get server(): WebSocketServer {\n    if (!this._server) {\n      this._server = new WebSocketServer({ noServer: true })\n      this.server.on('connection', handleSocketConnection)\n      this.server.on('error', (error) =>\n        logger.error('websocket server got error:', error),\n      )\n    }\n\n    return this._server\n  }\n\n  static get clients() {\n    return this.server.clients\n  }\n}\n\n/**\n * Handle socket connection\n * @param socket\n * @param request\n */\nfunction handleSocketConnection(socket: WebSocket, request: IncomingMessage) {\n  // handle connection event\n  handleWebSocketEvent('WebSocket:connection', null, socket, request)\n\n  // handle message event\n  socket.on('message', (data, isBinary) => {\n    const param = { data, isBinary }\n    handleWebSocketEvent('WebSocket:message', param, socket)\n  })\n\n  // handle error event\n  socket.on('error', (error) => {\n    const param = error\n    handleWebSocketEvent('WebSocket:error', param, socket)\n  })\n\n  // handle close event\n  socket.on('close', (code, reason) => {\n    const param = { code, reason }\n    handleWebSocketEvent('WebSocket:close', param, socket)\n  })\n}\n\n/**\n * Handle WebSocket Event\n * @param event\n * @param data\n * @param socket\n * @param request\n */\nasync function handleWebSocketEvent(\n  event: string,\n  data: any,\n  socket: WebSocket,\n  request?: IncomingMessage,\n) {\n  const param: FunctionContext = {\n    params: data,\n    method: event,\n    requestId: generateUUID(),\n    socket,\n    __function_name: WEBSOCKET_FUNCTION_NAME,\n    url: request?.url,\n    headers: request?.headers,\n  }\n\n  const module = FunctionModule.get(WEBSOCKET_FUNCTION_NAME)\n  const handler = module.default || module.main || module\n  if (typeof handler === 'function') {\n    await handler(param)\n  } else {\n    logger.error(`default function not found in ${WEBSOCKET_FUNCTION_NAME}`)\n  }\n}\n"
  },
  {
    "path": "runtimes/nodejs/start.sh",
    "content": "#!/bin/sh\n\nln -s $CUSTOM_DEPENDENCY_BASE_PATH/node_modules $PWD/functions/node_modules >/dev/null 2>&1\n\n# generate package.json\n# (\n#   cd $CUSTOM_DEPENDENCY_BASE_PATH\n#   npm install $DEPENDENCIES $NPM_INSTALL_FLAGS > /dev/null 2>&1\n# )\n\n# source .env\necho \"****** start service: node $FLAGS --experimental-vm-modules  --experimental-fetch ./dist/index.js *******\"\nexec node $FLAGS --experimental-vm-modules --experimental-fetch ./dist/index.js\n"
  },
  {
    "path": "runtimes/nodejs/tsconfig.json",
    "content": "{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"declaration\": true,\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true,\n    \"importHelpers\": true,\n    \"module\": \"Node16\",\n    \"target\": \"ES2022\",\n    \"moduleResolution\": \"node16\",\n    \"declarationMap\": true,\n    // \"declarationDir\": \"types\",\n    \"noEmitOnError\": false,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": false,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"outDir\": \"dist\",\n    \"pretty\": true,\n    \"removeComments\": false,\n    \"stripInternal\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true,\n    \"alwaysStrict\": true,\n    \"lib\": [\n      \"ES2022\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*\",\n  ],\n  \"exclude\": [\n    \"tests\",\n  ]\n}"
  },
  {
    "path": "runtimes/nodejs/upload-dependencies.sh",
    "content": "### cache node_modules ###\n# if $NODE_MODULES_PUSH_URL is not empty\nif [ -n \"$NODE_MODULES_PUSH_URL\" ]; then\n  NODE_MODULES_PATH=$1\n  # temporarily disable set -e\n  set +e\n\n  start_time=$(date +%s)\n  echo $DEPENDENCIES > $NODE_MODULES_PATH/node_modules/.dependencies\n  echo \"Uploading node_modules to $NODE_MODULES_PUSH_URL\"\n\n  # tar `node_modules` to node_modules.tar\n  tar -cf $NODE_MODULES_PATH/node_modules.tar -C $NODE_MODULES_PATH node_modules\n\n  end_time_1=$(date +%s)\n  elapsed_time=$(expr $end_time_1 - $start_time)\n  echo \"Compressed node_modules in $elapsed_time seconds.\"\n\n  # upload node_modules.tar to $NODE_MODULES_PUSH_URL\n  curl -sSfL -X PUT -T $NODE_MODULES_PATH/node_modules.tar $NODE_MODULES_PUSH_URL\n\n\n  if [ $? -ne 0 ]; then\n    echo \"Failed to upload node_modules cache.\"\n  else\n    end_time_2=$(date +%s)\n    elapsed_time_2=$(expr $end_time_2 - $end_time_1)\n    echo \"Uploaded node_modules.tar in $elapsed_time_2 seconds.\"\n  fi\n\n  # re-enable set -e\n  set -e\nfi"
  },
  {
    "path": "runtimes/python/TBD.md",
    "content": "\n> TBD"
  },
  {
    "path": "server/.dockerignore",
    "content": "\n.env.local\n.env"
  },
  {
    "path": "server/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"laf/server\"\n}"
  },
  {
    "path": "server/.gitignore",
    "content": "# compiled output\n/dist\n/node_modules\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\npnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# OS\n.DS_Store\n\n# Tests\n/coverage\n/.nyc_output\n\n# IDEs and editors\n/.idea\n.project\n.classpath\n.c9/\n*.launch\n.settings/\n*.sublime-workspace\n\n# IDE - VSCode\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n\n.env.local\n.env\n"
  },
  {
    "path": "server/Dockerfile",
    "content": "FROM node:20-slim\n\nRUN apt-get update\nRUN apt-get install -y openssl wget libkrb5-dev\n\nARG TARGETARCH\n\nENV MINIO_CLIENT_PATH /usr/local/bin/mc\nRUN wget https://dl.min.io/client/mc/release/linux-$TARGETARCH/mc -O $MINIO_CLIENT_PATH && chmod +x $MINIO_CLIENT_PATH\n\nRUN export MONGO_TOOLS=mongodb-database-tools-ubuntu1804-$( [ \"$TARGETARCH\" = \"amd64\" ] && echo \"x86_64\" || echo \"arm64\" )-100.8.0 && \\\n    wget https://fastdl.mongodb.org/tools/db/${MONGO_TOOLS}.tgz && \\\n    tar -zxvf ${MONGO_TOOLS}.tgz -C /usr/local/ --strip-components=1 ${MONGO_TOOLS}/bin/ && \\\n    rm -rf ${MONGO_TOOLS}.tgz $MONGO_TOOLS\n\nWORKDIR /app\n\nEXPOSE 3000\n\nCOPY . /app\n\n# All commands in one line will reduce the size of the image\n# RUN npm install @nestjs/cli@9.0.0 -g && npm install --omit=dev && npm run build && npm remove @nestjs/cli -g && npm cache clean --force && rm -rf /app/src/*\n\nCMD [ \"node\", \"dist/main\" ]"
  },
  {
    "path": "server/README.md",
    "content": "# Intro\n\n`laf server` is responsible for laf http api:\n\n- auth & user\n- region cluster\n- app management\n- app cloud function management\n- app database management\n- app storage management\n- app log management\n- app instance management\n- app billing management\n- app domain management\n- app certificate management\n- app metrics management\n\n# Development\n\n## You should know\n\n- [Node.js](https://nodejs.org/en/docs)\n- [Nest](https://github.com/nestjs/nest) web framework\n- [Kubernetes](https://kubernetes.io) basic use\n- [Telepresence](https://www.telepresence.io) for local development\n- [MongoDb](https://docs.mongodb.com) basic use\n- [MinIO](https://min.io) object storage\n\n## Prerequisites\n\n- laf cluster installed locally or remotely (~/.kube/config)\n- telepresence installed (see <https://www.telepresence.io/reference/install>)\n- minio client installed (see <https://min.io/download#>)\n\n## Start service locally\n\n```bash\ncd server/\n\n# telepresence version v2.16.1\n# Install telepresence traffic manager \ntelepresence helm install\n# Connect your computer to laf-dev cluster (namespace laf-system)\ntelepresence connect -n laf-system\n# Connect local server to laf server cluster (namespace laf-system)\ntelepresence intercept laf-server  -p 3000:3000 -e $(pwd)/.env\n\nnpm install\nnpm run dev\n```\n\n> Clean up\n\n```bash\ntelepresence leave laf-server\n```"
  },
  {
    "path": "server/build-image.sh",
    "content": "# Warning: just for development phase, will be move to github action in future.\n\n\n\ndocker buildx build --platform linux/amd64,linux/arm64 --push -t docker.io/lafyun/laf-server:debug-202306151521 -f Dockerfile .\n"
  },
  {
    "path": "server/nest-cli.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/nest-cli\",\n  \"collection\": \"@nestjs/schematics\",\n  \"sourceRoot\": \"src\",\n  \"compilerOptions\": {\n    \"assets\": [\n      {\n        \"include\": \"i18n/**/*\",\n        \"watchAssets\": true\n      },\n      {\n        \"include\": \"initializer/deploy-manifest/*\",\n        \"watchAssets\": true\n      }\n    ]\n  }\n}"
  },
  {
    "path": "server/package.json",
    "content": "{\n  \"name\": \"laf-server\",\n  \"version\": \"1.0.0\",\n  \"description\": \"laf server\",\n  \"author\": \"maslow(wangfugen@126.com)\",\n  \"private\": true,\n  \"license\": \"Apache-2.0\",\n  \"scripts\": {\n    \"intercept\": \"telepresence intercept laf-server -n laf-system -p 3000:3000 -e $(pwd)/.env\",\n    \"leave\": \"telepresence leave laf-server-laf-system\",\n    \"prebuild\": \"rimraf dist\",\n    \"build\": \"nest build\",\n    \"start\": \"nest start\",\n    \"dev\": \"nest start --watch\",\n    \"watch\": \"nest start --watch\",\n    \"start:dev\": \"nest start --watch\",\n    \"start:debug\": \"nest start --debug --watch\",\n    \"start:prod\": \"node dist/main\",\n    \"lint\": \"eslint \\\"{src,apps,libs,test}/**/*.ts\\\" --fix\",\n    \"test\": \"jest\",\n    \"test:watch\": \"jest --watch\",\n    \"test:cov\": \"jest --coverage\",\n    \"test:debug\": \"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand\",\n    \"test:e2e\": \"jest --config ./test/jest-e2e.json\"\n  },\n  \"dependencies\": {\n    \"@alicloud/dysmsapi20170525\": \"^2.0.22\",\n    \"@alicloud/openapi-client\": \"^0.4.1\",\n    \"@alicloud/tea-util\": \"^1.4.5\",\n    \"@aws-sdk/client-s3\": \"^3.458.0\",\n    \"@aws-sdk/client-sts\": \"^3.458.0\",\n    \"@aws-sdk/s3-request-presigner\": \"^3.458.0\",\n    \"@kubernetes/client-node\": \"^0.17.1\",\n    \"@nestjs/axios\": \"^1.0.0\",\n    \"@nestjs/common\": \"^9.0.0\",\n    \"@nestjs/config\": \"^2.2.0\",\n    \"@nestjs/core\": \"^9.2.1\",\n    \"@nestjs/event-emitter\": \"^2.0.3\",\n    \"@nestjs/jwt\": \"^10.0.1\",\n    \"@nestjs/mapped-types\": \"*\",\n    \"@nestjs/passport\": \"^9.0.0\",\n    \"@nestjs/platform-express\": \"^9.0.0\",\n    \"@nestjs/schedule\": \"^2.1.0\",\n    \"@nestjs/swagger\": \"^6.1.3\",\n    \"@nestjs/throttler\": \"^3.1.0\",\n    \"@octokit/auth-oauth-app\": \"^7.0.0\",\n    \"@octokit/rest\": \"^20.0.1\",\n    \"class-transformer\": \"^0.5.1\",\n    \"class-validator\": \"^0.14.0\",\n    \"compression\": \"^1.7.4\",\n    \"cron-validate\": \"^1.4.5\",\n    \"database-proxy\": \"^1.0.0\",\n    \"dayjs\": \"^1.11.7\",\n    \"decimal.js\": \"^10.4.3\",\n    \"dotenv\": \"^16.0.3\",\n    \"fast-json-patch\": \"^3.1.1\",\n    \"helmet\": \"^7.0.0\",\n    \"lodash\": \"^4.17.21\",\n    \"minio\": \"^7.1.3\",\n    \"mongodb\": \"^5.9.2\",\n    \"mongodb-uri\": \"^0.9.7\",\n    \"nanoid\": \"^3.3.4\",\n    \"nestjs-i18n\": \"^10.2.6\",\n    \"nodemailer\": \"^6.9.4\",\n    \"npm-package-arg\": \"^10.1.0\",\n    \"passport-jwt\": \"^4.0.0\",\n    \"prometheus-query\": \"^3.3.2\",\n    \"reflect-metadata\": \"^0.1.13\",\n    \"rxjs\": \"^7.2.0\",\n    \"sharp\": \"^0.32.2\",\n    \"wechatpay-node-v3\": \"^2.1.1\"\n  },\n  \"devDependencies\": {\n    \"@compodoc/compodoc\": \"^1.1.19\",\n    \"@nestjs/cli\": \"^9.2.0\",\n    \"@nestjs/schematics\": \"^9.0.0\",\n    \"@nestjs/testing\": \"^9.2.0\",\n    \"@types/compression\": \"^1.7.2\",\n    \"@types/cron\": \"^2.0.0\",\n    \"@types/express\": \"^4.17.13\",\n    \"@types/jest\": \"28.1.8\",\n    \"@types/lodash\": \"^4.14.191\",\n    \"@types/mongodb-uri\": \"^0.9.1\",\n    \"@types/multer\": \"^1.4.7\",\n    \"@types/node\": \"^16.0.0\",\n    \"@types/nodemailer\": \"^6.4.9\",\n    \"@types/npm-package-arg\": \"^6.1.1\",\n    \"@types/passport-jwt\": \"^3.0.7\",\n    \"@types/passport-local\": \"^1.0.34\",\n    \"@types/supertest\": \"^2.0.11\",\n    \"@types/uuid\": \"^9.0.2\",\n    \"jest\": \"28.1.3\",\n    \"rimraf\": \"^3.0.2\",\n    \"source-map-support\": \"^0.5.20\",\n    \"supertest\": \"^6.1.3\",\n    \"ts-jest\": \"28.0.8\",\n    \"ts-loader\": \"^9.2.3\",\n    \"ts-node\": \"^10.0.0\",\n    \"tsconfig-paths\": \"4.1.0\",\n    \"typescript\": \"^4.9.3\"\n  },\n  \"jest\": {\n    \"moduleFileExtensions\": [\n      \"js\",\n      \"json\",\n      \"ts\"\n    ],\n    \"rootDir\": \"src\",\n    \"testRegex\": \".*\\\\.spec\\\\.ts$\",\n    \"transform\": {\n      \"^.+\\\\.(t|j)s$\": \"ts-jest\"\n    },\n    \"collectCoverageFrom\": [\n      \"**/*.(t|j)s\"\n    ],\n    \"coverageDirectory\": \"../coverage\",\n    \"testEnvironment\": \"node\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,js}\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "server/src/account/account.controller.ts",
    "content": "import {\n  Body,\n  Controller,\n  Get,\n  Logger,\n  Param,\n  Post,\n  Query,\n  Req,\n  Res,\n  UseGuards,\n} from '@nestjs/common'\nimport { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'\nimport { IRequest, IResponse } from 'src/utils/interface'\nimport {\n  ApiResponseArray,\n  ApiResponseObject,\n  ApiResponsePagination,\n  ResponseUtil,\n} from 'src/utils/response'\nimport { AccountService } from './account.service'\nimport {\n  CreateChargeOrderDto,\n  CreateChargeOrderOutDto,\n} from './dto/create-charge-order.dto'\nimport { UseGiftCodeDto } from './dto/use-gift-code.dto'\nimport { PaymentChannelService } from './payment/payment-channel.service'\nimport {\n  WeChatPayChargeOrder,\n  WeChatPayOrderResponse,\n  WeChatPayTradeState,\n} from './payment/types'\nimport { WeChatPayService } from './payment/wechat-pay.service'\nimport { ServerConfig } from 'src/constants'\nimport {\n  AccountChargeOrder,\n  AccountChargePhase,\n} from './entities/account-charge-order'\nimport { ObjectId } from 'mongodb'\nimport { SystemDatabase } from 'src/system-database'\nimport { Account } from './entities/account'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { AccountChargeReward } from './entities/account-charge-reward'\nimport { InviteCode } from 'src/authentication/entities/invite-code'\nimport { InviteCodeProfit } from './dto/invite-code.dto'\nimport { AccountChargeOrderQuery } from './interface/account-query.interface'\nimport { GetAccountChargeOrdersDto } from './dto/get-charge-order.dto'\n\n@ApiTags('Account')\n@Controller('accounts')\n@ApiBearerAuth('Authorization')\nexport class AccountController {\n  private readonly logger = new Logger(AccountController.name)\n\n  constructor(\n    private readonly accountService: AccountService,\n    private readonly paymentService: PaymentChannelService,\n    private readonly wechatPayService: WeChatPayService,\n  ) {}\n  /**\n   * Get account info\n   */\n  @ApiOperation({ summary: 'Get account info' })\n  @ApiResponseObject(Account)\n  @UseGuards(JwtAuthGuard)\n  @Get()\n  async findOne(@Req() req: IRequest) {\n    const user = req.user\n    const data = await this.accountService.findOne(user._id)\n    data.balance = Math.floor(data.balance)\n    return ResponseUtil.ok(data)\n  }\n\n  /**\n   * Get charge order total amount\n   */\n  @ApiOperation({ summary: 'Get charge order total amount' })\n  @ApiResponseObject(Number)\n  @UseGuards(JwtAuthGuard)\n  @Get('charge-order/amount')\n  async getChargeOrderAmount(\n    @Req() req: IRequest,\n    @Query('startTime') startTime?: number,\n    @Query('endTime') endTime?: number,\n  ) {\n    const user = req.user\n    const query: AccountChargeOrderQuery = {\n      startTime: startTime\n        ? new Date(startTime)\n        : new Date(new Date().getTime() - 24 * 60 * 60 * 1000),\n      endTime: endTime ? new Date(endTime) : new Date(),\n    }\n    const amount = await this.accountService.getUserRecharge(user._id, query)\n    return ResponseUtil.ok(amount)\n  }\n\n  /**\n   * Get charge order\n   */\n  @ApiOperation({ summary: 'Get charge order' })\n  @ApiResponseObject(AccountChargeOrder)\n  @UseGuards(JwtAuthGuard)\n  @Get('charge-order/:id')\n  async getChargeOrder(@Req() req: IRequest, @Param('id') id: string) {\n    const user = req.user\n    const data = await this.accountService.findOneChargeOrder(\n      user._id,\n      new ObjectId(id),\n    )\n    return ResponseUtil.ok(data)\n  }\n\n  /**\n   * get all charge order\n   */\n  @ApiOperation({ summary: 'get all charge order' })\n  @ApiResponsePagination(GetAccountChargeOrdersDto)\n  @UseGuards(JwtAuthGuard)\n  @Get('charge-orders')\n  async getChargeRecords(\n    @Req() req: IRequest,\n    @Query('id') id?: string,\n    @Query('channel') channel?: string,\n    @Query('startTime') startTime?: string,\n    @Query('endTime') endTime?: string,\n    @Query('state') state?: string,\n    @Query('page') page?: number,\n    @Query('pageSize') pageSize?: number,\n  ) {\n    const query: AccountChargeOrderQuery = {\n      page: page || 1,\n      pageSize: pageSize || 12,\n    }\n\n    if (query.pageSize > 100) {\n      query.pageSize = 100\n    }\n\n    if (id) {\n      query.id = new ObjectId(id)\n    }\n\n    if (channel) {\n      query.channel = channel\n    }\n\n    if (state) {\n      query.phase = state\n    }\n\n    if (startTime) {\n      query.startTime = new Date(startTime)\n    }\n\n    if (endTime) {\n      query.endTime = new Date(endTime)\n    }\n\n    const res = await this.accountService.getAllChargeOrders(\n      req.user._id,\n      query,\n    )\n\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Create charge order\n   */\n  @ApiOperation({ summary: 'Create charge order' })\n  @ApiResponseObject(CreateChargeOrderOutDto)\n  @UseGuards(JwtAuthGuard)\n  @Post('charge-order')\n  async charge(@Req() req: IRequest, @Body() dto: CreateChargeOrderDto) {\n    const user = req.user\n    const { amount, currency, channel } = dto\n\n    // create charge order\n    const order = await this.accountService.createChargeOrder(\n      user._id,\n      amount,\n      currency,\n      channel,\n    )\n\n    // invoke payment\n    const result = await this.accountService.pay(\n      channel,\n      order._id,\n      amount,\n      currency,\n      `${ServerConfig.SITE_NAME} recharge`,\n    )\n\n    return ResponseUtil.ok({\n      order,\n      result,\n    })\n  }\n\n  /**\n   * Get charge reward list\n   */\n  @ApiOperation({ summary: 'Get charge reward list' })\n  @ApiResponseArray(AccountChargeReward)\n  @UseGuards(JwtAuthGuard)\n  @Get('charge-reward')\n  async getChargeRewardList() {\n    const rewards = await this.accountService.findAllChargeRewards()\n    return ResponseUtil.ok(rewards)\n  }\n\n  /**\n   * WeChat payment notify\n   */\n  @Post('payment/wechat-notify')\n  async wechatNotify(@Req() req: IRequest, @Res() res: IResponse) {\n    // start transaction\n    const client = SystemDatabase.client\n    const session = client.startSession()\n    session.startTransaction()\n\n    try {\n      // get headers\n      const headers = req.headers\n      const nonce = headers['wechatpay-nonce'] as string\n      const timestamp = headers['wechatpay-timestamp'] as string\n      const signature = headers['wechatpay-signature'] as string\n      const serial = headers['wechatpay-serial'] as string\n\n      // get body\n      const body = req.body as WeChatPayOrderResponse\n\n      const spec = await this.paymentService.getWeChatPaySpec()\n      const result = await this.wechatPayService.getWeChatPayNotifyResult(\n        spec,\n        {\n          timestamp,\n          nonce,\n          body,\n          serial,\n          signature,\n        },\n      )\n\n      this.logger.debug(result)\n\n      const db = SystemDatabase.db\n\n      const tradeOrderId = new ObjectId(result.out_trade_no)\n      if (result.trade_state !== WeChatPayTradeState.SUCCESS) {\n        await db\n          .collection<WeChatPayChargeOrder>('AccountChargeOrder')\n          .updateOne(\n            { _id: tradeOrderId },\n            { $set: { phase: AccountChargePhase.Failed, result: result } },\n          )\n\n        this.logger.log(\n          `wechatpay order failed: ${tradeOrderId} ${result.trade_state}`,\n        )\n        return res.status(200).send()\n      }\n\n      // update order to success\n      const resultOfOrder = await db\n        .collection<WeChatPayChargeOrder>('AccountChargeOrder')\n        .findOneAndUpdate(\n          { _id: tradeOrderId, phase: AccountChargePhase.Pending },\n          { $set: { phase: AccountChargePhase.Paid, result: result } },\n          { session, returnDocument: 'after' },\n        )\n\n      const order = resultOfOrder.value\n\n      if (!order) {\n        this.logger.error(`wechatpay order not found: ${tradeOrderId}`)\n        return\n      }\n\n      // get max reward\n      const reward = await db\n        .collection<AccountChargeReward>('AccountChargeReward')\n        .findOne(\n          {\n            amount: { $lte: order.amount },\n          },\n          { sort: { amount: -1 } },\n        )\n\n      const realAmount = reward ? reward.reward + order.amount : order.amount\n\n      await this.accountService.chargeWithTransaction(\n        order.accountId,\n        realAmount,\n        'Recharge by WeChat Pay',\n        session,\n        { reward: reward?.reward, orderId: order._id },\n      )\n\n      this.logger.log(`wechatpay order success: ${tradeOrderId}`)\n\n      await session.commitTransaction()\n    } catch (err) {\n      await session.abortTransaction()\n      this.logger.error(err)\n      return res.status(400).send({ code: 'FAIL', message: 'ERROR' })\n    } finally {\n      session.endSession()\n    }\n\n    return res.status(200).send()\n  }\n\n  /**\n   * Use a gift code\n   */\n  @ApiOperation({ summary: 'Use a gift code' })\n  @ApiResponseObject(Account)\n  @UseGuards(JwtAuthGuard)\n  @Post('gift-code')\n  async giftCode(@Req() req: IRequest, @Body() dto: UseGiftCodeDto) {\n    const giftCode = await this.accountService.findOneGiftCode(dto.code)\n    if (!giftCode) {\n      return ResponseUtil.error(\"gift code doesn't exist\")\n    }\n    if (giftCode.expiredAt < new Date()) {\n      return ResponseUtil.error('gift code has expired')\n    }\n    if (giftCode.used === true) {\n      return ResponseUtil.error('gift code has been used')\n    }\n    const res = await this.accountService.useGiftCode(req.user._id, dto.code)\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * get a invite code\n   */\n  @ApiOperation({ summary: 'get a invite code' })\n  @ApiResponseObject(InviteCode)\n  @UseGuards(JwtAuthGuard)\n  @Get('invite-code')\n  async inviteCode(@Req() req: IRequest) {\n    const found = await this.accountService.findOneInviteCode(req.user._id)\n    if (found) {\n      return ResponseUtil.ok(found)\n    }\n    const res = await this.accountService.generateInviteCode(req.user._id)\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * get invite code profit\n   */\n  @ApiOperation({ summary: 'get invite code profit' })\n  @ApiResponsePagination(InviteCodeProfit)\n  @UseGuards(JwtAuthGuard)\n  @Get('invite-profit')\n  async inviteCodeProfit(\n    @Req() req: IRequest,\n    @Query('page') page: number,\n    @Query('pageSize') pageSize: number,\n  ) {\n    page = page || 1\n    pageSize = pageSize || 12\n    if (pageSize > 100) {\n      pageSize = 100\n    }\n    const res = await this.accountService.getInviteProfit(\n      req.user._id,\n      page,\n      pageSize,\n    )\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/account/account.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { AccountService } from './account.service'\nimport { AccountController } from './account.controller'\nimport { WeChatPayService } from './payment/wechat-pay.service'\nimport { PaymentChannelService } from './payment/payment-channel.service'\nimport { HttpModule } from '@nestjs/axios'\n\n@Module({\n  imports: [HttpModule],\n  providers: [AccountService, WeChatPayService, PaymentChannelService],\n  controllers: [AccountController],\n  exports: [WeChatPayService, AccountService, PaymentChannelService],\n})\nexport class AccountModule {}\n"
  },
  {
    "path": "server/src/account/account.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport * as assert from 'assert'\nimport { WeChatPayService } from './payment/wechat-pay.service'\nimport { PaymentChannelService } from './payment/payment-channel.service'\nimport { TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport { Account, BaseState } from './entities/account'\nimport { ObjectId, ClientSession } from 'mongodb'\nimport { GenerateInviteCode } from 'src/utils/random'\nimport {\n  AccountChargeOrder,\n  AccountChargePhase,\n  Currency,\n  PaymentChannelType,\n} from './entities/account-charge-order'\nimport { GiftCode } from './entities/account-gift-code'\nimport { AccountTransaction } from './entities/account-transaction'\nimport { AccountChargeReward } from './entities/account-charge-reward'\nimport {\n  InviteCode,\n  InviteCodeState,\n  InviteRelation,\n} from 'src/authentication/entities/invite-code'\nimport { AccountChargeOrderQuery } from './interface/account-query.interface'\nimport { Setting, SettingKey } from 'src/setting/entities/setting'\n\n@Injectable()\nexport class AccountService {\n  private readonly logger = new Logger(AccountService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(\n    private readonly wechatPayService: WeChatPayService,\n    private readonly chanelService: PaymentChannelService,\n  ) {}\n\n  async create(userid: ObjectId): Promise<Account> {\n    // get signup Profit Amount\n    let amount = 0\n    const signupBonus = await this.db.collection<Setting>('Setting').findOne({\n      key: SettingKey.SignupBonus,\n    })\n    if (signupBonus) {\n      amount = parseFloat(signupBonus.value)\n    }\n    await this.db.collection<Account>('Account').insertOne({\n      balance: amount,\n      state: BaseState.Active,\n      createdBy: userid,\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    })\n\n    return await this.findOne(userid)\n  }\n\n  async findOne(userid: ObjectId) {\n    const account = await this.db\n      .collection<Account>('Account')\n      .findOne({ createdBy: new ObjectId(userid) })\n\n    if (account) {\n      return account\n    }\n\n    return await this.create(userid)\n  }\n\n  async chargeWithTransaction(\n    accountId: ObjectId,\n    amount: number,\n    message: string,\n    session: ClientSession,\n    additionalParams?: Partial<AccountTransaction>,\n  ) {\n    // update account balance\n    const res = await this.db\n      .collection<Account>('Account')\n      .findOneAndUpdate(\n        { _id: accountId },\n        { $inc: { balance: amount }, $set: { updatedAt: new Date() } },\n        { session, returnDocument: 'after' },\n      )\n\n    assert(res.value, `account not found: ${accountId}`)\n\n    if (res.value.balance > 0 && res.value.owedAt) {\n      await this.db\n        .collection<Account>('Account')\n        .updateOne({ _id: accountId }, { $unset: { owedAt: '' } }, { session })\n    }\n\n    if (additionalParams) {\n      const transaction = await this.db\n        .collection<AccountTransaction>('AccountTransaction')\n        .insertOne(\n          {\n            accountId: accountId,\n            amount: additionalParams.reward\n              ? amount - additionalParams.reward\n              : amount,\n            reward: additionalParams.reward,\n            balance: res.value.balance,\n            message: message,\n            orderId: additionalParams.orderId,\n            createdAt: new Date(),\n          },\n          { session },\n        )\n\n      return { account: res.value, transaction: transaction }\n    }\n\n    // add transaction record\n    const transaction = await this.db\n      .collection<AccountTransaction>('AccountTransaction')\n      .insertOne(\n        {\n          accountId: accountId,\n          amount: amount,\n          balance: res.value.balance,\n          message: message,\n          createdAt: new Date(),\n        },\n        { session },\n      )\n\n    return { account: res.value, transaction: transaction }\n  }\n\n  async createChargeOrder(\n    userid: ObjectId,\n    amount: number,\n    currency: Currency,\n    channel: PaymentChannelType,\n  ) {\n    const account = await this.findOne(userid)\n    assert(account, 'Account not found')\n\n    // create charge order\n    const res = await this.db\n      .collection<AccountChargeOrder>('AccountChargeOrder')\n      .insertOne({\n        accountId: account._id,\n        amount,\n        currency: currency,\n        phase: AccountChargePhase.Pending,\n        channel: channel,\n        createdBy: new ObjectId(userid),\n        lockedAt: TASK_LOCK_INIT_TIME,\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      })\n\n    return await this.findOneChargeOrder(userid, res.insertedId)\n  }\n\n  async findOneChargeOrder(userid: ObjectId, id: ObjectId) {\n    const order = await this.db\n      .collection<AccountChargeOrder>('AccountChargeOrder')\n      .findOne({\n        _id: id,\n        createdBy: new ObjectId(userid),\n      })\n\n    return order\n  }\n\n  async pay(\n    channel: PaymentChannelType,\n    orderNumber: ObjectId,\n    amount: number,\n    currency: Currency,\n    description = 'laf account charge',\n  ) {\n    // webchat pay\n    if (channel === PaymentChannelType.WeChat) {\n      const spec = await this.chanelService.getWeChatPaySpec()\n      const result = await this.wechatPayService.send(spec, {\n        mchid: spec.mchid,\n        appid: spec.appid,\n        description,\n        out_trade_no: orderNumber.toString(),\n        notify_url: this.wechatPayService.getNotifyUrl(),\n        amount: {\n          total: amount,\n          currency: currency,\n        },\n      })\n      return result\n    }\n\n    throw new Error('Unsupported payment channel')\n  }\n\n  async findAllChargeRewards() {\n    const rewards = await this.db\n      .collection<AccountChargeReward>('AccountChargeReward')\n      .find(\n        {},\n        {\n          sort: {\n            amount: 1,\n          },\n        },\n      )\n      .toArray()\n\n    return rewards\n  }\n\n  async getAllChargeOrders(\n    userid: ObjectId,\n    condition: AccountChargeOrderQuery,\n  ) {\n    const query = {\n      createdBy: userid,\n      phase: condition.phase ? condition.phase : AccountChargePhase.Paid,\n    }\n\n    if (condition.id) {\n      query['_id'] = condition.id\n    }\n\n    if (condition.channel) {\n      query['channel'] = condition.channel\n    }\n\n    if (condition.startTime) {\n      query['createdAt'] = { $gte: condition.startTime }\n    }\n\n    if (condition.endTime) {\n      if (condition.startTime) {\n        query['createdAt']['$lte'] = condition.endTime\n      } else {\n        query['createdAt'] = { $lte: condition.endTime }\n      }\n    }\n\n    const total = await this.db\n      .collection<AccountChargeOrder>('AccountChargeOrder')\n      .countDocuments(query)\n\n    const orders = await this.db\n      .collection<AccountChargeOrder>('AccountChargeOrder')\n      .aggregate([\n        { $match: query },\n        {\n          $lookup: {\n            from: 'AccountTransaction',\n            localField: '_id',\n            foreignField: 'orderId',\n            as: 'transaction',\n          },\n        },\n        { $sort: { createdAt: -1 } },\n        { $skip: (condition.page - 1) * condition.pageSize },\n        { $limit: condition.pageSize },\n        { $unwind: { path: '$transaction', preserveNullAndEmptyArrays: true } },\n        {\n          $addFields: {\n            reward: '$transaction.reward',\n          },\n        },\n        {\n          $project: {\n            transaction: 0,\n          },\n        },\n      ])\n      .toArray()\n\n    const res = {\n      total,\n      list: orders,\n      page: condition.page,\n      pageSize: condition.pageSize,\n    }\n\n    return res\n  }\n\n  async getUserRecharge(userid: ObjectId, condition: AccountChargeOrderQuery) {\n    const query = {\n      createdBy: userid,\n      phase: AccountChargePhase.Paid,\n    }\n\n    if (condition.startTime) {\n      query['createdAt'] = { $gte: condition.startTime }\n    }\n\n    if (condition.endTime) {\n      if (condition.startTime) {\n        query['createdAt']['$lte'] = condition.endTime\n      } else {\n        query['createdAt'] = { $lte: condition.endTime }\n      }\n    }\n\n    const rechargeAmount = await this.db\n      .collection<AccountChargeOrder>('AccountChargeOrder')\n      .aggregate([\n        { $match: query },\n        {\n          $group: {\n            _id: null,\n            totalAmount: {\n              $sum: '$amount',\n            },\n          },\n        },\n      ])\n      .toArray()\n    return rechargeAmount.length > 0 ? rechargeAmount[0].totalAmount : 0\n  }\n\n  // gift code\n  async useGiftCode(userid: ObjectId, code: string) {\n    const client = SystemDatabase.client\n    const session = client.startSession()\n\n    const giftCode = await this.findOneGiftCode(code)\n    const account = await this.findOne(userid)\n\n    try {\n      session.startTransaction()\n      // add gift-code charge order\n      await this.db\n        .collection<AccountChargeOrder>('AccountChargeOrder')\n        .insertOne(\n          {\n            accountId: account._id,\n            amount: giftCode.creditAmount,\n            currency: Currency.CNY,\n            phase: AccountChargePhase.Paid,\n            channel: PaymentChannelType.GiftCode,\n            createdBy: new ObjectId(userid),\n            lockedAt: TASK_LOCK_INIT_TIME,\n            createdAt: new Date(),\n            updatedAt: new Date(),\n          },\n          { session },\n        )\n\n      // update account balance and add transaction record\n\n      const res = await this.chargeWithTransaction(\n        account._id,\n        giftCode.creditAmount,\n        'Gift code redemption',\n        session,\n      )\n\n      // void gift code\n      await this.db.collection<GiftCode>('GiftCode').findOneAndUpdate(\n        {\n          _id: giftCode._id,\n        },\n        {\n          $set: {\n            used: true,\n            usedAt: new Date(),\n            usedBy: account._id,\n            transactionId: res.transaction.insertedId,\n          },\n        },\n        { session },\n      )\n\n      await session.commitTransaction()\n\n      return res.account\n    } catch (error) {\n      await session.abortTransaction()\n      this.logger.error(error)\n      throw error\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  async findOneGiftCode(code: string): Promise<GiftCode | null> {\n    const giftCode = await this.db.collection<GiftCode>('GiftCode').findOne({\n      code: code,\n    })\n    return giftCode\n  }\n\n  // invite code\n  async generateInviteCode(uid: ObjectId): Promise<InviteCode | null> {\n    while (true) {\n      const nanoid = GenerateInviteCode()\n      const code = `${nanoid}`\n      const found = await this.db\n        .collection<InviteCode>('InviteCode')\n        .findOne({ code })\n\n      if (!found) {\n        const res = await this.db\n          .collection<InviteCode>('InviteCode')\n          .insertOne({\n            uid,\n            code,\n            state: InviteCodeState.Enabled,\n            createdAt: new Date(),\n            updatedAt: new Date(),\n          })\n\n        const inviteCode = await this.db\n          .collection<InviteCode>('InviteCode')\n          .findOne({ _id: res.insertedId })\n\n        return inviteCode\n      }\n    }\n  }\n\n  async findOneInviteCode(uid: ObjectId): Promise<InviteCode | null> {\n    const inviteCode = await this.db\n      .collection<InviteCode>('InviteCode')\n      .findOne({\n        uid,\n      })\n\n    return inviteCode\n  }\n\n  async getInviteProfit(uid: ObjectId, page: number, pageSize: number) {\n    const query = {\n      invitedBy: uid,\n    }\n    const pipe = [\n      {\n        $match: query,\n      },\n      {\n        $lookup: {\n          from: 'User',\n          let: { userId: '$uid' },\n          pipeline: [\n            {\n              $match: {\n                $expr: {\n                  $eq: ['$_id', '$$userId'],\n                },\n              },\n            },\n            {\n              $project: { username: 1, _id: 0 },\n            },\n          ],\n          as: 'user',\n        },\n      },\n      {\n        $lookup: {\n          from: 'AccountTransaction',\n          let: { transactionId: '$transactionId' },\n          pipeline: [\n            {\n              $match: {\n                $expr: {\n                  $eq: ['$_id', '$$transactionId'],\n                },\n              },\n            },\n            {\n              $project: { amount: 1, _id: 0 },\n            },\n          ],\n          as: 'transaction',\n        },\n      },\n      {\n        $addFields: {\n          username: { $arrayElemAt: ['$user.username', 0] },\n          inviteProfit: { $arrayElemAt: ['$transaction.amount', 0] },\n        },\n      },\n      {\n        $project: {\n          user: 0,\n          transaction: 0,\n        },\n      },\n      { $sort: { createdAt: -1 } },\n      { $skip: (page - 1) * pageSize },\n      { $limit: pageSize },\n    ]\n\n    const total = await this.db\n      .collection<InviteRelation>('InviteRelation')\n      .countDocuments(query)\n\n    const inviteCodeProfits = await this.db\n      .collection<InviteRelation>('InviteRelation')\n      .aggregate(pipe)\n      .toArray()\n\n    const res = {\n      list: inviteCodeProfits,\n      total,\n      page,\n      pageSize,\n    }\n\n    return res\n  }\n}\n"
  },
  {
    "path": "server/src/account/dto/create-charge-order.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsEnum, IsInt, IsPositive, IsString, Max, Min } from 'class-validator'\nimport {\n  AccountChargeOrder,\n  Currency,\n  PaymentChannelType,\n} from '../entities/account-charge-order'\n\nexport class CreateChargeOrderDto {\n  @ApiProperty({ example: 1000 })\n  @IsPositive()\n  @IsInt()\n  @Min(1)\n  @Max(1000000000)\n  amount: number\n\n  @ApiProperty({ example: PaymentChannelType.WeChat })\n  @IsString()\n  @IsEnum(PaymentChannelType)\n  channel: PaymentChannelType\n\n  @ApiProperty({ example: Currency.CNY })\n  @IsString()\n  @IsEnum(Currency)\n  currency: Currency\n}\n\nexport class WeChatPaymentCreateOrderResult {\n  @ApiProperty()\n  code_url: string\n}\n\nexport class CreateChargeOrderOutDto {\n  @ApiProperty()\n  order: AccountChargeOrder\n\n  @ApiProperty()\n  result: WeChatPaymentCreateOrderResult\n}\n"
  },
  {
    "path": "server/src/account/dto/get-charge-order.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport enum Currency {\n  CNY = 'CNY',\n  USD = 'USD',\n}\n\nexport enum AccountChargePhase {\n  Pending = 'Pending',\n  Paid = 'Paid',\n  Failed = 'Failed',\n}\n\nexport enum PaymentChannelType {\n  Manual = 'Manual',\n  Alipay = 'Alipay',\n  WeChat = 'WeChat',\n  Stripe = 'Stripe',\n  Paypal = 'Paypal',\n  Google = 'Google',\n}\n\nexport class GetAccountChargeOrdersDto<R = any> {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  accountId: ObjectId\n\n  @ApiProperty()\n  amount: number\n\n  @ApiProperty({ enum: Currency })\n  currency: Currency\n\n  @ApiProperty({ enum: AccountChargePhase })\n  phase: AccountChargePhase\n\n  @ApiProperty({ enum: PaymentChannelType })\n  channel: PaymentChannelType\n\n  @ApiProperty()\n  result?: R\n\n  @ApiProperty()\n  message?: string\n\n  lockedAt: Date\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  @ApiProperty({ type: String })\n  createdBy: ObjectId\n\n  @ApiProperty({ type: Number })\n  reward: number\n}\n"
  },
  {
    "path": "server/src/account/dto/invite-code.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport class InviteCodeProfit {\n  @ApiProperty({ type: String })\n  _id: ObjectId\n\n  @ApiProperty({ type: String })\n  uid: ObjectId\n\n  @ApiProperty({ type: String })\n  invitedBy: ObjectId\n\n  @ApiProperty({ type: String })\n  codeId: ObjectId\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  profit: number\n\n  @ApiProperty()\n  username: string\n}\n"
  },
  {
    "path": "server/src/account/dto/use-gift-code.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, Length } from 'class-validator'\n\nexport class UseGiftCodeDto {\n  @ApiProperty({\n    description: 'gift code',\n    type: 'string',\n  })\n  @IsNotEmpty()\n  @Length(8, 64)\n  code: string\n}\n"
  },
  {
    "path": "server/src/account/entities/account-charge-order.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport enum Currency {\n  CNY = 'CNY',\n  USD = 'USD',\n}\n\nexport enum AccountChargePhase {\n  Pending = 'Pending',\n  Paid = 'Paid',\n  Failed = 'Failed',\n}\n\nexport enum PaymentChannelType {\n  Manual = 'Manual',\n  Alipay = 'Alipay',\n  WeChat = 'WeChat',\n  Stripe = 'Stripe',\n  Paypal = 'Paypal',\n  Google = 'Google',\n  GiftCode = 'GiftCode',\n  InviteCode = 'InviteCode',\n}\n\nexport class AccountChargeOrder<R = any> {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  accountId: ObjectId\n\n  @ApiProperty()\n  amount: number\n\n  @ApiProperty({ enum: Currency })\n  currency: Currency\n\n  @ApiProperty({ enum: AccountChargePhase })\n  phase: AccountChargePhase\n\n  @ApiProperty({ enum: PaymentChannelType })\n  channel: PaymentChannelType\n\n  @ApiProperty()\n  result?: R\n\n  @ApiProperty()\n  message?: string\n\n  lockedAt: Date\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  @ApiProperty({ type: String })\n  createdBy: ObjectId\n\n  constructor(partial: Partial<AccountChargeOrder<R>>) {\n    Object.assign(this, partial)\n  }\n}\n"
  },
  {
    "path": "server/src/account/entities/account-charge-reward.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport class AccountChargeReward {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  amount: number\n\n  @ApiProperty({})\n  reward: number\n\n  @ApiPropertyOptional()\n  message?: string\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/account/entities/account-gift-code.ts",
    "content": "import { ObjectId } from 'mongodb'\n\nexport class GiftCode {\n  _id?: ObjectId\n  code: string\n  creditAmount: number\n  used: boolean\n  usedBy?: ObjectId\n  usedAt?: Date\n  createdAt: Date\n  expiredAt?: Date\n  transactionId?: ObjectId\n}\n"
  },
  {
    "path": "server/src/account/entities/account-transaction.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport class AccountTransaction {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  accountId: ObjectId\n\n  @ApiProperty()\n  amount: number\n\n  @ApiProperty()\n  balance: number\n\n  @ApiProperty()\n  reward?: number\n\n  @ApiProperty()\n  message: string\n\n  @ApiPropertyOptional({ type: String })\n  orderId?: ObjectId\n\n  @ApiPropertyOptional({ type: String })\n  billingId?: ObjectId\n\n  @ApiProperty()\n  createdAt: Date\n\n  constructor(partial: Partial<AccountTransaction>) {\n    Object.assign(this, partial)\n  }\n}\n"
  },
  {
    "path": "server/src/account/entities/account.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport enum BaseState {\n  Active = 'Active',\n  Inactive = 'Inactive',\n}\n\nexport class Account {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({\n    type: Date,\n    required: false,\n    description: 'The timestamp when the account became owed',\n  })\n  owedAt?: Date\n\n  @ApiProperty()\n  balance: number\n\n  @ApiProperty({ enum: BaseState })\n  state: BaseState\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  @ApiProperty({ type: String })\n  createdBy: ObjectId\n\n  constructor(partial: Partial<Account>) {\n    Object.assign(this, partial)\n  }\n}\n"
  },
  {
    "path": "server/src/account/entities/payment-channel.ts",
    "content": "import { ObjectId } from 'mongodb'\nimport { PaymentChannelType } from './account-charge-order'\nimport { BaseState } from './account'\nimport { ApiProperty } from '@nestjs/swagger'\n\nexport class PaymentChannel<S = any> {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ enum: PaymentChannelType, type: String })\n  type: PaymentChannelType\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  spec: S\n\n  @ApiProperty({ type: String, enum: BaseState })\n  state: BaseState\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  constructor(partial: Partial<PaymentChannel<S>>) {\n    Object.assign(this, partial)\n  }\n}\n"
  },
  {
    "path": "server/src/account/interface/account-query.interface.ts",
    "content": "import { ObjectId } from 'mongodb'\n\nexport interface AccountChargeOrderQuery {\n  phase?: string\n  id?: ObjectId\n  startTime?: Date\n  endTime?: Date\n  page?: number\n  pageSize?: number\n  channel?: string\n}\n"
  },
  {
    "path": "server/src/account/payment/payment-channel.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { WeChatPaySpec } from './types'\nimport { SystemDatabase } from 'src/system-database'\nimport { PaymentChannel } from '../entities/payment-channel'\nimport { BaseState } from '../entities/account'\nimport { PaymentChannelType } from '../entities/account-charge-order'\n\n@Injectable()\nexport class PaymentChannelService {\n  private readonly logger = new Logger(PaymentChannelService.name)\n  private readonly db = SystemDatabase.db\n\n  /**\n   * Get all payment channels\n   * @returns\n   */\n  async findAll() {\n    const res = await this.db\n      .collection<PaymentChannel>('PaymentChannel')\n      .find(\n        { state: BaseState.Active },\n        {\n          projection: {\n            // Security Warning: DO NOT response sensitive information to client.\n            // KEEP IT false!\n            spec: false,\n          },\n        },\n      )\n      .toArray()\n\n    return res\n  }\n\n  async getWeChatPaySpec() {\n    const res = await this.db\n      .collection<PaymentChannel<WeChatPaySpec>>('PaymentChannel')\n      .findOne({ type: PaymentChannelType.WeChat })\n\n    if (!res) {\n      throw new Error('No WeChat Pay channel found')\n    }\n\n    return res.spec\n  }\n}\n"
  },
  {
    "path": "server/src/account/payment/types.ts",
    "content": "import { AccountChargeOrder } from '../entities/account-charge-order'\n\nexport interface WeChatPaySpec {\n  mchid: string\n  appid: string\n  apiV3Key: string\n  certificateSerialNumber: string\n  publicKey: string\n  privateKey: string\n}\n\nexport interface WeChatPayOrder {\n  mchid: string\n  appid: string\n  description: string\n  out_trade_no: string\n  notify_url: string\n  amount: {\n    total: number\n    currency: string\n  }\n}\n\nexport interface WeChatPayOrderResponse {\n  id: string\n  create_time: string\n  resource_type: string\n  event_type: string\n  summary: string\n  resource: {\n    original_type: string\n    algorithm: string\n    ciphertext: string\n    associated_data: string\n    nonce: string\n  }\n}\n\nexport enum WeChatPayTradeState {\n  SUCCESS = 'SUCCESS',\n  REFUND = 'REFUND',\n  NOTPAY = 'NOTPAY',\n  CLOSED = 'CLOSED',\n  REVOKED = 'REVOKED',\n  USERPAYING = 'USERPAYING',\n  PAYERROR = 'PAYERROR',\n}\n\nexport interface WeChatPayDecryptedResult {\n  mchid: string\n  appid: string\n  out_trade_no: string\n  transaction_id: string\n  trade_type: string\n  trade_state: WeChatPayTradeState\n  trade_state_desc: string\n  bank_type: string\n  attach: string\n  success_time: string\n  payer: { openid: string }\n  amount: {\n    total: number\n    payer_total: number\n    currency: string\n    payer_currency: string\n  }\n}\n\nexport type WeChatPayChargeOrder = AccountChargeOrder<WeChatPayDecryptedResult>\n"
  },
  {
    "path": "server/src/account/payment/wechat-pay.service.ts",
    "content": "import { Injectable } from '@nestjs/common'\nimport {\n  WeChatPaySpec,\n  WeChatPayOrder,\n  WeChatPayOrderResponse,\n  WeChatPayDecryptedResult,\n} from './types'\nimport * as crypto from 'crypto'\nimport { HttpService } from '@nestjs/axios'\nimport { ServerConfig } from 'src/constants'\n// import * as WxPay from 'wechatpay-node-v3'\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst WxPay = require('wechatpay-node-v3')\n\n@Injectable()\nexport class WeChatPayService {\n  static readonly API_BASE_URL = 'https://api.mch.weixin.qq.com'\n\n  constructor(private readonly httpService: HttpService) {}\n\n  async send(spec: WeChatPaySpec, order: WeChatPayOrder) {\n    // sign the order\n    const timestamp = Math.floor(Date.now() / 1000)\n    const nonceStr = crypto.randomUUID()\n    const method = 'POST'\n    const apiUrl = '/v3/pay/transactions/native'\n    const signature = this.createSign(\n      spec,\n      method,\n      apiUrl,\n      timestamp,\n      nonceStr,\n      order,\n    )\n\n    // send the request\n    const serialNo = spec.certificateSerialNumber\n    const token = `WECHATPAY2-SHA256-RSA2048 mchid=\"${spec.mchid}\",nonce_str=\"${nonceStr}\",timestamp=\"${timestamp}\",signature=\"${signature}\",serial_no=\"${serialNo}\"`\n    const fullUrl = `${WeChatPayService.API_BASE_URL}${apiUrl}`\n    const res = await this.httpService.axiosRef.post(fullUrl, order, {\n      headers: { Authorization: token },\n    })\n\n    return res.data\n  }\n\n  private createSign(\n    spec: WeChatPaySpec,\n    method: string,\n    url: string,\n    timestamp: number,\n    nonceStr: string,\n    order: WeChatPayOrder,\n  ) {\n    let orderStr = ''\n    if (method === 'POST' && order) {\n      orderStr = JSON.stringify(order)\n    }\n    const signStr = `${method}\\n${url}\\n${timestamp}\\n${nonceStr}\\n${orderStr}\\n`\n    const cert = spec.privateKey\n    const sign = crypto.createSign('RSA-SHA256')\n    sign.update(signStr)\n    return sign.sign(cert, 'base64')\n  }\n\n  getClient(spec: WeChatPaySpec) {\n    const client = new WxPay({\n      appid: spec.appid,\n      mchid: spec.mchid,\n      serial_no: spec.certificateSerialNumber,\n      key: spec.apiV3Key,\n      publicKey: Buffer.from(spec.publicKey, 'utf8'),\n      privateKey: Buffer.from(spec.privateKey, 'utf8'),\n    })\n\n    return client\n  }\n\n  async getWeChatPayNotifyResult(\n    spec: WeChatPaySpec,\n    params: {\n      timestamp: string | number\n      nonce: string\n      body: WeChatPayOrderResponse\n      serial: string\n      signature: string\n    },\n  ) {\n    const valid = await this.verifyNotify(spec, params)\n    if (!valid) {\n      throw new Error('Invalid wechat pay notify')\n    }\n\n    const resource = params.body.resource\n    const result = this.decryptNotify(\n      spec,\n      resource.ciphertext,\n      resource.associated_data,\n      resource.nonce,\n    )\n\n    return result as WeChatPayDecryptedResult\n  }\n\n  async verifyNotify(\n    spec: WeChatPaySpec,\n    params: {\n      timestamp: string | number\n      nonce: string\n      body: string | Record<string, any>\n      serial: string\n      signature: string\n    },\n  ) {\n    const client = this.getClient(spec)\n    return await client.verifySign(params)\n  }\n\n  decryptNotify(\n    spec: WeChatPaySpec,\n    ciphertext: string,\n    associated_data: string,\n    nonce: string,\n  ) {\n    const client = this.getClient(spec)\n    return client.decipher_gcm(ciphertext, associated_data, nonce)\n  }\n\n  getNotifyUrl() {\n    const apiUrl = ServerConfig.API_SERVER_URL\n    return `${apiUrl}/v1/accounts/payment/wechat-notify`\n  }\n}\n"
  },
  {
    "path": "server/src/app.controller.ts",
    "content": "import { Controller, Get, Logger } from '@nestjs/common'\nimport { ApiOperation, ApiTags } from '@nestjs/swagger'\nimport { ApiResponseArray, ResponseUtil } from './utils/response'\nimport { SystemDatabase } from './system-database'\nimport { Runtime } from './application/entities/runtime'\n\n@ApiTags('Public')\n@Controller()\nexport class AppController {\n  private readonly logger = new Logger(AppController.name)\n  private readonly db = SystemDatabase.db\n\n  /**\n   * Get runtime list\n   * @returns\n   */\n  @ApiOperation({ summary: 'Get application runtime list' })\n  @ApiResponseArray(Runtime)\n  @Get('runtimes')\n  async getRuntimes() {\n    const data = await this.db.collection<Runtime>('Runtime').find({}).toArray()\n    return ResponseUtil.ok(data)\n  }\n}\n"
  },
  {
    "path": "server/src/app.interceptor.ts",
    "content": "import {\n  Injectable,\n  NestInterceptor,\n  ExecutionContext,\n  CallHandler,\n  ForbiddenException,\n} from '@nestjs/common'\nimport { Observable, from, mergeMap, of } from 'rxjs'\nimport { HttpInterceptorService } from './interceptor/http-interceptor.service'\nimport {\n  HttpInterceptorAction,\n  HttpInterceptorResponseDto,\n} from './interceptor/dto/http-interceptor.dto'\nimport { Response } from 'express'\nimport { v4 as uuidv4 } from 'uuid'\n\n@Injectable()\nexport class AppInterceptor implements NestInterceptor {\n  constructor(private httpInterceptorService: HttpInterceptorService) {}\n\n  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {\n    const response: Response = context.switchToHttp().getResponse()\n    const requestId = uuidv4()\n\n    return from(\n      this.httpInterceptorService.processPreInterceptor(context, requestId),\n    ).pipe(\n      mergeMap((preInterceptorData: HttpInterceptorResponseDto) => {\n        if (preInterceptorData.action === HttpInterceptorAction.DENY) {\n          return this.handleDenyAction(response, preInterceptorData)\n        }\n\n        // post interceptor\n        if (preInterceptorData.action === HttpInterceptorAction.ALLOW) {\n          return next.handle().pipe(\n            mergeMap((data) =>\n              from(\n                this.httpInterceptorService.processPostInterceptor(\n                  context,\n                  requestId,\n                  data,\n                ),\n              ).pipe(\n                mergeMap((postInterceptorData: HttpInterceptorResponseDto) => {\n                  if (\n                    postInterceptorData.action === HttpInterceptorAction.DENY\n                  ) {\n                    return this.handleDenyAction(response, postInterceptorData)\n                  }\n                  return of(data)\n                }),\n              ),\n            ),\n          )\n        }\n      }),\n    )\n  }\n\n  handleDenyAction(\n    response: Response,\n    interceptorData: HttpInterceptorResponseDto,\n  ) {\n    if (interceptorData.rewrite) {\n      response.status(interceptorData.rewrite.status || 200)\n      return of(interceptorData.rewrite.data)\n    }\n    if (interceptorData.redirect) {\n      response.status(interceptorData.redirect.status || 302)\n      response.redirect(interceptorData.redirect.data)\n      return of(null)\n    }\n    throw new ForbiddenException(\n      interceptorData.denyMessage || \"You don't have permission to access\",\n    )\n  }\n}\n"
  },
  {
    "path": "server/src/app.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { AppController } from './app.controller'\nimport { AppService } from './app.service'\nimport { WebsiteModule } from './website/website.module'\nimport { FunctionModule } from './function/function.module'\nimport { HttpModule } from '@nestjs/axios'\nimport { ApplicationModule } from './application/application.module'\nimport { ThrottlerModule } from '@nestjs/throttler'\nimport { InitializerModule } from './initializer/initializer.module'\nimport { InstanceModule } from './instance/instance.module'\nimport { ScheduleModule } from '@nestjs/schedule'\nimport { DatabaseModule } from './database/database.module'\nimport { StorageModule } from './storage/storage.module'\nimport { LogModule } from './log/log.module'\nimport { DependencyModule } from './dependency/dependency.module'\nimport { TriggerModule } from './trigger/trigger.module'\nimport { RegionModule } from './region/region.module'\nimport { GatewayModule } from './gateway/gateway.module'\nimport { AccountModule } from './account/account.module'\nimport { SettingModule } from './setting/setting.module'\nimport * as path from 'path'\nimport { AcceptLanguageResolver, I18nModule, QueryResolver } from 'nestjs-i18n'\nimport { BillingModule } from './billing/billing.module'\nimport { AuthenticationModule } from './authentication/authentication.module'\nimport { FunctionTemplateModule } from './function-template/function-template.module'\nimport { MulterModule } from '@nestjs/platform-express'\nimport { RecycleBinModule } from './recycle-bin/recycle-bin.module'\nimport { GroupModule } from './group/group.module'\nimport { APP_INTERCEPTOR } from '@nestjs/core'\nimport { AppInterceptor } from './app.interceptor'\nimport { InterceptorModule } from './interceptor/interceptor.module'\nimport { MonitorModule } from './monitor/monitor.module'\nimport { NotificationModule } from './notification/notification.module'\nimport { ServerConfig } from './constants'\nimport { EventEmitterModule } from '@nestjs/event-emitter'\n\n@Module({\n  imports: [\n    ScheduleModule.forRoot(),\n    ThrottlerModule.forRoot({\n      ttl: 60,\n      limit: 10,\n    }),\n    FunctionModule,\n    WebsiteModule,\n    HttpModule,\n    AuthenticationModule,\n    ApplicationModule,\n    InitializerModule,\n    InstanceModule,\n    DatabaseModule,\n    StorageModule,\n    LogModule,\n    DependencyModule,\n    TriggerModule,\n    RegionModule,\n    GatewayModule,\n    AccountModule,\n    SettingModule,\n    I18nModule.forRoot({\n      fallbackLanguage: ServerConfig.DEFAULT_LANGUAGE,\n      loaderOptions: {\n        path: path.join(__dirname, '/i18n/'),\n        watch: false,\n      },\n      resolvers: [\n        { use: QueryResolver, options: ['lang'] },\n        AcceptLanguageResolver,\n      ],\n      typesOutputPath: path.join(\n        __dirname,\n        '../src/generated/i18n.generated.ts',\n      ),\n    }),\n    BillingModule,\n    FunctionTemplateModule,\n    MulterModule.register(),\n    RecycleBinModule,\n    GroupModule,\n    InterceptorModule,\n    MonitorModule,\n    NotificationModule,\n    EventEmitterModule.forRoot(),\n  ],\n  controllers: [AppController],\n  providers: [\n    { provide: APP_INTERCEPTOR, useClass: AppInterceptor },\n    AppService,\n  ],\n})\nexport class AppModule {}\n"
  },
  {
    "path": "server/src/app.service.ts",
    "content": "import { Injectable } from '@nestjs/common'\n\n@Injectable()\nexport class AppService {}\n"
  },
  {
    "path": "server/src/application/application-task.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport * as assert from 'node:assert'\nimport { StorageService } from '../storage/storage.service'\nimport { DatabaseService } from '../database/database.service'\nimport { ClusterService } from 'src/region/cluster/cluster.service'\nimport { RegionService } from 'src/region/region.service'\nimport { RuntimeDomainService } from 'src/gateway/runtime-domain.service'\nimport { ServerConfig, TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport { TriggerService } from 'src/trigger/trigger.service'\nimport { FunctionService } from 'src/function/function.service'\nimport { ApplicationConfigurationService } from './configuration.service'\nimport { BundleService } from 'src/application/bundle.service'\nimport { WebsiteService } from 'src/website/website.service'\nimport { PolicyService } from 'src/database/policy/policy.service'\nimport { BucketDomainService } from 'src/gateway/bucket-domain.service'\nimport {\n  Application,\n  ApplicationPhase,\n  ApplicationState,\n} from './entities/application'\nimport { DatabasePhase } from 'src/database/entities/database'\nimport { DomainPhase } from 'src/gateway/entities/runtime-domain'\nimport { StoragePhase } from 'src/storage/entities/storage-user'\nimport { ApplicationNamespaceMode } from 'src/region/entities/region'\nimport { DedicatedDatabaseService } from 'src/database/dedicated-database/dedicated-database.service'\nimport { StorageBucket } from 'src/storage/entities/storage-bucket'\n\n@Injectable()\nexport class ApplicationTaskService {\n  readonly lockTimeout = 15 // in second\n  private readonly logger = new Logger(ApplicationTaskService.name)\n\n  constructor(\n    private readonly regionService: RegionService,\n    private readonly clusterService: ClusterService,\n    private readonly storageService: StorageService,\n    private readonly databaseService: DatabaseService,\n    private readonly dedicatedDatabaseService: DedicatedDatabaseService,\n    private readonly runtimeDomainService: RuntimeDomainService,\n    private readonly bucketDomainService: BucketDomainService,\n    private readonly triggerService: TriggerService,\n    private readonly functionService: FunctionService,\n    private readonly configurationService: ApplicationConfigurationService,\n    private readonly bundleService: BundleService,\n    private readonly websiteService: WebsiteService,\n    private readonly policyService: PolicyService,\n  ) {}\n\n  @Cron(CronExpression.EVERY_SECOND)\n  async tick() {\n    if (ServerConfig.DISABLED_APPLICATION_TASK) {\n      return\n    }\n\n    // Phase `Creating` -> `Created`\n    this.handleCreatingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // State `Deleted`\n    this.handleDeletedState().catch((err) => {\n      this.logger.error(err)\n    })\n  }\n\n  /**\n   * Phase `Creating`:\n   * - create namespace\n   * - create storage user\n   * - create runtime domain\n   * - create database & user\n   * - move phase `Creating` to `Created`\n   */\n  async handleCreatingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<Application>('Application')\n      .findOneAndUpdate(\n        {\n          phase: ApplicationPhase.Creating,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { sort: { lockedAt: 1, updatedAt: 1 }, returnDocument: 'after' },\n      )\n\n    if (!res.value) return\n\n    const app = res.value\n    const appid = app.appid\n\n    this.logger.log(`handleCreatingPhase matched app ${appid}, locked it`)\n\n    // get region by appid\n    const region = await this.regionService.findByAppId(appid)\n    assert(region, `Region ${region.name} not found`)\n\n    // reconcile namespace\n    const namespace = await this.clusterService.getAppNamespace(region, appid)\n    if (!namespace) {\n      this.logger.debug(`Creating namespace for application ${appid}`)\n      await this.clusterService.createAppNamespace(\n        region,\n        appid,\n        app.createdBy.toString(),\n      )\n      return await this.unlock(appid)\n    }\n\n    // reconcile storage\n    let storage = await this.storageService.findOne(appid)\n    if (!storage) {\n      this.logger.log(`Creating storage for application ${appid}`)\n      storage = await this.storageService.create(app.appid)\n    }\n\n    // reconcile runtime domain\n    let runtimeDomain = await this.runtimeDomainService.findOne(appid)\n    if (!runtimeDomain) {\n      this.logger.log(`Creating gateway for application ${appid}`)\n      runtimeDomain = await this.runtimeDomainService.create(appid)\n    }\n\n    // reconcile database\n    const dedicatedDatabase = await this.dedicatedDatabaseService.findOne(appid)\n    if (!dedicatedDatabase) {\n      let database = await this.databaseService.findOne(appid)\n      if (!database) {\n        this.logger.log(`Creating database for application ${appid}`)\n        database = await this.databaseService.create(app.appid)\n      }\n\n      if (database?.phase !== DatabasePhase.Created) {\n        return await this.unlock(appid)\n      }\n    }\n\n    // waiting resources' phase to be `Created`\n    if (runtimeDomain?.phase !== DomainPhase.Created) {\n      return await this.unlock(appid)\n    }\n\n    if (storage?.phase !== StoragePhase.Created) {\n      return await this.unlock(appid)\n    }\n\n    // update application phase to `Created`\n    await db.collection<Application>('Application').updateOne(\n      { _id: app._id, phase: ApplicationPhase.Creating },\n      {\n        $set: {\n          phase: ApplicationPhase.Created,\n          lockedAt: TASK_LOCK_INIT_TIME,\n        },\n      },\n    )\n\n    this.logger.log('app phase updated to `Created`: ' + app.appid)\n  }\n\n  /**\n   * Phase `Deleting`:\n   * - delete triggers (k8s cronjob)\n   * - delete cloud functions\n   * - delete policies\n   * - delete application configuration\n   * - delete application bundle\n   * - delete website\n   * - delete runtime domain\n   * - delete bucket domains\n   * - delete database (mongo db)\n   * - delete storage (minio buckets & user)\n   * - delete namespace\n   * - move phase `Deleting` to `Deleted`\n   */\n  async handleDeletingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<Application>('Application')\n      .findOneAndUpdate(\n        {\n          phase: ApplicationPhase.Deleting,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { sort: { lockedAt: 1, updatedAt: 1 }, returnDocument: 'after' },\n      )\n\n    if (!res.value) return\n\n    // get region by appid\n    const app = res.value\n    const appid = app.appid\n    const region = await this.regionService.findByAppId(appid)\n    assert(region, `Region ${region.name} not found`)\n\n    // delete triggers\n    const hadTriggers = await this.triggerService.count(appid)\n    if (hadTriggers > 0) {\n      await this.triggerService.removeAll(appid)\n      return await this.unlock(appid)\n    }\n\n    // delete cloud functions\n    const hadFunctions = await this.functionService.count(appid)\n    if (hadFunctions > 0) {\n      await this.functionService.removeAll(appid)\n      return await this.unlock(appid)\n    }\n\n    // delete database proxy policies\n    const hadPolicies = await this.policyService.count(appid)\n    if (hadPolicies > 0) {\n      await this.policyService.removeAll(appid)\n      return await this.unlock(appid)\n    }\n\n    // delete application configuration\n    const hadConfigurations = await this.configurationService.count(appid)\n    if (hadConfigurations > 0) {\n      await this.configurationService.remove(appid)\n      return await this.unlock(appid)\n    }\n\n    // delete application bundle\n    const bundle = await this.bundleService.findOne(appid)\n    if (bundle) {\n      await this.bundleService.deleteOne(appid)\n      return await this.unlock(appid)\n    }\n\n    // delete website\n    const hadWebsites = await this.websiteService.count(appid)\n    if (hadWebsites > 0) {\n      await this.websiteService.removeAll(appid)\n      return await this.unlock(appid)\n    }\n\n    // delete runtime domain\n    const runtimeDomain = await this.runtimeDomainService.findOne(appid)\n    if (runtimeDomain) {\n      await this.runtimeDomainService.deleteOne(appid)\n      return await this.unlock(appid)\n    }\n\n    // delete bucket domains\n    const hadBucketDomains = await this.bucketDomainService.count(appid)\n    if (hadBucketDomains > 0) {\n      await this.bucketDomainService.deleteAll(appid)\n      return await this.unlock(appid)\n    }\n\n    // delete application database\n    const database = await this.databaseService.findOne(appid)\n    if (database) {\n      await this.databaseService.delete(database)\n      return await this.unlock(appid)\n    }\n\n    const dedicatedDatabase = await this.dedicatedDatabaseService.findOne(appid)\n    if (dedicatedDatabase) {\n      await this.dedicatedDatabaseService.remove(appid)\n      return await this.unlock(appid)\n    }\n\n    // delete application storage\n    const storage = await this.storageService.findOne(appid)\n    if (storage) {\n      await this.storageService.deleteUsersAndBuckets(appid)\n      return await this.unlock(appid)\n    }\n\n    const buckets = await db\n      .collection<StorageBucket>('StorageBucket')\n      .countDocuments({ appid })\n\n    if (buckets > 0) {\n      await this.storageService.deleteUsersAndBuckets(appid)\n      return await this.unlock(appid)\n    }\n\n    // delete application namespace (include the instance)\n    if (region.namespaceConf?.mode === ApplicationNamespaceMode.AppId) {\n      const namespace = await this.clusterService.getAppNamespace(region, appid)\n      if (namespace) {\n        await this.clusterService.removeAppNamespace(region, appid)\n        return await this.unlock(appid)\n      }\n    }\n\n    // update phase to `Deleted`\n    await db.collection<Application>('Application').updateOne(\n      { _id: app._id, phase: ApplicationPhase.Deleting },\n      {\n        $set: {\n          phase: ApplicationPhase.Deleted,\n          lockedAt: TASK_LOCK_INIT_TIME,\n        },\n      },\n    )\n\n    this.logger.log('app phase updated to `Deleted`: ' + app.appid)\n  }\n\n  /**\n   * State `Deleted`:\n   * - move phase `Created` | `Started` | `Stopped` to `Deleting`\n   * - delete phase `Deleted` documents\n   */\n  async handleDeletedState() {\n    const db = SystemDatabase.db\n\n    await db.collection<Application>('Application').updateMany(\n      {\n        state: ApplicationState.Deleted,\n        phase: {\n          $in: [\n            ApplicationPhase.Created,\n            ApplicationPhase.Started,\n            ApplicationPhase.Stopped,\n          ],\n        },\n      },\n      {\n        $set: {\n          phase: ApplicationPhase.Deleting,\n          lockedAt: TASK_LOCK_INIT_TIME,\n        },\n      },\n    )\n\n    await db.collection<Application>('Application').deleteMany({\n      state: ApplicationState.Deleted,\n      phase: ApplicationPhase.Deleted,\n    })\n  }\n\n  /**\n   * Unlock application by appid\n   */\n  async unlock(appid: string) {\n    const db = SystemDatabase.db\n    await db\n      .collection<Application>('Application')\n      .updateOne({ appid: appid }, { $set: { lockedAt: TASK_LOCK_INIT_TIME } })\n  }\n}\n"
  },
  {
    "path": "server/src/application/application.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Body,\n  Patch,\n  Param,\n  UseGuards,\n  Logger,\n  Post,\n  Delete,\n  ForbiddenException,\n} from '@nestjs/common'\nimport {\n  ApiBearerAuth,\n  ApiOperation,\n  ApiResponse,\n  ApiTags,\n} from '@nestjs/swagger'\nimport { JwtAuthGuard } from '../authentication/jwt.auth.guard'\nimport {\n  ApiResponseArray,\n  ApiResponseObject,\n  ResponseUtil,\n} from '../utils/response'\nimport { ApplicationAuthGuard } from '../authentication/application.auth.guard'\nimport {\n  UpdateApplicationBundleDto,\n  UpdateApplicationNameDto,\n  UpdateApplicationStateDto,\n} from './dto/update-application.dto'\nimport { ApplicationService } from './application.service'\nimport { FunctionService } from '../function/function.service'\nimport { StorageService } from 'src/storage/storage.service'\nimport { RegionService } from 'src/region/region.service'\nimport { CreateApplicationDto } from './dto/create-application.dto'\nimport { AccountService } from 'src/account/account.service'\nimport {\n  Application,\n  ApplicationPhase,\n  ApplicationState,\n  ApplicationWithRelations,\n} from './entities/application'\nimport { SystemDatabase } from 'src/system-database'\nimport { Runtime } from './entities/runtime'\nimport { ObjectId } from 'mongodb'\nimport { ApplicationBundle } from './entities/application-bundle'\nimport { ResourceService } from 'src/billing/resource.service'\nimport { RuntimeDomainService } from 'src/gateway/runtime-domain.service'\nimport { BindCustomDomainDto } from 'src/website/dto/update-website.dto'\nimport { RuntimeDomain } from 'src/gateway/entities/runtime-domain'\nimport { GroupRole, getRoleLevel } from 'src/group/entities/group-member'\nimport { GroupRoles } from 'src/group/group-role.decorator'\nimport { InjectApplication, InjectGroup, InjectUser } from 'src/utils/decorator'\nimport { User } from 'src/user/entities/user'\nimport { GroupWithRole } from 'src/group/entities/group'\nimport { isEqual } from 'lodash'\nimport { InstanceService } from 'src/instance/instance.service'\nimport { QuotaService } from 'src/user/quota.service'\nimport { DedicatedDatabaseService } from 'src/database/dedicated-database/dedicated-database.service'\nimport {\n  DedicatedDatabasePhase,\n  DedicatedDatabaseState,\n} from 'src/database/entities/dedicated-database'\n\n@ApiTags('Application')\n@Controller('applications')\n@ApiBearerAuth('Authorization')\nexport class ApplicationController {\n  private logger = new Logger(ApplicationController.name)\n\n  constructor(\n    private readonly application: ApplicationService,\n    private readonly instance: InstanceService,\n    private readonly fn: FunctionService,\n    private readonly region: RegionService,\n    private readonly storage: StorageService,\n    private readonly account: AccountService,\n    private readonly resource: ResourceService,\n    private readonly runtimeDomain: RuntimeDomainService,\n    private readonly quotaServiceTsService: QuotaService,\n    private readonly dedicateDatabase: DedicatedDatabaseService,\n  ) {}\n\n  /**\n   * Create application\n   */\n  @UseGuards(JwtAuthGuard)\n  @ApiOperation({ summary: 'Create application' })\n  @ApiResponseObject(ApplicationWithRelations)\n  @Post()\n  async create(@Body() dto: CreateApplicationDto, @InjectUser() user: User) {\n    const error = dto.validate() || dto.autoscaling.validate()\n    if (error) {\n      return ResponseUtil.error(error)\n    }\n\n    // check regionId exists\n    const region = await this.region.findOne(new ObjectId(dto.regionId))\n    if (!region) {\n      return ResponseUtil.error(`region ${dto.regionId} not found`)\n    }\n\n    // check runtimeId exists\n    const runtime = await SystemDatabase.db\n      .collection<Runtime>('Runtime')\n      .findOne({ _id: new ObjectId(dto.runtimeId) })\n    if (!runtime) {\n      return ResponseUtil.error(`runtime ${dto.runtimeId} not found`)\n    }\n\n    const regionId = region._id\n\n    // check if trial tier\n    const isTrialTier = await this.resource.isTrialBundle(dto)\n    if (isTrialTier) {\n      const bundle = await this.resource.findTrialBundle(regionId)\n      const trials = await this.application.findTrialApplications(user._id)\n      const limitOfFreeTier = bundle?.limitCountOfFreeTierPerUser || 0\n      if (trials.length >= (limitOfFreeTier || 0)) {\n        return ResponseUtil.error(\n          `you can only create ${limitOfFreeTier} trial applications`,\n        )\n      }\n    }\n\n    if (\n      dto.dedicatedDatabase &&\n      !region.databaseConf.dedicatedDatabase.enabled\n    ) {\n      return ResponseUtil.error('dedicated database is not enabled')\n    }\n\n    // check if a user exceeds the resource limit in a region\n    const limitResource = await this.quotaServiceTsService.resourceLimit(\n      user._id,\n      dto.cpu,\n      dto.memory,\n    )\n    if (limitResource) {\n      return ResponseUtil.error(limitResource)\n    }\n\n    // check account balance\n    const account = await this.account.findOne(user._id)\n    const balance = account?.balance || 0\n    if (!isTrialTier && balance < 0) {\n      return ResponseUtil.error(`account balance is not enough`)\n    }\n\n    const checkSpec = await this.checkResourceSpecification(dto, regionId)\n    if (!checkSpec) {\n      return ResponseUtil.error('invalid resource specification')\n    }\n\n    // create application\n    const appid = await this.application.tryGenerateUniqueAppid()\n    await this.application.create(regionId, user._id, appid, dto, isTrialTier)\n\n    const app = await this.application.findOne(appid)\n    return ResponseUtil.ok(app)\n  }\n\n  /**\n   * Get user application list\n   * @param req\n   * @returns\n   */\n  @UseGuards(JwtAuthGuard)\n  @Get()\n  @ApiOperation({ summary: 'Get user application list' })\n  @ApiResponseArray(ApplicationWithRelations)\n  async findAll(@InjectUser() user: User) {\n    const data = await this.application.findAllByUser(user._id)\n    return ResponseUtil.ok(data)\n  }\n\n  /**\n   * Get an application by appid\n   * @param appid\n   * @returns\n   */\n  @ApiOperation({ summary: 'Get an application by appid' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get(':appid')\n  async findOne(@Param('appid') appid: string) {\n    const data = await this.application.findOne(appid)\n\n    // SECURITY ALERT!!!\n    // DO NOT response this region object to client since it contains sensitive information\n    const region = await this.region.findOne(data.regionId)\n\n    // TODO: remove these storage related code to standalone api\n    let storage = {}\n    const storageUser = await this.storage.findOne(appid)\n    if (storageUser) {\n      storage = {\n        endpoint: region.storageConf.externalEndpoint,\n        ...storageUser,\n      }\n    }\n\n    // Generate the develop token, it's provided to the client when debugging function\n    const expires = 60 * 60 * 24 * 7\n    const develop_token = await this.fn.generateRuntimeToken(\n      appid,\n      'develop',\n      expires,\n    )\n    const openapi_token = await this.fn.generateRuntimeToken(\n      appid,\n      'openapi',\n      expires,\n    )\n\n    const res = {\n      ...data,\n      storage: storage,\n      port: region.gatewayConf.port,\n      develop_token: develop_token,\n      openapi_token: openapi_token,\n\n      /** This is the redundant field of Region */\n      tls: region.gatewayConf.tls.enabled,\n      dedicatedDatabase: region.databaseConf.dedicatedDatabase.enabled,\n    }\n\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Update application name\n   */\n  @ApiOperation({ summary: 'Update application name' })\n  @ApiResponseObject(Application)\n  @GroupRoles(GroupRole.Admin)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Patch(':appid/name')\n  async updateName(\n    @Param('appid') appid: string,\n    @Body() dto: UpdateApplicationNameDto,\n  ) {\n    const doc = await this.application.updateName(appid, dto.name)\n    return ResponseUtil.ok(doc)\n  }\n\n  /**\n   * Update application state\n   */\n  @ApiOperation({ summary: 'Update application state' })\n  @ApiResponseObject(Application)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Patch(':appid/state')\n  async updateState(\n    @Param('appid') appid: string,\n    @Body() dto: UpdateApplicationStateDto,\n    @InjectApplication() app: Application,\n    @InjectGroup() group: GroupWithRole,\n  ) {\n    if (dto.state === ApplicationState.Deleted) {\n      throw new ForbiddenException('cannot update state to deleted')\n    }\n    const ddb = await this.dedicateDatabase.findOne(appid)\n    const userid = app.createdBy\n\n    // check account balance\n    const account = await this.account.findOne(userid)\n    const balance = account?.balance || 0\n    if (balance < 0) {\n      return ResponseUtil.error(`account balance is not enough`)\n    }\n\n    // check: only running application can restart\n    if (\n      dto.state === ApplicationState.Restarting &&\n      !(\n        app.state === ApplicationState.Running &&\n        app.phase === ApplicationPhase.Started\n      )\n    ) {\n      return ResponseUtil.error(\n        'The application is not running, can not restart it',\n      )\n    }\n\n    // check: only running application can stop\n    if (\n      dto.state === ApplicationState.Stopped &&\n      (app.state !== ApplicationState.Running ||\n        app.phase !== ApplicationPhase.Started)\n    ) {\n      return ResponseUtil.error(\n        'The application is not running, can not stop it',\n      )\n    }\n\n    // check: only stopped application can start\n    if (\n      dto.state === ApplicationState.Running &&\n      (app.state !== ApplicationState.Stopped ||\n        app.phase !== ApplicationPhase.Stopped)\n    ) {\n      return ResponseUtil.error(\n        'The application is not stopped, can not start it',\n      )\n    }\n\n    if (\n      [ApplicationState.Stopped, ApplicationState.Running].includes(\n        dto.state,\n      ) &&\n      getRoleLevel(group.role) < getRoleLevel(GroupRole.Admin)\n    ) {\n      return ResponseUtil.error('no permission')\n    }\n\n    if (ddb) {\n      if (dto.state === ApplicationState.Restarting && dto?.onlyRuntimeFlag) {\n        const doc = await this.application.updateState(appid, dto.state)\n        return ResponseUtil.ok(doc)\n      }\n\n      const doc = await this.application.updateState(appid, dto.state)\n      await this.dedicateDatabase.updateState(\n        appid,\n        dto.state as unknown as DedicatedDatabaseState,\n      )\n      return ResponseUtil.ok(doc)\n    }\n\n    const doc = await this.application.updateState(appid, dto.state)\n    return ResponseUtil.ok(doc)\n  }\n\n  /**\n   * Update application bundle\n   */\n  @ApiOperation({ summary: 'Update application bundle' })\n  @ApiResponseObject(ApplicationBundle)\n  @GroupRoles(GroupRole.Admin)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Patch(':appid/bundle')\n  async updateBundle(\n    @Param('appid') appid: string,\n    @Body() dto: UpdateApplicationBundleDto,\n    @InjectApplication() app: ApplicationWithRelations,\n    @InjectUser() user: User,\n  ) {\n    // only running application can update bundle\n    if (app.phase !== ApplicationPhase.Started) {\n      return ResponseUtil.error(\n        'The application is not running, can not update bundle',\n      )\n    }\n\n    const error = dto.autoscaling.validate()\n    if (error) {\n      return ResponseUtil.error(error)\n    }\n\n    const userid = app.createdBy\n    const regionId = app.regionId\n\n    // check if trial tier\n    const isTrialTier = await this.resource.isTrialBundle({\n      ...dto,\n      regionId: regionId.toString(),\n    })\n    if (isTrialTier) {\n      const bundle = await this.resource.findTrialBundle(regionId)\n      const trials = await this.application.findTrialApplications(userid)\n      const limitOfFreeTier = bundle?.limitCountOfFreeTierPerUser || 0\n      if (trials.length >= (limitOfFreeTier || 0)) {\n        return ResponseUtil.error(\n          `you can only create ${limitOfFreeTier} trial applications`,\n        )\n      }\n    }\n\n    const origin = app.bundle\n    if (\n      (origin.resource.dedicatedDatabase?.limitCPU && dto.databaseCapacity) ||\n      (origin.resource.databaseCapacity && dto.dedicatedDatabase?.cpu)\n    ) {\n      return ResponseUtil.error('cannot change database type')\n    }\n\n    const checkSpec = await this.checkResourceSpecification(dto, regionId, app)\n    if (!checkSpec) {\n      return ResponseUtil.error('invalid resource specification')\n    }\n\n    // Check if user is trying to change dedicated database resources\n    const isTryingToChangeDedicatedDatabase =\n      (dto.dedicatedDatabase?.cpu !== undefined &&\n        dto.dedicatedDatabase?.cpu !==\n          origin.resource.dedicatedDatabase?.limitCPU) ||\n      (dto.dedicatedDatabase?.memory !== undefined &&\n        dto.dedicatedDatabase?.memory !==\n          origin.resource.dedicatedDatabase?.limitMemory) ||\n      (dto.dedicatedDatabase?.replicas !== undefined &&\n        dto.dedicatedDatabase?.replicas !==\n          origin.resource.dedicatedDatabase?.replicas) ||\n      (dto.dedicatedDatabase?.capacity !== undefined &&\n        dto.dedicatedDatabase?.capacity !==\n          origin.resource.dedicatedDatabase?.capacity)\n\n    if (isTryingToChangeDedicatedDatabase) {\n      const ddb = await this.dedicateDatabase.findOne(appid)\n      // Database must be running to change database resources\n      if (!ddb) {\n        return ResponseUtil.error(\n          'DedicatedDatabase not found, cannot change DedicatedDatabase database resources',\n        )\n      }\n      if (\n        ddb.state !== DedicatedDatabaseState.Running ||\n        ddb.phase !== DedicatedDatabasePhase.Started\n      ) {\n        return ResponseUtil.error(\n          'DedicatedDatabase is not in running state, cannot change DedicatedDatabase database resources',\n        )\n      }\n    }\n\n    if (\n      dto.dedicatedDatabase?.capacity &&\n      origin.resource.dedicatedDatabase?.capacity &&\n      dto.dedicatedDatabase?.capacity <\n        origin.resource.dedicatedDatabase?.capacity\n    ) {\n      return ResponseUtil.error('cannot reduce database capacity')\n    }\n\n    if (\n      dto.dedicatedDatabase?.replicas &&\n      origin.resource.dedicatedDatabase?.replicas &&\n      dto.dedicatedDatabase?.replicas <\n        origin.resource.dedicatedDatabase?.replicas\n    ) {\n      return ResponseUtil.error(\n        'To reduce the number of database replicas, please contact customer support.',\n      )\n    }\n\n    // check if a user exceeds the resource limit in a region\n    const limitResource = await this.quotaServiceTsService.resourceLimit(\n      user._id,\n      dto.cpu,\n      dto.memory,\n      appid,\n    )\n    if (limitResource) {\n      return ResponseUtil.error(limitResource)\n    }\n\n    const doc = await this.application.updateBundle(appid, dto, isTrialTier)\n\n    // restart running application if cpu or memory changed\n    const isCpuChanged = origin.resource.limitCPU !== doc.resource.limitCPU\n    const isMemoryChanged =\n      origin.resource.limitMemory !== doc.resource.limitMemory\n    const isAutoscalingCanceled =\n      !doc.autoscaling.enable && origin.autoscaling.enable\n\n    const isRuntimeChanged =\n      isCpuChanged || isMemoryChanged || isAutoscalingCanceled\n\n    const isDedicatedDatabaseChanged =\n      !!origin.resource.dedicatedDatabase &&\n      (!isEqual(\n        origin.resource.dedicatedDatabase.limitCPU,\n        doc.resource.dedicatedDatabase.limitCPU,\n      ) ||\n        !isEqual(\n          origin.resource.dedicatedDatabase.limitMemory,\n          doc.resource.dedicatedDatabase.limitMemory,\n        ) ||\n        !isEqual(\n          origin.resource.dedicatedDatabase.replicas,\n          doc.resource.dedicatedDatabase.replicas,\n        ) ||\n        !isEqual(\n          origin.resource.dedicatedDatabase.capacity,\n          doc.resource.dedicatedDatabase.capacity,\n        ))\n\n    if (!isEqual(doc.autoscaling, origin.autoscaling)) {\n      const { hpa, app } = await this.instance.get(appid)\n      await this.instance.reapplyHorizontalPodAutoscaler(app, hpa)\n    }\n\n    if (isDedicatedDatabaseChanged) {\n      await this.application.updateState(appid, ApplicationState.Restarting)\n      await this.dedicateDatabase.updateState(\n        appid,\n        DedicatedDatabaseState.Restarting,\n      )\n      return ResponseUtil.ok(doc)\n    }\n\n    if (isRuntimeChanged) {\n      await this.application.updateState(appid, ApplicationState.Restarting)\n    }\n\n    return ResponseUtil.ok(doc)\n  }\n\n  /**\n   * Bind custom domain to application\n   */\n  @ApiResponseObject(RuntimeDomain)\n  @ApiOperation({ summary: 'Bind custom domain to application' })\n  @GroupRoles(GroupRole.Admin)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Patch(':appid/domain')\n  async bindDomain(\n    @Param('appid') appid: string,\n    @Body() dto: BindCustomDomainDto,\n  ) {\n    const runtimeDomain = await this.runtimeDomain.findOne(appid)\n    if (\n      runtimeDomain?.customDomain &&\n      runtimeDomain.customDomain === dto.domain\n    ) {\n      return ResponseUtil.error('domain already binded')\n    }\n\n    // check if domain resolved\n    const resolved = await this.runtimeDomain.checkResolved(appid, dto.domain)\n    if (!resolved) {\n      return ResponseUtil.error('domain not resolved')\n    }\n\n    // bind domain\n    const binded = await this.runtimeDomain.bindCustomDomain(appid, dto.domain)\n    if (!binded) {\n      return ResponseUtil.error('failed to bind domain')\n    }\n\n    return ResponseUtil.ok(binded)\n  }\n\n  /**\n   * Check if domain is resolved\n   */\n  @ApiResponse({ type: ResponseUtil<boolean> })\n  @ApiOperation({ summary: 'Check if domain is resolved' })\n  @GroupRoles(GroupRole.Admin)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post(':appid/domain/resolved')\n  async checkResolved(\n    @Param('appid') appid: string,\n    @Body() dto: BindCustomDomainDto,\n  ) {\n    const resolved = await this.runtimeDomain.checkResolved(appid, dto.domain)\n    if (!resolved) {\n      return ResponseUtil.error('domain not resolved')\n    }\n\n    return ResponseUtil.ok(resolved)\n  }\n\n  /**\n   * Remove custom domain of application\n   */\n  @ApiResponseObject(RuntimeDomain)\n  @ApiOperation({ summary: 'Remove custom domain of application' })\n  @GroupRoles(GroupRole.Admin)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Delete(':appid/domain')\n  async remove(@Param('appid') appid: string) {\n    const runtimeDomain = await this.runtimeDomain.findOne(appid)\n    if (!runtimeDomain?.customDomain) {\n      return ResponseUtil.error('custom domain not found')\n    }\n\n    const deleted = await this.runtimeDomain.removeCustomDomain(appid)\n    if (!deleted) {\n      return ResponseUtil.error('failed to remove custom domain')\n    }\n\n    return ResponseUtil.ok(deleted)\n  }\n\n  /**\n   * Delete an application\n   */\n  @ApiOperation({ summary: 'Delete an application' })\n  @ApiResponseObject(Application)\n  @GroupRoles(GroupRole.Owner)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Delete(':appid')\n  async delete(\n    @Param('appid') appid: string,\n    @InjectApplication() app: ApplicationWithRelations,\n  ) {\n    // check: only stopped application can be deleted\n    if (\n      app.state !== ApplicationState.Stopped &&\n      app.phase !== ApplicationPhase.Stopped\n    ) {\n      return ResponseUtil.error('The app is not stopped, can not delete it')\n    }\n\n    const doc = await this.application.remove(appid)\n    return ResponseUtil.ok(doc)\n  }\n\n  private async checkResourceSpecification(\n    dto: UpdateApplicationBundleDto,\n    regionId: ObjectId,\n    app?: ApplicationWithRelations,\n  ) {\n    const resourceOptions = await this.resource.findAllByRegionId(regionId)\n\n    if (app) {\n      const checkSpec = resourceOptions.every((option) => {\n        switch (option.type) {\n          case 'cpu':\n            return (\n              option.specs.some((spec) => spec.value === dto.cpu) ||\n              app.bundle.resource.limitCPU === dto.cpu\n            )\n          case 'memory':\n            return (\n              option.specs.some((spec) => spec.value === dto.memory) ||\n              app.bundle.resource.limitMemory === dto.memory\n            )\n          case 'databaseCapacity':\n            if (!dto.databaseCapacity) return true\n            return (\n              option.specs.some(\n                (spec) => spec.value === dto.databaseCapacity,\n              ) || app.bundle.resource.databaseCapacity === dto.databaseCapacity\n            )\n          case 'storageCapacity':\n            if (!dto.storageCapacity) return true\n            return (\n              option.specs.some((spec) => spec.value === dto.storageCapacity) ||\n              app.bundle.resource.storageCapacity === dto.storageCapacity\n            )\n          // dedicated database\n          case 'dedicatedDatabaseCPU':\n            return (\n              !dto.dedicatedDatabase?.cpu ||\n              option.specs.some(\n                (spec) => spec.value === dto.dedicatedDatabase.cpu,\n              ) ||\n              app.bundle.resource.dedicatedDatabase?.limitCPU ===\n                dto.dedicatedDatabase.cpu\n            )\n          case 'dedicatedDatabaseMemory':\n            return (\n              !dto.dedicatedDatabase?.memory ||\n              option.specs.some(\n                (spec) => spec.value === dto.dedicatedDatabase.memory,\n              ) ||\n              app.bundle.resource.dedicatedDatabase?.limitMemory ===\n                dto.dedicatedDatabase.memory\n            )\n          case 'dedicatedDatabaseCapacity':\n            return (\n              !dto.dedicatedDatabase?.capacity ||\n              option.specs.some(\n                (spec) => spec.value === dto.dedicatedDatabase.capacity,\n              ) ||\n              app.bundle.resource.dedicatedDatabase?.capacity ===\n                dto.dedicatedDatabase.capacity\n            )\n          case 'dedicatedDatabaseReplicas':\n            return (\n              !dto.dedicatedDatabase?.replicas ||\n              option.specs.some(\n                (spec) => spec.value === dto.dedicatedDatabase.replicas,\n              ) ||\n              app.bundle.resource.dedicatedDatabase?.replicas ===\n                dto.dedicatedDatabase.replicas\n            )\n          default:\n            return true\n        }\n      })\n      return checkSpec\n    }\n\n    const checkSpec = resourceOptions.every((option) => {\n      switch (option.type) {\n        case 'cpu':\n          return option.specs.some((spec) => spec.value === dto.cpu)\n        case 'memory':\n          return option.specs.some((spec) => spec.value === dto.memory)\n        case 'databaseCapacity':\n          if (!dto.databaseCapacity) return true\n          return option.specs.some(\n            (spec) => spec.value === dto.databaseCapacity,\n          )\n        case 'storageCapacity':\n          return option.specs.some((spec) => spec.value === dto.storageCapacity)\n        // dedicated database\n        case 'dedicatedDatabaseCPU':\n          return (\n            !dto.dedicatedDatabase?.cpu ||\n            option.specs.some(\n              (spec) => spec.value === dto.dedicatedDatabase.cpu,\n            )\n          )\n        case 'dedicatedDatabaseMemory':\n          return (\n            !dto.dedicatedDatabase?.memory ||\n            option.specs.some(\n              (spec) => spec.value === dto.dedicatedDatabase.memory,\n            )\n          )\n        case 'dedicatedDatabaseCapacity':\n          return (\n            !dto.dedicatedDatabase?.capacity ||\n            option.specs.some(\n              (spec) => spec.value === dto.dedicatedDatabase.capacity,\n            )\n          )\n        case 'dedicatedDatabaseReplicas':\n          return (\n            !dto.dedicatedDatabase?.replicas ||\n            option.specs.some(\n              (spec) => spec.value === dto.dedicatedDatabase.replicas,\n            )\n          )\n        default:\n          return true\n      }\n    })\n\n    return checkSpec\n  }\n}\n"
  },
  {
    "path": "server/src/application/application.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { ApplicationController } from './application.controller'\nimport { ApplicationService } from './application.service'\nimport { ApplicationTaskService } from './application-task.service'\nimport { InstanceService } from '../instance/instance.service'\nimport { JwtService } from '@nestjs/jwt'\nimport { FunctionService } from '../function/function.service'\nimport { EnvironmentVariableService } from './environment.service'\nimport { EnvironmentVariableController } from './environment.controller'\nimport { StorageModule } from '../storage/storage.module'\nimport { DatabaseModule } from 'src/database/database.module'\nimport { GatewayModule } from 'src/gateway/gateway.module'\nimport { ApplicationConfigurationService } from './configuration.service'\nimport { TriggerService } from 'src/trigger/trigger.service'\nimport { WebsiteService } from 'src/website/website.service'\nimport { AccountModule } from 'src/account/account.module'\nimport { BundleService } from './bundle.service'\nimport { ResourceService } from 'src/billing/resource.service'\nimport { FunctionRecycleBinService } from 'src/recycle-bin/cloud-function/function-recycle-bin.service'\nimport { HttpModule } from '@nestjs/axios'\nimport { QuotaService } from 'src/user/quota.service'\nimport { SettingService } from 'src/setting/setting.service'\nimport { PodService } from './pod.service'\nimport { PodController } from './pod.controller'\n\n@Module({\n  imports: [\n    StorageModule,\n    DatabaseModule,\n    GatewayModule,\n    AccountModule,\n    HttpModule,\n  ],\n  controllers: [\n    ApplicationController,\n    EnvironmentVariableController,\n    PodController,\n  ],\n  providers: [\n    ApplicationService,\n    ApplicationTaskService,\n    InstanceService,\n    FunctionRecycleBinService,\n    JwtService,\n    FunctionService,\n    EnvironmentVariableService,\n    ApplicationConfigurationService,\n    TriggerService,\n    WebsiteService,\n    BundleService,\n    ResourceService,\n    QuotaService,\n    SettingService,\n    PodService,\n  ],\n  exports: [\n    ApplicationService,\n    ApplicationConfigurationService,\n    EnvironmentVariableService,\n    BundleService,\n    PodService,\n  ],\n})\nexport class ApplicationModule {}\n"
  },
  {
    "path": "server/src/application/application.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport * as nanoid from 'nanoid'\nimport { UpdateApplicationBundleDto } from './dto/update-application.dto'\nimport {\n  APPLICATION_SECRET_KEY,\n  ServerConfig,\n  TASK_LOCK_INIT_TIME,\n} from '../constants'\nimport { GenerateAlphaNumericPassword } from '../utils/random'\nimport { CreateApplicationDto } from './dto/create-application.dto'\nimport { SystemDatabase } from 'src/system-database'\nimport {\n  Application,\n  ApplicationPhase,\n  ApplicationState,\n  ApplicationWithRelations,\n} from './entities/application'\nimport { ObjectId } from 'mongodb'\nimport { ApplicationConfiguration } from './entities/application-configuration'\nimport {\n  ApplicationBundle,\n  ApplicationBundleResource,\n} from './entities/application-bundle'\nimport { GroupService } from 'src/group/group.service'\nimport { GroupMember } from 'src/group/entities/group-member'\nimport { RegionService } from 'src/region/region.service'\nimport { assert } from 'console'\nimport { Region } from 'src/region/entities/region'\nimport { EventEmitter2 } from '@nestjs/event-emitter'\nimport { ApplicationCreatingEvent } from './events/application-creating.event'\n\n@Injectable()\nexport class ApplicationService {\n  private readonly logger = new Logger(ApplicationService.name)\n\n  constructor(\n    private readonly groupService: GroupService,\n    private readonly regionService: RegionService,\n    private readonly eventEmitter: EventEmitter2,\n  ) {}\n\n  /**\n   * Create application\n   * - create configuration\n   * - create bundle\n   * - create application\n   */\n  async create(\n    regionId: ObjectId,\n    userid: ObjectId,\n    appid: string,\n    dto: CreateApplicationDto,\n    isTrialTier: boolean,\n  ) {\n    const client = SystemDatabase.client\n    const db = client.db()\n    const session = client.startSession()\n    const region = await this.regionService.findOne(regionId)\n    assert(region, 'region cannot be empty')\n\n    try {\n      // start transaction\n      session.startTransaction()\n\n      // create application configuration\n      const appSecret = {\n        name: APPLICATION_SECRET_KEY,\n        value: GenerateAlphaNumericPassword(64),\n      }\n      await db\n        .collection<ApplicationConfiguration>('ApplicationConfiguration')\n        .insertOne(\n          {\n            appid,\n            environments: [appSecret],\n            dependencies: [],\n            createdAt: new Date(),\n            updatedAt: new Date(),\n          },\n          { session },\n        )\n\n      // create application bundle\n      await db.collection<ApplicationBundle>('ApplicationBundle').insertOne(\n        {\n          appid,\n          resource: this.buildBundleResource(region, dto),\n          autoscaling: this.buildAutoscalingConfig(dto),\n          isTrialTier: isTrialTier,\n          createdAt: new Date(),\n          updatedAt: new Date(),\n        },\n        { session },\n      )\n\n      await this.eventEmitter.emitAsync(\n        ApplicationCreatingEvent.eventName,\n        new ApplicationCreatingEvent({\n          region,\n          appid,\n          session,\n          dto,\n        }),\n      )\n\n      // create application\n      await db.collection<Application>('Application').insertOne(\n        {\n          appid,\n          name: dto.name,\n          state: dto.state || ApplicationState.Running,\n          phase: ApplicationPhase.Creating,\n          tags: [],\n          createdBy: userid,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          regionId: new ObjectId(dto.regionId),\n          runtimeId: new ObjectId(dto.runtimeId),\n          billingLockedAt: TASK_LOCK_INIT_TIME,\n          latestBillingTime: this.getHourTime(),\n          createdAt: new Date(),\n          updatedAt: new Date(),\n        },\n        { session },\n      )\n\n      await this.groupService.create(appid, userid, appid)\n      // commit transaction\n      await session.commitTransaction()\n    } catch (error) {\n      await session.abortTransaction()\n      throw Error(error)\n    } finally {\n      if (session) await session.endSession()\n    }\n  }\n\n  async findAllByUser(userid: ObjectId) {\n    const db = SystemDatabase.db\n\n    const doc = await db\n      .collection<GroupMember>('GroupMember')\n      .aggregate()\n      .match({\n        uid: userid,\n      })\n      .lookup({\n        from: 'GroupApplication',\n        localField: 'groupId',\n        foreignField: 'groupId',\n        as: 'applications',\n      })\n      .unwind('$applications')\n      .project({\n        _id: 0,\n        appid: '$applications.appid',\n      })\n      .toArray()\n\n    const res = db\n      .collection<Application>('Application')\n      .aggregate()\n      .match({\n        $and: [\n          {\n            $or: [\n              { appid: { $in: doc.map((v) => v.appid) } },\n              { createdBy: userid },\n            ],\n          },\n          { phase: { $ne: ApplicationPhase.Deleted } },\n        ],\n      })\n      .lookup({\n        from: 'ApplicationBundle',\n        localField: 'appid',\n        foreignField: 'appid',\n        as: 'bundle',\n      })\n      .unwind('$bundle')\n      .lookup({\n        from: 'Runtime',\n        localField: 'runtimeId',\n        foreignField: '_id',\n        as: 'runtime',\n      })\n      .unwind('$runtime')\n      .project<ApplicationWithRelations>({\n        'bundle.resource.requestCPU': 0,\n        'bundle.resource.requestMemory': 0,\n        'bundle.resource.dedicatedDatabase.requestCPU': 0,\n        'bundle.resource.dedicatedDatabase.requestMemory': 0,\n      })\n      .toArray()\n\n    return res\n  }\n\n  async findOne(appid: string) {\n    const db = SystemDatabase.db\n\n    const doc = await db\n      .collection('Application')\n      .aggregate<ApplicationWithRelations>()\n      .match({ appid })\n      .lookup({\n        from: 'ApplicationBundle',\n        localField: 'appid',\n        foreignField: 'appid',\n        as: 'bundle',\n      })\n      .unwind('$bundle')\n      .lookup({\n        from: 'Runtime',\n        localField: 'runtimeId',\n        foreignField: '_id',\n        as: 'runtime',\n      })\n      .unwind('$runtime')\n      .lookup({\n        from: 'ApplicationConfiguration',\n        localField: 'appid',\n        foreignField: 'appid',\n        as: 'configuration',\n      })\n      .unwind('$configuration')\n      .lookup({\n        from: 'RuntimeDomain',\n        localField: 'appid',\n        foreignField: 'appid',\n        as: 'domain',\n      })\n      .unwind({ path: '$domain', preserveNullAndEmptyArrays: true })\n      .project<ApplicationWithRelations>({\n        'bundle.resource.requestCPU': 0,\n        'bundle.resource.requestMemory': 0,\n        'bundle.resource.dedicatedDatabase.requestCPU': 0,\n        'bundle.resource.dedicatedDatabase.requestMemory': 0,\n      })\n      .next()\n\n    return doc\n  }\n\n  async findOneUnsafe(appid: string) {\n    const db = SystemDatabase.db\n\n    const doc = await db\n      .collection('Application')\n      .aggregate<ApplicationWithRelations>()\n      .match({ appid })\n      .lookup({\n        from: 'Region',\n        localField: 'regionId',\n        foreignField: '_id',\n        as: 'region',\n      })\n      .unwind('$region')\n      .lookup({\n        from: 'ApplicationBundle',\n        localField: 'appid',\n        foreignField: 'appid',\n        as: 'bundle',\n      })\n      .unwind('$bundle')\n      .lookup({\n        from: 'Runtime',\n        localField: 'runtimeId',\n        foreignField: '_id',\n        as: 'runtime',\n      })\n      .unwind('$runtime')\n      .lookup({\n        from: 'ApplicationConfiguration',\n        localField: 'appid',\n        foreignField: 'appid',\n        as: 'configuration',\n      })\n      .unwind('$configuration')\n      .lookup({\n        from: 'RuntimeDomain',\n        localField: 'appid',\n        foreignField: 'appid',\n        as: 'domain',\n      })\n      .unwind({ path: '$domain', preserveNullAndEmptyArrays: true })\n      .next()\n\n    return doc\n  }\n\n  async findTrialApplications(userid: ObjectId) {\n    const db = SystemDatabase.db\n\n    const apps = await db\n      .collection<Application>('Application')\n      .aggregate<Application>()\n      .match({ createdBy: userid })\n      .lookup({\n        from: 'ApplicationBundle',\n        localField: 'appid',\n        foreignField: 'appid',\n        as: 'bundle',\n      })\n      .unwind('$bundle')\n      .match({ 'bundle.isTrialTier': true })\n      .toArray()\n\n    return apps\n  }\n\n  async countByUser(userid: ObjectId) {\n    const db = SystemDatabase.db\n\n    const count = await db\n      .collection<Application>('Application')\n      .countDocuments({ createdBy: userid })\n\n    return count\n  }\n\n  async updateName(appid: string, name: string) {\n    const db = SystemDatabase.db\n    const res = await db\n      .collection<Application>('Application')\n      .findOneAndUpdate(\n        { appid },\n        { $set: { name, updatedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    return res.value\n  }\n\n  async updateState(appid: string, state: ApplicationState) {\n    const db = SystemDatabase.db\n    const res = await db\n      .collection<Application>('Application')\n      .findOneAndUpdate(\n        { appid },\n        { $set: { state, updatedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    return res.value\n  }\n\n  async updateBundle(\n    appid: string,\n    dto: UpdateApplicationBundleDto,\n    isTrialTier: boolean,\n  ) {\n    const region = await this.regionService.findByAppId(appid)\n    assert(region, 'region cannot be empty')\n\n    const resource = this.buildBundleResource(region, dto)\n    const autoscaling = this.buildAutoscalingConfig(dto)\n\n    const client = SystemDatabase.client\n    const db = SystemDatabase.db\n    const session = client.startSession()\n\n    try {\n      session.startTransaction()\n\n      const res = await db\n        .collection<ApplicationBundle>('ApplicationBundle')\n        .findOneAndUpdate(\n          { appid },\n          {\n            $set: { resource, autoscaling, updatedAt: new Date(), isTrialTier },\n          },\n          {\n            projection: {\n              'bundle.resource.requestCPU': 0,\n              'bundle.resource.requestMemory': 0,\n              'bundle.resource.dedicatedDatabase.requestCPU': 0,\n              'bundle.resource.dedicatedDatabase.requestMemory': 0,\n            },\n            returnDocument: 'after',\n          },\n        )\n\n      await session.commitTransaction()\n      return res.value\n    } catch (error) {\n      await session.abortTransaction()\n      this.logger.error(error)\n      throw error\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  async remove(appid: string) {\n    const db = SystemDatabase.db\n    const doc = await db\n      .collection<Application>('Application')\n      .findOneAndUpdate(\n        { appid },\n        { $set: { state: ApplicationState.Deleted, updatedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    return doc.value\n  }\n\n  /**\n   * Generate unique application id\n   * @returns\n   */\n  async tryGenerateUniqueAppid() {\n    const db = SystemDatabase.db\n\n    for (let i = 0; i < 10; i++) {\n      const appid = this.generateAppID(ServerConfig.APPID_LENGTH)\n      const existed = await db\n        .collection<Application>('Application')\n        .findOne({ appid })\n\n      if (!existed) return appid\n    }\n\n    throw new Error('Generate appid failed')\n  }\n\n  private generateAppID(len: number) {\n    len = len || 6\n\n    // ensure prefixed with letter\n    const only_alpha = 'abcdefghijklmnopqrstuvwxyz'\n    const alphanumeric = 'abcdefghijklmnopqrstuvwxyz0123456789'\n    const prefix = nanoid.customAlphabet(only_alpha, 1)()\n    const nano = nanoid.customAlphabet(alphanumeric, len - 1)\n    return prefix + nano()\n  }\n\n  private buildBundleResource(region: Region, dto: UpdateApplicationBundleDto) {\n    const bundleConf = region.bundleConf\n    const cpuRatio = bundleConf?.cpuRequestLimitRatio || 0.1\n    const memoryRatio = bundleConf?.memoryRequestLimitRatio || 0.5\n\n    const requestCPU = Math.floor(dto.cpu * cpuRatio)\n    const requestMemory = Math.floor(dto.memory * memoryRatio)\n    const limitCountOfCloudFunction = Math.floor(dto.cpu * 1)\n\n    const magicNumber = Math.floor(dto.cpu * 0.03)\n    const limitCountOfBucket = Math.max(3, magicNumber)\n    const limitCountOfDatabasePolicy = Math.max(3, magicNumber)\n    const limitCountOfTrigger = Math.max(1, magicNumber)\n    const limitCountOfWebsiteHosting = Math.max(3, magicNumber)\n    const limitDatabaseTPS = Math.floor(dto.cpu * 0.1)\n    const limitStorageTPS = Math.floor(dto.cpu * 1)\n    const reservedTimeAfterExpired = 60 * 60 * 24 * 31 // 31 days\n\n    const ddbRequestCPU = dto.dedicatedDatabase\n      ? Math.floor(dto.dedicatedDatabase.cpu * cpuRatio)\n      : 0\n    const ddbRequestMemory = dto.dedicatedDatabase\n      ? Math.floor(dto.dedicatedDatabase.memory * memoryRatio)\n      : 0\n\n    const resource = new ApplicationBundleResource({\n      limitCPU: dto.cpu,\n      limitMemory: dto.memory,\n      requestCPU,\n      requestMemory,\n      databaseCapacity: dto.databaseCapacity || 0,\n      storageCapacity: dto.storageCapacity,\n\n      limitCountOfCloudFunction,\n      limitCountOfBucket,\n      limitCountOfDatabasePolicy,\n      limitCountOfTrigger,\n      limitCountOfWebsiteHosting,\n      limitDatabaseTPS,\n      limitStorageTPS,\n      reservedTimeAfterExpired,\n\n      dedicatedDatabase: {\n        limitCPU: dto.dedicatedDatabase?.cpu || 0,\n        limitMemory: dto.dedicatedDatabase?.memory || 0,\n        requestCPU: ddbRequestCPU,\n        requestMemory: ddbRequestMemory,\n        capacity: dto.dedicatedDatabase?.capacity || 0,\n        replicas: dto.dedicatedDatabase?.replicas || 0,\n      },\n    })\n\n    return resource\n  }\n\n  private buildAutoscalingConfig(dto: UpdateApplicationBundleDto) {\n    const autoscaling = {\n      enable: false,\n      minReplicas: 1,\n      maxReplicas: 5,\n      targetCPUUtilizationPercentage: null,\n      targetMemoryUtilizationPercentage: null,\n      ...dto.autoscaling,\n    }\n    return autoscaling\n  }\n\n  private getHourTime() {\n    const latestTime = new Date()\n    latestTime.setMinutes(0)\n    latestTime.setSeconds(0)\n    latestTime.setMilliseconds(0)\n    return latestTime\n  }\n}\n"
  },
  {
    "path": "server/src/application/bundle.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { ApplicationBundle } from 'src/application/entities/application-bundle'\nimport { SystemDatabase } from 'src/system-database'\n\n@Injectable()\nexport class BundleService {\n  private readonly logger = new Logger(BundleService.name)\n  private readonly db = SystemDatabase.db\n\n  async findOne(appid: string) {\n    const bundle = await this.db\n      .collection<ApplicationBundle>('ApplicationBundle')\n      .findOne({ appid })\n\n    return bundle\n  }\n\n  async deleteOne(appid: string) {\n    const res = await this.db\n      .collection<ApplicationBundle>('ApplicationBundle')\n      .findOneAndDelete({ appid })\n\n    return res.value\n  }\n}\n"
  },
  {
    "path": "server/src/application/configuration.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { CN_PUBLISHED_CONF } from 'src/constants'\nimport { DatabaseService } from 'src/database/database.service'\nimport { SystemDatabase } from 'src/system-database'\nimport { ApplicationConfiguration } from './entities/application-configuration'\nimport { DedicatedDatabaseService } from 'src/database/dedicated-database/dedicated-database.service'\n\n@Injectable()\nexport class ApplicationConfigurationService {\n  private readonly db = SystemDatabase.db\n  private readonly logger = new Logger(ApplicationConfigurationService.name)\n\n  constructor(\n    private readonly databaseService: DatabaseService,\n    private readonly dedicatedDatabaseService: DedicatedDatabaseService,\n  ) {}\n\n  async count(appid: string) {\n    return this.db\n      .collection<ApplicationConfiguration>('ApplicationConfiguration')\n      .countDocuments({ appid })\n  }\n\n  async remove(appid: string) {\n    return this.db\n      .collection<ApplicationConfiguration>('ApplicationConfiguration')\n      .deleteOne({ appid })\n  }\n\n  async publish(conf: ApplicationConfiguration) {\n    const database =\n      (await this.dedicatedDatabaseService.findAndConnect(conf.appid)) ||\n      (await this.databaseService.findAndConnect(conf.appid))\n    const { db, client } = database\n    const session = client.startSession()\n    try {\n      await session.withTransaction(async () => {\n        const coll = db.collection(CN_PUBLISHED_CONF)\n        await coll.deleteMany({}, { session })\n        await coll.insertOne(conf, { session })\n      })\n    } finally {\n      await session.endSession()\n      await client.close()\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/application/dto/create-application.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsIn, IsNotEmpty, IsString, Length } from 'class-validator'\nimport { ApplicationState } from '../entities/application'\nimport { UpdateApplicationBundleDto } from './update-application.dto'\n\nconst STATES = [ApplicationState.Running]\n\nexport class CreateApplicationDto extends UpdateApplicationBundleDto {\n  @ApiProperty()\n  @IsString()\n  @Length(1, 64)\n  name: string\n\n  @ApiProperty({\n    default: ApplicationState.Running,\n    enum: STATES,\n  })\n  @IsIn(STATES)\n  state: ApplicationState\n\n  @ApiProperty()\n  @IsNotEmpty()\n  @IsString()\n  regionId: string\n\n  @ApiProperty()\n  @IsNotEmpty()\n  @IsString()\n  runtimeId: string\n\n  validate() {\n    return super.validate()\n  }\n}\n"
  },
  {
    "path": "server/src/application/dto/create-autoscaling.dto.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport {\n  IsBoolean,\n  IsInt,\n  IsNotEmpty,\n  IsOptional,\n  Max,\n  Min,\n  ValidateIf,\n} from 'class-validator'\n\nexport class CreateAutoscalingDto {\n  @ApiProperty({ default: false })\n  @IsNotEmpty()\n  @IsBoolean()\n  enable: boolean\n\n  @ApiProperty({ default: 1 })\n  @IsNotEmpty()\n  @IsInt()\n  @Min(1)\n  @Max(19)\n  @ValidateIf(({ enable }) => enable)\n  minReplicas: number\n\n  @ApiProperty({ default: 5 })\n  @IsNotEmpty()\n  @IsInt()\n  @Min(2)\n  @Max(20)\n  @ValidateIf(({ enable }) => enable)\n  maxReplicas: number\n\n  @ApiPropertyOptional({ default: 50 })\n  @IsOptional()\n  @IsInt()\n  @Min(0)\n  @Max(100)\n  @ValidateIf(({ enable }) => enable)\n  targetCPUUtilizationPercentage?: number\n\n  @ApiPropertyOptional({ default: 50 })\n  @IsOptional()\n  @IsInt()\n  @Min(0)\n  @Max(100)\n  @ValidateIf(({ enable }) => enable)\n  targetMemoryUtilizationPercentage?: number\n\n  validate() {\n    if (this.enable) {\n      if (this.maxReplicas <= this.minReplicas) {\n        return 'Max replicas must be smaller than min replicas.'\n      }\n      if (\n        !this.targetCPUUtilizationPercentage &&\n        !this.targetMemoryUtilizationPercentage\n      ) {\n        return 'Either targetCPUUtilizationPercentage or targetMemoryUtilizationPercentage must be specified.'\n      }\n      if (\n        this.targetCPUUtilizationPercentage &&\n        this.targetMemoryUtilizationPercentage\n      ) {\n        return 'TargetCPUUtilizationPercentage and TargetMemoryUtilizationPercentage cannot be specified simultaneously.'\n      }\n    }\n    return null\n  }\n}\n"
  },
  {
    "path": "server/src/application/dto/create-env.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString, Length, Matches } from 'class-validator'\n\nexport class CreateEnvironmentDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @IsString()\n  @Length(1, 64)\n  @Matches(/^[a-zA-Z_][a-zA-Z0-9_]{1,64}$/)\n  name: string\n\n  @ApiProperty()\n  @Length(0, 4096)\n  @IsString()\n  value: string\n}\n"
  },
  {
    "path": "server/src/application/dto/pod.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsArray, IsString } from 'class-validator'\n\nexport class PodNameListDto {\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty({\n    description: 'List of pod identifiers',\n    example: ['pod1', 'pod2'],\n  })\n  podNameList: string[]\n}\n\nexport class ContainerNameListDto {\n  @ApiProperty()\n  podName: string\n\n  @ApiProperty({\n    description: 'List of container identifiers',\n    example: ['container1', 'container2'],\n  })\n  containerNameList: string[]\n}\n"
  },
  {
    "path": "server/src/application/dto/update-application.dto.ts",
    "content": "import { CreateDedicatedDatabaseDto } from '../../database/dto/create-dedicated-database.dto'\nimport { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport {\n  IsIn,\n  IsInt,\n  IsNotEmpty,\n  IsOptional,\n  IsString,\n  Length,\n  ValidateNested,\n  IsBoolean,\n} from 'class-validator'\nimport { ApplicationState } from '../entities/application'\nimport { CreateAutoscalingDto } from './create-autoscaling.dto'\nimport { Type } from 'class-transformer'\n\nconst STATES = [\n  ApplicationState.Running,\n  ApplicationState.Stopped,\n  ApplicationState.Restarting,\n]\n\n/**\n * @deprecated use UpdateApplicationNameDto or UpdateApplicationStateDto instead\n */\nexport class UpdateApplicationDto {\n  @ApiPropertyOptional()\n  @IsString()\n  @Length(1, 64)\n  name?: string\n\n  @ApiPropertyOptional({\n    enum: ApplicationState,\n  })\n  @IsIn(STATES)\n  state?: ApplicationState\n\n  validate() {\n    return null\n  }\n}\n\nexport class UpdateApplicationNameDto {\n  @ApiProperty()\n  @IsString()\n  @Length(1, 64)\n  @IsNotEmpty()\n  name: string\n}\n\nexport class UpdateApplicationStateDto {\n  @ApiProperty({ enum: ApplicationState })\n  @IsIn(STATES)\n  @IsNotEmpty()\n  state: ApplicationState\n\n  @ApiProperty({\n    required: false,\n    description: 'Flag for runtime only operations',\n    type: Boolean,\n  })\n  @IsOptional()\n  @IsBoolean()\n  onlyRuntimeFlag?: boolean\n}\n\nexport class UpdateApplicationBundleDto {\n  // build resources\n  @ApiProperty({ example: 200 })\n  @IsNotEmpty()\n  @IsInt()\n  cpu: number\n\n  @ApiProperty({ example: 256 })\n  @IsNotEmpty()\n  @IsInt()\n  memory: number\n\n  @ApiProperty({ example: 2048 })\n  @IsInt()\n  @IsOptional()\n  databaseCapacity?: number\n\n  @ApiProperty({ example: 4096 })\n  @IsNotEmpty()\n  @IsInt()\n  storageCapacity: number\n\n  @ApiProperty({ type: CreateAutoscalingDto })\n  @ValidateNested()\n  @Type(() => CreateAutoscalingDto)\n  autoscaling: CreateAutoscalingDto\n\n  @ApiProperty({ type: CreateDedicatedDatabaseDto })\n  @ValidateNested()\n  @IsOptional()\n  @Type(() => CreateDedicatedDatabaseDto)\n  dedicatedDatabase?: CreateDedicatedDatabaseDto\n\n  validate() {\n    if (!this.dedicatedDatabase && !this.databaseCapacity) {\n      return 'databaseCapacity or dedicatedDatabase must be provided'\n    }\n    if (this.databaseCapacity && this.dedicatedDatabase) {\n      return 'databaseCapacity or dedicatedDatabase must be specified only one'\n    }\n    return null\n  }\n}\n"
  },
  {
    "path": "server/src/application/entities/application-bundle.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\nimport { Autoscaling } from './application-configuration'\nimport { DedicatedDatabaseSpec } from 'src/database/entities/dedicated-database'\n\nexport class ApplicationBundleResource {\n  @ApiProperty({ example: 500 })\n  limitCPU: number\n\n  @ApiProperty({ example: 1024 })\n  limitMemory: number\n\n  requestCPU: number\n  requestMemory: number\n\n  @ApiProperty({ example: 1024 })\n  databaseCapacity: number\n\n  @ApiProperty({ example: 1024 })\n  storageCapacity: number\n\n  @ApiProperty({ example: 100 })\n  limitCountOfCloudFunction: number\n\n  @ApiProperty({ example: 3 })\n  limitCountOfBucket: number\n\n  @ApiProperty({ example: 3 })\n  limitCountOfDatabasePolicy: number\n\n  @ApiProperty({ example: 1 })\n  limitCountOfTrigger: number\n\n  @ApiProperty({ example: 3 })\n  limitCountOfWebsiteHosting: number\n\n  @ApiProperty()\n  reservedTimeAfterExpired: number\n\n  limitDatabaseTPS: number\n  limitStorageTPS: number\n\n  @ApiProperty({ type: DedicatedDatabaseSpec })\n  dedicatedDatabase: DedicatedDatabaseSpec\n\n  constructor(partial: Partial<ApplicationBundleResource>) {\n    Object.assign(this, partial)\n  }\n}\n\nexport class ApplicationBundle {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty()\n  resource: ApplicationBundleResource\n\n  @ApiProperty()\n  autoscaling: Autoscaling\n\n  @ApiPropertyOptional()\n  isTrialTier?: boolean\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  constructor(partial: Partial<ApplicationBundle>) {\n    Object.assign(this, partial)\n  }\n}\n"
  },
  {
    "path": "server/src/application/entities/application-configuration.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport class EnvironmentVariable {\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  value: string\n}\n\nexport class Autoscaling {\n  @ApiProperty()\n  enable: boolean\n\n  @ApiProperty()\n  minReplicas: number\n\n  @ApiProperty()\n  maxReplicas: number\n\n  @ApiProperty()\n  targetCPUUtilizationPercentage?: number\n\n  @ApiProperty()\n  targetMemoryUtilizationPercentage?: number\n}\n\nexport class ApplicationConfiguration {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty({ isArray: true, type: EnvironmentVariable })\n  environments: EnvironmentVariable[]\n\n  @ApiProperty()\n  dependencies: string[]\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/application/entities/application.ts",
    "content": "import { ObjectId } from 'mongodb'\nimport { Region } from 'src/region/entities/region'\nimport { ApplicationBundle } from './application-bundle'\nimport { Runtime } from './runtime'\nimport { ApplicationConfiguration } from './application-configuration'\nimport { RuntimeDomain } from 'src/gateway/entities/runtime-domain'\nimport { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\n\nexport enum ApplicationPhase {\n  Creating = 'Creating',\n  Created = 'Created',\n  Starting = 'Starting',\n  Started = 'Started',\n  Stopping = 'Stopping',\n  Stopped = 'Stopped',\n  Deleting = 'Deleting',\n  Deleted = 'Deleted',\n}\n\nexport enum ApplicationState {\n  Running = 'Running',\n  Stopped = 'Stopped',\n  Restarting = 'Restarting',\n  Deleted = 'Deleted',\n}\n\nexport class Application {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty({ type: String })\n  regionId: ObjectId\n\n  @ApiProperty({ type: String })\n  runtimeId: ObjectId\n\n  @ApiProperty({ isArray: true, type: String })\n  tags: string[]\n\n  @ApiProperty({ enum: ApplicationState })\n  state: ApplicationState\n\n  @ApiProperty({ enum: ApplicationPhase })\n  phase: ApplicationPhase\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  lockedAt: Date\n\n  @ApiProperty({ type: String })\n  createdBy: ObjectId\n\n  billingLockedAt: Date\n\n  latestBillingTime?: Date\n\n  constructor(partial: Partial<Application>) {\n    Object.assign(this, partial)\n  }\n}\n\nexport class ApplicationWithRelations extends Application {\n  @ApiPropertyOptional()\n  region?: Region\n\n  @ApiPropertyOptional()\n  bundle?: ApplicationBundle\n\n  @ApiPropertyOptional()\n  runtime?: Runtime\n\n  @ApiPropertyOptional()\n  configuration?: ApplicationConfiguration\n\n  @ApiPropertyOptional()\n  domain?: RuntimeDomain\n}\n"
  },
  {
    "path": "server/src/application/entities/runtime.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport class RuntimeImageGroup {\n  @ApiProperty()\n  main: string\n\n  @ApiProperty()\n  init: string\n\n  @ApiPropertyOptional()\n  sidecar?: string\n}\n\nexport class Runtime {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  type: string\n\n  @ApiProperty()\n  image: RuntimeImageGroup\n\n  @ApiProperty()\n  state: 'Active' | 'Inactive'\n\n  @ApiProperty()\n  version: string\n\n  @ApiProperty()\n  latest: boolean\n\n  constructor(partial: Partial<Runtime>) {\n    Object.assign(this, partial)\n  }\n}\n"
  },
  {
    "path": "server/src/application/environment.controller.ts",
    "content": "import {\n  Body,\n  Controller,\n  Delete,\n  Get,\n  Logger,\n  Param,\n  ParseArrayPipe,\n  Patch,\n  Post,\n  UseGuards,\n} from '@nestjs/common'\nimport {\n  ApiBearerAuth,\n  ApiBody,\n  ApiOperation,\n  ApiResponse,\n  ApiTags,\n} from '@nestjs/swagger'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ResponseUtil } from 'src/utils/response'\nimport { EnvironmentVariableService } from './environment.service'\nimport { CreateEnvironmentDto } from './dto/create-env.dto'\nimport { APPLICATION_SECRET_KEY } from 'src/constants'\n\n@ApiTags('Application')\n@ApiBearerAuth('Authorization')\n@Controller('apps/:appid/environments')\nexport class EnvironmentVariableController {\n  private readonly logger = new Logger(EnvironmentVariableController.name)\n\n  constructor(private readonly confService: EnvironmentVariableService) {}\n\n  /**\n   * Update environment variables (replace all)\n   * @param appid\n   * @param dto\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Update environment variables (replace all)' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post()\n  @ApiBody({\n    type: [CreateEnvironmentDto],\n    description: 'The environment variables',\n  })\n  async updateAll(\n    @Param('appid') appid: string,\n    @Body(new ParseArrayPipe({ items: CreateEnvironmentDto, whitelist: true }))\n    dto: CreateEnvironmentDto[],\n  ) {\n    // app secret can not missing or empty\n    const secret = dto.find((item) => item.name === APPLICATION_SECRET_KEY)\n    if (!secret || !secret.value) {\n      return ResponseUtil.error(APPLICATION_SECRET_KEY + ' can not be empty')\n    }\n\n    const res = await this.confService.updateAll(appid, dto)\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Set a environment variable\n   * @param appid\n   * @param dto\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Set a environment variable (create/update)' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Patch()\n  async add(@Param('appid') appid: string, @Body() dto: CreateEnvironmentDto) {\n    // can not set empty app secret\n    if (dto.name === APPLICATION_SECRET_KEY && !dto.value) {\n      return ResponseUtil.error(APPLICATION_SECRET_KEY + ' can not be empty')\n    }\n\n    const res = await this.confService.setOne(appid, dto)\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Get environment variables\n   * @param appid\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Get environment variables' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get()\n  async get(@Param('appid') appid: string) {\n    const res = await this.confService.findAll(appid)\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Delete an environment variable by name\n   * @param appid\n   * @param name\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Delete an environment variable by name' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Delete(':name')\n  async delete(@Param('appid') appid: string, @Param('name') name: string) {\n    // can not delete secret key\n    if (name === APPLICATION_SECRET_KEY) {\n      return ResponseUtil.error(APPLICATION_SECRET_KEY + ' can not be deleted')\n    }\n\n    const res = await this.confService.deleteOne(appid, name)\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/application/environment.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { CreateEnvironmentDto } from './dto/create-env.dto'\nimport { ApplicationConfigurationService } from './configuration.service'\nimport { SystemDatabase } from 'src/system-database'\nimport { ApplicationConfiguration } from './entities/application-configuration'\nimport * as assert from 'node:assert'\n\n@Injectable()\nexport class EnvironmentVariableService {\n  private readonly db = SystemDatabase.db\n  private readonly logger = new Logger(EnvironmentVariableService.name)\n\n  constructor(private readonly confService: ApplicationConfigurationService) {}\n\n  async updateAll(appid: string, dto: CreateEnvironmentDto[]) {\n    const res = await this.db\n      .collection<ApplicationConfiguration>('ApplicationConfiguration')\n      .findOneAndUpdate(\n        { appid },\n        { $set: { environments: dto, updatedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    assert(res?.value, 'application configuration not found')\n    await this.confService.publish(res.value)\n    return res.value.environments\n  }\n\n  /**\n   * if exists, update, else create\n   * @param appid\n   * @param dto\n   */\n  async setOne(appid: string, dto: CreateEnvironmentDto) {\n    const origin = await this.findAll(appid)\n    // check if exists\n    const exists = origin.find((item) => item.name === dto.name)\n    if (exists) {\n      exists.value = dto.value\n    } else {\n      origin.push(dto)\n    }\n\n    const res = await this.db\n      .collection<ApplicationConfiguration>('ApplicationConfiguration')\n      .findOneAndUpdate(\n        { appid },\n        { $set: { environments: origin, updatedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    assert(res?.value, 'application configuration not found')\n    await this.confService.publish(res.value)\n    return res.value.environments\n  }\n\n  async findAll(appid: string) {\n    const doc = await this.db\n      .collection<ApplicationConfiguration>('ApplicationConfiguration')\n      .findOne({ appid })\n\n    return doc.environments\n  }\n\n  async deleteOne(appid: string, name: string) {\n    const res = await this.db\n      .collection<ApplicationConfiguration>('ApplicationConfiguration')\n      .findOneAndUpdate(\n        { appid },\n        { $pull: { environments: { name } } },\n        { returnDocument: 'after' },\n      )\n\n    assert(res?.value, 'application configuration not found')\n    await this.confService.publish(res.value)\n    return res.value.environments\n  }\n}\n"
  },
  {
    "path": "server/src/application/events/application-bundle-updating.event.ts",
    "content": "import { ClientSession } from 'mongodb'\nimport { Region } from 'src/region/entities/region'\nimport { UpdateApplicationBundleDto } from '../dto/update-application.dto'\n\nexport class ApplicationBundleUpdatingEvent {\n  region: Region\n  appid: string\n  session: ClientSession\n  dto: UpdateApplicationBundleDto\n\n  constructor(partial: Partial<ApplicationBundleUpdatingEvent>) {\n    Object.assign(this, partial)\n  }\n\n  static get eventName() {\n    return 'application.bundle.updating'\n  }\n}\n"
  },
  {
    "path": "server/src/application/events/application-creating.event.ts",
    "content": "import { ClientSession } from 'mongodb'\nimport { CreateApplicationDto } from '../dto/create-application.dto'\nimport { Region } from 'src/region/entities/region'\n\nexport class ApplicationCreatingEvent {\n  region: Region\n  appid: string\n  session: ClientSession\n  dto: CreateApplicationDto\n\n  constructor(partial: Partial<ApplicationCreatingEvent>) {\n    Object.assign(this, partial)\n  }\n\n  static get eventName() {\n    return 'application.creating'\n  }\n}\n"
  },
  {
    "path": "server/src/application/pod.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Logger,\n  Param,\n  Query,\n  UseGuards,\n} from '@nestjs/common'\nimport { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApiResponseObject, ResponseUtil } from 'src/utils/response'\nimport { ContainerNameListDto, PodNameListDto } from './dto/pod.dto'\nimport { PodService } from './pod.service'\n\n@ApiTags('Application')\n@ApiBearerAuth('Authorization')\n@Controller('apps/:appid/pod')\nexport class PodController {\n  private readonly logger = new Logger(PodController.name)\n\n  constructor(private readonly podService: PodService) {}\n\n  /**\n   * Get app all pod name\n   * @param appid\n   * @returns\n   */\n  @ApiResponseObject(PodNameListDto)\n  @ApiOperation({ summary: 'Get app all pod name' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get()\n  async getPodNameList(@Param('appid') appid: string) {\n    const podNames: PodNameListDto =\n      await this.podService.getPodNameListByAppid(appid)\n    return ResponseUtil.ok(podNames)\n  }\n\n  /**\n   * Get pod's containers\n   * @param appid\n   * @returns\n   */\n  @ApiResponseObject(ContainerNameListDto)\n  @ApiOperation({ summary: \"Get pod's containers\" })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get('container')\n  async getContainerNameList(\n    @Param('appid') appid: string,\n    @Query('podName') podName: string,\n  ) {\n    if (!podName) {\n      return ResponseUtil.error('no podName')\n    }\n    const podNames: PodNameListDto =\n      await this.podService.getPodNameListByAppid(appid)\n\n    if (!podNames.podNameList.includes(podName)) {\n      return ResponseUtil.error('podName not exist')\n    }\n\n    const containerNames: ContainerNameListDto =\n      await this.podService.getContainerNameListByPodName(appid, podName)\n    return ResponseUtil.ok(containerNames)\n  }\n}\n"
  },
  {
    "path": "server/src/application/pod.service.ts",
    "content": "import { V1Pod, V1PodList } from '@kubernetes/client-node'\nimport { Injectable, Logger } from '@nestjs/common'\nimport { ClusterService } from 'src/region/cluster/cluster.service'\nimport { RegionService } from 'src/region/region.service'\nimport { GetApplicationNamespace } from 'src/utils/getter'\nimport http from 'http'\nimport { PodNameListDto, ContainerNameListDto } from './dto/pod.dto'\nimport { LABEL_KEY_APP_ID } from 'src/constants'\n\nexport type PodStatus = {\n  appid: string\n  podStatus: {\n    name: string\n    podStatus: string\n    initContainerId?: string\n  }[]\n}\n@Injectable()\nexport class PodService {\n  private readonly logger = new Logger(PodService.name)\n\n  constructor(\n    private readonly regionService: RegionService,\n    private readonly cluster: ClusterService,\n  ) {}\n  async getPodNameListByAppid(appid: string) {\n    const region = await this.regionService.findByAppId(appid)\n    const namespaceOfApp = GetApplicationNamespace(region, appid)\n    const coreV1Api = this.cluster.makeCoreV1Api(region)\n    const res: { response: http.IncomingMessage; body: V1PodList } =\n      await coreV1Api.listNamespacedPod(\n        namespaceOfApp,\n        undefined,\n        undefined,\n        undefined,\n        undefined,\n        `${LABEL_KEY_APP_ID}=${appid}`,\n      )\n    const podNames: PodNameListDto = { appid: appid, podNameList: [] }\n    for (const item of res.body.items) {\n      podNames.podNameList.push(item.metadata.name)\n    }\n    return podNames\n  }\n\n  async getContainerNameListByPodName(appid: string, podName: string) {\n    const region = await this.regionService.findByAppId(appid)\n    const namespaceOfApp = GetApplicationNamespace(region, appid)\n    const coreV1Api = this.cluster.makeCoreV1Api(region)\n\n    const res: { response: http.IncomingMessage; body: V1Pod } =\n      await coreV1Api.readNamespacedPod(podName, namespaceOfApp)\n\n    const containerNameList =\n      res.body.spec.containers?.map((container) => container.name) || []\n\n    const containerNames: ContainerNameListDto = {\n      podName: podName,\n      containerNameList: containerNameList,\n    }\n\n    return containerNames\n  }\n\n  async getPodStatusListByAppid(appid: string): Promise<PodStatus> {\n    const region = await this.regionService.findByAppId(appid)\n    const namespaceOfApp = GetApplicationNamespace(region, appid)\n    const coreV1Api = this.cluster.makeCoreV1Api(region)\n    const res: { response: http.IncomingMessage; body: V1PodList } =\n      await coreV1Api.listNamespacedPod(\n        namespaceOfApp,\n        undefined,\n        undefined,\n        undefined,\n        undefined,\n        `${LABEL_KEY_APP_ID}=${appid}`,\n      )\n    const podStatus: PodStatus = {\n      appid: appid,\n      podStatus: [],\n    }\n    for (const item of res.body.items) {\n      podStatus.podStatus.push({\n        name: item.metadata.name,\n        podStatus: item.status.phase,\n        initContainerId: item.status.initContainerStatuses[0]?.containerID,\n      })\n    }\n    return podStatus\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/application.auth.guard.ts",
    "content": "import {\n  CanActivate,\n  ExecutionContext,\n  Injectable,\n  Logger,\n} from '@nestjs/common'\nimport { ApplicationService } from '../application/application.service'\nimport { IRequest } from '../utils/interface'\nimport { User } from 'src/user/entities/user'\nimport { GroupService } from 'src/group/group.service'\nimport { getRoleLevel } from 'src/group/entities/group-member'\nimport { Reflector } from '@nestjs/core'\n\n@Injectable()\nexport class ApplicationAuthGuard implements CanActivate {\n  logger = new Logger(ApplicationAuthGuard.name)\n  constructor(\n    private readonly appService: ApplicationService,\n    private readonly groupService: GroupService,\n    private readonly reflector: Reflector,\n  ) {}\n  async canActivate(context: ExecutionContext) {\n    const request = context.switchToHttp().getRequest() as IRequest\n    const appid = request.params.appid\n    const user = request.user as User\n\n    // check appid\n    const app = await this.appService.findOne(appid)\n    if (!app) {\n      return false\n    }\n\n    const ok = await this.checkGroupAuth(appid, user, context)\n    if (!ok && !app.createdBy.equals(user._id)) {\n      return false\n    }\n    if (!ok) {\n      await this.groupService.create(appid, user._id, appid)\n      await this.checkGroupAuth(appid, user, context)\n    }\n\n    // inject app to request\n    request.application = app\n\n    return true\n  }\n\n  async checkGroupAuth(appid: string, user: User, context: ExecutionContext) {\n    const request = context.switchToHttp().getRequest() as IRequest\n\n    // check group\n    const groups = await this.groupService.findGroupsByAppidAndUid(\n      appid,\n      user._id,\n    )\n    if (groups.length === 0) {\n      return false\n    }\n\n    groups.sort((a, b) => getRoleLevel(b.role) - getRoleLevel(a.role))\n    const group = groups[0]\n\n    // check group role\n    const roles = this.reflector.get<string[]>(\n      'group-roles',\n      context.getHandler(),\n    )\n    if (roles?.length > 0) {\n      const roleLevels = roles.map(getRoleLevel).sort((a, b) => a - b)\n\n      if (roleLevels[0] > getRoleLevel(group.role)) {\n        return false\n      }\n    }\n\n    request.group = group\n\n    return true\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/authentication.controller.ts",
    "content": "import { AuthenticationService } from './authentication.service'\nimport { Body, Controller, Get, Post } from '@nestjs/common'\nimport { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'\nimport { ApiResponseString, ResponseUtil } from 'src/utils/response'\n\nimport { Pat2TokenDto } from './dto/pat2token.dto'\n\n@ApiTags('Authentication')\n@Controller('auth')\nexport class AuthenticationController {\n  constructor(private readonly authService: AuthenticationService) {}\n\n  /**\n   * Auth providers\n   */\n  @ApiOperation({ summary: 'Auth providers' })\n  @ApiResponse({ type: ResponseUtil })\n  @Get('providers')\n  async getProviders() {\n    const providers = await this.authService.getProviders()\n    return ResponseUtil.ok(providers)\n  }\n\n  /**\n   * Get user token by PAT\n   * @param pat\n   * @returns\n   */\n  @ApiOperation({ summary: 'Get user token by PAT' })\n  @ApiResponseString()\n  @Post('pat2token')\n  async pat2token(@Body() dto: Pat2TokenDto) {\n    const token = await this.authService.pat2token(dto.pat)\n    if (!token) {\n      return ResponseUtil.error('invalid pat')\n    }\n\n    return ResponseUtil.ok(token)\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/authentication.module.ts",
    "content": "import { Global, Module } from '@nestjs/common'\nimport { JwtModule } from '@nestjs/jwt'\nimport { PassportModule } from '@nestjs/passport'\nimport { ServerConfig } from '../constants'\nimport { UserModule } from '../user/user.module'\nimport { AccountModule } from 'src/account/account.module'\nimport { JwtStrategy } from './jwt.strategy'\nimport { HttpModule } from '@nestjs/axios'\nimport { PatService } from 'src/user/pat.service'\nimport { UserPasswordController } from './user-passwd/user-password.controller'\nimport { UserPasswordService } from './user-passwd/user-password.service'\nimport { PhoneController } from './phone/phone.controller'\nimport { PhoneService } from './phone/phone.service'\nimport { AuthenticationController } from './authentication.controller'\nimport { AuthenticationService } from './authentication.service'\nimport { SmsService } from './phone/sms.service'\nimport { AccountService } from 'src/account/account.service'\nimport { EmailService } from './email/email.service'\nimport { EmailController } from './email/email.controller'\nimport { MailerService } from './email/mailer.service'\nimport { GithubAuthController } from './github/github.controller'\nimport { GithubService } from './github/github.service'\n\n@Global()\n@Module({\n  imports: [\n    PassportModule,\n    JwtModule.register({\n      secret: ServerConfig.JWT_SECRET,\n      signOptions: { expiresIn: ServerConfig.JWT_EXPIRES_IN },\n    }),\n    UserModule,\n    HttpModule,\n    AccountModule,\n  ],\n  providers: [\n    JwtStrategy,\n    PatService,\n    UserPasswordService,\n    PhoneService,\n    SmsService,\n    EmailService,\n    AuthenticationService,\n    AccountService,\n    MailerService,\n    GithubService,\n  ],\n  exports: [SmsService, EmailService],\n  controllers: [\n    UserPasswordController,\n    PhoneController,\n    AuthenticationController,\n    EmailController,\n    GithubAuthController,\n  ],\n})\nexport class AuthenticationModule {}\n"
  },
  {
    "path": "server/src/authentication/authentication.service.ts",
    "content": "import { JwtService } from '@nestjs/jwt'\nimport { Injectable, Logger } from '@nestjs/common'\nimport {\n  EMAIL_AUTH_PROVIDER_NAME,\n  GITHUB_AUTH_PROVIDER_NAME,\n  PASSWORD_AUTH_PROVIDER_NAME,\n  PHONE_AUTH_PROVIDER_NAME,\n} from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport { AuthProvider, AuthProviderState } from './entities/auth-provider'\nimport { User } from 'src/user/entities/user'\nimport { PatService } from 'src/user/pat.service'\n\n@Injectable()\nexport class AuthenticationService {\n  private readonly logger = new Logger(AuthenticationService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(\n    private readonly jwtService: JwtService,\n    private readonly patService: PatService,\n  ) {}\n\n  /**\n   * Get all auth provides\n   * @returns\n   */\n  async getProviders() {\n    return await this.db\n      .collection<AuthProvider>('AuthProvider')\n      .find(\n        { state: AuthProviderState.Enabled },\n        { projection: { _id: 0, config: 0 } },\n      )\n      .toArray()\n  }\n\n  async getPhoneProvider() {\n    return await this.getProvider(PHONE_AUTH_PROVIDER_NAME)\n  }\n\n  async getPasswdProvider() {\n    return await this.getProvider(PASSWORD_AUTH_PROVIDER_NAME)\n  }\n\n  async getGithubProvider() {\n    return await this.getProvider(GITHUB_AUTH_PROVIDER_NAME)\n  }\n\n  async getEmailProvider() {\n    return await this.getProvider(EMAIL_AUTH_PROVIDER_NAME)\n  }\n\n  // Get auth provider by name\n  async getProvider(name: string) {\n    return await this.db\n      .collection<AuthProvider>('AuthProvider')\n      .findOne({ name })\n  }\n\n  /**\n   * Get token by PAT\n   * @param user\n   * @param token\n   * @returns\n   */\n  async pat2token(token: string): Promise<string> {\n    const pat = await this.patService.findOneByToken(token)\n    if (!pat) return null\n\n    // check pat expired\n    if (pat.expiredAt < new Date()) return null\n\n    return this.getAccessTokenByUser(pat.user)\n  }\n\n  /**\n   * Get access token by user\n   * @param user\n   * @returns\n   */\n  getAccessTokenByUser(user: User): string {\n    const payload = { sub: user._id.toString() }\n    const token = this.jwtService.sign(payload)\n    return token\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/dto/email-signin.dto.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport {\n  IsNotEmpty,\n  IsString,\n  Length,\n  IsOptional,\n  Matches,\n  IsEmail,\n} from 'class-validator'\n\nexport class EmailSigninDto {\n  @ApiProperty({\n    description: 'email',\n  })\n  @IsString()\n  @IsNotEmpty()\n  @IsEmail()\n  email: string\n\n  @ApiProperty({})\n  @IsNotEmpty()\n  @Length(6, 6)\n  code: string\n\n  @ApiProperty({\n    description: 'username',\n    example: 'laf-user',\n  })\n  @IsOptional()\n  @IsString()\n  @Length(3, 64)\n  username: string\n\n  @ApiProperty({\n    description: 'password, 8-64 characters',\n    example: 'laf-user-password',\n  })\n  @IsOptional()\n  @IsString()\n  @Length(8, 64)\n  password: string\n\n  @ApiPropertyOptional({\n    description: 'invite code',\n    example: 'iLeMi7x',\n  })\n  @IsOptional()\n  @IsString()\n  @Matches(/^\\S+$/, { message: 'invalid characters' })\n  inviteCode: string\n}\n"
  },
  {
    "path": "server/src/authentication/dto/email-verify-code.dto.ts",
    "content": "import { ObjectId } from 'mongodb'\n\nexport enum EmailVerifyCodeType {\n  Bind = 'bind',\n  Unbind = 'Unbind',\n}\n\nexport enum EmailVerifyCodeState {\n  Unused = 0,\n  Used = 1,\n}\n\nexport class EmailVerifyCode {\n  _id?: ObjectId\n  email: string\n  code: string\n  ip: string\n  type: EmailVerifyCodeType\n  state: EmailVerifyCodeState\n  createdAt: Date\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/authentication/dto/github-bind.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsBoolean, IsNotEmpty, IsOptional, IsString } from 'class-validator'\n\nexport class GithubBind {\n  @ApiProperty({ description: 'temporary token signed for github bindings' })\n  @IsString()\n  @IsNotEmpty()\n  token: string\n\n  @ApiProperty({ description: 'Is a newly registered use' })\n  @IsBoolean()\n  @IsOptional()\n  isRegister: boolean\n}\n"
  },
  {
    "path": "server/src/authentication/dto/github-jump-login.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString } from 'class-validator'\n\nexport class GithubJumpLoginDto {\n  @ApiProperty()\n  @IsString()\n  @IsNotEmpty()\n  redirectUri: string\n}\n"
  },
  {
    "path": "server/src/authentication/dto/github-signin.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString } from 'class-validator'\n\nexport class GithubSigninDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @IsString()\n  code: string\n}\n"
  },
  {
    "path": "server/src/authentication/dto/passwd-check.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString, Length } from 'class-validator'\n\nexport class PasswdCheckDto {\n  @ApiProperty({\n    description: 'username | phone | email',\n    example: 'laf-user | 13805718888 | laf-user@laf.com',\n  })\n  @IsString()\n  @IsNotEmpty()\n  @Length(3, 64)\n  username: string\n}\n"
  },
  {
    "path": "server/src/authentication/dto/passwd-reset.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport {\n  IsEmail,\n  IsNotEmpty,\n  IsOptional,\n  IsString,\n  Length,\n  Matches,\n} from 'class-validator'\n\nexport class PasswdResetDto {\n  @ApiProperty({\n    description: 'new password, 8-64 characters',\n    example: 'laf-user-password',\n  })\n  @IsString()\n  @IsNotEmpty()\n  @Length(8, 64)\n  password: string\n\n  @ApiProperty({\n    description: 'phone',\n    example: '13805718888',\n  })\n  @IsString()\n  @IsOptional()\n  @Matches(/^1[3-9]\\d{9}$/)\n  phone: string\n\n  @ApiProperty({\n    description: 'email',\n  })\n  @IsString()\n  @IsEmail()\n  @IsOptional()\n  email: string\n\n  @ApiProperty({\n    description: 'verify code',\n    example: '032456',\n  })\n  @IsString()\n  @Length(6, 6)\n  code: string\n}\n"
  },
  {
    "path": "server/src/authentication/dto/passwd-signin.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString, Length } from 'class-validator'\n\nexport class PasswdSigninDto {\n  @ApiProperty({\n    description: 'username',\n    example: 'laf-user',\n  })\n  @IsString()\n  @IsNotEmpty()\n  @Length(3, 64)\n  username: string\n\n  @ApiProperty({\n    description: 'password, 8-64 characters',\n    example: 'laf-user-password',\n  })\n  @IsString()\n  @IsNotEmpty()\n  @Length(8, 64)\n  password: string\n}\n"
  },
  {
    "path": "server/src/authentication/dto/passwd-signup.dto.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport {\n  IsEmail,\n  IsNotEmpty,\n  IsOptional,\n  IsString,\n  Length,\n  Matches,\n} from 'class-validator'\n\nexport class PasswdSignupDto {\n  @ApiProperty({\n    description: 'username, 3-64 characters',\n    example: 'laf-user',\n  })\n  @IsString()\n  @IsNotEmpty()\n  @Length(3, 64)\n  @Matches(/^\\S+$/, { message: 'invalid characters' })\n  username: string\n\n  @ApiProperty({\n    description: 'password, 8-64 characters',\n    example: 'laf-user-password',\n  })\n  @IsString()\n  @IsNotEmpty()\n  @Length(8, 64)\n  @Matches(/^\\S+$/, { message: 'invalid characters' })\n  password: string\n\n  @ApiPropertyOptional({\n    description: 'phone',\n    example: '13805718888',\n  })\n  @IsOptional()\n  @IsString()\n  @Matches(/^1[3-9]\\d{9}$/)\n  phone: string\n\n  @ApiPropertyOptional({\n    description: 'email',\n  })\n  @IsOptional()\n  @IsString()\n  @IsEmail()\n  email: string\n\n  @ApiPropertyOptional({\n    description: 'verify code',\n    example: '032456',\n  })\n  @IsOptional()\n  @IsString()\n  @Length(6, 6)\n  code: string\n\n  @ApiPropertyOptional({\n    description: 'invite code',\n    example: 'iLeMi7x',\n  })\n  @IsOptional()\n  @IsString()\n  @Matches(/^\\S+$/, { message: 'invalid characters' })\n  inviteCode: string\n}\n"
  },
  {
    "path": "server/src/authentication/dto/pat2token.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString } from 'class-validator'\n\nexport class Pat2TokenDto {\n  @ApiProperty({\n    description: 'PAT',\n    example:\n      'laf_1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',\n  })\n  @IsString()\n  @IsNotEmpty()\n  pat: string\n}\n"
  },
  {
    "path": "server/src/authentication/dto/phone-signin.dto.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport {\n  IsNotEmpty,\n  IsString,\n  Length,\n  IsOptional,\n  Matches,\n} from 'class-validator'\n\nexport class PhoneSigninDto {\n  @ApiProperty({\n    description: 'phone',\n    example: '13805718888',\n  })\n  @IsString()\n  @IsNotEmpty()\n  @Matches(/^1[3-9]\\d{9}$/)\n  phone: string\n\n  @ApiProperty({})\n  @IsNotEmpty()\n  @Length(6, 6)\n  code: string\n\n  @ApiProperty({\n    description: 'username',\n    example: 'laf-user',\n  })\n  @IsOptional()\n  @IsString()\n  @Length(3, 64)\n  username: string\n\n  @ApiProperty({\n    description: 'password, 8-64 characters',\n    example: 'laf-user-password',\n  })\n  @IsOptional()\n  @IsString()\n  @Length(8, 64)\n  password: string\n\n  @ApiPropertyOptional({\n    description: 'invite code',\n    example: 'iLeMi7x',\n  })\n  @IsOptional()\n  @IsString()\n  @Matches(/^\\S+$/, { message: 'invalid characters' })\n  inviteCode: string\n}\n"
  },
  {
    "path": "server/src/authentication/dto/send-email-code.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsEmail, IsEnum, IsNotEmpty } from 'class-validator'\nimport { EmailVerifyCodeType } from '../entities/email-verify-code'\n\nexport class SendEmailCodeDto {\n  @ApiProperty()\n  @IsEmail()\n  @IsNotEmpty()\n  email: string\n\n  @ApiProperty({\n    description: 'verify code type',\n    enum: EmailVerifyCodeType,\n  })\n  @IsNotEmpty()\n  @IsEnum(EmailVerifyCodeType)\n  type: EmailVerifyCodeType\n}\n"
  },
  {
    "path": "server/src/authentication/dto/send-phone-code.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsEnum, IsNotEmpty, IsString, Matches } from 'class-validator'\nimport { SmsVerifyCodeType } from '../entities/sms-verify-code'\n\nexport class SendPhoneCodeDto {\n  @ApiProperty({\n    description: 'phone',\n    example: '13805718888',\n  })\n  @IsString()\n  @IsNotEmpty()\n  @Matches(/^1[3-9]\\d{9}$/)\n  phone: string\n\n  @ApiProperty({\n    description: 'verify code type',\n    example: 'Signin | Signup | ResetPassword | Bind | Unbind | ChangePhone',\n  })\n  @IsNotEmpty()\n  @IsEnum(SmsVerifyCodeType)\n  type: SmsVerifyCodeType\n}\n"
  },
  {
    "path": "server/src/authentication/email/email.controller.ts",
    "content": "import { IRequest } from 'src/utils/interface'\nimport { Body, Controller, Logger, Post, Req } from '@nestjs/common'\nimport { ApiBody, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'\nimport { ResponseUtil } from 'src/utils/response'\nimport { SendEmailCodeDto } from '../dto/send-email-code.dto'\nimport { EmailService } from './email.service'\nimport { GetClientIPFromRequest } from 'src/utils/getter'\nimport { UserService } from 'src/user/user.service'\nimport { EmailSigninDto } from '../dto/email-signin.dto'\nimport { EmailVerifyCodeType } from '../entities/email-verify-code'\nimport { AuthenticationService } from '../authentication.service'\nimport { AuthBindingType, AuthProviderBinding } from '../entities/types'\n\n@ApiTags('Authentication')\n@Controller('auth')\nexport class EmailController {\n  private readonly logger = new Logger(EmailController.name)\n\n  constructor(\n    private readonly emailService: EmailService,\n    private readonly authService: AuthenticationService,\n    private readonly userService: UserService,\n  ) {}\n\n  /**\n   * send email code\n   */\n  @ApiOperation({ summary: 'Send email verify code' })\n  @ApiResponse({ type: ResponseUtil })\n  @ApiBody({ type: SendEmailCodeDto })\n  @Post('email/code')\n  async sendCode(@Req() req: IRequest, @Body() dto: SendEmailCodeDto) {\n    const { email, type } = dto\n    const ip = GetClientIPFromRequest(req)\n\n    const err = await this.emailService.sendCode(email, type, ip)\n    if (err) {\n      return ResponseUtil.error(err)\n    }\n    return ResponseUtil.ok('success')\n  }\n\n  /**\n   * Signin by email and verify code\n   */\n  @ApiOperation({ summary: 'Signin by email and verify code' })\n  @ApiResponse({ type: ResponseUtil })\n  @Post('email/signin')\n  async signin(@Body() dto: EmailSigninDto) {\n    const { email, code } = dto\n    // check if code valid\n    const err = await this.emailService.validateCode(\n      email,\n      code,\n      EmailVerifyCodeType.Signin,\n    )\n    if (err) return ResponseUtil.error(err)\n\n    // check if user exists\n    const user = await this.userService.findOneByEmail(email)\n    if (user) {\n      const token = this.emailService.signin(user)\n      return ResponseUtil.ok(token)\n    }\n\n    // user not exist\n    const provider = await this.authService.getEmailProvider()\n    if (provider.register === false) {\n      return ResponseUtil.error('user not exists')\n    }\n\n    // check if username and password is needed\n    let signupWithUsername = false\n    const bind = provider.bind as any as AuthProviderBinding\n    if (bind.username === AuthBindingType.Required) {\n      const { username, password } = dto\n      signupWithUsername = true\n      if (!username || !password) {\n        return ResponseUtil.error('username and password is required')\n      }\n    }\n\n    // user not exist, signup and signin\n    const newUser = await this.emailService.signup(dto, signupWithUsername)\n    const data = this.emailService.signin(newUser)\n    return ResponseUtil.ok(data)\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/email/email.service.ts",
    "content": "import { SystemDatabase } from 'src/system-database'\nimport {\n  EmailVerifyCode,\n  EmailVerifyCodeState,\n  EmailVerifyCodeType,\n} from '../entities/email-verify-code'\nimport { MailerService } from './mailer.service'\nimport {\n  CODE_VALIDITY,\n  LIMIT_CODE_PER_IP_PER_DAY,\n  MILLISECONDS_PER_DAY,\n  MILLISECONDS_PER_MINUTE,\n  TASK_LOCK_INIT_TIME,\n} from 'src/constants'\nimport { isEmail } from 'class-validator'\nimport { Injectable } from '@nestjs/common'\nimport { ObjectId } from 'mongodb'\nimport { User } from 'src/user/entities/user'\nimport {\n  InviteCode,\n  InviteCodeState,\n  InviteRelation,\n} from '../entities/invite-code'\nimport { Setting, SettingKey } from 'src/setting/entities/setting'\nimport {\n  AccountChargeOrder,\n  AccountChargePhase,\n  Currency,\n  PaymentChannelType,\n} from 'src/account/entities/account-charge-order'\nimport { UserProfile } from 'src/user/entities/user-profile'\nimport {\n  UserPassword,\n  UserPasswordState,\n} from 'src/user/entities/user-password'\nimport { hashPassword } from 'src/utils/crypto'\nimport { EmailSigninDto } from '../dto/email-signin.dto'\nimport { AuthenticationService } from '../authentication.service'\nimport { UserService } from 'src/user/user.service'\nimport { AccountService } from 'src/account/account.service'\n\n@Injectable()\nexport class EmailService {\n  constructor(\n    private readonly mailerService: MailerService,\n    private readonly authService: AuthenticationService,\n    private readonly userService: UserService,\n    private readonly accountService: AccountService,\n  ) {}\n  private readonly db = SystemDatabase.db\n\n  async sendCode(email: string, type: EmailVerifyCodeType, ip: string) {\n    let err = await this.checkSendable(email, ip)\n    if (err) return err\n\n    const code = Math.floor(Math.random() * 900000 + 100000).toString()\n    err = await this.mailerService.sendEmailCode(email, code)\n    if (err) return err\n\n    await this.disableSameTypeCode(email, type)\n\n    await this.saveCode(email, code, type, ip)\n  }\n\n  async saveCode(\n    email: string,\n    code: string,\n    type: EmailVerifyCodeType,\n    ip: string,\n  ) {\n    await this.db.collection<EmailVerifyCode>('EmailVerifyCode').insertOne({\n      email,\n      code,\n      type,\n      ip,\n      createdAt: new Date(),\n      updatedAt: new Date(),\n      state: EmailVerifyCodeState.Unused,\n    })\n  }\n\n  // Valid given email and code with code type\n  async validateCode(email: string, code: string, type: EmailVerifyCodeType) {\n    const total = await this.db\n      .collection<EmailVerifyCode>('EmailVerifyCode')\n      .countDocuments({\n        email,\n        code,\n        type,\n        state: EmailVerifyCodeState.Unused,\n        createdAt: { $gt: new Date(Date.now() - CODE_VALIDITY) },\n      })\n\n    if (total === 0) return 'invalid code'\n\n    // Disable verify code after valid\n    await this.disableCode(email, code, type)\n    return null\n  }\n\n  // Disable verify code\n  async disableCode(email: string, code: string, type: EmailVerifyCodeType) {\n    await this.db\n      .collection<EmailVerifyCode>('EmailVerifyCode')\n      .updateMany(\n        { email, code, type, state: EmailVerifyCodeState.Unused },\n        { $set: { state: EmailVerifyCodeState.Used } },\n      )\n  }\n\n  // Disable same type verify code\n  async disableSameTypeCode(email: string, type: EmailVerifyCodeType) {\n    await this.db\n      .collection<EmailVerifyCode>('EmailVerifyCode')\n      .updateMany(\n        { email, type, state: EmailVerifyCodeState.Unused },\n        { $set: { state: EmailVerifyCodeState.Used } },\n      )\n  }\n\n  // check if email satisfy the send condition\n  async checkSendable(email: string, ip: string) {\n    // Check if email is valid\n    if (!isEmail(email)) {\n      return 'INVALID_EMAIL'\n    }\n\n    // Check if email has been the sent verify code in 1 minute\n    const count = await this.db\n      .collection<EmailVerifyCode>('EmailVerifyCode')\n      .countDocuments({\n        email,\n        createdAt: { $gt: new Date(Date.now() - MILLISECONDS_PER_MINUTE) },\n      })\n\n    if (count > 0) {\n      return 'REQUEST_OVERLIMIT: email has been sent the verify code in 1 minute'\n    }\n\n    // Check if ip has been send email code beyond 30 times in 24 hours\n    const countIps = await this.db\n      .collection<EmailVerifyCode>('EmailVerifyCode')\n      .countDocuments({\n        ip: ip,\n        createdAt: { $gt: new Date(Date.now() - MILLISECONDS_PER_DAY) },\n      })\n\n    if (countIps > LIMIT_CODE_PER_IP_PER_DAY) {\n      return `REQUEST_OVERLIMIT: ip has been send email code beyond ${LIMIT_CODE_PER_IP_PER_DAY} times in 24 hours`\n    }\n\n    return null\n  }\n\n  /**\n   * Signup a user by email\n   * @param dto\n   * @returns\n   */\n  async signup(dto: EmailSigninDto, withUsername = false) {\n    const { email, username, password, inviteCode } = dto\n\n    const client = SystemDatabase.client\n    const session = client.startSession()\n\n    try {\n      session.startTransaction()\n      const randomUsername = new ObjectId()\n      // create user\n      const user = await this.db.collection<User>('User').insertOne(\n        {\n          email,\n          username: username || randomUsername.toString(),\n          createdAt: new Date(),\n          updatedAt: new Date(),\n        },\n        { session },\n      )\n\n      // create invite relation and add invite profit\n      if (inviteCode) {\n        const inviteCodeInfo = await this.db\n          .collection<InviteCode>('InviteCode')\n          .findOne({\n            code: inviteCode,\n            state: InviteCodeState.Enabled,\n          })\n\n        if (inviteCodeInfo) {\n          const account = await this.accountService.findOne(inviteCodeInfo.uid)\n          // get invitation Profit Amount\n          let amount = 0\n          const inviteProfit = await this.db\n            .collection<Setting>('Setting')\n            .findOne({\n              key: SettingKey.InvitationProfit,\n              public: true,\n            })\n          if (inviteProfit) {\n            amount = parseFloat(inviteProfit.value)\n          }\n          // add invite-code charge order\n          await this.db\n            .collection<AccountChargeOrder>('AccountChargeOrder')\n            .insertOne(\n              {\n                accountId: account._id,\n                amount: amount,\n                currency: Currency.CNY,\n                phase: AccountChargePhase.Paid,\n                channel: PaymentChannelType.InviteCode,\n                createdBy: new ObjectId(inviteCodeInfo.uid),\n                lockedAt: TASK_LOCK_INIT_TIME,\n                createdAt: new Date(),\n                updatedAt: new Date(),\n              },\n              { session },\n            )\n\n          const res = await this.accountService.chargeWithTransaction(\n            account._id,\n            amount,\n            'Invitation profit',\n            session,\n          )\n\n          await this.db.collection<InviteRelation>('InviteRelation').insertOne(\n            {\n              uid: user.insertedId,\n              invitedBy: inviteCodeInfo.uid,\n              codeId: inviteCodeInfo._id,\n              createdAt: new Date(),\n              transactionId: res.transaction.insertedId,\n            },\n            { session },\n          )\n        }\n      }\n\n      // create profile\n      await this.db.collection<UserProfile>('UserProfile').insertOne(\n        {\n          uid: user.insertedId,\n          name: username,\n          createdAt: new Date(),\n          updatedAt: new Date(),\n        },\n        { session },\n      )\n\n      if (withUsername) {\n        // create password\n        await this.db.collection<UserPassword>('UserPassword').insertOne(\n          {\n            uid: user.insertedId,\n            password: hashPassword(password),\n            state: UserPasswordState.Active,\n            createdAt: new Date(),\n            updatedAt: new Date(),\n          },\n          { session },\n        )\n      }\n\n      await session.commitTransaction()\n      return await this.userService.findOneById(user.insertedId)\n    } catch (err) {\n      await session.abortTransaction()\n      throw err\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  /**\n   * signin a user, return token and if bind password\n   * @param user user\n   * @returns token and if bind password\n   */\n  signin(user: User) {\n    const token = this.authService.getAccessTokenByUser(user)\n    return token\n  }\n\n  // check if current user has bind password\n  async ifBindPassword(user: User) {\n    const count = await this.db\n      .collection<UserPassword>('UserPassword')\n      .countDocuments({\n        uid: user._id,\n        state: UserPasswordState.Active,\n      })\n\n    return count > 0\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/email/mailer.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { AuthenticationService } from '../authentication.service'\nimport { createTransport } from 'nodemailer'\nimport { template } from 'lodash'\n\n@Injectable()\nexport class MailerService {\n  private readonly logger = new Logger(MailerService.name)\n\n  constructor(private readonly authService: AuthenticationService) {}\n\n  async sendEmailCode(email: string, code: string) {\n    try {\n      const res = await this.sendEmailCodeBySmtp(email, code.toString())\n      if (res.rejected.length > 0) {\n        return `email for verify code was rejected: ${res.rejected.join(',')}`\n      }\n    } catch (error) {\n      this.logger.error(error, error.response?.body)\n      return error.message\n    }\n  }\n\n  async sendEmailCodeBySmtp(email: string, code: string) {\n    const config = await this.loadEmailConfig()\n\n    const transporter = createTransport(config.transport)\n\n    const _template = template(config.template)\n\n    const res = await transporter.sendMail({\n      from: config.from,\n      to: email,\n      subject: config.subject,\n      html: _template({ code }),\n    })\n\n    return res\n  }\n\n  private async loadEmailConfig() {\n    const mailProvider = await this.authService.getEmailProvider()\n    return mailProvider.config\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/entities/auth-provider.ts",
    "content": "import { ObjectId } from 'mongodb'\n\nexport enum AuthProviderState {\n  Enabled = 'Enabled',\n  Disabled = 'Disabled',\n}\n\nexport class AuthProvider {\n  _id?: ObjectId\n  name: string\n  bind: any\n  register: boolean\n  default: boolean\n  state: AuthProviderState\n  config: any\n  createdAt: Date\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/authentication/entities/email-verify-code.ts",
    "content": "import { ObjectId } from 'mongodb'\n\nexport enum EmailVerifyCodeType {\n  Signin = 'Signin',\n  Signup = 'Signup',\n  ResetPassword = 'ResetPassword',\n  Bind = 'bind',\n  Unbind = 'Unbind',\n}\n\nexport enum EmailVerifyCodeState {\n  Unused = 0,\n  Used = 1,\n}\n\nexport class EmailVerifyCode {\n  _id?: ObjectId\n  email: string\n  code: string\n  ip: string\n  type: EmailVerifyCodeType\n  state: EmailVerifyCodeState\n  createdAt: Date\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/authentication/entities/invite-code.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport enum InviteCodeState {\n  Enabled = 'Active',\n  Disabled = 'Inactive',\n}\n\nexport class InviteCode {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  uid: ObjectId\n\n  @ApiProperty({ type: String })\n  code: string\n\n  @ApiProperty({ enum: InviteCodeState })\n  state: InviteCodeState\n\n  @ApiProperty({ type: String })\n  name?: string\n\n  @ApiProperty({ type: String })\n  description?: string\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n\nexport class InviteRelation {\n  _id?: ObjectId\n  uid: ObjectId\n  invitedBy: ObjectId\n  codeId: ObjectId\n  createdAt: Date\n  transactionId?: ObjectId\n}\n"
  },
  {
    "path": "server/src/authentication/entities/sms-verify-code.ts",
    "content": "import { ObjectId } from 'mongodb'\n\nexport enum SmsVerifyCodeType {\n  Signin = 'Signin',\n  Signup = 'Signup',\n  ResetPassword = 'ResetPassword',\n  Bind = 'Bind',\n  Unbind = 'Unbind',\n  ChangePhone = 'ChangePhone',\n}\n\nexport enum SmsVerifyCodeState {\n  Unused = 0,\n  Used = 1,\n}\n\nexport class SmsVerifyCode {\n  _id?: ObjectId\n  phone: string\n  code: string\n  ip: string\n  type: SmsVerifyCodeType\n  state: SmsVerifyCodeState\n  createdAt: Date\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/authentication/entities/types.ts",
    "content": "export enum AuthBindingType {\n  Required = 'required',\n  Optional = 'optional',\n  None = 'none',\n}\n\nexport interface AuthProviderBinding {\n  username: AuthBindingType\n  phone: AuthBindingType\n  email: AuthBindingType\n  github: AuthBindingType\n  wechat: AuthBindingType\n}\n\nexport interface AlismsConfig {\n  accessKeyId: string\n  accessKeySecret: string\n  endpoint: string\n  signName: string\n  templateCode: string\n}\n"
  },
  {
    "path": "server/src/authentication/github/github.controller.ts",
    "content": "import {\n  Body,\n  Controller,\n  Get,\n  Post,\n  Query,\n  Response,\n  UseGuards,\n} from '@nestjs/common'\nimport { Octokit } from '@octokit/rest'\nimport { IResponse } from 'src/utils/interface'\nimport { createOAuthAppAuth } from '@octokit/auth-oauth-app'\nimport { AuthenticationService } from '../authentication.service'\nimport { UserService } from 'src/user/user.service'\nimport { ApiResponseObject, ResponseUtil } from 'src/utils/response'\nimport { GithubService } from './github.service'\nimport { InjectUser } from 'src/utils/decorator'\nimport { User, UserWithProfile } from 'src/user/entities/user'\nimport { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'\nimport { GithubJumpLoginDto } from '../dto/github-jump-login.dto'\nimport { JwtAuthGuard } from '../jwt.auth.guard'\nimport { GithubBind } from '../dto/github-bind.dto'\nimport { GithubSigninDto } from '../dto/github-signin.dto'\nimport { AuthProviderState } from '../entities/auth-provider'\n\n@ApiTags('Authentication')\n@Controller('auth/github')\nexport class GithubAuthController {\n  constructor(\n    private readonly authService: AuthenticationService,\n    private readonly userService: UserService,\n    private readonly githubService: GithubService,\n  ) {}\n\n  @ApiOperation({ summary: 'Redirect to the login page of github' })\n  @Get('jump_login')\n  async jumpLogin(\n    @Query() dto: GithubJumpLoginDto,\n    @Response() res: IResponse,\n  ) {\n    const provider = await this.authService.getGithubProvider()\n    if (provider.state !== AuthProviderState.Enabled) {\n      return ResponseUtil.error('github signin not allowed')\n    }\n\n    res.redirect(\n      `https://github.com/login/oauth/authorize?client_id=${\n        provider.config.clientId\n      }&redirect_uri=${encodeURIComponent(dto.redirectUri)}`,\n    )\n  }\n\n  @ApiOperation({ summary: 'Signin by github' })\n  @ApiResponse({ type: ResponseUtil })\n  @Post('signin')\n  async signin(@Body() dto: GithubSigninDto) {\n    const provider = await this.authService.getGithubProvider()\n    if (provider.state !== AuthProviderState.Enabled) {\n      return ResponseUtil.error('github signin not allowed')\n    }\n\n    const githubAuth = createOAuthAppAuth({\n      clientId: provider.config.clientId,\n      clientSecret: provider.config.clientSecret,\n      clientType: 'oauth-app',\n    })\n\n    let auth\n    try {\n      auth = await githubAuth({\n        type: 'oauth-user',\n        code: dto.code,\n      })\n    } catch (e) {\n      console.log(e)\n      return ResponseUtil.error(e.message)\n    }\n\n    if (!auth) {\n      return ResponseUtil.error('github auth failed')\n    }\n\n    const octokit = new Octokit({\n      auth: auth.token,\n    })\n\n    const _profile = await octokit.rest.users.getAuthenticated()\n    if (!_profile.data) {\n      return ResponseUtil.error('github auth failed')\n    }\n\n    const githubProfile = {\n      gid: _profile.data.id,\n      name: _profile.data.name,\n      avatar: _profile.data.avatar_url,\n    }\n\n    const user = await this.userService.findOneByGithub(githubProfile.gid)\n    if (!user) {\n      const token = this.githubService.signGithubTemporaryToken(githubProfile)\n      return ResponseUtil.build(token, 'should bind user')\n    }\n\n    const token = this.authService.getAccessTokenByUser(user)\n    return ResponseUtil.ok(token)\n  }\n\n  @ApiOperation({ summary: 'Bind github' })\n  @ApiResponseObject(UserWithProfile)\n  @UseGuards(JwtAuthGuard)\n  @Post('bind')\n  async bind(@Body() dto: GithubBind, @InjectUser() user: User) {\n    const [ok, githubProfile] = this.githubService.verifyGithubTemporaryToken(\n      dto.token,\n    )\n    if (!ok) {\n      return ResponseUtil.error('invalid token')\n    }\n\n    if (user.github) {\n      return ResponseUtil.error('duplicate bindings to github')\n    }\n\n    const _user = await this.userService.findOneByGithub(githubProfile.gid)\n    if (_user) return ResponseUtil.error('user has been bound')\n\n    await this.userService.updateUser(user._id, {\n      github: githubProfile.gid,\n    })\n\n    if (dto.isRegister) {\n      await this.userService.updateAvatarUrl(githubProfile.avatar, user._id)\n    }\n\n    const res = await this.userService.findOneById(user._id)\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Unbind github' })\n  @ApiResponseObject(UserWithProfile)\n  @UseGuards(JwtAuthGuard)\n  @Post('unbind')\n  async unbind(@InjectUser() user: User) {\n    if (!user.github) {\n      return ResponseUtil.error('not yet bound to github')\n    }\n\n    const res = await this.userService.updateUser(user._id, {\n      github: null,\n    })\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/github/github.service.ts",
    "content": "import { Injectable } from '@nestjs/common'\n\nimport { JwtService } from '@nestjs/jwt'\nimport { UserService } from 'src/user/user.service'\nimport { User } from 'src/user/entities/user'\nimport { GITHUB_SIGNIN_TOKEN_VALIDITY } from 'src/constants'\n\ninterface GithubProfile {\n  gid: number\n  name: string\n  avatar: string\n}\n\n@Injectable()\nexport class GithubService {\n  constructor(\n    private readonly userService: UserService,\n    private readonly jwtService: JwtService,\n  ) {}\n\n  async bindGithub(gid: number, user: User) {\n    const _user = await this.userService.findOneByGithub(gid)\n\n    if (_user) throw new Error('user has been bound')\n\n    const res = await this.userService.updateUser(user._id, {\n      github: gid,\n    })\n\n    return res\n  }\n\n  signGithubTemporaryToken(githubProfile: GithubProfile) {\n    const payload = { sub: githubProfile }\n    const token = this.jwtService.sign(payload, {\n      expiresIn: GITHUB_SIGNIN_TOKEN_VALIDITY,\n    })\n    return token\n  }\n\n  verifyGithubTemporaryToken(token: string): [boolean, GithubProfile | null] {\n    try {\n      const payload = this.jwtService.verify(token)\n      const githubProfile = payload.sub\n      return [true, githubProfile]\n    } catch {\n      return [false, null]\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/jwt.auth.guard.ts",
    "content": "import { Injectable } from '@nestjs/common'\nimport { AuthGuard } from '@nestjs/passport'\n\n@Injectable()\nexport class JwtAuthGuard extends AuthGuard('jwt') {}\n"
  },
  {
    "path": "server/src/authentication/jwt.strategy.ts",
    "content": "import { Injectable } from '@nestjs/common'\nimport { PassportStrategy } from '@nestjs/passport'\nimport { ExtractJwt, Strategy } from 'passport-jwt'\nimport { ServerConfig } from '../constants'\nimport { UserService } from '../user/user.service'\nimport { ObjectId } from 'mongodb'\n\n@Injectable()\nexport class JwtStrategy extends PassportStrategy(Strategy) {\n  constructor(private readonly userService: UserService) {\n    super({\n      jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),\n      ignoreExpiration: false,\n      secretOrKey: ServerConfig.JWT_SECRET,\n    })\n  }\n\n  /**\n   * Turn payload to user object\n   * @param payload\n   * @returns\n   */\n  async validate(payload: any) {\n    const id = new ObjectId(payload.sub as string)\n    const user = await this.userService.findOneById(id)\n    return user\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/phone/phone.controller.ts",
    "content": "import { IRequest } from 'src/utils/interface'\nimport { Body, Controller, Logger, Post, Req } from '@nestjs/common'\nimport { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'\nimport { ResponseUtil } from 'src/utils/response'\nimport { SendPhoneCodeDto } from '../dto/send-phone-code.dto'\nimport { PhoneService } from './phone.service'\nimport { PhoneSigninDto } from '../dto/phone-signin.dto'\nimport { AuthenticationService } from '../authentication.service'\nimport { UserService } from 'src/user/user.service'\nimport { AuthBindingType, AuthProviderBinding } from '../entities/types'\nimport { SmsVerifyCodeType } from '../entities/sms-verify-code'\nimport { SmsService } from './sms.service'\nimport { GetClientIPFromRequest } from 'src/utils/getter'\n\n@ApiTags('Authentication')\n@Controller('auth')\nexport class PhoneController {\n  private readonly logger = new Logger(PhoneController.name)\n\n  constructor(\n    private readonly phoneService: PhoneService,\n    private readonly smsService: SmsService,\n    private readonly authService: AuthenticationService,\n    private readonly userService: UserService,\n  ) {}\n\n  /**\n   * send phone code\n   */\n  @ApiOperation({ summary: 'Send phone verify code' })\n  @ApiResponse({ type: ResponseUtil })\n  @Post('phone/sms/code')\n  async sendCode(@Req() req: IRequest, @Body() dto: SendPhoneCodeDto) {\n    const { phone, type } = dto\n    const ip = GetClientIPFromRequest(req)\n\n    const err = await this.phoneService.sendCode(phone, type, ip)\n    if (err) {\n      return ResponseUtil.error(err)\n    }\n    return ResponseUtil.ok('success')\n  }\n\n  /**\n   * Signin by phone and verify code\n   */\n  @ApiOperation({ summary: 'Signin by phone and verify code' })\n  @ApiResponse({ type: ResponseUtil })\n  @Post('phone/signin')\n  async signin(@Body() dto: PhoneSigninDto) {\n    const { phone, code } = dto\n    // check if code valid\n    const err = await this.smsService.validateCode(\n      phone,\n      code,\n      SmsVerifyCodeType.Signin,\n    )\n    if (err) return ResponseUtil.error(err)\n\n    // check if user exists\n    const user = await this.userService.findOneByPhone(phone)\n    if (user) {\n      const token = this.phoneService.signin(user)\n      return ResponseUtil.ok(token)\n    }\n\n    // user not exist\n    const provider = await this.authService.getPhoneProvider()\n    if (provider.register === false) {\n      return ResponseUtil.error('user not exists')\n    }\n\n    // check if username and password is needed\n    let signupWithUsername = false\n    const bind = provider.bind as any as AuthProviderBinding\n    if (bind.username === AuthBindingType.Required) {\n      const { username, password } = dto\n      signupWithUsername = true\n      if (!username || !password) {\n        return ResponseUtil.error('username and password is required')\n      }\n    }\n\n    // user not exist, signup and signin\n    const newUser = await this.phoneService.signup(dto, signupWithUsername)\n    const data = this.phoneService.signin(newUser)\n    return ResponseUtil.ok(data)\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/phone/phone.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { AuthenticationService } from '../authentication.service'\nimport { PhoneSigninDto } from '../dto/phone-signin.dto'\nimport { hashPassword } from 'src/utils/crypto'\nimport { SmsVerifyCodeType } from '../entities/sms-verify-code'\nimport { User } from 'src/user/entities/user'\nimport {\n  InviteRelation,\n  InviteCode,\n  InviteCodeState,\n} from '../entities/invite-code'\nimport { SystemDatabase } from 'src/system-database'\nimport { UserService } from 'src/user/user.service'\nimport {\n  UserPassword,\n  UserPasswordState,\n} from 'src/user/entities/user-password'\nimport { UserProfile } from 'src/user/entities/user-profile'\nimport { SmsService } from './sms.service'\nimport { AccountService } from 'src/account/account.service'\nimport {\n  AccountChargeOrder,\n  AccountChargePhase,\n  Currency,\n  PaymentChannelType,\n} from 'src/account/entities/account-charge-order'\nimport { TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { ObjectId } from 'mongodb'\nimport { Setting, SettingKey } from 'src/setting/entities/setting'\n\n@Injectable()\nexport class PhoneService {\n  private readonly logger = new Logger(PhoneService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(\n    private readonly smsService: SmsService,\n    private readonly authService: AuthenticationService,\n    private readonly userService: UserService,\n    private readonly accountService: AccountService,\n  ) {}\n\n  /**\n   * Send phone verify code\n   * @param phone phone number\n   * @param type sms type Signin | Signup | ResetPassword\n   * @param ip client ip\n   * @returns\n   */\n  async sendCode(phone: string, type: SmsVerifyCodeType, ip: string) {\n    // check if phone number satisfy the send condition\n    let err = await this.smsService.checkSendable(phone, ip)\n    if (err) {\n      return err\n    }\n\n    // Send sms code\n    const code = Math.floor(Math.random() * 900000 + 100000).toString()\n    err = await this.smsService.sendPhoneCode(phone, code)\n    if (err) {\n      return err\n    }\n\n    // disable previous sms code\n    await this.smsService.disableSameTypeCode(phone, type)\n\n    // Save new sms code to database\n    await this.smsService.saveCode(phone, code, type, ip)\n\n    return null\n  }\n\n  /**\n   * Signup a user by phone\n   * @param dto\n   * @returns\n   */\n  async signup(dto: PhoneSigninDto, withUsername = false) {\n    const { phone, username, password, inviteCode } = dto\n\n    const client = SystemDatabase.client\n    const session = client.startSession()\n\n    try {\n      session.startTransaction()\n      const randomUsername = new ObjectId()\n      // create user\n      const user = await this.db.collection<User>('User').insertOne(\n        {\n          phone,\n          username: username || randomUsername.toString(),\n          createdAt: new Date(),\n          updatedAt: new Date(),\n        },\n        { session },\n      )\n\n      // create invite relation and add invite profit\n      if (inviteCode) {\n        const inviteCodeInfo = await this.db\n          .collection<InviteCode>('InviteCode')\n          .findOne({\n            code: inviteCode,\n            state: InviteCodeState.Enabled,\n          })\n\n        if (inviteCodeInfo) {\n          const account = await this.accountService.findOne(inviteCodeInfo.uid)\n          // get invitation Profit Amount\n          let amount = 0\n          const inviteProfit = await this.db\n            .collection<Setting>('Setting')\n            .findOne({\n              key: SettingKey.InvitationProfit,\n              public: true,\n            })\n          if (inviteProfit) {\n            amount = parseFloat(inviteProfit.value)\n          }\n          // add invite-code charge order\n          await this.db\n            .collection<AccountChargeOrder>('AccountChargeOrder')\n            .insertOne(\n              {\n                accountId: account._id,\n                amount: amount,\n                currency: Currency.CNY,\n                phase: AccountChargePhase.Paid,\n                channel: PaymentChannelType.InviteCode,\n                createdBy: new ObjectId(inviteCodeInfo.uid),\n                lockedAt: TASK_LOCK_INIT_TIME,\n                createdAt: new Date(),\n                updatedAt: new Date(),\n              },\n              { session },\n            )\n\n          const res = await this.accountService.chargeWithTransaction(\n            account._id,\n            amount,\n            'Invitation profit',\n            session,\n          )\n\n          await this.db.collection<InviteRelation>('InviteRelation').insertOne(\n            {\n              uid: user.insertedId,\n              invitedBy: inviteCodeInfo.uid,\n              codeId: inviteCodeInfo._id,\n              createdAt: new Date(),\n              transactionId: res.transaction.insertedId,\n            },\n            { session },\n          )\n        }\n      }\n\n      // create profile\n      await this.db.collection<UserProfile>('UserProfile').insertOne(\n        {\n          uid: user.insertedId,\n          name: username,\n          createdAt: new Date(),\n          updatedAt: new Date(),\n        },\n        { session },\n      )\n\n      if (withUsername) {\n        // create password\n        await this.db.collection<UserPassword>('UserPassword').insertOne(\n          {\n            uid: user.insertedId,\n            password: hashPassword(password),\n            state: UserPasswordState.Active,\n            createdAt: new Date(),\n            updatedAt: new Date(),\n          },\n          { session },\n        )\n      }\n\n      await session.commitTransaction()\n      return await this.userService.findOneById(user.insertedId)\n    } catch (err) {\n      await session.abortTransaction()\n      throw err\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  /**\n   * signin a user, return token and if bind password\n   * @param user user\n   * @returns token and if bind password\n   */\n  signin(user: User) {\n    const token = this.authService.getAccessTokenByUser(user)\n    return token\n  }\n\n  // check if current user has bind password\n  async ifBindPassword(user: User) {\n    const count = await this.db\n      .collection<UserPassword>('UserPassword')\n      .countDocuments({\n        uid: user._id,\n        state: UserPasswordState.Active,\n      })\n\n    return count > 0\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/phone/sms.service.ts",
    "content": "import { AuthenticationService } from '../authentication.service'\nimport { Injectable, Logger } from '@nestjs/common'\nimport Dysmsapi, * as dysmsapi from '@alicloud/dysmsapi20170525'\nimport * as OpenApi from '@alicloud/openapi-client'\nimport * as Util from '@alicloud/tea-util'\nimport {\n  ALISMS_KEY,\n  LIMIT_CODE_PER_IP_PER_DAY,\n  MILLISECONDS_PER_DAY,\n  MILLISECONDS_PER_MINUTE,\n  CODE_VALIDITY,\n} from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport {\n  SmsVerifyCode,\n  SmsVerifyCodeState,\n  SmsVerifyCodeType,\n} from '../entities/sms-verify-code'\n\n@Injectable()\nexport class SmsService {\n  private readonly logger = new Logger(SmsService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(private readonly authService: AuthenticationService) {}\n\n  /**\n   * send sms login code to given phone number\n   * @param dto phone number\n   * @param ip client ip\n   */\n  async sendPhoneCode(phone: string, code: string) {\n    try {\n      this.logger.debug(`send sms code: ${code} to ${phone}`)\n\n      const res = await this.sendAlismsCode(phone, code.toString())\n      if (res.body.code !== 'OK') {\n        return `ALISMS_ERROR: ${res.body.message}`\n      }\n      return null\n    } catch (error) {\n      this.logger.error(error, error.response?.body)\n      return error.message\n    }\n  }\n\n  // check if phone number satisfy the send condition\n  async checkSendable(phone: string, ip: string) {\n    // Check if valid phone number\n    if (!/^1[3456789]\\d{9}$/.test(phone)) {\n      return 'INVALID_PHONE'\n    }\n\n    // Check if phone number has been send sms code in 1 minute\n    const count = await this.db\n      .collection<SmsVerifyCode>('SmsVerifyCode')\n      .countDocuments({\n        phone: phone,\n        createdAt: { $gt: new Date(Date.now() - MILLISECONDS_PER_MINUTE) },\n      })\n\n    if (count > 0) {\n      return 'REQUEST_OVERLIMIT: phone number has been send sms code in 1 minute'\n    }\n\n    // Check if ip has been send sms code beyond 30 times in 24 hours\n    const countIps = await this.db\n      .collection<SmsVerifyCode>('SmsVerifyCode')\n      .countDocuments({\n        ip: ip,\n        createdAt: { $gt: new Date(Date.now() - MILLISECONDS_PER_DAY) },\n      })\n\n    if (countIps > LIMIT_CODE_PER_IP_PER_DAY) {\n      return `REQUEST_OVERLIMIT: ip has been send sms code beyond ${LIMIT_CODE_PER_IP_PER_DAY} times in 24 hours`\n    }\n\n    return null\n  }\n\n  async saveCode(\n    phone: string,\n    code: string,\n    type: SmsVerifyCodeType,\n    ip: string,\n  ) {\n    await this.db.collection<SmsVerifyCode>('SmsVerifyCode').insertOne({\n      phone,\n      code,\n      type,\n      ip,\n      createdAt: new Date(),\n      updatedAt: new Date(),\n      state: SmsVerifyCodeState.Unused,\n    })\n  }\n  // Valid given phone and code with code type\n  async validateCode(phone: string, code: string, type: SmsVerifyCodeType) {\n    const total = await this.db\n      .collection<SmsVerifyCode>('SmsVerifyCode')\n      .countDocuments({\n        phone,\n        code,\n        type,\n        state: SmsVerifyCodeState.Unused,\n        createdAt: { $gt: new Date(Date.now() - CODE_VALIDITY) },\n      })\n\n    if (total === 0) return 'invalid code'\n\n    // Disable verify code after valid\n    await this.disableCode(phone, code, type)\n    return null\n  }\n\n  // Disable verify code\n  async disableCode(phone: string, code: string, type: SmsVerifyCodeType) {\n    await this.db\n      .collection<SmsVerifyCode>('SmsVerifyCode')\n      .updateMany(\n        { phone, code, type, state: SmsVerifyCodeState.Unused },\n        { $set: { state: SmsVerifyCodeState.Used } },\n      )\n  }\n\n  // Disable same type verify code\n  async disableSameTypeCode(phone: string, type: SmsVerifyCodeType) {\n    await this.db\n      .collection<SmsVerifyCode>('SmsVerifyCode')\n      .updateMany(\n        { phone, type, state: SmsVerifyCodeState.Unused },\n        { $set: { state: SmsVerifyCodeState.Used } },\n      )\n  }\n\n  // send sms code to phone using alisms\n  private async sendAlismsCode(phone: string, code: string) {\n    const { accessKeyId, accessKeySecret, templateCode, signName, endpoint } =\n      await this.loadAlismsConfig()\n\n    const sendSmsRequest = new dysmsapi.SendSmsRequest({\n      phoneNumbers: phone,\n      signName,\n      templateCode,\n      templateParam: `{\"code\":${code}}`,\n    })\n\n    const config = new OpenApi.Config({\n      accessKeyId,\n      accessKeySecret,\n      endpoint,\n    })\n\n    const client = new Dysmsapi(config)\n    const runtime = new Util.RuntimeOptions({})\n    return await client.sendSmsWithOptions(sendSmsRequest, runtime)\n  }\n\n  // load alisms config from database\n  private async loadAlismsConfig() {\n    const phoneProvider = await this.authService.getPhoneProvider()\n    return phoneProvider.config[ALISMS_KEY]\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/user-passwd/user-password.controller.ts",
    "content": "import { AuthenticationService } from '../authentication.service'\nimport { UserPasswordService } from './user-password.service'\nimport { Body, Controller, Logger, Post } from '@nestjs/common'\nimport { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'\nimport { ResponseUtil } from 'src/utils/response'\nimport { UserService } from '../../user/user.service'\nimport { PasswdSignupDto } from '../dto/passwd-signup.dto'\nimport { PasswdSigninDto } from '../dto/passwd-signin.dto'\nimport { AuthBindingType, AuthProviderBinding } from '../entities/types'\nimport { SmsService } from '../phone/sms.service'\nimport { PasswdResetDto } from '../dto/passwd-reset.dto'\nimport { PasswdCheckDto } from '../dto/passwd-check.dto'\nimport { EmailService } from '../email/email.service'\nimport { EmailVerifyCodeType } from '../entities/email-verify-code'\nimport { SmsVerifyCodeType } from '../entities/sms-verify-code'\n\n@ApiTags('Authentication')\n@Controller('auth')\nexport class UserPasswordController {\n  private readonly logger = new Logger(UserPasswordService.name)\n  constructor(\n    private readonly userService: UserService,\n    private readonly passwdService: UserPasswordService,\n    private readonly authService: AuthenticationService,\n    private readonly smsService: SmsService,\n    private readonly emailService: EmailService,\n  ) {}\n\n  /**\n   * Signup by username and password\n   */\n  @ApiOperation({ summary: 'Signup by user-password' })\n  @ApiResponse({ type: ResponseUtil })\n  @Post('passwd/signup')\n  async signup(@Body() dto: PasswdSignupDto) {\n    const { username, password, phone, email, inviteCode, code } = dto\n    // check if user exists\n    const doc = await this.userService.findOneByUsername(username)\n    if (doc) {\n      return ResponseUtil.error('user already exists')\n    }\n\n    // check if register is allowed\n    const provider = await this.authService.getPasswdProvider()\n    if (provider.register === false) {\n      return ResponseUtil.error('register is not allowed')\n    }\n\n    // valid phone code if needed\n    const bind = provider.bind as any as AuthProviderBinding\n    if (bind.phone === AuthBindingType.Required) {\n      // valid phone has been binded\n      const user = await this.userService.findOneByPhone(phone)\n      if (user) {\n        return ResponseUtil.error('phone has been binded')\n      }\n      const err = await this.smsService.validateCode(\n        phone,\n        code,\n        SmsVerifyCodeType.Signup,\n      )\n      if (err) {\n        return ResponseUtil.error(err)\n      }\n    }\n\n    // valid email code if needed\n    if (bind.email === AuthBindingType.Required) {\n      // valid email has been binded\n      const user = await this.userService.findOneByEmail(email)\n      if (user) {\n        return ResponseUtil.error('email has been binded')\n      }\n      const err = await this.emailService.validateCode(\n        email,\n        code,\n        EmailVerifyCodeType.Signup,\n      )\n      if (err) {\n        return ResponseUtil.error(err)\n      }\n    }\n\n    // signup user\n    const user = await this.passwdService.signup(\n      username,\n      password,\n      phone,\n      email,\n      inviteCode,\n    )\n\n    // signin for created user\n    const token = this.passwdService.signin(user)\n    if (!token) {\n      return ResponseUtil.error('failed to get access token')\n    }\n    return ResponseUtil.ok({ token, user })\n  }\n\n  /**\n   * Signin by username and password\n   */\n  @ApiOperation({ summary: 'Signin by user-password' })\n  @ApiResponse({ type: ResponseUtil })\n  @Post('passwd/signin')\n  async signin(@Body() dto: PasswdSigninDto) {\n    // check if user exists\n    const user = await this.userService.findOneByUsernameOrPhoneOrEmail(\n      dto.username,\n    )\n    if (!user) {\n      return ResponseUtil.error('user not found')\n    }\n\n    // check if password is correct\n    const err = await this.passwdService.validatePassword(\n      user._id,\n      dto.password,\n    )\n    if (err) {\n      return ResponseUtil.error(err)\n    }\n\n    // signin for user\n    const token = await this.passwdService.signin(user)\n    if (!token) {\n      return ResponseUtil.error('failed to get access token')\n    }\n    return ResponseUtil.ok(token)\n  }\n\n  /**\n   * Reset password\n   */\n  @ApiOperation({ summary: 'Reset password' })\n  @ApiResponse({ type: ResponseUtil })\n  @Post('passwd/reset')\n  async reset(@Body() dto: PasswdResetDto) {\n    // valid phone code\n    const { phone, code, email } = dto\n    if (!phone && !email) {\n      return ResponseUtil.error('phone or email should be provided')\n    }\n\n    if (phone) {\n      const err = await this.smsService.validateCode(\n        phone,\n        code,\n        SmsVerifyCodeType.ResetPassword,\n      )\n      if (err) {\n        return ResponseUtil.error(err)\n      }\n    }\n\n    if (email) {\n      const err = await this.emailService.validateCode(\n        email,\n        code,\n        EmailVerifyCodeType.ResetPassword,\n      )\n      if (err) {\n        return ResponseUtil.error(err)\n      }\n    }\n\n    // find user by phone or email\n    const user = phone\n      ? await this.userService.findOneByPhone(phone)\n      : await this.userService.findOneByEmail(email)\n    if (!user) {\n      return ResponseUtil.error('user not found')\n    }\n\n    // reset password\n    await this.passwdService.resetPassword(user._id, dto.password)\n    return ResponseUtil.ok('success')\n  }\n\n  /**\n   * Check if user-password is set\n   */\n  @ApiOperation({ summary: 'Check if user-password is set' })\n  @ApiResponse({ type: ResponseUtil })\n  @Post('passwd/check')\n  async check(@Body() dto: PasswdCheckDto) {\n    const { username } = dto\n    // check if user exists\n    const user = await this.userService.findOneByUsernameOrPhoneOrEmail(\n      username,\n    )\n    if (!user) {\n      return ResponseUtil.error('user not found')\n    }\n    // find if set password\n    const hasPasswd = await this.passwdService.hasPassword(user._id)\n\n    return ResponseUtil.ok(hasPasswd)\n  }\n}\n"
  },
  {
    "path": "server/src/authentication/user-passwd/user-password.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { hashPassword } from 'src/utils/crypto'\nimport { AuthenticationService } from '../authentication.service'\nimport { SystemDatabase } from 'src/system-database'\nimport { User } from 'src/user/entities/user'\nimport {\n  UserPassword,\n  UserPasswordState,\n} from 'src/user/entities/user-password'\nimport {\n  InviteCode,\n  InviteRelation,\n  InviteCodeState,\n} from '../entities/invite-code'\nimport { UserProfile } from 'src/user/entities/user-profile'\nimport { UserService } from 'src/user/user.service'\nimport { ObjectId } from 'mongodb'\nimport { AccountService } from 'src/account/account.service'\nimport {\n  AccountChargeOrder,\n  AccountChargePhase,\n  Currency,\n  PaymentChannelType,\n} from 'src/account/entities/account-charge-order'\nimport { TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { Setting, SettingKey } from 'src/setting/entities/setting'\n\n@Injectable()\nexport class UserPasswordService {\n  private readonly logger = new Logger(UserPasswordService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(\n    private readonly authService: AuthenticationService,\n    private readonly userService: UserService,\n    private readonly accountService: AccountService,\n  ) {}\n\n  // Signup by username and password\n  async signup(\n    username: string,\n    password: string,\n    phone: string,\n    email: string,\n    inviteCode: string,\n  ) {\n    const client = SystemDatabase.client\n    const session = client.startSession()\n\n    try {\n      session.startTransaction()\n      // create user\n      const user = await this.db.collection<User>('User').insertOne(\n        {\n          username,\n          phone,\n          email,\n          createdAt: new Date(),\n          updatedAt: new Date(),\n        },\n        { session },\n      )\n\n      // create password\n      await this.db.collection<UserPassword>('UserPassword').insertOne(\n        {\n          uid: user.insertedId,\n          password: hashPassword(password),\n          state: UserPasswordState.Active,\n          createdAt: new Date(),\n          updatedAt: new Date(),\n        },\n        { session },\n      )\n\n      // create invite relation and add invite profit\n      if (inviteCode) {\n        const inviteCodeInfo = await this.db\n          .collection<InviteCode>('InviteCode')\n          .findOne({\n            code: inviteCode,\n            state: InviteCodeState.Enabled,\n          })\n\n        if (inviteCodeInfo) {\n          const account = await this.accountService.findOne(inviteCodeInfo.uid)\n          // get invitation Profit Amount\n          let amount = 0\n          const inviteProfit = await this.db\n            .collection<Setting>('Setting')\n            .findOne({\n              key: SettingKey.InvitationProfit,\n              public: true,\n            })\n          if (inviteProfit) {\n            amount = parseFloat(inviteProfit.value)\n          }\n          // add invite-code charge order\n          await this.db\n            .collection<AccountChargeOrder>('AccountChargeOrder')\n            .insertOne(\n              {\n                accountId: account._id,\n                amount: amount,\n                currency: Currency.CNY,\n                phase: AccountChargePhase.Paid,\n                channel: PaymentChannelType.InviteCode,\n                createdBy: new ObjectId(inviteCodeInfo.uid),\n                lockedAt: TASK_LOCK_INIT_TIME,\n                createdAt: new Date(),\n                updatedAt: new Date(),\n              },\n              { session },\n            )\n\n          const res = await this.accountService.chargeWithTransaction(\n            account._id,\n            amount,\n            'Invitation profit',\n            session,\n          )\n\n          await this.db.collection<InviteRelation>('InviteRelation').insertOne(\n            {\n              uid: user.insertedId,\n              invitedBy: inviteCodeInfo.uid,\n              codeId: inviteCodeInfo._id,\n              createdAt: new Date(),\n              transactionId: res.transaction.insertedId,\n            },\n            { session },\n          )\n        }\n      }\n\n      // create profile\n      await this.db.collection<UserProfile>('UserProfile').insertOne(\n        {\n          uid: user.insertedId,\n          name: username,\n          createdAt: new Date(),\n          updatedAt: new Date(),\n        },\n        { session },\n      )\n\n      await session.commitTransaction()\n      return await this.userService.findOneById(user.insertedId)\n    } catch (error) {\n      await session.abortTransaction()\n      throw error\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  // Signin for user, means get access token\n  signin(user: User) {\n    return this.authService.getAccessTokenByUser(user)\n  }\n\n  // validate if password is correct\n  async validatePassword(uid: ObjectId, password: string) {\n    const userPasswd = await this.db\n      .collection<UserPassword>('UserPassword')\n      .findOne({ uid, state: UserPasswordState.Active })\n\n    if (!userPasswd) {\n      return 'password not exists'\n    }\n\n    if (userPasswd.password !== hashPassword(password)) {\n      return 'password incorrect'\n    }\n\n    return null\n  }\n\n  // reset password\n  async resetPassword(uid: ObjectId, password: string) {\n    const client = SystemDatabase.client\n    const session = client.startSession()\n\n    try {\n      session.startTransaction()\n      // disable old password\n      await this.db\n        .collection<UserPassword>('UserPassword')\n        .updateMany(\n          { uid },\n          { $set: { state: UserPasswordState.Inactive } },\n          { session },\n        )\n\n      // create new password\n      await this.db.collection<UserPassword>('UserPassword').insertOne(\n        {\n          uid,\n          password: hashPassword(password),\n          state: UserPasswordState.Active,\n          createdAt: new Date(),\n          updatedAt: new Date(),\n        },\n        { session },\n      )\n      await session.commitTransaction()\n    } catch (error) {\n      await session.abortTransaction()\n      throw error\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  // check if set password\n  async hasPassword(uid: ObjectId) {\n    const res = await this.db\n      .collection<UserPassword>('UserPassword')\n      .findOne({ uid, state: UserPasswordState.Active })\n\n    return res ? true : false\n  }\n}\n"
  },
  {
    "path": "server/src/billing/billing-creation-task.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport {\n  Application,\n  ApplicationState,\n} from 'src/application/entities/application'\nimport { ServerConfig, TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport {\n  ApplicationBilling,\n  ApplicationBillingState,\n} from './entities/application-billing'\nimport { CalculatePriceDto } from './dto/calculate-price.dto'\nimport { BillingService } from './billing.service'\nimport { ApplicationBundle } from 'src/application/entities/application-bundle'\nimport { BundleService } from 'src/application/bundle.service'\n\n@Injectable()\nexport class BillingCreationTaskService {\n  private readonly logger = new Logger(BillingCreationTaskService.name)\n  private readonly lockTimeout = 15 // in second\n  private readonly billingInterval = 60 * 60 // in second\n  private lastTick = TASK_LOCK_INIT_TIME\n\n  constructor(\n    private readonly billing: BillingService,\n    private readonly bundleService: BundleService,\n  ) {}\n\n  @Cron(CronExpression.EVERY_MINUTE)\n  async tick() {\n    // If billing creation task is disabled, return\n    if (ServerConfig.DISABLED_BILLING_CREATION_TASK) {\n      this.logger.warn('Skip billing creation task due to config')\n      return\n    }\n\n    // If last tick is less than 1 minute ago, return\n    // Limit concurrency? But then there's only ever one task, even with 3 server replicas. !!!\n    if (Date.now() - this.lastTick.getTime() < 1000 * 60) {\n      this.logger.debug(\n        `Skip billing creation task due to last tick time ${this.lastTick.toISOString()}`,\n      )\n      return\n    }\n\n    // Handle application billing creation\n    this.logger.debug('Start handling application billing creation')\n    await this.handleApplicationBillingCreating()\n  }\n\n  private async handleApplicationBillingCreating() {\n    this.lastTick = new Date()\n\n    const db = SystemDatabase.db\n    const res = await db\n      .collection<Application>('Application')\n      .findOneAndUpdate(\n        {\n          billingLockedAt: {\n            $lt: new Date(Date.now() - 1000 * this.lockTimeout),\n          },\n          latestBillingTime: {\n            $lt: new Date(Date.now() - 1000 * this.billingInterval),\n          },\n        },\n        { $set: { billingLockedAt: new Date() } },\n      )\n\n    if (!res.value) {\n      this.logger.debug('No application found for billing')\n      return\n    }\n\n    const app = res.value\n    this.logger.debug(`Application found for billing: ${app.appid}`)\n\n    try {\n      const billingTime = await this.createApplicationBilling(app)\n      if (!billingTime) {\n        this.logger.warn(`No billing time found for application: ${app.appid}`)\n        return\n      }\n    } catch (err) {\n      this.logger.error(\n        'handleApplicationBillingCreating error',\n        err,\n        err.stack,\n      )\n    } finally {\n      this.handleApplicationBillingCreating()\n    }\n  }\n\n  private async createApplicationBilling(app: Application): Promise<Date> {\n    this.logger.debug(`Start creating billing for application: ${app.appid}`)\n\n    const appid = app.appid\n\n    // determine latest billing time & next metering time\n    const latestBillingTime = app.latestBillingTime\n    const nextMeteringTime = new Date(\n      latestBillingTime.getTime() + 1000 * this.billingInterval,\n    )\n\n    if (nextMeteringTime > new Date()) {\n      this.logger.warn(`No next metering time for application: ${appid}`)\n      return\n    }\n\n    const meteringData = await this.billing.getMeteringData(\n      app,\n      latestBillingTime,\n      nextMeteringTime,\n    )\n    if (meteringData.cpu === 0 && meteringData.memory === 0) {\n      if (\n        [ApplicationState.Running, ApplicationState.Restarting].includes(\n          app.state,\n        )\n      ) {\n        this.logger.warn(`No metering data found for application: ${appid}`)\n      }\n    }\n\n    // get application bundle\n    const bundle = await this.bundleService.findOne(appid)\n\n    if (!bundle) {\n      this.logger.warn(`No bundle found for application: ${appid}`)\n      return\n    }\n\n    // calculate billing price\n    const priceInput = this.buildCalculatePriceInput(app, meteringData, bundle)\n    const priceResult = await this.billing.calculatePrice(priceInput)\n\n    // free trial\n    if (bundle.isTrialTier) {\n      priceResult.total = 0\n    }\n\n    // create billing\n    const startAt = new Date(\n      nextMeteringTime.getTime() - 1000 * this.billingInterval,\n    )\n\n    const db = SystemDatabase.db\n    const client = SystemDatabase.client\n    const session = client.startSession()\n    session.startTransaction()\n\n    try {\n      const inserted = await db\n        .collection<ApplicationBilling>('ApplicationBilling')\n        .insertOne(\n          {\n            appid,\n            state:\n              priceResult.total === 0\n                ? ApplicationBillingState.Done\n                : ApplicationBillingState.Pending,\n            amount: priceResult.total,\n            detail: {\n              cpu: {\n                usage: priceInput.cpu,\n                amount: priceResult.cpu,\n              },\n              memory: {\n                usage: priceInput.memory,\n                amount: priceResult.memory,\n              },\n              databaseCapacity: {\n                usage: priceInput.databaseCapacity,\n                amount: priceResult.databaseCapacity,\n              },\n              storageCapacity: {\n                usage: priceInput.storageCapacity,\n                amount: priceResult.storageCapacity,\n              },\n              dedicatedDatabaseCPU: {\n                usage: priceInput.dedicatedDatabase.cpu,\n                amount: priceResult.dedicatedDatabase.cpu,\n              },\n              dedicatedDatabaseMemory: {\n                usage: priceInput.dedicatedDatabase.memory,\n                amount: priceResult.dedicatedDatabase.memory,\n              },\n              dedicatedDatabaseCapacity: {\n                usage: priceInput.dedicatedDatabase.capacity,\n                amount: priceResult.dedicatedDatabase.capacity,\n              },\n              networkTraffic: {\n                usage: priceInput.networkTraffic,\n                amount: priceResult.networkTraffic,\n              },\n            },\n            startAt: startAt,\n            endAt: nextMeteringTime,\n            lockedAt: TASK_LOCK_INIT_TIME,\n            createdAt: new Date(),\n            updatedAt: new Date(),\n            createdBy: app.createdBy,\n          },\n          {\n            session,\n          },\n        )\n\n      const billingTime = nextMeteringTime\n      // unlock billing if billing time is not the latest\n      if (Date.now() - billingTime.getTime() > 1000 * this.billingInterval) {\n        this.logger.warn(\n          `Unlocking billing for application: ${app.appid} since billing time is not the latest`,\n        )\n\n        await db.collection<Application>('Application').updateOne(\n          { appid: app.appid },\n          {\n            $set: {\n              billingLockedAt: TASK_LOCK_INIT_TIME,\n              latestBillingTime: billingTime,\n            },\n          },\n          { session },\n        )\n      } else {\n        await db.collection<Application>('Application').updateOne(\n          { appid: app.appid },\n          {\n            $set: {\n              latestBillingTime: billingTime,\n            },\n          },\n          { session },\n        )\n      }\n      await session.commitTransaction()\n\n      this.logger.log(\n        `Billing creation complete for application: ${appid} from ${startAt.toISOString()} to ${nextMeteringTime.toISOString()} for billing ${\n          inserted.insertedId\n        }`,\n      )\n      return billingTime\n    } catch (err) {\n      await session.abortTransaction()\n      throw err\n    } finally {\n      session.endSession()\n    }\n  }\n\n  private buildCalculatePriceInput(\n    app: Application,\n    meteringData: any,\n    bundle: ApplicationBundle,\n  ) {\n    const dto = new CalculatePriceDto()\n    dto.regionId = app.regionId.toString()\n\n    dto.cpu = meteringData.cpu\n    dto.memory = meteringData.memory\n    dto.storageCapacity = bundle.resource.storageCapacity\n    dto.databaseCapacity = bundle.resource.databaseCapacity\n    dto.networkTraffic = meteringData.networkTraffic || 0\n\n    dto.dedicatedDatabase = {\n      cpu: bundle.resource.dedicatedDatabase?.limitCPU || 0,\n      memory: bundle.resource.dedicatedDatabase?.limitMemory || 0,\n      capacity: bundle.resource.dedicatedDatabase?.capacity || 0,\n      replicas: bundle.resource.dedicatedDatabase?.replicas || 0,\n    }\n\n    if (dto.cpu === 0 && dto.memory === 0) {\n      dto.dedicatedDatabase.cpu = 0\n      dto.dedicatedDatabase.memory = 0\n    }\n\n    return dto\n  }\n}\n"
  },
  {
    "path": "server/src/billing/billing-payment-task.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport {\n  Application,\n  ApplicationPhase,\n  ApplicationState,\n} from 'src/application/entities/application'\nimport { ServerConfig, TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport {\n  ApplicationBilling,\n  ApplicationBillingState,\n} from './entities/application-billing'\nimport * as assert from 'assert'\nimport { Account } from 'src/account/entities/account'\nimport { AccountTransaction } from 'src/account/entities/account-transaction'\nimport Decimal from 'decimal.js'\nimport { NotificationService } from 'src/notification/notification.service'\nimport { NotificationType } from 'src/notification/notification-type'\nimport {\n  DedicatedDatabase,\n  DedicatedDatabasePhase,\n  DedicatedDatabaseState,\n} from 'src/database/entities/dedicated-database'\n\n@Injectable()\nexport class BillingPaymentTaskService {\n  private readonly logger = new Logger(BillingPaymentTaskService.name)\n  private readonly lockTimeout = 60 * 60 // in second\n  private lastTick = TASK_LOCK_INIT_TIME\n\n  constructor(private readonly notificationService: NotificationService) {}\n\n  @Cron(CronExpression.EVERY_MINUTE)\n  async tick() {\n    if (ServerConfig.DISABLED_BILLING_PAYMENT_TASK) {\n      this.logger.warn('Skip billing payment task due to config')\n      return\n    }\n\n    // If last tick is less than 1 minute ago, return\n    if (Date.now() - this.lastTick.getTime() < 1000 * 60) {\n      this.logger.debug(\n        `Skip billing payment task due to last tick time ${this.lastTick.toISOString()}}`,\n      )\n      return\n    }\n\n    this.logger.debug('Start handling pending application billing')\n    this.handlePendingApplicationBilling().catch((err) => {\n      this.logger.error(\n        'Error occurred while handling pending application billing',\n        err,\n      )\n    })\n  }\n\n  private async handlePendingApplicationBilling() {\n    this.lastTick = new Date()\n\n    const db = SystemDatabase.db\n    const res = await db\n      .collection<ApplicationBilling>('ApplicationBilling')\n      .findOneAndUpdate(\n        {\n          state: ApplicationBillingState.Pending,\n          lockedAt: {\n            $lt: new Date(Date.now() - 1000 * this.lockTimeout),\n          },\n        },\n        { $set: { lockedAt: new Date() } },\n      )\n\n    if (!res.value) {\n      this.logger.debug('No pending application billing found')\n      return\n    }\n\n    const billing = res.value\n\n    // pay billing\n    const session = SystemDatabase.client.startSession()\n\n    try {\n      await session.withTransaction(async () => {\n        // get account\n        const account = await db\n          .collection<Account>('Account')\n          .findOne({ createdBy: billing.createdBy }, { session })\n\n        assert(account, `Account ${billing.createdBy} not found`)\n\n        // update the account balance\n        const amount = new Decimal(billing.amount).mul(100).toNumber()\n\n        const updated = await db\n          .collection<Account>('Account')\n          .updateOne(\n            { _id: account._id },\n            { $inc: { balance: -amount }, $set: { updatedAt: new Date() } },\n            { session },\n          )\n\n        assert(updated.modifiedCount, `Account ${account._id} not found`)\n\n        const newBalance = account.balance - amount\n\n        // create transaction\n        await db.collection<AccountTransaction>('AccountTransaction').insertOne(\n          {\n            accountId: account._id,\n            amount: -amount,\n            balance: newBalance,\n            message: `Application ${billing.appid} billing`,\n            billingId: billing._id,\n            createdAt: new Date(),\n          },\n          { session },\n        )\n\n        // update billing state\n        await db\n          .collection<ApplicationBilling>('ApplicationBilling')\n          .updateOne(\n            { _id: billing._id },\n            { $set: { state: ApplicationBillingState.Done } },\n            { session },\n          )\n\n        this.logger.log(\n          `Billing payment done for application ${\n            billing.appid\n          } from ${billing.startAt?.toISOString()} to ${billing.endAt?.toISOString()} for billing ${\n            billing._id\n          }`,\n        )\n\n        // stop application if balance is not enough\n        if (newBalance < 0) {\n          // if owed, add an owe flag\n          if (!account.owedAt) {\n            await db.collection<Account>('Account').updateOne(\n              {\n                _id: account._id,\n              },\n              {\n                $set: {\n                  owedAt: new Date(),\n                },\n              },\n              { session },\n            )\n          }\n\n          const res = await db.collection<Application>('Application').updateOne(\n            { appid: billing.appid, state: ApplicationState.Running },\n            {\n              $set: {\n                phase: ApplicationPhase.Stopping,\n                state: ApplicationState.Stopped,\n                forceStoppedAt: new Date(),\n              },\n            },\n            { session },\n          )\n\n          const ddb = await db\n            .collection<DedicatedDatabase>('DedicatedDatabase')\n            .findOne(\n              {\n                appid: billing.appid,\n              },\n              { session },\n            )\n\n          if (ddb) {\n            await db\n              .collection<DedicatedDatabase>('DedicatedDatabase')\n              .updateOne(\n                {\n                  appid: billing.appid,\n                },\n                {\n                  $set: {\n                    phase: DedicatedDatabasePhase.Stopping,\n                    state: DedicatedDatabaseState.Stopped,\n                  },\n                },\n                { session },\n              )\n          }\n\n          if (res.modifiedCount > 0) {\n            this.logger.warn(\n              `Application ${billing.appid} stopped due to insufficient balance`,\n            )\n\n            this.notificationService.notify({\n              type: NotificationType.InsufficientBalance,\n              uid: account.createdBy,\n              payload: {\n                appid: billing.appid,\n              },\n            })\n          }\n        }\n      })\n    } catch (error) {\n      this.logger.error(\n        'Error occurred while handling pending application billing',\n        error,\n        error.stack,\n      )\n    } finally {\n      await session.endSession()\n      this.handlePendingApplicationBilling()\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/billing/billing.controller.ts",
    "content": "import { Controller, Get, Logger, Query, UseGuards } from '@nestjs/common'\nimport { ApiBearerAuth, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger'\nimport {\n  ApiResponseArray,\n  ApiResponseObject,\n  ApiResponsePagination,\n  ResponseUtil,\n} from 'src/utils/response'\nimport { BillingService } from './billing.service'\nimport { BillingQuery } from './interface/billing-query.interface'\n\nimport { ApplicationBilling } from './entities/application-billing'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { BillingsByDayDto } from './dto/billings.dto'\nimport { InjectUser } from 'src/utils/decorator'\nimport { User } from 'src/user/entities/user'\n\n@ApiTags('Billing')\n@ApiBearerAuth('Authorization')\n@Controller('billings')\nexport class BillingController {\n  private readonly logger = new Logger(BillingController.name)\n\n  constructor(private readonly billing: BillingService) {}\n\n  /**\n   * Get my billings\n   */\n  @ApiOperation({ summary: 'Get billings of an application' })\n  @ApiResponsePagination(ApplicationBilling)\n  @UseGuards(JwtAuthGuard)\n  @ApiQuery({\n    name: 'appid',\n    type: String,\n    description: 'appid',\n    required: false,\n    isArray: true,\n  })\n  @ApiQuery({\n    name: 'startTime',\n    type: String,\n    description: 'pagination start time',\n    required: false,\n    example: '2021-01-01T00:00:00.000Z',\n  })\n  @ApiQuery({\n    name: 'endTime',\n    type: String,\n    description: 'pagination end time',\n    required: false,\n    example: '2022-01-01T00:00:00.000Z',\n  })\n  @ApiQuery({\n    name: 'page',\n    type: Number,\n    description: 'page number',\n    required: false,\n    example: 1,\n  })\n  @ApiQuery({\n    name: 'pageSize',\n    type: Number,\n    description: 'page size',\n    required: false,\n    example: 10,\n  })\n  @ApiQuery({\n    name: 'state',\n    type: String,\n    description: 'billing state',\n    required: false,\n  })\n  @Get()\n  async findAll(\n    @InjectUser() user: User,\n    @Query('appid') appid?: string[],\n    @Query('state') state?: string,\n    @Query('startTime') startTime?: string,\n    @Query('endTime') endTime?: string,\n    @Query('page') page?: number,\n    @Query('pageSize') pageSize?: number,\n  ) {\n    const query: BillingQuery = {\n      page: page || 1,\n      pageSize: pageSize || 10,\n    }\n\n    if (query.pageSize > 100) {\n      query.pageSize = 100\n    }\n\n    if (appid) {\n      query.appid = appid\n    }\n\n    if (state) {\n      query.state = state\n    }\n\n    if (startTime) {\n      query.startTime = new Date(startTime)\n    }\n\n    if (endTime) {\n      query.endTime = new Date(endTime)\n    }\n\n    const billings = await this.billing.query(user._id, query)\n    return ResponseUtil.ok(billings)\n  }\n\n  /**\n   * Get my total expense\n   */\n  @ApiOperation({ summary: 'Get my total amount' })\n  @ApiResponseObject(Number)\n  @UseGuards(JwtAuthGuard)\n  @Get('amount')\n  async getExpense(\n    @InjectUser() user: User,\n    @Query('startTime') startTime?: number,\n    @Query('endTime') endTime?: number,\n    @Query('appid') appid?: string[],\n    @Query('state') state?: string,\n  ) {\n    // default is 24 hours\n    const query: BillingQuery = {\n      startTime: startTime\n        ? new Date(startTime)\n        : new Date(new Date().getTime() - 24 * 60 * 60 * 1000),\n      endTime: endTime ? new Date(endTime) : new Date(),\n    }\n    if (appid) {\n      query.appid = appid\n    }\n    if (state) {\n      query.state = state\n    }\n\n    const expenseTotal = await this.billing.getExpense(user._id, query)\n    return ResponseUtil.ok(expenseTotal)\n  }\n\n  @ApiOperation({ summary: 'Get my total amount by day' })\n  @ApiResponseArray(BillingsByDayDto)\n  @UseGuards(JwtAuthGuard)\n  @Get('amounts')\n  async getExpenseByDay(\n    @InjectUser() user: User,\n    @Query('startTime') startTime?: number,\n    @Query('endTime') endTime?: number,\n    @Query('appid') appid?: string[],\n    @Query('state') state?: string,\n  ) {\n    // default is 7 days\n    const query: BillingQuery = {\n      startTime: startTime\n        ? new Date(startTime)\n        : new Date(new Date().getTime() - 24 * 60 * 60 * 1000 * 7),\n      endTime: endTime ? new Date(endTime) : new Date(),\n    }\n    if (appid) {\n      query.appid = appid\n    }\n    if (state) {\n      query.state = state\n    }\n\n    const expenseTotal = await this.billing.getExpenseByDay(user._id, query)\n    return ResponseUtil.ok(expenseTotal)\n  }\n}\n"
  },
  {
    "path": "server/src/billing/billing.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { BillingService } from './billing.service'\nimport { ResourceService } from './resource.service'\nimport { BillingController } from './billing.controller'\nimport { BillingCreationTaskService } from './billing-creation-task.service'\nimport { ApplicationModule } from 'src/application/application.module'\nimport { ResourceController } from './resource.controller'\nimport { BillingPaymentTaskService } from './billing-payment-task.service'\nimport { DatabaseModule } from 'src/database/database.module'\nimport { RegionModule } from 'src/region/region.module'\nimport { StorageModule } from 'src/storage/storage.module'\n\n@Module({\n  imports: [ApplicationModule, DatabaseModule, RegionModule, StorageModule],\n  controllers: [BillingController, ResourceController],\n  providers: [\n    BillingService,\n    ResourceService,\n    BillingCreationTaskService,\n    BillingPaymentTaskService,\n  ],\n  exports: [BillingService, ResourceService],\n})\nexport class BillingModule {}\n"
  },
  {
    "path": "server/src/billing/billing.service.ts",
    "content": "import { Injectable } from '@nestjs/common'\nimport { SystemDatabase } from 'src/system-database'\nimport { ResourceService } from './resource.service'\nimport { ObjectId } from 'mongodb'\nimport { ResourceType } from './entities/resource'\nimport { Decimal } from 'decimal.js'\nimport * as assert from 'assert'\nimport { ApplicationBilling } from './entities/application-billing'\nimport { CalculatePriceDto } from './dto/calculate-price.dto'\nimport { BillingQuery } from './interface/billing-query.interface'\nimport { PrometheusDriver } from 'prometheus-query'\nimport {\n  Application,\n  ApplicationState,\n} from 'src/application/entities/application'\nimport { RegionService } from 'src/region/region.service'\nimport { Traffic } from './entities/network-traffic'\nimport { TrafficDatabase } from 'src/system-database'\n\n@Injectable()\nexport class BillingService {\n  private readonly db = SystemDatabase.db\n  private readonly trafficDB = TrafficDatabase.db\n\n  constructor(\n    private readonly resource: ResourceService,\n    private readonly region: RegionService,\n  ) {}\n\n  async query(userId: ObjectId, condition?: BillingQuery) {\n    const query = { createdBy: userId }\n\n    if (condition.startTime) {\n      query['startAt'] = { $gte: condition.startTime }\n    }\n\n    if (condition.endTime) {\n      if (condition.startTime) {\n        query['startAt']['$lte'] = condition.endTime\n      } else {\n        query['startAt'] = { $lte: condition.endTime }\n      }\n    }\n\n    if (condition.appid) {\n      query['appid'] = { $in: condition.appid }\n    }\n\n    if (condition.state) {\n      query['state'] = condition.state\n    }\n\n    const { page, pageSize } = condition\n\n    const total = await this.db\n      .collection<ApplicationBilling>('ApplicationBilling')\n      .countDocuments(query)\n\n    const billings = await this.db\n      .collection<ApplicationBilling>('ApplicationBilling')\n      .find(query)\n      .skip((page - 1) * pageSize)\n      .limit(pageSize)\n      .sort({ startAt: -1 })\n      .toArray()\n\n    const res = {\n      list: billings,\n      total: total,\n      page,\n      pageSize,\n    }\n\n    return res\n  }\n\n  async findOne(appid: string, id: ObjectId) {\n    const billing = await this.db\n      .collection<ApplicationBilling>('ApplicationBilling')\n      .findOne({ _id: id })\n\n    return billing\n  }\n\n  async getExpenseByDay(userId: ObjectId, condition?: BillingQuery) {\n    const query = { createdBy: userId }\n\n    if (condition.startTime) {\n      query['startAt'] = { $gte: condition.startTime }\n    }\n\n    if (condition.endTime) {\n      if (condition.startTime) {\n        query['startAt']['$lte'] = condition.endTime\n      } else {\n        query['startAt'] = { $lte: condition.endTime }\n      }\n    }\n\n    if (condition.appid) {\n      query['appid'] = { $in: condition.appid }\n    }\n\n    if (condition.state) {\n      query['state'] = condition.state\n    }\n    const pipeline = [\n      {\n        $match: query,\n      },\n      {\n        $project: {\n          day: {\n            $dateToString: { format: '%Y-%m-%d', date: '$startAt' },\n          },\n          amount: 1,\n        },\n      },\n      {\n        $group: {\n          _id: '$day',\n          totalAmount: { $sum: '$amount' },\n        },\n      },\n      {\n        $project: {\n          _id: 0,\n          day: {\n            $dateFromString: {\n              dateString: '$_id',\n              format: '%Y-%m-%d',\n            },\n          },\n          totalAmount: 1,\n        },\n      },\n      {\n        $sort: { day: -1 },\n      },\n    ]\n    const expense = await this.db\n      .collection<ApplicationBilling>('ApplicationBilling')\n      .aggregate(pipeline)\n      .toArray()\n\n    return expense\n  }\n\n  async getExpense(userId: ObjectId, condition?: BillingQuery) {\n    const query = { createdBy: userId }\n\n    if (condition.startTime) {\n      query['startAt'] = { $gte: condition.startTime }\n    }\n\n    if (condition.endTime) {\n      if (condition.startTime) {\n        query['startAt']['$lte'] = condition.endTime\n      } else {\n        query['startAt'] = { $lte: condition.endTime }\n      }\n    }\n\n    if (condition.appid) {\n      query['appid'] = { $in: condition.appid }\n    }\n\n    if (condition.state) {\n      query['state'] = condition.state\n    }\n\n    const totalExpense = await this.db\n      .collection<ApplicationBilling>('ApplicationBilling')\n      .aggregate([\n        { $match: query },\n        {\n          $group: {\n            _id: null,\n            totalAmount: { $sum: '$amount' },\n          },\n        },\n      ])\n      .toArray()\n\n    return totalExpense.length > 0 ? totalExpense[0].totalAmount : 0\n  }\n\n  async calculatePrice(dto: CalculatePriceDto) {\n    // get options by region id\n    const options = await this.resource.findAllByRegionId(\n      new ObjectId(dto.regionId),\n    )\n\n    const groupedOptions = this.resource.groupByType(options)\n    assert(groupedOptions[ResourceType.CPU], 'cpu option not found')\n    assert(groupedOptions[ResourceType.Memory], 'memory option not found')\n    assert(\n      groupedOptions[ResourceType.StorageCapacity],\n      'storage capacity option not found',\n    )\n    assert(\n      groupedOptions[ResourceType.DatabaseCapacity],\n      'database capacity option not found',\n    )\n    assert(\n      groupedOptions[ResourceType.DedicatedDatabaseCPU],\n      'dedicated database cpu option not found',\n    )\n    assert(\n      groupedOptions[ResourceType.DedicatedDatabaseMemory],\n      'dedicated database memory option not found',\n    )\n    assert(\n      groupedOptions[ResourceType.DedicatedDatabaseCapacity],\n      'dedicated database capacity option not found',\n    )\n    assert(\n      groupedOptions[ResourceType.DedicatedDatabaseReplicas],\n      'dedicated database replicas option not found',\n    )\n\n    assert(\n      groupedOptions[ResourceType.NetworkTraffic],\n      'network traffic not found',\n    )\n\n    // calculate cpu price\n    const cpuOption = groupedOptions[ResourceType.CPU]\n    const cpuPrice = new Decimal(cpuOption.price).mul(dto.cpu)\n\n    // calculate memory price\n    const memoryOption = groupedOptions[ResourceType.Memory]\n    const memoryPrice = new Decimal(memoryOption.price).mul(dto.memory)\n\n    // calculate storage capacity price\n    const storageOption = groupedOptions[ResourceType.StorageCapacity]\n    const storagePrice = new Decimal(storageOption.price).mul(\n      dto.storageCapacity,\n    )\n\n    // calculate database capacity price\n    const databaseOption = groupedOptions[ResourceType.DatabaseCapacity]\n    const databasePrice = new Decimal(databaseOption.price).mul(\n      dto.databaseCapacity || 0,\n    )\n\n    const ddbCPUOption = groupedOptions[ResourceType.DedicatedDatabaseCPU]\n    const ddbCPUPrice = dto.dedicatedDatabase\n      ? new Decimal(ddbCPUOption.price)\n          .mul(dto.dedicatedDatabase.cpu)\n          .mul(dto.dedicatedDatabase.replicas)\n      : new Decimal(0)\n\n    const ddbMemoryOption = groupedOptions[ResourceType.DedicatedDatabaseMemory]\n    const ddbMemoryPrice = dto.dedicatedDatabase\n      ? new Decimal(ddbMemoryOption.price)\n          .mul(dto.dedicatedDatabase.memory)\n          .mul(dto.dedicatedDatabase.replicas)\n      : new Decimal(0)\n\n    const ddbCapacityOption =\n      groupedOptions[ResourceType.DedicatedDatabaseCapacity]\n    const ddbCapacityPrice = dto.dedicatedDatabase\n      ? new Decimal(ddbCapacityOption.price)\n          .mul(dto.dedicatedDatabase.capacity)\n          .mul(dto.dedicatedDatabase.replicas)\n      : new Decimal(0)\n\n    const ddbTotalPrice = ddbCPUPrice.add(ddbMemoryPrice).add(ddbCapacityPrice)\n\n    const networkTrafficOption = groupedOptions[ResourceType.NetworkTraffic]\n    const networkTrafficPrice = new Decimal(networkTrafficOption.price).mul(\n      dto.networkTraffic || 0,\n    )\n\n    // calculate total price\n    const totalPrice = cpuPrice\n      .add(memoryPrice)\n      .add(storagePrice)\n      .add(databasePrice)\n      .add(ddbTotalPrice)\n      .add(networkTrafficPrice)\n\n    return {\n      cpu: cpuPrice.toNumber(),\n      memory: memoryPrice.toNumber(),\n      storageCapacity: storagePrice.toNumber(),\n      databaseCapacity: databasePrice.toNumber(),\n      dedicatedDatabase: {\n        cpu: ddbCPUPrice.toNumber(),\n        memory: ddbMemoryPrice.toNumber(),\n        capacity: ddbCapacityPrice.toNumber(),\n      },\n      networkTraffic: networkTrafficPrice.toNumber(),\n      total: totalPrice.toNumber(),\n    }\n  }\n\n  async getMeteringData(app: Application, startAt: Date, endAt: Date) {\n    const region = await this.region.findOne(app.regionId)\n\n    const prom = new PrometheusDriver({\n      endpoint: region.prometheusConf.apiUrl,\n    })\n\n    const cpuTask = prom\n      .instantQuery(`laf:billing:cpu{appid=\"${app.appid}\"}`, endAt)\n      .then((res) => res.result[0])\n      .then((res) => Number(res.value.value))\n\n    const memoryTask = prom\n      .instantQuery(`laf:billing:memory{appid=\"${app.appid}\"}`, endAt)\n      .then((res) => res.result[0])\n      .then((res) => Number(res.value.value))\n\n    const [cpu, memory] = await Promise.all([cpuTask, memoryTask]).catch(() => {\n      return [0, 0]\n    })\n\n    const networkTraffic = await this.getAppTrafficUsage(app, startAt, endAt)\n\n    return {\n      cpu,\n      memory,\n      networkTraffic,\n    }\n  }\n\n  async getAppTrafficUsage(\n    app: Application,\n    startAt: Date,\n    endAt: Date,\n  ): Promise<number> {\n    if (!this.trafficDB) {\n      return 0\n    }\n\n    // If the application stops during the current hour, traffic for the current hour is still billed\n    const twoHoursAgo = new Date(Date.now() - 2 * 60 * 60 * 1000)\n    if (app.state === ApplicationState.Stopped && app.updatedAt < twoHoursAgo) {\n      return 0\n    }\n\n    const aggregationPipeline = [\n      {\n        $match: {\n          'traffic_meta.pod_type_name': app.appid,\n          timestamp: { $gte: startAt, $lt: endAt },\n        },\n      },\n      {\n        $group: {\n          _id: null,\n          totalSentBytes: { $sum: '$sent_bytes' },\n        },\n      },\n    ]\n\n    // get app network usage\n    const result = await this.trafficDB\n      .collection<Traffic>('traffic')\n      .aggregate(aggregationPipeline)\n      .toArray()\n\n    // [ { _id: null, totalSentBytes: Long('70204946') } ]\n    const totalSentBytes = result[0]?.totalSentBytes || 0\n    const bytesPerMegabyte = 1024 * 1024\n    const totalSentMegabytes = Math.ceil(totalSentBytes / bytesPerMegabyte)\n\n    return totalSentMegabytes\n  }\n}\n"
  },
  {
    "path": "server/src/billing/dto/billings.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\n\nexport class BillingsByDayDto {\n  @ApiProperty({ type: String })\n  totalAmount: number\n\n  @ApiProperty({ type: Date })\n  day: Date\n}\n"
  },
  {
    "path": "server/src/billing/dto/calculate-price.dto.ts",
    "content": "import { ApiProperty, OmitType } from '@nestjs/swagger'\nimport { IsNotEmpty, IsNumber, IsOptional, IsString } from 'class-validator'\nimport { UpdateApplicationBundleDto } from 'src/application/dto/update-application.dto'\n\nexport class CalculatePriceDto extends OmitType(UpdateApplicationBundleDto, [\n  'validate',\n]) {\n  @ApiProperty({ example: 0.036 })\n  @IsOptional()\n  @IsNumber({}, { message: 'networkTraffic must be a number' })\n  networkTraffic?: number\n\n  @ApiProperty()\n  @IsNotEmpty()\n  @IsString()\n  regionId: string\n}\n\nexport class CalculatePriceResultDto {\n  @ApiProperty({ example: 0.072 })\n  cpu: number\n\n  @ApiProperty({ example: 0.036 })\n  memory: number\n\n  @ApiProperty({ example: 0.036, required: false })\n  networkTraffic?: number\n\n  @ApiProperty({ example: 0.036 })\n  storageCapacity: number\n\n  @ApiProperty({ example: 0.036 })\n  databaseCapacity: number\n\n  @ApiProperty({ example: 0.18 })\n  total: number\n}\n"
  },
  {
    "path": "server/src/billing/entities/application-billing.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\nimport { ResourceType } from './resource'\n\nexport enum ApplicationBillingState {\n  Pending = 'Pending',\n  Done = 'Done',\n}\n\nexport class ApplicationBillingDetailItem {\n  @ApiProperty()\n  usage: number\n\n  @ApiProperty()\n  amount: number\n}\n\nexport class ApplicationBillingDetail {\n  @ApiProperty()\n  [ResourceType.CPU]: ApplicationBillingDetailItem;\n\n  @ApiProperty()\n  [ResourceType.Memory]: ApplicationBillingDetailItem;\n\n  @ApiProperty()\n  [ResourceType.DatabaseCapacity]: ApplicationBillingDetailItem;\n\n  @ApiProperty()\n  [ResourceType.StorageCapacity]: ApplicationBillingDetailItem;\n\n  @ApiProperty()\n  [ResourceType.NetworkTraffic]?: ApplicationBillingDetailItem;\n\n  @ApiProperty()\n  [ResourceType.DedicatedDatabaseCPU]?: ApplicationBillingDetailItem;\n\n  @ApiProperty()\n  [ResourceType.DedicatedDatabaseMemory]?: ApplicationBillingDetailItem;\n\n  @ApiProperty()\n  [ResourceType.DedicatedDatabaseCapacity]?: ApplicationBillingDetailItem\n}\n\nexport class ApplicationBilling {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty({ enum: ApplicationBillingState })\n  state: ApplicationBillingState\n\n  @ApiProperty()\n  amount: number\n\n  @ApiProperty()\n  detail: ApplicationBillingDetail\n\n  @ApiProperty()\n  startAt: Date\n\n  @ApiProperty()\n  endAt: Date\n\n  lockedAt: Date\n\n  @ApiProperty({ type: String })\n  createdBy: ObjectId\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/billing/entities/network-traffic.ts",
    "content": "import { ObjectId } from 'mongodb'\n\nexport class Traffic {\n  _id?: ObjectId\n\n  timestamp: Date\n\n  traffic_meta: TrafficMeta\n\n  recv_bytes: number\n\n  sent_bytes: number\n}\n\nexport class TrafficMeta {\n  pod_address: string\n\n  pod_name: string\n\n  pod_namespace: string\n\n  pod_type: number\n\n  pod_type_name: string\n\n  traffic_tag: string\n}\n"
  },
  {
    "path": "server/src/billing/entities/resource.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport enum ResourceType {\n  CPU = 'cpu',\n  Memory = 'memory',\n  DatabaseCapacity = 'databaseCapacity',\n  StorageCapacity = 'storageCapacity',\n  NetworkTraffic = 'networkTraffic',\n  DedicatedDatabaseCPU = 'dedicatedDatabaseCPU',\n  DedicatedDatabaseMemory = 'dedicatedDatabaseMemory',\n  DedicatedDatabaseCapacity = 'dedicatedDatabaseCapacity',\n  DedicatedDatabaseReplicas = 'dedicatedDatabaseReplicas',\n}\n\nexport class ResourceSpec {\n  @ApiProperty()\n  value: number\n\n  @ApiPropertyOptional()\n  label?: string\n}\n\nexport class ResourceOption {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  regionId: ObjectId\n\n  @ApiProperty({ enum: ResourceType })\n  type: ResourceType\n\n  @ApiProperty()\n  price: number\n\n  @ApiProperty({ type: [ResourceSpec] })\n  specs: ResourceSpec[]\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n\nexport class ResourceBundleSpecMap {\n  @ApiProperty({ type: ResourceSpec })\n  [ResourceType.CPU]: ResourceSpec;\n\n  @ApiProperty({ type: ResourceSpec })\n  [ResourceType.Memory]: ResourceSpec;\n\n  @ApiProperty({ type: ResourceSpec })\n  [ResourceType.DatabaseCapacity]: ResourceSpec;\n\n  @ApiProperty({ type: ResourceSpec })\n  [ResourceType.StorageCapacity]: ResourceSpec;\n\n  @ApiPropertyOptional({ type: ResourceSpec })\n  [ResourceType.NetworkTraffic]?: ResourceSpec;\n\n  @ApiProperty({ type: ResourceSpec })\n  [ResourceType.DedicatedDatabaseCPU]: ResourceSpec;\n\n  @ApiProperty({ type: ResourceSpec })\n  [ResourceType.DedicatedDatabaseMemory]: ResourceSpec;\n\n  @ApiProperty({ type: ResourceSpec })\n  [ResourceType.DedicatedDatabaseCapacity]: ResourceSpec;\n\n  @ApiProperty({ type: ResourceSpec })\n  [ResourceType.DedicatedDatabaseReplicas]: ResourceSpec\n}\n\nexport class ResourceBundle {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  regionId: ObjectId\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  displayName: string\n\n  @ApiProperty({ type: ResourceBundleSpecMap })\n  spec: {\n    [ResourceType.CPU]: ResourceSpec\n    [ResourceType.Memory]: ResourceSpec\n    [ResourceType.DatabaseCapacity]: ResourceSpec\n    [ResourceType.StorageCapacity]: ResourceSpec\n    [ResourceType.NetworkTraffic]?: ResourceSpec\n    [ResourceType.DedicatedDatabaseCPU]: ResourceSpec\n    [ResourceType.DedicatedDatabaseMemory]: ResourceSpec\n    [ResourceType.DedicatedDatabaseCapacity]: ResourceSpec\n    [ResourceType.DedicatedDatabaseReplicas]: ResourceSpec\n  }\n\n  @ApiPropertyOptional()\n  enableFreeTier?: boolean\n\n  @ApiPropertyOptional()\n  limitCountOfFreeTierPerUser?: number\n\n  @ApiPropertyOptional()\n  message?: string\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/billing/interface/billing-query.interface.ts",
    "content": "export interface BillingQuery {\n  appid?: string[]\n  startTime?: Date\n  endTime?: Date\n  page?: number\n  pageSize?: number\n  state?: string\n}\n"
  },
  {
    "path": "server/src/billing/resource.controller.ts",
    "content": "import { Body, Controller, Get, Param, Post } from '@nestjs/common'\nimport { ApiOperation, ApiTags } from '@nestjs/swagger'\nimport {\n  ApiResponseArray,\n  ApiResponseObject,\n  ResponseUtil,\n} from 'src/utils/response'\nimport {\n  CalculatePriceDto,\n  CalculatePriceResultDto,\n} from './dto/calculate-price.dto'\nimport { ResourceService } from './resource.service'\nimport { RegionService } from 'src/region/region.service'\nimport { ObjectId } from 'mongodb'\nimport { BillingService } from './billing.service'\nimport { ResourceBundle, ResourceOption } from './entities/resource'\n\n@ApiTags('Billing')\n@Controller('resources')\nexport class ResourceController {\n  constructor(\n    private readonly resource: ResourceService,\n    private readonly region: RegionService,\n    private readonly billing: BillingService,\n  ) {}\n\n  /**\n   * Calculate pricing\n   * @param dto\n   */\n  @ApiOperation({ summary: 'Calculate pricing' })\n  @Post('price')\n  @ApiResponseObject(CalculatePriceResultDto)\n  async calculatePrice(@Body() dto: CalculatePriceDto) {\n    // check regionId exists\n    const region = await this.region.findOneDesensitized(\n      new ObjectId(dto.regionId),\n    )\n\n    if (!region) {\n      return ResponseUtil.error(`region ${dto.regionId} not found`)\n    }\n\n    const result = await this.billing.calculatePrice(dto)\n\n    // check if trial tier\n    const isTrialTier = await this.resource.isTrialBundle(dto)\n    if (isTrialTier) {\n      result.total = 0\n    }\n    return ResponseUtil.ok(result)\n  }\n\n  /**\n   * Get resource option list\n   * TODO: deprecated, prepare to remove\n   */\n  @ApiOperation({ summary: 'Get resource option list' })\n  @ApiResponseArray(ResourceOption)\n  @Get('resource-options')\n  async getResourceOptions() {\n    const options = await this.resource.findAll()\n    return ResponseUtil.ok(options)\n  }\n\n  /**\n   * Get resource option list by region id\n   */\n  @ApiOperation({ summary: 'Get resource option list by region id' })\n  @ApiResponseArray(ResourceOption)\n  @Get('resource-options/:regionId')\n  async getResourceOptionsByRegionId(@Param('regionId') regionId: string) {\n    const data = await this.resource.findAllByRegionId(new ObjectId(regionId))\n    return ResponseUtil.ok(data)\n  }\n\n  /**\n   * Get resource template list\n   * @returns\n   */\n  @ApiOperation({ summary: 'Get resource template list' })\n  @ApiResponseArray(ResourceBundle)\n  @Get('resource-bundles')\n  async getResourceBundles() {\n    const data = await this.resource.findAllBundles()\n    return ResponseUtil.ok(data)\n  }\n}\n"
  },
  {
    "path": "server/src/billing/resource.service.ts",
    "content": "import { Injectable } from '@nestjs/common'\nimport { SystemDatabase } from 'src/system-database'\nimport { ObjectId } from 'mongodb'\nimport {\n  ResourceOption,\n  ResourceBundle,\n  ResourceType,\n} from './entities/resource'\nimport { CalculatePriceDto } from './dto/calculate-price.dto'\n\n@Injectable()\nexport class ResourceService {\n  private readonly db = SystemDatabase.db\n\n  async findAll() {\n    const options = await this.db\n      .collection<ResourceOption>('ResourceOption')\n      .find({})\n      .sort({ createdAt: 1 })\n      .toArray()\n    return options\n  }\n\n  async findOne(id: ObjectId) {\n    const option = await this.db\n      .collection<ResourceOption>('ResourceOption')\n      .findOne({ _id: id })\n    return option\n  }\n\n  async findOneByType(type: ResourceType) {\n    const option = await this.db\n      .collection<ResourceOption>('ResourceOption')\n      .findOne({ type: type })\n    return option\n  }\n\n  async findAllByRegionId(regionId: ObjectId) {\n    const options = await this.db\n      .collection<ResourceOption>('ResourceOption')\n      .find({ regionId })\n      .sort({ createdAt: 1 })\n      .toArray()\n\n    return options\n  }\n\n  groupByType(options: ResourceOption[]) {\n    type GroupedOptions = {\n      [key in ResourceType]: ResourceOption\n    }\n\n    const groupedOptions = options.reduce((acc, cur) => {\n      acc[cur.type] = cur\n      return acc\n    }, {} as GroupedOptions)\n\n    return groupedOptions\n  }\n\n  async findAllBundles() {\n    const options = await this.db\n      .collection<ResourceBundle>('ResourceBundle')\n      .find()\n      .sort({ createdAt: 1 })\n      .toArray()\n\n    return options\n  }\n\n  async findAllBundlesByRegionId(regionId: ObjectId) {\n    const options = await this.db\n      .collection<ResourceBundle>('ResourceBundle')\n      .find({ regionId })\n      .sort({ createdAt: 1 })\n      .toArray()\n\n    return options\n  }\n\n  async findTrialBundle(regionId: ObjectId) {\n    const bundle = await this.db\n      .collection<ResourceBundle>('ResourceBundle')\n      .findOne({ enableFreeTier: true, regionId })\n\n    return bundle\n  }\n\n  // check if input bundle is trial bundle\n  async isTrialBundle(input: CalculatePriceDto) {\n    const regionId = new ObjectId(input.regionId)\n    const bundle = await this.findTrialBundle(regionId)\n\n    if (!bundle) {\n      return false\n    }\n\n    const cpu = bundle.spec.cpu.value\n    const memory = bundle.spec.memory.value\n    const storage = bundle.spec.storageCapacity.value\n    const database = bundle.spec.databaseCapacity.value\n\n    if (\n      cpu === input.cpu &&\n      memory === input.memory &&\n      storage === input.storageCapacity &&\n      database === input.databaseCapacity\n    ) {\n      return true\n    }\n\n    return false\n  }\n}\n"
  },
  {
    "path": "server/src/constants.ts",
    "content": "import * as dotenv from 'dotenv' // see https://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import\ndotenv.config({ path: '.env.local' })\ndotenv.config()\n\nexport class ServerConfig {\n  static get DEFAULT_LANGUAGE() {\n    return process.env.DEFAULT_LANGUAGE || 'en'\n  }\n\n  static get DATABASE_URL() {\n    if (!process.env.DATABASE_URL) {\n      throw new Error('DATABASE_URL is not defined')\n    }\n    return process.env.DATABASE_URL\n  }\n\n  static get TRAFFIC_DATABASE_URL() {\n    if (!process.env.TRAFFIC_DATABASE_URL) {\n      return\n    }\n    return process.env.TRAFFIC_DATABASE_URL\n  }\n\n  static get NOTIFICATION_CENTER_URL() {\n    return process.env.NOTIFICATION_CENTER_URL\n  }\n\n  static get NOTIFICATION_CENTER_TOKEN() {\n    return process.env.NOTIFICATION_CENTER_TOKEN || ''\n  }\n\n  static get JWT_SECRET() {\n    if (!process.env.JWT_SECRET) {\n      throw new Error('JWT_SECRET is not defined')\n    }\n    return process.env.JWT_SECRET\n  }\n\n  static get JWT_EXPIRES_IN() {\n    return process.env.JWT_EXPIRES_IN || '7d'\n  }\n\n  /* switcher of task controllers */\n\n  static get DISABLED_INSTANCE_TASK() {\n    return process.env.DISABLED_INSTANCE_TASK === 'true'\n  }\n\n  static get DISABLED_APPLICATION_TASK() {\n    return process.env.DISABLED_APPLICATION_TASK === 'true'\n  }\n\n  static get DISABLED_GATEWAY_TASK() {\n    return process.env.DISABLED_GATEWAY_TASK === 'true'\n  }\n\n  static get DISABLED_TRIGGER_TASK() {\n    return process.env.DISABLED_TRIGGER_TASK === 'true'\n  }\n\n  static get DISABLED_STORAGE_TASK() {\n    return process.env.DISABLED_STORAGE_TASK === 'true'\n  }\n\n  static get DISABLED_STORAGE_USER_TASK() {\n    return process.env.DISABLED_STORAGE_USER_TASK === 'true'\n  }\n\n  static get DISABLED_BILLING_CREATION_TASK() {\n    return process.env.DISABLED_BILLING_CREATION_TASK === 'true'\n  }\n\n  static get DISABLED_BILLING_PAYMENT_TASK() {\n    return process.env.DISABLED_BILLING_PAYMENT_TASK === 'true'\n  }\n\n  static get DISABLED_DATABASE_USAGE_CAPTURE_TASK() {\n    return process.env.DISABLED_DATABASE_USAGE_CAPTURE_TASK === 'true'\n  }\n\n  static get DISABLED_DATABASE_USAGE_LIMIT_TASK() {\n    return process.env.DISABLED_DATABASE_USAGE_LIMIT_TASK === 'true'\n  }\n\n  static get DISABLED_STORAGE_USAGE_CAPTURE_TASK() {\n    return process.env.DISABLED_STORAGE_USAGE_CAPTURE_TASK === 'true'\n  }\n\n  static get DISABLED_STORAGE_USAGE_LIMIT_TASK() {\n    return process.env.DISABLED_STORAGE_USAGE_LIMIT_TASK === 'true'\n  }\n\n  static get DISABLE_NOTIFICATION_TASK() {\n    if (!process.env.DISABLE_NOTIFICATION_TASK) {\n      return true\n    }\n    return process.env.DISABLE_NOTIFICATION_TASK === 'true'\n  }\n\n  static get APPID_LENGTH(): number {\n    return parseInt(process.env.APPID_LENGTH || '6')\n  }\n\n  static get RUNTIME_CUSTOM_DEPENDENCY_BASE_PATH() {\n    return (\n      process.env.RUNTIME_CUSTOM_DEPENDENCY_BASE_PATH ||\n      '/tmp/custom_dependency'\n    )\n  }\n\n  static get DEFAULT_RUNTIME_IMAGE() {\n    const image =\n      process.env.DEFAULT_RUNTIME_IMAGE ||\n      'docker.io/lafyun/runtime-node:latest'\n\n    const initImage =\n      process.env.DEFAULT_RUNTIME_INIT_IMAGE ||\n      'docker.io/lafyun/runtime-node-init:latest'\n    return {\n      image: {\n        main: image,\n        init: initImage,\n      },\n      version: 'latest',\n    }\n  }\n\n  static get SITE_NAME() {\n    return process.env.SITE_NAME || 'laf'\n  }\n\n  static get API_SERVER_URL() {\n    return process.env.API_SERVER_URL || 'http://localhost:3000'\n  }\n\n  /** default region conf */\n  static get DEFAULT_REGION_NAMESPACE() {\n    return process.env.DEFAULT_REGION_NAMESPACE\n  }\n\n  static get DEFAULT_REGION_DATABASE_URL() {\n    return process.env.DEFAULT_REGION_DATABASE_URL\n  }\n\n  static get DEFAULT_REGION_RUNTIME_DOMAIN() {\n    if (!process.env.DEFAULT_REGION_RUNTIME_DOMAIN) {\n      throw new Error('DEFAULT_REGION_RUNTIME_DOMAIN is not defined')\n    }\n    return process.env.DEFAULT_REGION_RUNTIME_DOMAIN\n  }\n\n  static get DEFAULT_REGION_WEBSITE_DOMAIN() {\n    if (!process.env.DEFAULT_REGION_WEBSITE_DOMAIN) {\n      throw new Error('DEFAULT_REGION_WEBSITE_DOMAIN is not defined')\n    }\n    return process.env.DEFAULT_REGION_WEBSITE_DOMAIN\n  }\n\n  static get DEFAULT_REGION_TLS_ENABLED() {\n    return process.env.DEFAULT_REGION_TLS_ENABLED === 'true'\n  }\n\n  static get DEFAULT_REGION_TLS_WILDCARD_CERTIFICATE_SECRET_NAME() {\n    return process.env.DEFAULT_REGION_TLS_WILDCARD_CERTIFICATE_SECRET_NAME\n  }\n\n  static get DEFAULT_REGION_MINIO_DOMAIN() {\n    return process.env.DEFAULT_REGION_MINIO_DOMAIN\n  }\n\n  static get DEFAULT_REGION_MINIO_EXTERNAL_ENDPOINT() {\n    return process.env.DEFAULT_REGION_MINIO_EXTERNAL_ENDPOINT\n  }\n\n  static get DEFAULT_REGION_MINIO_INTERNAL_ENDPOINT() {\n    return process.env.DEFAULT_REGION_MINIO_INTERNAL_ENDPOINT\n  }\n\n  static get DEFAULT_REGION_MINIO_ROOT_ACCESS_KEY() {\n    return process.env.DEFAULT_REGION_MINIO_ROOT_ACCESS_KEY\n  }\n\n  static get DEFAULT_REGION_MINIO_ROOT_SECRET_KEY() {\n    return process.env.DEFAULT_REGION_MINIO_ROOT_SECRET_KEY\n  }\n\n  static get DEFAULT_REGION_PROMETHEUS_URL() {\n    return process.env.DEFAULT_REGION_PROMETHEUS_URL\n  }\n\n  // HTTP interceptor\n  static get HTTP_INTERCEPTOR_URL() {\n    return process.env.HTTP_INTERCEPTOR_URL\n  }\n\n  static get KUBEBLOCK_V5_UPGRADE_URL() {\n    return process.env.KUBEBLOCK_V5_UPGRADE_URL\n  }\n}\n\nexport const LABEL_KEY_USER_ID = 'laf.dev/user.id'\nexport const LABEL_KEY_APP_ID = 'laf.dev/appid'\nexport const LABEL_KEY_NAMESPACE_TYPE = 'laf.dev/namespace.type'\nexport const LABEL_KEY_NODE_TYPE = 'laf.dev/node.type'\nexport enum NodeType {\n  Runtime = 'runtime',\n  Database = 'database',\n  Storage = 'storage',\n}\n\n// Runtime constants\nexport const HTTP_METHODS = ['HEAD', 'GET', 'POST', 'PUT', 'DELETE', 'PATCH']\n\nexport const CN_PUBLISHED_FUNCTIONS = '__functions__'\nexport const CN_PUBLISHED_POLICIES = '__policies__'\nexport const CN_PUBLISHED_CONF = '__conf__'\nexport const CN_PUBLISHED_WEBSITE_HOSTING = '__website_hosting__'\n\nexport const X_LAF_TRIGGER_TOKEN_KEY = 'x-laf-trigger-token'\nexport const X_LAF_DEVELOP_TOKEN_KEY = 'x-laf-develop-token'\nexport const APPLICATION_SECRET_KEY = 'SERVER_SECRET'\n\n// Cluster constants\nexport const MINIO_COMMON_USER_GROUP = 'laf_owner_by_prefix_group'\nexport const MINIO_COMMON_USER_POLICY = 'laf_owner_by_prefix'\nexport const MINIO_READONLY_USER_GROUP = 'laf_owner_readonly_by_prefix_group'\nexport const MINIO_READONLY_USER_POLICY = 'laf_owner_readonly_by_prefix'\n// Date & times\nexport const ONE_DAY_IN_SECONDS = 60 * 60 * 24 // 1 day in seconds\nexport const SEVEN_DAYS_IN_SECONDS = 60 * 60 * 24 * 7 // 7 days in seconds\nexport const ONE_MONTH_IN_SECONDS = 60 * 60 * 24 * 31 // 31 days in seconds\nexport const FOREVER_IN_SECONDS = 60 * 60 * 24 * 365 * 1000 // 1000 years in seconds\nexport const TASK_LOCK_INIT_TIME = new Date(0) // 1970-01-01 00:00:00\nexport const MILLISECONDS_PER_DAY = 60 * 60 * 24 * 1000 // 1 day in milliseconds\nexport const MILLISECONDS_PER_MINUTE = 60 * 1000 // 1 minute in milliseconds\n\n// Resource units\nexport const CPU_UNIT = 1000\nexport const MB = 1024 * 1024\nexport const GB = 1024 * MB\n\n// auth constants\nexport const PHONE_AUTH_PROVIDER_NAME = 'phone'\nexport const PASSWORD_AUTH_PROVIDER_NAME = 'user-password'\nexport const EMAIL_AUTH_PROVIDER_NAME = 'email'\nexport const GITHUB_AUTH_PROVIDER_NAME = 'github'\n\n// Sms constants\nexport const ALISMS_KEY = 'alisms'\nexport const LIMIT_CODE_FREQUENCY = 60 * 1000 // 60 seconds (in milliseconds)\nexport const LIMIT_CODE_PER_IP_PER_DAY = 30 // 30 times\nexport const CODE_VALIDITY = 10 * 60 * 1000 // 10 minutes (in milliseconds)\n\n// Github constants\nexport const GITHUB_SIGNIN_TOKEN_VALIDITY = 5 * 60 * 1000\n\n// Recycle bin constants\nexport const STORAGE_LIMIT = 1000 // 1000 items\n\n// HTTP interceptor\nexport const HTTP_INTERCEPTOR_TIMEOUT = 3000 // 3s\n\n// KubeBlock v5 upgrade API\nexport const KUBEBLOCK_V5_UPGRADE_API_TIMEOUT = 3000 // 3s\n"
  },
  {
    "path": "server/src/database/collection/collection.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Post,\n  Body,\n  Patch,\n  Param,\n  Delete,\n  Logger,\n  UseGuards,\n} from '@nestjs/common'\nimport {\n  ApiBearerAuth,\n  ApiOperation,\n  ApiResponse,\n  ApiTags,\n} from '@nestjs/swagger'\nimport { ApplicationAuthGuard } from '../../authentication/application.auth.guard'\nimport { JwtAuthGuard } from '../../authentication/jwt.auth.guard'\nimport { ApiResponseObject, ResponseUtil } from '../../utils/response'\nimport { CollectionService } from './collection.service'\nimport { CreateCollectionDto } from '../dto/create-collection.dto'\nimport { UpdateCollectionDto } from '../dto/update-collection.dto'\nimport { Collection } from '../entities/collection'\n\n@ApiTags('Database')\n@ApiBearerAuth('Authorization')\n@Controller('apps/:appid/collections')\nexport class CollectionController {\n  private readonly logger = new Logger(CollectionController.name)\n  constructor(private readonly collectionService: CollectionService) {}\n\n  /**\n   * Create a new collection in database\n   * @param appid\n   * @param dto\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil<boolean> })\n  @ApiOperation({ summary: 'Create a new collection in database' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post()\n  async create(\n    @Param('appid') appid: string,\n    @Body() dto: CreateCollectionDto,\n  ) {\n    const error = await dto.validate()\n    if (error) {\n      return ResponseUtil.error(error)\n    }\n\n    const ok = await this.collectionService.create(appid, dto)\n    if (ok) {\n      return ResponseUtil.ok(ok)\n    }\n    return ResponseUtil.error('failed to create collection')\n  }\n\n  /**\n   * Get collection list of an application\n   * @param appid\n   * @returns\n   */\n  @ApiResponseObject(Collection) // QUIRKS: should be array but swagger doesn't support it\n  @ApiOperation({ summary: 'Get collection list of an application' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get()\n  async findAll(@Param('appid') appid: string) {\n    const collections = await this.collectionService.findAll(appid)\n    if (collections === null) {\n      return ResponseUtil.error('failed to get collections')\n    }\n    return ResponseUtil.ok(collections)\n  }\n\n  /**\n   * Get collection by name\n   * @param appid\n   * @param name\n   * @returns\n   */\n  @ApiResponseObject(Collection)\n  @ApiOperation({ summary: 'Get collection by name' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get(':name')\n  async findOne(@Param('appid') appid: string, @Param('name') name: string) {\n    const res = await this.collectionService.findOne(appid, name)\n    if (!res) {\n      return ResponseUtil.error('failed to get collection')\n    }\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Update a collection\n   * @param appid\n   * @param name\n   * @param dto\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Update a collection' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Patch(':name')\n  async update(\n    @Param('appid') appid: string,\n    @Param('name') name: string,\n    @Body() dto: UpdateCollectionDto,\n  ) {\n    const res = await this.collectionService.update(appid, name, dto)\n    if (res === false) {\n      return ResponseUtil.error('failed to update collection')\n    }\n\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Delete a collection by its name\n   * @param appid\n   * @param name\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Delete a collection by its name' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Delete(':name')\n  async remove(@Param('appid') appid: string, @Param('name') name: string) {\n    const res = await this.collectionService.remove(appid, name)\n    if (res === false) {\n      return ResponseUtil.error('failed to delete collection')\n    }\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/database/collection/collection.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { CreateCollectionDto } from '../dto/create-collection.dto'\nimport { UpdateCollectionDto } from '../dto/update-collection.dto'\nimport * as assert from 'node:assert'\nimport { DatabaseService } from '../database.service'\nimport { DedicatedDatabaseService } from '../dedicated-database/dedicated-database.service'\n\n@Injectable()\nexport class CollectionService {\n  private readonly logger = new Logger(CollectionService.name)\n  constructor(\n    private readonly databaseService: DatabaseService,\n    private readonly dedicatedDatabaseService: DedicatedDatabaseService,\n  ) {}\n\n  /**\n   * Create collection in database\n   * @param appid\n   * @param dto\n   * @returns\n   */\n  async create(appid: string, dto: CreateCollectionDto) {\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(appid)) ||\n      (await this.databaseService.findAndConnect(appid))\n    assert(db, 'Database not found')\n    try {\n      await db.createCollection(dto.name)\n      return true\n    } catch (error) {\n      this.logger.error(error)\n      return false\n    } finally {\n      await client.close()\n    }\n  }\n\n  /**\n   * Get collection list in database\n   * @param appid\n   * @returns\n   */\n  async findAll(appid: string) {\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(appid)) ||\n      (await this.databaseService.findAndConnect(appid))\n    assert(db, 'Database not found')\n    try {\n      const collections = await db.listCollections().toArray()\n      const result = collections.filter((coll) => !coll.name.startsWith('__'))\n      return result\n    } catch (error) {\n      this.logger.error(error)\n      return null\n    } finally {\n      await client.close()\n    }\n  }\n\n  /**\n   * TODO\n   * @param appid\n   * @param name\n   * @returns\n   */\n  async findOne(appid: string, name: string) {\n    return `This action returns a #${name} collection`\n  }\n\n  /**\n   * Update collection, currently only support to update validatorSchema and validationLevel.\n   * @param appid\n   * @param name\n   * @param dto\n   * @returns\n   */\n  async update(appid: string, name: string, dto: UpdateCollectionDto) {\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(appid)) ||\n      (await this.databaseService.findAndConnect(appid))\n    assert(db, 'Database not found')\n\n    const command = {\n      collMod: name,\n      validationAction: 'error',\n    }\n\n    if (dto.validatorSchema) {\n      command['validator'] = {\n        $jsonSchema: dto.validatorSchema,\n      }\n    }\n\n    if (['strict', 'off', 'moderate'].includes(dto.validationLevel)) {\n      command['validationLevel'] = dto.validationLevel\n    } else {\n      command['validationLevel'] = 'strict'\n    }\n\n    try {\n      await db.command(command)\n      return true\n    } catch (error) {\n      this.logger.error(error)\n      return false\n    } finally {\n      await client.close()\n    }\n  }\n\n  /**\n   * Drop a collection\n   * @param appid\n   * @param name\n   * @returns\n   */\n  async remove(appid: string, name: string) {\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(appid)) ||\n      (await this.databaseService.findAndConnect(appid))\n    assert(db, 'Database not found')\n    try {\n      const res = await db.dropCollection(name)\n      return res\n    } catch (error) {\n      this.logger.error(error)\n      return false\n    } finally {\n      await client.close()\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/database/database-usage-capture-task.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport { DatabaseService } from 'src/database/database.service'\nimport { Database } from 'src/database/entities/database'\nimport { SystemDatabase } from 'src/system-database'\nimport { ServerConfig } from 'src/constants'\nimport pLimit from 'src/utils/p-limit'\n\n@Injectable()\nexport class DatabaseUsageCaptureTaskService {\n  constructor(private readonly databaseService: DatabaseService) {}\n\n  private readonly logger = new Logger(DatabaseUsageCaptureTaskService.name)\n  private readonly db = SystemDatabase.db\n  private readonly lockTimeout = 60 * 60 // in second\n  private readonly limit = pLimit(10) // concurrency limit: 10\n\n  private getLockTime() {\n    // halfway through each hour\n    const latestTime = new Date()\n    latestTime.setMinutes(30)\n    latestTime.setSeconds(0)\n    latestTime.setMilliseconds(0)\n    if (latestTime.getTime() > Date.now()) {\n      latestTime.setTime(latestTime.getTime() - 1000 * 60 * 60)\n    }\n    return latestTime\n  }\n\n  @Cron(CronExpression.EVERY_MINUTE)\n  async tick() {\n    if (ServerConfig.DISABLED_DATABASE_USAGE_CAPTURE_TASK) {\n      return\n    }\n\n    const total = await this.db\n      .collection<Database>('Database')\n      .countDocuments({\n        usageCaptureLockedAt: {\n          $lt: new Date(Date.now() - 1000 * this.lockTimeout),\n        },\n      })\n\n    // remaining tasks\n    const taskAmount = total - this.limit.pendingCount\n\n    if (taskAmount <= 0) return\n\n    const taskList = Array.from({ length: taskAmount }).map(() =>\n      this.limit(() =>\n        this.handleCaptureDatabaseUsage().catch((err) => {\n          this.logger.error('handleCaptureDatabaseUsage error', err)\n        }),\n      ),\n    )\n\n    this.logger.debug('Start DatabaseUsageCaptureTask, total: ' + taskAmount)\n    await Promise.all(taskList)\n  }\n\n  async handleCaptureDatabaseUsage() {\n    const res = await this.db.collection<Database>('Database').findOneAndUpdate(\n      {\n        usageCaptureLockedAt: {\n          $lt: new Date(Date.now() - 1000 * this.lockTimeout),\n        },\n      },\n      { $set: { usageCaptureLockedAt: this.getLockTime() } },\n    )\n\n    if (!res.value) return\n\n    const app = res.value\n    const { appid } = app\n\n    this.captureDatabaseUsage(appid).catch((err) => {\n      this.logger.error(`captureDatabaseUsage ${appid} error`, err)\n    })\n  }\n\n  async captureDatabaseUsage(appid: string) {\n    const res = await this.databaseService.findAndConnect(appid)\n    if (!res) return\n    const { client, db } = res\n    try {\n      const data = await db.stats()\n      const { dataSize } = data\n      await this.db.collection<Database>('Database').findOneAndUpdate(\n        {\n          appid,\n        },\n        {\n          $set: {\n            dataSize: dataSize / 1024 / 1024, // MB\n            updatedAt: new Date(),\n          },\n        },\n      )\n\n      this.logger.log(\n        `captureDatabaseUsage ${appid}: ${dataSize / 1024 / 1024} MB`,\n      )\n    } finally {\n      await client.close()\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/database/database-usage-limit-task.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport { DatabaseService } from 'src/database/database.service'\nimport { Database, DatabasePermission } from 'src/database/entities/database'\nimport { SystemDatabase } from 'src/system-database'\nimport { ServerConfig } from 'src/constants'\nimport { BundleService } from 'src/application/bundle.service'\nimport pLimit from 'src/utils/p-limit'\nimport { RegionService } from 'src/region/region.service'\n\n@Injectable()\nexport class DatabaseUsageLimitTaskService {\n  constructor(\n    private readonly databaseService: DatabaseService,\n    private readonly bundleService: BundleService,\n    private readonly regionService: RegionService,\n  ) {}\n\n  private readonly logger = new Logger(DatabaseUsageLimitTaskService.name)\n  private readonly db = SystemDatabase.db\n  private readonly lockTimeout = 60 * 60 * 3 // in second\n  private readonly limit = pLimit(10) // concurrency limit: 10\n\n  private getLockTime() {\n    // halfway through each hour\n    const latestTime = new Date()\n    latestTime.setMinutes(30)\n    latestTime.setSeconds(0)\n    latestTime.setMilliseconds(0)\n    if (latestTime.getTime() > Date.now()) {\n      latestTime.setTime(latestTime.getTime() - 1000 * 60 * 60)\n    }\n    return latestTime\n  }\n\n  @Cron(CronExpression.EVERY_MINUTE)\n  async tick() {\n    if (ServerConfig.DISABLED_DATABASE_USAGE_LIMIT_TASK) {\n      return\n    }\n\n    const total = await this.db\n      .collection<Database>('Database')\n      .countDocuments({\n        usageLimitLockedAt: {\n          $lt: new Date(Date.now() - 1000 * this.lockTimeout),\n        },\n      })\n\n    // remaining tasks\n    const taskAmount = total - this.limit.pendingCount\n\n    if (taskAmount <= 0) return\n\n    const taskList = Array.from({ length: taskAmount }).map(() =>\n      this.limit(() =>\n        this.handleLimitDatabaseUsage().catch((err) => {\n          this.logger.error('handleLimitDatabaseUsage error', err)\n        }),\n      ),\n    )\n\n    this.logger.debug('Start DatabaseUsageLimitTask, total: ' + taskAmount)\n    await Promise.all(taskList)\n  }\n\n  async handleLimitDatabaseUsage() {\n    const res = await this.db.collection<Database>('Database').findOneAndUpdate(\n      {\n        usageLimitLockedAt: {\n          $lt: new Date(Date.now() - 1000 * this.lockTimeout),\n        },\n      },\n      { $set: { usageLimitLockedAt: this.getLockTime() } },\n    )\n\n    if (!res.value) return\n\n    const app = res.value\n    const { appid } = app\n\n    this.limitDatabaseUsage(appid).catch((err) => {\n      this.logger.error(`limitDatabaseUsage ${appid} error`, err)\n    })\n  }\n\n  async limitDatabaseUsage(appid: string) {\n    const bundle = await this.bundleService.findOne(appid)\n    const { databaseCapacity } = bundle.resource\n    const database = await this.databaseService.findOne(appid)\n    const region = await this.regionService.findByAppId(appid)\n    const permission = await this.databaseService.getUserPermission(\n      database.name,\n      database.user,\n      region,\n    )\n\n    if (databaseCapacity < database.dataSize) {\n      // overused\n      if (permission === DatabasePermission.ReadWrite) {\n        await this.databaseService.revokeWritePermission(\n          database.name,\n          database.user,\n          region,\n        )\n      }\n    } else {\n      if (permission === DatabasePermission.Read) {\n        await this.databaseService.grantWritePermission(\n          database.name,\n          database.user,\n          region,\n        )\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/database/database.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Logger,\n  Param,\n  Post,\n  Req,\n  Res,\n  UseGuards,\n  Put,\n  StreamableFile,\n  UploadedFile,\n  UseInterceptors,\n  Body,\n} from '@nestjs/common'\nimport {\n  ApiBearerAuth,\n  ApiBody,\n  ApiConsumes,\n  ApiOperation,\n  ApiTags,\n} from '@nestjs/swagger'\nimport { Policy, Proxy } from 'database-proxy/dist'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { IRequest, IResponse } from 'src/utils/interface'\nimport { DatabaseService } from './database.service'\nimport * as path from 'path'\nimport { createReadStream, existsSync, mkdirSync } from 'fs'\nimport { FileInterceptor } from '@nestjs/platform-express'\nimport { unlink, writeFile } from 'node:fs/promises'\nimport * as os from 'os'\nimport { ResponseUtil } from 'src/utils/response'\nimport { ImportDatabaseDto } from './dto/import-database.dto'\nimport { InjectUser } from 'src/utils/decorator'\nimport { User } from 'src/user/entities/user'\nimport { QuotaService } from 'src/user/quota.service'\nimport { DedicatedDatabaseService } from './dedicated-database/dedicated-database.service'\n\n@ApiTags('Database')\n@ApiBearerAuth('Authorization')\n@Controller('apps/:appid/databases')\nexport class DatabaseController {\n  private readonly logger = new Logger(DatabaseController.name)\n\n  constructor(\n    private readonly dbService: DatabaseService,\n    private readonly quotaService: QuotaService,\n    private readonly dedicatedDatabaseService: DedicatedDatabaseService,\n  ) {}\n\n  /**\n   * The database proxy for database management\n   * @param appid\n   * @param req\n   */\n  @ApiOperation({ summary: 'The database proxy for database management' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post('proxy')\n  async proxy(@Param('appid') appid: string, @Req() req: IRequest) {\n    const accessor =\n      (await this.dedicatedDatabaseService.getDatabaseAccessor(appid)) ||\n      (await this.dbService.getDatabaseAccessor(appid))\n\n    // Don't need policy rules, open all collections' access permission for dbm use.\n    // Just create a empty policy for proxy.\n    const proxy = new Proxy(accessor, new Policy(accessor))\n\n    // parse params\n    const params = proxy.parseParams(req.body)\n\n    // execute query\n    try {\n      const data = await proxy.execute(params)\n      await accessor.close()\n\n      // this response struct just for database proxy\n      return {\n        code: 0,\n        data,\n      }\n    } catch (error) {\n      await accessor.close()\n      if (error.code === 121) {\n        const errs = error.errInfo?.details?.schemaRulesNotSatisfied\n        return {\n          code: error.code,\n          error: errs,\n        }\n      }\n      return {\n        code: error.code || 1,\n        error: error,\n      }\n    }\n  }\n\n  @ApiOperation({ summary: 'Export database of an application' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get('export')\n  async exportDatabase(\n    @Param('appid') appid: string,\n    @Res({ passthrough: true }) res: IResponse,\n    @InjectUser() user: User,\n  ) {\n    // Check if user data import and export is out of limits\n    const databaseSyncLimit = await this.quotaService.databaseSyncLimit(\n      user._id,\n    )\n    if (databaseSyncLimit) {\n      return ResponseUtil.error('Database sync limit exceeded')\n    }\n    const tempFilePath = path.join(\n      os.tmpdir(),\n      'mongodb-data',\n      'export',\n      `${appid}-db.gz`,\n    )\n\n    // check if dir exists\n    if (!existsSync(path.dirname(tempFilePath))) {\n      mkdirSync(path.dirname(tempFilePath), { recursive: true })\n    }\n\n    await this.dbService.exportDatabase(appid, tempFilePath, user._id)\n    const filename = path.basename(tempFilePath)\n\n    res.set({\n      'Content-Disposition': `attachment; filename=\"${filename}\"`,\n    })\n    const file = createReadStream(tempFilePath)\n    return new StreamableFile(file)\n  }\n\n  @ApiOperation({ summary: 'Import database of an application' })\n  @ApiConsumes('multipart/form-data')\n  @ApiBody({\n    type: ImportDatabaseDto,\n  })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Put('import')\n  @UseInterceptors(\n    FileInterceptor('file', {\n      limits: {\n        fileSize: 256 * 1024 * 1024 * 1024, // 256 GB\n      },\n    }),\n  )\n  async importDatabase(\n    @UploadedFile() file: Express.Multer.File,\n    @Body('sourceAppid') sourceAppid: string,\n    @Param('appid') appid: string,\n    @InjectUser() user: User,\n  ) {\n    // Check if user data import and export is out of limits\n    const databaseSyncLimit = await this.quotaService.databaseSyncLimit(\n      user._id,\n    )\n    if (databaseSyncLimit) {\n      return ResponseUtil.error('Database sync limit exceeded')\n    }\n    // check if db is valid\n    if (!/^[a-z0-9]{6}$/.test(sourceAppid)) {\n      return ResponseUtil.error('Invalid source appid')\n    }\n    // check if file is .gz\n    if (file.mimetype !== 'application/gzip') {\n      return ResponseUtil.error('Invalid db file')\n    }\n\n    const tempFilePath = path.join(\n      os.tmpdir(),\n      'mongodb-data',\n      'import',\n      `${appid}-${sourceAppid}.gz`,\n    )\n\n    // check if dir exists\n    if (!existsSync(path.dirname(tempFilePath))) {\n      mkdirSync(path.dirname(tempFilePath), { recursive: true })\n    }\n\n    try {\n      await writeFile(tempFilePath, file.buffer)\n      await this.dbService.importDatabase(\n        appid,\n        sourceAppid,\n        tempFilePath,\n        user._id,\n      )\n      return ResponseUtil.ok({})\n    } finally {\n      if (existsSync(tempFilePath)) await unlink(tempFilePath)\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/database/database.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { CollectionService } from './collection/collection.service'\nimport { CollectionController } from './collection/collection.controller'\nimport { PolicyController } from './policy/policy.controller'\nimport { PolicyService } from './policy/policy.service'\nimport { DatabaseService } from './database.service'\nimport { DatabaseController } from './database.controller'\nimport { PolicyRuleService } from './policy/policy-rule.service'\nimport { PolicyRuleController } from './policy/policy-rule.controller'\nimport { MongoService } from './mongo.service'\nimport { ApplicationService } from 'src/application/application.service'\nimport { BundleService } from 'src/application/bundle.service'\nimport { DatabaseUsageLimitTaskService } from './database-usage-limit-task.service'\nimport { DatabaseUsageCaptureTaskService } from './database-usage-capture-task.service'\nimport { QuotaService } from 'src/user/quota.service'\nimport { SettingService } from 'src/setting/setting.service'\nimport { DedicatedDatabaseService } from './dedicated-database/dedicated-database.service'\nimport { DedicatedDatabaseTaskService } from './dedicated-database/dedicated-database-task.service'\nimport { HttpModule } from '@nestjs/axios'\nimport { ApplicationListener } from './listeners/application.listener'\nimport { DedicatedDatabaseMonitorService } from './monitor/monitor.service'\nimport { DedicatedDatabaseMonitorController } from './monitor/monitor.controller'\n\n@Module({\n  imports: [HttpModule],\n  controllers: [\n    CollectionController,\n    PolicyController,\n    DatabaseController,\n    PolicyRuleController,\n    DedicatedDatabaseMonitorController,\n  ],\n  providers: [\n    CollectionService,\n    PolicyService,\n    DatabaseService,\n    PolicyRuleService,\n    MongoService,\n    ApplicationService,\n    BundleService,\n    DatabaseUsageCaptureTaskService,\n    DatabaseUsageLimitTaskService,\n    SettingService,\n    QuotaService,\n    DedicatedDatabaseService,\n    DedicatedDatabaseTaskService,\n    DedicatedDatabaseMonitorService,\n    ApplicationListener,\n  ],\n  exports: [\n    CollectionService,\n    PolicyService,\n    DatabaseService,\n    PolicyRuleService,\n    MongoService,\n    DedicatedDatabaseService,\n  ],\n})\nexport class DatabaseModule {}\n"
  },
  {
    "path": "server/src/database/database.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport * as assert from 'node:assert'\nimport { MongoAccessor } from 'database-proxy'\nimport { GenerateAlphaNumericPassword } from 'src/utils/random'\nimport { MongoService } from './mongo.service'\nimport * as mongodb_uri from 'mongodb-uri'\nimport { RegionService } from 'src/region/region.service'\nimport {\n  CN_PUBLISHED_CONF,\n  CN_PUBLISHED_FUNCTIONS,\n  CN_PUBLISHED_WEBSITE_HOSTING,\n  TASK_LOCK_INIT_TIME,\n} from 'src/constants'\nimport { Region } from 'src/region/entities/region'\nimport { SystemDatabase } from '../system-database'\nimport {\n  Database,\n  DatabasePermission,\n  DatabasePhase,\n  DatabaseState,\n} from './entities/database'\nimport { exec } from 'node:child_process'\nimport { promisify } from 'node:util'\nimport { DatabaseSyncRecord } from './entities/database-sync-record'\nimport { MongoClient, ObjectId } from 'mongodb'\nimport { DedicatedDatabaseService } from './dedicated-database/dedicated-database.service'\nimport { CloudFunction } from 'src/function/entities/cloud-function'\nimport { ApplicationConfiguration } from 'src/application/entities/application-configuration'\n\nconst p_exec = promisify(exec)\n\n@Injectable()\nexport class DatabaseService {\n  private readonly db = SystemDatabase.db\n  private readonly logger = new Logger(DatabaseService.name)\n\n  constructor(\n    private readonly mongoService: MongoService,\n    private readonly regionService: RegionService,\n    private readonly dedicatedDatabaseService: DedicatedDatabaseService,\n  ) {}\n\n  async create(appid: string) {\n    const region = await this.regionService.findByAppId(appid)\n\n    const username = appid\n    const dbName = appid\n    const password = GenerateAlphaNumericPassword(64)\n\n    // create app database in mongodb\n    const res = await this.mongoService.createDatabase(\n      region,\n      dbName,\n      username,\n      password,\n    )\n\n    assert.equal(res.ok, 1, 'Create app database failed: ' + appid)\n\n    // create app database in database\n    await this.db.collection<Database>('Database').insertOne({\n      appid: appid,\n      name: dbName,\n      user: username,\n      password: password,\n      state: DatabaseState.Active,\n      phase: DatabasePhase.Created,\n      dataSize: 0,\n      lockedAt: TASK_LOCK_INIT_TIME,\n      usageCaptureLockedAt: TASK_LOCK_INIT_TIME,\n      usageLimitLockedAt: TASK_LOCK_INIT_TIME,\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    })\n\n    const database = await this.findOne(appid)\n    return database\n  }\n\n  async findOne(appid: string) {\n    const database = await this.db\n      .collection<Database>('Database')\n      .findOne({ appid })\n\n    return database\n  }\n\n  async delete(database: Database) {\n    const region = await this.regionService.findByAppId(database.appid)\n\n    // delete app database in mongodb\n    const res = await this.mongoService.deleteDatabase(region, database.name)\n    if (!res) return false\n\n    // delete app database in database\n    const doc = await this.db\n      .collection<Database>('Database')\n      .deleteOne({ appid: database.appid })\n\n    return doc\n  }\n\n  // Get application internal database connection uri\n  getInternalConnectionUri(region: Region, database: Database) {\n    // build app db connection uri from config\n    const parsed = mongodb_uri.parse(region.databaseConf.connectionUri)\n    parsed.database = database.name\n    parsed.username = database.user\n    parsed.password = database.password\n    parsed.options['authSource'] = database.name\n\n    return mongodb_uri.format(parsed)\n  }\n\n  // Get application control database connection uri\n  getControlConnectionUri(region: Region, database: Database) {\n    // build app db connection uri from config\n    const parsed = mongodb_uri.parse(region.databaseConf.controlConnectionUri)\n    parsed.database = database.name\n    parsed.username = database.user\n    parsed.password = database.password\n    parsed.options['authSource'] = database.name\n\n    return mongodb_uri.format(parsed)\n  }\n\n  /**\n   * Get database accessor that used for `database-proxy`\n   */\n  async getDatabaseAccessor(appid: string) {\n    const { client } = await this.findAndConnect(appid)\n    const accessor = new MongoAccessor(client)\n    return accessor\n  }\n\n  /**\n   * Find a database and connect to it\n   */\n  async findAndConnect(appid: string) {\n    const region = await this.regionService.findByAppId(appid)\n    const database = await this.findOne(appid)\n    if (!database) return null\n\n    const connectionUri = this.getControlConnectionUri(region, database)\n\n    const client = await this.mongoService.connectDatabase(\n      connectionUri,\n      database.name,\n    )\n    const db = client.db(database.name)\n    return { db, client }\n  }\n\n  async revokeWritePermission(name: string, username: string, region: Region) {\n    const conf = region.databaseConf\n    const client = new MongoClient(conf.controlConnectionUri)\n\n    try {\n      await client.connect()\n      const db = client.db(name)\n      const result = await db.command({\n        updateUser: username,\n        roles: [\n          { role: DatabasePermission.Read, db: name },\n          { role: 'dbAdmin', db: name },\n        ],\n      })\n      this.logger.log(`Revoke write permission of ${username} on ${name}`)\n      return result\n    } catch (error) {\n      this.logger.error(\n        `Revoke write permission of ${username} on ${name} error : `,\n        error,\n      )\n      throw error\n    } finally {\n      await client.close()\n    }\n  }\n\n  async grantWritePermission(name: string, username: string, region: Region) {\n    const conf = region.databaseConf\n    const client = new MongoClient(conf.controlConnectionUri)\n\n    try {\n      await client.connect()\n      const db = client.db(name)\n      const result = await db.command({\n        updateUser: username,\n        roles: [\n          { role: DatabasePermission.ReadWrite, db: name },\n          { role: 'dbAdmin', db: name },\n        ],\n      })\n      this.logger.warn(`Grant write permission to ${username} on ${name}`)\n      return result\n    } catch (error) {\n      this.logger.error(\n        `Grant write permission to ${username} on ${name} error : `,\n        error,\n      )\n      throw error\n    } finally {\n      await client.close()\n    }\n  }\n\n  async getUserPermission(name: string, username: string, region: Region) {\n    const conf = region.databaseConf\n    const client = new MongoClient(conf.controlConnectionUri)\n\n    try {\n      await client.connect()\n      const db = client.db(name)\n      const result = await db.command({\n        usersInfo: { user: username, db: name },\n      })\n      const permission =\n        result?.users?.[0].roles.findIndex(\n          (v) => v.role === DatabasePermission.ReadWrite,\n        ) !== -1\n          ? DatabasePermission.ReadWrite\n          : DatabasePermission.Read\n      return permission\n    } catch (error) {\n      this.logger.error(\n        `Get user permission of ${username} on ${name} error : `,\n        error,\n      )\n      throw error\n    } finally {\n      await client.close()\n    }\n  }\n\n  async exportDatabase(appid: string, filePath: string, uid: ObjectId) {\n    const region = await this.regionService.findByAppId(appid)\n    const sharedDatabase = await this.findOne(appid)\n    const dedicatedDatabase = await this.dedicatedDatabaseService.findOne(appid)\n\n    if (sharedDatabase && dedicatedDatabase) {\n      throw new Error(\n        `Database ${appid} found in both shared and dedicated databases.`,\n      )\n    }\n\n    if (!sharedDatabase && !dedicatedDatabase) {\n      throw new Error(\n        `Database  ${appid} not found in both shared and dedicated databases.`,\n      )\n    }\n    let connectionUri\n    if (sharedDatabase) {\n      connectionUri = this.getControlConnectionUri(region, sharedDatabase)\n    } else {\n      connectionUri = await this.dedicatedDatabaseService.getConnectionUri(\n        region,\n        dedicatedDatabase,\n      )\n    }\n\n    assert(connectionUri, `Database  ${appid} connection uri not found`)\n\n    try {\n      await p_exec(\n        `mongodump --uri='${connectionUri}' --gzip --archive=${filePath}`,\n      )\n      await this.db\n        .collection<DatabaseSyncRecord>('DatabaseSyncRecord')\n        .insertOne({ uid, createdAt: new Date() })\n    } catch (error) {\n      this.logger.error(`failed to export db ${appid}`, error)\n      throw error\n    }\n  }\n\n  async importDatabase(\n    appid: string,\n    dbName: string,\n    filePath: string,\n    uid: ObjectId,\n  ): Promise<void> {\n    const region = await this.regionService.findByAppId(appid)\n\n    const sharedDatabase = await this.findOne(appid)\n    const dedicatedDatabase = await this.dedicatedDatabaseService.findOne(appid)\n\n    if (sharedDatabase && dedicatedDatabase) {\n      throw new Error(\n        `Database ${appid} found in both shared and dedicated databases.`,\n      )\n    }\n\n    if (!sharedDatabase && !dedicatedDatabase) {\n      throw new Error(\n        `Database ${appid} not found in both shared and dedicated databases.`,\n      )\n    }\n    let connectionUri\n    if (sharedDatabase) {\n      connectionUri = this.getControlConnectionUri(region, sharedDatabase)\n    } else {\n      connectionUri = await this.dedicatedDatabaseService.getConnectionUri(\n        region,\n        dedicatedDatabase,\n      )\n    }\n    assert(connectionUri, `Database ${appid} connection uri not found`)\n\n    try {\n      await p_exec(\n        `mongorestore --uri='${connectionUri}' --gzip --archive='${filePath}' --nsFrom=\"${dbName}.*\" --nsTo=\"${appid}.*\" -v --nsInclude=\"${dbName}.*\"`,\n      )\n\n      await this.recoverFunctionsToSystemDatabase(appid, uid)\n\n      await this.db\n        .collection<DatabaseSyncRecord>('DatabaseSyncRecord')\n        .insertOne({ uid, createdAt: new Date() })\n    } catch (error) {\n      // eslint-disable-next-line no-console\n      console.error(`failed to import db to ${appid}:`, error)\n      throw error\n    }\n  }\n\n  async recoverFunctionsToSystemDatabase(appid: string, uid: ObjectId) {\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(appid)) ||\n      (await this.findAndConnect(appid))\n\n    try {\n      const appFunctionCollection = db.collection(CN_PUBLISHED_FUNCTIONS)\n      const appConfCollection = db.collection(CN_PUBLISHED_CONF)\n      const appWebsiteCollection = db.collection(CN_PUBLISHED_WEBSITE_HOSTING)\n\n      const functionsExist = await this.db\n        .collection<CloudFunction>('CloudFunction')\n        .countDocuments({ appid })\n\n      if (functionsExist) {\n        this.logger.debug(`${appid} Functions already exist in system database`)\n        return\n      }\n\n      const funcs: CloudFunction[] = await appFunctionCollection\n        .find<CloudFunction>({})\n        .toArray()\n\n      if (funcs.length === 0) {\n        this.logger.debug(` ${appid} No functions for recover.`)\n        return\n      }\n\n      funcs.forEach((func) => {\n        delete func._id\n        func.appid = appid\n        func.createdBy = uid\n      })\n\n      await this.db.collection<CloudFunction>('CloudFunction').insertMany(funcs)\n\n      // sync conf\n      const conf = await this.db\n        .collection<ApplicationConfiguration>('ApplicationConfiguration')\n        .findOne({ appid })\n\n      await appConfCollection.deleteMany({})\n      await appConfCollection.insertOne(conf)\n\n      await appWebsiteCollection.deleteMany({})\n    } finally {\n      await client.close()\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/database/dedicated-database/dedicated-database-task.service.ts",
    "content": "import { Cron, CronExpression } from '@nestjs/schedule'\nimport { SystemDatabase } from 'src/system-database'\nimport {\n  DedicatedDatabase,\n  DedicatedDatabasePhase,\n  DedicatedDatabaseState,\n} from '../entities/dedicated-database'\nimport { DedicatedDatabaseService } from './dedicated-database.service'\nimport { ServerConfig, TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { Injectable, Logger } from '@nestjs/common'\nimport { RegionService } from 'src/region/region.service'\nimport { formatK8sErrorAsJson } from 'src/utils/k8s-error'\n\n@Injectable()\nexport class DedicatedDatabaseTaskService {\n  private readonly logger = new Logger(DedicatedDatabaseTaskService.name)\n  private readonly lockTimeout = 15 // in seconds\n  private readonly db = SystemDatabase.db\n\n  constructor(\n    private readonly regionService: RegionService,\n    private readonly dbService: DedicatedDatabaseService,\n  ) {}\n\n  @Cron(CronExpression.EVERY_SECOND)\n  async tick() {\n    if (ServerConfig.DISABLED_INSTANCE_TASK) {\n      return\n    }\n\n    this.handleDeletingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n    this.handleStoppingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n    this.handleStartingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n    this.handleDeletedState().catch((err) => {\n      this.logger.error(err)\n    })\n    this.handleStoppedState().catch((err) => {\n      this.logger.error(err)\n    })\n    this.handleRestartingState().catch((err) => {\n      this.logger.error(err)\n    })\n    this.handleRunningState().catch((err) => {\n      this.logger.error(err)\n    })\n    this.handleUpdatingState().catch((err) => {\n      this.logger.error(err)\n    })\n  }\n\n  async handleStartingPhase() {\n    const res = await this.db\n      .collection<DedicatedDatabase>('DedicatedDatabase')\n      .findOneAndUpdate(\n        {\n          phase: DedicatedDatabasePhase.Starting,\n          lockedAt: { $lt: new Date(Date.now() - this.lockTimeout * 1000) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { sort: { lockedAt: 1, updatedAt: 1 }, returnDocument: 'after' },\n      )\n\n    if (!res.value) return\n    const data = res.value\n    const appid = data.appid\n\n    const region = await this.regionService.findByAppId(appid)\n    const manifest = await this.dbService.getDeployManifest(region, appid)\n\n    const waitingTime = Date.now() - data.updatedAt.getTime()\n\n    // create dedicated database\n    if (!manifest) {\n      try {\n        await this.dbService.applyDeployManifest(region, appid)\n      } catch (error) {\n        this.logger.error(\n          `apply dedicated database ${appid} yaml error:\\n${formatK8sErrorAsJson(\n            error,\n          )}`,\n        )\n      }\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    // Wait for KubeBlock controller to initialize if Cluster phase is empty or not initialized\n    if (!manifest.status?.phase || manifest.status.phase === '') {\n      this.logger.debug(\n        `Cluster ${appid} phase is not initialized yet, waiting...`,\n      )\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    if (manifest.status?.phase === 'Creating') {\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    // start dedicated database\n    if (manifest.status?.phase !== 'Running') {\n      const OpsRequestManifest =\n        await this.dbService.getKubeBlockOpsRequestManifest(\n          region,\n          appid,\n          'start',\n        )\n\n      if (OpsRequestManifest) {\n        await this.relock(appid, waitingTime)\n        return\n      }\n\n      try {\n        await this.dbService.applyKubeBlockOpsRequestManifest(\n          region,\n          appid,\n          'start',\n        )\n      } catch (error) {\n        this.logger.error(\n          `apply dedicated database ops request start ${appid} yaml error:\\n${formatK8sErrorAsJson(\n            error,\n          )}`,\n        )\n      }\n\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    const connectionOk = await this.dbService.databaseConnectionIsOk(appid)\n    if (!connectionOk) {\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    await this.dbService.deleteKubeBlockOpsManifest(region, appid, 'start')\n\n    await this.db.collection<DedicatedDatabase>('DedicatedDatabase').updateOne(\n      {\n        appid,\n        phase: DedicatedDatabasePhase.Starting,\n      },\n      {\n        $set: {\n          state: DedicatedDatabaseState.Running,\n          phase: DedicatedDatabasePhase.Started,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    this.logger.debug(`dedicated database ${appid} updated to phase started`)\n  }\n\n  async handleDeletingPhase() {\n    const res = await this.db\n      .collection<DedicatedDatabase>('DedicatedDatabase')\n      .findOneAndUpdate(\n        {\n          phase: DedicatedDatabasePhase.Deleting,\n          lockedAt: {\n            $lt: new Date(Date.now() - this.lockTimeout * 1000),\n          },\n        },\n        { $set: { lockedAt: new Date() } },\n        { sort: { lockedAt: 1, updatedAt: 1 }, returnDocument: 'after' },\n      )\n\n    if (!res.value) return\n    const data = res.value\n    const appid = data.appid\n\n    const waitingTime = Date.now() - data.updatedAt.getTime()\n\n    const region = await this.regionService.findByAppId(appid)\n    const manifest = await this.dbService.getDeployManifest(region, appid)\n\n    if (manifest) {\n      await this.dbService.deleteDeployManifest(region, appid)\n      await this.relock(appid, waitingTime)\n    }\n\n    await this.db.collection<DedicatedDatabase>('DedicatedDatabase').updateOne(\n      {\n        appid,\n        phase: DedicatedDatabasePhase.Deleting,\n      },\n      {\n        $set: {\n          phase: DedicatedDatabasePhase.Deleted,\n          lockedAt: TASK_LOCK_INIT_TIME,\n        },\n      },\n    )\n  }\n\n  async handleStoppingPhase() {\n    const res = await this.db\n      .collection<DedicatedDatabase>('DedicatedDatabase')\n      .findOneAndUpdate(\n        {\n          phase: DedicatedDatabasePhase.Stopping,\n          lockedAt: {\n            $lt: new Date(Date.now() - this.lockTimeout * 1000),\n          },\n        },\n        {\n          $set: {\n            lockedAt: new Date(),\n          },\n        },\n      )\n\n    if (!res.value) return\n    const data = res.value\n    const appid = data.appid\n\n    const region = await this.regionService.findByAppId(appid)\n    const waitingTime = Date.now() - data.updatedAt.getTime()\n\n    const manifest = await this.dbService.getDeployManifest(region, appid)\n\n    if (!manifest) {\n      this.logger.warn(`Deploy manifest not found for ${appid}, skip stopping`)\n      await this.db\n        .collection<DedicatedDatabase>('DedicatedDatabase')\n        .updateOne(\n          {\n            appid,\n          },\n          {\n            $set: {\n              state: DedicatedDatabaseState.Stopped,\n              phase: DedicatedDatabasePhase.Stopped,\n              lockedAt: TASK_LOCK_INIT_TIME,\n              updatedAt: new Date(),\n            },\n          },\n        )\n      this.logger.debug(\n        `update dedicated database ${appid} state to stopped,note: ddb manifest not found`,\n      )\n\n      return\n    }\n\n    if (manifest.status?.phase !== 'Stopped') {\n      const OpsRequestManifest =\n        await this.dbService.getKubeBlockOpsRequestManifest(\n          region,\n          appid,\n          'stop',\n        )\n\n      if (OpsRequestManifest) {\n        await this.relock(appid, waitingTime)\n        return\n      }\n\n      try {\n        await this.dbService.applyKubeBlockOpsRequestManifest(\n          region,\n          appid,\n          'stop',\n        )\n      } catch (error) {\n        this.logger.error(\n          `apply dedicated database ops request stop ${appid} yaml error:\\n${formatK8sErrorAsJson(\n            error,\n          )}`,\n        )\n      }\n\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    await this.dbService.deleteKubeBlockOpsManifest(region, appid, 'stop')\n\n    await this.db.collection<DedicatedDatabase>('DedicatedDatabase').updateOne(\n      {\n        appid: data.appid,\n        phase: DedicatedDatabasePhase.Stopping,\n      },\n      {\n        $set: {\n          phase: DedicatedDatabasePhase.Stopped,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    this.logger.log(`dedicated database ${appid} updated to phase Stopped`)\n  }\n\n  async handleDeletedState() {\n    const db = SystemDatabase.db\n\n    await db.collection<DedicatedDatabase>('DedicatedDatabase').updateMany(\n      {\n        state: DedicatedDatabaseState.Deleted,\n        phase: {\n          $in: [DedicatedDatabasePhase.Started, DedicatedDatabasePhase.Stopped],\n        },\n      },\n      {\n        $set: {\n          phase: DedicatedDatabasePhase.Deleting,\n          lockedAt: TASK_LOCK_INIT_TIME,\n        },\n      },\n    )\n\n    await db.collection<DedicatedDatabase>('DedicatedDatabase').deleteMany({\n      state: DedicatedDatabaseState.Deleted,\n      phase: DedicatedDatabasePhase.Deleted,\n    })\n  }\n\n  async handleStoppedState() {\n    const db = SystemDatabase.db\n\n    await db.collection<DedicatedDatabase>('DedicatedDatabase').updateMany(\n      {\n        state: DedicatedDatabaseState.Stopped,\n        phase: {\n          $in: [DedicatedDatabasePhase.Started],\n        },\n      },\n      {\n        $set: {\n          phase: DedicatedDatabasePhase.Stopping,\n          lockedAt: TASK_LOCK_INIT_TIME,\n        },\n      },\n    )\n  }\n\n  async handleRunningState() {\n    const db = SystemDatabase.db\n\n    await db.collection<DedicatedDatabase>('DedicatedDatabase').updateMany(\n      {\n        state: DedicatedDatabaseState.Running,\n        phase: {\n          $in: [DedicatedDatabasePhase.Stopped],\n        },\n      },\n      {\n        $set: {\n          phase: DedicatedDatabasePhase.Starting,\n          lockedAt: TASK_LOCK_INIT_TIME,\n        },\n      },\n    )\n  }\n\n  async handleRestartingState() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<DedicatedDatabase>('DedicatedDatabase')\n      .findOneAndUpdate(\n        {\n          state: DedicatedDatabaseState.Restarting,\n          phase: DedicatedDatabasePhase.Started,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { sort: { lockedAt: 1, updatedAt: 1 }, returnDocument: 'after' },\n      )\n\n    if (!res.value) return\n    const ddb = res.value\n    const waitingTime = Date.now() - ddb.updatedAt.getTime()\n\n    const appid = ddb.appid\n    const region = await this.regionService.findByAppId(appid)\n\n    const isDeployManifestChanged =\n      await this.dbService.isDeployManifestChanged(region, appid)\n\n    if (isDeployManifestChanged) {\n      await this.db\n        .collection<DedicatedDatabase>('DedicatedDatabase')\n        .updateOne(\n          {\n            appid,\n          },\n          {\n            $set: {\n              state: DedicatedDatabaseState.Updating,\n              phase: DedicatedDatabasePhase.Started,\n              lockedAt: TASK_LOCK_INIT_TIME,\n              updatedAt: new Date(),\n            },\n          },\n        )\n      return\n    }\n\n    const OpsRequestManifest =\n      await this.dbService.getKubeBlockOpsRequestManifest(\n        region,\n        appid,\n        'restart',\n      )\n\n    if (!OpsRequestManifest) {\n      try {\n        await this.dbService.applyKubeBlockOpsRequestManifest(\n          region,\n          appid,\n          'restart',\n        )\n      } catch (error) {\n        this.logger.error(\n          `apply dedicated database restart ${appid} yaml error:\\n${formatK8sErrorAsJson(\n            error,\n          )}`,\n        )\n      }\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    const ddbDeployManifest = await this.dbService.getDeployManifest(\n      region,\n      appid,\n    )\n\n    if (!ddbDeployManifest) {\n      this.logger.warn(`Deploy manifest not found for ${appid}, skip restart`)\n      await this.db\n        .collection<DedicatedDatabase>('DedicatedDatabase')\n        .updateOne(\n          {\n            appid,\n          },\n          {\n            $set: {\n              state: DedicatedDatabaseState.Stopped,\n              phase: DedicatedDatabasePhase.Stopped,\n              lockedAt: TASK_LOCK_INIT_TIME,\n              updatedAt: new Date(),\n            },\n          },\n        )\n      return\n    }\n\n    const isRestartSuccessful =\n      ddbDeployManifest?.status?.phase === 'Running' &&\n      OpsRequestManifest?.status?.phase === 'Succeed'\n\n    if (!isRestartSuccessful) {\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    await this.dbService.deleteKubeBlockOpsManifest(region, appid, 'restart')\n\n    await db.collection<DedicatedDatabase>('DedicatedDatabase').updateOne(\n      {\n        appid: appid,\n      },\n      {\n        $set: {\n          state: DedicatedDatabaseState.Running,\n          phase: DedicatedDatabasePhase.Started,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n  }\n\n  async handleUpdatingState() {\n    const res = await this.db\n      .collection<DedicatedDatabase>('DedicatedDatabase')\n      .findOneAndUpdate(\n        {\n          state: DedicatedDatabaseState.Updating,\n          phase: DedicatedDatabasePhase.Started,\n          lockedAt: { $lt: new Date(Date.now() - this.lockTimeout * 1000) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { sort: { lockedAt: 1, updatedAt: 1 }, returnDocument: 'after' },\n      )\n\n    if (!res.value) return\n    const data = res.value\n    const appid = data.appid\n\n    const region = await this.regionService.findByAppId(appid)\n    const manifest = await this.dbService.getDeployManifest(region, appid)\n\n    const waitingTime = Date.now() - data.updatedAt.getTime()\n\n    if (!manifest) {\n      this.logger.warn(`Deploy manifest not found for ${appid}, skip update`)\n      await this.db\n        .collection<DedicatedDatabase>('DedicatedDatabase')\n        .updateOne(\n          {\n            appid,\n          },\n          {\n            $set: {\n              state: DedicatedDatabaseState.Stopped,\n              phase: DedicatedDatabasePhase.Stopped,\n              lockedAt: TASK_LOCK_INIT_TIME,\n              updatedAt: new Date(),\n            },\n          },\n        )\n      return\n    }\n\n    if (manifest.status?.phase === 'Updating') {\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    const isDeployManifestChanged =\n      await this.dbService.isDeployManifestChanged(region, appid)\n\n    if (isDeployManifestChanged) {\n      await this.dbService.updateDeployManifest(region, appid)\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    if (manifest.status?.phase !== 'Running') {\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    const connectionOk = await this.dbService.databaseConnectionIsOk(appid)\n    if (!connectionOk) {\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    await this.dbService.deleteKubeBlockOpsManifestForSpec(\n      region,\n      appid,\n      'verticalScaling',\n    )\n    await this.dbService.deleteKubeBlockOpsManifestForSpec(\n      region,\n      appid,\n      'horizontalScaling',\n    )\n    await this.dbService.deleteKubeBlockOpsManifestForSpec(\n      region,\n      appid,\n      'volumeExpansion',\n    )\n\n    await this.db.collection<DedicatedDatabase>('DedicatedDatabase').updateOne(\n      {\n        appid,\n      },\n      {\n        $set: {\n          state: DedicatedDatabaseState.Running,\n          phase: DedicatedDatabasePhase.Started,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n    return\n  }\n\n  /**\n   * Relock application by appid, lockedTime is in milliseconds\n   */\n  async relock(appid: string, lockedTime = 0) {\n    if (lockedTime <= 2 * 60 * 1000) {\n      lockedTime = Math.ceil(lockedTime / 10)\n    }\n\n    if (lockedTime > 2 * 60 * 1000) {\n      lockedTime = this.lockTimeout * 1000\n    }\n\n    const db = SystemDatabase.db\n    const lockedAt = new Date(Date.now() - 1000 * this.lockTimeout + lockedTime)\n    await db\n      .collection<DedicatedDatabase>('DedicatedDatabase')\n      .updateOne({ appid: appid }, { $set: { lockedAt } })\n  }\n\n  private getHourTime() {\n    const latestTime = new Date()\n    latestTime.setMinutes(0)\n    latestTime.setSeconds(0)\n    latestTime.setMilliseconds(0)\n    latestTime.setHours(latestTime.getHours())\n    return latestTime\n  }\n}\n"
  },
  {
    "path": "server/src/database/dedicated-database/dedicated-database.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { Region } from 'src/region/entities/region'\nimport {\n  DedicatedDatabase,\n  DedicatedDatabasePhase,\n  DedicatedDatabaseSpec,\n  DedicatedDatabaseState,\n} from '../entities/dedicated-database'\nimport { RegionService } from 'src/region/region.service'\nimport { ClusterService } from 'src/region/cluster/cluster.service'\nimport * as _ from 'lodash'\nimport { SystemDatabase } from 'src/system-database'\nimport { KubernetesObject, loadAllYaml } from '@kubernetes/client-node'\nimport { TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { ClientSession } from 'mongodb'\nimport * as mongodb_uri from 'mongodb-uri'\nimport { MongoService } from 'src/database/mongo.service'\nimport { MongoAccessor } from 'database-proxy'\nimport { ApplicationBundle } from 'src/application/entities/application-bundle'\nimport * as assert from 'assert'\nimport { extractNumber } from 'src/utils/number'\nimport { formatK8sErrorAsJson } from 'src/utils/k8s-error'\nimport { ServerConfig, KUBEBLOCK_V5_UPGRADE_API_TIMEOUT } from 'src/constants'\n\nconst getDedicatedDatabaseName = (appid: string) => appid\n\n@Injectable()\nexport class DedicatedDatabaseService {\n  private readonly logger = new Logger(DedicatedDatabase.name)\n  constructor(\n    private readonly cluster: ClusterService,\n    private readonly regionService: RegionService,\n    private readonly mongoService: MongoService,\n  ) {}\n\n  async create(appid: string, session?: ClientSession) {\n    const db = SystemDatabase.db\n\n    await db.collection<DedicatedDatabase>('DedicatedDatabase').insertOne(\n      {\n        appid,\n        name: appid,\n        createdAt: new Date(),\n        updatedAt: new Date(),\n        lockedAt: TASK_LOCK_INIT_TIME,\n        phase: DedicatedDatabasePhase.Starting,\n        state: DedicatedDatabaseState.Running,\n      },\n      { session },\n    )\n  }\n\n  async applyDeployManifest(\n    region: Region,\n    appid: string,\n    patch?: Partial<DedicatedDatabaseSpec>,\n  ) {\n    const spec = await this.getDedicatedDatabaseSpec(appid)\n    const manifest = this.makeDeployManifest(region, appid, {\n      ...spec,\n      ...patch,\n    })\n    const res = await this.cluster.applyYamlString(region, manifest)\n    return res\n  }\n\n  async updateDeployManifest(region: Region, appid: string) {\n    const spec = await this.getDedicatedDatabaseSpec(appid)\n\n    const manifest = await this.getDeployManifest(region, appid)\n    if (!manifest) {\n      this.logger.warn(`Deploy manifest not found for ${appid}, skip update`)\n      return null\n    }\n\n    const componentSpec = manifest.spec.componentSpecs[0]\n\n    // Extract current values from manifest\n    const currentReplicas = Number(componentSpec.replicas)\n    const currentLimitCPU = extractNumber(componentSpec.resources?.limits?.cpu)\n    const currentLimitMemory = extractNumber(\n      componentSpec.resources?.limits?.memory,\n    )\n    const currentCapacity = extractNumber(\n      componentSpec.volumeClaimTemplates?.[0]?.spec?.resources?.requests\n        ?.storage,\n    )\n\n    // Detect what has changed (using same comparison logic as isDeployManifestChanged)\n    const isLimitCpuMatch =\n      spec.limitCPU === currentLimitCPU ||\n      spec.limitCPU / 1000 === currentLimitCPU\n    const isLimitMemoryMatch =\n      spec.limitMemory === currentLimitMemory ||\n      spec.limitMemory / 1024 === currentLimitMemory\n    const isCapacityMatch =\n      spec.capacity === currentCapacity ||\n      spec.capacity / 1024 === currentCapacity\n    const isReplicasMatch = spec.replicas === currentReplicas\n\n    const cpuOrMemoryChanged = !isLimitCpuMatch || !isLimitMemoryMatch\n    const replicasChanged = !isReplicasMatch\n    const capacityChanged = !isCapacityMatch\n\n    const results: any[] = []\n\n    // Apply verticalScaling if CPU or memory changed\n    if (cpuOrMemoryChanged) {\n      try {\n        const OpsRequestManifest =\n          await this.getKubeBlockOpsRequestManifestForSpec(\n            region,\n            appid,\n            'verticalScaling',\n          )\n        if (!OpsRequestManifest) {\n          const result = await this.applyKubeBlockOpsRequestManifestForSpec(\n            region,\n            appid,\n            spec,\n            'verticalScaling',\n          )\n          results.push(result)\n          this.logger.log(\n            `Applied verticalScaling ops request for ${appid}: limitCPU=${spec.limitCPU}m, limitMemory=${spec.limitMemory}Mi`,\n          )\n        }\n      } catch (error) {\n        this.logger.error(\n          `Failed to apply verticalScaling ops request for ${appid}:\\n${formatK8sErrorAsJson(\n            error,\n          )}`,\n        )\n      }\n    }\n\n    // Apply horizontalScaling if replicas changed\n    if (replicasChanged) {\n      try {\n        const OpsRequestManifest =\n          await this.getKubeBlockOpsRequestManifestForSpec(\n            region,\n            appid,\n            'horizontalScaling',\n          )\n\n        if (!OpsRequestManifest) {\n          const result = await this.applyKubeBlockOpsRequestManifestForSpec(\n            region,\n            appid,\n            spec,\n            'horizontalScaling',\n          )\n\n          // Call KubeBlock v5 compatibility API if needed\n          await this.handleKubeBlockV5Upgrade(appid, manifest, spec.replicas)\n\n          results.push(result)\n          this.logger.log(\n            `Applied horizontalScaling ops request for ${appid}: replicas=${spec.replicas}`,\n          )\n        }\n      } catch (error) {\n        this.logger.error(\n          `Failed to apply horizontalScaling ops request for ${appid}:\\n${formatK8sErrorAsJson(\n            error,\n          )}`,\n        )\n      }\n    }\n\n    // Apply volumeExpansion if capacity changed\n    if (capacityChanged) {\n      try {\n        const OpsRequestManifest =\n          await this.getKubeBlockOpsRequestManifestForSpec(\n            region,\n            appid,\n            'volumeExpansion',\n          )\n        if (!OpsRequestManifest) {\n          const result = await this.applyKubeBlockOpsRequestManifestForSpec(\n            region,\n            appid,\n            spec,\n            'volumeExpansion',\n          )\n          results.push(result)\n          this.logger.log(\n            `Applied volumeExpansion ops request for ${appid}: capacity=${\n              spec.capacity / 1024\n            }Gi`,\n          )\n        }\n      } catch (error) {\n        this.logger.error(\n          `Failed to apply volumeExpansion ops request for ${appid}:\\n${formatK8sErrorAsJson(\n            error,\n          )}`,\n        )\n      }\n    }\n\n    // If nothing changed, return null\n    if (!cpuOrMemoryChanged && !replicasChanged && !capacityChanged) {\n      this.logger.debug(`No changes detected for ${appid}, skip update`)\n      return null\n    }\n\n    return results.length === 1 ? results[0] : results\n  }\n\n  async getDedicatedDatabaseSpec(\n    appid: string,\n  ): Promise<DedicatedDatabaseSpec> {\n    const db = SystemDatabase.db\n\n    const bundle = await db\n      .collection<ApplicationBundle>('ApplicationBundle')\n      .findOne({ appid })\n\n    return bundle.resource.dedicatedDatabase\n  }\n\n  async findOne(appid: string) {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<DedicatedDatabase>('DedicatedDatabase')\n      .findOne({\n        appid,\n      })\n\n    return res\n  }\n\n  async deleteDeployManifest(region: Region, appid: string) {\n    const manifest = await this.getDeployManifest(region, appid)\n    if (!manifest) {\n      return\n    }\n    const res = await this.cluster.deleteCustomObject(region, manifest)\n    return res\n  }\n\n  async getDeployManifest(region: Region, appid: string) {\n    const api = this.cluster.makeObjectApi(region)\n    const emptyManifest = this.makeDeployManifest(region, appid)\n    const specs = loadAllYaml(emptyManifest)\n    assert(\n      specs && specs.length > 0,\n      'the deploy manifest of database should not be empty',\n    )\n    const spec = specs[0]\n\n    try {\n      const manifest = await api.read(spec)\n      return manifest.body as KubernetesObject & { spec: any; status: any }\n    } catch (err) {\n      return null\n    }\n  }\n\n  makeDeployManifest(\n    region: Region,\n    appid: string,\n    dto?: DedicatedDatabaseSpec,\n  ) {\n    dto = dto || {\n      limitCPU: 0,\n      limitMemory: 0,\n      requestCPU: 0,\n      requestMemory: 0,\n      replicas: 0,\n      capacity: 0,\n    }\n    const { limitCPU, limitMemory, replicas, capacity } = dto\n    const name = getDedicatedDatabaseName(appid)\n\n    const requestCPU =\n      limitCPU * (region.bundleConf?.cpuRequestLimitRatio || 0.1)\n    const requestMemory =\n      limitMemory * (region.bundleConf?.memoryRequestLimitRatio || 0.5)\n\n    const template = region.deployManifest.database\n    const tmpl = _.template(template)\n    // Capacity: Convert to Gi format, e.g., \"10Gi\"\n    const manifest = tmpl({\n      name,\n      limitCPU,\n      limitMemory,\n      requestCPU,\n      requestMemory,\n      capacity: capacity / 1024,\n      replicas,\n    })\n\n    return manifest\n  }\n\n  async isDeployManifestChanged(\n    region: Region,\n    appid: string,\n  ): Promise<boolean> {\n    const ddbDeployManifest = await this.getDeployManifest(region, appid)\n\n    if (!ddbDeployManifest) {\n      this.logger.debug(`restart ddb,  deploy manifest not found for ${appid}`)\n      return true\n    }\n\n    const replicas = Number(ddbDeployManifest.spec.componentSpecs[0].replicas)\n\n    const limitCPU = extractNumber(\n      ddbDeployManifest.spec.componentSpecs[0].resources?.limits?.cpu,\n    )\n    const limitMemory = extractNumber(\n      ddbDeployManifest.spec.componentSpecs[0].resources?.limits?.memory,\n    )\n    const capacity = extractNumber(\n      ddbDeployManifest.spec.componentSpecs[0]?.volumeClaimTemplates[0]?.spec\n        ?.resources?.requests?.storage,\n    )\n\n    const spec = await this.getDedicatedDatabaseSpec(appid)\n\n    const isLimitCpuMatch =\n      spec.limitCPU === limitCPU || spec.limitCPU / 1000 === limitCPU\n    const isLimitMemoryMatch =\n      spec.limitMemory === limitMemory ||\n      spec.limitMemory / 1024 === limitMemory\n    const isCapacityMatch =\n      spec.capacity === capacity || spec.capacity / 1024 === capacity\n    const isReplicasMatch = spec.replicas === replicas\n\n    return !(\n      isLimitCpuMatch &&\n      isLimitMemoryMatch &&\n      isReplicasMatch &&\n      isCapacityMatch\n    )\n  }\n\n  async applyKubeBlockOpsRequestManifest(\n    region: Region,\n    appid: string,\n    type: 'restart' | 'stop' | 'start' = 'restart',\n  ) {\n    const manifest = this.makeKubeBlockOpsRequestManifest(region, appid, type)\n    const res = await this.cluster.applyYamlString(region, manifest)\n    return res\n  }\n\n  async applyKubeBlockOpsRequestManifestForSpec(\n    region: Region,\n    appid: string,\n    spec: DedicatedDatabaseSpec,\n    type: 'verticalScaling' | 'horizontalScaling' | 'volumeExpansion',\n  ) {\n    const manifest = this.makeKubeBlockOpsRequestManifestForSpec(\n      region,\n      appid,\n      spec,\n      type,\n    )\n    const res = await this.cluster.applyYamlString(region, manifest)\n    return res\n  }\n\n  async deleteKubeBlockOpsManifest(\n    region: Region,\n    appid: string,\n    type: 'restart' | 'stop' | 'start' = 'restart',\n  ) {\n    const manifest = await this.getKubeBlockOpsRequestManifest(\n      region,\n      appid,\n      type,\n    )\n    if (!manifest) {\n      return\n    }\n    const res = await this.cluster.deleteCustomObject(region, manifest)\n    return res\n  }\n\n  async deleteKubeBlockOpsManifestForSpec(\n    region: Region,\n    appid: string,\n    type: 'verticalScaling' | 'horizontalScaling' | 'volumeExpansion',\n  ) {\n    const manifest = await this.getKubeBlockOpsRequestManifestForSpec(\n      region,\n      appid,\n      type,\n    )\n    if (!manifest) {\n      return\n    }\n    const res = await this.cluster.deleteCustomObject(region, manifest)\n    return res\n  }\n\n  async getKubeBlockOpsRequestManifest(\n    region: Region,\n    appid: string,\n    type: 'restart' | 'stop' | 'start' = 'restart',\n  ) {\n    const api = this.cluster.makeObjectApi(region)\n    const emptyManifest = this.makeKubeBlockOpsRequestManifest(\n      region,\n      appid,\n      type,\n    )\n    const specs = loadAllYaml(emptyManifest)\n    assert(\n      specs && specs.length > 0,\n      'the OpsRequest manifest of database should not be empty',\n    )\n    const spec = specs[0]\n    try {\n      const manifest = await api.read(spec)\n      return manifest.body as KubernetesObject & { spec: any; status: any }\n    } catch (err) {\n      return null\n    }\n  }\n\n  async getKubeBlockOpsRequestManifestForSpec(\n    region: Region,\n    appid: string,\n    type: 'verticalScaling' | 'horizontalScaling' | 'volumeExpansion',\n  ) {\n    const spec = await this.getDedicatedDatabaseSpec(appid)\n    const api = this.cluster.makeObjectApi(region)\n    const emptyManifest = this.makeKubeBlockOpsRequestManifestForSpec(\n      region,\n      appid,\n      spec,\n      type,\n    )\n    const specs = loadAllYaml(emptyManifest)\n    assert(\n      specs && specs.length > 0,\n      'the OpsRequest manifest of database should not be empty',\n    )\n    const specObj = specs[0]\n    try {\n      const manifest = await api.read(specObj)\n      return manifest.body as KubernetesObject & { spec: any; status: any }\n    } catch (err) {\n      return null\n    }\n  }\n\n  makeKubeBlockOpsRequestManifest(\n    region: Region,\n    appid: string,\n    type: 'restart' | 'stop' | 'start' = 'restart',\n  ) {\n    const clusterName = getDedicatedDatabaseName(appid)\n\n    let template: string\n    let name: string\n    switch (type) {\n      case 'restart':\n        template = region.deployManifest.databaseOpsRequestRestart\n        name = `${clusterName}-restart`\n        break\n      case 'stop':\n        template = region.deployManifest.databaseOpsRequestStop\n        name = `${clusterName}-stop`\n        break\n      case 'start':\n        template = region.deployManifest.databaseOpsRequestStart\n        name = `${clusterName}-start`\n        break\n      default:\n        // This should never happen due to TypeScript type checking,\n        // but provides runtime safety\n        throw new Error(`Unknown ops request type: ${type}`)\n    }\n\n    const tmpl = _.template(template)\n\n    const manifest = tmpl({\n      name,\n      clusterName,\n    })\n\n    return manifest\n  }\n\n  makeKubeBlockOpsRequestManifestForSpec(\n    region: Region,\n    appid: string,\n    spec: DedicatedDatabaseSpec,\n    type: 'verticalScaling' | 'horizontalScaling' | 'volumeExpansion',\n  ) {\n    const clusterName = getDedicatedDatabaseName(appid)\n\n    let template: string\n    let name: string\n    switch (type) {\n      case 'verticalScaling':\n        template = region.deployManifest.databaseOpsRequestVerticalScaling\n        name = `${clusterName}-vertical-scaling`\n        break\n      case 'horizontalScaling':\n        template = region.deployManifest.databaseOpsRequestHorizontalScaling\n        name = `${clusterName}-horizontal-scaling`\n        break\n      case 'volumeExpansion':\n        template = region.deployManifest.databaseOpsRequestVolumeExpansion\n        name = `${clusterName}-volume-expansion`\n        break\n      default:\n        // This should never happen due to TypeScript type checking,\n        // but provides runtime safety\n        throw new Error(`Unknown ops request type: ${type}`)\n    }\n\n    const { limitCPU, limitMemory, replicas, capacity } = spec\n\n    const requestCPU =\n      limitCPU * (region.bundleConf?.cpuRequestLimitRatio || 0.1)\n    const requestMemory =\n      limitMemory * (region.bundleConf?.memoryRequestLimitRatio || 0.5)\n\n    const tmpl = _.template(template)\n\n    const manifest = tmpl({\n      name,\n      clusterName,\n      limitCPU,\n      limitMemory,\n      requestCPU,\n      requestMemory,\n      capacity: capacity / 1024,\n      replicas,\n    })\n\n    return manifest\n  }\n\n  async updateState(appid: string, state: DedicatedDatabaseState) {\n    const db = SystemDatabase.db\n    const res = await db\n      .collection<DedicatedDatabase>('DedicatedDatabase')\n      .findOneAndUpdate(\n        { appid },\n        { $set: { state, updatedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    return res.value\n  }\n\n  getDatabaseNamespace(region: Region, appid: string) {\n    const emptyManifest = this.makeDeployManifest(region, appid)\n    const specs = loadAllYaml(emptyManifest)\n    assert(\n      specs && specs.length > 0,\n      'the deploy manifest of database should not be empty',\n    )\n    if (!specs || specs.length === 0) return null\n    const spec = specs[0]\n    return spec.metadata.namespace\n  }\n\n  async getConnectionUri(region: Region, database: DedicatedDatabase) {\n    const api = this.cluster.makeCoreV1Api(region)\n    const namespace = this.getDatabaseNamespace(region, database.appid)\n    const name = getDedicatedDatabaseName(database.appid)\n    // KubeBlocks v0.x+ uses new secret naming format\n    // Try ${name}-mongodb-account-root first, fallback to ${name}-conn-credential\n    let srv = null\n    try {\n      const secretName = `${name}-mongodb-account-root`\n      srv = await api.readNamespacedSecret(secretName, namespace)\n    } catch (error) {\n      // If first secret doesn't exist (404), try the fallback\n      if (error?.response?.statusCode === 404) {\n        try {\n          const secretName = `${name}-conn-credential`\n          srv = await api.readNamespacedSecret(secretName, namespace)\n        } catch (fallbackError) {\n          // Both secrets don't exist, return null\n          if (fallbackError?.response?.statusCode === 404) {\n            return null\n          }\n          // Re-throw if it's not a 404 error\n          throw fallbackError\n        }\n      } else {\n        // Re-throw if it's not a 404 error\n        throw error\n      }\n    }\n    if (!srv) return null\n\n    const username = Buffer.from(srv.body.data.username, 'base64').toString()\n    const password = Buffer.from(srv.body.data.password, 'base64').toString()\n\n    // KubeBlocks' new secret format doesn't include host/port fields\n    const host = `${name}-mongodb.${namespace}.svc`\n    const port = 27017\n\n    const uri = mongodb_uri.format({\n      username,\n      password,\n      hosts: [\n        {\n          host,\n          port,\n        },\n      ],\n      database: database.name,\n      options: {\n        authSource: 'admin',\n        replicaSet: `${name}-mongodb`,\n        // readPreference: 'secondaryPreferred',\n        w: 'majority',\n      },\n      scheme: 'mongodb',\n    })\n\n    return uri\n  }\n\n  async findAndConnect(appid: string) {\n    const database = await this.findOne(appid)\n    if (!database) return null\n\n    const region = await this.regionService.findByAppId(appid)\n    const connectionUri = await this.getConnectionUri(region, database)\n\n    const client = await this.mongoService.connectDatabase(\n      connectionUri,\n      database.name,\n    )\n    const db = client.db(database.name)\n    return { db, client }\n  }\n\n  /**\n   * Get database accessor that used for `database-proxy`\n   */\n  async getDatabaseAccessor(appid: string) {\n    const database = await this.findOne(appid)\n    if (!database) return null\n\n    const { client } = await this.findAndConnect(appid)\n\n    const accessor = new MongoAccessor(client)\n    return accessor\n  }\n\n  async remove(appid: string) {\n    const db = SystemDatabase.db\n    const doc = await db\n      .collection<DedicatedDatabase>('DedicatedDatabase')\n      .findOneAndUpdate(\n        { appid },\n        {\n          $set: {\n            state: DedicatedDatabaseState.Deleted,\n            phase: DedicatedDatabasePhase.Deleting,\n            updatedAt: new Date(),\n          },\n        },\n        { returnDocument: 'after' },\n      )\n\n    return doc.value\n  }\n\n  async databaseConnectionIsOk(appid: string): Promise<boolean> {\n    try {\n      const { client } = await this.findAndConnect(appid)\n      const admin = client.db('admin')\n      const replSetStatus = await admin.command({ replSetGetStatus: 1 })\n      const members = replSetStatus.members\n      const replicaSetOk: boolean = replSetStatus.ok === 1\n\n      const healthyMembers = members.filter(\n        (member: any) => member.health === 1,\n      )\n\n      const primary = healthyMembers.find(\n        (member: any) => member.stateStr === 'PRIMARY',\n      )\n\n      const majorityCount = Math.ceil(members.length / 2)\n\n      const isClusterHealthy =\n        replicaSetOk && primary && healthyMembers.length >= majorityCount\n\n      if (isClusterHealthy) {\n        return true\n      }\n\n      return false\n    } catch (error) {\n      this.logger.verbose(\n        `dedicatedDatabase health check failed ${appid}\\n${error.message}`,\n      )\n      return false\n    }\n  }\n\n  /**\n   * Handle KubeBlock v5 upgrade API call for horizontal scaling\n   * This is a compatibility feature for KubeBlock v5 mongodb-5.0 clusters\n   *\n   * @param appid - Application ID\n   * @param manifest - Current deployment manifest\n   * @param replicas - Number of replicas\n   */\n  private async handleKubeBlockV5Upgrade(\n    appid: string,\n    manifest: KubernetesObject & { spec: any; status: any },\n    replicas: number,\n  ): Promise<void> {\n    try {\n      // Early return if not a v5 mongodb-5.0 cluster\n      if (!this.isKubeBlockV5MongoDb(manifest)) {\n        return\n      }\n\n      const url = ServerConfig.KUBEBLOCK_V5_UPGRADE_URL\n      if (!url) {\n        this.logger.warn(\n          `KubeBlock v5 upgrade URL not configured (KUBEBLOCK_V5_UPGRADE_URL env var not set) for ${appid}`,\n        )\n        return\n      }\n\n      await this.callKubeBlockV5UpgradeAPI(appid, manifest, replicas, url)\n    } catch (error) {\n      this.logger.error(\n        `Failed to call KubeBlock v5 upgrade API for ${appid}: ${error.message}`,\n      )\n      // Don't throw error, just log it as it's a compatibility feature\n    }\n  }\n\n  /**\n   * Check if the manifest is a KubeBlock v5 mongodb-5.0 cluster\n   */\n  private isKubeBlockV5MongoDb(\n    manifest: KubernetesObject & { spec: any; status: any },\n  ): boolean {\n    return (\n      manifest?.metadata?.labels?.['clusterversion.kubeblocks.io/name'] ===\n      'mongodb-5.0'\n    )\n  }\n\n  /**\n   * Call KubeBlock v5 upgrade API with timeout control\n   */\n  private async callKubeBlockV5UpgradeAPI(\n    appid: string,\n    manifest: KubernetesObject & { spec: any; status: any },\n    replicas: number,\n    url: string,\n  ): Promise<void> {\n    const clusterName = manifest.metadata.name\n    const namespace = manifest.metadata.namespace\n\n    // Create AbortController for timeout\n    const controller = new AbortController()\n    const timeoutId = setTimeout(\n      () => controller.abort(),\n      KUBEBLOCK_V5_UPGRADE_API_TIMEOUT,\n    )\n\n    try {\n      const response = await fetch(url, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n        },\n        body: JSON.stringify({\n          namespace,\n          database_name: clusterName,\n          replicas,\n        }),\n        signal: controller.signal,\n      })\n\n      const responseData = await this.parseKubeBlockV5Response(response)\n\n      if (!response.ok) {\n        throw new Error(\n          `HTTP error! status: ${response.status}, statusText: ${\n            response.statusText\n          }, body: ${JSON.stringify(responseData)}`,\n        )\n      }\n\n      this.logger.log(\n        `Called KubeBlock v5 upgrade API for ${appid}: cluster=${clusterName}, replicas=${replicas}, response: ${JSON.stringify(\n          responseData,\n        )}`,\n      )\n    } finally {\n      clearTimeout(timeoutId)\n    }\n  }\n\n  /**\n   * Parse response body from KubeBlock v5 API\n   */\n  private async parseKubeBlockV5Response(response: Response): Promise<any> {\n    const contentType = response.headers.get('content-type')\n    if (contentType?.includes('application/json')) {\n      return await response.json()\n    }\n    return await response.text()\n  }\n}\n"
  },
  {
    "path": "server/src/database/dto/create-collection.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, Length } from 'class-validator'\n\nexport class CreateCollectionDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @Length(3, 32)\n  name: string\n\n  async validate() {\n    return null\n  }\n}\n"
  },
  {
    "path": "server/src/database/dto/create-dedicated-database.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsInt, IsNotEmpty, Max } from 'class-validator'\n\nexport class CreateDedicatedDatabaseDto {\n  @ApiProperty({ example: 200 })\n  @IsNotEmpty()\n  @IsInt()\n  cpu: number\n\n  @ApiProperty({ example: 256 })\n  @IsNotEmpty()\n  @IsInt()\n  memory: number\n\n  @ApiProperty({ example: 1024 })\n  @IsNotEmpty()\n  @IsInt()\n  capacity: number\n\n  @ApiProperty({ example: 3 })\n  @IsNotEmpty()\n  @IsInt()\n  @Max(9)\n  replicas: number\n}\n"
  },
  {
    "path": "server/src/database/dto/create-policy.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString } from 'class-validator'\n\nexport class CreatePolicyDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @IsString()\n  name: string\n}\n"
  },
  {
    "path": "server/src/database/dto/create-rule.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsJSON, IsNotEmpty, IsString, MaxLength } from 'class-validator'\n\nexport class CreatePolicyRuleDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @IsString()\n  collectionName: string\n\n  @ApiProperty()\n  @IsNotEmpty()\n  @MaxLength(2048)\n  @IsJSON()\n  value: string\n}\n"
  },
  {
    "path": "server/src/database/dto/import-database.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\n\nexport class ImportDatabaseDto {\n  @ApiProperty({ type: 'binary', format: 'binary' })\n  file: any\n\n  @ApiProperty({ type: 'string', description: 'source appid' })\n  sourceAppid: string\n}\n"
  },
  {
    "path": "server/src/database/dto/update-collection.dto.ts",
    "content": "import { ApiPropertyOptional } from '@nestjs/swagger'\nimport { IsObject, IsString } from 'class-validator'\n\nexport class UpdateCollectionDto {\n  @ApiPropertyOptional()\n  @IsObject()\n  validatorSchema: object\n\n  @ApiPropertyOptional()\n  @IsString()\n  validationLevel: string\n}\n"
  },
  {
    "path": "server/src/database/dto/update-dedicated-database-state.dto.ts",
    "content": "import { IsEnum, IsNotEmpty } from 'class-validator'\nimport { DedicatedDatabaseState } from '../entities/dedicated-database'\nimport { ApiProperty } from '@nestjs/swagger'\n\nexport class UpdateDedicatedDatabaseStateDto {\n  @ApiProperty({ enum: DedicatedDatabaseState })\n  @IsEnum(DedicatedDatabaseState)\n  @IsNotEmpty()\n  state: DedicatedDatabaseState\n}\n"
  },
  {
    "path": "server/src/database/dto/update-dedicated-database.dto.ts",
    "content": "import { CreateDedicatedDatabaseDto } from './create-dedicated-database.dto'\n\nexport class UpdateDedicatedDatabaseDto extends CreateDedicatedDatabaseDto {}\n"
  },
  {
    "path": "server/src/database/dto/update-policy.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString } from 'class-validator'\nexport class UpdatePolicyDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @IsString()\n  injector: string\n}\n"
  },
  {
    "path": "server/src/database/dto/update-rule.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsJSON, IsNotEmpty, MaxLength } from 'class-validator'\n\nexport class UpdatePolicyRuleDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @MaxLength(2048)\n  @IsJSON()\n  value: string\n}\n"
  },
  {
    "path": "server/src/database/entities/collection.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { Binary, CollectionInfo, Document } from 'mongodb'\n\nexport class Collection implements CollectionInfo {\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  type?: string\n\n  @ApiProperty()\n  options?: Document\n\n  @ApiProperty()\n  info?: { readOnly?: false; uuid?: Binary }\n\n  @ApiProperty()\n  idIndex?: Document\n}\n"
  },
  {
    "path": "server/src/database/entities/database-policy.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport class DatabasePolicy {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty()\n  name: string\n\n  @ApiPropertyOptional()\n  injector?: string\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  constructor(partial: Partial<DatabasePolicy>) {\n    Object.assign(this, partial)\n  }\n}\n\nexport class DatabasePolicyRule {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty()\n  policyName: string\n\n  @ApiProperty()\n  collectionName: string\n\n  @ApiProperty()\n  value: any\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  constructor(partial: Partial<DatabasePolicyRule>) {\n    Object.assign(this, partial)\n  }\n}\n\nexport class DatabasePolicyWithRules extends DatabasePolicy {\n  @ApiProperty({ type: [DatabasePolicyRule] })\n  rules: DatabasePolicyRule[]\n}\n"
  },
  {
    "path": "server/src/database/entities/database-sync-record.ts",
    "content": "import { ObjectId } from 'mongodb'\n\nexport class DatabaseSyncRecord {\n  uid: ObjectId\n  createdAt: Date\n}\n"
  },
  {
    "path": "server/src/database/entities/database.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport enum DatabasePhase {\n  Creating = 'Creating',\n  Created = 'Created',\n  Deleting = 'Deleting',\n  Deleted = 'Deleted',\n}\n\nexport enum DatabaseState {\n  Active = 'Active',\n  Inactive = 'Inactive',\n  Deleted = 'Deleted',\n}\n\nexport enum DatabasePermission {\n  Read = 'read',\n  ReadWrite = 'readWrite',\n}\n\nexport class Database {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  user: string\n\n  @ApiProperty()\n  password: string\n\n  @ApiProperty()\n  dataSize: number\n\n  @ApiProperty({ enum: DatabaseState })\n  state: DatabaseState\n\n  @ApiProperty({ enum: DatabasePhase })\n  phase: DatabasePhase\n  lockedAt: Date\n\n  usageCaptureLockedAt: Date\n  usageLimitLockedAt: Date\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  constructor(partial: Partial<Database>) {\n    Object.assign(this, partial)\n  }\n}\n"
  },
  {
    "path": "server/src/database/entities/dedicated-database.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport enum DedicatedDatabasePhase {\n  Starting = 'Starting',\n  Started = 'Started',\n  Stopping = 'Stopping',\n  Stopped = 'Stopped',\n  Deleting = 'Deleting',\n  Deleted = 'Deleted',\n}\n\nexport enum DedicatedDatabaseState {\n  Running = 'Running',\n  Stopped = 'Stopped',\n  Restarting = 'Restarting',\n  Deleted = 'Deleted',\n  Updating = 'Updating',\n}\n\nexport class DedicatedDatabaseSpec {\n  @ApiProperty({ example: 500 })\n  limitCPU: number\n\n  @ApiProperty({ example: 1024 })\n  limitMemory: number\n\n  requestCPU: number\n\n  requestMemory: number\n\n  @ApiProperty({ example: 1024 })\n  capacity: number\n\n  @ApiProperty({ example: 1 })\n  replicas: number\n}\n\nexport class DedicatedDatabase {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty({ enum: DedicatedDatabaseState })\n  state: DedicatedDatabaseState\n\n  @ApiProperty({ enum: DedicatedDatabasePhase })\n  phase: DedicatedDatabasePhase\n\n  lockedAt: Date\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/database/listeners/application.listener.ts",
    "content": "import { Injectable } from '@nestjs/common'\nimport { OnEvent } from '@nestjs/event-emitter'\nimport { DedicatedDatabaseService } from '../dedicated-database/dedicated-database.service'\nimport { ApplicationCreatingEvent } from 'src/application/events/application-creating.event'\n\n@Injectable()\nexport class ApplicationListener {\n  constructor(\n    private readonly dedicatedDatabaseService: DedicatedDatabaseService,\n  ) {}\n\n  @OnEvent(ApplicationCreatingEvent.eventName, {\n    promisify: true,\n    async: true,\n  })\n  handleApplicationCreatedEvent(event: ApplicationCreatingEvent) {\n    if (event.dto.dedicatedDatabase) {\n      return this.dedicatedDatabaseService.create(event.appid, event.session)\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/database/mongo.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { MongoClient } from 'mongodb'\nimport * as assert from 'node:assert'\nimport { Region } from 'src/region/entities/region'\nimport { DatabasePermission } from './entities/database'\n\n@Injectable()\nexport class MongoService {\n  private readonly logger = new Logger(MongoService.name)\n\n  /**\n   * Create mongodb database in region\n   * @param region\n   * @param name database name\n   * @param username database username\n   * @param password database password\n   * @returns\n   */\n  async createDatabase(\n    region: Region,\n    name: string,\n    username: string,\n    password: string,\n  ) {\n    const conf = region.databaseConf\n    const client = new MongoClient(conf.controlConnectionUri)\n\n    try {\n      await client.connect()\n      const db = client.db(name)\n      const result = await db.addUser(username, password, {\n        roles: [\n          { role: DatabasePermission.ReadWrite, db: name },\n          { role: 'dbAdmin', db: name },\n        ],\n      })\n      return result\n    } catch (error) {\n      this.logger.error(`Create database (${name}) error : `, error)\n      throw error\n    } finally {\n      await client.close()\n    }\n  }\n\n  /**\n   * Delete mongodb database in region\n   * @param region\n   * @param name database name\n   * @returns\n   */\n  async deleteDatabase(region: Region, name: string) {\n    const conf = region.databaseConf\n    const client = new MongoClient(conf.controlConnectionUri)\n\n    try {\n      await client.connect()\n      const result = await client.db(name).dropDatabase()\n      return result\n    } finally {\n      await client.close()\n    }\n  }\n\n  /**\n   * Connect to database\n   */\n  async connectDatabase(connectionUri: string, dbName?: string) {\n    assert(connectionUri, 'Database connection uri is required')\n\n    const client = new MongoClient(connectionUri)\n    try {\n      this.logger.verbose(`Connecting to database ${dbName}`)\n      await client.connect()\n      this.logger.log(`Connected to database ${dbName}`)\n      return client\n    } catch {\n      this.logger.error(`Failed to connect to database ${dbName}`)\n      await client.close()\n      return null\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/database/monitor/monitor.controller.ts",
    "content": "import { Controller, Get, UseGuards } from '@nestjs/common'\nimport { DedicatedDatabaseMonitorService } from './monitor.service'\nimport { InjectApplication } from 'src/utils/decorator'\nimport { ApplicationWithRelations } from 'src/application/entities/application'\nimport { RegionService } from 'src/region/region.service'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\nimport {\n  ApiBearerAuth,\n  ApiOperation,\n  ApiResponse,\n  ApiTags,\n} from '@nestjs/swagger'\nimport { ResponseUtil } from 'src/utils/response'\n\n@ApiTags('Database')\n@ApiBearerAuth('Authorization')\n@Controller('apps/:appid/dedicated-database/monitor')\nexport class DedicatedDatabaseMonitorController {\n  constructor(\n    private readonly region: RegionService,\n    private readonly monitor: DedicatedDatabaseMonitorService,\n  ) {}\n\n  @ApiOperation({\n    summary: 'Get dedicated database resources metrics data',\n  })\n  @ApiResponse({ type: ResponseUtil })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get('resource')\n  async getResource(@InjectApplication() app: ApplicationWithRelations) {\n    const region = await this.region.findOne(app.regionId)\n    const res = await this.monitor.getResource(app.appid, region)\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Get dedicated database connections metrics data' })\n  @ApiResponse({ type: ResponseUtil })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get('connection')\n  async getConnection(@InjectApplication() app: ApplicationWithRelations) {\n    const region = await this.region.findOne(app.regionId)\n    const res = await this.monitor.getConnection(app.appid, region)\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Get dedicated database performance metrics data' })\n  @ApiResponse({ type: ResponseUtil })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get('performance')\n  async getPerformance(@InjectApplication() app: ApplicationWithRelations) {\n    const region = await this.region.findOne(app.regionId)\n    const res = await this.monitor.getPerformance(app.appid, region)\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/database/monitor/monitor.service.ts",
    "content": "import { HttpService } from '@nestjs/axios'\nimport { Injectable, Logger } from '@nestjs/common'\nimport { Region } from 'src/region/entities/region'\n\nconst requestConfig = {\n  retryAttempts: 5,\n  retryDelayBase: 300,\n  rateAccuracy: '1m',\n}\n\n@Injectable()\nexport class DedicatedDatabaseMonitorService {\n  private readonly logger = new Logger(DedicatedDatabaseMonitorService.name)\n\n  constructor(private readonly httpService: HttpService) {}\n\n  async getResource(appid: string, region: Region) {\n    const dbName = this.getDBName(appid)\n\n    const cpu = await this.queryRange(\n      region,\n      `laf_mongo_cpu{appid=\"${appid}\"}`,\n      {\n        labels: ['pod'],\n      },\n    )\n    const memory = await this.queryRange(\n      region,\n      `laf_mongo_memory{appid=\"${appid}\"}`,\n      {\n        labels: ['pod'],\n      },\n    )\n    const dataSize = await this.query(\n      region,\n      `sum(mongodb_dbstats_dataSize{pod=~\"${dbName}-mongo.+\",rs_state=\"1\"}) by (database)`,\n      {\n        labels: ['database'],\n      },\n    )\n\n    return {\n      cpu,\n      memory,\n      dataSize,\n    }\n  }\n\n  async getConnection(appid: string, region: Region) {\n    const dbName = this.getDBName(appid)\n    const query = `mongodb_connections{pod=~\"${dbName}-mongo.+\",state=\"current\"}`\n    const connections = await this.queryRange(region, query, {\n      labels: ['pod'],\n    })\n    return {\n      connections,\n    }\n  }\n  async getPerformance(appid: string, region: Region) {\n    const dbName = this.getDBName(appid)\n    const queries = {\n      documentOperations: `rate(mongodb_mongod_metrics_document_total{pod=~\"${dbName}-mongo.+\"}[1m])`,\n      queryOperations: `rate(mongodb_op_counters_total{pod=~\"${dbName}-mongo.+\"}[5m]) or irate(mongodb_op_counters_total{pod=~\"${dbName}-mongo.+\"}[5m])`,\n      pageFaults: `rate(mongodb_extra_info_page_faults_total{pod=~\"${dbName}-mongo.+\"}[5m]) or irate(mongodb_extra_info_page_faults_total{pod=~\"${dbName}-mongo.+\"}[5m])`,\n    }\n\n    const res = await Promise.all(\n      Object.keys(queries).map(async (key) => {\n        const query = queries[key]\n        const data = await this.queryRange(region, query, {\n          labels: ['pod', 'type', 'state'],\n        })\n        return data\n      }),\n    )\n\n    const keys = Object.keys(queries)\n    return res.reduce((acc, cur, idx) => {\n      acc[keys[idx]] = cur\n      return acc\n    }, {})\n  }\n\n  getDBName(appid: string) {\n    return `${appid}`\n  }\n\n  private async query(\n    region: Region,\n    query: string,\n    queryParams?: Record<string, number | string | string[]>,\n  ) {\n    const host = region.prometheusConf?.apiUrl\n    if (!host) return []\n    const endpoint = `${host}/api/v1/query`\n\n    return await this.queryInternal(endpoint, { query, ...queryParams })\n  }\n\n  private async queryRange(\n    region: Region,\n    query: string,\n    queryParams?: Record<string, number | string | string[]>,\n  ) {\n    const host = region.prometheusConf?.apiUrl\n    if (!host) return []\n\n    const range = 3600 // 1 hour\n    const now = Math.floor(Date.now() / 1000)\n    const start = now - range\n    const end = now\n\n    queryParams = {\n      range,\n      step: 60,\n      start,\n      end,\n      ...queryParams,\n    }\n\n    const endpoint = `${host}/api/v1/query_range`\n\n    return await this.queryInternal(endpoint, {\n      query,\n      ...queryParams,\n    })\n  }\n\n  private async queryInternal(\n    endpoint: string,\n    query: Record<string, string | number | string[]>,\n  ) {\n    const labels = query.labels\n    delete query['labels']\n    for (let attempt = 1; attempt <= requestConfig.retryAttempts; attempt++) {\n      try {\n        const res = await this.httpService\n          .post(endpoint, query, {\n            headers: {\n              'Content-Type': 'application/x-www-form-urlencoded',\n            },\n          })\n          .toPromise()\n\n        if (!labels || !Array.isArray(labels)) return res.data.data.result\n\n        return res.data.data.result.map((v) => {\n          const metric = v.metric\n          for (const item in metric) {\n            if (!labels.includes(item)) {\n              delete metric[item]\n            }\n          }\n          return v\n        })\n      } catch (error) {\n        if (attempt >= requestConfig.retryAttempts) {\n          this.logger.error('Metrics not available', error.message)\n          return []\n        }\n\n        await new Promise((resolve) =>\n          setTimeout(resolve, attempt * requestConfig.retryDelayBase),\n        )\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/database/policy/policy-rule.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Post,\n  Body,\n  Patch,\n  Param,\n  Delete,\n  UseGuards,\n} from '@nestjs/common'\nimport { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'\nimport {\n  ApiResponseArray,\n  ApiResponseObject,\n  ResponseUtil,\n} from 'src/utils/response'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\nimport { CreatePolicyRuleDto } from '../dto/create-rule.dto'\nimport { PolicyRuleService } from './policy-rule.service'\nimport { UpdatePolicyRuleDto } from '../dto/update-rule.dto'\nimport { DatabasePolicyRule } from '../entities/database-policy'\n\n@ApiTags('Database')\n@ApiBearerAuth('Authorization')\n@Controller('apps/:appid/policies/:name/rules')\nexport class PolicyRuleController {\n  constructor(private readonly ruleService: PolicyRuleService) {}\n\n  @Post()\n  @ApiOperation({ summary: 'Create database policy rule' })\n  @ApiResponseObject(DatabasePolicyRule)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  async create(\n    @Param('appid') appid: string,\n    @Param('name') policyName: string,\n    @Body() dto: CreatePolicyRuleDto,\n  ) {\n    // check rule count limit\n    const LIMIT_COUNT = 100\n    const count = await this.ruleService.count(appid, policyName)\n    if (count >= LIMIT_COUNT) {\n      return ResponseUtil.error(`rule count limit reached: ${LIMIT_COUNT}`)\n    }\n\n    // check if exists\n    const exists = await this.ruleService.findOne(\n      appid,\n      policyName,\n      dto.collectionName,\n    )\n    if (exists) {\n      return ResponseUtil.error('rule already exists')\n    }\n\n    const doc = await this.ruleService.create(appid, policyName, dto)\n    return ResponseUtil.ok(doc)\n  }\n\n  @Get()\n  @ApiOperation({ summary: 'Get database policy rules' })\n  @ApiResponseArray(DatabasePolicyRule)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  async findAll(\n    @Param('appid') appid: string,\n    @Param('name') policyName: string,\n  ) {\n    const docs = await this.ruleService.findAll(appid, policyName)\n    return ResponseUtil.ok(docs)\n  }\n\n  @Patch(':collection')\n  @ApiOperation({ summary: 'Update database policy rule by collection name' })\n  @ApiResponseObject(DatabasePolicyRule)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  async update(\n    @Param('appid') appid: string,\n    @Param('name') policyName: string,\n    @Param('collection') collectionName: string,\n    @Body() dto: UpdatePolicyRuleDto,\n  ) {\n    // check if exists\n    const exists = await this.ruleService.findOne(\n      appid,\n      policyName,\n      collectionName,\n    )\n    if (!exists) {\n      return ResponseUtil.error('rule not found')\n    }\n\n    const res = await this.ruleService.updateOne(\n      appid,\n      policyName,\n      collectionName,\n      dto,\n    )\n    return ResponseUtil.ok(res)\n  }\n\n  @Delete(':collection')\n  @ApiOperation({ summary: 'Remove a database policy rule by collection name' })\n  @ApiResponseObject(DatabasePolicyRule)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  async remove(\n    @Param('appid') appid: string,\n    @Param('name') policyName: string,\n    @Param('collection') collectionName: string,\n  ) {\n    // check if exists\n    const exists = await this.ruleService.findOne(\n      appid,\n      policyName,\n      collectionName,\n    )\n    if (!exists) {\n      return ResponseUtil.error('rule not found')\n    }\n\n    const res = await this.ruleService.removeOne(\n      appid,\n      policyName,\n      collectionName,\n    )\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/database/policy/policy-rule.service.ts",
    "content": "import { Injectable } from '@nestjs/common'\nimport { CreatePolicyRuleDto } from '../dto/create-rule.dto'\nimport { UpdatePolicyRuleDto } from '../dto/update-rule.dto'\nimport { PolicyService } from './policy.service'\nimport { SystemDatabase } from '../../system-database'\nimport { DatabasePolicyRule } from '../entities/database-policy'\n\n@Injectable()\nexport class PolicyRuleService {\n  private readonly db = SystemDatabase.db\n  constructor(private readonly policyService: PolicyService) {}\n\n  async create(appid: string, policyName: string, dto: CreatePolicyRuleDto) {\n    await this.db\n      .collection<DatabasePolicyRule>('DatabasePolicyRule')\n      .insertOne({\n        appid,\n        policyName,\n        collectionName: dto.collectionName,\n        value: JSON.parse(dto.value),\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      })\n\n    await this.policyService.publish(appid, policyName)\n    return await this.findOne(appid, policyName, dto.collectionName)\n  }\n\n  async count(appid: string, policyName: string) {\n    const res = await this.db\n      .collection<DatabasePolicyRule>('DatabasePolicyRule')\n      .countDocuments({ appid, policyName })\n\n    return res\n  }\n\n  async findAll(appid: string, policyName: string) {\n    const res = await this.db\n      .collection<DatabasePolicyRule>('DatabasePolicyRule')\n      .find({ appid, policyName })\n      .toArray()\n\n    return res\n  }\n\n  async findOne(appid: string, policyName: string, collectionName: string) {\n    const doc = await this.db\n      .collection<DatabasePolicyRule>('DatabasePolicyRule')\n      .findOne({ appid, policyName, collectionName })\n\n    return doc\n  }\n\n  async updateOne(\n    appid: string,\n    policyName: string,\n    collectionName: string,\n    dto: UpdatePolicyRuleDto,\n  ) {\n    const res = await this.db\n      .collection<DatabasePolicyRule>('DatabasePolicyRule')\n      .findOneAndUpdate(\n        { appid, policyName, collectionName },\n        { $set: { value: JSON.parse(dto.value), updatedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    await this.policyService.publish(appid, policyName)\n    return res.value\n  }\n\n  async removeOne(appid: string, policyName: string, collectionName: string) {\n    const res = await this.db\n      .collection<DatabasePolicyRule>('DatabasePolicyRule')\n      .findOneAndDelete({ appid, policyName, collectionName })\n\n    await this.policyService.publish(appid, policyName)\n    return res.value\n  }\n}\n"
  },
  {
    "path": "server/src/database/policy/policy.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Post,\n  Body,\n  Patch,\n  Param,\n  Delete,\n  UseGuards,\n} from '@nestjs/common'\nimport { PolicyService } from './policy.service'\nimport { CreatePolicyDto } from '../dto/create-policy.dto'\nimport { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'\nimport { UpdatePolicyDto } from '../dto/update-policy.dto'\nimport {\n  ApiResponseArray,\n  ApiResponseObject,\n  ApiResponseString,\n  ResponseUtil,\n} from 'src/utils/response'\nimport { BundleService } from 'src/application/bundle.service'\nimport {\n  DatabasePolicy,\n  DatabasePolicyWithRules,\n} from '../entities/database-policy'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\n\n@ApiTags('Database')\n@ApiBearerAuth('Authorization')\n@Controller('apps/:appid/policies')\nexport class PolicyController {\n  constructor(\n    private readonly policiesService: PolicyService,\n    private readonly bundleService: BundleService,\n  ) {}\n\n  @Post()\n  @ApiOperation({ summary: 'Create database policy' })\n  @ApiResponseObject(DatabasePolicyWithRules)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  async create(@Param('appid') appid: string, @Body() dto: CreatePolicyDto) {\n    // check policy count limit\n    const bundle = await this.bundleService.findOne(appid)\n    const LIMIT_COUNT = bundle?.resource?.limitCountOfDatabasePolicy || 0\n    const count = await this.policiesService.count(appid)\n    if (count >= LIMIT_COUNT) {\n      return ResponseUtil.error(`policy count limit reached: ${LIMIT_COUNT}`)\n    }\n\n    // check name existed\n    const existed = await this.policiesService.findOne(appid, dto.name)\n    if (existed) {\n      return ResponseUtil.error('Policy name existed')\n    }\n    const doc = await this.policiesService.create(appid, dto)\n    return ResponseUtil.ok(doc)\n  }\n\n  @Get()\n  @ApiOperation({ summary: 'Get database policy list' })\n  @ApiResponseArray(DatabasePolicyWithRules)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  async findAll(@Param('appid') appid: string) {\n    const docs = await this.policiesService.findAll(appid)\n    return ResponseUtil.ok(docs)\n  }\n\n  @Patch(':name')\n  @ApiOperation({ summary: 'Update database policy' })\n  @ApiResponseObject(DatabasePolicy)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  async update(\n    @Param('appid') appid: string,\n    @Param('name') name: string,\n    @Body() dto: UpdatePolicyDto,\n  ) {\n    // check policy exists\n    const existed = await this.policiesService.findOne(appid, name)\n    if (!existed) {\n      return ResponseUtil.error('Policy not found')\n    }\n    const res = await this.policiesService.updateOne(appid, name, dto)\n    return ResponseUtil.ok(res)\n  }\n\n  @Delete(':name')\n  @ApiOperation({ summary: 'Remove a database policy' })\n  @ApiResponseString()\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  async remove(@Param('appid') appid: string, @Param('name') name: string) {\n    // check policy exists\n    const existed = await this.policiesService.findOne(appid, name)\n    if (!existed) {\n      return ResponseUtil.error('Policy not found')\n    }\n\n    await this.policiesService.removeOne(appid, name)\n    return ResponseUtil.ok('ok')\n  }\n}\n"
  },
  {
    "path": "server/src/database/policy/policy.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { CN_PUBLISHED_POLICIES } from 'src/constants'\nimport { DatabaseService } from '../database.service'\nimport { CreatePolicyDto } from '../dto/create-policy.dto'\nimport { UpdatePolicyDto } from '../dto/update-policy.dto'\nimport { SystemDatabase } from '../../system-database'\nimport {\n  DatabasePolicy,\n  DatabasePolicyRule,\n  DatabasePolicyWithRules,\n} from '../entities/database-policy'\nimport * as assert from 'assert'\nimport { DedicatedDatabaseService } from '../dedicated-database/dedicated-database.service'\n\n@Injectable()\nexport class PolicyService {\n  private readonly logger = new Logger(PolicyService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(\n    private readonly databaseService: DatabaseService,\n    private readonly dedicatedDatabaseService: DedicatedDatabaseService,\n  ) {}\n\n  async create(appid: string, dto: CreatePolicyDto) {\n    await this.db.collection<DatabasePolicy>('DatabasePolicy').insertOne({\n      appid,\n      name: dto.name,\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    })\n\n    return await this.publish(appid, dto.name)\n  }\n\n  async count(appid: string) {\n    const res = await this.db\n      .collection<DatabasePolicy>('DatabasePolicy')\n      .countDocuments({ appid })\n\n    return res\n  }\n\n  async findAll(appid: string) {\n    const res = await this.db\n      .collection('DatabasePolicy')\n      .aggregate<DatabasePolicyWithRules>()\n      .match({ appid })\n      .lookup({\n        from: 'DatabasePolicyRule',\n        let: { name: '$name', appid: '$appid' },\n        pipeline: [\n          {\n            $match: {\n              $expr: {\n                $and: [\n                  { $eq: ['$appid', '$$appid'] },\n                  { $eq: ['$policyName', '$$name'] },\n                ],\n              },\n            },\n          },\n        ],\n        as: 'rules',\n      })\n      .toArray()\n\n    return res\n  }\n\n  async findOne(appid: string, name: string) {\n    const policy = await this.db\n      .collection<DatabasePolicy>('DatabasePolicy')\n      .findOne({ appid, name })\n\n    if (!policy) {\n      return null\n    }\n\n    const rules = await this.db\n      .collection<DatabasePolicyRule>('DatabasePolicyRule')\n      .find({ appid, policyName: name })\n      .toArray()\n\n    return {\n      ...policy,\n      rules,\n    } as DatabasePolicyWithRules\n  }\n\n  async updateOne(appid: string, name: string, dto: UpdatePolicyDto) {\n    const res = await this.db\n      .collection<DatabasePolicy>('DatabasePolicy')\n      .findOneAndUpdate(\n        { appid, name },\n        { $set: { injector: dto.injector, updatedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    await this.publish(appid, name)\n    return res.value\n  }\n\n  async removeOne(appid: string, name: string) {\n    const client = SystemDatabase.client\n    const session = client.startSession()\n\n    try {\n      await session.withTransaction(async () => {\n        await this.db\n          .collection<DatabasePolicy>('DatabasePolicy')\n          .deleteOne({ appid, name }, { session })\n\n        await this.db\n          .collection<DatabasePolicyRule>('DatabasePolicyRule')\n          .deleteMany({ appid, policyName: name }, { session })\n\n        await this.unpublish(appid, name)\n      })\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  async removeAll(appid: string) {\n    const client = SystemDatabase.client\n    const session = client.startSession()\n\n    try {\n      await session.withTransaction(async () => {\n        await this.db\n          .collection<DatabasePolicy>('DatabasePolicy')\n          .deleteMany({ appid }, { session })\n\n        await this.db\n          .collection<DatabasePolicyRule>('DatabasePolicyRule')\n          .deleteMany({ appid }, { session })\n      })\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  async publish(appid: string, name: string) {\n    const policy = await this.findOne(appid, name)\n    assert(policy, `policy ${name} not found`)\n\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(appid)) ||\n      (await this.databaseService.findAndConnect(appid))\n\n    const session = client.startSession()\n\n    const rules = {}\n    for (const rule of policy.rules) {\n      rules[rule.collectionName] = rule.value\n    }\n\n    try {\n      await session.withTransaction(async () => {\n        const coll = db.collection(CN_PUBLISHED_POLICIES)\n        await coll.deleteOne({ name: policy.name }, { session })\n        const data = { ...policy, rules }\n        await coll.insertOne(data, { session })\n      })\n    } finally {\n      await session.endSession()\n      await client.close()\n      return policy\n    }\n  }\n\n  async unpublish(appid: string, name: string) {\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(appid)) ||\n      (await this.databaseService.findAndConnect(appid))\n    try {\n      const coll = db.collection(CN_PUBLISHED_POLICIES)\n      await coll.deleteOne({ name })\n    } finally {\n      await client.close()\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/dependency/dependency.controller.ts",
    "content": "import {\n  Body,\n  Controller,\n  Delete,\n  Get,\n  Logger,\n  Param,\n  ParseArrayPipe,\n  Patch,\n  Post,\n  UseGuards,\n} from '@nestjs/common'\nimport {\n  ApiBearerAuth,\n  ApiBody,\n  ApiOperation,\n  ApiResponse,\n  ApiTags,\n} from '@nestjs/swagger'\nimport { ResponseUtil } from '../utils/response'\nimport { DependencyService } from './dependency.service'\nimport { CreateDependencyDto } from './dto/create-dependency.dto'\nimport { UpdateDependencyDto } from './dto/update-dependency.dto'\nimport { DeleteDependencyDto } from './dto/delete-dependency.dto'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\n\n@ApiTags('Application')\n@ApiBearerAuth('Authorization')\n@Controller('apps/:appid/dependencies')\nexport class DependencyController {\n  private readonly logger = new Logger(DependencyController.name)\n\n  constructor(private readonly depsService: DependencyService) {}\n\n  /**\n   * Add application dependencies\n   * @param appid\n   * @param dto\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Add application dependencies' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post()\n  @ApiBody({ type: [CreateDependencyDto] })\n  async add(\n    @Param('appid') appid: string,\n    @Body(new ParseArrayPipe({ items: CreateDependencyDto, whitelist: true }))\n    dto: CreateDependencyDto[],\n  ) {\n    const res = await this.depsService.add(appid, dto)\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Update application dependencies\n   * @param appid\n   * @param dto\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Update application dependencies' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Patch()\n  @ApiBody({ type: [UpdateDependencyDto] })\n  async update(\n    @Param('appid') appid: string,\n    @Body(new ParseArrayPipe({ items: UpdateDependencyDto, whitelist: true }))\n    dto: UpdateDependencyDto[],\n  ) {\n    const res = await this.depsService.update(appid, dto)\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Get application dependencies\n   * @param appid\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Get application dependencies' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get()\n  async getDependencies(@Param('appid') appid: string) {\n    const res = await this.depsService.getMergedObjects(appid)\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Remove a dependency\n   * @param appid\n   * @param name\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Remove a dependency' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Delete()\n  @ApiBody({ type: DeleteDependencyDto })\n  async remove(\n    @Param('appid') appid: string,\n    @Body() dto: DeleteDependencyDto,\n  ) {\n    const res = await this.depsService.removeOne(appid, dto.name)\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/dependency/dependency.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { ApplicationModule } from 'src/application/application.module'\nimport { DependencyController } from './dependency.controller'\nimport { DependencyService } from './dependency.service'\n\n@Module({\n  imports: [ApplicationModule],\n  controllers: [DependencyController],\n  providers: [DependencyService],\n  exports: [DependencyService],\n})\nexport class DependencyModule {}\n"
  },
  {
    "path": "server/src/dependency/dependency.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { RUNTIME_BUILTIN_DEPENDENCIES } from 'src/runtime-builtin-deps'\nimport * as npa from 'npm-package-arg'\nimport { CreateDependencyDto } from './dto/create-dependency.dto'\nimport { UpdateDependencyDto } from './dto/update-dependency.dto'\nimport { SystemDatabase } from 'src/system-database'\nimport { ApplicationConfiguration } from 'src/application/entities/application-configuration'\nimport { ApplicationConfigurationService } from 'src/application/configuration.service'\n\nexport class Dependency {\n  name: string\n  spec: string\n  type: string\n  builtin: boolean\n}\n\n@Injectable()\nexport class DependencyService {\n  private readonly logger = new Logger(DependencyService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(private readonly confService: ApplicationConfigurationService) {}\n\n  /**\n   * Get app merged dependencies in `Dependency` array\n   * @param appid\n   * @returns\n   */\n  async getMergedObjects(appid: string): Promise<Dependency[]> {\n    const extra_arr = await this.getExtras(appid)\n    const builtin_arr = this.getBuiltins()\n\n    const extras = extra_arr.map((dep) => {\n      const { name, fetchSpec, type } = npa(dep)\n      return { name, spec: fetchSpec, type, builtin: false } as Dependency\n    })\n\n    const builtins = builtin_arr.map((dep) => {\n      const { name, fetchSpec, type } = npa(dep)\n      return { name, spec: fetchSpec, type, builtin: true } as Dependency\n    })\n\n    const deps = extras.concat(builtins)\n    return Object.values(deps)\n  }\n\n  async add(appid: string, dto: CreateDependencyDto[]) {\n    // validate\n    const valid = dto.every((dep) => this.validate(dep))\n    if (!valid) return false\n\n    const extras = await this.getExtras(appid)\n\n    // add\n    const new_deps = dto.map((dep) => `${dep.name}@${dep.spec}`)\n    const deps = extras.concat(new_deps)\n\n    await this.db\n      .collection<ApplicationConfiguration>('ApplicationConfiguration')\n      .updateOne(\n        { appid },\n        { $set: { dependencies: deps, updatedAt: new Date() } },\n      )\n\n    return true\n  }\n\n  /**\n   * Update the dependencies' version\n   */\n  async update(appid: string, dto: UpdateDependencyDto[]) {\n    const extras = await this.getExtras(appid)\n\n    // check if the dependency name all valid\n    const names = extras.map((dep) => npa(dep).name)\n    const input_names = dto.map((dep) => npa(dep.name).name)\n    const has_invalid = input_names.some((name) => !names.includes(name))\n    if (has_invalid) return false\n\n    // update\n    const new_deps = dto.map((dep) => `${dep.name}@${dep.spec}`)\n    const filtered = extras.filter((dep) => {\n      const { name } = npa(dep)\n      return !input_names.includes(name)\n    })\n\n    const deps = filtered.concat(new_deps)\n\n    await this.db\n      .collection<ApplicationConfiguration>('ApplicationConfiguration')\n      .updateOne(\n        { appid },\n        { $set: { dependencies: deps, updatedAt: new Date() } },\n      )\n\n    return true\n  }\n\n  async removeOne(appid: string, name: string) {\n    const deps = await this.getExtras(appid)\n    const filtered = deps.filter((dep) => {\n      const r = npa(dep)\n      return r.name !== name\n    })\n\n    if (filtered.length === deps.length) return false\n\n    await this.db\n      .collection<ApplicationConfiguration>('ApplicationConfiguration')\n      .updateOne(\n        { appid },\n        { $set: { dependencies: filtered, updatedAt: new Date() } },\n      )\n\n    return true\n  }\n\n  /**\n   * Get the extra dependencies in string array\n   * @param appid\n   * @returns\n   */\n  async getExtras(appid: string) {\n    const conf = await this.db\n      .collection<ApplicationConfiguration>('ApplicationConfiguration')\n      .findOne({ appid })\n\n    const deps = conf?.dependencies ?? []\n    return deps\n  }\n\n  /**\n   * Get the built-in dependencies in string array\n   * @returns\n   */\n  getBuiltins() {\n    const obj = RUNTIME_BUILTIN_DEPENDENCIES\n    return Object.keys(obj).map((key) => `${key}@${obj[key]}`)\n  }\n\n  validate(dto: CreateDependencyDto) {\n    try {\n      npa.resolve(dto.name, dto.spec)\n      return true\n    } catch (error) {\n      return false\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/dependency/dto/create-dependency.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, Length } from 'class-validator'\n\nexport class CreateDependencyDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @Length(1, 64)\n  name: string\n\n  @ApiProperty()\n  @IsNotEmpty()\n  @Length(1, 64)\n  spec: string\n}\n"
  },
  {
    "path": "server/src/dependency/dto/delete-dependency.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, Length } from 'class-validator'\n\nexport class DeleteDependencyDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @Length(1, 64)\n  name: string\n}\n"
  },
  {
    "path": "server/src/dependency/dto/update-dependency.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, Length } from 'class-validator'\n\nexport class UpdateDependencyDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @Length(1, 64)\n  name: string\n\n  @ApiProperty()\n  @IsNotEmpty()\n  @Length(1, 64)\n  spec: string\n}\n"
  },
  {
    "path": "server/src/function/dto/compile-function.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString } from 'class-validator'\n\nexport class CompileFunctionDto {\n  @ApiProperty({\n    description: 'The source code of the function',\n  })\n  @IsNotEmpty()\n  @IsString()\n  code: string\n}\n"
  },
  {
    "path": "server/src/function/dto/create-function.dto.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport {\n  IsArray,\n  IsIn,\n  IsNotEmpty,\n  IsString,\n  Matches,\n  MaxLength,\n} from 'class-validator'\nimport { HTTP_METHODS } from '../../constants'\nimport { HttpMethod } from '../entities/cloud-function'\n\nexport class CreateFunctionDto {\n  @ApiProperty({\n    description: 'Function name is unique in the application',\n  })\n  @IsNotEmpty()\n  @Matches(/^[a-zA-Z0-9_.\\-](?:[a-zA-Z0-9_.\\-/]{0,254}[a-zA-Z0-9_.\\-])?$/)\n  name: string\n\n  @ApiPropertyOptional()\n  @MaxLength(256)\n  description: string\n\n  @ApiProperty({ type: [String], enum: HttpMethod })\n  @IsIn(HTTP_METHODS, { each: true })\n  methods: HttpMethod[] = []\n\n  @ApiProperty({ description: 'The source code of the function' })\n  @IsNotEmpty()\n  @IsString()\n  @MaxLength(1024 * 512)\n  code: string\n\n  @ApiPropertyOptional({ type: [String] })\n  @IsString({ each: true })\n  @IsArray()\n  @MaxLength(16, { each: true })\n  @IsNotEmpty({ each: true })\n  tags: string[]\n\n  validate() {\n    if (this.tags?.length >= 8) {\n      return 'tags length must less than 8'\n    }\n    if (this.name.includes('./')) {\n      return 'the relative path is not allowed in function name'\n    }\n    return null\n  }\n}\n"
  },
  {
    "path": "server/src/function/dto/update-function-debug.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsObject } from 'class-validator'\n\nexport class UpdateFunctionDebugDto {\n  @ApiProperty()\n  @IsObject()\n  params: any\n\n  validate() {\n    return null\n  }\n}\n"
  },
  {
    "path": "server/src/function/dto/update-function.dto.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport {\n  IsArray,\n  IsIn,\n  IsNotEmpty,\n  IsOptional,\n  IsString,\n  Matches,\n  MaxLength,\n} from 'class-validator'\nimport { HTTP_METHODS } from '../../constants'\nimport { HttpMethod } from '../entities/cloud-function'\n\nexport class UpdateFunctionDto {\n  @ApiProperty({\n    description: 'Function name is unique in the application',\n  })\n  @IsOptional()\n  @Matches(/^[a-zA-Z0-9_.\\-](?:[a-zA-Z0-9_.\\-/]{0,254}[a-zA-Z0-9_.\\-])?$/)\n  newName?: string\n\n  @ApiPropertyOptional()\n  @MaxLength(256)\n  description: string\n\n  @ApiProperty({ type: [String], enum: HttpMethod })\n  @IsIn(HTTP_METHODS, { each: true })\n  methods: HttpMethod[] = []\n\n  @ApiProperty({ description: 'The source code of the function' })\n  @IsNotEmpty()\n  @IsString()\n  @MaxLength(1024 * 512)\n  code: string\n\n  @ApiPropertyOptional({ type: [String] })\n  @IsString({ each: true })\n  @IsArray()\n  @MaxLength(16, { each: true })\n  @IsNotEmpty({ each: true })\n  tags: string[]\n\n  @ApiPropertyOptional()\n  @MaxLength(256)\n  @IsOptional()\n  changelog?: string\n\n  validate() {\n    return null\n  }\n}\n"
  },
  {
    "path": "server/src/function/entities/cloud-function-history.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport class CloudFunctionHistorySource {\n  @ApiProperty()\n  code: string\n}\n\nexport class CloudFunctionHistory {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty({ type: String })\n  functionId: ObjectId\n\n  @ApiProperty({ type: CloudFunctionHistorySource })\n  source: CloudFunctionHistorySource\n\n  @ApiProperty({ type: String })\n  changelog?: string\n\n  @ApiProperty()\n  createdAt: Date\n}\n"
  },
  {
    "path": "server/src/function/entities/cloud-function.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport class CloudFunctionSource {\n  @ApiProperty()\n  code: string\n\n  @ApiProperty()\n  compiled: string\n\n  @ApiPropertyOptional()\n  uri?: string\n\n  @ApiProperty()\n  version: number\n\n  @ApiPropertyOptional()\n  hash?: string\n\n  @ApiPropertyOptional()\n  lang?: string\n}\n\nexport enum HttpMethod {\n  GET = 'GET',\n  POST = 'POST',\n  PUT = 'PUT',\n  DELETE = 'DELETE',\n  PATCH = 'PATCH',\n  HEAD = 'HEAD',\n}\n\nexport class CloudFunction {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty({ type: CloudFunctionSource })\n  source: CloudFunctionSource\n\n  @ApiProperty()\n  desc: string\n\n  @ApiProperty({ type: String, isArray: true })\n  tags: string[]\n\n  @ApiProperty({ enum: HttpMethod, isArray: true })\n  methods: HttpMethod[]\n\n  @ApiPropertyOptional()\n  params?: any\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  @ApiProperty({ type: String })\n  createdBy: ObjectId\n}\n"
  },
  {
    "path": "server/src/function/function.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Post,\n  Body,\n  Patch,\n  Param,\n  Delete,\n  UseGuards,\n  HttpException,\n  HttpStatus,\n  Req,\n} from '@nestjs/common'\nimport { CreateFunctionDto } from './dto/create-function.dto'\nimport { UpdateFunctionDto } from './dto/update-function.dto'\nimport {\n  ApiResponseArray,\n  ApiResponseObject,\n  ResponseUtil,\n} from '../utils/response'\nimport { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'\nimport { FunctionService } from './function.service'\nimport { IRequest } from '../utils/interface'\nimport { CompileFunctionDto } from './dto/compile-function.dto'\nimport { BundleService } from 'src/application/bundle.service'\nimport { I18n, I18nContext, I18nService } from 'nestjs-i18n'\nimport { I18nTranslations } from '../generated/i18n.generated'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\nimport { CloudFunctionHistory } from './entities/cloud-function-history'\nimport { CloudFunction } from './entities/cloud-function'\nimport { UpdateFunctionDebugDto } from './dto/update-function-debug.dto'\nimport { FunctionRecycleBinService } from 'src/recycle-bin/cloud-function/function-recycle-bin.service'\nimport { STORAGE_LIMIT } from 'src/constants'\n\n@ApiTags('Function')\n@ApiBearerAuth('Authorization')\n@Controller('apps/:appid/functions')\nexport class FunctionController {\n  constructor(\n    private readonly functionsService: FunctionService,\n    private readonly bundleService: BundleService,\n    private readonly functionRecycleBinService: FunctionRecycleBinService,\n    private readonly i18n: I18nService<I18nTranslations>,\n  ) {}\n\n  /**\n   * Create a new function\n   * @param dto\n   * @returns\n   */\n  @ApiResponseObject(CloudFunction)\n  @ApiOperation({ summary: 'Create a new function' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post()\n  async create(\n    @Param('appid') appid: string,\n    @Body() dto: CreateFunctionDto,\n    @Req() req: IRequest,\n    @I18n() i18n: I18nContext<I18nTranslations>,\n  ) {\n    const error = dto.validate()\n    if (error) {\n      return ResponseUtil.error(error)\n    }\n\n    // check name is unique\n    const found = await this.functionsService.findOne(appid, dto.name)\n    if (found) {\n      return ResponseUtil.error(\n        i18n.t('function.create.nameExist', { args: { name: dto.name } }),\n      )\n    }\n\n    // check if meet the count limit\n    const bundle = await this.bundleService.findOne(appid)\n    const MAX_FUNCTION_COUNT = bundle?.resource?.limitCountOfCloudFunction || 0\n    const count = await this.functionsService.count(appid)\n    if (count >= MAX_FUNCTION_COUNT) {\n      return ResponseUtil.error(\n        i18n.t('function.create.maxCount', {\n          args: { count: MAX_FUNCTION_COUNT },\n        }),\n      )\n    }\n\n    const res = await this.functionsService.create(appid, req.user._id, dto)\n    if (!res) {\n      return ResponseUtil.error(i18n.t('function.create.error'))\n    }\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Query function list of an app\n   * @returns\n   */\n  @ApiResponseArray(CloudFunction)\n  @ApiOperation({ summary: 'Query function list of an app' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get()\n  async findAll(@Param('appid') appid: string) {\n    const data = await this.functionsService.findAll(appid)\n    return ResponseUtil.ok(data)\n  }\n\n  /**\n   * Get a function by its name\n   * @param appid\n   * @param name\n   */\n  @ApiResponseObject(CloudFunction)\n  @ApiOperation({ summary: 'Get a function by its name' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get(':name')\n  async findOne(\n    @Param('appid') appid: string,\n    @Param('name') name: string,\n    @I18n() i18n: I18nContext<I18nTranslations>,\n  ) {\n    const data = await this.functionsService.findOne(appid, name)\n    if (!data) {\n      throw new HttpException(\n        i18n.t('function.common.notFound', { args: { name } }),\n        HttpStatus.NOT_FOUND,\n      )\n    }\n    return ResponseUtil.ok(data)\n  }\n\n  /**\n   * Update function debug info\n   * @param appid\n   * @param name\n   * @param dto\n   * @returns\n   */\n  @ApiResponseObject(CloudFunction)\n  @ApiOperation({ summary: 'Update function debug info' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Patch(':name/debug/params')\n  async updateDebug(\n    @Param('appid') appid: string,\n    @Param('name') name: string,\n    @Body() dto: UpdateFunctionDebugDto,\n    @I18n() i18n: I18nContext<I18nTranslations>,\n  ) {\n    const func = await this.functionsService.findOne(appid, name)\n    if (!func) {\n      throw new HttpException(\n        i18n.t('function.common.notFound', { args: { name } }),\n        HttpStatus.NOT_FOUND,\n      )\n    }\n\n    const res = await this.functionsService.updateOneDebug(func, dto)\n    if (!res) {\n      return ResponseUtil.error(i18n.t('function.update.error'))\n    }\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Update a function\n   * @param appid\n   * @param name\n   * @param dto\n   * @returns\n   */\n  @ApiResponseObject(CloudFunction)\n  @ApiOperation({ summary: 'Update a function' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Patch(':name')\n  async update(\n    @Param('appid') appid: string,\n    @Param('name') name: string,\n    @Body() dto: UpdateFunctionDto,\n    @I18n() i18n: I18nContext<I18nTranslations>,\n  ) {\n    const func = await this.functionsService.findOne(appid, name)\n    if (!func) {\n      throw new HttpException(\n        i18n.t('function.common.notFound', { args: { name } }),\n        HttpStatus.NOT_FOUND,\n      )\n    }\n    const res = await this.functionsService.updateOne(func, dto)\n    if (!res) {\n      return ResponseUtil.error(i18n.t('function.update.error'))\n    }\n    if (res instanceof Error) {\n      return ResponseUtil.error(res.message)\n    }\n\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Delete a function\n   * @param appid\n   * @param name\n   * @returns\n   */\n  @ApiResponseObject(CloudFunction)\n  @ApiOperation({ summary: 'Delete a function' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Delete(':name')\n  async remove(\n    @Param('appid') appid: string,\n    @Param('name') name: string,\n    @I18n() i18n: I18nContext<I18nTranslations>,\n  ) {\n    const func = await this.functionsService.findOne(appid, name)\n    if (!func) {\n      throw new HttpException(\n        i18n.t('function.common.notFound', { args: { name } }),\n        HttpStatus.NOT_FOUND,\n      )\n    }\n    const recycleBinStorage =\n      await this.functionRecycleBinService.getRecycleBinStorage(appid)\n\n    if (recycleBinStorage >= STORAGE_LIMIT) {\n      return ResponseUtil.error('Recycle bin is full, please free up space')\n    }\n\n    const res = await this.functionsService.removeOne(func)\n    if (!res) {\n      return ResponseUtil.error(i18n.t('function.delete.error'))\n    }\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Compile a function\n   * @param appid\n   * @param name\n   * @returns\n   */\n  @ApiResponseObject(CloudFunction)\n  @ApiOperation({ summary: 'Compile a function ' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post(':name/compile')\n  async compile(\n    @Param('appid') appid: string,\n    @Param('name') name: string,\n    @Body() dto: CompileFunctionDto,\n    @I18n() i18n: I18nContext<I18nTranslations>,\n  ) {\n    if (!dto.code) {\n      return ResponseUtil.error(i18n.t('function.compile.codeRequired'))\n    }\n\n    const func = await this.functionsService.findOne(appid, name)\n    if (!func) {\n      throw new HttpException(\n        i18n.t('function.common.notFound', { args: { name } }),\n        HttpStatus.NOT_FOUND,\n      )\n    }\n\n    const res = await this.functionsService.compile(func, dto)\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Get function history\n   */\n  @ApiResponseArray(CloudFunctionHistory)\n  @ApiOperation({ summary: 'Get cloud function history' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get(':name/history')\n  async getHistory(\n    @Param('appid') appid: string,\n    @Param('name') name: string,\n    @I18n() i18n: I18nContext<I18nTranslations>,\n  ) {\n    const func = await this.functionsService.findOne(appid, name)\n    if (!func) {\n      throw new HttpException(\n        i18n.t('function.common.notFound', { args: { name } }),\n        HttpStatus.NOT_FOUND,\n      )\n    }\n\n    const res = await this.functionsService.getHistory(func)\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/function/function.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { JwtService } from '@nestjs/jwt'\nimport { FunctionController } from './function.controller'\nimport { FunctionService } from './function.service'\nimport { DatabaseModule } from 'src/database/database.module'\nimport { TriggerService } from 'src/trigger/trigger.service'\nimport { FunctionRecycleBinService } from 'src/recycle-bin/cloud-function/function-recycle-bin.service'\nimport { HttpModule } from '@nestjs/axios'\nimport { ApplicationModule } from 'src/application/application.module'\n\n@Module({\n  imports: [ApplicationModule, DatabaseModule, HttpModule],\n  controllers: [FunctionController],\n  providers: [\n    FunctionService,\n    FunctionRecycleBinService,\n    JwtService,\n    TriggerService,\n  ],\n  exports: [FunctionService],\n})\nexport class FunctionModule {}\n"
  },
  {
    "path": "server/src/function/function.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { compileTs2js } from '../utils/lang'\nimport {\n  APPLICATION_SECRET_KEY,\n  CN_PUBLISHED_FUNCTIONS,\n  TASK_LOCK_INIT_TIME,\n} from '../constants'\nimport { CreateFunctionDto } from './dto/create-function.dto'\nimport { UpdateFunctionDto } from './dto/update-function.dto'\nimport * as assert from 'node:assert'\nimport { JwtService } from '@nestjs/jwt'\nimport { CompileFunctionDto } from './dto/compile-function.dto'\nimport { DatabaseService } from 'src/database/database.service'\nimport { SystemDatabase } from 'src/system-database'\nimport { ClientSession, ObjectId } from 'mongodb'\nimport { CloudFunction } from './entities/cloud-function'\nimport { ApplicationConfiguration } from 'src/application/entities/application-configuration'\nimport { CloudFunctionHistory } from './entities/cloud-function-history'\nimport { TriggerService } from 'src/trigger/trigger.service'\nimport { TriggerPhase } from 'src/trigger/entities/cron-trigger'\nimport { UpdateFunctionDebugDto } from './dto/update-function-debug.dto'\nimport { FunctionRecycleBinService } from 'src/recycle-bin/cloud-function/function-recycle-bin.service'\nimport { HttpService } from '@nestjs/axios'\nimport { RegionService } from 'src/region/region.service'\nimport { GetApplicationNamespace } from 'src/utils/getter'\nimport { Region } from 'src/region/entities/region'\nimport { DedicatedDatabaseService } from 'src/database/dedicated-database/dedicated-database.service'\n\n@Injectable()\nexport class FunctionService {\n  private readonly logger = new Logger(FunctionService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(\n    private readonly databaseService: DatabaseService,\n    private readonly dedicatedDatabaseService: DedicatedDatabaseService,\n    private readonly jwtService: JwtService,\n    private readonly triggerService: TriggerService,\n    private readonly functionRecycleBinService: FunctionRecycleBinService,\n    private readonly httpService: HttpService,\n    private readonly regionService: RegionService,\n  ) {}\n  async create(appid: string, userid: ObjectId, dto: CreateFunctionDto) {\n    await this.db.collection<CloudFunction>('CloudFunction').insertOne({\n      appid,\n      name: dto.name,\n      source: {\n        code: dto.code,\n        compiled: compileTs2js(dto.code, dto.name),\n        version: 0,\n      },\n      desc: dto.description,\n      createdBy: userid,\n      methods: dto.methods,\n      tags: dto.tags || [],\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    })\n\n    const fn = await this.findOne(appid, dto.name)\n\n    await this.addOneHistoryRecord(fn, 'created')\n    await this.publish(fn)\n    return fn\n  }\n\n  async findAll(appid: string) {\n    const res = await this.db\n      .collection<CloudFunction>('CloudFunction')\n      .find({ appid })\n      .toArray()\n\n    return res\n  }\n\n  async count(appid: string) {\n    const res = await this.db\n      .collection<CloudFunction>('CloudFunction')\n      .countDocuments({ appid })\n\n    return res\n  }\n\n  async findOne(appid: string, name: string) {\n    const res = await this.db\n      .collection<CloudFunction>('CloudFunction')\n      .findOne({ appid, name })\n\n    return res\n  }\n\n  async updateOne(func: CloudFunction, dto: UpdateFunctionDto) {\n    // update function name\n    if (dto.newName) {\n      const client = SystemDatabase.client\n      const session = client.startSession()\n\n      const found = await this.findOne(func.appid, dto.newName)\n      if (found) {\n        return new Error(`Function name ${found.name} already exists`)\n      }\n\n      try {\n        session.startTransaction()\n\n        const fn = await this.db\n          .collection<CloudFunction>('CloudFunction')\n          .findOneAndUpdate(\n            { appid: func.appid, name: func.name },\n            {\n              $set: {\n                name: dto.newName,\n                'source.compiled': compileTs2js(func.source.code, dto.newName),\n                desc: dto.description,\n                methods: dto.methods,\n                tags: dto.tags || [],\n                updatedAt: new Date(),\n              },\n            },\n            { session, returnDocument: 'after' },\n          )\n\n        // publish\n        await this.publish(fn.value, func.name)\n\n        // trigger\n        const triggers = await this.triggerService.findAllByTarget(\n          func.appid,\n          func.name,\n        )\n        if (triggers.length !== 0) {\n          const triggersToInsert = triggers.map((doc) => ({\n            appid: doc.appid,\n            desc: doc.desc,\n            cron: doc.cron,\n            target: dto.newName, // set to new function name\n            state: doc.state,\n            phase: TriggerPhase.Creating,\n            lockedAt: TASK_LOCK_INIT_TIME,\n            createdAt: new Date(doc.createdAt),\n            updatedAt: new Date(),\n          }))\n          await this.triggerService.removeAllByTarget(\n            func.appid,\n            func.name,\n            session,\n          )\n          await this.triggerService.createMany(triggersToInsert, session)\n        }\n        await session.commitTransaction()\n        return fn.value\n      } catch (error) {\n        await session.abortTransaction()\n        this.logger.error(error)\n        throw error\n      } finally {\n        await session.endSession()\n      }\n    }\n\n    await this.db.collection<CloudFunction>('CloudFunction').updateOne(\n      { appid: func.appid, name: func.name },\n      {\n        $set: {\n          source: {\n            code: dto.code,\n            compiled: compileTs2js(dto.code, func.name),\n            version: func.source.version + 1,\n          },\n          desc: dto.description,\n          methods: dto.methods,\n          tags: dto.tags || [],\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    const fn = await this.findOne(func.appid, func.name)\n    await this.addOneHistoryRecord(fn, dto.changelog)\n    await this.publish(fn)\n\n    return fn\n  }\n\n  async updateOneDebug(func: CloudFunction, dto: UpdateFunctionDebugDto) {\n    await this.db.collection<CloudFunction>('CloudFunction').updateOne(\n      { appid: func.appid, name: func.name },\n      {\n        $set: {\n          params: dto.params,\n        },\n      },\n    )\n\n    const fn = await this.findOne(func.appid, func.name)\n    return fn\n  }\n\n  async removeOne(func: CloudFunction) {\n    const client = SystemDatabase.client\n    const session = client.startSession()\n    try {\n      session.startTransaction()\n\n      const { appid, name } = func\n\n      const res = await this.db\n        .collection<CloudFunction>('CloudFunction')\n        .findOneAndDelete({ appid, name }, { session })\n\n      await this.deleteHistory(res.value, session)\n\n      // add this function to recycle bin\n      await this.functionRecycleBinService.addToRecycleBin(res.value, session)\n\n      await this.unpublish(appid, name)\n\n      await session.commitTransaction()\n      return res.value\n    } catch (err) {\n      await session.abortTransaction()\n      this.logger.error(err)\n      throw err\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  async removeAll(appid: string) {\n    const res = await this.db\n      .collection<CloudFunction>('CloudFunction')\n      .deleteMany({ appid })\n\n    await this.deleteHistoryAll(appid)\n\n    return res\n  }\n\n  async publish(func: CloudFunction, oldFuncName?: string) {\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(func.appid)) ||\n      (await this.databaseService.findAndConnect(func.appid))\n\n    const session = client.startSession()\n    try {\n      await session.withTransaction(async () => {\n        const coll = db.collection(CN_PUBLISHED_FUNCTIONS)\n        await coll.deleteMany(\n          { name: oldFuncName ? oldFuncName : func.name },\n          { session },\n        )\n        await coll.insertOne(func, { session })\n      })\n    } finally {\n      await session.endSession()\n      await client.close()\n    }\n  }\n\n  async publishMany(funcs: CloudFunction[]) {\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(funcs[0].appid)) ||\n      (await this.databaseService.findAndConnect(funcs[0].appid))\n\n    const session = client.startSession()\n    try {\n      await session.withTransaction(async () => {\n        const coll = db.collection(CN_PUBLISHED_FUNCTIONS)\n        const funcNames = funcs.map((func) => func.name)\n        await coll.deleteMany({ name: { $in: funcNames } }, { session })\n        await coll.insertMany(funcs, { session })\n      })\n    } finally {\n      await session.endSession()\n      await client.close()\n    }\n  }\n\n  async publishFunctionTemplateItems(funcs: CloudFunction[]) {\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(funcs[0].appid)) ||\n      (await this.databaseService.findAndConnect(funcs[0].appid))\n\n    const session = client.startSession()\n    try {\n      await session.withTransaction(async () => {\n        const coll = db.collection(CN_PUBLISHED_FUNCTIONS)\n        // this is used by function template service, don't need to delete many\n        await coll.insertMany(funcs, { session })\n      })\n    } finally {\n      await session.endSession()\n      await client.close()\n    }\n  }\n\n  async unpublish(appid: string, name: string) {\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(appid)) ||\n      (await this.databaseService.findAndConnect(appid))\n    try {\n      const coll = db.collection(CN_PUBLISHED_FUNCTIONS)\n      await coll.deleteOne({ name })\n    } finally {\n      await client.close()\n    }\n  }\n\n  async compile(func: CloudFunction, dto: CompileFunctionDto) {\n    const data: CloudFunction = {\n      ...func,\n      source: {\n        ...func.source,\n        code: dto.code,\n        compiled: compileTs2js(dto.code, func.name),\n        version: func.source.version + 1,\n      },\n      updatedAt: new Date(),\n    }\n    return data\n  }\n\n  async generateRuntimeToken(\n    appid: string,\n    type: 'trigger' | 'develop' | 'openapi',\n    expireSeconds = 60,\n  ) {\n    assert(appid, 'appid is required')\n    assert(type, 'type is required')\n\n    const conf = await this.db\n      .collection<ApplicationConfiguration>('ApplicationConfiguration')\n      .findOne({ appid })\n\n    assert(conf, 'ApplicationConfiguration not found')\n\n    // get secret from envs\n    const secret = conf?.environments?.find(\n      (env) => env.name === APPLICATION_SECRET_KEY,\n    )\n    assert(secret?.value, 'application secret not found')\n\n    // generate token\n    const exp = Math.floor(Date.now() / 1000) + expireSeconds\n\n    const token = this.jwtService.sign(\n      { appid, type, exp },\n      { secret: secret.value },\n    )\n    return token\n  }\n\n  /**\n   * Get the in-cluster url of runtime\n   * @param appid\n   * @returns\n   */\n  getInClusterRuntimeUrl(region: Region, appid: string) {\n    const serviceName = appid\n    const namespace = GetApplicationNamespace(region, appid)\n    const appAddress = `${serviceName}.${namespace}:8000`\n\n    const url = `http://${appAddress}`\n    return url\n  }\n\n  async getLogs(\n    appid: string,\n    params: {\n      page: number\n      pageSize: number\n      requestId?: string\n      functionName?: string\n    },\n  ) {\n    const region = await this.regionService.findByAppId(appid)\n    if (!region?.logServerConf?.apiUrl) {\n      return {\n        data: [],\n        total: 0,\n      }\n    }\n\n    const res = await this.httpService.axiosRef.get(\n      `${region.logServerConf.apiUrl}/function/log`,\n      {\n        params: {\n          ...params,\n          appid,\n        },\n        headers: {\n          'x-token': region.logServerConf.secret,\n        },\n      },\n    )\n    return res.data\n  }\n\n  async getHistory(func: CloudFunction) {\n    const history = await this.db\n      .collection<CloudFunctionHistory>('CloudFunctionHistory')\n      .find(\n        {\n          functionId: func._id,\n        },\n        {\n          limit: 30,\n          sort: {\n            createdAt: -1,\n          },\n        },\n      )\n      .toArray()\n\n    return history\n  }\n\n  async addOneHistoryRecord(func: CloudFunction, changelog = '') {\n    await this.db\n      .collection<CloudFunctionHistory>('CloudFunctionHistory')\n      .insertOne({\n        appid: func.appid,\n        functionId: func._id,\n        source: {\n          code: func.source.code,\n        },\n        createdAt: new Date(),\n        changelog,\n      })\n  }\n\n  async deleteHistory(func: CloudFunction, session?: ClientSession) {\n    const res = await this.db\n      .collection<CloudFunctionHistory>('CloudFunctionHistory')\n      .deleteMany(\n        {\n          functionId: func._id,\n        },\n        { session },\n      )\n    return res\n  }\n\n  async deleteHistoryAll(appid: string) {\n    const res = await this.db\n      .collection<CloudFunctionHistory>('CloudFunctionHistory')\n      .deleteMany({\n        appid,\n      })\n    return res\n  }\n}\n"
  },
  {
    "path": "server/src/function-template/dto/create-function-template.dto.ts",
    "content": "import { CreateEnvironmentDto } from '../../application/dto/create-env.dto'\nimport { CreateDependencyDto } from 'src/dependency/dto/create-dependency.dto'\nimport { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport {\n  ArrayMaxSize,\n  IsArray,\n  IsBoolean,\n  IsIn,\n  IsNotEmpty,\n  IsString,\n  Matches,\n  MaxLength,\n  MinLength,\n  ValidateNested,\n} from 'class-validator'\nimport { Type } from 'class-transformer'\nimport { HTTP_METHODS } from '../../constants'\nimport { HttpMethod } from '../../function/entities/cloud-function'\nexport class FunctionTemplateItemDto {\n  @ApiProperty({\n    description: 'FunctionTemplate item name',\n  })\n  @IsNotEmpty()\n  @Matches(/^[a-zA-Z0-9_.\\-](?:[a-zA-Z0-9_.\\-/]{0,254}[a-zA-Z0-9_.\\-])?$/)\n  name: string\n\n  @ApiPropertyOptional()\n  @MaxLength(256)\n  description?: string\n\n  @ApiProperty({ type: [String], enum: HttpMethod })\n  @IsIn(HTTP_METHODS, { each: true })\n  methods: HttpMethod[] = []\n\n  @ApiProperty({ description: 'The source code of the function' })\n  @IsNotEmpty()\n  @IsString()\n  @MaxLength(1024 * 512)\n  code: string\n\n  validate() {\n    return null\n  }\n}\n\nexport class CreateFunctionTemplateDto {\n  @ApiProperty({ description: 'function template name' })\n  @IsNotEmpty()\n  @IsString()\n  @MaxLength(32)\n  name: string\n\n  @ApiProperty({ description: 'Dependencies', type: [CreateDependencyDto] })\n  @IsNotEmpty()\n  @IsArray()\n  @ValidateNested({ each: true })\n  @Type(() => CreateDependencyDto)\n  dependencies: CreateDependencyDto[]\n\n  @ApiProperty({ description: 'environments', type: [CreateEnvironmentDto] })\n  @IsArray()\n  @ValidateNested({ each: true })\n  @Type(() => CreateEnvironmentDto)\n  environments: CreateEnvironmentDto[]\n\n  @ApiProperty({ description: 'Private flag' })\n  @IsBoolean()\n  private: boolean\n\n  @ApiPropertyOptional({ description: 'function template description' })\n  @IsString()\n  @MinLength(8)\n  @MaxLength(256)\n  description?: string\n\n  @ApiProperty({\n    description: 'items of the function template',\n    type: [FunctionTemplateItemDto],\n  })\n  @IsNotEmpty()\n  @ValidateNested({ each: true })\n  @IsArray()\n  @ArrayMaxSize(20)\n  @Type(() => FunctionTemplateItemDto)\n  items: FunctionTemplateItemDto[]\n}\n"
  },
  {
    "path": "server/src/function-template/dto/function-template-usedBy.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport class GetFunctionTemplateUsedByDto {\n  @ApiProperty({ type: String })\n  uid: ObjectId\n}\n"
  },
  {
    "path": "server/src/function-template/dto/function-templates.dto.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { HttpMethod } from 'src/function/entities/cloud-function'\nimport { EnvironmentVariable } from 'src/application/entities/application-configuration'\nimport { ObjectId } from 'mongodb'\nimport { FunctionTemplate } from '../entities/function-template'\n\nclass FunctionTemplateItemSource {\n  @ApiProperty({ description: 'The source code of the function' })\n  code: string\n}\n\nclass UserInfo {\n  @ApiPropertyOptional()\n  username?: string\n  @ApiPropertyOptional()\n  email?: string\n}\n\nclass FunctionTemplateItems {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  templateId: ObjectId\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  desc: string\n\n  @ApiProperty()\n  source: FunctionTemplateItemSource\n\n  @ApiProperty({ type: [String], enum: HttpMethod })\n  methods: HttpMethod[]\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\nexport class FunctionTemplatesDto {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  uid: ObjectId\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  dependencies: string[]\n\n  @ApiProperty({ isArray: true, type: EnvironmentVariable })\n  environments: EnvironmentVariable[]\n\n  @ApiProperty()\n  private: boolean\n\n  @ApiProperty()\n  isRecommended: boolean\n\n  @ApiProperty()\n  description: string\n\n  @ApiProperty()\n  star: number\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  @ApiPropertyOptional({ type: [FunctionTemplateItems] })\n  items: FunctionTemplateItems[]\n\n  @ApiPropertyOptional({ type: UserInfo })\n  user?: UserInfo\n\n  @ApiProperty({ type: String })\n  author?: string\n\n  @ApiProperty({ type: Boolean })\n  stared?: boolean\n}\n\nexport class GetMyStaredFunctionTemplatesDto {\n  @ApiProperty({ type: String })\n  _id: ObjectId\n\n  @ApiProperty({ type: String })\n  uid: ObjectId\n\n  @ApiProperty({ type: String })\n  templateId: ObjectId\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  @ApiProperty({ type: [FunctionTemplate] })\n  functionTemplate: FunctionTemplate[]\n\n  @ApiProperty({ type: [FunctionTemplateItems] })\n  items: FunctionTemplateItems[]\n}\n\nexport class GetMyRecentUseFunctionTemplatesDto {\n  @ApiProperty({ type: String })\n  _id: ObjectId\n\n  @ApiProperty({ type: String })\n  uid: ObjectId\n\n  @ApiProperty({ type: String })\n  templateId: ObjectId\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  @ApiProperty({ type: [FunctionTemplate] })\n  functionTemplate: FunctionTemplate[]\n\n  @ApiProperty({ type: [FunctionTemplateItems] })\n  items: FunctionTemplateItems[]\n}\n"
  },
  {
    "path": "server/src/function-template/dto/update-function-template.dto.ts",
    "content": "import { ObjectId } from 'mongodb'\nimport { CreateEnvironmentDto } from '../../application/dto/create-env.dto'\nimport { CreateDependencyDto } from 'src/dependency/dto/create-dependency.dto'\nimport { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport {\n  ArrayMaxSize,\n  IsBoolean,\n  IsNotEmpty,\n  IsString,\n  Length,\n  MaxLength,\n  MinLength,\n  ValidateNested,\n} from 'class-validator'\nimport { Type } from 'class-transformer'\nimport { FunctionTemplateItemDto } from './create-function-template.dto'\n\nexport class UpdateFunctionTemplateDto {\n  @ApiProperty({ description: 'Function template id' })\n  @IsNotEmpty()\n  @Length(24, 24)\n  functionTemplateId: ObjectId\n\n  @ApiProperty({ description: 'Template name' })\n  @IsNotEmpty()\n  @MaxLength(32)\n  @IsString()\n  name: string\n\n  @ApiProperty({ description: 'Dependencies', type: [CreateDependencyDto] })\n  @IsNotEmpty()\n  @ValidateNested({ each: true })\n  @Type(() => CreateDependencyDto)\n  dependencies: CreateDependencyDto[]\n\n  @ApiProperty({ description: 'Environments', type: [CreateEnvironmentDto] })\n  @ValidateNested({ each: true })\n  @Type(() => CreateEnvironmentDto)\n  environments: CreateEnvironmentDto[]\n\n  @ApiProperty({ description: 'Private flag' })\n  @IsBoolean()\n  private: boolean\n\n  @ApiPropertyOptional({ description: 'function template description' })\n  @IsString()\n  @MaxLength(256)\n  @MinLength(8)\n  description?: string\n\n  @ApiPropertyOptional({\n    description: 'items of the function template',\n    type: [FunctionTemplateItemDto],\n  })\n  @IsNotEmpty()\n  @ValidateNested({ each: true })\n  @ArrayMaxSize(20)\n  @Type(() => FunctionTemplateItemDto)\n  items: FunctionTemplateItemDto[]\n}\n"
  },
  {
    "path": "server/src/function-template/dto/use-function-template.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString, Length } from 'class-validator'\nimport { ObjectId } from 'mongodb'\n\nexport class UseFunctionTemplateDto {\n  @ApiProperty({\n    description: 'The ObjectId of function template',\n    type: 'string',\n  })\n  @IsNotEmpty()\n  @Length(24, 24)\n  functionTemplateId: ObjectId\n\n  @ApiProperty()\n  @IsString()\n  @IsNotEmpty()\n  appid: string\n}\n"
  },
  {
    "path": "server/src/function-template/entities/function-template.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport {\n  CloudFunctionSource,\n  HttpMethod,\n} from 'src/function/entities/cloud-function'\nimport { EnvironmentVariable } from 'src/application/entities/application-configuration'\nimport { ObjectId } from 'mongodb'\n\nexport enum RelationState {\n  Enabled = 'Active',\n  Disabled = 'Inactive',\n}\n\nexport class FunctionTemplate {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  uid: ObjectId\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  dependencies: string[]\n\n  @ApiProperty({ isArray: true, type: EnvironmentVariable })\n  environments: EnvironmentVariable[]\n\n  @ApiProperty()\n  private: boolean\n\n  @ApiProperty()\n  isRecommended: boolean\n\n  @ApiProperty()\n  description: string\n\n  @ApiProperty()\n  star: number\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  @ApiPropertyOptional()\n  tags?: string[]\n\n  @ApiPropertyOptional()\n  category?: string\n}\n\nexport class FunctionTemplateItem {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  templateId: ObjectId\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  desc: string\n\n  @ApiProperty()\n  source: Partial<CloudFunctionSource>\n\n  @ApiProperty({ type: [String], enum: HttpMethod })\n  methods: HttpMethod[]\n\n  createdAt: Date\n\n  updatedAt: Date\n}\n\nexport class FunctionTemplateStarRelation {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n  @ApiProperty({ type: String })\n  uid: ObjectId\n  @ApiProperty({ type: String })\n  templateId: ObjectId\n  @ApiProperty()\n  createdAt: Date\n  @ApiProperty()\n  updatedAt: Date\n  @ApiProperty({ type: String })\n  state?: RelationState\n}\n\nexport class FunctionTemplateUseRelation {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n  @ApiProperty({ type: String })\n  uid: ObjectId\n  @ApiProperty({ type: String })\n  templateId: ObjectId\n  @ApiProperty()\n  createdAt: Date\n  @ApiProperty()\n  updatedAt: Date\n  @ApiProperty({ type: String })\n  state?: RelationState\n}\n"
  },
  {
    "path": "server/src/function-template/function-template.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Post,\n  Body,\n  Patch,\n  Delete,\n  UseGuards,\n  Req,\n  Query,\n  Param,\n  Put,\n} from '@nestjs/common'\nimport { FunctionTemplateService } from './function-template.service'\nimport { CreateFunctionTemplateDto } from './dto/create-function-template.dto'\nimport { UpdateFunctionTemplateDto } from './dto/update-function-template.dto'\nimport { IRequest } from '../utils/interface'\nimport { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'\nimport {\n  ResponseUtil,\n  ApiResponseString,\n  ApiResponseArray,\n  ApiResponsePagination,\n} from 'src/utils/response'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ObjectId } from 'mongodb'\nimport { FunctionService } from 'src/function/function.service'\nimport { BundleService } from 'src/application/bundle.service'\nimport { DependencyService } from 'src/dependency/dependency.service'\nimport { GetFunctionTemplateUsedByDto } from './dto/function-template-usedBy.dto'\nimport { FunctionTemplatesDto } from './dto/function-templates.dto'\n\n@ApiTags('FunctionTemplate')\n@ApiBearerAuth('Authorization')\n@Controller('function-templates')\nexport class FunctionTemplateController {\n  constructor(\n    private readonly functionsService: FunctionService,\n    private readonly bundleService: BundleService,\n    private readonly dependencyService: DependencyService,\n    private readonly functionTemplateService: FunctionTemplateService,\n  ) {}\n\n  /**\n   * Create a new function-template\n   * @param dto\n   * @returns\n   */\n  @ApiOperation({ summary: 'create a function template' })\n  @ApiResponseArray(FunctionTemplatesDto)\n  @UseGuards(JwtAuthGuard)\n  @Post()\n  async createFunctionTemplate(\n    @Body() dto: CreateFunctionTemplateDto,\n    @Req() req: IRequest,\n  ) {\n    // validate dependencies\n    const valid = dto.dependencies.every((dep) =>\n      this.dependencyService.validate(dep),\n    )\n    if (!valid) {\n      return ResponseUtil.error('function template dependencies is invalid')\n    }\n\n    const counts =\n      await this.functionTemplateService.getCountOfFunctionTemplates(\n        req.user._id,\n      )\n\n    if (counts >= 100) {\n      return ResponseUtil.error('function template exceed the count limit')\n    }\n\n    const res = await this.functionTemplateService.createFunctionTemplate(\n      req.user._id,\n      dto,\n    )\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'use a function template' })\n  @ApiResponseArray(FunctionTemplatesDto)\n  @UseGuards(JwtAuthGuard)\n  @Post(':templateId/:appid')\n  async useFunctionTemplate(\n    @Param('templateId') templateId: string,\n    @Param('appid') appid: string,\n    @Req() req: IRequest,\n  ) {\n    if (templateId.length !== 24) {\n      return ResponseUtil.error('invalid templateId')\n    }\n    // Check if appid is a valid resource\n    const valid = await this.functionTemplateService.applicationAuthGuard(\n      appid,\n      req.user._id,\n    )\n\n    if (!valid) {\n      return ResponseUtil.error('invalid resource')\n    }\n\n    // check if the function template is exist\n    const found = await this.functionTemplateService.findOneFunctionTemplate(\n      new ObjectId(templateId),\n    )\n    if (!found) {\n      return ResponseUtil.error('function template not found')\n    }\n\n    // function check\n    const functionTemplateItems =\n      await this.functionTemplateService.findFunctionTemplateItems(\n        new ObjectId(templateId),\n      )\n    if (!functionTemplateItems || functionTemplateItems.length === 0) {\n      return ResponseUtil.error('function template items not found')\n    }\n\n    // check if meet the count limit\n    const bundle = await this.bundleService.findOne(appid)\n    const MAX_FUNCTION_COUNT = bundle?.resource?.limitCountOfCloudFunction || 0\n    const count = await this.functionsService.count(appid)\n    if (count >= MAX_FUNCTION_COUNT) {\n      return ResponseUtil.error('exceed the count limit')\n    }\n\n    const res = await this.functionTemplateService.useFunctionTemplate(\n      req.user._id,\n      appid,\n      new ObjectId(templateId),\n    )\n\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'update a function template' })\n  @ApiResponseArray(FunctionTemplatesDto)\n  @UseGuards(JwtAuthGuard)\n  @Patch('update/:id')\n  async updateFunctionTemplate(\n    @Param('id') templateId: string,\n    @Body() dto: UpdateFunctionTemplateDto,\n    @Req() req: IRequest,\n  ) {\n    if (templateId.length !== 24) {\n      return ResponseUtil.error('invalid templateId')\n    }\n\n    // check if the function template is exist\n    const found = await this.functionTemplateService.findOneFunctionTemplate(\n      new ObjectId(templateId),\n      req.user._id,\n    )\n\n    if (!found) {\n      return ResponseUtil.error('function template not found')\n    }\n\n    const res = await this.functionTemplateService.updateFunctionTemplate(\n      req.user._id,\n      new ObjectId(templateId),\n      dto,\n    )\n\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'delete a function template' })\n  @ApiResponseArray(FunctionTemplatesDto)\n  @UseGuards(JwtAuthGuard)\n  @Delete(':id')\n  async deleteFunctionTemplate(\n    @Param('id') templateId: string,\n    @Req() req: IRequest,\n  ) {\n    if (templateId.length !== 24) {\n      return ResponseUtil.error('invalid templateId')\n    }\n\n    const found = await this.functionTemplateService.findOneFunctionTemplate(\n      new ObjectId(templateId),\n      req.user._id,\n    )\n\n    if (!found) {\n      return ResponseUtil.error('function template not found')\n    }\n\n    const res = await this.functionTemplateService.deleteFunctionTemplate(\n      new ObjectId(templateId),\n      req.user._id,\n    )\n\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'star a function template' })\n  @ApiResponseString()\n  @UseGuards(JwtAuthGuard)\n  @Put(':templateId/star')\n  async starFunctionTemplate(\n    @Param('templateId') templateId: string,\n    @Req() req: IRequest,\n  ) {\n    if (templateId.length !== 24) {\n      return ResponseUtil.error('invalid templateId')\n    }\n\n    const found = await this.functionTemplateService.findOneFunctionTemplate(\n      new ObjectId(templateId),\n    )\n\n    if (!found) {\n      return ResponseUtil.error('function template not found')\n    }\n\n    const res = await this.functionTemplateService.starFunctionTemplate(\n      new ObjectId(templateId),\n      req.user._id,\n    )\n\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'get function template user star state' })\n  @ApiResponseString()\n  @UseGuards(JwtAuthGuard)\n  @Get(':id/star-state')\n  async getUserFunctionTemplateStarState(\n    @Param('id') templateId: string,\n    @Req() req: IRequest,\n  ) {\n    if (templateId.length !== 24) {\n      return ResponseUtil.error('invalid templateId')\n    }\n\n    const res =\n      await this.functionTemplateService.functionTemplateUserStarState(\n        new ObjectId(templateId),\n        req.user._id,\n      )\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'get people who use this function template' })\n  @ApiResponsePagination(GetFunctionTemplateUsedByDto)\n  @UseGuards(JwtAuthGuard)\n  @Get(':id/used-by')\n  async getFunctionTemplateUsedBy(\n    @Param('id') templateId: string,\n    @Query('asc') asc: number,\n    @Query('page') page: number,\n    @Query('pageSize') pageSize: number,\n  ) {\n    if (templateId.length !== 24) {\n      return ResponseUtil.error('invalid templateId')\n    }\n\n    asc = asc === 0 ? Number(asc) : 1\n    page = page ? Number(page) : 1\n    pageSize = pageSize ? Number(pageSize) : 10\n    if (pageSize > 100) {\n      pageSize = 100\n    }\n    const found = await this.functionTemplateService.findOneFunctionTemplate(\n      new ObjectId(templateId),\n    )\n    if (!found) {\n      return ResponseUtil.error('function template not found')\n    }\n    const res = await this.functionTemplateService.functionTemplateUsedBy(\n      new ObjectId(templateId),\n      asc,\n      page,\n      pageSize,\n    )\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * asc is sorted by time by default\n   * If sort has a value, then asc's sort type is the type of sort's value\n   * For example, if the value of sort is hot, then asc's sort is the star field\n   */\n  @ApiOperation({ summary: 'get my function template' })\n  @ApiResponsePagination(FunctionTemplatesDto)\n  @UseGuards(JwtAuthGuard)\n  @Get('my')\n  async getMyFunctionTemplate(\n    @Query('page') page: number,\n    @Query('pageSize') pageSize: number,\n    @Query('keyword') keyword: string,\n    @Query('asc') asc: number,\n    @Query('sort') sort: string,\n    @Query('type') type: string,\n    @Req() req: IRequest,\n  ) {\n    asc = asc === 0 ? Number(asc) : 1\n    page = page ? Number(page) : 1\n    pageSize = pageSize ? Number(pageSize) : 10\n    if (pageSize > 100) {\n      pageSize = 100\n    }\n\n    if (type === 'default' && keyword) {\n      const condition = {\n        asc,\n        page,\n        pageSize,\n        name: keyword,\n      }\n      const res = await this.functionTemplateService.findMyFunctionTemplates(\n        req.user._id,\n        condition,\n      )\n      return ResponseUtil.ok(res)\n    }\n\n    if (type === 'default' && sort === 'hot') {\n      const condition = {\n        page,\n        pageSize,\n        asc,\n        hot: true,\n      }\n      const res = await this.functionTemplateService.findMyFunctionTemplates(\n        req.user._id,\n        condition,\n      )\n      return ResponseUtil.ok(res)\n    }\n\n    if (type === 'default') {\n      const condition = {\n        asc,\n        page,\n        pageSize,\n      }\n      const res = await this.functionTemplateService.findMyFunctionTemplates(\n        req.user._id,\n        condition,\n      )\n      return ResponseUtil.ok(res)\n    }\n\n    /**\n     * stared function template\n     */\n    if (type === 'stared' && keyword) {\n      const condition = {\n        asc,\n        page,\n        pageSize,\n        name: keyword,\n      }\n      const res =\n        await this.functionTemplateService.findMyStaredFunctionTemplates(\n          req.user._id,\n          condition,\n        )\n      return ResponseUtil.ok(res)\n    }\n\n    if (type === 'stared' && sort === 'hot') {\n      const condition = {\n        page,\n        pageSize,\n        asc,\n        hot: true,\n      }\n      const res =\n        await this.functionTemplateService.findMyStaredFunctionTemplates(\n          req.user._id,\n          condition,\n        )\n      return ResponseUtil.ok(res)\n    }\n\n    if (type === 'stared') {\n      const condition = {\n        asc,\n        page,\n        pageSize,\n      }\n      const res =\n        await this.functionTemplateService.findMyStaredFunctionTemplates(\n          req.user._id,\n          condition,\n        )\n      return ResponseUtil.ok(res)\n    }\n\n    /**\n     * recent used function template\n     */\n    if (type === 'recentUsed' && keyword) {\n      const condition = {\n        asc,\n        page,\n        pageSize,\n        name: keyword,\n      }\n      const res =\n        await this.functionTemplateService.findMyRecentUseFunctionTemplates(\n          req.user._id,\n          condition,\n        )\n      return ResponseUtil.ok(res)\n    }\n\n    if (type === 'recentUsed' && sort === 'hot') {\n      const condition = {\n        asc,\n        page,\n        pageSize,\n        hot: true,\n      }\n      const res =\n        await this.functionTemplateService.findMyRecentUseFunctionTemplates(\n          req.user._id,\n          condition,\n        )\n      return ResponseUtil.ok(res)\n    }\n\n    if (type === 'recentUsed') {\n      const condition = {\n        asc,\n        page,\n        pageSize,\n      }\n      const res =\n        await this.functionTemplateService.findMyRecentUseFunctionTemplates(\n          req.user._id,\n          condition,\n        )\n      return ResponseUtil.ok(res)\n    }\n  }\n\n  @ApiOperation({ summary: 'get all recommend function template' })\n  @ApiResponsePagination(FunctionTemplatesDto)\n  @UseGuards(JwtAuthGuard)\n  @Get('recommend')\n  async getRecommendFunctionTemplate(\n    @Query('asc') asc: number,\n    @Query('page') page: number,\n    @Query('pageSize') pageSize: number,\n    @Query('keyword') keyword: string,\n    @Query('sort') sort: string,\n    @Req() req: IRequest,\n  ) {\n    asc = asc === 0 ? Number(asc) : 1\n    page = page ? Number(page) : 1\n    pageSize = pageSize ? Number(pageSize) : 10\n    if (pageSize > 100) {\n      pageSize = 100\n    }\n\n    const condition = {\n      page,\n      pageSize,\n      asc,\n      hot: sort === 'hot',\n      name: keyword,\n    }\n\n    const res =\n      await this.functionTemplateService.findRecommendFunctionTemplates(\n        req.user._id,\n        condition,\n      )\n\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'get one function template' })\n  @ApiResponseArray(FunctionTemplatesDto)\n  @UseGuards(JwtAuthGuard)\n  @Get(':id')\n  async getOneFunctionTemplate(\n    @Param('id') templateId: string,\n    @Req() req: IRequest,\n  ) {\n    if (templateId.length !== 24) {\n      return ResponseUtil.error('function template id is invalid')\n    }\n\n    const template = await this.functionTemplateService.findOneFunctionTemplate(\n      new ObjectId(templateId),\n    )\n\n    if (\n      template.private === true &&\n      template.uid.toString() !== req.user._id.toString()\n    ) {\n      return ResponseUtil.error(\n        'private function template can only be inspect by the owner',\n      )\n    }\n\n    const res = await this.functionTemplateService.findOne(\n      new ObjectId(templateId),\n    )\n\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'get all function template' })\n  @ApiResponsePagination(FunctionTemplatesDto)\n  @UseGuards(JwtAuthGuard)\n  @Get()\n  async getAllFunctionTemplate(\n    @Query('asc') asc: number,\n    @Query('page') page: number,\n    @Query('pageSize') pageSize: number,\n    @Query('keyword') keyword: string,\n    @Query('sort') sort: string,\n    @Req() req: IRequest,\n  ) {\n    asc = asc === 0 ? Number(asc) : 1\n    page = page ? Number(page) : 1\n    pageSize = pageSize ? Number(pageSize) : 10\n    if (pageSize > 100) {\n      pageSize = 100\n    }\n    if (keyword) {\n      const res =\n        await this.functionTemplateService.findFunctionTemplatesByName(\n          asc,\n          page,\n          pageSize,\n          keyword,\n          req.user._id,\n        )\n      return ResponseUtil.ok(res)\n    }\n\n    const res = await this.functionTemplateService.findFunctionTemplates(\n      asc,\n      page,\n      pageSize,\n      req.user._id,\n      sort,\n    )\n\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/function-template/function-template.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { FunctionTemplateService } from './function-template.service'\nimport { FunctionTemplateController } from './function-template.controller'\nimport { ApplicationModule } from 'src/application/application.module'\nimport { DatabaseModule } from 'src/database/database.module'\nimport { FunctionModule } from 'src/function/function.module'\nimport { DependencyModule } from '../dependency/dependency.module'\n\n@Module({\n  imports: [\n    ApplicationModule,\n    DatabaseModule,\n    FunctionModule,\n    DependencyModule,\n  ],\n  controllers: [FunctionTemplateController],\n  providers: [FunctionTemplateService],\n})\nexport class FunctionTemplateModule {}\n"
  },
  {
    "path": "server/src/function-template/function-template.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { CreateFunctionTemplateDto } from './dto/create-function-template.dto'\nimport { UpdateFunctionTemplateDto } from './dto/update-function-template.dto'\nimport { SystemDatabase } from 'src/system-database'\nimport {\n  FunctionTemplate,\n  FunctionTemplateItem,\n  FunctionTemplateUseRelation,\n  FunctionTemplateStarRelation,\n  RelationState,\n} from './entities/function-template'\nimport { ObjectId } from 'mongodb'\nimport { EnvironmentVariableService } from 'src/application/environment.service'\nimport { ApplicationConfiguration } from 'src/application/entities/application-configuration'\nimport * as assert from 'node:assert'\nimport * as npa from 'npm-package-arg'\nimport { CloudFunction } from 'src/function/entities/cloud-function'\nimport { compileTs2js } from '../utils/lang'\nimport { DatabaseService } from 'src/database/database.service'\nimport { DependencyService } from 'src/dependency/dependency.service'\nimport { ApplicationService } from '../application/application.service'\nimport { ApplicationConfigurationService } from 'src/application/configuration.service'\nimport { FunctionService } from 'src/function/function.service'\nimport { User } from 'src/user/entities/user'\n\ninterface FindFunctionTemplatesParams {\n  asc: number\n  page: number\n  pageSize: number\n  name?: string\n  hot?: boolean\n}\n\n@Injectable()\nexport class FunctionTemplateService {\n  constructor(\n    private readonly environmentVariableService: EnvironmentVariableService,\n    private readonly databaseService: DatabaseService,\n    private readonly dependencyService: DependencyService,\n    private readonly appService: ApplicationService,\n    private readonly confService: ApplicationConfigurationService,\n    private readonly functionsService: FunctionService,\n  ) {}\n\n  private readonly logger = new Logger(FunctionTemplateService.name)\n  private readonly db = SystemDatabase.db\n  private readonly maskedString = 'xxxxxxxxxxxxxxxxxxxx'\n\n  async createFunctionTemplate(\n    userid: ObjectId,\n    dto: CreateFunctionTemplateDto,\n  ) {\n    const client = SystemDatabase.client\n    const session = client.startSession()\n\n    try {\n      session.startTransaction()\n\n      const insertedTemplate = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .insertOne(\n          {\n            uid: userid,\n            name: dto.name,\n            dependencies: dto.dependencies.map(\n              (dep) => `${dep.name}@${dep.spec}`,\n            ),\n            environments: dto.environments,\n            private: dto.private,\n            isRecommended: false,\n            description: dto.description || '',\n            star: 0,\n            createdAt: new Date(),\n            updatedAt: new Date(),\n          },\n          { session },\n        )\n\n      const functionTemplateItems = dto.items.map((item) => ({\n        templateId: insertedTemplate.insertedId,\n        name: item.name,\n        desc: item.description || '',\n        source: { code: item.code },\n        methods: item.methods,\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      }))\n\n      await this.db\n        .collection<FunctionTemplateItem>('FunctionTemplateItem')\n        .insertMany(functionTemplateItems, { session })\n\n      await session.commitTransaction()\n\n      const pipe = [\n        { $match: { _id: insertedTemplate.insertedId } },\n        {\n          $lookup: {\n            from: 'FunctionTemplateItem',\n            localField: '_id',\n            foreignField: 'templateId',\n            as: 'items',\n          },\n        },\n      ]\n      const template = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .aggregate(pipe)\n        .toArray()\n      return template\n    } catch (error) {\n      await session.abortTransaction()\n      this.logger.error(error)\n      throw error\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  async updateFunctionTemplate(\n    userid: ObjectId,\n    templateId: ObjectId,\n    dto: UpdateFunctionTemplateDto,\n  ) {\n    const client = SystemDatabase.client\n    const session = client.startSession()\n\n    try {\n      session.startTransaction()\n\n      const found = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .findOne({ _id: templateId, uid: userid })\n\n      // If a template transitions from public to private, the star relationships and use relationships of other users with that template should also be removed.\n      if (found.private === false && dto.private === true) {\n        await this.db\n          .collection<FunctionTemplateStarRelation>(\n            'FunctionTemplateStarRelation',\n          )\n          .updateMany(\n            { templateId: templateId, uid: { $ne: userid } },\n            {\n              $set: { state: RelationState.Disabled },\n              $currentDate: { updatedAt: true },\n            },\n            { session },\n          )\n        await this.db\n          .collection<FunctionTemplateUseRelation>(\n            'FunctionTemplateUseRelation',\n          )\n          .updateMany(\n            { templateId: templateId, uid: { $ne: userid } },\n            {\n              $set: { state: RelationState.Disabled },\n              $currentDate: { updatedAt: true },\n            },\n            { session },\n          )\n      }\n      // If a template becomes public, restart the usage and collection relationship for that template\n      if (found.private === true && dto.private === false) {\n        await this.db\n          .collection<FunctionTemplateStarRelation>(\n            'FunctionTemplateStarRelation',\n          )\n          .updateMany(\n            { templateId: templateId, uid: { $ne: userid } },\n            {\n              $set: { state: RelationState.Enabled },\n              $currentDate: { updatedAt: true },\n            },\n            { session },\n          )\n        await this.db\n          .collection<FunctionTemplateUseRelation>(\n            'FunctionTemplateUseRelation',\n          )\n          .updateMany(\n            { templateId: templateId, uid: { $ne: userid } },\n            {\n              $set: { state: RelationState.Enabled },\n              $currentDate: { updatedAt: true },\n            },\n            { session },\n          )\n      }\n\n      const res = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .findOneAndUpdate(\n          { _id: templateId, uid: userid },\n          {\n            $set: {\n              name: dto.name,\n              dependencies: dto.dependencies.map(\n                (dep) => `${dep.name}@${dep.spec}`,\n              ),\n              environments: dto.environments,\n              private: dto.private,\n              isRecommended: false,\n              description: dto.description || '',\n            },\n            $currentDate: { updatedAt: true },\n          },\n          {\n            session: session,\n            returnDocument: 'after',\n          },\n        )\n\n      if (res.lastErrorObject.updatedExisting) {\n        const functionTemplateItems = dto.items.map((item) => ({\n          templateId: res.value._id,\n          name: item.name,\n          desc: item.description || '',\n          source: { code: item.code },\n          methods: item.methods,\n          createdAt: new Date(),\n          updatedAt: new Date(),\n        }))\n        await this.db\n          .collection<FunctionTemplateItem>('FunctionTemplateItem')\n          .deleteMany({ templateId: templateId }, { session })\n        await this.db\n          .collection<FunctionTemplateItem>('FunctionTemplateItem')\n          .insertMany(functionTemplateItems, { session })\n      }\n\n      await session.commitTransaction()\n\n      const pipe = [\n        { $match: { _id: templateId } },\n        {\n          $lookup: {\n            from: 'FunctionTemplateItem',\n            localField: '_id',\n            foreignField: 'templateId',\n            as: 'items',\n          },\n        },\n      ]\n\n      const template = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .aggregate(pipe)\n        .toArray()\n      return template\n    } catch (error) {\n      await session.abortTransaction()\n      this.logger.error(error)\n      throw error\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  // use a function template\n  async useFunctionTemplate(\n    userid: ObjectId,\n    appid: string,\n    templateId: ObjectId,\n  ) {\n    const client = SystemDatabase.client\n\n    const session = client.startSession()\n\n    try {\n      session.startTransaction()\n\n      const functionTemplate = await this.findOneFunctionTemplate(templateId)\n\n      assert(\n        functionTemplate.private === false ||\n          functionTemplate.uid.toString() === userid.toString(),\n        'private function template can only be used by the owner',\n      )\n\n      // add function template dependencies to application configuration\n      //\n      const extraDependencies = await this.dependencyService.getExtras(appid)\n      const builtinDependencies = this.dependencyService.getBuiltins()\n      const all = extraDependencies.concat(builtinDependencies)\n      const allNames = all.map((item) => npa(item).name)\n\n      // If the dependency already exists, use the original dependency.\n      const filtered = functionTemplate.dependencies.filter((item) => {\n        const name = npa(item).name\n        return !allNames.includes(name)\n      })\n      const deps = extraDependencies.concat(filtered)\n\n      await this.db\n        .collection<ApplicationConfiguration>('ApplicationConfiguration')\n        .updateOne(\n          { appid },\n          {\n            $set: { dependencies: deps },\n            $currentDate: { updatedAt: true },\n          },\n          { session },\n        )\n\n      // add function template Env to application configuration\n      //\n      const originEnv = await this.environmentVariableService.findAll(appid)\n      const mergedEnv = [\n        ...originEnv,\n        ...functionTemplate.environments.filter(\n          (item2) => !originEnv.some((item1) => item1.name === item2.name),\n        ),\n      ]\n\n      const applicationConf = await this.db\n        .collection<ApplicationConfiguration>('ApplicationConfiguration')\n        .findOneAndUpdate(\n          { appid },\n          {\n            $set: { environments: mergedEnv },\n            $currentDate: { updatedAt: true },\n          },\n          { returnDocument: 'after', session },\n        )\n      assert(applicationConf?.value, 'application configuration not found')\n\n      // publish application configuration to app database\n      await this.confService.publish(applicationConf.value)\n\n      // publish function template items to CloudFunction and app database\n      //\n      const functionTemplateItems = await this.findFunctionTemplateItems(\n        templateId,\n      )\n\n      const existingNames = new Set(\n        await this.db\n          .collection<CloudFunction>('CloudFunction')\n          .aggregate([\n            { $match: { appid: appid } },\n            { $group: { _id: null, names: { $addToSet: '$name' } } },\n          ])\n          .toArray()\n          .then((result) => (result.length > 0 ? result[0].names : [])),\n      )\n\n      const documents = []\n\n      for (const functionTemplateItem of functionTemplateItems) {\n        // Check name is unique\n        while (existingNames.has(functionTemplateItem.name)) {\n          functionTemplateItem.name = `${functionTemplateItem.name}-copy`\n        }\n\n        // Add the unique name to the set\n        existingNames.add(functionTemplateItem.name)\n\n        const document = {\n          appid,\n          name: functionTemplateItem.name,\n          source: {\n            code: functionTemplateItem.source.code,\n            compiled: compileTs2js(\n              functionTemplateItem.source.code,\n              functionTemplateItem.name,\n            ),\n            version: 0,\n          },\n          desc: functionTemplateItem.desc || '',\n          createdBy: userid,\n          methods: functionTemplateItem.methods,\n          tags: [],\n          createdAt: new Date(),\n          updatedAt: new Date(),\n        }\n\n        documents.push(document)\n      }\n\n      await this.db\n        .collection<CloudFunction>('CloudFunction')\n        .insertMany(documents, { session })\n\n      // publish function template items to app database\n      const namesToSearch = functionTemplateItems.map((item) => item.name)\n      const itemsToInsert = await this.db\n        .collection<CloudFunction>('CloudFunction')\n        .find({ appid: appid, name: { $in: namesToSearch } }, { session })\n        .toArray()\n\n      await this.functionsService.publishFunctionTemplateItems(itemsToInsert)\n\n      // add user use relation\n      //\n      const res = await this.db\n        .collection<FunctionTemplateUseRelation>('FunctionTemplateUseRelation')\n        .findOneAndUpdate(\n          { uid: userid, templateId: templateId },\n          {\n            $currentDate: { updatedAt: true },\n          },\n          { session },\n        )\n      if (!res.lastErrorObject.updatedExisting) {\n        await this.db\n          .collection<FunctionTemplateUseRelation>(\n            'FunctionTemplateUseRelation',\n          )\n          .insertOne(\n            {\n              uid: userid,\n              templateId: templateId,\n              state: RelationState.Enabled,\n              createdAt: new Date(),\n              updatedAt: new Date(),\n            },\n            { session },\n          )\n      }\n\n      await session.commitTransaction()\n\n      const pipe = [\n        { $match: { _id: templateId } },\n        {\n          $lookup: {\n            from: 'FunctionTemplateItem',\n            localField: '_id',\n            foreignField: 'templateId',\n            as: 'items',\n          },\n        },\n      ]\n      const result = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .aggregate(pipe)\n        .toArray()\n      return result\n    } catch (error) {\n      await session.abortTransaction()\n      this.logger.error(error)\n      throw error\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  async deleteFunctionTemplate(templateId: ObjectId, userid: ObjectId) {\n    const client = SystemDatabase.client\n    const session = client.startSession()\n    try {\n      session.startTransaction()\n\n      const pipe = [\n        { $match: { _id: templateId } },\n        {\n          $lookup: {\n            from: 'FunctionTemplateItem',\n            localField: '_id',\n            foreignField: 'templateId',\n            as: 'items',\n          },\n        },\n      ]\n\n      const deletedFunctionTemplate = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .aggregate(pipe)\n        .toArray()\n\n      await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .deleteOne({ _id: templateId, uid: userid }, { session })\n\n      await this.db\n        .collection<FunctionTemplateItem>('FunctionTemplateItem')\n        .deleteMany({ templateId: templateId }, { session })\n\n      // remove use relation and star relation\n      await this.db\n        .collection<FunctionTemplateStarRelation>(\n          'FunctionTemplateStarRelation',\n        )\n        .deleteMany({ templateId: templateId }, { session })\n\n      await this.db\n        .collection<FunctionTemplateUseRelation>('FunctionTemplateUseRelation')\n        .deleteMany({ templateId: templateId }, { session })\n\n      await session.commitTransaction()\n\n      return deletedFunctionTemplate\n    } catch (error) {\n      await session.abortTransaction()\n      throw error\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  async starFunctionTemplate(templateId: ObjectId, userid: ObjectId) {\n    const client = SystemDatabase.client\n    const session = client.startSession()\n    try {\n      session.startTransaction()\n\n      const functionTemplate = await this.findOneFunctionTemplate(templateId)\n      assert(\n        functionTemplate.private === false ||\n          functionTemplate.uid.toString() === userid.toString(),\n        'private function template can only be stared by the owner',\n      )\n\n      const found = await this.db\n        .collection<FunctionTemplateStarRelation>(\n          'FunctionTemplateStarRelation',\n        )\n        .findOne({ uid: userid, templateId: templateId })\n\n      if (found) {\n        await this.db\n          .collection<FunctionTemplate>('FunctionTemplate')\n          .updateOne({ _id: templateId }, { $inc: { star: -1 } }, { session })\n\n        await this.db\n          .collection<FunctionTemplateStarRelation>(\n            'FunctionTemplateStarRelation',\n          )\n          .deleteOne({ uid: userid, templateId: templateId }, { session })\n\n        await session.commitTransaction()\n        return 'unstar'\n      }\n\n      await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .updateOne({ _id: templateId }, { $inc: { star: 1 } }, { session })\n\n      await this.db\n        .collection<FunctionTemplateStarRelation>(\n          'FunctionTemplateStarRelation',\n        )\n        .insertOne(\n          {\n            uid: userid,\n            templateId: templateId,\n            state: RelationState.Enabled,\n            createdAt: new Date(),\n            updatedAt: new Date(),\n          },\n          { session },\n        )\n\n      await session.commitTransaction()\n      return 'stared'\n    } catch (error) {\n      await session.abortTransaction()\n      throw error\n    } finally {\n      await session.endSession\n    }\n  }\n\n  async functionTemplateUserStarState(templateId: ObjectId, userid: ObjectId) {\n    const res = await this.db\n      .collection<FunctionTemplateStarRelation>('FunctionTemplateStarRelation')\n      .findOne({ uid: userid, templateId: templateId })\n    if (res) {\n      return 'stared'\n    } else {\n      return 'unstar'\n    }\n  }\n\n  async functionTemplateUsedBy(\n    templateId: ObjectId,\n    asc: number,\n    page: number,\n    pageSize: number,\n  ) {\n    const pipe = [\n      { $match: { templateId: templateId } },\n      { $project: { uid: 1, _id: 0 } },\n      { $sort: { updatedAt: asc === 0 ? 1 : -1 } },\n      { $skip: (page - 1) * pageSize },\n      { $limit: pageSize },\n    ]\n    const usedBy = await this.db\n      .collection<FunctionTemplateUseRelation>('FunctionTemplateUseRelation')\n      .aggregate(pipe)\n      .toArray()\n\n    const total = await this.db\n      .collection<FunctionTemplateUseRelation>('FunctionTemplateUseRelation')\n      .countDocuments({ templateId })\n\n    const res = {\n      list: usedBy,\n      total: total,\n      page,\n      pageSize,\n    }\n\n    return res\n  }\n\n  async findOne(templateId: ObjectId) {\n    const pipe = [\n      { $match: { _id: templateId } },\n      {\n        $lookup: {\n          from: 'FunctionTemplateItem',\n          localField: '_id',\n          foreignField: 'templateId',\n          as: 'items',\n        },\n      },\n    ]\n\n    const functionTemplate = await this.db\n      .collection<FunctionTemplate>('FunctionTemplate')\n      .aggregate(pipe)\n      .toArray()\n\n    const user = await this.db.collection<User>('User').findOne({\n      _id: functionTemplate[0].uid,\n    })\n\n    if (user.phone && user.username) {\n      if (user.phone == user.username) {\n        user.username =\n          user.username.slice(0, 3) +\n          'x'.repeat(user.username.length - 6) +\n          user.username.slice(-3)\n      }\n    }\n\n    functionTemplate[0]['user'] = {\n      username: user?.username,\n      email: user?.email,\n    }\n\n    return functionTemplate\n  }\n\n  // get all public function templates\n  async findFunctionTemplates(\n    asc: number,\n    page: number,\n    pageSize: number,\n    userid: ObjectId,\n    sort?: string,\n  ) {\n    const pipe: any[] = [\n      { $match: { private: false } },\n      {\n        $lookup: {\n          from: 'User',\n          localField: 'uid',\n          foreignField: '_id',\n          as: 'user',\n        },\n      },\n      { $unwind: { path: '$user', preserveNullAndEmptyArrays: true } },\n      this.fieldsForAuthorInfo(),\n      {\n        $lookup: {\n          from: 'FunctionTemplateItem',\n          localField: '_id',\n          foreignField: 'templateId',\n          as: 'items',\n        },\n      },\n      this.fieldForUserStarRelation('$_id', userid),\n      {\n        $addFields: {\n          stared: {\n            $cond: [{ $gt: [{ $size: '$starRelation' }, 0] }, true, false],\n          },\n        },\n      },\n      { $project: { user: 0, starRelation: 0 } },\n    ]\n    const total = await this.db\n      .collection<FunctionTemplate>('FunctionTemplate')\n      .countDocuments({ private: false })\n\n    if (sort === 'hot') {\n      pipe.push(\n        {\n          $sort: {\n            star: asc === 0 ? 1 : -1,\n            _id: 1,\n          },\n        },\n        { $skip: (page - 1) * pageSize },\n        { $limit: pageSize },\n      )\n\n      const functionTemplates = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .aggregate(pipe)\n        .toArray()\n\n      const res = {\n        list: functionTemplates,\n        total: total,\n        page,\n        pageSize,\n      }\n\n      return res\n    }\n\n    if (sort === 'recommend') {\n      pipe.push(\n        {\n          $sort: {\n            isRecommended: -1,\n            star: asc === 0 ? 1 : -1,\n          },\n        },\n        { $skip: (page - 1) * pageSize },\n        { $limit: pageSize },\n      )\n\n      const functionTemplates = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .aggregate(pipe)\n        .toArray()\n\n      const res = {\n        list: functionTemplates,\n        total: total,\n        page,\n        pageSize,\n      }\n\n      return res\n    }\n\n    pipe.push(\n      { $sort: { updatedAt: asc === 0 ? 1 : -1 } },\n      { $skip: (page - 1) * pageSize },\n      { $limit: pageSize },\n    )\n\n    const functionTemplate = await this.db\n      .collection<FunctionTemplate>('FunctionTemplate')\n      .aggregate(pipe)\n      .toArray()\n\n    const res = {\n      list: functionTemplate,\n      total: total,\n      page,\n      pageSize,\n    }\n\n    return res\n  }\n\n  async findFunctionTemplatesByName(\n    asc: number,\n    page: number,\n    pageSize: number,\n    name: string,\n    userid: ObjectId,\n  ) {\n    const safeName = name.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n    const reg = new RegExp(safeName, 'i')\n\n    const pipe = [\n      { $match: { private: false } },\n      {\n        $lookup: {\n          from: 'User',\n          localField: 'uid',\n          foreignField: '_id',\n          as: 'user',\n        },\n      },\n      { $unwind: { path: '$user', preserveNullAndEmptyArrays: true } },\n      this.fieldsForAuthorInfo(),\n      {\n        $lookup: {\n          from: 'FunctionTemplateItem',\n          localField: '_id',\n          foreignField: 'templateId',\n          as: 'items',\n        },\n      },\n      {\n        $addFields: {\n          matchCount: {\n            $size: {\n              $filter: {\n                input: '$items',\n                as: 'item',\n                cond: { $regexMatch: { input: '$$item.name', regex: reg } },\n              },\n            },\n          },\n        },\n      },\n      this.fieldForUserStarRelation('$_id', userid),\n      {\n        $addFields: {\n          stared: {\n            $cond: [{ $gt: [{ $size: '$starRelation' }, 0] }, true, false],\n          },\n        },\n      },\n      {\n        $match: {\n          $or: [\n            { name: { $regex: reg } },\n            { description: { $regex: reg } },\n            { matchCount: { $gt: 0 } },\n          ],\n        },\n      },\n\n      { $project: { user: 0, starRelation: 0, matchCount: 0 } },\n      { $sort: { updatedAt: asc === 0 ? 1 : -1 } },\n      { $skip: (page - 1) * pageSize },\n      { $limit: pageSize },\n    ]\n\n    const pipeForTotal = [\n      {\n        $lookup: {\n          from: 'FunctionTemplateItem',\n          localField: '_id',\n          foreignField: 'templateId',\n          as: 'items',\n        },\n      },\n      {\n        $addFields: {\n          matchCount: {\n            $size: {\n              $filter: {\n                input: '$items',\n                as: 'item',\n                cond: { $regexMatch: { input: '$$item.name', regex: reg } },\n              },\n            },\n          },\n        },\n      },\n      {\n        $match: {\n          private: false,\n          $or: [\n            { name: { $regex: reg } },\n            { description: { $regex: reg } },\n            { matchCount: { $gt: 0 } },\n          ],\n        },\n      },\n      { $group: { _id: null, count: { $sum: 1 } } },\n    ]\n\n    const total = await this.db\n      .collection<FunctionTemplate>('FunctionTemplate')\n      .aggregate(pipeForTotal)\n      .maxTimeMS(5000)\n      .toArray()\n\n    const functionTemplates = await this.db\n      .collection<FunctionTemplate>('FunctionTemplate')\n      .aggregate(pipe)\n      .maxTimeMS(5000)\n      .toArray()\n\n    const res = {\n      list: functionTemplates,\n      total: total[0] ? total[0].count : 0,\n      page,\n      pageSize,\n    }\n\n    return res\n  }\n\n  // get all recommend function templates\n  async findRecommendFunctionTemplates(\n    userid: ObjectId,\n    condition: FindFunctionTemplatesParams,\n  ) {\n    const { asc, page, pageSize, name, hot } = condition\n    let pipe: any[] = [\n      { $match: { private: false, isRecommended: true } },\n      this.generateLookup('User', 'uid', '_id', 'user'),\n      { $unwind: { path: '$user', preserveNullAndEmptyArrays: true } },\n      this.fieldsForAuthorInfo(),\n      this.generateLookup('FunctionTemplateItem', '_id', 'templateId', 'items'),\n      this.fieldForUserStarRelation('$_id', userid),\n      {\n        $addFields: {\n          stared: {\n            $cond: [{ $gt: [{ $size: '$starRelation' }, 0] }, true, false],\n          },\n        },\n      },\n    ]\n\n    if (name) {\n      const safeName = name.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n      const reg = new RegExp(safeName, 'i')\n\n      pipe = [\n        ...pipe,\n        {\n          $addFields: {\n            matchCount: {\n              $size: {\n                $filter: {\n                  input: '$items',\n                  as: 'item',\n                  cond: { $regexMatch: { input: '$$item.name', regex: reg } },\n                },\n              },\n            },\n          },\n        },\n        {\n          $match: {\n            $or: [\n              { name: { $regex: reg } },\n              { description: { $regex: reg } },\n              { matchCount: { $gt: 0 } },\n            ],\n          },\n        },\n        { $project: { user: 0, starRelation: 0, matchCount: 0 } },\n        { $sort: { updatedAt: asc === 0 ? 1 : -1 } },\n        { $skip: (page - 1) * pageSize },\n        { $limit: pageSize },\n      ]\n\n      const pipeForTotal = [\n        {\n          $lookup: {\n            from: 'FunctionTemplateItem',\n            localField: '_id',\n            foreignField: 'templateId',\n            as: 'items',\n          },\n        },\n\n        {\n          $addFields: {\n            matchCount: {\n              $size: {\n                $filter: {\n                  input: '$items',\n                  as: 'item',\n                  cond: { $regexMatch: { input: '$$item.name', regex: reg } },\n                },\n              },\n            },\n          },\n        },\n\n        {\n          $match: {\n            private: false,\n            isRecommended: true,\n            $or: [\n              { name: { $regex: reg } },\n              { description: { $regex: reg } },\n              { matchCount: { $gt: 0 } },\n            ],\n          },\n        },\n        { $group: { _id: null, count: { $sum: 1 } } },\n      ]\n\n      const total = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .aggregate(pipeForTotal)\n        .maxTimeMS(5000)\n        .toArray()\n\n      const functionTemplate = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .aggregate(pipe)\n        .maxTimeMS(5000)\n        .toArray()\n\n      const res = {\n        list: functionTemplate,\n        total: total[0] ? total[0].count : 0,\n        page,\n        pageSize,\n      }\n\n      return res\n    }\n\n    if (hot) {\n      pipe = [\n        ...pipe,\n        { $project: { user: 0, starRelation: 0 } },\n        {\n          $sort: {\n            star: asc === 0 ? 1 : -1,\n          },\n        },\n        { $skip: (page - 1) * pageSize },\n        { $limit: pageSize },\n      ]\n\n      const total = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .countDocuments({ private: false, isRecommended: true })\n\n      const functionTemplate = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .aggregate(pipe)\n        .toArray()\n\n      const res = {\n        list: functionTemplate,\n        total: total,\n        page,\n        pageSize,\n      }\n\n      return res\n    }\n\n    pipe = [\n      ...pipe,\n      { $project: { user: 0, starRelation: 0 } },\n      { $sort: { updatedAt: asc === 0 ? 1 : -1 } },\n      { $skip: (page - 1) * pageSize },\n      { $limit: pageSize },\n    ]\n\n    const total = await this.db\n      .collection<FunctionTemplate>('FunctionTemplate')\n      .countDocuments({ private: false, isRecommended: true })\n\n    const functionTemplate = await this.db\n      .collection<FunctionTemplate>('FunctionTemplate')\n      .aggregate(pipe)\n      .toArray()\n\n    const res = {\n      list: functionTemplate,\n      total: total,\n      page,\n      pageSize,\n    }\n\n    return res\n  }\n\n  async findMyFunctionTemplates(\n    userid: ObjectId,\n    condition: FindFunctionTemplatesParams,\n  ) {\n    const { asc, page, pageSize, name, hot } = condition\n    let pipe: any[] = [\n      { $match: { uid: userid } },\n      this.generateLookup('User', 'uid', '_id', 'user'),\n      { $unwind: { path: '$user', preserveNullAndEmptyArrays: true } },\n      this.fieldsForAuthorInfo(),\n      this.generateLookup('FunctionTemplateItem', '_id', 'templateId', 'items'),\n      this.fieldForUserStarRelation('$_id', userid),\n      {\n        $addFields: {\n          stared: {\n            $cond: [{ $gt: [{ $size: '$starRelation' }, 0] }, true, false],\n          },\n        },\n      },\n    ]\n\n    if (name) {\n      const safeName = name.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n      const reg = new RegExp(safeName, 'i')\n      pipe = [\n        ...pipe,\n        {\n          $addFields: {\n            matchCount: {\n              $size: {\n                $filter: {\n                  input: '$items',\n                  as: 'item',\n                  cond: { $regexMatch: { input: '$$item.name', regex: reg } },\n                },\n              },\n            },\n          },\n        },\n        {\n          $match: {\n            $or: [\n              { name: { $regex: reg } },\n              { description: { $regex: reg } },\n              { matchCount: { $gt: 0 } },\n            ],\n          },\n        },\n\n        { $project: { user: 0, starRelation: 0, matchCount: 0 } },\n        { $sort: { updatedAt: asc === 0 ? 1 : -1 } },\n        { $skip: (page - 1) * pageSize },\n        { $limit: pageSize },\n      ]\n      const pipeForTotal = [\n        {\n          $lookup: {\n            from: 'FunctionTemplateItem',\n            localField: '_id',\n            foreignField: 'templateId',\n            as: 'items',\n          },\n        },\n\n        {\n          $addFields: {\n            matchCount: {\n              $size: {\n                $filter: {\n                  input: '$items',\n                  as: 'item',\n                  cond: { $regexMatch: { input: '$$item.name', regex: reg } },\n                },\n              },\n            },\n          },\n        },\n\n        {\n          $match: {\n            uid: userid,\n            $or: [\n              { name: { $regex: reg } },\n              { description: { $regex: reg } },\n              { matchCount: { $gt: 0 } },\n            ],\n          },\n        },\n        { $group: { _id: null, count: { $sum: 1 } } },\n      ]\n\n      const total = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .aggregate(pipeForTotal)\n        .maxTimeMS(5000)\n        .toArray()\n\n      const myTemplate = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .aggregate(pipe)\n        .maxTimeMS(5000)\n        .toArray()\n\n      const res = {\n        list: myTemplate,\n        total: total[0] ? total[0].count : 0,\n        page,\n        pageSize,\n      }\n\n      return res\n    }\n\n    if (hot) {\n      pipe = [\n        ...pipe,\n        { $project: { user: 0, starRelation: 0 } },\n        {\n          $sort: {\n            star: asc === 0 ? 1 : -1,\n            _id: 1,\n          },\n        },\n        { $skip: (page - 1) * pageSize },\n        { $limit: pageSize },\n      ]\n\n      const total = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .countDocuments({ uid: userid })\n\n      const myTemplate = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .aggregate(pipe)\n        .toArray()\n\n      const res = {\n        list: myTemplate,\n        total: total,\n        page,\n        pageSize,\n      }\n\n      return res\n    }\n\n    pipe = [\n      ...pipe,\n      { $project: { user: 0, starRelation: 0 } },\n      { $sort: { updatedAt: asc === 0 ? 1 : -1 } },\n      { $skip: (page - 1) * pageSize },\n      { $limit: pageSize },\n    ]\n\n    const total = await this.db\n      .collection<FunctionTemplate>('FunctionTemplate')\n      .countDocuments({ uid: userid })\n\n    const myTemplate = await this.db\n      .collection<FunctionTemplate>('FunctionTemplate')\n      .aggregate(pipe)\n      .toArray()\n\n    const res = {\n      list: myTemplate,\n      total: total,\n      page,\n      pageSize,\n    }\n\n    return res\n  }\n\n  async findMyStaredFunctionTemplates(\n    userid: ObjectId,\n    condition: FindFunctionTemplatesParams,\n  ) {\n    const { asc, page, pageSize, name, hot } = condition\n    let pipe: any[] = [\n      this.generateLookup(\n        'FunctionTemplate',\n        'templateId',\n        '_id',\n        'functionTemplate',\n      ),\n      { $unwind: '$functionTemplate' },\n      this.generateLookup(\n        'FunctionTemplateItem',\n        'templateId',\n        'templateId',\n        'items',\n      ),\n      this.generateLookup('User', 'functionTemplate.uid', '_id', 'user'),\n      { $unwind: { path: '$user', preserveNullAndEmptyArrays: true } },\n      this.fieldsForAuthorInfo(),\n      this.fieldForUserStarRelation('$functionTemplate._id', userid),\n    ]\n    if (name) {\n      const safeName = name.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n      const reg = new RegExp(safeName, 'i')\n\n      pipe = [\n        {\n          $match: {\n            uid: userid,\n            state: RelationState.Enabled,\n          },\n        },\n        ...pipe,\n        {\n          $match: {\n            $or: [\n              { 'functionTemplate.name': { $regex: reg } },\n              { 'functionTemplate.description': { $regex: reg } },\n              { 'items.name': { $regex: reg } },\n            ],\n          },\n        },\n        this.projectFields(),\n\n        { $sort: { updatedAt: asc === 0 ? 1 : -1 } },\n        { $skip: (page - 1) * pageSize },\n        { $limit: pageSize },\n      ]\n\n      const pipeForTotal = [\n        this.generateLookup(\n          'FunctionTemplate',\n          'templateId',\n          '_id',\n          'functionTemplate',\n        ),\n        this.generateLookup(\n          'FunctionTemplateItem',\n          'templateId',\n          'templateId',\n          'items',\n        ),\n        {\n          $match: {\n            uid: userid,\n            state: RelationState.Enabled,\n            $or: [\n              { 'functionTemplate.name': { $regex: reg } },\n              { 'functionTemplate.description': { $regex: reg } },\n              { 'items.name': { $regex: reg } },\n            ],\n          },\n        },\n        { $group: { _id: null, count: { $sum: 1 } } },\n      ]\n\n      const total = await this.db\n        .collection<FunctionTemplateStarRelation>(\n          'FunctionTemplateStarRelation',\n        )\n        .aggregate(pipeForTotal)\n        .maxTimeMS(5000)\n        .toArray()\n\n      const myStarTemplates = await this.db\n        .collection<FunctionTemplateStarRelation>(\n          'FunctionTemplateStarRelation',\n        )\n        .aggregate(pipe)\n        .maxTimeMS(5000)\n        .toArray()\n\n      const res = {\n        list: myStarTemplates,\n        total: total[0] ? total[0].count : 0,\n        page,\n        pageSize,\n      }\n      return res\n    }\n\n    if (hot) {\n      pipe = [\n        { $match: { uid: userid, state: RelationState.Enabled } },\n        ...pipe,\n        this.projectFields(),\n        {\n          $sort: {\n            star: asc === 0 ? 1 : -1,\n            _id: 1,\n          },\n        },\n        { $skip: (page - 1) * pageSize },\n        { $limit: pageSize },\n      ]\n\n      const total = await this.db\n        .collection<FunctionTemplateStarRelation>(\n          'FunctionTemplateStarRelation',\n        )\n        .countDocuments({ uid: userid, state: RelationState.Enabled })\n\n      const myStarTemplates = await this.db\n        .collection<FunctionTemplateStarRelation>(\n          'FunctionTemplateStarRelation',\n        )\n        .aggregate(pipe)\n        .toArray()\n\n      const res = {\n        list: myStarTemplates,\n        total: total,\n        page,\n        pageSize,\n      }\n\n      return res\n    }\n\n    pipe = [\n      { $match: { uid: userid, state: RelationState.Enabled } },\n      ...pipe,\n      this.projectFields(),\n      { $sort: { updatedAt: asc === 0 ? 1 : -1 } },\n      { $skip: (page - 1) * pageSize },\n      { $limit: pageSize },\n    ]\n\n    const total = await this.db\n      .collection<FunctionTemplateStarRelation>('FunctionTemplateStarRelation')\n      .countDocuments({ uid: userid, state: RelationState.Enabled })\n\n    const myStarTemplates = await this.db\n      .collection<FunctionTemplateStarRelation>('FunctionTemplateStarRelation')\n      .aggregate(pipe)\n      .toArray()\n\n    const res = {\n      list: myStarTemplates,\n      total: total,\n      page,\n      pageSize,\n    }\n\n    return res\n  }\n\n  async findMyRecentUseFunctionTemplates(\n    userid: ObjectId,\n    condition: FindFunctionTemplatesParams,\n  ) {\n    const { asc, page, pageSize, name, hot } = condition\n    let pipe: any[] = [\n      this.generateLookup(\n        'FunctionTemplate',\n        'templateId',\n        '_id',\n        'functionTemplate',\n      ),\n      { $unwind: '$functionTemplate' },\n      this.generateLookup(\n        'FunctionTemplateItem',\n        'templateId',\n        'templateId',\n        'items',\n      ),\n      this.generateLookup('User', 'functionTemplate.uid', '_id', 'user'),\n      { $unwind: { path: '$user', preserveNullAndEmptyArrays: true } },\n      this.fieldsForAuthorInfo(),\n      this.fieldForUserStarRelation('$functionTemplate._id', userid),\n    ]\n\n    if (name) {\n      const safeName = name.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n      const reg = new RegExp(safeName, 'i')\n      pipe = [\n        {\n          $match: {\n            uid: userid,\n            state: RelationState.Enabled,\n          },\n        },\n        ...pipe,\n        {\n          $match: {\n            $or: [\n              { 'functionTemplate.name': { $regex: reg } },\n              { 'functionTemplate.description': { $regex: reg } },\n              { 'items.name': { $regex: reg } },\n            ],\n          },\n        },\n        this.projectFields(),\n        { $sort: { updatedAt: asc === 0 ? 1 : -1 } },\n        { $skip: (page - 1) * pageSize },\n        { $limit: pageSize },\n      ]\n\n      const pipeForTotal = [\n        this.generateLookup(\n          'FunctionTemplate',\n          'templateId',\n          '_id',\n          'functionTemplate',\n        ),\n        this.generateLookup(\n          'FunctionTemplateItem',\n          'templateId',\n          'templateId',\n          'items',\n        ),\n        {\n          $match: {\n            uid: userid,\n            state: RelationState.Enabled,\n            $or: [\n              { 'functionTemplate.name': { $regex: reg } },\n              { 'functionTemplate.description': { $regex: reg } },\n              { 'items.name': { $regex: reg } },\n            ],\n          },\n        },\n        { $group: { _id: null, count: { $sum: 1 } } },\n      ]\n\n      const total = await this.db\n        .collection<FunctionTemplateUseRelation>('FunctionTemplateUseRelation')\n        .aggregate(pipeForTotal)\n        .maxTimeMS(5000)\n        .toArray()\n\n      const myStarTemplates = await this.db\n        .collection<FunctionTemplateUseRelation>('FunctionTemplateUseRelation')\n        .aggregate(pipe)\n        .maxTimeMS(5000)\n        .toArray()\n\n      const res = {\n        list: myStarTemplates,\n        total: total[0] ? total[0].count : 0,\n        page,\n        pageSize,\n      }\n\n      return res\n    }\n\n    if (hot) {\n      pipe = [\n        { $match: { uid: userid, state: RelationState.Enabled } },\n        ...pipe,\n        this.projectFields(),\n        {\n          $sort: {\n            'functionTemplate.star': asc === 0 ? 1 : -1,\n            'functionTemplate._id': 1,\n          },\n        },\n        { $skip: (page - 1) * pageSize },\n        { $limit: pageSize },\n      ]\n\n      const recentUseFunctionTemplates = await this.db\n        .collection<FunctionTemplateUseRelation>('FunctionTemplateUseRelation')\n        .aggregate(pipe)\n        .toArray()\n\n      const total = await this.db\n        .collection<FunctionTemplateUseRelation>('FunctionTemplateUseRelation')\n        .countDocuments({ uid: userid, state: RelationState.Enabled })\n\n      const res = {\n        list: recentUseFunctionTemplates,\n        total: total,\n        page,\n        pageSize,\n      }\n\n      return res\n    }\n\n    pipe = [\n      { $match: { uid: userid, state: RelationState.Enabled } },\n      ...pipe,\n      this.projectFields(),\n      { $sort: { updatedAt: asc === 0 ? 1 : -1 } },\n      { $skip: (page - 1) * pageSize },\n      { $limit: pageSize },\n    ]\n\n    const recentUseFunctionTemplates = await this.db\n      .collection<FunctionTemplateUseRelation>('FunctionTemplateUseRelation')\n      .aggregate(pipe)\n      .toArray()\n\n    const total = await this.db\n      .collection<FunctionTemplateUseRelation>('FunctionTemplateUseRelation')\n      .countDocuments({ uid: userid, state: RelationState.Enabled })\n\n    const res = {\n      list: recentUseFunctionTemplates,\n      total: total,\n      page,\n      pageSize,\n    }\n\n    return res\n  }\n\n  async findOneFunctionTemplate(templateId: ObjectId, userid?: ObjectId) {\n    if (userid) {\n      // find one function template\n      const res = await this.db\n        .collection<FunctionTemplate>('FunctionTemplate')\n        .findOne({ _id: templateId, uid: userid })\n      return res\n    }\n\n    const res = await this.db\n      .collection<FunctionTemplate>('FunctionTemplate')\n      .findOne({ _id: templateId })\n\n    return res\n  }\n\n  // get items of a function template\n  async findFunctionTemplateItems(templateId: ObjectId) {\n    const functionTemplateItems = await this.db\n      .collection<FunctionTemplateItem>('FunctionTemplateItem')\n      .find({ templateId: templateId })\n      .toArray()\n\n    return functionTemplateItems\n  }\n\n  async getCountOfFunctionTemplates(uid: ObjectId) {\n    const count = await this.db\n      .collection<FunctionTemplate>('FunctionTemplate')\n      .countDocuments({ uid: uid })\n\n    return count\n  }\n\n  // Verify the relationship between the user and the appid\n  async applicationAuthGuard(appid, userid) {\n    const app = await this.appService.findOne(appid)\n    if (!app) {\n      return false\n    }\n\n    const author_id = app.createdBy?.toString()\n    if (author_id !== userid.toString()) {\n      return false\n    }\n\n    return true\n  }\n\n  generateLookup(\n    fromCollection: string,\n    localField: string,\n    foreignField: string,\n    alias: string,\n  ) {\n    return {\n      $lookup: {\n        from: fromCollection,\n        localField: localField,\n        foreignField: foreignField,\n        as: alias,\n      },\n    }\n  }\n\n  projectFields() {\n    return {\n      $project: {\n        _id: '$functionTemplate._id',\n        uid: '$functionTemplate.uid',\n        name: '$functionTemplate.name',\n        dependencies: '$functionTemplate.dependencies',\n        environments: '$functionTemplate.environments',\n        private: '$functionTemplate.private',\n        isRecommended: '$functionTemplate.isRecommended',\n        description: '$functionTemplate.description',\n        star: '$functionTemplate.star',\n        createdAt: '$functionTemplate.createdAt',\n        updatedAt: '$functionTemplate.updatedAt',\n        items: 1,\n        author: '$author',\n        stared: {\n          $cond: [{ $gt: [{ $size: '$starRelation' }, 0] }, true, false],\n        },\n      },\n    }\n  }\n\n  fieldsForAuthorInfo() {\n    return {\n      $addFields: {\n        author: {\n          $cond: [\n            {\n              $and: [\n                { $eq: ['$user.username', '$user.phone'] },\n                { $ne: ['$user.username', null] },\n                { $ne: ['$user.phone', null] },\n              ],\n            },\n            {\n              $concat: [\n                { $substrCP: ['$user.username', 0, 3] },\n                {\n                  $substrCP: [\n                    this.maskedString,\n                    0,\n                    { $subtract: [{ $strLenCP: '$user.username' }, 6] },\n                  ],\n                },\n                {\n                  $substrCP: [\n                    '$user.username',\n                    { $subtract: [{ $strLenCP: '$user.username' }, 3] },\n                    3,\n                  ],\n                },\n              ],\n            },\n            '$user.username',\n          ],\n        },\n      },\n    }\n  }\n\n  fieldForUserStarRelation(functionTemplateId: string, userid: ObjectId) {\n    return {\n      $lookup: {\n        from: 'FunctionTemplateStarRelation',\n        let: { templateId: functionTemplateId, userId: userid },\n        pipeline: [\n          {\n            $match: {\n              $expr: {\n                $and: [\n                  { $eq: ['$templateId', '$$templateId'] },\n                  { $eq: ['$uid', '$$userId'] },\n                ],\n              },\n            },\n          },\n        ],\n        as: 'starRelation',\n      },\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/gateway/bucket-domain-task.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { RegionService } from 'src/region/region.service'\nimport * as assert from 'node:assert'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport { ServerConfig, TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport { BucketDomain } from './entities/bucket-domain'\nimport { DomainPhase, DomainState } from './entities/runtime-domain'\nimport { BucketGatewayService } from './ingress/bucket-ingress.service'\n\n@Injectable()\nexport class BucketDomainTaskService {\n  readonly lockTimeout = 30 // in second\n  private readonly logger = new Logger(BucketDomainTaskService.name)\n\n  constructor(\n    private readonly bucketGateway: BucketGatewayService,\n    private readonly regionService: RegionService,\n  ) {}\n\n  @Cron(CronExpression.EVERY_SECOND)\n  async tick() {\n    if (ServerConfig.DISABLED_GATEWAY_TASK) return\n\n    // Phase `Creating` -> `Created`\n    this.handleCreatingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Created` -> `Deleting`\n    this.handleInactiveState().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleted` -> `Creating`\n    this.handleActiveState().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletedState().catch((err) => {\n      this.logger.error(err)\n    })\n  }\n\n  /**\n   * Phase `Creating`:\n   * - create bucket route\n   * - move phase `Creating` to `Created`\n   */\n  async handleCreatingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<BucketDomain>('BucketDomain')\n      .findOneAndUpdate(\n        {\n          phase: DomainPhase.Creating,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n    if (!res.value) return\n\n    // get region by appid\n    const doc = res.value\n    const region = await this.regionService.findByAppId(doc.appid)\n    assert(region, 'region not found')\n\n    // create ingress if not exists\n    const ingress = await this.bucketGateway.getIngress(region, doc)\n    if (!ingress) {\n      await this.bucketGateway.createIngress(region, doc)\n      this.logger.log('bucket ingress created:' + doc.domain)\n    }\n\n    // update phase to `Created`\n    await db.collection<BucketDomain>('BucketDomain').updateOne(\n      { _id: doc._id, phase: DomainPhase.Creating },\n      {\n        $set: { phase: DomainPhase.Created, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n\n    this.logger.log('bucket domain phase updated to Created: ' + doc.domain)\n  }\n\n  /**\n   * Phase `Deleting`:\n   * - delete bucket route\n   * - move phase `Deleting` to `Deleted`\n   */\n  async handleDeletingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<BucketDomain>('BucketDomain')\n      .findOneAndUpdate(\n        {\n          phase: DomainPhase.Deleting,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n    if (!res.value) return\n\n    // get region by appid\n    const doc = res.value\n    const region = await this.regionService.findByAppId(doc.appid)\n    assert(region, 'region not found')\n\n    // delete route if exists\n    const ingress = await this.bucketGateway.getIngress(region, doc)\n    if (ingress) {\n      await this.bucketGateway.deleteIngress(region, doc)\n      this.logger.log('bucket ingress deleted: ' + doc.bucketName)\n    }\n\n    // update phase to `Deleted`\n    const updated = await db.collection<BucketDomain>('BucketDomain').updateOne(\n      { _id: doc._id, phase: DomainPhase.Deleting },\n      {\n        $set: { phase: DomainPhase.Deleted, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n\n    if (updated.modifiedCount > 0)\n      this.logger.debug('bucket domain phase updated to Deleted', doc)\n  }\n\n  /**\n   * State `Active`:\n   * - move phase `Deleted` to `Creating`\n   */\n  async handleActiveState() {\n    const db = SystemDatabase.db\n\n    await db.collection<BucketDomain>('BucketDomain').updateMany(\n      {\n        state: DomainState.Active,\n        phase: DomainPhase.Deleted,\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: { phase: DomainPhase.Creating, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n  }\n\n  /**\n   * State `Inactive`:\n   * - move `Created` to `Deleting`\n   */\n  async handleInactiveState() {\n    const db = SystemDatabase.db\n\n    await db.collection<BucketDomain>('BucketDomain').updateMany(\n      {\n        state: DomainState.Inactive,\n        phase: { $in: [DomainPhase.Created, DomainPhase.Creating] },\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: { phase: DomainPhase.Deleting, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n  }\n\n  /**\n   * State `Deleted`:\n   * - move `Created` to `Deleting`\n   * - delete `Deleted` documents\n   */\n  async handleDeletedState() {\n    const db = SystemDatabase.db\n\n    await db.collection<BucketDomain>('BucketDomain').updateMany(\n      {\n        state: DomainState.Deleted,\n        phase: DomainPhase.Created,\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: { phase: DomainPhase.Deleting, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n\n    await db.collection<BucketDomain>('BucketDomain').deleteMany({\n      state: DomainState.Deleted,\n      phase: DomainPhase.Deleted,\n    })\n  }\n}\n"
  },
  {
    "path": "server/src/gateway/bucket-domain.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { RegionService } from '../region/region.service'\nimport * as assert from 'node:assert'\nimport { TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { StorageBucket } from 'src/storage/entities/storage-bucket'\nimport { SystemDatabase } from 'src/system-database'\nimport { BucketDomain } from './entities/bucket-domain'\nimport { DomainPhase, DomainState } from './entities/runtime-domain'\n\n@Injectable()\nexport class BucketDomainService {\n  private readonly logger = new Logger(BucketDomainService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(private readonly regionService: RegionService) {}\n\n  /**\n   *  Create app domain in database\n   */\n  async create(bucket: StorageBucket) {\n    const region = await this.regionService.findByAppId(bucket.appid)\n    assert(region, 'region not found')\n\n    // create domain in db\n    const bucket_domain = `${bucket.name}.${region.storageConf.domain}`\n    await this.db.collection<BucketDomain>('BucketDomain').insertOne({\n      appid: bucket.appid,\n      domain: bucket_domain,\n      bucketName: bucket.name,\n      state: DomainState.Active,\n      phase: DomainPhase.Creating,\n      lockedAt: TASK_LOCK_INIT_TIME,\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    })\n\n    return this.findOne(bucket)\n  }\n\n  /**\n   * Find an app domain in database\n   */\n  async findOne(bucket: StorageBucket) {\n    const doc = await this.db.collection<BucketDomain>('BucketDomain').findOne({\n      appid: bucket.appid,\n      bucketName: bucket.name,\n    })\n\n    return doc\n  }\n\n  async count(appid: string) {\n    const count = await this.db\n      .collection<BucketDomain>('BucketDomain')\n      .countDocuments({ appid })\n\n    return count\n  }\n\n  /**\n   * Delete app domain in database:\n   * - turn to `Deleted` state\n   */\n  async deleteOne(bucket: StorageBucket) {\n    await this.db\n      .collection<BucketDomain>('BucketDomain')\n      .findOneAndUpdate(\n        { _id: bucket._id },\n        { $set: { state: DomainState.Deleted, updatedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    return await this.findOne(bucket)\n  }\n\n  async deleteAll(appid: string) {\n    const res = await this.db\n      .collection<BucketDomain>('BucketDomain')\n      .updateMany(\n        { appid },\n        { $set: { state: DomainState.Deleted, updatedAt: new Date() } },\n      )\n\n    return res\n  }\n}\n"
  },
  {
    "path": "server/src/gateway/certificate.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { LABEL_KEY_APP_ID } from 'src/constants'\nimport { ClusterService } from 'src/region/cluster/cluster.service'\nimport { Region } from 'src/region/entities/region'\nimport { GetApplicationNamespace } from 'src/utils/getter'\nimport { WebsiteHosting } from 'src/website/entities/website'\nimport { RuntimeDomain } from './entities/runtime-domain'\n\n// This class handles the creation and deletion of website domain certificates\n@Injectable()\nexport class CertificateService {\n  private readonly logger = new Logger(CertificateService.name)\n  constructor(private readonly clusterService: ClusterService) {}\n\n  getRuntimeCertificateName(domain: RuntimeDomain) {\n    return `${domain.appid}-runtime-custom-domain`\n  }\n\n  getWebsiteCertificateName(website: WebsiteHosting) {\n    return `${website._id.toString()}-website-custom`\n  }\n\n  // Read a certificate for a given website using cert-manager.io CRD\n  async getWebsiteCertificate(region: Region, website: WebsiteHosting) {\n    const namespace = GetApplicationNamespace(region, website.appid)\n    const name = this.getWebsiteCertificateName(website)\n    return await this.read(region, name, namespace)\n  }\n\n  // Create a certificate for a given website using cert-manager.io CRD\n  async createWebsiteCertificate(region: Region, website: WebsiteHosting) {\n    const namespace = GetApplicationNamespace(region, website.appid)\n    const name = this.getWebsiteCertificateName(website)\n    return await this.create(region, name, namespace, website.domain, {\n      'laf.dev/website': website._id.toString(),\n      'laf.dev/website-domain': website.domain,\n      [LABEL_KEY_APP_ID]: website.appid,\n    })\n  }\n\n  // Delete a certificate for a given website using cert-manager.io CRD\n  async deleteWebsiteCertificate(region: Region, website: WebsiteHosting) {\n    const namespace = GetApplicationNamespace(region, website.appid)\n    const name = this.getWebsiteCertificateName(website)\n    return await this.remove(region, name, namespace)\n  }\n\n  // Read a certificate for app custom domain using cert-manager.io CRD\n  async getRuntimeCertificate(region: Region, runtimeDomain: RuntimeDomain) {\n    const namespace = GetApplicationNamespace(region, runtimeDomain.appid)\n    const name = this.getRuntimeCertificateName(runtimeDomain)\n    return await this.read(region, name, namespace)\n  }\n\n  // Create a certificate for app custom domain using cert-manager.io CRD\n  async createRuntimeCertificate(region: Region, runtimeDomain: RuntimeDomain) {\n    const namespace = GetApplicationNamespace(region, runtimeDomain.appid)\n    const name = this.getRuntimeCertificateName(runtimeDomain)\n    return await this.create(\n      region,\n      name,\n      namespace,\n      runtimeDomain.customDomain,\n      {\n        'laf.dev/runtime-domain': runtimeDomain.customDomain,\n        [LABEL_KEY_APP_ID]: runtimeDomain.appid,\n      },\n    )\n  }\n\n  // Delete a certificate for app custom domain using cert-manager.io CRD\n  async deleteRuntimeCertificate(region: Region, runtimeDomain: RuntimeDomain) {\n    const namespace = GetApplicationNamespace(region, runtimeDomain.appid)\n    const name = this.getRuntimeCertificateName(runtimeDomain)\n    return await this.remove(region, name, namespace)\n  }\n\n  private async read(region: Region, name: string, namespace: string) {\n    try {\n      const api = this.clusterService.makeCustomObjectApi(region)\n      const res = await api.getNamespacedCustomObject(\n        'cert-manager.io',\n        'v1',\n        namespace,\n        'certificates',\n        name,\n      )\n\n      return res.body\n    } catch (err) {\n      if (err?.response?.body?.reason === 'NotFound') return null\n      this.logger.error(err)\n      this.logger.error(err?.response?.body)\n      throw err\n    }\n  }\n\n  private async create(\n    region: Region,\n    name: string,\n    namespace: string,\n    domain: string,\n    labels: Record<string, string>,\n  ) {\n    const api = this.clusterService.makeObjectApi(region)\n    const res = await api.create({\n      apiVersion: 'cert-manager.io/v1',\n      kind: 'Certificate',\n      // Set the metadata for the Certificate resource\n      metadata: {\n        name,\n        namespace,\n        labels,\n      },\n      // Define the specification for the Certificate resource\n      spec: {\n        secretName: name,\n        dnsNames: [domain],\n        issuerRef: region.gatewayConf.tls.issuerRef,\n      },\n    })\n    return res.body\n  }\n\n  private async remove(region: Region, name: string, namespace: string) {\n    const api = this.clusterService.makeObjectApi(region)\n\n    // Make a request to delete the Certificate resource\n    const res = await api.delete({\n      apiVersion: 'cert-manager.io/v1',\n      kind: 'Certificate',\n      metadata: {\n        name,\n        namespace,\n      },\n    })\n\n    // GC the secret\n    await api\n      .delete({\n        apiVersion: 'v1',\n        kind: 'Secret',\n        metadata: {\n          name,\n          namespace,\n        },\n      })\n      // Ignore errors, as the secret may not exist\n      .catch((err) => {\n        this.logger.error(err)\n        this.logger.error(err?.response?.body)\n      })\n\n    return res.body\n  }\n}\n"
  },
  {
    "path": "server/src/gateway/entities/bucket-domain.ts",
    "content": "import { ObjectId } from 'mongodb'\nimport { DomainPhase, DomainState } from './runtime-domain'\n\nexport class BucketDomain {\n  _id?: ObjectId\n  appid: string\n  bucketName: string\n  domain: string\n  state: DomainState\n  phase: DomainPhase\n  lockedAt: Date\n  createdAt: Date\n  updatedAt: Date\n\n  constructor(partial: Partial<BucketDomain>) {\n    Object.assign(this, partial)\n  }\n}\n"
  },
  {
    "path": "server/src/gateway/entities/runtime-domain.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport enum DomainPhase {\n  Creating = 'Creating',\n  Created = 'Created',\n  Deleting = 'Deleting',\n  Deleted = 'Deleted',\n}\n\nexport enum DomainState {\n  Active = 'Active',\n  Inactive = 'Inactive',\n  Deleted = 'Deleted',\n}\n\nexport class RuntimeDomain {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty()\n  domain: string\n\n  @ApiPropertyOptional()\n  customDomain?: string\n\n  @ApiProperty({ enum: DomainState })\n  state: DomainState\n\n  @ApiProperty({ enum: DomainPhase })\n  phase: DomainPhase\n\n  lockedAt: Date\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  constructor(partial: Partial<RuntimeDomain>) {\n    Object.assign(this, partial)\n  }\n}\n"
  },
  {
    "path": "server/src/gateway/gateway.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { RuntimeDomainService } from './runtime-domain.service'\nimport { HttpModule } from '@nestjs/axios'\nimport { BucketDomainService } from './bucket-domain.service'\nimport { WebsiteTaskService } from './website-task.service'\nimport { BucketDomainTaskService } from './bucket-domain-task.service'\nimport { RuntimeDomainTaskService } from './runtime-domain-task.service'\nimport { CertificateService } from './certificate.service'\nimport { RuntimeGatewayService } from './ingress/runtime-ingress.service'\nimport { BucketGatewayService } from './ingress/bucket-ingress.service'\nimport { WebsiteHostingGatewayService } from './ingress/website-ingress.service'\nimport { DatabaseModule } from 'src/database/database.module'\n\n@Module({\n  imports: [HttpModule, DatabaseModule],\n  providers: [\n    RuntimeDomainService,\n    BucketDomainService,\n    WebsiteTaskService,\n    BucketDomainTaskService,\n    RuntimeDomainTaskService,\n    CertificateService,\n    RuntimeGatewayService,\n    BucketGatewayService,\n    WebsiteHostingGatewayService,\n  ],\n  exports: [RuntimeDomainService, BucketDomainService],\n})\nexport class GatewayModule {}\n"
  },
  {
    "path": "server/src/gateway/ingress/bucket-ingress.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { ClusterService } from 'src/region/cluster/cluster.service'\nimport { Region } from 'src/region/entities/region'\nimport { BucketDomain } from '../entities/bucket-domain'\nimport { GetApplicationNamespace } from 'src/utils/getter'\nimport { V1Ingress, V1IngressRule, V1IngressTLS } from '@kubernetes/client-node'\nimport { LABEL_KEY_APP_ID } from 'src/constants'\n\n@Injectable()\nexport class BucketGatewayService {\n  private readonly logger = new Logger(BucketGatewayService.name)\n  constructor(private readonly clusterService: ClusterService) {}\n\n  getIngressName(bucketDomain: BucketDomain) {\n    return bucketDomain._id.toString()\n  }\n\n  async getIngress(region: Region, domain: BucketDomain) {\n    const namespace = GetApplicationNamespace(region, domain.appid)\n    const name = this.getIngressName(domain)\n\n    const ingress = await this.clusterService.getIngress(\n      region,\n      name,\n      namespace,\n    )\n\n    return ingress\n  }\n\n  async createIngress(region: Region, domain: BucketDomain) {\n    const appid = domain.appid\n    const namespace = GetApplicationNamespace(region, appid)\n    const name = this.getIngressName(domain)\n\n    // all bucket request should proxy through runtime\n    const backend = { service: { name: `${appid}`, port: { number: 9000 } } }\n\n    // build minio endpoint rule\n    const minioUrl = new URL(region.storageConf.externalEndpoint)\n    const minioEndpointHost = minioUrl.hostname\n    const minioRule: V1IngressRule = {\n      host: minioEndpointHost,\n      http: {\n        paths: [{ path: `/${domain.bucketName}`, pathType: 'Prefix', backend }],\n      },\n    }\n\n    // build bucket host rule\n    // @deprecated  only use minio endpoint host in the future, reserved to compatible with old version\n    const bucketHost = domain.domain\n    const bucketRule: V1IngressRule = {\n      host: bucketHost,\n      http: {\n        paths: [{ path: '/', pathType: 'Prefix', backend }],\n      },\n    }\n\n    // build tls\n    const tls: Array<V1IngressTLS> = []\n    const tlsConf = region.gatewayConf.tls\n    if (tlsConf.enabled && tlsConf.wildcardCertificateSecretName) {\n      // add wildcardDomain tls\n      const secretName = region.gatewayConf.tls.wildcardCertificateSecretName\n      tls.push({ secretName, hosts: [minioEndpointHost, bucketHost] })\n    }\n\n    // create ingress\n    const ingressClassName = region.gatewayConf.driver\n    const ingressBody: V1Ingress = {\n      metadata: {\n        name,\n        namespace,\n        labels: {\n          [LABEL_KEY_APP_ID]: appid,\n          'laf.dev/bucket.name': domain.bucketName,\n          'laf.dev/ingress.type': 'bucket',\n        },\n        annotations: {\n          // apisix ingress annotations\n          'k8s.apisix.apache.org/cors-expose-headers': '*',\n\n          // k8s nginx ingress annotations\n          // websocket is enabled by default in k8s nginx ingress\n          'nginx.ingress.kubernetes.io/proxy-body-size': '0',\n        },\n      },\n      spec: { ingressClassName, rules: [minioRule, bucketRule], tls },\n    }\n\n    const res = await this.clusterService.createIngress(region, ingressBody)\n    return res\n  }\n\n  async deleteIngress(region: Region, domain: BucketDomain) {\n    const namespace = GetApplicationNamespace(region, domain.appid)\n    const name = this.getIngressName(domain)\n\n    const res = await this.clusterService.deleteIngress(region, name, namespace)\n    return res\n  }\n}\n"
  },
  {
    "path": "server/src/gateway/ingress/runtime-ingress.service.ts",
    "content": "import { V1Ingress, V1IngressTLS } from '@kubernetes/client-node'\nimport { Injectable, Logger } from '@nestjs/common'\nimport { LABEL_KEY_APP_ID } from 'src/constants'\nimport { ClusterService } from 'src/region/cluster/cluster.service'\nimport { Region } from 'src/region/entities/region'\nimport { GetApplicationNamespace } from 'src/utils/getter'\nimport { RuntimeDomain } from '../entities/runtime-domain'\nimport { CertificateService } from '../certificate.service'\n\n@Injectable()\nexport class RuntimeGatewayService {\n  private readonly logger = new Logger(RuntimeGatewayService.name)\n  constructor(\n    private readonly clusterService: ClusterService,\n    private readonly certificate: CertificateService,\n  ) {}\n\n  getIngressName(domain: RuntimeDomain) {\n    return domain.appid\n  }\n\n  async getIngress(region: Region, domain: RuntimeDomain) {\n    // use appid as ingress name of runtime directly\n    const appid = domain.appid\n    const name = this.getIngressName(domain)\n    const namespace = GetApplicationNamespace(region, appid)\n\n    const ingress = await this.clusterService.getIngress(\n      region,\n      name,\n      namespace,\n    )\n\n    return ingress\n  }\n\n  async createIngress(region: Region, runtimeDomain: RuntimeDomain) {\n    const appid = runtimeDomain.appid\n    const namespace = GetApplicationNamespace(region, appid)\n\n    // use appid as ingress name of runtime directly\n    const name = `${appid}`\n    const hosts = [runtimeDomain.domain]\n    if (runtimeDomain.customDomain) {\n      hosts.push(runtimeDomain.customDomain)\n    }\n\n    // build rules\n    const backend = { service: { name: `${appid}`, port: { number: 8000 } } }\n    const rules = hosts.map((host) => {\n      return {\n        host,\n        http: { paths: [{ path: '/', pathType: 'Prefix', backend }] },\n      }\n    })\n\n    // build tls\n    const tls: Array<V1IngressTLS> = []\n    if (region.gatewayConf.tls.enabled) {\n      // add wildcardDomain tls\n      if (region.gatewayConf.tls.wildcardCertificateSecretName) {\n        const secretName = region.gatewayConf.tls.wildcardCertificateSecretName\n        tls.push({ secretName, hosts: [runtimeDomain.domain] })\n      }\n\n      // add customDomain tls\n      if (runtimeDomain.customDomain) {\n        const secretName =\n          this.certificate.getRuntimeCertificateName(runtimeDomain)\n        tls.push({ secretName, hosts: [runtimeDomain.customDomain] })\n      }\n    }\n\n    // create ingress\n    const ingressClassName = region.gatewayConf.driver\n    const ingressBody: V1Ingress = {\n      metadata: {\n        name,\n        namespace,\n        labels: {\n          [LABEL_KEY_APP_ID]: appid,\n          'laf.dev/ingress.type': 'runtime',\n        },\n        annotations: {\n          // apisix ingress annotations\n          'k8s.apisix.apache.org/enable-websocket': 'true',\n\n          // k8s nginx ingress annotations\n          // websocket is enabled by default in k8s nginx ingress\n          'nginx.ingress.kubernetes.io/proxy-read-timeout': '300',\n          'nginx.ingress.kubernetes.io/proxy-send-timeout': '300',\n          'nginx.ingress.kubernetes.io/proxy-body-size': '0',\n          'nginx.ingress.kubernetes.io/proxy-buffer-size': '8192k',\n          'nginx.ingress.kubernetes.io/server-snippet':\n            'client_header_buffer_size 8192k;\\nlarge_client_header_buffers 8 512k;\\n',\n        },\n      },\n      spec: { ingressClassName, rules, tls },\n    }\n\n    const res = await this.clusterService.createIngress(region, ingressBody)\n    return res\n  }\n\n  async deleteIngress(region: Region, domain: RuntimeDomain) {\n    const appid = domain.appid\n    const name = this.getIngressName(domain)\n    const namespace = GetApplicationNamespace(region, appid)\n\n    // delete ingress\n    const res = await this.clusterService.deleteIngress(region, name, namespace)\n    return res\n  }\n}\n"
  },
  {
    "path": "server/src/gateway/ingress/website-ingress.service.ts",
    "content": "import { V1Ingress, V1IngressRule, V1IngressTLS } from '@kubernetes/client-node'\nimport { Injectable, Logger } from '@nestjs/common'\nimport { LABEL_KEY_APP_ID } from 'src/constants'\nimport { ClusterService } from 'src/region/cluster/cluster.service'\nimport { Region } from 'src/region/entities/region'\nimport { GetApplicationNamespace } from 'src/utils/getter'\nimport { WebsiteHosting } from 'src/website/entities/website'\nimport { CertificateService } from '../certificate.service'\n\n@Injectable()\nexport class WebsiteHostingGatewayService {\n  private readonly logger = new Logger(WebsiteHostingGatewayService.name)\n\n  constructor(\n    private readonly clusterService: ClusterService,\n    private readonly certificate: CertificateService,\n  ) {}\n\n  getIngressName(websiteHosting: WebsiteHosting) {\n    return websiteHosting._id.toString()\n  }\n\n  async getIngress(region: Region, website: WebsiteHosting) {\n    const namespace = GetApplicationNamespace(region, website.appid)\n    const name = this.getIngressName(website)\n\n    const ingress = await this.clusterService.getIngress(\n      region,\n      name,\n      namespace,\n    )\n\n    return ingress\n  }\n\n  async createIngress(region: Region, website: WebsiteHosting) {\n    const appid = website.appid\n    const namespace = GetApplicationNamespace(region, appid)\n    const name = this.getIngressName(website)\n\n    // all bucket request should proxy through runtime\n    const backend = { service: { name: `${appid}`, port: { number: 9000 } } }\n\n    // build ingress rule\n    const websiteHost = website.domain\n    const rule: V1IngressRule = {\n      host: websiteHost,\n      http: { paths: [{ path: '/', pathType: 'Prefix', backend }] },\n    }\n\n    // build tls\n    const tls: Array<V1IngressTLS> = []\n    if (region.gatewayConf.tls.enabled) {\n      if (website.isCustom) {\n        // add custom domain tls\n        const secretName = this.certificate.getWebsiteCertificateName(website)\n        tls.push({ secretName, hosts: [website.domain] })\n      } else if (region.gatewayConf.tls.wildcardCertificateSecretName) {\n        // add wildcardDomain tls\n        const secretName = region.gatewayConf.tls.wildcardCertificateSecretName\n        tls.push({ secretName, hosts: [website.domain] })\n      }\n    }\n\n    // create ingress\n    const ingressClassName = region.gatewayConf.driver\n    const ingressBody: V1Ingress = {\n      metadata: {\n        name,\n        namespace,\n        labels: {\n          [LABEL_KEY_APP_ID]: appid,\n          'laf.dev/bucket.name': website.bucketName,\n          'laf.dev/ingress.type': 'website',\n        },\n      },\n      spec: { ingressClassName, rules: [rule], tls },\n    }\n\n    const res = await this.clusterService.createIngress(region, ingressBody)\n    return res\n  }\n\n  async deleteIngress(region: Region, website: WebsiteHosting) {\n    const namespace = GetApplicationNamespace(region, website.appid)\n    const name = this.getIngressName(website)\n\n    const res = await this.clusterService.deleteIngress(region, name, namespace)\n    return res\n  }\n}\n"
  },
  {
    "path": "server/src/gateway/runtime-domain-task.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { RegionService } from '../region/region.service'\nimport * as assert from 'node:assert'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport { ServerConfig, TASK_LOCK_INIT_TIME } from '../constants'\nimport { SystemDatabase } from '../system-database'\nimport {\n  DomainPhase,\n  DomainState,\n  RuntimeDomain,\n} from './entities/runtime-domain'\nimport { CertificateService } from './certificate.service'\nimport { isConditionTrue } from 'src/utils/getter'\nimport { RuntimeGatewayService } from './ingress/runtime-ingress.service'\n\n@Injectable()\nexport class RuntimeDomainTaskService {\n  readonly lockTimeout = 30 // in second\n  private readonly logger = new Logger(RuntimeDomainTaskService.name)\n\n  constructor(\n    private readonly runtimeGateway: RuntimeGatewayService,\n    private readonly regionService: RegionService,\n    private readonly certService: CertificateService,\n  ) {}\n\n  @Cron(CronExpression.EVERY_SECOND)\n  async tick() {\n    if (ServerConfig.DISABLED_GATEWAY_TASK) return\n\n    // Phase `Creating` -> `Created`\n    this.handleCreatingPhase().catch((err) => {\n      this.logger.error(err)\n      err.response && this.logger.error(JSON.stringify(err.response))\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletingPhase().catch((err) => {\n      this.logger.error(err)\n      err.response && this.logger.error(JSON.stringify(err.response))\n    })\n\n    // Phase `Created` -> `Deleting`\n    this.handleInactiveState().catch((err) => {\n      this.logger.error(err)\n      err.response && this.logger.error(JSON.stringify(err.response))\n    })\n\n    // Phase `Deleted` -> `Creating`\n    this.handleActiveState().catch((err) => {\n      this.logger.error(err)\n      err.response && this.logger.error(JSON.stringify(err.response))\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletedState().catch((err) => {\n      this.logger.error(err)\n      err.response && this.logger.error(JSON.stringify(err.response))\n    })\n  }\n\n  /**\n   * Phase `Creating` -> `Created`:\n   * - create route\n   * - move phase `Creating` to `Created`\n   */\n  async handleCreatingPhase() {\n    if (ServerConfig.DISABLED_GATEWAY_TASK) return\n\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<RuntimeDomain>('RuntimeDomain')\n      .findOneAndUpdate(\n        {\n          phase: DomainPhase.Creating,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    if (!res.value) return\n\n    // get region by appid\n    const doc = res.value\n    this.logger.log('handleCreatingPhase matched function domain ' + doc.appid)\n\n    const region = await this.regionService.findByAppId(doc.appid)\n    assert(region, 'region not found')\n\n    // issue ssl certificate\n    // Warning: create certificate before ingress, otherwise apisix ingress will not work\n    if (doc.customDomain && region.gatewayConf.tls) {\n      // create custom certificate if custom domain is set\n      const waitingTime = Date.now() - doc.updatedAt.getTime()\n\n      // create custom domain certificate\n      let cert = await this.certService.getRuntimeCertificate(region, doc)\n      if (!cert) {\n        cert = await this.certService.createRuntimeCertificate(region, doc)\n        this.logger.log(`create runtime domain certificate: ${doc.appid}`)\n        // return to wait for cert to be ready\n        return await this.relock(doc.appid, waitingTime)\n      }\n\n      // check if cert status is Ready\n      const conditions = (cert as any).status?.conditions || []\n      if (!isConditionTrue('Ready', conditions)) {\n        this.logger.log(`runtime domain certificate is not ready: ${doc.appid}`)\n        // return to wait for cert to be ready\n        return await this.relock(doc.appid, waitingTime)\n      }\n    }\n\n    // create ingress if not exists\n    const ingress = await this.runtimeGateway.getIngress(region, doc)\n    if (!ingress) {\n      const res = await this.runtimeGateway.createIngress(region, doc)\n      this.logger.log('runtime default ingress created: ' + doc.appid)\n      this.logger.debug(JSON.stringify(res))\n    }\n\n    // update phase to `Created`\n    await db.collection<RuntimeDomain>('RuntimeDomain').updateOne(\n      { _id: doc._id, phase: DomainPhase.Creating },\n      {\n        $set: {\n          phase: DomainPhase.Created,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    this.logger.log('app domain phase updated to Created ' + doc.domain)\n  }\n\n  /**\n   * Phase `Deleting` -> `Deleted`:\n   * - delete route\n   * - move phase `Deleting` to `Deleted`\n   */\n  async handleDeletingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<RuntimeDomain>('RuntimeDomain')\n      .findOneAndUpdate(\n        {\n          phase: DomainPhase.Deleting,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n    if (!res.value) return\n\n    // get region by appid\n    const doc = res.value\n    const region = await this.regionService.findByAppId(doc.appid)\n    assert(region, 'region not found')\n\n    // delete ingress if exists\n\n    const ingress = await this.runtimeGateway.getIngress(region, doc)\n    if (ingress) {\n      const res = await this.runtimeGateway.deleteIngress(region, doc)\n      this.logger.log('runtime ingress deleted: ' + doc.appid)\n      this.logger.debug(JSON.stringify(res))\n    }\n\n    /* Certificates are only removed when you delete the application and unbind the custom runtime domain.\n    Starting, restarting and stopping the application does not remove certificates */\n\n    if (\n      doc.state === DomainState.Deleted ||\n      (doc.state === DomainState.Active && doc.phase === DomainPhase.Deleting)\n    ) {\n      // delete app custom certificate if custom domain is set\n      const waitingTime = Date.now() - doc.updatedAt.getTime()\n\n      const cert = await this.certService.getRuntimeCertificate(region, doc)\n      if (cert) {\n        await this.certService.deleteRuntimeCertificate(region, doc)\n        this.logger.log(`delete runtime custom domain cert: ${doc.appid}`)\n        // return to wait for cert to be deleted\n        return await this.relock(doc.appid, waitingTime)\n      }\n    }\n\n    // update phase to `Deleted`\n    await db.collection<RuntimeDomain>('RuntimeDomain').updateOne(\n      { _id: doc._id, phase: DomainPhase.Deleting },\n      {\n        $set: {\n          phase: DomainPhase.Deleted,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    this.logger.log('app domain phase updated to Deleted: ' + doc.appid)\n  }\n\n  /**\n   * State `Active`:\n   * - move phase `Deleted` ->  `Creating`\n   */\n  async handleActiveState() {\n    const db = SystemDatabase.db\n\n    await db.collection<RuntimeDomain>('RuntimeDomain').updateMany(\n      {\n        state: DomainState.Active,\n        phase: DomainPhase.Deleted,\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: {\n          phase: DomainPhase.Creating,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n  }\n\n  /**\n   * State `Inactive`:\n   * - move `Created` ->  `Deleting`\n   */\n  async handleInactiveState() {\n    const db = SystemDatabase.db\n\n    await db.collection<RuntimeDomain>('RuntimeDomain').updateMany(\n      {\n        state: DomainState.Inactive,\n        phase: { $in: [DomainPhase.Created, DomainPhase.Creating] },\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: {\n          phase: DomainPhase.Deleting,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n  }\n\n  /**\n   * State `Deleted`:\n   * - move `Created` to `Deleting`\n   * - delete `Deleted` documents\n   */\n  async handleDeletedState() {\n    const db = SystemDatabase.db\n\n    await db.collection<RuntimeDomain>('RuntimeDomain').updateMany(\n      {\n        state: DomainState.Deleted,\n        phase: { $in: [DomainPhase.Created, DomainPhase.Creating] },\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: {\n          phase: DomainPhase.Deleting,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    await db.collection<RuntimeDomain>('RuntimeDomain').deleteMany({\n      state: DomainState.Deleted,\n      phase: DomainPhase.Deleted,\n    })\n  }\n\n  /**\n   * Relock application by appid, lockedTime is in milliseconds\n   */\n  async relock(appid: string, lockedTime = 0) {\n    if (lockedTime <= 2 * 60 * 1000) {\n      lockedTime = Math.ceil(lockedTime / 10)\n    }\n\n    if (lockedTime > 2 * 60 * 1000) {\n      lockedTime = this.lockTimeout * 1000\n    }\n\n    const db = SystemDatabase.db\n    const lockedAt = new Date(Date.now() - 1000 * this.lockTimeout + lockedTime)\n    await db\n      .collection<RuntimeDomain>('RuntimeDomain')\n      .updateOne({ appid }, { $set: { lockedAt } })\n  }\n}\n"
  },
  {
    "path": "server/src/gateway/runtime-domain.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport * as assert from 'assert'\nimport { RegionService } from '../region/region.service'\nimport { TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport {\n  DomainPhase,\n  DomainState,\n  RuntimeDomain,\n} from './entities/runtime-domain'\nimport * as dns from 'node:dns'\n\n@Injectable()\nexport class RuntimeDomainService {\n  private readonly logger = new Logger(RuntimeDomainService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(private readonly regionService: RegionService) {}\n\n  /**\n   * Create app domain in database\n   */\n  async create(appid: string) {\n    const region = await this.regionService.findByAppId(appid)\n    assert(region, 'region not found')\n\n    // create domain in db\n    const app_domain = `${appid}.${region.gatewayConf.runtimeDomain}`\n    await this.db.collection<RuntimeDomain>('RuntimeDomain').insertOne({\n      appid: appid,\n      domain: app_domain,\n      state: DomainState.Active,\n      phase: DomainPhase.Creating,\n      lockedAt: TASK_LOCK_INIT_TIME,\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    })\n\n    return await this.findOne(appid)\n  }\n\n  async checkResolved(appid: string, customDomain: string) {\n    const runtimeDomain = await this.db\n      .collection<RuntimeDomain>('RuntimeDomain')\n      .findOne({ appid })\n\n    const cnameTarget = runtimeDomain.domain\n\n    // check domain is available\n    const resolver = new dns.promises.Resolver({ timeout: 3000, tries: 1 })\n    const result = await resolver\n      .resolveCname(customDomain as string)\n      .catch(() => {\n        return\n      })\n\n    if (!result) return false\n    if (false === (result || []).includes(cnameTarget)) return false\n    return true\n  }\n\n  async bindCustomDomain(appid: string, customDomain: string) {\n    const res = await this.db\n      .collection<RuntimeDomain>('RuntimeDomain')\n      .findOneAndUpdate(\n        { appid },\n        {\n          $set: {\n            customDomain,\n            phase: DomainPhase.Deleting,\n            updatedAt: new Date(),\n          },\n        },\n        {\n          returnDocument: 'after',\n        },\n      )\n\n    return res.value\n  }\n\n  async removeCustomDomain(appid: string) {\n    const res = await this.db\n      .collection<RuntimeDomain>('RuntimeDomain')\n      .findOneAndUpdate(\n        { appid },\n        {\n          $set: {\n            customDomain: null,\n            phase: DomainPhase.Deleting,\n            updatedAt: new Date(),\n          },\n        },\n        {\n          returnDocument: 'after',\n        },\n      )\n\n    return res.value\n  }\n\n  /**\n   * Find an app domain in database\n   */\n  async findOne(appid: string) {\n    const doc = await this.db\n      .collection<RuntimeDomain>('RuntimeDomain')\n      .findOne({ appid })\n\n    return doc\n  }\n\n  /**\n   * Delete app domain in database:\n   * - turn to `Deleted` state\n   */\n  async deleteOne(appid: string) {\n    const doc = await this.db\n      .collection<RuntimeDomain>('RuntimeDomain')\n      .findOneAndUpdate(\n        { appid: appid },\n        {\n          $set: {\n            state: DomainState.Deleted,\n            phase: DomainPhase.Deleting,\n            updatedAt: new Date(),\n          },\n        },\n        { returnDocument: 'after' },\n      )\n\n    return doc\n  }\n}\n"
  },
  {
    "path": "server/src/gateway/website-task.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport {\n  CN_PUBLISHED_WEBSITE_HOSTING,\n  ServerConfig,\n  TASK_LOCK_INIT_TIME,\n} from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport { RegionService } from 'src/region/region.service'\nimport * as assert from 'node:assert'\nimport { CertificateService } from './certificate.service'\nimport { ObjectId } from 'mongodb'\nimport { isConditionTrue } from 'src/utils/getter'\nimport { WebsiteHosting } from 'src/website/entities/website'\nimport { DomainPhase, DomainState } from './entities/runtime-domain'\nimport { BucketDomain } from './entities/bucket-domain'\nimport { WebsiteHostingGatewayService } from './ingress/website-ingress.service'\nimport { DatabaseService } from 'src/database/database.service'\nimport { DedicatedDatabaseService } from 'src/database/dedicated-database/dedicated-database.service'\n\n@Injectable()\nexport class WebsiteTaskService {\n  readonly lockTimeout = 30 // in second\n  private readonly logger = new Logger(WebsiteTaskService.name)\n\n  constructor(\n    private readonly regionService: RegionService,\n    private readonly websiteGateway: WebsiteHostingGatewayService,\n    private readonly certService: CertificateService,\n    private readonly databaseService: DatabaseService,\n    private readonly dedicatedDatabaseService: DedicatedDatabaseService,\n  ) {}\n\n  @Cron(CronExpression.EVERY_SECOND)\n  async tick() {\n    if (ServerConfig.DISABLED_GATEWAY_TASK) return\n\n    // Phase `Creating` -> `Created`\n    this.handleCreatingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Created` -> `Deleting`\n    this.handleInactiveState().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleted` -> `Creating`\n    this.handleActiveState().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletedState().catch((err) => {\n      this.logger.error(err)\n    })\n  }\n\n  /**\n   * Phase `Creating`:\n   * - create website route\n   * - move phase `Creating` to `Created`\n   */\n  async handleCreatingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .findOneAndUpdate(\n        {\n          phase: DomainPhase.Creating,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    if (!res.value) return\n\n    // get region by appid\n    const site = {\n      ...res.value,\n      id: res.value._id.toString(),\n    }\n    const region = await this.regionService.findByAppId(site.appid)\n    assert(region, 'region not found')\n\n    // get bucket domain\n    const bucketDomain = await db\n      .collection<BucketDomain>('BucketDomain')\n      .findOne({\n        appid: site.appid,\n        bucketName: site.bucketName,\n      })\n\n    assert(bucketDomain, `bucket domain not found: ${site.bucketName}`)\n\n    // create website custom certificate if custom domain is set\n    // Warning: create certificate before ingress, otherwise apisix ingress will not work\n    if (site.isCustom && region.gatewayConf.tls.enabled) {\n      const waitingTime = Date.now() - site.updatedAt.getTime()\n\n      // create custom domain  certificate\n      let cert = await this.certService.getWebsiteCertificate(region, site)\n      if (!cert) {\n        cert = await this.certService.createWebsiteCertificate(region, site)\n        this.logger.log(`create website domain certificate: ${site.domain}`)\n        // return to wait for cert to be ready\n        return await this.relock(site._id, waitingTime)\n      }\n\n      // check if cert status is Ready\n      const conditions = (cert as any).status?.conditions || []\n      if (!isConditionTrue('Ready', conditions)) {\n        this.logger.log(`website certificate is not ready: ${site.domain}`)\n        // return to wait for cert to be ready\n        return await this.relock(site._id, waitingTime)\n      }\n    }\n\n    // create website route if not exists\n    const ingress = await this.websiteGateway.getIngress(region, site)\n    if (!ingress) {\n      await this.websiteGateway.createIngress(region, site)\n      this.logger.log(`create website ingress: ${site.domain}`)\n    }\n\n    // update phase to `Created`\n    await db.collection<WebsiteHosting>('WebsiteHosting').updateOne(\n      { _id: site._id, phase: DomainPhase.Creating },\n      {\n        $set: {\n          phase: DomainPhase.Created,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    await this.publish(site)\n\n    this.logger.log(`update website phase to 'Created': ${site._id}`)\n  }\n\n  /**\n   * Phase `Deleting`:\n   * - delete website route\n   * - move phase `Deleting` to `Deleted`\n   */\n  async handleDeletingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .findOneAndUpdate(\n        {\n          phase: DomainPhase.Deleting,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    if (!res.value) return\n\n    // get region by appid\n    const site = res.value\n    const region = await this.regionService.findByAppId(site.appid)\n    assert(region, 'region not found')\n\n    // delete website ingress if exists\n    const ingress = await this.websiteGateway.getIngress(region, site)\n    if (ingress) {\n      await this.websiteGateway.deleteIngress(region, site)\n      this.logger.log(`delete website ingress: ${site.domain}`)\n    }\n\n    // delete website custom certificate if custom domain is set\n\n    /* Certificates are only removed when you delete the application and unbind the custom runtime domain.\n    Starting, restarting and stopping the application does not remove certificates */\n    if (\n      (site.state === DomainState.Deleted && site.isCustom) ||\n      (site.state === DomainState.Active && site.phase === DomainPhase.Deleting)\n    ) {\n      const waitingTime = Date.now() - site.updatedAt.getTime()\n\n      // delete custom domain certificate\n      const cert = await this.certService.getWebsiteCertificate(region, site)\n      if (cert) {\n        await this.certService.deleteWebsiteCertificate(region, site)\n        this.logger.log(`delete website domain certificate: ${site.domain}`)\n        // return to wait for cert to be deleted\n        return await this.relock(site._id, waitingTime)\n      }\n    }\n\n    // update phase to `Deleted`\n    await db.collection<WebsiteHosting>('WebsiteHosting').updateOne(\n      { _id: site._id, phase: DomainPhase.Deleting },\n      {\n        $set: {\n          phase: DomainPhase.Deleted,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    await this.unpublish(site)\n\n    this.logger.log(`update website phase to 'Deleted': ${site._id}`)\n  }\n\n  /**\n   * State `Inactive`:\n   * - move phase `Created` to `Deleting`\n   */\n  async handleInactiveState() {\n    const db = SystemDatabase.db\n\n    await db.collection<WebsiteHosting>('WebsiteHosting').updateMany(\n      {\n        state: DomainState.Inactive,\n        phase: { $in: [DomainPhase.Created, DomainPhase.Creating] },\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: {\n          phase: DomainPhase.Deleting,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n  }\n\n  /**\n   * State `Active`:\n   * - move phase `Deleted` to `Creating`\n   */\n  async handleActiveState() {\n    const db = SystemDatabase.db\n\n    await db.collection<WebsiteHosting>('WebsiteHosting').updateMany(\n      {\n        state: DomainState.Active,\n        phase: DomainPhase.Deleted,\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: {\n          phase: DomainPhase.Creating,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n  }\n\n  /**\n   * State `Deleted`:\n   * - move phase `Created` to `Deleting`\n   * - delete `Deleted` documents\n   */\n  async handleDeletedState() {\n    const db = SystemDatabase.db\n\n    await db.collection<WebsiteHosting>('WebsiteHosting').updateMany(\n      {\n        state: DomainState.Deleted,\n        phase: { $in: [DomainPhase.Created, DomainPhase.Creating] },\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: {\n          phase: DomainPhase.Deleting,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    await db.collection<WebsiteHosting>('WebsiteHosting').deleteMany({\n      state: DomainState.Deleted,\n      phase: DomainPhase.Deleted,\n    })\n  }\n\n  /**\n   * Relock application by appid, lockedTime is in milliseconds\n   */\n  async relock(id: ObjectId, lockedTime = 0) {\n    if (lockedTime <= 2 * 60 * 1000) {\n      lockedTime = Math.ceil(lockedTime / 10)\n    }\n\n    if (lockedTime > 2 * 60 * 1000) {\n      lockedTime = this.lockTimeout * 1000\n    }\n\n    const db = SystemDatabase.db\n    const lockedAt = new Date(Date.now() - 1000 * this.lockTimeout + lockedTime)\n    await db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .updateOne({ _id: id }, { $set: { lockedAt } })\n  }\n\n  async publish(website: WebsiteHosting) {\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(website.appid)) ||\n      (await this.databaseService.findAndConnect(website.appid))\n    const session = client.startSession()\n\n    try {\n      await session.withTransaction(async () => {\n        const coll = db.collection(CN_PUBLISHED_WEBSITE_HOSTING)\n\n        await coll.deleteMany({ bucketName: website.bucketName }, { session })\n        await coll.insertOne(website, { session })\n      })\n    } finally {\n      await session.endSession()\n      await client.close()\n    }\n  }\n\n  async unpublish(website: WebsiteHosting) {\n    const { db, client } =\n      (await this.dedicatedDatabaseService.findAndConnect(website.appid)) ||\n      (await this.databaseService.findAndConnect(website.appid))\n\n    try {\n      const coll = db.collection(CN_PUBLISHED_WEBSITE_HOSTING)\n      await coll.deleteMany({ bucketName: website.bucketName })\n    } finally {\n      await client.close()\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/generated/i18n.generated.ts",
    "content": "/* DO NOT EDIT, file generated by nestjs-i18n */\n\nimport { Path } from \"nestjs-i18n\";\nexport type I18nTranslations = {\n    \"function\": {\n        \"create\": {\n            \"nameExist\": string;\n            \"maxCount\": string;\n            \"error\": string;\n        };\n        \"get\": {};\n        \"update\": {\n            \"error\": string;\n        };\n        \"delete\": {\n            \"error\": string;\n        };\n        \"compile\": {\n            \"codeRequired\": string;\n        };\n        \"common\": {\n            \"notFound\": string;\n        };\n    };\n    \"notification\": {\n        \"InsufficientBalance\": {\n            \"title\": string;\n            \"content\": string;\n        };\n    };\n};\nexport type I18nPath = Path<I18nTranslations>;\n"
  },
  {
    "path": "server/src/group/dto/create-group.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString, Length } from 'class-validator'\n\nexport class CreateGroupDto {\n  @ApiProperty()\n  @IsString()\n  @IsNotEmpty()\n  @Length(1, 64)\n  name: string\n}\n"
  },
  {
    "path": "server/src/group/dto/find-group-invite-code.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { User } from 'src/user/entities/user'\nimport { GroupInviteCode } from '../entities/group-invite-code'\nimport { OmitType } from '@nestjs/mapped-types'\n\nexport class FindGroupInviteCodeDto extends OmitType(GroupInviteCode, [\n  'usedBy',\n]) {\n  @ApiProperty({ type: User })\n  usedBy: User\n}\n"
  },
  {
    "path": "server/src/group/dto/find-group-member.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { OmitType } from '@nestjs/mapped-types'\nimport { GroupMember } from '../entities/group-member'\n\nexport class FindGroupMemberDto extends OmitType(GroupMember, [\n  'groupId',\n  '_id',\n]) {\n  @ApiProperty()\n  username: string\n}\n"
  },
  {
    "path": "server/src/group/dto/get-group-invite-code-detail.dto.ts",
    "content": "import { OmitType } from '@nestjs/mapped-types'\nimport { GroupInviteCode } from '../entities/group-invite-code'\nimport { Group } from '../entities/group'\nimport { ApiProperty } from '@nestjs/swagger'\nimport { User } from 'src/user/entities/user'\n\nexport class GetGroupInviteCodeDetailDto extends OmitType(GroupInviteCode, [\n  'groupId',\n  '_id',\n  'createdBy',\n  'groupId',\n]) {\n  @ApiProperty({ type: Group })\n  group: Group\n\n  @ApiProperty({ type: User })\n  invitedBy: User\n}\n"
  },
  {
    "path": "server/src/group/dto/update-group-invite-code.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsEnum, IsNotEmpty } from 'class-validator'\nimport { GroupRole } from '../entities/group-member'\nimport { ObjectId } from 'mongodb'\n\nexport class GenerateGroupInviteCodeDto {\n  @ApiProperty({ enum: GroupRole })\n  @IsEnum(GroupRole)\n  @IsNotEmpty()\n  role: GroupRole\n\n  createdBy: ObjectId\n}\n"
  },
  {
    "path": "server/src/group/dto/update-group-member-role.dto.ts",
    "content": "import { IsEnum } from 'class-validator'\nimport { GroupRole } from '../entities/group-member'\nimport { ApiProperty } from '@nestjs/swagger'\n\nexport class UpdateGroupMemberRoleDto {\n  @ApiProperty({ enum: GroupRole })\n  @IsEnum(GroupRole)\n  role: GroupRole\n}\n"
  },
  {
    "path": "server/src/group/dto/update-group.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString, Length } from 'class-validator'\n\nexport class UpdateGroupDto {\n  @ApiProperty()\n  @IsString()\n  @IsNotEmpty()\n  @Length(1, 64)\n  name: string\n}\n"
  },
  {
    "path": "server/src/group/entities/group-application.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport class GroupApplication {\n  @ApiProperty({ type: 'string' })\n  _id?: ObjectId\n\n  @ApiProperty({ type: 'string' })\n  groupId: ObjectId\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty()\n  createdAt: Date\n}\n"
  },
  {
    "path": "server/src/group/entities/group-invite-code.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\nimport { GroupRole } from './group-member'\n\nexport class GroupInviteCode {\n  @ApiProperty({ type: 'string' })\n  _id?: ObjectId\n\n  @ApiPropertyOptional({ type: 'string' })\n  usedBy?: ObjectId\n\n  @ApiProperty()\n  code: string\n\n  @ApiProperty()\n  role: GroupRole\n\n  @ApiProperty({ type: 'string' })\n  groupId: ObjectId\n\n  @ApiProperty({ type: 'string' })\n  createdBy: ObjectId\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/group/entities/group-member.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport enum GroupRole {\n  Owner = 'owner',\n  Admin = 'admin',\n  Developer = 'developer',\n}\n\nconst roleLevel = {\n  [GroupRole.Owner]: 0b100,\n  [GroupRole.Admin]: 0b010,\n  [GroupRole.Developer]: 0b001,\n} as const\n\nexport const getRoleLevel = (role: GroupRole) => {\n  return roleLevel[role]\n}\n\nexport class GroupMember {\n  @ApiProperty({ type: 'string' })\n  _id?: ObjectId\n\n  @ApiProperty({ type: 'string' })\n  uid: ObjectId\n\n  @ApiProperty({ type: 'string' })\n  groupId: ObjectId\n\n  @ApiProperty({ enum: GroupRole })\n  role: GroupRole\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/group/entities/group.ts",
    "content": "import { ObjectId } from 'mongodb'\nimport { GroupRole } from './group-member'\nimport { ApiProperty } from '@nestjs/swagger'\n\nexport class Group {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  appid?: string\n\n  @ApiProperty({ type: String })\n  createdBy: ObjectId\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n\nexport class GroupWithRole extends Group {\n  @ApiProperty({ enum: GroupRole })\n  role: GroupRole\n}\n"
  },
  {
    "path": "server/src/group/group-application/group-application.controller.ts",
    "content": "import {\n  Controller,\n  Delete,\n  Get,\n  HttpException,\n  HttpStatus,\n  Param,\n  Post,\n  UseGuards,\n} from '@nestjs/common'\nimport { GroupApplicationService } from './group-application.service'\nimport { ObjectId } from 'mongodb'\nimport { GroupRoles } from '../group-role.decorator'\nimport { GroupRole } from '../entities/group-member'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { GroupAuthGuard } from '../group-auth.guard'\nimport { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'\nimport {\n  ApiResponseArray,\n  ApiResponseObject,\n  ResponseUtil,\n} from 'src/utils/response'\nimport { GroupApplication } from '../entities/group-application'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\nimport { InjectApplication, InjectGroup, InjectUser } from 'src/utils/decorator'\nimport { ApplicationWithRelations } from 'src/application/entities/application'\nimport { User } from 'src/user/entities/user'\nimport { GroupWithRole } from '../entities/group'\n\n@ApiTags('Group')\n@ApiBearerAuth('Authorization')\n@Controller('group')\nexport class GroupApplicationController {\n  constructor(\n    private readonly groupApplicationService: GroupApplicationService,\n  ) {}\n\n  @ApiOperation({ summary: 'Append an application to a group' })\n  @ApiResponseObject(GroupApplication)\n  @GroupRoles(GroupRole.Owner)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard, GroupAuthGuard)\n  @Post(':groupId/application/:appid')\n  async append(\n    @Param('groupId') groupId: string,\n    @Param('appid') appid: string,\n    @InjectApplication() app: ApplicationWithRelations,\n    @InjectUser() user: User,\n  ) {\n    if (!app.createdBy.equals(user._id)) {\n      throw new HttpException('application not found', HttpStatus.NOT_FOUND)\n    }\n    const groupApp = await this.groupApplicationService.findOne(\n      new ObjectId(groupId),\n      appid,\n    )\n    if (groupApp) {\n      return ResponseUtil.error('application already appended')\n    }\n    const res = await this.groupApplicationService.append(\n      new ObjectId(groupId),\n      appid,\n    )\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Get application list of a group' })\n  @ApiResponseArray(GroupApplication)\n  @UseGuards(JwtAuthGuard, GroupAuthGuard)\n  @Get(':groupId/application')\n  async find(@Param('groupId') groupId: string) {\n    const res = await this.groupApplicationService.find(new ObjectId(groupId))\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Remove an application from a group' })\n  @ApiResponseArray(GroupApplication)\n  @GroupRoles(GroupRole.Owner)\n  @UseGuards(JwtAuthGuard, GroupAuthGuard)\n  @Delete(':groupId/application/:appid')\n  async remove(\n    @Param('groupId') groupId: string,\n    @Param('appid') appid: string,\n    @InjectGroup() group: GroupWithRole,\n  ) {\n    if (group.appid === appid) {\n      return ResponseUtil.error('cannot remove the default application')\n    }\n    const app = await this.groupApplicationService.findOne(\n      new ObjectId(groupId),\n      appid,\n    )\n    if (!app) {\n      throw new HttpException('application not found', HttpStatus.NOT_FOUND)\n    }\n    await this.groupApplicationService.remove(new ObjectId(groupId), appid)\n    return ResponseUtil.ok(app)\n  }\n}\n"
  },
  {
    "path": "server/src/group/group-application/group-application.service.ts",
    "content": "import { Injectable } from '@nestjs/common'\nimport { SystemDatabase } from 'src/system-database'\nimport { GroupApplication } from '../entities/group-application'\nimport { ClientSession, ObjectId } from 'mongodb'\n\n@Injectable()\nexport class GroupApplicationService {\n  private readonly db = SystemDatabase.db\n\n  async find(groupId: ObjectId) {\n    const res = await this.db\n      .collection<GroupApplication>('GroupApplication')\n      .aggregate()\n      .match({\n        groupId,\n      })\n      .lookup({\n        from: 'Application',\n        localField: 'appid',\n        foreignField: 'appid',\n        as: 'application',\n      })\n      .unwind('$application')\n      .project({\n        _id: 0,\n        appid: '$application.appid',\n        name: '$application.name',\n      })\n      .toArray()\n\n    return res\n  }\n\n  async findOne(groupId: ObjectId, appid: string) {\n    const res = await this.db\n      .collection<GroupApplication>('GroupApplication')\n      .aggregate()\n      .match({\n        groupId,\n        appid,\n      })\n      .lookup({\n        from: 'Application',\n        localField: 'appid',\n        foreignField: 'appid',\n        as: 'application',\n      })\n      .unwind('$application')\n      .project({\n        _id: 0,\n        appid: '$application.appid',\n        name: '$application.name',\n      })\n      .next()\n\n    return res\n  }\n\n  async append(groupId: ObjectId, appid: string, session?: ClientSession) {\n    const res = await this.db\n      .collection<GroupApplication>('GroupApplication')\n      .insertOne(\n        {\n          appid,\n          groupId,\n          createdAt: new Date(),\n        },\n        { session },\n      )\n\n    const app = await this.db\n      .collection<GroupApplication>('GroupApplication')\n      .findOne(\n        {\n          _id: res.insertedId,\n        },\n        { session },\n      )\n\n    return app\n  }\n\n  async remove(groupId: ObjectId, appid: string) {\n    const res = await this.db\n      .collection<GroupApplication>('GroupApplication')\n      .deleteOne({\n        groupId,\n        appid,\n      })\n\n    return res\n  }\n\n  async removeAll(groupId: ObjectId, session: ClientSession) {\n    const res = await this.db\n      .collection<GroupApplication>('GroupApplication')\n      .deleteMany(\n        {\n          groupId,\n        },\n        { session },\n      )\n\n    return res\n  }\n}\n"
  },
  {
    "path": "server/src/group/group-auth.guard.ts",
    "content": "import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'\nimport { GroupService } from './group.service'\nimport { IRequest } from 'src/utils/interface'\nimport { User } from 'src/user/entities/user'\nimport { ObjectId } from 'mongodb'\nimport { Reflector } from '@nestjs/core'\nimport { getRoleLevel } from './entities/group-member'\nimport { GroupMemberService } from './group-member/group-member.service'\n\n@Injectable()\nexport class GroupAuthGuard implements CanActivate {\n  constructor(\n    private readonly groupService: GroupService,\n    private readonly groupMemberService: GroupMemberService,\n    private readonly reflector: Reflector,\n  ) {}\n\n  async canActivate(context: ExecutionContext) {\n    const request = context.switchToHttp().getRequest() as IRequest\n    const user = request.user as User\n    const groupId = request.params.groupId\n\n    if (!groupId) {\n      return false\n    }\n\n    const group = await this.groupService.findOneWithRole(\n      new ObjectId(groupId),\n      user._id,\n    )\n    if (!group) {\n      return false\n    }\n\n    const members = await this.groupMemberService.find(new ObjectId(groupId))\n    const member = members.find((m) => m.uid.equals(user._id))\n    if (!member) {\n      return false\n    }\n\n    // inject group to request\n    request.group = group\n\n    const roles = this.reflector.get<string[]>(\n      'group-roles',\n      context.getHandler(),\n    )\n    if (!roles || roles.length === 0) {\n      return true\n    }\n\n    const roleLevels = roles.map(getRoleLevel).sort((a, b) => a - b)\n\n    if (roleLevels[0] > getRoleLevel(member.role)) {\n      return false\n    }\n\n    return true\n  }\n}\n"
  },
  {
    "path": "server/src/group/group-invite/group-invite.controller.ts",
    "content": "import {\n  Body,\n  Controller,\n  Delete,\n  Get,\n  HttpException,\n  HttpStatus,\n  Param,\n  Post,\n  UseGuards,\n} from '@nestjs/common'\nimport { ObjectId } from 'mongodb'\nimport {\n  ApiResponseArray,\n  ApiResponseObject,\n  ResponseUtil,\n} from 'src/utils/response'\n\nimport { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { GroupRole } from '../entities/group-member'\nimport { GroupInviteCode } from '../entities/group-invite-code'\nimport { GroupAuthGuard } from '../group-auth.guard'\nimport { GroupRoles } from '../group-role.decorator'\nimport { GroupInviteService } from './group-invite.service'\nimport { GenerateGroupInviteCodeDto } from '../dto/update-group-invite-code.dto'\nimport { FindGroupInviteCodeDto } from '../dto/find-group-invite-code.dto'\nimport { InjectUser } from 'src/utils/decorator'\n\n@ApiTags('Group')\n@ApiBearerAuth('Authorization')\n@Controller('group/:groupId/invite')\nexport class GroupInviteController {\n  constructor(private readonly inviteService: GroupInviteService) {}\n\n  @ApiOperation({ summary: 'Get group invite code' })\n  @ApiResponseArray(FindGroupInviteCodeDto)\n  @GroupRoles(GroupRole.Admin)\n  @UseGuards(JwtAuthGuard, GroupAuthGuard)\n  @Get('code')\n  async getInviteCode(@Param('groupId') groupId: string) {\n    const res = await this.inviteService.getInviteCode(new ObjectId(groupId))\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Update group invite code' })\n  @ApiResponseObject(GroupInviteCode)\n  @GroupRoles(GroupRole.Admin)\n  @UseGuards(JwtAuthGuard, GroupAuthGuard)\n  @Post('code')\n  async generateInviteCode(\n    @Body() dto: GenerateGroupInviteCodeDto,\n    @Param('groupId') groupId: string,\n    @InjectUser() user,\n  ) {\n    const res = await this.inviteService.generateInviteCode(\n      new ObjectId(groupId),\n      {\n        createdBy: user._id,\n        role: dto.role,\n      },\n    )\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Delete group invite code' })\n  @ApiResponseObject(GroupInviteCode)\n  @GroupRoles(GroupRole.Admin)\n  @UseGuards(JwtAuthGuard, GroupAuthGuard)\n  @Delete('code/:code')\n  async deleteInviteCode(@Param('code') code: string) {\n    const inviteCode = await this.inviteService.findOneByCode(code)\n    if (!inviteCode) {\n      throw new HttpException('invite code not found', HttpStatus.NOT_FOUND)\n    }\n    await this.inviteService.deleteInviteCode(inviteCode)\n    return ResponseUtil.ok(inviteCode)\n  }\n}\n"
  },
  {
    "path": "server/src/group/group-invite/group-invite.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { SystemDatabase } from 'src/system-database'\nimport { ClientSession, ObjectId } from 'mongodb'\nimport { GroupInviteCode } from '../entities/group-invite-code'\nimport { FindGroupInviteCodeDto } from '../dto/find-group-invite-code.dto'\nimport { GenerateGroupInviteCodeDto } from '../dto/update-group-invite-code.dto'\nimport * as nanoid from 'nanoid'\nimport { GetGroupInviteCodeDetailDto } from '../dto/get-group-invite-code-detail.dto'\nimport { GroupMemberService } from '../group-member/group-member.service'\nimport { User } from 'src/user/entities/user'\n\n@Injectable()\nexport class GroupInviteService {\n  private readonly logger = new Logger(GroupInviteService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(private readonly memberService: GroupMemberService) {}\n\n  async useInviteCode(inviteCode: GroupInviteCode, user: User) {\n    const session = SystemDatabase.client.startSession()\n\n    try {\n      await session.startTransaction()\n      await this.db.collection<GroupInviteCode>('GroupInviteCode').updateOne(\n        { _id: inviteCode._id },\n        {\n          $set: {\n            usedBy: user._id,\n            updatedAt: new Date(),\n          },\n        },\n        {\n          session,\n        },\n      )\n\n      const res = await this.memberService.addOne(\n        inviteCode.groupId,\n        user._id,\n        inviteCode.role,\n        session,\n      )\n\n      await session.commitTransaction()\n      return res\n    } catch (err) {\n      this.logger.error(err)\n      await session.abortTransaction()\n      throw err\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  async getInviteCode(groupId: ObjectId) {\n    const res = await this.db\n      .collection<GroupInviteCode>('GroupInviteCode')\n      .aggregate<FindGroupInviteCodeDto>()\n      .match({ groupId, usedBy: null })\n      // .lookup({\n      //   from: 'User',\n      //   localField: 'usedBy',\n      //   foreignField: '_id',\n      //   pipeline: [\n      //     {\n      //       $project: { username: 1 },\n      //     },\n      //   ],\n      //   as: 'usedBy',\n      // })\n      // .unwind({\n      //   path: '$usedBy',\n      //   preserveNullAndEmptyArrays: true,\n      // })\n      .toArray()\n\n    return res\n  }\n\n  async generateInviteCode(groupId: ObjectId, dto: GenerateGroupInviteCodeDto) {\n    const code = await this.tryGenerateInviteCode()\n\n    await this.db.collection<GroupInviteCode>('GroupInviteCode').insertOne({\n      groupId,\n      code,\n      role: dto.role,\n      createdBy: dto.createdBy,\n      usedBy: null,\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    })\n\n    return await this.findOneByCode(code)\n  }\n\n  async tryGenerateInviteCode() {\n    for (let i = 0; i < 10; i++) {\n      const code = this.generateInviteCodeInternal()\n      const existed = await this.db\n        .collection<GroupInviteCode>('GroupInviteCode')\n        .findOne({ code })\n\n      if (!existed) return code\n    }\n\n    throw new Error('Generate invite code failed')\n  }\n\n  private generateInviteCodeInternal(len = 10) {\n    const only_alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'\n\n    const nano = nanoid.customAlphabet(only_alpha, len)\n    return nano()\n  }\n\n  async findOneByCode(code: string) {\n    const res = await this.db\n      .collection<GroupInviteCode>('GroupInviteCode')\n      .findOne({ code })\n    return res\n  }\n\n  async findOneByCodeDetail(code: string) {\n    const res = await this.db\n      .collection<GroupInviteCode>('GroupInviteCode')\n      .aggregate()\n      .match({ code })\n      .lookup({\n        from: 'User',\n        localField: 'createdBy',\n        foreignField: '_id',\n        pipeline: [\n          {\n            $project: { username: 1 },\n          },\n        ],\n        as: 'invitedBy',\n      })\n      .unwind('$invitedBy')\n      .lookup({\n        from: 'Group',\n        localField: 'groupId',\n        foreignField: '_id',\n        pipeline: [\n          {\n            $project: { name: 1, appid: 1 },\n          },\n        ],\n        as: 'group',\n      })\n      .unwind('$group')\n      .project<GetGroupInviteCodeDetailDto>({\n        _id: 0,\n        role: 1,\n        code: 1,\n        usedBy: 1,\n        createdAt: 1,\n        updatedAt: 1,\n        invitedBy: {\n          _id: '$invitedBy._id',\n          username: '$invitedBy.username',\n        },\n        group: {\n          _id: '$group._id',\n          name: '$group.name',\n          appid: '$group.appid',\n        },\n      })\n      .next()\n\n    return res\n  }\n\n  async deleteInviteCode(inviteCode: GroupInviteCode, session?: ClientSession) {\n    const res = await this.db\n      .collection<GroupInviteCode>('GroupInviteCode')\n      .deleteOne({ _id: inviteCode._id }, { session })\n    return res\n  }\n\n  async deleteManyInviteCode(groupId: ObjectId, session?: ClientSession) {\n    const res = await this.db\n      .collection<GroupInviteCode>('GroupInviteCode')\n      .deleteMany({ groupId }, { session })\n    return res\n  }\n}\n"
  },
  {
    "path": "server/src/group/group-member/group-member.controller.ts",
    "content": "import {\n  Body,\n  Controller,\n  Delete,\n  Get,\n  HttpException,\n  HttpStatus,\n  Param,\n  Patch,\n  Post,\n  UseGuards,\n} from '@nestjs/common'\nimport { User } from 'src/user/entities/user'\nimport { InjectGroup, InjectUser } from 'src/utils/decorator'\nimport { ObjectId } from 'mongodb'\nimport {\n  ApiResponseArray,\n  ApiResponseObject,\n  ResponseUtil,\n} from 'src/utils/response'\nimport { UpdateGroupMemberRoleDto } from '../dto/update-group-member-role.dto'\nimport { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { GroupMember, GroupRole, getRoleLevel } from '../entities/group-member'\nimport { GroupAuthGuard } from '../group-auth.guard'\nimport { GroupRoles } from '../group-role.decorator'\nimport { GroupMemberService } from './group-member.service'\nimport { GroupInviteService } from '../group-invite/group-invite.service'\nimport { GroupService } from '../group.service'\nimport { GroupWithRole } from '../entities/group'\nimport { FindGroupMemberDto } from '../dto/find-group-member.dto'\n\n@ApiTags('Group')\n@ApiBearerAuth('Authorization')\n@Controller('group')\nexport class GroupMemberController {\n  constructor(\n    private readonly memberService: GroupMemberService,\n    private readonly inviteService: GroupInviteService,\n    private readonly groupService: GroupService,\n  ) {}\n\n  @ApiOperation({ summary: 'Get members of a group' })\n  @ApiResponseArray(FindGroupMemberDto)\n  @UseGuards(JwtAuthGuard, GroupAuthGuard)\n  @Get(':groupId/member')\n  async findMembers(@Param('groupId') groupId: string) {\n    const res = await this.memberService.find(new ObjectId(groupId))\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Join a group' })\n  @ApiResponseObject(GroupMember)\n  @UseGuards(JwtAuthGuard)\n  @Post(':code/member/join')\n  async addMember(@Param('code') code: string, @InjectUser() user: User) {\n    const inviteCode = await this.inviteService.findOneByCode(code)\n    if (!inviteCode) {\n      throw new HttpException('invite code not found', HttpStatus.NOT_FOUND)\n    }\n    if (inviteCode.usedBy) {\n      return ResponseUtil.error('invite code has been used')\n    }\n    const member = await this.memberService.findOne(\n      inviteCode.groupId,\n      user._id,\n    )\n    if (member) {\n      return ResponseUtil.error('user has already joined')\n    }\n\n    const group = await this.groupService.findOne(inviteCode.groupId)\n    if (!group) {\n      throw new HttpException('group not found', HttpStatus.NOT_FOUND)\n    }\n\n    const res = await this.inviteService.useInviteCode(inviteCode, user)\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Remove a group member' })\n  @ApiResponseObject(GroupMember)\n  @GroupRoles(GroupRole.Admin)\n  @UseGuards(JwtAuthGuard, GroupAuthGuard)\n  @Delete(':groupId/member/:userId')\n  async removeMember(\n    @Param('groupId') groupId: string,\n    @Param('userId') userId: string,\n    @InjectUser() user: User,\n    @InjectGroup() group: GroupWithRole,\n  ) {\n    if (user._id.equals(userId)) {\n      return ResponseUtil.error('cannot remove yourself')\n    }\n\n    const member = await this.memberService.findOne(\n      new ObjectId(groupId),\n      user._id,\n    )\n    if (getRoleLevel(member.role) < getRoleLevel(group.role)) {\n      return ResponseUtil.error('you must have higher permission')\n    }\n\n    const [ok, res] = await this.memberService.removeOne(\n      new ObjectId(groupId),\n      new ObjectId(userId),\n    )\n    if (!ok) {\n      return ResponseUtil.error('failed to remove member')\n    }\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Update the role of a member' })\n  @ApiResponseObject(GroupMember)\n  @GroupRoles(GroupRole.Owner)\n  @UseGuards(JwtAuthGuard, GroupAuthGuard)\n  @Patch(':groupId/member/:userId/role')\n  async updateMemberRole(\n    @Param('groupId') groupId: string,\n    @Param('userId') userId: string,\n    @Body() dto: UpdateGroupMemberRoleDto,\n    @InjectUser() user: User,\n  ) {\n    if (user._id.equals(userId)) {\n      return ResponseUtil.error('cannot update your own role')\n    }\n    if (![GroupRole.Developer].includes(dto.role)) {\n      return ResponseUtil.error('can only update role to developer')\n    }\n    const res = await this.memberService.updateRole(\n      new ObjectId(groupId),\n      new ObjectId(userId),\n      dto.role,\n    )\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Leave a group' })\n  @ApiResponseObject(GroupMember)\n  @UseGuards(JwtAuthGuard, GroupAuthGuard)\n  @Post(':groupId/member/leave')\n  async leaveGroup(\n    @Param('groupId') groupId: string,\n    @InjectUser() user: User,\n    @InjectGroup() group: GroupWithRole,\n  ) {\n    if (group.role === GroupRole.Owner) {\n      return ResponseUtil.error('Owner cannot leave group')\n    }\n    await this.memberService.leaveGroup(new ObjectId(groupId), user._id)\n\n    return ResponseUtil.ok(group)\n  }\n}\n"
  },
  {
    "path": "server/src/group/group-member/group-member.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\n\nimport { SystemDatabase } from 'src/system-database'\nimport { ClientSession, ObjectId } from 'mongodb'\nimport { GroupMember, GroupRole } from '../entities/group-member'\nimport { FindGroupMemberDto } from '../dto/find-group-member.dto'\n\n@Injectable()\nexport class GroupMemberService {\n  private readonly logger = new Logger(GroupMemberService.name)\n  private readonly db = SystemDatabase.db\n\n  async updateRole(groupId: ObjectId, uid: ObjectId, role: GroupRole) {\n    const res = await this.db\n      .collection<GroupMember>('GroupMember')\n      .findOneAndUpdate(\n        { groupId, uid },\n        {\n          $set: {\n            role,\n            updatedAt: new Date(),\n          },\n        },\n        { returnDocument: 'after' },\n      )\n    return res\n  }\n\n  async findOne(groupId: ObjectId, uid: ObjectId, session?: ClientSession) {\n    const res = await this.db.collection<GroupMember>('GroupMember').findOne(\n      {\n        groupId,\n        uid,\n      },\n      {\n        session,\n      },\n    )\n    return res\n  }\n\n  async find(groupId: ObjectId) {\n    const res = await this.db\n      .collection<GroupMember>('GroupMember')\n      .aggregate()\n      .match({ groupId })\n      .lookup({\n        from: 'User',\n        foreignField: '_id',\n        localField: 'uid',\n        as: 'user',\n      })\n      .unwind('$user')\n      .project<FindGroupMemberDto>({\n        _id: 0,\n        uid: 1,\n        role: 1,\n        username: '$user.username',\n        createdAt: 1,\n        updatedAt: 1,\n      })\n      .toArray()\n\n    return res\n  }\n\n  async addOne(\n    groupId: ObjectId,\n    uid: ObjectId,\n    role: GroupRole,\n    session?: ClientSession,\n  ) {\n    await this.db.collection<GroupMember>('GroupMember').insertOne(\n      {\n        groupId,\n        uid,\n        role,\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n      {\n        session,\n      },\n    )\n    return await this.findOne(groupId, uid, session)\n  }\n\n  async removeOne(groupId: ObjectId, uid: ObjectId) {\n    const res = await this.db.collection<GroupMember>('GroupMember').deleteOne({\n      groupId,\n      uid,\n    })\n    const ok = res.acknowledged && res.deletedCount > 0\n    return [ok, res]\n  }\n\n  async removeAll(groupId: ObjectId, session?: ClientSession) {\n    const res = await this.db.collection<GroupMember>('GroupMember').deleteMany(\n      {\n        groupId,\n      },\n      { session },\n    )\n    return res\n  }\n\n  async leaveGroup(groupId: ObjectId, uid: ObjectId) {\n    const res = await this.db\n      .collection<GroupMember>('GroupMember')\n      .deleteOne({ groupId, uid })\n\n    return res\n  }\n}\n"
  },
  {
    "path": "server/src/group/group-role.decorator.ts",
    "content": "import { SetMetadata } from '@nestjs/common'\n\nexport const GroupRoles = (...roles: string[]) =>\n  SetMetadata('group-roles', roles)\n"
  },
  {
    "path": "server/src/group/group.controller.ts",
    "content": "import {\n  Body,\n  Controller,\n  Delete,\n  Get,\n  HttpException,\n  HttpStatus,\n  Param,\n  Patch,\n  Post,\n  UseGuards,\n} from '@nestjs/common'\nimport { GroupService } from './group.service'\nimport { User } from 'src/user/entities/user'\nimport { InjectApplication, InjectGroup, InjectUser } from 'src/utils/decorator'\nimport { CreateGroupDto } from './dto/create-group.dto'\nimport { ObjectId } from 'mongodb'\nimport {\n  ApiResponseArray,\n  ApiResponseObject,\n  ResponseUtil,\n} from 'src/utils/response'\nimport { UpdateGroupDto } from './dto/update-group.dto'\nimport { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { Group, GroupWithRole } from './entities/group'\nimport { GroupRole } from './entities/group-member'\nimport { GroupAuthGuard } from './group-auth.guard'\nimport { GroupRoles } from './group-role.decorator'\nimport { GroupInviteService } from './group-invite/group-invite.service'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\nimport { ApplicationWithRelations } from 'src/application/entities/application'\nimport { GetGroupInviteCodeDetailDto } from './dto/get-group-invite-code-detail.dto'\n\n@ApiTags('Group')\n@ApiBearerAuth('Authorization')\n@Controller('group')\nexport class GroupController {\n  constructor(\n    private readonly groupService: GroupService,\n    private readonly inviteService: GroupInviteService,\n  ) {}\n\n  @ApiOperation({ summary: 'Find internal group of the application' })\n  @ApiResponseObject(Group)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get('application/:appid/group')\n  async findGroupByAppId(\n    @Param('appid') appid: string,\n    @InjectApplication() app: ApplicationWithRelations,\n  ) {\n    const group = await this.groupService.findGroupByAppid(appid)\n    if (!group) {\n      const group = await this.groupService.create(appid, app.createdBy, appid)\n      return ResponseUtil.ok(group)\n    }\n    return ResponseUtil.ok(group)\n  }\n\n  @ApiOperation({ summary: 'Get group by invite code' })\n  @ApiResponseObject(GetGroupInviteCodeDetailDto)\n  @Get('invite/code/:code/group')\n  async findGroupByInviteCode(@Param('code') code: string) {\n    const inviteCode = await this.inviteService.findOneByCodeDetail(code)\n    if (!inviteCode) {\n      throw new HttpException('invite code not found', HttpStatus.NOT_FOUND)\n    }\n    return ResponseUtil.ok(inviteCode)\n  }\n\n  @ApiOperation({ summary: 'Get group list of the user' })\n  @ApiResponseArray(Group)\n  @UseGuards(JwtAuthGuard)\n  @Get()\n  async findAll(@InjectUser() user: User) {\n    const res = await this.groupService.findAll(user._id)\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Create group for the user' })\n  @ApiResponseObject(Group)\n  @UseGuards(JwtAuthGuard)\n  @Post()\n  async create(@Body() dto: CreateGroupDto, @InjectUser() user: User) {\n    const count = await this.groupService.countGroups(user._id)\n    if (count > 20) {\n      return ResponseUtil.error('group count limit exceeded')\n    }\n    const res = await this.groupService.create(dto.name, user._id)\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Delete a group' })\n  @ApiResponseObject(Group)\n  @GroupRoles(GroupRole.Owner)\n  @UseGuards(JwtAuthGuard, GroupAuthGuard)\n  @Delete(':groupId')\n  async delete(\n    @Param('groupId') groupId: string,\n    @InjectGroup() group: GroupWithRole,\n  ) {\n    if (group.appid) {\n      return ResponseUtil.error('cannot delete the internal group')\n    }\n\n    const res = await this.groupService.delete(new ObjectId(groupId))\n    if (!res) {\n      return ResponseUtil.error('failed to delete group')\n    }\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Get detail of a group' })\n  @ApiResponseObject(Group)\n  @UseGuards(JwtAuthGuard, GroupAuthGuard)\n  @Get(':groupId')\n  async findOne(@Param('groupId') groupId: string) {\n    const res = await this.groupService.findOne(new ObjectId(groupId))\n    return ResponseUtil.ok(res)\n  }\n\n  @ApiOperation({ summary: 'Update group' })\n  @ApiResponseObject(Group)\n  @GroupRoles(GroupRole.Admin)\n  @UseGuards(JwtAuthGuard, GroupAuthGuard)\n  @Patch(':groupId')\n  async updateGroup(\n    @Param('groupId') groupId: string,\n    @Body() dto: UpdateGroupDto,\n  ) {\n    const res = await this.groupService.update(new ObjectId(groupId), {\n      name: dto.name,\n    })\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/group/group.module.ts",
    "content": "import { Global, Module } from '@nestjs/common'\nimport { GroupController } from './group.controller'\nimport { GroupInviteController } from './group-invite/group-invite.controller'\nimport { GroupMemberController } from './group-member/group-member.controller'\nimport { GroupService } from './group.service'\nimport { GroupInviteService } from './group-invite/group-invite.service'\nimport { ApplicationService } from 'src/application/application.service'\nimport { GroupMemberService } from './group-member/group-member.service'\nimport { GroupApplicationService } from './group-application/group-application.service'\n\n@Global()\n@Module({\n  controllers: [GroupController, GroupInviteController, GroupMemberController],\n  providers: [\n    GroupService,\n    GroupInviteService,\n    GroupMemberService,\n    GroupApplicationService,\n    ApplicationService,\n  ],\n  exports: [\n    GroupService,\n    GroupMemberService,\n    GroupInviteService,\n    GroupApplicationService,\n  ],\n})\nexport class GroupModule {}\n"
  },
  {
    "path": "server/src/group/group.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\n\nimport { SystemDatabase } from 'src/system-database'\nimport { Group } from './entities/group'\nimport { ClientSession, ObjectId } from 'mongodb'\nimport { GroupMemberService } from './group-member/group-member.service'\nimport { GroupMember, GroupRole } from './entities/group-member'\nimport { GroupApplication } from './entities/group-application'\nimport { GroupInviteService } from './group-invite/group-invite.service'\nimport { GroupApplicationService } from './group-application/group-application.service'\n\n@Injectable()\nexport class GroupService {\n  private readonly logger = new Logger(GroupService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(\n    private readonly memberService: GroupMemberService,\n    private readonly inviteService: GroupInviteService,\n    private readonly groupApplicationService: GroupApplicationService,\n  ) {}\n\n  async findGroupByAppid(appid: string) {\n    const res = await this.db.collection<Group>('Group').findOne({ appid })\n    return res\n  }\n\n  async findAll(uid: ObjectId) {\n    const res = await this.db\n      .collection<GroupMember>('GroupMember')\n      .aggregate()\n      .match({ uid })\n      .lookup({\n        from: 'Group',\n        foreignField: '_id',\n        localField: 'groupId',\n        pipeline: [\n          {\n            $match: {\n              appid: null,\n            },\n          },\n        ],\n        as: 'group',\n      })\n      .unwind('$group')\n      .lookup({\n        from: 'GroupMember',\n        foreignField: 'groupId',\n        localField: 'groupId',\n        pipeline: [\n          {\n            $project: {\n              _id: 0,\n              role: 1,\n              uid: 1,\n            },\n          },\n        ],\n        as: 'members',\n      })\n      .project({\n        _id: '$group._id',\n        name: '$group.name',\n        createdAt: '$group.createdAt',\n        updatedAt: '$group.updatedAt',\n        members: '$members',\n      })\n      .toArray()\n    return res\n  }\n\n  async countGroups(uid: ObjectId) {\n    const count = await this.db\n      .collection<Group>('Group')\n      .countDocuments({ createdBy: uid, appid: { $exists: false } })\n\n    return count\n  }\n\n  async findGroupsByAppidAndUid(appid: string, uid: ObjectId) {\n    const res = await this.db\n      .collection<GroupApplication>('GroupApplication')\n      .aggregate()\n      .match({ appid })\n      .lookup({\n        from: 'Group',\n        localField: 'groupId',\n        foreignField: '_id',\n        as: 'group',\n      })\n      .unwind('$group')\n      .lookup({\n        from: 'GroupMember',\n        localField: 'groupId',\n        foreignField: 'groupId',\n        pipeline: [\n          {\n            $match: {\n              uid,\n            },\n          },\n        ],\n        as: 'member',\n      })\n      .unwind('$member')\n      .project({\n        _id: '$group._id',\n        name: '$group.name',\n        createdAt: '$group.createdAt',\n        updatedAt: '$group.updatedAt',\n        role: '$member.role',\n      })\n      .toArray()\n\n    return res\n  }\n\n  async update(groupId: ObjectId, dto: Partial<Group>) {\n    const res = await this.db.collection<Group>('Group').findOneAndUpdate(\n      { _id: groupId },\n      {\n        $set: {\n          ...dto,\n          updatedAt: new Date(),\n        },\n      },\n      { returnDocument: 'after' },\n    )\n    return res.value\n  }\n\n  async findOne(groupId: ObjectId, session?: ClientSession) {\n    const res = await this.db\n      .collection<Group>('Group')\n      .findOne({ _id: groupId }, { session })\n    return res\n  }\n\n  async findOneWithRole(groupId: ObjectId, uid: ObjectId) {\n    const res = await this.db\n      .collection<GroupMember>('GroupMember')\n      .aggregate()\n      .match({ groupId, uid })\n      .lookup({\n        from: 'Group',\n        localField: 'groupId',\n        foreignField: '_id',\n        as: 'group',\n      })\n      .project({\n        _id: '$group._id',\n        name: '$group.name',\n        createdAt: '$group.createdAt',\n        updatedAt: '$group.updatedAt',\n        role: '$role',\n      })\n      .next()\n    return res\n  }\n\n  async create(name: string, createdBy: ObjectId, appid?: string) {\n    const session = SystemDatabase.client.startSession()\n    try {\n      let group: Group\n      await session.withTransaction(async () => {\n        const res = await this.db.collection<Group>('Group').insertOne(\n          {\n            name,\n            appid,\n            createdBy: createdBy,\n            createdAt: new Date(),\n            updatedAt: new Date(),\n          },\n          {\n            session,\n          },\n        )\n\n        await this.memberService.addOne(\n          res.insertedId,\n          createdBy,\n          GroupRole.Owner,\n          session,\n        )\n\n        await this.groupApplicationService.append(\n          res.insertedId,\n          appid,\n          session,\n        )\n\n        group = await this.findOne(res.insertedId, session)\n      })\n\n      return group\n    } catch (err) {\n      this.logger.error('create group error', err)\n      throw err\n    } finally {\n      await session.endSession()\n    }\n  }\n\n  async delete(groupId: ObjectId, session?: ClientSession) {\n    let needEndSession = false\n    if (!session) {\n      session = SystemDatabase.client.startSession()\n      needEndSession = true\n    }\n    const group = await this.findOne(groupId, session)\n\n    try {\n      session.startTransaction()\n      // delete group\n      await this.db\n        .collection<Group>('Group')\n        .deleteOne({ _id: groupId }, { session })\n\n      // delete group members\n      await this.memberService.removeAll(groupId, session)\n      await this.inviteService.deleteManyInviteCode(groupId, session)\n      await this.groupApplicationService.removeAll(groupId, session)\n\n      await session.commitTransaction()\n\n      return group\n    } catch (err) {\n      this.logger.error(`delete group ${groupId} error`, err)\n      await session.abortTransaction()\n      throw err\n    } finally {\n      if (needEndSession) {\n        await session.endSession()\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/i18n/en/function.json",
    "content": "{\n  \"create\": {\n    \"nameExist\": \"function {name} is already existed\",\n    \"maxCount\": \"function count limit is {max}\",\n    \"error\": \"create function error\"\n  },\n  \"get\": {},\n  \"update\": {\n    \"error\": \"update function error\"\n  },\n  \"delete\": {\n    \"error\": \"delete function error\"\n  },\n  \"compile\": {\n    \"codeRequired\": \"code is required\"\n  },\n  \"common\": {\n    \"notFound\": \"function {name} is not found\"\n  }\n}\n"
  },
  {
    "path": "server/src/i18n/en/notification.json",
    "content": "{\n  \"InsufficientBalance\": {\n    \"title\": \"Laf account is in arrears\",\n    \"content\": \"Your account is in arrears, the app {appid} will stop running, please recharge your account promptly!\"\n  }\n}"
  },
  {
    "path": "server/src/i18n/en/subscription.json",
    "content": "{}\n"
  },
  {
    "path": "server/src/i18n/zh/function.json",
    "content": "{\n  \"create\": {\n    \"nameExist\": \"函数 {name} 已存在\",\n    \"maxCount\": \"达到函数最大数量 {max}\",\n    \"error\": \"创建函数失败\"\n  },\n  \"get\": {},\n  \"update\": {\n    \"error\": \"更新函数失败\"\n  },\n  \"delete\": {\n    \"error\": \"删除函数失败\"\n  },\n  \"compile\": {\n    \"codeRequired\": \"函数代码不能为空\"\n  },\n  \"common\": {\n    \"notFound\": \"函数 {name} 不存在\"\n  }\n}\n"
  },
  {
    "path": "server/src/i18n/zh/notification.json",
    "content": "{\n  \"InsufficientBalance\": {\n    \"title\": \"laf 账户欠费\",\n    \"content\": \"你的账户已欠费，应用 {appid} 将停止运行，请及时充值\"\n  }\n}"
  },
  {
    "path": "server/src/i18n/zh/subscription.json",
    "content": "{}\n"
  },
  {
    "path": "server/src/i18n/zh-CN/function.json",
    "content": "{\n  \"create\": {\n    \"nameExist\": \"函数 {name} 已存在\",\n    \"maxCount\": \"达到函数最大数量 {max}\",\n    \"error\": \"创建函数失败\"\n  },\n  \"get\": {},\n  \"update\": {\n    \"error\": \"更新函数失败\"\n  },\n  \"delete\": {\n    \"error\": \"删除函数失败\"\n  },\n  \"compile\": {\n    \"codeRequired\": \"函数代码不能为空\"\n  },\n  \"common\": {\n    \"notFound\": \"函数 {name} 不存在\"\n  }\n}\n"
  },
  {
    "path": "server/src/i18n/zh-CN/notification.json",
    "content": "{\n  \"InsufficientBalance\": {\n    \"title\": \"laf 账户欠费\",\n    \"content\": \"你的账户已欠费，应用 {appid} 将停止运行，请及时充值\"\n  }\n}"
  },
  {
    "path": "server/src/i18n/zh-CN/subscription.json",
    "content": "{}\n"
  },
  {
    "path": "server/src/initializer/deploy-manifest/database.yaml",
    "content": "apiVersion: apps.kubeblocks.io/v1alpha1\nkind: Cluster\nmetadata:\n  finalizers:\n    - cluster.kubeblocks.io/finalizer\n  labels:\n    kb.io/database: mongodb-8.0.4\n    app.kubernetes.io/instance: <%- name %>\n    helm.sh/chart: mongodb-cluster-0.9.1\n  annotations: {}\n  name: <%- name %>\n  namespace: laf-system\nspec:\n  affinity:\n    podAntiAffinity: Preferred\n    tenancy: SharedNode\n    topologyKeys:\n      - kubernetes.io/hostname\n  componentSpecs:\n    - componentDef: mongodb\n      monitor: true\n      name: mongodb\n      replicas: <%- replicas %>\n      resources:\n        limits:\n          cpu: <%- limitCPU %>m\n          memory: <%- limitMemory %>Mi\n        requests:\n          cpu: <%- requestCPU %>m\n          memory: <%- requestMemory %>Mi\n      serviceAccountName: laf-mongodb-<%- name %>\n      serviceVersion: 8.0.4\n      volumeClaimTemplates:\n        - name: data\n          spec:\n            accessModes:\n              - ReadWriteOnce\n            resources:\n              requests:\n                storage: <%- capacity %>Gi\n  terminationPolicy: Delete\n"
  },
  {
    "path": "server/src/initializer/deploy-manifest/databaseOpsRequestHorizontalScaling.yaml",
    "content": "apiVersion: apps.kubeblocks.io/v1alpha1\nkind: OpsRequest\nmetadata:\n  labels:\n    app.kubernetes.io/instance: <%- clusterName %>\n    ops.kubeblocks.io/ops-type: HorizontalScaling\n    sealos-db-provider-cr: <%- clusterName %>\n  name: <%- name %>\n  namespace: laf-system\nspec:\n  clusterRef: <%- clusterName %>\n  horizontalScaling:\n    - componentName: mongodb\n      replicas: <%- replicas %>\n  type: HorizontalScaling\n"
  },
  {
    "path": "server/src/initializer/deploy-manifest/databaseOpsRequestRestart.yaml",
    "content": "apiVersion: apps.kubeblocks.io/v1alpha1\nkind: OpsRequest\nmetadata:\n  name: <%- name %>\n  namespace: laf-system\nspec:\n  clusterRef: <%- clusterName %>\n  type: Restart\n  restart:\n    - componentName: mongodb\n"
  },
  {
    "path": "server/src/initializer/deploy-manifest/databaseOpsRequestStart.yaml",
    "content": "apiVersion: apps.kubeblocks.io/v1alpha1\nkind: OpsRequest\nmetadata:\n  name: <%- name %>\n  namespace: laf-system\nspec:\n  clusterRef: <%- clusterName %>\n  type: Start\n"
  },
  {
    "path": "server/src/initializer/deploy-manifest/databaseOpsRequestStop.yaml",
    "content": "apiVersion: apps.kubeblocks.io/v1alpha1\nkind: OpsRequest\nmetadata:\n  name: <%- name %>\n  namespace: laf-system\nspec:\n  clusterRef: <%- clusterName %>\n  type: Stop\n"
  },
  {
    "path": "server/src/initializer/deploy-manifest/databaseOpsRequestVerticalScaling.yaml",
    "content": "apiVersion: apps.kubeblocks.io/v1alpha1\nkind: OpsRequest\nmetadata:\n  labels:\n    app.kubernetes.io/instance: <%- clusterName %>\n    ops.kubeblocks.io/ops-type: VerticalScaling\n    sealos-db-provider-cr: <%- clusterName %>\n  name: <%- name %>\n  namespace: laf-system\nspec:\n  clusterRef: <%- clusterName %>\n  type: VerticalScaling\n  verticalScaling:\n    - componentName: mongodb\n      limits:\n        cpu: <%- limitCPU %>m\n        memory: <%- limitMemory %>Mi\n      requests:\n        cpu: <%- requestCPU %>m\n        memory: <%- requestMemory %>Mi\n"
  },
  {
    "path": "server/src/initializer/deploy-manifest/databaseOpsRequestVolumeExpansion.yaml",
    "content": "apiVersion: apps.kubeblocks.io/v1alpha1\nkind: OpsRequest\nmetadata:\n  labels:\n    app.kubernetes.io/instance: <%- clusterName %>\n    ops.kubeblocks.io/ops-type: VolumeExpansion\n    sealos-db-provider-cr: <%- clusterName %>\n  name: <%- name %>\n  namespace: laf-system\nspec:\n  clusterRef: <%- clusterName %>\n  type: VolumeExpansion\n  volumeExpansion:\n    - componentName: mongodb\n      volumeClaimTemplates:\n        - name: data\n          storage: <%- capacity %>Gi\n"
  },
  {
    "path": "server/src/initializer/initializer.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { RegionService } from 'src/region/region.service'\nimport { MinioService } from 'src/storage/minio/minio.service'\nimport { InitializerService } from './initializer.service'\n\n@Module({\n  providers: [InitializerService, MinioService, RegionService],\n})\nexport class InitializerModule {}\n"
  },
  {
    "path": "server/src/initializer/initializer.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { ServerConfig } from '../constants'\nimport { SystemDatabase } from 'src/system-database'\nimport { ApplicationNamespaceMode, Region } from 'src/region/entities/region'\nimport { Runtime } from 'src/application/entities/runtime'\nimport {\n  ResourceOption,\n  ResourceBundle,\n  ResourceType,\n} from 'src/billing/entities/resource'\nimport {\n  AuthProvider,\n  AuthProviderState,\n} from 'src/authentication/entities/auth-provider'\nimport { Setting, SettingKey } from 'src/setting/entities/setting'\nimport * as path from 'path'\nimport { readFileSync, readdirSync } from 'node:fs'\n\n@Injectable()\nexport class InitializerService {\n  private readonly logger = new Logger(InitializerService.name)\n  private readonly db = SystemDatabase.db\n\n  async init() {\n    await this.createDefaultRegion()\n    await this.createDefaultRuntime()\n    await this.createDefaultAuthProvider()\n    await this.createDefaultResourceOptions()\n    await this.createDefaultResourceBundles()\n    await this.createDefaultSettings()\n    await this.createNecessarySettings()\n  }\n\n  async createDefaultRegion() {\n    // check if exists\n    const existed = await this.db.collection<Region>('Region').countDocuments()\n    if (existed) {\n      this.logger.debug('region already exists')\n      return\n    }\n\n    // create default region\n    let mode = ApplicationNamespaceMode.AppId\n    if (ServerConfig.DEFAULT_REGION_NAMESPACE) {\n      mode = ApplicationNamespaceMode.Fixed\n    }\n\n    const files = readdirSync(path.resolve(__dirname, './deploy-manifest'))\n    const manifest = files.reduce((prev, file) => {\n      const key = file.slice(0, -path.extname(file).length)\n      const value = readFileSync(\n        path.resolve(__dirname, './deploy-manifest', file),\n        'utf8',\n      )\n      prev[key] = value\n      return prev\n    }, {})\n\n    const res = await this.db.collection<Region>('Region').insertOne({\n      name: 'default',\n      displayName: 'Default',\n      namespaceConf: {\n        mode: mode,\n        prefix: '',\n        fixed: ServerConfig.DEFAULT_REGION_NAMESPACE,\n      },\n      clusterConf: {\n        driver: 'kubernetes',\n        kubeconfig: null,\n        npmInstallFlags: '',\n        runtimeAffinity: {},\n      },\n      bundleConf: {\n        cpuRequestLimitRatio: 0.1,\n        memoryRequestLimitRatio: 0.5,\n      },\n      databaseConf: {\n        driver: 'mongodb',\n        connectionUri: ServerConfig.DEFAULT_REGION_DATABASE_URL,\n        controlConnectionUri: ServerConfig.DEFAULT_REGION_DATABASE_URL,\n        dedicatedDatabase: {\n          enabled: false,\n        },\n      },\n      storageConf: {\n        driver: 'minio',\n        domain: ServerConfig.DEFAULT_REGION_MINIO_DOMAIN,\n        externalEndpoint: ServerConfig.DEFAULT_REGION_MINIO_EXTERNAL_ENDPOINT,\n        internalEndpoint: ServerConfig.DEFAULT_REGION_MINIO_INTERNAL_ENDPOINT,\n        accessKey: ServerConfig.DEFAULT_REGION_MINIO_ROOT_ACCESS_KEY,\n        secretKey: ServerConfig.DEFAULT_REGION_MINIO_ROOT_SECRET_KEY,\n        controlEndpoint: ServerConfig.DEFAULT_REGION_MINIO_INTERNAL_ENDPOINT,\n      },\n      gatewayConf: {\n        driver: 'nginx',\n        runtimeDomain: ServerConfig.DEFAULT_REGION_RUNTIME_DOMAIN,\n        websiteDomain: ServerConfig.DEFAULT_REGION_WEBSITE_DOMAIN,\n        port: 80,\n        tls: {\n          enabled: ServerConfig.DEFAULT_REGION_TLS_ENABLED,\n          issuerRef: { name: 'laf-issuer', kind: 'Issuer' },\n          wildcardCertificateSecretName:\n            ServerConfig.DEFAULT_REGION_TLS_WILDCARD_CERTIFICATE_SECRET_NAME,\n        },\n      },\n      logServerConf: {\n        apiUrl: '',\n        secret: '',\n        databaseUrl: '',\n      },\n      prometheusConf: {\n        apiUrl: ServerConfig.DEFAULT_REGION_PROMETHEUS_URL,\n      },\n      deployManifest: manifest,\n      updatedAt: new Date(),\n      createdAt: new Date(),\n      state: 'Active',\n    })\n\n    this.logger.verbose(`Created default region`)\n    return res\n  }\n\n  async createDefaultRuntime() {\n    // check if exists\n    const existed = await this.db\n      .collection<Runtime>('Runtime')\n      .countDocuments()\n    if (existed) {\n      this.logger.debug('default runtime already exists')\n      return\n    }\n\n    // create default runtime\n    const res = await this.db.collection<Runtime>('Runtime').insertOne({\n      name: 'node',\n      type: 'node:laf',\n      image: {\n        main: ServerConfig.DEFAULT_RUNTIME_IMAGE.image.main,\n        init: ServerConfig.DEFAULT_RUNTIME_IMAGE.image.init,\n      },\n      version: ServerConfig.DEFAULT_RUNTIME_IMAGE.version,\n      latest: true,\n      state: 'Active',\n    })\n\n    this.logger.verbose('Created default runtime')\n    return res\n  }\n\n  async createDefaultAuthProvider() {\n    // check if exists\n    const existed = await this.db\n      .collection<AuthProvider>('AuthProvider')\n      .countDocuments()\n    if (existed) {\n      this.logger.debug('default auth provider already exists')\n      return\n    }\n\n    // create default auth provider - user-password\n    await this.db.collection<AuthProvider>('AuthProvider').insertOne({\n      name: 'user-password',\n      bind: {\n        password: 'optional',\n        phone: 'optional',\n        email: 'optional',\n      },\n      register: true,\n      default: true,\n      state: AuthProviderState.Enabled,\n      config: { usernameField: 'username', passwordField: 'password' },\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    })\n\n    // create auth provider - phone code\n    await this.db.collection<AuthProvider>('AuthProvider').insertOne({\n      name: 'phone',\n      bind: {\n        password: 'optional',\n        phone: 'optional',\n        email: 'optional',\n      },\n      register: true,\n      default: false,\n      state: AuthProviderState.Disabled,\n      config: {\n        alisms: {},\n      },\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    })\n\n    this.logger.verbose('Created default auth providers')\n  }\n\n  async createDefaultResourceOptions() {\n    // check if exists\n    const existed = await this.db\n      .collection<ResourceOption>('ResourceOption')\n      .countDocuments()\n    if (existed) {\n      this.logger.debug('default resource options already exists')\n      return\n    }\n\n    // get default region\n    const region = await this.db.collection<Region>('Region').findOne({})\n\n    // create default resource options\n    await this.db.collection<ResourceOption>('ResourceOption').insertMany([\n      {\n        regionId: region._id,\n        type: ResourceType.CPU,\n        price: 0.0,\n        specs: [\n          { label: '0.2 Core', value: 200 },\n          { label: '0.5 Core', value: 500 },\n          { label: '1 Core', value: 1000 },\n          { label: '2 Core', value: 2000 },\n        ],\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n      {\n        regionId: region._id,\n        type: ResourceType.Memory,\n        price: 0.0,\n        specs: [\n          { label: '256 MB', value: 256 },\n          { label: '512 MB', value: 512 },\n          { label: '1 GB', value: 1024 },\n          { label: '2 GB', value: 2048 },\n          { label: '4 GB', value: 4096 },\n        ],\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n      {\n        regionId: region._id,\n        type: ResourceType.DatabaseCapacity,\n        price: 0.0,\n        specs: [\n          { label: '1 GB', value: 1024 },\n          { label: '4 GB', value: 4096 },\n          { label: '16 GB', value: 16384 },\n          { label: '64 GB', value: 65536 },\n          { label: '256 GB', value: 262144 },\n        ],\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n      {\n        regionId: region._id,\n        type: ResourceType.StorageCapacity,\n        price: 0.0,\n        specs: [\n          { label: '1 GB', value: 1024 },\n          { label: '4 GB', value: 4096 },\n          { label: '16 GB', value: 16384 },\n          { label: '64 GB', value: 65536 },\n          { label: '256 GB', value: 262144 },\n          { label: '1 TB', value: 1048576 },\n        ],\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n      {\n        regionId: region._id,\n        type: ResourceType.NetworkTraffic,\n        price: 0.8,\n        specs: [],\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n      {\n        regionId: region._id,\n        type: ResourceType.DedicatedDatabaseCPU,\n        price: 0.0,\n        specs: [\n          { label: '0.2 Core', value: 200 },\n          { label: '0.5 Core', value: 500 },\n          { label: '1 Core', value: 1000 },\n          { label: '2 Core', value: 2000 },\n        ],\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n      {\n        regionId: region._id,\n        type: ResourceType.DedicatedDatabaseMemory,\n        price: 0.0,\n        specs: [\n          { label: '256 MB', value: 256 },\n          { label: '512 MB', value: 512 },\n          { label: '1 GB', value: 1024 },\n          { label: '2 GB', value: 2048 },\n          { label: '4 GB', value: 4096 },\n        ],\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n      {\n        regionId: region._id,\n        type: ResourceType.DedicatedDatabaseCapacity,\n        price: 0.0,\n        specs: [\n          { label: '1 GB', value: 1024 },\n          { label: '4 GB', value: 4096 },\n          { label: '16 GB', value: 16384 },\n          { label: '64 GB', value: 65536 },\n          { label: '256 GB', value: 262144 },\n        ],\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n      {\n        regionId: region._id,\n        type: ResourceType.DedicatedDatabaseReplicas,\n        price: 0.0,\n        specs: [\n          { label: '1', value: 1 },\n          { label: '3', value: 3 },\n          { label: '5', value: 5 },\n          { label: '7', value: 7 },\n          { label: '9', value: 9 },\n        ],\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n    ])\n\n    this.logger.verbose('Created default resource options')\n  }\n\n  async createDefaultResourceBundles() {\n    // check if exists\n    const existed = await this.db\n      .collection<ResourceBundle>('ResourceBundle')\n      .countDocuments()\n\n    if (existed) {\n      this.logger.debug('default resource templates already exists')\n      return\n    }\n\n    // get default region\n    const region = await this.db.collection<Region>('Region').findOne({})\n\n    // create default resource templates\n    await this.db.collection<ResourceBundle>('ResourceBundle').insertMany([\n      {\n        regionId: region._id,\n        name: 'trial',\n        displayName: 'Trial',\n        spec: {\n          [ResourceType.CPU]: { value: 200 },\n          [ResourceType.Memory]: { value: 256 },\n          [ResourceType.DatabaseCapacity]: { value: 1024 },\n          [ResourceType.StorageCapacity]: { value: 1024 },\n          [ResourceType.NetworkTraffic]: { value: 0 },\n          [ResourceType.DedicatedDatabaseCPU]: { value: 200 },\n          [ResourceType.DedicatedDatabaseMemory]: { value: 256 },\n          [ResourceType.DedicatedDatabaseCapacity]: { value: 1024 },\n          [ResourceType.DedicatedDatabaseReplicas]: { value: 1 },\n        },\n        enableFreeTier: false,\n        limitCountOfFreeTierPerUser: 20,\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n      {\n        regionId: region._id,\n        name: 'lite',\n        displayName: 'Lite',\n        spec: {\n          [ResourceType.CPU]: { value: 500 },\n          [ResourceType.Memory]: { value: 512 },\n          [ResourceType.DatabaseCapacity]: { value: 4096 },\n          [ResourceType.StorageCapacity]: { value: 4096 },\n          [ResourceType.NetworkTraffic]: { value: 0 },\n          [ResourceType.DedicatedDatabaseCPU]: { value: 500 },\n          [ResourceType.DedicatedDatabaseMemory]: { value: 512 },\n          [ResourceType.DedicatedDatabaseCapacity]: { value: 4096 },\n          [ResourceType.DedicatedDatabaseReplicas]: { value: 3 },\n        },\n        enableFreeTier: false,\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n      {\n        regionId: region._id,\n        name: 'standard',\n        displayName: 'Standard',\n        spec: {\n          [ResourceType.CPU]: { value: 1000 },\n          [ResourceType.Memory]: { value: 2048 },\n          [ResourceType.DatabaseCapacity]: { value: 16384 },\n          [ResourceType.StorageCapacity]: { value: 65536 },\n          [ResourceType.NetworkTraffic]: { value: 0 },\n          [ResourceType.DedicatedDatabaseCPU]: { value: 1000 },\n          [ResourceType.DedicatedDatabaseMemory]: { value: 2048 },\n          [ResourceType.DedicatedDatabaseCapacity]: { value: 16384 },\n          [ResourceType.DedicatedDatabaseReplicas]: { value: 5 },\n        },\n        enableFreeTier: false,\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n      {\n        regionId: region._id,\n        name: 'pro',\n        displayName: 'Pro',\n        spec: {\n          [ResourceType.CPU]: { value: 2000 },\n          [ResourceType.Memory]: { value: 4096 },\n          [ResourceType.DatabaseCapacity]: { value: 65536 },\n          [ResourceType.StorageCapacity]: { value: 262144 },\n          [ResourceType.NetworkTraffic]: { value: 0 },\n          [ResourceType.DedicatedDatabaseCPU]: { value: 2000 },\n          [ResourceType.DedicatedDatabaseMemory]: { value: 4096 },\n          [ResourceType.DedicatedDatabaseCapacity]: { value: 65536 },\n          [ResourceType.DedicatedDatabaseReplicas]: { value: 7 },\n        },\n        enableFreeTier: false,\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      },\n    ])\n\n    this.logger.verbose('Created default resource templates')\n  }\n\n  // create default settings\n  async createDefaultSettings() {\n    // check if exists\n    const existed = await this.db\n      .collection<Setting>('Setting')\n      .countDocuments()\n\n    if (existed) {\n      this.logger.debug('default settings already exists')\n      return\n    }\n\n    await this.db.collection<Setting>('Setting').insertOne({\n      public: false,\n      key: SettingKey.SignupBonus,\n      value: '0',\n      desc: 'Set up signup bonus',\n    })\n\n    await this.db.collection<Setting>('Setting').insertOne({\n      public: true,\n      key: SettingKey.InvitationProfit,\n      value: '0',\n      desc: 'Set up invitation rebate',\n    })\n\n    await this.db.collection<Setting>('Setting').insertOne({\n      public: true,\n      key: SettingKey.IdVerify,\n      value: 'off', // on | off\n      desc: 'real name authentication',\n      metadata: {\n        message: '',\n        authenticateSite: '',\n      },\n    })\n\n    await this.db.collection<Setting>('Setting').insertMany([\n      {\n        public: true,\n        key: SettingKey.AiPilotUrl,\n        value: 'https://htr4n1.laf.run/laf-gpt',\n        desc: 'ai pilot url',\n      },\n      {\n        public: true,\n        key: SettingKey.LafForumUrl,\n        value: 'https://forum.laf.run',\n        desc: 'laf forum url',\n      },\n      {\n        public: true,\n        key: SettingKey.LafBusinessUrl,\n        value: 'https://www.wenjuan.com/s/I36ZNbl',\n        desc: 'laf business url',\n      },\n      {\n        public: true,\n        key: SettingKey.LafDiscordUrl,\n        value:\n          'https://discord.com/channels/1061659231599738901/1098516786170839050',\n        desc: 'laf discord url',\n      },\n      {\n        public: true,\n        key: SettingKey.LafWeChatUrl,\n        value: 'https://w4mci7-images.oss.laf.run/wechat.png',\n        desc: 'laf wechat url',\n      },\n      {\n        public: true,\n        key: SettingKey.LafStatusUrl,\n        value: 'https://hnpsxzqqtavv.cloud.sealos.cn/status/laf',\n        desc: 'laf status url',\n      },\n      {\n        public: true,\n        key: SettingKey.LafAboutUsUrl,\n        value: 'https://sealos.run/company/',\n        desc: 'laf about us url',\n      },\n      {\n        public: true,\n        key: SettingKey.LafDocUrl,\n        value: 'https://doc.laf.run/zh/',\n        desc: 'laf doc site url',\n      },\n      {\n        public: true,\n        key: SettingKey.EnableWebPromoPage,\n        value: 'true',\n        desc: 'Whether to enable WebPromoPage',\n      },\n      {\n        public: true,\n        key: SettingKey.SealafNotification,\n        value: 'off',\n        desc: 'home page enable sealaf notification',\n        metadata: {\n          message: {\n            zh: '',\n            en: '',\n          },\n          gotoSite: '',\n        },\n      },\n      {\n        public: false,\n        key: SettingKey.AppCreateTimeOut,\n        value: '15',\n        desc: 'timeout for application creation in minutes',\n      },\n    ])\n\n    this.logger.verbose('Created default settings')\n  }\n\n  async createNecessarySettings() {\n    const find = await this.db\n      .collection<Setting>('Setting')\n      .findOne({ key: SettingKey.DefaultUserQuota })\n\n    if (!find) {\n      await this.db.collection<Setting>('Setting').insertOne({\n        public: false,\n        key: SettingKey.DefaultUserQuota,\n        value: 'default',\n        desc: 'resource limit of user',\n        metadata: {\n          limitOfCPU: 20000,\n          limitOfMemory: 20480,\n          limitCountOfApplication: 20,\n          limitOfDatabaseSyncCount: {\n            countLimit: 10,\n            timePeriodInSeconds: 86400,\n          },\n        },\n      })\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/instance/instance-task.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport { isConditionTrue } from '../utils/getter'\nimport { InstanceService } from './instance.service'\nimport { ServerConfig, TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport {\n  Application,\n  ApplicationPhase,\n  ApplicationState,\n} from 'src/application/entities/application'\nimport { DomainState, RuntimeDomain } from 'src/gateway/entities/runtime-domain'\nimport { BucketDomain } from 'src/gateway/entities/bucket-domain'\nimport { WebsiteHosting } from 'src/website/entities/website'\nimport { CronTrigger, TriggerState } from 'src/trigger/entities/cron-trigger'\nimport { DedicatedDatabaseService } from 'src/database/dedicated-database/dedicated-database.service'\nimport {\n  DedicatedDatabase,\n  DedicatedDatabasePhase,\n  DedicatedDatabaseState,\n} from 'src/database/entities/dedicated-database'\nimport { Setting, SettingKey } from 'src/setting/entities/setting'\n\n@Injectable()\nexport class InstanceTaskService {\n  readonly lockTimeout = 15 // in second\n  private readonly logger = new Logger(InstanceTaskService.name)\n\n  constructor(\n    private readonly instanceService: InstanceService,\n    private readonly dedicatedDatabaseService: DedicatedDatabaseService,\n  ) {}\n\n  @Cron(CronExpression.EVERY_SECOND)\n  async tick() {\n    if (ServerConfig.DISABLED_INSTANCE_TASK) {\n      return\n    }\n\n    // Phase `Created` | `Stopped` ->  `Starting`\n    this.handleRunningState().catch((err) => {\n      this.logger.error('handleRunningState error', err)\n      this.logger.debug(err?.response?.toJSON() || JSON.stringify(err))\n    })\n\n    // Phase `Starting` -> `Started`\n    this.handleStartingPhase().catch((err) => {\n      this.logger.error('handleStartingPhase error', err)\n      this.logger.debug(err?.response?.toJSON() || JSON.stringify(err))\n    })\n\n    // Phase `Started` -> `Stopping`\n    this.handleStoppedState().catch((err) => {\n      this.logger.error('handleStoppedState error', err)\n      this.logger.debug(err?.response?.toJSON() || JSON.stringify(err))\n    })\n\n    // Phase `Stopping` -> `Stopped`\n    this.handleStoppingPhase().catch((err) => {\n      this.logger.error('handleStoppingPhase error', err)\n      this.logger.debug(err?.response?.toJSON() || JSON.stringify(err))\n    })\n\n    // Phase `Started` -> `Starting`\n    this.handleRestartingState().catch((err) => {\n      this.logger.error('handleRestartingPhase error', err)\n      this.logger.debug(err?.response?.toJSON() || JSON.stringify(err))\n    })\n  }\n\n  /**\n   * State `Running`:\n   * - move phase `Created` or `Stopped` to `Starting`\n   */\n  async handleRunningState() {\n    const db = SystemDatabase.db\n\n    await db.collection<Application>('Application').updateMany(\n      {\n        state: ApplicationState.Running,\n        phase: { $in: [ApplicationPhase.Created, ApplicationPhase.Stopped] },\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: {\n          phase: ApplicationPhase.Starting,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n  }\n\n  /**\n   * Phase `Starting`:\n   * - waiting for instance to be available\n   * - move phase to `Started`\n   */\n  async handleStartingPhase() {\n    const db = SystemDatabase.db\n\n    const appCreateTimeConf = await db.collection<Setting>('Setting').findOne({\n      key: SettingKey.AppCreateTimeOut,\n      public: false,\n    })\n\n    const res = await db\n      .collection<Application>('Application')\n      .findOneAndUpdate(\n        {\n          phase: ApplicationPhase.Starting,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { sort: { lockedAt: 1, updatedAt: 1 }, returnDocument: 'after' },\n      )\n\n    if (!res.value) return\n    const app = res.value\n\n    // if waiting time is more than 5 minutes, stop the application\n    const waitingTime = Date.now() - app.updatedAt.getTime()\n\n    // if waiting time is more than 10 minutes, stop the application\n    if (appCreateTimeConf?.value) {\n      const appCreateTimeOut = parseInt(appCreateTimeConf.value) * 60 * 1000\n\n      if (waitingTime > appCreateTimeOut) {\n        await db.collection<Application>('Application').updateOne(\n          { appid: app.appid },\n          {\n            $set: {\n              state: ApplicationState.Stopped,\n              phase: ApplicationPhase.Stopping,\n              lockedAt: TASK_LOCK_INIT_TIME,\n              updatedAt: new Date(),\n            },\n          },\n        )\n\n        await db\n          .collection<DedicatedDatabase>('DedicatedDatabase')\n          .findOneAndUpdate(\n            {\n              appid: app.appid,\n            },\n            {\n              $set: {\n                state: DedicatedDatabaseState.Stopped,\n                phase: DedicatedDatabasePhase.Stopping,\n              },\n            },\n          )\n\n        this.logger.log(`${app.appid} updated to state Stopped due to timeout`)\n        return\n      }\n    }\n\n    const appid = app.appid\n\n    const ddb = await this.dedicatedDatabaseService.findOne(appid)\n\n    if (ddb) {\n      if (\n        ddb.phase !== DedicatedDatabasePhase.Started ||\n        ddb.state !== DedicatedDatabaseState.Running\n      ) {\n        await this.relock(appid, waitingTime)\n        return\n      }\n    }\n\n    // create instance\n    await this.instanceService.create(app.appid)\n\n    const instance = await this.instanceService.get(appid)\n    const unavailable =\n      instance.deployment?.status?.unavailableReplicas || false\n    if (unavailable) {\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    const available = isConditionTrue(\n      'Available',\n      instance.deployment?.status?.conditions || [],\n    )\n    if (!available) {\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    if (!instance.service) {\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    // active runtime domain\n    await db\n      .collection<RuntimeDomain>('RuntimeDomain')\n      .updateOne(\n        { appid, state: DomainState.Inactive },\n        { $set: { state: DomainState.Active, updatedAt: new Date() } },\n      )\n\n    // active website domain\n    await db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .updateMany(\n        { appid, state: DomainState.Inactive },\n        { $set: { state: DomainState.Active, updatedAt: new Date() } },\n      )\n\n    // active bucket domain\n    await db\n      .collection<BucketDomain>('BucketDomain')\n      .updateMany(\n        { appid, state: DomainState.Inactive },\n        { $set: { state: DomainState.Active, updatedAt: new Date() } },\n      )\n\n    // active triggers if any\n    await db\n      .collection<CronTrigger>('CronTrigger')\n      .updateMany(\n        { appid, state: TriggerState.Inactive },\n        { $set: { state: TriggerState.Active, updatedAt: new Date() } },\n      )\n\n    // if state is `Restarting`, update state to `Running` with phase `Started`\n    let toState = app.state\n    if (app.state === ApplicationState.Restarting) {\n      toState = ApplicationState.Running\n    }\n\n    // update application state\n    await db.collection<Application>('Application').updateOne(\n      { appid, phase: ApplicationPhase.Starting },\n      {\n        $set: {\n          state: toState,\n          phase: ApplicationPhase.Started,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    this.logger.debug(`Application ${app.appid} updated to phase started`)\n  }\n\n  /**\n   * State `Stopped`:\n   * - move phase `Started` to `Stopping`\n   */\n  async handleStoppedState() {\n    const db = SystemDatabase.db\n\n    await db.collection<Application>('Application').updateMany(\n      {\n        state: ApplicationState.Stopped,\n        phase: ApplicationPhase.Started,\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: {\n          lockedAt: TASK_LOCK_INIT_TIME,\n          phase: ApplicationPhase.Stopping,\n          updatedAt: new Date(),\n        },\n      },\n    )\n  }\n\n  /**\n   * Phase `Stopping`:\n   * - waiting for instance to be removed\n   * - move phase `Stopping` to `Stopped`\n   */\n  async handleStoppingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<Application>('Application')\n      .findOneAndUpdate(\n        {\n          phase: ApplicationPhase.Stopping,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { sort: { lockedAt: 1, updatedAt: 1 }, returnDocument: 'after' },\n      )\n\n    if (!res.value) return\n    const app = res.value\n    const appid = app.appid\n\n    const waitingTime = Date.now() - app.updatedAt.getTime()\n\n    // inactive runtime domain\n    await db\n      .collection<RuntimeDomain>('RuntimeDomain')\n      .updateOne(\n        { appid, state: DomainState.Active },\n        { $set: { state: DomainState.Inactive, updatedAt: new Date() } },\n      )\n\n    // inactive website domain\n    await db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .updateMany(\n        { appid, state: DomainState.Active },\n        { $set: { state: DomainState.Inactive, updatedAt: new Date() } },\n      )\n\n    // inactive bucket domain\n    await db\n      .collection<BucketDomain>('BucketDomain')\n      .updateMany(\n        { appid, state: DomainState.Active },\n        { $set: { state: DomainState.Inactive, updatedAt: new Date() } },\n      )\n\n    // inactive triggers if any\n    await db\n      .collection<CronTrigger>('CronTrigger')\n      .updateMany(\n        { appid, state: TriggerState.Active },\n        { $set: { state: TriggerState.Inactive, updatedAt: new Date() } },\n      )\n\n    // check if the instance is removed\n    const instance = await this.instanceService.get(app.appid)\n    if (instance.deployment) {\n      await this.instanceService.remove(app.appid)\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    // check if the service is removed\n    if (instance.service) {\n      await this.instanceService.remove(app.appid)\n      await this.relock(appid, waitingTime)\n      return\n    }\n\n    const ddb = await this.dedicatedDatabaseService.findOne(appid)\n\n    if (ddb) {\n      if (\n        ddb.phase !== DedicatedDatabasePhase.Stopped ||\n        ddb.state !== DedicatedDatabaseState.Stopped\n      ) {\n        await this.relock(appid, waitingTime)\n        return\n      }\n    }\n\n    // update application phase to `Stopped`\n    await db.collection<Application>('Application').updateOne(\n      { appid, phase: ApplicationPhase.Stopping },\n      {\n        $set: {\n          phase: ApplicationPhase.Stopped,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    this.logger.log(`Application ${app.appid} updated to phase Stopped`)\n  }\n\n  /**\n   * State `Restarting`:\n   * - move phase `Started` to `Starting`\n   */\n  async handleRestartingState() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<Application>('Application')\n      .findOneAndUpdate(\n        {\n          state: ApplicationState.Restarting,\n          phase: ApplicationPhase.Started,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { sort: { lockedAt: 1, updatedAt: 1 }, returnDocument: 'after' },\n      )\n\n    if (!res.value) return\n    const app = res.value\n\n    await this.instanceService.restart(app.appid)\n\n    // update application phase to `Starting`\n    await db.collection<Application>('Application').updateOne(\n      {\n        appid: app.appid,\n      },\n      {\n        $set: {\n          phase: ApplicationPhase.Starting,\n          lockedAt: TASK_LOCK_INIT_TIME,\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    this.logger.log(`Application ${app.appid} updated to phase Starting`)\n  }\n\n  /**\n   * Relock application by appid, lockedTime is in milliseconds\n   */\n  async relock(appid: string, lockedTime = 0) {\n    if (lockedTime <= 2 * 60 * 1000) {\n      lockedTime = Math.ceil(lockedTime / 10)\n    }\n\n    if (lockedTime > 2 * 60 * 1000) {\n      lockedTime = this.lockTimeout * 1000\n    }\n\n    const db = SystemDatabase.db\n    const lockedAt = new Date(Date.now() - 1000 * this.lockTimeout + lockedTime)\n    await db\n      .collection<Application>('Application')\n      .updateOne({ appid: appid }, { $set: { lockedAt } })\n  }\n\n  private getHourTime() {\n    const latestTime = new Date()\n    latestTime.setMinutes(0)\n    latestTime.setSeconds(0)\n    latestTime.setMilliseconds(0)\n    latestTime.setHours(latestTime.getHours())\n    return latestTime\n  }\n}\n"
  },
  {
    "path": "server/src/instance/instance.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { InstanceService } from './instance.service'\nimport { InstanceTaskService } from './instance-task.service'\nimport { StorageModule } from '../storage/storage.module'\nimport { DatabaseModule } from '../database/database.module'\nimport { ApplicationModule } from 'src/application/application.module'\nimport { JwtService } from '@nestjs/jwt'\n\n@Module({\n  imports: [StorageModule, DatabaseModule, ApplicationModule],\n  providers: [InstanceService, InstanceTaskService, JwtService],\n})\nexport class InstanceModule {}\n"
  },
  {
    "path": "server/src/instance/instance.service.ts",
    "content": "import {\n  V1Deployment,\n  V1DeploymentSpec,\n  V1ServiceSpec,\n  V2HorizontalPodAutoscaler,\n  V2HorizontalPodAutoscalerSpec,\n} from '@kubernetes/client-node'\nimport { Injectable, Logger } from '@nestjs/common'\nimport { GetApplicationNamespace } from 'src/utils/getter'\nimport { LABEL_KEY_APP_ID, MB, ServerConfig } from '../constants'\nimport { StorageService } from '../storage/storage.service'\nimport { DatabaseService } from 'src/database/database.service'\nimport { ClusterService } from 'src/region/cluster/cluster.service'\nimport { ApplicationWithRelations } from 'src/application/entities/application'\nimport { ApplicationService } from 'src/application/application.service'\nimport * as assert from 'assert'\nimport { CloudBinBucketService } from 'src/storage/cloud-bin-bucket.service'\nimport { DedicatedDatabaseService } from 'src/database/dedicated-database/dedicated-database.service'\n\n@Injectable()\nexport class InstanceService {\n  private readonly logger = new Logger('InstanceService')\n\n  constructor(\n    private readonly cluster: ClusterService,\n    private readonly storageService: StorageService,\n    private readonly databaseService: DatabaseService,\n    private readonly dedicatedDatabaseService: DedicatedDatabaseService,\n    private readonly applicationService: ApplicationService,\n    private readonly cloudbin: CloudBinBucketService,\n  ) {}\n\n  public async create(appid: string) {\n    const app = await this.applicationService.findOneUnsafe(appid)\n    const labels: Record<string, string> = this.getRuntimeLabel(appid)\n\n    // ensure deployment created\n    const res = await this.get(app.appid)\n    if (!res.deployment) {\n      await this.createDeployment(app, labels)\n    }\n\n    // ensure service created\n    if (!res.service) {\n      await this.createService(app, labels)\n    }\n\n    if (!res.hpa) {\n      await this.createHorizontalPodAutoscaler(app, labels)\n    }\n  }\n\n  public async remove(appid: string) {\n    const app = await this.applicationService.findOneUnsafe(appid)\n    const region = app.region\n    const { deployment, service, hpa } = await this.get(appid)\n\n    const namespace = await this.cluster.getAppNamespace(region, app.appid)\n    if (!namespace) return // namespace not found, nothing to do\n\n    const appsV1Api = this.cluster.makeAppsV1Api(region)\n    const coreV1Api = this.cluster.makeCoreV1Api(region)\n    const hpaV2Api = this.cluster.makeHorizontalPodAutoscalingV2Api(region)\n\n    // ensure deployment deleted\n    if (deployment) {\n      await appsV1Api.deleteNamespacedDeployment(appid, namespace.metadata.name)\n    }\n\n    // ensure service deleted\n    if (service) {\n      const name = appid\n      await coreV1Api.deleteNamespacedService(name, namespace.metadata.name)\n    }\n\n    if (hpa) {\n      await hpaV2Api.deleteNamespacedHorizontalPodAutoscaler(\n        appid,\n        namespace.metadata.name,\n      )\n    }\n\n    this.logger.log(`remove k8s deployment ${deployment?.metadata?.name}`)\n  }\n\n  public async get(appid: string) {\n    const app = await this.applicationService.findOneUnsafe(appid)\n    const region = app.region\n    const namespace = await this.cluster.getAppNamespace(region, app.appid)\n    if (!namespace) {\n      return { deployment: null, service: null, hpa: null, app }\n    }\n\n    const deployment = await this.getDeployment(app)\n    const service = await this.getService(app)\n    const hpa = await this.getHorizontalPodAutoscaler(app)\n    return { deployment, service, hpa, app }\n  }\n\n  public async restart(appid: string) {\n    const app = await this.applicationService.findOneUnsafe(appid)\n    const region = app.region\n    const { deployment, hpa, service } = await this.get(appid)\n    if (!deployment || !service) {\n      await this.create(appid)\n      this.logger.log(\n        `restart app ${appid} but app k8s deployment or service not found,and recreate it`,\n      )\n      return\n    }\n\n    // reapply deployment\n    deployment.spec = await this.makeDeploymentSpec(\n      app,\n      deployment.spec.template.metadata.labels,\n    )\n    const appsV1Api = this.cluster.makeAppsV1Api(region)\n    const namespace = GetApplicationNamespace(region, appid)\n    const deploymentResult = await appsV1Api.replaceNamespacedDeployment(\n      app.appid,\n      namespace,\n      deployment,\n    )\n\n    this.logger.log(\n      `restart k8s deployment ${deploymentResult.body?.metadata?.name}`,\n    )\n\n    // reapply service\n    service.spec = this.makeServiceSpec(\n      deployment.spec.template.metadata.labels,\n    )\n    const coreV1Api = this.cluster.makeCoreV1Api(region)\n    const serviceResult = await coreV1Api.replaceNamespacedService(\n      service.metadata.name,\n      namespace,\n      service,\n    )\n\n    this.logger.log(`restart k8s service ${serviceResult.body?.metadata?.name}`)\n\n    // reapply hpa when application is restarted\n    await this.reapplyHorizontalPodAutoscaler(app, hpa)\n  }\n\n  private async createDeployment(\n    app: ApplicationWithRelations,\n    labels: Record<string, string>,\n  ) {\n    const appid = app.appid\n    const region = app.region\n    assert(region, 'region is required')\n\n    const namespace = GetApplicationNamespace(region, appid)\n\n    // create deployment\n    const data = new V1Deployment()\n    data.metadata = { name: app.appid, labels }\n    data.spec = await this.makeDeploymentSpec(app, labels)\n\n    const appsV1Api = this.cluster.makeAppsV1Api(region)\n    const res = await appsV1Api.createNamespacedDeployment(namespace, data)\n\n    this.logger.log(`create k8s deployment ${res.body?.metadata?.name}`)\n\n    return res.body\n  }\n\n  private async createService(\n    app: ApplicationWithRelations,\n    labels: Record<string, string>,\n  ) {\n    const region = app.region\n    assert(region, 'region is required')\n\n    const namespace = GetApplicationNamespace(region, app.appid)\n    const serviceName = app.appid\n    const coreV1Api = this.cluster.makeCoreV1Api(region)\n    const spec = this.makeServiceSpec(labels)\n    const res = await coreV1Api.createNamespacedService(namespace, {\n      metadata: { name: serviceName, labels },\n      spec: spec,\n    })\n    this.logger.log(`create k8s service ${res.body?.metadata?.name}`)\n    return res.body\n  }\n\n  private async getDeployment(app: ApplicationWithRelations) {\n    const appid = app.appid\n    const region = app.region\n    assert(region, 'region is required')\n\n    const appsV1Api = this.cluster.makeAppsV1Api(region)\n    try {\n      const namespace = GetApplicationNamespace(region, appid)\n      const res = await appsV1Api.readNamespacedDeployment(appid, namespace)\n      return res.body\n    } catch (error) {\n      if (error?.response?.body?.reason === 'NotFound') return null\n      throw error\n    }\n  }\n\n  private async getService(app: ApplicationWithRelations) {\n    const appid = app.appid\n    const region = app.region\n    assert(region, 'region is required')\n\n    const coreV1Api = this.cluster.makeCoreV1Api(region)\n    try {\n      const serviceName = appid\n      const namespace = GetApplicationNamespace(region, appid)\n      const res = await coreV1Api.readNamespacedService(serviceName, namespace)\n      return res.body\n    } catch (error) {\n      if (error?.response?.body?.reason === 'NotFound') return null\n      throw error\n    }\n  }\n\n  private makeServiceSpec(labels: Record<string, string>) {\n    const spec: V1ServiceSpec = {\n      selector: labels,\n      type: 'ClusterIP',\n      ports: [\n        { port: 8000, targetPort: 8000, protocol: 'TCP', name: 'http' },\n        { port: 9000, targetPort: 9000, protocol: 'TCP', name: 'storage' },\n      ],\n    }\n    return spec\n  }\n\n  private async makeDeploymentSpec(\n    app: ApplicationWithRelations,\n    labels: Record<string, string>,\n  ): Promise<V1DeploymentSpec> {\n    const appid = app.appid\n    const region = app.region\n    assert(region, 'region is required')\n\n    // prepare params\n    const limitMemory = app.bundle.resource.limitMemory\n    const limitCpu = app.bundle.resource.limitCPU\n    const requestMemory = app.bundle.resource.requestMemory\n    const requestCpu = app.bundle.resource.requestCPU\n    const max_old_space_size = ~~(limitMemory * 0.8)\n    const max_http_header_size = 1 * MB\n    const dependencies = app.configuration?.dependencies || []\n    const dependencies_string = dependencies.join(' ')\n    const npm_install_flags = region.clusterConf.npmInstallFlags || ''\n\n    // db connection uri\n    let dbConnectionUri: string\n    const dedicatedDatabase = await this.dedicatedDatabaseService.findOne(appid)\n    if (dedicatedDatabase) {\n      dbConnectionUri = await this.dedicatedDatabaseService.getConnectionUri(\n        region,\n        dedicatedDatabase,\n      )\n    } else {\n      const database = await this.databaseService.findOne(appid)\n      dbConnectionUri = this.databaseService.getInternalConnectionUri(\n        region,\n        database,\n      )\n    }\n\n    const storage = await this.storageService.findOne(appid)\n    const NODE_MODULES_PUSH_URL =\n      await this.cloudbin.getNodeModulesCachePushUrl(appid)\n\n    const NODE_MODULES_PULL_URL =\n      await this.cloudbin.getNodeModulesCachePullUrl(appid)\n\n    const env = [\n      { name: 'DB_URI', value: dbConnectionUri },\n      { name: 'APP_ID', value: appid }, // deprecated, use `APPID` instead\n      { name: 'APPID', value: appid },\n      { name: 'OSS_ACCESS_KEY', value: storage.accessKey },\n      { name: 'OSS_ACCESS_SECRET', value: storage.secretKey },\n      {\n        name: 'OSS_INTERNAL_ENDPOINT',\n        value: region.storageConf.internalEndpoint,\n      },\n      {\n        name: 'OSS_EXTERNAL_ENDPOINT',\n        value: region.storageConf.externalEndpoint,\n      },\n      { name: 'OSS_REGION', value: region.name },\n      {\n        name: 'FLAGS',\n        value: `--max_old_space_size=${max_old_space_size} --max-http-header-size=${max_http_header_size}`,\n      },\n      { name: 'DEPENDENCIES', value: dependencies_string },\n      { name: 'NODE_MODULES_PUSH_URL', value: NODE_MODULES_PUSH_URL },\n      { name: 'NODE_MODULES_PULL_URL', value: NODE_MODULES_PULL_URL },\n      { name: 'NPM_INSTALL_FLAGS', value: npm_install_flags },\n      {\n        name: 'CUSTOM_DEPENDENCY_BASE_PATH',\n        value: ServerConfig.RUNTIME_CUSTOM_DEPENDENCY_BASE_PATH,\n      },\n      {\n        name: 'RESTART_AT',\n        value: new Date().getTime().toString(),\n      },\n    ]\n\n    // merge env from app configuration, override if exists\n    const extraEnv = app.configuration.environments || []\n    extraEnv.forEach((e) => {\n      const index = env.findIndex((x) => x.name === e.name)\n      if (index > -1) {\n        env[index] = e\n      } else {\n        env.push(e)\n      }\n    })\n\n    const spec: V1DeploymentSpec = {\n      replicas: 1,\n      selector: { matchLabels: labels },\n      template: {\n        metadata: { labels },\n        spec: {\n          terminationGracePeriodSeconds: 10,\n          automountServiceAccountToken: false,\n          enableServiceLinks: false,\n          containers: [\n            {\n              image: app.runtime.image.main,\n              imagePullPolicy: 'IfNotPresent',\n              command: ['sh', '/app/start.sh'],\n              name: appid,\n              env,\n              ports: [\n                { containerPort: 8000, name: 'http' },\n                { containerPort: 9000, name: 'storage' },\n              ],\n              resources: {\n                limits: {\n                  cpu: `${limitCpu}m`,\n                  memory: `${limitMemory}Mi`,\n                  'ephemeral-storage': '4Gi',\n                },\n                requests: {\n                  cpu: `${requestCpu}m`,\n                  memory: `${requestMemory}Mi`,\n                  'ephemeral-storage': '64Mi',\n                },\n              },\n              volumeMounts: [\n                {\n                  name: 'app',\n                  mountPath: `${ServerConfig.RUNTIME_CUSTOM_DEPENDENCY_BASE_PATH}/node_modules/`,\n                },\n              ],\n              startupProbe: {\n                httpGet: {\n                  path: '/_/healthz',\n                  port: 'http',\n                  httpHeaders: [{ name: 'Referer', value: 'startupProbe' }],\n                },\n                initialDelaySeconds: 0,\n                periodSeconds: 1,\n                timeoutSeconds: 1,\n                failureThreshold: 300,\n              },\n              readinessProbe: {\n                httpGet: {\n                  path: '/_/healthz',\n                  port: 'http',\n                  httpHeaders: [{ name: 'Referer', value: 'readinessProbe' }],\n                },\n                initialDelaySeconds: 0,\n                periodSeconds: 60,\n                timeoutSeconds: 3,\n                failureThreshold: 1,\n              },\n              securityContext: {\n                allowPrivilegeEscalation: false,\n                readOnlyRootFilesystem: false,\n                privileged: false,\n                capabilities: {\n                  drop: ['ALL'],\n                },\n              },\n            },\n          ],\n          initContainers: [\n            {\n              name: 'init',\n              image: app.runtime.image.init,\n              imagePullPolicy: 'IfNotPresent',\n              command: ['sh', '/app/init.sh'],\n              env,\n              volumeMounts: [\n                {\n                  name: 'app',\n                  mountPath: '/app/node_modules/',\n                },\n              ],\n              resources: {\n                limits: {\n                  cpu: `1000m`,\n                  memory: `1024Mi`,\n                  'ephemeral-storage': '4Gi',\n                },\n                requests: {\n                  cpu: '5m',\n                  memory: '32Mi',\n                  'ephemeral-storage': '64Mi',\n                },\n              },\n              securityContext: {\n                allowPrivilegeEscalation: false,\n                // readOnlyRootFilesystem: true,\n                privileged: false,\n              },\n            },\n          ],\n          volumes: [\n            {\n              name: 'app',\n              emptyDir: {\n                sizeLimit: '4Gi',\n              },\n            },\n          ],\n          securityContext: {\n            runAsUser: 1000, // node\n            runAsGroup: 2000,\n            runAsNonRoot: true,\n            fsGroup: 2000,\n            seccompProfile: {\n              type: 'RuntimeDefault',\n            },\n          },\n        }, // end of spec {}\n      }, // end of template {}\n    }\n\n    if (region.clusterConf.runtimeAffinity) {\n      spec.template.spec.affinity = region.clusterConf.runtimeAffinity\n    }\n\n    return spec\n  }\n\n  private async createHorizontalPodAutoscaler(\n    app: ApplicationWithRelations,\n    labels: Record<string, string>,\n  ) {\n    if (!app.bundle.autoscaling.enable) return null\n\n    const region = app.region\n    assert(region, 'region is required')\n\n    const spec = this.makeHorizontalPodAutoscalerSpec(app)\n    const hpaV2Api = this.cluster.makeHorizontalPodAutoscalingV2Api(region)\n    const namespace = GetApplicationNamespace(region, app.appid)\n    const res = await hpaV2Api.createNamespacedHorizontalPodAutoscaler(\n      namespace,\n      {\n        apiVersion: 'autoscaling/v2',\n        kind: 'HorizontalPodAutoscaler',\n        spec,\n        metadata: {\n          name: app.appid,\n          labels,\n        },\n      },\n    )\n    this.logger.log(`create k8s hpa ${res.body?.metadata?.name}`)\n    return res.body\n  }\n\n  private async getHorizontalPodAutoscaler(app: ApplicationWithRelations) {\n    const appid = app.appid\n    const region = app.region\n    assert(region, 'region is required')\n\n    const hpaV2Api = this.cluster.makeHorizontalPodAutoscalingV2Api(region)\n\n    try {\n      const hpaName = appid\n      const namespace = GetApplicationNamespace(region, appid)\n      const res = await hpaV2Api.readNamespacedHorizontalPodAutoscaler(\n        hpaName,\n        namespace,\n      )\n      return res.body\n    } catch (error) {\n      if (error?.response?.body?.reason === 'NotFound') return null\n      throw error\n    }\n  }\n\n  private makeHorizontalPodAutoscalerSpec(app: ApplicationWithRelations) {\n    const {\n      minReplicas,\n      maxReplicas,\n      targetCPUUtilizationPercentage,\n      targetMemoryUtilizationPercentage,\n    } = app.bundle.autoscaling\n\n    const metrics: V2HorizontalPodAutoscalerSpec['metrics'] = []\n\n    if (targetCPUUtilizationPercentage) {\n      metrics.push({\n        type: 'Resource',\n        resource: {\n          name: 'cpu',\n          target: {\n            type: 'Utilization',\n            averageUtilization: targetCPUUtilizationPercentage * 10,\n          },\n        },\n      })\n    }\n\n    if (targetMemoryUtilizationPercentage) {\n      metrics.push({\n        type: 'Resource',\n        resource: {\n          name: 'memory',\n          target: {\n            type: 'Utilization',\n            averageUtilization: targetMemoryUtilizationPercentage * 2,\n          },\n        },\n      })\n    }\n\n    const spec: V2HorizontalPodAutoscalerSpec = {\n      scaleTargetRef: {\n        apiVersion: 'apps/v1',\n        kind: 'Deployment',\n        name: app.appid,\n      },\n      minReplicas,\n      maxReplicas,\n      metrics,\n      behavior: {\n        scaleDown: {\n          policies: [\n            {\n              type: 'Pods',\n              value: 1,\n              periodSeconds: 60,\n            },\n          ],\n        },\n        scaleUp: {\n          policies: [\n            {\n              type: 'Pods',\n              value: 1,\n              periodSeconds: 60,\n            },\n          ],\n        },\n      },\n    }\n    return spec\n  }\n\n  public async reapplyHorizontalPodAutoscaler(\n    app: ApplicationWithRelations,\n    oldHpa: V2HorizontalPodAutoscaler,\n  ) {\n    const appid = app.appid\n    const region = app.region\n    assert(region, 'region is required')\n\n    const hpaV2Api = this.cluster.makeHorizontalPodAutoscalingV2Api(region)\n    const namespace = GetApplicationNamespace(region, appid)\n\n    const hpa = oldHpa\n\n    if (!app.bundle.autoscaling.enable) {\n      if (!hpa) return\n      await hpaV2Api.deleteNamespacedHorizontalPodAutoscaler(\n        app.appid,\n        namespace,\n      )\n      this.logger.log(`delete k8s hpa ${app.appid}`)\n    } else {\n      if (hpa) {\n        hpa.spec = this.makeHorizontalPodAutoscalerSpec(app)\n        await hpaV2Api.replaceNamespacedHorizontalPodAutoscaler(\n          app.appid,\n          namespace,\n          hpa,\n        )\n      } else {\n        const labels = this.getRuntimeLabel(appid)\n        await this.createHorizontalPodAutoscaler(app, labels)\n      }\n      this.logger.log(`reapply k8s hpa ${app.appid}`)\n    }\n  }\n\n  private getRuntimeLabel(appid: string) {\n    const SEALOS = 'cloud.sealos.io/app-deploy-manager'\n    const labels: Record<string, string> = {\n      [LABEL_KEY_APP_ID]: appid,\n      [SEALOS]: appid,\n      app: appid,\n    }\n\n    return labels\n  }\n}\n"
  },
  {
    "path": "server/src/interceptor/dto/http-interceptor.dto.ts",
    "content": "export enum HttpInterceptorAction {\n  ALLOW = 'allow',\n  DENY = 'deny',\n}\nclass HttpInterceptorRewrite {\n  status: number\n  data: any\n}\nclass HttpInterceptorRedirect {\n  status: number\n  data: string\n}\nexport class HttpInterceptorResponseDto {\n  action: HttpInterceptorAction\n  rewrite?: HttpInterceptorRewrite\n  redirect?: HttpInterceptorRedirect\n  denyMessage?: string\n}\n"
  },
  {
    "path": "server/src/interceptor/http-interceptor.service.ts",
    "content": "import { HttpService } from '@nestjs/axios'\nimport { ExecutionContext, Injectable, Logger } from '@nestjs/common'\nimport { HTTP_INTERCEPTOR_TIMEOUT, ServerConfig } from 'src/constants'\nimport { HttpInterceptorAction } from './dto/http-interceptor.dto'\nimport { Response } from 'express'\nimport { Request } from 'express'\n\n@Injectable()\nexport class HttpInterceptorService {\n  constructor(private httpService: HttpService) {}\n\n  private readonly logger = new Logger(HttpInterceptorService.name)\n  private readonly HTTP_INTERCEPTOR_URL = ServerConfig.HTTP_INTERCEPTOR_URL\n  private readonly HTTP_INTERCEPTOR_TIMEOUT = HTTP_INTERCEPTOR_TIMEOUT\n\n  async processPreInterceptor(context: ExecutionContext, requestId: string) {\n    const requestData = this.buildRequestData(context, requestId)\n    return this.sendRequestToInterceptor(requestData)\n  }\n\n  async processPostInterceptor(\n    context: ExecutionContext,\n    requestId: string,\n    data: any,\n  ) {\n    const response: Response = context.switchToHttp().getResponse()\n    const responseData = this.buildResponseData(response, requestId, data)\n    return this.sendRequestToInterceptor(responseData)\n  }\n\n  buildRequestData(context: ExecutionContext, requestId: string) {\n    const request: Request = context.switchToHttp().getRequest()\n    return {\n      url: request.url,\n      method: request.method,\n      headers: request.headers,\n      user: request.user,\n      params: request.params,\n      query: request.query,\n      body: request.body,\n      id: requestId,\n      controller: context.getClass().name,\n      handler: context.getHandler().name,\n      state: 'pre',\n    }\n  }\n  buildResponseData(response: Response, requestId: string, data: any): any {\n    return {\n      id: requestId,\n      headers: response.getHeaders(),\n      data: data,\n      state: 'post',\n    }\n  }\n\n  async sendRequestToInterceptor(data: any) {\n    if (!this.HTTP_INTERCEPTOR_URL) {\n      return { action: HttpInterceptorAction.ALLOW }\n    }\n    try {\n      const response = await this.httpService.axiosRef.post(\n        this.HTTP_INTERCEPTOR_URL,\n        data,\n        { timeout: this.HTTP_INTERCEPTOR_TIMEOUT },\n      )\n      if (!response.data) {\n        return {\n          action: HttpInterceptorAction.ALLOW,\n        }\n      }\n      if (!response.data.action) {\n        return {\n          action: HttpInterceptorAction.ALLOW,\n        }\n      }\n      return response.data\n    } catch (error) {\n      if (error.code === 'ECONNABORTED') {\n        this.logger.error('Request timeout!')\n      } else {\n        this.logger.error(error)\n      }\n      return { action: HttpInterceptorAction.ALLOW }\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/interceptor/interceptor.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { HttpInterceptorService } from './http-interceptor.service'\nimport { HttpModule } from '@nestjs/axios'\n\n@Module({\n  imports: [HttpModule],\n  providers: [HttpInterceptorService],\n  exports: [HttpInterceptorService],\n})\nexport class InterceptorModule {}\n"
  },
  {
    "path": "server/src/log/entities/function-log.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport class FunctionLog {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  request_id: string\n\n  // cloud function name\n  @ApiProperty()\n  func: string\n\n  // log content\n  @ApiProperty()\n  data: string\n\n  @ApiProperty()\n  created_at: Date\n}\n"
  },
  {
    "path": "server/src/log/log.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Logger,\n  Param,\n  Query,\n  UseGuards,\n  Sse,\n  MessageEvent,\n} from '@nestjs/common'\nimport http from 'http'\nimport { ApiBearerAuth, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger'\nimport { FunctionService } from '../function/function.service'\nimport { ApiResponsePagination, ResponseUtil } from '../utils/response'\nimport { FunctionLog } from './entities/function-log'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\nimport { PassThrough } from 'nodemailer/lib/xoauth2'\nimport { Log } from '@kubernetes/client-node'\nimport { GetApplicationNamespace } from 'src/utils/getter'\nimport { RegionService } from 'src/region/region.service'\nimport { ClusterService } from 'src/region/cluster/cluster.service'\nimport { Observable } from 'rxjs'\nimport { PodService } from 'src/application/pod.service'\n\n@ApiBearerAuth('Authorization')\n@Controller('apps/:appid/logs')\nexport class LogController {\n  private readonly logger = new Logger(LogController.name)\n\n  constructor(\n    private readonly funcService: FunctionService,\n    private readonly regionService: RegionService,\n    private readonly clusterService: ClusterService,\n    private readonly podService: PodService,\n  ) {}\n\n  /**\n   * Get function logs\n   * @param appid\n   * @param name\n   * @returns\n   */\n  @ApiTags('Function')\n  @ApiOperation({ summary: 'Get function logs' })\n  @ApiResponsePagination(FunctionLog)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @ApiQuery({\n    name: 'functionName',\n    type: String,\n    description: 'The function name. Optional',\n    required: false,\n  })\n  @ApiQuery({\n    name: 'requestId',\n    type: String,\n    description: 'The request id. Optional',\n    required: false,\n  })\n  @ApiQuery({\n    name: 'page',\n    type: String,\n    description: 'The page number, default is 1',\n    required: false,\n  })\n  @ApiQuery({\n    name: 'pageSize',\n    type: String,\n    description: 'The page size, default is 10',\n    required: false,\n  })\n  @Get('functions')\n  async getLogs(\n    @Param('appid') appid: string,\n    @Query('requestId') requestId?: string,\n    @Query('functionName') functionName?: string,\n    @Query('pageSize') pageSize?: number,\n    @Query('page') page?: number,\n  ) {\n    page = page || 1\n    pageSize = pageSize || 10\n\n    const res = await this.funcService.getLogs(appid, {\n      requestId,\n      functionName,\n      pageSize: pageSize,\n      page,\n    })\n\n    return ResponseUtil.ok({\n      list: res.data,\n      total: res.total,\n      page,\n      limit: pageSize, // @deprecated use pageSize instead\n      pageSize: pageSize,\n    })\n  }\n\n  @ApiTags('Application')\n  @ApiOperation({ summary: 'Get app pod logs' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Sse(':podName')\n  async streamLogs(\n    @Param('podName') podName: string,\n    @Query('containerName') containerName: string,\n    @Param('appid') appid: string,\n  ): Promise<Observable<MessageEvent>> {\n    if (!containerName) {\n      containerName = appid\n    }\n\n    const podStatus = await this.podService.getPodStatusListByAppid(appid)\n\n    if (!podStatus.podStatus[0]) {\n      return new Observable<MessageEvent>((subscriber) => {\n        subscriber.error(new Error('pod not exist'))\n      })\n    }\n\n    const podNameList = podStatus.podStatus.map((pod) => pod.name)\n\n    const initContainerId = podStatus.podStatus.map(\n      (pod) => pod.initContainerId,\n    )\n\n    if (containerName === 'init') {\n      for (const containerId of initContainerId) {\n        if (!containerId) {\n          return new Observable<MessageEvent>((subscriber) => {\n            subscriber.error(new Error('init container not exist'))\n          })\n        }\n      }\n    }\n\n    if (podName !== 'all') {\n      if (!podNameList.includes(podName)) {\n        return new Observable<MessageEvent>((subscriber) => {\n          subscriber.error(new Error('podName not exist'))\n        })\n      }\n    }\n\n    const region = await this.regionService.findByAppId(appid)\n    const namespaceOfApp = GetApplicationNamespace(region, appid)\n    const kc = this.clusterService.loadKubeConfig(region)\n\n    return new Observable<MessageEvent>((subscriber) => {\n      const combinedLogStream = new PassThrough()\n      const logs = new Log(kc)\n\n      const streamsEnded = new Set<string>()\n      const k8sLogResponses: http.IncomingMessage[] = []\n      const podLogStreams: PassThrough[] = []\n\n      const destroyStream = () => {\n        combinedLogStream.removeAllListeners()\n        combinedLogStream.destroy()\n\n        k8sLogResponses.forEach((response) => {\n          response.removeAllListeners()\n          response.destroy()\n        })\n\n        podLogStreams.forEach((stream) => {\n          stream.removeAllListeners()\n          stream.destroy()\n        })\n      }\n\n      let idCounter = 1\n      combinedLogStream.on('data', (chunk) => {\n        const dataString = chunk.toString()\n        const messageEvent: MessageEvent = {\n          id: idCounter.toString(),\n          data: dataString,\n          type: 'log',\n        }\n        idCounter++\n        subscriber.next(messageEvent)\n      })\n\n      combinedLogStream.on('error', (error) => {\n        this.logger.error('Combined stream error', error)\n        subscriber.error(error)\n        destroyStream()\n      })\n\n      combinedLogStream.on('close', () => {\n        subscriber.complete()\n        destroyStream()\n      })\n\n      const fetchLog = async (podName: string) => {\n        const podLogStream = new PassThrough()\n        streamsEnded.add(podName)\n        podLogStreams.push(podLogStream)\n\n        try {\n          const k8sResponse: http.IncomingMessage = await logs.log(\n            namespaceOfApp,\n            podName,\n            containerName,\n            podLogStream,\n            {\n              follow: true,\n              previous: false,\n              pretty: false,\n              timestamps: false,\n              tailLines: 1000,\n            },\n          )\n\n          k8sLogResponses.push(k8sResponse)\n\n          podLogStream.pipe(combinedLogStream, { end: false })\n\n          podLogStream.on('error', (error) => {\n            subscriber.error(error)\n            this.logger.error(`podLogStream error for pod ${podName}`, error)\n            destroyStream()\n          })\n\n          k8sResponse.on('close', () => {\n            streamsEnded.delete(podName)\n            if (streamsEnded.size === 0) {\n              combinedLogStream.emit('close')\n            }\n          })\n\n          podLogStream.on('close', () => {\n            streamsEnded.delete(podName)\n            if (streamsEnded.size === 0) {\n              combinedLogStream.emit('close')\n            }\n          })\n        } catch (error) {\n          subscriber.error(error)\n          this.logger.error(`Failed to get logs for pod ${podName}`, error)\n          destroyStream()\n        }\n      }\n\n      if (podName === 'all' && podNameList.length > 0) {\n        podNameList.forEach((podName) => {\n          fetchLog(podName)\n        })\n      } else {\n        fetchLog(podName)\n      }\n\n      // Clean up when the client disconnects\n      return () => {\n        destroyStream()\n      }\n    })\n  }\n}\n"
  },
  {
    "path": "server/src/log/log.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { JwtService } from '@nestjs/jwt'\nimport { DatabaseModule } from 'src/database/database.module'\nimport { FunctionModule } from 'src/function/function.module'\nimport { ApplicationModule } from '../application/application.module'\nimport { LogController } from './log.controller'\n\n@Module({\n  imports: [ApplicationModule, FunctionModule, DatabaseModule],\n  controllers: [LogController],\n  providers: [JwtService],\n})\nexport class LogModule {}\n"
  },
  {
    "path": "server/src/main.ts",
    "content": "import { NestFactory } from '@nestjs/core'\nimport * as compression from 'compression'\nimport { AppModule } from './app.module'\nimport { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'\nimport { ValidationPipe, VersioningType } from '@nestjs/common'\nimport { ServerConfig } from './constants'\nimport { InitializerService } from './initializer/initializer.service'\nimport { SystemDatabase, TrafficDatabase } from './system-database'\nimport * as helmet from 'helmet'\nimport * as bodyParser from 'body-parser'\n\nasync function bootstrap() {\n  await SystemDatabase.ready\n\n  if (ServerConfig.TRAFFIC_DATABASE_URL) {\n    await TrafficDatabase.ready\n  }\n\n  const app = await NestFactory.create(AppModule, {\n    logger: ['error', 'warn', 'log', 'debug', 'verbose'],\n  })\n\n  app.enableCors()\n\n  app.useGlobalPipes(\n    new ValidationPipe({\n      transform: true,\n      whitelist: true,\n    }),\n  )\n\n  app.enableVersioning({\n    defaultVersion: ['1'],\n    type: VersioningType.URI,\n  })\n\n  app.use(compression())\n  app.use(helmet.hidePoweredBy())\n  app.use(bodyParser.json({ limit: '1mb' }))\n\n  // for swagger api\n  const config = new DocumentBuilder()\n    .setTitle('Open API Documentation of laf')\n    .setDescription('`The APIs of laf server`')\n    // eslint-disable-next-line @typescript-eslint/no-var-requires\n    .setVersion(require('../package.json').version)\n    .addServer(ServerConfig.API_SERVER_URL, 'current server')\n    .addServer('http://dev.server:3000', 'dev server')\n    .addBearerAuth(\n      { type: 'http', scheme: 'bearer', bearerFormat: 'JWT', in: 'header' },\n      'Authorization',\n    )\n    .build()\n\n  const document = SwaggerModule.createDocument(app, config)\n  SwaggerModule.setup('', app, document, {\n    swaggerOptions: {\n      persistAuthorization: true,\n      tagsSorter: 'alpha',\n    },\n  })\n\n  try {\n    const initService = app.get(InitializerService)\n    await initService.init()\n  } catch (error) {\n    // eslint-disable-next-line no-console\n    console.error(error)\n    process.exit(1)\n  }\n\n  await app.listen(3000)\n}\nbootstrap()\n"
  },
  {
    "path": "server/src/monitor/dto/query-metrics.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport {\n  IsArray,\n  IsEnum,\n  IsIn,\n  IsNumber,\n  IsString,\n  Max,\n  Min,\n} from 'class-validator'\nimport { MonitorMetric } from '../monitor.service'\nimport { Transform } from 'class-transformer'\n\nexport class QueryMetricsDto {\n  @ApiProperty({ isArray: true, enum: MonitorMetric })\n  @IsEnum(MonitorMetric, { each: true })\n  @IsArray()\n  q: MonitorMetric[]\n\n  @ApiProperty({\n    minimum: 60,\n    maximum: 3600,\n    description: 'Query step in seconds',\n  })\n  @IsNumber()\n  @Min(60)\n  @Max(3600)\n  @Transform(({ value }) => Number(value))\n  step: number\n\n  @ApiProperty({\n    description: 'Query type',\n    enum: ['range', 'instant'],\n  })\n  @IsString()\n  @IsIn(['range', 'instant'])\n  type: 'range' | 'instant'\n}\n"
  },
  {
    "path": "server/src/monitor/monitor.controller.ts",
    "content": "import { Controller, Get, Param, Query, UseGuards } from '@nestjs/common'\nimport { MonitorService } from './monitor.service'\nimport { ResponseUtil } from 'src/utils/response'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\nimport {\n  ApiBearerAuth,\n  ApiOperation,\n  ApiResponse,\n  ApiTags,\n} from '@nestjs/swagger'\nimport { QueryMetricsDto } from './dto/query-metrics.dto'\n\n@ApiTags('Monitor')\n@ApiBearerAuth('Authorization')\n@Controller('monitor')\nexport class MonitorController {\n  constructor(private readonly monitorService: MonitorService) {}\n\n  @ApiOperation({ summary: 'Get monitor metrics data' })\n  @ApiResponse({ type: ResponseUtil })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get(':appid/metrics')\n  async getData(@Param('appid') appid: string, @Query() dto: QueryMetricsDto) {\n    const { q: metrics, step, type } = dto\n    const isRange = type === 'range'\n\n    const res = await this.monitorService.getData(\n      appid,\n      metrics,\n      {\n        step,\n      },\n      isRange,\n    )\n\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/monitor/monitor.module.ts",
    "content": "import { HttpModule } from '@nestjs/axios'\nimport { Module } from '@nestjs/common'\nimport { MonitorController } from './monitor.controller'\nimport { MonitorService } from './monitor.service'\nimport { ApplicationModule } from 'src/application/application.module'\n\n@Module({\n  imports: [HttpModule, ApplicationModule],\n  controllers: [MonitorController],\n  providers: [MonitorService],\n  exports: [MonitorService],\n})\nexport class MonitorModule {}\n"
  },
  {
    "path": "server/src/monitor/monitor.service.ts",
    "content": "import { HttpService } from '@nestjs/axios'\nimport { Injectable, Logger } from '@nestjs/common'\nimport { PrometheusConf } from 'src/region/entities/region'\nimport { RegionService } from 'src/region/region.service'\nimport { GetApplicationNamespace } from 'src/utils/getter'\n\nconst requestConfig = {\n  retryAttempts: 5,\n  retryDelayBase: 300,\n  rateAccuracy: '1m',\n}\n\nexport const getQuery =\n  ({ rateAccuracy }: { rateAccuracy: string }) =>\n  (opts: Record<string, unknown>, metric: MonitorMetric) => {\n    switch (metric) {\n      case MonitorMetric.cpuUsage:\n        return {\n          instant: false,\n          query: `sum(laf_runtime_cpu{container!=\"\",appid=\"${opts.appid}\"}) by (${opts.selector})`,\n        }\n      case MonitorMetric.memoryUsage:\n        return {\n          instant: false,\n          query: `sum(laf_runtime_memory{container!=\"\",appid=\"${opts.appid}\"}) by (${opts.selector})`,\n        }\n      case MonitorMetric.networkReceive:\n        return {\n          instant: false,\n          query: `sum(rate(container_network_receive_bytes_total{pod=~\"${opts.pods}\",namespace=\"${opts.namespace}\"}[${rateAccuracy}])) by (${opts.selector})`,\n        }\n      case MonitorMetric.networkTransmit:\n        return {\n          instant: false,\n          query: `sum(rate(container_network_transmit_bytes_total{pod=~\"${opts.pods}\",namespace=\"${opts.namespace}\"}[${rateAccuracy}])) by (${opts.selector})`,\n        }\n      case MonitorMetric.databaseUsage:\n        return {\n          instant: true,\n          query: `sum(mongodb_dbstats_dataSize{database=\"${opts.appid}\",rs_state=\"1\"})`,\n        }\n      case MonitorMetric.storageUsage:\n        return {\n          instant: true,\n          query: `sum(minio_bucket_usage_total_bytes{bucket=~\"${opts.appid}.+\"})`,\n        }\n    }\n  }\n\nexport enum MonitorMetric {\n  cpuUsage = 'cpuUsage',\n  memoryUsage = 'memoryUsage',\n  networkReceive = 'networkReceive',\n  networkTransmit = 'networkTransmit',\n  databaseUsage = 'databaseUsage',\n  storageUsage = 'storageUsage',\n}\n\n@Injectable()\nexport class MonitorService {\n  constructor(\n    private readonly httpService: HttpService,\n    private readonly regionService: RegionService,\n  ) {}\n  private readonly logger = new Logger(MonitorService.name)\n\n  async getData(\n    appid: string,\n    metrics: MonitorMetric[],\n    queryParams: Record<string, number | string>,\n    isRange: boolean,\n  ) {\n    const region = await this.regionService.findByAppId(appid)\n    const conf = region?.prometheusConf\n    if (!conf?.apiUrl) {\n      this.logger.warn('Metrics not available for no endpoint')\n      return {}\n    }\n\n    const opts = {\n      appid,\n      selector: 'pod',\n      namespace: GetApplicationNamespace(region, appid),\n      pods: appid + '.+',\n    }\n    const data = {}\n    const res = metrics.map(async (metric) => {\n      const { query, instant } = getQuery({\n        rateAccuracy: requestConfig.rateAccuracy,\n      })(opts, metric)\n\n      data[metric] =\n        instant || !isRange\n          ? await this.query(conf, query)\n          : await this.queryRange(conf, query, queryParams)\n    })\n\n    await Promise.all(res)\n    return data\n  }\n\n  private async query(conf: PrometheusConf, query: string) {\n    const endpoint = `${conf.apiUrl}/api/v1/query`\n\n    return await this.queryInternal(endpoint, { query })\n  }\n\n  private async queryRange(\n    conf: PrometheusConf,\n    query: string,\n    queryParams: Record<string, number | string>,\n  ) {\n    const range = 3600 // 1 hour\n    const now = Math.floor(Date.now() / 1000)\n    const start = now - range\n    const end = now\n\n    queryParams = {\n      range,\n      step: 60,\n      start,\n      end,\n      ...queryParams,\n    }\n\n    const endpoint = `${conf.apiUrl}/api/v1/query_range`\n\n    return await this.queryInternal(endpoint, {\n      query,\n      ...queryParams,\n    })\n  }\n\n  private async queryInternal(\n    endpoint: string,\n    query: Record<string, string | number>,\n  ) {\n    for (let attempt = 1; attempt <= requestConfig.retryAttempts; attempt++) {\n      try {\n        const res = await this.httpService\n          .post(endpoint, query, {\n            headers: {\n              'Content-Type': 'application/x-www-form-urlencoded',\n            },\n          })\n          .toPromise()\n\n        return res.data.data.result\n      } catch (error) {\n        if (attempt >= requestConfig.retryAttempts) {\n          this.logger.error('Metrics not available', error.message)\n          return []\n        }\n\n        await new Promise((resolve) =>\n          setTimeout(resolve, attempt * requestConfig.retryDelayBase),\n        )\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/notification/entities/notification.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\nimport { NotificationType } from '../notification-type'\n\nexport enum NotificationState {\n  Pending = 'Pending',\n  Done = 'Done',\n}\n\nexport class Notification {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ enum: NotificationType })\n  type: NotificationType\n\n  @ApiProperty()\n  title: string\n\n  @ApiProperty()\n  content: string\n\n  @ApiProperty({ enum: NotificationState })\n  state: NotificationState\n\n  @ApiProperty({ type: String })\n  target: ObjectId\n\n  lockedAt: Date\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/notification/notification-task.service.ts",
    "content": "import { Cron, CronExpression } from '@nestjs/schedule'\nimport { SystemDatabase } from 'src/system-database'\nimport { Notification, NotificationState } from './entities/notification'\nimport { HttpService } from '@nestjs/axios'\nimport { Injectable, Logger } from '@nestjs/common'\nimport { ServerConfig } from 'src/constants'\nimport { UserService } from 'src/user/user.service'\n\n@Injectable()\nexport class NotificationTaskService {\n  private lockTimeout = 15 // in seconds\n  private readonly logger = new Logger(NotificationTaskService.name)\n\n  constructor(\n    private readonly httpService: HttpService,\n    private readonly userService: UserService,\n  ) {}\n\n  @Cron(CronExpression.EVERY_30_SECONDS)\n  tick() {\n    if (ServerConfig.DISABLE_NOTIFICATION_TASK) return\n\n    this.handlePendingNotifications()\n  }\n\n  async handlePendingNotifications() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<Notification>('Notification')\n      .findOneAndUpdate(\n        {\n          state: NotificationState.Pending,\n          lockedAt: {\n            $lt: new Date(Date.now() - this.lockTimeout * 1000),\n          },\n        },\n        {\n          $set: {\n            lockedAt: new Date(),\n          },\n        },\n      )\n\n    if (!res.value) return\n    const notification = res.value\n\n    const ok = await this.sendNotification(notification)\n    if (!ok) return\n\n    await db.collection<Notification>('Notification').updateOne(\n      {\n        _id: notification._id,\n      },\n      {\n        $set: {\n          state: NotificationState.Done,\n          updatedAt: new Date(),\n        },\n      },\n    )\n  }\n\n  async sendNotification(data: Notification) {\n    if (!ServerConfig.NOTIFICATION_CENTER_URL) {\n      return true\n    }\n\n    const user = await this.userService.findOneById(data.target)\n    if (!user) {\n      this.logger.error(`failed to send notification ${data._id}, no user`)\n      return true\n    }\n\n    if (!user.email) {\n      this.logger.log(`skip to send notification ${data._id} due to no channel`)\n      return true\n    }\n\n    const to = [user.email].join('|')\n\n    const res = await this.httpService.axiosRef.post(\n      ServerConfig.NOTIFICATION_CENTER_URL,\n      {\n        title: data.title,\n        description: data.content,\n        token: ServerConfig.NOTIFICATION_CENTER_TOKEN,\n        channel: 'notification',\n        async: true,\n        to: to,\n      },\n    )\n    if (!res.data.success) {\n      this.logger.error(`failed to send notification ${data._id}`, res.data)\n      return false\n    }\n    return true\n  }\n}\n"
  },
  {
    "path": "server/src/notification/notification-type.ts",
    "content": "export enum NotificationType {\n  InsufficientBalance = 'InsufficientBalance',\n}\n"
  },
  {
    "path": "server/src/notification/notification.controller.ts",
    "content": "import { Controller, Get, Query, UseGuards } from '@nestjs/common'\nimport { ApiResponsePagination, ResponseUtil } from 'src/utils/response'\nimport { NotificationService } from './notification.service'\nimport { InjectUser } from 'src/utils/decorator'\nimport { User } from 'src/user/entities/user'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApiOperation } from '@nestjs/swagger'\nimport { Notification } from './entities/notification'\n\n@Controller('notification')\nexport class NotificationController {\n  constructor(private readonly notificationService: NotificationService) {}\n\n  @ApiOperation({ summary: 'Get notification list' })\n  @ApiResponsePagination(Notification)\n  @UseGuards(JwtAuthGuard)\n  @Get('list')\n  async findAll(\n    @Query('page') page: number,\n    @Query('pageSize') pageSize: number,\n    @InjectUser() user: User,\n  ) {\n    page = page ? Number(page) : 1\n    pageSize = pageSize ? Number(pageSize) : 10\n\n    const res = await this.notificationService.findAll(user, page, pageSize)\n\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/notification/notification.module.ts",
    "content": "import { Global, Module } from '@nestjs/common'\nimport { NotificationService } from './notification.service'\nimport { NotificationTaskService } from './notification-task.service'\nimport { NotificationController } from './notification.controller'\nimport { HttpModule } from '@nestjs/axios'\nimport { UserModule } from 'src/user/user.module'\n\n@Global()\n@Module({\n  providers: [NotificationService, NotificationTaskService],\n  exports: [NotificationService],\n  controllers: [NotificationController],\n  imports: [HttpModule, UserModule],\n})\nexport class NotificationModule {}\n"
  },
  {
    "path": "server/src/notification/notification.service.ts",
    "content": "import { Injectable } from '@nestjs/common'\nimport { SystemDatabase } from 'src/system-database'\nimport type { User } from 'src/user/entities/user'\nimport { Notification, NotificationState } from './entities/notification'\nimport { TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { I18nService } from 'nestjs-i18n'\nimport { NotificationType } from './notification-type'\nimport { ObjectId } from 'mongodb'\n\n@Injectable()\nexport class NotificationService {\n  constructor(private readonly i18n: I18nService) {}\n\n  async notify(params: {\n    type: NotificationType\n    payload?: object\n    uid?: ObjectId\n  }) {\n    const { type, payload, uid } = params\n\n    const db = SystemDatabase.db\n    await db.collection<Notification>('Notification').insertOne({\n      title: this.getNotificationTitle(type, payload),\n      content: this.genNotificationContent(type, payload),\n      type,\n      target: uid,\n      state: NotificationState.Pending,\n      lockedAt: TASK_LOCK_INIT_TIME,\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    })\n  }\n\n  getNotificationTitle(type: NotificationType, payload?: object) {\n    const title = this.i18n.t(`notification.${type}.title`, {\n      args: payload,\n    })\n    return title\n  }\n\n  genNotificationContent(type: NotificationType, payload?: object) {\n    const content = this.i18n.t(`notification.${type}.content`, {\n      args: payload,\n    })\n    return content\n  }\n\n  async findAll(user: User, page: number, pageSize: number) {\n    const db = SystemDatabase.db\n    const list = db\n      .collection<Notification>('Notification')\n      .find(\n        { target: user._id },\n        {\n          skip: (page - 1) * pageSize,\n          limit: pageSize,\n          sort: { createdAt: -1 },\n        },\n      )\n      .toArray()\n\n    const total = await db\n      .collection<Notification>('Notification')\n      .countDocuments({ target: user._id })\n\n    return {\n      list,\n      total,\n      page,\n      pageSize,\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/recycle-bin/cloud-function/dto/delete-recycle-bin-functions.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsArray, IsNotEmpty, IsString } from 'class-validator'\n\nexport class DeleteRecycleBinItemsDto {\n  @ApiProperty({\n    description: 'The list of item ids',\n    type: [String],\n  })\n  @IsNotEmpty()\n  @IsArray()\n  @IsString({ each: true })\n  ids: string[]\n}\n"
  },
  {
    "path": "server/src/recycle-bin/cloud-function/dto/get-recycle-bin-functions.dto.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport {\n  IsArray,\n  IsIn,\n  IsNotEmpty,\n  IsString,\n  Matches,\n  MaxLength,\n} from 'class-validator'\nimport { HTTP_METHODS } from 'src/constants'\nimport { HttpMethod } from 'src/function/entities/cloud-function'\n\nclass CloudFunctionSourceDto {\n  @ApiProperty()\n  code: string\n\n  @ApiProperty()\n  compiled: string\n\n  @ApiPropertyOptional()\n  uri?: string\n\n  @ApiProperty()\n  version: number\n\n  @ApiPropertyOptional()\n  hash?: string\n\n  @ApiPropertyOptional()\n  lang?: string\n}\n\nexport class FunctionRecycleBinItemsDto {\n  @ApiProperty()\n  _id: string\n\n  @ApiProperty()\n  appid: string\n\n  @ApiProperty({\n    description: 'Function name is unique in the application',\n  })\n  @IsNotEmpty()\n  @Matches(/^[a-zA-Z0-9_.\\-](?:[a-zA-Z0-9_.\\-/]{0,254}[a-zA-Z0-9_.\\-])?$/)\n  name: string\n\n  @ApiProperty({ type: CloudFunctionSourceDto })\n  source: CloudFunctionSourceDto\n\n  @ApiPropertyOptional()\n  @MaxLength(256)\n  description: string\n\n  @ApiPropertyOptional({ type: [String] })\n  @IsString({ each: true })\n  @IsArray()\n  @MaxLength(16, { each: true })\n  @IsNotEmpty({ each: true })\n  tags: string[]\n\n  @ApiProperty({ type: [String], enum: HttpMethod })\n  @IsIn(HTTP_METHODS, { each: true })\n  methods: HttpMethod[] = []\n\n  @ApiPropertyOptional()\n  params?: any\n\n  @ApiProperty({ type: 'date' })\n  createdAt: Date\n\n  @ApiProperty({ type: 'date' })\n  updatedAt: Date\n\n  @ApiProperty()\n  createdBy: string\n}\n"
  },
  {
    "path": "server/src/recycle-bin/cloud-function/dto/restore-recycle-bin-functions.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsArray, IsNotEmpty, IsString } from 'class-validator'\n\nexport class RestoreRecycleBinItemsDto {\n  @ApiProperty({\n    description: 'The list of item ids',\n    type: [String],\n  })\n  @IsNotEmpty()\n  @IsArray()\n  @IsString({ each: true })\n  ids: string[]\n}\n"
  },
  {
    "path": "server/src/recycle-bin/cloud-function/function-recycle-bin.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Post,\n  Body,\n  Param,\n  Delete,\n  UseGuards,\n  Query,\n} from '@nestjs/common'\nimport {\n  ApiResponseObject,\n  ApiResponsePagination,\n  ResponseUtil,\n} from 'src/utils/response'\nimport { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\nimport { ObjectId } from 'mongodb'\nimport { FunctionRecycleBinService } from './function-recycle-bin.service'\nimport { DeleteRecycleBinItemsDto } from './dto/delete-recycle-bin-functions.dto'\nimport { RestoreRecycleBinItemsDto } from './dto/restore-recycle-bin-functions.dto'\nimport { FunctionRecycleBinItemsDto } from './dto/get-recycle-bin-functions.dto'\nimport { CloudFunctionRecycleBinQuery } from './interface/function-recycle-bin-query.interface'\n\n@ApiTags('RecycleBin')\n@ApiBearerAuth('Authorization')\n@Controller('recycle-bin/:appid/functions')\nexport class FunctionRecycleBinController {\n  constructor(\n    private readonly functionRecycleBinService: FunctionRecycleBinService,\n  ) {}\n\n  /**\n   * Delete function Recycle bin items\n   */\n  @ApiOperation({ summary: 'Delete function Recycle bin items' })\n  @ApiResponseObject(Number)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post('delete')\n  async deleteRecycleBinItems(\n    @Param('appid') appid: string,\n    @Body() dto: DeleteRecycleBinItemsDto,\n  ) {\n    const ids = dto.ids.map((id) => new ObjectId(id))\n    const res = await this.functionRecycleBinService.deleteFromRecycleBin(\n      appid,\n      ids,\n    )\n    if (!res.acknowledged) {\n      return ResponseUtil.error('empty recycle bin items failed')\n    }\n    return ResponseUtil.ok(res.deletedCount)\n  }\n\n  @ApiOperation({ summary: 'Empty function Recycle bin items' })\n  @ApiResponseObject(Number)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Delete()\n  async emptyRecycleBin(@Param('appid') appid: string) {\n    const res = await this.functionRecycleBinService.emptyRecycleBin(appid)\n    if (!res.acknowledged) {\n      return ResponseUtil.error('Empty function Recycle bin failed')\n    }\n    return ResponseUtil.ok(res.deletedCount)\n  }\n\n  /**\n   * Restore function Recycle bin items\n   */\n  @ApiOperation({ summary: 'restore function Recycle bin items' })\n  @ApiResponseObject(Number)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post('restore')\n  async restoreRecycleBinItems(\n    @Param('appid') appid: string,\n    @Body() dto: RestoreRecycleBinItemsDto,\n  ) {\n    const ids = dto.ids.map((id) => new ObjectId(id))\n    const res =\n      await this.functionRecycleBinService.restoreDeletedCloudFunctions(\n        appid,\n        ids,\n      )\n    if (!res.acknowledged) {\n      return ResponseUtil.error('restore function recycle items failed')\n    }\n    return ResponseUtil.ok(res.insertedCount)\n  }\n\n  @ApiOperation({ summary: 'Get cloud function recycle bin' })\n  @ApiResponsePagination(FunctionRecycleBinItemsDto)\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get()\n  async getRecycleBin(\n    @Param('appid') appid: string,\n    @Query('keyword') keyword?: string,\n    @Query('page') page?: number,\n    @Query('pageSize') pageSize?: number,\n    @Query('startTime') startTime?: number,\n    @Query('endTime') endTime?: number,\n  ) {\n    const query: CloudFunctionRecycleBinQuery = {\n      page: page || 1,\n      pageSize: pageSize || 12,\n    }\n    if (query.pageSize > 100) {\n      query.pageSize = 100\n    }\n    if (startTime) {\n      query.startTime = new Date(startTime)\n    }\n    if (endTime) {\n      query.endTime = new Date(endTime)\n    }\n    if (keyword) {\n      query.name = keyword\n    }\n    const res = await this.functionRecycleBinService.getRecycleBin(appid, query)\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/recycle-bin/cloud-function/function-recycle-bin.service.ts",
    "content": "import { Inject, Injectable, Logger, forwardRef } from '@nestjs/common'\nimport { SystemDatabase } from 'src/system-database'\nimport { ClientSession, ObjectId } from 'mongodb'\nimport { CloudFunction } from 'src/function/entities/cloud-function'\nimport { DataType, RecycleBin } from '../entities/recycle-bin'\nimport { CloudFunctionRecycleBinQuery } from './interface/function-recycle-bin-query.interface'\nimport { FunctionService } from 'src/function/function.service'\n\n@Injectable()\nexport class FunctionRecycleBinService {\n  private readonly logger = new Logger(FunctionRecycleBinService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(\n    @Inject(forwardRef(() => FunctionService))\n    private readonly functionService: FunctionService,\n  ) {}\n\n  async addToRecycleBin(func: CloudFunction, session?: ClientSession) {\n    const res = await this.db\n      .collection<RecycleBin>('RecycleBin')\n      .insertOne(\n        { type: DataType.FUNCTION, data: func, createdAt: new Date() },\n        { session },\n      )\n    return res\n  }\n\n  async getRecycleBinStorage(appid: string) {\n    const res = await this.db\n      .collection<RecycleBin>('RecycleBin')\n      .countDocuments({ type: DataType.FUNCTION, 'data.appid': appid })\n    return res\n  }\n\n  async getRecycleBin(appid: string, condition: CloudFunctionRecycleBinQuery) {\n    const query = {\n      type: DataType.FUNCTION,\n      'data.appid': appid,\n    }\n    if (condition.name) {\n      query['data.name'] = {\n        $regex: condition.name,\n        $options: 'i',\n      }\n    }\n\n    if (condition.startTime) {\n      query['data.createdAt'] = { $gte: condition.startTime }\n    }\n\n    if (condition.endTime) {\n      if (condition.startTime) {\n        query['data.createdAt']['$lte'] = condition.endTime\n      } else {\n        query['data.createdAt'] = { $lte: condition.endTime }\n      }\n    }\n\n    const total = await this.db\n      .collection<RecycleBin>('RecycleBin')\n      .countDocuments(query)\n\n    const functions = await this.db\n      .collection<RecycleBin>('RecycleBin')\n      .aggregate([\n        { $match: query },\n        {\n          $replaceRoot: { newRoot: '$data' },\n        },\n        { $sort: { createdAt: -1 } },\n        { $skip: (condition.page - 1) * condition.pageSize },\n        { $limit: condition.pageSize },\n      ])\n      .toArray()\n\n    const res = {\n      total,\n      list: functions,\n      page: condition.page,\n      pageSize: condition.pageSize,\n    }\n    return res\n  }\n\n  async emptyRecycleBin(appid: string) {\n    const res = await this.db\n      .collection<RecycleBin>('RecycleBin')\n      .deleteMany({ type: DataType.FUNCTION, 'data.appid': appid })\n    return res\n  }\n\n  async deleteFromRecycleBin(appid: string, ids: ObjectId[]) {\n    const res = await this.db.collection<RecycleBin>('RecycleBin').deleteMany({\n      type: DataType.FUNCTION,\n      'data._id': { $in: ids },\n      'data.appid': appid,\n    })\n    return res\n  }\n\n  async restoreDeletedCloudFunctions(appid: string, ids: ObjectId[]) {\n    const client = SystemDatabase.client\n    const session = client.startSession()\n    try {\n      session.startTransaction()\n\n      const recycleBinItems = await this.db\n        .collection<RecycleBin>('RecycleBin')\n        .find({\n          type: DataType.FUNCTION,\n          'data._id': { $in: ids },\n          'data.appid': appid,\n        })\n        .toArray()\n\n      const functions = recycleBinItems.map((item) => item.data)\n\n      const insertResults = await this.db\n        .collection<CloudFunction>('CloudFunction')\n        .insertMany(functions, { session })\n\n      await this.db.collection<RecycleBin>('RecycleBin').deleteMany(\n        {\n          type: DataType.FUNCTION,\n          'data._id': { $in: ids },\n          'data.appid': appid,\n        },\n        { session },\n      )\n\n      await this.functionService.publishMany(functions)\n\n      await session.commitTransaction()\n\n      return insertResults\n    } catch (err) {\n      await session.abortTransaction()\n      this.logger.error(err)\n      throw err\n    } finally {\n      await session.endSession()\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/recycle-bin/cloud-function/interface/function-recycle-bin-query.interface.ts",
    "content": "export interface CloudFunctionRecycleBinQuery {\n  name?: string\n  appid?: string\n  startTime?: Date\n  endTime?: Date\n  page?: number\n  pageSize?: number\n}\n"
  },
  {
    "path": "server/src/recycle-bin/entities/recycle-bin.ts",
    "content": "export enum DataType {\n  FUNCTION = 'function',\n}\n\nexport class RecycleBin {\n  type: DataType\n  data: any\n  createdAt: Date\n}\n"
  },
  {
    "path": "server/src/recycle-bin/recycle-bin.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { FunctionRecycleBinController } from './cloud-function/function-recycle-bin.controller'\nimport { FunctionRecycleBinService } from './cloud-function/function-recycle-bin.service'\nimport { FunctionService } from 'src/function/function.service'\nimport { DatabaseService } from 'src/database/database.service'\nimport { JwtService } from '@nestjs/jwt'\nimport { TriggerService } from 'src/trigger/trigger.service'\nimport { MongoService } from 'src/database/mongo.service'\nimport { RegionService } from 'src/region/region.service'\nimport { ApplicationService } from 'src/application/application.service'\nimport { HttpModule } from '@nestjs/axios'\nimport { DedicatedDatabaseService } from 'src/database/dedicated-database/dedicated-database.service'\n\n@Module({\n  imports: [HttpModule],\n  controllers: [FunctionRecycleBinController],\n  providers: [\n    ApplicationService,\n    DatabaseService,\n    DedicatedDatabaseService,\n    JwtService,\n    TriggerService,\n    FunctionRecycleBinService,\n    FunctionService,\n    MongoService,\n    RegionService,\n  ],\n  exports: [FunctionRecycleBinService],\n})\nexport class RecycleBinModule {}\n"
  },
  {
    "path": "server/src/region/cluster/cluster.service.spec.ts",
    "content": "import { Test, TestingModule } from '@nestjs/testing'\nimport { ClusterService } from './cluster.service'\n\ndescribe('ClusterService', () => {\n  let service: ClusterService\n\n  beforeEach(async () => {\n    const module: TestingModule = await Test.createTestingModule({\n      providers: [ClusterService],\n    }).compile()\n\n    service = module.get<ClusterService>(ClusterService)\n  })\n\n  it('should be defined', () => {\n    expect(service).toBeDefined()\n  })\n})\n"
  },
  {
    "path": "server/src/region/cluster/cluster.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { KubernetesObject, V1Ingress } from '@kubernetes/client-node'\nimport * as k8s from '@kubernetes/client-node'\nimport { GetApplicationNamespace } from 'src/utils/getter'\nimport { compare } from 'fast-json-patch'\nimport { GroupVersionKind } from 'src/region/cluster/types'\nimport {\n  LABEL_KEY_APP_ID,\n  LABEL_KEY_NAMESPACE_TYPE,\n  LABEL_KEY_USER_ID,\n} from 'src/constants'\nimport { ApplicationNamespaceMode, Region } from '../entities/region'\n\n@Injectable()\nexport class ClusterService {\n  private readonly logger = new Logger(ClusterService.name)\n\n  /**\n   * Load kubeconfig of region:\n   * - if region kubeconfig is empty, load from default config (in-cluster service account or ~/.kube/config)\n   * - if region kubeconfig is not empty, load from string\n   */\n  loadKubeConfig(region: Region) {\n    const conf = region.clusterConf.kubeconfig\n    const kc = new k8s.KubeConfig()\n\n    // if conf is empty load from default config (in-cluster service account or ~/.kube/config)\n    if (!conf) {\n      kc.loadFromDefault()\n      return kc\n    }\n\n    // if conf is not empty load from string\n    kc.loadFromString(conf)\n    return kc\n  }\n\n  // create app namespace\n  async createAppNamespace(region: Region, appid: string, userid: string) {\n    try {\n      const namespace = new k8s.V1Namespace()\n      namespace.metadata = new k8s.V1ObjectMeta()\n      namespace.metadata.name = GetApplicationNamespace(region, appid)\n      namespace.metadata.labels = {\n        [LABEL_KEY_APP_ID]: appid,\n        [LABEL_KEY_NAMESPACE_TYPE]: 'app',\n        [LABEL_KEY_USER_ID]: userid,\n      }\n      const coreV1Api = this.makeCoreV1Api(region)\n\n      const res = await coreV1Api.createNamespace(namespace)\n      return res.body\n    } catch (err) {\n      this.logger.error(err)\n      this.logger.error(err?.response?.body)\n      throw err\n    }\n  }\n\n  // get app namespace\n  async getAppNamespace(region: Region, appid: string) {\n    try {\n      const coreV1Api = this.makeCoreV1Api(region)\n      const namespace = GetApplicationNamespace(region, appid)\n      const res = await coreV1Api.readNamespace(namespace)\n      return res.body\n    } catch (err) {\n      if (err?.response?.body?.reason === 'NotFound') return null\n      this.logger.error(err)\n      this.logger.error(err?.response?.body)\n      throw err\n    }\n  }\n\n  // remove app namespace\n  async removeAppNamespace(region: Region, appid: string) {\n    if (region.namespaceConf?.mode !== ApplicationNamespaceMode.AppId) return\n\n    try {\n      const coreV1Api = this.makeCoreV1Api(region)\n      const namespace = GetApplicationNamespace(region, appid)\n      const res = await coreV1Api.deleteNamespace(namespace)\n      return res\n    } catch (err) {\n      this.logger.error(err)\n      this.logger.error(err?.response?.body)\n      throw err\n    }\n  }\n\n  async applyYamlString(region: Region, specString: string) {\n    const api = this.makeObjectApi(region)\n    const specs: KubernetesObject[] = k8s.loadAllYaml(specString)\n    const validSpecs = specs.filter((s) => s && s.kind && s.metadata)\n    const created: k8s.KubernetesObject[] = []\n\n    for (const spec of validSpecs) {\n      spec.metadata = spec.metadata || {}\n      spec.metadata.annotations = spec.metadata.annotations || {}\n      delete spec.metadata.annotations[\n        'kubectl.kubernetes.io/last-applied-configuration'\n      ]\n      spec.metadata.annotations[\n        'kubectl.kubernetes.io/last-applied-configuration'\n      ] = JSON.stringify(spec)\n\n      try {\n        // try to get the resource, if it does not exist an error will be thrown and we will end up in the catch\n        // block.\n        await api.read(spec as any)\n        // we got the resource, so it exists, so patch it\n        //\n        // Note that this could fail if the spec refers to a custom resource. For custom resources you may need\n        // to specify a different patch merge strategy in the content-type header.\n        //\n        // See: https://github.com/kubernetes/kubernetes/issues/97423\n        const response = await api.patch(\n          spec,\n          undefined,\n          undefined,\n          undefined,\n          undefined,\n          {\n            headers: {\n              'Content-Type': k8s.PatchUtils.PATCH_FORMAT_JSON_MERGE_PATCH,\n            },\n          },\n        )\n        created.push(response.body)\n      } catch (e) {\n        // not exist, create\n        const response = await api.create(spec)\n        created.push(response.body)\n      }\n    }\n    return created\n  }\n\n  async deleteYamlString(region: Region, specString: string) {\n    const api = this.makeObjectApi(region)\n    const specs: k8s.KubernetesObject[] = k8s.loadAllYaml(specString)\n    const validSpecs = specs.filter((s) => s && s.kind && s.metadata)\n    const deleted: k8s.KubernetesObject[] = []\n\n    for (const spec of validSpecs) {\n      try {\n        // try to get the resource, if it does not exist an error will be thrown and we will end up in the catch\n        // block.\n        await api.read(spec as any)\n        // we got the resource, so it exists, so delete it\n        const response = await api.delete(spec)\n        deleted.push(response.body)\n      } catch (e) {\n        // not exist\n      }\n    }\n    return deleted\n  }\n\n  async patchCustomObject(region: Region, spec: KubernetesObject) {\n    const client = this.makeCustomObjectApi(region)\n    const gvk = GroupVersionKind.fromKubernetesObject(spec)\n\n    // get the current spec\n    const res = await client.getNamespacedCustomObject(\n      gvk.group,\n      gvk.version,\n      spec.metadata.namespace,\n      gvk.plural,\n      spec.metadata.name,\n    )\n    const currentSpec = res.body as KubernetesObject\n\n    // calculate the patch\n    const patch = compare(currentSpec, spec)\n    const options = {\n      headers: {\n        'Content-Type': k8s.PatchUtils.PATCH_FORMAT_JSON_PATCH,\n      },\n    }\n\n    // apply the patch\n    const response = await client.patchNamespacedCustomObject(\n      gvk.group,\n      gvk.version,\n      spec.metadata.namespace,\n      gvk.plural,\n      spec.metadata.name,\n      patch,\n      undefined,\n      undefined,\n      undefined,\n      options,\n    )\n\n    return response.body\n  }\n\n  async deleteCustomObject(region: Region, spec: KubernetesObject) {\n    const client = this.makeCustomObjectApi(region)\n    const gvk = GroupVersionKind.fromKubernetesObject(spec)\n\n    const response = await client.deleteNamespacedCustomObject(\n      gvk.group,\n      gvk.version,\n      spec.metadata.namespace,\n      gvk.plural,\n      spec.metadata.name,\n    )\n\n    return response.body\n  }\n\n  async getIngress(region: Region, name: string, namespace: string) {\n    const api = this.makeNetworkingApi(region)\n\n    try {\n      const res = await api.readNamespacedIngress(name, namespace)\n      return res.body\n    } catch (err) {\n      // if ingress not found, return null\n      if (err?.response?.statusCode === 404) {\n        return null\n      }\n\n      this.logger.error(err)\n      this.logger.error(err?.response?.body)\n      throw err\n    }\n  }\n\n  async createIngress(region: Region, body: V1Ingress) {\n    body.apiVersion = 'networking.k8s.io/v1'\n    body.kind = 'Ingress'\n    const api = this.makeNetworkingApi(region)\n    const res = await api.createNamespacedIngress(body.metadata.namespace, body)\n    return res.body\n  }\n\n  async deleteIngress(region: Region, name: string, namespace: string) {\n    const api = this.makeNetworkingApi(region)\n    const res = await api.deleteNamespacedIngress(name, namespace)\n    return res.body\n  }\n\n  makeCoreV1Api(region: Region) {\n    const kc = this.loadKubeConfig(region)\n    return kc.makeApiClient(k8s.CoreV1Api)\n  }\n\n  makeAppsV1Api(region: Region) {\n    const kc = this.loadKubeConfig(region)\n    return kc.makeApiClient(k8s.AppsV1Api)\n  }\n\n  makeBatchV1Api(region: Region) {\n    const kc = this.loadKubeConfig(region)\n    return kc.makeApiClient(k8s.BatchV1Api)\n  }\n\n  makeObjectApi(region: Region) {\n    const kc = this.loadKubeConfig(region)\n    return kc.makeApiClient(k8s.KubernetesObjectApi)\n  }\n\n  makeCustomObjectApi(region: Region) {\n    const kc = this.loadKubeConfig(region)\n    return kc.makeApiClient(k8s.CustomObjectsApi)\n  }\n\n  makeHorizontalPodAutoscalingV2Api(region: Region) {\n    const kc = this.loadKubeConfig(region)\n    return kc.makeApiClient(k8s.AutoscalingV2Api)\n  }\n\n  makeNetworkingApi(region: Region) {\n    const kc = this.loadKubeConfig(region)\n    return kc.makeApiClient(k8s.NetworkingV1Api)\n  }\n}\n"
  },
  {
    "path": "server/src/region/cluster/types.ts",
    "content": "import { KubernetesObject, V1ObjectMeta } from '@kubernetes/client-node'\nimport { ApiProperty } from '@nestjs/swagger'\nimport * as assert from 'node:assert'\n\nexport enum ConditionStatus {\n  ConditionTrue = 'True',\n  ConditionFalse = 'False',\n  ConditionUnknown = 'Unknown',\n}\n\nexport class ObjectMeta implements V1ObjectMeta {\n  /**\n   * Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names\n   */\n  @ApiProperty()\n  name: string\n\n  /**\n   * Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \\\"default\\\" namespace, but \\\"default\\\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.  Must be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces\n   */\n  @ApiProperty()\n  namespace: string\n\n  /**\n   * Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels\n   */\n  @ApiProperty({\n    required: false,\n    type: Object,\n  })\n  labels?: {\n    [key: string]: string\n  }\n\n  constructor(name?: string, namespace?: string) {\n    this.name = name\n    this.namespace = namespace\n  }\n}\n\nexport class Condition {\n  @ApiProperty()\n  type: string\n\n  @ApiProperty({\n    enum: ConditionStatus,\n  })\n  status: ConditionStatus\n\n  @ApiProperty()\n  reason?: string\n\n  @ApiProperty()\n  message?: string\n}\n\nexport class GroupVersionKind {\n  group: string\n\n  version: string\n\n  kind: string\n\n  plural: string\n\n  constructor(group: string, version: string, kind: string, plural?: string) {\n    assert(group, 'group is required')\n    assert(version, 'version is required')\n    assert(kind, 'kind is required')\n\n    this.group = group\n    this.version = version\n    this.kind = kind\n    this.plural = plural\n    if (!plural) {\n      this.plural = kind.toLowerCase() + 's'\n    }\n  }\n\n  static fromKubernetesObject(obj: KubernetesObject): GroupVersionKind {\n    assert(obj.apiVersion, 'apiVersion is required')\n    assert(obj.kind, 'kind is required')\n\n    return new GroupVersionKind(\n      obj.apiVersion.split('/')[0],\n      obj.apiVersion.split('/')[1],\n      obj.kind,\n    )\n  }\n\n  get apiVersion(): string {\n    return `${this.group}/${this.version}`\n  }\n}\n"
  },
  {
    "path": "server/src/region/entities/region.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport enum ApplicationNamespaceMode {\n  Fixed = 'fixed',\n  AppId = 'appid',\n}\n\nexport type RegionNamespaceConf = {\n  mode: ApplicationNamespaceMode\n  prefix: string\n  fixed?: string\n}\n\nexport type RegionClusterConf = {\n  driver: string\n  kubeconfig: string\n  npmInstallFlags: string\n  runtimeAffinity: any\n}\n\nexport type RegionResourceBundleConf = {\n  cpuRequestLimitRatio: number\n  memoryRequestLimitRatio: number\n}\n\nexport type RegionDatabaseConf = {\n  driver: string\n  connectionUri: string\n  controlConnectionUri: string\n  dedicatedDatabase: {\n    enabled: boolean\n  }\n}\n\nexport type TLSConf = {\n  enabled: boolean\n  issuerRef: {\n    name: string\n    kind: 'ClusterIssuer' | 'Issuer'\n  }\n  wildcardCertificateSecretName?: string\n}\n\nexport type RegionGatewayConf = {\n  driver: 'apisix' | 'nginx'\n  runtimeDomain: string\n  websiteDomain: string\n  port: number\n  tls: TLSConf\n}\n\nexport type RegionStorageConf = {\n  driver: string\n  domain: string\n  externalEndpoint: string\n  internalEndpoint: string\n  accessKey: string\n  secretKey: string\n  controlEndpoint: string\n}\n\nexport type LogServerConf = {\n  apiUrl: string\n  secret: string\n  databaseUrl: string\n}\n\nexport type PrometheusConf = {\n  apiUrl: string\n}\n\nexport type DeployManifest = {\n  [key: string]: string\n}\n\nexport class Region {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  name: string\n\n  @ApiProperty()\n  displayName: string\n\n  namespaceConf: RegionNamespaceConf\n  clusterConf: RegionClusterConf\n  bundleConf: RegionResourceBundleConf\n  databaseConf: RegionDatabaseConf\n  gatewayConf: RegionGatewayConf\n  storageConf: RegionStorageConf\n  logServerConf: LogServerConf\n  prometheusConf: PrometheusConf\n\n  deployManifest: DeployManifest\n\n  @ApiProperty()\n  state: 'Active' | 'Inactive'\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n\n  constructor(partial: Partial<Region>) {\n    Object.assign(this, partial)\n  }\n}\n"
  },
  {
    "path": "server/src/region/region.controller.ts",
    "content": "import { Controller, Get, Logger } from '@nestjs/common'\nimport { ApiOperation, ApiTags } from '@nestjs/swagger'\nimport { ResponseUtil } from '../utils/response'\nimport { RegionService } from './region.service'\n\n@ApiTags('Public')\n@Controller('regions')\nexport class RegionController {\n  private readonly logger = new Logger(RegionController.name)\n  constructor(private readonly regionService: RegionService) {}\n\n  /**\n   * Get region list\n   * @returns\n   */\n  @ApiOperation({ summary: 'Get region list' })\n  @Get()\n  async getRegions() {\n    const data = await this.regionService.findAllDesensitized()\n    return ResponseUtil.ok(data)\n  }\n}\n"
  },
  {
    "path": "server/src/region/region.module.ts",
    "content": "import { Global, Module } from '@nestjs/common'\nimport { RegionService } from './region.service'\nimport { RegionController } from './region.controller'\nimport { ClusterService } from './cluster/cluster.service'\n\n@Global()\n@Module({\n  providers: [RegionService, ClusterService],\n  controllers: [RegionController],\n  exports: [RegionService, ClusterService],\n})\nexport class RegionModule {}\n"
  },
  {
    "path": "server/src/region/region.service.ts",
    "content": "import { Injectable } from '@nestjs/common'\nimport { SystemDatabase } from 'src/system-database'\nimport { Region } from './entities/region'\nimport { Application } from 'src/application/entities/application'\nimport { assert } from 'console'\nimport { ObjectId } from 'mongodb'\n\n@Injectable()\nexport class RegionService {\n  private readonly db = SystemDatabase.db\n\n  async findByAppId(appid: string) {\n    const app = await this.db\n      .collection<Application>('Application')\n      .findOne({ appid })\n\n    assert(app, `Application ${appid} not found`)\n    const doc = await this.db\n      .collection<Region>('Region')\n      .findOne({ _id: app.regionId })\n\n    return doc\n  }\n\n  async findOne(id: ObjectId) {\n    const doc = await this.db.collection<Region>('Region').findOne({ _id: id })\n    return doc\n  }\n\n  async findAll() {\n    const regions = await this.db.collection<Region>('Region').find().toArray()\n    return regions\n  }\n\n  async findOneDesensitized(id: ObjectId) {\n    const projection = {\n      _id: 1,\n      name: 1,\n      displayName: 1,\n      state: 1,\n      dedicatedDatabase: '$databaseConf.dedicatedDatabase.enabled',\n    }\n\n    const region = await this.db\n      .collection<Region>('Region')\n      .findOne({ _id: new ObjectId(id) }, { projection })\n\n    return region\n  }\n\n  async findAllDesensitized() {\n    const projection = {\n      _id: 1,\n      name: 1,\n      displayName: 1,\n      state: 1,\n      bundles: 1,\n      dedicatedDatabase: '$databaseConf.dedicatedDatabase.enabled',\n    }\n\n    const regions = await this.db\n      .collection<Region>('Region')\n      .aggregate()\n      .match({})\n      .lookup({\n        from: 'ResourceBundle',\n        localField: '_id',\n        foreignField: 'regionId',\n        as: 'bundles',\n      })\n      .project(projection)\n      .toArray()\n\n    return regions\n  }\n}\n"
  },
  {
    "path": "server/src/runtime-builtin-deps.ts",
    "content": "export const RUNTIME_BUILTIN_DEPENDENCIES = {\n  '@aws-sdk/client-s3': '^3.231.0',\n  '@aws-sdk/client-sts': '^3.231.0',\n  '@aws-sdk/s3-request-presigner': '^3.231.0',\n  '@kubernetes/client-node': '^0.18.0',\n  '@lafjs/cloud': '^1.0.0-beta.13',\n  '@types/pako': '^2.0.2',\n  axios: '^1.4.0',\n  chalk: '^4.1.2',\n  chatgpt: '^5.2.5',\n  cors: '^2.8.5',\n  'database-proxy': '^1.0.0-beta.12',\n  dayjs: '^1.11.7',\n  dotenv: '^8.2.0',\n  ejs: '^3.1.8',\n  express: '^4.18.2',\n  'express-http-proxy': '^2.0.0',\n  'express-xml-bodyparser': '^0.3.0',\n  jsonwebtoken: '^9.0.0',\n  lodash: '^4.17.21',\n  minio: '^7.0.32',\n  mongodb: '^4.12.1',\n  'mongodb-uri': '^0.9.7',\n  multer: '^1.4.5-lts.1',\n  'node-modules-utils': '^0.8.2',\n  nodemailer: '^6.6.3',\n  pako: '^2.1.0',\n  validator: '^13.7.0',\n  ws: '^8.11.0',\n  // dev dependencies\n  '@types/cors': '^2.8.13',\n  '@types/dotenv': '^8.2.0',\n  '@types/ejs': '^3.1.1',\n  '@types/express': '^4.17.15',\n  '@types/express-http-proxy': '^1.6.3',\n  '@types/express-xml-bodyparser': '^0.3.2',\n  '@types/jsonwebtoken': '^8.5.1',\n  '@types/lodash': '^4.14.171',\n  '@types/mongodb-uri': '^0.9.1',\n  '@types/multer': '^1.4.5',\n  '@types/node': '^18.11.15',\n  '@types/nodemailer': '^6.4.4',\n  '@types/validator': '^13.1.3',\n  '@types/ws': '^8.5.3',\n  typescript: '^5.0.2',\n}\n"
  },
  {
    "path": "server/src/setting/entities/setting.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport enum SettingKey {\n  SiteTitle = 'site_title',\n  SiteName = 'site_name',\n  SiteDescription = 'site_description',\n  SiteKeywords = 'site_keywords',\n  SiteLogo = 'site_logo',\n  SiteFavicon = 'site_favicon',\n  SiteUrl = 'site_url',\n  SiteFooter = 'site_footer',\n  InvitationProfit = 'invitation_profit',\n  IdVerify = 'id_verify',\n  DefaultUserQuota = 'default_user_quota',\n  SignupBonus = 'signup_bonus',\n\n  AiPilotUrl = 'ai_pilot_url',\n  LafForumUrl = 'laf_forum_url',\n  LafBusinessUrl = 'laf_business_url',\n  LafDiscordUrl = 'laf_discord_url',\n  LafWeChatUrl = 'laf_wechat_url',\n  LafStatusUrl = 'laf_status_url',\n  LafAboutUsUrl = 'laf_about_us_url',\n  LafDocUrl = 'laf_doc_url',\n\n  EnableWebPromoPage = 'enable_web_promo_page',\n  SealafNotification = 'sealaf_notification',\n\n  AppCreateTimeOut = 'app_create_timeout',\n}\n\nexport class Setting {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  public: boolean\n\n  @ApiProperty({ type: String, enum: SettingKey })\n  key: SettingKey | string\n\n  @ApiProperty()\n  value: string\n\n  @ApiPropertyOptional()\n  desc?: string\n\n  @ApiPropertyOptional()\n  metadata?: any\n}\n"
  },
  {
    "path": "server/src/setting/setting.controller.ts",
    "content": "import { Controller, Get, Logger, Param } from '@nestjs/common'\nimport { ApiOperation, ApiTags } from '@nestjs/swagger'\nimport { ResponseUtil } from 'src/utils/response'\nimport { SettingService } from './setting.service'\n\n@ApiTags('Public')\n@Controller('settings')\nexport class SettingController {\n  private readonly logger = new Logger(SettingController.name)\n\n  constructor(private readonly settingService: SettingService) {}\n\n  /**\n   * Get site settings\n   */\n  @ApiOperation({ summary: 'Get site settings' })\n  @Get()\n  async getSettings() {\n    const data = await this.settingService.findAllPublic()\n    return ResponseUtil.ok(data)\n  }\n\n  /**\n   * Get one site setting by key\n   */\n  @ApiOperation({ summary: 'Get one site setting by key' })\n  @Get(':key')\n  async getSettingByKey(@Param('key') key: string) {\n    const data = await this.settingService.findOnePublic(key)\n    if (!data) {\n      return ResponseUtil.error('Setting not found')\n    }\n    return ResponseUtil.ok(data)\n  }\n}\n"
  },
  {
    "path": "server/src/setting/setting.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { SettingService } from './setting.service'\nimport { SettingController } from './setting.controller'\n\n@Module({\n  providers: [SettingService],\n  controllers: [SettingController],\n})\nexport class SettingModule {}\n"
  },
  {
    "path": "server/src/setting/setting.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { SystemDatabase } from 'src/system-database'\nimport { Setting } from './entities/setting'\n\n@Injectable()\nexport class SettingService {\n  private readonly logger = new Logger(SettingService.name)\n  private readonly db = SystemDatabase.db\n\n  async findAllPublic() {\n    return await this.db\n      .collection<Setting>('Setting')\n      .find({ public: true })\n      .toArray()\n  }\n\n  async findOnePublic(key: string) {\n    return await this.db.collection<Setting>('Setting').findOne({ key })\n  }\n\n  async findAll() {\n    return await this.db.collection<Setting>('Setting').find({}).toArray()\n  }\n\n  async findOne(key: string) {\n    return await this.db.collection<Setting>('Setting').findOne({ key })\n  }\n}\n"
  },
  {
    "path": "server/src/storage/bucket-task.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { RegionService } from 'src/region/region.service'\nimport * as assert from 'node:assert'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport { ServerConfig, TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport { MinioService } from './minio/minio.service'\nimport { BucketDomainService } from 'src/gateway/bucket-domain.service'\nimport { StorageBucket } from './entities/storage-bucket'\nimport { StoragePhase, StorageState } from './entities/storage-user'\nimport { DomainState } from 'src/gateway/entities/runtime-domain'\nimport { WebsiteHosting } from 'src/website/entities/website'\n\n@Injectable()\nexport class BucketTaskService {\n  readonly lockTimeout = 30 // in second\n  private readonly logger = new Logger(BucketTaskService.name)\n\n  constructor(\n    private readonly bucketDomainService: BucketDomainService,\n    private readonly minioService: MinioService,\n    private readonly regionService: RegionService,\n  ) {}\n\n  @Cron(CronExpression.EVERY_SECOND)\n  async tick() {\n    if (ServerConfig.DISABLED_STORAGE_TASK) {\n      return\n    }\n\n    // Phase `Creating` -> `Created`\n    this.handleCreatingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Created` -> `Deleting`\n    this.handleInactiveState().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleted` -> `Creating`\n    this.handleActiveState().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletedState().catch((err) => {\n      this.logger.error(err)\n    })\n  }\n\n  /**\n   * Phase `Creating`:\n   * - create bucket\n   * - move phase `Creating` to `Created`\n   */\n  async handleCreatingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<StorageBucket>('StorageBucket')\n      .findOneAndUpdate(\n        {\n          phase: StoragePhase.Creating,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n    if (!res.value) return\n\n    // get region by appid\n    const doc = res.value\n    const region = await this.regionService.findByAppId(doc.appid)\n    assert(region, 'region not found')\n\n    // create bucket in minio if not exists\n    const out = await this.minioService.headBucket(region, doc.name)\n    if (!out) {\n      // create bucket in minio\n      const out = await this.minioService.createBucket(\n        region,\n        doc.name,\n        doc.policy,\n      )\n\n      if (out.$metadata.httpStatusCode !== 200) {\n        this.logger.error('create bucket in minio failed: ', out)\n        return\n      }\n\n      this.logger.debug('minio bucket created:', doc.name)\n    } else {\n      this.logger.debug(\n        'minio bucket exists, try to update bucket policy:',\n        doc.name,\n      )\n      await this.minioService.updateBucketPolicy(region, doc.name, doc.policy)\n    }\n\n    // create bucket domain if not exists\n    let domain = await this.bucketDomainService.findOne(doc)\n    if (!domain) {\n      domain = await this.bucketDomainService.create(doc)\n      this.logger.debug('bucket domain created:', domain)\n    }\n\n    // update phase to `Created`\n    const updated = await db\n      .collection<StorageBucket>('StorageBucket')\n      .updateOne(\n        { _id: doc._id, phase: StoragePhase.Creating },\n        {\n          $set: { phase: StoragePhase.Created, lockedAt: TASK_LOCK_INIT_TIME },\n        },\n      )\n\n    if (updated.modifiedCount > 0)\n      this.logger.debug('bucket phase updated to Created', doc)\n  }\n\n  /**\n   * Phase `Deleting`:\n   * - delete bucket\n   * - move phase `Deleting` to `Deleted`\n   */\n  async handleDeletingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<StorageBucket>('StorageBucket')\n      .findOneAndUpdate(\n        {\n          phase: StoragePhase.Deleting,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n    if (!res.value) return\n\n    // get region by appid\n    const doc = res.value\n    const region = await this.regionService.findByAppId(doc.appid)\n    assert(region, 'region not found')\n\n    // delete bucket in minio\n    const exists = await this.minioService.headBucket(region, doc.name)\n    if (exists) {\n      const out = await this.minioService.forceDeleteBucket(region, doc.name)\n\n      if (out.status === 'error') {\n        this.logger.error('delete bucket in minio failed: ', out)\n        return\n      }\n      this.logger.debug('minio bucket deleted:', doc.name)\n    }\n\n    // delete bucket website if exists\n    const websiteRes = await db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .updateMany(\n        { appid: doc.appid, bucketName: doc.name },\n        { $set: { state: DomainState.Deleted } },\n      )\n\n    if (websiteRes.modifiedCount > 0) {\n      this.logger.log('website state set to Deleted for bucket: ' + doc.name)\n    }\n\n    // delete bucket domain\n    const domain = await this.bucketDomainService.findOne(doc)\n    if (domain) {\n      await this.bucketDomainService.deleteOne(doc)\n      this.logger.debug('bucket domain deleted:', domain)\n    }\n\n    // update phase to `Deleted`\n    const updated = await db\n      .collection<StorageBucket>('StorageBucket')\n      .updateOne(\n        { _id: doc._id, phase: StoragePhase.Deleting },\n        {\n          $set: { phase: StoragePhase.Deleted, lockedAt: TASK_LOCK_INIT_TIME },\n        },\n      )\n\n    if (updated.modifiedCount > 0)\n      this.logger.debug('bucket phase updated to Deleted', doc)\n  }\n\n  /**\n   * State `Active`:\n   * - move phase `Deleted` to `Creating`\n   */\n  async handleActiveState() {\n    const db = SystemDatabase.db\n\n    await db.collection<StorageBucket>('StorageBucket').updateMany(\n      {\n        state: StorageState.Active,\n        phase: StoragePhase.Deleted,\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: { phase: StoragePhase.Creating, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n  }\n\n  /**\n   * State `Inactive`:\n   * - move `Created` to `Deleting`\n   */\n  async handleInactiveState() {\n    const db = SystemDatabase.db\n\n    await db.collection<StorageBucket>('StorageBucket').updateMany(\n      {\n        state: StorageState.Inactive,\n        phase: StoragePhase.Created,\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: { phase: StoragePhase.Deleting, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n  }\n\n  /**\n   * State `Deleted`:\n   * - move `Created` to `Deleting`\n   * - delete `Deleted` documents\n   */\n  async handleDeletedState() {\n    const db = SystemDatabase.db\n\n    await db.collection<StorageBucket>('StorageBucket').updateMany(\n      {\n        state: StorageState.Deleted,\n        phase: { $in: [StoragePhase.Created, StoragePhase.Creating] },\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: { phase: StoragePhase.Deleting, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n\n    await db\n      .collection<StorageBucket>('StorageBucket')\n      .deleteMany({ state: StorageState.Deleted, phase: StoragePhase.Deleted })\n  }\n}\n"
  },
  {
    "path": "server/src/storage/bucket.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Post,\n  Body,\n  Patch,\n  Param,\n  Delete,\n  UseGuards,\n  Req,\n  Logger,\n  HttpException,\n  HttpStatus,\n} from '@nestjs/common'\nimport {\n  ApiBearerAuth,\n  ApiOperation,\n  ApiResponse,\n  ApiTags,\n} from '@nestjs/swagger'\nimport { IRequest } from '../utils/interface'\nimport { ResponseUtil } from '../utils/response'\nimport { CreateBucketDto } from './dto/create-bucket.dto'\nimport { UpdateBucketDto } from './dto/update-bucket.dto'\nimport { BucketService } from './bucket.service'\nimport { BundleService } from 'src/application/bundle.service'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\n\n@ApiTags('Storage')\n@ApiBearerAuth('Authorization')\n@Controller('apps/:appid/buckets')\nexport class BucketController {\n  private readonly logger = new Logger(BucketController.name)\n\n  constructor(\n    private readonly bucketService: BucketService,\n    private readonly bundleService: BundleService,\n  ) {}\n\n  /**\n   * Create a new bucket\n   * @param dto\n   * @param req\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Create a new bucket' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post()\n  async create(\n    @Param('appid') appid: string,\n    @Body() dto: CreateBucketDto,\n    @Req() req: IRequest,\n  ) {\n    const app = req.application\n\n    // check bucket count limit\n    const bundle = await this.bundleService.findOne(appid)\n    const LIMIT_COUNT = bundle?.resource?.limitCountOfBucket || 0\n    const count = await this.bucketService.count(appid)\n    if (count >= LIMIT_COUNT) {\n      return ResponseUtil.error(\n        `bucket count limit exceeded, limit: ${LIMIT_COUNT}`,\n      )\n    }\n\n    // check if the bucket name is unique\n    const found = await this.bucketService.findOne(appid, dto.fullname(appid))\n    if (found) {\n      return ResponseUtil.error('bucket name is already existed')\n    }\n\n    // create bucket\n    const bucket = await this.bucketService.create(app.appid, dto)\n    if (!bucket) {\n      return ResponseUtil.error('create bucket failed')\n    }\n\n    return ResponseUtil.ok(bucket)\n  }\n\n  /**\n   * Get bucket list of an app\n   * @param appid\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Get bucket list of an app' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get()\n  async findAll(@Param('appid') appid: string) {\n    const data = await this.bucketService.findAll(appid)\n    return ResponseUtil.ok(data)\n  }\n\n  /**\n   * Get a bucket by name\n   * @param appid\n   * @param name\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Get a bucket by name' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get(':name')\n  async findOne(@Param('appid') appid: string, @Param('name') name: string) {\n    const data = await this.bucketService.findOne(appid, name)\n    if (!data) {\n      throw new HttpException('bucket not found', HttpStatus.NOT_FOUND)\n    }\n    return ResponseUtil.ok(data)\n  }\n\n  /**\n   * Update a bucket\n   * @param appid\n   * @param name  bucket name\n   * @param dto\n   * @returns\n   */\n  @ApiOperation({ summary: 'Update a bucket' })\n  @ApiResponse({ type: ResponseUtil })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Patch(':name')\n  async update(\n    @Param('appid') appid: string,\n    @Param('name') name: string,\n    @Body() dto: UpdateBucketDto,\n  ) {\n    const bucket = await this.bucketService.findOne(appid, name)\n    if (!bucket) {\n      throw new HttpException('bucket not found', HttpStatus.NOT_FOUND)\n    }\n\n    const res = await this.bucketService.updateOne(bucket, dto)\n    if (!res) {\n      return ResponseUtil.error('update bucket failed')\n    }\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Delete a bucket\n   * @param appid\n   * @param name bucket name\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @ApiOperation({ summary: 'Delete a bucket' })\n  @Delete(':name')\n  async remove(@Param('appid') appid: string, @Param('name') name: string) {\n    const bucket = await this.bucketService.findOne(appid, name)\n    if (!bucket) {\n      throw new HttpException('bucket not found', HttpStatus.NOT_FOUND)\n    }\n\n    if (bucket?.websiteHosting) {\n      return ResponseUtil.error(\n        'bucket has website hosting enabled, please delete it first',\n      )\n    }\n\n    const res = await this.bucketService.deleteOne(bucket)\n    if (!res) {\n      return ResponseUtil.error('delete bucket failed')\n    }\n\n    return ResponseUtil.ok(res)\n  }\n\n  async getSTSPolicy() {\n    const policy = {\n      Version: '2012-10-17',\n      Statement: [\n        {\n          Sid: `app-sts-full-grant`,\n          Effect: 'Allow',\n          Action: 's3:*',\n          Resource: 'arn:aws:s3:::*',\n        },\n      ],\n    }\n    return JSON.stringify(policy)\n  }\n}\n"
  },
  {
    "path": "server/src/storage/bucket.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { RegionService } from '../region/region.service'\nimport { CreateBucketDto } from './dto/create-bucket.dto'\nimport { UpdateBucketDto } from './dto/update-bucket.dto'\nimport { MinioService } from './minio/minio.service'\nimport { SystemDatabase } from 'src/system-database'\nimport { StorageBucket, StorageWithRelations } from './entities/storage-bucket'\nimport { StoragePhase, StorageState } from './entities/storage-user'\n\n@Injectable()\nexport class BucketService {\n  private readonly logger = new Logger(BucketService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(\n    private readonly minioService: MinioService,\n    private readonly regionService: RegionService,\n  ) {}\n\n  async create(appid: string, dto: CreateBucketDto) {\n    const bucketName = dto.fullname(appid)\n\n    // create bucket in db\n    await this.db.collection<StorageBucket>('StorageBucket').insertOne({\n      appid: appid,\n      name: bucketName,\n      policy: dto.policy,\n      shortName: dto.shortName,\n      state: StorageState.Active,\n      phase: StoragePhase.Creating,\n      lockedAt: TASK_LOCK_INIT_TIME,\n      updatedAt: new Date(),\n      createdAt: new Date(),\n    })\n\n    return this.findOne(appid, bucketName)\n  }\n\n  async count(appid: string) {\n    const count = await this.db\n      .collection<StorageBucket>('StorageBucket')\n      .countDocuments({ appid })\n\n    return count\n  }\n\n  async findOne(appid: string, name: string) {\n    const bucket = await this.db\n      .collection('StorageBucket')\n      .aggregate<StorageWithRelations>()\n      .match({ appid, name })\n      .lookup({\n        from: 'BucketDomain',\n        localField: 'name',\n        foreignField: 'bucketName',\n        as: 'domain',\n      })\n      .unwind({\n        path: '$domain',\n        preserveNullAndEmptyArrays: true,\n      })\n      .lookup({\n        from: 'WebsiteHosting',\n        localField: 'name',\n        foreignField: 'bucketName',\n        as: 'websiteHosting',\n      })\n      .unwind({\n        path: '$websiteHosting',\n        preserveNullAndEmptyArrays: true,\n      })\n      .next()\n\n    return bucket\n  }\n\n  async findAll(appid: string) {\n    const buckets = await this.db\n      .collection('StorageBucket')\n      .aggregate<StorageWithRelations>()\n      .match({ appid })\n      .lookup({\n        from: 'BucketDomain',\n        localField: 'name',\n        foreignField: 'bucketName',\n        as: 'domain',\n      })\n      .unwind({\n        path: '$domain',\n        preserveNullAndEmptyArrays: true,\n      })\n      .lookup({\n        from: 'WebsiteHosting',\n        localField: 'name',\n        foreignField: 'bucketName',\n        as: 'websiteHosting',\n      })\n      .unwind({\n        path: '$websiteHosting',\n        preserveNullAndEmptyArrays: true,\n      })\n      .toArray()\n\n    return buckets\n  }\n\n  async updateOne(bucket: StorageBucket, dto: UpdateBucketDto) {\n    // update bucket in minio\n    const region = await this.regionService.findByAppId(bucket.appid)\n    const out = await this.minioService.updateBucketPolicy(\n      region,\n      bucket.name,\n      dto.policy,\n    )\n    if (out.$metadata.httpStatusCode !== 204) {\n      this.logger.error('update bucket in minio failed: ', out)\n      return false\n    }\n\n    // update bucket in db\n    const res = await this.db\n      .collection<StorageBucket>('StorageBucket')\n      .findOneAndUpdate(\n        { appid: bucket.appid, name: bucket.name },\n        { $set: { policy: dto.policy, updatedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    return res\n  }\n\n  async deleteOne(bucket: StorageBucket) {\n    const res = await this.db\n      .collection<StorageBucket>('StorageBucket')\n      .findOneAndUpdate(\n        { appid: bucket.appid, name: bucket.name },\n        { $set: { state: StorageState.Deleted, updatedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n\n    return res\n  }\n}\n"
  },
  {
    "path": "server/src/storage/cloud-bin-bucket.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { RegionService } from '../region/region.service'\nimport { SystemDatabase } from 'src/system-database'\nimport { BucketPolicy } from './entities/storage-bucket'\nimport { BucketService } from './bucket.service'\nimport { CreateBucketDto } from './dto/create-bucket.dto'\nimport { S3, GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3'\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner'\nimport * as assert from 'assert'\n\n@Injectable()\nexport class CloudBinBucketService {\n  private readonly logger = new Logger(CloudBinBucketService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(\n    // private readonly storageService: StorageService,\n    private readonly regionService: RegionService,\n    private readonly bucketService: BucketService,\n  ) {}\n\n  // get cloud-bin bucket or create it if not exists\n  async ensureCloudBinBucket(appid: string) {\n    const shortName = `cloud-bin`\n    const bucketName = `${appid}-${shortName}`\n    const bucket = await this.bucketService.findOne(appid, bucketName)\n    if (bucket) {\n      return bucket\n    }\n\n    // create cloud-bin bucket in db\n    const dto = new CreateBucketDto()\n    dto.shortName = shortName\n    dto.policy = BucketPolicy.private\n    const created = await this.bucketService.create(appid, dto)\n    this.logger.log(`creating cloud-bin bucket ${bucketName} for app ${appid}`)\n\n    return created\n  }\n\n  async createPullUrl(appid: string, filename: string) {\n    const bucket = await this.ensureCloudBinBucket(appid)\n    const command = new GetObjectCommand({\n      Bucket: bucket.name,\n      Key: filename,\n    })\n\n    const client = await this.getS3Client(appid)\n    const url = await getSignedUrl(client, command, {\n      expiresIn: 3600 * 24 * 7,\n    })\n\n    return url\n  }\n\n  async createPushUrl(appid: string, filename: string) {\n    const bucket = await this.ensureCloudBinBucket(appid)\n    const client = await this.getS3Client(appid)\n    const command = new PutObjectCommand({\n      Bucket: bucket.name,\n      Key: filename,\n    })\n    const url = await getSignedUrl(client, command, {\n      expiresIn: 3600 * 24 * 7,\n    })\n\n    return url\n  }\n\n  async getS3Client(appid: string) {\n    const region = await this.regionService.findByAppId(appid)\n    assert(region, `region not found for app ${appid}`)\n\n    const conf = region.storageConf\n    // const storage = await this.storageService.findOne(appid)\n\n    const client = new S3({\n      region: region.name,\n      endpoint: conf.internalEndpoint,\n      credentials: {\n        accessKeyId: conf.accessKey,\n        secretAccessKey: conf.secretKey,\n      },\n      forcePathStyle: true,\n    })\n\n    return client\n  }\n\n  async getNodeModulesCachePullUrl(appid: string) {\n    return await this.createPullUrl(appid, 'node_modules.tar')\n  }\n\n  async getNodeModulesCachePushUrl(appid: string) {\n    return await this.createPushUrl(appid, 'node_modules.tar')\n  }\n}\n"
  },
  {
    "path": "server/src/storage/dto/create-bucket.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsEnum, IsNotEmpty, Matches } from 'class-validator'\nimport { BucketPolicy } from '../entities/storage-bucket'\n\nexport class CreateBucketDto {\n  @ApiProperty({\n    description: 'The short name of the bucket which not contain the appid',\n  })\n  @IsNotEmpty()\n  @Matches(/^[a-z0-9][a-z0-9-]{1,30}[a-z0-9]$/)\n  shortName: string\n\n  @ApiProperty({\n    enum: BucketPolicy,\n  })\n  @IsEnum(BucketPolicy)\n  @IsNotEmpty()\n  policy: BucketPolicy\n\n  fullname(appid: string) {\n    return `${appid}-${this.shortName}`\n  }\n}\n"
  },
  {
    "path": "server/src/storage/dto/update-bucket.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsEnum } from 'class-validator'\nimport { BucketPolicy } from '../entities/storage-bucket'\n\nexport class UpdateBucketDto {\n  @ApiProperty({ enum: BucketPolicy })\n  @IsEnum(BucketPolicy)\n  policy: BucketPolicy\n}\n"
  },
  {
    "path": "server/src/storage/entities/minio.ts",
    "content": "export class MinioUser {\n  accessKey: string\n  policyName: string\n  userStatus: 'enabled' | 'disabled'\n  memberOf: {\n    name: string\n    policies: string[]\n  }[]\n}\n"
  },
  {
    "path": "server/src/storage/entities/storage-bucket.ts",
    "content": "import { ObjectId } from 'mongodb'\nimport { StoragePhase, StorageState } from './storage-user'\nimport { WebsiteHosting } from 'src/website/entities/website'\nimport { BucketDomain } from 'src/gateway/entities/bucket-domain'\n\nexport enum BucketPolicy {\n  readwrite = 'readwrite',\n  readonly = 'readonly',\n  private = 'private',\n}\n\nexport class StorageBucket {\n  _id?: ObjectId\n  appid: string\n  name: string\n  shortName: string\n  policy: BucketPolicy\n  state: StorageState\n  phase: StoragePhase\n  lockedAt: Date\n  createdAt: Date\n  updatedAt: Date\n}\n\nexport type StorageWithRelations = StorageBucket & {\n  domain: BucketDomain\n  websiteHosting: WebsiteHosting\n}\n"
  },
  {
    "path": "server/src/storage/entities/storage-user.ts",
    "content": "import { ObjectId } from 'mongodb'\n\nexport enum StoragePhase {\n  Creating = 'Creating',\n  Created = 'Created',\n  Deleting = 'Deleting',\n  Deleted = 'Deleted',\n}\n\nexport enum StorageState {\n  Active = 'Active',\n  Inactive = 'Inactive',\n  Deleted = 'Deleted',\n}\n\nexport class StorageUser {\n  _id?: ObjectId\n  appid: string\n  accessKey: string\n  secretKey: string\n  state: StorageState\n  phase: StoragePhase\n  dataSize: number\n  lockedAt: Date\n  usageCaptureLockedAt: Date\n  usageLimitLockedAt: Date\n  createdAt: Date\n  updatedAt: Date\n\n  constructor(partial: Partial<StorageUser>) {\n    Object.assign(this, partial)\n  }\n}\n"
  },
  {
    "path": "server/src/storage/minio/minio.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport {\n  CreateBucketCommand,\n  DeleteBucketCommand,\n  DeleteBucketPolicyCommand,\n  HeadBucketCommand,\n  PutBucketPolicyCommand,\n  S3,\n} from '@aws-sdk/client-s3'\nimport * as assert from 'node:assert'\nimport * as cp from 'child_process'\nimport { promisify } from 'util'\nimport { MinioCommandExecOutput } from './types'\nimport {\n  MINIO_COMMON_USER_GROUP,\n  MINIO_READONLY_USER_GROUP,\n} from 'src/constants'\nimport { Region } from 'src/region/entities/region'\nimport { BucketPolicy } from '../entities/storage-bucket'\nimport { MinioUser } from '../entities/minio'\n\nconst exec = promisify(cp.exec)\n\n@Injectable()\nexport class MinioService {\n  private readonly logger = new Logger(MinioService.name)\n\n  /**\n   * Create s3 client\n   * @returns\n   */\n  getClient(region: Region) {\n    const conf = region.storageConf\n\n    return new S3({\n      endpoint: conf.controlEndpoint,\n      credentials: {\n        accessKeyId: conf.accessKey,\n        secretAccessKey: conf.secretKey,\n      },\n      forcePathStyle: true,\n      region: region.name,\n    })\n  }\n\n  /**\n   * Create a minio user\n   */\n  public async createUser(region: Region, username: string, password: string) {\n    assert.ok(username, 'empty username got')\n    assert.ok(password, 'empty password got')\n\n    const target = region.name\n\n    const sub_cmd = `admin user add ${target} ${username} ${password}`\n    return await this.executeMinioClientCmd(region, sub_cmd)\n  }\n\n  /**\n   * Execute minio client command\n   */\n  public async getUser(region: Region, username: string) {\n    assert.ok(username, 'empty username got')\n\n    const target = region.name\n    const sub_cmd = `admin user info ${target} ${username}`\n    const res = await this.executeMinioClientCmd(region, sub_cmd)\n    if (res.status !== 'success') return null\n    res.memberOf = res.memberOf || []\n    return res as unknown as MinioUser\n  }\n\n  /**\n   * Delete a minio user\n   */\n  public async deleteUser(region: Region, username: string) {\n    assert.ok(username, 'empty username got')\n\n    const target = region.name\n    const sub_cmd = `admin user remove ${target} ${username}`\n    return await this.executeMinioClientCmd(region, sub_cmd)\n  }\n\n  /**\n   * Add user to group\n   */\n  public async addUserToGroup(region: Region, username: string) {\n    assert.ok(username, 'empty username got')\n\n    const target = region.name\n\n    // try to leave readonly group\n    const user = await this.getUser(region, username)\n\n    if (user.memberOf.some((v) => v.name === MINIO_COMMON_USER_GROUP)) {\n      return\n    }\n\n    if (user.memberOf.some((v) => v.name === MINIO_READONLY_USER_GROUP)) {\n      await this.removeUserFromReadonlyGroup(region, username)\n    }\n\n    const sub_cmd = `admin group add ${target} ${MINIO_COMMON_USER_GROUP} ${username}`\n\n    this.logger.warn(`move ${username} to default group`)\n    return await this.executeMinioClientCmd(region, sub_cmd)\n  }\n\n  /**\n   * Add user to readonly group\n   */\n  public async addUserToReadonlyGroup(region: Region, username: string) {\n    assert.ok(username, 'empty username got')\n\n    const target = region.name\n\n    // try to leave group\n    const user = await this.getUser(region, username)\n\n    if (user.memberOf.some((v) => v.name === MINIO_READONLY_USER_GROUP)) {\n      return\n    }\n\n    if (user.memberOf.some((v) => v.name === MINIO_COMMON_USER_GROUP)) {\n      await this.removeUserFromGroup(region, username)\n    }\n\n    const sub_cmd = `admin group add ${target} ${MINIO_READONLY_USER_GROUP} ${username}`\n\n    this.logger.warn(`move ${username} to readonly group`)\n    return await this.executeMinioClientCmd(region, sub_cmd)\n  }\n\n  /**\n   * Remove user from group\n   */\n  public async removeUserFromGroup(region: Region, username: string) {\n    assert.ok(username, 'empty username got')\n\n    const target = region.name\n\n    const sub_cmd = `admin group remove ${target} ${MINIO_COMMON_USER_GROUP} ${username}`\n    return await this.executeMinioClientCmd(region, sub_cmd)\n  }\n\n  /**\n   * Remove user from readonly group\n   */\n  public async removeUserFromReadonlyGroup(region: Region, username: string) {\n    assert.ok(username, 'empty username got')\n\n    const target = region.name\n\n    const sub_cmd = `admin group remove ${target} ${MINIO_READONLY_USER_GROUP} ${username}`\n    return await this.executeMinioClientCmd(region, sub_cmd)\n  }\n\n  /**\n   * Create a bucket\n   */\n  public async createBucket(\n    region: Region,\n    bucket: string,\n    policy: BucketPolicy,\n  ) {\n    assert.ok(bucket, 'empty bucket name got')\n\n    const s3 = this.getClient(region)\n    const cmd = new CreateBucketCommand({\n      Bucket: bucket,\n      CreateBucketConfiguration: {\n        LocationConstraint: region.name as any,\n      },\n    })\n    const res = await s3.send(cmd)\n    if (res?.$metadata?.httpStatusCode === 200) {\n      await this.updateBucketPolicy(region, bucket, policy)\n    }\n\n    return res\n  }\n\n  /**\n   * Update bucket policy\n   */\n  public async updateBucketPolicy(\n    region: Region,\n    bucket: string,\n    policy: BucketPolicy,\n  ) {\n    assert.ok(region, 'empty region got')\n    assert.ok(bucket, 'empty bucket name got')\n\n    const s3 = this.getClient(region)\n    if (policy === BucketPolicy.private) {\n      const cmd = new DeleteBucketPolicyCommand({ Bucket: bucket })\n      return await s3.send(cmd)\n    }\n\n    let policyStr = ''\n    if (policy === BucketPolicy.readonly) {\n      policyStr = await this.getReadonlyPolicy(bucket)\n    }\n    if (policy === BucketPolicy.readwrite) {\n      policyStr = await this.getPublicPolicy(bucket)\n    }\n\n    const cmd = new PutBucketPolicyCommand({\n      Bucket: bucket,\n      Policy: policyStr,\n    })\n    return await s3.send(cmd)\n  }\n\n  /**\n   * Get bucket stats\n   */\n  public async statsBucket(region: Region, bucket: string) {\n    assert.ok(bucket, 'empty bucket name got')\n\n    type GetBucketUsedSizeOutput = {\n      prefix: string\n      size: number\n      objects: number\n      isVersions: boolean\n    } & MinioCommandExecOutput\n\n    const sub_cmd = `du ${region.name}/${bucket}`\n\n    const res = await this.executeMinioClientCmd(region, sub_cmd)\n    return res as GetBucketUsedSizeOutput\n  }\n\n  /**\n   * Delete bucket\n   */\n  public async forceDeleteBucket(region: Region, bucket: string) {\n    assert.ok(bucket, 'empty bucket name got')\n\n    const target = region.name\n    const sub_cmd = `rb --force ${target}/${bucket}`\n    return await this.executeMinioClientCmd(region, sub_cmd)\n  }\n\n  /**\n   * Delete bucket\n   */\n  public async deleteBucket(region: Region, bucket: string) {\n    assert.ok(bucket, 'empty bucket name got')\n\n    const s3 = this.getClient(region)\n    const cmd = new DeleteBucketCommand({ Bucket: bucket })\n    return await s3.send(cmd)\n  }\n\n  /**\n   * Head bucket, check if bucket exists\n   */\n  public async headBucket(region: Region, bucket: string) {\n    assert.ok(bucket, 'empty bucket name got')\n    const s3 = this.getClient(region)\n    const cmd = new HeadBucketCommand({ Bucket: bucket })\n    try {\n      await s3.send(cmd)\n      return true\n    } catch (error) {\n      if (error.name === 'NotFound') return false\n      throw error\n    }\n  }\n\n  /**\n   * Execute minio client shell\n   */\n  private async executeMinioClientCmd(\n    region: Region,\n    sub_cmd: string,\n  ): Promise<MinioCommandExecOutput> {\n    const res = await this.setMinioClientTarget(region)\n    assert(res.status === 'success', 'failed to set minio client target')\n\n    const mc_path = process.env.MINIO_CLIENT_PATH || 'mc'\n    const cmd = `${mc_path} ${sub_cmd} --json`\n\n    try {\n      const { stdout } = await exec(cmd)\n      const json: MinioCommandExecOutput = JSON.parse(stdout)\n      return json\n    } catch (error) {\n      this.logger.error(`failed to exec command: {${cmd}}`, error)\n      return {\n        status: 'error',\n        error: error,\n      }\n    }\n  }\n\n  /**\n   * Set minio target\n   */\n  async setMinioClientTarget(region: Region) {\n    const conf = region.storageConf\n    const access_key = conf.accessKey\n    const access_secret = conf.secretKey\n    const endpoint = conf.controlEndpoint\n    const target = region.name\n\n    const mc_path = process.env.MINIO_CLIENT_PATH || 'mc'\n    const cmd = `${mc_path} alias set ${target} ${endpoint} ${access_key} ${access_secret} --json`\n\n    try {\n      const { stdout } = await exec(cmd)\n      const json: MinioCommandExecOutput = JSON.parse(stdout)\n      return json\n    } catch (error) {\n      this.logger.error(`failed to exec command: {${cmd}}`, error)\n      return {\n        status: 'error',\n        error: error,\n      }\n    }\n  }\n\n  /**\n   * Get readonly policy for a bucket\n   */\n  private async getReadonlyPolicy(bucket: string) {\n    const policy = {\n      Version: '2012-10-17',\n      Statement: [\n        {\n          Effect: 'Allow',\n          Principal: {\n            AWS: ['*'],\n          },\n          Action: ['s3:GetObject'],\n          Resource: [`arn:aws:s3:::${bucket}/*`],\n        },\n      ],\n    }\n\n    return JSON.stringify(policy)\n  }\n\n  /**\n   * Get public policy for a bucket\n   */\n  private async getPublicPolicy(bucket: string) {\n    const policy = {\n      Statement: [\n        {\n          Action: [\n            's3:GetBucketLocation',\n            's3:ListBucket',\n            's3:ListBucketMultipartUploads',\n          ],\n          Effect: 'Allow',\n          Principal: {\n            AWS: ['*'],\n          },\n          Resource: [`arn:aws:s3:::${bucket}`],\n        },\n        {\n          Action: [\n            's3:AbortMultipartUpload',\n            's3:DeleteObject',\n            's3:GetObject',\n            's3:ListMultipartUploadParts',\n            's3:PutObject',\n          ],\n          Effect: 'Allow',\n          Principal: {\n            AWS: ['*'],\n          },\n          Resource: [`arn:aws:s3:::${bucket}/*`],\n        },\n      ],\n      Version: '2012-10-17',\n    }\n\n    return JSON.stringify(policy)\n  }\n}\n"
  },
  {
    "path": "server/src/storage/minio/types.ts",
    "content": "export type MinioCommandExecOutput = {\n  status: 'success' | 'error'\n  error?: any\n  [key: string]: any\n}\n"
  },
  {
    "path": "server/src/storage/storage-usage-capture-task.service.ts",
    "content": "import { StorageUser } from './entities/storage-user'\nimport { MinioService } from 'src/storage/minio/minio.service'\nimport { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport { RegionService } from 'src/region/region.service'\nimport { SystemDatabase } from 'src/system-database'\nimport { StorageBucket } from 'src/storage/entities/storage-bucket'\nimport { ServerConfig } from 'src/constants'\nimport pLimit from 'src/utils/p-limit'\n\n@Injectable()\nexport class StorageUsageCaptureTaskService {\n  constructor(\n    private readonly regionService: RegionService,\n    private readonly minioService: MinioService,\n  ) {}\n\n  private readonly logger = new Logger(StorageUsageCaptureTaskService.name)\n  private readonly db = SystemDatabase.db\n  private readonly lockTimeout = 60 * 60 // in second\n  private readonly limit = pLimit(2) // concurrency limit: 2\n\n  private getLockTime() {\n    // halfway through each hour\n    const latestTime = new Date()\n    latestTime.setMinutes(30)\n    latestTime.setSeconds(0)\n    latestTime.setMilliseconds(0)\n    if (latestTime.getTime() > Date.now()) {\n      latestTime.setTime(latestTime.getTime() - 1000 * 60 * 60)\n    }\n    return latestTime\n  }\n\n  @Cron(CronExpression.EVERY_MINUTE)\n  async tick() {\n    if (ServerConfig.DISABLED_STORAGE_USAGE_CAPTURE_TASK) {\n      return\n    }\n\n    const total = await this.db\n      .collection<StorageUser>('StorageUser')\n      .countDocuments({\n        usageCaptureLockedAt: {\n          $lt: new Date(Date.now() - 1000 * this.lockTimeout),\n        },\n      })\n\n    // remaining tasks\n    const taskAmount = total - this.limit.pendingCount\n\n    if (taskAmount <= 0) return\n\n    const taskList = Array.from({ length: taskAmount }).map(() =>\n      this.limit(() =>\n        this.handleCaptureStorageUsage().catch((err) => {\n          this.logger.error('handleCaptureStorageUsage error', err)\n        }),\n      ),\n    )\n\n    this.logger.debug('Start StorageUsageCaptureTask, total: ' + taskAmount)\n    await Promise.all(taskList)\n  }\n\n  async handleCaptureStorageUsage() {\n    const res = await this.db\n      .collection<StorageUser>('StorageUser')\n      .findOneAndUpdate(\n        {\n          usageCaptureLockedAt: {\n            $lt: new Date(Date.now() - 1000 * this.lockTimeout),\n          },\n        },\n        { $set: { usageCaptureLockedAt: this.getLockTime() } },\n      )\n\n    if (!res.value) return\n\n    const app = res.value\n    const { appid } = app\n\n    this.captureStorageUsage(appid).catch((err) => {\n      this.logger.error(`captureStorageUsage ${appid} error`, err)\n    })\n  }\n\n  async captureStorageUsage(appid: string) {\n    const region = await this.regionService.findByAppId(appid)\n\n    const buckets = await this.db\n      .collection<StorageBucket>('StorageBucket')\n      .find({\n        appid,\n      })\n      .toArray()\n\n    let totalSize = 0 // byte\n\n    for (const bucket of buckets) {\n      const stats = await this.minioService.statsBucket(region, bucket.name)\n      totalSize += stats.size\n    }\n\n    // save to storage\n    await this.db.collection<StorageUser>('StorageUser').findOneAndUpdate(\n      {\n        appid,\n      },\n      {\n        $set: {\n          dataSize: totalSize / 1024 / 1024, // MB\n          updatedAt: new Date(),\n        },\n      },\n    )\n\n    this.logger.log(\n      `captureStorageUsage ${appid}: ${totalSize / 1024 / 1024} MB`,\n    )\n  }\n}\n"
  },
  {
    "path": "server/src/storage/storage-usage-limit-task.service.ts",
    "content": "import { MinioService } from 'src/storage/minio/minio.service'\nimport { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport { Application } from 'src/application/entities/application'\nimport { RegionService } from 'src/region/region.service'\nimport { SystemDatabase } from 'src/system-database'\nimport { ServerConfig } from 'src/constants'\nimport { StorageService } from 'src/storage/storage.service'\nimport { BundleService } from 'src/application/bundle.service'\nimport pLimit from 'src/utils/p-limit'\nimport { StorageUser } from 'src/storage/entities/storage-user'\n\n@Injectable()\nexport class StorageUsageLimitTaskService {\n  constructor(\n    private readonly regionService: RegionService,\n    private readonly storageService: StorageService,\n    private readonly minioService: MinioService,\n    private readonly bundleService: BundleService,\n  ) {}\n\n  private readonly logger = new Logger(StorageUsageLimitTaskService.name)\n  private readonly db = SystemDatabase.db\n  private readonly lockTimeout = 3 * 60 * 60 // in second\n  private readonly limit = pLimit(10) // concurrency limit: 10\n\n  private getLockTime() {\n    // halfway through each hour\n    const latestTime = new Date()\n    latestTime.setMinutes(30)\n    latestTime.setSeconds(0)\n    latestTime.setMilliseconds(0)\n    if (latestTime.getTime() > Date.now()) {\n      latestTime.setTime(latestTime.getTime() - 1000 * 60 * 60)\n    }\n    return latestTime\n  }\n\n  @Cron(CronExpression.EVERY_MINUTE)\n  async tick() {\n    if (ServerConfig.DISABLED_STORAGE_USAGE_LIMIT_TASK) {\n      return\n    }\n\n    const total = await this.db\n      .collection<Application>('Application')\n      .countDocuments({\n        usageLimitLockedAt: {\n          $lt: new Date(Date.now() - 1000 * this.lockTimeout),\n        },\n      })\n\n    // remaining tasks\n    const taskAmount = total - this.limit.pendingCount\n\n    if (taskAmount <= 0) return\n\n    const taskList = Array.from({ length: taskAmount }).map(() =>\n      this.limit(() =>\n        this.handleLimitStorageUsage().catch((err) => {\n          this.logger.error('handleLimitStorageUsage error', err)\n        }),\n      ),\n    )\n\n    this.logger.debug('Start StorageUsageLimitTask, total: ' + taskAmount)\n    await Promise.all(taskList)\n  }\n\n  async handleLimitStorageUsage() {\n    const res = await this.db\n      .collection<StorageUser>('StorageUser')\n      .findOneAndUpdate(\n        {\n          usageLimitLockedAt: {\n            $lt: new Date(Date.now() - 1000 * this.lockTimeout),\n          },\n        },\n        { $set: { usageLimitLockedAt: this.getLockTime() } },\n      )\n\n    if (!res.value) return\n\n    const app = res.value\n    const { appid } = app\n\n    this.limitStorageUsage(appid).catch((err) => {\n      this.logger.error(`limitStorageUsage ${appid} error`, err)\n    })\n  }\n\n  async limitStorageUsage(appid: string) {\n    const bundle = await this.bundleService.findOne(appid)\n    const { storageCapacity } = bundle.resource\n    const region = await this.regionService.findByAppId(appid)\n    const storage = await this.storageService.findOne(appid)\n\n    if (storageCapacity < storage.dataSize) {\n      // overused\n      await this.minioService.addUserToReadonlyGroup(region, appid)\n    } else {\n      await this.minioService.addUserToGroup(region, appid)\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/storage/storage-user-task.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { RegionService } from 'src/region/region.service'\nimport * as assert from 'node:assert'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport { ServerConfig, TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport { MinioService } from './minio/minio.service'\nimport {\n  StoragePhase,\n  StorageState,\n  StorageUser,\n} from './entities/storage-user'\n\n@Injectable()\nexport class StorageUserTaskService {\n  readonly lockTimeout = 30 // in second\n  private readonly logger = new Logger(StorageUserTaskService.name)\n\n  constructor(\n    private readonly minioService: MinioService,\n    private readonly regionService: RegionService,\n  ) {}\n\n  @Cron(CronExpression.EVERY_SECOND)\n  async tick() {\n    if (ServerConfig.DISABLED_STORAGE_USER_TASK) {\n      return\n    }\n\n    // Phase `Creating` -> `Created`\n    this.handleCreatingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletingPhase().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Created` -> `Deleting`\n    this.handleInactiveState().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleted` -> `Creating`\n    this.handleActiveState().catch((err) => {\n      this.logger.error(err)\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletedState().catch((err) => {\n      this.logger.error(err)\n    })\n  }\n\n  /**\n   * Phase `Creating`:\n   * - create bucket\n   * - move phase `Creating` to `Created`\n   */\n  async handleCreatingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<StorageUser>('StorageUser')\n      .findOneAndUpdate(\n        {\n          phase: StoragePhase.Creating,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n    if (!res.value) return\n\n    // get region by appid\n    const doc = res.value\n    const region = await this.regionService.findByAppId(doc.appid)\n    assert(region, 'region not found')\n\n    const accessKey = doc.appid\n    const secretKey = doc.secretKey\n\n    const minioUser = await this.minioService.getUser(region, accessKey)\n    if (!minioUser) {\n      const res = await this.minioService.createUser(\n        region,\n        accessKey,\n        secretKey,\n      )\n      if (res.error) {\n        this.logger.error('create storage user failed: ', res.error)\n        return\n      }\n    }\n    // add storage user to common user group in minio\n    const result = await this.minioService.addUserToGroup(region, accessKey)\n    if (result?.error) {\n      this.logger.error('add storage user to group failed: ', result.error)\n      return\n    }\n\n    // update phase to `Created`\n    const updated = await db.collection<StorageUser>('StorageUser').updateOne(\n      { _id: doc._id, phase: StoragePhase.Creating },\n      {\n        $set: { phase: StoragePhase.Created, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n\n    if (updated.modifiedCount > 0)\n      this.logger.debug('storage-user phase updated to Created: ', doc)\n  }\n\n  /**\n   * Phase `Deleting`:\n   * - delete bucket\n   * - move phase `Deleting` to `Deleted`\n   */\n  async handleDeletingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<StorageUser>('StorageUser')\n      .findOneAndUpdate(\n        {\n          phase: StoragePhase.Deleting,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n    if (!res.value) return\n\n    // get region by appid\n    const doc = res.value\n    const appid = doc.appid\n    const region = await this.regionService.findByAppId(appid)\n    assert(region, 'region not found')\n\n    // delete user in minio\n    const result = await this.minioService.deleteUser(region, appid)\n    if (result.error) {\n      this.logger.error('delete user failed: ', result.error)\n      return\n    }\n\n    // update phase to `Deleted`\n    const updated = await db.collection<StorageUser>('StorageUser').updateOne(\n      { _id: doc._id, phase: StoragePhase.Deleting },\n      {\n        $set: { phase: StoragePhase.Deleted, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n\n    if (updated.modifiedCount > 0)\n      this.logger.debug('storage-user phase updated to Deleted: ', doc)\n  }\n\n  /**\n   * State `Active`:\n   * - move phase `Deleted` to `Creating`\n   */\n  async handleActiveState() {\n    const db = SystemDatabase.db\n\n    await db.collection<StorageUser>('StorageUser').updateMany(\n      {\n        state: StorageState.Active,\n        phase: StoragePhase.Deleted,\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: { phase: StoragePhase.Creating, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n  }\n\n  /**\n   * State `Inactive`:\n   * - move `Created` to `Deleting`\n   */\n  async handleInactiveState() {\n    const db = SystemDatabase.db\n\n    await db.collection<StorageUser>('StorageUser').updateMany(\n      {\n        state: StorageState.Inactive,\n        phase: StoragePhase.Created,\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: { phase: StoragePhase.Deleting, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n  }\n\n  /**\n   * State `Deleted`:\n   * - move `Created` to `Deleting`\n   * - delete `Deleted` documents\n   */\n  async handleDeletedState() {\n    const db = SystemDatabase.db\n\n    await db.collection<StorageUser>('StorageUser').updateMany(\n      {\n        state: StorageState.Deleted,\n        phase: { $in: [StoragePhase.Created, StoragePhase.Creating] },\n        lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n      },\n      {\n        $set: { phase: StoragePhase.Deleting, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n\n    await db\n      .collection<StorageUser>('StorageUser')\n      .deleteMany({ state: StorageState.Deleted, phase: StoragePhase.Deleted })\n  }\n}\n"
  },
  {
    "path": "server/src/storage/storage.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { BucketController } from './bucket.controller'\nimport { MinioService } from './minio/minio.service'\nimport { StorageService } from './storage.service'\nimport { ApplicationService } from 'src/application/application.service'\nimport { BucketService } from './bucket.service'\nimport { GatewayModule } from 'src/gateway/gateway.module'\nimport { BucketTaskService } from './bucket-task.service'\nimport { BundleService } from 'src/application/bundle.service'\nimport { StorageUsageCaptureTaskService } from './storage-usage-capture-task.service'\nimport { StorageUsageLimitTaskService } from './storage-usage-limit-task.service'\nimport { CloudBinBucketService } from './cloud-bin-bucket.service'\nimport { StorageUserTaskService } from './storage-user-task.service'\n\n@Module({\n  imports: [GatewayModule],\n  controllers: [BucketController],\n  providers: [\n    MinioService,\n    StorageService,\n    ApplicationService,\n    BucketService,\n    BucketTaskService,\n    BundleService,\n    StorageUsageCaptureTaskService,\n    StorageUsageLimitTaskService,\n    StorageUserTaskService,\n    CloudBinBucketService,\n  ],\n  exports: [StorageService, MinioService, BucketService, CloudBinBucketService],\n})\nexport class StorageModule {}\n"
  },
  {
    "path": "server/src/storage/storage.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { GenerateAlphaNumericPassword } from 'src/utils/random'\nimport { MinioService } from './minio/minio.service'\nimport { RegionService } from 'src/region/region.service'\nimport { TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport {\n  StoragePhase,\n  StorageState,\n  StorageUser,\n} from './entities/storage-user'\nimport { StorageBucket } from './entities/storage-bucket'\nimport { CloudBinBucketService } from './cloud-bin-bucket.service'\n\n@Injectable()\nexport class StorageService {\n  private readonly logger = new Logger(StorageService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(\n    private readonly minioService: MinioService,\n    private readonly regionService: RegionService,\n    private readonly cloudBinBucketService: CloudBinBucketService,\n  ) {}\n\n  async create(appid: string) {\n    const accessKey = appid\n    const secretKey = GenerateAlphaNumericPassword(64)\n\n    // create storage user in database\n    await this.db.collection<StorageUser>('StorageUser').insertOne({\n      appid,\n      accessKey,\n      secretKey,\n      dataSize: 0,\n      state: StorageState.Active,\n      phase: StoragePhase.Creating,\n      lockedAt: TASK_LOCK_INIT_TIME,\n      usageCaptureLockedAt: TASK_LOCK_INIT_TIME,\n      usageLimitLockedAt: TASK_LOCK_INIT_TIME,\n      updatedAt: new Date(),\n      createdAt: new Date(),\n    })\n\n    // ensure cloud-bin bucket\n    await this.cloudBinBucketService.ensureCloudBinBucket(appid)\n\n    return await this.findOne(appid)\n  }\n\n  async findOne(appid: string) {\n    const user = await this.db\n      .collection<StorageUser>('StorageUser')\n      .findOne({ appid })\n\n    return user\n  }\n\n  async deleteUsersAndBuckets(appid: string) {\n    // delete buckets & files\n    await this.db\n      .collection<StorageBucket>('StorageBucket')\n      .updateMany(\n        { appid, state: { $ne: StorageState.Deleted } },\n        { $set: { state: StorageState.Deleted, updatedAt: new Date() } },\n      )\n\n    // delete user in minio\n    await this.db.collection<StorageUser>('StorageUser').findOneAndUpdate(\n      {\n        appid,\n        state: { $ne: StorageState.Deleted },\n      },\n      {\n        $set: { state: StorageState.Deleted, updatedAt: new Date() },\n      },\n    )\n\n    return\n  }\n}\n"
  },
  {
    "path": "server/src/system-database.ts",
    "content": "import { Logger } from '@nestjs/common'\nimport { MongoClient } from 'mongodb'\nimport { ServerConfig } from 'src/constants'\nimport * as assert from 'node:assert'\n\nexport class SystemDatabase {\n  private static readonly logger = new Logger(SystemDatabase.name)\n  private static _client: MongoClient\n  static ready = this.initialize()\n\n  static get client() {\n    return this._client\n  }\n\n  static get db() {\n    return this.client.db()\n  }\n\n  static async initialize() {\n    assert.ok(ServerConfig.DATABASE_URL, 'DATABASE_URL is required')\n    this._client = new MongoClient(ServerConfig.DATABASE_URL)\n    try {\n      const client = await this._client.connect()\n      this.logger.log('Connected to system database')\n      return client\n    } catch (err) {\n      this.logger.error('Failed to connect to system database')\n      this.logger.error(err)\n      process.exit(1)\n    }\n  }\n}\n\nexport class TrafficDatabase {\n  private static readonly logger = new Logger(TrafficDatabase.name)\n  private static _client: MongoClient\n  static ready = this.initialize()\n\n  static get client() {\n    return this._client\n  }\n\n  static get db() {\n    return this.client?.db()\n  }\n\n  static async initialize() {\n    if (!ServerConfig.TRAFFIC_DATABASE_URL) {\n      this.logger.log('no traffic database connect url')\n      return\n    }\n    this._client = new MongoClient(ServerConfig.TRAFFIC_DATABASE_URL)\n    try {\n      const client = await this._client.connect()\n      this.logger.log('Connected to traffic database')\n      return client\n    } catch (err) {\n      this.logger.error('Failed to connect to traffic database')\n      this.logger.error(err)\n      process.exit(1)\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/trigger/cron-job.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { ClusterService } from 'src/region/cluster/cluster.service'\nimport * as assert from 'node:assert'\nimport { RegionService } from 'src/region/region.service'\nimport { GetApplicationNamespace } from 'src/utils/getter'\nimport { FunctionService } from 'src/function/function.service'\nimport { FOREVER_IN_SECONDS, X_LAF_TRIGGER_TOKEN_KEY } from 'src/constants'\nimport { TriggerService } from './trigger.service'\nimport * as k8s from '@kubernetes/client-node'\nimport { CronTrigger, TriggerPhase } from './entities/cron-trigger'\nimport { Region } from 'src/region/entities/region'\n\n@Injectable()\nexport class CronJobService {\n  private readonly logger = new Logger(CronJobService.name)\n\n  constructor(\n    private readonly clusterService: ClusterService,\n    private readonly regionService: RegionService,\n    private readonly funcService: FunctionService,\n    private readonly triggerService: TriggerService,\n  ) {}\n\n  async create(trigger: CronTrigger) {\n    assert(trigger, 'cronTrigger is required')\n\n    // get region by appid\n    const appid = trigger.appid\n    const region = await this.regionService.findByAppId(appid)\n    assert(region, 'region is required')\n\n    // create cronjob\n    const ns = GetApplicationNamespace(region, appid)\n    const batchApi = this.clusterService.makeBatchV1Api(region)\n    const name = `cron-${trigger._id}`\n    const command = await this.getTriggerCommand(region, trigger)\n    const res = await batchApi.createNamespacedCronJob(ns, {\n      metadata: {\n        name,\n        labels: {\n          appid,\n          id: trigger._id.toString(),\n        },\n      },\n      spec: {\n        schedule: trigger.cron,\n        successfulJobsHistoryLimit: 1,\n        failedJobsHistoryLimit: 1,\n        suspend: false,\n        concurrencyPolicy: 'Allow',\n        startingDeadlineSeconds: 60,\n        jobTemplate: {\n          spec: {\n            activeDeadlineSeconds: 60,\n            template: {\n              spec: {\n                restartPolicy: 'Never',\n                terminationGracePeriodSeconds: 30,\n                automountServiceAccountToken: false,\n                containers: [\n                  {\n                    name: name,\n                    image: 'curlimages/curl:7.87.0',\n                    command: ['sh', '-c', command],\n                    imagePullPolicy: 'IfNotPresent',\n                  },\n                ],\n              },\n            },\n          },\n        },\n      },\n    })\n\n    this.logger.debug(`create cronjob ${name} success`)\n    return res.body\n  }\n\n  async findOne(trigger: CronTrigger) {\n    const appid = trigger.appid\n    const region = await this.regionService.findByAppId(appid)\n    const ns = GetApplicationNamespace(region, appid)\n    try {\n      const batchApi = this.clusterService.makeBatchV1Api(region)\n      const name = `cron-${trigger._id}`\n      const res = await batchApi.readNamespacedCronJob(name, ns)\n      return res.body\n    } catch (err) {\n      if (err?.response?.body?.reason === 'NotFound') return null\n      this.logger.error(err)\n      this.logger.error(err?.response?.body)\n      throw err\n    }\n  }\n\n  async suspend(trigger: CronTrigger) {\n    return await this.patchSuspend(trigger, true)\n  }\n\n  async resume(trigger: CronTrigger) {\n    return await this.patchSuspend(trigger, false)\n  }\n\n  async suspendAll(appid: string) {\n    const triggers = await this.triggerService.findAll(appid)\n    for (const trigger of triggers) {\n      if (trigger.phase !== TriggerPhase.Created) continue\n      await this.suspend(trigger)\n      this.logger.log(`suspend cronjob ${trigger._id} success of ${appid}`)\n    }\n  }\n\n  async resumeAll(appid: string) {\n    const triggers = await this.triggerService.findAll(appid)\n    for (const trigger of triggers) {\n      if (trigger.phase !== TriggerPhase.Created) continue\n      await this.resume(trigger)\n      this.logger.log(`resume cronjob ${trigger._id} success of ${appid}`)\n    }\n  }\n\n  async delete(trigger: CronTrigger) {\n    const appid = trigger.appid\n    const region = await this.regionService.findByAppId(appid)\n    const ns = GetApplicationNamespace(region, appid)\n    const batchApi = this.clusterService.makeBatchV1Api(region)\n    const name = `cron-${trigger._id}`\n    const res = await batchApi.deleteNamespacedCronJob(name, ns)\n    return res.body\n  }\n\n  private async getTriggerCommand(region: Region, trigger: CronTrigger) {\n    const appid = trigger.appid\n    const funcName = trigger.target\n    const runtimeUrl = this.funcService.getInClusterRuntimeUrl(region, appid)\n    const invokeUrl = `${runtimeUrl}/${funcName}`\n\n    // get trigger token\n    const token = await this.funcService.generateRuntimeToken(\n      appid,\n      'trigger',\n      FOREVER_IN_SECONDS,\n    )\n\n    const command = `curl -X POST -H \"${X_LAF_TRIGGER_TOKEN_KEY}: ${token}\" ${invokeUrl}`\n    return command\n  }\n\n  private async patchSuspend(trigger: CronTrigger, suspend: boolean) {\n    const appid = trigger.appid\n    const region = await this.regionService.findByAppId(appid)\n\n    const ns = GetApplicationNamespace(region, appid)\n    const batchApi = this.clusterService.makeBatchV1Api(region)\n    const name = `cron-${trigger._id}`\n    const body = [{ op: 'replace', path: '/spec/suspend', value: suspend }]\n    try {\n      const res = await batchApi.patchNamespacedCronJob(\n        name,\n        ns,\n        body,\n        undefined,\n        undefined,\n        undefined,\n        undefined,\n        undefined,\n        {\n          headers: { 'Content-Type': k8s.PatchUtils.PATCH_FORMAT_JSON_PATCH },\n        },\n      )\n      return res.body\n    } catch (err) {\n      if (err?.response?.body?.reason === 'NotFound') return null\n      throw err\n    }\n  }\n}\n"
  },
  {
    "path": "server/src/trigger/dto/create-trigger.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, Length } from 'class-validator'\n\nexport class CreateTriggerDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @Length(1, 64)\n  desc: string\n\n  @ApiProperty()\n  @IsNotEmpty()\n  @Length(1, 64)\n  cron: string\n\n  @ApiProperty()\n  @IsNotEmpty()\n  @Length(1, 255)\n  target: string\n}\n"
  },
  {
    "path": "server/src/trigger/dto/update-trigger.dto.ts",
    "content": "import { PartialType } from '@nestjs/swagger'\nimport { CreateTriggerDto } from './create-trigger.dto'\n\nexport class UpdateTriggerDto extends PartialType(CreateTriggerDto) {}\n"
  },
  {
    "path": "server/src/trigger/entities/cron-trigger.ts",
    "content": "import { ObjectId } from 'mongodb'\n\nexport enum TriggerState {\n  Active = 'Active',\n  Inactive = 'Inactive',\n  Deleted = 'Deleted',\n}\n\nexport enum TriggerPhase {\n  Creating = 'Creating',\n  Created = 'Created',\n  Deleting = 'Deleting',\n  Deleted = 'Deleted',\n}\n\nexport class CronTrigger {\n  _id?: ObjectId\n  appid: string\n  desc: string\n  cron: string\n  target: string\n  state: TriggerState\n  phase: TriggerPhase\n  lockedAt: Date\n  createdAt: Date\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/trigger/trigger-task.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport { ServerConfig, TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { SystemDatabase } from 'src/system-database'\nimport { CronJobService } from './cron-job.service'\nimport {\n  CronTrigger,\n  TriggerPhase,\n  TriggerState,\n} from './entities/cron-trigger'\n\n@Injectable()\nexport class TriggerTaskService {\n  readonly lockTimeout = 30 // in second\n  readonly concurrency = 1 // concurrency count\n  private readonly logger = new Logger(TriggerTaskService.name)\n\n  constructor(private readonly cronService: CronJobService) {}\n\n  @Cron(CronExpression.EVERY_SECOND)\n  async tick() {\n    if (ServerConfig.DISABLED_TRIGGER_TASK) return\n\n    // Phase `Creating` -> `Created`\n    this.handleCreatingPhase().catch((err) => {\n      this.logger.error('handleCreatingPhase error: ' + err)\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletingPhase().catch((err) => {\n      this.logger.error('handleDeletingPhase error: ' + err)\n    })\n\n    // Phase `Created` -> `Deleting`\n    this.handleInactiveState().catch((err) => {\n      this.logger.error('handleInactiveState error: ' + err)\n    })\n\n    // Phase `Deleted` -> `Creating`\n    this.handleActiveState().catch((err) => {\n      this.logger.error('handleActiveState error: ' + err)\n    })\n\n    // Phase `Deleting` -> `Deleted`\n    this.handleDeletedState().catch((err) => {\n      this.logger.error('handleDeletedState error: ' + err)\n    })\n  }\n\n  /**\n   * Phase `Creating`:\n   * - create cron job of trigger\n   * - move phase `Creating` to `Created`\n   */\n  async handleCreatingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<CronTrigger>('CronTrigger')\n      .findOneAndUpdate(\n        {\n          phase: TriggerPhase.Creating,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n    if (!res.value) return\n\n    const doc = res.value\n\n    // create cron job if not exists\n    const job = await this.cronService.findOne(doc)\n    if (!job) {\n      await this.cronService.create(doc)\n      this.logger.log('cron job created: ' + doc._id)\n    }\n\n    // update phase to `Created`\n    await db.collection<CronTrigger>('CronTrigger').updateOne(\n      { _id: doc._id, phase: TriggerPhase.Creating },\n      {\n        $set: { phase: TriggerPhase.Created, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n\n    this.logger.log('trigger phase updated to Created: ' + doc._id)\n  }\n\n  /**\n   * Phase `Deleting`:\n   * - delete cron job of trigger\n   * - move phase `Deleting` to `Deleted`\n   */\n  async handleDeletingPhase() {\n    const db = SystemDatabase.db\n\n    const res = await db\n      .collection<CronTrigger>('CronTrigger')\n      .findOneAndUpdate(\n        {\n          phase: TriggerPhase.Deleting,\n          lockedAt: { $lt: new Date(Date.now() - 1000 * this.lockTimeout) },\n        },\n        { $set: { lockedAt: new Date() } },\n        { returnDocument: 'after' },\n      )\n    if (!res.value) return\n\n    const doc = res.value\n\n    // delete cron job if exists\n    const job = await this.cronService.findOne(doc)\n    if (job) {\n      await this.cronService.delete(doc)\n      this.logger.log('cron job deleted: ' + doc._id)\n    }\n\n    // update phase to `Deleted`\n    await db.collection<CronTrigger>('CronTrigger').updateOne(\n      { _id: doc._id, phase: TriggerPhase.Deleting },\n      {\n        $set: { phase: TriggerPhase.Deleted, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n\n    this.logger.debug('cron trigger phase updated to Deleted: ' + doc._id)\n  }\n\n  /**\n   * State `Active`:\n   * - move phase `Deleted` to `Creating`\n   */\n  async handleActiveState() {\n    const db = SystemDatabase.db\n\n    await db.collection<CronTrigger>('CronTrigger').updateMany(\n      { state: TriggerState.Active, phase: TriggerPhase.Deleted },\n      {\n        $set: { phase: TriggerPhase.Creating, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n  }\n\n  /**\n   * State `Inactive`:\n   * - move `Created` to `Deleting`\n   */\n  async handleInactiveState() {\n    const db = SystemDatabase.db\n\n    await db.collection<CronTrigger>('CronTrigger').updateMany(\n      {\n        state: TriggerState.Inactive,\n        phase: { $in: [TriggerPhase.Created, TriggerPhase.Creating] },\n      },\n      {\n        $set: { phase: TriggerPhase.Deleting, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n  }\n\n  /**\n   * State `Deleted`:\n   * - move `Created` to `Deleting`\n   * - delete `Deleted` documents\n   */\n  async handleDeletedState() {\n    const db = SystemDatabase.db\n\n    await db.collection<CronTrigger>('CronTrigger').updateMany(\n      { state: TriggerState.Deleted, phase: TriggerPhase.Created },\n      {\n        $set: { phase: TriggerPhase.Deleting, lockedAt: TASK_LOCK_INIT_TIME },\n      },\n    )\n\n    await db\n      .collection<CronTrigger>('CronTrigger')\n      .deleteMany({ state: TriggerState.Deleted, phase: TriggerPhase.Deleted })\n  }\n}\n"
  },
  {
    "path": "server/src/trigger/trigger.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Post,\n  Body,\n  Param,\n  Delete,\n  UseGuards,\n  Logger,\n} from '@nestjs/common'\nimport { TriggerService } from './trigger.service'\nimport { CreateTriggerDto } from './dto/create-trigger.dto'\nimport { ResponseUtil } from 'src/utils/response'\nimport {\n  ApiBearerAuth,\n  ApiOperation,\n  ApiResponse,\n  ApiTags,\n} from '@nestjs/swagger'\nimport { BundleService } from 'src/application/bundle.service'\nimport { ObjectId } from 'mongodb'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\nimport { FunctionService } from 'src/function/function.service'\n\n@ApiTags('Trigger')\n@Controller('apps/:appid/triggers')\n@ApiBearerAuth('Authorization')\nexport class TriggerController {\n  private readonly logger = new Logger(TriggerController.name)\n  constructor(\n    private readonly triggerService: TriggerService,\n    private readonly bundleService: BundleService,\n    private readonly funcService: FunctionService,\n  ) {}\n\n  /**\n   * Create a cron trigger\n   * @param appid\n   * @param dto\n   * @returns\n   */\n  @ApiOperation({ summary: 'Create a cron trigger' })\n  @ApiResponse({ type: ResponseUtil })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post()\n  async create(@Param('appid') appid: string, @Body() dto: CreateTriggerDto) {\n    // check trigger count limit\n    const bundle = await this.bundleService.findOne(appid)\n    const LIMIT_COUNT = bundle?.resource?.limitCountOfTrigger || 0\n    const count = await this.triggerService.count(appid)\n    if (count >= LIMIT_COUNT) {\n      return ResponseUtil.error('Trigger count limit exceeded')\n    }\n\n    // check cron expression\n    const valid = this.triggerService.isValidCronExpression(dto.cron)\n    if (!valid) {\n      return ResponseUtil.error('Invalid cron expression')\n    }\n\n    // Check if the target function exists\n    const found = await this.funcService.findOne(appid, dto.target)\n    if (!found) {\n      return ResponseUtil.error(\"Target function doesn't exist\")\n    }\n\n    const res = await this.triggerService.create(appid, dto)\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Get trigger list of an application\n   * @param appid\n   * @returns\n   */\n  @ApiOperation({ summary: 'Get trigger list of an application' })\n  @ApiResponse({ type: ResponseUtil })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get()\n  async findAll(@Param('appid') appid: string) {\n    const res = await this.triggerService.findAll(appid)\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Delete a cron trigger\n   * @param appid\n   * @param id\n   * @returns\n   * @memberof TriggerController\n   */\n  @ApiOperation({ summary: 'Remove a cron trigger' })\n  @ApiResponse({ type: ResponseUtil })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Delete(':id')\n  async remove(@Param('id') id: string, @Param('appid') appid: string) {\n    // check if trigger exists\n    const trigger = await this.triggerService.findOne(appid, new ObjectId(id))\n    if (!trigger) {\n      return ResponseUtil.error('Trigger not found')\n    }\n\n    const res = await this.triggerService.removeOne(appid, new ObjectId(id))\n    return ResponseUtil.ok(res)\n  }\n}\n"
  },
  {
    "path": "server/src/trigger/trigger.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { TriggerService } from './trigger.service'\nimport { TriggerController } from './trigger.controller'\nimport { JwtService } from '@nestjs/jwt'\nimport { ApplicationService } from 'src/application/application.service'\nimport { StorageModule } from 'src/storage/storage.module'\nimport { HttpModule } from '@nestjs/axios'\nimport { CronJobService } from './cron-job.service'\nimport { TriggerTaskService } from './trigger-task.service'\nimport { FunctionService } from 'src/function/function.service'\nimport { DatabaseService } from 'src/database/database.service'\nimport { MongoService } from 'src/database/mongo.service'\nimport { BundleService } from 'src/application/bundle.service'\nimport { FunctionRecycleBinService } from 'src/recycle-bin/cloud-function/function-recycle-bin.service'\nimport { DedicatedDatabaseService } from 'src/database/dedicated-database/dedicated-database.service'\n\n@Module({\n  imports: [StorageModule, HttpModule],\n  controllers: [TriggerController],\n  providers: [\n    TriggerService,\n    JwtService,\n    ApplicationService,\n    FunctionRecycleBinService,\n    CronJobService,\n    TriggerTaskService,\n    FunctionService,\n    DatabaseService,\n    DedicatedDatabaseService,\n    MongoService,\n    BundleService,\n  ],\n  exports: [TriggerService, CronJobService],\n})\nexport class TriggerModule {}\n"
  },
  {
    "path": "server/src/trigger/trigger.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { CreateTriggerDto } from './dto/create-trigger.dto'\nimport CronValidate from 'cron-validate'\nimport { SystemDatabase } from 'src/system-database'\nimport {\n  CronTrigger,\n  TriggerPhase,\n  TriggerState,\n} from './entities/cron-trigger'\nimport { ClientSession, ObjectId } from 'mongodb'\n\n@Injectable()\nexport class TriggerService {\n  private readonly logger = new Logger(TriggerService.name)\n  private readonly db = SystemDatabase.db\n\n  async create(appid: string, dto: CreateTriggerDto) {\n    const { desc, cron, target } = dto\n    const res = await this.db.collection<CronTrigger>('CronTrigger').insertOne({\n      appid,\n      desc,\n      cron,\n      target,\n      state: TriggerState.Active,\n      phase: TriggerPhase.Creating,\n      lockedAt: TASK_LOCK_INIT_TIME,\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    })\n\n    return this.findOne(appid, res.insertedId)\n  }\n\n  async count(appid: string) {\n    const count = await this.db\n      .collection<CronTrigger>('CronTrigger')\n      .countDocuments({ appid })\n\n    return count\n  }\n\n  async findOne(appid: string, id: ObjectId) {\n    const doc = await this.db\n      .collection<CronTrigger>('CronTrigger')\n      .findOne({ appid, _id: id })\n\n    return doc\n  }\n\n  async findAll(appid: string) {\n    const docs = await this.db\n      .collection<CronTrigger>('CronTrigger')\n      .find({ appid, state: TriggerState.Active })\n      .toArray()\n\n    return docs\n  }\n\n  async removeOne(appid: string, id: ObjectId) {\n    await this.db\n      .collection<CronTrigger>('CronTrigger')\n      .updateOne({ appid, _id: id }, { $set: { state: TriggerState.Deleted } })\n\n    return this.findOne(appid, id)\n  }\n\n  async removeAll(appid: string) {\n    const res = await this.db\n      .collection<CronTrigger>('CronTrigger')\n      .updateMany({ appid }, { $set: { state: TriggerState.Deleted } })\n\n    return res\n  }\n\n  async findAllByTarget(appid: string, target: string) {\n    const docs = await this.db\n      .collection<CronTrigger>('CronTrigger')\n      .find({ appid, target })\n      .toArray()\n    return docs\n  }\n\n  async createMany(docs: CronTrigger[], session?: ClientSession) {\n    if (session) {\n      const result = await this.db\n        .collection<CronTrigger>('CronTrigger')\n        .insertMany(docs, { session })\n      return result\n    }\n    const result = await this.db\n      .collection<CronTrigger>('CronTrigger')\n      .insertMany(docs)\n    return result\n  }\n\n  async removeAllByTarget(\n    appid: string,\n    target: string,\n    session?: ClientSession,\n  ) {\n    if (session) {\n      const res = await this.db\n        .collection<CronTrigger>('CronTrigger')\n        .updateMany(\n          { appid, target },\n          { $set: { state: TriggerState.Deleted } },\n          { session },\n        )\n      return res\n    }\n    const res = await this.db\n      .collection<CronTrigger>('CronTrigger')\n      .updateMany({ appid, target }, { $set: { state: TriggerState.Deleted } })\n\n    return res\n  }\n\n  isValidCronExpression(cron: string) {\n    const ret = CronValidate(cron)\n    if (ret.isValid()) {\n      return true\n    }\n\n    return false\n  }\n}\n"
  },
  {
    "path": "server/src/user/dto/bind-email.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsEmail, IsNotEmpty, Length } from 'class-validator'\n\nexport class BindEmailDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @IsEmail()\n  email: string\n\n  @ApiProperty({\n    description: 'verify code',\n    example: '032476',\n  })\n  @IsNotEmpty()\n  @Length(6, 6)\n  code: string\n}\n"
  },
  {
    "path": "server/src/user/dto/bind-phone.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport {\n  IsMobilePhone,\n  IsNotEmpty,\n  IsOptional,\n  IsString,\n  Length,\n} from 'class-validator'\n\nexport class BindPhoneDto {\n  @ApiProperty({\n    description: 'old phone number',\n    example: '13805718888',\n  })\n  @IsString()\n  @IsOptional()\n  @IsMobilePhone('zh-CN')\n  oldPhoneNumber?: string\n\n  @ApiProperty({\n    description: 'new phone number',\n    example: '13805718888',\n  })\n  @IsString()\n  @IsNotEmpty()\n  @IsMobilePhone('zh-CN')\n  newPhoneNumber: string\n\n  @ApiProperty({\n    description: 'sms verify code for old phone number',\n    example: '032476',\n  })\n  @IsOptional()\n  @Length(6, 6)\n  oldSmsCode?: string\n\n  @ApiProperty({\n    description: 'sms verify code for new phone number',\n    example: '032476',\n  })\n  @IsNotEmpty()\n  @Length(6, 6)\n  newSmsCode: string\n}\n"
  },
  {
    "path": "server/src/user/dto/bind-username.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString, Length } from 'class-validator'\n\nexport class BindUsernameDto {\n  @ApiProperty({\n    description: 'username',\n    example: 'laf-user',\n  })\n  @IsString()\n  @IsNotEmpty()\n  @Length(3, 64)\n  username: string\n}\n"
  },
  {
    "path": "server/src/user/dto/create-pat.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport {\n  IsNotEmpty,\n  IsNumber,\n  IsString,\n  Length,\n  Max,\n  Min,\n} from 'class-validator'\n\nexport class CreatePATDto {\n  @IsString()\n  @IsNotEmpty()\n  @Length(1, 255)\n  @ApiProperty()\n  name: string\n\n  @IsNumber()\n  @IsNotEmpty()\n  @Min(60)\n  @Max(3600 * 24 * 365)\n  @ApiProperty({ minimum: 60 })\n  expiresIn: number\n}\n"
  },
  {
    "path": "server/src/user/dto/update-avatar.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\n\nexport class UpdateAvatarDto {\n  @ApiProperty({ type: 'string', format: 'binary' })\n  avatar: any\n}\n"
  },
  {
    "path": "server/src/user/entities/pat.ts",
    "content": "import { ObjectId } from 'mongodb'\nimport { User } from './user'\nimport { ApiProperty } from '@nestjs/swagger'\n\nexport class PersonalAccessToken {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  uid: ObjectId\n\n  @ApiProperty()\n  name: string\n\n  token: string\n\n  @ApiProperty()\n  expiredAt: Date\n\n  @ApiProperty()\n  createdAt: Date\n}\n\nexport class PersonalAccessTokenWithUser extends PersonalAccessToken {\n  @ApiProperty({ type: User })\n  user: User\n}\n"
  },
  {
    "path": "server/src/user/entities/user-avatar.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\nexport class UserAvatar {\n  @ApiProperty({ type: Buffer })\n  data: Buffer\n\n  @ApiProperty({ type: String })\n  createdBy: ObjectId\n\n  @ApiProperty()\n  createdAt: Date\n}\n"
  },
  {
    "path": "server/src/user/entities/user-password.ts",
    "content": "import { ObjectId } from 'mongodb'\n\nexport enum UserPasswordState {\n  Active = 'Active',\n  Inactive = 'Inactive',\n}\n\nexport class UserPassword {\n  _id?: ObjectId\n  uid: ObjectId\n  password: string\n  state: UserPasswordState\n  createdAt: Date\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/user/entities/user-profile.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\nclass IdVerified {\n  @ApiProperty({ type: Boolean })\n  isVerified: boolean\n\n  @ApiProperty({ type: Number })\n  idVerifyFailedTimes: number\n}\n\nexport class UserProfile {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  uid: ObjectId\n\n  @ApiPropertyOptional()\n  openData?: any\n\n  @ApiPropertyOptional()\n  avatar?: string\n\n  @ApiPropertyOptional()\n  name?: string\n\n  @ApiProperty({ type: IdVerified })\n  idVerified?: IdVerified\n\n  @ApiProperty()\n  idCard?: string\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/user/entities/user-quota.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\n\ntype LimitOfDatabaseSyncCount = {\n  countLimit: number\n  timePeriodInSeconds: number\n}\n\nexport class UserQuota {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty({ type: String })\n  uid: ObjectId\n\n  @ApiProperty()\n  limitOfCPU: number\n\n  @ApiProperty()\n  limitOfMemory: number\n\n  @ApiProperty()\n  limitCountOfApplication: number\n\n  @ApiProperty({\n    description: 'Limits of database synchronization count and time period.',\n    type: { countLimit: Number, timePeriodInSeconds: Number },\n  })\n  limitOfDatabaseSyncCount: LimitOfDatabaseSyncCount\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n"
  },
  {
    "path": "server/src/user/entities/user.ts",
    "content": "import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { ObjectId } from 'mongodb'\nimport { UserProfile } from './user-profile'\n\nexport class User {\n  @ApiProperty({ type: String })\n  _id?: ObjectId\n\n  @ApiProperty()\n  username: string\n\n  @ApiPropertyOptional()\n  email?: string\n\n  @ApiPropertyOptional()\n  phone?: string\n\n  @ApiPropertyOptional()\n  github?: number\n\n  @ApiProperty()\n  createdAt: Date\n\n  @ApiProperty()\n  updatedAt: Date\n}\n\nexport class UserWithProfile extends User {\n  @ApiPropertyOptional()\n  profile?: UserProfile\n}\n"
  },
  {
    "path": "server/src/user/pat.controller.ts",
    "content": "import {\n  Body,\n  Controller,\n  Delete,\n  Get,\n  Logger,\n  Param,\n  Post,\n  Req,\n  UseGuards,\n} from '@nestjs/common'\nimport {\n  ApiBearerAuth,\n  ApiOperation,\n  ApiResponse,\n  ApiTags,\n} from '@nestjs/swagger'\nimport { ResponseUtil } from 'src/utils/response'\nimport { IRequest } from 'src/utils/interface'\nimport { CreatePATDto } from './dto/create-pat.dto'\nimport { PatService } from './pat.service'\nimport { ObjectId } from 'mongodb'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\n\n@ApiTags('Authentication')\n@ApiBearerAuth('Authorization')\n@Controller('pats')\nexport class PatController {\n  private readonly logger = new Logger(PatController.name)\n\n  constructor(private readonly patService: PatService) {}\n\n  /**\n   * Create a PAT\n   * @param req\n   * @param dto\n   * @returns\n   */\n  @ApiOperation({ summary: 'Create a PAT' })\n  @ApiResponse({ type: ResponseUtil })\n  @UseGuards(JwtAuthGuard)\n  @Post()\n  async create(@Req() req: IRequest, @Body() dto: CreatePATDto) {\n    const uid = req.user._id\n    // check max count, 10\n    const count = await this.patService.count(uid)\n    if (count >= 10) {\n      return ResponseUtil.error('Max count of PAT is 10')\n    }\n\n    const pat = await this.patService.create(uid, dto)\n    return ResponseUtil.ok(pat)\n  }\n\n  /**\n   * List PATs\n   * @param req\n   * @returns\n   */\n  @ApiOperation({ summary: 'List PATs' })\n  @ApiResponse({ type: ResponseUtil })\n  @UseGuards(JwtAuthGuard)\n  @Get()\n  async findAll(@Req() req: IRequest) {\n    const uid = req.user._id\n    const pats = await this.patService.findAll(uid)\n    return ResponseUtil.ok(pats)\n  }\n\n  /**\n   * Delete a PAT\n   * @param req\n   * @param id\n   * @returns\n   */\n  @ApiOperation({ summary: 'Delete a PAT' })\n  @ApiResponse({ type: ResponseUtil })\n  @UseGuards(JwtAuthGuard)\n  @Delete(':id')\n  async remove(@Req() req: IRequest, @Param('id') id: string) {\n    const uid = req.user._id\n    const pat = await this.patService.removeOne(uid, new ObjectId(id))\n    return ResponseUtil.ok(pat)\n  }\n}\n"
  },
  {
    "path": "server/src/user/pat.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { GenerateAlphaNumericPassword } from 'src/utils/random'\nimport { CreatePATDto } from './dto/create-pat.dto'\nimport { SystemDatabase } from 'src/system-database'\nimport {\n  PersonalAccessToken,\n  PersonalAccessTokenWithUser,\n} from './entities/pat'\nimport { ObjectId } from 'mongodb'\n\n@Injectable()\nexport class PatService {\n  private readonly logger = new Logger(PatService.name)\n  private readonly db = SystemDatabase.db\n\n  async create(userid: ObjectId, dto: CreatePATDto) {\n    const { name, expiresIn } = dto\n    const token = 'laf_' + GenerateAlphaNumericPassword(60)\n\n    const res = await this.db\n      .collection<PersonalAccessToken>('PersonalAccessToken')\n      .insertOne({\n        uid: userid,\n        name,\n        token,\n        expiredAt: new Date(Date.now() + expiresIn * 1000),\n        createdAt: new Date(),\n      })\n\n    return this.findOne(res.insertedId)\n  }\n\n  async findAll(userid: ObjectId) {\n    const pats = await this.db\n      .collection<PersonalAccessToken>('PersonalAccessToken')\n      .find({ uid: userid }, { projection: { token: 0 } })\n      .toArray()\n\n    return pats\n  }\n\n  async findOneByToken(token: string) {\n    const pat = await this.db\n      .collection('PersonalAccessToken')\n      .aggregate<PersonalAccessTokenWithUser>()\n      .match({ token })\n      .lookup({\n        from: 'User',\n        localField: 'uid',\n        foreignField: '_id',\n        as: 'user',\n      })\n      .unwind('$user')\n      .next()\n\n    return pat\n  }\n\n  async findOne(id: ObjectId) {\n    const pat = await this.db\n      .collection<PersonalAccessToken>('PersonalAccessToken')\n      .findOne({ _id: id })\n\n    return pat\n  }\n\n  async count(userid: ObjectId) {\n    const count = await this.db\n      .collection<PersonalAccessToken>('PersonalAccessToken')\n      .countDocuments({ uid: userid })\n\n    return count\n  }\n\n  async removeOne(userid: ObjectId, id: ObjectId) {\n    const doc = await this.db\n      .collection<PersonalAccessToken>('PersonalAccessToken')\n      .findOneAndDelete({ _id: id, uid: userid })\n\n    return doc.value\n  }\n}\n"
  },
  {
    "path": "server/src/user/quota.service.ts",
    "content": "import { Inject, Injectable, Logger, forwardRef } from '@nestjs/common'\nimport { ObjectId } from 'mongodb'\nimport { ApplicationService } from 'src/application/application.service'\nimport { ApplicationWithRelations } from 'src/application/entities/application'\nimport { SystemDatabase } from 'src/system-database'\nimport { UserQuota } from './entities/user-quota'\nimport { SettingService } from 'src/setting/setting.service'\nimport { DatabaseSyncRecord } from 'src/database/entities/database-sync-record'\nimport { SettingKey } from 'src/setting/entities/setting'\n\n@Injectable()\nexport class QuotaService {\n  private readonly logger = new Logger(QuotaService.name)\n  private db = SystemDatabase.db\n  constructor(\n    @Inject(forwardRef(() => ApplicationService))\n    private readonly applicationService: ApplicationService,\n    private readonly settingService: SettingService,\n  ) {}\n\n  async resourceLimit(\n    uid: ObjectId,\n    cpu: number,\n    memory: number,\n    appid?: string,\n  ) {\n    const userQuota = await this.getUserQuota(uid)\n    if (!userQuota) {\n      return 'user quota not found'\n    }\n\n    const allApplications: ApplicationWithRelations[] =\n      await this.applicationService.findAllByUser(uid)\n\n    let totalLimitCPU = 0\n    let totalLimitMemory = 0\n\n    for (const app of allApplications) {\n      if (app.bundle && app.bundle.resource && app.appid !== appid) {\n        totalLimitCPU += app.bundle.resource.limitCPU\n        totalLimitMemory += app.bundle.resource.limitMemory\n      }\n    }\n\n    if (totalLimitCPU + cpu > userQuota.limitOfCPU) {\n      return 'cpu exceeds resource limit'\n    }\n\n    if (totalLimitMemory + memory > userQuota.limitOfMemory) {\n      return 'memory exceeds resource limit'\n    }\n\n    if (allApplications.length > userQuota.limitCountOfApplication) {\n      if (!appid) {\n        return 'application counts exceeds resource limit'\n      }\n    }\n\n    return null\n  }\n\n  async databaseSyncLimit(uid: ObjectId) {\n    const userQuota = await this.getUserQuota(uid)\n    if (!userQuota) {\n      return true\n    }\n    // Calculate the time range for counting DatabaseSync documents\n    const currentTime = new Date()\n    const startTime = new Date(\n      currentTime.getTime() -\n        userQuota.limitOfDatabaseSyncCount.timePeriodInSeconds * 1000,\n    )\n\n    const counts = await this.db\n      .collection<DatabaseSyncRecord>('DatabaseSyncRecord')\n      .countDocuments({\n        uid: uid,\n        createdAt: {\n          $gte: startTime,\n          $lte: currentTime,\n        },\n      })\n\n    if (counts >= userQuota.limitOfDatabaseSyncCount.countLimit) {\n      return true // The user has exceeded their limit\n    }\n\n    return false\n  }\n\n  async getUserQuota(uid: ObjectId) {\n    const defaultUserQuotaSetting = await this.settingService.findOne(\n      SettingKey.DefaultUserQuota,\n    )\n\n    if (!defaultUserQuotaSetting) {\n      return null\n    }\n\n    const defaultUserQuota: UserQuota = {\n      uid,\n      limitOfCPU: defaultUserQuotaSetting.metadata.limitOfCPU,\n      limitOfMemory: defaultUserQuotaSetting.metadata.limitOfMemory,\n      limitCountOfApplication:\n        defaultUserQuotaSetting.metadata.limitCountOfApplication,\n      limitOfDatabaseSyncCount: {\n        countLimit:\n          defaultUserQuotaSetting.metadata.limitOfDatabaseSyncCount.countLimit,\n        timePeriodInSeconds:\n          defaultUserQuotaSetting.metadata.limitOfDatabaseSyncCount\n            .timePeriodInSeconds,\n      },\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    }\n\n    let userQuota: UserQuota = await this.db\n      .collection<UserQuota>('UserQuota')\n      .findOne({ uid })\n\n    if (!userQuota) {\n      await this.db\n        .collection<UserQuota>('UserQuota')\n        .insertOne(defaultUserQuota)\n      userQuota = defaultUserQuota\n    }\n    return userQuota\n  }\n}\n"
  },
  {
    "path": "server/src/user/user.controller.ts",
    "content": "import {\n  Body,\n  Controller,\n  Get,\n  Param,\n  Post,\n  Req,\n  Res,\n  UploadedFile,\n  UseGuards,\n  UseInterceptors,\n} from '@nestjs/common'\nimport {\n  ApiBearerAuth,\n  ApiBody,\n  ApiConsumes,\n  ApiOperation,\n  ApiTags,\n} from '@nestjs/swagger'\nimport { UserService } from './user.service'\nimport { FileInterceptor } from '@nestjs/platform-express'\nimport { IRequest, IResponse } from 'src/utils/interface'\nimport { ApiResponseObject, ResponseUtil } from 'src/utils/response'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { User, UserWithProfile } from './entities/user'\nimport { SmsService } from 'src/authentication/phone/sms.service'\nimport { BindPhoneDto } from './dto/bind-phone.dto'\nimport { SmsVerifyCodeType } from 'src/authentication/entities/sms-verify-code'\nimport { BindUsernameDto } from './dto/bind-username.dto'\nimport { UpdateAvatarDto } from './dto/update-avatar.dto'\nimport { ObjectId } from 'mongodb'\nimport { EmailService } from 'src/authentication/email/email.service'\nimport { EmailVerifyCodeType } from 'src/authentication/entities/email-verify-code'\nimport { BindEmailDto } from './dto/bind-email.dto'\nimport { QuotaService } from './quota.service'\nimport { InjectUser } from 'src/utils/decorator'\n\n@ApiTags('User')\n@ApiBearerAuth('Authorization')\n@Controller('user')\nexport class UserController {\n  constructor(\n    private readonly userService: UserService,\n    private readonly smsService: SmsService,\n    private readonly emailService: EmailService,\n    private readonly quotaServiceTsService: QuotaService,\n  ) {}\n\n  /**\n   * Update avatar of user\n   * @param dto\n   * @returns\n   */\n  @ApiResponseObject(UserWithProfile)\n  @ApiOperation({ summary: 'Update avatar of user' })\n  @ApiConsumes('multipart/form-data')\n  @ApiBody({\n    type: UpdateAvatarDto,\n  })\n  @UseGuards(JwtAuthGuard)\n  @Post('avatar')\n  @UseInterceptors(\n    FileInterceptor('avatar', {\n      limits: {\n        fileSize: 2 * 1024 * 1024, // 2M\n      },\n    }),\n  )\n  async updateAvatar(\n    @UploadedFile() avatar: Express.Multer.File,\n    @Req() req: IRequest,\n  ) {\n    if (!avatar) {\n      return ResponseUtil.error('avatar is required')\n    }\n    if (!['image/jpeg', 'image/png', 'image/gif'].includes(avatar.mimetype)) {\n      return ResponseUtil.error('avatar only supports jpeg/png/gif')\n    }\n\n    const user = req.user\n    const res = await this.userService.updateAvatar(avatar, user._id)\n\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Get avatar of user\n   * @param dto\n   * @returns\n   */\n  @ApiOperation({ summary: 'Get avatar of user' })\n  @Get('avatar/:uid')\n  async getAvatar(@Param('uid') uid: string, @Res() res: IResponse) {\n    const user = await this.userService.findOneById(new ObjectId(uid))\n\n    if (user.profile.avatar?.startsWith('http')) {\n      res.redirect(user.profile.avatar)\n      return\n    }\n\n    const avatar = await this.userService.getAvatarData(new ObjectId(uid))\n\n    res.set('Content-Type', 'image/webp')\n    res.send(avatar)\n  }\n\n  /**\n   * Bind phone\n   */\n  @ApiOperation({ summary: 'Bind phone' })\n  @ApiResponseObject(UserWithProfile)\n  @UseGuards(JwtAuthGuard)\n  @Post('bind/phone')\n  async bindPhone(@Body() dto: BindPhoneDto, @InjectUser() user: User) {\n    const { oldPhoneNumber, newPhoneNumber, oldSmsCode, newSmsCode } = dto\n    // check code valid\n    if (user.phone) {\n      if (!dto.oldPhoneNumber || !dto.oldSmsCode) {\n        return ResponseUtil.error(\n          'you should provide oldPhoneNumber and oldSmsCode',\n        )\n      }\n      if (user.phone !== dto.oldPhoneNumber) {\n        return ResponseUtil.error(\n          'the old phone number is not the same as the new one',\n        )\n      }\n      const err = await this.smsService.validateCode(\n        oldPhoneNumber,\n        oldSmsCode,\n        SmsVerifyCodeType.Unbind,\n      )\n      if (err) {\n        return ResponseUtil.error(err)\n      }\n    }\n\n    const err = await this.smsService.validateCode(\n      newPhoneNumber,\n      newSmsCode,\n      SmsVerifyCodeType.Bind,\n    )\n    if (err) {\n      return ResponseUtil.error(err)\n    }\n\n    // check phone if have already been bound\n    const _user = await this.userService.findOneByPhone(newPhoneNumber)\n    if (_user) {\n      return ResponseUtil.error('phone has already been bound')\n    }\n\n    // bind phone\n    const res = await this.userService.updateUser(user._id, {\n      phone: newPhoneNumber,\n    })\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Bind email\n   */\n  @ApiOperation({ summary: 'Bind email' })\n  @ApiResponseObject(UserWithProfile)\n  @UseGuards(JwtAuthGuard)\n  @Post('bind/email')\n  async bindEmail(@Body() dto: BindEmailDto, @Req() req: IRequest) {\n    const { email, code } = dto\n\n    const err = await this.emailService.validateCode(\n      email,\n      code,\n      EmailVerifyCodeType.Bind,\n    )\n    if (err) {\n      return ResponseUtil.error(err)\n    }\n\n    // check email if have already been bound\n    const user = await this.userService.findOneByEmail(email)\n    if (user) {\n      return ResponseUtil.error('email has already been bound')\n    }\n\n    // bind email\n    const res = await this.userService.updateUser(req.user._id, {\n      email,\n    })\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Bind username\n   */\n  @ApiOperation({ summary: 'Bind username' })\n  @ApiResponseObject(UserWithProfile)\n  @UseGuards(JwtAuthGuard)\n  @Post('bind/username')\n  async bindUsername(@Body() dto: BindUsernameDto, @Req() req: IRequest) {\n    const { username } = dto\n    // // check code valid\n    // const err = await this.smsService.validateCode(\n    //   phone,\n    //   code,\n    //   SmsVerifyCodeType.Bind,\n    // )\n    // if (err) {\n    //   return ResponseUtil.error(err)\n    // }\n\n    // check username if have already been bound\n    const user = await this.userService.findOneByUsername(username)\n    if (user) {\n      return ResponseUtil.error('username already been bound')\n    }\n\n    // bind username\n    const res = await this.userService.updateUser(req.user._id, { username })\n    return ResponseUtil.ok(res)\n  }\n\n  /**\n   * Get current user profile\n   * @param request\n   * @returns\n   */\n  @UseGuards(JwtAuthGuard)\n  @Get('profile')\n  @ApiResponseObject(UserWithProfile)\n  @ApiOperation({ summary: 'Get current user profile' })\n  @ApiBearerAuth('Authorization')\n  async getProfile(@Req() request: IRequest) {\n    const user = request.user\n    return ResponseUtil.ok(user)\n  }\n}\n"
  },
  {
    "path": "server/src/user/user.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { UserService } from './user.service'\nimport { PatService } from './pat.service'\nimport { PatController } from './pat.controller'\nimport { UserController } from './user.controller'\nimport { QuotaService } from './quota.service'\nimport { ApplicationService } from 'src/application/application.service'\nimport { SettingService } from 'src/setting/setting.service'\n\n@Module({\n  providers: [\n    UserService,\n    PatService,\n    QuotaService,\n    ApplicationService,\n    SettingService,\n  ],\n  exports: [UserService],\n  controllers: [PatController, UserController],\n})\nexport class UserModule {}\n"
  },
  {
    "path": "server/src/user/user.service.ts",
    "content": "import { Injectable } from '@nestjs/common'\nimport { SystemDatabase } from 'src/system-database'\nimport { User, UserWithProfile } from './entities/user'\nimport { ObjectId } from 'mongodb'\nimport * as sharp from 'sharp'\nimport { UserAvatar } from './entities/user-avatar'\nimport { UserProfile } from './entities/user-profile'\n\n@Injectable()\nexport class UserService {\n  private readonly db = SystemDatabase.db\n\n  async create(data: Partial<User>) {\n    const res = await this.db.collection<User>('User').insertOne({\n      username: data.username,\n      email: data.email,\n      phone: data.phone,\n      createdAt: new Date(),\n      updatedAt: new Date(),\n    })\n\n    return await this.findOneById(res.insertedId)\n  }\n\n  async findOneById(id: ObjectId) {\n    return this.db\n      .collection<User>('User')\n      .aggregate<UserWithProfile>()\n      .match({ _id: id })\n      .lookup({\n        from: 'UserProfile',\n        localField: '_id',\n        foreignField: 'uid',\n        as: 'profile',\n      })\n      .unwind({ path: '$profile', preserveNullAndEmptyArrays: true })\n      .next()\n  }\n\n  async findOneByUsername(username: string) {\n    return this.db.collection<User>('User').findOne({ username })\n  }\n\n  // find user by phone\n  async findOneByPhone(phone: string) {\n    const user = await this.db.collection<User>('User').findOne({\n      phone,\n    })\n\n    return user\n  }\n\n  // find user by email\n  async findOneByEmail(email: string) {\n    const user = await this.db.collection<User>('User').findOne({\n      email,\n    })\n\n    return user\n  }\n\n  // find user by github id\n  async findOneByGithub(gid: number) {\n    const user = await this.db.collection<User>('User').findOne({\n      github: gid,\n    })\n\n    return user\n  }\n\n  // find user by username | phone | email\n  async findOneByUsernameOrPhoneOrEmail(key: string) {\n    // match either username or phone or email\n    const user = await this.db.collection<User>('User').findOne({\n      $or: [{ username: key }, { phone: key }, { email: key }],\n    })\n\n    return user\n  }\n\n  async updateUser(id: ObjectId, data: Partial<User>) {\n    await this.db\n      .collection<User>('User')\n      .updateOne({ _id: id }, { $set: data })\n\n    return await this.findOneById(id)\n  }\n\n  async updateAvatarUrl(url: string, userid: ObjectId) {\n    await this.db.collection<UserProfile>('UserProfile').updateOne(\n      { uid: userid },\n      {\n        $set: {\n          avatar: url,\n        },\n      },\n    )\n\n    return await this.findOneById(userid)\n  }\n\n  async updateAvatar(image: Express.Multer.File, userid: ObjectId) {\n    const buffer = await sharp(image.buffer).resize(100, 100).webp().toBuffer()\n\n    const client = SystemDatabase.client\n    const session = client.startSession()\n    session.startTransaction()\n\n    try {\n      await this.db\n        .collection<UserAvatar>('UserAvatar')\n        .deleteOne({ createdBy: userid }, { session })\n\n      await this.db.collection<UserAvatar>('UserAvatar').insertOne(\n        {\n          data: buffer,\n          createdBy: new ObjectId(userid),\n          createdAt: new Date(),\n        },\n        { session },\n      )\n\n      await this.db.collection<UserProfile>('UserProfile').updateOne(\n        { uid: userid },\n        {\n          $set: {\n            avatar: '',\n          },\n        },\n        { session },\n      )\n      await session.commitTransaction()\n    } catch (error) {\n      await session.abortTransaction()\n      throw error\n    } finally {\n      await session.endSession()\n    }\n\n    return await this.findOneById(userid)\n  }\n\n  async getAvatarData(uid: ObjectId) {\n    const user = await this.findOneById(uid)\n    if (!user) {\n      return null\n    }\n\n    const avatar = await this.db\n      .collection<UserAvatar>('UserAvatar')\n      .findOne({ createdBy: user._id })\n\n    if (!avatar?.data) {\n      return null\n    }\n\n    return avatar.data.buffer\n  }\n}\n"
  },
  {
    "path": "server/src/utils/crypto.ts",
    "content": "import * as crypto from 'crypto'\n\n// use sha256 to hash the password\nexport function hashPassword(password: string): string {\n  const hash = crypto.createHash('sha256')\n  hash.update(password)\n  return hash.digest('hex')\n}\n"
  },
  {
    "path": "server/src/utils/decorator.ts",
    "content": "import { createParamDecorator, ExecutionContext } from '@nestjs/common'\n\nexport const InjectUser = createParamDecorator(\n  (data: unknown, ctx: ExecutionContext) => {\n    const request = ctx.switchToHttp().getRequest()\n    return request.user\n  },\n)\n\nexport const InjectGroup = createParamDecorator(\n  (data: unknown, ctx: ExecutionContext) => {\n    const request = ctx.switchToHttp().getRequest()\n    return request.group\n  },\n)\n\nexport const InjectApplication = createParamDecorator(\n  (data: unknown, ctx: ExecutionContext) => {\n    const request = ctx.switchToHttp().getRequest()\n    return request.application\n  },\n)\n"
  },
  {
    "path": "server/src/utils/getter.ts",
    "content": "import { Condition } from 'src/region/cluster/types'\nimport { ApplicationNamespaceMode, Region } from 'src/region/entities/region'\nimport { IRequest } from './interface'\n\n/**\n * Get application namespace name by appid (in kubernetes)\n * @param appid\n * @returns\n */\nexport function GetApplicationNamespace(region: Region, appid: string) {\n  const conf = region.namespaceConf\n  if (conf?.mode === ApplicationNamespaceMode.Fixed) {\n    return conf.fixed\n  }\n\n  if (conf?.mode === ApplicationNamespaceMode.AppId) {\n    const prefix = conf?.prefix || ''\n    return `${prefix}${appid}`\n  }\n\n  return appid\n}\n\nexport function isConditionTrue(type: string, conditions: Condition[] | any[]) {\n  if (!conditions) return false\n\n  for (const condition of conditions) {\n    if (condition.type === type) {\n      return condition.status === 'True'\n    }\n  }\n  return false\n}\n\nexport function GetClientIPFromRequest(req: IRequest) {\n  // try to get ip from x-forwarded-for\n  const ips_str = req.headers['x-forwarded-for'] as string\n  if (ips_str) {\n    const ips = ips_str.split(',')\n    return ips[0]\n  }\n\n  // try to get ip from x-real-ip\n  const ip = req.headers['x-real-ip'] as string\n  if (ip) {\n    return ip\n  }\n\n  return null\n}\n"
  },
  {
    "path": "server/src/utils/interface.ts",
    "content": "import { Request, Response } from 'express'\nimport { Application } from 'src/application/entities/application'\nimport { UserWithProfile } from 'src/user/entities/user'\n\nexport interface IRequest extends Request {\n  user?: UserWithProfile\n  application?: Application\n  [key: string]: any\n}\n\nexport interface IResponse extends Response {\n  [key: string]: any\n}\n"
  },
  {
    "path": "server/src/utils/k8s-error.ts",
    "content": "interface K8sError {\n  message: string\n  stack?: string\n  response?: {\n    statusCode?: number\n    statusText?: string\n    body?: {\n      reason?: string\n      code?: number\n      details?: any\n    }\n  }\n}\n/**\n * Format k8s error information for debugging and logging\n * @param error - Error object thrown by k8s operations\n * @returns Formatted error details object\n */\nexport function formatK8sError(error: K8sError | Error | any) {\n  return {\n    message: error.message,\n    statusCode: error.response?.statusCode,\n    statusText: error.response?.statusText,\n    body: error.response?.body,\n    reason: error.response?.body?.reason,\n    code: error.response?.body?.code,\n    details: error.response?.body?.details,\n    stack: error.stack,\n  }\n}\n\n/**\n * Format k8s error as JSON string for log output\n * @param error - Error object thrown by k8s operations\n * @returns Formatted JSON string\n */\nexport function formatK8sErrorAsJson(error: K8sError | Error | any): string {\n  try {\n    return JSON.stringify(formatK8sError(error), null, 2)\n  } catch (e) {\n    return JSON.stringify({ message: error.message, stringifyError: e.message })\n  }\n}\n"
  },
  {
    "path": "server/src/utils/lang.ts",
    "content": "import * as ts from 'typescript'\n\n/**\n * compile typescript code to javascript\n * @param source typescript source code\n */\nexport function compileTs2js(source: string, name: string) {\n  const jscode = ts.transpile(\n    source,\n    {\n      module: ts.ModuleKind.Node16,\n      target: ts.ScriptTarget.ES2022,\n      removeComments: true,\n      inlineSourceMap: true,\n    },\n    `${name}.ts`,\n    undefined,\n    name,\n  )\n\n  return jscode\n}\n\n/**\n * Deeply freeze object recursively\n * @param object\n * @returns\n */\nexport function deepFreeze<T>(object: T) {\n  // Retrieve the property names defined on object\n  const propNames = Object.getOwnPropertyNames(object)\n\n  // Freeze properties before freezing self\n  for (const name of propNames) {\n    const value = object[name]\n\n    if (value && typeof value === 'object') {\n      deepFreeze(value)\n    }\n  }\n\n  return Object.freeze(object)\n}\n"
  },
  {
    "path": "server/src/utils/number.ts",
    "content": "/**\n * PriceRound()\n * - keep two decimals\n * - 1.234 => 1.23\n * - 1.235 => 1.24\n *\n * Special case:\n * - capitalize the first letter of this function name to make it like a constructor\n * @param price\n * @returns\n */\nexport function PriceRound(price: number | string) {\n  const priceNum = Number(price)\n  return Math.round(priceNum * 100) / 100\n}\n\nexport function PriceAdd(price1: number | string, price2: number | string) {\n  const price1Num = Number(price1)\n  const price2Num = Number(price2)\n  return PriceRound(price1Num + price2Num)\n}\n\nexport function PriceSub(price1: number | string, price2: number | string) {\n  const price1Num = Number(price1)\n  const price2Num = Number(price2)\n  return PriceRound(price1Num - price2Num)\n}\n\nexport function PriceMul(price1: number | string, price2: number | string) {\n  const price1Num = Number(price1)\n  const price2Num = Number(price2)\n  return PriceRound(price1Num * price2Num)\n}\n\nexport function PriceDiv(price1: number | string, price2: number | string) {\n  const price1Num = Number(price1)\n  const price2Num = Number(price2)\n  return PriceRound(price1Num / price2Num)\n}\n\nexport function extractNumber(value: string): number {\n  const match = value.match(/\\d+/)\n  return match ? parseInt(match[0], 10) : null\n}\n"
  },
  {
    "path": "server/src/utils/p-limit.ts",
    "content": "/**\n * author: sindresorhus\n * https://github.com/sindresorhus/p-limit\n */\nclass Node<T> {\n  value: T\n  next: Node<T>\n\n  constructor(value: T) {\n    this.value = value\n  }\n}\n\nclass Queue<T> {\n  #head?: Node<T>\n  #tail?: Node<T>\n  #size: number\n\n  constructor() {\n    this.clear()\n  }\n\n  enqueue(value: T) {\n    const node = new Node<T>(value)\n\n    if (this.#head) {\n      this.#tail.next = node\n      this.#tail = node\n    } else {\n      this.#head = node\n      this.#tail = node\n    }\n\n    this.#size++\n  }\n\n  dequeue() {\n    const current = this.#head\n    if (!current) {\n      return\n    }\n\n    this.#head = this.#head.next\n    this.#size--\n    return current.value\n  }\n\n  clear() {\n    this.#head = undefined\n    this.#tail = undefined\n    this.#size = 0\n  }\n\n  get size() {\n    return this.#size\n  }\n\n  *[Symbol.iterator]() {\n    let current = this.#head\n\n    while (current) {\n      yield current.value\n      current = current.next\n    }\n  }\n}\n\nexport default function pLimit(concurrency: number): LimitFunction {\n  if (\n    !(\n      (Number.isInteger(concurrency) ||\n        concurrency === Number.POSITIVE_INFINITY) &&\n      concurrency > 0\n    )\n  ) {\n    throw new TypeError('Expected `concurrency` to be a number from 1 and up')\n  }\n\n  const queue = new Queue<() => Promise<unknown>>()\n  let activeCount = 0\n\n  const next = () => {\n    activeCount--\n\n    if (queue.size > 0) {\n      queue.dequeue()()\n    }\n  }\n\n  const run = async (fn, resolve, args) => {\n    activeCount++\n\n    const result = (async () => fn(...args))()\n\n    resolve(result)\n\n    try {\n      await result\n    } catch {}\n\n    next()\n  }\n\n  const enqueue = (fn, resolve, args) => {\n    queue.enqueue(run.bind(undefined, fn, resolve, args))\n    ;(async () => {\n      // This function needs to wait until the next microtask before comparing\n      // `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n      // when the run function is dequeued and called. The comparison in the if-statement\n      // needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n      await Promise.resolve()\n\n      if (activeCount < concurrency && queue.size > 0) {\n        queue.dequeue()()\n      }\n    })()\n  }\n\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  const generator: LimitFunction = (fn, ...args) =>\n    new Promise((resolve) => {\n      enqueue(fn, resolve, args)\n    })\n\n  Object.defineProperties(generator, {\n    activeCount: {\n      get: () => activeCount,\n    },\n    pendingCount: {\n      get: () => queue.size,\n    },\n    clearQueue: {\n      value: () => {\n        queue.clear()\n      },\n    },\n  })\n\n  return generator\n}\n\nexport interface LimitFunction {\n  /**\n\tThe number of promises that are currently running.\n\t*/\n  readonly activeCount: number\n\n  /**\n\tThe number of promises that are waiting to run (i.e. their internal `fn` was not called yet).\n\t*/\n  readonly pendingCount: number\n\n  /**\n\tDiscard pending promises that are waiting to run.\n\n\tThis might be useful if you want to teardown the queue at the end of your program's lifecycle or discard any function calls referencing an intermediary state of your app.\n\n\tNote: This does not cancel promises that are already running.\n\t*/\n  clearQueue: () => void\n\n  /**\n\t@param fn - Promise-returning/async function.\n\t@param arguments - Any arguments to pass through to `fn`. Support for passing arguments on to the `fn` is provided in order to be able to avoid creating unnecessary closures. You probably don't need this optimization unless you're pushing a lot of functions.\n\t@returns The promise returned by calling `fn(...arguments)`.\n\t*/\n  <Arguments extends unknown[], ReturnType>(\n    fn: (...args: Arguments) => PromiseLike<ReturnType> | ReturnType,\n    ...args: Arguments\n  ): Promise<ReturnType>\n}\n"
  },
  {
    "path": "server/src/utils/random.ts",
    "content": "import * as nanoid from 'nanoid'\nimport * as dayjs from 'dayjs'\n\nexport function GenerateAlphaNumericPassword(length: number) {\n  const nano = nanoid.customAlphabet(\n    '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\n    length || 16,\n  )\n  return nano()\n}\n\nexport function GenerateInviteCode(length?: number) {\n  const nano = nanoid.customAlphabet(\n    '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\n    length || 7,\n  )\n  return nano()\n}\n\nexport function GenerateRandomString(length: number) {\n  return GenerateAlphaNumericPassword(length)\n}\n\nexport function GenerateRandomNumericString(length: number) {\n  const nano = nanoid.customAlphabet('0123456789', length || 16)\n  return nano()\n}\n\nexport function GenerateOrderNumber() {\n  const dateStr = dayjs().format('YYYYMMDDHHMMSS')\n  const randomStr = GenerateRandomNumericString(6)\n  return `${dateStr}${randomStr}`\n}\n"
  },
  {
    "path": "server/src/utils/response.ts",
    "content": "import { applyDecorators, Type } from '@nestjs/common'\nimport {\n  ApiExtraModels,\n  ApiProperty,\n  ApiResponse,\n  getSchemaPath,\n} from '@nestjs/swagger'\n\nexport class ResponseUtil<T = any> {\n  @ApiProperty({ required: false })\n  public error: string\n\n  @ApiProperty({\n    required: false,\n  })\n  public data: T\n\n  static ok<T>(data: T) {\n    return new ResponseUtil(data, null)\n  }\n\n  static error(error: string) {\n    return new ResponseUtil(null, error)\n  }\n\n  static build<T = any>(data: T, error: string) {\n    return new ResponseUtil(data, error)\n  }\n\n  constructor(data: T, error: string) {\n    this.data = data\n    this.error = error\n  }\n\n  valueOf() {\n    return this.toJSON()\n  }\n\n  toJSON() {\n    return {\n      error: this.error,\n      data: this.data,\n    }\n  }\n  toString() {\n    return JSON.stringify(this.toJSON())\n  }\n}\n\nexport const ApiResponseString = () =>\n  applyDecorators(\n    ApiExtraModels(ResponseUtil),\n    ApiResponse({\n      schema: {\n        allOf: [\n          { $ref: getSchemaPath(ResponseUtil) },\n          {\n            properties: {\n              data: { type: 'string' },\n            },\n          },\n        ],\n      },\n    }),\n  )\n\nexport const ApiResponseObject = <DataDto extends Type<unknown>>(\n  dataDto: DataDto,\n) =>\n  applyDecorators(\n    ApiExtraModels(ResponseUtil, dataDto),\n    ApiResponse({\n      schema: {\n        allOf: [\n          { $ref: getSchemaPath(ResponseUtil) },\n          {\n            properties: {\n              data: { $ref: getSchemaPath(dataDto) },\n            },\n          },\n        ],\n      },\n    }),\n  )\n\nexport const ApiResponseArray = <DataDto extends Type<unknown>>(\n  dataDto: DataDto,\n) =>\n  applyDecorators(\n    ApiExtraModels(ResponseUtil, dataDto),\n    ApiResponse({\n      schema: {\n        allOf: [\n          { $ref: getSchemaPath(ResponseUtil) },\n          {\n            properties: {\n              data: {\n                type: 'array',\n                items: { $ref: getSchemaPath(dataDto) },\n              },\n            },\n          },\n        ],\n      },\n    }),\n  )\n\nexport const ApiResponsePagination = <DataDto extends Type<unknown>>(\n  dataDto: DataDto,\n) =>\n  applyDecorators(\n    ApiExtraModels(ResponseUtil, dataDto),\n    ApiResponse({\n      schema: {\n        allOf: [\n          { $ref: getSchemaPath(ResponseUtil) },\n          {\n            properties: {\n              data: {\n                type: 'object',\n                properties: {\n                  list: {\n                    type: 'array',\n                    items: { $ref: getSchemaPath(dataDto) },\n                  },\n                  total: { type: 'number' },\n                  page: { type: 'number' },\n                  pageSize: { type: 'number' },\n                },\n              },\n            },\n          },\n        ],\n      },\n    }),\n  )\n"
  },
  {
    "path": "server/src/website/dto/create-website.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsEnum, IsNotEmpty, IsString } from 'class-validator'\nimport { DomainState } from 'src/gateway/entities/runtime-domain'\n\nexport class CreateWebsiteDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @IsString()\n  bucketName: string\n\n  @ApiProperty()\n  @IsEnum(DomainState)\n  @IsNotEmpty()\n  state: DomainState\n}\n"
  },
  {
    "path": "server/src/website/dto/update-website.dto.ts",
    "content": "import { ApiProperty } from '@nestjs/swagger'\nimport { IsNotEmpty, IsString } from 'class-validator'\n\nexport class BindCustomDomainDto {\n  @ApiProperty()\n  @IsNotEmpty()\n  @IsString()\n  domain: string\n}\n"
  },
  {
    "path": "server/src/website/entities/website.ts",
    "content": "import { ObjectId } from 'mongodb'\nimport { DomainPhase, DomainState } from 'src/gateway/entities/runtime-domain'\nimport { StorageBucket } from 'src/storage/entities/storage-bucket'\n\nexport class WebsiteHosting {\n  _id?: ObjectId\n  appid: string\n  bucketName: string\n  domain: string\n  isCustom: boolean\n  state: DomainState\n  phase: DomainPhase\n  createdAt: Date\n  updatedAt: Date\n  lockedAt: Date\n\n  constructor(partial: Partial<WebsiteHosting>) {\n    Object.assign(this, partial)\n  }\n}\n\nexport type WebsiteHostingWithBucket = WebsiteHosting & {\n  bucket: StorageBucket\n}\n"
  },
  {
    "path": "server/src/website/website.controller.ts",
    "content": "import {\n  Controller,\n  Get,\n  Post,\n  Body,\n  Patch,\n  Param,\n  Delete,\n  UseGuards,\n} from '@nestjs/common'\nimport { WebsiteService } from './website.service'\nimport { CreateWebsiteDto } from './dto/create-website.dto'\nimport { BindCustomDomainDto } from './dto/update-website.dto'\nimport {\n  ApiBearerAuth,\n  ApiOperation,\n  ApiResponse,\n  ApiTags,\n} from '@nestjs/swagger'\nimport { ResponseUtil } from 'src/utils/response'\nimport { BundleService } from 'src/application/bundle.service'\nimport { BucketService } from 'src/storage/bucket.service'\nimport { ObjectId } from 'mongodb'\nimport { DomainState } from 'src/gateway/entities/runtime-domain'\nimport { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'\nimport { ApplicationAuthGuard } from 'src/authentication/application.auth.guard'\n\n@ApiTags('WebsiteHosting')\n@ApiBearerAuth('Authorization')\n@Controller('apps/:appid/websites')\nexport class WebsiteController {\n  constructor(\n    private readonly websiteService: WebsiteService,\n    private readonly bundleService: BundleService,\n    private readonly bucketService: BucketService,\n  ) {}\n\n  /**\n   * Create a new website\n   * @param appid\n   * @param dto\n   * @param req\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Create a new website' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post()\n  async create(@Param('appid') appid: string, @Body() dto: CreateWebsiteDto) {\n    // check if website hosting limit reached\n    const bundle = await this.bundleService.findOne(appid)\n    const LIMIT_COUNT = bundle?.resource?.limitCountOfWebsiteHosting || 0\n    const count = await this.websiteService.count(appid)\n    if (count >= LIMIT_COUNT) {\n      return ResponseUtil.error(\n        `website hosting limit (${LIMIT_COUNT}) reached`,\n      )\n    }\n\n    // check if bucket already binded as website hosting\n    const bucket = await this.bucketService.findOne(appid, dto.bucketName)\n    if (!bucket) {\n      return ResponseUtil.error('bucket not found')\n    }\n\n    if (bucket.websiteHosting?.state === DomainState.Deleted) {\n      return ResponseUtil.error(\n        'The previous website is deleting, please try again later.',\n      )\n    }\n\n    if (bucket.websiteHosting) {\n      return ResponseUtil.error('bucket already binded as website hosting')\n    }\n\n    const site = await this.websiteService.create(appid, dto)\n    if (!site) {\n      return ResponseUtil.error('failed to create website')\n    }\n\n    return ResponseUtil.ok(site)\n  }\n\n  /**\n   * Get all websites of an app\n   * @param req\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Get all websites of an app' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get()\n  async findAll(@Param('appid') appid: string) {\n    const sites = await this.websiteService.findAll(appid)\n    return ResponseUtil.ok(sites)\n  }\n\n  /**\n   * Get a website hosting of an app\n   * @param id\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Get a website hosting of an app' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Get(':id')\n  async findOne(@Param('appid') _appid: string, @Param('id') id: string) {\n    const site = await this.websiteService.findOne(new ObjectId(id))\n    if (!site) {\n      return ResponseUtil.error('website hosting not found')\n    }\n\n    return ResponseUtil.ok(site)\n  }\n\n  /**\n   * Bind custom domain to website\n   * @param id\n   * @param dto\n   * @param req\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Bind custom domain to website' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Patch(':id')\n  async bindDomain(\n    @Param('appid') _appid: string,\n    @Param('id') id: string,\n    @Body() dto: BindCustomDomainDto,\n  ) {\n    // get website\n    const site = await this.websiteService.findOne(new ObjectId(id))\n    if (!site) {\n      return ResponseUtil.error('website hosting not found')\n    }\n\n    // check if domain resolved\n    const resolved = await this.websiteService.checkResolved(site, dto.domain)\n    if (!resolved) {\n      return ResponseUtil.error('domain not resolved')\n    }\n\n    // TODO: check if domain is already binded, remove old domain\n\n    // bind domain\n    const binded = await this.websiteService.bindCustomDomain(\n      site._id,\n      dto.domain,\n    )\n    if (!binded) {\n      return ResponseUtil.error('failed to bind domain')\n    }\n\n    return ResponseUtil.ok(binded)\n  }\n\n  /**\n   * Check if domain is resolved\n   * @param id\n   * @param dto\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Check if domain is resolved' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Post(':id/resolved')\n  async checkResolved(\n    @Param('appid') _appid: string,\n    @Param('id') id: string,\n    @Body() dto: BindCustomDomainDto,\n  ) {\n    // get website\n    const site = await this.websiteService.findOne(new ObjectId(id))\n    if (!site) {\n      return ResponseUtil.error('website hosting not found')\n    }\n\n    // check if domain resolved\n    const resolved = await this.websiteService.checkResolved(site, dto.domain)\n    if (!resolved) {\n      return ResponseUtil.error('domain not resolved')\n    }\n\n    return ResponseUtil.ok(resolved)\n  }\n\n  /**\n   * Delete a website hosting\n   * @param id\n   * @returns\n   */\n  @ApiResponse({ type: ResponseUtil })\n  @ApiOperation({ summary: 'Delete a website hosting' })\n  @UseGuards(JwtAuthGuard, ApplicationAuthGuard)\n  @Delete(':id')\n  async remove(@Param('appid') _appid: string, @Param('id') id: string) {\n    const site = await this.websiteService.findOne(new ObjectId(id))\n    if (!site) {\n      return ResponseUtil.error('website hosting not found')\n    }\n\n    const deleted = await this.websiteService.removeOne(site._id)\n    if (!deleted) {\n      return ResponseUtil.error('failed to delete website hosting')\n    }\n\n    return ResponseUtil.ok(deleted)\n  }\n}\n"
  },
  {
    "path": "server/src/website/website.module.ts",
    "content": "import { Module } from '@nestjs/common'\nimport { WebsiteService } from './website.service'\nimport { WebsiteController } from './website.controller'\nimport { ApplicationService } from 'src/application/application.service'\nimport { StorageModule } from 'src/storage/storage.module'\nimport { BundleService } from 'src/application/bundle.service'\n\n@Module({\n  imports: [StorageModule],\n  controllers: [WebsiteController],\n  providers: [WebsiteService, ApplicationService, BundleService],\n})\nexport class WebsiteModule {}\n"
  },
  {
    "path": "server/src/website/website.service.ts",
    "content": "import { Injectable, Logger } from '@nestjs/common'\nimport { TASK_LOCK_INIT_TIME } from 'src/constants'\nimport { RegionService } from 'src/region/region.service'\nimport { CreateWebsiteDto } from './dto/create-website.dto'\nimport * as assert from 'node:assert'\nimport * as dns from 'node:dns'\nimport { SystemDatabase } from 'src/system-database'\nimport { WebsiteHosting, WebsiteHostingWithBucket } from './entities/website'\nimport { DomainPhase, DomainState } from 'src/gateway/entities/runtime-domain'\nimport { ObjectId } from 'mongodb'\nimport { BucketDomain } from 'src/gateway/entities/bucket-domain'\n\n@Injectable()\nexport class WebsiteService {\n  private readonly logger = new Logger(WebsiteService.name)\n  private readonly db = SystemDatabase.db\n\n  constructor(private readonly regionService: RegionService) {}\n\n  async create(appid: string, dto: CreateWebsiteDto) {\n    const region = await this.regionService.findByAppId(appid)\n    assert(region, 'region not found')\n\n    // generate default website domain\n    const domain = `${dto.bucketName}.${region.gatewayConf.websiteDomain}`\n\n    const res = await this.db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .insertOne({\n        appid: appid,\n        bucketName: dto.bucketName,\n        domain: domain,\n        isCustom: false,\n        state: DomainState.Active,\n        phase: DomainPhase.Creating,\n        lockedAt: TASK_LOCK_INIT_TIME,\n        createdAt: new Date(),\n        updatedAt: new Date(),\n      })\n\n    return await this.findOne(res.insertedId)\n  }\n\n  async count(appid: string) {\n    const count = await this.db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .countDocuments({ appid })\n\n    return count\n  }\n\n  async findAll(appid: string) {\n    const websites = await this.db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .aggregate<WebsiteHostingWithBucket>()\n      .match({ appid })\n      .lookup({\n        from: 'StorageBucket',\n        localField: 'bucketName',\n        foreignField: 'name',\n        as: 'bucket',\n      })\n      .unwind('$bucket')\n      .toArray()\n\n    return websites\n  }\n\n  async findOne(id: ObjectId) {\n    const website = await this.db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .aggregate<WebsiteHostingWithBucket>()\n      .match({ _id: id })\n      .lookup({\n        from: 'StorageBucket',\n        localField: 'bucketName',\n        foreignField: 'name',\n        as: 'bucket',\n      })\n      .unwind('$bucket')\n      .next()\n\n    return website\n  }\n\n  async checkResolved(website: WebsiteHosting, customDomain: string) {\n    // get bucket domain\n    const bucketDomain = await this.db\n      .collection<BucketDomain>('BucketDomain')\n      .findOne({\n        appid: website.appid,\n        bucketName: website.bucketName,\n      })\n\n    const cnameTarget = bucketDomain.domain\n\n    // check domain is available\n    const resolver = new dns.promises.Resolver({ timeout: 3000, tries: 1 })\n    const result = await resolver\n      .resolveCname(customDomain as string)\n      .catch(() => {\n        return\n      })\n\n    if (!result) return false\n    if (false === (result || []).includes(cnameTarget)) return false\n    return true\n  }\n\n  async bindCustomDomain(id: ObjectId, domain: string) {\n    const res = await this.db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .findOneAndUpdate(\n        { _id: id },\n        {\n          $set: {\n            domain: domain,\n            isCustom: true,\n            phase: DomainPhase.Deleting,\n            updatedAt: new Date(),\n          },\n        },\n        { returnDocument: 'after' },\n      )\n\n    return res.value\n  }\n\n  async removeOne(id: ObjectId) {\n    const res = await this.db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .findOneAndUpdate(\n        { _id: id },\n        { $set: { state: DomainState.Deleted } },\n        { returnDocument: 'after' },\n      )\n\n    return res.value\n  }\n\n  async removeAll(appid: string) {\n    const res = await this.db\n      .collection<WebsiteHosting>('WebsiteHosting')\n      .updateMany(\n        { appid },\n        {\n          $set: {\n            state: DomainState.Deleted,\n            phase: DomainPhase.Deleting,\n            updatedAt: new Date(),\n          },\n        },\n      )\n\n    return res\n  }\n}\n"
  },
  {
    "path": "server/test/app.e2e-spec.ts",
    "content": "import { Test, TestingModule } from '@nestjs/testing'\nimport { INestApplication } from '@nestjs/common'\nimport * as request from 'supertest'\nimport { AppModule } from './../src/app.module'\n\ndescribe('AppController (e2e)', () => {\n  let app: INestApplication\n\n  beforeEach(async () => {\n    const moduleFixture: TestingModule = await Test.createTestingModule({\n      imports: [AppModule],\n    }).compile()\n\n    app = moduleFixture.createNestApplication()\n    await app.init()\n  })\n\n  it('/ (GET)', () => {\n    return request(app.getHttpServer())\n      .get('/')\n      .expect(200)\n      .expect('Hello World!')\n  })\n})\n"
  },
  {
    "path": "server/test/jest-e2e.json",
    "content": "{\n  \"moduleFileExtensions\": [\"js\", \"json\", \"ts\"],\n  \"rootDir\": \".\",\n  \"testEnvironment\": \"node\",\n  \"testRegex\": \".e2e-spec.ts$\",\n  \"transform\": {\n    \"^.+\\\\.(t|j)s$\": \"ts-jest\"\n  }\n}\n"
  },
  {
    "path": "server/tsconfig.build.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"exclude\": [\"node_modules\", \"test\", \"dist\", \"**/*spec.ts\"]\n}\n"
  },
  {
    "path": "server/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"module\": \"commonjs\",\n    \"declaration\": true,\n    \"removeComments\": true,\n    \"emitDecoratorMetadata\": true,\n    \"experimentalDecorators\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"target\": \"es2017\",\n    \"sourceMap\": true,\n    \"outDir\": \"./dist\",\n    \"baseUrl\": \"./\",\n    \"incremental\": true,\n    \"skipLibCheck\": true,\n    \"strictNullChecks\": false,\n    \"noImplicitAny\": false,\n    \"strictBindCallApply\": false,\n    \"forceConsistentCasingInFileNames\": false,\n    \"noFallthroughCasesInSwitch\": false\n  }\n}"
  },
  {
    "path": "services/runtime-exporter/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"laf/service\"\n}"
  },
  {
    "path": "services/runtime-exporter/.gitignore",
    "content": "dist\nnode_modules\n.env\ntsconfig.build.json\n"
  },
  {
    "path": "services/runtime-exporter/Dockerfile",
    "content": "FROM node:20.10.0\n\n# Set environment variables\nENV LOG_LEVEL=debug\nENV NODE_ENV=production\n\nWORKDIR /app\n\nCOPY ./dist /app/dist\nCOPY ./node_modules /app/node_modules\nCOPY ./package*.json /app/\n\n# Set non-root user for better security\nRUN chown -R node:node /app\nUSER node\n\n# Expose application port\nEXPOSE 2342\n\n# Start the application\nCMD [ \"npm\", \"run\", \"start\" ]\n"
  },
  {
    "path": "services/runtime-exporter/package.json",
    "content": "{\n  \"name\": \"runtime-exporter\",\n  \"version\": \"1.0.0\",\n  \"description\": \"the runtime metrics exporter of laf\",\n  \"main\": \"./dist/index.js\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"NODE_ENV=development node ./dist/index.js\",\n    \"build\": \"tsc -p tsconfig.json\",\n    \"watch\": \"tsc -p tsconfig.json -w\",\n    \"start\": \"NODE_ENV=production node ./dist/index.js\",\n    \"lint\": \"eslint . --fix --ext .ts --ext .js\"\n  },\n  \"devDependencies\": {\n    \"@types/express\": \"^4.17.20\",\n    \"@types/node\": \"^20.8.8\",\n    \"typescript\": \"^5.2.2\"\n  },\n  \"dependencies\": {\n    \"@kubernetes/client-node\": \"^0.19.0\",\n    \"database-proxy\": \"^1.0.0\",\n    \"dotenv\": \"^16.3.1\",\n    \"express\": \"^4.18.2\",\n    \"express-async-errors\": \"^3.1.1\",\n    \"log4js\": \"^6.9.1\",\n    \"prom-client\": \"^15.0.0\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,js}\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "services/runtime-exporter/src/config.ts",
    "content": "import dotenv from 'dotenv'\n\ndotenv.config()\n\nexport default class Config {\n  /**\n   * the logger level : 'fatal', 'error', 'warning', 'info', 'debug', 'trace'\n   */\n  static get LOG_LEVEL():\n    | 'fatal'\n    | 'error'\n    | 'warning'\n    | 'info'\n    | 'debug'\n    | 'trace' {\n    return (process.env['LOG_LEVEL'] as any) ?? (this.isProd ? 'info' : 'debug')\n  }\n\n  /**\n   * in production deploy or not\n   */\n  static get isProd(): boolean {\n    return process.env.NODE_ENV === 'production'\n  }\n\n  /**\n   * the serving port, default is 2342\n   */\n  static get PORT(): number {\n    return (process.env.PORT ?? 2342) as number\n  }\n\n  static get KUBECONF(): string {\n    return process.env.KUBECONF || ''\n  }\n\n  static get NAMESPACE(): string {\n    return process.env.NAMESPACE || ''\n  }\n  static get DB_NAMESPACE(): string {\n    return process.env.DB_NAMESPACE || ''\n  }\n\n  static get API_SECRET(): string {\n    if (!process.env.API_SECRET) {\n      throw new Error('API_SECRET is not defined')\n    }\n    return process.env.API_SECRET\n  }\n}\n"
  },
  {
    "path": "services/runtime-exporter/src/handler/get-db-metrics.ts",
    "content": "import { RequestHandler } from 'express'\nimport { ClusterService, Metric } from '../helper/cluster.service'\nimport Config from '../config'\nimport * as prom from 'prom-client'\n\nconst register = new prom.Registry()\n\nconst DATABASE_CPU = new prom.Gauge({\n  name: 'laf_mongo_cpu',\n  help: 'the cpu of the mongo',\n  registers: [register],\n  labelNames: ['container', 'pod', 'appid'],\n})\n\nconst DATABASE_MEMORY = new prom.Gauge({\n  name: 'laf_mongo_memory',\n  help: 'the memory of the mongo',\n  registers: [register],\n  labelNames: ['container', 'pod', 'appid'],\n})\n\nfunction updateMetrics(metric: Metric) {\n  DATABASE_CPU.labels(metric.containerName, metric.podName, metric.appid).set(\n    metric.cpu,\n  )\n  DATABASE_MEMORY.labels(\n    metric.containerName,\n    metric.podName,\n    metric.appid,\n  ).set(metric.memory)\n}\n\nconst getDatabaseMetrics: RequestHandler = async (req, res) => {\n  const token = req.params.token\n\n  if (!token || Config.API_SECRET !== token) {\n    return res.status(403).send('forbidden')\n  }\n\n  // Clear the metrics data generated by the last request\n  DATABASE_CPU.reset()\n  DATABASE_MEMORY.reset()\n\n  const databaseMetrics = await ClusterService.getPodMetrics(\n    ClusterService.DB_NAMESPACE,\n    ClusterService.LABEL_DATABASE,\n    'DATABASE',\n  )\n\n  for (const metric of databaseMetrics) {\n    updateMetrics(metric)\n  }\n\n  res.set('Content-Type', 'text/plain')\n  res.send(await register.metrics())\n}\n\nexport default getDatabaseMetrics\n"
  },
  {
    "path": "services/runtime-exporter/src/handler/get-runtime-metrics.ts",
    "content": "import { RequestHandler } from 'express'\nimport { ClusterService, Metric } from '../helper/cluster.service'\nimport Config from '../config'\nimport * as prom from 'prom-client'\n\nconst register = new prom.Registry()\n\nconst RUNTIME_CPU = new prom.Gauge({\n  name: 'laf_runtime_cpu',\n  help: 'the cpu of the runtime',\n  registers: [register],\n  labelNames: ['container', 'pod', 'appid'],\n})\n\nconst RUNTIME_MEMORY = new prom.Gauge({\n  name: 'laf_runtime_memory',\n  help: 'the memory of the runtime',\n  registers: [register],\n  labelNames: ['container', 'pod', 'appid'],\n})\n\nconst RUNTIME_CPU_LIMIT = new prom.Gauge({\n  name: 'laf_runtime_cpu_limit',\n  help: 'the cpu of the runtime limit',\n  registers: [register],\n  labelNames: ['container', 'appid'],\n})\n\nconst RUNTIME_MEMORY_LIMIT = new prom.Gauge({\n  name: 'laf_runtime_memory_limit',\n  help: 'the memory of the runtime limit',\n  registers: [register],\n  labelNames: ['container', 'appid'],\n})\n\nfunction updateMetrics(metric: Metric) {\n  RUNTIME_CPU.labels(metric.containerName, metric.podName, metric.appid).set(\n    metric.cpu,\n  )\n  RUNTIME_MEMORY.labels(metric.containerName, metric.podName, metric.appid).set(\n    metric.memory,\n  )\n}\n\nfunction updateLimitMetrics(metric: Metric) {\n  RUNTIME_CPU_LIMIT.labels(metric.containerName, metric.appid).set(metric.cpu)\n  RUNTIME_MEMORY_LIMIT.labels(metric.containerName, metric.appid).set(\n    metric.memory,\n  )\n}\n\nconst getRuntimeMetrics: RequestHandler = async (req, res) => {\n  const token = req.params.token\n\n  if (!token || Config.API_SECRET !== token) {\n    return res.status(403).send('forbidden')\n  }\n\n  // Clear the metrics data generated by the last request\n  RUNTIME_CPU.reset()\n  RUNTIME_CPU_LIMIT.reset()\n  RUNTIME_MEMORY.reset()\n  RUNTIME_MEMORY_LIMIT.reset()\n\n  const runtimeMetrics = await ClusterService.getPodMetrics(\n    ClusterService.NAMESPACE,\n    ClusterService.LABEL_KEY_APP_ID,\n    'RUNTIME',\n  )\n\n  for (const metric of runtimeMetrics) {\n    updateMetrics(metric)\n  }\n\n  const runtimeLimitMetrics =\n    await ClusterService.getRuntimePodsLimitForAllNamespaces()\n\n  for (const metric of runtimeLimitMetrics) {\n    updateLimitMetrics(metric)\n  }\n\n  res.set('Content-Type', 'text/plain')\n  res.send(await register.metrics())\n}\n\nexport default getRuntimeMetrics\n"
  },
  {
    "path": "services/runtime-exporter/src/helper/cluster.service.ts",
    "content": "import * as k8s from '@kubernetes/client-node'\nimport * as http from 'http'\nimport Config from '../config'\nimport {\n  totalCPUForContainer,\n  totalMemoryForContainer,\n  quantityToScalar,\n} from '@kubernetes/client-node/dist/util'\nimport { V1DeploymentList } from '@kubernetes/client-node'\n\nexport interface Metric {\n  cpu: number\n  memory: number\n  appid: string\n  containerName: string\n  podName?: string\n}\n\nexport class ClusterService {\n  /**\n   * Load kubeconfig:\n   * - if kubeconfig is empty, load from default config (in-cluster service account or ~/.kube/config)\n   * - if kubeconfig is not empty, load from string\n   */\n  static LABEL_KEY_APP_ID = 'laf.dev/appid'\n  static LABEL_DATABASE = 'app.kubernetes.io/managed-by=kubeblocks'\n  static NAMESPACE = Config.NAMESPACE\n  static DB_NAMESPACE = Config.DB_NAMESPACE\n\n  static loadKubeConfig() {\n    const conf = Config.KUBECONF\n    const kc = new k8s.KubeConfig()\n\n    // if conf is empty load from default config (in-cluster service account or ~/.kube/config)\n    if (!conf) {\n      kc.loadFromDefault()\n      return kc\n    }\n\n    // if conf is not empty load from string\n    kc.loadFromString(conf)\n    return kc\n  }\n\n  static makeCoreV1Api() {\n    const kc = this.loadKubeConfig()\n    return kc.makeApiClient(k8s.CoreV1Api)\n  }\n\n  static makeAppsV1Api() {\n    const kc = this.loadKubeConfig()\n    return kc.makeApiClient(k8s.AppsV1Api)\n  }\n\n  static getMetricsClient() {\n    const kc = this.loadKubeConfig()\n    return new k8s.Metrics(kc)\n  }\n\n  static async getPodMetrics(\n    namespace: string,\n    label: string,\n    app: string,\n  ): Promise<Metric[]> {\n    const metricsClient = this.getMetricsClient()\n    let res: any\n    if (namespace) {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      res = await metricsClient.metricsApiRequest(\n        `/apis/metrics.k8s.io/v1beta1/namespaces/${namespace}/pods?labelSelector=${label}`,\n      )\n    } else {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      res = await metricsClient.metricsApiRequest(\n        `/apis/metrics.k8s.io/v1beta1/pods?labelSelector=${label}`,\n      )\n    }\n\n    const metricsList: Metric[] = []\n\n    if (app === 'RUNTIME') {\n      for (const item of res.items) {\n        const appid: string =\n          item.metadata.labels[ClusterService.LABEL_KEY_APP_ID]\n        const podName = item.metadata.name\n        for (const container of item.containers) {\n          // millicores\n          const cpu = Number(quantityToScalar(container.usage.cpu || 0))\n          // bytes\n          const memory = Number(quantityToScalar(container.usage.memory || 0))\n\n          const metric: Metric = {\n            cpu: cpu,\n            memory: memory,\n            appid: appid,\n            containerName: container.name,\n            podName: podName,\n          }\n          metricsList.push(metric)\n        }\n      }\n    } else {\n      for (const item of res.items) {\n        const appid: string = item.metadata.labels['app.kubernetes.io/instance']\n        const podName = item.metadata.name\n        for (const container of item.containers) {\n          if (container.name === 'mongodb') {\n            // millicores\n            const cpu = Number(quantityToScalar(container.usage.cpu || 0))\n            // bytes\n            const memory = Number(quantityToScalar(container.usage.memory || 0))\n\n            const metric: Metric = {\n              cpu: cpu,\n              memory: memory,\n              appid: appid,\n              containerName: container.name,\n              podName: podName,\n            }\n            metricsList.push(metric)\n          }\n        }\n      }\n    }\n\n    return metricsList\n  }\n\n  static async getRuntimePodsLimitForAllNamespaces(): Promise<Metric[]> {\n    const appsV1Api = this.makeAppsV1Api()\n    let res: {\n      response: http.IncomingMessage\n      body: V1DeploymentList\n    }\n    if (ClusterService.NAMESPACE) {\n      res = await appsV1Api.listNamespacedDeployment(\n        ClusterService.NAMESPACE,\n        undefined,\n        undefined,\n        undefined,\n        undefined,\n        ClusterService.LABEL_KEY_APP_ID,\n      )\n    } else {\n      res = await appsV1Api.listDeploymentForAllNamespaces(\n        undefined,\n        undefined,\n        undefined,\n        ClusterService.LABEL_KEY_APP_ID,\n      )\n    }\n\n    const metricsList: Metric[] = []\n\n    for (const item of res.body.items) {\n      const appid = item.metadata.labels[ClusterService.LABEL_KEY_APP_ID]\n      const hpa = Number(item.spec.replicas)\n      for (const container of item.spec.template.spec.containers) {\n        const containerName = container.name\n        // cpu is in cores, convert to millicores, 1 core = 1000 millicores\n        const cpu = Number(totalCPUForContainer(container).limit || 0) * 1000\n        const memory =\n          // memory is in bytes, convert to MB, 1024 * 1024 = 1048576\n          Number(totalMemoryForContainer(container).limit || 0) / 1048576\n\n        const metric: Metric = {\n          cpu: cpu * hpa,\n          memory: memory * hpa,\n          appid: appid,\n          containerName: containerName,\n        }\n        metricsList.push(metric)\n      }\n    }\n\n    return metricsList\n  }\n}\n"
  },
  {
    "path": "services/runtime-exporter/src/index.ts",
    "content": "import express, { Request, Response } from 'express'\nimport Config from './config'\nimport { logger } from './logger'\nimport getRuntimeMetrics from './handler/get-runtime-metrics'\nimport getDatabaseMetrics from './handler/get-db-metrics'\n\nrequire('express-async-errors')\nconst app = express()\n\nprocess.on('unhandledRejection', (reason, promise) => {\n  logger.error('Caught unhandledRejection:', reason, promise)\n})\nprocess.on('uncaughtException', (err: Error) => {\n  logger.error('Caught uncaughtException:', err)\n})\n\napp.get('/runtime/metrics/:token', getRuntimeMetrics)\napp.get('/database/metrics/:token', getDatabaseMetrics)\napp.get('/healthz', (_, res: Response) => res.send('ok'))\n\n// express error capture middleware\napp.use((err: Error, _req: Request, res: Response, next: any) => {\n  logger.error('Caught error:', err)\n  res.status(500).send('Internal Server Error')\n  next()\n})\n\nconst server = app.listen(Config.PORT, () =>\n  logger.info(`server ${process.pid} listened on ${Config.PORT}`),\n)\n\nprocess.on('SIGTERM', gracefullyExit)\nprocess.on('SIGINT', gracefullyExit)\n\nasync function gracefullyExit() {\n  server.close(async () => {\n    logger.info('process gracefully exited!')\n    process.exit(0)\n  })\n}\n"
  },
  {
    "path": "services/runtime-exporter/src/logger.ts",
    "content": "import { LoggerInterface } from 'database-proxy'\nimport * as log4js from 'log4js'\nimport Config from './config'\n\n/**\n * Create logger instance\n * @param category log category\n * @param level the logger level : 'fatal', 'error', 'warning', 'info', 'debug', 'trace'\n * @returns\n */\nexport function createLogger(\n  category: string,\n  level?: string,\n): LoggerInterface {\n  const logger = log4js.getLogger(category)\n  logger.level = level ?? Config.LOG_LEVEL\n\n  return logger as any\n}\n\n/**\n * The global logger instance\n */\nexport const logger = createLogger('server')\n"
  },
  {
    "path": "services/runtime-exporter/tsconfig.dev.json",
    "content": "{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"declaration\": true,\n    \"module\": \"NodeNext\",\n    \"target\": \"ES2022\",\n    \"moduleResolution\": \"NodeNext\",\n    \"esModuleInterop\": true,\n    \"declarationMap\": false,\n    \"noEmitOnError\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": false,\n    \"noUnusedLocals\": false,\n    \"noUnusedParameters\": false,\n    \"outDir\": \"dist\",\n    \"pretty\": false,\n    \"removeComments\": true,\n    \"sourceMap\": true,\n    \"stripInternal\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true,\n    \"alwaysStrict\": true,\n    \"lib\": [\n      \"ES2022\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*\",\n  ],\n}"
  },
  {
    "path": "services/runtime-exporter/tsconfig.json",
    "content": "{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"allowJs\": false,\n    \"allowUnreachableCode\": false,\n    \"allowUnusedLabels\": false,\n    \"declaration\": true,\n    \"module\": \"NodeNext\",\n    \"target\": \"ES2022\",\n    \"moduleResolution\": \"NodeNext\",\n    \"esModuleInterop\": true,\n    \"declarationMap\": false,\n    \"noEmitOnError\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": false,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"outDir\": \"dist\",\n    \"pretty\": false,\n    \"removeComments\": true,\n    \"sourceMap\": true,\n    \"stripInternal\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true,\n    \"alwaysStrict\": true,\n    \"lib\": [\n      \"ES2022\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*\",\n  ],\n}"
  },
  {
    "path": "web/.dockerignore",
    "content": "# node_modules\n.env.local\n.env"
  },
  {
    "path": "web/.eslintrc",
    "content": "{\n  \"root\": true,\n  \"extends\": \"laf/web\"\n}\n"
  },
  {
    "path": "web/.gitignore",
    "content": "# Logs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\ndev-dist\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "web/.stylelintrc.json",
    "content": "{ \"extends\": [\"stylelint-config-standard\"] }"
  },
  {
    "path": "web/.swagger.config.js",
    "content": "module.exports = [\n  {\n    swaggerPath: \"http://api.maslow-dev.lafyun.com/-json\",\n    typingFileName: \"api-auto.d.ts\",\n\n    outDir: \"src/apis/v1\",\n    request: \"import request from '@/utils/request';\",\n    fileNameRule: function (url) {\n      return url.split(\"/\")[2];\n    },\n  },\n];\n"
  },
  {
    "path": "web/Dockerfile",
    "content": "FROM nginx:alpine\n\nCOPY ./nginx.conf /etc/nginx/conf.d/default.conf\nCOPY ./dist /usr/share/nginx/html\n"
  },
  {
    "path": "web/README.md",
    "content": "## Getting Started\n\nFirst, run the development server:\n\n```bash\npnpm install\n// or\npnpm i --registry=https://registry.npmmirror.com\n\n// then\npnpm run dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\n### File Tree:\n\n```\n.\n├── README.md\n├── components\n│   ├── Header\n│   │   └── index.tsx\n│   └── Layout\n│       ├── Basic.tsx\n│       └── Function.tsx\n├── constants\n│   └── index.ts\n├── locales\n│   ├── en\n│   │   └── message.js\n│   └── zh-CN\n│       └── message.js\n├── next-env.d.ts\n├── next.config.js\n├── package.json\n├── pages\n│   ├── _app.tsx\n│   ├── _document.tsx\n│   ├── api\n│   │   ├── app.ts\n│   │   └── response.ts\n│   ├── app\n│   │   ├── [id]\n│   │   │   ├── databases\n│   │   │   │   └── index.tsx\n│   │   │   ├── functions\n│   │   │   │   ├── [function_id].tsx\n│   │   │   │   ├── index.module.scss\n│   │   │   │   ├── mockFuncTextString.tsx\n│   │   │   │   ├── mods\n│   │   │   │   │   ├── CreateModal\n│   │   │   │   │   │   └── index.tsx\n│   │   │   │   │   ├── DebugPannel\n│   │   │   │   │   │   └── index.tsx\n│   │   │   │   │   ├── DependecePanel\n│   │   │   │   │   │   ├── index.module.scss\n│   │   │   │   │   │   └── index.tsx\n│   │   │   │   │   ├── FunctionPanel\n│   │   │   │   │   │   ├── index.module.scss\n│   │   │   │   │   │   └── index.tsx\n│   │   │   │   │   └── List\n│   │   │   │   │       └── index.tsx\n│   │   │   │   └── store.ts\n│   │   │   ├── index.tsx\n│   │   │   ├── mods\n│   │   │   │   └── SiderBar\n│   │   │   │       ├── index.module.scss\n│   │   │   │       └── index.tsx\n│   │   │   └── storages\n│   │   │       └── index.tsx\n│   │   ├── index.tsx\n│   │   └── mods\n│   │       └── CrateDialog\n│   │           └── index.tsx\n│   ├── globals.css\n│   ├── home\n│   │   └── index.tsx\n│   └── index.tsx\n├── pnpm-lock.yaml\n├── postcss.config.js\n├── public\n│   ├── favicon.ico\n│   ├── logo.png\n│   └── vercel.svg\n├── tailwind.config.js\n├── tsconfig.json\n└── utils\n    ├── i18n.ts\n    └── request.ts\n```\n\n### Tech Stack：\n\n- base: react / nextjs 12.x https://nextjs.org/docs/getting-started (will be update to 13.x)\n- request: react-query + axios https://tanstack.com/query/v4/\n- state mange: zustand + immer https://zustand-demo.pmnd.rs/\n- i18n: lingui https://lingui.js.org/\n- UI : chakra : https://chakra-ui.com/getting-started\n- Style: tailwind + sass https://tailwindcss.com/\n- Icon: react-icons: https://react-icons.github.io/react-icons\n\n### DX:\n\n- click-to-component https://github.com/ericclemmons/click-to-component\n"
  },
  {
    "path": "web/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.ico\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>云开发</title>\n  </head>\n\n  <body>\n    <div id=\"root\"></div>\n    <script defer src=\"/js/aws-sdk-2.1275.0.min.js\"></script>\n    <script type=\"module\" src=\"/src/main.tsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "web/nginx.conf",
    "content": "\nserver {\n    listen       80;\n    listen  [::]:80;\n    server_name  localhost;\n\n    include mime.types;\n    types {\n        application/manifest+json  webmanifest;\n    }\n\n    root   /usr/share/nginx/html;\n\n    #access_log  /var/log/nginx/host.access.log  main;\n\n    # all assets contain hash in filename, cache forever\n    location ^~ /assets/ {\n        add_header Cache-Control \"public, max-age=31536000, s-maxage=31536000, immutable\";\n        try_files $uri =404;\n    }\n\n    # all workbox scripts are compiled with hash in filename, cache forever\n    location ^~ /workbox- {\n        add_header Cache-Control \"public, max-age=31536000, s-maxage=31536000, immutable\";\n        try_files $uri =404;\n    }\n\n    # assume that everything else is handled by the application router, by injecting the index.html.\n    location / {\n        autoindex off;\n        expires off;\n        add_header Cache-Control \"public, max-age=0, s-maxage=0, must-revalidate\" always;\n\n        index  index.html index.htm;\n        try_files $uri $uri/ /index.html =404;\n    }\n\n    #error_page  404              /404.html;\n\n    # redirect server error pages to the static page /50x.html\n    #\n    error_page   500 502 503 504  /50x.html;\n\n    # proxy the PHP scripts to Apache listening on 127.0.0.1:80\n    #\n    #location ~ \\.php$ {\n    #    proxy_pass   http://127.0.0.1;\n    #}\n\n    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000\n    #\n    #location ~ \\.php$ {\n    #    root           html;\n    #    fastcgi_pass   127.0.0.1:9000;\n    #    fastcgi_index  index.php;\n    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;\n    #    include        fastcgi_params;\n    #}\n\n    # deny access to .htaccess files, if Apache's document root\n    # concurs with nginx's one\n    #\n    #location ~ /\\.ht {\n    #    deny  all;\n    #}\n}"
  },
  {
    "path": "web/package.json",
    "content": "{\n  \"name\": \"web\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"version\": \"1.0.0\",\n  \"scripts\": {\n    \"dev\": \"node --experimental-import-meta-resolve ./node_modules/vite/bin/vite.js\",\n    \"build\": \"tsc && node --max_old_space_size=32768 ./node_modules/vite/bin/vite.js build\",\n    \"tsc\": \"tsc\",\n    \"preview\": \"vite preview\",\n    \"lint\": \"eslint src --fix\",\n    \"intercept\": \"telepresence intercept laf-web -n laf-system -p 3001:80\",\n    \"leave\": \"telepresence leave laf-web-laf-system\"\n  },\n  \"dependencies\": {\n    \"@chakra-ui/anatomy\": \"^2.1.1\",\n    \"@chakra-ui/icons\": \"^2.0.19\",\n    \"@chakra-ui/react\": \"^2.6.1\",\n    \"@codingame/monaco-vscode-configuration-service-override\": \"~1.82.3\",\n    \"@codingame/monaco-vscode-textmate-service-override\": \"~1.82.3\",\n    \"@codingame/monaco-vscode-theme-defaults-default-extension\": \"~1.82.3\",\n    \"@codingame/monaco-vscode-theme-service-override\": \"~1.82.3\",\n    \"@codingame/monaco-vscode-typescript-basics-default-extension\": \"~1.82.3\",\n    \"@emotion/react\": \"^11.11.0\",\n    \"@emotion/styled\": \"^11.11.0\",\n    \"@microsoft/fetch-event-source\": \"^2.0.1\",\n    \"@monaco-editor/react\": \"^4.6.0\",\n    \"@patternfly/react-log-viewer\": \"^5.0.0\",\n    \"@sentry/integrations\": \"^7.73.0\",\n    \"@sentry/react\": \"^7.73.0\",\n    \"@tanstack/react-query\": \"^4.29.7\",\n    \"ansi_up\": \"^6.0.2\",\n    \"axios\": \"^1.4.0\",\n    \"bson\": \"^4.6.3\",\n    \"clsx\": \"^1.2.1\",\n    \"dayjs\": \"^1.11.7\",\n    \"dotenv\": \"^16.0.3\",\n    \"ejson-shell-parser\": \"^2.0.0\",\n    \"focus-visible\": \"^5.2.0\",\n    \"framer-motion\": \"^10.12.16\",\n    \"i18next\": \"^22.5.0\",\n    \"i18next-browser-languagedetector\": \"7.0.1\",\n    \"i18next-http-backend\": \"2.2.1\",\n    \"immer\": \"^10.0.2\",\n    \"laf-client-sdk\": \"^1.0.0\",\n    \"lodash\": \"^4.17.21\",\n    \"monaco-editor\": \"~0.43.0\",\n    \"monaco-languageclient\": \"~6.5.1\",\n    \"pako\": \"^2.1.0\",\n    \"qrcode.react\": \"^3.1.0\",\n    \"react\": \"18.2.0\",\n    \"react-contexify\": \"^6.0.0\",\n    \"react-datepicker\": \"^4.11.0\",\n    \"react-day-picker\": \"^8.8.0\",\n    \"react-dom\": \"18.2.0\",\n    \"react-hook-form\": \"^7.43.9\",\n    \"react-hotkeys-hook\": \"^4.4.1\",\n    \"react-i18next\": \"^12.3.1\",\n    \"react-icons\": \"^4.8.0\",\n    \"react-image-crop\": \"^10.1.5\",\n    \"react-markdown\": \"^8.0.7\",\n    \"react-monaco-copilot\": \"^1.0.3\",\n    \"react-router-dom\": \"^6.11.2\",\n    \"react-syntax-highlighter\": \"^15.5.0\",\n    \"react-window\": \"^1.8.10\",\n    \"recharts\": \"^2.7.2\",\n    \"remark-gfm\": \"^3.0.1\",\n    \"remark-math\": \"^5.1.1\",\n    \"sass\": \"^1.62.1\",\n    \"simplebar-react\": \"^3.2.4\",\n    \"ts-key-enum\": \"^2.0.12\",\n    \"uuid\": \"^9.0.0\",\n    \"vscode\": \"npm:@codingame/monaco-vscode-api@>=1.82.3 <1.83.0\",\n    \"vscode-languageclient\": \"~8.1.0\",\n    \"vscode-ws-jsonrpc\": \"~3.0.0\",\n    \"zustand\": \"^4.3.8\"\n  },\n  \"devDependencies\": {\n    \"@types/lodash\": \"^4.14.194\",\n    \"@types/node\": \"20.2.3\",\n    \"@types/pako\": \"^2.0.2\",\n    \"@types/react\": \"^18.2.7\",\n    \"@types/react-datepicker\": \"^4.11.2\",\n    \"@types/react-dom\": \"^18.2.4\",\n    \"@types/react-syntax-highlighter\": \"^15.5.6\",\n    \"@types/react-window\": \"^1.8.8\",\n    \"@types/uuid\": \"^9.0.1\",\n    \"@types/vscode\": \"~1.82.0\",\n    \"@typescript-eslint/eslint-plugin\": \"~6.7.4\",\n    \"@typescript-eslint/parser\": \"~6.7.4\",\n    \"@vitejs/plugin-react-swc\": \"^3.3.1\",\n    \"autoprefixer\": \"^10.4.14\",\n    \"click-to-react-component\": \"^1.0.8\",\n    \"postcss\": \"^8.4.23\",\n    \"stylelint\": \"^15.11.0\",\n    \"stylelint-config-standard\": \"^34.0.0\",\n    \"tailwindcss\": \"^3.3.2\",\n    \"typescript\": \"5.0.4\",\n    \"vite\": \"^4.3.8\",\n    \"vite-plugin-pwa\": \"^0.16.4\",\n    \"vite-plugin-rewrite-all\": \"^1.0.1\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,tsx,js}\": \"eslint --fix\",\n    \"*.{css,scss}\": \"stylelint --fix\"\n  }\n}\n"
  },
  {
    "path": "web/postcss.config.cjs",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n};\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/base/common/worker/simpleWorker.nls.de.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/base/common/worker/simpleWorker.nls.de\",{\"vs/base/common/platform\":[\"_\"],\"vs/editor/common/languages\":[\"Array\",\"Boolescher Wert\",\"Klasse\",\"Konstante\",\"Konstruktor\",\"Enumeration\",\"Enumerationsmember\",\"Ereignis\",\"Feld\",\"Datei\",\"Funktion\",\"Schnittstelle\",\"Schl\\xFCssel\",\"Methode\",\"Modul\",\"Namespace\",\"NULL\",\"Zahl\",\"Objekt\",\"Operator\",\"Paket\",\"Eigenschaft\",\"Zeichenfolge\",\"Struktur\",\"Typparameter\",\"Variable\",\"{0} ({1})\"]});\n\n//# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.de.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/base/common/worker/simpleWorker.nls.es.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/base/common/worker/simpleWorker.nls.es\",{\"vs/base/common/platform\":[\"_\"],\"vs/editor/common/languages\":[\"matriz\",\"booleano\",\"clase\",\"constante\",\"constructor\",\"enumeraci\\xF3n\",\"miembro de la enumeraci\\xF3n\",\"evento\",\"campo\",\"archivo\",\"funci\\xF3n\",\"interfaz\",\"clave\",\"m\\xE9todo\",\"m\\xF3dulo\",\"espacio de nombres\",\"NULL\",\"n\\xFAmero\",\"objeto\",\"operador\",\"paquete\",\"propiedad\",\"cadena\",\"estructura\",\"par\\xE1metro de tipo\",\"variable\",\"{0} ({1})\"]});\n\n//# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.es.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/base/common/worker/simpleWorker.nls.fr.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/base/common/worker/simpleWorker.nls.fr\",{\"vs/base/common/platform\":[\"_\"],\"vs/editor/common/languages\":[\"tableau\",\"bool\\xE9en\",\"classe\",\"constante\",\"constructeur\",\"\\xE9num\\xE9ration\",\"membre d'\\xE9num\\xE9ration\",\"\\xE9v\\xE9nement\",\"champ\",\"fichier\",\"fonction\",\"interface\",\"cl\\xE9\",\"m\\xE9thode\",\"module\",\"espace de noms\",\"NULL\",\"nombre\",\"objet\",\"op\\xE9rateur\",\"package\",\"propri\\xE9t\\xE9\",\"cha\\xEEne\",\"struct\",\"param\\xE8tre de type\",\"variable\",\"{0} ({1})\"]});\n\n//# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.fr.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/base/common/worker/simpleWorker.nls.it.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/base/common/worker/simpleWorker.nls.it\",{\"vs/base/common/platform\":[\"_\"],\"vs/editor/common/languages\":[\"matrice\",\"valore booleano\",\"classe\",\"costante\",\"costruttore\",\"enumerazione\",\"membro di enumerazione\",\"evento\",\"campo\",\"file\",\"funzione\",\"interfaccia\",\"chiave\",\"metodo\",\"modulo\",\"spazio dei nomi\",\"Null\",\"numero\",\"oggetto\",\"operatore\",\"pacchetto\",\"propriet\\xE0\",\"stringa\",\"struct\",\"parametro di tipo\",\"variabile\",\"{0} ({1})\"]});\n\n//# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.it.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/base/common/worker/simpleWorker.nls.ja.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/base/common/worker/simpleWorker.nls.ja\",{\"vs/base/common/platform\":[\"_\"],\"vs/editor/common/languages\":[\"\\u914D\\u5217\",\"\\u30D6\\u30FC\\u30EB\\u5024\",\"\\u30AF\\u30E9\\u30B9\",\"\\u5B9A\\u6570\",\"\\u30B3\\u30F3\\u30B9\\u30C8\\u30E9\\u30AF\\u30BF\\u30FC\",\"\\u5217\\u6319\\u578B\",\"\\u5217\\u6319\\u578B\\u30E1\\u30F3\\u30D0\\u30FC\",\"\\u30A4\\u30D9\\u30F3\\u30C8\",\"\\u30D5\\u30A3\\u30FC\\u30EB\\u30C9\",\"\\u30D5\\u30A1\\u30A4\\u30EB\",\"\\u95A2\\u6570\",\"\\u30A4\\u30F3\\u30BF\\u30FC\\u30D5\\u30A7\\u30A4\\u30B9\",\"\\u30AD\\u30FC\",\"\\u30E1\\u30BD\\u30C3\\u30C9\",\"\\u30E2\\u30B8\\u30E5\\u30FC\\u30EB\",\"\\u540D\\u524D\\u7A7A\\u9593\",\"NULL\",\"\\u6570\\u5024\",\"\\u30AA\\u30D6\\u30B8\\u30A7\\u30AF\\u30C8\",\"\\u6F14\\u7B97\\u5B50\",\"\\u30D1\\u30C3\\u30B1\\u30FC\\u30B8\",\"\\u30D7\\u30ED\\u30D1\\u30C6\\u30A3\",\"\\u6587\\u5B57\\u5217\",\"\\u69CB\\u9020\\u4F53\",\"\\u578B\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC\",\"\\u5909\\u6570\",\"{0} ({1})\"]});\n\n//# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.ja.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/base/common/worker/simpleWorker.nls.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/base/common/worker/simpleWorker.nls\",{\"vs/base/common/platform\":[\"_\"],\"vs/editor/common/languages\":[\"array\",\"boolean\",\"class\",\"constant\",\"constructor\",\"enumeration\",\"enumeration member\",\"event\",\"field\",\"file\",\"function\",\"interface\",\"key\",\"method\",\"module\",\"namespace\",\"null\",\"number\",\"object\",\"operator\",\"package\",\"property\",\"string\",\"struct\",\"type parameter\",\"variable\",\"{0} ({1})\"]});\n\n//# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/base/common/worker/simpleWorker.nls.ko.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/base/common/worker/simpleWorker.nls.ko\",{\"vs/base/common/platform\":[\"_\"],\"vs/editor/common/languages\":[\"\\uBC30\\uC5F4\",\"\\uBD80\\uC6B8\",\"\\uD074\\uB798\\uC2A4\",\"\\uC0C1\\uC218\",\"\\uC0DD\\uC131\\uC790\",\"\\uC5F4\\uAC70\\uD615\",\"\\uC5F4\\uAC70\\uD615 \\uBA64\\uBC84\",\"\\uC774\\uBCA4\\uD2B8\",\"\\uD544\\uB4DC\",\"\\uD30C\\uC77C\",\"\\uD568\\uC218\",\"\\uC778\\uD130\\uD398\\uC774\\uC2A4\",\"\\uD0A4\",\"\\uBA54\\uC11C\\uB4DC\",\"\\uBAA8\\uB4C8\",\"\\uB124\\uC784\\uC2A4\\uD398\\uC774\\uC2A4\",\"Null\",\"\\uC22B\\uC790\",\"\\uAC1C\\uCCB4\",\"\\uC5F0\\uC0B0\\uC790\",\"\\uD328\\uD0A4\\uC9C0\",\"\\uC18D\\uC131\",\"\\uBB38\\uC790\\uC5F4\",\"\\uAD6C\\uC870\\uCCB4\",\"\\uD615\\uC2DD \\uB9E4\\uAC1C \\uBCC0\\uC218\",\"\\uBCC0\\uC218\",\"{0}({1})\"]});\n\n//# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.ko.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/base/common/worker/simpleWorker.nls.ru.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/base/common/worker/simpleWorker.nls.ru\",{\"vs/base/common/platform\":[\"_\"],\"vs/editor/common/languages\":[\"\\u043C\\u0430\\u0441\\u0441\\u0438\\u0432\",\"\\u043B\\u043E\\u0433\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435\",\"\\u043A\\u043B\\u0430\\u0441\\u0441\",\"\\u043A\\u043E\\u043D\\u0441\\u0442\\u0430\\u043D\\u0442\\u0430\",\"\\u043A\\u043E\\u043D\\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u043E\\u0440\",\"\\u043F\\u0435\\u0440\\u0435\\u0447\\u0438\\u0441\\u043B\\u0435\\u043D\\u0438\\u0435\",\"\\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0447\\u0438\\u0441\\u043B\\u0435\\u043D\\u0438\\u044F\",\"\\u0441\\u043E\\u0431\\u044B\\u0442\\u0438\\u0435\",\"\\u043F\\u043E\\u043B\\u0435\",\"\\u0444\\u0430\\u0439\\u043B\",\"\\u0444\\u0443\\u043D\\u043A\\u0446\\u0438\\u044F\",\"\\u0438\\u043D\\u0442\\u0435\\u0440\\u0444\\u0435\\u0439\\u0441\",\"\\u043A\\u043B\\u044E\\u0447\",\"\\u043C\\u0435\\u0442\\u043E\\u0434\",\"\\u043C\\u043E\\u0434\\u0443\\u043B\\u044C\",\"\\u043F\\u0440\\u043E\\u0441\\u0442\\u0440\\u0430\\u043D\\u0441\\u0442\\u0432\\u043E \\u0438\\u043C\\u0435\\u043D\",\"NULL\",\"\\u0447\\u0438\\u0441\\u043B\\u043E\",\"\\u043E\\u0431\\u044A\\u0435\\u043A\\u0442\",\"\\u043E\\u043F\\u0435\\u0440\\u0430\\u0442\\u043E\\u0440\",\"\\u043F\\u0430\\u043A\\u0435\\u0442\",\"\\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u043E\",\"\\u0441\\u0442\\u0440\\u043E\\u043A\\u0430\",\"\\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0430\",\"\\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0442\\u0438\\u043F\\u0430\",\"\\u041F\\u0435\\u0440\\u0435\\u043C\\u0435\\u043D\\u043D\\u0430\\u044F\",\"{0} ({1})\"]});\n\n//# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.ru.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/base/common/worker/simpleWorker.nls.zh-cn.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/base/common/worker/simpleWorker.nls.zh-cn\",{\"vs/base/common/platform\":[\"_\"],\"vs/editor/common/languages\":[\"\\u6570\\u7EC4\",\"\\u5E03\\u5C14\\u503C\",\"\\u7C7B\",\"\\u5E38\\u6570\",\"\\u6784\\u9020\\u51FD\\u6570\",\"\\u679A\\u4E3E\",\"\\u679A\\u4E3E\\u6210\\u5458\",\"\\u4E8B\\u4EF6\",\"\\u5B57\\u6BB5\",\"\\u6587\\u4EF6\",\"\\u51FD\\u6570\",\"\\u63A5\\u53E3\",\"\\u952E\",\"\\u65B9\\u6CD5\",\"\\u6A21\\u5757\",\"\\u547D\\u540D\\u7A7A\\u95F4\",\"Null\",\"\\u6570\\u5B57\",\"\\u5BF9\\u8C61\",\"\\u8FD0\\u7B97\\u7B26\",\"\\u5305\",\"\\u5C5E\\u6027\",\"\\u5B57\\u7B26\\u4E32\",\"\\u7ED3\\u6784\",\"\\u7C7B\\u578B\\u53C2\\u6570\",\"\\u53D8\\u91CF\",\"{0} ({1})\"]});\n\n//# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.zh-cn.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/base/common/worker/simpleWorker.nls.zh-tw.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/base/common/worker/simpleWorker.nls.zh-tw\",{\"vs/base/common/platform\":[\"_\"],\"vs/editor/common/languages\":[\"\\u9663\\u5217\",\"\\u5E03\\u6797\\u503C\",\"\\u985E\\u5225\",\"\\u5E38\\u6578\",\"\\u5EFA\\u69CB\\u51FD\\u5F0F\",\"\\u5217\\u8209\",\"\\u5217\\u8209\\u6210\\u54E1\",\"\\u4E8B\\u4EF6\",\"\\u6B04\\u4F4D\",\"\\u6A94\\u6848\",\"\\u51FD\\u5F0F\",\"\\u4ECB\\u9762\",\"\\u7D22\\u5F15\\u9375\",\"\\u65B9\\u6CD5\",\"\\u6A21\\u7D44\",\"\\u547D\\u540D\\u7A7A\\u9593\",\"null\",\"\\u6578\\u5B57\",\"\\u7269\\u4EF6\",\"\\u904B\\u7B97\\u5B50\",\"\\u5957\\u4EF6\",\"\\u5C6C\\u6027\",\"\\u5B57\\u4E32\",\"\\u7D50\\u69CB\",\"\\u578B\\u5225\\u53C3\\u6578\",\"\\u8B8A\\u6578\",\"{0} ({1})\"]});\n\n//# sourceMappingURL=../../../../../min-maps/vs/base/common/worker/simpleWorker.nls.zh-tw.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/base/worker/workerMain.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/(function(){var te=[\"require\",\"exports\",\"vs/editor/common/core/range\",\"vs/base/common/errors\",\"vs/editor/common/core/position\",\"vs/base/common/strings\",\"vs/editor/common/core/offsetRange\",\"vs/base/common/event\",\"vs/editor/common/diff/algorithms/diffAlgorithm\",\"vs/base/common/assert\",\"vs/base/common/lifecycle\",\"vs/base/common/objects\",\"vs/editor/common/core/lineRange\",\"vs/base/common/platform\",\"vs/base/common/uri\",\"vs/nls\",\"vs/base/common/arrays\",\"vs/base/common/functional\",\"vs/base/common/iterator\",\"vs/base/common/linkedList\",\"vs/base/common/stopwatch\",\"vs/base/common/diff/diff\",\"vs/base/common/types\",\"vs/base/common/uint\",\"vs/editor/common/core/characterClassifier\",\"vs/editor/common/core/wordHelper\",\"vs/editor/common/diff/linesDiffComputer\",\"vs/base/common/cache\",\"vs/base/common/collections\",\"vs/base/common/color\",\"vs/base/common/diff/diffChange\",\"vs/base/common/keyCodes\",\"vs/base/common/lazy\",\"vs/base/common/cancellation\",\"vs/base/common/hash\",\"vs/base/common/codicons\",\"vs/editor/common/core/selection\",\"vs/editor/common/core/wordCharacterClassifier\",\"vs/editor/common/diff/algorithms/joinSequenceDiffs\",\"vs/editor/common/diff/algorithms/myersDiffAlgorithm\",\"vs/editor/common/diff/algorithms/utils\",\"vs/editor/common/diff/algorithms/dynamicProgrammingDiffing\",\"vs/editor/common/diff/advancedLinesDiffComputer\",\"vs/editor/common/diff/legacyLinesDiffComputer\",\"vs/editor/common/diff/linesDiffComputers\",\"vs/editor/common/languages/defaultDocumentColorsComputer\",\"vs/editor/common/languages/linkComputer\",\"vs/editor/common/languages/supports/inplaceReplaceSupport\",\"vs/editor/common/model\",\"vs/editor/common/model/prefixSumComputer\",\"vs/editor/common/model/mirrorTextModel\",\"vs/editor/common/model/textModelSearch\",\"vs/editor/common/services/unicodeTextModelHighlighter\",\"vs/editor/common/standalone/standaloneEnums\",\"vs/editor/common/tokenizationRegistry\",\"vs/nls!vs/base/common/platform\",\"vs/nls!vs/base/common/worker/simpleWorker\",\"vs/base/common/process\",\"vs/base/common/path\",\"vs/nls!vs/editor/common/languages\",\"vs/editor/common/languages\",\"vs/editor/common/services/editorBaseApi\",\"vs/base/common/worker/simpleWorker\",\"vs/editor/common/services/editorSimpleWorker\"],ie=function(U){for(var n=[],E=0,M=U.length;E<M;E++)n[E]=te[U[E]];return n};const Ne=this,Ee=typeof global==\"object\"?global:{};var _e;(function(U){U.global=Ne;class n{get isWindows(){return this._detect(),this._isWindows}get isNode(){return this._detect(),this._isNode}get isElectronRenderer(){return this._detect(),this._isElectronRenderer}get isWebWorker(){return this._detect(),this._isWebWorker}get isElectronNodeIntegrationWebWorker(){return this._detect(),this._isElectronNodeIntegrationWebWorker}constructor(){this._detected=!1,this._isWindows=!1,this._isNode=!1,this._isElectronRenderer=!1,this._isWebWorker=!1,this._isElectronNodeIntegrationWebWorker=!1}_detect(){this._detected||(this._detected=!0,this._isWindows=n._isWindows(),this._isNode=typeof module<\"u\"&&!!module.exports,this._isElectronRenderer=typeof process<\"u\"&&typeof process.versions<\"u\"&&typeof process.versions.electron<\"u\"&&process.type===\"renderer\",this._isWebWorker=typeof U.global.importScripts==\"function\",this._isElectronNodeIntegrationWebWorker=this._isWebWorker&&typeof process<\"u\"&&typeof process.versions<\"u\"&&typeof process.versions.electron<\"u\"&&process.type===\"worker\")}static _isWindows(){return typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.indexOf(\"Windows\")>=0?!0:typeof process<\"u\"?process.platform===\"win32\":!1}}U.Environment=n})(_e||(_e={}));var _e;(function(U){class n{constructor(u,f,g){this.type=u,this.detail=f,this.timestamp=g}}U.LoaderEvent=n;class E{constructor(u){this._events=[new n(1,\"\",u)]}record(u,f){this._events.push(new n(u,f,U.Utilities.getHighPerformanceTimestamp()))}getEvents(){return this._events}}U.LoaderEventRecorder=E;class M{record(u,f){}getEvents(){return[]}}M.INSTANCE=new M,U.NullLoaderEventRecorder=M})(_e||(_e={}));var _e;(function(U){class n{static fileUriToFilePath(M,i){if(i=decodeURI(i).replace(/%23/g,\"#\"),M){if(/^file:\\/\\/\\//.test(i))return i.substr(8);if(/^file:\\/\\//.test(i))return i.substr(5)}else if(/^file:\\/\\//.test(i))return i.substr(7);return i}static startsWith(M,i){return M.length>=i.length&&M.substr(0,i.length)===i}static endsWith(M,i){return M.length>=i.length&&M.substr(M.length-i.length)===i}static containsQueryString(M){return/^[^\\#]*\\?/gi.test(M)}static isAbsolutePath(M){return/^((http:\\/\\/)|(https:\\/\\/)|(file:\\/\\/)|(\\/))/.test(M)}static forEachProperty(M,i){if(M){let u;for(u in M)M.hasOwnProperty(u)&&i(u,M[u])}}static isEmpty(M){let i=!0;return n.forEachProperty(M,()=>{i=!1}),i}static recursiveClone(M){if(!M||typeof M!=\"object\"||M instanceof RegExp||!Array.isArray(M)&&Object.getPrototypeOf(M)!==Object.prototype)return M;let i=Array.isArray(M)?[]:{};return n.forEachProperty(M,(u,f)=>{f&&typeof f==\"object\"?i[u]=n.recursiveClone(f):i[u]=f}),i}static generateAnonymousModule(){return\"===anonymous\"+n.NEXT_ANONYMOUS_ID+++\"===\"}static isAnonymousModule(M){return n.startsWith(M,\"===anonymous\")}static getHighPerformanceTimestamp(){return this.PERFORMANCE_NOW_PROBED||(this.PERFORMANCE_NOW_PROBED=!0,this.HAS_PERFORMANCE_NOW=U.global.performance&&typeof U.global.performance.now==\"function\"),this.HAS_PERFORMANCE_NOW?U.global.performance.now():Date.now()}}n.NEXT_ANONYMOUS_ID=1,n.PERFORMANCE_NOW_PROBED=!1,n.HAS_PERFORMANCE_NOW=!1,U.Utilities=n})(_e||(_e={}));var _e;(function(U){function n(i){if(i instanceof Error)return i;const u=new Error(i.message||String(i)||\"Unknown Error\");return i.stack&&(u.stack=i.stack),u}U.ensureError=n;class E{static validateConfigurationOptions(u){function f(g){if(g.phase===\"loading\"){console.error('Loading \"'+g.moduleId+'\" failed'),console.error(g),console.error(\"Here are the modules that depend on it:\"),console.error(g.neededBy);return}if(g.phase===\"factory\"){console.error('The factory function of \"'+g.moduleId+'\" has thrown an exception'),console.error(g),console.error(\"Here are the modules that depend on it:\"),console.error(g.neededBy);return}}if(u=u||{},typeof u.baseUrl!=\"string\"&&(u.baseUrl=\"\"),typeof u.isBuild!=\"boolean\"&&(u.isBuild=!1),typeof u.paths!=\"object\"&&(u.paths={}),typeof u.config!=\"object\"&&(u.config={}),typeof u.catchError>\"u\"&&(u.catchError=!1),typeof u.recordStats>\"u\"&&(u.recordStats=!1),typeof u.urlArgs!=\"string\"&&(u.urlArgs=\"\"),typeof u.onError!=\"function\"&&(u.onError=f),Array.isArray(u.ignoreDuplicateModules)||(u.ignoreDuplicateModules=[]),u.baseUrl.length>0&&(U.Utilities.endsWith(u.baseUrl,\"/\")||(u.baseUrl+=\"/\")),typeof u.cspNonce!=\"string\"&&(u.cspNonce=\"\"),typeof u.preferScriptTags>\"u\"&&(u.preferScriptTags=!1),u.nodeCachedData&&typeof u.nodeCachedData==\"object\"&&(typeof u.nodeCachedData.seed!=\"string\"&&(u.nodeCachedData.seed=\"seed\"),(typeof u.nodeCachedData.writeDelay!=\"number\"||u.nodeCachedData.writeDelay<0)&&(u.nodeCachedData.writeDelay=1e3*7),!u.nodeCachedData.path||typeof u.nodeCachedData.path!=\"string\")){const g=n(new Error(\"INVALID cached data configuration, 'path' MUST be set\"));g.phase=\"configuration\",u.onError(g),u.nodeCachedData=void 0}return u}static mergeConfigurationOptions(u=null,f=null){let g=U.Utilities.recursiveClone(f||{});return U.Utilities.forEachProperty(u,(a,s)=>{a===\"ignoreDuplicateModules\"&&typeof g.ignoreDuplicateModules<\"u\"?g.ignoreDuplicateModules=g.ignoreDuplicateModules.concat(s):a===\"paths\"&&typeof g.paths<\"u\"?U.Utilities.forEachProperty(s,(_,t)=>g.paths[_]=t):a===\"config\"&&typeof g.config<\"u\"?U.Utilities.forEachProperty(s,(_,t)=>g.config[_]=t):g[a]=U.Utilities.recursiveClone(s)}),E.validateConfigurationOptions(g)}}U.ConfigurationOptionsUtil=E;class M{constructor(u,f){if(this._env=u,this.options=E.mergeConfigurationOptions(f),this._createIgnoreDuplicateModulesMap(),this._createSortedPathsRules(),this.options.baseUrl===\"\"&&this.options.nodeRequire&&this.options.nodeRequire.main&&this.options.nodeRequire.main.filename&&this._env.isNode){let g=this.options.nodeRequire.main.filename,a=Math.max(g.lastIndexOf(\"/\"),g.lastIndexOf(\"\\\\\"));this.options.baseUrl=g.substring(0,a+1)}}_createIgnoreDuplicateModulesMap(){this.ignoreDuplicateModulesMap={};for(let u=0;u<this.options.ignoreDuplicateModules.length;u++)this.ignoreDuplicateModulesMap[this.options.ignoreDuplicateModules[u]]=!0}_createSortedPathsRules(){this.sortedPathsRules=[],U.Utilities.forEachProperty(this.options.paths,(u,f)=>{Array.isArray(f)?this.sortedPathsRules.push({from:u,to:f}):this.sortedPathsRules.push({from:u,to:[f]})}),this.sortedPathsRules.sort((u,f)=>f.from.length-u.from.length)}cloneAndMerge(u){return new M(this._env,E.mergeConfigurationOptions(u,this.options))}getOptionsLiteral(){return this.options}_applyPaths(u){let f;for(let g=0,a=this.sortedPathsRules.length;g<a;g++)if(f=this.sortedPathsRules[g],U.Utilities.startsWith(u,f.from)){let s=[];for(let _=0,t=f.to.length;_<t;_++)s.push(f.to[_]+u.substr(f.from.length));return s}return[u]}_addUrlArgsToUrl(u){return U.Utilities.containsQueryString(u)?u+\"&\"+this.options.urlArgs:u+\"?\"+this.options.urlArgs}_addUrlArgsIfNecessaryToUrl(u){return this.options.urlArgs?this._addUrlArgsToUrl(u):u}_addUrlArgsIfNecessaryToUrls(u){if(this.options.urlArgs)for(let f=0,g=u.length;f<g;f++)u[f]=this._addUrlArgsToUrl(u[f]);return u}moduleIdToPaths(u){if(this._env.isNode&&this.options.amdModulesPattern instanceof RegExp&&!this.options.amdModulesPattern.test(u))return this.isBuild()?[\"empty:\"]:[\"node|\"+u];let f=u,g;if(!U.Utilities.endsWith(f,\".js\")&&!U.Utilities.isAbsolutePath(f)){g=this._applyPaths(f);for(let a=0,s=g.length;a<s;a++)this.isBuild()&&g[a]===\"empty:\"||(U.Utilities.isAbsolutePath(g[a])||(g[a]=this.options.baseUrl+g[a]),!U.Utilities.endsWith(g[a],\".js\")&&!U.Utilities.containsQueryString(g[a])&&(g[a]=g[a]+\".js\"))}else!U.Utilities.endsWith(f,\".js\")&&!U.Utilities.containsQueryString(f)&&(f=f+\".js\"),g=[f];return this._addUrlArgsIfNecessaryToUrls(g)}requireToUrl(u){let f=u;return U.Utilities.isAbsolutePath(f)||(f=this._applyPaths(f)[0],U.Utilities.isAbsolutePath(f)||(f=this.options.baseUrl+f)),this._addUrlArgsIfNecessaryToUrl(f)}isBuild(){return this.options.isBuild}shouldInvokeFactory(u){return!!(!this.options.isBuild||U.Utilities.isAnonymousModule(u)||this.options.buildForceInvokeFactory&&this.options.buildForceInvokeFactory[u])}isDuplicateMessageIgnoredFor(u){return this.ignoreDuplicateModulesMap.hasOwnProperty(u)}getConfigForModule(u){if(this.options.config)return this.options.config[u]}shouldCatchError(){return this.options.catchError}shouldRecordStats(){return this.options.recordStats}onError(u){this.options.onError(u)}}U.Configuration=M})(_e||(_e={}));var _e;(function(U){class n{constructor(s){this._env=s,this._scriptLoader=null,this._callbackMap={}}load(s,_,t,m){if(!this._scriptLoader)if(this._env.isWebWorker)this._scriptLoader=new i;else if(this._env.isElectronRenderer){const{preferScriptTags:c}=s.getConfig().getOptionsLiteral();c?this._scriptLoader=new E:this._scriptLoader=new u(this._env)}else this._env.isNode?this._scriptLoader=new u(this._env):this._scriptLoader=new E;let h={callback:t,errorback:m};if(this._callbackMap.hasOwnProperty(_)){this._callbackMap[_].push(h);return}this._callbackMap[_]=[h],this._scriptLoader.load(s,_,()=>this.triggerCallback(_),c=>this.triggerErrorback(_,c))}triggerCallback(s){let _=this._callbackMap[s];delete this._callbackMap[s];for(let t=0;t<_.length;t++)_[t].callback()}triggerErrorback(s,_){let t=this._callbackMap[s];delete this._callbackMap[s];for(let m=0;m<t.length;m++)t[m].errorback(_)}}class E{attachListeners(s,_,t){let m=()=>{s.removeEventListener(\"load\",h),s.removeEventListener(\"error\",c)},h=L=>{m(),_()},c=L=>{m(),t(L)};s.addEventListener(\"load\",h),s.addEventListener(\"error\",c)}load(s,_,t,m){if(/^node\\|/.test(_)){let h=s.getConfig().getOptionsLiteral(),c=f(s.getRecorder(),h.nodeRequire||U.global.nodeRequire),L=_.split(\"|\"),d=null;try{d=c(L[1])}catch(y){m(y);return}s.enqueueDefineAnonymousModule([],()=>d),t()}else{let h=document.createElement(\"script\");h.setAttribute(\"async\",\"async\"),h.setAttribute(\"type\",\"text/javascript\"),this.attachListeners(h,t,m);const{trustedTypesPolicy:c}=s.getConfig().getOptionsLiteral();c&&(_=c.createScriptURL(_)),h.setAttribute(\"src\",_);const{cspNonce:L}=s.getConfig().getOptionsLiteral();L&&h.setAttribute(\"nonce\",L),document.getElementsByTagName(\"head\")[0].appendChild(h)}}}function M(a){const{trustedTypesPolicy:s}=a.getConfig().getOptionsLiteral();try{return(s?self.eval(s.createScript(\"\",\"true\")):new Function(\"true\")).call(self),!0}catch{return!1}}class i{constructor(){this._cachedCanUseEval=null}_canUseEval(s){return this._cachedCanUseEval===null&&(this._cachedCanUseEval=M(s)),this._cachedCanUseEval}load(s,_,t,m){if(/^node\\|/.test(_)){const h=s.getConfig().getOptionsLiteral(),c=f(s.getRecorder(),h.nodeRequire||U.global.nodeRequire),L=_.split(\"|\");let d=null;try{d=c(L[1])}catch(y){m(y);return}s.enqueueDefineAnonymousModule([],function(){return d}),t()}else{const{trustedTypesPolicy:h}=s.getConfig().getOptionsLiteral();if(!(/^((http:)|(https:)|(file:))/.test(_)&&_.substring(0,self.origin.length)!==self.origin)&&this._canUseEval(s)){fetch(_).then(L=>{if(L.status!==200)throw new Error(L.statusText);return L.text()}).then(L=>{L=`${L}\n//# sourceURL=${_}`,(h?self.eval(h.createScript(\"\",L)):new Function(L)).call(self),t()}).then(void 0,m);return}try{h&&(_=h.createScriptURL(_)),importScripts(_),t()}catch(L){m(L)}}}}class u{constructor(s){this._env=s,this._didInitialize=!1,this._didPatchNodeRequire=!1}_init(s){this._didInitialize||(this._didInitialize=!0,this._fs=s(\"fs\"),this._vm=s(\"vm\"),this._path=s(\"path\"),this._crypto=s(\"crypto\"))}_initNodeRequire(s,_){const{nodeCachedData:t}=_.getConfig().getOptionsLiteral();if(!t||this._didPatchNodeRequire)return;this._didPatchNodeRequire=!0;const m=this,h=s(\"module\");function c(L){const d=L.constructor;let y=function(R){try{return L.require(R)}finally{}};return y.resolve=function(R,S){return d._resolveFilename(R,L,!1,S)},y.resolve.paths=function(R){return d._resolveLookupPaths(R,L)},y.main=process.mainModule,y.extensions=d._extensions,y.cache=d._cache,y}h.prototype._compile=function(L,d){const y=h.wrap(L.replace(/^#!.*/,\"\")),C=_.getRecorder(),R=m._getCachedDataPath(t,d),S={filename:d};let p;try{const A=m._fs.readFileSync(R);p=A.slice(0,16),S.cachedData=A.slice(16),C.record(60,R)}catch{C.record(61,R)}const r=new m._vm.Script(y,S),l=r.runInThisContext(S),o=m._path.dirname(d),v=c(this),b=[this.exports,v,this,d,o,process,Ee,Buffer],w=l.apply(this.exports,b);return m._handleCachedData(r,y,R,!S.cachedData,_),m._verifyCachedData(r,y,R,p,_),w}}load(s,_,t,m){const h=s.getConfig().getOptionsLiteral(),c=f(s.getRecorder(),h.nodeRequire||U.global.nodeRequire),L=h.nodeInstrumenter||function(y){return y};this._init(c),this._initNodeRequire(c,s);let d=s.getRecorder();if(/^node\\|/.test(_)){let y=_.split(\"|\"),C=null;try{C=c(y[1])}catch(R){m(R);return}s.enqueueDefineAnonymousModule([],()=>C),t()}else{_=U.Utilities.fileUriToFilePath(this._env.isWindows,_);const y=this._path.normalize(_),C=this._getElectronRendererScriptPathOrUri(y),R=!!h.nodeCachedData,S=R?this._getCachedDataPath(h.nodeCachedData,_):void 0;this._readSourceAndCachedData(y,S,d,(p,r,l,o)=>{if(p){m(p);return}let v;r.charCodeAt(0)===u._BOM?v=u._PREFIX+r.substring(1)+u._SUFFIX:v=u._PREFIX+r+u._SUFFIX,v=L(v,y);const b={filename:C,cachedData:l},w=this._createAndEvalScript(s,v,b,t,m);this._handleCachedData(w,v,S,R&&!l,s),this._verifyCachedData(w,v,S,o,s)})}}_createAndEvalScript(s,_,t,m,h){const c=s.getRecorder();c.record(31,t.filename);const L=new this._vm.Script(_,t),d=L.runInThisContext(t),y=s.getGlobalAMDDefineFunc();let C=!1;const R=function(){return C=!0,y.apply(null,arguments)};return R.amd=y.amd,d.call(U.global,s.getGlobalAMDRequireFunc(),R,t.filename,this._path.dirname(t.filename)),c.record(32,t.filename),C?m():h(new Error(`Didn't receive define call in ${t.filename}!`)),L}_getElectronRendererScriptPathOrUri(s){if(!this._env.isElectronRenderer)return s;let _=s.match(/^([a-z])\\:(.*)/i);return _?`file:///${(_[1].toUpperCase()+\":\"+_[2]).replace(/\\\\/g,\"/\")}`:`file://${s}`}_getCachedDataPath(s,_){const t=this._crypto.createHash(\"md5\").update(_,\"utf8\").update(s.seed,\"utf8\").update(process.arch,\"\").digest(\"hex\"),m=this._path.basename(_).replace(/\\.js$/,\"\");return this._path.join(s.path,`${m}-${t}.code`)}_handleCachedData(s,_,t,m,h){s.cachedDataRejected?this._fs.unlink(t,c=>{h.getRecorder().record(62,t),this._createAndWriteCachedData(s,_,t,h),c&&h.getConfig().onError(c)}):m&&this._createAndWriteCachedData(s,_,t,h)}_createAndWriteCachedData(s,_,t,m){let h=Math.ceil(m.getConfig().getOptionsLiteral().nodeCachedData.writeDelay*(1+Math.random())),c=-1,L=0,d;const y=()=>{setTimeout(()=>{d||(d=this._crypto.createHash(\"md5\").update(_,\"utf8\").digest());const C=s.createCachedData();if(!(C.length===0||C.length===c||L>=5)){if(C.length<c){y();return}c=C.length,this._fs.writeFile(t,Buffer.concat([d,C]),R=>{R&&m.getConfig().onError(R),m.getRecorder().record(63,t),y()})}},h*Math.pow(4,L++))};y()}_readSourceAndCachedData(s,_,t,m){if(!_)this._fs.readFile(s,{encoding:\"utf8\"},m);else{let h,c,L,d=2;const y=C=>{C?m(C):--d===0&&m(void 0,h,c,L)};this._fs.readFile(s,{encoding:\"utf8\"},(C,R)=>{h=R,y(C)}),this._fs.readFile(_,(C,R)=>{!C&&R&&R.length>0?(L=R.slice(0,16),c=R.slice(16),t.record(60,_)):t.record(61,_),y()})}}_verifyCachedData(s,_,t,m,h){m&&(s.cachedDataRejected||setTimeout(()=>{const c=this._crypto.createHash(\"md5\").update(_,\"utf8\").digest();m.equals(c)||(h.getConfig().onError(new Error(`FAILED TO VERIFY CACHED DATA, deleting stale '${t}' now, but a RESTART IS REQUIRED`)),this._fs.unlink(t,L=>{L&&h.getConfig().onError(L)}))},Math.ceil(5e3*(1+Math.random()))))}}u._BOM=65279,u._PREFIX=\"(function (require, define, __filename, __dirname) { \",u._SUFFIX=`\n});`;function f(a,s){if(s.__$__isRecorded)return s;const _=function(m){a.record(33,m);try{return s(m)}finally{a.record(34,m)}};return _.__$__isRecorded=!0,_}U.ensureRecordedNodeRequire=f;function g(a){return new n(a)}U.createScriptLoader=g})(_e||(_e={}));var _e;(function(U){class n{constructor(a){let s=a.lastIndexOf(\"/\");s!==-1?this.fromModulePath=a.substr(0,s+1):this.fromModulePath=\"\"}static _normalizeModuleId(a){let s=a,_;for(_=/\\/\\.\\//;_.test(s);)s=s.replace(_,\"/\");for(s=s.replace(/^\\.\\//g,\"\"),_=/\\/(([^\\/])|([^\\/][^\\/\\.])|([^\\/\\.][^\\/])|([^\\/][^\\/][^\\/]+))\\/\\.\\.\\//;_.test(s);)s=s.replace(_,\"/\");return s=s.replace(/^(([^\\/])|([^\\/][^\\/\\.])|([^\\/\\.][^\\/])|([^\\/][^\\/][^\\/]+))\\/\\.\\.\\//,\"\"),s}resolveModule(a){let s=a;return U.Utilities.isAbsolutePath(s)||(U.Utilities.startsWith(s,\"./\")||U.Utilities.startsWith(s,\"../\"))&&(s=n._normalizeModuleId(this.fromModulePath+s)),s}}n.ROOT=new n(\"\"),U.ModuleIdResolver=n;class E{constructor(a,s,_,t,m,h){this.id=a,this.strId=s,this.dependencies=_,this._callback=t,this._errorback=m,this.moduleIdResolver=h,this.exports={},this.error=null,this.exportsPassedIn=!1,this.unresolvedDependenciesCount=this.dependencies.length,this._isComplete=!1}static _safeInvokeFunction(a,s){try{return{returnedValue:a.apply(U.global,s),producedError:null}}catch(_){return{returnedValue:null,producedError:_}}}static _invokeFactory(a,s,_,t){return a.shouldInvokeFactory(s)?a.shouldCatchError()?this._safeInvokeFunction(_,t):{returnedValue:_.apply(U.global,t),producedError:null}:{returnedValue:null,producedError:null}}complete(a,s,_,t){this._isComplete=!0;let m=null;if(this._callback)if(typeof this._callback==\"function\"){a.record(21,this.strId);let h=E._invokeFactory(s,this.strId,this._callback,_);m=h.producedError,a.record(22,this.strId),!m&&typeof h.returnedValue<\"u\"&&(!this.exportsPassedIn||U.Utilities.isEmpty(this.exports))&&(this.exports=h.returnedValue)}else this.exports=this._callback;if(m){let h=U.ensureError(m);h.phase=\"factory\",h.moduleId=this.strId,h.neededBy=t(this.id),this.error=h,s.onError(h)}this.dependencies=null,this._callback=null,this._errorback=null,this.moduleIdResolver=null}onDependencyError(a){return this._isComplete=!0,this.error=a,this._errorback?(this._errorback(a),!0):!1}isComplete(){return this._isComplete}}U.Module=E;class M{constructor(){this._nextId=0,this._strModuleIdToIntModuleId=new Map,this._intModuleIdToStrModuleId=[],this.getModuleId(\"exports\"),this.getModuleId(\"module\"),this.getModuleId(\"require\")}getMaxModuleId(){return this._nextId}getModuleId(a){let s=this._strModuleIdToIntModuleId.get(a);return typeof s>\"u\"&&(s=this._nextId++,this._strModuleIdToIntModuleId.set(a,s),this._intModuleIdToStrModuleId[s]=a),s}getStrModuleId(a){return this._intModuleIdToStrModuleId[a]}}class i{constructor(a){this.id=a}}i.EXPORTS=new i(0),i.MODULE=new i(1),i.REQUIRE=new i(2),U.RegularDependency=i;class u{constructor(a,s,_){this.id=a,this.pluginId=s,this.pluginParam=_}}U.PluginDependency=u;class f{constructor(a,s,_,t,m=0){this._env=a,this._scriptLoader=s,this._loaderAvailableTimestamp=m,this._defineFunc=_,this._requireFunc=t,this._moduleIdProvider=new M,this._config=new U.Configuration(this._env),this._hasDependencyCycle=!1,this._modules2=[],this._knownModules2=[],this._inverseDependencies2=[],this._inversePluginDependencies2=new Map,this._currentAnonymousDefineCall=null,this._recorder=null,this._buildInfoPath=[],this._buildInfoDefineStack=[],this._buildInfoDependencies=[],this._requireFunc.moduleManager=this}reset(){return new f(this._env,this._scriptLoader,this._defineFunc,this._requireFunc,this._loaderAvailableTimestamp)}getGlobalAMDDefineFunc(){return this._defineFunc}getGlobalAMDRequireFunc(){return this._requireFunc}static _findRelevantLocationInStack(a,s){let _=h=>h.replace(/\\\\/g,\"/\"),t=_(a),m=s.split(/\\n/);for(let h=0;h<m.length;h++){let c=m[h].match(/(.*):(\\d+):(\\d+)\\)?$/);if(c){let L=c[1],d=c[2],y=c[3],C=Math.max(L.lastIndexOf(\" \")+1,L.lastIndexOf(\"(\")+1);if(L=L.substr(C),L=_(L),L===t){let R={line:parseInt(d,10),col:parseInt(y,10)};return R.line===1&&(R.col-=53),R}}}throw new Error(\"Could not correlate define call site for needle \"+a)}getBuildInfo(){if(!this._config.isBuild())return null;let a=[],s=0;for(let _=0,t=this._modules2.length;_<t;_++){let m=this._modules2[_];if(!m)continue;let h=this._buildInfoPath[m.id]||null,c=this._buildInfoDefineStack[m.id]||null,L=this._buildInfoDependencies[m.id];a[s++]={id:m.strId,path:h,defineLocation:h&&c?f._findRelevantLocationInStack(h,c):null,dependencies:L,shim:null,exports:m.exports}}return a}getRecorder(){return this._recorder||(this._config.shouldRecordStats()?this._recorder=new U.LoaderEventRecorder(this._loaderAvailableTimestamp):this._recorder=U.NullLoaderEventRecorder.INSTANCE),this._recorder}getLoaderEvents(){return this.getRecorder().getEvents()}enqueueDefineAnonymousModule(a,s){if(this._currentAnonymousDefineCall!==null)throw new Error(\"Can only have one anonymous define call per script file\");let _=null;this._config.isBuild()&&(_=new Error(\"StackLocation\").stack||null),this._currentAnonymousDefineCall={stack:_,dependencies:a,callback:s}}defineModule(a,s,_,t,m,h=new n(a)){let c=this._moduleIdProvider.getModuleId(a);if(this._modules2[c]){this._config.isDuplicateMessageIgnoredFor(a)||console.warn(\"Duplicate definition of module '\"+a+\"'\");return}let L=new E(c,a,this._normalizeDependencies(s,h),_,t,h);this._modules2[c]=L,this._config.isBuild()&&(this._buildInfoDefineStack[c]=m,this._buildInfoDependencies[c]=(L.dependencies||[]).map(d=>this._moduleIdProvider.getStrModuleId(d.id))),this._resolve(L)}_normalizeDependency(a,s){if(a===\"exports\")return i.EXPORTS;if(a===\"module\")return i.MODULE;if(a===\"require\")return i.REQUIRE;let _=a.indexOf(\"!\");if(_>=0){let t=s.resolveModule(a.substr(0,_)),m=s.resolveModule(a.substr(_+1)),h=this._moduleIdProvider.getModuleId(t+\"!\"+m),c=this._moduleIdProvider.getModuleId(t);return new u(h,c,m)}return new i(this._moduleIdProvider.getModuleId(s.resolveModule(a)))}_normalizeDependencies(a,s){let _=[],t=0;for(let m=0,h=a.length;m<h;m++)_[t++]=this._normalizeDependency(a[m],s);return _}_relativeRequire(a,s,_,t){if(typeof s==\"string\")return this.synchronousRequire(s,a);this.defineModule(U.Utilities.generateAnonymousModule(),s,_,t,null,a)}synchronousRequire(a,s=new n(a)){let _=this._normalizeDependency(a,s),t=this._modules2[_.id];if(!t)throw new Error(\"Check dependency list! Synchronous require cannot resolve module '\"+a+\"'. This is the first mention of this module!\");if(!t.isComplete())throw new Error(\"Check dependency list! Synchronous require cannot resolve module '\"+a+\"'. This module has not been resolved completely yet.\");if(t.error)throw t.error;return t.exports}configure(a,s){let _=this._config.shouldRecordStats();s?this._config=new U.Configuration(this._env,a):this._config=this._config.cloneAndMerge(a),this._config.shouldRecordStats()&&!_&&(this._recorder=null)}getConfig(){return this._config}_onLoad(a){if(this._currentAnonymousDefineCall!==null){let s=this._currentAnonymousDefineCall;this._currentAnonymousDefineCall=null,this.defineModule(this._moduleIdProvider.getStrModuleId(a),s.dependencies,s.callback,null,s.stack)}}_createLoadError(a,s){let _=this._moduleIdProvider.getStrModuleId(a),t=(this._inverseDependencies2[a]||[]).map(h=>this._moduleIdProvider.getStrModuleId(h));const m=U.ensureError(s);return m.phase=\"loading\",m.moduleId=_,m.neededBy=t,m}_onLoadError(a,s){const _=this._createLoadError(a,s);this._modules2[a]||(this._modules2[a]=new E(a,this._moduleIdProvider.getStrModuleId(a),[],()=>{},null,null));let t=[];for(let c=0,L=this._moduleIdProvider.getMaxModuleId();c<L;c++)t[c]=!1;let m=!1,h=[];for(h.push(a),t[a]=!0;h.length>0;){let c=h.shift(),L=this._modules2[c];L&&(m=L.onDependencyError(_)||m);let d=this._inverseDependencies2[c];if(d)for(let y=0,C=d.length;y<C;y++){let R=d[y];t[R]||(h.push(R),t[R]=!0)}}m||this._config.onError(_)}_hasDependencyPath(a,s){let _=this._modules2[a];if(!_)return!1;let t=[];for(let h=0,c=this._moduleIdProvider.getMaxModuleId();h<c;h++)t[h]=!1;let m=[];for(m.push(_),t[a]=!0;m.length>0;){let c=m.shift().dependencies;if(c)for(let L=0,d=c.length;L<d;L++){let y=c[L];if(y.id===s)return!0;let C=this._modules2[y.id];C&&!t[y.id]&&(t[y.id]=!0,m.push(C))}}return!1}_findCyclePath(a,s,_){if(a===s||_===50)return[a];let t=this._modules2[a];if(!t)return null;let m=t.dependencies;if(m)for(let h=0,c=m.length;h<c;h++){let L=this._findCyclePath(m[h].id,s,_+1);if(L!==null)return L.push(a),L}return null}_createRequire(a){let s=(_,t,m)=>this._relativeRequire(a,_,t,m);return s.toUrl=_=>this._config.requireToUrl(a.resolveModule(_)),s.getStats=()=>this.getLoaderEvents(),s.hasDependencyCycle=()=>this._hasDependencyCycle,s.config=(_,t=!1)=>{this.configure(_,t)},s.__$__nodeRequire=U.global.nodeRequire,s}_loadModule(a){if(this._modules2[a]||this._knownModules2[a])return;this._knownModules2[a]=!0;let s=this._moduleIdProvider.getStrModuleId(a),_=this._config.moduleIdToPaths(s),t=/^@[^\\/]+\\/[^\\/]+$/;this._env.isNode&&(s.indexOf(\"/\")===-1||t.test(s))&&_.push(\"node|\"+s);let m=-1,h=c=>{if(m++,m>=_.length)this._onLoadError(a,c);else{let L=_[m],d=this.getRecorder();if(this._config.isBuild()&&L===\"empty:\"){this._buildInfoPath[a]=L,this.defineModule(this._moduleIdProvider.getStrModuleId(a),[],null,null,null),this._onLoad(a);return}d.record(10,L),this._scriptLoader.load(this,L,()=>{this._config.isBuild()&&(this._buildInfoPath[a]=L),d.record(11,L),this._onLoad(a)},y=>{d.record(12,L),h(y)})}};h(null)}_loadPluginDependency(a,s){if(this._modules2[s.id]||this._knownModules2[s.id])return;this._knownModules2[s.id]=!0;let _=t=>{this.defineModule(this._moduleIdProvider.getStrModuleId(s.id),[],t,null,null)};_.error=t=>{this._config.onError(this._createLoadError(s.id,t))},a.load(s.pluginParam,this._createRequire(n.ROOT),_,this._config.getOptionsLiteral())}_resolve(a){let s=a.dependencies;if(s)for(let _=0,t=s.length;_<t;_++){let m=s[_];if(m===i.EXPORTS){a.exportsPassedIn=!0,a.unresolvedDependenciesCount--;continue}if(m===i.MODULE){a.unresolvedDependenciesCount--;continue}if(m===i.REQUIRE){a.unresolvedDependenciesCount--;continue}let h=this._modules2[m.id];if(h&&h.isComplete()){if(h.error){a.onDependencyError(h.error);return}a.unresolvedDependenciesCount--;continue}if(this._hasDependencyPath(m.id,a.id)){this._hasDependencyCycle=!0,console.warn(\"There is a dependency cycle between '\"+this._moduleIdProvider.getStrModuleId(m.id)+\"' and '\"+this._moduleIdProvider.getStrModuleId(a.id)+\"'. The cyclic path follows:\");let c=this._findCyclePath(m.id,a.id,0)||[];c.reverse(),c.push(m.id),console.warn(c.map(L=>this._moduleIdProvider.getStrModuleId(L)).join(` => \n`)),a.unresolvedDependenciesCount--;continue}if(this._inverseDependencies2[m.id]=this._inverseDependencies2[m.id]||[],this._inverseDependencies2[m.id].push(a.id),m instanceof u){let c=this._modules2[m.pluginId];if(c&&c.isComplete()){this._loadPluginDependency(c.exports,m);continue}let L=this._inversePluginDependencies2.get(m.pluginId);L||(L=[],this._inversePluginDependencies2.set(m.pluginId,L)),L.push(m),this._loadModule(m.pluginId);continue}this._loadModule(m.id)}a.unresolvedDependenciesCount===0&&this._onModuleComplete(a)}_onModuleComplete(a){let s=this.getRecorder();if(a.isComplete())return;let _=a.dependencies,t=[];if(_)for(let L=0,d=_.length;L<d;L++){let y=_[L];if(y===i.EXPORTS){t[L]=a.exports;continue}if(y===i.MODULE){t[L]={id:a.strId,config:()=>this._config.getConfigForModule(a.strId)};continue}if(y===i.REQUIRE){t[L]=this._createRequire(a.moduleIdResolver);continue}let C=this._modules2[y.id];if(C){t[L]=C.exports;continue}t[L]=null}const m=L=>(this._inverseDependencies2[L]||[]).map(d=>this._moduleIdProvider.getStrModuleId(d));a.complete(s,this._config,t,m);let h=this._inverseDependencies2[a.id];if(this._inverseDependencies2[a.id]=null,h)for(let L=0,d=h.length;L<d;L++){let y=h[L],C=this._modules2[y];C.unresolvedDependenciesCount--,C.unresolvedDependenciesCount===0&&this._onModuleComplete(C)}let c=this._inversePluginDependencies2.get(a.id);if(c){this._inversePluginDependencies2.delete(a.id);for(let L=0,d=c.length;L<d;L++)this._loadPluginDependency(a.exports,c[L])}}}U.ModuleManager=f})(_e||(_e={}));var K,_e;(function(U){const n=new U.Environment;let E=null;const M=function(g,a,s){typeof g!=\"string\"&&(s=a,a=g,g=null),(typeof a!=\"object\"||!Array.isArray(a))&&(s=a,a=null),a||(a=[\"require\",\"exports\",\"module\"]),g?E.defineModule(g,a,s,null,null):E.enqueueDefineAnonymousModule(a,s)};M.amd={jQuery:!0};const i=function(g,a=!1){E.configure(g,a)},u=function(){if(arguments.length===1){if(arguments[0]instanceof Object&&!Array.isArray(arguments[0])){i(arguments[0]);return}if(typeof arguments[0]==\"string\")return E.synchronousRequire(arguments[0])}if((arguments.length===2||arguments.length===3)&&Array.isArray(arguments[0])){E.defineModule(U.Utilities.generateAnonymousModule(),arguments[0],arguments[1],arguments[2],null);return}throw new Error(\"Unrecognized require call\")};u.config=i,u.getConfig=function(){return E.getConfig().getOptionsLiteral()},u.reset=function(){E=E.reset()},u.getBuildInfo=function(){return E.getBuildInfo()},u.getStats=function(){return E.getLoaderEvents()},u.define=M;function f(){if(typeof U.global.require<\"u\"||typeof require<\"u\"){const g=U.global.require||require;if(typeof g==\"function\"&&typeof g.resolve==\"function\"){const a=U.ensureRecordedNodeRequire(E.getRecorder(),g);U.global.nodeRequire=a,u.nodeRequire=a,u.__$__nodeRequire=a}}n.isNode&&!n.isElectronRenderer&&!n.isElectronNodeIntegrationWebWorker?module.exports=u:(n.isElectronRenderer||(U.global.define=M),U.global.require=u)}U.init=f,(typeof U.global.define!=\"function\"||!U.global.define.amd)&&(E=new U.ModuleManager(n,U.createScriptLoader(n),M,u,U.Utilities.getHighPerformanceTimestamp()),typeof U.global.require<\"u\"&&typeof U.global.require!=\"function\"&&u.config(U.global.require),K=function(){return M.apply(null,arguments)},K.amd=M.amd,typeof doNotInitLoader>\"u\"&&f())})(_e||(_e={}));var pe=this&&this.__awaiter||function(U,n,E,M){function i(u){return u instanceof E?u:new E(function(f){f(u)})}return new(E||(E=Promise))(function(u,f){function g(_){try{s(M.next(_))}catch(t){f(t)}}function a(_){try{s(M.throw(_))}catch(t){f(t)}}function s(_){_.done?u(_.value):i(_.value).then(g,a)}s((M=M.apply(U,n||[])).next())})};K(te[15],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.load=n.create=n.setPseudoTranslation=n.getConfiguredDefaultLocale=n.localize=void 0;let E=typeof document<\"u\"&&document.location&&document.location.hash.indexOf(\"pseudo=true\")>=0;const M=\"i-default\";function i(c,L){let d;return L.length===0?d=c:d=c.replace(/\\{(\\d+)\\}/g,(y,C)=>{const R=C[0],S=L[R];let p=y;return typeof S==\"string\"?p=S:(typeof S==\"number\"||typeof S==\"boolean\"||S===void 0||S===null)&&(p=String(S)),p}),E&&(d=\"\\uFF3B\"+d.replace(/[aouei]/g,\"$&$&\")+\"\\uFF3D\"),d}function u(c,L){let d=c[L];return d||(d=c[\"*\"],d)?d:null}function f(c){return c.charAt(c.length-1)===\"/\"?c:c+\"/\"}function g(c,L,d){return pe(this,void 0,void 0,function*(){const y=f(c)+f(L)+\"vscode/\"+f(d),C=yield fetch(y);if(C.ok)return yield C.json();throw new Error(`${C.status} - ${C.statusText}`)})}function a(c){return function(L,d){const y=Array.prototype.slice.call(arguments,2);return i(c[L],y)}}function s(c,L,...d){return i(L,d)}n.localize=s;function _(c){}n.getConfiguredDefaultLocale=_;function t(c){E=c}n.setPseudoTranslation=t;function m(c,L){var d;return{localize:a(L[c]),getConfiguredDefaultLocale:(d=L.getConfiguredDefaultLocale)!==null&&d!==void 0?d:y=>{}}}n.create=m;function h(c,L,d,y){var C;const R=(C=y[\"vs/nls\"])!==null&&C!==void 0?C:{};if(!c||c.length===0)return d({localize:s,getConfiguredDefaultLocale:()=>{var o;return(o=R.availableLanguages)===null||o===void 0?void 0:o[\"*\"]}});const S=R.availableLanguages?u(R.availableLanguages,c):null,p=S===null||S===M;let r=\".nls\";p||(r=r+\".\"+S);const l=o=>{Array.isArray(o)?o.localize=a(o):o.localize=a(o[c]),o.getConfiguredDefaultLocale=()=>{var v;return(v=R.availableLanguages)===null||v===void 0?void 0:v[\"*\"]},d(o)};typeof R.loadBundle==\"function\"?R.loadBundle(c,S,(o,v)=>{o?L([c+\".nls\"],l):l(v)}):R.translationServiceUrl&&!p?pe(this,void 0,void 0,function*(){var o;try{const v=yield g(R.translationServiceUrl,S,c);return l(v)}catch(v){if(!S.includes(\"-\"))return console.error(v),L([c+\".nls\"],l);try{const b=S.split(\"-\")[0],w=yield g(R.translationServiceUrl,b,c);return(o=R.availableLanguages)!==null&&o!==void 0||(R.availableLanguages={}),R.availableLanguages[\"*\"]=b,l(w)}catch(b){return console.error(b),L([c+\".nls\"],l)}}}):L([c+r],l,o=>{if(r===\".nls\"){console.error(\"Failed trying to load default language strings\",o);return}console.error(`Failed to load message bundle for language ${S}. Falling back to the default language:`,o),L([c+\".nls\"],l)})}n.load=h}),function(){const U=globalThis.MonacoEnvironment,n=U&&U.baseUrl?U.baseUrl:\"../../../\";function E(_,t){var m;if(U?.createTrustedTypesPolicy)try{return U.createTrustedTypesPolicy(_,t)}catch(h){console.warn(h);return}try{return(m=self.trustedTypes)===null||m===void 0?void 0:m.createPolicy(_,t)}catch(h){console.warn(h);return}}const M=E(\"amdLoader\",{createScriptURL:_=>_,createScript:(_,...t)=>{const m=t.slice(0,-1).join(\",\"),h=t.pop().toString();return`(function anonymous(${m}) { ${h}\n})`}});function i(){try{return(M?globalThis.eval(M.createScript(\"\",\"true\")):new Function(\"true\")).call(globalThis),!0}catch{return!1}}function u(){return new Promise((_,t)=>{if(typeof globalThis.define==\"function\"&&globalThis.define.amd)return _();const m=n+\"vs/loader.js\";if(!(/^((http:)|(https:)|(file:))/.test(m)&&m.substring(0,globalThis.origin.length)!==globalThis.origin)&&i()){fetch(m).then(c=>{if(c.status!==200)throw new Error(c.statusText);return c.text()}).then(c=>{c=`${c}\n//# sourceURL=${m}`,(M?globalThis.eval(M.createScript(\"\",c)):new Function(c)).call(globalThis),_()}).then(void 0,t);return}M?importScripts(M.createScriptURL(m)):importScripts(m),_()})}function f(){require.config({baseUrl:n,catchError:!0,trustedTypesPolicy:M,amdModulesPattern:/^vs\\//})}function g(_){u().then(()=>{f(),require([_],function(t){setTimeout(function(){const m=t.create((h,c)=>{globalThis.postMessage(h,c)},null);for(globalThis.onmessage=h=>m.onmessage(h.data,h.ports);s.length>0;){const h=s.shift();m.onmessage(h.data,h.ports)}},0)})})}typeof globalThis.define==\"function\"&&globalThis.define.amd&&f();let a=!0;const s=[];globalThis.onmessage=_=>{if(!a){s.push(_);return}a=!1,g(_.data)}}(),K(te[16],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.CallbackIterable=n.ArrayQueue=n.findMaxIdxBy=n.findMinBy=n.findLastMaxBy=n.findMaxBy=n.reverseOrder=n.booleanComparator=n.numberComparator=n.tieBreakComparators=n.compareBy=n.CompareResult=n.splice=n.insertInto=n.mapFind=n.asArray=n.pushMany=n.pushToEnd=n.pushToStart=n.arrayInsert=n.range=n.firstOrDefault=n.findLastIndex=n.findLast=n.distinct=n.isNonEmptyArray=n.isFalsyOrEmpty=n.coalesceInPlace=n.coalesce=n.groupBy=n.quickSelect=n.findFirstInSorted=n.binarySearch2=n.binarySearch=n.removeFastWithoutKeepingOrder=n.equals=n.tail2=n.tail=void 0;function E(e,P=0){return e[e.length-(1+P)]}n.tail=E;function M(e){if(e.length===0)throw new Error(\"Invalid tail call\");return[e.slice(0,e.length-1),e[e.length-1]]}n.tail2=M;function i(e,P,k=(I,V)=>I===V){if(e===P)return!0;if(!e||!P||e.length!==P.length)return!1;for(let I=0,V=e.length;I<V;I++)if(!k(e[I],P[I]))return!1;return!0}n.equals=i;function u(e,P){const k=e.length-1;P<k&&(e[P]=e[k]),e.pop()}n.removeFastWithoutKeepingOrder=u;function f(e,P,k){return g(e.length,I=>k(e[I],P))}n.binarySearch=f;function g(e,P){let k=0,I=e-1;for(;k<=I;){const V=(k+I)/2|0,Q=P(V);if(Q<0)k=V+1;else if(Q>0)I=V-1;else return V}return-(k+1)}n.binarySearch2=g;function a(e,P){let k=0,I=e.length;if(I===0)return 0;for(;k<I;){const V=Math.floor((k+I)/2);P(e[V])?I=V:k=V+1}return k}n.findFirstInSorted=a;function s(e,P,k){if(e=e|0,e>=P.length)throw new TypeError(\"invalid index\");const I=P[Math.floor(P.length*Math.random())],V=[],Q=[],ee=[];for(const ue of P){const he=k(ue,I);he<0?V.push(ue):he>0?Q.push(ue):ee.push(ue)}return e<V.length?s(e,V,k):e<V.length+ee.length?ee[0]:s(e-(V.length+ee.length),Q,k)}n.quickSelect=s;function _(e,P){const k=[];let I;for(const V of e.slice(0).sort(P))!I||P(I[0],V)!==0?(I=[V],k.push(I)):I.push(V);return k}n.groupBy=_;function t(e){return e.filter(P=>!!P)}n.coalesce=t;function m(e){let P=0;for(let k=0;k<e.length;k++)e[k]&&(e[P]=e[k],P+=1);e.length=P}n.coalesceInPlace=m;function h(e){return!Array.isArray(e)||e.length===0}n.isFalsyOrEmpty=h;function c(e){return Array.isArray(e)&&e.length>0}n.isNonEmptyArray=c;function L(e,P=k=>k){const k=new Set;return e.filter(I=>{const V=P(I);return k.has(V)?!1:(k.add(V),!0)})}n.distinct=L;function d(e,P){const k=y(e,P);if(k!==-1)return e[k]}n.findLast=d;function y(e,P){for(let k=e.length-1;k>=0;k--){const I=e[k];if(P(I))return k}return-1}n.findLastIndex=y;function C(e,P){return e.length>0?e[0]:P}n.firstOrDefault=C;function R(e,P){let k=typeof P==\"number\"?e:0;typeof P==\"number\"?k=e:(k=0,P=e);const I=[];if(k<=P)for(let V=k;V<P;V++)I.push(V);else for(let V=k;V>P;V--)I.push(V);return I}n.range=R;function S(e,P,k){const I=e.slice(0,P),V=e.slice(P);return I.concat(k,V)}n.arrayInsert=S;function p(e,P){const k=e.indexOf(P);k>-1&&(e.splice(k,1),e.unshift(P))}n.pushToStart=p;function r(e,P){const k=e.indexOf(P);k>-1&&(e.splice(k,1),e.push(P))}n.pushToEnd=r;function l(e,P){for(const k of P)e.push(k)}n.pushMany=l;function o(e){return Array.isArray(e)?e:[e]}n.asArray=o;function v(e,P){for(const k of e){const I=P(k);if(I!==void 0)return I}}n.mapFind=v;function b(e,P,k){const I=A(e,P),V=e.length,Q=k.length;e.length=V+Q;for(let ee=V-1;ee>=I;ee--)e[ee+Q]=e[ee];for(let ee=0;ee<Q;ee++)e[ee+I]=k[ee]}n.insertInto=b;function w(e,P,k,I){const V=A(e,P),Q=e.splice(V,k);return b(e,V,I),Q}n.splice=w;function A(e,P){return P<0?Math.max(P+e.length,0):Math.min(P,e.length)}var N;(function(e){function P(Q){return Q<0}e.isLessThan=P;function k(Q){return Q<=0}e.isLessThanOrEqual=k;function I(Q){return Q>0}e.isGreaterThan=I;function V(Q){return Q===0}e.isNeitherLessOrGreaterThan=V,e.greaterThan=1,e.lessThan=-1,e.neitherLessOrGreaterThan=0})(N||(n.CompareResult=N={}));function F(e,P){return(k,I)=>P(e(k),e(I))}n.compareBy=F;function O(...e){return(P,k)=>{for(const I of e){const V=I(P,k);if(!N.isNeitherLessOrGreaterThan(V))return V}return N.neitherLessOrGreaterThan}}n.tieBreakComparators=O;const q=(e,P)=>e-P;n.numberComparator=q;const T=(e,P)=>(0,n.numberComparator)(e?1:0,P?1:0);n.booleanComparator=T;function W(e){return(P,k)=>-e(P,k)}n.reverseOrder=W;function G(e,P){if(e.length===0)return;let k=e[0];for(let I=1;I<e.length;I++){const V=e[I];P(V,k)>0&&(k=V)}return k}n.findMaxBy=G;function ae(e,P){if(e.length===0)return;let k=e[0];for(let I=1;I<e.length;I++){const V=e[I];P(V,k)>=0&&(k=V)}return k}n.findLastMaxBy=ae;function re(e,P){return G(e,(k,I)=>-P(k,I))}n.findMinBy=re;function ne(e,P){if(e.length===0)return-1;let k=0;for(let I=1;I<e.length;I++){const V=e[I];P(V,e[k])>0&&(k=I)}return k}n.findMaxIdxBy=ne;class fe{constructor(P){this.items=P,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(P){let k=this.firstIdx;for(;k<this.items.length&&P(this.items[k]);)k++;const I=k===this.firstIdx?null:this.items.slice(this.firstIdx,k);return this.firstIdx=k,I}takeFromEndWhile(P){let k=this.lastIdx;for(;k>=0&&P(this.items[k]);)k--;const I=k===this.lastIdx?null:this.items.slice(k+1,this.lastIdx+1);return this.lastIdx=k,I}peek(){if(this.length!==0)return this.items[this.firstIdx]}dequeue(){const P=this.items[this.firstIdx];return this.firstIdx++,P}takeCount(P){const k=this.items.slice(this.firstIdx,this.firstIdx+P);return this.firstIdx+=P,k}}n.ArrayQueue=fe;class ${constructor(P){this.iterate=P}toArray(){const P=[];return this.iterate(k=>(P.push(k),!0)),P}filter(P){return new $(k=>this.iterate(I=>P(I)?k(I):!0))}map(P){return new $(k=>this.iterate(I=>k(P(I))))}findLast(P){let k;return this.iterate(I=>(P(I)&&(k=I),!0)),k}findLastMaxBy(P){let k,I=!0;return this.iterate(V=>((I||N.isGreaterThan(P(V,k)))&&(I=!1,k=V),!0)),k}}n.CallbackIterable=$,$.empty=new $(e=>{})}),K(te[27],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.CachedFunction=n.LRUCachedFunction=void 0;class E{constructor(u){this.fn=u,this.lastCache=void 0,this.lastArgKey=void 0}get(u){const f=JSON.stringify(u);return this.lastArgKey!==f&&(this.lastArgKey=f,this.lastCache=this.fn(u)),this.lastCache}}n.LRUCachedFunction=E;class M{get cachedValues(){return this._map}constructor(u){this.fn=u,this._map=new Map}get(u){if(this._map.has(u))return this._map.get(u);const f=this.fn(u);return this._map.set(u,f),f}}n.CachedFunction=M}),K(te[28],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.SetMap=void 0;class E{constructor(){this.map=new Map}add(i,u){let f=this.map.get(i);f||(f=new Set,this.map.set(i,f)),f.add(u)}delete(i,u){const f=this.map.get(i);f&&(f.delete(u),f.size===0&&this.map.delete(i))}forEach(i,u){const f=this.map.get(i);f&&f.forEach(u)}get(i){const u=this.map.get(i);return u||new Set}}n.SetMap=E}),K(te[29],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Color=n.HSVA=n.HSLA=n.RGBA=void 0;function E(g,a){const s=Math.pow(10,a);return Math.round(g*s)/s}class M{constructor(a,s,_,t=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math.max(0,a))|0,this.g=Math.min(255,Math.max(0,s))|0,this.b=Math.min(255,Math.max(0,_))|0,this.a=E(Math.max(Math.min(1,t),0),3)}static equals(a,s){return a.r===s.r&&a.g===s.g&&a.b===s.b&&a.a===s.a}}n.RGBA=M;class i{constructor(a,s,_,t){this._hslaBrand=void 0,this.h=Math.max(Math.min(360,a),0)|0,this.s=E(Math.max(Math.min(1,s),0),3),this.l=E(Math.max(Math.min(1,_),0),3),this.a=E(Math.max(Math.min(1,t),0),3)}static equals(a,s){return a.h===s.h&&a.s===s.s&&a.l===s.l&&a.a===s.a}static fromRGBA(a){const s=a.r/255,_=a.g/255,t=a.b/255,m=a.a,h=Math.max(s,_,t),c=Math.min(s,_,t);let L=0,d=0;const y=(c+h)/2,C=h-c;if(C>0){switch(d=Math.min(y<=.5?C/(2*y):C/(2-2*y),1),h){case s:L=(_-t)/C+(_<t?6:0);break;case _:L=(t-s)/C+2;break;case t:L=(s-_)/C+4;break}L*=60,L=Math.round(L)}return new i(L,d,y,m)}static _hue2rgb(a,s,_){return _<0&&(_+=1),_>1&&(_-=1),_<1/6?a+(s-a)*6*_:_<1/2?s:_<2/3?a+(s-a)*(2/3-_)*6:a}static toRGBA(a){const s=a.h/360,{s:_,l:t,a:m}=a;let h,c,L;if(_===0)h=c=L=t;else{const d=t<.5?t*(1+_):t+_-t*_,y=2*t-d;h=i._hue2rgb(y,d,s+1/3),c=i._hue2rgb(y,d,s),L=i._hue2rgb(y,d,s-1/3)}return new M(Math.round(h*255),Math.round(c*255),Math.round(L*255),m)}}n.HSLA=i;class u{constructor(a,s,_,t){this._hsvaBrand=void 0,this.h=Math.max(Math.min(360,a),0)|0,this.s=E(Math.max(Math.min(1,s),0),3),this.v=E(Math.max(Math.min(1,_),0),3),this.a=E(Math.max(Math.min(1,t),0),3)}static equals(a,s){return a.h===s.h&&a.s===s.s&&a.v===s.v&&a.a===s.a}static fromRGBA(a){const s=a.r/255,_=a.g/255,t=a.b/255,m=Math.max(s,_,t),h=Math.min(s,_,t),c=m-h,L=m===0?0:c/m;let d;return c===0?d=0:m===s?d=((_-t)/c%6+6)%6:m===_?d=(t-s)/c+2:d=(s-_)/c+4,new u(Math.round(d*60),L,m,a.a)}static toRGBA(a){const{h:s,s:_,v:t,a:m}=a,h=t*_,c=h*(1-Math.abs(s/60%2-1)),L=t-h;let[d,y,C]=[0,0,0];return s<60?(d=h,y=c):s<120?(d=c,y=h):s<180?(y=h,C=c):s<240?(y=c,C=h):s<300?(d=c,C=h):s<=360&&(d=h,C=c),d=Math.round((d+L)*255),y=Math.round((y+L)*255),C=Math.round((C+L)*255),new M(d,y,C,m)}}n.HSVA=u;class f{static fromHex(a){return f.Format.CSS.parseHex(a)||f.red}static equals(a,s){return!a&&!s?!0:!a||!s?!1:a.equals(s)}get hsla(){return this._hsla?this._hsla:i.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:u.fromRGBA(this.rgba)}constructor(a){if(a)if(a instanceof M)this.rgba=a;else if(a instanceof i)this._hsla=a,this.rgba=i.toRGBA(a);else if(a instanceof u)this._hsva=a,this.rgba=u.toRGBA(a);else throw new Error(\"Invalid color ctor argument\");else throw new Error(\"Color needs a value\")}equals(a){return!!a&&M.equals(this.rgba,a.rgba)&&i.equals(this.hsla,a.hsla)&&u.equals(this.hsva,a.hsva)}getRelativeLuminance(){const a=f._relativeLuminanceForComponent(this.rgba.r),s=f._relativeLuminanceForComponent(this.rgba.g),_=f._relativeLuminanceForComponent(this.rgba.b),t=.2126*a+.7152*s+.0722*_;return E(t,4)}static _relativeLuminanceForComponent(a){const s=a/255;return s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4)}isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e3>=128}isLighterThan(a){const s=this.getRelativeLuminance(),_=a.getRelativeLuminance();return s>_}isDarkerThan(a){const s=this.getRelativeLuminance(),_=a.getRelativeLuminance();return s<_}lighten(a){return new f(new i(this.hsla.h,this.hsla.s,this.hsla.l+this.hsla.l*a,this.hsla.a))}darken(a){return new f(new i(this.hsla.h,this.hsla.s,this.hsla.l-this.hsla.l*a,this.hsla.a))}transparent(a){const{r:s,g:_,b:t,a:m}=this.rgba;return new f(new M(s,_,t,m*a))}isTransparent(){return this.rgba.a===0}isOpaque(){return this.rgba.a===1}opposite(){return new f(new M(255-this.rgba.r,255-this.rgba.g,255-this.rgba.b,this.rgba.a))}makeOpaque(a){if(this.isOpaque()||a.rgba.a!==1)return this;const{r:s,g:_,b:t,a:m}=this.rgba;return new f(new M(a.rgba.r-m*(a.rgba.r-s),a.rgba.g-m*(a.rgba.g-_),a.rgba.b-m*(a.rgba.b-t),1))}toString(){return this._toString||(this._toString=f.Format.CSS.format(this)),this._toString}static getLighterColor(a,s,_){if(a.isLighterThan(s))return a;_=_||.5;const t=a.getRelativeLuminance(),m=s.getRelativeLuminance();return _=_*(m-t)/m,a.lighten(_)}static getDarkerColor(a,s,_){if(a.isDarkerThan(s))return a;_=_||.5;const t=a.getRelativeLuminance(),m=s.getRelativeLuminance();return _=_*(t-m)/t,a.darken(_)}}n.Color=f,f.white=new f(new M(255,255,255,1)),f.black=new f(new M(0,0,0,1)),f.red=new f(new M(255,0,0,1)),f.blue=new f(new M(0,0,255,1)),f.green=new f(new M(0,255,0,1)),f.cyan=new f(new M(0,255,255,1)),f.lightgrey=new f(new M(211,211,211,1)),f.transparent=new f(new M(0,0,0,0)),function(g){let a;(function(s){let _;(function(t){function m(r){return r.rgba.a===1?`rgb(${r.rgba.r}, ${r.rgba.g}, ${r.rgba.b})`:g.Format.CSS.formatRGBA(r)}t.formatRGB=m;function h(r){return`rgba(${r.rgba.r}, ${r.rgba.g}, ${r.rgba.b}, ${+r.rgba.a.toFixed(2)})`}t.formatRGBA=h;function c(r){return r.hsla.a===1?`hsl(${r.hsla.h}, ${(r.hsla.s*100).toFixed(2)}%, ${(r.hsla.l*100).toFixed(2)}%)`:g.Format.CSS.formatHSLA(r)}t.formatHSL=c;function L(r){return`hsla(${r.hsla.h}, ${(r.hsla.s*100).toFixed(2)}%, ${(r.hsla.l*100).toFixed(2)}%, ${r.hsla.a.toFixed(2)})`}t.formatHSLA=L;function d(r){const l=r.toString(16);return l.length!==2?\"0\"+l:l}function y(r){return`#${d(r.rgba.r)}${d(r.rgba.g)}${d(r.rgba.b)}`}t.formatHex=y;function C(r,l=!1){return l&&r.rgba.a===1?g.Format.CSS.formatHex(r):`#${d(r.rgba.r)}${d(r.rgba.g)}${d(r.rgba.b)}${d(Math.round(r.rgba.a*255))}`}t.formatHexA=C;function R(r){return r.isOpaque()?g.Format.CSS.formatHex(r):g.Format.CSS.formatRGBA(r)}t.format=R;function S(r){const l=r.length;if(l===0||r.charCodeAt(0)!==35)return null;if(l===7){const o=16*p(r.charCodeAt(1))+p(r.charCodeAt(2)),v=16*p(r.charCodeAt(3))+p(r.charCodeAt(4)),b=16*p(r.charCodeAt(5))+p(r.charCodeAt(6));return new g(new M(o,v,b,1))}if(l===9){const o=16*p(r.charCodeAt(1))+p(r.charCodeAt(2)),v=16*p(r.charCodeAt(3))+p(r.charCodeAt(4)),b=16*p(r.charCodeAt(5))+p(r.charCodeAt(6)),w=16*p(r.charCodeAt(7))+p(r.charCodeAt(8));return new g(new M(o,v,b,w/255))}if(l===4){const o=p(r.charCodeAt(1)),v=p(r.charCodeAt(2)),b=p(r.charCodeAt(3));return new g(new M(16*o+o,16*v+v,16*b+b))}if(l===5){const o=p(r.charCodeAt(1)),v=p(r.charCodeAt(2)),b=p(r.charCodeAt(3)),w=p(r.charCodeAt(4));return new g(new M(16*o+o,16*v+v,16*b+b,(16*w+w)/255))}return null}t.parseHex=S;function p(r){switch(r){case 48:return 0;case 49:return 1;case 50:return 2;case 51:return 3;case 52:return 4;case 53:return 5;case 54:return 6;case 55:return 7;case 56:return 8;case 57:return 9;case 97:return 10;case 65:return 10;case 98:return 11;case 66:return 11;case 99:return 12;case 67:return 12;case 100:return 13;case 68:return 13;case 101:return 14;case 69:return 14;case 102:return 15;case 70:return 15}return 0}})(_=s.CSS||(s.CSS={}))})(a=g.Format||(g.Format={}))}(f||(n.Color=f={}))}),K(te[30],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.DiffChange=void 0;class E{constructor(i,u,f,g){this.originalStart=i,this.originalLength=u,this.modifiedStart=f,this.modifiedLength=g}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}n.DiffChange=E}),K(te[3],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.BugIndicatingError=n.ErrorNoTelemetry=n.NotSupportedError=n.illegalState=n.illegalArgument=n.canceled=n.CancellationError=n.isCancellationError=n.transformErrorForSerialization=n.onUnexpectedExternalError=n.onUnexpectedError=n.errorHandler=n.ErrorHandler=void 0;class E{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(d){setTimeout(()=>{throw d.stack?h.isErrorNoTelemetry(d)?new h(d.message+`\n\n`+d.stack):new Error(d.message+`\n\n`+d.stack):d},0)}}emit(d){this.listeners.forEach(y=>{y(d)})}onUnexpectedError(d){this.unexpectedErrorHandler(d),this.emit(d)}onUnexpectedExternalError(d){this.unexpectedErrorHandler(d)}}n.ErrorHandler=E,n.errorHandler=new E;function M(L){g(L)||n.errorHandler.onUnexpectedError(L)}n.onUnexpectedError=M;function i(L){g(L)||n.errorHandler.onUnexpectedExternalError(L)}n.onUnexpectedExternalError=i;function u(L){if(L instanceof Error){const{name:d,message:y}=L,C=L.stacktrace||L.stack;return{$isError:!0,name:d,message:y,stack:C,noTelemetry:h.isErrorNoTelemetry(L)}}return L}n.transformErrorForSerialization=u;const f=\"Canceled\";function g(L){return L instanceof a?!0:L instanceof Error&&L.name===f&&L.message===f}n.isCancellationError=g;class a extends Error{constructor(){super(f),this.name=this.message}}n.CancellationError=a;function s(){const L=new Error(f);return L.name=L.message,L}n.canceled=s;function _(L){return L?new Error(`Illegal argument: ${L}`):new Error(\"Illegal argument\")}n.illegalArgument=_;function t(L){return L?new Error(`Illegal state: ${L}`):new Error(\"Illegal state\")}n.illegalState=t;class m extends Error{constructor(d){super(\"NotSupported\"),d&&(this.message=d)}}n.NotSupportedError=m;class h extends Error{constructor(d){super(d),this.name=\"CodeExpectedError\"}static fromError(d){if(d instanceof h)return d;const y=new h;return y.message=d.message,y.stack=d.stack,y}static isErrorNoTelemetry(d){return d.name===\"CodeExpectedError\"}}n.ErrorNoTelemetry=h;class c extends Error{constructor(d){super(d||\"An unexpected bug occurred.\"),Object.setPrototypeOf(this,c.prototype)}}n.BugIndicatingError=c}),K(te[9],ie([0,1,3]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.checkAdjacentItems=n.assertFn=n.assertNever=n.ok=void 0;function M(g,a){if(!g)throw new Error(a?`Assertion failed (${a})`:\"Assertion Failed\")}n.ok=M;function i(g,a=\"Unreachable\"){throw new Error(a)}n.assertNever=i;function u(g){if(!g()){debugger;g(),(0,E.onUnexpectedError)(new E.BugIndicatingError(\"Assertion Failed\"))}}n.assertFn=u;function f(g,a){let s=0;for(;s<g.length-1;){const _=g[s],t=g[s+1];if(!a(_,t))return!1;s++}return!0}n.checkAdjacentItems=f}),K(te[17],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.once=void 0;function E(M){const i=this;let u=!1,f;return function(){return u||(u=!0,f=M.apply(i,arguments)),f}}n.once=E}),K(te[18],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Iterable=void 0;var E;(function(M){function i(S){return S&&typeof S==\"object\"&&typeof S[Symbol.iterator]==\"function\"}M.is=i;const u=Object.freeze([]);function f(){return u}M.empty=f;function*g(S){yield S}M.single=g;function a(S){return i(S)?S:g(S)}M.wrap=a;function s(S){return S||u}M.from=s;function _(S){return!S||S[Symbol.iterator]().next().done===!0}M.isEmpty=_;function t(S){return S[Symbol.iterator]().next().value}M.first=t;function m(S,p){for(const r of S)if(p(r))return!0;return!1}M.some=m;function h(S,p){for(const r of S)if(p(r))return r}M.find=h;function*c(S,p){for(const r of S)p(r)&&(yield r)}M.filter=c;function*L(S,p){let r=0;for(const l of S)yield p(l,r++)}M.map=L;function*d(...S){for(const p of S)for(const r of p)yield r}M.concat=d;function y(S,p,r){let l=r;for(const o of S)l=p(l,o);return l}M.reduce=y;function*C(S,p,r=S.length){for(p<0&&(p+=S.length),r<0?r+=S.length:r>S.length&&(r=S.length);p<r;p++)yield S[p]}M.slice=C;function R(S,p=Number.POSITIVE_INFINITY){const r=[];if(p===0)return[r,S];const l=S[Symbol.iterator]();for(let o=0;o<p;o++){const v=l.next();if(v.done)return[r,M.empty()];r.push(v.value)}return[r,{[Symbol.iterator](){return l}}]}M.consume=R})(E||(n.Iterable=E={}))}),K(te[31],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.KeyChord=n.KeyCodeUtils=n.IMMUTABLE_KEY_CODE_TO_CODE=n.IMMUTABLE_CODE_TO_KEY_CODE=n.NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE=n.EVENT_KEY_CODE_MAP=void 0;class E{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(m,h){this._keyCodeToStr[m]=h,this._strToKeyCode[h.toLowerCase()]=m}keyCodeToStr(m){return this._keyCodeToStr[m]}strToKeyCode(m){return this._strToKeyCode[m.toLowerCase()]||0}}const M=new E,i=new E,u=new E;n.EVENT_KEY_CODE_MAP=new Array(230),n.NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE={};const f=[],g=Object.create(null),a=Object.create(null);n.IMMUTABLE_CODE_TO_KEY_CODE=[],n.IMMUTABLE_KEY_CODE_TO_CODE=[];for(let t=0;t<=193;t++)n.IMMUTABLE_CODE_TO_KEY_CODE[t]=-1;for(let t=0;t<=132;t++)n.IMMUTABLE_KEY_CODE_TO_CODE[t]=-1;(function(){const t=\"\",m=[[1,0,\"None\",0,\"unknown\",0,\"VK_UNKNOWN\",t,t],[1,1,\"Hyper\",0,t,0,t,t,t],[1,2,\"Super\",0,t,0,t,t,t],[1,3,\"Fn\",0,t,0,t,t,t],[1,4,\"FnLock\",0,t,0,t,t,t],[1,5,\"Suspend\",0,t,0,t,t,t],[1,6,\"Resume\",0,t,0,t,t,t],[1,7,\"Turbo\",0,t,0,t,t,t],[1,8,\"Sleep\",0,t,0,\"VK_SLEEP\",t,t],[1,9,\"WakeUp\",0,t,0,t,t,t],[0,10,\"KeyA\",31,\"A\",65,\"VK_A\",t,t],[0,11,\"KeyB\",32,\"B\",66,\"VK_B\",t,t],[0,12,\"KeyC\",33,\"C\",67,\"VK_C\",t,t],[0,13,\"KeyD\",34,\"D\",68,\"VK_D\",t,t],[0,14,\"KeyE\",35,\"E\",69,\"VK_E\",t,t],[0,15,\"KeyF\",36,\"F\",70,\"VK_F\",t,t],[0,16,\"KeyG\",37,\"G\",71,\"VK_G\",t,t],[0,17,\"KeyH\",38,\"H\",72,\"VK_H\",t,t],[0,18,\"KeyI\",39,\"I\",73,\"VK_I\",t,t],[0,19,\"KeyJ\",40,\"J\",74,\"VK_J\",t,t],[0,20,\"KeyK\",41,\"K\",75,\"VK_K\",t,t],[0,21,\"KeyL\",42,\"L\",76,\"VK_L\",t,t],[0,22,\"KeyM\",43,\"M\",77,\"VK_M\",t,t],[0,23,\"KeyN\",44,\"N\",78,\"VK_N\",t,t],[0,24,\"KeyO\",45,\"O\",79,\"VK_O\",t,t],[0,25,\"KeyP\",46,\"P\",80,\"VK_P\",t,t],[0,26,\"KeyQ\",47,\"Q\",81,\"VK_Q\",t,t],[0,27,\"KeyR\",48,\"R\",82,\"VK_R\",t,t],[0,28,\"KeyS\",49,\"S\",83,\"VK_S\",t,t],[0,29,\"KeyT\",50,\"T\",84,\"VK_T\",t,t],[0,30,\"KeyU\",51,\"U\",85,\"VK_U\",t,t],[0,31,\"KeyV\",52,\"V\",86,\"VK_V\",t,t],[0,32,\"KeyW\",53,\"W\",87,\"VK_W\",t,t],[0,33,\"KeyX\",54,\"X\",88,\"VK_X\",t,t],[0,34,\"KeyY\",55,\"Y\",89,\"VK_Y\",t,t],[0,35,\"KeyZ\",56,\"Z\",90,\"VK_Z\",t,t],[0,36,\"Digit1\",22,\"1\",49,\"VK_1\",t,t],[0,37,\"Digit2\",23,\"2\",50,\"VK_2\",t,t],[0,38,\"Digit3\",24,\"3\",51,\"VK_3\",t,t],[0,39,\"Digit4\",25,\"4\",52,\"VK_4\",t,t],[0,40,\"Digit5\",26,\"5\",53,\"VK_5\",t,t],[0,41,\"Digit6\",27,\"6\",54,\"VK_6\",t,t],[0,42,\"Digit7\",28,\"7\",55,\"VK_7\",t,t],[0,43,\"Digit8\",29,\"8\",56,\"VK_8\",t,t],[0,44,\"Digit9\",30,\"9\",57,\"VK_9\",t,t],[0,45,\"Digit0\",21,\"0\",48,\"VK_0\",t,t],[1,46,\"Enter\",3,\"Enter\",13,\"VK_RETURN\",t,t],[1,47,\"Escape\",9,\"Escape\",27,\"VK_ESCAPE\",t,t],[1,48,\"Backspace\",1,\"Backspace\",8,\"VK_BACK\",t,t],[1,49,\"Tab\",2,\"Tab\",9,\"VK_TAB\",t,t],[1,50,\"Space\",10,\"Space\",32,\"VK_SPACE\",t,t],[0,51,\"Minus\",88,\"-\",189,\"VK_OEM_MINUS\",\"-\",\"OEM_MINUS\"],[0,52,\"Equal\",86,\"=\",187,\"VK_OEM_PLUS\",\"=\",\"OEM_PLUS\"],[0,53,\"BracketLeft\",92,\"[\",219,\"VK_OEM_4\",\"[\",\"OEM_4\"],[0,54,\"BracketRight\",94,\"]\",221,\"VK_OEM_6\",\"]\",\"OEM_6\"],[0,55,\"Backslash\",93,\"\\\\\",220,\"VK_OEM_5\",\"\\\\\",\"OEM_5\"],[0,56,\"IntlHash\",0,t,0,t,t,t],[0,57,\"Semicolon\",85,\";\",186,\"VK_OEM_1\",\";\",\"OEM_1\"],[0,58,\"Quote\",95,\"'\",222,\"VK_OEM_7\",\"'\",\"OEM_7\"],[0,59,\"Backquote\",91,\"`\",192,\"VK_OEM_3\",\"`\",\"OEM_3\"],[0,60,\"Comma\",87,\",\",188,\"VK_OEM_COMMA\",\",\",\"OEM_COMMA\"],[0,61,\"Period\",89,\".\",190,\"VK_OEM_PERIOD\",\".\",\"OEM_PERIOD\"],[0,62,\"Slash\",90,\"/\",191,\"VK_OEM_2\",\"/\",\"OEM_2\"],[1,63,\"CapsLock\",8,\"CapsLock\",20,\"VK_CAPITAL\",t,t],[1,64,\"F1\",59,\"F1\",112,\"VK_F1\",t,t],[1,65,\"F2\",60,\"F2\",113,\"VK_F2\",t,t],[1,66,\"F3\",61,\"F3\",114,\"VK_F3\",t,t],[1,67,\"F4\",62,\"F4\",115,\"VK_F4\",t,t],[1,68,\"F5\",63,\"F5\",116,\"VK_F5\",t,t],[1,69,\"F6\",64,\"F6\",117,\"VK_F6\",t,t],[1,70,\"F7\",65,\"F7\",118,\"VK_F7\",t,t],[1,71,\"F8\",66,\"F8\",119,\"VK_F8\",t,t],[1,72,\"F9\",67,\"F9\",120,\"VK_F9\",t,t],[1,73,\"F10\",68,\"F10\",121,\"VK_F10\",t,t],[1,74,\"F11\",69,\"F11\",122,\"VK_F11\",t,t],[1,75,\"F12\",70,\"F12\",123,\"VK_F12\",t,t],[1,76,\"PrintScreen\",0,t,0,t,t,t],[1,77,\"ScrollLock\",84,\"ScrollLock\",145,\"VK_SCROLL\",t,t],[1,78,\"Pause\",7,\"PauseBreak\",19,\"VK_PAUSE\",t,t],[1,79,\"Insert\",19,\"Insert\",45,\"VK_INSERT\",t,t],[1,80,\"Home\",14,\"Home\",36,\"VK_HOME\",t,t],[1,81,\"PageUp\",11,\"PageUp\",33,\"VK_PRIOR\",t,t],[1,82,\"Delete\",20,\"Delete\",46,\"VK_DELETE\",t,t],[1,83,\"End\",13,\"End\",35,\"VK_END\",t,t],[1,84,\"PageDown\",12,\"PageDown\",34,\"VK_NEXT\",t,t],[1,85,\"ArrowRight\",17,\"RightArrow\",39,\"VK_RIGHT\",\"Right\",t],[1,86,\"ArrowLeft\",15,\"LeftArrow\",37,\"VK_LEFT\",\"Left\",t],[1,87,\"ArrowDown\",18,\"DownArrow\",40,\"VK_DOWN\",\"Down\",t],[1,88,\"ArrowUp\",16,\"UpArrow\",38,\"VK_UP\",\"Up\",t],[1,89,\"NumLock\",83,\"NumLock\",144,\"VK_NUMLOCK\",t,t],[1,90,\"NumpadDivide\",113,\"NumPad_Divide\",111,\"VK_DIVIDE\",t,t],[1,91,\"NumpadMultiply\",108,\"NumPad_Multiply\",106,\"VK_MULTIPLY\",t,t],[1,92,\"NumpadSubtract\",111,\"NumPad_Subtract\",109,\"VK_SUBTRACT\",t,t],[1,93,\"NumpadAdd\",109,\"NumPad_Add\",107,\"VK_ADD\",t,t],[1,94,\"NumpadEnter\",3,t,0,t,t,t],[1,95,\"Numpad1\",99,\"NumPad1\",97,\"VK_NUMPAD1\",t,t],[1,96,\"Numpad2\",100,\"NumPad2\",98,\"VK_NUMPAD2\",t,t],[1,97,\"Numpad3\",101,\"NumPad3\",99,\"VK_NUMPAD3\",t,t],[1,98,\"Numpad4\",102,\"NumPad4\",100,\"VK_NUMPAD4\",t,t],[1,99,\"Numpad5\",103,\"NumPad5\",101,\"VK_NUMPAD5\",t,t],[1,100,\"Numpad6\",104,\"NumPad6\",102,\"VK_NUMPAD6\",t,t],[1,101,\"Numpad7\",105,\"NumPad7\",103,\"VK_NUMPAD7\",t,t],[1,102,\"Numpad8\",106,\"NumPad8\",104,\"VK_NUMPAD8\",t,t],[1,103,\"Numpad9\",107,\"NumPad9\",105,\"VK_NUMPAD9\",t,t],[1,104,\"Numpad0\",98,\"NumPad0\",96,\"VK_NUMPAD0\",t,t],[1,105,\"NumpadDecimal\",112,\"NumPad_Decimal\",110,\"VK_DECIMAL\",t,t],[0,106,\"IntlBackslash\",97,\"OEM_102\",226,\"VK_OEM_102\",t,t],[1,107,\"ContextMenu\",58,\"ContextMenu\",93,t,t,t],[1,108,\"Power\",0,t,0,t,t,t],[1,109,\"NumpadEqual\",0,t,0,t,t,t],[1,110,\"F13\",71,\"F13\",124,\"VK_F13\",t,t],[1,111,\"F14\",72,\"F14\",125,\"VK_F14\",t,t],[1,112,\"F15\",73,\"F15\",126,\"VK_F15\",t,t],[1,113,\"F16\",74,\"F16\",127,\"VK_F16\",t,t],[1,114,\"F17\",75,\"F17\",128,\"VK_F17\",t,t],[1,115,\"F18\",76,\"F18\",129,\"VK_F18\",t,t],[1,116,\"F19\",77,\"F19\",130,\"VK_F19\",t,t],[1,117,\"F20\",78,\"F20\",131,\"VK_F20\",t,t],[1,118,\"F21\",79,\"F21\",132,\"VK_F21\",t,t],[1,119,\"F22\",80,\"F22\",133,\"VK_F22\",t,t],[1,120,\"F23\",81,\"F23\",134,\"VK_F23\",t,t],[1,121,\"F24\",82,\"F24\",135,\"VK_F24\",t,t],[1,122,\"Open\",0,t,0,t,t,t],[1,123,\"Help\",0,t,0,t,t,t],[1,124,\"Select\",0,t,0,t,t,t],[1,125,\"Again\",0,t,0,t,t,t],[1,126,\"Undo\",0,t,0,t,t,t],[1,127,\"Cut\",0,t,0,t,t,t],[1,128,\"Copy\",0,t,0,t,t,t],[1,129,\"Paste\",0,t,0,t,t,t],[1,130,\"Find\",0,t,0,t,t,t],[1,131,\"AudioVolumeMute\",117,\"AudioVolumeMute\",173,\"VK_VOLUME_MUTE\",t,t],[1,132,\"AudioVolumeUp\",118,\"AudioVolumeUp\",175,\"VK_VOLUME_UP\",t,t],[1,133,\"AudioVolumeDown\",119,\"AudioVolumeDown\",174,\"VK_VOLUME_DOWN\",t,t],[1,134,\"NumpadComma\",110,\"NumPad_Separator\",108,\"VK_SEPARATOR\",t,t],[0,135,\"IntlRo\",115,\"ABNT_C1\",193,\"VK_ABNT_C1\",t,t],[1,136,\"KanaMode\",0,t,0,t,t,t],[0,137,\"IntlYen\",0,t,0,t,t,t],[1,138,\"Convert\",0,t,0,t,t,t],[1,139,\"NonConvert\",0,t,0,t,t,t],[1,140,\"Lang1\",0,t,0,t,t,t],[1,141,\"Lang2\",0,t,0,t,t,t],[1,142,\"Lang3\",0,t,0,t,t,t],[1,143,\"Lang4\",0,t,0,t,t,t],[1,144,\"Lang5\",0,t,0,t,t,t],[1,145,\"Abort\",0,t,0,t,t,t],[1,146,\"Props\",0,t,0,t,t,t],[1,147,\"NumpadParenLeft\",0,t,0,t,t,t],[1,148,\"NumpadParenRight\",0,t,0,t,t,t],[1,149,\"NumpadBackspace\",0,t,0,t,t,t],[1,150,\"NumpadMemoryStore\",0,t,0,t,t,t],[1,151,\"NumpadMemoryRecall\",0,t,0,t,t,t],[1,152,\"NumpadMemoryClear\",0,t,0,t,t,t],[1,153,\"NumpadMemoryAdd\",0,t,0,t,t,t],[1,154,\"NumpadMemorySubtract\",0,t,0,t,t,t],[1,155,\"NumpadClear\",131,\"Clear\",12,\"VK_CLEAR\",t,t],[1,156,\"NumpadClearEntry\",0,t,0,t,t,t],[1,0,t,5,\"Ctrl\",17,\"VK_CONTROL\",t,t],[1,0,t,4,\"Shift\",16,\"VK_SHIFT\",t,t],[1,0,t,6,\"Alt\",18,\"VK_MENU\",t,t],[1,0,t,57,\"Meta\",91,\"VK_COMMAND\",t,t],[1,157,\"ControlLeft\",5,t,0,\"VK_LCONTROL\",t,t],[1,158,\"ShiftLeft\",4,t,0,\"VK_LSHIFT\",t,t],[1,159,\"AltLeft\",6,t,0,\"VK_LMENU\",t,t],[1,160,\"MetaLeft\",57,t,0,\"VK_LWIN\",t,t],[1,161,\"ControlRight\",5,t,0,\"VK_RCONTROL\",t,t],[1,162,\"ShiftRight\",4,t,0,\"VK_RSHIFT\",t,t],[1,163,\"AltRight\",6,t,0,\"VK_RMENU\",t,t],[1,164,\"MetaRight\",57,t,0,\"VK_RWIN\",t,t],[1,165,\"BrightnessUp\",0,t,0,t,t,t],[1,166,\"BrightnessDown\",0,t,0,t,t,t],[1,167,\"MediaPlay\",0,t,0,t,t,t],[1,168,\"MediaRecord\",0,t,0,t,t,t],[1,169,\"MediaFastForward\",0,t,0,t,t,t],[1,170,\"MediaRewind\",0,t,0,t,t,t],[1,171,\"MediaTrackNext\",124,\"MediaTrackNext\",176,\"VK_MEDIA_NEXT_TRACK\",t,t],[1,172,\"MediaTrackPrevious\",125,\"MediaTrackPrevious\",177,\"VK_MEDIA_PREV_TRACK\",t,t],[1,173,\"MediaStop\",126,\"MediaStop\",178,\"VK_MEDIA_STOP\",t,t],[1,174,\"Eject\",0,t,0,t,t,t],[1,175,\"MediaPlayPause\",127,\"MediaPlayPause\",179,\"VK_MEDIA_PLAY_PAUSE\",t,t],[1,176,\"MediaSelect\",128,\"LaunchMediaPlayer\",181,\"VK_MEDIA_LAUNCH_MEDIA_SELECT\",t,t],[1,177,\"LaunchMail\",129,\"LaunchMail\",180,\"VK_MEDIA_LAUNCH_MAIL\",t,t],[1,178,\"LaunchApp2\",130,\"LaunchApp2\",183,\"VK_MEDIA_LAUNCH_APP2\",t,t],[1,179,\"LaunchApp1\",0,t,0,\"VK_MEDIA_LAUNCH_APP1\",t,t],[1,180,\"SelectTask\",0,t,0,t,t,t],[1,181,\"LaunchScreenSaver\",0,t,0,t,t,t],[1,182,\"BrowserSearch\",120,\"BrowserSearch\",170,\"VK_BROWSER_SEARCH\",t,t],[1,183,\"BrowserHome\",121,\"BrowserHome\",172,\"VK_BROWSER_HOME\",t,t],[1,184,\"BrowserBack\",122,\"BrowserBack\",166,\"VK_BROWSER_BACK\",t,t],[1,185,\"BrowserForward\",123,\"BrowserForward\",167,\"VK_BROWSER_FORWARD\",t,t],[1,186,\"BrowserStop\",0,t,0,\"VK_BROWSER_STOP\",t,t],[1,187,\"BrowserRefresh\",0,t,0,\"VK_BROWSER_REFRESH\",t,t],[1,188,\"BrowserFavorites\",0,t,0,\"VK_BROWSER_FAVORITES\",t,t],[1,189,\"ZoomToggle\",0,t,0,t,t,t],[1,190,\"MailReply\",0,t,0,t,t,t],[1,191,\"MailForward\",0,t,0,t,t,t],[1,192,\"MailSend\",0,t,0,t,t,t],[1,0,t,114,\"KeyInComposition\",229,t,t,t],[1,0,t,116,\"ABNT_C2\",194,\"VK_ABNT_C2\",t,t],[1,0,t,96,\"OEM_8\",223,\"VK_OEM_8\",t,t],[1,0,t,0,t,0,\"VK_KANA\",t,t],[1,0,t,0,t,0,\"VK_HANGUL\",t,t],[1,0,t,0,t,0,\"VK_JUNJA\",t,t],[1,0,t,0,t,0,\"VK_FINAL\",t,t],[1,0,t,0,t,0,\"VK_HANJA\",t,t],[1,0,t,0,t,0,\"VK_KANJI\",t,t],[1,0,t,0,t,0,\"VK_CONVERT\",t,t],[1,0,t,0,t,0,\"VK_NONCONVERT\",t,t],[1,0,t,0,t,0,\"VK_ACCEPT\",t,t],[1,0,t,0,t,0,\"VK_MODECHANGE\",t,t],[1,0,t,0,t,0,\"VK_SELECT\",t,t],[1,0,t,0,t,0,\"VK_PRINT\",t,t],[1,0,t,0,t,0,\"VK_EXECUTE\",t,t],[1,0,t,0,t,0,\"VK_SNAPSHOT\",t,t],[1,0,t,0,t,0,\"VK_HELP\",t,t],[1,0,t,0,t,0,\"VK_APPS\",t,t],[1,0,t,0,t,0,\"VK_PROCESSKEY\",t,t],[1,0,t,0,t,0,\"VK_PACKET\",t,t],[1,0,t,0,t,0,\"VK_DBE_SBCSCHAR\",t,t],[1,0,t,0,t,0,\"VK_DBE_DBCSCHAR\",t,t],[1,0,t,0,t,0,\"VK_ATTN\",t,t],[1,0,t,0,t,0,\"VK_CRSEL\",t,t],[1,0,t,0,t,0,\"VK_EXSEL\",t,t],[1,0,t,0,t,0,\"VK_EREOF\",t,t],[1,0,t,0,t,0,\"VK_PLAY\",t,t],[1,0,t,0,t,0,\"VK_ZOOM\",t,t],[1,0,t,0,t,0,\"VK_NONAME\",t,t],[1,0,t,0,t,0,\"VK_PA1\",t,t],[1,0,t,0,t,0,\"VK_OEM_CLEAR\",t,t]],h=[],c=[];for(const L of m){const[d,y,C,R,S,p,r,l,o]=L;if(c[y]||(c[y]=!0,f[y]=C,g[C]=y,a[C.toLowerCase()]=y,d&&(n.IMMUTABLE_CODE_TO_KEY_CODE[y]=R,R!==0&&R!==3&&R!==5&&R!==4&&R!==6&&R!==57&&(n.IMMUTABLE_KEY_CODE_TO_CODE[R]=y))),!h[R]){if(h[R]=!0,!S)throw new Error(`String representation missing for key code ${R} around scan code ${C}`);M.define(R,S),i.define(R,l||S),u.define(R,o||l||S)}p&&(n.EVENT_KEY_CODE_MAP[p]=R),r&&(n.NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE[r]=R)}n.IMMUTABLE_KEY_CODE_TO_CODE[3]=46})();var s;(function(t){function m(C){return M.keyCodeToStr(C)}t.toString=m;function h(C){return M.strToKeyCode(C)}t.fromString=h;function c(C){return i.keyCodeToStr(C)}t.toUserSettingsUS=c;function L(C){return u.keyCodeToStr(C)}t.toUserSettingsGeneral=L;function d(C){return i.strToKeyCode(C)||u.strToKeyCode(C)}t.fromUserSettings=d;function y(C){if(C>=98&&C<=113)return null;switch(C){case 16:return\"Up\";case 18:return\"Down\";case 15:return\"Left\";case 17:return\"Right\"}return M.keyCodeToStr(C)}t.toElectronAccelerator=y})(s||(n.KeyCodeUtils=s={}));function _(t,m){const h=(m&65535)<<16>>>0;return(t|h)>>>0}n.KeyChord=_}),K(te[32],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Lazy=void 0;class E{constructor(i){this.executor=i,this._didRun=!1}get value(){if(!this._didRun)try{this._value=this.executor()}catch(i){this._error=i}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}n.Lazy=E}),K(te[10],ie([0,1,17,18]),function(U,n,E,M){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.DisposableMap=n.ImmortalReference=n.RefCountedDisposable=n.MutableDisposable=n.Disposable=n.DisposableStore=n.toDisposable=n.combinedDisposable=n.dispose=n.isDisposable=n.markAsSingleton=n.setDisposableTracker=void 0;const i=!1;let u=null;function f(r){u=r}if(n.setDisposableTracker=f,i){const r=\"__is_disposable_tracked__\";f(new class{trackDisposable(l){const o=new Error(\"Potentially leaked disposable\").stack;setTimeout(()=>{l[r]||console.log(o)},3e3)}setParent(l,o){if(l&&l!==y.None)try{l[r]=!0}catch{}}markAsDisposed(l){if(l&&l!==y.None)try{l[r]=!0}catch{}}markAsSingleton(l){}})}function g(r){return u?.trackDisposable(r),r}function a(r){u?.markAsDisposed(r)}function s(r,l){u?.setParent(r,l)}function _(r,l){if(u)for(const o of r)u.setParent(o,l)}function t(r){return u?.markAsSingleton(r),r}n.markAsSingleton=t;function m(r){return typeof r.dispose==\"function\"&&r.dispose.length===0}n.isDisposable=m;function h(r){if(M.Iterable.is(r)){const l=[];for(const o of r)if(o)try{o.dispose()}catch(v){l.push(v)}if(l.length===1)throw l[0];if(l.length>1)throw new AggregateError(l,\"Encountered errors while disposing of store\");return Array.isArray(r)?[]:r}else if(r)return r.dispose(),r}n.dispose=h;function c(...r){const l=L(()=>h(r));return _(r,l),l}n.combinedDisposable=c;function L(r){const l=g({dispose:(0,E.once)(()=>{a(l),r()})});return l}n.toDisposable=L;class d{constructor(){this._toDispose=new Set,this._isDisposed=!1,g(this)}dispose(){this._isDisposed||(a(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{h(this._toDispose)}finally{this._toDispose.clear()}}add(l){if(!l)return l;if(l===this)throw new Error(\"Cannot register a disposable on itself!\");return s(l,this),this._isDisposed?d.DISABLE_DISPOSED_WARNING||console.warn(new Error(\"Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!\").stack):this._toDispose.add(l),l}}n.DisposableStore=d,d.DISABLE_DISPOSED_WARNING=!1;class y{constructor(){this._store=new d,g(this),s(this._store,this)}dispose(){a(this),this._store.dispose()}_register(l){if(l===this)throw new Error(\"Cannot register a disposable on itself!\");return this._store.add(l)}}n.Disposable=y,y.None=Object.freeze({dispose(){}});class C{constructor(){this._isDisposed=!1,g(this)}get value(){return this._isDisposed?void 0:this._value}set value(l){var o;this._isDisposed||l===this._value||((o=this._value)===null||o===void 0||o.dispose(),l&&s(l,this),this._value=l)}clear(){this.value=void 0}dispose(){var l;this._isDisposed=!0,a(this),(l=this._value)===null||l===void 0||l.dispose(),this._value=void 0}}n.MutableDisposable=C;class R{constructor(l){this._disposable=l,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter===0&&this._disposable.dispose(),this}}n.RefCountedDisposable=R;class S{constructor(l){this.object=l}dispose(){}}n.ImmortalReference=S;class p{constructor(){this._store=new Map,this._isDisposed=!1,g(this)}dispose(){a(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{h(this._store.values())}finally{this._store.clear()}}get(l){return this._store.get(l)}set(l,o,v=!1){var b;this._isDisposed&&console.warn(new Error(\"Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!\").stack),v||(b=this._store.get(l))===null||b===void 0||b.dispose(),this._store.set(l,o)}deleteAndDispose(l){var o;(o=this._store.get(l))===null||o===void 0||o.dispose(),this._store.delete(l)}[Symbol.iterator](){return this._store[Symbol.iterator]()}}n.DisposableMap=p}),K(te[19],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.LinkedList=void 0;class E{constructor(u){this.element=u,this.next=E.Undefined,this.prev=E.Undefined}}E.Undefined=new E(void 0);class M{constructor(){this._first=E.Undefined,this._last=E.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===E.Undefined}clear(){let u=this._first;for(;u!==E.Undefined;){const f=u.next;u.prev=E.Undefined,u.next=E.Undefined,u=f}this._first=E.Undefined,this._last=E.Undefined,this._size=0}unshift(u){return this._insert(u,!1)}push(u){return this._insert(u,!0)}_insert(u,f){const g=new E(u);if(this._first===E.Undefined)this._first=g,this._last=g;else if(f){const s=this._last;this._last=g,g.prev=s,s.next=g}else{const s=this._first;this._first=g,g.next=s,s.prev=g}this._size+=1;let a=!1;return()=>{a||(a=!0,this._remove(g))}}shift(){if(this._first!==E.Undefined){const u=this._first.element;return this._remove(this._first),u}}pop(){if(this._last!==E.Undefined){const u=this._last.element;return this._remove(this._last),u}}_remove(u){if(u.prev!==E.Undefined&&u.next!==E.Undefined){const f=u.prev;f.next=u.next,u.next.prev=f}else u.prev===E.Undefined&&u.next===E.Undefined?(this._first=E.Undefined,this._last=E.Undefined):u.next===E.Undefined?(this._last=this._last.prev,this._last.next=E.Undefined):u.prev===E.Undefined&&(this._first=this._first.next,this._first.prev=E.Undefined);this._size-=1}*[Symbol.iterator](){let u=this._first;for(;u!==E.Undefined;)yield u.element,u=u.next}}n.LinkedList=M}),K(te[20],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.StopWatch=void 0;const E=globalThis.performance&&typeof globalThis.performance.now==\"function\";class M{static create(u){return new M(u)}constructor(u){this._now=E&&u===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}n.StopWatch=M}),K(te[7],ie([0,1,3,17,10,19,20]),function(U,n,E,M,i,u,f){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Relay=n.EventBufferer=n.EventMultiplexer=n.MicrotaskEmitter=n.DebounceEmitter=n.PauseableEmitter=n.createEventDeliveryQueue=n.Emitter=n.EventProfiling=n.Event=void 0;const g=!1,a=!1;var s;(function(b){b.None=()=>i.Disposable.None;function w(J){if(a){const{onDidAddListener:H}=J,X=h.create();let Y=0;J.onDidAddListener=()=>{++Y===2&&(console.warn(\"snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here\"),X.print()),H?.()}}}function A(J,H){return re(J,()=>{},0,void 0,!0,void 0,H)}b.defer=A;function N(J){return(H,X=null,Y)=>{let se=!1,oe;return oe=J(j=>{if(!se)return oe?oe.dispose():se=!0,H.call(X,j)},null,Y),se&&oe.dispose(),oe}}b.once=N;function F(J,H,X){return ae((Y,se=null,oe)=>J(j=>Y.call(se,H(j)),null,oe),X)}b.map=F;function O(J,H,X){return ae((Y,se=null,oe)=>J(j=>{H(j),Y.call(se,j)},null,oe),X)}b.forEach=O;function q(J,H,X){return ae((Y,se=null,oe)=>J(j=>H(j)&&Y.call(se,j),null,oe),X)}b.filter=q;function T(J){return J}b.signal=T;function W(...J){return(H,X=null,Y)=>(0,i.combinedDisposable)(...J.map(se=>se(oe=>H.call(X,oe),null,Y)))}b.any=W;function G(J,H,X,Y){let se=X;return F(J,oe=>(se=H(se,oe),se),Y)}b.reduce=G;function ae(J,H){let X;const Y={onWillAddFirstListener(){X=J(se.fire,se)},onDidRemoveLastListener(){X?.dispose()}};H||w(Y);const se=new y(Y);return H?.add(se),se.event}function re(J,H,X=100,Y=!1,se=!1,oe,j){let le,D,x,B=0,z;const Z={leakWarningThreshold:oe,onWillAddFirstListener(){le=J(de=>{B++,D=H(D,de),Y&&!x&&(ce.fire(D),D=void 0),z=()=>{const Se=D;D=void 0,x=void 0,(!Y||B>1)&&ce.fire(Se),B=0},typeof X==\"number\"?(clearTimeout(x),x=setTimeout(z,X)):x===void 0&&(x=0,queueMicrotask(z))})},onWillRemoveListener(){se&&B>0&&z?.()},onDidRemoveLastListener(){z=void 0,le.dispose()}};j||w(Z);const ce=new y(Z);return j?.add(ce),ce.event}b.debounce=re;function ne(J,H=0,X){return b.debounce(J,(Y,se)=>Y?(Y.push(se),Y):[se],H,void 0,!0,void 0,X)}b.accumulate=ne;function fe(J,H=(Y,se)=>Y===se,X){let Y=!0,se;return q(J,oe=>{const j=Y||!H(oe,se);return Y=!1,se=oe,j},X)}b.latch=fe;function $(J,H,X){return[b.filter(J,H,X),b.filter(J,Y=>!H(Y),X)]}b.split=$;function e(J,H=!1,X=[]){let Y=X.slice(),se=J(le=>{Y?Y.push(le):j.fire(le)});const oe=()=>{Y?.forEach(le=>j.fire(le)),Y=null},j=new y({onWillAddFirstListener(){se||(se=J(le=>j.fire(le)))},onDidAddFirstListener(){Y&&(H?setTimeout(oe):oe())},onDidRemoveLastListener(){se&&se.dispose(),se=null}});return j.event}b.buffer=e;class P{constructor(H){this.event=H,this.disposables=new i.DisposableStore}map(H){return new P(F(this.event,H,this.disposables))}forEach(H){return new P(O(this.event,H,this.disposables))}filter(H){return new P(q(this.event,H,this.disposables))}reduce(H,X){return new P(G(this.event,H,X,this.disposables))}latch(){return new P(fe(this.event,void 0,this.disposables))}debounce(H,X=100,Y=!1,se=!1,oe){return new P(re(this.event,H,X,Y,se,oe,this.disposables))}on(H,X,Y){return this.event(H,X,Y)}once(H,X,Y){return N(this.event)(H,X,Y)}dispose(){this.disposables.dispose()}}function k(J){return new P(J)}b.chain=k;function I(J,H,X=Y=>Y){const Y=(...le)=>j.fire(X(...le)),se=()=>J.on(H,Y),oe=()=>J.removeListener(H,Y),j=new y({onWillAddFirstListener:se,onDidRemoveLastListener:oe});return j.event}b.fromNodeEventEmitter=I;function V(J,H,X=Y=>Y){const Y=(...le)=>j.fire(X(...le)),se=()=>J.addEventListener(H,Y),oe=()=>J.removeEventListener(H,Y),j=new y({onWillAddFirstListener:se,onDidRemoveLastListener:oe});return j.event}b.fromDOMEventEmitter=V;function Q(J){return new Promise(H=>N(J)(H))}b.toPromise=Q;function ee(J){const H=new y;return J.then(X=>{H.fire(X)},()=>{H.fire(void 0)}).finally(()=>{H.dispose()}),H.event}b.fromPromise=ee;function ue(J,H){return H(void 0),J(X=>H(X))}b.runAndSubscribe=ue;function he(J,H){let X=null;function Y(oe){X?.dispose(),X=new i.DisposableStore,H(oe,X)}Y(void 0);const se=J(oe=>Y(oe));return(0,i.toDisposable)(()=>{se.dispose(),X?.dispose()})}b.runAndSubscribeWithStore=he;class ge{constructor(H,X){this._observable=H,this._counter=0,this._hasChanged=!1;const Y={onWillAddFirstListener:()=>{H.addObserver(this)},onDidRemoveLastListener:()=>{H.removeObserver(this)}};X||w(Y),this.emitter=new y(Y),X&&X.add(this.emitter)}beginUpdate(H){this._counter++}handlePossibleChange(H){}handleChange(H,X){this._hasChanged=!0}endUpdate(H){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function me(J,H){return new ge(J,H).emitter.event}b.fromObservable=me;function ve(J){return H=>{let X=0,Y=!1;const se={beginUpdate(){X++},endUpdate(){X--,X===0&&(J.reportChanges(),Y&&(Y=!1,H()))},handlePossibleChange(){},handleChange(){Y=!0}};return J.addObserver(se),J.reportChanges(),{dispose(){J.removeObserver(se)}}}}b.fromObservableLight=ve})(s||(n.Event=s={}));class _{constructor(w){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${w}_${_._idPool++}`,_.all.add(this)}start(w){this._stopWatch=new f.StopWatch,this.listenerCount=w}stop(){if(this._stopWatch){const w=this._stopWatch.elapsed();this.durations.push(w),this.elapsedOverall+=w,this.invocationCount+=1,this._stopWatch=void 0}}}n.EventProfiling=_,_.all=new Set,_._idPool=0;let t=-1;class m{constructor(w,A=Math.random().toString(18).slice(2,5)){this.threshold=w,this.name=A,this._warnCountdown=0}dispose(){var w;(w=this._stacks)===null||w===void 0||w.clear()}check(w,A){const N=this.threshold;if(N<=0||A<N)return;this._stacks||(this._stacks=new Map);const F=this._stacks.get(w.value)||0;if(this._stacks.set(w.value,F+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=N*.5;let O,q=0;for(const[T,W]of this._stacks)(!O||q<W)&&(O=T,q=W);console.warn(`[${this.name}] potential listener LEAK detected, having ${A} listeners already. MOST frequent listener (${q}):`),console.warn(O)}return()=>{const O=this._stacks.get(w.value)||0;this._stacks.set(w.value,O-1)}}}class h{static create(){var w;return new h((w=new Error().stack)!==null&&w!==void 0?w:\"\")}constructor(w){this.value=w}print(){console.warn(this.value.split(`\n`).slice(2).join(`\n`))}}class c{constructor(w){this.value=w}}const L=2,d=(b,w)=>{if(b instanceof c)w(b);else for(let A=0;A<b.length;A++){const N=b[A];N&&w(N)}};class y{constructor(w){var A,N,F,O,q;this._size=0,this._options=w,this._leakageMon=t>0||!((A=this._options)===null||A===void 0)&&A.leakWarningThreshold?new m((F=(N=this._options)===null||N===void 0?void 0:N.leakWarningThreshold)!==null&&F!==void 0?F:t):void 0,this._perfMon=!((O=this._options)===null||O===void 0)&&O._profName?new _(this._options._profName):void 0,this._deliveryQueue=(q=this._options)===null||q===void 0?void 0:q.deliveryQueue}dispose(){var w,A,N,F;if(!this._disposed){if(this._disposed=!0,((w=this._deliveryQueue)===null||w===void 0?void 0:w.current)===this&&this._deliveryQueue.reset(),this._listeners){if(g){const O=this._listeners;queueMicrotask(()=>{d(O,q=>{var T;return(T=q.stack)===null||T===void 0?void 0:T.print()})})}this._listeners=void 0,this._size=0}(N=(A=this._options)===null||A===void 0?void 0:A.onDidRemoveLastListener)===null||N===void 0||N.call(A),(F=this._leakageMon)===null||F===void 0||F.dispose()}}get event(){var w;return(w=this._event)!==null&&w!==void 0||(this._event=(A,N,F)=>{var O,q,T,W,G;if(this._leakageMon&&this._size>this._leakageMon.threshold*3)return console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`),i.Disposable.None;if(this._disposed)return i.Disposable.None;N&&(A=A.bind(N));const ae=new c(A);let re,ne;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(ae.stack=h.create(),re=this._leakageMon.check(ae.stack,this._size+1)),g&&(ae.stack=ne??h.create()),this._listeners?this._listeners instanceof c?((G=this._deliveryQueue)!==null&&G!==void 0||(this._deliveryQueue=new R),this._listeners=[this._listeners,ae]):this._listeners.push(ae):((q=(O=this._options)===null||O===void 0?void 0:O.onWillAddFirstListener)===null||q===void 0||q.call(O,this),this._listeners=ae,(W=(T=this._options)===null||T===void 0?void 0:T.onDidAddFirstListener)===null||W===void 0||W.call(T,this)),this._size++;const fe=(0,i.toDisposable)(()=>{re?.(),this._removeListener(ae)});return F instanceof i.DisposableStore?F.add(fe):Array.isArray(F)&&F.push(fe),fe}),this._event}_removeListener(w){var A,N,F,O;if((N=(A=this._options)===null||A===void 0?void 0:A.onWillRemoveListener)===null||N===void 0||N.call(A,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(O=(F=this._options)===null||F===void 0?void 0:F.onDidRemoveLastListener)===null||O===void 0||O.call(F,this),this._size=0;return}const q=this._listeners,T=q.indexOf(w);if(T===-1)throw console.log(\"disposed?\",this._disposed),console.log(\"size?\",this._size),console.log(\"arr?\",JSON.stringify(this._listeners)),new Error(\"Attempted to dispose unknown listener\");this._size--,q[T]=void 0;const W=this._deliveryQueue.current===this;if(this._size*L<=q.length){let G=0;for(let ae=0;ae<q.length;ae++)q[ae]?q[G++]=q[ae]:W&&(this._deliveryQueue.end--,G<this._deliveryQueue.i&&this._deliveryQueue.i--);q.length=G}}_deliver(w,A){var N;if(!w)return;const F=((N=this._options)===null||N===void 0?void 0:N.onListenerError)||E.onUnexpectedError;if(!F){w.value(A);return}try{w.value(A)}catch(O){F(O)}}_deliverQueue(w){const A=w.current._listeners;for(;w.i<w.end;)this._deliver(A[w.i++],w.value);w.reset()}fire(w){var A,N,F,O;if(!((A=this._deliveryQueue)===null||A===void 0)&&A.current&&(this._deliverQueue(this._deliveryQueue),(N=this._perfMon)===null||N===void 0||N.stop()),(F=this._perfMon)===null||F===void 0||F.start(this._size),this._listeners)if(this._listeners instanceof c)this._deliver(this._listeners,w);else{const q=this._deliveryQueue;q.enqueue(this,w,this._listeners.length),this._deliverQueue(q)}(O=this._perfMon)===null||O===void 0||O.stop()}hasListeners(){return this._size>0}}n.Emitter=y;const C=()=>new R;n.createEventDeliveryQueue=C;class R{constructor(){this.i=-1,this.end=0}enqueue(w,A,N){this.i=0,this.end=N,this.current=w,this.value=A}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class S extends y{constructor(w){super(w),this._isPaused=0,this._eventQueue=new u.LinkedList,this._mergeFn=w?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused===0)if(this._mergeFn){if(this._eventQueue.size>0){const w=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(w))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(w){this._size&&(this._isPaused!==0?this._eventQueue.push(w):super.fire(w))}}n.PauseableEmitter=S;class p extends S{constructor(w){var A;super(w),this._delay=(A=w.delay)!==null&&A!==void 0?A:100}fire(w){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(w)}}n.DebounceEmitter=p;class r extends y{constructor(w){super(w),this._queuedEvents=[],this._mergeFn=w?.merge}fire(w){this.hasListeners()&&(this._queuedEvents.push(w),this._queuedEvents.length===1&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(A=>super.fire(A)),this._queuedEvents=[]}))}}n.MicrotaskEmitter=r;class l{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new y({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(w){const A={event:w,listener:null};this.events.push(A),this.hasListeners&&this.hook(A);const N=()=>{this.hasListeners&&this.unhook(A);const F=this.events.indexOf(A);this.events.splice(F,1)};return(0,i.toDisposable)((0,M.once)(N))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach(w=>this.hook(w))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach(w=>this.unhook(w))}hook(w){w.listener=w.event(A=>this.emitter.fire(A))}unhook(w){w.listener&&w.listener.dispose(),w.listener=null}dispose(){this.emitter.dispose()}}n.EventMultiplexer=l;class o{constructor(){this.buffers=[]}wrapEvent(w){return(A,N,F)=>w(O=>{const q=this.buffers[this.buffers.length-1];q?q.push(()=>A.call(N,O)):A.call(N,O)},void 0,F)}bufferEvents(w){const A=[];this.buffers.push(A);const N=w();return this.buffers.pop(),A.forEach(F=>F()),N}}n.EventBufferer=o;class v{constructor(){this.listening=!1,this.inputEvent=s.None,this.inputEventListener=i.Disposable.None,this.emitter=new y({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(w){this.inputEvent=w,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=w(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}n.Relay=v}),K(te[33],ie([0,1,7]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.CancellationTokenSource=n.CancellationToken=void 0;const M=Object.freeze(function(g,a){const s=setTimeout(g.bind(a),0);return{dispose(){clearTimeout(s)}}});var i;(function(g){function a(s){return s===g.None||s===g.Cancelled||s instanceof u?!0:!s||typeof s!=\"object\"?!1:typeof s.isCancellationRequested==\"boolean\"&&typeof s.onCancellationRequested==\"function\"}g.isCancellationToken=a,g.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:E.Event.None}),g.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:M})})(i||(n.CancellationToken=i={}));class u{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?M:(this._emitter||(this._emitter=new E.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class f{constructor(a){this._token=void 0,this._parentListener=void 0,this._parentListener=a&&a.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new u),this._token}cancel(){this._token?this._token instanceof u&&this._token.cancel():this._token=i.Cancelled}dispose(a=!1){var s;a&&this.cancel(),(s=this._parentListener)===null||s===void 0||s.dispose(),this._token?this._token instanceof u&&this._token.dispose():this._token=i.None}}n.CancellationTokenSource=f}),K(te[5],ie([0,1,27,32]),function(U,n,E,M){\"use strict\";var i;Object.defineProperty(n,\"__esModule\",{value:!0}),n.InvisibleCharacters=n.AmbiguousCharacters=n.noBreakWhitespace=n.getLeftDeleteOffset=n.singleLetterHash=n.containsUppercaseCharacter=n.startsWithUTF8BOM=n.UTF8_BOM_CHARACTER=n.isEmojiImprecise=n.isFullWidthCharacter=n.containsUnusualLineTerminators=n.UNUSUAL_LINE_TERMINATORS=n.isBasicASCII=n.containsRTL=n.getCharContainingOffset=n.prevCharLength=n.nextCharLength=n.GraphemeIterator=n.CodePointIterator=n.getNextCodePoint=n.computeCodePoint=n.isLowSurrogate=n.isHighSurrogate=n.commonSuffixLength=n.commonPrefixLength=n.startsWithIgnoreCase=n.equalsIgnoreCase=n.isUpperAsciiLetter=n.isLowerAsciiLetter=n.isAsciiDigit=n.compareSubstringIgnoreCase=n.compareIgnoreCase=n.compareSubstring=n.compare=n.lastNonWhitespaceIndex=n.getLeadingWhitespace=n.firstNonWhitespaceIndex=n.splitLines=n.regExpLeadsToEndlessLoop=n.createRegExp=n.stripWildcards=n.convertSimple2RegExpPattern=n.rtrim=n.ltrim=n.trim=n.escapeRegExpCharacters=n.escape=n.format=n.isFalsyOrWhitespace=void 0;function u(D){return!D||typeof D!=\"string\"?!0:D.trim().length===0}n.isFalsyOrWhitespace=u;const f=/{(\\d+)}/g;function g(D,...x){return x.length===0?D:D.replace(f,function(B,z){const Z=parseInt(z,10);return isNaN(Z)||Z<0||Z>=x.length?B:x[Z]})}n.format=g;function a(D){return D.replace(/[<>&]/g,function(x){switch(x){case\"<\":return\"&lt;\";case\">\":return\"&gt;\";case\"&\":return\"&amp;\";default:return x}})}n.escape=a;function s(D){return D.replace(/[\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)]/g,\"\\\\$&\")}n.escapeRegExpCharacters=s;function _(D,x=\" \"){const B=t(D,x);return m(B,x)}n.trim=_;function t(D,x){if(!D||!x)return D;const B=x.length;if(B===0||D.length===0)return D;let z=0;for(;D.indexOf(x,z)===z;)z=z+B;return D.substring(z)}n.ltrim=t;function m(D,x){if(!D||!x)return D;const B=x.length,z=D.length;if(B===0||z===0)return D;let Z=z,ce=-1;for(;ce=D.lastIndexOf(x,Z-1),!(ce===-1||ce+B!==Z);){if(ce===0)return\"\";Z=ce}return D.substring(0,Z)}n.rtrim=m;function h(D){return D.replace(/[\\-\\\\\\{\\}\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g,\"\\\\$&\").replace(/[\\*]/g,\".*\")}n.convertSimple2RegExpPattern=h;function c(D){return D.replace(/\\*/g,\"\")}n.stripWildcards=c;function L(D,x,B={}){if(!D)throw new Error(\"Cannot create regex from empty string\");x||(D=s(D)),B.wholeWord&&(/\\B/.test(D.charAt(0))||(D=\"\\\\b\"+D),/\\B/.test(D.charAt(D.length-1))||(D=D+\"\\\\b\"));let z=\"\";return B.global&&(z+=\"g\"),B.matchCase||(z+=\"i\"),B.multiline&&(z+=\"m\"),B.unicode&&(z+=\"u\"),new RegExp(D,z)}n.createRegExp=L;function d(D){return D.source===\"^\"||D.source===\"^$\"||D.source===\"$\"||D.source===\"^\\\\s*$\"?!1:!!(D.exec(\"\")&&D.lastIndex===0)}n.regExpLeadsToEndlessLoop=d;function y(D){return D.split(/\\r\\n|\\r|\\n/)}n.splitLines=y;function C(D){for(let x=0,B=D.length;x<B;x++){const z=D.charCodeAt(x);if(z!==32&&z!==9)return x}return-1}n.firstNonWhitespaceIndex=C;function R(D,x=0,B=D.length){for(let z=x;z<B;z++){const Z=D.charCodeAt(z);if(Z!==32&&Z!==9)return D.substring(x,z)}return D.substring(x,B)}n.getLeadingWhitespace=R;function S(D,x=D.length-1){for(let B=x;B>=0;B--){const z=D.charCodeAt(B);if(z!==32&&z!==9)return B}return-1}n.lastNonWhitespaceIndex=S;function p(D,x){return D<x?-1:D>x?1:0}n.compare=p;function r(D,x,B=0,z=D.length,Z=0,ce=x.length){for(;B<z&&Z<ce;B++,Z++){const we=D.charCodeAt(B),be=x.charCodeAt(Z);if(we<be)return-1;if(we>be)return 1}const de=z-B,Se=ce-Z;return de<Se?-1:de>Se?1:0}n.compareSubstring=r;function l(D,x){return o(D,x,0,D.length,0,x.length)}n.compareIgnoreCase=l;function o(D,x,B=0,z=D.length,Z=0,ce=x.length){for(;B<z&&Z<ce;B++,Z++){let we=D.charCodeAt(B),be=x.charCodeAt(Z);if(we===be)continue;if(we>=128||be>=128)return r(D.toLowerCase(),x.toLowerCase(),B,z,Z,ce);b(we)&&(we-=32),b(be)&&(be-=32);const Le=we-be;if(Le!==0)return Le}const de=z-B,Se=ce-Z;return de<Se?-1:de>Se?1:0}n.compareSubstringIgnoreCase=o;function v(D){return D>=48&&D<=57}n.isAsciiDigit=v;function b(D){return D>=97&&D<=122}n.isLowerAsciiLetter=b;function w(D){return D>=65&&D<=90}n.isUpperAsciiLetter=w;function A(D,x){return D.length===x.length&&o(D,x)===0}n.equalsIgnoreCase=A;function N(D,x){const B=x.length;return x.length>D.length?!1:o(D,x,0,B)===0}n.startsWithIgnoreCase=N;function F(D,x){const B=Math.min(D.length,x.length);let z;for(z=0;z<B;z++)if(D.charCodeAt(z)!==x.charCodeAt(z))return z;return B}n.commonPrefixLength=F;function O(D,x){const B=Math.min(D.length,x.length);let z;const Z=D.length-1,ce=x.length-1;for(z=0;z<B;z++)if(D.charCodeAt(Z-z)!==x.charCodeAt(ce-z))return z;return B}n.commonSuffixLength=O;function q(D){return 55296<=D&&D<=56319}n.isHighSurrogate=q;function T(D){return 56320<=D&&D<=57343}n.isLowSurrogate=T;function W(D,x){return(D-55296<<10)+(x-56320)+65536}n.computeCodePoint=W;function G(D,x,B){const z=D.charCodeAt(B);if(q(z)&&B+1<x){const Z=D.charCodeAt(B+1);if(T(Z))return W(z,Z)}return z}n.getNextCodePoint=G;function ae(D,x){const B=D.charCodeAt(x-1);if(T(B)&&x>1){const z=D.charCodeAt(x-2);if(q(z))return W(z,B)}return B}class re{get offset(){return this._offset}constructor(x,B=0){this._str=x,this._len=x.length,this._offset=B}setOffset(x){this._offset=x}prevCodePoint(){const x=ae(this._str,this._offset);return this._offset-=x>=65536?2:1,x}nextCodePoint(){const x=G(this._str,this._len,this._offset);return this._offset+=x>=65536?2:1,x}eol(){return this._offset>=this._len}}n.CodePointIterator=re;class ne{get offset(){return this._iterator.offset}constructor(x,B=0){this._iterator=new re(x,B)}nextGraphemeLength(){const x=H.getInstance(),B=this._iterator,z=B.offset;let Z=x.getGraphemeBreakType(B.nextCodePoint());for(;!B.eol();){const ce=B.offset,de=x.getGraphemeBreakType(B.nextCodePoint());if(J(Z,de)){B.setOffset(ce);break}Z=de}return B.offset-z}prevGraphemeLength(){const x=H.getInstance(),B=this._iterator,z=B.offset;let Z=x.getGraphemeBreakType(B.prevCodePoint());for(;B.offset>0;){const ce=B.offset,de=x.getGraphemeBreakType(B.prevCodePoint());if(J(de,Z)){B.setOffset(ce);break}Z=de}return z-B.offset}eol(){return this._iterator.eol()}}n.GraphemeIterator=ne;function fe(D,x){return new ne(D,x).nextGraphemeLength()}n.nextCharLength=fe;function $(D,x){return new ne(D,x).prevGraphemeLength()}n.prevCharLength=$;function e(D,x){x>0&&T(D.charCodeAt(x))&&x--;const B=x+fe(D,x);return[B-$(D,B),B]}n.getCharContainingOffset=e;let P;function k(){return/(?:[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u0858\\u085E-\\u088E\\u08A0-\\u08C9\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFD3D\\uFD50-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFEFC]|\\uD802[\\uDC00-\\uDD1B\\uDD20-\\uDE00\\uDE10-\\uDE35\\uDE40-\\uDEE4\\uDEEB-\\uDF35\\uDF40-\\uDFFF]|\\uD803[\\uDC00-\\uDD23\\uDE80-\\uDEA9\\uDEAD-\\uDF45\\uDF51-\\uDF81\\uDF86-\\uDFF6]|\\uD83A[\\uDC00-\\uDCCF\\uDD00-\\uDD43\\uDD4B-\\uDFFF]|\\uD83B[\\uDC00-\\uDEBB])/}function I(D){return P||(P=k()),P.test(D)}n.containsRTL=I;const V=/^[\\t\\n\\r\\x20-\\x7E]*$/;function Q(D){return V.test(D)}n.isBasicASCII=Q,n.UNUSUAL_LINE_TERMINATORS=/[\\u2028\\u2029]/;function ee(D){return n.UNUSUAL_LINE_TERMINATORS.test(D)}n.containsUnusualLineTerminators=ee;function ue(D){return D>=11904&&D<=55215||D>=63744&&D<=64255||D>=65281&&D<=65374}n.isFullWidthCharacter=ue;function he(D){return D>=127462&&D<=127487||D===8986||D===8987||D===9200||D===9203||D>=9728&&D<=10175||D===11088||D===11093||D>=127744&&D<=128591||D>=128640&&D<=128764||D>=128992&&D<=129008||D>=129280&&D<=129535||D>=129648&&D<=129782}n.isEmojiImprecise=he,n.UTF8_BOM_CHARACTER=String.fromCharCode(65279);function ge(D){return!!(D&&D.length>0&&D.charCodeAt(0)===65279)}n.startsWithUTF8BOM=ge;function me(D,x=!1){return D?(x&&(D=D.replace(/\\\\./g,\"\")),D.toLowerCase()!==D):!1}n.containsUppercaseCharacter=me;function ve(D){return D=D%(2*26),D<26?String.fromCharCode(97+D):String.fromCharCode(65+D-26)}n.singleLetterHash=ve;function J(D,x){return D===0?x!==5&&x!==7:D===2&&x===3?!1:D===4||D===2||D===3||x===4||x===2||x===3?!0:!(D===8&&(x===8||x===9||x===11||x===12)||(D===11||D===9)&&(x===9||x===10)||(D===12||D===10)&&x===10||x===5||x===13||x===7||D===1||D===13&&x===14||D===6&&x===6)}class H{static getInstance(){return H._INSTANCE||(H._INSTANCE=new H),H._INSTANCE}constructor(){this._data=X()}getGraphemeBreakType(x){if(x<32)return x===10?3:x===13?2:4;if(x<127)return 0;const B=this._data,z=B.length/3;let Z=1;for(;Z<=z;)if(x<B[3*Z])Z=2*Z;else if(x>B[3*Z+1])Z=2*Z+1;else return B[3*Z+2];return 0}}H._INSTANCE=null;function X(){return JSON.parse(\"[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]\")}function Y(D,x){if(D===0)return 0;const B=se(D,x);if(B!==void 0)return B;const z=new re(x,D);return z.prevCodePoint(),z.offset}n.getLeftDeleteOffset=Y;function se(D,x){const B=new re(x,D);let z=B.prevCodePoint();for(;oe(z)||z===65039||z===8419;){if(B.offset===0)return;z=B.prevCodePoint()}if(!he(z))return;let Z=B.offset;return Z>0&&B.prevCodePoint()===8205&&(Z=B.offset),Z}function oe(D){return 127995<=D&&D<=127999}n.noBreakWhitespace=\"\\xA0\";class j{static getInstance(x){return i.cache.get(Array.from(x))}static getLocales(){return i._locales.value}constructor(x){this.confusableDictionary=x}isAmbiguous(x){return this.confusableDictionary.has(x)}getPrimaryConfusable(x){return this.confusableDictionary.get(x)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}}n.AmbiguousCharacters=j,i=j,j.ambiguousCharacterData=new M.Lazy(()=>JSON.parse('{\"_common\":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],\"_default\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"cs\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"de\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"es\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"fr\":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"it\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"ja\":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],\"ko\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"pl\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"pt-BR\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"qps-ploc\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"ru\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"tr\":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"zh-hans\":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],\"zh-hant\":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}')),j.cache=new E.LRUCachedFunction(D=>{function x(be){const Le=new Map;for(let Ce=0;Ce<be.length;Ce+=2)Le.set(be[Ce],be[Ce+1]);return Le}function B(be,Le){const Ce=new Map(be);for(const[ye,Re]of Le)Ce.set(ye,Re);return Ce}function z(be,Le){if(!be)return Le;const Ce=new Map;for(const[ye,Re]of be)Le.has(ye)&&Ce.set(ye,Re);return Ce}const Z=i.ambiguousCharacterData.value;let ce=D.filter(be=>!be.startsWith(\"_\")&&be in Z);ce.length===0&&(ce=[\"_default\"]);let de;for(const be of ce){const Le=x(Z[be]);de=z(de,Le)}const Se=x(Z._common),we=B(Se,de);return new i(we)}),j._locales=new M.Lazy(()=>Object.keys(i.ambiguousCharacterData.value).filter(D=>!D.startsWith(\"_\")));class le{static getRawData(){return JSON.parse(\"[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]\")}static getData(){return this._data||(this._data=new Set(le.getRawData())),this._data}static isInvisibleCharacter(x){return le.getData().has(x)}static get codePoints(){return le.getData()}}n.InvisibleCharacters=le,le._data=void 0}),K(te[34],ie([0,1,5]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.StringSHA1=n.toHexString=n.stringHash=n.numberHash=n.doHash=n.hash=void 0;function M(L){return i(L,0)}n.hash=M;function i(L,d){switch(typeof L){case\"object\":return L===null?u(349,d):Array.isArray(L)?a(L,d):s(L,d);case\"string\":return g(L,d);case\"boolean\":return f(L,d);case\"number\":return u(L,d);case\"undefined\":return u(937,d);default:return u(617,d)}}n.doHash=i;function u(L,d){return(d<<5)-d+L|0}n.numberHash=u;function f(L,d){return u(L?433:863,d)}function g(L,d){d=u(149417,d);for(let y=0,C=L.length;y<C;y++)d=u(L.charCodeAt(y),d);return d}n.stringHash=g;function a(L,d){return d=u(104579,d),L.reduce((y,C)=>i(C,y),d)}function s(L,d){return d=u(181387,d),Object.keys(L).sort().reduce((y,C)=>(y=g(C,y),i(L[C],y)),d)}function _(L,d,y=32){const C=y-d,R=~((1<<C)-1);return(L<<d|(R&L)>>>C)>>>0}function t(L,d=0,y=L.byteLength,C=0){for(let R=0;R<y;R++)L[d+R]=C}function m(L,d,y=\"0\"){for(;L.length<d;)L=y+L;return L}function h(L,d=32){return L instanceof ArrayBuffer?Array.from(new Uint8Array(L)).map(y=>y.toString(16).padStart(2,\"0\")).join(\"\"):m((L>>>0).toString(16),d/4)}n.toHexString=h;class c{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(64+3),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(d){const y=d.length;if(y===0)return;const C=this._buff;let R=this._buffLen,S=this._leftoverHighSurrogate,p,r;for(S!==0?(p=S,r=-1,S=0):(p=d.charCodeAt(0),r=0);;){let l=p;if(E.isHighSurrogate(p))if(r+1<y){const o=d.charCodeAt(r+1);E.isLowSurrogate(o)?(r++,l=E.computeCodePoint(p,o)):l=65533}else{S=p;break}else E.isLowSurrogate(p)&&(l=65533);if(R=this._push(C,R,l),r++,r<y)p=d.charCodeAt(r);else break}this._buffLen=R,this._leftoverHighSurrogate=S}_push(d,y,C){return C<128?d[y++]=C:C<2048?(d[y++]=192|(C&1984)>>>6,d[y++]=128|(C&63)>>>0):C<65536?(d[y++]=224|(C&61440)>>>12,d[y++]=128|(C&4032)>>>6,d[y++]=128|(C&63)>>>0):(d[y++]=240|(C&1835008)>>>18,d[y++]=128|(C&258048)>>>12,d[y++]=128|(C&4032)>>>6,d[y++]=128|(C&63)>>>0),y>=64&&(this._step(),y-=64,this._totalLen+=64,d[0]=d[64+0],d[1]=d[64+1],d[2]=d[64+2]),y}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),h(this._h0)+h(this._h1)+h(this._h2)+h(this._h3)+h(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,t(this._buff,this._buffLen),this._buffLen>56&&(this._step(),t(this._buff));const d=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(d/4294967296),!1),this._buffDV.setUint32(60,d%4294967296,!1),this._step()}_step(){const d=c._bigBlock32,y=this._buffDV;for(let b=0;b<64;b+=4)d.setUint32(b,y.getUint32(b,!1),!1);for(let b=64;b<320;b+=4)d.setUint32(b,_(d.getUint32(b-12,!1)^d.getUint32(b-32,!1)^d.getUint32(b-56,!1)^d.getUint32(b-64,!1),1),!1);let C=this._h0,R=this._h1,S=this._h2,p=this._h3,r=this._h4,l,o,v;for(let b=0;b<80;b++)b<20?(l=R&S|~R&p,o=1518500249):b<40?(l=R^S^p,o=1859775393):b<60?(l=R&S|R&p|S&p,o=2400959708):(l=R^S^p,o=3395469782),v=_(C,5)+l+r+o+d.getUint32(b*4,!1)&4294967295,r=p,p=S,S=_(R,30),R=C,C=v;this._h0=this._h0+C&4294967295,this._h1=this._h1+R&4294967295,this._h2=this._h2+S&4294967295,this._h3=this._h3+p&4294967295,this._h4=this._h4+r&4294967295}}n.StringSHA1=c,c._bigBlock32=new DataView(new ArrayBuffer(320))}),K(te[21],ie([0,1,30,34]),function(U,n,E,M){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.LcsDiff=n.stringDiff=n.StringDiffSequence=void 0;class i{constructor(t){this.source=t}getElements(){const t=this.source,m=new Int32Array(t.length);for(let h=0,c=t.length;h<c;h++)m[h]=t.charCodeAt(h);return m}}n.StringDiffSequence=i;function u(_,t,m){return new s(new i(_),new i(t)).ComputeDiff(m).changes}n.stringDiff=u;class f{static Assert(t,m){if(!t)throw new Error(m)}}class g{static Copy(t,m,h,c,L){for(let d=0;d<L;d++)h[c+d]=t[m+d]}static Copy2(t,m,h,c,L){for(let d=0;d<L;d++)h[c+d]=t[m+d]}}class a{constructor(){this.m_changes=[],this.m_originalStart=1073741824,this.m_modifiedStart=1073741824,this.m_originalCount=0,this.m_modifiedCount=0}MarkNextChange(){(this.m_originalCount>0||this.m_modifiedCount>0)&&this.m_changes.push(new E.DiffChange(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(t,m){this.m_originalStart=Math.min(this.m_originalStart,t),this.m_modifiedStart=Math.min(this.m_modifiedStart,m),this.m_originalCount++}AddModifiedElement(t,m){this.m_originalStart=Math.min(this.m_originalStart,t),this.m_modifiedStart=Math.min(this.m_modifiedStart,m),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class s{constructor(t,m,h=null){this.ContinueProcessingPredicate=h,this._originalSequence=t,this._modifiedSequence=m;const[c,L,d]=s._getElements(t),[y,C,R]=s._getElements(m);this._hasStrings=d&&R,this._originalStringElements=c,this._originalElementsOrHash=L,this._modifiedStringElements=y,this._modifiedElementsOrHash=C,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(t){return t.length>0&&typeof t[0]==\"string\"}static _getElements(t){const m=t.getElements();if(s._isStringArray(m)){const h=new Int32Array(m.length);for(let c=0,L=m.length;c<L;c++)h[c]=(0,M.stringHash)(m[c],0);return[m,h,!0]}return m instanceof Int32Array?[[],m,!1]:[[],new Int32Array(m),!1]}ElementsAreEqual(t,m){return this._originalElementsOrHash[t]!==this._modifiedElementsOrHash[m]?!1:this._hasStrings?this._originalStringElements[t]===this._modifiedStringElements[m]:!0}ElementsAreStrictEqual(t,m){if(!this.ElementsAreEqual(t,m))return!1;const h=s._getStrictElement(this._originalSequence,t),c=s._getStrictElement(this._modifiedSequence,m);return h===c}static _getStrictElement(t,m){return typeof t.getStrictElement==\"function\"?t.getStrictElement(m):null}OriginalElementsAreEqual(t,m){return this._originalElementsOrHash[t]!==this._originalElementsOrHash[m]?!1:this._hasStrings?this._originalStringElements[t]===this._originalStringElements[m]:!0}ModifiedElementsAreEqual(t,m){return this._modifiedElementsOrHash[t]!==this._modifiedElementsOrHash[m]?!1:this._hasStrings?this._modifiedStringElements[t]===this._modifiedStringElements[m]:!0}ComputeDiff(t){return this._ComputeDiff(0,this._originalElementsOrHash.length-1,0,this._modifiedElementsOrHash.length-1,t)}_ComputeDiff(t,m,h,c,L){const d=[!1];let y=this.ComputeDiffRecursive(t,m,h,c,d);return L&&(y=this.PrettifyChanges(y)),{quitEarly:d[0],changes:y}}ComputeDiffRecursive(t,m,h,c,L){for(L[0]=!1;t<=m&&h<=c&&this.ElementsAreEqual(t,h);)t++,h++;for(;m>=t&&c>=h&&this.ElementsAreEqual(m,c);)m--,c--;if(t>m||h>c){let p;return h<=c?(f.Assert(t===m+1,\"originalStart should only be one more than originalEnd\"),p=[new E.DiffChange(t,0,h,c-h+1)]):t<=m?(f.Assert(h===c+1,\"modifiedStart should only be one more than modifiedEnd\"),p=[new E.DiffChange(t,m-t+1,h,0)]):(f.Assert(t===m+1,\"originalStart should only be one more than originalEnd\"),f.Assert(h===c+1,\"modifiedStart should only be one more than modifiedEnd\"),p=[]),p}const d=[0],y=[0],C=this.ComputeRecursionPoint(t,m,h,c,d,y,L),R=d[0],S=y[0];if(C!==null)return C;if(!L[0]){const p=this.ComputeDiffRecursive(t,R,h,S,L);let r=[];return L[0]?r=[new E.DiffChange(R+1,m-(R+1)+1,S+1,c-(S+1)+1)]:r=this.ComputeDiffRecursive(R+1,m,S+1,c,L),this.ConcatenateChanges(p,r)}return[new E.DiffChange(t,m-t+1,h,c-h+1)]}WALKTRACE(t,m,h,c,L,d,y,C,R,S,p,r,l,o,v,b,w,A){let N=null,F=null,O=new a,q=m,T=h,W=l[0]-b[0]-c,G=-1073741824,ae=this.m_forwardHistory.length-1;do{const re=W+t;re===q||re<T&&R[re-1]<R[re+1]?(p=R[re+1],o=p-W-c,p<G&&O.MarkNextChange(),G=p,O.AddModifiedElement(p+1,o),W=re+1-t):(p=R[re-1]+1,o=p-W-c,p<G&&O.MarkNextChange(),G=p-1,O.AddOriginalElement(p,o+1),W=re-1-t),ae>=0&&(R=this.m_forwardHistory[ae],t=R[0],q=1,T=R.length-1)}while(--ae>=-1);if(N=O.getReverseChanges(),A[0]){let re=l[0]+1,ne=b[0]+1;if(N!==null&&N.length>0){const fe=N[N.length-1];re=Math.max(re,fe.getOriginalEnd()),ne=Math.max(ne,fe.getModifiedEnd())}F=[new E.DiffChange(re,r-re+1,ne,v-ne+1)]}else{O=new a,q=d,T=y,W=l[0]-b[0]-C,G=1073741824,ae=w?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const re=W+L;re===q||re<T&&S[re-1]>=S[re+1]?(p=S[re+1]-1,o=p-W-C,p>G&&O.MarkNextChange(),G=p+1,O.AddOriginalElement(p+1,o+1),W=re+1-L):(p=S[re-1],o=p-W-C,p>G&&O.MarkNextChange(),G=p,O.AddModifiedElement(p+1,o+1),W=re-1-L),ae>=0&&(S=this.m_reverseHistory[ae],L=S[0],q=1,T=S.length-1)}while(--ae>=-1);F=O.getChanges()}return this.ConcatenateChanges(N,F)}ComputeRecursionPoint(t,m,h,c,L,d,y){let C=0,R=0,S=0,p=0,r=0,l=0;t--,h--,L[0]=0,d[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const o=m-t+(c-h),v=o+1,b=new Int32Array(v),w=new Int32Array(v),A=c-h,N=m-t,F=t-h,O=m-c,T=(N-A)%2===0;b[A]=t,w[N]=m,y[0]=!1;for(let W=1;W<=o/2+1;W++){let G=0,ae=0;S=this.ClipDiagonalBound(A-W,W,A,v),p=this.ClipDiagonalBound(A+W,W,A,v);for(let ne=S;ne<=p;ne+=2){ne===S||ne<p&&b[ne-1]<b[ne+1]?C=b[ne+1]:C=b[ne-1]+1,R=C-(ne-A)-F;const fe=C;for(;C<m&&R<c&&this.ElementsAreEqual(C+1,R+1);)C++,R++;if(b[ne]=C,C+R>G+ae&&(G=C,ae=R),!T&&Math.abs(ne-N)<=W-1&&C>=w[ne])return L[0]=C,d[0]=R,fe<=w[ne]&&1447>0&&W<=1447+1?this.WALKTRACE(A,S,p,F,N,r,l,O,b,w,C,m,L,R,c,d,T,y):null}const re=(G-t+(ae-h)-W)/2;if(this.ContinueProcessingPredicate!==null&&!this.ContinueProcessingPredicate(G,re))return y[0]=!0,L[0]=G,d[0]=ae,re>0&&1447>0&&W<=1447+1?this.WALKTRACE(A,S,p,F,N,r,l,O,b,w,C,m,L,R,c,d,T,y):(t++,h++,[new E.DiffChange(t,m-t+1,h,c-h+1)]);r=this.ClipDiagonalBound(N-W,W,N,v),l=this.ClipDiagonalBound(N+W,W,N,v);for(let ne=r;ne<=l;ne+=2){ne===r||ne<l&&w[ne-1]>=w[ne+1]?C=w[ne+1]-1:C=w[ne-1],R=C-(ne-N)-O;const fe=C;for(;C>t&&R>h&&this.ElementsAreEqual(C,R);)C--,R--;if(w[ne]=C,T&&Math.abs(ne-A)<=W&&C<=b[ne])return L[0]=C,d[0]=R,fe>=b[ne]&&1447>0&&W<=1447+1?this.WALKTRACE(A,S,p,F,N,r,l,O,b,w,C,m,L,R,c,d,T,y):null}if(W<=1447){let ne=new Int32Array(p-S+2);ne[0]=A-S+1,g.Copy2(b,S,ne,1,p-S+1),this.m_forwardHistory.push(ne),ne=new Int32Array(l-r+2),ne[0]=N-r+1,g.Copy2(w,r,ne,1,l-r+1),this.m_reverseHistory.push(ne)}}return this.WALKTRACE(A,S,p,F,N,r,l,O,b,w,C,m,L,R,c,d,T,y)}PrettifyChanges(t){for(let m=0;m<t.length;m++){const h=t[m],c=m<t.length-1?t[m+1].originalStart:this._originalElementsOrHash.length,L=m<t.length-1?t[m+1].modifiedStart:this._modifiedElementsOrHash.length,d=h.originalLength>0,y=h.modifiedLength>0;for(;h.originalStart+h.originalLength<c&&h.modifiedStart+h.modifiedLength<L&&(!d||this.OriginalElementsAreEqual(h.originalStart,h.originalStart+h.originalLength))&&(!y||this.ModifiedElementsAreEqual(h.modifiedStart,h.modifiedStart+h.modifiedLength));){const R=this.ElementsAreStrictEqual(h.originalStart,h.modifiedStart);if(this.ElementsAreStrictEqual(h.originalStart+h.originalLength,h.modifiedStart+h.modifiedLength)&&!R)break;h.originalStart++,h.modifiedStart++}const C=[null];if(m<t.length-1&&this.ChangesOverlap(t[m],t[m+1],C)){t[m]=C[0],t.splice(m+1,1),m--;continue}}for(let m=t.length-1;m>=0;m--){const h=t[m];let c=0,L=0;if(m>0){const p=t[m-1];c=p.originalStart+p.originalLength,L=p.modifiedStart+p.modifiedLength}const d=h.originalLength>0,y=h.modifiedLength>0;let C=0,R=this._boundaryScore(h.originalStart,h.originalLength,h.modifiedStart,h.modifiedLength);for(let p=1;;p++){const r=h.originalStart-p,l=h.modifiedStart-p;if(r<c||l<L||d&&!this.OriginalElementsAreEqual(r,r+h.originalLength)||y&&!this.ModifiedElementsAreEqual(l,l+h.modifiedLength))break;const v=(r===c&&l===L?5:0)+this._boundaryScore(r,h.originalLength,l,h.modifiedLength);v>R&&(R=v,C=p)}h.originalStart-=C,h.modifiedStart-=C;const S=[null];if(m>0&&this.ChangesOverlap(t[m-1],t[m],S)){t[m-1]=S[0],t.splice(m,1),m++;continue}}if(this._hasStrings)for(let m=1,h=t.length;m<h;m++){const c=t[m-1],L=t[m],d=L.originalStart-c.originalStart-c.originalLength,y=c.originalStart,C=L.originalStart+L.originalLength,R=C-y,S=c.modifiedStart,p=L.modifiedStart+L.modifiedLength,r=p-S;if(d<5&&R<20&&r<20){const l=this._findBetterContiguousSequence(y,R,S,r,d);if(l){const[o,v]=l;(o!==c.originalStart+c.originalLength||v!==c.modifiedStart+c.modifiedLength)&&(c.originalLength=o-c.originalStart,c.modifiedLength=v-c.modifiedStart,L.originalStart=o+d,L.modifiedStart=v+d,L.originalLength=C-L.originalStart,L.modifiedLength=p-L.modifiedStart)}}}return t}_findBetterContiguousSequence(t,m,h,c,L){if(m<L||c<L)return null;const d=t+m-L+1,y=h+c-L+1;let C=0,R=0,S=0;for(let p=t;p<d;p++)for(let r=h;r<y;r++){const l=this._contiguousSequenceScore(p,r,L);l>0&&l>C&&(C=l,R=p,S=r)}return C>0?[R,S]:null}_contiguousSequenceScore(t,m,h){let c=0;for(let L=0;L<h;L++){if(!this.ElementsAreEqual(t+L,m+L))return 0;c+=this._originalStringElements[t+L].length}return c}_OriginalIsBoundary(t){return t<=0||t>=this._originalElementsOrHash.length-1?!0:this._hasStrings&&/^\\s*$/.test(this._originalStringElements[t])}_OriginalRegionIsBoundary(t,m){if(this._OriginalIsBoundary(t)||this._OriginalIsBoundary(t-1))return!0;if(m>0){const h=t+m;if(this._OriginalIsBoundary(h-1)||this._OriginalIsBoundary(h))return!0}return!1}_ModifiedIsBoundary(t){return t<=0||t>=this._modifiedElementsOrHash.length-1?!0:this._hasStrings&&/^\\s*$/.test(this._modifiedStringElements[t])}_ModifiedRegionIsBoundary(t,m){if(this._ModifiedIsBoundary(t)||this._ModifiedIsBoundary(t-1))return!0;if(m>0){const h=t+m;if(this._ModifiedIsBoundary(h-1)||this._ModifiedIsBoundary(h))return!0}return!1}_boundaryScore(t,m,h,c){const L=this._OriginalRegionIsBoundary(t,m)?1:0,d=this._ModifiedRegionIsBoundary(h,c)?1:0;return L+d}ConcatenateChanges(t,m){const h=[];if(t.length===0||m.length===0)return m.length>0?m:t;if(this.ChangesOverlap(t[t.length-1],m[0],h)){const c=new Array(t.length+m.length-1);return g.Copy(t,0,c,0,t.length-1),c[t.length-1]=h[0],g.Copy(m,1,c,t.length,m.length-1),c}else{const c=new Array(t.length+m.length);return g.Copy(t,0,c,0,t.length),g.Copy(m,0,c,t.length,m.length),c}}ChangesOverlap(t,m,h){if(f.Assert(t.originalStart<=m.originalStart,\"Left change is not less than or equal to right change\"),f.Assert(t.modifiedStart<=m.modifiedStart,\"Left change is not less than or equal to right change\"),t.originalStart+t.originalLength>=m.originalStart||t.modifiedStart+t.modifiedLength>=m.modifiedStart){const c=t.originalStart;let L=t.originalLength;const d=t.modifiedStart;let y=t.modifiedLength;return t.originalStart+t.originalLength>=m.originalStart&&(L=m.originalStart+m.originalLength-t.originalStart),t.modifiedStart+t.modifiedLength>=m.modifiedStart&&(y=m.modifiedStart+m.modifiedLength-t.modifiedStart),h[0]=new E.DiffChange(c,L,d,y),!0}else return h[0]=null,!1}ClipDiagonalBound(t,m,h,c){if(t>=0&&t<c)return t;const L=h,d=c-h-1,y=m%2===0;if(t<0){const C=L%2===0;return y===C?0:1}else{const C=d%2===0;return y===C?c-1:c-2}}}n.LcsDiff=s}),K(te[22],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.validateConstraint=n.validateConstraints=n.isFunction=n.assertIsDefined=n.assertType=n.isUndefinedOrNull=n.isDefined=n.isUndefined=n.isBoolean=n.isIterable=n.isNumber=n.isTypedArray=n.isObject=n.isString=void 0;function E(d){return typeof d==\"string\"}n.isString=E;function M(d){return typeof d==\"object\"&&d!==null&&!Array.isArray(d)&&!(d instanceof RegExp)&&!(d instanceof Date)}n.isObject=M;function i(d){const y=Object.getPrototypeOf(Uint8Array);return typeof d==\"object\"&&d instanceof y}n.isTypedArray=i;function u(d){return typeof d==\"number\"&&!isNaN(d)}n.isNumber=u;function f(d){return!!d&&typeof d[Symbol.iterator]==\"function\"}n.isIterable=f;function g(d){return d===!0||d===!1}n.isBoolean=g;function a(d){return typeof d>\"u\"}n.isUndefined=a;function s(d){return!_(d)}n.isDefined=s;function _(d){return a(d)||d===null}n.isUndefinedOrNull=_;function t(d,y){if(!d)throw new Error(y?`Unexpected type, expected '${y}'`:\"Unexpected type\")}n.assertType=t;function m(d){if(_(d))throw new Error(\"Assertion Failed: argument is undefined or null\");return d}n.assertIsDefined=m;function h(d){return typeof d==\"function\"}n.isFunction=h;function c(d,y){const C=Math.min(d.length,y.length);for(let R=0;R<C;R++)L(d[R],y[R])}n.validateConstraints=c;function L(d,y){if(E(y)){if(typeof d!==y)throw new Error(`argument does not match constraint: typeof ${y}`)}else if(h(y)){try{if(d instanceof y)return}catch{}if(!_(d)&&d.constructor===y||y.length===1&&y.call(void 0,d)===!0)return;throw new Error(\"argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true\")}}n.validateConstraint=L}),K(te[35],ie([0,1,22]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Codicon=n.getCodiconFontCharacters=void 0;const M=Object.create(null);function i(f,g){if((0,E.isString)(g)){const a=M[g];if(a===void 0)throw new Error(`${f} references an unknown codicon: ${g}`);g=a}return M[f]=g,{id:f}}function u(){return M}n.getCodiconFontCharacters=u,n.Codicon={add:i(\"add\",6e4),plus:i(\"plus\",6e4),gistNew:i(\"gist-new\",6e4),repoCreate:i(\"repo-create\",6e4),lightbulb:i(\"lightbulb\",60001),lightBulb:i(\"light-bulb\",60001),repo:i(\"repo\",60002),repoDelete:i(\"repo-delete\",60002),gistFork:i(\"gist-fork\",60003),repoForked:i(\"repo-forked\",60003),gitPullRequest:i(\"git-pull-request\",60004),gitPullRequestAbandoned:i(\"git-pull-request-abandoned\",60004),recordKeys:i(\"record-keys\",60005),keyboard:i(\"keyboard\",60005),tag:i(\"tag\",60006),tagAdd:i(\"tag-add\",60006),tagRemove:i(\"tag-remove\",60006),gitPullRequestLabel:i(\"git-pull-request-label\",60006),person:i(\"person\",60007),personFollow:i(\"person-follow\",60007),personOutline:i(\"person-outline\",60007),personFilled:i(\"person-filled\",60007),gitBranch:i(\"git-branch\",60008),gitBranchCreate:i(\"git-branch-create\",60008),gitBranchDelete:i(\"git-branch-delete\",60008),sourceControl:i(\"source-control\",60008),mirror:i(\"mirror\",60009),mirrorPublic:i(\"mirror-public\",60009),star:i(\"star\",60010),starAdd:i(\"star-add\",60010),starDelete:i(\"star-delete\",60010),starEmpty:i(\"star-empty\",60010),comment:i(\"comment\",60011),commentAdd:i(\"comment-add\",60011),alert:i(\"alert\",60012),warning:i(\"warning\",60012),search:i(\"search\",60013),searchSave:i(\"search-save\",60013),logOut:i(\"log-out\",60014),signOut:i(\"sign-out\",60014),logIn:i(\"log-in\",60015),signIn:i(\"sign-in\",60015),eye:i(\"eye\",60016),eyeUnwatch:i(\"eye-unwatch\",60016),eyeWatch:i(\"eye-watch\",60016),circleFilled:i(\"circle-filled\",60017),primitiveDot:i(\"primitive-dot\",60017),closeDirty:i(\"close-dirty\",60017),debugBreakpoint:i(\"debug-breakpoint\",60017),debugBreakpointDisabled:i(\"debug-breakpoint-disabled\",60017),debugHint:i(\"debug-hint\",60017),primitiveSquare:i(\"primitive-square\",60018),edit:i(\"edit\",60019),pencil:i(\"pencil\",60019),info:i(\"info\",60020),issueOpened:i(\"issue-opened\",60020),gistPrivate:i(\"gist-private\",60021),gitForkPrivate:i(\"git-fork-private\",60021),lock:i(\"lock\",60021),mirrorPrivate:i(\"mirror-private\",60021),close:i(\"close\",60022),removeClose:i(\"remove-close\",60022),x:i(\"x\",60022),repoSync:i(\"repo-sync\",60023),sync:i(\"sync\",60023),clone:i(\"clone\",60024),desktopDownload:i(\"desktop-download\",60024),beaker:i(\"beaker\",60025),microscope:i(\"microscope\",60025),vm:i(\"vm\",60026),deviceDesktop:i(\"device-desktop\",60026),file:i(\"file\",60027),fileText:i(\"file-text\",60027),more:i(\"more\",60028),ellipsis:i(\"ellipsis\",60028),kebabHorizontal:i(\"kebab-horizontal\",60028),mailReply:i(\"mail-reply\",60029),reply:i(\"reply\",60029),organization:i(\"organization\",60030),organizationFilled:i(\"organization-filled\",60030),organizationOutline:i(\"organization-outline\",60030),newFile:i(\"new-file\",60031),fileAdd:i(\"file-add\",60031),newFolder:i(\"new-folder\",60032),fileDirectoryCreate:i(\"file-directory-create\",60032),trash:i(\"trash\",60033),trashcan:i(\"trashcan\",60033),history:i(\"history\",60034),clock:i(\"clock\",60034),folder:i(\"folder\",60035),fileDirectory:i(\"file-directory\",60035),symbolFolder:i(\"symbol-folder\",60035),logoGithub:i(\"logo-github\",60036),markGithub:i(\"mark-github\",60036),github:i(\"github\",60036),terminal:i(\"terminal\",60037),console:i(\"console\",60037),repl:i(\"repl\",60037),zap:i(\"zap\",60038),symbolEvent:i(\"symbol-event\",60038),error:i(\"error\",60039),stop:i(\"stop\",60039),variable:i(\"variable\",60040),symbolVariable:i(\"symbol-variable\",60040),array:i(\"array\",60042),symbolArray:i(\"symbol-array\",60042),symbolModule:i(\"symbol-module\",60043),symbolPackage:i(\"symbol-package\",60043),symbolNamespace:i(\"symbol-namespace\",60043),symbolObject:i(\"symbol-object\",60043),symbolMethod:i(\"symbol-method\",60044),symbolFunction:i(\"symbol-function\",60044),symbolConstructor:i(\"symbol-constructor\",60044),symbolBoolean:i(\"symbol-boolean\",60047),symbolNull:i(\"symbol-null\",60047),symbolNumeric:i(\"symbol-numeric\",60048),symbolNumber:i(\"symbol-number\",60048),symbolStructure:i(\"symbol-structure\",60049),symbolStruct:i(\"symbol-struct\",60049),symbolParameter:i(\"symbol-parameter\",60050),symbolTypeParameter:i(\"symbol-type-parameter\",60050),symbolKey:i(\"symbol-key\",60051),symbolText:i(\"symbol-text\",60051),symbolReference:i(\"symbol-reference\",60052),goToFile:i(\"go-to-file\",60052),symbolEnum:i(\"symbol-enum\",60053),symbolValue:i(\"symbol-value\",60053),symbolRuler:i(\"symbol-ruler\",60054),symbolUnit:i(\"symbol-unit\",60054),activateBreakpoints:i(\"activate-breakpoints\",60055),archive:i(\"archive\",60056),arrowBoth:i(\"arrow-both\",60057),arrowDown:i(\"arrow-down\",60058),arrowLeft:i(\"arrow-left\",60059),arrowRight:i(\"arrow-right\",60060),arrowSmallDown:i(\"arrow-small-down\",60061),arrowSmallLeft:i(\"arrow-small-left\",60062),arrowSmallRight:i(\"arrow-small-right\",60063),arrowSmallUp:i(\"arrow-small-up\",60064),arrowUp:i(\"arrow-up\",60065),bell:i(\"bell\",60066),bold:i(\"bold\",60067),book:i(\"book\",60068),bookmark:i(\"bookmark\",60069),debugBreakpointConditionalUnverified:i(\"debug-breakpoint-conditional-unverified\",60070),debugBreakpointConditional:i(\"debug-breakpoint-conditional\",60071),debugBreakpointConditionalDisabled:i(\"debug-breakpoint-conditional-disabled\",60071),debugBreakpointDataUnverified:i(\"debug-breakpoint-data-unverified\",60072),debugBreakpointData:i(\"debug-breakpoint-data\",60073),debugBreakpointDataDisabled:i(\"debug-breakpoint-data-disabled\",60073),debugBreakpointLogUnverified:i(\"debug-breakpoint-log-unverified\",60074),debugBreakpointLog:i(\"debug-breakpoint-log\",60075),debugBreakpointLogDisabled:i(\"debug-breakpoint-log-disabled\",60075),briefcase:i(\"briefcase\",60076),broadcast:i(\"broadcast\",60077),browser:i(\"browser\",60078),bug:i(\"bug\",60079),calendar:i(\"calendar\",60080),caseSensitive:i(\"case-sensitive\",60081),check:i(\"check\",60082),checklist:i(\"checklist\",60083),chevronDown:i(\"chevron-down\",60084),dropDownButton:i(\"drop-down-button\",60084),chevronLeft:i(\"chevron-left\",60085),chevronRight:i(\"chevron-right\",60086),chevronUp:i(\"chevron-up\",60087),chromeClose:i(\"chrome-close\",60088),chromeMaximize:i(\"chrome-maximize\",60089),chromeMinimize:i(\"chrome-minimize\",60090),chromeRestore:i(\"chrome-restore\",60091),circle:i(\"circle\",60092),circleOutline:i(\"circle-outline\",60092),debugBreakpointUnverified:i(\"debug-breakpoint-unverified\",60092),circleSlash:i(\"circle-slash\",60093),circuitBoard:i(\"circuit-board\",60094),clearAll:i(\"clear-all\",60095),clippy:i(\"clippy\",60096),closeAll:i(\"close-all\",60097),cloudDownload:i(\"cloud-download\",60098),cloudUpload:i(\"cloud-upload\",60099),code:i(\"code\",60100),collapseAll:i(\"collapse-all\",60101),colorMode:i(\"color-mode\",60102),commentDiscussion:i(\"comment-discussion\",60103),compareChanges:i(\"compare-changes\",60157),creditCard:i(\"credit-card\",60105),dash:i(\"dash\",60108),dashboard:i(\"dashboard\",60109),database:i(\"database\",60110),debugContinue:i(\"debug-continue\",60111),debugDisconnect:i(\"debug-disconnect\",60112),debugPause:i(\"debug-pause\",60113),debugRestart:i(\"debug-restart\",60114),debugStart:i(\"debug-start\",60115),debugStepInto:i(\"debug-step-into\",60116),debugStepOut:i(\"debug-step-out\",60117),debugStepOver:i(\"debug-step-over\",60118),debugStop:i(\"debug-stop\",60119),debug:i(\"debug\",60120),deviceCameraVideo:i(\"device-camera-video\",60121),deviceCamera:i(\"device-camera\",60122),deviceMobile:i(\"device-mobile\",60123),diffAdded:i(\"diff-added\",60124),diffIgnored:i(\"diff-ignored\",60125),diffModified:i(\"diff-modified\",60126),diffRemoved:i(\"diff-removed\",60127),diffRenamed:i(\"diff-renamed\",60128),diff:i(\"diff\",60129),discard:i(\"discard\",60130),editorLayout:i(\"editor-layout\",60131),emptyWindow:i(\"empty-window\",60132),exclude:i(\"exclude\",60133),extensions:i(\"extensions\",60134),eyeClosed:i(\"eye-closed\",60135),fileBinary:i(\"file-binary\",60136),fileCode:i(\"file-code\",60137),fileMedia:i(\"file-media\",60138),filePdf:i(\"file-pdf\",60139),fileSubmodule:i(\"file-submodule\",60140),fileSymlinkDirectory:i(\"file-symlink-directory\",60141),fileSymlinkFile:i(\"file-symlink-file\",60142),fileZip:i(\"file-zip\",60143),files:i(\"files\",60144),filter:i(\"filter\",60145),flame:i(\"flame\",60146),foldDown:i(\"fold-down\",60147),foldUp:i(\"fold-up\",60148),fold:i(\"fold\",60149),folderActive:i(\"folder-active\",60150),folderOpened:i(\"folder-opened\",60151),gear:i(\"gear\",60152),gift:i(\"gift\",60153),gistSecret:i(\"gist-secret\",60154),gist:i(\"gist\",60155),gitCommit:i(\"git-commit\",60156),gitCompare:i(\"git-compare\",60157),gitMerge:i(\"git-merge\",60158),githubAction:i(\"github-action\",60159),githubAlt:i(\"github-alt\",60160),globe:i(\"globe\",60161),grabber:i(\"grabber\",60162),graph:i(\"graph\",60163),gripper:i(\"gripper\",60164),heart:i(\"heart\",60165),home:i(\"home\",60166),horizontalRule:i(\"horizontal-rule\",60167),hubot:i(\"hubot\",60168),inbox:i(\"inbox\",60169),issueClosed:i(\"issue-closed\",60324),issueReopened:i(\"issue-reopened\",60171),issues:i(\"issues\",60172),italic:i(\"italic\",60173),jersey:i(\"jersey\",60174),json:i(\"json\",60175),bracket:i(\"bracket\",60175),kebabVertical:i(\"kebab-vertical\",60176),key:i(\"key\",60177),law:i(\"law\",60178),lightbulbAutofix:i(\"lightbulb-autofix\",60179),linkExternal:i(\"link-external\",60180),link:i(\"link\",60181),listOrdered:i(\"list-ordered\",60182),listUnordered:i(\"list-unordered\",60183),liveShare:i(\"live-share\",60184),loading:i(\"loading\",60185),location:i(\"location\",60186),mailRead:i(\"mail-read\",60187),mail:i(\"mail\",60188),markdown:i(\"markdown\",60189),megaphone:i(\"megaphone\",60190),mention:i(\"mention\",60191),milestone:i(\"milestone\",60192),gitPullRequestMilestone:i(\"git-pull-request-milestone\",60192),mortarBoard:i(\"mortar-board\",60193),move:i(\"move\",60194),multipleWindows:i(\"multiple-windows\",60195),mute:i(\"mute\",60196),noNewline:i(\"no-newline\",60197),note:i(\"note\",60198),octoface:i(\"octoface\",60199),openPreview:i(\"open-preview\",60200),package_:i(\"package\",60201),paintcan:i(\"paintcan\",60202),pin:i(\"pin\",60203),play:i(\"play\",60204),run:i(\"run\",60204),plug:i(\"plug\",60205),preserveCase:i(\"preserve-case\",60206),preview:i(\"preview\",60207),project:i(\"project\",60208),pulse:i(\"pulse\",60209),question:i(\"question\",60210),quote:i(\"quote\",60211),radioTower:i(\"radio-tower\",60212),reactions:i(\"reactions\",60213),references:i(\"references\",60214),refresh:i(\"refresh\",60215),regex:i(\"regex\",60216),remoteExplorer:i(\"remote-explorer\",60217),remote:i(\"remote\",60218),remove:i(\"remove\",60219),replaceAll:i(\"replace-all\",60220),replace:i(\"replace\",60221),repoClone:i(\"repo-clone\",60222),repoForcePush:i(\"repo-force-push\",60223),repoPull:i(\"repo-pull\",60224),repoPush:i(\"repo-push\",60225),report:i(\"report\",60226),requestChanges:i(\"request-changes\",60227),rocket:i(\"rocket\",60228),rootFolderOpened:i(\"root-folder-opened\",60229),rootFolder:i(\"root-folder\",60230),rss:i(\"rss\",60231),ruby:i(\"ruby\",60232),saveAll:i(\"save-all\",60233),saveAs:i(\"save-as\",60234),save:i(\"save\",60235),screenFull:i(\"screen-full\",60236),screenNormal:i(\"screen-normal\",60237),searchStop:i(\"search-stop\",60238),server:i(\"server\",60240),settingsGear:i(\"settings-gear\",60241),settings:i(\"settings\",60242),shield:i(\"shield\",60243),smiley:i(\"smiley\",60244),sortPrecedence:i(\"sort-precedence\",60245),splitHorizontal:i(\"split-horizontal\",60246),splitVertical:i(\"split-vertical\",60247),squirrel:i(\"squirrel\",60248),starFull:i(\"star-full\",60249),starHalf:i(\"star-half\",60250),symbolClass:i(\"symbol-class\",60251),symbolColor:i(\"symbol-color\",60252),symbolCustomColor:i(\"symbol-customcolor\",60252),symbolConstant:i(\"symbol-constant\",60253),symbolEnumMember:i(\"symbol-enum-member\",60254),symbolField:i(\"symbol-field\",60255),symbolFile:i(\"symbol-file\",60256),symbolInterface:i(\"symbol-interface\",60257),symbolKeyword:i(\"symbol-keyword\",60258),symbolMisc:i(\"symbol-misc\",60259),symbolOperator:i(\"symbol-operator\",60260),symbolProperty:i(\"symbol-property\",60261),wrench:i(\"wrench\",60261),wrenchSubaction:i(\"wrench-subaction\",60261),symbolSnippet:i(\"symbol-snippet\",60262),tasklist:i(\"tasklist\",60263),telescope:i(\"telescope\",60264),textSize:i(\"text-size\",60265),threeBars:i(\"three-bars\",60266),thumbsdown:i(\"thumbsdown\",60267),thumbsup:i(\"thumbsup\",60268),tools:i(\"tools\",60269),triangleDown:i(\"triangle-down\",60270),triangleLeft:i(\"triangle-left\",60271),triangleRight:i(\"triangle-right\",60272),triangleUp:i(\"triangle-up\",60273),twitter:i(\"twitter\",60274),unfold:i(\"unfold\",60275),unlock:i(\"unlock\",60276),unmute:i(\"unmute\",60277),unverified:i(\"unverified\",60278),verified:i(\"verified\",60279),versions:i(\"versions\",60280),vmActive:i(\"vm-active\",60281),vmOutline:i(\"vm-outline\",60282),vmRunning:i(\"vm-running\",60283),watch:i(\"watch\",60284),whitespace:i(\"whitespace\",60285),wholeWord:i(\"whole-word\",60286),window:i(\"window\",60287),wordWrap:i(\"word-wrap\",60288),zoomIn:i(\"zoom-in\",60289),zoomOut:i(\"zoom-out\",60290),listFilter:i(\"list-filter\",60291),listFlat:i(\"list-flat\",60292),listSelection:i(\"list-selection\",60293),selection:i(\"selection\",60293),listTree:i(\"list-tree\",60294),debugBreakpointFunctionUnverified:i(\"debug-breakpoint-function-unverified\",60295),debugBreakpointFunction:i(\"debug-breakpoint-function\",60296),debugBreakpointFunctionDisabled:i(\"debug-breakpoint-function-disabled\",60296),debugStackframeActive:i(\"debug-stackframe-active\",60297),circleSmallFilled:i(\"circle-small-filled\",60298),debugStackframeDot:i(\"debug-stackframe-dot\",60298),debugStackframe:i(\"debug-stackframe\",60299),debugStackframeFocused:i(\"debug-stackframe-focused\",60299),debugBreakpointUnsupported:i(\"debug-breakpoint-unsupported\",60300),symbolString:i(\"symbol-string\",60301),debugReverseContinue:i(\"debug-reverse-continue\",60302),debugStepBack:i(\"debug-step-back\",60303),debugRestartFrame:i(\"debug-restart-frame\",60304),callIncoming:i(\"call-incoming\",60306),callOutgoing:i(\"call-outgoing\",60307),menu:i(\"menu\",60308),expandAll:i(\"expand-all\",60309),feedback:i(\"feedback\",60310),gitPullRequestReviewer:i(\"git-pull-request-reviewer\",60310),groupByRefType:i(\"group-by-ref-type\",60311),ungroupByRefType:i(\"ungroup-by-ref-type\",60312),account:i(\"account\",60313),gitPullRequestAssignee:i(\"git-pull-request-assignee\",60313),bellDot:i(\"bell-dot\",60314),debugConsole:i(\"debug-console\",60315),library:i(\"library\",60316),output:i(\"output\",60317),runAll:i(\"run-all\",60318),syncIgnored:i(\"sync-ignored\",60319),pinned:i(\"pinned\",60320),githubInverted:i(\"github-inverted\",60321),debugAlt:i(\"debug-alt\",60305),serverProcess:i(\"server-process\",60322),serverEnvironment:i(\"server-environment\",60323),pass:i(\"pass\",60324),stopCircle:i(\"stop-circle\",60325),playCircle:i(\"play-circle\",60326),record:i(\"record\",60327),debugAltSmall:i(\"debug-alt-small\",60328),vmConnect:i(\"vm-connect\",60329),cloud:i(\"cloud\",60330),merge:i(\"merge\",60331),exportIcon:i(\"export\",60332),graphLeft:i(\"graph-left\",60333),magnet:i(\"magnet\",60334),notebook:i(\"notebook\",60335),redo:i(\"redo\",60336),checkAll:i(\"check-all\",60337),pinnedDirty:i(\"pinned-dirty\",60338),passFilled:i(\"pass-filled\",60339),circleLargeFilled:i(\"circle-large-filled\",60340),circleLarge:i(\"circle-large\",60341),circleLargeOutline:i(\"circle-large-outline\",60341),combine:i(\"combine\",60342),gather:i(\"gather\",60342),table:i(\"table\",60343),variableGroup:i(\"variable-group\",60344),typeHierarchy:i(\"type-hierarchy\",60345),typeHierarchySub:i(\"type-hierarchy-sub\",60346),typeHierarchySuper:i(\"type-hierarchy-super\",60347),gitPullRequestCreate:i(\"git-pull-request-create\",60348),runAbove:i(\"run-above\",60349),runBelow:i(\"run-below\",60350),notebookTemplate:i(\"notebook-template\",60351),debugRerun:i(\"debug-rerun\",60352),workspaceTrusted:i(\"workspace-trusted\",60353),workspaceUntrusted:i(\"workspace-untrusted\",60354),workspaceUnspecified:i(\"workspace-unspecified\",60355),terminalCmd:i(\"terminal-cmd\",60356),terminalDebian:i(\"terminal-debian\",60357),terminalLinux:i(\"terminal-linux\",60358),terminalPowershell:i(\"terminal-powershell\",60359),terminalTmux:i(\"terminal-tmux\",60360),terminalUbuntu:i(\"terminal-ubuntu\",60361),terminalBash:i(\"terminal-bash\",60362),arrowSwap:i(\"arrow-swap\",60363),copy:i(\"copy\",60364),personAdd:i(\"person-add\",60365),filterFilled:i(\"filter-filled\",60366),wand:i(\"wand\",60367),debugLineByLine:i(\"debug-line-by-line\",60368),inspect:i(\"inspect\",60369),layers:i(\"layers\",60370),layersDot:i(\"layers-dot\",60371),layersActive:i(\"layers-active\",60372),compass:i(\"compass\",60373),compassDot:i(\"compass-dot\",60374),compassActive:i(\"compass-active\",60375),azure:i(\"azure\",60376),issueDraft:i(\"issue-draft\",60377),gitPullRequestClosed:i(\"git-pull-request-closed\",60378),gitPullRequestDraft:i(\"git-pull-request-draft\",60379),debugAll:i(\"debug-all\",60380),debugCoverage:i(\"debug-coverage\",60381),runErrors:i(\"run-errors\",60382),folderLibrary:i(\"folder-library\",60383),debugContinueSmall:i(\"debug-continue-small\",60384),beakerStop:i(\"beaker-stop\",60385),graphLine:i(\"graph-line\",60386),graphScatter:i(\"graph-scatter\",60387),pieChart:i(\"pie-chart\",60388),bracketDot:i(\"bracket-dot\",60389),bracketError:i(\"bracket-error\",60390),lockSmall:i(\"lock-small\",60391),azureDevops:i(\"azure-devops\",60392),verifiedFilled:i(\"verified-filled\",60393),newLine:i(\"newline\",60394),layout:i(\"layout\",60395),layoutActivitybarLeft:i(\"layout-activitybar-left\",60396),layoutActivitybarRight:i(\"layout-activitybar-right\",60397),layoutPanelLeft:i(\"layout-panel-left\",60398),layoutPanelCenter:i(\"layout-panel-center\",60399),layoutPanelJustify:i(\"layout-panel-justify\",60400),layoutPanelRight:i(\"layout-panel-right\",60401),layoutPanel:i(\"layout-panel\",60402),layoutSidebarLeft:i(\"layout-sidebar-left\",60403),layoutSidebarRight:i(\"layout-sidebar-right\",60404),layoutStatusbar:i(\"layout-statusbar\",60405),layoutMenubar:i(\"layout-menubar\",60406),layoutCentered:i(\"layout-centered\",60407),layoutSidebarRightOff:i(\"layout-sidebar-right-off\",60416),layoutPanelOff:i(\"layout-panel-off\",60417),layoutSidebarLeftOff:i(\"layout-sidebar-left-off\",60418),target:i(\"target\",60408),indent:i(\"indent\",60409),recordSmall:i(\"record-small\",60410),errorSmall:i(\"error-small\",60411),arrowCircleDown:i(\"arrow-circle-down\",60412),arrowCircleLeft:i(\"arrow-circle-left\",60413),arrowCircleRight:i(\"arrow-circle-right\",60414),arrowCircleUp:i(\"arrow-circle-up\",60415),heartFilled:i(\"heart-filled\",60420),map:i(\"map\",60421),mapFilled:i(\"map-filled\",60422),circleSmall:i(\"circle-small\",60423),bellSlash:i(\"bell-slash\",60424),bellSlashDot:i(\"bell-slash-dot\",60425),commentUnresolved:i(\"comment-unresolved\",60426),gitPullRequestGoToChanges:i(\"git-pull-request-go-to-changes\",60427),gitPullRequestNewChanges:i(\"git-pull-request-new-changes\",60428),searchFuzzy:i(\"search-fuzzy\",60429),commentDraft:i(\"comment-draft\",60430),send:i(\"send\",60431),sparkle:i(\"sparkle\",60432),insert:i(\"insert\",60433),mic:i(\"mic\",60434),dialogError:i(\"dialog-error\",\"error\"),dialogWarning:i(\"dialog-warning\",\"warning\"),dialogInfo:i(\"dialog-info\",\"info\"),dialogClose:i(\"dialog-close\",\"close\"),treeItemExpanded:i(\"tree-item-expanded\",\"chevron-down\"),treeFilterOnTypeOn:i(\"tree-filter-on-type-on\",\"list-filter\"),treeFilterOnTypeOff:i(\"tree-filter-on-type-off\",\"list-selection\"),treeFilterClear:i(\"tree-filter-clear\",\"close\"),treeItemLoading:i(\"tree-item-loading\",\"loading\"),menuSelection:i(\"menu-selection\",\"check\"),menuSubmenu:i(\"menu-submenu\",\"chevron-right\"),menuBarMore:i(\"menubar-more\",\"more\"),scrollbarButtonLeft:i(\"scrollbar-button-left\",\"triangle-left\"),scrollbarButtonRight:i(\"scrollbar-button-right\",\"triangle-right\"),scrollbarButtonUp:i(\"scrollbar-button-up\",\"triangle-up\"),scrollbarButtonDown:i(\"scrollbar-button-down\",\"triangle-down\"),toolBarMore:i(\"toolbar-more\",\"more\"),quickInputBack:i(\"quick-input-back\",\"arrow-left\")}}),K(te[11],ie([0,1,22]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.createProxyObject=n.getAllMethodNames=n.getAllPropertyNames=n.equals=n.mixin=n.cloneAndChange=n.deepFreeze=n.deepClone=void 0;function M(h){if(!h||typeof h!=\"object\"||h instanceof RegExp)return h;const c=Array.isArray(h)?[]:{};return Object.entries(h).forEach(([L,d])=>{c[L]=d&&typeof d==\"object\"?M(d):d}),c}n.deepClone=M;function i(h){if(!h||typeof h!=\"object\")return h;const c=[h];for(;c.length>0;){const L=c.shift();Object.freeze(L);for(const d in L)if(u.call(L,d)){const y=L[d];typeof y==\"object\"&&!Object.isFrozen(y)&&!(0,E.isTypedArray)(y)&&c.push(y)}}return h}n.deepFreeze=i;const u=Object.prototype.hasOwnProperty;function f(h,c){return g(h,c,new Set)}n.cloneAndChange=f;function g(h,c,L){if((0,E.isUndefinedOrNull)(h))return h;const d=c(h);if(typeof d<\"u\")return d;if(Array.isArray(h)){const y=[];for(const C of h)y.push(g(C,c,L));return y}if((0,E.isObject)(h)){if(L.has(h))throw new Error(\"Cannot clone recursive data-structure\");L.add(h);const y={};for(const C in h)u.call(h,C)&&(y[C]=g(h[C],c,L));return L.delete(h),y}return h}function a(h,c,L=!0){return(0,E.isObject)(h)?((0,E.isObject)(c)&&Object.keys(c).forEach(d=>{d in h?L&&((0,E.isObject)(h[d])&&(0,E.isObject)(c[d])?a(h[d],c[d],L):h[d]=c[d]):h[d]=c[d]}),h):c}n.mixin=a;function s(h,c){if(h===c)return!0;if(h==null||c===null||c===void 0||typeof h!=typeof c||typeof h!=\"object\"||Array.isArray(h)!==Array.isArray(c))return!1;let L,d;if(Array.isArray(h)){if(h.length!==c.length)return!1;for(L=0;L<h.length;L++)if(!s(h[L],c[L]))return!1}else{const y=[];for(d in h)y.push(d);y.sort();const C=[];for(d in c)C.push(d);if(C.sort(),!s(y,C))return!1;for(L=0;L<y.length;L++)if(!s(h[y[L]],c[y[L]]))return!1}return!0}n.equals=s;function _(h){let c=[];for(;Object.prototype!==h;)c=c.concat(Object.getOwnPropertyNames(h)),h=Object.getPrototypeOf(h);return c}n.getAllPropertyNames=_;function t(h){const c=[];for(const L of _(h))typeof h[L]==\"function\"&&c.push(L);return c}n.getAllMethodNames=t;function m(h,c){const L=y=>function(){const C=Array.prototype.slice.call(arguments,0);return c(y,C)},d={};for(const y of h)d[y]=L(y);return d}n.createProxyObject=m}),K(te[23],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.toUint32=n.toUint8=void 0;function E(i){return i<0?0:i>255?255:i|0}n.toUint8=E;function M(i){return i<0?0:i>4294967295?4294967295:i|0}n.toUint32=M}),K(te[24],ie([0,1,23]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.CharacterSet=n.CharacterClassifier=void 0;class M{constructor(f){const g=(0,E.toUint8)(f);this._defaultValue=g,this._asciiMap=M._createAsciiMap(g),this._map=new Map}static _createAsciiMap(f){const g=new Uint8Array(256);return g.fill(f),g}set(f,g){const a=(0,E.toUint8)(g);f>=0&&f<256?this._asciiMap[f]=a:this._map.set(f,a)}get(f){return f>=0&&f<256?this._asciiMap[f]:this._map.get(f)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}n.CharacterClassifier=M;class i{constructor(){this._actual=new M(0)}add(f){this._actual.set(f,1)}has(f){return this._actual.get(f)===1}clear(){return this._actual.clear()}}n.CharacterSet=i}),K(te[6],ie([0,1,3]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.OffsetRangeSet=n.OffsetRange=void 0;class M{static addRange(f,g){let a=0;for(;a<g.length&&g[a].endExclusive<f.start;)a++;let s=a;for(;s<g.length&&g[s].start<=f.endExclusive;)s++;if(a===s)g.splice(a,0,f);else{const _=Math.min(f.start,g[a].start),t=Math.max(f.endExclusive,g[s-1].endExclusive);g.splice(a,s-a,new M(_,t))}}static tryCreate(f,g){if(!(f>g))return new M(f,g)}static ofLength(f){return new M(0,f)}constructor(f,g){if(this.start=f,this.endExclusive=g,f>g)throw new E.BugIndicatingError(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(f){return new M(this.start+f,this.endExclusive+f)}deltaStart(f){return new M(this.start+f,this.endExclusive)}deltaEnd(f){return new M(this.start,this.endExclusive+f)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}equals(f){return this.start===f.start&&this.endExclusive===f.endExclusive}containsRange(f){return this.start<=f.start&&f.endExclusive<=this.endExclusive}contains(f){return this.start<=f&&f<this.endExclusive}join(f){return new M(Math.min(this.start,f.start),Math.max(this.endExclusive,f.endExclusive))}intersect(f){const g=Math.max(this.start,f.start),a=Math.min(this.endExclusive,f.endExclusive);if(g<=a)return new M(g,a)}slice(f){return f.slice(this.start,this.endExclusive)}clip(f){if(this.isEmpty)throw new E.BugIndicatingError(`Invalid clipping range: ${this.toString()}`);return Math.max(this.start,Math.min(this.endExclusive-1,f))}clipCyclic(f){if(this.isEmpty)throw new E.BugIndicatingError(`Invalid clipping range: ${this.toString()}`);return f<this.start?this.endExclusive-(this.start-f)%this.length:f>=this.endExclusive?this.start+(f-this.start)%this.length:f}}n.OffsetRange=M;class i{constructor(){this._sortedRanges=[]}addRange(f){let g=0;for(;g<this._sortedRanges.length&&this._sortedRanges[g].endExclusive<f.start;)g++;let a=g;for(;a<this._sortedRanges.length&&this._sortedRanges[a].start<=f.endExclusive;)a++;if(g===a)this._sortedRanges.splice(g,0,f);else{const s=Math.min(f.start,this._sortedRanges[g].start),_=Math.max(f.endExclusive,this._sortedRanges[a-1].endExclusive);this._sortedRanges.splice(g,a-g,new M(s,_))}}toString(){return this._sortedRanges.map(f=>f.toString()).join(\", \")}intersectsStrict(f){let g=0;for(;g<this._sortedRanges.length&&this._sortedRanges[g].endExclusive<=f.start;)g++;return g<this._sortedRanges.length&&this._sortedRanges[g].start<f.endExclusive}intersectWithRange(f){const g=new i;for(const a of this._sortedRanges){const s=a.intersect(f);s&&g.addRange(s)}return g}intersectWithRangeLength(f){return this.intersectWithRange(f).length}get length(){return this._sortedRanges.reduce((f,g)=>f+g.length,0)}}n.OffsetRangeSet=i}),K(te[4],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Position=void 0;class E{constructor(i,u){this.lineNumber=i,this.column=u}with(i=this.lineNumber,u=this.column){return i===this.lineNumber&&u===this.column?this:new E(i,u)}delta(i=0,u=0){return this.with(this.lineNumber+i,this.column+u)}equals(i){return E.equals(this,i)}static equals(i,u){return!i&&!u?!0:!!i&&!!u&&i.lineNumber===u.lineNumber&&i.column===u.column}isBefore(i){return E.isBefore(this,i)}static isBefore(i,u){return i.lineNumber<u.lineNumber?!0:u.lineNumber<i.lineNumber?!1:i.column<u.column}isBeforeOrEqual(i){return E.isBeforeOrEqual(this,i)}static isBeforeOrEqual(i,u){return i.lineNumber<u.lineNumber?!0:u.lineNumber<i.lineNumber?!1:i.column<=u.column}static compare(i,u){const f=i.lineNumber|0,g=u.lineNumber|0;if(f===g){const a=i.column|0,s=u.column|0;return a-s}return f-g}clone(){return new E(this.lineNumber,this.column)}toString(){return\"(\"+this.lineNumber+\",\"+this.column+\")\"}static lift(i){return new E(i.lineNumber,i.column)}static isIPosition(i){return i&&typeof i.lineNumber==\"number\"&&typeof i.column==\"number\"}}n.Position=E}),K(te[2],ie([0,1,4]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Range=void 0;class M{constructor(u,f,g,a){u>g||u===g&&f>a?(this.startLineNumber=g,this.startColumn=a,this.endLineNumber=u,this.endColumn=f):(this.startLineNumber=u,this.startColumn=f,this.endLineNumber=g,this.endColumn=a)}isEmpty(){return M.isEmpty(this)}static isEmpty(u){return u.startLineNumber===u.endLineNumber&&u.startColumn===u.endColumn}containsPosition(u){return M.containsPosition(this,u)}static containsPosition(u,f){return!(f.lineNumber<u.startLineNumber||f.lineNumber>u.endLineNumber||f.lineNumber===u.startLineNumber&&f.column<u.startColumn||f.lineNumber===u.endLineNumber&&f.column>u.endColumn)}static strictContainsPosition(u,f){return!(f.lineNumber<u.startLineNumber||f.lineNumber>u.endLineNumber||f.lineNumber===u.startLineNumber&&f.column<=u.startColumn||f.lineNumber===u.endLineNumber&&f.column>=u.endColumn)}containsRange(u){return M.containsRange(this,u)}static containsRange(u,f){return!(f.startLineNumber<u.startLineNumber||f.endLineNumber<u.startLineNumber||f.startLineNumber>u.endLineNumber||f.endLineNumber>u.endLineNumber||f.startLineNumber===u.startLineNumber&&f.startColumn<u.startColumn||f.endLineNumber===u.endLineNumber&&f.endColumn>u.endColumn)}strictContainsRange(u){return M.strictContainsRange(this,u)}static strictContainsRange(u,f){return!(f.startLineNumber<u.startLineNumber||f.endLineNumber<u.startLineNumber||f.startLineNumber>u.endLineNumber||f.endLineNumber>u.endLineNumber||f.startLineNumber===u.startLineNumber&&f.startColumn<=u.startColumn||f.endLineNumber===u.endLineNumber&&f.endColumn>=u.endColumn)}plusRange(u){return M.plusRange(this,u)}static plusRange(u,f){let g,a,s,_;return f.startLineNumber<u.startLineNumber?(g=f.startLineNumber,a=f.startColumn):f.startLineNumber===u.startLineNumber?(g=f.startLineNumber,a=Math.min(f.startColumn,u.startColumn)):(g=u.startLineNumber,a=u.startColumn),f.endLineNumber>u.endLineNumber?(s=f.endLineNumber,_=f.endColumn):f.endLineNumber===u.endLineNumber?(s=f.endLineNumber,_=Math.max(f.endColumn,u.endColumn)):(s=u.endLineNumber,_=u.endColumn),new M(g,a,s,_)}intersectRanges(u){return M.intersectRanges(this,u)}static intersectRanges(u,f){let g=u.startLineNumber,a=u.startColumn,s=u.endLineNumber,_=u.endColumn;const t=f.startLineNumber,m=f.startColumn,h=f.endLineNumber,c=f.endColumn;return g<t?(g=t,a=m):g===t&&(a=Math.max(a,m)),s>h?(s=h,_=c):s===h&&(_=Math.min(_,c)),g>s||g===s&&a>_?null:new M(g,a,s,_)}equalsRange(u){return M.equalsRange(this,u)}static equalsRange(u,f){return!u&&!f?!0:!!u&&!!f&&u.startLineNumber===f.startLineNumber&&u.startColumn===f.startColumn&&u.endLineNumber===f.endLineNumber&&u.endColumn===f.endColumn}getEndPosition(){return M.getEndPosition(this)}static getEndPosition(u){return new E.Position(u.endLineNumber,u.endColumn)}getStartPosition(){return M.getStartPosition(this)}static getStartPosition(u){return new E.Position(u.startLineNumber,u.startColumn)}toString(){return\"[\"+this.startLineNumber+\",\"+this.startColumn+\" -> \"+this.endLineNumber+\",\"+this.endColumn+\"]\"}setEndPosition(u,f){return new M(this.startLineNumber,this.startColumn,u,f)}setStartPosition(u,f){return new M(u,f,this.endLineNumber,this.endColumn)}collapseToStart(){return M.collapseToStart(this)}static collapseToStart(u){return new M(u.startLineNumber,u.startColumn,u.startLineNumber,u.startColumn)}collapseToEnd(){return M.collapseToEnd(this)}static collapseToEnd(u){return new M(u.endLineNumber,u.endColumn,u.endLineNumber,u.endColumn)}delta(u){return new M(this.startLineNumber+u,this.startColumn,this.endLineNumber+u,this.endColumn)}static fromPositions(u,f=u){return new M(u.lineNumber,u.column,f.lineNumber,f.column)}static lift(u){return u?new M(u.startLineNumber,u.startColumn,u.endLineNumber,u.endColumn):null}static isIRange(u){return u&&typeof u.startLineNumber==\"number\"&&typeof u.startColumn==\"number\"&&typeof u.endLineNumber==\"number\"&&typeof u.endColumn==\"number\"}static areIntersectingOrTouching(u,f){return!(u.endLineNumber<f.startLineNumber||u.endLineNumber===f.startLineNumber&&u.endColumn<f.startColumn||f.endLineNumber<u.startLineNumber||f.endLineNumber===u.startLineNumber&&f.endColumn<u.startColumn)}static areIntersecting(u,f){return!(u.endLineNumber<f.startLineNumber||u.endLineNumber===f.startLineNumber&&u.endColumn<=f.startColumn||f.endLineNumber<u.startLineNumber||f.endLineNumber===u.startLineNumber&&f.endColumn<=u.startColumn)}static compareRangesUsingStarts(u,f){if(u&&f){const s=u.startLineNumber|0,_=f.startLineNumber|0;if(s===_){const t=u.startColumn|0,m=f.startColumn|0;if(t===m){const h=u.endLineNumber|0,c=f.endLineNumber|0;if(h===c){const L=u.endColumn|0,d=f.endColumn|0;return L-d}return h-c}return t-m}return s-_}return(u?1:0)-(f?1:0)}static compareRangesUsingEnds(u,f){return u.endLineNumber===f.endLineNumber?u.endColumn===f.endColumn?u.startLineNumber===f.startLineNumber?u.startColumn-f.startColumn:u.startLineNumber-f.startLineNumber:u.endColumn-f.endColumn:u.endLineNumber-f.endLineNumber}static spansMultipleLines(u){return u.endLineNumber>u.startLineNumber}toJSON(){return this}}n.Range=M}),K(te[12],ie([0,1,3,6,2]),function(U,n,E,M,i){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.LineRange=void 0;class u{static fromRange(g){return new u(g.startLineNumber,g.endLineNumber)}static subtract(g,a){return a?g.startLineNumber<a.startLineNumber&&a.endLineNumberExclusive<g.endLineNumberExclusive?[new u(g.startLineNumber,a.startLineNumber),new u(a.endLineNumberExclusive,g.endLineNumberExclusive)]:a.startLineNumber<=g.startLineNumber&&g.endLineNumberExclusive<=a.endLineNumberExclusive?[]:a.endLineNumberExclusive<g.endLineNumberExclusive?[new u(Math.max(a.endLineNumberExclusive,g.startLineNumber),g.endLineNumberExclusive)]:[new u(g.startLineNumber,Math.min(a.startLineNumber,g.endLineNumberExclusive))]:[g]}static joinMany(g){if(g.length===0)return[];let a=g[0];for(let s=1;s<g.length;s++)a=this.join(a,g[s]);return a}static join(g,a){if(g.length===0)return a;if(a.length===0)return g;const s=[];let _=0,t=0,m=null;for(;_<g.length||t<a.length;){let h=null;if(_<g.length&&t<a.length){const c=g[_],L=a[t];c.startLineNumber<L.startLineNumber?(h=c,_++):(h=L,t++)}else _<g.length?(h=g[_],_++):(h=a[t],t++);m===null?m=h:m.endLineNumberExclusive>=h.startLineNumber?m=new u(m.startLineNumber,Math.max(m.endLineNumberExclusive,h.endLineNumberExclusive)):(s.push(m),m=h)}return m!==null&&s.push(m),s}static ofLength(g,a){return new u(g,g+a)}static deserialize(g){return new u(g[0],g[1])}constructor(g,a){if(g>a)throw new E.BugIndicatingError(`startLineNumber ${g} cannot be after endLineNumberExclusive ${a}`);this.startLineNumber=g,this.endLineNumberExclusive=a}contains(g){return this.startLineNumber<=g&&g<this.endLineNumberExclusive}get isEmpty(){return this.startLineNumber===this.endLineNumberExclusive}delta(g){return new u(this.startLineNumber+g,this.endLineNumberExclusive+g)}deltaLength(g){return new u(this.startLineNumber,this.endLineNumberExclusive+g)}get length(){return this.endLineNumberExclusive-this.startLineNumber}join(g){return new u(Math.min(this.startLineNumber,g.startLineNumber),Math.max(this.endLineNumberExclusive,g.endLineNumberExclusive))}toString(){return`[${this.startLineNumber},${this.endLineNumberExclusive})`}intersect(g){const a=Math.max(this.startLineNumber,g.startLineNumber),s=Math.min(this.endLineNumberExclusive,g.endLineNumberExclusive);if(a<=s)return new u(a,s)}intersectsStrict(g){return this.startLineNumber<g.endLineNumberExclusive&&g.startLineNumber<this.endLineNumberExclusive}overlapOrTouch(g){return this.startLineNumber<=g.endLineNumberExclusive&&g.startLineNumber<=this.endLineNumberExclusive}equals(g){return this.startLineNumber===g.startLineNumber&&this.endLineNumberExclusive===g.endLineNumberExclusive}toInclusiveRange(){return this.isEmpty?null:new i.Range(this.startLineNumber,1,this.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER)}toExclusiveRange(){return new i.Range(this.startLineNumber,1,this.endLineNumberExclusive,1)}mapToLineArray(g){const a=[];for(let s=this.startLineNumber;s<this.endLineNumberExclusive;s++)a.push(g(s));return a}forEach(g){for(let a=this.startLineNumber;a<this.endLineNumberExclusive;a++)g(a)}serialize(){return[this.startLineNumber,this.endLineNumberExclusive]}includes(g){return this.startLineNumber<=g&&g<this.endLineNumberExclusive}toOffsetRange(){return new M.OffsetRange(this.startLineNumber-1,this.endLineNumberExclusive-1)}}n.LineRange=u}),K(te[36],ie([0,1,4,2]),function(U,n,E,M){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Selection=void 0;class i extends M.Range{constructor(f,g,a,s){super(f,g,a,s),this.selectionStartLineNumber=f,this.selectionStartColumn=g,this.positionLineNumber=a,this.positionColumn=s}toString(){return\"[\"+this.selectionStartLineNumber+\",\"+this.selectionStartColumn+\" -> \"+this.positionLineNumber+\",\"+this.positionColumn+\"]\"}equalsSelection(f){return i.selectionsEqual(this,f)}static selectionsEqual(f,g){return f.selectionStartLineNumber===g.selectionStartLineNumber&&f.selectionStartColumn===g.selectionStartColumn&&f.positionLineNumber===g.positionLineNumber&&f.positionColumn===g.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(f,g){return this.getDirection()===0?new i(this.startLineNumber,this.startColumn,f,g):new i(f,g,this.startLineNumber,this.startColumn)}getPosition(){return new E.Position(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new E.Position(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(f,g){return this.getDirection()===0?new i(f,g,this.endLineNumber,this.endColumn):new i(this.endLineNumber,this.endColumn,f,g)}static fromPositions(f,g=f){return new i(f.lineNumber,f.column,g.lineNumber,g.column)}static fromRange(f,g){return g===0?new i(f.startLineNumber,f.startColumn,f.endLineNumber,f.endColumn):new i(f.endLineNumber,f.endColumn,f.startLineNumber,f.startColumn)}static liftSelection(f){return new i(f.selectionStartLineNumber,f.selectionStartColumn,f.positionLineNumber,f.positionColumn)}static selectionsArrEqual(f,g){if(f&&!g||!f&&g)return!1;if(!f&&!g)return!0;if(f.length!==g.length)return!1;for(let a=0,s=f.length;a<s;a++)if(!this.selectionsEqual(f[a],g[a]))return!1;return!0}static isISelection(f){return f&&typeof f.selectionStartLineNumber==\"number\"&&typeof f.selectionStartColumn==\"number\"&&typeof f.positionLineNumber==\"number\"&&typeof f.positionColumn==\"number\"}static createWithDirection(f,g,a,s,_){return _===0?new i(f,g,a,s):new i(a,s,f,g)}}n.Selection=i}),K(te[37],ie([0,1,24]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.getMapForWordSeparators=n.WordCharacterClassifier=void 0;class M extends E.CharacterClassifier{constructor(f){super(0);for(let g=0,a=f.length;g<a;g++)this.set(f.charCodeAt(g),2);this.set(32,1),this.set(9,1)}}n.WordCharacterClassifier=M;function i(u){const f={};return g=>(f.hasOwnProperty(g)||(f[g]=u(g)),f[g])}n.getMapForWordSeparators=i(u=>new M(u))}),K(te[25],ie([0,1,18,19]),function(U,n,E,M){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.getWordAtText=n.ensureValidWordDefinition=n.DEFAULT_WORD_REGEXP=n.USUAL_WORD_SEPARATORS=void 0,n.USUAL_WORD_SEPARATORS=\"`~!@#$%^&*()-=+[{]}\\\\|;:'\\\",.<>/?\";function i(s=\"\"){let _=\"(-?\\\\d*\\\\.\\\\d\\\\w*)|([^\";for(const t of n.USUAL_WORD_SEPARATORS)s.indexOf(t)>=0||(_+=\"\\\\\"+t);return _+=\"\\\\s]+)\",new RegExp(_,\"g\")}n.DEFAULT_WORD_REGEXP=i();function u(s){let _=n.DEFAULT_WORD_REGEXP;if(s&&s instanceof RegExp)if(s.global)_=s;else{let t=\"g\";s.ignoreCase&&(t+=\"i\"),s.multiline&&(t+=\"m\"),s.unicode&&(t+=\"u\"),_=new RegExp(s.source,t)}return _.lastIndex=0,_}n.ensureValidWordDefinition=u;const f=new M.LinkedList;f.unshift({maxLen:1e3,windowSize:15,timeBudget:150});function g(s,_,t,m,h){if(h||(h=E.Iterable.first(f)),t.length>h.maxLen){let C=s-h.maxLen/2;return C<0?C=0:m+=C,t=t.substring(C,s+h.maxLen/2),g(s,_,t,m,h)}const c=Date.now(),L=s-1-m;let d=-1,y=null;for(let C=1;!(Date.now()-c>=h.timeBudget);C++){const R=L-h.windowSize*C;_.lastIndex=Math.max(0,R);const S=a(_,t,L,d);if(!S&&y||(y=S,R<=0))break;d=R}if(y){const C={word:y[0],startColumn:m+1+y.index,endColumn:m+1+y.index+y[0].length};return _.lastIndex=0,C}return null}n.getWordAtText=g;function a(s,_,t,m){let h;for(;h=s.exec(_);){const c=h.index||0;if(c<=t&&s.lastIndex>=t)return h;if(m>0&&c>m)return null}return null}}),K(te[8],ie([0,1,3,6]),function(U,n,E,M){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.DateTimeout=n.InfiniteTimeout=n.SequenceDiff=n.DiffAlgorithmResult=void 0;class i{static trivial(s,_){return new i([new u(new M.OffsetRange(0,s.length),new M.OffsetRange(0,_.length))],!1)}static trivialTimedOut(s,_){return new i([new u(new M.OffsetRange(0,s.length),new M.OffsetRange(0,_.length))],!0)}constructor(s,_){this.diffs=s,this.hitTimeout=_}}n.DiffAlgorithmResult=i;class u{constructor(s,_){this.seq1Range=s,this.seq2Range=_}reverse(){return new u(this.seq2Range,this.seq1Range)}toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}join(s){return new u(this.seq1Range.join(s.seq1Range),this.seq2Range.join(s.seq2Range))}delta(s){return s===0?this:new u(this.seq1Range.delta(s),this.seq2Range.delta(s))}}n.SequenceDiff=u;class f{isValid(){return!0}}n.InfiniteTimeout=f,f.instance=new f;class g{constructor(s){if(this.timeout=s,this.startTime=Date.now(),this.valid=!0,s<=0)throw new E.BugIndicatingError(\"timeout must be positive\")}isValid(){if(!(Date.now()-this.startTime<this.timeout)&&this.valid){this.valid=!1;debugger}return this.valid}}n.DateTimeout=g}),K(te[38],ie([0,1,6,8]),function(U,n,E,M){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.shiftSequenceDiffs=n.joinSequenceDiffs=n.removeRandomMatches=n.removeRandomLineMatches=n.smoothenSequenceDiffs=n.optimizeSequenceDiffs=void 0;function i(t,m,h){let c=h;return c=a(t,m,c),c=s(t,m,c),c}n.optimizeSequenceDiffs=i;function u(t,m,h){const c=[];for(const L of h){const d=c[c.length-1];if(!d){c.push(L);continue}L.seq1Range.start-d.seq1Range.endExclusive<=2||L.seq2Range.start-d.seq2Range.endExclusive<=2?c[c.length-1]=new M.SequenceDiff(d.seq1Range.join(L.seq1Range),d.seq2Range.join(L.seq2Range)):c.push(L)}return c}n.smoothenSequenceDiffs=u;function f(t,m,h){let c=h;if(c.length===0)return c;let L=0,d;do{d=!1;const y=[c[0]];for(let C=1;C<c.length;C++){let p=function(l,o){const v=new E.OffsetRange(S.seq1Range.endExclusive,R.seq1Range.start);return t.getText(v).replace(/\\s/g,\"\").length<=4&&(l.seq1Range.length+l.seq2Range.length>5||o.seq1Range.length+o.seq2Range.length>5)};const R=c[C],S=y[y.length-1];p(S,R)?(d=!0,y[y.length-1]=y[y.length-1].join(R)):y.push(R)}c=y}while(L++<10&&d);return c}n.removeRandomLineMatches=f;function g(t,m,h){let c=h;if(c.length===0)return c;let L=0,d;do{d=!1;const y=[c[0]];for(let C=1;C<c.length;C++){let p=function(l,o){const v=new E.OffsetRange(S.seq1Range.endExclusive,R.seq1Range.start);if(t.countLinesIn(v)>5||v.length>500)return!1;const w=t.getText(v).trim();if(w.length>20||w.split(/\\r\\n|\\r|\\n/).length>1)return!1;const A=t.countLinesIn(l.seq1Range),N=l.seq1Range.length,F=m.countLinesIn(l.seq2Range),O=l.seq2Range.length,q=t.countLinesIn(o.seq1Range),T=o.seq1Range.length,W=m.countLinesIn(o.seq2Range),G=o.seq2Range.length,ae=2*40+50;function re(ne){return Math.min(ne,ae)}return Math.pow(Math.pow(re(A*40+N),1.5)+Math.pow(re(F*40+O),1.5),1.5)+Math.pow(Math.pow(re(q*40+T),1.5)+Math.pow(re(W*40+G),1.5),1.5)>Math.pow(Math.pow(ae,1.5),1.5)*1.3};const R=c[C],S=y[y.length-1];p(S,R)?(d=!0,y[y.length-1]=y[y.length-1].join(R)):y.push(R)}c=y}while(L++<10&&d);for(let y=0;y<c.length;y++){const C=c[y];let R=C.seq1Range,S=C.seq2Range;const p=t.extendToFullLines(C.seq1Range),r=t.getText(new E.OffsetRange(p.start,C.seq1Range.start));r.length>0&&r.trim().length<=3&&C.seq1Range.length+C.seq2Range.length>100&&(R=C.seq1Range.deltaStart(-r.length),S=C.seq2Range.deltaStart(-r.length));const l=t.getText(new E.OffsetRange(C.seq1Range.endExclusive,p.endExclusive));l.length>0&&l.trim().length<=3&&C.seq1Range.length+C.seq2Range.length>150&&(R=R.deltaEnd(l.length),S=S.deltaEnd(l.length)),c[y]=new M.SequenceDiff(R,S)}return c}n.removeRandomMatches=g;function a(t,m,h){if(h.length===0)return h;const c=[];c.push(h[0]);for(let d=1;d<h.length;d++){const y=c[c.length-1];let C=h[d];if(C.seq1Range.isEmpty||C.seq2Range.isEmpty){const R=C.seq1Range.start-y.seq1Range.endExclusive;let S;for(S=1;S<=R&&!(t.getElement(C.seq1Range.start-S)!==t.getElement(C.seq1Range.endExclusive-S)||m.getElement(C.seq2Range.start-S)!==m.getElement(C.seq2Range.endExclusive-S));S++);if(S--,S===R){c[c.length-1]=new M.SequenceDiff(new E.OffsetRange(y.seq1Range.start,C.seq1Range.endExclusive-R),new E.OffsetRange(y.seq2Range.start,C.seq2Range.endExclusive-R));continue}C=C.delta(-S)}c.push(C)}const L=[];for(let d=0;d<c.length-1;d++){const y=c[d+1];let C=c[d];if(C.seq1Range.isEmpty||C.seq2Range.isEmpty){const R=y.seq1Range.start-C.seq1Range.endExclusive;let S;for(S=0;S<R&&!(t.getElement(C.seq1Range.start+S)!==t.getElement(C.seq1Range.endExclusive+S)||m.getElement(C.seq2Range.start+S)!==m.getElement(C.seq2Range.endExclusive+S));S++);if(S===R){c[d+1]=new M.SequenceDiff(new E.OffsetRange(C.seq1Range.start+R,y.seq1Range.endExclusive),new E.OffsetRange(C.seq2Range.start+R,y.seq2Range.endExclusive));continue}S>0&&(C=C.delta(S))}L.push(C)}return c.length>0&&L.push(c[c.length-1]),L}n.joinSequenceDiffs=a;function s(t,m,h){if(!t.getBoundaryScore||!m.getBoundaryScore)return h;for(let c=0;c<h.length;c++){const L=c>0?h[c-1]:void 0,d=h[c],y=c+1<h.length?h[c+1]:void 0,C=new E.OffsetRange(L?L.seq1Range.start+1:0,y?y.seq1Range.endExclusive-1:t.length),R=new E.OffsetRange(L?L.seq2Range.start+1:0,y?y.seq2Range.endExclusive-1:m.length);d.seq1Range.isEmpty?h[c]=_(d,t,m,C,R):d.seq2Range.isEmpty&&(h[c]=_(d.reverse(),m,t,R,C).reverse())}return h}n.shiftSequenceDiffs=s;function _(t,m,h,c,L){let y=1;for(;t.seq1Range.start-y>=c.start&&t.seq2Range.start-y>=L.start&&h.isStronglyEqual(t.seq2Range.start-y,t.seq2Range.endExclusive-y)&&y<100;)y++;y--;let C=0;for(;t.seq1Range.start+C<c.endExclusive&&t.seq2Range.endExclusive+C<L.endExclusive&&h.isStronglyEqual(t.seq2Range.start+C,t.seq2Range.endExclusive+C)&&C<100;)C++;if(y===0&&C===0)return t;let R=0,S=-1;for(let p=-y;p<=C;p++){const r=t.seq2Range.start+p,l=t.seq2Range.endExclusive+p,o=t.seq1Range.start+p,v=m.getBoundaryScore(o)+h.getBoundaryScore(r)+h.getBoundaryScore(l);v>S&&(S=v,R=p)}return t.delta(R)}}),K(te[39],ie([0,1,6,8]),function(U,n,E,M){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.MyersDiffAlgorithm=void 0;class i{compute(s,_,t=M.InfiniteTimeout.instance){if(s.length===0||_.length===0)return M.DiffAlgorithmResult.trivial(s,_);function m(p,r){for(;p<s.length&&r<_.length&&s.getElement(p)===_.getElement(r);)p++,r++;return p}let h=0;const c=new f;c.set(0,m(0,0));const L=new g;L.set(0,c.get(0)===0?null:new u(null,0,0,c.get(0)));let d=0;e:for(;;){if(h++,!t.isValid())return M.DiffAlgorithmResult.trivialTimedOut(s,_);const p=-Math.min(h,_.length+h%2),r=Math.min(h,s.length+h%2);for(d=p;d<=r;d+=2){const l=d===r?-1:c.get(d+1),o=d===p?-1:c.get(d-1)+1,v=Math.min(Math.max(l,o),s.length),b=v-d;if(v>s.length||b>_.length)continue;const w=m(v,b);c.set(d,w);const A=v===l?L.get(d+1):L.get(d-1);if(L.set(d,w!==v?new u(A,v,b,w-v):A),c.get(d)===s.length&&c.get(d)-d===_.length)break e}}let y=L.get(d);const C=[];let R=s.length,S=_.length;for(;;){const p=y?y.x+y.length:0,r=y?y.y+y.length:0;if((p!==R||r!==S)&&C.push(new M.SequenceDiff(new E.OffsetRange(p,R),new E.OffsetRange(r,S))),!y)break;R=y.x,S=y.y,y=y.prev}return C.reverse(),new M.DiffAlgorithmResult(C,!1)}}n.MyersDiffAlgorithm=i;class u{constructor(s,_,t,m){this.prev=s,this.x=_,this.y=t,this.length=m}}class f{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(s){return s<0?(s=-s-1,this.negativeArr[s]):this.positiveArr[s]}set(s,_){if(s<0){if(s=-s-1,s>=this.negativeArr.length){const t=this.negativeArr;this.negativeArr=new Int32Array(t.length*2),this.negativeArr.set(t)}this.negativeArr[s]=_}else{if(s>=this.positiveArr.length){const t=this.positiveArr;this.positiveArr=new Int32Array(t.length*2),this.positiveArr.set(t)}this.positiveArr[s]=_}}}class g{constructor(){this.positiveArr=[],this.negativeArr=[]}get(s){return s<0?(s=-s-1,this.negativeArr[s]):this.positiveArr[s]}set(s,_){s<0?(s=-s-1,this.negativeArr[s]=_):this.positiveArr[s]=_}}}),K(te[40],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Array2D=void 0;class E{constructor(i,u){this.width=i,this.height=u,this.array=[],this.array=new Array(i*u)}get(i,u){return this.array[i+u*this.width]}set(i,u,f){this.array[i+u*this.width]=f}}n.Array2D=E}),K(te[41],ie([0,1,6,8,40]),function(U,n,E,M,i){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.DynamicProgrammingDiffing=void 0;class u{compute(g,a,s=M.InfiniteTimeout.instance,_){if(g.length===0||a.length===0)return M.DiffAlgorithmResult.trivial(g,a);const t=new i.Array2D(g.length,a.length),m=new i.Array2D(g.length,a.length),h=new i.Array2D(g.length,a.length);for(let S=0;S<g.length;S++)for(let p=0;p<a.length;p++){if(!s.isValid())return M.DiffAlgorithmResult.trivialTimedOut(g,a);const r=S===0?0:t.get(S-1,p),l=p===0?0:t.get(S,p-1);let o;g.getElement(S)===a.getElement(p)?(S===0||p===0?o=0:o=t.get(S-1,p-1),S>0&&p>0&&m.get(S-1,p-1)===3&&(o+=h.get(S-1,p-1)),o+=_?_(S,p):1):o=-1;const v=Math.max(r,l,o);if(v===o){const b=S>0&&p>0?h.get(S-1,p-1):0;h.set(S,p,b+1),m.set(S,p,3)}else v===r?(h.set(S,p,0),m.set(S,p,1)):v===l&&(h.set(S,p,0),m.set(S,p,2));t.set(S,p,v)}const c=[];let L=g.length,d=a.length;function y(S,p){(S+1!==L||p+1!==d)&&c.push(new M.SequenceDiff(new E.OffsetRange(S+1,L),new E.OffsetRange(p+1,d))),L=S,d=p}let C=g.length-1,R=a.length-1;for(;C>=0&&R>=0;)m.get(C,R)===3?(y(C,R),C--,R--):m.get(C,R)===1?C--:R--;return y(-1,-1),c.reverse(),new M.DiffAlgorithmResult(c,!1)}}n.DynamicProgrammingDiffing=u}),K(te[26],ie([0,1,12]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.MovedText=n.SimpleLineRangeMapping=n.RangeMapping=n.LineRangeMapping=n.LinesDiff=void 0;class M{constructor(s,_,t){this.changes=s,this.moves=_,this.hitTimeout=t}}n.LinesDiff=M;class i{static inverse(s,_,t){const m=[];let h=1,c=1;for(const d of s){const y=new i(new E.LineRange(h,d.originalRange.startLineNumber),new E.LineRange(c,d.modifiedRange.startLineNumber),void 0);y.modifiedRange.isEmpty||m.push(y),h=d.originalRange.endLineNumberExclusive,c=d.modifiedRange.endLineNumberExclusive}const L=new i(new E.LineRange(h,_+1),new E.LineRange(c,t+1),void 0);return L.modifiedRange.isEmpty||m.push(L),m}constructor(s,_,t){this.originalRange=s,this.modifiedRange=_,this.innerChanges=t}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}get changedLineCount(){return Math.max(this.originalRange.length,this.modifiedRange.length)}flip(){var s;return new i(this.modifiedRange,this.originalRange,(s=this.innerChanges)===null||s===void 0?void 0:s.map(_=>_.flip()))}}n.LineRangeMapping=i;class u{constructor(s,_){this.originalRange=s,this.modifiedRange=_}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}flip(){return new u(this.modifiedRange,this.originalRange)}}n.RangeMapping=u;class f{constructor(s,_){this.original=s,this.modified=_}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new f(this.modified,this.original)}join(s){return new f(this.original.join(s.original),this.modified.join(s.modified))}}n.SimpleLineRangeMapping=f;class g{constructor(s,_){this.lineRangeMapping=s,this.changes=_}flip(){return new g(this.lineRangeMapping.flip(),this.changes.map(s=>s.flip()))}}n.MovedText=g}),K(te[42],ie([0,1,16,9,28,3,12,6,4,2,8,41,38,39,26]),function(U,n,E,M,i,u,f,g,a,s,_,t,m,h,c){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.findFirstMonotonous=n.findLastMonotonous=n.LinesSliceCharSequence=n.LineSequence=n.getLineRangeMapping=n.lineRangeMappingFromRangeMappings=n.AdvancedLinesDiffComputer=void 0;class L{constructor(){this.dynamicProgrammingDiffing=new t.DynamicProgrammingDiffing,this.myersDiffingAlgorithm=new h.MyersDiffAlgorithm}computeDiff(e,P,k){if(e.length<=1&&(0,E.equals)(e,P,(D,x)=>D===x))return new c.LinesDiff([],[],!1);if(e.length===1&&e[0].length===0||P.length===1&&P[0].length===0)return new c.LinesDiff([new c.LineRangeMapping(new f.LineRange(1,e.length+1),new f.LineRange(1,P.length+1),[new c.RangeMapping(new s.Range(1,1,e.length,e[0].length+1),new s.Range(1,1,P.length,P[0].length+1))])],[],!1);const I=k.maxComputationTimeMs===0?_.InfiniteTimeout.instance:new _.DateTimeout(k.maxComputationTimeMs),V=!k.ignoreTrimWhitespace,Q=new Map;function ee(D){let x=Q.get(D);return x===void 0&&(x=Q.size,Q.set(D,x)),x}const ue=e.map(D=>ee(D.trim())),he=P.map(D=>ee(D.trim())),ge=new v(ue,e),me=new v(he,P),ve=(()=>ge.length+me.length<1700?this.dynamicProgrammingDiffing.compute(ge,me,I,(D,x)=>e[D]===P[x]?P[x].length===0?.1:1+Math.log(1+P[x].length):.99):this.myersDiffingAlgorithm.compute(ge,me))();let J=ve.diffs,H=ve.hitTimeout;J=(0,m.optimizeSequenceDiffs)(ge,me,J),J=(0,m.removeRandomLineMatches)(ge,me,J);const X=[],Y=D=>{if(V)for(let x=0;x<D;x++){const B=se+x,z=oe+x;if(e[B]!==P[z]){const Z=this.refineDiff(e,P,new _.SequenceDiff(new g.OffsetRange(B,B+1),new g.OffsetRange(z,z+1)),I,V);for(const ce of Z.mappings)X.push(ce);Z.hitTimeout&&(H=!0)}}};let se=0,oe=0;for(const D of J){(0,M.assertFn)(()=>D.seq1Range.start-se===D.seq2Range.start-oe);const x=D.seq1Range.start-se;Y(x),se=D.seq1Range.endExclusive,oe=D.seq2Range.endExclusive;const B=this.refineDiff(e,P,D,I,V);B.hitTimeout&&(H=!0);for(const z of B.mappings)X.push(z)}Y(e.length-se);const j=r(X,e,P);let le=[];return k.computeMoves&&(le=this.computeMoves(j,e,P,ue,he,I,V)),(0,M.assertFn)(()=>{function D(B,z){if(B.lineNumber<1||B.lineNumber>z.length)return!1;const Z=z[B.lineNumber-1];return!(B.column<1||B.column>Z.length+1)}function x(B,z){return!(B.startLineNumber<1||B.startLineNumber>z.length+1||B.endLineNumberExclusive<1||B.endLineNumberExclusive>z.length+1)}for(const B of j){if(!B.innerChanges)return!1;for(const z of B.innerChanges)if(!(D(z.modifiedRange.getStartPosition(),P)&&D(z.modifiedRange.getEndPosition(),P)&&D(z.originalRange.getStartPosition(),e)&&D(z.originalRange.getEndPosition(),e)))return!1;if(!x(B.modifiedRange,P)||!x(B.originalRange,e))return!1}return!0}),new c.LinesDiff(j,le,H)}computeMoves(e,P,k,I,V,Q,ee){const ue=[],he=e.filter(j=>j.modifiedRange.isEmpty&&j.originalRange.length>=3).map(j=>new fe(j.originalRange,P,j)),ge=new Set(e.filter(j=>j.originalRange.isEmpty&&j.modifiedRange.length>=3).map(j=>new fe(j.modifiedRange,k,j))),me=new Set;for(const j of he){let le=-1,D;for(const x of ge){const B=j.computeSimilarity(x);B>le&&(le=B,D=x)}if(le>.9&&D&&(ge.delete(D),ue.push(new c.SimpleLineRangeMapping(j.range,D.range)),me.add(j.source),me.add(D.source)),!Q.isValid())return[]}const ve=new i.SetMap;for(const j of e)if(!me.has(j))for(let le=j.originalRange.startLineNumber;le<j.originalRange.endLineNumberExclusive-2;le++){const D=`${I[le-1]}:${I[le+1-1]}:${I[le+2-1]}`;ve.add(D,{range:new f.LineRange(le,le+3)})}const J=[];e.sort((0,E.compareBy)(j=>j.modifiedRange.startLineNumber,E.numberComparator));for(const j of e){if(me.has(j))continue;let le=[];for(let D=j.modifiedRange.startLineNumber;D<j.modifiedRange.endLineNumberExclusive-2;D++){const x=`${V[D-1]}:${V[D+1-1]}:${V[D+2-1]}`,B=new f.LineRange(D,D+3),z=[];ve.forEach(x,({range:Z})=>{for(const de of le)if(de.originalLineRange.endLineNumberExclusive+1===Z.endLineNumberExclusive&&de.modifiedLineRange.endLineNumberExclusive+1===B.endLineNumberExclusive){de.originalLineRange=new f.LineRange(de.originalLineRange.startLineNumber,Z.endLineNumberExclusive),de.modifiedLineRange=new f.LineRange(de.modifiedLineRange.startLineNumber,B.endLineNumberExclusive),z.push(de);return}const ce={modifiedLineRange:B,originalLineRange:Z};J.push(ce),z.push(ce)}),le=z}if(!Q.isValid())return[]}J.sort((0,E.reverseOrder)((0,E.compareBy)(j=>j.modifiedLineRange.length,E.numberComparator)));const H=new C,X=new C;for(const j of J){const le=j.modifiedLineRange.startLineNumber-j.originalLineRange.startLineNumber,D=H.subtractFrom(j.modifiedLineRange),x=X.subtractFrom(j.originalLineRange).map(z=>z.delta(le)),B=y(D,x);for(const z of B){if(z.length<3)continue;const Z=z,ce=z.delta(-le);ue.push(new c.SimpleLineRangeMapping(ce,Z)),H.addRange(Z),X.addRange(ce)}}if(ue.sort((0,E.compareBy)(j=>j.original.startLineNumber,E.numberComparator)),ue.length===0)return[];let Y=[ue[0]];for(let j=1;j<ue.length;j++){const le=Y[Y.length-1],D=ue[j],x=D.original.startLineNumber-le.original.endLineNumberExclusive,B=D.modified.startLineNumber-le.modified.endLineNumberExclusive;if(x>=0&&B>=0&&x+B<=2){Y[Y.length-1]=le.join(D);continue}D.original.toOffsetRange().slice(P).map(ce=>ce.trim()).join(`\n`).length<=10||Y.push(D)}const se=d.createOfSorted(e,j=>j.originalRange.endLineNumberExclusive,E.numberComparator);return Y=Y.filter(j=>{const le=se.findLastItemBeforeOrEqual(j.original.startLineNumber)||new c.LineRangeMapping(new f.LineRange(1,1),new f.LineRange(1,1),[]),D=j.modified.startLineNumber-le.modifiedRange.endLineNumberExclusive,x=j.original.startLineNumber-le.originalRange.endLineNumberExclusive;return D!==x}),Y.map(j=>{const le=this.refineDiff(P,k,new _.SequenceDiff(j.original.toOffsetRange(),j.modified.toOffsetRange()),Q,ee),D=r(le.mappings,P,k,!0);return new c.MovedText(j,D)})}refineDiff(e,P,k,I,V){const Q=new w(e,k.seq1Range,V),ee=new w(P,k.seq2Range,V),ue=Q.length+ee.length<500?this.dynamicProgrammingDiffing.compute(Q,ee,I):this.myersDiffingAlgorithm.compute(Q,ee,I);let he=ue.diffs;return he=(0,m.optimizeSequenceDiffs)(Q,ee,he),he=S(Q,ee,he),he=(0,m.smoothenSequenceDiffs)(Q,ee,he),he=(0,m.removeRandomMatches)(Q,ee,he),{mappings:he.map(me=>new c.RangeMapping(Q.translateRange(me.seq1Range),ee.translateRange(me.seq2Range))),hitTimeout:ue.hitTimeout}}}n.AdvancedLinesDiffComputer=L;class d{static createOfSorted(e,P,k){return new d(e,P,k)}constructor(e,P,k){this._items=e,this._itemToDomain=P,this._domainComparator=k,this._currentIdx=0,this._lastValue=void 0,this._hasLastValue=!1}findLastItemBeforeOrEqual(e){if(this._hasLastValue&&E.CompareResult.isLessThan(this._domainComparator(e,this._lastValue)))throw new u.BugIndicatingError;for(this._lastValue=e,this._hasLastValue=!0;this._currentIdx<this._items.length&&E.CompareResult.isLessThanOrEqual(this._domainComparator(this._itemToDomain(this._items[this._currentIdx]),e));)this._currentIdx++;return this._currentIdx===0?void 0:this._items[this._currentIdx-1]}}function y($,e){const P=[];let k=0,I=0;for(;k<$.length&&I<e.length;){const V=$[k],Q=e[I],ee=V.intersect(Q);ee&&!ee.isEmpty&&P.push(ee),V.endLineNumberExclusive<Q.endLineNumberExclusive?k++:I++}return P}class C{constructor(){this._normalizedRanges=[]}addRange(e){const P=R(this._normalizedRanges.findIndex(I=>I.endLineNumberExclusive>=e.startLineNumber),this._normalizedRanges.length),k=(0,E.findLastIndex)(this._normalizedRanges,I=>I.startLineNumber<=e.endLineNumberExclusive)+1;if(P===k)this._normalizedRanges.splice(P,0,e);else if(P===k-1){const I=this._normalizedRanges[P];this._normalizedRanges[P]=I.join(e)}else{const I=this._normalizedRanges[P].join(this._normalizedRanges[k-1]).join(e);this._normalizedRanges.splice(P,k-P,I)}}subtractFrom(e){const P=R(this._normalizedRanges.findIndex(Q=>Q.endLineNumberExclusive>=e.startLineNumber),this._normalizedRanges.length),k=(0,E.findLastIndex)(this._normalizedRanges,Q=>Q.startLineNumber<=e.endLineNumberExclusive)+1;if(P===k)return[e];const I=[];let V=e.startLineNumber;for(let Q=P;Q<k;Q++){const ee=this._normalizedRanges[Q];ee.startLineNumber>V&&I.push(new f.LineRange(V,ee.startLineNumber)),V=ee.endLineNumberExclusive}return V<e.endLineNumberExclusive&&I.push(new f.LineRange(V,e.endLineNumberExclusive)),I}}function R($,e){return $===-1?e:$}function S($,e,P){const k=[];let I;function V(){if(!I)return;const ee=I.s1Range.length-I.deleted,ue=I.s2Range.length-I.added;Math.max(I.deleted,I.added)+(I.count-1)>ee&&k.push(new _.SequenceDiff(I.s1Range,I.s2Range)),I=void 0}for(const ee of P){let ue=function(J,H){var X,Y,se,oe;if(!I||!I.s1Range.containsRange(J)||!I.s2Range.containsRange(H))if(I&&!(I.s1Range.endExclusive<J.start&&I.s2Range.endExclusive<H.start)){const D=g.OffsetRange.tryCreate(I.s1Range.endExclusive,J.start),x=g.OffsetRange.tryCreate(I.s2Range.endExclusive,H.start);I.deleted+=(X=D?.length)!==null&&X!==void 0?X:0,I.added+=(Y=x?.length)!==null&&Y!==void 0?Y:0,I.s1Range=I.s1Range.join(J),I.s2Range=I.s2Range.join(H)}else V(),I={added:0,deleted:0,count:0,s1Range:J,s2Range:H};const j=J.intersect(ee.seq1Range),le=H.intersect(ee.seq2Range);I.count++,I.deleted+=(se=j?.length)!==null&&se!==void 0?se:0,I.added+=(oe=le?.length)!==null&&oe!==void 0?oe:0};const he=$.findWordContaining(ee.seq1Range.start-1),ge=e.findWordContaining(ee.seq2Range.start-1),me=$.findWordContaining(ee.seq1Range.endExclusive),ve=e.findWordContaining(ee.seq2Range.endExclusive);he&&me&&ge&&ve&&he.equals(me)&&ge.equals(ve)?ue(he,ge):(he&&ge&&ue(he,ge),me&&ve&&ue(me,ve))}return V(),p(P,k)}function p($,e){const P=[];for(;$.length>0||e.length>0;){const k=$[0],I=e[0];let V;k&&(!I||k.seq1Range.start<I.seq1Range.start)?V=$.shift():V=e.shift(),P.length>0&&P[P.length-1].seq1Range.endExclusive>=V.seq1Range.start?P[P.length-1]=P[P.length-1].join(V):P.push(V)}return P}function r($,e,P,k=!1){const I=[];for(const V of o($.map(Q=>l(Q,e,P)),(Q,ee)=>Q.originalRange.overlapOrTouch(ee.originalRange)||Q.modifiedRange.overlapOrTouch(ee.modifiedRange))){const Q=V[0],ee=V[V.length-1];I.push(new c.LineRangeMapping(Q.originalRange.join(ee.originalRange),Q.modifiedRange.join(ee.modifiedRange),V.map(ue=>ue.innerChanges[0])))}return(0,M.assertFn)(()=>!k&&I.length>0&&I[0].originalRange.startLineNumber!==I[0].modifiedRange.startLineNumber?!1:(0,M.checkAdjacentItems)(I,(V,Q)=>Q.originalRange.startLineNumber-V.originalRange.endLineNumberExclusive===Q.modifiedRange.startLineNumber-V.modifiedRange.endLineNumberExclusive&&V.originalRange.endLineNumberExclusive<Q.originalRange.startLineNumber&&V.modifiedRange.endLineNumberExclusive<Q.modifiedRange.startLineNumber)),I}n.lineRangeMappingFromRangeMappings=r;function l($,e,P){let k=0,I=0;$.modifiedRange.endColumn===1&&$.originalRange.endColumn===1&&$.originalRange.startLineNumber+k<=$.originalRange.endLineNumber&&$.modifiedRange.startLineNumber+k<=$.modifiedRange.endLineNumber&&(I=-1),$.modifiedRange.startColumn-1>=P[$.modifiedRange.startLineNumber-1].length&&$.originalRange.startColumn-1>=e[$.originalRange.startLineNumber-1].length&&$.originalRange.startLineNumber<=$.originalRange.endLineNumber+I&&$.modifiedRange.startLineNumber<=$.modifiedRange.endLineNumber+I&&(k=1);const V=new f.LineRange($.originalRange.startLineNumber+k,$.originalRange.endLineNumber+1+I),Q=new f.LineRange($.modifiedRange.startLineNumber+k,$.modifiedRange.endLineNumber+1+I);return new c.LineRangeMapping(V,Q,[$])}n.getLineRangeMapping=l;function*o($,e){let P,k;for(const I of $)k!==void 0&&e(k,I)?P.push(I):(P&&(yield P),P=[I]),k=I;P&&(yield P)}class v{constructor(e,P){this.trimmedHash=e,this.lines=P}getElement(e){return this.trimmedHash[e]}get length(){return this.trimmedHash.length}getBoundaryScore(e){const P=e===0?0:b(this.lines[e-1]),k=e===this.lines.length?0:b(this.lines[e]);return 1e3-(P+k)}getText(e){return this.lines.slice(e.start,e.endExclusive).join(`\n`)}isStronglyEqual(e,P){return this.lines[e]===this.lines[P]}}n.LineSequence=v;function b($){let e=0;for(;e<$.length&&($.charCodeAt(e)===32||$.charCodeAt(e)===9);)e++;return e}class w{constructor(e,P,k){this.lines=e,this.considerWhitespaceChanges=k,this.elements=[],this.firstCharOffsetByLineMinusOne=[],this.additionalOffsetByLine=[];let I=!1;P.start>0&&P.endExclusive>=e.length&&(P=new g.OffsetRange(P.start-1,P.endExclusive),I=!0),this.lineRange=P;for(let V=this.lineRange.start;V<this.lineRange.endExclusive;V++){let Q=e[V],ee=0;if(I)ee=Q.length,Q=\"\",I=!1;else if(!k){const ue=Q.trimStart();ee=Q.length-ue.length,Q=ue.trimEnd()}this.additionalOffsetByLine.push(ee);for(let ue=0;ue<Q.length;ue++)this.elements.push(Q.charCodeAt(ue));V<e.length-1&&(this.elements.push(`\n`.charCodeAt(0)),this.firstCharOffsetByLineMinusOne[V-this.lineRange.start]=this.elements.length)}this.additionalOffsetByLine.push(0)}toString(){return`Slice: \"${this.text}\"`}get text(){return this.getText(new g.OffsetRange(0,this.length))}getText(e){return this.elements.slice(e.start,e.endExclusive).map(P=>String.fromCharCode(P)).join(\"\")}getElement(e){return this.elements[e]}get length(){return this.elements.length}getBoundaryScore(e){const P=G(e>0?this.elements[e-1]:-1),k=G(e<this.elements.length?this.elements[e]:-1);if(P===6&&k===7)return 0;let I=0;return P!==k&&(I+=10,k===1&&(I+=1)),I+=W(P),I+=W(k),I}translateOffset(e){if(this.lineRange.isEmpty)return new a.Position(this.lineRange.start+1,1);let P=0,k=this.firstCharOffsetByLineMinusOne.length;for(;P<k;){const V=Math.floor((P+k)/2);this.firstCharOffsetByLineMinusOne[V]>e?k=V:P=V+1}const I=P===0?0:this.firstCharOffsetByLineMinusOne[P-1];return new a.Position(this.lineRange.start+P+1,e-I+1+this.additionalOffsetByLine[P])}translateRange(e){return s.Range.fromPositions(this.translateOffset(e.start),this.translateOffset(e.endExclusive))}findWordContaining(e){if(e<0||e>=this.elements.length||!q(this.elements[e]))return;let P=e;for(;P>0&&q(this.elements[P-1]);)P--;let k=e;for(;k<this.elements.length&&q(this.elements[k]);)k++;return new g.OffsetRange(P,k)}countLinesIn(e){return this.translateOffset(e.endExclusive).lineNumber-this.translateOffset(e.start).lineNumber}isStronglyEqual(e,P){return this.elements[e]===this.elements[P]}extendToFullLines(e){var P,k;const I=(P=N(this.firstCharOffsetByLineMinusOne,Q=>Q<=e.start))!==null&&P!==void 0?P:0,V=(k=O(this.firstCharOffsetByLineMinusOne,Q=>e.endExclusive<=Q))!==null&&k!==void 0?k:this.elements.length;return new g.OffsetRange(I,V)}}n.LinesSliceCharSequence=w;function A($,e){let P=0,k=$.length;for(;P<k;){const I=Math.floor((P+k)/2);e($[I])?P=I+1:k=I}return P-1}function N($,e){const P=A($,e);return P===-1?void 0:$[P]}n.findLastMonotonous=N;function F($,e){let P=0,k=$.length;for(;P<k;){const I=Math.floor((P+k)/2);e($[I])?k=I:P=I+1}return P}function O($,e){const P=F($,e);return P===$.length?void 0:$[P]}n.findFirstMonotonous=O;function q($){return $>=97&&$<=122||$>=65&&$<=90||$>=48&&$<=57}const T={[0]:0,[1]:0,[2]:0,[3]:10,[4]:2,[5]:3,[6]:10,[7]:10};function W($){return T[$]}function G($){return $===10?7:$===13?6:ae($)?5:$>=97&&$<=122?0:$>=65&&$<=90?1:$>=48&&$<=57?2:$===-1?3:4}function ae($){return $===32||$===9}const re=new Map;function ne($){let e=re.get($);return e===void 0&&(e=re.size,re.set($,e)),e}class fe{constructor(e,P,k){this.range=e,this.lines=P,this.source=k,this.histogram=[];let I=0;for(let V=e.startLineNumber-1;V<e.endLineNumberExclusive-1;V++){const Q=P[V];for(let ue=0;ue<Q.length;ue++){I++;const he=Q[ue],ge=ne(he);this.histogram[ge]=(this.histogram[ge]||0)+1}I++;const ee=ne(`\n`);this.histogram[ee]=(this.histogram[ee]||0)+1}this.totalCount=I}computeSimilarity(e){var P,k;let I=0;const V=Math.max(this.histogram.length,e.histogram.length);for(let Q=0;Q<V;Q++)I+=Math.abs(((P=this.histogram[Q])!==null&&P!==void 0?P:0)-((k=e.histogram[Q])!==null&&k!==void 0?k:0));return 1-I/(this.totalCount+e.totalCount)}}}),K(te[43],ie([0,1,21,26,5,2,9,12]),function(U,n,E,M,i,u,f,g){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.DiffComputer=n.LegacyLinesDiffComputer=void 0;const a=3;class s{computeDiff(p,r,l){var o;const b=new d(p,r,{maxComputationTime:l.maxComputationTimeMs,shouldIgnoreTrimWhitespace:l.ignoreTrimWhitespace,shouldComputeCharChanges:!0,shouldMakePrettyDiff:!0,shouldPostProcessCharChanges:!0}).computeDiff(),w=[];let A=null;for(const N of b.changes){let F;N.originalEndLineNumber===0?F=new g.LineRange(N.originalStartLineNumber+1,N.originalStartLineNumber+1):F=new g.LineRange(N.originalStartLineNumber,N.originalEndLineNumber+1);let O;N.modifiedEndLineNumber===0?O=new g.LineRange(N.modifiedStartLineNumber+1,N.modifiedStartLineNumber+1):O=new g.LineRange(N.modifiedStartLineNumber,N.modifiedEndLineNumber+1);let q=new M.LineRangeMapping(F,O,(o=N.charChanges)===null||o===void 0?void 0:o.map(T=>new M.RangeMapping(new u.Range(T.originalStartLineNumber,T.originalStartColumn,T.originalEndLineNumber,T.originalEndColumn),new u.Range(T.modifiedStartLineNumber,T.modifiedStartColumn,T.modifiedEndLineNumber,T.modifiedEndColumn))));A&&(A.modifiedRange.endLineNumberExclusive===q.modifiedRange.startLineNumber||A.originalRange.endLineNumberExclusive===q.originalRange.startLineNumber)&&(q=new M.LineRangeMapping(A.originalRange.join(q.originalRange),A.modifiedRange.join(q.modifiedRange),A.innerChanges&&q.innerChanges?A.innerChanges.concat(q.innerChanges):void 0),w.pop()),w.push(q),A=q}return(0,f.assertFn)(()=>(0,f.checkAdjacentItems)(w,(N,F)=>F.originalRange.startLineNumber-N.originalRange.endLineNumberExclusive===F.modifiedRange.startLineNumber-N.modifiedRange.endLineNumberExclusive&&N.originalRange.endLineNumberExclusive<F.originalRange.startLineNumber&&N.modifiedRange.endLineNumberExclusive<F.modifiedRange.startLineNumber)),new M.LinesDiff(w,[],b.quitEarly)}}n.LegacyLinesDiffComputer=s;function _(S,p,r,l){return new E.LcsDiff(S,p,r).ComputeDiff(l)}class t{constructor(p){const r=[],l=[];for(let o=0,v=p.length;o<v;o++)r[o]=y(p[o],1),l[o]=C(p[o],1);this.lines=p,this._startColumns=r,this._endColumns=l}getElements(){const p=[];for(let r=0,l=this.lines.length;r<l;r++)p[r]=this.lines[r].substring(this._startColumns[r]-1,this._endColumns[r]-1);return p}getStrictElement(p){return this.lines[p]}getStartLineNumber(p){return p+1}getEndLineNumber(p){return p+1}createCharSequence(p,r,l){const o=[],v=[],b=[];let w=0;for(let A=r;A<=l;A++){const N=this.lines[A],F=p?this._startColumns[A]:1,O=p?this._endColumns[A]:N.length+1;for(let q=F;q<O;q++)o[w]=N.charCodeAt(q-1),v[w]=A+1,b[w]=q,w++;!p&&A<l&&(o[w]=10,v[w]=A+1,b[w]=N.length+1,w++)}return new m(o,v,b)}}class m{constructor(p,r,l){this._charCodes=p,this._lineNumbers=r,this._columns=l}toString(){return\"[\"+this._charCodes.map((p,r)=>(p===10?\"\\\\n\":String.fromCharCode(p))+`-(${this._lineNumbers[r]},${this._columns[r]})`).join(\", \")+\"]\"}_assertIndex(p,r){if(p<0||p>=r.length)throw new Error(\"Illegal index\")}getElements(){return this._charCodes}getStartLineNumber(p){return p>0&&p===this._lineNumbers.length?this.getEndLineNumber(p-1):(this._assertIndex(p,this._lineNumbers),this._lineNumbers[p])}getEndLineNumber(p){return p===-1?this.getStartLineNumber(p+1):(this._assertIndex(p,this._lineNumbers),this._charCodes[p]===10?this._lineNumbers[p]+1:this._lineNumbers[p])}getStartColumn(p){return p>0&&p===this._columns.length?this.getEndColumn(p-1):(this._assertIndex(p,this._columns),this._columns[p])}getEndColumn(p){return p===-1?this.getStartColumn(p+1):(this._assertIndex(p,this._columns),this._charCodes[p]===10?1:this._columns[p]+1)}}class h{constructor(p,r,l,o,v,b,w,A){this.originalStartLineNumber=p,this.originalStartColumn=r,this.originalEndLineNumber=l,this.originalEndColumn=o,this.modifiedStartLineNumber=v,this.modifiedStartColumn=b,this.modifiedEndLineNumber=w,this.modifiedEndColumn=A}static createFromDiffChange(p,r,l){const o=r.getStartLineNumber(p.originalStart),v=r.getStartColumn(p.originalStart),b=r.getEndLineNumber(p.originalStart+p.originalLength-1),w=r.getEndColumn(p.originalStart+p.originalLength-1),A=l.getStartLineNumber(p.modifiedStart),N=l.getStartColumn(p.modifiedStart),F=l.getEndLineNumber(p.modifiedStart+p.modifiedLength-1),O=l.getEndColumn(p.modifiedStart+p.modifiedLength-1);return new h(o,v,b,w,A,N,F,O)}}function c(S){if(S.length<=1)return S;const p=[S[0]];let r=p[0];for(let l=1,o=S.length;l<o;l++){const v=S[l],b=v.originalStart-(r.originalStart+r.originalLength),w=v.modifiedStart-(r.modifiedStart+r.modifiedLength);Math.min(b,w)<a?(r.originalLength=v.originalStart+v.originalLength-r.originalStart,r.modifiedLength=v.modifiedStart+v.modifiedLength-r.modifiedStart):(p.push(v),r=v)}return p}class L{constructor(p,r,l,o,v){this.originalStartLineNumber=p,this.originalEndLineNumber=r,this.modifiedStartLineNumber=l,this.modifiedEndLineNumber=o,this.charChanges=v}static createFromDiffResult(p,r,l,o,v,b,w){let A,N,F,O,q;if(r.originalLength===0?(A=l.getStartLineNumber(r.originalStart)-1,N=0):(A=l.getStartLineNumber(r.originalStart),N=l.getEndLineNumber(r.originalStart+r.originalLength-1)),r.modifiedLength===0?(F=o.getStartLineNumber(r.modifiedStart)-1,O=0):(F=o.getStartLineNumber(r.modifiedStart),O=o.getEndLineNumber(r.modifiedStart+r.modifiedLength-1)),b&&r.originalLength>0&&r.originalLength<20&&r.modifiedLength>0&&r.modifiedLength<20&&v()){const T=l.createCharSequence(p,r.originalStart,r.originalStart+r.originalLength-1),W=o.createCharSequence(p,r.modifiedStart,r.modifiedStart+r.modifiedLength-1);if(T.getElements().length>0&&W.getElements().length>0){let G=_(T,W,v,!0).changes;w&&(G=c(G)),q=[];for(let ae=0,re=G.length;ae<re;ae++)q.push(h.createFromDiffChange(G[ae],T,W))}}return new L(A,N,F,O,q)}}class d{constructor(p,r,l){this.shouldComputeCharChanges=l.shouldComputeCharChanges,this.shouldPostProcessCharChanges=l.shouldPostProcessCharChanges,this.shouldIgnoreTrimWhitespace=l.shouldIgnoreTrimWhitespace,this.shouldMakePrettyDiff=l.shouldMakePrettyDiff,this.originalLines=p,this.modifiedLines=r,this.original=new t(p),this.modified=new t(r),this.continueLineDiff=R(l.maxComputationTime),this.continueCharDiff=R(l.maxComputationTime===0?0:Math.min(l.maxComputationTime,5e3))}computeDiff(){if(this.original.lines.length===1&&this.original.lines[0].length===0)return this.modified.lines.length===1&&this.modified.lines[0].length===0?{quitEarly:!1,changes:[]}:{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:1,modifiedStartLineNumber:1,modifiedEndLineNumber:this.modified.lines.length,charChanges:void 0}]};if(this.modified.lines.length===1&&this.modified.lines[0].length===0)return{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:this.original.lines.length,modifiedStartLineNumber:1,modifiedEndLineNumber:1,charChanges:void 0}]};const p=_(this.original,this.modified,this.continueLineDiff,this.shouldMakePrettyDiff),r=p.changes,l=p.quitEarly;if(this.shouldIgnoreTrimWhitespace){const w=[];for(let A=0,N=r.length;A<N;A++)w.push(L.createFromDiffResult(this.shouldIgnoreTrimWhitespace,r[A],this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges));return{quitEarly:l,changes:w}}const o=[];let v=0,b=0;for(let w=-1,A=r.length;w<A;w++){const N=w+1<A?r[w+1]:null,F=N?N.originalStart:this.originalLines.length,O=N?N.modifiedStart:this.modifiedLines.length;for(;v<F&&b<O;){const q=this.originalLines[v],T=this.modifiedLines[b];if(q!==T){{let W=y(q,1),G=y(T,1);for(;W>1&&G>1;){const ae=q.charCodeAt(W-2),re=T.charCodeAt(G-2);if(ae!==re)break;W--,G--}(W>1||G>1)&&this._pushTrimWhitespaceCharChange(o,v+1,1,W,b+1,1,G)}{let W=C(q,1),G=C(T,1);const ae=q.length+1,re=T.length+1;for(;W<ae&&G<re;){const ne=q.charCodeAt(W-1),fe=q.charCodeAt(G-1);if(ne!==fe)break;W++,G++}(W<ae||G<re)&&this._pushTrimWhitespaceCharChange(o,v+1,W,ae,b+1,G,re)}}v++,b++}N&&(o.push(L.createFromDiffResult(this.shouldIgnoreTrimWhitespace,N,this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges)),v+=N.originalLength,b+=N.modifiedLength)}return{quitEarly:l,changes:o}}_pushTrimWhitespaceCharChange(p,r,l,o,v,b,w){if(this._mergeTrimWhitespaceCharChange(p,r,l,o,v,b,w))return;let A;this.shouldComputeCharChanges&&(A=[new h(r,l,r,o,v,b,v,w)]),p.push(new L(r,r,v,v,A))}_mergeTrimWhitespaceCharChange(p,r,l,o,v,b,w){const A=p.length;if(A===0)return!1;const N=p[A-1];return N.originalEndLineNumber===0||N.modifiedEndLineNumber===0?!1:N.originalEndLineNumber===r&&N.modifiedEndLineNumber===v?(this.shouldComputeCharChanges&&N.charChanges&&N.charChanges.push(new h(r,l,r,o,v,b,v,w)),!0):N.originalEndLineNumber+1===r&&N.modifiedEndLineNumber+1===v?(N.originalEndLineNumber=r,N.modifiedEndLineNumber=v,this.shouldComputeCharChanges&&N.charChanges&&N.charChanges.push(new h(r,l,r,o,v,b,v,w)),!0):!1}}n.DiffComputer=d;function y(S,p){const r=i.firstNonWhitespaceIndex(S);return r===-1?p:r+1}function C(S,p){const r=i.lastNonWhitespaceIndex(S);return r===-1?p:r+2}function R(S){if(S===0)return()=>!0;const p=Date.now();return()=>Date.now()-p<S}}),K(te[44],ie([0,1,43,42]),function(U,n,E,M){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.linesDiffComputers=void 0,n.linesDiffComputers={getLegacy:()=>new E.LegacyLinesDiffComputer,getAdvanced:()=>new M.AdvancedLinesDiffComputer}}),K(te[45],ie([0,1,29]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.computeDefaultDocumentColors=void 0;function M(m){const h=[];for(const c of m){const L=Number(c);(L||L===0&&c.replace(/\\s/g,\"\")!==\"\")&&h.push(L)}return h}function i(m,h,c,L){return{red:m/255,blue:c/255,green:h/255,alpha:L}}function u(m,h){const c=h.index,L=h[0].length;if(!c)return;const d=m.positionAt(c);return{startLineNumber:d.lineNumber,startColumn:d.column,endLineNumber:d.lineNumber,endColumn:d.column+L}}function f(m,h){if(!m)return;const c=E.Color.Format.CSS.parseHex(h);if(c)return{range:m,color:i(c.rgba.r,c.rgba.g,c.rgba.b,c.rgba.a)}}function g(m,h,c){if(!m||h.length!==1)return;const d=h[0].values(),y=M(d);return{range:m,color:i(y[0],y[1],y[2],c?y[3]:1)}}function a(m,h,c){if(!m||h.length!==1)return;const d=h[0].values(),y=M(d),C=new E.Color(new E.HSLA(y[0],y[1]/100,y[2]/100,c?y[3]:1));return{range:m,color:i(C.rgba.r,C.rgba.g,C.rgba.b,C.rgba.a)}}function s(m,h){return typeof m==\"string\"?[...m.matchAll(h)]:m.findMatches(h)}function _(m){const h=[],L=s(m,/\\b(rgb|rgba|hsl|hsla)(\\([0-9\\s,.\\%]*\\))|(#)([A-Fa-f0-9]{3})\\b|(#)([A-Fa-f0-9]{4})\\b|(#)([A-Fa-f0-9]{6})\\b|(#)([A-Fa-f0-9]{8})\\b/gm);if(L.length>0)for(const d of L){const y=d.filter(p=>p!==void 0),C=y[1],R=y[2];if(!R)continue;let S;if(C===\"rgb\"){const p=/^\\(\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*\\)$/gm;S=g(u(m,d),s(R,p),!1)}else if(C===\"rgba\"){const p=/^\\(\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\\s*\\)$/gm;S=g(u(m,d),s(R,p),!0)}else if(C===\"hsl\"){const p=/^\\(\\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\\s*,\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*,\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*\\)$/gm;S=a(u(m,d),s(R,p),!1)}else if(C===\"hsla\"){const p=/^\\(\\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\\s*,\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*,\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*,\\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\\s*\\)$/gm;S=a(u(m,d),s(R,p),!0)}else C===\"#\"&&(S=f(u(m,d),C+R));S&&h.push(S)}return h}function t(m){return!m||typeof m.getValue!=\"function\"||typeof m.positionAt!=\"function\"?[]:_(m)}n.computeDefaultDocumentColors=t}),K(te[46],ie([0,1,24]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.computeLinks=n.LinkComputer=n.StateMachine=void 0;class M{constructor(m,h,c){const L=new Uint8Array(m*h);for(let d=0,y=m*h;d<y;d++)L[d]=c;this._data=L,this.rows=m,this.cols=h}get(m,h){return this._data[m*this.cols+h]}set(m,h,c){this._data[m*this.cols+h]=c}}class i{constructor(m){let h=0,c=0;for(let d=0,y=m.length;d<y;d++){const[C,R,S]=m[d];R>h&&(h=R),C>c&&(c=C),S>c&&(c=S)}h++,c++;const L=new M(c,h,0);for(let d=0,y=m.length;d<y;d++){const[C,R,S]=m[d];L.set(C,R,S)}this._states=L,this._maxCharCode=h}nextState(m,h){return h<0||h>=this._maxCharCode?0:this._states.get(m,h)}}n.StateMachine=i;let u=null;function f(){return u===null&&(u=new i([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),u}let g=null;function a(){if(g===null){g=new E.CharacterClassifier(0);const t=` \t<>'\"\\u3001\\u3002\\uFF61\\uFF64\\uFF0C\\uFF0E\\uFF1A\\uFF1B\\u2018\\u3008\\u300C\\u300E\\u3014\\uFF08\\uFF3B\\uFF5B\\uFF62\\uFF63\\uFF5D\\uFF3D\\uFF09\\u3015\\u300F\\u300D\\u3009\\u2019\\uFF40\\uFF5E\\u2026`;for(let h=0;h<t.length;h++)g.set(t.charCodeAt(h),1);const m=\".,;:\";for(let h=0;h<m.length;h++)g.set(m.charCodeAt(h),2)}return g}class s{static _createLink(m,h,c,L,d){let y=d-1;do{const C=h.charCodeAt(y);if(m.get(C)!==2)break;y--}while(y>L);if(L>0){const C=h.charCodeAt(L-1),R=h.charCodeAt(y);(C===40&&R===41||C===91&&R===93||C===123&&R===125)&&y--}return{range:{startLineNumber:c,startColumn:L+1,endLineNumber:c,endColumn:y+2},url:h.substring(L,y+1)}}static computeLinks(m,h=f()){const c=a(),L=[];for(let d=1,y=m.getLineCount();d<=y;d++){const C=m.getLineContent(d),R=C.length;let S=0,p=0,r=0,l=1,o=!1,v=!1,b=!1,w=!1;for(;S<R;){let A=!1;const N=C.charCodeAt(S);if(l===13){let F;switch(N){case 40:o=!0,F=0;break;case 41:F=o?0:1;break;case 91:b=!0,v=!0,F=0;break;case 93:b=!1,F=v?0:1;break;case 123:w=!0,F=0;break;case 125:F=w?0:1;break;case 39:case 34:case 96:r===N?F=1:r===39||r===34||r===96?F=0:F=1;break;case 42:F=r===42?1:0;break;case 124:F=r===124?1:0;break;case 32:F=b?0:1;break;default:F=c.get(N)}F===1&&(L.push(s._createLink(c,C,d,p,S)),A=!0)}else if(l===12){let F;N===91?(v=!0,F=0):F=c.get(N),F===1?A=!0:l=13}else l=h.nextState(l,N),l===0&&(A=!0);A&&(l=1,o=!1,v=!1,w=!1,p=S+1,r=N),S++}l===13&&L.push(s._createLink(c,C,d,p,R))}return L}}n.LinkComputer=s;function _(t){return!t||typeof t.getLineCount!=\"function\"||typeof t.getLineContent!=\"function\"?[]:s.computeLinks(t)}n.computeLinks=_}),K(te[47],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.BasicInplaceReplace=void 0;class E{constructor(){this._defaultValueSet=[[\"true\",\"false\"],[\"True\",\"False\"],[\"Private\",\"Public\",\"Friend\",\"ReadOnly\",\"Partial\",\"Protected\",\"WriteOnly\"],[\"public\",\"protected\",\"private\"]]}navigateValueSet(i,u,f,g,a){if(i&&u){const s=this.doNavigateValueSet(u,a);if(s)return{range:i,value:s}}if(f&&g){const s=this.doNavigateValueSet(g,a);if(s)return{range:f,value:s}}return null}doNavigateValueSet(i,u){const f=this.numberReplace(i,u);return f!==null?f:this.textReplace(i,u)}numberReplace(i,u){const f=Math.pow(10,i.length-(i.lastIndexOf(\".\")+1));let g=Number(i);const a=parseFloat(i);return!isNaN(g)&&!isNaN(a)&&g===a?g===0&&!u?null:(g=Math.floor(g*f),g+=u?f:-f,String(g/f)):null}textReplace(i,u){return this.valueSetsReplace(this._defaultValueSet,i,u)}valueSetsReplace(i,u,f){let g=null;for(let a=0,s=i.length;g===null&&a<s;a++)g=this.valueSetReplace(i[a],u,f);return g}valueSetReplace(i,u,f){let g=i.indexOf(u);return g>=0?(g+=f?1:-1,g<0?g=i.length-1:g%=i.length,i[g]):null}}n.BasicInplaceReplace=E,E.INSTANCE=new E}),K(te[48],ie([0,1,11]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.shouldSynchronizeModel=n.ApplyEditsResult=n.SearchData=n.ValidAnnotatedEditOperation=n.isITextSnapshot=n.FindMatch=n.TextModelResolvedOptions=n.InjectedTextCursorStops=n.MinimapPosition=n.GlyphMarginLane=n.OverviewRulerLane=void 0;var M;(function(c){c[c.Left=1]=\"Left\",c[c.Center=2]=\"Center\",c[c.Right=4]=\"Right\",c[c.Full=7]=\"Full\"})(M||(n.OverviewRulerLane=M={}));var i;(function(c){c[c.Left=1]=\"Left\",c[c.Right=2]=\"Right\"})(i||(n.GlyphMarginLane=i={}));var u;(function(c){c[c.Inline=1]=\"Inline\",c[c.Gutter=2]=\"Gutter\"})(u||(n.MinimapPosition=u={}));var f;(function(c){c[c.Both=0]=\"Both\",c[c.Right=1]=\"Right\",c[c.Left=2]=\"Left\",c[c.None=3]=\"None\"})(f||(n.InjectedTextCursorStops=f={}));class g{get originalIndentSize(){return this._indentSizeIsTabSize?\"tabSize\":this.indentSize}constructor(L){this._textModelResolvedOptionsBrand=void 0,this.tabSize=Math.max(1,L.tabSize|0),L.indentSize===\"tabSize\"?(this.indentSize=this.tabSize,this._indentSizeIsTabSize=!0):(this.indentSize=Math.max(1,L.indentSize|0),this._indentSizeIsTabSize=!1),this.insertSpaces=!!L.insertSpaces,this.defaultEOL=L.defaultEOL|0,this.trimAutoWhitespace=!!L.trimAutoWhitespace,this.bracketPairColorizationOptions=L.bracketPairColorizationOptions}equals(L){return this.tabSize===L.tabSize&&this._indentSizeIsTabSize===L._indentSizeIsTabSize&&this.indentSize===L.indentSize&&this.insertSpaces===L.insertSpaces&&this.defaultEOL===L.defaultEOL&&this.trimAutoWhitespace===L.trimAutoWhitespace&&(0,E.equals)(this.bracketPairColorizationOptions,L.bracketPairColorizationOptions)}createChangeEvent(L){return{tabSize:this.tabSize!==L.tabSize,indentSize:this.indentSize!==L.indentSize,insertSpaces:this.insertSpaces!==L.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==L.trimAutoWhitespace}}}n.TextModelResolvedOptions=g;class a{constructor(L,d){this._findMatchBrand=void 0,this.range=L,this.matches=d}}n.FindMatch=a;function s(c){return c&&typeof c.read==\"function\"}n.isITextSnapshot=s;class _{constructor(L,d,y,C,R,S){this.identifier=L,this.range=d,this.text=y,this.forceMoveMarkers=C,this.isAutoWhitespaceEdit=R,this._isTracked=S}}n.ValidAnnotatedEditOperation=_;class t{constructor(L,d,y){this.regex=L,this.wordSeparators=d,this.simpleSearch=y}}n.SearchData=t;class m{constructor(L,d,y){this.reverseEdits=L,this.changes=d,this.trimAutoWhitespaceLineNumbers=y}}n.ApplyEditsResult=m;function h(c){return!c.isTooLargeForSyncing()&&!c.isForSimpleWidget}n.shouldSynchronizeModel=h}),K(te[49],ie([0,1,16,23]),function(U,n,E,M){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.PrefixSumIndexOfResult=n.ConstantTimePrefixSumComputer=n.PrefixSumComputer=void 0;class i{constructor(a){this.values=a,this.prefixSum=new Uint32Array(a.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(a,s){a=(0,M.toUint32)(a);const _=this.values,t=this.prefixSum,m=s.length;return m===0?!1:(this.values=new Uint32Array(_.length+m),this.values.set(_.subarray(0,a),0),this.values.set(_.subarray(a),a+m),this.values.set(s,a),a-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=a-1),this.prefixSum=new Uint32Array(this.values.length),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(t.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(a,s){return a=(0,M.toUint32)(a),s=(0,M.toUint32)(s),this.values[a]===s?!1:(this.values[a]=s,a-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=a-1),!0)}removeValues(a,s){a=(0,M.toUint32)(a),s=(0,M.toUint32)(s);const _=this.values,t=this.prefixSum;if(a>=_.length)return!1;const m=_.length-a;return s>=m&&(s=m),s===0?!1:(this.values=new Uint32Array(_.length-s),this.values.set(_.subarray(0,a),0),this.values.set(_.subarray(a+s),a),this.prefixSum=new Uint32Array(this.values.length),a-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=a-1),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(t.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(a){return a<0?0:(a=(0,M.toUint32)(a),this._getPrefixSum(a))}_getPrefixSum(a){if(a<=this.prefixSumValidIndex[0])return this.prefixSum[a];let s=this.prefixSumValidIndex[0]+1;s===0&&(this.prefixSum[0]=this.values[0],s++),a>=this.values.length&&(a=this.values.length-1);for(let _=s;_<=a;_++)this.prefixSum[_]=this.prefixSum[_-1]+this.values[_];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],a),this.prefixSum[a]}getIndexOf(a){a=Math.floor(a),this.getTotalSum();let s=0,_=this.values.length-1,t=0,m=0,h=0;for(;s<=_;)if(t=s+(_-s)/2|0,m=this.prefixSum[t],h=m-this.values[t],a<h)_=t-1;else if(a>=m)s=t+1;else break;return new f(t,a-h)}}n.PrefixSumComputer=i;class u{constructor(a){this._values=a,this._isValid=!1,this._validEndIndex=-1,this._prefixSum=[],this._indexBySum=[]}getTotalSum(){return this._ensureValid(),this._indexBySum.length}getPrefixSum(a){return this._ensureValid(),a===0?0:this._prefixSum[a-1]}getIndexOf(a){this._ensureValid();const s=this._indexBySum[a],_=s>0?this._prefixSum[s-1]:0;return new f(s,a-_)}removeValues(a,s){this._values.splice(a,s),this._invalidate(a)}insertValues(a,s){this._values=(0,E.arrayInsert)(this._values,a,s),this._invalidate(a)}_invalidate(a){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,a-1)}_ensureValid(){if(!this._isValid){for(let a=this._validEndIndex+1,s=this._values.length;a<s;a++){const _=this._values[a],t=a>0?this._prefixSum[a-1]:0;this._prefixSum[a]=t+_;for(let m=0;m<_;m++)this._indexBySum[t+m]=a}this._prefixSum.length=this._values.length,this._indexBySum.length=this._prefixSum[this._prefixSum.length-1],this._isValid=!0,this._validEndIndex=this._values.length-1}}setValue(a,s){this._values[a]!==s&&(this._values[a]=s,this._invalidate(a))}}n.ConstantTimePrefixSumComputer=u;class f{constructor(a,s){this.index=a,this.remainder=s,this._prefixSumIndexOfResultBrand=void 0,this.index=a,this.remainder=s}}n.PrefixSumIndexOfResult=f}),K(te[50],ie([0,1,5,4,49]),function(U,n,E,M,i){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.MirrorTextModel=void 0;class u{constructor(g,a,s,_){this._uri=g,this._lines=a,this._eol=s,this._versionId=_,this._lineStarts=null,this._cachedTextValue=null}dispose(){this._lines.length=0}get version(){return this._versionId}getText(){return this._cachedTextValue===null&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}onEvents(g){g.eol&&g.eol!==this._eol&&(this._eol=g.eol,this._lineStarts=null);const a=g.changes;for(const s of a)this._acceptDeleteRange(s.range),this._acceptInsertText(new M.Position(s.range.startLineNumber,s.range.startColumn),s.text);this._versionId=g.versionId,this._cachedTextValue=null}_ensureLineStarts(){if(!this._lineStarts){const g=this._eol.length,a=this._lines.length,s=new Uint32Array(a);for(let _=0;_<a;_++)s[_]=this._lines[_].length+g;this._lineStarts=new i.PrefixSumComputer(s)}}_setLineText(g,a){this._lines[g]=a,this._lineStarts&&this._lineStarts.setValue(g,this._lines[g].length+this._eol.length)}_acceptDeleteRange(g){if(g.startLineNumber===g.endLineNumber){if(g.startColumn===g.endColumn)return;this._setLineText(g.startLineNumber-1,this._lines[g.startLineNumber-1].substring(0,g.startColumn-1)+this._lines[g.startLineNumber-1].substring(g.endColumn-1));return}this._setLineText(g.startLineNumber-1,this._lines[g.startLineNumber-1].substring(0,g.startColumn-1)+this._lines[g.endLineNumber-1].substring(g.endColumn-1)),this._lines.splice(g.startLineNumber,g.endLineNumber-g.startLineNumber),this._lineStarts&&this._lineStarts.removeValues(g.startLineNumber,g.endLineNumber-g.startLineNumber)}_acceptInsertText(g,a){if(a.length===0)return;const s=(0,E.splitLines)(a);if(s.length===1){this._setLineText(g.lineNumber-1,this._lines[g.lineNumber-1].substring(0,g.column-1)+s[0]+this._lines[g.lineNumber-1].substring(g.column-1));return}s[s.length-1]+=this._lines[g.lineNumber-1].substring(g.column-1),this._setLineText(g.lineNumber-1,this._lines[g.lineNumber-1].substring(0,g.column-1)+s[0]);const _=new Uint32Array(s.length-1);for(let t=1;t<s.length;t++)this._lines.splice(g.lineNumber+t-1,0,s[t]),_[t-1]=s[t].length+this._eol.length;this._lineStarts&&this._lineStarts.insertValues(g.lineNumber,_)}}n.MirrorTextModel=u}),K(te[51],ie([0,1,5,37,4,2,48]),function(U,n,E,M,i,u,f){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.Searcher=n.isValidMatch=n.TextModelSearch=n.createFindMatch=n.isMultilineRegexSource=n.SearchParams=void 0;const g=999;class a{constructor(C,R,S,p){this.searchString=C,this.isRegex=R,this.matchCase=S,this.wordSeparators=p}parseSearchRequest(){if(this.searchString===\"\")return null;let C;this.isRegex?C=s(this.searchString):C=this.searchString.indexOf(`\n`)>=0;let R=null;try{R=E.createRegExp(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:C,global:!0,unicode:!0})}catch{return null}if(!R)return null;let S=!this.isRegex&&!C;return S&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(S=this.matchCase),new f.SearchData(R,this.wordSeparators?(0,M.getMapForWordSeparators)(this.wordSeparators):null,S?this.searchString:null)}}n.SearchParams=a;function s(y){if(!y||y.length===0)return!1;for(let C=0,R=y.length;C<R;C++){const S=y.charCodeAt(C);if(S===10)return!0;if(S===92){if(C++,C>=R)break;const p=y.charCodeAt(C);if(p===110||p===114||p===87)return!0}}return!1}n.isMultilineRegexSource=s;function _(y,C,R){if(!R)return new f.FindMatch(y,null);const S=[];for(let p=0,r=C.length;p<r;p++)S[p]=C[p];return new f.FindMatch(y,S)}n.createFindMatch=_;class t{constructor(C){const R=[];let S=0;for(let p=0,r=C.length;p<r;p++)C.charCodeAt(p)===10&&(R[S++]=p);this._lineFeedsOffsets=R}findLineFeedCountBeforeOffset(C){const R=this._lineFeedsOffsets;let S=0,p=R.length-1;if(p===-1||C<=R[0])return 0;for(;S<p;){const r=S+((p-S)/2>>0);R[r]>=C?p=r-1:R[r+1]>=C?(S=r,p=r):S=r+1}return S+1}}class m{static findMatches(C,R,S,p,r){const l=R.parseSearchRequest();return l?l.regex.multiline?this._doFindMatchesMultiline(C,S,new d(l.wordSeparators,l.regex),p,r):this._doFindMatchesLineByLine(C,S,l,p,r):[]}static _getMultilineMatchRange(C,R,S,p,r,l){let o,v=0;p?(v=p.findLineFeedCountBeforeOffset(r),o=R+r+v):o=R+r;let b;if(p){const F=p.findLineFeedCountBeforeOffset(r+l.length)-v;b=o+l.length+F}else b=o+l.length;const w=C.getPositionAt(o),A=C.getPositionAt(b);return new u.Range(w.lineNumber,w.column,A.lineNumber,A.column)}static _doFindMatchesMultiline(C,R,S,p,r){const l=C.getOffsetAt(R.getStartPosition()),o=C.getValueInRange(R,1),v=C.getEOL()===`\\r\n`?new t(o):null,b=[];let w=0,A;for(S.reset(0);A=S.next(o);)if(b[w++]=_(this._getMultilineMatchRange(C,l,o,v,A.index,A[0]),A,p),w>=r)return b;return b}static _doFindMatchesLineByLine(C,R,S,p,r){const l=[];let o=0;if(R.startLineNumber===R.endLineNumber){const b=C.getLineContent(R.startLineNumber).substring(R.startColumn-1,R.endColumn-1);return o=this._findMatchesInLine(S,b,R.startLineNumber,R.startColumn-1,o,l,p,r),l}const v=C.getLineContent(R.startLineNumber).substring(R.startColumn-1);o=this._findMatchesInLine(S,v,R.startLineNumber,R.startColumn-1,o,l,p,r);for(let b=R.startLineNumber+1;b<R.endLineNumber&&o<r;b++)o=this._findMatchesInLine(S,C.getLineContent(b),b,0,o,l,p,r);if(o<r){const b=C.getLineContent(R.endLineNumber).substring(0,R.endColumn-1);o=this._findMatchesInLine(S,b,R.endLineNumber,0,o,l,p,r)}return l}static _findMatchesInLine(C,R,S,p,r,l,o,v){const b=C.wordSeparators;if(!o&&C.simpleSearch){const N=C.simpleSearch,F=N.length,O=R.length;let q=-F;for(;(q=R.indexOf(N,q+F))!==-1;)if((!b||L(b,R,O,q,F))&&(l[r++]=new f.FindMatch(new u.Range(S,q+1+p,S,q+1+F+p),null),r>=v))return r;return r}const w=new d(C.wordSeparators,C.regex);let A;w.reset(0);do if(A=w.next(R),A&&(l[r++]=_(new u.Range(S,A.index+1+p,S,A.index+1+A[0].length+p),A,o),r>=v))return r;while(A);return r}static findNextMatch(C,R,S,p){const r=R.parseSearchRequest();if(!r)return null;const l=new d(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindNextMatchMultiline(C,S,l,p):this._doFindNextMatchLineByLine(C,S,l,p)}static _doFindNextMatchMultiline(C,R,S,p){const r=new i.Position(R.lineNumber,1),l=C.getOffsetAt(r),o=C.getLineCount(),v=C.getValueInRange(new u.Range(r.lineNumber,r.column,o,C.getLineMaxColumn(o)),1),b=C.getEOL()===`\\r\n`?new t(v):null;S.reset(R.column-1);const w=S.next(v);return w?_(this._getMultilineMatchRange(C,l,v,b,w.index,w[0]),w,p):R.lineNumber!==1||R.column!==1?this._doFindNextMatchMultiline(C,new i.Position(1,1),S,p):null}static _doFindNextMatchLineByLine(C,R,S,p){const r=C.getLineCount(),l=R.lineNumber,o=C.getLineContent(l),v=this._findFirstMatchInLine(S,o,l,R.column,p);if(v)return v;for(let b=1;b<=r;b++){const w=(l+b-1)%r,A=C.getLineContent(w+1),N=this._findFirstMatchInLine(S,A,w+1,1,p);if(N)return N}return null}static _findFirstMatchInLine(C,R,S,p,r){C.reset(p-1);const l=C.next(R);return l?_(new u.Range(S,l.index+1,S,l.index+1+l[0].length),l,r):null}static findPreviousMatch(C,R,S,p){const r=R.parseSearchRequest();if(!r)return null;const l=new d(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindPreviousMatchMultiline(C,S,l,p):this._doFindPreviousMatchLineByLine(C,S,l,p)}static _doFindPreviousMatchMultiline(C,R,S,p){const r=this._doFindMatchesMultiline(C,new u.Range(1,1,R.lineNumber,R.column),S,p,10*g);if(r.length>0)return r[r.length-1];const l=C.getLineCount();return R.lineNumber!==l||R.column!==C.getLineMaxColumn(l)?this._doFindPreviousMatchMultiline(C,new i.Position(l,C.getLineMaxColumn(l)),S,p):null}static _doFindPreviousMatchLineByLine(C,R,S,p){const r=C.getLineCount(),l=R.lineNumber,o=C.getLineContent(l).substring(0,R.column-1),v=this._findLastMatchInLine(S,o,l,p);if(v)return v;for(let b=1;b<=r;b++){const w=(r+l-b-1)%r,A=C.getLineContent(w+1),N=this._findLastMatchInLine(S,A,w+1,p);if(N)return N}return null}static _findLastMatchInLine(C,R,S,p){let r=null,l;for(C.reset(0);l=C.next(R);)r=_(new u.Range(S,l.index+1,S,l.index+1+l[0].length),l,p);return r}}n.TextModelSearch=m;function h(y,C,R,S,p){if(S===0)return!0;const r=C.charCodeAt(S-1);if(y.get(r)!==0||r===13||r===10)return!0;if(p>0){const l=C.charCodeAt(S);if(y.get(l)!==0)return!0}return!1}function c(y,C,R,S,p){if(S+p===R)return!0;const r=C.charCodeAt(S+p);if(y.get(r)!==0||r===13||r===10)return!0;if(p>0){const l=C.charCodeAt(S+p-1);if(y.get(l)!==0)return!0}return!1}function L(y,C,R,S,p){return h(y,C,R,S,p)&&c(y,C,R,S,p)}n.isValidMatch=L;class d{constructor(C,R){this._wordSeparators=C,this._searchRegex=R,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(C){this._searchRegex.lastIndex=C,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(C){const R=C.length;let S;do{if(this._prevMatchStartIndex+this._prevMatchLength===R||(S=this._searchRegex.exec(C),!S))return null;const p=S.index,r=S[0].length;if(p===this._prevMatchStartIndex&&r===this._prevMatchLength){if(r===0){E.getNextCodePoint(C,R,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=p,this._prevMatchLength=r,!this._wordSeparators||L(this._wordSeparators,C,R,p,r))return S}while(S);return null}}n.Searcher=d}),K(te[52],ie([0,1,2,51,5,9,25]),function(U,n,E,M,i,u,f){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.UnicodeTextModelHighlighter=void 0;class g{static computeUnicodeHighlights(m,h,c){const L=c?c.startLineNumber:1,d=c?c.endLineNumber:m.getLineCount(),y=new s(h),C=y.getCandidateCodePoints();let R;C===\"allNonBasicAscii\"?R=new RegExp(\"[^\\\\t\\\\n\\\\r\\\\x20-\\\\x7E]\",\"g\"):R=new RegExp(`${a(Array.from(C))}`,\"g\");const S=new M.Searcher(null,R),p=[];let r=!1,l,o=0,v=0,b=0;e:for(let w=L,A=d;w<=A;w++){const N=m.getLineContent(w),F=N.length;S.reset(0);do if(l=S.next(N),l){let O=l.index,q=l.index+l[0].length;if(O>0){const ae=N.charCodeAt(O-1);i.isHighSurrogate(ae)&&O--}if(q+1<F){const ae=N.charCodeAt(q-1);i.isHighSurrogate(ae)&&q++}const T=N.substring(O,q);let W=(0,f.getWordAtText)(O+1,f.DEFAULT_WORD_REGEXP,N,0);W&&W.endColumn<=O+1&&(W=null);const G=y.shouldHighlightNonBasicASCII(T,W?W.word:null);if(G!==0){G===3?o++:G===2?v++:G===1?b++:(0,u.assertNever)(G);const ae=1e3;if(p.length>=ae){r=!0;break e}p.push(new E.Range(w,O+1,w,q+1))}}while(l)}return{ranges:p,hasMore:r,ambiguousCharacterCount:o,invisibleCharacterCount:v,nonBasicAsciiCharacterCount:b}}static computeUnicodeHighlightReason(m,h){const c=new s(h);switch(c.shouldHighlightNonBasicASCII(m,null)){case 0:return null;case 2:return{kind:1};case 3:{const d=m.codePointAt(0),y=c.ambiguousCharacters.getPrimaryConfusable(d),C=i.AmbiguousCharacters.getLocales().filter(R=>!i.AmbiguousCharacters.getInstance(new Set([...h.allowedLocales,R])).isAmbiguous(d));return{kind:0,confusableWith:String.fromCodePoint(y),notAmbiguousInLocales:C}}case 1:return{kind:2}}}}n.UnicodeTextModelHighlighter=g;function a(t,m){return`[${i.escapeRegExpCharacters(t.map(c=>String.fromCodePoint(c)).join(\"\"))}]`}class s{constructor(m){this.options=m,this.allowedCodePoints=new Set(m.allowedCodePoints),this.ambiguousCharacters=i.AmbiguousCharacters.getInstance(new Set(m.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return\"allNonBasicAscii\";const m=new Set;if(this.options.invisibleCharacters)for(const h of i.InvisibleCharacters.codePoints)_(String.fromCodePoint(h))||m.add(h);if(this.options.ambiguousCharacters)for(const h of this.ambiguousCharacters.getConfusableCodePoints())m.add(h);for(const h of this.allowedCodePoints)m.delete(h);return m}shouldHighlightNonBasicASCII(m,h){const c=m.codePointAt(0);if(this.allowedCodePoints.has(c))return 0;if(this.options.nonBasicASCII)return 1;let L=!1,d=!1;if(h)for(const y of h){const C=y.codePointAt(0),R=i.isBasicASCII(y);L=L||R,!R&&!this.ambiguousCharacters.isAmbiguous(C)&&!i.InvisibleCharacters.isInvisibleCharacter(C)&&(d=!0)}return!L&&d?0:this.options.invisibleCharacters&&!_(m)&&i.InvisibleCharacters.isInvisibleCharacter(c)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(c)?3:0}}function _(t){return t===\" \"||t===`\n`||t===\"\t\"}}),K(te[53],ie([0,1]),function(U,n){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.WrappingIndent=n.TrackedRangeStickiness=n.TextEditorCursorStyle=n.TextEditorCursorBlinkingStyle=n.SymbolTag=n.SymbolKind=n.SignatureHelpTriggerKind=n.SelectionDirection=n.ScrollbarVisibility=n.ScrollType=n.RenderMinimap=n.RenderLineNumbersType=n.PositionAffinity=n.OverviewRulerLane=n.OverlayWidgetPositionPreference=n.MouseTargetType=n.MinimapPosition=n.MarkerTag=n.MarkerSeverity=n.KeyCode=n.InlineCompletionTriggerKind=n.InlayHintKind=n.InjectedTextCursorStops=n.IndentAction=n.GlyphMarginLane=n.EndOfLineSequence=n.EndOfLinePreference=n.EditorOption=n.EditorAutoIndentStrategy=n.DocumentHighlightKind=n.DefaultEndOfLine=n.CursorChangeReason=n.ContentWidgetPositionPreference=n.CompletionTriggerKind=n.CompletionItemTag=n.CompletionItemKind=n.CompletionItemInsertTextRule=n.CodeActionTriggerType=n.AccessibilitySupport=void 0;var E;(function(e){e[e.Unknown=0]=\"Unknown\",e[e.Disabled=1]=\"Disabled\",e[e.Enabled=2]=\"Enabled\"})(E||(n.AccessibilitySupport=E={}));var M;(function(e){e[e.Invoke=1]=\"Invoke\",e[e.Auto=2]=\"Auto\"})(M||(n.CodeActionTriggerType=M={}));var i;(function(e){e[e.None=0]=\"None\",e[e.KeepWhitespace=1]=\"KeepWhitespace\",e[e.InsertAsSnippet=4]=\"InsertAsSnippet\"})(i||(n.CompletionItemInsertTextRule=i={}));var u;(function(e){e[e.Method=0]=\"Method\",e[e.Function=1]=\"Function\",e[e.Constructor=2]=\"Constructor\",e[e.Field=3]=\"Field\",e[e.Variable=4]=\"Variable\",e[e.Class=5]=\"Class\",e[e.Struct=6]=\"Struct\",e[e.Interface=7]=\"Interface\",e[e.Module=8]=\"Module\",e[e.Property=9]=\"Property\",e[e.Event=10]=\"Event\",e[e.Operator=11]=\"Operator\",e[e.Unit=12]=\"Unit\",e[e.Value=13]=\"Value\",e[e.Constant=14]=\"Constant\",e[e.Enum=15]=\"Enum\",e[e.EnumMember=16]=\"EnumMember\",e[e.Keyword=17]=\"Keyword\",e[e.Text=18]=\"Text\",e[e.Color=19]=\"Color\",e[e.File=20]=\"File\",e[e.Reference=21]=\"Reference\",e[e.Customcolor=22]=\"Customcolor\",e[e.Folder=23]=\"Folder\",e[e.TypeParameter=24]=\"TypeParameter\",e[e.User=25]=\"User\",e[e.Issue=26]=\"Issue\",e[e.Snippet=27]=\"Snippet\"})(u||(n.CompletionItemKind=u={}));var f;(function(e){e[e.Deprecated=1]=\"Deprecated\"})(f||(n.CompletionItemTag=f={}));var g;(function(e){e[e.Invoke=0]=\"Invoke\",e[e.TriggerCharacter=1]=\"TriggerCharacter\",e[e.TriggerForIncompleteCompletions=2]=\"TriggerForIncompleteCompletions\"})(g||(n.CompletionTriggerKind=g={}));var a;(function(e){e[e.EXACT=0]=\"EXACT\",e[e.ABOVE=1]=\"ABOVE\",e[e.BELOW=2]=\"BELOW\"})(a||(n.ContentWidgetPositionPreference=a={}));var s;(function(e){e[e.NotSet=0]=\"NotSet\",e[e.ContentFlush=1]=\"ContentFlush\",e[e.RecoverFromMarkers=2]=\"RecoverFromMarkers\",e[e.Explicit=3]=\"Explicit\",e[e.Paste=4]=\"Paste\",e[e.Undo=5]=\"Undo\",e[e.Redo=6]=\"Redo\"})(s||(n.CursorChangeReason=s={}));var _;(function(e){e[e.LF=1]=\"LF\",e[e.CRLF=2]=\"CRLF\"})(_||(n.DefaultEndOfLine=_={}));var t;(function(e){e[e.Text=0]=\"Text\",e[e.Read=1]=\"Read\",e[e.Write=2]=\"Write\"})(t||(n.DocumentHighlightKind=t={}));var m;(function(e){e[e.None=0]=\"None\",e[e.Keep=1]=\"Keep\",e[e.Brackets=2]=\"Brackets\",e[e.Advanced=3]=\"Advanced\",e[e.Full=4]=\"Full\"})(m||(n.EditorAutoIndentStrategy=m={}));var h;(function(e){e[e.acceptSuggestionOnCommitCharacter=0]=\"acceptSuggestionOnCommitCharacter\",e[e.acceptSuggestionOnEnter=1]=\"acceptSuggestionOnEnter\",e[e.accessibilitySupport=2]=\"accessibilitySupport\",e[e.accessibilityPageSize=3]=\"accessibilityPageSize\",e[e.ariaLabel=4]=\"ariaLabel\",e[e.ariaRequired=5]=\"ariaRequired\",e[e.autoClosingBrackets=6]=\"autoClosingBrackets\",e[e.screenReaderAnnounceInlineSuggestion=7]=\"screenReaderAnnounceInlineSuggestion\",e[e.autoClosingDelete=8]=\"autoClosingDelete\",e[e.autoClosingOvertype=9]=\"autoClosingOvertype\",e[e.autoClosingQuotes=10]=\"autoClosingQuotes\",e[e.autoIndent=11]=\"autoIndent\",e[e.automaticLayout=12]=\"automaticLayout\",e[e.autoSurround=13]=\"autoSurround\",e[e.bracketPairColorization=14]=\"bracketPairColorization\",e[e.guides=15]=\"guides\",e[e.codeLens=16]=\"codeLens\",e[e.codeLensFontFamily=17]=\"codeLensFontFamily\",e[e.codeLensFontSize=18]=\"codeLensFontSize\",e[e.colorDecorators=19]=\"colorDecorators\",e[e.colorDecoratorsLimit=20]=\"colorDecoratorsLimit\",e[e.columnSelection=21]=\"columnSelection\",e[e.comments=22]=\"comments\",e[e.contextmenu=23]=\"contextmenu\",e[e.copyWithSyntaxHighlighting=24]=\"copyWithSyntaxHighlighting\",e[e.cursorBlinking=25]=\"cursorBlinking\",e[e.cursorSmoothCaretAnimation=26]=\"cursorSmoothCaretAnimation\",e[e.cursorStyle=27]=\"cursorStyle\",e[e.cursorSurroundingLines=28]=\"cursorSurroundingLines\",e[e.cursorSurroundingLinesStyle=29]=\"cursorSurroundingLinesStyle\",e[e.cursorWidth=30]=\"cursorWidth\",e[e.disableLayerHinting=31]=\"disableLayerHinting\",e[e.disableMonospaceOptimizations=32]=\"disableMonospaceOptimizations\",e[e.domReadOnly=33]=\"domReadOnly\",e[e.dragAndDrop=34]=\"dragAndDrop\",e[e.dropIntoEditor=35]=\"dropIntoEditor\",e[e.emptySelectionClipboard=36]=\"emptySelectionClipboard\",e[e.experimentalWhitespaceRendering=37]=\"experimentalWhitespaceRendering\",e[e.extraEditorClassName=38]=\"extraEditorClassName\",e[e.fastScrollSensitivity=39]=\"fastScrollSensitivity\",e[e.find=40]=\"find\",e[e.fixedOverflowWidgets=41]=\"fixedOverflowWidgets\",e[e.folding=42]=\"folding\",e[e.foldingStrategy=43]=\"foldingStrategy\",e[e.foldingHighlight=44]=\"foldingHighlight\",e[e.foldingImportsByDefault=45]=\"foldingImportsByDefault\",e[e.foldingMaximumRegions=46]=\"foldingMaximumRegions\",e[e.unfoldOnClickAfterEndOfLine=47]=\"unfoldOnClickAfterEndOfLine\",e[e.fontFamily=48]=\"fontFamily\",e[e.fontInfo=49]=\"fontInfo\",e[e.fontLigatures=50]=\"fontLigatures\",e[e.fontSize=51]=\"fontSize\",e[e.fontWeight=52]=\"fontWeight\",e[e.fontVariations=53]=\"fontVariations\",e[e.formatOnPaste=54]=\"formatOnPaste\",e[e.formatOnType=55]=\"formatOnType\",e[e.glyphMargin=56]=\"glyphMargin\",e[e.gotoLocation=57]=\"gotoLocation\",e[e.hideCursorInOverviewRuler=58]=\"hideCursorInOverviewRuler\",e[e.hover=59]=\"hover\",e[e.inDiffEditor=60]=\"inDiffEditor\",e[e.inlineSuggest=61]=\"inlineSuggest\",e[e.letterSpacing=62]=\"letterSpacing\",e[e.lightbulb=63]=\"lightbulb\",e[e.lineDecorationsWidth=64]=\"lineDecorationsWidth\",e[e.lineHeight=65]=\"lineHeight\",e[e.lineNumbers=66]=\"lineNumbers\",e[e.lineNumbersMinChars=67]=\"lineNumbersMinChars\",e[e.linkedEditing=68]=\"linkedEditing\",e[e.links=69]=\"links\",e[e.matchBrackets=70]=\"matchBrackets\",e[e.minimap=71]=\"minimap\",e[e.mouseStyle=72]=\"mouseStyle\",e[e.mouseWheelScrollSensitivity=73]=\"mouseWheelScrollSensitivity\",e[e.mouseWheelZoom=74]=\"mouseWheelZoom\",e[e.multiCursorMergeOverlapping=75]=\"multiCursorMergeOverlapping\",e[e.multiCursorModifier=76]=\"multiCursorModifier\",e[e.multiCursorPaste=77]=\"multiCursorPaste\",e[e.multiCursorLimit=78]=\"multiCursorLimit\",e[e.occurrencesHighlight=79]=\"occurrencesHighlight\",e[e.overviewRulerBorder=80]=\"overviewRulerBorder\",e[e.overviewRulerLanes=81]=\"overviewRulerLanes\",e[e.padding=82]=\"padding\",e[e.pasteAs=83]=\"pasteAs\",e[e.parameterHints=84]=\"parameterHints\",e[e.peekWidgetDefaultFocus=85]=\"peekWidgetDefaultFocus\",e[e.definitionLinkOpensInPeek=86]=\"definitionLinkOpensInPeek\",e[e.quickSuggestions=87]=\"quickSuggestions\",e[e.quickSuggestionsDelay=88]=\"quickSuggestionsDelay\",e[e.readOnly=89]=\"readOnly\",e[e.readOnlyMessage=90]=\"readOnlyMessage\",e[e.renameOnType=91]=\"renameOnType\",e[e.renderControlCharacters=92]=\"renderControlCharacters\",e[e.renderFinalNewline=93]=\"renderFinalNewline\",e[e.renderLineHighlight=94]=\"renderLineHighlight\",e[e.renderLineHighlightOnlyWhenFocus=95]=\"renderLineHighlightOnlyWhenFocus\",e[e.renderValidationDecorations=96]=\"renderValidationDecorations\",e[e.renderWhitespace=97]=\"renderWhitespace\",e[e.revealHorizontalRightPadding=98]=\"revealHorizontalRightPadding\",e[e.roundedSelection=99]=\"roundedSelection\",e[e.rulers=100]=\"rulers\",e[e.scrollbar=101]=\"scrollbar\",e[e.scrollBeyondLastColumn=102]=\"scrollBeyondLastColumn\",e[e.scrollBeyondLastLine=103]=\"scrollBeyondLastLine\",e[e.scrollPredominantAxis=104]=\"scrollPredominantAxis\",e[e.selectionClipboard=105]=\"selectionClipboard\",e[e.selectionHighlight=106]=\"selectionHighlight\",e[e.selectOnLineNumbers=107]=\"selectOnLineNumbers\",e[e.showFoldingControls=108]=\"showFoldingControls\",e[e.showUnused=109]=\"showUnused\",e[e.snippetSuggestions=110]=\"snippetSuggestions\",e[e.smartSelect=111]=\"smartSelect\",e[e.smoothScrolling=112]=\"smoothScrolling\",e[e.stickyScroll=113]=\"stickyScroll\",e[e.stickyTabStops=114]=\"stickyTabStops\",e[e.stopRenderingLineAfter=115]=\"stopRenderingLineAfter\",e[e.suggest=116]=\"suggest\",e[e.suggestFontSize=117]=\"suggestFontSize\",e[e.suggestLineHeight=118]=\"suggestLineHeight\",e[e.suggestOnTriggerCharacters=119]=\"suggestOnTriggerCharacters\",e[e.suggestSelection=120]=\"suggestSelection\",e[e.tabCompletion=121]=\"tabCompletion\",e[e.tabIndex=122]=\"tabIndex\",e[e.unicodeHighlighting=123]=\"unicodeHighlighting\",e[e.unusualLineTerminators=124]=\"unusualLineTerminators\",e[e.useShadowDOM=125]=\"useShadowDOM\",e[e.useTabStops=126]=\"useTabStops\",e[e.wordBreak=127]=\"wordBreak\",e[e.wordSeparators=128]=\"wordSeparators\",e[e.wordWrap=129]=\"wordWrap\",e[e.wordWrapBreakAfterCharacters=130]=\"wordWrapBreakAfterCharacters\",e[e.wordWrapBreakBeforeCharacters=131]=\"wordWrapBreakBeforeCharacters\",e[e.wordWrapColumn=132]=\"wordWrapColumn\",e[e.wordWrapOverride1=133]=\"wordWrapOverride1\",e[e.wordWrapOverride2=134]=\"wordWrapOverride2\",e[e.wrappingIndent=135]=\"wrappingIndent\",e[e.wrappingStrategy=136]=\"wrappingStrategy\",e[e.showDeprecated=137]=\"showDeprecated\",e[e.inlayHints=138]=\"inlayHints\",e[e.editorClassName=139]=\"editorClassName\",e[e.pixelRatio=140]=\"pixelRatio\",e[e.tabFocusMode=141]=\"tabFocusMode\",e[e.layoutInfo=142]=\"layoutInfo\",e[e.wrappingInfo=143]=\"wrappingInfo\",e[e.defaultColorDecorators=144]=\"defaultColorDecorators\",e[e.colorDecoratorsActivatedOn=145]=\"colorDecoratorsActivatedOn\",e[e.inlineCompletionsAccessibilityVerbose=146]=\"inlineCompletionsAccessibilityVerbose\"})(h||(n.EditorOption=h={}));var c;(function(e){e[e.TextDefined=0]=\"TextDefined\",e[e.LF=1]=\"LF\",e[e.CRLF=2]=\"CRLF\"})(c||(n.EndOfLinePreference=c={}));var L;(function(e){e[e.LF=0]=\"LF\",e[e.CRLF=1]=\"CRLF\"})(L||(n.EndOfLineSequence=L={}));var d;(function(e){e[e.Left=1]=\"Left\",e[e.Right=2]=\"Right\"})(d||(n.GlyphMarginLane=d={}));var y;(function(e){e[e.None=0]=\"None\",e[e.Indent=1]=\"Indent\",e[e.IndentOutdent=2]=\"IndentOutdent\",e[e.Outdent=3]=\"Outdent\"})(y||(n.IndentAction=y={}));var C;(function(e){e[e.Both=0]=\"Both\",e[e.Right=1]=\"Right\",e[e.Left=2]=\"Left\",e[e.None=3]=\"None\"})(C||(n.InjectedTextCursorStops=C={}));var R;(function(e){e[e.Type=1]=\"Type\",e[e.Parameter=2]=\"Parameter\"})(R||(n.InlayHintKind=R={}));var S;(function(e){e[e.Automatic=0]=\"Automatic\",e[e.Explicit=1]=\"Explicit\"})(S||(n.InlineCompletionTriggerKind=S={}));var p;(function(e){e[e.DependsOnKbLayout=-1]=\"DependsOnKbLayout\",e[e.Unknown=0]=\"Unknown\",e[e.Backspace=1]=\"Backspace\",e[e.Tab=2]=\"Tab\",e[e.Enter=3]=\"Enter\",e[e.Shift=4]=\"Shift\",e[e.Ctrl=5]=\"Ctrl\",e[e.Alt=6]=\"Alt\",e[e.PauseBreak=7]=\"PauseBreak\",e[e.CapsLock=8]=\"CapsLock\",e[e.Escape=9]=\"Escape\",e[e.Space=10]=\"Space\",e[e.PageUp=11]=\"PageUp\",e[e.PageDown=12]=\"PageDown\",e[e.End=13]=\"End\",e[e.Home=14]=\"Home\",e[e.LeftArrow=15]=\"LeftArrow\",e[e.UpArrow=16]=\"UpArrow\",e[e.RightArrow=17]=\"RightArrow\",e[e.DownArrow=18]=\"DownArrow\",e[e.Insert=19]=\"Insert\",e[e.Delete=20]=\"Delete\",e[e.Digit0=21]=\"Digit0\",e[e.Digit1=22]=\"Digit1\",e[e.Digit2=23]=\"Digit2\",e[e.Digit3=24]=\"Digit3\",e[e.Digit4=25]=\"Digit4\",e[e.Digit5=26]=\"Digit5\",e[e.Digit6=27]=\"Digit6\",e[e.Digit7=28]=\"Digit7\",e[e.Digit8=29]=\"Digit8\",e[e.Digit9=30]=\"Digit9\",e[e.KeyA=31]=\"KeyA\",e[e.KeyB=32]=\"KeyB\",e[e.KeyC=33]=\"KeyC\",e[e.KeyD=34]=\"KeyD\",e[e.KeyE=35]=\"KeyE\",e[e.KeyF=36]=\"KeyF\",e[e.KeyG=37]=\"KeyG\",e[e.KeyH=38]=\"KeyH\",e[e.KeyI=39]=\"KeyI\",e[e.KeyJ=40]=\"KeyJ\",e[e.KeyK=41]=\"KeyK\",e[e.KeyL=42]=\"KeyL\",e[e.KeyM=43]=\"KeyM\",e[e.KeyN=44]=\"KeyN\",e[e.KeyO=45]=\"KeyO\",e[e.KeyP=46]=\"KeyP\",e[e.KeyQ=47]=\"KeyQ\",e[e.KeyR=48]=\"KeyR\",e[e.KeyS=49]=\"KeyS\",e[e.KeyT=50]=\"KeyT\",e[e.KeyU=51]=\"KeyU\",e[e.KeyV=52]=\"KeyV\",e[e.KeyW=53]=\"KeyW\",e[e.KeyX=54]=\"KeyX\",e[e.KeyY=55]=\"KeyY\",e[e.KeyZ=56]=\"KeyZ\",e[e.Meta=57]=\"Meta\",e[e.ContextMenu=58]=\"ContextMenu\",e[e.F1=59]=\"F1\",e[e.F2=60]=\"F2\",e[e.F3=61]=\"F3\",e[e.F4=62]=\"F4\",e[e.F5=63]=\"F5\",e[e.F6=64]=\"F6\",e[e.F7=65]=\"F7\",e[e.F8=66]=\"F8\",e[e.F9=67]=\"F9\",e[e.F10=68]=\"F10\",e[e.F11=69]=\"F11\",e[e.F12=70]=\"F12\",e[e.F13=71]=\"F13\",e[e.F14=72]=\"F14\",e[e.F15=73]=\"F15\",e[e.F16=74]=\"F16\",e[e.F17=75]=\"F17\",e[e.F18=76]=\"F18\",e[e.F19=77]=\"F19\",e[e.F20=78]=\"F20\",e[e.F21=79]=\"F21\",e[e.F22=80]=\"F22\",e[e.F23=81]=\"F23\",e[e.F24=82]=\"F24\",e[e.NumLock=83]=\"NumLock\",e[e.ScrollLock=84]=\"ScrollLock\",e[e.Semicolon=85]=\"Semicolon\",e[e.Equal=86]=\"Equal\",e[e.Comma=87]=\"Comma\",e[e.Minus=88]=\"Minus\",e[e.Period=89]=\"Period\",e[e.Slash=90]=\"Slash\",e[e.Backquote=91]=\"Backquote\",e[e.BracketLeft=92]=\"BracketLeft\",e[e.Backslash=93]=\"Backslash\",e[e.BracketRight=94]=\"BracketRight\",e[e.Quote=95]=\"Quote\",e[e.OEM_8=96]=\"OEM_8\",e[e.IntlBackslash=97]=\"IntlBackslash\",e[e.Numpad0=98]=\"Numpad0\",e[e.Numpad1=99]=\"Numpad1\",e[e.Numpad2=100]=\"Numpad2\",e[e.Numpad3=101]=\"Numpad3\",e[e.Numpad4=102]=\"Numpad4\",e[e.Numpad5=103]=\"Numpad5\",e[e.Numpad6=104]=\"Numpad6\",e[e.Numpad7=105]=\"Numpad7\",e[e.Numpad8=106]=\"Numpad8\",e[e.Numpad9=107]=\"Numpad9\",e[e.NumpadMultiply=108]=\"NumpadMultiply\",e[e.NumpadAdd=109]=\"NumpadAdd\",e[e.NUMPAD_SEPARATOR=110]=\"NUMPAD_SEPARATOR\",e[e.NumpadSubtract=111]=\"NumpadSubtract\",e[e.NumpadDecimal=112]=\"NumpadDecimal\",e[e.NumpadDivide=113]=\"NumpadDivide\",e[e.KEY_IN_COMPOSITION=114]=\"KEY_IN_COMPOSITION\",e[e.ABNT_C1=115]=\"ABNT_C1\",e[e.ABNT_C2=116]=\"ABNT_C2\",e[e.AudioVolumeMute=117]=\"AudioVolumeMute\",e[e.AudioVolumeUp=118]=\"AudioVolumeUp\",e[e.AudioVolumeDown=119]=\"AudioVolumeDown\",e[e.BrowserSearch=120]=\"BrowserSearch\",e[e.BrowserHome=121]=\"BrowserHome\",e[e.BrowserBack=122]=\"BrowserBack\",e[e.BrowserForward=123]=\"BrowserForward\",e[e.MediaTrackNext=124]=\"MediaTrackNext\",e[e.MediaTrackPrevious=125]=\"MediaTrackPrevious\",e[e.MediaStop=126]=\"MediaStop\",e[e.MediaPlayPause=127]=\"MediaPlayPause\",e[e.LaunchMediaPlayer=128]=\"LaunchMediaPlayer\",e[e.LaunchMail=129]=\"LaunchMail\",e[e.LaunchApp2=130]=\"LaunchApp2\",e[e.Clear=131]=\"Clear\",e[e.MAX_VALUE=132]=\"MAX_VALUE\"})(p||(n.KeyCode=p={}));var r;(function(e){e[e.Hint=1]=\"Hint\",e[e.Info=2]=\"Info\",e[e.Warning=4]=\"Warning\",e[e.Error=8]=\"Error\"})(r||(n.MarkerSeverity=r={}));var l;(function(e){e[e.Unnecessary=1]=\"Unnecessary\",e[e.Deprecated=2]=\"Deprecated\"})(l||(n.MarkerTag=l={}));var o;(function(e){e[e.Inline=1]=\"Inline\",e[e.Gutter=2]=\"Gutter\"})(o||(n.MinimapPosition=o={}));var v;(function(e){e[e.UNKNOWN=0]=\"UNKNOWN\",e[e.TEXTAREA=1]=\"TEXTAREA\",e[e.GUTTER_GLYPH_MARGIN=2]=\"GUTTER_GLYPH_MARGIN\",e[e.GUTTER_LINE_NUMBERS=3]=\"GUTTER_LINE_NUMBERS\",e[e.GUTTER_LINE_DECORATIONS=4]=\"GUTTER_LINE_DECORATIONS\",e[e.GUTTER_VIEW_ZONE=5]=\"GUTTER_VIEW_ZONE\",e[e.CONTENT_TEXT=6]=\"CONTENT_TEXT\",e[e.CONTENT_EMPTY=7]=\"CONTENT_EMPTY\",e[e.CONTENT_VIEW_ZONE=8]=\"CONTENT_VIEW_ZONE\",e[e.CONTENT_WIDGET=9]=\"CONTENT_WIDGET\",e[e.OVERVIEW_RULER=10]=\"OVERVIEW_RULER\",e[e.SCROLLBAR=11]=\"SCROLLBAR\",e[e.OVERLAY_WIDGET=12]=\"OVERLAY_WIDGET\",e[e.OUTSIDE_EDITOR=13]=\"OUTSIDE_EDITOR\"})(v||(n.MouseTargetType=v={}));var b;(function(e){e[e.TOP_RIGHT_CORNER=0]=\"TOP_RIGHT_CORNER\",e[e.BOTTOM_RIGHT_CORNER=1]=\"BOTTOM_RIGHT_CORNER\",e[e.TOP_CENTER=2]=\"TOP_CENTER\"})(b||(n.OverlayWidgetPositionPreference=b={}));var w;(function(e){e[e.Left=1]=\"Left\",e[e.Center=2]=\"Center\",e[e.Right=4]=\"Right\",e[e.Full=7]=\"Full\"})(w||(n.OverviewRulerLane=w={}));var A;(function(e){e[e.Left=0]=\"Left\",e[e.Right=1]=\"Right\",e[e.None=2]=\"None\",e[e.LeftOfInjectedText=3]=\"LeftOfInjectedText\",e[e.RightOfInjectedText=4]=\"RightOfInjectedText\"})(A||(n.PositionAffinity=A={}));var N;(function(e){e[e.Off=0]=\"Off\",e[e.On=1]=\"On\",e[e.Relative=2]=\"Relative\",e[e.Interval=3]=\"Interval\",e[e.Custom=4]=\"Custom\"})(N||(n.RenderLineNumbersType=N={}));var F;(function(e){e[e.None=0]=\"None\",e[e.Text=1]=\"Text\",e[e.Blocks=2]=\"Blocks\"})(F||(n.RenderMinimap=F={}));var O;(function(e){e[e.Smooth=0]=\"Smooth\",e[e.Immediate=1]=\"Immediate\"})(O||(n.ScrollType=O={}));var q;(function(e){e[e.Auto=1]=\"Auto\",e[e.Hidden=2]=\"Hidden\",e[e.Visible=3]=\"Visible\"})(q||(n.ScrollbarVisibility=q={}));var T;(function(e){e[e.LTR=0]=\"LTR\",e[e.RTL=1]=\"RTL\"})(T||(n.SelectionDirection=T={}));var W;(function(e){e[e.Invoke=1]=\"Invoke\",e[e.TriggerCharacter=2]=\"TriggerCharacter\",e[e.ContentChange=3]=\"ContentChange\"})(W||(n.SignatureHelpTriggerKind=W={}));var G;(function(e){e[e.File=0]=\"File\",e[e.Module=1]=\"Module\",e[e.Namespace=2]=\"Namespace\",e[e.Package=3]=\"Package\",e[e.Class=4]=\"Class\",e[e.Method=5]=\"Method\",e[e.Property=6]=\"Property\",e[e.Field=7]=\"Field\",e[e.Constructor=8]=\"Constructor\",e[e.Enum=9]=\"Enum\",e[e.Interface=10]=\"Interface\",e[e.Function=11]=\"Function\",e[e.Variable=12]=\"Variable\",e[e.Constant=13]=\"Constant\",e[e.String=14]=\"String\",e[e.Number=15]=\"Number\",e[e.Boolean=16]=\"Boolean\",e[e.Array=17]=\"Array\",e[e.Object=18]=\"Object\",e[e.Key=19]=\"Key\",e[e.Null=20]=\"Null\",e[e.EnumMember=21]=\"EnumMember\",e[e.Struct=22]=\"Struct\",e[e.Event=23]=\"Event\",e[e.Operator=24]=\"Operator\",e[e.TypeParameter=25]=\"TypeParameter\"})(G||(n.SymbolKind=G={}));var ae;(function(e){e[e.Deprecated=1]=\"Deprecated\"})(ae||(n.SymbolTag=ae={}));var re;(function(e){e[e.Hidden=0]=\"Hidden\",e[e.Blink=1]=\"Blink\",e[e.Smooth=2]=\"Smooth\",e[e.Phase=3]=\"Phase\",e[e.Expand=4]=\"Expand\",e[e.Solid=5]=\"Solid\"})(re||(n.TextEditorCursorBlinkingStyle=re={}));var ne;(function(e){e[e.Line=1]=\"Line\",e[e.Block=2]=\"Block\",e[e.Underline=3]=\"Underline\",e[e.LineThin=4]=\"LineThin\",e[e.BlockOutline=5]=\"BlockOutline\",e[e.UnderlineThin=6]=\"UnderlineThin\"})(ne||(n.TextEditorCursorStyle=ne={}));var fe;(function(e){e[e.AlwaysGrowsWhenTypingAtEdges=0]=\"AlwaysGrowsWhenTypingAtEdges\",e[e.NeverGrowsWhenTypingAtEdges=1]=\"NeverGrowsWhenTypingAtEdges\",e[e.GrowsOnlyWhenTypingBefore=2]=\"GrowsOnlyWhenTypingBefore\",e[e.GrowsOnlyWhenTypingAfter=3]=\"GrowsOnlyWhenTypingAfter\"})(fe||(n.TrackedRangeStickiness=fe={}));var $;(function(e){e[e.None=0]=\"None\",e[e.Same=1]=\"Same\",e[e.Indent=2]=\"Indent\",e[e.DeepIndent=3]=\"DeepIndent\"})($||(n.WrappingIndent=$={}))}),K(te[54],ie([0,1,7,10]),function(U,n,E,M){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.TokenizationRegistry=void 0;class i{constructor(){this._tokenizationSupports=new Map,this._factories=new Map,this._onDidChange=new E.Emitter,this.onDidChange=this._onDidChange.event,this._colorMap=null}handleChange(g){this._onDidChange.fire({changedLanguages:g,changedColorMap:!1})}register(g,a){return this._tokenizationSupports.set(g,a),this.handleChange([g]),(0,M.toDisposable)(()=>{this._tokenizationSupports.get(g)===a&&(this._tokenizationSupports.delete(g),this.handleChange([g]))})}get(g){return this._tokenizationSupports.get(g)||null}registerFactory(g,a){var s;(s=this._factories.get(g))===null||s===void 0||s.dispose();const _=new u(this,g,a);return this._factories.set(g,_),(0,M.toDisposable)(()=>{const t=this._factories.get(g);!t||t!==_||(this._factories.delete(g),t.dispose())})}getOrCreate(g){return pe(this,void 0,void 0,function*(){const a=this.get(g);if(a)return a;const s=this._factories.get(g);return!s||s.isResolved?null:(yield s.resolve(),this.get(g))})}isResolved(g){if(this.get(g))return!0;const s=this._factories.get(g);return!!(!s||s.isResolved)}setColorMap(g){this._colorMap=g,this._onDidChange.fire({changedLanguages:Array.from(this._tokenizationSupports.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}}n.TokenizationRegistry=i;class u extends M.Disposable{get isResolved(){return this._isResolved}constructor(g,a,s){super(),this._registry=g,this._languageId=a,this._factory=s,this._isDisposed=!1,this._resolvePromise=null,this._isResolved=!1}dispose(){this._isDisposed=!0,super.dispose()}resolve(){return pe(this,void 0,void 0,function*(){return this._resolvePromise||(this._resolvePromise=this._create()),this._resolvePromise})}_create(){return pe(this,void 0,void 0,function*(){const g=yield this._factory.tokenizationSupport;this._isResolved=!0,g&&!this._isDisposed&&this._register(this._registry.register(this._languageId,g))})}}}),K(te[55],ie([15,56]),function(U,n){return U.create(\"vs/base/common/platform\",n)}),K(te[13],ie([0,1,55]),function(U,n,E){\"use strict\";var M;Object.defineProperty(n,\"__esModule\",{value:!0}),n.isAndroid=n.isEdge=n.isSafari=n.isFirefox=n.isChrome=n.isLittleEndian=n.OS=n.setTimeout0=n.setTimeout0IsFaster=n.language=n.userAgent=n.isMobile=n.isIOS=n.isWebWorker=n.isWeb=n.isNative=n.isLinux=n.isMacintosh=n.isWindows=n.globals=n.LANGUAGE_DEFAULT=void 0,n.LANGUAGE_DEFAULT=\"en\";let i=!1,u=!1,f=!1,g=!1,a=!1,s=!1,_=!1,t=!1,m=!1,h=!1,c,L=n.LANGUAGE_DEFAULT,d=n.LANGUAGE_DEFAULT,y,C;n.globals=typeof self==\"object\"?self:typeof global==\"object\"?global:{};let R;typeof n.globals.vscode<\"u\"&&typeof n.globals.vscode.process<\"u\"?R=n.globals.vscode.process:typeof process<\"u\"&&(R=process);const S=typeof((M=R?.versions)===null||M===void 0?void 0:M.electron)==\"string\",p=S&&R?.type===\"renderer\";if(typeof navigator==\"object\"&&!p)C=navigator.userAgent,i=C.indexOf(\"Windows\")>=0,u=C.indexOf(\"Macintosh\")>=0,t=(C.indexOf(\"Macintosh\")>=0||C.indexOf(\"iPad\")>=0||C.indexOf(\"iPhone\")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,f=C.indexOf(\"Linux\")>=0,h=C?.indexOf(\"Mobi\")>=0,s=!0,c=E.getConfiguredDefaultLocale(E.localize(0,null))||n.LANGUAGE_DEFAULT,L=c,d=navigator.language;else if(typeof R==\"object\"){i=R.platform===\"win32\",u=R.platform===\"darwin\",f=R.platform===\"linux\",g=f&&!!R.env.SNAP&&!!R.env.SNAP_REVISION,_=S,m=!!R.env.CI||!!R.env.BUILD_ARTIFACTSTAGINGDIRECTORY,c=n.LANGUAGE_DEFAULT,L=n.LANGUAGE_DEFAULT;const b=R.env.VSCODE_NLS_CONFIG;if(b)try{const w=JSON.parse(b),A=w.availableLanguages[\"*\"];c=w.locale,d=w.osLocale,L=A||n.LANGUAGE_DEFAULT,y=w._translationsConfigFile}catch{}a=!0}else console.error(\"Unable to resolve platform.\");let r=0;u?r=1:i?r=3:f&&(r=2),n.isWindows=i,n.isMacintosh=u,n.isLinux=f,n.isNative=a,n.isWeb=s,n.isWebWorker=s&&typeof n.globals.importScripts==\"function\",n.isIOS=t,n.isMobile=h,n.userAgent=C,n.language=L,n.setTimeout0IsFaster=typeof n.globals.postMessage==\"function\"&&!n.globals.importScripts,n.setTimeout0=(()=>{if(n.setTimeout0IsFaster){const b=[];n.globals.addEventListener(\"message\",A=>{if(A.data&&A.data.vscodeScheduleAsyncWork)for(let N=0,F=b.length;N<F;N++){const O=b[N];if(O.id===A.data.vscodeScheduleAsyncWork){b.splice(N,1),O.callback();return}}});let w=0;return A=>{const N=++w;b.push({id:N,callback:A}),n.globals.postMessage({vscodeScheduleAsyncWork:N},\"*\")}}return b=>setTimeout(b)})(),n.OS=u||t?2:i?1:3;let l=!0,o=!1;function v(){if(!o){o=!0;const b=new Uint8Array(2);b[0]=1,b[1]=2,l=new Uint16Array(b.buffer)[0]===(2<<8)+1}return l}n.isLittleEndian=v,n.isChrome=!!(n.userAgent&&n.userAgent.indexOf(\"Chrome\")>=0),n.isFirefox=!!(n.userAgent&&n.userAgent.indexOf(\"Firefox\")>=0),n.isSafari=!!(!n.isChrome&&n.userAgent&&n.userAgent.indexOf(\"Safari\")>=0),n.isEdge=!!(n.userAgent&&n.userAgent.indexOf(\"Edg/\")>=0),n.isAndroid=!!(n.userAgent&&n.userAgent.indexOf(\"Android\")>=0)}),K(te[57],ie([0,1,13]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.platform=n.env=n.cwd=void 0;let M;if(typeof E.globals.vscode<\"u\"&&typeof E.globals.vscode.process<\"u\"){const i=E.globals.vscode.process;M={get platform(){return i.platform},get arch(){return i.arch},get env(){return i.env},cwd(){return i.cwd()}}}else typeof process<\"u\"?M={get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:M={get platform(){return E.isWindows?\"win32\":E.isMacintosh?\"darwin\":\"linux\"},get arch(){},get env(){return{}},cwd(){return\"/\"}};n.cwd=M.cwd,n.env=M.env,n.platform=M.platform}),K(te[58],ie([0,1,57]),function(U,n,E){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.sep=n.extname=n.basename=n.dirname=n.relative=n.resolve=n.normalize=n.posix=n.win32=void 0;const M=65,i=97,u=90,f=122,g=46,a=47,s=92,_=58,t=63;class m extends Error{constructor(l,o,v){let b;typeof o==\"string\"&&o.indexOf(\"not \")===0?(b=\"must not be\",o=o.replace(/^not /,\"\")):b=\"must be\";const w=l.indexOf(\".\")!==-1?\"property\":\"argument\";let A=`The \"${l}\" ${w} ${b} of type ${o}`;A+=`. Received type ${typeof v}`,super(A),this.code=\"ERR_INVALID_ARG_TYPE\"}}function h(r,l){if(r===null||typeof r!=\"object\")throw new m(l,\"Object\",r)}function c(r,l){if(typeof r!=\"string\")throw new m(l,\"string\",r)}const L=E.platform===\"win32\";function d(r){return r===a||r===s}function y(r){return r===a}function C(r){return r>=M&&r<=u||r>=i&&r<=f}function R(r,l,o,v){let b=\"\",w=0,A=-1,N=0,F=0;for(let O=0;O<=r.length;++O){if(O<r.length)F=r.charCodeAt(O);else{if(v(F))break;F=a}if(v(F)){if(!(A===O-1||N===1))if(N===2){if(b.length<2||w!==2||b.charCodeAt(b.length-1)!==g||b.charCodeAt(b.length-2)!==g){if(b.length>2){const q=b.lastIndexOf(o);q===-1?(b=\"\",w=0):(b=b.slice(0,q),w=b.length-1-b.lastIndexOf(o)),A=O,N=0;continue}else if(b.length!==0){b=\"\",w=0,A=O,N=0;continue}}l&&(b+=b.length>0?`${o}..`:\"..\",w=2)}else b.length>0?b+=`${o}${r.slice(A+1,O)}`:b=r.slice(A+1,O),w=O-A-1;A=O,N=0}else F===g&&N!==-1?++N:N=-1}return b}function S(r,l){h(l,\"pathObject\");const o=l.dir||l.root,v=l.base||`${l.name||\"\"}${l.ext||\"\"}`;return o?o===l.root?`${o}${v}`:`${o}${r}${v}`:v}n.win32={resolve(...r){let l=\"\",o=\"\",v=!1;for(let b=r.length-1;b>=-1;b--){let w;if(b>=0){if(w=r[b],c(w,\"path\"),w.length===0)continue}else l.length===0?w=E.cwd():(w=E.env[`=${l}`]||E.cwd(),(w===void 0||w.slice(0,2).toLowerCase()!==l.toLowerCase()&&w.charCodeAt(2)===s)&&(w=`${l}\\\\`));const A=w.length;let N=0,F=\"\",O=!1;const q=w.charCodeAt(0);if(A===1)d(q)&&(N=1,O=!0);else if(d(q))if(O=!0,d(w.charCodeAt(1))){let T=2,W=T;for(;T<A&&!d(w.charCodeAt(T));)T++;if(T<A&&T!==W){const G=w.slice(W,T);for(W=T;T<A&&d(w.charCodeAt(T));)T++;if(T<A&&T!==W){for(W=T;T<A&&!d(w.charCodeAt(T));)T++;(T===A||T!==W)&&(F=`\\\\\\\\${G}\\\\${w.slice(W,T)}`,N=T)}}}else N=1;else C(q)&&w.charCodeAt(1)===_&&(F=w.slice(0,2),N=2,A>2&&d(w.charCodeAt(2))&&(O=!0,N=3));if(F.length>0)if(l.length>0){if(F.toLowerCase()!==l.toLowerCase())continue}else l=F;if(v){if(l.length>0)break}else if(o=`${w.slice(N)}\\\\${o}`,v=O,O&&l.length>0)break}return o=R(o,!v,\"\\\\\",d),v?`${l}\\\\${o}`:`${l}${o}`||\".\"},normalize(r){c(r,\"path\");const l=r.length;if(l===0)return\".\";let o=0,v,b=!1;const w=r.charCodeAt(0);if(l===1)return y(w)?\"\\\\\":r;if(d(w))if(b=!0,d(r.charCodeAt(1))){let N=2,F=N;for(;N<l&&!d(r.charCodeAt(N));)N++;if(N<l&&N!==F){const O=r.slice(F,N);for(F=N;N<l&&d(r.charCodeAt(N));)N++;if(N<l&&N!==F){for(F=N;N<l&&!d(r.charCodeAt(N));)N++;if(N===l)return`\\\\\\\\${O}\\\\${r.slice(F)}\\\\`;N!==F&&(v=`\\\\\\\\${O}\\\\${r.slice(F,N)}`,o=N)}}}else o=1;else C(w)&&r.charCodeAt(1)===_&&(v=r.slice(0,2),o=2,l>2&&d(r.charCodeAt(2))&&(b=!0,o=3));let A=o<l?R(r.slice(o),!b,\"\\\\\",d):\"\";return A.length===0&&!b&&(A=\".\"),A.length>0&&d(r.charCodeAt(l-1))&&(A+=\"\\\\\"),v===void 0?b?`\\\\${A}`:A:b?`${v}\\\\${A}`:`${v}${A}`},isAbsolute(r){c(r,\"path\");const l=r.length;if(l===0)return!1;const o=r.charCodeAt(0);return d(o)||l>2&&C(o)&&r.charCodeAt(1)===_&&d(r.charCodeAt(2))},join(...r){if(r.length===0)return\".\";let l,o;for(let w=0;w<r.length;++w){const A=r[w];c(A,\"path\"),A.length>0&&(l===void 0?l=o=A:l+=`\\\\${A}`)}if(l===void 0)return\".\";let v=!0,b=0;if(typeof o==\"string\"&&d(o.charCodeAt(0))){++b;const w=o.length;w>1&&d(o.charCodeAt(1))&&(++b,w>2&&(d(o.charCodeAt(2))?++b:v=!1))}if(v){for(;b<l.length&&d(l.charCodeAt(b));)b++;b>=2&&(l=`\\\\${l.slice(b)}`)}return n.win32.normalize(l)},relative(r,l){if(c(r,\"from\"),c(l,\"to\"),r===l)return\"\";const o=n.win32.resolve(r),v=n.win32.resolve(l);if(o===v||(r=o.toLowerCase(),l=v.toLowerCase(),r===l))return\"\";let b=0;for(;b<r.length&&r.charCodeAt(b)===s;)b++;let w=r.length;for(;w-1>b&&r.charCodeAt(w-1)===s;)w--;const A=w-b;let N=0;for(;N<l.length&&l.charCodeAt(N)===s;)N++;let F=l.length;for(;F-1>N&&l.charCodeAt(F-1)===s;)F--;const O=F-N,q=A<O?A:O;let T=-1,W=0;for(;W<q;W++){const ae=r.charCodeAt(b+W);if(ae!==l.charCodeAt(N+W))break;ae===s&&(T=W)}if(W!==q){if(T===-1)return v}else{if(O>q){if(l.charCodeAt(N+W)===s)return v.slice(N+W+1);if(W===2)return v.slice(N+W)}A>q&&(r.charCodeAt(b+W)===s?T=W:W===2&&(T=3)),T===-1&&(T=0)}let G=\"\";for(W=b+T+1;W<=w;++W)(W===w||r.charCodeAt(W)===s)&&(G+=G.length===0?\"..\":\"\\\\..\");return N+=T,G.length>0?`${G}${v.slice(N,F)}`:(v.charCodeAt(N)===s&&++N,v.slice(N,F))},toNamespacedPath(r){if(typeof r!=\"string\"||r.length===0)return r;const l=n.win32.resolve(r);if(l.length<=2)return r;if(l.charCodeAt(0)===s){if(l.charCodeAt(1)===s){const o=l.charCodeAt(2);if(o!==t&&o!==g)return`\\\\\\\\?\\\\UNC\\\\${l.slice(2)}`}}else if(C(l.charCodeAt(0))&&l.charCodeAt(1)===_&&l.charCodeAt(2)===s)return`\\\\\\\\?\\\\${l}`;return r},dirname(r){c(r,\"path\");const l=r.length;if(l===0)return\".\";let o=-1,v=0;const b=r.charCodeAt(0);if(l===1)return d(b)?r:\".\";if(d(b)){if(o=v=1,d(r.charCodeAt(1))){let N=2,F=N;for(;N<l&&!d(r.charCodeAt(N));)N++;if(N<l&&N!==F){for(F=N;N<l&&d(r.charCodeAt(N));)N++;if(N<l&&N!==F){for(F=N;N<l&&!d(r.charCodeAt(N));)N++;if(N===l)return r;N!==F&&(o=v=N+1)}}}}else C(b)&&r.charCodeAt(1)===_&&(o=l>2&&d(r.charCodeAt(2))?3:2,v=o);let w=-1,A=!0;for(let N=l-1;N>=v;--N)if(d(r.charCodeAt(N))){if(!A){w=N;break}}else A=!1;if(w===-1){if(o===-1)return\".\";w=o}return r.slice(0,w)},basename(r,l){l!==void 0&&c(l,\"ext\"),c(r,\"path\");let o=0,v=-1,b=!0,w;if(r.length>=2&&C(r.charCodeAt(0))&&r.charCodeAt(1)===_&&(o=2),l!==void 0&&l.length>0&&l.length<=r.length){if(l===r)return\"\";let A=l.length-1,N=-1;for(w=r.length-1;w>=o;--w){const F=r.charCodeAt(w);if(d(F)){if(!b){o=w+1;break}}else N===-1&&(b=!1,N=w+1),A>=0&&(F===l.charCodeAt(A)?--A===-1&&(v=w):(A=-1,v=N))}return o===v?v=N:v===-1&&(v=r.length),r.slice(o,v)}for(w=r.length-1;w>=o;--w)if(d(r.charCodeAt(w))){if(!b){o=w+1;break}}else v===-1&&(b=!1,v=w+1);return v===-1?\"\":r.slice(o,v)},extname(r){c(r,\"path\");let l=0,o=-1,v=0,b=-1,w=!0,A=0;r.length>=2&&r.charCodeAt(1)===_&&C(r.charCodeAt(0))&&(l=v=2);for(let N=r.length-1;N>=l;--N){const F=r.charCodeAt(N);if(d(F)){if(!w){v=N+1;break}continue}b===-1&&(w=!1,b=N+1),F===g?o===-1?o=N:A!==1&&(A=1):o!==-1&&(A=-1)}return o===-1||b===-1||A===0||A===1&&o===b-1&&o===v+1?\"\":r.slice(o,b)},format:S.bind(null,\"\\\\\"),parse(r){c(r,\"path\");const l={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(r.length===0)return l;const o=r.length;let v=0,b=r.charCodeAt(0);if(o===1)return d(b)?(l.root=l.dir=r,l):(l.base=l.name=r,l);if(d(b)){if(v=1,d(r.charCodeAt(1))){let T=2,W=T;for(;T<o&&!d(r.charCodeAt(T));)T++;if(T<o&&T!==W){for(W=T;T<o&&d(r.charCodeAt(T));)T++;if(T<o&&T!==W){for(W=T;T<o&&!d(r.charCodeAt(T));)T++;T===o?v=T:T!==W&&(v=T+1)}}}}else if(C(b)&&r.charCodeAt(1)===_){if(o<=2)return l.root=l.dir=r,l;if(v=2,d(r.charCodeAt(2))){if(o===3)return l.root=l.dir=r,l;v=3}}v>0&&(l.root=r.slice(0,v));let w=-1,A=v,N=-1,F=!0,O=r.length-1,q=0;for(;O>=v;--O){if(b=r.charCodeAt(O),d(b)){if(!F){A=O+1;break}continue}N===-1&&(F=!1,N=O+1),b===g?w===-1?w=O:q!==1&&(q=1):w!==-1&&(q=-1)}return N!==-1&&(w===-1||q===0||q===1&&w===N-1&&w===A+1?l.base=l.name=r.slice(A,N):(l.name=r.slice(A,w),l.base=r.slice(A,N),l.ext=r.slice(w,N))),A>0&&A!==v?l.dir=r.slice(0,A-1):l.dir=l.root,l},sep:\"\\\\\",delimiter:\";\",win32:null,posix:null};const p=(()=>{if(L){const r=/\\\\/g;return()=>{const l=E.cwd().replace(r,\"/\");return l.slice(l.indexOf(\"/\"))}}return()=>E.cwd()})();n.posix={resolve(...r){let l=\"\",o=!1;for(let v=r.length-1;v>=-1&&!o;v--){const b=v>=0?r[v]:p();c(b,\"path\"),b.length!==0&&(l=`${b}/${l}`,o=b.charCodeAt(0)===a)}return l=R(l,!o,\"/\",y),o?`/${l}`:l.length>0?l:\".\"},normalize(r){if(c(r,\"path\"),r.length===0)return\".\";const l=r.charCodeAt(0)===a,o=r.charCodeAt(r.length-1)===a;return r=R(r,!l,\"/\",y),r.length===0?l?\"/\":o?\"./\":\".\":(o&&(r+=\"/\"),l?`/${r}`:r)},isAbsolute(r){return c(r,\"path\"),r.length>0&&r.charCodeAt(0)===a},join(...r){if(r.length===0)return\".\";let l;for(let o=0;o<r.length;++o){const v=r[o];c(v,\"path\"),v.length>0&&(l===void 0?l=v:l+=`/${v}`)}return l===void 0?\".\":n.posix.normalize(l)},relative(r,l){if(c(r,\"from\"),c(l,\"to\"),r===l||(r=n.posix.resolve(r),l=n.posix.resolve(l),r===l))return\"\";const o=1,v=r.length,b=v-o,w=1,A=l.length-w,N=b<A?b:A;let F=-1,O=0;for(;O<N;O++){const T=r.charCodeAt(o+O);if(T!==l.charCodeAt(w+O))break;T===a&&(F=O)}if(O===N)if(A>N){if(l.charCodeAt(w+O)===a)return l.slice(w+O+1);if(O===0)return l.slice(w+O)}else b>N&&(r.charCodeAt(o+O)===a?F=O:O===0&&(F=0));let q=\"\";for(O=o+F+1;O<=v;++O)(O===v||r.charCodeAt(O)===a)&&(q+=q.length===0?\"..\":\"/..\");return`${q}${l.slice(w+F)}`},toNamespacedPath(r){return r},dirname(r){if(c(r,\"path\"),r.length===0)return\".\";const l=r.charCodeAt(0)===a;let o=-1,v=!0;for(let b=r.length-1;b>=1;--b)if(r.charCodeAt(b)===a){if(!v){o=b;break}}else v=!1;return o===-1?l?\"/\":\".\":l&&o===1?\"//\":r.slice(0,o)},basename(r,l){l!==void 0&&c(l,\"ext\"),c(r,\"path\");let o=0,v=-1,b=!0,w;if(l!==void 0&&l.length>0&&l.length<=r.length){if(l===r)return\"\";let A=l.length-1,N=-1;for(w=r.length-1;w>=0;--w){const F=r.charCodeAt(w);if(F===a){if(!b){o=w+1;break}}else N===-1&&(b=!1,N=w+1),A>=0&&(F===l.charCodeAt(A)?--A===-1&&(v=w):(A=-1,v=N))}return o===v?v=N:v===-1&&(v=r.length),r.slice(o,v)}for(w=r.length-1;w>=0;--w)if(r.charCodeAt(w)===a){if(!b){o=w+1;break}}else v===-1&&(b=!1,v=w+1);return v===-1?\"\":r.slice(o,v)},extname(r){c(r,\"path\");let l=-1,o=0,v=-1,b=!0,w=0;for(let A=r.length-1;A>=0;--A){const N=r.charCodeAt(A);if(N===a){if(!b){o=A+1;break}continue}v===-1&&(b=!1,v=A+1),N===g?l===-1?l=A:w!==1&&(w=1):l!==-1&&(w=-1)}return l===-1||v===-1||w===0||w===1&&l===v-1&&l===o+1?\"\":r.slice(l,v)},format:S.bind(null,\"/\"),parse(r){c(r,\"path\");const l={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(r.length===0)return l;const o=r.charCodeAt(0)===a;let v;o?(l.root=\"/\",v=1):v=0;let b=-1,w=0,A=-1,N=!0,F=r.length-1,O=0;for(;F>=v;--F){const q=r.charCodeAt(F);if(q===a){if(!N){w=F+1;break}continue}A===-1&&(N=!1,A=F+1),q===g?b===-1?b=F:O!==1&&(O=1):b!==-1&&(O=-1)}if(A!==-1){const q=w===0&&o?1:w;b===-1||O===0||O===1&&b===A-1&&b===w+1?l.base=l.name=r.slice(q,A):(l.name=r.slice(q,b),l.base=r.slice(q,A),l.ext=r.slice(b,A))}return w>0?l.dir=r.slice(0,w-1):o&&(l.dir=\"/\"),l},sep:\"/\",delimiter:\":\",win32:null,posix:null},n.posix.win32=n.win32.win32=n.win32,n.posix.posix=n.win32.posix=n.posix,n.normalize=L?n.win32.normalize:n.posix.normalize,n.resolve=L?n.win32.resolve:n.posix.resolve,n.relative=L?n.win32.relative:n.posix.relative,n.dirname=L?n.win32.dirname:n.posix.dirname,n.basename=L?n.win32.basename:n.posix.basename,n.extname=L?n.win32.extname:n.posix.extname,n.sep=L?n.win32.sep:n.posix.sep}),K(te[14],ie([0,1,58,13]),function(U,n,E,M){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.uriToFsPath=n.URI=void 0;const i=/^\\w[\\w\\d+.-]*$/,u=/^\\//,f=/^\\/\\//;function g(o,v){if(!o.scheme&&v)throw new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${o.authority}\", path: \"${o.path}\", query: \"${o.query}\", fragment: \"${o.fragment}\"}`);if(o.scheme&&!i.test(o.scheme))throw new Error(\"[UriError]: Scheme contains illegal characters.\");if(o.path){if(o.authority){if(!u.test(o.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character')}else if(f.test(o.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")')}}function a(o,v){return!o&&!v?\"file\":o}function s(o,v){switch(o){case\"https\":case\"http\":case\"file\":v?v[0]!==t&&(v=t+v):v=t;break}return v}const _=\"\",t=\"/\",m=/^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;class h{static isUri(v){return v instanceof h?!0:v?typeof v.authority==\"string\"&&typeof v.fragment==\"string\"&&typeof v.path==\"string\"&&typeof v.query==\"string\"&&typeof v.scheme==\"string\"&&typeof v.fsPath==\"string\"&&typeof v.with==\"function\"&&typeof v.toString==\"function\":!1}constructor(v,b,w,A,N,F=!1){typeof v==\"object\"?(this.scheme=v.scheme||_,this.authority=v.authority||_,this.path=v.path||_,this.query=v.query||_,this.fragment=v.fragment||_):(this.scheme=a(v,F),this.authority=b||_,this.path=s(this.scheme,w||_),this.query=A||_,this.fragment=N||_,g(this,F))}get fsPath(){return R(this,!1)}with(v){if(!v)return this;let{scheme:b,authority:w,path:A,query:N,fragment:F}=v;return b===void 0?b=this.scheme:b===null&&(b=_),w===void 0?w=this.authority:w===null&&(w=_),A===void 0?A=this.path:A===null&&(A=_),N===void 0?N=this.query:N===null&&(N=_),F===void 0?F=this.fragment:F===null&&(F=_),b===this.scheme&&w===this.authority&&A===this.path&&N===this.query&&F===this.fragment?this:new L(b,w,A,N,F)}static parse(v,b=!1){const w=m.exec(v);return w?new L(w[2]||_,l(w[4]||_),l(w[5]||_),l(w[7]||_),l(w[9]||_),b):new L(_,_,_,_,_)}static file(v){let b=_;if(M.isWindows&&(v=v.replace(/\\\\/g,t)),v[0]===t&&v[1]===t){const w=v.indexOf(t,2);w===-1?(b=v.substring(2),v=t):(b=v.substring(2,w),v=v.substring(w)||t)}return new L(\"file\",b,v,_,_)}static from(v,b){return new L(v.scheme,v.authority,v.path,v.query,v.fragment,b)}static joinPath(v,...b){if(!v.path)throw new Error(\"[UriError]: cannot call joinPath on URI without path\");let w;return M.isWindows&&v.scheme===\"file\"?w=h.file(E.win32.join(R(v,!0),...b)).path:w=E.posix.join(v.path,...b),v.with({path:w})}toString(v=!1){return S(this,v)}toJSON(){return this}static revive(v){var b,w;if(v){if(v instanceof h)return v;{const A=new L(v);return A._formatted=(b=v.external)!==null&&b!==void 0?b:null,A._fsPath=v._sep===c&&(w=v.fsPath)!==null&&w!==void 0?w:null,A}}else return v}}n.URI=h;const c=M.isWindows?1:void 0;class L extends h{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=R(this,!1)),this._fsPath}toString(v=!1){return v?S(this,!0):(this._formatted||(this._formatted=S(this,!1)),this._formatted)}toJSON(){const v={$mid:1};return this._fsPath&&(v.fsPath=this._fsPath,v._sep=c),this._formatted&&(v.external=this._formatted),this.path&&(v.path=this.path),this.scheme&&(v.scheme=this.scheme),this.authority&&(v.authority=this.authority),this.query&&(v.query=this.query),this.fragment&&(v.fragment=this.fragment),v}}const d={[58]:\"%3A\",[47]:\"%2F\",[63]:\"%3F\",[35]:\"%23\",[91]:\"%5B\",[93]:\"%5D\",[64]:\"%40\",[33]:\"%21\",[36]:\"%24\",[38]:\"%26\",[39]:\"%27\",[40]:\"%28\",[41]:\"%29\",[42]:\"%2A\",[43]:\"%2B\",[44]:\"%2C\",[59]:\"%3B\",[61]:\"%3D\",[32]:\"%20\"};function y(o,v,b){let w,A=-1;for(let N=0;N<o.length;N++){const F=o.charCodeAt(N);if(F>=97&&F<=122||F>=65&&F<=90||F>=48&&F<=57||F===45||F===46||F===95||F===126||v&&F===47||b&&F===91||b&&F===93||b&&F===58)A!==-1&&(w+=encodeURIComponent(o.substring(A,N)),A=-1),w!==void 0&&(w+=o.charAt(N));else{w===void 0&&(w=o.substr(0,N));const O=d[F];O!==void 0?(A!==-1&&(w+=encodeURIComponent(o.substring(A,N)),A=-1),w+=O):A===-1&&(A=N)}}return A!==-1&&(w+=encodeURIComponent(o.substring(A))),w!==void 0?w:o}function C(o){let v;for(let b=0;b<o.length;b++){const w=o.charCodeAt(b);w===35||w===63?(v===void 0&&(v=o.substr(0,b)),v+=d[w]):v!==void 0&&(v+=o[b])}return v!==void 0?v:o}function R(o,v){let b;return o.authority&&o.path.length>1&&o.scheme===\"file\"?b=`//${o.authority}${o.path}`:o.path.charCodeAt(0)===47&&(o.path.charCodeAt(1)>=65&&o.path.charCodeAt(1)<=90||o.path.charCodeAt(1)>=97&&o.path.charCodeAt(1)<=122)&&o.path.charCodeAt(2)===58?v?b=o.path.substr(1):b=o.path[1].toLowerCase()+o.path.substr(2):b=o.path,M.isWindows&&(b=b.replace(/\\//g,\"\\\\\")),b}n.uriToFsPath=R;function S(o,v){const b=v?C:y;let w=\"\",{scheme:A,authority:N,path:F,query:O,fragment:q}=o;if(A&&(w+=A,w+=\":\"),(N||A===\"file\")&&(w+=t,w+=t),N){let T=N.indexOf(\"@\");if(T!==-1){const W=N.substr(0,T);N=N.substr(T+1),T=W.lastIndexOf(\":\"),T===-1?w+=b(W,!1,!1):(w+=b(W.substr(0,T),!1,!1),w+=\":\",w+=b(W.substr(T+1),!1,!0)),w+=\"@\"}N=N.toLowerCase(),T=N.lastIndexOf(\":\"),T===-1?w+=b(N,!1,!0):(w+=b(N.substr(0,T),!1,!0),w+=N.substr(T))}if(F){if(F.length>=3&&F.charCodeAt(0)===47&&F.charCodeAt(2)===58){const T=F.charCodeAt(1);T>=65&&T<=90&&(F=`/${String.fromCharCode(T+32)}:${F.substr(3)}`)}else if(F.length>=2&&F.charCodeAt(1)===58){const T=F.charCodeAt(0);T>=65&&T<=90&&(F=`${String.fromCharCode(T+32)}:${F.substr(2)}`)}w+=b(F,!0,!1)}return O&&(w+=\"?\",w+=b(O,!1,!1)),q&&(w+=\"#\",w+=v?q:y(q,!1,!1)),w}function p(o){try{return decodeURIComponent(o)}catch{return o.length>3?o.substr(0,3)+p(o.substr(3)):o}}const r=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function l(o){return o.match(r)?o.replace(r,v=>p(v)):o}}),K(te[62],ie([0,1,3,7,10,11,13,5]),function(U,n,E,M,i,u,f,g){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.create=n.SimpleWorkerServer=n.SimpleWorkerClient=n.logOnceWebWorkerWarning=void 0;const a=\"$initialize\";let s=!1;function _(l){f.isWeb&&(s||(s=!0,console.warn(\"Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq\")),console.warn(l.message))}n.logOnceWebWorkerWarning=_;class t{constructor(o,v,b,w){this.vsWorker=o,this.req=v,this.method=b,this.args=w,this.type=0}}class m{constructor(o,v,b,w){this.vsWorker=o,this.seq=v,this.res=b,this.err=w,this.type=1}}class h{constructor(o,v,b,w){this.vsWorker=o,this.req=v,this.eventName=b,this.arg=w,this.type=2}}class c{constructor(o,v,b){this.vsWorker=o,this.req=v,this.event=b,this.type=3}}class L{constructor(o,v){this.vsWorker=o,this.req=v,this.type=4}}class d{constructor(o){this._workerId=-1,this._handler=o,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(o){this._workerId=o}sendMessage(o,v){const b=String(++this._lastSentReq);return new Promise((w,A)=>{this._pendingReplies[b]={resolve:w,reject:A},this._send(new t(this._workerId,b,o,v))})}listen(o,v){let b=null;const w=new M.Emitter({onWillAddFirstListener:()=>{b=String(++this._lastSentReq),this._pendingEmitters.set(b,w),this._send(new h(this._workerId,b,o,v))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(b),this._send(new L(this._workerId,b)),b=null}});return w.event}handleMessage(o){!o||!o.vsWorker||this._workerId!==-1&&o.vsWorker!==this._workerId||this._handleMessage(o)}_handleMessage(o){switch(o.type){case 1:return this._handleReplyMessage(o);case 0:return this._handleRequestMessage(o);case 2:return this._handleSubscribeEventMessage(o);case 3:return this._handleEventMessage(o);case 4:return this._handleUnsubscribeEventMessage(o)}}_handleReplyMessage(o){if(!this._pendingReplies[o.seq]){console.warn(\"Got reply to unknown seq\");return}const v=this._pendingReplies[o.seq];if(delete this._pendingReplies[o.seq],o.err){let b=o.err;o.err.$isError&&(b=new Error,b.name=o.err.name,b.message=o.err.message,b.stack=o.err.stack),v.reject(b);return}v.resolve(o.res)}_handleRequestMessage(o){const v=o.req;this._handler.handleMessage(o.method,o.args).then(w=>{this._send(new m(this._workerId,v,w,void 0))},w=>{w.detail instanceof Error&&(w.detail=(0,E.transformErrorForSerialization)(w.detail)),this._send(new m(this._workerId,v,void 0,(0,E.transformErrorForSerialization)(w)))})}_handleSubscribeEventMessage(o){const v=o.req,b=this._handler.handleEvent(o.eventName,o.arg)(w=>{this._send(new c(this._workerId,v,w))});this._pendingEvents.set(v,b)}_handleEventMessage(o){if(!this._pendingEmitters.has(o.req)){console.warn(\"Got event for unknown req\");return}this._pendingEmitters.get(o.req).fire(o.event)}_handleUnsubscribeEventMessage(o){if(!this._pendingEvents.has(o.req)){console.warn(\"Got unsubscribe for unknown req\");return}this._pendingEvents.get(o.req).dispose(),this._pendingEvents.delete(o.req)}_send(o){const v=[];if(o.type===0)for(let b=0;b<o.args.length;b++)o.args[b]instanceof ArrayBuffer&&v.push(o.args[b]);else o.type===1&&o.res instanceof ArrayBuffer&&v.push(o.res);this._handler.sendMessage(o,v)}}class y extends i.Disposable{constructor(o,v,b){super();let w=null;this._worker=this._register(o.create(\"vs/base/common/worker/simpleWorker\",T=>{this._protocol.handleMessage(T)},T=>{w?.(T)})),this._protocol=new d({sendMessage:(T,W)=>{this._worker.postMessage(T,W)},handleMessage:(T,W)=>{if(typeof b[T]!=\"function\")return Promise.reject(new Error(\"Missing method \"+T+\" on main thread host.\"));try{return Promise.resolve(b[T].apply(b,W))}catch(G){return Promise.reject(G)}},handleEvent:(T,W)=>{if(R(T)){const G=b[T].call(b,W);if(typeof G!=\"function\")throw new Error(`Missing dynamic event ${T} on main thread host.`);return G}if(C(T)){const G=b[T];if(typeof G!=\"function\")throw new Error(`Missing event ${T} on main thread host.`);return G}throw new Error(`Malformed event name ${T}`)}}),this._protocol.setWorkerId(this._worker.getId());let A=null;const N=globalThis.require;typeof N<\"u\"&&typeof N.getConfig==\"function\"?A=N.getConfig():typeof globalThis.requirejs<\"u\"&&(A=globalThis.requirejs.s.contexts._.config);const F=(0,u.getAllMethodNames)(b);this._onModuleLoaded=this._protocol.sendMessage(a,[this._worker.getId(),JSON.parse(JSON.stringify(A)),v,F]);const O=(T,W)=>this._request(T,W),q=(T,W)=>this._protocol.listen(T,W);this._lazyProxy=new Promise((T,W)=>{w=W,this._onModuleLoaded.then(G=>{T(S(G,O,q))},G=>{W(G),this._onError(\"Worker failed to load \"+v,G)})})}getProxyObject(){return this._lazyProxy}_request(o,v){return new Promise((b,w)=>{this._onModuleLoaded.then(()=>{this._protocol.sendMessage(o,v).then(b,w)},w)})}_onError(o,v){console.error(o),console.info(v)}}n.SimpleWorkerClient=y;function C(l){return l[0]===\"o\"&&l[1]===\"n\"&&g.isUpperAsciiLetter(l.charCodeAt(2))}function R(l){return/^onDynamic/.test(l)&&g.isUpperAsciiLetter(l.charCodeAt(9))}function S(l,o,v){const b=N=>function(){const F=Array.prototype.slice.call(arguments,0);return o(N,F)},w=N=>function(F){return v(N,F)},A={};for(const N of l){if(R(N)){A[N]=w(N);continue}if(C(N)){A[N]=v(N,void 0);continue}A[N]=b(N)}return A}class p{constructor(o,v){this._requestHandlerFactory=v,this._requestHandler=null,this._protocol=new d({sendMessage:(b,w)=>{o(b,w)},handleMessage:(b,w)=>this._handleMessage(b,w),handleEvent:(b,w)=>this._handleEvent(b,w)})}onmessage(o){this._protocol.handleMessage(o)}_handleMessage(o,v){if(o===a)return this.initialize(v[0],v[1],v[2],v[3]);if(!this._requestHandler||typeof this._requestHandler[o]!=\"function\")return Promise.reject(new Error(\"Missing requestHandler or method: \"+o));try{return Promise.resolve(this._requestHandler[o].apply(this._requestHandler,v))}catch(b){return Promise.reject(b)}}_handleEvent(o,v){if(!this._requestHandler)throw new Error(\"Missing requestHandler\");if(R(o)){const b=this._requestHandler[o].call(this._requestHandler,v);if(typeof b!=\"function\")throw new Error(`Missing dynamic event ${o} on request handler.`);return b}if(C(o)){const b=this._requestHandler[o];if(typeof b!=\"function\")throw new Error(`Missing event ${o} on request handler.`);return b}throw new Error(`Malformed event name ${o}`)}initialize(o,v,b,w){this._protocol.setWorkerId(o);const F=S(w,(O,q)=>this._protocol.sendMessage(O,q),(O,q)=>this._protocol.listen(O,q));return this._requestHandlerFactory?(this._requestHandler=this._requestHandlerFactory(F),Promise.resolve((0,u.getAllMethodNames)(this._requestHandler))):(v&&(typeof v.baseUrl<\"u\"&&delete v.baseUrl,typeof v.paths<\"u\"&&typeof v.paths.vs<\"u\"&&delete v.paths.vs,typeof v.trustedTypesPolicy!==void 0&&delete v.trustedTypesPolicy,v.catchError=!0,globalThis.require.config(v)),new Promise((O,q)=>{(globalThis.require||U)([b],W=>{if(this._requestHandler=W.create(F),!this._requestHandler){q(new Error(\"No RequestHandler!\"));return}O((0,u.getAllMethodNames)(this._requestHandler))},q)}))}}n.SimpleWorkerServer=p;function r(l){return new p(l,null)}n.create=r}),K(te[59],ie([15,56]),function(U,n){return U.create(\"vs/editor/common/languages\",n)}),K(te[60],ie([0,1,35,14,2,54,59]),function(U,n,E,M,i,u,f){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.TokenizationRegistry=n.LazyTokenizationSupport=n.InlayHintKind=n.Command=n.FoldingRangeKind=n.TextEdit=n.SymbolKinds=n.getAriaLabelForSymbol=n.symbolKindNames=n.isLocationLink=n.DocumentHighlightKind=n.SignatureHelpTriggerKind=n.SelectedSuggestionInfo=n.InlineCompletionTriggerKind=n.CompletionItemKinds=n.EncodedTokenizationResult=n.TokenizationResult=n.Token=void 0;class g{constructor(o,v,b){this.offset=o,this.type=v,this.language=b,this._tokenBrand=void 0}toString(){return\"(\"+this.offset+\", \"+this.type+\")\"}}n.Token=g;class a{constructor(o,v){this.tokens=o,this.endState=v,this._tokenizationResultBrand=void 0}}n.TokenizationResult=a;class s{constructor(o,v){this.tokens=o,this.endState=v,this._encodedTokenizationResultBrand=void 0}}n.EncodedTokenizationResult=s;var _;(function(l){const o=new Map;o.set(0,E.Codicon.symbolMethod),o.set(1,E.Codicon.symbolFunction),o.set(2,E.Codicon.symbolConstructor),o.set(3,E.Codicon.symbolField),o.set(4,E.Codicon.symbolVariable),o.set(5,E.Codicon.symbolClass),o.set(6,E.Codicon.symbolStruct),o.set(7,E.Codicon.symbolInterface),o.set(8,E.Codicon.symbolModule),o.set(9,E.Codicon.symbolProperty),o.set(10,E.Codicon.symbolEvent),o.set(11,E.Codicon.symbolOperator),o.set(12,E.Codicon.symbolUnit),o.set(13,E.Codicon.symbolValue),o.set(15,E.Codicon.symbolEnum),o.set(14,E.Codicon.symbolConstant),o.set(15,E.Codicon.symbolEnum),o.set(16,E.Codicon.symbolEnumMember),o.set(17,E.Codicon.symbolKeyword),o.set(27,E.Codicon.symbolSnippet),o.set(18,E.Codicon.symbolText),o.set(19,E.Codicon.symbolColor),o.set(20,E.Codicon.symbolFile),o.set(21,E.Codicon.symbolReference),o.set(22,E.Codicon.symbolCustomColor),o.set(23,E.Codicon.symbolFolder),o.set(24,E.Codicon.symbolTypeParameter),o.set(25,E.Codicon.account),o.set(26,E.Codicon.issues);function v(A){let N=o.get(A);return N||(console.info(\"No codicon found for CompletionItemKind \"+A),N=E.Codicon.symbolProperty),N}l.toIcon=v;const b=new Map;b.set(\"method\",0),b.set(\"function\",1),b.set(\"constructor\",2),b.set(\"field\",3),b.set(\"variable\",4),b.set(\"class\",5),b.set(\"struct\",6),b.set(\"interface\",7),b.set(\"module\",8),b.set(\"property\",9),b.set(\"event\",10),b.set(\"operator\",11),b.set(\"unit\",12),b.set(\"value\",13),b.set(\"constant\",14),b.set(\"enum\",15),b.set(\"enum-member\",16),b.set(\"enumMember\",16),b.set(\"keyword\",17),b.set(\"snippet\",27),b.set(\"text\",18),b.set(\"color\",19),b.set(\"file\",20),b.set(\"reference\",21),b.set(\"customcolor\",22),b.set(\"folder\",23),b.set(\"type-parameter\",24),b.set(\"typeParameter\",24),b.set(\"account\",25),b.set(\"issue\",26);function w(A,N){let F=b.get(A);return typeof F>\"u\"&&!N&&(F=9),F}l.fromString=w})(_||(n.CompletionItemKinds=_={}));var t;(function(l){l[l.Automatic=0]=\"Automatic\",l[l.Explicit=1]=\"Explicit\"})(t||(n.InlineCompletionTriggerKind=t={}));class m{constructor(o,v,b,w){this.range=o,this.text=v,this.completionKind=b,this.isSnippetText=w}equals(o){return i.Range.lift(this.range).equalsRange(o.range)&&this.text===o.text&&this.completionKind===o.completionKind&&this.isSnippetText===o.isSnippetText}}n.SelectedSuggestionInfo=m;var h;(function(l){l[l.Invoke=1]=\"Invoke\",l[l.TriggerCharacter=2]=\"TriggerCharacter\",l[l.ContentChange=3]=\"ContentChange\"})(h||(n.SignatureHelpTriggerKind=h={}));var c;(function(l){l[l.Text=0]=\"Text\",l[l.Read=1]=\"Read\",l[l.Write=2]=\"Write\"})(c||(n.DocumentHighlightKind=c={}));function L(l){return l&&M.URI.isUri(l.uri)&&i.Range.isIRange(l.range)&&(i.Range.isIRange(l.originSelectionRange)||i.Range.isIRange(l.targetSelectionRange))}n.isLocationLink=L,n.symbolKindNames={[17]:(0,f.localize)(0,null),[16]:(0,f.localize)(1,null),[4]:(0,f.localize)(2,null),[13]:(0,f.localize)(3,null),[8]:(0,f.localize)(4,null),[9]:(0,f.localize)(5,null),[21]:(0,f.localize)(6,null),[23]:(0,f.localize)(7,null),[7]:(0,f.localize)(8,null),[0]:(0,f.localize)(9,null),[11]:(0,f.localize)(10,null),[10]:(0,f.localize)(11,null),[19]:(0,f.localize)(12,null),[5]:(0,f.localize)(13,null),[1]:(0,f.localize)(14,null),[2]:(0,f.localize)(15,null),[20]:(0,f.localize)(16,null),[15]:(0,f.localize)(17,null),[18]:(0,f.localize)(18,null),[24]:(0,f.localize)(19,null),[3]:(0,f.localize)(20,null),[6]:(0,f.localize)(21,null),[14]:(0,f.localize)(22,null),[22]:(0,f.localize)(23,null),[25]:(0,f.localize)(24,null),[12]:(0,f.localize)(25,null)};function d(l,o){return(0,f.localize)(26,null,l,n.symbolKindNames[o])}n.getAriaLabelForSymbol=d;var y;(function(l){const o=new Map;o.set(0,E.Codicon.symbolFile),o.set(1,E.Codicon.symbolModule),o.set(2,E.Codicon.symbolNamespace),o.set(3,E.Codicon.symbolPackage),o.set(4,E.Codicon.symbolClass),o.set(5,E.Codicon.symbolMethod),o.set(6,E.Codicon.symbolProperty),o.set(7,E.Codicon.symbolField),o.set(8,E.Codicon.symbolConstructor),o.set(9,E.Codicon.symbolEnum),o.set(10,E.Codicon.symbolInterface),o.set(11,E.Codicon.symbolFunction),o.set(12,E.Codicon.symbolVariable),o.set(13,E.Codicon.symbolConstant),o.set(14,E.Codicon.symbolString),o.set(15,E.Codicon.symbolNumber),o.set(16,E.Codicon.symbolBoolean),o.set(17,E.Codicon.symbolArray),o.set(18,E.Codicon.symbolObject),o.set(19,E.Codicon.symbolKey),o.set(20,E.Codicon.symbolNull),o.set(21,E.Codicon.symbolEnumMember),o.set(22,E.Codicon.symbolStruct),o.set(23,E.Codicon.symbolEvent),o.set(24,E.Codicon.symbolOperator),o.set(25,E.Codicon.symbolTypeParameter);function v(b){let w=o.get(b);return w||(console.info(\"No codicon found for SymbolKind \"+b),w=E.Codicon.symbolProperty),w}l.toIcon=v})(y||(n.SymbolKinds=y={}));class C{}n.TextEdit=C;class R{static fromValue(o){switch(o){case\"comment\":return R.Comment;case\"imports\":return R.Imports;case\"region\":return R.Region}return new R(o)}constructor(o){this.value=o}}n.FoldingRangeKind=R,R.Comment=new R(\"comment\"),R.Imports=new R(\"imports\"),R.Region=new R(\"region\");var S;(function(l){function o(v){return!v||typeof v!=\"object\"?!1:typeof v.id==\"string\"&&typeof v.title==\"string\"}l.is=o})(S||(n.Command=S={}));var p;(function(l){l[l.Type=1]=\"Type\",l[l.Parameter=2]=\"Parameter\"})(p||(n.InlayHintKind=p={}));class r{constructor(o){this.createSupport=o,this._tokenizationSupport=null}dispose(){this._tokenizationSupport&&this._tokenizationSupport.then(o=>{o&&o.dispose()})}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}n.LazyTokenizationSupport=r,n.TokenizationRegistry=new u.TokenizationRegistry}),K(te[61],ie([0,1,33,7,31,14,4,2,36,60,53]),function(U,n,E,M,i,u,f,g,a,s,_){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.createMonacoBaseAPI=n.KeyMod=void 0;class t{static chord(c,L){return(0,i.KeyChord)(c,L)}}n.KeyMod=t,t.CtrlCmd=2048,t.Shift=1024,t.Alt=512,t.WinCtrl=256;function m(){return{editor:void 0,languages:void 0,CancellationTokenSource:E.CancellationTokenSource,Emitter:M.Emitter,KeyCode:_.KeyCode,KeyMod:t,Position:f.Position,Range:g.Range,Selection:a.Selection,SelectionDirection:_.SelectionDirection,MarkerSeverity:_.MarkerSeverity,MarkerTag:_.MarkerTag,Uri:u.URI,Token:s.Token}}n.createMonacoBaseAPI=m}),K(te[63],ie([0,1,21,14,4,2,50,25,46,47,61,20,52,44,11,45]),function(U,n,E,M,i,u,f,g,a,s,_,t,m,h,c,L){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0}),n.create=n.EditorSimpleWorker=void 0;class d extends f.MirrorTextModel{get uri(){return this._uri}get eol(){return this._eol}getValue(){return this.getText()}findMatches(S){const p=[];for(let r=0;r<this._lines.length;r++){const l=this._lines[r],o=this.offsetAt(new i.Position(r+1,1)),v=l.matchAll(S);for(const b of v)(b.index||b.index===0)&&(b.index=b.index+o),p.push(b)}return p}getLinesContent(){return this._lines.slice(0)}getLineCount(){return this._lines.length}getLineContent(S){return this._lines[S-1]}getWordAtPosition(S,p){const r=(0,g.getWordAtText)(S.column,(0,g.ensureValidWordDefinition)(p),this._lines[S.lineNumber-1],0);return r?new u.Range(S.lineNumber,r.startColumn,S.lineNumber,r.endColumn):null}words(S){const p=this._lines,r=this._wordenize.bind(this);let l=0,o=\"\",v=0,b=[];return{*[Symbol.iterator](){for(;;)if(v<b.length){const w=o.substring(b[v].start,b[v].end);v+=1,yield w}else if(l<p.length)o=p[l],b=r(o,S),v=0,l+=1;else break}}}getLineWords(S,p){const r=this._lines[S-1],l=this._wordenize(r,p),o=[];for(const v of l)o.push({word:r.substring(v.start,v.end),startColumn:v.start+1,endColumn:v.end+1});return o}_wordenize(S,p){const r=[];let l;for(p.lastIndex=0;(l=p.exec(S))&&l[0].length!==0;)r.push({start:l.index,end:l.index+l[0].length});return r}getValueInRange(S){if(S=this._validateRange(S),S.startLineNumber===S.endLineNumber)return this._lines[S.startLineNumber-1].substring(S.startColumn-1,S.endColumn-1);const p=this._eol,r=S.startLineNumber-1,l=S.endLineNumber-1,o=[];o.push(this._lines[r].substring(S.startColumn-1));for(let v=r+1;v<l;v++)o.push(this._lines[v]);return o.push(this._lines[l].substring(0,S.endColumn-1)),o.join(p)}offsetAt(S){return S=this._validatePosition(S),this._ensureLineStarts(),this._lineStarts.getPrefixSum(S.lineNumber-2)+(S.column-1)}positionAt(S){S=Math.floor(S),S=Math.max(0,S),this._ensureLineStarts();const p=this._lineStarts.getIndexOf(S),r=this._lines[p.index].length;return{lineNumber:1+p.index,column:1+Math.min(p.remainder,r)}}_validateRange(S){const p=this._validatePosition({lineNumber:S.startLineNumber,column:S.startColumn}),r=this._validatePosition({lineNumber:S.endLineNumber,column:S.endColumn});return p.lineNumber!==S.startLineNumber||p.column!==S.startColumn||r.lineNumber!==S.endLineNumber||r.column!==S.endColumn?{startLineNumber:p.lineNumber,startColumn:p.column,endLineNumber:r.lineNumber,endColumn:r.column}:S}_validatePosition(S){if(!i.Position.isIPosition(S))throw new Error(\"bad position\");let{lineNumber:p,column:r}=S,l=!1;if(p<1)p=1,r=1,l=!0;else if(p>this._lines.length)p=this._lines.length,r=this._lines[p-1].length+1,l=!0;else{const o=this._lines[p-1].length+1;r<1?(r=1,l=!0):r>o&&(r=o,l=!0)}return l?{lineNumber:p,column:r}:S}}class y{constructor(S,p){this._host=S,this._models=Object.create(null),this._foreignModuleFactory=p,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(S){return this._models[S]}_getModels(){const S=[];return Object.keys(this._models).forEach(p=>S.push(this._models[p])),S}acceptNewModel(S){this._models[S.url]=new d(M.URI.parse(S.url),S.lines,S.EOL,S.versionId)}acceptModelChanged(S,p){if(!this._models[S])return;this._models[S].onEvents(p)}acceptRemovedModel(S){this._models[S]&&delete this._models[S]}computeUnicodeHighlights(S,p,r){return pe(this,void 0,void 0,function*(){const l=this._getModel(S);return l?m.UnicodeTextModelHighlighter.computeUnicodeHighlights(l,p,r):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}})}computeDiff(S,p,r,l){return pe(this,void 0,void 0,function*(){const o=this._getModel(S),v=this._getModel(p);return!o||!v?null:y.computeDiff(o,v,r,l)})}static computeDiff(S,p,r,l){const o=l===\"advanced\"?h.linesDiffComputers.getAdvanced():h.linesDiffComputers.getLegacy(),v=S.getLinesContent(),b=p.getLinesContent(),w=o.computeDiff(v,b,r),A=w.changes.length>0?!1:this._modelsAreIdentical(S,p);function N(F){return F.map(O=>{var q;return[O.originalRange.startLineNumber,O.originalRange.endLineNumberExclusive,O.modifiedRange.startLineNumber,O.modifiedRange.endLineNumberExclusive,(q=O.innerChanges)===null||q===void 0?void 0:q.map(T=>[T.originalRange.startLineNumber,T.originalRange.startColumn,T.originalRange.endLineNumber,T.originalRange.endColumn,T.modifiedRange.startLineNumber,T.modifiedRange.startColumn,T.modifiedRange.endLineNumber,T.modifiedRange.endColumn])]})}return{identical:A,quitEarly:w.hitTimeout,changes:N(w.changes),moves:w.moves.map(F=>[F.lineRangeMapping.original.startLineNumber,F.lineRangeMapping.original.endLineNumberExclusive,F.lineRangeMapping.modified.startLineNumber,F.lineRangeMapping.modified.endLineNumberExclusive,N(F.changes)])}}static _modelsAreIdentical(S,p){const r=S.getLineCount(),l=p.getLineCount();if(r!==l)return!1;for(let o=1;o<=r;o++){const v=S.getLineContent(o),b=p.getLineContent(o);if(v!==b)return!1}return!0}computeMoreMinimalEdits(S,p,r){return pe(this,void 0,void 0,function*(){const l=this._getModel(S);if(!l)return p;const o=[];let v;p=p.slice(0).sort((b,w)=>{if(b.range&&w.range)return u.Range.compareRangesUsingStarts(b.range,w.range);const A=b.range?0:1,N=w.range?0:1;return A-N});for(let{range:b,text:w,eol:A}of p){if(typeof A==\"number\"&&(v=A),u.Range.isEmpty(b)&&!w)continue;const N=l.getValueInRange(b);if(w=w.replace(/\\r\\n|\\n|\\r/g,l.eol),N===w)continue;if(Math.max(w.length,N.length)>y._diffLimit){o.push({range:b,text:w});continue}const F=(0,E.stringDiff)(N,w,r),O=l.offsetAt(u.Range.lift(b).getStartPosition());for(const q of F){const T=l.positionAt(O+q.originalStart),W=l.positionAt(O+q.originalStart+q.originalLength),G={text:w.substr(q.modifiedStart,q.modifiedLength),range:{startLineNumber:T.lineNumber,startColumn:T.column,endLineNumber:W.lineNumber,endColumn:W.column}};l.getValueInRange(G.range)!==G.text&&o.push(G)}}return typeof v==\"number\"&&o.push({eol:v,text:\"\",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),o})}computeLinks(S){return pe(this,void 0,void 0,function*(){const p=this._getModel(S);return p?(0,a.computeLinks)(p):null})}computeDefaultDocumentColors(S){return pe(this,void 0,void 0,function*(){const p=this._getModel(S);return p?(0,L.computeDefaultDocumentColors)(p):null})}textualSuggest(S,p,r,l){return pe(this,void 0,void 0,function*(){const o=new t.StopWatch,v=new RegExp(r,l),b=new Set;e:for(const w of S){const A=this._getModel(w);if(A){for(const N of A.words(v))if(!(N===p||!isNaN(Number(N)))&&(b.add(N),b.size>y._suggestionsLimit))break e}}return{words:Array.from(b),duration:o.elapsed()}})}computeWordRanges(S,p,r,l){return pe(this,void 0,void 0,function*(){const o=this._getModel(S);if(!o)return Object.create(null);const v=new RegExp(r,l),b=Object.create(null);for(let w=p.startLineNumber;w<p.endLineNumber;w++){const A=o.getLineWords(w,v);for(const N of A){if(!isNaN(Number(N.word)))continue;let F=b[N.word];F||(F=[],b[N.word]=F),F.push({startLineNumber:w,startColumn:N.startColumn,endLineNumber:w,endColumn:N.endColumn})}}return b})}navigateValueSet(S,p,r,l,o){return pe(this,void 0,void 0,function*(){const v=this._getModel(S);if(!v)return null;const b=new RegExp(l,o);p.startColumn===p.endColumn&&(p={startLineNumber:p.startLineNumber,startColumn:p.startColumn,endLineNumber:p.endLineNumber,endColumn:p.endColumn+1});const w=v.getValueInRange(p),A=v.getWordAtPosition({lineNumber:p.startLineNumber,column:p.startColumn},b);if(!A)return null;const N=v.getValueInRange(A);return s.BasicInplaceReplace.INSTANCE.navigateValueSet(p,w,A,N,r)})}loadForeignModule(S,p,r){const l=(b,w)=>this._host.fhr(b,w),v={host:(0,c.createProxyObject)(r,l),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(v,p),Promise.resolve((0,c.getAllMethodNames)(this._foreignModule))):new Promise((b,w)=>{U([S],A=>{this._foreignModule=A.create(v,p),b((0,c.getAllMethodNames)(this._foreignModule))},w)})}fmr(S,p){if(!this._foreignModule||typeof this._foreignModule[S]!=\"function\")return Promise.reject(new Error(\"Missing requestHandler or method: \"+S));try{return Promise.resolve(this._foreignModule[S].apply(this._foreignModule,p))}catch(r){return Promise.reject(r)}}}n.EditorSimpleWorker=y,y._diffLimit=1e5,y._suggestionsLimit=1e4;function C(R){return new y(R,null)}n.create=C,typeof importScripts==\"function\"&&(globalThis.monaco=(0,_.createMonacoBaseAPI)())})}).call(this);\n\n//# sourceMappingURL=../../../../min-maps/vs/base/worker/workerMain.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/abap/abap.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/abap/abap\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var i in e)s(t,i,{get:e[i],enumerable:!0})},d=(t,e,i,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of r(e))!c.call(t,n)&&n!==i&&s(t,n,{get:()=>e[n],enumerable:!(a=o(e,n))||a.enumerable});return t};var p=t=>d(s({},\"__esModule\",{value:!0}),t);var g={};l(g,{conf:()=>m,language:()=>u});var m={comments:{lineComment:\"*\"},brackets:[[\"[\",\"]\"],[\"(\",\")\"]]},u={defaultToken:\"invalid\",ignoreCase:!0,tokenPostfix:\".abap\",keywords:[\"abap-source\",\"abbreviated\",\"abstract\",\"accept\",\"accepting\",\"according\",\"activation\",\"actual\",\"add\",\"add-corresponding\",\"adjacent\",\"after\",\"alias\",\"aliases\",\"align\",\"all\",\"allocate\",\"alpha\",\"analysis\",\"analyzer\",\"and\",\"append\",\"appendage\",\"appending\",\"application\",\"archive\",\"area\",\"arithmetic\",\"as\",\"ascending\",\"aspect\",\"assert\",\"assign\",\"assigned\",\"assigning\",\"association\",\"asynchronous\",\"at\",\"attributes\",\"authority\",\"authority-check\",\"avg\",\"back\",\"background\",\"backup\",\"backward\",\"badi\",\"base\",\"before\",\"begin\",\"between\",\"big\",\"binary\",\"bintohex\",\"bit\",\"black\",\"blank\",\"blanks\",\"blob\",\"block\",\"blocks\",\"blue\",\"bound\",\"boundaries\",\"bounds\",\"boxed\",\"break-point\",\"buffer\",\"by\",\"bypassing\",\"byte\",\"byte-order\",\"call\",\"calling\",\"case\",\"cast\",\"casting\",\"catch\",\"center\",\"centered\",\"chain\",\"chain-input\",\"chain-request\",\"change\",\"changing\",\"channels\",\"character\",\"char-to-hex\",\"check\",\"checkbox\",\"ci_\",\"circular\",\"class\",\"class-coding\",\"class-data\",\"class-events\",\"class-methods\",\"class-pool\",\"cleanup\",\"clear\",\"client\",\"clob\",\"clock\",\"close\",\"coalesce\",\"code\",\"coding\",\"col_background\",\"col_group\",\"col_heading\",\"col_key\",\"col_negative\",\"col_normal\",\"col_positive\",\"col_total\",\"collect\",\"color\",\"column\",\"columns\",\"comment\",\"comments\",\"commit\",\"common\",\"communication\",\"comparing\",\"component\",\"components\",\"compression\",\"compute\",\"concat\",\"concat_with_space\",\"concatenate\",\"cond\",\"condense\",\"condition\",\"connect\",\"connection\",\"constants\",\"context\",\"contexts\",\"continue\",\"control\",\"controls\",\"conv\",\"conversion\",\"convert\",\"copies\",\"copy\",\"corresponding\",\"country\",\"cover\",\"cpi\",\"create\",\"creating\",\"critical\",\"currency\",\"currency_conversion\",\"current\",\"cursor\",\"cursor-selection\",\"customer\",\"customer-function\",\"dangerous\",\"data\",\"database\",\"datainfo\",\"dataset\",\"date\",\"dats_add_days\",\"dats_add_months\",\"dats_days_between\",\"dats_is_valid\",\"daylight\",\"dd/mm/yy\",\"dd/mm/yyyy\",\"ddmmyy\",\"deallocate\",\"decimal_shift\",\"decimals\",\"declarations\",\"deep\",\"default\",\"deferred\",\"define\",\"defining\",\"definition\",\"delete\",\"deleting\",\"demand\",\"department\",\"descending\",\"describe\",\"destination\",\"detail\",\"dialog\",\"directory\",\"disconnect\",\"display\",\"display-mode\",\"distinct\",\"divide\",\"divide-corresponding\",\"division\",\"do\",\"dummy\",\"duplicate\",\"duplicates\",\"duration\",\"during\",\"dynamic\",\"dynpro\",\"edit\",\"editor-call\",\"else\",\"elseif\",\"empty\",\"enabled\",\"enabling\",\"encoding\",\"end\",\"endat\",\"endcase\",\"endcatch\",\"endchain\",\"endclass\",\"enddo\",\"endenhancement\",\"end-enhancement-section\",\"endexec\",\"endform\",\"endfunction\",\"endian\",\"endif\",\"ending\",\"endinterface\",\"end-lines\",\"endloop\",\"endmethod\",\"endmodule\",\"end-of-definition\",\"end-of-editing\",\"end-of-file\",\"end-of-page\",\"end-of-selection\",\"endon\",\"endprovide\",\"endselect\",\"end-test-injection\",\"end-test-seam\",\"endtry\",\"endwhile\",\"endwith\",\"engineering\",\"enhancement\",\"enhancement-point\",\"enhancements\",\"enhancement-section\",\"entries\",\"entry\",\"enum\",\"environment\",\"equiv\",\"errormessage\",\"errors\",\"escaping\",\"event\",\"events\",\"exact\",\"except\",\"exception\",\"exceptions\",\"exception-table\",\"exclude\",\"excluding\",\"exec\",\"execute\",\"exists\",\"exit\",\"exit-command\",\"expand\",\"expanding\",\"expiration\",\"explicit\",\"exponent\",\"export\",\"exporting\",\"extend\",\"extended\",\"extension\",\"extract\",\"fail\",\"fetch\",\"field\",\"field-groups\",\"fields\",\"field-symbol\",\"field-symbols\",\"file\",\"filter\",\"filters\",\"filter-table\",\"final\",\"find\",\"first\",\"first-line\",\"fixed-point\",\"fkeq\",\"fkge\",\"flush\",\"font\",\"for\",\"form\",\"format\",\"forward\",\"found\",\"frame\",\"frames\",\"free\",\"friends\",\"from\",\"function\",\"functionality\",\"function-pool\",\"further\",\"gaps\",\"generate\",\"get\",\"giving\",\"gkeq\",\"gkge\",\"global\",\"grant\",\"green\",\"group\",\"groups\",\"handle\",\"handler\",\"harmless\",\"hashed\",\"having\",\"hdb\",\"header\",\"headers\",\"heading\",\"head-lines\",\"help-id\",\"help-request\",\"hextobin\",\"hide\",\"high\",\"hint\",\"hold\",\"hotspot\",\"icon\",\"id\",\"identification\",\"identifier\",\"ids\",\"if\",\"ignore\",\"ignoring\",\"immediately\",\"implementation\",\"implementations\",\"implemented\",\"implicit\",\"import\",\"importing\",\"in\",\"inactive\",\"incl\",\"include\",\"includes\",\"including\",\"increment\",\"index\",\"index-line\",\"infotypes\",\"inheriting\",\"init\",\"initial\",\"initialization\",\"inner\",\"inout\",\"input\",\"insert\",\"instance\",\"instances\",\"instr\",\"intensified\",\"interface\",\"interface-pool\",\"interfaces\",\"internal\",\"intervals\",\"into\",\"inverse\",\"inverted-date\",\"is\",\"iso\",\"job\",\"join\",\"keep\",\"keeping\",\"kernel\",\"key\",\"keys\",\"keywords\",\"kind\",\"language\",\"last\",\"late\",\"layout\",\"leading\",\"leave\",\"left\",\"left-justified\",\"leftplus\",\"leftspace\",\"legacy\",\"length\",\"let\",\"level\",\"levels\",\"like\",\"line\",\"lines\",\"line-count\",\"linefeed\",\"line-selection\",\"line-size\",\"list\",\"listbox\",\"list-processing\",\"little\",\"llang\",\"load\",\"load-of-program\",\"lob\",\"local\",\"locale\",\"locator\",\"logfile\",\"logical\",\"log-point\",\"long\",\"loop\",\"low\",\"lower\",\"lpad\",\"lpi\",\"ltrim\",\"mail\",\"main\",\"major-id\",\"mapping\",\"margin\",\"mark\",\"mask\",\"match\",\"matchcode\",\"max\",\"maximum\",\"medium\",\"members\",\"memory\",\"mesh\",\"message\",\"message-id\",\"messages\",\"messaging\",\"method\",\"methods\",\"min\",\"minimum\",\"minor-id\",\"mm/dd/yy\",\"mm/dd/yyyy\",\"mmddyy\",\"mode\",\"modif\",\"modifier\",\"modify\",\"module\",\"move\",\"move-corresponding\",\"multiply\",\"multiply-corresponding\",\"name\",\"nametab\",\"native\",\"nested\",\"nesting\",\"new\",\"new-line\",\"new-page\",\"new-section\",\"next\",\"no\",\"no-display\",\"no-extension\",\"no-gap\",\"no-gaps\",\"no-grouping\",\"no-heading\",\"no-scrolling\",\"no-sign\",\"no-title\",\"no-topofpage\",\"no-zero\",\"node\",\"nodes\",\"non-unicode\",\"non-unique\",\"not\",\"null\",\"number\",\"object\",\"objects\",\"obligatory\",\"occurrence\",\"occurrences\",\"occurs\",\"of\",\"off\",\"offset\",\"ole\",\"on\",\"only\",\"open\",\"option\",\"optional\",\"options\",\"or\",\"order\",\"other\",\"others\",\"out\",\"outer\",\"output\",\"output-length\",\"overflow\",\"overlay\",\"pack\",\"package\",\"pad\",\"padding\",\"page\",\"pages\",\"parameter\",\"parameters\",\"parameter-table\",\"part\",\"partially\",\"pattern\",\"percentage\",\"perform\",\"performing\",\"person\",\"pf1\",\"pf10\",\"pf11\",\"pf12\",\"pf13\",\"pf14\",\"pf15\",\"pf2\",\"pf3\",\"pf4\",\"pf5\",\"pf6\",\"pf7\",\"pf8\",\"pf9\",\"pf-status\",\"pink\",\"places\",\"pool\",\"pos_high\",\"pos_low\",\"position\",\"pragmas\",\"precompiled\",\"preferred\",\"preserving\",\"primary\",\"print\",\"print-control\",\"priority\",\"private\",\"procedure\",\"process\",\"program\",\"property\",\"protected\",\"provide\",\"public\",\"push\",\"pushbutton\",\"put\",\"queue-only\",\"quickinfo\",\"radiobutton\",\"raise\",\"raising\",\"range\",\"ranges\",\"read\",\"reader\",\"read-only\",\"receive\",\"received\",\"receiver\",\"receiving\",\"red\",\"redefinition\",\"reduce\",\"reduced\",\"ref\",\"reference\",\"refresh\",\"regex\",\"reject\",\"remote\",\"renaming\",\"replace\",\"replacement\",\"replacing\",\"report\",\"request\",\"requested\",\"reserve\",\"reset\",\"resolution\",\"respecting\",\"responsible\",\"result\",\"results\",\"resumable\",\"resume\",\"retry\",\"return\",\"returncode\",\"returning\",\"returns\",\"right\",\"right-justified\",\"rightplus\",\"rightspace\",\"risk\",\"rmc_communication_failure\",\"rmc_invalid_status\",\"rmc_system_failure\",\"role\",\"rollback\",\"rows\",\"rpad\",\"rtrim\",\"run\",\"sap\",\"sap-spool\",\"saving\",\"scale_preserving\",\"scale_preserving_scientific\",\"scan\",\"scientific\",\"scientific_with_leading_zero\",\"scroll\",\"scroll-boundary\",\"scrolling\",\"search\",\"secondary\",\"seconds\",\"section\",\"select\",\"selection\",\"selections\",\"selection-screen\",\"selection-set\",\"selection-sets\",\"selection-table\",\"select-options\",\"send\",\"separate\",\"separated\",\"set\",\"shared\",\"shift\",\"short\",\"shortdump-id\",\"sign_as_postfix\",\"single\",\"size\",\"skip\",\"skipping\",\"smart\",\"some\",\"sort\",\"sortable\",\"sorted\",\"source\",\"specified\",\"split\",\"spool\",\"spots\",\"sql\",\"sqlscript\",\"stable\",\"stamp\",\"standard\",\"starting\",\"start-of-editing\",\"start-of-selection\",\"state\",\"statement\",\"statements\",\"static\",\"statics\",\"statusinfo\",\"step-loop\",\"stop\",\"structure\",\"structures\",\"style\",\"subkey\",\"submatches\",\"submit\",\"subroutine\",\"subscreen\",\"subtract\",\"subtract-corresponding\",\"suffix\",\"sum\",\"summary\",\"summing\",\"supplied\",\"supply\",\"suppress\",\"switch\",\"switchstates\",\"symbol\",\"syncpoints\",\"syntax\",\"syntax-check\",\"syntax-trace\",\"system-call\",\"system-exceptions\",\"system-exit\",\"tab\",\"tabbed\",\"table\",\"tables\",\"tableview\",\"tabstrip\",\"target\",\"task\",\"tasks\",\"test\",\"testing\",\"test-injection\",\"test-seam\",\"text\",\"textpool\",\"then\",\"throw\",\"time\",\"times\",\"timestamp\",\"timezone\",\"tims_is_valid\",\"title\",\"titlebar\",\"title-lines\",\"to\",\"tokenization\",\"tokens\",\"top-lines\",\"top-of-page\",\"trace-file\",\"trace-table\",\"trailing\",\"transaction\",\"transfer\",\"transformation\",\"translate\",\"transporting\",\"trmac\",\"truncate\",\"truncation\",\"try\",\"tstmp_add_seconds\",\"tstmp_current_utctimestamp\",\"tstmp_is_valid\",\"tstmp_seconds_between\",\"type\",\"type-pool\",\"type-pools\",\"types\",\"uline\",\"unassign\",\"under\",\"unicode\",\"union\",\"unique\",\"unit_conversion\",\"unix\",\"unpack\",\"until\",\"unwind\",\"up\",\"update\",\"upper\",\"user\",\"user-command\",\"using\",\"utf-8\",\"valid\",\"value\",\"value-request\",\"values\",\"vary\",\"varying\",\"verification-message\",\"version\",\"via\",\"view\",\"visible\",\"wait\",\"warning\",\"when\",\"whenever\",\"where\",\"while\",\"width\",\"window\",\"windows\",\"with\",\"with-heading\",\"without\",\"with-title\",\"word\",\"work\",\"write\",\"writer\",\"xml\",\"xsd\",\"yellow\",\"yes\",\"yymmdd\",\"zero\",\"zone\",\"abap_system_timezone\",\"abap_user_timezone\",\"access\",\"action\",\"adabas\",\"adjust_numbers\",\"allow_precision_loss\",\"allowed\",\"amdp\",\"applicationuser\",\"as_geo_json\",\"as400\",\"associations\",\"balance\",\"behavior\",\"breakup\",\"bulk\",\"cds\",\"cds_client\",\"check_before_save\",\"child\",\"clients\",\"corr\",\"corr_spearman\",\"cross\",\"cycles\",\"datn_add_days\",\"datn_add_months\",\"datn_days_between\",\"dats_from_datn\",\"dats_tims_to_tstmp\",\"dats_to_datn\",\"db2\",\"db6\",\"ddl\",\"dense_rank\",\"depth\",\"deterministic\",\"discarding\",\"entities\",\"entity\",\"error\",\"failed\",\"finalize\",\"first_value\",\"fltp_to_dec\",\"following\",\"fractional\",\"full\",\"graph\",\"grouping\",\"hierarchy\",\"hierarchy_ancestors\",\"hierarchy_ancestors_aggregate\",\"hierarchy_descendants\",\"hierarchy_descendants_aggregate\",\"hierarchy_siblings\",\"incremental\",\"indicators\",\"lag\",\"last_value\",\"lead\",\"leaves\",\"like_regexpr\",\"link\",\"locale_sap\",\"lock\",\"locks\",\"many\",\"mapped\",\"matched\",\"measures\",\"median\",\"mssqlnt\",\"multiple\",\"nodetype\",\"ntile\",\"nulls\",\"occurrences_regexpr\",\"one\",\"operations\",\"oracle\",\"orphans\",\"over\",\"parent\",\"parents\",\"partition\",\"pcre\",\"period\",\"pfcg_mapping\",\"preceding\",\"privileged\",\"product\",\"projection\",\"rank\",\"redirected\",\"replace_regexpr\",\"reported\",\"response\",\"responses\",\"root\",\"row\",\"row_number\",\"sap_system_date\",\"save\",\"schema\",\"session\",\"sets\",\"shortdump\",\"siblings\",\"spantree\",\"start\",\"stddev\",\"string_agg\",\"subtotal\",\"sybase\",\"tims_from_timn\",\"tims_to_timn\",\"to_blob\",\"to_clob\",\"total\",\"trace-entry\",\"tstmp_to_dats\",\"tstmp_to_dst\",\"tstmp_to_tims\",\"tstmpl_from_utcl\",\"tstmpl_to_utcl\",\"unbounded\",\"utcl_add_seconds\",\"utcl_current\",\"utcl_seconds_between\",\"uuid\",\"var\",\"verbatim\"],builtinFunctions:[\"abs\",\"acos\",\"asin\",\"atan\",\"bit-set\",\"boolc\",\"boolx\",\"ceil\",\"char_off\",\"charlen\",\"cmax\",\"cmin\",\"concat_lines_of\",\"contains\",\"contains_any_not_of\",\"contains_any_of\",\"cos\",\"cosh\",\"count\",\"count_any_not_of\",\"count_any_of\",\"dbmaxlen\",\"distance\",\"escape\",\"exp\",\"find_any_not_of\",\"find_any_of\",\"find_end\",\"floor\",\"frac\",\"from_mixed\",\"ipow\",\"line_exists\",\"line_index\",\"log\",\"log10\",\"matches\",\"nmax\",\"nmin\",\"numofchar\",\"repeat\",\"rescale\",\"reverse\",\"round\",\"segment\",\"shift_left\",\"shift_right\",\"sign\",\"sin\",\"sinh\",\"sqrt\",\"strlen\",\"substring\",\"substring_after\",\"substring_before\",\"substring_from\",\"substring_to\",\"tan\",\"tanh\",\"to_lower\",\"to_mixed\",\"to_upper\",\"trunc\",\"utclong_add\",\"utclong_current\",\"utclong_diff\",\"xsdbool\",\"xstrlen\"],typeKeywords:[\"b\",\"c\",\"d\",\"decfloat16\",\"decfloat34\",\"f\",\"i\",\"int8\",\"n\",\"p\",\"s\",\"string\",\"t\",\"utclong\",\"x\",\"xstring\",\"any\",\"clike\",\"csequence\",\"decfloat\",\"numeric\",\"simple\",\"xsequence\",\"accp\",\"char\",\"clnt\",\"cuky\",\"curr\",\"datn\",\"dats\",\"d16d\",\"d16n\",\"d16r\",\"d34d\",\"d34n\",\"d34r\",\"dec\",\"df16_dec\",\"df16_raw\",\"df34_dec\",\"df34_raw\",\"fltp\",\"geom_ewkb\",\"int1\",\"int2\",\"int4\",\"lang\",\"lchr\",\"lraw\",\"numc\",\"quan\",\"raw\",\"rawstring\",\"sstring\",\"timn\",\"tims\",\"unit\",\"utcl\",\"df16_scl\",\"df34_scl\",\"prec\",\"varc\",\"abap_bool\",\"abap_false\",\"abap_true\",\"abap_undefined\",\"me\",\"screen\",\"space\",\"super\",\"sy\",\"syst\",\"table_line\",\"*sys*\"],builtinMethods:[\"class_constructor\",\"constructor\"],derivedTypes:[\"%CID\",\"%CID_REF\",\"%CONTROL\",\"%DATA\",\"%ELEMENT\",\"%FAIL\",\"%KEY\",\"%MSG\",\"%PARAM\",\"%PID\",\"%PID_ASSOC\",\"%PID_PARENT\",\"%_HINTS\"],cdsLanguage:[\"@AbapAnnotation\",\"@AbapCatalog\",\"@AccessControl\",\"@API\",\"@ClientDependent\",\"@ClientHandling\",\"@CompatibilityContract\",\"@DataAging\",\"@EndUserText\",\"@Environment\",\"@LanguageDependency\",\"@MappingRole\",\"@Metadata\",\"@MetadataExtension\",\"@ObjectModel\",\"@Scope\",\"@Semantics\",\"$EXTENSION\",\"$SELF\"],selectors:[\"->\",\"->*\",\"=>\",\"~\",\"~*\"],operators:[\" +\",\" -\",\"/\",\"*\",\"**\",\"div\",\"mod\",\"=\",\"#\",\"@\",\"+=\",\"-=\",\"*=\",\"/=\",\"**=\",\"&&=\",\"?=\",\"&\",\"&&\",\"bit-and\",\"bit-not\",\"bit-or\",\"bit-xor\",\"m\",\"o\",\"z\",\"<\",\" >\",\"<=\",\">=\",\"<>\",\"><\",\"=<\",\"=>\",\"bt\",\"byte-ca\",\"byte-cn\",\"byte-co\",\"byte-cs\",\"byte-na\",\"byte-ns\",\"ca\",\"cn\",\"co\",\"cp\",\"cs\",\"eq\",\"ge\",\"gt\",\"le\",\"lt\",\"na\",\"nb\",\"ne\",\"np\",\"ns\",\"*/\",\"*:\",\"--\",\"/*\",\"//\"],symbols:/[=><!~?&+\\-*\\/\\^%#@]+/,tokenizer:{root:[[/[a-z_\\/$%@]([\\w\\/$%]|-(?!>))*/,{cases:{\"@typeKeywords\":\"type\",\"@keywords\":\"keyword\",\"@cdsLanguage\":\"annotation\",\"@derivedTypes\":\"type\",\"@builtinFunctions\":\"type\",\"@builtinMethods\":\"type\",\"@operators\":\"key\",\"@default\":\"identifier\"}}],[/<[\\w]+>/,\"identifier\"],[/##[\\w|_]+/,\"comment\"],{include:\"@whitespace\"},[/[:,.]/,\"delimiter\"],[/[{}()\\[\\]]/,\"@brackets\"],[/@symbols/,{cases:{\"@selectors\":\"tag\",\"@operators\":\"key\",\"@default\":\"\"}}],[/'/,{token:\"string\",bracket:\"@open\",next:\"@stringquote\"}],[/`/,{token:\"string\",bracket:\"@open\",next:\"@stringping\"}],[/\\|/,{token:\"string\",bracket:\"@open\",next:\"@stringtemplate\"}],[/\\d+/,\"number\"]],stringtemplate:[[/[^\\\\\\|]+/,\"string\"],[/\\\\\\|/,\"string\"],[/\\|/,{token:\"string\",bracket:\"@close\",next:\"@pop\"}]],stringping:[[/[^\\\\`]+/,\"string\"],[/`/,{token:\"string\",bracket:\"@close\",next:\"@pop\"}]],stringquote:[[/[^\\\\']+/,\"string\"],[/'/,{token:\"string\",bracket:\"@close\",next:\"@pop\"}]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/^\\*.*$/,\"comment\"],[/\\\".*$/,\"comment\"]]}};return p(g);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/apex/apex.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/apex/apex\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var i=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var d=(e,t)=>{for(var s in t)i(e,s,{get:t[s],enumerable:!0})},g=(e,t,s,a)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let o of c(t))!l.call(e,o)&&o!==s&&i(e,o,{get:()=>t[o],enumerable:!(a=r(t,o))||a.enumerable});return e};var p=e=>g(i({},\"__esModule\",{value:!0}),e);var h={};d(h,{conf:()=>m,language:()=>b});var m={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"<\",close:\">\"}],folding:{markers:{start:new RegExp(\"^\\\\s*//\\\\s*(?:(?:#?region\\\\b)|(?:<editor-fold\\\\b))\"),end:new RegExp(\"^\\\\s*//\\\\s*(?:(?:#?endregion\\\\b)|(?:</editor-fold>))\")}}},u=[\"abstract\",\"activate\",\"and\",\"any\",\"array\",\"as\",\"asc\",\"assert\",\"autonomous\",\"begin\",\"bigdecimal\",\"blob\",\"boolean\",\"break\",\"bulk\",\"by\",\"case\",\"cast\",\"catch\",\"char\",\"class\",\"collect\",\"commit\",\"const\",\"continue\",\"convertcurrency\",\"decimal\",\"default\",\"delete\",\"desc\",\"do\",\"double\",\"else\",\"end\",\"enum\",\"exception\",\"exit\",\"export\",\"extends\",\"false\",\"final\",\"finally\",\"float\",\"for\",\"from\",\"future\",\"get\",\"global\",\"goto\",\"group\",\"having\",\"hint\",\"if\",\"implements\",\"import\",\"in\",\"inner\",\"insert\",\"instanceof\",\"int\",\"interface\",\"into\",\"join\",\"last_90_days\",\"last_month\",\"last_n_days\",\"last_week\",\"like\",\"limit\",\"list\",\"long\",\"loop\",\"map\",\"merge\",\"native\",\"new\",\"next_90_days\",\"next_month\",\"next_n_days\",\"next_week\",\"not\",\"null\",\"nulls\",\"number\",\"object\",\"of\",\"on\",\"or\",\"outer\",\"override\",\"package\",\"parallel\",\"pragma\",\"private\",\"protected\",\"public\",\"retrieve\",\"return\",\"returning\",\"rollback\",\"savepoint\",\"search\",\"select\",\"set\",\"short\",\"sort\",\"stat\",\"static\",\"strictfp\",\"super\",\"switch\",\"synchronized\",\"system\",\"testmethod\",\"then\",\"this\",\"this_month\",\"this_week\",\"throw\",\"throws\",\"today\",\"tolabel\",\"tomorrow\",\"transaction\",\"transient\",\"trigger\",\"true\",\"try\",\"type\",\"undelete\",\"update\",\"upsert\",\"using\",\"virtual\",\"void\",\"volatile\",\"webservice\",\"when\",\"where\",\"while\",\"yesterday\"],f=e=>e.charAt(0).toUpperCase()+e.substr(1),n=[];u.forEach(e=>{n.push(e),n.push(e.toUpperCase()),n.push(f(e))});var b={defaultToken:\"\",tokenPostfix:\".apex\",keywords:n,operators:[\"=\",\">\",\"<\",\"!\",\"~\",\"?\",\":\",\"==\",\"<=\",\">=\",\"!=\",\"&&\",\"||\",\"++\",\"--\",\"+\",\"-\",\"*\",\"/\",\"&\",\"|\",\"^\",\"%\",\"<<\",\">>\",\">>>\",\"+=\",\"-=\",\"*=\",\"/=\",\"&=\",\"|=\",\"^=\",\"%=\",\"<<=\",\">>=\",\">>>=\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\\d+(_+\\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,tokenizer:{root:[[/[a-z_$][\\w$]*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],[/[A-Z][\\w\\$]*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"type.identifier\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/@\\s*[a-zA-Z_\\$][\\w\\$]*/,\"annotation\"],[/(@digits)[eE]([\\-+]?(@digits))?[fFdD]?/,\"number.float\"],[/(@digits)\\.(@digits)([eE][\\-+]?(@digits))?[fFdD]?/,\"number.float\"],[/(@digits)[fFdD]/,\"number.float\"],[/(@digits)[lL]?/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/'([^'\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",'@string.\"'],[/'/,\"string\",\"@string.'\"],[/'[^\\\\']'/,\"string\"],[/(')(@escapes)(')/,[\"string\",\"string.escape\",\"string\"]],[/'/,\"string.invalid\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*\\*(?!\\/)/,\"comment.doc\",\"@apexdoc\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],apexdoc:[[/[^\\/*]+/,\"comment.doc\"],[/\\*\\//,\"comment.doc\",\"@pop\"],[/[\\/*]/,\"comment.doc\"]],string:[[/[^\\\\\"']+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/[\"']/,{cases:{\"$#==$S2\":{token:\"string\",next:\"@pop\"},\"@default\":\"string\"}}]]}};return p(h);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/azcli/azcli.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/azcli/azcli\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},k=(t,e,o,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of r(e))!l.call(t,n)&&n!==o&&s(t,n,{get:()=>e[n],enumerable:!(a=i(e,n))||a.enumerable});return t};var p=t=>k(s({},\"__esModule\",{value:!0}),t);var d={};c(d,{conf:()=>f,language:()=>g});var f={comments:{lineComment:\"#\"}},g={defaultToken:\"keyword\",ignoreCase:!0,tokenPostfix:\".azcli\",str:/[^#\\s]/,tokenizer:{root:[{include:\"@comment\"},[/\\s-+@str*\\s*/,{cases:{\"@eos\":{token:\"key.identifier\",next:\"@popall\"},\"@default\":{token:\"key.identifier\",next:\"@type\"}}}],[/^-+@str*\\s*/,{cases:{\"@eos\":{token:\"key.identifier\",next:\"@popall\"},\"@default\":{token:\"key.identifier\",next:\"@type\"}}}]],type:[{include:\"@comment\"},[/-+@str*\\s*/,{cases:{\"@eos\":{token:\"key.identifier\",next:\"@popall\"},\"@default\":\"key.identifier\"}}],[/@str+\\s*/,{cases:{\"@eos\":{token:\"string\",next:\"@popall\"},\"@default\":\"string\"}}]],comment:[[/#.*$/,{cases:{\"@eos\":{token:\"comment\",next:\"@popall\"}}}]]}};return p(d);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/bat/bat.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/bat/bat\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var n=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var g=(o,e)=>{for(var t in e)n(o,t,{get:e[t],enumerable:!0})},c=(o,e,t,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of l(e))!i.call(o,s)&&s!==t&&n(o,s,{get:()=>e[s],enumerable:!(a=r(e,s))||a.enumerable});return o};var p=o=>c(n({},\"__esModule\",{value:!0}),o);var k={};g(k,{conf:()=>d,language:()=>m});var d={comments:{lineComment:\"REM\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'}],surroundingPairs:[{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'}],folding:{markers:{start:new RegExp(\"^\\\\s*(::\\\\s*|REM\\\\s+)#region\"),end:new RegExp(\"^\\\\s*(::\\\\s*|REM\\\\s+)#endregion\")}}},m={defaultToken:\"\",ignoreCase:!0,tokenPostfix:\".bat\",brackets:[{token:\"delimiter.bracket\",open:\"{\",close:\"}\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"},{token:\"delimiter.square\",open:\"[\",close:\"]\"}],keywords:/call|defined|echo|errorlevel|exist|for|goto|if|pause|set|shift|start|title|not|pushd|popd/,symbols:/[=><!~?&|+\\-*\\/\\^;\\.,]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^(\\s*)(rem(?:\\s.*|))$/,[\"\",\"comment\"]],[/(\\@?)(@keywords)(?!\\w)/,[{token:\"keyword\"},{token:\"keyword.$2\"}]],[/[ \\t\\r\\n]+/,\"\"],[/setlocal(?!\\w)/,\"keyword.tag-setlocal\"],[/endlocal(?!\\w)/,\"keyword.tag-setlocal\"],[/[a-zA-Z_]\\w*/,\"\"],[/:\\w*/,\"metatag\"],[/%[^%]+%/,\"variable\"],[/%%[\\w]+(?!\\w)/,\"variable\"],[/[{}()\\[\\]]/,\"@brackets\"],[/@symbols/,\"delimiter\"],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,\"number.hex\"],[/\\d+/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"/,\"string\",'@string.\"'],[/'/,\"string\",\"@string.'\"]],string:[[/[^\\\\\"'%]+/,{cases:{\"@eos\":{token:\"string\",next:\"@popall\"},\"@default\":\"string\"}}],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/%[\\w ]+%/,\"variable\"],[/%%[\\w]+(?!\\w)/,\"variable\"],[/[\"']/,{cases:{\"$#==$S2\":{token:\"string\",next:\"@pop\"},\"@default\":\"string\"}}],[/$/,\"string\",\"@popall\"]]}};return p(k);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/bicep/bicep.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/bicep/bicep\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var g=(e,n)=>{for(var o in n)r(e,o,{get:n[o],enumerable:!0})},l=(e,n,o,i)=>{if(n&&typeof n==\"object\"||typeof n==\"function\")for(let t of c(n))!a.call(e,t)&&t!==o&&r(e,t,{get:()=>n[t],enumerable:!(i=s(n,t))||i.enumerable});return e};var m=e=>l(r({},\"__esModule\",{value:!0}),e);var y={};g(y,{conf:()=>$,language:()=>w});var p=e=>`\\\\b${e}\\\\b`,k=\"[_a-zA-Z]\",x=\"[_a-zA-Z0-9]\",u=p(`${k}${x}*`),d=[\"targetScope\",\"resource\",\"module\",\"param\",\"var\",\"output\",\"for\",\"in\",\"if\",\"existing\"],b=[\"true\",\"false\",\"null\"],f=\"[ \\\\t\\\\r\\\\n]\",C=\"[0-9]+\",$={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"'\",close:\"'\"},{open:\"'''\",close:\"'''\"}],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]},{open:\"'''\",close:\"'''\",notIn:[\"string\",\"comment\"]}],autoCloseBefore:`:.,=}])' \n\t`,indentationRules:{increaseIndentPattern:new RegExp(\"^((?!\\\\/\\\\/).)*(\\\\{[^}\\\"'`]*|\\\\([^)\\\"'`]*|\\\\[[^\\\\]\\\"'`]*)$\"),decreaseIndentPattern:new RegExp(\"^((?!.*?\\\\/\\\\*).*\\\\*/)?\\\\s*[\\\\}\\\\]].*$\")}},w={defaultToken:\"\",tokenPostfix:\".bicep\",brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],symbols:/[=><!~?:&|+\\-*/^%]+/,keywords:d,namedLiterals:b,escapes:\"\\\\\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\\\\\|'|\\\\${)\",tokenizer:{root:[{include:\"@expression\"},{include:\"@whitespace\"}],stringVerbatim:[{regex:\"(|'|'')[^']\",action:{token:\"string\"}},{regex:\"'''\",action:{token:\"string.quote\",next:\"@pop\"}}],stringLiteral:[{regex:\"\\\\${\",action:{token:\"delimiter.bracket\",next:\"@bracketCounting\"}},{regex:\"[^\\\\\\\\'$]+\",action:{token:\"string\"}},{regex:\"@escapes\",action:{token:\"string.escape\"}},{regex:\"\\\\\\\\.\",action:{token:\"string.escape.invalid\"}},{regex:\"'\",action:{token:\"string\",next:\"@pop\"}}],bracketCounting:[{regex:\"{\",action:{token:\"delimiter.bracket\",next:\"@bracketCounting\"}},{regex:\"}\",action:{token:\"delimiter.bracket\",next:\"@pop\"}},{include:\"expression\"}],comment:[{regex:\"[^\\\\*]+\",action:{token:\"comment\"}},{regex:\"\\\\*\\\\/\",action:{token:\"comment\",next:\"@pop\"}},{regex:\"[\\\\/*]\",action:{token:\"comment\"}}],whitespace:[{regex:f},{regex:\"\\\\/\\\\*\",action:{token:\"comment\",next:\"@comment\"}},{regex:\"\\\\/\\\\/.*$\",action:{token:\"comment\"}}],expression:[{regex:\"'''\",action:{token:\"string.quote\",next:\"@stringVerbatim\"}},{regex:\"'\",action:{token:\"string.quote\",next:\"@stringLiteral\"}},{regex:C,action:{token:\"number\"}},{regex:u,action:{cases:{\"@keywords\":{token:\"keyword\"},\"@namedLiterals\":{token:\"keyword\"},\"@default\":{token:\"identifier\"}}}}]}};return m(y);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/cameligo/cameligo.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/cameligo/cameligo\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var n in e)s(o,n,{get:e[n],enumerable:!0})},m=(o,e,n,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of a(e))!l.call(o,t)&&t!==n&&s(o,t,{get:()=>e[t],enumerable:!(r=i(e,t))||r.enumerable});return o};var p=o=>m(s({},\"__esModule\",{value:!0}),o);var u={};c(u,{conf:()=>d,language:()=>g});var d={comments:{lineComment:\"//\",blockComment:[\"(*\",\"*)\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"],[\"<\",\">\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"},{open:\"'\",close:\"'\"},{open:'\"',close:'\"'},{open:\"(*\",close:\"*)\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"},{open:\"'\",close:\"'\"},{open:'\"',close:'\"'},{open:\"(*\",close:\"*)\"}]},g={defaultToken:\"\",tokenPostfix:\".cameligo\",ignoreCase:!0,brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}],keywords:[\"abs\",\"assert\",\"block\",\"Bytes\",\"case\",\"Crypto\",\"Current\",\"else\",\"failwith\",\"false\",\"for\",\"fun\",\"if\",\"in\",\"let\",\"let%entry\",\"let%init\",\"List\",\"list\",\"Map\",\"map\",\"match\",\"match%nat\",\"mod\",\"not\",\"operation\",\"Operation\",\"of\",\"record\",\"Set\",\"set\",\"sender\",\"skip\",\"source\",\"String\",\"then\",\"to\",\"true\",\"type\",\"with\"],typeKeywords:[\"int\",\"unit\",\"string\",\"tz\",\"nat\",\"bool\"],operators:[\"=\",\">\",\"<\",\"<=\",\">=\",\"<>\",\":\",\":=\",\"and\",\"mod\",\"or\",\"+\",\"-\",\"*\",\"/\",\"@\",\"&\",\"^\",\"%\",\"->\",\"<-\",\"&&\",\"||\"],symbols:/[=><:@\\^&|+\\-*\\/\\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\\w]*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/\\$[0-9a-fA-F]{1,16}/,\"number.hex\"],[/\\d+/,\"number\"],[/[;,.]/,\"delimiter\"],[/'([^'\\\\]|\\\\.)*$/,\"string.invalid\"],[/'/,\"string\",\"@string\"],[/'[^\\\\']'/,\"string\"],[/'/,\"string.invalid\"],[/\\#\\d+/,\"string\"]],comment:[[/[^\\(\\*]+/,\"comment\"],[/\\*\\)/,\"comment\",\"@pop\"],[/\\(\\*/,\"comment\"]],string:[[/[^\\\\']+/,\"string\"],[/\\\\./,\"string.escape.invalid\"],[/'/,{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"}]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"],[/\\(\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]]}};return p(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/clojure/clojure.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/clojure/clojure\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var a=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var d=(t,e)=>{for(var r in e)a(t,r,{get:e[r],enumerable:!0})},l=(t,e,r,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of i(e))!c.call(t,n)&&n!==r&&a(t,n,{get:()=>e[n],enumerable:!(s=o(e,n))||s.enumerable});return t};var p=t=>l(a({},\"__esModule\",{value:!0}),t);var h={};d(h,{conf:()=>u,language:()=>m});var u={comments:{lineComment:\";;\"},brackets:[[\"[\",\"]\"],[\"(\",\")\"],[\"{\",\"}\"]],autoClosingPairs:[{open:\"[\",close:\"]\"},{open:'\"',close:'\"'},{open:\"(\",close:\")\"},{open:\"{\",close:\"}\"}],surroundingPairs:[{open:\"[\",close:\"]\"},{open:'\"',close:'\"'},{open:\"(\",close:\")\"},{open:\"{\",close:\"}\"}]},m={defaultToken:\"\",ignoreCase:!0,tokenPostfix:\".clj\",brackets:[{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"{\",close:\"}\",token:\"delimiter.curly\"}],constants:[\"true\",\"false\",\"nil\"],numbers:/^(?:[+\\-]?\\d+(?:(?:N|(?:[eE][+\\-]?\\d+))|(?:\\.?\\d*(?:M|(?:[eE][+\\-]?\\d+))?)|\\/\\d+|[xX][0-9a-fA-F]+|r[0-9a-zA-Z]+)?(?=[\\\\\\[\\]\\s\"#'(),;@^`{}~]|$))/,characters:/^(?:\\\\(?:backspace|formfeed|newline|return|space|tab|o[0-7]{3}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{4}|.)?(?=[\\\\\\[\\]\\s\"(),;@^`{}~]|$))/,escapes:/^\\\\(?:[\"'\\\\bfnrt]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,qualifiedSymbols:/^(?:(?:[^\\\\\\/\\[\\]\\d\\s\"#'(),;@^`{}~][^\\\\\\[\\]\\s\"(),;@^`{}~]*(?:\\.[^\\\\\\/\\[\\]\\d\\s\"#'(),;@^`{}~][^\\\\\\[\\]\\s\"(),;@^`{}~]*)*\\/)?(?:\\/|[^\\\\\\/\\[\\]\\d\\s\"#'(),;@^`{}~][^\\\\\\[\\]\\s\"(),;@^`{}~]*)*(?=[\\\\\\[\\]\\s\"(),;@^`{}~]|$))/,specialForms:[\".\",\"catch\",\"def\",\"do\",\"if\",\"monitor-enter\",\"monitor-exit\",\"new\",\"quote\",\"recur\",\"set!\",\"throw\",\"try\",\"var\"],coreSymbols:[\"*\",\"*'\",\"*1\",\"*2\",\"*3\",\"*agent*\",\"*allow-unresolved-vars*\",\"*assert*\",\"*clojure-version*\",\"*command-line-args*\",\"*compile-files*\",\"*compile-path*\",\"*compiler-options*\",\"*data-readers*\",\"*default-data-reader-fn*\",\"*e\",\"*err*\",\"*file*\",\"*flush-on-newline*\",\"*fn-loader*\",\"*in*\",\"*math-context*\",\"*ns*\",\"*out*\",\"*print-dup*\",\"*print-length*\",\"*print-level*\",\"*print-meta*\",\"*print-namespace-maps*\",\"*print-readably*\",\"*read-eval*\",\"*reader-resolver*\",\"*source-path*\",\"*suppress-read*\",\"*unchecked-math*\",\"*use-context-classloader*\",\"*verbose-defrecords*\",\"*warn-on-reflection*\",\"+\",\"+'\",\"-\",\"-'\",\"->\",\"->>\",\"->ArrayChunk\",\"->Eduction\",\"->Vec\",\"->VecNode\",\"->VecSeq\",\"-cache-protocol-fn\",\"-reset-methods\",\"..\",\"/\",\"<\",\"<=\",\"=\",\"==\",\">\",\">=\",\"EMPTY-NODE\",\"Inst\",\"StackTraceElement->vec\",\"Throwable->map\",\"accessor\",\"aclone\",\"add-classpath\",\"add-watch\",\"agent\",\"agent-error\",\"agent-errors\",\"aget\",\"alength\",\"alias\",\"all-ns\",\"alter\",\"alter-meta!\",\"alter-var-root\",\"amap\",\"ancestors\",\"and\",\"any?\",\"apply\",\"areduce\",\"array-map\",\"as->\",\"aset\",\"aset-boolean\",\"aset-byte\",\"aset-char\",\"aset-double\",\"aset-float\",\"aset-int\",\"aset-long\",\"aset-short\",\"assert\",\"assoc\",\"assoc!\",\"assoc-in\",\"associative?\",\"atom\",\"await\",\"await-for\",\"await1\",\"bases\",\"bean\",\"bigdec\",\"bigint\",\"biginteger\",\"binding\",\"bit-and\",\"bit-and-not\",\"bit-clear\",\"bit-flip\",\"bit-not\",\"bit-or\",\"bit-set\",\"bit-shift-left\",\"bit-shift-right\",\"bit-test\",\"bit-xor\",\"boolean\",\"boolean-array\",\"boolean?\",\"booleans\",\"bound-fn\",\"bound-fn*\",\"bound?\",\"bounded-count\",\"butlast\",\"byte\",\"byte-array\",\"bytes\",\"bytes?\",\"case\",\"cast\",\"cat\",\"char\",\"char-array\",\"char-escape-string\",\"char-name-string\",\"char?\",\"chars\",\"chunk\",\"chunk-append\",\"chunk-buffer\",\"chunk-cons\",\"chunk-first\",\"chunk-next\",\"chunk-rest\",\"chunked-seq?\",\"class\",\"class?\",\"clear-agent-errors\",\"clojure-version\",\"coll?\",\"comment\",\"commute\",\"comp\",\"comparator\",\"compare\",\"compare-and-set!\",\"compile\",\"complement\",\"completing\",\"concat\",\"cond\",\"cond->\",\"cond->>\",\"condp\",\"conj\",\"conj!\",\"cons\",\"constantly\",\"construct-proxy\",\"contains?\",\"count\",\"counted?\",\"create-ns\",\"create-struct\",\"cycle\",\"dec\",\"dec'\",\"decimal?\",\"declare\",\"dedupe\",\"default-data-readers\",\"definline\",\"definterface\",\"defmacro\",\"defmethod\",\"defmulti\",\"defn\",\"defn-\",\"defonce\",\"defprotocol\",\"defrecord\",\"defstruct\",\"deftype\",\"delay\",\"delay?\",\"deliver\",\"denominator\",\"deref\",\"derive\",\"descendants\",\"destructure\",\"disj\",\"disj!\",\"dissoc\",\"dissoc!\",\"distinct\",\"distinct?\",\"doall\",\"dorun\",\"doseq\",\"dosync\",\"dotimes\",\"doto\",\"double\",\"double-array\",\"double?\",\"doubles\",\"drop\",\"drop-last\",\"drop-while\",\"eduction\",\"empty\",\"empty?\",\"ensure\",\"ensure-reduced\",\"enumeration-seq\",\"error-handler\",\"error-mode\",\"eval\",\"even?\",\"every-pred\",\"every?\",\"ex-data\",\"ex-info\",\"extend\",\"extend-protocol\",\"extend-type\",\"extenders\",\"extends?\",\"false?\",\"ffirst\",\"file-seq\",\"filter\",\"filterv\",\"find\",\"find-keyword\",\"find-ns\",\"find-protocol-impl\",\"find-protocol-method\",\"find-var\",\"first\",\"flatten\",\"float\",\"float-array\",\"float?\",\"floats\",\"flush\",\"fn\",\"fn?\",\"fnext\",\"fnil\",\"for\",\"force\",\"format\",\"frequencies\",\"future\",\"future-call\",\"future-cancel\",\"future-cancelled?\",\"future-done?\",\"future?\",\"gen-class\",\"gen-interface\",\"gensym\",\"get\",\"get-in\",\"get-method\",\"get-proxy-class\",\"get-thread-bindings\",\"get-validator\",\"group-by\",\"halt-when\",\"hash\",\"hash-combine\",\"hash-map\",\"hash-ordered-coll\",\"hash-set\",\"hash-unordered-coll\",\"ident?\",\"identical?\",\"identity\",\"if-let\",\"if-not\",\"if-some\",\"ifn?\",\"import\",\"in-ns\",\"inc\",\"inc'\",\"indexed?\",\"init-proxy\",\"inst-ms\",\"inst-ms*\",\"inst?\",\"instance?\",\"int\",\"int-array\",\"int?\",\"integer?\",\"interleave\",\"intern\",\"interpose\",\"into\",\"into-array\",\"ints\",\"io!\",\"isa?\",\"iterate\",\"iterator-seq\",\"juxt\",\"keep\",\"keep-indexed\",\"key\",\"keys\",\"keyword\",\"keyword?\",\"last\",\"lazy-cat\",\"lazy-seq\",\"let\",\"letfn\",\"line-seq\",\"list\",\"list*\",\"list?\",\"load\",\"load-file\",\"load-reader\",\"load-string\",\"loaded-libs\",\"locking\",\"long\",\"long-array\",\"longs\",\"loop\",\"macroexpand\",\"macroexpand-1\",\"make-array\",\"make-hierarchy\",\"map\",\"map-entry?\",\"map-indexed\",\"map?\",\"mapcat\",\"mapv\",\"max\",\"max-key\",\"memfn\",\"memoize\",\"merge\",\"merge-with\",\"meta\",\"method-sig\",\"methods\",\"min\",\"min-key\",\"mix-collection-hash\",\"mod\",\"munge\",\"name\",\"namespace\",\"namespace-munge\",\"nat-int?\",\"neg-int?\",\"neg?\",\"newline\",\"next\",\"nfirst\",\"nil?\",\"nnext\",\"not\",\"not-any?\",\"not-empty\",\"not-every?\",\"not=\",\"ns\",\"ns-aliases\",\"ns-imports\",\"ns-interns\",\"ns-map\",\"ns-name\",\"ns-publics\",\"ns-refers\",\"ns-resolve\",\"ns-unalias\",\"ns-unmap\",\"nth\",\"nthnext\",\"nthrest\",\"num\",\"number?\",\"numerator\",\"object-array\",\"odd?\",\"or\",\"parents\",\"partial\",\"partition\",\"partition-all\",\"partition-by\",\"pcalls\",\"peek\",\"persistent!\",\"pmap\",\"pop\",\"pop!\",\"pop-thread-bindings\",\"pos-int?\",\"pos?\",\"pr\",\"pr-str\",\"prefer-method\",\"prefers\",\"primitives-classnames\",\"print\",\"print-ctor\",\"print-dup\",\"print-method\",\"print-simple\",\"print-str\",\"printf\",\"println\",\"println-str\",\"prn\",\"prn-str\",\"promise\",\"proxy\",\"proxy-call-with-super\",\"proxy-mappings\",\"proxy-name\",\"proxy-super\",\"push-thread-bindings\",\"pvalues\",\"qualified-ident?\",\"qualified-keyword?\",\"qualified-symbol?\",\"quot\",\"rand\",\"rand-int\",\"rand-nth\",\"random-sample\",\"range\",\"ratio?\",\"rational?\",\"rationalize\",\"re-find\",\"re-groups\",\"re-matcher\",\"re-matches\",\"re-pattern\",\"re-seq\",\"read\",\"read-line\",\"read-string\",\"reader-conditional\",\"reader-conditional?\",\"realized?\",\"record?\",\"reduce\",\"reduce-kv\",\"reduced\",\"reduced?\",\"reductions\",\"ref\",\"ref-history-count\",\"ref-max-history\",\"ref-min-history\",\"ref-set\",\"refer\",\"refer-clojure\",\"reify\",\"release-pending-sends\",\"rem\",\"remove\",\"remove-all-methods\",\"remove-method\",\"remove-ns\",\"remove-watch\",\"repeat\",\"repeatedly\",\"replace\",\"replicate\",\"require\",\"reset!\",\"reset-meta!\",\"reset-vals!\",\"resolve\",\"rest\",\"restart-agent\",\"resultset-seq\",\"reverse\",\"reversible?\",\"rseq\",\"rsubseq\",\"run!\",\"satisfies?\",\"second\",\"select-keys\",\"send\",\"send-off\",\"send-via\",\"seq\",\"seq?\",\"seqable?\",\"seque\",\"sequence\",\"sequential?\",\"set\",\"set-agent-send-executor!\",\"set-agent-send-off-executor!\",\"set-error-handler!\",\"set-error-mode!\",\"set-validator!\",\"set?\",\"short\",\"short-array\",\"shorts\",\"shuffle\",\"shutdown-agents\",\"simple-ident?\",\"simple-keyword?\",\"simple-symbol?\",\"slurp\",\"some\",\"some->\",\"some->>\",\"some-fn\",\"some?\",\"sort\",\"sort-by\",\"sorted-map\",\"sorted-map-by\",\"sorted-set\",\"sorted-set-by\",\"sorted?\",\"special-symbol?\",\"spit\",\"split-at\",\"split-with\",\"str\",\"string?\",\"struct\",\"struct-map\",\"subs\",\"subseq\",\"subvec\",\"supers\",\"swap!\",\"swap-vals!\",\"symbol\",\"symbol?\",\"sync\",\"tagged-literal\",\"tagged-literal?\",\"take\",\"take-last\",\"take-nth\",\"take-while\",\"test\",\"the-ns\",\"thread-bound?\",\"time\",\"to-array\",\"to-array-2d\",\"trampoline\",\"transduce\",\"transient\",\"tree-seq\",\"true?\",\"type\",\"unchecked-add\",\"unchecked-add-int\",\"unchecked-byte\",\"unchecked-char\",\"unchecked-dec\",\"unchecked-dec-int\",\"unchecked-divide-int\",\"unchecked-double\",\"unchecked-float\",\"unchecked-inc\",\"unchecked-inc-int\",\"unchecked-int\",\"unchecked-long\",\"unchecked-multiply\",\"unchecked-multiply-int\",\"unchecked-negate\",\"unchecked-negate-int\",\"unchecked-remainder-int\",\"unchecked-short\",\"unchecked-subtract\",\"unchecked-subtract-int\",\"underive\",\"unquote\",\"unquote-splicing\",\"unreduced\",\"unsigned-bit-shift-right\",\"update\",\"update-in\",\"update-proxy\",\"uri?\",\"use\",\"uuid?\",\"val\",\"vals\",\"var-get\",\"var-set\",\"var?\",\"vary-meta\",\"vec\",\"vector\",\"vector-of\",\"vector?\",\"volatile!\",\"volatile?\",\"vreset!\",\"vswap!\",\"when\",\"when-first\",\"when-let\",\"when-not\",\"when-some\",\"while\",\"with-bindings\",\"with-bindings*\",\"with-in-str\",\"with-loading-context\",\"with-local-vars\",\"with-meta\",\"with-open\",\"with-out-str\",\"with-precision\",\"with-redefs\",\"with-redefs-fn\",\"xml-seq\",\"zero?\",\"zipmap\"],tokenizer:{root:[{include:\"@whitespace\"},[/@numbers/,\"number\"],[/@characters/,\"string\"],{include:\"@string\"},[/[()\\[\\]{}]/,\"@brackets\"],[/\\/#\"(?:\\.|(?:\")|[^\"\\n])*\"\\/g/,\"regexp\"],[/[#'@^`~]/,\"meta\"],[/@qualifiedSymbols/,{cases:{\"^:.+$\":\"constant\",\"@specialForms\":\"keyword\",\"@coreSymbols\":\"keyword\",\"@constants\":\"constant\",\"@default\":\"identifier\"}}]],whitespace:[[/[\\s,]+/,\"white\"],[/;.*$/,\"comment\"],[/\\(comment\\b/,\"comment\",\"@comment\"]],comment:[[/\\(/,\"comment\",\"@push\"],[/\\)/,\"comment\",\"@pop\"],[/[^()]/,\"comment\"]],string:[[/\"/,\"string\",\"@multiLineString\"]],multiLineString:[[/\"/,\"string\",\"@popall\"],[/@escapes/,\"string.escape\"],[/./,\"string\"]]}};return p(h);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/coffee/coffee.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/coffee/coffee\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var l=(n,e)=>{for(var t in e)s(n,t,{get:e[t],enumerable:!0})},p=(n,e,t,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let r of g(e))!a.call(n,r)&&r!==t&&s(n,r,{get:()=>e[r],enumerable:!(o=i(e,r))||o.enumerable});return n};var c=n=>p(s({},\"__esModule\",{value:!0}),n);var m={};l(m,{conf:()=>d,language:()=>x});var d={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#%\\^\\&\\*\\(\\)\\=\\$\\-\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,comments:{blockComment:[\"###\",\"###\"],lineComment:\"#\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],folding:{markers:{start:new RegExp(\"^\\\\s*#region\\\\b\"),end:new RegExp(\"^\\\\s*#endregion\\\\b\")}}},x={defaultToken:\"\",ignoreCase:!0,tokenPostfix:\".coffee\",brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],regEx:/\\/(?!\\/\\/)(?:[^\\/\\\\]|\\\\.)*\\/[igm]*/,keywords:[\"and\",\"or\",\"is\",\"isnt\",\"not\",\"on\",\"yes\",\"@\",\"no\",\"off\",\"true\",\"false\",\"null\",\"this\",\"new\",\"delete\",\"typeof\",\"in\",\"instanceof\",\"return\",\"throw\",\"break\",\"continue\",\"debugger\",\"if\",\"else\",\"switch\",\"for\",\"while\",\"do\",\"try\",\"catch\",\"finally\",\"class\",\"extends\",\"super\",\"undefined\",\"then\",\"unless\",\"until\",\"loop\",\"of\",\"by\",\"when\"],symbols:/[=><!~?&%|+\\-*\\/\\^\\.,\\:]+/,escapes:/\\\\(?:[abfnrtv\\\\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\\@[a-zA-Z_]\\w*/,\"variable.predefined\"],[/[a-zA-Z_]\\w*/,{cases:{this:\"variable.predefined\",\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"\"}}],[/[ \\t\\r\\n]+/,\"\"],[/###/,\"comment\",\"@comment\"],[/#.*$/,\"comment\"],[\"///\",{token:\"regexp\",next:\"@hereregexp\"}],[/^(\\s*)(@regEx)/,[\"\",\"regexp\"]],[/(\\()(\\s*)(@regEx)/,[\"@brackets\",\"\",\"regexp\"]],[/(\\,)(\\s*)(@regEx)/,[\"delimiter\",\"\",\"regexp\"]],[/(\\=)(\\s*)(@regEx)/,[\"delimiter\",\"\",\"regexp\"]],[/(\\:)(\\s*)(@regEx)/,[\"delimiter\",\"\",\"regexp\"]],[/(\\[)(\\s*)(@regEx)/,[\"@brackets\",\"\",\"regexp\"]],[/(\\!)(\\s*)(@regEx)/,[\"delimiter\",\"\",\"regexp\"]],[/(\\&)(\\s*)(@regEx)/,[\"delimiter\",\"\",\"regexp\"]],[/(\\|)(\\s*)(@regEx)/,[\"delimiter\",\"\",\"regexp\"]],[/(\\?)(\\s*)(@regEx)/,[\"delimiter\",\"\",\"regexp\"]],[/(\\{)(\\s*)(@regEx)/,[\"@brackets\",\"\",\"regexp\"]],[/(\\;)(\\s*)(@regEx)/,[\"\",\"\",\"regexp\"]],[/}/,{cases:{\"$S2==interpolatedstring\":{token:\"string\",next:\"@pop\"},\"@default\":\"@brackets\"}}],[/[{}()\\[\\]]/,\"@brackets\"],[/@symbols/,\"delimiter\"],[/\\d+[eE]([\\-+]?\\d+)?/,\"number.float\"],[/\\d+\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/0[xX][0-9a-fA-F]+/,\"number.hex\"],[/0[0-7]+(?!\\d)/,\"number.octal\"],[/\\d+/,\"number\"],[/[,.]/,\"delimiter\"],[/\"\"\"/,\"string\",'@herestring.\"\"\"'],[/'''/,\"string\",\"@herestring.'''\"],[/\"/,{cases:{\"@eos\":\"string\",\"@default\":{token:\"string\",next:'@string.\"'}}}],[/'/,{cases:{\"@eos\":\"string\",\"@default\":{token:\"string\",next:\"@string.'\"}}}]],string:[[/[^\"'\\#\\\\]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\./,\"string.escape.invalid\"],[/\\./,\"string.escape.invalid\"],[/#{/,{cases:{'$S2==\"':{token:\"string\",next:\"root.interpolatedstring\"},\"@default\":\"string\"}}],[/[\"']/,{cases:{\"$#==$S2\":{token:\"string\",next:\"@pop\"},\"@default\":\"string\"}}],[/#/,\"string\"]],herestring:[[/(\"\"\"|''')/,{cases:{\"$1==$S2\":{token:\"string\",next:\"@pop\"},\"@default\":\"string\"}}],[/[^#\\\\'\"]+/,\"string\"],[/['\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\./,\"string.escape.invalid\"],[/#{/,{token:\"string.quote\",next:\"root.interpolatedstring\"}],[/#/,\"string\"]],comment:[[/[^#]+/,\"comment\"],[/###/,\"comment\",\"@pop\"],[/#/,\"comment\"]],hereregexp:[[/[^\\\\\\/#]+/,\"regexp\"],[/\\\\./,\"regexp\"],[/#.*$/,\"comment\"],[\"///[igm]*\",{token:\"regexp\",next:\"@pop\"}],[/\\//,\"regexp\"]]}};return c(m);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/cpp/cpp.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/cpp/cpp\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var c=(n,e)=>{for(var i in e)r(n,i,{get:e[i],enumerable:!0})},l=(n,e,i,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of s(e))!_.call(n,t)&&t!==i&&r(n,t,{get:()=>e[t],enumerable:!(o=a(e,t))||o.enumerable});return n};var d=n=>l(r({},\"__esModule\",{value:!0}),n);var g={};c(g,{conf:()=>p,language:()=>m});var p={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"[\",close:\"]\"},{open:\"{\",close:\"}\"},{open:\"(\",close:\")\"},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]},{open:'\"',close:'\"',notIn:[\"string\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],folding:{markers:{start:new RegExp(\"^\\\\s*#pragma\\\\s+region\\\\b\"),end:new RegExp(\"^\\\\s*#pragma\\\\s+endregion\\\\b\")}}},m={defaultToken:\"\",tokenPostfix:\".cpp\",brackets:[{token:\"delimiter.curly\",open:\"{\",close:\"}\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"},{token:\"delimiter.square\",open:\"[\",close:\"]\"},{token:\"delimiter.angle\",open:\"<\",close:\">\"}],keywords:[\"abstract\",\"amp\",\"array\",\"auto\",\"bool\",\"break\",\"case\",\"catch\",\"char\",\"class\",\"const\",\"constexpr\",\"const_cast\",\"continue\",\"cpu\",\"decltype\",\"default\",\"delegate\",\"delete\",\"do\",\"double\",\"dynamic_cast\",\"each\",\"else\",\"enum\",\"event\",\"explicit\",\"export\",\"extern\",\"false\",\"final\",\"finally\",\"float\",\"for\",\"friend\",\"gcnew\",\"generic\",\"goto\",\"if\",\"in\",\"initonly\",\"inline\",\"int\",\"interface\",\"interior_ptr\",\"internal\",\"literal\",\"long\",\"mutable\",\"namespace\",\"new\",\"noexcept\",\"nullptr\",\"__nullptr\",\"operator\",\"override\",\"partial\",\"pascal\",\"pin_ptr\",\"private\",\"property\",\"protected\",\"public\",\"ref\",\"register\",\"reinterpret_cast\",\"restrict\",\"return\",\"safe_cast\",\"sealed\",\"short\",\"signed\",\"sizeof\",\"static\",\"static_assert\",\"static_cast\",\"struct\",\"switch\",\"template\",\"this\",\"thread_local\",\"throw\",\"tile_static\",\"true\",\"try\",\"typedef\",\"typeid\",\"typename\",\"union\",\"unsigned\",\"using\",\"virtual\",\"void\",\"volatile\",\"wchar_t\",\"where\",\"while\",\"_asm\",\"_based\",\"_cdecl\",\"_declspec\",\"_fastcall\",\"_if_exists\",\"_if_not_exists\",\"_inline\",\"_multiple_inheritance\",\"_pascal\",\"_single_inheritance\",\"_stdcall\",\"_virtual_inheritance\",\"_w64\",\"__abstract\",\"__alignof\",\"__asm\",\"__assume\",\"__based\",\"__box\",\"__builtin_alignof\",\"__cdecl\",\"__clrcall\",\"__declspec\",\"__delegate\",\"__event\",\"__except\",\"__fastcall\",\"__finally\",\"__forceinline\",\"__gc\",\"__hook\",\"__identifier\",\"__if_exists\",\"__if_not_exists\",\"__inline\",\"__int128\",\"__int16\",\"__int32\",\"__int64\",\"__int8\",\"__interface\",\"__leave\",\"__m128\",\"__m128d\",\"__m128i\",\"__m256\",\"__m256d\",\"__m256i\",\"__m512\",\"__m512d\",\"__m512i\",\"__m64\",\"__multiple_inheritance\",\"__newslot\",\"__nogc\",\"__noop\",\"__nounwind\",\"__novtordisp\",\"__pascal\",\"__pin\",\"__pragma\",\"__property\",\"__ptr32\",\"__ptr64\",\"__raise\",\"__restrict\",\"__resume\",\"__sealed\",\"__single_inheritance\",\"__stdcall\",\"__super\",\"__thiscall\",\"__try\",\"__try_cast\",\"__typeof\",\"__unaligned\",\"__unhook\",\"__uuidof\",\"__value\",\"__virtual_inheritance\",\"__w64\",\"__wchar_t\"],operators:[\"=\",\">\",\"<\",\"!\",\"~\",\"?\",\":\",\"==\",\"<=\",\">=\",\"!=\",\"&&\",\"||\",\"++\",\"--\",\"+\",\"-\",\"*\",\"/\",\"&\",\"|\",\"^\",\"%\",\"<<\",\">>\",\">>>\",\"+=\",\"-=\",\"*=\",\"/=\",\"&=\",\"|=\",\"^=\",\"%=\",\"<<=\",\">>=\",\">>>=\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[0abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/([uU](ll|LL|l|L)|(ll|LL|l|L)?[uU]?)/,floatsuffix:/[fFlL]?/,encoding:/u|u8|U|L/,tokenizer:{root:[[/@encoding?R\\\"(?:([^ ()\\\\\\t]*))\\(/,{token:\"string.raw.begin\",next:\"@raw.$1\"}],[/[a-zA-Z_]\\w*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],[/^\\s*#\\s*include/,{token:\"keyword.directive.include\",next:\"@include\"}],[/^\\s*#\\s*\\w+/,\"keyword.directive\"],{include:\"@whitespace\"},[/\\[\\s*\\[/,{token:\"annotation\",next:\"@annotation\"}],[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/\\d*\\d+[eE]([\\-+]?\\d+)?(@floatsuffix)/,\"number.float\"],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?(@floatsuffix)/,\"number.float\"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,\"number.hex\"],[/0[0-7']*[0-7](@integersuffix)/,\"number.octal\"],[/0[bB][0-1']*[0-1](@integersuffix)/,\"number.binary\"],[/\\d[\\d']*\\d(@integersuffix)/,\"number\"],[/\\d(@integersuffix)/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",\"@string\"],[/'[^\\\\']'/,\"string\"],[/(')(@escapes)(')/,[\"string\",\"string.escape\",\"string\"]],[/'/,\"string.invalid\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*\\*(?!\\/)/,\"comment.doc\",\"@doccomment\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*\\\\$/,\"comment\",\"@linecomment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],linecomment:[[/.*[^\\\\]$/,\"comment\",\"@pop\"],[/[^]+/,\"comment\"]],doccomment:[[/[^\\/*]+/,\"comment.doc\"],[/\\*\\//,\"comment.doc\",\"@pop\"],[/[\\/*]/,\"comment.doc\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"]],raw:[[/(.*)(\\))(?:([^ ()\\\\\\t\"]*))(\\\")/,{cases:{\"$3==$S2\":[\"string.raw\",\"string.raw.end\",\"string.raw.end\",{token:\"string.raw.end\",next:\"@pop\"}],\"@default\":[\"string.raw\",\"string.raw\",\"string.raw\",\"string.raw\"]}}],[/.*/,\"string.raw\"]],annotation:[{include:\"@whitespace\"},[/using|alignas/,\"keyword\"],[/[a-zA-Z0-9_]+/,\"annotation\"],[/[,:]/,\"delimiter\"],[/[()]/,\"@brackets\"],[/\\]\\s*\\]/,{token:\"annotation\",next:\"@pop\"}]],include:[[/(\\s*)(<)([^<>]*)(>)/,[\"\",\"keyword.directive.include.begin\",\"string.include.identifier\",{token:\"keyword.directive.include.end\",next:\"@pop\"}]],[/(\\s*)(\")([^\"]*)(\")/,[\"\",\"keyword.directive.include.begin\",\"string.include.identifier\",{token:\"keyword.directive.include.end\",next:\"@pop\"}]]]}};return d(g);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/csharp/csharp.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/csharp/csharp\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},p=(t,e,o,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of a(e))!c.call(t,n)&&n!==o&&s(t,n,{get:()=>e[n],enumerable:!(i=r(e,n))||i.enumerable});return t};var g=t=>p(s({},\"__esModule\",{value:!0}),t);var u={};l(u,{conf:()=>d,language:()=>m});var d={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\#\\$\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]},{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"},{open:\"'\",close:\"'\"},{open:'\"',close:'\"'}],folding:{markers:{start:new RegExp(\"^\\\\s*#region\\\\b\"),end:new RegExp(\"^\\\\s*#endregion\\\\b\")}}},m={defaultToken:\"\",tokenPostfix:\".cs\",brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}],keywords:[\"extern\",\"alias\",\"using\",\"bool\",\"decimal\",\"sbyte\",\"byte\",\"short\",\"ushort\",\"int\",\"uint\",\"long\",\"ulong\",\"char\",\"float\",\"double\",\"object\",\"dynamic\",\"string\",\"assembly\",\"is\",\"as\",\"ref\",\"out\",\"this\",\"base\",\"new\",\"typeof\",\"void\",\"checked\",\"unchecked\",\"default\",\"delegate\",\"var\",\"const\",\"if\",\"else\",\"switch\",\"case\",\"while\",\"do\",\"for\",\"foreach\",\"in\",\"break\",\"continue\",\"goto\",\"return\",\"throw\",\"try\",\"catch\",\"finally\",\"lock\",\"yield\",\"from\",\"let\",\"where\",\"join\",\"on\",\"equals\",\"into\",\"orderby\",\"ascending\",\"descending\",\"select\",\"group\",\"by\",\"namespace\",\"partial\",\"class\",\"field\",\"event\",\"method\",\"param\",\"public\",\"protected\",\"internal\",\"private\",\"abstract\",\"sealed\",\"static\",\"struct\",\"readonly\",\"volatile\",\"virtual\",\"override\",\"params\",\"get\",\"set\",\"add\",\"remove\",\"operator\",\"true\",\"false\",\"implicit\",\"explicit\",\"interface\",\"enum\",\"null\",\"async\",\"await\",\"fixed\",\"sizeof\",\"stackalloc\",\"unsafe\",\"nameof\",\"when\"],namespaceFollows:[\"namespace\",\"using\"],parenFollows:[\"if\",\"for\",\"while\",\"switch\",\"foreach\",\"using\",\"catch\",\"when\"],operators:[\"=\",\"??\",\"||\",\"&&\",\"|\",\"^\",\"&\",\"==\",\"!=\",\"<=\",\">=\",\"<<\",\"+\",\"-\",\"*\",\"/\",\"%\",\"!\",\"~\",\"++\",\"--\",\"+=\",\"-=\",\"*=\",\"/=\",\"%=\",\"&=\",\"|=\",\"^=\",\"<<=\",\">>=\",\">>\",\"=>\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\\@?[a-zA-Z_]\\w*/,{cases:{\"@namespaceFollows\":{token:\"keyword.$0\",next:\"@namespace\"},\"@keywords\":{token:\"keyword.$0\",next:\"@qualified\"},\"@default\":{token:\"identifier\",next:\"@qualified\"}}}],{include:\"@whitespace\"},[/}/,{cases:{\"$S2==interpolatedstring\":{token:\"string.quote\",next:\"@pop\"},\"$S2==litinterpstring\":{token:\"string.quote\",next:\"@pop\"},\"@default\":\"@brackets\"}}],[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/[0-9_]*\\.[0-9_]+([eE][\\-+]?\\d+)?[fFdD]?/,\"number.float\"],[/0[xX][0-9a-fA-F_]+/,\"number.hex\"],[/0[bB][01_]+/,\"number.hex\"],[/[0-9_]+/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,{token:\"string.quote\",next:\"@string\"}],[/\\$\\@\"/,{token:\"string.quote\",next:\"@litinterpstring\"}],[/\\@\"/,{token:\"string.quote\",next:\"@litstring\"}],[/\\$\"/,{token:\"string.quote\",next:\"@interpolatedstring\"}],[/'[^\\\\']'/,\"string\"],[/(')(@escapes)(')/,[\"string\",\"string.escape\",\"string\"]],[/'/,\"string.invalid\"]],qualified:[[/[a-zA-Z_][\\w]*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],[/\\./,\"delimiter\"],[\"\",\"\",\"@pop\"]],namespace:[{include:\"@whitespace\"},[/[A-Z]\\w*/,\"namespace\"],[/[\\.=]/,\"delimiter\"],[\"\",\"\",\"@pop\"]],comment:[[/[^\\/*]+/,\"comment\"],[\"\\\\*/\",\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,{token:\"string.quote\",next:\"@pop\"}]],litstring:[[/[^\"]+/,\"string\"],[/\"\"/,\"string.escape\"],[/\"/,{token:\"string.quote\",next:\"@pop\"}]],litinterpstring:[[/[^\"{]+/,\"string\"],[/\"\"/,\"string.escape\"],[/{{/,\"string.escape\"],[/}}/,\"string.escape\"],[/{/,{token:\"string.quote\",next:\"root.litinterpstring\"}],[/\"/,{token:\"string.quote\",next:\"@pop\"}]],interpolatedstring:[[/[^\\\\\"{]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/{{/,\"string.escape\"],[/}}/,\"string.escape\"],[/{/,{token:\"string.quote\",next:\"root.interpolatedstring\"}],[/\"/,{token:\"string.quote\",next:\"@pop\"}]],whitespace:[[/^[ \\t\\v\\f]*#((r)|(load))(?=\\s)/,\"directive.csx\"],[/^[ \\t\\v\\f]*#\\w.*$/,\"namespace.cpp\"],[/[ \\t\\v\\f\\r\\n]+/,\"\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]]}};return g(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/csp/csp.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/csp/csp\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var a=(r,t)=>{for(var s in t)o(r,s,{get:t[s],enumerable:!0})},c=(r,t,s,n)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let e of u(t))!g.call(r,e)&&e!==s&&o(r,e,{get:()=>t[e],enumerable:!(n=i(t,e))||n.enumerable});return r};var q=r=>c(o({},\"__esModule\",{value:!0}),r);var p={};a(p,{conf:()=>f,language:()=>l});var f={brackets:[],autoClosingPairs:[],surroundingPairs:[]},l={keywords:[],typeKeywords:[],tokenPostfix:\".csp\",operators:[],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/child-src/,\"string.quote\"],[/connect-src/,\"string.quote\"],[/default-src/,\"string.quote\"],[/font-src/,\"string.quote\"],[/frame-src/,\"string.quote\"],[/img-src/,\"string.quote\"],[/manifest-src/,\"string.quote\"],[/media-src/,\"string.quote\"],[/object-src/,\"string.quote\"],[/script-src/,\"string.quote\"],[/style-src/,\"string.quote\"],[/worker-src/,\"string.quote\"],[/base-uri/,\"string.quote\"],[/plugin-types/,\"string.quote\"],[/sandbox/,\"string.quote\"],[/disown-opener/,\"string.quote\"],[/form-action/,\"string.quote\"],[/frame-ancestors/,\"string.quote\"],[/report-uri/,\"string.quote\"],[/report-to/,\"string.quote\"],[/upgrade-insecure-requests/,\"string.quote\"],[/block-all-mixed-content/,\"string.quote\"],[/require-sri-for/,\"string.quote\"],[/reflected-xss/,\"string.quote\"],[/referrer/,\"string.quote\"],[/policy-uri/,\"string.quote\"],[/'self'/,\"string.quote\"],[/'unsafe-inline'/,\"string.quote\"],[/'unsafe-eval'/,\"string.quote\"],[/'strict-dynamic'/,\"string.quote\"],[/'unsafe-hashed-attributes'/,\"string.quote\"]]}};return q(p);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/css/css.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/css/css\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var m=(t,e)=>{for(var o in e)r(t,o,{get:e[o],enumerable:!0})},c=(t,e,o,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of s(e))!l.call(t,n)&&n!==o&&r(t,n,{get:()=>e[n],enumerable:!(i=a(e,n))||i.enumerable});return t};var d=t=>c(r({},\"__esModule\",{value:!0}),t);var k={};m(k,{conf:()=>u,language:()=>p});var u={wordPattern:/(#?-?\\d*\\.\\d\\w*%?)|((::|[@#.!:])?[\\w-?]+%?)|::|[@#.!:]/g,comments:{blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\",notIn:[\"string\",\"comment\"]},{open:\"[\",close:\"]\",notIn:[\"string\",\"comment\"]},{open:\"(\",close:\")\",notIn:[\"string\",\"comment\"]},{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],folding:{markers:{start:new RegExp(\"^\\\\s*\\\\/\\\\*\\\\s*#region\\\\b\\\\s*(.*?)\\\\s*\\\\*\\\\/\"),end:new RegExp(\"^\\\\s*\\\\/\\\\*\\\\s*#endregion\\\\b.*\\\\*\\\\/\")}}},p={defaultToken:\"\",tokenPostfix:\".css\",ws:`[ \t\n\\r\\f]*`,identifier:\"-?-?([a-zA-Z]|(\\\\\\\\(([0-9a-fA-F]{1,6}\\\\s?)|[^[0-9a-fA-F])))([\\\\w\\\\-]|(\\\\\\\\(([0-9a-fA-F]{1,6}\\\\s?)|[^[0-9a-fA-F])))*\",brackets:[{open:\"{\",close:\"}\",token:\"delimiter.bracket\"},{open:\"[\",close:\"]\",token:\"delimiter.bracket\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}],tokenizer:{root:[{include:\"@selector\"}],selector:[{include:\"@comments\"},{include:\"@import\"},{include:\"@strings\"},[\"[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)\",{token:\"keyword\",next:\"@keyframedeclaration\"}],[\"[@](page|content|font-face|-moz-document)\",{token:\"keyword\"}],[\"[@](charset|namespace)\",{token:\"keyword\",next:\"@declarationbody\"}],[\"(url-prefix)(\\\\()\",[\"attribute.value\",{token:\"delimiter.parenthesis\",next:\"@urldeclaration\"}]],[\"(url)(\\\\()\",[\"attribute.value\",{token:\"delimiter.parenthesis\",next:\"@urldeclaration\"}]],{include:\"@selectorname\"},[\"[\\\\*]\",\"tag\"],[\"[>\\\\+,]\",\"delimiter\"],[\"\\\\[\",{token:\"delimiter.bracket\",next:\"@selectorattribute\"}],[\"{\",{token:\"delimiter.bracket\",next:\"@selectorbody\"}]],selectorbody:[{include:\"@comments\"},[\"[*_]?@identifier@ws:(?=(\\\\s|\\\\d|[^{;}]*[;}]))\",\"attribute.name\",\"@rulevalue\"],[\"}\",{token:\"delimiter.bracket\",next:\"@pop\"}]],selectorname:[[\"(\\\\.|#(?=[^{])|%|(@identifier)|:)+\",\"tag\"]],selectorattribute:[{include:\"@term\"},[\"]\",{token:\"delimiter.bracket\",next:\"@pop\"}]],term:[{include:\"@comments\"},[\"(url-prefix)(\\\\()\",[\"attribute.value\",{token:\"delimiter.parenthesis\",next:\"@urldeclaration\"}]],[\"(url)(\\\\()\",[\"attribute.value\",{token:\"delimiter.parenthesis\",next:\"@urldeclaration\"}]],{include:\"@functioninvocation\"},{include:\"@numbers\"},{include:\"@name\"},{include:\"@strings\"},[\"([<>=\\\\+\\\\-\\\\*\\\\/\\\\^\\\\|\\\\~,])\",\"delimiter\"],[\",\",\"delimiter\"]],rulevalue:[{include:\"@comments\"},{include:\"@strings\"},{include:\"@term\"},[\"!important\",\"keyword\"],[\";\",\"delimiter\",\"@pop\"],[\"(?=})\",{token:\"\",next:\"@pop\"}]],warndebug:[[\"[@](warn|debug)\",{token:\"keyword\",next:\"@declarationbody\"}]],import:[[\"[@](import)\",{token:\"keyword\",next:\"@declarationbody\"}]],urldeclaration:[{include:\"@strings\"},[`[^)\\r\n]+`,\"string\"],[\"\\\\)\",{token:\"delimiter.parenthesis\",next:\"@pop\"}]],parenthizedterm:[{include:\"@term\"},[\"\\\\)\",{token:\"delimiter.parenthesis\",next:\"@pop\"}]],declarationbody:[{include:\"@term\"},[\";\",\"delimiter\",\"@pop\"],[\"(?=})\",{token:\"\",next:\"@pop\"}]],comments:[[\"\\\\/\\\\*\",\"comment\",\"@comment\"],[\"\\\\/\\\\/+.*\",\"comment\"]],comment:[[\"\\\\*\\\\/\",\"comment\",\"@pop\"],[/[^*/]+/,\"comment\"],[/./,\"comment\"]],name:[[\"@identifier\",\"attribute.value\"]],numbers:[[\"-?(\\\\d*\\\\.)?\\\\d+([eE][\\\\-+]?\\\\d+)?\",{token:\"attribute.value.number\",next:\"@units\"}],[\"#[0-9a-fA-F_]+(?!\\\\w)\",\"attribute.value.hex\"]],units:[[\"(em|ex|ch|rem|fr|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?\",\"attribute.value.unit\",\"@pop\"]],keyframedeclaration:[[\"@identifier\",\"attribute.value\"],[\"{\",{token:\"delimiter.bracket\",switchTo:\"@keyframebody\"}]],keyframebody:[{include:\"@term\"},[\"{\",{token:\"delimiter.bracket\",next:\"@selectorbody\"}],[\"}\",{token:\"delimiter.bracket\",next:\"@pop\"}]],functioninvocation:[[\"@identifier\\\\(\",{token:\"attribute.value\",next:\"@functionarguments\"}]],functionarguments:[[\"\\\\$@identifier@ws:\",\"attribute.name\"],[\"[,]\",\"delimiter\"],{include:\"@term\"},[\"\\\\)\",{token:\"attribute.value\",next:\"@pop\"}]],strings:[['~?\"',{token:\"string\",next:\"@stringenddoublequote\"}],[\"~?'\",{token:\"string\",next:\"@stringendquote\"}]],stringenddoublequote:[[\"\\\\\\\\.\",\"string\"],['\"',{token:\"string\",next:\"@pop\"}],[/[^\\\\\"]+/,\"string\"],[\".\",\"string\"]],stringendquote:[[\"\\\\\\\\.\",\"string\"],[\"'\",{token:\"string\",next:\"@pop\"}],[/[^\\\\']+/,\"string\"],[\".\",\"string\"]]}};return d(k);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/cypher/cypher.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/cypher/cypher\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(i,e)=>{for(var n in e)s(i,n,{get:e[n],enumerable:!0})},g=(i,e,n,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of a(e))!l.call(i,t)&&t!==n&&s(i,t,{get:()=>e[t],enumerable:!(o=r(e,t))||o.enumerable});return i};var p=i=>g(s({},\"__esModule\",{value:!0}),i);var u={};c(u,{conf:()=>d,language:()=>m});var d={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"`\",close:\"`\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"`\",close:\"`\"}]},m={defaultToken:\"\",tokenPostfix:\".cypher\",ignoreCase:!0,brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.bracket\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],keywords:[\"ALL\",\"AND\",\"AS\",\"ASC\",\"ASCENDING\",\"BY\",\"CALL\",\"CASE\",\"CONTAINS\",\"CREATE\",\"DELETE\",\"DESC\",\"DESCENDING\",\"DETACH\",\"DISTINCT\",\"ELSE\",\"END\",\"ENDS\",\"EXISTS\",\"IN\",\"IS\",\"LIMIT\",\"MANDATORY\",\"MATCH\",\"MERGE\",\"NOT\",\"ON\",\"ON\",\"OPTIONAL\",\"OR\",\"ORDER\",\"REMOVE\",\"RETURN\",\"SET\",\"SKIP\",\"STARTS\",\"THEN\",\"UNION\",\"UNWIND\",\"WHEN\",\"WHERE\",\"WITH\",\"XOR\",\"YIELD\"],builtinLiterals:[\"true\",\"TRUE\",\"false\",\"FALSE\",\"null\",\"NULL\"],builtinFunctions:[\"abs\",\"acos\",\"asin\",\"atan\",\"atan2\",\"avg\",\"ceil\",\"coalesce\",\"collect\",\"cos\",\"cot\",\"count\",\"degrees\",\"e\",\"endNode\",\"exists\",\"exp\",\"floor\",\"head\",\"id\",\"keys\",\"labels\",\"last\",\"left\",\"length\",\"log\",\"log10\",\"lTrim\",\"max\",\"min\",\"nodes\",\"percentileCont\",\"percentileDisc\",\"pi\",\"properties\",\"radians\",\"rand\",\"range\",\"relationships\",\"replace\",\"reverse\",\"right\",\"round\",\"rTrim\",\"sign\",\"sin\",\"size\",\"split\",\"sqrt\",\"startNode\",\"stDev\",\"stDevP\",\"substring\",\"sum\",\"tail\",\"tan\",\"timestamp\",\"toBoolean\",\"toFloat\",\"toInteger\",\"toLower\",\"toString\",\"toUpper\",\"trim\",\"type\"],operators:[\"+\",\"-\",\"*\",\"/\",\"%\",\"^\",\"=\",\"<>\",\"<\",\">\",\"<=\",\">=\",\"->\",\"<-\",\"-->\",\"<--\"],escapes:/\\\\(?:[tbnrf\\\\\"'`]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\\d+/,octaldigits:/[0-7]+/,hexdigits:/[0-9a-fA-F]+/,tokenizer:{root:[[/[{}[\\]()]/,\"@brackets\"],{include:\"common\"}],common:[{include:\"@whitespace\"},{include:\"@numbers\"},{include:\"@strings\"},[/:[a-zA-Z_][\\w]*/,\"type.identifier\"],[/[a-zA-Z_][\\w]*(?=\\()/,{cases:{\"@builtinFunctions\":\"predefined.function\"}}],[/[a-zA-Z_$][\\w$]*/,{cases:{\"@keywords\":\"keyword\",\"@builtinLiterals\":\"predefined.literal\",\"@default\":\"identifier\"}}],[/`/,\"identifier.escape\",\"@identifierBacktick\"],[/[;,.:|]/,\"delimiter\"],[/[<>=%+\\-*/^]+/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}]],numbers:[[/-?(@digits)[eE](-?(@digits))?/,\"number.float\"],[/-?(@digits)?\\.(@digits)([eE]-?(@digits))?/,\"number.float\"],[/-?0x(@hexdigits)/,\"number.hex\"],[/-?0(@octaldigits)/,\"number.octal\"],[/-?(@digits)/,\"number\"]],strings:[[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/'([^'\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",\"@stringDouble\"],[/'/,\"string\",\"@stringSingle\"]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/\\/\\/.*/,\"comment\"],[/[^/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[/*]/,\"comment\"]],stringDouble:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string\"],[/\\\\./,\"string.invalid\"],[/\"/,\"string\",\"@pop\"]],stringSingle:[[/[^\\\\']+/,\"string\"],[/@escapes/,\"string\"],[/\\\\./,\"string.invalid\"],[/'/,\"string\",\"@pop\"]],identifierBacktick:[[/[^\\\\`]+/,\"identifier.escape\"],[/@escapes/,\"identifier.escape\"],[/\\\\./,\"identifier.escape.invalid\"],[/`/,\"identifier.escape\",\"@pop\"]]}};return p(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/dart/dart.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/dart/dart\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var p=(n,e)=>{for(var t in e)r(n,t,{get:e[t],enumerable:!0})},g=(n,e,t,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let o of c(e))!a.call(n,o)&&o!==t&&r(n,o,{get:()=>e[o],enumerable:!(s=i(e,o))||s.enumerable});return n};var l=n=>g(r({},\"__esModule\",{value:!0}),n);var x={};p(x,{conf:()=>d,language:()=>m});var d={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]},{open:'\"',close:'\"',notIn:[\"string\"]},{open:\"`\",close:\"`\",notIn:[\"string\",\"comment\"]},{open:\"/**\",close:\" */\",notIn:[\"string\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"},{open:\"'\",close:\"'\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"`\",close:\"`\"}],folding:{markers:{start:/^\\s*\\s*#?region\\b/,end:/^\\s*\\s*#?endregion\\b/}}},m={defaultToken:\"invalid\",tokenPostfix:\".dart\",keywords:[\"abstract\",\"dynamic\",\"implements\",\"show\",\"as\",\"else\",\"import\",\"static\",\"assert\",\"enum\",\"in\",\"super\",\"async\",\"export\",\"interface\",\"switch\",\"await\",\"extends\",\"is\",\"sync\",\"break\",\"external\",\"library\",\"this\",\"case\",\"factory\",\"mixin\",\"throw\",\"catch\",\"false\",\"new\",\"true\",\"class\",\"final\",\"null\",\"try\",\"const\",\"finally\",\"on\",\"typedef\",\"continue\",\"for\",\"operator\",\"var\",\"covariant\",\"Function\",\"part\",\"void\",\"default\",\"get\",\"rethrow\",\"while\",\"deferred\",\"hide\",\"return\",\"with\",\"do\",\"if\",\"set\",\"yield\"],typeKeywords:[\"int\",\"double\",\"String\",\"bool\"],operators:[\"+\",\"-\",\"*\",\"/\",\"~/\",\"%\",\"++\",\"--\",\"==\",\"!=\",\">\",\"<\",\">=\",\"<=\",\"=\",\"-=\",\"/=\",\"%=\",\">>=\",\"^=\",\"+=\",\"*=\",\"~/=\",\"<<=\",\"&=\",\"!=\",\"||\",\"&&\",\"&\",\"|\",\"^\",\"~\",\"<<\",\">>\",\"!\",\">>>\",\"??\",\"?\",\":\",\"|=\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\\d+(_+\\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\\[\\]\\$\\^|\\-*+?\\.]/,regexpesc:/\\\\(?:[bBdDfnrstvwWn0\\\\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,\"delimiter.bracket\"],{include:\"common\"}],common:[[/[a-z_$][\\w$]*/,{cases:{\"@typeKeywords\":\"type.identifier\",\"@keywords\":\"keyword\",\"@default\":\"identifier\"}}],[/[A-Z_$][\\w\\$]*/,\"type.identifier\"],{include:\"@whitespace\"},[/\\/(?=([^\\\\\\/]|\\\\.)+\\/([gimsuy]*)(\\s*)(\\.|;|,|\\)|\\]|\\}|$))/,{token:\"regexp\",bracket:\"@open\",next:\"@regexp\"}],[/@[a-zA-Z]+/,\"annotation\"],[/[()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/!(?=([^=]|$))/,\"delimiter\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/(@digits)[eE]([\\-+]?(@digits))?/,\"number.float\"],[/(@digits)\\.(@digits)([eE][\\-+]?(@digits))?/,\"number.float\"],[/0[xX](@hexdigits)n?/,\"number.hex\"],[/0[oO]?(@octaldigits)n?/,\"number.octal\"],[/0[bB](@binarydigits)n?/,\"number.binary\"],[/(@digits)n?/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/'([^'\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",\"@string_double\"],[/'/,\"string\",\"@string_single\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*\\*(?!\\/)/,\"comment.doc\",\"@jsdoc\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/\\/.*$/,\"comment.doc\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],jsdoc:[[/[^\\/*]+/,\"comment.doc\"],[/\\*\\//,\"comment.doc\",\"@pop\"],[/[\\/*]/,\"comment.doc\"]],regexp:[[/(\\{)(\\d+(?:,\\d*)?)(\\})/,[\"regexp.escape.control\",\"regexp.escape.control\",\"regexp.escape.control\"]],[/(\\[)(\\^?)(?=(?:[^\\]\\\\\\/]|\\\\.)+)/,[\"regexp.escape.control\",{token:\"regexp.escape.control\",next:\"@regexrange\"}]],[/(\\()(\\?:|\\?=|\\?!)/,[\"regexp.escape.control\",\"regexp.escape.control\"]],[/[()]/,\"regexp.escape.control\"],[/@regexpctl/,\"regexp.escape.control\"],[/[^\\\\\\/]/,\"regexp\"],[/@regexpesc/,\"regexp.escape\"],[/\\\\\\./,\"regexp.invalid\"],[/(\\/)([gimsuy]*)/,[{token:\"regexp\",bracket:\"@close\",next:\"@pop\"},\"keyword.other\"]]],regexrange:[[/-/,\"regexp.escape.control\"],[/\\^/,\"regexp.invalid\"],[/@regexpesc/,\"regexp.escape\"],[/[^\\]]/,\"regexp\"],[/\\]/,{token:\"regexp.escape.control\",next:\"@pop\",bracket:\"@close\"}]],string_double:[[/[^\\\\\"\\$]+/,\"string\"],[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"],[/\\$\\w+/,\"identifier\"]],string_single:[[/[^\\\\'\\$]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/'/,\"string\",\"@pop\"],[/\\$\\w+/,\"identifier\"]]}};return l(x);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/dockerfile/dockerfile.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/dockerfile/dockerfile\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var a=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var p=(o,e)=>{for(var s in e)a(o,s,{get:e[s],enumerable:!0})},g=(o,e,s,t)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of r(e))!i.call(o,n)&&n!==s&&a(o,n,{get:()=>e[n],enumerable:!(t=l(e,n))||t.enumerable});return o};var c=o=>g(a({},\"__esModule\",{value:!0}),o);var k={};p(k,{conf:()=>u,language:()=>d});var u={brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}]},d={defaultToken:\"\",tokenPostfix:\".dockerfile\",variable:/\\${?[\\w]+}?/,tokenizer:{root:[{include:\"@whitespace\"},{include:\"@comment\"},[/(ONBUILD)(\\s+)/,[\"keyword\",\"\"]],[/(ENV)(\\s+)([\\w]+)/,[\"keyword\",\"\",{token:\"variable\",next:\"@arguments\"}]],[/(FROM|MAINTAINER|RUN|EXPOSE|ENV|ADD|ARG|VOLUME|LABEL|USER|WORKDIR|COPY|CMD|STOPSIGNAL|SHELL|HEALTHCHECK|ENTRYPOINT)/,{token:\"keyword\",next:\"@arguments\"}]],arguments:[{include:\"@whitespace\"},{include:\"@strings\"},[/(@variable)/,{cases:{\"@eos\":{token:\"variable\",next:\"@popall\"},\"@default\":\"variable\"}}],[/\\\\/,{cases:{\"@eos\":\"\",\"@default\":\"\"}}],[/./,{cases:{\"@eos\":{token:\"\",next:\"@popall\"},\"@default\":\"\"}}]],whitespace:[[/\\s+/,{cases:{\"@eos\":{token:\"\",next:\"@popall\"},\"@default\":\"\"}}]],comment:[[/(^#.*$)/,\"comment\",\"@popall\"]],strings:[[/\\\\'$/,\"\",\"@popall\"],[/\\\\'/,\"\"],[/'$/,\"string\",\"@popall\"],[/'/,\"string\",\"@stringBody\"],[/\"$/,\"string\",\"@popall\"],[/\"/,\"string\",\"@dblStringBody\"]],stringBody:[[/[^\\\\\\$']/,{cases:{\"@eos\":{token:\"string\",next:\"@popall\"},\"@default\":\"string\"}}],[/\\\\./,\"string.escape\"],[/'$/,\"string\",\"@popall\"],[/'/,\"string\",\"@pop\"],[/(@variable)/,\"variable\"],[/\\\\$/,\"string\"],[/$/,\"string\",\"@popall\"]],dblStringBody:[[/[^\\\\\\$\"]/,{cases:{\"@eos\":{token:\"string\",next:\"@popall\"},\"@default\":\"string\"}}],[/\\\\./,\"string.escape\"],[/\"$/,\"string\",\"@popall\"],[/\"/,\"string\",\"@pop\"],[/(@variable)/,\"variable\"],[/\\\\$/,\"string\"],[/$/,\"string\",\"@popall\"]]}};return c(k);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/ecl/ecl.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/ecl/ecl\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var t in e)r(o,t,{get:e[t],enumerable:!0})},d=(o,e,t,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of s(e))!l.call(o,n)&&n!==t&&r(o,n,{get:()=>e[n],enumerable:!(a=i(e,n))||a.enumerable});return o};var p=o=>d(r({},\"__esModule\",{value:!0}),o);var g={};c(g,{conf:()=>m,language:()=>u});var m={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]},{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"},{open:\"'\",close:\"'\"},{open:'\"',close:'\"'}]},u={defaultToken:\"\",tokenPostfix:\".ecl\",ignoreCase:!0,brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}],pounds:[\"append\",\"break\",\"declare\",\"demangle\",\"end\",\"for\",\"getdatatype\",\"if\",\"inmodule\",\"loop\",\"mangle\",\"onwarning\",\"option\",\"set\",\"stored\",\"uniquename\"].join(\"|\"),keywords:[\"__compressed__\",\"after\",\"all\",\"and\",\"any\",\"as\",\"atmost\",\"before\",\"beginc\",\"best\",\"between\",\"case\",\"cluster\",\"compressed\",\"compression\",\"const\",\"counter\",\"csv\",\"default\",\"descend\",\"embed\",\"encoding\",\"encrypt\",\"end\",\"endc\",\"endembed\",\"endmacro\",\"enum\",\"escape\",\"except\",\"exclusive\",\"expire\",\"export\",\"extend\",\"fail\",\"few\",\"fileposition\",\"first\",\"flat\",\"forward\",\"from\",\"full\",\"function\",\"functionmacro\",\"group\",\"grouped\",\"heading\",\"hole\",\"ifblock\",\"import\",\"in\",\"inner\",\"interface\",\"internal\",\"joined\",\"keep\",\"keyed\",\"last\",\"left\",\"limit\",\"linkcounted\",\"literal\",\"little_endian\",\"load\",\"local\",\"locale\",\"lookup\",\"lzw\",\"macro\",\"many\",\"maxcount\",\"maxlength\",\"min skew\",\"module\",\"mofn\",\"multiple\",\"named\",\"namespace\",\"nocase\",\"noroot\",\"noscan\",\"nosort\",\"not\",\"noxpath\",\"of\",\"onfail\",\"only\",\"opt\",\"or\",\"outer\",\"overwrite\",\"packed\",\"partition\",\"penalty\",\"physicallength\",\"pipe\",\"prefetch\",\"quote\",\"record\",\"repeat\",\"retry\",\"return\",\"right\",\"right1\",\"right2\",\"rows\",\"rowset\",\"scan\",\"scope\",\"self\",\"separator\",\"service\",\"shared\",\"skew\",\"skip\",\"smart\",\"soapaction\",\"sql\",\"stable\",\"store\",\"terminator\",\"thor\",\"threshold\",\"timelimit\",\"timeout\",\"token\",\"transform\",\"trim\",\"type\",\"unicodeorder\",\"unordered\",\"unsorted\",\"unstable\",\"update\",\"use\",\"validate\",\"virtual\",\"whole\",\"width\",\"wild\",\"within\",\"wnotrim\",\"xml\",\"xpath\"],functions:[\"abs\",\"acos\",\"aggregate\",\"allnodes\",\"apply\",\"ascii\",\"asin\",\"assert\",\"asstring\",\"atan\",\"atan2\",\"ave\",\"build\",\"buildindex\",\"case\",\"catch\",\"choose\",\"choosen\",\"choosesets\",\"clustersize\",\"combine\",\"correlation\",\"cos\",\"cosh\",\"count\",\"covariance\",\"cron\",\"dataset\",\"dedup\",\"define\",\"denormalize\",\"dictionary\",\"distribute\",\"distributed\",\"distribution\",\"ebcdic\",\"enth\",\"error\",\"evaluate\",\"event\",\"eventextra\",\"eventname\",\"exists\",\"exp\",\"fail\",\"failcode\",\"failmessage\",\"fetch\",\"fromunicode\",\"fromxml\",\"getenv\",\"getisvalid\",\"global\",\"graph\",\"group\",\"hash\",\"hash32\",\"hash64\",\"hashcrc\",\"hashmd5\",\"having\",\"httpcall\",\"httpheader\",\"if\",\"iff\",\"index\",\"intformat\",\"isvalid\",\"iterate\",\"join\",\"keydiff\",\"keypatch\",\"keyunicode\",\"length\",\"library\",\"limit\",\"ln\",\"loadxml\",\"local\",\"log\",\"loop\",\"map\",\"matched\",\"matchlength\",\"matchposition\",\"matchtext\",\"matchunicode\",\"max\",\"merge\",\"mergejoin\",\"min\",\"nofold\",\"nolocal\",\"nonempty\",\"normalize\",\"nothor\",\"notify\",\"output\",\"parallel\",\"parse\",\"pipe\",\"power\",\"preload\",\"process\",\"project\",\"pull\",\"random\",\"range\",\"rank\",\"ranked\",\"realformat\",\"recordof\",\"regexfind\",\"regexreplace\",\"regroup\",\"rejected\",\"rollup\",\"round\",\"roundup\",\"row\",\"rowdiff\",\"sample\",\"sequential\",\"set\",\"sin\",\"sinh\",\"sizeof\",\"soapcall\",\"sort\",\"sorted\",\"sqrt\",\"stepped\",\"stored\",\"sum\",\"table\",\"tan\",\"tanh\",\"thisnode\",\"topn\",\"tounicode\",\"toxml\",\"transfer\",\"transform\",\"trim\",\"truncate\",\"typeof\",\"ungroup\",\"unicodeorder\",\"variance\",\"wait\",\"which\",\"workunit\",\"xmldecode\",\"xmlencode\",\"xmltext\",\"xmlunicode\"],typesint:[\"integer\",\"unsigned\"].join(\"|\"),typesnum:[\"data\",\"qstring\",\"string\",\"unicode\",\"utf8\",\"varstring\",\"varunicode\"],typesone:[\"ascii\",\"big_endian\",\"boolean\",\"data\",\"decimal\",\"ebcdic\",\"grouped\",\"integer\",\"linkcounted\",\"pattern\",\"qstring\",\"real\",\"record\",\"rule\",\"set of\",\"streamed\",\"string\",\"token\",\"udecimal\",\"unicode\",\"unsigned\",\"utf8\",\"varstring\",\"varunicode\"].join(\"|\"),operators:[\"+\",\"-\",\"/\",\":=\",\"<\",\"<>\",\"=\",\">\",\"\\\\\",\"and\",\"in\",\"not\",\"or\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/@typesint[4|8]/,\"type\"],[/#(@pounds)/,\"type\"],[/@typesone/,\"type\"],[/[a-zA-Z_$][\\w-$]*/,{cases:{\"@functions\":\"keyword.function\",\"@keywords\":\"keyword\",\"@operators\":\"operator\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/[0-9_]*\\.[0-9_]+([eE][\\-+]?\\d+)?/,\"number.float\"],[/0[xX][0-9a-fA-F_]+/,\"number.hex\"],[/0[bB][01]+/,\"number.hex\"],[/[0-9_]+/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",\"@string\"],[/'[^\\\\']'/,\"string\"],[/(')(@escapes)(')/,[\"string\",\"string.escape\",\"string\"]],[/'/,\"string.invalid\"]],whitespace:[[/[ \\t\\v\\f\\r\\n]+/,\"\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],string:[[/[^\\\\']+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/'/,\"string\",\"@pop\"]]}};return p(g);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/elixir/elixir.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/elixir/elixir\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var o=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var d=(t,e)=>{for(var i in e)o(t,i,{get:e[i],enumerable:!0})},c=(t,e,i,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of s(e))!a.call(t,n)&&n!==i&&o(t,n,{get:()=>e[n],enumerable:!(r=l(e,n))||r.enumerable});return t};var m=t=>c(o({},\"__esModule\",{value:!0}),t);var p={};d(p,{conf:()=>u,language:()=>g});var u={comments:{lineComment:\"#\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"'\",close:\"'\"},{open:'\"',close:'\"'}],autoClosingPairs:[{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]},{open:'\"',close:'\"',notIn:[\"comment\"]},{open:'\"\"\"',close:'\"\"\"'},{open:\"`\",close:\"`\",notIn:[\"string\",\"comment\"]},{open:\"(\",close:\")\"},{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"<<\",close:\">>\"}],indentationRules:{increaseIndentPattern:/^\\s*(after|else|catch|rescue|fn|[^#]*(do|<\\-|\\->|\\{|\\[|\\=))\\s*$/,decreaseIndentPattern:/^\\s*((\\}|\\])\\s*$|(after|else|catch|rescue|end)\\b)/}},g={defaultToken:\"source\",tokenPostfix:\".elixir\",brackets:[{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"<<\",close:\">>\",token:\"delimiter.angle.special\"}],declarationKeywords:[\"def\",\"defp\",\"defn\",\"defnp\",\"defguard\",\"defguardp\",\"defmacro\",\"defmacrop\",\"defdelegate\",\"defcallback\",\"defmacrocallback\",\"defmodule\",\"defprotocol\",\"defexception\",\"defimpl\",\"defstruct\"],operatorKeywords:[\"and\",\"in\",\"not\",\"or\",\"when\"],namespaceKeywords:[\"alias\",\"import\",\"require\",\"use\"],otherKeywords:[\"after\",\"case\",\"catch\",\"cond\",\"do\",\"else\",\"end\",\"fn\",\"for\",\"if\",\"quote\",\"raise\",\"receive\",\"rescue\",\"super\",\"throw\",\"try\",\"unless\",\"unquote_splicing\",\"unquote\",\"with\"],constants:[\"true\",\"false\",\"nil\"],nameBuiltin:[\"__MODULE__\",\"__DIR__\",\"__ENV__\",\"__CALLER__\",\"__STACKTRACE__\"],operator:/-[->]?|!={0,2}|\\*{1,2}|\\/|\\\\\\\\|&{1,3}|\\.\\.?|\\^(?:\\^\\^)?|\\+\\+?|<(?:-|<<|=|>|\\|>|~>?)?|=~|={1,3}|>(?:=|>>)?|\\|~>|\\|>|\\|{1,3}|~>>?|~~~|::/,variableName:/[a-z_][a-zA-Z0-9_]*[?!]?/,atomName:/[a-zA-Z_][a-zA-Z0-9_@]*[?!]?|@specialAtomName|@operator/,specialAtomName:/\\.\\.\\.|<<>>|%\\{\\}|%|\\{\\}/,aliasPart:/[A-Z][a-zA-Z0-9_]*/,moduleName:/@aliasPart(?:\\.@aliasPart)*/,sigilSymmetricDelimiter:/\"\"\"|'''|\"|'|\\/|\\|/,sigilStartDelimiter:/@sigilSymmetricDelimiter|<|\\{|\\[|\\(/,sigilEndDelimiter:/@sigilSymmetricDelimiter|>|\\}|\\]|\\)/,sigilModifiers:/[a-zA-Z0-9]*/,decimal:/\\d(?:_?\\d)*/,hex:/[0-9a-fA-F](_?[0-9a-fA-F])*/,octal:/[0-7](_?[0-7])*/,binary:/[01](_?[01])*/,escape:/\\\\u[0-9a-fA-F]{4}|\\\\x[0-9a-fA-F]{2}|\\\\./,tokenizer:{root:[{include:\"@whitespace\"},{include:\"@comments\"},{include:\"@keywordsShorthand\"},{include:\"@numbers\"},{include:\"@identifiers\"},{include:\"@strings\"},{include:\"@atoms\"},{include:\"@sigils\"},{include:\"@attributes\"},{include:\"@symbols\"}],whitespace:[[/\\s+/,\"white\"]],comments:[[/(#)(.*)/,[\"comment.punctuation\",\"comment\"]]],keywordsShorthand:[[/(@atomName)(:)(\\s+)/,[\"constant\",\"constant.punctuation\",\"white\"]],[/\"(?=([^\"]|#\\{.*?\\}|\\\\\")*\":)/,{token:\"constant.delimiter\",next:\"@doubleQuotedStringKeyword\"}],[/'(?=([^']|#\\{.*?\\}|\\\\')*':)/,{token:\"constant.delimiter\",next:\"@singleQuotedStringKeyword\"}]],doubleQuotedStringKeyword:[[/\":/,{token:\"constant.delimiter\",next:\"@pop\"}],{include:\"@stringConstantContentInterpol\"}],singleQuotedStringKeyword:[[/':/,{token:\"constant.delimiter\",next:\"@pop\"}],{include:\"@stringConstantContentInterpol\"}],numbers:[[/0b@binary/,\"number.binary\"],[/0o@octal/,\"number.octal\"],[/0x@hex/,\"number.hex\"],[/@decimal\\.@decimal([eE]-?@decimal)?/,\"number.float\"],[/@decimal/,\"number\"]],identifiers:[[/\\b(defp?|defnp?|defmacrop?|defguardp?|defdelegate)(\\s+)(@variableName)(?!\\s+@operator)/,[\"keyword.declaration\",\"white\",{cases:{unquote:\"keyword\",\"@default\":\"function\"}}]],[/(@variableName)(?=\\s*\\.?\\s*\\()/,{cases:{\"@declarationKeywords\":\"keyword.declaration\",\"@namespaceKeywords\":\"keyword\",\"@otherKeywords\":\"keyword\",\"@default\":\"function.call\"}}],[/(@moduleName)(\\s*)(\\.)(\\s*)(@variableName)/,[\"type.identifier\",\"white\",\"operator\",\"white\",\"function.call\"]],[/(:)(@atomName)(\\s*)(\\.)(\\s*)(@variableName)/,[\"constant.punctuation\",\"constant\",\"white\",\"operator\",\"white\",\"function.call\"]],[/(\\|>)(\\s*)(@variableName)/,[\"operator\",\"white\",{cases:{\"@otherKeywords\":\"keyword\",\"@default\":\"function.call\"}}]],[/(&)(\\s*)(@variableName)/,[\"operator\",\"white\",\"function.call\"]],[/@variableName/,{cases:{\"@declarationKeywords\":\"keyword.declaration\",\"@operatorKeywords\":\"keyword.operator\",\"@namespaceKeywords\":\"keyword\",\"@otherKeywords\":\"keyword\",\"@constants\":\"constant.language\",\"@nameBuiltin\":\"variable.language\",\"_.*\":\"comment.unused\",\"@default\":\"identifier\"}}],[/@moduleName/,\"type.identifier\"]],strings:[[/\"\"\"/,{token:\"string.delimiter\",next:\"@doubleQuotedHeredoc\"}],[/'''/,{token:\"string.delimiter\",next:\"@singleQuotedHeredoc\"}],[/\"/,{token:\"string.delimiter\",next:\"@doubleQuotedString\"}],[/'/,{token:\"string.delimiter\",next:\"@singleQuotedString\"}]],doubleQuotedHeredoc:[[/\"\"\"/,{token:\"string.delimiter\",next:\"@pop\"}],{include:\"@stringContentInterpol\"}],singleQuotedHeredoc:[[/'''/,{token:\"string.delimiter\",next:\"@pop\"}],{include:\"@stringContentInterpol\"}],doubleQuotedString:[[/\"/,{token:\"string.delimiter\",next:\"@pop\"}],{include:\"@stringContentInterpol\"}],singleQuotedString:[[/'/,{token:\"string.delimiter\",next:\"@pop\"}],{include:\"@stringContentInterpol\"}],atoms:[[/(:)(@atomName)/,[\"constant.punctuation\",\"constant\"]],[/:\"/,{token:\"constant.delimiter\",next:\"@doubleQuotedStringAtom\"}],[/:'/,{token:\"constant.delimiter\",next:\"@singleQuotedStringAtom\"}]],doubleQuotedStringAtom:[[/\"/,{token:\"constant.delimiter\",next:\"@pop\"}],{include:\"@stringConstantContentInterpol\"}],singleQuotedStringAtom:[[/'/,{token:\"constant.delimiter\",next:\"@pop\"}],{include:\"@stringConstantContentInterpol\"}],sigils:[[/~[a-z]@sigilStartDelimiter/,{token:\"@rematch\",next:\"@sigil.interpol\"}],[/~([A-Z]+)@sigilStartDelimiter/,{token:\"@rematch\",next:\"@sigil.noInterpol\"}]],sigil:[[/~([a-z]|[A-Z]+)\\{/,{token:\"@rematch\",switchTo:\"@sigilStart.$S2.$1.{.}\"}],[/~([a-z]|[A-Z]+)\\[/,{token:\"@rematch\",switchTo:\"@sigilStart.$S2.$1.[.]\"}],[/~([a-z]|[A-Z]+)\\(/,{token:\"@rematch\",switchTo:\"@sigilStart.$S2.$1.(.)\"}],[/~([a-z]|[A-Z]+)\\</,{token:\"@rematch\",switchTo:\"@sigilStart.$S2.$1.<.>\"}],[/~([a-z]|[A-Z]+)(@sigilSymmetricDelimiter)/,{token:\"@rematch\",switchTo:\"@sigilStart.$S2.$1.$2.$2\"}]],\"sigilStart.interpol.s\":[[/~s@sigilStartDelimiter/,{token:\"string.delimiter\",switchTo:\"@sigilContinue.$S2.$S3.$S4.$S5\"}]],\"sigilContinue.interpol.s\":[[/(@sigilEndDelimiter)@sigilModifiers/,{cases:{\"$1==$S5\":{token:\"string.delimiter\",next:\"@pop\"},\"@default\":\"string\"}}],{include:\"@stringContentInterpol\"}],\"sigilStart.noInterpol.S\":[[/~S@sigilStartDelimiter/,{token:\"string.delimiter\",switchTo:\"@sigilContinue.$S2.$S3.$S4.$S5\"}]],\"sigilContinue.noInterpol.S\":[[/(^|[^\\\\])\\\\@sigilEndDelimiter/,\"string\"],[/(@sigilEndDelimiter)@sigilModifiers/,{cases:{\"$1==$S5\":{token:\"string.delimiter\",next:\"@pop\"},\"@default\":\"string\"}}],{include:\"@stringContent\"}],\"sigilStart.interpol.r\":[[/~r@sigilStartDelimiter/,{token:\"regexp.delimiter\",switchTo:\"@sigilContinue.$S2.$S3.$S4.$S5\"}]],\"sigilContinue.interpol.r\":[[/(@sigilEndDelimiter)@sigilModifiers/,{cases:{\"$1==$S5\":{token:\"regexp.delimiter\",next:\"@pop\"},\"@default\":\"regexp\"}}],{include:\"@regexpContentInterpol\"}],\"sigilStart.noInterpol.R\":[[/~R@sigilStartDelimiter/,{token:\"regexp.delimiter\",switchTo:\"@sigilContinue.$S2.$S3.$S4.$S5\"}]],\"sigilContinue.noInterpol.R\":[[/(^|[^\\\\])\\\\@sigilEndDelimiter/,\"regexp\"],[/(@sigilEndDelimiter)@sigilModifiers/,{cases:{\"$1==$S5\":{token:\"regexp.delimiter\",next:\"@pop\"},\"@default\":\"regexp\"}}],{include:\"@regexpContent\"}],\"sigilStart.interpol\":[[/~([a-z]|[A-Z]+)@sigilStartDelimiter/,{token:\"sigil.delimiter\",switchTo:\"@sigilContinue.$S2.$S3.$S4.$S5\"}]],\"sigilContinue.interpol\":[[/(@sigilEndDelimiter)@sigilModifiers/,{cases:{\"$1==$S5\":{token:\"sigil.delimiter\",next:\"@pop\"},\"@default\":\"sigil\"}}],{include:\"@sigilContentInterpol\"}],\"sigilStart.noInterpol\":[[/~([a-z]|[A-Z]+)@sigilStartDelimiter/,{token:\"sigil.delimiter\",switchTo:\"@sigilContinue.$S2.$S3.$S4.$S5\"}]],\"sigilContinue.noInterpol\":[[/(^|[^\\\\])\\\\@sigilEndDelimiter/,\"sigil\"],[/(@sigilEndDelimiter)@sigilModifiers/,{cases:{\"$1==$S5\":{token:\"sigil.delimiter\",next:\"@pop\"},\"@default\":\"sigil\"}}],{include:\"@sigilContent\"}],attributes:[[/\\@(module|type)?doc (~[sS])?\"\"\"/,{token:\"comment.block.documentation\",next:\"@doubleQuotedHeredocDocstring\"}],[/\\@(module|type)?doc (~[sS])?'''/,{token:\"comment.block.documentation\",next:\"@singleQuotedHeredocDocstring\"}],[/\\@(module|type)?doc (~[sS])?\"/,{token:\"comment.block.documentation\",next:\"@doubleQuotedStringDocstring\"}],[/\\@(module|type)?doc (~[sS])?'/,{token:\"comment.block.documentation\",next:\"@singleQuotedStringDocstring\"}],[/\\@(module|type)?doc false/,\"comment.block.documentation\"],[/\\@(@variableName)/,\"variable\"]],doubleQuotedHeredocDocstring:[[/\"\"\"/,{token:\"comment.block.documentation\",next:\"@pop\"}],{include:\"@docstringContent\"}],singleQuotedHeredocDocstring:[[/'''/,{token:\"comment.block.documentation\",next:\"@pop\"}],{include:\"@docstringContent\"}],doubleQuotedStringDocstring:[[/\"/,{token:\"comment.block.documentation\",next:\"@pop\"}],{include:\"@docstringContent\"}],singleQuotedStringDocstring:[[/'/,{token:\"comment.block.documentation\",next:\"@pop\"}],{include:\"@docstringContent\"}],symbols:[[/\\?(\\\\.|[^\\\\\\s])/,\"number.constant\"],[/&\\d+/,\"operator\"],[/<<<|>>>/,\"operator\"],[/[()\\[\\]\\{\\}]|<<|>>/,\"@brackets\"],[/\\.\\.\\./,\"identifier\"],[/=>/,\"punctuation\"],[/@operator/,\"operator\"],[/[:;,.%]/,\"punctuation\"]],stringContentInterpol:[{include:\"@interpolation\"},{include:\"@escapeChar\"},{include:\"@stringContent\"}],stringContent:[[/./,\"string\"]],stringConstantContentInterpol:[{include:\"@interpolation\"},{include:\"@escapeChar\"},{include:\"@stringConstantContent\"}],stringConstantContent:[[/./,\"constant\"]],regexpContentInterpol:[{include:\"@interpolation\"},{include:\"@escapeChar\"},{include:\"@regexpContent\"}],regexpContent:[[/(\\s)(#)(\\s.*)$/,[\"white\",\"comment.punctuation\",\"comment\"]],[/./,\"regexp\"]],sigilContentInterpol:[{include:\"@interpolation\"},{include:\"@escapeChar\"},{include:\"@sigilContent\"}],sigilContent:[[/./,\"sigil\"]],docstringContent:[[/./,\"comment.block.documentation\"]],escapeChar:[[/@escape/,\"constant.character.escape\"]],interpolation:[[/#{/,{token:\"delimiter.bracket.embed\",next:\"@interpolationContinue\"}]],interpolationContinue:[[/}/,{token:\"delimiter.bracket.embed\",next:\"@pop\"}],{include:\"@root\"}]}};return m(p);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/flow9/flow9.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/flow9/flow9\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var t in e)s(o,t,{get:e[t],enumerable:!0})},m=(o,e,t,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of a(e))!l.call(o,n)&&n!==t&&s(o,n,{get:()=>e[n],enumerable:!(i=r(e,n))||i.enumerable});return o};var p=o=>m(s({},\"__esModule\",{value:!0}),o);var u={};c(u,{conf:()=>g,language:()=>f});var g={comments:{blockComment:[\"/*\",\"*/\"],lineComment:\"//\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\",notIn:[\"string\"]},{open:\"[\",close:\"]\",notIn:[\"string\"]},{open:\"(\",close:\")\",notIn:[\"string\"]},{open:'\"',close:'\"',notIn:[\"string\"]},{open:\"'\",close:\"'\",notIn:[\"string\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"<\",close:\">\"}]},f={defaultToken:\"\",tokenPostfix:\".flow\",keywords:[\"import\",\"require\",\"export\",\"forbid\",\"native\",\"if\",\"else\",\"cast\",\"unsafe\",\"switch\",\"default\"],types:[\"io\",\"mutable\",\"bool\",\"int\",\"double\",\"string\",\"flow\",\"void\",\"ref\",\"true\",\"false\",\"with\"],operators:[\"=\",\">\",\"<\",\"<=\",\">=\",\"==\",\"!\",\"!=\",\":=\",\"::=\",\"&&\",\"||\",\"+\",\"-\",\"*\",\"/\",\"@\",\"&\",\"%\",\":\",\"->\",\"\\\\\",\"$\",\"??\",\"^\"],symbols:/[@$=><!~?:&|+\\-*\\\\\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_]\\w*/,{cases:{\"@keywords\":\"keyword\",\"@types\":\"type\",\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"delimiter\"],[/[<>](?!@symbols)/,\"delimiter\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",\"@string\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"]]}};return p(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/freemarker2/freemarker2.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/freemarker2/freemarker2\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var B=Object.create;var d=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var T=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var w=(t=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(t,{get:(n,i)=>(typeof require!=\"undefined\"?require:n)[i]}):t)(function(t){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+t+'\" is not supported')});var h=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),S=(t,n)=>{for(var i in n)d(t,i,{get:n[i],enumerable:!0})},s=(t,n,i,e)=>{if(n&&typeof n==\"object\"||typeof n==\"function\")for(let o of D(n))!v.call(t,o)&&o!==i&&d(t,o,{get:()=>n[o],enumerable:!(e=C(n,o))||e.enumerable});return t},m=(t,n,i)=>(s(t,n,\"default\"),i&&s(i,n,\"default\")),x=(t,n,i)=>(i=t!=null?B(T(t)):{},s(n||!t||!t.__esModule?d(i,\"default\",{value:t,enumerable:!0}):i,t)),I=t=>s(d({},\"__esModule\",{value:!0}),t);var F=h((q,f)=>{var y=x(w(\"vs/editor/editor.api\"));f.exports=y});var M={};S(M,{TagAngleInterpolationBracket:()=>L,TagAngleInterpolationDollar:()=>R,TagAutoInterpolationBracket:()=>j,TagAutoInterpolationDollar:()=>Z,TagBracketInterpolationBracket:()=>O,TagBracketInterpolationDollar:()=>z});var _={};m(_,x(F()));var l=[\"assign\",\"flush\",\"ftl\",\"return\",\"global\",\"import\",\"include\",\"break\",\"continue\",\"local\",\"nested\",\"nt\",\"setting\",\"stop\",\"t\",\"lt\",\"rt\",\"fallback\"],k=[\"attempt\",\"autoesc\",\"autoEsc\",\"compress\",\"comment\",\"escape\",\"noescape\",\"function\",\"if\",\"list\",\"items\",\"sep\",\"macro\",\"noparse\",\"noParse\",\"noautoesc\",\"noAutoEsc\",\"outputformat\",\"switch\",\"visit\",\"recurse\"],r={close:\">\",id:\"angle\",open:\"<\"},u={close:\"\\\\]\",id:\"bracket\",open:\"\\\\[\"},P={close:\"[>\\\\]]\",id:\"auto\",open:\"[<\\\\[]\"},g={close:\"\\\\}\",id:\"dollar\",open1:\"\\\\$\",open2:\"\\\\{\"},A={close:\"\\\\]\",id:\"bracket\",open1:\"\\\\[\",open2:\"=\"};function p(t){return{brackets:[[\"<\",\">\"],[\"[\",\"]\"],[\"(\",\")\"],[\"{\",\"}\"]],comments:{blockComment:[`${t.open}--`,`--${t.close}`]},autoCloseBefore:`\n\\r\t }]),.:;=`,autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"',notIn:[\"string\"]},{open:\"'\",close:\"'\",notIn:[\"string\"]}],surroundingPairs:[{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"}],folding:{markers:{start:new RegExp(`${t.open}#(?:${k.join(\"|\")})([^/${t.close}]*(?!/)${t.close})[^${t.open}]*$`),end:new RegExp(`${t.open}/#(?:${k.join(\"|\")})[\\\\r\\\\n\\\\t ]*>`)}},onEnterRules:[{beforeText:new RegExp(`${t.open}#(?!(?:${l.join(\"|\")}))([a-zA-Z_]+)([^/${t.close}]*(?!/)${t.close})[^${t.open}]*$`),afterText:new RegExp(`^${t.open}/#([a-zA-Z_]+)[\\\\r\\\\n\\\\t ]*${t.close}$`),action:{indentAction:_.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(`${t.open}#(?!(?:${l.join(\"|\")}))([a-zA-Z_]+)([^/${t.close}]*(?!/)${t.close})[^${t.open}]*$`),action:{indentAction:_.languages.IndentAction.Indent}}]}}function b(){return{brackets:[[\"<\",\">\"],[\"[\",\"]\"],[\"(\",\")\"],[\"{\",\"}\"]],autoCloseBefore:`\n\\r\t }]),.:;=`,autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"',notIn:[\"string\"]},{open:\"'\",close:\"'\",notIn:[\"string\"]}],surroundingPairs:[{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"}],folding:{markers:{start:new RegExp(`[<\\\\[]#(?:${k.join(\"|\")})([^/>\\\\]]*(?!/)[>\\\\]])[^<\\\\[]*$`),end:new RegExp(`[<\\\\[]/#(?:${k.join(\"|\")})[\\\\r\\\\n\\\\t ]*>`)}},onEnterRules:[{beforeText:new RegExp(`[<\\\\[]#(?!(?:${l.join(\"|\")}))([a-zA-Z_]+)([^/>\\\\]]*(?!/)[>\\\\]])[^[<\\\\[]]*$`),afterText:new RegExp(\"^[<\\\\[]/#([a-zA-Z_]+)[\\\\r\\\\n\\\\t ]*[>\\\\]]$\"),action:{indentAction:_.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(`[<\\\\[]#(?!(?:${l.join(\"|\")}))([a-zA-Z_]+)([^/>\\\\]]*(?!/)[>\\\\]])[^[<\\\\[]]*$`),action:{indentAction:_.languages.IndentAction.Indent}}]}}function a(t,n){let i=`_${t.id}_${n.id}`,e=c=>c.replace(/__id__/g,i),o=c=>{let E=c.source.replace(/__id__/g,i);return new RegExp(E,c.flags)};return{unicode:!0,includeLF:!1,start:e(\"default__id__\"),ignoreCase:!1,defaultToken:\"invalid\",tokenPostfix:\".freemarker2\",brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}],[e(\"open__id__\")]:new RegExp(t.open),[e(\"close__id__\")]:new RegExp(t.close),[e(\"iOpen1__id__\")]:new RegExp(n.open1),[e(\"iOpen2__id__\")]:new RegExp(n.open2),[e(\"iClose__id__\")]:new RegExp(n.close),[e(\"startTag__id__\")]:o(/(@open__id__)(#)/),[e(\"endTag__id__\")]:o(/(@open__id__)(\\/#)/),[e(\"startOrEndTag__id__\")]:o(/(@open__id__)(\\/?#)/),[e(\"closeTag1__id__\")]:o(/((?:@blank)*)(@close__id__)/),[e(\"closeTag2__id__\")]:o(/((?:@blank)*\\/?)(@close__id__)/),blank:/[ \\t\\n\\r]/,keywords:[\"false\",\"true\",\"in\",\"as\",\"using\"],directiveStartCloseTag1:/attempt|recover|sep|auto[eE]sc|no(?:autoe|AutoE)sc|compress|default|no[eE]scape|comment|no[pP]arse/,directiveStartCloseTag2:/else|break|continue|return|stop|flush|t|lt|rt|nt|nested|recurse|fallback|ftl/,directiveStartBlank:/if|else[iI]f|list|for[eE]ach|switch|case|assign|global|local|include|import|function|macro|transform|visit|stop|return|call|setting|output[fF]ormat|nested|recurse|escape|ftl|items/,directiveEndCloseTag1:/if|list|items|sep|recover|attempt|for[eE]ach|local|global|assign|function|macro|output[fF]ormat|auto[eE]sc|no(?:autoe|AutoE)sc|compress|transform|switch|escape|no[eE]scape/,escapedChar:/\\\\(?:[ntrfbgla\\\\'\"\\{=]|(?:x[0-9A-Fa-f]{1,4}))/,asciiDigit:/[0-9]/,integer:/[0-9]+/,nonEscapedIdStartChar:/[\\$@-Z_a-z\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u1FFF\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183-\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3006\\u3031-\\u3035\\u303B-\\u303C\\u3040-\\u318F\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3300-\\u337F\\u3400-\\u4DB5\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,escapedIdChar:/\\\\[\\-\\.:#]/,idStartChar:/(?:@nonEscapedIdStartChar)|(?:@escapedIdChar)/,id:/(?:@idStartChar)(?:(?:@idStartChar)|(?:@asciiDigit))*/,specialHashKeys:/\\*\\*|\\*|false|true|in|as|using/,namedSymbols:/&lt;=|&gt;=|\\\\lte|\\\\lt|&lt;|\\\\gte|\\\\gt|&gt;|&amp;&amp;|\\\\and|-&gt;|->|==|!=|\\+=|-=|\\*=|\\/=|%=|\\+\\+|--|<=|&&|\\|\\||:|\\.\\.\\.|\\.\\.\\*|\\.\\.<|\\.\\.!|\\?\\?|=|<|\\+|-|\\*|\\/|%|\\||\\.\\.|\\?|!|&|\\.|,|;/,arrows:[\"->\",\"-&gt;\"],delimiters:[\";\",\":\",\",\",\".\"],stringOperators:[\"lte\",\"lt\",\"gte\",\"gt\"],noParseTags:[\"noparse\",\"noParse\",\"comment\"],tokenizer:{[e(\"default__id__\")]:[{include:e(\"@directive_token__id__\")},{include:e(\"@interpolation_and_text_token__id__\")}],[e(\"fmExpression__id__.directive\")]:[{include:e(\"@blank_and_expression_comment_token__id__\")},{include:e(\"@directive_end_token__id__\")},{include:e(\"@expression_token__id__\")}],[e(\"fmExpression__id__.interpolation\")]:[{include:e(\"@blank_and_expression_comment_token__id__\")},{include:e(\"@expression_token__id__\")},{include:e(\"@greater_operators_token__id__\")}],[e(\"inParen__id__.plain\")]:[{include:e(\"@blank_and_expression_comment_token__id__\")},{include:e(\"@directive_end_token__id__\")},{include:e(\"@expression_token__id__\")}],[e(\"inParen__id__.gt\")]:[{include:e(\"@blank_and_expression_comment_token__id__\")},{include:e(\"@expression_token__id__\")},{include:e(\"@greater_operators_token__id__\")}],[e(\"noSpaceExpression__id__\")]:[{include:e(\"@no_space_expression_end_token__id__\")},{include:e(\"@directive_end_token__id__\")},{include:e(\"@expression_token__id__\")}],[e(\"unifiedCall__id__\")]:[{include:e(\"@unified_call_token__id__\")}],[e(\"singleString__id__\")]:[{include:e(\"@string_single_token__id__\")}],[e(\"doubleString__id__\")]:[{include:e(\"@string_double_token__id__\")}],[e(\"rawSingleString__id__\")]:[{include:e(\"@string_single_raw_token__id__\")}],[e(\"rawDoubleString__id__\")]:[{include:e(\"@string_double_raw_token__id__\")}],[e(\"expressionComment__id__\")]:[{include:e(\"@expression_comment_token__id__\")}],[e(\"noParse__id__\")]:[{include:e(\"@no_parse_token__id__\")}],[e(\"terseComment__id__\")]:[{include:e(\"@terse_comment_token__id__\")}],[e(\"directive_token__id__\")]:[[o(/(?:@startTag__id__)(@directiveStartCloseTag1)(?:@closeTag1__id__)/),t.id===\"auto\"?{cases:{\"$1==<\":{token:\"@rematch\",switchTo:`@default_angle_${n.id}`},\"$1==[\":{token:\"@rematch\",switchTo:`@default_bracket_${n.id}`}}}:[{token:\"@brackets.directive\"},{token:\"delimiter.directive\"},{cases:{\"@noParseTags\":{token:\"tag\",next:e(\"@noParse__id__.$3\")},\"@default\":{token:\"tag\"}}},{token:\"delimiter.directive\"},{token:\"@brackets.directive\"}]],[o(/(?:@startTag__id__)(@directiveStartCloseTag2)(?:@closeTag2__id__)/),t.id===\"auto\"?{cases:{\"$1==<\":{token:\"@rematch\",switchTo:`@default_angle_${n.id}`},\"$1==[\":{token:\"@rematch\",switchTo:`@default_bracket_${n.id}`}}}:[{token:\"@brackets.directive\"},{token:\"delimiter.directive\"},{token:\"tag\"},{token:\"delimiter.directive\"},{token:\"@brackets.directive\"}]],[o(/(?:@startTag__id__)(@directiveStartBlank)(@blank)/),t.id===\"auto\"?{cases:{\"$1==<\":{token:\"@rematch\",switchTo:`@default_angle_${n.id}`},\"$1==[\":{token:\"@rematch\",switchTo:`@default_bracket_${n.id}`}}}:[{token:\"@brackets.directive\"},{token:\"delimiter.directive\"},{token:\"tag\"},{token:\"\",next:e(\"@fmExpression__id__.directive\")}]],[o(/(?:@endTag__id__)(@directiveEndCloseTag1)(?:@closeTag1__id__)/),t.id===\"auto\"?{cases:{\"$1==<\":{token:\"@rematch\",switchTo:`@default_angle_${n.id}`},\"$1==[\":{token:\"@rematch\",switchTo:`@default_bracket_${n.id}`}}}:[{token:\"@brackets.directive\"},{token:\"delimiter.directive\"},{token:\"tag\"},{token:\"delimiter.directive\"},{token:\"@brackets.directive\"}]],[o(/(@open__id__)(@)/),t.id===\"auto\"?{cases:{\"$1==<\":{token:\"@rematch\",switchTo:`@default_angle_${n.id}`},\"$1==[\":{token:\"@rematch\",switchTo:`@default_bracket_${n.id}`}}}:[{token:\"@brackets.directive\"},{token:\"delimiter.directive\",next:e(\"@unifiedCall__id__\")}]],[o(/(@open__id__)(\\/@)((?:(?:@id)(?:\\.(?:@id))*)?)(?:@closeTag1__id__)/),[{token:\"@brackets.directive\"},{token:\"delimiter.directive\"},{token:\"tag\"},{token:\"delimiter.directive\"},{token:\"@brackets.directive\"}]],[o(/(@open__id__)#--/),t.id===\"auto\"?{cases:{\"$1==<\":{token:\"@rematch\",switchTo:`@default_angle_${n.id}`},\"$1==[\":{token:\"@rematch\",switchTo:`@default_bracket_${n.id}`}}}:{token:\"comment\",next:e(\"@terseComment__id__\")}],[o(/(?:@startOrEndTag__id__)([a-zA-Z_]+)/),t.id===\"auto\"?{cases:{\"$1==<\":{token:\"@rematch\",switchTo:`@default_angle_${n.id}`},\"$1==[\":{token:\"@rematch\",switchTo:`@default_bracket_${n.id}`}}}:[{token:\"@brackets.directive\"},{token:\"delimiter.directive\"},{token:\"tag.invalid\",next:e(\"@fmExpression__id__.directive\")}]]],[e(\"interpolation_and_text_token__id__\")]:[[o(/(@iOpen1__id__)(@iOpen2__id__)/),[{token:n.id===\"bracket\"?\"@brackets.interpolation\":\"delimiter.interpolation\"},{token:n.id===\"bracket\"?\"delimiter.interpolation\":\"@brackets.interpolation\",next:e(\"@fmExpression__id__.interpolation\")}]],[/[\\$#<\\[\\{]|(?:@blank)+|[^\\$<#\\[\\{\\n\\r\\t ]+/,{token:\"source\"}]],[e(\"string_single_token__id__\")]:[[/[^'\\\\]/,{token:\"string\"}],[/@escapedChar/,{token:\"string.escape\"}],[/'/,{token:\"string\",next:\"@pop\"}]],[e(\"string_double_token__id__\")]:[[/[^\"\\\\]/,{token:\"string\"}],[/@escapedChar/,{token:\"string.escape\"}],[/\"/,{token:\"string\",next:\"@pop\"}]],[e(\"string_single_raw_token__id__\")]:[[/[^']+/,{token:\"string.raw\"}],[/'/,{token:\"string.raw\",next:\"@pop\"}]],[e(\"string_double_raw_token__id__\")]:[[/[^\"]+/,{token:\"string.raw\"}],[/\"/,{token:\"string.raw\",next:\"@pop\"}]],[e(\"expression_token__id__\")]:[[/(r?)(['\"])/,{cases:{\"r'\":[{token:\"keyword\"},{token:\"string.raw\",next:e(\"@rawSingleString__id__\")}],'r\"':[{token:\"keyword\"},{token:\"string.raw\",next:e(\"@rawDoubleString__id__\")}],\"'\":[{token:\"source\"},{token:\"string\",next:e(\"@singleString__id__\")}],'\"':[{token:\"source\"},{token:\"string\",next:e(\"@doubleString__id__\")}]}}],[/(?:@integer)(?:\\.(?:@integer))?/,{cases:{\"(?:@integer)\":{token:\"number\"},\"@default\":{token:\"number.float\"}}}],[/(\\.)(@blank*)(@specialHashKeys)/,[{token:\"delimiter\"},{token:\"\"},{token:\"identifier\"}]],[/(?:@namedSymbols)/,{cases:{\"@arrows\":{token:\"meta.arrow\"},\"@delimiters\":{token:\"delimiter\"},\"@default\":{token:\"operators\"}}}],[/@id/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@stringOperators\":{token:\"operators\"},\"@default\":{token:\"identifier\"}}}],[/[\\[\\]\\(\\)\\{\\}]/,{cases:{\"\\\\[\":{cases:{\"$S2==gt\":{token:\"@brackets\",next:e(\"@inParen__id__.gt\")},\"@default\":{token:\"@brackets\",next:e(\"@inParen__id__.plain\")}}},\"\\\\]\":{cases:{...n.id===\"bracket\"?{\"$S2==interpolation\":{token:\"@brackets.interpolation\",next:\"@popall\"}}:{},...t.id===\"bracket\"?{\"$S2==directive\":{token:\"@brackets.directive\",next:\"@popall\"}}:{},[e(\"$S1==inParen__id__\")]:{token:\"@brackets\",next:\"@pop\"},\"@default\":{token:\"@brackets\"}}},\"\\\\(\":{token:\"@brackets\",next:e(\"@inParen__id__.gt\")},\"\\\\)\":{cases:{[e(\"$S1==inParen__id__\")]:{token:\"@brackets\",next:\"@pop\"},\"@default\":{token:\"@brackets\"}}},\"\\\\{\":{cases:{\"$S2==gt\":{token:\"@brackets\",next:e(\"@inParen__id__.gt\")},\"@default\":{token:\"@brackets\",next:e(\"@inParen__id__.plain\")}}},\"\\\\}\":{cases:{...n.id===\"bracket\"?{}:{\"$S2==interpolation\":{token:\"@brackets.interpolation\",next:\"@popall\"}},[e(\"$S1==inParen__id__\")]:{token:\"@brackets\",next:\"@pop\"},\"@default\":{token:\"@brackets\"}}}}}],[/\\$\\{/,{token:\"delimiter.invalid\"}]],[e(\"blank_and_expression_comment_token__id__\")]:[[/(?:@blank)+/,{token:\"\"}],[/[<\\[][#!]--/,{token:\"comment\",next:e(\"@expressionComment__id__\")}]],[e(\"directive_end_token__id__\")]:[[/>/,t.id===\"bracket\"?{token:\"operators\"}:{token:\"@brackets.directive\",next:\"@popall\"}],[o(/(\\/)(@close__id__)/),[{token:\"delimiter.directive\"},{token:\"@brackets.directive\",next:\"@popall\"}]]],[e(\"greater_operators_token__id__\")]:[[/>/,{token:\"operators\"}],[/>=/,{token:\"operators\"}]],[e(\"no_space_expression_end_token__id__\")]:[[/(?:@blank)+/,{token:\"\",switchTo:e(\"@fmExpression__id__.directive\")}]],[e(\"unified_call_token__id__\")]:[[/(@id)((?:@blank)+)/,[{token:\"tag\"},{token:\"\",next:e(\"@fmExpression__id__.directive\")}]],[o(/(@id)(\\/?)(@close__id__)/),[{token:\"tag\"},{token:\"delimiter.directive\"},{token:\"@brackets.directive\",next:\"@popall\"}]],[/./,{token:\"@rematch\",next:e(\"@noSpaceExpression__id__\")}]],[e(\"no_parse_token__id__\")]:[[o(/(@open__id__)(\\/#?)([a-zA-Z]+)((?:@blank)*)(@close__id__)/),{cases:{\"$S2==$3\":[{token:\"@brackets.directive\"},{token:\"delimiter.directive\"},{token:\"tag\"},{token:\"\"},{token:\"@brackets.directive\",next:\"@popall\"}],\"$S2==comment\":[{token:\"comment\"},{token:\"comment\"},{token:\"comment\"},{token:\"comment\"},{token:\"comment\"}],\"@default\":[{token:\"source\"},{token:\"source\"},{token:\"source\"},{token:\"source\"},{token:\"source\"}]}}],[/[^<\\[\\-]+|[<\\[\\-]/,{cases:{\"$S2==comment\":{token:\"comment\"},\"@default\":{token:\"source\"}}}]],[e(\"expression_comment_token__id__\")]:[[/--[>\\]]/,{token:\"comment\",next:\"@pop\"}],[/[^\\->\\]]+|[>\\]\\-]/,{token:\"comment\"}]],[e(\"terse_comment_token__id__\")]:[[o(/--(?:@close__id__)/),{token:\"comment\",next:\"@popall\"}],[/[^<\\[\\-]+|[<\\[\\-]/,{token:\"comment\"}]]}}}function $(t){let n=a(r,t),i=a(u,t),e=a(P,t);return{...n,...i,...e,unicode:!0,includeLF:!1,start:`default_auto_${t.id}`,ignoreCase:!1,defaultToken:\"invalid\",tokenPostfix:\".freemarker2\",brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}],tokenizer:{...n.tokenizer,...i.tokenizer,...e.tokenizer}}}var R={conf:p(r),language:a(r,g)},z={conf:p(u),language:a(u,g)},L={conf:p(r),language:a(r,A)},O={conf:p(u),language:a(u,A)},Z={conf:b(),language:$(g)},j={conf:b(),language:$(A)};return I(M);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/fsharp/fsharp.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/fsharp/fsharp\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(n,e)=>{for(var o in e)s(n,o,{get:e[o],enumerable:!0})},g=(n,e,o,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of a(e))!l.call(n,t)&&t!==o&&s(n,t,{get:()=>e[t],enumerable:!(i=r(e,t))||i.enumerable});return n};var f=n=>g(s({},\"__esModule\",{value:!0}),n);var d={};c(d,{conf:()=>m,language:()=>u});var m={comments:{lineComment:\"//\",blockComment:[\"(*\",\"*)\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],folding:{markers:{start:new RegExp(\"^\\\\s*//\\\\s*#region\\\\b|^\\\\s*\\\\(\\\\*\\\\s*#region(.*)\\\\*\\\\)\"),end:new RegExp(\"^\\\\s*//\\\\s*#endregion\\\\b|^\\\\s*\\\\(\\\\*\\\\s*#endregion\\\\s*\\\\*\\\\)\")}}},u={defaultToken:\"\",tokenPostfix:\".fs\",keywords:[\"abstract\",\"and\",\"atomic\",\"as\",\"assert\",\"asr\",\"base\",\"begin\",\"break\",\"checked\",\"component\",\"const\",\"constraint\",\"constructor\",\"continue\",\"class\",\"default\",\"delegate\",\"do\",\"done\",\"downcast\",\"downto\",\"elif\",\"else\",\"end\",\"exception\",\"eager\",\"event\",\"external\",\"extern\",\"false\",\"finally\",\"for\",\"fun\",\"function\",\"fixed\",\"functor\",\"global\",\"if\",\"in\",\"include\",\"inherit\",\"inline\",\"interface\",\"internal\",\"land\",\"lor\",\"lsl\",\"lsr\",\"lxor\",\"lazy\",\"let\",\"match\",\"member\",\"mod\",\"module\",\"mutable\",\"namespace\",\"method\",\"mixin\",\"new\",\"not\",\"null\",\"of\",\"open\",\"or\",\"object\",\"override\",\"private\",\"parallel\",\"process\",\"protected\",\"pure\",\"public\",\"rec\",\"return\",\"static\",\"sealed\",\"struct\",\"sig\",\"then\",\"to\",\"true\",\"tailcall\",\"trait\",\"try\",\"type\",\"upcast\",\"use\",\"val\",\"void\",\"virtual\",\"volatile\",\"when\",\"while\",\"with\",\"yield\"],symbols:/[=><!~?:&|+\\-*\\^%;\\.,\\/]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/[uU]?[yslnLI]?/,floatsuffix:/[fFmM]?/,tokenizer:{root:[[/[a-zA-Z_]\\w*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/\\[<.*>\\]/,\"annotation\"],[/^#(if|else|endif)/,\"keyword\"],[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,\"delimiter\"],[/\\d*\\d+[eE]([\\-+]?\\d+)?(@floatsuffix)/,\"number.float\"],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?(@floatsuffix)/,\"number.float\"],[/0x[0-9a-fA-F]+LF/,\"number.float\"],[/0x[0-9a-fA-F]+(@integersuffix)/,\"number.hex\"],[/0b[0-1]+(@integersuffix)/,\"number.bin\"],[/\\d+(@integersuffix)/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"\"\"/,\"string\",'@string.\"\"\"'],[/\"/,\"string\",'@string.\"'],[/\\@\"/,{token:\"string.quote\",next:\"@litstring\"}],[/'[^\\\\']'B?/,\"string\"],[/(')(@escapes)(')/,[\"string\",\"string.escape\",\"string\"]],[/'/,\"string.invalid\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\(\\*(?!\\))/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^*(]+/,\"comment\"],[/\\*\\)/,\"comment\",\"@pop\"],[/\\*/,\"comment\"],[/\\(\\*\\)/,\"comment\"],[/\\(/,\"comment\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/(\"\"\"|\"B?)/,{cases:{\"$#==$S2\":{token:\"string\",next:\"@pop\"},\"@default\":\"string\"}}]],litstring:[[/[^\"]+/,\"string\"],[/\"\"/,\"string.escape\"],[/\"/,{token:\"string.quote\",next:\"@pop\"}]]}};return f(d);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/go/go.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/go/go\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var m=(n,e)=>{for(var t in e)s(n,t,{get:e[t],enumerable:!0})},l=(n,e,t,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let o of a(e))!c.call(n,o)&&o!==t&&s(n,o,{get:()=>e[o],enumerable:!(r=i(e,o))||r.enumerable});return n};var g=n=>l(s({},\"__esModule\",{value:!0}),n);var d={};m(d,{conf:()=>p,language:()=>u});var p={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"`\",close:\"`\",notIn:[\"string\"]},{open:'\"',close:'\"',notIn:[\"string\"]},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"`\",close:\"`\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}]},u={defaultToken:\"\",tokenPostfix:\".go\",keywords:[\"break\",\"case\",\"chan\",\"const\",\"continue\",\"default\",\"defer\",\"else\",\"fallthrough\",\"for\",\"func\",\"go\",\"goto\",\"if\",\"import\",\"interface\",\"map\",\"package\",\"range\",\"return\",\"select\",\"struct\",\"switch\",\"type\",\"var\",\"bool\",\"true\",\"false\",\"uint8\",\"uint16\",\"uint32\",\"uint64\",\"int8\",\"int16\",\"int32\",\"int64\",\"float32\",\"float64\",\"complex64\",\"complex128\",\"byte\",\"rune\",\"uint\",\"int\",\"uintptr\",\"string\",\"nil\"],operators:[\"+\",\"-\",\"*\",\"/\",\"%\",\"&\",\"|\",\"^\",\"<<\",\">>\",\"&^\",\"+=\",\"-=\",\"*=\",\"/=\",\"%=\",\"&=\",\"|=\",\"^=\",\"<<=\",\">>=\",\"&^=\",\"&&\",\"||\",\"<-\",\"++\",\"--\",\"==\",\"<\",\">\",\"=\",\"!\",\"!=\",\"<=\",\">=\",\":=\",\"...\",\"(\",\")\",\"\",\"]\",\"{\",\"}\",\",\",\";\",\".\",\":\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_]\\w*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/\\[\\[.*\\]\\]/,\"annotation\"],[/^\\s*#\\w+/,\"keyword\"],[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/\\d*\\d+[eE]([\\-+]?\\d+)?/,\"number.float\"],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,\"number.hex\"],[/0[0-7']*[0-7]/,\"number.octal\"],[/0[bB][0-1']*[0-1]/,\"number.binary\"],[/\\d[\\d']*/,\"number\"],[/\\d/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",\"@string\"],[/`/,\"string\",\"@rawstring\"],[/'[^\\\\']'/,\"string\"],[/(')(@escapes)(')/,[\"string\",\"string.escape\",\"string\"]],[/'/,\"string.invalid\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*\\*(?!\\/)/,\"comment.doc\",\"@doccomment\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],doccomment:[[/[^\\/*]+/,\"comment.doc\"],[/\\/\\*/,\"comment.doc.invalid\"],[/\\*\\//,\"comment.doc\",\"@pop\"],[/[\\/*]/,\"comment.doc\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"]],rawstring:[[/[^\\`]/,\"string\"],[/`/,\"string\",\"@pop\"]]}};return g(d);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/graphql/graphql.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/graphql/graphql\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(n,e)=>{for(var t in e)s(n,t,{get:e[t],enumerable:!0})},d=(n,e,t,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let o of i(e))!l.call(n,o)&&o!==t&&s(n,o,{get:()=>e[o],enumerable:!(r=a(e,o))||r.enumerable});return n};var p=n=>d(s({},\"__esModule\",{value:!0}),n);var u={};c(u,{conf:()=>g,language:()=>I});var g={comments:{lineComment:\"#\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"\"\"',close:'\"\"\"',notIn:[\"string\",\"comment\"]},{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"\"\"',close:'\"\"\"'},{open:'\"',close:'\"'}],folding:{offSide:!0}},I={defaultToken:\"invalid\",tokenPostfix:\".gql\",keywords:[\"null\",\"true\",\"false\",\"query\",\"mutation\",\"subscription\",\"extend\",\"schema\",\"directive\",\"scalar\",\"type\",\"interface\",\"union\",\"enum\",\"input\",\"implements\",\"fragment\",\"on\"],typeKeywords:[\"Int\",\"Float\",\"String\",\"Boolean\",\"ID\"],directiveLocations:[\"SCHEMA\",\"SCALAR\",\"OBJECT\",\"FIELD_DEFINITION\",\"ARGUMENT_DEFINITION\",\"INTERFACE\",\"UNION\",\"ENUM\",\"ENUM_VALUE\",\"INPUT_OBJECT\",\"INPUT_FIELD_DEFINITION\",\"QUERY\",\"MUTATION\",\"SUBSCRIPTION\",\"FIELD\",\"FRAGMENT_DEFINITION\",\"FRAGMENT_SPREAD\",\"INLINE_FRAGMENT\",\"VARIABLE_DEFINITION\"],operators:[\"=\",\"!\",\"?\",\":\",\"&\",\"|\"],symbols:/[=!?:&|]+/,escapes:/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9A-Fa-f]{4})/,tokenizer:{root:[[/[a-z_][\\w$]*/,{cases:{\"@keywords\":\"keyword\",\"@default\":\"key.identifier\"}}],[/[$][\\w$]*/,{cases:{\"@keywords\":\"keyword\",\"@default\":\"argument.identifier\"}}],[/[A-Z][\\w\\$]*/,{cases:{\"@typeKeywords\":\"keyword\",\"@default\":\"type.identifier\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"operator\",\"@default\":\"\"}}],[/@\\s*[a-zA-Z_\\$][\\w\\$]*/,{token:\"annotation\",log:\"annotation token: $0\"}],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/0[xX][0-9a-fA-F]+/,\"number.hex\"],[/\\d+/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"\"\"/,{token:\"string\",next:\"@mlstring\",nextEmbedded:\"markdown\"}],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@string\"}]],mlstring:[[/[^\"]+/,\"string\"],['\"\"\"',{token:\"string\",next:\"@pop\",nextEmbedded:\"@pop\"}]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"}]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/#.*$/,\"comment\"]]}};return p(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/handlebars/handlebars.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/handlebars/handlebars\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var h=Object.create;var i=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var y=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(t,n)=>(typeof require!=\"undefined\"?require:t)[n]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var T=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),S=(e,t)=>{for(var n in t)i(e,n,{get:t[n],enumerable:!0})},m=(e,t,n,o)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let r of u(t))!k.call(e,r)&&r!==n&&i(e,r,{get:()=>t[r],enumerable:!(o=b(t,r))||o.enumerable});return e},l=(e,t,n)=>(m(e,t,\"default\"),n&&m(n,t,\"default\")),s=(e,t,n)=>(n=e!=null?h(x(e)):{},m(t||!e||!e.__esModule?i(n,\"default\",{value:e,enumerable:!0}):n,e)),E=e=>m(i({},\"__esModule\",{value:!0}),e);var c=T((I,d)=>{var w=s(y(\"vs/editor/editor.api\"));d.exports=w});var f={};S(f,{conf:()=>g,language:()=>$});var a={};l(a,s(c()));var p=[\"area\",\"base\",\"br\",\"col\",\"embed\",\"hr\",\"img\",\"input\",\"keygen\",\"link\",\"menuitem\",\"meta\",\"param\",\"source\",\"track\",\"wbr\"],g={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\$\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\s]+)/g,comments:{blockComment:[\"{{!--\",\"--}}\"]},brackets:[[\"<!--\",\"-->\"],[\"<\",\">\"],[\"{{\",\"}}\"],[\"{\",\"}\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"<\",close:\">\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],onEnterRules:[{beforeText:new RegExp(`<(?!(?:${p.join(\"|\")}))(\\\\w[\\\\w\\\\d]*)([^/>]*(?!/)>)[^<]*$`,\"i\"),afterText:/^<\\/(\\w[\\w\\d]*)\\s*>$/i,action:{indentAction:a.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(`<(?!(?:${p.join(\"|\")}))(\\\\w[\\\\w\\\\d]*)([^/>]*(?!/)>)[^<]*$`,\"i\"),action:{indentAction:a.languages.IndentAction.Indent}}]},$={defaultToken:\"\",tokenPostfix:\"\",tokenizer:{root:[[/\\{\\{!--/,\"comment.block.start.handlebars\",\"@commentBlock\"],[/\\{\\{!/,\"comment.start.handlebars\",\"@comment\"],[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInSimpleState.root\"}],[/<!DOCTYPE/,\"metatag.html\",\"@doctype\"],[/<!--/,\"comment.html\",\"@commentHtml\"],[/(<)(\\w+)(\\/>)/,[\"delimiter.html\",\"tag.html\",\"delimiter.html\"]],[/(<)(script)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@script\"}]],[/(<)(style)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@style\"}]],[/(<)([:\\w]+)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@otherTag\"}]],[/(<\\/)(\\w+)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@otherTag\"}]],[/</,\"delimiter.html\"],[/\\{/,\"delimiter.html\"],[/[^<{]+/]],doctype:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInSimpleState.comment\"}],[/[^>]+/,\"metatag.content.html\"],[/>/,\"metatag.html\",\"@pop\"]],comment:[[/\\}\\}/,\"comment.end.handlebars\",\"@pop\"],[/./,\"comment.content.handlebars\"]],commentBlock:[[/--\\}\\}/,\"comment.block.end.handlebars\",\"@pop\"],[/./,\"comment.content.handlebars\"]],commentHtml:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInSimpleState.comment\"}],[/-->/,\"comment.html\",\"@pop\"],[/[^-]+/,\"comment.content.html\"],[/./,\"comment.content.html\"]],otherTag:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInSimpleState.otherTag\"}],[/\\/?>/,\"delimiter.html\",\"@pop\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/]],script:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInSimpleState.script\"}],[/type/,\"attribute.name\",\"@scriptAfterType\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.text/javascript\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/(<\\/)(script\\s*)(>)/,[\"delimiter.html\",\"tag.html\",{token:\"delimiter.html\",next:\"@pop\"}]]],scriptAfterType:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInSimpleState.scriptAfterType\"}],[/=/,\"delimiter\",\"@scriptAfterTypeEquals\"],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.text/javascript\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptAfterTypeEquals:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInSimpleState.scriptAfterTypeEquals\"}],[/\"([^\"]*)\"/,{token:\"attribute.value\",switchTo:\"@scriptWithCustomType.$1\"}],[/'([^']*)'/,{token:\"attribute.value\",switchTo:\"@scriptWithCustomType.$1\"}],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.text/javascript\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptWithCustomType:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInSimpleState.scriptWithCustomType.$S2\"}],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.$S2\",nextEmbedded:\"$S2\"}],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptEmbedded:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInEmbeddedState.scriptEmbedded.$S2\",nextEmbedded:\"@pop\"}],[/<\\/script/,{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}]],style:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInSimpleState.style\"}],[/type/,\"attribute.name\",\"@styleAfterType\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.text/css\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/(<\\/)(style\\s*)(>)/,[\"delimiter.html\",\"tag.html\",{token:\"delimiter.html\",next:\"@pop\"}]]],styleAfterType:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInSimpleState.styleAfterType\"}],[/=/,\"delimiter\",\"@styleAfterTypeEquals\"],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.text/css\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleAfterTypeEquals:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInSimpleState.styleAfterTypeEquals\"}],[/\"([^\"]*)\"/,{token:\"attribute.value\",switchTo:\"@styleWithCustomType.$1\"}],[/'([^']*)'/,{token:\"attribute.value\",switchTo:\"@styleWithCustomType.$1\"}],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.text/css\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleWithCustomType:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInSimpleState.styleWithCustomType.$S2\"}],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.$S2\",nextEmbedded:\"$S2\"}],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleEmbedded:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@handlebarsInEmbeddedState.styleEmbedded.$S2\",nextEmbedded:\"@pop\"}],[/<\\/style/,{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}]],handlebarsInSimpleState:[[/\\{\\{\\{?/,\"delimiter.handlebars\"],[/\\}\\}\\}?/,{token:\"delimiter.handlebars\",switchTo:\"@$S2.$S3\"}],{include:\"handlebarsRoot\"}],handlebarsInEmbeddedState:[[/\\{\\{\\{?/,\"delimiter.handlebars\"],[/\\}\\}\\}?/,{token:\"delimiter.handlebars\",switchTo:\"@$S2.$S3\",nextEmbedded:\"$S3\"}],{include:\"handlebarsRoot\"}],handlebarsRoot:[[/\"[^\"]*\"/,\"string.handlebars\"],[/[#/][^\\s}]+/,\"keyword.helper.handlebars\"],[/else\\b/,\"keyword.helper.handlebars\"],[/[\\s]+/],[/[^}]/,\"variable.parameter.handlebars\"]]}};return E(f);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/hcl/hcl.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/hcl/hcl\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var o in e)r(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,n)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of i(e))!c.call(t,s)&&s!==o&&r(t,s,{get:()=>e[s],enumerable:!(n=a(e,s))||n.enumerable});return t};var m=t=>d(r({},\"__esModule\",{value:!0}),t);var f={};l(f,{conf:()=>p,language:()=>g});var p={comments:{lineComment:\"#\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"',notIn:[\"string\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'}]},g={defaultToken:\"\",tokenPostfix:\".hcl\",keywords:[\"var\",\"local\",\"path\",\"for_each\",\"any\",\"string\",\"number\",\"bool\",\"true\",\"false\",\"null\",\"if \",\"else \",\"endif \",\"for \",\"in\",\"endfor\"],operators:[\"=\",\">=\",\"<=\",\"==\",\"!=\",\"+\",\"-\",\"*\",\"/\",\"%\",\"&&\",\"||\",\"!\",\"<\",\">\",\"?\",\"...\",\":\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,terraformFunctions:/(abs|ceil|floor|log|max|min|pow|signum|chomp|format|formatlist|indent|join|lower|regex|regexall|replace|split|strrev|substr|title|trimspace|upper|chunklist|coalesce|coalescelist|compact|concat|contains|distinct|element|flatten|index|keys|length|list|lookup|map|matchkeys|merge|range|reverse|setintersection|setproduct|setunion|slice|sort|transpose|values|zipmap|base64decode|base64encode|base64gzip|csvdecode|jsondecode|jsonencode|urlencode|yamldecode|yamlencode|abspath|dirname|pathexpand|basename|file|fileexists|fileset|filebase64|templatefile|formatdate|timeadd|timestamp|base64sha256|base64sha512|bcrypt|filebase64sha256|filebase64sha512|filemd5|filemd1|filesha256|filesha512|md5|rsadecrypt|sha1|sha256|sha512|uuid|uuidv5|cidrhost|cidrnetmask|cidrsubnet|tobool|tolist|tomap|tonumber|toset|tostring)/,terraformMainBlocks:/(module|data|terraform|resource|provider|variable|output|locals)/,tokenizer:{root:[[/^@terraformMainBlocks([ \\t]*)([\\w-]+|\"[\\w-]+\"|)([ \\t]*)([\\w-]+|\"[\\w-]+\"|)([ \\t]*)(\\{)/,[\"type\",\"\",\"string\",\"\",\"string\",\"\",\"@brackets\"]],[/(\\w+[ \\t]+)([ \\t]*)([\\w-]+|\"[\\w-]+\"|)([ \\t]*)([\\w-]+|\"[\\w-]+\"|)([ \\t]*)(\\{)/,[\"identifier\",\"\",\"string\",\"\",\"string\",\"\",\"@brackets\"]],[/(\\w+[ \\t]+)([ \\t]*)([\\w-]+|\"[\\w-]+\"|)([ \\t]*)([\\w-]+|\"[\\w-]+\"|)(=)(\\{)/,[\"identifier\",\"\",\"string\",\"\",\"operator\",\"\",\"@brackets\"]],{include:\"@terraform\"}],terraform:[[/@terraformFunctions(\\()/,[\"type\",\"@brackets\"]],[/[a-zA-Z_]\\w*-*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"variable\"}}],{include:\"@whitespace\"},{include:\"@heredoc\"},[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"operator\",\"@default\":\"\"}}],[/\\d*\\d+[eE]([\\-+]?\\d+)?/,\"number.float\"],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/\\d[\\d']*/,\"number\"],[/\\d/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"/,\"string\",\"@string\"],[/'/,\"invalid\"]],heredoc:[[/<<[-]*\\s*[\"]?([\\w\\-]+)[\"]?/,{token:\"string.heredoc.delimiter\",next:\"@heredocBody.$1\"}]],heredocBody:[[/([\\w\\-]+)$/,{cases:{\"$1==$S2\":[{token:\"string.heredoc.delimiter\",next:\"@popall\"}],\"@default\":\"string.heredoc\"}}],[/./,\"string.heredoc\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"],[/#.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],string:[[/\\$\\{/,{token:\"delimiter\",next:\"@stringExpression\"}],[/[^\\\\\"\\$]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@popall\"]],stringInsideExpression:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"]],stringExpression:[[/\\}/,{token:\"delimiter\",next:\"@pop\"}],[/\"/,\"string\",\"@stringInsideExpression\"],{include:\"@terraform\"}]}};return m(f);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/html/html.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/html/html\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var u=Object.create;var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var k=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(t,n)=>(typeof require!=\"undefined\"?require:t)[n]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var E=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),T=(e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})},o=(e,t,n,s)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let r of x(t))!g.call(e,r)&&r!==n&&a(e,r,{get:()=>t[r],enumerable:!(s=b(t,r))||s.enumerable});return e},d=(e,t,n)=>(o(e,t,\"default\"),n&&o(n,t,\"default\")),m=(e,t,n)=>(n=e!=null?u(y(e)):{},o(t||!e||!e.__esModule?a(n,\"default\",{value:e,enumerable:!0}):n,e)),w=e=>o(a({},\"__esModule\",{value:!0}),e);var l=E((A,p)=>{var h=m(k(\"vs/editor/editor.api\"));p.exports=h});var $={};T($,{conf:()=>v,language:()=>f});var i={};d(i,m(l()));var c=[\"area\",\"base\",\"br\",\"col\",\"embed\",\"hr\",\"img\",\"input\",\"keygen\",\"link\",\"menuitem\",\"meta\",\"param\",\"source\",\"track\",\"wbr\"],v={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\$\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\s]+)/g,comments:{blockComment:[\"<!--\",\"-->\"]},brackets:[[\"<!--\",\"-->\"],[\"<\",\">\"],[\"{\",\"}\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"}],onEnterRules:[{beforeText:new RegExp(`<(?!(?:${c.join(\"|\")}))([_:\\\\w][_:\\\\w-.\\\\d]*)([^/>]*(?!/)>)[^<]*$`,\"i\"),afterText:/^<\\/([_:\\w][_:\\w-.\\d]*)\\s*>$/i,action:{indentAction:i.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(`<(?!(?:${c.join(\"|\")}))(\\\\w[\\\\w\\\\d]*)([^/>]*(?!/)>)[^<]*$`,\"i\"),action:{indentAction:i.languages.IndentAction.Indent}}],folding:{markers:{start:new RegExp(\"^\\\\s*<!--\\\\s*#region\\\\b.*-->\"),end:new RegExp(\"^\\\\s*<!--\\\\s*#endregion\\\\b.*-->\")}}},f={defaultToken:\"\",tokenPostfix:\".html\",ignoreCase:!0,tokenizer:{root:[[/<!DOCTYPE/,\"metatag\",\"@doctype\"],[/<!--/,\"comment\",\"@comment\"],[/(<)((?:[\\w\\-]+:)?[\\w\\-]+)(\\s*)(\\/>)/,[\"delimiter\",\"tag\",\"\",\"delimiter\"]],[/(<)(script)/,[\"delimiter\",{token:\"tag\",next:\"@script\"}]],[/(<)(style)/,[\"delimiter\",{token:\"tag\",next:\"@style\"}]],[/(<)((?:[\\w\\-]+:)?[\\w\\-]+)/,[\"delimiter\",{token:\"tag\",next:\"@otherTag\"}]],[/(<\\/)((?:[\\w\\-]+:)?[\\w\\-]+)/,[\"delimiter\",{token:\"tag\",next:\"@otherTag\"}]],[/</,\"delimiter\"],[/[^<]+/]],doctype:[[/[^>]+/,\"metatag.content\"],[/>/,\"metatag\",\"@pop\"]],comment:[[/-->/,\"comment\",\"@pop\"],[/[^-]+/,\"comment.content\"],[/./,\"comment.content\"]],otherTag:[[/\\/?>/,\"delimiter\",\"@pop\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/]],script:[[/type/,\"attribute.name\",\"@scriptAfterType\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/>/,{token:\"delimiter\",next:\"@scriptEmbedded\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/(<\\/)(script\\s*)(>)/,[\"delimiter\",\"tag\",{token:\"delimiter\",next:\"@pop\"}]]],scriptAfterType:[[/=/,\"delimiter\",\"@scriptAfterTypeEquals\"],[/>/,{token:\"delimiter\",next:\"@scriptEmbedded\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptAfterTypeEquals:[[/\"module\"/,{token:\"attribute.value\",switchTo:\"@scriptWithCustomType.text/javascript\"}],[/'module'/,{token:\"attribute.value\",switchTo:\"@scriptWithCustomType.text/javascript\"}],[/\"([^\"]*)\"/,{token:\"attribute.value\",switchTo:\"@scriptWithCustomType.$1\"}],[/'([^']*)'/,{token:\"attribute.value\",switchTo:\"@scriptWithCustomType.$1\"}],[/>/,{token:\"delimiter\",next:\"@scriptEmbedded\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptWithCustomType:[[/>/,{token:\"delimiter\",next:\"@scriptEmbedded.$S2\",nextEmbedded:\"$S2\"}],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptEmbedded:[[/<\\/script/,{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}],[/[^<]+/,\"\"]],style:[[/type/,\"attribute.name\",\"@styleAfterType\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/>/,{token:\"delimiter\",next:\"@styleEmbedded\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/(<\\/)(style\\s*)(>)/,[\"delimiter\",\"tag\",{token:\"delimiter\",next:\"@pop\"}]]],styleAfterType:[[/=/,\"delimiter\",\"@styleAfterTypeEquals\"],[/>/,{token:\"delimiter\",next:\"@styleEmbedded\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleAfterTypeEquals:[[/\"([^\"]*)\"/,{token:\"attribute.value\",switchTo:\"@styleWithCustomType.$1\"}],[/'([^']*)'/,{token:\"attribute.value\",switchTo:\"@styleWithCustomType.$1\"}],[/>/,{token:\"delimiter\",next:\"@styleEmbedded\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleWithCustomType:[[/>/,{token:\"delimiter\",next:\"@styleEmbedded.$S2\",nextEmbedded:\"$S2\"}],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleEmbedded:[[/<\\/style/,{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}],[/[^<]+/,\"\"]]}};return w($);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/ini/ini.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/ini/ini\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var t=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var c=(n,e)=>{for(var s in e)t(n,s,{get:e[s],enumerable:!0})},l=(n,e,s,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let o of r(e))!g.call(n,o)&&o!==s&&t(n,o,{get:()=>e[o],enumerable:!(a=i(e,o))||a.enumerable});return n};var p=n=>l(t({},\"__esModule\",{value:!0}),n);var f={};c(f,{conf:()=>u,language:()=>m});var u={comments:{lineComment:\"#\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}]},m={defaultToken:\"\",tokenPostfix:\".ini\",escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^\\[[^\\]]*\\]/,\"metatag\"],[/(^\\w+)(\\s*)(\\=)/,[\"key\",\"\",\"delimiter\"]],{include:\"@whitespace\"},[/\\d+/,\"number\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/'([^'\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",'@string.\"'],[/'/,\"string\",\"@string.'\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/^\\s*[#;].*$/,\"comment\"]],string:[[/[^\\\\\"']+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/[\"']/,{cases:{\"$#==$S2\":{token:\"string\",next:\"@pop\"},\"@default\":\"string\"}}]]}};return p(f);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/java/java.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/java/java\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of r(e))!c.call(t,n)&&n!==o&&s(t,n,{get:()=>e[n],enumerable:!(i=a(e,n))||i.enumerable});return t};var g=t=>d(s({},\"__esModule\",{value:!0}),t);var f={};l(f,{conf:()=>m,language:()=>p});var m={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"<\",close:\">\"}],folding:{markers:{start:new RegExp(\"^\\\\s*//\\\\s*(?:(?:#?region\\\\b)|(?:<editor-fold\\\\b))\"),end:new RegExp(\"^\\\\s*//\\\\s*(?:(?:#?endregion\\\\b)|(?:</editor-fold>))\")}}},p={defaultToken:\"\",tokenPostfix:\".java\",keywords:[\"abstract\",\"continue\",\"for\",\"new\",\"switch\",\"assert\",\"default\",\"goto\",\"package\",\"synchronized\",\"boolean\",\"do\",\"if\",\"private\",\"this\",\"break\",\"double\",\"implements\",\"protected\",\"throw\",\"byte\",\"else\",\"import\",\"public\",\"throws\",\"case\",\"enum\",\"instanceof\",\"return\",\"transient\",\"catch\",\"extends\",\"int\",\"short\",\"try\",\"char\",\"final\",\"interface\",\"static\",\"void\",\"class\",\"finally\",\"long\",\"strictfp\",\"volatile\",\"const\",\"float\",\"native\",\"super\",\"while\",\"true\",\"false\",\"yield\",\"record\",\"sealed\",\"non-sealed\",\"permits\"],operators:[\"=\",\">\",\"<\",\"!\",\"~\",\"?\",\":\",\"==\",\"<=\",\">=\",\"!=\",\"&&\",\"||\",\"++\",\"--\",\"+\",\"-\",\"*\",\"/\",\"&\",\"|\",\"^\",\"%\",\"<<\",\">>\",\">>>\",\"+=\",\"-=\",\"*=\",\"/=\",\"&=\",\"|=\",\"^=\",\"%=\",\"<<=\",\">>=\",\">>>=\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\\d+(_+\\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,tokenizer:{root:[[\"non-sealed\",\"keyword.non-sealed\"],[/[a-zA-Z_$][\\w$]*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/@\\s*[a-zA-Z_\\$][\\w\\$]*/,\"annotation\"],[/(@digits)[eE]([\\-+]?(@digits))?[fFdD]?/,\"number.float\"],[/(@digits)\\.(@digits)([eE][\\-+]?(@digits))?[fFdD]?/,\"number.float\"],[/0[xX](@hexdigits)[Ll]?/,\"number.hex\"],[/0(@octaldigits)[Ll]?/,\"number.octal\"],[/0[bB](@binarydigits)[Ll]?/,\"number.binary\"],[/(@digits)[fFdD]/,\"number.float\"],[/(@digits)[lL]?/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"\"\"/,\"string\",\"@multistring\"],[/\"/,\"string\",\"@string\"],[/'[^\\\\']'/,\"string\"],[/(')(@escapes)(')/,[\"string\",\"string.escape\",\"string\"]],[/'/,\"string.invalid\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*\\*(?!\\/)/,\"comment.doc\",\"@javadoc\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],javadoc:[[/[^\\/*]+/,\"comment.doc\"],[/\\/\\*/,\"comment.doc.invalid\"],[/\\*\\//,\"comment.doc\",\"@pop\"],[/[\\/*]/,\"comment.doc\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"]],multistring:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"\"\"/,\"string\",\"@pop\"],[/./,\"string\"]]}};return g(f);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/javascript/javascript.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/javascript/javascript\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var x=Object.create;var a=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var y=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(t,n)=>(typeof require!=\"undefined\"?require:t)[n]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var w=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),h=(e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})},s=(e,t,n,c)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let r of f(t))!k.call(e,r)&&r!==n&&a(e,r,{get:()=>t[r],enumerable:!(c=u(t,r))||c.enumerable});return e},g=(e,t,n)=>(s(e,t,\"default\"),n&&s(n,t,\"default\")),p=(e,t,n)=>(n=e!=null?x(b(e)):{},s(t||!e||!e.__esModule?a(n,\"default\",{value:e,enumerable:!0}):n,e)),v=e=>s(a({},\"__esModule\",{value:!0}),e);var d=w((C,l)=>{var A=p(y(\"vs/editor/editor.api\"));l.exports=A});var _={};h(_,{conf:()=>$,language:()=>T});var i={};g(i,p(d()));var m={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],onEnterRules:[{beforeText:/^\\s*\\/\\*\\*(?!\\/)([^\\*]|\\*(?!\\/))*$/,afterText:/^\\s*\\*\\/$/,action:{indentAction:i.languages.IndentAction.IndentOutdent,appendText:\" * \"}},{beforeText:/^\\s*\\/\\*\\*(?!\\/)([^\\*]|\\*(?!\\/))*$/,action:{indentAction:i.languages.IndentAction.None,appendText:\" * \"}},{beforeText:/^(\\t|(\\ \\ ))*\\ \\*(\\ ([^\\*]|\\*(?!\\/))*)?$/,action:{indentAction:i.languages.IndentAction.None,appendText:\"* \"}},{beforeText:/^(\\t|(\\ \\ ))*\\ \\*\\/\\s*$/,action:{indentAction:i.languages.IndentAction.None,removeText:1}}],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"',notIn:[\"string\"]},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]},{open:\"`\",close:\"`\",notIn:[\"string\",\"comment\"]},{open:\"/**\",close:\" */\",notIn:[\"string\"]}],folding:{markers:{start:new RegExp(\"^\\\\s*//\\\\s*#?region\\\\b\"),end:new RegExp(\"^\\\\s*//\\\\s*#?endregion\\\\b\")}}},o={defaultToken:\"invalid\",tokenPostfix:\".ts\",keywords:[\"abstract\",\"any\",\"as\",\"asserts\",\"bigint\",\"boolean\",\"break\",\"case\",\"catch\",\"class\",\"continue\",\"const\",\"constructor\",\"debugger\",\"declare\",\"default\",\"delete\",\"do\",\"else\",\"enum\",\"export\",\"extends\",\"false\",\"finally\",\"for\",\"from\",\"function\",\"get\",\"if\",\"implements\",\"import\",\"in\",\"infer\",\"instanceof\",\"interface\",\"is\",\"keyof\",\"let\",\"module\",\"namespace\",\"never\",\"new\",\"null\",\"number\",\"object\",\"out\",\"package\",\"private\",\"protected\",\"public\",\"override\",\"readonly\",\"require\",\"global\",\"return\",\"satisfies\",\"set\",\"static\",\"string\",\"super\",\"switch\",\"symbol\",\"this\",\"throw\",\"true\",\"try\",\"type\",\"typeof\",\"undefined\",\"unique\",\"unknown\",\"var\",\"void\",\"while\",\"with\",\"yield\",\"async\",\"await\",\"of\"],operators:[\"<=\",\">=\",\"==\",\"!=\",\"===\",\"!==\",\"=>\",\"+\",\"-\",\"**\",\"*\",\"/\",\"%\",\"++\",\"--\",\"<<\",\"</\",\">>\",\">>>\",\"&\",\"|\",\"^\",\"!\",\"~\",\"&&\",\"||\",\"??\",\"?\",\":\",\"=\",\"+=\",\"-=\",\"*=\",\"**=\",\"/=\",\"%=\",\"<<=\",\">>=\",\">>>=\",\"&=\",\"|=\",\"^=\",\"@\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\\d+(_+\\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\\[\\]\\$\\^|\\-*+?\\.]/,regexpesc:/\\\\(?:[bBdDfnrstvwWn0\\\\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,\"delimiter.bracket\"],{include:\"common\"}],common:[[/#?[a-z_$][\\w$]*/,{cases:{\"@keywords\":\"keyword\",\"@default\":\"identifier\"}}],[/[A-Z][\\w\\$]*/,\"type.identifier\"],{include:\"@whitespace\"},[/\\/(?=([^\\\\\\/]|\\\\.)+\\/([dgimsuy]*)(\\s*)(\\.|;|,|\\)|\\]|\\}|$))/,{token:\"regexp\",bracket:\"@open\",next:\"@regexp\"}],[/[()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/!(?=([^=]|$))/,\"delimiter\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/(@digits)[eE]([\\-+]?(@digits))?/,\"number.float\"],[/(@digits)\\.(@digits)([eE][\\-+]?(@digits))?/,\"number.float\"],[/0[xX](@hexdigits)n?/,\"number.hex\"],[/0[oO]?(@octaldigits)n?/,\"number.octal\"],[/0[bB](@binarydigits)n?/,\"number.binary\"],[/(@digits)n?/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/'([^'\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",\"@string_double\"],[/'/,\"string\",\"@string_single\"],[/`/,\"string\",\"@string_backtick\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*\\*(?!\\/)/,\"comment.doc\",\"@jsdoc\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],jsdoc:[[/[^\\/*]+/,\"comment.doc\"],[/\\*\\//,\"comment.doc\",\"@pop\"],[/[\\/*]/,\"comment.doc\"]],regexp:[[/(\\{)(\\d+(?:,\\d*)?)(\\})/,[\"regexp.escape.control\",\"regexp.escape.control\",\"regexp.escape.control\"]],[/(\\[)(\\^?)(?=(?:[^\\]\\\\\\/]|\\\\.)+)/,[\"regexp.escape.control\",{token:\"regexp.escape.control\",next:\"@regexrange\"}]],[/(\\()(\\?:|\\?=|\\?!)/,[\"regexp.escape.control\",\"regexp.escape.control\"]],[/[()]/,\"regexp.escape.control\"],[/@regexpctl/,\"regexp.escape.control\"],[/[^\\\\\\/]/,\"regexp\"],[/@regexpesc/,\"regexp.escape\"],[/\\\\\\./,\"regexp.invalid\"],[/(\\/)([dgimsuy]*)/,[{token:\"regexp\",bracket:\"@close\",next:\"@pop\"},\"keyword.other\"]]],regexrange:[[/-/,\"regexp.escape.control\"],[/\\^/,\"regexp.invalid\"],[/@regexpesc/,\"regexp.escape\"],[/[^\\]]/,\"regexp\"],[/\\]/,{token:\"regexp.escape.control\",next:\"@pop\",bracket:\"@close\"}]],string_double:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"]],string_single:[[/[^\\\\']+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/'/,\"string\",\"@pop\"]],string_backtick:[[/\\$\\{/,{token:\"delimiter.bracket\",next:\"@bracketCounting\"}],[/[^\\\\`$]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/`/,\"string\",\"@pop\"]],bracketCounting:[[/\\{/,\"delimiter.bracket\",\"@bracketCounting\"],[/\\}/,\"delimiter.bracket\",\"@pop\"],{include:\"common\"}]}};var $=m,T={defaultToken:\"invalid\",tokenPostfix:\".js\",keywords:[\"break\",\"case\",\"catch\",\"class\",\"continue\",\"const\",\"constructor\",\"debugger\",\"default\",\"delete\",\"do\",\"else\",\"export\",\"extends\",\"false\",\"finally\",\"for\",\"from\",\"function\",\"get\",\"if\",\"import\",\"in\",\"instanceof\",\"let\",\"new\",\"null\",\"return\",\"set\",\"static\",\"super\",\"switch\",\"symbol\",\"this\",\"throw\",\"true\",\"try\",\"typeof\",\"undefined\",\"var\",\"void\",\"while\",\"with\",\"yield\",\"async\",\"await\",\"of\"],typeKeywords:[],operators:o.operators,symbols:o.symbols,escapes:o.escapes,digits:o.digits,octaldigits:o.octaldigits,binarydigits:o.binarydigits,hexdigits:o.hexdigits,regexpctl:o.regexpctl,regexpesc:o.regexpesc,tokenizer:o.tokenizer};return v(_);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/julia/julia.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/julia/julia\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var n in e)o(t,n,{get:e[n],enumerable:!0})},l=(t,e,n,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let r of s(e))!p.call(t,r)&&r!==n&&o(t,r,{get:()=>e[r],enumerable:!(a=i(e,r))||a.enumerable});return t};var d=t=>l(o({},\"__esModule\",{value:!0}),t);var u={};c(u,{conf:()=>g,language:()=>m});var g={brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}]},m={tokenPostfix:\".julia\",keywords:[\"begin\",\"while\",\"if\",\"for\",\"try\",\"return\",\"break\",\"continue\",\"function\",\"macro\",\"quote\",\"let\",\"local\",\"global\",\"const\",\"do\",\"struct\",\"module\",\"baremodule\",\"using\",\"import\",\"export\",\"end\",\"else\",\"elseif\",\"catch\",\"finally\",\"mutable\",\"primitive\",\"abstract\",\"type\",\"in\",\"isa\",\"where\",\"new\"],types:[\"LinRange\",\"LineNumberNode\",\"LinearIndices\",\"LoadError\",\"MIME\",\"Matrix\",\"Method\",\"MethodError\",\"Missing\",\"MissingException\",\"Module\",\"NTuple\",\"NamedTuple\",\"Nothing\",\"Number\",\"OrdinalRange\",\"OutOfMemoryError\",\"OverflowError\",\"Pair\",\"PartialQuickSort\",\"PermutedDimsArray\",\"Pipe\",\"Ptr\",\"QuoteNode\",\"Rational\",\"RawFD\",\"ReadOnlyMemoryError\",\"Real\",\"ReentrantLock\",\"Ref\",\"Regex\",\"RegexMatch\",\"RoundingMode\",\"SegmentationFault\",\"Set\",\"Signed\",\"Some\",\"StackOverflowError\",\"StepRange\",\"StepRangeLen\",\"StridedArray\",\"StridedMatrix\",\"StridedVecOrMat\",\"StridedVector\",\"String\",\"StringIndexError\",\"SubArray\",\"SubString\",\"SubstitutionString\",\"Symbol\",\"SystemError\",\"Task\",\"Text\",\"TextDisplay\",\"Timer\",\"Tuple\",\"Type\",\"TypeError\",\"TypeVar\",\"UInt\",\"UInt128\",\"UInt16\",\"UInt32\",\"UInt64\",\"UInt8\",\"UndefInitializer\",\"AbstractArray\",\"UndefKeywordError\",\"AbstractChannel\",\"UndefRefError\",\"AbstractChar\",\"UndefVarError\",\"AbstractDict\",\"Union\",\"AbstractDisplay\",\"UnionAll\",\"AbstractFloat\",\"UnitRange\",\"AbstractIrrational\",\"Unsigned\",\"AbstractMatrix\",\"AbstractRange\",\"Val\",\"AbstractSet\",\"Vararg\",\"AbstractString\",\"VecElement\",\"AbstractUnitRange\",\"VecOrMat\",\"AbstractVecOrMat\",\"Vector\",\"AbstractVector\",\"VersionNumber\",\"Any\",\"WeakKeyDict\",\"ArgumentError\",\"WeakRef\",\"Array\",\"AssertionError\",\"BigFloat\",\"BigInt\",\"BitArray\",\"BitMatrix\",\"BitSet\",\"BitVector\",\"Bool\",\"BoundsError\",\"CapturedException\",\"CartesianIndex\",\"CartesianIndices\",\"Cchar\",\"Cdouble\",\"Cfloat\",\"Channel\",\"Char\",\"Cint\",\"Cintmax_t\",\"Clong\",\"Clonglong\",\"Cmd\",\"Colon\",\"Complex\",\"ComplexF16\",\"ComplexF32\",\"ComplexF64\",\"CompositeException\",\"Condition\",\"Cptrdiff_t\",\"Cshort\",\"Csize_t\",\"Cssize_t\",\"Cstring\",\"Cuchar\",\"Cuint\",\"Cuintmax_t\",\"Culong\",\"Culonglong\",\"Cushort\",\"Cvoid\",\"Cwchar_t\",\"Cwstring\",\"DataType\",\"DenseArray\",\"DenseMatrix\",\"DenseVecOrMat\",\"DenseVector\",\"Dict\",\"DimensionMismatch\",\"Dims\",\"DivideError\",\"DomainError\",\"EOFError\",\"Enum\",\"ErrorException\",\"Exception\",\"ExponentialBackOff\",\"Expr\",\"Float16\",\"Float32\",\"Float64\",\"Function\",\"GlobalRef\",\"HTML\",\"IO\",\"IOBuffer\",\"IOContext\",\"IOStream\",\"IdDict\",\"IndexCartesian\",\"IndexLinear\",\"IndexStyle\",\"InexactError\",\"InitError\",\"Int\",\"Int128\",\"Int16\",\"Int32\",\"Int64\",\"Int8\",\"Integer\",\"InterruptException\",\"InvalidStateException\",\"Irrational\",\"KeyError\"],keywordops:[\"<:\",\">:\",\":\",\"=>\",\"...\",\".\",\"->\",\"?\"],allops:/[^\\w\\d\\s()\\[\\]{}\"'#]+/,constants:[\"true\",\"false\",\"nothing\",\"missing\",\"undef\",\"Inf\",\"pi\",\"NaN\",\"\\u03C0\",\"\\u212F\",\"ans\",\"PROGRAM_FILE\",\"ARGS\",\"C_NULL\",\"VERSION\",\"DEPOT_PATH\",\"LOAD_PATH\"],operators:[\"!\",\"!=\",\"!==\",\"%\",\"&\",\"*\",\"+\",\"-\",\"/\",\"//\",\"<\",\"<<\",\"<=\",\"==\",\"===\",\"=>\",\">\",\">=\",\">>\",\">>>\",\"\\\\\",\"^\",\"|\",\"|>\",\"~\",\"\\xF7\",\"\\u2208\",\"\\u2209\",\"\\u220B\",\"\\u220C\",\"\\u2218\",\"\\u221A\",\"\\u221B\",\"\\u2229\",\"\\u222A\",\"\\u2248\",\"\\u2249\",\"\\u2260\",\"\\u2261\",\"\\u2262\",\"\\u2264\",\"\\u2265\",\"\\u2286\",\"\\u2287\",\"\\u2288\",\"\\u2289\",\"\\u228A\",\"\\u228B\",\"\\u22BB\"],brackets:[{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"}],ident:/π|ℯ|\\b(?!\\d)\\w+\\b/,escape:/(?:[abefnrstv\\\\\"'\\n\\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,escapes:/\\\\(?:C\\-(@escape|.)|c(@escape|.)|@escape)/,tokenizer:{root:[[/(::)\\s*|\\b(isa)\\s+/,\"keyword\",\"@typeanno\"],[/\\b(isa)(\\s*\\(@ident\\s*,\\s*)/,[\"keyword\",{token:\"\",next:\"@typeanno\"}]],[/\\b(type|struct)[ \\t]+/,\"keyword\",\"@typeanno\"],[/^\\s*:@ident[!?]?/,\"metatag\"],[/(return)(\\s*:@ident[!?]?)/,[\"keyword\",\"metatag\"]],[/(\\(|\\[|\\{|@allops)(\\s*:@ident[!?]?)/,[\"\",\"metatag\"]],[/:\\(/,\"metatag\",\"@quote\"],[/r\"\"\"/,\"regexp.delim\",\"@tregexp\"],[/r\"/,\"regexp.delim\",\"@sregexp\"],[/raw\"\"\"/,\"string.delim\",\"@rtstring\"],[/[bv]?\"\"\"/,\"string.delim\",\"@dtstring\"],[/raw\"/,\"string.delim\",\"@rsstring\"],[/[bv]?\"/,\"string.delim\",\"@dsstring\"],[/(@ident)\\{/,{cases:{\"$1@types\":{token:\"type\",next:\"@gen\"},\"@default\":{token:\"type\",next:\"@gen\"}}}],[/@ident[!?'']?(?=\\.?\\()/,{cases:{\"@types\":\"type\",\"@keywords\":\"keyword\",\"@constants\":\"variable\",\"@default\":\"keyword.flow\"}}],[/@ident[!?']?/,{cases:{\"@types\":\"type\",\"@keywords\":\"keyword\",\"@constants\":\"variable\",\"@default\":\"identifier\"}}],[/\\$\\w+/,\"key\"],[/\\$\\(/,\"key\",\"@paste\"],[/@@@ident/,\"annotation\"],{include:\"@whitespace\"},[/'(?:@escapes|.)'/,\"string.character\"],[/[()\\[\\]{}]/,\"@brackets\"],[/@allops/,{cases:{\"@keywordops\":\"keyword\",\"@operators\":\"operator\"}}],[/[;,]/,\"delimiter\"],[/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/,\"number.hex\"],[/0[_oO][0-7](_?[0-7])*/,\"number.octal\"],[/0[bB][01](_?[01])*/,\"number.binary\"],[/[+\\-]?\\d+(\\.\\d+)?(im?|[eE][+\\-]?\\d+(\\.\\d+)?)?/,\"number\"]],typeanno:[[/[a-zA-Z_]\\w*(?:\\.[a-zA-Z_]\\w*)*\\{/,\"type\",\"@gen\"],[/([a-zA-Z_]\\w*(?:\\.[a-zA-Z_]\\w*)*)(\\s*<:\\s*)/,[\"type\",\"keyword\"]],[/[a-zA-Z_]\\w*(?:\\.[a-zA-Z_]\\w*)*/,\"type\",\"@pop\"],[\"\",\"\",\"@pop\"]],gen:[[/[a-zA-Z_]\\w*(?:\\.[a-zA-Z_]\\w*)*\\{/,\"type\",\"@push\"],[/[a-zA-Z_]\\w*(?:\\.[a-zA-Z_]\\w*)*/,\"type\"],[/<:/,\"keyword\"],[/(\\})(\\s*<:\\s*)/,[\"type\",{token:\"keyword\",next:\"@pop\"}]],[/\\}/,\"type\",\"@pop\"],{include:\"@root\"}],quote:[[/\\$\\(/,\"key\",\"@paste\"],[/\\(/,\"@brackets\",\"@paren\"],[/\\)/,\"metatag\",\"@pop\"],{include:\"@root\"}],paste:[[/:\\(/,\"metatag\",\"@quote\"],[/\\(/,\"@brackets\",\"@paren\"],[/\\)/,\"key\",\"@pop\"],{include:\"@root\"}],paren:[[/\\$\\(/,\"key\",\"@paste\"],[/:\\(/,\"metatag\",\"@quote\"],[/\\(/,\"@brackets\",\"@push\"],[/\\)/,\"@brackets\",\"@pop\"],{include:\"@root\"}],sregexp:[[/^.*/,\"invalid\"],[/[^\\\\\"()\\[\\]{}]/,\"regexp\"],[/[()\\[\\]{}]/,\"@brackets\"],[/\\\\./,\"operator.scss\"],[/\"[imsx]*/,\"regexp.delim\",\"@pop\"]],tregexp:[[/[^\\\\\"()\\[\\]{}]/,\"regexp\"],[/[()\\[\\]{}]/,\"@brackets\"],[/\\\\./,\"operator.scss\"],[/\"(?!\"\")/,\"string\"],[/\"\"\"[imsx]*/,\"regexp.delim\",\"@pop\"]],rsstring:[[/^.*/,\"invalid\"],[/[^\\\\\"]/,\"string\"],[/\\\\./,\"string.escape\"],[/\"/,\"string.delim\",\"@pop\"]],rtstring:[[/[^\\\\\"]/,\"string\"],[/\\\\./,\"string.escape\"],[/\"(?!\"\")/,\"string\"],[/\"\"\"/,\"string.delim\",\"@pop\"]],dsstring:[[/^.*/,\"invalid\"],[/[^\\\\\"\\$]/,\"string\"],[/\\$/,\"\",\"@interpolated\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string.delim\",\"@pop\"]],dtstring:[[/[^\\\\\"\\$]/,\"string\"],[/\\$/,\"\",\"@interpolated\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"(?!\"\")/,\"string\"],[/\"\"\"/,\"string.delim\",\"@pop\"]],interpolated:[[/\\(/,{token:\"\",switchTo:\"@interpolated_compound\"}],[/[a-zA-Z_]\\w*/,\"identifier\"],[\"\",\"\",\"@pop\"]],interpolated_compound:[[/\\)/,\"\",\"@pop\"],{include:\"@root\"}],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/#=/,\"comment\",\"@multi_comment\"],[/#.*$/,\"comment\"]],multi_comment:[[/#=/,\"comment\",\"@push\"],[/=#/,\"comment\",\"@pop\"],[/=(?!#)|#(?!=)/,\"comment\"],[/[^#=]+/,\"comment\"]]}};return d(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/kotlin/kotlin.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/kotlin/kotlin\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var o=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(n,e)=>{for(var i in e)o(n,i,{get:e[i],enumerable:!0})},d=(n,e,i,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of r(e))!c.call(n,t)&&t!==i&&o(n,t,{get:()=>e[t],enumerable:!(s=a(e,t))||s.enumerable});return n};var g=n=>d(o({},\"__esModule\",{value:!0}),n);var f={};l(f,{conf:()=>m,language:()=>p});var m={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"<\",close:\">\"}],folding:{markers:{start:new RegExp(\"^\\\\s*//\\\\s*(?:(?:#?region\\\\b)|(?:<editor-fold\\\\b))\"),end:new RegExp(\"^\\\\s*//\\\\s*(?:(?:#?endregion\\\\b)|(?:</editor-fold>))\")}}},p={defaultToken:\"\",tokenPostfix:\".kt\",keywords:[\"as\",\"as?\",\"break\",\"class\",\"continue\",\"do\",\"else\",\"false\",\"for\",\"fun\",\"if\",\"in\",\"!in\",\"interface\",\"is\",\"!is\",\"null\",\"object\",\"package\",\"return\",\"super\",\"this\",\"throw\",\"true\",\"try\",\"typealias\",\"val\",\"var\",\"when\",\"while\",\"by\",\"catch\",\"constructor\",\"delegate\",\"dynamic\",\"field\",\"file\",\"finally\",\"get\",\"import\",\"init\",\"param\",\"property\",\"receiver\",\"set\",\"setparam\",\"where\",\"actual\",\"abstract\",\"annotation\",\"companion\",\"const\",\"crossinline\",\"data\",\"enum\",\"expect\",\"external\",\"final\",\"infix\",\"inline\",\"inner\",\"internal\",\"lateinit\",\"noinline\",\"open\",\"operator\",\"out\",\"override\",\"private\",\"protected\",\"public\",\"reified\",\"sealed\",\"suspend\",\"tailrec\",\"vararg\",\"field\",\"it\"],operators:[\"+\",\"-\",\"*\",\"/\",\"%\",\"=\",\"+=\",\"-=\",\"*=\",\"/=\",\"%=\",\"++\",\"--\",\"&&\",\"||\",\"!\",\"==\",\"!=\",\"===\",\"!==\",\">\",\"<\",\"<=\",\">=\",\"[\",\"]\",\"!!\",\"?.\",\"?:\",\"::\",\"..\",\":\",\"?\",\"->\",\"@\",\";\",\"$\",\"_\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\\d+(_+\\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,tokenizer:{root:[[/[A-Z][\\w\\$]*/,\"type.identifier\"],[/[a-zA-Z_$][\\w$]*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/@\\s*[a-zA-Z_\\$][\\w\\$]*/,\"annotation\"],[/(@digits)[eE]([\\-+]?(@digits))?[fFdD]?/,\"number.float\"],[/(@digits)\\.(@digits)([eE][\\-+]?(@digits))?[fFdD]?/,\"number.float\"],[/0[xX](@hexdigits)[Ll]?/,\"number.hex\"],[/0(@octaldigits)[Ll]?/,\"number.octal\"],[/0[bB](@binarydigits)[Ll]?/,\"number.binary\"],[/(@digits)[fFdD]/,\"number.float\"],[/(@digits)[lL]?/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"\"\"/,\"string\",\"@multistring\"],[/\"/,\"string\",\"@string\"],[/'[^\\\\']'/,\"string\"],[/(')(@escapes)(')/,[\"string\",\"string.escape\",\"string\"]],[/'/,\"string.invalid\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*\\*(?!\\/)/,\"comment.doc\",\"@javadoc\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],javadoc:[[/[^\\/*]+/,\"comment.doc\"],[/\\/\\*/,\"comment.doc\",\"@push\"],[/\\/\\*/,\"comment.doc.invalid\"],[/\\*\\//,\"comment.doc\",\"@pop\"],[/[\\/*]/,\"comment.doc\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"]],multistring:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"\"\"/,\"string\",\"@pop\"],[/./,\"string\"]]}};return g(f);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/less/less.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/less/less\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var d=(t,e)=>{for(var i in e)r(t,i,{get:e[i],enumerable:!0})},u=(t,e,i,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of a(e))!l.call(t,n)&&n!==i&&r(t,n,{get:()=>e[n],enumerable:!(o=s(e,n))||o.enumerable});return t};var c=t=>u(r({},\"__esModule\",{value:!0}),t);var p={};d(p,{conf:()=>m,language:()=>g});var m={wordPattern:/(#?-?\\d*\\.\\d\\w*%?)|([@#!.:]?[\\w-?]+%?)|[@#!.]/g,comments:{blockComment:[\"/*\",\"*/\"],lineComment:\"//\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\",notIn:[\"string\",\"comment\"]},{open:\"[\",close:\"]\",notIn:[\"string\",\"comment\"]},{open:\"(\",close:\")\",notIn:[\"string\",\"comment\"]},{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],folding:{markers:{start:new RegExp(\"^\\\\s*\\\\/\\\\*\\\\s*#region\\\\b\\\\s*(.*?)\\\\s*\\\\*\\\\/\"),end:new RegExp(\"^\\\\s*\\\\/\\\\*\\\\s*#endregion\\\\b.*\\\\*\\\\/\")}}},g={defaultToken:\"\",tokenPostfix:\".less\",identifier:\"-?-?([a-zA-Z]|(\\\\\\\\(([0-9a-fA-F]{1,6}\\\\s?)|[^[0-9a-fA-F])))([\\\\w\\\\-]|(\\\\\\\\(([0-9a-fA-F]{1,6}\\\\s?)|[^[0-9a-fA-F])))*\",identifierPlus:\"-?-?([a-zA-Z:.]|(\\\\\\\\(([0-9a-fA-F]{1,6}\\\\s?)|[^[0-9a-fA-F])))([\\\\w\\\\-:.]|(\\\\\\\\(([0-9a-fA-F]{1,6}\\\\s?)|[^[0-9a-fA-F])))*\",brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.bracket\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}],tokenizer:{root:[{include:\"@nestedJSBegin\"},[\"[ \\\\t\\\\r\\\\n]+\",\"\"],{include:\"@comments\"},{include:\"@keyword\"},{include:\"@strings\"},{include:\"@numbers\"},[\"[*_]?[a-zA-Z\\\\-\\\\s]+(?=:.*(;|(\\\\\\\\$)))\",\"attribute.name\",\"@attribute\"],[\"url(\\\\-prefix)?\\\\(\",{token:\"tag\",next:\"@urldeclaration\"}],[\"[{}()\\\\[\\\\]]\",\"@brackets\"],[\"[,:;]\",\"delimiter\"],[\"#@identifierPlus\",\"tag.id\"],[\"&\",\"tag\"],[\"\\\\.@identifierPlus(?=\\\\()\",\"tag.class\",\"@attribute\"],[\"\\\\.@identifierPlus\",\"tag.class\"],[\"@identifierPlus\",\"tag\"],{include:\"@operators\"},[\"@(@identifier(?=[:,\\\\)]))\",\"variable\",\"@attribute\"],[\"@(@identifier)\",\"variable\"],[\"@\",\"key\",\"@atRules\"]],nestedJSBegin:[[\"``\",\"delimiter.backtick\"],[\"`\",{token:\"delimiter.backtick\",next:\"@nestedJSEnd\",nextEmbedded:\"text/javascript\"}]],nestedJSEnd:[[\"`\",{token:\"delimiter.backtick\",next:\"@pop\",nextEmbedded:\"@pop\"}]],operators:[[\"[<>=\\\\+\\\\-\\\\*\\\\/\\\\^\\\\|\\\\~]\",\"operator\"]],keyword:[[\"(@[\\\\s]*import|![\\\\s]*important|true|false|when|iscolor|isnumber|isstring|iskeyword|isurl|ispixel|ispercentage|isem|hue|saturation|lightness|alpha|lighten|darken|saturate|desaturate|fadein|fadeout|fade|spin|mix|round|ceil|floor|percentage)\\\\b\",\"keyword\"]],urldeclaration:[{include:\"@strings\"},[`[^)\\r\n]+`,\"string\"],[\"\\\\)\",{token:\"tag\",next:\"@pop\"}]],attribute:[{include:\"@nestedJSBegin\"},{include:\"@comments\"},{include:\"@strings\"},{include:\"@numbers\"},{include:\"@keyword\"},[\"[a-zA-Z\\\\-]+(?=\\\\()\",\"attribute.value\",\"@attribute\"],[\">\",\"operator\",\"@pop\"],[\"@identifier\",\"attribute.value\"],{include:\"@operators\"},[\"@(@identifier)\",\"variable\"],[\"[)\\\\}]\",\"@brackets\",\"@pop\"],[\"[{}()\\\\[\\\\]>]\",\"@brackets\"],[\"[;]\",\"delimiter\",\"@pop\"],[\"[,=:]\",\"delimiter\"],[\"\\\\s\",\"\"],[\".\",\"attribute.value\"]],comments:[[\"\\\\/\\\\*\",\"comment\",\"@comment\"],[\"\\\\/\\\\/+.*\",\"comment\"]],comment:[[\"\\\\*\\\\/\",\"comment\",\"@pop\"],[\".\",\"comment\"]],numbers:[[\"(\\\\d*\\\\.)?\\\\d+([eE][\\\\-+]?\\\\d+)?\",{token:\"attribute.value.number\",next:\"@units\"}],[\"#[0-9a-fA-F_]+(?!\\\\w)\",\"attribute.value.hex\"]],units:[[\"(em|ex|ch|rem|fr|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?\",\"attribute.value.unit\",\"@pop\"]],strings:[['~?\"',{token:\"string.delimiter\",next:\"@stringsEndDoubleQuote\"}],[\"~?'\",{token:\"string.delimiter\",next:\"@stringsEndQuote\"}]],stringsEndDoubleQuote:[['\\\\\\\\\"',\"string\"],['\"',{token:\"string.delimiter\",next:\"@popall\"}],[\".\",\"string\"]],stringsEndQuote:[[\"\\\\\\\\'\",\"string\"],[\"'\",{token:\"string.delimiter\",next:\"@popall\"}],[\".\",\"string\"]],atRules:[{include:\"@comments\"},{include:\"@strings\"},[\"[()]\",\"delimiter\"],[\"[\\\\{;]\",\"delimiter\",\"@pop\"],[\".\",\"key\"]]}};return c(p);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/lexon/lexon.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/lexon/lexon\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var n=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var i in e)n(t,i,{get:e[i],enumerable:!0})},p=(t,e,i,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let o of d(e))!a.call(t,o)&&o!==i&&n(t,o,{get:()=>e[o],enumerable:!(r=s(e,o))||r.enumerable});return t};var c=t=>p(n({},\"__esModule\",{value:!0}),t);var k={};l(k,{conf:()=>m,language:()=>u});var m={comments:{lineComment:\"COMMENT\"},brackets:[[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\":\",close:\".\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"`\",close:\"`\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\":\",close:\".\"}],folding:{markers:{start:new RegExp(\"^\\\\s*(::\\\\s*|COMMENT\\\\s+)#region\"),end:new RegExp(\"^\\\\s*(::\\\\s*|COMMENT\\\\s+)#endregion\")}}},u={tokenPostfix:\".lexon\",ignoreCase:!0,keywords:[\"lexon\",\"lex\",\"clause\",\"terms\",\"contracts\",\"may\",\"pay\",\"pays\",\"appoints\",\"into\",\"to\"],typeKeywords:[\"amount\",\"person\",\"key\",\"time\",\"date\",\"asset\",\"text\"],operators:[\"less\",\"greater\",\"equal\",\"le\",\"gt\",\"or\",\"and\",\"add\",\"added\",\"subtract\",\"subtracted\",\"multiply\",\"multiplied\",\"times\",\"divide\",\"divided\",\"is\",\"be\",\"certified\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,tokenizer:{root:[[/^(\\s*)(comment:?(?:\\s.*|))$/,[\"\",\"comment\"]],[/\"/,{token:\"identifier.quote\",bracket:\"@open\",next:\"@quoted_identifier\"}],[\"LEX$\",{token:\"keyword\",bracket:\"@open\",next:\"@identifier_until_period\"}],[\"LEXON\",{token:\"keyword\",bracket:\"@open\",next:\"@semver\"}],[\":\",{token:\"delimiter\",bracket:\"@open\",next:\"@identifier_until_period\"}],[/[a-z_$][\\w$]*/,{cases:{\"@operators\":\"operator\",\"@typeKeywords\":\"keyword.type\",\"@keywords\":\"keyword\",\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,\"delimiter\"],[/\\d*\\.\\d*\\.\\d*/,\"number.semver\"],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/0[xX][0-9a-fA-F]+/,\"number.hex\"],[/\\d+/,\"number\"],[/[;,.]/,\"delimiter\"]],quoted_identifier:[[/[^\\\\\"]+/,\"identifier\"],[/\"/,{token:\"identifier.quote\",bracket:\"@close\",next:\"@pop\"}]],space_identifier_until_period:[[\":\",\"delimiter\"],[\" \",{token:\"white\",next:\"@identifier_rest\"}]],identifier_until_period:[{include:\"@whitespace\"},[\":\",{token:\"delimiter\",next:\"@identifier_rest\"}],[/[^\\\\.]+/,\"identifier\"],[/\\./,{token:\"delimiter\",bracket:\"@close\",next:\"@pop\"}]],identifier_rest:[[/[^\\\\.]+/,\"identifier\"],[/\\./,{token:\"delimiter\",bracket:\"@close\",next:\"@pop\"}]],semver:[{include:\"@whitespace\"},[\":\",\"delimiter\"],[/\\d*\\.\\d*\\.\\d*/,{token:\"number.semver\",bracket:\"@close\",next:\"@pop\"}]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"]]}};return c(k);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/liquid/liquid.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/liquid/liquid\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var p=Object.create;var a=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var f=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(t,i)=>(typeof require!=\"undefined\"?require:t)[i]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var b=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),T=(e,t)=>{for(var i in t)a(e,i,{get:t[i],enumerable:!0})},r=(e,t,i,l)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let o of w(t))!q.call(e,o)&&o!==i&&a(e,o,{get:()=>t[o],enumerable:!(l=g(t,o))||l.enumerable});return e},d=(e,t,i)=>(r(e,t,\"default\"),i&&r(i,t,\"default\")),s=(e,t,i)=>(i=e!=null?p(h(e)):{},r(t||!e||!e.__esModule?a(i,\"default\",{value:e,enumerable:!0}):i,e)),k=e=>r(a({},\"__esModule\",{value:!0}),e);var c=b((y,u)=>{var _=s(f(\"vs/editor/editor.api\"));u.exports=_});var $={};T($,{conf:()=>x,language:()=>S});var n={};d(n,s(c()));var m=[\"area\",\"base\",\"br\",\"col\",\"embed\",\"hr\",\"img\",\"input\",\"keygen\",\"link\",\"menuitem\",\"meta\",\"param\",\"source\",\"track\",\"wbr\"],x={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\$\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\s]+)/g,brackets:[[\"<!--\",\"-->\"],[\"<\",\">\"],[\"{{\",\"}}\"],[\"{%\",\"%}\"],[\"{\",\"}\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"%\",close:\"%\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"<\",close:\">\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],onEnterRules:[{beforeText:new RegExp(`<(?!(?:${m.join(\"|\")}))(\\\\w[\\\\w\\\\d]*)([^/>]*(?!/)>)[^<]*$`,\"i\"),afterText:/^<\\/(\\w[\\w\\d]*)\\s*>$/i,action:{indentAction:n.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(`<(?!(?:${m.join(\"|\")}))(\\\\w[\\\\w\\\\d]*)([^/>]*(?!/)>)[^<]*$`,\"i\"),action:{indentAction:n.languages.IndentAction.Indent}}]},S={defaultToken:\"\",tokenPostfix:\"\",builtinTags:[\"if\",\"else\",\"elseif\",\"endif\",\"render\",\"assign\",\"capture\",\"endcapture\",\"case\",\"endcase\",\"comment\",\"endcomment\",\"cycle\",\"decrement\",\"for\",\"endfor\",\"include\",\"increment\",\"layout\",\"raw\",\"endraw\",\"render\",\"tablerow\",\"endtablerow\",\"unless\",\"endunless\"],builtinFilters:[\"abs\",\"append\",\"at_least\",\"at_most\",\"capitalize\",\"ceil\",\"compact\",\"date\",\"default\",\"divided_by\",\"downcase\",\"escape\",\"escape_once\",\"first\",\"floor\",\"join\",\"json\",\"last\",\"lstrip\",\"map\",\"minus\",\"modulo\",\"newline_to_br\",\"plus\",\"prepend\",\"remove\",\"remove_first\",\"replace\",\"replace_first\",\"reverse\",\"round\",\"rstrip\",\"size\",\"slice\",\"sort\",\"sort_natural\",\"split\",\"strip\",\"strip_html\",\"strip_newlines\",\"times\",\"truncate\",\"truncatewords\",\"uniq\",\"upcase\",\"url_decode\",\"url_encode\",\"where\"],constants:[\"true\",\"false\"],operators:[\"==\",\"!=\",\">\",\"<\",\">=\",\"<=\"],symbol:/[=><!]+/,identifier:/[a-zA-Z_][\\w]*/,tokenizer:{root:[[/\\{\\%\\s*comment\\s*\\%\\}/,\"comment.start.liquid\",\"@comment\"],[/\\{\\{/,{token:\"@rematch\",switchTo:\"@liquidState.root\"}],[/\\{\\%/,{token:\"@rematch\",switchTo:\"@liquidState.root\"}],[/(<)([\\w\\-]+)(\\/>)/,[\"delimiter.html\",\"tag.html\",\"delimiter.html\"]],[/(<)([:\\w]+)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@otherTag\"}]],[/(<\\/)([\\w\\-]+)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@otherTag\"}]],[/</,\"delimiter.html\"],[/\\{/,\"delimiter.html\"],[/[^<{]+/]],comment:[[/\\{\\%\\s*endcomment\\s*\\%\\}/,\"comment.end.liquid\",\"@pop\"],[/./,\"comment.content.liquid\"]],otherTag:[[/\\{\\{/,{token:\"@rematch\",switchTo:\"@liquidState.otherTag\"}],[/\\{\\%/,{token:\"@rematch\",switchTo:\"@liquidState.otherTag\"}],[/\\/?>/,\"delimiter.html\",\"@pop\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/]],liquidState:[[/\\{\\{/,\"delimiter.output.liquid\"],[/\\}\\}/,{token:\"delimiter.output.liquid\",switchTo:\"@$S2.$S3\"}],[/\\{\\%/,\"delimiter.tag.liquid\"],[/raw\\s*\\%\\}/,\"delimiter.tag.liquid\",\"@liquidRaw\"],[/\\%\\}/,{token:\"delimiter.tag.liquid\",switchTo:\"@$S2.$S3\"}],{include:\"liquidRoot\"}],liquidRaw:[[/^(?!\\{\\%\\s*endraw\\s*\\%\\}).+/],[/\\{\\%/,\"delimiter.tag.liquid\"],[/@identifier/],[/\\%\\}/,{token:\"delimiter.tag.liquid\",next:\"@root\"}]],liquidRoot:[[/\\d+(\\.\\d+)?/,\"number.liquid\"],[/\"[^\"]*\"/,\"string.liquid\"],[/'[^']*'/,\"string.liquid\"],[/\\s+/],[/@symbol/,{cases:{\"@operators\":\"operator.liquid\",\"@default\":\"\"}}],[/\\./],[/@identifier/,{cases:{\"@constants\":\"keyword.liquid\",\"@builtinFilters\":\"predefined.liquid\",\"@builtinTags\":\"predefined.liquid\",\"@default\":\"variable.liquid\"}}],[/[^}|%]/,\"variable.liquid\"]]}};return k($);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/lua/lua.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/lua/lua\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var t in e)s(o,t,{get:e[t],enumerable:!0})},m=(o,e,t,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of i(e))!l.call(o,n)&&n!==t&&s(o,n,{get:()=>e[n],enumerable:!(r=a(e,n))||r.enumerable});return o};var p=o=>m(s({},\"__esModule\",{value:!0}),o);var u={};c(u,{conf:()=>d,language:()=>g});var d={comments:{lineComment:\"--\",blockComment:[\"--[[\",\"]]\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}]},g={defaultToken:\"\",tokenPostfix:\".lua\",keywords:[\"and\",\"break\",\"do\",\"else\",\"elseif\",\"end\",\"false\",\"for\",\"function\",\"goto\",\"if\",\"in\",\"local\",\"nil\",\"not\",\"or\",\"repeat\",\"return\",\"then\",\"true\",\"until\",\"while\"],brackets:[{token:\"delimiter.bracket\",open:\"{\",close:\"}\"},{token:\"delimiter.array\",open:\"[\",close:\"]\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"}],operators:[\"+\",\"-\",\"*\",\"/\",\"%\",\"^\",\"#\",\"==\",\"~=\",\"<=\",\">=\",\"<\",\">\",\"=\",\";\",\":\",\",\",\".\",\"..\",\"...\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_]\\w*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/(,)(\\s*)([a-zA-Z_]\\w*)(\\s*)(:)(?!:)/,[\"delimiter\",\"\",\"key\",\"\",\"delimiter\"]],[/({)(\\s*)([a-zA-Z_]\\w*)(\\s*)(:)(?!:)/,[\"@brackets\",\"\",\"key\",\"\",\"delimiter\"]],[/[{}()\\[\\]]/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,\"number.hex\"],[/\\d+?/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/'([^'\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",'@string.\"'],[/'/,\"string\",\"@string.'\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/--\\[([=]*)\\[/,\"comment\",\"@comment.$1\"],[/--.*$/,\"comment\"]],comment:[[/[^\\]]+/,\"comment\"],[/\\]([=]*)\\]/,{cases:{\"$1==$S2\":{token:\"comment\",next:\"@pop\"},\"@default\":\"comment\"}}],[/./,\"comment\"]],string:[[/[^\\\\\"']+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/[\"']/,{cases:{\"$#==$S2\":{token:\"string\",next:\"@pop\"},\"@default\":\"string\"}}]]}};return p(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/m3/m3.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/m3/m3\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var R=(o,e)=>{for(var s in e)r(o,s,{get:e[s],enumerable:!0})},c=(o,e,s,n)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of a(e))!i.call(o,t)&&t!==s&&r(o,t,{get:()=>e[t],enumerable:!(n=E(e,t))||n.enumerable});return o};var m=o=>c(r({},\"__esModule\",{value:!0}),o);var N={};R(N,{conf:()=>A,language:()=>p});var A={comments:{blockComment:[\"(*\",\"*)\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"[\",close:\"]\"},{open:\"{\",close:\"}\"},{open:\"(\",close:\")\"},{open:\"(*\",close:\"*)\"},{open:\"<*\",close:\"*>\"},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]},{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]}]},p={defaultToken:\"\",tokenPostfix:\".m3\",brackets:[{token:\"delimiter.curly\",open:\"{\",close:\"}\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"},{token:\"delimiter.square\",open:\"[\",close:\"]\"}],keywords:[\"AND\",\"ANY\",\"ARRAY\",\"AS\",\"BEGIN\",\"BITS\",\"BRANDED\",\"BY\",\"CASE\",\"CONST\",\"DIV\",\"DO\",\"ELSE\",\"ELSIF\",\"END\",\"EVAL\",\"EXCEPT\",\"EXCEPTION\",\"EXIT\",\"EXPORTS\",\"FINALLY\",\"FOR\",\"FROM\",\"GENERIC\",\"IF\",\"IMPORT\",\"IN\",\"INTERFACE\",\"LOCK\",\"LOOP\",\"METHODS\",\"MOD\",\"MODULE\",\"NOT\",\"OBJECT\",\"OF\",\"OR\",\"OVERRIDES\",\"PROCEDURE\",\"RAISE\",\"RAISES\",\"READONLY\",\"RECORD\",\"REF\",\"REPEAT\",\"RETURN\",\"REVEAL\",\"SET\",\"THEN\",\"TO\",\"TRY\",\"TYPE\",\"TYPECASE\",\"UNSAFE\",\"UNTIL\",\"UNTRACED\",\"VALUE\",\"VAR\",\"WHILE\",\"WITH\"],reservedConstNames:[\"ABS\",\"ADR\",\"ADRSIZE\",\"BITSIZE\",\"BYTESIZE\",\"CEILING\",\"DEC\",\"DISPOSE\",\"FALSE\",\"FIRST\",\"FLOAT\",\"FLOOR\",\"INC\",\"ISTYPE\",\"LAST\",\"LOOPHOLE\",\"MAX\",\"MIN\",\"NARROW\",\"NEW\",\"NIL\",\"NUMBER\",\"ORD\",\"ROUND\",\"SUBARRAY\",\"TRUE\",\"TRUNC\",\"TYPECODE\",\"VAL\"],reservedTypeNames:[\"ADDRESS\",\"ANY\",\"BOOLEAN\",\"CARDINAL\",\"CHAR\",\"EXTENDED\",\"INTEGER\",\"LONGCARD\",\"LONGINT\",\"LONGREAL\",\"MUTEX\",\"NULL\",\"REAL\",\"REFANY\",\"ROOT\",\"TEXT\"],operators:[\"+\",\"-\",\"*\",\"/\",\"&\",\"^\",\".\"],relations:[\"=\",\"#\",\"<\",\"<=\",\">\",\">=\",\"<:\",\":\"],delimiters:[\"|\",\"..\",\"=>\",\",\",\";\",\":=\"],symbols:/[>=<#.,:;+\\-*/&^]+/,escapes:/\\\\(?:[\\\\fnrt\"']|[0-7]{3})/,tokenizer:{root:[[/_\\w*/,\"invalid\"],[/[a-zA-Z][a-zA-Z0-9_]*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@reservedConstNames\":{token:\"constant.reserved.$0\"},\"@reservedTypeNames\":{token:\"type.reserved.$0\"},\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/[0-9]+\\.[0-9]+(?:[DdEeXx][\\+\\-]?[0-9]+)?/,\"number.float\"],[/[0-9]+(?:\\_[0-9a-fA-F]+)?L?/,\"number\"],[/@symbols/,{cases:{\"@operators\":\"operators\",\"@relations\":\"operators\",\"@delimiters\":\"delimiter\",\"@default\":\"invalid\"}}],[/'[^\\\\']'/,\"string.char\"],[/(')(@escapes)(')/,[\"string.char\",\"string.escape\",\"string.char\"]],[/'/,\"invalid\"],[/\"([^\"\\\\]|\\\\.)*$/,\"invalid\"],[/\"/,\"string.text\",\"@text\"]],text:[[/[^\\\\\"]+/,\"string.text\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"invalid\"],[/\"/,\"string.text\",\"@pop\"]],comment:[[/\\(\\*/,\"comment\",\"@push\"],[/\\*\\)/,\"comment\",\"@pop\"],[/./,\"comment\"]],pragma:[[/<\\*/,\"keyword.pragma\",\"@push\"],[/\\*>/,\"keyword.pragma\",\"@pop\"],[/./,\"keyword.pragma\"]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"],[/\\(\\*/,\"comment\",\"@comment\"],[/<\\*/,\"keyword.pragma\",\"@pragma\"]]}};return m(N);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/markdown/markdown.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/markdown/markdown\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},m=(t,e,o,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of c(e))!i.call(t,n)&&n!==o&&s(t,n,{get:()=>e[n],enumerable:!(a=r(e,n))||a.enumerable});return t};var d=t=>m(s({},\"__esModule\",{value:!0}),t);var b={};l(b,{conf:()=>p,language:()=>g});var p={comments:{blockComment:[\"<!--\",\"-->\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\",notIn:[\"string\"]}],surroundingPairs:[{open:\"(\",close:\")\"},{open:\"[\",close:\"]\"},{open:\"`\",close:\"`\"}],folding:{markers:{start:new RegExp(\"^\\\\s*<!--\\\\s*#?region\\\\b.*-->\"),end:new RegExp(\"^\\\\s*<!--\\\\s*#?endregion\\\\b.*-->\")}}},g={defaultToken:\"\",tokenPostfix:\".md\",control:/[\\\\`*_\\[\\]{}()#+\\-\\.!]/,noncontrol:/[^\\\\`*_\\[\\]{}()#+\\-\\.!]/,escapes:/\\\\(?:@control)/,jsescapes:/\\\\(?:[btnfr\\\\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,empty:[\"area\",\"base\",\"basefont\",\"br\",\"col\",\"frame\",\"hr\",\"img\",\"input\",\"isindex\",\"link\",\"meta\",\"param\"],tokenizer:{root:[[/^\\s*\\|/,\"@rematch\",\"@table_header\"],[/^(\\s{0,3})(#+)((?:[^\\\\#]|@escapes)+)((?:#+)?)/,[\"white\",\"keyword\",\"keyword\",\"keyword\"]],[/^\\s*(=+|\\-+)\\s*$/,\"keyword\"],[/^\\s*((\\*[ ]?)+)\\s*$/,\"meta.separator\"],[/^\\s*>+/,\"comment\"],[/^\\s*([\\*\\-+:]|\\d+\\.)\\s/,\"keyword\"],[/^(\\t|[ ]{4})[^ ].*$/,\"string\"],[/^\\s*~~~\\s*((?:\\w|[\\/\\-#])+)?\\s*$/,{token:\"string\",next:\"@codeblock\"}],[/^\\s*```\\s*((?:\\w|[\\/\\-#])+).*$/,{token:\"string\",next:\"@codeblockgh\",nextEmbedded:\"$1\"}],[/^\\s*```\\s*$/,{token:\"string\",next:\"@codeblock\"}],{include:\"@linecontent\"}],table_header:[{include:\"@table_common\"},[/[^\\|]+/,\"keyword.table.header\"]],table_body:[{include:\"@table_common\"},{include:\"@linecontent\"}],table_common:[[/\\s*[\\-:]+\\s*/,{token:\"keyword\",switchTo:\"table_body\"}],[/^\\s*\\|/,\"keyword.table.left\"],[/^\\s*[^\\|]/,\"@rematch\",\"@pop\"],[/^\\s*$/,\"@rematch\",\"@pop\"],[/\\|/,{cases:{\"@eos\":\"keyword.table.right\",\"@default\":\"keyword.table.middle\"}}]],codeblock:[[/^\\s*~~~\\s*$/,{token:\"string\",next:\"@pop\"}],[/^\\s*```\\s*$/,{token:\"string\",next:\"@pop\"}],[/.*$/,\"variable.source\"]],codeblockgh:[[/```\\s*$/,{token:\"string\",next:\"@pop\",nextEmbedded:\"@pop\"}],[/[^`]+/,\"variable.source\"]],linecontent:[[/&\\w+;/,\"string.escape\"],[/@escapes/,\"escape\"],[/\\b__([^\\\\_]|@escapes|_(?!_))+__\\b/,\"strong\"],[/\\*\\*([^\\\\*]|@escapes|\\*(?!\\*))+\\*\\*/,\"strong\"],[/\\b_[^_]+_\\b/,\"emphasis\"],[/\\*([^\\\\*]|@escapes)+\\*/,\"emphasis\"],[/`([^\\\\`]|@escapes)+`/,\"variable\"],[/\\{+[^}]+\\}+/,\"string.target\"],[/(!?\\[)((?:[^\\]\\\\]|@escapes)*)(\\]\\([^\\)]+\\))/,[\"string.link\",\"\",\"string.link\"]],[/(!?\\[)((?:[^\\]\\\\]|@escapes)*)(\\])/,\"string.link\"],{include:\"html\"}],html:[[/<(\\w+)\\/>/,\"tag\"],[/<(\\w+)(\\-|\\w)*/,{cases:{\"@empty\":{token:\"tag\",next:\"@tag.$1\"},\"@default\":{token:\"tag\",next:\"@tag.$1\"}}}],[/<\\/(\\w+)(\\-|\\w)*\\s*>/,{token:\"tag\"}],[/<!--/,\"comment\",\"@comment\"]],comment:[[/[^<\\-]+/,\"comment.content\"],[/-->/,\"comment\",\"@pop\"],[/<!--/,\"comment.content.invalid\"],[/[<\\-]/,\"comment.content\"]],tag:[[/[ \\t\\r\\n]+/,\"white\"],[/(type)(\\s*=\\s*)(\")([^\"]+)(\")/,[\"attribute.name.html\",\"delimiter.html\",\"string.html\",{token:\"string.html\",switchTo:\"@tag.$S2.$4\"},\"string.html\"]],[/(type)(\\s*=\\s*)(')([^']+)(')/,[\"attribute.name.html\",\"delimiter.html\",\"string.html\",{token:\"string.html\",switchTo:\"@tag.$S2.$4\"},\"string.html\"]],[/(\\w+)(\\s*=\\s*)(\"[^\"]*\"|'[^']*')/,[\"attribute.name.html\",\"delimiter.html\",\"string.html\"]],[/\\w+/,\"attribute.name.html\"],[/\\/>/,\"tag\",\"@pop\"],[/>/,{cases:{\"$S2==style\":{token:\"tag\",switchTo:\"embeddedStyle\",nextEmbedded:\"text/css\"},\"$S2==script\":{cases:{$S3:{token:\"tag\",switchTo:\"embeddedScript\",nextEmbedded:\"$S3\"},\"@default\":{token:\"tag\",switchTo:\"embeddedScript\",nextEmbedded:\"text/javascript\"}}},\"@default\":{token:\"tag\",next:\"@pop\"}}}]],embeddedStyle:[[/[^<]+/,\"\"],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}],[/</,\"\"]],embeddedScript:[[/[^<]+/,\"\"],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}],[/</,\"\"]]}};return d(b);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/mdx/mdx.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/mdx/mdx\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var x=Object.create;var r=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var h=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(t,n)=>(typeof require!=\"undefined\"?require:t)[n]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var f=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),u=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},s=(e,t,n,d)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let i of l(t))!g.call(e,i)&&i!==n&&r(e,i,{get:()=>t[i],enumerable:!(d=m(t,i))||d.enumerable});return e},c=(e,t,n)=>(s(e,t,\"default\"),n&&s(n,t,\"default\")),p=(e,t,n)=>(n=e!=null?x(b(e)):{},s(t||!e||!e.__esModule?r(n,\"default\",{value:e,enumerable:!0}):n,e)),w=e=>s(r({},\"__esModule\",{value:!0}),e);var k=f((T,a)=>{var $=p(h(\"vs/editor/editor.api\"));a.exports=$});var A={};u(A,{conf:()=>_,language:()=>y});var o={};c(o,p(k()));var _={comments:{blockComment:[\"{/*\",\"*/}\"]},brackets:[[\"{\",\"}\"]],autoClosingPairs:[{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"\\u201C\",close:\"\\u201D\"},{open:\"\\u2018\",close:\"\\u2019\"},{open:\"`\",close:\"`\"},{open:\"{\",close:\"}\"},{open:\"(\",close:\")\"},{open:\"_\",close:\"_\"},{open:\"**\",close:\"**\"},{open:\"<\",close:\">\"}],onEnterRules:[{beforeText:/^\\s*- .+/,action:{indentAction:o.languages.IndentAction.None,appendText:\"- \"}},{beforeText:/^\\s*\\+ .+/,action:{indentAction:o.languages.IndentAction.None,appendText:\"+ \"}},{beforeText:/^\\s*\\* .+/,action:{indentAction:o.languages.IndentAction.None,appendText:\"* \"}},{beforeText:/^> /,action:{indentAction:o.languages.IndentAction.None,appendText:\"> \"}},{beforeText:/<\\w+/,action:{indentAction:o.languages.IndentAction.Indent}},{beforeText:/\\s+>\\s*$/,action:{indentAction:o.languages.IndentAction.Indent}},{beforeText:/<\\/\\w+>/,action:{indentAction:o.languages.IndentAction.Outdent}},...Array.from({length:100},(e,t)=>({beforeText:new RegExp(`^${t}\\\\. .+`),action:{indentAction:o.languages.IndentAction.None,appendText:`${t+1}. `}}))]},y={defaultToken:\"\",tokenPostfix:\".mdx\",control:/[!#()*+.[\\\\\\]_`{}\\-]/,escapes:/\\\\@control/,tokenizer:{root:[[/^---$/,{token:\"meta.content\",next:\"@frontmatter\",nextEmbedded:\"yaml\"}],[/^\\s*import/,{token:\"keyword\",next:\"@import\",nextEmbedded:\"js\"}],[/^\\s*export/,{token:\"keyword\",next:\"@export\",nextEmbedded:\"js\"}],[/<\\w+/,{token:\"type.identifier\",next:\"@jsx\"}],[/<\\/?\\w+>/,\"type.identifier\"],[/^(\\s*)(>*\\s*)(#{1,6}\\s)/,[{token:\"white\"},{token:\"comment\"},{token:\"keyword\",next:\"@header\"}]],[/^(\\s*)(>*\\s*)([*+-])(\\s+)/,[\"white\",\"comment\",\"keyword\",\"white\"]],[/^(\\s*)(>*\\s*)(\\d{1,9}\\.)(\\s+)/,[\"white\",\"comment\",\"number\",\"white\"]],[/^(\\s*)(>*\\s*)(\\d{1,9}\\.)(\\s+)/,[\"white\",\"comment\",\"number\",\"white\"]],[/^(\\s*)(>*\\s*)(-{3,}|\\*{3,}|_{3,})$/,[\"white\",\"comment\",\"keyword\"]],[/`{3,}(\\s.*)?$/,{token:\"string\",next:\"@codeblock_backtick\"}],[/~{3,}(\\s.*)?$/,{token:\"string\",next:\"@codeblock_tilde\"}],[/`{3,}(\\S+).*$/,{token:\"string\",next:\"@codeblock_highlight_backtick\",nextEmbedded:\"$1\"}],[/~{3,}(\\S+).*$/,{token:\"string\",next:\"@codeblock_highlight_tilde\",nextEmbedded:\"$1\"}],[/^(\\s*)(-{4,})$/,[\"white\",\"comment\"]],[/^(\\s*)(>+)/,[\"white\",\"comment\"]],{include:\"content\"}],content:[[/(\\[)(.+)(]\\()(.+)(\\s+\".*\")(\\))/,[\"\",\"string.link\",\"\",\"type.identifier\",\"string.link\",\"\"]],[/(\\[)(.+)(]\\()(.+)(\\))/,[\"\",\"type.identifier\",\"\",\"string.link\",\"\"]],[/(\\[)(.+)(]\\[)(.+)(])/,[\"\",\"type.identifier\",\"\",\"type.identifier\",\"\"]],[/(\\[)(.+)(]:\\s+)(\\S*)/,[\"\",\"type.identifier\",\"\",\"string.link\"]],[/(\\[)(.+)(])/,[\"\",\"type.identifier\",\"\"]],[/`.*`/,\"variable.source\"],[/_/,{token:\"emphasis\",next:\"@emphasis_underscore\"}],[/\\*(?!\\*)/,{token:\"emphasis\",next:\"@emphasis_asterisk\"}],[/\\*\\*/,{token:\"strong\",next:\"@strong\"}],[/{/,{token:\"delimiter.bracket\",next:\"@expression\",nextEmbedded:\"js\"}]],import:[[/'\\s*(;|$)/,{token:\"string\",next:\"@pop\",nextEmbedded:\"@pop\"}]],expression:[[/{/,{token:\"delimiter.bracket\",next:\"@expression\"}],[/}/,{token:\"delimiter.bracket\",next:\"@pop\",nextEmbedded:\"@pop\"}]],export:[[/^\\s*$/,{token:\"delimiter.bracket\",next:\"@pop\",nextEmbedded:\"@pop\"}]],jsx:[[/\\s+/,\"\"],[/(\\w+)(=)(\"(?:[^\"\\\\]|\\\\.)*\")/,[\"attribute.name\",\"operator\",\"string\"]],[/(\\w+)(=)('(?:[^'\\\\]|\\\\.)*')/,[\"attribute.name\",\"operator\",\"string\"]],[/(\\w+(?=\\s|>|={|$))/,[\"attribute.name\"]],[/={/,{token:\"delimiter.bracket\",next:\"@expression\",nextEmbedded:\"js\"}],[/>/,{token:\"type.identifier\",next:\"@pop\"}]],header:[[/.$/,{token:\"keyword\",next:\"@pop\"}],{include:\"content\"},[/./,{token:\"keyword\"}]],strong:[[/\\*\\*/,{token:\"strong\",next:\"@pop\"}],{include:\"content\"},[/./,{token:\"strong\"}]],emphasis_underscore:[[/_/,{token:\"emphasis\",next:\"@pop\"}],{include:\"content\"},[/./,{token:\"emphasis\"}]],emphasis_asterisk:[[/\\*(?!\\*)/,{token:\"emphasis\",next:\"@pop\"}],{include:\"content\"},[/./,{token:\"emphasis\"}]],frontmatter:[[/^---$/,{token:\"meta.content\",nextEmbedded:\"@pop\",next:\"@pop\"}]],codeblock_highlight_backtick:[[/\\s*`{3,}\\s*$/,{token:\"string\",next:\"@pop\",nextEmbedded:\"@pop\"}],[/.*$/,\"variable.source\"]],codeblock_highlight_tilde:[[/\\s*~{3,}\\s*$/,{token:\"string\",next:\"@pop\",nextEmbedded:\"@pop\"}],[/.*$/,\"variable.source\"]],codeblock_backtick:[[/\\s*`{3,}\\s*$/,{token:\"string\",next:\"@pop\"}],[/.*$/,\"variable.source\"]],codeblock_tilde:[[/\\s*~{3,}\\s*$/,{token:\"string\",next:\"@pop\"}],[/.*$/,\"variable.source\"]]}};return w(A);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/mips/mips.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/mips/mips\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var n in e)s(t,n,{get:e[n],enumerable:!0})},d=(t,e,n,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let r of o(e))!g.call(t,r)&&r!==n&&s(t,r,{get:()=>e[r],enumerable:!(i=a(e,r))||i.enumerable});return t};var m=t=>d(s({},\"__esModule\",{value:!0}),t);var x={};l(x,{conf:()=>p,language:()=>u});var p={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#%\\^\\&\\*\\(\\)\\=\\$\\-\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,comments:{blockComment:[\"###\",\"###\"],lineComment:\"#\"},folding:{markers:{start:new RegExp(\"^\\\\s*#region\\\\b\"),end:new RegExp(\"^\\\\s*#endregion\\\\b\")}}},u={defaultToken:\"\",ignoreCase:!1,tokenPostfix:\".mips\",regEx:/\\/(?!\\/\\/)(?:[^\\/\\\\]|\\\\.)*\\/[igm]*/,keywords:[\".data\",\".text\",\"syscall\",\"trap\",\"add\",\"addu\",\"addi\",\"addiu\",\"and\",\"andi\",\"div\",\"divu\",\"mult\",\"multu\",\"nor\",\"or\",\"ori\",\"sll\",\"slv\",\"sra\",\"srav\",\"srl\",\"srlv\",\"sub\",\"subu\",\"xor\",\"xori\",\"lhi\",\"lho\",\"lhi\",\"llo\",\"slt\",\"slti\",\"sltu\",\"sltiu\",\"beq\",\"bgtz\",\"blez\",\"bne\",\"j\",\"jal\",\"jalr\",\"jr\",\"lb\",\"lbu\",\"lh\",\"lhu\",\"lw\",\"li\",\"la\",\"sb\",\"sh\",\"sw\",\"mfhi\",\"mflo\",\"mthi\",\"mtlo\",\"move\"],symbols:/[\\.,\\:]+/,escapes:/\\\\(?:[abfnrtv\\\\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\\$[a-zA-Z_]\\w*/,\"variable.predefined\"],[/[.a-zA-Z_]\\w*/,{cases:{this:\"variable.predefined\",\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"\"}}],[/[ \\t\\r\\n]+/,\"\"],[/#.*$/,\"comment\"],[\"///\",{token:\"regexp\",next:\"@hereregexp\"}],[/^(\\s*)(@regEx)/,[\"\",\"regexp\"]],[/(\\,)(\\s*)(@regEx)/,[\"delimiter\",\"\",\"regexp\"]],[/(\\:)(\\s*)(@regEx)/,[\"delimiter\",\"\",\"regexp\"]],[/@symbols/,\"delimiter\"],[/\\d+[eE]([\\-+]?\\d+)?/,\"number.float\"],[/\\d+\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/0[xX][0-9a-fA-F]+/,\"number.hex\"],[/0[0-7]+(?!\\d)/,\"number.octal\"],[/\\d+/,\"number\"],[/[,.]/,\"delimiter\"],[/\"\"\"/,\"string\",'@herestring.\"\"\"'],[/'''/,\"string\",\"@herestring.'''\"],[/\"/,{cases:{\"@eos\":\"string\",\"@default\":{token:\"string\",next:'@string.\"'}}}],[/'/,{cases:{\"@eos\":\"string\",\"@default\":{token:\"string\",next:\"@string.'\"}}}]],string:[[/[^\"'\\#\\\\]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\./,\"string.escape.invalid\"],[/\\./,\"string.escape.invalid\"],[/#{/,{cases:{'$S2==\"':{token:\"string\",next:\"root.interpolatedstring\"},\"@default\":\"string\"}}],[/[\"']/,{cases:{\"$#==$S2\":{token:\"string\",next:\"@pop\"},\"@default\":\"string\"}}],[/#/,\"string\"]],herestring:[[/(\"\"\"|''')/,{cases:{\"$1==$S2\":{token:\"string\",next:\"@pop\"},\"@default\":\"string\"}}],[/[^#\\\\'\"]+/,\"string\"],[/['\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\./,\"string.escape.invalid\"],[/#{/,{token:\"string.quote\",next:\"root.interpolatedstring\"}],[/#/,\"string\"]],comment:[[/[^#]+/,\"comment\"],[/#/,\"comment\"]],hereregexp:[[/[^\\\\\\/#]+/,\"regexp\"],[/\\\\./,\"regexp\"],[/#.*$/,\"comment\"],[\"///[igm]*\",{token:\"regexp\",next:\"@pop\"}],[/\\//,\"regexp\"]]}};return m(x);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/msdax/msdax.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/msdax/msdax\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var e=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var n=(T,E)=>{for(var N in E)e(T,N,{get:E[N],enumerable:!0})},t=(T,E,N,R)=>{if(E&&typeof E==\"object\"||typeof E==\"function\")for(let A of O(E))!S.call(T,A)&&A!==N&&e(T,A,{get:()=>E[A],enumerable:!(R=I(E,A))||R.enumerable});return T};var L=T=>t(e({},\"__esModule\",{value:!0}),T);var D={};n(D,{conf:()=>C,language:()=>o});var C={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"[\",\"]\"],[\"(\",\")\"],[\"{\",\"}\"]],autoClosingPairs:[{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]},{open:\"[\",close:\"]\",notIn:[\"string\",\"comment\"]},{open:\"(\",close:\")\",notIn:[\"string\",\"comment\"]},{open:\"{\",close:\"}\",notIn:[\"string\",\"comment\"]}]},o={defaultToken:\"\",tokenPostfix:\".msdax\",ignoreCase:!0,brackets:[{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"{\",close:\"}\",token:\"delimiter.brackets\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],keywords:[\"VAR\",\"RETURN\",\"NOT\",\"EVALUATE\",\"DATATABLE\",\"ORDER\",\"BY\",\"START\",\"AT\",\"DEFINE\",\"MEASURE\",\"ASC\",\"DESC\",\"IN\",\"BOOLEAN\",\"DOUBLE\",\"INTEGER\",\"DATETIME\",\"CURRENCY\",\"STRING\"],functions:[\"CLOSINGBALANCEMONTH\",\"CLOSINGBALANCEQUARTER\",\"CLOSINGBALANCEYEAR\",\"DATEADD\",\"DATESBETWEEN\",\"DATESINPERIOD\",\"DATESMTD\",\"DATESQTD\",\"DATESYTD\",\"ENDOFMONTH\",\"ENDOFQUARTER\",\"ENDOFYEAR\",\"FIRSTDATE\",\"FIRSTNONBLANK\",\"LASTDATE\",\"LASTNONBLANK\",\"NEXTDAY\",\"NEXTMONTH\",\"NEXTQUARTER\",\"NEXTYEAR\",\"OPENINGBALANCEMONTH\",\"OPENINGBALANCEQUARTER\",\"OPENINGBALANCEYEAR\",\"PARALLELPERIOD\",\"PREVIOUSDAY\",\"PREVIOUSMONTH\",\"PREVIOUSQUARTER\",\"PREVIOUSYEAR\",\"SAMEPERIODLASTYEAR\",\"STARTOFMONTH\",\"STARTOFQUARTER\",\"STARTOFYEAR\",\"TOTALMTD\",\"TOTALQTD\",\"TOTALYTD\",\"ADDCOLUMNS\",\"ADDMISSINGITEMS\",\"ALL\",\"ALLEXCEPT\",\"ALLNOBLANKROW\",\"ALLSELECTED\",\"CALCULATE\",\"CALCULATETABLE\",\"CALENDAR\",\"CALENDARAUTO\",\"CROSSFILTER\",\"CROSSJOIN\",\"CURRENTGROUP\",\"DATATABLE\",\"DETAILROWS\",\"DISTINCT\",\"EARLIER\",\"EARLIEST\",\"EXCEPT\",\"FILTER\",\"FILTERS\",\"GENERATE\",\"GENERATEALL\",\"GROUPBY\",\"IGNORE\",\"INTERSECT\",\"ISONORAFTER\",\"KEEPFILTERS\",\"LOOKUPVALUE\",\"NATURALINNERJOIN\",\"NATURALLEFTOUTERJOIN\",\"RELATED\",\"RELATEDTABLE\",\"ROLLUP\",\"ROLLUPADDISSUBTOTAL\",\"ROLLUPGROUP\",\"ROLLUPISSUBTOTAL\",\"ROW\",\"SAMPLE\",\"SELECTCOLUMNS\",\"SUBSTITUTEWITHINDEX\",\"SUMMARIZE\",\"SUMMARIZECOLUMNS\",\"TOPN\",\"TREATAS\",\"UNION\",\"USERELATIONSHIP\",\"VALUES\",\"SUM\",\"SUMX\",\"PATH\",\"PATHCONTAINS\",\"PATHITEM\",\"PATHITEMREVERSE\",\"PATHLENGTH\",\"AVERAGE\",\"AVERAGEA\",\"AVERAGEX\",\"COUNT\",\"COUNTA\",\"COUNTAX\",\"COUNTBLANK\",\"COUNTROWS\",\"COUNTX\",\"DISTINCTCOUNT\",\"DIVIDE\",\"GEOMEAN\",\"GEOMEANX\",\"MAX\",\"MAXA\",\"MAXX\",\"MEDIAN\",\"MEDIANX\",\"MIN\",\"MINA\",\"MINX\",\"PERCENTILE.EXC\",\"PERCENTILE.INC\",\"PERCENTILEX.EXC\",\"PERCENTILEX.INC\",\"PRODUCT\",\"PRODUCTX\",\"RANK.EQ\",\"RANKX\",\"STDEV.P\",\"STDEV.S\",\"STDEVX.P\",\"STDEVX.S\",\"VAR.P\",\"VAR.S\",\"VARX.P\",\"VARX.S\",\"XIRR\",\"XNPV\",\"DATE\",\"DATEDIFF\",\"DATEVALUE\",\"DAY\",\"EDATE\",\"EOMONTH\",\"HOUR\",\"MINUTE\",\"MONTH\",\"NOW\",\"SECOND\",\"TIME\",\"TIMEVALUE\",\"TODAY\",\"WEEKDAY\",\"WEEKNUM\",\"YEAR\",\"YEARFRAC\",\"CONTAINS\",\"CONTAINSROW\",\"CUSTOMDATA\",\"ERROR\",\"HASONEFILTER\",\"HASONEVALUE\",\"ISBLANK\",\"ISCROSSFILTERED\",\"ISEMPTY\",\"ISERROR\",\"ISEVEN\",\"ISFILTERED\",\"ISLOGICAL\",\"ISNONTEXT\",\"ISNUMBER\",\"ISODD\",\"ISSUBTOTAL\",\"ISTEXT\",\"USERNAME\",\"USERPRINCIPALNAME\",\"AND\",\"FALSE\",\"IF\",\"IFERROR\",\"NOT\",\"OR\",\"SWITCH\",\"TRUE\",\"ABS\",\"ACOS\",\"ACOSH\",\"ACOT\",\"ACOTH\",\"ASIN\",\"ASINH\",\"ATAN\",\"ATANH\",\"BETA.DIST\",\"BETA.INV\",\"CEILING\",\"CHISQ.DIST\",\"CHISQ.DIST.RT\",\"CHISQ.INV\",\"CHISQ.INV.RT\",\"COMBIN\",\"COMBINA\",\"CONFIDENCE.NORM\",\"CONFIDENCE.T\",\"COS\",\"COSH\",\"COT\",\"COTH\",\"CURRENCY\",\"DEGREES\",\"EVEN\",\"EXP\",\"EXPON.DIST\",\"FACT\",\"FLOOR\",\"GCD\",\"INT\",\"ISO.CEILING\",\"LCM\",\"LN\",\"LOG\",\"LOG10\",\"MOD\",\"MROUND\",\"ODD\",\"PERMUT\",\"PI\",\"POISSON.DIST\",\"POWER\",\"QUOTIENT\",\"RADIANS\",\"RAND\",\"RANDBETWEEN\",\"ROUND\",\"ROUNDDOWN\",\"ROUNDUP\",\"SIGN\",\"SIN\",\"SINH\",\"SQRT\",\"SQRTPI\",\"TAN\",\"TANH\",\"TRUNC\",\"BLANK\",\"CONCATENATE\",\"CONCATENATEX\",\"EXACT\",\"FIND\",\"FIXED\",\"FORMAT\",\"LEFT\",\"LEN\",\"LOWER\",\"MID\",\"REPLACE\",\"REPT\",\"RIGHT\",\"SEARCH\",\"SUBSTITUTE\",\"TRIM\",\"UNICHAR\",\"UNICODE\",\"UPPER\",\"VALUE\"],tokenizer:{root:[{include:\"@comments\"},{include:\"@whitespace\"},{include:\"@numbers\"},{include:\"@strings\"},{include:\"@complexIdentifiers\"},[/[;,.]/,\"delimiter\"],[/[({})]/,\"@brackets\"],[/[a-z_][a-zA-Z0-9_]*/,{cases:{\"@keywords\":\"keyword\",\"@functions\":\"keyword\",\"@default\":\"identifier\"}}],[/[<>=!%&+\\-*/|~^]/,\"operator\"]],whitespace:[[/\\s+/,\"white\"]],comments:[[/\\/\\/+.*/,\"comment\"],[/\\/\\*/,{token:\"comment.quote\",next:\"@comment\"}]],comment:[[/[^*/]+/,\"comment\"],[/\\*\\//,{token:\"comment.quote\",next:\"@pop\"}],[/./,\"comment\"]],numbers:[[/0[xX][0-9a-fA-F]*/,\"number\"],[/[$][+-]*\\d*(\\.\\d*)?/,\"number\"],[/((\\d+(\\.\\d*)?)|(\\.\\d+))([eE][\\-+]?\\d+)?/,\"number\"]],strings:[[/N\"/,{token:\"string\",next:\"@string\"}],[/\"/,{token:\"string\",next:\"@string\"}]],string:[[/[^\"]+/,\"string\"],[/\"\"/,\"string\"],[/\"/,{token:\"string\",next:\"@pop\"}]],complexIdentifiers:[[/\\[/,{token:\"identifier.quote\",next:\"@bracketedIdentifier\"}],[/'/,{token:\"identifier.quote\",next:\"@quotedIdentifier\"}]],bracketedIdentifier:[[/[^\\]]+/,\"identifier\"],[/]]/,\"identifier\"],[/]/,{token:\"identifier.quote\",next:\"@pop\"}]],quotedIdentifier:[[/[^']+/,\"identifier\"],[/''/,\"identifier\"],[/'/,{token:\"identifier.quote\",next:\"@pop\"}]]}};return L(D);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/mysql/mysql.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/mysql/mysql\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var A=Object.defineProperty;var e=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var N=Object.prototype.hasOwnProperty;var o=(T,E)=>{for(var R in E)A(T,R,{get:E[R],enumerable:!0})},O=(T,E,R,_)=>{if(E&&typeof E==\"object\"||typeof E==\"function\")for(let S of I(E))!N.call(T,S)&&S!==R&&A(T,S,{get:()=>E[S],enumerable:!(_=e(E,S))||_.enumerable});return T};var t=T=>O(A({},\"__esModule\",{value:!0}),T);var L={};o(L,{conf:()=>n,language:()=>C});var n={comments:{lineComment:\"--\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}]},C={defaultToken:\"\",tokenPostfix:\".sql\",ignoreCase:!0,brackets:[{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],keywords:[\"ACCESSIBLE\",\"ADD\",\"ALL\",\"ALTER\",\"ANALYZE\",\"AND\",\"AS\",\"ASC\",\"ASENSITIVE\",\"BEFORE\",\"BETWEEN\",\"BIGINT\",\"BINARY\",\"BLOB\",\"BOTH\",\"BY\",\"CALL\",\"CASCADE\",\"CASE\",\"CHANGE\",\"CHAR\",\"CHARACTER\",\"CHECK\",\"COLLATE\",\"COLUMN\",\"CONDITION\",\"CONSTRAINT\",\"CONTINUE\",\"CONVERT\",\"CREATE\",\"CROSS\",\"CUBE\",\"CUME_DIST\",\"CURRENT_DATE\",\"CURRENT_TIME\",\"CURRENT_TIMESTAMP\",\"CURRENT_USER\",\"CURSOR\",\"DATABASE\",\"DATABASES\",\"DAY_HOUR\",\"DAY_MICROSECOND\",\"DAY_MINUTE\",\"DAY_SECOND\",\"DEC\",\"DECIMAL\",\"DECLARE\",\"DEFAULT\",\"DELAYED\",\"DELETE\",\"DENSE_RANK\",\"DESC\",\"DESCRIBE\",\"DETERMINISTIC\",\"DISTINCT\",\"DISTINCTROW\",\"DIV\",\"DOUBLE\",\"DROP\",\"DUAL\",\"EACH\",\"ELSE\",\"ELSEIF\",\"EMPTY\",\"ENCLOSED\",\"ESCAPED\",\"EXCEPT\",\"EXISTS\",\"EXIT\",\"EXPLAIN\",\"FALSE\",\"FETCH\",\"FIRST_VALUE\",\"FLOAT\",\"FLOAT4\",\"FLOAT8\",\"FOR\",\"FORCE\",\"FOREIGN\",\"FROM\",\"FULLTEXT\",\"FUNCTION\",\"GENERATED\",\"GET\",\"GRANT\",\"GROUP\",\"GROUPING\",\"GROUPS\",\"HAVING\",\"HIGH_PRIORITY\",\"HOUR_MICROSECOND\",\"HOUR_MINUTE\",\"HOUR_SECOND\",\"IF\",\"IGNORE\",\"IN\",\"INDEX\",\"INFILE\",\"INNER\",\"INOUT\",\"INSENSITIVE\",\"INSERT\",\"INT\",\"INT1\",\"INT2\",\"INT3\",\"INT4\",\"INT8\",\"INTEGER\",\"INTERVAL\",\"INTO\",\"IO_AFTER_GTIDS\",\"IO_BEFORE_GTIDS\",\"IS\",\"ITERATE\",\"JOIN\",\"JSON_TABLE\",\"KEY\",\"KEYS\",\"KILL\",\"LAG\",\"LAST_VALUE\",\"LATERAL\",\"LEAD\",\"LEADING\",\"LEAVE\",\"LEFT\",\"LIKE\",\"LIMIT\",\"LINEAR\",\"LINES\",\"LOAD\",\"LOCALTIME\",\"LOCALTIMESTAMP\",\"LOCK\",\"LONG\",\"LONGBLOB\",\"LONGTEXT\",\"LOOP\",\"LOW_PRIORITY\",\"MASTER_BIND\",\"MASTER_SSL_VERIFY_SERVER_CERT\",\"MATCH\",\"MAXVALUE\",\"MEDIUMBLOB\",\"MEDIUMINT\",\"MEDIUMTEXT\",\"MIDDLEINT\",\"MINUTE_MICROSECOND\",\"MINUTE_SECOND\",\"MOD\",\"MODIFIES\",\"NATURAL\",\"NOT\",\"NO_WRITE_TO_BINLOG\",\"NTH_VALUE\",\"NTILE\",\"NULL\",\"NUMERIC\",\"OF\",\"ON\",\"OPTIMIZE\",\"OPTIMIZER_COSTS\",\"OPTION\",\"OPTIONALLY\",\"OR\",\"ORDER\",\"OUT\",\"OUTER\",\"OUTFILE\",\"OVER\",\"PARTITION\",\"PERCENT_RANK\",\"PRECISION\",\"PRIMARY\",\"PROCEDURE\",\"PURGE\",\"RANGE\",\"RANK\",\"READ\",\"READS\",\"READ_WRITE\",\"REAL\",\"RECURSIVE\",\"REFERENCES\",\"REGEXP\",\"RELEASE\",\"RENAME\",\"REPEAT\",\"REPLACE\",\"REQUIRE\",\"RESIGNAL\",\"RESTRICT\",\"RETURN\",\"REVOKE\",\"RIGHT\",\"RLIKE\",\"ROW\",\"ROWS\",\"ROW_NUMBER\",\"SCHEMA\",\"SCHEMAS\",\"SECOND_MICROSECOND\",\"SELECT\",\"SENSITIVE\",\"SEPARATOR\",\"SET\",\"SHOW\",\"SIGNAL\",\"SMALLINT\",\"SPATIAL\",\"SPECIFIC\",\"SQL\",\"SQLEXCEPTION\",\"SQLSTATE\",\"SQLWARNING\",\"SQL_BIG_RESULT\",\"SQL_CALC_FOUND_ROWS\",\"SQL_SMALL_RESULT\",\"SSL\",\"STARTING\",\"STORED\",\"STRAIGHT_JOIN\",\"SYSTEM\",\"TABLE\",\"TERMINATED\",\"THEN\",\"TINYBLOB\",\"TINYINT\",\"TINYTEXT\",\"TO\",\"TRAILING\",\"TRIGGER\",\"TRUE\",\"UNDO\",\"UNION\",\"UNIQUE\",\"UNLOCK\",\"UNSIGNED\",\"UPDATE\",\"USAGE\",\"USE\",\"USING\",\"UTC_DATE\",\"UTC_TIME\",\"UTC_TIMESTAMP\",\"VALUES\",\"VARBINARY\",\"VARCHAR\",\"VARCHARACTER\",\"VARYING\",\"VIRTUAL\",\"WHEN\",\"WHERE\",\"WHILE\",\"WINDOW\",\"WITH\",\"WRITE\",\"XOR\",\"YEAR_MONTH\",\"ZEROFILL\"],operators:[\"AND\",\"BETWEEN\",\"IN\",\"LIKE\",\"NOT\",\"OR\",\"IS\",\"NULL\",\"INTERSECT\",\"UNION\",\"INNER\",\"JOIN\",\"LEFT\",\"OUTER\",\"RIGHT\"],builtinFunctions:[\"ABS\",\"ACOS\",\"ADDDATE\",\"ADDTIME\",\"AES_DECRYPT\",\"AES_ENCRYPT\",\"ANY_VALUE\",\"Area\",\"AsBinary\",\"AsWKB\",\"ASCII\",\"ASIN\",\"AsText\",\"AsWKT\",\"ASYMMETRIC_DECRYPT\",\"ASYMMETRIC_DERIVE\",\"ASYMMETRIC_ENCRYPT\",\"ASYMMETRIC_SIGN\",\"ASYMMETRIC_VERIFY\",\"ATAN\",\"ATAN2\",\"ATAN\",\"AVG\",\"BENCHMARK\",\"BIN\",\"BIT_AND\",\"BIT_COUNT\",\"BIT_LENGTH\",\"BIT_OR\",\"BIT_XOR\",\"Buffer\",\"CAST\",\"CEIL\",\"CEILING\",\"Centroid\",\"CHAR\",\"CHAR_LENGTH\",\"CHARACTER_LENGTH\",\"CHARSET\",\"COALESCE\",\"COERCIBILITY\",\"COLLATION\",\"COMPRESS\",\"CONCAT\",\"CONCAT_WS\",\"CONNECTION_ID\",\"Contains\",\"CONV\",\"CONVERT\",\"CONVERT_TZ\",\"ConvexHull\",\"COS\",\"COT\",\"COUNT\",\"CRC32\",\"CREATE_ASYMMETRIC_PRIV_KEY\",\"CREATE_ASYMMETRIC_PUB_KEY\",\"CREATE_DH_PARAMETERS\",\"CREATE_DIGEST\",\"Crosses\",\"CUME_DIST\",\"CURDATE\",\"CURRENT_DATE\",\"CURRENT_ROLE\",\"CURRENT_TIME\",\"CURRENT_TIMESTAMP\",\"CURRENT_USER\",\"CURTIME\",\"DATABASE\",\"DATE\",\"DATE_ADD\",\"DATE_FORMAT\",\"DATE_SUB\",\"DATEDIFF\",\"DAY\",\"DAYNAME\",\"DAYOFMONTH\",\"DAYOFWEEK\",\"DAYOFYEAR\",\"DECODE\",\"DEFAULT\",\"DEGREES\",\"DES_DECRYPT\",\"DES_ENCRYPT\",\"DENSE_RANK\",\"Dimension\",\"Disjoint\",\"Distance\",\"ELT\",\"ENCODE\",\"ENCRYPT\",\"EndPoint\",\"Envelope\",\"Equals\",\"EXP\",\"EXPORT_SET\",\"ExteriorRing\",\"EXTRACT\",\"ExtractValue\",\"FIELD\",\"FIND_IN_SET\",\"FIRST_VALUE\",\"FLOOR\",\"FORMAT\",\"FORMAT_BYTES\",\"FORMAT_PICO_TIME\",\"FOUND_ROWS\",\"FROM_BASE64\",\"FROM_DAYS\",\"FROM_UNIXTIME\",\"GEN_RANGE\",\"GEN_RND_EMAIL\",\"GEN_RND_PAN\",\"GEN_RND_SSN\",\"GEN_RND_US_PHONE\",\"GeomCollection\",\"GeomCollFromText\",\"GeometryCollectionFromText\",\"GeomCollFromWKB\",\"GeometryCollectionFromWKB\",\"GeometryCollection\",\"GeometryN\",\"GeometryType\",\"GeomFromText\",\"GeometryFromText\",\"GeomFromWKB\",\"GeometryFromWKB\",\"GET_FORMAT\",\"GET_LOCK\",\"GLength\",\"GREATEST\",\"GROUP_CONCAT\",\"GROUPING\",\"GTID_SUBSET\",\"GTID_SUBTRACT\",\"HEX\",\"HOUR\",\"ICU_VERSION\",\"IF\",\"IFNULL\",\"INET_ATON\",\"INET_NTOA\",\"INET6_ATON\",\"INET6_NTOA\",\"INSERT\",\"INSTR\",\"InteriorRingN\",\"Intersects\",\"INTERVAL\",\"IS_FREE_LOCK\",\"IS_IPV4\",\"IS_IPV4_COMPAT\",\"IS_IPV4_MAPPED\",\"IS_IPV6\",\"IS_USED_LOCK\",\"IS_UUID\",\"IsClosed\",\"IsEmpty\",\"ISNULL\",\"IsSimple\",\"JSON_APPEND\",\"JSON_ARRAY\",\"JSON_ARRAY_APPEND\",\"JSON_ARRAY_INSERT\",\"JSON_ARRAYAGG\",\"JSON_CONTAINS\",\"JSON_CONTAINS_PATH\",\"JSON_DEPTH\",\"JSON_EXTRACT\",\"JSON_INSERT\",\"JSON_KEYS\",\"JSON_LENGTH\",\"JSON_MERGE\",\"JSON_MERGE_PATCH\",\"JSON_MERGE_PRESERVE\",\"JSON_OBJECT\",\"JSON_OBJECTAGG\",\"JSON_OVERLAPS\",\"JSON_PRETTY\",\"JSON_QUOTE\",\"JSON_REMOVE\",\"JSON_REPLACE\",\"JSON_SCHEMA_VALID\",\"JSON_SCHEMA_VALIDATION_REPORT\",\"JSON_SEARCH\",\"JSON_SET\",\"JSON_STORAGE_FREE\",\"JSON_STORAGE_SIZE\",\"JSON_TABLE\",\"JSON_TYPE\",\"JSON_UNQUOTE\",\"JSON_VALID\",\"LAG\",\"LAST_DAY\",\"LAST_INSERT_ID\",\"LAST_VALUE\",\"LCASE\",\"LEAD\",\"LEAST\",\"LEFT\",\"LENGTH\",\"LineFromText\",\"LineStringFromText\",\"LineFromWKB\",\"LineStringFromWKB\",\"LineString\",\"LN\",\"LOAD_FILE\",\"LOCALTIME\",\"LOCALTIMESTAMP\",\"LOCATE\",\"LOG\",\"LOG10\",\"LOG2\",\"LOWER\",\"LPAD\",\"LTRIM\",\"MAKE_SET\",\"MAKEDATE\",\"MAKETIME\",\"MASK_INNER\",\"MASK_OUTER\",\"MASK_PAN\",\"MASK_PAN_RELAXED\",\"MASK_SSN\",\"MASTER_POS_WAIT\",\"MAX\",\"MBRContains\",\"MBRCoveredBy\",\"MBRCovers\",\"MBRDisjoint\",\"MBREqual\",\"MBREquals\",\"MBRIntersects\",\"MBROverlaps\",\"MBRTouches\",\"MBRWithin\",\"MD5\",\"MEMBER OF\",\"MICROSECOND\",\"MID\",\"MIN\",\"MINUTE\",\"MLineFromText\",\"MultiLineStringFromText\",\"MLineFromWKB\",\"MultiLineStringFromWKB\",\"MOD\",\"MONTH\",\"MONTHNAME\",\"MPointFromText\",\"MultiPointFromText\",\"MPointFromWKB\",\"MultiPointFromWKB\",\"MPolyFromText\",\"MultiPolygonFromText\",\"MPolyFromWKB\",\"MultiPolygonFromWKB\",\"MultiLineString\",\"MultiPoint\",\"MultiPolygon\",\"NAME_CONST\",\"NOT IN\",\"NOW\",\"NTH_VALUE\",\"NTILE\",\"NULLIF\",\"NumGeometries\",\"NumInteriorRings\",\"NumPoints\",\"OCT\",\"OCTET_LENGTH\",\"OLD_PASSWORD\",\"ORD\",\"Overlaps\",\"PASSWORD\",\"PERCENT_RANK\",\"PERIOD_ADD\",\"PERIOD_DIFF\",\"PI\",\"Point\",\"PointFromText\",\"PointFromWKB\",\"PointN\",\"PolyFromText\",\"PolygonFromText\",\"PolyFromWKB\",\"PolygonFromWKB\",\"Polygon\",\"POSITION\",\"POW\",\"POWER\",\"PS_CURRENT_THREAD_ID\",\"PS_THREAD_ID\",\"PROCEDURE ANALYSE\",\"QUARTER\",\"QUOTE\",\"RADIANS\",\"RAND\",\"RANDOM_BYTES\",\"RANK\",\"REGEXP_INSTR\",\"REGEXP_LIKE\",\"REGEXP_REPLACE\",\"REGEXP_REPLACE\",\"RELEASE_ALL_LOCKS\",\"RELEASE_LOCK\",\"REPEAT\",\"REPLACE\",\"REVERSE\",\"RIGHT\",\"ROLES_GRAPHML\",\"ROUND\",\"ROW_COUNT\",\"ROW_NUMBER\",\"RPAD\",\"RTRIM\",\"SCHEMA\",\"SEC_TO_TIME\",\"SECOND\",\"SESSION_USER\",\"SHA1\",\"SHA\",\"SHA2\",\"SIGN\",\"SIN\",\"SLEEP\",\"SOUNDEX\",\"SOURCE_POS_WAIT\",\"SPACE\",\"SQRT\",\"SRID\",\"ST_Area\",\"ST_AsBinary\",\"ST_AsWKB\",\"ST_AsGeoJSON\",\"ST_AsText\",\"ST_AsWKT\",\"ST_Buffer\",\"ST_Buffer_Strategy\",\"ST_Centroid\",\"ST_Collect\",\"ST_Contains\",\"ST_ConvexHull\",\"ST_Crosses\",\"ST_Difference\",\"ST_Dimension\",\"ST_Disjoint\",\"ST_Distance\",\"ST_Distance_Sphere\",\"ST_EndPoint\",\"ST_Envelope\",\"ST_Equals\",\"ST_ExteriorRing\",\"ST_FrechetDistance\",\"ST_GeoHash\",\"ST_GeomCollFromText\",\"ST_GeometryCollectionFromText\",\"ST_GeomCollFromTxt\",\"ST_GeomCollFromWKB\",\"ST_GeometryCollectionFromWKB\",\"ST_GeometryN\",\"ST_GeometryType\",\"ST_GeomFromGeoJSON\",\"ST_GeomFromText\",\"ST_GeometryFromText\",\"ST_GeomFromWKB\",\"ST_GeometryFromWKB\",\"ST_HausdorffDistance\",\"ST_InteriorRingN\",\"ST_Intersection\",\"ST_Intersects\",\"ST_IsClosed\",\"ST_IsEmpty\",\"ST_IsSimple\",\"ST_IsValid\",\"ST_LatFromGeoHash\",\"ST_Length\",\"ST_LineFromText\",\"ST_LineStringFromText\",\"ST_LineFromWKB\",\"ST_LineStringFromWKB\",\"ST_LineInterpolatePoint\",\"ST_LineInterpolatePoints\",\"ST_LongFromGeoHash\",\"ST_Longitude\",\"ST_MakeEnvelope\",\"ST_MLineFromText\",\"ST_MultiLineStringFromText\",\"ST_MLineFromWKB\",\"ST_MultiLineStringFromWKB\",\"ST_MPointFromText\",\"ST_MultiPointFromText\",\"ST_MPointFromWKB\",\"ST_MultiPointFromWKB\",\"ST_MPolyFromText\",\"ST_MultiPolygonFromText\",\"ST_MPolyFromWKB\",\"ST_MultiPolygonFromWKB\",\"ST_NumGeometries\",\"ST_NumInteriorRing\",\"ST_NumInteriorRings\",\"ST_NumPoints\",\"ST_Overlaps\",\"ST_PointAtDistance\",\"ST_PointFromGeoHash\",\"ST_PointFromText\",\"ST_PointFromWKB\",\"ST_PointN\",\"ST_PolyFromText\",\"ST_PolygonFromText\",\"ST_PolyFromWKB\",\"ST_PolygonFromWKB\",\"ST_Simplify\",\"ST_SRID\",\"ST_StartPoint\",\"ST_SwapXY\",\"ST_SymDifference\",\"ST_Touches\",\"ST_Transform\",\"ST_Union\",\"ST_Validate\",\"ST_Within\",\"ST_X\",\"ST_Y\",\"StartPoint\",\"STATEMENT_DIGEST\",\"STATEMENT_DIGEST_TEXT\",\"STD\",\"STDDEV\",\"STDDEV_POP\",\"STDDEV_SAMP\",\"STR_TO_DATE\",\"STRCMP\",\"SUBDATE\",\"SUBSTR\",\"SUBSTRING\",\"SUBSTRING_INDEX\",\"SUBTIME\",\"SUM\",\"SYSDATE\",\"SYSTEM_USER\",\"TAN\",\"TIME\",\"TIME_FORMAT\",\"TIME_TO_SEC\",\"TIMEDIFF\",\"TIMESTAMP\",\"TIMESTAMPADD\",\"TIMESTAMPDIFF\",\"TO_BASE64\",\"TO_DAYS\",\"TO_SECONDS\",\"Touches\",\"TRIM\",\"TRUNCATE\",\"UCASE\",\"UNCOMPRESS\",\"UNCOMPRESSED_LENGTH\",\"UNHEX\",\"UNIX_TIMESTAMP\",\"UpdateXML\",\"UPPER\",\"USER\",\"UTC_DATE\",\"UTC_TIME\",\"UTC_TIMESTAMP\",\"UUID\",\"UUID_SHORT\",\"UUID_TO_BIN\",\"VALIDATE_PASSWORD_STRENGTH\",\"VALUES\",\"VAR_POP\",\"VAR_SAMP\",\"VARIANCE\",\"VERSION\",\"WAIT_FOR_EXECUTED_GTID_SET\",\"WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS\",\"WEEK\",\"WEEKDAY\",\"WEEKOFYEAR\",\"WEIGHT_STRING\",\"Within\",\"X\",\"Y\",\"YEAR\",\"YEARWEEK\"],builtinVariables:[],tokenizer:{root:[{include:\"@comments\"},{include:\"@whitespace\"},{include:\"@numbers\"},{include:\"@strings\"},{include:\"@complexIdentifiers\"},{include:\"@scopes\"},[/[;,.]/,\"delimiter\"],[/[()]/,\"@brackets\"],[/[\\w@]+/,{cases:{\"@operators\":\"operator\",\"@builtinVariables\":\"predefined\",\"@builtinFunctions\":\"predefined\",\"@keywords\":\"keyword\",\"@default\":\"identifier\"}}],[/[<>=!%&+\\-*/|~^]/,\"operator\"]],whitespace:[[/\\s+/,\"white\"]],comments:[[/--+.*/,\"comment\"],[/#+.*/,\"comment\"],[/\\/\\*/,{token:\"comment.quote\",next:\"@comment\"}]],comment:[[/[^*/]+/,\"comment\"],[/\\*\\//,{token:\"comment.quote\",next:\"@pop\"}],[/./,\"comment\"]],numbers:[[/0[xX][0-9a-fA-F]*/,\"number\"],[/[$][+-]*\\d*(\\.\\d*)?/,\"number\"],[/((\\d+(\\.\\d*)?)|(\\.\\d+))([eE][\\-+]?\\d+)?/,\"number\"]],strings:[[/'/,{token:\"string\",next:\"@string\"}],[/\"/,{token:\"string.double\",next:\"@stringDouble\"}]],string:[[/\\\\'/,\"string\"],[/[^']+/,\"string\"],[/''/,\"string\"],[/'/,{token:\"string\",next:\"@pop\"}]],stringDouble:[[/[^\"]+/,\"string.double\"],[/\"\"/,\"string.double\"],[/\"/,{token:\"string.double\",next:\"@pop\"}]],complexIdentifiers:[[/`/,{token:\"identifier.quote\",next:\"@quotedIdentifier\"}]],quotedIdentifier:[[/[^`]+/,\"identifier\"],[/``/,\"identifier\"],[/`/,{token:\"identifier.quote\",next:\"@pop\"}]],scopes:[]}};return t(L);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/objective-c/objective-c.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/objective-c/objective-c\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var l=(o,e)=>{for(var t in e)s(o,t,{get:e[t],enumerable:!0})},p=(o,e,t,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of c(e))!a.call(o,n)&&n!==t&&s(o,n,{get:()=>e[n],enumerable:!(i=r(e,n))||i.enumerable});return o};var d=o=>p(s({},\"__esModule\",{value:!0}),o);var u={};l(u,{conf:()=>g,language:()=>m});var g={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}]},m={defaultToken:\"\",tokenPostfix:\".objective-c\",keywords:[\"#import\",\"#include\",\"#define\",\"#else\",\"#endif\",\"#if\",\"#ifdef\",\"#ifndef\",\"#ident\",\"#undef\",\"@class\",\"@defs\",\"@dynamic\",\"@encode\",\"@end\",\"@implementation\",\"@interface\",\"@package\",\"@private\",\"@protected\",\"@property\",\"@protocol\",\"@public\",\"@selector\",\"@synthesize\",\"__declspec\",\"assign\",\"auto\",\"BOOL\",\"break\",\"bycopy\",\"byref\",\"case\",\"char\",\"Class\",\"const\",\"copy\",\"continue\",\"default\",\"do\",\"double\",\"else\",\"enum\",\"extern\",\"FALSE\",\"false\",\"float\",\"for\",\"goto\",\"if\",\"in\",\"int\",\"id\",\"inout\",\"IMP\",\"long\",\"nil\",\"nonatomic\",\"NULL\",\"oneway\",\"out\",\"private\",\"public\",\"protected\",\"readwrite\",\"readonly\",\"register\",\"return\",\"SEL\",\"self\",\"short\",\"signed\",\"sizeof\",\"static\",\"struct\",\"super\",\"switch\",\"typedef\",\"TRUE\",\"true\",\"union\",\"unsigned\",\"volatile\",\"void\",\"while\"],decpart:/\\d(_?\\d)*/,decimal:/0|@decpart/,tokenizer:{root:[{include:\"@comments\"},{include:\"@whitespace\"},{include:\"@numbers\"},{include:\"@strings\"},[/[,:;]/,\"delimiter\"],[/[{}\\[\\]()<>]/,\"@brackets\"],[/[a-zA-Z@#]\\w*/,{cases:{\"@keywords\":\"keyword\",\"@default\":\"identifier\"}}],[/[<>=\\\\+\\\\-\\\\*\\\\/\\\\^\\\\|\\\\~,]|and\\\\b|or\\\\b|not\\\\b]/,\"operator\"]],whitespace:[[/\\s+/,\"white\"]],comments:[[\"\\\\/\\\\*\",\"comment\",\"@comment\"],[\"\\\\/\\\\/+.*\",\"comment\"]],comment:[[\"\\\\*\\\\/\",\"comment\",\"@pop\"],[\".\",\"comment\"]],numbers:[[/0[xX][0-9a-fA-F]*(_?[0-9a-fA-F])*/,\"number.hex\"],[/@decimal((\\.@decpart)?([eE][\\-+]?@decpart)?)[fF]*/,{cases:{\"(\\\\d)*\":\"number\",$0:\"number.float\"}}]],strings:[[/'$/,\"string.escape\",\"@popall\"],[/'/,\"string.escape\",\"@stringBody\"],[/\"$/,\"string.escape\",\"@popall\"],[/\"/,\"string.escape\",\"@dblStringBody\"]],stringBody:[[/[^\\\\']+$/,\"string\",\"@popall\"],[/[^\\\\']+/,\"string\"],[/\\\\./,\"string\"],[/'/,\"string.escape\",\"@popall\"],[/\\\\$/,\"string\"]],dblStringBody:[[/[^\\\\\"]+$/,\"string\",\"@popall\"],[/[^\\\\\"]+/,\"string\"],[/\\\\./,\"string\"],[/\"/,\"string.escape\",\"@popall\"],[/\\\\$/,\"string\"]]}};return d(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/pascal/pascal.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/pascal/pascal\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var n=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var r in e)n(t,r,{get:e[r],enumerable:!0})},d=(t,e,r,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let o of a(e))!l.call(t,o)&&o!==r&&n(t,o,{get:()=>e[o],enumerable:!(i=s(e,o))||i.enumerable});return t};var p=t=>d(n({},\"__esModule\",{value:!0}),t);var g={};c(g,{conf:()=>m,language:()=>u});var m={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,comments:{lineComment:\"//\",blockComment:[\"{\",\"}\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"],[\"<\",\">\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"},{open:\"'\",close:\"'\"}],folding:{markers:{start:new RegExp(\"^\\\\s*\\\\{\\\\$REGION(\\\\s\\\\'.*\\\\')?\\\\}\"),end:new RegExp(\"^\\\\s*\\\\{\\\\$ENDREGION\\\\}\")}}},u={defaultToken:\"\",tokenPostfix:\".pascal\",ignoreCase:!0,brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}],keywords:[\"absolute\",\"abstract\",\"all\",\"and_then\",\"array\",\"as\",\"asm\",\"attribute\",\"begin\",\"bindable\",\"case\",\"class\",\"const\",\"contains\",\"default\",\"div\",\"else\",\"end\",\"except\",\"exports\",\"external\",\"far\",\"file\",\"finalization\",\"finally\",\"forward\",\"generic\",\"goto\",\"if\",\"implements\",\"import\",\"in\",\"index\",\"inherited\",\"initialization\",\"interrupt\",\"is\",\"label\",\"library\",\"mod\",\"module\",\"name\",\"near\",\"not\",\"object\",\"of\",\"on\",\"only\",\"operator\",\"or_else\",\"otherwise\",\"override\",\"package\",\"packed\",\"pow\",\"private\",\"program\",\"protected\",\"public\",\"published\",\"interface\",\"implementation\",\"qualified\",\"read\",\"record\",\"resident\",\"requires\",\"resourcestring\",\"restricted\",\"segment\",\"set\",\"shl\",\"shr\",\"specialize\",\"stored\",\"strict\",\"then\",\"threadvar\",\"to\",\"try\",\"type\",\"unit\",\"uses\",\"var\",\"view\",\"virtual\",\"dynamic\",\"overload\",\"reintroduce\",\"with\",\"write\",\"xor\",\"true\",\"false\",\"procedure\",\"function\",\"constructor\",\"destructor\",\"property\",\"break\",\"continue\",\"exit\",\"abort\",\"while\",\"do\",\"for\",\"raise\",\"repeat\",\"until\"],typeKeywords:[\"boolean\",\"double\",\"byte\",\"integer\",\"shortint\",\"char\",\"longint\",\"float\",\"string\"],operators:[\"=\",\">\",\"<\",\"<=\",\">=\",\"<>\",\":\",\":=\",\"and\",\"or\",\"+\",\"-\",\"*\",\"/\",\"@\",\"&\",\"^\",\"%\"],symbols:/[=><:@\\^&|+\\-*\\/\\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\\w]*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/\\$[0-9a-fA-F]{1,16}/,\"number.hex\"],[/\\d+/,\"number\"],[/[;,.]/,\"delimiter\"],[/'([^'\\\\]|\\\\.)*$/,\"string.invalid\"],[/'/,\"string\",\"@string\"],[/'[^\\\\']'/,\"string\"],[/'/,\"string.invalid\"],[/\\#\\d+/,\"string\"]],comment:[[/[^\\*\\}]+/,\"comment\"],[/\\}/,\"comment\",\"@pop\"],[/[\\{]/,\"comment\"]],string:[[/[^\\\\']+/,\"string\"],[/\\\\./,\"string.escape.invalid\"],[/'/,{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"}]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"],[/\\{/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]]}};return p(g);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/pascaligo/pascaligo.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/pascaligo/pascaligo\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var t in e)s(o,t,{get:e[t],enumerable:!0})},m=(o,e,t,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of a(e))!l.call(o,n)&&n!==t&&s(o,n,{get:()=>e[n],enumerable:!(r=i(e,n))||r.enumerable});return o};var p=o=>m(s({},\"__esModule\",{value:!0}),o);var u={};c(u,{conf:()=>d,language:()=>g});var d={comments:{lineComment:\"//\",blockComment:[\"(*\",\"*)\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"],[\"<\",\">\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"},{open:\"'\",close:\"'\"}]},g={defaultToken:\"\",tokenPostfix:\".pascaligo\",ignoreCase:!0,brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}],keywords:[\"begin\",\"block\",\"case\",\"const\",\"else\",\"end\",\"fail\",\"for\",\"from\",\"function\",\"if\",\"is\",\"nil\",\"of\",\"remove\",\"return\",\"skip\",\"then\",\"type\",\"var\",\"while\",\"with\",\"option\",\"None\",\"transaction\"],typeKeywords:[\"bool\",\"int\",\"list\",\"map\",\"nat\",\"record\",\"string\",\"unit\",\"address\",\"map\",\"mtz\",\"xtz\"],operators:[\"=\",\">\",\"<\",\"<=\",\">=\",\"<>\",\":\",\":=\",\"and\",\"mod\",\"or\",\"+\",\"-\",\"*\",\"/\",\"@\",\"&\",\"^\",\"%\"],symbols:/[=><:@\\^&|+\\-*\\/\\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\\w]*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/\\$[0-9a-fA-F]{1,16}/,\"number.hex\"],[/\\d+/,\"number\"],[/[;,.]/,\"delimiter\"],[/'([^'\\\\]|\\\\.)*$/,\"string.invalid\"],[/'/,\"string\",\"@string\"],[/'[^\\\\']'/,\"string\"],[/'/,\"string.invalid\"],[/\\#\\d+/,\"string\"]],comment:[[/[^\\(\\*]+/,\"comment\"],[/\\*\\)/,\"comment\",\"@pop\"],[/\\(\\*/,\"comment\"]],string:[[/[^\\\\']+/,\"string\"],[/\\\\./,\"string.escape.invalid\"],[/'/,{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"}]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"],[/\\(\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]]}};return p(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/perl/perl.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/perl/perl\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var a=(t,e)=>{for(var n in e)r(t,n,{get:e[n],enumerable:!0})},$=(t,e,n,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of l(e))!d.call(t,s)&&s!==n&&r(t,s,{get:()=>e[s],enumerable:!(i=o(e,s))||i.enumerable});return t};var c=t=>$(r({},\"__esModule\",{value:!0}),t);var m={};a(m,{conf:()=>g,language:()=>p});var g={comments:{lineComment:\"#\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"`\",close:\"`\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"`\",close:\"`\"}]},p={defaultToken:\"\",tokenPostfix:\".perl\",brackets:[{token:\"delimiter.bracket\",open:\"{\",close:\"}\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"},{token:\"delimiter.square\",open:\"[\",close:\"]\"}],keywords:[\"__DATA__\",\"else\",\"lock\",\"__END__\",\"elsif\",\"lt\",\"__FILE__\",\"eq\",\"__LINE__\",\"exp\",\"ne\",\"sub\",\"__PACKAGE__\",\"for\",\"no\",\"and\",\"foreach\",\"or\",\"unless\",\"cmp\",\"ge\",\"package\",\"until\",\"continue\",\"gt\",\"while\",\"CORE\",\"if\",\"xor\",\"do\",\"le\",\"__DIE__\",\"__WARN__\"],builtinFunctions:[\"-A\",\"END\",\"length\",\"setpgrp\",\"-B\",\"endgrent\",\"link\",\"setpriority\",\"-b\",\"endhostent\",\"listen\",\"setprotoent\",\"-C\",\"endnetent\",\"local\",\"setpwent\",\"-c\",\"endprotoent\",\"localtime\",\"setservent\",\"-d\",\"endpwent\",\"log\",\"setsockopt\",\"-e\",\"endservent\",\"lstat\",\"shift\",\"-f\",\"eof\",\"map\",\"shmctl\",\"-g\",\"eval\",\"mkdir\",\"shmget\",\"-k\",\"exec\",\"msgctl\",\"shmread\",\"-l\",\"exists\",\"msgget\",\"shmwrite\",\"-M\",\"exit\",\"msgrcv\",\"shutdown\",\"-O\",\"fcntl\",\"msgsnd\",\"sin\",\"-o\",\"fileno\",\"my\",\"sleep\",\"-p\",\"flock\",\"next\",\"socket\",\"-r\",\"fork\",\"not\",\"socketpair\",\"-R\",\"format\",\"oct\",\"sort\",\"-S\",\"formline\",\"open\",\"splice\",\"-s\",\"getc\",\"opendir\",\"split\",\"-T\",\"getgrent\",\"ord\",\"sprintf\",\"-t\",\"getgrgid\",\"our\",\"sqrt\",\"-u\",\"getgrnam\",\"pack\",\"srand\",\"-w\",\"gethostbyaddr\",\"pipe\",\"stat\",\"-W\",\"gethostbyname\",\"pop\",\"state\",\"-X\",\"gethostent\",\"pos\",\"study\",\"-x\",\"getlogin\",\"print\",\"substr\",\"-z\",\"getnetbyaddr\",\"printf\",\"symlink\",\"abs\",\"getnetbyname\",\"prototype\",\"syscall\",\"accept\",\"getnetent\",\"push\",\"sysopen\",\"alarm\",\"getpeername\",\"quotemeta\",\"sysread\",\"atan2\",\"getpgrp\",\"rand\",\"sysseek\",\"AUTOLOAD\",\"getppid\",\"read\",\"system\",\"BEGIN\",\"getpriority\",\"readdir\",\"syswrite\",\"bind\",\"getprotobyname\",\"readline\",\"tell\",\"binmode\",\"getprotobynumber\",\"readlink\",\"telldir\",\"bless\",\"getprotoent\",\"readpipe\",\"tie\",\"break\",\"getpwent\",\"recv\",\"tied\",\"caller\",\"getpwnam\",\"redo\",\"time\",\"chdir\",\"getpwuid\",\"ref\",\"times\",\"CHECK\",\"getservbyname\",\"rename\",\"truncate\",\"chmod\",\"getservbyport\",\"require\",\"uc\",\"chomp\",\"getservent\",\"reset\",\"ucfirst\",\"chop\",\"getsockname\",\"return\",\"umask\",\"chown\",\"getsockopt\",\"reverse\",\"undef\",\"chr\",\"glob\",\"rewinddir\",\"UNITCHECK\",\"chroot\",\"gmtime\",\"rindex\",\"unlink\",\"close\",\"goto\",\"rmdir\",\"unpack\",\"closedir\",\"grep\",\"say\",\"unshift\",\"connect\",\"hex\",\"scalar\",\"untie\",\"cos\",\"index\",\"seek\",\"use\",\"crypt\",\"INIT\",\"seekdir\",\"utime\",\"dbmclose\",\"int\",\"select\",\"values\",\"dbmopen\",\"ioctl\",\"semctl\",\"vec\",\"defined\",\"join\",\"semget\",\"wait\",\"delete\",\"keys\",\"semop\",\"waitpid\",\"DESTROY\",\"kill\",\"send\",\"wantarray\",\"die\",\"last\",\"setgrent\",\"warn\",\"dump\",\"lc\",\"sethostent\",\"write\",\"each\",\"lcfirst\",\"setnetent\"],builtinFileHandlers:[\"ARGV\",\"STDERR\",\"STDOUT\",\"ARGVOUT\",\"STDIN\",\"ENV\"],builtinVariables:[\"$!\",\"$^RE_TRIE_MAXBUF\",\"$LAST_REGEXP_CODE_RESULT\",'$\"',\"$^S\",\"$LIST_SEPARATOR\",\"$#\",\"$^T\",\"$MATCH\",\"$$\",\"$^TAINT\",\"$MULTILINE_MATCHING\",\"$%\",\"$^UNICODE\",\"$NR\",\"$&\",\"$^UTF8LOCALE\",\"$OFMT\",\"$'\",\"$^V\",\"$OFS\",\"$(\",\"$^W\",\"$ORS\",\"$)\",\"$^WARNING_BITS\",\"$OS_ERROR\",\"$*\",\"$^WIDE_SYSTEM_CALLS\",\"$OSNAME\",\"$+\",\"$^X\",\"$OUTPUT_AUTO_FLUSH\",\"$,\",\"$_\",\"$OUTPUT_FIELD_SEPARATOR\",\"$-\",\"$`\",\"$OUTPUT_RECORD_SEPARATOR\",\"$.\",\"$a\",\"$PERL_VERSION\",\"$/\",\"$ACCUMULATOR\",\"$PERLDB\",\"$0\",\"$ARG\",\"$PID\",\"$:\",\"$ARGV\",\"$POSTMATCH\",\"$;\",\"$b\",\"$PREMATCH\",\"$<\",\"$BASETIME\",\"$PROCESS_ID\",\"$=\",\"$CHILD_ERROR\",\"$PROGRAM_NAME\",\"$>\",\"$COMPILING\",\"$REAL_GROUP_ID\",\"$?\",\"$DEBUGGING\",\"$REAL_USER_ID\",\"$@\",\"$EFFECTIVE_GROUP_ID\",\"$RS\",\"$[\",\"$EFFECTIVE_USER_ID\",\"$SUBSCRIPT_SEPARATOR\",\"$\\\\\",\"$EGID\",\"$SUBSEP\",\"$]\",\"$ERRNO\",\"$SYSTEM_FD_MAX\",\"$^\",\"$EUID\",\"$UID\",\"$^A\",\"$EVAL_ERROR\",\"$WARNING\",\"$^C\",\"$EXCEPTIONS_BEING_CAUGHT\",\"$|\",\"$^CHILD_ERROR_NATIVE\",\"$EXECUTABLE_NAME\",\"$~\",\"$^D\",\"$EXTENDED_OS_ERROR\",\"%!\",\"$^E\",\"$FORMAT_FORMFEED\",\"%^H\",\"$^ENCODING\",\"$FORMAT_LINE_BREAK_CHARACTERS\",\"%ENV\",\"$^F\",\"$FORMAT_LINES_LEFT\",\"%INC\",\"$^H\",\"$FORMAT_LINES_PER_PAGE\",\"%OVERLOAD\",\"$^I\",\"$FORMAT_NAME\",\"%SIG\",\"$^L\",\"$FORMAT_PAGE_NUMBER\",\"@+\",\"$^M\",\"$FORMAT_TOP_NAME\",\"@-\",\"$^N\",\"$GID\",\"@_\",\"$^O\",\"$INPLACE_EDIT\",\"@ARGV\",\"$^OPEN\",\"$INPUT_LINE_NUMBER\",\"@INC\",\"$^P\",\"$INPUT_RECORD_SEPARATOR\",\"@LAST_MATCH_START\",\"$^R\",\"$LAST_MATCH_END\",\"$^RE_DEBUG_FLAGS\",\"$LAST_PAREN_MATCH\"],symbols:/[:+\\-\\^*$&%@=<>!?|\\/~\\.]/,quoteLikeOps:[\"qr\",\"m\",\"s\",\"q\",\"qq\",\"qx\",\"qw\",\"tr\",\"y\"],escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:\"@whitespace\"},[/[a-zA-Z\\-_][\\w\\-_]*/,{cases:{\"@keywords\":\"keyword\",\"@builtinFunctions\":\"type.identifier\",\"@builtinFileHandlers\":\"variable.predefined\",\"@quoteLikeOps\":{token:\"@rematch\",next:\"quotedConstructs\"},\"@default\":\"\"}}],[/[\\$@%][*@#?\\+\\-\\$!\\w\\\\\\^><~:;\\.]+/,{cases:{\"@builtinVariables\":\"variable.predefined\",\"@default\":\"variable\"}}],{include:\"@strings\"},{include:\"@dblStrings\"},{include:\"@perldoc\"},{include:\"@heredoc\"},[/[{}\\[\\]()]/,\"@brackets\"],[/[\\/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\\\/|[^\\]\\/]))*[\\/]\\w*\\s*(?=[).,;]|$)/,\"regexp\"],[/@symbols/,\"operators\"],{include:\"@numbers\"},[/[,;]/,\"delimiter\"]],whitespace:[[/\\s+/,\"white\"],[/(^#!.*$)/,\"metatag\"],[/(^#.*$)/,\"comment\"]],numbers:[[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,\"number.hex\"],[/\\d+/,\"number\"]],strings:[[/'/,\"string\",\"@stringBody\"]],stringBody:[[/'/,\"string\",\"@popall\"],[/\\\\'/,\"string.escape\"],[/./,\"string\"]],dblStrings:[[/\"/,\"string\",\"@dblStringBody\"]],dblStringBody:[[/\"/,\"string\",\"@popall\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],{include:\"@variables\"},[/./,\"string\"]],quotedConstructs:[[/(q|qw|tr|y)\\s*\\(/,{token:\"string.delim\",switchTo:\"@qstring.(.)\"}],[/(q|qw|tr|y)\\s*\\[/,{token:\"string.delim\",switchTo:\"@qstring.[.]\"}],[/(q|qw|tr|y)\\s*\\{/,{token:\"string.delim\",switchTo:\"@qstring.{.}\"}],[/(q|qw|tr|y)\\s*</,{token:\"string.delim\",switchTo:\"@qstring.<.>\"}],[/(q|qw|tr|y)#/,{token:\"string.delim\",switchTo:\"@qstring.#.#\"}],[/(q|qw|tr|y)\\s*([^A-Za-z0-9#\\s])/,{token:\"string.delim\",switchTo:\"@qstring.$2.$2\"}],[/(q|qw|tr|y)\\s+(\\w)/,{token:\"string.delim\",switchTo:\"@qstring.$2.$2\"}],[/(qr|m|s)\\s*\\(/,{token:\"regexp.delim\",switchTo:\"@qregexp.(.)\"}],[/(qr|m|s)\\s*\\[/,{token:\"regexp.delim\",switchTo:\"@qregexp.[.]\"}],[/(qr|m|s)\\s*\\{/,{token:\"regexp.delim\",switchTo:\"@qregexp.{.}\"}],[/(qr|m|s)\\s*</,{token:\"regexp.delim\",switchTo:\"@qregexp.<.>\"}],[/(qr|m|s)#/,{token:\"regexp.delim\",switchTo:\"@qregexp.#.#\"}],[/(qr|m|s)\\s*([^A-Za-z0-9_#\\s])/,{token:\"regexp.delim\",switchTo:\"@qregexp.$2.$2\"}],[/(qr|m|s)\\s+(\\w)/,{token:\"regexp.delim\",switchTo:\"@qregexp.$2.$2\"}],[/(qq|qx)\\s*\\(/,{token:\"string.delim\",switchTo:\"@qqstring.(.)\"}],[/(qq|qx)\\s*\\[/,{token:\"string.delim\",switchTo:\"@qqstring.[.]\"}],[/(qq|qx)\\s*\\{/,{token:\"string.delim\",switchTo:\"@qqstring.{.}\"}],[/(qq|qx)\\s*</,{token:\"string.delim\",switchTo:\"@qqstring.<.>\"}],[/(qq|qx)#/,{token:\"string.delim\",switchTo:\"@qqstring.#.#\"}],[/(qq|qx)\\s*([^A-Za-z0-9#\\s])/,{token:\"string.delim\",switchTo:\"@qqstring.$2.$2\"}],[/(qq|qx)\\s+(\\w)/,{token:\"string.delim\",switchTo:\"@qqstring.$2.$2\"}]],qstring:[[/\\\\./,\"string.escape\"],[/./,{cases:{\"$#==$S3\":{token:\"string.delim\",next:\"@pop\"},\"$#==$S2\":{token:\"string.delim\",next:\"@push\"},\"@default\":\"string\"}}]],qregexp:[{include:\"@variables\"},[/\\\\./,\"regexp.escape\"],[/./,{cases:{\"$#==$S3\":{token:\"regexp.delim\",next:\"@regexpModifiers\"},\"$#==$S2\":{token:\"regexp.delim\",next:\"@push\"},\"@default\":\"regexp\"}}]],regexpModifiers:[[/[msixpodualngcer]+/,{token:\"regexp.modifier\",next:\"@popall\"}]],qqstring:[{include:\"@variables\"},{include:\"@qstring\"}],heredoc:[[/<<\\s*['\"`]?([\\w\\-]+)['\"`]?/,{token:\"string.heredoc.delimiter\",next:\"@heredocBody.$1\"}]],heredocBody:[[/^([\\w\\-]+)$/,{cases:{\"$1==$S2\":[{token:\"string.heredoc.delimiter\",next:\"@popall\"}],\"@default\":\"string.heredoc\"}}],[/./,\"string.heredoc\"]],perldoc:[[/^=\\w/,\"comment.doc\",\"@perldocBody\"]],perldocBody:[[/^=cut\\b/,\"type.identifier\",\"@popall\"],[/./,\"comment.doc\"]],variables:[[/\\$\\w+/,\"variable\"],[/@\\w+/,\"variable\"],[/%\\w+/,\"variable\"]]}};return c(m);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/pgsql/pgsql.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/pgsql/pgsql\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var p=(_,e)=>{for(var s in e)r(_,s,{get:e[s],enumerable:!0})},l=(_,e,s,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of i(e))!n.call(_,t)&&t!==s&&r(_,t,{get:()=>e[t],enumerable:!(a=o(e,t))||a.enumerable});return _};var g=_=>l(r({},\"__esModule\",{value:!0}),_);var m={};p(m,{conf:()=>c,language:()=>d});var c={comments:{lineComment:\"--\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}]},d={defaultToken:\"\",tokenPostfix:\".sql\",ignoreCase:!0,brackets:[{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],keywords:[\"ALL\",\"ANALYSE\",\"ANALYZE\",\"AND\",\"ANY\",\"ARRAY\",\"AS\",\"ASC\",\"ASYMMETRIC\",\"AUTHORIZATION\",\"BINARY\",\"BOTH\",\"CASE\",\"CAST\",\"CHECK\",\"COLLATE\",\"COLLATION\",\"COLUMN\",\"CONCURRENTLY\",\"CONSTRAINT\",\"CREATE\",\"CROSS\",\"CURRENT_CATALOG\",\"CURRENT_DATE\",\"CURRENT_ROLE\",\"CURRENT_SCHEMA\",\"CURRENT_TIME\",\"CURRENT_TIMESTAMP\",\"CURRENT_USER\",\"DEFAULT\",\"DEFERRABLE\",\"DESC\",\"DISTINCT\",\"DO\",\"ELSE\",\"END\",\"EXCEPT\",\"FALSE\",\"FETCH\",\"FOR\",\"FOREIGN\",\"FREEZE\",\"FROM\",\"FULL\",\"GRANT\",\"GROUP\",\"HAVING\",\"ILIKE\",\"IN\",\"INITIALLY\",\"INNER\",\"INTERSECT\",\"INTO\",\"IS\",\"ISNULL\",\"JOIN\",\"LATERAL\",\"LEADING\",\"LEFT\",\"LIKE\",\"LIMIT\",\"LOCALTIME\",\"LOCALTIMESTAMP\",\"NATURAL\",\"NOT\",\"NOTNULL\",\"NULL\",\"OFFSET\",\"ON\",\"ONLY\",\"OR\",\"ORDER\",\"OUTER\",\"OVERLAPS\",\"PLACING\",\"PRIMARY\",\"REFERENCES\",\"RETURNING\",\"RIGHT\",\"SELECT\",\"SESSION_USER\",\"SIMILAR\",\"SOME\",\"SYMMETRIC\",\"TABLE\",\"TABLESAMPLE\",\"THEN\",\"TO\",\"TRAILING\",\"TRUE\",\"UNION\",\"UNIQUE\",\"USER\",\"USING\",\"VARIADIC\",\"VERBOSE\",\"WHEN\",\"WHERE\",\"WINDOW\",\"WITH\"],operators:[\"AND\",\"BETWEEN\",\"IN\",\"LIKE\",\"NOT\",\"OR\",\"IS\",\"NULL\",\"INTERSECT\",\"UNION\",\"INNER\",\"JOIN\",\"LEFT\",\"OUTER\",\"RIGHT\"],builtinFunctions:[\"abbrev\",\"abs\",\"acldefault\",\"aclexplode\",\"acos\",\"acosd\",\"acosh\",\"age\",\"any\",\"area\",\"array_agg\",\"array_append\",\"array_cat\",\"array_dims\",\"array_fill\",\"array_length\",\"array_lower\",\"array_ndims\",\"array_position\",\"array_positions\",\"array_prepend\",\"array_remove\",\"array_replace\",\"array_to_json\",\"array_to_string\",\"array_to_tsvector\",\"array_upper\",\"ascii\",\"asin\",\"asind\",\"asinh\",\"atan\",\"atan2\",\"atan2d\",\"atand\",\"atanh\",\"avg\",\"bit\",\"bit_and\",\"bit_count\",\"bit_length\",\"bit_or\",\"bit_xor\",\"bool_and\",\"bool_or\",\"bound_box\",\"box\",\"brin_desummarize_range\",\"brin_summarize_new_values\",\"brin_summarize_range\",\"broadcast\",\"btrim\",\"cardinality\",\"cbrt\",\"ceil\",\"ceiling\",\"center\",\"char_length\",\"character_length\",\"chr\",\"circle\",\"clock_timestamp\",\"coalesce\",\"col_description\",\"concat\",\"concat_ws\",\"convert\",\"convert_from\",\"convert_to\",\"corr\",\"cos\",\"cosd\",\"cosh\",\"cot\",\"cotd\",\"count\",\"covar_pop\",\"covar_samp\",\"cume_dist\",\"current_catalog\",\"current_database\",\"current_date\",\"current_query\",\"current_role\",\"current_schema\",\"current_schemas\",\"current_setting\",\"current_time\",\"current_timestamp\",\"current_user\",\"currval\",\"cursor_to_xml\",\"cursor_to_xmlschema\",\"date_bin\",\"date_part\",\"date_trunc\",\"database_to_xml\",\"database_to_xml_and_xmlschema\",\"database_to_xmlschema\",\"decode\",\"degrees\",\"dense_rank\",\"diagonal\",\"diameter\",\"div\",\"encode\",\"enum_first\",\"enum_last\",\"enum_range\",\"every\",\"exp\",\"extract\",\"factorial\",\"family\",\"first_value\",\"floor\",\"format\",\"format_type\",\"gcd\",\"gen_random_uuid\",\"generate_series\",\"generate_subscripts\",\"get_bit\",\"get_byte\",\"get_current_ts_config\",\"gin_clean_pending_list\",\"greatest\",\"grouping\",\"has_any_column_privilege\",\"has_column_privilege\",\"has_database_privilege\",\"has_foreign_data_wrapper_privilege\",\"has_function_privilege\",\"has_language_privilege\",\"has_schema_privilege\",\"has_sequence_privilege\",\"has_server_privilege\",\"has_table_privilege\",\"has_tablespace_privilege\",\"has_type_privilege\",\"height\",\"host\",\"hostmask\",\"inet_client_addr\",\"inet_client_port\",\"inet_merge\",\"inet_same_family\",\"inet_server_addr\",\"inet_server_port\",\"initcap\",\"isclosed\",\"isempty\",\"isfinite\",\"isopen\",\"json_agg\",\"json_array_elements\",\"json_array_elements_text\",\"json_array_length\",\"json_build_array\",\"json_build_object\",\"json_each\",\"json_each_text\",\"json_extract_path\",\"json_extract_path_text\",\"json_object\",\"json_object_agg\",\"json_object_keys\",\"json_populate_record\",\"json_populate_recordset\",\"json_strip_nulls\",\"json_to_record\",\"json_to_recordset\",\"json_to_tsvector\",\"json_typeof\",\"jsonb_agg\",\"jsonb_array_elements\",\"jsonb_array_elements_text\",\"jsonb_array_length\",\"jsonb_build_array\",\"jsonb_build_object\",\"jsonb_each\",\"jsonb_each_text\",\"jsonb_extract_path\",\"jsonb_extract_path_text\",\"jsonb_insert\",\"jsonb_object\",\"jsonb_object_agg\",\"jsonb_object_keys\",\"jsonb_path_exists\",\"jsonb_path_match\",\"jsonb_path_query\",\"jsonb_path_query_array\",\"jsonb_path_exists_tz\",\"jsonb_path_query_first\",\"jsonb_path_query_array_tz\",\"jsonb_path_query_first_tz\",\"jsonb_path_query_tz\",\"jsonb_path_match_tz\",\"jsonb_populate_record\",\"jsonb_populate_recordset\",\"jsonb_pretty\",\"jsonb_set\",\"jsonb_set_lax\",\"jsonb_strip_nulls\",\"jsonb_to_record\",\"jsonb_to_recordset\",\"jsonb_to_tsvector\",\"jsonb_typeof\",\"justify_days\",\"justify_hours\",\"justify_interval\",\"lag\",\"last_value\",\"lastval\",\"lcm\",\"lead\",\"least\",\"left\",\"length\",\"line\",\"ln\",\"localtime\",\"localtimestamp\",\"log\",\"log10\",\"lower\",\"lower_inc\",\"lower_inf\",\"lpad\",\"lseg\",\"ltrim\",\"macaddr8_set7bit\",\"make_date\",\"make_interval\",\"make_time\",\"make_timestamp\",\"make_timestamptz\",\"makeaclitem\",\"masklen\",\"max\",\"md5\",\"min\",\"min_scale\",\"mod\",\"mode\",\"multirange\",\"netmask\",\"network\",\"nextval\",\"normalize\",\"now\",\"npoints\",\"nth_value\",\"ntile\",\"nullif\",\"num_nonnulls\",\"num_nulls\",\"numnode\",\"obj_description\",\"octet_length\",\"overlay\",\"parse_ident\",\"path\",\"pclose\",\"percent_rank\",\"percentile_cont\",\"percentile_disc\",\"pg_advisory_lock\",\"pg_advisory_lock_shared\",\"pg_advisory_unlock\",\"pg_advisory_unlock_all\",\"pg_advisory_unlock_shared\",\"pg_advisory_xact_lock\",\"pg_advisory_xact_lock_shared\",\"pg_backend_pid\",\"pg_backup_start_time\",\"pg_blocking_pids\",\"pg_cancel_backend\",\"pg_client_encoding\",\"pg_collation_actual_version\",\"pg_collation_is_visible\",\"pg_column_compression\",\"pg_column_size\",\"pg_conf_load_time\",\"pg_control_checkpoint\",\"pg_control_init\",\"pg_control_recovery\",\"pg_control_system\",\"pg_conversion_is_visible\",\"pg_copy_logical_replication_slot\",\"pg_copy_physical_replication_slot\",\"pg_create_logical_replication_slot\",\"pg_create_physical_replication_slot\",\"pg_create_restore_point\",\"pg_current_logfile\",\"pg_current_snapshot\",\"pg_current_wal_flush_lsn\",\"pg_current_wal_insert_lsn\",\"pg_current_wal_lsn\",\"pg_current_xact_id\",\"pg_current_xact_id_if_assigned\",\"pg_current_xlog_flush_location\",\"pg_current_xlog_insert_location\",\"pg_current_xlog_location\",\"pg_database_size\",\"pg_describe_object\",\"pg_drop_replication_slot\",\"pg_event_trigger_ddl_commands\",\"pg_event_trigger_dropped_objects\",\"pg_event_trigger_table_rewrite_oid\",\"pg_event_trigger_table_rewrite_reason\",\"pg_export_snapshot\",\"pg_filenode_relation\",\"pg_function_is_visible\",\"pg_get_catalog_foreign_keys\",\"pg_get_constraintdef\",\"pg_get_expr\",\"pg_get_function_arguments\",\"pg_get_function_identity_arguments\",\"pg_get_function_result\",\"pg_get_functiondef\",\"pg_get_indexdef\",\"pg_get_keywords\",\"pg_get_object_address\",\"pg_get_owned_sequence\",\"pg_get_ruledef\",\"pg_get_serial_sequence\",\"pg_get_statisticsobjdef\",\"pg_get_triggerdef\",\"pg_get_userbyid\",\"pg_get_viewdef\",\"pg_get_wal_replay_pause_state\",\"pg_has_role\",\"pg_identify_object\",\"pg_identify_object_as_address\",\"pg_import_system_collations\",\"pg_index_column_has_property\",\"pg_index_has_property\",\"pg_indexam_has_property\",\"pg_indexes_size\",\"pg_is_in_backup\",\"pg_is_in_recovery\",\"pg_is_other_temp_schema\",\"pg_is_wal_replay_paused\",\"pg_is_xlog_replay_paused\",\"pg_jit_available\",\"pg_last_committed_xact\",\"pg_last_wal_receive_lsn\",\"pg_last_wal_replay_lsn\",\"pg_last_xact_replay_timestamp\",\"pg_last_xlog_receive_location\",\"pg_last_xlog_replay_location\",\"pg_listening_channels\",\"pg_log_backend_memory_contexts\",\"pg_logical_emit_message\",\"pg_logical_slot_get_binary_changes\",\"pg_logical_slot_get_changes\",\"pg_logical_slot_peek_binary_changes\",\"pg_logical_slot_peek_changes\",\"pg_ls_archive_statusdir\",\"pg_ls_dir\",\"pg_ls_logdir\",\"pg_ls_tmpdir\",\"pg_ls_waldir\",\"pg_mcv_list_items\",\"pg_my_temp_schema\",\"pg_notification_queue_usage\",\"pg_opclass_is_visible\",\"pg_operator_is_visible\",\"pg_opfamily_is_visible\",\"pg_options_to_table\",\"pg_partition_ancestors\",\"pg_partition_root\",\"pg_partition_tree\",\"pg_postmaster_start_time\",\"pg_promote\",\"pg_read_binary_file\",\"pg_read_file\",\"pg_relation_filenode\",\"pg_relation_filepath\",\"pg_relation_size\",\"pg_reload_conf\",\"pg_replication_origin_advance\",\"pg_replication_origin_create\",\"pg_replication_origin_drop\",\"pg_replication_origin_oid\",\"pg_replication_origin_progress\",\"pg_replication_origin_session_is_setup\",\"pg_replication_origin_session_progress\",\"pg_replication_origin_session_reset\",\"pg_replication_origin_session_setup\",\"pg_replication_origin_xact_reset\",\"pg_replication_origin_xact_setup\",\"pg_replication_slot_advance\",\"pg_rotate_logfile\",\"pg_safe_snapshot_blocking_pids\",\"pg_size_bytes\",\"pg_size_pretty\",\"pg_sleep\",\"pg_sleep_for\",\"pg_sleep_until\",\"pg_snapshot_xip\",\"pg_snapshot_xmax\",\"pg_snapshot_xmin\",\"pg_start_backup\",\"pg_stat_file\",\"pg_statistics_obj_is_visible\",\"pg_stop_backup\",\"pg_switch_wal\",\"pg_switch_xlog\",\"pg_table_is_visible\",\"pg_table_size\",\"pg_tablespace_databases\",\"pg_tablespace_location\",\"pg_tablespace_size\",\"pg_terminate_backend\",\"pg_total_relation_size\",\"pg_trigger_depth\",\"pg_try_advisory_lock\",\"pg_try_advisory_lock_shared\",\"pg_try_advisory_xact_lock\",\"pg_try_advisory_xact_lock_shared\",\"pg_ts_config_is_visible\",\"pg_ts_dict_is_visible\",\"pg_ts_parser_is_visible\",\"pg_ts_template_is_visible\",\"pg_type_is_visible\",\"pg_typeof\",\"pg_visible_in_snapshot\",\"pg_wal_lsn_diff\",\"pg_wal_replay_pause\",\"pg_wal_replay_resume\",\"pg_walfile_name\",\"pg_walfile_name_offset\",\"pg_xact_commit_timestamp\",\"pg_xact_commit_timestamp_origin\",\"pg_xact_status\",\"pg_xlog_location_diff\",\"pg_xlog_replay_pause\",\"pg_xlog_replay_resume\",\"pg_xlogfile_name\",\"pg_xlogfile_name_offset\",\"phraseto_tsquery\",\"pi\",\"plainto_tsquery\",\"point\",\"polygon\",\"popen\",\"position\",\"power\",\"pqserverversion\",\"query_to_xml\",\"query_to_xml_and_xmlschema\",\"query_to_xmlschema\",\"querytree\",\"quote_ident\",\"quote_literal\",\"quote_nullable\",\"radians\",\"radius\",\"random\",\"range_agg\",\"range_intersect_agg\",\"range_merge\",\"rank\",\"regexp_count\",\"regexp_instr\",\"regexp_like\",\"regexp_match\",\"regexp_matches\",\"regexp_replace\",\"regexp_split_to_array\",\"regexp_split_to_table\",\"regexp_substr\",\"regr_avgx\",\"regr_avgy\",\"regr_count\",\"regr_intercept\",\"regr_r2\",\"regr_slope\",\"regr_sxx\",\"regr_sxy\",\"regr_syy\",\"repeat\",\"replace\",\"reverse\",\"right\",\"round\",\"row_number\",\"row_security_active\",\"row_to_json\",\"rpad\",\"rtrim\",\"scale\",\"schema_to_xml\",\"schema_to_xml_and_xmlschema\",\"schema_to_xmlschema\",\"session_user\",\"set_bit\",\"set_byte\",\"set_config\",\"set_masklen\",\"setseed\",\"setval\",\"setweight\",\"sha224\",\"sha256\",\"sha384\",\"sha512\",\"shobj_description\",\"sign\",\"sin\",\"sind\",\"sinh\",\"slope\",\"split_part\",\"sprintf\",\"sqrt\",\"starts_with\",\"statement_timestamp\",\"stddev\",\"stddev_pop\",\"stddev_samp\",\"string_agg\",\"string_to_array\",\"string_to_table\",\"strip\",\"strpos\",\"substr\",\"substring\",\"sum\",\"suppress_redundant_updates_trigger\",\"table_to_xml\",\"table_to_xml_and_xmlschema\",\"table_to_xmlschema\",\"tan\",\"tand\",\"tanh\",\"text\",\"timeofday\",\"timezone\",\"to_ascii\",\"to_char\",\"to_date\",\"to_hex\",\"to_json\",\"to_number\",\"to_regclass\",\"to_regcollation\",\"to_regnamespace\",\"to_regoper\",\"to_regoperator\",\"to_regproc\",\"to_regprocedure\",\"to_regrole\",\"to_regtype\",\"to_timestamp\",\"to_tsquery\",\"to_tsvector\",\"transaction_timestamp\",\"translate\",\"trim\",\"trim_array\",\"trim_scale\",\"trunc\",\"ts_debug\",\"ts_delete\",\"ts_filter\",\"ts_headline\",\"ts_lexize\",\"ts_parse\",\"ts_rank\",\"ts_rank_cd\",\"ts_rewrite\",\"ts_stat\",\"ts_token_type\",\"tsquery_phrase\",\"tsvector_to_array\",\"tsvector_update_trigger\",\"tsvector_update_trigger_column\",\"txid_current\",\"txid_current_if_assigned\",\"txid_current_snapshot\",\"txid_snapshot_xip\",\"txid_snapshot_xmax\",\"txid_snapshot_xmin\",\"txid_status\",\"txid_visible_in_snapshot\",\"unistr\",\"unnest\",\"upper\",\"upper_inc\",\"upper_inf\",\"user\",\"var_pop\",\"var_samp\",\"variance\",\"version\",\"websearch_to_tsquery\",\"width\",\"width_bucket\",\"xml_is_well_formed\",\"xml_is_well_formed_content\",\"xml_is_well_formed_document\",\"xmlagg\",\"xmlcomment\",\"xmlconcat\",\"xmlelement\",\"xmlexists\",\"xmlforest\",\"xmlparse\",\"xmlpi\",\"xmlroot\",\"xmlserialize\",\"xpath\",\"xpath_exists\"],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:\"@comments\"},{include:\"@whitespace\"},{include:\"@pseudoColumns\"},{include:\"@numbers\"},{include:\"@strings\"},{include:\"@complexIdentifiers\"},{include:\"@scopes\"},[/[;,.]/,\"delimiter\"],[/[()]/,\"@brackets\"],[/[\\w@#$]+/,{cases:{\"@operators\":\"operator\",\"@builtinVariables\":\"predefined\",\"@builtinFunctions\":\"predefined\",\"@keywords\":\"keyword\",\"@default\":\"identifier\"}}],[/[<>=!%&+\\-*/|~^]/,\"operator\"]],whitespace:[[/\\s+/,\"white\"]],comments:[[/--+.*/,\"comment\"],[/\\/\\*/,{token:\"comment.quote\",next:\"@comment\"}]],comment:[[/[^*/]+/,\"comment\"],[/\\*\\//,{token:\"comment.quote\",next:\"@pop\"}],[/./,\"comment\"]],pseudoColumns:[[/[$][A-Za-z_][\\w@#$]*/,{cases:{\"@pseudoColumns\":\"predefined\",\"@default\":\"identifier\"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,\"number\"],[/[$][+-]*\\d*(\\.\\d*)?/,\"number\"],[/((\\d+(\\.\\d*)?)|(\\.\\d+))([eE][\\-+]?\\d+)?/,\"number\"]],strings:[[/'/,{token:\"string\",next:\"@string\"}]],string:[[/[^']+/,\"string\"],[/''/,\"string\"],[/'/,{token:\"string\",next:\"@pop\"}]],complexIdentifiers:[[/\"/,{token:\"identifier.quote\",next:\"@quotedIdentifier\"}]],quotedIdentifier:[[/[^\"]+/,\"identifier\"],[/\"\"/,\"identifier\"],[/\"/,{token:\"identifier.quote\",next:\"@pop\"}]],scopes:[]}};return g(m);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/php/php.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/php/php\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var i=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var s=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},h=(t,e,n,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let p of m(e))!a.call(t,p)&&p!==n&&i(t,p,{get:()=>e[p],enumerable:!(r=o(e,p))||r.enumerable});return t};var l=t=>h(i({},\"__esModule\",{value:!0}),t);var u={};s(u,{conf:()=>d,language:()=>c});var d={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\",notIn:[\"string\"]},{open:\"[\",close:\"]\",notIn:[\"string\"]},{open:\"(\",close:\")\",notIn:[\"string\"]},{open:'\"',close:'\"',notIn:[\"string\"]},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]}],folding:{markers:{start:new RegExp(\"^\\\\s*(#|//)region\\\\b\"),end:new RegExp(\"^\\\\s*(#|//)endregion\\\\b\")}}},c={defaultToken:\"\",tokenPostfix:\"\",tokenizer:{root:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInSimpleState.root\"}],[/<!DOCTYPE/,\"metatag.html\",\"@doctype\"],[/<!--/,\"comment.html\",\"@comment\"],[/(<)(\\w+)(\\/>)/,[\"delimiter.html\",\"tag.html\",\"delimiter.html\"]],[/(<)(script)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@script\"}]],[/(<)(style)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@style\"}]],[/(<)([:\\w]+)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@otherTag\"}]],[/(<\\/)(\\w+)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@otherTag\"}]],[/</,\"delimiter.html\"],[/[^<]+/]],doctype:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInSimpleState.comment\"}],[/[^>]+/,\"metatag.content.html\"],[/>/,\"metatag.html\",\"@pop\"]],comment:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInSimpleState.comment\"}],[/-->/,\"comment.html\",\"@pop\"],[/[^-]+/,\"comment.content.html\"],[/./,\"comment.content.html\"]],otherTag:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInSimpleState.otherTag\"}],[/\\/?>/,\"delimiter.html\",\"@pop\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/]],script:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInSimpleState.script\"}],[/type/,\"attribute.name\",\"@scriptAfterType\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.text/javascript\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/(<\\/)(script\\s*)(>)/,[\"delimiter.html\",\"tag.html\",{token:\"delimiter.html\",next:\"@pop\"}]]],scriptAfterType:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInSimpleState.scriptAfterType\"}],[/=/,\"delimiter\",\"@scriptAfterTypeEquals\"],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.text/javascript\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptAfterTypeEquals:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInSimpleState.scriptAfterTypeEquals\"}],[/\"([^\"]*)\"/,{token:\"attribute.value\",switchTo:\"@scriptWithCustomType.$1\"}],[/'([^']*)'/,{token:\"attribute.value\",switchTo:\"@scriptWithCustomType.$1\"}],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.text/javascript\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptWithCustomType:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInSimpleState.scriptWithCustomType.$S2\"}],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.$S2\",nextEmbedded:\"$S2\"}],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptEmbedded:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInEmbeddedState.scriptEmbedded.$S2\",nextEmbedded:\"@pop\"}],[/<\\/script/,{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}]],style:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInSimpleState.style\"}],[/type/,\"attribute.name\",\"@styleAfterType\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.text/css\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/(<\\/)(style\\s*)(>)/,[\"delimiter.html\",\"tag.html\",{token:\"delimiter.html\",next:\"@pop\"}]]],styleAfterType:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInSimpleState.styleAfterType\"}],[/=/,\"delimiter\",\"@styleAfterTypeEquals\"],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.text/css\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleAfterTypeEquals:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInSimpleState.styleAfterTypeEquals\"}],[/\"([^\"]*)\"/,{token:\"attribute.value\",switchTo:\"@styleWithCustomType.$1\"}],[/'([^']*)'/,{token:\"attribute.value\",switchTo:\"@styleWithCustomType.$1\"}],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.text/css\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleWithCustomType:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInSimpleState.styleWithCustomType.$S2\"}],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.$S2\",nextEmbedded:\"$S2\"}],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleEmbedded:[[/<\\?((php)|=)?/,{token:\"@rematch\",switchTo:\"@phpInEmbeddedState.styleEmbedded.$S2\",nextEmbedded:\"@pop\"}],[/<\\/style/,{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}]],phpInSimpleState:[[/<\\?((php)|=)?/,\"metatag.php\"],[/\\?>/,{token:\"metatag.php\",switchTo:\"@$S2.$S3\"}],{include:\"phpRoot\"}],phpInEmbeddedState:[[/<\\?((php)|=)?/,\"metatag.php\"],[/\\?>/,{token:\"metatag.php\",switchTo:\"@$S2.$S3\",nextEmbedded:\"$S3\"}],{include:\"phpRoot\"}],phpRoot:[[/[a-zA-Z_]\\w*/,{cases:{\"@phpKeywords\":{token:\"keyword.php\"},\"@phpCompileTimeConstants\":{token:\"constant.php\"},\"@default\":\"identifier.php\"}}],[/[$a-zA-Z_]\\w*/,{cases:{\"@phpPreDefinedVariables\":{token:\"variable.predefined.php\"},\"@default\":\"variable.php\"}}],[/[{}]/,\"delimiter.bracket.php\"],[/[\\[\\]]/,\"delimiter.array.php\"],[/[()]/,\"delimiter.parenthesis.php\"],[/[ \\t\\r\\n]+/],[/(#|\\/\\/)$/,\"comment.php\"],[/(#|\\/\\/)/,\"comment.php\",\"@phpLineComment\"],[/\\/\\*/,\"comment.php\",\"@phpComment\"],[/\"/,\"string.php\",\"@phpDoubleQuoteString\"],[/'/,\"string.php\",\"@phpSingleQuoteString\"],[/[\\+\\-\\*\\%\\&\\|\\^\\~\\!\\=\\<\\>\\/\\?\\;\\:\\.\\,\\@]/,\"delimiter.php\"],[/\\d*\\d+[eE]([\\-+]?\\d+)?/,\"number.float.php\"],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float.php\"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,\"number.hex.php\"],[/0[0-7']*[0-7]/,\"number.octal.php\"],[/0[bB][0-1']*[0-1]/,\"number.binary.php\"],[/\\d[\\d']*/,\"number.php\"],[/\\d/,\"number.php\"]],phpComment:[[/\\*\\//,\"comment.php\",\"@pop\"],[/[^*]+/,\"comment.php\"],[/./,\"comment.php\"]],phpLineComment:[[/\\?>/,{token:\"@rematch\",next:\"@pop\"}],[/.$/,\"comment.php\",\"@pop\"],[/[^?]+$/,\"comment.php\",\"@pop\"],[/[^?]+/,\"comment.php\"],[/./,\"comment.php\"]],phpDoubleQuoteString:[[/[^\\\\\"]+/,\"string.php\"],[/@escapes/,\"string.escape.php\"],[/\\\\./,\"string.escape.invalid.php\"],[/\"/,\"string.php\",\"@pop\"]],phpSingleQuoteString:[[/[^\\\\']+/,\"string.php\"],[/@escapes/,\"string.escape.php\"],[/\\\\./,\"string.escape.invalid.php\"],[/'/,\"string.php\",\"@pop\"]]},phpKeywords:[\"abstract\",\"and\",\"array\",\"as\",\"break\",\"callable\",\"case\",\"catch\",\"cfunction\",\"class\",\"clone\",\"const\",\"continue\",\"declare\",\"default\",\"do\",\"else\",\"elseif\",\"enddeclare\",\"endfor\",\"endforeach\",\"endif\",\"endswitch\",\"endwhile\",\"extends\",\"false\",\"final\",\"for\",\"foreach\",\"function\",\"global\",\"goto\",\"if\",\"implements\",\"interface\",\"instanceof\",\"insteadof\",\"namespace\",\"new\",\"null\",\"object\",\"old_function\",\"or\",\"private\",\"protected\",\"public\",\"resource\",\"static\",\"switch\",\"throw\",\"trait\",\"try\",\"true\",\"use\",\"var\",\"while\",\"xor\",\"die\",\"echo\",\"empty\",\"exit\",\"eval\",\"include\",\"include_once\",\"isset\",\"list\",\"require\",\"require_once\",\"return\",\"print\",\"unset\",\"yield\",\"__construct\"],phpCompileTimeConstants:[\"__CLASS__\",\"__DIR__\",\"__FILE__\",\"__LINE__\",\"__NAMESPACE__\",\"__METHOD__\",\"__FUNCTION__\",\"__TRAIT__\"],phpPreDefinedVariables:[\"$GLOBALS\",\"$_SERVER\",\"$_GET\",\"$_POST\",\"$_FILES\",\"$_REQUEST\",\"$_SESSION\",\"$_ENV\",\"$_COOKIE\",\"$php_errormsg\",\"$HTTP_RAW_POST_DATA\",\"$http_response_header\",\"$argc\",\"$argv\"],escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/};return l(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/pla/pla.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/pla/pla\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var l=(o,e)=>{for(var n in e)s(o,n,{get:e[n],enumerable:!0})},c=(o,e,n,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of r(e))!p.call(o,t)&&t!==n&&s(o,t,{get:()=>e[t],enumerable:!(i=a(e,t))||i.enumerable});return o};var d=o=>c(s({},\"__esModule\",{value:!0}),o);var u={};l(u,{conf:()=>k,language:()=>m});var k={comments:{lineComment:\"#\"},brackets:[[\"[\",\"]\"],[\"<\",\">\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"[\",close:\"]\"},{open:\"<\",close:\">\"},{open:\"(\",close:\")\"}],surroundingPairs:[{open:\"[\",close:\"]\"},{open:\"<\",close:\">\"},{open:\"(\",close:\")\"}]},m={defaultToken:\"\",tokenPostfix:\".pla\",brackets:[{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],keywords:[\".i\",\".o\",\".mv\",\".ilb\",\".ob\",\".label\",\".type\",\".phase\",\".pair\",\".symbolic\",\".symbolic-output\",\".kiss\",\".p\",\".e\",\".end\"],comment:/#.*$/,identifier:/[a-zA-Z]+[a-zA-Z0-9_\\-]*/,plaContent:/[01\\-~\\|]+/,tokenizer:{root:[{include:\"@whitespace\"},[/@comment/,\"comment\"],[/\\.([a-zA-Z_\\-]+)/,{cases:{\"@eos\":{token:\"keyword.$1\"},\"@keywords\":{cases:{\".type\":{token:\"keyword.$1\",next:\"@type\"},\"@default\":{token:\"keyword.$1\",next:\"@keywordArg\"}}},\"@default\":{token:\"keyword.$1\"}}}],[/@identifier/,\"identifier\"],[/@plaContent/,\"string\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"]],type:[{include:\"@whitespace\"},[/\\w+/,{token:\"type\",next:\"@pop\"}]],keywordArg:[[/[ \\t\\r\\n]+/,{cases:{\"@eos\":{token:\"\",next:\"@pop\"},\"@default\":\"\"}}],[/@comment/,\"comment\",\"@pop\"],[/[<>()\\[\\]]/,{cases:{\"@eos\":{token:\"@brackets\",next:\"@pop\"},\"@default\":\"@brackets\"}}],[/\\-?\\d+/,{cases:{\"@eos\":{token:\"number\",next:\"@pop\"},\"@default\":\"number\"}}],[/@identifier/,{cases:{\"@eos\":{token:\"identifier\",next:\"@pop\"},\"@default\":\"identifier\"}}],[/[;=]/,{cases:{\"@eos\":{token:\"delimiter\",next:\"@pop\"},\"@default\":\"delimiter\"}}]]}};return d(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/postiats/postiats.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/postiats/postiats\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var p=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},l=(t,e,o,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of s(e))!c.call(t,n)&&n!==o&&i(t,n,{get:()=>e[n],enumerable:!(r=a(e,n))||r.enumerable});return t};var d=t=>l(i({},\"__esModule\",{value:!0}),t);var g={};p(g,{conf:()=>m,language:()=>x});var m={comments:{lineComment:\"//\",blockComment:[\"(*\",\"*)\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"],[\"<\",\">\"]],autoClosingPairs:[{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]},{open:\"{\",close:\"}\",notIn:[\"string\",\"comment\"]},{open:\"[\",close:\"]\",notIn:[\"string\",\"comment\"]},{open:\"(\",close:\")\",notIn:[\"string\",\"comment\"]}]},x={tokenPostfix:\".pats\",defaultToken:\"invalid\",keywords:[\"abstype\",\"abst0ype\",\"absprop\",\"absview\",\"absvtype\",\"absviewtype\",\"absvt0ype\",\"absviewt0ype\",\"as\",\"and\",\"assume\",\"begin\",\"classdec\",\"datasort\",\"datatype\",\"dataprop\",\"dataview\",\"datavtype\",\"dataviewtype\",\"do\",\"end\",\"extern\",\"extype\",\"extvar\",\"exception\",\"fn\",\"fnx\",\"fun\",\"prfn\",\"prfun\",\"praxi\",\"castfn\",\"if\",\"then\",\"else\",\"ifcase\",\"in\",\"infix\",\"infixl\",\"infixr\",\"prefix\",\"postfix\",\"implmnt\",\"implement\",\"primplmnt\",\"primplement\",\"import\",\"let\",\"local\",\"macdef\",\"macrodef\",\"nonfix\",\"symelim\",\"symintr\",\"overload\",\"of\",\"op\",\"rec\",\"sif\",\"scase\",\"sortdef\",\"sta\",\"stacst\",\"stadef\",\"static\",\"staload\",\"dynload\",\"try\",\"tkindef\",\"typedef\",\"propdef\",\"viewdef\",\"vtypedef\",\"viewtypedef\",\"prval\",\"var\",\"prvar\",\"when\",\"where\",\"with\",\"withtype\",\"withprop\",\"withview\",\"withvtype\",\"withviewtype\"],keywords_dlr:[\"$delay\",\"$ldelay\",\"$arrpsz\",\"$arrptrsize\",\"$d2ctype\",\"$effmask\",\"$effmask_ntm\",\"$effmask_exn\",\"$effmask_ref\",\"$effmask_wrt\",\"$effmask_all\",\"$extern\",\"$extkind\",\"$extype\",\"$extype_struct\",\"$extval\",\"$extfcall\",\"$extmcall\",\"$literal\",\"$myfilename\",\"$mylocation\",\"$myfunction\",\"$lst\",\"$lst_t\",\"$lst_vt\",\"$list\",\"$list_t\",\"$list_vt\",\"$rec\",\"$rec_t\",\"$rec_vt\",\"$record\",\"$record_t\",\"$record_vt\",\"$tup\",\"$tup_t\",\"$tup_vt\",\"$tuple\",\"$tuple_t\",\"$tuple_vt\",\"$break\",\"$continue\",\"$raise\",\"$showtype\",\"$vcopyenv_v\",\"$vcopyenv_vt\",\"$tempenver\",\"$solver_assert\",\"$solver_verify\"],keywords_srp:[\"#if\",\"#ifdef\",\"#ifndef\",\"#then\",\"#elif\",\"#elifdef\",\"#elifndef\",\"#else\",\"#endif\",\"#error\",\"#prerr\",\"#print\",\"#assert\",\"#undef\",\"#define\",\"#include\",\"#require\",\"#pragma\",\"#codegen2\",\"#codegen3\"],irregular_keyword_list:[\"val+\",\"val-\",\"val\",\"case+\",\"case-\",\"case\",\"addr@\",\"addr\",\"fold@\",\"free@\",\"fix@\",\"fix\",\"lam@\",\"lam\",\"llam@\",\"llam\",\"viewt@ype+\",\"viewt@ype-\",\"viewt@ype\",\"viewtype+\",\"viewtype-\",\"viewtype\",\"view+\",\"view-\",\"view@\",\"view\",\"type+\",\"type-\",\"type\",\"vtype+\",\"vtype-\",\"vtype\",\"vt@ype+\",\"vt@ype-\",\"vt@ype\",\"viewt@ype+\",\"viewt@ype-\",\"viewt@ype\",\"viewtype+\",\"viewtype-\",\"viewtype\",\"prop+\",\"prop-\",\"prop\",\"type+\",\"type-\",\"type\",\"t@ype\",\"t@ype+\",\"t@ype-\",\"abst@ype\",\"abstype\",\"absviewt@ype\",\"absvt@ype\",\"for*\",\"for\",\"while*\",\"while\"],keywords_types:[\"bool\",\"double\",\"byte\",\"int\",\"short\",\"char\",\"void\",\"unit\",\"long\",\"float\",\"string\",\"strptr\"],keywords_effects:[\"0\",\"fun\",\"clo\",\"prf\",\"funclo\",\"cloptr\",\"cloref\",\"ref\",\"ntm\",\"1\"],operators:[\"@\",\"!\",\"|\",\"`\",\":\",\"$\",\".\",\"=\",\"#\",\"~\",\"..\",\"...\",\"=>\",\"=<>\",\"=/=>\",\"=>>\",\"=/=>>\",\"<\",\">\",\"><\",\".<\",\">.\",\".<>.\",\"->\",\"-<>\"],brackets:[{open:\",(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"`(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"%(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"'(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"'{\",close:\"}\",token:\"delimiter.parenthesis\"},{open:\"@(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"@{\",close:\"}\",token:\"delimiter.brace\"},{open:\"@[\",close:\"]\",token:\"delimiter.square\"},{open:\"#[\",close:\"]\",token:\"delimiter.square\"},{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,IDENTFST:/[a-zA-Z_]/,IDENTRST:/[a-zA-Z0-9_'$]/,symbolic:/[%&+-./:=@~`^|*!$#?<>]/,digit:/[0-9]/,digitseq0:/@digit*/,xdigit:/[0-9A-Za-z]/,xdigitseq0:/@xdigit*/,INTSP:/[lLuU]/,FLOATSP:/[fFlL]/,fexponent:/[eE][+-]?[0-9]+/,fexponent_bin:/[pP][+-]?[0-9]+/,deciexp:/\\.[0-9]*@fexponent?/,hexiexp:/\\.[0-9a-zA-Z]*@fexponent_bin?/,irregular_keywords:/val[+-]?|case[+-]?|addr\\@?|fold\\@|free\\@|fix\\@?|lam\\@?|llam\\@?|prop[+-]?|type[+-]?|view[+-@]?|viewt@?ype[+-]?|t@?ype[+-]?|v(iew)?t@?ype[+-]?|abst@?ype|absv(iew)?t@?ype|for\\*?|while\\*?/,ESCHAR:/[ntvbrfa\\\\\\?'\"\\(\\[\\{]/,start:\"root\",tokenizer:{root:[{regex:/[ \\t\\r\\n]+/,action:{token:\"\"}},{regex:/\\(\\*\\)/,action:{token:\"invalid\"}},{regex:/\\(\\*/,action:{token:\"comment\",next:\"lexing_COMMENT_block_ml\"}},{regex:/\\(/,action:\"@brackets\"},{regex:/\\)/,action:\"@brackets\"},{regex:/\\[/,action:\"@brackets\"},{regex:/\\]/,action:\"@brackets\"},{regex:/\\{/,action:\"@brackets\"},{regex:/\\}/,action:\"@brackets\"},{regex:/,\\(/,action:\"@brackets\"},{regex:/,/,action:{token:\"delimiter.comma\"}},{regex:/;/,action:{token:\"delimiter.semicolon\"}},{regex:/@\\(/,action:\"@brackets\"},{regex:/@\\[/,action:\"@brackets\"},{regex:/@\\{/,action:\"@brackets\"},{regex:/:</,action:{token:\"keyword\",next:\"@lexing_EFFECT_commaseq0\"}},{regex:/\\.@symbolic+/,action:{token:\"identifier.sym\"}},{regex:/\\.@digit*@fexponent@FLOATSP*/,action:{token:\"number.float\"}},{regex:/\\.@digit+/,action:{token:\"number.float\"}},{regex:/\\$@IDENTFST@IDENTRST*/,action:{cases:{\"@keywords_dlr\":{token:\"keyword.dlr\"},\"@default\":{token:\"namespace\"}}}},{regex:/\\#@IDENTFST@IDENTRST*/,action:{cases:{\"@keywords_srp\":{token:\"keyword.srp\"},\"@default\":{token:\"identifier\"}}}},{regex:/%\\(/,action:{token:\"delimiter.parenthesis\"}},{regex:/^%{(#|\\^|\\$)?/,action:{token:\"keyword\",next:\"@lexing_EXTCODE\",nextEmbedded:\"text/javascript\"}},{regex:/^%}/,action:{token:\"keyword\"}},{regex:/'\\(/,action:{token:\"delimiter.parenthesis\"}},{regex:/'\\[/,action:{token:\"delimiter.bracket\"}},{regex:/'\\{/,action:{token:\"delimiter.brace\"}},[/(')(\\\\@ESCHAR|\\\\[xX]@xdigit+|\\\\@digit+)(')/,[\"string\",\"string.escape\",\"string\"]],[/'[^\\\\']'/,\"string\"],[/\"/,\"string.quote\",\"@lexing_DQUOTE\"],{regex:/`\\(/,action:\"@brackets\"},{regex:/\\\\/,action:{token:\"punctuation\"}},{regex:/@irregular_keywords(?!@IDENTRST)/,action:{token:\"keyword\"}},{regex:/@IDENTFST@IDENTRST*[<!\\[]?/,action:{cases:{\"@keywords\":{token:\"keyword\"},\"@keywords_types\":{token:\"type\"},\"@default\":{token:\"identifier\"}}}},{regex:/\\/\\/\\/\\//,action:{token:\"comment\",next:\"@lexing_COMMENT_rest\"}},{regex:/\\/\\/.*$/,action:{token:\"comment\"}},{regex:/\\/\\*/,action:{token:\"comment\",next:\"@lexing_COMMENT_block_c\"}},{regex:/-<|=</,action:{token:\"keyword\",next:\"@lexing_EFFECT_commaseq0\"}},{regex:/@symbolic+/,action:{cases:{\"@operators\":\"keyword\",\"@default\":\"operator\"}}},{regex:/0[xX]@xdigit+(@hexiexp|@fexponent_bin)@FLOATSP*/,action:{token:\"number.float\"}},{regex:/0[xX]@xdigit+@INTSP*/,action:{token:\"number.hex\"}},{regex:/0[0-7]+(?![0-9])@INTSP*/,action:{token:\"number.octal\"}},{regex:/@digit+(@fexponent|@deciexp)@FLOATSP*/,action:{token:\"number.float\"}},{regex:/@digit@digitseq0@INTSP*/,action:{token:\"number.decimal\"}},{regex:/@digit+@INTSP*/,action:{token:\"number\"}}],lexing_COMMENT_block_ml:[[/[^\\(\\*]+/,\"comment\"],[/\\(\\*/,\"comment\",\"@push\"],[/\\(\\*/,\"comment.invalid\"],[/\\*\\)/,\"comment\",\"@pop\"],[/\\*/,\"comment\"]],lexing_COMMENT_block_c:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],lexing_COMMENT_rest:[[/$/,\"comment\",\"@pop\"],[/.*/,\"comment\"]],lexing_EFFECT_commaseq0:[{regex:/@IDENTFST@IDENTRST+|@digit+/,action:{cases:{\"@keywords_effects\":{token:\"type.effect\"},\"@default\":{token:\"identifier\"}}}},{regex:/,/,action:{token:\"punctuation\"}},{regex:/>/,action:{token:\"@rematch\",next:\"@pop\"}}],lexing_EXTCODE:[{regex:/^%}/,action:{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}},{regex:/[^%]+/,action:\"\"}],lexing_DQUOTE:[{regex:/\"/,action:{token:\"string.quote\",next:\"@pop\"}},{regex:/(\\{\\$)(@IDENTFST@IDENTRST*)(\\})/,action:[{token:\"string.escape\"},{token:\"identifier\"},{token:\"string.escape\"}]},{regex:/\\\\$/,action:{token:\"string.escape\"}},{regex:/\\\\(@ESCHAR|[xX]@xdigit+|@digit+)/,action:{token:\"string.escape\"}},{regex:/[^\\\\\"]+/,action:{token:\"string\"}}]}};return d(g);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/powerquery/powerquery.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/powerquery/powerquery\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var i=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var T=(t,e)=>{for(var n in e)i(t,n,{get:e[n],enumerable:!0})},m=(t,e,n,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let a of s(e))!l.call(t,a)&&a!==n&&i(t,a,{get:()=>e[a],enumerable:!(o=r(e,a))||o.enumerable});return t};var u=t=>m(i({},\"__esModule\",{value:!0}),t);var b={};T(b,{conf:()=>d,language:()=>c});var d={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"[\",\"]\"],[\"(\",\")\"],[\"{\",\"}\"]],autoClosingPairs:[{open:'\"',close:'\"',notIn:[\"string\",\"comment\",\"identifier\"]},{open:\"[\",close:\"]\",notIn:[\"string\",\"comment\",\"identifier\"]},{open:\"(\",close:\")\",notIn:[\"string\",\"comment\",\"identifier\"]},{open:\"{\",close:\"}\",notIn:[\"string\",\"comment\",\"identifier\"]}]},c={defaultToken:\"\",tokenPostfix:\".pq\",ignoreCase:!1,brackets:[{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"{\",close:\"}\",token:\"delimiter.brackets\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],operatorKeywords:[\"and\",\"not\",\"or\"],keywords:[\"as\",\"each\",\"else\",\"error\",\"false\",\"if\",\"in\",\"is\",\"let\",\"meta\",\"otherwise\",\"section\",\"shared\",\"then\",\"true\",\"try\",\"type\"],constructors:[\"#binary\",\"#date\",\"#datetime\",\"#datetimezone\",\"#duration\",\"#table\",\"#time\"],constants:[\"#infinity\",\"#nan\",\"#sections\",\"#shared\"],typeKeywords:[\"action\",\"any\",\"anynonnull\",\"none\",\"null\",\"logical\",\"number\",\"time\",\"date\",\"datetime\",\"datetimezone\",\"duration\",\"text\",\"binary\",\"list\",\"record\",\"table\",\"function\"],builtinFunctions:[\"Access.Database\",\"Action.Return\",\"Action.Sequence\",\"Action.Try\",\"ActiveDirectory.Domains\",\"AdoDotNet.DataSource\",\"AdoDotNet.Query\",\"AdobeAnalytics.Cubes\",\"AnalysisServices.Database\",\"AnalysisServices.Databases\",\"AzureStorage.BlobContents\",\"AzureStorage.Blobs\",\"AzureStorage.Tables\",\"Binary.Buffer\",\"Binary.Combine\",\"Binary.Compress\",\"Binary.Decompress\",\"Binary.End\",\"Binary.From\",\"Binary.FromList\",\"Binary.FromText\",\"Binary.InferContentType\",\"Binary.Length\",\"Binary.ToList\",\"Binary.ToText\",\"BinaryFormat.7BitEncodedSignedInteger\",\"BinaryFormat.7BitEncodedUnsignedInteger\",\"BinaryFormat.Binary\",\"BinaryFormat.Byte\",\"BinaryFormat.ByteOrder\",\"BinaryFormat.Choice\",\"BinaryFormat.Decimal\",\"BinaryFormat.Double\",\"BinaryFormat.Group\",\"BinaryFormat.Length\",\"BinaryFormat.List\",\"BinaryFormat.Null\",\"BinaryFormat.Record\",\"BinaryFormat.SignedInteger16\",\"BinaryFormat.SignedInteger32\",\"BinaryFormat.SignedInteger64\",\"BinaryFormat.Single\",\"BinaryFormat.Text\",\"BinaryFormat.Transform\",\"BinaryFormat.UnsignedInteger16\",\"BinaryFormat.UnsignedInteger32\",\"BinaryFormat.UnsignedInteger64\",\"Byte.From\",\"Character.FromNumber\",\"Character.ToNumber\",\"Combiner.CombineTextByDelimiter\",\"Combiner.CombineTextByEachDelimiter\",\"Combiner.CombineTextByLengths\",\"Combiner.CombineTextByPositions\",\"Combiner.CombineTextByRanges\",\"Comparer.Equals\",\"Comparer.FromCulture\",\"Comparer.Ordinal\",\"Comparer.OrdinalIgnoreCase\",\"Csv.Document\",\"Cube.AddAndExpandDimensionColumn\",\"Cube.AddMeasureColumn\",\"Cube.ApplyParameter\",\"Cube.AttributeMemberId\",\"Cube.AttributeMemberProperty\",\"Cube.CollapseAndRemoveColumns\",\"Cube.Dimensions\",\"Cube.DisplayFolders\",\"Cube.Measures\",\"Cube.Parameters\",\"Cube.Properties\",\"Cube.PropertyKey\",\"Cube.ReplaceDimensions\",\"Cube.Transform\",\"Currency.From\",\"DB2.Database\",\"Date.AddDays\",\"Date.AddMonths\",\"Date.AddQuarters\",\"Date.AddWeeks\",\"Date.AddYears\",\"Date.Day\",\"Date.DayOfWeek\",\"Date.DayOfWeekName\",\"Date.DayOfYear\",\"Date.DaysInMonth\",\"Date.EndOfDay\",\"Date.EndOfMonth\",\"Date.EndOfQuarter\",\"Date.EndOfWeek\",\"Date.EndOfYear\",\"Date.From\",\"Date.FromText\",\"Date.IsInCurrentDay\",\"Date.IsInCurrentMonth\",\"Date.IsInCurrentQuarter\",\"Date.IsInCurrentWeek\",\"Date.IsInCurrentYear\",\"Date.IsInNextDay\",\"Date.IsInNextMonth\",\"Date.IsInNextNDays\",\"Date.IsInNextNMonths\",\"Date.IsInNextNQuarters\",\"Date.IsInNextNWeeks\",\"Date.IsInNextNYears\",\"Date.IsInNextQuarter\",\"Date.IsInNextWeek\",\"Date.IsInNextYear\",\"Date.IsInPreviousDay\",\"Date.IsInPreviousMonth\",\"Date.IsInPreviousNDays\",\"Date.IsInPreviousNMonths\",\"Date.IsInPreviousNQuarters\",\"Date.IsInPreviousNWeeks\",\"Date.IsInPreviousNYears\",\"Date.IsInPreviousQuarter\",\"Date.IsInPreviousWeek\",\"Date.IsInPreviousYear\",\"Date.IsInYearToDate\",\"Date.IsLeapYear\",\"Date.Month\",\"Date.MonthName\",\"Date.QuarterOfYear\",\"Date.StartOfDay\",\"Date.StartOfMonth\",\"Date.StartOfQuarter\",\"Date.StartOfWeek\",\"Date.StartOfYear\",\"Date.ToRecord\",\"Date.ToText\",\"Date.WeekOfMonth\",\"Date.WeekOfYear\",\"Date.Year\",\"DateTime.AddZone\",\"DateTime.Date\",\"DateTime.FixedLocalNow\",\"DateTime.From\",\"DateTime.FromFileTime\",\"DateTime.FromText\",\"DateTime.IsInCurrentHour\",\"DateTime.IsInCurrentMinute\",\"DateTime.IsInCurrentSecond\",\"DateTime.IsInNextHour\",\"DateTime.IsInNextMinute\",\"DateTime.IsInNextNHours\",\"DateTime.IsInNextNMinutes\",\"DateTime.IsInNextNSeconds\",\"DateTime.IsInNextSecond\",\"DateTime.IsInPreviousHour\",\"DateTime.IsInPreviousMinute\",\"DateTime.IsInPreviousNHours\",\"DateTime.IsInPreviousNMinutes\",\"DateTime.IsInPreviousNSeconds\",\"DateTime.IsInPreviousSecond\",\"DateTime.LocalNow\",\"DateTime.Time\",\"DateTime.ToRecord\",\"DateTime.ToText\",\"DateTimeZone.FixedLocalNow\",\"DateTimeZone.FixedUtcNow\",\"DateTimeZone.From\",\"DateTimeZone.FromFileTime\",\"DateTimeZone.FromText\",\"DateTimeZone.LocalNow\",\"DateTimeZone.RemoveZone\",\"DateTimeZone.SwitchZone\",\"DateTimeZone.ToLocal\",\"DateTimeZone.ToRecord\",\"DateTimeZone.ToText\",\"DateTimeZone.ToUtc\",\"DateTimeZone.UtcNow\",\"DateTimeZone.ZoneHours\",\"DateTimeZone.ZoneMinutes\",\"Decimal.From\",\"Diagnostics.ActivityId\",\"Diagnostics.Trace\",\"DirectQueryCapabilities.From\",\"Double.From\",\"Duration.Days\",\"Duration.From\",\"Duration.FromText\",\"Duration.Hours\",\"Duration.Minutes\",\"Duration.Seconds\",\"Duration.ToRecord\",\"Duration.ToText\",\"Duration.TotalDays\",\"Duration.TotalHours\",\"Duration.TotalMinutes\",\"Duration.TotalSeconds\",\"Embedded.Value\",\"Error.Record\",\"Excel.CurrentWorkbook\",\"Excel.Workbook\",\"Exchange.Contents\",\"Expression.Constant\",\"Expression.Evaluate\",\"Expression.Identifier\",\"Facebook.Graph\",\"File.Contents\",\"Folder.Contents\",\"Folder.Files\",\"Function.From\",\"Function.Invoke\",\"Function.InvokeAfter\",\"Function.IsDataSource\",\"GoogleAnalytics.Accounts\",\"Guid.From\",\"HdInsight.Containers\",\"HdInsight.Contents\",\"HdInsight.Files\",\"Hdfs.Contents\",\"Hdfs.Files\",\"Informix.Database\",\"Int16.From\",\"Int32.From\",\"Int64.From\",\"Int8.From\",\"ItemExpression.From\",\"Json.Document\",\"Json.FromValue\",\"Lines.FromBinary\",\"Lines.FromText\",\"Lines.ToBinary\",\"Lines.ToText\",\"List.Accumulate\",\"List.AllTrue\",\"List.Alternate\",\"List.AnyTrue\",\"List.Average\",\"List.Buffer\",\"List.Combine\",\"List.Contains\",\"List.ContainsAll\",\"List.ContainsAny\",\"List.Count\",\"List.Covariance\",\"List.DateTimeZones\",\"List.DateTimes\",\"List.Dates\",\"List.Difference\",\"List.Distinct\",\"List.Durations\",\"List.FindText\",\"List.First\",\"List.FirstN\",\"List.Generate\",\"List.InsertRange\",\"List.Intersect\",\"List.IsDistinct\",\"List.IsEmpty\",\"List.Last\",\"List.LastN\",\"List.MatchesAll\",\"List.MatchesAny\",\"List.Max\",\"List.MaxN\",\"List.Median\",\"List.Min\",\"List.MinN\",\"List.Mode\",\"List.Modes\",\"List.NonNullCount\",\"List.Numbers\",\"List.PositionOf\",\"List.PositionOfAny\",\"List.Positions\",\"List.Product\",\"List.Random\",\"List.Range\",\"List.RemoveFirstN\",\"List.RemoveItems\",\"List.RemoveLastN\",\"List.RemoveMatchingItems\",\"List.RemoveNulls\",\"List.RemoveRange\",\"List.Repeat\",\"List.ReplaceMatchingItems\",\"List.ReplaceRange\",\"List.ReplaceValue\",\"List.Reverse\",\"List.Select\",\"List.Single\",\"List.SingleOrDefault\",\"List.Skip\",\"List.Sort\",\"List.StandardDeviation\",\"List.Sum\",\"List.Times\",\"List.Transform\",\"List.TransformMany\",\"List.Union\",\"List.Zip\",\"Logical.From\",\"Logical.FromText\",\"Logical.ToText\",\"MQ.Queue\",\"MySQL.Database\",\"Number.Abs\",\"Number.Acos\",\"Number.Asin\",\"Number.Atan\",\"Number.Atan2\",\"Number.BitwiseAnd\",\"Number.BitwiseNot\",\"Number.BitwiseOr\",\"Number.BitwiseShiftLeft\",\"Number.BitwiseShiftRight\",\"Number.BitwiseXor\",\"Number.Combinations\",\"Number.Cos\",\"Number.Cosh\",\"Number.Exp\",\"Number.Factorial\",\"Number.From\",\"Number.FromText\",\"Number.IntegerDivide\",\"Number.IsEven\",\"Number.IsNaN\",\"Number.IsOdd\",\"Number.Ln\",\"Number.Log\",\"Number.Log10\",\"Number.Mod\",\"Number.Permutations\",\"Number.Power\",\"Number.Random\",\"Number.RandomBetween\",\"Number.Round\",\"Number.RoundAwayFromZero\",\"Number.RoundDown\",\"Number.RoundTowardZero\",\"Number.RoundUp\",\"Number.Sign\",\"Number.Sin\",\"Number.Sinh\",\"Number.Sqrt\",\"Number.Tan\",\"Number.Tanh\",\"Number.ToText\",\"OData.Feed\",\"Odbc.DataSource\",\"Odbc.Query\",\"OleDb.DataSource\",\"OleDb.Query\",\"Oracle.Database\",\"Percentage.From\",\"PostgreSQL.Database\",\"RData.FromBinary\",\"Record.AddField\",\"Record.Combine\",\"Record.Field\",\"Record.FieldCount\",\"Record.FieldNames\",\"Record.FieldOrDefault\",\"Record.FieldValues\",\"Record.FromList\",\"Record.FromTable\",\"Record.HasFields\",\"Record.RemoveFields\",\"Record.RenameFields\",\"Record.ReorderFields\",\"Record.SelectFields\",\"Record.ToList\",\"Record.ToTable\",\"Record.TransformFields\",\"Replacer.ReplaceText\",\"Replacer.ReplaceValue\",\"RowExpression.Column\",\"RowExpression.From\",\"Salesforce.Data\",\"Salesforce.Reports\",\"SapBusinessWarehouse.Cubes\",\"SapHana.Database\",\"SharePoint.Contents\",\"SharePoint.Files\",\"SharePoint.Tables\",\"Single.From\",\"Soda.Feed\",\"Splitter.SplitByNothing\",\"Splitter.SplitTextByAnyDelimiter\",\"Splitter.SplitTextByDelimiter\",\"Splitter.SplitTextByEachDelimiter\",\"Splitter.SplitTextByLengths\",\"Splitter.SplitTextByPositions\",\"Splitter.SplitTextByRanges\",\"Splitter.SplitTextByRepeatedLengths\",\"Splitter.SplitTextByWhitespace\",\"Sql.Database\",\"Sql.Databases\",\"SqlExpression.SchemaFrom\",\"SqlExpression.ToExpression\",\"Sybase.Database\",\"Table.AddColumn\",\"Table.AddIndexColumn\",\"Table.AddJoinColumn\",\"Table.AddKey\",\"Table.AggregateTableColumn\",\"Table.AlternateRows\",\"Table.Buffer\",\"Table.Column\",\"Table.ColumnCount\",\"Table.ColumnNames\",\"Table.ColumnsOfType\",\"Table.Combine\",\"Table.CombineColumns\",\"Table.Contains\",\"Table.ContainsAll\",\"Table.ContainsAny\",\"Table.DemoteHeaders\",\"Table.Distinct\",\"Table.DuplicateColumn\",\"Table.ExpandListColumn\",\"Table.ExpandRecordColumn\",\"Table.ExpandTableColumn\",\"Table.FillDown\",\"Table.FillUp\",\"Table.FilterWithDataTable\",\"Table.FindText\",\"Table.First\",\"Table.FirstN\",\"Table.FirstValue\",\"Table.FromColumns\",\"Table.FromList\",\"Table.FromPartitions\",\"Table.FromRecords\",\"Table.FromRows\",\"Table.FromValue\",\"Table.Group\",\"Table.HasColumns\",\"Table.InsertRows\",\"Table.IsDistinct\",\"Table.IsEmpty\",\"Table.Join\",\"Table.Keys\",\"Table.Last\",\"Table.LastN\",\"Table.MatchesAllRows\",\"Table.MatchesAnyRows\",\"Table.Max\",\"Table.MaxN\",\"Table.Min\",\"Table.MinN\",\"Table.NestedJoin\",\"Table.Partition\",\"Table.PartitionValues\",\"Table.Pivot\",\"Table.PositionOf\",\"Table.PositionOfAny\",\"Table.PrefixColumns\",\"Table.Profile\",\"Table.PromoteHeaders\",\"Table.Range\",\"Table.RemoveColumns\",\"Table.RemoveFirstN\",\"Table.RemoveLastN\",\"Table.RemoveMatchingRows\",\"Table.RemoveRows\",\"Table.RemoveRowsWithErrors\",\"Table.RenameColumns\",\"Table.ReorderColumns\",\"Table.Repeat\",\"Table.ReplaceErrorValues\",\"Table.ReplaceKeys\",\"Table.ReplaceMatchingRows\",\"Table.ReplaceRelationshipIdentity\",\"Table.ReplaceRows\",\"Table.ReplaceValue\",\"Table.ReverseRows\",\"Table.RowCount\",\"Table.Schema\",\"Table.SelectColumns\",\"Table.SelectRows\",\"Table.SelectRowsWithErrors\",\"Table.SingleRow\",\"Table.Skip\",\"Table.Sort\",\"Table.SplitColumn\",\"Table.ToColumns\",\"Table.ToList\",\"Table.ToRecords\",\"Table.ToRows\",\"Table.TransformColumnNames\",\"Table.TransformColumnTypes\",\"Table.TransformColumns\",\"Table.TransformRows\",\"Table.Transpose\",\"Table.Unpivot\",\"Table.UnpivotOtherColumns\",\"Table.View\",\"Table.ViewFunction\",\"TableAction.DeleteRows\",\"TableAction.InsertRows\",\"TableAction.UpdateRows\",\"Tables.GetRelationships\",\"Teradata.Database\",\"Text.AfterDelimiter\",\"Text.At\",\"Text.BeforeDelimiter\",\"Text.BetweenDelimiters\",\"Text.Clean\",\"Text.Combine\",\"Text.Contains\",\"Text.End\",\"Text.EndsWith\",\"Text.Format\",\"Text.From\",\"Text.FromBinary\",\"Text.Insert\",\"Text.Length\",\"Text.Lower\",\"Text.Middle\",\"Text.NewGuid\",\"Text.PadEnd\",\"Text.PadStart\",\"Text.PositionOf\",\"Text.PositionOfAny\",\"Text.Proper\",\"Text.Range\",\"Text.Remove\",\"Text.RemoveRange\",\"Text.Repeat\",\"Text.Replace\",\"Text.ReplaceRange\",\"Text.Select\",\"Text.Split\",\"Text.SplitAny\",\"Text.Start\",\"Text.StartsWith\",\"Text.ToBinary\",\"Text.ToList\",\"Text.Trim\",\"Text.TrimEnd\",\"Text.TrimStart\",\"Text.Upper\",\"Time.EndOfHour\",\"Time.From\",\"Time.FromText\",\"Time.Hour\",\"Time.Minute\",\"Time.Second\",\"Time.StartOfHour\",\"Time.ToRecord\",\"Time.ToText\",\"Type.AddTableKey\",\"Type.ClosedRecord\",\"Type.Facets\",\"Type.ForFunction\",\"Type.ForRecord\",\"Type.FunctionParameters\",\"Type.FunctionRequiredParameters\",\"Type.FunctionReturn\",\"Type.Is\",\"Type.IsNullable\",\"Type.IsOpenRecord\",\"Type.ListItem\",\"Type.NonNullable\",\"Type.OpenRecord\",\"Type.RecordFields\",\"Type.ReplaceFacets\",\"Type.ReplaceTableKeys\",\"Type.TableColumn\",\"Type.TableKeys\",\"Type.TableRow\",\"Type.TableSchema\",\"Type.Union\",\"Uri.BuildQueryString\",\"Uri.Combine\",\"Uri.EscapeDataString\",\"Uri.Parts\",\"Value.Add\",\"Value.As\",\"Value.Compare\",\"Value.Divide\",\"Value.Equals\",\"Value.Firewall\",\"Value.FromText\",\"Value.Is\",\"Value.Metadata\",\"Value.Multiply\",\"Value.NativeQuery\",\"Value.NullableEquals\",\"Value.RemoveMetadata\",\"Value.ReplaceMetadata\",\"Value.ReplaceType\",\"Value.Subtract\",\"Value.Type\",\"ValueAction.NativeStatement\",\"ValueAction.Replace\",\"Variable.Value\",\"Web.Contents\",\"Web.Page\",\"WebAction.Request\",\"Xml.Document\",\"Xml.Tables\"],builtinConstants:[\"BinaryEncoding.Base64\",\"BinaryEncoding.Hex\",\"BinaryOccurrence.Optional\",\"BinaryOccurrence.Repeating\",\"BinaryOccurrence.Required\",\"ByteOrder.BigEndian\",\"ByteOrder.LittleEndian\",\"Compression.Deflate\",\"Compression.GZip\",\"CsvStyle.QuoteAfterDelimiter\",\"CsvStyle.QuoteAlways\",\"Culture.Current\",\"Day.Friday\",\"Day.Monday\",\"Day.Saturday\",\"Day.Sunday\",\"Day.Thursday\",\"Day.Tuesday\",\"Day.Wednesday\",\"ExtraValues.Error\",\"ExtraValues.Ignore\",\"ExtraValues.List\",\"GroupKind.Global\",\"GroupKind.Local\",\"JoinAlgorithm.Dynamic\",\"JoinAlgorithm.LeftHash\",\"JoinAlgorithm.LeftIndex\",\"JoinAlgorithm.PairwiseHash\",\"JoinAlgorithm.RightHash\",\"JoinAlgorithm.RightIndex\",\"JoinAlgorithm.SortMerge\",\"JoinKind.FullOuter\",\"JoinKind.Inner\",\"JoinKind.LeftAnti\",\"JoinKind.LeftOuter\",\"JoinKind.RightAnti\",\"JoinKind.RightOuter\",\"JoinSide.Left\",\"JoinSide.Right\",\"MissingField.Error\",\"MissingField.Ignore\",\"MissingField.UseNull\",\"Number.E\",\"Number.Epsilon\",\"Number.NaN\",\"Number.NegativeInfinity\",\"Number.PI\",\"Number.PositiveInfinity\",\"Occurrence.All\",\"Occurrence.First\",\"Occurrence.Last\",\"Occurrence.Optional\",\"Occurrence.Repeating\",\"Occurrence.Required\",\"Order.Ascending\",\"Order.Descending\",\"Precision.Decimal\",\"Precision.Double\",\"QuoteStyle.Csv\",\"QuoteStyle.None\",\"RelativePosition.FromEnd\",\"RelativePosition.FromStart\",\"RoundingMode.AwayFromZero\",\"RoundingMode.Down\",\"RoundingMode.ToEven\",\"RoundingMode.TowardZero\",\"RoundingMode.Up\",\"SapHanaDistribution.All\",\"SapHanaDistribution.Connection\",\"SapHanaDistribution.Off\",\"SapHanaDistribution.Statement\",\"SapHanaRangeOperator.Equals\",\"SapHanaRangeOperator.GreaterThan\",\"SapHanaRangeOperator.GreaterThanOrEquals\",\"SapHanaRangeOperator.LessThan\",\"SapHanaRangeOperator.LessThanOrEquals\",\"SapHanaRangeOperator.NotEquals\",\"TextEncoding.Ascii\",\"TextEncoding.BigEndianUnicode\",\"TextEncoding.Unicode\",\"TextEncoding.Utf16\",\"TextEncoding.Utf8\",\"TextEncoding.Windows\",\"TraceLevel.Critical\",\"TraceLevel.Error\",\"TraceLevel.Information\",\"TraceLevel.Verbose\",\"TraceLevel.Warning\",\"WebMethod.Delete\",\"WebMethod.Get\",\"WebMethod.Head\",\"WebMethod.Patch\",\"WebMethod.Post\",\"WebMethod.Put\"],builtinTypes:[\"Action.Type\",\"Any.Type\",\"Binary.Type\",\"BinaryEncoding.Type\",\"BinaryOccurrence.Type\",\"Byte.Type\",\"ByteOrder.Type\",\"Character.Type\",\"Compression.Type\",\"CsvStyle.Type\",\"Currency.Type\",\"Date.Type\",\"DateTime.Type\",\"DateTimeZone.Type\",\"Day.Type\",\"Decimal.Type\",\"Double.Type\",\"Duration.Type\",\"ExtraValues.Type\",\"Function.Type\",\"GroupKind.Type\",\"Guid.Type\",\"Int16.Type\",\"Int32.Type\",\"Int64.Type\",\"Int8.Type\",\"JoinAlgorithm.Type\",\"JoinKind.Type\",\"JoinSide.Type\",\"List.Type\",\"Logical.Type\",\"MissingField.Type\",\"None.Type\",\"Null.Type\",\"Number.Type\",\"Occurrence.Type\",\"Order.Type\",\"Password.Type\",\"Percentage.Type\",\"Precision.Type\",\"QuoteStyle.Type\",\"Record.Type\",\"RelativePosition.Type\",\"RoundingMode.Type\",\"SapHanaDistribution.Type\",\"SapHanaRangeOperator.Type\",\"Single.Type\",\"Table.Type\",\"Text.Type\",\"TextEncoding.Type\",\"Time.Type\",\"TraceLevel.Type\",\"Type.Type\",\"Uri.Type\",\"WebMethod.Type\"],tokenizer:{root:[[/#\"[\\w \\.]+\"/,\"identifier.quote\"],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/0[xX][0-9a-fA-F]+/,\"number.hex\"],[/\\d+([eE][\\-+]?\\d+)?/,\"number\"],[/(#?[a-z]+)\\b/,{cases:{\"@typeKeywords\":\"type\",\"@keywords\":\"keyword\",\"@constants\":\"constant\",\"@constructors\":\"constructor\",\"@operatorKeywords\":\"operators\",\"@default\":\"identifier\"}}],[/\\b([A-Z][a-zA-Z0-9]+\\.Type)\\b/,{cases:{\"@builtinTypes\":\"type\",\"@default\":\"identifier\"}}],[/\\b([A-Z][a-zA-Z0-9]+\\.[A-Z][a-zA-Z0-9]+)\\b/,{cases:{\"@builtinFunctions\":\"keyword.function\",\"@builtinConstants\":\"constant\",\"@default\":\"identifier\"}}],[/\\b([a-zA-Z_][\\w\\.]*)\\b/,\"identifier\"],{include:\"@whitespace\"},{include:\"@comments\"},{include:\"@strings\"},[/[{}()\\[\\]]/,\"@brackets\"],[/([=\\+<>\\-\\*&@\\?\\/!])|([<>]=)|(<>)|(=>)|(\\.\\.\\.)|(\\.\\.)/,\"operators\"],[/[,;]/,\"delimiter\"]],whitespace:[[/\\s+/,\"white\"]],comments:[[\"\\\\/\\\\*\",\"comment\",\"@comment\"],[\"\\\\/\\\\/+.*\",\"comment\"]],comment:[[\"\\\\*\\\\/\",\"comment\",\"@pop\"],[\".\",\"comment\"]],strings:[['\"',\"string\",\"@string\"]],string:[['\"\"',\"string.escape\"],['\"',\"string\",\"@pop\"],[\".\",\"string\"]]}};return u(b);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/powershell/powershell.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/powershell/powershell\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var o=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(n,e)=>{for(var t in e)o(n,t,{get:e[t],enumerable:!0})},g=(n,e,t,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of i(e))!l.call(n,s)&&s!==t&&o(n,s,{get:()=>e[s],enumerable:!(a=r(e,s))||a.enumerable});return n};var p=n=>g(o({},\"__esModule\",{value:!0}),n);var u={};c(u,{conf:()=>d,language:()=>m});var d={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#%\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,comments:{lineComment:\"#\",blockComment:[\"<#\",\"#>\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"',notIn:[\"string\"]},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],folding:{markers:{start:new RegExp(\"^\\\\s*#region\\\\b\"),end:new RegExp(\"^\\\\s*#endregion\\\\b\")}}},m={defaultToken:\"\",ignoreCase:!0,tokenPostfix:\".ps1\",brackets:[{token:\"delimiter.curly\",open:\"{\",close:\"}\"},{token:\"delimiter.square\",open:\"[\",close:\"]\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"}],keywords:[\"begin\",\"break\",\"catch\",\"class\",\"continue\",\"data\",\"define\",\"do\",\"dynamicparam\",\"else\",\"elseif\",\"end\",\"exit\",\"filter\",\"finally\",\"for\",\"foreach\",\"from\",\"function\",\"if\",\"in\",\"param\",\"process\",\"return\",\"switch\",\"throw\",\"trap\",\"try\",\"until\",\"using\",\"var\",\"while\",\"workflow\",\"parallel\",\"sequence\",\"inlinescript\",\"configuration\"],helpKeywords:/SYNOPSIS|DESCRIPTION|PARAMETER|EXAMPLE|INPUTS|OUTPUTS|NOTES|LINK|COMPONENT|ROLE|FUNCTIONALITY|FORWARDHELPTARGETNAME|FORWARDHELPCATEGORY|REMOTEHELPRUNSPACE|EXTERNALHELP/,symbols:/[=><!~?&%|+\\-*\\/\\^;\\.,]+/,escapes:/`(?:[abfnrtv\\\\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_][\\w-]*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"\"}}],[/[ \\t\\r\\n]+/,\"\"],[/^:\\w*/,\"metatag\"],[/\\$(\\{((global|local|private|script|using):)?[\\w]+\\}|((global|local|private|script|using):)?[\\w]+)/,\"variable\"],[/<#/,\"comment\",\"@comment\"],[/#.*$/,\"comment\"],[/[{}()\\[\\]]/,\"@brackets\"],[/@symbols/,\"delimiter\"],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,\"number.hex\"],[/\\d+?/,\"number\"],[/[;,.]/,\"delimiter\"],[/\\@\"/,\"string\",'@herestring.\"'],[/\\@'/,\"string\",\"@herestring.'\"],[/\"/,{cases:{\"@eos\":\"string\",\"@default\":{token:\"string\",next:'@string.\"'}}}],[/'/,{cases:{\"@eos\":\"string\",\"@default\":{token:\"string\",next:\"@string.'\"}}}]],string:[[/[^\"'\\$`]+/,{cases:{\"@eos\":{token:\"string\",next:\"@popall\"},\"@default\":\"string\"}}],[/@escapes/,{cases:{\"@eos\":{token:\"string.escape\",next:\"@popall\"},\"@default\":\"string.escape\"}}],[/`./,{cases:{\"@eos\":{token:\"string.escape.invalid\",next:\"@popall\"},\"@default\":\"string.escape.invalid\"}}],[/\\$[\\w]+$/,{cases:{'$S2==\"':{token:\"variable\",next:\"@popall\"},\"@default\":{token:\"string\",next:\"@popall\"}}}],[/\\$[\\w]+/,{cases:{'$S2==\"':\"variable\",\"@default\":\"string\"}}],[/[\"']/,{cases:{\"$#==$S2\":{token:\"string\",next:\"@pop\"},\"@default\":{cases:{\"@eos\":{token:\"string\",next:\"@popall\"},\"@default\":\"string\"}}}}]],herestring:[[/^\\s*([\"'])@/,{cases:{\"$1==$S2\":{token:\"string\",next:\"@pop\"},\"@default\":\"string\"}}],[/[^\\$`]+/,\"string\"],[/@escapes/,\"string.escape\"],[/`./,\"string.escape.invalid\"],[/\\$[\\w]+/,{cases:{'$S2==\"':\"variable\",\"@default\":\"string\"}}]],comment:[[/[^#\\.]+/,\"comment\"],[/#>/,\"comment\",\"@pop\"],[/(\\.)(@helpKeywords)(?!\\w)/,{token:\"comment.keyword.$2\"}],[/[\\.#]/,\"comment\"]]}};return p(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/protobuf/protobuf.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/protobuf/protobuf\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var o=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var p=(t,e)=>{for(var i in e)o(t,i,{get:e[i],enumerable:!0})},d=(t,e,i,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of c(e))!a.call(t,n)&&n!==i&&o(t,n,{get:()=>e[n],enumerable:!(s=r(e,n))||s.enumerable});return t};var l=t=>d(o({},\"__esModule\",{value:!0}),t);var m={};p(m,{conf:()=>u,language:()=>f});var k=[\"true\",\"false\"],u={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"],[\"<\",\">\"]],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"},{open:'\"',close:'\"',notIn:[\"string\"]},{open:\"'\",close:\"'\",notIn:[\"string\"]}],autoCloseBefore:`.,=}])>' \n\t`,indentationRules:{increaseIndentPattern:new RegExp(\"^((?!\\\\/\\\\/).)*(\\\\{[^}\\\"'`]*|\\\\([^)\\\"'`]*|\\\\[[^\\\\]\\\"'`]*)$\"),decreaseIndentPattern:new RegExp(\"^((?!.*?\\\\/\\\\*).*\\\\*/)?\\\\s*[\\\\}\\\\]].*$\")}},f={defaultToken:\"\",tokenPostfix:\".proto\",brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}],symbols:/[=><!~?:&|+\\-*/^%]+/,keywords:[\"syntax\",\"import\",\"weak\",\"public\",\"package\",\"option\",\"repeated\",\"oneof\",\"map\",\"reserved\",\"to\",\"max\",\"enum\",\"message\",\"service\",\"rpc\",\"stream\",\"returns\",\"package\",\"optional\",\"true\",\"false\"],builtinTypes:[\"double\",\"float\",\"int32\",\"int64\",\"uint32\",\"uint64\",\"sint32\",\"sint64\",\"fixed32\",\"fixed64\",\"sfixed32\",\"sfixed64\",\"bool\",\"string\",\"bytes\"],operators:[\"=\",\"+\",\"-\"],namedLiterals:k,escapes:\"\\\\\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\\\\\|'|\\\\${)\",identifier:/[a-zA-Z]\\w*/,fullIdentifier:/@identifier(?:\\s*\\.\\s*@identifier)*/,optionName:/(?:@identifier|\\(\\s*@fullIdentifier\\s*\\))(?:\\s*\\.\\s*@identifier)*/,messageName:/@identifier/,enumName:/@identifier/,messageType:/\\.?\\s*(?:@identifier\\s*\\.\\s*)*@messageName/,enumType:/\\.?\\s*(?:@identifier\\s*\\.\\s*)*@enumName/,floatLit:/[0-9]+\\s*\\.\\s*[0-9]*(?:@exponent)?|[0-9]+@exponent|\\.[0-9]+(?:@exponent)?/,exponent:/[eE]\\s*[+-]?\\s*[0-9]+/,boolLit:/true\\b|false\\b/,decimalLit:/[1-9][0-9]*/,octalLit:/0[0-7]*/,hexLit:/0[xX][0-9a-fA-F]+/,type:/double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes|@messageType|@enumType/,keyType:/int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string/,tokenizer:{root:[{include:\"@whitespace\"},[/syntax/,\"keyword\"],[/=/,\"operators\"],[/;/,\"delimiter\"],[/(\")(proto3)(\")/,[\"string.quote\",\"string\",{token:\"string.quote\",switchTo:\"@topLevel.proto3\"}]],[/(\")(proto2)(\")/,[\"string.quote\",\"string\",{token:\"string.quote\",switchTo:\"@topLevel.proto2\"}]],[/.*?/,{token:\"\",switchTo:\"@topLevel.proto2\"}]],topLevel:[{include:\"@whitespace\"},{include:\"@constant\"},[/=/,\"operators\"],[/[;.]/,\"delimiter\"],[/@fullIdentifier/,{cases:{option:{token:\"keyword\",next:\"@option.$S2\"},enum:{token:\"keyword\",next:\"@enumDecl.$S2\"},message:{token:\"keyword\",next:\"@messageDecl.$S2\"},service:{token:\"keyword\",next:\"@serviceDecl.$S2\"},extend:{cases:{\"$S2==proto2\":{token:\"keyword\",next:\"@extendDecl.$S2\"}}},\"@keywords\":\"keyword\",\"@default\":\"identifier\"}}]],enumDecl:[{include:\"@whitespace\"},[/@identifier/,\"type.identifier\"],[/{/,{token:\"@brackets\",bracket:\"@open\",switchTo:\"@enumBody.$S2\"}]],enumBody:[{include:\"@whitespace\"},{include:\"@constant\"},[/=/,\"operators\"],[/;/,\"delimiter\"],[/option\\b/,\"keyword\",\"@option.$S2\"],[/@identifier/,\"identifier\"],[/\\[/,{token:\"@brackets\",bracket:\"@open\",next:\"@options.$S2\"}],[/}/,{token:\"@brackets\",bracket:\"@close\",next:\"@pop\"}]],messageDecl:[{include:\"@whitespace\"},[/@identifier/,\"type.identifier\"],[/{/,{token:\"@brackets\",bracket:\"@open\",switchTo:\"@messageBody.$S2\"}]],messageBody:[{include:\"@whitespace\"},{include:\"@constant\"},[/=/,\"operators\"],[/;/,\"delimiter\"],[\"(map)(s*)(<)\",[\"keyword\",\"white\",{token:\"@brackets\",bracket:\"@open\",next:\"@map.$S2\"}]],[/@identifier/,{cases:{option:{token:\"keyword\",next:\"@option.$S2\"},enum:{token:\"keyword\",next:\"@enumDecl.$S2\"},message:{token:\"keyword\",next:\"@messageDecl.$S2\"},oneof:{token:\"keyword\",next:\"@oneofDecl.$S2\"},extensions:{cases:{\"$S2==proto2\":{token:\"keyword\",next:\"@reserved.$S2\"}}},reserved:{token:\"keyword\",next:\"@reserved.$S2\"},\"(?:repeated|optional)\":{token:\"keyword\",next:\"@field.$S2\"},required:{cases:{\"$S2==proto2\":{token:\"keyword\",next:\"@field.$S2\"}}},\"$S2==proto3\":{token:\"@rematch\",next:\"@field.$S2\"}}}],[/\\[/,{token:\"@brackets\",bracket:\"@open\",next:\"@options.$S2\"}],[/}/,{token:\"@brackets\",bracket:\"@close\",next:\"@pop\"}]],extendDecl:[{include:\"@whitespace\"},[/@identifier/,\"type.identifier\"],[/{/,{token:\"@brackets\",bracket:\"@open\",switchTo:\"@extendBody.$S2\"}]],extendBody:[{include:\"@whitespace\"},{include:\"@constant\"},[/;/,\"delimiter\"],[/(?:repeated|optional|required)/,\"keyword\",\"@field.$S2\"],[/\\[/,{token:\"@brackets\",bracket:\"@open\",next:\"@options.$S2\"}],[/}/,{token:\"@brackets\",bracket:\"@close\",next:\"@pop\"}]],options:[{include:\"@whitespace\"},{include:\"@constant\"},[/;/,\"delimiter\"],[/@optionName/,\"annotation\"],[/[()]/,\"annotation.brackets\"],[/=/,\"operator\"],[/\\]/,{token:\"@brackets\",bracket:\"@close\",next:\"@pop\"}]],option:[{include:\"@whitespace\"},[/@optionName/,\"annotation\"],[/[()]/,\"annotation.brackets\"],[/=/,\"operator\",\"@pop\"]],oneofDecl:[{include:\"@whitespace\"},[/@identifier/,\"identifier\"],[/{/,{token:\"@brackets\",bracket:\"@open\",switchTo:\"@oneofBody.$S2\"}]],oneofBody:[{include:\"@whitespace\"},{include:\"@constant\"},[/;/,\"delimiter\"],[/(@identifier)(\\s*)(=)/,[\"identifier\",\"white\",\"delimiter\"]],[/@fullIdentifier|\\./,{cases:{\"@builtinTypes\":\"keyword\",\"@default\":\"type.identifier\"}}],[/\\[/,{token:\"@brackets\",bracket:\"@open\",next:\"@options.$S2\"}],[/}/,{token:\"@brackets\",bracket:\"@close\",next:\"@pop\"}]],reserved:[{include:\"@whitespace\"},[/,/,\"delimiter\"],[/;/,\"delimiter\",\"@pop\"],{include:\"@constant\"},[/to\\b|max\\b/,\"keyword\"]],map:[{include:\"@whitespace\"},[/@fullIdentifier|\\./,{cases:{\"@builtinTypes\":\"keyword\",\"@default\":\"type.identifier\"}}],[/,/,\"delimiter\"],[/>/,{token:\"@brackets\",bracket:\"@close\",switchTo:\"identifier\"}]],field:[{include:\"@whitespace\"},[\"group\",{cases:{\"$S2==proto2\":{token:\"keyword\",switchTo:\"@groupDecl.$S2\"}}}],[/(@identifier)(\\s*)(=)/,[\"identifier\",\"white\",{token:\"delimiter\",next:\"@pop\"}]],[/@fullIdentifier|\\./,{cases:{\"@builtinTypes\":\"keyword\",\"@default\":\"type.identifier\"}}]],groupDecl:[{include:\"@whitespace\"},[/@identifier/,\"identifier\"],[\"=\",\"operator\"],[/{/,{token:\"@brackets\",bracket:\"@open\",switchTo:\"@messageBody.$S2\"}],{include:\"@constant\"}],type:[{include:\"@whitespace\"},[/@identifier/,\"type.identifier\",\"@pop\"],[/./,\"delimiter\"]],identifier:[{include:\"@whitespace\"},[/@identifier/,\"identifier\",\"@pop\"]],serviceDecl:[{include:\"@whitespace\"},[/@identifier/,\"identifier\"],[/{/,{token:\"@brackets\",bracket:\"@open\",switchTo:\"@serviceBody.$S2\"}]],serviceBody:[{include:\"@whitespace\"},{include:\"@constant\"},[/;/,\"delimiter\"],[/option\\b/,\"keyword\",\"@option.$S2\"],[/rpc\\b/,\"keyword\",\"@rpc.$S2\"],[/\\[/,{token:\"@brackets\",bracket:\"@open\",next:\"@options.$S2\"}],[/}/,{token:\"@brackets\",bracket:\"@close\",next:\"@pop\"}]],rpc:[{include:\"@whitespace\"},[/@identifier/,\"identifier\"],[/\\(/,{token:\"@brackets\",bracket:\"@open\",switchTo:\"@request.$S2\"}],[/{/,{token:\"@brackets\",bracket:\"@open\",next:\"@methodOptions.$S2\"}],[/;/,\"delimiter\",\"@pop\"]],request:[{include:\"@whitespace\"},[/@messageType/,{cases:{stream:{token:\"keyword\",next:\"@type.$S2\"},\"@default\":\"type.identifier\"}}],[/\\)/,{token:\"@brackets\",bracket:\"@close\",switchTo:\"@returns.$S2\"}]],returns:[{include:\"@whitespace\"},[/returns\\b/,\"keyword\"],[/\\(/,{token:\"@brackets\",bracket:\"@open\",switchTo:\"@response.$S2\"}]],response:[{include:\"@whitespace\"},[/@messageType/,{cases:{stream:{token:\"keyword\",next:\"@type.$S2\"},\"@default\":\"type.identifier\"}}],[/\\)/,{token:\"@brackets\",bracket:\"@close\",switchTo:\"@rpc.$S2\"}]],methodOptions:[{include:\"@whitespace\"},{include:\"@constant\"},[/;/,\"delimiter\"],[\"option\",\"keyword\"],[/@optionName/,\"annotation\"],[/[()]/,\"annotation.brackets\"],[/=/,\"operator\"],[/}/,{token:\"@brackets\",bracket:\"@close\",next:\"@pop\"}]],comment:[[/[^\\/*]+/,\"comment\"],[/\\/\\*/,\"comment\",\"@push\"],[\"\\\\*/\",\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"}]],stringSingle:[[/[^\\\\']+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/'/,{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"}]],constant:[[\"@boolLit\",\"keyword.constant\"],[\"@hexLit\",\"number.hex\"],[\"@octalLit\",\"number.octal\"],[\"@decimalLit\",\"number\"],[\"@floatLit\",\"number.float\"],[/(\"([^\"\\\\]|\\\\.)*|'([^'\\\\]|\\\\.)*)$/,\"string.invalid\"],[/\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@string\"}],[/'/,{token:\"string.quote\",bracket:\"@open\",next:\"@stringSingle\"}],[/{/,{token:\"@brackets\",bracket:\"@open\",next:\"@prototext\"}],[/identifier/,\"identifier\"]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],prototext:[{include:\"@whitespace\"},{include:\"@constant\"},[/@identifier/,\"identifier\"],[/[:;]/,\"delimiter\"],[/}/,{token:\"@brackets\",bracket:\"@close\",next:\"@pop\"}]]}};return l(m);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/pug/pug.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/pug/pug\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var a=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var r=Object.prototype.hasOwnProperty;var p=(t,e)=>{for(var o in e)a(t,o,{get:e[o],enumerable:!0})},c=(t,e,o,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of l(e))!r.call(t,n)&&n!==o&&a(t,n,{get:()=>e[n],enumerable:!(s=i(e,n))||s.enumerable});return t};var d=t=>c(a({},\"__esModule\",{value:!0}),t);var g={};p(g,{conf:()=>m,language:()=>u});var m={comments:{lineComment:\"//\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]},{open:\"{\",close:\"}\",notIn:[\"string\",\"comment\"]},{open:\"[\",close:\"]\",notIn:[\"string\",\"comment\"]},{open:\"(\",close:\")\",notIn:[\"string\",\"comment\"]}],folding:{offSide:!0}},u={defaultToken:\"\",tokenPostfix:\".pug\",ignoreCase:!0,brackets:[{token:\"delimiter.curly\",open:\"{\",close:\"}\"},{token:\"delimiter.array\",open:\"[\",close:\"]\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"}],keywords:[\"append\",\"block\",\"case\",\"default\",\"doctype\",\"each\",\"else\",\"extends\",\"for\",\"if\",\"in\",\"include\",\"mixin\",\"typeof\",\"unless\",\"var\",\"when\"],tags:[\"a\",\"abbr\",\"acronym\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"basefont\",\"bdi\",\"bdo\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"center\",\"cite\",\"code\",\"col\",\"colgroup\",\"command\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"font\",\"footer\",\"form\",\"frame\",\"frameset\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"keygen\",\"kbd\",\"label\",\"li\",\"link\",\"map\",\"mark\",\"menu\",\"meta\",\"meter\",\"nav\",\"noframes\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\",\"small\",\"source\",\"span\",\"strike\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"title\",\"tr\",\"tracks\",\"tt\",\"u\",\"ul\",\"video\",\"wbr\"],symbols:/[\\+\\-\\*\\%\\&\\|\\!\\=\\/\\.\\,\\:]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^(\\s*)([a-zA-Z_-][\\w-]*)/,{cases:{\"$2@tags\":{cases:{\"@eos\":[\"\",\"tag\"],\"@default\":[\"\",{token:\"tag\",next:\"@tag.$1\"}]}},\"$2@keywords\":[\"\",{token:\"keyword.$2\"}],\"@default\":[\"\",\"\"]}}],[/^(\\s*)(#[a-zA-Z_-][\\w-]*)/,{cases:{\"@eos\":[\"\",\"tag.id\"],\"@default\":[\"\",{token:\"tag.id\",next:\"@tag.$1\"}]}}],[/^(\\s*)(\\.[a-zA-Z_-][\\w-]*)/,{cases:{\"@eos\":[\"\",\"tag.class\"],\"@default\":[\"\",{token:\"tag.class\",next:\"@tag.$1\"}]}}],[/^(\\s*)(\\|.*)$/,\"\"],{include:\"@whitespace\"},[/[a-zA-Z_$][\\w$]*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"\"}}],[/[{}()\\[\\]]/,\"@brackets\"],[/@symbols/,\"delimiter\"],[/\\d+\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/\\d+/,\"number\"],[/\"/,\"string\",'@string.\"'],[/'/,\"string\",\"@string.'\"]],tag:[[/(\\.)(\\s*$)/,[{token:\"delimiter\",next:\"@blockText.$S2.\"},\"\"]],[/\\s+/,{token:\"\",next:\"@simpleText\"}],[/#[a-zA-Z_-][\\w-]*/,{cases:{\"@eos\":{token:\"tag.id\",next:\"@pop\"},\"@default\":\"tag.id\"}}],[/\\.[a-zA-Z_-][\\w-]*/,{cases:{\"@eos\":{token:\"tag.class\",next:\"@pop\"},\"@default\":\"tag.class\"}}],[/\\(/,{token:\"delimiter.parenthesis\",next:\"@attributeList\"}]],simpleText:[[/[^#]+$/,{token:\"\",next:\"@popall\"}],[/[^#]+/,{token:\"\"}],[/(#{)([^}]*)(})/,{cases:{\"@eos\":[\"interpolation.delimiter\",\"interpolation\",{token:\"interpolation.delimiter\",next:\"@popall\"}],\"@default\":[\"interpolation.delimiter\",\"interpolation\",\"interpolation.delimiter\"]}}],[/#$/,{token:\"\",next:\"@popall\"}],[/#/,\"\"]],attributeList:[[/\\s+/,\"\"],[/(\\w+)(\\s*=\\s*)(\"|')/,[\"attribute.name\",\"delimiter\",{token:\"attribute.value\",next:\"@value.$3\"}]],[/\\w+/,\"attribute.name\"],[/,/,{cases:{\"@eos\":{token:\"attribute.delimiter\",next:\"@popall\"},\"@default\":\"attribute.delimiter\"}}],[/\\)$/,{token:\"delimiter.parenthesis\",next:\"@popall\"}],[/\\)/,{token:\"delimiter.parenthesis\",next:\"@pop\"}]],whitespace:[[/^(\\s*)(\\/\\/.*)$/,{token:\"comment\",next:\"@blockText.$1.comment\"}],[/[ \\t\\r\\n]+/,\"\"],[/<!--/,{token:\"comment\",next:\"@comment\"}]],blockText:[[/^\\s+.*$/,{cases:{\"($S2\\\\s+.*$)\":{token:\"$S3\"},\"@default\":{token:\"@rematch\",next:\"@popall\"}}}],[/./,{token:\"@rematch\",next:\"@popall\"}]],comment:[[/[^<\\-]+/,\"comment.content\"],[/-->/,{token:\"comment\",next:\"@pop\"}],[/<!--/,\"comment.content.invalid\"],[/[<\\-]/,\"comment.content\"]],string:[[/[^\\\\\"'#]+/,{cases:{\"@eos\":{token:\"string\",next:\"@popall\"},\"@default\":\"string\"}}],[/@escapes/,{cases:{\"@eos\":{token:\"string.escape\",next:\"@popall\"},\"@default\":\"string.escape\"}}],[/\\\\./,{cases:{\"@eos\":{token:\"string.escape.invalid\",next:\"@popall\"},\"@default\":\"string.escape.invalid\"}}],[/(#{)([^}]*)(})/,[\"interpolation.delimiter\",\"interpolation\",\"interpolation.delimiter\"]],[/#/,\"string\"],[/[\"']/,{cases:{\"$#==$S2\":{token:\"string\",next:\"@pop\"},\"@default\":{token:\"string\"}}}]],value:[[/[^\\\\\"']+/,{cases:{\"@eos\":{token:\"attribute.value\",next:\"@popall\"},\"@default\":\"attribute.value\"}}],[/\\\\./,{cases:{\"@eos\":{token:\"attribute.value\",next:\"@popall\"},\"@default\":\"attribute.value\"}}],[/[\"']/,{cases:{\"$#==$S2\":{token:\"attribute.value\",next:\"@pop\"},\"@default\":{token:\"attribute.value\"}}}]]}};return d(g);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/python/python.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/python/python\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var d=Object.create;var i=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var b=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(n,t)=>(typeof require!=\"undefined\"?require:n)[t]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var h=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),y=(e,n)=>{for(var t in n)i(e,t,{get:n[t],enumerable:!0})},o=(e,n,t,a)=>{if(n&&typeof n==\"object\"||typeof n==\"function\")for(let r of _(n))!f.call(e,r)&&r!==t&&i(e,r,{get:()=>n[r],enumerable:!(a=m(n,r))||a.enumerable});return e},l=(e,n,t)=>(o(e,n,\"default\"),t&&o(t,n,\"default\")),c=(e,n,t)=>(t=e!=null?d(u(e)):{},o(n||!e||!e.__esModule?i(t,\"default\",{value:e,enumerable:!0}):t,e)),x=e=>o(i({},\"__esModule\",{value:!0}),e);var g=h((v,p)=>{var w=c(b(\"vs/editor/editor.api\"));p.exports=w});var D={};y(D,{conf:()=>k,language:()=>$});var s={};l(s,c(g()));var k={comments:{lineComment:\"#\",blockComment:[\"'''\",\"'''\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"',notIn:[\"string\"]},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],onEnterRules:[{beforeText:new RegExp(\"^\\\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async|match|case).*?:\\\\s*$\"),action:{indentAction:s.languages.IndentAction.Indent}}],folding:{offSide:!0,markers:{start:new RegExp(\"^\\\\s*#region\\\\b\"),end:new RegExp(\"^\\\\s*#endregion\\\\b\")}}},$={defaultToken:\"\",tokenPostfix:\".python\",keywords:[\"False\",\"None\",\"True\",\"_\",\"and\",\"as\",\"assert\",\"async\",\"await\",\"break\",\"case\",\"class\",\"continue\",\"def\",\"del\",\"elif\",\"else\",\"except\",\"exec\",\"finally\",\"for\",\"from\",\"global\",\"if\",\"import\",\"in\",\"is\",\"lambda\",\"match\",\"nonlocal\",\"not\",\"or\",\"pass\",\"print\",\"raise\",\"return\",\"try\",\"while\",\"with\",\"yield\",\"int\",\"float\",\"long\",\"complex\",\"hex\",\"abs\",\"all\",\"any\",\"apply\",\"basestring\",\"bin\",\"bool\",\"buffer\",\"bytearray\",\"callable\",\"chr\",\"classmethod\",\"cmp\",\"coerce\",\"compile\",\"complex\",\"delattr\",\"dict\",\"dir\",\"divmod\",\"enumerate\",\"eval\",\"execfile\",\"file\",\"filter\",\"format\",\"frozenset\",\"getattr\",\"globals\",\"hasattr\",\"hash\",\"help\",\"id\",\"input\",\"intern\",\"isinstance\",\"issubclass\",\"iter\",\"len\",\"locals\",\"list\",\"map\",\"max\",\"memoryview\",\"min\",\"next\",\"object\",\"oct\",\"open\",\"ord\",\"pow\",\"print\",\"property\",\"reversed\",\"range\",\"raw_input\",\"reduce\",\"reload\",\"repr\",\"reversed\",\"round\",\"self\",\"set\",\"setattr\",\"slice\",\"sorted\",\"staticmethod\",\"str\",\"sum\",\"super\",\"tuple\",\"type\",\"unichr\",\"unicode\",\"vars\",\"xrange\",\"zip\",\"__dict__\",\"__methods__\",\"__members__\",\"__class__\",\"__bases__\",\"__name__\",\"__mro__\",\"__subclasses__\",\"__init__\",\"__import__\"],brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.bracket\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],tokenizer:{root:[{include:\"@whitespace\"},{include:\"@numbers\"},{include:\"@strings\"},[/[,:;]/,\"delimiter\"],[/[{}\\[\\]()]/,\"@brackets\"],[/@[a-zA-Z_]\\w*/,\"tag\"],[/[a-zA-Z_]\\w*/,{cases:{\"@keywords\":\"keyword\",\"@default\":\"identifier\"}}]],whitespace:[[/\\s+/,\"white\"],[/(^#.*$)/,\"comment\"],[/'''/,\"string\",\"@endDocString\"],[/\"\"\"/,\"string\",\"@endDblDocString\"]],endDocString:[[/[^']+/,\"string\"],[/\\\\'/,\"string\"],[/'''/,\"string\",\"@popall\"],[/'/,\"string\"]],endDblDocString:[[/[^\"]+/,\"string\"],[/\\\\\"/,\"string\"],[/\"\"\"/,\"string\",\"@popall\"],[/\"/,\"string\"]],numbers:[[/-?0x([abcdef]|[ABCDEF]|\\d)+[lL]?/,\"number.hex\"],[/-?(\\d*\\.)?\\d+([eE][+\\-]?\\d+)?[jJ]?[lL]?/,\"number\"]],strings:[[/'$/,\"string.escape\",\"@popall\"],[/'/,\"string.escape\",\"@stringBody\"],[/\"$/,\"string.escape\",\"@popall\"],[/\"/,\"string.escape\",\"@dblStringBody\"]],stringBody:[[/[^\\\\']+$/,\"string\",\"@popall\"],[/[^\\\\']+/,\"string\"],[/\\\\./,\"string\"],[/'/,\"string.escape\",\"@popall\"],[/\\\\$/,\"string\"]],dblStringBody:[[/[^\\\\\"]+$/,\"string\",\"@popall\"],[/[^\\\\\"]+/,\"string\"],[/\\\\./,\"string\"],[/\"/,\"string.escape\",\"@popall\"],[/\\\\$/,\"string\"]]}};return x(D);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/qsharp/qsharp.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/qsharp/qsharp\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var a=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let o of r(e))!l.call(t,o)&&o!==n&&a(t,o,{get:()=>e[o],enumerable:!(s=i(e,o))||s.enumerable});return t};var p=t=>u(a({},\"__esModule\",{value:!0}),t);var m={};c(m,{conf:()=>d,language:()=>g});var d={comments:{lineComment:\"//\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'}]},g={keywords:[\"namespace\",\"open\",\"as\",\"operation\",\"function\",\"body\",\"adjoint\",\"newtype\",\"controlled\",\"if\",\"elif\",\"else\",\"repeat\",\"until\",\"fixup\",\"for\",\"in\",\"while\",\"return\",\"fail\",\"within\",\"apply\",\"Adjoint\",\"Controlled\",\"Adj\",\"Ctl\",\"is\",\"self\",\"auto\",\"distribute\",\"invert\",\"intrinsic\",\"let\",\"set\",\"w/\",\"new\",\"not\",\"and\",\"or\",\"use\",\"borrow\",\"using\",\"borrowing\",\"mutable\",\"internal\"],typeKeywords:[\"Unit\",\"Int\",\"BigInt\",\"Double\",\"Bool\",\"String\",\"Qubit\",\"Result\",\"Pauli\",\"Range\"],invalidKeywords:[\"abstract\",\"base\",\"bool\",\"break\",\"byte\",\"case\",\"catch\",\"char\",\"checked\",\"class\",\"const\",\"continue\",\"decimal\",\"default\",\"delegate\",\"do\",\"double\",\"enum\",\"event\",\"explicit\",\"extern\",\"finally\",\"fixed\",\"float\",\"foreach\",\"goto\",\"implicit\",\"int\",\"interface\",\"lock\",\"long\",\"null\",\"object\",\"operator\",\"out\",\"override\",\"params\",\"private\",\"protected\",\"public\",\"readonly\",\"ref\",\"sbyte\",\"sealed\",\"short\",\"sizeof\",\"stackalloc\",\"static\",\"string\",\"struct\",\"switch\",\"this\",\"throw\",\"try\",\"typeof\",\"unit\",\"ulong\",\"unchecked\",\"unsafe\",\"ushort\",\"virtual\",\"void\",\"volatile\"],constants:[\"true\",\"false\",\"PauliI\",\"PauliX\",\"PauliY\",\"PauliZ\",\"One\",\"Zero\"],builtin:[\"X\",\"Y\",\"Z\",\"H\",\"HY\",\"S\",\"T\",\"SWAP\",\"CNOT\",\"CCNOT\",\"MultiX\",\"R\",\"RFrac\",\"Rx\",\"Ry\",\"Rz\",\"R1\",\"R1Frac\",\"Exp\",\"ExpFrac\",\"Measure\",\"M\",\"MultiM\",\"Message\",\"Length\",\"Assert\",\"AssertProb\",\"AssertEqual\"],operators:[\"and=\",\"<-\",\"->\",\"*\",\"*=\",\"@\",\"!\",\"^\",\"^=\",\":\",\"::\",\"..\",\"==\",\"...\",\"=\",\"=>\",\">\",\">=\",\"<\",\"<=\",\"-\",\"-=\",\"!=\",\"or=\",\"%\",\"%=\",\"|\",\"+\",\"+=\",\"?\",\"/\",\"/=\",\"&&&\",\"&&&=\",\"^^^\",\"^^^=\",\">>>\",\">>>=\",\"<<<\",\"<<<=\",\"|||\",\"|||=\",\"~~~\",\"_\",\"w/\",\"w/=\"],namespaceFollows:[\"namespace\",\"open\"],symbols:/[=><!~?:&|+\\-*\\/\\^%@._]+/,escapes:/\\\\[\\s\\S]/,tokenizer:{root:[[/[a-zA-Z_$][\\w$]*/,{cases:{\"@namespaceFollows\":{token:\"keyword.$0\",next:\"@namespace\"},\"@typeKeywords\":\"type\",\"@keywords\":\"keyword\",\"@constants\":\"constant\",\"@builtin\":\"keyword\",\"@invalidKeywords\":\"invalid\",\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"operator\",\"@default\":\"\"}}],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/\\d+/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@string\"}]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\"/,{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"}]],namespace:[{include:\"@whitespace\"},[/[A-Za-z]\\w*/,\"namespace\"],[/[\\.=]/,\"delimiter\"],[\"\",\"\",\"@pop\"]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"],[/(\\/\\/).*/,\"comment\"]]}};return p(m);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/r/r.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/r/r\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var a=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(o,e)=>{for(var t in e)a(o,t,{get:e[t],enumerable:!0})},p=(o,e,t,n)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let r of i(e))!c.call(o,r)&&r!==t&&a(o,r,{get:()=>e[r],enumerable:!(n=s(e,r))||n.enumerable});return o};var m=o=>p(a({},\"__esModule\",{value:!0}),o);var u={};l(u,{conf:()=>d,language:()=>g});var d={comments:{lineComment:\"#\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'}]},g={defaultToken:\"\",tokenPostfix:\".r\",roxygen:[\"@alias\",\"@aliases\",\"@assignee\",\"@author\",\"@backref\",\"@callGraph\",\"@callGraphDepth\",\"@callGraphPrimitives\",\"@concept\",\"@describeIn\",\"@description\",\"@details\",\"@docType\",\"@encoding\",\"@evalNamespace\",\"@evalRd\",\"@example\",\"@examples\",\"@export\",\"@exportClass\",\"@exportMethod\",\"@exportPattern\",\"@family\",\"@field\",\"@formals\",\"@format\",\"@import\",\"@importClassesFrom\",\"@importFrom\",\"@importMethodsFrom\",\"@include\",\"@inherit\",\"@inheritDotParams\",\"@inheritParams\",\"@inheritSection\",\"@keywords\",\"@md\",\"@method\",\"@name\",\"@noMd\",\"@noRd\",\"@note\",\"@param\",\"@rawNamespace\",\"@rawRd\",\"@rdname\",\"@references\",\"@return\",\"@S3method\",\"@section\",\"@seealso\",\"@setClass\",\"@slot\",\"@source\",\"@template\",\"@templateVar\",\"@title\",\"@TODO\",\"@usage\",\"@useDynLib\"],constants:[\"NULL\",\"FALSE\",\"TRUE\",\"NA\",\"Inf\",\"NaN\",\"NA_integer_\",\"NA_real_\",\"NA_complex_\",\"NA_character_\",\"T\",\"F\",\"LETTERS\",\"letters\",\"month.abb\",\"month.name\",\"pi\",\"R.version.string\"],keywords:[\"break\",\"next\",\"return\",\"if\",\"else\",\"for\",\"in\",\"repeat\",\"while\",\"array\",\"category\",\"character\",\"complex\",\"double\",\"function\",\"integer\",\"list\",\"logical\",\"matrix\",\"numeric\",\"vector\",\"data.frame\",\"factor\",\"library\",\"require\",\"attach\",\"detach\",\"source\"],special:[\"\\\\n\",\"\\\\r\",\"\\\\t\",\"\\\\b\",\"\\\\a\",\"\\\\f\",\"\\\\v\",\"\\\\'\",'\\\\\"',\"\\\\\\\\\"],brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.bracket\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],tokenizer:{root:[{include:\"@numbers\"},{include:\"@strings\"},[/[{}\\[\\]()]/,\"@brackets\"],{include:\"@operators\"},[/#'$/,\"comment.doc\"],[/#'/,\"comment.doc\",\"@roxygen\"],[/(^#.*$)/,\"comment\"],[/\\s+/,\"white\"],[/[,:;]/,\"delimiter\"],[/@[a-zA-Z]\\w*/,\"tag\"],[/[a-zA-Z]\\w*/,{cases:{\"@keywords\":\"keyword\",\"@constants\":\"constant\",\"@default\":\"identifier\"}}]],roxygen:[[/@\\w+/,{cases:{\"@roxygen\":\"tag\",\"@eos\":{token:\"comment.doc\",next:\"@pop\"},\"@default\":\"comment.doc\"}}],[/\\s+/,{cases:{\"@eos\":{token:\"comment.doc\",next:\"@pop\"},\"@default\":\"comment.doc\"}}],[/.*/,{token:\"comment.doc\",next:\"@pop\"}]],numbers:[[/0[xX][0-9a-fA-F]+/,\"number.hex\"],[/-?(\\d*\\.)?\\d+([eE][+\\-]?\\d+)?/,\"number\"]],operators:[[/<{1,2}-/,\"operator\"],[/->{1,2}/,\"operator\"],[/%[^%\\s]+%/,\"operator\"],[/\\*\\*/,\"operator\"],[/%%/,\"operator\"],[/&&/,\"operator\"],[/\\|\\|/,\"operator\"],[/<</,\"operator\"],[/>>/,\"operator\"],[/[-+=&|!<>^~*/:$]/,\"operator\"]],strings:[[/'/,\"string.escape\",\"@stringBody\"],[/\"/,\"string.escape\",\"@dblStringBody\"]],stringBody:[[/\\\\./,{cases:{\"@special\":\"string\",\"@default\":\"error-token\"}}],[/'/,\"string.escape\",\"@popall\"],[/./,\"string\"]],dblStringBody:[[/\\\\./,{cases:{\"@special\":\"string\",\"@default\":\"error-token\"}}],[/\"/,\"string.escape\",\"@popall\"],[/./,\"string\"]]}};return m(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/razor/razor.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/razor/razor\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var h=Object.create;var m=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var y=(t=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(t,{get:(e,r)=>(typeof require!=\"undefined\"?require:e)[r]}):t)(function(t){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+t+'\" is not supported')});var T=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),w=(t,e)=>{for(var r in e)m(t,r,{get:e[r],enumerable:!0})},i=(t,e,r,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of b(e))!x.call(t,n)&&n!==r&&m(t,n,{get:()=>e[n],enumerable:!(a=u(e,n))||a.enumerable});return t},s=(t,e,r)=>(i(t,e,\"default\"),r&&i(r,e,\"default\")),c=(t,e,r)=>(r=t!=null?h(k(t)):{},i(e||!t||!t.__esModule?m(r,\"default\",{value:t,enumerable:!0}):r,t)),g=t=>i(m({},\"__esModule\",{value:!0}),t);var d=T(($,l)=>{var S=c(y(\"vs/editor/editor.api\"));l.exports=S});var z={};w(z,{conf:()=>f,language:()=>E});var o={};s(o,c(d()));var p=[\"area\",\"base\",\"br\",\"col\",\"embed\",\"hr\",\"img\",\"input\",\"keygen\",\"link\",\"menuitem\",\"meta\",\"param\",\"source\",\"track\",\"wbr\"],f={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\$\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\s]+)/g,comments:{blockComment:[\"<!--\",\"-->\"]},brackets:[[\"<!--\",\"-->\"],[\"<\",\">\"],[\"{\",\"}\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"<\",close:\">\"}],onEnterRules:[{beforeText:new RegExp(`<(?!(?:${p.join(\"|\")}))(\\\\w[\\\\w\\\\d]*)([^/>]*(?!/)>)[^<]*$`,\"i\"),afterText:/^<\\/(\\w[\\w\\d]*)\\s*>$/i,action:{indentAction:o.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(`<(?!(?:${p.join(\"|\")}))(\\\\w[\\\\w\\\\d]*)([^/>]*(?!/)>)[^<]*$`,\"i\"),action:{indentAction:o.languages.IndentAction.Indent}}]},E={defaultToken:\"\",tokenPostfix:\"\",tokenizer:{root:[[/@@@@/],[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInSimpleState.root\"}],[/<!DOCTYPE/,\"metatag.html\",\"@doctype\"],[/<!--/,\"comment.html\",\"@comment\"],[/(<)([\\w\\-]+)(\\/>)/,[\"delimiter.html\",\"tag.html\",\"delimiter.html\"]],[/(<)(script)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@script\"}]],[/(<)(style)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@style\"}]],[/(<)([:\\w\\-]+)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@otherTag\"}]],[/(<\\/)([\\w\\-]+)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@otherTag\"}]],[/</,\"delimiter.html\"],[/[ \\t\\r\\n]+/],[/[^<@]+/]],doctype:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInSimpleState.comment\"}],[/[^>]+/,\"metatag.content.html\"],[/>/,\"metatag.html\",\"@pop\"]],comment:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInSimpleState.comment\"}],[/-->/,\"comment.html\",\"@pop\"],[/[^-]+/,\"comment.content.html\"],[/./,\"comment.content.html\"]],otherTag:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInSimpleState.otherTag\"}],[/\\/?>/,\"delimiter.html\",\"@pop\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/]],script:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInSimpleState.script\"}],[/type/,\"attribute.name\",\"@scriptAfterType\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.text/javascript\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/(<\\/)(script\\s*)(>)/,[\"delimiter.html\",\"tag.html\",{token:\"delimiter.html\",next:\"@pop\"}]]],scriptAfterType:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInSimpleState.scriptAfterType\"}],[/=/,\"delimiter\",\"@scriptAfterTypeEquals\"],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.text/javascript\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptAfterTypeEquals:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInSimpleState.scriptAfterTypeEquals\"}],[/\"([^\"]*)\"/,{token:\"attribute.value\",switchTo:\"@scriptWithCustomType.$1\"}],[/'([^']*)'/,{token:\"attribute.value\",switchTo:\"@scriptWithCustomType.$1\"}],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.text/javascript\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptWithCustomType:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInSimpleState.scriptWithCustomType.$S2\"}],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.$S2\",nextEmbedded:\"$S2\"}],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptEmbedded:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInEmbeddedState.scriptEmbedded.$S2\",nextEmbedded:\"@pop\"}],[/<\\/script/,{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}]],style:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInSimpleState.style\"}],[/type/,\"attribute.name\",\"@styleAfterType\"],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.text/css\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/(<\\/)(style\\s*)(>)/,[\"delimiter.html\",\"tag.html\",{token:\"delimiter.html\",next:\"@pop\"}]]],styleAfterType:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInSimpleState.styleAfterType\"}],[/=/,\"delimiter\",\"@styleAfterTypeEquals\"],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.text/css\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleAfterTypeEquals:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInSimpleState.styleAfterTypeEquals\"}],[/\"([^\"]*)\"/,{token:\"attribute.value\",switchTo:\"@styleWithCustomType.$1\"}],[/'([^']*)'/,{token:\"attribute.value\",switchTo:\"@styleWithCustomType.$1\"}],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.text/css\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleWithCustomType:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInSimpleState.styleWithCustomType.$S2\"}],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.$S2\",nextEmbedded:\"$S2\"}],[/\"([^\"]*)\"/,\"attribute.value\"],[/'([^']*)'/,\"attribute.value\"],[/[\\w\\-]+/,\"attribute.name\"],[/=/,\"delimiter\"],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleEmbedded:[[/@[^@]/,{token:\"@rematch\",switchTo:\"@razorInEmbeddedState.styleEmbedded.$S2\",nextEmbedded:\"@pop\"}],[/<\\/style/,{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}]],razorInSimpleState:[[/@\\*/,\"comment.cs\",\"@razorBlockCommentTopLevel\"],[/@[{(]/,\"metatag.cs\",\"@razorRootTopLevel\"],[/(@)(\\s*[\\w]+)/,[\"metatag.cs\",{token:\"identifier.cs\",switchTo:\"@$S2.$S3\"}]],[/[})]/,{token:\"metatag.cs\",switchTo:\"@$S2.$S3\"}],[/\\*@/,{token:\"comment.cs\",switchTo:\"@$S2.$S3\"}]],razorInEmbeddedState:[[/@\\*/,\"comment.cs\",\"@razorBlockCommentTopLevel\"],[/@[{(]/,\"metatag.cs\",\"@razorRootTopLevel\"],[/(@)(\\s*[\\w]+)/,[\"metatag.cs\",{token:\"identifier.cs\",switchTo:\"@$S2.$S3\",nextEmbedded:\"$S3\"}]],[/[})]/,{token:\"metatag.cs\",switchTo:\"@$S2.$S3\",nextEmbedded:\"$S3\"}],[/\\*@/,{token:\"comment.cs\",switchTo:\"@$S2.$S3\",nextEmbedded:\"$S3\"}]],razorBlockCommentTopLevel:[[/\\*@/,\"@rematch\",\"@pop\"],[/[^*]+/,\"comment.cs\"],[/./,\"comment.cs\"]],razorBlockComment:[[/\\*@/,\"comment.cs\",\"@pop\"],[/[^*]+/,\"comment.cs\"],[/./,\"comment.cs\"]],razorRootTopLevel:[[/\\{/,\"delimiter.bracket.cs\",\"@razorRoot\"],[/\\(/,\"delimiter.parenthesis.cs\",\"@razorRoot\"],[/[})]/,\"@rematch\",\"@pop\"],{include:\"razorCommon\"}],razorRoot:[[/\\{/,\"delimiter.bracket.cs\",\"@razorRoot\"],[/\\(/,\"delimiter.parenthesis.cs\",\"@razorRoot\"],[/\\}/,\"delimiter.bracket.cs\",\"@pop\"],[/\\)/,\"delimiter.parenthesis.cs\",\"@pop\"],{include:\"razorCommon\"}],razorCommon:[[/[a-zA-Z_]\\w*/,{cases:{\"@razorKeywords\":{token:\"keyword.cs\"},\"@default\":\"identifier.cs\"}}],[/[\\[\\]]/,\"delimiter.array.cs\"],[/[ \\t\\r\\n]+/],[/\\/\\/.*$/,\"comment.cs\"],[/@\\*/,\"comment.cs\",\"@razorBlockComment\"],[/\"([^\"]*)\"/,\"string.cs\"],[/'([^']*)'/,\"string.cs\"],[/(<)([\\w\\-]+)(\\/>)/,[\"delimiter.html\",\"tag.html\",\"delimiter.html\"]],[/(<)([\\w\\-]+)(>)/,[\"delimiter.html\",\"tag.html\",\"delimiter.html\"]],[/(<\\/)([\\w\\-]+)(>)/,[\"delimiter.html\",\"tag.html\",\"delimiter.html\"]],[/[\\+\\-\\*\\%\\&\\|\\^\\~\\!\\=\\<\\>\\/\\?\\;\\:\\.\\,]/,\"delimiter.cs\"],[/\\d*\\d+[eE]([\\-+]?\\d+)?/,\"number.float.cs\"],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float.cs\"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,\"number.hex.cs\"],[/0[0-7']*[0-7]/,\"number.octal.cs\"],[/0[bB][0-1']*[0-1]/,\"number.binary.cs\"],[/\\d[\\d']*/,\"number.cs\"],[/\\d/,\"number.cs\"]]},razorKeywords:[\"abstract\",\"as\",\"async\",\"await\",\"base\",\"bool\",\"break\",\"by\",\"byte\",\"case\",\"catch\",\"char\",\"checked\",\"class\",\"const\",\"continue\",\"decimal\",\"default\",\"delegate\",\"do\",\"double\",\"descending\",\"explicit\",\"event\",\"extern\",\"else\",\"enum\",\"false\",\"finally\",\"fixed\",\"float\",\"for\",\"foreach\",\"from\",\"goto\",\"group\",\"if\",\"implicit\",\"in\",\"int\",\"interface\",\"internal\",\"into\",\"is\",\"lock\",\"long\",\"nameof\",\"new\",\"null\",\"namespace\",\"object\",\"operator\",\"out\",\"override\",\"orderby\",\"params\",\"private\",\"protected\",\"public\",\"readonly\",\"ref\",\"return\",\"switch\",\"struct\",\"sbyte\",\"sealed\",\"short\",\"sizeof\",\"stackalloc\",\"static\",\"string\",\"select\",\"this\",\"throw\",\"true\",\"try\",\"typeof\",\"uint\",\"ulong\",\"unchecked\",\"unsafe\",\"ushort\",\"using\",\"var\",\"virtual\",\"volatile\",\"void\",\"when\",\"while\",\"where\",\"yield\",\"model\",\"inject\"],escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/};return g(z);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/redis/redis.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/redis/redis\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var R=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var A=(S,E)=>{for(var T in E)R(S,T,{get:E[T],enumerable:!0})},O=(S,E,T,o)=>{if(E&&typeof E==\"object\"||typeof E==\"function\")for(let e of N(E))!s.call(S,e)&&e!==T&&R(S,e,{get:()=>E[e],enumerable:!(o=n(E,e))||o.enumerable});return S};var L=S=>O(R({},\"__esModule\",{value:!0}),S);var r={};A(r,{conf:()=>I,language:()=>i});var I={brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}]},i={defaultToken:\"\",tokenPostfix:\".redis\",ignoreCase:!0,brackets:[{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],keywords:[\"APPEND\",\"AUTH\",\"BGREWRITEAOF\",\"BGSAVE\",\"BITCOUNT\",\"BITFIELD\",\"BITOP\",\"BITPOS\",\"BLPOP\",\"BRPOP\",\"BRPOPLPUSH\",\"CLIENT\",\"KILL\",\"LIST\",\"GETNAME\",\"PAUSE\",\"REPLY\",\"SETNAME\",\"CLUSTER\",\"ADDSLOTS\",\"COUNT-FAILURE-REPORTS\",\"COUNTKEYSINSLOT\",\"DELSLOTS\",\"FAILOVER\",\"FORGET\",\"GETKEYSINSLOT\",\"INFO\",\"KEYSLOT\",\"MEET\",\"NODES\",\"REPLICATE\",\"RESET\",\"SAVECONFIG\",\"SET-CONFIG-EPOCH\",\"SETSLOT\",\"SLAVES\",\"SLOTS\",\"COMMAND\",\"COUNT\",\"GETKEYS\",\"CONFIG\",\"GET\",\"REWRITE\",\"SET\",\"RESETSTAT\",\"DBSIZE\",\"DEBUG\",\"OBJECT\",\"SEGFAULT\",\"DECR\",\"DECRBY\",\"DEL\",\"DISCARD\",\"DUMP\",\"ECHO\",\"EVAL\",\"EVALSHA\",\"EXEC\",\"EXISTS\",\"EXPIRE\",\"EXPIREAT\",\"FLUSHALL\",\"FLUSHDB\",\"GEOADD\",\"GEOHASH\",\"GEOPOS\",\"GEODIST\",\"GEORADIUS\",\"GEORADIUSBYMEMBER\",\"GETBIT\",\"GETRANGE\",\"GETSET\",\"HDEL\",\"HEXISTS\",\"HGET\",\"HGETALL\",\"HINCRBY\",\"HINCRBYFLOAT\",\"HKEYS\",\"HLEN\",\"HMGET\",\"HMSET\",\"HSET\",\"HSETNX\",\"HSTRLEN\",\"HVALS\",\"INCR\",\"INCRBY\",\"INCRBYFLOAT\",\"KEYS\",\"LASTSAVE\",\"LINDEX\",\"LINSERT\",\"LLEN\",\"LPOP\",\"LPUSH\",\"LPUSHX\",\"LRANGE\",\"LREM\",\"LSET\",\"LTRIM\",\"MGET\",\"MIGRATE\",\"MONITOR\",\"MOVE\",\"MSET\",\"MSETNX\",\"MULTI\",\"PERSIST\",\"PEXPIRE\",\"PEXPIREAT\",\"PFADD\",\"PFCOUNT\",\"PFMERGE\",\"PING\",\"PSETEX\",\"PSUBSCRIBE\",\"PUBSUB\",\"PTTL\",\"PUBLISH\",\"PUNSUBSCRIBE\",\"QUIT\",\"RANDOMKEY\",\"READONLY\",\"READWRITE\",\"RENAME\",\"RENAMENX\",\"RESTORE\",\"ROLE\",\"RPOP\",\"RPOPLPUSH\",\"RPUSH\",\"RPUSHX\",\"SADD\",\"SAVE\",\"SCARD\",\"SCRIPT\",\"FLUSH\",\"LOAD\",\"SDIFF\",\"SDIFFSTORE\",\"SELECT\",\"SETBIT\",\"SETEX\",\"SETNX\",\"SETRANGE\",\"SHUTDOWN\",\"SINTER\",\"SINTERSTORE\",\"SISMEMBER\",\"SLAVEOF\",\"SLOWLOG\",\"SMEMBERS\",\"SMOVE\",\"SORT\",\"SPOP\",\"SRANDMEMBER\",\"SREM\",\"STRLEN\",\"SUBSCRIBE\",\"SUNION\",\"SUNIONSTORE\",\"SWAPDB\",\"SYNC\",\"TIME\",\"TOUCH\",\"TTL\",\"TYPE\",\"UNSUBSCRIBE\",\"UNLINK\",\"UNWATCH\",\"WAIT\",\"WATCH\",\"ZADD\",\"ZCARD\",\"ZCOUNT\",\"ZINCRBY\",\"ZINTERSTORE\",\"ZLEXCOUNT\",\"ZRANGE\",\"ZRANGEBYLEX\",\"ZREVRANGEBYLEX\",\"ZRANGEBYSCORE\",\"ZRANK\",\"ZREM\",\"ZREMRANGEBYLEX\",\"ZREMRANGEBYRANK\",\"ZREMRANGEBYSCORE\",\"ZREVRANGE\",\"ZREVRANGEBYSCORE\",\"ZREVRANK\",\"ZSCORE\",\"ZUNIONSTORE\",\"SCAN\",\"SSCAN\",\"HSCAN\",\"ZSCAN\"],operators:[],builtinFunctions:[],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:\"@whitespace\"},{include:\"@pseudoColumns\"},{include:\"@numbers\"},{include:\"@strings\"},{include:\"@scopes\"},[/[;,.]/,\"delimiter\"],[/[()]/,\"@brackets\"],[/[\\w@#$]+/,{cases:{\"@keywords\":\"keyword\",\"@operators\":\"operator\",\"@builtinVariables\":\"predefined\",\"@builtinFunctions\":\"predefined\",\"@default\":\"identifier\"}}],[/[<>=!%&+\\-*/|~^]/,\"operator\"]],whitespace:[[/\\s+/,\"white\"]],pseudoColumns:[[/[$][A-Za-z_][\\w@#$]*/,{cases:{\"@pseudoColumns\":\"predefined\",\"@default\":\"identifier\"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,\"number\"],[/[$][+-]*\\d*(\\.\\d*)?/,\"number\"],[/((\\d+(\\.\\d*)?)|(\\.\\d+))([eE][\\-+]?\\d+)?/,\"number\"]],strings:[[/'/,{token:\"string\",next:\"@string\"}],[/\"/,{token:\"string.double\",next:\"@stringDouble\"}]],string:[[/[^']+/,\"string\"],[/''/,\"string\"],[/'/,{token:\"string\",next:\"@pop\"}]],stringDouble:[[/[^\"]+/,\"string.double\"],[/\"\"/,\"string.double\"],[/\"/,{token:\"string.double\",next:\"@pop\"}]],scopes:[]}};return L(r);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/redshift/redshift.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/redshift/redshift\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var i=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var p=(_,e)=>{for(var r in e)i(_,r,{get:e[r],enumerable:!0})},l=(_,e,r,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of o(e))!n.call(_,t)&&t!==r&&i(_,t,{get:()=>e[t],enumerable:!(a=s(e,t))||a.enumerable});return _};var g=_=>l(i({},\"__esModule\",{value:!0}),_);var m={};p(m,{conf:()=>c,language:()=>d});var c={comments:{lineComment:\"--\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}]},d={defaultToken:\"\",tokenPostfix:\".sql\",ignoreCase:!0,brackets:[{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],keywords:[\"AES128\",\"AES256\",\"ALL\",\"ALLOWOVERWRITE\",\"ANALYSE\",\"ANALYZE\",\"AND\",\"ANY\",\"ARRAY\",\"AS\",\"ASC\",\"AUTHORIZATION\",\"AZ64\",\"BACKUP\",\"BETWEEN\",\"BINARY\",\"BLANKSASNULL\",\"BOTH\",\"BYTEDICT\",\"BZIP2\",\"CASE\",\"CAST\",\"CHECK\",\"COLLATE\",\"COLUMN\",\"CONSTRAINT\",\"CREATE\",\"CREDENTIALS\",\"CROSS\",\"CURRENT_DATE\",\"CURRENT_TIME\",\"CURRENT_TIMESTAMP\",\"CURRENT_USER\",\"CURRENT_USER_ID\",\"DEFAULT\",\"DEFERRABLE\",\"DEFLATE\",\"DEFRAG\",\"DELTA\",\"DELTA32K\",\"DESC\",\"DISABLE\",\"DISTINCT\",\"DO\",\"ELSE\",\"EMPTYASNULL\",\"ENABLE\",\"ENCODE\",\"ENCRYPT\",\"ENCRYPTION\",\"END\",\"EXCEPT\",\"EXPLICIT\",\"FALSE\",\"FOR\",\"FOREIGN\",\"FREEZE\",\"FROM\",\"FULL\",\"GLOBALDICT256\",\"GLOBALDICT64K\",\"GRANT\",\"GROUP\",\"GZIP\",\"HAVING\",\"IDENTITY\",\"IGNORE\",\"ILIKE\",\"IN\",\"INITIALLY\",\"INNER\",\"INTERSECT\",\"INTO\",\"IS\",\"ISNULL\",\"JOIN\",\"LANGUAGE\",\"LEADING\",\"LEFT\",\"LIKE\",\"LIMIT\",\"LOCALTIME\",\"LOCALTIMESTAMP\",\"LUN\",\"LUNS\",\"LZO\",\"LZOP\",\"MINUS\",\"MOSTLY16\",\"MOSTLY32\",\"MOSTLY8\",\"NATURAL\",\"NEW\",\"NOT\",\"NOTNULL\",\"NULL\",\"NULLS\",\"OFF\",\"OFFLINE\",\"OFFSET\",\"OID\",\"OLD\",\"ON\",\"ONLY\",\"OPEN\",\"OR\",\"ORDER\",\"OUTER\",\"OVERLAPS\",\"PARALLEL\",\"PARTITION\",\"PERCENT\",\"PERMISSIONS\",\"PLACING\",\"PRIMARY\",\"RAW\",\"READRATIO\",\"RECOVER\",\"REFERENCES\",\"RESPECT\",\"REJECTLOG\",\"RESORT\",\"RESTORE\",\"RIGHT\",\"SELECT\",\"SESSION_USER\",\"SIMILAR\",\"SNAPSHOT\",\"SOME\",\"SYSDATE\",\"SYSTEM\",\"TABLE\",\"TAG\",\"TDES\",\"TEXT255\",\"TEXT32K\",\"THEN\",\"TIMESTAMP\",\"TO\",\"TOP\",\"TRAILING\",\"TRUE\",\"TRUNCATECOLUMNS\",\"UNION\",\"UNIQUE\",\"USER\",\"USING\",\"VERBOSE\",\"WALLET\",\"WHEN\",\"WHERE\",\"WITH\",\"WITHOUT\"],operators:[\"AND\",\"BETWEEN\",\"IN\",\"LIKE\",\"NOT\",\"OR\",\"IS\",\"NULL\",\"INTERSECT\",\"UNION\",\"INNER\",\"JOIN\",\"LEFT\",\"OUTER\",\"RIGHT\"],builtinFunctions:[\"current_schema\",\"current_schemas\",\"has_database_privilege\",\"has_schema_privilege\",\"has_table_privilege\",\"age\",\"current_time\",\"current_timestamp\",\"localtime\",\"isfinite\",\"now\",\"ascii\",\"get_bit\",\"get_byte\",\"set_bit\",\"set_byte\",\"to_ascii\",\"approximate percentile_disc\",\"avg\",\"count\",\"listagg\",\"max\",\"median\",\"min\",\"percentile_cont\",\"stddev_samp\",\"stddev_pop\",\"sum\",\"var_samp\",\"var_pop\",\"bit_and\",\"bit_or\",\"bool_and\",\"bool_or\",\"cume_dist\",\"first_value\",\"lag\",\"last_value\",\"lead\",\"nth_value\",\"ratio_to_report\",\"dense_rank\",\"ntile\",\"percent_rank\",\"rank\",\"row_number\",\"case\",\"coalesce\",\"decode\",\"greatest\",\"least\",\"nvl\",\"nvl2\",\"nullif\",\"add_months\",\"at time zone\",\"convert_timezone\",\"current_date\",\"date_cmp\",\"date_cmp_timestamp\",\"date_cmp_timestamptz\",\"date_part_year\",\"dateadd\",\"datediff\",\"date_part\",\"date_trunc\",\"extract\",\"getdate\",\"interval_cmp\",\"last_day\",\"months_between\",\"next_day\",\"sysdate\",\"timeofday\",\"timestamp_cmp\",\"timestamp_cmp_date\",\"timestamp_cmp_timestamptz\",\"timestamptz_cmp\",\"timestamptz_cmp_date\",\"timestamptz_cmp_timestamp\",\"timezone\",\"to_timestamp\",\"trunc\",\"abs\",\"acos\",\"asin\",\"atan\",\"atan2\",\"cbrt\",\"ceil\",\"ceiling\",\"checksum\",\"cos\",\"cot\",\"degrees\",\"dexp\",\"dlog1\",\"dlog10\",\"exp\",\"floor\",\"ln\",\"log\",\"mod\",\"pi\",\"power\",\"radians\",\"random\",\"round\",\"sin\",\"sign\",\"sqrt\",\"tan\",\"to_hex\",\"bpcharcmp\",\"btrim\",\"bttext_pattern_cmp\",\"char_length\",\"character_length\",\"charindex\",\"chr\",\"concat\",\"crc32\",\"func_sha1\",\"initcap\",\"left and rights\",\"len\",\"length\",\"lower\",\"lpad and rpads\",\"ltrim\",\"md5\",\"octet_length\",\"position\",\"quote_ident\",\"quote_literal\",\"regexp_count\",\"regexp_instr\",\"regexp_replace\",\"regexp_substr\",\"repeat\",\"replace\",\"replicate\",\"reverse\",\"rtrim\",\"split_part\",\"strpos\",\"strtol\",\"substring\",\"textlen\",\"translate\",\"trim\",\"upper\",\"cast\",\"convert\",\"to_char\",\"to_date\",\"to_number\",\"json_array_length\",\"json_extract_array_element_text\",\"json_extract_path_text\",\"current_setting\",\"pg_cancel_backend\",\"pg_terminate_backend\",\"set_config\",\"current_database\",\"current_user\",\"current_user_id\",\"pg_backend_pid\",\"pg_last_copy_count\",\"pg_last_copy_id\",\"pg_last_query_id\",\"pg_last_unload_count\",\"session_user\",\"slice_num\",\"user\",\"version\",\"abbrev\",\"acosd\",\"any\",\"area\",\"array_agg\",\"array_append\",\"array_cat\",\"array_dims\",\"array_fill\",\"array_length\",\"array_lower\",\"array_ndims\",\"array_position\",\"array_positions\",\"array_prepend\",\"array_remove\",\"array_replace\",\"array_to_json\",\"array_to_string\",\"array_to_tsvector\",\"array_upper\",\"asind\",\"atan2d\",\"atand\",\"bit\",\"bit_length\",\"bound_box\",\"box\",\"brin_summarize_new_values\",\"broadcast\",\"cardinality\",\"center\",\"circle\",\"clock_timestamp\",\"col_description\",\"concat_ws\",\"convert_from\",\"convert_to\",\"corr\",\"cosd\",\"cotd\",\"covar_pop\",\"covar_samp\",\"current_catalog\",\"current_query\",\"current_role\",\"currval\",\"cursor_to_xml\",\"diameter\",\"div\",\"encode\",\"enum_first\",\"enum_last\",\"enum_range\",\"every\",\"family\",\"format\",\"format_type\",\"generate_series\",\"generate_subscripts\",\"get_current_ts_config\",\"gin_clean_pending_list\",\"grouping\",\"has_any_column_privilege\",\"has_column_privilege\",\"has_foreign_data_wrapper_privilege\",\"has_function_privilege\",\"has_language_privilege\",\"has_sequence_privilege\",\"has_server_privilege\",\"has_tablespace_privilege\",\"has_type_privilege\",\"height\",\"host\",\"hostmask\",\"inet_client_addr\",\"inet_client_port\",\"inet_merge\",\"inet_same_family\",\"inet_server_addr\",\"inet_server_port\",\"isclosed\",\"isempty\",\"isopen\",\"json_agg\",\"json_object\",\"json_object_agg\",\"json_populate_record\",\"json_populate_recordset\",\"json_to_record\",\"json_to_recordset\",\"jsonb_agg\",\"jsonb_object_agg\",\"justify_days\",\"justify_hours\",\"justify_interval\",\"lastval\",\"left\",\"line\",\"localtimestamp\",\"lower_inc\",\"lower_inf\",\"lpad\",\"lseg\",\"make_date\",\"make_interval\",\"make_time\",\"make_timestamp\",\"make_timestamptz\",\"masklen\",\"mode\",\"netmask\",\"network\",\"nextval\",\"npoints\",\"num_nonnulls\",\"num_nulls\",\"numnode\",\"obj_description\",\"overlay\",\"parse_ident\",\"path\",\"pclose\",\"percentile_disc\",\"pg_advisory_lock\",\"pg_advisory_lock_shared\",\"pg_advisory_unlock\",\"pg_advisory_unlock_all\",\"pg_advisory_unlock_shared\",\"pg_advisory_xact_lock\",\"pg_advisory_xact_lock_shared\",\"pg_backup_start_time\",\"pg_blocking_pids\",\"pg_client_encoding\",\"pg_collation_is_visible\",\"pg_column_size\",\"pg_conf_load_time\",\"pg_control_checkpoint\",\"pg_control_init\",\"pg_control_recovery\",\"pg_control_system\",\"pg_conversion_is_visible\",\"pg_create_logical_replication_slot\",\"pg_create_physical_replication_slot\",\"pg_create_restore_point\",\"pg_current_xlog_flush_location\",\"pg_current_xlog_insert_location\",\"pg_current_xlog_location\",\"pg_database_size\",\"pg_describe_object\",\"pg_drop_replication_slot\",\"pg_export_snapshot\",\"pg_filenode_relation\",\"pg_function_is_visible\",\"pg_get_constraintdef\",\"pg_get_expr\",\"pg_get_function_arguments\",\"pg_get_function_identity_arguments\",\"pg_get_function_result\",\"pg_get_functiondef\",\"pg_get_indexdef\",\"pg_get_keywords\",\"pg_get_object_address\",\"pg_get_owned_sequence\",\"pg_get_ruledef\",\"pg_get_serial_sequence\",\"pg_get_triggerdef\",\"pg_get_userbyid\",\"pg_get_viewdef\",\"pg_has_role\",\"pg_identify_object\",\"pg_identify_object_as_address\",\"pg_index_column_has_property\",\"pg_index_has_property\",\"pg_indexam_has_property\",\"pg_indexes_size\",\"pg_is_in_backup\",\"pg_is_in_recovery\",\"pg_is_other_temp_schema\",\"pg_is_xlog_replay_paused\",\"pg_last_committed_xact\",\"pg_last_xact_replay_timestamp\",\"pg_last_xlog_receive_location\",\"pg_last_xlog_replay_location\",\"pg_listening_channels\",\"pg_logical_emit_message\",\"pg_logical_slot_get_binary_changes\",\"pg_logical_slot_get_changes\",\"pg_logical_slot_peek_binary_changes\",\"pg_logical_slot_peek_changes\",\"pg_ls_dir\",\"pg_my_temp_schema\",\"pg_notification_queue_usage\",\"pg_opclass_is_visible\",\"pg_operator_is_visible\",\"pg_opfamily_is_visible\",\"pg_options_to_table\",\"pg_postmaster_start_time\",\"pg_read_binary_file\",\"pg_read_file\",\"pg_relation_filenode\",\"pg_relation_filepath\",\"pg_relation_size\",\"pg_reload_conf\",\"pg_replication_origin_create\",\"pg_replication_origin_drop\",\"pg_replication_origin_oid\",\"pg_replication_origin_progress\",\"pg_replication_origin_session_is_setup\",\"pg_replication_origin_session_progress\",\"pg_replication_origin_session_reset\",\"pg_replication_origin_session_setup\",\"pg_replication_origin_xact_reset\",\"pg_replication_origin_xact_setup\",\"pg_rotate_logfile\",\"pg_size_bytes\",\"pg_size_pretty\",\"pg_sleep\",\"pg_sleep_for\",\"pg_sleep_until\",\"pg_start_backup\",\"pg_stat_file\",\"pg_stop_backup\",\"pg_switch_xlog\",\"pg_table_is_visible\",\"pg_table_size\",\"pg_tablespace_databases\",\"pg_tablespace_location\",\"pg_tablespace_size\",\"pg_total_relation_size\",\"pg_trigger_depth\",\"pg_try_advisory_lock\",\"pg_try_advisory_lock_shared\",\"pg_try_advisory_xact_lock\",\"pg_try_advisory_xact_lock_shared\",\"pg_ts_config_is_visible\",\"pg_ts_dict_is_visible\",\"pg_ts_parser_is_visible\",\"pg_ts_template_is_visible\",\"pg_type_is_visible\",\"pg_typeof\",\"pg_xact_commit_timestamp\",\"pg_xlog_location_diff\",\"pg_xlog_replay_pause\",\"pg_xlog_replay_resume\",\"pg_xlogfile_name\",\"pg_xlogfile_name_offset\",\"phraseto_tsquery\",\"plainto_tsquery\",\"point\",\"polygon\",\"popen\",\"pqserverversion\",\"query_to_xml\",\"querytree\",\"quote_nullable\",\"radius\",\"range_merge\",\"regexp_matches\",\"regexp_split_to_array\",\"regexp_split_to_table\",\"regr_avgx\",\"regr_avgy\",\"regr_count\",\"regr_intercept\",\"regr_r2\",\"regr_slope\",\"regr_sxx\",\"regr_sxy\",\"regr_syy\",\"right\",\"row_security_active\",\"row_to_json\",\"rpad\",\"scale\",\"set_masklen\",\"setseed\",\"setval\",\"setweight\",\"shobj_description\",\"sind\",\"sprintf\",\"statement_timestamp\",\"stddev\",\"string_agg\",\"string_to_array\",\"strip\",\"substr\",\"table_to_xml\",\"table_to_xml_and_xmlschema\",\"tand\",\"text\",\"to_json\",\"to_regclass\",\"to_regnamespace\",\"to_regoper\",\"to_regoperator\",\"to_regproc\",\"to_regprocedure\",\"to_regrole\",\"to_regtype\",\"to_tsquery\",\"to_tsvector\",\"transaction_timestamp\",\"ts_debug\",\"ts_delete\",\"ts_filter\",\"ts_headline\",\"ts_lexize\",\"ts_parse\",\"ts_rank\",\"ts_rank_cd\",\"ts_rewrite\",\"ts_stat\",\"ts_token_type\",\"tsquery_phrase\",\"tsvector_to_array\",\"tsvector_update_trigger\",\"tsvector_update_trigger_column\",\"txid_current\",\"txid_current_snapshot\",\"txid_snapshot_xip\",\"txid_snapshot_xmax\",\"txid_snapshot_xmin\",\"txid_visible_in_snapshot\",\"unnest\",\"upper_inc\",\"upper_inf\",\"variance\",\"width\",\"width_bucket\",\"xml_is_well_formed\",\"xml_is_well_formed_content\",\"xml_is_well_formed_document\",\"xmlagg\",\"xmlcomment\",\"xmlconcat\",\"xmlelement\",\"xmlexists\",\"xmlforest\",\"xmlparse\",\"xmlpi\",\"xmlroot\",\"xmlserialize\",\"xpath\",\"xpath_exists\"],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:\"@comments\"},{include:\"@whitespace\"},{include:\"@pseudoColumns\"},{include:\"@numbers\"},{include:\"@strings\"},{include:\"@complexIdentifiers\"},{include:\"@scopes\"},[/[;,.]/,\"delimiter\"],[/[()]/,\"@brackets\"],[/[\\w@#$]+/,{cases:{\"@keywords\":\"keyword\",\"@operators\":\"operator\",\"@builtinVariables\":\"predefined\",\"@builtinFunctions\":\"predefined\",\"@default\":\"identifier\"}}],[/[<>=!%&+\\-*/|~^]/,\"operator\"]],whitespace:[[/\\s+/,\"white\"]],comments:[[/--+.*/,\"comment\"],[/\\/\\*/,{token:\"comment.quote\",next:\"@comment\"}]],comment:[[/[^*/]+/,\"comment\"],[/\\*\\//,{token:\"comment.quote\",next:\"@pop\"}],[/./,\"comment\"]],pseudoColumns:[[/[$][A-Za-z_][\\w@#$]*/,{cases:{\"@pseudoColumns\":\"predefined\",\"@default\":\"identifier\"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,\"number\"],[/[$][+-]*\\d*(\\.\\d*)?/,\"number\"],[/((\\d+(\\.\\d*)?)|(\\.\\d+))([eE][\\-+]?\\d+)?/,\"number\"]],strings:[[/'/,{token:\"string\",next:\"@string\"}]],string:[[/[^']+/,\"string\"],[/''/,\"string\"],[/'/,{token:\"string\",next:\"@pop\"}]],complexIdentifiers:[[/\"/,{token:\"identifier.quote\",next:\"@quotedIdentifier\"}]],quotedIdentifier:[[/[^\"]+/,\"identifier\"],[/\"\"/,\"identifier\"],[/\"/,{token:\"identifier.quote\",next:\"@pop\"}]],scopes:[]}};return g(m);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/restructuredtext/restructuredtext.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/restructuredtext/restructuredtext\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var t=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var r=Object.prototype.hasOwnProperty;var k=(n,e)=>{for(var i in e)t(n,i,{get:e[i],enumerable:!0})},c=(n,e,i,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of l(e))!r.call(n,s)&&s!==i&&t(n,s,{get:()=>e[s],enumerable:!(o=a(e,s))||o.enumerable});return n};var p=n=>c(t({},\"__esModule\",{value:!0}),n);var g={};k(g,{conf:()=>u,language:()=>m});var u={brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\",notIn:[\"string\"]}],surroundingPairs:[{open:\"(\",close:\")\"},{open:\"[\",close:\"]\"},{open:\"`\",close:\"`\"}],folding:{markers:{start:new RegExp(\"^\\\\s*<!--\\\\s*#?region\\\\b.*-->\"),end:new RegExp(\"^\\\\s*<!--\\\\s*#?endregion\\\\b.*-->\")}}},m={defaultToken:\"\",tokenPostfix:\".rst\",control:/[\\\\`*_\\[\\]{}()#+\\-\\.!]/,escapes:/\\\\(?:@control)/,empty:[\"area\",\"base\",\"basefont\",\"br\",\"col\",\"frame\",\"hr\",\"img\",\"input\",\"isindex\",\"link\",\"meta\",\"param\"],alphanumerics:/[A-Za-z0-9]/,simpleRefNameWithoutBq:/(?:@alphanumerics[-_+:.]*@alphanumerics)+|(?:@alphanumerics+)/,simpleRefName:/(?:`@phrase`|@simpleRefNameWithoutBq)/,phrase:/@simpleRefNameWithoutBq(?:\\s@simpleRefNameWithoutBq)*/,citationName:/[A-Za-z][A-Za-z0-9-_.]*/,blockLiteralStart:/(?:[!\"#$%&'()*+,-./:;<=>?@\\[\\]^_`{|}~]|[\\s])/,precedingChars:/(?:[ -:/'\"<([{])/,followingChars:/(?:[ -.,:;!?/'\")\\]}>]|$)/,punctuation:/(=|-|~|`|#|\"|\\^|\\+|\\*|:|\\.|'|_|\\+)/,tokenizer:{root:[[/^(@punctuation{3,}$){1,1}?/,\"keyword\"],[/^\\s*([\\*\\-+‣•]|[a-zA-Z0-9]+\\.|\\([a-zA-Z0-9]+\\)|[a-zA-Z0-9]+\\))\\s/,\"keyword\"],[/([ ]::)\\s*$/,\"keyword\",\"@blankLineOfLiteralBlocks\"],[/(::)\\s*$/,\"keyword\",\"@blankLineOfLiteralBlocks\"],{include:\"@tables\"},{include:\"@explicitMarkupBlocks\"},{include:\"@inlineMarkup\"}],explicitMarkupBlocks:[{include:\"@citations\"},{include:\"@footnotes\"},[/^(\\.\\.\\s)(@simpleRefName)(::\\s)(.*)$/,[{token:\"\",next:\"subsequentLines\"},\"keyword\",\"\",\"\"]],[/^(\\.\\.)(\\s+)(_)(@simpleRefName)(:)(\\s+)(.*)/,[{token:\"\",next:\"hyperlinks\"},\"\",\"\",\"string.link\",\"\",\"\",\"string.link\"]],[/^((?:(?:\\.\\.)(?:\\s+))?)(__)(:)(\\s+)(.*)/,[{token:\"\",next:\"subsequentLines\"},\"\",\"\",\"\",\"string.link\"]],[/^(__\\s+)(.+)/,[\"\",\"string.link\"]],[/^(\\.\\.)( \\|)([^| ]+[^|]*[^| ]*)(\\| )(@simpleRefName)(:: .*)/,[{token:\"\",next:\"subsequentLines\"},\"\",\"string.link\",\"\",\"keyword\",\"\"],\"@rawBlocks\"],[/(\\|)([^| ]+[^|]*[^| ]*)(\\|_{0,2})/,[\"\",\"string.link\",\"\"]],[/^(\\.\\.)([ ].*)$/,[{token:\"\",next:\"@comments\"},\"comment\"]]],inlineMarkup:[{include:\"@citationsReference\"},{include:\"@footnotesReference\"},[/(@simpleRefName)(_{1,2})/,[\"string.link\",\"\"]],[/(`)([^<`]+\\s+)(<)(.*)(>)(`)(_)/,[\"\",\"string.link\",\"\",\"string.link\",\"\",\"\",\"\"]],[/\\*\\*([^\\\\*]|\\*(?!\\*))+\\*\\*/,\"strong\"],[/\\*[^*]+\\*/,\"emphasis\"],[/(``)((?:[^`]|\\`(?!`))+)(``)/,[\"\",\"keyword\",\"\"]],[/(__\\s+)(.+)/,[\"\",\"keyword\"]],[/(:)((?:@simpleRefNameWithoutBq)?)(:`)([^`]+)(`)/,[\"\",\"keyword\",\"\",\"\",\"\"]],[/(`)([^`]+)(`:)((?:@simpleRefNameWithoutBq)?)(:)/,[\"\",\"\",\"\",\"keyword\",\"\"]],[/(`)([^`]+)(`)/,\"\"],[/(_`)(@phrase)(`)/,[\"\",\"string.link\",\"\"]]],citations:[[/^(\\.\\.\\s+\\[)((?:@citationName))(\\]\\s+)(.*)/,[{token:\"\",next:\"@subsequentLines\"},\"string.link\",\"\",\"\"]]],citationsReference:[[/(\\[)(@citationName)(\\]_)/,[\"\",\"string.link\",\"\"]]],footnotes:[[/^(\\.\\.\\s+\\[)((?:[0-9]+))(\\]\\s+.*)/,[{token:\"\",next:\"@subsequentLines\"},\"string.link\",\"\"]],[/^(\\.\\.\\s+\\[)((?:#@simpleRefName?))(\\]\\s+)(.*)/,[{token:\"\",next:\"@subsequentLines\"},\"string.link\",\"\",\"\"]],[/^(\\.\\.\\s+\\[)((?:\\*))(\\]\\s+)(.*)/,[{token:\"\",next:\"@subsequentLines\"},\"string.link\",\"\",\"\"]]],footnotesReference:[[/(\\[)([0-9]+)(\\])(_)/,[\"\",\"string.link\",\"\",\"\"]],[/(\\[)(#@simpleRefName?)(\\])(_)/,[\"\",\"string.link\",\"\",\"\"]],[/(\\[)(\\*)(\\])(_)/,[\"\",\"string.link\",\"\",\"\"]]],blankLineOfLiteralBlocks:[[/^$/,\"\",\"@subsequentLinesOfLiteralBlocks\"],[/^.*$/,\"\",\"@pop\"]],subsequentLinesOfLiteralBlocks:[[/(@blockLiteralStart+)(.*)/,[\"keyword\",\"\"]],[/^(?!blockLiteralStart)/,\"\",\"@popall\"]],subsequentLines:[[/^[\\s]+.*/,\"\"],[/^(?!\\s)/,\"\",\"@pop\"]],hyperlinks:[[/^[\\s]+.*/,\"string.link\"],[/^(?!\\s)/,\"\",\"@pop\"]],comments:[[/^[\\s]+.*/,\"comment\"],[/^(?!\\s)/,\"\",\"@pop\"]],tables:[[/\\+-[+-]+/,\"keyword\"],[/\\+=[+=]+/,\"keyword\"]]}};return p(g);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/ruby/ruby.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/ruby/ruby\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var p=(t,e)=>{for(var r in e)o(t,r,{get:e[r],enumerable:!0})},l=(t,e,r,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of c(e))!d.call(t,n)&&n!==r&&o(t,n,{get:()=>e[n],enumerable:!(s=i(e,n))||s.enumerable});return t};var a=t=>l(o({},\"__esModule\",{value:!0}),t);var m={};p(m,{conf:()=>g,language:()=>x});var g={comments:{lineComment:\"#\",blockComment:[\"=begin\",\"=end\"]},brackets:[[\"(\",\")\"],[\"{\",\"}\"],[\"[\",\"]\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],indentationRules:{increaseIndentPattern:new RegExp(`^\\\\s*((begin|class|(private|protected)\\\\s+def|def|else|elsif|ensure|for|if|module|rescue|unless|until|when|while|case)|([^#]*\\\\sdo\\\\b)|([^#]*=\\\\s*(case|if|unless)))\\\\b([^#\\\\{;]|(\"|'|/).*\\\\4)*(#.*)?$`),decreaseIndentPattern:new RegExp(\"^\\\\s*([}\\\\]]([,)]?\\\\s*(#|$)|\\\\.[a-zA-Z_]\\\\w*\\\\b)|(end|rescue|ensure|else|elsif|when)\\\\b)\")}},x={tokenPostfix:\".ruby\",keywords:[\"__LINE__\",\"__ENCODING__\",\"__FILE__\",\"BEGIN\",\"END\",\"alias\",\"and\",\"begin\",\"break\",\"case\",\"class\",\"def\",\"defined?\",\"do\",\"else\",\"elsif\",\"end\",\"ensure\",\"for\",\"false\",\"if\",\"in\",\"module\",\"next\",\"nil\",\"not\",\"or\",\"redo\",\"rescue\",\"retry\",\"return\",\"self\",\"super\",\"then\",\"true\",\"undef\",\"unless\",\"until\",\"when\",\"while\",\"yield\"],keywordops:[\"::\",\"..\",\"...\",\"?\",\":\",\"=>\"],builtins:[\"require\",\"public\",\"private\",\"include\",\"extend\",\"attr_reader\",\"protected\",\"private_class_method\",\"protected_class_method\",\"new\"],declarations:[\"module\",\"class\",\"def\",\"case\",\"do\",\"begin\",\"for\",\"if\",\"while\",\"until\",\"unless\"],linedecls:[\"def\",\"case\",\"do\",\"begin\",\"for\",\"if\",\"while\",\"until\",\"unless\"],operators:[\"^\",\"&\",\"|\",\"<=>\",\"==\",\"===\",\"!~\",\"=~\",\">\",\">=\",\"<\",\"<=\",\"<<\",\">>\",\"+\",\"-\",\"*\",\"/\",\"%\",\"**\",\"~\",\"+@\",\"-@\",\"[]\",\"[]=\",\"`\",\"+=\",\"-=\",\"*=\",\"**=\",\"/=\",\"^=\",\"%=\",\"<<=\",\">>=\",\"&=\",\"&&=\",\"||=\",\"|=\"],brackets:[{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"}],symbols:/[=><!~?:&|+\\-*\\/\\^%\\.]+/,escape:/(?:[abefnrstv\\\\\"'\\n\\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,escapes:/\\\\(?:C\\-(@escape|.)|c(@escape|.)|@escape)/,decpart:/\\d(_?\\d)*/,decimal:/0|@decpart/,delim:/[^a-zA-Z0-9\\s\\n\\r]/,heredelim:/(?:\\w+|'[^']*'|\"[^\"]*\"|`[^`]*`)/,regexpctl:/[(){}\\[\\]\\$\\^|\\-*+?\\.]/,regexpesc:/\\\\(?:[AzZbBdDfnrstvwWn0\\\\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})?/,tokenizer:{root:[[/^(\\s*)([a-z_]\\w*[!?=]?)/,[\"white\",{cases:{\"for|until|while\":{token:\"keyword.$2\",next:\"@dodecl.$2\"},\"@declarations\":{token:\"keyword.$2\",next:\"@root.$2\"},end:{token:\"keyword.$S2\",next:\"@pop\"},\"@keywords\":\"keyword\",\"@builtins\":\"predefined\",\"@default\":\"identifier\"}}]],[/[a-z_]\\w*[!?=]?/,{cases:{\"if|unless|while|until\":{token:\"keyword.$0x\",next:\"@modifier.$0x\"},for:{token:\"keyword.$2\",next:\"@dodecl.$2\"},\"@linedecls\":{token:\"keyword.$0\",next:\"@root.$0\"},end:{token:\"keyword.$S2\",next:\"@pop\"},\"@keywords\":\"keyword\",\"@builtins\":\"predefined\",\"@default\":\"identifier\"}}],[/[A-Z][\\w]*[!?=]?/,\"constructor.identifier\"],[/\\$[\\w]*/,\"global.constant\"],[/@[\\w]*/,\"namespace.instance.identifier\"],[/@@@[\\w]*/,\"namespace.class.identifier\"],[/<<[-~](@heredelim).*/,{token:\"string.heredoc.delimiter\",next:\"@heredoc.$1\"}],[/[ \\t\\r\\n]+<<(@heredelim).*/,{token:\"string.heredoc.delimiter\",next:\"@heredoc.$1\"}],[/^<<(@heredelim).*/,{token:\"string.heredoc.delimiter\",next:\"@heredoc.$1\"}],{include:\"@whitespace\"},[/\"/,{token:\"string.d.delim\",next:'@dstring.d.\"'}],[/'/,{token:\"string.sq.delim\",next:\"@sstring.sq\"}],[/%([rsqxwW]|Q?)/,{token:\"@rematch\",next:\"pstring\"}],[/`/,{token:\"string.x.delim\",next:\"@dstring.x.`\"}],[/:(\\w|[$@])\\w*[!?=]?/,\"string.s\"],[/:\"/,{token:\"string.s.delim\",next:'@dstring.s.\"'}],[/:'/,{token:\"string.s.delim\",next:\"@sstring.s\"}],[/\\/(?=(\\\\\\/|[^\\/\\n])+\\/)/,{token:\"regexp.delim\",next:\"@regexp\"}],[/[{}()\\[\\]]/,\"@brackets\"],[/@symbols/,{cases:{\"@keywordops\":\"keyword\",\"@operators\":\"operator\",\"@default\":\"\"}}],[/[;,]/,\"delimiter\"],[/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/,\"number.hex\"],[/0[_oO][0-7](_?[0-7])*/,\"number.octal\"],[/0[bB][01](_?[01])*/,\"number.binary\"],[/0[dD]@decpart/,\"number\"],[/@decimal((\\.@decpart)?([eE][\\-+]?@decpart)?)/,{cases:{$1:\"number.float\",\"@default\":\"number\"}}]],dodecl:[[/^/,{token:\"\",switchTo:\"@root.$S2\"}],[/[a-z_]\\w*[!?=]?/,{cases:{end:{token:\"keyword.$S2\",next:\"@pop\"},do:{token:\"keyword\",switchTo:\"@root.$S2\"},\"@linedecls\":{token:\"@rematch\",switchTo:\"@root.$S2\"},\"@keywords\":\"keyword\",\"@builtins\":\"predefined\",\"@default\":\"identifier\"}}],{include:\"@root\"}],modifier:[[/^/,\"\",\"@pop\"],[/[a-z_]\\w*[!?=]?/,{cases:{end:{token:\"keyword.$S2\",next:\"@pop\"},\"then|else|elsif|do\":{token:\"keyword\",switchTo:\"@root.$S2\"},\"@linedecls\":{token:\"@rematch\",switchTo:\"@root.$S2\"},\"@keywords\":\"keyword\",\"@builtins\":\"predefined\",\"@default\":\"identifier\"}}],{include:\"@root\"}],sstring:[[/[^\\\\']+/,\"string.$S2\"],[/\\\\\\\\|\\\\'|\\\\$/,\"string.$S2.escape\"],[/\\\\./,\"string.$S2.invalid\"],[/'/,{token:\"string.$S2.delim\",next:\"@pop\"}]],dstring:[[/[^\\\\`\"#]+/,\"string.$S2\"],[/#/,\"string.$S2.escape\",\"@interpolated\"],[/\\\\$/,\"string.$S2.escape\"],[/@escapes/,\"string.$S2.escape\"],[/\\\\./,\"string.$S2.escape.invalid\"],[/[`\"]/,{cases:{\"$#==$S3\":{token:\"string.$S2.delim\",next:\"@pop\"},\"@default\":\"string.$S2\"}}]],heredoc:[[/^(\\s*)(@heredelim)$/,{cases:{\"$2==$S2\":[\"string.heredoc\",{token:\"string.heredoc.delimiter\",next:\"@pop\"}],\"@default\":[\"string.heredoc\",\"string.heredoc\"]}}],[/.*/,\"string.heredoc\"]],interpolated:[[/\\$\\w*/,\"global.constant\",\"@pop\"],[/@\\w*/,\"namespace.class.identifier\",\"@pop\"],[/@@@\\w*/,\"namespace.instance.identifier\",\"@pop\"],[/[{]/,{token:\"string.escape.curly\",switchTo:\"@interpolated_compound\"}],[\"\",\"\",\"@pop\"]],interpolated_compound:[[/[}]/,{token:\"string.escape.curly\",next:\"@pop\"}],{include:\"@root\"}],pregexp:[{include:\"@whitespace\"},[/[^\\(\\{\\[\\\\]/,{cases:{\"$#==$S3\":{token:\"regexp.delim\",next:\"@pop\"},\"$#==$S2\":{token:\"regexp.delim\",next:\"@push\"},\"~[)}\\\\]]\":\"@brackets.regexp.escape.control\",\"~@regexpctl\":\"regexp.escape.control\",\"@default\":\"regexp\"}}],{include:\"@regexcontrol\"}],regexp:[{include:\"@regexcontrol\"},[/[^\\\\\\/]/,\"regexp\"],[\"/[ixmp]*\",{token:\"regexp.delim\"},\"@pop\"]],regexcontrol:[[/(\\{)(\\d+(?:,\\d*)?)(\\})/,[\"@brackets.regexp.escape.control\",\"regexp.escape.control\",\"@brackets.regexp.escape.control\"]],[/(\\[)(\\^?)/,[\"@brackets.regexp.escape.control\",{token:\"regexp.escape.control\",next:\"@regexrange\"}]],[/(\\()(\\?[:=!])/,[\"@brackets.regexp.escape.control\",\"regexp.escape.control\"]],[/\\(\\?#/,{token:\"regexp.escape.control\",next:\"@regexpcomment\"}],[/[()]/,\"@brackets.regexp.escape.control\"],[/@regexpctl/,\"regexp.escape.control\"],[/\\\\$/,\"regexp.escape\"],[/@regexpesc/,\"regexp.escape\"],[/\\\\\\./,\"regexp.invalid\"],[/#/,\"regexp.escape\",\"@interpolated\"]],regexrange:[[/-/,\"regexp.escape.control\"],[/\\^/,\"regexp.invalid\"],[/\\\\$/,\"regexp.escape\"],[/@regexpesc/,\"regexp.escape\"],[/[^\\]]/,\"regexp\"],[/\\]/,\"@brackets.regexp.escape.control\",\"@pop\"]],regexpcomment:[[/[^)]+/,\"comment\"],[/\\)/,{token:\"regexp.escape.control\",next:\"@pop\"}]],pstring:[[/%([qws])\\(/,{token:\"string.$1.delim\",switchTo:\"@qstring.$1.(.)\"}],[/%([qws])\\[/,{token:\"string.$1.delim\",switchTo:\"@qstring.$1.[.]\"}],[/%([qws])\\{/,{token:\"string.$1.delim\",switchTo:\"@qstring.$1.{.}\"}],[/%([qws])</,{token:\"string.$1.delim\",switchTo:\"@qstring.$1.<.>\"}],[/%([qws])(@delim)/,{token:\"string.$1.delim\",switchTo:\"@qstring.$1.$2.$2\"}],[/%r\\(/,{token:\"regexp.delim\",switchTo:\"@pregexp.(.)\"}],[/%r\\[/,{token:\"regexp.delim\",switchTo:\"@pregexp.[.]\"}],[/%r\\{/,{token:\"regexp.delim\",switchTo:\"@pregexp.{.}\"}],[/%r</,{token:\"regexp.delim\",switchTo:\"@pregexp.<.>\"}],[/%r(@delim)/,{token:\"regexp.delim\",switchTo:\"@pregexp.$1.$1\"}],[/%(x|W|Q?)\\(/,{token:\"string.$1.delim\",switchTo:\"@qqstring.$1.(.)\"}],[/%(x|W|Q?)\\[/,{token:\"string.$1.delim\",switchTo:\"@qqstring.$1.[.]\"}],[/%(x|W|Q?)\\{/,{token:\"string.$1.delim\",switchTo:\"@qqstring.$1.{.}\"}],[/%(x|W|Q?)</,{token:\"string.$1.delim\",switchTo:\"@qqstring.$1.<.>\"}],[/%(x|W|Q?)(@delim)/,{token:\"string.$1.delim\",switchTo:\"@qqstring.$1.$2.$2\"}],[/%([rqwsxW]|Q?)./,{token:\"invalid\",next:\"@pop\"}],[/./,{token:\"invalid\",next:\"@pop\"}]],qstring:[[/\\\\$/,\"string.$S2.escape\"],[/\\\\./,\"string.$S2.escape\"],[/./,{cases:{\"$#==$S4\":{token:\"string.$S2.delim\",next:\"@pop\"},\"$#==$S3\":{token:\"string.$S2.delim\",next:\"@push\"},\"@default\":\"string.$S2\"}}]],qqstring:[[/#/,\"string.$S2.escape\",\"@interpolated\"],{include:\"@qstring\"}],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/^\\s*=begin\\b/,\"comment\",\"@comment\"],[/#.*$/,\"comment\"]],comment:[[/[^=]+/,\"comment\"],[/^\\s*=begin\\b/,\"comment.invalid\"],[/^\\s*=end\\b.*/,\"comment\",\"@pop\"],[/[=]/,\"comment\"]]}};return a(m);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/rust/rust.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/rust/rust\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var _=(t,e)=>{for(var n in e)r(t,n,{get:e[n],enumerable:!0})},u=(t,e,n,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let o of a(e))!c.call(t,o)&&o!==n&&r(t,o,{get:()=>e[o],enumerable:!(s=i(e,o))||s.enumerable});return t};var l=t=>u(r({},\"__esModule\",{value:!0}),t);var m={};_(m,{conf:()=>f,language:()=>p});var f={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"[\",close:\"]\"},{open:\"{\",close:\"}\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"',notIn:[\"string\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],folding:{markers:{start:new RegExp(\"^\\\\s*#pragma\\\\s+region\\\\b\"),end:new RegExp(\"^\\\\s*#pragma\\\\s+endregion\\\\b\")}}},p={tokenPostfix:\".rust\",defaultToken:\"invalid\",keywords:[\"as\",\"async\",\"await\",\"box\",\"break\",\"const\",\"continue\",\"crate\",\"dyn\",\"else\",\"enum\",\"extern\",\"false\",\"fn\",\"for\",\"if\",\"impl\",\"in\",\"let\",\"loop\",\"match\",\"mod\",\"move\",\"mut\",\"pub\",\"ref\",\"return\",\"self\",\"static\",\"struct\",\"super\",\"trait\",\"true\",\"try\",\"type\",\"unsafe\",\"use\",\"where\",\"while\",\"catch\",\"default\",\"union\",\"static\",\"abstract\",\"alignof\",\"become\",\"do\",\"final\",\"macro\",\"offsetof\",\"override\",\"priv\",\"proc\",\"pure\",\"sizeof\",\"typeof\",\"unsized\",\"virtual\",\"yield\"],typeKeywords:[\"Self\",\"m32\",\"m64\",\"m128\",\"f80\",\"f16\",\"f128\",\"int\",\"uint\",\"float\",\"char\",\"bool\",\"u8\",\"u16\",\"u32\",\"u64\",\"f32\",\"f64\",\"i8\",\"i16\",\"i32\",\"i64\",\"str\",\"Option\",\"Either\",\"c_float\",\"c_double\",\"c_void\",\"FILE\",\"fpos_t\",\"DIR\",\"dirent\",\"c_char\",\"c_schar\",\"c_uchar\",\"c_short\",\"c_ushort\",\"c_int\",\"c_uint\",\"c_long\",\"c_ulong\",\"size_t\",\"ptrdiff_t\",\"clock_t\",\"time_t\",\"c_longlong\",\"c_ulonglong\",\"intptr_t\",\"uintptr_t\",\"off_t\",\"dev_t\",\"ino_t\",\"pid_t\",\"mode_t\",\"ssize_t\"],constants:[\"true\",\"false\",\"Some\",\"None\",\"Left\",\"Right\",\"Ok\",\"Err\"],supportConstants:[\"EXIT_FAILURE\",\"EXIT_SUCCESS\",\"RAND_MAX\",\"EOF\",\"SEEK_SET\",\"SEEK_CUR\",\"SEEK_END\",\"_IOFBF\",\"_IONBF\",\"_IOLBF\",\"BUFSIZ\",\"FOPEN_MAX\",\"FILENAME_MAX\",\"L_tmpnam\",\"TMP_MAX\",\"O_RDONLY\",\"O_WRONLY\",\"O_RDWR\",\"O_APPEND\",\"O_CREAT\",\"O_EXCL\",\"O_TRUNC\",\"S_IFIFO\",\"S_IFCHR\",\"S_IFBLK\",\"S_IFDIR\",\"S_IFREG\",\"S_IFMT\",\"S_IEXEC\",\"S_IWRITE\",\"S_IREAD\",\"S_IRWXU\",\"S_IXUSR\",\"S_IWUSR\",\"S_IRUSR\",\"F_OK\",\"R_OK\",\"W_OK\",\"X_OK\",\"STDIN_FILENO\",\"STDOUT_FILENO\",\"STDERR_FILENO\"],supportMacros:[\"format!\",\"print!\",\"println!\",\"panic!\",\"format_args!\",\"unreachable!\",\"write!\",\"writeln!\"],operators:[\"!\",\"!=\",\"%\",\"%=\",\"&\",\"&=\",\"&&\",\"*\",\"*=\",\"+\",\"+=\",\"-\",\"-=\",\"->\",\".\",\"..\",\"...\",\"/\",\"/=\",\":\",\";\",\"<<\",\"<<=\",\"<\",\"<=\",\"=\",\"==\",\"=>\",\">\",\">=\",\">>\",\">>=\",\"@\",\"^\",\"^=\",\"|\",\"|=\",\"||\",\"_\",\"?\",\"#\"],escapes:/\\\\([nrt0\\\"''\\\\]|x\\h{2}|u\\{\\h{1,6}\\})/,delimiters:/[,]/,symbols:/[\\#\\!\\%\\&\\*\\+\\-\\.\\/\\:\\;\\<\\=\\>\\@\\^\\|_\\?]+/,intSuffixes:/[iu](8|16|32|64|128|size)/,floatSuffixes:/f(32|64)/,tokenizer:{root:[[/r(#*)\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@stringraw.$1\"}],[/[a-zA-Z][a-zA-Z0-9_]*!?|_[a-zA-Z0-9_]+/,{cases:{\"@typeKeywords\":\"keyword.type\",\"@keywords\":\"keyword\",\"@supportConstants\":\"keyword\",\"@supportMacros\":\"keyword\",\"@constants\":\"keyword\",\"@default\":\"identifier\"}}],[/\\$/,\"identifier\"],[/'[a-zA-Z_][a-zA-Z0-9_]*(?=[^\\'])/,\"identifier\"],[/'(\\S|@escapes)'/,\"string.byteliteral\"],[/\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@string\"}],{include:\"@numbers\"},{include:\"@whitespace\"},[/@delimiters/,{cases:{\"@keywords\":\"keyword\",\"@default\":\"delimiter\"}}],[/[{}()\\[\\]<>]/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"operator\",\"@default\":\"\"}}]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\/\\*/,\"comment\",\"@push\"],[\"\\\\*/\",\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"}]],stringraw:[[/[^\"#]+/,{token:\"string\"}],[/\"(#*)/,{cases:{\"$1==$S2\":{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"},\"@default\":{token:\"string\"}}}],[/[\"#]/,{token:\"string\"}]],numbers:[[/(0o[0-7_]+)(@intSuffixes)?/,{token:\"number\"}],[/(0b[0-1_]+)(@intSuffixes)?/,{token:\"number\"}],[/[\\d][\\d_]*(\\.[\\d][\\d_]*)?[eE][+-][\\d_]+(@floatSuffixes)?/,{token:\"number\"}],[/\\b(\\d\\.?[\\d_]*)(@floatSuffixes)?\\b/,{token:\"number\"}],[/(0x[\\da-fA-F]+)_?(@intSuffixes)?/,{token:\"number\"}],[/[\\d][\\d_]*(@intSuffixes?)?/,{token:\"number\"}]]}};return l(m);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/sb/sb.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/sb/sb\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var d=(o,e)=>{for(var t in e)r(o,t,{get:e[t],enumerable:!0})},c=(o,e,t,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of a(e))!l.call(o,n)&&n!==t&&r(o,n,{get:()=>e[n],enumerable:!(s=i(e,n))||s.enumerable});return o};var g=o=>c(r({},\"__esModule\",{value:!0}),o);var m={};d(m,{conf:()=>p,language:()=>f});var p={comments:{lineComment:\"'\"},brackets:[[\"(\",\")\"],[\"[\",\"]\"],[\"If\",\"EndIf\"],[\"While\",\"EndWhile\"],[\"For\",\"EndFor\"],[\"Sub\",\"EndSub\"]],autoClosingPairs:[{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]},{open:\"(\",close:\")\",notIn:[\"string\",\"comment\"]},{open:\"[\",close:\"]\",notIn:[\"string\",\"comment\"]}]},f={defaultToken:\"\",tokenPostfix:\".sb\",ignoreCase:!0,brackets:[{token:\"delimiter.array\",open:\"[\",close:\"]\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"},{token:\"keyword.tag-if\",open:\"If\",close:\"EndIf\"},{token:\"keyword.tag-while\",open:\"While\",close:\"EndWhile\"},{token:\"keyword.tag-for\",open:\"For\",close:\"EndFor\"},{token:\"keyword.tag-sub\",open:\"Sub\",close:\"EndSub\"}],keywords:[\"Else\",\"ElseIf\",\"EndFor\",\"EndIf\",\"EndSub\",\"EndWhile\",\"For\",\"Goto\",\"If\",\"Step\",\"Sub\",\"Then\",\"To\",\"While\"],tagwords:[\"If\",\"Sub\",\"While\",\"For\"],operators:[\">\",\"<\",\"<>\",\"<=\",\">=\",\"And\",\"Or\",\"+\",\"-\",\"*\",\"/\",\"=\"],identifier:/[a-zA-Z_][\\w]*/,symbols:/[=><:+\\-*\\/%\\.,]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:\"@whitespace\"},[/(@identifier)(?=[.])/,\"type\"],[/@identifier/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@operators\":\"operator\",\"@default\":\"variable.name\"}}],[/([.])(@identifier)/,{cases:{$2:[\"delimiter\",\"type.member\"],\"@default\":\"\"}}],[/\\d*\\.\\d+/,\"number.float\"],[/\\d+/,\"number\"],[/[()\\[\\]]/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"operator\",\"@default\":\"delimiter\"}}],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",\"@string\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/(\\').*$/,\"comment\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"C?/,\"string\",\"@pop\"]]}};return g(m);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/scala/scala.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/scala/scala\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var n=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var r in e)n(t,r,{get:e[r],enumerable:!0})},c=(t,e,r,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let o of i(e))!d.call(t,o)&&o!==r&&n(t,o,{get:()=>e[o],enumerable:!(a=s(e,o))||a.enumerable});return t};var g=t=>c(n({},\"__esModule\",{value:!0}),t);var m={};l(m,{conf:()=>p,language:()=>w});var p={wordPattern:/(unary_[@~!#%^&*()\\-=+\\\\|:<>\\/?]+)|([a-zA-Z_$][\\w$]*?_=)|(`[^`]+`)|([a-zA-Z_$][\\w$]*)/g,comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],folding:{markers:{start:new RegExp(\"^\\\\s*//\\\\s*(?:(?:#?region\\\\b)|(?:<editor-fold\\\\b))\"),end:new RegExp(\"^\\\\s*//\\\\s*(?:(?:#?endregion\\\\b)|(?:</editor-fold>))\")}}},w={tokenPostfix:\".scala\",keywords:[\"asInstanceOf\",\"catch\",\"class\",\"classOf\",\"def\",\"do\",\"else\",\"extends\",\"finally\",\"for\",\"foreach\",\"forSome\",\"if\",\"import\",\"isInstanceOf\",\"macro\",\"match\",\"new\",\"object\",\"package\",\"return\",\"throw\",\"trait\",\"try\",\"type\",\"until\",\"val\",\"var\",\"while\",\"with\",\"yield\",\"given\",\"enum\",\"then\"],softKeywords:[\"as\",\"export\",\"extension\",\"end\",\"derives\",\"on\"],constants:[\"true\",\"false\",\"null\",\"this\",\"super\"],modifiers:[\"abstract\",\"final\",\"implicit\",\"lazy\",\"override\",\"private\",\"protected\",\"sealed\"],softModifiers:[\"inline\",\"opaque\",\"open\",\"transparent\",\"using\"],name:/(?:[a-z_$][\\w$]*|`[^`]+`)/,type:/(?:[A-Z][\\w$]*)/,symbols:/[=><!~?:&|+\\-*\\/^\\\\%@#]+/,digits:/\\d+(_+\\d+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,escapes:/\\\\(?:[btnfr\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,fstring_conv:/[bBhHsScCdoxXeEfgGaAt]|[Tn](?:[HIklMSLNpzZsQ]|[BbhAaCYyjmde]|[RTrDFC])/,tokenizer:{root:[[/\\braw\"\"\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@rawstringt\"}],[/\\braw\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@rawstring\"}],[/\\bs\"\"\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@sstringt\"}],[/\\bs\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@sstring\"}],[/\\bf\"\"\"\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@fstringt\"}],[/\\bf\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@fstring\"}],[/\"\"\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@stringt\"}],[/\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@string\"}],[/(@digits)[eE]([\\-+]?(@digits))?[fFdD]?/,\"number.float\",\"@allowMethod\"],[/(@digits)\\.(@digits)([eE][\\-+]?(@digits))?[fFdD]?/,\"number.float\",\"@allowMethod\"],[/0[xX](@hexdigits)[Ll]?/,\"number.hex\",\"@allowMethod\"],[/(@digits)[fFdD]/,\"number.float\",\"@allowMethod\"],[/(@digits)[lL]?/,\"number\",\"@allowMethod\"],[/\\b_\\*/,\"key\"],[/\\b(_)\\b/,\"keyword\",\"@allowMethod\"],[/\\bimport\\b/,\"keyword\",\"@import\"],[/\\b(case)([ \\t]+)(class)\\b/,[\"keyword.modifier\",\"white\",\"keyword\"]],[/\\bcase\\b/,\"keyword\",\"@case\"],[/\\bva[lr]\\b/,\"keyword\",\"@vardef\"],[/\\b(def)([ \\t]+)((?:unary_)?@symbols|@name(?:_=)|@name)/,[\"keyword\",\"white\",\"identifier\"]],[/@name(?=[ \\t]*:(?!:))/,\"variable\"],[/(\\.)(@name|@symbols)/,[\"operator\",{token:\"@rematch\",next:\"@allowMethod\"}]],[/([{(])(\\s*)(@name(?=\\s*=>))/,[\"@brackets\",\"white\",\"variable\"]],[/@name/,{cases:{\"@keywords\":\"keyword\",\"@softKeywords\":\"keyword\",\"@modifiers\":\"keyword.modifier\",\"@softModifiers\":\"keyword.modifier\",\"@constants\":{token:\"constant\",next:\"@allowMethod\"},\"@default\":{token:\"identifier\",next:\"@allowMethod\"}}}],[/@type/,\"type\",\"@allowMethod\"],{include:\"@whitespace\"},[/@[a-zA-Z_$][\\w$]*(?:\\.[a-zA-Z_$][\\w$]*)*/,\"annotation\"],[/[{(]/,\"@brackets\"],[/[})]/,\"@brackets\",\"@allowMethod\"],[/\\[/,\"operator.square\"],[/](?!\\s*(?:va[rl]|def|type)\\b)/,\"operator.square\",\"@allowMethod\"],[/]/,\"operator.square\"],[/([=-]>|<-|>:|<:|:>|<%)(?=[\\s\\w()[\\]{},\\.\"'`])/,\"keyword\"],[/@symbols/,\"operator\"],[/[;,\\.]/,\"delimiter\"],[/'[a-zA-Z$][\\w$]*(?!')/,\"attribute.name\"],[/'[^\\\\']'/,\"string\",\"@allowMethod\"],[/(')(@escapes)(')/,[\"string\",\"string.escape\",{token:\"string\",next:\"@allowMethod\"}]],[/'/,\"string.invalid\"]],import:[[/;/,\"delimiter\",\"@pop\"],[/^|$/,\"\",\"@pop\"],[/[ \\t]+/,\"white\"],[/[\\n\\r]+/,\"white\",\"@pop\"],[/\\/\\*/,\"comment\",\"@comment\"],[/@name|@type/,\"type\"],[/[(){}]/,\"@brackets\"],[/[[\\]]/,\"operator.square\"],[/[\\.,]/,\"delimiter\"]],allowMethod:[[/^|$/,\"\",\"@pop\"],[/[ \\t]+/,\"white\"],[/[\\n\\r]+/,\"white\",\"@pop\"],[/\\/\\*/,\"comment\",\"@comment\"],[/(?==>[\\s\\w([{])/,\"keyword\",\"@pop\"],[/(@name|@symbols)(?=[ \\t]*[[({\"'`]|[ \\t]+(?:[+-]?\\.?\\d|\\w))/,{cases:{\"@keywords\":{token:\"keyword\",next:\"@pop\"},\"->|<-|>:|<:|<%\":{token:\"keyword\",next:\"@pop\"},\"@default\":{token:\"@rematch\",next:\"@pop\"}}}],[\"\",\"\",\"@pop\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\/\\*/,\"comment\",\"@push\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],case:[[/\\b_\\*/,\"key\"],[/\\b(_|true|false|null|this|super)\\b/,\"keyword\",\"@allowMethod\"],[/\\bif\\b|=>/,\"keyword\",\"@pop\"],[/`[^`]+`/,\"identifier\",\"@allowMethod\"],[/@name/,\"variable\",\"@allowMethod\"],[/:::?|\\||@(?![a-z_$])/,\"keyword\"],{include:\"@root\"}],vardef:[[/\\b_\\*/,\"key\"],[/\\b(_|true|false|null|this|super)\\b/,\"keyword\"],[/@name/,\"variable\"],[/:::?|\\||@(?![a-z_$])/,\"keyword\"],[/=|:(?!:)/,\"operator\",\"@pop\"],[/$/,\"white\",\"@pop\"],{include:\"@root\"}],string:[[/[^\\\\\"\\n\\r]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,{token:\"string.quote\",bracket:\"@close\",switchTo:\"@allowMethod\"}]],stringt:[[/[^\\\\\"\\n\\r]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"(?=\"\"\")/,\"string\"],[/\"\"\"/,{token:\"string.quote\",bracket:\"@close\",switchTo:\"@allowMethod\"}],[/\"/,\"string\"]],fstring:[[/@escapes/,\"string.escape\"],[/\"/,{token:\"string.quote\",bracket:\"@close\",switchTo:\"@allowMethod\"}],[/\\$\\$/,\"string\"],[/(\\$)([a-z_]\\w*)/,[\"operator\",\"identifier\"]],[/\\$\\{/,\"operator\",\"@interp\"],[/%%/,\"string\"],[/(%)([\\-#+ 0,(])(\\d+|\\.\\d+|\\d+\\.\\d+)(@fstring_conv)/,[\"metatag\",\"keyword.modifier\",\"number\",\"metatag\"]],[/(%)(\\d+|\\.\\d+|\\d+\\.\\d+)(@fstring_conv)/,[\"metatag\",\"number\",\"metatag\"]],[/(%)([\\-#+ 0,(])(@fstring_conv)/,[\"metatag\",\"keyword.modifier\",\"metatag\"]],[/(%)(@fstring_conv)/,[\"metatag\",\"metatag\"]],[/./,\"string\"]],fstringt:[[/@escapes/,\"string.escape\"],[/\"(?=\"\"\")/,\"string\"],[/\"\"\"/,{token:\"string.quote\",bracket:\"@close\",switchTo:\"@allowMethod\"}],[/\\$\\$/,\"string\"],[/(\\$)([a-z_]\\w*)/,[\"operator\",\"identifier\"]],[/\\$\\{/,\"operator\",\"@interp\"],[/%%/,\"string\"],[/(%)([\\-#+ 0,(])(\\d+|\\.\\d+|\\d+\\.\\d+)(@fstring_conv)/,[\"metatag\",\"keyword.modifier\",\"number\",\"metatag\"]],[/(%)(\\d+|\\.\\d+|\\d+\\.\\d+)(@fstring_conv)/,[\"metatag\",\"number\",\"metatag\"]],[/(%)([\\-#+ 0,(])(@fstring_conv)/,[\"metatag\",\"keyword.modifier\",\"metatag\"]],[/(%)(@fstring_conv)/,[\"metatag\",\"metatag\"]],[/./,\"string\"]],sstring:[[/@escapes/,\"string.escape\"],[/\"/,{token:\"string.quote\",bracket:\"@close\",switchTo:\"@allowMethod\"}],[/\\$\\$/,\"string\"],[/(\\$)([a-z_]\\w*)/,[\"operator\",\"identifier\"]],[/\\$\\{/,\"operator\",\"@interp\"],[/./,\"string\"]],sstringt:[[/@escapes/,\"string.escape\"],[/\"(?=\"\"\")/,\"string\"],[/\"\"\"/,{token:\"string.quote\",bracket:\"@close\",switchTo:\"@allowMethod\"}],[/\\$\\$/,\"string\"],[/(\\$)([a-z_]\\w*)/,[\"operator\",\"identifier\"]],[/\\$\\{/,\"operator\",\"@interp\"],[/./,\"string\"]],interp:[[/{/,\"operator\",\"@push\"],[/}/,\"operator\",\"@pop\"],{include:\"@root\"}],rawstring:[[/[^\"]/,\"string\"],[/\"/,{token:\"string.quote\",bracket:\"@close\",switchTo:\"@allowMethod\"}]],rawstringt:[[/[^\"]/,\"string\"],[/\"(?=\"\"\")/,\"string\"],[/\"\"\"/,{token:\"string.quote\",bracket:\"@close\",switchTo:\"@allowMethod\"}],[/\"/,\"string\"]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]]}};return g(m);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/scheme/scheme.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/scheme/scheme\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var t in e)s(o,t,{get:e[t],enumerable:!0})},m=(o,e,t,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of i(e))!l.call(o,n)&&n!==t&&s(o,n,{get:()=>e[n],enumerable:!(a=r(e,n))||a.enumerable});return o};var p=o=>m(s({},\"__esModule\",{value:!0}),o);var u={};c(u,{conf:()=>d,language:()=>g});var d={comments:{lineComment:\";\",blockComment:[\"#|\",\"|#\"]},brackets:[[\"(\",\")\"],[\"{\",\"}\"],[\"[\",\"]\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'}]},g={defaultToken:\"\",ignoreCase:!0,tokenPostfix:\".scheme\",brackets:[{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"}],keywords:[\"case\",\"do\",\"let\",\"loop\",\"if\",\"else\",\"when\",\"cons\",\"car\",\"cdr\",\"cond\",\"lambda\",\"lambda*\",\"syntax-rules\",\"format\",\"set!\",\"quote\",\"eval\",\"append\",\"list\",\"list?\",\"member?\",\"load\"],constants:[\"#t\",\"#f\"],operators:[\"eq?\",\"eqv?\",\"equal?\",\"and\",\"or\",\"not\",\"null?\"],tokenizer:{root:[[/#[xXoObB][0-9a-fA-F]+/,\"number.hex\"],[/[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?/,\"number.float\"],[/(?:\\b(?:(define|define-syntax|define-macro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)/,[\"keyword\",\"white\",\"variable\"]],{include:\"@whitespace\"},{include:\"@strings\"},[/[a-zA-Z_#][a-zA-Z0-9_\\-\\?\\!\\*]*/,{cases:{\"@keywords\":\"keyword\",\"@constants\":\"constant\",\"@operators\":\"operators\",\"@default\":\"identifier\"}}]],comment:[[/[^\\|#]+/,\"comment\"],[/#\\|/,\"comment\",\"@push\"],[/\\|#/,\"comment\",\"@pop\"],[/[\\|#]/,\"comment\"]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"],[/#\\|/,\"comment\",\"@comment\"],[/;.*$/,\"comment\"]],strings:[[/\"$/,\"string\",\"@popall\"],[/\"(?=.)/,\"string\",\"@multiLineString\"]],multiLineString:[[/[^\\\\\"]+$/,\"string\",\"@popall\"],[/[^\\\\\"]+/,\"string\"],[/\\\\./,\"string.escape\"],[/\"/,\"string\",\"@popall\"],[/\\\\$/,\"string\"]]}};return p(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/scss/scss.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/scss/scss\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},m=(t,e,o,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of l(e))!d.call(t,n)&&n!==o&&i(t,n,{get:()=>e[n],enumerable:!(r=a(e,n))||r.enumerable});return t};var s=t=>m(i({},\"__esModule\",{value:!0}),t);var k={};c(k,{conf:()=>u,language:()=>p});var u={wordPattern:/(#?-?\\d*\\.\\d\\w*%?)|([@$#!.:]?[\\w-?]+%?)|[@#!.]/g,comments:{blockComment:[\"/*\",\"*/\"],lineComment:\"//\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\",notIn:[\"string\",\"comment\"]},{open:\"[\",close:\"]\",notIn:[\"string\",\"comment\"]},{open:\"(\",close:\")\",notIn:[\"string\",\"comment\"]},{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],folding:{markers:{start:new RegExp(\"^\\\\s*\\\\/\\\\*\\\\s*#region\\\\b\\\\s*(.*?)\\\\s*\\\\*\\\\/\"),end:new RegExp(\"^\\\\s*\\\\/\\\\*\\\\s*#endregion\\\\b.*\\\\*\\\\/\")}}},p={defaultToken:\"\",tokenPostfix:\".scss\",ws:`[ \t\n\\r\\f]*`,identifier:\"-?-?([a-zA-Z]|(\\\\\\\\(([0-9a-fA-F]{1,6}\\\\s?)|[^[0-9a-fA-F])))([\\\\w\\\\-]|(\\\\\\\\(([0-9a-fA-F]{1,6}\\\\s?)|[^[0-9a-fA-F])))*\",brackets:[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.bracket\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}],tokenizer:{root:[{include:\"@selector\"}],selector:[{include:\"@comments\"},{include:\"@import\"},{include:\"@variabledeclaration\"},{include:\"@warndebug\"},[\"[@](include)\",{token:\"keyword\",next:\"@includedeclaration\"}],[\"[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)\",{token:\"keyword\",next:\"@keyframedeclaration\"}],[\"[@](page|content|font-face|-moz-document)\",{token:\"keyword\"}],[\"[@](charset|namespace)\",{token:\"keyword\",next:\"@declarationbody\"}],[\"[@](function)\",{token:\"keyword\",next:\"@functiondeclaration\"}],[\"[@](mixin)\",{token:\"keyword\",next:\"@mixindeclaration\"}],[\"url(\\\\-prefix)?\\\\(\",{token:\"meta\",next:\"@urldeclaration\"}],{include:\"@controlstatement\"},{include:\"@selectorname\"},[\"[&\\\\*]\",\"tag\"],[\"[>\\\\+,]\",\"delimiter\"],[\"\\\\[\",{token:\"delimiter.bracket\",next:\"@selectorattribute\"}],[\"{\",{token:\"delimiter.curly\",next:\"@selectorbody\"}]],selectorbody:[[\"[*_]?@identifier@ws:(?=(\\\\s|\\\\d|[^{;}]*[;}]))\",\"attribute.name\",\"@rulevalue\"],{include:\"@selector\"},[\"[@](extend)\",{token:\"keyword\",next:\"@extendbody\"}],[\"[@](return)\",{token:\"keyword\",next:\"@declarationbody\"}],[\"}\",{token:\"delimiter.curly\",next:\"@pop\"}]],selectorname:[[\"#{\",{token:\"meta\",next:\"@variableinterpolation\"}],[\"(\\\\.|#(?=[^{])|%|(@identifier)|:)+\",\"tag\"]],selectorattribute:[{include:\"@term\"},[\"]\",{token:\"delimiter.bracket\",next:\"@pop\"}]],term:[{include:\"@comments\"},[\"url(\\\\-prefix)?\\\\(\",{token:\"meta\",next:\"@urldeclaration\"}],{include:\"@functioninvocation\"},{include:\"@numbers\"},{include:\"@strings\"},{include:\"@variablereference\"},[\"(and\\\\b|or\\\\b|not\\\\b)\",\"operator\"],{include:\"@name\"},[\"([<>=\\\\+\\\\-\\\\*\\\\/\\\\^\\\\|\\\\~,])\",\"operator\"],[\",\",\"delimiter\"],[\"!default\",\"literal\"],[\"\\\\(\",{token:\"delimiter.parenthesis\",next:\"@parenthizedterm\"}]],rulevalue:[{include:\"@term\"},[\"!important\",\"literal\"],[\";\",\"delimiter\",\"@pop\"],[\"{\",{token:\"delimiter.curly\",switchTo:\"@nestedproperty\"}],[\"(?=})\",{token:\"\",next:\"@pop\"}]],nestedproperty:[[\"[*_]?@identifier@ws:\",\"attribute.name\",\"@rulevalue\"],{include:\"@comments\"},[\"}\",{token:\"delimiter.curly\",next:\"@pop\"}]],warndebug:[[\"[@](warn|debug)\",{token:\"keyword\",next:\"@declarationbody\"}]],import:[[\"[@](import)\",{token:\"keyword\",next:\"@declarationbody\"}]],variabledeclaration:[[\"\\\\$@identifier@ws:\",\"variable.decl\",\"@declarationbody\"]],urldeclaration:[{include:\"@strings\"},[`[^)\\r\n]+`,\"string\"],[\"\\\\)\",{token:\"meta\",next:\"@pop\"}]],parenthizedterm:[{include:\"@term\"},[\"\\\\)\",{token:\"delimiter.parenthesis\",next:\"@pop\"}]],declarationbody:[{include:\"@term\"},[\";\",\"delimiter\",\"@pop\"],[\"(?=})\",{token:\"\",next:\"@pop\"}]],extendbody:[{include:\"@selectorname\"},[\"!optional\",\"literal\"],[\";\",\"delimiter\",\"@pop\"],[\"(?=})\",{token:\"\",next:\"@pop\"}]],variablereference:[[\"\\\\$@identifier\",\"variable.ref\"],[\"\\\\.\\\\.\\\\.\",\"operator\"],[\"#{\",{token:\"meta\",next:\"@variableinterpolation\"}]],variableinterpolation:[{include:\"@variablereference\"},[\"}\",{token:\"meta\",next:\"@pop\"}]],comments:[[\"\\\\/\\\\*\",\"comment\",\"@comment\"],[\"\\\\/\\\\/+.*\",\"comment\"]],comment:[[\"\\\\*\\\\/\",\"comment\",\"@pop\"],[\".\",\"comment\"]],name:[[\"@identifier\",\"attribute.value\"]],numbers:[[\"(\\\\d*\\\\.)?\\\\d+([eE][\\\\-+]?\\\\d+)?\",{token:\"number\",next:\"@units\"}],[\"#[0-9a-fA-F_]+(?!\\\\w)\",\"number.hex\"]],units:[[\"(em|ex|ch|rem|fr|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?\",\"number\",\"@pop\"]],functiondeclaration:[[\"@identifier@ws\\\\(\",{token:\"meta\",next:\"@parameterdeclaration\"}],[\"{\",{token:\"delimiter.curly\",switchTo:\"@functionbody\"}]],mixindeclaration:[[\"@identifier@ws\\\\(\",{token:\"meta\",next:\"@parameterdeclaration\"}],[\"@identifier\",\"meta\"],[\"{\",{token:\"delimiter.curly\",switchTo:\"@selectorbody\"}]],parameterdeclaration:[[\"\\\\$@identifier@ws:\",\"variable.decl\"],[\"\\\\.\\\\.\\\\.\",\"operator\"],[\",\",\"delimiter\"],{include:\"@term\"},[\"\\\\)\",{token:\"meta\",next:\"@pop\"}]],includedeclaration:[{include:\"@functioninvocation\"},[\"@identifier\",\"meta\"],[\";\",\"delimiter\",\"@pop\"],[\"(?=})\",{token:\"\",next:\"@pop\"}],[\"{\",{token:\"delimiter.curly\",switchTo:\"@selectorbody\"}]],keyframedeclaration:[[\"@identifier\",\"meta\"],[\"{\",{token:\"delimiter.curly\",switchTo:\"@keyframebody\"}]],keyframebody:[{include:\"@term\"},[\"{\",{token:\"delimiter.curly\",next:\"@selectorbody\"}],[\"}\",{token:\"delimiter.curly\",next:\"@pop\"}]],controlstatement:[[\"[@](if|else|for|while|each|media)\",{token:\"keyword.flow\",next:\"@controlstatementdeclaration\"}]],controlstatementdeclaration:[[\"(in|from|through|if|to)\\\\b\",{token:\"keyword.flow\"}],{include:\"@term\"},[\"{\",{token:\"delimiter.curly\",switchTo:\"@selectorbody\"}]],functionbody:[[\"[@](return)\",{token:\"keyword\"}],{include:\"@variabledeclaration\"},{include:\"@term\"},{include:\"@controlstatement\"},[\";\",\"delimiter\"],[\"}\",{token:\"delimiter.curly\",next:\"@pop\"}]],functioninvocation:[[\"@identifier\\\\(\",{token:\"meta\",next:\"@functionarguments\"}]],functionarguments:[[\"\\\\$@identifier@ws:\",\"attribute.name\"],[\"[,]\",\"delimiter\"],{include:\"@term\"},[\"\\\\)\",{token:\"meta\",next:\"@pop\"}]],strings:[['~?\"',{token:\"string.delimiter\",next:\"@stringenddoublequote\"}],[\"~?'\",{token:\"string.delimiter\",next:\"@stringendquote\"}]],stringenddoublequote:[[\"\\\\\\\\.\",\"string\"],['\"',{token:\"string.delimiter\",next:\"@pop\"}],[\".\",\"string\"]],stringendquote:[[\"\\\\\\\\.\",\"string\"],[\"'\",{token:\"string.delimiter\",next:\"@pop\"}],[\".\",\"string\"]]}};return s(k);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/shell/shell.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/shell/shell\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var a=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(r,e)=>{for(var i in e)a(r,i,{get:e[i],enumerable:!0})},d=(r,e,i,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of n(e))!l.call(r,t)&&t!==i&&a(r,t,{get:()=>e[t],enumerable:!(o=s(e,t))||o.enumerable});return r};var p=r=>d(a({},\"__esModule\",{value:!0}),r);var g={};c(g,{conf:()=>m,language:()=>u});var m={comments:{lineComment:\"#\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"`\",close:\"`\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"`\",close:\"`\"}]},u={defaultToken:\"\",ignoreCase:!0,tokenPostfix:\".shell\",brackets:[{token:\"delimiter.bracket\",open:\"{\",close:\"}\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"},{token:\"delimiter.square\",open:\"[\",close:\"]\"}],keywords:[\"if\",\"then\",\"do\",\"else\",\"elif\",\"while\",\"until\",\"for\",\"in\",\"esac\",\"fi\",\"fin\",\"fil\",\"done\",\"exit\",\"set\",\"unset\",\"export\",\"function\"],builtins:[\"ab\",\"awk\",\"bash\",\"beep\",\"cat\",\"cc\",\"cd\",\"chown\",\"chmod\",\"chroot\",\"clear\",\"cp\",\"curl\",\"cut\",\"diff\",\"echo\",\"find\",\"gawk\",\"gcc\",\"get\",\"git\",\"grep\",\"hg\",\"kill\",\"killall\",\"ln\",\"ls\",\"make\",\"mkdir\",\"openssl\",\"mv\",\"nc\",\"node\",\"npm\",\"ping\",\"ps\",\"restart\",\"rm\",\"rmdir\",\"sed\",\"service\",\"sh\",\"shopt\",\"shred\",\"source\",\"sort\",\"sleep\",\"ssh\",\"start\",\"stop\",\"su\",\"sudo\",\"svn\",\"tee\",\"telnet\",\"top\",\"touch\",\"vi\",\"vim\",\"wall\",\"wc\",\"wget\",\"who\",\"write\",\"yes\",\"zsh\"],startingWithDash:/\\-+\\w+/,identifiersWithDashes:/[a-zA-Z]\\w+(?:@startingWithDash)+/,symbols:/[=><!~?&|+\\-*\\/\\^;\\.,]+/,tokenizer:{root:[[/@identifiersWithDashes/,\"\"],[/(\\s)((?:@startingWithDash)+)/,[\"white\",\"attribute.name\"]],[/[a-zA-Z]\\w*/,{cases:{\"@keywords\":\"keyword\",\"@builtins\":\"type.identifier\",\"@default\":\"\"}}],{include:\"@whitespace\"},{include:\"@strings\"},{include:\"@parameters\"},{include:\"@heredoc\"},[/[{}\\[\\]()]/,\"@brackets\"],[/@symbols/,\"delimiter\"],{include:\"@numbers\"},[/[,;]/,\"delimiter\"]],whitespace:[[/\\s+/,\"white\"],[/(^#!.*$)/,\"metatag\"],[/(^#.*$)/,\"comment\"]],numbers:[[/\\d*\\.\\d+([eE][\\-+]?\\d+)?/,\"number.float\"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,\"number.hex\"],[/\\d+/,\"number\"]],strings:[[/'/,\"string\",\"@stringBody\"],[/\"/,\"string\",\"@dblStringBody\"]],stringBody:[[/'/,\"string\",\"@popall\"],[/./,\"string\"]],dblStringBody:[[/\"/,\"string\",\"@popall\"],[/./,\"string\"]],heredoc:[[/(<<[-<]?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)/,[\"constants\",\"white\",\"string.heredoc.delimiter\",\"string.heredoc\",\"string.heredoc.delimiter\"]]],parameters:[[/\\$\\d+/,\"variable.predefined\"],[/\\$\\w+/,\"variable\"],[/\\$[*@#?\\-$!0_]/,\"variable\"],[/\\$'/,\"variable\",\"@parameterBodyQuote\"],[/\\$\"/,\"variable\",\"@parameterBodyDoubleQuote\"],[/\\$\\(/,\"variable\",\"@parameterBodyParen\"],[/\\$\\{/,\"variable\",\"@parameterBodyCurlyBrace\"]],parameterBodyQuote:[[/[^#:%*@\\-!_']+/,\"variable\"],[/[#:%*@\\-!_]/,\"delimiter\"],[/[']/,\"variable\",\"@pop\"]],parameterBodyDoubleQuote:[[/[^#:%*@\\-!_\"]+/,\"variable\"],[/[#:%*@\\-!_]/,\"delimiter\"],[/[\"]/,\"variable\",\"@pop\"]],parameterBodyParen:[[/[^#:%*@\\-!_)]+/,\"variable\"],[/[#:%*@\\-!_]/,\"delimiter\"],[/[)]/,\"variable\",\"@pop\"]],parameterBodyCurlyBrace:[[/[^#:%*@\\-!_}]+/,\"variable\"],[/[#:%*@\\-!_]/,\"delimiter\"],[/[}]/,\"variable\",\"@pop\"]]}};return p(g);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/solidity/solidity.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/solidity/solidity\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var f=Object.defineProperty;var t=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var o=(e,x)=>{for(var d in x)f(e,d,{get:x[d],enumerable:!0})},r=(e,x,d,u)=>{if(x&&typeof x==\"object\"||typeof x==\"function\")for(let i of n(x))!s.call(e,i)&&i!==d&&f(e,i,{get:()=>x[i],enumerable:!(u=t(x,i))||u.enumerable});return e};var a=e=>r(f({},\"__esModule\",{value:!0}),e);var l={};o(l,{conf:()=>c,language:()=>m});var c={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"],[\"<\",\">\"]],autoClosingPairs:[{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]},{open:\"{\",close:\"}\",notIn:[\"string\",\"comment\"]},{open:\"[\",close:\"]\",notIn:[\"string\",\"comment\"]},{open:\"(\",close:\")\",notIn:[\"string\",\"comment\"]}]},m={defaultToken:\"\",tokenPostfix:\".sol\",brackets:[{token:\"delimiter.curly\",open:\"{\",close:\"}\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"},{token:\"delimiter.square\",open:\"[\",close:\"]\"},{token:\"delimiter.angle\",open:\"<\",close:\">\"}],keywords:[\"pragma\",\"solidity\",\"contract\",\"library\",\"using\",\"struct\",\"function\",\"modifier\",\"constructor\",\"address\",\"string\",\"bool\",\"Int\",\"Uint\",\"Byte\",\"Fixed\",\"Ufixed\",\"int\",\"int8\",\"int16\",\"int24\",\"int32\",\"int40\",\"int48\",\"int56\",\"int64\",\"int72\",\"int80\",\"int88\",\"int96\",\"int104\",\"int112\",\"int120\",\"int128\",\"int136\",\"int144\",\"int152\",\"int160\",\"int168\",\"int176\",\"int184\",\"int192\",\"int200\",\"int208\",\"int216\",\"int224\",\"int232\",\"int240\",\"int248\",\"int256\",\"uint\",\"uint8\",\"uint16\",\"uint24\",\"uint32\",\"uint40\",\"uint48\",\"uint56\",\"uint64\",\"uint72\",\"uint80\",\"uint88\",\"uint96\",\"uint104\",\"uint112\",\"uint120\",\"uint128\",\"uint136\",\"uint144\",\"uint152\",\"uint160\",\"uint168\",\"uint176\",\"uint184\",\"uint192\",\"uint200\",\"uint208\",\"uint216\",\"uint224\",\"uint232\",\"uint240\",\"uint248\",\"uint256\",\"byte\",\"bytes\",\"bytes1\",\"bytes2\",\"bytes3\",\"bytes4\",\"bytes5\",\"bytes6\",\"bytes7\",\"bytes8\",\"bytes9\",\"bytes10\",\"bytes11\",\"bytes12\",\"bytes13\",\"bytes14\",\"bytes15\",\"bytes16\",\"bytes17\",\"bytes18\",\"bytes19\",\"bytes20\",\"bytes21\",\"bytes22\",\"bytes23\",\"bytes24\",\"bytes25\",\"bytes26\",\"bytes27\",\"bytes28\",\"bytes29\",\"bytes30\",\"bytes31\",\"bytes32\",\"fixed\",\"fixed0x8\",\"fixed0x16\",\"fixed0x24\",\"fixed0x32\",\"fixed0x40\",\"fixed0x48\",\"fixed0x56\",\"fixed0x64\",\"fixed0x72\",\"fixed0x80\",\"fixed0x88\",\"fixed0x96\",\"fixed0x104\",\"fixed0x112\",\"fixed0x120\",\"fixed0x128\",\"fixed0x136\",\"fixed0x144\",\"fixed0x152\",\"fixed0x160\",\"fixed0x168\",\"fixed0x176\",\"fixed0x184\",\"fixed0x192\",\"fixed0x200\",\"fixed0x208\",\"fixed0x216\",\"fixed0x224\",\"fixed0x232\",\"fixed0x240\",\"fixed0x248\",\"fixed0x256\",\"fixed8x8\",\"fixed8x16\",\"fixed8x24\",\"fixed8x32\",\"fixed8x40\",\"fixed8x48\",\"fixed8x56\",\"fixed8x64\",\"fixed8x72\",\"fixed8x80\",\"fixed8x88\",\"fixed8x96\",\"fixed8x104\",\"fixed8x112\",\"fixed8x120\",\"fixed8x128\",\"fixed8x136\",\"fixed8x144\",\"fixed8x152\",\"fixed8x160\",\"fixed8x168\",\"fixed8x176\",\"fixed8x184\",\"fixed8x192\",\"fixed8x200\",\"fixed8x208\",\"fixed8x216\",\"fixed8x224\",\"fixed8x232\",\"fixed8x240\",\"fixed8x248\",\"fixed16x8\",\"fixed16x16\",\"fixed16x24\",\"fixed16x32\",\"fixed16x40\",\"fixed16x48\",\"fixed16x56\",\"fixed16x64\",\"fixed16x72\",\"fixed16x80\",\"fixed16x88\",\"fixed16x96\",\"fixed16x104\",\"fixed16x112\",\"fixed16x120\",\"fixed16x128\",\"fixed16x136\",\"fixed16x144\",\"fixed16x152\",\"fixed16x160\",\"fixed16x168\",\"fixed16x176\",\"fixed16x184\",\"fixed16x192\",\"fixed16x200\",\"fixed16x208\",\"fixed16x216\",\"fixed16x224\",\"fixed16x232\",\"fixed16x240\",\"fixed24x8\",\"fixed24x16\",\"fixed24x24\",\"fixed24x32\",\"fixed24x40\",\"fixed24x48\",\"fixed24x56\",\"fixed24x64\",\"fixed24x72\",\"fixed24x80\",\"fixed24x88\",\"fixed24x96\",\"fixed24x104\",\"fixed24x112\",\"fixed24x120\",\"fixed24x128\",\"fixed24x136\",\"fixed24x144\",\"fixed24x152\",\"fixed24x160\",\"fixed24x168\",\"fixed24x176\",\"fixed24x184\",\"fixed24x192\",\"fixed24x200\",\"fixed24x208\",\"fixed24x216\",\"fixed24x224\",\"fixed24x232\",\"fixed32x8\",\"fixed32x16\",\"fixed32x24\",\"fixed32x32\",\"fixed32x40\",\"fixed32x48\",\"fixed32x56\",\"fixed32x64\",\"fixed32x72\",\"fixed32x80\",\"fixed32x88\",\"fixed32x96\",\"fixed32x104\",\"fixed32x112\",\"fixed32x120\",\"fixed32x128\",\"fixed32x136\",\"fixed32x144\",\"fixed32x152\",\"fixed32x160\",\"fixed32x168\",\"fixed32x176\",\"fixed32x184\",\"fixed32x192\",\"fixed32x200\",\"fixed32x208\",\"fixed32x216\",\"fixed32x224\",\"fixed40x8\",\"fixed40x16\",\"fixed40x24\",\"fixed40x32\",\"fixed40x40\",\"fixed40x48\",\"fixed40x56\",\"fixed40x64\",\"fixed40x72\",\"fixed40x80\",\"fixed40x88\",\"fixed40x96\",\"fixed40x104\",\"fixed40x112\",\"fixed40x120\",\"fixed40x128\",\"fixed40x136\",\"fixed40x144\",\"fixed40x152\",\"fixed40x160\",\"fixed40x168\",\"fixed40x176\",\"fixed40x184\",\"fixed40x192\",\"fixed40x200\",\"fixed40x208\",\"fixed40x216\",\"fixed48x8\",\"fixed48x16\",\"fixed48x24\",\"fixed48x32\",\"fixed48x40\",\"fixed48x48\",\"fixed48x56\",\"fixed48x64\",\"fixed48x72\",\"fixed48x80\",\"fixed48x88\",\"fixed48x96\",\"fixed48x104\",\"fixed48x112\",\"fixed48x120\",\"fixed48x128\",\"fixed48x136\",\"fixed48x144\",\"fixed48x152\",\"fixed48x160\",\"fixed48x168\",\"fixed48x176\",\"fixed48x184\",\"fixed48x192\",\"fixed48x200\",\"fixed48x208\",\"fixed56x8\",\"fixed56x16\",\"fixed56x24\",\"fixed56x32\",\"fixed56x40\",\"fixed56x48\",\"fixed56x56\",\"fixed56x64\",\"fixed56x72\",\"fixed56x80\",\"fixed56x88\",\"fixed56x96\",\"fixed56x104\",\"fixed56x112\",\"fixed56x120\",\"fixed56x128\",\"fixed56x136\",\"fixed56x144\",\"fixed56x152\",\"fixed56x160\",\"fixed56x168\",\"fixed56x176\",\"fixed56x184\",\"fixed56x192\",\"fixed56x200\",\"fixed64x8\",\"fixed64x16\",\"fixed64x24\",\"fixed64x32\",\"fixed64x40\",\"fixed64x48\",\"fixed64x56\",\"fixed64x64\",\"fixed64x72\",\"fixed64x80\",\"fixed64x88\",\"fixed64x96\",\"fixed64x104\",\"fixed64x112\",\"fixed64x120\",\"fixed64x128\",\"fixed64x136\",\"fixed64x144\",\"fixed64x152\",\"fixed64x160\",\"fixed64x168\",\"fixed64x176\",\"fixed64x184\",\"fixed64x192\",\"fixed72x8\",\"fixed72x16\",\"fixed72x24\",\"fixed72x32\",\"fixed72x40\",\"fixed72x48\",\"fixed72x56\",\"fixed72x64\",\"fixed72x72\",\"fixed72x80\",\"fixed72x88\",\"fixed72x96\",\"fixed72x104\",\"fixed72x112\",\"fixed72x120\",\"fixed72x128\",\"fixed72x136\",\"fixed72x144\",\"fixed72x152\",\"fixed72x160\",\"fixed72x168\",\"fixed72x176\",\"fixed72x184\",\"fixed80x8\",\"fixed80x16\",\"fixed80x24\",\"fixed80x32\",\"fixed80x40\",\"fixed80x48\",\"fixed80x56\",\"fixed80x64\",\"fixed80x72\",\"fixed80x80\",\"fixed80x88\",\"fixed80x96\",\"fixed80x104\",\"fixed80x112\",\"fixed80x120\",\"fixed80x128\",\"fixed80x136\",\"fixed80x144\",\"fixed80x152\",\"fixed80x160\",\"fixed80x168\",\"fixed80x176\",\"fixed88x8\",\"fixed88x16\",\"fixed88x24\",\"fixed88x32\",\"fixed88x40\",\"fixed88x48\",\"fixed88x56\",\"fixed88x64\",\"fixed88x72\",\"fixed88x80\",\"fixed88x88\",\"fixed88x96\",\"fixed88x104\",\"fixed88x112\",\"fixed88x120\",\"fixed88x128\",\"fixed88x136\",\"fixed88x144\",\"fixed88x152\",\"fixed88x160\",\"fixed88x168\",\"fixed96x8\",\"fixed96x16\",\"fixed96x24\",\"fixed96x32\",\"fixed96x40\",\"fixed96x48\",\"fixed96x56\",\"fixed96x64\",\"fixed96x72\",\"fixed96x80\",\"fixed96x88\",\"fixed96x96\",\"fixed96x104\",\"fixed96x112\",\"fixed96x120\",\"fixed96x128\",\"fixed96x136\",\"fixed96x144\",\"fixed96x152\",\"fixed96x160\",\"fixed104x8\",\"fixed104x16\",\"fixed104x24\",\"fixed104x32\",\"fixed104x40\",\"fixed104x48\",\"fixed104x56\",\"fixed104x64\",\"fixed104x72\",\"fixed104x80\",\"fixed104x88\",\"fixed104x96\",\"fixed104x104\",\"fixed104x112\",\"fixed104x120\",\"fixed104x128\",\"fixed104x136\",\"fixed104x144\",\"fixed104x152\",\"fixed112x8\",\"fixed112x16\",\"fixed112x24\",\"fixed112x32\",\"fixed112x40\",\"fixed112x48\",\"fixed112x56\",\"fixed112x64\",\"fixed112x72\",\"fixed112x80\",\"fixed112x88\",\"fixed112x96\",\"fixed112x104\",\"fixed112x112\",\"fixed112x120\",\"fixed112x128\",\"fixed112x136\",\"fixed112x144\",\"fixed120x8\",\"fixed120x16\",\"fixed120x24\",\"fixed120x32\",\"fixed120x40\",\"fixed120x48\",\"fixed120x56\",\"fixed120x64\",\"fixed120x72\",\"fixed120x80\",\"fixed120x88\",\"fixed120x96\",\"fixed120x104\",\"fixed120x112\",\"fixed120x120\",\"fixed120x128\",\"fixed120x136\",\"fixed128x8\",\"fixed128x16\",\"fixed128x24\",\"fixed128x32\",\"fixed128x40\",\"fixed128x48\",\"fixed128x56\",\"fixed128x64\",\"fixed128x72\",\"fixed128x80\",\"fixed128x88\",\"fixed128x96\",\"fixed128x104\",\"fixed128x112\",\"fixed128x120\",\"fixed128x128\",\"fixed136x8\",\"fixed136x16\",\"fixed136x24\",\"fixed136x32\",\"fixed136x40\",\"fixed136x48\",\"fixed136x56\",\"fixed136x64\",\"fixed136x72\",\"fixed136x80\",\"fixed136x88\",\"fixed136x96\",\"fixed136x104\",\"fixed136x112\",\"fixed136x120\",\"fixed144x8\",\"fixed144x16\",\"fixed144x24\",\"fixed144x32\",\"fixed144x40\",\"fixed144x48\",\"fixed144x56\",\"fixed144x64\",\"fixed144x72\",\"fixed144x80\",\"fixed144x88\",\"fixed144x96\",\"fixed144x104\",\"fixed144x112\",\"fixed152x8\",\"fixed152x16\",\"fixed152x24\",\"fixed152x32\",\"fixed152x40\",\"fixed152x48\",\"fixed152x56\",\"fixed152x64\",\"fixed152x72\",\"fixed152x80\",\"fixed152x88\",\"fixed152x96\",\"fixed152x104\",\"fixed160x8\",\"fixed160x16\",\"fixed160x24\",\"fixed160x32\",\"fixed160x40\",\"fixed160x48\",\"fixed160x56\",\"fixed160x64\",\"fixed160x72\",\"fixed160x80\",\"fixed160x88\",\"fixed160x96\",\"fixed168x8\",\"fixed168x16\",\"fixed168x24\",\"fixed168x32\",\"fixed168x40\",\"fixed168x48\",\"fixed168x56\",\"fixed168x64\",\"fixed168x72\",\"fixed168x80\",\"fixed168x88\",\"fixed176x8\",\"fixed176x16\",\"fixed176x24\",\"fixed176x32\",\"fixed176x40\",\"fixed176x48\",\"fixed176x56\",\"fixed176x64\",\"fixed176x72\",\"fixed176x80\",\"fixed184x8\",\"fixed184x16\",\"fixed184x24\",\"fixed184x32\",\"fixed184x40\",\"fixed184x48\",\"fixed184x56\",\"fixed184x64\",\"fixed184x72\",\"fixed192x8\",\"fixed192x16\",\"fixed192x24\",\"fixed192x32\",\"fixed192x40\",\"fixed192x48\",\"fixed192x56\",\"fixed192x64\",\"fixed200x8\",\"fixed200x16\",\"fixed200x24\",\"fixed200x32\",\"fixed200x40\",\"fixed200x48\",\"fixed200x56\",\"fixed208x8\",\"fixed208x16\",\"fixed208x24\",\"fixed208x32\",\"fixed208x40\",\"fixed208x48\",\"fixed216x8\",\"fixed216x16\",\"fixed216x24\",\"fixed216x32\",\"fixed216x40\",\"fixed224x8\",\"fixed224x16\",\"fixed224x24\",\"fixed224x32\",\"fixed232x8\",\"fixed232x16\",\"fixed232x24\",\"fixed240x8\",\"fixed240x16\",\"fixed248x8\",\"ufixed\",\"ufixed0x8\",\"ufixed0x16\",\"ufixed0x24\",\"ufixed0x32\",\"ufixed0x40\",\"ufixed0x48\",\"ufixed0x56\",\"ufixed0x64\",\"ufixed0x72\",\"ufixed0x80\",\"ufixed0x88\",\"ufixed0x96\",\"ufixed0x104\",\"ufixed0x112\",\"ufixed0x120\",\"ufixed0x128\",\"ufixed0x136\",\"ufixed0x144\",\"ufixed0x152\",\"ufixed0x160\",\"ufixed0x168\",\"ufixed0x176\",\"ufixed0x184\",\"ufixed0x192\",\"ufixed0x200\",\"ufixed0x208\",\"ufixed0x216\",\"ufixed0x224\",\"ufixed0x232\",\"ufixed0x240\",\"ufixed0x248\",\"ufixed0x256\",\"ufixed8x8\",\"ufixed8x16\",\"ufixed8x24\",\"ufixed8x32\",\"ufixed8x40\",\"ufixed8x48\",\"ufixed8x56\",\"ufixed8x64\",\"ufixed8x72\",\"ufixed8x80\",\"ufixed8x88\",\"ufixed8x96\",\"ufixed8x104\",\"ufixed8x112\",\"ufixed8x120\",\"ufixed8x128\",\"ufixed8x136\",\"ufixed8x144\",\"ufixed8x152\",\"ufixed8x160\",\"ufixed8x168\",\"ufixed8x176\",\"ufixed8x184\",\"ufixed8x192\",\"ufixed8x200\",\"ufixed8x208\",\"ufixed8x216\",\"ufixed8x224\",\"ufixed8x232\",\"ufixed8x240\",\"ufixed8x248\",\"ufixed16x8\",\"ufixed16x16\",\"ufixed16x24\",\"ufixed16x32\",\"ufixed16x40\",\"ufixed16x48\",\"ufixed16x56\",\"ufixed16x64\",\"ufixed16x72\",\"ufixed16x80\",\"ufixed16x88\",\"ufixed16x96\",\"ufixed16x104\",\"ufixed16x112\",\"ufixed16x120\",\"ufixed16x128\",\"ufixed16x136\",\"ufixed16x144\",\"ufixed16x152\",\"ufixed16x160\",\"ufixed16x168\",\"ufixed16x176\",\"ufixed16x184\",\"ufixed16x192\",\"ufixed16x200\",\"ufixed16x208\",\"ufixed16x216\",\"ufixed16x224\",\"ufixed16x232\",\"ufixed16x240\",\"ufixed24x8\",\"ufixed24x16\",\"ufixed24x24\",\"ufixed24x32\",\"ufixed24x40\",\"ufixed24x48\",\"ufixed24x56\",\"ufixed24x64\",\"ufixed24x72\",\"ufixed24x80\",\"ufixed24x88\",\"ufixed24x96\",\"ufixed24x104\",\"ufixed24x112\",\"ufixed24x120\",\"ufixed24x128\",\"ufixed24x136\",\"ufixed24x144\",\"ufixed24x152\",\"ufixed24x160\",\"ufixed24x168\",\"ufixed24x176\",\"ufixed24x184\",\"ufixed24x192\",\"ufixed24x200\",\"ufixed24x208\",\"ufixed24x216\",\"ufixed24x224\",\"ufixed24x232\",\"ufixed32x8\",\"ufixed32x16\",\"ufixed32x24\",\"ufixed32x32\",\"ufixed32x40\",\"ufixed32x48\",\"ufixed32x56\",\"ufixed32x64\",\"ufixed32x72\",\"ufixed32x80\",\"ufixed32x88\",\"ufixed32x96\",\"ufixed32x104\",\"ufixed32x112\",\"ufixed32x120\",\"ufixed32x128\",\"ufixed32x136\",\"ufixed32x144\",\"ufixed32x152\",\"ufixed32x160\",\"ufixed32x168\",\"ufixed32x176\",\"ufixed32x184\",\"ufixed32x192\",\"ufixed32x200\",\"ufixed32x208\",\"ufixed32x216\",\"ufixed32x224\",\"ufixed40x8\",\"ufixed40x16\",\"ufixed40x24\",\"ufixed40x32\",\"ufixed40x40\",\"ufixed40x48\",\"ufixed40x56\",\"ufixed40x64\",\"ufixed40x72\",\"ufixed40x80\",\"ufixed40x88\",\"ufixed40x96\",\"ufixed40x104\",\"ufixed40x112\",\"ufixed40x120\",\"ufixed40x128\",\"ufixed40x136\",\"ufixed40x144\",\"ufixed40x152\",\"ufixed40x160\",\"ufixed40x168\",\"ufixed40x176\",\"ufixed40x184\",\"ufixed40x192\",\"ufixed40x200\",\"ufixed40x208\",\"ufixed40x216\",\"ufixed48x8\",\"ufixed48x16\",\"ufixed48x24\",\"ufixed48x32\",\"ufixed48x40\",\"ufixed48x48\",\"ufixed48x56\",\"ufixed48x64\",\"ufixed48x72\",\"ufixed48x80\",\"ufixed48x88\",\"ufixed48x96\",\"ufixed48x104\",\"ufixed48x112\",\"ufixed48x120\",\"ufixed48x128\",\"ufixed48x136\",\"ufixed48x144\",\"ufixed48x152\",\"ufixed48x160\",\"ufixed48x168\",\"ufixed48x176\",\"ufixed48x184\",\"ufixed48x192\",\"ufixed48x200\",\"ufixed48x208\",\"ufixed56x8\",\"ufixed56x16\",\"ufixed56x24\",\"ufixed56x32\",\"ufixed56x40\",\"ufixed56x48\",\"ufixed56x56\",\"ufixed56x64\",\"ufixed56x72\",\"ufixed56x80\",\"ufixed56x88\",\"ufixed56x96\",\"ufixed56x104\",\"ufixed56x112\",\"ufixed56x120\",\"ufixed56x128\",\"ufixed56x136\",\"ufixed56x144\",\"ufixed56x152\",\"ufixed56x160\",\"ufixed56x168\",\"ufixed56x176\",\"ufixed56x184\",\"ufixed56x192\",\"ufixed56x200\",\"ufixed64x8\",\"ufixed64x16\",\"ufixed64x24\",\"ufixed64x32\",\"ufixed64x40\",\"ufixed64x48\",\"ufixed64x56\",\"ufixed64x64\",\"ufixed64x72\",\"ufixed64x80\",\"ufixed64x88\",\"ufixed64x96\",\"ufixed64x104\",\"ufixed64x112\",\"ufixed64x120\",\"ufixed64x128\",\"ufixed64x136\",\"ufixed64x144\",\"ufixed64x152\",\"ufixed64x160\",\"ufixed64x168\",\"ufixed64x176\",\"ufixed64x184\",\"ufixed64x192\",\"ufixed72x8\",\"ufixed72x16\",\"ufixed72x24\",\"ufixed72x32\",\"ufixed72x40\",\"ufixed72x48\",\"ufixed72x56\",\"ufixed72x64\",\"ufixed72x72\",\"ufixed72x80\",\"ufixed72x88\",\"ufixed72x96\",\"ufixed72x104\",\"ufixed72x112\",\"ufixed72x120\",\"ufixed72x128\",\"ufixed72x136\",\"ufixed72x144\",\"ufixed72x152\",\"ufixed72x160\",\"ufixed72x168\",\"ufixed72x176\",\"ufixed72x184\",\"ufixed80x8\",\"ufixed80x16\",\"ufixed80x24\",\"ufixed80x32\",\"ufixed80x40\",\"ufixed80x48\",\"ufixed80x56\",\"ufixed80x64\",\"ufixed80x72\",\"ufixed80x80\",\"ufixed80x88\",\"ufixed80x96\",\"ufixed80x104\",\"ufixed80x112\",\"ufixed80x120\",\"ufixed80x128\",\"ufixed80x136\",\"ufixed80x144\",\"ufixed80x152\",\"ufixed80x160\",\"ufixed80x168\",\"ufixed80x176\",\"ufixed88x8\",\"ufixed88x16\",\"ufixed88x24\",\"ufixed88x32\",\"ufixed88x40\",\"ufixed88x48\",\"ufixed88x56\",\"ufixed88x64\",\"ufixed88x72\",\"ufixed88x80\",\"ufixed88x88\",\"ufixed88x96\",\"ufixed88x104\",\"ufixed88x112\",\"ufixed88x120\",\"ufixed88x128\",\"ufixed88x136\",\"ufixed88x144\",\"ufixed88x152\",\"ufixed88x160\",\"ufixed88x168\",\"ufixed96x8\",\"ufixed96x16\",\"ufixed96x24\",\"ufixed96x32\",\"ufixed96x40\",\"ufixed96x48\",\"ufixed96x56\",\"ufixed96x64\",\"ufixed96x72\",\"ufixed96x80\",\"ufixed96x88\",\"ufixed96x96\",\"ufixed96x104\",\"ufixed96x112\",\"ufixed96x120\",\"ufixed96x128\",\"ufixed96x136\",\"ufixed96x144\",\"ufixed96x152\",\"ufixed96x160\",\"ufixed104x8\",\"ufixed104x16\",\"ufixed104x24\",\"ufixed104x32\",\"ufixed104x40\",\"ufixed104x48\",\"ufixed104x56\",\"ufixed104x64\",\"ufixed104x72\",\"ufixed104x80\",\"ufixed104x88\",\"ufixed104x96\",\"ufixed104x104\",\"ufixed104x112\",\"ufixed104x120\",\"ufixed104x128\",\"ufixed104x136\",\"ufixed104x144\",\"ufixed104x152\",\"ufixed112x8\",\"ufixed112x16\",\"ufixed112x24\",\"ufixed112x32\",\"ufixed112x40\",\"ufixed112x48\",\"ufixed112x56\",\"ufixed112x64\",\"ufixed112x72\",\"ufixed112x80\",\"ufixed112x88\",\"ufixed112x96\",\"ufixed112x104\",\"ufixed112x112\",\"ufixed112x120\",\"ufixed112x128\",\"ufixed112x136\",\"ufixed112x144\",\"ufixed120x8\",\"ufixed120x16\",\"ufixed120x24\",\"ufixed120x32\",\"ufixed120x40\",\"ufixed120x48\",\"ufixed120x56\",\"ufixed120x64\",\"ufixed120x72\",\"ufixed120x80\",\"ufixed120x88\",\"ufixed120x96\",\"ufixed120x104\",\"ufixed120x112\",\"ufixed120x120\",\"ufixed120x128\",\"ufixed120x136\",\"ufixed128x8\",\"ufixed128x16\",\"ufixed128x24\",\"ufixed128x32\",\"ufixed128x40\",\"ufixed128x48\",\"ufixed128x56\",\"ufixed128x64\",\"ufixed128x72\",\"ufixed128x80\",\"ufixed128x88\",\"ufixed128x96\",\"ufixed128x104\",\"ufixed128x112\",\"ufixed128x120\",\"ufixed128x128\",\"ufixed136x8\",\"ufixed136x16\",\"ufixed136x24\",\"ufixed136x32\",\"ufixed136x40\",\"ufixed136x48\",\"ufixed136x56\",\"ufixed136x64\",\"ufixed136x72\",\"ufixed136x80\",\"ufixed136x88\",\"ufixed136x96\",\"ufixed136x104\",\"ufixed136x112\",\"ufixed136x120\",\"ufixed144x8\",\"ufixed144x16\",\"ufixed144x24\",\"ufixed144x32\",\"ufixed144x40\",\"ufixed144x48\",\"ufixed144x56\",\"ufixed144x64\",\"ufixed144x72\",\"ufixed144x80\",\"ufixed144x88\",\"ufixed144x96\",\"ufixed144x104\",\"ufixed144x112\",\"ufixed152x8\",\"ufixed152x16\",\"ufixed152x24\",\"ufixed152x32\",\"ufixed152x40\",\"ufixed152x48\",\"ufixed152x56\",\"ufixed152x64\",\"ufixed152x72\",\"ufixed152x80\",\"ufixed152x88\",\"ufixed152x96\",\"ufixed152x104\",\"ufixed160x8\",\"ufixed160x16\",\"ufixed160x24\",\"ufixed160x32\",\"ufixed160x40\",\"ufixed160x48\",\"ufixed160x56\",\"ufixed160x64\",\"ufixed160x72\",\"ufixed160x80\",\"ufixed160x88\",\"ufixed160x96\",\"ufixed168x8\",\"ufixed168x16\",\"ufixed168x24\",\"ufixed168x32\",\"ufixed168x40\",\"ufixed168x48\",\"ufixed168x56\",\"ufixed168x64\",\"ufixed168x72\",\"ufixed168x80\",\"ufixed168x88\",\"ufixed176x8\",\"ufixed176x16\",\"ufixed176x24\",\"ufixed176x32\",\"ufixed176x40\",\"ufixed176x48\",\"ufixed176x56\",\"ufixed176x64\",\"ufixed176x72\",\"ufixed176x80\",\"ufixed184x8\",\"ufixed184x16\",\"ufixed184x24\",\"ufixed184x32\",\"ufixed184x40\",\"ufixed184x48\",\"ufixed184x56\",\"ufixed184x64\",\"ufixed184x72\",\"ufixed192x8\",\"ufixed192x16\",\"ufixed192x24\",\"ufixed192x32\",\"ufixed192x40\",\"ufixed192x48\",\"ufixed192x56\",\"ufixed192x64\",\"ufixed200x8\",\"ufixed200x16\",\"ufixed200x24\",\"ufixed200x32\",\"ufixed200x40\",\"ufixed200x48\",\"ufixed200x56\",\"ufixed208x8\",\"ufixed208x16\",\"ufixed208x24\",\"ufixed208x32\",\"ufixed208x40\",\"ufixed208x48\",\"ufixed216x8\",\"ufixed216x16\",\"ufixed216x24\",\"ufixed216x32\",\"ufixed216x40\",\"ufixed224x8\",\"ufixed224x16\",\"ufixed224x24\",\"ufixed224x32\",\"ufixed232x8\",\"ufixed232x16\",\"ufixed232x24\",\"ufixed240x8\",\"ufixed240x16\",\"ufixed248x8\",\"event\",\"enum\",\"let\",\"mapping\",\"private\",\"public\",\"external\",\"inherited\",\"payable\",\"true\",\"false\",\"var\",\"import\",\"constant\",\"if\",\"else\",\"for\",\"else\",\"for\",\"while\",\"do\",\"break\",\"continue\",\"throw\",\"returns\",\"return\",\"suicide\",\"new\",\"is\",\"this\",\"super\"],operators:[\"=\",\">\",\"<\",\"!\",\"~\",\"?\",\":\",\"==\",\"<=\",\">=\",\"!=\",\"&&\",\"||\",\"++\",\"--\",\"+\",\"-\",\"*\",\"/\",\"&\",\"|\",\"^\",\"%\",\"<<\",\">>\",\">>>\",\"+=\",\"-=\",\"*=\",\"/=\",\"&=\",\"|=\",\"^=\",\"%=\",\"<<=\",\">>=\",\">>>=\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/(ll|LL|u|U|l|L)?(ll|LL|u|U|l|L)?/,floatsuffix:/[fFlL]?/,tokenizer:{root:[[/[a-zA-Z_]\\w*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/\\[\\[.*\\]\\]/,\"annotation\"],[/^\\s*#\\w+/,\"keyword\"],[/int\\d*/,\"keyword\"],[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/\\d*\\d+[eE]([\\-+]?\\d+)?(@floatsuffix)/,\"number.float\"],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?(@floatsuffix)/,\"number.float\"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,\"number.hex\"],[/0[0-7']*[0-7](@integersuffix)/,\"number.octal\"],[/0[bB][0-1']*[0-1](@integersuffix)/,\"number.binary\"],[/\\d[\\d']*\\d(@integersuffix)/,\"number\"],[/\\d(@integersuffix)/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",\"@string\"],[/'[^\\\\']'/,\"string\"],[/(')(@escapes)(')/,[\"string\",\"string.escape\",\"string\"]],[/'/,\"string.invalid\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*\\*(?!\\/)/,\"comment.doc\",\"@doccomment\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],doccomment:[[/[^\\/*]+/,\"comment.doc\"],[/\\*\\//,\"comment.doc\",\"@pop\"],[/[\\/*]/,\"comment.doc\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"]]}};return a(l);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/sophia/sophia.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/sophia/sophia\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},m=(t,e,o,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of a(e))!c.call(t,n)&&n!==o&&s(t,n,{get:()=>e[n],enumerable:!(r=i(e,n))||r.enumerable});return t};var d=t=>m(s({},\"__esModule\",{value:!0}),t);var u={};l(u,{conf:()=>f,language:()=>g});var f={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"],[\"<\",\">\"]],autoClosingPairs:[{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]},{open:\"{\",close:\"}\",notIn:[\"string\",\"comment\"]},{open:\"[\",close:\"]\",notIn:[\"string\",\"comment\"]},{open:\"(\",close:\")\",notIn:[\"string\",\"comment\"]}]},g={defaultToken:\"\",tokenPostfix:\".aes\",brackets:[{token:\"delimiter.curly\",open:\"{\",close:\"}\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"},{token:\"delimiter.square\",open:\"[\",close:\"]\"},{token:\"delimiter.angle\",open:\"<\",close:\">\"}],keywords:[\"contract\",\"library\",\"entrypoint\",\"function\",\"stateful\",\"state\",\"hash\",\"signature\",\"tuple\",\"list\",\"address\",\"string\",\"bool\",\"int\",\"record\",\"datatype\",\"type\",\"option\",\"oracle\",\"oracle_query\",\"Call\",\"Bits\",\"Bytes\",\"Oracle\",\"String\",\"Crypto\",\"Address\",\"Auth\",\"Chain\",\"None\",\"Some\",\"bits\",\"bytes\",\"event\",\"let\",\"map\",\"private\",\"public\",\"true\",\"false\",\"var\",\"if\",\"else\",\"throw\"],operators:[\"=\",\">\",\"<\",\"!\",\"~\",\"?\",\"::\",\":\",\"==\",\"<=\",\">=\",\"!=\",\"&&\",\"||\",\"++\",\"--\",\"+\",\"-\",\"*\",\"/\",\"&\",\"|\",\"^\",\"%\",\"<<\",\">>\",\">>>\",\"+=\",\"-=\",\"*=\",\"/=\",\"&=\",\"|=\",\"^=\",\"%=\",\"<<=\",\">>=\",\">>>=\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/(ll|LL|u|U|l|L)?(ll|LL|u|U|l|L)?/,floatsuffix:/[fFlL]?/,tokenizer:{root:[[/[a-zA-Z_]\\w*/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/\\[\\[.*\\]\\]/,\"annotation\"],[/^\\s*#\\w+/,\"keyword\"],[/int\\d*/,\"keyword\"],[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/\\d*\\d+[eE]([\\-+]?\\d+)?(@floatsuffix)/,\"number.float\"],[/\\d*\\.\\d+([eE][\\-+]?\\d+)?(@floatsuffix)/,\"number.float\"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,\"number.hex\"],[/0[0-7']*[0-7](@integersuffix)/,\"number.octal\"],[/0[bB][0-1']*[0-1](@integersuffix)/,\"number.binary\"],[/\\d[\\d']*\\d(@integersuffix)/,\"number\"],[/\\d(@integersuffix)/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",\"@string\"],[/'[^\\\\']'/,\"string\"],[/(')(@escapes)(')/,[\"string\",\"string.escape\",\"string\"]],[/'/,\"string.invalid\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*\\*(?!\\/)/,\"comment.doc\",\"@doccomment\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],doccomment:[[/[^\\/*]+/,\"comment.doc\"],[/\\*\\//,\"comment.doc\",\"@pop\"],[/[\\/*]/,\"comment.doc\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"]]}};return d(u);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/sparql/sparql.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/sparql/sparql\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var d=(s,e)=>{for(var n in e)o(s,n,{get:e[n],enumerable:!0})},c=(s,e,n,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of a(e))!l.call(s,t)&&t!==n&&o(s,t,{get:()=>e[t],enumerable:!(r=i(e,t))||r.enumerable});return s};var g=s=>c(o({},\"__esModule\",{value:!0}),s);var m={};d(m,{conf:()=>u,language:()=>p});var u={comments:{lineComment:\"#\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"'\",close:\"'\",notIn:[\"string\"]},{open:'\"',close:'\"',notIn:[\"string\"]},{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"}]},p={defaultToken:\"\",tokenPostfix:\".rq\",brackets:[{token:\"delimiter.curly\",open:\"{\",close:\"}\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"},{token:\"delimiter.square\",open:\"[\",close:\"]\"},{token:\"delimiter.angle\",open:\"<\",close:\">\"}],keywords:[\"add\",\"as\",\"asc\",\"ask\",\"base\",\"by\",\"clear\",\"construct\",\"copy\",\"create\",\"data\",\"delete\",\"desc\",\"describe\",\"distinct\",\"drop\",\"false\",\"filter\",\"from\",\"graph\",\"group\",\"having\",\"in\",\"insert\",\"limit\",\"load\",\"minus\",\"move\",\"named\",\"not\",\"offset\",\"optional\",\"order\",\"prefix\",\"reduced\",\"select\",\"service\",\"silent\",\"to\",\"true\",\"undef\",\"union\",\"using\",\"values\",\"where\",\"with\"],builtinFunctions:[\"a\",\"abs\",\"avg\",\"bind\",\"bnode\",\"bound\",\"ceil\",\"coalesce\",\"concat\",\"contains\",\"count\",\"datatype\",\"day\",\"encode_for_uri\",\"exists\",\"floor\",\"group_concat\",\"hours\",\"if\",\"iri\",\"isblank\",\"isiri\",\"isliteral\",\"isnumeric\",\"isuri\",\"lang\",\"langmatches\",\"lcase\",\"max\",\"md5\",\"min\",\"minutes\",\"month\",\"now\",\"rand\",\"regex\",\"replace\",\"round\",\"sameterm\",\"sample\",\"seconds\",\"sha1\",\"sha256\",\"sha384\",\"sha512\",\"str\",\"strafter\",\"strbefore\",\"strdt\",\"strends\",\"strlang\",\"strlen\",\"strstarts\",\"struuid\",\"substr\",\"sum\",\"timezone\",\"tz\",\"ucase\",\"uri\",\"uuid\",\"year\"],ignoreCase:!0,tokenizer:{root:[[/<[^\\s\\u00a0>]*>?/,\"tag\"],{include:\"@strings\"},[/#.*/,\"comment\"],[/[{}()\\[\\]]/,\"@brackets\"],[/[;,.]/,\"delimiter\"],[/[_\\w\\d]+:(\\.(?=[\\w_\\-\\\\%])|[:\\w_-]|\\\\[-\\\\_~.!$&'()*+,;=/?#@%]|%[a-f\\d][a-f\\d])*/,\"tag\"],[/:(\\.(?=[\\w_\\-\\\\%])|[:\\w_-]|\\\\[-\\\\_~.!$&'()*+,;=/?#@%]|%[a-f\\d][a-f\\d])+/,\"tag\"],[/[$?]?[_\\w\\d]+/,{cases:{\"@keywords\":{token:\"keyword\"},\"@builtinFunctions\":{token:\"predefined.sql\"},\"@default\":\"identifier\"}}],[/\\^\\^/,\"operator.sql\"],[/\\^[*+\\-<>=&|^\\/!?]*/,\"operator.sql\"],[/[*+\\-<>=&|\\/!?]/,\"operator.sql\"],[/@[a-z\\d\\-]*/,\"metatag.html\"],[/\\s+/,\"white\"]],strings:[[/'([^'\\\\]|\\\\.)*$/,\"string.invalid\"],[/'$/,\"string.sql\",\"@pop\"],[/'/,\"string.sql\",\"@stringBody\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"$/,\"string.sql\",\"@pop\"],[/\"/,\"string.sql\",\"@dblStringBody\"]],stringBody:[[/[^\\\\']+/,\"string.sql\"],[/\\\\./,\"string.escape\"],[/'/,\"string.sql\",\"@pop\"]],dblStringBody:[[/[^\\\\\"]+/,\"string.sql\"],[/\\\\./,\"string.escape\"],[/\"/,\"string.sql\",\"@pop\"]]}};return g(m);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/sql/sql.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/sql/sql\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var I=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var L=(T,E)=>{for(var A in E)I(T,A,{get:E[A],enumerable:!0})},e=(T,E,A,N)=>{if(E&&typeof E==\"object\"||typeof E==\"function\")for(let R of O(E))!C.call(T,R)&&R!==A&&I(T,R,{get:()=>E[R],enumerable:!(N=S(E,R))||N.enumerable});return T};var P=T=>e(I({},\"__esModule\",{value:!0}),T);var M={};L(M,{conf:()=>D,language:()=>U});var D={comments:{lineComment:\"--\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}]},U={defaultToken:\"\",tokenPostfix:\".sql\",ignoreCase:!0,brackets:[{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"}],keywords:[\"ABORT\",\"ABSOLUTE\",\"ACTION\",\"ADA\",\"ADD\",\"AFTER\",\"ALL\",\"ALLOCATE\",\"ALTER\",\"ALWAYS\",\"ANALYZE\",\"AND\",\"ANY\",\"ARE\",\"AS\",\"ASC\",\"ASSERTION\",\"AT\",\"ATTACH\",\"AUTHORIZATION\",\"AUTOINCREMENT\",\"AVG\",\"BACKUP\",\"BEFORE\",\"BEGIN\",\"BETWEEN\",\"BIT\",\"BIT_LENGTH\",\"BOTH\",\"BREAK\",\"BROWSE\",\"BULK\",\"BY\",\"CASCADE\",\"CASCADED\",\"CASE\",\"CAST\",\"CATALOG\",\"CHAR\",\"CHARACTER\",\"CHARACTER_LENGTH\",\"CHAR_LENGTH\",\"CHECK\",\"CHECKPOINT\",\"CLOSE\",\"CLUSTERED\",\"COALESCE\",\"COLLATE\",\"COLLATION\",\"COLUMN\",\"COMMIT\",\"COMPUTE\",\"CONFLICT\",\"CONNECT\",\"CONNECTION\",\"CONSTRAINT\",\"CONSTRAINTS\",\"CONTAINS\",\"CONTAINSTABLE\",\"CONTINUE\",\"CONVERT\",\"CORRESPONDING\",\"COUNT\",\"CREATE\",\"CROSS\",\"CURRENT\",\"CURRENT_DATE\",\"CURRENT_TIME\",\"CURRENT_TIMESTAMP\",\"CURRENT_USER\",\"CURSOR\",\"DATABASE\",\"DATE\",\"DAY\",\"DBCC\",\"DEALLOCATE\",\"DEC\",\"DECIMAL\",\"DECLARE\",\"DEFAULT\",\"DEFERRABLE\",\"DEFERRED\",\"DELETE\",\"DENY\",\"DESC\",\"DESCRIBE\",\"DESCRIPTOR\",\"DETACH\",\"DIAGNOSTICS\",\"DISCONNECT\",\"DISK\",\"DISTINCT\",\"DISTRIBUTED\",\"DO\",\"DOMAIN\",\"DOUBLE\",\"DROP\",\"DUMP\",\"EACH\",\"ELSE\",\"END\",\"END-EXEC\",\"ERRLVL\",\"ESCAPE\",\"EXCEPT\",\"EXCEPTION\",\"EXCLUDE\",\"EXCLUSIVE\",\"EXEC\",\"EXECUTE\",\"EXISTS\",\"EXIT\",\"EXPLAIN\",\"EXTERNAL\",\"EXTRACT\",\"FAIL\",\"FALSE\",\"FETCH\",\"FILE\",\"FILLFACTOR\",\"FILTER\",\"FIRST\",\"FLOAT\",\"FOLLOWING\",\"FOR\",\"FOREIGN\",\"FORTRAN\",\"FOUND\",\"FREETEXT\",\"FREETEXTTABLE\",\"FROM\",\"FULL\",\"FUNCTION\",\"GENERATED\",\"GET\",\"GLOB\",\"GLOBAL\",\"GO\",\"GOTO\",\"GRANT\",\"GROUP\",\"GROUPS\",\"HAVING\",\"HOLDLOCK\",\"HOUR\",\"IDENTITY\",\"IDENTITYCOL\",\"IDENTITY_INSERT\",\"IF\",\"IGNORE\",\"IMMEDIATE\",\"IN\",\"INCLUDE\",\"INDEX\",\"INDEXED\",\"INDICATOR\",\"INITIALLY\",\"INNER\",\"INPUT\",\"INSENSITIVE\",\"INSERT\",\"INSTEAD\",\"INT\",\"INTEGER\",\"INTERSECT\",\"INTERVAL\",\"INTO\",\"IS\",\"ISNULL\",\"ISOLATION\",\"JOIN\",\"KEY\",\"KILL\",\"LANGUAGE\",\"LAST\",\"LEADING\",\"LEFT\",\"LEVEL\",\"LIKE\",\"LIMIT\",\"LINENO\",\"LOAD\",\"LOCAL\",\"LOWER\",\"MATCH\",\"MATERIALIZED\",\"MAX\",\"MERGE\",\"MIN\",\"MINUTE\",\"MODULE\",\"MONTH\",\"NAMES\",\"NATIONAL\",\"NATURAL\",\"NCHAR\",\"NEXT\",\"NO\",\"NOCHECK\",\"NONCLUSTERED\",\"NONE\",\"NOT\",\"NOTHING\",\"NOTNULL\",\"NULL\",\"NULLIF\",\"NULLS\",\"NUMERIC\",\"OCTET_LENGTH\",\"OF\",\"OFF\",\"OFFSET\",\"OFFSETS\",\"ON\",\"ONLY\",\"OPEN\",\"OPENDATASOURCE\",\"OPENQUERY\",\"OPENROWSET\",\"OPENXML\",\"OPTION\",\"OR\",\"ORDER\",\"OTHERS\",\"OUTER\",\"OUTPUT\",\"OVER\",\"OVERLAPS\",\"PAD\",\"PARTIAL\",\"PARTITION\",\"PASCAL\",\"PERCENT\",\"PIVOT\",\"PLAN\",\"POSITION\",\"PRAGMA\",\"PRECEDING\",\"PRECISION\",\"PREPARE\",\"PRESERVE\",\"PRIMARY\",\"PRINT\",\"PRIOR\",\"PRIVILEGES\",\"PROC\",\"PROCEDURE\",\"PUBLIC\",\"QUERY\",\"RAISE\",\"RAISERROR\",\"RANGE\",\"READ\",\"READTEXT\",\"REAL\",\"RECONFIGURE\",\"RECURSIVE\",\"REFERENCES\",\"REGEXP\",\"REINDEX\",\"RELATIVE\",\"RELEASE\",\"RENAME\",\"REPLACE\",\"REPLICATION\",\"RESTORE\",\"RESTRICT\",\"RETURN\",\"RETURNING\",\"REVERT\",\"REVOKE\",\"RIGHT\",\"ROLLBACK\",\"ROW\",\"ROWCOUNT\",\"ROWGUIDCOL\",\"ROWS\",\"RULE\",\"SAVE\",\"SAVEPOINT\",\"SCHEMA\",\"SCROLL\",\"SECOND\",\"SECTION\",\"SECURITYAUDIT\",\"SELECT\",\"SEMANTICKEYPHRASETABLE\",\"SEMANTICSIMILARITYDETAILSTABLE\",\"SEMANTICSIMILARITYTABLE\",\"SESSION\",\"SESSION_USER\",\"SET\",\"SETUSER\",\"SHUTDOWN\",\"SIZE\",\"SMALLINT\",\"SOME\",\"SPACE\",\"SQL\",\"SQLCA\",\"SQLCODE\",\"SQLERROR\",\"SQLSTATE\",\"SQLWARNING\",\"STATISTICS\",\"SUBSTRING\",\"SUM\",\"SYSTEM_USER\",\"TABLE\",\"TABLESAMPLE\",\"TEMP\",\"TEMPORARY\",\"TEXTSIZE\",\"THEN\",\"TIES\",\"TIME\",\"TIMESTAMP\",\"TIMEZONE_HOUR\",\"TIMEZONE_MINUTE\",\"TO\",\"TOP\",\"TRAILING\",\"TRAN\",\"TRANSACTION\",\"TRANSLATE\",\"TRANSLATION\",\"TRIGGER\",\"TRIM\",\"TRUE\",\"TRUNCATE\",\"TRY_CONVERT\",\"TSEQUAL\",\"UNBOUNDED\",\"UNION\",\"UNIQUE\",\"UNKNOWN\",\"UNPIVOT\",\"UPDATE\",\"UPDATETEXT\",\"UPPER\",\"USAGE\",\"USE\",\"USER\",\"USING\",\"VACUUM\",\"VALUE\",\"VALUES\",\"VARCHAR\",\"VARYING\",\"VIEW\",\"VIRTUAL\",\"WAITFOR\",\"WHEN\",\"WHENEVER\",\"WHERE\",\"WHILE\",\"WINDOW\",\"WITH\",\"WITHIN GROUP\",\"WITHOUT\",\"WORK\",\"WRITE\",\"WRITETEXT\",\"YEAR\",\"ZONE\"],operators:[\"ALL\",\"AND\",\"ANY\",\"BETWEEN\",\"EXISTS\",\"IN\",\"LIKE\",\"NOT\",\"OR\",\"SOME\",\"EXCEPT\",\"INTERSECT\",\"UNION\",\"APPLY\",\"CROSS\",\"FULL\",\"INNER\",\"JOIN\",\"LEFT\",\"OUTER\",\"RIGHT\",\"CONTAINS\",\"FREETEXT\",\"IS\",\"NULL\",\"PIVOT\",\"UNPIVOT\",\"MATCHED\"],builtinFunctions:[\"AVG\",\"CHECKSUM_AGG\",\"COUNT\",\"COUNT_BIG\",\"GROUPING\",\"GROUPING_ID\",\"MAX\",\"MIN\",\"SUM\",\"STDEV\",\"STDEVP\",\"VAR\",\"VARP\",\"CUME_DIST\",\"FIRST_VALUE\",\"LAG\",\"LAST_VALUE\",\"LEAD\",\"PERCENTILE_CONT\",\"PERCENTILE_DISC\",\"PERCENT_RANK\",\"COLLATE\",\"COLLATIONPROPERTY\",\"TERTIARY_WEIGHTS\",\"FEDERATION_FILTERING_VALUE\",\"CAST\",\"CONVERT\",\"PARSE\",\"TRY_CAST\",\"TRY_CONVERT\",\"TRY_PARSE\",\"ASYMKEY_ID\",\"ASYMKEYPROPERTY\",\"CERTPROPERTY\",\"CERT_ID\",\"CRYPT_GEN_RANDOM\",\"DECRYPTBYASYMKEY\",\"DECRYPTBYCERT\",\"DECRYPTBYKEY\",\"DECRYPTBYKEYAUTOASYMKEY\",\"DECRYPTBYKEYAUTOCERT\",\"DECRYPTBYPASSPHRASE\",\"ENCRYPTBYASYMKEY\",\"ENCRYPTBYCERT\",\"ENCRYPTBYKEY\",\"ENCRYPTBYPASSPHRASE\",\"HASHBYTES\",\"IS_OBJECTSIGNED\",\"KEY_GUID\",\"KEY_ID\",\"KEY_NAME\",\"SIGNBYASYMKEY\",\"SIGNBYCERT\",\"SYMKEYPROPERTY\",\"VERIFYSIGNEDBYCERT\",\"VERIFYSIGNEDBYASYMKEY\",\"CURSOR_STATUS\",\"DATALENGTH\",\"IDENT_CURRENT\",\"IDENT_INCR\",\"IDENT_SEED\",\"IDENTITY\",\"SQL_VARIANT_PROPERTY\",\"CURRENT_TIMESTAMP\",\"DATEADD\",\"DATEDIFF\",\"DATEFROMPARTS\",\"DATENAME\",\"DATEPART\",\"DATETIME2FROMPARTS\",\"DATETIMEFROMPARTS\",\"DATETIMEOFFSETFROMPARTS\",\"DAY\",\"EOMONTH\",\"GETDATE\",\"GETUTCDATE\",\"ISDATE\",\"MONTH\",\"SMALLDATETIMEFROMPARTS\",\"SWITCHOFFSET\",\"SYSDATETIME\",\"SYSDATETIMEOFFSET\",\"SYSUTCDATETIME\",\"TIMEFROMPARTS\",\"TODATETIMEOFFSET\",\"YEAR\",\"CHOOSE\",\"COALESCE\",\"IIF\",\"NULLIF\",\"ABS\",\"ACOS\",\"ASIN\",\"ATAN\",\"ATN2\",\"CEILING\",\"COS\",\"COT\",\"DEGREES\",\"EXP\",\"FLOOR\",\"LOG\",\"LOG10\",\"PI\",\"POWER\",\"RADIANS\",\"RAND\",\"ROUND\",\"SIGN\",\"SIN\",\"SQRT\",\"SQUARE\",\"TAN\",\"APP_NAME\",\"APPLOCK_MODE\",\"APPLOCK_TEST\",\"ASSEMBLYPROPERTY\",\"COL_LENGTH\",\"COL_NAME\",\"COLUMNPROPERTY\",\"DATABASE_PRINCIPAL_ID\",\"DATABASEPROPERTYEX\",\"DB_ID\",\"DB_NAME\",\"FILE_ID\",\"FILE_IDEX\",\"FILE_NAME\",\"FILEGROUP_ID\",\"FILEGROUP_NAME\",\"FILEGROUPPROPERTY\",\"FILEPROPERTY\",\"FULLTEXTCATALOGPROPERTY\",\"FULLTEXTSERVICEPROPERTY\",\"INDEX_COL\",\"INDEXKEY_PROPERTY\",\"INDEXPROPERTY\",\"OBJECT_DEFINITION\",\"OBJECT_ID\",\"OBJECT_NAME\",\"OBJECT_SCHEMA_NAME\",\"OBJECTPROPERTY\",\"OBJECTPROPERTYEX\",\"ORIGINAL_DB_NAME\",\"PARSENAME\",\"SCHEMA_ID\",\"SCHEMA_NAME\",\"SCOPE_IDENTITY\",\"SERVERPROPERTY\",\"STATS_DATE\",\"TYPE_ID\",\"TYPE_NAME\",\"TYPEPROPERTY\",\"DENSE_RANK\",\"NTILE\",\"RANK\",\"ROW_NUMBER\",\"PUBLISHINGSERVERNAME\",\"OPENDATASOURCE\",\"OPENQUERY\",\"OPENROWSET\",\"OPENXML\",\"CERTENCODED\",\"CERTPRIVATEKEY\",\"CURRENT_USER\",\"HAS_DBACCESS\",\"HAS_PERMS_BY_NAME\",\"IS_MEMBER\",\"IS_ROLEMEMBER\",\"IS_SRVROLEMEMBER\",\"LOGINPROPERTY\",\"ORIGINAL_LOGIN\",\"PERMISSIONS\",\"PWDENCRYPT\",\"PWDCOMPARE\",\"SESSION_USER\",\"SESSIONPROPERTY\",\"SUSER_ID\",\"SUSER_NAME\",\"SUSER_SID\",\"SUSER_SNAME\",\"SYSTEM_USER\",\"USER\",\"USER_ID\",\"USER_NAME\",\"ASCII\",\"CHAR\",\"CHARINDEX\",\"CONCAT\",\"DIFFERENCE\",\"FORMAT\",\"LEFT\",\"LEN\",\"LOWER\",\"LTRIM\",\"NCHAR\",\"PATINDEX\",\"QUOTENAME\",\"REPLACE\",\"REPLICATE\",\"REVERSE\",\"RIGHT\",\"RTRIM\",\"SOUNDEX\",\"SPACE\",\"STR\",\"STUFF\",\"SUBSTRING\",\"UNICODE\",\"UPPER\",\"BINARY_CHECKSUM\",\"CHECKSUM\",\"CONNECTIONPROPERTY\",\"CONTEXT_INFO\",\"CURRENT_REQUEST_ID\",\"ERROR_LINE\",\"ERROR_NUMBER\",\"ERROR_MESSAGE\",\"ERROR_PROCEDURE\",\"ERROR_SEVERITY\",\"ERROR_STATE\",\"FORMATMESSAGE\",\"GETANSINULL\",\"GET_FILESTREAM_TRANSACTION_CONTEXT\",\"HOST_ID\",\"HOST_NAME\",\"ISNULL\",\"ISNUMERIC\",\"MIN_ACTIVE_ROWVERSION\",\"NEWID\",\"NEWSEQUENTIALID\",\"ROWCOUNT_BIG\",\"XACT_STATE\",\"TEXTPTR\",\"TEXTVALID\",\"COLUMNS_UPDATED\",\"EVENTDATA\",\"TRIGGER_NESTLEVEL\",\"UPDATE\",\"CHANGETABLE\",\"CHANGE_TRACKING_CONTEXT\",\"CHANGE_TRACKING_CURRENT_VERSION\",\"CHANGE_TRACKING_IS_COLUMN_IN_MASK\",\"CHANGE_TRACKING_MIN_VALID_VERSION\",\"CONTAINSTABLE\",\"FREETEXTTABLE\",\"SEMANTICKEYPHRASETABLE\",\"SEMANTICSIMILARITYDETAILSTABLE\",\"SEMANTICSIMILARITYTABLE\",\"FILETABLEROOTPATH\",\"GETFILENAMESPACEPATH\",\"GETPATHLOCATOR\",\"PATHNAME\",\"GET_TRANSMISSION_STATUS\"],builtinVariables:[\"@@DATEFIRST\",\"@@DBTS\",\"@@LANGID\",\"@@LANGUAGE\",\"@@LOCK_TIMEOUT\",\"@@MAX_CONNECTIONS\",\"@@MAX_PRECISION\",\"@@NESTLEVEL\",\"@@OPTIONS\",\"@@REMSERVER\",\"@@SERVERNAME\",\"@@SERVICENAME\",\"@@SPID\",\"@@TEXTSIZE\",\"@@VERSION\",\"@@CURSOR_ROWS\",\"@@FETCH_STATUS\",\"@@DATEFIRST\",\"@@PROCID\",\"@@ERROR\",\"@@IDENTITY\",\"@@ROWCOUNT\",\"@@TRANCOUNT\",\"@@CONNECTIONS\",\"@@CPU_BUSY\",\"@@IDLE\",\"@@IO_BUSY\",\"@@PACKET_ERRORS\",\"@@PACK_RECEIVED\",\"@@PACK_SENT\",\"@@TIMETICKS\",\"@@TOTAL_ERRORS\",\"@@TOTAL_READ\",\"@@TOTAL_WRITE\"],pseudoColumns:[\"$ACTION\",\"$IDENTITY\",\"$ROWGUID\",\"$PARTITION\"],tokenizer:{root:[{include:\"@comments\"},{include:\"@whitespace\"},{include:\"@pseudoColumns\"},{include:\"@numbers\"},{include:\"@strings\"},{include:\"@complexIdentifiers\"},{include:\"@scopes\"},[/[;,.]/,\"delimiter\"],[/[()]/,\"@brackets\"],[/[\\w@#$]+/,{cases:{\"@operators\":\"operator\",\"@builtinVariables\":\"predefined\",\"@builtinFunctions\":\"predefined\",\"@keywords\":\"keyword\",\"@default\":\"identifier\"}}],[/[<>=!%&+\\-*/|~^]/,\"operator\"]],whitespace:[[/\\s+/,\"white\"]],comments:[[/--+.*/,\"comment\"],[/\\/\\*/,{token:\"comment.quote\",next:\"@comment\"}]],comment:[[/[^*/]+/,\"comment\"],[/\\*\\//,{token:\"comment.quote\",next:\"@pop\"}],[/./,\"comment\"]],pseudoColumns:[[/[$][A-Za-z_][\\w@#$]*/,{cases:{\"@pseudoColumns\":\"predefined\",\"@default\":\"identifier\"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,\"number\"],[/[$][+-]*\\d*(\\.\\d*)?/,\"number\"],[/((\\d+(\\.\\d*)?)|(\\.\\d+))([eE][\\-+]?\\d+)?/,\"number\"]],strings:[[/N'/,{token:\"string\",next:\"@string\"}],[/'/,{token:\"string\",next:\"@string\"}]],string:[[/[^']+/,\"string\"],[/''/,\"string\"],[/'/,{token:\"string\",next:\"@pop\"}]],complexIdentifiers:[[/\\[/,{token:\"identifier.quote\",next:\"@bracketedIdentifier\"}],[/\"/,{token:\"identifier.quote\",next:\"@quotedIdentifier\"}]],bracketedIdentifier:[[/[^\\]]+/,\"identifier\"],[/]]/,\"identifier\"],[/]/,{token:\"identifier.quote\",next:\"@pop\"}]],quotedIdentifier:[[/[^\"]+/,\"identifier\"],[/\"\"/,\"identifier\"],[/\"/,{token:\"identifier.quote\",next:\"@pop\"}]],scopes:[[/BEGIN\\s+(DISTRIBUTED\\s+)?TRAN(SACTION)?\\b/i,\"keyword\"],[/BEGIN\\s+TRY\\b/i,{token:\"keyword.try\"}],[/END\\s+TRY\\b/i,{token:\"keyword.try\"}],[/BEGIN\\s+CATCH\\b/i,{token:\"keyword.catch\"}],[/END\\s+CATCH\\b/i,{token:\"keyword.catch\"}],[/(BEGIN|CASE)\\b/i,{token:\"keyword.block\"}],[/END\\b/i,{token:\"keyword.block\"}],[/WHEN\\b/i,{token:\"keyword.choice\"}],[/THEN\\b/i,{token:\"keyword.choice\"}]]}};return P(M);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/st/st.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/st/st\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var d=(n,e)=>{for(var t in e)r(n,t,{get:e[t],enumerable:!0})},l=(n,e,t,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let o of c(e))!i.call(n,o)&&o!==t&&r(n,o,{get:()=>e[o],enumerable:!(a=s(e,o))||a.enumerable});return n};var _=n=>l(r({},\"__esModule\",{value:!0}),n);var m={};d(m,{conf:()=>p,language:()=>u});var p={comments:{lineComment:\"//\",blockComment:[\"(*\",\"*)\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"],[\"var\",\"end_var\"],[\"var_input\",\"end_var\"],[\"var_output\",\"end_var\"],[\"var_in_out\",\"end_var\"],[\"var_temp\",\"end_var\"],[\"var_global\",\"end_var\"],[\"var_access\",\"end_var\"],[\"var_external\",\"end_var\"],[\"type\",\"end_type\"],[\"struct\",\"end_struct\"],[\"program\",\"end_program\"],[\"function\",\"end_function\"],[\"function_block\",\"end_function_block\"],[\"action\",\"end_action\"],[\"step\",\"end_step\"],[\"initial_step\",\"end_step\"],[\"transaction\",\"end_transaction\"],[\"configuration\",\"end_configuration\"],[\"tcp\",\"end_tcp\"],[\"recource\",\"end_recource\"],[\"channel\",\"end_channel\"],[\"library\",\"end_library\"],[\"folder\",\"end_folder\"],[\"binaries\",\"end_binaries\"],[\"includes\",\"end_includes\"],[\"sources\",\"end_sources\"]],autoClosingPairs:[{open:\"[\",close:\"]\"},{open:\"{\",close:\"}\"},{open:\"(\",close:\")\"},{open:\"/*\",close:\"*/\"},{open:\"'\",close:\"'\",notIn:[\"string_sq\"]},{open:'\"',close:'\"',notIn:[\"string_dq\"]},{open:\"var_input\",close:\"end_var\"},{open:\"var_output\",close:\"end_var\"},{open:\"var_in_out\",close:\"end_var\"},{open:\"var_temp\",close:\"end_var\"},{open:\"var_global\",close:\"end_var\"},{open:\"var_access\",close:\"end_var\"},{open:\"var_external\",close:\"end_var\"},{open:\"type\",close:\"end_type\"},{open:\"struct\",close:\"end_struct\"},{open:\"program\",close:\"end_program\"},{open:\"function\",close:\"end_function\"},{open:\"function_block\",close:\"end_function_block\"},{open:\"action\",close:\"end_action\"},{open:\"step\",close:\"end_step\"},{open:\"initial_step\",close:\"end_step\"},{open:\"transaction\",close:\"end_transaction\"},{open:\"configuration\",close:\"end_configuration\"},{open:\"tcp\",close:\"end_tcp\"},{open:\"recource\",close:\"end_recource\"},{open:\"channel\",close:\"end_channel\"},{open:\"library\",close:\"end_library\"},{open:\"folder\",close:\"end_folder\"},{open:\"binaries\",close:\"end_binaries\"},{open:\"includes\",close:\"end_includes\"},{open:\"sources\",close:\"end_sources\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"var\",close:\"end_var\"},{open:\"var_input\",close:\"end_var\"},{open:\"var_output\",close:\"end_var\"},{open:\"var_in_out\",close:\"end_var\"},{open:\"var_temp\",close:\"end_var\"},{open:\"var_global\",close:\"end_var\"},{open:\"var_access\",close:\"end_var\"},{open:\"var_external\",close:\"end_var\"},{open:\"type\",close:\"end_type\"},{open:\"struct\",close:\"end_struct\"},{open:\"program\",close:\"end_program\"},{open:\"function\",close:\"end_function\"},{open:\"function_block\",close:\"end_function_block\"},{open:\"action\",close:\"end_action\"},{open:\"step\",close:\"end_step\"},{open:\"initial_step\",close:\"end_step\"},{open:\"transaction\",close:\"end_transaction\"},{open:\"configuration\",close:\"end_configuration\"},{open:\"tcp\",close:\"end_tcp\"},{open:\"recource\",close:\"end_recource\"},{open:\"channel\",close:\"end_channel\"},{open:\"library\",close:\"end_library\"},{open:\"folder\",close:\"end_folder\"},{open:\"binaries\",close:\"end_binaries\"},{open:\"includes\",close:\"end_includes\"},{open:\"sources\",close:\"end_sources\"}],folding:{markers:{start:new RegExp(\"^\\\\s*#pragma\\\\s+region\\\\b\"),end:new RegExp(\"^\\\\s*#pragma\\\\s+endregion\\\\b\")}}},u={defaultToken:\"\",tokenPostfix:\".st\",ignoreCase:!0,brackets:[{token:\"delimiter.curly\",open:\"{\",close:\"}\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"},{token:\"delimiter.square\",open:\"[\",close:\"]\"}],keywords:[\"if\",\"end_if\",\"elsif\",\"else\",\"case\",\"of\",\"to\",\"__try\",\"__catch\",\"__finally\",\"do\",\"with\",\"by\",\"while\",\"repeat\",\"end_while\",\"end_repeat\",\"end_case\",\"for\",\"end_for\",\"task\",\"retain\",\"non_retain\",\"constant\",\"with\",\"at\",\"exit\",\"return\",\"interval\",\"priority\",\"address\",\"port\",\"on_channel\",\"then\",\"iec\",\"file\",\"uses\",\"version\",\"packagetype\",\"displayname\",\"copyright\",\"summary\",\"vendor\",\"common_source\",\"from\",\"extends\",\"implements\"],constant:[\"false\",\"true\",\"null\"],defineKeywords:[\"var\",\"var_input\",\"var_output\",\"var_in_out\",\"var_temp\",\"var_global\",\"var_access\",\"var_external\",\"end_var\",\"type\",\"end_type\",\"struct\",\"end_struct\",\"program\",\"end_program\",\"function\",\"end_function\",\"function_block\",\"end_function_block\",\"interface\",\"end_interface\",\"method\",\"end_method\",\"property\",\"end_property\",\"namespace\",\"end_namespace\",\"configuration\",\"end_configuration\",\"tcp\",\"end_tcp\",\"resource\",\"end_resource\",\"channel\",\"end_channel\",\"library\",\"end_library\",\"folder\",\"end_folder\",\"binaries\",\"end_binaries\",\"includes\",\"end_includes\",\"sources\",\"end_sources\",\"action\",\"end_action\",\"step\",\"initial_step\",\"end_step\",\"transaction\",\"end_transaction\"],typeKeywords:[\"int\",\"sint\",\"dint\",\"lint\",\"usint\",\"uint\",\"udint\",\"ulint\",\"real\",\"lreal\",\"time\",\"date\",\"time_of_day\",\"date_and_time\",\"string\",\"bool\",\"byte\",\"word\",\"dword\",\"array\",\"pointer\",\"lword\"],operators:[\"=\",\">\",\"<\",\":\",\":=\",\"<=\",\">=\",\"<>\",\"&\",\"+\",\"-\",\"*\",\"**\",\"MOD\",\"^\",\"or\",\"and\",\"not\",\"xor\",\"abs\",\"acos\",\"asin\",\"atan\",\"cos\",\"exp\",\"expt\",\"ln\",\"log\",\"sin\",\"sqrt\",\"tan\",\"sel\",\"max\",\"min\",\"limit\",\"mux\",\"shl\",\"shr\",\"rol\",\"ror\",\"indexof\",\"sizeof\",\"adr\",\"adrinst\",\"bitadr\",\"is_valid\",\"ref\",\"ref_to\"],builtinVariables:[],builtinFunctions:[\"sr\",\"rs\",\"tp\",\"ton\",\"tof\",\"eq\",\"ge\",\"le\",\"lt\",\"ne\",\"round\",\"trunc\",\"ctd\",\"\\u0441tu\",\"ctud\",\"r_trig\",\"f_trig\",\"move\",\"concat\",\"delete\",\"find\",\"insert\",\"left\",\"len\",\"replace\",\"right\",\"rtc\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/(\\.\\.)/,\"delimiter\"],[/\\b(16#[0-9A-Fa-f\\_]*)+\\b/,\"number.hex\"],[/\\b(2#[01\\_]+)+\\b/,\"number.binary\"],[/\\b(8#[0-9\\_]*)+\\b/,\"number.octal\"],[/\\b\\d*\\.\\d+([eE][\\-+]?\\d+)?\\b/,\"number.float\"],[/\\b(L?REAL)#[0-9\\_\\.e]+\\b/,\"number.float\"],[/\\b(BYTE|(?:D|L)?WORD|U?(?:S|D|L)?INT)#[0-9\\_]+\\b/,\"number\"],[/\\d+/,\"number\"],[/\\b(T|DT|TOD)#[0-9:-_shmyd]+\\b/,\"tag\"],[/\\%(I|Q|M)(X|B|W|D|L)[0-9\\.]+/,\"tag\"],[/\\%(I|Q|M)[0-9\\.]*/,\"tag\"],[/\\b[A-Za-z]{1,6}#[0-9]+\\b/,\"tag\"],[/\\b(TO_|CTU_|CTD_|CTUD_|MUX_|SEL_)[A_Za-z]+\\b/,\"predefined\"],[/\\b[A_Za-z]+(_TO_)[A_Za-z]+\\b/,\"predefined\"],[/[;]/,\"delimiter\"],[/[.]/,{token:\"delimiter\",next:\"@params\"}],[/[a-zA-Z_]\\w*/,{cases:{\"@operators\":\"operators\",\"@keywords\":\"keyword\",\"@typeKeywords\":\"type\",\"@defineKeywords\":\"variable\",\"@constant\":\"constant\",\"@builtinVariables\":\"predefined\",\"@builtinFunctions\":\"predefined\",\"@default\":\"identifier\"}}],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@string_dq\"}],[/'/,{token:\"string.quote\",bracket:\"@open\",next:\"@string_sq\"}],[/'[^\\\\']'/,\"string\"],[/(')(@escapes)(')/,[\"string\",\"string.escape\",\"string\"]],[/'/,\"string.invalid\"]],params:[[/\\b[A-Za-z0-9_]+\\b(?=\\()/,{token:\"identifier\",next:\"@pop\"}],[/\\b[A-Za-z0-9_]+\\b/,\"variable.name\",\"@pop\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\/\\*/,\"comment\",\"@push\"],[\"\\\\*/\",\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],comment2:[[/[^\\(*]+/,\"comment\"],[/\\(\\*/,\"comment\",\"@push\"],[\"\\\\*\\\\)\",\"comment\",\"@pop\"],[/[\\(*]/,\"comment\"]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"],[/\\/\\/.*$/,\"comment\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\(\\*/,\"comment\",\"@comment2\"]],string_dq:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"}]],string_sq:[[/[^\\\\']+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/'/,{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"}]]}};return _(m);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/swift/swift.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/swift/swift\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var n in e)i(o,n,{get:e[n],enumerable:!0})},u=(o,e,n,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let t of s(e))!l.call(o,t)&&t!==n&&i(o,t,{get:()=>e[t],enumerable:!(r=a(e,t))||r.enumerable});return o};var d=o=>u(i({},\"__esModule\",{value:!0}),o);var f={};c(f,{conf:()=>p,language:()=>m});var p={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"`\",close:\"`\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"`\",close:\"`\"}]},m={defaultToken:\"\",tokenPostfix:\".swift\",identifier:/[a-zA-Z_][\\w$]*/,attributes:[\"@GKInspectable\",\"@IBAction\",\"@IBDesignable\",\"@IBInspectable\",\"@IBOutlet\",\"@IBSegueAction\",\"@NSApplicationMain\",\"@NSCopying\",\"@NSManaged\",\"@Sendable\",\"@UIApplicationMain\",\"@autoclosure\",\"@actorIndependent\",\"@asyncHandler\",\"@available\",\"@convention\",\"@derivative\",\"@differentiable\",\"@discardableResult\",\"@dynamicCallable\",\"@dynamicMemberLookup\",\"@escaping\",\"@frozen\",\"@globalActor\",\"@inlinable\",\"@inline\",\"@main\",\"@noDerivative\",\"@nonobjc\",\"@noreturn\",\"@objc\",\"@objcMembers\",\"@preconcurrency\",\"@propertyWrapper\",\"@requires_stored_property_inits\",\"@resultBuilder\",\"@testable\",\"@unchecked\",\"@unknown\",\"@usableFromInline\",\"@warn_unqualified_access\"],accessmodifiers:[\"open\",\"public\",\"internal\",\"fileprivate\",\"private\"],keywords:[\"#available\",\"#colorLiteral\",\"#column\",\"#dsohandle\",\"#else\",\"#elseif\",\"#endif\",\"#error\",\"#file\",\"#fileID\",\"#fileLiteral\",\"#filePath\",\"#function\",\"#if\",\"#imageLiteral\",\"#keyPath\",\"#line\",\"#selector\",\"#sourceLocation\",\"#warning\",\"Any\",\"Protocol\",\"Self\",\"Type\",\"actor\",\"as\",\"assignment\",\"associatedtype\",\"associativity\",\"async\",\"await\",\"break\",\"case\",\"catch\",\"class\",\"continue\",\"convenience\",\"default\",\"defer\",\"deinit\",\"didSet\",\"do\",\"dynamic\",\"dynamicType\",\"else\",\"enum\",\"extension\",\"fallthrough\",\"false\",\"fileprivate\",\"final\",\"for\",\"func\",\"get\",\"guard\",\"higherThan\",\"if\",\"import\",\"in\",\"indirect\",\"infix\",\"init\",\"inout\",\"internal\",\"is\",\"isolated\",\"lazy\",\"left\",\"let\",\"lowerThan\",\"mutating\",\"nil\",\"none\",\"nonisolated\",\"nonmutating\",\"open\",\"operator\",\"optional\",\"override\",\"postfix\",\"precedence\",\"precedencegroup\",\"prefix\",\"private\",\"protocol\",\"public\",\"repeat\",\"required\",\"rethrows\",\"return\",\"right\",\"safe\",\"self\",\"set\",\"some\",\"static\",\"struct\",\"subscript\",\"super\",\"switch\",\"throw\",\"throws\",\"true\",\"try\",\"typealias\",\"unowned\",\"unsafe\",\"var\",\"weak\",\"where\",\"while\",\"willSet\",\"__consuming\",\"__owned\"],symbols:/[=(){}\\[\\].,:;@#\\_&\\-<>`?!+*\\\\\\/]/,operatorstart:/[\\/=\\-+!*%<>&|^~?\\u00A1-\\u00A7\\u00A9\\u00AB\\u00AC\\u00AE\\u00B0-\\u00B1\\u00B6\\u00BB\\u00BF\\u00D7\\u00F7\\u2016-\\u2017\\u2020-\\u2027\\u2030-\\u203E\\u2041-\\u2053\\u2055-\\u205E\\u2190-\\u23FF\\u2500-\\u2775\\u2794-\\u2BFF\\u2E00-\\u2E7F\\u3001-\\u3003\\u3008-\\u3030]/,operatorend:/[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uE0100-\\uE01EF]/,operators:/(@operatorstart)((@operatorstart)|(@operatorend))*/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:\"@whitespace\"},{include:\"@comment\"},{include:\"@attribute\"},{include:\"@literal\"},{include:\"@keyword\"},{include:\"@invokedmethod\"},{include:\"@symbol\"}],whitespace:[[/\\s+/,\"white\"],[/\"\"\"/,\"string.quote\",\"@endDblDocString\"]],endDblDocString:[[/[^\"]+/,\"string\"],[/\\\\\"/,\"string\"],[/\"\"\"/,\"string.quote\",\"@popall\"],[/\"/,\"string\"]],symbol:[[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/[.]/,\"delimiter\"],[/@operators/,\"operator\"],[/@symbols/,\"operator\"]],comment:[[/\\/\\/\\/.*$/,\"comment.doc\"],[/\\/\\*\\*/,\"comment.doc\",\"@commentdocbody\"],[/\\/\\/.*$/,\"comment\"],[/\\/\\*/,\"comment\",\"@commentbody\"]],commentdocbody:[[/\\/\\*/,\"comment\",\"@commentbody\"],[/\\*\\//,\"comment.doc\",\"@pop\"],[/\\:[a-zA-Z]+\\:/,\"comment.doc.param\"],[/./,\"comment.doc\"]],commentbody:[[/\\/\\*/,\"comment\",\"@commentbody\"],[/\\*\\//,\"comment\",\"@pop\"],[/./,\"comment\"]],attribute:[[/@@@identifier/,{cases:{\"@attributes\":\"keyword.control\",\"@default\":\"\"}}]],literal:[[/\"/,{token:\"string.quote\",next:\"@stringlit\"}],[/0[b]([01]_?)+/,\"number.binary\"],[/0[o]([0-7]_?)+/,\"number.octal\"],[/0[x]([0-9a-fA-F]_?)+([pP][\\-+](\\d_?)+)?/,\"number.hex\"],[/(\\d_?)*\\.(\\d_?)+([eE][\\-+]?(\\d_?)+)?/,\"number.float\"],[/(\\d_?)+/,\"number\"]],stringlit:[[/\\\\\\(/,{token:\"operator\",next:\"@interpolatedexpression\"}],[/@escapes/,\"string\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,{token:\"string.quote\",next:\"@pop\"}],[/./,\"string\"]],interpolatedexpression:[[/\\(/,{token:\"operator\",next:\"@interpolatedexpression\"}],[/\\)/,{token:\"operator\",next:\"@pop\"}],{include:\"@literal\"},{include:\"@keyword\"},{include:\"@symbol\"}],keyword:[[/`/,{token:\"operator\",next:\"@escapedkeyword\"}],[/@identifier/,{cases:{\"@keywords\":\"keyword\",\"[A-Z][a-zA-Z0-9$]*\":\"type.identifier\",\"@default\":\"identifier\"}}]],escapedkeyword:[[/`/,{token:\"operator\",next:\"@pop\"}],[/./,\"identifier\"]],invokedmethod:[[/([.])(@identifier)/,{cases:{$2:[\"delimeter\",\"type.identifier\"],\"@default\":\"\"}}]]}};return d(f);})();\n/*!---------------------------------------------------------------------------------------------\n *  Copyright (C) David Owens II, owensd.io. All rights reserved.\n *--------------------------------------------------------------------------------------------*/\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/systemverilog/systemverilog.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/systemverilog/systemverilog\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var d=(n,e)=>{for(var t in e)r(n,t,{get:e[t],enumerable:!0})},l=(n,e,t,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of a(e))!c.call(n,i)&&i!==t&&r(n,i,{get:()=>e[i],enumerable:!(o=s(e,i))||o.enumerable});return n};var p=n=>l(r({},\"__esModule\",{value:!0}),n);var f={};d(f,{conf:()=>u,language:()=>m});var u={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"],[\"begin\",\"end\"],[\"case\",\"endcase\"],[\"casex\",\"endcase\"],[\"casez\",\"endcase\"],[\"checker\",\"endchecker\"],[\"class\",\"endclass\"],[\"clocking\",\"endclocking\"],[\"config\",\"endconfig\"],[\"function\",\"endfunction\"],[\"generate\",\"endgenerate\"],[\"group\",\"endgroup\"],[\"interface\",\"endinterface\"],[\"module\",\"endmodule\"],[\"package\",\"endpackage\"],[\"primitive\",\"endprimitive\"],[\"program\",\"endprogram\"],[\"property\",\"endproperty\"],[\"specify\",\"endspecify\"],[\"sequence\",\"endsequence\"],[\"table\",\"endtable\"],[\"task\",\"endtask\"]],autoClosingPairs:[{open:\"[\",close:\"]\"},{open:\"{\",close:\"}\"},{open:\"(\",close:\")\"},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]},{open:'\"',close:'\"',notIn:[\"string\"]}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],folding:{offSide:!1,markers:{start:new RegExp(\"^(?:\\\\s*|.*(?!\\\\/[\\\\/\\\\*])[^\\\\w])(?:begin|case(x|z)?|class|clocking|config|covergroup|function|generate|interface|module|package|primitive|property|program|sequence|specify|table|task)\\\\b\"),end:new RegExp(\"^(?:\\\\s*|.*(?!\\\\/[\\\\/\\\\*])[^\\\\w])(?:end|endcase|endclass|endclocking|endconfig|endgroup|endfunction|endgenerate|endinterface|endmodule|endpackage|endprimitive|endproperty|endprogram|endsequence|endspecify|endtable|endtask)\\\\b\")}}},m={defaultToken:\"\",tokenPostfix:\".sv\",brackets:[{token:\"delimiter.curly\",open:\"{\",close:\"}\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"},{token:\"delimiter.square\",open:\"[\",close:\"]\"},{token:\"delimiter.angle\",open:\"<\",close:\">\"}],keywords:[\"accept_on\",\"alias\",\"always\",\"always_comb\",\"always_ff\",\"always_latch\",\"and\",\"assert\",\"assign\",\"assume\",\"automatic\",\"before\",\"begin\",\"bind\",\"bins\",\"binsof\",\"bit\",\"break\",\"buf\",\"bufif0\",\"bufif1\",\"byte\",\"case\",\"casex\",\"casez\",\"cell\",\"chandle\",\"checker\",\"class\",\"clocking\",\"cmos\",\"config\",\"const\",\"constraint\",\"context\",\"continue\",\"cover\",\"covergroup\",\"coverpoint\",\"cross\",\"deassign\",\"default\",\"defparam\",\"design\",\"disable\",\"dist\",\"do\",\"edge\",\"else\",\"end\",\"endcase\",\"endchecker\",\"endclass\",\"endclocking\",\"endconfig\",\"endfunction\",\"endgenerate\",\"endgroup\",\"endinterface\",\"endmodule\",\"endpackage\",\"endprimitive\",\"endprogram\",\"endproperty\",\"endspecify\",\"endsequence\",\"endtable\",\"endtask\",\"enum\",\"event\",\"eventually\",\"expect\",\"export\",\"extends\",\"extern\",\"final\",\"first_match\",\"for\",\"force\",\"foreach\",\"forever\",\"fork\",\"forkjoin\",\"function\",\"generate\",\"genvar\",\"global\",\"highz0\",\"highz1\",\"if\",\"iff\",\"ifnone\",\"ignore_bins\",\"illegal_bins\",\"implements\",\"implies\",\"import\",\"incdir\",\"include\",\"initial\",\"inout\",\"input\",\"inside\",\"instance\",\"int\",\"integer\",\"interconnect\",\"interface\",\"intersect\",\"join\",\"join_any\",\"join_none\",\"large\",\"let\",\"liblist\",\"library\",\"local\",\"localparam\",\"logic\",\"longint\",\"macromodule\",\"matches\",\"medium\",\"modport\",\"module\",\"nand\",\"negedge\",\"nettype\",\"new\",\"nexttime\",\"nmos\",\"nor\",\"noshowcancelled\",\"not\",\"notif0\",\"notif1\",\"null\",\"or\",\"output\",\"package\",\"packed\",\"parameter\",\"pmos\",\"posedge\",\"primitive\",\"priority\",\"program\",\"property\",\"protected\",\"pull0\",\"pull1\",\"pulldown\",\"pullup\",\"pulsestyle_ondetect\",\"pulsestyle_onevent\",\"pure\",\"rand\",\"randc\",\"randcase\",\"randsequence\",\"rcmos\",\"real\",\"realtime\",\"ref\",\"reg\",\"reject_on\",\"release\",\"repeat\",\"restrict\",\"return\",\"rnmos\",\"rpmos\",\"rtran\",\"rtranif0\",\"rtranif1\",\"s_always\",\"s_eventually\",\"s_nexttime\",\"s_until\",\"s_until_with\",\"scalared\",\"sequence\",\"shortint\",\"shortreal\",\"showcancelled\",\"signed\",\"small\",\"soft\",\"solve\",\"specify\",\"specparam\",\"static\",\"string\",\"strong\",\"strong0\",\"strong1\",\"struct\",\"super\",\"supply0\",\"supply1\",\"sync_accept_on\",\"sync_reject_on\",\"table\",\"tagged\",\"task\",\"this\",\"throughout\",\"time\",\"timeprecision\",\"timeunit\",\"tran\",\"tranif0\",\"tranif1\",\"tri\",\"tri0\",\"tri1\",\"triand\",\"trior\",\"trireg\",\"type\",\"typedef\",\"union\",\"unique\",\"unique0\",\"unsigned\",\"until\",\"until_with\",\"untyped\",\"use\",\"uwire\",\"var\",\"vectored\",\"virtual\",\"void\",\"wait\",\"wait_order\",\"wand\",\"weak\",\"weak0\",\"weak1\",\"while\",\"wildcard\",\"wire\",\"with\",\"within\",\"wor\",\"xnor\",\"xor\"],builtin_gates:[\"and\",\"nand\",\"nor\",\"or\",\"xor\",\"xnor\",\"buf\",\"not\",\"bufif0\",\"bufif1\",\"notif1\",\"notif0\",\"cmos\",\"nmos\",\"pmos\",\"rcmos\",\"rnmos\",\"rpmos\",\"tran\",\"tranif1\",\"tranif0\",\"rtran\",\"rtranif1\",\"rtranif0\"],operators:[\"=\",\"+=\",\"-=\",\"*=\",\"/=\",\"%=\",\"&=\",\"|=\",\"^=\",\"<<=\",\">>+\",\"<<<=\",\">>>=\",\"?\",\":\",\"+\",\"-\",\"!\",\"~\",\"&\",\"~&\",\"|\",\"~|\",\"^\",\"~^\",\"^~\",\"+\",\"-\",\"*\",\"/\",\"%\",\"==\",\"!=\",\"===\",\"!==\",\"==?\",\"!=?\",\"&&\",\"||\",\"**\",\"<\",\"<=\",\">\",\">=\",\"&\",\"|\",\"^\",\">>\",\"<<\",\">>>\",\"<<<\",\"++\",\"--\",\"->\",\"<->\",\"inside\",\"dist\",\"::\",\"+:\",\"-:\",\"*>\",\"&&&\",\"|->\",\"|=>\",\"#=#\"],symbols:/[=><!~?:&|+\\-*\\/\\^%#]+/,escapes:/%%|\\\\(?:[antvf\\\\\"']|x[0-9A-Fa-f]{1,2}|[0-7]{1,3})/,identifier:/(?:[a-zA-Z_][a-zA-Z0-9_$\\.]*|\\\\\\S+ )/,systemcall:/[$][a-zA-Z0-9_]+/,timeunits:/s|ms|us|ns|ps|fs/,tokenizer:{root:[[/^(\\s*)(@identifier)/,[\"\",{cases:{\"@builtin_gates\":{token:\"keyword.$2\",next:\"@module_instance\"},table:{token:\"keyword.$2\",next:\"@table\"},\"@keywords\":{token:\"keyword.$2\"},\"@default\":{token:\"identifier\",next:\"@module_instance\"}}}]],[/^\\s*`include/,{token:\"keyword.directive.include\",next:\"@include\"}],[/^\\s*`\\s*\\w+/,\"keyword\"],{include:\"@identifier_or_keyword\"},{include:\"@whitespace\"},[/\\(\\*.*\\*\\)/,\"annotation\"],[/@systemcall/,\"variable.predefined\"],[/[{}()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],{include:\"@numbers\"},[/[;,.]/,\"delimiter\"],{include:\"@strings\"}],identifier_or_keyword:[[/@identifier/,{cases:{\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}]],numbers:[[/\\d+?[\\d_]*(?:\\.[\\d_]+)?[eE][\\-+]?\\d+/,\"number.float\"],[/\\d+?[\\d_]*\\.[\\d_]+(?:\\s*@timeunits)?/,\"number.float\"],[/(?:\\d+?[\\d_]*\\s*)?'[sS]?[dD]\\s*[0-9xXzZ?]+?[0-9xXzZ?_]*/,\"number\"],[/(?:\\d+?[\\d_]*\\s*)?'[sS]?[bB]\\s*[0-1xXzZ?]+?[0-1xXzZ?_]*/,\"number.binary\"],[/(?:\\d+?[\\d_]*\\s*)?'[sS]?[oO]\\s*[0-7xXzZ?]+?[0-7xXzZ?_]*/,\"number.octal\"],[/(?:\\d+?[\\d_]*\\s*)?'[sS]?[hH]\\s*[0-9a-fA-FxXzZ?]+?[0-9a-fA-FxXzZ?_]*/,\"number.hex\"],[/1step/,\"number\"],[/[\\dxXzZ]+?[\\dxXzZ_]*(?:\\s*@timeunits)?/,\"number\"],[/'[01xXzZ]+/,\"number\"]],module_instance:[{include:\"@whitespace\"},[/(#?)(\\()/,[\"\",{token:\"@brackets\",next:\"@port_connection\"}]],[/@identifier\\s*[;={}\\[\\],]/,{token:\"@rematch\",next:\"@pop\"}],[/@symbols|[;={}\\[\\],]/,{token:\"@rematch\",next:\"@pop\"}],[/@identifier/,\"type\"],[/;/,\"delimiter\",\"@pop\"]],port_connection:[{include:\"@identifier_or_keyword\"},{include:\"@whitespace\"},[/@systemcall/,\"variable.predefined\"],{include:\"@numbers\"},{include:\"@strings\"},[/[,]/,\"delimiter\"],[/\\(/,\"@brackets\",\"@port_connection\"],[/\\)/,\"@brackets\",\"@pop\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],strings:[[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",\"@string\"]],string:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"]],include:[[/(\\s*)(\")([\\w*\\/*]*)(.\\w*)(\")/,[\"\",\"string.include.identifier\",\"string.include.identifier\",\"string.include.identifier\",{token:\"string.include.identifier\",next:\"@pop\"}]],[/(\\s*)(<)([\\w*\\/*]*)(.\\w*)(>)/,[\"\",\"string.include.identifier\",\"string.include.identifier\",\"string.include.identifier\",{token:\"string.include.identifier\",next:\"@pop\"}]]],table:[{include:\"@whitespace\"},[/[()]/,\"@brackets\"],[/[:;]/,\"delimiter\"],[/[01\\-*?xXbBrRfFpPnN]/,\"variable.predefined\"],[\"endtable\",\"keyword.endtable\",\"@pop\"]]}};return p(f);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/tcl/tcl.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/tcl/tcl\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var o in e)s(t,o,{get:e[o],enumerable:!0})},p=(t,e,o,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let n of a(e))!l.call(t,n)&&n!==o&&s(t,n,{get:()=>e[n],enumerable:!(i=r(e,n))||i.enumerable});return t};var u=t=>p(s({},\"__esModule\",{value:!0}),t);var g={};c(g,{conf:()=>k,language:()=>d});var k={brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}]},d={tokenPostfix:\".tcl\",specialFunctions:[\"set\",\"unset\",\"rename\",\"variable\",\"proc\",\"coroutine\",\"foreach\",\"incr\",\"append\",\"lappend\",\"linsert\",\"lreplace\"],mainFunctions:[\"if\",\"then\",\"elseif\",\"else\",\"case\",\"switch\",\"while\",\"for\",\"break\",\"continue\",\"return\",\"package\",\"namespace\",\"catch\",\"exit\",\"eval\",\"expr\",\"uplevel\",\"upvar\"],builtinFunctions:[\"file\",\"info\",\"concat\",\"join\",\"lindex\",\"list\",\"llength\",\"lrange\",\"lsearch\",\"lsort\",\"split\",\"array\",\"parray\",\"binary\",\"format\",\"regexp\",\"regsub\",\"scan\",\"string\",\"subst\",\"dict\",\"cd\",\"clock\",\"exec\",\"glob\",\"pid\",\"pwd\",\"close\",\"eof\",\"fblocked\",\"fconfigure\",\"fcopy\",\"fileevent\",\"flush\",\"gets\",\"open\",\"puts\",\"read\",\"seek\",\"socket\",\"tell\",\"interp\",\"after\",\"auto_execok\",\"auto_load\",\"auto_mkindex\",\"auto_reset\",\"bgerror\",\"error\",\"global\",\"history\",\"load\",\"source\",\"time\",\"trace\",\"unknown\",\"unset\",\"update\",\"vwait\",\"winfo\",\"wm\",\"bind\",\"event\",\"pack\",\"place\",\"grid\",\"font\",\"bell\",\"clipboard\",\"destroy\",\"focus\",\"grab\",\"lower\",\"option\",\"raise\",\"selection\",\"send\",\"tk\",\"tkwait\",\"tk_bisque\",\"tk_focusNext\",\"tk_focusPrev\",\"tk_focusFollowsMouse\",\"tk_popup\",\"tk_setPalette\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,brackets:[{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"}],escapes:/\\\\(?:[abfnrtv\\\\\"'\\[\\]\\{\\};\\$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,variables:/(?:\\$+(?:(?:\\:\\:?)?[a-zA-Z_]\\w*)+)/,tokenizer:{root:[[/[a-zA-Z_]\\w*/,{cases:{\"@specialFunctions\":{token:\"keyword.flow\",next:\"@specialFunc\"},\"@mainFunctions\":\"keyword\",\"@builtinFunctions\":\"variable\",\"@default\":\"operator.scss\"}}],[/\\s+\\-+(?!\\d|\\.)\\w*|{\\*}/,\"metatag\"],{include:\"@whitespace\"},[/[{}()\\[\\]]/,\"@brackets\"],[/@symbols/,\"operator\"],[/\\$+(?:\\:\\:)?\\{/,{token:\"identifier\",next:\"@nestedVariable\"}],[/@variables/,\"type.identifier\"],[/\\.(?!\\d|\\.)[\\w\\-]*/,\"operator.sql\"],[/\\d+(\\.\\d+)?/,\"number\"],[/\\d+/,\"number\"],[/;/,\"delimiter\"],[/\"/,{token:\"string.quote\",bracket:\"@open\",next:\"@dstring\"}],[/'/,{token:\"string.quote\",bracket:\"@open\",next:\"@sstring\"}]],dstring:[[/\\[/,{token:\"@brackets\",next:\"@nestedCall\"}],[/\\$+(?:\\:\\:)?\\{/,{token:\"identifier\",next:\"@nestedVariable\"}],[/@variables/,\"type.identifier\"],[/[^\\\\$\\[\\]\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\"/,{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"}]],sstring:[[/\\[/,{token:\"@brackets\",next:\"@nestedCall\"}],[/\\$+(?:\\:\\:)?\\{/,{token:\"identifier\",next:\"@nestedVariable\"}],[/@variables/,\"type.identifier\"],[/[^\\\\$\\[\\]']+/,\"string\"],[/@escapes/,\"string.escape\"],[/'/,{token:\"string.quote\",bracket:\"@close\",next:\"@pop\"}]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"],[/#.*\\\\$/,{token:\"comment\",next:\"@newlineComment\"}],[/#.*(?!\\\\)$/,\"comment\"]],newlineComment:[[/.*\\\\$/,\"comment\"],[/.*(?!\\\\)$/,{token:\"comment\",next:\"@pop\"}]],nestedVariable:[[/[^\\{\\}\\$]+/,\"type.identifier\"],[/\\}/,{token:\"identifier\",next:\"@pop\"}]],nestedCall:[[/\\[/,{token:\"@brackets\",next:\"@nestedCall\"}],[/\\]/,{token:\"@brackets\",next:\"@pop\"}],{include:\"root\"}],specialFunc:[[/\"/,{token:\"string\",next:\"@dstring\"}],[/'/,{token:\"string\",next:\"@sstring\"}],[/\\S+/,{token:\"type\",next:\"@pop\"}]]}};return u(g);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/twig/twig.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/twig/twig\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var m=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var s=(e,t)=>{for(var r in t)m(e,r,{get:t[r],enumerable:!0})},d=(e,t,r,o)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let i of n(t))!a.call(e,i)&&i!==r&&m(e,i,{get:()=>t[i],enumerable:!(o=l(t,i))||o.enumerable});return e};var p=e=>d(m({},\"__esModule\",{value:!0}),e);var g={};s(g,{conf:()=>h,language:()=>c});var h={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\$\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\s]+)/g,comments:{blockComment:[\"{#\",\"#}\"]},brackets:[[\"{#\",\"#}\"],[\"{%\",\"%}\"],[\"{{\",\"}}\"],[\"(\",\")\"],[\"[\",\"]\"],[\"<!--\",\"-->\"],[\"<\",\">\"]],autoClosingPairs:[{open:\"{# \",close:\" #}\"},{open:\"{% \",close:\" %}\"},{open:\"{{ \",close:\" }}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"<\",close:\">\"}]},c={defaultToken:\"\",tokenPostfix:\"\",ignoreCase:!0,keywords:[\"apply\",\"autoescape\",\"block\",\"deprecated\",\"do\",\"embed\",\"extends\",\"flush\",\"for\",\"from\",\"if\",\"import\",\"include\",\"macro\",\"sandbox\",\"set\",\"use\",\"verbatim\",\"with\",\"endapply\",\"endautoescape\",\"endblock\",\"endembed\",\"endfor\",\"endif\",\"endmacro\",\"endsandbox\",\"endset\",\"endwith\",\"true\",\"false\"],tokenizer:{root:[[/\\s+/],[/{#/,\"comment.twig\",\"@commentState\"],[/{%[-~]?/,\"delimiter.twig\",\"@blockState\"],[/{{[-~]?/,\"delimiter.twig\",\"@variableState\"],[/<!DOCTYPE/,\"metatag.html\",\"@doctype\"],[/<!--/,\"comment.html\",\"@comment\"],[/(<)((?:[\\w\\-]+:)?[\\w\\-]+)(\\s*)(\\/>)/,[\"delimiter.html\",\"tag.html\",\"\",\"delimiter.html\"]],[/(<)(script)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@script\"}]],[/(<)(style)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@style\"}]],[/(<)((?:[\\w\\-]+:)?[\\w\\-]+)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@otherTag\"}]],[/(<\\/)((?:[\\w\\-]+:)?[\\w\\-]+)/,[\"delimiter.html\",{token:\"tag.html\",next:\"@otherTag\"}]],[/</,\"delimiter.html\"],[/[^<{]+/]],commentState:[[/#}/,\"comment.twig\",\"@pop\"],[/./,\"comment.twig\"]],blockState:[[/[-~]?%}/,\"delimiter.twig\",\"@pop\"],[/\\s+/],[/(verbatim)(\\s*)([-~]?%})/,[\"keyword.twig\",\"\",{token:\"delimiter.twig\",next:\"@rawDataState\"}]],{include:\"expression\"}],rawDataState:[[/({%[-~]?)(\\s*)(endverbatim)(\\s*)([-~]?%})/,[\"delimiter.twig\",\"\",\"keyword.twig\",\"\",{token:\"delimiter.twig\",next:\"@popall\"}]],[/./,\"string.twig\"]],variableState:[[/[-~]?}}/,\"delimiter.twig\",\"@pop\"],{include:\"expression\"}],stringState:[[/\"/,\"string.twig\",\"@pop\"],[/#{\\s*/,\"string.twig\",\"@interpolationState\"],[/[^#\"\\\\]*(?:(?:\\\\.|#(?!\\{))[^#\"\\\\]*)*/,\"string.twig\"]],interpolationState:[[/}/,\"string.twig\",\"@pop\"],{include:\"expression\"}],expression:[[/\\s+/],[/\\+|-|\\/{1,2}|%|\\*{1,2}/,\"operators.twig\"],[/(and|or|not|b-and|b-xor|b-or)(\\s+)/,[\"operators.twig\",\"\"]],[/==|!=|<|>|>=|<=/,\"operators.twig\"],[/(starts with|ends with|matches)(\\s+)/,[\"operators.twig\",\"\"]],[/(in)(\\s+)/,[\"operators.twig\",\"\"]],[/(is)(\\s+)/,[\"operators.twig\",\"\"]],[/\\||~|:|\\.{1,2}|\\?{1,2}/,\"operators.twig\"],[/[^\\W\\d][\\w]*/,{cases:{\"@keywords\":\"keyword.twig\",\"@default\":\"variable.twig\"}}],[/\\d+(\\.\\d+)?/,\"number.twig\"],[/\\(|\\)|\\[|\\]|{|}|,/,\"delimiter.twig\"],[/\"([^#\"\\\\]*(?:\\\\.[^#\"\\\\]*)*)\"|\\'([^\\'\\\\]*(?:\\\\.[^\\'\\\\]*)*)\\'/,\"string.twig\"],[/\"/,\"string.twig\",\"@stringState\"],[/=>/,\"operators.twig\"],[/=/,\"operators.twig\"]],doctype:[[/[^>]+/,\"metatag.content.html\"],[/>/,\"metatag.html\",\"@pop\"]],comment:[[/-->/,\"comment.html\",\"@pop\"],[/[^-]+/,\"comment.content.html\"],[/./,\"comment.content.html\"]],otherTag:[[/\\/?>/,\"delimiter.html\",\"@pop\"],[/\"([^\"]*)\"/,\"attribute.value.html\"],[/'([^']*)'/,\"attribute.value.html\"],[/[\\w\\-]+/,\"attribute.name.html\"],[/=/,\"delimiter.html\"],[/[ \\t\\r\\n]+/]],script:[[/type/,\"attribute.name.html\",\"@scriptAfterType\"],[/\"([^\"]*)\"/,\"attribute.value.html\"],[/'([^']*)'/,\"attribute.value.html\"],[/[\\w\\-]+/,\"attribute.name.html\"],[/=/,\"delimiter.html\"],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/(<\\/)(script\\s*)(>)/,[\"delimiter.html\",\"tag.html\",{token:\"delimiter.html\",next:\"@pop\"}]]],scriptAfterType:[[/=/,\"delimiter.html\",\"@scriptAfterTypeEquals\"],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptAfterTypeEquals:[[/\"([^\"]*)\"/,{token:\"attribute.value.html\",switchTo:\"@scriptWithCustomType.$1\"}],[/'([^']*)'/,{token:\"attribute.value.html\",switchTo:\"@scriptWithCustomType.$1\"}],[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded\",nextEmbedded:\"text/javascript\"}],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptWithCustomType:[[/>/,{token:\"delimiter.html\",next:\"@scriptEmbedded.$S2\",nextEmbedded:\"$S2\"}],[/\"([^\"]*)\"/,\"attribute.value.html\"],[/'([^']*)'/,\"attribute.value.html\"],[/[\\w\\-]+/,\"attribute.name.html\"],[/=/,\"delimiter.html\"],[/[ \\t\\r\\n]+/],[/<\\/script\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],scriptEmbedded:[[/<\\/script/,{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}],[/[^<]+/,\"\"]],style:[[/type/,\"attribute.name.html\",\"@styleAfterType\"],[/\"([^\"]*)\"/,\"attribute.value.html\"],[/'([^']*)'/,\"attribute.value.html\"],[/[\\w\\-]+/,\"attribute.name.html\"],[/=/,\"delimiter.html\"],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/(<\\/)(style\\s*)(>)/,[\"delimiter.html\",\"tag.html\",{token:\"delimiter.html\",next:\"@pop\"}]]],styleAfterType:[[/=/,\"delimiter.html\",\"@styleAfterTypeEquals\"],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleAfterTypeEquals:[[/\"([^\"]*)\"/,{token:\"attribute.value.html\",switchTo:\"@styleWithCustomType.$1\"}],[/'([^']*)'/,{token:\"attribute.value.html\",switchTo:\"@styleWithCustomType.$1\"}],[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded\",nextEmbedded:\"text/css\"}],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleWithCustomType:[[/>/,{token:\"delimiter.html\",next:\"@styleEmbedded.$S2\",nextEmbedded:\"$S2\"}],[/\"([^\"]*)\"/,\"attribute.value.html\"],[/'([^']*)'/,\"attribute.value.html\"],[/[\\w\\-]+/,\"attribute.name.html\"],[/=/,\"delimiter.html\"],[/[ \\t\\r\\n]+/],[/<\\/style\\s*>/,{token:\"@rematch\",next:\"@pop\"}]],styleEmbedded:[[/<\\/style/,{token:\"@rematch\",next:\"@pop\",nextEmbedded:\"@pop\"}],[/[^<]+/,\"\"]]}};return p(g);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/typescript/typescript.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/typescript/typescript\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var l=Object.create;var s=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var f=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(t,n)=>(typeof require!=\"undefined\"?require:t)[n]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var k=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),y=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})},i=(e,t,n,c)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let r of x(t))!u.call(e,r)&&r!==n&&s(e,r,{get:()=>t[r],enumerable:!(c=m(t,r))||c.enumerable});return e},a=(e,t,n)=>(i(e,t,\"default\"),n&&i(n,t,\"default\")),p=(e,t,n)=>(n=e!=null?l(b(e)):{},i(t||!e||!e.__esModule?s(n,\"default\",{value:e,enumerable:!0}):n,e)),w=e=>i(s({},\"__esModule\",{value:!0}),e);var d=k((T,g)=>{var A=p(f(\"vs/editor/editor.api\"));g.exports=A});var h={};y(h,{conf:()=>v,language:()=>$});var o={};a(o,p(d()));var v={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],onEnterRules:[{beforeText:/^\\s*\\/\\*\\*(?!\\/)([^\\*]|\\*(?!\\/))*$/,afterText:/^\\s*\\*\\/$/,action:{indentAction:o.languages.IndentAction.IndentOutdent,appendText:\" * \"}},{beforeText:/^\\s*\\/\\*\\*(?!\\/)([^\\*]|\\*(?!\\/))*$/,action:{indentAction:o.languages.IndentAction.None,appendText:\" * \"}},{beforeText:/^(\\t|(\\ \\ ))*\\ \\*(\\ ([^\\*]|\\*(?!\\/))*)?$/,action:{indentAction:o.languages.IndentAction.None,appendText:\"* \"}},{beforeText:/^(\\t|(\\ \\ ))*\\ \\*\\/\\s*$/,action:{indentAction:o.languages.IndentAction.None,removeText:1}}],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"',notIn:[\"string\"]},{open:\"'\",close:\"'\",notIn:[\"string\",\"comment\"]},{open:\"`\",close:\"`\",notIn:[\"string\",\"comment\"]},{open:\"/**\",close:\" */\",notIn:[\"string\"]}],folding:{markers:{start:new RegExp(\"^\\\\s*//\\\\s*#?region\\\\b\"),end:new RegExp(\"^\\\\s*//\\\\s*#?endregion\\\\b\")}}},$={defaultToken:\"invalid\",tokenPostfix:\".ts\",keywords:[\"abstract\",\"any\",\"as\",\"asserts\",\"bigint\",\"boolean\",\"break\",\"case\",\"catch\",\"class\",\"continue\",\"const\",\"constructor\",\"debugger\",\"declare\",\"default\",\"delete\",\"do\",\"else\",\"enum\",\"export\",\"extends\",\"false\",\"finally\",\"for\",\"from\",\"function\",\"get\",\"if\",\"implements\",\"import\",\"in\",\"infer\",\"instanceof\",\"interface\",\"is\",\"keyof\",\"let\",\"module\",\"namespace\",\"never\",\"new\",\"null\",\"number\",\"object\",\"out\",\"package\",\"private\",\"protected\",\"public\",\"override\",\"readonly\",\"require\",\"global\",\"return\",\"satisfies\",\"set\",\"static\",\"string\",\"super\",\"switch\",\"symbol\",\"this\",\"throw\",\"true\",\"try\",\"type\",\"typeof\",\"undefined\",\"unique\",\"unknown\",\"var\",\"void\",\"while\",\"with\",\"yield\",\"async\",\"await\",\"of\"],operators:[\"<=\",\">=\",\"==\",\"!=\",\"===\",\"!==\",\"=>\",\"+\",\"-\",\"**\",\"*\",\"/\",\"%\",\"++\",\"--\",\"<<\",\"</\",\">>\",\">>>\",\"&\",\"|\",\"^\",\"!\",\"~\",\"&&\",\"||\",\"??\",\"?\",\":\",\"=\",\"+=\",\"-=\",\"*=\",\"**=\",\"/=\",\"%=\",\"<<=\",\">>=\",\">>>=\",\"&=\",\"|=\",\"^=\",\"@\"],symbols:/[=><!~?:&|+\\-*\\/\\^%]+/,escapes:/\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\\d+(_+\\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\\[\\]\\$\\^|\\-*+?\\.]/,regexpesc:/\\\\(?:[bBdDfnrstvwWn0\\\\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,\"delimiter.bracket\"],{include:\"common\"}],common:[[/#?[a-z_$][\\w$]*/,{cases:{\"@keywords\":\"keyword\",\"@default\":\"identifier\"}}],[/[A-Z][\\w\\$]*/,\"type.identifier\"],{include:\"@whitespace\"},[/\\/(?=([^\\\\\\/]|\\\\.)+\\/([dgimsuy]*)(\\s*)(\\.|;|,|\\)|\\]|\\}|$))/,{token:\"regexp\",bracket:\"@open\",next:\"@regexp\"}],[/[()\\[\\]]/,\"@brackets\"],[/[<>](?!@symbols)/,\"@brackets\"],[/!(?=([^=]|$))/,\"delimiter\"],[/@symbols/,{cases:{\"@operators\":\"delimiter\",\"@default\":\"\"}}],[/(@digits)[eE]([\\-+]?(@digits))?/,\"number.float\"],[/(@digits)\\.(@digits)([eE][\\-+]?(@digits))?/,\"number.float\"],[/0[xX](@hexdigits)n?/,\"number.hex\"],[/0[oO]?(@octaldigits)n?/,\"number.octal\"],[/0[bB](@binarydigits)n?/,\"number.binary\"],[/(@digits)n?/,\"number\"],[/[;,.]/,\"delimiter\"],[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/'([^'\\\\]|\\\\.)*$/,\"string.invalid\"],[/\"/,\"string\",\"@string_double\"],[/'/,\"string\",\"@string_single\"],[/`/,\"string\",\"@string_backtick\"]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/\\/\\*\\*(?!\\/)/,\"comment.doc\",\"@jsdoc\"],[/\\/\\*/,\"comment\",\"@comment\"],[/\\/\\/.*$/,\"comment\"]],comment:[[/[^\\/*]+/,\"comment\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],jsdoc:[[/[^\\/*]+/,\"comment.doc\"],[/\\*\\//,\"comment.doc\",\"@pop\"],[/[\\/*]/,\"comment.doc\"]],regexp:[[/(\\{)(\\d+(?:,\\d*)?)(\\})/,[\"regexp.escape.control\",\"regexp.escape.control\",\"regexp.escape.control\"]],[/(\\[)(\\^?)(?=(?:[^\\]\\\\\\/]|\\\\.)+)/,[\"regexp.escape.control\",{token:\"regexp.escape.control\",next:\"@regexrange\"}]],[/(\\()(\\?:|\\?=|\\?!)/,[\"regexp.escape.control\",\"regexp.escape.control\"]],[/[()]/,\"regexp.escape.control\"],[/@regexpctl/,\"regexp.escape.control\"],[/[^\\\\\\/]/,\"regexp\"],[/@regexpesc/,\"regexp.escape\"],[/\\\\\\./,\"regexp.invalid\"],[/(\\/)([dgimsuy]*)/,[{token:\"regexp\",bracket:\"@close\",next:\"@pop\"},\"keyword.other\"]]],regexrange:[[/-/,\"regexp.escape.control\"],[/\\^/,\"regexp.invalid\"],[/@regexpesc/,\"regexp.escape\"],[/[^\\]]/,\"regexp\"],[/\\]/,{token:\"regexp.escape.control\",next:\"@pop\",bracket:\"@close\"}]],string_double:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"]],string_single:[[/[^\\\\']+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/'/,\"string\",\"@pop\"]],string_backtick:[[/\\$\\{/,{token:\"delimiter.bracket\",next:\"@bracketCounting\"}],[/[^\\\\`$]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/`/,\"string\",\"@pop\"]],bracketCounting:[[/\\{/,\"delimiter.bracket\",\"@bracketCounting\"],[/\\}/,\"delimiter.bracket\",\"@pop\"],{include:\"common\"}]}};return w(h);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/vb/vb.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/vb/vb\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var i=(n,e)=>{for(var t in e)r(n,t,{get:e[t],enumerable:!0})},c=(n,e,t,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let o of d(e))!l.call(n,o)&&o!==t&&r(n,o,{get:()=>e[o],enumerable:!(s=a(e,o))||s.enumerable});return n};var u=n=>c(r({},\"__esModule\",{value:!0}),n);var k={};i(k,{conf:()=>g,language:()=>p});var g={comments:{lineComment:\"'\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"],[\"<\",\">\"],[\"addhandler\",\"end addhandler\"],[\"class\",\"end class\"],[\"enum\",\"end enum\"],[\"event\",\"end event\"],[\"function\",\"end function\"],[\"get\",\"end get\"],[\"if\",\"end if\"],[\"interface\",\"end interface\"],[\"module\",\"end module\"],[\"namespace\",\"end namespace\"],[\"operator\",\"end operator\"],[\"property\",\"end property\"],[\"raiseevent\",\"end raiseevent\"],[\"removehandler\",\"end removehandler\"],[\"select\",\"end select\"],[\"set\",\"end set\"],[\"structure\",\"end structure\"],[\"sub\",\"end sub\"],[\"synclock\",\"end synclock\"],[\"try\",\"end try\"],[\"while\",\"end while\"],[\"with\",\"end with\"],[\"using\",\"end using\"],[\"do\",\"loop\"],[\"for\",\"next\"]],autoClosingPairs:[{open:\"{\",close:\"}\",notIn:[\"string\",\"comment\"]},{open:\"[\",close:\"]\",notIn:[\"string\",\"comment\"]},{open:\"(\",close:\")\",notIn:[\"string\",\"comment\"]},{open:'\"',close:'\"',notIn:[\"string\",\"comment\"]},{open:\"<\",close:\">\",notIn:[\"string\",\"comment\"]}],folding:{markers:{start:new RegExp(\"^\\\\s*#Region\\\\b\"),end:new RegExp(\"^\\\\s*#End Region\\\\b\")}}},p={defaultToken:\"\",tokenPostfix:\".vb\",ignoreCase:!0,brackets:[{token:\"delimiter.bracket\",open:\"{\",close:\"}\"},{token:\"delimiter.array\",open:\"[\",close:\"]\"},{token:\"delimiter.parenthesis\",open:\"(\",close:\")\"},{token:\"delimiter.angle\",open:\"<\",close:\">\"},{token:\"keyword.tag-addhandler\",open:\"addhandler\",close:\"end addhandler\"},{token:\"keyword.tag-class\",open:\"class\",close:\"end class\"},{token:\"keyword.tag-enum\",open:\"enum\",close:\"end enum\"},{token:\"keyword.tag-event\",open:\"event\",close:\"end event\"},{token:\"keyword.tag-function\",open:\"function\",close:\"end function\"},{token:\"keyword.tag-get\",open:\"get\",close:\"end get\"},{token:\"keyword.tag-if\",open:\"if\",close:\"end if\"},{token:\"keyword.tag-interface\",open:\"interface\",close:\"end interface\"},{token:\"keyword.tag-module\",open:\"module\",close:\"end module\"},{token:\"keyword.tag-namespace\",open:\"namespace\",close:\"end namespace\"},{token:\"keyword.tag-operator\",open:\"operator\",close:\"end operator\"},{token:\"keyword.tag-property\",open:\"property\",close:\"end property\"},{token:\"keyword.tag-raiseevent\",open:\"raiseevent\",close:\"end raiseevent\"},{token:\"keyword.tag-removehandler\",open:\"removehandler\",close:\"end removehandler\"},{token:\"keyword.tag-select\",open:\"select\",close:\"end select\"},{token:\"keyword.tag-set\",open:\"set\",close:\"end set\"},{token:\"keyword.tag-structure\",open:\"structure\",close:\"end structure\"},{token:\"keyword.tag-sub\",open:\"sub\",close:\"end sub\"},{token:\"keyword.tag-synclock\",open:\"synclock\",close:\"end synclock\"},{token:\"keyword.tag-try\",open:\"try\",close:\"end try\"},{token:\"keyword.tag-while\",open:\"while\",close:\"end while\"},{token:\"keyword.tag-with\",open:\"with\",close:\"end with\"},{token:\"keyword.tag-using\",open:\"using\",close:\"end using\"},{token:\"keyword.tag-do\",open:\"do\",close:\"loop\"},{token:\"keyword.tag-for\",open:\"for\",close:\"next\"}],keywords:[\"AddHandler\",\"AddressOf\",\"Alias\",\"And\",\"AndAlso\",\"As\",\"Async\",\"Boolean\",\"ByRef\",\"Byte\",\"ByVal\",\"Call\",\"Case\",\"Catch\",\"CBool\",\"CByte\",\"CChar\",\"CDate\",\"CDbl\",\"CDec\",\"Char\",\"CInt\",\"Class\",\"CLng\",\"CObj\",\"Const\",\"Continue\",\"CSByte\",\"CShort\",\"CSng\",\"CStr\",\"CType\",\"CUInt\",\"CULng\",\"CUShort\",\"Date\",\"Decimal\",\"Declare\",\"Default\",\"Delegate\",\"Dim\",\"DirectCast\",\"Do\",\"Double\",\"Each\",\"Else\",\"ElseIf\",\"End\",\"EndIf\",\"Enum\",\"Erase\",\"Error\",\"Event\",\"Exit\",\"False\",\"Finally\",\"For\",\"Friend\",\"Function\",\"Get\",\"GetType\",\"GetXMLNamespace\",\"Global\",\"GoSub\",\"GoTo\",\"Handles\",\"If\",\"Implements\",\"Imports\",\"In\",\"Inherits\",\"Integer\",\"Interface\",\"Is\",\"IsNot\",\"Let\",\"Lib\",\"Like\",\"Long\",\"Loop\",\"Me\",\"Mod\",\"Module\",\"MustInherit\",\"MustOverride\",\"MyBase\",\"MyClass\",\"NameOf\",\"Namespace\",\"Narrowing\",\"New\",\"Next\",\"Not\",\"Nothing\",\"NotInheritable\",\"NotOverridable\",\"Object\",\"Of\",\"On\",\"Operator\",\"Option\",\"Optional\",\"Or\",\"OrElse\",\"Out\",\"Overloads\",\"Overridable\",\"Overrides\",\"ParamArray\",\"Partial\",\"Private\",\"Property\",\"Protected\",\"Public\",\"RaiseEvent\",\"ReadOnly\",\"ReDim\",\"RemoveHandler\",\"Resume\",\"Return\",\"SByte\",\"Select\",\"Set\",\"Shadows\",\"Shared\",\"Short\",\"Single\",\"Static\",\"Step\",\"Stop\",\"String\",\"Structure\",\"Sub\",\"SyncLock\",\"Then\",\"Throw\",\"To\",\"True\",\"Try\",\"TryCast\",\"TypeOf\",\"UInteger\",\"ULong\",\"UShort\",\"Using\",\"Variant\",\"Wend\",\"When\",\"While\",\"Widening\",\"With\",\"WithEvents\",\"WriteOnly\",\"Xor\"],tagwords:[\"If\",\"Sub\",\"Select\",\"Try\",\"Class\",\"Enum\",\"Function\",\"Get\",\"Interface\",\"Module\",\"Namespace\",\"Operator\",\"Set\",\"Structure\",\"Using\",\"While\",\"With\",\"Do\",\"Loop\",\"For\",\"Next\",\"Property\",\"Continue\",\"AddHandler\",\"RemoveHandler\",\"Event\",\"RaiseEvent\",\"SyncLock\"],symbols:/[=><!~?;\\.,:&|+\\-*\\/\\^%]+/,integersuffix:/U?[DI%L&S@]?/,floatsuffix:/[R#F!]?/,tokenizer:{root:[{include:\"@whitespace\"},[/next(?!\\w)/,{token:\"keyword.tag-for\"}],[/loop(?!\\w)/,{token:\"keyword.tag-do\"}],[/end\\s+(?!for|do)(addhandler|class|enum|event|function|get|if|interface|module|namespace|operator|property|raiseevent|removehandler|select|set|structure|sub|synclock|try|while|with|using)/,{token:\"keyword.tag-$1\"}],[/[a-zA-Z_]\\w*/,{cases:{\"@tagwords\":{token:\"keyword.tag-$0\"},\"@keywords\":{token:\"keyword.$0\"},\"@default\":\"identifier\"}}],[/^\\s*#\\w+/,\"keyword\"],[/\\d*\\d+e([\\-+]?\\d+)?(@floatsuffix)/,\"number.float\"],[/\\d*\\.\\d+(e[\\-+]?\\d+)?(@floatsuffix)/,\"number.float\"],[/&H[0-9a-f]+(@integersuffix)/,\"number.hex\"],[/&0[0-7]+(@integersuffix)/,\"number.octal\"],[/\\d+(@integersuffix)/,\"number\"],[/#.*#/,\"number\"],[/[{}()\\[\\]]/,\"@brackets\"],[/@symbols/,\"delimiter\"],[/[\"\\u201c\\u201d]/,{token:\"string.quote\",next:\"@string\"}]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/(\\'|REM(?!\\w)).*$/,\"comment\"]],string:[[/[^\"\\u201c\\u201d]+/,\"string\"],[/[\"\\u201c\\u201d]{2}/,\"string.escape\"],[/[\"\\u201c\\u201d]C?/,{token:\"string.quote\",next:\"@pop\"}]]}};return u(k);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/wgsl/wgsl.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/wgsl/wgsl\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var s=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var p=(t,e)=>{for(var a in e)s(t,a,{get:e[a],enumerable:!0})},d=(t,e,a,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of l(e))!u.call(t,i)&&i!==a&&s(t,i,{get:()=>e[i],enumerable:!(o=m(e,i))||o.enumerable});return t};var x=t=>d(s({},\"__esModule\",{value:!0}),t);var F={};p(F,{conf:()=>f,language:()=>L});var f={comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"[\",close:\"]\"},{open:\"{\",close:\"}\"},{open:\"(\",close:\")\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"}]};function r(t){let e=[],a=t.split(/\\t+|\\r+|\\n+| +/);for(let o=0;o<a.length;++o)a[o].length>0&&e.push(a[o]);return e}var g=r(\"true false\"),_=r(`\n\t\t\t  alias\n\t\t\t  break\n\t\t\t  case\n\t\t\t  const\n\t\t\t  const_assert\n\t\t\t  continue\n\t\t\t  continuing\n\t\t\t  default\n\t\t\t  diagnostic\n\t\t\t  discard\n\t\t\t  else\n\t\t\t  enable\n\t\t\t  fn\n\t\t\t  for\n\t\t\t  if\n\t\t\t  let\n\t\t\t  loop\n\t\t\t  override\n\t\t\t  requires\n\t\t\t  return\n\t\t\t  struct\n\t\t\t  switch\n\t\t\t  var\n\t\t\t  while\n\t\t\t  `),h=r(`\n\t\t\t  NULL\n\t\t\t  Self\n\t\t\t  abstract\n\t\t\t  active\n\t\t\t  alignas\n\t\t\t  alignof\n\t\t\t  as\n\t\t\t  asm\n\t\t\t  asm_fragment\n\t\t\t  async\n\t\t\t  attribute\n\t\t\t  auto\n\t\t\t  await\n\t\t\t  become\n\t\t\t  binding_array\n\t\t\t  cast\n\t\t\t  catch\n\t\t\t  class\n\t\t\t  co_await\n\t\t\t  co_return\n\t\t\t  co_yield\n\t\t\t  coherent\n\t\t\t  column_major\n\t\t\t  common\n\t\t\t  compile\n\t\t\t  compile_fragment\n\t\t\t  concept\n\t\t\t  const_cast\n\t\t\t  consteval\n\t\t\t  constexpr\n\t\t\t  constinit\n\t\t\t  crate\n\t\t\t  debugger\n\t\t\t  decltype\n\t\t\t  delete\n\t\t\t  demote\n\t\t\t  demote_to_helper\n\t\t\t  do\n\t\t\t  dynamic_cast\n\t\t\t  enum\n\t\t\t  explicit\n\t\t\t  export\n\t\t\t  extends\n\t\t\t  extern\n\t\t\t  external\n\t\t\t  fallthrough\n\t\t\t  filter\n\t\t\t  final\n\t\t\t  finally\n\t\t\t  friend\n\t\t\t  from\n\t\t\t  fxgroup\n\t\t\t  get\n\t\t\t  goto\n\t\t\t  groupshared\n\t\t\t  highp\n\t\t\t  impl\n\t\t\t  implements\n\t\t\t  import\n\t\t\t  inline\n\t\t\t  instanceof\n\t\t\t  interface\n\t\t\t  layout\n\t\t\t  lowp\n\t\t\t  macro\n\t\t\t  macro_rules\n\t\t\t  match\n\t\t\t  mediump\n\t\t\t  meta\n\t\t\t  mod\n\t\t\t  module\n\t\t\t  move\n\t\t\t  mut\n\t\t\t  mutable\n\t\t\t  namespace\n\t\t\t  new\n\t\t\t  nil\n\t\t\t  noexcept\n\t\t\t  noinline\n\t\t\t  nointerpolation\n\t\t\t  noperspective\n\t\t\t  null\n\t\t\t  nullptr\n\t\t\t  of\n\t\t\t  operator\n\t\t\t  package\n\t\t\t  packoffset\n\t\t\t  partition\n\t\t\t  pass\n\t\t\t  patch\n\t\t\t  pixelfragment\n\t\t\t  precise\n\t\t\t  precision\n\t\t\t  premerge\n\t\t\t  priv\n\t\t\t  protected\n\t\t\t  pub\n\t\t\t  public\n\t\t\t  readonly\n\t\t\t  ref\n\t\t\t  regardless\n\t\t\t  register\n\t\t\t  reinterpret_cast\n\t\t\t  require\n\t\t\t  resource\n\t\t\t  restrict\n\t\t\t  self\n\t\t\t  set\n\t\t\t  shared\n\t\t\t  sizeof\n\t\t\t  smooth\n\t\t\t  snorm\n\t\t\t  static\n\t\t\t  static_assert\n\t\t\t  static_cast\n\t\t\t  std\n\t\t\t  subroutine\n\t\t\t  super\n\t\t\t  target\n\t\t\t  template\n\t\t\t  this\n\t\t\t  thread_local\n\t\t\t  throw\n\t\t\t  trait\n\t\t\t  try\n\t\t\t  type\n\t\t\t  typedef\n\t\t\t  typeid\n\t\t\t  typename\n\t\t\t  typeof\n\t\t\t  union\n\t\t\t  unless\n\t\t\t  unorm\n\t\t\t  unsafe\n\t\t\t  unsized\n\t\t\t  use\n\t\t\t  using\n\t\t\t  varying\n\t\t\t  virtual\n\t\t\t  volatile\n\t\t\t  wgsl\n\t\t\t  where\n\t\t\t  with\n\t\t\t  writeonly\n\t\t\t  yield\n\t\t\t  `),b=r(`\n\t\tread write read_write\n\t\tfunction private workgroup uniform storage\n\t\tperspective linear flat\n\t\tcenter centroid sample\n\t\tvertex_index instance_index position front_facing frag_depth\n\t\t\tlocal_invocation_id local_invocation_index\n\t\t\tglobal_invocation_id workgroup_id num_workgroups\n\t\t\tsample_index sample_mask\n\t\trgba8unorm\n\t\trgba8snorm\n\t\trgba8uint\n\t\trgba8sint\n\t\trgba16uint\n\t\trgba16sint\n\t\trgba16float\n\t\tr32uint\n\t\tr32sint\n\t\tr32float\n\t\trg32uint\n\t\trg32sint\n\t\trg32float\n\t\trgba32uint\n\t\trgba32sint\n\t\trgba32float\n\t\tbgra8unorm\n`),v=r(`\n\t\tbool\n\t\tf16\n\t\tf32\n\t\ti32\n\t\tsampler sampler_comparison\n\t\ttexture_depth_2d\n\t\ttexture_depth_2d_array\n\t\ttexture_depth_cube\n\t\ttexture_depth_cube_array\n\t\ttexture_depth_multisampled_2d\n\t\ttexture_external\n\t\ttexture_external\n\t\tu32\n\t\t`),y=r(`\n\t\tarray\n\t\tatomic\n\t\tmat2x2\n\t\tmat2x3\n\t\tmat2x4\n\t\tmat3x2\n\t\tmat3x3\n\t\tmat3x4\n\t\tmat4x2\n\t\tmat4x3\n\t\tmat4x4\n\t\tptr\n\t\ttexture_1d\n\t\ttexture_2d\n\t\ttexture_2d_array\n\t\ttexture_3d\n\t\ttexture_cube\n\t\ttexture_cube_array\n\t\ttexture_multisampled_2d\n\t\ttexture_storage_1d\n\t\ttexture_storage_2d\n\t\ttexture_storage_2d_array\n\t\ttexture_storage_3d\n\t\tvec2\n\t\tvec3\n\t\tvec4\n\t\t`),k=r(`\n\t\tvec2i vec3i vec4i\n\t\tvec2u vec3u vec4u\n\t\tvec2f vec3f vec4f\n\t\tvec2h vec3h vec4h\n\t\tmat2x2f mat2x3f mat2x4f\n\t\tmat3x2f mat3x3f mat3x4f\n\t\tmat4x2f mat4x3f mat4x4f\n\t\tmat2x2h mat2x3h mat2x4h\n\t\tmat3x2h mat3x3h mat3x4h\n\t\tmat4x2h mat4x3h mat4x4h\n\t\t`),w=r(`\n  bitcast all any select arrayLength abs acos acosh asin asinh atan atanh atan2\n  ceil clamp cos cosh countLeadingZeros countOneBits countTrailingZeros cross\n  degrees determinant distance dot exp exp2 extractBits faceForward firstLeadingBit\n  firstTrailingBit floor fma fract frexp inverseBits inverseSqrt ldexp length\n  log log2 max min mix modf normalize pow quantizeToF16 radians reflect refract\n  reverseBits round saturate sign sin sinh smoothstep sqrt step tan tanh transpose\n  trunc dpdx dpdxCoarse dpdxFine dpdy dpdyCoarse dpdyFine fwidth fwidthCoarse fwidthFine\n  textureDimensions textureGather textureGatherCompare textureLoad textureNumLayers\n  textureNumLevels textureNumSamples textureSample textureSampleBias textureSampleCompare\n  textureSampleCompareLevel textureSampleGrad textureSampleLevel textureSampleBaseClampToEdge\n  textureStore atomicLoad atomicStore atomicAdd atomicSub atomicMax atomicMin\n  atomicAnd atomicOr atomicXor atomicExchange atomicCompareExchangeWeak pack4x8snorm\n  pack4x8unorm pack2x16snorm pack2x16unorm pack2x16float unpack4x8snorm unpack4x8unorm\n  unpack2x16snorm unpack2x16unorm unpack2x16float storageBarrier workgroupBarrier\n  workgroupUniformLoad\n`),S=r(`\n\t\t\t\t\t &\n\t\t\t\t\t &&\n\t\t\t\t\t ->\n\t\t\t\t\t /\n\t\t\t\t\t =\n\t\t\t\t\t ==\n\t\t\t\t\t !=\n\t\t\t\t\t >\n\t\t\t\t\t >=\n\t\t\t\t\t <\n\t\t\t\t\t <=\n\t\t\t\t\t %\n\t\t\t\t\t -\n\t\t\t\t\t --\n\t\t\t\t\t +\n\t\t\t\t\t ++\n\t\t\t\t\t |\n\t\t\t\t\t ||\n\t\t\t\t\t *\n\t\t\t\t\t <<\n\t\t\t\t\t >>\n\t\t\t\t\t +=\n\t\t\t\t\t -=\n\t\t\t\t\t *=\n\t\t\t\t\t /=\n\t\t\t\t\t %=\n\t\t\t\t\t &=\n\t\t\t\t\t |=\n\t\t\t\t\t ^=\n\t\t\t\t\t >>=\n\t\t\t\t\t <<=\n\t\t\t\t\t `),C=/enable|requires|diagnostic/,c=/[_\\p{XID_Start}]\\p{XID_Continue}*/u,n=\"variable.predefined\",L={tokenPostfix:\".wgsl\",defaultToken:\"invalid\",unicode:!0,atoms:g,keywords:_,reserved:h,predeclared_enums:b,predeclared_types:v,predeclared_type_generators:y,predeclared_type_aliases:k,predeclared_intrinsics:w,operators:S,symbols:/[!%&*+\\-\\.\\/:;<=>^|_~,]+/,tokenizer:{root:[[C,\"keyword\",\"@directive\"],[c,{cases:{\"@atoms\":n,\"@keywords\":\"keyword\",\"@reserved\":\"invalid\",\"@predeclared_enums\":n,\"@predeclared_types\":n,\"@predeclared_type_generators\":n,\"@predeclared_type_aliases\":n,\"@predeclared_intrinsics\":n,\"@default\":\"identifier\"}}],{include:\"@commentOrSpace\"},{include:\"@numbers\"},[/[{}()\\[\\]]/,\"@brackets\"],[\"@\",\"annotation\",\"@attribute\"],[/@symbols/,{cases:{\"@operators\":\"operator\",\"@default\":\"delimiter\"}}],[/./,\"invalid\"]],commentOrSpace:[[/\\s+/,\"white\"],[/\\/\\*/,\"comment\",\"@blockComment\"],[/\\/\\/.*$/,\"comment\"]],blockComment:[[/[^\\/*]+/,\"comment\"],[/\\/\\*/,\"comment\",\"@push\"],[/\\*\\//,\"comment\",\"@pop\"],[/[\\/*]/,\"comment\"]],attribute:[{include:\"@commentOrSpace\"},[/\\w+/,\"annotation\",\"@pop\"]],directive:[{include:\"@commentOrSpace\"},[/[()]/,\"@brackets\"],[/,/,\"delimiter\"],[c,\"meta.content\"],[/;/,\"delimiter\",\"@pop\"]],numbers:[[/0[fh]/,\"number.float\"],[/[1-9][0-9]*[fh]/,\"number.float\"],[/[0-9]*\\.[0-9]+([eE][+-]?[0-9]+)?[fh]?/,\"number.float\"],[/[0-9]+\\.[0-9]*([eE][+-]?[0-9]+)?[fh]?/,\"number.float\"],[/[0-9]+[eE][+-]?[0-9]+[fh]?/,\"number.float\"],[/0[xX][0-9a-fA-F]*\\.[0-9a-fA-F]+(?:[pP][+-]?[0-9]+[fh]?)?/,\"number.hex\"],[/0[xX][0-9a-fA-F]+\\.[0-9a-fA-F]*(?:[pP][+-]?[0-9]+[fh]?)?/,\"number.hex\"],[/0[xX][0-9a-fA-F]+[pP][+-]?[0-9]+[fh]?/,\"number.hex\"],[/0[xX][0-9a-fA-F]+[iu]?/,\"number.hex\"],[/[1-9][0-9]*[iu]?/,\"number\"],[/0[iu]?/,\"number\"]]}};return x(F);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/xml/xml.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/xml/xml\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var u=Object.create;var m=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var f=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(t,n)=>(typeof require!=\"undefined\"?require:t)[n]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var w=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),b=(e,t)=>{for(var n in t)m(e,n,{get:t[n],enumerable:!0})},i=(e,t,n,r)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let o of p(t))!x.call(e,o)&&o!==n&&m(e,o,{get:()=>t[o],enumerable:!(r=g(t,o))||r.enumerable});return e},l=(e,t,n)=>(i(e,t,\"default\"),n&&i(n,t,\"default\")),c=(e,t,n)=>(n=e!=null?u(k(e)):{},i(t||!e||!e.__esModule?m(n,\"default\",{value:e,enumerable:!0}):n,e)),q=e=>i(m({},\"__esModule\",{value:!0}),e);var s=w((v,d)=>{var N=c(f(\"vs/editor/editor.api\"));d.exports=N});var I={};b(I,{conf:()=>A,language:()=>C});var a={};l(a,c(s()));var A={comments:{blockComment:[\"<!--\",\"-->\"]},brackets:[[\"<\",\">\"]],autoClosingPairs:[{open:\"<\",close:\">\"},{open:\"'\",close:\"'\"},{open:'\"',close:'\"'}],surroundingPairs:[{open:\"<\",close:\">\"},{open:\"'\",close:\"'\"},{open:'\"',close:'\"'}],onEnterRules:[{beforeText:new RegExp(\"<([_:\\\\w][_:\\\\w-.\\\\d]*)([^/>]*(?!/)>)[^<]*$\",\"i\"),afterText:/^<\\/([_:\\w][_:\\w-.\\d]*)\\s*>$/i,action:{indentAction:a.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp(\"<(\\\\w[\\\\w\\\\d]*)([^/>]*(?!/)>)[^<]*$\",\"i\"),action:{indentAction:a.languages.IndentAction.Indent}}]},C={defaultToken:\"\",tokenPostfix:\".xml\",ignoreCase:!0,qualifiedName:/(?:[\\w\\.\\-]+:)?[\\w\\.\\-]+/,tokenizer:{root:[[/[^<&]+/,\"\"],{include:\"@whitespace\"},[/(<)(@qualifiedName)/,[{token:\"delimiter\"},{token:\"tag\",next:\"@tag\"}]],[/(<\\/)(@qualifiedName)(\\s*)(>)/,[{token:\"delimiter\"},{token:\"tag\"},\"\",{token:\"delimiter\"}]],[/(<\\?)(@qualifiedName)/,[{token:\"delimiter\"},{token:\"metatag\",next:\"@tag\"}]],[/(<\\!)(@qualifiedName)/,[{token:\"delimiter\"},{token:\"metatag\",next:\"@tag\"}]],[/<\\!\\[CDATA\\[/,{token:\"delimiter.cdata\",next:\"@cdata\"}],[/&\\w+;/,\"string.escape\"]],cdata:[[/[^\\]]+/,\"\"],[/\\]\\]>/,{token:\"delimiter.cdata\",next:\"@pop\"}],[/\\]/,\"\"]],tag:[[/[ \\t\\r\\n]+/,\"\"],[/(@qualifiedName)(\\s*=\\s*)(\"[^\"]*\"|'[^']*')/,[\"attribute.name\",\"\",\"attribute.value\"]],[/(@qualifiedName)(\\s*=\\s*)(\"[^\">?\\/]*|'[^'>?\\/]*)(?=[\\?\\/]\\>)/,[\"attribute.name\",\"\",\"attribute.value\"]],[/(@qualifiedName)(\\s*=\\s*)(\"[^\">]*|'[^'>]*)/,[\"attribute.name\",\"\",\"attribute.value\"]],[/@qualifiedName/,\"attribute.name\"],[/\\?>/,{token:\"delimiter\",next:\"@pop\"}],[/(\\/)(>)/,[{token:\"tag\"},{token:\"delimiter\",next:\"@pop\"}]],[/>/,{token:\"delimiter\",next:\"@pop\"}]],whitespace:[[/[ \\t\\r\\n]+/,\"\"],[/<!--/,{token:\"comment\",next:\"@comment\"}]],comment:[[/[^<\\-]+/,\"comment.content\"],[/-->/,{token:\"comment\",next:\"@pop\"}],[/<!--/,\"comment.content.invalid\"],[/[<\\-]/,\"comment.content\"]]}};return q(I);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/basic-languages/yaml/yaml.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/yaml/yaml\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var m=Object.create;var l=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var w=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(n,t)=>(typeof require!=\"undefined\"?require:n)[t]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var S=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),k=(e,n)=>{for(var t in n)l(e,t,{get:n[t],enumerable:!0})},a=(e,n,t,i)=>{if(n&&typeof n==\"object\"||typeof n==\"function\")for(let r of p(n))!f.call(e,r)&&r!==t&&l(e,r,{get:()=>n[r],enumerable:!(i=b(n,r))||i.enumerable});return e},c=(e,n,t)=>(a(e,n,\"default\"),t&&a(t,n,\"default\")),u=(e,n,t)=>(t=e!=null?m(g(e)):{},a(n||!e||!e.__esModule?l(t,\"default\",{value:e,enumerable:!0}):t,e)),y=e=>a(l({},\"__esModule\",{value:!0}),e);var d=S((C,s)=>{var h=u(w(\"vs/editor/editor.api\"));s.exports=h});var $={};k($,{conf:()=>N,language:()=>x});var o={};c(o,u(d()));var N={comments:{lineComment:\"#\"},brackets:[[\"{\",\"}\"],[\"[\",\"]\"],[\"(\",\")\"]],autoClosingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\\s*$/,action:{indentAction:o.languages.IndentAction.Indent}}]},x={tokenPostfix:\".yaml\",brackets:[{token:\"delimiter.bracket\",open:\"{\",close:\"}\"},{token:\"delimiter.square\",open:\"[\",close:\"]\"}],keywords:[\"true\",\"True\",\"TRUE\",\"false\",\"False\",\"FALSE\",\"null\",\"Null\",\"Null\",\"~\"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\\.(?:inf|Inf|INF)/,numberNaN:/\\.(?:nan|Nan|NAN)/,numberDate:/\\d{4}-\\d\\d-\\d\\d([Tt ]\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(( ?[+-]\\d\\d?(:\\d\\d)?)|Z)?)?/,escapes:/\\\\(?:[btnfr\\\\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:\"@whitespace\"},{include:\"@comment\"},[/%[^ ]+.*$/,\"meta.directive\"],[/---/,\"operators.directivesEnd\"],[/\\.{3}/,\"operators.documentEnd\"],[/[-?:](?= )/,\"operators\"],{include:\"@anchor\"},{include:\"@tagHandle\"},{include:\"@flowCollections\"},{include:\"@blockStyle\"},[/@numberInteger(?![ \\t]*\\S+)/,\"number\"],[/@numberFloat(?![ \\t]*\\S+)/,\"number.float\"],[/@numberOctal(?![ \\t]*\\S+)/,\"number.octal\"],[/@numberHex(?![ \\t]*\\S+)/,\"number.hex\"],[/@numberInfinity(?![ \\t]*\\S+)/,\"number.infinity\"],[/@numberNaN(?![ \\t]*\\S+)/,\"number.nan\"],[/@numberDate(?![ \\t]*\\S+)/,\"number.date\"],[/(\".*?\"|'.*?'|[^#'\"]*?)([ \\t]*)(:)( |$)/,[\"type\",\"white\",\"operators\",\"white\"]],{include:\"@flowScalars\"},[/.+?(?=(\\s+#|$))/,{cases:{\"@keywords\":\"keyword\",\"@default\":\"string\"}}]],object:[{include:\"@whitespace\"},{include:\"@comment\"},[/\\}/,\"@brackets\",\"@pop\"],[/,/,\"delimiter.comma\"],[/:(?= )/,\"operators\"],[/(?:\".*?\"|'.*?'|[^,\\{\\[]+?)(?=: )/,\"type\"],{include:\"@flowCollections\"},{include:\"@flowScalars\"},{include:\"@tagHandle\"},{include:\"@anchor\"},{include:\"@flowNumber\"},[/[^\\},]+/,{cases:{\"@keywords\":\"keyword\",\"@default\":\"string\"}}]],array:[{include:\"@whitespace\"},{include:\"@comment\"},[/\\]/,\"@brackets\",\"@pop\"],[/,/,\"delimiter.comma\"],{include:\"@flowCollections\"},{include:\"@flowScalars\"},{include:\"@tagHandle\"},{include:\"@anchor\"},{include:\"@flowNumber\"},[/[^\\],]+/,{cases:{\"@keywords\":\"keyword\",\"@default\":\"string\"}}]],multiString:[[/^( +).+$/,\"string\",\"@multiStringContinued.$1\"]],multiStringContinued:[[/^( *).+$/,{cases:{\"$1==$S2\":\"string\",\"@default\":{token:\"@rematch\",next:\"@popall\"}}}]],whitespace:[[/[ \\t\\r\\n]+/,\"white\"]],comment:[[/#.*$/,\"comment\"]],flowCollections:[[/\\[/,\"@brackets\",\"@array\"],[/\\{/,\"@brackets\",\"@object\"]],flowScalars:[[/\"([^\"\\\\]|\\\\.)*$/,\"string.invalid\"],[/'([^'\\\\]|\\\\.)*$/,\"string.invalid\"],[/'[^']*'/,\"string\"],[/\"/,\"string\",\"@doubleQuotedString\"]],doubleQuotedString:[[/[^\\\\\"]+/,\"string\"],[/@escapes/,\"string.escape\"],[/\\\\./,\"string.escape.invalid\"],[/\"/,\"string\",\"@pop\"]],blockStyle:[[/[>|][0-9]*[+-]?$/,\"operators\",\"@multiString\"]],flowNumber:[[/@numberInteger(?=[ \\t]*[,\\]\\}])/,\"number\"],[/@numberFloat(?=[ \\t]*[,\\]\\}])/,\"number.float\"],[/@numberOctal(?=[ \\t]*[,\\]\\}])/,\"number.octal\"],[/@numberHex(?=[ \\t]*[,\\]\\}])/,\"number.hex\"],[/@numberInfinity(?=[ \\t]*[,\\]\\}])/,\"number.infinity\"],[/@numberNaN(?=[ \\t]*[,\\]\\}])/,\"number.nan\"],[/@numberDate(?=[ \\t]*[,\\]\\}])/,\"number.date\"]],tagHandle:[[/\\![^ ]*/,\"tag\"]],anchor:[[/[&*][^ ]+/,\"namespace\"]]}};return y($);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/editor/editor.main.css",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/.monaco-action-bar{white-space:nowrap;height:100%}.monaco-action-bar .actions-container{display:flex;margin:0 auto;padding:0;height:100%;width:100%;align-items:center}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar .action-item{display:block;align-items:center;justify-content:center;cursor:pointer;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar .action-item .codicon,.monaco-action-bar .action-item .icon{display:block}.monaco-action-bar .action-item .codicon{display:flex;align-items:center;width:16px;height:16px}.monaco-action-bar .action-label{display:flex;font-size:11px;padding:3px;border-radius:5px}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:before,.monaco-action-bar .action-item.disabled .action-label:hover{opacity:.6}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{display:block;border-bottom:1px solid #bbb;padding-top:1px;margin-left:.8em;margin-right:.8em}.monaco-action-bar .action-item .action-label.separator{width:1px;height:16px;margin:5px 4px!important;cursor:default;min-width:1px;padding:0;background-color:#bbb}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{overflow:hidden;flex:1;max-width:170px;min-width:60px;display:flex;align-items:center;justify-content:center;margin-right:10px}.monaco-action-bar .action-item.action-dropdown-item{display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator{display:flex;align-items:center;cursor:default}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator>div{width:1px}.monaco-aria-container{position:absolute;left:-999em}.monaco-text-button{box-sizing:border-box;display:flex;width:100%;padding:4px;border-radius:2px;text-align:center;cursor:pointer;justify-content:center;align-items:center;border:1px solid var(--vscode-button-border,transparent);line-height:18px}.monaco-text-button:focus{outline-offset:2px!important}.monaco-text-button:hover{text-decoration:none!important}.monaco-button.disabled,.monaco-button.disabled:focus{opacity:.4!important;cursor:default}.monaco-text-button .codicon{margin:0 .2em;color:inherit!important}.monaco-text-button.monaco-text-button-with-short-label{flex-direction:row;flex-wrap:wrap;padding:0 4px;overflow:hidden;height:28px}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label{flex-basis:100%}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{flex-grow:1;width:0;overflow:hidden}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label,.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{display:flex;justify-content:center;align-items:center;font-weight:400;font-style:inherit;padding:4px 0}.monaco-button-dropdown{display:flex;cursor:pointer}.monaco-button-dropdown.disabled{cursor:default}.monaco-button-dropdown>.monaco-button:focus{outline-offset:-1px!important}.monaco-button-dropdown.disabled>.monaco-button-dropdown-separator,.monaco-button-dropdown.disabled>.monaco-button.disabled,.monaco-button-dropdown.disabled>.monaco-button.disabled:focus{opacity:.4!important}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-right-width:0!important}.monaco-button-dropdown .monaco-button-dropdown-separator{padding:4px 0;cursor:default}.monaco-button-dropdown .monaco-button-dropdown-separator>div{height:100%;width:1px}.monaco-button-dropdown>.monaco-button.monaco-dropdown-button{border:1px solid var(--vscode-button-border,transparent);border-left-width:0!important;border-radius:0 2px 2px 0}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-radius:2px 0 0 2px}.monaco-description-button{display:flex;flex-direction:column;align-items:center;margin:4px 5px}.monaco-description-button .monaco-button-description{font-style:italic;font-size:11px;padding:4px 20px}.monaco-description-button .monaco-button-description,.monaco-description-button .monaco-button-label{display:flex;justify-content:center;align-items:center}.monaco-description-button .monaco-button-description>.codicon,.monaco-description-button .monaco-button-label>.codicon{margin:0 .2em;color:inherit!important}.monaco-button-dropdown.default-colors>.monaco-button,.monaco-button.default-colors{color:var(--vscode-button-foreground);background-color:var(--vscode-button-background)}.monaco-button-dropdown.default-colors>.monaco-button:hover,.monaco-button.default-colors:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary,.monaco-button.default-colors.secondary{color:var(--vscode-button-secondaryForeground);background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary:hover,.monaco-button.default-colors.secondary:hover{background-color:var(--vscode-button-secondaryHoverBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator{background-color:var(--vscode-button-background);border-top:1px solid var(--vscode-button-border);border-bottom:1px solid var(--vscode-button-border)}.monaco-button-dropdown.default-colors .monaco-button.secondary+.monaco-button-dropdown-separator{background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator>div{background-color:var(--vscode-button-separator)}@font-face{font-family:codicon;font-display:block;src:url(../base/browser/ui/codicons/codicon/codicon.ttf) format(\"truetype\")}.codicon[class*=codicon-]{font:normal normal normal 16px/1 codicon;display:inline-block;text-decoration:none;text-rendering:auto;text-align:center;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;user-select:none;-webkit-user-select:none}.codicon-wrench-subaction{opacity:.5}@keyframes codicon-spin{to{transform:rotate(1turn)}}.codicon-gear.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-notebook-state-executing.codicon-modifier-spin,.codicon-sync.codicon-modifier-spin{animation:codicon-spin 1.5s steps(30) infinite}.codicon-modifier-disabled{opacity:.4}.codicon-loading,.codicon-tree-item-loading:before{animation-duration:1s!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}.context-view{position:absolute}.context-view.fixed{all:initial;font-family:inherit;font-size:13px;position:fixed;color:inherit}.monaco-count-badge{padding:3px 6px;border-radius:11px;font-size:11px;min-width:18px;min-height:18px;line-height:11px;font-weight:400;text-align:center;display:inline-block;box-sizing:border-box}.monaco-count-badge.long{padding:2px 3px;border-radius:2px;min-height:auto;line-height:normal}.monaco-dropdown{height:100%;padding:0}.monaco-dropdown>.dropdown-label{cursor:pointer;height:100%;display:flex;align-items:center;justify-content:center}.monaco-dropdown>.dropdown-label>.action-label.disabled{cursor:default}.monaco-dropdown-with-primary{display:flex!important;flex-direction:row;border-radius:5px}.monaco-dropdown-with-primary>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;padding-left:0;padding-right:0;line-height:16px;margin-left:-3px}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{display:block;background-size:16px;background-position:50%;background-repeat:no-repeat}.monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{font-size:13px;width:100%}.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.hc-light .monaco-findInput.highlight-0 .controls,.monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-0 .1s linear 0s}.hc-light .monaco-findInput.highlight-1 .controls,.monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-1 .1s linear 0s}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-dark-0 .1s linear 0s}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-dark-1 .1s linear 0s}@keyframes monaco-findInput-highlight-0{0%{background:rgba(253,255,0,.8)}to{background:transparent}}@keyframes monaco-findInput-highlight-1{0%{background:rgba(253,255,0,.8)}99%{background:transparent}}@keyframes monaco-findInput-highlight-dark-0{0%{background:hsla(0,0%,100%,.44)}to{background:transparent}}@keyframes monaco-findInput-highlight-dark-1{0%{background:hsla(0,0%,100%,.44)}99%{background:transparent}}.monaco-hover{cursor:default;position:absolute;overflow:hidden;user-select:text;-webkit-user-select:text;box-sizing:border-box;animation:fadein .1s linear;line-height:1.5em;white-space:var(--vscode-hover-whiteSpace,normal)}.monaco-hover.hidden{display:none}.monaco-hover a:hover:not(.disabled){cursor:pointer}.monaco-hover .hover-contents:not(.html-hover-contents){padding:4px 8px}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents){max-width:var(--vscode-hover-maxWidth,500px);word-wrap:break-word}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents) hr{min-width:100%}.monaco-hover .code,.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6,.monaco-hover p,.monaco-hover ul{margin:8px 0}.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6{line-height:1.1}.monaco-hover code{font-family:var(--monaco-monospace-font)}.monaco-hover hr{box-sizing:border-box;border-left:0;border-right:0;margin:4px -8px -4px;height:1px}.monaco-hover .code:first-child,.monaco-hover p:first-child,.monaco-hover ul:first-child{margin-top:0}.monaco-hover .code:last-child,.monaco-hover p:last-child,.monaco-hover ul:last-child{margin-bottom:0}.monaco-hover ol,.monaco-hover ul{padding-left:20px}.monaco-hover li>p{margin-bottom:0}.monaco-hover li>ul{margin-top:0}.monaco-hover code{border-radius:3px;padding:0 .4em}.monaco-hover .monaco-tokenized-source{white-space:var(--vscode-hover-sourceWhiteSpace,pre-wrap)}.monaco-hover .hover-row.status-bar{font-size:12px;line-height:22px}.monaco-hover .hover-row.status-bar .info{font-style:italic;padding:0 8px}.monaco-hover .hover-row.status-bar .actions{display:flex;padding:0 8px}.monaco-hover .hover-row.status-bar .actions .action-container{margin-right:16px;cursor:pointer}.monaco-hover .hover-row.status-bar .actions .action-container .action .icon{padding-right:4px}.monaco-hover .markdown-hover .hover-contents .codicon{color:inherit;font-size:inherit;vertical-align:middle}.monaco-hover .hover-contents a.code-link,.monaco-hover .hover-contents a.code-link:hover{color:inherit}.monaco-hover .hover-contents a.code-link:before{content:\"(\"}.monaco-hover .hover-contents a.code-link:after{content:\")\"}.monaco-hover .hover-contents a.code-link>span{text-decoration:underline;border-bottom:1px solid transparent;text-underline-position:under;color:var(--vscode-textLink-foreground)}.monaco-hover .hover-contents a.code-link>span:hover{color:var(--vscode-textLink-activeForeground)}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span{margin-bottom:4px;display:inline-block}.monaco-hover-content .action-container a{-webkit-user-select:none;user-select:none}.monaco-hover-content .action-container.disabled{pointer-events:none;opacity:.4;cursor:default}.monaco-icon-label{display:flex;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label:before{background-size:16px;background-position:0;background-repeat:no-repeat;padding-right:6px;width:16px;height:22px;line-height:inherit!important;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;flex-shrink:0}.monaco-icon-label-container.disabled{color:var(--vscode-disabledForeground)}.monaco-icon-label>.monaco-icon-label-container{min-width:0;overflow:hidden;text-overflow:ellipsis;flex:1}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name>.label-separator{margin:0 2px;opacity:.5}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.7;margin-left:.5em;font-size:.9em;white-space:pre}.monaco-icon-label.nowrap>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{white-space:nowrap}.vs .monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.95}.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{font-style:italic}.monaco-icon-label.deprecated{text-decoration:line-through;opacity:.66}.monaco-icon-label.italic:after{font-style:italic}.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{text-decoration:line-through}.monaco-icon-label:after{opacity:.75;font-size:90%;font-weight:600;margin:auto 16px 0 5px;text-align:center}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after{color:inherit!important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description{opacity:.8}.monaco-inputbox{position:relative;display:block;padding:0;box-sizing:border-box;border-radius:2px;font-size:inherit}.monaco-inputbox>.ibwrapper>.input,.monaco-inputbox>.ibwrapper>.mirror{padding:4px 6px}.monaco-inputbox>.ibwrapper{position:relative;width:100%;height:100%}.monaco-inputbox>.ibwrapper>.input{display:inline-block;box-sizing:border-box;width:100%;height:100%;line-height:inherit;border:none;font-family:inherit;font-size:inherit;resize:none;color:inherit}.monaco-inputbox>.ibwrapper>input{text-overflow:ellipsis}.monaco-inputbox>.ibwrapper>textarea.input{display:block;scrollbar-width:none;outline:none}.monaco-inputbox>.ibwrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.ibwrapper>textarea.input.empty{white-space:nowrap}.monaco-inputbox>.ibwrapper>.mirror{position:absolute;display:inline-block;width:100%;top:0;left:0;box-sizing:border-box;white-space:pre-wrap;visibility:hidden;word-wrap:break-word}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{display:inline-block;overflow:hidden;text-align:left;width:100%;box-sizing:border-box;padding:.4em;font-size:12px;line-height:17px;margin-top:-1px;word-wrap:break-word}.monaco-inputbox .monaco-action-bar{position:absolute;right:2px;top:4px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .codicon{background-repeat:no-repeat;width:16px;height:16px}.monaco-keybinding{display:flex;align-items:center;line-height:10px}.monaco-keybinding>.monaco-keybinding-key{display:inline-block;border-style:solid;border-width:1px;border-radius:3px;vertical-align:middle;font-size:11px;padding:3px 5px;margin:0 2px}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}.monaco-list{position:relative;height:100%;width:100%;white-space:nowrap}.monaco-list.mouse-support{user-select:none;-webkit-user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{position:relative;width:100%;height:100%}.monaco-list.horizontal-scrolling .monaco-list-rows{width:auto;min-width:100%}.monaco-list-row{position:absolute;box-sizing:border-box;overflow:hidden;width:100%}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;touch-action:none}.monaco-list-row.scrolling{display:none!important}.monaco-list.element-focused,.monaco-list.selection-multiple,.monaco-list.selection-single{outline:0!important}.monaco-drag-image{display:inline-block;padding:1px 7px;border-radius:10px;font-size:12px;position:absolute;z-index:1000}.monaco-list-type-filter-message{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;padding:40px 1em 1em;text-align:center;white-space:normal;opacity:.7;pointer-events:none}.monaco-list-type-filter-message:empty{display:none}.monaco-mouse-cursor-text{cursor:text}.monaco-progress-container{width:100%;height:5px;overflow:hidden}.monaco-progress-container .progress-bit{width:2%;height:5px;position:absolute;left:0;display:none}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{left:0;transition:width .1s linear}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{animation-name:progress;animation-duration:4s;animation-iteration-count:infinite;transform:translateZ(0);animation-timing-function:linear}.monaco-progress-container.infinite.infinite-long-running .progress-bit{animation-timing-function:steps(100)}@keyframes progress{0%{transform:translateX(0) scaleX(1)}50%{transform:translateX(2500%) scaleX(3)}to{transform:translateX(4900%) scaleX(1)}}:root{--vscode-sash-size:4px}.monaco-sash{position:absolute;z-index:35;touch-action:none}.monaco-sash.disabled{pointer-events:none}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash.disabled{cursor:default!important;pointer-events:none!important}.monaco-sash.vertical{cursor:ew-resize;top:0;width:var(--vscode-sash-size);height:100%}.monaco-sash.horizontal{cursor:ns-resize;left:0;width:100%;height:var(--vscode-sash-size)}.monaco-sash:not(.disabled)>.orthogonal-drag-handle{content:\" \";height:calc(var(--vscode-sash-size)*2);width:calc(var(--vscode-sash-size)*2);z-index:100;display:block;cursor:all-scroll;position:absolute}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.start,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.end{cursor:nwse-resize}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.end,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.start{cursor:nesw-resize}.monaco-sash.vertical>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size)*-0.5);top:calc(var(--vscode-sash-size)*-1)}.monaco-sash.vertical>.orthogonal-drag-handle.end{left:calc(var(--vscode-sash-size)*-0.5);bottom:calc(var(--vscode-sash-size)*-1)}.monaco-sash.horizontal>.orthogonal-drag-handle.start{top:calc(var(--vscode-sash-size)*-0.5);left:calc(var(--vscode-sash-size)*-1)}.monaco-sash.horizontal>.orthogonal-drag-handle.end{top:calc(var(--vscode-sash-size)*-0.5);right:calc(var(--vscode-sash-size)*-1)}.monaco-sash:before{content:\"\";pointer-events:none;position:absolute;width:100%;height:100%;background:transparent}.monaco-workbench:not(.reduce-motion) .monaco-sash:before{transition:background-color .1s ease-out}.monaco-sash.active:before,.monaco-sash.hover:before{background:var(--vscode-sash-hoverBorder)}.monaco-sash.vertical:before{width:var(--vscode-sash-hover-size);left:calc(50% - var(--vscode-sash-hover-size)/2)}.monaco-sash.horizontal:before{height:var(--vscode-sash-hover-size);top:calc(50% - var(--vscode-sash-hover-size)/2)}.pointer-events-disabled{pointer-events:none!important}.monaco-sash.debug{background:#0ff}.monaco-sash.debug.disabled{background:rgba(0,255,255,.2)}.monaco-sash.debug:not(.disabled)>.orthogonal-drag-handle{background:red}.monaco-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.monaco-scrollable-element>.visible{opacity:1;background:transparent;transition:opacity .1s linear;z-index:11}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{transition:opacity .8s linear}.monaco-scrollable-element>.shadow{position:absolute;display:none}.monaco-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.monaco-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.scrollbar>.slider{background:var(--vscode-scrollbarSlider-background)}.monaco-scrollable-element>.scrollbar>.slider:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-scrollable-element>.scrollbar>.slider.active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-select-box{width:100%;cursor:pointer;border-radius:2px}.monaco-select-box-dropdown-container{font-size:13px;font-weight:400;text-transform:none}.monaco-action-bar .action-item.select-container{cursor:default}.monaco-action-bar .action-item .monaco-select-box{cursor:pointer;min-width:100px;min-height:18px;padding:2px 23px 2px 8px}.mac .monaco-action-bar .action-item .monaco-select-box{font-size:11px;border-radius:5px}.monaco-select-box-dropdown-padding{--dropdown-padding-top:1px;--dropdown-padding-bottom:1px}.hc-black .monaco-select-box-dropdown-padding,.hc-light .monaco-select-box-dropdown-padding{--dropdown-padding-top:3px;--dropdown-padding-bottom:4px}.monaco-select-box-dropdown-container{display:none;box-sizing:border-box}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown *{margin:0}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown a:focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown code{line-height:15px;font-family:var(--monaco-monospace-font)}.monaco-select-box-dropdown-container.visible{display:flex;flex-direction:column;text-align:left;width:1px;overflow:hidden;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container{flex:0 0 auto;align-self:flex-start;padding-top:var(--dropdown-padding-top);padding-bottom:var(--dropdown-padding-bottom);padding-left:1px;padding-right:1px;width:100%;overflow:hidden;box-sizing:border-box}.monaco-select-box-dropdown-container>.select-box-details-pane{padding:5px}.hc-black .monaco-select-box-dropdown-container>.select-box-dropdown-list-container{padding-top:var(--dropdown-padding-top);padding-bottom:var(--dropdown-padding-bottom)}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row{cursor:pointer}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-text{text-overflow:ellipsis;overflow:hidden;padding-left:3.5px;white-space:nowrap;float:left}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-detail{text-overflow:ellipsis;overflow:hidden;padding-left:3.5px;white-space:nowrap;float:left;opacity:.7}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-decorator-right{text-overflow:ellipsis;overflow:hidden;padding-right:10px;white-space:nowrap;float:right}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.visually-hidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control{flex:1 1 auto;align-self:flex-start;opacity:0}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div{overflow:hidden;max-height:0}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div>.option-text-width-control{padding-left:4px;padding-right:8px;white-space:nowrap}.monaco-split-view2{position:relative;width:100%;height:100%}.monaco-split-view2>.sash-container{position:absolute;width:100%;height:100%;pointer-events:none}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:auto}.monaco-split-view2>.monaco-scrollable-element{width:100%;height:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container{width:100%;height:100%;white-space:nowrap;position:relative}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view{white-space:normal;position:absolute}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view{height:100%}.monaco-split-view2.separator-border>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{content:\" \";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--separator-border)}.monaco-split-view2.separator-border.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:100%;width:1px}.monaco-split-view2.separator-border.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:1px;width:100%}.monaco-table{display:flex;flex-direction:column;position:relative;height:100%;width:100%;white-space:nowrap;overflow:hidden}.monaco-table>.monaco-split-view2{border-bottom:1px solid transparent}.monaco-table>.monaco-list{flex:1}.monaco-table-tr{display:flex;height:100%}.monaco-table-th{width:100%;height:100%;font-weight:700;overflow:hidden;text-overflow:ellipsis}.monaco-table-td,.monaco-table-th{box-sizing:border-box;flex-shrink:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{content:\"\";position:absolute;left:calc(var(--vscode-sash-size)/2);width:0;border-left:1px solid transparent}.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2,.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{transition:border-color .2s ease-out}.monaco-custom-toggle{margin-left:2px;float:left;cursor:pointer;overflow:hidden;width:20px;height:20px;border-radius:3px;border:1px solid transparent;padding:1px;box-sizing:border-box;user-select:none;-webkit-user-select:none}.monaco-custom-toggle:hover{background-color:var(--vscode-inputOption-hoverBackground)}.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle:hover{border:1px dashed var(--vscode-focusBorder)}.hc-black .monaco-custom-toggle,.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle,.hc-light .monaco-custom-toggle:hover{background:none}.monaco-custom-toggle.monaco-checkbox{height:18px;width:18px;border:1px solid transparent;border-radius:3px;margin-right:9px;margin-left:0;padding:0;opacity:1;background-size:16px!important}.monaco-custom-toggle.monaco-checkbox:not(.checked):before{visibility:hidden}.monaco-toolbar{height:100%}.monaco-toolbar .toolbar-toggle-more{display:inline-block;padding:0}.monaco-tl-row{display:flex;height:100%;align-items:center;position:relative}.monaco-tl-row.disabled{cursor:default}.monaco-tl-indent{height:100%;position:absolute;top:0;left:16px;pointer-events:none}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{display:inline-block;box-sizing:border-box;height:100%;border-left:1px solid transparent}.monaco-workbench:not(.reduce-motion) .monaco-tl-indent>.indent-guide{transition:border-color .1s linear}.monaco-tl-contents,.monaco-tl-twistie{height:100%}.monaco-tl-twistie{font-size:10px;text-align:right;padding-right:6px;flex-shrink:0;width:16px;display:flex!important;align-items:center;justify-content:center;transform:translateX(3px)}.monaco-tl-contents{flex:1;overflow:hidden}.monaco-tl-twistie:before{border-radius:20px}.monaco-tl-twistie.collapsed:before{transform:rotate(-90deg)}.monaco-tl-twistie.codicon-tree-item-loading:before{animation:codicon-spin 1.25s steps(30) infinite}.monaco-tree-type-filter{position:absolute;top:0;display:flex;padding:3px;max-width:200px;z-index:100;margin:0 6px;border:1px solid var(--vscode-widget-border);border-bottom-left-radius:4px;border-bottom-right-radius:4px}.monaco-workbench:not(.reduce-motion) .monaco-tree-type-filter{transition:top .3s}.monaco-tree-type-filter.disabled{top:-40px!important}.monaco-tree-type-filter-grab{display:flex!important;align-items:center;justify-content:center;cursor:grab;margin-right:2px}.monaco-tree-type-filter-grab.grabbing{cursor:grabbing}.monaco-tree-type-filter-input{flex:1}.monaco-tree-type-filter-input .monaco-inputbox{height:23px}.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.input,.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.mirror{padding:2px 4px}.monaco-tree-type-filter-input .monaco-findInput>.controls{top:2px}.monaco-tree-type-filter-actionbar{margin-left:4px}.monaco-tree-type-filter-actionbar .monaco-action-bar .action-label{padding:2px}.monaco-editor .inputarea{min-width:0;min-height:0;margin:0;padding:0;position:absolute;outline:none!important;resize:none;border:none;overflow:hidden;color:transparent;background-color:transparent;z-index:-10}.monaco-editor .inputarea.ime-input{z-index:10;caret-color:var(--vscode-editorCursor-foreground);color:var(--vscode-editor-foreground)}.monaco-editor .blockDecorations-container{position:absolute;top:0;pointer-events:none}.monaco-editor .blockDecorations-block{position:absolute;box-sizing:border-box}.monaco-editor .margin-view-overlays .current-line,.monaco-editor .view-overlays .current-line{display:block;position:absolute;left:0;top:0;box-sizing:border-box}.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both{border-right:0}.monaco-editor .lines-content .cdr{position:absolute}.monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .glyph-margin-widgets .cgmr{position:absolute;display:flex;align-items:center;justify-content:center}.monaco-editor .glyph-margin-widgets .cgmr.codicon-modifier-spin:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.monaco-editor .lines-content .core-guide{position:absolute;box-sizing:border-box}.monaco-editor .margin-view-overlays .line-numbers{font-variant-numeric:tabular-nums;position:absolute;text-align:right;display:inline-block;vertical-align:middle;box-sizing:border-box;cursor:default;height:100%}.monaco-editor .relative-current-line-number{text-align:left;display:inline-block;width:100%}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}.monaco-editor .line-numbers{color:var(--vscode-editorLineNumber-foreground)}.monaco-editor .line-numbers.active-line-number{color:var(--vscode-editorLineNumber-activeForeground)}.mtkcontrol{color:#fff!important;background:#960000!important}.mtkoverflow{background-color:var(--vscode-button-background,var(--vscode-editor-background));color:var(--vscode-button-foreground,var(--vscode-editor-foreground));border:1px solid var(--vscode-contrastBorder);border-radius:2px;padding:4px;cursor:pointer}.mtkoverflow:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{user-select:none;-webkit-user-select:none}.monaco-editor.mac .lines-content:hover,.monaco-editor.mac .view-line:hover,.monaco-editor.mac .view-lines:hover{user-select:text;-webkit-user-select:text;-ms-user-select:text}.monaco-editor.enable-user-select{user-select:initial;-webkit-user-select:initial}.monaco-editor .view-lines{white-space:nowrap}.monaco-editor .view-line{position:absolute;width:100%}.monaco-editor .mtkw,.monaco-editor .mtkz{color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .mtkz{display:inline-block}.monaco-editor .lines-decorations{position:absolute;top:0;background:#fff}.monaco-editor .margin-view-overlays .cldr{position:absolute;height:100%}.monaco-editor .margin{background-color:var(--vscode-editorGutter-background)}.monaco-editor .margin-view-overlays .cmdr{position:absolute;left:0;width:100%;height:100%}.monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;transition:opacity .1s linear}.monaco-editor .minimap.slider-mouseover .minimap-slider.active,.monaco-editor .minimap.slider-mouseover:hover .minimap-slider{opacity:1}.monaco-editor .minimap-slider .minimap-slider-horizontal{background:var(--vscode-minimapSlider-background)}.monaco-editor .minimap-slider:hover .minimap-slider-horizontal{background:var(--vscode-minimapSlider-hoverBackground)}.monaco-editor .minimap-slider.active .minimap-slider-horizontal{background:var(--vscode-minimapSlider-activeBackground)}.monaco-editor .minimap-shadow-visible{box-shadow:var(--vscode-scrollbar-shadow) -6px 0 6px -6px inset}.monaco-editor .minimap-shadow-hidden{position:absolute;width:0}.monaco-editor .minimap-shadow-visible{position:absolute;left:-6px;width:6px}.monaco-editor.no-minimap-shadow .minimap-shadow-visible{position:absolute;left:-1px;width:1px}.minimap.autohide{opacity:0;transition:opacity .5s}.minimap.autohide:hover{opacity:1}.monaco-editor .overlayWidgets{position:absolute;top:0;left:0}.monaco-editor .view-ruler{position:absolute;top:0;box-shadow:1px 0 0 0 var(--vscode-editorRuler-foreground) inset}.monaco-editor .scroll-decoration{position:absolute;top:0;left:0;height:6px;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .focused .selected-text{background-color:var(--vscode-editor-selectionBackground)}.monaco-editor .selected-text{background-color:var(--vscode-editor-inactiveSelectionBackground)}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor.hc-light .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-light .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-light .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-light .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{position:absolute;overflow:hidden;box-sizing:border-box}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{transition:all 80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{background:transparent!important;border-style:solid;border-width:1px}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{border-bottom-width:2px;border-bottom-style:solid;background:transparent!important}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{border-bottom-width:1px;border-bottom-style:solid;background:transparent!important}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-expand{0%,20%{transform:scaleY(1)}80%,to{transform:scaleY(0)}}.cursor-smooth{animation:monaco-cursor-smooth .5s ease-in-out 0s 20 alternate}.cursor-phase{animation:monaco-cursor-phase .5s ease-in-out 0s 20 alternate}.cursor-expand>.cursor{animation:monaco-cursor-expand .5s ease-in-out 0s 20 alternate}.monaco-editor .mwh{position:absolute;color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .diff-hidden-lines-widget{width:100%}.monaco-editor .diff-hidden-lines{height:0;transform:translateY(-10px);font-size:13px;line-height:14px}.monaco-editor .diff-hidden-lines .bottom.dragging,.monaco-editor .diff-hidden-lines .top.dragging,.monaco-editor .diff-hidden-lines:not(.dragging) .bottom:hover,.monaco-editor .diff-hidden-lines:not(.dragging) .top:hover{background-color:var(--vscode-focusBorder)}.monaco-editor .diff-hidden-lines .bottom,.monaco-editor .diff-hidden-lines .top{transition:background-color .1s ease-out;height:4px;background-color:transparent;background-clip:padding-box;border-bottom:2px solid transparent;border-top:4px solid transparent;cursor:ns-resize}.monaco-editor .diff-hidden-lines .top{transform:translateY(4px)}.monaco-editor .diff-hidden-lines .bottom{transform:translateY(-6px)}.monaco-editor .diff-unchanged-lines{background:var(--vscode-diffEditor-unchangedCodeBackground)}.monaco-editor .noModificationsOverlay{z-index:1;background:var(--vscode-editor-background);display:flex;justify-content:center;align-items:center}.monaco-editor .diff-hidden-lines .center{background:var(--vscode-diffEditor-unchangedRegionBackground);color:var(--vscode-diffEditor-unchangedRegionForeground);overflow:hidden;display:block;text-overflow:ellipsis;white-space:nowrap;height:24px}.monaco-editor .diff-hidden-lines .center span.codicon{vertical-align:middle}.monaco-editor .diff-hidden-lines .center a:hover .codicon{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .diff-hidden-lines div.breadcrumb-item{cursor:pointer}.monaco-editor .diff-hidden-lines div.breadcrumb-item:hover{color:var(--vscode-editorLink-activeForeground)}.monaco-editor .movedModified,.monaco-editor .movedOriginal{border:2px solid var(--vscode-diffEditor-move-border)}.monaco-editor .movedModified.currentMove,.monaco-editor .movedOriginal.currentMove{border:2px solid var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path.currentMove{stroke:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path{pointer-events:visiblestroke}.monaco-diff-editor .moved-blocks-lines .arrow{fill:var(--vscode-diffEditor-move-border)}.monaco-diff-editor .moved-blocks-lines .arrow.currentMove{fill:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines .arrow-rectangle{fill:var(--vscode-editor-background)}.monaco-diff-editor .moved-blocks-lines{position:absolute;pointer-events:none}.monaco-diff-editor .moved-blocks-lines path{fill:none;stroke:var(--vscode-diffEditor-move-border);stroke-width:2}.monaco-editor .char-delete.diff-range-empty{margin-left:-1px;border-left:3px solid var(--vscode-diffEditor-removedTextBackground)}.monaco-editor .char-insert.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-insertedTextBackground)}.monaco-editor .fold-unchanged{cursor:pointer}.monaco-diff-editor .diff-moved-code-block{display:flex;justify-content:flex-end;margin-top:-4px}.monaco-diff-editor .diff-moved-code-block .action-bar .action-label.codicon{width:12px;height:12px;font-size:12px}.monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor .diffOverview .diffViewport{z-index:10}.monaco-diff-editor.vs .diffOverview{background:rgba(0,0,0,.03)}.monaco-diff-editor.vs-dark .diffOverview{background:hsla(0,0%,100%,.01)}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar{background:transparent}.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-light .scrollbar{background:none}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:hsla(0,0%,67.1%,.4)}.modified-in-monaco-diff-editor.hc-black .slider.active,.modified-in-monaco-diff-editor.hc-light .slider.active{background:none}.monaco-diff-editor .delete-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-editor .insert-sign{font-size:11px!important;opacity:.7!important;display:flex!important;align-items:center}.monaco-diff-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-diff-editor.hc-light .delete-sign,.monaco-diff-editor.hc-light .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-editor.hc-black .insert-sign,.monaco-editor.hc-light .delete-sign,.monaco-editor.hc-light .insert-sign{opacity:1}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .inline-deleted-margin-view-zone{text-align:right}.monaco-editor .arrow-revert-change{z-index:10;position:absolute}.monaco-editor .arrow-revert-change:hover{cursor:pointer}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}.monaco-diff-editor .char-insert,.monaco-editor .char-insert{background-color:var(--vscode-diffEditor-insertedTextBackground)}.monaco-diff-editor .line-insert,.monaco-editor .line-insert{background-color:var(--vscode-diffEditor-insertedLineBackground,var(--vscode-diffEditor-insertedTextBackground))}.monaco-editor .char-insert,.monaco-editor .line-insert{box-sizing:border-box;border:1px solid var(--vscode-diffEditor-insertedTextBorder)}.monaco-editor.hc-black .char-insert,.monaco-editor.hc-black .line-insert,.monaco-editor.hc-light .char-insert,.monaco-editor.hc-light .line-insert{border-style:dashed}.monaco-editor .char-delete,.monaco-editor .line-delete{box-sizing:border-box;border:1px solid var(--vscode-diffEditor-removedTextBorder)}.monaco-editor.hc-black .char-delete,.monaco-editor.hc-black .line-delete,.monaco-editor.hc-light .char-delete,.monaco-editor.hc-light .line-delete{border-style:dashed}.monaco-diff-editor .gutter-insert,.monaco-editor .gutter-insert,.monaco-editor .inline-added-margin-view-zone{background-color:var(--vscode-diffEditorGutter-insertedLineBackground,var(--vscode-diffEditor-insertedLineBackground),var(--vscode-diffEditor-insertedTextBackground))}.monaco-diff-editor .char-delete,.monaco-editor .char-delete{background-color:var(--vscode-diffEditor-removedTextBackground)}.monaco-diff-editor .line-delete,.monaco-editor .line-delete{background-color:var(--vscode-diffEditor-removedLineBackground,var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor .gutter-delete,.monaco-editor .gutter-delete,.monaco-editor .inline-deleted-margin-view-zone{background-color:var(--vscode-diffEditorGutter-removedLineBackground,var(--vscode-diffEditor-removedLineBackground),var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor.side-by-side .editor.modified{box-shadow:-6px 0 5px -5px var(--vscode-scrollbar-shadow);border-left:1px solid var(--vscode-diffEditor-border)}.monaco-diff-editor .diffViewport{background:var(--vscode-scrollbarSlider-background)}.monaco-diff-editor .diffViewport:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-diff-editor .diffViewport:active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-diff-editor .diff-review-line-number{text-align:right;display:inline-block;color:var(--vscode-editorLineNumber-foreground)}.monaco-diff-editor .diff-review{position:absolute;user-select:none;-webkit-user-select:none;z-index:99}.monaco-diff-editor .diff-review-summary{padding-left:10px}.monaco-diff-editor .diff-review-shadow{position:absolute;box-shadow:var(--vscode-scrollbar-shadow) 0 -6px 6px -6px inset}.monaco-diff-editor .diff-review-row{white-space:pre}.monaco-diff-editor .diff-review-table{display:table;min-width:100%}.monaco-diff-editor .diff-review-row{display:table-row;width:100%}.monaco-diff-editor .diff-review-spacer{display:inline-block;width:10px;vertical-align:middle}.monaco-diff-editor .diff-review-spacer>.codicon{font-size:9px!important}.monaco-diff-editor .diff-review-actions{display:inline-block;position:absolute;right:10px;top:2px;z-index:100}.monaco-diff-editor .diff-review-actions .action-label{width:16px;height:16px;margin:2px 0}::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{position:relative;overflow:visible;-webkit-text-size-adjust:100%;color:var(--vscode-editor-foreground)}.monaco-editor,.monaco-editor-background{background-color:var(--vscode-editor-background)}.monaco-editor .rangeHighlight{background-color:var(--vscode-editor-rangeHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-rangeHighlightBorder)}.monaco-editor.hc-black .rangeHighlight,.monaco-editor.hc-light .rangeHighlight{border-style:dotted}.monaco-editor .symbolHighlight{background-color:var(--vscode-editor-symbolHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-symbolHighlightBorder)}.monaco-editor.hc-black .symbolHighlight,.monaco-editor.hc-light .symbolHighlight{border-style:dotted}.monaco-editor .overflow-guard{position:relative;overflow:hidden}.monaco-editor .view-overlays{position:absolute;top:0}.monaco-editor .squiggly-error{border-bottom:4px double var(--vscode-editorError-border)}.monaco-editor .squiggly-error:before{display:block;content:\"\";width:100%;height:100%;background:var(--vscode-editorError-background)}.monaco-editor .squiggly-warning{border-bottom:4px double var(--vscode-editorWarning-border)}.monaco-editor .squiggly-warning:before{display:block;content:\"\";width:100%;height:100%;background:var(--vscode-editorWarning-background)}.monaco-editor .squiggly-info{border-bottom:4px double var(--vscode-editorInfo-border)}.monaco-editor .squiggly-info:before{display:block;content:\"\";width:100%;height:100%;background:var(--vscode-editorInfo-background)}.monaco-editor .squiggly-hint{border-bottom:2px dotted var(--vscode-editorHint-border)}.monaco-editor.showUnused .squiggly-unnecessary{border-bottom:2px dashed var(--vscode-editorUnnecessaryCode-border)}.monaco-editor.showDeprecated .squiggly-inline-deprecated{text-decoration:line-through;text-decoration-color:var(--vscode-editor-foreground,inherit)}.monaco-editor .selection-anchor{background-color:#007acc;width:2px!important}.monaco-editor .bracket-match{box-sizing:border-box;background-color:var(--vscode-editorBracketMatch-background);border:1px solid var(--vscode-editorBracketMatch-border)}.monaco-editor .lightBulbWidget{display:flex;align-items:center;justify-content:center}.monaco-editor .lightBulbWidget:hover{cursor:pointer}.monaco-editor .lightBulbWidget.codicon-light-bulb{color:var(--vscode-editorLightBulb-foreground)}.monaco-editor .lightBulbWidget.codicon-lightbulb-autofix{color:var(--vscode-editorLightBulbAutoFix-foreground,var(--vscode-editorLightBulb-foreground))}.monaco-editor .lightBulbWidget:before{position:relative;z-index:2}.monaco-editor .lightBulbWidget:after{position:absolute;top:0;left:0;content:\"\";display:block;width:100%;height:100%;opacity:.3;background-color:var(--vscode-editor-background);z-index:1}.monaco-editor .codelens-decoration{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:nowrap;color:var(--vscode-editorCodeLens-foreground);line-height:var(--vscode-editorCodeLens-lineHeight);font-size:var(--vscode-editorCodeLens-fontSize);padding-right:calc(var(--vscode-editorCodeLens-fontSize)*0.5);font-feature-settings:var(--vscode-editorCodeLens-fontFeatureSettings);font-family:var(--vscode-editorCodeLens-fontFamily),var(--vscode-editorCodeLens-fontFamilyDefault)}.monaco-editor .codelens-decoration>a,.monaco-editor .codelens-decoration>span{user-select:none;-webkit-user-select:none;white-space:nowrap;vertical-align:sub}.monaco-editor .codelens-decoration>a{text-decoration:none}.monaco-editor .codelens-decoration>a:hover{cursor:pointer}.monaco-editor .codelens-decoration>a:hover,.monaco-editor .codelens-decoration>a:hover .codicon{color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .codelens-decoration .codicon{vertical-align:middle;color:currentColor!important;color:var(--vscode-editorCodeLens-foreground);line-height:var(--vscode-editorCodeLens-lineHeight);font-size:var(--vscode-editorCodeLens-fontSize)}.monaco-editor .codelens-decoration>a:hover .codicon:before{cursor:pointer}@keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}.monaco-editor .codelens-decoration.fadein{animation:fadein .1s linear}.colorpicker-widget{height:190px;user-select:none;-webkit-user-select:none}.colorpicker-color-decoration,.hc-light .colorpicker-color-decoration{border:.1em solid #000;box-sizing:border-box;margin:.1em .2em 0;width:.8em;height:.8em;line-height:.8em;display:inline-block;cursor:pointer}.hc-black .colorpicker-color-decoration,.vs-dark .colorpicker-color-decoration{border:.1em solid #eee}.colorpicker-header{display:flex;height:24px;position:relative;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;image-rendering:pixelated}.colorpicker-header .picked-color{width:240px;display:flex;align-items:center;justify-content:center;line-height:24px;cursor:pointer;color:#fff;flex:1;white-space:nowrap;overflow:hidden}.colorpicker-header .picked-color .picked-color-presentation{white-space:nowrap;margin-left:5px;margin-right:5px}.colorpicker-header .picked-color .codicon{color:inherit;font-size:14px}.colorpicker-header .picked-color.light{color:#000}.colorpicker-header .original-color{width:74px;z-index:inherit;cursor:pointer}.standalone-colorpicker{color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.colorpicker-header.standalone-colorpicker{border-bottom:none}.colorpicker-header .close-button{cursor:pointer;background-color:var(--vscode-editorHoverWidget-background);border-left:1px solid var(--vscode-editorHoverWidget-border)}.colorpicker-header .close-button-inner-div{width:100%;height:100%;text-align:center}.colorpicker-header .close-button-inner-div:hover{background-color:var(--vscode-toolbar-hoverBackground)}.colorpicker-header .close-icon{padding:3px}.colorpicker-body{display:flex;padding:8px;position:relative}.colorpicker-body .saturation-wrap{overflow:hidden;height:150px;position:relative;min-width:220px;flex:1}.colorpicker-body .saturation-box{height:150px;position:absolute}.colorpicker-body .saturation-selection{width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #fff;border-radius:100%;box-shadow:0 0 2px rgba(0,0,0,.8);position:absolute}.colorpicker-body .strip{width:25px;height:150px}.colorpicker-body .standalone-strip{width:25px;height:122px}.colorpicker-body .hue-strip{position:relative;margin-left:8px;cursor:grab;background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.colorpicker-body .opacity-strip{position:relative;margin-left:8px;cursor:grab;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;image-rendering:pixelated}.colorpicker-body .strip.grabbing{cursor:grabbing}.colorpicker-body .slider{position:absolute;top:0;left:-2px;width:calc(100% + 4px);height:4px;box-sizing:border-box;border:1px solid hsla(0,0%,100%,.71);box-shadow:0 0 1px rgba(0,0,0,.85)}.colorpicker-body .strip .overlay{height:150px;pointer-events:none}.colorpicker-body .standalone-strip .standalone-overlay{height:122px;pointer-events:none}.standalone-colorpicker-body{display:block;border:1px solid transparent;border-bottom:1px solid var(--vscode-editorHoverWidget-border);overflow:hidden}.colorpicker-body .insert-button{position:absolute;height:20px;width:58px;padding:0;right:8px;bottom:8px;background:var(--vscode-button-background);color:var(--vscode-button-foreground);border-radius:2px;border:none;cursor:pointer}.colorpicker-body .insert-button:hover{background:var(--vscode-button-hoverBackground)}.monaco-editor.hc-light .dnd-target,.monaco-editor.vs .dnd-target{border-right:2px dotted #000;color:#fff}.monaco-editor.vs-dark .dnd-target{border-right:2px dotted #aeafad;color:#51504f}.monaco-editor.hc-black .dnd-target{border-right:2px dotted #fff;color:#000}.monaco-editor.hc-black.mac.mouse-default .view-lines,.monaco-editor.hc-light.mac.mouse-default .view-lines,.monaco-editor.mouse-default .view-lines,.monaco-editor.vs-dark.mac.mouse-default .view-lines{cursor:default}.monaco-editor.hc-black.mac.mouse-copy .view-lines,.monaco-editor.hc-light.mac.mouse-copy .view-lines,.monaco-editor.mouse-copy .view-lines,.monaco-editor.vs-dark.mac.mouse-copy .view-lines{cursor:copy}.post-edit-widget{box-shadow:0 0 8px 2px var(--vscode-widget-shadow);border:1px solid var(--vscode-widget-border,transparent);border-radius:4px;background-color:var(--vscode-editorWidget-background);overflow:hidden}.post-edit-widget .monaco-button{padding:2px;border:none;border-radius:0}.post-edit-widget .monaco-button:hover{background-color:var(--vscode-button-secondaryHoverBackground)!important}.post-edit-widget .monaco-button .codicon{margin:0}.monaco-editor .findOptionsWidget{background-color:var(--vscode-editorWidget-background);color:var(--vscode-editorWidget-foreground);box-shadow:0 0 8px 2px var(--vscode-widget-shadow);border:2px solid var(--vscode-contrastBorder)}.monaco-editor .find-widget{position:absolute;z-index:35;height:33px;overflow:hidden;line-height:19px;transition:transform .2s linear;padding:0 4px;box-sizing:border-box;transform:translateY(calc(-100% - 10px));border-bottom-left-radius:4px;border-bottom-right-radius:4px}.monaco-workbench.reduce-motion .monaco-editor .find-widget{transition:transform 0ms linear}.monaco-editor .find-widget textarea{margin:0}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled>.replace-part{display:flex}.monaco-editor .find-widget.visible{transform:translateY(0)}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-editor .find-widget .monaco-inputbox .input{background-color:transparent;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{margin:3px 25px 0 17px;font-size:12px;display:flex}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-top:2px;padding-bottom:2px}.monaco-editor .find-widget>.find-part .find-actions,.monaco-editor .find-widget>.replace-part .replace-actions{height:25px;display:flex;align-items:center}.monaco-editor .find-widget .monaco-findInput{vertical-align:middle;display:flex;flex:1}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{display:flex;flex:initial;margin:0 0 0 3px;padding:2px 0 0 2px;height:25px;vertical-align:middle;box-sizing:border-box;text-align:center;line-height:23px}.monaco-editor .find-widget .button{width:16px;height:16px;padding:3px;border-radius:5px;flex:initial;margin-left:3px;background-position:50%;background-repeat:no-repeat;cursor:pointer;display:flex;align-items:center;justify-content:center}.monaco-editor .find-widget .codicon-find-selection{width:22px;height:22px;padding:3px;border-radius:5px}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{width:auto;padding:1px 6px;top:-1px}.monaco-editor .find-widget .button.toggle{position:absolute;top:0;left:3px;width:18px;height:100%;border-radius:0;box-sizing:border-box}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .disabled{color:var(--vscode-disabledForeground);cursor:default}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{position:relative;display:flex;vertical-align:middle;flex:auto;flex-grow:0;flex-shrink:0}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.monaco-editor .find-widget.reduced-find-widget .matchesCount{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px!important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px!important}.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .findMatch{animation-duration:0;animation-name:inherit!important}.monaco-editor .find-widget .monaco-sash{left:0!important}.monaco-editor.hc-black .find-widget .button:before{position:relative;top:1px;left:2px}.monaco-editor .find-widget>.button.codicon-widget-close{position:absolute;top:5px;right:4px}.monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{cursor:pointer;opacity:0;transition:opacity .5s;display:flex;align-items:center;justify-content:center;font-size:140%;margin-left:2px}.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{transition:initial}.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons,.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon.codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays:hover .codicon{opacity:1}.monaco-editor .inline-folded:after{color:grey;margin:.1em .2em 0;content:\"\\22EF\";display:inline;line-height:1em;cursor:pointer}.monaco-editor .folded-background{background-color:var(--vscode-editor-foldBackground)}.monaco-editor .cldr.codicon.codicon-folding-collapsed,.monaco-editor .cldr.codicon.codicon-folding-expanded,.monaco-editor .cldr.codicon.codicon-folding-manual-collapsed,.monaco-editor .cldr.codicon.codicon-folding-manual-expanded{color:var(--vscode-editorGutter-foldingControlForeground)!important}.monaco-editor .peekview-widget .head .peekview-title .severity-icon{display:inline-block;vertical-align:text-top;margin-right:4px}.monaco-editor .marker-widget{text-overflow:ellipsis;white-space:nowrap}.monaco-editor .marker-widget>.stale{opacity:.6;font-style:italic}.monaco-editor .marker-widget .title{display:inline-block;padding-right:5px}.monaco-editor .marker-widget .descriptioncontainer{position:absolute;white-space:pre;user-select:text;-webkit-user-select:text;padding:8px 12px 0 20px}.monaco-editor .marker-widget .descriptioncontainer .message{display:flex;flex-direction:column}.monaco-editor .marker-widget .descriptioncontainer .message .details{padding-left:6px}.monaco-editor .marker-widget .descriptioncontainer .message .source,.monaco-editor .marker-widget .descriptioncontainer .message span.code{opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link{opacity:.6;color:inherit}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before{content:\"(\"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after{content:\")\"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link>span{text-decoration:underline;border-bottom:1px solid transparent;text-underline-position:under;color:var(--vscode-textLink-foreground);color:var(--vscode-textLink-activeForeground)}.monaco-editor .marker-widget .descriptioncontainer .filename{cursor:pointer}.monaco-editor .goto-definition-link{text-decoration:underline;cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget{border-top-width:1px;border-bottom-width:1px}.monaco-editor .reference-zone-widget .inline{display:inline-block;vertical-align:top}.monaco-editor .reference-zone-widget .messages{height:100%;width:100%;text-align:center;padding:3em 0}.monaco-editor .reference-zone-widget .ref-tree{line-height:23px;background-color:var(--vscode-peekViewResult-background);color:var(--vscode-peekViewResult-lineForeground)}.monaco-editor .reference-zone-widget .ref-tree .reference{text-overflow:ellipsis;overflow:hidden}.monaco-editor .reference-zone-widget .ref-tree .reference-file{display:inline-flex;width:100%;height:100%;color:var(--vscode-peekViewResult-fileForeground)}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file{color:inherit!important}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows>.monaco-list-row.selected:not(.highlighted){background-color:var(--vscode-peekViewResult-selectionBackground);color:var(--vscode-peekViewResult-selectionForeground)!important}.monaco-editor .reference-zone-widget .ref-tree .reference-file .count{margin-right:12px;margin-left:auto}.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight{background-color:var(--vscode-peekViewResult-matchHighlightBackground)}.monaco-editor .reference-zone-widget .preview .reference-decoration{background-color:var(--vscode-peekViewEditor-matchHighlightBackground);border:2px solid var(--vscode-peekViewEditor-matchHighlightBorder);box-sizing:border-box}.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input,.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background{background-color:var(--vscode-peekViewEditor-background)}.monaco-editor .reference-zone-widget .preview .monaco-editor .margin{background-color:var(--vscode-peekViewEditorGutter-background)}.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file,.monaco-editor.hc-light .reference-zone-widget .ref-tree .reference-file{font-weight:700}.monaco-editor.hc-black .reference-zone-widget .ref-tree .referenceMatch .highlight,.monaco-editor.hc-light .reference-zone-widget .ref-tree .referenceMatch .highlight{border:1px dotted var(--vscode-contrastActiveBorder,transparent);box-sizing:border-box}.monaco-editor .hoverHighlight{background-color:var(--vscode-editor-hoverHighlightBackground)}.monaco-editor .monaco-hover{color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);border-radius:3px}.monaco-editor .monaco-hover a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .monaco-hover .hover-row .actions{background-color:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-editor .monaco-hover code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor.vs .valueSetReplacement{outline:solid 2px var(--vscode-editorBracketMatch-border)}.monaco-editor .suggest-preview-additional-widget{white-space:nowrap}.monaco-editor .suggest-preview-additional-widget .content-spacer{color:transparent;white-space:pre}.monaco-editor .suggest-preview-additional-widget .button{display:inline-block;cursor:pointer;text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-hidden{opacity:0;font-size:0}.monaco-editor .ghost-text-decoration,.monaco-editor .suggest-preview-text .ghost-text{font-style:italic}.monaco-editor .inline-completion-text-to-replace{text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-decoration,.monaco-editor .ghost-text-decoration-preview,.monaco-editor .suggest-preview-text .ghost-text{color:var(--vscode-editorGhostText-foreground)!important;background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border)}.monaco-editor .inlineSuggestionsHints.withBorder{z-index:39;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .inlineSuggestionsHints a,.monaco-editor .inlineSuggestionsHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineSuggestionsHints .keybinding{display:flex;margin-left:4px;opacity:.6}.monaco-editor .inlineSuggestionsHints .keybinding .monaco-keybinding-key{font-size:8px;padding:2px 3px}.monaco-editor .inlineSuggestionsHints .availableSuggestionCount a{display:flex;min-width:19px;justify-content:center}.monaco-editor .inlineSuggestionStatusBarItemLabel{margin-right:2px}.inline-editor-progress-decoration{display:inline-block;width:1em;height:1em}.inline-progress-widget{display:flex!important;justify-content:center;align-items:center}.inline-progress-widget .icon{font-size:80%!important}.inline-progress-widget:hover .icon{font-size:90%!important;animation:none}.inline-progress-widget:hover .icon:before{content:\"\\ea76\"}.monaco-editor .linked-editing-decoration{background-color:var(--vscode-editor-linkedEditingBackground);min-width:1px}.monaco-editor .detected-link,.monaco-editor .detected-link-active{text-decoration:underline;text-underline-position:under}.monaco-editor .detected-link-active{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .rendered-markdown kbd{background-color:var(--vscode-keybindingLabel-background);color:var(--vscode-keybindingLabel-foreground);border-radius:3px;border:1px solid var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);vertical-align:middle;padding:1px 3px}.monaco-editor .monaco-editor-overlaymessage{padding-bottom:8px;z-index:10000}.monaco-editor .monaco-editor-overlaymessage.below{padding-bottom:0;padding-top:8px;z-index:10000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.monaco-editor .monaco-editor-overlaymessage.fadeIn{animation:fadeIn .15s ease-out}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.monaco-editor .monaco-editor-overlaymessage.fadeOut{animation:fadeOut .1s ease-out}.monaco-editor .monaco-editor-overlaymessage .message{padding:2px 4px;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-inputValidation-infoBorder);border-radius:3px}.monaco-editor .monaco-editor-overlaymessage .message p{margin-block:0}.monaco-editor .monaco-editor-overlaymessage .message a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-editor-overlaymessage .message a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor.hc-black .monaco-editor-overlaymessage .message,.monaco-editor.hc-light .monaco-editor-overlaymessage .message{border-width:2px}.monaco-editor .monaco-editor-overlaymessage .anchor{width:0!important;height:0!important;z-index:1000;border:8px solid transparent;position:absolute;left:2px}.monaco-editor .monaco-editor-overlaymessage .anchor.top{border-bottom-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage .anchor.below{border-top-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage.below .anchor.below,.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top{display:none}.monaco-editor .monaco-editor-overlaymessage.below .anchor.top{display:inherit;top:-8px}.monaco-editor .parameter-hints-widget{z-index:39;display:flex;flex-direction:column;line-height:1.5em;cursor:default;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.hc-black .monaco-editor .parameter-hints-widget,.hc-light .monaco-editor .parameter-hints-widget{border-width:2px}.monaco-editor .parameter-hints-widget>.phwrapper{max-width:440px;display:flex;flex-direction:row}.monaco-editor .parameter-hints-widget.multiple{min-height:3.3em;padding:0}.monaco-editor .parameter-hints-widget.multiple .body:before{content:\"\";display:block;height:100%;position:absolute;opacity:.5;border-left:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .parameter-hints-widget p,.monaco-editor .parameter-hints-widget ul{margin:8px 0}.monaco-editor .parameter-hints-widget .body,.monaco-editor .parameter-hints-widget .monaco-scrollable-element{display:flex;flex:1;flex-direction:column;min-height:100%}.monaco-editor .parameter-hints-widget .signature{padding:4px 5px;position:relative}.monaco-editor .parameter-hints-widget .signature.has-docs:after{content:\"\";display:block;position:absolute;left:0;width:100%;padding-top:4px;opacity:.5;border-bottom:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .parameter-hints-widget .docs{padding:0 10px 0 5px;white-space:pre-wrap}.monaco-editor .parameter-hints-widget .docs.empty{display:none}.monaco-editor .parameter-hints-widget .docs a{color:var(--vscode-textLink-foreground)}.monaco-editor .parameter-hints-widget .docs a:hover{color:var(--vscode-textLink-activeForeground);cursor:pointer}.monaco-editor .parameter-hints-widget .docs .markdown-docs{white-space:normal}.monaco-editor .parameter-hints-widget .docs code{font-family:var(--monaco-monospace-font);border-radius:3px;padding:0 .4em;background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .parameter-hints-widget .docs .code,.monaco-editor .parameter-hints-widget .docs .monaco-tokenized-source{white-space:pre-wrap}.monaco-editor .parameter-hints-widget .controls{display:none;flex-direction:column;align-items:center;min-width:22px;justify-content:flex-end}.monaco-editor .parameter-hints-widget.multiple .controls{display:flex;padding:0 2px}.monaco-editor .parameter-hints-widget.multiple .button{width:16px;height:16px;background-repeat:no-repeat;cursor:pointer}.monaco-editor .parameter-hints-widget .button.previous{bottom:24px}.monaco-editor .parameter-hints-widget .overloads{text-align:center;height:12px;line-height:12px;font-family:var(--monaco-monospace-font)}.monaco-editor .parameter-hints-widget .signature .parameter.active{color:var(--vscode-editorHoverWidget-highlightForeground);font-weight:700}.monaco-editor .parameter-hints-widget .documentation-parameter>.parameter{font-weight:700;margin-right:.5em}.monaco-editor .peekview-widget .head{box-sizing:border-box;display:flex;justify-content:space-between;flex-wrap:nowrap}.monaco-editor .peekview-widget .head .peekview-title{display:flex;align-items:baseline;font-size:13px;margin-left:20px;min-width:0;text-overflow:ellipsis;overflow:hidden}.monaco-editor .peekview-widget .head .peekview-title.clickable{cursor:pointer}.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty){font-size:.9em;margin-left:.5em}.monaco-editor .peekview-widget .head .peekview-title .dirname,.monaco-editor .peekview-widget .head .peekview-title .filename,.monaco-editor .peekview-widget .head .peekview-title .meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty):before{content:\"-\";padding:0 .3em}.monaco-editor .peekview-widget .head .peekview-actions{flex:1;text-align:right;padding-right:2px}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar{display:inline-block}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar,.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar>.actions-container{height:100%}.monaco-editor .peekview-widget>.body{border-top:1px solid;position:relative}.monaco-editor .peekview-widget .head .peekview-title .codicon{margin-right:4px;align-self:center}.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon{color:inherit!important}.monaco-editor .rename-box{z-index:100;color:inherit;border-radius:4px}.monaco-editor .rename-box.preview{padding:4px 4px 0}.monaco-editor .rename-box .rename-input{padding:3px;border-radius:2px}.monaco-editor .rename-box .rename-label{display:none;opacity:.8}.monaco-editor .rename-box.preview .rename-label{display:inherit}.monaco-editor .snippet-placeholder{min-width:2px;outline-style:solid;outline-width:1px;background-color:var(--vscode-editor-snippetTabstopHighlightBackground,transparent);outline-color:var(--vscode-editor-snippetTabstopHighlightBorder,transparent)}.monaco-editor .finish-snippet-placeholder{outline-style:solid;outline-width:1px;background-color:var(--vscode-editor-snippetFinalTabstopHighlightBackground,transparent);outline-color:var(--vscode-editor-snippetFinalTabstopHighlightBorder,transparent)}.monaco-editor .sticky-widget{overflow:hidden}.monaco-editor .sticky-widget-line-numbers{float:left;background-color:inherit}.monaco-editor .sticky-widget-lines-scrollable{display:inline-block;position:absolute;overflow:hidden;width:var(--vscode-editorStickyScroll-scrollableWidth);background-color:inherit}.monaco-editor .sticky-widget-lines{position:absolute;background-color:inherit}.monaco-editor .sticky-line-content,.monaco-editor .sticky-line-number{color:var(--vscode-editorLineNumber-foreground);white-space:nowrap;display:inline-block;position:absolute;background-color:inherit}.monaco-editor .sticky-line-number .codicon{float:right;transition:var(--vscode-editorStickyScroll-foldingOpacityTransition)}.monaco-editor .sticky-line-content{width:var(--vscode-editorStickyScroll-scrollableWidth);background-color:inherit;white-space:nowrap}.monaco-editor .sticky-line-number-inner{display:block;text-align:right}.monaco-editor.hc-black .sticky-widget,.monaco-editor.hc-light .sticky-widget{border-bottom:1px solid var(--vscode-contrastBorder)}.monaco-editor .sticky-line-content:hover{background-color:var(--vscode-editorStickyScrollHover-background);cursor:pointer}.monaco-editor .sticky-widget{width:100%;box-shadow:var(--vscode-scrollbar-shadow) 0 3px 2px -2px;z-index:4;background-color:var(--vscode-editorStickyScroll-background)}.monaco-editor .sticky-widget.peek{background-color:var(--vscode-peekViewEditorStickyScroll-background)}.monaco-editor .suggest-widget{width:430px;z-index:40;display:flex;flex-direction:column;border-radius:3px}.monaco-editor .suggest-widget.message{flex-direction:row;align-items:center}.monaco-editor .suggest-details,.monaco-editor .suggest-widget{flex:0 1 auto;width:100%;border:1px solid var(--vscode-editorSuggestWidget-border);background-color:var(--vscode-editorSuggestWidget-background)}.monaco-editor.hc-black .suggest-details,.monaco-editor.hc-black .suggest-widget,.monaco-editor.hc-light .suggest-details,.monaco-editor.hc-light .suggest-widget{border-width:2px}.monaco-editor .suggest-widget .suggest-status-bar{box-sizing:border-box;display:none;flex-flow:row nowrap;justify-content:space-between;width:100%;font-size:80%;padding:0 4px;border-top:1px solid var(--vscode-editorSuggestWidget-border);overflow:hidden}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar{display:flex}.monaco-editor .suggest-widget .suggest-status-bar .left{padding-right:8px}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label{color:var(--vscode-editorSuggestWidgetStatus-foreground)}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label{margin-right:0}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label:after{content:\", \";margin-right:.3em}.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label{width:100%}.monaco-editor .suggest-widget>.message{padding-left:22px}.monaco-editor .suggest-widget>.tree{height:100%;width:100%}.monaco-editor .suggest-widget .monaco-list{user-select:none;-webkit-user-select:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row{display:flex;-mox-box-sizing:border-box;box-sizing:border-box;padding-right:10px;background-repeat:no-repeat;background-position:2px 2px;white-space:nowrap;cursor:pointer;touch-action:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused{color:var(--vscode-editorSuggestWidget-selectedForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .codicon{color:var(--vscode-editorSuggestWidget-selectedIconForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents{flex:1;height:100%;overflow:hidden;padding-left:2px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main{display:flex;overflow:hidden;text-overflow:ellipsis;white-space:pre;justify-content:space-between}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{display:flex}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused)>.contents>.main .monaco-icon-label{color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight{font-weight:700}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-highlightForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-focusHighlightForeground)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:before{color:inherit;opacity:1;font-size:14px;cursor:pointer}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close{position:absolute;top:6px;right:2px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover{opacity:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{opacity:.7}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label{overflow:hidden;text-overflow:ellipsis;opacity:.6}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label{margin-left:12px;opacity:.4;font-size:85%;line-height:normal;text-overflow:ellipsis;overflow:hidden;align-self:center}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{font-size:85%;margin-left:1.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{display:none}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right.can-expand-details>.details-label{width:calc(100% - 26px)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left{flex-shrink:1;flex-grow:1;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label{flex-shrink:0}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label{max-width:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label{flex-shrink:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{overflow:hidden;flex-shrink:4;max-width:70%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:inline-block;position:absolute;right:10px;width:18px;height:18px;visibility:hidden}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none!important}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:inline-block}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore{visibility:visible}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated{opacity:.66;text-decoration:unset}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container{text-decoration:line-through}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label:before{height:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon{display:block;height:16px;width:16px;margin-left:2px;background-repeat:no-repeat;background-size:80%;background-position:50%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon{display:flex;align-items:center;margin-right:4px}.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon:before{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan{margin:0 0 0 .3em;border:.1em solid #000;width:.7em;height:.7em;display:inline-block}.monaco-editor .suggest-details-container{z-index:41}.monaco-editor .suggest-details{display:flex;flex-direction:column;cursor:default;color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-details.focused{border-color:var(--vscode-focusBorder)}.monaco-editor .suggest-details a{color:var(--vscode-textLink-foreground)}.monaco-editor .suggest-details a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .suggest-details code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .suggest-details.no-docs{display:none}.monaco-editor .suggest-details>.monaco-scrollable-element{flex:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body{box-sizing:border-box;height:100%;width:100%}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type{flex:2;overflow:hidden;text-overflow:ellipsis;opacity:.7;white-space:pre;margin:0 24px 0 0;padding:4px 0 12px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap{white-space:normal;word-break:break-all}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs{margin:0;padding:4px 5px;white-space:pre-wrap}.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs{margin-right:24px;overflow:hidden}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs{padding:0;white-space:normal;min-height:calc(1rem + 8px)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty){padding:4px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child{margin-top:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child{margin-bottom:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .monaco-tokenized-source{white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code{white-space:pre-wrap;word-wrap:break-word}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon{vertical-align:sub}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty{display:none}.monaco-editor .suggest-details code{border-radius:3px;padding:0 .4em}.monaco-editor .suggest-details ol,.monaco-editor .suggest-details ul{padding-left:20px}.monaco-editor .suggest-details p code{font-family:var(--monaco-monospace-font)}.monaco-editor .codicon.codicon-symbol-array,.monaco-workbench .codicon.codicon-symbol-array{color:var(--vscode-symbolIcon-arrayForeground)}.monaco-editor .codicon.codicon-symbol-boolean,.monaco-workbench .codicon.codicon-symbol-boolean{color:var(--vscode-symbolIcon-booleanForeground)}.monaco-editor .codicon.codicon-symbol-class,.monaco-workbench .codicon.codicon-symbol-class{color:var(--vscode-symbolIcon-classForeground)}.monaco-editor .codicon.codicon-symbol-method,.monaco-workbench .codicon.codicon-symbol-method{color:var(--vscode-symbolIcon-methodForeground)}.monaco-editor .codicon.codicon-symbol-color,.monaco-workbench .codicon.codicon-symbol-color{color:var(--vscode-symbolIcon-colorForeground)}.monaco-editor .codicon.codicon-symbol-constant,.monaco-workbench .codicon.codicon-symbol-constant{color:var(--vscode-symbolIcon-constantForeground)}.monaco-editor .codicon.codicon-symbol-constructor,.monaco-workbench .codicon.codicon-symbol-constructor{color:var(--vscode-symbolIcon-constructorForeground)}.monaco-editor .codicon.codicon-symbol-enum,.monaco-editor .codicon.codicon-symbol-value,.monaco-workbench .codicon.codicon-symbol-enum,.monaco-workbench .codicon.codicon-symbol-value{color:var(--vscode-symbolIcon-enumeratorForeground)}.monaco-editor .codicon.codicon-symbol-enum-member,.monaco-workbench .codicon.codicon-symbol-enum-member{color:var(--vscode-symbolIcon-enumeratorMemberForeground)}.monaco-editor .codicon.codicon-symbol-event,.monaco-workbench .codicon.codicon-symbol-event{color:var(--vscode-symbolIcon-eventForeground)}.monaco-editor .codicon.codicon-symbol-field,.monaco-workbench .codicon.codicon-symbol-field{color:var(--vscode-symbolIcon-fieldForeground)}.monaco-editor .codicon.codicon-symbol-file,.monaco-workbench .codicon.codicon-symbol-file{color:var(--vscode-symbolIcon-fileForeground)}.monaco-editor .codicon.codicon-symbol-folder,.monaco-workbench .codicon.codicon-symbol-folder{color:var(--vscode-symbolIcon-folderForeground)}.monaco-editor .codicon.codicon-symbol-function,.monaco-workbench .codicon.codicon-symbol-function{color:var(--vscode-symbolIcon-functionForeground)}.monaco-editor .codicon.codicon-symbol-interface,.monaco-workbench .codicon.codicon-symbol-interface{color:var(--vscode-symbolIcon-interfaceForeground)}.monaco-editor .codicon.codicon-symbol-key,.monaco-workbench .codicon.codicon-symbol-key{color:var(--vscode-symbolIcon-keyForeground)}.monaco-editor .codicon.codicon-symbol-keyword,.monaco-workbench .codicon.codicon-symbol-keyword{color:var(--vscode-symbolIcon-keywordForeground)}.monaco-editor .codicon.codicon-symbol-module,.monaco-workbench .codicon.codicon-symbol-module{color:var(--vscode-symbolIcon-moduleForeground)}.monaco-editor .codicon.codicon-symbol-namespace,.monaco-workbench .codicon.codicon-symbol-namespace{color:var(--vscode-symbolIcon-namespaceForeground)}.monaco-editor .codicon.codicon-symbol-null,.monaco-workbench .codicon.codicon-symbol-null{color:var(--vscode-symbolIcon-nullForeground)}.monaco-editor .codicon.codicon-symbol-number,.monaco-workbench .codicon.codicon-symbol-number{color:var(--vscode-symbolIcon-numberForeground)}.monaco-editor .codicon.codicon-symbol-object,.monaco-workbench .codicon.codicon-symbol-object{color:var(--vscode-symbolIcon-objectForeground)}.monaco-editor .codicon.codicon-symbol-operator,.monaco-workbench .codicon.codicon-symbol-operator{color:var(--vscode-symbolIcon-operatorForeground)}.monaco-editor .codicon.codicon-symbol-package,.monaco-workbench .codicon.codicon-symbol-package{color:var(--vscode-symbolIcon-packageForeground)}.monaco-editor .codicon.codicon-symbol-property,.monaco-workbench .codicon.codicon-symbol-property{color:var(--vscode-symbolIcon-propertyForeground)}.monaco-editor .codicon.codicon-symbol-reference,.monaco-workbench .codicon.codicon-symbol-reference{color:var(--vscode-symbolIcon-referenceForeground)}.monaco-editor .codicon.codicon-symbol-snippet,.monaco-workbench .codicon.codicon-symbol-snippet{color:var(--vscode-symbolIcon-snippetForeground)}.monaco-editor .codicon.codicon-symbol-string,.monaco-workbench .codicon.codicon-symbol-string{color:var(--vscode-symbolIcon-stringForeground)}.monaco-editor .codicon.codicon-symbol-struct,.monaco-workbench .codicon.codicon-symbol-struct{color:var(--vscode-symbolIcon-structForeground)}.monaco-editor .codicon.codicon-symbol-text,.monaco-workbench .codicon.codicon-symbol-text{color:var(--vscode-symbolIcon-textForeground)}.monaco-editor .codicon.codicon-symbol-type-parameter,.monaco-workbench .codicon.codicon-symbol-type-parameter{color:var(--vscode-symbolIcon-typeParameterForeground)}.monaco-editor .codicon.codicon-symbol-unit,.monaco-workbench .codicon.codicon-symbol-unit{color:var(--vscode-symbolIcon-unitForeground)}.monaco-editor .codicon.codicon-symbol-variable,.monaco-workbench .codicon.codicon-symbol-variable{color:var(--vscode-symbolIcon-variableForeground)}.editor-banner{box-sizing:border-box;cursor:default;width:100%;font-size:12px;display:flex;overflow:visible;height:26px;background:var(--vscode-banner-background)}.editor-banner .icon-container{display:flex;flex-shrink:0;align-items:center;padding:0 6px 0 10px}.editor-banner .icon-container.custom-icon{background-repeat:no-repeat;background-position:50%;background-size:16px;width:16px;padding:0;margin:0 6px 0 10px}.editor-banner .message-container{display:flex;align-items:center;line-height:26px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.editor-banner .message-container p{margin-block-start:0;margin-block-end:0}.editor-banner .message-actions-container{flex-grow:1;flex-shrink:0;line-height:26px;margin:0 4px}.editor-banner .message-actions-container a.monaco-button{width:inherit;margin:2px 8px;padding:0 12px}.editor-banner .message-actions-container a{padding:3px;margin-left:12px;text-decoration:underline}.editor-banner .action-container{padding:0 10px 0 6px}.editor-banner{background-color:var(--vscode-banner-background)}.editor-banner,.editor-banner .action-container .codicon,.editor-banner .message-actions-container .monaco-link{color:var(--vscode-banner-foreground)}.editor-banner .icon-container .codicon{color:var(--vscode-banner-iconForeground)}.monaco-editor .unicode-highlight{border:1px solid var(--vscode-editorUnicodeHighlight-border);background-color:var(--vscode-editorUnicodeHighlight-background);box-sizing:border-box}.monaco-editor .focused .selectionHighlight{background-color:var(--vscode-editor-selectionHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-selectionHighlightBorder)}.monaco-editor.hc-black .focused .selectionHighlight,.monaco-editor.hc-light .focused .selectionHighlight{border-style:dotted}.monaco-editor .wordHighlight{background-color:var(--vscode-editor-wordHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightBorder)}.monaco-editor.hc-black .wordHighlight,.monaco-editor.hc-light .wordHighlight{border-style:dotted}.monaco-editor .wordHighlightStrong{background-color:var(--vscode-editor-wordHighlightStrongBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightStrongBorder)}.monaco-editor.hc-black .wordHighlightStrong,.monaco-editor.hc-light .wordHighlightStrong{border-style:dotted}.monaco-editor .wordHighlightText{background-color:var(--vscode-editor-wordHighlightTextBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightTextBorder)}.monaco-editor.hc-black .wordHighlightText,.monaco-editor.hc-light .wordHighlightText{border-style:dotted}.monaco-editor .zone-widget{position:absolute;z-index:10}.monaco-editor .zone-widget .zone-widget-container{border-top-style:solid;border-bottom-style:solid;border-top-width:0;border-bottom-width:0;position:relative}.monaco-editor .iPadShowKeyboard{width:58px;min-width:0;height:36px;min-height:0;margin:0;padding:0;position:absolute;resize:none;overflow:hidden;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzYgNC4wMUg0LjAwOFYzMi4wM2g0NC4wMjhWNC4wMXpNNC4wMDguMDA4QTQuMDAzIDQuMDAzIDAgMDAuMDA1IDQuMDFWMzIuMDNhNC4wMDMgNC4wMDMgMCAwMDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAwNC4wMDMtNC4wMDJWNC4wMUE0LjAwMyA0LjAwMyAwIDAwNDguMDM2LjAwOEg0LjAwOHpNOC4wMSA4LjAxM2g0LjAwM3Y0LjAwM0g4LjAxVjguMDEzem0xMi4wMDggMGgtNC4wMDJ2NC4wMDNoNC4wMDJWOC4wMTN6bTQuMDAzIDBoNC4wMDJ2NC4wMDNoLTQuMDAyVjguMDEzem0xMi4wMDggMGgtNC4wMDN2NC4wMDNoNC4wMDNWOC4wMTN6bTQuMDAyIDBoNC4wMDN2NC4wMDNINDAuMDNWOC4wMTN6bS0yNC4wMTUgOC4wMDVIOC4wMXY0LjAwM2g4LjAwNnYtNC4wMDN6bTQuMDAyIDBoNC4wMDN2NC4wMDNoLTQuMDAzdi00LjAwM3ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzdi00LjAwM3ptMTIuMDA4IDB2NC4wMDNoLTguMDA1di00LjAwM2g4LjAwNXptLTMyLjAyMSA4LjAwNUg4LjAxdjQuMDAzaDQuMDAzdi00LjAwM3ptNC4wMDMgMGgyMC4wMTN2NC4wMDNIMTYuMDE2di00LjAwM3ptMjguMDE4IDBINDAuMDN2NC4wMDNoNC4wMDN2LTQuMDAzeiIgZmlsbD0iIzQyNDI0MiIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAwIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+) 50% no-repeat;border:4px solid #f6f6f6;border-radius:4px}.monaco-editor.vs-dark .iPadShowKeyboard{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzYgNC4wMUg0LjAwOFYzMi4wM2g0NC4wMjhWNC4wMXpNNC4wMDguMDA4QTQuMDAzIDQuMDAzIDAgMDAuMDA1IDQuMDFWMzIuMDNhNC4wMDMgNC4wMDMgMCAwMDQuMDAzIDQuMDAyaDQ0LjAyOGE0LjAwMyA0LjAwMyAwIDAwNC4wMDMtNC4wMDJWNC4wMUE0LjAwMyA0LjAwMyAwIDAwNDguMDM2LjAwOEg0LjAwOHpNOC4wMSA4LjAxM2g0LjAwM3Y0LjAwM0g4LjAxVjguMDEzem0xMi4wMDggMGgtNC4wMDJ2NC4wMDNoNC4wMDJWOC4wMTN6bTQuMDAzIDBoNC4wMDJ2NC4wMDNoLTQuMDAyVjguMDEzem0xMi4wMDggMGgtNC4wMDN2NC4wMDNoNC4wMDNWOC4wMTN6bTQuMDAyIDBoNC4wMDN2NC4wMDNINDAuMDNWOC4wMTN6bS0yNC4wMTUgOC4wMDVIOC4wMXY0LjAwM2g4LjAwNnYtNC4wMDN6bTQuMDAyIDBoNC4wMDN2NC4wMDNoLTQuMDAzdi00LjAwM3ptMTIuMDA4IDBoLTQuMDAzdjQuMDAzaDQuMDAzdi00LjAwM3ptMTIuMDA4IDB2NC4wMDNoLTguMDA1di00LjAwM2g4LjAwNXptLTMyLjAyMSA4LjAwNUg4LjAxdjQuMDAzaDQuMDAzdi00LjAwM3ptNC4wMDMgMGgyMC4wMTN2NC4wMDNIMTYuMDE2di00LjAwM3ptMjguMDE4IDBINDAuMDN2NC4wMDNoNC4wMDN2LTQuMDAzeiIgZmlsbD0iI0M1QzVDNSIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAwIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUzdjM2SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+) 50% no-repeat;border:4px solid #252526}.monaco-editor .tokens-inspect-widget{z-index:50;user-select:text;-webkit-user-select:text;padding:10px;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor.hc-black .tokens-inspect-widget,.monaco-editor.hc-light .tokens-inspect-widget{border-width:2px}.monaco-editor .tokens-inspect-widget .tokens-inspect-separator{height:1px;border:0;background-color:var(--vscode-editorHoverWidget-border)}.monaco-editor .tokens-inspect-widget .tm-token{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget .tm-token-length{font-weight:400;font-size:60%;float:right}.monaco-editor .tokens-inspect-widget .tm-metadata-table{width:100%}.monaco-editor .tokens-inspect-widget .tm-metadata-value{font-family:var(--monaco-monospace-font);text-align:right}.monaco-editor .tokens-inspect-widget .tm-token-type{font-family:var(--monaco-monospace-font)}.quick-input-widget{font-size:13px}.quick-input-widget .monaco-highlighted-label .highlight{color:#0066bf}.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight{color:#9dddff}.vs-dark .quick-input-widget .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .quick-input-widget .monaco-highlighted-label .highlight{color:#f38518}.hc-light .quick-input-widget .monaco-highlighted-label .highlight{color:#0f4a85}.monaco-keybinding>.monaco-keybinding-key{background-color:hsla(0,0%,86.7%,.4);border:1px solid hsla(0,0%,80%,.4);border-bottom-color:hsla(0,0%,73.3%,.4);box-shadow:inset 0 -1px 0 hsla(0,0%,73.3%,.4);color:#555}.hc-black .monaco-keybinding>.monaco-keybinding-key{background-color:transparent;border:1px solid #6fc3df;box-shadow:none;color:#fff}.hc-light .monaco-keybinding>.monaco-keybinding-key{background-color:transparent;border:1px solid #0f4a85;box-shadow:none;color:#292929}.vs-dark .monaco-keybinding>.monaco-keybinding-key{background-color:hsla(0,0%,50.2%,.17);border:1px solid rgba(51,51,51,.6);border-bottom-color:rgba(68,68,68,.6);box-shadow:inset 0 -1px 0 rgba(68,68,68,.6);color:#ccc}.monaco-editor{font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif;--monaco-monospace-font:\"SF Mono\",Monaco,Menlo,Consolas,\"Ubuntu Mono\",\"Liberation Mono\",\"DejaVu Sans Mono\",\"Courier New\",monospace}.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.hc-light .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{position:absolute!important;top:0;height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%)}.action-widget{font-size:13px;border-radius:0;min-width:160px;max-width:80vw;z-index:40;display:block;width:100%;border:1px solid var(--vscode-editorWidget-border)!important;border-radius:2px;background-color:var(--vscode-editorWidget-background);color:var(--vscode-editorWidget-foreground)}.context-view-block{z-index:-1}.context-view-block,.context-view-pointerBlock{position:fixed;cursor:auto;left:0;top:0;width:100%;height:100%}.context-view-pointerBlock{z-index:2}.action-widget .monaco-list{user-select:none;-webkit-user-select:none;border:0!important}.action-widget .monaco-list:focus:before{outline:0!important}.action-widget .monaco-list .monaco-scrollable-element{overflow:visible}.action-widget .monaco-list .monaco-list-row{padding:0 10px;white-space:nowrap;cursor:pointer;touch-action:none;width:100%}.action-widget .monaco-list .monaco-list-row.action.focused:not(.option-disabled){background-color:var(--vscode-quickInputList-focusBackground)!important;color:var(--vscode-quickInputList-focusForeground);outline:1px solid var(--vscode-menu-selectionBorder,transparent);outline-offset:-1px}.action-widget .monaco-list-row.group-header{color:var(--vscode-descriptionForeground)!important;font-weight:600}.action-widget .monaco-list .group-header,.action-widget .monaco-list .option-disabled,.action-widget .monaco-list .option-disabled .focused,.action-widget .monaco-list .option-disabled .focused:before,.action-widget .monaco-list .option-disabled:before{cursor:default!important;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background-color:transparent!important;outline:0 solid!important}.action-widget .monaco-list-row.action{display:flex;gap:6px;align-items:center}.action-widget .monaco-list-row.action.option-disabled,.action-widget .monaco-list-row.action.option-disabled .codicon,.action-widget .monaco-list:focus .monaco-list-row.focused.action.option-disabled,.action-widget .monaco-list:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused).option-disabled{color:var(--vscode-disabledForeground)}.action-widget .monaco-list-row.action:not(.option-disabled) .codicon{color:inherit}.action-widget .monaco-list-row.action .title{flex:1;overflow:hidden;text-overflow:ellipsis}.action-widget .action-widget-action-bar{background-color:var(--vscode-editorHoverWidget-statusBarBackground);border-top:1px solid var(--vscode-editorHoverWidget-border)}.action-widget .action-widget-action-bar:before{display:block;content:\"\";width:100%}.action-widget .action-widget-action-bar .actions-container{padding:0 8px}.action-widget-action-bar .action-label{color:var(--vscode-textLink-activeForeground);font-size:12px;line-height:22px;padding:0;pointer-events:all}.action-widget-action-bar .action-item{margin-right:16px;pointer-events:none}.action-widget-action-bar .action-label:hover{background-color:transparent!important}.monaco-action-bar .actions-container.highlight-toggled .action-label.checked{background:var(--vscode-actionBar-toggledBackground)!important}.monaco-action-bar .action-item.menu-entry .action-label.icon{width:16px;height:16px;background-repeat:no-repeat;background-position:50%;background-size:16px}.monaco-dropdown-with-default{display:flex!important;flex-direction:row;border-radius:5px}.monaco-dropdown-with-default>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-default>.action-container.menu-entry>.action-label.icon{width:16px;height:16px;background-repeat:no-repeat;background-position:50%;background-size:16px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;padding-left:0;padding-right:0;line-height:16px;margin-left:-3px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{display:block;background-size:16px;background-position:50%;background-repeat:no-repeat}.monaco-link{color:var(--vscode-textLink-foreground)}.monaco-link:hover{color:var(--vscode-textLink-activeForeground)}.quick-input-widget{position:absolute;width:600px;z-index:2550;left:50%;margin-left:-300px;-webkit-app-region:no-drag;border-radius:6px}.quick-input-titlebar{display:flex;align-items:center;border-top-left-radius:5px;border-top-right-radius:5px}.quick-input-left-action-bar{display:flex;margin-left:4px;flex:1}.quick-input-title{padding:3px 0;text-align:center;text-overflow:ellipsis;overflow:hidden}.quick-input-right-action-bar{display:flex;margin-right:4px;flex:1}.quick-input-right-action-bar>.actions-container{justify-content:flex-end}.quick-input-titlebar .monaco-action-bar .action-label.codicon{background-position:50%;background-repeat:no-repeat;padding:2px}.quick-input-description{margin:6px 6px 6px 11px}.quick-input-header .quick-input-description{margin:4px 2px;flex:1}.quick-input-header{display:flex;padding:8px 6px 6px}.quick-input-widget.hidden-input .quick-input-header{padding:0;margin-bottom:0}.quick-input-and-message{display:flex;flex-direction:column;flex-grow:1;min-width:0;position:relative}.quick-input-check-all{align-self:center;margin:0}.quick-input-filter{flex-grow:1;display:flex;position:relative}.quick-input-box{flex-grow:1}.quick-input-widget.show-checkboxes .quick-input-box,.quick-input-widget.show-checkboxes .quick-input-message{margin-left:5px}.quick-input-visible-count{position:absolute;left:-10000px}.quick-input-count{align-self:center;position:absolute;right:4px;display:flex;align-items:center}.quick-input-count .monaco-count-badge{vertical-align:middle;padding:2px 4px;border-radius:2px;min-height:auto;line-height:normal}.quick-input-action{margin-left:6px}.quick-input-action .monaco-text-button{font-size:11px;padding:0 6px;display:flex;height:25px;align-items:center}.quick-input-message{margin-top:-1px;padding:5px;overflow-wrap:break-word}.quick-input-message>.codicon{margin:0 .2em;vertical-align:text-bottom}.quick-input-message a{color:inherit}.quick-input-progress.monaco-progress-container{position:relative}.quick-input-progress.monaco-progress-container,.quick-input-progress.monaco-progress-container .progress-bit{height:2px}.quick-input-list{line-height:22px}.quick-input-widget.hidden-input .quick-input-list{margin-top:4px;padding-bottom:4px}.quick-input-list .monaco-list{overflow:hidden;max-height:440px;padding-bottom:5px}.quick-input-list .monaco-scrollable-element{padding:0 5px}.quick-input-list .quick-input-list-entry{box-sizing:border-box;overflow:hidden;display:flex;height:100%;padding:0 6px}.quick-input-list .quick-input-list-entry.quick-input-list-separator-border{border-top-width:1px;border-top-style:solid}.quick-input-list .monaco-list-row{border-radius:3px}.quick-input-list .monaco-list-row[data-index=\"0\"] .quick-input-list-entry.quick-input-list-separator-border{border-top-style:none}.quick-input-list .quick-input-list-label{overflow:hidden;display:flex;height:100%;flex:1}.quick-input-list .quick-input-list-checkbox{align-self:center;margin:0}.quick-input-list .quick-input-list-icon{background-size:16px;background-position:0;background-repeat:no-repeat;padding-right:6px;width:16px;height:22px;display:flex;align-items:center;justify-content:center}.quick-input-list .quick-input-list-rows{overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;height:100%;flex:1;margin-left:5px}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows{margin-left:10px}.quick-input-widget .quick-input-list .quick-input-list-checkbox{display:none}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox{display:inline}.quick-input-list .quick-input-list-rows>.quick-input-list-row{display:flex;align-items:center}.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label,.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label .monaco-icon-label-container>.monaco-icon-name-container{flex:1}.quick-input-list .quick-input-list-rows>.quick-input-list-row .codicon[class*=codicon-]{vertical-align:text-bottom}.quick-input-list .quick-input-list-rows .monaco-highlighted-label>span{opacity:1}.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding{margin-right:8px}.quick-input-list .quick-input-list-label-meta{opacity:.7;line-height:normal;text-overflow:ellipsis;overflow:hidden}.quick-input-list .monaco-highlighted-label .highlight{font-weight:700}.quick-input-list .quick-input-list-entry .quick-input-list-separator{margin-right:4px}.quick-input-list .quick-input-list-entry-action-bar{display:flex;flex:0;overflow:visible}.quick-input-list .quick-input-list-entry-action-bar .action-label{display:none}.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon{margin-right:4px;padding:0 2px 2px}.quick-input-list .quick-input-list-entry-action-bar{margin-top:1px;margin-right:4px}.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label{display:flex}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator{color:inherit}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key{background:none}.quick-input-list .quick-input-list-separator-as-item{font-weight:600;font-size:12px}.extension-editor .codicon.codicon-error,.extensions-viewlet>.extensions .codicon.codicon-error,.markers-panel .marker-icon .codicon.codicon-error,.markers-panel .marker-icon.error,.monaco-editor .zone-widget .codicon.codicon-error,.preferences-editor .codicon.codicon-error,.text-search-provider-messages .providerMessage .codicon.codicon-error{color:var(--vscode-problemsErrorIcon-foreground)}.extension-editor .codicon.codicon-warning,.extensions-viewlet>.extensions .codicon.codicon-warning,.markers-panel .marker-icon .codicon.codicon-warning,.markers-panel .marker-icon.warning,.monaco-editor .zone-widget .codicon.codicon-warning,.preferences-editor .codicon.codicon-warning,.text-search-provider-messages .providerMessage .codicon.codicon-warning{color:var(--vscode-problemsWarningIcon-foreground)}.extension-editor .codicon.codicon-info,.extensions-viewlet>.extensions .codicon.codicon-info,.markers-panel .marker-icon .codicon.codicon-info,.markers-panel .marker-icon.info,.monaco-editor .zone-widget .codicon.codicon-info,.preferences-editor .codicon.codicon-info,.text-search-provider-messages .providerMessage .codicon.codicon-info{color:var(--vscode-problemsInfoIcon-foreground)}"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/editor/editor.main.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/(function(){var ne=[\"exports\",\"require\",\"vs/base/common/lifecycle\",\"vs/nls\",\"vs/nls!vs/editor/editor.main\",\"vs/editor/common/core/range\",\"vs/base/common/event\",\"vs/base/browser/dom\",\"vs/platform/instantiation/common/instantiation\",\"vs/base/common/errors\",\"vs/css!vs/editor/editor.main\",\"vs/base/common/strings\",\"vs/editor/common/core/position\",\"vs/base/common/async\",\"vs/base/common/arrays\",\"vs/platform/contextkey/common/contextkey\",\"vs/editor/browser/editorExtensions\",\"vs/base/common/platform\",\"vs/editor/common/services/languageFeatures\",\"vs/base/common/cancellation\",\"vs/base/common/types\",\"vs/editor/common/editorContextKeys\",\"vs/base/common/uri\",\"vs/platform/theme/common/themeService\",\"vs/editor/common/core/selection\",\"vs/base/common/codicons\",\"vs/base/common/themables\",\"vs/platform/commands/common/commands\",\"vs/platform/configuration/common/configuration\",\"vs/editor/common/languages\",\"vs/platform/actions/common/actions\",\"vs/platform/theme/common/colorRegistry\",\"vs/editor/common/languages/languageConfigurationRegistry\",\"vs/editor/browser/services/codeEditorService\",\"vs/platform/keybinding/common/keybinding\",\"vs/base/browser/fastDomNode\",\"vs/editor/common/config/editorOptions\",\"vs/platform/registry/common/platform\",\"vs/base/common/color\",\"vs/base/common/actions\",\"vs/editor/common/model/textModel\",\"vs/editor/common/languages/language\",\"vs/base/common/observable\",\"vs/platform/notification/common/notification\",\"vs/base/browser/keyboardEvent\",\"vs/base/common/resources\",\"vs/base/common/iterator\",\"vs/base/common/objects\",\"vs/editor/common/model\",\"vs/base/browser/ui/aria/aria\",\"vs/platform/instantiation/common/extensions\",\"vs/editor/common/services/model\",\"vs/base/browser/browser\",\"vs/editor/browser/view/viewPart\",\"vs/base/common/network\",\"vs/base/common/htmlContent\",\"vs/platform/opener/common/opener\",\"vs/platform/contextview/browser/contextView\",\"vs/base/common/stopwatch\",\"vs/editor/browser/config/domFontInfo\",\"vs/base/browser/mouseEvent\",\"vs/base/browser/touch\",\"vs/platform/theme/common/iconRegistry\",\"vs/base/common/keyCodes\",\"vs/base/common/linkedList\",\"vs/base/common/map\",\"vs/editor/common/core/lineRange\",\"vs/editor/common/viewModel\",\"vs/base/browser/ui/actionbar/actionbar\",\"vs/editor/common/services/resolverService\",\"vs/platform/log/common/log\",\"vs/platform/quickinput/common/quickInput\",\"vs/base/common/filters\",\"vs/editor/common/core/editOperation\",\"vs/editor/common/cursorCommon\",\"vs/base/browser/ui/scrollbar/scrollableElement\",\"vs/editor/common/services/languageFeatureDebounce\",\"vs/platform/progress/common/progress\",\"vs/editor/common/languages/modesRegistry\",\"vs/platform/telemetry/common/telemetry\",\"vs/editor/common/core/editorColorRegistry\",\"vs/base/browser/event\",\"vs/editor/common/core/cursorColumns\",\"vs/base/browser/ui/widget\",\"vs/platform/accessibility/common/accessibility\",\"vs/base/common/assert\",\"vs/editor/common/tokens/lineTokens\",\"vs/platform/storage/common/storage\",\"vs/platform/theme/common/theme\",\"vs/base/browser/trustedTypes\",\"vs/editor/common/core/offsetRange\",\"vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length\",\"vs/base/common/path\",\"vs/editor/common/core/stringBuilder\",\"vs/editor/common/standaloneStrings\",\"vs/editor/common/viewLayout/viewLineRenderer\",\"vs/platform/clipboard/common/clipboardService\",\"vs/platform/markers/common/markers\",\"vs/platform/configuration/common/configurationRegistry\",\"vs/base/common/functional\",\"vs/base/common/lazy\",\"vs/base/common/severity\",\"vs/editor/browser/widget/diffEditorWidget2/utils\",\"vs/editor/contrib/hover/browser/hoverTypes\",\"vs/editor/contrib/editorState/browser/editorState\",\"vs/platform/theme/browser/defaultStyles\",\"vs/base/common/decorators\",\"vs/base/common/mime\",\"vs/editor/browser/stableEditorScroll\",\"vs/editor/common/diff/linesDiffComputer\",\"vs/editor/common/languages/languageConfiguration\",\"vs/editor/common/textModelEvents\",\"vs/editor/browser/view/dynamicViewOverlay\",\"vs/editor/contrib/codeAction/common/types\",\"vs/base/browser/ui/list/listWidget\",\"vs/editor/common/services/editorWorker\",\"vs/platform/audioCues/browser/audioCueService\",\"vs/editor/contrib/markdownRenderer/browser/markdownRenderer\",\"vs/platform/keybinding/common/keybindingsRegistry\",\"vs/base/common/keybindings\",\"vs/base/common/iconLabels\",\"vs/editor/common/core/characterClassifier\",\"vs/editor/common/core/eolCounter\",\"vs/editor/common/commands/replaceCommand\",\"vs/editor/common/encodedTokenAttributes\",\"vs/editor/common/languages/supports\",\"vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet\",\"vs/editor/common/viewLayout/lineDecorations\",\"vs/editor/contrib/snippet/browser/snippetParser\",\"vs/base/browser/ui/iconLabel/iconLabels\",\"vs/base/browser/ui/sash/sash\",\"vs/base/browser/ui/actionbar/actionViewItems\",\"vs/editor/browser/services/bulkEditService\",\"vs/editor/standalone/common/standaloneTheme\",\"vs/platform/layout/browser/layoutService\",\"vs/editor/contrib/suggest/browser/suggest\",\"vs/platform/quickinput/common/quickAccess\",\"vs/editor/contrib/codeAction/browser/codeAction\",\"vs/editor/contrib/peekView/browser/peekView\",\"vs/base/browser/ui/tree/tree\",\"vs/base/common/buffer\",\"vs/base/common/numbers\",\"vs/base/common/observableInternal/logging\",\"vs/base/common/hash\",\"vs/editor/browser/view/renderingContext\",\"vs/editor/common/config/editorZoom\",\"vs/editor/common/core/wordCharacterClassifier\",\"vs/editor/common/core/wordHelper\",\"vs/editor/common/editorCommon\",\"vs/editor/common/editorFeatures\",\"vs/editor/common/viewEventHandler\",\"vs/editor/contrib/inlineCompletions/browser/utils\",\"vs/base/browser/globalPointerMoveMonitor\",\"vs/base/browser/ui/toggle/toggle\",\"vs/editor/common/languages/nullTokenize\",\"vs/editor/contrib/gotoSymbol/browser/referencesModel\",\"vs/platform/dialogs/common/dialogs\",\"vs/platform/instantiation/common/serviceCollection\",\"vs/platform/label/common/label\",\"vs/editor/browser/editorDom\",\"vs/platform/actions/browser/menuEntryActionViewItem\",\"vs/editor/browser/widget/codeEditorWidget\",\"vs/editor/browser/widget/embeddedCodeEditorWidget\",\"vs/platform/workspace/common/workspace\",\"vs/base/common/idGenerator\",\"vs/base/common/observableInternal/base\",\"vs/base/common/range\",\"vs/base/common/scrollable\",\"vs/base/common/diff/diff\",\"vs/base/common/uint\",\"vs/base/common/uuid\",\"vs/base/common/dataTransfer\",\"vs/base/browser/ui/codicons/codiconStyles\",\"vs/base/browser/ui/mouseCursor/mouseCursor\",\"vs/css!vs/platform/quickinput/browser/media/quickInput\",\"vs/editor/common/core/textModelDefaults\",\"vs/editor/common/diff/algorithms/diffAlgorithm\",\"vs/editor/browser/editorBrowser\",\"vs/editor/common/cursor/cursorWordOperations\",\"vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/beforeEditPositionMapper\",\"vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/ast\",\"vs/editor/common/model/textModelSearch\",\"vs/editor/contrib/folding/browser/foldingRanges\",\"vs/base/browser/markdownRenderer\",\"vs/base/browser/ui/tree/abstractTree\",\"vs/editor/browser/controller/textAreaInput\",\"vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture\",\"vs/editor/common/services/textResourceConfiguration\",\"vs/editor/contrib/documentSymbols/browser/outlineModel\",\"vs/editor/browser/coreCommands\",\"vs/editor/contrib/message/browser/messageController\",\"vs/platform/list/browser/listService\",\"vs/platform/undoRedo/common/undoRedo\",\"vs/editor/contrib/find/browser/findModel\",\"vs/editor/contrib/snippet/browser/snippetController2\",\"vs/base/browser/ui/scrollbar/scrollbarState\",\"vs/base/common/collections\",\"vs/base/browser/dnd\",\"vs/base/common/ternarySearchTree\",\"vs/css!vs/editor/contrib/colorPicker/browser/colorPicker\",\"vs/editor/browser/config/elementSizeObserver\",\"vs/editor/browser/config/tabFocus\",\"vs/editor/common/core/indentation\",\"vs/editor/common/cursor/cursorMoveOperations\",\"vs/editor/common/cursor/cursorDeleteOperations\",\"vs/editor/common/cursor/cursorMoveCommands\",\"vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/tokenizer\",\"vs/editor/common/model/utils\",\"vs/editor/common/standalone/standaloneEnums\",\"vs/editor/common/textModelGuides\",\"vs/editor/browser/viewParts/glyphMargin/glyphMargin\",\"vs/editor/common/viewEvents\",\"vs/editor/common/viewModel/overviewZoneManager\",\"vs/editor/common/viewModelEventDispatcher\",\"vs/editor/contrib/inlineCompletions/browser/commandIds\",\"vs/editor/contrib/inlineCompletions/browser/ghostText\",\"vs/base/common/keybindingLabels\",\"vs/base/browser/canIUse\",\"vs/base/browser/ui/tree/indexTreeModel\",\"vs/base/browser/ui/tree/objectTreeModel\",\"vs/base/common/extpath\",\"vs/base/common/marshalling\",\"vs/base/browser/ui/keybindingLabel/keybindingLabel\",\"vs/base/browser/ui/resizable/resizable\",\"vs/base/browser/ui/scrollbar/scrollbarArrow\",\"vs/base/browser/ui/list/listView\",\"vs/base/browser/ui/iconLabel/iconLabel\",\"vs/base/browser/ui/inputbox/inputBox\",\"vs/base/browser/ui/findinput/findInput\",\"vs/editor/browser/view/viewLayer\",\"vs/editor/common/languages/supports/richEditBrackets\",\"vs/editor/common/config/fontInfo\",\"vs/platform/instantiation/common/descriptors\",\"vs/editor/common/services/markerDecorations\",\"vs/editor/common/services/semanticTokensStyling\",\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\",\"vs/editor/contrib/parameterHints/browser/provideSignatureHelp\",\"vs/editor/browser/widget/diffNavigator\",\"vs/platform/contextkey/common/contextkeys\",\"vs/platform/environment/common/environment\",\"vs/platform/jsonschemas/common/jsonContributionRegistry\",\"vs/editor/common/config/editorConfigurationSchema\",\"vs/editor/browser/services/editorWorkerService\",\"vs/editor/common/languages/autoIndent\",\"vs/editor/common/languages/enterAction\",\"vs/editor/common/commands/shiftCommand\",\"vs/editor/common/cursor/cursorTypeOperations\",\"vs/editor/contrib/gotoSymbol/browser/goToSymbol\",\"vs/editor/contrib/hover/browser/markdownHoverParticipant\",\"vs/editor/contrib/symbolIcons/browser/symbolIcons\",\"vs/editor/contrib/codeAction/browser/codeActionController\",\"vs/editor/browser/viewParts/lines/viewLine\",\"vs/editor/common/services/semanticTokensProviderStyling\",\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\",\"vs/editor/browser/widget/diffEditorWidget\",\"vs/editor/contrib/folding/browser/folding\",\"vs/editor/contrib/inlineProgress/browser/inlineProgress\",\"vs/editor/contrib/gotoSymbol/browser/goToCommands\",\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\",\"vs/editor/standalone/browser/standaloneServices\",\"vs/base/browser/performance\",\"vs/base/common/cache\",\"vs/base/common/observableInternal/autorun\",\"vs/base/common/ime\",\"vs/base/common/symbols\",\"vs/css!vs/base/browser/ui/actionbar/actionbar\",\"vs/css!vs/base/browser/ui/dropdown/dropdown\",\"vs/css!vs/base/browser/ui/findinput/findInput\",\"vs/css!vs/base/browser/ui/list/list\",\"vs/css!vs/platform/actionWidget/browser/actionWidget\",\"vs/editor/browser/viewParts/minimap/minimapCharSheet\",\"vs/editor/common/config/diffEditor\",\"vs/editor/browser/view/viewUserInputEvents\",\"vs/editor/browser/controller/textAreaState\",\"vs/editor/common/core/rgba\",\"vs/editor/common/cursor/cursorAtomicMoveOperations\",\"vs/editor/common/diff/advancedLinesDiffComputer\",\"vs/editor/common/editorAction\",\"vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/combineTextEditInfos\",\"vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/parser\",\"vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/brackets\",\"vs/editor/common/model/prefixSumComputer\",\"vs/editor/common/model/textModelPart\",\"vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase\",\"vs/editor/common/modelLineProjectionData\",\"vs/editor/common/services/treeViewsDnd\",\"vs/editor/common/services/unicodeTextModelHighlighter\",\"vs/editor/common/model/guidesTextModelPart\",\"vs/editor/common/tokens/contiguousMultilineTokensBuilder\",\"vs/editor/browser/viewParts/margin/margin\",\"vs/editor/contrib/comment/browser/blockCommentCommand\",\"vs/editor/contrib/folding/browser/foldingModel\",\"vs/editor/contrib/folding/browser/indentRangeProvider\",\"vs/editor/contrib/folding/browser/syntaxRangeProvider\",\"vs/editor/contrib/format/browser/formattingEdit\",\"vs/editor/contrib/indentation/browser/indentUtils\",\"vs/editor/contrib/inlineCompletions/browser/singleTextEdit\",\"vs/editor/contrib/semanticTokens/common/semanticTokensConfig\",\"vs/editor/contrib/smartSelect/browser/bracketSelections\",\"vs/editor/contrib/stickyScroll/browser/stickyScrollElement\",\"vs/editor/contrib/suggest/browser/completionModel\",\"vs/editor/contrib/suggest/browser/wordDistance\",\"vs/editor/standalone/common/monarch/monarchCommon\",\"vs/base/common/glob\",\"vs/base/browser/dompurify/dompurify\",\"vs/base/browser/formattedTextRenderer\",\"vs/base/browser/ui/contextview/contextview\",\"vs/base/browser/ui/countBadge/countBadge\",\"vs/base/browser/ui/highlightedlabel/highlightedLabel\",\"vs/base/browser/ui/scrollbar/abstractScrollbar\",\"vs/base/browser/ui/hover/hoverWidget\",\"vs/base/browser/ui/splitview/splitview\",\"vs/base/browser/ui/findinput/findInputToggles\",\"vs/base/browser/ui/button/button\",\"vs/base/browser/ui/iconLabel/iconLabelHover\",\"vs/base/browser/ui/dropdown/dropdownActionViewItem\",\"vs/base/browser/ui/tree/objectTree\",\"vs/base/common/worker/simpleWorker\",\"vs/editor/browser/widget/diffEditorWidget2/diffEditorViewModel\",\"vs/editor/common/core/textChange\",\"vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer\",\"vs/editor/contrib/hover/browser/hoverOperation\",\"vs/editor/contrib/inlayHints/browser/inlayHints\",\"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\",\"vs/editor/browser/config/fontMeasurements\",\"vs/editor/common/viewModel/viewModelDecorations\",\"vs/editor/common/languages/textToHtmlTokenizer\",\"vs/editor/common/services/editorBaseApi\",\"vs/editor/common/viewModel/minimapTokensColorTracker\",\"vs/editor/common/model/editStack\",\"vs/platform/files/common/files\",\"vs/editor/contrib/dropOrPasteInto/browser/edit\",\"vs/editor/contrib/codelens/browser/codelens\",\"vs/editor/contrib/semanticTokens/common/getSemanticTokens\",\"vs/editor/standalone/common/monarch/monarchLexer\",\"vs/editor/contrib/dropOrPasteInto/browser/postEditWidget\",\"vs/platform/keybinding/common/keybindingResolver\",\"vs/platform/keybinding/common/resolvedKeybindingItem\",\"vs/editor/standalone/browser/standaloneLayoutService\",\"vs/platform/quickinput/browser/quickInputUtils\",\"vs/platform/dnd/browser/dnd\",\"vs/editor/browser/dnd\",\"vs/editor/contrib/colorPicker/browser/defaultDocumentColorProvider\",\"vs/editor/contrib/colorPicker/browser/color\",\"vs/editor/contrib/suggest/browser/suggestWidgetDetails\",\"vs/platform/configuration/common/configurationModels\",\"vs/platform/history/browser/contextScopedHistoryWidget\",\"vs/editor/contrib/suggest/browser/suggestMemory\",\"vs/editor/browser/widget/workerBasedDocumentDiffProvider\",\"vs/editor/contrib/codeAction/browser/codeActionModel\",\"vs/editor/contrib/codeAction/browser/lightBulbWidget\",\"vs/editor/contrib/format/browser/format\",\"vs/editor/contrib/hover/browser/getHover\",\"vs/editor/contrib/wordOperations/browser/wordOperations\",\"vs/editor/browser/widget/diffReview\",\"vs/editor/browser/controller/mouseTarget\",\"vs/platform/quickinput/browser/quickInputList\",\"vs/editor/browser/widget/diffEditorWidget2/overviewRulerPart\",\"vs/editor/browser/viewParts/lineNumbers/lineNumbers\",\"vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess\",\"vs/editor/standalone/browser/standaloneCodeEditorService\",\"vs/editor/standalone/browser/standaloneThemeService\",\"vs/editor/browser/widget/diffEditorWidget2/decorations\",\"vs/editor/contrib/colorPicker/browser/colorDetector\",\"vs/editor/contrib/colorPicker/browser/colorHoverParticipant\",\"vs/editor/contrib/find/browser/findController\",\"vs/editor/contrib/folding/browser/foldingDecorations\",\"vs/editor/contrib/hover/browser/contentHover\",\"vs/editor/contrib/wordHighlighter/browser/highlightDecorations\",\"vs/editor/contrib/gotoError/browser/gotoError\",\"vs/editor/contrib/gotoSymbol/browser/peek/referencesController\",\"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\",\"vs/editor/contrib/hover/browser/hover\",\"vs/editor/contrib/inlayHints/browser/inlayHintsLocations\",\"vs/editor/contrib/inlayHints/browser/inlayHintsController\",\"vs/editor/contrib/stickyScroll/browser/stickyScrollController\",\"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\",\"vs/editor/contrib/snippet/browser/snippetSession\",\"vs/editor/contrib/suggest/browser/suggestController\",\"vs/platform/workspace/common/workspaceTrust\",\"vs/base/browser/iframe\",\"vs/base/browser/ui/list/list\",\"vs/base/browser/ui/list/splice\",\"vs/base/common/diff/diffChange\",\"vs/base/common/comparers\",\"vs/base/common/linkedText\",\"vs/base/common/marked/marked\",\"vs/base/common/navigator\",\"vs/base/common/history\",\"vs/base/common/observableInternal/derived\",\"vs/base/common/observableInternal/utils\",\"vs/base/browser/ui/list/rangeMap\",\"vs/base/common/search\",\"vs/css!vs/base/browser/ui/aria/aria\",\"vs/css!vs/base/browser/ui/button/button\",\"vs/css!vs/base/browser/ui/codicons/codicon/codicon\",\"vs/css!vs/base/browser/ui/codicons/codicon/codicon-modifiers\",\"vs/css!vs/base/browser/ui/contextview/contextview\",\"vs/css!vs/base/browser/ui/countBadge/countBadge\",\"vs/css!vs/base/browser/ui/hover/hover\",\"vs/css!vs/base/browser/ui/iconLabel/iconlabel\",\"vs/css!vs/base/browser/ui/inputbox/inputBox\",\"vs/css!vs/base/browser/ui/keybindingLabel/keybindingLabel\",\"vs/css!vs/base/browser/ui/mouseCursor/mouseCursor\",\"vs/css!vs/base/browser/ui/progressbar/progressbar\",\"vs/css!vs/base/browser/ui/sash/sash\",\"vs/css!vs/base/browser/ui/scrollbar/media/scrollbars\",\"vs/css!vs/base/browser/ui/selectBox/selectBox\",\"vs/css!vs/base/browser/ui/selectBox/selectBoxCustom\",\"vs/css!vs/base/browser/ui/splitview/splitview\",\"vs/css!vs/base/browser/ui/table/table\",\"vs/css!vs/base/browser/ui/toggle/toggle\",\"vs/css!vs/base/browser/ui/toolbar/toolbar\",\"vs/css!vs/base/browser/ui/tree/media/tree\",\"vs/css!vs/editor/browser/controller/textAreaHandler\",\"vs/css!vs/editor/browser/viewParts/blockDecorations/blockDecorations\",\"vs/css!vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight\",\"vs/css!vs/editor/browser/viewParts/decorations/decorations\",\"vs/css!vs/editor/browser/viewParts/glyphMargin/glyphMargin\",\"vs/css!vs/editor/browser/viewParts/indentGuides/indentGuides\",\"vs/css!vs/editor/browser/viewParts/lineNumbers/lineNumbers\",\"vs/css!vs/editor/browser/viewParts/lines/viewLines\",\"vs/css!vs/editor/browser/viewParts/linesDecorations/linesDecorations\",\"vs/css!vs/editor/browser/viewParts/margin/margin\",\"vs/css!vs/editor/browser/viewParts/marginDecorations/marginDecorations\",\"vs/css!vs/editor/browser/viewParts/minimap/minimap\",\"vs/css!vs/editor/browser/viewParts/overlayWidgets/overlayWidgets\",\"vs/css!vs/editor/browser/viewParts/rulers/rulers\",\"vs/css!vs/editor/browser/viewParts/scrollDecoration/scrollDecoration\",\"vs/css!vs/editor/browser/viewParts/selections/selections\",\"vs/css!vs/editor/browser/viewParts/viewCursors/viewCursors\",\"vs/css!vs/editor/browser/viewParts/whitespace/whitespace\",\"vs/css!vs/editor/browser/widget/diffEditorWidget2/style\",\"vs/css!vs/editor/browser/widget/media/diffEditor\",\"vs/css!vs/editor/browser/widget/media/diffReview\",\"vs/css!vs/editor/browser/widget/media/editor\",\"vs/css!vs/editor/contrib/anchorSelect/browser/anchorSelect\",\"vs/css!vs/editor/contrib/bracketMatching/browser/bracketMatching\",\"vs/css!vs/editor/contrib/codeAction/browser/lightBulbWidget\",\"vs/css!vs/editor/contrib/codelens/browser/codelensWidget\",\"vs/css!vs/editor/contrib/dnd/browser/dnd\",\"vs/css!vs/editor/contrib/dropOrPasteInto/browser/postEditWidget\",\"vs/css!vs/editor/contrib/find/browser/findOptionsWidget\",\"vs/css!vs/editor/contrib/find/browser/findWidget\",\"vs/css!vs/editor/contrib/folding/browser/folding\",\"vs/css!vs/editor/contrib/gotoError/browser/media/gotoErrorWidget\",\"vs/css!vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\",\"vs/css!vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\",\"vs/css!vs/editor/contrib/hover/browser/hover\",\"vs/css!vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\",\"vs/css!vs/editor/contrib/inlineCompletions/browser/ghostText\",\"vs/css!vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\",\"vs/css!vs/editor/contrib/inlineProgress/browser/inlineProgressWidget\",\"vs/css!vs/editor/contrib/linkedEditing/browser/linkedEditing\",\"vs/css!vs/editor/contrib/links/browser/links\",\"vs/css!vs/editor/contrib/markdownRenderer/browser/renderedMarkdown\",\"vs/css!vs/editor/contrib/message/browser/messageController\",\"vs/css!vs/editor/contrib/parameterHints/browser/parameterHints\",\"vs/css!vs/editor/contrib/peekView/browser/media/peekViewWidget\",\"vs/css!vs/editor/contrib/rename/browser/renameInputField\",\"vs/css!vs/editor/contrib/snippet/browser/snippetSession\",\"vs/css!vs/editor/contrib/stickyScroll/browser/stickyScroll\",\"vs/css!vs/editor/contrib/suggest/browser/media/suggest\",\"vs/css!vs/editor/contrib/symbolIcons/browser/symbolIcons\",\"vs/css!vs/editor/contrib/unicodeHighlighter/browser/bannerController\",\"vs/css!vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\",\"vs/css!vs/editor/contrib/wordHighlighter/browser/highlightDecorations\",\"vs/css!vs/editor/contrib/zoneWidget/browser/zoneWidget\",\"vs/css!vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard\",\"vs/css!vs/editor/standalone/browser/inspectTokens/inspectTokens\",\"vs/css!vs/editor/standalone/browser/quickInput/standaloneQuickInput\",\"vs/css!vs/editor/standalone/browser/standalone-tokens\",\"vs/css!vs/platform/actions/browser/menuEntryActionViewItem\",\"vs/css!vs/platform/opener/browser/link\",\"vs/css!vs/platform/severityIcon/browser/media/severityIcon\",\"vs/editor/browser/config/charWidthReader\",\"vs/editor/browser/config/migrateOptions\",\"vs/editor/browser/viewParts/lines/domReadingContext\",\"vs/editor/browser/viewParts/lines/rangeUtil\",\"vs/editor/browser/viewParts/minimap/minimapCharRenderer\",\"vs/editor/browser/viewParts/minimap/minimapPreBaked\",\"vs/editor/browser/viewParts/minimap/minimapCharRendererFactory\",\"vs/editor/browser/widget/diffEditorWidget2/delegatingEditorImpl\",\"vs/editor/browser/widget/diffEditorWidget2/outlineModel\",\"vs/editor/common/commands/trimTrailingWhitespaceCommand\",\"vs/editor/common/commands/surroundSelectionCommand\",\"vs/editor/common/cursor/cursorContext\",\"vs/editor/common/diff/algorithms/joinSequenceDiffs\",\"vs/editor/common/diff/algorithms/myersDiffAlgorithm\",\"vs/editor/common/diff/algorithms/utils\",\"vs/editor/common/diff/algorithms/dynamicProgrammingDiffing\",\"vs/editor/common/diff/legacyLinesDiffComputer\",\"vs/editor/common/diff/linesDiffComputers\",\"vs/editor/common/editorTheme\",\"vs/editor/common/languages/defaultDocumentColorsComputer\",\"vs/editor/common/languages/linkComputer\",\"vs/editor/common/cursor/cursorColumnSelection\",\"vs/editor/common/cursor/oneCursor\",\"vs/editor/common/cursor/cursorCollection\",\"vs/editor/common/languages/supports/characterPair\",\"vs/editor/common/languages/supports/indentRules\",\"vs/editor/common/languages/supports/inplaceReplaceSupport\",\"vs/editor/common/languages/supports/languageBracketsConfiguration\",\"vs/editor/common/languages/supports/onEnter\",\"vs/editor/common/languages/supports/tokenization\",\"vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/nodeReader\",\"vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/concat23Trees\",\"vs/editor/common/model/bracketPairsTextModelPart/fixBrackets\",\"vs/editor/common/model/fixedArray\",\"vs/editor/common/model/indentationGuesser\",\"vs/editor/common/model/intervalTree\",\"vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase\",\"vs/editor/common/model/mirrorTextModel\",\"vs/editor/common/textModelBracketPairs\",\"vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/bracketPairsTree\",\"vs/editor/common/tokenizationRegistry\",\"vs/editor/common/tokens/contiguousMultilineTokens\",\"vs/editor/common/tokens/contiguousTokensEditing\",\"vs/editor/common/tokens/contiguousTokensStore\",\"vs/editor/common/tokens/sparseMultilineTokens\",\"vs/editor/common/tokens/sparseTokensStore\",\"vs/editor/browser/viewParts/blockDecorations/blockDecorations\",\"vs/editor/browser/viewParts/decorations/decorations\",\"vs/editor/browser/viewParts/linesDecorations/linesDecorations\",\"vs/editor/browser/viewParts/marginDecorations/marginDecorations\",\"vs/editor/browser/viewParts/overlayWidgets/overlayWidgets\",\"vs/editor/browser/viewParts/rulers/rulers\",\"vs/editor/browser/viewParts/scrollDecoration/scrollDecoration\",\"vs/editor/browser/viewParts/viewZones/viewZones\",\"vs/editor/common/viewLayout/linePart\",\"vs/editor/common/viewLayout/linesLayout\",\"vs/editor/common/viewLayout/viewLinesViewportData\",\"vs/editor/common/viewModel/modelLineProjection\",\"vs/editor/common/viewModel/monospaceLineBreaksComputer\",\"vs/editor/browser/viewParts/overviewRuler/overviewRuler\",\"vs/editor/common/viewModel/viewContext\",\"vs/editor/common/viewLayout/viewLayout\",\"vs/editor/contrib/caretOperations/browser/moveCaretCommand\",\"vs/editor/contrib/colorPicker/browser/colorPickerModel\",\"vs/editor/contrib/comment/browser/lineCommentCommand\",\"vs/editor/contrib/dnd/browser/dragAndDropCommand\",\"vs/editor/contrib/find/browser/replaceAllCommand\",\"vs/editor/contrib/find/browser/replacePattern\",\"vs/editor/contrib/folding/browser/hiddenRangeModel\",\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplaceCommand\",\"vs/editor/contrib/linesOperations/browser/copyLinesCommand\",\"vs/editor/contrib/linesOperations/browser/sortLinesCommand\",\"vs/editor/contrib/smartSelect/browser/wordSelections\",\"vs/editor/contrib/suggest/browser/suggestCommitCharacters\",\"vs/editor/contrib/suggest/browser/suggestOvertypingCapturer\",\"vs/editor/standalone/common/monarch/monarchCompile\",\"vs/nls!vs/base/browser/ui/actionbar/actionViewItems\",\"vs/nls!vs/base/browser/ui/findinput/findInput\",\"vs/nls!vs/base/browser/ui/findinput/findInputToggles\",\"vs/nls!vs/base/browser/ui/findinput/replaceInput\",\"vs/nls!vs/base/browser/ui/hover/hoverWidget\",\"vs/nls!vs/base/browser/ui/iconLabel/iconLabelHover\",\"vs/nls!vs/base/browser/ui/inputbox/inputBox\",\"vs/nls!vs/base/browser/ui/keybindingLabel/keybindingLabel\",\"vs/nls!vs/base/browser/ui/selectBox/selectBoxCustom\",\"vs/nls!vs/base/browser/ui/toolbar/toolbar\",\"vs/nls!vs/base/browser/ui/tree/abstractTree\",\"vs/nls!vs/base/common/actions\",\"vs/nls!vs/base/common/errorMessage\",\"vs/base/common/errorMessage\",\"vs/nls!vs/base/common/keybindingLabels\",\"vs/nls!vs/base/common/platform\",\"vs/base/browser/ui/scrollbar/scrollbarVisibilityController\",\"vs/base/browser/ui/tree/compressedObjectTreeModel\",\"vs/base/common/process\",\"vs/base/common/fuzzyScorer\",\"vs/base/common/labels\",\"vs/base/browser/ui/dropdown/dropdown\",\"vs/base/browser/ui/list/rowCache\",\"vs/base/browser/ui/progressbar/progressbar\",\"vs/base/browser/ui/selectBox/selectBoxNative\",\"vs/base/browser/ui/scrollbar/horizontalScrollbar\",\"vs/base/browser/ui/scrollbar/verticalScrollbar\",\"vs/base/browser/ui/list/listPaging\",\"vs/base/browser/ui/table/tableWidget\",\"vs/base/browser/ui/selectBox/selectBoxCustom\",\"vs/base/browser/ui/selectBox/selectBox\",\"vs/base/browser/ui/findinput/replaceInput\",\"vs/base/browser/ui/menu/menu\",\"vs/base/browser/ui/toolbar/toolbar\",\"vs/base/browser/ui/tree/dataTree\",\"vs/base/browser/ui/tree/asyncDataTree\",\"vs/base/browser/defaultWorkerFactory\",\"vs/base/parts/storage/common/storage\",\"vs/editor/browser/viewParts/contentWidgets/contentWidgets\",\"vs/editor/browser/widget/diffEditorWidget2/diffEditorSash\",\"vs/editor/browser/view/domLineBreaksComputer\",\"vs/editor/browser/view/viewOverlays\",\"vs/editor/common/languageSelector\",\"vs/editor/common/languageFeatureRegistry\",\"vs/editor/common/languages/supports/electricCharacter\",\"vs/editor/common/model/bracketPairsTextModelPart/bracketPairsImpl\",\"vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder\",\"vs/editor/common/services/semanticTokensDto\",\"vs/editor/contrib/hover/browser/resizableContentWidget\",\"vs/editor/contrib/inlineCompletions/browser/provideInlineCompletions\",\"vs/nls!vs/editor/browser/controller/textAreaHandler\",\"vs/nls!vs/editor/browser/coreCommands\",\"vs/nls!vs/editor/browser/editorExtensions\",\"vs/nls!vs/editor/browser/widget/codeEditorWidget\",\"vs/nls!vs/editor/browser/widget/diffEditor.contribution\",\"vs/nls!vs/editor/browser/widget/diffEditorWidget\",\"vs/nls!vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\",\"vs/nls!vs/editor/browser/widget/diffEditorWidget2/colors\",\"vs/nls!vs/editor/browser/widget/diffEditorWidget2/decorations\",\"vs/nls!vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\",\"vs/nls!vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\",\"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\",\"vs/nls!vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\",\"vs/nls!vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\",\"vs/nls!vs/editor/browser/widget/diffReview\",\"vs/nls!vs/editor/browser/widget/inlineDiffMargin\",\"vs/editor/browser/widget/inlineDiffMargin\",\"vs/nls!vs/editor/common/config/editorConfigurationSchema\",\"vs/nls!vs/editor/common/config/editorOptions\",\"vs/editor/browser/viewParts/viewCursors/viewCursor\",\"vs/editor/browser/widget/diffEditorWidget2/diffEditorOptions\",\"vs/nls!vs/editor/common/core/editorColorRegistry\",\"vs/nls!vs/editor/common/editorContextKeys\",\"vs/nls!vs/editor/common/languages\",\"vs/editor/common/model/textModelTokens\",\"vs/editor/common/model/tokenizationTextModelPart\",\"vs/editor/common/services/editorSimpleWorker\",\"vs/nls!vs/editor/common/languages/modesRegistry\",\"vs/nls!vs/editor/common/model/editStack\",\"vs/nls!vs/editor/common/standaloneStrings\",\"vs/nls!vs/editor/common/viewLayout/viewLineRenderer\",\"vs/nls!vs/editor/contrib/anchorSelect/browser/anchorSelect\",\"vs/nls!vs/editor/contrib/bracketMatching/browser/bracketMatching\",\"vs/nls!vs/editor/contrib/caretOperations/browser/caretOperations\",\"vs/nls!vs/editor/contrib/caretOperations/browser/transpose\",\"vs/nls!vs/editor/contrib/clipboard/browser/clipboard\",\"vs/nls!vs/editor/contrib/codeAction/browser/codeAction\",\"vs/nls!vs/editor/contrib/codeAction/browser/codeActionCommands\",\"vs/nls!vs/editor/contrib/codeAction/browser/codeActionContributions\",\"vs/nls!vs/editor/contrib/codeAction/browser/codeActionController\",\"vs/nls!vs/editor/contrib/codeAction/browser/codeActionMenu\",\"vs/nls!vs/editor/contrib/codeAction/browser/lightBulbWidget\",\"vs/nls!vs/editor/contrib/codelens/browser/codelensController\",\"vs/nls!vs/editor/contrib/colorPicker/browser/colorPickerWidget\",\"vs/nls!vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\",\"vs/nls!vs/editor/contrib/comment/browser/comment\",\"vs/nls!vs/editor/contrib/contextmenu/browser/contextmenu\",\"vs/nls!vs/editor/contrib/cursorUndo/browser/cursorUndo\",\"vs/nls!vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\",\"vs/nls!vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\",\"vs/nls!vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\",\"vs/nls!vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\",\"vs/nls!vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\",\"vs/nls!vs/editor/contrib/editorState/browser/keybindingCancellation\",\"vs/nls!vs/editor/contrib/find/browser/findController\",\"vs/nls!vs/editor/contrib/find/browser/findWidget\",\"vs/nls!vs/editor/contrib/folding/browser/folding\",\"vs/nls!vs/editor/contrib/folding/browser/foldingDecorations\",\"vs/nls!vs/editor/contrib/fontZoom/browser/fontZoom\",\"vs/nls!vs/editor/contrib/format/browser/format\",\"vs/nls!vs/editor/contrib/format/browser/formatActions\",\"vs/nls!vs/editor/contrib/gotoError/browser/gotoError\",\"vs/nls!vs/editor/contrib/gotoError/browser/gotoErrorWidget\",\"vs/nls!vs/editor/contrib/gotoSymbol/browser/goToCommands\",\"vs/nls!vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\",\"vs/nls!vs/editor/contrib/gotoSymbol/browser/peek/referencesController\",\"vs/nls!vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\",\"vs/nls!vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\",\"vs/nls!vs/editor/contrib/gotoSymbol/browser/referencesModel\",\"vs/nls!vs/editor/contrib/gotoSymbol/browser/symbolNavigation\",\"vs/nls!vs/editor/contrib/hover/browser/hover\",\"vs/nls!vs/editor/contrib/hover/browser/markdownHoverParticipant\",\"vs/nls!vs/editor/contrib/hover/browser/markerHoverParticipant\",\"vs/nls!vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\",\"vs/nls!vs/editor/contrib/indentation/browser/indentation\",\"vs/nls!vs/editor/contrib/inlayHints/browser/inlayHintsHover\",\"vs/nls!vs/editor/contrib/inlineCompletions/browser/commands\",\"vs/nls!vs/editor/contrib/inlineCompletions/browser/hoverParticipant\",\"vs/nls!vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\",\"vs/nls!vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\",\"vs/nls!vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\",\"vs/nls!vs/editor/contrib/lineSelection/browser/lineSelection\",\"vs/nls!vs/editor/contrib/linesOperations/browser/linesOperations\",\"vs/nls!vs/editor/contrib/linkedEditing/browser/linkedEditing\",\"vs/nls!vs/editor/contrib/links/browser/links\",\"vs/nls!vs/editor/contrib/message/browser/messageController\",\"vs/nls!vs/editor/contrib/multicursor/browser/multicursor\",\"vs/nls!vs/editor/contrib/parameterHints/browser/parameterHints\",\"vs/nls!vs/editor/contrib/parameterHints/browser/parameterHintsWidget\",\"vs/nls!vs/editor/contrib/peekView/browser/peekView\",\"vs/nls!vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\",\"vs/nls!vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\",\"vs/nls!vs/editor/contrib/readOnlyMessage/browser/contribution\",\"vs/nls!vs/editor/contrib/rename/browser/rename\",\"vs/nls!vs/editor/contrib/rename/browser/renameInputField\",\"vs/nls!vs/editor/contrib/smartSelect/browser/smartSelect\",\"vs/nls!vs/editor/contrib/snippet/browser/snippetController2\",\"vs/nls!vs/editor/contrib/snippet/browser/snippetVariables\",\"vs/nls!vs/editor/contrib/stickyScroll/browser/stickyScrollActions\",\"vs/nls!vs/editor/contrib/suggest/browser/suggest\",\"vs/nls!vs/editor/contrib/suggest/browser/suggestController\",\"vs/nls!vs/editor/contrib/suggest/browser/suggestWidget\",\"vs/nls!vs/editor/contrib/suggest/browser/suggestWidgetDetails\",\"vs/nls!vs/editor/contrib/suggest/browser/suggestWidgetRenderer\",\"vs/nls!vs/editor/contrib/suggest/browser/suggestWidgetStatus\",\"vs/nls!vs/editor/contrib/symbolIcons/browser/symbolIcons\",\"vs/nls!vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\",\"vs/nls!vs/editor/contrib/tokenization/browser/tokenization\",\"vs/nls!vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\",\"vs/nls!vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\",\"vs/nls!vs/editor/contrib/wordHighlighter/browser/highlightDecorations\",\"vs/nls!vs/editor/contrib/wordHighlighter/browser/wordHighlighter\",\"vs/nls!vs/editor/contrib/wordOperations/browser/wordOperations\",\"vs/nls!vs/platform/action/common/actionCommonCategories\",\"vs/nls!vs/platform/actionWidget/browser/actionList\",\"vs/nls!vs/platform/actionWidget/browser/actionWidget\",\"vs/nls!vs/platform/actions/browser/menuEntryActionViewItem\",\"vs/nls!vs/platform/actions/browser/toolbar\",\"vs/nls!vs/platform/actions/common/menuService\",\"vs/nls!vs/platform/audioCues/browser/audioCueService\",\"vs/nls!vs/platform/configuration/common/configurationRegistry\",\"vs/nls!vs/platform/contextkey/browser/contextKeyService\",\"vs/nls!vs/platform/contextkey/common/contextkey\",\"vs/nls!vs/platform/contextkey/common/contextkeys\",\"vs/nls!vs/platform/contextkey/common/scanner\",\"vs/nls!vs/platform/history/browser/contextScopedHistoryWidget\",\"vs/nls!vs/platform/keybinding/common/abstractKeybindingService\",\"vs/nls!vs/platform/list/browser/listService\",\"vs/nls!vs/platform/markers/common/markers\",\"vs/nls!vs/platform/quickinput/browser/commandsQuickAccess\",\"vs/nls!vs/platform/quickinput/browser/helpQuickAccess\",\"vs/nls!vs/platform/quickinput/browser/quickInput\",\"vs/nls!vs/platform/quickinput/browser/quickInputController\",\"vs/nls!vs/platform/quickinput/browser/quickInputList\",\"vs/nls!vs/platform/quickinput/browser/quickInputUtils\",\"vs/nls!vs/platform/theme/common/colorRegistry\",\"vs/nls!vs/platform/theme/common/iconRegistry\",\"vs/nls!vs/platform/undoRedo/common/undoRedoService\",\"vs/nls!vs/platform/workspace/common/workspace\",\"vs/platform/action/common/action\",\"vs/platform/action/common/actionCommonCategories\",\"vs/platform/contextkey/common/scanner\",\"vs/platform/editor/common/editor\",\"vs/platform/extensions/common/extensions\",\"vs/platform/history/browser/historyWidgetKeybindingHint\",\"vs/platform/instantiation/common/graph\",\"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\",\"vs/editor/common/services/languageFeaturesService\",\"vs/editor/common/services/treeViewsDndService\",\"vs/editor/contrib/inlineCompletions/browser/ghostTextWidget\",\"vs/editor/contrib/links/browser/getLinks\",\"vs/editor/standalone/browser/colorizer\",\"vs/editor/contrib/parameterHints/browser/parameterHintsModel\",\"vs/editor/contrib/suggest/browser/suggestAlternatives\",\"vs/editor/contrib/suggest/browser/wordContextKey\",\"vs/editor/browser/config/editorConfiguration\",\"vs/platform/contextkey/browser/contextKeyService\",\"vs/platform/instantiation/common/instantiationService\",\"vs/platform/keybinding/common/baseResolvedKeybinding\",\"vs/platform/keybinding/common/abstractKeybindingService\",\"vs/platform/keybinding/common/usLayoutResolvedKeybinding\",\"vs/platform/accessibility/browser/accessibilityService\",\"vs/platform/contextview/browser/contextViewService\",\"vs/platform/clipboard/browser/clipboardService\",\"vs/platform/log/common/logService\",\"vs/editor/contrib/gotoError/browser/markerNavigationService\",\"vs/platform/markers/common/markerService\",\"vs/editor/browser/services/openerService\",\"vs/editor/contrib/documentSymbols/browser/documentSymbols\",\"vs/platform/opener/browser/link\",\"vs/platform/quickinput/browser/pickerQuickAccess\",\"vs/platform/quickinput/browser/quickInputBox\",\"vs/editor/browser/services/webWorker\",\"vs/editor/common/cursor/cursor\",\"vs/editor/common/services/getIconClasses\",\"vs/editor/common/services/languagesAssociations\",\"vs/editor/common/services/languagesRegistry\",\"vs/editor/common/services/languageService\",\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsSource\",\"vs/editor/contrib/linesOperations/browser/moveLinesCommand\",\"vs/editor/contrib/hover/browser/marginHover\",\"vs/platform/configuration/common/configurations\",\"vs/editor/browser/widget/diffEditor.contribution\",\"vs/editor/browser/widget/codeEditorContributions\",\"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\",\"vs/platform/quickinput/browser/helpQuickAccess\",\"vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess\",\"vs/platform/quickinput/browser/quickAccess\",\"vs/platform/severityIcon/browser/severityIcon\",\"vs/editor/contrib/codelens/browser/codeLensCache\",\"vs/platform/actions/common/menuService\",\"vs/editor/browser/services/markerDecorations\",\"vs/editor/browser/view/viewController\",\"vs/editor/contrib/anchorSelect/browser/anchorSelect\",\"vs/editor/contrib/caretOperations/browser/caretOperations\",\"vs/editor/contrib/caretOperations/browser/transpose\",\"vs/editor/contrib/clipboard/browser/clipboard\",\"vs/editor/contrib/comment/browser/comment\",\"vs/editor/contrib/cursorUndo/browser/cursorUndo\",\"vs/editor/contrib/editorState/browser/keybindingCancellation\",\"vs/editor/contrib/codeAction/browser/codeActionKeybindingResolver\",\"vs/editor/contrib/fontZoom/browser/fontZoom\",\"vs/editor/contrib/format/browser/formatActions\",\"vs/editor/contrib/gotoSymbol/browser/symbolNavigation\",\"vs/editor/contrib/indentation/browser/indentation\",\"vs/editor/contrib/lineSelection/browser/lineSelection\",\"vs/editor/contrib/linesOperations/browser/linesOperations\",\"vs/editor/contrib/longLinesHelper/browser/longLinesHelper\",\"vs/editor/contrib/readOnlyMessage/browser/contribution\",\"vs/editor/contrib/smartSelect/browser/smartSelect\",\"vs/editor/contrib/suggest/browser/suggestInlineCompletions\",\"vs/editor/contrib/tokenization/browser/tokenization\",\"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\",\"vs/editor/contrib/wordPartOperations/browser/wordPartOperations\",\"vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard\",\"vs/editor/standalone/browser/inspectTokens/inspectTokens\",\"vs/platform/actions/browser/toolbar\",\"vs/platform/quickinput/browser/commandsQuickAccess\",\"vs/editor/contrib/quickAccess/browser/commandsQuickAccess\",\"vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess\",\"vs/editor/browser/viewParts/minimap/minimap\",\"vs/editor/browser/widget/diffEditorWidget2/colors\",\"vs/editor/contrib/codeAction/browser/codeActionMenu\",\"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\",\"vs/platform/actionWidget/browser/actionList\",\"vs/platform/actionWidget/browser/actionWidget\",\"vs/editor/contrib/codeAction/browser/codeActionCommands\",\"vs/editor/contrib/codeAction/browser/codeActionContributions\",\"vs/platform/contextview/browser/contextMenuHandler\",\"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\",\"vs/editor/contrib/colorPicker/browser/colorPickerWidget\",\"vs/editor/contrib/parameterHints/browser/parameterHintsWidget\",\"vs/editor/contrib/parameterHints/browser/parameterHints\",\"vs/editor/contrib/unicodeHighlighter/browser/bannerController\",\"vs/platform/theme/browser/iconsStyleSheet\",\"vs/editor/browser/controller/mouseHandler\",\"vs/editor/browser/controller/pointerHandler\",\"vs/editor/browser/viewParts/lines/viewLines\",\"vs/platform/quickinput/browser/quickInput\",\"vs/platform/quickinput/browser/quickInputController\",\"vs/editor/browser/services/abstractCodeEditorService\",\"vs/editor/browser/viewParts/editorScrollbar/editorScrollbar\",\"vs/editor/browser/viewParts/selections/selections\",\"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\",\"vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight\",\"vs/editor/browser/viewParts/indentGuides/indentGuides\",\"vs/editor/browser/controller/textAreaHandler\",\"vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler\",\"vs/editor/browser/viewParts/viewCursors/viewCursors\",\"vs/editor/browser/viewParts/whitespace/whitespace\",\"vs/editor/browser/view\",\"vs/editor/common/model/bracketPairsTextModelPart/colorizedBracketPairsDecorationProvider\",\"vs/editor/common/services/markerDecorationsService\",\"vs/editor/common/services/semanticTokensStylingService\",\"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\",\"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\",\"vs/editor/contrib/rename/browser/renameInputField\",\"vs/editor/contrib/rename/browser/rename\",\"vs/editor/contrib/semanticTokens/browser/documentSemanticTokens\",\"vs/editor/contrib/semanticTokens/browser/viewportSemanticTokens\",\"vs/editor/contrib/suggest/browser/suggestWidgetRenderer\",\"vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess\",\"vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess\",\"vs/editor/standalone/common/themes\",\"vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast\",\"vs/editor/contrib/suggest/browser/suggestWidgetStatus\",\"vs/platform/contextview/browser/contextMenuService\",\"vs/platform/quickinput/browser/quickInputService\",\"vs/editor/standalone/browser/quickInput/standaloneQuickInputService\",\"vs/editor/browser/widget/diffEditorWidget2/diffEditorDecorations\",\"vs/editor/common/services/modelService\",\"vs/editor/common/viewModel/viewModelLines\",\"vs/editor/common/viewModel/viewModelImpl\",\"vs/editor/browser/widget/diffEditorWidget2/renderLines\",\"vs/editor/browser/widget/diffEditorWidget2/lineAlignment\",\"vs/editor/browser/widget/diffEditorWidget2/diffEditorWidget2\",\"vs/editor/contrib/bracketMatching/browser/bracketMatching\",\"vs/editor/contrib/codelens/browser/codelensWidget\",\"vs/editor/contrib/codelens/browser/codelensController\",\"vs/editor/contrib/dnd/browser/dnd\",\"vs/editor/contrib/find/browser/findDecorations\",\"vs/editor/contrib/find/browser/findOptionsWidget\",\"vs/editor/contrib/find/browser/findState\",\"vs/editor/contrib/find/browser/findWidget\",\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerWidget\",\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\",\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\",\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\",\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\",\"vs/editor/contrib/linkedEditing/browser/linkedEditing\",\"vs/editor/contrib/links/browser/links\",\"vs/editor/contrib/stickyScroll/browser/stickyScrollModelProvider\",\"vs/editor/contrib/stickyScroll/browser/stickyScrollProvider\",\"vs/editor/contrib/stickyScroll/browser/stickyScrollWidget\",\"vs/editor/contrib/suggest/browser/suggestWidget\",\"vs/editor/contrib/multicursor/browser/multicursor\",\"vs/editor/contrib/wordHighlighter/browser/wordHighlighter\",\"vs/editor/contrib/zoneWidget/browser/zoneWidget\",\"vs/editor/contrib/gotoError/browser/gotoErrorWidget\",\"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\",\"vs/editor/contrib/hover/browser/markerHoverParticipant\",\"vs/editor/contrib/colorPicker/browser/colorContributions\",\"vs/editor/contrib/inlayHints/browser/inlayHintsHover\",\"vs/editor/contrib/inlayHints/browser/inlayHintsContribution\",\"vs/editor/contrib/stickyScroll/browser/stickyScrollActions\",\"vs/editor/contrib/stickyScroll/browser/stickyScrollContribution\",\"vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch\",\"vs/platform/undoRedo/common/undoRedoService\",\"vs/editor/contrib/contextmenu/browser/contextmenu\",\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\",\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\",\"vs/editor/contrib/snippet/browser/snippetVariables\",\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsModel\",\"vs/editor/contrib/suggest/browser/suggestModel\",\"vs/editor/contrib/inlineCompletions/browser/suggestWidgetInlineCompletionProvider\",\"vs/editor/contrib/inlineCompletions/browser/commands\",\"vs/editor/contrib/inlineCompletions/browser/hoverParticipant\",\"vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution\",\"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\",\"vs/editor/editor.all\",\"vs/editor/standalone/browser/standaloneCodeEditor\",\"vs/editor/standalone/browser/standaloneEditor\",\"vs/editor/standalone/browser/standaloneLanguages\",\"vs/editor/editor.api\",\"vs/css\",\"vs/editor/edcore.main\"],se=function(Q){for(var e=[],L=0,k=Q.length;L<k;L++)e[L]=ne[Q[L]];return e};define(ne[925],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.load=void 0;function L(f,_,g,C){if(C=C||{},(C[\"vs/css\"]||{}).disabled){g({});return}const i=_.toUrl(f+\".css\");k(f,i,()=>{g({})},n=>{typeof g.error==\"function\"&&g.error(\"Could not find \"+i+\".\")})}e.load=L;function k(f,_,g,C){if(y(f,_)){g();return}D(f,_,g,C)}function y(f,_){const g=document.getElementsByTagName(\"link\");for(let C=0,s=g.length;C<s;C++){const i=g[C].getAttribute(\"data-name\"),n=g[C].getAttribute(\"href\");if(i===f||n===_)return!0}return!1}function D(f,_,g,C){const s=document.createElement(\"link\");s.setAttribute(\"rel\",\"stylesheet\"),s.setAttribute(\"type\",\"text/css\"),s.setAttribute(\"data-name\",f),S(f,s,g,C),s.setAttribute(\"href\",_),(document.head||document.getElementsByTagName(\"head\")[0]).appendChild(s)}function S(f,_,g,C){const s=()=>{_.removeEventListener(\"load\",i),_.removeEventListener(\"error\",n)},i=t=>{s(),g()},n=t=>{s(),C(t)};_.addEventListener(\"load\",i),_.addEventListener(\"error\",n)}});var we=this&&this.__awaiter||function(Q,e,L,k){function y(D){return D instanceof L?D:new L(function(S){S(D)})}return new(L||(L=Promise))(function(D,S){function f(C){try{g(k.next(C))}catch(s){S(s)}}function _(C){try{g(k.throw(C))}catch(s){S(s)}}function g(C){C.done?D(C.value):y(C.value).then(f,_)}g((k=k.apply(Q,e||[])).next())})};define(ne[3],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.load=e.create=e.setPseudoTranslation=e.getConfiguredDefaultLocale=e.localize=void 0;let L=typeof document<\"u\"&&document.location&&document.location.hash.indexOf(\"pseudo=true\")>=0;const k=\"i-default\";function y(t,a){let u;return a.length===0?u=t:u=t.replace(/\\{(\\d+)\\}/g,(h,r)=>{const c=r[0],o=a[c];let d=h;return typeof o==\"string\"?d=o:(typeof o==\"number\"||typeof o==\"boolean\"||o===void 0||o===null)&&(d=String(o)),d}),L&&(u=\"\\uFF3B\"+u.replace(/[aouei]/g,\"$&$&\")+\"\\uFF3D\"),u}function D(t,a){let u=t[a];return u||(u=t[\"*\"],u)?u:null}function S(t){return t.charAt(t.length-1)===\"/\"?t:t+\"/\"}function f(t,a,u){return we(this,void 0,void 0,function*(){const h=S(t)+S(a)+\"vscode/\"+S(u),r=yield fetch(h);if(r.ok)return yield r.json();throw new Error(`${r.status} - ${r.statusText}`)})}function _(t){return function(a,u){const h=Array.prototype.slice.call(arguments,2);return y(t[a],h)}}function g(t,a,...u){return y(a,u)}e.localize=g;function C(t){}e.getConfiguredDefaultLocale=C;function s(t){L=t}e.setPseudoTranslation=s;function i(t,a){var u;return{localize:_(a[t]),getConfiguredDefaultLocale:(u=a.getConfiguredDefaultLocale)!==null&&u!==void 0?u:h=>{}}}e.create=i;function n(t,a,u,h){var r;const c=(r=h[\"vs/nls\"])!==null&&r!==void 0?r:{};if(!t||t.length===0)return u({localize:g,getConfiguredDefaultLocale:()=>{var m;return(m=c.availableLanguages)===null||m===void 0?void 0:m[\"*\"]}});const o=c.availableLanguages?D(c.availableLanguages,t):null,d=o===null||o===k;let l=\".nls\";d||(l=l+\".\"+o);const p=m=>{Array.isArray(m)?m.localize=_(m):m.localize=_(m[t]),m.getConfiguredDefaultLocale=()=>{var v;return(v=c.availableLanguages)===null||v===void 0?void 0:v[\"*\"]},u(m)};typeof c.loadBundle==\"function\"?c.loadBundle(t,o,(m,v)=>{m?a([t+\".nls\"],p):p(v)}):c.translationServiceUrl&&!d?we(this,void 0,void 0,function*(){var m;try{const v=yield f(c.translationServiceUrl,o,t);return p(v)}catch(v){if(!o.includes(\"-\"))return console.error(v),a([t+\".nls\"],p);try{const b=o.split(\"-\")[0],w=yield f(c.translationServiceUrl,b,t);return(m=c.availableLanguages)!==null&&m!==void 0||(c.availableLanguages={}),c.availableLanguages[\"*\"]=b,p(w)}catch(b){return console.error(b),a([t+\".nls\"],p)}}}):a([t+l],p,m=>{if(l===\".nls\"){console.error(\"Failed trying to load default language strings\",m);return}console.error(`Failed to load message bundle for language ${o}. Falling back to the default language:`,m),a([t+\".nls\"],p)})}e.load=n});/*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE */const{entries:Wt,setPrototypeOf:Vt,isFrozen:Yt,getPrototypeOf:Qt,getOwnPropertyDescriptor:Xt}=Object;let{freeze:pt,seal:bt,create:Jt}=Object,{apply:At,construct:Rt}=typeof Reflect<\"u\"&&Reflect;At||(At=function(e,L,k){return e.apply(L,k)}),pt||(pt=function(e){return e}),bt||(bt=function(e){return e}),Rt||(Rt=function(e,L){return new e(...L)});const ei=Ct(Array.prototype.forEach),zt=Ct(Array.prototype.pop),It=Ct(Array.prototype.push),Tt=Ct(String.prototype.toLowerCase),Pt=Ct(String.prototype.toString),ti=Ct(String.prototype.match),_t=Ct(String.prototype.replace),ii=Ct(String.prototype.indexOf),ni=Ct(String.prototype.trim),vt=Ct(RegExp.prototype.test),kt=si(TypeError);function Ct(Q){return function(e){for(var L=arguments.length,k=new Array(L>1?L-1:0),y=1;y<L;y++)k[y-1]=arguments[y];return At(Q,e,k)}}function si(Q){return function(){for(var e=arguments.length,L=new Array(e),k=0;k<e;k++)L[k]=arguments[k];return Rt(Q,L)}}function Je(Q,e,L){var k;L=(k=L)!==null&&k!==void 0?k:Tt,Vt&&Vt(Q,null);let y=e.length;for(;y--;){let D=e[y];if(typeof D==\"string\"){const S=L(D);S!==D&&(Yt(e)||(e[y]=S),D=S)}Q[D]=!0}return Q}function Et(Q){const e=Jt(null);for(const[L,k]of Wt(Q))e[L]=k;return e}function Nt(Q,e){for(;Q!==null;){const k=Xt(Q,e);if(k){if(k.get)return Ct(k.get);if(typeof k.value==\"function\")return Ct(k.value)}Q=Qt(Q)}function L(k){return console.warn(\"fallback value for\",k),null}return L}const Ht=pt([\"a\",\"abbr\",\"acronym\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"bdi\",\"bdo\",\"big\",\"blink\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"center\",\"cite\",\"code\",\"col\",\"colgroup\",\"content\",\"data\",\"datalist\",\"dd\",\"decorator\",\"del\",\"details\",\"dfn\",\"dialog\",\"dir\",\"div\",\"dl\",\"dt\",\"element\",\"em\",\"fieldset\",\"figcaption\",\"figure\",\"font\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"legend\",\"li\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meter\",\"nav\",\"nobr\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"section\",\"select\",\"shadow\",\"small\",\"source\",\"spacer\",\"span\",\"strike\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"template\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\",\"tt\",\"u\",\"ul\",\"var\",\"video\",\"wbr\"]),Ot=pt([\"svg\",\"a\",\"altglyph\",\"altglyphdef\",\"altglyphitem\",\"animatecolor\",\"animatemotion\",\"animatetransform\",\"circle\",\"clippath\",\"defs\",\"desc\",\"ellipse\",\"filter\",\"font\",\"g\",\"glyph\",\"glyphref\",\"hkern\",\"image\",\"line\",\"lineargradient\",\"marker\",\"mask\",\"metadata\",\"mpath\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialgradient\",\"rect\",\"stop\",\"style\",\"switch\",\"symbol\",\"text\",\"textpath\",\"title\",\"tref\",\"tspan\",\"view\",\"vkern\"]),Ft=pt([\"feBlend\",\"feColorMatrix\",\"feComponentTransfer\",\"feComposite\",\"feConvolveMatrix\",\"feDiffuseLighting\",\"feDisplacementMap\",\"feDistantLight\",\"feDropShadow\",\"feFlood\",\"feFuncA\",\"feFuncB\",\"feFuncG\",\"feFuncR\",\"feGaussianBlur\",\"feImage\",\"feMerge\",\"feMergeNode\",\"feMorphology\",\"feOffset\",\"fePointLight\",\"feSpecularLighting\",\"feSpotLight\",\"feTile\",\"feTurbulence\"]),oi=pt([\"animate\",\"color-profile\",\"cursor\",\"discard\",\"font-face\",\"font-face-format\",\"font-face-name\",\"font-face-src\",\"font-face-uri\",\"foreignobject\",\"hatch\",\"hatchpath\",\"mesh\",\"meshgradient\",\"meshpatch\",\"meshrow\",\"missing-glyph\",\"script\",\"set\",\"solidcolor\",\"unknown\",\"use\"]),xt=pt([\"math\",\"menclose\",\"merror\",\"mfenced\",\"mfrac\",\"mglyph\",\"mi\",\"mlabeledtr\",\"mmultiscripts\",\"mn\",\"mo\",\"mover\",\"mpadded\",\"mphantom\",\"mroot\",\"mrow\",\"ms\",\"mspace\",\"msqrt\",\"mstyle\",\"msub\",\"msup\",\"msubsup\",\"mtable\",\"mtd\",\"mtext\",\"mtr\",\"munder\",\"munderover\",\"mprescripts\"]),ri=pt([\"maction\",\"maligngroup\",\"malignmark\",\"mlongdiv\",\"mscarries\",\"mscarry\",\"msgroup\",\"mstack\",\"msline\",\"msrow\",\"semantics\",\"annotation\",\"annotation-xml\",\"mprescripts\",\"none\"]),Ut=pt([\"#text\"]),Kt=pt([\"accept\",\"action\",\"align\",\"alt\",\"autocapitalize\",\"autocomplete\",\"autopictureinpicture\",\"autoplay\",\"background\",\"bgcolor\",\"border\",\"capture\",\"cellpadding\",\"cellspacing\",\"checked\",\"cite\",\"class\",\"clear\",\"color\",\"cols\",\"colspan\",\"controls\",\"controlslist\",\"coords\",\"crossorigin\",\"datetime\",\"decoding\",\"default\",\"dir\",\"disabled\",\"disablepictureinpicture\",\"disableremoteplayback\",\"download\",\"draggable\",\"enctype\",\"enterkeyhint\",\"face\",\"for\",\"headers\",\"height\",\"hidden\",\"high\",\"href\",\"hreflang\",\"id\",\"inputmode\",\"integrity\",\"ismap\",\"kind\",\"label\",\"lang\",\"list\",\"loading\",\"loop\",\"low\",\"max\",\"maxlength\",\"media\",\"method\",\"min\",\"minlength\",\"multiple\",\"muted\",\"name\",\"nonce\",\"noshade\",\"novalidate\",\"nowrap\",\"open\",\"optimum\",\"pattern\",\"placeholder\",\"playsinline\",\"poster\",\"preload\",\"pubdate\",\"radiogroup\",\"readonly\",\"rel\",\"required\",\"rev\",\"reversed\",\"role\",\"rows\",\"rowspan\",\"spellcheck\",\"scope\",\"selected\",\"shape\",\"size\",\"sizes\",\"span\",\"srclang\",\"start\",\"src\",\"srcset\",\"step\",\"style\",\"summary\",\"tabindex\",\"title\",\"translate\",\"type\",\"usemap\",\"valign\",\"value\",\"width\",\"xmlns\",\"slot\"]),Bt=pt([\"accent-height\",\"accumulate\",\"additive\",\"alignment-baseline\",\"ascent\",\"attributename\",\"attributetype\",\"azimuth\",\"basefrequency\",\"baseline-shift\",\"begin\",\"bias\",\"by\",\"class\",\"clip\",\"clippathunits\",\"clip-path\",\"clip-rule\",\"color\",\"color-interpolation\",\"color-interpolation-filters\",\"color-profile\",\"color-rendering\",\"cx\",\"cy\",\"d\",\"dx\",\"dy\",\"diffuseconstant\",\"direction\",\"display\",\"divisor\",\"dur\",\"edgemode\",\"elevation\",\"end\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"filterunits\",\"flood-color\",\"flood-opacity\",\"font-family\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-variant\",\"font-weight\",\"fx\",\"fy\",\"g1\",\"g2\",\"glyph-name\",\"glyphref\",\"gradientunits\",\"gradienttransform\",\"height\",\"href\",\"id\",\"image-rendering\",\"in\",\"in2\",\"k\",\"k1\",\"k2\",\"k3\",\"k4\",\"kerning\",\"keypoints\",\"keysplines\",\"keytimes\",\"lang\",\"lengthadjust\",\"letter-spacing\",\"kernelmatrix\",\"kernelunitlength\",\"lighting-color\",\"local\",\"marker-end\",\"marker-mid\",\"marker-start\",\"markerheight\",\"markerunits\",\"markerwidth\",\"maskcontentunits\",\"maskunits\",\"max\",\"mask\",\"media\",\"method\",\"mode\",\"min\",\"name\",\"numoctaves\",\"offset\",\"operator\",\"opacity\",\"order\",\"orient\",\"orientation\",\"origin\",\"overflow\",\"paint-order\",\"path\",\"pathlength\",\"patterncontentunits\",\"patterntransform\",\"patternunits\",\"points\",\"preservealpha\",\"preserveaspectratio\",\"primitiveunits\",\"r\",\"rx\",\"ry\",\"radius\",\"refx\",\"refy\",\"repeatcount\",\"repeatdur\",\"restart\",\"result\",\"rotate\",\"scale\",\"seed\",\"shape-rendering\",\"specularconstant\",\"specularexponent\",\"spreadmethod\",\"startoffset\",\"stddeviation\",\"stitchtiles\",\"stop-color\",\"stop-opacity\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke\",\"stroke-width\",\"style\",\"surfacescale\",\"systemlanguage\",\"tabindex\",\"targetx\",\"targety\",\"transform\",\"transform-origin\",\"text-anchor\",\"text-decoration\",\"text-rendering\",\"textlength\",\"type\",\"u1\",\"u2\",\"unicode\",\"values\",\"viewbox\",\"visibility\",\"version\",\"vert-adv-y\",\"vert-origin-x\",\"vert-origin-y\",\"width\",\"word-spacing\",\"wrap\",\"writing-mode\",\"xchannelselector\",\"ychannelselector\",\"x\",\"x1\",\"x2\",\"xmlns\",\"y\",\"y1\",\"y2\",\"z\",\"zoomandpan\"]),qt=pt([\"accent\",\"accentunder\",\"align\",\"bevelled\",\"close\",\"columnsalign\",\"columnlines\",\"columnspan\",\"denomalign\",\"depth\",\"dir\",\"display\",\"displaystyle\",\"encoding\",\"fence\",\"frame\",\"height\",\"href\",\"id\",\"largeop\",\"length\",\"linethickness\",\"lspace\",\"lquote\",\"mathbackground\",\"mathcolor\",\"mathsize\",\"mathvariant\",\"maxsize\",\"minsize\",\"movablelimits\",\"notation\",\"numalign\",\"open\",\"rowalign\",\"rowlines\",\"rowspacing\",\"rowspan\",\"rspace\",\"rquote\",\"scriptlevel\",\"scriptminsize\",\"scriptsizemultiplier\",\"selection\",\"separator\",\"separators\",\"stretchy\",\"subscriptshift\",\"supscriptshift\",\"symmetric\",\"voffset\",\"width\",\"xmlns\"]),Mt=pt([\"xlink:href\",\"xml:id\",\"xlink:title\",\"xml:space\",\"xmlns:xlink\"]),ai=bt(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm),li=bt(/<%[\\w\\W]*|[\\w\\W]*%>/gm),di=bt(/\\${[\\w\\W]*}/gm),ci=bt(/^data-[\\-\\w.\\u00B7-\\uFFFF]/),ui=bt(/^aria-[\\-\\w]+$/),jt=bt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i),hi=bt(/^(?:\\w+script|data):/i),gi=bt(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g),$t=bt(/^html$/i);var Gt=Object.freeze({__proto__:null,MUSTACHE_EXPR:ai,ERB_EXPR:li,TMPLIT_EXPR:di,DATA_ATTR:ci,ARIA_ATTR:ui,IS_ALLOWED_URI:jt,IS_SCRIPT_OR_DATA:hi,ATTR_WHITESPACE:gi,DOCTYPE_NAME:$t});const fi=()=>typeof window>\"u\"?null:window,mi=function(e,L){if(typeof e!=\"object\"||typeof e.createPolicy!=\"function\")return null;let k=null;const y=\"data-tt-policy-suffix\";L&&L.hasAttribute(y)&&(k=L.getAttribute(y));const D=\"dompurify\"+(k?\"#\"+k:\"\");try{return e.createPolicy(D,{createHTML(S){return S},createScriptURL(S){return S}})}catch{return console.warn(\"TrustedTypes policy \"+D+\" could not be created.\"),null}};function Zt(){let Q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:fi();const e=Be=>Zt(Be);if(e.version=\"3.0.5\",e.removed=[],!Q||!Q.document||Q.document.nodeType!==9)return e.isSupported=!1,e;const L=Q.document,k=L.currentScript;let{document:y}=Q;const{DocumentFragment:D,HTMLTemplateElement:S,Node:f,Element:_,NodeFilter:g,NamedNodeMap:C=Q.NamedNodeMap||Q.MozNamedAttrMap,HTMLFormElement:s,DOMParser:i,trustedTypes:n}=Q,t=_.prototype,a=Nt(t,\"cloneNode\"),u=Nt(t,\"nextSibling\"),h=Nt(t,\"childNodes\"),r=Nt(t,\"parentNode\");if(typeof S==\"function\"){const Be=y.createElement(\"template\");Be.content&&Be.content.ownerDocument&&(y=Be.content.ownerDocument)}let c,o=\"\";const{implementation:d,createNodeIterator:l,createDocumentFragment:p,getElementsByTagName:m}=y,{importNode:v}=L;let b={};e.isSupported=typeof Wt==\"function\"&&typeof r==\"function\"&&d&&d.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:w,ERB_EXPR:E,TMPLIT_EXPR:I,DATA_ATTR:M,ARIA_ATTR:P,IS_SCRIPT_OR_DATA:x,ATTR_WHITESPACE:T}=Gt;let{IS_ALLOWED_URI:A}=Gt,N=null;const F=Je({},[...Ht,...Ot,...Ft,...xt,...Ut]);let O=null;const W=Je({},[...Kt,...Bt,...qt,...Mt]);let U=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}})),j=null,R=null,K=!0,G=!0,Z=!1,J=!0,X=!1,H=!1,B=!1,V=!1,Y=!1,ie=!1,ae=!1,ce=!0,de=!1;const he=\"user-content-\";let ue=!0,te=!1,q={},z=null;const ee=Je({},[\"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 $=null;const re=Je({},[\"audio\",\"video\",\"img\",\"source\",\"image\",\"track\"]);let oe=null;const ge=Je({},[\"alt\",\"class\",\"for\",\"id\",\"label\",\"name\",\"pattern\",\"placeholder\",\"role\",\"summary\",\"title\",\"value\",\"style\",\"xmlns\"]),ve=\"http://www.w3.org/1998/Math/MathML\",Se=\"http://www.w3.org/2000/svg\",Le=\"http://www.w3.org/1999/xhtml\";let De=Le,ye=!1,Ee=null;const Me=Je({},[ve,Se,Le],Pt);let Pe;const Fe=[\"application/xhtml+xml\",\"text/html\"],_e=\"text/html\";let me,le=null;const pe=y.createElement(\"form\"),Ce=function(Te){return Te instanceof RegExp||Te instanceof Function},be=function(Te){if(!(le&&le===Te)){if((!Te||typeof Te!=\"object\")&&(Te={}),Te=Et(Te),Pe=Fe.indexOf(Te.PARSER_MEDIA_TYPE)===-1?Pe=_e:Pe=Te.PARSER_MEDIA_TYPE,me=Pe===\"application/xhtml+xml\"?Pt:Tt,N=\"ALLOWED_TAGS\"in Te?Je({},Te.ALLOWED_TAGS,me):F,O=\"ALLOWED_ATTR\"in Te?Je({},Te.ALLOWED_ATTR,me):W,Ee=\"ALLOWED_NAMESPACES\"in Te?Je({},Te.ALLOWED_NAMESPACES,Pt):Me,oe=\"ADD_URI_SAFE_ATTR\"in Te?Je(Et(ge),Te.ADD_URI_SAFE_ATTR,me):ge,$=\"ADD_DATA_URI_TAGS\"in Te?Je(Et(re),Te.ADD_DATA_URI_TAGS,me):re,z=\"FORBID_CONTENTS\"in Te?Je({},Te.FORBID_CONTENTS,me):ee,j=\"FORBID_TAGS\"in Te?Je({},Te.FORBID_TAGS,me):{},R=\"FORBID_ATTR\"in Te?Je({},Te.FORBID_ATTR,me):{},q=\"USE_PROFILES\"in Te?Te.USE_PROFILES:!1,K=Te.ALLOW_ARIA_ATTR!==!1,G=Te.ALLOW_DATA_ATTR!==!1,Z=Te.ALLOW_UNKNOWN_PROTOCOLS||!1,J=Te.ALLOW_SELF_CLOSE_IN_ATTR!==!1,X=Te.SAFE_FOR_TEMPLATES||!1,H=Te.WHOLE_DOCUMENT||!1,Y=Te.RETURN_DOM||!1,ie=Te.RETURN_DOM_FRAGMENT||!1,ae=Te.RETURN_TRUSTED_TYPE||!1,V=Te.FORCE_BODY||!1,ce=Te.SANITIZE_DOM!==!1,de=Te.SANITIZE_NAMED_PROPS||!1,ue=Te.KEEP_CONTENT!==!1,te=Te.IN_PLACE||!1,A=Te.ALLOWED_URI_REGEXP||jt,De=Te.NAMESPACE||Le,U=Te.CUSTOM_ELEMENT_HANDLING||{},Te.CUSTOM_ELEMENT_HANDLING&&Ce(Te.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(U.tagNameCheck=Te.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Te.CUSTOM_ELEMENT_HANDLING&&Ce(Te.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(U.attributeNameCheck=Te.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Te.CUSTOM_ELEMENT_HANDLING&&typeof Te.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements==\"boolean\"&&(U.allowCustomizedBuiltInElements=Te.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),X&&(G=!1),ie&&(Y=!0),q&&(N=Je({},[...Ut]),O=[],q.html===!0&&(Je(N,Ht),Je(O,Kt)),q.svg===!0&&(Je(N,Ot),Je(O,Bt),Je(O,Mt)),q.svgFilters===!0&&(Je(N,Ft),Je(O,Bt),Je(O,Mt)),q.mathMl===!0&&(Je(N,xt),Je(O,qt),Je(O,Mt))),Te.ADD_TAGS&&(N===F&&(N=Et(N)),Je(N,Te.ADD_TAGS,me)),Te.ADD_ATTR&&(O===W&&(O=Et(O)),Je(O,Te.ADD_ATTR,me)),Te.ADD_URI_SAFE_ATTR&&Je(oe,Te.ADD_URI_SAFE_ATTR,me),Te.FORBID_CONTENTS&&(z===ee&&(z=Et(z)),Je(z,Te.FORBID_CONTENTS,me)),ue&&(N[\"#text\"]=!0),H&&Je(N,[\"html\",\"head\",\"body\"]),N.table&&(Je(N,[\"tbody\"]),delete j.tbody),Te.TRUSTED_TYPES_POLICY){if(typeof Te.TRUSTED_TYPES_POLICY.createHTML!=\"function\")throw kt('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');if(typeof Te.TRUSTED_TYPES_POLICY.createScriptURL!=\"function\")throw kt('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');c=Te.TRUSTED_TYPES_POLICY,o=c.createHTML(\"\")}else c===void 0&&(c=mi(n,k)),c!==null&&typeof o==\"string\"&&(o=c.createHTML(\"\"));pt&&pt(Te),le=Te}},Ie=Je({},[\"mi\",\"mo\",\"mn\",\"ms\",\"mtext\"]),Ne=Je({},[\"foreignobject\",\"desc\",\"title\",\"annotation-xml\"]),Re=Je({},[\"title\",\"style\",\"font\",\"a\",\"script\"]),Ve=Je({},Ot);Je(Ve,Ft),Je(Ve,oi);const ze=Je({},xt);Je(ze,ri);const We=function(Te){let xe=r(Te);(!xe||!xe.tagName)&&(xe={namespaceURI:De,tagName:\"template\"});const He=Tt(Te.tagName),Ye=Tt(xe.tagName);return Ee[Te.namespaceURI]?Te.namespaceURI===Se?xe.namespaceURI===Le?He===\"svg\":xe.namespaceURI===ve?He===\"svg\"&&(Ye===\"annotation-xml\"||Ie[Ye]):!!Ve[He]:Te.namespaceURI===ve?xe.namespaceURI===Le?He===\"math\":xe.namespaceURI===Se?He===\"math\"&&Ne[Ye]:!!ze[He]:Te.namespaceURI===Le?xe.namespaceURI===Se&&!Ne[Ye]||xe.namespaceURI===ve&&!Ie[Ye]?!1:!ze[He]&&(Re[He]||!Ve[He]):!!(Pe===\"application/xhtml+xml\"&&Ee[Te.namespaceURI]):!1},qe=function(Te){It(e.removed,{element:Te});try{Te.parentNode.removeChild(Te)}catch{Te.remove()}},Oe=function(Te,xe){try{It(e.removed,{attribute:xe.getAttributeNode(Te),from:xe})}catch{It(e.removed,{attribute:null,from:xe})}if(xe.removeAttribute(Te),Te===\"is\"&&!O[Te])if(Y||ie)try{qe(xe)}catch{}else try{xe.setAttribute(Te,\"\")}catch{}},Ge=function(Te){let xe,He;if(V)Te=\"<remove></remove>\"+Te;else{const Xe=ti(Te,/^[\\r\\n\\t ]+/);He=Xe&&Xe[0]}Pe===\"application/xhtml+xml\"&&De===Le&&(Te='<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>'+Te+\"</body></html>\");const Ye=c?c.createHTML(Te):Te;if(De===Le)try{xe=new i().parseFromString(Ye,Pe)}catch{}if(!xe||!xe.documentElement){xe=d.createDocument(De,\"template\",null);try{xe.documentElement.innerHTML=ye?o:Ye}catch{}}const Ze=xe.body||xe.documentElement;return Te&&He&&Ze.insertBefore(y.createTextNode(He),Ze.childNodes[0]||null),De===Le?m.call(xe,H?\"html\":\"body\")[0]:H?xe.documentElement:Ze},Qe=function(Te){return l.call(Te.ownerDocument||Te,Te,g.SHOW_ELEMENT|g.SHOW_COMMENT|g.SHOW_TEXT,null,!1)},st=function(Te){return Te instanceof s&&(typeof Te.nodeName!=\"string\"||typeof Te.textContent!=\"string\"||typeof Te.removeChild!=\"function\"||!(Te.attributes instanceof C)||typeof Te.removeAttribute!=\"function\"||typeof Te.setAttribute!=\"function\"||typeof Te.namespaceURI!=\"string\"||typeof Te.insertBefore!=\"function\"||typeof Te.hasChildNodes!=\"function\")},nt=function(Te){return typeof f==\"object\"?Te instanceof f:Te&&typeof Te==\"object\"&&typeof Te.nodeType==\"number\"&&typeof Te.nodeName==\"string\"},ot=function(Te,xe,He){b[Te]&&ei(b[Te],Ye=>{Ye.call(e,xe,He,le)})},ct=function(Te){let xe;if(ot(\"beforeSanitizeElements\",Te,null),st(Te))return qe(Te),!0;const He=me(Te.nodeName);if(ot(\"uponSanitizeElement\",Te,{tagName:He,allowedTags:N}),Te.hasChildNodes()&&!nt(Te.firstElementChild)&&(!nt(Te.content)||!nt(Te.content.firstElementChild))&&vt(/<[/\\w]/g,Te.innerHTML)&&vt(/<[/\\w]/g,Te.textContent))return qe(Te),!0;if(!N[He]||j[He]){if(!j[He]&&gt(He)&&(U.tagNameCheck instanceof RegExp&&vt(U.tagNameCheck,He)||U.tagNameCheck instanceof Function&&U.tagNameCheck(He)))return!1;if(ue&&!z[He]){const Ye=r(Te)||Te.parentNode,Ze=h(Te)||Te.childNodes;if(Ze&&Ye){const Xe=Ze.length;for(let je=Xe-1;je>=0;--je)Ye.insertBefore(a(Ze[je],!0),u(Te))}}return qe(Te),!0}return Te instanceof _&&!We(Te)||(He===\"noscript\"||He===\"noembed\"||He===\"noframes\")&&vt(/<\\/no(script|embed|frames)/i,Te.innerHTML)?(qe(Te),!0):(X&&Te.nodeType===3&&(xe=Te.textContent,xe=_t(xe,w,\" \"),xe=_t(xe,E,\" \"),xe=_t(xe,I,\" \"),Te.textContent!==xe&&(It(e.removed,{element:Te.cloneNode()}),Te.textContent=xe)),ot(\"afterSanitizeElements\",Te,null),!1)},lt=function(Te,xe,He){if(ce&&(xe===\"id\"||xe===\"name\")&&(He in y||He in pe))return!1;if(!(G&&!R[xe]&&vt(M,xe))){if(!(K&&vt(P,xe))){if(!O[xe]||R[xe]){if(!(gt(Te)&&(U.tagNameCheck instanceof RegExp&&vt(U.tagNameCheck,Te)||U.tagNameCheck instanceof Function&&U.tagNameCheck(Te))&&(U.attributeNameCheck instanceof RegExp&&vt(U.attributeNameCheck,xe)||U.attributeNameCheck instanceof Function&&U.attributeNameCheck(xe))||xe===\"is\"&&U.allowCustomizedBuiltInElements&&(U.tagNameCheck instanceof RegExp&&vt(U.tagNameCheck,He)||U.tagNameCheck instanceof Function&&U.tagNameCheck(He))))return!1}else if(!oe[xe]){if(!vt(A,_t(He,T,\"\"))){if(!((xe===\"src\"||xe===\"xlink:href\"||xe===\"href\")&&Te!==\"script\"&&ii(He,\"data:\")===0&&$[Te])){if(!(Z&&!vt(x,_t(He,T,\"\")))){if(He)return!1}}}}}}return!0},gt=function(Te){return Te.indexOf(\"-\")>0},at=function(Te){let xe,He,Ye,Ze;ot(\"beforeSanitizeAttributes\",Te,null);const{attributes:Xe}=Te;if(!Xe)return;const je={attrName:\"\",attrValue:\"\",keepAttr:!0,allowedAttributes:O};for(Ze=Xe.length;Ze--;){xe=Xe[Ze];const{name:Ae,namespaceURI:Ue}=xe;if(He=Ae===\"value\"?xe.value:ni(xe.value),Ye=me(Ae),je.attrName=Ye,je.attrValue=He,je.keepAttr=!0,je.forceKeepAttr=void 0,ot(\"uponSanitizeAttribute\",Te,je),He=je.attrValue,je.forceKeepAttr||(Oe(Ae,Te),!je.keepAttr))continue;if(!J&&vt(/\\/>/i,He)){Oe(Ae,Te);continue}X&&(He=_t(He,w,\" \"),He=_t(He,E,\" \"),He=_t(He,I,\" \"));const Ke=me(Te.nodeName);if(lt(Ke,Ye,He)){if(de&&(Ye===\"id\"||Ye===\"name\")&&(Oe(Ae,Te),He=he+He),c&&typeof n==\"object\"&&typeof n.getAttributeType==\"function\"&&!Ue)switch(n.getAttributeType(Ke,Ye)){case\"TrustedHTML\":{He=c.createHTML(He);break}case\"TrustedScriptURL\":{He=c.createScriptURL(He);break}}try{Ue?Te.setAttributeNS(Ue,Ae,He):Te.setAttribute(Ae,He),zt(e.removed)}catch{}}}ot(\"afterSanitizeAttributes\",Te,null)},ht=function Be(Te){let xe;const He=Qe(Te);for(ot(\"beforeSanitizeShadowDOM\",Te,null);xe=He.nextNode();)ot(\"uponSanitizeShadowNode\",xe,null),!ct(xe)&&(xe.content instanceof D&&Be(xe.content),at(xe));ot(\"afterSanitizeShadowDOM\",Te,null)};return e.sanitize=function(Be){let Te=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},xe,He,Ye,Ze;if(ye=!Be,ye&&(Be=\"<!-->\"),typeof Be!=\"string\"&&!nt(Be))if(typeof Be.toString==\"function\"){if(Be=Be.toString(),typeof Be!=\"string\")throw kt(\"dirty is not a string, aborting\")}else throw kt(\"toString is not a function\");if(!e.isSupported)return Be;if(B||be(Te),e.removed=[],typeof Be==\"string\"&&(te=!1),te){if(Be.nodeName){const Ae=me(Be.nodeName);if(!N[Ae]||j[Ae])throw kt(\"root node is forbidden and cannot be sanitized in-place\")}}else if(Be instanceof f)xe=Ge(\"<!---->\"),He=xe.ownerDocument.importNode(Be,!0),He.nodeType===1&&He.nodeName===\"BODY\"||He.nodeName===\"HTML\"?xe=He:xe.appendChild(He);else{if(!Y&&!X&&!H&&Be.indexOf(\"<\")===-1)return c&&ae?c.createHTML(Be):Be;if(xe=Ge(Be),!xe)return Y?null:ae?o:\"\"}xe&&V&&qe(xe.firstChild);const Xe=Qe(te?Be:xe);for(;Ye=Xe.nextNode();)ct(Ye)||(Ye.content instanceof D&&ht(Ye.content),at(Ye));if(te)return Be;if(Y){if(ie)for(Ze=p.call(xe.ownerDocument);xe.firstChild;)Ze.appendChild(xe.firstChild);else Ze=xe;return(O.shadowroot||O.shadowrootmode)&&(Ze=v.call(L,Ze,!0)),Ze}let je=H?xe.outerHTML:xe.innerHTML;return H&&N[\"!doctype\"]&&xe.ownerDocument&&xe.ownerDocument.doctype&&xe.ownerDocument.doctype.name&&vt($t,xe.ownerDocument.doctype.name)&&(je=\"<!DOCTYPE \"+xe.ownerDocument.doctype.name+`>\n`+je),X&&(je=_t(je,w,\" \"),je=_t(je,E,\" \"),je=_t(je,I,\" \")),c&&ae?c.createHTML(je):je},e.setConfig=function(Be){be(Be),B=!0},e.clearConfig=function(){le=null,B=!1},e.isValidAttribute=function(Be,Te,xe){le||be({});const He=me(Be),Ye=me(Te);return lt(He,Ye,xe)},e.addHook=function(Be,Te){typeof Te==\"function\"&&(b[Be]=b[Be]||[],It(b[Be],Te))},e.removeHook=function(Be){if(b[Be])return zt(b[Be])},e.removeHooks=function(Be){b[Be]&&(b[Be]=[])},e.removeAllHooks=function(){b={}},e}var pi=Zt();define(\"vs/base/browser/dompurify/dompurify\",function(){return pi}),define(ne[35],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createFastDomNode=e.FastDomNode=void 0;class L{constructor(S){this.domNode=S,this._maxWidth=\"\",this._width=\"\",this._height=\"\",this._top=\"\",this._left=\"\",this._bottom=\"\",this._right=\"\",this._paddingLeft=\"\",this._fontFamily=\"\",this._fontWeight=\"\",this._fontSize=\"\",this._fontStyle=\"\",this._fontFeatureSettings=\"\",this._fontVariationSettings=\"\",this._textDecoration=\"\",this._lineHeight=\"\",this._letterSpacing=\"\",this._className=\"\",this._display=\"\",this._position=\"\",this._visibility=\"\",this._color=\"\",this._backgroundColor=\"\",this._layerHint=!1,this._contain=\"none\",this._boxShadow=\"\"}setMaxWidth(S){const f=k(S);this._maxWidth!==f&&(this._maxWidth=f,this.domNode.style.maxWidth=this._maxWidth)}setWidth(S){const f=k(S);this._width!==f&&(this._width=f,this.domNode.style.width=this._width)}setHeight(S){const f=k(S);this._height!==f&&(this._height=f,this.domNode.style.height=this._height)}setTop(S){const f=k(S);this._top!==f&&(this._top=f,this.domNode.style.top=this._top)}setLeft(S){const f=k(S);this._left!==f&&(this._left=f,this.domNode.style.left=this._left)}setBottom(S){const f=k(S);this._bottom!==f&&(this._bottom=f,this.domNode.style.bottom=this._bottom)}setRight(S){const f=k(S);this._right!==f&&(this._right=f,this.domNode.style.right=this._right)}setPaddingLeft(S){const f=k(S);this._paddingLeft!==f&&(this._paddingLeft=f,this.domNode.style.paddingLeft=this._paddingLeft)}setFontFamily(S){this._fontFamily!==S&&(this._fontFamily=S,this.domNode.style.fontFamily=this._fontFamily)}setFontWeight(S){this._fontWeight!==S&&(this._fontWeight=S,this.domNode.style.fontWeight=this._fontWeight)}setFontSize(S){const f=k(S);this._fontSize!==f&&(this._fontSize=f,this.domNode.style.fontSize=this._fontSize)}setFontStyle(S){this._fontStyle!==S&&(this._fontStyle=S,this.domNode.style.fontStyle=this._fontStyle)}setFontFeatureSettings(S){this._fontFeatureSettings!==S&&(this._fontFeatureSettings=S,this.domNode.style.fontFeatureSettings=this._fontFeatureSettings)}setFontVariationSettings(S){this._fontVariationSettings!==S&&(this._fontVariationSettings=S,this.domNode.style.fontVariationSettings=this._fontVariationSettings)}setTextDecoration(S){this._textDecoration!==S&&(this._textDecoration=S,this.domNode.style.textDecoration=this._textDecoration)}setLineHeight(S){const f=k(S);this._lineHeight!==f&&(this._lineHeight=f,this.domNode.style.lineHeight=this._lineHeight)}setLetterSpacing(S){const f=k(S);this._letterSpacing!==f&&(this._letterSpacing=f,this.domNode.style.letterSpacing=this._letterSpacing)}setClassName(S){this._className!==S&&(this._className=S,this.domNode.className=this._className)}toggleClassName(S,f){this.domNode.classList.toggle(S,f),this._className=this.domNode.className}setDisplay(S){this._display!==S&&(this._display=S,this.domNode.style.display=this._display)}setPosition(S){this._position!==S&&(this._position=S,this.domNode.style.position=this._position)}setVisibility(S){this._visibility!==S&&(this._visibility=S,this.domNode.style.visibility=this._visibility)}setColor(S){this._color!==S&&(this._color=S,this.domNode.style.color=this._color)}setBackgroundColor(S){this._backgroundColor!==S&&(this._backgroundColor=S,this.domNode.style.backgroundColor=this._backgroundColor)}setLayerHinting(S){this._layerHint!==S&&(this._layerHint=S,this.domNode.style.transform=this._layerHint?\"translate3d(0px, 0px, 0px)\":\"\")}setBoxShadow(S){this._boxShadow!==S&&(this._boxShadow=S,this.domNode.style.boxShadow=S)}setContain(S){this._contain!==S&&(this._contain=S,this.domNode.style.contain=this._contain)}setAttribute(S,f){this.domNode.setAttribute(S,f)}removeAttribute(S){this.domNode.removeAttribute(S)}appendChild(S){this.domNode.appendChild(S.domNode)}removeChild(S){this.domNode.removeChild(S.domNode)}}e.FastDomNode=L;function k(D){return typeof D==\"number\"?`${D}px`:D}function y(D){return new L(D)}e.createFastDomNode=y}),define(ne[380],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IframeUtils=void 0;let L=!1,k=null;function y(S){if(!S.parent||S.parent===S)return null;try{const f=S.location,_=S.parent.location;if(f.origin!==\"null\"&&_.origin!==\"null\"&&f.origin!==_.origin)return L=!0,null}catch{return L=!0,null}return S.parent}class D{static getSameOriginWindowChain(){if(!k){k=[];let f=window,_;do _=y(f),_?k.push({window:f,iframeElement:f.frameElement||null}):k.push({window:f,iframeElement:null}),f=_;while(f)}return k.slice(0)}static getPositionOfChildWindowRelativeToAncestorWindow(f,_){if(!_||f===_)return{top:0,left:0};let g=0,C=0;const s=this.getSameOriginWindowChain();for(const i of s){if(g+=i.window.scrollY,C+=i.window.scrollX,i.window===_||!i.iframeElement)break;const n=i.iframeElement.getBoundingClientRect();g+=n.top,C+=n.left}return{top:g,left:C}}}e.IframeUtils=D}),define(ne[260],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.inputLatency=void 0;var L;(function(k){const y={total:0,min:Number.MAX_VALUE,max:0},D=Object.assign({},y),S=Object.assign({},y),f=Object.assign({},y);let _=0;const g={keydown:0,input:0,render:0};function C(){o(),performance.mark(\"inputlatency/start\"),performance.mark(\"keydown/start\"),g.keydown=1,queueMicrotask(s)}k.onKeyDown=C;function s(){g.keydown===1&&(performance.mark(\"keydown/end\"),g.keydown=2)}function i(){performance.mark(\"input/start\"),g.input=1,c()}k.onBeforeInput=i;function n(){g.input===0&&i(),queueMicrotask(t)}k.onInput=n;function t(){g.input===1&&(performance.mark(\"input/end\"),g.input=2)}function a(){o()}k.onKeyUp=a;function u(){o()}k.onSelectionChange=u;function h(){g.keydown===2&&g.input===2&&g.render===0&&(performance.mark(\"render/start\"),g.render=1,queueMicrotask(r),c())}k.onRenderStart=h;function r(){g.render===1&&(performance.mark(\"render/end\"),g.render=2)}function c(){setTimeout(o)}function o(){g.keydown===2&&g.input===2&&g.render===2&&(performance.mark(\"inputlatency/end\"),performance.measure(\"keydown\",\"keydown/start\",\"keydown/end\"),performance.measure(\"input\",\"input/start\",\"input/end\"),performance.measure(\"render\",\"render/start\",\"render/end\"),performance.measure(\"inputlatency\",\"inputlatency/start\",\"inputlatency/end\"),d(\"keydown\",y),d(\"input\",D),d(\"render\",S),d(\"inputlatency\",f),_++,l())}function d(b,w){const E=performance.getEntriesByName(b)[0].duration;w.total+=E,w.min=Math.min(w.min,E),w.max=Math.max(w.max,E)}function l(){performance.clearMarks(\"keydown/start\"),performance.clearMarks(\"keydown/end\"),performance.clearMarks(\"input/start\"),performance.clearMarks(\"input/end\"),performance.clearMarks(\"render/start\"),performance.clearMarks(\"render/end\"),performance.clearMarks(\"inputlatency/start\"),performance.clearMarks(\"inputlatency/end\"),performance.clearMeasures(\"keydown\"),performance.clearMeasures(\"input\"),performance.clearMeasures(\"render\"),performance.clearMeasures(\"inputlatency\"),g.keydown=0,g.input=0,g.render=0}function p(){if(_===0)return;const b={keydown:m(y),input:m(D),render:m(S),total:m(f),sampleCount:_};return v(y),v(D),v(S),v(f),_=0,b}k.getAndClearMeasurements=p;function m(b){return{average:b.total/_,max:b.max,min:b.min}}function v(b){b.total=0,b.min=Number.MAX_VALUE,b.max=0}})(L||(e.inputLatency=L={}))}),define(ne[381],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ListError=void 0;class L extends Error{constructor(y,D){super(`ListError [${y}] ${D}`)}}e.ListError=L}),define(ne[382],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CombinedSpliceable=void 0;class L{constructor(y){this.spliceables=y}splice(y,D,S){this.spliceables.forEach(f=>f.splice(y,D,S))}}e.CombinedSpliceable=L}),define(ne[195],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ScrollbarState=void 0;const L=20;class k{constructor(D,S,f,_,g,C){this._scrollbarSize=Math.round(S),this._oppositeScrollbarSize=Math.round(f),this._arrowSize=Math.round(D),this._visibleSize=_,this._scrollSize=g,this._scrollPosition=C,this._computedAvailableSize=0,this._computedIsNeeded=!1,this._computedSliderSize=0,this._computedSliderRatio=0,this._computedSliderPosition=0,this._refreshComputedValues()}clone(){return new k(this._arrowSize,this._scrollbarSize,this._oppositeScrollbarSize,this._visibleSize,this._scrollSize,this._scrollPosition)}setVisibleSize(D){const S=Math.round(D);return this._visibleSize!==S?(this._visibleSize=S,this._refreshComputedValues(),!0):!1}setScrollSize(D){const S=Math.round(D);return this._scrollSize!==S?(this._scrollSize=S,this._refreshComputedValues(),!0):!1}setScrollPosition(D){const S=Math.round(D);return this._scrollPosition!==S?(this._scrollPosition=S,this._refreshComputedValues(),!0):!1}setScrollbarSize(D){this._scrollbarSize=Math.round(D)}setOppositeScrollbarSize(D){this._oppositeScrollbarSize=Math.round(D)}static _computeValues(D,S,f,_,g){const C=Math.max(0,f-D),s=Math.max(0,C-2*S),i=_>0&&_>f;if(!i)return{computedAvailableSize:Math.round(C),computedIsNeeded:i,computedSliderSize:Math.round(s),computedSliderRatio:0,computedSliderPosition:0};const n=Math.round(Math.max(L,Math.floor(f*s/_))),t=(s-n)/(_-f),a=g*t;return{computedAvailableSize:Math.round(C),computedIsNeeded:i,computedSliderSize:Math.round(n),computedSliderRatio:t,computedSliderPosition:Math.round(a)}}_refreshComputedValues(){const D=k._computeValues(this._oppositeScrollbarSize,this._arrowSize,this._visibleSize,this._scrollSize,this._scrollPosition);this._computedAvailableSize=D.computedAvailableSize,this._computedIsNeeded=D.computedIsNeeded,this._computedSliderSize=D.computedSliderSize,this._computedSliderRatio=D.computedSliderRatio,this._computedSliderPosition=D.computedSliderPosition}getArrowSize(){return this._arrowSize}getScrollPosition(){return this._scrollPosition}getRectangleLargeSize(){return this._computedAvailableSize}getRectangleSmallSize(){return this._scrollbarSize}isNeeded(){return this._computedIsNeeded}getSliderSize(){return this._computedSliderSize}getSliderPosition(){return this._computedSliderPosition}getDesiredScrollPositionFromOffset(D){if(!this._computedIsNeeded)return 0;const S=D-this._arrowSize-this._computedSliderSize/2;return Math.round(S/this._computedSliderRatio)}getDesiredScrollPositionFromOffsetPaged(D){if(!this._computedIsNeeded)return 0;const S=D-this._arrowSize;let f=this._scrollPosition;return S<this._computedSliderPosition?f-=this._visibleSize:f+=this._visibleSize,f}getDesiredScrollPositionFromDelta(D){if(!this._computedIsNeeded)return 0;const S=this._computedSliderPosition+D;return Math.round(S/this._computedSliderRatio)}}e.ScrollbarState=k}),define(ne[139],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WeakMapper=e.TreeError=e.TreeMouseEventTarget=e.ObjectTreeElementCollapseState=void 0;var L;(function(S){S[S.Expanded=0]=\"Expanded\",S[S.Collapsed=1]=\"Collapsed\",S[S.PreserveOrExpanded=2]=\"PreserveOrExpanded\",S[S.PreserveOrCollapsed=3]=\"PreserveOrCollapsed\"})(L||(e.ObjectTreeElementCollapseState=L={}));var k;(function(S){S[S.Unknown=0]=\"Unknown\",S[S.Twistie=1]=\"Twistie\",S[S.Element=2]=\"Element\",S[S.Filter=3]=\"Filter\"})(k||(e.TreeMouseEventTarget=k={}));class y extends Error{constructor(f,_){super(`TreeError [${f}] ${_}`)}}e.TreeError=y;class D{constructor(f){this.fn=f,this._map=new WeakMap}map(f){let _=this._map.get(f);return _||(_=this.fn(f),this._map.set(f,_)),_}}e.WeakMapper=D}),define(ne[14],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CallbackIterable=e.ArrayQueue=e.findMaxIdxBy=e.findMinBy=e.findLastMaxBy=e.findMaxBy=e.reverseOrder=e.booleanComparator=e.numberComparator=e.tieBreakComparators=e.compareBy=e.CompareResult=e.splice=e.insertInto=e.mapFind=e.asArray=e.pushMany=e.pushToEnd=e.pushToStart=e.arrayInsert=e.range=e.firstOrDefault=e.findLastIndex=e.findLast=e.distinct=e.isNonEmptyArray=e.isFalsyOrEmpty=e.coalesceInPlace=e.coalesce=e.groupBy=e.quickSelect=e.findFirstInSorted=e.binarySearch2=e.binarySearch=e.removeFastWithoutKeepingOrder=e.equals=e.tail2=e.tail=void 0;function L(R,K=0){return R[R.length-(1+K)]}e.tail=L;function k(R){if(R.length===0)throw new Error(\"Invalid tail call\");return[R.slice(0,R.length-1),R[R.length-1]]}e.tail2=k;function y(R,K,G=(Z,J)=>Z===J){if(R===K)return!0;if(!R||!K||R.length!==K.length)return!1;for(let Z=0,J=R.length;Z<J;Z++)if(!G(R[Z],K[Z]))return!1;return!0}e.equals=y;function D(R,K){const G=R.length-1;K<G&&(R[K]=R[G]),R.pop()}e.removeFastWithoutKeepingOrder=D;function S(R,K,G){return f(R.length,Z=>G(R[Z],K))}e.binarySearch=S;function f(R,K){let G=0,Z=R-1;for(;G<=Z;){const J=(G+Z)/2|0,X=K(J);if(X<0)G=J+1;else if(X>0)Z=J-1;else return J}return-(G+1)}e.binarySearch2=f;function _(R,K){let G=0,Z=R.length;if(Z===0)return 0;for(;G<Z;){const J=Math.floor((G+Z)/2);K(R[J])?Z=J:G=J+1}return G}e.findFirstInSorted=_;function g(R,K,G){if(R=R|0,R>=K.length)throw new TypeError(\"invalid index\");const Z=K[Math.floor(K.length*Math.random())],J=[],X=[],H=[];for(const B of K){const V=G(B,Z);V<0?J.push(B):V>0?X.push(B):H.push(B)}return R<J.length?g(R,J,G):R<J.length+H.length?H[0]:g(R-(J.length+H.length),X,G)}e.quickSelect=g;function C(R,K){const G=[];let Z;for(const J of R.slice(0).sort(K))!Z||K(Z[0],J)!==0?(Z=[J],G.push(Z)):Z.push(J);return G}e.groupBy=C;function s(R){return R.filter(K=>!!K)}e.coalesce=s;function i(R){let K=0;for(let G=0;G<R.length;G++)R[G]&&(R[K]=R[G],K+=1);R.length=K}e.coalesceInPlace=i;function n(R){return!Array.isArray(R)||R.length===0}e.isFalsyOrEmpty=n;function t(R){return Array.isArray(R)&&R.length>0}e.isNonEmptyArray=t;function a(R,K=G=>G){const G=new Set;return R.filter(Z=>{const J=K(Z);return G.has(J)?!1:(G.add(J),!0)})}e.distinct=a;function u(R,K){const G=h(R,K);if(G!==-1)return R[G]}e.findLast=u;function h(R,K){for(let G=R.length-1;G>=0;G--){const Z=R[G];if(K(Z))return G}return-1}e.findLastIndex=h;function r(R,K){return R.length>0?R[0]:K}e.firstOrDefault=r;function c(R,K){let G=typeof K==\"number\"?R:0;typeof K==\"number\"?G=R:(G=0,K=R);const Z=[];if(G<=K)for(let J=G;J<K;J++)Z.push(J);else for(let J=G;J>K;J--)Z.push(J);return Z}e.range=c;function o(R,K,G){const Z=R.slice(0,K),J=R.slice(K);return Z.concat(G,J)}e.arrayInsert=o;function d(R,K){const G=R.indexOf(K);G>-1&&(R.splice(G,1),R.unshift(K))}e.pushToStart=d;function l(R,K){const G=R.indexOf(K);G>-1&&(R.splice(G,1),R.push(K))}e.pushToEnd=l;function p(R,K){for(const G of K)R.push(G)}e.pushMany=p;function m(R){return Array.isArray(R)?R:[R]}e.asArray=m;function v(R,K){for(const G of R){const Z=K(G);if(Z!==void 0)return Z}}e.mapFind=v;function b(R,K,G){const Z=E(R,K),J=R.length,X=G.length;R.length=J+X;for(let H=J-1;H>=Z;H--)R[H+X]=R[H];for(let H=0;H<X;H++)R[H+Z]=G[H]}e.insertInto=b;function w(R,K,G,Z){const J=E(R,K),X=R.splice(J,G);return b(R,J,Z),X}e.splice=w;function E(R,K){return K<0?Math.max(K+R.length,0):Math.min(K,R.length)}var I;(function(R){function K(X){return X<0}R.isLessThan=K;function G(X){return X<=0}R.isLessThanOrEqual=G;function Z(X){return X>0}R.isGreaterThan=Z;function J(X){return X===0}R.isNeitherLessOrGreaterThan=J,R.greaterThan=1,R.lessThan=-1,R.neitherLessOrGreaterThan=0})(I||(e.CompareResult=I={}));function M(R,K){return(G,Z)=>K(R(G),R(Z))}e.compareBy=M;function P(...R){return(K,G)=>{for(const Z of R){const J=Z(K,G);if(!I.isNeitherLessOrGreaterThan(J))return J}return I.neitherLessOrGreaterThan}}e.tieBreakComparators=P;const x=(R,K)=>R-K;e.numberComparator=x;const T=(R,K)=>(0,e.numberComparator)(R?1:0,K?1:0);e.booleanComparator=T;function A(R){return(K,G)=>-R(K,G)}e.reverseOrder=A;function N(R,K){if(R.length===0)return;let G=R[0];for(let Z=1;Z<R.length;Z++){const J=R[Z];K(J,G)>0&&(G=J)}return G}e.findMaxBy=N;function F(R,K){if(R.length===0)return;let G=R[0];for(let Z=1;Z<R.length;Z++){const J=R[Z];K(J,G)>=0&&(G=J)}return G}e.findLastMaxBy=F;function O(R,K){return N(R,(G,Z)=>-K(G,Z))}e.findMinBy=O;function W(R,K){if(R.length===0)return-1;let G=0;for(let Z=1;Z<R.length;Z++){const J=R[Z];K(J,R[G])>0&&(G=Z)}return G}e.findMaxIdxBy=W;class U{constructor(K){this.items=K,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(K){let G=this.firstIdx;for(;G<this.items.length&&K(this.items[G]);)G++;const Z=G===this.firstIdx?null:this.items.slice(this.firstIdx,G);return this.firstIdx=G,Z}takeFromEndWhile(K){let G=this.lastIdx;for(;G>=0&&K(this.items[G]);)G--;const Z=G===this.lastIdx?null:this.items.slice(G+1,this.lastIdx+1);return this.lastIdx=G,Z}peek(){if(this.length!==0)return this.items[this.firstIdx]}dequeue(){const K=this.items[this.firstIdx];return this.firstIdx++,K}takeCount(K){const G=this.items.slice(this.firstIdx,this.firstIdx+K);return this.firstIdx+=K,G}}e.ArrayQueue=U;class j{constructor(K){this.iterate=K}toArray(){const K=[];return this.iterate(G=>(K.push(G),!0)),K}filter(K){return new j(G=>this.iterate(Z=>K(Z)?G(Z):!0))}map(K){return new j(G=>this.iterate(Z=>G(K(Z))))}findLast(K){let G;return this.iterate(Z=>(K(Z)&&(G=Z),!0)),G}findLastMaxBy(K){let G,Z=!0;return this.iterate(J=>((Z||I.isGreaterThan(K(J,G)))&&(Z=!1,G=J),!0)),G}}e.CallbackIterable=j,j.empty=new j(R=>{})}),define(ne[261],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CachedFunction=e.LRUCachedFunction=void 0;class L{constructor(D){this.fn=D,this.lastCache=void 0,this.lastArgKey=void 0}get(D){const S=JSON.stringify(D);return this.lastArgKey!==S&&(this.lastArgKey=S,this.lastCache=this.fn(D)),this.lastCache}}e.LRUCachedFunction=L;class k{get cachedValues(){return this._map}constructor(D){this.fn=D,this._map=new Map}get(D){if(this._map.has(D))return this._map.get(D);const S=this.fn(D);return this._map.set(D,S),S}}e.CachedFunction=k}),define(ne[196],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SetMap=void 0;class L{constructor(){this.map=new Map}add(y,D){let S=this.map.get(y);S||(S=new Set,this.map.set(y,S)),S.add(D)}delete(y,D){const S=this.map.get(y);S&&(S.delete(D),S.size===0&&this.map.delete(y))}forEach(y,D){const S=this.map.get(y);S&&S.forEach(D)}get(y){const D=this.map.get(y);return D||new Set}}e.SetMap=L}),define(ne[38],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Color=e.HSVA=e.HSLA=e.RGBA=void 0;function L(f,_){const g=Math.pow(10,_);return Math.round(f*g)/g}class k{constructor(_,g,C,s=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math.max(0,_))|0,this.g=Math.min(255,Math.max(0,g))|0,this.b=Math.min(255,Math.max(0,C))|0,this.a=L(Math.max(Math.min(1,s),0),3)}static equals(_,g){return _.r===g.r&&_.g===g.g&&_.b===g.b&&_.a===g.a}}e.RGBA=k;class y{constructor(_,g,C,s){this._hslaBrand=void 0,this.h=Math.max(Math.min(360,_),0)|0,this.s=L(Math.max(Math.min(1,g),0),3),this.l=L(Math.max(Math.min(1,C),0),3),this.a=L(Math.max(Math.min(1,s),0),3)}static equals(_,g){return _.h===g.h&&_.s===g.s&&_.l===g.l&&_.a===g.a}static fromRGBA(_){const g=_.r/255,C=_.g/255,s=_.b/255,i=_.a,n=Math.max(g,C,s),t=Math.min(g,C,s);let a=0,u=0;const h=(t+n)/2,r=n-t;if(r>0){switch(u=Math.min(h<=.5?r/(2*h):r/(2-2*h),1),n){case g:a=(C-s)/r+(C<s?6:0);break;case C:a=(s-g)/r+2;break;case s:a=(g-C)/r+4;break}a*=60,a=Math.round(a)}return new y(a,u,h,i)}static _hue2rgb(_,g,C){return C<0&&(C+=1),C>1&&(C-=1),C<1/6?_+(g-_)*6*C:C<1/2?g:C<2/3?_+(g-_)*(2/3-C)*6:_}static toRGBA(_){const g=_.h/360,{s:C,l:s,a:i}=_;let n,t,a;if(C===0)n=t=a=s;else{const u=s<.5?s*(1+C):s+C-s*C,h=2*s-u;n=y._hue2rgb(h,u,g+1/3),t=y._hue2rgb(h,u,g),a=y._hue2rgb(h,u,g-1/3)}return new k(Math.round(n*255),Math.round(t*255),Math.round(a*255),i)}}e.HSLA=y;class D{constructor(_,g,C,s){this._hsvaBrand=void 0,this.h=Math.max(Math.min(360,_),0)|0,this.s=L(Math.max(Math.min(1,g),0),3),this.v=L(Math.max(Math.min(1,C),0),3),this.a=L(Math.max(Math.min(1,s),0),3)}static equals(_,g){return _.h===g.h&&_.s===g.s&&_.v===g.v&&_.a===g.a}static fromRGBA(_){const g=_.r/255,C=_.g/255,s=_.b/255,i=Math.max(g,C,s),n=Math.min(g,C,s),t=i-n,a=i===0?0:t/i;let u;return t===0?u=0:i===g?u=((C-s)/t%6+6)%6:i===C?u=(s-g)/t+2:u=(g-C)/t+4,new D(Math.round(u*60),a,i,_.a)}static toRGBA(_){const{h:g,s:C,v:s,a:i}=_,n=s*C,t=n*(1-Math.abs(g/60%2-1)),a=s-n;let[u,h,r]=[0,0,0];return g<60?(u=n,h=t):g<120?(u=t,h=n):g<180?(h=n,r=t):g<240?(h=t,r=n):g<300?(u=t,r=n):g<=360&&(u=n,r=t),u=Math.round((u+a)*255),h=Math.round((h+a)*255),r=Math.round((r+a)*255),new k(u,h,r,i)}}e.HSVA=D;class S{static fromHex(_){return S.Format.CSS.parseHex(_)||S.red}static equals(_,g){return!_&&!g?!0:!_||!g?!1:_.equals(g)}get hsla(){return this._hsla?this._hsla:y.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:D.fromRGBA(this.rgba)}constructor(_){if(_)if(_ instanceof k)this.rgba=_;else if(_ instanceof y)this._hsla=_,this.rgba=y.toRGBA(_);else if(_ instanceof D)this._hsva=_,this.rgba=D.toRGBA(_);else throw new Error(\"Invalid color ctor argument\");else throw new Error(\"Color needs a value\")}equals(_){return!!_&&k.equals(this.rgba,_.rgba)&&y.equals(this.hsla,_.hsla)&&D.equals(this.hsva,_.hsva)}getRelativeLuminance(){const _=S._relativeLuminanceForComponent(this.rgba.r),g=S._relativeLuminanceForComponent(this.rgba.g),C=S._relativeLuminanceForComponent(this.rgba.b),s=.2126*_+.7152*g+.0722*C;return L(s,4)}static _relativeLuminanceForComponent(_){const g=_/255;return g<=.03928?g/12.92:Math.pow((g+.055)/1.055,2.4)}isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e3>=128}isLighterThan(_){const g=this.getRelativeLuminance(),C=_.getRelativeLuminance();return g>C}isDarkerThan(_){const g=this.getRelativeLuminance(),C=_.getRelativeLuminance();return g<C}lighten(_){return new S(new y(this.hsla.h,this.hsla.s,this.hsla.l+this.hsla.l*_,this.hsla.a))}darken(_){return new S(new y(this.hsla.h,this.hsla.s,this.hsla.l-this.hsla.l*_,this.hsla.a))}transparent(_){const{r:g,g:C,b:s,a:i}=this.rgba;return new S(new k(g,C,s,i*_))}isTransparent(){return this.rgba.a===0}isOpaque(){return this.rgba.a===1}opposite(){return new S(new k(255-this.rgba.r,255-this.rgba.g,255-this.rgba.b,this.rgba.a))}makeOpaque(_){if(this.isOpaque()||_.rgba.a!==1)return this;const{r:g,g:C,b:s,a:i}=this.rgba;return new S(new k(_.rgba.r-i*(_.rgba.r-g),_.rgba.g-i*(_.rgba.g-C),_.rgba.b-i*(_.rgba.b-s),1))}toString(){return this._toString||(this._toString=S.Format.CSS.format(this)),this._toString}static getLighterColor(_,g,C){if(_.isLighterThan(g))return _;C=C||.5;const s=_.getRelativeLuminance(),i=g.getRelativeLuminance();return C=C*(i-s)/i,_.lighten(C)}static getDarkerColor(_,g,C){if(_.isDarkerThan(g))return _;C=C||.5;const s=_.getRelativeLuminance(),i=g.getRelativeLuminance();return C=C*(s-i)/s,_.darken(C)}}e.Color=S,S.white=new S(new k(255,255,255,1)),S.black=new S(new k(0,0,0,1)),S.red=new S(new k(255,0,0,1)),S.blue=new S(new k(0,0,255,1)),S.green=new S(new k(0,255,0,1)),S.cyan=new S(new k(0,255,255,1)),S.lightgrey=new S(new k(211,211,211,1)),S.transparent=new S(new k(0,0,0,0)),function(f){let _;(function(g){let C;(function(s){function i(l){return l.rgba.a===1?`rgb(${l.rgba.r}, ${l.rgba.g}, ${l.rgba.b})`:f.Format.CSS.formatRGBA(l)}s.formatRGB=i;function n(l){return`rgba(${l.rgba.r}, ${l.rgba.g}, ${l.rgba.b}, ${+l.rgba.a.toFixed(2)})`}s.formatRGBA=n;function t(l){return l.hsla.a===1?`hsl(${l.hsla.h}, ${(l.hsla.s*100).toFixed(2)}%, ${(l.hsla.l*100).toFixed(2)}%)`:f.Format.CSS.formatHSLA(l)}s.formatHSL=t;function a(l){return`hsla(${l.hsla.h}, ${(l.hsla.s*100).toFixed(2)}%, ${(l.hsla.l*100).toFixed(2)}%, ${l.hsla.a.toFixed(2)})`}s.formatHSLA=a;function u(l){const p=l.toString(16);return p.length!==2?\"0\"+p:p}function h(l){return`#${u(l.rgba.r)}${u(l.rgba.g)}${u(l.rgba.b)}`}s.formatHex=h;function r(l,p=!1){return p&&l.rgba.a===1?f.Format.CSS.formatHex(l):`#${u(l.rgba.r)}${u(l.rgba.g)}${u(l.rgba.b)}${u(Math.round(l.rgba.a*255))}`}s.formatHexA=r;function c(l){return l.isOpaque()?f.Format.CSS.formatHex(l):f.Format.CSS.formatRGBA(l)}s.format=c;function o(l){const p=l.length;if(p===0||l.charCodeAt(0)!==35)return null;if(p===7){const m=16*d(l.charCodeAt(1))+d(l.charCodeAt(2)),v=16*d(l.charCodeAt(3))+d(l.charCodeAt(4)),b=16*d(l.charCodeAt(5))+d(l.charCodeAt(6));return new f(new k(m,v,b,1))}if(p===9){const m=16*d(l.charCodeAt(1))+d(l.charCodeAt(2)),v=16*d(l.charCodeAt(3))+d(l.charCodeAt(4)),b=16*d(l.charCodeAt(5))+d(l.charCodeAt(6)),w=16*d(l.charCodeAt(7))+d(l.charCodeAt(8));return new f(new k(m,v,b,w/255))}if(p===4){const m=d(l.charCodeAt(1)),v=d(l.charCodeAt(2)),b=d(l.charCodeAt(3));return new f(new k(16*m+m,16*v+v,16*b+b))}if(p===5){const m=d(l.charCodeAt(1)),v=d(l.charCodeAt(2)),b=d(l.charCodeAt(3)),w=d(l.charCodeAt(4));return new f(new k(16*m+m,16*v+v,16*b+b,(16*w+w)/255))}return null}s.parseHex=o;function d(l){switch(l){case 48:return 0;case 49:return 1;case 50:return 2;case 51:return 3;case 52:return 4;case 53:return 5;case 54:return 6;case 55:return 7;case 56:return 8;case 57:return 9;case 97:return 10;case 65:return 10;case 98:return 11;case 66:return 11;case 99:return 12;case 67:return 12;case 100:return 13;case 68:return 13;case 101:return 14;case 69:return 14;case 102:return 15;case 70:return 15}return 0}})(C=g.CSS||(g.CSS={}))})(_=f.Format||(f.Format={}))}(S||(e.Color=S={}))}),define(ne[106],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.memoize=void 0;function L(k,y,D){let S=null,f=null;if(typeof D.value==\"function\"?(S=\"value\",f=D.value,f.length!==0&&console.warn(\"Memoize should only be used in functions with zero parameters\")):typeof D.get==\"function\"&&(S=\"get\",f=D.get),!f)throw new Error(\"not supported\");const _=`$memoize$${y}`;D[S]=function(...g){return this.hasOwnProperty(_)||Object.defineProperty(this,_,{configurable:!1,enumerable:!1,writable:!1,value:f.apply(this,g)}),this[_]}}e.memoize=L}),define(ne[383],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DiffChange=void 0;class L{constructor(y,D,S,f){this.originalStart=y,this.originalLength=D,this.modifiedStart=S,this.modifiedLength=f}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}e.DiffChange=L}),define(ne[9],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BugIndicatingError=e.ErrorNoTelemetry=e.NotSupportedError=e.illegalState=e.illegalArgument=e.canceled=e.CancellationError=e.isCancellationError=e.transformErrorForSerialization=e.onUnexpectedExternalError=e.onUnexpectedError=e.errorHandler=e.ErrorHandler=void 0;class L{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(u){setTimeout(()=>{throw u.stack?n.isErrorNoTelemetry(u)?new n(u.message+`\n\n`+u.stack):new Error(u.message+`\n\n`+u.stack):u},0)}}emit(u){this.listeners.forEach(h=>{h(u)})}onUnexpectedError(u){this.unexpectedErrorHandler(u),this.emit(u)}onUnexpectedExternalError(u){this.unexpectedErrorHandler(u)}}e.ErrorHandler=L,e.errorHandler=new L;function k(a){f(a)||e.errorHandler.onUnexpectedError(a)}e.onUnexpectedError=k;function y(a){f(a)||e.errorHandler.onUnexpectedExternalError(a)}e.onUnexpectedExternalError=y;function D(a){if(a instanceof Error){const{name:u,message:h}=a,r=a.stacktrace||a.stack;return{$isError:!0,name:u,message:h,stack:r,noTelemetry:n.isErrorNoTelemetry(a)}}return a}e.transformErrorForSerialization=D;const S=\"Canceled\";function f(a){return a instanceof _?!0:a instanceof Error&&a.name===S&&a.message===S}e.isCancellationError=f;class _ extends Error{constructor(){super(S),this.name=this.message}}e.CancellationError=_;function g(){const a=new Error(S);return a.name=a.message,a}e.canceled=g;function C(a){return a?new Error(`Illegal argument: ${a}`):new Error(\"Illegal argument\")}e.illegalArgument=C;function s(a){return a?new Error(`Illegal state: ${a}`):new Error(\"Illegal state\")}e.illegalState=s;class i extends Error{constructor(u){super(\"NotSupported\"),u&&(this.message=u)}}e.NotSupportedError=i;class n extends Error{constructor(u){super(u),this.name=\"CodeExpectedError\"}static fromError(u){if(u instanceof n)return u;const h=new n;return h.message=u.message,h.stack=u.stack,h}static isErrorNoTelemetry(u){return u.name===\"CodeExpectedError\"}}e.ErrorNoTelemetry=n;class t extends Error{constructor(u){super(u||\"An unexpected bug occurred.\"),Object.setPrototypeOf(this,t.prototype)}}e.BugIndicatingError=t}),define(ne[89],se([1,0,9]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createTrustedTypesPolicy=void 0;function k(y,D){var S;const f=globalThis.MonacoEnvironment;if(f?.createTrustedTypesPolicy)try{return f.createTrustedTypesPolicy(y,D)}catch(_){(0,L.onUnexpectedError)(_);return}try{return(S=window.trustedTypes)===null||S===void 0?void 0:S.createPolicy(y,D)}catch(_){(0,L.onUnexpectedError)(_);return}}e.createTrustedTypesPolicy=k}),define(ne[85],se([1,0,9]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.checkAdjacentItems=e.assertFn=e.assertNever=e.ok=void 0;function k(f,_){if(!f)throw new Error(_?`Assertion failed (${_})`:\"Assertion Failed\")}e.ok=k;function y(f,_=\"Unreachable\"){throw new Error(_)}e.assertNever=y;function D(f){if(!f()){debugger;f(),(0,L.onUnexpectedError)(new L.BugIndicatingError(\"Assertion Failed\"))}}e.assertFn=D;function S(f,_){let g=0;for(;g<f.length-1;){const C=f[g],s=f[g+1];if(!_(C,s))return!1;g++}return!0}e.checkAdjacentItems=S}),define(ne[99],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.once=void 0;function L(k){const y=this;let D=!1,S;return function(){return D||(D=!0,S=k.apply(y,arguments)),S}}e.once=L}),define(ne[164],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.defaultGenerator=e.IdGenerator=void 0;class L{constructor(y){this._prefix=y,this._lastId=0}nextId(){return this._prefix+ ++this._lastId}}e.IdGenerator=L,e.defaultGenerator=new L(\"id#\")}),define(ne[46],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Iterable=void 0;var L;(function(k){function y(o){return o&&typeof o==\"object\"&&typeof o[Symbol.iterator]==\"function\"}k.is=y;const D=Object.freeze([]);function S(){return D}k.empty=S;function*f(o){yield o}k.single=f;function _(o){return y(o)?o:f(o)}k.wrap=_;function g(o){return o||D}k.from=g;function C(o){return!o||o[Symbol.iterator]().next().done===!0}k.isEmpty=C;function s(o){return o[Symbol.iterator]().next().value}k.first=s;function i(o,d){for(const l of o)if(d(l))return!0;return!1}k.some=i;function n(o,d){for(const l of o)if(d(l))return l}k.find=n;function*t(o,d){for(const l of o)d(l)&&(yield l)}k.filter=t;function*a(o,d){let l=0;for(const p of o)yield d(p,l++)}k.map=a;function*u(...o){for(const d of o)for(const l of d)yield l}k.concat=u;function h(o,d,l){let p=l;for(const m of o)p=d(p,m);return p}k.reduce=h;function*r(o,d,l=o.length){for(d<0&&(d+=o.length),l<0?l+=o.length:l>o.length&&(l=o.length);d<l;d++)yield o[d]}k.slice=r;function c(o,d=Number.POSITIVE_INFINITY){const l=[];if(d===0)return[l,o];const p=o[Symbol.iterator]();for(let m=0;m<d;m++){const v=p.next();if(v.done)return[l,k.empty()];l.push(v.value)}return[l,{[Symbol.iterator](){return p}}]}k.consume=c})(L||(e.Iterable=L={}))}),define(ne[63],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.KeyChord=e.KeyCodeUtils=e.IMMUTABLE_KEY_CODE_TO_CODE=e.IMMUTABLE_CODE_TO_KEY_CODE=e.NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE=e.EVENT_KEY_CODE_MAP=void 0;class L{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(i,n){this._keyCodeToStr[i]=n,this._strToKeyCode[n.toLowerCase()]=i}keyCodeToStr(i){return this._keyCodeToStr[i]}strToKeyCode(i){return this._strToKeyCode[i.toLowerCase()]||0}}const k=new L,y=new L,D=new L;e.EVENT_KEY_CODE_MAP=new Array(230),e.NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE={};const S=[],f=Object.create(null),_=Object.create(null);e.IMMUTABLE_CODE_TO_KEY_CODE=[],e.IMMUTABLE_KEY_CODE_TO_CODE=[];for(let s=0;s<=193;s++)e.IMMUTABLE_CODE_TO_KEY_CODE[s]=-1;for(let s=0;s<=132;s++)e.IMMUTABLE_KEY_CODE_TO_CODE[s]=-1;(function(){const s=\"\",i=[[1,0,\"None\",0,\"unknown\",0,\"VK_UNKNOWN\",s,s],[1,1,\"Hyper\",0,s,0,s,s,s],[1,2,\"Super\",0,s,0,s,s,s],[1,3,\"Fn\",0,s,0,s,s,s],[1,4,\"FnLock\",0,s,0,s,s,s],[1,5,\"Suspend\",0,s,0,s,s,s],[1,6,\"Resume\",0,s,0,s,s,s],[1,7,\"Turbo\",0,s,0,s,s,s],[1,8,\"Sleep\",0,s,0,\"VK_SLEEP\",s,s],[1,9,\"WakeUp\",0,s,0,s,s,s],[0,10,\"KeyA\",31,\"A\",65,\"VK_A\",s,s],[0,11,\"KeyB\",32,\"B\",66,\"VK_B\",s,s],[0,12,\"KeyC\",33,\"C\",67,\"VK_C\",s,s],[0,13,\"KeyD\",34,\"D\",68,\"VK_D\",s,s],[0,14,\"KeyE\",35,\"E\",69,\"VK_E\",s,s],[0,15,\"KeyF\",36,\"F\",70,\"VK_F\",s,s],[0,16,\"KeyG\",37,\"G\",71,\"VK_G\",s,s],[0,17,\"KeyH\",38,\"H\",72,\"VK_H\",s,s],[0,18,\"KeyI\",39,\"I\",73,\"VK_I\",s,s],[0,19,\"KeyJ\",40,\"J\",74,\"VK_J\",s,s],[0,20,\"KeyK\",41,\"K\",75,\"VK_K\",s,s],[0,21,\"KeyL\",42,\"L\",76,\"VK_L\",s,s],[0,22,\"KeyM\",43,\"M\",77,\"VK_M\",s,s],[0,23,\"KeyN\",44,\"N\",78,\"VK_N\",s,s],[0,24,\"KeyO\",45,\"O\",79,\"VK_O\",s,s],[0,25,\"KeyP\",46,\"P\",80,\"VK_P\",s,s],[0,26,\"KeyQ\",47,\"Q\",81,\"VK_Q\",s,s],[0,27,\"KeyR\",48,\"R\",82,\"VK_R\",s,s],[0,28,\"KeyS\",49,\"S\",83,\"VK_S\",s,s],[0,29,\"KeyT\",50,\"T\",84,\"VK_T\",s,s],[0,30,\"KeyU\",51,\"U\",85,\"VK_U\",s,s],[0,31,\"KeyV\",52,\"V\",86,\"VK_V\",s,s],[0,32,\"KeyW\",53,\"W\",87,\"VK_W\",s,s],[0,33,\"KeyX\",54,\"X\",88,\"VK_X\",s,s],[0,34,\"KeyY\",55,\"Y\",89,\"VK_Y\",s,s],[0,35,\"KeyZ\",56,\"Z\",90,\"VK_Z\",s,s],[0,36,\"Digit1\",22,\"1\",49,\"VK_1\",s,s],[0,37,\"Digit2\",23,\"2\",50,\"VK_2\",s,s],[0,38,\"Digit3\",24,\"3\",51,\"VK_3\",s,s],[0,39,\"Digit4\",25,\"4\",52,\"VK_4\",s,s],[0,40,\"Digit5\",26,\"5\",53,\"VK_5\",s,s],[0,41,\"Digit6\",27,\"6\",54,\"VK_6\",s,s],[0,42,\"Digit7\",28,\"7\",55,\"VK_7\",s,s],[0,43,\"Digit8\",29,\"8\",56,\"VK_8\",s,s],[0,44,\"Digit9\",30,\"9\",57,\"VK_9\",s,s],[0,45,\"Digit0\",21,\"0\",48,\"VK_0\",s,s],[1,46,\"Enter\",3,\"Enter\",13,\"VK_RETURN\",s,s],[1,47,\"Escape\",9,\"Escape\",27,\"VK_ESCAPE\",s,s],[1,48,\"Backspace\",1,\"Backspace\",8,\"VK_BACK\",s,s],[1,49,\"Tab\",2,\"Tab\",9,\"VK_TAB\",s,s],[1,50,\"Space\",10,\"Space\",32,\"VK_SPACE\",s,s],[0,51,\"Minus\",88,\"-\",189,\"VK_OEM_MINUS\",\"-\",\"OEM_MINUS\"],[0,52,\"Equal\",86,\"=\",187,\"VK_OEM_PLUS\",\"=\",\"OEM_PLUS\"],[0,53,\"BracketLeft\",92,\"[\",219,\"VK_OEM_4\",\"[\",\"OEM_4\"],[0,54,\"BracketRight\",94,\"]\",221,\"VK_OEM_6\",\"]\",\"OEM_6\"],[0,55,\"Backslash\",93,\"\\\\\",220,\"VK_OEM_5\",\"\\\\\",\"OEM_5\"],[0,56,\"IntlHash\",0,s,0,s,s,s],[0,57,\"Semicolon\",85,\";\",186,\"VK_OEM_1\",\";\",\"OEM_1\"],[0,58,\"Quote\",95,\"'\",222,\"VK_OEM_7\",\"'\",\"OEM_7\"],[0,59,\"Backquote\",91,\"`\",192,\"VK_OEM_3\",\"`\",\"OEM_3\"],[0,60,\"Comma\",87,\",\",188,\"VK_OEM_COMMA\",\",\",\"OEM_COMMA\"],[0,61,\"Period\",89,\".\",190,\"VK_OEM_PERIOD\",\".\",\"OEM_PERIOD\"],[0,62,\"Slash\",90,\"/\",191,\"VK_OEM_2\",\"/\",\"OEM_2\"],[1,63,\"CapsLock\",8,\"CapsLock\",20,\"VK_CAPITAL\",s,s],[1,64,\"F1\",59,\"F1\",112,\"VK_F1\",s,s],[1,65,\"F2\",60,\"F2\",113,\"VK_F2\",s,s],[1,66,\"F3\",61,\"F3\",114,\"VK_F3\",s,s],[1,67,\"F4\",62,\"F4\",115,\"VK_F4\",s,s],[1,68,\"F5\",63,\"F5\",116,\"VK_F5\",s,s],[1,69,\"F6\",64,\"F6\",117,\"VK_F6\",s,s],[1,70,\"F7\",65,\"F7\",118,\"VK_F7\",s,s],[1,71,\"F8\",66,\"F8\",119,\"VK_F8\",s,s],[1,72,\"F9\",67,\"F9\",120,\"VK_F9\",s,s],[1,73,\"F10\",68,\"F10\",121,\"VK_F10\",s,s],[1,74,\"F11\",69,\"F11\",122,\"VK_F11\",s,s],[1,75,\"F12\",70,\"F12\",123,\"VK_F12\",s,s],[1,76,\"PrintScreen\",0,s,0,s,s,s],[1,77,\"ScrollLock\",84,\"ScrollLock\",145,\"VK_SCROLL\",s,s],[1,78,\"Pause\",7,\"PauseBreak\",19,\"VK_PAUSE\",s,s],[1,79,\"Insert\",19,\"Insert\",45,\"VK_INSERT\",s,s],[1,80,\"Home\",14,\"Home\",36,\"VK_HOME\",s,s],[1,81,\"PageUp\",11,\"PageUp\",33,\"VK_PRIOR\",s,s],[1,82,\"Delete\",20,\"Delete\",46,\"VK_DELETE\",s,s],[1,83,\"End\",13,\"End\",35,\"VK_END\",s,s],[1,84,\"PageDown\",12,\"PageDown\",34,\"VK_NEXT\",s,s],[1,85,\"ArrowRight\",17,\"RightArrow\",39,\"VK_RIGHT\",\"Right\",s],[1,86,\"ArrowLeft\",15,\"LeftArrow\",37,\"VK_LEFT\",\"Left\",s],[1,87,\"ArrowDown\",18,\"DownArrow\",40,\"VK_DOWN\",\"Down\",s],[1,88,\"ArrowUp\",16,\"UpArrow\",38,\"VK_UP\",\"Up\",s],[1,89,\"NumLock\",83,\"NumLock\",144,\"VK_NUMLOCK\",s,s],[1,90,\"NumpadDivide\",113,\"NumPad_Divide\",111,\"VK_DIVIDE\",s,s],[1,91,\"NumpadMultiply\",108,\"NumPad_Multiply\",106,\"VK_MULTIPLY\",s,s],[1,92,\"NumpadSubtract\",111,\"NumPad_Subtract\",109,\"VK_SUBTRACT\",s,s],[1,93,\"NumpadAdd\",109,\"NumPad_Add\",107,\"VK_ADD\",s,s],[1,94,\"NumpadEnter\",3,s,0,s,s,s],[1,95,\"Numpad1\",99,\"NumPad1\",97,\"VK_NUMPAD1\",s,s],[1,96,\"Numpad2\",100,\"NumPad2\",98,\"VK_NUMPAD2\",s,s],[1,97,\"Numpad3\",101,\"NumPad3\",99,\"VK_NUMPAD3\",s,s],[1,98,\"Numpad4\",102,\"NumPad4\",100,\"VK_NUMPAD4\",s,s],[1,99,\"Numpad5\",103,\"NumPad5\",101,\"VK_NUMPAD5\",s,s],[1,100,\"Numpad6\",104,\"NumPad6\",102,\"VK_NUMPAD6\",s,s],[1,101,\"Numpad7\",105,\"NumPad7\",103,\"VK_NUMPAD7\",s,s],[1,102,\"Numpad8\",106,\"NumPad8\",104,\"VK_NUMPAD8\",s,s],[1,103,\"Numpad9\",107,\"NumPad9\",105,\"VK_NUMPAD9\",s,s],[1,104,\"Numpad0\",98,\"NumPad0\",96,\"VK_NUMPAD0\",s,s],[1,105,\"NumpadDecimal\",112,\"NumPad_Decimal\",110,\"VK_DECIMAL\",s,s],[0,106,\"IntlBackslash\",97,\"OEM_102\",226,\"VK_OEM_102\",s,s],[1,107,\"ContextMenu\",58,\"ContextMenu\",93,s,s,s],[1,108,\"Power\",0,s,0,s,s,s],[1,109,\"NumpadEqual\",0,s,0,s,s,s],[1,110,\"F13\",71,\"F13\",124,\"VK_F13\",s,s],[1,111,\"F14\",72,\"F14\",125,\"VK_F14\",s,s],[1,112,\"F15\",73,\"F15\",126,\"VK_F15\",s,s],[1,113,\"F16\",74,\"F16\",127,\"VK_F16\",s,s],[1,114,\"F17\",75,\"F17\",128,\"VK_F17\",s,s],[1,115,\"F18\",76,\"F18\",129,\"VK_F18\",s,s],[1,116,\"F19\",77,\"F19\",130,\"VK_F19\",s,s],[1,117,\"F20\",78,\"F20\",131,\"VK_F20\",s,s],[1,118,\"F21\",79,\"F21\",132,\"VK_F21\",s,s],[1,119,\"F22\",80,\"F22\",133,\"VK_F22\",s,s],[1,120,\"F23\",81,\"F23\",134,\"VK_F23\",s,s],[1,121,\"F24\",82,\"F24\",135,\"VK_F24\",s,s],[1,122,\"Open\",0,s,0,s,s,s],[1,123,\"Help\",0,s,0,s,s,s],[1,124,\"Select\",0,s,0,s,s,s],[1,125,\"Again\",0,s,0,s,s,s],[1,126,\"Undo\",0,s,0,s,s,s],[1,127,\"Cut\",0,s,0,s,s,s],[1,128,\"Copy\",0,s,0,s,s,s],[1,129,\"Paste\",0,s,0,s,s,s],[1,130,\"Find\",0,s,0,s,s,s],[1,131,\"AudioVolumeMute\",117,\"AudioVolumeMute\",173,\"VK_VOLUME_MUTE\",s,s],[1,132,\"AudioVolumeUp\",118,\"AudioVolumeUp\",175,\"VK_VOLUME_UP\",s,s],[1,133,\"AudioVolumeDown\",119,\"AudioVolumeDown\",174,\"VK_VOLUME_DOWN\",s,s],[1,134,\"NumpadComma\",110,\"NumPad_Separator\",108,\"VK_SEPARATOR\",s,s],[0,135,\"IntlRo\",115,\"ABNT_C1\",193,\"VK_ABNT_C1\",s,s],[1,136,\"KanaMode\",0,s,0,s,s,s],[0,137,\"IntlYen\",0,s,0,s,s,s],[1,138,\"Convert\",0,s,0,s,s,s],[1,139,\"NonConvert\",0,s,0,s,s,s],[1,140,\"Lang1\",0,s,0,s,s,s],[1,141,\"Lang2\",0,s,0,s,s,s],[1,142,\"Lang3\",0,s,0,s,s,s],[1,143,\"Lang4\",0,s,0,s,s,s],[1,144,\"Lang5\",0,s,0,s,s,s],[1,145,\"Abort\",0,s,0,s,s,s],[1,146,\"Props\",0,s,0,s,s,s],[1,147,\"NumpadParenLeft\",0,s,0,s,s,s],[1,148,\"NumpadParenRight\",0,s,0,s,s,s],[1,149,\"NumpadBackspace\",0,s,0,s,s,s],[1,150,\"NumpadMemoryStore\",0,s,0,s,s,s],[1,151,\"NumpadMemoryRecall\",0,s,0,s,s,s],[1,152,\"NumpadMemoryClear\",0,s,0,s,s,s],[1,153,\"NumpadMemoryAdd\",0,s,0,s,s,s],[1,154,\"NumpadMemorySubtract\",0,s,0,s,s,s],[1,155,\"NumpadClear\",131,\"Clear\",12,\"VK_CLEAR\",s,s],[1,156,\"NumpadClearEntry\",0,s,0,s,s,s],[1,0,s,5,\"Ctrl\",17,\"VK_CONTROL\",s,s],[1,0,s,4,\"Shift\",16,\"VK_SHIFT\",s,s],[1,0,s,6,\"Alt\",18,\"VK_MENU\",s,s],[1,0,s,57,\"Meta\",91,\"VK_COMMAND\",s,s],[1,157,\"ControlLeft\",5,s,0,\"VK_LCONTROL\",s,s],[1,158,\"ShiftLeft\",4,s,0,\"VK_LSHIFT\",s,s],[1,159,\"AltLeft\",6,s,0,\"VK_LMENU\",s,s],[1,160,\"MetaLeft\",57,s,0,\"VK_LWIN\",s,s],[1,161,\"ControlRight\",5,s,0,\"VK_RCONTROL\",s,s],[1,162,\"ShiftRight\",4,s,0,\"VK_RSHIFT\",s,s],[1,163,\"AltRight\",6,s,0,\"VK_RMENU\",s,s],[1,164,\"MetaRight\",57,s,0,\"VK_RWIN\",s,s],[1,165,\"BrightnessUp\",0,s,0,s,s,s],[1,166,\"BrightnessDown\",0,s,0,s,s,s],[1,167,\"MediaPlay\",0,s,0,s,s,s],[1,168,\"MediaRecord\",0,s,0,s,s,s],[1,169,\"MediaFastForward\",0,s,0,s,s,s],[1,170,\"MediaRewind\",0,s,0,s,s,s],[1,171,\"MediaTrackNext\",124,\"MediaTrackNext\",176,\"VK_MEDIA_NEXT_TRACK\",s,s],[1,172,\"MediaTrackPrevious\",125,\"MediaTrackPrevious\",177,\"VK_MEDIA_PREV_TRACK\",s,s],[1,173,\"MediaStop\",126,\"MediaStop\",178,\"VK_MEDIA_STOP\",s,s],[1,174,\"Eject\",0,s,0,s,s,s],[1,175,\"MediaPlayPause\",127,\"MediaPlayPause\",179,\"VK_MEDIA_PLAY_PAUSE\",s,s],[1,176,\"MediaSelect\",128,\"LaunchMediaPlayer\",181,\"VK_MEDIA_LAUNCH_MEDIA_SELECT\",s,s],[1,177,\"LaunchMail\",129,\"LaunchMail\",180,\"VK_MEDIA_LAUNCH_MAIL\",s,s],[1,178,\"LaunchApp2\",130,\"LaunchApp2\",183,\"VK_MEDIA_LAUNCH_APP2\",s,s],[1,179,\"LaunchApp1\",0,s,0,\"VK_MEDIA_LAUNCH_APP1\",s,s],[1,180,\"SelectTask\",0,s,0,s,s,s],[1,181,\"LaunchScreenSaver\",0,s,0,s,s,s],[1,182,\"BrowserSearch\",120,\"BrowserSearch\",170,\"VK_BROWSER_SEARCH\",s,s],[1,183,\"BrowserHome\",121,\"BrowserHome\",172,\"VK_BROWSER_HOME\",s,s],[1,184,\"BrowserBack\",122,\"BrowserBack\",166,\"VK_BROWSER_BACK\",s,s],[1,185,\"BrowserForward\",123,\"BrowserForward\",167,\"VK_BROWSER_FORWARD\",s,s],[1,186,\"BrowserStop\",0,s,0,\"VK_BROWSER_STOP\",s,s],[1,187,\"BrowserRefresh\",0,s,0,\"VK_BROWSER_REFRESH\",s,s],[1,188,\"BrowserFavorites\",0,s,0,\"VK_BROWSER_FAVORITES\",s,s],[1,189,\"ZoomToggle\",0,s,0,s,s,s],[1,190,\"MailReply\",0,s,0,s,s,s],[1,191,\"MailForward\",0,s,0,s,s,s],[1,192,\"MailSend\",0,s,0,s,s,s],[1,0,s,114,\"KeyInComposition\",229,s,s,s],[1,0,s,116,\"ABNT_C2\",194,\"VK_ABNT_C2\",s,s],[1,0,s,96,\"OEM_8\",223,\"VK_OEM_8\",s,s],[1,0,s,0,s,0,\"VK_KANA\",s,s],[1,0,s,0,s,0,\"VK_HANGUL\",s,s],[1,0,s,0,s,0,\"VK_JUNJA\",s,s],[1,0,s,0,s,0,\"VK_FINAL\",s,s],[1,0,s,0,s,0,\"VK_HANJA\",s,s],[1,0,s,0,s,0,\"VK_KANJI\",s,s],[1,0,s,0,s,0,\"VK_CONVERT\",s,s],[1,0,s,0,s,0,\"VK_NONCONVERT\",s,s],[1,0,s,0,s,0,\"VK_ACCEPT\",s,s],[1,0,s,0,s,0,\"VK_MODECHANGE\",s,s],[1,0,s,0,s,0,\"VK_SELECT\",s,s],[1,0,s,0,s,0,\"VK_PRINT\",s,s],[1,0,s,0,s,0,\"VK_EXECUTE\",s,s],[1,0,s,0,s,0,\"VK_SNAPSHOT\",s,s],[1,0,s,0,s,0,\"VK_HELP\",s,s],[1,0,s,0,s,0,\"VK_APPS\",s,s],[1,0,s,0,s,0,\"VK_PROCESSKEY\",s,s],[1,0,s,0,s,0,\"VK_PACKET\",s,s],[1,0,s,0,s,0,\"VK_DBE_SBCSCHAR\",s,s],[1,0,s,0,s,0,\"VK_DBE_DBCSCHAR\",s,s],[1,0,s,0,s,0,\"VK_ATTN\",s,s],[1,0,s,0,s,0,\"VK_CRSEL\",s,s],[1,0,s,0,s,0,\"VK_EXSEL\",s,s],[1,0,s,0,s,0,\"VK_EREOF\",s,s],[1,0,s,0,s,0,\"VK_PLAY\",s,s],[1,0,s,0,s,0,\"VK_ZOOM\",s,s],[1,0,s,0,s,0,\"VK_NONAME\",s,s],[1,0,s,0,s,0,\"VK_PA1\",s,s],[1,0,s,0,s,0,\"VK_OEM_CLEAR\",s,s]],n=[],t=[];for(const a of i){const[u,h,r,c,o,d,l,p,m]=a;if(t[h]||(t[h]=!0,S[h]=r,f[r]=h,_[r.toLowerCase()]=h,u&&(e.IMMUTABLE_CODE_TO_KEY_CODE[h]=c,c!==0&&c!==3&&c!==5&&c!==4&&c!==6&&c!==57&&(e.IMMUTABLE_KEY_CODE_TO_CODE[c]=h))),!n[c]){if(n[c]=!0,!o)throw new Error(`String representation missing for key code ${c} around scan code ${r}`);k.define(c,o),y.define(c,p||o),D.define(c,m||p||o)}d&&(e.EVENT_KEY_CODE_MAP[d]=c),l&&(e.NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE[l]=c)}e.IMMUTABLE_KEY_CODE_TO_CODE[3]=46})();var g;(function(s){function i(r){return k.keyCodeToStr(r)}s.toString=i;function n(r){return k.strToKeyCode(r)}s.fromString=n;function t(r){return y.keyCodeToStr(r)}s.toUserSettingsUS=t;function a(r){return D.keyCodeToStr(r)}s.toUserSettingsGeneral=a;function u(r){return y.strToKeyCode(r)||D.strToKeyCode(r)}s.fromUserSettings=u;function h(r){if(r>=98&&r<=113)return null;switch(r){case 16:return\"Up\";case 18:return\"Down\";case 15:return\"Left\";case 17:return\"Right\"}return k.keyCodeToStr(r)}s.toElectronAccelerator=h})(g||(e.KeyCodeUtils=g={}));function C(s,i){const n=(i&65535)<<16>>>0;return(s|n)>>>0}e.KeyChord=C}),define(ne[119],se([1,0,9]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ResolvedKeybinding=e.ResolvedChord=e.Keybinding=e.ScanCodeChord=e.KeyCodeChord=e.createSimpleKeybinding=e.decodeKeybinding=void 0;function k(C,s){if(typeof C==\"number\"){if(C===0)return null;const i=(C&65535)>>>0,n=(C&4294901760)>>>16;return n!==0?new f([y(i,s),y(n,s)]):new f([y(i,s)])}else{const i=[];for(let n=0;n<C.length;n++)i.push(y(C[n],s));return new f(i)}}e.decodeKeybinding=k;function y(C,s){const i=!!(C&2048),n=!!(C&256),t=s===2?n:i,a=!!(C&1024),u=!!(C&512),h=s===2?i:n,r=C&255;return new D(t,a,u,h,r)}e.createSimpleKeybinding=y;class D{constructor(s,i,n,t,a){this.ctrlKey=s,this.shiftKey=i,this.altKey=n,this.metaKey=t,this.keyCode=a}equals(s){return s instanceof D&&this.ctrlKey===s.ctrlKey&&this.shiftKey===s.shiftKey&&this.altKey===s.altKey&&this.metaKey===s.metaKey&&this.keyCode===s.keyCode}isModifierKey(){return this.keyCode===0||this.keyCode===5||this.keyCode===57||this.keyCode===6||this.keyCode===4}isDuplicateModifierCase(){return this.ctrlKey&&this.keyCode===5||this.shiftKey&&this.keyCode===4||this.altKey&&this.keyCode===6||this.metaKey&&this.keyCode===57}}e.KeyCodeChord=D;class S{constructor(s,i,n,t,a){this.ctrlKey=s,this.shiftKey=i,this.altKey=n,this.metaKey=t,this.scanCode=a}isDuplicateModifierCase(){return this.ctrlKey&&(this.scanCode===157||this.scanCode===161)||this.shiftKey&&(this.scanCode===158||this.scanCode===162)||this.altKey&&(this.scanCode===159||this.scanCode===163)||this.metaKey&&(this.scanCode===160||this.scanCode===164)}}e.ScanCodeChord=S;class f{constructor(s){if(s.length===0)throw(0,L.illegalArgument)(\"chords\");this.chords=s}}e.Keybinding=f;class _{constructor(s,i,n,t,a,u){this.ctrlKey=s,this.shiftKey=i,this.altKey=n,this.metaKey=t,this.keyLabel=a,this.keyAriaLabel=u}}e.ResolvedChord=_;class g{}e.ResolvedKeybinding=g}),define(ne[100],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Lazy=void 0;class L{constructor(y){this.executor=y,this._didRun=!1}get value(){if(!this._didRun)try{this._value=this.executor()}catch(y){this._error=y}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}e.Lazy=L}),define(ne[140],se([1,0,100]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.writeUInt8=e.readUInt8=e.writeUInt32BE=e.readUInt32BE=e.writeUInt16LE=e.readUInt16LE=e.VSBuffer=void 0;const k=typeof Buffer<\"u\",y=new L.Lazy(()=>new Uint8Array(256));let D;class S{static wrap(t){return k&&!Buffer.isBuffer(t)&&(t=Buffer.from(t.buffer,t.byteOffset,t.byteLength)),new S(t)}constructor(t){this.buffer=t,this.byteLength=this.buffer.byteLength}toString(){return k?this.buffer.toString():(D||(D=new TextDecoder),D.decode(this.buffer))}}e.VSBuffer=S;function f(n,t){return n[t+0]<<0>>>0|n[t+1]<<8>>>0}e.readUInt16LE=f;function _(n,t,a){n[a+0]=t&255,t=t>>>8,n[a+1]=t&255}e.writeUInt16LE=_;function g(n,t){return n[t]*Math.pow(2,24)+n[t+1]*Math.pow(2,16)+n[t+2]*Math.pow(2,8)+n[t+3]}e.readUInt32BE=g;function C(n,t,a){n[a+3]=t,t=t>>>8,n[a+2]=t,t=t>>>8,n[a+1]=t,t=t>>>8,n[a]=t}e.writeUInt32BE=C;function s(n,t){return n[t]}e.readUInt8=s;function i(n,t,a){n[a]=t}e.writeUInt8=i}),define(ne[384],se([1,0,100]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.compareByPrefix=e.compareAnything=e.compareFileNames=void 0;const k=new L.Lazy(()=>{const g=new Intl.Collator(void 0,{numeric:!0,sensitivity:\"base\"});return{collator:g,collatorIsNumeric:g.resolvedOptions().numeric}}),y=new L.Lazy(()=>({collator:new Intl.Collator(void 0,{numeric:!0})})),D=new L.Lazy(()=>({collator:new Intl.Collator(void 0,{numeric:!0,sensitivity:\"accent\"})}));function S(g,C,s=!1){const i=g||\"\",n=C||\"\",t=k.value.collator.compare(i,n);return k.value.collatorIsNumeric&&t===0&&i!==n?i<n?-1:1:t}e.compareFileNames=S;function f(g,C,s){const i=g.toLowerCase(),n=C.toLowerCase(),t=_(g,C,s);if(t)return t;const a=i.endsWith(s),u=n.endsWith(s);if(a!==u)return a?-1:1;const h=S(i,n);return h!==0?h:i.localeCompare(n)}e.compareAnything=f;function _(g,C,s){const i=g.toLowerCase(),n=C.toLowerCase(),t=i.startsWith(s),a=n.startsWith(s);if(t!==a)return t?-1:1;if(t&&a){if(i.length<n.length)return-1;if(i.length>n.length)return 1}return 0}e.compareByPrefix=_}),define(ne[2],se([1,0,99,46]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DisposableMap=e.ImmortalReference=e.RefCountedDisposable=e.MutableDisposable=e.Disposable=e.DisposableStore=e.toDisposable=e.combinedDisposable=e.dispose=e.isDisposable=e.markAsSingleton=e.setDisposableTracker=void 0;const y=!1;let D=null;function S(l){D=l}if(e.setDisposableTracker=S,y){const l=\"__is_disposable_tracked__\";S(new class{trackDisposable(p){const m=new Error(\"Potentially leaked disposable\").stack;setTimeout(()=>{p[l]||console.log(m)},3e3)}setParent(p,m){if(p&&p!==h.None)try{p[l]=!0}catch{}}markAsDisposed(p){if(p&&p!==h.None)try{p[l]=!0}catch{}}markAsSingleton(p){}})}function f(l){return D?.trackDisposable(l),l}function _(l){D?.markAsDisposed(l)}function g(l,p){D?.setParent(l,p)}function C(l,p){if(D)for(const m of l)D.setParent(m,p)}function s(l){return D?.markAsSingleton(l),l}e.markAsSingleton=s;function i(l){return typeof l.dispose==\"function\"&&l.dispose.length===0}e.isDisposable=i;function n(l){if(k.Iterable.is(l)){const p=[];for(const m of l)if(m)try{m.dispose()}catch(v){p.push(v)}if(p.length===1)throw p[0];if(p.length>1)throw new AggregateError(p,\"Encountered errors while disposing of store\");return Array.isArray(l)?[]:l}else if(l)return l.dispose(),l}e.dispose=n;function t(...l){const p=a(()=>n(l));return C(l,p),p}e.combinedDisposable=t;function a(l){const p=f({dispose:(0,L.once)(()=>{_(p),l()})});return p}e.toDisposable=a;class u{constructor(){this._toDispose=new Set,this._isDisposed=!1,f(this)}dispose(){this._isDisposed||(_(this),this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{n(this._toDispose)}finally{this._toDispose.clear()}}add(p){if(!p)return p;if(p===this)throw new Error(\"Cannot register a disposable on itself!\");return g(p,this),this._isDisposed?u.DISABLE_DISPOSED_WARNING||console.warn(new Error(\"Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!\").stack):this._toDispose.add(p),p}}e.DisposableStore=u,u.DISABLE_DISPOSED_WARNING=!1;class h{constructor(){this._store=new u,f(this),g(this._store,this)}dispose(){_(this),this._store.dispose()}_register(p){if(p===this)throw new Error(\"Cannot register a disposable on itself!\");return this._store.add(p)}}e.Disposable=h,h.None=Object.freeze({dispose(){}});class r{constructor(){this._isDisposed=!1,f(this)}get value(){return this._isDisposed?void 0:this._value}set value(p){var m;this._isDisposed||p===this._value||((m=this._value)===null||m===void 0||m.dispose(),p&&g(p,this),this._value=p)}clear(){this.value=void 0}dispose(){var p;this._isDisposed=!0,_(this),(p=this._value)===null||p===void 0||p.dispose(),this._value=void 0}}e.MutableDisposable=r;class c{constructor(p){this._disposable=p,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter===0&&this._disposable.dispose(),this}}e.RefCountedDisposable=c;class o{constructor(p){this.object=p}dispose(){}}e.ImmortalReference=o;class d{constructor(){this._store=new Map,this._isDisposed=!1,f(this)}dispose(){_(this),this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{n(this._store.values())}finally{this._store.clear()}}get(p){return this._store.get(p)}set(p,m,v=!1){var b;this._isDisposed&&console.warn(new Error(\"Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!\").stack),v||(b=this._store.get(p))===null||b===void 0||b.dispose(),this._store.set(p,m)}deleteAndDispose(p){var m;(m=this._store.get(p))===null||m===void 0||m.dispose(),this._store.delete(p)}[Symbol.iterator](){return this._store[Symbol.iterator]()}}e.DisposableMap=d}),define(ne[64],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LinkedList=void 0;class L{constructor(D){this.element=D,this.next=L.Undefined,this.prev=L.Undefined}}L.Undefined=new L(void 0);class k{constructor(){this._first=L.Undefined,this._last=L.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===L.Undefined}clear(){let D=this._first;for(;D!==L.Undefined;){const S=D.next;D.prev=L.Undefined,D.next=L.Undefined,D=S}this._first=L.Undefined,this._last=L.Undefined,this._size=0}unshift(D){return this._insert(D,!1)}push(D){return this._insert(D,!0)}_insert(D,S){const f=new L(D);if(this._first===L.Undefined)this._first=f,this._last=f;else if(S){const g=this._last;this._last=f,f.prev=g,g.next=f}else{const g=this._first;this._first=f,f.next=g,g.prev=f}this._size+=1;let _=!1;return()=>{_||(_=!0,this._remove(f))}}shift(){if(this._first!==L.Undefined){const D=this._first.element;return this._remove(this._first),D}}pop(){if(this._last!==L.Undefined){const D=this._last.element;return this._remove(this._last),D}}_remove(D){if(D.prev!==L.Undefined&&D.next!==L.Undefined){const S=D.prev;S.next=D.next,D.next.prev=S}else D.prev===L.Undefined&&D.next===L.Undefined?(this._first=L.Undefined,this._last=L.Undefined):D.next===L.Undefined?(this._last=this._last.prev,this._last.next=L.Undefined):D.prev===L.Undefined&&(this._first=this._first.next,this._first.prev=L.Undefined);this._size-=1}*[Symbol.iterator](){let D=this._first;for(;D!==L.Undefined;)yield D.element,D=D.next}}e.LinkedList=k});var ke=this&&this.__decorate||function(Q,e,L,k){var y=arguments.length,D=y<3?e:k===null?k=Object.getOwnPropertyDescriptor(e,L):k,S;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")D=Reflect.decorate(Q,e,L,k);else for(var f=Q.length-1;f>=0;f--)(S=Q[f])&&(D=(y<3?S(D):y>3?S(e,L,D):S(e,L))||D);return y>3&&D&&Object.defineProperty(e,L,D),D};define(ne[385],se([1,0,106]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.parseLinkedText=e.LinkedText=void 0;class k{constructor(f){this.nodes=f}toString(){return this.nodes.map(f=>typeof f==\"string\"?f:f.label).join(\"\")}}e.LinkedText=k,ke([L.memoize],k.prototype,\"toString\",null);const y=/\\[([^\\]]+)\\]\\(((?:https?:\\/\\/|command:|file:)[^\\)\\s]+)(?: ([\"'])(.+?)(\\3))?\\)/gi;function D(S){const f=[];let _=0,g;for(;g=y.exec(S);){g.index-_>0&&f.push(S.substring(_,g.index));const[,C,s,,i]=g;i?f.push({label:C,href:s,title:i}):f.push({label:C,href:s}),_=g.index+g[0].length}return _<S.length&&f.push(S.substring(_)),new k(f)}e.parseLinkedText=D}),define(ne[65],se([1,0]),function(Q,e){\"use strict\";var L,k;Object.defineProperty(e,\"__esModule\",{value:!0}),e.LRUCache=e.LinkedMap=e.ResourceMap=void 0;class y{constructor(g,C){this.uri=g,this.value=C}}class D{constructor(g,C){this[L]=\"ResourceMap\",g instanceof D?(this.map=new Map(g.map),this.toKey=C??D.defaultToKey):(this.map=new Map,this.toKey=g??D.defaultToKey)}set(g,C){return this.map.set(this.toKey(g),new y(g,C)),this}get(g){var C;return(C=this.map.get(this.toKey(g)))===null||C===void 0?void 0:C.value}has(g){return this.map.has(this.toKey(g))}get size(){return this.map.size}clear(){this.map.clear()}delete(g){return this.map.delete(this.toKey(g))}forEach(g,C){typeof C<\"u\"&&(g=g.bind(C));for(const[s,i]of this.map)g(i.value,i.uri,this)}*values(){for(const g of this.map.values())yield g.value}*keys(){for(const g of this.map.values())yield g.uri}*entries(){for(const g of this.map.values())yield[g.uri,g.value]}*[(L=Symbol.toStringTag,Symbol.iterator)](){for(const[,g]of this.map)yield[g.uri,g.value]}}e.ResourceMap=D,D.defaultToKey=_=>_.toString();class S{constructor(){this[k]=\"LinkedMap\",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){var g;return(g=this._head)===null||g===void 0?void 0:g.value}get last(){var g;return(g=this._tail)===null||g===void 0?void 0:g.value}has(g){return this._map.has(g)}get(g,C=0){const s=this._map.get(g);if(s)return C!==0&&this.touch(s,C),s.value}set(g,C,s=0){let i=this._map.get(g);if(i)i.value=C,s!==0&&this.touch(i,s);else{switch(i={key:g,value:C,next:void 0,previous:void 0},s){case 0:this.addItemLast(i);break;case 1:this.addItemFirst(i);break;case 2:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(g,i),this._size++}return this}delete(g){return!!this.remove(g)}remove(g){const C=this._map.get(g);if(C)return this._map.delete(g),this.removeItem(C),this._size--,C.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error(\"Invalid list\");const g=this._head;return this._map.delete(g.key),this.removeItem(g),this._size--,g.value}forEach(g,C){const s=this._state;let i=this._head;for(;i;){if(C?g.bind(C)(i.value,i.key,this):g(i.value,i.key,this),this._state!==s)throw new Error(\"LinkedMap got modified during iteration.\");i=i.next}}keys(){const g=this,C=this._state;let s=this._head;const i={[Symbol.iterator](){return i},next(){if(g._state!==C)throw new Error(\"LinkedMap got modified during iteration.\");if(s){const n={value:s.key,done:!1};return s=s.next,n}else return{value:void 0,done:!0}}};return i}values(){const g=this,C=this._state;let s=this._head;const i={[Symbol.iterator](){return i},next(){if(g._state!==C)throw new Error(\"LinkedMap got modified during iteration.\");if(s){const n={value:s.value,done:!1};return s=s.next,n}else return{value:void 0,done:!0}}};return i}entries(){const g=this,C=this._state;let s=this._head;const i={[Symbol.iterator](){return i},next(){if(g._state!==C)throw new Error(\"LinkedMap got modified during iteration.\");if(s){const n={value:[s.key,s.value],done:!1};return s=s.next,n}else return{value:void 0,done:!0}}};return i}[(k=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(g){if(g>=this.size)return;if(g===0){this.clear();return}let C=this._head,s=this.size;for(;C&&s>g;)this._map.delete(C.key),C=C.next,s--;this._head=C,this._size=s,C&&(C.previous=void 0),this._state++}addItemFirst(g){if(!this._head&&!this._tail)this._tail=g;else if(this._head)g.next=this._head,this._head.previous=g;else throw new Error(\"Invalid list\");this._head=g,this._state++}addItemLast(g){if(!this._head&&!this._tail)this._head=g;else if(this._tail)g.previous=this._tail,this._tail.next=g;else throw new Error(\"Invalid list\");this._tail=g,this._state++}removeItem(g){if(g===this._head&&g===this._tail)this._head=void 0,this._tail=void 0;else if(g===this._head){if(!g.next)throw new Error(\"Invalid list\");g.next.previous=void 0,this._head=g.next}else if(g===this._tail){if(!g.previous)throw new Error(\"Invalid list\");g.previous.next=void 0,this._tail=g.previous}else{const C=g.next,s=g.previous;if(!C||!s)throw new Error(\"Invalid list\");C.previous=s,s.next=C}g.next=void 0,g.previous=void 0,this._state++}touch(g,C){if(!this._head||!this._tail)throw new Error(\"Invalid list\");if(!(C!==1&&C!==2)){if(C===1){if(g===this._head)return;const s=g.next,i=g.previous;g===this._tail?(i.next=void 0,this._tail=i):(s.previous=i,i.next=s),g.previous=void 0,g.next=this._head,this._head.previous=g,this._head=g,this._state++}else if(C===2){if(g===this._tail)return;const s=g.next,i=g.previous;g===this._head?(s.previous=void 0,this._head=s):(s.previous=i,i.next=s),g.next=void 0,g.previous=this._tail,this._tail.next=g,this._tail=g,this._state++}}}toJSON(){const g=[];return this.forEach((C,s)=>{g.push([s,C])}),g}fromJSON(g){this.clear();for(const[C,s]of g)this.set(C,s)}}e.LinkedMap=S;class f extends S{constructor(g,C=1){super(),this._limit=g,this._ratio=Math.min(Math.max(0,C),1)}get limit(){return this._limit}set limit(g){this._limit=g,this.checkTrim()}get(g,C=2){return super.get(g,C)}peek(g){return super.get(g,0)}set(g,C){return super.set(g,C,2),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}}e.LRUCache=f}),function(Q,e){typeof define==\"function\"&&define.amd?define(ne[386],se([0]),e):typeof exports==\"object\"&&typeof module<\"u\"?e(exports):(Q=typeof globalThis<\"u\"?globalThis:Q||self,e(Q.marked={}))}(this,function(Q){\"use strict\";function e(he,ue){for(var te=0;te<ue.length;te++){var q=ue[te];q.enumerable=q.enumerable||!1,q.configurable=!0,\"value\"in q&&(q.writable=!0),Object.defineProperty(he,q.key,q)}}function L(he,ue,te){return ue&&e(he.prototype,ue),te&&e(he,te),Object.defineProperty(he,\"prototype\",{writable:!1}),he}function k(he,ue){if(he){if(typeof he==\"string\")return y(he,ue);var te=Object.prototype.toString.call(he).slice(8,-1);if(te===\"Object\"&&he.constructor&&(te=he.constructor.name),te===\"Map\"||te===\"Set\")return Array.from(he);if(te===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(te))return y(he,ue)}}function y(he,ue){(ue==null||ue>he.length)&&(ue=he.length);for(var te=0,q=new Array(ue);te<ue;te++)q[te]=he[te];return q}function D(he,ue){var te=typeof Symbol<\"u\"&&he[Symbol.iterator]||he[\"@@iterator\"];if(te)return(te=te.call(he)).next.bind(te);if(Array.isArray(he)||(te=k(he))||ue&&he&&typeof he.length==\"number\"){te&&(he=te);var q=0;return function(){return q>=he.length?{done:!0}:{done:!1,value:he[q++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function S(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:\"\",highlight:null,langPrefix:\"language-\",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}Q.defaults=S();function f(he){Q.defaults=he}var _=/[&<>\"']/,g=/[&<>\"']/g,C=/[<>\"']|&(?!#?\\w+;)/,s=/[<>\"']|&(?!#?\\w+;)/g,i={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},n=function(ue){return i[ue]};function t(he,ue){if(ue){if(_.test(he))return he.replace(g,n)}else if(C.test(he))return he.replace(s,n);return he}var a=/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;function u(he){return he.replace(a,function(ue,te){return te=te.toLowerCase(),te===\"colon\"?\":\":te.charAt(0)===\"#\"?te.charAt(1)===\"x\"?String.fromCharCode(parseInt(te.substring(2),16)):String.fromCharCode(+te.substring(1)):\"\"})}var h=/(^|[^\\[])\\^/g;function r(he,ue){he=typeof he==\"string\"?he:he.source,ue=ue||\"\";var te={replace:function(z,ee){return ee=ee.source||ee,ee=ee.replace(h,\"$1\"),he=he.replace(z,ee),te},getRegex:function(){return new RegExp(he,ue)}};return te}var c=/[^\\w:]/g,o=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function d(he,ue,te){if(he){var q;try{q=decodeURIComponent(u(te)).replace(c,\"\").toLowerCase()}catch{return null}if(q.indexOf(\"javascript:\")===0||q.indexOf(\"vbscript:\")===0||q.indexOf(\"data:\")===0)return null}ue&&!o.test(te)&&(te=b(ue,te));try{te=encodeURI(te).replace(/%25/g,\"%\")}catch{return null}return te}var l={},p=/^[^:]+:\\/*[^/]*$/,m=/^([^:]+:)[\\s\\S]*$/,v=/^([^:]+:\\/*[^/]*)[\\s\\S]*$/;function b(he,ue){l[\" \"+he]||(p.test(he)?l[\" \"+he]=he+\"/\":l[\" \"+he]=M(he,\"/\",!0)),he=l[\" \"+he];var te=he.indexOf(\":\")===-1;return ue.substring(0,2)===\"//\"?te?ue:he.replace(m,\"$1\")+ue:ue.charAt(0)===\"/\"?te?ue:he.replace(v,\"$1\")+ue:he+ue}var w={exec:function(){}};function E(he){for(var ue=1,te,q;ue<arguments.length;ue++){te=arguments[ue];for(q in te)Object.prototype.hasOwnProperty.call(te,q)&&(he[q]=te[q])}return he}function I(he,ue){var te=he.replace(/\\|/g,function(ee,$,re){for(var oe=!1,ge=$;--ge>=0&&re[ge]===\"\\\\\";)oe=!oe;return oe?\"|\":\" |\"}),q=te.split(/ \\|/),z=0;if(q[0].trim()||q.shift(),q.length>0&&!q[q.length-1].trim()&&q.pop(),q.length>ue)q.splice(ue);else for(;q.length<ue;)q.push(\"\");for(;z<q.length;z++)q[z]=q[z].trim().replace(/\\\\\\|/g,\"|\");return q}function M(he,ue,te){var q=he.length;if(q===0)return\"\";for(var z=0;z<q;){var ee=he.charAt(q-z-1);if(ee===ue&&!te)z++;else if(ee!==ue&&te)z++;else break}return he.slice(0,q-z)}function P(he,ue){if(he.indexOf(ue[1])===-1)return-1;for(var te=he.length,q=0,z=0;z<te;z++)if(he[z]===\"\\\\\")z++;else if(he[z]===ue[0])q++;else if(he[z]===ue[1]&&(q--,q<0))return z;return-1}function x(he){he&&he.sanitize&&!he.silent&&console.warn(\"marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options\")}function T(he,ue){if(ue<1)return\"\";for(var te=\"\";ue>1;)ue&1&&(te+=he),ue>>=1,he+=he;return te+he}function A(he,ue,te,q){var z=ue.href,ee=ue.title?t(ue.title):null,$=he[1].replace(/\\\\([\\[\\]])/g,\"$1\");if(he[0].charAt(0)!==\"!\"){q.state.inLink=!0;var re={type:\"link\",raw:te,href:z,title:ee,text:$,tokens:q.inlineTokens($)};return q.state.inLink=!1,re}return{type:\"image\",raw:te,href:z,title:ee,text:t($)}}function N(he,ue){var te=he.match(/^(\\s+)(?:```)/);if(te===null)return ue;var q=te[1];return ue.split(`\n`).map(function(z){var ee=z.match(/^\\s+/);if(ee===null)return z;var $=ee[0];return $.length>=q.length?z.slice(q.length):z}).join(`\n`)}var F=function(){function he(te){this.options=te||Q.defaults}var ue=he.prototype;return ue.space=function(q){var z=this.rules.block.newline.exec(q);if(z&&z[0].length>0)return{type:\"space\",raw:z[0]}},ue.code=function(q){var z=this.rules.block.code.exec(q);if(z){var ee=z[0].replace(/^ {1,4}/gm,\"\");return{type:\"code\",raw:z[0],codeBlockStyle:\"indented\",text:this.options.pedantic?ee:M(ee,`\n`)}}},ue.fences=function(q){var z=this.rules.block.fences.exec(q);if(z){var ee=z[0],$=N(ee,z[3]||\"\");return{type:\"code\",raw:ee,lang:z[2]?z[2].trim():z[2],text:$}}},ue.heading=function(q){var z=this.rules.block.heading.exec(q);if(z){var ee=z[2].trim();if(/#$/.test(ee)){var $=M(ee,\"#\");(this.options.pedantic||!$||/ $/.test($))&&(ee=$.trim())}return{type:\"heading\",raw:z[0],depth:z[1].length,text:ee,tokens:this.lexer.inline(ee)}}},ue.hr=function(q){var z=this.rules.block.hr.exec(q);if(z)return{type:\"hr\",raw:z[0]}},ue.blockquote=function(q){var z=this.rules.block.blockquote.exec(q);if(z){var ee=z[0].replace(/^ *>[ \\t]?/gm,\"\");return{type:\"blockquote\",raw:z[0],tokens:this.lexer.blockTokens(ee,[]),text:ee}}},ue.list=function(q){var z=this.rules.block.list.exec(q);if(z){var ee,$,re,oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe=z[1].trim(),Fe=Pe.length>1,_e={type:\"list\",raw:\"\",ordered:Fe,start:Fe?+Pe.slice(0,-1):\"\",loose:!1,items:[]};Pe=Fe?\"\\\\d{1,9}\\\\\"+Pe.slice(-1):\"\\\\\"+Pe,this.options.pedantic&&(Pe=Fe?Pe:\"[*+-]\");for(var me=new RegExp(\"^( {0,3}\"+Pe+\")((?:[\t ][^\\\\n]*)?(?:\\\\n|$))\");q&&(Me=!1,!(!(z=me.exec(q))||this.rules.block.hr.test(q)));){if(ee=z[0],q=q.substring(ee.length),Le=z[2].split(`\n`,1)[0],De=q.split(`\n`,1)[0],this.options.pedantic?(oe=2,Ee=Le.trimLeft()):(oe=z[2].search(/[^ ]/),oe=oe>4?1:oe,Ee=Le.slice(oe),oe+=z[1].length),ve=!1,!Le&&/^ *$/.test(De)&&(ee+=De+`\n`,q=q.substring(De.length+1),Me=!0),!Me)for(var le=new RegExp(\"^ {0,\"+Math.min(3,oe-1)+\"}(?:[*+-]|\\\\d{1,9}[.)])((?: [^\\\\n]*)?(?:\\\\n|$))\"),pe=new RegExp(\"^ {0,\"+Math.min(3,oe-1)+\"}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)\"),Ce=new RegExp(\"^ {0,\"+Math.min(3,oe-1)+\"}(?:```|~~~)\"),be=new RegExp(\"^ {0,\"+Math.min(3,oe-1)+\"}#\");q&&(ye=q.split(`\n`,1)[0],Le=ye,this.options.pedantic&&(Le=Le.replace(/^ {1,4}(?=( {4})*[^ ])/g,\"  \")),!(Ce.test(Le)||be.test(Le)||le.test(Le)||pe.test(q)));){if(Le.search(/[^ ]/)>=oe||!Le.trim())Ee+=`\n`+Le.slice(oe);else if(!ve)Ee+=`\n`+Le;else break;!ve&&!Le.trim()&&(ve=!0),ee+=ye+`\n`,q=q.substring(ye.length+1)}_e.loose||(Se?_e.loose=!0:/\\n *\\n *$/.test(ee)&&(Se=!0)),this.options.gfm&&($=/^\\[[ xX]\\] /.exec(Ee),$&&(re=$[0]!==\"[ ] \",Ee=Ee.replace(/^\\[[ xX]\\] +/,\"\"))),_e.items.push({type:\"list_item\",raw:ee,task:!!$,checked:re,loose:!1,text:Ee}),_e.raw+=ee}_e.items[_e.items.length-1].raw=ee.trimRight(),_e.items[_e.items.length-1].text=Ee.trimRight(),_e.raw=_e.raw.trimRight();var Ie=_e.items.length;for(ge=0;ge<Ie;ge++){this.lexer.state.top=!1,_e.items[ge].tokens=this.lexer.blockTokens(_e.items[ge].text,[]);var Ne=_e.items[ge].tokens.filter(function(Ve){return Ve.type===\"space\"}),Re=Ne.every(function(Ve){for(var ze=Ve.raw.split(\"\"),We=0,qe=D(ze),Oe;!(Oe=qe()).done;){var Ge=Oe.value;if(Ge===`\n`&&(We+=1),We>1)return!0}return!1});!_e.loose&&Ne.length&&Re&&(_e.loose=!0,_e.items[ge].loose=!0)}return _e}},ue.html=function(q){var z=this.rules.block.html.exec(q);if(z){var ee={type:\"html\",raw:z[0],pre:!this.options.sanitizer&&(z[1]===\"pre\"||z[1]===\"script\"||z[1]===\"style\"),text:z[0]};if(this.options.sanitize){var $=this.options.sanitizer?this.options.sanitizer(z[0]):t(z[0]);ee.type=\"paragraph\",ee.text=$,ee.tokens=this.lexer.inline($)}return ee}},ue.def=function(q){var z=this.rules.block.def.exec(q);if(z){z[3]&&(z[3]=z[3].substring(1,z[3].length-1));var ee=z[1].toLowerCase().replace(/\\s+/g,\" \");return{type:\"def\",tag:ee,raw:z[0],href:z[2],title:z[3]}}},ue.table=function(q){var z=this.rules.block.table.exec(q);if(z){var ee={type:\"table\",header:I(z[1]).map(function(Se){return{text:Se}}),align:z[2].replace(/^ *|\\| *$/g,\"\").split(/ *\\| */),rows:z[3]&&z[3].trim()?z[3].replace(/\\n[ \\t]*$/,\"\").split(`\n`):[]};if(ee.header.length===ee.align.length){ee.raw=z[0];var $=ee.align.length,re,oe,ge,ve;for(re=0;re<$;re++)/^ *-+: *$/.test(ee.align[re])?ee.align[re]=\"right\":/^ *:-+: *$/.test(ee.align[re])?ee.align[re]=\"center\":/^ *:-+ *$/.test(ee.align[re])?ee.align[re]=\"left\":ee.align[re]=null;for($=ee.rows.length,re=0;re<$;re++)ee.rows[re]=I(ee.rows[re],ee.header.length).map(function(Se){return{text:Se}});for($=ee.header.length,oe=0;oe<$;oe++)ee.header[oe].tokens=this.lexer.inline(ee.header[oe].text);for($=ee.rows.length,oe=0;oe<$;oe++)for(ve=ee.rows[oe],ge=0;ge<ve.length;ge++)ve[ge].tokens=this.lexer.inline(ve[ge].text);return ee}}},ue.lheading=function(q){var z=this.rules.block.lheading.exec(q);if(z)return{type:\"heading\",raw:z[0],depth:z[2].charAt(0)===\"=\"?1:2,text:z[1],tokens:this.lexer.inline(z[1])}},ue.paragraph=function(q){var z=this.rules.block.paragraph.exec(q);if(z){var ee=z[1].charAt(z[1].length-1)===`\n`?z[1].slice(0,-1):z[1];return{type:\"paragraph\",raw:z[0],text:ee,tokens:this.lexer.inline(ee)}}},ue.text=function(q){var z=this.rules.block.text.exec(q);if(z)return{type:\"text\",raw:z[0],text:z[0],tokens:this.lexer.inline(z[0])}},ue.escape=function(q){var z=this.rules.inline.escape.exec(q);if(z)return{type:\"escape\",raw:z[0],text:t(z[1])}},ue.tag=function(q){var z=this.rules.inline.tag.exec(q);if(z)return!this.lexer.state.inLink&&/^<a /i.test(z[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\\/a>/i.test(z[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\\s|>)/i.test(z[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\\/(pre|code|kbd|script)(\\s|>)/i.test(z[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?\"text\":\"html\",raw:z[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(z[0]):t(z[0]):z[0]}},ue.link=function(q){var z=this.rules.inline.link.exec(q);if(z){var ee=z[2].trim();if(!this.options.pedantic&&/^</.test(ee)){if(!/>$/.test(ee))return;var $=M(ee.slice(0,-1),\"\\\\\");if((ee.length-$.length)%2===0)return}else{var re=P(z[2],\"()\");if(re>-1){var oe=z[0].indexOf(\"!\")===0?5:4,ge=oe+z[1].length+re;z[2]=z[2].substring(0,re),z[0]=z[0].substring(0,ge).trim(),z[3]=\"\"}}var ve=z[2],Se=\"\";if(this.options.pedantic){var Le=/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(ve);Le&&(ve=Le[1],Se=Le[3])}else Se=z[3]?z[3].slice(1,-1):\"\";return ve=ve.trim(),/^</.test(ve)&&(this.options.pedantic&&!/>$/.test(ee)?ve=ve.slice(1):ve=ve.slice(1,-1)),A(z,{href:ve&&ve.replace(this.rules.inline._escapes,\"$1\"),title:Se&&Se.replace(this.rules.inline._escapes,\"$1\")},z[0],this.lexer)}},ue.reflink=function(q,z){var ee;if((ee=this.rules.inline.reflink.exec(q))||(ee=this.rules.inline.nolink.exec(q))){var $=(ee[2]||ee[1]).replace(/\\s+/g,\" \");if($=z[$.toLowerCase()],!$||!$.href){var re=ee[0].charAt(0);return{type:\"text\",raw:re,text:re}}return A(ee,$,ee[0],this.lexer)}},ue.emStrong=function(q,z,ee){ee===void 0&&(ee=\"\");var $=this.rules.inline.emStrong.lDelim.exec(q);if($&&!($[3]&&ee.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/))){var re=$[1]||$[2]||\"\";if(!re||re&&(ee===\"\"||this.rules.inline.punctuation.exec(ee))){var oe=$[0].length-1,ge,ve,Se=oe,Le=0,De=$[0][0]===\"*\"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(De.lastIndex=0,z=z.slice(-1*q.length+oe);($=De.exec(z))!=null;)if(ge=$[1]||$[2]||$[3]||$[4]||$[5]||$[6],!!ge){if(ve=ge.length,$[3]||$[4]){Se+=ve;continue}else if(($[5]||$[6])&&oe%3&&!((oe+ve)%3)){Le+=ve;continue}if(Se-=ve,!(Se>0)){if(ve=Math.min(ve,ve+Se+Le),Math.min(oe,ve)%2){var ye=q.slice(1,oe+$.index+ve);return{type:\"em\",raw:q.slice(0,oe+$.index+ve+1),text:ye,tokens:this.lexer.inlineTokens(ye)}}var Ee=q.slice(2,oe+$.index+ve-1);return{type:\"strong\",raw:q.slice(0,oe+$.index+ve+1),text:Ee,tokens:this.lexer.inlineTokens(Ee)}}}}}},ue.codespan=function(q){var z=this.rules.inline.code.exec(q);if(z){var ee=z[2].replace(/\\n/g,\" \"),$=/[^ ]/.test(ee),re=/^ /.test(ee)&&/ $/.test(ee);return $&&re&&(ee=ee.substring(1,ee.length-1)),ee=t(ee,!0),{type:\"codespan\",raw:z[0],text:ee}}},ue.br=function(q){var z=this.rules.inline.br.exec(q);if(z)return{type:\"br\",raw:z[0]}},ue.del=function(q){var z=this.rules.inline.del.exec(q);if(z)return{type:\"del\",raw:z[0],text:z[2],tokens:this.lexer.inlineTokens(z[2])}},ue.autolink=function(q,z){var ee=this.rules.inline.autolink.exec(q);if(ee){var $,re;return ee[2]===\"@\"?($=t(this.options.mangle?z(ee[1]):ee[1]),re=\"mailto:\"+$):($=t(ee[1]),re=$),{type:\"link\",raw:ee[0],text:$,href:re,tokens:[{type:\"text\",raw:$,text:$}]}}},ue.url=function(q,z){var ee;if(ee=this.rules.inline.url.exec(q)){var $,re;if(ee[2]===\"@\")$=t(this.options.mangle?z(ee[0]):ee[0]),re=\"mailto:\"+$;else{var oe;do oe=ee[0],ee[0]=this.rules.inline._backpedal.exec(ee[0])[0];while(oe!==ee[0]);$=t(ee[0]),ee[1]===\"www.\"?re=\"http://\"+$:re=$}return{type:\"link\",raw:ee[0],text:$,href:re,tokens:[{type:\"text\",raw:$,text:$}]}}},ue.inlineText=function(q,z){var ee=this.rules.inline.text.exec(q);if(ee){var $;return this.lexer.state.inRawBlock?$=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(ee[0]):t(ee[0]):ee[0]:$=t(this.options.smartypants?z(ee[0]):ee[0]),{type:\"text\",raw:ee[0],text:$}}},he}(),O={newline:/^(?: *(?:\\n|$))+/,code:/^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,hr:/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,list:/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,html:\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$))\",def:/^ {0,3}\\[(label)\\]: *(?:\\n *)?<?([^\\s>]+)>?(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,table:w,lheading:/^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,_paragraph:/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,text:/^[^\\n]+/};O._label=/(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/,O._title=/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/,O.def=r(O.def).replace(\"label\",O._label).replace(\"title\",O._title).getRegex(),O.bullet=/(?:[*+-]|\\d{1,9}[.)])/,O.listItemStart=r(/^( *)(bull) */).replace(\"bull\",O.bullet).getRegex(),O.list=r(O.list).replace(/bull/g,O.bullet).replace(\"hr\",\"\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))\").replace(\"def\",\"\\\\n+(?=\"+O.def.source+\")\").getRegex(),O._tag=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",O._comment=/<!--(?!-?>)[\\s\\S]*?(?:-->|$)/,O.html=r(O.html,\"i\").replace(\"comment\",O._comment).replace(\"tag\",O._tag).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),O.paragraph=r(O._paragraph).replace(\"hr\",O.hr).replace(\"heading\",\" {0,3}#{1,6} \").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",O._tag).getRegex(),O.blockquote=r(O.blockquote).replace(\"paragraph\",O.paragraph).getRegex(),O.normal=E({},O),O.gfm=E({},O.normal,{table:\"^ *([^\\\\n ].*\\\\|.*)\\\\n {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\"}),O.gfm.table=r(O.gfm.table).replace(\"hr\",O.hr).replace(\"heading\",\" {0,3}#{1,6} \").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\" {4}[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",O._tag).getRegex(),O.gfm.paragraph=r(O._paragraph).replace(\"hr\",O.hr).replace(\"heading\",\" {0,3}#{1,6} \").replace(\"|lheading\",\"\").replace(\"table\",O.gfm.table).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",O._tag).getRegex(),O.pedantic=E({},O.normal,{html:r(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",O._comment).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:w,paragraph:r(O.normal._paragraph).replace(\"hr\",O.hr).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",O.lheading).replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").getRegex()});var W={escape:/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,autolink:/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,url:w,tag:\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\",link:/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,reflink:/^!?\\[(label)\\]\\[(ref)\\]/,nolink:/^!?\\[(ref)\\](?:\\[\\])?/,reflinkSearch:\"reflink|nolink(?!\\\\()\",emStrong:{lDelim:/^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,rDelimAst:/^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[^*]+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,rDelimUnd:/^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,br:/^( {2,}|\\\\)\\n(?!\\s*$)/,del:w,text:/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,punctuation:/^([\\spunctuation])/};W._punctuation=\"!\\\"#$%&'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~\",W.punctuation=r(W.punctuation).replace(/punctuation/g,W._punctuation).getRegex(),W.blockSkip=/\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g,W.escapedEmSt=/\\\\\\*|\\\\_/g,W._comment=r(O._comment).replace(\"(?:-->|$)\",\"-->\").getRegex(),W.emStrong.lDelim=r(W.emStrong.lDelim).replace(/punct/g,W._punctuation).getRegex(),W.emStrong.rDelimAst=r(W.emStrong.rDelimAst,\"g\").replace(/punct/g,W._punctuation).getRegex(),W.emStrong.rDelimUnd=r(W.emStrong.rDelimUnd,\"g\").replace(/punct/g,W._punctuation).getRegex(),W._escapes=/\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g,W._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,W._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,W.autolink=r(W.autolink).replace(\"scheme\",W._scheme).replace(\"email\",W._email).getRegex(),W._attribute=/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/,W.tag=r(W.tag).replace(\"comment\",W._comment).replace(\"attribute\",W._attribute).getRegex(),W._label=/(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/,W._href=/<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/,W._title=/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/,W.link=r(W.link).replace(\"label\",W._label).replace(\"href\",W._href).replace(\"title\",W._title).getRegex(),W.reflink=r(W.reflink).replace(\"label\",W._label).replace(\"ref\",O._label).getRegex(),W.nolink=r(W.nolink).replace(\"ref\",O._label).getRegex(),W.reflinkSearch=r(W.reflinkSearch,\"g\").replace(\"reflink\",W.reflink).replace(\"nolink\",W.nolink).getRegex(),W.normal=E({},W),W.pedantic=E({},W.normal,{strong:{start:/^__|\\*\\*/,middle:/^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,endAst:/\\*\\*(?!\\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\\*/,middle:/^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,endAst:/\\*(?!\\*)/g,endUnd:/_(?!_)/g},link:r(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",W._label).getRegex(),reflink:r(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",W._label).getRegex()}),W.gfm=E({},W.normal,{escape:r(W.escape).replace(\"])\",\"~|])\").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/}),W.gfm.url=r(W.gfm.url,\"i\").replace(\"email\",W.gfm._extended_email).getRegex(),W.breaks=E({},W.gfm,{br:r(W.br).replace(\"{2,}\",\"*\").getRegex(),text:r(W.gfm.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()});function U(he){return he.replace(/---/g,\"\\u2014\").replace(/--/g,\"\\u2013\").replace(/(^|[-\\u2014/(\\[{\"\\s])'/g,\"$1\\u2018\").replace(/'/g,\"\\u2019\").replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g,\"$1\\u201C\").replace(/\"/g,\"\\u201D\").replace(/\\.{3}/g,\"\\u2026\")}function j(he){var ue=\"\",te,q,z=he.length;for(te=0;te<z;te++)q=he.charCodeAt(te),Math.random()>.5&&(q=\"x\"+q.toString(16)),ue+=\"&#\"+q+\";\";return ue}var R=function(){function he(te){this.tokens=[],this.tokens.links=Object.create(null),this.options=te||Q.defaults,this.options.tokenizer=this.options.tokenizer||new F,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};var q={block:O.normal,inline:W.normal};this.options.pedantic?(q.block=O.pedantic,q.inline=W.pedantic):this.options.gfm&&(q.block=O.gfm,this.options.breaks?q.inline=W.breaks:q.inline=W.gfm),this.tokenizer.rules=q}he.lex=function(q,z){var ee=new he(z);return ee.lex(q)},he.lexInline=function(q,z){var ee=new he(z);return ee.inlineTokens(q)};var ue=he.prototype;return ue.lex=function(q){q=q.replace(/\\r\\n|\\r/g,`\n`),this.blockTokens(q,this.tokens);for(var z;z=this.inlineQueue.shift();)this.inlineTokens(z.src,z.tokens);return this.tokens},ue.blockTokens=function(q,z){var ee=this;z===void 0&&(z=[]),this.options.pedantic?q=q.replace(/\\t/g,\"    \").replace(/^ +$/gm,\"\"):q=q.replace(/^( *)(\\t+)/gm,function(Se,Le,De){return Le+\"    \".repeat(De.length)});for(var $,re,oe,ge;q;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(function(Se){return($=Se.call({lexer:ee},q,z))?(q=q.substring($.raw.length),z.push($),!0):!1}))){if($=this.tokenizer.space(q)){q=q.substring($.raw.length),$.raw.length===1&&z.length>0?z[z.length-1].raw+=`\n`:z.push($);continue}if($=this.tokenizer.code(q)){q=q.substring($.raw.length),re=z[z.length-1],re&&(re.type===\"paragraph\"||re.type===\"text\")?(re.raw+=`\n`+$.raw,re.text+=`\n`+$.text,this.inlineQueue[this.inlineQueue.length-1].src=re.text):z.push($);continue}if($=this.tokenizer.fences(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.heading(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.hr(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.blockquote(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.list(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.html(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.def(q)){q=q.substring($.raw.length),re=z[z.length-1],re&&(re.type===\"paragraph\"||re.type===\"text\")?(re.raw+=`\n`+$.raw,re.text+=`\n`+$.raw,this.inlineQueue[this.inlineQueue.length-1].src=re.text):this.tokens.links[$.tag]||(this.tokens.links[$.tag]={href:$.href,title:$.title});continue}if($=this.tokenizer.table(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.lheading(q)){q=q.substring($.raw.length),z.push($);continue}if(oe=q,this.options.extensions&&this.options.extensions.startBlock&&function(){var Se=1/0,Le=q.slice(1),De=void 0;ee.options.extensions.startBlock.forEach(function(ye){De=ye.call({lexer:this},Le),typeof De==\"number\"&&De>=0&&(Se=Math.min(Se,De))}),Se<1/0&&Se>=0&&(oe=q.substring(0,Se+1))}(),this.state.top&&($=this.tokenizer.paragraph(oe))){re=z[z.length-1],ge&&re.type===\"paragraph\"?(re.raw+=`\n`+$.raw,re.text+=`\n`+$.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=re.text):z.push($),ge=oe.length!==q.length,q=q.substring($.raw.length);continue}if($=this.tokenizer.text(q)){q=q.substring($.raw.length),re=z[z.length-1],re&&re.type===\"text\"?(re.raw+=`\n`+$.raw,re.text+=`\n`+$.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=re.text):z.push($);continue}if(q){var ve=\"Infinite loop on byte: \"+q.charCodeAt(0);if(this.options.silent){console.error(ve);break}else throw new Error(ve)}}return this.state.top=!0,z},ue.inline=function(q,z){return z===void 0&&(z=[]),this.inlineQueue.push({src:q,tokens:z}),z},ue.inlineTokens=function(q,z){var ee=this;z===void 0&&(z=[]);var $,re,oe,ge=q,ve,Se,Le;if(this.tokens.links){var De=Object.keys(this.tokens.links);if(De.length>0)for(;(ve=this.tokenizer.rules.inline.reflinkSearch.exec(ge))!=null;)De.includes(ve[0].slice(ve[0].lastIndexOf(\"[\")+1,-1))&&(ge=ge.slice(0,ve.index)+\"[\"+T(\"a\",ve[0].length-2)+\"]\"+ge.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(ve=this.tokenizer.rules.inline.blockSkip.exec(ge))!=null;)ge=ge.slice(0,ve.index)+\"[\"+T(\"a\",ve[0].length-2)+\"]\"+ge.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(ve=this.tokenizer.rules.inline.escapedEmSt.exec(ge))!=null;)ge=ge.slice(0,ve.index)+\"++\"+ge.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;q;)if(Se||(Le=\"\"),Se=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(function(Ee){return($=Ee.call({lexer:ee},q,z))?(q=q.substring($.raw.length),z.push($),!0):!1}))){if($=this.tokenizer.escape(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.tag(q)){q=q.substring($.raw.length),re=z[z.length-1],re&&$.type===\"text\"&&re.type===\"text\"?(re.raw+=$.raw,re.text+=$.text):z.push($);continue}if($=this.tokenizer.link(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.reflink(q,this.tokens.links)){q=q.substring($.raw.length),re=z[z.length-1],re&&$.type===\"text\"&&re.type===\"text\"?(re.raw+=$.raw,re.text+=$.text):z.push($);continue}if($=this.tokenizer.emStrong(q,ge,Le)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.codespan(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.br(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.del(q)){q=q.substring($.raw.length),z.push($);continue}if($=this.tokenizer.autolink(q,j)){q=q.substring($.raw.length),z.push($);continue}if(!this.state.inLink&&($=this.tokenizer.url(q,j))){q=q.substring($.raw.length),z.push($);continue}if(oe=q,this.options.extensions&&this.options.extensions.startInline&&function(){var Ee=1/0,Me=q.slice(1),Pe=void 0;ee.options.extensions.startInline.forEach(function(Fe){Pe=Fe.call({lexer:this},Me),typeof Pe==\"number\"&&Pe>=0&&(Ee=Math.min(Ee,Pe))}),Ee<1/0&&Ee>=0&&(oe=q.substring(0,Ee+1))}(),$=this.tokenizer.inlineText(oe,U)){q=q.substring($.raw.length),$.raw.slice(-1)!==\"_\"&&(Le=$.raw.slice(-1)),Se=!0,re=z[z.length-1],re&&re.type===\"text\"?(re.raw+=$.raw,re.text+=$.text):z.push($);continue}if(q){var ye=\"Infinite loop on byte: \"+q.charCodeAt(0);if(this.options.silent){console.error(ye);break}else throw new Error(ye)}}return z},L(he,null,[{key:\"rules\",get:function(){return{block:O,inline:W}}}]),he}(),K=function(){function he(te){this.options=te||Q.defaults}var ue=he.prototype;return ue.code=function(q,z,ee){var $=(z||\"\").match(/\\S*/)[0];if(this.options.highlight){var re=this.options.highlight(q,$);re!=null&&re!==q&&(ee=!0,q=re)}return q=q.replace(/\\n$/,\"\")+`\n`,$?'<pre><code class=\"'+this.options.langPrefix+t($,!0)+'\">'+(ee?q:t(q,!0))+`</code></pre>\n`:\"<pre><code>\"+(ee?q:t(q,!0))+`</code></pre>\n`},ue.blockquote=function(q){return`<blockquote>\n`+q+`</blockquote>\n`},ue.html=function(q){return q},ue.heading=function(q,z,ee,$){if(this.options.headerIds){var re=this.options.headerPrefix+$.slug(ee);return\"<h\"+z+' id=\"'+re+'\">'+q+\"</h\"+z+`>\n`}return\"<h\"+z+\">\"+q+\"</h\"+z+`>\n`},ue.hr=function(){return this.options.xhtml?`<hr/>\n`:`<hr>\n`},ue.list=function(q,z,ee){var $=z?\"ol\":\"ul\",re=z&&ee!==1?' start=\"'+ee+'\"':\"\";return\"<\"+$+re+`>\n`+q+\"</\"+$+`>\n`},ue.listitem=function(q){return\"<li>\"+q+`</li>\n`},ue.checkbox=function(q){return\"<input \"+(q?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\"'+(this.options.xhtml?\" /\":\"\")+\"> \"},ue.paragraph=function(q){return\"<p>\"+q+`</p>\n`},ue.table=function(q,z){return z&&(z=\"<tbody>\"+z+\"</tbody>\"),`<table>\n<thead>\n`+q+`</thead>\n`+z+`</table>\n`},ue.tablerow=function(q){return`<tr>\n`+q+`</tr>\n`},ue.tablecell=function(q,z){var ee=z.header?\"th\":\"td\",$=z.align?\"<\"+ee+' align=\"'+z.align+'\">':\"<\"+ee+\">\";return $+q+(\"</\"+ee+`>\n`)},ue.strong=function(q){return\"<strong>\"+q+\"</strong>\"},ue.em=function(q){return\"<em>\"+q+\"</em>\"},ue.codespan=function(q){return\"<code>\"+q+\"</code>\"},ue.br=function(){return this.options.xhtml?\"<br/>\":\"<br>\"},ue.del=function(q){return\"<del>\"+q+\"</del>\"},ue.link=function(q,z,ee){if(q=d(this.options.sanitize,this.options.baseUrl,q),q===null)return ee;var $='<a href=\"'+t(q)+'\"';return z&&($+=' title=\"'+z+'\"'),$+=\">\"+ee+\"</a>\",$},ue.image=function(q,z,ee){if(q=d(this.options.sanitize,this.options.baseUrl,q),q===null)return ee;var $='<img src=\"'+q+'\" alt=\"'+ee+'\"';return z&&($+=' title=\"'+z+'\"'),$+=this.options.xhtml?\"/>\":\">\",$},ue.text=function(q){return q},he}(),G=function(){function he(){}var ue=he.prototype;return ue.strong=function(q){return q},ue.em=function(q){return q},ue.codespan=function(q){return q},ue.del=function(q){return q},ue.html=function(q){return q},ue.text=function(q){return q},ue.link=function(q,z,ee){return\"\"+ee},ue.image=function(q,z,ee){return\"\"+ee},ue.br=function(){return\"\"},he}(),Z=function(){function he(){this.seen={}}var ue=he.prototype;return ue.serialize=function(q){return q.toLowerCase().trim().replace(/<[!\\/a-z].*?>/ig,\"\").replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g,\"\").replace(/\\s/g,\"-\")},ue.getNextSafeSlug=function(q,z){var ee=q,$=0;if(this.seen.hasOwnProperty(ee)){$=this.seen[q];do $++,ee=q+\"-\"+$;while(this.seen.hasOwnProperty(ee))}return z||(this.seen[q]=$,this.seen[ee]=0),ee},ue.slug=function(q,z){z===void 0&&(z={});var ee=this.serialize(q);return this.getNextSafeSlug(ee,z.dryrun)},he}(),J=function(){function he(te){this.options=te||Q.defaults,this.options.renderer=this.options.renderer||new K,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new G,this.slugger=new Z}he.parse=function(q,z){var ee=new he(z);return ee.parse(q)},he.parseInline=function(q,z){var ee=new he(z);return ee.parseInline(q)};var ue=he.prototype;return ue.parse=function(q,z){z===void 0&&(z=!0);var ee=\"\",$,re,oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe,Fe,_e,me,le,pe,Ce,be,Ie=q.length;for($=0;$<Ie;$++){if(Ee=q[$],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[Ee.type]&&(be=this.options.extensions.renderers[Ee.type].call({parser:this},Ee),be!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"paragraph\",\"text\"].includes(Ee.type))){ee+=be||\"\";continue}switch(Ee.type){case\"space\":continue;case\"hr\":{ee+=this.renderer.hr();continue}case\"heading\":{ee+=this.renderer.heading(this.parseInline(Ee.tokens),Ee.depth,u(this.parseInline(Ee.tokens,this.textRenderer)),this.slugger);continue}case\"code\":{ee+=this.renderer.code(Ee.text,Ee.lang,Ee.escaped);continue}case\"table\":{for(De=\"\",Le=\"\",ge=Ee.header.length,re=0;re<ge;re++)Le+=this.renderer.tablecell(this.parseInline(Ee.header[re].tokens),{header:!0,align:Ee.align[re]});for(De+=this.renderer.tablerow(Le),ye=\"\",ge=Ee.rows.length,re=0;re<ge;re++){for(Se=Ee.rows[re],Le=\"\",ve=Se.length,oe=0;oe<ve;oe++)Le+=this.renderer.tablecell(this.parseInline(Se[oe].tokens),{header:!1,align:Ee.align[oe]});ye+=this.renderer.tablerow(Le)}ee+=this.renderer.table(De,ye);continue}case\"blockquote\":{ye=this.parse(Ee.tokens),ee+=this.renderer.blockquote(ye);continue}case\"list\":{for(Me=Ee.ordered,Pe=Ee.start,Fe=Ee.loose,ge=Ee.items.length,ye=\"\",re=0;re<ge;re++)me=Ee.items[re],le=me.checked,pe=me.task,_e=\"\",me.task&&(Ce=this.renderer.checkbox(le),Fe?me.tokens.length>0&&me.tokens[0].type===\"paragraph\"?(me.tokens[0].text=Ce+\" \"+me.tokens[0].text,me.tokens[0].tokens&&me.tokens[0].tokens.length>0&&me.tokens[0].tokens[0].type===\"text\"&&(me.tokens[0].tokens[0].text=Ce+\" \"+me.tokens[0].tokens[0].text)):me.tokens.unshift({type:\"text\",text:Ce}):_e+=Ce),_e+=this.parse(me.tokens,Fe),ye+=this.renderer.listitem(_e,pe,le);ee+=this.renderer.list(ye,Me,Pe);continue}case\"html\":{ee+=this.renderer.html(Ee.text);continue}case\"paragraph\":{ee+=this.renderer.paragraph(this.parseInline(Ee.tokens));continue}case\"text\":{for(ye=Ee.tokens?this.parseInline(Ee.tokens):Ee.text;$+1<Ie&&q[$+1].type===\"text\";)Ee=q[++$],ye+=`\n`+(Ee.tokens?this.parseInline(Ee.tokens):Ee.text);ee+=z?this.renderer.paragraph(ye):ye;continue}default:{var Ne='Token with \"'+Ee.type+'\" type was not found.';if(this.options.silent){console.error(Ne);return}else throw new Error(Ne)}}}return ee},ue.parseInline=function(q,z){z=z||this.renderer;var ee=\"\",$,re,oe,ge=q.length;for($=0;$<ge;$++){if(re=q[$],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[re.type]&&(oe=this.options.extensions.renderers[re.type].call({parser:this},re),oe!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(re.type))){ee+=oe||\"\";continue}switch(re.type){case\"escape\":{ee+=z.text(re.text);break}case\"html\":{ee+=z.html(re.text);break}case\"link\":{ee+=z.link(re.href,re.title,this.parseInline(re.tokens,z));break}case\"image\":{ee+=z.image(re.href,re.title,re.text);break}case\"strong\":{ee+=z.strong(this.parseInline(re.tokens,z));break}case\"em\":{ee+=z.em(this.parseInline(re.tokens,z));break}case\"codespan\":{ee+=z.codespan(re.text);break}case\"br\":{ee+=z.br();break}case\"del\":{ee+=z.del(this.parseInline(re.tokens,z));break}case\"text\":{ee+=z.text(re.text);break}default:{var ve='Token with \"'+re.type+'\" type was not found.';if(this.options.silent){console.error(ve);return}else throw new Error(ve)}}}return ee},he}();function X(he,ue,te){if(typeof he>\"u\"||he===null)throw new Error(\"marked(): input parameter is undefined or null\");if(typeof he!=\"string\")throw new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(he)+\", string expected\");if(typeof ue==\"function\"&&(te=ue,ue=null),ue=E({},X.defaults,ue||{}),x(ue),te){var q=ue.highlight,z;try{z=R.lex(he,ue)}catch(ge){return te(ge)}var ee=function(ve){var Se;if(!ve)try{ue.walkTokens&&X.walkTokens(z,ue.walkTokens),Se=J.parse(z,ue)}catch(Le){ve=Le}return ue.highlight=q,ve?te(ve):te(null,Se)};if(!q||q.length<3||(delete ue.highlight,!z.length))return ee();var $=0;X.walkTokens(z,function(ge){ge.type===\"code\"&&($++,setTimeout(function(){q(ge.text,ge.lang,function(ve,Se){if(ve)return ee(ve);Se!=null&&Se!==ge.text&&(ge.text=Se,ge.escaped=!0),$--,$===0&&ee()})},0))}),$===0&&ee();return}function re(ge){if(ge.message+=`\nPlease report this to https://github.com/markedjs/marked.`,ue.silent)return\"<p>An error occurred:</p><pre>\"+t(ge.message+\"\",!0)+\"</pre>\";throw ge}try{var oe=R.lex(he,ue);if(ue.walkTokens){if(ue.async)return Promise.all(X.walkTokens(oe,ue.walkTokens)).then(function(){return J.parse(oe,ue)}).catch(re);X.walkTokens(oe,ue.walkTokens)}return J.parse(oe,ue)}catch(ge){re(ge)}}X.options=X.setOptions=function(he){return E(X.defaults,he),f(X.defaults),X},X.getDefaults=S,X.defaults=Q.defaults,X.use=function(){for(var he=arguments.length,ue=new Array(he),te=0;te<he;te++)ue[te]=arguments[te];var q=E.apply(void 0,[{}].concat(ue)),z=X.defaults.extensions||{renderers:{},childTokens:{}},ee;ue.forEach(function($){if($.extensions&&(ee=!0,$.extensions.forEach(function(oe){if(!oe.name)throw new Error(\"extension name required\");if(oe.renderer){var ge=z.renderers?z.renderers[oe.name]:null;ge?z.renderers[oe.name]=function(){for(var ve=arguments.length,Se=new Array(ve),Le=0;Le<ve;Le++)Se[Le]=arguments[Le];var De=oe.renderer.apply(this,Se);return De===!1&&(De=ge.apply(this,Se)),De}:z.renderers[oe.name]=oe.renderer}if(oe.tokenizer){if(!oe.level||oe.level!==\"block\"&&oe.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");z[oe.level]?z[oe.level].unshift(oe.tokenizer):z[oe.level]=[oe.tokenizer],oe.start&&(oe.level===\"block\"?z.startBlock?z.startBlock.push(oe.start):z.startBlock=[oe.start]:oe.level===\"inline\"&&(z.startInline?z.startInline.push(oe.start):z.startInline=[oe.start]))}oe.childTokens&&(z.childTokens[oe.name]=oe.childTokens)})),$.renderer&&function(){var oe=X.defaults.renderer||new K,ge=function(Le){var De=oe[Le];oe[Le]=function(){for(var ye=arguments.length,Ee=new Array(ye),Me=0;Me<ye;Me++)Ee[Me]=arguments[Me];var Pe=$.renderer[Le].apply(oe,Ee);return Pe===!1&&(Pe=De.apply(oe,Ee)),Pe}};for(var ve in $.renderer)ge(ve);q.renderer=oe}(),$.tokenizer&&function(){var oe=X.defaults.tokenizer||new F,ge=function(Le){var De=oe[Le];oe[Le]=function(){for(var ye=arguments.length,Ee=new Array(ye),Me=0;Me<ye;Me++)Ee[Me]=arguments[Me];var Pe=$.tokenizer[Le].apply(oe,Ee);return Pe===!1&&(Pe=De.apply(oe,Ee)),Pe}};for(var ve in $.tokenizer)ge(ve);q.tokenizer=oe}(),$.walkTokens){var re=X.defaults.walkTokens;q.walkTokens=function(oe){var ge=[];return ge.push($.walkTokens.call(this,oe)),re&&(ge=ge.concat(re.call(this,oe))),ge}}ee&&(q.extensions=z),X.setOptions(q)})},X.walkTokens=function(he,ue){for(var te=[],q=function(){var re=ee.value;switch(te=te.concat(ue.call(X,re)),re.type){case\"table\":{for(var oe=D(re.header),ge;!(ge=oe()).done;){var ve=ge.value;te=te.concat(X.walkTokens(ve.tokens,ue))}for(var Se=D(re.rows),Le;!(Le=Se()).done;)for(var De=Le.value,ye=D(De),Ee;!(Ee=ye()).done;){var Me=Ee.value;te=te.concat(X.walkTokens(Me.tokens,ue))}break}case\"list\":{te=te.concat(X.walkTokens(re.items,ue));break}default:X.defaults.extensions&&X.defaults.extensions.childTokens&&X.defaults.extensions.childTokens[re.type]?X.defaults.extensions.childTokens[re.type].forEach(function(Pe){te=te.concat(X.walkTokens(re[Pe],ue))}):re.tokens&&(te=te.concat(X.walkTokens(re.tokens,ue)))}},z=D(he),ee;!(ee=z()).done;)q();return te},X.parseInline=function(he,ue){if(typeof he>\"u\"||he===null)throw new Error(\"marked.parseInline(): input parameter is undefined or null\");if(typeof he!=\"string\")throw new Error(\"marked.parseInline(): input parameter is of type \"+Object.prototype.toString.call(he)+\", string expected\");ue=E({},X.defaults,ue||{}),x(ue);try{var te=R.lexInline(he,ue);return ue.walkTokens&&X.walkTokens(te,ue.walkTokens),J.parseInline(te,ue)}catch(q){if(q.message+=`\nPlease report this to https://github.com/markedjs/marked.`,ue.silent)return\"<p>An error occurred:</p><pre>\"+t(q.message+\"\",!0)+\"</pre>\";throw q}},X.Parser=J,X.parser=J.parse,X.Renderer=K,X.TextRenderer=G,X.Lexer=R,X.lexer=R.lex,X.Tokenizer=F,X.Slugger=Z,X.parse=X;var H=X.options,B=X.setOptions,V=X.use,Y=X.walkTokens,ie=X.parseInline,ae=X,ce=J.parse,de=R.lex;Q.Lexer=R,Q.Parser=J,Q.Renderer=K,Q.Slugger=Z,Q.TextRenderer=G,Q.Tokenizer=F,Q.getDefaults=S,Q.lexer=de,Q.marked=X,Q.options=H,Q.parse=ae,Q.parseInline=ie,Q.parser=ce,Q.setOptions=B,Q.use=V,Q.walkTokens=Y,Object.defineProperty(Q,\"__esModule\",{value:!0})}),define(ne[107],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Mimes=void 0,e.Mimes=Object.freeze({text:\"text/plain\",binary:\"application/octet-stream\",unknown:\"application/unknown\",markdown:\"text/markdown\",latex:\"text/latex\",uriList:\"text/uri-list\"})}),define(ne[197],se([1,0,107]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DataTransfers=void 0,e.DataTransfers={RESOURCES:\"ResourceURLs\",DOWNLOAD_URL:\"DownloadURL\",FILES:\"Files\",TEXT:L.Mimes.text,INTERNAL_URI_LIST:\"application/vnd.code.uri-list\"}}),define(ne[387],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ArrayNavigator=void 0;class L{constructor(y,D=0,S=y.length,f=D-1){this.items=y,this.start=D,this.end=S,this.index=f}current(){return this.index===this.start-1||this.index===this.end?null:this.items[this.index]}next(){return this.index=Math.min(this.index+1,this.end),this.current()}previous(){return this.index=Math.max(this.index-1,this.start-1),this.current()}first(){return this.index=this.start,this.current()}last(){return this.index=this.end-1,this.current()}}e.ArrayNavigator=L}),define(ne[388],se([1,0,387]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HistoryNavigator=void 0;class k{constructor(D=[],S=10){this._initialize(D),this._limit=S,this._onChange()}getHistory(){return this._elements}add(D){this._history.delete(D),this._history.add(D),this._onChange()}next(){return this._navigator.next()}previous(){return this._currentPosition()!==0?this._navigator.previous():null}current(){return this._navigator.current()}first(){return this._navigator.first()}last(){return this._navigator.last()}isLast(){return this._currentPosition()>=this._elements.length-1}isNowhere(){return this._navigator.current()===null}has(D){return this._history.has(D)}_onChange(){this._reduceToLimit();const D=this._elements;this._navigator=new L.ArrayNavigator(D,0,D.length,D.length)}_reduceToLimit(){const D=this._elements;D.length>this._limit&&this._initialize(D.slice(D.length-this._limit))}_currentPosition(){const D=this._navigator.current();return D?this._elements.indexOf(D):-1}_initialize(D){this._history=new Set;for(const S of D)this._history.add(S)}get _elements(){const D=[];return this._history.forEach(S=>D.push(S)),D}}e.HistoryNavigator=k}),define(ne[141],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SlidingWindowAverage=e.MovingAverage=e.clamp=void 0;function L(D,S,f){return Math.min(Math.max(D,S),f)}e.clamp=L;class k{constructor(){this._n=1,this._val=0}update(S){return this._val=this._val+(S-this._val)/this._n,this._n+=1,this._val}get value(){return this._val}}e.MovingAverage=k;class y{constructor(S){this._n=0,this._val=0,this._values=[],this._index=0,this._sum=0,this._values=new Array(S),this._values.fill(0,0,S)}update(S){const f=this._values[this._index];return this._values[this._index]=S,this._index=(this._index+1)%this._values.length,this._sum-=f,this._sum+=S,this._n<this._values.length&&(this._n+=1),this._val=this._sum/this._n,this._val}get value(){return this._val}}e.SlidingWindowAverage=y}),define(ne[142],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ConsoleObservableLogger=e.getLogger=e.setLogger=void 0;let L;function k(a){L=a}e.setLogger=k;function y(){return L}e.getLogger=y;class D{constructor(){this.indentation=0,this.changedObservablesSets=new WeakMap}textToConsoleArgs(u){return S([f(n(\"|  \",this.indentation)),u])}formatInfo(u){return u.hadValue?u.didChange?[f(\" \"),g(C(u.oldValue,70),{color:\"red\",strikeThrough:!0}),f(\" \"),g(C(u.newValue,60),{color:\"green\"})]:[f(\" (unchanged)\")]:[f(\" \"),g(C(u.newValue,60),{color:\"green\"}),f(\" (initial)\")]}handleObservableChanged(u,h){console.log(...this.textToConsoleArgs([_(\"observable value changed\"),g(u.debugName,{color:\"BlueViolet\"}),...this.formatInfo(h)]))}formatChanges(u){if(u.size!==0)return g(\" (changed deps: \"+[...u].map(h=>h.debugName).join(\", \")+\")\",{color:\"gray\"})}handleDerivedCreated(u){const h=u.handleChange;this.changedObservablesSets.set(u,new Set),u.handleChange=(r,c)=>(this.changedObservablesSets.get(u).add(r),h.apply(u,[r,c]))}handleDerivedRecomputed(u,h){const r=this.changedObservablesSets.get(u);console.log(...this.textToConsoleArgs([_(\"derived recomputed\"),g(u.debugName,{color:\"BlueViolet\"}),...this.formatInfo(h),this.formatChanges(r),{data:[{fn:u._computeFn}]}])),r.clear()}handleFromEventObservableTriggered(u,h){console.log(...this.textToConsoleArgs([_(\"observable from event triggered\"),g(u.debugName,{color:\"BlueViolet\"}),...this.formatInfo(h),{data:[{fn:u._getValue}]}]))}handleAutorunCreated(u){const h=u.handleChange;this.changedObservablesSets.set(u,new Set),u.handleChange=(r,c)=>(this.changedObservablesSets.get(u).add(r),h.apply(u,[r,c]))}handleAutorunTriggered(u){const h=this.changedObservablesSets.get(u);console.log(...this.textToConsoleArgs([_(\"autorun\"),g(u.debugName,{color:\"BlueViolet\"}),this.formatChanges(h),{data:[{fn:u._runFn}]}])),h.clear(),this.indentation++}handleAutorunFinished(u){this.indentation--}handleBeginTransaction(u){let h=u.getDebugName();h===void 0&&(h=\"\"),console.log(...this.textToConsoleArgs([_(\"transaction\"),g(h,{color:\"BlueViolet\"}),{data:[{fn:u._fn}]}])),this.indentation++}handleEndTransaction(){this.indentation--}}e.ConsoleObservableLogger=D;function S(a){const u=new Array,h=[];let r=\"\";function c(d){if(\"length\"in d)for(const l of d)l&&c(l);else\"text\"in d?(r+=`%c${d.text}`,u.push(d.style),d.data&&h.push(...d.data)):\"data\"in d&&h.push(...d.data)}c(a);const o=[r,...u];return o.push(...h),o}function f(a){return g(a,{color:\"black\"})}function _(a){return g(t(`${a}: `,10),{color:\"black\",bold:!0})}function g(a,u={color:\"black\"}){function h(c){return Object.entries(c).reduce((o,[d,l])=>`${o}${d}:${l};`,\"\")}const r={color:u.color};return u.strikeThrough&&(r[\"text-decoration\"]=\"line-through\"),u.bold&&(r[\"font-weight\"]=\"bold\"),{text:a,style:h(r)}}function C(a,u){switch(typeof a){case\"number\":return\"\"+a;case\"string\":return a.length+2<=u?`\"${a}\"`:`\"${a.substr(0,u-7)}\"+...`;case\"boolean\":return a?\"true\":\"false\";case\"undefined\":return\"undefined\";case\"object\":return a===null?\"null\":Array.isArray(a)?s(a,u):i(a,u);case\"symbol\":return a.toString();case\"function\":return`[[Function${a.name?\" \"+a.name:\"\"}]]`;default:return\"\"+a}}function s(a,u){let h=\"[ \",r=!0;for(const c of a){if(r||(h+=\", \"),h.length-5>u){h+=\"...\";break}r=!1,h+=`${C(c,u-h.length)}`}return h+=\" ]\",h}function i(a,u){let h=\"{ \",r=!0;for(const[c,o]of Object.entries(a)){if(r||(h+=\", \"),h.length-5>u){h+=\"...\";break}r=!1,h+=`${c}: ${C(o,u-h.length)}`}return h+=\" }\",h}function n(a,u){let h=\"\";for(let r=1;r<=u;r++)h+=a;return h}function t(a,u){for(;a.length<u;)a+=\" \";return a}}),define(ne[165],se([1,0,142]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DisposableObservableValue=e.disposableObservableValue=e.ObservableValue=e.observableValue=e.getFunctionName=e.TransactionImpl=e.subtransaction=e.transaction=e.BaseObservable=e.ConvenientObservable=e._setDerived=void 0;let k;function y(a){k=a}e._setDerived=y;class D{get TChange(){return null}reportChanges(){this.get()}read(u){return u?u.readObservable(this):this.get()}map(u){return k(h=>u(this.read(h),h),()=>{const h=C(u);if(h!==void 0)return h;const c=/^\\s*\\(?\\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\\s*\\)?\\s*=>\\s*\\1\\.([a-zA-Z_$][a-zA-Z_$0-9]*)\\s*$/.exec(u.toString());return c?`${this.debugName}.${c[2]}`:`${this.debugName} (mapped)`})}}e.ConvenientObservable=D;class S extends D{constructor(){super(...arguments),this.observers=new Set}addObserver(u){const h=this.observers.size;this.observers.add(u),h===0&&this.onFirstObserverAdded()}removeObserver(u){this.observers.delete(u)&&this.observers.size===0&&this.onLastObserverRemoved()}onFirstObserverAdded(){}onLastObserverRemoved(){}}e.BaseObservable=S;function f(a,u){const h=new g(a,u);try{a(h)}finally{h.finish()}}e.transaction=f;function _(a,u,h){a?u(a):f(u,h)}e.subtransaction=_;class g{constructor(u,h){var r;this._fn=u,this._getDebugName=h,this.updatingObservers=[],(r=(0,L.getLogger)())===null||r===void 0||r.handleBeginTransaction(this)}getDebugName(){return this._getDebugName?this._getDebugName():C(this._fn)}updateObserver(u,h){this.updatingObservers.push({observer:u,observable:h}),u.beginUpdate(h)}finish(){var u;const h=this.updatingObservers;this.updatingObservers=null;for(const{observer:r,observable:c}of h)r.endUpdate(c);(u=(0,L.getLogger)())===null||u===void 0||u.handleEndTransaction()}}e.TransactionImpl=g;function C(a){const u=a.toString(),r=/\\/\\*\\*\\s*@description\\s*([^*]*)\\*\\//.exec(u),c=r?r[1]:void 0;return c?.trim()}e.getFunctionName=C;function s(a,u){return new i(a,u)}e.observableValue=s;class i extends S{constructor(u,h){super(),this.debugName=u,this._value=h}get(){return this._value}set(u,h,r){var c;if(this._value===u)return;let o;h||(h=o=new g(()=>{},()=>`Setting ${this.debugName}`));try{const d=this._value;this._setValue(u),(c=(0,L.getLogger)())===null||c===void 0||c.handleObservableChanged(this,{oldValue:d,newValue:u,change:r,didChange:!0,hadValue:!0});for(const l of this.observers)h.updateObserver(l,this),l.handleChange(this,r)}finally{o&&o.finish()}}toString(){return`${this.debugName}: ${this._value}`}_setValue(u){this._value=u}}e.ObservableValue=i;function n(a,u){return new t(a,u)}e.disposableObservableValue=n;class t extends i{_setValue(u){this._value!==u&&(this._value&&this._value.dispose(),this._value=u)}dispose(){var u;(u=this._value)===null||u===void 0||u.dispose()}}e.DisposableObservableValue=t}),define(ne[262],se([1,0,85,2,165,142]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutorunObserver=e.autorunWithStore=e.autorunHandleChanges=e.autorun=e.autorunOpts=void 0;function S(s,i){return new C(s.debugName,i,void 0,void 0)}e.autorunOpts=S;function f(s){return new C(void 0,s,void 0,void 0)}e.autorun=f;function _(s,i){return new C(s.debugName,i,s.createEmptyChangeSummary,s.handleChange)}e.autorunHandleChanges=_;function g(s){const i=new k.DisposableStore,n=S({debugName:()=>(0,y.getFunctionName)(s)||\"(anonymous)\"},t=>{i.clear(),s(t,i)});return(0,k.toDisposable)(()=>{n.dispose(),i.dispose()})}e.autorunWithStore=g;class C{get debugName(){if(typeof this._debugName==\"string\")return this._debugName;if(typeof this._debugName==\"function\"){const n=this._debugName();if(n!==void 0)return n}const i=(0,y.getFunctionName)(this._runFn);return i!==void 0?i:\"(anonymous)\"}constructor(i,n,t,a){var u,h;this._debugName=i,this._runFn=n,this.createChangeSummary=t,this._handleChange=a,this.state=2,this.updateCount=0,this.disposed=!1,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=(u=this.createChangeSummary)===null||u===void 0?void 0:u.call(this),(h=(0,D.getLogger)())===null||h===void 0||h.handleAutorunCreated(this),this._runIfNeeded()}dispose(){this.disposed=!0;for(const i of this.dependencies)i.removeObserver(this);this.dependencies.clear()}_runIfNeeded(){var i,n,t;if(this.state===3)return;const a=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=a,this.state=3;try{if(!this.disposed){(i=(0,D.getLogger)())===null||i===void 0||i.handleAutorunTriggered(this);const u=this.changeSummary;this.changeSummary=(n=this.createChangeSummary)===null||n===void 0?void 0:n.call(this),this._runFn(this,u)}}finally{(t=(0,D.getLogger)())===null||t===void 0||t.handleAutorunFinished(this);for(const u of this.dependenciesToBeRemoved)u.removeObserver(this);this.dependenciesToBeRemoved.clear()}}toString(){return`Autorun<${this.debugName}>`}beginUpdate(){this.state===3&&(this.state=1),this.updateCount++}endUpdate(){if(this.updateCount===1)do{if(this.state===1){this.state=3;for(const i of this.dependencies)if(i.reportChanges(),this.state===2)break}this._runIfNeeded()}while(this.state!==3);this.updateCount--,(0,L.assertFn)(()=>this.updateCount>=0)}handlePossibleChange(i){this.state===3&&this.dependencies.has(i)&&!this.dependenciesToBeRemoved.has(i)&&(this.state=1)}handleChange(i,n){this.dependencies.has(i)&&!this.dependenciesToBeRemoved.has(i)&&(!this._handleChange||this._handleChange({changedObservable:i,change:n,didChange:a=>a===i},this.changeSummary))&&(this.state=2)}readObservable(i){if(this.disposed)return i.get();i.addObserver(this);const n=i.get();return this.dependencies.add(i),this.dependenciesToBeRemoved.delete(i),n}}e.AutorunObserver=C,function(s){s.Observer=C}(f||(e.autorun=f={}))}),define(ne[389],se([1,0,9,2,165,142]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Derived=e.derivedWithStore=e.derivedHandleChanges=e.derivedOpts=e.derived=void 0;const S=(i,n)=>i===n;function f(i,n){return new s(n,i,void 0,void 0,void 0,S)}e.derived=f;function _(i,n){var t;return new s(i.debugName,n,void 0,void 0,void 0,(t=i.equalityComparer)!==null&&t!==void 0?t:S)}e.derivedOpts=_;function g(i,n,t){return new s(i,t,n.createEmptyChangeSummary,n.handleChange,void 0,S)}e.derivedHandleChanges=g;function C(i,n){const t=new k.DisposableStore;return new s(i,a=>(t.clear(),n(a,t)),void 0,void 0,()=>t.dispose(),S)}e.derivedWithStore=C,(0,y._setDerived)(f);class s extends y.BaseObservable{get debugName(){return this._debugName?typeof this._debugName==\"function\"?this._debugName():this._debugName:(0,y.getFunctionName)(this._computeFn)||\"(anonymous)\"}constructor(n,t,a,u,h=void 0,r){var c,o;super(),this._debugName=n,this._computeFn=t,this.createChangeSummary=a,this._handleChange=u,this._handleLastObserverRemoved=h,this._equalityComparator=r,this.state=0,this.value=void 0,this.updateCount=0,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=void 0,this.changeSummary=(c=this.createChangeSummary)===null||c===void 0?void 0:c.call(this),(o=(0,D.getLogger)())===null||o===void 0||o.handleDerivedCreated(this)}onLastObserverRemoved(){var n;this.state=0,this.value=void 0;for(const t of this.dependencies)t.removeObserver(this);this.dependencies.clear(),(n=this._handleLastObserverRemoved)===null||n===void 0||n.call(this)}get(){var n;if(this.observers.size===0){const t=this._computeFn(this,(n=this.createChangeSummary)===null||n===void 0?void 0:n.call(this));return this.onLastObserverRemoved(),t}else{do{if(this.state===1){for(const t of this.dependencies)if(t.reportChanges(),this.state===2)break}this.state===1&&(this.state=3),this._recomputeIfNeeded()}while(this.state!==3);return this.value}}_recomputeIfNeeded(){var n,t;if(this.state===3)return;const a=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=a;const u=this.state!==0,h=this.value;this.state=3;const r=this.changeSummary;this.changeSummary=(n=this.createChangeSummary)===null||n===void 0?void 0:n.call(this);try{this.value=this._computeFn(this,r)}finally{for(const o of this.dependenciesToBeRemoved)o.removeObserver(this);this.dependenciesToBeRemoved.clear()}const c=u&&!this._equalityComparator(h,this.value);if((t=(0,D.getLogger)())===null||t===void 0||t.handleDerivedRecomputed(this,{oldValue:h,newValue:this.value,change:void 0,didChange:c,hadValue:u}),c)for(const o of this.observers)o.handleChange(this,void 0)}toString(){return`LazyDerived<${this.debugName}>`}beginUpdate(n){this.updateCount++;const t=this.updateCount===1;if(this.state===3&&(this.state=1,!t))for(const a of this.observers)a.handlePossibleChange(this);if(t)for(const a of this.observers)a.beginUpdate(this)}endUpdate(n){if(this.updateCount--,this.updateCount===0){const t=[...this.observers];for(const a of t)a.endUpdate(this)}if(this.updateCount<0)throw new L.BugIndicatingError}handlePossibleChange(n){if(this.state===3&&this.dependencies.has(n)&&!this.dependenciesToBeRemoved.has(n)){this.state=1;for(const t of this.observers)t.handlePossibleChange(this)}}handleChange(n,t){if(this.dependencies.has(n)&&!this.dependenciesToBeRemoved.has(n)){const a=this._handleChange?this._handleChange({changedObservable:n,change:t,didChange:h=>h===n},this.changeSummary):!0,u=this.state===3;if(a&&(this.state===1||u)&&(this.state=2,u))for(const h of this.observers)h.handlePossibleChange(this)}}readObservable(n){n.addObserver(this);const t=n.get();return this.dependencies.add(n),this.dependenciesToBeRemoved.delete(n),t}addObserver(n){const t=!this.observers.has(n)&&this.updateCount>0;super.addObserver(n),t&&n.beginUpdate(this)}removeObserver(n){const t=this.observers.has(n)&&this.updateCount>0;super.removeObserver(n),t&&n.endUpdate(this)}}e.Derived=s}),define(ne[390],se([1,0,2,262,165,142]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.keepAlive=e.observableSignal=e.observableSignalFromEvent=e.FromEventObservable=e.observableFromEvent=e.waitForState=e.constObservable=void 0;function S(h){return new f(h)}e.constObservable=S;class f extends y.ConvenientObservable{constructor(r){super(),this.value=r}get debugName(){return this.toString()}get(){return this.value}addObserver(r){}removeObserver(r){}toString(){return`Const: ${this.value}`}}function _(h,r){return new Promise(c=>{let o=!1,d=!1;const l=(0,k.autorun)(p=>{const m=h.read(p);r(m)&&(o?l.dispose():d=!0,c(m))});o=!0,d&&l.dispose()})}e.waitForState=_;function g(h,r){return new C(h,r)}e.observableFromEvent=g;class C extends y.BaseObservable{constructor(r,c){super(),this.event=r,this._getValue=c,this.hasValue=!1,this.handleEvent=o=>{var d;const l=this._getValue(o),p=!this.hasValue||this.value!==l;(d=(0,D.getLogger)())===null||d===void 0||d.handleFromEventObservableTriggered(this,{oldValue:this.value,newValue:l,change:void 0,didChange:p,hadValue:this.hasValue}),p&&(this.value=l,this.hasValue&&(0,y.transaction)(m=>{for(const v of this.observers)m.updateObserver(v,this),v.handleChange(this,void 0)},()=>{const m=this.getDebugName();return\"Event fired\"+(m?`: ${m}`:\"\")}),this.hasValue=!0)}}getDebugName(){return(0,y.getFunctionName)(this._getValue)}get debugName(){const r=this.getDebugName();return\"From Event\"+(r?`: ${r}`:\"\")}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0,this.hasValue=!1,this.value=void 0}get(){return this.subscription?(this.hasValue||this.handleEvent(void 0),this.value):this._getValue(void 0)}}e.FromEventObservable=C,function(h){h.Observer=C}(g||(e.observableFromEvent=g={}));function s(h,r){return new i(h,r)}e.observableSignalFromEvent=s;class i extends y.BaseObservable{constructor(r,c){super(),this.debugName=r,this.event=c,this.handleEvent=()=>{(0,y.transaction)(o=>{for(const d of this.observers)o.updateObserver(d,this),d.handleChange(this,void 0)},()=>this.debugName)}}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0}get(){}}function n(h){return new t(h)}e.observableSignal=n;class t extends y.BaseObservable{constructor(r){super(),this.debugName=r}trigger(r,c){if(!r){(0,y.transaction)(o=>{this.trigger(o,c)},()=>`Trigger signal ${this.debugName}`);return}for(const o of this.observers)r.updateObserver(o,this),o.handleChange(this,c)}get(){}}function a(h,r){const c=new u(r??!1);return h.addObserver(c),r&&h.reportChanges(),(0,L.toDisposable)(()=>{h.removeObserver(c)})}e.keepAlive=a;class u{constructor(r){this.forceRecompute=r,this.counter=0}beginUpdate(r){this.counter++}endUpdate(r){this.counter--,this.counter===0&&this.forceRecompute&&r.reportChanges()}handlePossibleChange(r){}handleChange(r,c){}}}),define(ne[42],se([1,0,165,389,262,390,142]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.waitForState=e.observableSignalFromEvent=e.observableSignal=e.observableFromEvent=e.keepAlive=e.constObservable=e.autorunOpts=e.autorunWithStore=e.autorunHandleChanges=e.autorun=e.derivedWithStore=e.derivedHandleChanges=e.derivedOpts=e.derived=e.subtransaction=e.transaction=e.disposableObservableValue=e.observableValue=void 0,Object.defineProperty(e,\"observableValue\",{enumerable:!0,get:function(){return L.observableValue}}),Object.defineProperty(e,\"disposableObservableValue\",{enumerable:!0,get:function(){return L.disposableObservableValue}}),Object.defineProperty(e,\"transaction\",{enumerable:!0,get:function(){return L.transaction}}),Object.defineProperty(e,\"subtransaction\",{enumerable:!0,get:function(){return L.subtransaction}}),Object.defineProperty(e,\"derived\",{enumerable:!0,get:function(){return k.derived}}),Object.defineProperty(e,\"derivedOpts\",{enumerable:!0,get:function(){return k.derivedOpts}}),Object.defineProperty(e,\"derivedHandleChanges\",{enumerable:!0,get:function(){return k.derivedHandleChanges}}),Object.defineProperty(e,\"derivedWithStore\",{enumerable:!0,get:function(){return k.derivedWithStore}}),Object.defineProperty(e,\"autorun\",{enumerable:!0,get:function(){return y.autorun}}),Object.defineProperty(e,\"autorunHandleChanges\",{enumerable:!0,get:function(){return y.autorunHandleChanges}}),Object.defineProperty(e,\"autorunWithStore\",{enumerable:!0,get:function(){return y.autorunWithStore}}),Object.defineProperty(e,\"autorunOpts\",{enumerable:!0,get:function(){return y.autorunOpts}}),Object.defineProperty(e,\"constObservable\",{enumerable:!0,get:function(){return D.constObservable}}),Object.defineProperty(e,\"keepAlive\",{enumerable:!0,get:function(){return D.keepAlive}}),Object.defineProperty(e,\"observableFromEvent\",{enumerable:!0,get:function(){return D.observableFromEvent}}),Object.defineProperty(e,\"observableSignal\",{enumerable:!0,get:function(){return D.observableSignal}}),Object.defineProperty(e,\"observableSignalFromEvent\",{enumerable:!0,get:function(){return D.observableSignalFromEvent}}),Object.defineProperty(e,\"waitForState\",{enumerable:!0,get:function(){return D.waitForState}}),!1&&(0,S.setLogger)(new S.ConsoleObservableLogger)}),define(ne[166],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Range=void 0;var L;(function(k){function y(_,g){if(_.start>=g.end||g.start>=_.end)return{start:0,end:0};const C=Math.max(_.start,g.start),s=Math.min(_.end,g.end);return s-C<=0?{start:0,end:0}:{start:C,end:s}}k.intersect=y;function D(_){return _.end-_.start<=0}k.isEmpty=D;function S(_,g){return!D(y(_,g))}k.intersects=S;function f(_,g){const C=[],s={start:_.start,end:Math.min(g.start,_.end)},i={start:Math.max(g.end,_.start),end:_.end};return D(s)||C.push(s),D(i)||C.push(i),C}k.relativeComplement=f})(L||(e.Range=L={}))}),define(ne[391],se([1,0,166]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RangeMap=e.consolidate=e.shift=e.groupIntersect=void 0;function k(_,g){const C=[];for(const s of g){if(_.start>=s.range.end)continue;if(_.end<s.range.start)break;const i=L.Range.intersect(_,s.range);L.Range.isEmpty(i)||C.push({range:i,size:s.size})}return C}e.groupIntersect=k;function y({start:_,end:g},C){return{start:_+C,end:g+C}}e.shift=y;function D(_){const g=[];let C=null;for(const s of _){const i=s.range.start,n=s.range.end,t=s.size;if(C&&t===C.size){C.range.end=n;continue}C={range:{start:i,end:n},size:t},g.push(C)}return g}e.consolidate=D;function S(..._){return D(_.reduce((g,C)=>g.concat(C),[]))}class f{get paddingTop(){return this._paddingTop}set paddingTop(g){this._size=this._size+g-this._paddingTop,this._paddingTop=g}constructor(g){this.groups=[],this._size=0,this._paddingTop=0,this._paddingTop=g??0,this._size=this._paddingTop}splice(g,C,s=[]){const i=s.length-C,n=k({start:0,end:g},this.groups),t=k({start:g+C,end:Number.POSITIVE_INFINITY},this.groups).map(u=>({range:y(u.range,i),size:u.size})),a=s.map((u,h)=>({range:{start:g+h,end:g+h+1},size:u.size}));this.groups=S(n,a,t),this._size=this._paddingTop+this.groups.reduce((u,h)=>u+h.size*(h.range.end-h.range.start),0)}get count(){const g=this.groups.length;return g?this.groups[g-1].range.end:0}get size(){return this._size}indexAt(g){if(g<0)return-1;if(g<this._paddingTop)return 0;let C=0,s=this._paddingTop;for(const i of this.groups){const n=i.range.end-i.range.start,t=s+n*i.size;if(g<t)return C+Math.floor((g-s)/i.size);C+=n,s=t}return C}indexAfter(g){return Math.min(this.indexAt(g)+1,this.count)}positionAt(g){if(g<0)return-1;let C=0,s=0;for(const i of this.groups){const n=i.range.end-i.range.start,t=s+n;if(g<t)return this._paddingTop+C+(g-s)*i.size;C+=n*i.size,s=t}return-1}}e.RangeMap=f}),define(ne[58],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StopWatch=void 0;const L=globalThis.performance&&typeof globalThis.performance.now==\"function\";class k{static create(D){return new k(D)}constructor(D){this._now=L&&D===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}e.StopWatch=k}),define(ne[6],se([1,0,9,99,2,64,58]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Relay=e.EventBufferer=e.EventMultiplexer=e.MicrotaskEmitter=e.DebounceEmitter=e.PauseableEmitter=e.createEventDeliveryQueue=e.Emitter=e.EventProfiling=e.Event=void 0;const f=!1,_=!1;var g;(function(b){b.None=()=>y.Disposable.None;function w(ce){if(_){const{onDidAddListener:de}=ce,he=n.create();let ue=0;ce.onDidAddListener=()=>{++ue===2&&(console.warn(\"snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here\"),he.print()),de?.()}}}function E(ce,de){return O(ce,()=>{},0,void 0,!0,void 0,de)}b.defer=E;function I(ce){return(de,he=null,ue)=>{let te=!1,q;return q=ce(z=>{if(!te)return q?q.dispose():te=!0,de.call(he,z)},null,ue),te&&q.dispose(),q}}b.once=I;function M(ce,de,he){return F((ue,te=null,q)=>ce(z=>ue.call(te,de(z)),null,q),he)}b.map=M;function P(ce,de,he){return F((ue,te=null,q)=>ce(z=>{de(z),ue.call(te,z)},null,q),he)}b.forEach=P;function x(ce,de,he){return F((ue,te=null,q)=>ce(z=>de(z)&&ue.call(te,z),null,q),he)}b.filter=x;function T(ce){return ce}b.signal=T;function A(...ce){return(de,he=null,ue)=>(0,y.combinedDisposable)(...ce.map(te=>te(q=>de.call(he,q),null,ue)))}b.any=A;function N(ce,de,he,ue){let te=he;return M(ce,q=>(te=de(te,q),te),ue)}b.reduce=N;function F(ce,de){let he;const ue={onWillAddFirstListener(){he=ce(te.fire,te)},onDidRemoveLastListener(){he?.dispose()}};de||w(ue);const te=new h(ue);return de?.add(te),te.event}function O(ce,de,he=100,ue=!1,te=!1,q,z){let ee,$,re,oe=0,ge;const ve={leakWarningThreshold:q,onWillAddFirstListener(){ee=ce(Le=>{oe++,$=de($,Le),ue&&!re&&(Se.fire($),$=void 0),ge=()=>{const De=$;$=void 0,re=void 0,(!ue||oe>1)&&Se.fire(De),oe=0},typeof he==\"number\"?(clearTimeout(re),re=setTimeout(ge,he)):re===void 0&&(re=0,queueMicrotask(ge))})},onWillRemoveListener(){te&&oe>0&&ge?.()},onDidRemoveLastListener(){ge=void 0,ee.dispose()}};z||w(ve);const Se=new h(ve);return z?.add(Se),Se.event}b.debounce=O;function W(ce,de=0,he){return b.debounce(ce,(ue,te)=>ue?(ue.push(te),ue):[te],de,void 0,!0,void 0,he)}b.accumulate=W;function U(ce,de=(ue,te)=>ue===te,he){let ue=!0,te;return x(ce,q=>{const z=ue||!de(q,te);return ue=!1,te=q,z},he)}b.latch=U;function j(ce,de,he){return[b.filter(ce,de,he),b.filter(ce,ue=>!de(ue),he)]}b.split=j;function R(ce,de=!1,he=[]){let ue=he.slice(),te=ce(ee=>{ue?ue.push(ee):z.fire(ee)});const q=()=>{ue?.forEach(ee=>z.fire(ee)),ue=null},z=new h({onWillAddFirstListener(){te||(te=ce(ee=>z.fire(ee)))},onDidAddFirstListener(){ue&&(de?setTimeout(q):q())},onDidRemoveLastListener(){te&&te.dispose(),te=null}});return z.event}b.buffer=R;class K{constructor(de){this.event=de,this.disposables=new y.DisposableStore}map(de){return new K(M(this.event,de,this.disposables))}forEach(de){return new K(P(this.event,de,this.disposables))}filter(de){return new K(x(this.event,de,this.disposables))}reduce(de,he){return new K(N(this.event,de,he,this.disposables))}latch(){return new K(U(this.event,void 0,this.disposables))}debounce(de,he=100,ue=!1,te=!1,q){return new K(O(this.event,de,he,ue,te,q,this.disposables))}on(de,he,ue){return this.event(de,he,ue)}once(de,he,ue){return I(this.event)(de,he,ue)}dispose(){this.disposables.dispose()}}function G(ce){return new K(ce)}b.chain=G;function Z(ce,de,he=ue=>ue){const ue=(...ee)=>z.fire(he(...ee)),te=()=>ce.on(de,ue),q=()=>ce.removeListener(de,ue),z=new h({onWillAddFirstListener:te,onDidRemoveLastListener:q});return z.event}b.fromNodeEventEmitter=Z;function J(ce,de,he=ue=>ue){const ue=(...ee)=>z.fire(he(...ee)),te=()=>ce.addEventListener(de,ue),q=()=>ce.removeEventListener(de,ue),z=new h({onWillAddFirstListener:te,onDidRemoveLastListener:q});return z.event}b.fromDOMEventEmitter=J;function X(ce){return new Promise(de=>I(ce)(de))}b.toPromise=X;function H(ce){const de=new h;return ce.then(he=>{de.fire(he)},()=>{de.fire(void 0)}).finally(()=>{de.dispose()}),de.event}b.fromPromise=H;function B(ce,de){return de(void 0),ce(he=>de(he))}b.runAndSubscribe=B;function V(ce,de){let he=null;function ue(q){he?.dispose(),he=new y.DisposableStore,de(q,he)}ue(void 0);const te=ce(q=>ue(q));return(0,y.toDisposable)(()=>{te.dispose(),he?.dispose()})}b.runAndSubscribeWithStore=V;class Y{constructor(de,he){this._observable=de,this._counter=0,this._hasChanged=!1;const ue={onWillAddFirstListener:()=>{de.addObserver(this)},onDidRemoveLastListener:()=>{de.removeObserver(this)}};he||w(ue),this.emitter=new h(ue),he&&he.add(this.emitter)}beginUpdate(de){this._counter++}handlePossibleChange(de){}handleChange(de,he){this._hasChanged=!0}endUpdate(de){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function ie(ce,de){return new Y(ce,de).emitter.event}b.fromObservable=ie;function ae(ce){return de=>{let he=0,ue=!1;const te={beginUpdate(){he++},endUpdate(){he--,he===0&&(ce.reportChanges(),ue&&(ue=!1,de()))},handlePossibleChange(){},handleChange(){ue=!0}};return ce.addObserver(te),ce.reportChanges(),{dispose(){ce.removeObserver(te)}}}}b.fromObservableLight=ae})(g||(e.Event=g={}));class C{constructor(w){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${w}_${C._idPool++}`,C.all.add(this)}start(w){this._stopWatch=new S.StopWatch,this.listenerCount=w}stop(){if(this._stopWatch){const w=this._stopWatch.elapsed();this.durations.push(w),this.elapsedOverall+=w,this.invocationCount+=1,this._stopWatch=void 0}}}e.EventProfiling=C,C.all=new Set,C._idPool=0;let s=-1;class i{constructor(w,E=Math.random().toString(18).slice(2,5)){this.threshold=w,this.name=E,this._warnCountdown=0}dispose(){var w;(w=this._stacks)===null||w===void 0||w.clear()}check(w,E){const I=this.threshold;if(I<=0||E<I)return;this._stacks||(this._stacks=new Map);const M=this._stacks.get(w.value)||0;if(this._stacks.set(w.value,M+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=I*.5;let P,x=0;for(const[T,A]of this._stacks)(!P||x<A)&&(P=T,x=A);console.warn(`[${this.name}] potential listener LEAK detected, having ${E} listeners already. MOST frequent listener (${x}):`),console.warn(P)}return()=>{const P=this._stacks.get(w.value)||0;this._stacks.set(w.value,P-1)}}}class n{static create(){var w;return new n((w=new Error().stack)!==null&&w!==void 0?w:\"\")}constructor(w){this.value=w}print(){console.warn(this.value.split(`\n`).slice(2).join(`\n`))}}class t{constructor(w){this.value=w}}const a=2,u=(b,w)=>{if(b instanceof t)w(b);else for(let E=0;E<b.length;E++){const I=b[E];I&&w(I)}};class h{constructor(w){var E,I,M,P,x;this._size=0,this._options=w,this._leakageMon=s>0||!((E=this._options)===null||E===void 0)&&E.leakWarningThreshold?new i((M=(I=this._options)===null||I===void 0?void 0:I.leakWarningThreshold)!==null&&M!==void 0?M:s):void 0,this._perfMon=!((P=this._options)===null||P===void 0)&&P._profName?new C(this._options._profName):void 0,this._deliveryQueue=(x=this._options)===null||x===void 0?void 0:x.deliveryQueue}dispose(){var w,E,I,M;if(!this._disposed){if(this._disposed=!0,((w=this._deliveryQueue)===null||w===void 0?void 0:w.current)===this&&this._deliveryQueue.reset(),this._listeners){if(f){const P=this._listeners;queueMicrotask(()=>{u(P,x=>{var T;return(T=x.stack)===null||T===void 0?void 0:T.print()})})}this._listeners=void 0,this._size=0}(I=(E=this._options)===null||E===void 0?void 0:E.onDidRemoveLastListener)===null||I===void 0||I.call(E),(M=this._leakageMon)===null||M===void 0||M.dispose()}}get event(){var w;return(w=this._event)!==null&&w!==void 0||(this._event=(E,I,M)=>{var P,x,T,A,N;if(this._leakageMon&&this._size>this._leakageMon.threshold*3)return console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`),y.Disposable.None;if(this._disposed)return y.Disposable.None;I&&(E=E.bind(I));const F=new t(E);let O,W;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(F.stack=n.create(),O=this._leakageMon.check(F.stack,this._size+1)),f&&(F.stack=W??n.create()),this._listeners?this._listeners instanceof t?((N=this._deliveryQueue)!==null&&N!==void 0||(this._deliveryQueue=new c),this._listeners=[this._listeners,F]):this._listeners.push(F):((x=(P=this._options)===null||P===void 0?void 0:P.onWillAddFirstListener)===null||x===void 0||x.call(P,this),this._listeners=F,(A=(T=this._options)===null||T===void 0?void 0:T.onDidAddFirstListener)===null||A===void 0||A.call(T,this)),this._size++;const U=(0,y.toDisposable)(()=>{O?.(),this._removeListener(F)});return M instanceof y.DisposableStore?M.add(U):Array.isArray(M)&&M.push(U),U}),this._event}_removeListener(w){var E,I,M,P;if((I=(E=this._options)===null||E===void 0?void 0:E.onWillRemoveListener)===null||I===void 0||I.call(E,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(P=(M=this._options)===null||M===void 0?void 0:M.onDidRemoveLastListener)===null||P===void 0||P.call(M,this),this._size=0;return}const x=this._listeners,T=x.indexOf(w);if(T===-1)throw console.log(\"disposed?\",this._disposed),console.log(\"size?\",this._size),console.log(\"arr?\",JSON.stringify(this._listeners)),new Error(\"Attempted to dispose unknown listener\");this._size--,x[T]=void 0;const A=this._deliveryQueue.current===this;if(this._size*a<=x.length){let N=0;for(let F=0;F<x.length;F++)x[F]?x[N++]=x[F]:A&&(this._deliveryQueue.end--,N<this._deliveryQueue.i&&this._deliveryQueue.i--);x.length=N}}_deliver(w,E){var I;if(!w)return;const M=((I=this._options)===null||I===void 0?void 0:I.onListenerError)||L.onUnexpectedError;if(!M){w.value(E);return}try{w.value(E)}catch(P){M(P)}}_deliverQueue(w){const E=w.current._listeners;for(;w.i<w.end;)this._deliver(E[w.i++],w.value);w.reset()}fire(w){var E,I,M,P;if(!((E=this._deliveryQueue)===null||E===void 0)&&E.current&&(this._deliverQueue(this._deliveryQueue),(I=this._perfMon)===null||I===void 0||I.stop()),(M=this._perfMon)===null||M===void 0||M.start(this._size),this._listeners)if(this._listeners instanceof t)this._deliver(this._listeners,w);else{const x=this._deliveryQueue;x.enqueue(this,w,this._listeners.length),this._deliverQueue(x)}(P=this._perfMon)===null||P===void 0||P.stop()}hasListeners(){return this._size>0}}e.Emitter=h;const r=()=>new c;e.createEventDeliveryQueue=r;class c{constructor(){this.i=-1,this.end=0}enqueue(w,E,I){this.i=0,this.end=I,this.current=w,this.value=E}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class o extends h{constructor(w){super(w),this._isPaused=0,this._eventQueue=new D.LinkedList,this._mergeFn=w?.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused===0)if(this._mergeFn){if(this._eventQueue.size>0){const w=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(w))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(w){this._size&&(this._isPaused!==0?this._eventQueue.push(w):super.fire(w))}}e.PauseableEmitter=o;class d extends o{constructor(w){var E;super(w),this._delay=(E=w.delay)!==null&&E!==void 0?E:100}fire(w){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(w)}}e.DebounceEmitter=d;class l extends h{constructor(w){super(w),this._queuedEvents=[],this._mergeFn=w?.merge}fire(w){this.hasListeners()&&(this._queuedEvents.push(w),this._queuedEvents.length===1&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(E=>super.fire(E)),this._queuedEvents=[]}))}}e.MicrotaskEmitter=l;class p{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new h({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(w){const E={event:w,listener:null};this.events.push(E),this.hasListeners&&this.hook(E);const I=()=>{this.hasListeners&&this.unhook(E);const M=this.events.indexOf(E);this.events.splice(M,1)};return(0,y.toDisposable)((0,k.once)(I))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach(w=>this.hook(w))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach(w=>this.unhook(w))}hook(w){w.listener=w.event(E=>this.emitter.fire(E))}unhook(w){w.listener&&w.listener.dispose(),w.listener=null}dispose(){this.emitter.dispose()}}e.EventMultiplexer=p;class m{constructor(){this.buffers=[]}wrapEvent(w){return(E,I,M)=>w(P=>{const x=this.buffers[this.buffers.length-1];x?x.push(()=>E.call(I,P)):E.call(I,P)},void 0,M)}bufferEvents(w){const E=[];this.buffers.push(E);const I=w();return this.buffers.pop(),E.forEach(M=>M()),I}}e.EventBufferer=m;class v{constructor(){this.listening=!1,this.inputEvent=g.None,this.inputEventListener=y.Disposable.None,this.emitter=new h({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(w){this.inputEvent=w,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=w(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}e.Relay=v}),define(ne[52],se([1,0,6,2]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isStandalone=e.isAndroid=e.isElectron=e.isWebkitWebView=e.isSafari=e.isChrome=e.isWebKit=e.isFirefox=e.getZoomFactor=e.PixelRatio=e.addMatchMediaChangeListener=void 0;class y{constructor(){this._zoomFactor=1}getZoomFactor(){return this._zoomFactor}}y.INSTANCE=new y;class D extends k.Disposable{constructor(){super(),this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,this._listener=()=>this._handleChange(!0),this._mediaQueryList=null,this._handleChange(!1)}_handleChange(t){var a;(a=this._mediaQueryList)===null||a===void 0||a.removeEventListener(\"change\",this._listener),this._mediaQueryList=window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),this._mediaQueryList.addEventListener(\"change\",this._listener),t&&this._onDidChange.fire()}}class S extends k.Disposable{get value(){return this._value}constructor(){super(),this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,this._value=this._getPixelRatio();const t=this._register(new D);this._register(t.onDidChange(()=>{this._value=this._getPixelRatio(),this._onDidChange.fire(this._value)}))}_getPixelRatio(){const t=document.createElement(\"canvas\").getContext(\"2d\"),a=window.devicePixelRatio||1,u=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return a/u}}class f{constructor(){this._pixelRatioMonitor=null}_getOrCreatePixelRatioMonitor(){return this._pixelRatioMonitor||(this._pixelRatioMonitor=(0,k.markAsSingleton)(new S)),this._pixelRatioMonitor}get value(){return this._getOrCreatePixelRatioMonitor().value}get onDidChange(){return this._getOrCreatePixelRatioMonitor().onDidChange}}function _(n,t){typeof n==\"string\"&&(n=window.matchMedia(n)),n.addEventListener(\"change\",t)}e.addMatchMediaChangeListener=_,e.PixelRatio=new f;function g(){return y.INSTANCE.getZoomFactor()}e.getZoomFactor=g;const C=navigator.userAgent;e.isFirefox=C.indexOf(\"Firefox\")>=0,e.isWebKit=C.indexOf(\"AppleWebKit\")>=0,e.isChrome=C.indexOf(\"Chrome\")>=0,e.isSafari=!e.isChrome&&C.indexOf(\"Safari\")>=0,e.isWebkitWebView=!e.isChrome&&!e.isSafari&&e.isWebKit,e.isElectron=C.indexOf(\"Electron/\")>=0,e.isAndroid=C.indexOf(\"Android\")>=0;let s=!1;if(window.matchMedia){const n=window.matchMedia(\"(display-mode: standalone) or (display-mode: window-controls-overlay)\"),t=window.matchMedia(\"(display-mode: fullscreen)\");s=n.matches,_(n,({matches:a})=>{s&&t.matches||(s=a)})}function i(){return s}e.isStandalone=i}),define(ne[81],se([1,0,6]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DomEmitter=void 0;class k{get event(){return this.emitter.event}constructor(D,S,f){const _=g=>this.emitter.fire(g);this.emitter=new L.Emitter({onWillAddFirstListener:()=>D.addEventListener(S,_,f),onDidRemoveLastListener:()=>D.removeEventListener(S,_,f)})}dispose(){this.emitter.dispose()}}e.DomEmitter=k}),define(ne[19],se([1,0,6]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CancellationTokenSource=e.CancellationToken=void 0;const k=Object.freeze(function(f,_){const g=setTimeout(f.bind(_),0);return{dispose(){clearTimeout(g)}}});var y;(function(f){function _(g){return g===f.None||g===f.Cancelled||g instanceof D?!0:!g||typeof g!=\"object\"?!1:typeof g.isCancellationRequested==\"boolean\"&&typeof g.onCancellationRequested==\"function\"}f.isCancellationToken=_,f.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:L.Event.None}),f.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:k})})(y||(e.CancellationToken=y={}));class D{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?k:(this._emitter||(this._emitter=new L.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class S{constructor(_){this._token=void 0,this._parentListener=void 0,this._parentListener=_&&_.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new D),this._token}cancel(){this._token?this._token instanceof D&&this._token.cancel():this._token=y.Cancelled}dispose(_=!1){var g;_&&this.cancel(),(g=this._parentListener)===null||g===void 0||g.dispose(),this._token?this._token instanceof D&&this._token.dispose():this._token=y.None}}e.CancellationTokenSource=S}),define(ne[263],se([1,0,6]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IME=e.IMEImpl=void 0;class k{constructor(){this._onDidChange=new L.Emitter,this.onDidChange=this._onDidChange.event,this._enabled=!0}get enabled(){return this._enabled}enable(){this._enabled=!0,this._onDidChange.fire()}disable(){this._enabled=!1,this._onDidChange.fire()}}e.IMEImpl=k,e.IME=new k}),define(ne[167],se([1,0,6,2]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SmoothScrollingOperation=e.SmoothScrollingUpdate=e.Scrollable=e.ScrollState=void 0;class y{constructor(n,t,a,u,h,r,c){this._forceIntegerValues=n,this._scrollStateBrand=void 0,this._forceIntegerValues&&(t=t|0,a=a|0,u=u|0,h=h|0,r=r|0,c=c|0),this.rawScrollLeft=u,this.rawScrollTop=c,t<0&&(t=0),u+t>a&&(u=a-t),u<0&&(u=0),h<0&&(h=0),c+h>r&&(c=r-h),c<0&&(c=0),this.width=t,this.scrollWidth=a,this.scrollLeft=u,this.height=h,this.scrollHeight=r,this.scrollTop=c}equals(n){return this.rawScrollLeft===n.rawScrollLeft&&this.rawScrollTop===n.rawScrollTop&&this.width===n.width&&this.scrollWidth===n.scrollWidth&&this.scrollLeft===n.scrollLeft&&this.height===n.height&&this.scrollHeight===n.scrollHeight&&this.scrollTop===n.scrollTop}withScrollDimensions(n,t){return new y(this._forceIntegerValues,typeof n.width<\"u\"?n.width:this.width,typeof n.scrollWidth<\"u\"?n.scrollWidth:this.scrollWidth,t?this.rawScrollLeft:this.scrollLeft,typeof n.height<\"u\"?n.height:this.height,typeof n.scrollHeight<\"u\"?n.scrollHeight:this.scrollHeight,t?this.rawScrollTop:this.scrollTop)}withScrollPosition(n){return new y(this._forceIntegerValues,this.width,this.scrollWidth,typeof n.scrollLeft<\"u\"?n.scrollLeft:this.rawScrollLeft,this.height,this.scrollHeight,typeof n.scrollTop<\"u\"?n.scrollTop:this.rawScrollTop)}createScrollEvent(n,t){const a=this.width!==n.width,u=this.scrollWidth!==n.scrollWidth,h=this.scrollLeft!==n.scrollLeft,r=this.height!==n.height,c=this.scrollHeight!==n.scrollHeight,o=this.scrollTop!==n.scrollTop;return{inSmoothScrolling:t,oldWidth:n.width,oldScrollWidth:n.scrollWidth,oldScrollLeft:n.scrollLeft,width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,oldHeight:n.height,oldScrollHeight:n.scrollHeight,oldScrollTop:n.scrollTop,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:a,scrollWidthChanged:u,scrollLeftChanged:h,heightChanged:r,scrollHeightChanged:c,scrollTopChanged:o}}}e.ScrollState=y;class D extends k.Disposable{constructor(n){super(),this._scrollableBrand=void 0,this._onScroll=this._register(new L.Emitter),this.onScroll=this._onScroll.event,this._smoothScrollDuration=n.smoothScrollDuration,this._scheduleAtNextAnimationFrame=n.scheduleAtNextAnimationFrame,this._state=new y(n.forceIntegerValues,0,0,0,0,0,0),this._smoothScrolling=null}dispose(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),super.dispose()}setSmoothScrollDuration(n){this._smoothScrollDuration=n}validateScrollPosition(n){return this._state.withScrollPosition(n)}getScrollDimensions(){return this._state}setScrollDimensions(n,t){var a;const u=this._state.withScrollDimensions(n,t);this._setState(u,!!this._smoothScrolling),(a=this._smoothScrolling)===null||a===void 0||a.acceptScrollDimensions(this._state)}getFutureScrollPosition(){return this._smoothScrolling?this._smoothScrolling.to:this._state}getCurrentScrollPosition(){return this._state}setScrollPositionNow(n){const t=this._state.withScrollPosition(n);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(t,!1)}setScrollPositionSmooth(n,t){if(this._smoothScrollDuration===0)return this.setScrollPositionNow(n);if(this._smoothScrolling){n={scrollLeft:typeof n.scrollLeft>\"u\"?this._smoothScrolling.to.scrollLeft:n.scrollLeft,scrollTop:typeof n.scrollTop>\"u\"?this._smoothScrolling.to.scrollTop:n.scrollTop};const a=this._state.withScrollPosition(n);if(this._smoothScrolling.to.scrollLeft===a.scrollLeft&&this._smoothScrolling.to.scrollTop===a.scrollTop)return;let u;t?u=new g(this._smoothScrolling.from,a,this._smoothScrolling.startTime,this._smoothScrolling.duration):u=this._smoothScrolling.combine(this._state,a,this._smoothScrollDuration),this._smoothScrolling.dispose(),this._smoothScrolling=u}else{const a=this._state.withScrollPosition(n);this._smoothScrolling=g.start(this._state,a,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}hasPendingScrollAnimation(){return!!this._smoothScrolling}_performSmoothScrolling(){if(!this._smoothScrolling)return;const n=this._smoothScrolling.tick(),t=this._state.withScrollPosition(n);if(this._setState(t,!0),!!this._smoothScrolling){if(n.isDone){this._smoothScrolling.dispose(),this._smoothScrolling=null;return}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}}_setState(n,t){const a=this._state;a.equals(n)||(this._state=n,this._onScroll.fire(this._state.createScrollEvent(a,t)))}}e.Scrollable=D;class S{constructor(n,t,a){this.scrollLeft=n,this.scrollTop=t,this.isDone=a}}e.SmoothScrollingUpdate=S;function f(i,n){const t=n-i;return function(a){return i+t*s(a)}}function _(i,n,t){return function(a){return a<t?i(a/t):n((a-t)/(1-t))}}class g{constructor(n,t,a,u){this.from=n,this.to=t,this.duration=u,this.startTime=a,this.animationFrameDisposable=null,this._initAnimations()}_initAnimations(){this.scrollLeft=this._initAnimation(this.from.scrollLeft,this.to.scrollLeft,this.to.width),this.scrollTop=this._initAnimation(this.from.scrollTop,this.to.scrollTop,this.to.height)}_initAnimation(n,t,a){if(Math.abs(n-t)>2.5*a){let h,r;return n<t?(h=n+.75*a,r=t-.75*a):(h=n-.75*a,r=t+.75*a),_(f(n,h),f(r,t),.33)}return f(n,t)}dispose(){this.animationFrameDisposable!==null&&(this.animationFrameDisposable.dispose(),this.animationFrameDisposable=null)}acceptScrollDimensions(n){this.to=n.withScrollPosition(this.to),this._initAnimations()}tick(){return this._tick(Date.now())}_tick(n){const t=(n-this.startTime)/this.duration;if(t<1){const a=this.scrollLeft(t),u=this.scrollTop(t);return new S(a,u,!1)}return new S(this.to.scrollLeft,this.to.scrollTop,!0)}combine(n,t,a){return g.start(n,t,a)}static start(n,t,a){a=a+10;const u=Date.now()-10;return new g(n,t,u,a)}}e.SmoothScrollingOperation=g;function C(i){return Math.pow(i,3)}function s(i){return 1-C(1-i)}}),define(ne[11],se([1,0,261,100]),function(Q,e,L,k){\"use strict\";var y;Object.defineProperty(e,\"__esModule\",{value:!0}),e.InvisibleCharacters=e.AmbiguousCharacters=e.noBreakWhitespace=e.getLeftDeleteOffset=e.singleLetterHash=e.containsUppercaseCharacter=e.startsWithUTF8BOM=e.UTF8_BOM_CHARACTER=e.isEmojiImprecise=e.isFullWidthCharacter=e.containsUnusualLineTerminators=e.UNUSUAL_LINE_TERMINATORS=e.isBasicASCII=e.containsRTL=e.getCharContainingOffset=e.prevCharLength=e.nextCharLength=e.GraphemeIterator=e.CodePointIterator=e.getNextCodePoint=e.computeCodePoint=e.isLowSurrogate=e.isHighSurrogate=e.commonSuffixLength=e.commonPrefixLength=e.startsWithIgnoreCase=e.equalsIgnoreCase=e.isUpperAsciiLetter=e.isLowerAsciiLetter=e.isAsciiDigit=e.compareSubstringIgnoreCase=e.compareIgnoreCase=e.compareSubstring=e.compare=e.lastNonWhitespaceIndex=e.getLeadingWhitespace=e.firstNonWhitespaceIndex=e.splitLines=e.regExpLeadsToEndlessLoop=e.createRegExp=e.stripWildcards=e.convertSimple2RegExpPattern=e.rtrim=e.ltrim=e.trim=e.escapeRegExpCharacters=e.escape=e.format=e.isFalsyOrWhitespace=void 0;function D($){return!$||typeof $!=\"string\"?!0:$.trim().length===0}e.isFalsyOrWhitespace=D;const S=/{(\\d+)}/g;function f($,...re){return re.length===0?$:$.replace(S,function(oe,ge){const ve=parseInt(ge,10);return isNaN(ve)||ve<0||ve>=re.length?oe:re[ve]})}e.format=f;function _($){return $.replace(/[<>&]/g,function(re){switch(re){case\"<\":return\"&lt;\";case\">\":return\"&gt;\";case\"&\":return\"&amp;\";default:return re}})}e.escape=_;function g($){return $.replace(/[\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)]/g,\"\\\\$&\")}e.escapeRegExpCharacters=g;function C($,re=\" \"){const oe=s($,re);return i(oe,re)}e.trim=C;function s($,re){if(!$||!re)return $;const oe=re.length;if(oe===0||$.length===0)return $;let ge=0;for(;$.indexOf(re,ge)===ge;)ge=ge+oe;return $.substring(ge)}e.ltrim=s;function i($,re){if(!$||!re)return $;const oe=re.length,ge=$.length;if(oe===0||ge===0)return $;let ve=ge,Se=-1;for(;Se=$.lastIndexOf(re,ve-1),!(Se===-1||Se+oe!==ve);){if(Se===0)return\"\";ve=Se}return $.substring(0,ve)}e.rtrim=i;function n($){return $.replace(/[\\-\\\\\\{\\}\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g,\"\\\\$&\").replace(/[\\*]/g,\".*\")}e.convertSimple2RegExpPattern=n;function t($){return $.replace(/\\*/g,\"\")}e.stripWildcards=t;function a($,re,oe={}){if(!$)throw new Error(\"Cannot create regex from empty string\");re||($=g($)),oe.wholeWord&&(/\\B/.test($.charAt(0))||($=\"\\\\b\"+$),/\\B/.test($.charAt($.length-1))||($=$+\"\\\\b\"));let ge=\"\";return oe.global&&(ge+=\"g\"),oe.matchCase||(ge+=\"i\"),oe.multiline&&(ge+=\"m\"),oe.unicode&&(ge+=\"u\"),new RegExp($,ge)}e.createRegExp=a;function u($){return $.source===\"^\"||$.source===\"^$\"||$.source===\"$\"||$.source===\"^\\\\s*$\"?!1:!!($.exec(\"\")&&$.lastIndex===0)}e.regExpLeadsToEndlessLoop=u;function h($){return $.split(/\\r\\n|\\r|\\n/)}e.splitLines=h;function r($){for(let re=0,oe=$.length;re<oe;re++){const ge=$.charCodeAt(re);if(ge!==32&&ge!==9)return re}return-1}e.firstNonWhitespaceIndex=r;function c($,re=0,oe=$.length){for(let ge=re;ge<oe;ge++){const ve=$.charCodeAt(ge);if(ve!==32&&ve!==9)return $.substring(re,ge)}return $.substring(re,oe)}e.getLeadingWhitespace=c;function o($,re=$.length-1){for(let oe=re;oe>=0;oe--){const ge=$.charCodeAt(oe);if(ge!==32&&ge!==9)return oe}return-1}e.lastNonWhitespaceIndex=o;function d($,re){return $<re?-1:$>re?1:0}e.compare=d;function l($,re,oe=0,ge=$.length,ve=0,Se=re.length){for(;oe<ge&&ve<Se;oe++,ve++){const ye=$.charCodeAt(oe),Ee=re.charCodeAt(ve);if(ye<Ee)return-1;if(ye>Ee)return 1}const Le=ge-oe,De=Se-ve;return Le<De?-1:Le>De?1:0}e.compareSubstring=l;function p($,re){return m($,re,0,$.length,0,re.length)}e.compareIgnoreCase=p;function m($,re,oe=0,ge=$.length,ve=0,Se=re.length){for(;oe<ge&&ve<Se;oe++,ve++){let ye=$.charCodeAt(oe),Ee=re.charCodeAt(ve);if(ye===Ee)continue;if(ye>=128||Ee>=128)return l($.toLowerCase(),re.toLowerCase(),oe,ge,ve,Se);b(ye)&&(ye-=32),b(Ee)&&(Ee-=32);const Me=ye-Ee;if(Me!==0)return Me}const Le=ge-oe,De=Se-ve;return Le<De?-1:Le>De?1:0}e.compareSubstringIgnoreCase=m;function v($){return $>=48&&$<=57}e.isAsciiDigit=v;function b($){return $>=97&&$<=122}e.isLowerAsciiLetter=b;function w($){return $>=65&&$<=90}e.isUpperAsciiLetter=w;function E($,re){return $.length===re.length&&m($,re)===0}e.equalsIgnoreCase=E;function I($,re){const oe=re.length;return re.length>$.length?!1:m($,re,0,oe)===0}e.startsWithIgnoreCase=I;function M($,re){const oe=Math.min($.length,re.length);let ge;for(ge=0;ge<oe;ge++)if($.charCodeAt(ge)!==re.charCodeAt(ge))return ge;return oe}e.commonPrefixLength=M;function P($,re){const oe=Math.min($.length,re.length);let ge;const ve=$.length-1,Se=re.length-1;for(ge=0;ge<oe;ge++)if($.charCodeAt(ve-ge)!==re.charCodeAt(Se-ge))return ge;return oe}e.commonSuffixLength=P;function x($){return 55296<=$&&$<=56319}e.isHighSurrogate=x;function T($){return 56320<=$&&$<=57343}e.isLowSurrogate=T;function A($,re){return($-55296<<10)+(re-56320)+65536}e.computeCodePoint=A;function N($,re,oe){const ge=$.charCodeAt(oe);if(x(ge)&&oe+1<re){const ve=$.charCodeAt(oe+1);if(T(ve))return A(ge,ve)}return ge}e.getNextCodePoint=N;function F($,re){const oe=$.charCodeAt(re-1);if(T(oe)&&re>1){const ge=$.charCodeAt(re-2);if(x(ge))return A(ge,oe)}return oe}class O{get offset(){return this._offset}constructor(re,oe=0){this._str=re,this._len=re.length,this._offset=oe}setOffset(re){this._offset=re}prevCodePoint(){const re=F(this._str,this._offset);return this._offset-=re>=65536?2:1,re}nextCodePoint(){const re=N(this._str,this._len,this._offset);return this._offset+=re>=65536?2:1,re}eol(){return this._offset>=this._len}}e.CodePointIterator=O;class W{get offset(){return this._iterator.offset}constructor(re,oe=0){this._iterator=new O(re,oe)}nextGraphemeLength(){const re=de.getInstance(),oe=this._iterator,ge=oe.offset;let ve=re.getGraphemeBreakType(oe.nextCodePoint());for(;!oe.eol();){const Se=oe.offset,Le=re.getGraphemeBreakType(oe.nextCodePoint());if(ce(ve,Le)){oe.setOffset(Se);break}ve=Le}return oe.offset-ge}prevGraphemeLength(){const re=de.getInstance(),oe=this._iterator,ge=oe.offset;let ve=re.getGraphemeBreakType(oe.prevCodePoint());for(;oe.offset>0;){const Se=oe.offset,Le=re.getGraphemeBreakType(oe.prevCodePoint());if(ce(Le,ve)){oe.setOffset(Se);break}ve=Le}return ge-oe.offset}eol(){return this._iterator.eol()}}e.GraphemeIterator=W;function U($,re){return new W($,re).nextGraphemeLength()}e.nextCharLength=U;function j($,re){return new W($,re).prevGraphemeLength()}e.prevCharLength=j;function R($,re){re>0&&T($.charCodeAt(re))&&re--;const oe=re+U($,re);return[oe-j($,oe),oe]}e.getCharContainingOffset=R;let K;function G(){return/(?:[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u0858\\u085E-\\u088E\\u08A0-\\u08C9\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFD3D\\uFD50-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFEFC]|\\uD802[\\uDC00-\\uDD1B\\uDD20-\\uDE00\\uDE10-\\uDE35\\uDE40-\\uDEE4\\uDEEB-\\uDF35\\uDF40-\\uDFFF]|\\uD803[\\uDC00-\\uDD23\\uDE80-\\uDEA9\\uDEAD-\\uDF45\\uDF51-\\uDF81\\uDF86-\\uDFF6]|\\uD83A[\\uDC00-\\uDCCF\\uDD00-\\uDD43\\uDD4B-\\uDFFF]|\\uD83B[\\uDC00-\\uDEBB])/}function Z($){return K||(K=G()),K.test($)}e.containsRTL=Z;const J=/^[\\t\\n\\r\\x20-\\x7E]*$/;function X($){return J.test($)}e.isBasicASCII=X,e.UNUSUAL_LINE_TERMINATORS=/[\\u2028\\u2029]/;function H($){return e.UNUSUAL_LINE_TERMINATORS.test($)}e.containsUnusualLineTerminators=H;function B($){return $>=11904&&$<=55215||$>=63744&&$<=64255||$>=65281&&$<=65374}e.isFullWidthCharacter=B;function V($){return $>=127462&&$<=127487||$===8986||$===8987||$===9200||$===9203||$>=9728&&$<=10175||$===11088||$===11093||$>=127744&&$<=128591||$>=128640&&$<=128764||$>=128992&&$<=129008||$>=129280&&$<=129535||$>=129648&&$<=129782}e.isEmojiImprecise=V,e.UTF8_BOM_CHARACTER=String.fromCharCode(65279);function Y($){return!!($&&$.length>0&&$.charCodeAt(0)===65279)}e.startsWithUTF8BOM=Y;function ie($,re=!1){return $?(re&&($=$.replace(/\\\\./g,\"\")),$.toLowerCase()!==$):!1}e.containsUppercaseCharacter=ie;function ae($){return $=$%(2*26),$<26?String.fromCharCode(97+$):String.fromCharCode(65+$-26)}e.singleLetterHash=ae;function ce($,re){return $===0?re!==5&&re!==7:$===2&&re===3?!1:$===4||$===2||$===3||re===4||re===2||re===3?!0:!($===8&&(re===8||re===9||re===11||re===12)||($===11||$===9)&&(re===9||re===10)||($===12||$===10)&&re===10||re===5||re===13||re===7||$===1||$===13&&re===14||$===6&&re===6)}class de{static getInstance(){return de._INSTANCE||(de._INSTANCE=new de),de._INSTANCE}constructor(){this._data=he()}getGraphemeBreakType(re){if(re<32)return re===10?3:re===13?2:4;if(re<127)return 0;const oe=this._data,ge=oe.length/3;let ve=1;for(;ve<=ge;)if(re<oe[3*ve])ve=2*ve;else if(re>oe[3*ve+1])ve=2*ve+1;else return oe[3*ve+2];return 0}}de._INSTANCE=null;function he(){return JSON.parse(\"[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]\")}function ue($,re){if($===0)return 0;const oe=te($,re);if(oe!==void 0)return oe;const ge=new O(re,$);return ge.prevCodePoint(),ge.offset}e.getLeftDeleteOffset=ue;function te($,re){const oe=new O(re,$);let ge=oe.prevCodePoint();for(;q(ge)||ge===65039||ge===8419;){if(oe.offset===0)return;ge=oe.prevCodePoint()}if(!V(ge))return;let ve=oe.offset;return ve>0&&oe.prevCodePoint()===8205&&(ve=oe.offset),ve}function q($){return 127995<=$&&$<=127999}e.noBreakWhitespace=\"\\xA0\";class z{static getInstance(re){return y.cache.get(Array.from(re))}static getLocales(){return y._locales.value}constructor(re){this.confusableDictionary=re}isAmbiguous(re){return this.confusableDictionary.has(re)}getPrimaryConfusable(re){return this.confusableDictionary.get(re)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}}e.AmbiguousCharacters=z,y=z,z.ambiguousCharacterData=new k.Lazy(()=>JSON.parse('{\"_common\":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],\"_default\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"cs\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"de\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"es\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"fr\":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"it\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"ja\":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],\"ko\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"pl\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"pt-BR\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"qps-ploc\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"ru\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"tr\":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"zh-hans\":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],\"zh-hant\":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}')),z.cache=new L.LRUCachedFunction($=>{function re(Ee){const Me=new Map;for(let Pe=0;Pe<Ee.length;Pe+=2)Me.set(Ee[Pe],Ee[Pe+1]);return Me}function oe(Ee,Me){const Pe=new Map(Ee);for(const[Fe,_e]of Me)Pe.set(Fe,_e);return Pe}function ge(Ee,Me){if(!Ee)return Me;const Pe=new Map;for(const[Fe,_e]of Ee)Me.has(Fe)&&Pe.set(Fe,_e);return Pe}const ve=y.ambiguousCharacterData.value;let Se=$.filter(Ee=>!Ee.startsWith(\"_\")&&Ee in ve);Se.length===0&&(Se=[\"_default\"]);let Le;for(const Ee of Se){const Me=re(ve[Ee]);Le=ge(Le,Me)}const De=re(ve._common),ye=oe(De,Le);return new y(ye)}),z._locales=new k.Lazy(()=>Object.keys(y.ambiguousCharacterData.value).filter($=>!$.startsWith(\"_\")));class ee{static getRawData(){return JSON.parse(\"[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]\")}static getData(){return this._data||(this._data=new Set(ee.getRawData())),this._data}static isInvisibleCharacter(re){return ee.getData().has(re)}static get codePoints(){return ee.getData()}}e.InvisibleCharacters=ee,ee._data=void 0}),define(ne[72],se([1,0,65,11]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.fuzzyScoreGracefulAggressive=e.fuzzyScore=e.FuzzyScoreOptions=e.FuzzyScore=e.isPatternInWord=e.createMatches=e.anyScore=e.matchesFuzzy2=e.matchesFuzzy=e.matchesWords=e.matchesCamelCase=e.isUpper=e.matchesSubString=e.matchesContiguousSubString=e.matchesPrefix=e.matchesStrictPrefix=e.or=void 0;function y(...q){return function(z,ee){for(let $=0,re=q.length;$<re;$++){const oe=q[$](z,ee);if(oe)return oe}return null}}e.or=y,e.matchesStrictPrefix=D.bind(void 0,!1),e.matchesPrefix=D.bind(void 0,!0);function D(q,z,ee){if(!ee||ee.length<z.length)return null;let $;return q?$=k.startsWithIgnoreCase(ee,z):$=ee.indexOf(z)===0,$?z.length>0?[{start:0,end:z.length}]:[]:null}function S(q,z){const ee=z.toLowerCase().indexOf(q.toLowerCase());return ee===-1?null:[{start:ee,end:ee+q.length}]}e.matchesContiguousSubString=S;function f(q,z){return _(q.toLowerCase(),z.toLowerCase(),0,0)}e.matchesSubString=f;function _(q,z,ee,$){if(ee===q.length)return[];if($===z.length)return null;if(q[ee]===z[$]){let re=null;return(re=_(q,z,ee+1,$+1))?h({start:$,end:$+1},re):null}return _(q,z,ee,$+1)}function g(q){return 97<=q&&q<=122}function C(q){return 65<=q&&q<=90}e.isUpper=C;function s(q){return 48<=q&&q<=57}function i(q){return q===32||q===9||q===10||q===13}const n=new Set;\"()[]{}<>`'\\\"-/;:,.?!\".split(\"\").forEach(q=>n.add(q.charCodeAt(0)));function t(q){return i(q)||n.has(q)}function a(q,z){return q===z||t(q)&&t(z)}function u(q){return g(q)||C(q)||s(q)}function h(q,z){return z.length===0?z=[q]:q.end===z[0].start?z[0].start=q.start:z.unshift(q),z}function r(q,z){for(let ee=z;ee<q.length;ee++){const $=q.charCodeAt(ee);if(C($)||s($)||ee>0&&!u(q.charCodeAt(ee-1)))return ee}return q.length}function c(q,z,ee,$){if(ee===q.length)return[];if($===z.length)return null;if(q[ee]!==z[$].toLowerCase())return null;{let re=null,oe=$+1;for(re=c(q,z,ee+1,$+1);!re&&(oe=r(z,oe))<z.length;)re=c(q,z,ee+1,oe),oe++;return re===null?null:h({start:$,end:$+1},re)}}function o(q){let z=0,ee=0,$=0,re=0,oe=0;for(let De=0;De<q.length;De++)oe=q.charCodeAt(De),C(oe)&&z++,g(oe)&&ee++,u(oe)&&$++,s(oe)&&re++;const ge=z/q.length,ve=ee/q.length,Se=$/q.length,Le=re/q.length;return{upperPercent:ge,lowerPercent:ve,alphaPercent:Se,numericPercent:Le}}function d(q){const{upperPercent:z,lowerPercent:ee}=q;return ee===0&&z>.6}function l(q){const{upperPercent:z,lowerPercent:ee,alphaPercent:$,numericPercent:re}=q;return ee>.2&&z<.8&&$>.6&&re<.2}function p(q){let z=0,ee=0,$=0,re=0;for(let oe=0;oe<q.length;oe++)$=q.charCodeAt(oe),C($)&&z++,g($)&&ee++,i($)&&re++;return(z===0||ee===0)&&re===0?q.length<=30:z<=5}function m(q,z){if(!z||(z=z.trim(),z.length===0)||!p(q)||z.length>60)return null;const ee=o(z);if(!l(ee)){if(!d(ee))return null;z=z.toLowerCase()}let $=null,re=0;for(q=q.toLowerCase();re<z.length&&($=c(q,z,0,re))===null;)re=r(z,re+1);return $}e.matchesCamelCase=m;function v(q,z,ee=!1){if(!z||z.length===0)return null;let $=null,re=0;for(q=q.toLowerCase(),z=z.toLowerCase();re<z.length&&($=b(q,z,0,re,ee))===null;)re=w(z,re+1);return $}e.matchesWords=v;function b(q,z,ee,$,re){if(ee===q.length)return[];if($===z.length)return null;if(a(q.charCodeAt(ee),z.charCodeAt($))){let oe=null,ge=$+1;if(oe=b(q,z,ee+1,$+1,re),!re)for(;!oe&&(ge=w(z,ge))<z.length;)oe=b(q,z,ee+1,ge,re),ge++;return oe?q.charCodeAt(ee)!==z.charCodeAt($)?oe:h({start:$,end:$+1},oe):null}else return null}function w(q,z){for(let ee=z;ee<q.length;ee++)if(t(q.charCodeAt(ee))||ee>0&&t(q.charCodeAt(ee-1)))return ee;return q.length}const E=y(e.matchesPrefix,m,S),I=y(e.matchesPrefix,m,f),M=new L.LRUCache(1e4);function P(q,z,ee=!1){if(typeof q!=\"string\"||typeof z!=\"string\")return null;let $=M.get(q);$||($=new RegExp(k.convertSimple2RegExpPattern(q),\"i\"),M.set(q,$));const re=$.exec(z);return re?[{start:re.index,end:re.index+re[0].length}]:ee?I(q,z):E(q,z)}e.matchesFuzzy=P;function x(q,z){const ee=ae(q,q.toLowerCase(),0,z,z.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return ee?A(ee):null}e.matchesFuzzy2=x;function T(q,z,ee,$,re,oe){const ge=Math.min(13,q.length);for(;ee<ge;ee++){const ve=ae(q,z,ee,$,re,oe,{firstMatchCanBeWeak:!0,boostFullMatch:!0});if(ve)return ve}return[0,oe]}e.anyScore=T;function A(q){if(typeof q>\"u\")return[];const z=[],ee=q[1];for(let $=q.length-1;$>1;$--){const re=q[$]+ee,oe=z[z.length-1];oe&&oe.end===re?oe.end=re+1:z.push({start:re,end:re+1})}return z}e.createMatches=A;const N=128;function F(){const q=[],z=[];for(let ee=0;ee<=N;ee++)z[ee]=0;for(let ee=0;ee<=N;ee++)q.push(z.slice(0));return q}function O(q){const z=[];for(let ee=0;ee<=q;ee++)z[ee]=0;return z}const W=O(2*N),U=O(2*N),j=F(),R=F(),K=F(),G=!1;function Z(q,z,ee,$,re){function oe(ve,Se,Le=\" \"){for(;ve.length<Se;)ve=Le+ve;return ve}let ge=` |   |${$.split(\"\").map(ve=>oe(ve,3)).join(\"|\")}\n`;for(let ve=0;ve<=ee;ve++)ve===0?ge+=\" |\":ge+=`${z[ve-1]}|`,ge+=q[ve].slice(0,re+1).map(Se=>oe(Se.toString(),3)).join(\"|\")+`\n`;return ge}function J(q,z,ee,$){q=q.substr(z),ee=ee.substr($),console.log(Z(R,q,q.length,ee,ee.length)),console.log(Z(K,q,q.length,ee,ee.length)),console.log(Z(j,q,q.length,ee,ee.length))}function X(q,z){if(z<0||z>=q.length)return!1;const ee=q.codePointAt(z);switch(ee){case 95:case 45:case 46:case 32:case 47:case 92:case 39:case 34:case 58:case 36:case 60:case 62:case 40:case 41:case 91:case 93:case 123:case 125:return!0;case void 0:return!1;default:return!!k.isEmojiImprecise(ee)}}function H(q,z){if(z<0||z>=q.length)return!1;switch(q.charCodeAt(z)){case 32:case 9:return!0;default:return!1}}function B(q,z,ee){return z[q]!==ee[q]}function V(q,z,ee,$,re,oe,ge=!1){for(;z<ee&&re<oe;)q[z]===$[re]&&(ge&&(W[z]=re),z+=1),re+=1;return z===ee}e.isPatternInWord=V;var Y;(function(q){q.Default=[-100,0];function z(ee){return!ee||ee.length===2&&ee[0]===-100&&ee[1]===0}q.isDefault=z})(Y||(e.FuzzyScore=Y={}));class ie{constructor(z,ee){this.firstMatchCanBeWeak=z,this.boostFullMatch=ee}}e.FuzzyScoreOptions=ie,ie.default={boostFullMatch:!0,firstMatchCanBeWeak:!1};function ae(q,z,ee,$,re,oe,ge=ie.default){const ve=q.length>N?N:q.length,Se=$.length>N?N:$.length;if(ee>=ve||oe>=Se||ve-ee>Se-oe||!V(z,ee,ve,re,oe,Se,!0))return;ce(ve,Se,ee,oe,z,re);let Le=1,De=1,ye=ee,Ee=oe;const Me=[!1];for(Le=1,ye=ee;ye<ve;Le++,ye++){const le=W[ye],pe=U[ye],Ce=ye+1<ve?U[ye+1]:Se;for(De=le-oe+1,Ee=le;Ee<Ce;De++,Ee++){let be=Number.MIN_SAFE_INTEGER,Ie=!1;Ee<=pe&&(be=de(q,z,ye,ee,$,re,Ee,Se,oe,j[Le-1][De-1]===0,Me));let Ne=0;be!==Number.MAX_SAFE_INTEGER&&(Ie=!0,Ne=be+R[Le-1][De-1]);const Re=Ee>le,Ve=Re?R[Le][De-1]+(j[Le][De-1]>0?-5:0):0,ze=Ee>le+1&&j[Le][De-1]>0,We=ze?R[Le][De-2]+(j[Le][De-2]>0?-5:0):0;if(ze&&(!Re||We>=Ve)&&(!Ie||We>=Ne))R[Le][De]=We,K[Le][De]=3,j[Le][De]=0;else if(Re&&(!Ie||Ve>=Ne))R[Le][De]=Ve,K[Le][De]=2,j[Le][De]=0;else if(Ie)R[Le][De]=Ne,K[Le][De]=1,j[Le][De]=j[Le-1][De-1]+1;else throw new Error(\"not possible\")}}if(G&&J(q,ee,$,oe),!Me[0]&&!ge.firstMatchCanBeWeak)return;Le--,De--;const Pe=[R[Le][De],oe];let Fe=0,_e=0;for(;Le>=1;){let le=De;do{const pe=K[Le][le];if(pe===3)le=le-2;else if(pe===2)le=le-1;else break}while(le>=1);Fe>1&&z[ee+Le-1]===re[oe+De-1]&&!B(le+oe-1,$,re)&&Fe+1>j[Le][le]&&(le=De),le===De?Fe++:Fe=1,_e||(_e=le),Le--,De=le-1,Pe.push(De)}Se===ve&&ge.boostFullMatch&&(Pe[0]+=2);const me=_e-ve;return Pe[0]-=me,Pe}e.fuzzyScore=ae;function ce(q,z,ee,$,re,oe){let ge=q-1,ve=z-1;for(;ge>=ee&&ve>=$;)re[ge]===oe[ve]&&(U[ge]=ve,ge--),ve--}function de(q,z,ee,$,re,oe,ge,ve,Se,Le,De){if(z[ee]!==oe[ge])return Number.MIN_SAFE_INTEGER;let ye=1,Ee=!1;return ge===ee-$?ye=q[ee]===re[ge]?7:5:B(ge,re,oe)&&(ge===0||!B(ge-1,re,oe))?(ye=q[ee]===re[ge]?7:5,Ee=!0):X(oe,ge)&&(ge===0||!X(oe,ge-1))?ye=5:(X(oe,ge-1)||H(oe,ge-1))&&(ye=5,Ee=!0),ye>1&&ee===$&&(De[0]=!0),Ee||(Ee=B(ge,re,oe)||X(oe,ge-1)||H(oe,ge-1)),ee===$?ge>Se&&(ye-=Ee?3:5):Le?ye+=Ee?2:0:ye+=Ee?0:1,ge+1===ve&&(ye-=Ee?3:5),ye}function he(q,z,ee,$,re,oe,ge){return ue(q,z,ee,$,re,oe,!0,ge)}e.fuzzyScoreGracefulAggressive=he;function ue(q,z,ee,$,re,oe,ge,ve){let Se=ae(q,z,ee,$,re,oe,ve);if(Se&&!ge)return Se;if(q.length>=3){const Le=Math.min(7,q.length-1);for(let De=ee+1;De<Le;De++){const ye=te(q,De);if(ye){const Ee=ae(ye,ye.toLowerCase(),ee,$,re,oe,ve);Ee&&(Ee[0]-=3,(!Se||Ee[0]>Se[0])&&(Se=Ee))}}}return Se}function te(q,z){if(z+1>=q.length)return;const ee=q[z],$=q[z+1];if(ee!==$)return q.slice(0,z)+$+ee+q.slice(z+2)}}),define(ne[143],se([1,0,11]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StringSHA1=e.toHexString=e.stringHash=e.numberHash=e.doHash=e.hash=void 0;function k(a){return y(a,0)}e.hash=k;function y(a,u){switch(typeof a){case\"object\":return a===null?D(349,u):Array.isArray(a)?_(a,u):g(a,u);case\"string\":return f(a,u);case\"boolean\":return S(a,u);case\"number\":return D(a,u);case\"undefined\":return D(937,u);default:return D(617,u)}}e.doHash=y;function D(a,u){return(u<<5)-u+a|0}e.numberHash=D;function S(a,u){return D(a?433:863,u)}function f(a,u){u=D(149417,u);for(let h=0,r=a.length;h<r;h++)u=D(a.charCodeAt(h),u);return u}e.stringHash=f;function _(a,u){return u=D(104579,u),a.reduce((h,r)=>y(r,h),u)}function g(a,u){return u=D(181387,u),Object.keys(a).sort().reduce((h,r)=>(h=f(r,h),y(a[r],h)),u)}function C(a,u,h=32){const r=h-u,c=~((1<<r)-1);return(a<<u|(c&a)>>>r)>>>0}function s(a,u=0,h=a.byteLength,r=0){for(let c=0;c<h;c++)a[u+c]=r}function i(a,u,h=\"0\"){for(;a.length<u;)a=h+a;return a}function n(a,u=32){return a instanceof ArrayBuffer?Array.from(new Uint8Array(a)).map(h=>h.toString(16).padStart(2,\"0\")).join(\"\"):i((a>>>0).toString(16),u/4)}e.toHexString=n;class t{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(64+3),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(u){const h=u.length;if(h===0)return;const r=this._buff;let c=this._buffLen,o=this._leftoverHighSurrogate,d,l;for(o!==0?(d=o,l=-1,o=0):(d=u.charCodeAt(0),l=0);;){let p=d;if(L.isHighSurrogate(d))if(l+1<h){const m=u.charCodeAt(l+1);L.isLowSurrogate(m)?(l++,p=L.computeCodePoint(d,m)):p=65533}else{o=d;break}else L.isLowSurrogate(d)&&(p=65533);if(c=this._push(r,c,p),l++,l<h)d=u.charCodeAt(l);else break}this._buffLen=c,this._leftoverHighSurrogate=o}_push(u,h,r){return r<128?u[h++]=r:r<2048?(u[h++]=192|(r&1984)>>>6,u[h++]=128|(r&63)>>>0):r<65536?(u[h++]=224|(r&61440)>>>12,u[h++]=128|(r&4032)>>>6,u[h++]=128|(r&63)>>>0):(u[h++]=240|(r&1835008)>>>18,u[h++]=128|(r&258048)>>>12,u[h++]=128|(r&4032)>>>6,u[h++]=128|(r&63)>>>0),h>=64&&(this._step(),h-=64,this._totalLen+=64,u[0]=u[64+0],u[1]=u[64+1],u[2]=u[64+2]),h}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),n(this._h0)+n(this._h1)+n(this._h2)+n(this._h3)+n(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,s(this._buff,this._buffLen),this._buffLen>56&&(this._step(),s(this._buff));const u=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(u/4294967296),!1),this._buffDV.setUint32(60,u%4294967296,!1),this._step()}_step(){const u=t._bigBlock32,h=this._buffDV;for(let b=0;b<64;b+=4)u.setUint32(b,h.getUint32(b,!1),!1);for(let b=64;b<320;b+=4)u.setUint32(b,C(u.getUint32(b-12,!1)^u.getUint32(b-32,!1)^u.getUint32(b-56,!1)^u.getUint32(b-64,!1),1),!1);let r=this._h0,c=this._h1,o=this._h2,d=this._h3,l=this._h4,p,m,v;for(let b=0;b<80;b++)b<20?(p=c&o|~c&d,m=1518500249):b<40?(p=c^o^d,m=1859775393):b<60?(p=c&o|c&d|o&d,m=2400959708):(p=c^o^d,m=3395469782),v=C(r,5)+p+l+m+u.getUint32(b*4,!1)&4294967295,l=d,d=o,o=C(c,30),c=r,r=v;this._h0=this._h0+r&4294967295,this._h1=this._h1+c&4294967295,this._h2=this._h2+o&4294967295,this._h3=this._h3+d&4294967295,this._h4=this._h4+l&4294967295}}e.StringSHA1=t,t._bigBlock32=new DataView(new ArrayBuffer(320))}),define(ne[168],se([1,0,383,143]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LcsDiff=e.stringDiff=e.StringDiffSequence=void 0;class y{constructor(s){this.source=s}getElements(){const s=this.source,i=new Int32Array(s.length);for(let n=0,t=s.length;n<t;n++)i[n]=s.charCodeAt(n);return i}}e.StringDiffSequence=y;function D(C,s,i){return new g(new y(C),new y(s)).ComputeDiff(i).changes}e.stringDiff=D;class S{static Assert(s,i){if(!s)throw new Error(i)}}class f{static Copy(s,i,n,t,a){for(let u=0;u<a;u++)n[t+u]=s[i+u]}static Copy2(s,i,n,t,a){for(let u=0;u<a;u++)n[t+u]=s[i+u]}}class _{constructor(){this.m_changes=[],this.m_originalStart=1073741824,this.m_modifiedStart=1073741824,this.m_originalCount=0,this.m_modifiedCount=0}MarkNextChange(){(this.m_originalCount>0||this.m_modifiedCount>0)&&this.m_changes.push(new L.DiffChange(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(s,i){this.m_originalStart=Math.min(this.m_originalStart,s),this.m_modifiedStart=Math.min(this.m_modifiedStart,i),this.m_originalCount++}AddModifiedElement(s,i){this.m_originalStart=Math.min(this.m_originalStart,s),this.m_modifiedStart=Math.min(this.m_modifiedStart,i),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class g{constructor(s,i,n=null){this.ContinueProcessingPredicate=n,this._originalSequence=s,this._modifiedSequence=i;const[t,a,u]=g._getElements(s),[h,r,c]=g._getElements(i);this._hasStrings=u&&c,this._originalStringElements=t,this._originalElementsOrHash=a,this._modifiedStringElements=h,this._modifiedElementsOrHash=r,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(s){return s.length>0&&typeof s[0]==\"string\"}static _getElements(s){const i=s.getElements();if(g._isStringArray(i)){const n=new Int32Array(i.length);for(let t=0,a=i.length;t<a;t++)n[t]=(0,k.stringHash)(i[t],0);return[i,n,!0]}return i instanceof Int32Array?[[],i,!1]:[[],new Int32Array(i),!1]}ElementsAreEqual(s,i){return this._originalElementsOrHash[s]!==this._modifiedElementsOrHash[i]?!1:this._hasStrings?this._originalStringElements[s]===this._modifiedStringElements[i]:!0}ElementsAreStrictEqual(s,i){if(!this.ElementsAreEqual(s,i))return!1;const n=g._getStrictElement(this._originalSequence,s),t=g._getStrictElement(this._modifiedSequence,i);return n===t}static _getStrictElement(s,i){return typeof s.getStrictElement==\"function\"?s.getStrictElement(i):null}OriginalElementsAreEqual(s,i){return this._originalElementsOrHash[s]!==this._originalElementsOrHash[i]?!1:this._hasStrings?this._originalStringElements[s]===this._originalStringElements[i]:!0}ModifiedElementsAreEqual(s,i){return this._modifiedElementsOrHash[s]!==this._modifiedElementsOrHash[i]?!1:this._hasStrings?this._modifiedStringElements[s]===this._modifiedStringElements[i]:!0}ComputeDiff(s){return this._ComputeDiff(0,this._originalElementsOrHash.length-1,0,this._modifiedElementsOrHash.length-1,s)}_ComputeDiff(s,i,n,t,a){const u=[!1];let h=this.ComputeDiffRecursive(s,i,n,t,u);return a&&(h=this.PrettifyChanges(h)),{quitEarly:u[0],changes:h}}ComputeDiffRecursive(s,i,n,t,a){for(a[0]=!1;s<=i&&n<=t&&this.ElementsAreEqual(s,n);)s++,n++;for(;i>=s&&t>=n&&this.ElementsAreEqual(i,t);)i--,t--;if(s>i||n>t){let d;return n<=t?(S.Assert(s===i+1,\"originalStart should only be one more than originalEnd\"),d=[new L.DiffChange(s,0,n,t-n+1)]):s<=i?(S.Assert(n===t+1,\"modifiedStart should only be one more than modifiedEnd\"),d=[new L.DiffChange(s,i-s+1,n,0)]):(S.Assert(s===i+1,\"originalStart should only be one more than originalEnd\"),S.Assert(n===t+1,\"modifiedStart should only be one more than modifiedEnd\"),d=[]),d}const u=[0],h=[0],r=this.ComputeRecursionPoint(s,i,n,t,u,h,a),c=u[0],o=h[0];if(r!==null)return r;if(!a[0]){const d=this.ComputeDiffRecursive(s,c,n,o,a);let l=[];return a[0]?l=[new L.DiffChange(c+1,i-(c+1)+1,o+1,t-(o+1)+1)]:l=this.ComputeDiffRecursive(c+1,i,o+1,t,a),this.ConcatenateChanges(d,l)}return[new L.DiffChange(s,i-s+1,n,t-n+1)]}WALKTRACE(s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E){let I=null,M=null,P=new _,x=i,T=n,A=p[0]-b[0]-t,N=-1073741824,F=this.m_forwardHistory.length-1;do{const O=A+s;O===x||O<T&&c[O-1]<c[O+1]?(d=c[O+1],m=d-A-t,d<N&&P.MarkNextChange(),N=d,P.AddModifiedElement(d+1,m),A=O+1-s):(d=c[O-1]+1,m=d-A-t,d<N&&P.MarkNextChange(),N=d-1,P.AddOriginalElement(d,m+1),A=O-1-s),F>=0&&(c=this.m_forwardHistory[F],s=c[0],x=1,T=c.length-1)}while(--F>=-1);if(I=P.getReverseChanges(),E[0]){let O=p[0]+1,W=b[0]+1;if(I!==null&&I.length>0){const U=I[I.length-1];O=Math.max(O,U.getOriginalEnd()),W=Math.max(W,U.getModifiedEnd())}M=[new L.DiffChange(O,l-O+1,W,v-W+1)]}else{P=new _,x=u,T=h,A=p[0]-b[0]-r,N=1073741824,F=w?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const O=A+a;O===x||O<T&&o[O-1]>=o[O+1]?(d=o[O+1]-1,m=d-A-r,d>N&&P.MarkNextChange(),N=d+1,P.AddOriginalElement(d+1,m+1),A=O+1-a):(d=o[O-1],m=d-A-r,d>N&&P.MarkNextChange(),N=d,P.AddModifiedElement(d+1,m+1),A=O-1-a),F>=0&&(o=this.m_reverseHistory[F],a=o[0],x=1,T=o.length-1)}while(--F>=-1);M=P.getChanges()}return this.ConcatenateChanges(I,M)}ComputeRecursionPoint(s,i,n,t,a,u,h){let r=0,c=0,o=0,d=0,l=0,p=0;s--,n--,a[0]=0,u[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const m=i-s+(t-n),v=m+1,b=new Int32Array(v),w=new Int32Array(v),E=t-n,I=i-s,M=s-n,P=i-t,T=(I-E)%2===0;b[E]=s,w[I]=i,h[0]=!1;for(let A=1;A<=m/2+1;A++){let N=0,F=0;o=this.ClipDiagonalBound(E-A,A,E,v),d=this.ClipDiagonalBound(E+A,A,E,v);for(let W=o;W<=d;W+=2){W===o||W<d&&b[W-1]<b[W+1]?r=b[W+1]:r=b[W-1]+1,c=r-(W-E)-M;const U=r;for(;r<i&&c<t&&this.ElementsAreEqual(r+1,c+1);)r++,c++;if(b[W]=r,r+c>N+F&&(N=r,F=c),!T&&Math.abs(W-I)<=A-1&&r>=w[W])return a[0]=r,u[0]=c,U<=w[W]&&1447>0&&A<=1447+1?this.WALKTRACE(E,o,d,M,I,l,p,P,b,w,r,i,a,c,t,u,T,h):null}const O=(N-s+(F-n)-A)/2;if(this.ContinueProcessingPredicate!==null&&!this.ContinueProcessingPredicate(N,O))return h[0]=!0,a[0]=N,u[0]=F,O>0&&1447>0&&A<=1447+1?this.WALKTRACE(E,o,d,M,I,l,p,P,b,w,r,i,a,c,t,u,T,h):(s++,n++,[new L.DiffChange(s,i-s+1,n,t-n+1)]);l=this.ClipDiagonalBound(I-A,A,I,v),p=this.ClipDiagonalBound(I+A,A,I,v);for(let W=l;W<=p;W+=2){W===l||W<p&&w[W-1]>=w[W+1]?r=w[W+1]-1:r=w[W-1],c=r-(W-I)-P;const U=r;for(;r>s&&c>n&&this.ElementsAreEqual(r,c);)r--,c--;if(w[W]=r,T&&Math.abs(W-E)<=A&&r<=b[W])return a[0]=r,u[0]=c,U>=b[W]&&1447>0&&A<=1447+1?this.WALKTRACE(E,o,d,M,I,l,p,P,b,w,r,i,a,c,t,u,T,h):null}if(A<=1447){let W=new Int32Array(d-o+2);W[0]=E-o+1,f.Copy2(b,o,W,1,d-o+1),this.m_forwardHistory.push(W),W=new Int32Array(p-l+2),W[0]=I-l+1,f.Copy2(w,l,W,1,p-l+1),this.m_reverseHistory.push(W)}}return this.WALKTRACE(E,o,d,M,I,l,p,P,b,w,r,i,a,c,t,u,T,h)}PrettifyChanges(s){for(let i=0;i<s.length;i++){const n=s[i],t=i<s.length-1?s[i+1].originalStart:this._originalElementsOrHash.length,a=i<s.length-1?s[i+1].modifiedStart:this._modifiedElementsOrHash.length,u=n.originalLength>0,h=n.modifiedLength>0;for(;n.originalStart+n.originalLength<t&&n.modifiedStart+n.modifiedLength<a&&(!u||this.OriginalElementsAreEqual(n.originalStart,n.originalStart+n.originalLength))&&(!h||this.ModifiedElementsAreEqual(n.modifiedStart,n.modifiedStart+n.modifiedLength));){const c=this.ElementsAreStrictEqual(n.originalStart,n.modifiedStart);if(this.ElementsAreStrictEqual(n.originalStart+n.originalLength,n.modifiedStart+n.modifiedLength)&&!c)break;n.originalStart++,n.modifiedStart++}const r=[null];if(i<s.length-1&&this.ChangesOverlap(s[i],s[i+1],r)){s[i]=r[0],s.splice(i+1,1),i--;continue}}for(let i=s.length-1;i>=0;i--){const n=s[i];let t=0,a=0;if(i>0){const d=s[i-1];t=d.originalStart+d.originalLength,a=d.modifiedStart+d.modifiedLength}const u=n.originalLength>0,h=n.modifiedLength>0;let r=0,c=this._boundaryScore(n.originalStart,n.originalLength,n.modifiedStart,n.modifiedLength);for(let d=1;;d++){const l=n.originalStart-d,p=n.modifiedStart-d;if(l<t||p<a||u&&!this.OriginalElementsAreEqual(l,l+n.originalLength)||h&&!this.ModifiedElementsAreEqual(p,p+n.modifiedLength))break;const v=(l===t&&p===a?5:0)+this._boundaryScore(l,n.originalLength,p,n.modifiedLength);v>c&&(c=v,r=d)}n.originalStart-=r,n.modifiedStart-=r;const o=[null];if(i>0&&this.ChangesOverlap(s[i-1],s[i],o)){s[i-1]=o[0],s.splice(i,1),i++;continue}}if(this._hasStrings)for(let i=1,n=s.length;i<n;i++){const t=s[i-1],a=s[i],u=a.originalStart-t.originalStart-t.originalLength,h=t.originalStart,r=a.originalStart+a.originalLength,c=r-h,o=t.modifiedStart,d=a.modifiedStart+a.modifiedLength,l=d-o;if(u<5&&c<20&&l<20){const p=this._findBetterContiguousSequence(h,c,o,l,u);if(p){const[m,v]=p;(m!==t.originalStart+t.originalLength||v!==t.modifiedStart+t.modifiedLength)&&(t.originalLength=m-t.originalStart,t.modifiedLength=v-t.modifiedStart,a.originalStart=m+u,a.modifiedStart=v+u,a.originalLength=r-a.originalStart,a.modifiedLength=d-a.modifiedStart)}}}return s}_findBetterContiguousSequence(s,i,n,t,a){if(i<a||t<a)return null;const u=s+i-a+1,h=n+t-a+1;let r=0,c=0,o=0;for(let d=s;d<u;d++)for(let l=n;l<h;l++){const p=this._contiguousSequenceScore(d,l,a);p>0&&p>r&&(r=p,c=d,o=l)}return r>0?[c,o]:null}_contiguousSequenceScore(s,i,n){let t=0;for(let a=0;a<n;a++){if(!this.ElementsAreEqual(s+a,i+a))return 0;t+=this._originalStringElements[s+a].length}return t}_OriginalIsBoundary(s){return s<=0||s>=this._originalElementsOrHash.length-1?!0:this._hasStrings&&/^\\s*$/.test(this._originalStringElements[s])}_OriginalRegionIsBoundary(s,i){if(this._OriginalIsBoundary(s)||this._OriginalIsBoundary(s-1))return!0;if(i>0){const n=s+i;if(this._OriginalIsBoundary(n-1)||this._OriginalIsBoundary(n))return!0}return!1}_ModifiedIsBoundary(s){return s<=0||s>=this._modifiedElementsOrHash.length-1?!0:this._hasStrings&&/^\\s*$/.test(this._modifiedStringElements[s])}_ModifiedRegionIsBoundary(s,i){if(this._ModifiedIsBoundary(s)||this._ModifiedIsBoundary(s-1))return!0;if(i>0){const n=s+i;if(this._ModifiedIsBoundary(n-1)||this._ModifiedIsBoundary(n))return!0}return!1}_boundaryScore(s,i,n,t){const a=this._OriginalRegionIsBoundary(s,i)?1:0,u=this._ModifiedRegionIsBoundary(n,t)?1:0;return a+u}ConcatenateChanges(s,i){const n=[];if(s.length===0||i.length===0)return i.length>0?i:s;if(this.ChangesOverlap(s[s.length-1],i[0],n)){const t=new Array(s.length+i.length-1);return f.Copy(s,0,t,0,s.length-1),t[s.length-1]=n[0],f.Copy(i,1,t,s.length,i.length-1),t}else{const t=new Array(s.length+i.length);return f.Copy(s,0,t,0,s.length),f.Copy(i,0,t,s.length,i.length),t}}ChangesOverlap(s,i,n){if(S.Assert(s.originalStart<=i.originalStart,\"Left change is not less than or equal to right change\"),S.Assert(s.modifiedStart<=i.modifiedStart,\"Left change is not less than or equal to right change\"),s.originalStart+s.originalLength>=i.originalStart||s.modifiedStart+s.modifiedLength>=i.modifiedStart){const t=s.originalStart;let a=s.originalLength;const u=s.modifiedStart;let h=s.modifiedLength;return s.originalStart+s.originalLength>=i.originalStart&&(a=i.originalStart+i.originalLength-s.originalStart),s.modifiedStart+s.modifiedLength>=i.modifiedStart&&(h=i.modifiedStart+i.modifiedLength-s.modifiedStart),n[0]=new L.DiffChange(t,a,u,h),!0}else return n[0]=null,!1}ClipDiagonalBound(s,i,n,t){if(s>=0&&s<t)return s;const a=n,u=t-n-1,h=i%2===0;if(s<0){const r=a%2===0;return h===r?0:1}else{const r=u%2===0;return h===r?t-1:t-2}}}e.LcsDiff=g}),define(ne[392],se([1,0,11]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.buildReplaceStringWithCasePreserved=void 0;function k(S,f){if(S&&S[0]!==\"\"){const _=y(S,f,\"-\"),g=y(S,f,\"_\");return _&&!g?D(S,f,\"-\"):!_&&g?D(S,f,\"_\"):S[0].toUpperCase()===S[0]?f.toUpperCase():S[0].toLowerCase()===S[0]?f.toLowerCase():L.containsUppercaseCharacter(S[0][0])&&f.length>0?f[0].toUpperCase()+f.substr(1):S[0][0].toUpperCase()!==S[0][0]&&f.length>0?f[0].toLowerCase()+f.substr(1):f}else return f}e.buildReplaceStringWithCasePreserved=k;function y(S,f,_){return S[0].indexOf(_)!==-1&&f.indexOf(_)!==-1&&S[0].split(_).length===f.split(_).length}function D(S,f,_){const g=f.split(_),C=S[0].split(_);let s=\"\";return g.forEach((i,n)=>{s+=k([C[n]],i)+_}),s.slice(0,-1)}}),define(ne[101],se([1,0,11]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var k;(function(y){y[y.Ignore=0]=\"Ignore\",y[y.Info=1]=\"Info\",y[y.Warning=2]=\"Warning\",y[y.Error=3]=\"Error\"})(k||(k={})),function(y){const D=\"error\",S=\"warning\",f=\"warn\",_=\"info\",g=\"ignore\";function C(i){return i?L.equalsIgnoreCase(D,i)?y.Error:L.equalsIgnoreCase(S,i)||L.equalsIgnoreCase(f,i)?y.Warning:L.equalsIgnoreCase(_,i)?y.Info:y.Ignore:y.Ignore}y.fromValue=C;function s(i){switch(i){case y.Error:return D;case y.Warning:return S;case y.Info:return _;default:return g}}y.toString=s}(k||(k={})),e.default=k}),define(ne[264],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MicrotaskDelay=void 0,e.MicrotaskDelay=Symbol(\"MicrotaskDelay\")}),define(ne[198],se([1,0,11]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TernarySearchTree=e.UriIterator=e.PathIterator=e.ConfigKeysIterator=e.StringIterator=void 0;class k{constructor(){this._value=\"\",this._pos=0}reset(C){return this._value=C,this._pos=0,this}next(){return this._pos+=1,this}hasNext(){return this._pos<this._value.length-1}cmp(C){const s=C.charCodeAt(0),i=this._value.charCodeAt(this._pos);return s-i}value(){return this._value[this._pos]}}e.StringIterator=k;class y{constructor(C=!0){this._caseSensitive=C}reset(C){return this._value=C,this._from=0,this._to=0,this.next()}hasNext(){return this._to<this._value.length}next(){this._from=this._to;let C=!0;for(;this._to<this._value.length;this._to++)if(this._value.charCodeAt(this._to)===46)if(C)this._from++;else break;else C=!1;return this}cmp(C){return this._caseSensitive?(0,L.compareSubstring)(C,this._value,0,C.length,this._from,this._to):(0,L.compareSubstringIgnoreCase)(C,this._value,0,C.length,this._from,this._to)}value(){return this._value.substring(this._from,this._to)}}e.ConfigKeysIterator=y;class D{constructor(C=!0,s=!0){this._splitOnBackslash=C,this._caseSensitive=s}reset(C){this._from=0,this._to=0,this._value=C,this._valueLen=C.length;for(let s=C.length-1;s>=0;s--,this._valueLen--){const i=this._value.charCodeAt(s);if(!(i===47||this._splitOnBackslash&&i===92))break}return this.next()}hasNext(){return this._to<this._valueLen}next(){this._from=this._to;let C=!0;for(;this._to<this._valueLen;this._to++){const s=this._value.charCodeAt(this._to);if(s===47||this._splitOnBackslash&&s===92)if(C)this._from++;else break;else C=!1}return this}cmp(C){return this._caseSensitive?(0,L.compareSubstring)(C,this._value,0,C.length,this._from,this._to):(0,L.compareSubstringIgnoreCase)(C,this._value,0,C.length,this._from,this._to)}value(){return this._value.substring(this._from,this._to)}}e.PathIterator=D;class S{constructor(C,s){this._ignorePathCasing=C,this._ignoreQueryAndFragment=s,this._states=[],this._stateIdx=0}reset(C){return this._value=C,this._states=[],this._value.scheme&&this._states.push(1),this._value.authority&&this._states.push(2),this._value.path&&(this._pathIterator=new D(!1,!this._ignorePathCasing(C)),this._pathIterator.reset(C.path),this._pathIterator.value()&&this._states.push(3)),this._ignoreQueryAndFragment(C)||(this._value.query&&this._states.push(4),this._value.fragment&&this._states.push(5)),this._stateIdx=0,this}next(){return this._states[this._stateIdx]===3&&this._pathIterator.hasNext()?this._pathIterator.next():this._stateIdx+=1,this}hasNext(){return this._states[this._stateIdx]===3&&this._pathIterator.hasNext()||this._stateIdx<this._states.length-1}cmp(C){if(this._states[this._stateIdx]===1)return(0,L.compareIgnoreCase)(C,this._value.scheme);if(this._states[this._stateIdx]===2)return(0,L.compareIgnoreCase)(C,this._value.authority);if(this._states[this._stateIdx]===3)return this._pathIterator.cmp(C);if(this._states[this._stateIdx]===4)return(0,L.compare)(C,this._value.query);if(this._states[this._stateIdx]===5)return(0,L.compare)(C,this._value.fragment);throw new Error}value(){if(this._states[this._stateIdx]===1)return this._value.scheme;if(this._states[this._stateIdx]===2)return this._value.authority;if(this._states[this._stateIdx]===3)return this._pathIterator.value();if(this._states[this._stateIdx]===4)return this._value.query;if(this._states[this._stateIdx]===5)return this._value.fragment;throw new Error}}e.UriIterator=S;class f{constructor(){this.height=1}rotateLeft(){const C=this.right;return this.right=C.left,C.left=this,this.updateHeight(),C.updateHeight(),C}rotateRight(){const C=this.left;return this.left=C.right,C.right=this,this.updateHeight(),C.updateHeight(),C}updateHeight(){this.height=1+Math.max(this.heightLeft,this.heightRight)}balanceFactor(){return this.heightRight-this.heightLeft}get heightLeft(){var C,s;return(s=(C=this.left)===null||C===void 0?void 0:C.height)!==null&&s!==void 0?s:0}get heightRight(){var C,s;return(s=(C=this.right)===null||C===void 0?void 0:C.height)!==null&&s!==void 0?s:0}}class _{static forUris(C=()=>!1,s=()=>!1){return new _(new S(C,s))}static forStrings(){return new _(new k)}static forConfigKeys(){return new _(new y)}constructor(C){this._iter=C}clear(){this._root=void 0}set(C,s){const i=this._iter.reset(C);let n;this._root||(this._root=new f,this._root.segment=i.value());const t=[];for(n=this._root;;){const u=i.cmp(n.segment);if(u>0)n.left||(n.left=new f,n.left.segment=i.value()),t.push([-1,n]),n=n.left;else if(u<0)n.right||(n.right=new f,n.right.segment=i.value()),t.push([1,n]),n=n.right;else if(i.hasNext())i.next(),n.mid||(n.mid=new f,n.mid.segment=i.value()),t.push([0,n]),n=n.mid;else break}const a=n.value;n.value=s,n.key=C;for(let u=t.length-1;u>=0;u--){const h=t[u][1];h.updateHeight();const r=h.balanceFactor();if(r<-1||r>1){const c=t[u][0],o=t[u+1][0];if(c===1&&o===1)t[u][1]=h.rotateLeft();else if(c===-1&&o===-1)t[u][1]=h.rotateRight();else if(c===1&&o===-1)h.right=t[u+1][1]=t[u+1][1].rotateRight(),t[u][1]=h.rotateLeft();else if(c===-1&&o===1)h.left=t[u+1][1]=t[u+1][1].rotateLeft(),t[u][1]=h.rotateRight();else throw new Error;if(u>0)switch(t[u-1][0]){case-1:t[u-1][1].left=t[u][1];break;case 1:t[u-1][1].right=t[u][1];break;case 0:t[u-1][1].mid=t[u][1];break}else this._root=t[0][1]}}return a}get(C){var s;return(s=this._getNode(C))===null||s===void 0?void 0:s.value}_getNode(C){const s=this._iter.reset(C);let i=this._root;for(;i;){const n=s.cmp(i.segment);if(n>0)i=i.left;else if(n<0)i=i.right;else if(s.hasNext())s.next(),i=i.mid;else break}return i}has(C){const s=this._getNode(C);return!(s?.value===void 0&&s?.mid===void 0)}delete(C){return this._delete(C,!1)}deleteSuperstr(C){return this._delete(C,!0)}_delete(C,s){var i;const n=this._iter.reset(C),t=[];let a=this._root;for(;a;){const u=n.cmp(a.segment);if(u>0)t.push([-1,a]),a=a.left;else if(u<0)t.push([1,a]),a=a.right;else if(n.hasNext())n.next(),t.push([0,a]),a=a.mid;else break}if(a){if(s?(a.left=void 0,a.mid=void 0,a.right=void 0,a.height=1):(a.key=void 0,a.value=void 0),!a.mid&&!a.value)if(a.left&&a.right){const u=this._min(a.right);if(u.key){const{key:h,value:r,segment:c}=u;this._delete(u.key,!1),a.key=h,a.value=r,a.segment=c}}else{const u=(i=a.left)!==null&&i!==void 0?i:a.right;if(t.length>0){const[h,r]=t[t.length-1];switch(h){case-1:r.left=u;break;case 0:r.mid=u;break;case 1:r.right=u;break}}else this._root=u}for(let u=t.length-1;u>=0;u--){const h=t[u][1];h.updateHeight();const r=h.balanceFactor();if(r>1?(h.right.balanceFactor()>=0||(h.right=h.right.rotateRight()),t[u][1]=h.rotateLeft()):r<-1&&(h.left.balanceFactor()<=0||(h.left=h.left.rotateLeft()),t[u][1]=h.rotateRight()),u>0)switch(t[u-1][0]){case-1:t[u-1][1].left=t[u][1];break;case 1:t[u-1][1].right=t[u][1];break;case 0:t[u-1][1].mid=t[u][1];break}else this._root=t[0][1]}}}_min(C){for(;C.left;)C=C.left;return C}findSubstr(C){const s=this._iter.reset(C);let i=this._root,n;for(;i;){const t=s.cmp(i.segment);if(t>0)i=i.left;else if(t<0)i=i.right;else if(s.hasNext())s.next(),n=i.value||n,i=i.mid;else break}return i&&i.value||n}findSuperstr(C){return this._findSuperstrOrElement(C,!1)}_findSuperstrOrElement(C,s){const i=this._iter.reset(C);let n=this._root;for(;n;){const t=i.cmp(n.segment);if(t>0)n=n.left;else if(t<0)n=n.right;else if(i.hasNext())i.next(),n=n.mid;else return n.mid?this._entries(n.mid):s?n.value:void 0}}forEach(C){for(const[s,i]of this)C(i,s)}*[Symbol.iterator](){yield*this._entries(this._root)}_entries(C){const s=[];return this._dfsEntries(C,s),s[Symbol.iterator]()}_dfsEntries(C,s){C&&(C.left&&this._dfsEntries(C.left,s),C.value&&s.push([C.key,C.value]),C.mid&&this._dfsEntries(C.mid,s),C.right&&this._dfsEntries(C.right,s))}}e.TernarySearchTree=_}),define(ne[20],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.validateConstraint=e.validateConstraints=e.isFunction=e.assertIsDefined=e.assertType=e.isUndefinedOrNull=e.isDefined=e.isUndefined=e.isBoolean=e.isIterable=e.isNumber=e.isTypedArray=e.isObject=e.isString=void 0;function L(u){return typeof u==\"string\"}e.isString=L;function k(u){return typeof u==\"object\"&&u!==null&&!Array.isArray(u)&&!(u instanceof RegExp)&&!(u instanceof Date)}e.isObject=k;function y(u){const h=Object.getPrototypeOf(Uint8Array);return typeof u==\"object\"&&u instanceof h}e.isTypedArray=y;function D(u){return typeof u==\"number\"&&!isNaN(u)}e.isNumber=D;function S(u){return!!u&&typeof u[Symbol.iterator]==\"function\"}e.isIterable=S;function f(u){return u===!0||u===!1}e.isBoolean=f;function _(u){return typeof u>\"u\"}e.isUndefined=_;function g(u){return!C(u)}e.isDefined=g;function C(u){return _(u)||u===null}e.isUndefinedOrNull=C;function s(u,h){if(!u)throw new Error(h?`Unexpected type, expected '${h}'`:\"Unexpected type\")}e.assertType=s;function i(u){if(C(u))throw new Error(\"Assertion Failed: argument is undefined or null\");return u}e.assertIsDefined=i;function n(u){return typeof u==\"function\"}e.isFunction=n;function t(u,h){const r=Math.min(u.length,h.length);for(let c=0;c<r;c++)a(u[c],h[c])}e.validateConstraints=t;function a(u,h){if(L(h)){if(typeof u!==h)throw new Error(`argument does not match constraint: typeof ${h}`)}else if(n(h)){try{if(u instanceof h)return}catch{}if(!C(u)&&u.constructor===h||h.length===1&&h.call(void 0,u)===!0)return;throw new Error(\"argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true\")}}e.validateConstraint=a}),define(ne[25],se([1,0,20]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Codicon=e.getCodiconFontCharacters=void 0;const k=Object.create(null);function y(S,f){if((0,L.isString)(f)){const _=k[f];if(_===void 0)throw new Error(`${S} references an unknown codicon: ${f}`);f=_}return k[S]=f,{id:S}}function D(){return k}e.getCodiconFontCharacters=D,e.Codicon={add:y(\"add\",6e4),plus:y(\"plus\",6e4),gistNew:y(\"gist-new\",6e4),repoCreate:y(\"repo-create\",6e4),lightbulb:y(\"lightbulb\",60001),lightBulb:y(\"light-bulb\",60001),repo:y(\"repo\",60002),repoDelete:y(\"repo-delete\",60002),gistFork:y(\"gist-fork\",60003),repoForked:y(\"repo-forked\",60003),gitPullRequest:y(\"git-pull-request\",60004),gitPullRequestAbandoned:y(\"git-pull-request-abandoned\",60004),recordKeys:y(\"record-keys\",60005),keyboard:y(\"keyboard\",60005),tag:y(\"tag\",60006),tagAdd:y(\"tag-add\",60006),tagRemove:y(\"tag-remove\",60006),gitPullRequestLabel:y(\"git-pull-request-label\",60006),person:y(\"person\",60007),personFollow:y(\"person-follow\",60007),personOutline:y(\"person-outline\",60007),personFilled:y(\"person-filled\",60007),gitBranch:y(\"git-branch\",60008),gitBranchCreate:y(\"git-branch-create\",60008),gitBranchDelete:y(\"git-branch-delete\",60008),sourceControl:y(\"source-control\",60008),mirror:y(\"mirror\",60009),mirrorPublic:y(\"mirror-public\",60009),star:y(\"star\",60010),starAdd:y(\"star-add\",60010),starDelete:y(\"star-delete\",60010),starEmpty:y(\"star-empty\",60010),comment:y(\"comment\",60011),commentAdd:y(\"comment-add\",60011),alert:y(\"alert\",60012),warning:y(\"warning\",60012),search:y(\"search\",60013),searchSave:y(\"search-save\",60013),logOut:y(\"log-out\",60014),signOut:y(\"sign-out\",60014),logIn:y(\"log-in\",60015),signIn:y(\"sign-in\",60015),eye:y(\"eye\",60016),eyeUnwatch:y(\"eye-unwatch\",60016),eyeWatch:y(\"eye-watch\",60016),circleFilled:y(\"circle-filled\",60017),primitiveDot:y(\"primitive-dot\",60017),closeDirty:y(\"close-dirty\",60017),debugBreakpoint:y(\"debug-breakpoint\",60017),debugBreakpointDisabled:y(\"debug-breakpoint-disabled\",60017),debugHint:y(\"debug-hint\",60017),primitiveSquare:y(\"primitive-square\",60018),edit:y(\"edit\",60019),pencil:y(\"pencil\",60019),info:y(\"info\",60020),issueOpened:y(\"issue-opened\",60020),gistPrivate:y(\"gist-private\",60021),gitForkPrivate:y(\"git-fork-private\",60021),lock:y(\"lock\",60021),mirrorPrivate:y(\"mirror-private\",60021),close:y(\"close\",60022),removeClose:y(\"remove-close\",60022),x:y(\"x\",60022),repoSync:y(\"repo-sync\",60023),sync:y(\"sync\",60023),clone:y(\"clone\",60024),desktopDownload:y(\"desktop-download\",60024),beaker:y(\"beaker\",60025),microscope:y(\"microscope\",60025),vm:y(\"vm\",60026),deviceDesktop:y(\"device-desktop\",60026),file:y(\"file\",60027),fileText:y(\"file-text\",60027),more:y(\"more\",60028),ellipsis:y(\"ellipsis\",60028),kebabHorizontal:y(\"kebab-horizontal\",60028),mailReply:y(\"mail-reply\",60029),reply:y(\"reply\",60029),organization:y(\"organization\",60030),organizationFilled:y(\"organization-filled\",60030),organizationOutline:y(\"organization-outline\",60030),newFile:y(\"new-file\",60031),fileAdd:y(\"file-add\",60031),newFolder:y(\"new-folder\",60032),fileDirectoryCreate:y(\"file-directory-create\",60032),trash:y(\"trash\",60033),trashcan:y(\"trashcan\",60033),history:y(\"history\",60034),clock:y(\"clock\",60034),folder:y(\"folder\",60035),fileDirectory:y(\"file-directory\",60035),symbolFolder:y(\"symbol-folder\",60035),logoGithub:y(\"logo-github\",60036),markGithub:y(\"mark-github\",60036),github:y(\"github\",60036),terminal:y(\"terminal\",60037),console:y(\"console\",60037),repl:y(\"repl\",60037),zap:y(\"zap\",60038),symbolEvent:y(\"symbol-event\",60038),error:y(\"error\",60039),stop:y(\"stop\",60039),variable:y(\"variable\",60040),symbolVariable:y(\"symbol-variable\",60040),array:y(\"array\",60042),symbolArray:y(\"symbol-array\",60042),symbolModule:y(\"symbol-module\",60043),symbolPackage:y(\"symbol-package\",60043),symbolNamespace:y(\"symbol-namespace\",60043),symbolObject:y(\"symbol-object\",60043),symbolMethod:y(\"symbol-method\",60044),symbolFunction:y(\"symbol-function\",60044),symbolConstructor:y(\"symbol-constructor\",60044),symbolBoolean:y(\"symbol-boolean\",60047),symbolNull:y(\"symbol-null\",60047),symbolNumeric:y(\"symbol-numeric\",60048),symbolNumber:y(\"symbol-number\",60048),symbolStructure:y(\"symbol-structure\",60049),symbolStruct:y(\"symbol-struct\",60049),symbolParameter:y(\"symbol-parameter\",60050),symbolTypeParameter:y(\"symbol-type-parameter\",60050),symbolKey:y(\"symbol-key\",60051),symbolText:y(\"symbol-text\",60051),symbolReference:y(\"symbol-reference\",60052),goToFile:y(\"go-to-file\",60052),symbolEnum:y(\"symbol-enum\",60053),symbolValue:y(\"symbol-value\",60053),symbolRuler:y(\"symbol-ruler\",60054),symbolUnit:y(\"symbol-unit\",60054),activateBreakpoints:y(\"activate-breakpoints\",60055),archive:y(\"archive\",60056),arrowBoth:y(\"arrow-both\",60057),arrowDown:y(\"arrow-down\",60058),arrowLeft:y(\"arrow-left\",60059),arrowRight:y(\"arrow-right\",60060),arrowSmallDown:y(\"arrow-small-down\",60061),arrowSmallLeft:y(\"arrow-small-left\",60062),arrowSmallRight:y(\"arrow-small-right\",60063),arrowSmallUp:y(\"arrow-small-up\",60064),arrowUp:y(\"arrow-up\",60065),bell:y(\"bell\",60066),bold:y(\"bold\",60067),book:y(\"book\",60068),bookmark:y(\"bookmark\",60069),debugBreakpointConditionalUnverified:y(\"debug-breakpoint-conditional-unverified\",60070),debugBreakpointConditional:y(\"debug-breakpoint-conditional\",60071),debugBreakpointConditionalDisabled:y(\"debug-breakpoint-conditional-disabled\",60071),debugBreakpointDataUnverified:y(\"debug-breakpoint-data-unverified\",60072),debugBreakpointData:y(\"debug-breakpoint-data\",60073),debugBreakpointDataDisabled:y(\"debug-breakpoint-data-disabled\",60073),debugBreakpointLogUnverified:y(\"debug-breakpoint-log-unverified\",60074),debugBreakpointLog:y(\"debug-breakpoint-log\",60075),debugBreakpointLogDisabled:y(\"debug-breakpoint-log-disabled\",60075),briefcase:y(\"briefcase\",60076),broadcast:y(\"broadcast\",60077),browser:y(\"browser\",60078),bug:y(\"bug\",60079),calendar:y(\"calendar\",60080),caseSensitive:y(\"case-sensitive\",60081),check:y(\"check\",60082),checklist:y(\"checklist\",60083),chevronDown:y(\"chevron-down\",60084),dropDownButton:y(\"drop-down-button\",60084),chevronLeft:y(\"chevron-left\",60085),chevronRight:y(\"chevron-right\",60086),chevronUp:y(\"chevron-up\",60087),chromeClose:y(\"chrome-close\",60088),chromeMaximize:y(\"chrome-maximize\",60089),chromeMinimize:y(\"chrome-minimize\",60090),chromeRestore:y(\"chrome-restore\",60091),circle:y(\"circle\",60092),circleOutline:y(\"circle-outline\",60092),debugBreakpointUnverified:y(\"debug-breakpoint-unverified\",60092),circleSlash:y(\"circle-slash\",60093),circuitBoard:y(\"circuit-board\",60094),clearAll:y(\"clear-all\",60095),clippy:y(\"clippy\",60096),closeAll:y(\"close-all\",60097),cloudDownload:y(\"cloud-download\",60098),cloudUpload:y(\"cloud-upload\",60099),code:y(\"code\",60100),collapseAll:y(\"collapse-all\",60101),colorMode:y(\"color-mode\",60102),commentDiscussion:y(\"comment-discussion\",60103),compareChanges:y(\"compare-changes\",60157),creditCard:y(\"credit-card\",60105),dash:y(\"dash\",60108),dashboard:y(\"dashboard\",60109),database:y(\"database\",60110),debugContinue:y(\"debug-continue\",60111),debugDisconnect:y(\"debug-disconnect\",60112),debugPause:y(\"debug-pause\",60113),debugRestart:y(\"debug-restart\",60114),debugStart:y(\"debug-start\",60115),debugStepInto:y(\"debug-step-into\",60116),debugStepOut:y(\"debug-step-out\",60117),debugStepOver:y(\"debug-step-over\",60118),debugStop:y(\"debug-stop\",60119),debug:y(\"debug\",60120),deviceCameraVideo:y(\"device-camera-video\",60121),deviceCamera:y(\"device-camera\",60122),deviceMobile:y(\"device-mobile\",60123),diffAdded:y(\"diff-added\",60124),diffIgnored:y(\"diff-ignored\",60125),diffModified:y(\"diff-modified\",60126),diffRemoved:y(\"diff-removed\",60127),diffRenamed:y(\"diff-renamed\",60128),diff:y(\"diff\",60129),discard:y(\"discard\",60130),editorLayout:y(\"editor-layout\",60131),emptyWindow:y(\"empty-window\",60132),exclude:y(\"exclude\",60133),extensions:y(\"extensions\",60134),eyeClosed:y(\"eye-closed\",60135),fileBinary:y(\"file-binary\",60136),fileCode:y(\"file-code\",60137),fileMedia:y(\"file-media\",60138),filePdf:y(\"file-pdf\",60139),fileSubmodule:y(\"file-submodule\",60140),fileSymlinkDirectory:y(\"file-symlink-directory\",60141),fileSymlinkFile:y(\"file-symlink-file\",60142),fileZip:y(\"file-zip\",60143),files:y(\"files\",60144),filter:y(\"filter\",60145),flame:y(\"flame\",60146),foldDown:y(\"fold-down\",60147),foldUp:y(\"fold-up\",60148),fold:y(\"fold\",60149),folderActive:y(\"folder-active\",60150),folderOpened:y(\"folder-opened\",60151),gear:y(\"gear\",60152),gift:y(\"gift\",60153),gistSecret:y(\"gist-secret\",60154),gist:y(\"gist\",60155),gitCommit:y(\"git-commit\",60156),gitCompare:y(\"git-compare\",60157),gitMerge:y(\"git-merge\",60158),githubAction:y(\"github-action\",60159),githubAlt:y(\"github-alt\",60160),globe:y(\"globe\",60161),grabber:y(\"grabber\",60162),graph:y(\"graph\",60163),gripper:y(\"gripper\",60164),heart:y(\"heart\",60165),home:y(\"home\",60166),horizontalRule:y(\"horizontal-rule\",60167),hubot:y(\"hubot\",60168),inbox:y(\"inbox\",60169),issueClosed:y(\"issue-closed\",60324),issueReopened:y(\"issue-reopened\",60171),issues:y(\"issues\",60172),italic:y(\"italic\",60173),jersey:y(\"jersey\",60174),json:y(\"json\",60175),bracket:y(\"bracket\",60175),kebabVertical:y(\"kebab-vertical\",60176),key:y(\"key\",60177),law:y(\"law\",60178),lightbulbAutofix:y(\"lightbulb-autofix\",60179),linkExternal:y(\"link-external\",60180),link:y(\"link\",60181),listOrdered:y(\"list-ordered\",60182),listUnordered:y(\"list-unordered\",60183),liveShare:y(\"live-share\",60184),loading:y(\"loading\",60185),location:y(\"location\",60186),mailRead:y(\"mail-read\",60187),mail:y(\"mail\",60188),markdown:y(\"markdown\",60189),megaphone:y(\"megaphone\",60190),mention:y(\"mention\",60191),milestone:y(\"milestone\",60192),gitPullRequestMilestone:y(\"git-pull-request-milestone\",60192),mortarBoard:y(\"mortar-board\",60193),move:y(\"move\",60194),multipleWindows:y(\"multiple-windows\",60195),mute:y(\"mute\",60196),noNewline:y(\"no-newline\",60197),note:y(\"note\",60198),octoface:y(\"octoface\",60199),openPreview:y(\"open-preview\",60200),package_:y(\"package\",60201),paintcan:y(\"paintcan\",60202),pin:y(\"pin\",60203),play:y(\"play\",60204),run:y(\"run\",60204),plug:y(\"plug\",60205),preserveCase:y(\"preserve-case\",60206),preview:y(\"preview\",60207),project:y(\"project\",60208),pulse:y(\"pulse\",60209),question:y(\"question\",60210),quote:y(\"quote\",60211),radioTower:y(\"radio-tower\",60212),reactions:y(\"reactions\",60213),references:y(\"references\",60214),refresh:y(\"refresh\",60215),regex:y(\"regex\",60216),remoteExplorer:y(\"remote-explorer\",60217),remote:y(\"remote\",60218),remove:y(\"remove\",60219),replaceAll:y(\"replace-all\",60220),replace:y(\"replace\",60221),repoClone:y(\"repo-clone\",60222),repoForcePush:y(\"repo-force-push\",60223),repoPull:y(\"repo-pull\",60224),repoPush:y(\"repo-push\",60225),report:y(\"report\",60226),requestChanges:y(\"request-changes\",60227),rocket:y(\"rocket\",60228),rootFolderOpened:y(\"root-folder-opened\",60229),rootFolder:y(\"root-folder\",60230),rss:y(\"rss\",60231),ruby:y(\"ruby\",60232),saveAll:y(\"save-all\",60233),saveAs:y(\"save-as\",60234),save:y(\"save\",60235),screenFull:y(\"screen-full\",60236),screenNormal:y(\"screen-normal\",60237),searchStop:y(\"search-stop\",60238),server:y(\"server\",60240),settingsGear:y(\"settings-gear\",60241),settings:y(\"settings\",60242),shield:y(\"shield\",60243),smiley:y(\"smiley\",60244),sortPrecedence:y(\"sort-precedence\",60245),splitHorizontal:y(\"split-horizontal\",60246),splitVertical:y(\"split-vertical\",60247),squirrel:y(\"squirrel\",60248),starFull:y(\"star-full\",60249),starHalf:y(\"star-half\",60250),symbolClass:y(\"symbol-class\",60251),symbolColor:y(\"symbol-color\",60252),symbolCustomColor:y(\"symbol-customcolor\",60252),symbolConstant:y(\"symbol-constant\",60253),symbolEnumMember:y(\"symbol-enum-member\",60254),symbolField:y(\"symbol-field\",60255),symbolFile:y(\"symbol-file\",60256),symbolInterface:y(\"symbol-interface\",60257),symbolKeyword:y(\"symbol-keyword\",60258),symbolMisc:y(\"symbol-misc\",60259),symbolOperator:y(\"symbol-operator\",60260),symbolProperty:y(\"symbol-property\",60261),wrench:y(\"wrench\",60261),wrenchSubaction:y(\"wrench-subaction\",60261),symbolSnippet:y(\"symbol-snippet\",60262),tasklist:y(\"tasklist\",60263),telescope:y(\"telescope\",60264),textSize:y(\"text-size\",60265),threeBars:y(\"three-bars\",60266),thumbsdown:y(\"thumbsdown\",60267),thumbsup:y(\"thumbsup\",60268),tools:y(\"tools\",60269),triangleDown:y(\"triangle-down\",60270),triangleLeft:y(\"triangle-left\",60271),triangleRight:y(\"triangle-right\",60272),triangleUp:y(\"triangle-up\",60273),twitter:y(\"twitter\",60274),unfold:y(\"unfold\",60275),unlock:y(\"unlock\",60276),unmute:y(\"unmute\",60277),unverified:y(\"unverified\",60278),verified:y(\"verified\",60279),versions:y(\"versions\",60280),vmActive:y(\"vm-active\",60281),vmOutline:y(\"vm-outline\",60282),vmRunning:y(\"vm-running\",60283),watch:y(\"watch\",60284),whitespace:y(\"whitespace\",60285),wholeWord:y(\"whole-word\",60286),window:y(\"window\",60287),wordWrap:y(\"word-wrap\",60288),zoomIn:y(\"zoom-in\",60289),zoomOut:y(\"zoom-out\",60290),listFilter:y(\"list-filter\",60291),listFlat:y(\"list-flat\",60292),listSelection:y(\"list-selection\",60293),selection:y(\"selection\",60293),listTree:y(\"list-tree\",60294),debugBreakpointFunctionUnverified:y(\"debug-breakpoint-function-unverified\",60295),debugBreakpointFunction:y(\"debug-breakpoint-function\",60296),debugBreakpointFunctionDisabled:y(\"debug-breakpoint-function-disabled\",60296),debugStackframeActive:y(\"debug-stackframe-active\",60297),circleSmallFilled:y(\"circle-small-filled\",60298),debugStackframeDot:y(\"debug-stackframe-dot\",60298),debugStackframe:y(\"debug-stackframe\",60299),debugStackframeFocused:y(\"debug-stackframe-focused\",60299),debugBreakpointUnsupported:y(\"debug-breakpoint-unsupported\",60300),symbolString:y(\"symbol-string\",60301),debugReverseContinue:y(\"debug-reverse-continue\",60302),debugStepBack:y(\"debug-step-back\",60303),debugRestartFrame:y(\"debug-restart-frame\",60304),callIncoming:y(\"call-incoming\",60306),callOutgoing:y(\"call-outgoing\",60307),menu:y(\"menu\",60308),expandAll:y(\"expand-all\",60309),feedback:y(\"feedback\",60310),gitPullRequestReviewer:y(\"git-pull-request-reviewer\",60310),groupByRefType:y(\"group-by-ref-type\",60311),ungroupByRefType:y(\"ungroup-by-ref-type\",60312),account:y(\"account\",60313),gitPullRequestAssignee:y(\"git-pull-request-assignee\",60313),bellDot:y(\"bell-dot\",60314),debugConsole:y(\"debug-console\",60315),library:y(\"library\",60316),output:y(\"output\",60317),runAll:y(\"run-all\",60318),syncIgnored:y(\"sync-ignored\",60319),pinned:y(\"pinned\",60320),githubInverted:y(\"github-inverted\",60321),debugAlt:y(\"debug-alt\",60305),serverProcess:y(\"server-process\",60322),serverEnvironment:y(\"server-environment\",60323),pass:y(\"pass\",60324),stopCircle:y(\"stop-circle\",60325),playCircle:y(\"play-circle\",60326),record:y(\"record\",60327),debugAltSmall:y(\"debug-alt-small\",60328),vmConnect:y(\"vm-connect\",60329),cloud:y(\"cloud\",60330),merge:y(\"merge\",60331),exportIcon:y(\"export\",60332),graphLeft:y(\"graph-left\",60333),magnet:y(\"magnet\",60334),notebook:y(\"notebook\",60335),redo:y(\"redo\",60336),checkAll:y(\"check-all\",60337),pinnedDirty:y(\"pinned-dirty\",60338),passFilled:y(\"pass-filled\",60339),circleLargeFilled:y(\"circle-large-filled\",60340),circleLarge:y(\"circle-large\",60341),circleLargeOutline:y(\"circle-large-outline\",60341),combine:y(\"combine\",60342),gather:y(\"gather\",60342),table:y(\"table\",60343),variableGroup:y(\"variable-group\",60344),typeHierarchy:y(\"type-hierarchy\",60345),typeHierarchySub:y(\"type-hierarchy-sub\",60346),typeHierarchySuper:y(\"type-hierarchy-super\",60347),gitPullRequestCreate:y(\"git-pull-request-create\",60348),runAbove:y(\"run-above\",60349),runBelow:y(\"run-below\",60350),notebookTemplate:y(\"notebook-template\",60351),debugRerun:y(\"debug-rerun\",60352),workspaceTrusted:y(\"workspace-trusted\",60353),workspaceUntrusted:y(\"workspace-untrusted\",60354),workspaceUnspecified:y(\"workspace-unspecified\",60355),terminalCmd:y(\"terminal-cmd\",60356),terminalDebian:y(\"terminal-debian\",60357),terminalLinux:y(\"terminal-linux\",60358),terminalPowershell:y(\"terminal-powershell\",60359),terminalTmux:y(\"terminal-tmux\",60360),terminalUbuntu:y(\"terminal-ubuntu\",60361),terminalBash:y(\"terminal-bash\",60362),arrowSwap:y(\"arrow-swap\",60363),copy:y(\"copy\",60364),personAdd:y(\"person-add\",60365),filterFilled:y(\"filter-filled\",60366),wand:y(\"wand\",60367),debugLineByLine:y(\"debug-line-by-line\",60368),inspect:y(\"inspect\",60369),layers:y(\"layers\",60370),layersDot:y(\"layers-dot\",60371),layersActive:y(\"layers-active\",60372),compass:y(\"compass\",60373),compassDot:y(\"compass-dot\",60374),compassActive:y(\"compass-active\",60375),azure:y(\"azure\",60376),issueDraft:y(\"issue-draft\",60377),gitPullRequestClosed:y(\"git-pull-request-closed\",60378),gitPullRequestDraft:y(\"git-pull-request-draft\",60379),debugAll:y(\"debug-all\",60380),debugCoverage:y(\"debug-coverage\",60381),runErrors:y(\"run-errors\",60382),folderLibrary:y(\"folder-library\",60383),debugContinueSmall:y(\"debug-continue-small\",60384),beakerStop:y(\"beaker-stop\",60385),graphLine:y(\"graph-line\",60386),graphScatter:y(\"graph-scatter\",60387),pieChart:y(\"pie-chart\",60388),bracketDot:y(\"bracket-dot\",60389),bracketError:y(\"bracket-error\",60390),lockSmall:y(\"lock-small\",60391),azureDevops:y(\"azure-devops\",60392),verifiedFilled:y(\"verified-filled\",60393),newLine:y(\"newline\",60394),layout:y(\"layout\",60395),layoutActivitybarLeft:y(\"layout-activitybar-left\",60396),layoutActivitybarRight:y(\"layout-activitybar-right\",60397),layoutPanelLeft:y(\"layout-panel-left\",60398),layoutPanelCenter:y(\"layout-panel-center\",60399),layoutPanelJustify:y(\"layout-panel-justify\",60400),layoutPanelRight:y(\"layout-panel-right\",60401),layoutPanel:y(\"layout-panel\",60402),layoutSidebarLeft:y(\"layout-sidebar-left\",60403),layoutSidebarRight:y(\"layout-sidebar-right\",60404),layoutStatusbar:y(\"layout-statusbar\",60405),layoutMenubar:y(\"layout-menubar\",60406),layoutCentered:y(\"layout-centered\",60407),layoutSidebarRightOff:y(\"layout-sidebar-right-off\",60416),layoutPanelOff:y(\"layout-panel-off\",60417),layoutSidebarLeftOff:y(\"layout-sidebar-left-off\",60418),target:y(\"target\",60408),indent:y(\"indent\",60409),recordSmall:y(\"record-small\",60410),errorSmall:y(\"error-small\",60411),arrowCircleDown:y(\"arrow-circle-down\",60412),arrowCircleLeft:y(\"arrow-circle-left\",60413),arrowCircleRight:y(\"arrow-circle-right\",60414),arrowCircleUp:y(\"arrow-circle-up\",60415),heartFilled:y(\"heart-filled\",60420),map:y(\"map\",60421),mapFilled:y(\"map-filled\",60422),circleSmall:y(\"circle-small\",60423),bellSlash:y(\"bell-slash\",60424),bellSlashDot:y(\"bell-slash-dot\",60425),commentUnresolved:y(\"comment-unresolved\",60426),gitPullRequestGoToChanges:y(\"git-pull-request-go-to-changes\",60427),gitPullRequestNewChanges:y(\"git-pull-request-new-changes\",60428),searchFuzzy:y(\"search-fuzzy\",60429),commentDraft:y(\"comment-draft\",60430),send:y(\"send\",60431),sparkle:y(\"sparkle\",60432),insert:y(\"insert\",60433),mic:y(\"mic\",60434),dialogError:y(\"dialog-error\",\"error\"),dialogWarning:y(\"dialog-warning\",\"warning\"),dialogInfo:y(\"dialog-info\",\"info\"),dialogClose:y(\"dialog-close\",\"close\"),treeItemExpanded:y(\"tree-item-expanded\",\"chevron-down\"),treeFilterOnTypeOn:y(\"tree-filter-on-type-on\",\"list-filter\"),treeFilterOnTypeOff:y(\"tree-filter-on-type-off\",\"list-selection\"),treeFilterClear:y(\"tree-filter-clear\",\"close\"),treeItemLoading:y(\"tree-item-loading\",\"loading\"),menuSelection:y(\"menu-selection\",\"check\"),menuSubmenu:y(\"menu-submenu\",\"chevron-right\"),menuBarMore:y(\"menubar-more\",\"more\"),scrollbarButtonLeft:y(\"scrollbar-button-left\",\"triangle-left\"),scrollbarButtonRight:y(\"scrollbar-button-right\",\"triangle-right\"),scrollbarButtonUp:y(\"scrollbar-button-up\",\"triangle-up\"),scrollbarButtonDown:y(\"scrollbar-button-down\",\"triangle-down\"),toolBarMore:y(\"toolbar-more\",\"more\"),quickInputBack:y(\"quick-input-back\",\"arrow-left\")}}),define(ne[47],se([1,0,20]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createProxyObject=e.getAllMethodNames=e.getAllPropertyNames=e.equals=e.mixin=e.cloneAndChange=e.deepFreeze=e.deepClone=void 0;function k(n){if(!n||typeof n!=\"object\"||n instanceof RegExp)return n;const t=Array.isArray(n)?[]:{};return Object.entries(n).forEach(([a,u])=>{t[a]=u&&typeof u==\"object\"?k(u):u}),t}e.deepClone=k;function y(n){if(!n||typeof n!=\"object\")return n;const t=[n];for(;t.length>0;){const a=t.shift();Object.freeze(a);for(const u in a)if(D.call(a,u)){const h=a[u];typeof h==\"object\"&&!Object.isFrozen(h)&&!(0,L.isTypedArray)(h)&&t.push(h)}}return n}e.deepFreeze=y;const D=Object.prototype.hasOwnProperty;function S(n,t){return f(n,t,new Set)}e.cloneAndChange=S;function f(n,t,a){if((0,L.isUndefinedOrNull)(n))return n;const u=t(n);if(typeof u<\"u\")return u;if(Array.isArray(n)){const h=[];for(const r of n)h.push(f(r,t,a));return h}if((0,L.isObject)(n)){if(a.has(n))throw new Error(\"Cannot clone recursive data-structure\");a.add(n);const h={};for(const r in n)D.call(n,r)&&(h[r]=f(n[r],t,a));return a.delete(n),h}return n}function _(n,t,a=!0){return(0,L.isObject)(n)?((0,L.isObject)(t)&&Object.keys(t).forEach(u=>{u in n?a&&((0,L.isObject)(n[u])&&(0,L.isObject)(t[u])?_(n[u],t[u],a):n[u]=t[u]):n[u]=t[u]}),n):t}e.mixin=_;function g(n,t){if(n===t)return!0;if(n==null||t===null||t===void 0||typeof n!=typeof t||typeof n!=\"object\"||Array.isArray(n)!==Array.isArray(t))return!1;let a,u;if(Array.isArray(n)){if(n.length!==t.length)return!1;for(a=0;a<n.length;a++)if(!g(n[a],t[a]))return!1}else{const h=[];for(u in n)h.push(u);h.sort();const r=[];for(u in t)r.push(u);if(r.sort(),!g(h,r))return!1;for(a=0;a<h.length;a++)if(!g(n[h[a]],t[h[a]]))return!1}return!0}e.equals=g;function C(n){let t=[];for(;Object.prototype!==n;)t=t.concat(Object.getOwnPropertyNames(n)),n=Object.getPrototypeOf(n);return t}e.getAllPropertyNames=C;function s(n){const t=[];for(const a of C(n))typeof n[a]==\"function\"&&t.push(a);return t}e.getAllMethodNames=s;function i(n,t){const a=h=>function(){const r=Array.prototype.slice.call(arguments,0);return t(h,r)},u={};for(const h of n)u[h]=a(h);return u}e.createProxyObject=i}),define(ne[26],se([1,0,25]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ThemeIcon=e.ThemeColor=void 0;var k;(function(D){function S(f){return f&&typeof f==\"object\"&&typeof f.id==\"string\"}D.isThemeColor=S})(k||(e.ThemeColor=k={}));var y;(function(D){D.iconNameSegment=\"[A-Za-z0-9]+\",D.iconNameExpression=\"[A-Za-z0-9-]+\",D.iconModifierExpression=\"~[A-Za-z]+\",D.iconNameCharacter=\"[A-Za-z0-9~-]\";const S=new RegExp(`^(${D.iconNameExpression})(${D.iconModifierExpression})?$`);function f(h){const r=S.exec(h.id);if(!r)return f(L.Codicon.error);const[,c,o]=r,d=[\"codicon\",\"codicon-\"+c];return o&&d.push(\"codicon-modifier-\"+o.substring(1)),d}D.asClassNameArray=f;function _(h){return f(h).join(\" \")}D.asClassName=_;function g(h){return\".\"+f(h).join(\".\")}D.asCSSSelector=g;function C(h){return h&&typeof h==\"object\"&&typeof h.id==\"string\"&&(typeof h.color>\"u\"||k.isThemeColor(h.color))}D.isThemeIcon=C;const s=new RegExp(`^\\\\$\\\\((${D.iconNameExpression}(?:${D.iconModifierExpression})?)\\\\)$`);function i(h){const r=s.exec(h);if(!r)return;const[,c]=r;return{id:c}}D.fromString=i;function n(h){return{id:h}}D.fromId=n;function t(h,r){let c=h.id;const o=c.lastIndexOf(\"~\");return o!==-1&&(c=c.substring(0,o)),r&&(c=`${c}~${r}`),{id:c}}D.modify=t;function a(h){const r=h.id.lastIndexOf(\"~\");if(r!==-1)return h.id.substring(r+1)}D.getModifier=a;function u(h,r){var c,o;return h.id===r.id&&((c=h.color)===null||c===void 0?void 0:c.id)===((o=r.color)===null||o===void 0?void 0:o.id)}D.isEqual=u})(y||(e.ThemeIcon=y={}))}),define(ne[120],se([1,0,72,11,26]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.matchesFuzzyIconAware=e.parseLabelWithIcons=e.getCodiconAriaLabel=e.stripIcons=e.markdownEscapeEscapedIcons=e.escapeIcons=void 0;const D=\"$(\",S=new RegExp(`\\\\$\\\\(${y.ThemeIcon.iconNameExpression}(?:${y.ThemeIcon.iconModifierExpression})?\\\\)`,\"g\"),f=new RegExp(`(\\\\\\\\)?${S.source}`,\"g\");function _(h){return h.replace(f,(r,c)=>c?r:`\\\\${r}`)}e.escapeIcons=_;const g=new RegExp(`\\\\\\\\${S.source}`,\"g\");function C(h){return h.replace(g,r=>`\\\\${r}`)}e.markdownEscapeEscapedIcons=C;const s=new RegExp(`(\\\\s)?(\\\\\\\\)?${S.source}(\\\\s)?`,\"g\");function i(h){return h.indexOf(D)===-1?h:h.replace(s,(r,c,o,d)=>o?r:c||d||\"\")}e.stripIcons=i;function n(h){return h?h.replace(/\\$\\((.*?)\\)/g,(r,c)=>` ${c} `).trim():\"\"}e.getCodiconAriaLabel=n;const t=new RegExp(`\\\\$\\\\(${y.ThemeIcon.iconNameCharacter}+\\\\)`,\"g\");function a(h){t.lastIndex=0;let r=\"\";const c=[];let o=0;for(;;){const d=t.lastIndex,l=t.exec(h),p=h.substring(d,l?.index);if(p.length>0){r+=p;for(let m=0;m<p.length;m++)c.push(o)}if(!l)break;o+=l[0].length}return{text:r,iconOffsets:c}}e.parseLabelWithIcons=a;function u(h,r,c=!1){const{text:o,iconOffsets:d}=r;if(!d||d.length===0)return(0,L.matchesFuzzy)(h,o,c);const l=(0,k.ltrim)(o,\" \"),p=o.length-l.length,m=(0,L.matchesFuzzy)(h,l,c);if(m)for(const v of m){const b=d[v.start+p]+p;v.start+=b,v.end+=b}return m}e.matchesFuzzyIconAware=u}),define(ne[169],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.toUint32=e.toUint8=void 0;function L(y){return y<0?0:y>255?255:y|0}e.toUint8=L;function k(y){return y<0?0:y>4294967295?4294967295:y|0}e.toUint32=k}),define(ne[170],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.generateUuid=void 0,e.generateUuid=function(){if(typeof crypto==\"object\"&&typeof crypto.randomUUID==\"function\")return crypto.randomUUID.bind(crypto);let L;typeof crypto==\"object\"&&typeof crypto.getRandomValues==\"function\"?L=crypto.getRandomValues.bind(crypto):L=function(D){for(let S=0;S<D.length;S++)D[S]=Math.floor(Math.random()*256);return D};const k=new Uint8Array(16),y=[];for(let D=0;D<256;D++)y.push(D.toString(16).padStart(2,\"0\"));return function(){L(k),k[6]=k[6]&15|64,k[8]=k[8]&63|128;let S=0,f=\"\";return f+=y[k[S++]],f+=y[k[S++]],f+=y[k[S++]],f+=y[k[S++]],f+=\"-\",f+=y[k[S++]],f+=y[k[S++]],f+=\"-\",f+=y[k[S++]],f+=y[k[S++]],f+=\"-\",f+=y[k[S++]],f+=y[k[S++]],f+=\"-\",f+=y[k[S++]],f+=y[k[S++]],f+=y[k[S++]],f+=y[k[S++]],f+=y[k[S++]],f+=y[k[S++]],f}}()}),define(ne[171],se([1,0,14,46,170]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UriList=e.matchesMimeType=e.VSDataTransfer=e.createFileDataTransferItem=e.createStringDataTransferItem=void 0;function D(s){return{asString:()=>we(this,void 0,void 0,function*(){return s}),asFile:()=>{},value:typeof s==\"string\"?s:void 0}}e.createStringDataTransferItem=D;function S(s,i,n){const t={id:(0,y.generateUuid)(),name:s,uri:i,data:n};return{asString:()=>we(this,void 0,void 0,function*(){return\"\"}),asFile:()=>t,value:void 0}}e.createFileDataTransferItem=S;class f{constructor(){this._entries=new Map}get size(){let i=0;for(const n of this._entries)i++;return i}has(i){return this._entries.has(this.toKey(i))}matches(i){const n=[...this._entries.keys()];return k.Iterable.some(this,([t,a])=>a.asFile())&&n.push(\"files\"),C(_(i),n)}get(i){var n;return(n=this._entries.get(this.toKey(i)))===null||n===void 0?void 0:n[0]}append(i,n){const t=this._entries.get(i);t?t.push(n):this._entries.set(this.toKey(i),[n])}replace(i,n){this._entries.set(this.toKey(i),[n])}delete(i){this._entries.delete(this.toKey(i))}*[Symbol.iterator](){for(const[i,n]of this._entries)for(const t of n)yield[i,t]}toKey(i){return _(i)}}e.VSDataTransfer=f;function _(s){return s.toLowerCase()}function g(s,i){return C(_(s),i.map(_))}e.matchesMimeType=g;function C(s,i){if(s===\"*/*\")return i.length>0;if(i.includes(s))return!0;const n=s.match(/^([a-z]+)\\/([a-z]+|\\*)$/i);if(!n)return!1;const[t,a,u]=n;return u===\"*\"?i.some(h=>h.startsWith(a+\"/\")):!1}e.UriList=Object.freeze({create:s=>(0,L.distinct)(s.map(i=>i.toString())).join(`\\r\n`),split:s=>s.split(`\\r\n`),parse:s=>e.UriList.split(s).filter(i=>!i.startsWith(\"#\"))})}),define(ne[265],se([10]),{}),define(ne[393],se([10]),{}),define(ne[394],se([10]),{}),define(ne[395],se([10]),{}),define(ne[396],se([10]),{}),define(ne[172],se([1,0,395,396]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0})}),define(ne[397],se([10]),{}),define(ne[398],se([10]),{}),define(ne[266],se([10]),{}),define(ne[267],se([10]),{}),define(ne[399],se([10]),{}),define(ne[400],se([10]),{}),define(ne[401],se([10]),{}),define(ne[402],se([10]),{}),define(ne[268],se([10]),{}),define(ne[403],se([10]),{}),define(ne[173],se([1,0,403]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME=void 0,e.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME=\"monaco-mouse-cursor-text\"}),define(ne[404],se([10]),{}),define(ne[405],se([10]),{}),define(ne[406],se([10]),{}),define(ne[407],se([10]),{}),define(ne[408],se([10]),{}),define(ne[409],se([10]),{}),define(ne[410],se([10]),{}),define(ne[411],se([10]),{}),define(ne[412],se([10]),{}),define(ne[413],se([10]),{}),define(ne[414],se([10]),{}),define(ne[415],se([10]),{}),define(ne[416],se([10]),{}),define(ne[417],se([10]),{}),define(ne[418],se([10]),{}),define(ne[419],se([10]),{}),define(ne[420],se([10]),{}),define(ne[421],se([10]),{}),define(ne[422],se([10]),{}),define(ne[423],se([10]),{}),define(ne[424],se([10]),{}),define(ne[425],se([10]),{}),define(ne[426],se([10]),{}),define(ne[427],se([10]),{}),define(ne[428],se([10]),{}),define(ne[429],se([10]),{}),define(ne[430],se([10]),{}),define(ne[431],se([10]),{}),define(ne[432],se([10]),{}),define(ne[433],se([10]),{}),define(ne[434],se([10]),{}),define(ne[435],se([10]),{}),define(ne[436],se([10]),{}),define(ne[437],se([10]),{}),define(ne[438],se([10]),{}),define(ne[439],se([10]),{}),define(ne[199],se([10]),{}),define(ne[440],se([10]),{}),define(ne[441],se([10]),{}),define(ne[442],se([10]),{}),define(ne[443],se([10]),{}),define(ne[444],se([10]),{}),define(ne[445],se([10]),{}),define(ne[446],se([10]),{}),define(ne[447],se([10]),{}),define(ne[448],se([10]),{}),define(ne[449],se([10]),{}),define(ne[450],se([10]),{}),define(ne[451],se([10]),{}),define(ne[452],se([10]),{}),define(ne[453],se([10]),{}),define(ne[454],se([10]),{}),define(ne[455],se([10]),{}),define(ne[456],se([10]),{}),define(ne[457],se([10]),{}),define(ne[458],se([10]),{}),define(ne[459],se([10]),{}),define(ne[460],se([10]),{}),define(ne[461],se([10]),{}),define(ne[462],se([10]),{}),define(ne[463],se([10]),{}),define(ne[464],se([10]),{}),define(ne[465],se([10]),{}),define(ne[466],se([10]),{}),define(ne[467],se([10]),{}),define(ne[468],se([10]),{}),define(ne[469],se([10]),{}),define(ne[470],se([10]),{}),define(ne[471],se([10]),{}),define(ne[269],se([10]),{}),define(ne[472],se([10]),{}),define(ne[473],se([10]),{}),define(ne[174],se([10]),{}),define(ne[474],se([10]),{}),define(ne[59],se([1,0,35]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.applyFontInfo=void 0;function k(y,D){y instanceof L.FastDomNode?(y.setFontFamily(D.getMassagedFontFamily()),y.setFontWeight(D.fontWeight),y.setFontSize(D.fontSize),y.setFontFeatureSettings(D.fontFeatureSettings),y.setFontVariationSettings(D.fontVariationSettings),y.setLineHeight(D.lineHeight),y.setLetterSpacing(D.letterSpacing)):(y.style.fontFamily=D.getMassagedFontFamily(),y.style.fontWeight=D.fontWeight,y.style.fontSize=D.fontSize+\"px\",y.style.fontFeatureSettings=D.fontFeatureSettings,y.style.fontVariationSettings=D.fontVariationSettings,y.style.lineHeight=D.lineHeight+\"px\",y.style.letterSpacing=D.letterSpacing+\"px\")}e.applyFontInfo=k}),define(ne[475],se([1,0,59]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.readCharWidths=e.CharWidthRequest=void 0;class k{constructor(f,_){this.chr=f,this.type=_,this.width=0}fulfill(f){this.width=f}}e.CharWidthRequest=k;class y{constructor(f,_){this._bareFontInfo=f,this._requests=_,this._container=null,this._testElements=null}read(){this._createDomElements(),document.body.appendChild(this._container),this._readFromDomElements(),document.body.removeChild(this._container),this._container=null,this._testElements=null}_createDomElements(){const f=document.createElement(\"div\");f.style.position=\"absolute\",f.style.top=\"-50000px\",f.style.width=\"50000px\";const _=document.createElement(\"div\");(0,L.applyFontInfo)(_,this._bareFontInfo),f.appendChild(_);const g=document.createElement(\"div\");(0,L.applyFontInfo)(g,this._bareFontInfo),g.style.fontWeight=\"bold\",f.appendChild(g);const C=document.createElement(\"div\");(0,L.applyFontInfo)(C,this._bareFontInfo),C.style.fontStyle=\"italic\",f.appendChild(C);const s=[];for(const i of this._requests){let n;i.type===0&&(n=_),i.type===2&&(n=g),i.type===1&&(n=C),n.appendChild(document.createElement(\"br\"));const t=document.createElement(\"span\");y._render(t,i),n.appendChild(t),s.push(t)}this._container=f,this._testElements=s}static _render(f,_){if(_.chr===\" \"){let g=\"\\xA0\";for(let C=0;C<8;C++)g+=g;f.innerText=g}else{let g=_.chr;for(let C=0;C<8;C++)g+=g;f.textContent=g}}_readFromDomElements(){for(let f=0,_=this._requests.length;f<_;f++){const g=this._requests[f],C=this._testElements[f];g.fulfill(C.offsetWidth/256)}}}function D(S,f){new y(S,f).read()}e.readCharWidths=D}),define(ne[200],se([1,0,2,6]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ElementSizeObserver=void 0;class y extends L.Disposable{constructor(S,f){super(),this._onDidChange=this._register(new k.Emitter),this.onDidChange=this._onDidChange.event,this._referenceDomElement=S,this._width=-1,this._height=-1,this._resizeObserver=null,this.measureReferenceDomElement(!1,f)}dispose(){this.stopObserving(),super.dispose()}getWidth(){return this._width}getHeight(){return this._height}startObserving(){if(!this._resizeObserver&&this._referenceDomElement){let S=null;const f=()=>{S?this.observe({width:S.width,height:S.height}):this.observe()};let _=!1,g=!1;const C=()=>{if(_&&!g)try{_=!1,g=!0,f()}finally{requestAnimationFrame(()=>{g=!1,C()})}};this._resizeObserver=new ResizeObserver(s=>{S=s&&s[0]&&s[0].contentRect?s[0].contentRect:null,_=!0,C()}),this._resizeObserver.observe(this._referenceDomElement)}}stopObserving(){this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=null)}observe(S){this.measureReferenceDomElement(!0,S)}measureReferenceDomElement(S,f){let _=0,g=0;f?(_=f.width,g=f.height):this._referenceDomElement&&(_=this._referenceDomElement.clientWidth,g=this._referenceDomElement.clientHeight),_=Math.max(5,_),g=Math.max(5,g),(this._width!==_||this._height!==g)&&(this._width=_,this._height=g,S&&this._onDidChange.fire())}}e.ElementSizeObserver=y}),define(ne[476],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.migrateOptions=e.EditorSettingMigration=void 0;class L{constructor(_,g){this.key=_,this.migrate=g}apply(_){const g=L._read(_,this.key),C=i=>L._read(_,i),s=(i,n)=>L._write(_,i,n);this.migrate(g,C,s)}static _read(_,g){if(typeof _>\"u\")return;const C=g.indexOf(\".\");if(C>=0){const s=g.substring(0,C);return this._read(_[s],g.substring(C+1))}return _[g]}static _write(_,g,C){const s=g.indexOf(\".\");if(s>=0){const i=g.substring(0,s);_[i]=_[i]||{},this._write(_[i],g.substring(s+1),C);return}_[g]=C}}e.EditorSettingMigration=L,L.items=[];function k(f,_){L.items.push(new L(f,_))}function y(f,_){k(f,(g,C,s)=>{if(typeof g<\"u\"){for(const[i,n]of _)if(g===i){s(f,n);return}}})}function D(f){L.items.forEach(_=>_.apply(f))}e.migrateOptions=D,y(\"wordWrap\",[[!0,\"on\"],[!1,\"off\"]]),y(\"lineNumbers\",[[!0,\"on\"],[!1,\"off\"]]),y(\"cursorBlinking\",[[\"visible\",\"solid\"]]),y(\"renderWhitespace\",[[!0,\"boundary\"],[!1,\"none\"]]),y(\"renderLineHighlight\",[[!0,\"line\"],[!1,\"none\"]]),y(\"acceptSuggestionOnEnter\",[[!0,\"on\"],[!1,\"off\"]]),y(\"tabCompletion\",[[!1,\"off\"],[!0,\"onlySnippets\"]]),y(\"hover\",[[!0,{enabled:!0}],[!1,{enabled:!1}]]),y(\"parameterHints\",[[!0,{enabled:!0}],[!1,{enabled:!1}]]),y(\"autoIndent\",[[!1,\"advanced\"],[!0,\"full\"]]),y(\"matchBrackets\",[[!0,\"always\"],[!1,\"never\"]]),y(\"renderFinalNewline\",[[!0,\"on\"],[!1,\"off\"]]),y(\"cursorSmoothCaretAnimation\",[[!0,\"on\"],[!1,\"off\"]]),k(\"autoClosingBrackets\",(f,_,g)=>{f===!1&&(g(\"autoClosingBrackets\",\"never\"),typeof _(\"autoClosingQuotes\")>\"u\"&&g(\"autoClosingQuotes\",\"never\"),typeof _(\"autoSurround\")>\"u\"&&g(\"autoSurround\",\"never\"))}),k(\"renderIndentGuides\",(f,_,g)=>{typeof f<\"u\"&&(g(\"renderIndentGuides\",void 0),typeof _(\"guides.indentation\")>\"u\"&&g(\"guides.indentation\",!!f))}),k(\"highlightActiveIndentGuide\",(f,_,g)=>{typeof f<\"u\"&&(g(\"highlightActiveIndentGuide\",void 0),typeof _(\"guides.highlightActiveIndentation\")>\"u\"&&g(\"guides.highlightActiveIndentation\",!!f))});const S={method:\"showMethods\",function:\"showFunctions\",constructor:\"showConstructors\",deprecated:\"showDeprecated\",field:\"showFields\",variable:\"showVariables\",class:\"showClasses\",struct:\"showStructs\",interface:\"showInterfaces\",module:\"showModules\",property:\"showProperties\",event:\"showEvents\",operator:\"showOperators\",unit:\"showUnits\",value:\"showValues\",constant:\"showConstants\",enum:\"showEnums\",enumMember:\"showEnumMembers\",keyword:\"showKeywords\",text:\"showWords\",color:\"showColors\",file:\"showFiles\",reference:\"showReferences\",folder:\"showFolders\",typeParameter:\"showTypeParameters\",snippet:\"showSnippets\"};k(\"suggest.filteredTypes\",(f,_,g)=>{if(f&&typeof f==\"object\"){for(const C of Object.entries(S))f[C[0]]===!1&&typeof _(`suggest.${C[1]}`)>\"u\"&&g(`suggest.${C[1]}`,!1);g(\"suggest.filteredTypes\",void 0)}}),k(\"quickSuggestions\",(f,_,g)=>{if(typeof f==\"boolean\"){const C=f?\"on\":\"off\";g(\"quickSuggestions\",{comments:C,strings:C,other:C})}}),k(\"experimental.stickyScroll.enabled\",(f,_,g)=>{typeof f==\"boolean\"&&(g(\"experimental.stickyScroll.enabled\",void 0),typeof _(\"stickyScroll.enabled\")>\"u\"&&g(\"stickyScroll.enabled\",f))}),k(\"experimental.stickyScroll.maxLineCount\",(f,_,g)=>{typeof f==\"number\"&&(g(\"experimental.stickyScroll.maxLineCount\",void 0),typeof _(\"stickyScroll.maxLineCount\")>\"u\"&&g(\"stickyScroll.maxLineCount\",f))})}),define(ne[201],se([1,0,6]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TabFocus=void 0;class k{constructor(){this._tabFocusTerminal=!1,this._tabFocusEditor=!1,this._onDidChangeTabFocus=new L.Emitter,this.onDidChangeTabFocus=this._onDidChangeTabFocus.event}getTabFocusMode(D){return D===\"terminalFocus\"?this._tabFocusTerminal:this._tabFocusEditor}setTabFocusMode(D,S){S===\"terminalFocus\"?this._tabFocusTerminal=D:this._tabFocusEditor=D,this._onDidChangeTabFocus.fire()}}e.TabFocus=new k}),define(ne[108],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StableEditorScrollState=void 0;class L{static capture(y){if(y.getScrollTop()===0||y.hasPendingScrollAnimation())return new L(y.getScrollTop(),y.getContentHeight(),null,0,null);let D=null,S=0;const f=y.getVisibleRanges();if(f.length>0){D=f[0].getStartPosition();const _=y.getTopForPosition(D.lineNumber,D.column);S=y.getScrollTop()-_}return new L(y.getScrollTop(),y.getContentHeight(),D,S,y.getPosition())}constructor(y,D,S,f,_){this._initialScrollTop=y,this._initialContentHeight=D,this._visiblePosition=S,this._visiblePositionScrollDelta=f,this._cursorPosition=_}restore(y){if(!(this._initialContentHeight===y.getContentHeight()&&this._initialScrollTop===y.getScrollTop())&&this._visiblePosition){const D=y.getTopForPosition(this._visiblePosition.lineNumber,this._visiblePosition.column);y.setScrollTop(D+this._visiblePositionScrollDelta)}}restoreRelativeVerticalPositionOfCursor(y){if(this._initialContentHeight===y.getContentHeight()&&this._initialScrollTop===y.getScrollTop())return;const D=y.getPosition();if(!this._cursorPosition||!D)return;const S=y.getTopForLineNumber(D.lineNumber)-y.getTopForLineNumber(this._cursorPosition.lineNumber);y.setScrollTop(y.getScrollTop()+S)}}e.StableEditorScrollState=L}),define(ne[144],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VisibleRanges=e.HorizontalPosition=e.FloatHorizontalRange=e.HorizontalRange=e.LineVisibleRanges=e.RenderingContext=e.RestrictedRenderingContext=void 0;class L{constructor(C,s){this._restrictedRenderingContextBrand=void 0,this._viewLayout=C,this.viewportData=s,this.scrollWidth=this._viewLayout.getScrollWidth(),this.scrollHeight=this._viewLayout.getScrollHeight(),this.visibleRange=this.viewportData.visibleRange,this.bigNumbersDelta=this.viewportData.bigNumbersDelta;const i=this._viewLayout.getCurrentViewport();this.scrollTop=i.top,this.scrollLeft=i.left,this.viewportWidth=i.width,this.viewportHeight=i.height}getScrolledTopFromAbsoluteTop(C){return C-this.scrollTop}getVerticalOffsetForLineNumber(C,s){return this._viewLayout.getVerticalOffsetForLineNumber(C,s)}getVerticalOffsetAfterLineNumber(C,s){return this._viewLayout.getVerticalOffsetAfterLineNumber(C,s)}getDecorationsInViewport(){return this.viewportData.getDecorationsInViewport()}}e.RestrictedRenderingContext=L;class k extends L{constructor(C,s,i){super(C,s),this._renderingContextBrand=void 0,this._viewLines=i}linesVisibleRangesForRange(C,s){return this._viewLines.linesVisibleRangesForRange(C,s)}visibleRangeForPosition(C){return this._viewLines.visibleRangeForPosition(C)}}e.RenderingContext=k;class y{constructor(C,s,i,n){this.outsideRenderedLine=C,this.lineNumber=s,this.ranges=i,this.continuesOnNextLine=n}}e.LineVisibleRanges=y;class D{static from(C){const s=new Array(C.length);for(let i=0,n=C.length;i<n;i++){const t=C[i];s[i]=new D(t.left,t.width)}return s}constructor(C,s){this._horizontalRangeBrand=void 0,this.left=Math.round(C),this.width=Math.round(s)}toString(){return`[${this.left},${this.width}]`}}e.HorizontalRange=D;class S{constructor(C,s){this._floatHorizontalRangeBrand=void 0,this.left=C,this.width=s}toString(){return`[${this.left},${this.width}]`}static compare(C,s){return C.left-s.left}}e.FloatHorizontalRange=S;class f{constructor(C,s){this.outsideRenderedLine=C,this.originalLeft=s,this.left=Math.round(this.originalLeft)}}e.HorizontalPosition=f;class _{constructor(C,s){this.outsideRenderedLine=C,this.ranges=s}}e.VisibleRanges=_}),define(ne[477],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DomReadingContext=void 0;class L{get didDomLayout(){return this._didDomLayout}readClientRect(){if(!this._clientRectRead){this._clientRectRead=!0;const y=this._domNode.getBoundingClientRect();this.markDidDomLayout(),this._clientRectDeltaLeft=y.left,this._clientRectScale=y.width/this._domNode.offsetWidth}}get clientRectDeltaLeft(){return this._clientRectRead||this.readClientRect(),this._clientRectDeltaLeft}get clientRectScale(){return this._clientRectRead||this.readClientRect(),this._clientRectScale}constructor(y,D){this._domNode=y,this.endNode=D,this._didDomLayout=!1,this._clientRectDeltaLeft=0,this._clientRectScale=1,this._clientRectRead=!1}markDidDomLayout(){this._didDomLayout=!0}}e.DomReadingContext=L}),define(ne[478],se([1,0,144]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RangeUtil=void 0;class k{static _createRange(){return this._handyReadyRange||(this._handyReadyRange=document.createRange()),this._handyReadyRange}static _detachRange(D,S){D.selectNodeContents(S)}static _readClientRects(D,S,f,_,g){const C=this._createRange();try{return C.setStart(D,S),C.setEnd(f,_),C.getClientRects()}catch{return null}finally{this._detachRange(C,g)}}static _mergeAdjacentRanges(D){if(D.length===1)return D;D.sort(L.FloatHorizontalRange.compare);const S=[];let f=0,_=D[0];for(let g=1,C=D.length;g<C;g++){const s=D[g];_.left+_.width+.9>=s.left?_.width=Math.max(_.width,s.left+s.width-_.left):(S[f++]=_,_=s)}return S[f++]=_,S}static _createHorizontalRangesFromClientRects(D,S,f){if(!D||D.length===0)return null;const _=[];for(let g=0,C=D.length;g<C;g++){const s=D[g];_[g]=new L.FloatHorizontalRange(Math.max(0,(s.left-S)/f),s.width/f)}return this._mergeAdjacentRanges(_)}static readHorizontalRanges(D,S,f,_,g,C){const i=D.children.length-1;if(0>i)return null;if(S=Math.min(i,Math.max(0,S)),_=Math.min(i,Math.max(0,_)),S===_&&f===g&&f===0&&!D.children[S].firstChild){const u=D.children[S].getClientRects();return C.markDidDomLayout(),this._createHorizontalRangesFromClientRects(u,C.clientRectDeltaLeft,C.clientRectScale)}S!==_&&_>0&&g===0&&(_--,g=1073741824);let n=D.children[S].firstChild,t=D.children[_].firstChild;if((!n||!t)&&(!n&&f===0&&S>0&&(n=D.children[S-1].firstChild,f=1073741824),!t&&g===0&&_>0&&(t=D.children[_-1].firstChild,g=1073741824)),!n||!t)return null;f=Math.min(n.textContent.length,Math.max(0,f)),g=Math.min(t.textContent.length,Math.max(0,g));const a=this._readClientRects(n,f,t,g,C.endNode);return C.markDidDomLayout(),this._createHorizontalRangesFromClientRects(a,C.clientRectDeltaLeft,C.clientRectScale)}}e.RangeUtil=k}),define(ne[270],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getCharIndex=e.allCharCodes=void 0,e.allCharCodes=(()=>{const k=[];for(let y=32;y<=126;y++)k.push(y);return k.push(65533),k})();const L=(k,y)=>(k-=32,k<0||k>96?y<=2?(k+96)%96:96-1:k);e.getCharIndex=L}),define(ne[479],se([1,0,270,169]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MinimapCharRenderer=void 0;class y{constructor(S,f){this.scale=f,this._minimapCharRendererBrand=void 0,this.charDataNormal=y.soften(S,12/15),this.charDataLight=y.soften(S,50/60)}static soften(S,f){const _=new Uint8ClampedArray(S.length);for(let g=0,C=S.length;g<C;g++)_[g]=(0,k.toUint8)(S[g]*f);return _}renderChar(S,f,_,g,C,s,i,n,t,a,u){const h=1*this.scale,r=2*this.scale,c=u?1:r;if(f+h>S.width||_+c>S.height){console.warn(\"bad render request outside image data\");return}const o=a?this.charDataLight:this.charDataNormal,d=(0,L.getCharIndex)(g,t),l=S.width*4,p=i.r,m=i.g,v=i.b,b=C.r-p,w=C.g-m,E=C.b-v,I=Math.max(s,n),M=S.data;let P=d*h*r,x=_*l+f*4;for(let T=0;T<c;T++){let A=x;for(let N=0;N<h;N++){const F=o[P++]/255*(s/255);M[A++]=p+b*F,M[A++]=m+w*F,M[A++]=v+E*F,M[A++]=I}x+=l}}blockRenderChar(S,f,_,g,C,s,i,n){const t=1*this.scale,a=2*this.scale,u=n?1:a;if(f+t>S.width||_+u>S.height){console.warn(\"bad render request outside image data\");return}const h=S.width*4,r=.5*(C/255),c=s.r,o=s.g,d=s.b,l=g.r-c,p=g.g-o,m=g.b-d,v=c+l*r,b=o+p*r,w=d+m*r,E=Math.max(C,i),I=S.data;let M=_*h+f*4;for(let P=0;P<u;P++){let x=M;for(let T=0;T<t;T++)I[x++]=v,I[x++]=b,I[x++]=w,I[x++]=E;M+=h}}}e.MinimapCharRenderer=y}),define(ne[480],se([1,0,99]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.prebakedMiniMaps=void 0;const k={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15},y=D=>{const S=new Uint8ClampedArray(D.length/2);for(let f=0;f<D.length;f+=2)S[f>>1]=k[D[f]]<<4|k[D[f+1]]&15;return S};e.prebakedMiniMaps={1:(0,L.once)(()=>y(\"0000511D6300CF609C709645A78432005642574171487021003C451900274D35D762755E8B629C5BA856AF57BA649530C167D1512A272A3F6038604460398526BCA2A968DB6F8957C768BE5FBE2FB467CF5D8D5B795DC7625B5DFF50DE64C466DB2FC47CD860A65E9A2EB96CB54CE06DA763AB2EA26860524D3763536601005116008177A8705E53AB738E6A982F88BAA35B5F5B626D9C636B449B737E5B7B678598869A662F6B5B8542706C704C80736A607578685B70594A49715A4522E792\")),2:(0,L.once)(()=>y(\"000000000000000055394F383D2800008B8B1F210002000081B1CBCBCC820000847AAF6B9AAF2119BE08B8881AD60000A44FD07DCCF107015338130C00000000385972265F390B406E2437634B4B48031B12B8A0847000001E15B29A402F0000000000004B33460B00007A752C2A0000000000004D3900000084394B82013400ABA5CFC7AD9C0302A45A3E5A98AB000089A43382D97900008BA54AA087A70A0248A6A7AE6DBE0000BF6F94987EA40A01A06DCFA7A7A9030496C32F77891D0000A99FB1A0AFA80603B29AB9CA75930D010C0948354D3900000C0948354F37460D0028BE673D8400000000AF9D7B6E00002B007AA8933400007AA642675C2700007984CFB9C3985B768772A8A6B7B20000CAAECAAFC4B700009F94A6009F840009D09F9BA4CA9C0000CC8FC76DC87F0000C991C472A2000000A894A48CA7B501079BA2C9C69BA20000B19A5D3FA89000005CA6009DA2960901B0A7F0669FB200009D009E00B7890000DAD0F5D092820000D294D4C48BD10000B5A7A4A3B1A50402CAB6CBA6A2000000B5A7A4A3B1A8044FCDADD19D9CB00000B7778F7B8AAE0803C9AB5D3F5D3F00009EA09EA0BAB006039EA0989A8C7900009B9EF4D6B7C00000A9A7816CACA80000ABAC84705D3F000096DA635CDC8C00006F486F266F263D4784006124097B00374F6D2D6D2D6D4A3A95872322000000030000000000008D8939130000000000002E22A5C9CBC70600AB25C0B5C9B400061A2DB04CA67001082AA6BEBEBFC606002321DACBC19E03087AA08B6768380000282FBAC0B8CA7A88AD25BBA5A29900004C396C5894A6000040485A6E356E9442A32CD17EADA70000B4237923628600003E2DE9C1D7B500002F25BBA5A2990000231DB6AFB4A804023025C0B5CAB588062B2CBDBEC0C706882435A75CA20000002326BD6A82A908048B4B9A5A668000002423A09CB4BB060025259C9D8A7900001C1FCAB2C7C700002A2A9387ABA200002626A4A47D6E9D14333163A0C87500004B6F9C2D643A257049364936493647358A34438355497F1A0000A24C1D590000D38DFFBDD4CD3126\"))}}),define(ne[481],se([1,0,479,270,480,169]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MinimapCharRendererFactory=void 0;class S{static create(_,g){if(this.lastCreated&&_===this.lastCreated.scale&&g===this.lastFontFamily)return this.lastCreated;let C;return y.prebakedMiniMaps[_]?C=new L.MinimapCharRenderer(y.prebakedMiniMaps[_](),_):C=S.createFromSampleData(S.createSampleData(g).data,_),this.lastFontFamily=g,this.lastCreated=C,C}static createSampleData(_){const g=document.createElement(\"canvas\"),C=g.getContext(\"2d\");g.style.height=\"16px\",g.height=16,g.width=96*10,g.style.width=96*10+\"px\",C.fillStyle=\"#ffffff\",C.font=`bold 16px ${_}`,C.textBaseline=\"middle\";let s=0;for(const i of k.allCharCodes)C.fillText(String.fromCharCode(i),s,16/2),s+=10;return C.getImageData(0,0,96*10,16)}static createFromSampleData(_,g){if(_.length!==61440)throw new Error(\"Unexpected source in MinimapCharRenderer\");const s=S._downsample(_,g);return new L.MinimapCharRenderer(s,g)}static _downsampleChar(_,g,C,s,i){const n=1*i,t=2*i;let a=s,u=0;for(let h=0;h<t;h++){const r=h/t*16,c=(h+1)/t*16;for(let o=0;o<n;o++){const d=o/n*10,l=(o+1)/n*10;let p=0,m=0;for(let b=r;b<c;b++){const w=g+Math.floor(b)*3840,E=1-(b-Math.floor(b));for(let I=d;I<l;I++){const M=1-(I-Math.floor(I)),P=w+Math.floor(I)*4,x=M*E;m+=x,p+=_[P]*_[P+3]/255*x}}const v=p/m;u=Math.max(u,v),C[a++]=(0,D.toUint8)(v)}}return u}static _downsample(_,g){const C=2*g*1*g,s=C*96,i=new Uint8ClampedArray(s);let n=0,t=0,a=0;for(let u=0;u<96;u++)a=Math.max(a,this._downsampleChar(_,t,i,n,g)),n+=C,t+=10*4;if(a>0){const u=255/a;for(let h=0;h<s;h++)i[h]*=u}return i}}e.MinimapCharRendererFactory=S}),define(ne[482],se([1,0,6,2]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DelegatingEditor=void 0;class y extends k.Disposable{constructor(){super(...arguments),this._id=++y.idCounter,this._onDidDispose=this._register(new L.Emitter),this.onDidDispose=this._onDidDispose.event}getId(){return this.getEditorType()+\":v2:\"+this._id}getVisibleColumnFromPosition(S){return this._targetEditor.getVisibleColumnFromPosition(S)}getPosition(){return this._targetEditor.getPosition()}setPosition(S,f=\"api\"){this._targetEditor.setPosition(S,f)}revealLine(S,f=0){this._targetEditor.revealLine(S,f)}revealLineInCenter(S,f=0){this._targetEditor.revealLineInCenter(S,f)}revealLineInCenterIfOutsideViewport(S,f=0){this._targetEditor.revealLineInCenterIfOutsideViewport(S,f)}revealLineNearTop(S,f=0){this._targetEditor.revealLineNearTop(S,f)}revealPosition(S,f=0){this._targetEditor.revealPosition(S,f)}revealPositionInCenter(S,f=0){this._targetEditor.revealPositionInCenter(S,f)}revealPositionInCenterIfOutsideViewport(S,f=0){this._targetEditor.revealPositionInCenterIfOutsideViewport(S,f)}revealPositionNearTop(S,f=0){this._targetEditor.revealPositionNearTop(S,f)}getSelection(){return this._targetEditor.getSelection()}getSelections(){return this._targetEditor.getSelections()}setSelection(S,f=\"api\"){this._targetEditor.setSelection(S,f)}setSelections(S,f=\"api\"){this._targetEditor.setSelections(S,f)}revealLines(S,f,_=0){this._targetEditor.revealLines(S,f,_)}revealLinesInCenter(S,f,_=0){this._targetEditor.revealLinesInCenter(S,f,_)}revealLinesInCenterIfOutsideViewport(S,f,_=0){this._targetEditor.revealLinesInCenterIfOutsideViewport(S,f,_)}revealLinesNearTop(S,f,_=0){this._targetEditor.revealLinesNearTop(S,f,_)}revealRange(S,f=0,_=!1,g=!0){this._targetEditor.revealRange(S,f,_,g)}revealRangeInCenter(S,f=0){this._targetEditor.revealRangeInCenter(S,f)}revealRangeInCenterIfOutsideViewport(S,f=0){this._targetEditor.revealRangeInCenterIfOutsideViewport(S,f)}revealRangeNearTop(S,f=0){this._targetEditor.revealRangeNearTop(S,f)}revealRangeNearTopIfOutsideViewport(S,f=0){this._targetEditor.revealRangeNearTopIfOutsideViewport(S,f)}revealRangeAtTop(S,f=0){this._targetEditor.revealRangeAtTop(S,f)}getSupportedActions(){return this._targetEditor.getSupportedActions()}focus(){this._targetEditor.focus()}trigger(S,f,_){this._targetEditor.trigger(S,f,_)}createDecorationsCollection(S){return this._targetEditor.createDecorationsCollection(S)}changeDecorations(S){return this._targetEditor.changeDecorations(S)}}e.DelegatingEditor=y,y.idCounter=0}),define(ne[102],se([1,0,2,42,200]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.applyViewZones=e.observeHotReloadableExports=e.readHotReloadableExport=e.applyStyle=e.ManagedOverlayWidget=e.PlaceholderViewZone=e.ViewZoneOverlayWidget=e.animatedObservable=e.ObservableElementSizeObserver=e.appendRemoveOnDispose=e.applyObservableDecorations=e.joinCombine=void 0;function D(r,c,o,d){if(r.length===0)return c;if(c.length===0)return r;const l=[];let p=0,m=0;for(;p<r.length&&m<c.length;){const v=r[p],b=c[m],w=o(v),E=o(b);w<E?(l.push(v),p++):w>E?(l.push(b),m++):(l.push(d(v,b)),p++,m++)}for(;p<r.length;)l.push(r[p]),p++;for(;m<c.length;)l.push(c[m]),m++;return l}e.joinCombine=D;function S(r,c){const o=new L.DisposableStore,d=r.createDecorationsCollection();return o.add((0,k.autorunOpts)({debugName:`Apply decorations from ${c.debugName}`},l=>{const p=c.read(l);d.set(p)})),o.add({dispose:()=>{d.clear()}}),o}e.applyObservableDecorations=S;function f(r,c){return r.appendChild(c),(0,L.toDisposable)(()=>{r.removeChild(c)})}e.appendRemoveOnDispose=f;class _ extends L.Disposable{get width(){return this._width}get height(){return this._height}constructor(c,o){super(),this.elementSizeObserver=this._register(new y.ElementSizeObserver(c,o)),this._width=(0,k.observableValue)(\"width\",this.elementSizeObserver.getWidth()),this._height=(0,k.observableValue)(\"height\",this.elementSizeObserver.getHeight()),this._register(this.elementSizeObserver.onDidChange(d=>(0,k.transaction)(l=>{this._width.set(this.elementSizeObserver.getWidth(),l),this._height.set(this.elementSizeObserver.getHeight(),l)})))}observe(c){this.elementSizeObserver.observe(c)}setAutomaticLayout(c){c?this.elementSizeObserver.startObserving():this.elementSizeObserver.stopObserving()}}e.ObservableElementSizeObserver=_;function g(r,c){let o=r.get(),d=o,l=o;const p=(0,k.observableValue)(\"animatedValue\",o);let m=-1;const v=300;let b;c.add((0,k.autorunHandleChanges)({createEmptyChangeSummary:()=>({animate:!1}),handleChange:(E,I)=>(E.didChange(r)&&(I.animate=I.animate||E.change),!0)},(E,I)=>{b!==void 0&&(cancelAnimationFrame(b),b=void 0),d=l,o=r.read(E),m=Date.now()-(I.animate?0:v),w()}));function w(){const E=Date.now()-m;l=Math.floor(C(E,d,o-d,v)),E<v?b=requestAnimationFrame(w):l=o,p.set(l,void 0)}return p}e.animatedObservable=g;function C(r,c,o,d){return r===d?c+o:o*(-Math.pow(2,-10*r/d)+1)+c}class s extends L.Disposable{constructor(c,o,d){super(),this._register(new n(c,d)),this._register(t(d,{height:o.actualHeight,top:o.actualTop}))}}e.ViewZoneOverlayWidget=s;class i{get afterLineNumber(){return this._afterLineNumber.get()}constructor(c,o){this._afterLineNumber=c,this.heightInPx=o,this.domNode=document.createElement(\"div\"),this._actualTop=(0,k.observableValue)(\"actualTop\",void 0),this._actualHeight=(0,k.observableValue)(\"actualHeight\",void 0),this.actualTop=this._actualTop,this.actualHeight=this._actualHeight,this.showInHiddenAreas=!0,this.onChange=this._afterLineNumber,this.onDomNodeTop=d=>{this._actualTop.set(d,void 0)},this.onComputedHeight=d=>{this._actualHeight.set(d,void 0)}}}e.PlaceholderViewZone=i;class n{constructor(c,o){this._editor=c,this._domElement=o,this._overlayWidgetId=`managedOverlayWidget-${n._counter++}`,this._overlayWidget={getId:()=>this._overlayWidgetId,getDomNode:()=>this._domElement,getPosition:()=>null},this._editor.addOverlayWidget(this._overlayWidget)}dispose(){this._editor.removeOverlayWidget(this._overlayWidget)}}e.ManagedOverlayWidget=n,n._counter=0;function t(r,c){return(0,k.autorun)(o=>{for(let[d,l]of Object.entries(c))l&&typeof l==\"object\"&&\"read\"in l&&(l=l.read(o)),typeof l==\"number\"&&(l=`${l}px`),d=d.replace(/[A-Z]/g,p=>\"-\"+p.toLowerCase()),r.style[d]=l})}e.applyStyle=t;function a(r,c){return u([r],c),r}e.readHotReloadableExport=a;function u(r,c){const o=globalThis.$hotReload_deprecateExports;if(!o)return;(0,k.observableSignalFromEvent)(\"reload\",l=>{function p(m,v){return[...Object.values(m)].some(b=>r.includes(b))?(l(void 0),!0):!1}return o.add(p),{dispose(){o.delete(p)}}}).read(c)}e.observeHotReloadableExports=u;function h(r,c,o){const d=new L.DisposableStore,l=[];return d.add((0,k.autorun)(p=>{const m=c.read(p),v=new Map,b=new Map;o&&o(!0),r.changeViewZones(w=>{for(const E of l)w.removeZone(E);l.length=0;for(const E of m){const I=w.addZone(E);l.push(I),v.set(E,I)}}),o&&o(!1),d.add((0,k.autorunHandleChanges)({createEmptyChangeSummary(){return[]},handleChange(w,E){const I=b.get(w.changedObservable);return I!==void 0&&E.push(I),!0}},(w,E)=>{for(const I of m)I.onChange&&(b.set(I.onChange,v.get(I)),I.onChange.read(w));o&&o(!0),r.changeViewZones(I=>{for(const M of E)I.layoutZone(M)}),o&&o(!1)}))})),d.add({dispose(){o&&o(!0),r.changeViewZones(p=>{for(const m of l)p.removeZone(m)}),o&&o(!1)}}),d}e.applyViewZones=h}),define(ne[271],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.diffEditorDefaultOptions=void 0,e.diffEditorDefaultOptions={enableSplitViewResizing:!0,splitViewDefaultRatio:.5,renderSideBySide:!0,renderMarginRevertIcon:!0,maxComputationTime:5e3,maxFileSize:50,ignoreTrimWhitespace:!0,renderIndicators:!0,originalEditable:!1,diffCodeLens:!1,renderOverviewRuler:!0,diffWordWrap:\"inherit\",diffAlgorithm:\"advanced\",accessibilityVerbose:!1,experimental:{showMoves:!1,showEmptyDecorations:!0},hideUnchangedRegions:{enabled:!1,contextLineCount:3,minimumLineCount:3,revealLineCount:20},isInEmbeddedEditor:!1,onlyShowAccessibleDiffViewer:!1,renderSideBySideInlineBreakpoint:900,useInlineViewWhenSpaceIsLimited:!0}}),define(ne[145],se([1,0,6]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditorZoom=void 0,e.EditorZoom=new class{constructor(){this._zoomLevel=0,this._onDidChangeZoomLevel=new L.Emitter,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event}getZoomLevel(){return this._zoomLevel}setZoomLevel(k){k=Math.min(Math.max(-5,k),20),this._zoomLevel!==k&&(this._zoomLevel=k,this._onDidChangeZoomLevel.fire(this._zoomLevel))}}}),define(ne[121],se([1,0,169]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CharacterSet=e.CharacterClassifier=void 0;class k{constructor(S){const f=(0,L.toUint8)(S);this._defaultValue=f,this._asciiMap=k._createAsciiMap(f),this._map=new Map}static _createAsciiMap(S){const f=new Uint8Array(256);return f.fill(S),f}set(S,f){const _=(0,L.toUint8)(f);S>=0&&S<256?this._asciiMap[S]=_:this._map.set(S,_)}get(S){return S>=0&&S<256?this._asciiMap[S]:this._map.get(S)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}e.CharacterClassifier=k;class y{constructor(){this._actual=new k(0)}add(S){this._actual.set(S,1)}has(S){return this._actual.get(S)===1}clear(){return this._actual.clear()}}e.CharacterSet=y}),define(ne[82],se([1,0,11]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CursorColumns=void 0;class k{static _nextVisibleColumn(D,S,f){return D===9?k.nextRenderTabStop(S,f):L.isFullWidthCharacter(D)||L.isEmojiImprecise(D)?S+2:S+1}static visibleColumnFromColumn(D,S,f){const _=Math.min(S-1,D.length),g=D.substring(0,_),C=new L.GraphemeIterator(g);let s=0;for(;!C.eol();){const i=L.getNextCodePoint(g,_,C.offset);C.nextGraphemeLength(),s=this._nextVisibleColumn(i,s,f)}return s}static columnFromVisibleColumn(D,S,f){if(S<=0)return 1;const _=D.length,g=new L.GraphemeIterator(D);let C=0,s=1;for(;!g.eol();){const i=L.getNextCodePoint(D,_,g.offset);g.nextGraphemeLength();const n=this._nextVisibleColumn(i,C,f),t=g.offset+1;if(n>=S){const a=S-C;return n-S<a?t:s}C=n,s=t}return _+1}static nextRenderTabStop(D,S){return D+S-D%S}static nextIndentTabStop(D,S){return D+S-D%S}static prevRenderTabStop(D,S){return Math.max(0,D-1-(D-1)%S)}static prevIndentTabStop(D,S){return Math.max(0,D-1-(D-1)%S)}}e.CursorColumns=k}),define(ne[122],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.countEOL=void 0;function L(k){let y=0,D=0,S=0,f=0;for(let _=0,g=k.length;_<g;_++){const C=k.charCodeAt(_);C===13?(y===0&&(D=_),y++,_+1<g&&k.charCodeAt(_+1)===10?(f|=2,_++):f|=3,S=_+1):C===10&&(f|=1,y===0&&(D=_),y++,S=_+1)}return y===0&&(D=k.length),[y,D,k.length-S,f]}e.countEOL=L}),define(ne[202],se([1,0,11,82]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.normalizeIndentation=void 0;function y(S,f,_){let g=0;for(let s=0;s<S.length;s++)S.charAt(s)===\"\t\"?g=k.CursorColumns.nextIndentTabStop(g,f):g++;let C=\"\";if(!_){const s=Math.floor(g/f);g=g%f;for(let i=0;i<s;i++)C+=\"\t\"}for(let s=0;s<g;s++)C+=\" \";return C}function D(S,f,_){let g=L.firstNonWhitespaceIndex(S);return g===-1&&(g=S.length),y(S.substring(0,g),f,_)+S.substring(g)}e.normalizeIndentation=D}),define(ne[90],se([1,0,9]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OffsetRangeSet=e.OffsetRange=void 0;class k{static addRange(S,f){let _=0;for(;_<f.length&&f[_].endExclusive<S.start;)_++;let g=_;for(;g<f.length&&f[g].start<=S.endExclusive;)g++;if(_===g)f.splice(_,0,S);else{const C=Math.min(S.start,f[_].start),s=Math.max(S.endExclusive,f[g-1].endExclusive);f.splice(_,g-_,new k(C,s))}}static tryCreate(S,f){if(!(S>f))return new k(S,f)}static ofLength(S){return new k(0,S)}constructor(S,f){if(this.start=S,this.endExclusive=f,S>f)throw new L.BugIndicatingError(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(S){return new k(this.start+S,this.endExclusive+S)}deltaStart(S){return new k(this.start+S,this.endExclusive)}deltaEnd(S){return new k(this.start,this.endExclusive+S)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}equals(S){return this.start===S.start&&this.endExclusive===S.endExclusive}containsRange(S){return this.start<=S.start&&S.endExclusive<=this.endExclusive}contains(S){return this.start<=S&&S<this.endExclusive}join(S){return new k(Math.min(this.start,S.start),Math.max(this.endExclusive,S.endExclusive))}intersect(S){const f=Math.max(this.start,S.start),_=Math.min(this.endExclusive,S.endExclusive);if(f<=_)return new k(f,_)}slice(S){return S.slice(this.start,this.endExclusive)}clip(S){if(this.isEmpty)throw new L.BugIndicatingError(`Invalid clipping range: ${this.toString()}`);return Math.max(this.start,Math.min(this.endExclusive-1,S))}clipCyclic(S){if(this.isEmpty)throw new L.BugIndicatingError(`Invalid clipping range: ${this.toString()}`);return S<this.start?this.endExclusive-(this.start-S)%this.length:S>=this.endExclusive?this.start+(S-this.start)%this.length:S}}e.OffsetRange=k;class y{constructor(){this._sortedRanges=[]}addRange(S){let f=0;for(;f<this._sortedRanges.length&&this._sortedRanges[f].endExclusive<S.start;)f++;let _=f;for(;_<this._sortedRanges.length&&this._sortedRanges[_].start<=S.endExclusive;)_++;if(f===_)this._sortedRanges.splice(f,0,S);else{const g=Math.min(S.start,this._sortedRanges[f].start),C=Math.max(S.endExclusive,this._sortedRanges[_-1].endExclusive);this._sortedRanges.splice(f,_-f,new k(g,C))}}toString(){return this._sortedRanges.map(S=>S.toString()).join(\", \")}intersectsStrict(S){let f=0;for(;f<this._sortedRanges.length&&this._sortedRanges[f].endExclusive<=S.start;)f++;return f<this._sortedRanges.length&&this._sortedRanges[f].start<S.endExclusive}intersectWithRange(S){const f=new y;for(const _ of this._sortedRanges){const g=_.intersect(S);g&&f.addRange(g)}return f}intersectWithRangeLength(S){return this.intersectWithRange(S).length}get length(){return this._sortedRanges.reduce((S,f)=>S+f.length,0)}}e.OffsetRangeSet=y}),define(ne[12],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Position=void 0;class L{constructor(y,D){this.lineNumber=y,this.column=D}with(y=this.lineNumber,D=this.column){return y===this.lineNumber&&D===this.column?this:new L(y,D)}delta(y=0,D=0){return this.with(this.lineNumber+y,this.column+D)}equals(y){return L.equals(this,y)}static equals(y,D){return!y&&!D?!0:!!y&&!!D&&y.lineNumber===D.lineNumber&&y.column===D.column}isBefore(y){return L.isBefore(this,y)}static isBefore(y,D){return y.lineNumber<D.lineNumber?!0:D.lineNumber<y.lineNumber?!1:y.column<D.column}isBeforeOrEqual(y){return L.isBeforeOrEqual(this,y)}static isBeforeOrEqual(y,D){return y.lineNumber<D.lineNumber?!0:D.lineNumber<y.lineNumber?!1:y.column<=D.column}static compare(y,D){const S=y.lineNumber|0,f=D.lineNumber|0;if(S===f){const _=y.column|0,g=D.column|0;return _-g}return S-f}clone(){return new L(this.lineNumber,this.column)}toString(){return\"(\"+this.lineNumber+\",\"+this.column+\")\"}static lift(y){return new L(y.lineNumber,y.column)}static isIPosition(y){return y&&typeof y.lineNumber==\"number\"&&typeof y.column==\"number\"}}e.Position=L}),define(ne[272],se([1,0,12]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewUserInputEvents=void 0;class k{constructor(D){this.onKeyDown=null,this.onKeyUp=null,this.onContextMenu=null,this.onMouseMove=null,this.onMouseLeave=null,this.onMouseDown=null,this.onMouseUp=null,this.onMouseDrag=null,this.onMouseDrop=null,this.onMouseDropCanceled=null,this.onMouseWheel=null,this._coordinatesConverter=D}emitKeyDown(D){var S;(S=this.onKeyDown)===null||S===void 0||S.call(this,D)}emitKeyUp(D){var S;(S=this.onKeyUp)===null||S===void 0||S.call(this,D)}emitContextMenu(D){var S;(S=this.onContextMenu)===null||S===void 0||S.call(this,this._convertViewToModelMouseEvent(D))}emitMouseMove(D){var S;(S=this.onMouseMove)===null||S===void 0||S.call(this,this._convertViewToModelMouseEvent(D))}emitMouseLeave(D){var S;(S=this.onMouseLeave)===null||S===void 0||S.call(this,this._convertViewToModelMouseEvent(D))}emitMouseDown(D){var S;(S=this.onMouseDown)===null||S===void 0||S.call(this,this._convertViewToModelMouseEvent(D))}emitMouseUp(D){var S;(S=this.onMouseUp)===null||S===void 0||S.call(this,this._convertViewToModelMouseEvent(D))}emitMouseDrag(D){var S;(S=this.onMouseDrag)===null||S===void 0||S.call(this,this._convertViewToModelMouseEvent(D))}emitMouseDrop(D){var S;(S=this.onMouseDrop)===null||S===void 0||S.call(this,this._convertViewToModelMouseEvent(D))}emitMouseDropCanceled(){var D;(D=this.onMouseDropCanceled)===null||D===void 0||D.call(this)}emitMouseWheel(D){var S;(S=this.onMouseWheel)===null||S===void 0||S.call(this,D)}_convertViewToModelMouseEvent(D){return D.target?{event:D.event,target:this._convertViewToModelMouseTarget(D.target)}:D}_convertViewToModelMouseTarget(D){return k.convertViewToModelMouseTarget(D,this._coordinatesConverter)}static convertViewToModelMouseTarget(D,S){const f=Object.assign({},D);return f.position&&(f.position=S.convertViewPositionToModelPosition(f.position)),f.range&&(f.range=S.convertViewRangeToModelRange(f.range)),(f.type===5||f.type===8)&&(f.detail=this.convertViewToModelViewZoneData(f.detail,S)),f}static convertViewToModelViewZoneData(D,S){return{viewZoneId:D.viewZoneId,positionBefore:D.positionBefore?S.convertViewPositionToModelPosition(D.positionBefore):D.positionBefore,positionAfter:D.positionAfter?S.convertViewPositionToModelPosition(D.positionAfter):D.positionAfter,position:S.convertViewPositionToModelPosition(D.position),afterLineNumber:S.convertViewPositionToModelPosition(new L.Position(D.afterLineNumber,1)).lineNumber}}}e.ViewUserInputEvents=k}),define(ne[5],se([1,0,12]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Range=void 0;class k{constructor(D,S,f,_){D>f||D===f&&S>_?(this.startLineNumber=f,this.startColumn=_,this.endLineNumber=D,this.endColumn=S):(this.startLineNumber=D,this.startColumn=S,this.endLineNumber=f,this.endColumn=_)}isEmpty(){return k.isEmpty(this)}static isEmpty(D){return D.startLineNumber===D.endLineNumber&&D.startColumn===D.endColumn}containsPosition(D){return k.containsPosition(this,D)}static containsPosition(D,S){return!(S.lineNumber<D.startLineNumber||S.lineNumber>D.endLineNumber||S.lineNumber===D.startLineNumber&&S.column<D.startColumn||S.lineNumber===D.endLineNumber&&S.column>D.endColumn)}static strictContainsPosition(D,S){return!(S.lineNumber<D.startLineNumber||S.lineNumber>D.endLineNumber||S.lineNumber===D.startLineNumber&&S.column<=D.startColumn||S.lineNumber===D.endLineNumber&&S.column>=D.endColumn)}containsRange(D){return k.containsRange(this,D)}static containsRange(D,S){return!(S.startLineNumber<D.startLineNumber||S.endLineNumber<D.startLineNumber||S.startLineNumber>D.endLineNumber||S.endLineNumber>D.endLineNumber||S.startLineNumber===D.startLineNumber&&S.startColumn<D.startColumn||S.endLineNumber===D.endLineNumber&&S.endColumn>D.endColumn)}strictContainsRange(D){return k.strictContainsRange(this,D)}static strictContainsRange(D,S){return!(S.startLineNumber<D.startLineNumber||S.endLineNumber<D.startLineNumber||S.startLineNumber>D.endLineNumber||S.endLineNumber>D.endLineNumber||S.startLineNumber===D.startLineNumber&&S.startColumn<=D.startColumn||S.endLineNumber===D.endLineNumber&&S.endColumn>=D.endColumn)}plusRange(D){return k.plusRange(this,D)}static plusRange(D,S){let f,_,g,C;return S.startLineNumber<D.startLineNumber?(f=S.startLineNumber,_=S.startColumn):S.startLineNumber===D.startLineNumber?(f=S.startLineNumber,_=Math.min(S.startColumn,D.startColumn)):(f=D.startLineNumber,_=D.startColumn),S.endLineNumber>D.endLineNumber?(g=S.endLineNumber,C=S.endColumn):S.endLineNumber===D.endLineNumber?(g=S.endLineNumber,C=Math.max(S.endColumn,D.endColumn)):(g=D.endLineNumber,C=D.endColumn),new k(f,_,g,C)}intersectRanges(D){return k.intersectRanges(this,D)}static intersectRanges(D,S){let f=D.startLineNumber,_=D.startColumn,g=D.endLineNumber,C=D.endColumn;const s=S.startLineNumber,i=S.startColumn,n=S.endLineNumber,t=S.endColumn;return f<s?(f=s,_=i):f===s&&(_=Math.max(_,i)),g>n?(g=n,C=t):g===n&&(C=Math.min(C,t)),f>g||f===g&&_>C?null:new k(f,_,g,C)}equalsRange(D){return k.equalsRange(this,D)}static equalsRange(D,S){return!D&&!S?!0:!!D&&!!S&&D.startLineNumber===S.startLineNumber&&D.startColumn===S.startColumn&&D.endLineNumber===S.endLineNumber&&D.endColumn===S.endColumn}getEndPosition(){return k.getEndPosition(this)}static getEndPosition(D){return new L.Position(D.endLineNumber,D.endColumn)}getStartPosition(){return k.getStartPosition(this)}static getStartPosition(D){return new L.Position(D.startLineNumber,D.startColumn)}toString(){return\"[\"+this.startLineNumber+\",\"+this.startColumn+\" -> \"+this.endLineNumber+\",\"+this.endColumn+\"]\"}setEndPosition(D,S){return new k(this.startLineNumber,this.startColumn,D,S)}setStartPosition(D,S){return new k(D,S,this.endLineNumber,this.endColumn)}collapseToStart(){return k.collapseToStart(this)}static collapseToStart(D){return new k(D.startLineNumber,D.startColumn,D.startLineNumber,D.startColumn)}collapseToEnd(){return k.collapseToEnd(this)}static collapseToEnd(D){return new k(D.endLineNumber,D.endColumn,D.endLineNumber,D.endColumn)}delta(D){return new k(this.startLineNumber+D,this.startColumn,this.endLineNumber+D,this.endColumn)}static fromPositions(D,S=D){return new k(D.lineNumber,D.column,S.lineNumber,S.column)}static lift(D){return D?new k(D.startLineNumber,D.startColumn,D.endLineNumber,D.endColumn):null}static isIRange(D){return D&&typeof D.startLineNumber==\"number\"&&typeof D.startColumn==\"number\"&&typeof D.endLineNumber==\"number\"&&typeof D.endColumn==\"number\"}static areIntersectingOrTouching(D,S){return!(D.endLineNumber<S.startLineNumber||D.endLineNumber===S.startLineNumber&&D.endColumn<S.startColumn||S.endLineNumber<D.startLineNumber||S.endLineNumber===D.startLineNumber&&S.endColumn<D.startColumn)}static areIntersecting(D,S){return!(D.endLineNumber<S.startLineNumber||D.endLineNumber===S.startLineNumber&&D.endColumn<=S.startColumn||S.endLineNumber<D.startLineNumber||S.endLineNumber===D.startLineNumber&&S.endColumn<=D.startColumn)}static compareRangesUsingStarts(D,S){if(D&&S){const g=D.startLineNumber|0,C=S.startLineNumber|0;if(g===C){const s=D.startColumn|0,i=S.startColumn|0;if(s===i){const n=D.endLineNumber|0,t=S.endLineNumber|0;if(n===t){const a=D.endColumn|0,u=S.endColumn|0;return a-u}return n-t}return s-i}return g-C}return(D?1:0)-(S?1:0)}static compareRangesUsingEnds(D,S){return D.endLineNumber===S.endLineNumber?D.endColumn===S.endColumn?D.startLineNumber===S.startLineNumber?D.startColumn-S.startColumn:D.startLineNumber-S.startLineNumber:D.endColumn-S.endColumn:D.endLineNumber-S.endLineNumber}static spansMultipleLines(D){return D.endLineNumber>D.startLineNumber}toJSON(){return this}}e.Range=k}),define(ne[273],se([1,0,11,5]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PagedScreenReaderStrategy=e.TextAreaState=e._debugComposition=void 0,e._debugComposition=!1;class y{constructor(f,_,g,C,s){this.value=f,this.selectionStart=_,this.selectionEnd=g,this.selection=C,this.newlineCountBeforeSelection=s}toString(){return`[ <${this.value}>, selectionStart: ${this.selectionStart}, selectionEnd: ${this.selectionEnd}]`}static readFromTextArea(f,_){const g=f.getValue(),C=f.getSelectionStart(),s=f.getSelectionEnd();let i;if(_){const n=g.substring(0,C),t=_.value.substring(0,_.selectionStart);n===t&&(i=_.newlineCountBeforeSelection)}return new y(g,C,s,null,i)}collapseSelection(){return this.selectionStart===this.value.length?this:new y(this.value,this.value.length,this.value.length,null,void 0)}writeToTextArea(f,_,g){e._debugComposition&&console.log(`writeToTextArea ${f}: ${this.toString()}`),_.setValue(f,this.value),g&&_.setSelectionRange(f,this.selectionStart,this.selectionEnd)}deduceEditorPosition(f){var _,g,C,s,i,n,t,a;if(f<=this.selectionStart){const r=this.value.substring(f,this.selectionStart);return this._finishDeduceEditorPosition((g=(_=this.selection)===null||_===void 0?void 0:_.getStartPosition())!==null&&g!==void 0?g:null,r,-1)}if(f>=this.selectionEnd){const r=this.value.substring(this.selectionEnd,f);return this._finishDeduceEditorPosition((s=(C=this.selection)===null||C===void 0?void 0:C.getEndPosition())!==null&&s!==void 0?s:null,r,1)}const u=this.value.substring(this.selectionStart,f);if(u.indexOf(String.fromCharCode(8230))===-1)return this._finishDeduceEditorPosition((n=(i=this.selection)===null||i===void 0?void 0:i.getStartPosition())!==null&&n!==void 0?n:null,u,1);const h=this.value.substring(f,this.selectionEnd);return this._finishDeduceEditorPosition((a=(t=this.selection)===null||t===void 0?void 0:t.getEndPosition())!==null&&a!==void 0?a:null,h,-1)}_finishDeduceEditorPosition(f,_,g){let C=0,s=-1;for(;(s=_.indexOf(`\n`,s+1))!==-1;)C++;return[f,g*_.length,C]}static deduceInput(f,_,g){if(!f)return{text:\"\",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};e._debugComposition&&(console.log(\"------------------------deduceInput\"),console.log(`PREVIOUS STATE: ${f.toString()}`),console.log(`CURRENT STATE: ${_.toString()}`));const C=Math.min(L.commonPrefixLength(f.value,_.value),f.selectionStart,_.selectionStart),s=Math.min(L.commonSuffixLength(f.value,_.value),f.value.length-f.selectionEnd,_.value.length-_.selectionEnd),i=f.value.substring(C,f.value.length-s),n=_.value.substring(C,_.value.length-s),t=f.selectionStart-C,a=f.selectionEnd-C,u=_.selectionStart-C,h=_.selectionEnd-C;if(e._debugComposition&&(console.log(`AFTER DIFFING PREVIOUS STATE: <${i}>, selectionStart: ${t}, selectionEnd: ${a}`),console.log(`AFTER DIFFING CURRENT STATE: <${n}>, selectionStart: ${u}, selectionEnd: ${h}`)),u===h){const c=f.selectionStart-C;return e._debugComposition&&console.log(`REMOVE PREVIOUS: ${c} chars`),{text:n,replacePrevCharCnt:c,replaceNextCharCnt:0,positionDelta:0}}const r=a-t;return{text:n,replacePrevCharCnt:r,replaceNextCharCnt:0,positionDelta:0}}static deduceAndroidCompositionInput(f,_){if(!f)return{text:\"\",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};if(e._debugComposition&&(console.log(\"------------------------deduceAndroidCompositionInput\"),console.log(`PREVIOUS STATE: ${f.toString()}`),console.log(`CURRENT STATE: ${_.toString()}`)),f.value===_.value)return{text:\"\",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:_.selectionEnd-f.selectionEnd};const g=Math.min(L.commonPrefixLength(f.value,_.value),f.selectionEnd),C=Math.min(L.commonSuffixLength(f.value,_.value),f.value.length-f.selectionEnd),s=f.value.substring(g,f.value.length-C),i=_.value.substring(g,_.value.length-C),n=f.selectionStart-g,t=f.selectionEnd-g,a=_.selectionStart-g,u=_.selectionEnd-g;return e._debugComposition&&(console.log(`AFTER DIFFING PREVIOUS STATE: <${s}>, selectionStart: ${n}, selectionEnd: ${t}`),console.log(`AFTER DIFFING CURRENT STATE: <${i}>, selectionStart: ${a}, selectionEnd: ${u}`)),{text:i,replacePrevCharCnt:t,replaceNextCharCnt:s.length-t,positionDelta:u-i.length}}}e.TextAreaState=y,y.EMPTY=new y(\"\",0,0,null,void 0);class D{static _getPageOfLine(f,_){return Math.floor((f-1)/_)}static _getRangeForPage(f,_){const g=f*_,C=g+1,s=g+_;return new k.Range(C,1,s+1,1)}static fromEditorSelection(f,_,g,C){const i=D._getPageOfLine(_.startLineNumber,g),n=D._getRangeForPage(i,g),t=D._getPageOfLine(_.endLineNumber,g),a=D._getRangeForPage(t,g);let u=n.intersectRanges(new k.Range(1,1,_.startLineNumber,_.startColumn));if(C&&f.getValueLengthInRange(u,1)>500){const p=f.modifyPosition(u.getEndPosition(),-500);u=k.Range.fromPositions(p,u.getEndPosition())}const h=f.getValueInRange(u,1),r=f.getLineCount(),c=f.getLineMaxColumn(r);let o=a.intersectRanges(new k.Range(_.endLineNumber,_.endColumn,r,c));if(C&&f.getValueLengthInRange(o,1)>500){const p=f.modifyPosition(o.getStartPosition(),500);o=k.Range.fromPositions(o.getStartPosition(),p)}const d=f.getValueInRange(o,1);let l;if(i===t||i+1===t)l=f.getValueInRange(_,1);else{const p=n.intersectRanges(_),m=a.intersectRanges(_);l=f.getValueInRange(p,1)+String.fromCharCode(8230)+f.getValueInRange(m,1)}return C&&l.length>2*500&&(l=l.substring(0,500)+String.fromCharCode(8230)+l.substring(l.length-500,l.length)),new y(h+l+d,h.length,h.length+l.length,_,u.endLineNumber-u.startLineNumber)}}e.PagedScreenReaderStrategy=D}),define(ne[483],se([1,0,14,19,9,46,12,5]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OutlineModel=e.OutlineGroup=e.OutlineElement=e.TreeElement=void 0;class _{remove(){var n;(n=this.parent)===null||n===void 0||n.children.delete(this.id)}static findId(n,t){let a;typeof n==\"string\"?a=`${t.id}/${n}`:(a=`${t.id}/${n.name}`,t.children.get(a)!==void 0&&(a=`${t.id}/${n.name}_${n.range.startLineNumber}_${n.range.startColumn}`));let u=a;for(let h=0;t.children.get(u)!==void 0;h++)u=`${a}_${h}`;return u}static empty(n){return n.children.size===0}}e.TreeElement=_;class g extends _{constructor(n,t,a){super(),this.id=n,this.parent=t,this.symbol=a,this.children=new Map}}e.OutlineElement=g;class C extends _{constructor(n,t,a,u){super(),this.id=n,this.parent=t,this.label=a,this.order=u,this.children=new Map}}e.OutlineGroup=C;class s extends _{static create(n,t,a){const u=new k.CancellationTokenSource(a),h=new s(t.uri),r=n.ordered(t),c=r.map((d,l)=>{var p;const m=_.findId(`provider_${l}`,h),v=new C(m,h,(p=d.displayName)!==null&&p!==void 0?p:\"Unknown Outline Provider\",l);return Promise.resolve(d.provideDocumentSymbols(t,u.token)).then(b=>{for(const w of b||[])s._makeOutlineElement(w,v);return v},b=>((0,y.onUnexpectedExternalError)(b),v)).then(b=>{_.empty(b)?b.remove():h._groups.set(m,b)})}),o=n.onDidChange(()=>{const d=n.ordered(t);(0,L.equals)(d,r)||u.cancel()});return Promise.all(c).then(()=>u.token.isCancellationRequested&&!a.isCancellationRequested?s.create(n,t,a):h._compact()).finally(()=>{o.dispose()})}static _makeOutlineElement(n,t){const a=_.findId(n,t),u=new g(a,t,n);if(n.children)for(const h of n.children)s._makeOutlineElement(h,u);t.children.set(u.id,u)}constructor(n){super(),this.uri=n,this.id=\"root\",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id=\"root\",this.parent=void 0}_compact(){let n=0;for(const[t,a]of this._groups)a.children.size===0?this._groups.delete(t):n+=1;if(n!==1)this.children=this._groups;else{const t=D.Iterable.first(this._groups.values());for(const[,a]of t.children)a.parent=this,this.children.set(a.id,a)}return this}getTopLevelSymbols(){const n=[];for(const t of this.children.values())t instanceof g?n.push(t.symbol):n.push(...D.Iterable.map(t.children.values(),a=>a.symbol));return n.sort((t,a)=>f.Range.compareRangesUsingStarts(t.range,a.range))}asListOfDocumentSymbols(){const n=this.getTopLevelSymbols(),t=[];return s._flattenDocumentSymbols(t,n,\"\"),t.sort((a,u)=>S.Position.compare(f.Range.getStartPosition(a.range),f.Range.getStartPosition(u.range))||S.Position.compare(f.Range.getEndPosition(u.range),f.Range.getEndPosition(a.range)))}static _flattenDocumentSymbols(n,t,a){for(const u of t)n.push({kind:u.kind,tags:u.tags,name:u.name,detail:u.detail,containerName:u.containerName||a,range:u.range,selectionRange:u.selectionRange,children:void 0}),u.children&&s._flattenDocumentSymbols(n,u.children,u.name)}}e.OutlineModel=s}),define(ne[73],se([1,0,5]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditOperation=void 0;class k{static insert(D,S){return{range:new L.Range(D.lineNumber,D.column,D.lineNumber,D.column),text:S,forceMoveMarkers:!0}}static delete(D){return{range:D,text:null}}static replace(D,S){return{range:D,text:S}}static replaceMove(D,S){return{range:D,text:S,forceMoveMarkers:!0}}}e.EditOperation=k}),define(ne[484],se([1,0,11,73,5]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.trimTrailingWhitespace=e.TrimTrailingWhitespaceCommand=void 0;class D{constructor(_,g){this._selection=_,this._cursors=g,this._selectionId=null}getEditOperations(_,g){const C=S(_,this._cursors);for(let s=0,i=C.length;s<i;s++){const n=C[s];g.addEditOperation(n.range,n.text)}this._selectionId=g.trackSelection(this._selection)}computeCursorState(_,g){return g.getTrackedSelection(this._selectionId)}}e.TrimTrailingWhitespaceCommand=D;function S(f,_){_.sort((n,t)=>n.lineNumber===t.lineNumber?n.column-t.column:n.lineNumber-t.lineNumber);for(let n=_.length-2;n>=0;n--)_[n].lineNumber===_[n+1].lineNumber&&_.splice(n,1);const g=[];let C=0,s=0;const i=_.length;for(let n=1,t=f.getLineCount();n<=t;n++){const a=f.getLineContent(n),u=a.length+1;let h=0;if(s<i&&_[s].lineNumber===n&&(h=_[s].column,s++,h===u)||a.length===0)continue;const r=L.lastNonWhitespaceIndex(a);let c=0;if(r===-1)c=1;else if(r!==a.length-1)c=r+2;else continue;c=Math.max(h,c),g[C++]=k.EditOperation.delete(new y.Range(n,c,n,u))}return g}e.trimTrailingWhitespace=S}),define(ne[66],se([1,0,9,90,5]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LineRange=void 0;class D{static fromRange(f){return new D(f.startLineNumber,f.endLineNumber)}static subtract(f,_){return _?f.startLineNumber<_.startLineNumber&&_.endLineNumberExclusive<f.endLineNumberExclusive?[new D(f.startLineNumber,_.startLineNumber),new D(_.endLineNumberExclusive,f.endLineNumberExclusive)]:_.startLineNumber<=f.startLineNumber&&f.endLineNumberExclusive<=_.endLineNumberExclusive?[]:_.endLineNumberExclusive<f.endLineNumberExclusive?[new D(Math.max(_.endLineNumberExclusive,f.startLineNumber),f.endLineNumberExclusive)]:[new D(f.startLineNumber,Math.min(_.startLineNumber,f.endLineNumberExclusive))]:[f]}static joinMany(f){if(f.length===0)return[];let _=f[0];for(let g=1;g<f.length;g++)_=this.join(_,f[g]);return _}static join(f,_){if(f.length===0)return _;if(_.length===0)return f;const g=[];let C=0,s=0,i=null;for(;C<f.length||s<_.length;){let n=null;if(C<f.length&&s<_.length){const t=f[C],a=_[s];t.startLineNumber<a.startLineNumber?(n=t,C++):(n=a,s++)}else C<f.length?(n=f[C],C++):(n=_[s],s++);i===null?i=n:i.endLineNumberExclusive>=n.startLineNumber?i=new D(i.startLineNumber,Math.max(i.endLineNumberExclusive,n.endLineNumberExclusive)):(g.push(i),i=n)}return i!==null&&g.push(i),g}static ofLength(f,_){return new D(f,f+_)}static deserialize(f){return new D(f[0],f[1])}constructor(f,_){if(f>_)throw new L.BugIndicatingError(`startLineNumber ${f} cannot be after endLineNumberExclusive ${_}`);this.startLineNumber=f,this.endLineNumberExclusive=_}contains(f){return this.startLineNumber<=f&&f<this.endLineNumberExclusive}get isEmpty(){return this.startLineNumber===this.endLineNumberExclusive}delta(f){return new D(this.startLineNumber+f,this.endLineNumberExclusive+f)}deltaLength(f){return new D(this.startLineNumber,this.endLineNumberExclusive+f)}get length(){return this.endLineNumberExclusive-this.startLineNumber}join(f){return new D(Math.min(this.startLineNumber,f.startLineNumber),Math.max(this.endLineNumberExclusive,f.endLineNumberExclusive))}toString(){return`[${this.startLineNumber},${this.endLineNumberExclusive})`}intersect(f){const _=Math.max(this.startLineNumber,f.startLineNumber),g=Math.min(this.endLineNumberExclusive,f.endLineNumberExclusive);if(_<=g)return new D(_,g)}intersectsStrict(f){return this.startLineNumber<f.endLineNumberExclusive&&f.startLineNumber<this.endLineNumberExclusive}overlapOrTouch(f){return this.startLineNumber<=f.endLineNumberExclusive&&f.startLineNumber<=this.endLineNumberExclusive}equals(f){return this.startLineNumber===f.startLineNumber&&this.endLineNumberExclusive===f.endLineNumberExclusive}toInclusiveRange(){return this.isEmpty?null:new y.Range(this.startLineNumber,1,this.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER)}toExclusiveRange(){return new y.Range(this.startLineNumber,1,this.endLineNumberExclusive,1)}mapToLineArray(f){const _=[];for(let g=this.startLineNumber;g<this.endLineNumberExclusive;g++)_.push(f(g));return _}forEach(f){for(let _=this.startLineNumber;_<this.endLineNumberExclusive;_++)f(_)}serialize(){return[this.startLineNumber,this.endLineNumberExclusive]}includes(f){return this.startLineNumber<=f&&f<this.endLineNumberExclusive}toOffsetRange(){return new k.OffsetRange(this.startLineNumber-1,this.endLineNumberExclusive-1)}}e.LineRange=D}),define(ne[274],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RGBA8=void 0;class L{constructor(y,D,S,f){this._rgba8Brand=void 0,this.r=L._clamp(y),this.g=L._clamp(D),this.b=L._clamp(S),this.a=L._clamp(f)}equals(y){return this.r===y.r&&this.g===y.g&&this.b===y.b&&this.a===y.a}static _clamp(y){return y<0?0:y>255?255:y|0}}e.RGBA8=L,L.Empty=new L(0,0,0,0)}),define(ne[24],se([1,0,12,5]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Selection=void 0;class y extends k.Range{constructor(S,f,_,g){super(S,f,_,g),this.selectionStartLineNumber=S,this.selectionStartColumn=f,this.positionLineNumber=_,this.positionColumn=g}toString(){return\"[\"+this.selectionStartLineNumber+\",\"+this.selectionStartColumn+\" -> \"+this.positionLineNumber+\",\"+this.positionColumn+\"]\"}equalsSelection(S){return y.selectionsEqual(this,S)}static selectionsEqual(S,f){return S.selectionStartLineNumber===f.selectionStartLineNumber&&S.selectionStartColumn===f.selectionStartColumn&&S.positionLineNumber===f.positionLineNumber&&S.positionColumn===f.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(S,f){return this.getDirection()===0?new y(this.startLineNumber,this.startColumn,S,f):new y(S,f,this.startLineNumber,this.startColumn)}getPosition(){return new L.Position(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new L.Position(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(S,f){return this.getDirection()===0?new y(S,f,this.endLineNumber,this.endColumn):new y(this.endLineNumber,this.endColumn,S,f)}static fromPositions(S,f=S){return new y(S.lineNumber,S.column,f.lineNumber,f.column)}static fromRange(S,f){return f===0?new y(S.startLineNumber,S.startColumn,S.endLineNumber,S.endColumn):new y(S.endLineNumber,S.endColumn,S.startLineNumber,S.startColumn)}static liftSelection(S){return new y(S.selectionStartLineNumber,S.selectionStartColumn,S.positionLineNumber,S.positionColumn)}static selectionsArrEqual(S,f){if(S&&!f||!S&&f)return!1;if(!S&&!f)return!0;if(S.length!==f.length)return!1;for(let _=0,g=S.length;_<g;_++)if(!this.selectionsEqual(S[_],f[_]))return!1;return!0}static isISelection(S){return S&&typeof S.selectionStartLineNumber==\"number\"&&typeof S.selectionStartColumn==\"number\"&&typeof S.positionLineNumber==\"number\"&&typeof S.positionColumn==\"number\"}static createWithDirection(S,f,_,g,C){return C===0?new y(S,f,_,g):new y(_,g,S,f)}}e.Selection=y}),define(ne[123],se([1,0,24]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ReplaceCommandThatPreservesSelection=e.ReplaceCommandWithOffsetCursorState=e.ReplaceCommandWithoutChangingPosition=e.ReplaceCommandThatSelectsText=e.ReplaceCommand=void 0;class k{constructor(g,C,s=!1){this._range=g,this._text=C,this.insertsAutoWhitespace=s}getEditOperations(g,C){C.addTrackedEditOperation(this._range,this._text)}computeCursorState(g,C){const i=C.getInverseEditOperations()[0].range;return L.Selection.fromPositions(i.getEndPosition())}}e.ReplaceCommand=k;class y{constructor(g,C){this._range=g,this._text=C}getEditOperations(g,C){C.addTrackedEditOperation(this._range,this._text)}computeCursorState(g,C){const i=C.getInverseEditOperations()[0].range;return L.Selection.fromRange(i,0)}}e.ReplaceCommandThatSelectsText=y;class D{constructor(g,C,s=!1){this._range=g,this._text=C,this.insertsAutoWhitespace=s}getEditOperations(g,C){C.addTrackedEditOperation(this._range,this._text)}computeCursorState(g,C){const i=C.getInverseEditOperations()[0].range;return L.Selection.fromPositions(i.getStartPosition())}}e.ReplaceCommandWithoutChangingPosition=D;class S{constructor(g,C,s,i,n=!1){this._range=g,this._text=C,this._columnDeltaOffset=i,this._lineNumberDeltaOffset=s,this.insertsAutoWhitespace=n}getEditOperations(g,C){C.addTrackedEditOperation(this._range,this._text)}computeCursorState(g,C){const i=C.getInverseEditOperations()[0].range;return L.Selection.fromPositions(i.getEndPosition().delta(this._lineNumberDeltaOffset,this._columnDeltaOffset))}}e.ReplaceCommandWithOffsetCursorState=S;class f{constructor(g,C,s,i=!1){this._range=g,this._text=C,this._initialSelection=s,this._forceMoveMarkers=i,this._selectionId=null}getEditOperations(g,C){C.addTrackedEditOperation(this._range,this._text,this._forceMoveMarkers),this._selectionId=C.trackSelection(this._initialSelection)}computeCursorState(g,C){return C.getTrackedSelection(this._selectionId)}}e.ReplaceCommandThatPreservesSelection=f}),define(ne[485],se([1,0,5,24]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CompositionSurroundSelectionCommand=e.SurroundSelectionCommand=void 0;class y{constructor(f,_,g){this._range=f,this._charBeforeSelection=_,this._charAfterSelection=g}getEditOperations(f,_){_.addTrackedEditOperation(new L.Range(this._range.startLineNumber,this._range.startColumn,this._range.startLineNumber,this._range.startColumn),this._charBeforeSelection),_.addTrackedEditOperation(new L.Range(this._range.endLineNumber,this._range.endColumn,this._range.endLineNumber,this._range.endColumn),this._charAfterSelection)}computeCursorState(f,_){const g=_.getInverseEditOperations(),C=g[0].range,s=g[1].range;return new k.Selection(C.endLineNumber,C.endColumn,s.endLineNumber,s.endColumn-this._charAfterSelection.length)}}e.SurroundSelectionCommand=y;class D{constructor(f,_,g){this._position=f,this._text=_,this._charAfter=g}getEditOperations(f,_){_.addTrackedEditOperation(new L.Range(this._position.lineNumber,this._position.column,this._position.lineNumber,this._position.column),this._text+this._charAfter)}computeCursorState(f,_){const C=_.getInverseEditOperations()[0].range;return new k.Selection(C.endLineNumber,C.startColumn,C.endLineNumber,C.endColumn-this._charAfter.length)}}e.CompositionSurroundSelectionCommand=D}),define(ne[175],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EDITOR_MODEL_DEFAULTS=void 0,e.EDITOR_MODEL_DEFAULTS={tabSize:4,indentSize:4,insertSpaces:!0,detectIndentation:!0,trimAutoWhitespace:!0,largeFileOptimizations:!0,bracketPairColorizationOptions:{enabled:!0,independentColorPoolPerBracketType:!1}}}),define(ne[146],se([1,0,121]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getMapForWordSeparators=e.WordCharacterClassifier=void 0;class k extends L.CharacterClassifier{constructor(S){super(0);for(let f=0,_=S.length;f<_;f++)this.set(S.charCodeAt(f),2);this.set(32,1),this.set(9,1)}}e.WordCharacterClassifier=k;function y(D){const S={};return f=>(S.hasOwnProperty(f)||(S[f]=D(f)),S[f])}e.getMapForWordSeparators=y(D=>new k(D))}),define(ne[147],se([1,0,46,64]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getWordAtText=e.ensureValidWordDefinition=e.DEFAULT_WORD_REGEXP=e.USUAL_WORD_SEPARATORS=void 0,e.USUAL_WORD_SEPARATORS=\"`~!@#$%^&*()-=+[{]}\\\\|;:'\\\",.<>/?\";function y(g=\"\"){let C=\"(-?\\\\d*\\\\.\\\\d\\\\w*)|([^\";for(const s of e.USUAL_WORD_SEPARATORS)g.indexOf(s)>=0||(C+=\"\\\\\"+s);return C+=\"\\\\s]+)\",new RegExp(C,\"g\")}e.DEFAULT_WORD_REGEXP=y();function D(g){let C=e.DEFAULT_WORD_REGEXP;if(g&&g instanceof RegExp)if(g.global)C=g;else{let s=\"g\";g.ignoreCase&&(s+=\"i\"),g.multiline&&(s+=\"m\"),g.unicode&&(s+=\"u\"),C=new RegExp(g.source,s)}return C.lastIndex=0,C}e.ensureValidWordDefinition=D;const S=new k.LinkedList;S.unshift({maxLen:1e3,windowSize:15,timeBudget:150});function f(g,C,s,i,n){if(n||(n=L.Iterable.first(S)),s.length>n.maxLen){let r=g-n.maxLen/2;return r<0?r=0:i+=r,s=s.substring(r,g+n.maxLen/2),f(g,C,s,i,n)}const t=Date.now(),a=g-1-i;let u=-1,h=null;for(let r=1;!(Date.now()-t>=n.timeBudget);r++){const c=a-n.windowSize*r;C.lastIndex=Math.max(0,c);const o=_(C,s,a,u);if(!o&&h||(h=o,c<=0))break;u=c}if(h){const r={word:h[0],startColumn:i+1+h.index,endColumn:i+1+h.index+h[0].length};return C.lastIndex=0,r}return null}e.getWordAtText=f;function _(g,C,s,i){let n;for(;n=g.exec(C);){const t=n.index||0;if(t<=s&&g.lastIndex>=s)return n;if(i>0&&t>i)return null}return null}}),define(ne[275],se([1,0,82]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AtomicTabMoveOperations=void 0;class k{static whitespaceVisibleColumn(D,S,f){const _=D.length;let g=0,C=-1,s=-1;for(let i=0;i<_;i++){if(i===S)return[C,s,g];switch(g%f===0&&(C=i,s=g),D.charCodeAt(i)){case 32:g+=1;break;case 9:g=L.CursorColumns.nextRenderTabStop(g,f);break;default:return[-1,-1,-1]}}return S===_?[C,s,g]:[-1,-1,-1]}static atomicPosition(D,S,f,_){const g=D.length,[C,s,i]=k.whitespaceVisibleColumn(D,S,f);if(i===-1)return-1;let n;switch(_){case 0:n=!0;break;case 1:n=!1;break;case 2:if(i%f===0)return S;n=i%f<=f/2;break}if(n){if(C===-1)return-1;let u=s;for(let h=C;h<g;++h){if(u===s+f)return C;switch(D.charCodeAt(h)){case 32:u+=1;break;case 9:u=L.CursorColumns.nextRenderTabStop(u,f);break;default:return-1}}return u===s+f?C:-1}const t=L.CursorColumns.nextRenderTabStop(i,f);let a=i;for(let u=S;u<g;u++){if(a===t)return u;switch(D.charCodeAt(u)){case 32:a+=1;break;case 9:a=L.CursorColumns.nextRenderTabStop(a,f);break;default:return-1}}return a===t?g:-1}}e.AtomicTabMoveOperations=k}),define(ne[486],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CursorContext=void 0;class L{constructor(y,D,S,f){this._cursorContextBrand=void 0,this.model=y,this.viewModel=D,this.coordinatesConverter=S,this.cursorConfig=f}}e.CursorContext=L}),define(ne[176],se([1,0,9,90]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DateTimeout=e.InfiniteTimeout=e.SequenceDiff=e.DiffAlgorithmResult=void 0;class y{static trivial(g,C){return new y([new D(new k.OffsetRange(0,g.length),new k.OffsetRange(0,C.length))],!1)}static trivialTimedOut(g,C){return new y([new D(new k.OffsetRange(0,g.length),new k.OffsetRange(0,C.length))],!0)}constructor(g,C){this.diffs=g,this.hitTimeout=C}}e.DiffAlgorithmResult=y;class D{constructor(g,C){this.seq1Range=g,this.seq2Range=C}reverse(){return new D(this.seq2Range,this.seq1Range)}toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}join(g){return new D(this.seq1Range.join(g.seq1Range),this.seq2Range.join(g.seq2Range))}delta(g){return g===0?this:new D(this.seq1Range.delta(g),this.seq2Range.delta(g))}}e.SequenceDiff=D;class S{isValid(){return!0}}e.InfiniteTimeout=S,S.instance=new S;class f{constructor(g){if(this.timeout=g,this.startTime=Date.now(),this.valid=!0,g<=0)throw new L.BugIndicatingError(\"timeout must be positive\")}isValid(){if(!(Date.now()-this.startTime<this.timeout)&&this.valid){this.valid=!1;debugger}return this.valid}}e.DateTimeout=f}),define(ne[487],se([1,0,90,176]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.shiftSequenceDiffs=e.joinSequenceDiffs=e.removeRandomMatches=e.removeRandomLineMatches=e.smoothenSequenceDiffs=e.optimizeSequenceDiffs=void 0;function y(s,i,n){let t=n;return t=_(s,i,t),t=g(s,i,t),t}e.optimizeSequenceDiffs=y;function D(s,i,n){const t=[];for(const a of n){const u=t[t.length-1];if(!u){t.push(a);continue}a.seq1Range.start-u.seq1Range.endExclusive<=2||a.seq2Range.start-u.seq2Range.endExclusive<=2?t[t.length-1]=new k.SequenceDiff(u.seq1Range.join(a.seq1Range),u.seq2Range.join(a.seq2Range)):t.push(a)}return t}e.smoothenSequenceDiffs=D;function S(s,i,n){let t=n;if(t.length===0)return t;let a=0,u;do{u=!1;const h=[t[0]];for(let r=1;r<t.length;r++){let d=function(p,m){const v=new L.OffsetRange(o.seq1Range.endExclusive,c.seq1Range.start);return s.getText(v).replace(/\\s/g,\"\").length<=4&&(p.seq1Range.length+p.seq2Range.length>5||m.seq1Range.length+m.seq2Range.length>5)};const c=t[r],o=h[h.length-1];d(o,c)?(u=!0,h[h.length-1]=h[h.length-1].join(c)):h.push(c)}t=h}while(a++<10&&u);return t}e.removeRandomLineMatches=S;function f(s,i,n){let t=n;if(t.length===0)return t;let a=0,u;do{u=!1;const h=[t[0]];for(let r=1;r<t.length;r++){let d=function(p,m){const v=new L.OffsetRange(o.seq1Range.endExclusive,c.seq1Range.start);if(s.countLinesIn(v)>5||v.length>500)return!1;const w=s.getText(v).trim();if(w.length>20||w.split(/\\r\\n|\\r|\\n/).length>1)return!1;const E=s.countLinesIn(p.seq1Range),I=p.seq1Range.length,M=i.countLinesIn(p.seq2Range),P=p.seq2Range.length,x=s.countLinesIn(m.seq1Range),T=m.seq1Range.length,A=i.countLinesIn(m.seq2Range),N=m.seq2Range.length,F=2*40+50;function O(W){return Math.min(W,F)}return Math.pow(Math.pow(O(E*40+I),1.5)+Math.pow(O(M*40+P),1.5),1.5)+Math.pow(Math.pow(O(x*40+T),1.5)+Math.pow(O(A*40+N),1.5),1.5)>Math.pow(Math.pow(F,1.5),1.5)*1.3};const c=t[r],o=h[h.length-1];d(o,c)?(u=!0,h[h.length-1]=h[h.length-1].join(c)):h.push(c)}t=h}while(a++<10&&u);for(let h=0;h<t.length;h++){const r=t[h];let c=r.seq1Range,o=r.seq2Range;const d=s.extendToFullLines(r.seq1Range),l=s.getText(new L.OffsetRange(d.start,r.seq1Range.start));l.length>0&&l.trim().length<=3&&r.seq1Range.length+r.seq2Range.length>100&&(c=r.seq1Range.deltaStart(-l.length),o=r.seq2Range.deltaStart(-l.length));const p=s.getText(new L.OffsetRange(r.seq1Range.endExclusive,d.endExclusive));p.length>0&&p.trim().length<=3&&r.seq1Range.length+r.seq2Range.length>150&&(c=c.deltaEnd(p.length),o=o.deltaEnd(p.length)),t[h]=new k.SequenceDiff(c,o)}return t}e.removeRandomMatches=f;function _(s,i,n){if(n.length===0)return n;const t=[];t.push(n[0]);for(let u=1;u<n.length;u++){const h=t[t.length-1];let r=n[u];if(r.seq1Range.isEmpty||r.seq2Range.isEmpty){const c=r.seq1Range.start-h.seq1Range.endExclusive;let o;for(o=1;o<=c&&!(s.getElement(r.seq1Range.start-o)!==s.getElement(r.seq1Range.endExclusive-o)||i.getElement(r.seq2Range.start-o)!==i.getElement(r.seq2Range.endExclusive-o));o++);if(o--,o===c){t[t.length-1]=new k.SequenceDiff(new L.OffsetRange(h.seq1Range.start,r.seq1Range.endExclusive-c),new L.OffsetRange(h.seq2Range.start,r.seq2Range.endExclusive-c));continue}r=r.delta(-o)}t.push(r)}const a=[];for(let u=0;u<t.length-1;u++){const h=t[u+1];let r=t[u];if(r.seq1Range.isEmpty||r.seq2Range.isEmpty){const c=h.seq1Range.start-r.seq1Range.endExclusive;let o;for(o=0;o<c&&!(s.getElement(r.seq1Range.start+o)!==s.getElement(r.seq1Range.endExclusive+o)||i.getElement(r.seq2Range.start+o)!==i.getElement(r.seq2Range.endExclusive+o));o++);if(o===c){t[u+1]=new k.SequenceDiff(new L.OffsetRange(r.seq1Range.start+c,h.seq1Range.endExclusive),new L.OffsetRange(r.seq2Range.start+c,h.seq2Range.endExclusive));continue}o>0&&(r=r.delta(o))}a.push(r)}return t.length>0&&a.push(t[t.length-1]),a}e.joinSequenceDiffs=_;function g(s,i,n){if(!s.getBoundaryScore||!i.getBoundaryScore)return n;for(let t=0;t<n.length;t++){const a=t>0?n[t-1]:void 0,u=n[t],h=t+1<n.length?n[t+1]:void 0,r=new L.OffsetRange(a?a.seq1Range.start+1:0,h?h.seq1Range.endExclusive-1:s.length),c=new L.OffsetRange(a?a.seq2Range.start+1:0,h?h.seq2Range.endExclusive-1:i.length);u.seq1Range.isEmpty?n[t]=C(u,s,i,r,c):u.seq2Range.isEmpty&&(n[t]=C(u.reverse(),i,s,c,r).reverse())}return n}e.shiftSequenceDiffs=g;function C(s,i,n,t,a){let h=1;for(;s.seq1Range.start-h>=t.start&&s.seq2Range.start-h>=a.start&&n.isStronglyEqual(s.seq2Range.start-h,s.seq2Range.endExclusive-h)&&h<100;)h++;h--;let r=0;for(;s.seq1Range.start+r<t.endExclusive&&s.seq2Range.endExclusive+r<a.endExclusive&&n.isStronglyEqual(s.seq2Range.start+r,s.seq2Range.endExclusive+r)&&r<100;)r++;if(h===0&&r===0)return s;let c=0,o=-1;for(let d=-h;d<=r;d++){const l=s.seq2Range.start+d,p=s.seq2Range.endExclusive+d,m=s.seq1Range.start+d,v=i.getBoundaryScore(m)+n.getBoundaryScore(l)+n.getBoundaryScore(p);v>o&&(o=v,c=d)}return s.delta(c)}}),define(ne[488],se([1,0,90,176]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MyersDiffAlgorithm=void 0;class y{compute(g,C,s=k.InfiniteTimeout.instance){if(g.length===0||C.length===0)return k.DiffAlgorithmResult.trivial(g,C);function i(d,l){for(;d<g.length&&l<C.length&&g.getElement(d)===C.getElement(l);)d++,l++;return d}let n=0;const t=new S;t.set(0,i(0,0));const a=new f;a.set(0,t.get(0)===0?null:new D(null,0,0,t.get(0)));let u=0;e:for(;;){if(n++,!s.isValid())return k.DiffAlgorithmResult.trivialTimedOut(g,C);const d=-Math.min(n,C.length+n%2),l=Math.min(n,g.length+n%2);for(u=d;u<=l;u+=2){const p=u===l?-1:t.get(u+1),m=u===d?-1:t.get(u-1)+1,v=Math.min(Math.max(p,m),g.length),b=v-u;if(v>g.length||b>C.length)continue;const w=i(v,b);t.set(u,w);const E=v===p?a.get(u+1):a.get(u-1);if(a.set(u,w!==v?new D(E,v,b,w-v):E),t.get(u)===g.length&&t.get(u)-u===C.length)break e}}let h=a.get(u);const r=[];let c=g.length,o=C.length;for(;;){const d=h?h.x+h.length:0,l=h?h.y+h.length:0;if((d!==c||l!==o)&&r.push(new k.SequenceDiff(new L.OffsetRange(d,c),new L.OffsetRange(l,o))),!h)break;c=h.x,o=h.y,h=h.prev}return r.reverse(),new k.DiffAlgorithmResult(r,!1)}}e.MyersDiffAlgorithm=y;class D{constructor(g,C,s,i){this.prev=g,this.x=C,this.y=s,this.length=i}}class S{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(g){return g<0?(g=-g-1,this.negativeArr[g]):this.positiveArr[g]}set(g,C){if(g<0){if(g=-g-1,g>=this.negativeArr.length){const s=this.negativeArr;this.negativeArr=new Int32Array(s.length*2),this.negativeArr.set(s)}this.negativeArr[g]=C}else{if(g>=this.positiveArr.length){const s=this.positiveArr;this.positiveArr=new Int32Array(s.length*2),this.positiveArr.set(s)}this.positiveArr[g]=C}}}class f{constructor(){this.positiveArr=[],this.negativeArr=[]}get(g){return g<0?(g=-g-1,this.negativeArr[g]):this.positiveArr[g]}set(g,C){g<0?(g=-g-1,this.negativeArr[g]=C):this.positiveArr[g]=C}}}),define(ne[489],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Array2D=void 0;class L{constructor(y,D){this.width=y,this.height=D,this.array=[],this.array=new Array(y*D)}get(y,D){return this.array[y+D*this.width]}set(y,D,S){this.array[y+D*this.width]=S}}e.Array2D=L}),define(ne[490],se([1,0,90,176,489]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DynamicProgrammingDiffing=void 0;class D{compute(f,_,g=k.InfiniteTimeout.instance,C){if(f.length===0||_.length===0)return k.DiffAlgorithmResult.trivial(f,_);const s=new y.Array2D(f.length,_.length),i=new y.Array2D(f.length,_.length),n=new y.Array2D(f.length,_.length);for(let o=0;o<f.length;o++)for(let d=0;d<_.length;d++){if(!g.isValid())return k.DiffAlgorithmResult.trivialTimedOut(f,_);const l=o===0?0:s.get(o-1,d),p=d===0?0:s.get(o,d-1);let m;f.getElement(o)===_.getElement(d)?(o===0||d===0?m=0:m=s.get(o-1,d-1),o>0&&d>0&&i.get(o-1,d-1)===3&&(m+=n.get(o-1,d-1)),m+=C?C(o,d):1):m=-1;const v=Math.max(l,p,m);if(v===m){const b=o>0&&d>0?n.get(o-1,d-1):0;n.set(o,d,b+1),i.set(o,d,3)}else v===l?(n.set(o,d,0),i.set(o,d,1)):v===p&&(n.set(o,d,0),i.set(o,d,2));s.set(o,d,v)}const t=[];let a=f.length,u=_.length;function h(o,d){(o+1!==a||d+1!==u)&&t.push(new k.SequenceDiff(new L.OffsetRange(o+1,a),new L.OffsetRange(d+1,u))),a=o,u=d}let r=f.length-1,c=_.length-1;for(;r>=0&&c>=0;)i.get(r,c)===3?(h(r,c),r--,c--):i.get(r,c)===1?r--:c--;return h(-1,-1),t.reverse(),new k.DiffAlgorithmResult(t,!1)}}e.DynamicProgrammingDiffing=D}),define(ne[109],se([1,0,66]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MovedText=e.SimpleLineRangeMapping=e.RangeMapping=e.LineRangeMapping=e.LinesDiff=void 0;class k{constructor(g,C,s){this.changes=g,this.moves=C,this.hitTimeout=s}}e.LinesDiff=k;class y{static inverse(g,C,s){const i=[];let n=1,t=1;for(const u of g){const h=new y(new L.LineRange(n,u.originalRange.startLineNumber),new L.LineRange(t,u.modifiedRange.startLineNumber),void 0);h.modifiedRange.isEmpty||i.push(h),n=u.originalRange.endLineNumberExclusive,t=u.modifiedRange.endLineNumberExclusive}const a=new y(new L.LineRange(n,C+1),new L.LineRange(t,s+1),void 0);return a.modifiedRange.isEmpty||i.push(a),i}constructor(g,C,s){this.originalRange=g,this.modifiedRange=C,this.innerChanges=s}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}get changedLineCount(){return Math.max(this.originalRange.length,this.modifiedRange.length)}flip(){var g;return new y(this.modifiedRange,this.originalRange,(g=this.innerChanges)===null||g===void 0?void 0:g.map(C=>C.flip()))}}e.LineRangeMapping=y;class D{constructor(g,C){this.originalRange=g,this.modifiedRange=C}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}flip(){return new D(this.modifiedRange,this.originalRange)}}e.RangeMapping=D;class S{constructor(g,C){this.original=g,this.modified=C}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new S(this.modified,this.original)}join(g){return new S(this.original.join(g.original),this.modified.join(g.modified))}}e.SimpleLineRangeMapping=S;class f{constructor(g,C){this.lineRangeMapping=g,this.changes=C}flip(){return new f(this.lineRangeMapping.flip(),this.changes.map(g=>g.flip()))}}e.MovedText=f}),define(ne[276],se([1,0,14,85,196,9,66,90,12,5,176,490,487,488,109]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.findFirstMonotonous=e.findLastMonotonous=e.LinesSliceCharSequence=e.LineSequence=e.getLineRangeMapping=e.lineRangeMappingFromRangeMappings=e.AdvancedLinesDiffComputer=void 0;class a{constructor(){this.dynamicProgrammingDiffing=new s.DynamicProgrammingDiffing,this.myersDiffingAlgorithm=new n.MyersDiffAlgorithm}computeDiff(R,K,G){if(R.length<=1&&(0,L.equals)(R,K,($,re)=>$===re))return new t.LinesDiff([],[],!1);if(R.length===1&&R[0].length===0||K.length===1&&K[0].length===0)return new t.LinesDiff([new t.LineRangeMapping(new S.LineRange(1,R.length+1),new S.LineRange(1,K.length+1),[new t.RangeMapping(new g.Range(1,1,R.length,R[0].length+1),new g.Range(1,1,K.length,K[0].length+1))])],[],!1);const Z=G.maxComputationTimeMs===0?C.InfiniteTimeout.instance:new C.DateTimeout(G.maxComputationTimeMs),J=!G.ignoreTrimWhitespace,X=new Map;function H($){let re=X.get($);return re===void 0&&(re=X.size,X.set($,re)),re}const B=R.map($=>H($.trim())),V=K.map($=>H($.trim())),Y=new v(B,R),ie=new v(V,K),ae=(()=>Y.length+ie.length<1700?this.dynamicProgrammingDiffing.compute(Y,ie,Z,($,re)=>R[$]===K[re]?K[re].length===0?.1:1+Math.log(1+K[re].length):.99):this.myersDiffingAlgorithm.compute(Y,ie))();let ce=ae.diffs,de=ae.hitTimeout;ce=(0,i.optimizeSequenceDiffs)(Y,ie,ce),ce=(0,i.removeRandomLineMatches)(Y,ie,ce);const he=[],ue=$=>{if(J)for(let re=0;re<$;re++){const oe=te+re,ge=q+re;if(R[oe]!==K[ge]){const ve=this.refineDiff(R,K,new C.SequenceDiff(new f.OffsetRange(oe,oe+1),new f.OffsetRange(ge,ge+1)),Z,J);for(const Se of ve.mappings)he.push(Se);ve.hitTimeout&&(de=!0)}}};let te=0,q=0;for(const $ of ce){(0,k.assertFn)(()=>$.seq1Range.start-te===$.seq2Range.start-q);const re=$.seq1Range.start-te;ue(re),te=$.seq1Range.endExclusive,q=$.seq2Range.endExclusive;const oe=this.refineDiff(R,K,$,Z,J);oe.hitTimeout&&(de=!0);for(const ge of oe.mappings)he.push(ge)}ue(R.length-te);const z=l(he,R,K);let ee=[];return G.computeMoves&&(ee=this.computeMoves(z,R,K,B,V,Z,J)),(0,k.assertFn)(()=>{function $(oe,ge){if(oe.lineNumber<1||oe.lineNumber>ge.length)return!1;const ve=ge[oe.lineNumber-1];return!(oe.column<1||oe.column>ve.length+1)}function re(oe,ge){return!(oe.startLineNumber<1||oe.startLineNumber>ge.length+1||oe.endLineNumberExclusive<1||oe.endLineNumberExclusive>ge.length+1)}for(const oe of z){if(!oe.innerChanges)return!1;for(const ge of oe.innerChanges)if(!($(ge.modifiedRange.getStartPosition(),K)&&$(ge.modifiedRange.getEndPosition(),K)&&$(ge.originalRange.getStartPosition(),R)&&$(ge.originalRange.getEndPosition(),R)))return!1;if(!re(oe.modifiedRange,K)||!re(oe.originalRange,R))return!1}return!0}),new t.LinesDiff(z,ee,de)}computeMoves(R,K,G,Z,J,X,H){const B=[],V=R.filter(z=>z.modifiedRange.isEmpty&&z.originalRange.length>=3).map(z=>new U(z.originalRange,K,z)),Y=new Set(R.filter(z=>z.originalRange.isEmpty&&z.modifiedRange.length>=3).map(z=>new U(z.modifiedRange,G,z))),ie=new Set;for(const z of V){let ee=-1,$;for(const re of Y){const oe=z.computeSimilarity(re);oe>ee&&(ee=oe,$=re)}if(ee>.9&&$&&(Y.delete($),B.push(new t.SimpleLineRangeMapping(z.range,$.range)),ie.add(z.source),ie.add($.source)),!X.isValid())return[]}const ae=new y.SetMap;for(const z of R)if(!ie.has(z))for(let ee=z.originalRange.startLineNumber;ee<z.originalRange.endLineNumberExclusive-2;ee++){const $=`${Z[ee-1]}:${Z[ee+1-1]}:${Z[ee+2-1]}`;ae.add($,{range:new S.LineRange(ee,ee+3)})}const ce=[];R.sort((0,L.compareBy)(z=>z.modifiedRange.startLineNumber,L.numberComparator));for(const z of R){if(ie.has(z))continue;let ee=[];for(let $=z.modifiedRange.startLineNumber;$<z.modifiedRange.endLineNumberExclusive-2;$++){const re=`${J[$-1]}:${J[$+1-1]}:${J[$+2-1]}`,oe=new S.LineRange($,$+3),ge=[];ae.forEach(re,({range:ve})=>{for(const Le of ee)if(Le.originalLineRange.endLineNumberExclusive+1===ve.endLineNumberExclusive&&Le.modifiedLineRange.endLineNumberExclusive+1===oe.endLineNumberExclusive){Le.originalLineRange=new S.LineRange(Le.originalLineRange.startLineNumber,ve.endLineNumberExclusive),Le.modifiedLineRange=new S.LineRange(Le.modifiedLineRange.startLineNumber,oe.endLineNumberExclusive),ge.push(Le);return}const Se={modifiedLineRange:oe,originalLineRange:ve};ce.push(Se),ge.push(Se)}),ee=ge}if(!X.isValid())return[]}ce.sort((0,L.reverseOrder)((0,L.compareBy)(z=>z.modifiedLineRange.length,L.numberComparator)));const de=new r,he=new r;for(const z of ce){const ee=z.modifiedLineRange.startLineNumber-z.originalLineRange.startLineNumber,$=de.subtractFrom(z.modifiedLineRange),re=he.subtractFrom(z.originalLineRange).map(ge=>ge.delta(ee)),oe=h($,re);for(const ge of oe){if(ge.length<3)continue;const ve=ge,Se=ge.delta(-ee);B.push(new t.SimpleLineRangeMapping(Se,ve)),de.addRange(ve),he.addRange(Se)}}if(B.sort((0,L.compareBy)(z=>z.original.startLineNumber,L.numberComparator)),B.length===0)return[];let ue=[B[0]];for(let z=1;z<B.length;z++){const ee=ue[ue.length-1],$=B[z],re=$.original.startLineNumber-ee.original.endLineNumberExclusive,oe=$.modified.startLineNumber-ee.modified.endLineNumberExclusive;if(re>=0&&oe>=0&&re+oe<=2){ue[ue.length-1]=ee.join($);continue}$.original.toOffsetRange().slice(K).map(Se=>Se.trim()).join(`\n`).length<=10||ue.push($)}const te=u.createOfSorted(R,z=>z.originalRange.endLineNumberExclusive,L.numberComparator);return ue=ue.filter(z=>{const ee=te.findLastItemBeforeOrEqual(z.original.startLineNumber)||new t.LineRangeMapping(new S.LineRange(1,1),new S.LineRange(1,1),[]),$=z.modified.startLineNumber-ee.modifiedRange.endLineNumberExclusive,re=z.original.startLineNumber-ee.originalRange.endLineNumberExclusive;return $!==re}),ue.map(z=>{const ee=this.refineDiff(K,G,new C.SequenceDiff(z.original.toOffsetRange(),z.modified.toOffsetRange()),X,H),$=l(ee.mappings,K,G,!0);return new t.MovedText(z,$)})}refineDiff(R,K,G,Z,J){const X=new w(R,G.seq1Range,J),H=new w(K,G.seq2Range,J),B=X.length+H.length<500?this.dynamicProgrammingDiffing.compute(X,H,Z):this.myersDiffingAlgorithm.compute(X,H,Z);let V=B.diffs;return V=(0,i.optimizeSequenceDiffs)(X,H,V),V=o(X,H,V),V=(0,i.smoothenSequenceDiffs)(X,H,V),V=(0,i.removeRandomMatches)(X,H,V),{mappings:V.map(ie=>new t.RangeMapping(X.translateRange(ie.seq1Range),H.translateRange(ie.seq2Range))),hitTimeout:B.hitTimeout}}}e.AdvancedLinesDiffComputer=a;class u{static createOfSorted(R,K,G){return new u(R,K,G)}constructor(R,K,G){this._items=R,this._itemToDomain=K,this._domainComparator=G,this._currentIdx=0,this._lastValue=void 0,this._hasLastValue=!1}findLastItemBeforeOrEqual(R){if(this._hasLastValue&&L.CompareResult.isLessThan(this._domainComparator(R,this._lastValue)))throw new D.BugIndicatingError;for(this._lastValue=R,this._hasLastValue=!0;this._currentIdx<this._items.length&&L.CompareResult.isLessThanOrEqual(this._domainComparator(this._itemToDomain(this._items[this._currentIdx]),R));)this._currentIdx++;return this._currentIdx===0?void 0:this._items[this._currentIdx-1]}}function h(j,R){const K=[];let G=0,Z=0;for(;G<j.length&&Z<R.length;){const J=j[G],X=R[Z],H=J.intersect(X);H&&!H.isEmpty&&K.push(H),J.endLineNumberExclusive<X.endLineNumberExclusive?G++:Z++}return K}class r{constructor(){this._normalizedRanges=[]}addRange(R){const K=c(this._normalizedRanges.findIndex(Z=>Z.endLineNumberExclusive>=R.startLineNumber),this._normalizedRanges.length),G=(0,L.findLastIndex)(this._normalizedRanges,Z=>Z.startLineNumber<=R.endLineNumberExclusive)+1;if(K===G)this._normalizedRanges.splice(K,0,R);else if(K===G-1){const Z=this._normalizedRanges[K];this._normalizedRanges[K]=Z.join(R)}else{const Z=this._normalizedRanges[K].join(this._normalizedRanges[G-1]).join(R);this._normalizedRanges.splice(K,G-K,Z)}}subtractFrom(R){const K=c(this._normalizedRanges.findIndex(X=>X.endLineNumberExclusive>=R.startLineNumber),this._normalizedRanges.length),G=(0,L.findLastIndex)(this._normalizedRanges,X=>X.startLineNumber<=R.endLineNumberExclusive)+1;if(K===G)return[R];const Z=[];let J=R.startLineNumber;for(let X=K;X<G;X++){const H=this._normalizedRanges[X];H.startLineNumber>J&&Z.push(new S.LineRange(J,H.startLineNumber)),J=H.endLineNumberExclusive}return J<R.endLineNumberExclusive&&Z.push(new S.LineRange(J,R.endLineNumberExclusive)),Z}}function c(j,R){return j===-1?R:j}function o(j,R,K){const G=[];let Z;function J(){if(!Z)return;const H=Z.s1Range.length-Z.deleted,B=Z.s2Range.length-Z.added;Math.max(Z.deleted,Z.added)+(Z.count-1)>H&&G.push(new C.SequenceDiff(Z.s1Range,Z.s2Range)),Z=void 0}for(const H of K){let B=function(ce,de){var he,ue,te,q;if(!Z||!Z.s1Range.containsRange(ce)||!Z.s2Range.containsRange(de))if(Z&&!(Z.s1Range.endExclusive<ce.start&&Z.s2Range.endExclusive<de.start)){const $=f.OffsetRange.tryCreate(Z.s1Range.endExclusive,ce.start),re=f.OffsetRange.tryCreate(Z.s2Range.endExclusive,de.start);Z.deleted+=(he=$?.length)!==null&&he!==void 0?he:0,Z.added+=(ue=re?.length)!==null&&ue!==void 0?ue:0,Z.s1Range=Z.s1Range.join(ce),Z.s2Range=Z.s2Range.join(de)}else J(),Z={added:0,deleted:0,count:0,s1Range:ce,s2Range:de};const z=ce.intersect(H.seq1Range),ee=de.intersect(H.seq2Range);Z.count++,Z.deleted+=(te=z?.length)!==null&&te!==void 0?te:0,Z.added+=(q=ee?.length)!==null&&q!==void 0?q:0};const V=j.findWordContaining(H.seq1Range.start-1),Y=R.findWordContaining(H.seq2Range.start-1),ie=j.findWordContaining(H.seq1Range.endExclusive),ae=R.findWordContaining(H.seq2Range.endExclusive);V&&ie&&Y&&ae&&V.equals(ie)&&Y.equals(ae)?B(V,Y):(V&&Y&&B(V,Y),ie&&ae&&B(ie,ae))}return J(),d(K,G)}function d(j,R){const K=[];for(;j.length>0||R.length>0;){const G=j[0],Z=R[0];let J;G&&(!Z||G.seq1Range.start<Z.seq1Range.start)?J=j.shift():J=R.shift(),K.length>0&&K[K.length-1].seq1Range.endExclusive>=J.seq1Range.start?K[K.length-1]=K[K.length-1].join(J):K.push(J)}return K}function l(j,R,K,G=!1){const Z=[];for(const J of m(j.map(X=>p(X,R,K)),(X,H)=>X.originalRange.overlapOrTouch(H.originalRange)||X.modifiedRange.overlapOrTouch(H.modifiedRange))){const X=J[0],H=J[J.length-1];Z.push(new t.LineRangeMapping(X.originalRange.join(H.originalRange),X.modifiedRange.join(H.modifiedRange),J.map(B=>B.innerChanges[0])))}return(0,k.assertFn)(()=>!G&&Z.length>0&&Z[0].originalRange.startLineNumber!==Z[0].modifiedRange.startLineNumber?!1:(0,k.checkAdjacentItems)(Z,(J,X)=>X.originalRange.startLineNumber-J.originalRange.endLineNumberExclusive===X.modifiedRange.startLineNumber-J.modifiedRange.endLineNumberExclusive&&J.originalRange.endLineNumberExclusive<X.originalRange.startLineNumber&&J.modifiedRange.endLineNumberExclusive<X.modifiedRange.startLineNumber)),Z}e.lineRangeMappingFromRangeMappings=l;function p(j,R,K){let G=0,Z=0;j.modifiedRange.endColumn===1&&j.originalRange.endColumn===1&&j.originalRange.startLineNumber+G<=j.originalRange.endLineNumber&&j.modifiedRange.startLineNumber+G<=j.modifiedRange.endLineNumber&&(Z=-1),j.modifiedRange.startColumn-1>=K[j.modifiedRange.startLineNumber-1].length&&j.originalRange.startColumn-1>=R[j.originalRange.startLineNumber-1].length&&j.originalRange.startLineNumber<=j.originalRange.endLineNumber+Z&&j.modifiedRange.startLineNumber<=j.modifiedRange.endLineNumber+Z&&(G=1);const J=new S.LineRange(j.originalRange.startLineNumber+G,j.originalRange.endLineNumber+1+Z),X=new S.LineRange(j.modifiedRange.startLineNumber+G,j.modifiedRange.endLineNumber+1+Z);return new t.LineRangeMapping(J,X,[j])}e.getLineRangeMapping=p;function*m(j,R){let K,G;for(const Z of j)G!==void 0&&R(G,Z)?K.push(Z):(K&&(yield K),K=[Z]),G=Z;K&&(yield K)}class v{constructor(R,K){this.trimmedHash=R,this.lines=K}getElement(R){return this.trimmedHash[R]}get length(){return this.trimmedHash.length}getBoundaryScore(R){const K=R===0?0:b(this.lines[R-1]),G=R===this.lines.length?0:b(this.lines[R]);return 1e3-(K+G)}getText(R){return this.lines.slice(R.start,R.endExclusive).join(`\n`)}isStronglyEqual(R,K){return this.lines[R]===this.lines[K]}}e.LineSequence=v;function b(j){let R=0;for(;R<j.length&&(j.charCodeAt(R)===32||j.charCodeAt(R)===9);)R++;return R}class w{constructor(R,K,G){this.lines=R,this.considerWhitespaceChanges=G,this.elements=[],this.firstCharOffsetByLineMinusOne=[],this.additionalOffsetByLine=[];let Z=!1;K.start>0&&K.endExclusive>=R.length&&(K=new f.OffsetRange(K.start-1,K.endExclusive),Z=!0),this.lineRange=K;for(let J=this.lineRange.start;J<this.lineRange.endExclusive;J++){let X=R[J],H=0;if(Z)H=X.length,X=\"\",Z=!1;else if(!G){const B=X.trimStart();H=X.length-B.length,X=B.trimEnd()}this.additionalOffsetByLine.push(H);for(let B=0;B<X.length;B++)this.elements.push(X.charCodeAt(B));J<R.length-1&&(this.elements.push(`\n`.charCodeAt(0)),this.firstCharOffsetByLineMinusOne[J-this.lineRange.start]=this.elements.length)}this.additionalOffsetByLine.push(0)}toString(){return`Slice: \"${this.text}\"`}get text(){return this.getText(new f.OffsetRange(0,this.length))}getText(R){return this.elements.slice(R.start,R.endExclusive).map(K=>String.fromCharCode(K)).join(\"\")}getElement(R){return this.elements[R]}get length(){return this.elements.length}getBoundaryScore(R){const K=N(R>0?this.elements[R-1]:-1),G=N(R<this.elements.length?this.elements[R]:-1);if(K===6&&G===7)return 0;let Z=0;return K!==G&&(Z+=10,G===1&&(Z+=1)),Z+=A(K),Z+=A(G),Z}translateOffset(R){if(this.lineRange.isEmpty)return new _.Position(this.lineRange.start+1,1);let K=0,G=this.firstCharOffsetByLineMinusOne.length;for(;K<G;){const J=Math.floor((K+G)/2);this.firstCharOffsetByLineMinusOne[J]>R?G=J:K=J+1}const Z=K===0?0:this.firstCharOffsetByLineMinusOne[K-1];return new _.Position(this.lineRange.start+K+1,R-Z+1+this.additionalOffsetByLine[K])}translateRange(R){return g.Range.fromPositions(this.translateOffset(R.start),this.translateOffset(R.endExclusive))}findWordContaining(R){if(R<0||R>=this.elements.length||!x(this.elements[R]))return;let K=R;for(;K>0&&x(this.elements[K-1]);)K--;let G=R;for(;G<this.elements.length&&x(this.elements[G]);)G++;return new f.OffsetRange(K,G)}countLinesIn(R){return this.translateOffset(R.endExclusive).lineNumber-this.translateOffset(R.start).lineNumber}isStronglyEqual(R,K){return this.elements[R]===this.elements[K]}extendToFullLines(R){var K,G;const Z=(K=I(this.firstCharOffsetByLineMinusOne,X=>X<=R.start))!==null&&K!==void 0?K:0,J=(G=P(this.firstCharOffsetByLineMinusOne,X=>R.endExclusive<=X))!==null&&G!==void 0?G:this.elements.length;return new f.OffsetRange(Z,J)}}e.LinesSliceCharSequence=w;function E(j,R){let K=0,G=j.length;for(;K<G;){const Z=Math.floor((K+G)/2);R(j[Z])?K=Z+1:G=Z}return K-1}function I(j,R){const K=E(j,R);return K===-1?void 0:j[K]}e.findLastMonotonous=I;function M(j,R){let K=0,G=j.length;for(;K<G;){const Z=Math.floor((K+G)/2);R(j[Z])?G=Z:K=Z+1}return K}function P(j,R){const K=M(j,R);return K===j.length?void 0:j[K]}e.findFirstMonotonous=P;function x(j){return j>=97&&j<=122||j>=65&&j<=90||j>=48&&j<=57}const T={[0]:0,[1]:0,[2]:0,[3]:10,[4]:2,[5]:3,[6]:10,[7]:10};function A(j){return T[j]}function N(j){return j===10?7:j===13?6:F(j)?5:j>=97&&j<=122?0:j>=65&&j<=90?1:j>=48&&j<=57?2:j===-1?3:4}function F(j){return j===32||j===9}const O=new Map;function W(j){let R=O.get(j);return R===void 0&&(R=O.size,O.set(j,R)),R}class U{constructor(R,K,G){this.range=R,this.lines=K,this.source=G,this.histogram=[];let Z=0;for(let J=R.startLineNumber-1;J<R.endLineNumberExclusive-1;J++){const X=K[J];for(let B=0;B<X.length;B++){Z++;const V=X[B],Y=W(V);this.histogram[Y]=(this.histogram[Y]||0)+1}Z++;const H=W(`\n`);this.histogram[H]=(this.histogram[H]||0)+1}this.totalCount=Z}computeSimilarity(R){var K,G;let Z=0;const J=Math.max(this.histogram.length,R.histogram.length);for(let X=0;X<J;X++)Z+=Math.abs(((K=this.histogram[X])!==null&&K!==void 0?K:0)-((G=R.histogram[X])!==null&&G!==void 0?G:0));return 1-Z/(this.totalCount+R.totalCount)}}}),define(ne[491],se([1,0,168,109,11,5,85,66]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DiffComputer=e.LegacyLinesDiffComputer=void 0;const _=3;class g{computeDiff(d,l,p){var m;const b=new u(d,l,{maxComputationTime:p.maxComputationTimeMs,shouldIgnoreTrimWhitespace:p.ignoreTrimWhitespace,shouldComputeCharChanges:!0,shouldMakePrettyDiff:!0,shouldPostProcessCharChanges:!0}).computeDiff(),w=[];let E=null;for(const I of b.changes){let M;I.originalEndLineNumber===0?M=new f.LineRange(I.originalStartLineNumber+1,I.originalStartLineNumber+1):M=new f.LineRange(I.originalStartLineNumber,I.originalEndLineNumber+1);let P;I.modifiedEndLineNumber===0?P=new f.LineRange(I.modifiedStartLineNumber+1,I.modifiedStartLineNumber+1):P=new f.LineRange(I.modifiedStartLineNumber,I.modifiedEndLineNumber+1);let x=new k.LineRangeMapping(M,P,(m=I.charChanges)===null||m===void 0?void 0:m.map(T=>new k.RangeMapping(new D.Range(T.originalStartLineNumber,T.originalStartColumn,T.originalEndLineNumber,T.originalEndColumn),new D.Range(T.modifiedStartLineNumber,T.modifiedStartColumn,T.modifiedEndLineNumber,T.modifiedEndColumn))));E&&(E.modifiedRange.endLineNumberExclusive===x.modifiedRange.startLineNumber||E.originalRange.endLineNumberExclusive===x.originalRange.startLineNumber)&&(x=new k.LineRangeMapping(E.originalRange.join(x.originalRange),E.modifiedRange.join(x.modifiedRange),E.innerChanges&&x.innerChanges?E.innerChanges.concat(x.innerChanges):void 0),w.pop()),w.push(x),E=x}return(0,S.assertFn)(()=>(0,S.checkAdjacentItems)(w,(I,M)=>M.originalRange.startLineNumber-I.originalRange.endLineNumberExclusive===M.modifiedRange.startLineNumber-I.modifiedRange.endLineNumberExclusive&&I.originalRange.endLineNumberExclusive<M.originalRange.startLineNumber&&I.modifiedRange.endLineNumberExclusive<M.modifiedRange.startLineNumber)),new k.LinesDiff(w,[],b.quitEarly)}}e.LegacyLinesDiffComputer=g;function C(o,d,l,p){return new L.LcsDiff(o,d,l).ComputeDiff(p)}class s{constructor(d){const l=[],p=[];for(let m=0,v=d.length;m<v;m++)l[m]=h(d[m],1),p[m]=r(d[m],1);this.lines=d,this._startColumns=l,this._endColumns=p}getElements(){const d=[];for(let l=0,p=this.lines.length;l<p;l++)d[l]=this.lines[l].substring(this._startColumns[l]-1,this._endColumns[l]-1);return d}getStrictElement(d){return this.lines[d]}getStartLineNumber(d){return d+1}getEndLineNumber(d){return d+1}createCharSequence(d,l,p){const m=[],v=[],b=[];let w=0;for(let E=l;E<=p;E++){const I=this.lines[E],M=d?this._startColumns[E]:1,P=d?this._endColumns[E]:I.length+1;for(let x=M;x<P;x++)m[w]=I.charCodeAt(x-1),v[w]=E+1,b[w]=x,w++;!d&&E<p&&(m[w]=10,v[w]=E+1,b[w]=I.length+1,w++)}return new i(m,v,b)}}class i{constructor(d,l,p){this._charCodes=d,this._lineNumbers=l,this._columns=p}toString(){return\"[\"+this._charCodes.map((d,l)=>(d===10?\"\\\\n\":String.fromCharCode(d))+`-(${this._lineNumbers[l]},${this._columns[l]})`).join(\", \")+\"]\"}_assertIndex(d,l){if(d<0||d>=l.length)throw new Error(\"Illegal index\")}getElements(){return this._charCodes}getStartLineNumber(d){return d>0&&d===this._lineNumbers.length?this.getEndLineNumber(d-1):(this._assertIndex(d,this._lineNumbers),this._lineNumbers[d])}getEndLineNumber(d){return d===-1?this.getStartLineNumber(d+1):(this._assertIndex(d,this._lineNumbers),this._charCodes[d]===10?this._lineNumbers[d]+1:this._lineNumbers[d])}getStartColumn(d){return d>0&&d===this._columns.length?this.getEndColumn(d-1):(this._assertIndex(d,this._columns),this._columns[d])}getEndColumn(d){return d===-1?this.getStartColumn(d+1):(this._assertIndex(d,this._columns),this._charCodes[d]===10?1:this._columns[d]+1)}}class n{constructor(d,l,p,m,v,b,w,E){this.originalStartLineNumber=d,this.originalStartColumn=l,this.originalEndLineNumber=p,this.originalEndColumn=m,this.modifiedStartLineNumber=v,this.modifiedStartColumn=b,this.modifiedEndLineNumber=w,this.modifiedEndColumn=E}static createFromDiffChange(d,l,p){const m=l.getStartLineNumber(d.originalStart),v=l.getStartColumn(d.originalStart),b=l.getEndLineNumber(d.originalStart+d.originalLength-1),w=l.getEndColumn(d.originalStart+d.originalLength-1),E=p.getStartLineNumber(d.modifiedStart),I=p.getStartColumn(d.modifiedStart),M=p.getEndLineNumber(d.modifiedStart+d.modifiedLength-1),P=p.getEndColumn(d.modifiedStart+d.modifiedLength-1);return new n(m,v,b,w,E,I,M,P)}}function t(o){if(o.length<=1)return o;const d=[o[0]];let l=d[0];for(let p=1,m=o.length;p<m;p++){const v=o[p],b=v.originalStart-(l.originalStart+l.originalLength),w=v.modifiedStart-(l.modifiedStart+l.modifiedLength);Math.min(b,w)<_?(l.originalLength=v.originalStart+v.originalLength-l.originalStart,l.modifiedLength=v.modifiedStart+v.modifiedLength-l.modifiedStart):(d.push(v),l=v)}return d}class a{constructor(d,l,p,m,v){this.originalStartLineNumber=d,this.originalEndLineNumber=l,this.modifiedStartLineNumber=p,this.modifiedEndLineNumber=m,this.charChanges=v}static createFromDiffResult(d,l,p,m,v,b,w){let E,I,M,P,x;if(l.originalLength===0?(E=p.getStartLineNumber(l.originalStart)-1,I=0):(E=p.getStartLineNumber(l.originalStart),I=p.getEndLineNumber(l.originalStart+l.originalLength-1)),l.modifiedLength===0?(M=m.getStartLineNumber(l.modifiedStart)-1,P=0):(M=m.getStartLineNumber(l.modifiedStart),P=m.getEndLineNumber(l.modifiedStart+l.modifiedLength-1)),b&&l.originalLength>0&&l.originalLength<20&&l.modifiedLength>0&&l.modifiedLength<20&&v()){const T=p.createCharSequence(d,l.originalStart,l.originalStart+l.originalLength-1),A=m.createCharSequence(d,l.modifiedStart,l.modifiedStart+l.modifiedLength-1);if(T.getElements().length>0&&A.getElements().length>0){let N=C(T,A,v,!0).changes;w&&(N=t(N)),x=[];for(let F=0,O=N.length;F<O;F++)x.push(n.createFromDiffChange(N[F],T,A))}}return new a(E,I,M,P,x)}}class u{constructor(d,l,p){this.shouldComputeCharChanges=p.shouldComputeCharChanges,this.shouldPostProcessCharChanges=p.shouldPostProcessCharChanges,this.shouldIgnoreTrimWhitespace=p.shouldIgnoreTrimWhitespace,this.shouldMakePrettyDiff=p.shouldMakePrettyDiff,this.originalLines=d,this.modifiedLines=l,this.original=new s(d),this.modified=new s(l),this.continueLineDiff=c(p.maxComputationTime),this.continueCharDiff=c(p.maxComputationTime===0?0:Math.min(p.maxComputationTime,5e3))}computeDiff(){if(this.original.lines.length===1&&this.original.lines[0].length===0)return this.modified.lines.length===1&&this.modified.lines[0].length===0?{quitEarly:!1,changes:[]}:{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:1,modifiedStartLineNumber:1,modifiedEndLineNumber:this.modified.lines.length,charChanges:void 0}]};if(this.modified.lines.length===1&&this.modified.lines[0].length===0)return{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:this.original.lines.length,modifiedStartLineNumber:1,modifiedEndLineNumber:1,charChanges:void 0}]};const d=C(this.original,this.modified,this.continueLineDiff,this.shouldMakePrettyDiff),l=d.changes,p=d.quitEarly;if(this.shouldIgnoreTrimWhitespace){const w=[];for(let E=0,I=l.length;E<I;E++)w.push(a.createFromDiffResult(this.shouldIgnoreTrimWhitespace,l[E],this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges));return{quitEarly:p,changes:w}}const m=[];let v=0,b=0;for(let w=-1,E=l.length;w<E;w++){const I=w+1<E?l[w+1]:null,M=I?I.originalStart:this.originalLines.length,P=I?I.modifiedStart:this.modifiedLines.length;for(;v<M&&b<P;){const x=this.originalLines[v],T=this.modifiedLines[b];if(x!==T){{let A=h(x,1),N=h(T,1);for(;A>1&&N>1;){const F=x.charCodeAt(A-2),O=T.charCodeAt(N-2);if(F!==O)break;A--,N--}(A>1||N>1)&&this._pushTrimWhitespaceCharChange(m,v+1,1,A,b+1,1,N)}{let A=r(x,1),N=r(T,1);const F=x.length+1,O=T.length+1;for(;A<F&&N<O;){const W=x.charCodeAt(A-1),U=x.charCodeAt(N-1);if(W!==U)break;A++,N++}(A<F||N<O)&&this._pushTrimWhitespaceCharChange(m,v+1,A,F,b+1,N,O)}}v++,b++}I&&(m.push(a.createFromDiffResult(this.shouldIgnoreTrimWhitespace,I,this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges)),v+=I.originalLength,b+=I.modifiedLength)}return{quitEarly:p,changes:m}}_pushTrimWhitespaceCharChange(d,l,p,m,v,b,w){if(this._mergeTrimWhitespaceCharChange(d,l,p,m,v,b,w))return;let E;this.shouldComputeCharChanges&&(E=[new n(l,p,l,m,v,b,v,w)]),d.push(new a(l,l,v,v,E))}_mergeTrimWhitespaceCharChange(d,l,p,m,v,b,w){const E=d.length;if(E===0)return!1;const I=d[E-1];return I.originalEndLineNumber===0||I.modifiedEndLineNumber===0?!1:I.originalEndLineNumber===l&&I.modifiedEndLineNumber===v?(this.shouldComputeCharChanges&&I.charChanges&&I.charChanges.push(new n(l,p,l,m,v,b,v,w)),!0):I.originalEndLineNumber+1===l&&I.modifiedEndLineNumber+1===v?(I.originalEndLineNumber=l,I.modifiedEndLineNumber=v,this.shouldComputeCharChanges&&I.charChanges&&I.charChanges.push(new n(l,p,l,m,v,b,v,w)),!0):!1}}e.DiffComputer=u;function h(o,d){const l=y.firstNonWhitespaceIndex(o);return l===-1?d:l+1}function r(o,d){const l=y.lastNonWhitespaceIndex(o);return l===-1?d:l+2}function c(o){if(o===0)return()=>!0;const d=Date.now();return()=>Date.now()-d<o}}),define(ne[492],se([1,0,491,276]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.linesDiffComputers=void 0,e.linesDiffComputers={getLegacy:()=>new L.LegacyLinesDiffComputer,getAdvanced:()=>new k.AdvancedLinesDiffComputer}}),define(ne[277],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InternalEditorAction=void 0;class L{constructor(y,D,S,f,_,g){this.id=y,this.label=D,this.alias=S,this._precondition=f,this._run=_,this._contextKeyService=g}isSupported(){return this._contextKeyService.contextMatchesRules(this._precondition)}run(y){return this.isSupported()?this._run(y):Promise.resolve(void 0)}}e.InternalEditorAction=L}),define(ne[148],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditorType=void 0,e.EditorType={ICodeEditor:\"vs.editor.ICodeEditor\",IDiffEditor:\"vs.editor.IDiffEditor\"}}),define(ne[177],se([1,0,148]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getCodeEditor=e.isCompositeEditor=e.isDiffEditor=e.isCodeEditor=void 0;function k(f){return f&&typeof f.getEditorType==\"function\"?f.getEditorType()===L.EditorType.ICodeEditor:!1}e.isCodeEditor=k;function y(f){return f&&typeof f.getEditorType==\"function\"?f.getEditorType()===L.EditorType.IDiffEditor:!1}e.isDiffEditor=y;function D(f){return!!f&&typeof f==\"object\"&&typeof f.onDidChangeActiveEditor==\"function\"}e.isCompositeEditor=D;function S(f){return k(f)?f:y(f)?f.getModifiedEditor():D(f)&&k(f.activeCodeEditor)?f.activeCodeEditor:null}e.getCodeEditor=S}),define(ne[149],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getEditorFeatures=e.registerEditorFeature=void 0;const L=[];function k(D){L.push(D)}e.registerEditorFeature=k;function y(){return L.slice(0)}e.getEditorFeatures=y}),define(ne[493],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditorTheme=void 0;class L{get type(){return this._theme.type}get value(){return this._theme}constructor(y){this._theme=y}update(y){this._theme=y}getColor(y){return this._theme.getColor(y)}}e.EditorTheme=L}),define(ne[124],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenMetadata=void 0;class L{static getLanguageId(y){return(y&255)>>>0}static getTokenType(y){return(y&768)>>>8}static containsBalancedBrackets(y){return(y&1024)!==0}static getFontStyle(y){return(y&30720)>>>11}static getForeground(y){return(y&16744448)>>>15}static getBackground(y){return(y&4278190080)>>>24}static getClassNameFromMetadata(y){let S=\"mtk\"+this.getForeground(y);const f=this.getFontStyle(y);return f&1&&(S+=\" mtki\"),f&2&&(S+=\" mtkb\"),f&4&&(S+=\" mtku\"),f&8&&(S+=\" mtks\"),S}static getInlineStyleFromMetadata(y,D){const S=this.getForeground(y),f=this.getFontStyle(y);let _=`color: ${D[S]};`;f&1&&(_+=\"font-style: italic;\"),f&2&&(_+=\"font-weight: bold;\");let g=\"\";return f&4&&(g+=\" underline\"),f&8&&(g+=\" line-through\"),g&&(_+=`text-decoration:${g};`),_}static getPresentationFromMetadata(y){const D=this.getForeground(y),S=this.getFontStyle(y);return{foreground:D,italic:!!(S&1),bold:!!(S&2),underline:!!(S&4),strikethrough:!!(S&8)}}}e.TokenMetadata=L}),define(ne[494],se([1,0,38]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.computeDefaultDocumentColors=void 0;function k(i){const n=[];for(const t of i){const a=Number(t);(a||a===0&&t.replace(/\\s/g,\"\")!==\"\")&&n.push(a)}return n}function y(i,n,t,a){return{red:i/255,blue:t/255,green:n/255,alpha:a}}function D(i,n){const t=n.index,a=n[0].length;if(!t)return;const u=i.positionAt(t);return{startLineNumber:u.lineNumber,startColumn:u.column,endLineNumber:u.lineNumber,endColumn:u.column+a}}function S(i,n){if(!i)return;const t=L.Color.Format.CSS.parseHex(n);if(t)return{range:i,color:y(t.rgba.r,t.rgba.g,t.rgba.b,t.rgba.a)}}function f(i,n,t){if(!i||n.length!==1)return;const u=n[0].values(),h=k(u);return{range:i,color:y(h[0],h[1],h[2],t?h[3]:1)}}function _(i,n,t){if(!i||n.length!==1)return;const u=n[0].values(),h=k(u),r=new L.Color(new L.HSLA(h[0],h[1]/100,h[2]/100,t?h[3]:1));return{range:i,color:y(r.rgba.r,r.rgba.g,r.rgba.b,r.rgba.a)}}function g(i,n){return typeof i==\"string\"?[...i.matchAll(n)]:i.findMatches(n)}function C(i){const n=[],a=g(i,/\\b(rgb|rgba|hsl|hsla)(\\([0-9\\s,.\\%]*\\))|(#)([A-Fa-f0-9]{3})\\b|(#)([A-Fa-f0-9]{4})\\b|(#)([A-Fa-f0-9]{6})\\b|(#)([A-Fa-f0-9]{8})\\b/gm);if(a.length>0)for(const u of a){const h=u.filter(d=>d!==void 0),r=h[1],c=h[2];if(!c)continue;let o;if(r===\"rgb\"){const d=/^\\(\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*\\)$/gm;o=f(D(i,u),g(c,d),!1)}else if(r===\"rgba\"){const d=/^\\(\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\\s*,\\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\\s*\\)$/gm;o=f(D(i,u),g(c,d),!0)}else if(r===\"hsl\"){const d=/^\\(\\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\\s*,\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*,\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*\\)$/gm;o=_(D(i,u),g(c,d),!1)}else if(r===\"hsla\"){const d=/^\\(\\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\\s*,\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*,\\s*(100|\\d{1,2}[.]\\d*|\\d{1,2})%\\s*,\\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\\s*\\)$/gm;o=_(D(i,u),g(c,d),!0)}else r===\"#\"&&(o=S(D(i,u),r+c));o&&n.push(o)}return n}function s(i){return!i||typeof i.getValue!=\"function\"||typeof i.positionAt!=\"function\"?[]:C(i)}e.computeDefaultDocumentColors=s}),define(ne[110],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoClosingPairs=e.StandardAutoClosingPairConditional=e.IndentAction=void 0;var L;(function(S){S[S.None=0]=\"None\",S[S.Indent=1]=\"Indent\",S[S.IndentOutdent=2]=\"IndentOutdent\",S[S.Outdent=3]=\"Outdent\"})(L||(e.IndentAction=L={}));class k{constructor(f){if(this._neutralCharacter=null,this._neutralCharacterSearched=!1,this.open=f.open,this.close=f.close,this._inString=!0,this._inComment=!0,this._inRegEx=!0,Array.isArray(f.notIn))for(let _=0,g=f.notIn.length;_<g;_++)switch(f.notIn[_]){case\"string\":this._inString=!1;break;case\"comment\":this._inComment=!1;break;case\"regex\":this._inRegEx=!1;break}}isOK(f){switch(f){case 0:return!0;case 1:return this._inComment;case 2:return this._inString;case 3:return this._inRegEx}}shouldAutoClose(f,_){if(f.getTokenCount()===0)return!0;const g=f.findTokenIndexAtOffset(_-2),C=f.getStandardTokenType(g);return this.isOK(C)}_findNeutralCharacterInRange(f,_){for(let g=f;g<=_;g++){const C=String.fromCharCode(g);if(!this.open.includes(C)&&!this.close.includes(C))return C}return null}findNeutralCharacter(){return this._neutralCharacterSearched||(this._neutralCharacterSearched=!0,this._neutralCharacter||(this._neutralCharacter=this._findNeutralCharacterInRange(48,57)),this._neutralCharacter||(this._neutralCharacter=this._findNeutralCharacterInRange(97,122)),this._neutralCharacter||(this._neutralCharacter=this._findNeutralCharacterInRange(65,90))),this._neutralCharacter}}e.StandardAutoClosingPairConditional=k;class y{constructor(f){this.autoClosingPairsOpenByStart=new Map,this.autoClosingPairsOpenByEnd=new Map,this.autoClosingPairsCloseByStart=new Map,this.autoClosingPairsCloseByEnd=new Map,this.autoClosingPairsCloseSingleChar=new Map;for(const _ of f)D(this.autoClosingPairsOpenByStart,_.open.charAt(0),_),D(this.autoClosingPairsOpenByEnd,_.open.charAt(_.open.length-1),_),D(this.autoClosingPairsCloseByStart,_.close.charAt(0),_),D(this.autoClosingPairsCloseByEnd,_.close.charAt(_.close.length-1),_),_.close.length===1&&_.open.length===1&&D(this.autoClosingPairsCloseSingleChar,_.close,_)}}e.AutoClosingPairs=y;function D(S,f,_){S.has(f)?S.get(f).push(_):S.set(f,[_])}}),define(ne[495],se([1,0,121]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.computeLinks=e.LinkComputer=e.StateMachine=void 0;class k{constructor(i,n,t){const a=new Uint8Array(i*n);for(let u=0,h=i*n;u<h;u++)a[u]=t;this._data=a,this.rows=i,this.cols=n}get(i,n){return this._data[i*this.cols+n]}set(i,n,t){this._data[i*this.cols+n]=t}}class y{constructor(i){let n=0,t=0;for(let u=0,h=i.length;u<h;u++){const[r,c,o]=i[u];c>n&&(n=c),r>t&&(t=r),o>t&&(t=o)}n++,t++;const a=new k(t,n,0);for(let u=0,h=i.length;u<h;u++){const[r,c,o]=i[u];a.set(r,c,o)}this._states=a,this._maxCharCode=n}nextState(i,n){return n<0||n>=this._maxCharCode?0:this._states.get(i,n)}}e.StateMachine=y;let D=null;function S(){return D===null&&(D=new y([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),D}let f=null;function _(){if(f===null){f=new L.CharacterClassifier(0);const s=` \t<>'\"\\u3001\\u3002\\uFF61\\uFF64\\uFF0C\\uFF0E\\uFF1A\\uFF1B\\u2018\\u3008\\u300C\\u300E\\u3014\\uFF08\\uFF3B\\uFF5B\\uFF62\\uFF63\\uFF5D\\uFF3D\\uFF09\\u3015\\u300F\\u300D\\u3009\\u2019\\uFF40\\uFF5E\\u2026`;for(let n=0;n<s.length;n++)f.set(s.charCodeAt(n),1);const i=\".,;:\";for(let n=0;n<i.length;n++)f.set(i.charCodeAt(n),2)}return f}class g{static _createLink(i,n,t,a,u){let h=u-1;do{const r=n.charCodeAt(h);if(i.get(r)!==2)break;h--}while(h>a);if(a>0){const r=n.charCodeAt(a-1),c=n.charCodeAt(h);(r===40&&c===41||r===91&&c===93||r===123&&c===125)&&h--}return{range:{startLineNumber:t,startColumn:a+1,endLineNumber:t,endColumn:h+2},url:n.substring(a,h+1)}}static computeLinks(i,n=S()){const t=_(),a=[];for(let u=1,h=i.getLineCount();u<=h;u++){const r=i.getLineContent(u),c=r.length;let o=0,d=0,l=0,p=1,m=!1,v=!1,b=!1,w=!1;for(;o<c;){let E=!1;const I=r.charCodeAt(o);if(p===13){let M;switch(I){case 40:m=!0,M=0;break;case 41:M=m?0:1;break;case 91:b=!0,v=!0,M=0;break;case 93:b=!1,M=v?0:1;break;case 123:w=!0,M=0;break;case 125:M=w?0:1;break;case 39:case 34:case 96:l===I?M=1:l===39||l===34||l===96?M=0:M=1;break;case 42:M=l===42?1:0;break;case 124:M=l===124?1:0;break;case 32:M=b?0:1;break;default:M=t.get(I)}M===1&&(a.push(g._createLink(t,r,u,d,o)),E=!0)}else if(p===12){let M;I===91?(v=!0,M=0):M=t.get(I),M===1?E=!0:p=13}else p=n.nextState(p,I),p===0&&(E=!0);E&&(p=1,m=!1,v=!1,w=!1,d=o+1,l=I),o++}p===13&&a.push(g._createLink(t,r,u,d,c))}return a}}e.LinkComputer=g;function C(s){return!s||typeof s.getLineCount!=\"function\"||typeof s.getLineContent!=\"function\"?[]:g.computeLinks(s)}e.computeLinks=C}),define(ne[125],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ignoreBracketsInToken=e.ScopedLineTokens=e.createScopedLineTokens=void 0;function L(D,S){const f=D.getCount(),_=D.findTokenIndexAtOffset(S),g=D.getLanguageId(_);let C=_;for(;C+1<f&&D.getLanguageId(C+1)===g;)C++;let s=_;for(;s>0&&D.getLanguageId(s-1)===g;)s--;return new k(D,g,s,C+1,D.getStartOffset(s),D.getEndOffset(C))}e.createScopedLineTokens=L;class k{constructor(S,f,_,g,C,s){this._scopedLineTokensBrand=void 0,this._actual=S,this.languageId=f,this._firstTokenIndex=_,this._lastTokenIndex=g,this.firstCharOffset=C,this._lastCharOffset=s}getLineContent(){return this._actual.getLineContent().substring(this.firstCharOffset,this._lastCharOffset)}getActualLineContentBefore(S){return this._actual.getLineContent().substring(0,this.firstCharOffset+S)}getTokenCount(){return this._lastTokenIndex-this._firstTokenIndex}findTokenIndexAtOffset(S){return this._actual.findTokenIndexAtOffset(S+this.firstCharOffset)-this._firstTokenIndex}getStandardTokenType(S){return this._actual.getStandardTokenType(S+this._firstTokenIndex)}}e.ScopedLineTokens=k;function y(D){return(D&3)!==0}e.ignoreBracketsInToken=y}),define(ne[74],se([1,0,12,5,24,125,82,202]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isQuote=e.EditOperationResult=e.SingleCursorState=e.PartialViewCursorState=e.PartialModelCursorState=e.CursorState=e.CursorConfiguration=void 0;const _=()=>!0,g=()=>!1,C=r=>r===\" \"||r===\"\t\";class s{static shouldRecreate(c){return c.hasChanged(142)||c.hasChanged(128)||c.hasChanged(36)||c.hasChanged(75)||c.hasChanged(77)||c.hasChanged(78)||c.hasChanged(6)||c.hasChanged(10)||c.hasChanged(8)||c.hasChanged(9)||c.hasChanged(13)||c.hasChanged(126)||c.hasChanged(49)||c.hasChanged(89)}constructor(c,o,d,l){this.languageConfigurationService=l,this._cursorMoveConfigurationBrand=void 0,this._languageId=c;const p=d.options,m=p.get(142),v=p.get(49);this.readOnly=p.get(89),this.tabSize=o.tabSize,this.indentSize=o.indentSize,this.insertSpaces=o.insertSpaces,this.stickyTabStops=p.get(114),this.lineHeight=v.lineHeight,this.typicalHalfwidthCharacterWidth=v.typicalHalfwidthCharacterWidth,this.pageSize=Math.max(1,Math.floor(m.height/this.lineHeight)-2),this.useTabStops=p.get(126),this.wordSeparators=p.get(128),this.emptySelectionClipboard=p.get(36),this.copyWithSyntaxHighlighting=p.get(24),this.multiCursorMergeOverlapping=p.get(75),this.multiCursorPaste=p.get(77),this.multiCursorLimit=p.get(78),this.autoClosingBrackets=p.get(6),this.autoClosingQuotes=p.get(10),this.autoClosingDelete=p.get(8),this.autoClosingOvertype=p.get(9),this.autoSurround=p.get(13),this.autoIndent=p.get(11),this.surroundingPairs={},this._electricChars=null,this.shouldAutoCloseBefore={quote:this._getShouldAutoClose(c,this.autoClosingQuotes,!0),bracket:this._getShouldAutoClose(c,this.autoClosingBrackets,!1)},this.autoClosingPairs=this.languageConfigurationService.getLanguageConfiguration(c).getAutoClosingPairs();const b=this.languageConfigurationService.getLanguageConfiguration(c).getSurroundingPairs();if(b)for(const w of b)this.surroundingPairs[w.open]=w.close}get electricChars(){var c;if(!this._electricChars){this._electricChars={};const o=(c=this.languageConfigurationService.getLanguageConfiguration(this._languageId).electricCharacter)===null||c===void 0?void 0:c.getElectricCharacters();if(o)for(const d of o)this._electricChars[d]=!0}return this._electricChars}onElectricCharacter(c,o,d){const l=(0,D.createScopedLineTokens)(o,d-1),p=this.languageConfigurationService.getLanguageConfiguration(l.languageId).electricCharacter;return p?p.onElectricCharacter(c,l,d-l.firstCharOffset):null}normalizeIndentation(c){return(0,f.normalizeIndentation)(c,this.indentSize,this.insertSpaces)}_getShouldAutoClose(c,o,d){switch(o){case\"beforeWhitespace\":return C;case\"languageDefined\":return this._getLanguageDefinedShouldAutoClose(c,d);case\"always\":return _;case\"never\":return g}}_getLanguageDefinedShouldAutoClose(c,o){const d=this.languageConfigurationService.getLanguageConfiguration(c).getAutoCloseBeforeSet(o);return l=>d.indexOf(l)!==-1}visibleColumnFromColumn(c,o){return S.CursorColumns.visibleColumnFromColumn(c.getLineContent(o.lineNumber),o.column,this.tabSize)}columnFromVisibleColumn(c,o,d){const l=S.CursorColumns.columnFromVisibleColumn(c.getLineContent(o),d,this.tabSize),p=c.getLineMinColumn(o);if(l<p)return p;const m=c.getLineMaxColumn(o);return l>m?m:l}}e.CursorConfiguration=s;class i{static fromModelState(c){return new n(c)}static fromViewState(c){return new t(c)}static fromModelSelection(c){const o=y.Selection.liftSelection(c),d=new a(k.Range.fromPositions(o.getSelectionStart()),0,0,o.getPosition(),0);return i.fromModelState(d)}static fromModelSelections(c){const o=[];for(let d=0,l=c.length;d<l;d++)o[d]=this.fromModelSelection(c[d]);return o}constructor(c,o){this._cursorStateBrand=void 0,this.modelState=c,this.viewState=o}equals(c){return this.viewState.equals(c.viewState)&&this.modelState.equals(c.modelState)}}e.CursorState=i;class n{constructor(c){this.modelState=c,this.viewState=null}}e.PartialModelCursorState=n;class t{constructor(c){this.modelState=null,this.viewState=c}}e.PartialViewCursorState=t;class a{constructor(c,o,d,l,p){this.selectionStart=c,this.selectionStartKind=o,this.selectionStartLeftoverVisibleColumns=d,this.position=l,this.leftoverVisibleColumns=p,this._singleCursorStateBrand=void 0,this.selection=a._computeSelection(this.selectionStart,this.position)}equals(c){return this.selectionStartLeftoverVisibleColumns===c.selectionStartLeftoverVisibleColumns&&this.leftoverVisibleColumns===c.leftoverVisibleColumns&&this.selectionStartKind===c.selectionStartKind&&this.position.equals(c.position)&&this.selectionStart.equalsRange(c.selectionStart)}hasSelection(){return!this.selection.isEmpty()||!this.selectionStart.isEmpty()}move(c,o,d,l){return c?new a(this.selectionStart,this.selectionStartKind,this.selectionStartLeftoverVisibleColumns,new L.Position(o,d),l):new a(new k.Range(o,d,o,d),0,l,new L.Position(o,d),l)}static _computeSelection(c,o){return c.isEmpty()||!o.isBeforeOrEqual(c.getStartPosition())?y.Selection.fromPositions(c.getStartPosition(),o):y.Selection.fromPositions(c.getEndPosition(),o)}}e.SingleCursorState=a;class u{constructor(c,o,d){this._editOperationResultBrand=void 0,this.type=c,this.commands=o,this.shouldPushStackElementBefore=d.shouldPushStackElementBefore,this.shouldPushStackElementAfter=d.shouldPushStackElementAfter}}e.EditOperationResult=u;function h(r){return r===\"'\"||r==='\"'||r===\"`\"}e.isQuote=h}),define(ne[496],se([1,0,74,12,5]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColumnSelection=void 0;class D{static columnSelect(f,_,g,C,s,i){const n=Math.abs(s-g)+1,t=g>s,a=C>i,u=C<i,h=[];for(let r=0;r<n;r++){const c=g+(t?-r:r),o=f.columnFromVisibleColumn(_,c,C),d=f.columnFromVisibleColumn(_,c,i),l=f.visibleColumnFromColumn(_,new k.Position(c,o)),p=f.visibleColumnFromColumn(_,new k.Position(c,d));u&&(l>i||p<C)||a&&(p>C||l<i)||h.push(new L.SingleCursorState(new y.Range(c,o,c,o),0,0,new k.Position(c,d),0))}if(h.length===0)for(let r=0;r<n;r++){const c=g+(t?-r:r),o=_.getLineMaxColumn(c);h.push(new L.SingleCursorState(new y.Range(c,o,c,o),0,0,new k.Position(c,o),0))}return{viewStates:h,reversed:t,fromLineNumber:g,fromVisualColumn:C,toLineNumber:s,toVisualColumn:i}}static columnSelectLeft(f,_,g){let C=g.toViewVisualColumn;return C>0&&C--,D.columnSelect(f,_,g.fromViewLineNumber,g.fromViewVisualColumn,g.toViewLineNumber,C)}static columnSelectRight(f,_,g){let C=0;const s=Math.min(g.fromViewLineNumber,g.toViewLineNumber),i=Math.max(g.fromViewLineNumber,g.toViewLineNumber);for(let t=s;t<=i;t++){const a=_.getLineMaxColumn(t),u=f.visibleColumnFromColumn(_,new k.Position(t,a));C=Math.max(C,u)}let n=g.toViewVisualColumn;return n<C&&n++,this.columnSelect(f,_,g.fromViewLineNumber,g.fromViewVisualColumn,g.toViewLineNumber,n)}static columnSelectUp(f,_,g,C){const s=C?f.pageSize:1,i=Math.max(1,g.toViewLineNumber-s);return this.columnSelect(f,_,g.fromViewLineNumber,g.fromViewVisualColumn,i,g.toViewVisualColumn)}static columnSelectDown(f,_,g,C){const s=C?f.pageSize:1,i=Math.min(_.getLineCount(),g.toViewLineNumber+s);return this.columnSelect(f,_,g.fromViewLineNumber,g.fromViewVisualColumn,i,g.toViewVisualColumn)}}e.ColumnSelection=D}),define(ne[203],se([1,0,11,82,12,5,275,74]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MoveOperations=e.CursorPosition=void 0;class _{constructor(s,i,n){this._cursorPositionBrand=void 0,this.lineNumber=s,this.column=i,this.leftoverVisibleColumns=n}}e.CursorPosition=_;class g{static leftPosition(s,i){if(i.column>s.getLineMinColumn(i.lineNumber))return i.delta(void 0,-L.prevCharLength(s.getLineContent(i.lineNumber),i.column-1));if(i.lineNumber>1){const n=i.lineNumber-1;return new y.Position(n,s.getLineMaxColumn(n))}else return i}static leftPositionAtomicSoftTabs(s,i,n){if(i.column<=s.getLineIndentColumn(i.lineNumber)){const t=s.getLineMinColumn(i.lineNumber),a=s.getLineContent(i.lineNumber),u=S.AtomicTabMoveOperations.atomicPosition(a,i.column-1,n,0);if(u!==-1&&u+1>=t)return new y.Position(i.lineNumber,u+1)}return this.leftPosition(s,i)}static left(s,i,n){const t=s.stickyTabStops?g.leftPositionAtomicSoftTabs(i,n,s.tabSize):g.leftPosition(i,n);return new _(t.lineNumber,t.column,0)}static moveLeft(s,i,n,t,a){let u,h;if(n.hasSelection()&&!t)u=n.selection.startLineNumber,h=n.selection.startColumn;else{const r=n.position.delta(void 0,-(a-1)),c=i.normalizePosition(g.clipPositionColumn(r,i),0),o=g.left(s,i,c);u=o.lineNumber,h=o.column}return n.move(t,u,h,0)}static clipPositionColumn(s,i){return new y.Position(s.lineNumber,g.clipRange(s.column,i.getLineMinColumn(s.lineNumber),i.getLineMaxColumn(s.lineNumber)))}static clipRange(s,i,n){return s<i?i:s>n?n:s}static rightPosition(s,i,n){return n<s.getLineMaxColumn(i)?n=n+L.nextCharLength(s.getLineContent(i),n-1):i<s.getLineCount()&&(i=i+1,n=s.getLineMinColumn(i)),new y.Position(i,n)}static rightPositionAtomicSoftTabs(s,i,n,t,a){if(n<s.getLineIndentColumn(i)){const u=s.getLineContent(i),h=S.AtomicTabMoveOperations.atomicPosition(u,n-1,t,1);if(h!==-1)return new y.Position(i,h+1)}return this.rightPosition(s,i,n)}static right(s,i,n){const t=s.stickyTabStops?g.rightPositionAtomicSoftTabs(i,n.lineNumber,n.column,s.tabSize,s.indentSize):g.rightPosition(i,n.lineNumber,n.column);return new _(t.lineNumber,t.column,0)}static moveRight(s,i,n,t,a){let u,h;if(n.hasSelection()&&!t)u=n.selection.endLineNumber,h=n.selection.endColumn;else{const r=n.position.delta(void 0,a-1),c=i.normalizePosition(g.clipPositionColumn(r,i),1),o=g.right(s,i,c);u=o.lineNumber,h=o.column}return n.move(t,u,h,0)}static vertical(s,i,n,t,a,u,h,r){const c=k.CursorColumns.visibleColumnFromColumn(i.getLineContent(n),t,s.tabSize)+a,o=i.getLineCount(),d=n===1&&t===1,l=n===o&&t===i.getLineMaxColumn(n),p=u<n?d:l;if(n=u,n<1?(n=1,h?t=i.getLineMinColumn(n):t=Math.min(i.getLineMaxColumn(n),t)):n>o?(n=o,h?t=i.getLineMaxColumn(n):t=Math.min(i.getLineMaxColumn(n),t)):t=s.columnFromVisibleColumn(i,n,c),p?a=0:a=c-k.CursorColumns.visibleColumnFromColumn(i.getLineContent(n),t,s.tabSize),r!==void 0){const m=new y.Position(n,t),v=i.normalizePosition(m,r);a=a+(t-v.column),n=v.lineNumber,t=v.column}return new _(n,t,a)}static down(s,i,n,t,a,u,h){return this.vertical(s,i,n,t,a,n+u,h,4)}static moveDown(s,i,n,t,a){let u,h;n.hasSelection()&&!t?(u=n.selection.endLineNumber,h=n.selection.endColumn):(u=n.position.lineNumber,h=n.position.column);let r=0,c;do if(c=g.down(s,i,u+r,h,n.leftoverVisibleColumns,a,!0),i.normalizePosition(new y.Position(c.lineNumber,c.column),2).lineNumber>u)break;while(r++<10&&u+r<i.getLineCount());return n.move(t,c.lineNumber,c.column,c.leftoverVisibleColumns)}static translateDown(s,i,n){const t=n.selection,a=g.down(s,i,t.selectionStartLineNumber,t.selectionStartColumn,n.selectionStartLeftoverVisibleColumns,1,!1),u=g.down(s,i,t.positionLineNumber,t.positionColumn,n.leftoverVisibleColumns,1,!1);return new f.SingleCursorState(new D.Range(a.lineNumber,a.column,a.lineNumber,a.column),0,a.leftoverVisibleColumns,new y.Position(u.lineNumber,u.column),u.leftoverVisibleColumns)}static up(s,i,n,t,a,u,h){return this.vertical(s,i,n,t,a,n-u,h,3)}static moveUp(s,i,n,t,a){let u,h;n.hasSelection()&&!t?(u=n.selection.startLineNumber,h=n.selection.startColumn):(u=n.position.lineNumber,h=n.position.column);const r=g.up(s,i,u,h,n.leftoverVisibleColumns,a,!0);return n.move(t,r.lineNumber,r.column,r.leftoverVisibleColumns)}static translateUp(s,i,n){const t=n.selection,a=g.up(s,i,t.selectionStartLineNumber,t.selectionStartColumn,n.selectionStartLeftoverVisibleColumns,1,!1),u=g.up(s,i,t.positionLineNumber,t.positionColumn,n.leftoverVisibleColumns,1,!1);return new f.SingleCursorState(new D.Range(a.lineNumber,a.column,a.lineNumber,a.column),0,a.leftoverVisibleColumns,new y.Position(u.lineNumber,u.column),u.leftoverVisibleColumns)}static _isBlankLine(s,i){return s.getLineFirstNonWhitespaceColumn(i)===0}static moveToPrevBlankLine(s,i,n,t){let a=n.position.lineNumber;for(;a>1&&this._isBlankLine(i,a);)a--;for(;a>1&&!this._isBlankLine(i,a);)a--;return n.move(t,a,i.getLineMinColumn(a),0)}static moveToNextBlankLine(s,i,n,t){const a=i.getLineCount();let u=n.position.lineNumber;for(;u<a&&this._isBlankLine(i,u);)u++;for(;u<a&&!this._isBlankLine(i,u);)u++;return n.move(t,u,i.getLineMinColumn(u),0)}static moveToBeginningOfLine(s,i,n,t){const a=n.position.lineNumber,u=i.getLineMinColumn(a),h=i.getLineFirstNonWhitespaceColumn(a)||u;let r;return n.position.column===h?r=u:r=h,n.move(t,a,r,0)}static moveToEndOfLine(s,i,n,t,a){const u=n.position.lineNumber,h=i.getLineMaxColumn(u);return n.move(t,u,h,a?1073741824-h:0)}static moveToBeginningOfBuffer(s,i,n,t){return n.move(t,1,1,0)}static moveToEndOfBuffer(s,i,n,t){const a=i.getLineCount(),u=i.getLineMaxColumn(a);return n.move(t,a,u,0)}}e.MoveOperations=g}),define(ne[204],se([1,0,11,123,74,82,203,5,12]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DeleteOperations=void 0;class g{static deleteRight(s,i,n,t){const a=[];let u=s!==3;for(let h=0,r=t.length;h<r;h++){const c=t[h];let o=c;if(o.isEmpty()){const d=c.getPosition(),l=S.MoveOperations.right(i,n,d);o=new f.Range(l.lineNumber,l.column,d.lineNumber,d.column)}if(o.isEmpty()){a[h]=null;continue}o.startLineNumber!==o.endLineNumber&&(u=!0),a[h]=new k.ReplaceCommand(o,\"\")}return[u,a]}static isAutoClosingPairDelete(s,i,n,t,a,u,h){if(i===\"never\"&&n===\"never\"||s===\"never\")return!1;for(let r=0,c=u.length;r<c;r++){const o=u[r],d=o.getPosition();if(!o.isEmpty())return!1;const l=a.getLineContent(d.lineNumber);if(d.column<2||d.column>=l.length+1)return!1;const p=l.charAt(d.column-2),m=t.get(p);if(!m)return!1;if((0,y.isQuote)(p)){if(n===\"never\")return!1}else if(i===\"never\")return!1;const v=l.charAt(d.column-1);let b=!1;for(const w of m)w.open===p&&w.close===v&&(b=!0);if(!b)return!1;if(s===\"auto\"){let w=!1;for(let E=0,I=h.length;E<I;E++){const M=h[E];if(d.lineNumber===M.startLineNumber&&d.column===M.startColumn){w=!0;break}}if(!w)return!1}}return!0}static _runAutoClosingPairDelete(s,i,n){const t=[];for(let a=0,u=n.length;a<u;a++){const h=n[a].getPosition(),r=new f.Range(h.lineNumber,h.column-1,h.lineNumber,h.column+1);t[a]=new k.ReplaceCommand(r,\"\")}return[!0,t]}static deleteLeft(s,i,n,t,a){if(this.isAutoClosingPairDelete(i.autoClosingDelete,i.autoClosingBrackets,i.autoClosingQuotes,i.autoClosingPairs.autoClosingPairsOpenByEnd,n,t,a))return this._runAutoClosingPairDelete(i,n,t);const u=[];let h=s!==2;for(let r=0,c=t.length;r<c;r++){const o=g.getDeleteRange(t[r],n,i);if(o.isEmpty()){u[r]=null;continue}o.startLineNumber!==o.endLineNumber&&(h=!0),u[r]=new k.ReplaceCommand(o,\"\")}return[h,u]}static getDeleteRange(s,i,n){if(!s.isEmpty())return s;const t=s.getPosition();if(n.useTabStops&&t.column>1){const a=i.getLineContent(t.lineNumber),u=L.firstNonWhitespaceIndex(a),h=u===-1?a.length+1:u+1;if(t.column<=h){const r=n.visibleColumnFromColumn(i,t),c=D.CursorColumns.prevIndentTabStop(r,n.indentSize),o=n.columnFromVisibleColumn(i,t.lineNumber,c);return new f.Range(t.lineNumber,o,t.lineNumber,t.column)}}return f.Range.fromPositions(g.getPositionAfterDeleteLeft(t,i),t)}static getPositionAfterDeleteLeft(s,i){if(s.column>1){const n=L.getLeftDeleteOffset(s.column-1,i.getLineContent(s.lineNumber));return s.with(void 0,n+1)}else if(s.lineNumber>1){const n=s.lineNumber-1;return new _.Position(n,i.getLineMaxColumn(n))}else return s}static cut(s,i,n){const t=[];let a=null;n.sort((u,h)=>_.Position.compare(u.getStartPosition(),h.getEndPosition()));for(let u=0,h=n.length;u<h;u++){const r=n[u];if(r.isEmpty())if(s.emptySelectionClipboard){const c=r.getPosition();let o,d,l,p;c.lineNumber<i.getLineCount()?(o=c.lineNumber,d=1,l=c.lineNumber+1,p=1):c.lineNumber>1&&a?.endLineNumber!==c.lineNumber?(o=c.lineNumber-1,d=i.getLineMaxColumn(c.lineNumber-1),l=c.lineNumber,p=i.getLineMaxColumn(c.lineNumber)):(o=c.lineNumber,d=1,l=c.lineNumber,p=i.getLineMaxColumn(c.lineNumber));const m=new f.Range(o,d,l,p);a=m,m.isEmpty()?t[u]=null:t[u]=new k.ReplaceCommand(m,\"\")}else t[u]=null;else t[u]=new k.ReplaceCommand(r,\"\")}return new y.EditOperationResult(0,t,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}e.DeleteOperations=g}),define(ne[178],se([1,0,11,74,204,146,12,5]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WordPartOperations=e.WordOperations=void 0;class _{static _createWord(i,n,t,a,u){return{start:a,end:u,wordType:n,nextCharClass:t}}static _findPreviousWordOnLine(i,n,t){const a=n.getLineContent(t.lineNumber);return this._doFindPreviousWordOnLine(a,i,t)}static _doFindPreviousWordOnLine(i,n,t){let a=0;for(let u=t.column-2;u>=0;u--){const h=i.charCodeAt(u),r=n.get(h);if(r===0){if(a===2)return this._createWord(i,a,r,u+1,this._findEndOfWord(i,n,a,u+1));a=1}else if(r===2){if(a===1)return this._createWord(i,a,r,u+1,this._findEndOfWord(i,n,a,u+1));a=2}else if(r===1&&a!==0)return this._createWord(i,a,r,u+1,this._findEndOfWord(i,n,a,u+1))}return a!==0?this._createWord(i,a,1,0,this._findEndOfWord(i,n,a,0)):null}static _findEndOfWord(i,n,t,a){const u=i.length;for(let h=a;h<u;h++){const r=i.charCodeAt(h),c=n.get(r);if(c===1||t===1&&c===2||t===2&&c===0)return h}return u}static _findNextWordOnLine(i,n,t){const a=n.getLineContent(t.lineNumber);return this._doFindNextWordOnLine(a,i,t)}static _doFindNextWordOnLine(i,n,t){let a=0;const u=i.length;for(let h=t.column-1;h<u;h++){const r=i.charCodeAt(h),c=n.get(r);if(c===0){if(a===2)return this._createWord(i,a,c,this._findStartOfWord(i,n,a,h-1),h);a=1}else if(c===2){if(a===1)return this._createWord(i,a,c,this._findStartOfWord(i,n,a,h-1),h);a=2}else if(c===1&&a!==0)return this._createWord(i,a,c,this._findStartOfWord(i,n,a,h-1),h)}return a!==0?this._createWord(i,a,1,this._findStartOfWord(i,n,a,u-1),u):null}static _findStartOfWord(i,n,t,a){for(let u=a;u>=0;u--){const h=i.charCodeAt(u),r=n.get(h);if(r===1||t===1&&r===2||t===2&&r===0)return u+1}return 0}static moveWordLeft(i,n,t,a){let u=t.lineNumber,h=t.column;h===1&&u>1&&(u=u-1,h=n.getLineMaxColumn(u));let r=_._findPreviousWordOnLine(i,n,new S.Position(u,h));if(a===0)return new S.Position(u,r?r.start+1:1);if(a===1)return r&&r.wordType===2&&r.end-r.start===1&&r.nextCharClass===0&&(r=_._findPreviousWordOnLine(i,n,new S.Position(u,r.start+1))),new S.Position(u,r?r.start+1:1);if(a===3){for(;r&&r.wordType===2;)r=_._findPreviousWordOnLine(i,n,new S.Position(u,r.start+1));return new S.Position(u,r?r.start+1:1)}return r&&h<=r.end+1&&(r=_._findPreviousWordOnLine(i,n,new S.Position(u,r.start+1))),new S.Position(u,r?r.end+1:1)}static _moveWordPartLeft(i,n){const t=n.lineNumber,a=i.getLineMaxColumn(t);if(n.column===1)return t>1?new S.Position(t-1,i.getLineMaxColumn(t-1)):n;const u=i.getLineContent(t);for(let h=n.column-1;h>1;h--){const r=u.charCodeAt(h-2),c=u.charCodeAt(h-1);if(r===95&&c!==95)return new S.Position(t,h);if(r===45&&c!==45)return new S.Position(t,h);if((L.isLowerAsciiLetter(r)||L.isAsciiDigit(r))&&L.isUpperAsciiLetter(c))return new S.Position(t,h);if(L.isUpperAsciiLetter(r)&&L.isUpperAsciiLetter(c)&&h+1<a){const o=u.charCodeAt(h);if(L.isLowerAsciiLetter(o)||L.isAsciiDigit(o))return new S.Position(t,h)}}return new S.Position(t,1)}static moveWordRight(i,n,t,a){let u=t.lineNumber,h=t.column,r=!1;h===n.getLineMaxColumn(u)&&u<n.getLineCount()&&(r=!0,u=u+1,h=1);let c=_._findNextWordOnLine(i,n,new S.Position(u,h));if(a===2)c&&c.wordType===2&&c.end-c.start===1&&c.nextCharClass===0&&(c=_._findNextWordOnLine(i,n,new S.Position(u,c.end+1))),c?h=c.end+1:h=n.getLineMaxColumn(u);else if(a===3){for(r&&(h=0);c&&(c.wordType===2||c.start+1<=h);)c=_._findNextWordOnLine(i,n,new S.Position(u,c.end+1));c?h=c.start+1:h=n.getLineMaxColumn(u)}else c&&!r&&h>=c.start+1&&(c=_._findNextWordOnLine(i,n,new S.Position(u,c.end+1))),c?h=c.start+1:h=n.getLineMaxColumn(u);return new S.Position(u,h)}static _moveWordPartRight(i,n){const t=n.lineNumber,a=i.getLineMaxColumn(t);if(n.column===a)return t<i.getLineCount()?new S.Position(t+1,1):n;const u=i.getLineContent(t);for(let h=n.column+1;h<a;h++){const r=u.charCodeAt(h-2),c=u.charCodeAt(h-1);if(r!==95&&c===95)return new S.Position(t,h);if(r!==45&&c===45)return new S.Position(t,h);if((L.isLowerAsciiLetter(r)||L.isAsciiDigit(r))&&L.isUpperAsciiLetter(c))return new S.Position(t,h);if(L.isUpperAsciiLetter(r)&&L.isUpperAsciiLetter(c)&&h+1<a){const o=u.charCodeAt(h);if(L.isLowerAsciiLetter(o)||L.isAsciiDigit(o))return new S.Position(t,h)}}return new S.Position(t,a)}static _deleteWordLeftWhitespace(i,n){const t=i.getLineContent(n.lineNumber),a=n.column-2,u=L.lastNonWhitespaceIndex(t,a);return u+1<a?new f.Range(n.lineNumber,u+2,n.lineNumber,n.column):null}static deleteWordLeft(i,n){const t=i.wordSeparators,a=i.model,u=i.selection,h=i.whitespaceHeuristics;if(!u.isEmpty())return u;if(y.DeleteOperations.isAutoClosingPairDelete(i.autoClosingDelete,i.autoClosingBrackets,i.autoClosingQuotes,i.autoClosingPairs.autoClosingPairsOpenByEnd,i.model,[i.selection],i.autoClosedCharacters)){const l=i.selection.getPosition();return new f.Range(l.lineNumber,l.column-1,l.lineNumber,l.column+1)}const r=new S.Position(u.positionLineNumber,u.positionColumn);let c=r.lineNumber,o=r.column;if(c===1&&o===1)return null;if(h){const l=this._deleteWordLeftWhitespace(a,r);if(l)return l}let d=_._findPreviousWordOnLine(t,a,r);return n===0?d?o=d.start+1:o>1?o=1:(c--,o=a.getLineMaxColumn(c)):(d&&o<=d.end+1&&(d=_._findPreviousWordOnLine(t,a,new S.Position(c,d.start+1))),d?o=d.end+1:o>1?o=1:(c--,o=a.getLineMaxColumn(c))),new f.Range(c,o,r.lineNumber,r.column)}static deleteInsideWord(i,n,t){if(!t.isEmpty())return t;const a=new S.Position(t.positionLineNumber,t.positionColumn),u=this._deleteInsideWordWhitespace(n,a);return u||this._deleteInsideWordDetermineDeleteRange(i,n,a)}static _charAtIsWhitespace(i,n){const t=i.charCodeAt(n);return t===32||t===9}static _deleteInsideWordWhitespace(i,n){const t=i.getLineContent(n.lineNumber),a=t.length;if(a===0)return null;let u=Math.max(n.column-2,0);if(!this._charAtIsWhitespace(t,u))return null;let h=Math.min(n.column-1,a-1);if(!this._charAtIsWhitespace(t,h))return null;for(;u>0&&this._charAtIsWhitespace(t,u-1);)u--;for(;h+1<a&&this._charAtIsWhitespace(t,h+1);)h++;return new f.Range(n.lineNumber,u+1,n.lineNumber,h+2)}static _deleteInsideWordDetermineDeleteRange(i,n,t){const a=n.getLineContent(t.lineNumber),u=a.length;if(u===0)return t.lineNumber>1?new f.Range(t.lineNumber-1,n.getLineMaxColumn(t.lineNumber-1),t.lineNumber,1):t.lineNumber<n.getLineCount()?new f.Range(t.lineNumber,1,t.lineNumber+1,1):new f.Range(t.lineNumber,1,t.lineNumber,1);const h=l=>l.start+1<=t.column&&t.column<=l.end+1,r=(l,p)=>(l=Math.min(l,t.column),p=Math.max(p,t.column),new f.Range(t.lineNumber,l,t.lineNumber,p)),c=l=>{let p=l.start+1,m=l.end+1,v=!1;for(;m-1<u&&this._charAtIsWhitespace(a,m-1);)v=!0,m++;if(!v)for(;p>1&&this._charAtIsWhitespace(a,p-2);)p--;return r(p,m)},o=_._findPreviousWordOnLine(i,n,t);if(o&&h(o))return c(o);const d=_._findNextWordOnLine(i,n,t);return d&&h(d)?c(d):o&&d?r(o.end+1,d.start+1):o?r(o.start+1,o.end+1):d?r(d.start+1,d.end+1):r(1,u+1)}static _deleteWordPartLeft(i,n){if(!n.isEmpty())return n;const t=n.getPosition(),a=_._moveWordPartLeft(i,t);return new f.Range(t.lineNumber,t.column,a.lineNumber,a.column)}static _findFirstNonWhitespaceChar(i,n){const t=i.length;for(let a=n;a<t;a++){const u=i.charAt(a);if(u!==\" \"&&u!==\"\t\")return a}return t}static _deleteWordRightWhitespace(i,n){const t=i.getLineContent(n.lineNumber),a=n.column-1,u=this._findFirstNonWhitespaceChar(t,a);return a+1<u?new f.Range(n.lineNumber,n.column,n.lineNumber,u+1):null}static deleteWordRight(i,n){const t=i.wordSeparators,a=i.model,u=i.selection,h=i.whitespaceHeuristics;if(!u.isEmpty())return u;const r=new S.Position(u.positionLineNumber,u.positionColumn);let c=r.lineNumber,o=r.column;const d=a.getLineCount(),l=a.getLineMaxColumn(c);if(c===d&&o===l)return null;if(h){const m=this._deleteWordRightWhitespace(a,r);if(m)return m}let p=_._findNextWordOnLine(t,a,r);return n===2?p?o=p.end+1:o<l||c===d?o=l:(c++,p=_._findNextWordOnLine(t,a,new S.Position(c,1)),p?o=p.start+1:o=a.getLineMaxColumn(c)):(p&&o>=p.start+1&&(p=_._findNextWordOnLine(t,a,new S.Position(c,p.end+1))),p?o=p.start+1:o<l||c===d?o=l:(c++,p=_._findNextWordOnLine(t,a,new S.Position(c,1)),p?o=p.start+1:o=a.getLineMaxColumn(c))),new f.Range(c,o,r.lineNumber,r.column)}static _deleteWordPartRight(i,n){if(!n.isEmpty())return n;const t=n.getPosition(),a=_._moveWordPartRight(i,t);return new f.Range(t.lineNumber,t.column,a.lineNumber,a.column)}static _createWordAtPosition(i,n,t){const a=new f.Range(n,t.start+1,n,t.end+1);return{word:i.getValueInRange(a),startColumn:a.startColumn,endColumn:a.endColumn}}static getWordAtPosition(i,n,t){const a=(0,D.getMapForWordSeparators)(n),u=_._findPreviousWordOnLine(a,i,t);if(u&&u.wordType===1&&u.start<=t.column-1&&t.column-1<=u.end)return _._createWordAtPosition(i,t.lineNumber,u);const h=_._findNextWordOnLine(a,i,t);return h&&h.wordType===1&&h.start<=t.column-1&&t.column-1<=h.end?_._createWordAtPosition(i,t.lineNumber,h):null}static word(i,n,t,a,u){const h=(0,D.getMapForWordSeparators)(i.wordSeparators),r=_._findPreviousWordOnLine(h,n,u),c=_._findNextWordOnLine(h,n,u);if(!a){let m,v;return r&&r.wordType===1&&r.start<=u.column-1&&u.column-1<=r.end?(m=r.start+1,v=r.end+1):c&&c.wordType===1&&c.start<=u.column-1&&u.column-1<=c.end?(m=c.start+1,v=c.end+1):(r?m=r.end+1:m=1,c?v=c.start+1:v=n.getLineMaxColumn(u.lineNumber)),new k.SingleCursorState(new f.Range(u.lineNumber,m,u.lineNumber,v),1,0,new S.Position(u.lineNumber,v),0)}let o,d;r&&r.wordType===1&&r.start<u.column-1&&u.column-1<r.end?(o=r.start+1,d=r.end+1):c&&c.wordType===1&&c.start<u.column-1&&u.column-1<c.end?(o=c.start+1,d=c.end+1):(o=u.column,d=u.column);const l=u.lineNumber;let p;if(t.selectionStart.containsPosition(u))p=t.selectionStart.endColumn;else if(u.isBeforeOrEqual(t.selectionStart.getStartPosition())){p=o;const m=new S.Position(l,p);t.selectionStart.containsPosition(m)&&(p=t.selectionStart.endColumn)}else{p=d;const m=new S.Position(l,p);t.selectionStart.containsPosition(m)&&(p=t.selectionStart.startColumn)}return t.move(!0,l,p,0)}}e.WordOperations=_;class g extends _{static deleteWordPartLeft(i){const n=C([_.deleteWordLeft(i,0),_.deleteWordLeft(i,2),_._deleteWordPartLeft(i.model,i.selection)]);return n.sort(f.Range.compareRangesUsingEnds),n[2]}static deleteWordPartRight(i){const n=C([_.deleteWordRight(i,0),_.deleteWordRight(i,2),_._deleteWordPartRight(i.model,i.selection)]);return n.sort(f.Range.compareRangesUsingStarts),n[0]}static moveWordPartLeft(i,n,t){const a=C([_.moveWordLeft(i,n,t,0),_.moveWordLeft(i,n,t,2),_._moveWordPartLeft(n,t)]);return a.sort(S.Position.compare),a[2]}static moveWordPartRight(i,n,t){const a=C([_.moveWordRight(i,n,t,0),_.moveWordRight(i,n,t,2),_._moveWordPartRight(n,t)]);return a.sort(S.Position.compare),a[0]}}e.WordPartOperations=g;function C(s){return s.filter(i=>!!i)}}),define(ne[205],se([1,0,20,74,203,178,12,5]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CursorMove=e.CursorMoveCommands=void 0;class _{static addCursorDown(s,i,n){const t=[];let a=0;for(let u=0,h=i.length;u<h;u++){const r=i[u];t[a++]=new k.CursorState(r.modelState,r.viewState),n?t[a++]=k.CursorState.fromModelState(y.MoveOperations.translateDown(s.cursorConfig,s.model,r.modelState)):t[a++]=k.CursorState.fromViewState(y.MoveOperations.translateDown(s.cursorConfig,s,r.viewState))}return t}static addCursorUp(s,i,n){const t=[];let a=0;for(let u=0,h=i.length;u<h;u++){const r=i[u];t[a++]=new k.CursorState(r.modelState,r.viewState),n?t[a++]=k.CursorState.fromModelState(y.MoveOperations.translateUp(s.cursorConfig,s.model,r.modelState)):t[a++]=k.CursorState.fromViewState(y.MoveOperations.translateUp(s.cursorConfig,s,r.viewState))}return t}static moveToBeginningOfLine(s,i,n){const t=[];for(let a=0,u=i.length;a<u;a++){const h=i[a];t[a]=this._moveToLineStart(s,h,n)}return t}static _moveToLineStart(s,i,n){const t=i.viewState.position.column,a=i.modelState.position.column,u=t===a,h=i.viewState.position.lineNumber,r=s.getLineFirstNonWhitespaceColumn(h);return!u&&!(t===r)?this._moveToLineStartByView(s,i,n):this._moveToLineStartByModel(s,i,n)}static _moveToLineStartByView(s,i,n){return k.CursorState.fromViewState(y.MoveOperations.moveToBeginningOfLine(s.cursorConfig,s,i.viewState,n))}static _moveToLineStartByModel(s,i,n){return k.CursorState.fromModelState(y.MoveOperations.moveToBeginningOfLine(s.cursorConfig,s.model,i.modelState,n))}static moveToEndOfLine(s,i,n,t){const a=[];for(let u=0,h=i.length;u<h;u++){const r=i[u];a[u]=this._moveToLineEnd(s,r,n,t)}return a}static _moveToLineEnd(s,i,n,t){const a=i.viewState.position,u=s.getLineMaxColumn(a.lineNumber),h=a.column===u,r=i.modelState.position,c=s.model.getLineMaxColumn(r.lineNumber),o=u-a.column===c-r.column;return h||o?this._moveToLineEndByModel(s,i,n,t):this._moveToLineEndByView(s,i,n,t)}static _moveToLineEndByView(s,i,n,t){return k.CursorState.fromViewState(y.MoveOperations.moveToEndOfLine(s.cursorConfig,s,i.viewState,n,t))}static _moveToLineEndByModel(s,i,n,t){return k.CursorState.fromModelState(y.MoveOperations.moveToEndOfLine(s.cursorConfig,s.model,i.modelState,n,t))}static expandLineSelection(s,i){const n=[];for(let t=0,a=i.length;t<a;t++){const u=i[t],h=u.modelState.selection.startLineNumber,r=s.model.getLineCount();let c=u.modelState.selection.endLineNumber,o;c===r?o=s.model.getLineMaxColumn(r):(c++,o=1),n[t]=k.CursorState.fromModelState(new k.SingleCursorState(new f.Range(h,1,h,1),0,0,new S.Position(c,o),0))}return n}static moveToBeginningOfBuffer(s,i,n){const t=[];for(let a=0,u=i.length;a<u;a++){const h=i[a];t[a]=k.CursorState.fromModelState(y.MoveOperations.moveToBeginningOfBuffer(s.cursorConfig,s.model,h.modelState,n))}return t}static moveToEndOfBuffer(s,i,n){const t=[];for(let a=0,u=i.length;a<u;a++){const h=i[a];t[a]=k.CursorState.fromModelState(y.MoveOperations.moveToEndOfBuffer(s.cursorConfig,s.model,h.modelState,n))}return t}static selectAll(s,i){const n=s.model.getLineCount(),t=s.model.getLineMaxColumn(n);return k.CursorState.fromModelState(new k.SingleCursorState(new f.Range(1,1,1,1),0,0,new S.Position(n,t),0))}static line(s,i,n,t,a){const u=s.model.validatePosition(t),h=a?s.coordinatesConverter.validateViewPosition(new S.Position(a.lineNumber,a.column),u):s.coordinatesConverter.convertModelPositionToViewPosition(u);if(!n){const c=s.model.getLineCount();let o=u.lineNumber+1,d=1;return o>c&&(o=c,d=s.model.getLineMaxColumn(o)),k.CursorState.fromModelState(new k.SingleCursorState(new f.Range(u.lineNumber,1,o,d),2,0,new S.Position(o,d),0))}const r=i.modelState.selectionStart.getStartPosition().lineNumber;if(u.lineNumber<r)return k.CursorState.fromViewState(i.viewState.move(!0,h.lineNumber,1,0));if(u.lineNumber>r){const c=s.getLineCount();let o=h.lineNumber+1,d=1;return o>c&&(o=c,d=s.getLineMaxColumn(o)),k.CursorState.fromViewState(i.viewState.move(!0,o,d,0))}else{const c=i.modelState.selectionStart.getEndPosition();return k.CursorState.fromModelState(i.modelState.move(!0,c.lineNumber,c.column,0))}}static word(s,i,n,t){const a=s.model.validatePosition(t);return k.CursorState.fromModelState(D.WordOperations.word(s.cursorConfig,s.model,i.modelState,n,a))}static cancelSelection(s,i){if(!i.modelState.hasSelection())return new k.CursorState(i.modelState,i.viewState);const n=i.viewState.position.lineNumber,t=i.viewState.position.column;return k.CursorState.fromViewState(new k.SingleCursorState(new f.Range(n,t,n,t),0,0,new S.Position(n,t),0))}static moveTo(s,i,n,t,a){if(n){if(i.modelState.selectionStartKind===1)return this.word(s,i,n,t);if(i.modelState.selectionStartKind===2)return this.line(s,i,n,t,a)}const u=s.model.validatePosition(t),h=a?s.coordinatesConverter.validateViewPosition(new S.Position(a.lineNumber,a.column),u):s.coordinatesConverter.convertModelPositionToViewPosition(u);return k.CursorState.fromViewState(i.viewState.move(n,h.lineNumber,h.column,0))}static simpleMove(s,i,n,t,a,u){switch(n){case 0:return u===4?this._moveHalfLineLeft(s,i,t):this._moveLeft(s,i,t,a);case 1:return u===4?this._moveHalfLineRight(s,i,t):this._moveRight(s,i,t,a);case 2:return u===2?this._moveUpByViewLines(s,i,t,a):this._moveUpByModelLines(s,i,t,a);case 3:return u===2?this._moveDownByViewLines(s,i,t,a):this._moveDownByModelLines(s,i,t,a);case 4:return u===2?i.map(h=>k.CursorState.fromViewState(y.MoveOperations.moveToPrevBlankLine(s.cursorConfig,s,h.viewState,t))):i.map(h=>k.CursorState.fromModelState(y.MoveOperations.moveToPrevBlankLine(s.cursorConfig,s.model,h.modelState,t)));case 5:return u===2?i.map(h=>k.CursorState.fromViewState(y.MoveOperations.moveToNextBlankLine(s.cursorConfig,s,h.viewState,t))):i.map(h=>k.CursorState.fromModelState(y.MoveOperations.moveToNextBlankLine(s.cursorConfig,s.model,h.modelState,t)));case 6:return this._moveToViewMinColumn(s,i,t);case 7:return this._moveToViewFirstNonWhitespaceColumn(s,i,t);case 8:return this._moveToViewCenterColumn(s,i,t);case 9:return this._moveToViewMaxColumn(s,i,t);case 10:return this._moveToViewLastNonWhitespaceColumn(s,i,t);default:return null}}static viewportMove(s,i,n,t,a){const u=s.getCompletelyVisibleViewRange(),h=s.coordinatesConverter.convertViewRangeToModelRange(u);switch(n){case 11:{const r=this._firstLineNumberInRange(s.model,h,a),c=s.model.getLineFirstNonWhitespaceColumn(r);return[this._moveToModelPosition(s,i[0],t,r,c)]}case 13:{const r=this._lastLineNumberInRange(s.model,h,a),c=s.model.getLineFirstNonWhitespaceColumn(r);return[this._moveToModelPosition(s,i[0],t,r,c)]}case 12:{const r=Math.round((h.startLineNumber+h.endLineNumber)/2),c=s.model.getLineFirstNonWhitespaceColumn(r);return[this._moveToModelPosition(s,i[0],t,r,c)]}case 14:{const r=[];for(let c=0,o=i.length;c<o;c++){const d=i[c];r[c]=this.findPositionInViewportIfOutside(s,d,u,t)}return r}default:return null}}static findPositionInViewportIfOutside(s,i,n,t){const a=i.viewState.position.lineNumber;if(n.startLineNumber<=a&&a<=n.endLineNumber-1)return new k.CursorState(i.modelState,i.viewState);{let u;a>n.endLineNumber-1?u=n.endLineNumber-1:a<n.startLineNumber?u=n.startLineNumber:u=a;const h=y.MoveOperations.vertical(s.cursorConfig,s,a,i.viewState.position.column,i.viewState.leftoverVisibleColumns,u,!1);return k.CursorState.fromViewState(i.viewState.move(t,h.lineNumber,h.column,h.leftoverVisibleColumns))}}static _firstLineNumberInRange(s,i,n){let t=i.startLineNumber;return i.startColumn!==s.getLineMinColumn(t)&&t++,Math.min(i.endLineNumber,t+n-1)}static _lastLineNumberInRange(s,i,n){let t=i.startLineNumber;return i.startColumn!==s.getLineMinColumn(t)&&t++,Math.max(t,i.endLineNumber-n+1)}static _moveLeft(s,i,n,t){return i.map(a=>k.CursorState.fromViewState(y.MoveOperations.moveLeft(s.cursorConfig,s,a.viewState,n,t)))}static _moveHalfLineLeft(s,i,n){const t=[];for(let a=0,u=i.length;a<u;a++){const h=i[a],r=h.viewState.position.lineNumber,c=Math.round(s.getLineContent(r).length/2);t[a]=k.CursorState.fromViewState(y.MoveOperations.moveLeft(s.cursorConfig,s,h.viewState,n,c))}return t}static _moveRight(s,i,n,t){return i.map(a=>k.CursorState.fromViewState(y.MoveOperations.moveRight(s.cursorConfig,s,a.viewState,n,t)))}static _moveHalfLineRight(s,i,n){const t=[];for(let a=0,u=i.length;a<u;a++){const h=i[a],r=h.viewState.position.lineNumber,c=Math.round(s.getLineContent(r).length/2);t[a]=k.CursorState.fromViewState(y.MoveOperations.moveRight(s.cursorConfig,s,h.viewState,n,c))}return t}static _moveDownByViewLines(s,i,n,t){const a=[];for(let u=0,h=i.length;u<h;u++){const r=i[u];a[u]=k.CursorState.fromViewState(y.MoveOperations.moveDown(s.cursorConfig,s,r.viewState,n,t))}return a}static _moveDownByModelLines(s,i,n,t){const a=[];for(let u=0,h=i.length;u<h;u++){const r=i[u];a[u]=k.CursorState.fromModelState(y.MoveOperations.moveDown(s.cursorConfig,s.model,r.modelState,n,t))}return a}static _moveUpByViewLines(s,i,n,t){const a=[];for(let u=0,h=i.length;u<h;u++){const r=i[u];a[u]=k.CursorState.fromViewState(y.MoveOperations.moveUp(s.cursorConfig,s,r.viewState,n,t))}return a}static _moveUpByModelLines(s,i,n,t){const a=[];for(let u=0,h=i.length;u<h;u++){const r=i[u];a[u]=k.CursorState.fromModelState(y.MoveOperations.moveUp(s.cursorConfig,s.model,r.modelState,n,t))}return a}static _moveToViewPosition(s,i,n,t,a){return k.CursorState.fromViewState(i.viewState.move(n,t,a,0))}static _moveToModelPosition(s,i,n,t,a){return k.CursorState.fromModelState(i.modelState.move(n,t,a,0))}static _moveToViewMinColumn(s,i,n){const t=[];for(let a=0,u=i.length;a<u;a++){const h=i[a],r=h.viewState.position.lineNumber,c=s.getLineMinColumn(r);t[a]=this._moveToViewPosition(s,h,n,r,c)}return t}static _moveToViewFirstNonWhitespaceColumn(s,i,n){const t=[];for(let a=0,u=i.length;a<u;a++){const h=i[a],r=h.viewState.position.lineNumber,c=s.getLineFirstNonWhitespaceColumn(r);t[a]=this._moveToViewPosition(s,h,n,r,c)}return t}static _moveToViewCenterColumn(s,i,n){const t=[];for(let a=0,u=i.length;a<u;a++){const h=i[a],r=h.viewState.position.lineNumber,c=Math.round((s.getLineMaxColumn(r)+s.getLineMinColumn(r))/2);t[a]=this._moveToViewPosition(s,h,n,r,c)}return t}static _moveToViewMaxColumn(s,i,n){const t=[];for(let a=0,u=i.length;a<u;a++){const h=i[a],r=h.viewState.position.lineNumber,c=s.getLineMaxColumn(r);t[a]=this._moveToViewPosition(s,h,n,r,c)}return t}static _moveToViewLastNonWhitespaceColumn(s,i,n){const t=[];for(let a=0,u=i.length;a<u;a++){const h=i[a],r=h.viewState.position.lineNumber,c=s.getLineLastNonWhitespaceColumn(r);t[a]=this._moveToViewPosition(s,h,n,r,c)}return t}}e.CursorMoveCommands=_;var g;(function(C){const s=function(n){if(!L.isObject(n))return!1;const t=n;return!(!L.isString(t.to)||!L.isUndefined(t.select)&&!L.isBoolean(t.select)||!L.isUndefined(t.by)&&!L.isString(t.by)||!L.isUndefined(t.value)&&!L.isNumber(t.value))};C.description={description:\"Move cursor to a logical position in the view\",args:[{name:\"Cursor move argument object\",description:`Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'to': A mandatory logical position value providing where to move the cursor.\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'left', 'right', 'up', 'down', 'prevBlankLine', 'nextBlankLine',\n\t\t\t\t\t\t'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter'\n\t\t\t\t\t\t'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter'\n\t\t\t\t\t\t'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t* 'by': Unit to move. Default is computed based on 'to' value.\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'line', 'wrappedLine', 'character', 'halfLine'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t* 'value': Number of units to move. Default is '1'.\n\t\t\t\t\t* 'select': If 'true' makes the selection. Default is 'false'.\n\t\t\t\t`,constraint:s,schema:{type:\"object\",required:[\"to\"],properties:{to:{type:\"string\",enum:[\"left\",\"right\",\"up\",\"down\",\"prevBlankLine\",\"nextBlankLine\",\"wrappedLineStart\",\"wrappedLineEnd\",\"wrappedLineColumnCenter\",\"wrappedLineFirstNonWhitespaceCharacter\",\"wrappedLineLastNonWhitespaceCharacter\",\"viewPortTop\",\"viewPortCenter\",\"viewPortBottom\",\"viewPortIfOutside\"]},by:{type:\"string\",enum:[\"line\",\"wrappedLine\",\"character\",\"halfLine\"]},value:{type:\"number\",default:1},select:{type:\"boolean\",default:!1}}}}]},C.RawDirection={Left:\"left\",Right:\"right\",Up:\"up\",Down:\"down\",PrevBlankLine:\"prevBlankLine\",NextBlankLine:\"nextBlankLine\",WrappedLineStart:\"wrappedLineStart\",WrappedLineFirstNonWhitespaceCharacter:\"wrappedLineFirstNonWhitespaceCharacter\",WrappedLineColumnCenter:\"wrappedLineColumnCenter\",WrappedLineEnd:\"wrappedLineEnd\",WrappedLineLastNonWhitespaceCharacter:\"wrappedLineLastNonWhitespaceCharacter\",ViewPortTop:\"viewPortTop\",ViewPortCenter:\"viewPortCenter\",ViewPortBottom:\"viewPortBottom\",ViewPortIfOutside:\"viewPortIfOutside\"},C.RawUnit={Line:\"line\",WrappedLine:\"wrappedLine\",Character:\"character\",HalfLine:\"halfLine\"};function i(n){if(!n.to)return null;let t;switch(n.to){case C.RawDirection.Left:t=0;break;case C.RawDirection.Right:t=1;break;case C.RawDirection.Up:t=2;break;case C.RawDirection.Down:t=3;break;case C.RawDirection.PrevBlankLine:t=4;break;case C.RawDirection.NextBlankLine:t=5;break;case C.RawDirection.WrappedLineStart:t=6;break;case C.RawDirection.WrappedLineFirstNonWhitespaceCharacter:t=7;break;case C.RawDirection.WrappedLineColumnCenter:t=8;break;case C.RawDirection.WrappedLineEnd:t=9;break;case C.RawDirection.WrappedLineLastNonWhitespaceCharacter:t=10;break;case C.RawDirection.ViewPortTop:t=11;break;case C.RawDirection.ViewPortBottom:t=13;break;case C.RawDirection.ViewPortCenter:t=12;break;case C.RawDirection.ViewPortIfOutside:t=14;break;default:return null}let a=0;switch(n.by){case C.RawUnit.Line:a=1;break;case C.RawUnit.WrappedLine:a=2;break;case C.RawUnit.Character:a=3;break;case C.RawUnit.HalfLine:a=4;break}return{direction:t,unit:a,select:!!n.select,value:n.value||1}}C.parse=i})(g||(e.CursorMove=g={}))}),define(ne[497],se([1,0,74,12,5,24]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Cursor=void 0;class S{constructor(_){this._selTrackedRange=null,this._trackSelection=!0,this._setState(_,new L.SingleCursorState(new y.Range(1,1,1,1),0,0,new k.Position(1,1),0),new L.SingleCursorState(new y.Range(1,1,1,1),0,0,new k.Position(1,1),0))}dispose(_){this._removeTrackedRange(_)}startTrackingSelection(_){this._trackSelection=!0,this._updateTrackedRange(_)}stopTrackingSelection(_){this._trackSelection=!1,this._removeTrackedRange(_)}_updateTrackedRange(_){this._trackSelection&&(this._selTrackedRange=_.model._setTrackedRange(this._selTrackedRange,this.modelState.selection,0))}_removeTrackedRange(_){this._selTrackedRange=_.model._setTrackedRange(this._selTrackedRange,null,0)}asCursorState(){return new L.CursorState(this.modelState,this.viewState)}readSelectionFromMarkers(_){const g=_.model._getTrackedRange(this._selTrackedRange);return this.modelState.selection.isEmpty()&&!g.isEmpty()?D.Selection.fromRange(g.collapseToEnd(),this.modelState.selection.getDirection()):D.Selection.fromRange(g,this.modelState.selection.getDirection())}ensureValidState(_){this._setState(_,this.modelState,this.viewState)}setState(_,g,C){this._setState(_,g,C)}static _validatePositionWithCache(_,g,C,s){return g.equals(C)?s:_.normalizePosition(g,2)}static _validateViewState(_,g){const C=g.position,s=g.selectionStart.getStartPosition(),i=g.selectionStart.getEndPosition(),n=_.normalizePosition(C,2),t=this._validatePositionWithCache(_,s,C,n),a=this._validatePositionWithCache(_,i,s,t);return C.equals(n)&&s.equals(t)&&i.equals(a)?g:new L.SingleCursorState(y.Range.fromPositions(t,a),g.selectionStartKind,g.selectionStartLeftoverVisibleColumns+s.column-t.column,n,g.leftoverVisibleColumns+C.column-n.column)}_setState(_,g,C){if(C&&(C=S._validateViewState(_.viewModel,C)),g){const s=_.model.validateRange(g.selectionStart),i=g.selectionStart.equalsRange(s)?g.selectionStartLeftoverVisibleColumns:0,n=_.model.validatePosition(g.position),t=g.position.equals(n)?g.leftoverVisibleColumns:0;g=new L.SingleCursorState(s,g.selectionStartKind,i,n,t)}else{if(!C)return;const s=_.model.validateRange(_.coordinatesConverter.convertViewRangeToModelRange(C.selectionStart)),i=_.model.validatePosition(_.coordinatesConverter.convertViewPositionToModelPosition(C.position));g=new L.SingleCursorState(s,C.selectionStartKind,C.selectionStartLeftoverVisibleColumns,i,C.leftoverVisibleColumns)}if(C){const s=_.coordinatesConverter.validateViewRange(C.selectionStart,g.selectionStart),i=_.coordinatesConverter.validateViewPosition(C.position,g.position);C=new L.SingleCursorState(s,g.selectionStartKind,g.selectionStartLeftoverVisibleColumns,i,g.leftoverVisibleColumns)}else{const s=_.coordinatesConverter.convertModelPositionToViewPosition(new k.Position(g.selectionStart.startLineNumber,g.selectionStart.startColumn)),i=_.coordinatesConverter.convertModelPositionToViewPosition(new k.Position(g.selectionStart.endLineNumber,g.selectionStart.endColumn)),n=new y.Range(s.lineNumber,s.column,i.lineNumber,i.column),t=_.coordinatesConverter.convertModelPositionToViewPosition(g.position);C=new L.SingleCursorState(n,g.selectionStartKind,g.selectionStartLeftoverVisibleColumns,t,g.leftoverVisibleColumns)}this.modelState=g,this.viewState=C,this._updateTrackedRange(_)}}e.Cursor=S}),define(ne[498],se([1,0,14,74,497,12,5,24]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CursorCollection=void 0;class _{constructor(C){this.context=C,this.cursors=[new y.Cursor(C)],this.lastAddedCursorIndex=0}dispose(){for(const C of this.cursors)C.dispose(this.context)}startTrackingSelections(){for(const C of this.cursors)C.startTrackingSelection(this.context)}stopTrackingSelections(){for(const C of this.cursors)C.stopTrackingSelection(this.context)}updateContext(C){this.context=C}ensureValidState(){for(const C of this.cursors)C.ensureValidState(this.context)}readSelectionFromMarkers(){return this.cursors.map(C=>C.readSelectionFromMarkers(this.context))}getAll(){return this.cursors.map(C=>C.asCursorState())}getViewPositions(){return this.cursors.map(C=>C.viewState.position)}getTopMostViewPosition(){return(0,L.findMinBy)(this.cursors,(0,L.compareBy)(C=>C.viewState.position,D.Position.compare)).viewState.position}getBottomMostViewPosition(){return(0,L.findLastMaxBy)(this.cursors,(0,L.compareBy)(C=>C.viewState.position,D.Position.compare)).viewState.position}getSelections(){return this.cursors.map(C=>C.modelState.selection)}getViewSelections(){return this.cursors.map(C=>C.viewState.selection)}setSelections(C){this.setStates(k.CursorState.fromModelSelections(C))}getPrimaryCursor(){return this.cursors[0].asCursorState()}setStates(C){C!==null&&(this.cursors[0].setState(this.context,C[0].modelState,C[0].viewState),this._setSecondaryStates(C.slice(1)))}_setSecondaryStates(C){const s=this.cursors.length-1,i=C.length;if(s<i){const n=i-s;for(let t=0;t<n;t++)this._addSecondaryCursor()}else if(s>i){const n=s-i;for(let t=0;t<n;t++)this._removeSecondaryCursor(this.cursors.length-2)}for(let n=0;n<i;n++)this.cursors[n+1].setState(this.context,C[n].modelState,C[n].viewState)}killSecondaryCursors(){this._setSecondaryStates([])}_addSecondaryCursor(){this.cursors.push(new y.Cursor(this.context)),this.lastAddedCursorIndex=this.cursors.length-1}getLastAddedCursorIndex(){return this.cursors.length===1||this.lastAddedCursorIndex===0?0:this.lastAddedCursorIndex}_removeSecondaryCursor(C){this.lastAddedCursorIndex>=C+1&&this.lastAddedCursorIndex--,this.cursors[C+1].dispose(this.context),this.cursors.splice(C+1,1)}normalize(){if(this.cursors.length===1)return;const C=this.cursors.slice(0),s=[];for(let i=0,n=C.length;i<n;i++)s.push({index:i,selection:C[i].modelState.selection});s.sort((0,L.compareBy)(i=>i.selection,S.Range.compareRangesUsingStarts));for(let i=0;i<s.length-1;i++){const n=s[i],t=s[i+1],a=n.selection,u=t.selection;if(!this.context.cursorConfig.multiCursorMergeOverlapping)continue;let h;if(u.isEmpty()||a.isEmpty()?h=u.getStartPosition().isBeforeOrEqual(a.getEndPosition()):h=u.getStartPosition().isBefore(a.getEndPosition()),h){const r=n.index<t.index?i:i+1,c=n.index<t.index?i+1:i,o=s[c].index,d=s[r].index,l=s[c].selection,p=s[r].selection;if(!l.equalsSelection(p)){const m=l.plusRange(p),v=l.selectionStartLineNumber===l.startLineNumber&&l.selectionStartColumn===l.startColumn,b=p.selectionStartLineNumber===p.startLineNumber&&p.selectionStartColumn===p.startColumn;let w;o===this.lastAddedCursorIndex?(w=v,this.lastAddedCursorIndex=d):w=b;let E;w?E=new f.Selection(m.startLineNumber,m.startColumn,m.endLineNumber,m.endColumn):E=new f.Selection(m.endLineNumber,m.endColumn,m.startLineNumber,m.startColumn),s[r].selection=E;const I=k.CursorState.fromModelSelection(E);C[d].setState(this.context,I.modelState,I.viewState)}for(const m of s)m.index>o&&m.index--;C.splice(o,1),s.splice(c,1),this._removeSecondaryCursor(o-1),i--}}}}e.CursorCollection=_}),define(ne[499],se([1,0,110]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CharacterPairSupport=void 0;class k{constructor(D){if(D.autoClosingPairs?this._autoClosingPairs=D.autoClosingPairs.map(S=>new L.StandardAutoClosingPairConditional(S)):D.brackets?this._autoClosingPairs=D.brackets.map(S=>new L.StandardAutoClosingPairConditional({open:S[0],close:S[1]})):this._autoClosingPairs=[],D.__electricCharacterSupport&&D.__electricCharacterSupport.docComment){const S=D.__electricCharacterSupport.docComment;this._autoClosingPairs.push(new L.StandardAutoClosingPairConditional({open:S.open,close:S.close||\"\"}))}this._autoCloseBeforeForQuotes=typeof D.autoCloseBefore==\"string\"?D.autoCloseBefore:k.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES,this._autoCloseBeforeForBrackets=typeof D.autoCloseBefore==\"string\"?D.autoCloseBefore:k.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS,this._surroundingPairs=D.surroundingPairs||this._autoClosingPairs}getAutoClosingPairs(){return this._autoClosingPairs}getAutoCloseBeforeSet(D){return D?this._autoCloseBeforeForQuotes:this._autoCloseBeforeForBrackets}getSurroundingPairs(){return this._surroundingPairs}}e.CharacterPairSupport=k,k.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES=`;:.,=}])> \n\t`,k.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS=`'\"\\`;:.,=}])> \n\t`}),define(ne[500],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IndentRulesSupport=void 0;function L(y){return y.global&&(y.lastIndex=0),!0}class k{constructor(D){this._indentationRules=D}shouldIncrease(D){return!!(this._indentationRules&&this._indentationRules.increaseIndentPattern&&L(this._indentationRules.increaseIndentPattern)&&this._indentationRules.increaseIndentPattern.test(D))}shouldDecrease(D){return!!(this._indentationRules&&this._indentationRules.decreaseIndentPattern&&L(this._indentationRules.decreaseIndentPattern)&&this._indentationRules.decreaseIndentPattern.test(D))}shouldIndentNextLine(D){return!!(this._indentationRules&&this._indentationRules.indentNextLinePattern&&L(this._indentationRules.indentNextLinePattern)&&this._indentationRules.indentNextLinePattern.test(D))}shouldIgnore(D){return!!(this._indentationRules&&this._indentationRules.unIndentedLinePattern&&L(this._indentationRules.unIndentedLinePattern)&&this._indentationRules.unIndentedLinePattern.test(D))}getIndentMetadata(D){let S=0;return this.shouldIncrease(D)&&(S+=1),this.shouldDecrease(D)&&(S+=2),this.shouldIndentNextLine(D)&&(S+=4),this.shouldIgnore(D)&&(S+=8),S}}e.IndentRulesSupport=k}),define(ne[501],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BasicInplaceReplace=void 0;class L{constructor(){this._defaultValueSet=[[\"true\",\"false\"],[\"True\",\"False\"],[\"Private\",\"Public\",\"Friend\",\"ReadOnly\",\"Partial\",\"Protected\",\"WriteOnly\"],[\"public\",\"protected\",\"private\"]]}navigateValueSet(y,D,S,f,_){if(y&&D){const g=this.doNavigateValueSet(D,_);if(g)return{range:y,value:g}}if(S&&f){const g=this.doNavigateValueSet(f,_);if(g)return{range:S,value:g}}return null}doNavigateValueSet(y,D){const S=this.numberReplace(y,D);return S!==null?S:this.textReplace(y,D)}numberReplace(y,D){const S=Math.pow(10,y.length-(y.lastIndexOf(\".\")+1));let f=Number(y);const _=parseFloat(y);return!isNaN(f)&&!isNaN(_)&&f===_?f===0&&!D?null:(f=Math.floor(f*S),f+=D?S:-S,String(f/S)):null}textReplace(y,D){return this.valueSetsReplace(this._defaultValueSet,y,D)}valueSetsReplace(y,D,S){let f=null;for(let _=0,g=y.length;f===null&&_<g;_++)f=this.valueSetReplace(y[_],D,S);return f}valueSetReplace(y,D,S){let f=y.indexOf(D);return f>=0?(f+=S?1:-1,f<0?f=y.length-1:f%=y.length,y[f]):null}}e.BasicInplaceReplace=L,L.INSTANCE=new L}),define(ne[502],se([1,0,261]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ClosingBracketKind=e.OpeningBracketKind=e.BracketKindBase=e.LanguageBracketsConfiguration=void 0;class k{constructor(g,C){this.languageId=g;const s=C.brackets?y(C.brackets):[],i=new L.CachedFunction(a=>{const u=new Set;return{info:new S(this,a,u),closing:u}}),n=new L.CachedFunction(a=>{const u=new Set,h=new Set;return{info:new f(this,a,u,h),opening:u,openingColorized:h}});for(const[a,u]of s){const h=i.get(a),r=n.get(u);h.closing.add(r.info),r.opening.add(h.info)}const t=C.colorizedBracketPairs?y(C.colorizedBracketPairs):s.filter(a=>!(a[0]===\"<\"&&a[1]===\">\"));for(const[a,u]of t){const h=i.get(a),r=n.get(u);h.closing.add(r.info),r.openingColorized.add(h.info),r.opening.add(h.info)}this._openingBrackets=new Map([...i.cachedValues].map(([a,u])=>[a,u.info])),this._closingBrackets=new Map([...n.cachedValues].map(([a,u])=>[a,u.info]))}get openingBrackets(){return[...this._openingBrackets.values()]}get closingBrackets(){return[...this._closingBrackets.values()]}getOpeningBracketInfo(g){return this._openingBrackets.get(g)}getClosingBracketInfo(g){return this._closingBrackets.get(g)}getBracketInfo(g){return this.getOpeningBracketInfo(g)||this.getClosingBracketInfo(g)}}e.LanguageBracketsConfiguration=k;function y(_){return _.filter(([g,C])=>g!==\"\"&&C!==\"\")}class D{constructor(g,C){this.config=g,this.bracketText=C}get languageId(){return this.config.languageId}}e.BracketKindBase=D;class S extends D{constructor(g,C,s){super(g,C),this.openedBrackets=s,this.isOpeningBracket=!0}}e.OpeningBracketKind=S;class f extends D{constructor(g,C,s,i){super(g,C),this.openingBrackets=s,this.openingColorizedBrackets=i,this.isOpeningBracket=!1}closes(g){return g.config!==this.config?!1:this.openingBrackets.has(g)}closesColorized(g){return g.config!==this.config?!1:this.openingColorizedBrackets.has(g)}getOpeningBrackets(){return[...this.openingBrackets]}}e.ClosingBracketKind=f}),define(ne[503],se([1,0,9,11,110]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OnEnterSupport=void 0;class D{constructor(f){f=f||{},f.brackets=f.brackets||[[\"(\",\")\"],[\"{\",\"}\"],[\"[\",\"]\"]],this._brackets=[],f.brackets.forEach(_=>{const g=D._createOpenBracketRegExp(_[0]),C=D._createCloseBracketRegExp(_[1]);g&&C&&this._brackets.push({open:_[0],openRegExp:g,close:_[1],closeRegExp:C})}),this._regExpRules=f.onEnterRules||[]}onEnter(f,_,g,C){if(f>=3)for(let s=0,i=this._regExpRules.length;s<i;s++){const n=this._regExpRules[s];if([{reg:n.beforeText,text:g},{reg:n.afterText,text:C},{reg:n.previousLineText,text:_}].every(a=>a.reg?(a.reg.lastIndex=0,a.reg.test(a.text)):!0))return n.action}if(f>=2&&g.length>0&&C.length>0)for(let s=0,i=this._brackets.length;s<i;s++){const n=this._brackets[s];if(n.openRegExp.test(g)&&n.closeRegExp.test(C))return{indentAction:y.IndentAction.IndentOutdent}}if(f>=2&&g.length>0){for(let s=0,i=this._brackets.length;s<i;s++)if(this._brackets[s].openRegExp.test(g))return{indentAction:y.IndentAction.Indent}}return null}static _createOpenBracketRegExp(f){let _=k.escapeRegExpCharacters(f);return/\\B/.test(_.charAt(0))||(_=\"\\\\b\"+_),_+=\"\\\\s*$\",D._safeRegExp(_)}static _createCloseBracketRegExp(f){let _=k.escapeRegExpCharacters(f);return/\\B/.test(_.charAt(_.length-1))||(_=_+\"\\\\b\"),_=\"^\\\\s*\"+_,D._safeRegExp(_)}static _safeRegExp(f){try{return new RegExp(f)}catch(_){return(0,L.onUnexpectedError)(_),null}}}e.OnEnterSupport=D}),define(ne[504],se([1,0,38]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.generateTokensCSSForColorMap=e.ThemeTrieElement=e.ThemeTrieElementRule=e.strcmp=e.toStandardTokenType=e.TokenTheme=e.ColorMap=e.parseTokenTheme=e.ParsedTokenThemeRule=void 0;class k{constructor(u,h,r,c,o){this._parsedThemeRuleBrand=void 0,this.token=u,this.index=h,this.fontStyle=r,this.foreground=c,this.background=o}}e.ParsedTokenThemeRule=k;function y(a){if(!a||!Array.isArray(a))return[];const u=[];let h=0;for(let r=0,c=a.length;r<c;r++){const o=a[r];let d=-1;if(typeof o.fontStyle==\"string\"){d=0;const m=o.fontStyle.split(\" \");for(let v=0,b=m.length;v<b;v++)switch(m[v]){case\"italic\":d=d|1;break;case\"bold\":d=d|2;break;case\"underline\":d=d|4;break;case\"strikethrough\":d=d|8;break}}let l=null;typeof o.foreground==\"string\"&&(l=o.foreground);let p=null;typeof o.background==\"string\"&&(p=o.background),u[h++]=new k(o.token||\"\",r,d,l,p)}return u}e.parseTokenTheme=y;function D(a,u){a.sort((v,b)=>{const w=s(v.token,b.token);return w!==0?w:v.index-b.index});let h=0,r=\"000000\",c=\"ffffff\";for(;a.length>=1&&a[0].token===\"\";){const v=a.shift();v.fontStyle!==-1&&(h=v.fontStyle),v.foreground!==null&&(r=v.foreground),v.background!==null&&(c=v.background)}const o=new f;for(const v of u)o.getId(v);const d=o.getId(r),l=o.getId(c),p=new i(h,d,l),m=new n(p);for(let v=0,b=a.length;v<b;v++){const w=a[v];m.insert(w.token,w.fontStyle,o.getId(w.foreground),o.getId(w.background))}return new _(o,m)}const S=/^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/;class f{constructor(){this._lastColorId=0,this._id2color=[],this._color2id=new Map}getId(u){if(u===null)return 0;const h=u.match(S);if(!h)throw new Error(\"Illegal value for token color: \"+u);u=h[1].toUpperCase();let r=this._color2id.get(u);return r||(r=++this._lastColorId,this._color2id.set(u,r),this._id2color[r]=L.Color.fromHex(\"#\"+u),r)}getColorMap(){return this._id2color.slice(0)}}e.ColorMap=f;class _{static createFromRawTokenTheme(u,h){return this.createFromParsedTokenTheme(y(u),h)}static createFromParsedTokenTheme(u,h){return D(u,h)}constructor(u,h){this._colorMap=u,this._root=h,this._cache=new Map}getColorMap(){return this._colorMap.getColorMap()}_match(u){return this._root.match(u)}match(u,h){let r=this._cache.get(h);if(typeof r>\"u\"){const c=this._match(h),o=C(h);r=(c.metadata|o<<8)>>>0,this._cache.set(h,r)}return(r|u<<0)>>>0}}e.TokenTheme=_;const g=/\\b(comment|string|regex|regexp)\\b/;function C(a){const u=a.match(g);if(!u)return 0;switch(u[1]){case\"comment\":return 1;case\"string\":return 2;case\"regex\":return 3;case\"regexp\":return 3}throw new Error(\"Unexpected match for standard token type!\")}e.toStandardTokenType=C;function s(a,u){return a<u?-1:a>u?1:0}e.strcmp=s;class i{constructor(u,h,r){this._themeTrieElementRuleBrand=void 0,this._fontStyle=u,this._foreground=h,this._background=r,this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}clone(){return new i(this._fontStyle,this._foreground,this._background)}acceptOverwrite(u,h,r){u!==-1&&(this._fontStyle=u),h!==0&&(this._foreground=h),r!==0&&(this._background=r),this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}}e.ThemeTrieElementRule=i;class n{constructor(u){this._themeTrieElementBrand=void 0,this._mainRule=u,this._children=new Map}match(u){if(u===\"\")return this._mainRule;const h=u.indexOf(\".\");let r,c;h===-1?(r=u,c=\"\"):(r=u.substring(0,h),c=u.substring(h+1));const o=this._children.get(r);return typeof o<\"u\"?o.match(c):this._mainRule}insert(u,h,r,c){if(u===\"\"){this._mainRule.acceptOverwrite(h,r,c);return}const o=u.indexOf(\".\");let d,l;o===-1?(d=u,l=\"\"):(d=u.substring(0,o),l=u.substring(o+1));let p=this._children.get(d);typeof p>\"u\"&&(p=new n(this._mainRule.clone()),this._children.set(d,p)),p.insert(l,h,r,c)}}e.ThemeTrieElement=n;function t(a){const u=[];for(let h=1,r=a.length;h<r;h++){const c=a[h];u[h]=`.mtk${h} { color: ${c}; }`}return u.push(\".mtki { font-style: italic; }\"),u.push(\".mtkb { font-weight: bold; }\"),u.push(\".mtku { text-decoration: underline; text-underline-position: under; }\"),u.push(\".mtks { text-decoration: line-through; }\"),u.push(\".mtks.mtku { text-decoration: underline line-through; text-underline-position: under; }\"),u.join(`\n`)}e.generateTokensCSSForColorMap=t}),define(ne[48],se([1,0,47]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.shouldSynchronizeModel=e.ApplyEditsResult=e.SearchData=e.ValidAnnotatedEditOperation=e.isITextSnapshot=e.FindMatch=e.TextModelResolvedOptions=e.InjectedTextCursorStops=e.MinimapPosition=e.GlyphMarginLane=e.OverviewRulerLane=void 0;var k;(function(t){t[t.Left=1]=\"Left\",t[t.Center=2]=\"Center\",t[t.Right=4]=\"Right\",t[t.Full=7]=\"Full\"})(k||(e.OverviewRulerLane=k={}));var y;(function(t){t[t.Left=1]=\"Left\",t[t.Right=2]=\"Right\"})(y||(e.GlyphMarginLane=y={}));var D;(function(t){t[t.Inline=1]=\"Inline\",t[t.Gutter=2]=\"Gutter\"})(D||(e.MinimapPosition=D={}));var S;(function(t){t[t.Both=0]=\"Both\",t[t.Right=1]=\"Right\",t[t.Left=2]=\"Left\",t[t.None=3]=\"None\"})(S||(e.InjectedTextCursorStops=S={}));class f{get originalIndentSize(){return this._indentSizeIsTabSize?\"tabSize\":this.indentSize}constructor(a){this._textModelResolvedOptionsBrand=void 0,this.tabSize=Math.max(1,a.tabSize|0),a.indentSize===\"tabSize\"?(this.indentSize=this.tabSize,this._indentSizeIsTabSize=!0):(this.indentSize=Math.max(1,a.indentSize|0),this._indentSizeIsTabSize=!1),this.insertSpaces=!!a.insertSpaces,this.defaultEOL=a.defaultEOL|0,this.trimAutoWhitespace=!!a.trimAutoWhitespace,this.bracketPairColorizationOptions=a.bracketPairColorizationOptions}equals(a){return this.tabSize===a.tabSize&&this._indentSizeIsTabSize===a._indentSizeIsTabSize&&this.indentSize===a.indentSize&&this.insertSpaces===a.insertSpaces&&this.defaultEOL===a.defaultEOL&&this.trimAutoWhitespace===a.trimAutoWhitespace&&(0,L.equals)(this.bracketPairColorizationOptions,a.bracketPairColorizationOptions)}createChangeEvent(a){return{tabSize:this.tabSize!==a.tabSize,indentSize:this.indentSize!==a.indentSize,insertSpaces:this.insertSpaces!==a.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==a.trimAutoWhitespace}}}e.TextModelResolvedOptions=f;class _{constructor(a,u){this._findMatchBrand=void 0,this.range=a,this.matches=u}}e.FindMatch=_;function g(t){return t&&typeof t.read==\"function\"}e.isITextSnapshot=g;class C{constructor(a,u,h,r,c,o){this.identifier=a,this.range=u,this.text=h,this.forceMoveMarkers=r,this.isAutoWhitespaceEdit=c,this._isTracked=o}}e.ValidAnnotatedEditOperation=C;class s{constructor(a,u,h){this.regex=a,this.wordSeparators=u,this.simpleSearch=h}}e.SearchData=s;class i{constructor(a,u,h){this.reverseEdits=a,this.changes=u,this.trimAutoWhitespaceLineNumbers=h}}e.ApplyEditsResult=i;function n(t){return!t.isTooLargeForSyncing()&&!t.isForSimpleWidget}e.shouldSynchronizeModel=n}),define(ne[91],se([1,0,11,5]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.lengthOfString=e.lengthsToRange=e.positionToLength=e.lengthGreaterThanEqual=e.lengthLessThanEqual=e.lengthLessThan=e.lengthDiffNonNegative=e.lengthEquals=e.sumLengths=e.lengthAdd=e.lengthGetColumnCountIfZeroLineCount=e.lengthGetLineCount=e.lengthToObj=e.toLength=e.lengthIsZero=e.lengthZero=e.lengthDiff=e.LengthObj=void 0;class y{constructor(p,m){this.lineCount=p,this.columnCount=m}toString(){return`${this.lineCount},${this.columnCount}`}}e.LengthObj=y,y.zero=new y(0,0);function D(l,p,m,v){return l!==m?_(m-l,v):_(0,v-p)}e.lengthDiff=D,e.lengthZero=0;function S(l){return l===0}e.lengthIsZero=S;const f=Math.pow(2,26);function _(l,p){return l*f+p}e.toLength=_;function g(l){const p=l,m=Math.floor(p/f),v=p-m*f;return new y(m,v)}e.lengthToObj=g;function C(l){return Math.floor(l/f)}e.lengthGetLineCount=C;function s(l){return l}e.lengthGetColumnCountIfZeroLineCount=s;function i(l,p){let m=l+p;return p>=f&&(m=m-l%f),m}e.lengthAdd=i;function n(l,p){return l.reduce((m,v)=>i(m,p(v)),e.lengthZero)}e.sumLengths=n;function t(l,p){return l===p}e.lengthEquals=t;function a(l,p){const m=l,v=p;if(v-m<=0)return e.lengthZero;const w=Math.floor(m/f),E=Math.floor(v/f),I=v-E*f;if(w===E){const M=m-w*f;return _(0,I-M)}else return _(E-w,I)}e.lengthDiffNonNegative=a;function u(l,p){return l<p}e.lengthLessThan=u;function h(l,p){return l<=p}e.lengthLessThanEqual=h;function r(l,p){return l>=p}e.lengthGreaterThanEqual=r;function c(l){return _(l.lineNumber-1,l.column-1)}e.positionToLength=c;function o(l,p){const m=l,v=Math.floor(m/f),b=m-v*f,w=p,E=Math.floor(w/f),I=w-E*f;return new k.Range(v+1,b+1,E+1,I+1)}e.lengthsToRange=o;function d(l){const p=(0,L.splitLines)(l);return _(p.length-1,p[p.length-1].length)}e.lengthOfString=d}),define(ne[179],se([1,0,5,91]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BeforeEditPositionMapper=e.TextEditInfo=void 0;class y{static fromModelContentChanges(_){return _.map(C=>{const s=L.Range.lift(C.range);return new y((0,k.positionToLength)(s.getStartPosition()),(0,k.positionToLength)(s.getEndPosition()),(0,k.lengthOfString)(C.text))}).reverse()}constructor(_,g,C){this.startOffset=_,this.endOffset=g,this.newLength=C}toString(){return`[${(0,k.lengthToObj)(this.startOffset)}...${(0,k.lengthToObj)(this.endOffset)}) -> ${(0,k.lengthToObj)(this.newLength)}`}}e.TextEditInfo=y;class D{constructor(_){this.nextEditIdx=0,this.deltaOldToNewLineCount=0,this.deltaOldToNewColumnCount=0,this.deltaLineIdxInOld=-1,this.edits=_.map(g=>S.from(g))}getOffsetBeforeChange(_){return this.adjustNextEdit(_),this.translateCurToOld(_)}getDistanceToNextChange(_){this.adjustNextEdit(_);const g=this.edits[this.nextEditIdx],C=g?this.translateOldToCur(g.offsetObj):null;return C===null?null:(0,k.lengthDiffNonNegative)(_,C)}translateOldToCur(_){return _.lineCount===this.deltaLineIdxInOld?(0,k.toLength)(_.lineCount+this.deltaOldToNewLineCount,_.columnCount+this.deltaOldToNewColumnCount):(0,k.toLength)(_.lineCount+this.deltaOldToNewLineCount,_.columnCount)}translateCurToOld(_){const g=(0,k.lengthToObj)(_);return g.lineCount-this.deltaOldToNewLineCount===this.deltaLineIdxInOld?(0,k.toLength)(g.lineCount-this.deltaOldToNewLineCount,g.columnCount-this.deltaOldToNewColumnCount):(0,k.toLength)(g.lineCount-this.deltaOldToNewLineCount,g.columnCount)}adjustNextEdit(_){for(;this.nextEditIdx<this.edits.length;){const g=this.edits[this.nextEditIdx],C=this.translateOldToCur(g.endOffsetAfterObj);if((0,k.lengthLessThanEqual)(C,_)){this.nextEditIdx++;const s=(0,k.lengthToObj)(C),i=(0,k.lengthToObj)(this.translateOldToCur(g.endOffsetBeforeObj)),n=s.lineCount-i.lineCount;this.deltaOldToNewLineCount+=n;const t=this.deltaLineIdxInOld===g.endOffsetBeforeObj.lineCount?this.deltaOldToNewColumnCount:0,a=s.columnCount-i.columnCount;this.deltaOldToNewColumnCount=t+a,this.deltaLineIdxInOld=g.endOffsetBeforeObj.lineCount}else break}}}e.BeforeEditPositionMapper=D;class S{static from(_){return new S(_.startOffset,_.endOffset,_.newLength)}constructor(_,g,C){this.endOffsetBeforeObj=(0,k.lengthToObj)(g),this.endOffsetAfterObj=(0,k.lengthToObj)((0,k.lengthAdd)(_,C)),this.offsetObj=(0,k.lengthToObj)(_)}}}),define(ne[278],se([1,0,14,179,91]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.combineTextEditInfos=void 0;function D(_,g){if(_.length===0)return g;if(g.length===0)return _;const C=new L.ArrayQueue(f(_)),s=f(g);s.push({modified:!1,lengthBefore:void 0,lengthAfter:void 0});let i=C.dequeue();function n(h){if(h===void 0){const c=C.takeWhile(o=>!0)||[];return i&&c.unshift(i),c}const r=[];for(;i&&!(0,y.lengthIsZero)(h);){const[c,o]=i.splitAt(h);r.push(c),h=(0,y.lengthDiffNonNegative)(c.lengthAfter,h),i=o??C.dequeue()}return(0,y.lengthIsZero)(h)||r.push(new S(!1,h,h)),r}const t=[];function a(h,r,c){if(t.length>0&&(0,y.lengthEquals)(t[t.length-1].endOffset,h)){const o=t[t.length-1];t[t.length-1]=new k.TextEditInfo(o.startOffset,r,(0,y.lengthAdd)(o.newLength,c))}else t.push({startOffset:h,endOffset:r,newLength:c})}let u=y.lengthZero;for(const h of s){const r=n(h.lengthBefore);if(h.modified){const c=(0,y.sumLengths)(r,d=>d.lengthBefore),o=(0,y.lengthAdd)(u,c);a(u,o,h.lengthAfter),u=o}else for(const c of r){const o=u;u=(0,y.lengthAdd)(u,c.lengthBefore),c.modified&&a(o,u,c.lengthAfter)}}return t}e.combineTextEditInfos=D;class S{constructor(g,C,s){this.modified=g,this.lengthBefore=C,this.lengthAfter=s}splitAt(g){const C=(0,y.lengthDiffNonNegative)(g,this.lengthAfter);return(0,y.lengthEquals)(C,y.lengthZero)?[this,void 0]:this.modified?[new S(this.modified,this.lengthBefore,g),new S(this.modified,y.lengthZero,C)]:[new S(this.modified,g,g),new S(this.modified,C,C)]}toString(){return`${this.modified?\"M\":\"U\"}:${(0,y.lengthToObj)(this.lengthBefore)} -> ${(0,y.lengthToObj)(this.lengthAfter)}`}}function f(_){const g=[];let C=y.lengthZero;for(const s of _){const i=(0,y.lengthDiffNonNegative)(C,s.startOffset);(0,y.lengthIsZero)(i)||g.push(new S(!1,i,i));const n=(0,y.lengthDiffNonNegative)(s.startOffset,s.endOffset);g.push(new S(!0,n,s.newLength)),C=s.endOffset}return g}}),define(ne[505],se([1,0,91]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NodeReader=void 0;class k{constructor(f){this.lastOffset=L.lengthZero,this.nextNodes=[f],this.offsets=[L.lengthZero],this.idxs=[]}readLongestNodeAt(f,_){if((0,L.lengthLessThan)(f,this.lastOffset))throw new Error(\"Invalid offset\");for(this.lastOffset=f;;){const g=D(this.nextNodes);if(!g)return;const C=D(this.offsets);if((0,L.lengthLessThan)(f,C))return;if((0,L.lengthLessThan)(C,f))if((0,L.lengthAdd)(C,g.length)<=f)this.nextNodeAfterCurrent();else{const s=y(g);s!==-1?(this.nextNodes.push(g.getChild(s)),this.offsets.push(C),this.idxs.push(s)):this.nextNodeAfterCurrent()}else{if(_(g))return this.nextNodeAfterCurrent(),g;{const s=y(g);if(s===-1){this.nextNodeAfterCurrent();return}else this.nextNodes.push(g.getChild(s)),this.offsets.push(C),this.idxs.push(s)}}}}nextNodeAfterCurrent(){for(;;){const f=D(this.offsets),_=D(this.nextNodes);if(this.nextNodes.pop(),this.offsets.pop(),this.idxs.length===0)break;const g=D(this.nextNodes),C=y(g,this.idxs[this.idxs.length-1]);if(C!==-1){this.nextNodes.push(g.getChild(C)),this.offsets.push((0,L.lengthAdd)(f,_.length)),this.idxs[this.idxs.length-1]=C;break}else this.idxs.pop()}}}e.NodeReader=k;function y(S,f=-1){for(;;){if(f++,f>=S.childrenLength)return-1;if(S.getChild(f))return f}}function D(S){return S.length>0?S[S.length-1]:void 0}}),define(ne[126],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DenseKeyProvider=e.identityKeyProvider=e.SmallImmutableSet=void 0;const L=[];class k{static create(S,f){if(S<=128&&f.length===0){let _=k.cache[S];return _||(_=new k(S,f),k.cache[S]=_),_}return new k(S,f)}static getEmpty(){return this.empty}constructor(S,f){this.items=S,this.additionalItems=f}add(S,f){const _=f.getKey(S);let g=_>>5;if(g===0){const s=1<<_|this.items;return s===this.items?this:k.create(s,this.additionalItems)}g--;const C=this.additionalItems.slice(0);for(;C.length<g;)C.push(0);return C[g]|=1<<(_&31),k.create(this.items,C)}merge(S){const f=this.items|S.items;if(this.additionalItems===L&&S.additionalItems===L)return f===this.items?this:f===S.items?S:k.create(f,L);const _=[];for(let g=0;g<Math.max(this.additionalItems.length,S.additionalItems.length);g++){const C=this.additionalItems[g]||0,s=S.additionalItems[g]||0;_.push(C|s)}return k.create(f,_)}intersects(S){if(this.items&S.items)return!0;for(let f=0;f<Math.min(this.additionalItems.length,S.additionalItems.length);f++)if(this.additionalItems[f]&S.additionalItems[f])return!0;return!1}}e.SmallImmutableSet=k,k.cache=new Array(129),k.empty=k.create(0,L),e.identityKeyProvider={getKey(D){return D}};class y{constructor(){this.items=new Map}getKey(S){let f=this.items.get(S);return f===void 0&&(f=this.items.size,this.items.set(S,f)),f}}e.DenseKeyProvider=y}),define(ne[180],se([1,0,9,82,91,126]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InvalidBracketAstNode=e.BracketAstNode=e.TextAstNode=e.ListAstNode=e.PairAstNode=void 0;class S{get length(){return this._length}constructor(c){this._length=c}}class f extends S{static create(c,o,d){let l=c.length;return o&&(l=(0,y.lengthAdd)(l,o.length)),d&&(l=(0,y.lengthAdd)(l,d.length)),new f(l,c,o,d,o?o.missingOpeningBracketIds:D.SmallImmutableSet.getEmpty())}get kind(){return 2}get listHeight(){return 0}get childrenLength(){return 3}getChild(c){switch(c){case 0:return this.openingBracket;case 1:return this.child;case 2:return this.closingBracket}throw new Error(\"Invalid child index\")}get children(){const c=[];return c.push(this.openingBracket),this.child&&c.push(this.child),this.closingBracket&&c.push(this.closingBracket),c}constructor(c,o,d,l,p){super(c),this.openingBracket=o,this.child=d,this.closingBracket=l,this.missingOpeningBracketIds=p}canBeReused(c){return!(this.closingBracket===null||c.intersects(this.missingOpeningBracketIds))}deepClone(){return new f(this.length,this.openingBracket.deepClone(),this.child&&this.child.deepClone(),this.closingBracket&&this.closingBracket.deepClone(),this.missingOpeningBracketIds)}computeMinIndentation(c,o){return this.child?this.child.computeMinIndentation((0,y.lengthAdd)(c,this.openingBracket.length),o):Number.MAX_SAFE_INTEGER}}e.PairAstNode=f;class _ extends S{static create23(c,o,d,l=!1){let p=c.length,m=c.missingOpeningBracketIds;if(c.listHeight!==o.listHeight)throw new Error(\"Invalid list heights\");if(p=(0,y.lengthAdd)(p,o.length),m=m.merge(o.missingOpeningBracketIds),d){if(c.listHeight!==d.listHeight)throw new Error(\"Invalid list heights\");p=(0,y.lengthAdd)(p,d.length),m=m.merge(d.missingOpeningBracketIds)}return l?new C(p,c.listHeight+1,c,o,d,m):new g(p,c.listHeight+1,c,o,d,m)}static getEmpty(){return new i(y.lengthZero,0,[],D.SmallImmutableSet.getEmpty())}get kind(){return 4}get missingOpeningBracketIds(){return this._missingOpeningBracketIds}constructor(c,o,d){super(c),this.listHeight=o,this._missingOpeningBracketIds=d,this.cachedMinIndentation=-1}throwIfImmutable(){}makeLastElementMutable(){this.throwIfImmutable();const c=this.childrenLength;if(c===0)return;const o=this.getChild(c-1),d=o.kind===4?o.toMutable():o;return o!==d&&this.setChild(c-1,d),d}makeFirstElementMutable(){if(this.throwIfImmutable(),this.childrenLength===0)return;const o=this.getChild(0),d=o.kind===4?o.toMutable():o;return o!==d&&this.setChild(0,d),d}canBeReused(c){if(c.intersects(this.missingOpeningBracketIds)||this.childrenLength===0)return!1;let o=this;for(;o.kind===4;){const d=o.childrenLength;if(d===0)throw new L.BugIndicatingError;o=o.getChild(d-1)}return o.canBeReused(c)}handleChildrenChanged(){this.throwIfImmutable();const c=this.childrenLength;let o=this.getChild(0).length,d=this.getChild(0).missingOpeningBracketIds;for(let l=1;l<c;l++){const p=this.getChild(l);o=(0,y.lengthAdd)(o,p.length),d=d.merge(p.missingOpeningBracketIds)}this._length=o,this._missingOpeningBracketIds=d,this.cachedMinIndentation=-1}computeMinIndentation(c,o){if(this.cachedMinIndentation!==-1)return this.cachedMinIndentation;let d=Number.MAX_SAFE_INTEGER,l=c;for(let p=0;p<this.childrenLength;p++){const m=this.getChild(p);m&&(d=Math.min(d,m.computeMinIndentation(l,o)),l=(0,y.lengthAdd)(l,m.length))}return this.cachedMinIndentation=d,d}}e.ListAstNode=_;class g extends _{get childrenLength(){return this._item3!==null?3:2}getChild(c){switch(c){case 0:return this._item1;case 1:return this._item2;case 2:return this._item3}throw new Error(\"Invalid child index\")}setChild(c,o){switch(c){case 0:this._item1=o;return;case 1:this._item2=o;return;case 2:this._item3=o;return}throw new Error(\"Invalid child index\")}get children(){return this._item3?[this._item1,this._item2,this._item3]:[this._item1,this._item2]}get item1(){return this._item1}get item2(){return this._item2}get item3(){return this._item3}constructor(c,o,d,l,p,m){super(c,o,m),this._item1=d,this._item2=l,this._item3=p}deepClone(){return new g(this.length,this.listHeight,this._item1.deepClone(),this._item2.deepClone(),this._item3?this._item3.deepClone():null,this.missingOpeningBracketIds)}appendChildOfSameHeight(c){if(this._item3)throw new Error(\"Cannot append to a full (2,3) tree node\");this.throwIfImmutable(),this._item3=c,this.handleChildrenChanged()}unappendChild(){if(!this._item3)throw new Error(\"Cannot remove from a non-full (2,3) tree node\");this.throwIfImmutable();const c=this._item3;return this._item3=null,this.handleChildrenChanged(),c}prependChildOfSameHeight(c){if(this._item3)throw new Error(\"Cannot prepend to a full (2,3) tree node\");this.throwIfImmutable(),this._item3=this._item2,this._item2=this._item1,this._item1=c,this.handleChildrenChanged()}unprependChild(){if(!this._item3)throw new Error(\"Cannot remove from a non-full (2,3) tree node\");this.throwIfImmutable();const c=this._item1;return this._item1=this._item2,this._item2=this._item3,this._item3=null,this.handleChildrenChanged(),c}toMutable(){return this}}class C extends g{toMutable(){return new g(this.length,this.listHeight,this.item1,this.item2,this.item3,this.missingOpeningBracketIds)}throwIfImmutable(){throw new Error(\"this instance is immutable\")}}class s extends _{get childrenLength(){return this._children.length}getChild(c){return this._children[c]}setChild(c,o){this._children[c]=o}get children(){return this._children}constructor(c,o,d,l){super(c,o,l),this._children=d}deepClone(){const c=new Array(this._children.length);for(let o=0;o<this._children.length;o++)c[o]=this._children[o].deepClone();return new s(this.length,this.listHeight,c,this.missingOpeningBracketIds)}appendChildOfSameHeight(c){this.throwIfImmutable(),this._children.push(c),this.handleChildrenChanged()}unappendChild(){this.throwIfImmutable();const c=this._children.pop();return this.handleChildrenChanged(),c}prependChildOfSameHeight(c){this.throwIfImmutable(),this._children.unshift(c),this.handleChildrenChanged()}unprependChild(){this.throwIfImmutable();const c=this._children.shift();return this.handleChildrenChanged(),c}toMutable(){return this}}class i extends s{toMutable(){return new s(this.length,this.listHeight,[...this.children],this.missingOpeningBracketIds)}throwIfImmutable(){throw new Error(\"this instance is immutable\")}}const n=[];class t extends S{get listHeight(){return 0}get childrenLength(){return 0}getChild(c){return null}get children(){return n}deepClone(){return this}}class a extends t{get kind(){return 0}get missingOpeningBracketIds(){return D.SmallImmutableSet.getEmpty()}canBeReused(c){return!0}computeMinIndentation(c,o){const d=(0,y.lengthToObj)(c),l=(d.columnCount===0?d.lineCount:d.lineCount+1)+1,p=(0,y.lengthGetLineCount)((0,y.lengthAdd)(c,this.length))+1;let m=Number.MAX_SAFE_INTEGER;for(let v=l;v<=p;v++){const b=o.getLineFirstNonWhitespaceColumn(v),w=o.getLineContent(v);if(b===0)continue;const E=k.CursorColumns.visibleColumnFromColumn(w,b,o.getOptions().tabSize);m=Math.min(m,E)}return m}}e.TextAstNode=a;class u extends t{static create(c,o,d){return new u(c,o,d)}get kind(){return 1}get missingOpeningBracketIds(){return D.SmallImmutableSet.getEmpty()}constructor(c,o,d){super(c),this.bracketInfo=o,this.bracketIds=d}get text(){return this.bracketInfo.bracketText}get languageId(){return this.bracketInfo.languageId}canBeReused(c){return!1}computeMinIndentation(c,o){return Number.MAX_SAFE_INTEGER}}e.BracketAstNode=u;class h extends t{get kind(){return 3}constructor(c,o){super(o),this.missingOpeningBracketIds=c}canBeReused(c){return!c.intersects(this.missingOpeningBracketIds)}computeMinIndentation(c,o){return Number.MAX_SAFE_INTEGER}}e.InvalidBracketAstNode=h}),define(ne[506],se([1,0,180]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.concat23TreesOfSameHeight=e.concat23Trees=void 0;function k(g){if(g.length===0)return null;if(g.length===1)return g[0];let C=0;function s(){if(C>=g.length)return null;const a=C,u=g[a].listHeight;for(C++;C<g.length&&g[C].listHeight===u;)C++;return C-a>=2?y(a===0&&C===g.length?g:g.slice(a,C),!1):g[a]}let i=s(),n=s();if(!n)return i;for(let a=s();a;a=s())D(i,n)<=D(n,a)?(i=S(i,n),n=a):n=S(n,a);return S(i,n)}e.concat23Trees=k;function y(g,C=!1){if(g.length===0)return null;if(g.length===1)return g[0];let s=g.length;for(;s>3;){const i=s>>1;for(let n=0;n<i;n++){const t=n<<1;g[n]=L.ListAstNode.create23(g[t],g[t+1],t+3===s?g[t+2]:null,C)}s=i}return L.ListAstNode.create23(g[0],g[1],s>=3?g[2]:null,C)}e.concat23TreesOfSameHeight=y;function D(g,C){return Math.abs(g.listHeight-C.listHeight)}function S(g,C){return g.listHeight===C.listHeight?L.ListAstNode.create23(g,C,null,!1):g.listHeight>C.listHeight?f(g,C):_(C,g)}function f(g,C){g=g.toMutable();let s=g;const i=[];let n;for(;;){if(C.listHeight===s.listHeight){n=C;break}if(s.kind!==4)throw new Error(\"unexpected\");i.push(s),s=s.makeLastElementMutable()}for(let t=i.length-1;t>=0;t--){const a=i[t];n?a.childrenLength>=3?n=L.ListAstNode.create23(a.unappendChild(),n,null,!1):(a.appendChildOfSameHeight(n),n=void 0):a.handleChildrenChanged()}return n?L.ListAstNode.create23(g,n,null,!1):g}function _(g,C){g=g.toMutable();let s=g;const i=[];for(;C.listHeight!==s.listHeight;){if(s.kind!==4)throw new Error(\"unexpected\");i.push(s),s=s.makeFirstElementMutable()}let n=C;for(let t=i.length-1;t>=0;t--){const a=i[t];n?a.childrenLength>=3?n=L.ListAstNode.create23(n,a.unprependChild(),null,!1):(a.prependChildOfSameHeight(n),n=void 0):a.handleChildrenChanged()}return n?L.ListAstNode.create23(n,g,null,!1):g}}),define(ne[279],se([1,0,180,179,126,91,506,505]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.parseDocument=void 0;function _(C,s,i,n){return new g(C,s,i,n).parseDocument()}e.parseDocument=_;class g{constructor(s,i,n,t){if(this.tokenizer=s,this.createImmutableLists=t,this._itemsConstructed=0,this._itemsFromCache=0,n&&t)throw new Error(\"Not supported\");this.oldNodeReader=n?new f.NodeReader(n):void 0,this.positionMapper=new k.BeforeEditPositionMapper(i)}parseDocument(){this._itemsConstructed=0,this._itemsFromCache=0;let s=this.parseList(y.SmallImmutableSet.getEmpty(),0);return s||(s=L.ListAstNode.getEmpty()),s}parseList(s,i){const n=[];for(;;){let a=this.tryReadChildFromCache(s);if(!a){const u=this.tokenizer.peek();if(!u||u.kind===2&&u.bracketIds.intersects(s))break;a=this.parseChild(s,i+1)}a.kind===4&&a.childrenLength===0||n.push(a)}return this.oldNodeReader?(0,S.concat23Trees)(n):(0,S.concat23TreesOfSameHeight)(n,this.createImmutableLists)}tryReadChildFromCache(s){if(this.oldNodeReader){const i=this.positionMapper.getDistanceToNextChange(this.tokenizer.offset);if(i===null||!(0,D.lengthIsZero)(i)){const n=this.oldNodeReader.readLongestNodeAt(this.positionMapper.getOffsetBeforeChange(this.tokenizer.offset),t=>i!==null&&!(0,D.lengthLessThan)(t.length,i)?!1:t.canBeReused(s));if(n)return this._itemsFromCache++,this.tokenizer.skip(n.length),n}}}parseChild(s,i){this._itemsConstructed++;const n=this.tokenizer.read();switch(n.kind){case 2:return new L.InvalidBracketAstNode(n.bracketIds,n.length);case 0:return n.astNode;case 1:{if(i>300)return new L.TextAstNode(n.length);const t=s.merge(n.bracketIds),a=this.parseList(t,i+1),u=this.tokenizer.peek();return u&&u.kind===2&&(u.bracketId===n.bracketId||u.bracketIds.intersects(n.bracketIds))?(this.tokenizer.read(),L.PairAstNode.create(n.astNode,a,u.astNode)):L.PairAstNode.create(n.astNode,a,null)}default:throw new Error(\"unexpected\")}}}}),define(ne[206],se([1,0,9,124,180,91,126]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FastTokenizer=e.TextBufferTokenizer=e.Token=void 0;class f{constructor(i,n,t,a,u){this.length=i,this.kind=n,this.bracketId=t,this.bracketIds=a,this.astNode=u}}e.Token=f;class _{constructor(i,n){this.textModel=i,this.bracketTokens=n,this.reader=new g(this.textModel,this.bracketTokens),this._offset=D.lengthZero,this.didPeek=!1,this.peeked=null,this.textBufferLineCount=i.getLineCount(),this.textBufferLastLineLength=i.getLineLength(this.textBufferLineCount)}get offset(){return this._offset}get length(){return(0,D.toLength)(this.textBufferLineCount-1,this.textBufferLastLineLength)}skip(i){this.didPeek=!1,this._offset=(0,D.lengthAdd)(this._offset,i);const n=(0,D.lengthToObj)(this._offset);this.reader.setPosition(n.lineCount,n.columnCount)}read(){let i;return this.peeked?(this.didPeek=!1,i=this.peeked):i=this.reader.read(),i&&(this._offset=(0,D.lengthAdd)(this._offset,i.length)),i}peek(){return this.didPeek||(this.peeked=this.reader.read(),this.didPeek=!0),this.peeked}}e.TextBufferTokenizer=_;class g{constructor(i,n){this.textModel=i,this.bracketTokens=n,this.lineIdx=0,this.line=null,this.lineCharOffset=0,this.lineTokens=null,this.lineTokenOffset=0,this.peekedToken=null,this.textBufferLineCount=i.getLineCount(),this.textBufferLastLineLength=i.getLineLength(this.textBufferLineCount)}setPosition(i,n){i===this.lineIdx?(this.lineCharOffset=n,this.line!==null&&(this.lineTokenOffset=this.lineCharOffset===0?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset))):(this.lineIdx=i,this.lineCharOffset=n,this.line=null),this.peekedToken=null}read(){if(this.peekedToken){const u=this.peekedToken;return this.peekedToken=null,this.lineCharOffset+=(0,D.lengthGetColumnCountIfZeroLineCount)(u.length),u}if(this.lineIdx>this.textBufferLineCount-1||this.lineIdx===this.textBufferLineCount-1&&this.lineCharOffset>=this.textBufferLastLineLength)return null;this.line===null&&(this.lineTokens=this.textModel.tokenization.getLineTokens(this.lineIdx+1),this.line=this.lineTokens.getLineContent(),this.lineTokenOffset=this.lineCharOffset===0?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset));const i=this.lineIdx,n=this.lineCharOffset;let t=0;for(;;){const u=this.lineTokens,h=u.getCount();let r=null;if(this.lineTokenOffset<h){const c=u.getMetadata(this.lineTokenOffset);for(;this.lineTokenOffset+1<h&&c===u.getMetadata(this.lineTokenOffset+1);)this.lineTokenOffset++;const o=k.TokenMetadata.getTokenType(c)===0,d=k.TokenMetadata.containsBalancedBrackets(c),l=u.getEndOffset(this.lineTokenOffset);if(d&&o&&this.lineCharOffset<l){const p=u.getLanguageId(this.lineTokenOffset),m=this.line.substring(this.lineCharOffset,l),v=this.bracketTokens.getSingleLanguageBracketTokens(p),b=v.regExpGlobal;if(b){b.lastIndex=0;const w=b.exec(m);w&&(r=v.getToken(w[0]),r&&(this.lineCharOffset+=w.index))}}if(t+=l-this.lineCharOffset,r)if(i!==this.lineIdx||n!==this.lineCharOffset){this.peekedToken=r;break}else return this.lineCharOffset+=(0,D.lengthGetColumnCountIfZeroLineCount)(r.length),r;else this.lineTokenOffset++,this.lineCharOffset=l}else if(this.lineIdx===this.textBufferLineCount-1||(this.lineIdx++,this.lineTokens=this.textModel.tokenization.getLineTokens(this.lineIdx+1),this.lineTokenOffset=0,this.line=this.lineTokens.getLineContent(),this.lineCharOffset=0,t+=33,t>1e3))break;if(t>1500)break}const a=(0,D.lengthDiff)(i,n,this.lineIdx,this.lineCharOffset);return new f(a,0,-1,S.SmallImmutableSet.getEmpty(),new y.TextAstNode(a))}}class C{constructor(i,n){this.text=i,this._offset=D.lengthZero,this.idx=0;const t=n.getRegExpStr(),a=t?new RegExp(t+`|\n`,\"gi\"):null,u=[];let h,r=0,c=0,o=0,d=0;const l=[];for(let v=0;v<60;v++)l.push(new f((0,D.toLength)(0,v),0,-1,S.SmallImmutableSet.getEmpty(),new y.TextAstNode((0,D.toLength)(0,v))));const p=[];for(let v=0;v<60;v++)p.push(new f((0,D.toLength)(1,v),0,-1,S.SmallImmutableSet.getEmpty(),new y.TextAstNode((0,D.toLength)(1,v))));if(a)for(a.lastIndex=0;(h=a.exec(i))!==null;){const v=h.index,b=h[0];if(b===`\n`)r++,c=v+1;else{if(o!==v){let w;if(d===r){const E=v-o;if(E<l.length)w=l[E];else{const I=(0,D.toLength)(0,E);w=new f(I,0,-1,S.SmallImmutableSet.getEmpty(),new y.TextAstNode(I))}}else{const E=r-d,I=v-c;if(E===1&&I<p.length)w=p[I];else{const M=(0,D.toLength)(E,I);w=new f(M,0,-1,S.SmallImmutableSet.getEmpty(),new y.TextAstNode(M))}}u.push(w)}u.push(n.getToken(b)),o=v+b.length,d=r}}const m=i.length;if(o!==m){const v=d===r?(0,D.toLength)(0,m-o):(0,D.toLength)(r-d,m-c);u.push(new f(v,0,-1,S.SmallImmutableSet.getEmpty(),new y.TextAstNode(v)))}this.length=(0,D.toLength)(r,m-c),this.tokens=u}get offset(){return this._offset}read(){return this.tokens[this.idx++]||null}peek(){return this.tokens[this.idx]||null}skip(i){throw new L.NotSupportedError}}e.FastTokenizer=C}),define(ne[280],se([1,0,11,180,91,126,206]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LanguageAgnosticBracketTokens=e.BracketTokens=void 0;class f{static createFromLanguage(s,i){function n(a){return i.getKey(`${a.languageId}:::${a.bracketText}`)}const t=new Map;for(const a of s.bracketsNew.openingBrackets){const u=(0,y.toLength)(0,a.bracketText.length),h=n(a),r=D.SmallImmutableSet.getEmpty().add(h,D.identityKeyProvider);t.set(a.bracketText,new S.Token(u,1,h,r,k.BracketAstNode.create(u,a,r)))}for(const a of s.bracketsNew.closingBrackets){const u=(0,y.toLength)(0,a.bracketText.length);let h=D.SmallImmutableSet.getEmpty();const r=a.getOpeningBrackets();for(const c of r)h=h.add(n(c),D.identityKeyProvider);t.set(a.bracketText,new S.Token(u,2,n(r[0]),h,k.BracketAstNode.create(u,a,h)))}return new f(t)}constructor(s){this.map=s,this.hasRegExp=!1,this._regExpGlobal=null}getRegExpStr(){if(this.isEmpty)return null;{const s=[...this.map.keys()];return s.sort(),s.reverse(),s.map(i=>_(i)).join(\"|\")}}get regExpGlobal(){if(!this.hasRegExp){const s=this.getRegExpStr();this._regExpGlobal=s?new RegExp(s,\"gi\"):null,this.hasRegExp=!0}return this._regExpGlobal}getToken(s){return this.map.get(s.toLowerCase())}findClosingTokenText(s){for(const[i,n]of this.map)if(n.kind===2&&n.bracketIds.intersects(s))return i}get isEmpty(){return this.map.size===0}}e.BracketTokens=f;function _(C){let s=(0,L.escapeRegExpCharacters)(C);return/^[\\w ]+/.test(C)&&(s=`\\\\b${s}`),/[\\w ]+$/.test(C)&&(s=`${s}\\\\b`),s}class g{constructor(s,i){this.denseKeyProvider=s,this.getLanguageConfiguration=i,this.languageIdToBracketTokens=new Map}didLanguageChange(s){return this.languageIdToBracketTokens.has(s)}getSingleLanguageBracketTokens(s){let i=this.languageIdToBracketTokens.get(s);return i||(i=f.createFromLanguage(this.getLanguageConfiguration(s),this.denseKeyProvider),this.languageIdToBracketTokens.set(s,i)),i}}e.LanguageAgnosticBracketTokens=g}),define(ne[507],se([1,0,280,91,279,126,206]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.fixBracketsInLine=void 0;function f(g,C){const s=new D.DenseKeyProvider,i=new L.LanguageAgnosticBracketTokens(s,r=>C.getLanguageConfiguration(r)),n=new S.TextBufferTokenizer(new _([g]),i),t=(0,y.parseDocument)(n,[],void 0,!0);let a=\"\";const u=g.getLineContent();function h(r,c){if(r.kind===2)if(h(r.openingBracket,c),c=(0,k.lengthAdd)(c,r.openingBracket.length),r.child&&(h(r.child,c),c=(0,k.lengthAdd)(c,r.child.length)),r.closingBracket)h(r.closingBracket,c),c=(0,k.lengthAdd)(c,r.closingBracket.length);else{const d=i.getSingleLanguageBracketTokens(r.openingBracket.languageId).findClosingTokenText(r.openingBracket.bracketIds);a+=d}else if(r.kind!==3){if(r.kind===0||r.kind===1)a+=u.substring((0,k.lengthGetColumnCountIfZeroLineCount)(c),(0,k.lengthGetColumnCountIfZeroLineCount)((0,k.lengthAdd)(c,r.length)));else if(r.kind===4)for(const o of r.children)h(o,c),c=(0,k.lengthAdd)(c,o.length)}}return h(t,k.lengthZero),a}e.fixBracketsInLine=f;class _{constructor(C){this.lines=C,this.tokenization={getLineTokens:s=>this.lines[s-1]}}getLineCount(){return this.lines.length}getLineLength(C){return this.lines[C-1].getLineContent().length}}}),define(ne[508],se([1,0,14]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FixedArray=void 0;class k{constructor(S){this._default=S,this._store=[]}get(S){return S<this._store.length?this._store[S]:this._default}set(S,f){for(;S>=this._store.length;)this._store[this._store.length]=this._default;this._store[S]=f}replace(S,f,_){if(S>=this._store.length)return;if(f===0){this.insert(S,_);return}else if(_===0){this.delete(S,f);return}const g=this._store.slice(0,S),C=this._store.slice(S+f),s=y(_,this._default);this._store=g.concat(s,C)}delete(S,f){f===0||S>=this._store.length||this._store.splice(S,f)}insert(S,f){if(f===0||S>=this._store.length)return;const _=[];for(let g=0;g<f;g++)_[g]=this._default;this._store=(0,L.arrayInsert)(this._store,S,_)}}e.FixedArray=k;function y(D,S){const f=[];for(let _=0;_<D;_++)f[_]=S;return f}}),define(ne[509],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.guessIndentation=void 0;class L{constructor(){this.spacesDiff=0,this.looksLikeAlignment=!1}}function k(D,S,f,_,g){g.spacesDiff=0,g.looksLikeAlignment=!1;let C;for(C=0;C<S&&C<_;C++){const h=D.charCodeAt(C),r=f.charCodeAt(C);if(h!==r)break}let s=0,i=0;for(let h=C;h<S;h++)D.charCodeAt(h)===32?s++:i++;let n=0,t=0;for(let h=C;h<_;h++)f.charCodeAt(h)===32?n++:t++;if(s>0&&i>0||n>0&&t>0)return;const a=Math.abs(i-t),u=Math.abs(s-n);if(a===0){g.spacesDiff=u,u>0&&0<=n-1&&n-1<D.length&&n<f.length&&f.charCodeAt(n)!==32&&D.charCodeAt(n-1)===32&&D.charCodeAt(D.length-1)===44&&(g.looksLikeAlignment=!0);return}if(u%a===0){g.spacesDiff=u/a;return}}function y(D,S,f){const _=Math.min(D.getLineCount(),1e4);let g=0,C=0,s=\"\",i=0;const n=[2,4,6,8,3,5,7],t=8,a=[0,0,0,0,0,0,0,0,0],u=new L;for(let c=1;c<=_;c++){const o=D.getLineLength(c),d=D.getLineContent(c),l=o<=65536;let p=!1,m=0,v=0,b=0;for(let E=0,I=o;E<I;E++){const M=l?d.charCodeAt(E):D.getLineCharCode(c,E);if(M===9)b++;else if(M===32)v++;else{p=!0,m=E;break}}if(!p||(b>0?g++:v>1&&C++,k(s,i,d,m,u),u.looksLikeAlignment&&!(f&&S===u.spacesDiff)))continue;const w=u.spacesDiff;w<=t&&a[w]++,s=d,i=m}let h=f;g!==C&&(h=g<C);let r=S;if(h){let c=h?0:.1*_;n.forEach(o=>{const d=a[o];d>c&&(c=d,r=o)}),r===4&&a[4]>0&&a[2]>0&&a[2]>=a[4]/2&&(r=2)}return{insertSpaces:h,tabSize:r}}e.guessIndentation=y}),define(ne[510],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.intervalCompare=e.recomputeMaxEnd=e.nodeAcceptEdit=e.IntervalTree=e.SENTINEL=e.IntervalNode=e.getNodeColor=void 0;function L(F){return(F.metadata&1)>>>0}e.getNodeColor=L;function k(F,O){F.metadata=F.metadata&254|O<<0}function y(F){return(F.metadata&2)>>>1===1}function D(F,O){F.metadata=F.metadata&253|(O?1:0)<<1}function S(F){return(F.metadata&4)>>>2===1}function f(F,O){F.metadata=F.metadata&251|(O?1:0)<<2}function _(F){return(F.metadata&64)>>>6===1}function g(F,O){F.metadata=F.metadata&191|(O?1:0)<<6}function C(F){return(F.metadata&24)>>>3}function s(F,O){F.metadata=F.metadata&231|O<<3}function i(F){return(F.metadata&32)>>>5===1}function n(F,O){F.metadata=F.metadata&223|(O?1:0)<<5}class t{constructor(O,W,U){this.metadata=0,this.parent=this,this.left=this,this.right=this,k(this,1),this.start=W,this.end=U,this.delta=0,this.maxEnd=U,this.id=O,this.ownerId=0,this.options=null,f(this,!1),g(this,!1),s(this,1),n(this,!1),this.cachedVersionId=0,this.cachedAbsoluteStart=W,this.cachedAbsoluteEnd=U,this.range=null,D(this,!1)}reset(O,W,U,j){this.start=W,this.end=U,this.maxEnd=U,this.cachedVersionId=O,this.cachedAbsoluteStart=W,this.cachedAbsoluteEnd=U,this.range=j}setOptions(O){this.options=O;const W=this.options.className;f(this,W===\"squiggly-error\"||W===\"squiggly-warning\"||W===\"squiggly-info\"),g(this,this.options.glyphMarginClassName!==null),s(this,this.options.stickiness),n(this,this.options.collapseOnReplaceEdit)}setCachedOffsets(O,W,U){this.cachedVersionId!==U&&(this.range=null),this.cachedVersionId=U,this.cachedAbsoluteStart=O,this.cachedAbsoluteEnd=W}detach(){this.parent=null,this.left=null,this.right=null}}e.IntervalNode=t,e.SENTINEL=new t(null,0,0),e.SENTINEL.parent=e.SENTINEL,e.SENTINEL.left=e.SENTINEL,e.SENTINEL.right=e.SENTINEL,k(e.SENTINEL,0);class a{constructor(){this.root=e.SENTINEL,this.requestNormalizeDelta=!1}intervalSearch(O,W,U,j,R,K){return this.root===e.SENTINEL?[]:m(this,O,W,U,j,R,K)}search(O,W,U,j){return this.root===e.SENTINEL?[]:p(this,O,W,U,j)}collectNodesFromOwner(O){return d(this,O)}collectNodesPostOrder(){return l(this)}insert(O){v(this,O),this._normalizeDeltaIfNecessary()}delete(O){w(this,O),this._normalizeDeltaIfNecessary()}resolveNode(O,W){const U=O;let j=0;for(;O!==this.root;)O===O.parent.right&&(j+=O.parent.delta),O=O.parent;const R=U.start+j,K=U.end+j;U.setCachedOffsets(R,K,W)}acceptReplace(O,W,U,j){const R=c(this,O,O+W);for(let K=0,G=R.length;K<G;K++){const Z=R[K];w(this,Z)}this._normalizeDeltaIfNecessary(),o(this,O,O+W,U),this._normalizeDeltaIfNecessary();for(let K=0,G=R.length;K<G;K++){const Z=R[K];Z.start=Z.cachedAbsoluteStart,Z.end=Z.cachedAbsoluteEnd,r(Z,O,O+W,U,j),Z.maxEnd=Z.end,v(this,Z)}this._normalizeDeltaIfNecessary()}_normalizeDeltaIfNecessary(){this.requestNormalizeDelta&&(this.requestNormalizeDelta=!1,u(this))}}e.IntervalTree=a;function u(F){let O=F.root,W=0;for(;O!==e.SENTINEL;){if(O.left!==e.SENTINEL&&!y(O.left)){O=O.left;continue}if(O.right!==e.SENTINEL&&!y(O.right)){W+=O.delta,O=O.right;continue}O.start=W+O.start,O.end=W+O.end,O.delta=0,T(O),D(O,!0),D(O.left,!1),D(O.right,!1),O===O.parent.right&&(W-=O.parent.delta),O=O.parent}D(F.root,!1)}function h(F,O,W,U){return F<W?!0:F>W||U===1?!1:U===2?!0:O}function r(F,O,W,U,j){const R=C(F),K=R===0||R===2,G=R===1||R===2,Z=W-O,J=U,X=Math.min(Z,J),H=F.start;let B=!1;const V=F.end;let Y=!1;O<=H&&V<=W&&i(F)&&(F.start=O,B=!0,F.end=O,Y=!0);{const ae=j?1:Z>0?2:0;!B&&h(H,K,O,ae)&&(B=!0),!Y&&h(V,G,O,ae)&&(Y=!0)}if(X>0&&!j){const ae=Z>J?2:0;!B&&h(H,K,O+X,ae)&&(B=!0),!Y&&h(V,G,O+X,ae)&&(Y=!0)}{const ae=j?1:0;!B&&h(H,K,W,ae)&&(F.start=O+J,B=!0),!Y&&h(V,G,W,ae)&&(F.end=O+J,Y=!0)}const ie=J-Z;B||(F.start=Math.max(0,H+ie)),Y||(F.end=Math.max(0,V+ie)),F.start>F.end&&(F.end=F.start)}e.nodeAcceptEdit=r;function c(F,O,W){let U=F.root,j=0,R=0,K=0,G=0;const Z=[];let J=0;for(;U!==e.SENTINEL;){if(y(U)){D(U.left,!1),D(U.right,!1),U===U.parent.right&&(j-=U.parent.delta),U=U.parent;continue}if(!y(U.left)){if(R=j+U.maxEnd,R<O){D(U,!0);continue}if(U.left!==e.SENTINEL){U=U.left;continue}}if(K=j+U.start,K>W){D(U,!0);continue}if(G=j+U.end,G>=O&&(U.setCachedOffsets(K,G,0),Z[J++]=U),D(U,!0),U.right!==e.SENTINEL&&!y(U.right)){j+=U.delta,U=U.right;continue}}return D(F.root,!1),Z}function o(F,O,W,U){let j=F.root,R=0,K=0,G=0;const Z=U-(W-O);for(;j!==e.SENTINEL;){if(y(j)){D(j.left,!1),D(j.right,!1),j===j.parent.right&&(R-=j.parent.delta),T(j),j=j.parent;continue}if(!y(j.left)){if(K=R+j.maxEnd,K<O){D(j,!0);continue}if(j.left!==e.SENTINEL){j=j.left;continue}}if(G=R+j.start,G>W){j.start+=Z,j.end+=Z,j.delta+=Z,(j.delta<-1073741824||j.delta>1073741824)&&(F.requestNormalizeDelta=!0),D(j,!0);continue}if(D(j,!0),j.right!==e.SENTINEL&&!y(j.right)){R+=j.delta,j=j.right;continue}}D(F.root,!1)}function d(F,O){let W=F.root;const U=[];let j=0;for(;W!==e.SENTINEL;){if(y(W)){D(W.left,!1),D(W.right,!1),W=W.parent;continue}if(W.left!==e.SENTINEL&&!y(W.left)){W=W.left;continue}if(W.ownerId===O&&(U[j++]=W),D(W,!0),W.right!==e.SENTINEL&&!y(W.right)){W=W.right;continue}}return D(F.root,!1),U}function l(F){let O=F.root;const W=[];let U=0;for(;O!==e.SENTINEL;){if(y(O)){D(O.left,!1),D(O.right,!1),O=O.parent;continue}if(O.left!==e.SENTINEL&&!y(O.left)){O=O.left;continue}if(O.right!==e.SENTINEL&&!y(O.right)){O=O.right;continue}W[U++]=O,D(O,!0)}return D(F.root,!1),W}function p(F,O,W,U,j){let R=F.root,K=0,G=0,Z=0;const J=[];let X=0;for(;R!==e.SENTINEL;){if(y(R)){D(R.left,!1),D(R.right,!1),R===R.parent.right&&(K-=R.parent.delta),R=R.parent;continue}if(R.left!==e.SENTINEL&&!y(R.left)){R=R.left;continue}G=K+R.start,Z=K+R.end,R.setCachedOffsets(G,Z,U);let H=!0;if(O&&R.ownerId&&R.ownerId!==O&&(H=!1),W&&S(R)&&(H=!1),j&&!_(R)&&(H=!1),H&&(J[X++]=R),D(R,!0),R.right!==e.SENTINEL&&!y(R.right)){K+=R.delta,R=R.right;continue}}return D(F.root,!1),J}function m(F,O,W,U,j,R,K){let G=F.root,Z=0,J=0,X=0,H=0;const B=[];let V=0;for(;G!==e.SENTINEL;){if(y(G)){D(G.left,!1),D(G.right,!1),G===G.parent.right&&(Z-=G.parent.delta),G=G.parent;continue}if(!y(G.left)){if(J=Z+G.maxEnd,J<O){D(G,!0);continue}if(G.left!==e.SENTINEL){G=G.left;continue}}if(X=Z+G.start,X>W){D(G,!0);continue}if(H=Z+G.end,H>=O){G.setCachedOffsets(X,H,R);let Y=!0;U&&G.ownerId&&G.ownerId!==U&&(Y=!1),j&&S(G)&&(Y=!1),K&&!_(G)&&(Y=!1),Y&&(B[V++]=G)}if(D(G,!0),G.right!==e.SENTINEL&&!y(G.right)){Z+=G.delta,G=G.right;continue}}return D(F.root,!1),B}function v(F,O){if(F.root===e.SENTINEL)return O.parent=e.SENTINEL,O.left=e.SENTINEL,O.right=e.SENTINEL,k(O,0),F.root=O,F.root;b(F,O),A(O.parent);let W=O;for(;W!==F.root&&L(W.parent)===1;)if(W.parent===W.parent.parent.left){const U=W.parent.parent.right;L(U)===1?(k(W.parent,0),k(U,0),k(W.parent.parent,1),W=W.parent.parent):(W===W.parent.right&&(W=W.parent,M(F,W)),k(W.parent,0),k(W.parent.parent,1),P(F,W.parent.parent))}else{const U=W.parent.parent.left;L(U)===1?(k(W.parent,0),k(U,0),k(W.parent.parent,1),W=W.parent.parent):(W===W.parent.left&&(W=W.parent,P(F,W)),k(W.parent,0),k(W.parent.parent,1),M(F,W.parent.parent))}return k(F.root,0),O}function b(F,O){let W=0,U=F.root;const j=O.start,R=O.end;for(;;)if(N(j,R,U.start+W,U.end+W)<0)if(U.left===e.SENTINEL){O.start-=W,O.end-=W,O.maxEnd-=W,U.left=O;break}else U=U.left;else if(U.right===e.SENTINEL){O.start-=W+U.delta,O.end-=W+U.delta,O.maxEnd-=W+U.delta,U.right=O;break}else W+=U.delta,U=U.right;O.parent=U,O.left=e.SENTINEL,O.right=e.SENTINEL,k(O,1)}function w(F,O){let W,U;if(O.left===e.SENTINEL?(W=O.right,U=O,W.delta+=O.delta,(W.delta<-1073741824||W.delta>1073741824)&&(F.requestNormalizeDelta=!0),W.start+=O.delta,W.end+=O.delta):O.right===e.SENTINEL?(W=O.left,U=O):(U=E(O.right),W=U.right,W.start+=U.delta,W.end+=U.delta,W.delta+=U.delta,(W.delta<-1073741824||W.delta>1073741824)&&(F.requestNormalizeDelta=!0),U.start+=O.delta,U.end+=O.delta,U.delta=O.delta,(U.delta<-1073741824||U.delta>1073741824)&&(F.requestNormalizeDelta=!0)),U===F.root){F.root=W,k(W,0),O.detach(),I(),T(W),F.root.parent=e.SENTINEL;return}const j=L(U)===1;if(U===U.parent.left?U.parent.left=W:U.parent.right=W,U===O?W.parent=U.parent:(U.parent===O?W.parent=U:W.parent=U.parent,U.left=O.left,U.right=O.right,U.parent=O.parent,k(U,L(O)),O===F.root?F.root=U:O===O.parent.left?O.parent.left=U:O.parent.right=U,U.left!==e.SENTINEL&&(U.left.parent=U),U.right!==e.SENTINEL&&(U.right.parent=U)),O.detach(),j){A(W.parent),U!==O&&(A(U),A(U.parent)),I();return}A(W),A(W.parent),U!==O&&(A(U),A(U.parent));let R;for(;W!==F.root&&L(W)===0;)W===W.parent.left?(R=W.parent.right,L(R)===1&&(k(R,0),k(W.parent,1),M(F,W.parent),R=W.parent.right),L(R.left)===0&&L(R.right)===0?(k(R,1),W=W.parent):(L(R.right)===0&&(k(R.left,0),k(R,1),P(F,R),R=W.parent.right),k(R,L(W.parent)),k(W.parent,0),k(R.right,0),M(F,W.parent),W=F.root)):(R=W.parent.left,L(R)===1&&(k(R,0),k(W.parent,1),P(F,W.parent),R=W.parent.left),L(R.left)===0&&L(R.right)===0?(k(R,1),W=W.parent):(L(R.left)===0&&(k(R.right,0),k(R,1),M(F,R),R=W.parent.left),k(R,L(W.parent)),k(W.parent,0),k(R.left,0),P(F,W.parent),W=F.root));k(W,0),I()}function E(F){for(;F.left!==e.SENTINEL;)F=F.left;return F}function I(){e.SENTINEL.parent=e.SENTINEL,e.SENTINEL.delta=0,e.SENTINEL.start=0,e.SENTINEL.end=0}function M(F,O){const W=O.right;W.delta+=O.delta,(W.delta<-1073741824||W.delta>1073741824)&&(F.requestNormalizeDelta=!0),W.start+=O.delta,W.end+=O.delta,O.right=W.left,W.left!==e.SENTINEL&&(W.left.parent=O),W.parent=O.parent,O.parent===e.SENTINEL?F.root=W:O===O.parent.left?O.parent.left=W:O.parent.right=W,W.left=O,O.parent=W,T(O),T(W)}function P(F,O){const W=O.left;O.delta-=W.delta,(O.delta<-1073741824||O.delta>1073741824)&&(F.requestNormalizeDelta=!0),O.start-=W.delta,O.end-=W.delta,O.left=W.right,W.right!==e.SENTINEL&&(W.right.parent=O),W.parent=O.parent,O.parent===e.SENTINEL?F.root=W:O===O.parent.right?O.parent.right=W:O.parent.left=W,W.right=O,O.parent=W,T(O),T(W)}function x(F){let O=F.end;if(F.left!==e.SENTINEL){const W=F.left.maxEnd;W>O&&(O=W)}if(F.right!==e.SENTINEL){const W=F.right.maxEnd+F.delta;W>O&&(O=W)}return O}function T(F){F.maxEnd=x(F)}e.recomputeMaxEnd=T;function A(F){for(;F!==e.SENTINEL;){const O=x(F);if(F.maxEnd===O)return;F.maxEnd=O,F=F.parent}}function N(F,O,W,U){return F===W?O-U:F-W}e.intervalCompare=N}),define(ne[511],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.recomputeTreeMetadata=e.updateTreeMetadata=e.fixInsert=e.rbDelete=e.rightRotate=e.leftRotate=e.righttest=e.leftest=e.SENTINEL=e.TreeNode=void 0;class L{constructor(a,u){this.piece=a,this.color=u,this.size_left=0,this.lf_left=0,this.parent=this,this.left=this,this.right=this}next(){if(this.right!==e.SENTINEL)return k(this.right);let a=this;for(;a.parent!==e.SENTINEL&&a.parent.left!==a;)a=a.parent;return a.parent===e.SENTINEL?e.SENTINEL:a.parent}prev(){if(this.left!==e.SENTINEL)return y(this.left);let a=this;for(;a.parent!==e.SENTINEL&&a.parent.right!==a;)a=a.parent;return a.parent===e.SENTINEL?e.SENTINEL:a.parent}detach(){this.parent=null,this.left=null,this.right=null}}e.TreeNode=L,e.SENTINEL=new L(null,0),e.SENTINEL.parent=e.SENTINEL,e.SENTINEL.left=e.SENTINEL,e.SENTINEL.right=e.SENTINEL,e.SENTINEL.color=0;function k(t){for(;t.left!==e.SENTINEL;)t=t.left;return t}e.leftest=k;function y(t){for(;t.right!==e.SENTINEL;)t=t.right;return t}e.righttest=y;function D(t){return t===e.SENTINEL?0:t.size_left+t.piece.length+D(t.right)}function S(t){return t===e.SENTINEL?0:t.lf_left+t.piece.lineFeedCnt+S(t.right)}function f(){e.SENTINEL.parent=e.SENTINEL}function _(t,a){const u=a.right;u.size_left+=a.size_left+(a.piece?a.piece.length:0),u.lf_left+=a.lf_left+(a.piece?a.piece.lineFeedCnt:0),a.right=u.left,u.left!==e.SENTINEL&&(u.left.parent=a),u.parent=a.parent,a.parent===e.SENTINEL?t.root=u:a.parent.left===a?a.parent.left=u:a.parent.right=u,u.left=a,a.parent=u}e.leftRotate=_;function g(t,a){const u=a.left;a.left=u.right,u.right!==e.SENTINEL&&(u.right.parent=a),u.parent=a.parent,a.size_left-=u.size_left+(u.piece?u.piece.length:0),a.lf_left-=u.lf_left+(u.piece?u.piece.lineFeedCnt:0),a.parent===e.SENTINEL?t.root=u:a===a.parent.right?a.parent.right=u:a.parent.left=u,u.right=a,a.parent=u}e.rightRotate=g;function C(t,a){let u,h;if(a.left===e.SENTINEL?(h=a,u=h.right):a.right===e.SENTINEL?(h=a,u=h.left):(h=k(a.right),u=h.right),h===t.root){t.root=u,u.color=0,a.detach(),f(),t.root.parent=e.SENTINEL;return}const r=h.color===1;if(h===h.parent.left?h.parent.left=u:h.parent.right=u,h===a?(u.parent=h.parent,n(t,u)):(h.parent===a?u.parent=h:u.parent=h.parent,n(t,u),h.left=a.left,h.right=a.right,h.parent=a.parent,h.color=a.color,a===t.root?t.root=h:a===a.parent.left?a.parent.left=h:a.parent.right=h,h.left!==e.SENTINEL&&(h.left.parent=h),h.right!==e.SENTINEL&&(h.right.parent=h),h.size_left=a.size_left,h.lf_left=a.lf_left,n(t,h)),a.detach(),u.parent.left===u){const o=D(u),d=S(u);if(o!==u.parent.size_left||d!==u.parent.lf_left){const l=o-u.parent.size_left,p=d-u.parent.lf_left;u.parent.size_left=o,u.parent.lf_left=d,i(t,u.parent,l,p)}}if(n(t,u.parent),r){f();return}let c;for(;u!==t.root&&u.color===0;)u===u.parent.left?(c=u.parent.right,c.color===1&&(c.color=0,u.parent.color=1,_(t,u.parent),c=u.parent.right),c.left.color===0&&c.right.color===0?(c.color=1,u=u.parent):(c.right.color===0&&(c.left.color=0,c.color=1,g(t,c),c=u.parent.right),c.color=u.parent.color,u.parent.color=0,c.right.color=0,_(t,u.parent),u=t.root)):(c=u.parent.left,c.color===1&&(c.color=0,u.parent.color=1,g(t,u.parent),c=u.parent.left),c.left.color===0&&c.right.color===0?(c.color=1,u=u.parent):(c.left.color===0&&(c.right.color=0,c.color=1,_(t,c),c=u.parent.left),c.color=u.parent.color,u.parent.color=0,c.left.color=0,g(t,u.parent),u=t.root));u.color=0,f()}e.rbDelete=C;function s(t,a){for(n(t,a);a!==t.root&&a.parent.color===1;)if(a.parent===a.parent.parent.left){const u=a.parent.parent.right;u.color===1?(a.parent.color=0,u.color=0,a.parent.parent.color=1,a=a.parent.parent):(a===a.parent.right&&(a=a.parent,_(t,a)),a.parent.color=0,a.parent.parent.color=1,g(t,a.parent.parent))}else{const u=a.parent.parent.left;u.color===1?(a.parent.color=0,u.color=0,a.parent.parent.color=1,a=a.parent.parent):(a===a.parent.left&&(a=a.parent,g(t,a)),a.parent.color=0,a.parent.parent.color=1,_(t,a.parent.parent))}t.root.color=0}e.fixInsert=s;function i(t,a,u,h){for(;a!==t.root&&a!==e.SENTINEL;)a.parent.left===a&&(a.parent.size_left+=u,a.parent.lf_left+=h),a=a.parent}e.updateTreeMetadata=i;function n(t,a){let u=0,h=0;if(a!==t.root){for(;a!==t.root&&a===a.parent.right;)a=a.parent;if(a!==t.root)for(a=a.parent,u=D(a.left)-a.size_left,h=S(a.left)-a.lf_left,a.size_left+=u,a.lf_left+=h;a!==t.root&&(u!==0||h!==0);)a.parent.left===a&&(a.parent.size_left+=u,a.parent.lf_left+=h),a=a.parent}}e.recomputeTreeMetadata=n}),define(ne[281],se([1,0,14,169]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PrefixSumIndexOfResult=e.ConstantTimePrefixSumComputer=e.PrefixSumComputer=void 0;class y{constructor(_){this.values=_,this.prefixSum=new Uint32Array(_.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(_,g){_=(0,k.toUint32)(_);const C=this.values,s=this.prefixSum,i=g.length;return i===0?!1:(this.values=new Uint32Array(C.length+i),this.values.set(C.subarray(0,_),0),this.values.set(C.subarray(_),_+i),this.values.set(g,_),_-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=_-1),this.prefixSum=new Uint32Array(this.values.length),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(s.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(_,g){return _=(0,k.toUint32)(_),g=(0,k.toUint32)(g),this.values[_]===g?!1:(this.values[_]=g,_-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=_-1),!0)}removeValues(_,g){_=(0,k.toUint32)(_),g=(0,k.toUint32)(g);const C=this.values,s=this.prefixSum;if(_>=C.length)return!1;const i=C.length-_;return g>=i&&(g=i),g===0?!1:(this.values=new Uint32Array(C.length-g),this.values.set(C.subarray(0,_),0),this.values.set(C.subarray(_+g),_),this.prefixSum=new Uint32Array(this.values.length),_-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=_-1),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(s.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(_){return _<0?0:(_=(0,k.toUint32)(_),this._getPrefixSum(_))}_getPrefixSum(_){if(_<=this.prefixSumValidIndex[0])return this.prefixSum[_];let g=this.prefixSumValidIndex[0]+1;g===0&&(this.prefixSum[0]=this.values[0],g++),_>=this.values.length&&(_=this.values.length-1);for(let C=g;C<=_;C++)this.prefixSum[C]=this.prefixSum[C-1]+this.values[C];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],_),this.prefixSum[_]}getIndexOf(_){_=Math.floor(_),this.getTotalSum();let g=0,C=this.values.length-1,s=0,i=0,n=0;for(;g<=C;)if(s=g+(C-g)/2|0,i=this.prefixSum[s],n=i-this.values[s],_<n)C=s-1;else if(_>=i)g=s+1;else break;return new S(s,_-n)}}e.PrefixSumComputer=y;class D{constructor(_){this._values=_,this._isValid=!1,this._validEndIndex=-1,this._prefixSum=[],this._indexBySum=[]}getTotalSum(){return this._ensureValid(),this._indexBySum.length}getPrefixSum(_){return this._ensureValid(),_===0?0:this._prefixSum[_-1]}getIndexOf(_){this._ensureValid();const g=this._indexBySum[_],C=g>0?this._prefixSum[g-1]:0;return new S(g,_-C)}removeValues(_,g){this._values.splice(_,g),this._invalidate(_)}insertValues(_,g){this._values=(0,L.arrayInsert)(this._values,_,g),this._invalidate(_)}_invalidate(_){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,_-1)}_ensureValid(){if(!this._isValid){for(let _=this._validEndIndex+1,g=this._values.length;_<g;_++){const C=this._values[_],s=_>0?this._prefixSum[_-1]:0;this._prefixSum[_]=s+C;for(let i=0;i<C;i++)this._indexBySum[s+i]=_}this._prefixSum.length=this._values.length,this._indexBySum.length=this._prefixSum[this._prefixSum.length-1],this._isValid=!0,this._validEndIndex=this._values.length-1}}setValue(_,g){this._values[_]!==g&&(this._values[_]=g,this._invalidate(_))}}e.ConstantTimePrefixSumComputer=D;class S{constructor(_,g){this.index=_,this.remainder=g,this._prefixSumIndexOfResultBrand=void 0,this.index=_,this.remainder=g}}e.PrefixSumIndexOfResult=S}),define(ne[512],se([1,0,11,12,281]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MirrorTextModel=void 0;class D{constructor(f,_,g,C){this._uri=f,this._lines=_,this._eol=g,this._versionId=C,this._lineStarts=null,this._cachedTextValue=null}dispose(){this._lines.length=0}get version(){return this._versionId}getText(){return this._cachedTextValue===null&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}onEvents(f){f.eol&&f.eol!==this._eol&&(this._eol=f.eol,this._lineStarts=null);const _=f.changes;for(const g of _)this._acceptDeleteRange(g.range),this._acceptInsertText(new k.Position(g.range.startLineNumber,g.range.startColumn),g.text);this._versionId=f.versionId,this._cachedTextValue=null}_ensureLineStarts(){if(!this._lineStarts){const f=this._eol.length,_=this._lines.length,g=new Uint32Array(_);for(let C=0;C<_;C++)g[C]=this._lines[C].length+f;this._lineStarts=new y.PrefixSumComputer(g)}}_setLineText(f,_){this._lines[f]=_,this._lineStarts&&this._lineStarts.setValue(f,this._lines[f].length+this._eol.length)}_acceptDeleteRange(f){if(f.startLineNumber===f.endLineNumber){if(f.startColumn===f.endColumn)return;this._setLineText(f.startLineNumber-1,this._lines[f.startLineNumber-1].substring(0,f.startColumn-1)+this._lines[f.startLineNumber-1].substring(f.endColumn-1));return}this._setLineText(f.startLineNumber-1,this._lines[f.startLineNumber-1].substring(0,f.startColumn-1)+this._lines[f.endLineNumber-1].substring(f.endColumn-1)),this._lines.splice(f.startLineNumber,f.endLineNumber-f.startLineNumber),this._lineStarts&&this._lineStarts.removeValues(f.startLineNumber,f.endLineNumber-f.startLineNumber)}_acceptInsertText(f,_){if(_.length===0)return;const g=(0,L.splitLines)(_);if(g.length===1){this._setLineText(f.lineNumber-1,this._lines[f.lineNumber-1].substring(0,f.column-1)+g[0]+this._lines[f.lineNumber-1].substring(f.column-1));return}g[g.length-1]+=this._lines[f.lineNumber-1].substring(f.column-1),this._setLineText(f.lineNumber-1,this._lines[f.lineNumber-1].substring(0,f.column-1)+g[0]);const C=new Uint32Array(g.length-1);for(let s=1;s<g.length;s++)this._lines.splice(f.lineNumber+s-1,0,g[s]),C[s-1]=g[s].length+this._eol.length;this._lineStarts&&this._lineStarts.insertValues(f.lineNumber,C)}}e.MirrorTextModel=D}),define(ne[282],se([1,0,2]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextModelPart=void 0;class k extends L.Disposable{constructor(){super(...arguments),this._isDisposed=!1}dispose(){super.dispose(),this._isDisposed=!0}assertNotDisposed(){if(this._isDisposed)throw new Error(\"TextModelPart is disposed!\")}}e.TextModelPart=k}),define(ne[181],se([1,0,11,146,12,5,48]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Searcher=e.isValidMatch=e.TextModelSearch=e.createFindMatch=e.isMultilineRegexSource=e.SearchParams=void 0;const f=999;class _{constructor(r,c,o,d){this.searchString=r,this.isRegex=c,this.matchCase=o,this.wordSeparators=d}parseSearchRequest(){if(this.searchString===\"\")return null;let r;this.isRegex?r=g(this.searchString):r=this.searchString.indexOf(`\n`)>=0;let c=null;try{c=L.createRegExp(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:r,global:!0,unicode:!0})}catch{return null}if(!c)return null;let o=!this.isRegex&&!r;return o&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(o=this.matchCase),new S.SearchData(c,this.wordSeparators?(0,k.getMapForWordSeparators)(this.wordSeparators):null,o?this.searchString:null)}}e.SearchParams=_;function g(h){if(!h||h.length===0)return!1;for(let r=0,c=h.length;r<c;r++){const o=h.charCodeAt(r);if(o===10)return!0;if(o===92){if(r++,r>=c)break;const d=h.charCodeAt(r);if(d===110||d===114||d===87)return!0}}return!1}e.isMultilineRegexSource=g;function C(h,r,c){if(!c)return new S.FindMatch(h,null);const o=[];for(let d=0,l=r.length;d<l;d++)o[d]=r[d];return new S.FindMatch(h,o)}e.createFindMatch=C;class s{constructor(r){const c=[];let o=0;for(let d=0,l=r.length;d<l;d++)r.charCodeAt(d)===10&&(c[o++]=d);this._lineFeedsOffsets=c}findLineFeedCountBeforeOffset(r){const c=this._lineFeedsOffsets;let o=0,d=c.length-1;if(d===-1||r<=c[0])return 0;for(;o<d;){const l=o+((d-o)/2>>0);c[l]>=r?d=l-1:c[l+1]>=r?(o=l,d=l):o=l+1}return o+1}}class i{static findMatches(r,c,o,d,l){const p=c.parseSearchRequest();return p?p.regex.multiline?this._doFindMatchesMultiline(r,o,new u(p.wordSeparators,p.regex),d,l):this._doFindMatchesLineByLine(r,o,p,d,l):[]}static _getMultilineMatchRange(r,c,o,d,l,p){let m,v=0;d?(v=d.findLineFeedCountBeforeOffset(l),m=c+l+v):m=c+l;let b;if(d){const M=d.findLineFeedCountBeforeOffset(l+p.length)-v;b=m+p.length+M}else b=m+p.length;const w=r.getPositionAt(m),E=r.getPositionAt(b);return new D.Range(w.lineNumber,w.column,E.lineNumber,E.column)}static _doFindMatchesMultiline(r,c,o,d,l){const p=r.getOffsetAt(c.getStartPosition()),m=r.getValueInRange(c,1),v=r.getEOL()===`\\r\n`?new s(m):null,b=[];let w=0,E;for(o.reset(0);E=o.next(m);)if(b[w++]=C(this._getMultilineMatchRange(r,p,m,v,E.index,E[0]),E,d),w>=l)return b;return b}static _doFindMatchesLineByLine(r,c,o,d,l){const p=[];let m=0;if(c.startLineNumber===c.endLineNumber){const b=r.getLineContent(c.startLineNumber).substring(c.startColumn-1,c.endColumn-1);return m=this._findMatchesInLine(o,b,c.startLineNumber,c.startColumn-1,m,p,d,l),p}const v=r.getLineContent(c.startLineNumber).substring(c.startColumn-1);m=this._findMatchesInLine(o,v,c.startLineNumber,c.startColumn-1,m,p,d,l);for(let b=c.startLineNumber+1;b<c.endLineNumber&&m<l;b++)m=this._findMatchesInLine(o,r.getLineContent(b),b,0,m,p,d,l);if(m<l){const b=r.getLineContent(c.endLineNumber).substring(0,c.endColumn-1);m=this._findMatchesInLine(o,b,c.endLineNumber,0,m,p,d,l)}return p}static _findMatchesInLine(r,c,o,d,l,p,m,v){const b=r.wordSeparators;if(!m&&r.simpleSearch){const I=r.simpleSearch,M=I.length,P=c.length;let x=-M;for(;(x=c.indexOf(I,x+M))!==-1;)if((!b||a(b,c,P,x,M))&&(p[l++]=new S.FindMatch(new D.Range(o,x+1+d,o,x+1+M+d),null),l>=v))return l;return l}const w=new u(r.wordSeparators,r.regex);let E;w.reset(0);do if(E=w.next(c),E&&(p[l++]=C(new D.Range(o,E.index+1+d,o,E.index+1+E[0].length+d),E,m),l>=v))return l;while(E);return l}static findNextMatch(r,c,o,d){const l=c.parseSearchRequest();if(!l)return null;const p=new u(l.wordSeparators,l.regex);return l.regex.multiline?this._doFindNextMatchMultiline(r,o,p,d):this._doFindNextMatchLineByLine(r,o,p,d)}static _doFindNextMatchMultiline(r,c,o,d){const l=new y.Position(c.lineNumber,1),p=r.getOffsetAt(l),m=r.getLineCount(),v=r.getValueInRange(new D.Range(l.lineNumber,l.column,m,r.getLineMaxColumn(m)),1),b=r.getEOL()===`\\r\n`?new s(v):null;o.reset(c.column-1);const w=o.next(v);return w?C(this._getMultilineMatchRange(r,p,v,b,w.index,w[0]),w,d):c.lineNumber!==1||c.column!==1?this._doFindNextMatchMultiline(r,new y.Position(1,1),o,d):null}static _doFindNextMatchLineByLine(r,c,o,d){const l=r.getLineCount(),p=c.lineNumber,m=r.getLineContent(p),v=this._findFirstMatchInLine(o,m,p,c.column,d);if(v)return v;for(let b=1;b<=l;b++){const w=(p+b-1)%l,E=r.getLineContent(w+1),I=this._findFirstMatchInLine(o,E,w+1,1,d);if(I)return I}return null}static _findFirstMatchInLine(r,c,o,d,l){r.reset(d-1);const p=r.next(c);return p?C(new D.Range(o,p.index+1,o,p.index+1+p[0].length),p,l):null}static findPreviousMatch(r,c,o,d){const l=c.parseSearchRequest();if(!l)return null;const p=new u(l.wordSeparators,l.regex);return l.regex.multiline?this._doFindPreviousMatchMultiline(r,o,p,d):this._doFindPreviousMatchLineByLine(r,o,p,d)}static _doFindPreviousMatchMultiline(r,c,o,d){const l=this._doFindMatchesMultiline(r,new D.Range(1,1,c.lineNumber,c.column),o,d,10*f);if(l.length>0)return l[l.length-1];const p=r.getLineCount();return c.lineNumber!==p||c.column!==r.getLineMaxColumn(p)?this._doFindPreviousMatchMultiline(r,new y.Position(p,r.getLineMaxColumn(p)),o,d):null}static _doFindPreviousMatchLineByLine(r,c,o,d){const l=r.getLineCount(),p=c.lineNumber,m=r.getLineContent(p).substring(0,c.column-1),v=this._findLastMatchInLine(o,m,p,d);if(v)return v;for(let b=1;b<=l;b++){const w=(l+p-b-1)%l,E=r.getLineContent(w+1),I=this._findLastMatchInLine(o,E,w+1,d);if(I)return I}return null}static _findLastMatchInLine(r,c,o,d){let l=null,p;for(r.reset(0);p=r.next(c);)l=C(new D.Range(o,p.index+1,o,p.index+1+p[0].length),p,d);return l}}e.TextModelSearch=i;function n(h,r,c,o,d){if(o===0)return!0;const l=r.charCodeAt(o-1);if(h.get(l)!==0||l===13||l===10)return!0;if(d>0){const p=r.charCodeAt(o);if(h.get(p)!==0)return!0}return!1}function t(h,r,c,o,d){if(o+d===c)return!0;const l=r.charCodeAt(o+d);if(h.get(l)!==0||l===13||l===10)return!0;if(d>0){const p=r.charCodeAt(o+d-1);if(h.get(p)!==0)return!0}return!1}function a(h,r,c,o,d){return n(h,r,c,o,d)&&t(h,r,c,o,d)}e.isValidMatch=a;class u{constructor(r,c){this._wordSeparators=r,this._searchRegex=c,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(r){this._searchRegex.lastIndex=r,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(r){const c=r.length;let o;do{if(this._prevMatchStartIndex+this._prevMatchLength===c||(o=this._searchRegex.exec(r),!o))return null;const d=o.index,l=o[0].length;if(d===this._prevMatchStartIndex&&l===this._prevMatchLength){if(l===0){L.getNextCodePoint(r,c,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=d,this._prevMatchLength=l,!this._wordSeparators||a(this._wordSeparators,r,c,d,l))return o}while(o);return null}}e.Searcher=u}),define(ne[283],se([1,0,12,5,48,511,181]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PieceTreeBase=e.StringBuffer=e.Piece=e.createLineStarts=e.createLineStartsFast=void 0;const f=65535;function _(h){let r;return h[h.length-1]<65536?r=new Uint16Array(h.length):r=new Uint32Array(h.length),r.set(h,0),r}class g{constructor(r,c,o,d,l){this.lineStarts=r,this.cr=c,this.lf=o,this.crlf=d,this.isBasicASCII=l}}function C(h,r=!0){const c=[0];let o=1;for(let d=0,l=h.length;d<l;d++){const p=h.charCodeAt(d);p===13?d+1<l&&h.charCodeAt(d+1)===10?(c[o++]=d+2,d++):c[o++]=d+1:p===10&&(c[o++]=d+1)}return r?_(c):c}e.createLineStartsFast=C;function s(h,r){h.length=0,h[0]=0;let c=1,o=0,d=0,l=0,p=!0;for(let v=0,b=r.length;v<b;v++){const w=r.charCodeAt(v);w===13?v+1<b&&r.charCodeAt(v+1)===10?(l++,h[c++]=v+2,v++):(o++,h[c++]=v+1):w===10?(d++,h[c++]=v+1):p&&w!==9&&(w<32||w>126)&&(p=!1)}const m=new g(_(h),o,d,l,p);return h.length=0,m}e.createLineStarts=s;class i{constructor(r,c,o,d,l){this.bufferIndex=r,this.start=c,this.end=o,this.lineFeedCnt=d,this.length=l}}e.Piece=i;class n{constructor(r,c){this.buffer=r,this.lineStarts=c}}e.StringBuffer=n;class t{constructor(r,c){this._pieces=[],this._tree=r,this._BOM=c,this._index=0,r.root!==D.SENTINEL&&r.iterate(r.root,o=>(o!==D.SENTINEL&&this._pieces.push(o.piece),!0))}read(){return this._pieces.length===0?this._index===0?(this._index++,this._BOM):null:this._index>this._pieces.length-1?null:this._index===0?this._BOM+this._tree.getPieceContent(this._pieces[this._index++]):this._tree.getPieceContent(this._pieces[this._index++])}}class a{constructor(r){this._limit=r,this._cache=[]}get(r){for(let c=this._cache.length-1;c>=0;c--){const o=this._cache[c];if(o.nodeStartOffset<=r&&o.nodeStartOffset+o.node.piece.length>=r)return o}return null}get2(r){for(let c=this._cache.length-1;c>=0;c--){const o=this._cache[c];if(o.nodeStartLineNumber&&o.nodeStartLineNumber<r&&o.nodeStartLineNumber+o.node.piece.lineFeedCnt>=r)return o}return null}set(r){this._cache.length>=this._limit&&this._cache.shift(),this._cache.push(r)}validate(r){let c=!1;const o=this._cache;for(let d=0;d<o.length;d++){const l=o[d];if(l.node.parent===null||l.nodeStartOffset>=r){o[d]=null,c=!0;continue}}if(c){const d=[];for(const l of o)l!==null&&d.push(l);this._cache=d}}}class u{constructor(r,c,o){this.create(r,c,o)}create(r,c,o){this._buffers=[new n(\"\",[0])],this._lastChangeBufferPos={line:0,column:0},this.root=D.SENTINEL,this._lineCnt=1,this._length=0,this._EOL=c,this._EOLLength=c.length,this._EOLNormalized=o;let d=null;for(let l=0,p=r.length;l<p;l++)if(r[l].buffer.length>0){r[l].lineStarts||(r[l].lineStarts=C(r[l].buffer));const m=new i(l+1,{line:0,column:0},{line:r[l].lineStarts.length-1,column:r[l].buffer.length-r[l].lineStarts[r[l].lineStarts.length-1]},r[l].lineStarts.length-1,r[l].buffer.length);this._buffers.push(r[l]),d=this.rbInsertRight(d,m)}this._searchCache=new a(1),this._lastVisitedLine={lineNumber:0,value:\"\"},this.computeBufferMetadata()}normalizeEOL(r){const c=f,o=c-Math.floor(c/3),d=o*2;let l=\"\",p=0;const m=[];if(this.iterate(this.root,v=>{const b=this.getNodeContent(v),w=b.length;if(p<=o||p+w<d)return l+=b,p+=w,!0;const E=l.replace(/\\r\\n|\\r|\\n/g,r);return m.push(new n(E,C(E))),l=b,p=w,!0}),p>0){const v=l.replace(/\\r\\n|\\r|\\n/g,r);m.push(new n(v,C(v)))}this.create(m,r,!0)}getEOL(){return this._EOL}setEOL(r){this._EOL=r,this._EOLLength=this._EOL.length,this.normalizeEOL(r)}createSnapshot(r){return new t(this,r)}getOffsetAt(r,c){let o=0,d=this.root;for(;d!==D.SENTINEL;)if(d.left!==D.SENTINEL&&d.lf_left+1>=r)d=d.left;else if(d.lf_left+d.piece.lineFeedCnt+1>=r){o+=d.size_left;const l=this.getAccumulatedValue(d,r-d.lf_left-2);return o+=l+c-1}else r-=d.lf_left+d.piece.lineFeedCnt,o+=d.size_left+d.piece.length,d=d.right;return o}getPositionAt(r){r=Math.floor(r),r=Math.max(0,r);let c=this.root,o=0;const d=r;for(;c!==D.SENTINEL;)if(c.size_left!==0&&c.size_left>=r)c=c.left;else if(c.size_left+c.piece.length>=r){const l=this.getIndexOf(c,r-c.size_left);if(o+=c.lf_left+l.index,l.index===0){const p=this.getOffsetAt(o+1,1),m=d-p;return new L.Position(o+1,m+1)}return new L.Position(o+1,l.remainder+1)}else if(r-=c.size_left+c.piece.length,o+=c.lf_left+c.piece.lineFeedCnt,c.right===D.SENTINEL){const l=this.getOffsetAt(o+1,1),p=d-r-l;return new L.Position(o+1,p+1)}else c=c.right;return new L.Position(1,1)}getValueInRange(r,c){if(r.startLineNumber===r.endLineNumber&&r.startColumn===r.endColumn)return\"\";const o=this.nodeAt2(r.startLineNumber,r.startColumn),d=this.nodeAt2(r.endLineNumber,r.endColumn),l=this.getValueInRange2(o,d);return c?c!==this._EOL||!this._EOLNormalized?l.replace(/\\r\\n|\\r|\\n/g,c):c===this.getEOL()&&this._EOLNormalized?l:l.replace(/\\r\\n|\\r|\\n/g,c):l}getValueInRange2(r,c){if(r.node===c.node){const m=r.node,v=this._buffers[m.piece.bufferIndex].buffer,b=this.offsetInBuffer(m.piece.bufferIndex,m.piece.start);return v.substring(b+r.remainder,b+c.remainder)}let o=r.node;const d=this._buffers[o.piece.bufferIndex].buffer,l=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);let p=d.substring(l+r.remainder,l+o.piece.length);for(o=o.next();o!==D.SENTINEL;){const m=this._buffers[o.piece.bufferIndex].buffer,v=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);if(o===c.node){p+=m.substring(v,v+c.remainder);break}else p+=m.substr(v,o.piece.length);o=o.next()}return p}getLinesContent(){const r=[];let c=0,o=\"\",d=!1;return this.iterate(this.root,l=>{if(l===D.SENTINEL)return!0;const p=l.piece;let m=p.length;if(m===0)return!0;const v=this._buffers[p.bufferIndex].buffer,b=this._buffers[p.bufferIndex].lineStarts,w=p.start.line,E=p.end.line;let I=b[w]+p.start.column;if(d&&(v.charCodeAt(I)===10&&(I++,m--),r[c++]=o,o=\"\",d=!1,m===0))return!0;if(w===E)return!this._EOLNormalized&&v.charCodeAt(I+m-1)===13?(d=!0,o+=v.substr(I,m-1)):o+=v.substr(I,m),!0;o+=this._EOLNormalized?v.substring(I,Math.max(I,b[w+1]-this._EOLLength)):v.substring(I,b[w+1]).replace(/(\\r\\n|\\r|\\n)$/,\"\"),r[c++]=o;for(let M=w+1;M<E;M++)o=this._EOLNormalized?v.substring(b[M],b[M+1]-this._EOLLength):v.substring(b[M],b[M+1]).replace(/(\\r\\n|\\r|\\n)$/,\"\"),r[c++]=o;return!this._EOLNormalized&&v.charCodeAt(b[E]+p.end.column-1)===13?(d=!0,p.end.column===0?c--:o=v.substr(b[E],p.end.column-1)):o=v.substr(b[E],p.end.column),!0}),d&&(r[c++]=o,o=\"\"),r[c++]=o,r}getLength(){return this._length}getLineCount(){return this._lineCnt}getLineContent(r){return this._lastVisitedLine.lineNumber===r?this._lastVisitedLine.value:(this._lastVisitedLine.lineNumber=r,r===this._lineCnt?this._lastVisitedLine.value=this.getLineRawContent(r):this._EOLNormalized?this._lastVisitedLine.value=this.getLineRawContent(r,this._EOLLength):this._lastVisitedLine.value=this.getLineRawContent(r).replace(/(\\r\\n|\\r|\\n)$/,\"\"),this._lastVisitedLine.value)}_getCharCode(r){if(r.remainder===r.node.piece.length){const c=r.node.next();if(!c)return 0;const o=this._buffers[c.piece.bufferIndex],d=this.offsetInBuffer(c.piece.bufferIndex,c.piece.start);return o.buffer.charCodeAt(d)}else{const c=this._buffers[r.node.piece.bufferIndex],d=this.offsetInBuffer(r.node.piece.bufferIndex,r.node.piece.start)+r.remainder;return c.buffer.charCodeAt(d)}}getLineCharCode(r,c){const o=this.nodeAt2(r,c+1);return this._getCharCode(o)}getLineLength(r){if(r===this.getLineCount()){const c=this.getOffsetAt(r,1);return this.getLength()-c}return this.getOffsetAt(r+1,1)-this.getOffsetAt(r,1)-this._EOLLength}findMatchesInNode(r,c,o,d,l,p,m,v,b,w,E){const I=this._buffers[r.piece.bufferIndex],M=this.offsetInBuffer(r.piece.bufferIndex,r.piece.start),P=this.offsetInBuffer(r.piece.bufferIndex,l),x=this.offsetInBuffer(r.piece.bufferIndex,p);let T;const A={line:0,column:0};let N,F;c._wordSeparators?(N=I.buffer.substring(P,x),F=O=>O+P,c.reset(0)):(N=I.buffer,F=O=>O,c.reset(P));do if(T=c.next(N),T){if(F(T.index)>=x)return w;this.positionInBuffer(r,F(T.index)-M,A);const O=this.getLineFeedCnt(r.piece.bufferIndex,l,A),W=A.line===l.line?A.column-l.column+d:A.column+1,U=W+T[0].length;if(E[w++]=(0,S.createFindMatch)(new k.Range(o+O,W,o+O,U),T,v),F(T.index)+T[0].length>=x||w>=b)return w}while(T);return w}findMatchesLineByLine(r,c,o,d){const l=[];let p=0;const m=new S.Searcher(c.wordSeparators,c.regex);let v=this.nodeAt2(r.startLineNumber,r.startColumn);if(v===null)return[];const b=this.nodeAt2(r.endLineNumber,r.endColumn);if(b===null)return[];let w=this.positionInBuffer(v.node,v.remainder);const E=this.positionInBuffer(b.node,b.remainder);if(v.node===b.node)return this.findMatchesInNode(v.node,m,r.startLineNumber,r.startColumn,w,E,c,o,d,p,l),l;let I=r.startLineNumber,M=v.node;for(;M!==b.node;){const x=this.getLineFeedCnt(M.piece.bufferIndex,w,M.piece.end);if(x>=1){const A=this._buffers[M.piece.bufferIndex].lineStarts,N=this.offsetInBuffer(M.piece.bufferIndex,M.piece.start),F=A[w.line+x],O=I===r.startLineNumber?r.startColumn:1;if(p=this.findMatchesInNode(M,m,I,O,w,this.positionInBuffer(M,F-N),c,o,d,p,l),p>=d)return l;I+=x}const T=I===r.startLineNumber?r.startColumn-1:0;if(I===r.endLineNumber){const A=this.getLineContent(I).substring(T,r.endColumn-1);return p=this._findMatchesInLine(c,m,A,r.endLineNumber,T,p,l,o,d),l}if(p=this._findMatchesInLine(c,m,this.getLineContent(I).substr(T),I,T,p,l,o,d),p>=d)return l;I++,v=this.nodeAt2(I,1),M=v.node,w=this.positionInBuffer(v.node,v.remainder)}if(I===r.endLineNumber){const x=I===r.startLineNumber?r.startColumn-1:0,T=this.getLineContent(I).substring(x,r.endColumn-1);return p=this._findMatchesInLine(c,m,T,r.endLineNumber,x,p,l,o,d),l}const P=I===r.startLineNumber?r.startColumn:1;return p=this.findMatchesInNode(b.node,m,I,P,w,E,c,o,d,p,l),l}_findMatchesInLine(r,c,o,d,l,p,m,v,b){const w=r.wordSeparators;if(!v&&r.simpleSearch){const I=r.simpleSearch,M=I.length,P=o.length;let x=-M;for(;(x=o.indexOf(I,x+M))!==-1;)if((!w||(0,S.isValidMatch)(w,o,P,x,M))&&(m[p++]=new y.FindMatch(new k.Range(d,x+1+l,d,x+1+M+l),null),p>=b))return p;return p}let E;c.reset(0);do if(E=c.next(o),E&&(m[p++]=(0,S.createFindMatch)(new k.Range(d,E.index+1+l,d,E.index+1+E[0].length+l),E,v),p>=b))return p;while(E);return p}insert(r,c,o=!1){if(this._EOLNormalized=this._EOLNormalized&&o,this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value=\"\",this.root!==D.SENTINEL){const{node:d,remainder:l,nodeStartOffset:p}=this.nodeAt(r),m=d.piece,v=m.bufferIndex,b=this.positionInBuffer(d,l);if(d.piece.bufferIndex===0&&m.end.line===this._lastChangeBufferPos.line&&m.end.column===this._lastChangeBufferPos.column&&p+m.length===r&&c.length<f){this.appendToNode(d,c),this.computeBufferMetadata();return}if(p===r)this.insertContentToNodeLeft(c,d),this._searchCache.validate(r);else if(p+d.piece.length>r){const w=[];let E=new i(m.bufferIndex,b,m.end,this.getLineFeedCnt(m.bufferIndex,b,m.end),this.offsetInBuffer(v,m.end)-this.offsetInBuffer(v,b));if(this.shouldCheckCRLF()&&this.endWithCR(c)&&this.nodeCharCodeAt(d,l)===10){const x={line:E.start.line+1,column:0};E=new i(E.bufferIndex,x,E.end,this.getLineFeedCnt(E.bufferIndex,x,E.end),E.length-1),c+=`\n`}if(this.shouldCheckCRLF()&&this.startWithLF(c))if(this.nodeCharCodeAt(d,l-1)===13){const x=this.positionInBuffer(d,l-1);this.deleteNodeTail(d,x),c=\"\\r\"+c,d.piece.length===0&&w.push(d)}else this.deleteNodeTail(d,b);else this.deleteNodeTail(d,b);const I=this.createNewPieces(c);E.length>0&&this.rbInsertRight(d,E);let M=d;for(let P=0;P<I.length;P++)M=this.rbInsertRight(M,I[P]);this.deleteNodes(w)}else this.insertContentToNodeRight(c,d)}else{const d=this.createNewPieces(c);let l=this.rbInsertLeft(null,d[0]);for(let p=1;p<d.length;p++)l=this.rbInsertRight(l,d[p])}this.computeBufferMetadata()}delete(r,c){if(this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value=\"\",c<=0||this.root===D.SENTINEL)return;const o=this.nodeAt(r),d=this.nodeAt(r+c),l=o.node,p=d.node;if(l===p){const I=this.positionInBuffer(l,o.remainder),M=this.positionInBuffer(l,d.remainder);if(o.nodeStartOffset===r){if(c===l.piece.length){const P=l.next();(0,D.rbDelete)(this,l),this.validateCRLFWithPrevNode(P),this.computeBufferMetadata();return}this.deleteNodeHead(l,M),this._searchCache.validate(r),this.validateCRLFWithPrevNode(l),this.computeBufferMetadata();return}if(o.nodeStartOffset+l.piece.length===r+c){this.deleteNodeTail(l,I),this.validateCRLFWithNextNode(l),this.computeBufferMetadata();return}this.shrinkNode(l,I,M),this.computeBufferMetadata();return}const m=[],v=this.positionInBuffer(l,o.remainder);this.deleteNodeTail(l,v),this._searchCache.validate(r),l.piece.length===0&&m.push(l);const b=this.positionInBuffer(p,d.remainder);this.deleteNodeHead(p,b),p.piece.length===0&&m.push(p);const w=l.next();for(let I=w;I!==D.SENTINEL&&I!==p;I=I.next())m.push(I);const E=l.piece.length===0?l.prev():l;this.deleteNodes(m),this.validateCRLFWithNextNode(E),this.computeBufferMetadata()}insertContentToNodeLeft(r,c){const o=[];if(this.shouldCheckCRLF()&&this.endWithCR(r)&&this.startWithLF(c)){const p=c.piece,m={line:p.start.line+1,column:0},v=new i(p.bufferIndex,m,p.end,this.getLineFeedCnt(p.bufferIndex,m,p.end),p.length-1);c.piece=v,r+=`\n`,(0,D.updateTreeMetadata)(this,c,-1,-1),c.piece.length===0&&o.push(c)}const d=this.createNewPieces(r);let l=this.rbInsertLeft(c,d[d.length-1]);for(let p=d.length-2;p>=0;p--)l=this.rbInsertLeft(l,d[p]);this.validateCRLFWithPrevNode(l),this.deleteNodes(o)}insertContentToNodeRight(r,c){this.adjustCarriageReturnFromNext(r,c)&&(r+=`\n`);const o=this.createNewPieces(r),d=this.rbInsertRight(c,o[0]);let l=d;for(let p=1;p<o.length;p++)l=this.rbInsertRight(l,o[p]);this.validateCRLFWithPrevNode(d)}positionInBuffer(r,c,o){const d=r.piece,l=r.piece.bufferIndex,p=this._buffers[l].lineStarts,v=p[d.start.line]+d.start.column+c;let b=d.start.line,w=d.end.line,E=0,I=0,M=0;for(;b<=w&&(E=b+(w-b)/2|0,M=p[E],E!==w);)if(I=p[E+1],v<M)w=E-1;else if(v>=I)b=E+1;else break;return o?(o.line=E,o.column=v-M,null):{line:E,column:v-M}}getLineFeedCnt(r,c,o){if(o.column===0)return o.line-c.line;const d=this._buffers[r].lineStarts;if(o.line===d.length-1)return o.line-c.line;const l=d[o.line+1],p=d[o.line]+o.column;if(l>p+1)return o.line-c.line;const m=p-1;return this._buffers[r].buffer.charCodeAt(m)===13?o.line-c.line+1:o.line-c.line}offsetInBuffer(r,c){return this._buffers[r].lineStarts[c.line]+c.column}deleteNodes(r){for(let c=0;c<r.length;c++)(0,D.rbDelete)(this,r[c])}createNewPieces(r){if(r.length>f){const w=[];for(;r.length>f;){const I=r.charCodeAt(f-1);let M;I===13||I>=55296&&I<=56319?(M=r.substring(0,f-1),r=r.substring(f-1)):(M=r.substring(0,f),r=r.substring(f));const P=C(M);w.push(new i(this._buffers.length,{line:0,column:0},{line:P.length-1,column:M.length-P[P.length-1]},P.length-1,M.length)),this._buffers.push(new n(M,P))}const E=C(r);return w.push(new i(this._buffers.length,{line:0,column:0},{line:E.length-1,column:r.length-E[E.length-1]},E.length-1,r.length)),this._buffers.push(new n(r,E)),w}let c=this._buffers[0].buffer.length;const o=C(r,!1);let d=this._lastChangeBufferPos;if(this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-1]===c&&c!==0&&this.startWithLF(r)&&this.endWithCR(this._buffers[0].buffer)){this._lastChangeBufferPos={line:this._lastChangeBufferPos.line,column:this._lastChangeBufferPos.column+1},d=this._lastChangeBufferPos;for(let w=0;w<o.length;w++)o[w]+=c+1;this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(o.slice(1)),this._buffers[0].buffer+=\"_\"+r,c+=1}else{if(c!==0)for(let w=0;w<o.length;w++)o[w]+=c;this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(o.slice(1)),this._buffers[0].buffer+=r}const l=this._buffers[0].buffer.length,p=this._buffers[0].lineStarts.length-1,m=l-this._buffers[0].lineStarts[p],v={line:p,column:m},b=new i(0,d,v,this.getLineFeedCnt(0,d,v),l-c);return this._lastChangeBufferPos=v,[b]}getLineRawContent(r,c=0){let o=this.root,d=\"\";const l=this._searchCache.get2(r);if(l){o=l.node;const p=this.getAccumulatedValue(o,r-l.nodeStartLineNumber-1),m=this._buffers[o.piece.bufferIndex].buffer,v=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);if(l.nodeStartLineNumber+o.piece.lineFeedCnt===r)d=m.substring(v+p,v+o.piece.length);else{const b=this.getAccumulatedValue(o,r-l.nodeStartLineNumber);return m.substring(v+p,v+b-c)}}else{let p=0;const m=r;for(;o!==D.SENTINEL;)if(o.left!==D.SENTINEL&&o.lf_left>=r-1)o=o.left;else if(o.lf_left+o.piece.lineFeedCnt>r-1){const v=this.getAccumulatedValue(o,r-o.lf_left-2),b=this.getAccumulatedValue(o,r-o.lf_left-1),w=this._buffers[o.piece.bufferIndex].buffer,E=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);return p+=o.size_left,this._searchCache.set({node:o,nodeStartOffset:p,nodeStartLineNumber:m-(r-1-o.lf_left)}),w.substring(E+v,E+b-c)}else if(o.lf_left+o.piece.lineFeedCnt===r-1){const v=this.getAccumulatedValue(o,r-o.lf_left-2),b=this._buffers[o.piece.bufferIndex].buffer,w=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);d=b.substring(w+v,w+o.piece.length);break}else r-=o.lf_left+o.piece.lineFeedCnt,p+=o.size_left+o.piece.length,o=o.right}for(o=o.next();o!==D.SENTINEL;){const p=this._buffers[o.piece.bufferIndex].buffer;if(o.piece.lineFeedCnt>0){const m=this.getAccumulatedValue(o,0),v=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);return d+=p.substring(v,v+m-c),d}else{const m=this.offsetInBuffer(o.piece.bufferIndex,o.piece.start);d+=p.substr(m,o.piece.length)}o=o.next()}return d}computeBufferMetadata(){let r=this.root,c=1,o=0;for(;r!==D.SENTINEL;)c+=r.lf_left+r.piece.lineFeedCnt,o+=r.size_left+r.piece.length,r=r.right;this._lineCnt=c,this._length=o,this._searchCache.validate(this._length)}getIndexOf(r,c){const o=r.piece,d=this.positionInBuffer(r,c),l=d.line-o.start.line;if(this.offsetInBuffer(o.bufferIndex,o.end)-this.offsetInBuffer(o.bufferIndex,o.start)===c){const p=this.getLineFeedCnt(r.piece.bufferIndex,o.start,d);if(p!==l)return{index:p,remainder:0}}return{index:l,remainder:d.column}}getAccumulatedValue(r,c){if(c<0)return 0;const o=r.piece,d=this._buffers[o.bufferIndex].lineStarts,l=o.start.line+c+1;return l>o.end.line?d[o.end.line]+o.end.column-d[o.start.line]-o.start.column:d[l]-d[o.start.line]-o.start.column}deleteNodeTail(r,c){const o=r.piece,d=o.lineFeedCnt,l=this.offsetInBuffer(o.bufferIndex,o.end),p=c,m=this.offsetInBuffer(o.bufferIndex,p),v=this.getLineFeedCnt(o.bufferIndex,o.start,p),b=v-d,w=m-l,E=o.length+w;r.piece=new i(o.bufferIndex,o.start,p,v,E),(0,D.updateTreeMetadata)(this,r,w,b)}deleteNodeHead(r,c){const o=r.piece,d=o.lineFeedCnt,l=this.offsetInBuffer(o.bufferIndex,o.start),p=c,m=this.getLineFeedCnt(o.bufferIndex,p,o.end),v=this.offsetInBuffer(o.bufferIndex,p),b=m-d,w=l-v,E=o.length+w;r.piece=new i(o.bufferIndex,p,o.end,m,E),(0,D.updateTreeMetadata)(this,r,w,b)}shrinkNode(r,c,o){const d=r.piece,l=d.start,p=d.end,m=d.length,v=d.lineFeedCnt,b=c,w=this.getLineFeedCnt(d.bufferIndex,d.start,b),E=this.offsetInBuffer(d.bufferIndex,c)-this.offsetInBuffer(d.bufferIndex,l);r.piece=new i(d.bufferIndex,d.start,b,w,E),(0,D.updateTreeMetadata)(this,r,E-m,w-v);const I=new i(d.bufferIndex,o,p,this.getLineFeedCnt(d.bufferIndex,o,p),this.offsetInBuffer(d.bufferIndex,p)-this.offsetInBuffer(d.bufferIndex,o)),M=this.rbInsertRight(r,I);this.validateCRLFWithPrevNode(M)}appendToNode(r,c){this.adjustCarriageReturnFromNext(c,r)&&(c+=`\n`);const o=this.shouldCheckCRLF()&&this.startWithLF(c)&&this.endWithCR(r),d=this._buffers[0].buffer.length;this._buffers[0].buffer+=c;const l=C(c,!1);for(let M=0;M<l.length;M++)l[M]+=d;if(o){const M=this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-2];this._buffers[0].lineStarts.pop(),this._lastChangeBufferPos={line:this._lastChangeBufferPos.line-1,column:d-M}}this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(l.slice(1));const p=this._buffers[0].lineStarts.length-1,m=this._buffers[0].buffer.length-this._buffers[0].lineStarts[p],v={line:p,column:m},b=r.piece.length+c.length,w=r.piece.lineFeedCnt,E=this.getLineFeedCnt(0,r.piece.start,v),I=E-w;r.piece=new i(r.piece.bufferIndex,r.piece.start,v,E,b),this._lastChangeBufferPos=v,(0,D.updateTreeMetadata)(this,r,c.length,I)}nodeAt(r){let c=this.root;const o=this._searchCache.get(r);if(o)return{node:o.node,nodeStartOffset:o.nodeStartOffset,remainder:r-o.nodeStartOffset};let d=0;for(;c!==D.SENTINEL;)if(c.size_left>r)c=c.left;else if(c.size_left+c.piece.length>=r){d+=c.size_left;const l={node:c,remainder:r-c.size_left,nodeStartOffset:d};return this._searchCache.set(l),l}else r-=c.size_left+c.piece.length,d+=c.size_left+c.piece.length,c=c.right;return null}nodeAt2(r,c){let o=this.root,d=0;for(;o!==D.SENTINEL;)if(o.left!==D.SENTINEL&&o.lf_left>=r-1)o=o.left;else if(o.lf_left+o.piece.lineFeedCnt>r-1){const l=this.getAccumulatedValue(o,r-o.lf_left-2),p=this.getAccumulatedValue(o,r-o.lf_left-1);return d+=o.size_left,{node:o,remainder:Math.min(l+c-1,p),nodeStartOffset:d}}else if(o.lf_left+o.piece.lineFeedCnt===r-1){const l=this.getAccumulatedValue(o,r-o.lf_left-2);if(l+c-1<=o.piece.length)return{node:o,remainder:l+c-1,nodeStartOffset:d};c-=o.piece.length-l;break}else r-=o.lf_left+o.piece.lineFeedCnt,d+=o.size_left+o.piece.length,o=o.right;for(o=o.next();o!==D.SENTINEL;){if(o.piece.lineFeedCnt>0){const l=this.getAccumulatedValue(o,0),p=this.offsetOfNode(o);return{node:o,remainder:Math.min(c-1,l),nodeStartOffset:p}}else if(o.piece.length>=c-1){const l=this.offsetOfNode(o);return{node:o,remainder:c-1,nodeStartOffset:l}}else c-=o.piece.length;o=o.next()}return null}nodeCharCodeAt(r,c){if(r.piece.lineFeedCnt<1)return-1;const o=this._buffers[r.piece.bufferIndex],d=this.offsetInBuffer(r.piece.bufferIndex,r.piece.start)+c;return o.buffer.charCodeAt(d)}offsetOfNode(r){if(!r)return 0;let c=r.size_left;for(;r!==this.root;)r.parent.right===r&&(c+=r.parent.size_left+r.parent.piece.length),r=r.parent;return c}shouldCheckCRLF(){return!(this._EOLNormalized&&this._EOL===`\n`)}startWithLF(r){if(typeof r==\"string\")return r.charCodeAt(0)===10;if(r===D.SENTINEL||r.piece.lineFeedCnt===0)return!1;const c=r.piece,o=this._buffers[c.bufferIndex].lineStarts,d=c.start.line,l=o[d]+c.start.column;return d===o.length-1||o[d+1]>l+1?!1:this._buffers[c.bufferIndex].buffer.charCodeAt(l)===10}endWithCR(r){return typeof r==\"string\"?r.charCodeAt(r.length-1)===13:r===D.SENTINEL||r.piece.lineFeedCnt===0?!1:this.nodeCharCodeAt(r,r.piece.length-1)===13}validateCRLFWithPrevNode(r){if(this.shouldCheckCRLF()&&this.startWithLF(r)){const c=r.prev();this.endWithCR(c)&&this.fixCRLF(c,r)}}validateCRLFWithNextNode(r){if(this.shouldCheckCRLF()&&this.endWithCR(r)){const c=r.next();this.startWithLF(c)&&this.fixCRLF(r,c)}}fixCRLF(r,c){const o=[],d=this._buffers[r.piece.bufferIndex].lineStarts;let l;r.piece.end.column===0?l={line:r.piece.end.line-1,column:d[r.piece.end.line]-d[r.piece.end.line-1]-1}:l={line:r.piece.end.line,column:r.piece.end.column-1};const p=r.piece.length-1,m=r.piece.lineFeedCnt-1;r.piece=new i(r.piece.bufferIndex,r.piece.start,l,m,p),(0,D.updateTreeMetadata)(this,r,-1,-1),r.piece.length===0&&o.push(r);const v={line:c.piece.start.line+1,column:0},b=c.piece.length-1,w=this.getLineFeedCnt(c.piece.bufferIndex,v,c.piece.end);c.piece=new i(c.piece.bufferIndex,v,c.piece.end,w,b),(0,D.updateTreeMetadata)(this,c,-1,-1),c.piece.length===0&&o.push(c);const E=this.createNewPieces(`\\r\n`);this.rbInsertRight(r,E[0]);for(let I=0;I<o.length;I++)(0,D.rbDelete)(this,o[I])}adjustCarriageReturnFromNext(r,c){if(this.shouldCheckCRLF()&&this.endWithCR(r)){const o=c.next();if(this.startWithLF(o)){if(r+=`\n`,o.piece.length===1)(0,D.rbDelete)(this,o);else{const d=o.piece,l={line:d.start.line+1,column:0},p=d.length-1,m=this.getLineFeedCnt(d.bufferIndex,l,d.end);o.piece=new i(d.bufferIndex,l,d.end,m,p),(0,D.updateTreeMetadata)(this,o,-1,-1)}return!0}}return!1}iterate(r,c){if(r===D.SENTINEL)return c(D.SENTINEL);const o=this.iterate(r.left,c);return o&&c(r)&&this.iterate(r.right,c)}getNodeContent(r){if(r===D.SENTINEL)return\"\";const c=this._buffers[r.piece.bufferIndex],o=r.piece,d=this.offsetInBuffer(o.bufferIndex,o.start),l=this.offsetInBuffer(o.bufferIndex,o.end);return c.buffer.substring(d,l)}getPieceContent(r){const c=this._buffers[r.bufferIndex],o=this.offsetInBuffer(r.bufferIndex,r.start),d=this.offsetInBuffer(r.bufferIndex,r.end);return c.buffer.substring(o,d)}rbInsertRight(r,c){const o=new D.TreeNode(c,1);if(o.left=D.SENTINEL,o.right=D.SENTINEL,o.parent=D.SENTINEL,o.size_left=0,o.lf_left=0,this.root===D.SENTINEL)this.root=o,o.color=0;else if(r.right===D.SENTINEL)r.right=o,o.parent=r;else{const l=(0,D.leftest)(r.right);l.left=o,o.parent=l}return(0,D.fixInsert)(this,o),o}rbInsertLeft(r,c){const o=new D.TreeNode(c,1);if(o.left=D.SENTINEL,o.right=D.SENTINEL,o.parent=D.SENTINEL,o.size_left=0,o.lf_left=0,this.root===D.SENTINEL)this.root=o,o.color=0;else if(r.left===D.SENTINEL)r.left=o,o.parent=r;else{const d=(0,D.righttest)(r.left);d.right=o,o.parent=d}return(0,D.fixInsert)(this,o),o}}e.PieceTreeBase=u}),define(ne[207],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.computeIndentLevel=void 0;function L(k,y){let D=0,S=0;const f=k.length;for(;S<f;){const _=k.charCodeAt(S);if(_===32)D++;else if(_===9)D=D-D%y+y;else break;S++}return S===f?-1:D}e.computeIndentLevel=L}),define(ne[284],se([1,0,85,12,48]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OutputPosition=e.InjectedText=e.ModelLineProjectionData=void 0;class D{constructor(s,i,n,t,a){this.injectionOffsets=s,this.injectionOptions=i,this.breakOffsets=n,this.breakOffsetsVisibleColumn=t,this.wrappedTextIndentLength=a}getOutputLineCount(){return this.breakOffsets.length}getMinOutputOffset(s){return s>0?this.wrappedTextIndentLength:0}getLineLength(s){const i=s>0?this.breakOffsets[s-1]:0;let t=this.breakOffsets[s]-i;return s>0&&(t+=this.wrappedTextIndentLength),t}getMaxOutputOffset(s){return this.getLineLength(s)}translateToInputOffset(s,i){s>0&&(i=Math.max(0,i-this.wrappedTextIndentLength));let t=s===0?i:this.breakOffsets[s-1]+i;if(this.injectionOffsets!==null)for(let a=0;a<this.injectionOffsets.length&&t>this.injectionOffsets[a];a++)t<this.injectionOffsets[a]+this.injectionOptions[a].content.length?t=this.injectionOffsets[a]:t-=this.injectionOptions[a].content.length;return t}translateToOutputPosition(s,i=2){let n=s;if(this.injectionOffsets!==null)for(let t=0;t<this.injectionOffsets.length&&!(s<this.injectionOffsets[t]||i!==1&&s===this.injectionOffsets[t]);t++)n+=this.injectionOptions[t].content.length;return this.offsetInInputWithInjectionsToOutputPosition(n,i)}offsetInInputWithInjectionsToOutputPosition(s,i=2){let n=0,t=this.breakOffsets.length-1,a=0,u=0;for(;n<=t;){a=n+(t-n)/2|0;const r=this.breakOffsets[a];if(u=a>0?this.breakOffsets[a-1]:0,i===0)if(s<=u)t=a-1;else if(s>r)n=a+1;else break;else if(s<u)t=a-1;else if(s>=r)n=a+1;else break}let h=s-u;return a>0&&(h+=this.wrappedTextIndentLength),new g(a,h)}normalizeOutputPosition(s,i,n){if(this.injectionOffsets!==null){const t=this.outputPositionToOffsetInInputWithInjections(s,i),a=this.normalizeOffsetInInputWithInjectionsAroundInjections(t,n);if(a!==t)return this.offsetInInputWithInjectionsToOutputPosition(a,n)}if(n===0){if(s>0&&i===this.getMinOutputOffset(s))return new g(s-1,this.getMaxOutputOffset(s-1))}else if(n===1){const t=this.getOutputLineCount()-1;if(s<t&&i===this.getMaxOutputOffset(s))return new g(s+1,this.getMinOutputOffset(s+1))}return new g(s,i)}outputPositionToOffsetInInputWithInjections(s,i){return s>0&&(i=Math.max(0,i-this.wrappedTextIndentLength)),(s>0?this.breakOffsets[s-1]:0)+i}normalizeOffsetInInputWithInjectionsAroundInjections(s,i){const n=this.getInjectedTextAtOffset(s);if(!n)return s;if(i===2){if(s===n.offsetInInputWithInjections+n.length&&S(this.injectionOptions[n.injectedTextIndex].cursorStops))return n.offsetInInputWithInjections+n.length;{let t=n.offsetInInputWithInjections;if(f(this.injectionOptions[n.injectedTextIndex].cursorStops))return t;let a=n.injectedTextIndex-1;for(;a>=0&&this.injectionOffsets[a]===this.injectionOffsets[n.injectedTextIndex]&&!(S(this.injectionOptions[a].cursorStops)||(t-=this.injectionOptions[a].content.length,f(this.injectionOptions[a].cursorStops)));)a--;return t}}else if(i===1||i===4){let t=n.offsetInInputWithInjections+n.length,a=n.injectedTextIndex;for(;a+1<this.injectionOffsets.length&&this.injectionOffsets[a+1]===this.injectionOffsets[a];)t+=this.injectionOptions[a+1].content.length,a++;return t}else if(i===0||i===3){let t=n.offsetInInputWithInjections,a=n.injectedTextIndex;for(;a-1>=0&&this.injectionOffsets[a-1]===this.injectionOffsets[a];)t-=this.injectionOptions[a-1].content.length,a--;return t}(0,L.assertNever)(i)}getInjectedText(s,i){const n=this.outputPositionToOffsetInInputWithInjections(s,i),t=this.getInjectedTextAtOffset(n);return t?{options:this.injectionOptions[t.injectedTextIndex]}:null}getInjectedTextAtOffset(s){const i=this.injectionOffsets,n=this.injectionOptions;if(i!==null){let t=0;for(let a=0;a<i.length;a++){const u=n[a].content.length,h=i[a]+t,r=i[a]+t+u;if(h>s)break;if(s<=r)return{injectedTextIndex:a,offsetInInputWithInjections:h,length:u};t+=u}}}}e.ModelLineProjectionData=D;function S(C){return C==null?!0:C===y.InjectedTextCursorStops.Right||C===y.InjectedTextCursorStops.Both}function f(C){return C==null?!0:C===y.InjectedTextCursorStops.Left||C===y.InjectedTextCursorStops.Both}class _{constructor(s){this.options=s}}e.InjectedText=_;class g{constructor(s,i){this.outputLineIndex=s,this.outputOffset=i}toString(){return`${this.outputLineIndex}:${this.outputOffset}`}toPosition(s){return new k.Position(s+this.outputLineIndex,this.outputOffset+1)}}e.OutputPosition=g}),define(ne[285],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DraggedTreeItemsIdentifier=e.TreeViewsDnDService=void 0;class L{constructor(){this._dragOperations=new Map}removeDragOperationTransfer(D){if(D&&this._dragOperations.has(D)){const S=this._dragOperations.get(D);return this._dragOperations.delete(D),S}}}e.TreeViewsDnDService=L;class k{constructor(D){this.identifier=D}}e.DraggedTreeItemsIdentifier=k}),define(ne[286],se([1,0,5,181,11,85,147]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnicodeTextModelHighlighter=void 0;class f{static computeUnicodeHighlights(i,n,t){const a=t?t.startLineNumber:1,u=t?t.endLineNumber:i.getLineCount(),h=new g(n),r=h.getCandidateCodePoints();let c;r===\"allNonBasicAscii\"?c=new RegExp(\"[^\\\\t\\\\n\\\\r\\\\x20-\\\\x7E]\",\"g\"):c=new RegExp(`${_(Array.from(r))}`,\"g\");const o=new k.Searcher(null,c),d=[];let l=!1,p,m=0,v=0,b=0;e:for(let w=a,E=u;w<=E;w++){const I=i.getLineContent(w),M=I.length;o.reset(0);do if(p=o.next(I),p){let P=p.index,x=p.index+p[0].length;if(P>0){const F=I.charCodeAt(P-1);y.isHighSurrogate(F)&&P--}if(x+1<M){const F=I.charCodeAt(x-1);y.isHighSurrogate(F)&&x++}const T=I.substring(P,x);let A=(0,S.getWordAtText)(P+1,S.DEFAULT_WORD_REGEXP,I,0);A&&A.endColumn<=P+1&&(A=null);const N=h.shouldHighlightNonBasicASCII(T,A?A.word:null);if(N!==0){N===3?m++:N===2?v++:N===1?b++:(0,D.assertNever)(N);const F=1e3;if(d.length>=F){l=!0;break e}d.push(new L.Range(w,P+1,w,x+1))}}while(p)}return{ranges:d,hasMore:l,ambiguousCharacterCount:m,invisibleCharacterCount:v,nonBasicAsciiCharacterCount:b}}static computeUnicodeHighlightReason(i,n){const t=new g(n);switch(t.shouldHighlightNonBasicASCII(i,null)){case 0:return null;case 2:return{kind:1};case 3:{const u=i.codePointAt(0),h=t.ambiguousCharacters.getPrimaryConfusable(u),r=y.AmbiguousCharacters.getLocales().filter(c=>!y.AmbiguousCharacters.getInstance(new Set([...n.allowedLocales,c])).isAmbiguous(u));return{kind:0,confusableWith:String.fromCodePoint(h),notAmbiguousInLocales:r}}case 1:return{kind:2}}}}e.UnicodeTextModelHighlighter=f;function _(s,i){return`[${y.escapeRegExpCharacters(s.map(t=>String.fromCodePoint(t)).join(\"\"))}]`}class g{constructor(i){this.options=i,this.allowedCodePoints=new Set(i.allowedCodePoints),this.ambiguousCharacters=y.AmbiguousCharacters.getInstance(new Set(i.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return\"allNonBasicAscii\";const i=new Set;if(this.options.invisibleCharacters)for(const n of y.InvisibleCharacters.codePoints)C(String.fromCodePoint(n))||i.add(n);if(this.options.ambiguousCharacters)for(const n of this.ambiguousCharacters.getConfusableCodePoints())i.add(n);for(const n of this.allowedCodePoints)i.delete(n);return i}shouldHighlightNonBasicASCII(i,n){const t=i.codePointAt(0);if(this.allowedCodePoints.has(t))return 0;if(this.options.nonBasicASCII)return 1;let a=!1,u=!1;if(n)for(const h of n){const r=h.codePointAt(0),c=y.isBasicASCII(h);a=a||c,!c&&!this.ambiguousCharacters.isAmbiguous(r)&&!y.InvisibleCharacters.isInvisibleCharacter(r)&&(u=!0)}return!a&&u?0:this.options.invisibleCharacters&&!C(i)&&y.InvisibleCharacters.isInvisibleCharacter(t)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(t)?3:0}}function C(s){return s===\" \"||s===`\n`||s===\"\t\"}}),define(ne[208],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WrappingIndent=e.TrackedRangeStickiness=e.TextEditorCursorStyle=e.TextEditorCursorBlinkingStyle=e.SymbolTag=e.SymbolKind=e.SignatureHelpTriggerKind=e.SelectionDirection=e.ScrollbarVisibility=e.ScrollType=e.RenderMinimap=e.RenderLineNumbersType=e.PositionAffinity=e.OverviewRulerLane=e.OverlayWidgetPositionPreference=e.MouseTargetType=e.MinimapPosition=e.MarkerTag=e.MarkerSeverity=e.KeyCode=e.InlineCompletionTriggerKind=e.InlayHintKind=e.InjectedTextCursorStops=e.IndentAction=e.GlyphMarginLane=e.EndOfLineSequence=e.EndOfLinePreference=e.EditorOption=e.EditorAutoIndentStrategy=e.DocumentHighlightKind=e.DefaultEndOfLine=e.CursorChangeReason=e.ContentWidgetPositionPreference=e.CompletionTriggerKind=e.CompletionItemTag=e.CompletionItemKind=e.CompletionItemInsertTextRule=e.CodeActionTriggerType=e.AccessibilitySupport=void 0;var L;(function(R){R[R.Unknown=0]=\"Unknown\",R[R.Disabled=1]=\"Disabled\",R[R.Enabled=2]=\"Enabled\"})(L||(e.AccessibilitySupport=L={}));var k;(function(R){R[R.Invoke=1]=\"Invoke\",R[R.Auto=2]=\"Auto\"})(k||(e.CodeActionTriggerType=k={}));var y;(function(R){R[R.None=0]=\"None\",R[R.KeepWhitespace=1]=\"KeepWhitespace\",R[R.InsertAsSnippet=4]=\"InsertAsSnippet\"})(y||(e.CompletionItemInsertTextRule=y={}));var D;(function(R){R[R.Method=0]=\"Method\",R[R.Function=1]=\"Function\",R[R.Constructor=2]=\"Constructor\",R[R.Field=3]=\"Field\",R[R.Variable=4]=\"Variable\",R[R.Class=5]=\"Class\",R[R.Struct=6]=\"Struct\",R[R.Interface=7]=\"Interface\",R[R.Module=8]=\"Module\",R[R.Property=9]=\"Property\",R[R.Event=10]=\"Event\",R[R.Operator=11]=\"Operator\",R[R.Unit=12]=\"Unit\",R[R.Value=13]=\"Value\",R[R.Constant=14]=\"Constant\",R[R.Enum=15]=\"Enum\",R[R.EnumMember=16]=\"EnumMember\",R[R.Keyword=17]=\"Keyword\",R[R.Text=18]=\"Text\",R[R.Color=19]=\"Color\",R[R.File=20]=\"File\",R[R.Reference=21]=\"Reference\",R[R.Customcolor=22]=\"Customcolor\",R[R.Folder=23]=\"Folder\",R[R.TypeParameter=24]=\"TypeParameter\",R[R.User=25]=\"User\",R[R.Issue=26]=\"Issue\",R[R.Snippet=27]=\"Snippet\"})(D||(e.CompletionItemKind=D={}));var S;(function(R){R[R.Deprecated=1]=\"Deprecated\"})(S||(e.CompletionItemTag=S={}));var f;(function(R){R[R.Invoke=0]=\"Invoke\",R[R.TriggerCharacter=1]=\"TriggerCharacter\",R[R.TriggerForIncompleteCompletions=2]=\"TriggerForIncompleteCompletions\"})(f||(e.CompletionTriggerKind=f={}));var _;(function(R){R[R.EXACT=0]=\"EXACT\",R[R.ABOVE=1]=\"ABOVE\",R[R.BELOW=2]=\"BELOW\"})(_||(e.ContentWidgetPositionPreference=_={}));var g;(function(R){R[R.NotSet=0]=\"NotSet\",R[R.ContentFlush=1]=\"ContentFlush\",R[R.RecoverFromMarkers=2]=\"RecoverFromMarkers\",R[R.Explicit=3]=\"Explicit\",R[R.Paste=4]=\"Paste\",R[R.Undo=5]=\"Undo\",R[R.Redo=6]=\"Redo\"})(g||(e.CursorChangeReason=g={}));var C;(function(R){R[R.LF=1]=\"LF\",R[R.CRLF=2]=\"CRLF\"})(C||(e.DefaultEndOfLine=C={}));var s;(function(R){R[R.Text=0]=\"Text\",R[R.Read=1]=\"Read\",R[R.Write=2]=\"Write\"})(s||(e.DocumentHighlightKind=s={}));var i;(function(R){R[R.None=0]=\"None\",R[R.Keep=1]=\"Keep\",R[R.Brackets=2]=\"Brackets\",R[R.Advanced=3]=\"Advanced\",R[R.Full=4]=\"Full\"})(i||(e.EditorAutoIndentStrategy=i={}));var n;(function(R){R[R.acceptSuggestionOnCommitCharacter=0]=\"acceptSuggestionOnCommitCharacter\",R[R.acceptSuggestionOnEnter=1]=\"acceptSuggestionOnEnter\",R[R.accessibilitySupport=2]=\"accessibilitySupport\",R[R.accessibilityPageSize=3]=\"accessibilityPageSize\",R[R.ariaLabel=4]=\"ariaLabel\",R[R.ariaRequired=5]=\"ariaRequired\",R[R.autoClosingBrackets=6]=\"autoClosingBrackets\",R[R.screenReaderAnnounceInlineSuggestion=7]=\"screenReaderAnnounceInlineSuggestion\",R[R.autoClosingDelete=8]=\"autoClosingDelete\",R[R.autoClosingOvertype=9]=\"autoClosingOvertype\",R[R.autoClosingQuotes=10]=\"autoClosingQuotes\",R[R.autoIndent=11]=\"autoIndent\",R[R.automaticLayout=12]=\"automaticLayout\",R[R.autoSurround=13]=\"autoSurround\",R[R.bracketPairColorization=14]=\"bracketPairColorization\",R[R.guides=15]=\"guides\",R[R.codeLens=16]=\"codeLens\",R[R.codeLensFontFamily=17]=\"codeLensFontFamily\",R[R.codeLensFontSize=18]=\"codeLensFontSize\",R[R.colorDecorators=19]=\"colorDecorators\",R[R.colorDecoratorsLimit=20]=\"colorDecoratorsLimit\",R[R.columnSelection=21]=\"columnSelection\",R[R.comments=22]=\"comments\",R[R.contextmenu=23]=\"contextmenu\",R[R.copyWithSyntaxHighlighting=24]=\"copyWithSyntaxHighlighting\",R[R.cursorBlinking=25]=\"cursorBlinking\",R[R.cursorSmoothCaretAnimation=26]=\"cursorSmoothCaretAnimation\",R[R.cursorStyle=27]=\"cursorStyle\",R[R.cursorSurroundingLines=28]=\"cursorSurroundingLines\",R[R.cursorSurroundingLinesStyle=29]=\"cursorSurroundingLinesStyle\",R[R.cursorWidth=30]=\"cursorWidth\",R[R.disableLayerHinting=31]=\"disableLayerHinting\",R[R.disableMonospaceOptimizations=32]=\"disableMonospaceOptimizations\",R[R.domReadOnly=33]=\"domReadOnly\",R[R.dragAndDrop=34]=\"dragAndDrop\",R[R.dropIntoEditor=35]=\"dropIntoEditor\",R[R.emptySelectionClipboard=36]=\"emptySelectionClipboard\",R[R.experimentalWhitespaceRendering=37]=\"experimentalWhitespaceRendering\",R[R.extraEditorClassName=38]=\"extraEditorClassName\",R[R.fastScrollSensitivity=39]=\"fastScrollSensitivity\",R[R.find=40]=\"find\",R[R.fixedOverflowWidgets=41]=\"fixedOverflowWidgets\",R[R.folding=42]=\"folding\",R[R.foldingStrategy=43]=\"foldingStrategy\",R[R.foldingHighlight=44]=\"foldingHighlight\",R[R.foldingImportsByDefault=45]=\"foldingImportsByDefault\",R[R.foldingMaximumRegions=46]=\"foldingMaximumRegions\",R[R.unfoldOnClickAfterEndOfLine=47]=\"unfoldOnClickAfterEndOfLine\",R[R.fontFamily=48]=\"fontFamily\",R[R.fontInfo=49]=\"fontInfo\",R[R.fontLigatures=50]=\"fontLigatures\",R[R.fontSize=51]=\"fontSize\",R[R.fontWeight=52]=\"fontWeight\",R[R.fontVariations=53]=\"fontVariations\",R[R.formatOnPaste=54]=\"formatOnPaste\",R[R.formatOnType=55]=\"formatOnType\",R[R.glyphMargin=56]=\"glyphMargin\",R[R.gotoLocation=57]=\"gotoLocation\",R[R.hideCursorInOverviewRuler=58]=\"hideCursorInOverviewRuler\",R[R.hover=59]=\"hover\",R[R.inDiffEditor=60]=\"inDiffEditor\",R[R.inlineSuggest=61]=\"inlineSuggest\",R[R.letterSpacing=62]=\"letterSpacing\",R[R.lightbulb=63]=\"lightbulb\",R[R.lineDecorationsWidth=64]=\"lineDecorationsWidth\",R[R.lineHeight=65]=\"lineHeight\",R[R.lineNumbers=66]=\"lineNumbers\",R[R.lineNumbersMinChars=67]=\"lineNumbersMinChars\",R[R.linkedEditing=68]=\"linkedEditing\",R[R.links=69]=\"links\",R[R.matchBrackets=70]=\"matchBrackets\",R[R.minimap=71]=\"minimap\",R[R.mouseStyle=72]=\"mouseStyle\",R[R.mouseWheelScrollSensitivity=73]=\"mouseWheelScrollSensitivity\",R[R.mouseWheelZoom=74]=\"mouseWheelZoom\",R[R.multiCursorMergeOverlapping=75]=\"multiCursorMergeOverlapping\",R[R.multiCursorModifier=76]=\"multiCursorModifier\",R[R.multiCursorPaste=77]=\"multiCursorPaste\",R[R.multiCursorLimit=78]=\"multiCursorLimit\",R[R.occurrencesHighlight=79]=\"occurrencesHighlight\",R[R.overviewRulerBorder=80]=\"overviewRulerBorder\",R[R.overviewRulerLanes=81]=\"overviewRulerLanes\",R[R.padding=82]=\"padding\",R[R.pasteAs=83]=\"pasteAs\",R[R.parameterHints=84]=\"parameterHints\",R[R.peekWidgetDefaultFocus=85]=\"peekWidgetDefaultFocus\",R[R.definitionLinkOpensInPeek=86]=\"definitionLinkOpensInPeek\",R[R.quickSuggestions=87]=\"quickSuggestions\",R[R.quickSuggestionsDelay=88]=\"quickSuggestionsDelay\",R[R.readOnly=89]=\"readOnly\",R[R.readOnlyMessage=90]=\"readOnlyMessage\",R[R.renameOnType=91]=\"renameOnType\",R[R.renderControlCharacters=92]=\"renderControlCharacters\",R[R.renderFinalNewline=93]=\"renderFinalNewline\",R[R.renderLineHighlight=94]=\"renderLineHighlight\",R[R.renderLineHighlightOnlyWhenFocus=95]=\"renderLineHighlightOnlyWhenFocus\",R[R.renderValidationDecorations=96]=\"renderValidationDecorations\",R[R.renderWhitespace=97]=\"renderWhitespace\",R[R.revealHorizontalRightPadding=98]=\"revealHorizontalRightPadding\",R[R.roundedSelection=99]=\"roundedSelection\",R[R.rulers=100]=\"rulers\",R[R.scrollbar=101]=\"scrollbar\",R[R.scrollBeyondLastColumn=102]=\"scrollBeyondLastColumn\",R[R.scrollBeyondLastLine=103]=\"scrollBeyondLastLine\",R[R.scrollPredominantAxis=104]=\"scrollPredominantAxis\",R[R.selectionClipboard=105]=\"selectionClipboard\",R[R.selectionHighlight=106]=\"selectionHighlight\",R[R.selectOnLineNumbers=107]=\"selectOnLineNumbers\",R[R.showFoldingControls=108]=\"showFoldingControls\",R[R.showUnused=109]=\"showUnused\",R[R.snippetSuggestions=110]=\"snippetSuggestions\",R[R.smartSelect=111]=\"smartSelect\",R[R.smoothScrolling=112]=\"smoothScrolling\",R[R.stickyScroll=113]=\"stickyScroll\",R[R.stickyTabStops=114]=\"stickyTabStops\",R[R.stopRenderingLineAfter=115]=\"stopRenderingLineAfter\",R[R.suggest=116]=\"suggest\",R[R.suggestFontSize=117]=\"suggestFontSize\",R[R.suggestLineHeight=118]=\"suggestLineHeight\",R[R.suggestOnTriggerCharacters=119]=\"suggestOnTriggerCharacters\",R[R.suggestSelection=120]=\"suggestSelection\",R[R.tabCompletion=121]=\"tabCompletion\",R[R.tabIndex=122]=\"tabIndex\",R[R.unicodeHighlighting=123]=\"unicodeHighlighting\",R[R.unusualLineTerminators=124]=\"unusualLineTerminators\",R[R.useShadowDOM=125]=\"useShadowDOM\",R[R.useTabStops=126]=\"useTabStops\",R[R.wordBreak=127]=\"wordBreak\",R[R.wordSeparators=128]=\"wordSeparators\",R[R.wordWrap=129]=\"wordWrap\",R[R.wordWrapBreakAfterCharacters=130]=\"wordWrapBreakAfterCharacters\",R[R.wordWrapBreakBeforeCharacters=131]=\"wordWrapBreakBeforeCharacters\",R[R.wordWrapColumn=132]=\"wordWrapColumn\",R[R.wordWrapOverride1=133]=\"wordWrapOverride1\",R[R.wordWrapOverride2=134]=\"wordWrapOverride2\",R[R.wrappingIndent=135]=\"wrappingIndent\",R[R.wrappingStrategy=136]=\"wrappingStrategy\",R[R.showDeprecated=137]=\"showDeprecated\",R[R.inlayHints=138]=\"inlayHints\",R[R.editorClassName=139]=\"editorClassName\",R[R.pixelRatio=140]=\"pixelRatio\",R[R.tabFocusMode=141]=\"tabFocusMode\",R[R.layoutInfo=142]=\"layoutInfo\",R[R.wrappingInfo=143]=\"wrappingInfo\",R[R.defaultColorDecorators=144]=\"defaultColorDecorators\",R[R.colorDecoratorsActivatedOn=145]=\"colorDecoratorsActivatedOn\",R[R.inlineCompletionsAccessibilityVerbose=146]=\"inlineCompletionsAccessibilityVerbose\"})(n||(e.EditorOption=n={}));var t;(function(R){R[R.TextDefined=0]=\"TextDefined\",R[R.LF=1]=\"LF\",R[R.CRLF=2]=\"CRLF\"})(t||(e.EndOfLinePreference=t={}));var a;(function(R){R[R.LF=0]=\"LF\",R[R.CRLF=1]=\"CRLF\"})(a||(e.EndOfLineSequence=a={}));var u;(function(R){R[R.Left=1]=\"Left\",R[R.Right=2]=\"Right\"})(u||(e.GlyphMarginLane=u={}));var h;(function(R){R[R.None=0]=\"None\",R[R.Indent=1]=\"Indent\",R[R.IndentOutdent=2]=\"IndentOutdent\",R[R.Outdent=3]=\"Outdent\"})(h||(e.IndentAction=h={}));var r;(function(R){R[R.Both=0]=\"Both\",R[R.Right=1]=\"Right\",R[R.Left=2]=\"Left\",R[R.None=3]=\"None\"})(r||(e.InjectedTextCursorStops=r={}));var c;(function(R){R[R.Type=1]=\"Type\",R[R.Parameter=2]=\"Parameter\"})(c||(e.InlayHintKind=c={}));var o;(function(R){R[R.Automatic=0]=\"Automatic\",R[R.Explicit=1]=\"Explicit\"})(o||(e.InlineCompletionTriggerKind=o={}));var d;(function(R){R[R.DependsOnKbLayout=-1]=\"DependsOnKbLayout\",R[R.Unknown=0]=\"Unknown\",R[R.Backspace=1]=\"Backspace\",R[R.Tab=2]=\"Tab\",R[R.Enter=3]=\"Enter\",R[R.Shift=4]=\"Shift\",R[R.Ctrl=5]=\"Ctrl\",R[R.Alt=6]=\"Alt\",R[R.PauseBreak=7]=\"PauseBreak\",R[R.CapsLock=8]=\"CapsLock\",R[R.Escape=9]=\"Escape\",R[R.Space=10]=\"Space\",R[R.PageUp=11]=\"PageUp\",R[R.PageDown=12]=\"PageDown\",R[R.End=13]=\"End\",R[R.Home=14]=\"Home\",R[R.LeftArrow=15]=\"LeftArrow\",R[R.UpArrow=16]=\"UpArrow\",R[R.RightArrow=17]=\"RightArrow\",R[R.DownArrow=18]=\"DownArrow\",R[R.Insert=19]=\"Insert\",R[R.Delete=20]=\"Delete\",R[R.Digit0=21]=\"Digit0\",R[R.Digit1=22]=\"Digit1\",R[R.Digit2=23]=\"Digit2\",R[R.Digit3=24]=\"Digit3\",R[R.Digit4=25]=\"Digit4\",R[R.Digit5=26]=\"Digit5\",R[R.Digit6=27]=\"Digit6\",R[R.Digit7=28]=\"Digit7\",R[R.Digit8=29]=\"Digit8\",R[R.Digit9=30]=\"Digit9\",R[R.KeyA=31]=\"KeyA\",R[R.KeyB=32]=\"KeyB\",R[R.KeyC=33]=\"KeyC\",R[R.KeyD=34]=\"KeyD\",R[R.KeyE=35]=\"KeyE\",R[R.KeyF=36]=\"KeyF\",R[R.KeyG=37]=\"KeyG\",R[R.KeyH=38]=\"KeyH\",R[R.KeyI=39]=\"KeyI\",R[R.KeyJ=40]=\"KeyJ\",R[R.KeyK=41]=\"KeyK\",R[R.KeyL=42]=\"KeyL\",R[R.KeyM=43]=\"KeyM\",R[R.KeyN=44]=\"KeyN\",R[R.KeyO=45]=\"KeyO\",R[R.KeyP=46]=\"KeyP\",R[R.KeyQ=47]=\"KeyQ\",R[R.KeyR=48]=\"KeyR\",R[R.KeyS=49]=\"KeyS\",R[R.KeyT=50]=\"KeyT\",R[R.KeyU=51]=\"KeyU\",R[R.KeyV=52]=\"KeyV\",R[R.KeyW=53]=\"KeyW\",R[R.KeyX=54]=\"KeyX\",R[R.KeyY=55]=\"KeyY\",R[R.KeyZ=56]=\"KeyZ\",R[R.Meta=57]=\"Meta\",R[R.ContextMenu=58]=\"ContextMenu\",R[R.F1=59]=\"F1\",R[R.F2=60]=\"F2\",R[R.F3=61]=\"F3\",R[R.F4=62]=\"F4\",R[R.F5=63]=\"F5\",R[R.F6=64]=\"F6\",R[R.F7=65]=\"F7\",R[R.F8=66]=\"F8\",R[R.F9=67]=\"F9\",R[R.F10=68]=\"F10\",R[R.F11=69]=\"F11\",R[R.F12=70]=\"F12\",R[R.F13=71]=\"F13\",R[R.F14=72]=\"F14\",R[R.F15=73]=\"F15\",R[R.F16=74]=\"F16\",R[R.F17=75]=\"F17\",R[R.F18=76]=\"F18\",R[R.F19=77]=\"F19\",R[R.F20=78]=\"F20\",R[R.F21=79]=\"F21\",R[R.F22=80]=\"F22\",R[R.F23=81]=\"F23\",R[R.F24=82]=\"F24\",R[R.NumLock=83]=\"NumLock\",R[R.ScrollLock=84]=\"ScrollLock\",R[R.Semicolon=85]=\"Semicolon\",R[R.Equal=86]=\"Equal\",R[R.Comma=87]=\"Comma\",R[R.Minus=88]=\"Minus\",R[R.Period=89]=\"Period\",R[R.Slash=90]=\"Slash\",R[R.Backquote=91]=\"Backquote\",R[R.BracketLeft=92]=\"BracketLeft\",R[R.Backslash=93]=\"Backslash\",R[R.BracketRight=94]=\"BracketRight\",R[R.Quote=95]=\"Quote\",R[R.OEM_8=96]=\"OEM_8\",R[R.IntlBackslash=97]=\"IntlBackslash\",R[R.Numpad0=98]=\"Numpad0\",R[R.Numpad1=99]=\"Numpad1\",R[R.Numpad2=100]=\"Numpad2\",R[R.Numpad3=101]=\"Numpad3\",R[R.Numpad4=102]=\"Numpad4\",R[R.Numpad5=103]=\"Numpad5\",R[R.Numpad6=104]=\"Numpad6\",R[R.Numpad7=105]=\"Numpad7\",R[R.Numpad8=106]=\"Numpad8\",R[R.Numpad9=107]=\"Numpad9\",R[R.NumpadMultiply=108]=\"NumpadMultiply\",R[R.NumpadAdd=109]=\"NumpadAdd\",R[R.NUMPAD_SEPARATOR=110]=\"NUMPAD_SEPARATOR\",R[R.NumpadSubtract=111]=\"NumpadSubtract\",R[R.NumpadDecimal=112]=\"NumpadDecimal\",R[R.NumpadDivide=113]=\"NumpadDivide\",R[R.KEY_IN_COMPOSITION=114]=\"KEY_IN_COMPOSITION\",R[R.ABNT_C1=115]=\"ABNT_C1\",R[R.ABNT_C2=116]=\"ABNT_C2\",R[R.AudioVolumeMute=117]=\"AudioVolumeMute\",R[R.AudioVolumeUp=118]=\"AudioVolumeUp\",R[R.AudioVolumeDown=119]=\"AudioVolumeDown\",R[R.BrowserSearch=120]=\"BrowserSearch\",R[R.BrowserHome=121]=\"BrowserHome\",R[R.BrowserBack=122]=\"BrowserBack\",R[R.BrowserForward=123]=\"BrowserForward\",R[R.MediaTrackNext=124]=\"MediaTrackNext\",R[R.MediaTrackPrevious=125]=\"MediaTrackPrevious\",R[R.MediaStop=126]=\"MediaStop\",R[R.MediaPlayPause=127]=\"MediaPlayPause\",R[R.LaunchMediaPlayer=128]=\"LaunchMediaPlayer\",R[R.LaunchMail=129]=\"LaunchMail\",R[R.LaunchApp2=130]=\"LaunchApp2\",R[R.Clear=131]=\"Clear\",R[R.MAX_VALUE=132]=\"MAX_VALUE\"})(d||(e.KeyCode=d={}));var l;(function(R){R[R.Hint=1]=\"Hint\",R[R.Info=2]=\"Info\",R[R.Warning=4]=\"Warning\",R[R.Error=8]=\"Error\"})(l||(e.MarkerSeverity=l={}));var p;(function(R){R[R.Unnecessary=1]=\"Unnecessary\",R[R.Deprecated=2]=\"Deprecated\"})(p||(e.MarkerTag=p={}));var m;(function(R){R[R.Inline=1]=\"Inline\",R[R.Gutter=2]=\"Gutter\"})(m||(e.MinimapPosition=m={}));var v;(function(R){R[R.UNKNOWN=0]=\"UNKNOWN\",R[R.TEXTAREA=1]=\"TEXTAREA\",R[R.GUTTER_GLYPH_MARGIN=2]=\"GUTTER_GLYPH_MARGIN\",R[R.GUTTER_LINE_NUMBERS=3]=\"GUTTER_LINE_NUMBERS\",R[R.GUTTER_LINE_DECORATIONS=4]=\"GUTTER_LINE_DECORATIONS\",R[R.GUTTER_VIEW_ZONE=5]=\"GUTTER_VIEW_ZONE\",R[R.CONTENT_TEXT=6]=\"CONTENT_TEXT\",R[R.CONTENT_EMPTY=7]=\"CONTENT_EMPTY\",R[R.CONTENT_VIEW_ZONE=8]=\"CONTENT_VIEW_ZONE\",R[R.CONTENT_WIDGET=9]=\"CONTENT_WIDGET\",R[R.OVERVIEW_RULER=10]=\"OVERVIEW_RULER\",R[R.SCROLLBAR=11]=\"SCROLLBAR\",R[R.OVERLAY_WIDGET=12]=\"OVERLAY_WIDGET\",R[R.OUTSIDE_EDITOR=13]=\"OUTSIDE_EDITOR\"})(v||(e.MouseTargetType=v={}));var b;(function(R){R[R.TOP_RIGHT_CORNER=0]=\"TOP_RIGHT_CORNER\",R[R.BOTTOM_RIGHT_CORNER=1]=\"BOTTOM_RIGHT_CORNER\",R[R.TOP_CENTER=2]=\"TOP_CENTER\"})(b||(e.OverlayWidgetPositionPreference=b={}));var w;(function(R){R[R.Left=1]=\"Left\",R[R.Center=2]=\"Center\",R[R.Right=4]=\"Right\",R[R.Full=7]=\"Full\"})(w||(e.OverviewRulerLane=w={}));var E;(function(R){R[R.Left=0]=\"Left\",R[R.Right=1]=\"Right\",R[R.None=2]=\"None\",R[R.LeftOfInjectedText=3]=\"LeftOfInjectedText\",R[R.RightOfInjectedText=4]=\"RightOfInjectedText\"})(E||(e.PositionAffinity=E={}));var I;(function(R){R[R.Off=0]=\"Off\",R[R.On=1]=\"On\",R[R.Relative=2]=\"Relative\",R[R.Interval=3]=\"Interval\",R[R.Custom=4]=\"Custom\"})(I||(e.RenderLineNumbersType=I={}));var M;(function(R){R[R.None=0]=\"None\",R[R.Text=1]=\"Text\",R[R.Blocks=2]=\"Blocks\"})(M||(e.RenderMinimap=M={}));var P;(function(R){R[R.Smooth=0]=\"Smooth\",R[R.Immediate=1]=\"Immediate\"})(P||(e.ScrollType=P={}));var x;(function(R){R[R.Auto=1]=\"Auto\",R[R.Hidden=2]=\"Hidden\",R[R.Visible=3]=\"Visible\"})(x||(e.ScrollbarVisibility=x={}));var T;(function(R){R[R.LTR=0]=\"LTR\",R[R.RTL=1]=\"RTL\"})(T||(e.SelectionDirection=T={}));var A;(function(R){R[R.Invoke=1]=\"Invoke\",R[R.TriggerCharacter=2]=\"TriggerCharacter\",R[R.ContentChange=3]=\"ContentChange\"})(A||(e.SignatureHelpTriggerKind=A={}));var N;(function(R){R[R.File=0]=\"File\",R[R.Module=1]=\"Module\",R[R.Namespace=2]=\"Namespace\",R[R.Package=3]=\"Package\",R[R.Class=4]=\"Class\",R[R.Method=5]=\"Method\",R[R.Property=6]=\"Property\",R[R.Field=7]=\"Field\",R[R.Constructor=8]=\"Constructor\",R[R.Enum=9]=\"Enum\",R[R.Interface=10]=\"Interface\",R[R.Function=11]=\"Function\",R[R.Variable=12]=\"Variable\",R[R.Constant=13]=\"Constant\",R[R.String=14]=\"String\",R[R.Number=15]=\"Number\",R[R.Boolean=16]=\"Boolean\",R[R.Array=17]=\"Array\",R[R.Object=18]=\"Object\",R[R.Key=19]=\"Key\",R[R.Null=20]=\"Null\",R[R.EnumMember=21]=\"EnumMember\",R[R.Struct=22]=\"Struct\",R[R.Event=23]=\"Event\",R[R.Operator=24]=\"Operator\",R[R.TypeParameter=25]=\"TypeParameter\"})(N||(e.SymbolKind=N={}));var F;(function(R){R[R.Deprecated=1]=\"Deprecated\"})(F||(e.SymbolTag=F={}));var O;(function(R){R[R.Hidden=0]=\"Hidden\",R[R.Blink=1]=\"Blink\",R[R.Smooth=2]=\"Smooth\",R[R.Phase=3]=\"Phase\",R[R.Expand=4]=\"Expand\",R[R.Solid=5]=\"Solid\"})(O||(e.TextEditorCursorBlinkingStyle=O={}));var W;(function(R){R[R.Line=1]=\"Line\",R[R.Block=2]=\"Block\",R[R.Underline=3]=\"Underline\",R[R.LineThin=4]=\"LineThin\",R[R.BlockOutline=5]=\"BlockOutline\",R[R.UnderlineThin=6]=\"UnderlineThin\"})(W||(e.TextEditorCursorStyle=W={}));var U;(function(R){R[R.AlwaysGrowsWhenTypingAtEdges=0]=\"AlwaysGrowsWhenTypingAtEdges\",R[R.NeverGrowsWhenTypingAtEdges=1]=\"NeverGrowsWhenTypingAtEdges\",R[R.GrowsOnlyWhenTypingBefore=2]=\"GrowsOnlyWhenTypingBefore\",R[R.GrowsOnlyWhenTypingAfter=3]=\"GrowsOnlyWhenTypingAfter\"})(U||(e.TrackedRangeStickiness=U={}));var j;(function(R){R[R.None=0]=\"None\",R[R.Same=1]=\"Same\",R[R.Indent=2]=\"Indent\",R[R.DeepIndent=3]=\"DeepIndent\"})(j||(e.WrappingIndent=j={}))}),define(ne[513],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BracketPairWithMinIndentationInfo=e.BracketPairInfo=e.BracketInfo=void 0;class L{constructor(S,f,_,g){this.range=S,this.nestingLevel=f,this.nestingLevelOfEqualBracketType=_,this.isInvalid=g}}e.BracketInfo=L;class k{constructor(S,f,_,g,C,s){this.range=S,this.openingBracketRange=f,this.closingBracketRange=_,this.nestingLevel=g,this.nestingLevelOfEqualBracketType=C,this.bracketPairNode=s}get openingBracketInfo(){return this.bracketPairNode.openingBracket.bracketInfo}}e.BracketPairInfo=k;class y extends k{constructor(S,f,_,g,C,s,i){super(S,f,_,g,C,s),this.minVisibleColumnIndentation=i}}e.BracketPairWithMinIndentationInfo=y}),define(ne[514],se([1,0,6,2,513,179,280,91,279,126,206,14,278]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BracketPairsTree=void 0;class n extends k.Disposable{didLanguageChange(o){return this.brackets.didLanguageChange(o)}constructor(o,d){if(super(),this.textModel=o,this.getLanguageConfiguration=d,this.didChangeEmitter=new L.Emitter,this.denseKeyProvider=new g.DenseKeyProvider,this.brackets=new S.LanguageAgnosticBracketTokens(this.denseKeyProvider,this.getLanguageConfiguration),this.onDidChange=this.didChangeEmitter.event,this.queuedTextEditsForInitialAstWithoutTokens=[],this.queuedTextEdits=[],o.tokenization.hasTokens)o.tokenization.backgroundTokenizationState===2?(this.initialAstWithoutTokens=void 0,this.astWithTokens=this.parseDocumentFromTextBuffer([],void 0,!1)):(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer([],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens);else{const l=this.brackets.getSingleLanguageBracketTokens(this.textModel.getLanguageId()),p=new C.FastTokenizer(this.textModel.getValue(),l);this.initialAstWithoutTokens=(0,_.parseDocument)(p,[],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens}}handleDidChangeBackgroundTokenizationState(){if(this.textModel.tokenization.backgroundTokenizationState===2){const o=this.initialAstWithoutTokens===void 0;this.initialAstWithoutTokens=void 0,o||this.didChangeEmitter.fire()}}handleDidChangeTokens({ranges:o}){const d=o.map(l=>new D.TextEditInfo((0,f.toLength)(l.fromLineNumber-1,0),(0,f.toLength)(l.toLineNumber,0),(0,f.toLength)(l.toLineNumber-l.fromLineNumber+1,0)));this.handleEdits(d,!0),this.initialAstWithoutTokens||this.didChangeEmitter.fire()}handleContentChanged(o){const d=D.TextEditInfo.fromModelContentChanges(o.changes);this.handleEdits(d,!1)}handleEdits(o,d){const l=(0,i.combineTextEditInfos)(this.queuedTextEdits,o);this.queuedTextEdits=l,this.initialAstWithoutTokens&&!d&&(this.queuedTextEditsForInitialAstWithoutTokens=(0,i.combineTextEditInfos)(this.queuedTextEditsForInitialAstWithoutTokens,o))}flushQueue(){this.queuedTextEdits.length>0&&(this.astWithTokens=this.parseDocumentFromTextBuffer(this.queuedTextEdits,this.astWithTokens,!1),this.queuedTextEdits=[]),this.queuedTextEditsForInitialAstWithoutTokens.length>0&&(this.initialAstWithoutTokens&&(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer(this.queuedTextEditsForInitialAstWithoutTokens,this.initialAstWithoutTokens,!1)),this.queuedTextEditsForInitialAstWithoutTokens=[])}parseDocumentFromTextBuffer(o,d,l){const m=d,v=new C.TextBufferTokenizer(this.textModel,this.brackets);return(0,_.parseDocument)(v,o,m,l)}getBracketsInRange(o,d){this.flushQueue();const l=(0,f.toLength)(o.startLineNumber-1,o.startColumn-1),p=(0,f.toLength)(o.endLineNumber-1,o.endColumn-1);return new s.CallbackIterable(m=>{const v=this.initialAstWithoutTokens||this.astWithTokens;u(v,f.lengthZero,v.length,l,p,m,0,0,new Map,d)})}getBracketPairsInRange(o,d){this.flushQueue();const l=(0,f.positionToLength)(o.getStartPosition()),p=(0,f.positionToLength)(o.getEndPosition());return new s.CallbackIterable(m=>{const v=this.initialAstWithoutTokens||this.astWithTokens,b=new h(m,d,this.textModel);r(v,f.lengthZero,v.length,l,p,b,0,new Map)})}getFirstBracketAfter(o){this.flushQueue();const d=this.initialAstWithoutTokens||this.astWithTokens;return a(d,f.lengthZero,d.length,(0,f.positionToLength)(o))}getFirstBracketBefore(o){this.flushQueue();const d=this.initialAstWithoutTokens||this.astWithTokens;return t(d,f.lengthZero,d.length,(0,f.positionToLength)(o))}}e.BracketPairsTree=n;function t(c,o,d,l){if(c.kind===4||c.kind===2){const p=[];for(const m of c.children)d=(0,f.lengthAdd)(o,m.length),p.push({nodeOffsetStart:o,nodeOffsetEnd:d}),o=d;for(let m=p.length-1;m>=0;m--){const{nodeOffsetStart:v,nodeOffsetEnd:b}=p[m];if((0,f.lengthLessThan)(v,l)){const w=t(c.children[m],v,b,l);if(w)return w}}return null}else{if(c.kind===3)return null;if(c.kind===1){const p=(0,f.lengthsToRange)(o,d);return{bracketInfo:c.bracketInfo,range:p}}}return null}function a(c,o,d,l){if(c.kind===4||c.kind===2){for(const p of c.children){if(d=(0,f.lengthAdd)(o,p.length),(0,f.lengthLessThan)(l,d)){const m=a(p,o,d,l);if(m)return m}o=d}return null}else{if(c.kind===3)return null;if(c.kind===1){const p=(0,f.lengthsToRange)(o,d);return{bracketInfo:c.bracketInfo,range:p}}}return null}function u(c,o,d,l,p,m,v,b,w,E,I=!1){if(v>200)return!0;e:for(;;)switch(c.kind){case 4:{const M=c.childrenLength;for(let P=0;P<M;P++){const x=c.getChild(P);if(x){if(d=(0,f.lengthAdd)(o,x.length),(0,f.lengthLessThanEqual)(o,p)&&(0,f.lengthGreaterThanEqual)(d,l)){if((0,f.lengthGreaterThanEqual)(d,p)){c=x;continue e}if(!u(x,o,d,l,p,m,v,0,w,E))return!1}o=d}}return!0}case 2:{const M=!E||!c.closingBracket||c.closingBracket.bracketInfo.closesColorized(c.openingBracket.bracketInfo);let P=0;if(w){let T=w.get(c.openingBracket.text);T===void 0&&(T=0),P=T,M&&(T++,w.set(c.openingBracket.text,T))}const x=c.childrenLength;for(let T=0;T<x;T++){const A=c.getChild(T);if(A){if(d=(0,f.lengthAdd)(o,A.length),(0,f.lengthLessThanEqual)(o,p)&&(0,f.lengthGreaterThanEqual)(d,l)){if((0,f.lengthGreaterThanEqual)(d,p)&&A.kind!==1){c=A,M?(v++,b=P+1):b=P;continue e}if((M||A.kind!==1||!c.closingBracket)&&!u(A,o,d,l,p,m,M?v+1:v,M?P+1:P,w,E,!c.closingBracket))return!1}o=d}}return w?.set(c.openingBracket.text,P),!0}case 3:{const M=(0,f.lengthsToRange)(o,d);return m(new y.BracketInfo(M,v-1,0,!0))}case 1:{const M=(0,f.lengthsToRange)(o,d);return m(new y.BracketInfo(M,v-1,b-1,I))}case 0:return!0}}class h{constructor(o,d,l){this.push=o,this.includeMinIndentation=d,this.textModel=l}}function r(c,o,d,l,p,m,v,b){var w;if(v>200)return!0;let E=!0;if(c.kind===2){let I=0;if(b){let x=b.get(c.openingBracket.text);x===void 0&&(x=0),I=x,x++,b.set(c.openingBracket.text,x)}const M=(0,f.lengthAdd)(o,c.openingBracket.length);let P=-1;if(m.includeMinIndentation&&(P=c.computeMinIndentation(o,m.textModel)),E=m.push(new y.BracketPairWithMinIndentationInfo((0,f.lengthsToRange)(o,d),(0,f.lengthsToRange)(o,M),c.closingBracket?(0,f.lengthsToRange)((0,f.lengthAdd)(M,((w=c.child)===null||w===void 0?void 0:w.length)||f.lengthZero),d):void 0,v,I,c,P)),o=M,E&&c.child){const x=c.child;if(d=(0,f.lengthAdd)(o,x.length),(0,f.lengthLessThanEqual)(o,p)&&(0,f.lengthGreaterThanEqual)(d,l)&&(E=r(x,o,d,l,p,m,v+1,b),!E))return!1}b?.set(c.openingBracket.text,I)}else{let I=o;for(const M of c.children){const P=I;if(I=(0,f.lengthAdd)(I,M.length),(0,f.lengthLessThanEqual)(P,p)&&(0,f.lengthLessThanEqual)(l,I)&&(E=r(M,P,I,l,p,m,v,b),!E))return!1}}return E}}),define(ne[111],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InternalModelContentChangeEvent=e.ModelInjectedTextChangedEvent=e.ModelRawContentChangedEvent=e.ModelRawEOLChanged=e.ModelRawLinesInserted=e.ModelRawLinesDeleted=e.ModelRawLineChanged=e.LineInjectedText=e.ModelRawFlush=void 0;class L{constructor(){this.changeType=1}}e.ModelRawFlush=L;class k{static applyInjectedText(i,n){if(!n||n.length===0)return i;let t=\"\",a=0;for(const u of n)t+=i.substring(a,u.column-1),a=u.column-1,t+=u.options.content;return t+=i.substring(a),t}static fromDecorations(i){const n=[];for(const t of i)t.options.before&&t.options.before.content.length>0&&n.push(new k(t.ownerId,t.range.startLineNumber,t.range.startColumn,t.options.before,0)),t.options.after&&t.options.after.content.length>0&&n.push(new k(t.ownerId,t.range.endLineNumber,t.range.endColumn,t.options.after,1));return n.sort((t,a)=>t.lineNumber===a.lineNumber?t.column===a.column?t.order-a.order:t.column-a.column:t.lineNumber-a.lineNumber),n}constructor(i,n,t,a,u){this.ownerId=i,this.lineNumber=n,this.column=t,this.options=a,this.order=u}}e.LineInjectedText=k;class y{constructor(i,n,t){this.changeType=2,this.lineNumber=i,this.detail=n,this.injectedText=t}}e.ModelRawLineChanged=y;class D{constructor(i,n){this.changeType=3,this.fromLineNumber=i,this.toLineNumber=n}}e.ModelRawLinesDeleted=D;class S{constructor(i,n,t,a){this.changeType=4,this.injectedTexts=a,this.fromLineNumber=i,this.toLineNumber=n,this.detail=t}}e.ModelRawLinesInserted=S;class f{constructor(){this.changeType=5}}e.ModelRawEOLChanged=f;class _{constructor(i,n,t,a){this.changes=i,this.versionId=n,this.isUndoing=t,this.isRedoing=a,this.resultingSelection=null}containsEvent(i){for(let n=0,t=this.changes.length;n<t;n++)if(this.changes[n].changeType===i)return!0;return!1}static merge(i,n){const t=[].concat(i.changes).concat(n.changes),a=n.versionId,u=i.isUndoing||n.isUndoing,h=i.isRedoing||n.isRedoing;return new _(t,a,u,h)}}e.ModelRawContentChangedEvent=_;class g{constructor(i){this.changes=i}}e.ModelInjectedTextChangedEvent=g;class C{constructor(i,n){this.rawContentChangedEvent=i,this.contentChangedEvent=n}merge(i){const n=_.merge(this.rawContentChangedEvent,i.rawContentChangedEvent),t=C._mergeChangeEvents(this.contentChangedEvent,i.contentChangedEvent);return new C(n,t)}static _mergeChangeEvents(i,n){const t=[].concat(i.changes).concat(n.changes),a=n.eol,u=n.versionId,h=i.isUndoing||n.isUndoing,r=i.isRedoing||n.isRedoing,c=i.isFlush||n.isFlush,o=i.isEolChange&&n.isEolChange;return{changes:t,eol:a,isEolChange:o,versionId:u,isUndoing:h,isRedoing:r,isFlush:c}}}e.InternalModelContentChangeEvent=C}),define(ne[209],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IndentGuideHorizontalLine=e.IndentGuide=e.HorizontalGuidesState=void 0;var L;(function(D){D[D.Disabled=0]=\"Disabled\",D[D.EnabledForActive=1]=\"EnabledForActive\",D[D.Enabled=2]=\"Enabled\"})(L||(e.HorizontalGuidesState=L={}));class k{constructor(S,f,_,g,C,s){if(this.visibleColumn=S,this.column=f,this.className=_,this.horizontalLine=g,this.forWrappedLinesAfterColumn=C,this.forWrappedLinesBeforeOrAtColumn=s,S!==-1==(f!==-1))throw new Error}}e.IndentGuide=k;class y{constructor(S,f){this.top=S,this.endColumn=f}}e.IndentGuideHorizontalLine=y}),define(ne[287],se([1,0,14,11,82,5,282,207,209,9]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BracketPairGuidesClassNames=e.GuidesTextModelPart=void 0;class C extends S.TextModelPart{constructor(n,t){super(),this.textModel=n,this.languageConfigurationService=t}getLanguageConfiguration(n){return this.languageConfigurationService.getLanguageConfiguration(n)}_computeIndentLevel(n){return(0,f.computeIndentLevel)(this.textModel.getLineContent(n+1),this.textModel.getOptions().tabSize)}getActiveIndentGuide(n,t,a){this.assertNotDisposed();const u=this.textModel.getLineCount();if(n<1||n>u)throw new g.BugIndicatingError(\"Illegal value for lineNumber\");const h=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,r=!!(h&&h.offSide);let c=-2,o=-1,d=-2,l=-1;const p=N=>{if(c!==-1&&(c===-2||c>N-1)){c=-1,o=-1;for(let F=N-2;F>=0;F--){const O=this._computeIndentLevel(F);if(O>=0){c=F,o=O;break}}}if(d===-2){d=-1,l=-1;for(let F=N;F<u;F++){const O=this._computeIndentLevel(F);if(O>=0){d=F,l=O;break}}}};let m=-2,v=-1,b=-2,w=-1;const E=N=>{if(m===-2){m=-1,v=-1;for(let F=N-2;F>=0;F--){const O=this._computeIndentLevel(F);if(O>=0){m=F,v=O;break}}}if(b!==-1&&(b===-2||b<N-1)){b=-1,w=-1;for(let F=N;F<u;F++){const O=this._computeIndentLevel(F);if(O>=0){b=F,w=O;break}}}};let I=0,M=!0,P=0,x=!0,T=0,A=0;for(let N=0;M||x;N++){const F=n-N,O=n+N;N>1&&(F<1||F<t)&&(M=!1),N>1&&(O>u||O>a)&&(x=!1),N>5e4&&(M=!1,x=!1);let W=-1;if(M&&F>=1){const j=this._computeIndentLevel(F-1);j>=0?(d=F-1,l=j,W=Math.ceil(j/this.textModel.getOptions().indentSize)):(p(F),W=this._getIndentLevelForWhitespaceLine(r,o,l))}let U=-1;if(x&&O<=u){const j=this._computeIndentLevel(O-1);j>=0?(m=O-1,v=j,U=Math.ceil(j/this.textModel.getOptions().indentSize)):(E(O),U=this._getIndentLevelForWhitespaceLine(r,v,w))}if(N===0){A=W;continue}if(N===1){if(O<=u&&U>=0&&A+1===U){M=!1,I=O,P=O,T=U;continue}if(F>=1&&W>=0&&W-1===A){x=!1,I=F,P=F,T=W;continue}if(I=n,P=n,T=A,T===0)return{startLineNumber:I,endLineNumber:P,indent:T}}M&&(W>=T?I=F:M=!1),x&&(U>=T?P=O:x=!1)}return{startLineNumber:I,endLineNumber:P,indent:T}}getLinesBracketGuides(n,t,a,u){var h;const r=[];for(let m=n;m<=t;m++)r.push([]);const c=!0,o=this.textModel.bracketPairs.getBracketPairsInRangeWithMinIndentation(new D.Range(n,1,t,this.textModel.getLineMaxColumn(t))).toArray();let d;if(a&&o.length>0){const m=(n<=a.lineNumber&&a.lineNumber<=t?o:this.textModel.bracketPairs.getBracketPairsInRange(D.Range.fromPositions(a)).toArray()).filter(v=>D.Range.strictContainsPosition(v.range,a));d=(h=(0,L.findLast)(m,v=>c||v.range.startLineNumber!==v.range.endLineNumber))===null||h===void 0?void 0:h.range}const l=this.textModel.getOptions().bracketPairColorizationOptions.independentColorPoolPerBracketType,p=new s;for(const m of o){if(!m.closingBracketRange)continue;const v=d&&m.range.equalsRange(d);if(!v&&!u.includeInactive)continue;const b=p.getInlineClassName(m.nestingLevel,m.nestingLevelOfEqualBracketType,l)+(u.highlightActive&&v?\" \"+p.activeClassName:\"\"),w=m.openingBracketRange.getStartPosition(),E=m.closingBracketRange.getStartPosition(),I=u.horizontalGuides===_.HorizontalGuidesState.Enabled||u.horizontalGuides===_.HorizontalGuidesState.EnabledForActive&&v;if(m.range.startLineNumber===m.range.endLineNumber){c&&I&&r[m.range.startLineNumber-n].push(new _.IndentGuide(-1,m.openingBracketRange.getEndPosition().column,b,new _.IndentGuideHorizontalLine(!1,E.column),-1,-1));continue}const M=this.getVisibleColumnFromPosition(E),P=this.getVisibleColumnFromPosition(m.openingBracketRange.getStartPosition()),x=Math.min(P,M,m.minVisibleColumnIndentation+1);let T=!1;k.firstNonWhitespaceIndex(this.textModel.getLineContent(m.closingBracketRange.startLineNumber))<m.closingBracketRange.startColumn-1&&(T=!0);const F=Math.max(w.lineNumber,n),O=Math.min(E.lineNumber,t),W=T?1:0;for(let U=F;U<O+W;U++)r[U-n].push(new _.IndentGuide(x,-1,b,null,U===w.lineNumber?w.column:-1,U===E.lineNumber?E.column:-1));I&&(w.lineNumber>=n&&P>x&&r[w.lineNumber-n].push(new _.IndentGuide(x,-1,b,new _.IndentGuideHorizontalLine(!1,w.column),-1,-1)),E.lineNumber<=t&&M>x&&r[E.lineNumber-n].push(new _.IndentGuide(x,-1,b,new _.IndentGuideHorizontalLine(!T,E.column),-1,-1)))}for(const m of r)m.sort((v,b)=>v.visibleColumn-b.visibleColumn);return r}getVisibleColumnFromPosition(n){return y.CursorColumns.visibleColumnFromColumn(this.textModel.getLineContent(n.lineNumber),n.column,this.textModel.getOptions().tabSize)+1}getLinesIndentGuides(n,t){this.assertNotDisposed();const a=this.textModel.getLineCount();if(n<1||n>a)throw new Error(\"Illegal value for startLineNumber\");if(t<1||t>a)throw new Error(\"Illegal value for endLineNumber\");const u=this.textModel.getOptions(),h=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,r=!!(h&&h.offSide),c=new Array(t-n+1);let o=-2,d=-1,l=-2,p=-1;for(let m=n;m<=t;m++){const v=m-n,b=this._computeIndentLevel(m-1);if(b>=0){o=m-1,d=b,c[v]=Math.ceil(b/u.indentSize);continue}if(o===-2){o=-1,d=-1;for(let w=m-2;w>=0;w--){const E=this._computeIndentLevel(w);if(E>=0){o=w,d=E;break}}}if(l!==-1&&(l===-2||l<m-1)){l=-1,p=-1;for(let w=m;w<a;w++){const E=this._computeIndentLevel(w);if(E>=0){l=w,p=E;break}}}c[v]=this._getIndentLevelForWhitespaceLine(r,d,p)}return c}_getIndentLevelForWhitespaceLine(n,t,a){const u=this.textModel.getOptions();return t===-1||a===-1?0:t<a?1+Math.floor(t/u.indentSize):t===a||n?Math.ceil(a/u.indentSize):1+Math.floor(a/u.indentSize)}}e.GuidesTextModelPart=C;class s{constructor(){this.activeClassName=\"indent-active\"}getInlineClassName(n,t,a){return this.getInlineClassNameOfLevel(a?t:n)}getInlineClassNameOfLevel(n){return`bracket-indent-guide lvl-${n%30}`}}e.BracketPairGuidesClassNames=s}),define(ne[515],se([1,0,6,2]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenizationRegistry=void 0;class y{constructor(){this._tokenizationSupports=new Map,this._factories=new Map,this._onDidChange=new L.Emitter,this.onDidChange=this._onDidChange.event,this._colorMap=null}handleChange(f){this._onDidChange.fire({changedLanguages:f,changedColorMap:!1})}register(f,_){return this._tokenizationSupports.set(f,_),this.handleChange([f]),(0,k.toDisposable)(()=>{this._tokenizationSupports.get(f)===_&&(this._tokenizationSupports.delete(f),this.handleChange([f]))})}get(f){return this._tokenizationSupports.get(f)||null}registerFactory(f,_){var g;(g=this._factories.get(f))===null||g===void 0||g.dispose();const C=new D(this,f,_);return this._factories.set(f,C),(0,k.toDisposable)(()=>{const s=this._factories.get(f);!s||s!==C||(this._factories.delete(f),s.dispose())})}getOrCreate(f){return we(this,void 0,void 0,function*(){const _=this.get(f);if(_)return _;const g=this._factories.get(f);return!g||g.isResolved?null:(yield g.resolve(),this.get(f))})}isResolved(f){if(this.get(f))return!0;const g=this._factories.get(f);return!!(!g||g.isResolved)}setColorMap(f){this._colorMap=f,this._onDidChange.fire({changedLanguages:Array.from(this._tokenizationSupports.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}}e.TokenizationRegistry=y;class D extends k.Disposable{get isResolved(){return this._isResolved}constructor(f,_,g){super(),this._registry=f,this._languageId=_,this._factory=g,this._isDisposed=!1,this._resolvePromise=null,this._isResolved=!1}dispose(){this._isDisposed=!0,super.dispose()}resolve(){return we(this,void 0,void 0,function*(){return this._resolvePromise||(this._resolvePromise=this._create()),this._resolvePromise})}_create(){return we(this,void 0,void 0,function*(){const f=yield this._factory.tokenizationSupport;this._isResolved=!0,f&&!this._isDisposed&&this._register(this._registry.register(this._languageId,f))})}}}),define(ne[516],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ContiguousMultilineTokens=void 0;class L{get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._startLineNumber+this._tokens.length-1}constructor(y,D){this._startLineNumber=y,this._tokens=D}getLineTokens(y){return this._tokens[y-this._startLineNumber]}appendLineTokens(y){this._tokens.push(y)}}e.ContiguousMultilineTokens=L}),define(ne[288],se([1,0,516]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ContiguousMultilineTokensBuilder=void 0;class k{constructor(){this._tokens=[]}add(D,S){if(this._tokens.length>0){const f=this._tokens[this._tokens.length-1];if(f.endLineNumber+1===D){f.appendLineTokens(S);return}}this._tokens.push(new L.ContiguousMultilineTokens(D,[S]))}finalize(){return this._tokens}}e.ContiguousMultilineTokensBuilder=k}),define(ne[86],se([1,0,124]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LineTokens=void 0;class k{static createEmpty(S,f){const _=k.defaultTokenMetadata,g=new Uint32Array(2);return g[0]=S.length,g[1]=_,new k(g,S,f)}constructor(S,f,_){this._lineTokensBrand=void 0,this._tokens=S,this._tokensCount=this._tokens.length>>>1,this._text=f,this._languageIdCodec=_}equals(S){return S instanceof k?this.slicedEquals(S,0,this._tokensCount):!1}slicedEquals(S,f,_){if(this._text!==S._text||this._tokensCount!==S._tokensCount)return!1;const g=f<<1,C=g+(_<<1);for(let s=g;s<C;s++)if(this._tokens[s]!==S._tokens[s])return!1;return!0}getLineContent(){return this._text}getCount(){return this._tokensCount}getStartOffset(S){return S>0?this._tokens[S-1<<1]:0}getMetadata(S){return this._tokens[(S<<1)+1]}getLanguageId(S){const f=this._tokens[(S<<1)+1],_=L.TokenMetadata.getLanguageId(f);return this._languageIdCodec.decodeLanguageId(_)}getStandardTokenType(S){const f=this._tokens[(S<<1)+1];return L.TokenMetadata.getTokenType(f)}getForeground(S){const f=this._tokens[(S<<1)+1];return L.TokenMetadata.getForeground(f)}getClassName(S){const f=this._tokens[(S<<1)+1];return L.TokenMetadata.getClassNameFromMetadata(f)}getInlineStyle(S,f){const _=this._tokens[(S<<1)+1];return L.TokenMetadata.getInlineStyleFromMetadata(_,f)}getPresentation(S){const f=this._tokens[(S<<1)+1];return L.TokenMetadata.getPresentationFromMetadata(f)}getEndOffset(S){return this._tokens[S<<1]}findTokenIndexAtOffset(S){return k.findIndexInTokensArray(this._tokens,S)}inflate(){return this}sliceAndInflate(S,f,_){return new y(this,S,f,_)}static convertToEndOffset(S,f){const g=(S.length>>>1)-1;for(let C=0;C<g;C++)S[C<<1]=S[C+1<<1];S[g<<1]=f}static findIndexInTokensArray(S,f){if(S.length<=2)return 0;let _=0,g=(S.length>>>1)-1;for(;_<g;){const C=_+Math.floor((g-_)/2),s=S[C<<1];if(s===f)return C+1;s<f?_=C+1:s>f&&(g=C)}return _}withInserted(S){if(S.length===0)return this;let f=0,_=0,g=\"\";const C=new Array;let s=0;for(;;){const i=f<this._tokensCount?this._tokens[f<<1]:-1,n=_<S.length?S[_]:null;if(i!==-1&&(n===null||i<=n.offset)){g+=this._text.substring(s,i);const t=this._tokens[(f<<1)+1];C.push(g.length,t),f++,s=i}else if(n){if(n.offset>s){g+=this._text.substring(s,n.offset);const t=this._tokens[(f<<1)+1];C.push(g.length,t),s=n.offset}g+=n.text,C.push(g.length,n.tokenMetadata),_++}else break}return new k(new Uint32Array(C),g,this._languageIdCodec)}}e.LineTokens=k,k.defaultTokenMetadata=(0<<11|1<<15|2<<24)>>>0;class y{constructor(S,f,_,g){this._source=S,this._startOffset=f,this._endOffset=_,this._deltaOffset=g,this._firstTokenIndex=S.findTokenIndexAtOffset(f),this._tokensCount=0;for(let C=this._firstTokenIndex,s=S.getCount();C<s&&!(S.getStartOffset(C)>=_);C++)this._tokensCount++}getMetadata(S){return this._source.getMetadata(this._firstTokenIndex+S)}getLanguageId(S){return this._source.getLanguageId(this._firstTokenIndex+S)}getLineContent(){return this._source.getLineContent().substring(this._startOffset,this._endOffset)}equals(S){return S instanceof y?this._startOffset===S._startOffset&&this._endOffset===S._endOffset&&this._deltaOffset===S._deltaOffset&&this._source.slicedEquals(S._source,this._firstTokenIndex,this._tokensCount):!1}getCount(){return this._tokensCount}getForeground(S){return this._source.getForeground(this._firstTokenIndex+S)}getEndOffset(S){const f=this._source.getEndOffset(this._firstTokenIndex+S);return Math.min(this._endOffset,f)-this._startOffset+this._deltaOffset}getClassName(S){return this._source.getClassName(this._firstTokenIndex+S)}getInlineStyle(S,f){return this._source.getInlineStyle(this._firstTokenIndex+S,f)}getPresentation(S){return this._source.getPresentation(this._firstTokenIndex+S)}findTokenIndexAtOffset(S){return this._source.findTokenIndexAtOffset(S+this._startOffset-this._deltaOffset)-this._firstTokenIndex}}}),define(ne[517],se([1,0,86]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.toUint32Array=e.ContiguousTokensEditing=e.EMPTY_LINE_TOKENS=void 0,e.EMPTY_LINE_TOKENS=new Uint32Array(0).buffer;class k{static deleteBeginning(S,f){return S===null||S===e.EMPTY_LINE_TOKENS?S:k.delete(S,0,f)}static deleteEnding(S,f){if(S===null||S===e.EMPTY_LINE_TOKENS)return S;const _=y(S),g=_[_.length-2];return k.delete(S,f,g)}static delete(S,f,_){if(S===null||S===e.EMPTY_LINE_TOKENS||f===_)return S;const g=y(S),C=g.length>>>1;if(f===0&&g[g.length-2]===_)return e.EMPTY_LINE_TOKENS;const s=L.LineTokens.findIndexInTokensArray(g,f),i=s>0?g[s-1<<1]:0,n=g[s<<1];if(_<n){const r=_-f;for(let c=s;c<C;c++)g[c<<1]-=r;return S}let t,a;i!==f?(g[s<<1]=f,t=s+1<<1,a=f):(t=s<<1,a=i);const u=_-f;for(let r=s+1;r<C;r++){const c=g[r<<1]-u;c>a&&(g[t++]=c,g[t++]=g[(r<<1)+1],a=c)}if(t===g.length)return S;const h=new Uint32Array(t);return h.set(g.subarray(0,t),0),h.buffer}static append(S,f){if(f===e.EMPTY_LINE_TOKENS)return S;if(S===e.EMPTY_LINE_TOKENS)return f;if(S===null)return S;if(f===null)return null;const _=y(S),g=y(f),C=g.length>>>1,s=new Uint32Array(_.length+g.length);s.set(_,0);let i=_.length;const n=_[_.length-2];for(let t=0;t<C;t++)s[i++]=g[t<<1]+n,s[i++]=g[(t<<1)+1];return s.buffer}static insert(S,f,_){if(S===null||S===e.EMPTY_LINE_TOKENS)return S;const g=y(S),C=g.length>>>1;let s=L.LineTokens.findIndexInTokensArray(g,f);s>0&&g[s-1<<1]===f&&s--;for(let i=s;i<C;i++)g[i<<1]+=_;return S}}e.ContiguousTokensEditing=k;function y(D){return D instanceof Uint32Array?D:new Uint32Array(D)}e.toUint32Array=y}),define(ne[518],se([1,0,14,12,517,86,124]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ContiguousTokensStore=void 0;class f{constructor(C){this._lineTokens=[],this._len=0,this._languageIdCodec=C}flush(){this._lineTokens=[],this._len=0}get hasTokens(){return this._lineTokens.length>0}getTokens(C,s,i){let n=null;if(s<this._len&&(n=this._lineTokens[s]),n!==null&&n!==y.EMPTY_LINE_TOKENS)return new D.LineTokens((0,y.toUint32Array)(n),i,this._languageIdCodec);const t=new Uint32Array(2);return t[0]=i.length,t[1]=_(this._languageIdCodec.encodeLanguageId(C)),new D.LineTokens(t,i,this._languageIdCodec)}static _massageTokens(C,s,i){const n=i?(0,y.toUint32Array)(i):null;if(s===0){let t=!1;if(n&&n.length>1&&(t=S.TokenMetadata.getLanguageId(n[1])!==C),!t)return y.EMPTY_LINE_TOKENS}if(!n||n.length===0){const t=new Uint32Array(2);return t[0]=s,t[1]=_(C),t.buffer}return n[n.length-2]=s,n.byteOffset===0&&n.byteLength===n.buffer.byteLength?n.buffer:n}_ensureLine(C){for(;C>=this._len;)this._lineTokens[this._len]=null,this._len++}_deleteLines(C,s){s!==0&&(C+s>this._len&&(s=this._len-C),this._lineTokens.splice(C,s),this._len-=s)}_insertLines(C,s){if(s===0)return;const i=[];for(let n=0;n<s;n++)i[n]=null;this._lineTokens=L.arrayInsert(this._lineTokens,C,i),this._len+=s}setTokens(C,s,i,n,t){const a=f._massageTokens(this._languageIdCodec.encodeLanguageId(C),i,n);this._ensureLine(s);const u=this._lineTokens[s];return this._lineTokens[s]=a,t?!f._equals(u,a):!1}static _equals(C,s){if(!C||!s)return!C&&!s;const i=(0,y.toUint32Array)(C),n=(0,y.toUint32Array)(s);if(i.length!==n.length)return!1;for(let t=0,a=i.length;t<a;t++)if(i[t]!==n[t])return!1;return!0}acceptEdit(C,s,i){this._acceptDeleteRange(C),this._acceptInsertText(new k.Position(C.startLineNumber,C.startColumn),s,i)}_acceptDeleteRange(C){const s=C.startLineNumber-1;if(s>=this._len)return;if(C.startLineNumber===C.endLineNumber){if(C.startColumn===C.endColumn)return;this._lineTokens[s]=y.ContiguousTokensEditing.delete(this._lineTokens[s],C.startColumn-1,C.endColumn-1);return}this._lineTokens[s]=y.ContiguousTokensEditing.deleteEnding(this._lineTokens[s],C.startColumn-1);const i=C.endLineNumber-1;let n=null;i<this._len&&(n=y.ContiguousTokensEditing.deleteBeginning(this._lineTokens[i],C.endColumn-1)),this._lineTokens[s]=y.ContiguousTokensEditing.append(this._lineTokens[s],n),this._deleteLines(C.startLineNumber,C.endLineNumber-C.startLineNumber)}_acceptInsertText(C,s,i){if(s===0&&i===0)return;const n=C.lineNumber-1;if(!(n>=this._len)){if(s===0){this._lineTokens[n]=y.ContiguousTokensEditing.insert(this._lineTokens[n],C.column-1,i);return}this._lineTokens[n]=y.ContiguousTokensEditing.deleteEnding(this._lineTokens[n],C.column-1),this._lineTokens[n]=y.ContiguousTokensEditing.insert(this._lineTokens[n],C.column-1,i),this._insertLines(C.lineNumber,s)}}setMultilineTokens(C,s){if(C.length===0)return{changes:[]};const i=[];for(let n=0,t=C.length;n<t;n++){const a=C[n];let u=0,h=0,r=!1;for(let c=a.startLineNumber;c<=a.endLineNumber;c++)r?(this.setTokens(s.getLanguageId(),c-1,s.getLineLength(c),a.getLineTokens(c),!1),h=c):this.setTokens(s.getLanguageId(),c-1,s.getLineLength(c),a.getLineTokens(c),!0)&&(r=!0,u=c,h=c);r&&i.push({fromLineNumber:u,toLineNumber:h})}return{changes:i}}}e.ContiguousTokensStore=f;function _(g){return(g<<0|0<<8|0<<11|1<<15|2<<24|1024)>>>0}}),define(ne[519],se([1,0,12,5,122]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SparseLineTokens=e.SparseMultilineTokens=void 0;class D{static create(g,C){return new D(g,new S(C))}get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._endLineNumber}constructor(g,C){this._startLineNumber=g,this._tokens=C,this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}toString(){return this._tokens.toString(this._startLineNumber)}_updateEndLineNumber(){this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}isEmpty(){return this._tokens.isEmpty()}getLineTokens(g){return this._startLineNumber<=g&&g<=this._endLineNumber?this._tokens.getLineTokens(g-this._startLineNumber):null}getRange(){const g=this._tokens.getRange();return g&&new k.Range(this._startLineNumber+g.startLineNumber,g.startColumn,this._startLineNumber+g.endLineNumber,g.endColumn)}removeTokens(g){const C=g.startLineNumber-this._startLineNumber,s=g.endLineNumber-this._startLineNumber;this._startLineNumber+=this._tokens.removeTokens(C,g.startColumn-1,s,g.endColumn-1),this._updateEndLineNumber()}split(g){const C=g.startLineNumber-this._startLineNumber,s=g.endLineNumber-this._startLineNumber,[i,n,t]=this._tokens.split(C,g.startColumn-1,s,g.endColumn-1);return[new D(this._startLineNumber,i),new D(this._startLineNumber+t,n)]}applyEdit(g,C){const[s,i,n]=(0,y.countEOL)(C);this.acceptEdit(g,s,i,n,C.length>0?C.charCodeAt(0):0)}acceptEdit(g,C,s,i,n){this._acceptDeleteRange(g),this._acceptInsertText(new L.Position(g.startLineNumber,g.startColumn),C,s,i,n),this._updateEndLineNumber()}_acceptDeleteRange(g){if(g.startLineNumber===g.endLineNumber&&g.startColumn===g.endColumn)return;const C=g.startLineNumber-this._startLineNumber,s=g.endLineNumber-this._startLineNumber;if(s<0){const n=s-C;this._startLineNumber-=n;return}const i=this._tokens.getMaxDeltaLine();if(!(C>=i+1)){if(C<0&&s>=i+1){this._startLineNumber=0,this._tokens.clear();return}if(C<0){const n=-C;this._startLineNumber-=n,this._tokens.acceptDeleteRange(g.startColumn-1,0,0,s,g.endColumn-1)}else this._tokens.acceptDeleteRange(0,C,g.startColumn-1,s,g.endColumn-1)}}_acceptInsertText(g,C,s,i,n){if(C===0&&s===0)return;const t=g.lineNumber-this._startLineNumber;if(t<0){this._startLineNumber+=C;return}const a=this._tokens.getMaxDeltaLine();t>=a+1||this._tokens.acceptInsertText(t,g.column-1,C,s,i,n)}}e.SparseMultilineTokens=D;class S{constructor(g){this._tokens=g,this._tokenCount=g.length/4}toString(g){const C=[];for(let s=0;s<this._tokenCount;s++)C.push(`(${this._getDeltaLine(s)+g},${this._getStartCharacter(s)}-${this._getEndCharacter(s)})`);return`[${C.join(\",\")}]`}getMaxDeltaLine(){const g=this._getTokenCount();return g===0?-1:this._getDeltaLine(g-1)}getRange(){const g=this._getTokenCount();if(g===0)return null;const C=this._getStartCharacter(0),s=this._getDeltaLine(g-1),i=this._getEndCharacter(g-1);return new k.Range(0,C+1,s,i+1)}_getTokenCount(){return this._tokenCount}_getDeltaLine(g){return this._tokens[4*g]}_getStartCharacter(g){return this._tokens[4*g+1]}_getEndCharacter(g){return this._tokens[4*g+2]}isEmpty(){return this._getTokenCount()===0}getLineTokens(g){let C=0,s=this._getTokenCount()-1;for(;C<s;){const i=C+Math.floor((s-C)/2),n=this._getDeltaLine(i);if(n<g)C=i+1;else if(n>g)s=i-1;else{let t=i;for(;t>C&&this._getDeltaLine(t-1)===g;)t--;let a=i;for(;a<s&&this._getDeltaLine(a+1)===g;)a++;return new f(this._tokens.subarray(4*t,4*a+4))}}return this._getDeltaLine(C)===g?new f(this._tokens.subarray(4*C,4*C+4)):null}clear(){this._tokenCount=0}removeTokens(g,C,s,i){const n=this._tokens,t=this._tokenCount;let a=0,u=!1,h=0;for(let r=0;r<t;r++){const c=4*r,o=n[c],d=n[c+1],l=n[c+2],p=n[c+3];if((o>g||o===g&&l>=C)&&(o<s||o===s&&d<=i))u=!0;else{if(a===0&&(h=o),u){const m=4*a;n[m]=o-h,n[m+1]=d,n[m+2]=l,n[m+3]=p}a++}}return this._tokenCount=a,h}split(g,C,s,i){const n=this._tokens,t=this._tokenCount,a=[],u=[];let h=a,r=0,c=0;for(let o=0;o<t;o++){const d=4*o,l=n[d],p=n[d+1],m=n[d+2],v=n[d+3];if(l>g||l===g&&m>=C){if(l<s||l===s&&p<=i)continue;h!==u&&(h=u,r=0,c=l)}h[r++]=l-c,h[r++]=p,h[r++]=m,h[r++]=v}return[new S(new Uint32Array(a)),new S(new Uint32Array(u)),c]}acceptDeleteRange(g,C,s,i,n){const t=this._tokens,a=this._tokenCount,u=i-C;let h=0,r=!1;for(let c=0;c<a;c++){const o=4*c;let d=t[o],l=t[o+1],p=t[o+2];const m=t[o+3];if(d<C||d===C&&p<=s){h++;continue}else if(d===C&&l<s)d===i&&p>n?p-=n-s:p=s;else if(d===C&&l===s)if(d===i&&p>n)p-=n-s;else{r=!0;continue}else if(d<i||d===i&&l<n)if(d===i&&p>n)d=C,l=s,p=l+(p-n);else{r=!0;continue}else if(d>i){if(u===0&&!r){h=a;break}d-=u}else if(d===i&&l>=n)g&&d===0&&(l+=g,p+=g),d-=u,l-=n-s,p-=n-s;else throw new Error(\"Not possible!\");const v=4*h;t[v]=d,t[v+1]=l,t[v+2]=p,t[v+3]=m,h++}this._tokenCount=h}acceptInsertText(g,C,s,i,n,t){const a=s===0&&i===1&&(t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122),u=this._tokens,h=this._tokenCount;for(let r=0;r<h;r++){const c=4*r;let o=u[c],d=u[c+1],l=u[c+2];if(!(o<g||o===g&&l<C)){if(o===g&&l===C)if(a)l+=1;else continue;else if(o===g&&d<C&&C<l)s===0?l+=i:l=C;else{if(o===g&&d===C&&a)continue;if(o===g)if(o+=s,s===0)d+=i,l+=i;else{const p=l-d;d=n+(d-C),l=d+p}else o+=s}u[c]=o,u[c+1]=d,u[c+2]=l}}}}class f{constructor(g){this._tokens=g}getCount(){return this._tokens.length/4}getStartCharacter(g){return this._tokens[4*g+1]}getEndCharacter(g){return this._tokens[4*g+2]}getMetadata(g){return this._tokens[4*g+3]}}e.SparseLineTokens=f}),define(ne[520],se([1,0,14,86]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SparseTokensStore=void 0;class y{constructor(S){this._pieces=[],this._isComplete=!1,this._languageIdCodec=S}flush(){this._pieces=[],this._isComplete=!1}isEmpty(){return this._pieces.length===0}set(S,f){this._pieces=S||[],this._isComplete=f}setPartial(S,f){let _=S;if(f.length>0){const C=f[0].getRange(),s=f[f.length-1].getRange();if(!C||!s)return S;_=S.plusRange(C).plusRange(s)}let g=null;for(let C=0,s=this._pieces.length;C<s;C++){const i=this._pieces[C];if(i.endLineNumber<_.startLineNumber)continue;if(i.startLineNumber>_.endLineNumber){g=g||{index:C};break}if(i.removeTokens(_),i.isEmpty()){this._pieces.splice(C,1),C--,s--;continue}if(i.endLineNumber<_.startLineNumber)continue;if(i.startLineNumber>_.endLineNumber){g=g||{index:C};continue}const[n,t]=i.split(_);if(n.isEmpty()){g=g||{index:C};continue}t.isEmpty()||(this._pieces.splice(C,1,n,t),C++,s++,g=g||{index:C})}return g=g||{index:this._pieces.length},f.length>0&&(this._pieces=L.arrayInsert(this._pieces,g.index,f)),_}isComplete(){return this._isComplete}addSparseTokens(S,f){if(f.getLineContent().length===0)return f;const _=this._pieces;if(_.length===0)return f;const g=y._findFirstPieceWithLine(_,S),C=_[g].getLineTokens(S);if(!C)return f;const s=f.getCount(),i=C.getCount();let n=0;const t=[];let a=0,u=0;const h=(r,c)=>{r!==u&&(u=r,t[a++]=r,t[a++]=c)};for(let r=0;r<i;r++){const c=C.getStartCharacter(r),o=C.getEndCharacter(r),d=C.getMetadata(r),l=((d&1?2048:0)|(d&2?4096:0)|(d&4?8192:0)|(d&8?16384:0)|(d&16?16744448:0)|(d&32?4278190080:0))>>>0,p=~l>>>0;for(;n<s&&f.getEndOffset(n)<=c;)h(f.getEndOffset(n),f.getMetadata(n)),n++;for(n<s&&f.getStartOffset(n)<c&&h(c,f.getMetadata(n));n<s&&f.getEndOffset(n)<o;)h(f.getEndOffset(n),f.getMetadata(n)&p|d&l),n++;if(n<s)h(o,f.getMetadata(n)&p|d&l),f.getEndOffset(n)===o&&n++;else{const m=Math.min(Math.max(0,n-1),s-1);h(o,f.getMetadata(m)&p|d&l)}}for(;n<s;)h(f.getEndOffset(n),f.getMetadata(n)),n++;return new k.LineTokens(new Uint32Array(t),f.getLineContent(),this._languageIdCodec)}static _findFirstPieceWithLine(S,f){let _=0,g=S.length-1;for(;_<g;){let C=_+Math.floor((g-_)/2);if(S[C].endLineNumber<f)_=C+1;else if(S[C].startLineNumber>f)g=C-1;else{for(;C>_&&S[C-1].startLineNumber<=f&&f<=S[C-1].endLineNumber;)C--;return C}}return _}acceptEdit(S,f,_,g,C){for(const s of this._pieces)s.acceptEdit(S,f,_,g,C)}}e.SparseTokensStore=y}),define(ne[150],se([1,0,2]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewEventHandler=void 0;class k extends L.Disposable{constructor(){super(),this._shouldRender=!0}shouldRender(){return this._shouldRender}forceShouldRender(){this._shouldRender=!0}setShouldRender(){this._shouldRender=!0}onDidRender(){this._shouldRender=!1}onCompositionStart(D){return!1}onCompositionEnd(D){return!1}onConfigurationChanged(D){return!1}onCursorStateChanged(D){return!1}onDecorationsChanged(D){return!1}onFlushed(D){return!1}onFocusChanged(D){return!1}onLanguageConfigurationChanged(D){return!1}onLineMappingChanged(D){return!1}onLinesChanged(D){return!1}onLinesDeleted(D){return!1}onLinesInserted(D){return!1}onRevealRangeRequest(D){return!1}onScrollChanged(D){return!1}onThemeChanged(D){return!1}onTokensChanged(D){return!1}onTokensColorsChanged(D){return!1}onZonesChanged(D){return!1}handleEvents(D){let S=!1;for(let f=0,_=D.length;f<_;f++){const g=D[f];switch(g.type){case 0:this.onCompositionStart(g)&&(S=!0);break;case 1:this.onCompositionEnd(g)&&(S=!0);break;case 2:this.onConfigurationChanged(g)&&(S=!0);break;case 3:this.onCursorStateChanged(g)&&(S=!0);break;case 4:this.onDecorationsChanged(g)&&(S=!0);break;case 5:this.onFlushed(g)&&(S=!0);break;case 6:this.onFocusChanged(g)&&(S=!0);break;case 7:this.onLanguageConfigurationChanged(g)&&(S=!0);break;case 8:this.onLineMappingChanged(g)&&(S=!0);break;case 9:this.onLinesChanged(g)&&(S=!0);break;case 10:this.onLinesDeleted(g)&&(S=!0);break;case 11:this.onLinesInserted(g)&&(S=!0);break;case 12:this.onRevealRangeRequest(g)&&(S=!0);break;case 13:this.onScrollChanged(g)&&(S=!0);break;case 15:this.onTokensChanged(g)&&(S=!0);break;case 14:this.onThemeChanged(g)&&(S=!0);break;case 16:this.onTokensColorsChanged(g)&&(S=!0);break;case 17:this.onZonesChanged(g)&&(S=!0);break;default:console.info(\"View received unknown event: \"),console.info(g)}}S&&(this._shouldRender=!0)}}e.ViewEventHandler=k}),define(ne[112],se([1,0,150]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DynamicViewOverlay=void 0;class k extends L.ViewEventHandler{}e.DynamicViewOverlay=k}),define(ne[53],se([1,0,150]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PartFingerprints=e.ViewPart=void 0;class k extends L.ViewEventHandler{constructor(S){super(),this._context=S,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}}e.ViewPart=k;class y{static write(S,f){S.setAttribute(\"data-mprt\",String(f))}static read(S){const f=S.getAttribute(\"data-mprt\");return f===null?0:parseInt(f,10)}static collect(S,f){const _=[];let g=0;for(;S&&S!==document.body&&S!==f;)S.nodeType===S.ELEMENT_NODE&&(_[g++]=this.read(S)),S=S.parentElement;const C=new Uint8Array(g);for(let s=0;s<g;s++)C[s]=_[g-s-1];return C}}e.PartFingerprints=y}),define(ne[521],se([1,0,35,53,415]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BlockDecorations=void 0;class y extends k.ViewPart{constructor(S){super(S),this.blocks=[],this.contentWidth=-1,this.contentLeft=0,this.domNode=(0,L.createFastDomNode)(document.createElement(\"div\")),this.domNode.setAttribute(\"role\",\"presentation\"),this.domNode.setAttribute(\"aria-hidden\",\"true\"),this.domNode.setClassName(\"blockDecorations-container\"),this.update()}update(){let S=!1;const _=this._context.configuration.options.get(142),g=_.contentWidth-_.verticalScrollbarWidth;this.contentWidth!==g&&(this.contentWidth=g,S=!0);const C=_.contentLeft;return this.contentLeft!==C&&(this.contentLeft=C,S=!0),S}dispose(){super.dispose()}onConfigurationChanged(S){return this.update()}onScrollChanged(S){return S.scrollTopChanged||S.scrollLeftChanged}onDecorationsChanged(S){return!0}onZonesChanged(S){return!0}prepareRender(S){}render(S){var f;let _=0;const g=S.getDecorationsInViewport();for(const C of g){if(!C.options.blockClassName)continue;let s=this.blocks[_];s||(s=this.blocks[_]=(0,L.createFastDomNode)(document.createElement(\"div\")),this.domNode.appendChild(s));let i,n;C.options.blockIsAfterEnd?(i=S.getVerticalOffsetAfterLineNumber(C.range.endLineNumber,!1),n=S.getVerticalOffsetAfterLineNumber(C.range.endLineNumber,!0)):(i=S.getVerticalOffsetForLineNumber(C.range.startLineNumber,!0),n=C.range.isEmpty()&&!C.options.blockDoesNotCollapse?S.getVerticalOffsetForLineNumber(C.range.startLineNumber,!1):S.getVerticalOffsetAfterLineNumber(C.range.endLineNumber,!0));const[t,a,u,h]=(f=C.options.blockPadding)!==null&&f!==void 0?f:[0,0,0,0];s.setClassName(\"blockDecorations-block \"+C.options.blockClassName),s.setLeft(this.contentLeft-h),s.setWidth(this.contentWidth+h+a),s.setTop(i-S.scrollTop-t),s.setHeight(n-i+t+u),_++}for(let C=_;C<this.blocks.length;C++)this.blocks[C].domNode.remove();this.blocks.length=_}}e.BlockDecorations=y}),define(ne[522],se([1,0,112,144,5,417]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DecorationsOverlay=void 0;class D extends L.DynamicViewOverlay{constructor(f){super(),this._context=f;const _=this._context.configuration.options;this._lineHeight=_.get(65),this._typicalHalfwidthCharacterWidth=_.get(49).typicalHalfwidthCharacterWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(f){const _=this._context.configuration.options;return this._lineHeight=_.get(65),this._typicalHalfwidthCharacterWidth=_.get(49).typicalHalfwidthCharacterWidth,!0}onDecorationsChanged(f){return!0}onFlushed(f){return!0}onLinesChanged(f){return!0}onLinesDeleted(f){return!0}onLinesInserted(f){return!0}onScrollChanged(f){return f.scrollTopChanged||f.scrollWidthChanged}onZonesChanged(f){return!0}prepareRender(f){const _=f.getDecorationsInViewport();let g=[],C=0;for(let t=0,a=_.length;t<a;t++){const u=_[t];u.options.className&&(g[C++]=u)}g=g.sort((t,a)=>{if(t.options.zIndex<a.options.zIndex)return-1;if(t.options.zIndex>a.options.zIndex)return 1;const u=t.options.className,h=a.options.className;return u<h?-1:u>h?1:y.Range.compareRangesUsingStarts(t.range,a.range)});const s=f.visibleRange.startLineNumber,i=f.visibleRange.endLineNumber,n=[];for(let t=s;t<=i;t++){const a=t-s;n[a]=\"\"}this._renderWholeLineDecorations(f,g,n),this._renderNormalDecorations(f,g,n),this._renderResult=n}_renderWholeLineDecorations(f,_,g){const C=String(this._lineHeight),s=f.visibleRange.startLineNumber,i=f.visibleRange.endLineNumber;for(let n=0,t=_.length;n<t;n++){const a=_[n];if(!a.options.isWholeLine)continue;const u='<div class=\"cdr '+a.options.className+'\" style=\"left:0;width:100%;height:'+C+'px;\"></div>',h=Math.max(a.range.startLineNumber,s),r=Math.min(a.range.endLineNumber,i);for(let c=h;c<=r;c++){const o=c-s;g[o]+=u}}}_renderNormalDecorations(f,_,g){var C;const s=String(this._lineHeight),i=f.visibleRange.startLineNumber;let n=null,t=!1,a=null,u=!1;for(let h=0,r=_.length;h<r;h++){const c=_[h];if(c.options.isWholeLine)continue;const o=c.options.className,d=!!c.options.showIfCollapsed;let l=c.range;if(d&&l.endColumn===1&&l.endLineNumber!==l.startLineNumber&&(l=new y.Range(l.startLineNumber,l.startColumn,l.endLineNumber-1,this._context.viewModel.getLineMaxColumn(l.endLineNumber-1))),n===o&&t===d&&y.Range.areIntersectingOrTouching(a,l)){a=y.Range.plusRange(a,l);continue}n!==null&&this._renderNormalDecoration(f,a,n,u,t,s,i,g),n=o,t=d,a=l,u=(C=c.options.shouldFillLineOnLineBreak)!==null&&C!==void 0?C:!1}n!==null&&this._renderNormalDecoration(f,a,n,u,t,s,i,g)}_renderNormalDecoration(f,_,g,C,s,i,n,t){const a=f.linesVisibleRangesForRange(_,g===\"findMatch\");if(a)for(let u=0,h=a.length;u<h;u++){const r=a[u];if(r.outsideRenderedLine)continue;const c=r.lineNumber-n;if(s&&r.ranges.length===1){const o=r.ranges[0];if(o.width<this._typicalHalfwidthCharacterWidth){const d=Math.round(o.left+o.width/2),l=Math.max(0,Math.round(d-this._typicalHalfwidthCharacterWidth/2));r.ranges[0]=new k.HorizontalRange(l,this._typicalHalfwidthCharacterWidth)}}for(let o=0,d=r.ranges.length;o<d;o++){const l=C&&r.continuesOnNextLine&&d===1,p=r.ranges[o],m='<div class=\"cdr '+g+'\" style=\"left:'+String(p.left)+(l?\"px;width:100%;height:\":\"px;width:\"+String(p.width)+\"px;height:\")+i+'px;\"></div>';t[c]+=m}}}render(f,_){if(!this._renderResult)return\"\";const g=_-f;return g<0||g>=this._renderResult.length?\"\":this._renderResult[g]}}e.DecorationsOverlay=D}),define(ne[210],se([1,0,35,14,112,53,5,418]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.GlyphMarginWidgets=e.DedupOverlay=e.VisibleLineDecorationsToRender=e.LineDecorationToRender=e.DecorationToRender=void 0;class f{constructor(u,h,r,c){this._decorationToRenderBrand=void 0,this.startLineNumber=+u,this.endLineNumber=+h,this.className=String(r),this.zIndex=c??0}}e.DecorationToRender=f;class _{constructor(u,h){this.className=u,this.zIndex=h}}e.LineDecorationToRender=_;class g{constructor(){this.decorations=[]}add(u){this.decorations.push(u)}getDecorations(){return this.decorations}}e.VisibleLineDecorationsToRender=g;class C extends y.DynamicViewOverlay{_render(u,h,r){const c=[];for(let l=u;l<=h;l++){const p=l-u;c[p]=new g}if(r.length===0)return c;r.sort((l,p)=>l.className===p.className?l.startLineNumber===p.startLineNumber?l.endLineNumber-p.endLineNumber:l.startLineNumber-p.startLineNumber:l.className<p.className?-1:1);let o=null,d=0;for(let l=0,p=r.length;l<p;l++){const m=r[l],v=m.className,b=m.zIndex;let w=Math.max(m.startLineNumber,u)-u;const E=Math.min(m.endLineNumber,h)-u;o===v?(w=Math.max(d+1,w),d=Math.max(d,E)):(o=v,d=E);for(let I=w;I<=d;I++)c[I].add(new _(v,b))}return c}}e.DedupOverlay=C;class s extends D.ViewPart{constructor(u){super(u),this._widgets={},this._context=u;const h=this._context.configuration.options,r=h.get(142);this.domNode=(0,L.createFastDomNode)(document.createElement(\"div\")),this.domNode.setClassName(\"glyph-margin-widgets\"),this.domNode.setPosition(\"absolute\"),this.domNode.setTop(0),this._lineHeight=h.get(65),this._glyphMargin=h.get(56),this._glyphMarginLeft=r.glyphMarginLeft,this._glyphMarginWidth=r.glyphMarginWidth,this._glyphMarginDecorationLaneCount=r.glyphMarginDecorationLaneCount,this._managedDomNodes=[],this._decorationGlyphsToRender=[]}dispose(){this._managedDomNodes=[],this._decorationGlyphsToRender=[],this._widgets={},super.dispose()}getWidgets(){return Object.values(this._widgets)}onConfigurationChanged(u){const h=this._context.configuration.options,r=h.get(142);return this._lineHeight=h.get(65),this._glyphMargin=h.get(56),this._glyphMarginLeft=r.glyphMarginLeft,this._glyphMarginWidth=r.glyphMarginWidth,this._glyphMarginDecorationLaneCount=r.glyphMarginDecorationLaneCount,!0}onDecorationsChanged(u){return!0}onFlushed(u){return!0}onLinesChanged(u){return!0}onLinesDeleted(u){return!0}onLinesInserted(u){return!0}onScrollChanged(u){return u.scrollTopChanged}onZonesChanged(u){return!0}addWidget(u){const h=(0,L.createFastDomNode)(u.getDomNode());this._widgets[u.getId()]={widget:u,preference:u.getPosition(),domNode:h,renderInfo:null},h.setPosition(\"absolute\"),h.setDisplay(\"none\"),h.setAttribute(\"widgetId\",u.getId()),this.domNode.appendChild(h),this.setShouldRender()}setWidgetPosition(u,h){const r=this._widgets[u.getId()];return r.preference.lane===h.lane&&r.preference.zIndex===h.zIndex&&S.Range.equalsRange(r.preference.range,h.range)?!1:(r.preference=h,this.setShouldRender(),!0)}removeWidget(u){var h;const r=u.getId();if(this._widgets[r]){const o=this._widgets[r].domNode.domNode;delete this._widgets[r],(h=o.parentNode)===null||h===void 0||h.removeChild(o),this.setShouldRender()}}_collectDecorationBasedGlyphRenderRequest(u,h){var r,c,o;const d=u.visibleRange.startLineNumber,l=u.visibleRange.endLineNumber,p=u.getDecorationsInViewport();for(const m of p){const v=m.options.glyphMarginClassName;if(!v)continue;const b=Math.max(m.range.startLineNumber,d),w=Math.min(m.range.endLineNumber,l),E=Math.min((c=(r=m.options.glyphMargin)===null||r===void 0?void 0:r.position)!==null&&c!==void 0?c:1,this._glyphMarginDecorationLaneCount),I=(o=m.options.zIndex)!==null&&o!==void 0?o:0;for(let M=b;M<=w;M++)h.push(new i(M,E,I,v))}}_collectWidgetBasedGlyphRenderRequest(u,h){const r=u.visibleRange.startLineNumber,c=u.visibleRange.endLineNumber;for(const o of Object.values(this._widgets)){const d=o.preference.range;if(d.endLineNumber<r||d.startLineNumber>c)continue;const l=Math.max(d.startLineNumber,r),p=Math.min(o.preference.lane,this._glyphMarginDecorationLaneCount);h.push(new n(l,p,o.preference.zIndex,o))}}_collectSortedGlyphRenderRequests(u){const h=[];return this._collectDecorationBasedGlyphRenderRequest(u,h),this._collectWidgetBasedGlyphRenderRequest(u,h),h.sort((r,c)=>r.lineNumber===c.lineNumber?r.lane===c.lane?r.zIndex===c.zIndex?c.type===r.type?r.type===0&&c.type===0?r.className<c.className?-1:1:0:c.type-r.type:c.zIndex-r.zIndex:r.lane-c.lane:r.lineNumber-c.lineNumber),h}prepareRender(u){if(!this._glyphMargin){this._decorationGlyphsToRender=[];return}for(const c of Object.values(this._widgets))c.renderInfo=null;const h=new k.ArrayQueue(this._collectSortedGlyphRenderRequests(u)),r=[];for(;h.length>0;){const c=h.peek();if(!c)break;const o=h.takeWhile(l=>l.lineNumber===c.lineNumber&&l.lane===c.lane);if(!o||o.length===0)break;const d=o[0];if(d.type===0){const l=[];for(const p of o){if(p.zIndex!==d.zIndex||p.type!==d.type)break;(l.length===0||l[l.length-1]!==p.className)&&l.push(p.className)}r.push(d.accept(l.join(\" \")))}else d.widget.renderInfo={lineNumber:d.lineNumber,lane:d.lane}}this._decorationGlyphsToRender=r}render(u){if(!this._glyphMargin){for(const r of Object.values(this._widgets))r.domNode.setDisplay(\"none\");for(;this._managedDomNodes.length>0;){const r=this._managedDomNodes.pop();r?.domNode.remove()}return}const h=Math.round(this._glyphMarginWidth/this._glyphMarginDecorationLaneCount);for(const r of Object.values(this._widgets))if(!r.renderInfo)r.domNode.setDisplay(\"none\");else{const c=u.viewportData.relativeVerticalOffset[r.renderInfo.lineNumber-u.viewportData.startLineNumber],o=this._glyphMarginLeft+(r.renderInfo.lane-1)*this._lineHeight;r.domNode.setDisplay(\"block\"),r.domNode.setTop(c),r.domNode.setLeft(o),r.domNode.setWidth(h),r.domNode.setHeight(this._lineHeight)}for(let r=0;r<this._decorationGlyphsToRender.length;r++){const c=this._decorationGlyphsToRender[r],o=u.viewportData.relativeVerticalOffset[c.lineNumber-u.viewportData.startLineNumber],d=this._glyphMarginLeft+(c.lane-1)*this._lineHeight;let l;r<this._managedDomNodes.length?l=this._managedDomNodes[r]:(l=(0,L.createFastDomNode)(document.createElement(\"div\")),this._managedDomNodes.push(l),this.domNode.appendChild(l)),l.setClassName(\"cgmr codicon \"+c.combinedClassName),l.setPosition(\"absolute\"),l.setTop(o),l.setLeft(d),l.setWidth(h),l.setHeight(this._lineHeight)}for(;this._managedDomNodes.length>this._decorationGlyphsToRender.length;){const r=this._managedDomNodes.pop();r?.domNode.remove()}}}e.GlyphMarginWidgets=s;class i{constructor(u,h,r,c){this.lineNumber=u,this.lane=h,this.zIndex=r,this.className=c,this.type=0}accept(u){return new t(this.lineNumber,this.lane,u)}}class n{constructor(u,h,r,c){this.lineNumber=u,this.lane=h,this.zIndex=r,this.widget=c,this.type=1}}class t{constructor(u,h,r){this.lineNumber=u,this.lane=h,this.combinedClassName=r}}}),define(ne[523],se([1,0,210,422]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LinesDecorationsOverlay=void 0;class k extends L.DedupOverlay{constructor(D){super(),this._context=D;const f=this._context.configuration.options.get(142);this._decorationsLeft=f.decorationsLeft,this._decorationsWidth=f.decorationsWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(D){const f=this._context.configuration.options.get(142);return this._decorationsLeft=f.decorationsLeft,this._decorationsWidth=f.decorationsWidth,!0}onDecorationsChanged(D){return!0}onFlushed(D){return!0}onLinesChanged(D){return!0}onLinesDeleted(D){return!0}onLinesInserted(D){return!0}onScrollChanged(D){return D.scrollTopChanged}onZonesChanged(D){return!0}_getDecorations(D){const S=D.getDecorationsInViewport(),f=[];let _=0;for(let g=0,C=S.length;g<C;g++){const s=S[g],i=s.options.linesDecorationsClassName,n=s.options.zIndex;i&&(f[_++]=new L.DecorationToRender(s.range.startLineNumber,s.range.endLineNumber,i,n));const t=s.options.firstLineDecorationClassName;t&&(f[_++]=new L.DecorationToRender(s.range.startLineNumber,s.range.startLineNumber,t,n))}return f}prepareRender(D){const S=D.visibleRange.startLineNumber,f=D.visibleRange.endLineNumber,_=this._render(S,f,this._getDecorations(D)),g=this._decorationsLeft.toString(),C=this._decorationsWidth.toString(),s='\" style=\"left:'+g+\"px;width:\"+C+'px;\"></div>',i=[];for(let n=S;n<=f;n++){const t=n-S,a=_[t].getDecorations();let u=\"\";for(const h of a)u+='<div class=\"cldr '+h.className+s;i[t]=u}this._renderResult=i}render(D,S){return this._renderResult?this._renderResult[S-D]:\"\"}}e.LinesDecorationsOverlay=k}),define(ne[289],se([1,0,35,53,423]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Margin=void 0;class y extends k.ViewPart{constructor(S){super(S);const f=this._context.configuration.options,_=f.get(142);this._canUseLayerHinting=!f.get(31),this._contentLeft=_.contentLeft,this._glyphMarginLeft=_.glyphMarginLeft,this._glyphMarginWidth=_.glyphMarginWidth,this._domNode=(0,L.createFastDomNode)(document.createElement(\"div\")),this._domNode.setClassName(y.OUTER_CLASS_NAME),this._domNode.setPosition(\"absolute\"),this._domNode.setAttribute(\"role\",\"presentation\"),this._domNode.setAttribute(\"aria-hidden\",\"true\"),this._glyphMarginBackgroundDomNode=(0,L.createFastDomNode)(document.createElement(\"div\")),this._glyphMarginBackgroundDomNode.setClassName(y.CLASS_NAME),this._domNode.appendChild(this._glyphMarginBackgroundDomNode)}dispose(){super.dispose()}getDomNode(){return this._domNode}onConfigurationChanged(S){const f=this._context.configuration.options,_=f.get(142);return this._canUseLayerHinting=!f.get(31),this._contentLeft=_.contentLeft,this._glyphMarginLeft=_.glyphMarginLeft,this._glyphMarginWidth=_.glyphMarginWidth,!0}onScrollChanged(S){return super.onScrollChanged(S)||S.scrollTopChanged}prepareRender(S){}render(S){this._domNode.setLayerHinting(this._canUseLayerHinting),this._domNode.setContain(\"strict\");const f=S.scrollTop-S.bigNumbersDelta;this._domNode.setTop(-f);const _=Math.min(S.scrollHeight,1e6);this._domNode.setHeight(_),this._domNode.setWidth(this._contentLeft),this._glyphMarginBackgroundDomNode.setLeft(this._glyphMarginLeft),this._glyphMarginBackgroundDomNode.setWidth(this._glyphMarginWidth),this._glyphMarginBackgroundDomNode.setHeight(_)}}e.Margin=y,y.CLASS_NAME=\"glyph-margin\",y.OUTER_CLASS_NAME=\"margin\"}),define(ne[524],se([1,0,210,424]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MarginViewLineDecorationsOverlay=void 0;class k extends L.DedupOverlay{constructor(D){super(),this._context=D,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(D){return!0}onDecorationsChanged(D){return!0}onFlushed(D){return!0}onLinesChanged(D){return!0}onLinesDeleted(D){return!0}onLinesInserted(D){return!0}onScrollChanged(D){return D.scrollTopChanged}onZonesChanged(D){return!0}_getDecorations(D){const S=D.getDecorationsInViewport(),f=[];let _=0;for(let g=0,C=S.length;g<C;g++){const s=S[g],i=s.options.marginClassName,n=s.options.zIndex;i&&(f[_++]=new L.DecorationToRender(s.range.startLineNumber,s.range.endLineNumber,i,n))}return f}prepareRender(D){const S=D.visibleRange.startLineNumber,f=D.visibleRange.endLineNumber,_=this._render(S,f,this._getDecorations(D)),g=[];for(let C=S;C<=f;C++){const s=C-S,i=_[s].getDecorations();let n=\"\";for(const t of i)n+='<div class=\"cmdr '+t.className+'\" style=\"\"></div>';g[s]=n}this._renderResult=g}render(D,S){return this._renderResult?this._renderResult[S-D]:\"\"}}e.MarginViewLineDecorationsOverlay=k}),define(ne[525],se([1,0,35,53,426]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewOverlayWidgets=void 0;class y extends k.ViewPart{constructor(S){super(S);const _=this._context.configuration.options.get(142);this._widgets={},this._verticalScrollbarWidth=_.verticalScrollbarWidth,this._minimapWidth=_.minimap.minimapWidth,this._horizontalScrollbarHeight=_.horizontalScrollbarHeight,this._editorHeight=_.height,this._editorWidth=_.width,this._domNode=(0,L.createFastDomNode)(document.createElement(\"div\")),k.PartFingerprints.write(this._domNode,4),this._domNode.setClassName(\"overlayWidgets\")}dispose(){super.dispose(),this._widgets={}}getDomNode(){return this._domNode}onConfigurationChanged(S){const _=this._context.configuration.options.get(142);return this._verticalScrollbarWidth=_.verticalScrollbarWidth,this._minimapWidth=_.minimap.minimapWidth,this._horizontalScrollbarHeight=_.horizontalScrollbarHeight,this._editorHeight=_.height,this._editorWidth=_.width,!0}addWidget(S){const f=(0,L.createFastDomNode)(S.getDomNode());this._widgets[S.getId()]={widget:S,preference:null,domNode:f},f.setPosition(\"absolute\"),f.setAttribute(\"widgetId\",S.getId()),this._domNode.appendChild(f),this.setShouldRender(),this._updateMaxMinWidth()}setWidgetPosition(S,f){const _=this._widgets[S.getId()];return _.preference===f?(this._updateMaxMinWidth(),!1):(_.preference=f,this.setShouldRender(),this._updateMaxMinWidth(),!0)}removeWidget(S){const f=S.getId();if(this._widgets.hasOwnProperty(f)){const g=this._widgets[f].domNode.domNode;delete this._widgets[f],g.parentNode.removeChild(g),this.setShouldRender(),this._updateMaxMinWidth()}}_updateMaxMinWidth(){var S,f;let _=0;const g=Object.keys(this._widgets);for(let C=0,s=g.length;C<s;C++){const i=g[C],t=(f=(S=this._widgets[i].widget).getMinContentWidthInPx)===null||f===void 0?void 0:f.call(S);typeof t<\"u\"&&(_=Math.max(_,t))}this._context.viewLayout.setOverlayWidgetsMinWidth(_)}_renderWidget(S){const f=S.domNode;if(S.preference===null){f.setTop(\"\");return}if(S.preference===0)f.setTop(0),f.setRight(2*this._verticalScrollbarWidth+this._minimapWidth);else if(S.preference===1){const _=f.domNode.clientHeight;f.setTop(this._editorHeight-_-2*this._horizontalScrollbarHeight),f.setRight(2*this._verticalScrollbarWidth+this._minimapWidth)}else S.preference===2&&(f.setTop(0),f.domNode.style.right=\"50%\")}prepareRender(S){}render(S){this._domNode.setWidth(this._editorWidth);const f=Object.keys(this._widgets);for(let _=0,g=f.length;_<g;_++){const C=f[_];this._renderWidget(this._widgets[C])}}}e.ViewOverlayWidgets=y}),define(ne[526],se([1,0,35,53,427]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Rulers=void 0;class y extends k.ViewPart{constructor(S){super(S),this.domNode=(0,L.createFastDomNode)(document.createElement(\"div\")),this.domNode.setAttribute(\"role\",\"presentation\"),this.domNode.setAttribute(\"aria-hidden\",\"true\"),this.domNode.setClassName(\"view-rulers\"),this._renderedRulers=[];const f=this._context.configuration.options;this._rulers=f.get(100),this._typicalHalfwidthCharacterWidth=f.get(49).typicalHalfwidthCharacterWidth}dispose(){super.dispose()}onConfigurationChanged(S){const f=this._context.configuration.options;return this._rulers=f.get(100),this._typicalHalfwidthCharacterWidth=f.get(49).typicalHalfwidthCharacterWidth,!0}onScrollChanged(S){return S.scrollHeightChanged}prepareRender(S){}_ensureRulersCount(){const S=this._renderedRulers.length,f=this._rulers.length;if(S===f)return;if(S<f){const{tabSize:g}=this._context.viewModel.model.getOptions(),C=g;let s=f-S;for(;s>0;){const i=(0,L.createFastDomNode)(document.createElement(\"div\"));i.setClassName(\"view-ruler\"),i.setWidth(C),this.domNode.appendChild(i),this._renderedRulers.push(i),s--}return}let _=S-f;for(;_>0;){const g=this._renderedRulers.pop();this.domNode.removeChild(g),_--}}render(S){this._ensureRulersCount();for(let f=0,_=this._rulers.length;f<_;f++){const g=this._renderedRulers[f],C=this._rulers[f];g.setBoxShadow(C.color?`1px 0 0 0 ${C.color} inset`:\"\"),g.setHeight(Math.min(S.scrollHeight,1e6)),g.setLeft(C.column*this._typicalHalfwidthCharacterWidth)}}}e.Rulers=y}),define(ne[527],se([1,0,35,53,428]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ScrollDecorationViewPart=void 0;class y extends k.ViewPart{constructor(S){super(S),this._scrollTop=0,this._width=0,this._updateWidth(),this._shouldShow=!1;const _=this._context.configuration.options.get(101);this._useShadows=_.useShadows,this._domNode=(0,L.createFastDomNode)(document.createElement(\"div\")),this._domNode.setAttribute(\"role\",\"presentation\"),this._domNode.setAttribute(\"aria-hidden\",\"true\")}dispose(){super.dispose()}_updateShouldShow(){const S=this._useShadows&&this._scrollTop>0;return this._shouldShow!==S?(this._shouldShow=S,!0):!1}getDomNode(){return this._domNode}_updateWidth(){const f=this._context.configuration.options.get(142);f.minimap.renderMinimap===0||f.minimap.minimapWidth>0&&f.minimap.minimapLeft===0?this._width=f.width:this._width=f.width-f.verticalScrollbarWidth}onConfigurationChanged(S){const _=this._context.configuration.options.get(101);return this._useShadows=_.useShadows,this._updateWidth(),this._updateShouldShow(),!0}onScrollChanged(S){return this._scrollTop=S.scrollTop,this._updateShouldShow()}prepareRender(S){}render(S){this._domNode.setWidth(this._width),this._domNode.setClassName(this._shouldShow?\"scroll-decoration\":\"\")}}e.ScrollDecorationViewPart=y}),define(ne[528],se([1,0,35,9,53,12]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewZones=void 0;const S=()=>{throw new Error(\"Invalid change accessor\")};class f extends y.ViewPart{constructor(C){super(C);const s=this._context.configuration.options,i=s.get(142);this._lineHeight=s.get(65),this._contentWidth=i.contentWidth,this._contentLeft=i.contentLeft,this.domNode=(0,L.createFastDomNode)(document.createElement(\"div\")),this.domNode.setClassName(\"view-zones\"),this.domNode.setPosition(\"absolute\"),this.domNode.setAttribute(\"role\",\"presentation\"),this.domNode.setAttribute(\"aria-hidden\",\"true\"),this.marginDomNode=(0,L.createFastDomNode)(document.createElement(\"div\")),this.marginDomNode.setClassName(\"margin-view-zones\"),this.marginDomNode.setPosition(\"absolute\"),this.marginDomNode.setAttribute(\"role\",\"presentation\"),this.marginDomNode.setAttribute(\"aria-hidden\",\"true\"),this._zones={}}dispose(){super.dispose(),this._zones={}}_recomputeWhitespacesProps(){const C=this._context.viewLayout.getWhitespaces(),s=new Map;for(const n of C)s.set(n.id,n);let i=!1;return this._context.viewModel.changeWhitespace(n=>{const t=Object.keys(this._zones);for(let a=0,u=t.length;a<u;a++){const h=t[a],r=this._zones[h],c=this._computeWhitespaceProps(r.delegate);r.isInHiddenArea=c.isInHiddenArea;const o=s.get(h);o&&(o.afterLineNumber!==c.afterViewLineNumber||o.height!==c.heightInPx)&&(n.changeOneWhitespace(h,c.afterViewLineNumber,c.heightInPx),this._safeCallOnComputedHeight(r.delegate,c.heightInPx),i=!0)}}),i}onConfigurationChanged(C){const s=this._context.configuration.options,i=s.get(142);return this._lineHeight=s.get(65),this._contentWidth=i.contentWidth,this._contentLeft=i.contentLeft,C.hasChanged(65)&&this._recomputeWhitespacesProps(),!0}onLineMappingChanged(C){return this._recomputeWhitespacesProps()}onLinesDeleted(C){return!0}onScrollChanged(C){return C.scrollTopChanged||C.scrollWidthChanged}onZonesChanged(C){return!0}onLinesInserted(C){return!0}_getZoneOrdinal(C){var s,i;return(i=(s=C.ordinal)!==null&&s!==void 0?s:C.afterColumn)!==null&&i!==void 0?i:1e4}_computeWhitespaceProps(C){if(C.afterLineNumber===0)return{isInHiddenArea:!1,afterViewLineNumber:0,heightInPx:this._heightInPixels(C),minWidthInPx:this._minWidthInPixels(C)};let s;if(typeof C.afterColumn<\"u\")s=this._context.viewModel.model.validatePosition({lineNumber:C.afterLineNumber,column:C.afterColumn});else{const a=this._context.viewModel.model.validatePosition({lineNumber:C.afterLineNumber,column:1}).lineNumber;s=new D.Position(a,this._context.viewModel.model.getLineMaxColumn(a))}let i;s.column===this._context.viewModel.model.getLineMaxColumn(s.lineNumber)?i=this._context.viewModel.model.validatePosition({lineNumber:s.lineNumber+1,column:1}):i=this._context.viewModel.model.validatePosition({lineNumber:s.lineNumber,column:s.column+1});const n=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(s,C.afterColumnAffinity,!0),t=C.showInHiddenAreas||this._context.viewModel.coordinatesConverter.modelPositionIsVisible(i);return{isInHiddenArea:!t,afterViewLineNumber:n.lineNumber,heightInPx:t?this._heightInPixels(C):0,minWidthInPx:this._minWidthInPixels(C)}}changeViewZones(C){let s=!1;return this._context.viewModel.changeWhitespace(i=>{const n={addZone:t=>(s=!0,this._addZone(i,t)),removeZone:t=>{t&&(s=this._removeZone(i,t)||s)},layoutZone:t=>{t&&(s=this._layoutZone(i,t)||s)}};_(C,n),n.addZone=S,n.removeZone=S,n.layoutZone=S}),s}_addZone(C,s){const i=this._computeWhitespaceProps(s),t={whitespaceId:C.insertWhitespace(i.afterViewLineNumber,this._getZoneOrdinal(s),i.heightInPx,i.minWidthInPx),delegate:s,isInHiddenArea:i.isInHiddenArea,isVisible:!1,domNode:(0,L.createFastDomNode)(s.domNode),marginDomNode:s.marginDomNode?(0,L.createFastDomNode)(s.marginDomNode):null};return this._safeCallOnComputedHeight(t.delegate,i.heightInPx),t.domNode.setPosition(\"absolute\"),t.domNode.domNode.style.width=\"100%\",t.domNode.setDisplay(\"none\"),t.domNode.setAttribute(\"monaco-view-zone\",t.whitespaceId),this.domNode.appendChild(t.domNode),t.marginDomNode&&(t.marginDomNode.setPosition(\"absolute\"),t.marginDomNode.domNode.style.width=\"100%\",t.marginDomNode.setDisplay(\"none\"),t.marginDomNode.setAttribute(\"monaco-view-zone\",t.whitespaceId),this.marginDomNode.appendChild(t.marginDomNode)),this._zones[t.whitespaceId]=t,this.setShouldRender(),t.whitespaceId}_removeZone(C,s){if(this._zones.hasOwnProperty(s)){const i=this._zones[s];return delete this._zones[s],C.removeWhitespace(i.whitespaceId),i.domNode.removeAttribute(\"monaco-visible-view-zone\"),i.domNode.removeAttribute(\"monaco-view-zone\"),i.domNode.domNode.parentNode.removeChild(i.domNode.domNode),i.marginDomNode&&(i.marginDomNode.removeAttribute(\"monaco-visible-view-zone\"),i.marginDomNode.removeAttribute(\"monaco-view-zone\"),i.marginDomNode.domNode.parentNode.removeChild(i.marginDomNode.domNode)),this.setShouldRender(),!0}return!1}_layoutZone(C,s){if(this._zones.hasOwnProperty(s)){const i=this._zones[s],n=this._computeWhitespaceProps(i.delegate);return i.isInHiddenArea=n.isInHiddenArea,C.changeOneWhitespace(i.whitespaceId,n.afterViewLineNumber,n.heightInPx),this._safeCallOnComputedHeight(i.delegate,n.heightInPx),this.setShouldRender(),!0}return!1}shouldSuppressMouseDownOnViewZone(C){return this._zones.hasOwnProperty(C)?!!this._zones[C].delegate.suppressMouseDown:!1}_heightInPixels(C){return typeof C.heightInPx==\"number\"?C.heightInPx:typeof C.heightInLines==\"number\"?this._lineHeight*C.heightInLines:this._lineHeight}_minWidthInPixels(C){return typeof C.minWidthInPx==\"number\"?C.minWidthInPx:0}_safeCallOnComputedHeight(C,s){if(typeof C.onComputedHeight==\"function\")try{C.onComputedHeight(s)}catch(i){(0,k.onUnexpectedError)(i)}}_safeCallOnDomNodeTop(C,s){if(typeof C.onDomNodeTop==\"function\")try{C.onDomNodeTop(s)}catch(i){(0,k.onUnexpectedError)(i)}}prepareRender(C){}render(C){const s=C.viewportData.whitespaceViewportData,i={};let n=!1;for(const a of s)this._zones[a.id].isInHiddenArea||(i[a.id]=a,n=!0);const t=Object.keys(this._zones);for(let a=0,u=t.length;a<u;a++){const h=t[a],r=this._zones[h];let c=0,o=0,d=\"none\";i.hasOwnProperty(h)?(c=i[h].verticalOffset-C.bigNumbersDelta,o=i[h].height,d=\"block\",r.isVisible||(r.domNode.setAttribute(\"monaco-visible-view-zone\",\"true\"),r.isVisible=!0),this._safeCallOnDomNodeTop(r.delegate,C.getScrolledTopFromAbsoluteTop(i[h].verticalOffset))):(r.isVisible&&(r.domNode.removeAttribute(\"monaco-visible-view-zone\"),r.isVisible=!1),this._safeCallOnDomNodeTop(r.delegate,C.getScrolledTopFromAbsoluteTop(-1e6))),r.domNode.setTop(c),r.domNode.setHeight(o),r.domNode.setDisplay(d),r.marginDomNode&&(r.marginDomNode.setTop(c),r.marginDomNode.setHeight(o),r.marginDomNode.setDisplay(d))}n&&(this.domNode.setWidth(Math.max(C.scrollWidth,this._contentWidth)),this.marginDomNode.setWidth(this._contentLeft))}}e.ViewZones=f;function _(g,C){try{return g(C)}catch(s){(0,k.onUnexpectedError)(s)}}}),define(ne[211],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewZonesChangedEvent=e.ViewTokensColorsChangedEvent=e.ViewTokensChangedEvent=e.ViewThemeChangedEvent=e.ViewScrollChangedEvent=e.ViewRevealRangeRequestEvent=e.ViewLinesInsertedEvent=e.ViewLinesDeletedEvent=e.ViewLinesChangedEvent=e.ViewLineMappingChangedEvent=e.ViewLanguageConfigurationEvent=e.ViewFocusChangedEvent=e.ViewFlushedEvent=e.ViewDecorationsChangedEvent=e.ViewCursorStateChangedEvent=e.ViewConfigurationChangedEvent=e.ViewCompositionEndEvent=e.ViewCompositionStartEvent=void 0;class L{constructor(){this.type=0}}e.ViewCompositionStartEvent=L;class k{constructor(){this.type=1}}e.ViewCompositionEndEvent=k;class y{constructor(d){this.type=2,this._source=d}hasChanged(d){return this._source.hasChanged(d)}}e.ViewConfigurationChangedEvent=y;class D{constructor(d,l,p){this.selections=d,this.modelSelections=l,this.reason=p,this.type=3}}e.ViewCursorStateChangedEvent=D;class S{constructor(d){this.type=4,d?(this.affectsMinimap=d.affectsMinimap,this.affectsOverviewRuler=d.affectsOverviewRuler,this.affectsGlyphMargin=d.affectsGlyphMargin):(this.affectsMinimap=!0,this.affectsOverviewRuler=!0,this.affectsGlyphMargin=!0)}}e.ViewDecorationsChangedEvent=S;class f{constructor(){this.type=5}}e.ViewFlushedEvent=f;class _{constructor(d){this.type=6,this.isFocused=d}}e.ViewFocusChangedEvent=_;class g{constructor(){this.type=7}}e.ViewLanguageConfigurationEvent=g;class C{constructor(){this.type=8}}e.ViewLineMappingChangedEvent=C;class s{constructor(d,l){this.fromLineNumber=d,this.count=l,this.type=9}}e.ViewLinesChangedEvent=s;class i{constructor(d,l){this.type=10,this.fromLineNumber=d,this.toLineNumber=l}}e.ViewLinesDeletedEvent=i;class n{constructor(d,l){this.type=11,this.fromLineNumber=d,this.toLineNumber=l}}e.ViewLinesInsertedEvent=n;class t{constructor(d,l,p,m,v,b,w){this.source=d,this.minimalReveal=l,this.range=p,this.selections=m,this.verticalType=v,this.revealHorizontal=b,this.scrollType=w,this.type=12}}e.ViewRevealRangeRequestEvent=t;class a{constructor(d){this.type=13,this.scrollWidth=d.scrollWidth,this.scrollLeft=d.scrollLeft,this.scrollHeight=d.scrollHeight,this.scrollTop=d.scrollTop,this.scrollWidthChanged=d.scrollWidthChanged,this.scrollLeftChanged=d.scrollLeftChanged,this.scrollHeightChanged=d.scrollHeightChanged,this.scrollTopChanged=d.scrollTopChanged}}e.ViewScrollChangedEvent=a;class u{constructor(d){this.theme=d,this.type=14}}e.ViewThemeChangedEvent=u;class h{constructor(d){this.type=15,this.ranges=d}}e.ViewTokensChangedEvent=h;class r{constructor(){this.type=16}}e.ViewTokensColorsChangedEvent=r;class c{constructor(){this.type=17}}e.ViewZonesChangedEvent=c}),define(ne[127],se([1,0,11]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LineDecorationsNormalizer=e.DecorationSegment=e.LineDecoration=void 0;class k{constructor(_,g,C,s){this.startColumn=_,this.endColumn=g,this.className=C,this.type=s,this._lineDecorationBrand=void 0}static _equals(_,g){return _.startColumn===g.startColumn&&_.endColumn===g.endColumn&&_.className===g.className&&_.type===g.type}static equalsArr(_,g){const C=_.length,s=g.length;if(C!==s)return!1;for(let i=0;i<C;i++)if(!k._equals(_[i],g[i]))return!1;return!0}static extractWrapped(_,g,C){if(_.length===0)return _;const s=g+1,i=C+1,n=C-g,t=[];let a=0;for(const u of _)u.endColumn<=s||u.startColumn>=i||(t[a++]=new k(Math.max(1,u.startColumn-s+1),Math.min(n+1,u.endColumn-s+1),u.className,u.type));return t}static filter(_,g,C,s){if(_.length===0)return[];const i=[];let n=0;for(let t=0,a=_.length;t<a;t++){const u=_[t],h=u.range;if(h.endLineNumber<g||h.startLineNumber>g||h.isEmpty()&&(u.type===0||u.type===3))continue;const r=h.startLineNumber===g?h.startColumn:C,c=h.endLineNumber===g?h.endColumn:s;i[n++]=new k(r,c,u.inlineClassName,u.type)}return i}static _typeCompare(_,g){const C=[2,0,1,3];return C[_]-C[g]}static compare(_,g){if(_.startColumn!==g.startColumn)return _.startColumn-g.startColumn;if(_.endColumn!==g.endColumn)return _.endColumn-g.endColumn;const C=k._typeCompare(_.type,g.type);return C!==0?C:_.className!==g.className?_.className<g.className?-1:1:0}}e.LineDecoration=k;class y{constructor(_,g,C,s){this.startOffset=_,this.endOffset=g,this.className=C,this.metadata=s}}e.DecorationSegment=y;class D{constructor(){this.stopOffsets=[],this.classNames=[],this.metadata=[],this.count=0}static _metadata(_){let g=0;for(let C=0,s=_.length;C<s;C++)g|=_[C];return g}consumeLowerThan(_,g,C){for(;this.count>0&&this.stopOffsets[0]<_;){let s=0;for(;s+1<this.count&&this.stopOffsets[s]===this.stopOffsets[s+1];)s++;C.push(new y(g,this.stopOffsets[s],this.classNames.join(\" \"),D._metadata(this.metadata))),g=this.stopOffsets[s]+1,this.stopOffsets.splice(0,s+1),this.classNames.splice(0,s+1),this.metadata.splice(0,s+1),this.count-=s+1}return this.count>0&&g<_&&(C.push(new y(g,_-1,this.classNames.join(\" \"),D._metadata(this.metadata))),g=_),g}insert(_,g,C){if(this.count===0||this.stopOffsets[this.count-1]<=_)this.stopOffsets.push(_),this.classNames.push(g),this.metadata.push(C);else for(let s=0;s<this.count;s++)if(this.stopOffsets[s]>=_){this.stopOffsets.splice(s,0,_),this.classNames.splice(s,0,g),this.metadata.splice(s,0,C);break}this.count++}}class S{static normalize(_,g){if(g.length===0)return[];const C=[],s=new D;let i=0;for(let n=0,t=g.length;n<t;n++){const a=g[n];let u=a.startColumn,h=a.endColumn;const r=a.className,c=a.type===1?2:a.type===2?4:0;if(u>1){const l=_.charCodeAt(u-2);L.isHighSurrogate(l)&&u--}if(h>1){const l=_.charCodeAt(h-2);L.isHighSurrogate(l)&&h--}const o=u-1,d=h-2;i=s.consumeLowerThan(o,i,C),s.count===0&&(i=o),s.insert(d,r,c)}return s.consumeLowerThan(1073741824,i,C),C}}e.LineDecorationsNormalizer=S}),define(ne[529],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LinePart=void 0;class L{constructor(y,D,S,f){this.endIndex=y,this.type=D,this.metadata=S,this.containsRTL=f,this._linePartBrand=void 0}isWhitespace(){return!!(this.metadata&1)}isPseudoAfter(){return!!(this.metadata&4)}}e.LinePart=L}),define(ne[530],se([1,0,11]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LinesLayout=e.EditorWhitespace=void 0;class k{constructor(){this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[]}insert(f){this._hasPending=!0,this._inserts.push(f)}change(f){this._hasPending=!0,this._changes.push(f)}remove(f){this._hasPending=!0,this._removes.push(f)}mustCommit(){return this._hasPending}commit(f){if(!this._hasPending)return;const _=this._inserts,g=this._changes,C=this._removes;this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[],f._commitPendingChanges(_,g,C)}}class y{constructor(f,_,g,C,s){this.id=f,this.afterLineNumber=_,this.ordinal=g,this.height=C,this.minWidth=s,this.prefixSum=0}}e.EditorWhitespace=y;class D{constructor(f,_,g,C){this._instanceId=L.singleLetterHash(++D.INSTANCE_COUNT),this._pendingChanges=new k,this._lastWhitespaceId=0,this._arr=[],this._prefixSumValidIndex=-1,this._minWidth=-1,this._lineCount=f,this._lineHeight=_,this._paddingTop=g,this._paddingBottom=C}static findInsertionIndex(f,_,g){let C=0,s=f.length;for(;C<s;){const i=C+s>>>1;_===f[i].afterLineNumber?g<f[i].ordinal?s=i:C=i+1:_<f[i].afterLineNumber?s=i:C=i+1}return C}setLineHeight(f){this._checkPendingChanges(),this._lineHeight=f}setPadding(f,_){this._paddingTop=f,this._paddingBottom=_}onFlushed(f){this._checkPendingChanges(),this._lineCount=f}changeWhitespace(f){let _=!1;try{f({insertWhitespace:(C,s,i,n)=>{_=!0,C=C|0,s=s|0,i=i|0,n=n|0;const t=this._instanceId+ ++this._lastWhitespaceId;return this._pendingChanges.insert(new y(t,C,s,i,n)),t},changeOneWhitespace:(C,s,i)=>{_=!0,s=s|0,i=i|0,this._pendingChanges.change({id:C,newAfterLineNumber:s,newHeight:i})},removeWhitespace:C=>{_=!0,this._pendingChanges.remove({id:C})}})}finally{this._pendingChanges.commit(this)}return _}_commitPendingChanges(f,_,g){if((f.length>0||g.length>0)&&(this._minWidth=-1),f.length+_.length+g.length<=1){for(const t of f)this._insertWhitespace(t);for(const t of _)this._changeOneWhitespace(t.id,t.newAfterLineNumber,t.newHeight);for(const t of g){const a=this._findWhitespaceIndex(t.id);a!==-1&&this._removeWhitespace(a)}return}const C=new Set;for(const t of g)C.add(t.id);const s=new Map;for(const t of _)s.set(t.id,t);const i=t=>{const a=[];for(const u of t)if(!C.has(u.id)){if(s.has(u.id)){const h=s.get(u.id);u.afterLineNumber=h.newAfterLineNumber,u.height=h.newHeight}a.push(u)}return a},n=i(this._arr).concat(i(f));n.sort((t,a)=>t.afterLineNumber===a.afterLineNumber?t.ordinal-a.ordinal:t.afterLineNumber-a.afterLineNumber),this._arr=n,this._prefixSumValidIndex=-1}_checkPendingChanges(){this._pendingChanges.mustCommit()&&this._pendingChanges.commit(this)}_insertWhitespace(f){const _=D.findInsertionIndex(this._arr,f.afterLineNumber,f.ordinal);this._arr.splice(_,0,f),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,_-1)}_findWhitespaceIndex(f){const _=this._arr;for(let g=0,C=_.length;g<C;g++)if(_[g].id===f)return g;return-1}_changeOneWhitespace(f,_,g){const C=this._findWhitespaceIndex(f);if(C!==-1&&(this._arr[C].height!==g&&(this._arr[C].height=g,this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,C-1)),this._arr[C].afterLineNumber!==_)){const s=this._arr[C];this._removeWhitespace(C),s.afterLineNumber=_,this._insertWhitespace(s)}}_removeWhitespace(f){this._arr.splice(f,1),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,f-1)}onLinesDeleted(f,_){this._checkPendingChanges(),f=f|0,_=_|0,this._lineCount-=_-f+1;for(let g=0,C=this._arr.length;g<C;g++){const s=this._arr[g].afterLineNumber;f<=s&&s<=_?this._arr[g].afterLineNumber=f-1:s>_&&(this._arr[g].afterLineNumber-=_-f+1)}}onLinesInserted(f,_){this._checkPendingChanges(),f=f|0,_=_|0,this._lineCount+=_-f+1;for(let g=0,C=this._arr.length;g<C;g++){const s=this._arr[g].afterLineNumber;f<=s&&(this._arr[g].afterLineNumber+=_-f+1)}}getWhitespacesTotalHeight(){return this._checkPendingChanges(),this._arr.length===0?0:this.getWhitespacesAccumulatedHeight(this._arr.length-1)}getWhitespacesAccumulatedHeight(f){this._checkPendingChanges(),f=f|0;let _=Math.max(0,this._prefixSumValidIndex+1);_===0&&(this._arr[0].prefixSum=this._arr[0].height,_++);for(let g=_;g<=f;g++)this._arr[g].prefixSum=this._arr[g-1].prefixSum+this._arr[g].height;return this._prefixSumValidIndex=Math.max(this._prefixSumValidIndex,f),this._arr[f].prefixSum}getLinesTotalHeight(){this._checkPendingChanges();const f=this._lineHeight*this._lineCount,_=this.getWhitespacesTotalHeight();return f+_+this._paddingTop+this._paddingBottom}getWhitespaceAccumulatedHeightBeforeLineNumber(f){this._checkPendingChanges(),f=f|0;const _=this._findLastWhitespaceBeforeLineNumber(f);return _===-1?0:this.getWhitespacesAccumulatedHeight(_)}_findLastWhitespaceBeforeLineNumber(f){f=f|0;const _=this._arr;let g=0,C=_.length-1;for(;g<=C;){const i=(C-g|0)/2|0,n=g+i|0;if(_[n].afterLineNumber<f){if(n+1>=_.length||_[n+1].afterLineNumber>=f)return n;g=n+1|0}else C=n-1|0}return-1}_findFirstWhitespaceAfterLineNumber(f){f=f|0;const g=this._findLastWhitespaceBeforeLineNumber(f)+1;return g<this._arr.length?g:-1}getFirstWhitespaceIndexAfterLineNumber(f){return this._checkPendingChanges(),f=f|0,this._findFirstWhitespaceAfterLineNumber(f)}getVerticalOffsetForLineNumber(f,_=!1){this._checkPendingChanges(),f=f|0;let g;f>1?g=this._lineHeight*(f-1):g=0;const C=this.getWhitespaceAccumulatedHeightBeforeLineNumber(f-(_?1:0));return g+C+this._paddingTop}getVerticalOffsetAfterLineNumber(f,_=!1){this._checkPendingChanges(),f=f|0;const g=this._lineHeight*f,C=this.getWhitespaceAccumulatedHeightBeforeLineNumber(f+(_?1:0));return g+C+this._paddingTop}getWhitespaceMinWidth(){if(this._checkPendingChanges(),this._minWidth===-1){let f=0;for(let _=0,g=this._arr.length;_<g;_++)f=Math.max(f,this._arr[_].minWidth);this._minWidth=f}return this._minWidth}isAfterLines(f){this._checkPendingChanges();const _=this.getLinesTotalHeight();return f>_}isInTopPadding(f){return this._paddingTop===0?!1:(this._checkPendingChanges(),f<this._paddingTop)}isInBottomPadding(f){if(this._paddingBottom===0)return!1;this._checkPendingChanges();const _=this.getLinesTotalHeight();return f>=_-this._paddingBottom}getLineNumberAtOrAfterVerticalOffset(f){if(this._checkPendingChanges(),f=f|0,f<0)return 1;const _=this._lineCount|0,g=this._lineHeight;let C=1,s=_;for(;C<s;){const i=(C+s)/2|0,n=this.getVerticalOffsetForLineNumber(i)|0;if(f>=n+g)C=i+1;else{if(f>=n)return i;s=i}}return C>_?_:C}getLinesViewportData(f,_){this._checkPendingChanges(),f=f|0,_=_|0;const g=this._lineHeight,C=this.getLineNumberAtOrAfterVerticalOffset(f)|0,s=this.getVerticalOffsetForLineNumber(C)|0;let i=this._lineCount|0,n=this.getFirstWhitespaceIndexAfterLineNumber(C)|0;const t=this.getWhitespacesCount()|0;let a,u;n===-1?(n=t,u=i+1,a=0):(u=this.getAfterLineNumberForWhitespaceIndex(n)|0,a=this.getHeightForWhitespaceIndex(n)|0);let h=s,r=h;const c=5e5;let o=0;s>=c&&(o=Math.floor(s/c)*c,o=Math.floor(o/g)*g,r-=o);const d=[],l=f+(_-f)/2;let p=-1;for(let w=C;w<=i;w++){if(p===-1){const E=h,I=h+g;(E<=l&&l<I||E>l)&&(p=w)}for(h+=g,d[w-C]=r,r+=g;u===w;)r+=a,h+=a,n++,n>=t?u=i+1:(u=this.getAfterLineNumberForWhitespaceIndex(n)|0,a=this.getHeightForWhitespaceIndex(n)|0);if(h>=_){i=w;break}}p===-1&&(p=i);const m=this.getVerticalOffsetForLineNumber(i)|0;let v=C,b=i;return v<b&&s<f&&v++,v<b&&m+g>_&&b--,{bigNumbersDelta:o,startLineNumber:C,endLineNumber:i,relativeVerticalOffset:d,centeredLineNumber:p,completelyVisibleStartLineNumber:v,completelyVisibleEndLineNumber:b}}getVerticalOffsetForWhitespaceIndex(f){this._checkPendingChanges(),f=f|0;const _=this.getAfterLineNumberForWhitespaceIndex(f);let g;_>=1?g=this._lineHeight*_:g=0;let C;return f>0?C=this.getWhitespacesAccumulatedHeight(f-1):C=0,g+C+this._paddingTop}getWhitespaceIndexAtOrAfterVerticallOffset(f){this._checkPendingChanges(),f=f|0;let _=0,g=this.getWhitespacesCount()-1;if(g<0)return-1;const C=this.getVerticalOffsetForWhitespaceIndex(g),s=this.getHeightForWhitespaceIndex(g);if(f>=C+s)return-1;for(;_<g;){const i=Math.floor((_+g)/2),n=this.getVerticalOffsetForWhitespaceIndex(i),t=this.getHeightForWhitespaceIndex(i);if(f>=n+t)_=i+1;else{if(f>=n)return i;g=i}}return _}getWhitespaceAtVerticalOffset(f){this._checkPendingChanges(),f=f|0;const _=this.getWhitespaceIndexAtOrAfterVerticallOffset(f);if(_<0||_>=this.getWhitespacesCount())return null;const g=this.getVerticalOffsetForWhitespaceIndex(_);if(g>f)return null;const C=this.getHeightForWhitespaceIndex(_),s=this.getIdForWhitespaceIndex(_),i=this.getAfterLineNumberForWhitespaceIndex(_);return{id:s,afterLineNumber:i,verticalOffset:g,height:C}}getWhitespaceViewportData(f,_){this._checkPendingChanges(),f=f|0,_=_|0;const g=this.getWhitespaceIndexAtOrAfterVerticallOffset(f),C=this.getWhitespacesCount()-1;if(g<0)return[];const s=[];for(let i=g;i<=C;i++){const n=this.getVerticalOffsetForWhitespaceIndex(i),t=this.getHeightForWhitespaceIndex(i);if(n>=_)break;s.push({id:this.getIdForWhitespaceIndex(i),afterLineNumber:this.getAfterLineNumberForWhitespaceIndex(i),verticalOffset:n,height:t})}return s}getWhitespaces(){return this._checkPendingChanges(),this._arr.slice(0)}getWhitespacesCount(){return this._checkPendingChanges(),this._arr.length}getIdForWhitespaceIndex(f){return this._checkPendingChanges(),f=f|0,this._arr[f].id}getAfterLineNumberForWhitespaceIndex(f){return this._checkPendingChanges(),f=f|0,this._arr[f].afterLineNumber}getHeightForWhitespaceIndex(f){return this._checkPendingChanges(),f=f|0,this._arr[f].height}}e.LinesLayout=D,D.INSTANCE_COUNT=0}),define(ne[531],se([1,0,5]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewportData=void 0;class k{constructor(D,S,f,_){this.selections=D,this.startLineNumber=S.startLineNumber|0,this.endLineNumber=S.endLineNumber|0,this.relativeVerticalOffset=S.relativeVerticalOffset,this.bigNumbersDelta=S.bigNumbersDelta|0,this.whitespaceViewportData=f,this._model=_,this.visibleRange=new L.Range(S.startLineNumber,this._model.getLineMinColumn(S.startLineNumber),S.endLineNumber,this._model.getLineMaxColumn(S.endLineNumber))}getViewLineRenderingData(D){return this._model.getViewportViewLineRenderingData(this.visibleRange,D)}getDecorationsInViewport(){return this._model.getDecorationsInViewport(this.visibleRange)}}e.ViewportData=k}),define(ne[67],se([1,0,11,5]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OverviewRulerDecorationsGroup=e.ViewModelDecoration=e.SingleLineInlineDecoration=e.InlineDecoration=e.ViewLineRenderingData=e.ViewLineData=e.MinimapLinesRenderingData=e.Viewport=void 0;class y{constructor(n,t,a,u){this._viewportBrand=void 0,this.top=n|0,this.left=t|0,this.width=a|0,this.height=u|0}}e.Viewport=y;class D{constructor(n,t){this.tabSize=n,this.data=t}}e.MinimapLinesRenderingData=D;class S{constructor(n,t,a,u,h,r,c){this._viewLineDataBrand=void 0,this.content=n,this.continuesWithWrappedLine=t,this.minColumn=a,this.maxColumn=u,this.startVisibleColumn=h,this.tokens=r,this.inlineDecorations=c}}e.ViewLineData=S;class f{constructor(n,t,a,u,h,r,c,o,d,l){this.minColumn=n,this.maxColumn=t,this.content=a,this.continuesWithWrappedLine=u,this.isBasicASCII=f.isBasicASCII(a,r),this.containsRTL=f.containsRTL(a,this.isBasicASCII,h),this.tokens=c,this.inlineDecorations=o,this.tabSize=d,this.startVisibleColumn=l}static isBasicASCII(n,t){return t?L.isBasicASCII(n):!0}static containsRTL(n,t,a){return!t&&a?L.containsRTL(n):!1}}e.ViewLineRenderingData=f;class _{constructor(n,t,a){this.range=n,this.inlineClassName=t,this.type=a}}e.InlineDecoration=_;class g{constructor(n,t,a,u){this.startOffset=n,this.endOffset=t,this.inlineClassName=a,this.inlineClassNameAffectsLetterSpacing=u}toInlineDecoration(n){return new _(new k.Range(n,this.startOffset+1,n,this.endOffset+1),this.inlineClassName,this.inlineClassNameAffectsLetterSpacing?3:0)}}e.SingleLineInlineDecoration=g;class C{constructor(n,t){this._viewModelDecorationBrand=void 0,this.range=n,this.options=t}}e.ViewModelDecoration=C;class s{constructor(n,t,a){this.color=n,this.zIndex=t,this.data=a}static cmp(n,t){return n.zIndex===t.zIndex?n.color<t.color?-1:n.color>t.color?1:0:n.zIndex-t.zIndex}}e.OverviewRulerDecorationsGroup=s}),define(ne[532],se([1,0,86,12,111,67]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createModelLineProjection=void 0;function S(n,t){return n===null?t?_.INSTANCE:g.INSTANCE:new f(n,t)}e.createModelLineProjection=S;class f{constructor(t,a){this._projectionData=t,this._isVisible=a}isVisible(){return this._isVisible}setVisible(t){return this._isVisible=t,this}getProjectionData(){return this._projectionData}getViewLineCount(){return this._isVisible?this._projectionData.getOutputLineCount():0}getViewLineContent(t,a,u){this._assertVisible();const h=u>0?this._projectionData.breakOffsets[u-1]:0,r=this._projectionData.breakOffsets[u];let c;if(this._projectionData.injectionOffsets!==null){const o=this._projectionData.injectionOffsets.map((l,p)=>new y.LineInjectedText(0,0,l+1,this._projectionData.injectionOptions[p],0));c=y.LineInjectedText.applyInjectedText(t.getLineContent(a),o).substring(h,r)}else c=t.getValueInRange({startLineNumber:a,startColumn:h+1,endLineNumber:a,endColumn:r+1});return u>0&&(c=s(this._projectionData.wrappedTextIndentLength)+c),c}getViewLineLength(t,a,u){return this._assertVisible(),this._projectionData.getLineLength(u)}getViewLineMinColumn(t,a,u){return this._assertVisible(),this._projectionData.getMinOutputOffset(u)+1}getViewLineMaxColumn(t,a,u){return this._assertVisible(),this._projectionData.getMaxOutputOffset(u)+1}getViewLineData(t,a,u){const h=new Array;return this.getViewLinesData(t,a,u,1,0,[!0],h),h[0]}getViewLinesData(t,a,u,h,r,c,o){this._assertVisible();const d=this._projectionData,l=d.injectionOffsets,p=d.injectionOptions;let m=null;if(l){m=[];let b=0,w=0;for(let E=0;E<d.getOutputLineCount();E++){const I=new Array;m[E]=I;const M=E>0?d.breakOffsets[E-1]:0,P=d.breakOffsets[E];for(;w<l.length;){const x=p[w].content.length,T=l[w]+b,A=T+x;if(T>P)break;if(M<A){const N=p[w];if(N.inlineClassName){const F=E>0?d.wrappedTextIndentLength:0,O=F+Math.max(T-M,0),W=F+Math.min(A-M,P-M);O!==W&&I.push(new D.SingleLineInlineDecoration(O,W,N.inlineClassName,N.inlineClassNameAffectsLetterSpacing))}}if(A<=P)b+=x,w++;else break}}}let v;l?v=t.tokenization.getLineTokens(a).withInserted(l.map((b,w)=>({offset:b,text:p[w].content,tokenMetadata:L.LineTokens.defaultTokenMetadata}))):v=t.tokenization.getLineTokens(a);for(let b=u;b<u+h;b++){const w=r+b-u;if(!c[w]){o[w]=null;continue}o[w]=this._getViewLineData(v,m?m[b]:null,b)}}_getViewLineData(t,a,u){this._assertVisible();const h=this._projectionData,r=u>0?h.wrappedTextIndentLength:0,c=u>0?h.breakOffsets[u-1]:0,o=h.breakOffsets[u],d=t.sliceAndInflate(c,o,r);let l=d.getLineContent();u>0&&(l=s(h.wrappedTextIndentLength)+l);const p=this._projectionData.getMinOutputOffset(u)+1,m=l.length+1,v=u+1<this.getViewLineCount(),b=u===0?0:h.breakOffsetsVisibleColumn[u-1];return new D.ViewLineData(l,v,p,m,b,d,a)}getModelColumnOfViewPosition(t,a){return this._assertVisible(),this._projectionData.translateToInputOffset(t,a-1)+1}getViewPositionOfModelPosition(t,a,u=2){return this._assertVisible(),this._projectionData.translateToOutputPosition(a-1,u).toPosition(t)}getViewLineNumberOfModelPosition(t,a){this._assertVisible();const u=this._projectionData.translateToOutputPosition(a-1);return t+u.outputLineIndex}normalizePosition(t,a,u){const h=a.lineNumber-t;return this._projectionData.normalizeOutputPosition(t,a.column-1,u).toPosition(h)}getInjectedTextAt(t,a){return this._projectionData.getInjectedText(t,a-1)}_assertVisible(){if(!this._isVisible)throw new Error(\"Not supported\")}}class _{constructor(){}isVisible(){return!0}setVisible(t){return t?this:g.INSTANCE}getProjectionData(){return null}getViewLineCount(){return 1}getViewLineContent(t,a,u){return t.getLineContent(a)}getViewLineLength(t,a,u){return t.getLineLength(a)}getViewLineMinColumn(t,a,u){return t.getLineMinColumn(a)}getViewLineMaxColumn(t,a,u){return t.getLineMaxColumn(a)}getViewLineData(t,a,u){const h=t.tokenization.getLineTokens(a),r=h.getLineContent();return new D.ViewLineData(r,!1,1,r.length+1,0,h.inflate(),null)}getViewLinesData(t,a,u,h,r,c,o){if(!c[r]){o[r]=null;return}o[r]=this.getViewLineData(t,a,0)}getModelColumnOfViewPosition(t,a){return a}getViewPositionOfModelPosition(t,a){return new k.Position(t,a)}getViewLineNumberOfModelPosition(t,a){return t}normalizePosition(t,a,u){return a}getInjectedTextAt(t,a){return null}}_.INSTANCE=new _;class g{constructor(){}isVisible(){return!1}setVisible(t){return t?_.INSTANCE:this}getProjectionData(){return null}getViewLineCount(){return 0}getViewLineContent(t,a,u){throw new Error(\"Not supported\")}getViewLineLength(t,a,u){throw new Error(\"Not supported\")}getViewLineMinColumn(t,a,u){throw new Error(\"Not supported\")}getViewLineMaxColumn(t,a,u){throw new Error(\"Not supported\")}getViewLineData(t,a,u){throw new Error(\"Not supported\")}getViewLinesData(t,a,u,h,r,c,o){throw new Error(\"Not supported\")}getModelColumnOfViewPosition(t,a){throw new Error(\"Not supported\")}getViewPositionOfModelPosition(t,a){throw new Error(\"Not supported\")}getViewLineNumberOfModelPosition(t,a){throw new Error(\"Not supported\")}normalizePosition(t,a,u){throw new Error(\"Not supported\")}getInjectedTextAt(t,a){throw new Error(\"Not supported\")}}g.INSTANCE=new g;const C=[\"\"];function s(n){if(n>=C.length)for(let t=1;t<=n;t++)C[t]=i(t);return C[n]}function i(n){return new Array(n+1).join(\" \")}}),define(ne[533],se([1,0,11,121,111,284]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MonospaceLineBreaksComputerFactory=void 0;class S{static create(h){return new S(h.get(131),h.get(130))}constructor(h,r){this.classifier=new f(h,r)}createLineBreaksComputer(h,r,c,o,d){const l=[],p=[],m=[];return{addRequest:(v,b,w)=>{l.push(v),p.push(b),m.push(w)},finalize:()=>{const v=h.typicalFullwidthCharacterWidth/h.typicalHalfwidthCharacterWidth,b=[];for(let w=0,E=l.length;w<E;w++){const I=p[w],M=m[w];M&&!M.injectionOptions&&!I?b[w]=C(this.classifier,M,l[w],r,c,v,o,d):b[w]=s(this.classifier,l[w],I,r,c,v,o,d)}return _.length=0,g.length=0,b}}}}e.MonospaceLineBreaksComputerFactory=S;class f extends k.CharacterClassifier{constructor(h,r){super(0);for(let c=0;c<h.length;c++)this.set(h.charCodeAt(c),1);for(let c=0;c<r.length;c++)this.set(r.charCodeAt(c),2)}get(h){return h>=0&&h<256?this._asciiMap[h]:h>=12352&&h<=12543||h>=13312&&h<=19903||h>=19968&&h<=40959?3:this._map.get(h)||this._defaultValue}}let _=[],g=[];function C(u,h,r,c,o,d,l,p){if(o===-1)return null;const m=r.length;if(m<=1)return null;const v=p===\"keepAll\",b=h.breakOffsets,w=h.breakOffsetsVisibleColumn,E=a(r,c,o,d,l),I=o-E,M=_,P=g;let x=0,T=0,A=0,N=o;const F=b.length;let O=0;if(O>=0){let W=Math.abs(w[O]-N);for(;O+1<F;){const U=Math.abs(w[O+1]-N);if(U>=W)break;W=U,O++}}for(;O<F;){let W=O<0?0:b[O],U=O<0?0:w[O];T>W&&(W=T,U=A);let j=0,R=0,K=0,G=0;if(U<=N){let J=U,X=W===0?0:r.charCodeAt(W-1),H=W===0?0:u.get(X),B=!0;for(let V=W;V<m;V++){const Y=V,ie=r.charCodeAt(V);let ae,ce;if(L.isHighSurrogate(ie)?(V++,ae=0,ce=2):(ae=u.get(ie),ce=i(ie,J,c,d)),Y>T&&t(X,H,ie,ae,v)&&(j=Y,R=J),J+=ce,J>N){Y>T?(K=Y,G=J-ce):(K=V+1,G=J),J-R>I&&(j=0),B=!1;break}X=ie,H=ae}if(B){x>0&&(M[x]=b[b.length-1],P[x]=w[b.length-1],x++);break}}if(j===0){let J=U,X=r.charCodeAt(W),H=u.get(X),B=!1;for(let V=W-1;V>=T;V--){const Y=V+1,ie=r.charCodeAt(V);if(ie===9){B=!0;break}let ae,ce;if(L.isLowSurrogate(ie)?(V--,ae=0,ce=2):(ae=u.get(ie),ce=L.isFullWidthCharacter(ie)?d:1),J<=N){if(K===0&&(K=Y,G=J),J<=N-I)break;if(t(ie,ae,X,H,v)){j=Y,R=J;break}}J-=ce,X=ie,H=ae}if(j!==0){const V=I-(G-R);if(V<=c){const Y=r.charCodeAt(K);let ie;L.isHighSurrogate(Y)?ie=2:ie=i(Y,G,c,d),V-ie<0&&(j=0)}}if(B){O--;continue}}if(j===0&&(j=K,R=G),j<=T){const J=r.charCodeAt(T);L.isHighSurrogate(J)?(j=T+2,R=A+2):(j=T+1,R=A+i(J,A,c,d))}for(T=j,M[x]=j,A=R,P[x]=R,x++,N=R+I;O<0||O<F&&w[O]<R;)O++;let Z=Math.abs(w[O]-N);for(;O+1<F;){const J=Math.abs(w[O+1]-N);if(J>=Z)break;Z=J,O++}}return x===0?null:(M.length=x,P.length=x,_=h.breakOffsets,g=h.breakOffsetsVisibleColumn,h.breakOffsets=M,h.breakOffsetsVisibleColumn=P,h.wrappedTextIndentLength=E,h)}function s(u,h,r,c,o,d,l,p){const m=y.LineInjectedText.applyInjectedText(h,r);let v,b;if(r&&r.length>0?(v=r.map(R=>R.options),b=r.map(R=>R.column-1)):(v=null,b=null),o===-1)return v?new D.ModelLineProjectionData(b,v,[m.length],[],0):null;const w=m.length;if(w<=1)return v?new D.ModelLineProjectionData(b,v,[m.length],[],0):null;const E=p===\"keepAll\",I=a(m,c,o,d,l),M=o-I,P=[],x=[];let T=0,A=0,N=0,F=o,O=m.charCodeAt(0),W=u.get(O),U=i(O,0,c,d),j=1;L.isHighSurrogate(O)&&(U+=1,O=m.charCodeAt(1),W=u.get(O),j++);for(let R=j;R<w;R++){const K=R,G=m.charCodeAt(R);let Z,J;L.isHighSurrogate(G)?(R++,Z=0,J=2):(Z=u.get(G),J=i(G,U,c,d)),t(O,W,G,Z,E)&&(A=K,N=U),U+=J,U>F&&((A===0||U-N>M)&&(A=K,N=U-J),P[T]=A,x[T]=N,T++,F=N+M,A=0),O=G,W=Z}return T===0&&(!r||r.length===0)?null:(P[T]=w,x[T]=U,new D.ModelLineProjectionData(b,v,P,x,I))}function i(u,h,r,c){return u===9?r-h%r:L.isFullWidthCharacter(u)||u<32?c:1}function n(u,h){return h-u%h}function t(u,h,r,c,o){return r!==32&&(h===2&&c!==2||h!==1&&c===1||!o&&h===3&&c!==2||!o&&c===3&&h!==1)}function a(u,h,r,c,o){let d=0;if(o!==0){const l=L.firstNonWhitespaceIndex(u);if(l!==-1){for(let m=0;m<l;m++){const v=u.charCodeAt(m)===9?n(d,h):1;d+=v}const p=o===3?2:o===2?1:0;for(let m=0;m<p;m++){const v=n(d,h);d+=v}d+c>r&&(d=0)}}return d}}),define(ne[212],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OverviewZoneManager=e.OverviewRulerZone=e.ColorZone=void 0;class L{constructor(S,f,_){this._colorZoneBrand=void 0,this.from=S|0,this.to=f|0,this.colorId=_|0}static compare(S,f){return S.colorId===f.colorId?S.from===f.from?S.to-f.to:S.from-f.from:S.colorId-f.colorId}}e.ColorZone=L;class k{constructor(S,f,_,g){this._overviewRulerZoneBrand=void 0,this.startLineNumber=S,this.endLineNumber=f,this.heightInLines=_,this.color=g,this._colorZone=null}static compare(S,f){return S.color===f.color?S.startLineNumber===f.startLineNumber?S.heightInLines===f.heightInLines?S.endLineNumber-f.endLineNumber:S.heightInLines-f.heightInLines:S.startLineNumber-f.startLineNumber:S.color<f.color?-1:1}setColorZone(S){this._colorZone=S}getColorZones(){return this._colorZone}}e.OverviewRulerZone=k;class y{constructor(S){this._getVerticalOffsetForLine=S,this._zones=[],this._colorZonesInvalid=!1,this._lineHeight=0,this._domWidth=0,this._domHeight=0,this._outerHeight=0,this._pixelRatio=1,this._lastAssignedId=0,this._color2Id=Object.create(null),this._id2Color=[]}getId2Color(){return this._id2Color}setZones(S){this._zones=S,this._zones.sort(k.compare)}setLineHeight(S){return this._lineHeight===S?!1:(this._lineHeight=S,this._colorZonesInvalid=!0,!0)}setPixelRatio(S){this._pixelRatio=S,this._colorZonesInvalid=!0}getDOMWidth(){return this._domWidth}getCanvasWidth(){return this._domWidth*this._pixelRatio}setDOMWidth(S){return this._domWidth===S?!1:(this._domWidth=S,this._colorZonesInvalid=!0,!0)}getDOMHeight(){return this._domHeight}getCanvasHeight(){return this._domHeight*this._pixelRatio}setDOMHeight(S){return this._domHeight===S?!1:(this._domHeight=S,this._colorZonesInvalid=!0,!0)}getOuterHeight(){return this._outerHeight}setOuterHeight(S){return this._outerHeight===S?!1:(this._outerHeight=S,this._colorZonesInvalid=!0,!0)}resolveColorZones(){const S=this._colorZonesInvalid,f=Math.floor(this._lineHeight),_=Math.floor(this.getCanvasHeight()),g=Math.floor(this._outerHeight),C=_/g,s=Math.floor(4*this._pixelRatio/2),i=[];for(let n=0,t=this._zones.length;n<t;n++){const a=this._zones[n];if(!S){const v=a.getColorZones();if(v){i.push(v);continue}}const u=this._getVerticalOffsetForLine(a.startLineNumber),h=a.heightInLines===0?this._getVerticalOffsetForLine(a.endLineNumber)+f:u+a.heightInLines*f,r=Math.floor(C*u),c=Math.floor(C*h);let o=Math.floor((r+c)/2),d=c-o;d<s&&(d=s),o-d<0&&(o=d),o+d>_&&(o=_-d);const l=a.color;let p=this._color2Id[l];p||(p=++this._lastAssignedId,this._color2Id[l]=p,this._id2Color[p]=l);const m=new L(o-d,o+d,p);a.setColorZone(m),i.push(m)}return this._colorZonesInvalid=!1,i.sort(L.compare),i}}e.OverviewZoneManager=y}),define(ne[534],se([1,0,35,212,150]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OverviewRuler=void 0;class D extends y.ViewEventHandler{constructor(f,_){super(),this._context=f;const g=this._context.configuration.options;this._domNode=(0,L.createFastDomNode)(document.createElement(\"canvas\")),this._domNode.setClassName(_),this._domNode.setPosition(\"absolute\"),this._domNode.setLayerHinting(!0),this._domNode.setContain(\"strict\"),this._zoneManager=new k.OverviewZoneManager(C=>this._context.viewLayout.getVerticalOffsetForLineNumber(C)),this._zoneManager.setDOMWidth(0),this._zoneManager.setDOMHeight(0),this._zoneManager.setOuterHeight(this._context.viewLayout.getScrollHeight()),this._zoneManager.setLineHeight(g.get(65)),this._zoneManager.setPixelRatio(g.get(140)),this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}onConfigurationChanged(f){const _=this._context.configuration.options;return f.hasChanged(65)&&(this._zoneManager.setLineHeight(_.get(65)),this._render()),f.hasChanged(140)&&(this._zoneManager.setPixelRatio(_.get(140)),this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render()),!0}onFlushed(f){return this._render(),!0}onScrollChanged(f){return f.scrollHeightChanged&&(this._zoneManager.setOuterHeight(f.scrollHeight),this._render()),!0}onZonesChanged(f){return this._render(),!0}getDomNode(){return this._domNode.domNode}setLayout(f){this._domNode.setTop(f.top),this._domNode.setRight(f.right);let _=!1;_=this._zoneManager.setDOMWidth(f.width)||_,_=this._zoneManager.setDOMHeight(f.height)||_,_&&(this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render())}setZones(f){this._zoneManager.setZones(f),this._render()}_render(){if(this._zoneManager.getOuterHeight()===0)return!1;const f=this._zoneManager.getCanvasWidth(),_=this._zoneManager.getCanvasHeight(),g=this._zoneManager.resolveColorZones(),C=this._zoneManager.getId2Color(),s=this._domNode.domNode.getContext(\"2d\");return s.clearRect(0,0,f,_),g.length>0&&this._renderOneLane(s,g,C,f),!0}_renderOneLane(f,_,g,C){let s=0,i=0,n=0;for(const t of _){const a=t.colorId,u=t.from,h=t.to;a!==s?(f.fillRect(0,i,C,n-i),s=a,f.fillStyle=g[s],i=u,n=h):n>=u?n=Math.max(n,h):(f.fillRect(0,i,C,n-i),i=u,n=h)}f.fillRect(0,i,C,n-i)}}e.OverviewRuler=D}),define(ne[535],se([1,0,493]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewContext=void 0;class k{constructor(D,S,f){this.configuration=D,this.theme=new L.EditorTheme(S),this.viewModel=f,this.viewLayout=f.viewLayout}addEventHandler(D){this.viewModel.addViewEventHandler(D)}removeEventHandler(D){this.viewModel.removeViewEventHandler(D)}}e.ViewContext=k}),define(ne[213],se([1,0,6,2]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ModelTokensChangedEvent=e.ModelOptionsChangedEvent=e.ModelContentChangedEvent=e.ModelLanguageConfigurationChangedEvent=e.ModelLanguageChangedEvent=e.ModelDecorationsChangedEvent=e.ReadOnlyEditAttemptEvent=e.CursorStateChangedEvent=e.HiddenAreasChangedEvent=e.ViewZonesChangedEvent=e.ScrollChangedEvent=e.FocusChangedEvent=e.ContentSizeChangedEvent=e.ViewModelEventsCollector=e.ViewModelEventDispatcher=void 0;class y extends k.Disposable{constructor(){super(),this._onEvent=this._register(new L.Emitter),this.onEvent=this._onEvent.event,this._eventHandlers=[],this._viewEventQueue=null,this._isConsumingViewEventQueue=!1,this._collector=null,this._collectorCnt=0,this._outgoingEvents=[]}emitOutgoingEvent(o){this._addOutgoingEvent(o),this._emitOutgoingEvents()}_addOutgoingEvent(o){for(let d=0,l=this._outgoingEvents.length;d<l;d++){const p=this._outgoingEvents[d].kind===o.kind?this._outgoingEvents[d].attemptToMerge(o):null;if(p){this._outgoingEvents[d]=p;return}}this._outgoingEvents.push(o)}_emitOutgoingEvents(){for(;this._outgoingEvents.length>0;){if(this._collector||this._isConsumingViewEventQueue)return;const o=this._outgoingEvents.shift();o.isNoOp()||this._onEvent.fire(o)}}addViewEventHandler(o){for(let d=0,l=this._eventHandlers.length;d<l;d++)this._eventHandlers[d]===o&&console.warn(\"Detected duplicate listener in ViewEventDispatcher\",o);this._eventHandlers.push(o)}removeViewEventHandler(o){for(let d=0;d<this._eventHandlers.length;d++)if(this._eventHandlers[d]===o){this._eventHandlers.splice(d,1);break}}beginEmitViewEvents(){return this._collectorCnt++,this._collectorCnt===1&&(this._collector=new D),this._collector}endEmitViewEvents(){if(this._collectorCnt--,this._collectorCnt===0){const o=this._collector.outgoingEvents,d=this._collector.viewEvents;this._collector=null;for(const l of o)this._addOutgoingEvent(l);d.length>0&&this._emitMany(d)}this._emitOutgoingEvents()}emitSingleViewEvent(o){try{this.beginEmitViewEvents().emitViewEvent(o)}finally{this.endEmitViewEvents()}}_emitMany(o){this._viewEventQueue?this._viewEventQueue=this._viewEventQueue.concat(o):this._viewEventQueue=o,this._isConsumingViewEventQueue||this._consumeViewEventQueue()}_consumeViewEventQueue(){try{this._isConsumingViewEventQueue=!0,this._doConsumeQueue()}finally{this._isConsumingViewEventQueue=!1}}_doConsumeQueue(){for(;this._viewEventQueue;){const o=this._viewEventQueue;this._viewEventQueue=null;const d=this._eventHandlers.slice(0);for(const l of d)l.handleEvents(o)}}}e.ViewModelEventDispatcher=y;class D{constructor(){this.viewEvents=[],this.outgoingEvents=[]}emitViewEvent(o){this.viewEvents.push(o)}emitOutgoingEvent(o){this.outgoingEvents.push(o)}}e.ViewModelEventsCollector=D;class S{constructor(o,d,l,p){this.kind=0,this._oldContentWidth=o,this._oldContentHeight=d,this.contentWidth=l,this.contentHeight=p,this.contentWidthChanged=this._oldContentWidth!==this.contentWidth,this.contentHeightChanged=this._oldContentHeight!==this.contentHeight}isNoOp(){return!this.contentWidthChanged&&!this.contentHeightChanged}attemptToMerge(o){return o.kind!==this.kind?null:new S(this._oldContentWidth,this._oldContentHeight,o.contentWidth,o.contentHeight)}}e.ContentSizeChangedEvent=S;class f{constructor(o,d){this.kind=1,this.oldHasFocus=o,this.hasFocus=d}isNoOp(){return this.oldHasFocus===this.hasFocus}attemptToMerge(o){return o.kind!==this.kind?null:new f(this.oldHasFocus,o.hasFocus)}}e.FocusChangedEvent=f;class _{constructor(o,d,l,p,m,v,b,w){this.kind=2,this._oldScrollWidth=o,this._oldScrollLeft=d,this._oldScrollHeight=l,this._oldScrollTop=p,this.scrollWidth=m,this.scrollLeft=v,this.scrollHeight=b,this.scrollTop=w,this.scrollWidthChanged=this._oldScrollWidth!==this.scrollWidth,this.scrollLeftChanged=this._oldScrollLeft!==this.scrollLeft,this.scrollHeightChanged=this._oldScrollHeight!==this.scrollHeight,this.scrollTopChanged=this._oldScrollTop!==this.scrollTop}isNoOp(){return!this.scrollWidthChanged&&!this.scrollLeftChanged&&!this.scrollHeightChanged&&!this.scrollTopChanged}attemptToMerge(o){return o.kind!==this.kind?null:new _(this._oldScrollWidth,this._oldScrollLeft,this._oldScrollHeight,this._oldScrollTop,o.scrollWidth,o.scrollLeft,o.scrollHeight,o.scrollTop)}}e.ScrollChangedEvent=_;class g{constructor(){this.kind=3}isNoOp(){return!1}attemptToMerge(o){return o.kind!==this.kind?null:this}}e.ViewZonesChangedEvent=g;class C{constructor(){this.kind=4}isNoOp(){return!1}attemptToMerge(o){return o.kind!==this.kind?null:this}}e.HiddenAreasChangedEvent=C;class s{constructor(o,d,l,p,m,v,b){this.kind=6,this.oldSelections=o,this.selections=d,this.oldModelVersionId=l,this.modelVersionId=p,this.source=m,this.reason=v,this.reachedMaxCursorCount=b}static _selectionsAreEqual(o,d){if(!o&&!d)return!0;if(!o||!d)return!1;const l=o.length,p=d.length;if(l!==p)return!1;for(let m=0;m<l;m++)if(!o[m].equalsSelection(d[m]))return!1;return!0}isNoOp(){return s._selectionsAreEqual(this.oldSelections,this.selections)&&this.oldModelVersionId===this.modelVersionId}attemptToMerge(o){return o.kind!==this.kind?null:new s(this.oldSelections,o.selections,this.oldModelVersionId,o.modelVersionId,o.source,o.reason,this.reachedMaxCursorCount||o.reachedMaxCursorCount)}}e.CursorStateChangedEvent=s;class i{constructor(){this.kind=5}isNoOp(){return!1}attemptToMerge(o){return o.kind!==this.kind?null:this}}e.ReadOnlyEditAttemptEvent=i;class n{constructor(o){this.event=o,this.kind=7}isNoOp(){return!1}attemptToMerge(o){return null}}e.ModelDecorationsChangedEvent=n;class t{constructor(o){this.event=o,this.kind=8}isNoOp(){return!1}attemptToMerge(o){return null}}e.ModelLanguageChangedEvent=t;class a{constructor(o){this.event=o,this.kind=9}isNoOp(){return!1}attemptToMerge(o){return null}}e.ModelLanguageConfigurationChangedEvent=a;class u{constructor(o){this.event=o,this.kind=10}isNoOp(){return!1}attemptToMerge(o){return null}}e.ModelContentChangedEvent=u;class h{constructor(o){this.event=o,this.kind=11}isNoOp(){return!1}attemptToMerge(o){return null}}e.ModelOptionsChangedEvent=h;class r{constructor(o){this.event=o,this.kind=12}isNoOp(){return!1}attemptToMerge(o){return null}}e.ModelTokensChangedEvent=r}),define(ne[536],se([1,0,6,2,167,530,67,213]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewLayout=void 0;const _=125;class g{constructor(n,t,a,u){n=n|0,t=t|0,a=a|0,u=u|0,n<0&&(n=0),t<0&&(t=0),a<0&&(a=0),u<0&&(u=0),this.width=n,this.contentWidth=t,this.scrollWidth=Math.max(n,t),this.height=a,this.contentHeight=u,this.scrollHeight=Math.max(a,u)}equals(n){return this.width===n.width&&this.contentWidth===n.contentWidth&&this.height===n.height&&this.contentHeight===n.contentHeight}}class C extends k.Disposable{constructor(n,t){super(),this._onDidContentSizeChange=this._register(new L.Emitter),this.onDidContentSizeChange=this._onDidContentSizeChange.event,this._dimensions=new g(0,0,0,0),this._scrollable=this._register(new y.Scrollable({forceIntegerValues:!0,smoothScrollDuration:n,scheduleAtNextAnimationFrame:t})),this.onDidScroll=this._scrollable.onScroll}getScrollable(){return this._scrollable}setSmoothScrollDuration(n){this._scrollable.setSmoothScrollDuration(n)}validateScrollPosition(n){return this._scrollable.validateScrollPosition(n)}getScrollDimensions(){return this._dimensions}setScrollDimensions(n){if(this._dimensions.equals(n))return;const t=this._dimensions;this._dimensions=n,this._scrollable.setScrollDimensions({width:n.width,scrollWidth:n.scrollWidth,height:n.height,scrollHeight:n.scrollHeight},!0);const a=t.contentWidth!==n.contentWidth,u=t.contentHeight!==n.contentHeight;(a||u)&&this._onDidContentSizeChange.fire(new f.ContentSizeChangedEvent(t.contentWidth,t.contentHeight,n.contentWidth,n.contentHeight))}getFutureScrollPosition(){return this._scrollable.getFutureScrollPosition()}getCurrentScrollPosition(){return this._scrollable.getCurrentScrollPosition()}setScrollPositionNow(n){this._scrollable.setScrollPositionNow(n)}setScrollPositionSmooth(n){this._scrollable.setScrollPositionSmooth(n)}hasPendingScrollAnimation(){return this._scrollable.hasPendingScrollAnimation()}}class s extends k.Disposable{constructor(n,t,a){super(),this._configuration=n;const u=this._configuration.options,h=u.get(142),r=u.get(82);this._linesLayout=new D.LinesLayout(t,u.get(65),r.top,r.bottom),this._maxLineWidth=0,this._overlayWidgetsMinWidth=0,this._scrollable=this._register(new C(0,a)),this._configureSmoothScrollDuration(),this._scrollable.setScrollDimensions(new g(h.contentWidth,0,h.height,0)),this.onDidScroll=this._scrollable.onDidScroll,this.onDidContentSizeChange=this._scrollable.onDidContentSizeChange,this._updateHeight()}dispose(){super.dispose()}getScrollable(){return this._scrollable.getScrollable()}onHeightMaybeChanged(){this._updateHeight()}_configureSmoothScrollDuration(){this._scrollable.setSmoothScrollDuration(this._configuration.options.get(112)?_:0)}onConfigurationChanged(n){const t=this._configuration.options;if(n.hasChanged(65)&&this._linesLayout.setLineHeight(t.get(65)),n.hasChanged(82)){const a=t.get(82);this._linesLayout.setPadding(a.top,a.bottom)}if(n.hasChanged(142)){const a=t.get(142),u=a.contentWidth,h=a.height,r=this._scrollable.getScrollDimensions(),c=r.contentWidth;this._scrollable.setScrollDimensions(new g(u,r.contentWidth,h,this._getContentHeight(u,h,c)))}else this._updateHeight();n.hasChanged(112)&&this._configureSmoothScrollDuration()}onFlushed(n){this._linesLayout.onFlushed(n)}onLinesDeleted(n,t){this._linesLayout.onLinesDeleted(n,t)}onLinesInserted(n,t){this._linesLayout.onLinesInserted(n,t)}_getHorizontalScrollbarHeight(n,t){const u=this._configuration.options.get(101);return u.horizontal===2||n>=t?0:u.horizontalScrollbarSize}_getContentHeight(n,t,a){const u=this._configuration.options;let h=this._linesLayout.getLinesTotalHeight();return u.get(103)?h+=Math.max(0,t-u.get(65)-u.get(82).bottom):h+=this._getHorizontalScrollbarHeight(n,a),h}_updateHeight(){const n=this._scrollable.getScrollDimensions(),t=n.width,a=n.height,u=n.contentWidth;this._scrollable.setScrollDimensions(new g(t,n.contentWidth,a,this._getContentHeight(t,a,u)))}getCurrentViewport(){const n=this._scrollable.getScrollDimensions(),t=this._scrollable.getCurrentScrollPosition();return new S.Viewport(t.scrollTop,t.scrollLeft,n.width,n.height)}getFutureViewport(){const n=this._scrollable.getScrollDimensions(),t=this._scrollable.getFutureScrollPosition();return new S.Viewport(t.scrollTop,t.scrollLeft,n.width,n.height)}_computeContentWidth(){const n=this._configuration.options,t=this._maxLineWidth,a=n.get(143),u=n.get(49),h=n.get(142);if(a.isViewportWrapping){const r=n.get(71);return t>h.contentWidth+u.typicalHalfwidthCharacterWidth&&r.enabled&&r.side===\"right\"?t+h.verticalScrollbarWidth:t}else{const r=n.get(102)*u.typicalHalfwidthCharacterWidth,c=this._linesLayout.getWhitespaceMinWidth();return Math.max(t+r+h.verticalScrollbarWidth,c,this._overlayWidgetsMinWidth)}}setMaxLineWidth(n){this._maxLineWidth=n,this._updateContentWidth()}setOverlayWidgetsMinWidth(n){this._overlayWidgetsMinWidth=n,this._updateContentWidth()}_updateContentWidth(){const n=this._scrollable.getScrollDimensions();this._scrollable.setScrollDimensions(new g(n.width,this._computeContentWidth(),n.height,n.contentHeight)),this._updateHeight()}saveState(){const n=this._scrollable.getFutureScrollPosition(),t=n.scrollTop,a=this._linesLayout.getLineNumberAtOrAfterVerticalOffset(t),u=this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(a);return{scrollTop:t,scrollTopWithoutViewZones:t-u,scrollLeft:n.scrollLeft}}changeWhitespace(n){const t=this._linesLayout.changeWhitespace(n);return t&&this.onHeightMaybeChanged(),t}getVerticalOffsetForLineNumber(n,t=!1){return this._linesLayout.getVerticalOffsetForLineNumber(n,t)}getVerticalOffsetAfterLineNumber(n,t=!1){return this._linesLayout.getVerticalOffsetAfterLineNumber(n,t)}isAfterLines(n){return this._linesLayout.isAfterLines(n)}isInTopPadding(n){return this._linesLayout.isInTopPadding(n)}isInBottomPadding(n){return this._linesLayout.isInBottomPadding(n)}getLineNumberAtVerticalOffset(n){return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(n)}getWhitespaceAtVerticalOffset(n){return this._linesLayout.getWhitespaceAtVerticalOffset(n)}getLinesViewportData(){const n=this.getCurrentViewport();return this._linesLayout.getLinesViewportData(n.top,n.top+n.height)}getLinesViewportDataAtScrollTop(n){const t=this._scrollable.getScrollDimensions();return n+t.height>t.scrollHeight&&(n=t.scrollHeight-t.height),n<0&&(n=0),this._linesLayout.getLinesViewportData(n,n+t.height)}getWhitespaceViewportData(){const n=this.getCurrentViewport();return this._linesLayout.getWhitespaceViewportData(n.top,n.top+n.height)}getWhitespaces(){return this._linesLayout.getWhitespaces()}getContentWidth(){return this._scrollable.getScrollDimensions().contentWidth}getScrollWidth(){return this._scrollable.getScrollDimensions().scrollWidth}getContentHeight(){return this._scrollable.getScrollDimensions().contentHeight}getScrollHeight(){return this._scrollable.getScrollDimensions().scrollHeight}getCurrentScrollLeft(){return this._scrollable.getCurrentScrollPosition().scrollLeft}getCurrentScrollTop(){return this._scrollable.getCurrentScrollPosition().scrollTop}validateScrollPosition(n){return this._scrollable.validateScrollPosition(n)}setScrollPosition(n,t){t===1?this._scrollable.setScrollPositionNow(n):this._scrollable.setScrollPositionSmooth(n)}hasPendingScrollAnimation(){return this._scrollable.hasPendingScrollAnimation()}deltaScrollNow(n,t){const a=this._scrollable.getCurrentScrollPosition();this._scrollable.setScrollPositionNow({scrollLeft:a.scrollLeft+n,scrollTop:a.scrollTop+t})}}e.ViewLayout=s}),define(ne[537],se([1,0,5,24]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MoveCaretCommand=void 0;class y{constructor(S,f){this._selection=S,this._isMovingLeft=f}getEditOperations(S,f){if(this._selection.startLineNumber!==this._selection.endLineNumber||this._selection.isEmpty())return;const _=this._selection.startLineNumber,g=this._selection.startColumn,C=this._selection.endColumn;if(!(this._isMovingLeft&&g===1)&&!(!this._isMovingLeft&&C===S.getLineMaxColumn(_)))if(this._isMovingLeft){const s=new L.Range(_,g-1,_,g),i=S.getValueInRange(s);f.addEditOperation(s,null),f.addEditOperation(new L.Range(_,C,_,C),i)}else{const s=new L.Range(_,C,_,C+1),i=S.getValueInRange(s);f.addEditOperation(s,null),f.addEditOperation(new L.Range(_,g,_,g),i)}}computeCursorState(S,f){return this._isMovingLeft?new k.Selection(this._selection.startLineNumber,this._selection.startColumn-1,this._selection.endLineNumber,this._selection.endColumn-1):new k.Selection(this._selection.startLineNumber,this._selection.startColumn+1,this._selection.endLineNumber,this._selection.endColumn+1)}}e.MoveCaretCommand=y}),define(ne[113],se([1,0,9]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CodeActionItem=e.CodeActionCommandArgs=e.filtersAction=e.mayIncludeActionsOfKind=e.CodeActionTriggerSource=e.CodeActionKind=void 0;class k{constructor(s){this.value=s}equals(s){return this.value===s.value}contains(s){return this.equals(s)||this.value===\"\"||s.value.startsWith(this.value+k.sep)}intersects(s){return this.contains(s)||s.contains(this)}append(s){return new k(this.value+k.sep+s)}}e.CodeActionKind=k,k.sep=\".\",k.None=new k(\"@@none@@\"),k.Empty=new k(\"\"),k.QuickFix=new k(\"quickfix\"),k.Refactor=new k(\"refactor\"),k.RefactorExtract=k.Refactor.append(\"extract\"),k.RefactorInline=k.Refactor.append(\"inline\"),k.RefactorMove=k.Refactor.append(\"move\"),k.RefactorRewrite=k.Refactor.append(\"rewrite\"),k.Source=new k(\"source\"),k.SourceOrganizeImports=k.Source.append(\"organizeImports\"),k.SourceFixAll=k.Source.append(\"fixAll\"),k.SurroundWith=k.Refactor.append(\"surround\");var y;(function(C){C.Refactor=\"refactor\",C.RefactorPreview=\"refactor preview\",C.Lightbulb=\"lightbulb\",C.Default=\"other (default)\",C.SourceAction=\"source action\",C.QuickFix=\"quick fix action\",C.FixAll=\"fix all\",C.OrganizeImports=\"organize imports\",C.AutoFix=\"auto fix\",C.QuickFixHover=\"quick fix hover window\",C.OnSave=\"save participants\",C.ProblemsView=\"problems view\"})(y||(e.CodeActionTriggerSource=y={}));function D(C,s){return!(C.include&&!C.include.intersects(s)||C.excludes&&C.excludes.some(i=>f(s,i,C.include))||!C.includeSourceActions&&k.Source.contains(s))}e.mayIncludeActionsOfKind=D;function S(C,s){const i=s.kind?new k(s.kind):void 0;return!(C.include&&(!i||!C.include.contains(i))||C.excludes&&i&&C.excludes.some(n=>f(i,n,C.include))||!C.includeSourceActions&&i&&k.Source.contains(i)||C.onlyIncludePreferredActions&&!s.isPreferred)}e.filtersAction=S;function f(C,s,i){return!(!s.contains(C)||i&&s.contains(i))}class _{static fromUser(s,i){return!s||typeof s!=\"object\"?new _(i.kind,i.apply,!1):new _(_.getKindFromUser(s,i.kind),_.getApplyFromUser(s,i.apply),_.getPreferredUser(s))}static getApplyFromUser(s,i){switch(typeof s.apply==\"string\"?s.apply.toLowerCase():\"\"){case\"first\":return\"first\";case\"never\":return\"never\";case\"ifsingle\":return\"ifSingle\";default:return i}}static getKindFromUser(s,i){return typeof s.kind==\"string\"?new k(s.kind):i}static getPreferredUser(s){return typeof s.preferred==\"boolean\"?s.preferred:!1}constructor(s,i,n){this.kind=s,this.apply=i,this.preferred=n}}e.CodeActionCommandArgs=_;class g{constructor(s,i){this.action=s,this.provider=i}resolve(s){var i;return we(this,void 0,void 0,function*(){if(!((i=this.provider)===null||i===void 0)&&i.resolveCodeAction&&!this.action.edit){let n;try{n=yield this.provider.resolveCodeAction(this.action,s)}catch(t){(0,L.onUnexpectedExternalError)(t)}n&&(this.action.edit=n.edit)}return this})}}e.CodeActionItem=g}),define(ne[538],se([1,0,6]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorPickerModel=void 0;class k{get color(){return this._color}set color(D){this._color.equals(D)||(this._color=D,this._onDidChangeColor.fire(D))}get presentation(){return this.colorPresentations[this.presentationIndex]}get colorPresentations(){return this._colorPresentations}set colorPresentations(D){this._colorPresentations=D,this.presentationIndex>D.length-1&&(this.presentationIndex=0),this._onDidChangePresentation.fire(this.presentation)}constructor(D,S,f){this.presentationIndex=f,this._onColorFlushed=new L.Emitter,this.onColorFlushed=this._onColorFlushed.event,this._onDidChangeColor=new L.Emitter,this.onDidChangeColor=this._onDidChangeColor.event,this._onDidChangePresentation=new L.Emitter,this.onDidChangePresentation=this._onDidChangePresentation.event,this.originalColor=D,this._color=D,this._colorPresentations=S}selectNextColorPresentation(){this.presentationIndex=(this.presentationIndex+1)%this.colorPresentations.length,this.flushColor(),this._onDidChangePresentation.fire(this.presentation)}guessColorPresentation(D,S){let f=-1;for(let _=0;_<this.colorPresentations.length;_++)if(S.toLowerCase()===this.colorPresentations[_].label){f=_;break}if(f===-1){const _=S.split(\"(\")[0].toLowerCase();for(let g=0;g<this.colorPresentations.length;g++)if(this.colorPresentations[g].label.toLowerCase().startsWith(_)){f=g;break}}f!==-1&&f!==this.presentationIndex&&(this.presentationIndex=f,this._onDidChangePresentation.fire(this.presentation))}flushColor(){this._onColorFlushed.fire(this._color)}}e.ColorPickerModel=k}),define(ne[290],se([1,0,73,12,5,24]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BlockCommentCommand=void 0;class S{constructor(_,g,C){this.languageConfigurationService=C,this._selection=_,this._insertSpace=g,this._usedEndToken=null}static _haystackHasNeedleAtOffset(_,g,C){if(C<0)return!1;const s=g.length,i=_.length;if(C+s>i)return!1;for(let n=0;n<s;n++){const t=_.charCodeAt(C+n),a=g.charCodeAt(n);if(t!==a&&!(t>=65&&t<=90&&t+32===a)&&!(a>=65&&a<=90&&a+32===t))return!1}return!0}_createOperationsForBlockComment(_,g,C,s,i,n){const t=_.startLineNumber,a=_.startColumn,u=_.endLineNumber,h=_.endColumn,r=i.getLineContent(t),c=i.getLineContent(u);let o=r.lastIndexOf(g,a-1+g.length),d=c.indexOf(C,h-1-C.length);if(o!==-1&&d!==-1)if(t===u)r.substring(o+g.length,d).indexOf(C)>=0&&(o=-1,d=-1);else{const p=r.substring(o+g.length),m=c.substring(0,d);(p.indexOf(C)>=0||m.indexOf(C)>=0)&&(o=-1,d=-1)}let l;o!==-1&&d!==-1?(s&&o+g.length<r.length&&r.charCodeAt(o+g.length)===32&&(g=g+\" \"),s&&d>0&&c.charCodeAt(d-1)===32&&(C=\" \"+C,d-=1),l=S._createRemoveBlockCommentOperations(new y.Range(t,o+g.length+1,u,d+1),g,C)):(l=S._createAddBlockCommentOperations(_,g,C,this._insertSpace),this._usedEndToken=l.length===1?C:null);for(const p of l)n.addTrackedEditOperation(p.range,p.text)}static _createRemoveBlockCommentOperations(_,g,C){const s=[];return y.Range.isEmpty(_)?s.push(L.EditOperation.delete(new y.Range(_.startLineNumber,_.startColumn-g.length,_.endLineNumber,_.endColumn+C.length))):(s.push(L.EditOperation.delete(new y.Range(_.startLineNumber,_.startColumn-g.length,_.startLineNumber,_.startColumn))),s.push(L.EditOperation.delete(new y.Range(_.endLineNumber,_.endColumn,_.endLineNumber,_.endColumn+C.length)))),s}static _createAddBlockCommentOperations(_,g,C,s){const i=[];return y.Range.isEmpty(_)?i.push(L.EditOperation.replace(new y.Range(_.startLineNumber,_.startColumn,_.endLineNumber,_.endColumn),g+\"  \"+C)):(i.push(L.EditOperation.insert(new k.Position(_.startLineNumber,_.startColumn),g+(s?\" \":\"\"))),i.push(L.EditOperation.insert(new k.Position(_.endLineNumber,_.endColumn),(s?\" \":\"\")+C))),i}getEditOperations(_,g){const C=this._selection.startLineNumber,s=this._selection.startColumn;_.tokenization.tokenizeIfCheap(C);const i=_.getLanguageIdAtPosition(C,s),n=this.languageConfigurationService.getLanguageConfiguration(i).comments;!n||!n.blockCommentStartToken||!n.blockCommentEndToken||this._createOperationsForBlockComment(this._selection,n.blockCommentStartToken,n.blockCommentEndToken,this._insertSpace,_,g)}computeCursorState(_,g){const C=g.getInverseEditOperations();if(C.length===2){const s=C[0],i=C[1];return new D.Selection(s.range.endLineNumber,s.range.endColumn,i.range.startLineNumber,i.range.startColumn)}else{const s=C[0].range,i=this._usedEndToken?-this._usedEndToken.length-1:0;return new D.Selection(s.endLineNumber,s.endColumn+i,s.endLineNumber,s.endColumn+i)}}}e.BlockCommentCommand=S}),define(ne[539],se([1,0,11,73,12,5,24,290]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LineCommentCommand=void 0;class _{constructor(C,s,i,n,t,a,u){this.languageConfigurationService=C,this._selection=s,this._tabSize=i,this._type=n,this._insertSpace=t,this._selectionId=null,this._deltaColumn=0,this._moveEndPositionDown=!1,this._ignoreEmptyLines=a,this._ignoreFirstLine=u||!1}static _gatherPreflightCommentStrings(C,s,i,n){C.tokenization.tokenizeIfCheap(s);const t=C.getLanguageIdAtPosition(s,1),a=n.getLanguageConfiguration(t).comments,u=a?a.lineCommentToken:null;if(!u)return null;const h=[];for(let r=0,c=i-s+1;r<c;r++)h[r]={ignore:!1,commentStr:u,commentStrOffset:0,commentStrLength:u.length};return h}static _analyzeLines(C,s,i,n,t,a,u,h){let r=!0,c;C===0?c=!0:C===1?c=!1:c=!0;for(let o=0,d=n.length;o<d;o++){const l=n[o],p=t+o;if(p===t&&u){l.ignore=!0;continue}const m=i.getLineContent(p),v=L.firstNonWhitespaceIndex(m);if(v===-1){l.ignore=a,l.commentStrOffset=m.length;continue}if(r=!1,l.ignore=!1,l.commentStrOffset=v,c&&!f.BlockCommentCommand._haystackHasNeedleAtOffset(m,l.commentStr,v)&&(C===0?c=!1:C===1||(l.ignore=!0)),c&&s){const b=v+l.commentStrLength;b<m.length&&m.charCodeAt(b)===32&&(l.commentStrLength+=1)}}if(C===0&&r){c=!1;for(let o=0,d=n.length;o<d;o++)n[o].ignore=!1}return{supported:!0,shouldRemoveComments:c,lines:n}}static _gatherPreflightData(C,s,i,n,t,a,u,h){const r=_._gatherPreflightCommentStrings(i,n,t,h);return r===null?{supported:!1}:_._analyzeLines(C,s,i,r,n,a,u,h)}_executeLineComments(C,s,i,n){let t;i.shouldRemoveComments?t=_._createRemoveLineCommentsOperations(i.lines,n.startLineNumber):(_._normalizeInsertionPoint(C,i.lines,n.startLineNumber,this._tabSize),t=this._createAddLineCommentsOperations(i.lines,n.startLineNumber));const a=new y.Position(n.positionLineNumber,n.positionColumn);for(let u=0,h=t.length;u<h;u++)s.addEditOperation(t[u].range,t[u].text),D.Range.isEmpty(t[u].range)&&D.Range.getStartPosition(t[u].range).equals(a)&&C.getLineContent(a.lineNumber).length+1===a.column&&(this._deltaColumn=(t[u].text||\"\").length);this._selectionId=s.trackSelection(n)}_attemptRemoveBlockComment(C,s,i,n){let t=s.startLineNumber,a=s.endLineNumber;const u=n.length+Math.max(C.getLineFirstNonWhitespaceColumn(s.startLineNumber),s.startColumn);let h=C.getLineContent(t).lastIndexOf(i,u-1),r=C.getLineContent(a).indexOf(n,s.endColumn-1-i.length);return h!==-1&&r===-1&&(r=C.getLineContent(t).indexOf(n,h+i.length),a=t),h===-1&&r!==-1&&(h=C.getLineContent(a).lastIndexOf(i,r),t=a),s.isEmpty()&&(h===-1||r===-1)&&(h=C.getLineContent(t).indexOf(i),h!==-1&&(r=C.getLineContent(t).indexOf(n,h+i.length))),h!==-1&&C.getLineContent(t).charCodeAt(h+i.length)===32&&(i+=\" \"),r!==-1&&C.getLineContent(a).charCodeAt(r-1)===32&&(n=\" \"+n,r-=1),h!==-1&&r!==-1?f.BlockCommentCommand._createRemoveBlockCommentOperations(new D.Range(t,h+i.length+1,a,r+1),i,n):null}_executeBlockComment(C,s,i){C.tokenization.tokenizeIfCheap(i.startLineNumber);const n=C.getLanguageIdAtPosition(i.startLineNumber,1),t=this.languageConfigurationService.getLanguageConfiguration(n).comments;if(!t||!t.blockCommentStartToken||!t.blockCommentEndToken)return;const a=t.blockCommentStartToken,u=t.blockCommentEndToken;let h=this._attemptRemoveBlockComment(C,i,a,u);if(!h){if(i.isEmpty()){const r=C.getLineContent(i.startLineNumber);let c=L.firstNonWhitespaceIndex(r);c===-1&&(c=r.length),h=f.BlockCommentCommand._createAddBlockCommentOperations(new D.Range(i.startLineNumber,c+1,i.startLineNumber,r.length+1),a,u,this._insertSpace)}else h=f.BlockCommentCommand._createAddBlockCommentOperations(new D.Range(i.startLineNumber,C.getLineFirstNonWhitespaceColumn(i.startLineNumber),i.endLineNumber,C.getLineMaxColumn(i.endLineNumber)),a,u,this._insertSpace);h.length===1&&(this._deltaColumn=a.length+1)}this._selectionId=s.trackSelection(i);for(const r of h)s.addEditOperation(r.range,r.text)}getEditOperations(C,s){let i=this._selection;if(this._moveEndPositionDown=!1,i.startLineNumber===i.endLineNumber&&this._ignoreFirstLine){s.addEditOperation(new D.Range(i.startLineNumber,C.getLineMaxColumn(i.startLineNumber),i.startLineNumber+1,1),i.startLineNumber===C.getLineCount()?\"\":`\n`),this._selectionId=s.trackSelection(i);return}i.startLineNumber<i.endLineNumber&&i.endColumn===1&&(this._moveEndPositionDown=!0,i=i.setEndPosition(i.endLineNumber-1,C.getLineMaxColumn(i.endLineNumber-1)));const n=_._gatherPreflightData(this._type,this._insertSpace,C,i.startLineNumber,i.endLineNumber,this._ignoreEmptyLines,this._ignoreFirstLine,this.languageConfigurationService);return n.supported?this._executeLineComments(C,s,n,i):this._executeBlockComment(C,s,i)}computeCursorState(C,s){let i=s.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(i=i.setEndPosition(i.endLineNumber+1,1)),new S.Selection(i.selectionStartLineNumber,i.selectionStartColumn+this._deltaColumn,i.positionLineNumber,i.positionColumn+this._deltaColumn)}static _createRemoveLineCommentsOperations(C,s){const i=[];for(let n=0,t=C.length;n<t;n++){const a=C[n];a.ignore||i.push(k.EditOperation.delete(new D.Range(s+n,a.commentStrOffset+1,s+n,a.commentStrOffset+a.commentStrLength+1)))}return i}_createAddLineCommentsOperations(C,s){const i=[],n=this._insertSpace?\" \":\"\";for(let t=0,a=C.length;t<a;t++){const u=C[t];u.ignore||i.push(k.EditOperation.insert(new y.Position(s+t,u.commentStrOffset+1),u.commentStr+n))}return i}static nextVisibleColumn(C,s,i,n){return i?C+(s-C%s):C+n}static _normalizeInsertionPoint(C,s,i,n){let t=1073741824,a,u;for(let h=0,r=s.length;h<r;h++){if(s[h].ignore)continue;const c=C.getLineContent(i+h);let o=0;for(let d=0,l=s[h].commentStrOffset;o<t&&d<l;d++)o=_.nextVisibleColumn(o,n,c.charCodeAt(d)===9,1);o<t&&(t=o)}t=Math.floor(t/n)*n;for(let h=0,r=s.length;h<r;h++){if(s[h].ignore)continue;const c=C.getLineContent(i+h);let o=0;for(a=0,u=s[h].commentStrOffset;o<t&&a<u;a++)o=_.nextVisibleColumn(o,n,c.charCodeAt(a)===9,1);o>t?s[h].commentStrOffset=a-1:s[h].commentStrOffset=a}}}e.LineCommentCommand=_}),define(ne[540],se([1,0,5,24]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DragAndDropCommand=void 0;class y{constructor(S,f,_){this.selection=S,this.targetPosition=f,this.copy=_,this.targetSelection=null}getEditOperations(S,f){const _=S.getValueInRange(this.selection);if(this.copy||f.addEditOperation(this.selection,null),f.addEditOperation(new L.Range(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column),_),this.selection.containsPosition(this.targetPosition)&&!(this.copy&&(this.selection.getEndPosition().equals(this.targetPosition)||this.selection.getStartPosition().equals(this.targetPosition)))){this.targetSelection=this.selection;return}if(this.copy){this.targetSelection=new k.Selection(this.targetPosition.lineNumber,this.targetPosition.column,this.selection.endLineNumber-this.selection.startLineNumber+this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}if(this.targetPosition.lineNumber>this.selection.endLineNumber){this.targetSelection=new k.Selection(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}if(this.targetPosition.lineNumber<this.selection.endLineNumber){this.targetSelection=new k.Selection(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber+this.selection.endLineNumber-this.selection.startLineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}this.selection.endColumn<=this.targetPosition.column?this.targetSelection=new k.Selection(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column-this.selection.endColumn+this.selection.startColumn:this.targetPosition.column-this.selection.endColumn+this.selection.startColumn,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column:this.selection.endColumn):this.targetSelection=new k.Selection(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column+this.selection.endColumn-this.selection.startColumn)}computeCursorState(S,f){return this.targetSelection}}e.DragAndDropCommand=y}),define(ne[541],se([1,0,5]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ReplaceAllCommand=void 0;class k{constructor(D,S,f){this._editorSelection=D,this._ranges=S,this._replaceStrings=f,this._trackedEditorSelectionId=null}getEditOperations(D,S){if(this._ranges.length>0){const f=[];for(let C=0;C<this._ranges.length;C++)f.push({range:this._ranges[C],text:this._replaceStrings[C]});f.sort((C,s)=>L.Range.compareRangesUsingStarts(C.range,s.range));const _=[];let g=f[0];for(let C=1;C<f.length;C++)g.range.endLineNumber===f[C].range.startLineNumber&&g.range.endColumn===f[C].range.startColumn?(g.range=g.range.plusRange(f[C].range),g.text=g.text+f[C].text):(_.push(g),g=f[C]);_.push(g);for(const C of _)S.addEditOperation(C.range,C.text)}this._trackedEditorSelectionId=S.trackSelection(this._editorSelection)}computeCursorState(D,S){return S.getTrackedSelection(this._trackedEditorSelectionId)}}e.ReplaceAllCommand=k}),define(ne[542],se([1,0,392]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.parseReplaceString=e.ReplacePiece=e.ReplacePattern=void 0;class k{constructor(C){this.staticValue=C,this.kind=0}}class y{constructor(C){this.pieces=C,this.kind=1}}class D{static fromStaticValue(C){return new D([S.staticValue(C)])}get hasReplacementPatterns(){return this._state.kind===1}constructor(C){!C||C.length===0?this._state=new k(\"\"):C.length===1&&C[0].staticValue!==null?this._state=new k(C[0].staticValue):this._state=new y(C)}buildReplaceString(C,s){if(this._state.kind===0)return s?(0,L.buildReplaceStringWithCasePreserved)(C,this._state.staticValue):this._state.staticValue;let i=\"\";for(let n=0,t=this._state.pieces.length;n<t;n++){const a=this._state.pieces[n];if(a.staticValue!==null){i+=a.staticValue;continue}let u=D._substitute(a.matchIndex,C);if(a.caseOps!==null&&a.caseOps.length>0){const h=[],r=a.caseOps.length;let c=0;for(let o=0,d=u.length;o<d;o++){if(c>=r){h.push(u.slice(o));break}switch(a.caseOps[c]){case\"U\":h.push(u[o].toUpperCase());break;case\"u\":h.push(u[o].toUpperCase()),c++;break;case\"L\":h.push(u[o].toLowerCase());break;case\"l\":h.push(u[o].toLowerCase()),c++;break;default:h.push(u[o])}}u=h.join(\"\")}i+=u}return i}static _substitute(C,s){if(s===null)return\"\";if(C===0)return s[0];let i=\"\";for(;C>0;){if(C<s.length)return(s[C]||\"\")+i;i=String(C%10)+i,C=Math.floor(C/10)}return\"$\"+i}}e.ReplacePattern=D;class S{static staticValue(C){return new S(C,-1,null)}static caseOps(C,s){return new S(null,C,s)}constructor(C,s,i){this.staticValue=C,this.matchIndex=s,!i||i.length===0?this.caseOps=null:this.caseOps=i.slice(0)}}e.ReplacePiece=S;class f{constructor(C){this._source=C,this._lastCharIndex=0,this._result=[],this._resultLen=0,this._currentStaticPiece=\"\"}emitUnchanged(C){this._emitStatic(this._source.substring(this._lastCharIndex,C)),this._lastCharIndex=C}emitStatic(C,s){this._emitStatic(C),this._lastCharIndex=s}_emitStatic(C){C.length!==0&&(this._currentStaticPiece+=C)}emitMatchIndex(C,s,i){this._currentStaticPiece.length!==0&&(this._result[this._resultLen++]=S.staticValue(this._currentStaticPiece),this._currentStaticPiece=\"\"),this._result[this._resultLen++]=S.caseOps(C,i),this._lastCharIndex=s}finalize(){return this.emitUnchanged(this._source.length),this._currentStaticPiece.length!==0&&(this._result[this._resultLen++]=S.staticValue(this._currentStaticPiece),this._currentStaticPiece=\"\"),new D(this._result)}}function _(g){if(!g||g.length===0)return new D(null);const C=[],s=new f(g);for(let i=0,n=g.length;i<n;i++){const t=g.charCodeAt(i);if(t===92){if(i++,i>=n)break;const a=g.charCodeAt(i);switch(a){case 92:s.emitUnchanged(i-1),s.emitStatic(\"\\\\\",i+1);break;case 110:s.emitUnchanged(i-1),s.emitStatic(`\n`,i+1);break;case 116:s.emitUnchanged(i-1),s.emitStatic(\"\t\",i+1);break;case 117:case 85:case 108:case 76:s.emitUnchanged(i-1),s.emitStatic(\"\",i+1),C.push(String.fromCharCode(a));break}continue}if(t===36){if(i++,i>=n)break;const a=g.charCodeAt(i);if(a===36){s.emitUnchanged(i-1),s.emitStatic(\"$\",i+1);continue}if(a===48||a===38){s.emitUnchanged(i-1),s.emitMatchIndex(0,i+1,C),C.length=0;continue}if(49<=a&&a<=57){let u=a-48;if(i+1<n){const h=g.charCodeAt(i+1);if(48<=h&&h<=57){i++,u=u*10+(h-48),s.emitUnchanged(i-2),s.emitMatchIndex(u,i+1,C),C.length=0;continue}}s.emitUnchanged(i-1),s.emitMatchIndex(u,i+1,C),C.length=0;continue}}}return s.finalize()}e.parseReplaceString=_}),define(ne[182],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FoldingRegion=e.FoldingRegions=e.MAX_LINE_NUMBER=e.MAX_FOLDING_REGIONS=e.foldSourceAbbr=void 0,e.foldSourceAbbr={[0]:\" \",[1]:\"u\",[2]:\"r\"},e.MAX_FOLDING_REGIONS=65535,e.MAX_LINE_NUMBER=16777215;const L=4278190080;class k{constructor(f){const _=Math.ceil(f/32);this._states=new Uint32Array(_)}get(f){const _=f/32|0,g=f%32;return(this._states[_]&1<<g)!==0}set(f,_){const g=f/32|0,C=f%32,s=this._states[g];_?this._states[g]=s|1<<C:this._states[g]=s&~(1<<C)}}class y{constructor(f,_,g){if(f.length!==_.length||f.length>e.MAX_FOLDING_REGIONS)throw new Error(\"invalid startIndexes or endIndexes size\");this._startIndexes=f,this._endIndexes=_,this._collapseStates=new k(f.length),this._userDefinedStates=new k(f.length),this._recoveredStates=new k(f.length),this._types=g,this._parentsComputed=!1}ensureParentIndices(){if(!this._parentsComputed){this._parentsComputed=!0;const f=[],_=(g,C)=>{const s=f[f.length-1];return this.getStartLineNumber(s)<=g&&this.getEndLineNumber(s)>=C};for(let g=0,C=this._startIndexes.length;g<C;g++){const s=this._startIndexes[g],i=this._endIndexes[g];if(s>e.MAX_LINE_NUMBER||i>e.MAX_LINE_NUMBER)throw new Error(\"startLineNumber or endLineNumber must not exceed \"+e.MAX_LINE_NUMBER);for(;f.length>0&&!_(s,i);)f.pop();const n=f.length>0?f[f.length-1]:-1;f.push(g),this._startIndexes[g]=s+((n&255)<<24),this._endIndexes[g]=i+((n&65280)<<16)}}}get length(){return this._startIndexes.length}getStartLineNumber(f){return this._startIndexes[f]&e.MAX_LINE_NUMBER}getEndLineNumber(f){return this._endIndexes[f]&e.MAX_LINE_NUMBER}getType(f){return this._types?this._types[f]:void 0}hasTypes(){return!!this._types}isCollapsed(f){return this._collapseStates.get(f)}setCollapsed(f,_){this._collapseStates.set(f,_)}isUserDefined(f){return this._userDefinedStates.get(f)}setUserDefined(f,_){return this._userDefinedStates.set(f,_)}isRecovered(f){return this._recoveredStates.get(f)}setRecovered(f,_){return this._recoveredStates.set(f,_)}getSource(f){return this.isUserDefined(f)?1:this.isRecovered(f)?2:0}setSource(f,_){_===1?(this.setUserDefined(f,!0),this.setRecovered(f,!1)):_===2?(this.setUserDefined(f,!1),this.setRecovered(f,!0)):(this.setUserDefined(f,!1),this.setRecovered(f,!1))}setCollapsedAllOfType(f,_){let g=!1;if(this._types)for(let C=0;C<this._types.length;C++)this._types[C]===f&&(this.setCollapsed(C,_),g=!0);return g}toRegion(f){return new D(this,f)}getParentIndex(f){this.ensureParentIndices();const _=((this._startIndexes[f]&L)>>>24)+((this._endIndexes[f]&L)>>>16);return _===e.MAX_FOLDING_REGIONS?-1:_}contains(f,_){return this.getStartLineNumber(f)<=_&&this.getEndLineNumber(f)>=_}findIndex(f){let _=0,g=this._startIndexes.length;if(g===0)return-1;for(;_<g;){const C=Math.floor((_+g)/2);f<this.getStartLineNumber(C)?g=C:_=C+1}return _-1}findRange(f){let _=this.findIndex(f);if(_>=0){if(this.getEndLineNumber(_)>=f)return _;for(_=this.getParentIndex(_);_!==-1;){if(this.contains(_,f))return _;_=this.getParentIndex(_)}}return-1}toString(){const f=[];for(let _=0;_<this.length;_++)f[_]=`[${e.foldSourceAbbr[this.getSource(_)]}${this.isCollapsed(_)?\"+\":\"-\"}] ${this.getStartLineNumber(_)}/${this.getEndLineNumber(_)}`;return f.join(\", \")}toFoldRange(f){return{startLineNumber:this._startIndexes[f]&e.MAX_LINE_NUMBER,endLineNumber:this._endIndexes[f]&e.MAX_LINE_NUMBER,type:this._types?this._types[f]:void 0,isCollapsed:this.isCollapsed(f),source:this.getSource(f)}}static fromFoldRanges(f){const _=f.length,g=new Uint32Array(_),C=new Uint32Array(_);let s=[],i=!1;for(let t=0;t<_;t++){const a=f[t];g[t]=a.startLineNumber,C[t]=a.endLineNumber,s.push(a.type),a.type&&(i=!0)}i||(s=void 0);const n=new y(g,C,s);for(let t=0;t<_;t++)f[t].isCollapsed&&n.setCollapsed(t,!0),n.setSource(t,f[t].source);return n}static sanitizeAndMerge(f,_,g){g=g??Number.MAX_VALUE;const C=(d,l)=>Array.isArray(d)?p=>p<l?d[p]:void 0:p=>p<l?d.toFoldRange(p):void 0,s=C(f,f.length),i=C(_,_.length);let n=0,t=0,a=s(0),u=i(0);const h=[];let r,c=0;const o=[];for(;a||u;){let d;if(u&&(!a||a.startLineNumber>=u.startLineNumber))a&&a.startLineNumber===u.startLineNumber?(u.source===1?d=u:(d=a,d.isCollapsed=u.isCollapsed&&a.endLineNumber===u.endLineNumber,d.source=0),a=s(++n)):(d=u,u.isCollapsed&&u.source===0&&(d.source=2)),u=i(++t);else{let l=t,p=u;for(;;){if(!p||p.startLineNumber>a.endLineNumber){d=a;break}if(p.source===1&&p.endLineNumber>a.endLineNumber)break;p=i(++l)}a=s(++n)}if(d){for(;r&&r.endLineNumber<d.startLineNumber;)r=h.pop();d.endLineNumber>d.startLineNumber&&d.startLineNumber>c&&d.endLineNumber<=g&&(!r||r.endLineNumber>=d.endLineNumber)&&(o.push(d),c=d.startLineNumber,r&&h.push(r),r=d)}}return o}}e.FoldingRegions=y;class D{constructor(f,_){this.ranges=f,this.index=_}get startLineNumber(){return this.ranges.getStartLineNumber(this.index)}get endLineNumber(){return this.ranges.getEndLineNumber(this.index)}get regionIndex(){return this.index}get parentIndex(){return this.ranges.getParentIndex(this.index)}get isCollapsed(){return this.ranges.isCollapsed(this.index)}containedBy(f){return f.startLineNumber<=this.startLineNumber&&f.endLineNumber>=this.endLineNumber}containsLine(f){return this.startLineNumber<=f&&f<=this.endLineNumber}}e.FoldingRegion=D}),define(ne[291],se([1,0,6,182,143]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getNextFoldLine=e.getPreviousFoldLine=e.getParentFoldLine=e.setCollapseStateForType=e.setCollapseStateForMatchingLines=e.setCollapseStateForRest=e.setCollapseStateAtLevel=e.setCollapseStateUp=e.setCollapseStateLevelsUp=e.setCollapseStateLevelsDown=e.toggleCollapseState=e.FoldingModel=void 0;class D{get regions(){return this._regions}get textModel(){return this._textModel}constructor(r,c){this._updateEventEmitter=new L.Emitter,this.onDidChange=this._updateEventEmitter.event,this._textModel=r,this._decorationProvider=c,this._regions=new k.FoldingRegions(new Uint32Array(0),new Uint32Array(0)),this._editorDecorationIds=[]}toggleCollapseState(r){if(!r.length)return;r=r.sort((o,d)=>o.regionIndex-d.regionIndex);const c={};this._decorationProvider.changeDecorations(o=>{let d=0,l=-1,p=-1;const m=v=>{for(;d<v;){const b=this._regions.getEndLineNumber(d),w=this._regions.isCollapsed(d);if(b<=l){const E=this.regions.getSource(d)!==0;o.changeDecorationOptions(this._editorDecorationIds[d],this._decorationProvider.getDecorationOption(w,b<=p,E))}w&&b>p&&(p=b),d++}};for(const v of r){const b=v.regionIndex,w=this._editorDecorationIds[b];if(w&&!c[w]){c[w]=!0,m(b);const E=!this._regions.isCollapsed(b);this._regions.setCollapsed(b,E),l=Math.max(l,this._regions.getEndLineNumber(b))}}m(this._regions.length)}),this._updateEventEmitter.fire({model:this,collapseStateChanged:r})}removeManualRanges(r){const c=new Array,o=d=>{for(const l of r)if(!(l.startLineNumber>d.endLineNumber||d.startLineNumber>l.endLineNumber))return!0;return!1};for(let d=0;d<this._regions.length;d++){const l=this._regions.toFoldRange(d);(l.source===0||!o(l))&&c.push(l)}this.updatePost(k.FoldingRegions.fromFoldRanges(c))}update(r,c=[]){const o=this._currentFoldedOrManualRanges(c),d=k.FoldingRegions.sanitizeAndMerge(r,o,this._textModel.getLineCount());this.updatePost(k.FoldingRegions.fromFoldRanges(d))}updatePost(r){const c=[];let o=-1;for(let d=0,l=r.length;d<l;d++){const p=r.getStartLineNumber(d),m=r.getEndLineNumber(d),v=r.isCollapsed(d),b=r.getSource(d)!==0,w={startLineNumber:p,startColumn:this._textModel.getLineMaxColumn(p),endLineNumber:m,endColumn:this._textModel.getLineMaxColumn(m)+1};c.push({range:w,options:this._decorationProvider.getDecorationOption(v,m<=o,b)}),v&&m>o&&(o=m)}this._decorationProvider.changeDecorations(d=>this._editorDecorationIds=d.deltaDecorations(this._editorDecorationIds,c)),this._regions=r,this._updateEventEmitter.fire({model:this})}_currentFoldedOrManualRanges(r=[]){const c=(d,l)=>{for(const p of r)if(d<p&&p<=l)return!0;return!1},o=[];for(let d=0,l=this._regions.length;d<l;d++){let p=this.regions.isCollapsed(d);const m=this.regions.getSource(d);if(p||m!==0){const v=this._regions.toFoldRange(d),b=this._textModel.getDecorationRange(this._editorDecorationIds[d]);b&&(p&&c(b.startLineNumber,b.endLineNumber)&&(p=!1),o.push({startLineNumber:b.startLineNumber,endLineNumber:b.endLineNumber,type:v.type,isCollapsed:p,source:m}))}}return o}getMemento(){const r=this._currentFoldedOrManualRanges(),c=[],o=this._textModel.getLineCount();for(let d=0,l=r.length;d<l;d++){const p=r[d];if(p.startLineNumber>=p.endLineNumber||p.startLineNumber<1||p.endLineNumber>o)continue;const m=this._getLinesChecksum(p.startLineNumber+1,p.endLineNumber);c.push({startLineNumber:p.startLineNumber,endLineNumber:p.endLineNumber,isCollapsed:p.isCollapsed,source:p.source,checksum:m})}return c.length>0?c:void 0}applyMemento(r){var c,o;if(!Array.isArray(r))return;const d=[],l=this._textModel.getLineCount();for(const m of r){if(m.startLineNumber>=m.endLineNumber||m.startLineNumber<1||m.endLineNumber>l)continue;const v=this._getLinesChecksum(m.startLineNumber+1,m.endLineNumber);(!m.checksum||v===m.checksum)&&d.push({startLineNumber:m.startLineNumber,endLineNumber:m.endLineNumber,type:void 0,isCollapsed:(c=m.isCollapsed)!==null&&c!==void 0?c:!0,source:(o=m.source)!==null&&o!==void 0?o:0})}const p=k.FoldingRegions.sanitizeAndMerge(this._regions,d,l);this.updatePost(k.FoldingRegions.fromFoldRanges(p))}_getLinesChecksum(r,c){return(0,y.hash)(this._textModel.getLineContent(r)+this._textModel.getLineContent(c))%1e6}dispose(){this._decorationProvider.removeDecorations(this._editorDecorationIds)}getAllRegionsAtLine(r,c){const o=[];if(this._regions){let d=this._regions.findRange(r),l=1;for(;d>=0;){const p=this._regions.toRegion(d);(!c||c(p,l))&&o.push(p),l++,d=p.parentIndex}}return o}getRegionAtLine(r){if(this._regions){const c=this._regions.findRange(r);if(c>=0)return this._regions.toRegion(c)}return null}getRegionsInside(r,c){const o=[],d=r?r.regionIndex+1:0,l=r?r.endLineNumber:Number.MAX_VALUE;if(c&&c.length===2){const p=[];for(let m=d,v=this._regions.length;m<v;m++){const b=this._regions.toRegion(m);if(this._regions.getStartLineNumber(m)<l){for(;p.length>0&&!b.containedBy(p[p.length-1]);)p.pop();p.push(b),c(b,p.length)&&o.push(b)}else break}}else for(let p=d,m=this._regions.length;p<m;p++){const v=this._regions.toRegion(p);if(this._regions.getStartLineNumber(p)<l)(!c||c(v))&&o.push(v);else break}return o}}e.FoldingModel=D;function S(h,r,c){const o=[];for(const d of c){const l=h.getRegionAtLine(d);if(l){const p=!l.isCollapsed;if(o.push(l),r>1){const m=h.getRegionsInside(l,(v,b)=>v.isCollapsed!==p&&b<r);o.push(...m)}}}h.toggleCollapseState(o)}e.toggleCollapseState=S;function f(h,r,c=Number.MAX_VALUE,o){const d=[];if(o&&o.length>0)for(const l of o){const p=h.getRegionAtLine(l);if(p&&(p.isCollapsed!==r&&d.push(p),c>1)){const m=h.getRegionsInside(p,(v,b)=>v.isCollapsed!==r&&b<c);d.push(...m)}}else{const l=h.getRegionsInside(null,(p,m)=>p.isCollapsed!==r&&m<c);d.push(...l)}h.toggleCollapseState(d)}e.setCollapseStateLevelsDown=f;function _(h,r,c,o){const d=[];for(const l of o){const p=h.getAllRegionsAtLine(l,(m,v)=>m.isCollapsed!==r&&v<=c);d.push(...p)}h.toggleCollapseState(d)}e.setCollapseStateLevelsUp=_;function g(h,r,c){const o=[];for(const d of c){const l=h.getAllRegionsAtLine(d,p=>p.isCollapsed!==r);l.length>0&&o.push(l[0])}h.toggleCollapseState(o)}e.setCollapseStateUp=g;function C(h,r,c,o){const d=(p,m)=>m===r&&p.isCollapsed!==c&&!o.some(v=>p.containsLine(v)),l=h.getRegionsInside(null,d);h.toggleCollapseState(l)}e.setCollapseStateAtLevel=C;function s(h,r,c){const o=[];for(const p of c){const m=h.getAllRegionsAtLine(p,void 0);m.length>0&&o.push(m[0])}const d=p=>o.every(m=>!m.containedBy(p)&&!p.containedBy(m))&&p.isCollapsed!==r,l=h.getRegionsInside(null,d);h.toggleCollapseState(l)}e.setCollapseStateForRest=s;function i(h,r,c){const o=h.textModel,d=h.regions,l=[];for(let p=d.length-1;p>=0;p--)if(c!==d.isCollapsed(p)){const m=d.getStartLineNumber(p);r.test(o.getLineContent(m))&&l.push(d.toRegion(p))}h.toggleCollapseState(l)}e.setCollapseStateForMatchingLines=i;function n(h,r,c){const o=h.regions,d=[];for(let l=o.length-1;l>=0;l--)c!==o.isCollapsed(l)&&r===o.getType(l)&&d.push(o.toRegion(l));h.toggleCollapseState(d)}e.setCollapseStateForType=n;function t(h,r){let c=null;const o=r.getRegionAtLine(h);if(o!==null&&(c=o.startLineNumber,h===c)){const d=o.parentIndex;d!==-1?c=r.regions.getStartLineNumber(d):c=null}return c}e.getParentFoldLine=t;function a(h,r){let c=r.getRegionAtLine(h);if(c!==null&&c.startLineNumber===h){if(h!==c.startLineNumber)return c.startLineNumber;{const o=c.parentIndex;let d=0;for(o!==-1&&(d=r.regions.getStartLineNumber(c.parentIndex));c!==null;)if(c.regionIndex>0){if(c=r.regions.toRegion(c.regionIndex-1),c.startLineNumber<=d)return null;if(c.parentIndex===o)return c.startLineNumber}else return null}}else if(r.regions.length>0)for(c=r.regions.toRegion(r.regions.length-1);c!==null;){if(c.startLineNumber<h)return c.startLineNumber;c.regionIndex>0?c=r.regions.toRegion(c.regionIndex-1):c=null}return null}e.getPreviousFoldLine=a;function u(h,r){let c=r.getRegionAtLine(h);if(c!==null&&c.startLineNumber===h){const o=c.parentIndex;let d=0;if(o!==-1)d=r.regions.getEndLineNumber(c.parentIndex);else{if(r.regions.length===0)return null;d=r.regions.getEndLineNumber(r.regions.length-1)}for(;c!==null;)if(c.regionIndex<r.regions.length){if(c=r.regions.toRegion(c.regionIndex+1),c.startLineNumber>=d)return null;if(c.parentIndex===o)return c.startLineNumber}else return null}else if(r.regions.length>0)for(c=r.regions.toRegion(0);c!==null;){if(c.startLineNumber>h)return c.startLineNumber;c.regionIndex<r.regions.length?c=r.regions.toRegion(c.regionIndex+1):c=null}return null}e.getNextFoldLine=u}),define(ne[543],se([1,0,14,6,5,122]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HiddenRangeModel=void 0;class S{get onDidChange(){return this._updateEventEmitter.event}get hiddenRanges(){return this._hiddenRanges}constructor(C){this._updateEventEmitter=new k.Emitter,this._hasLineChanges=!1,this._foldingModel=C,this._foldingModelListener=C.onDidChange(s=>this.updateHiddenRanges()),this._hiddenRanges=[],C.regions.length&&this.updateHiddenRanges()}notifyChangeModelContent(C){this._hiddenRanges.length&&!this._hasLineChanges&&(this._hasLineChanges=C.changes.some(s=>s.range.endLineNumber!==s.range.startLineNumber||(0,D.countEOL)(s.text)[0]!==0))}updateHiddenRanges(){let C=!1;const s=[];let i=0,n=0,t=Number.MAX_VALUE,a=-1;const u=this._foldingModel.regions;for(;i<u.length;i++){if(!u.isCollapsed(i))continue;const h=u.getStartLineNumber(i)+1,r=u.getEndLineNumber(i);t<=h&&r<=a||(!C&&n<this._hiddenRanges.length&&this._hiddenRanges[n].startLineNumber===h&&this._hiddenRanges[n].endLineNumber===r?(s.push(this._hiddenRanges[n]),n++):(C=!0,s.push(new y.Range(h,1,r,1))),t=h,a=r)}(this._hasLineChanges||C||n<this._hiddenRanges.length)&&this.applyHiddenRanges(s)}applyHiddenRanges(C){this._hiddenRanges=C,this._hasLineChanges=!1,this._updateEventEmitter.fire(C)}hasRanges(){return this._hiddenRanges.length>0}isHidden(C){return _(this._hiddenRanges,C)!==null}adjustSelections(C){let s=!1;const i=this._foldingModel.textModel;let n=null;const t=a=>((!n||!f(a,n))&&(n=_(this._hiddenRanges,a)),n?n.startLineNumber-1:null);for(let a=0,u=C.length;a<u;a++){let h=C[a];const r=t(h.startLineNumber);r&&(h=h.setStartPosition(r,i.getLineMaxColumn(r)),s=!0);const c=t(h.endLineNumber);c&&(h=h.setEndPosition(c,i.getLineMaxColumn(c)),s=!0),C[a]=h}return s}dispose(){this.hiddenRanges.length>0&&(this._hiddenRanges=[],this._updateEventEmitter.fire(this._hiddenRanges)),this._foldingModelListener&&(this._foldingModelListener.dispose(),this._foldingModelListener=null)}}e.HiddenRangeModel=S;function f(g,C){return g>=C.startLineNumber&&g<=C.endLineNumber}function _(g,C){const s=(0,L.findFirstInSorted)(g,i=>C<i.startLineNumber)-1;return s>=0&&g[s].endLineNumber>=C?g[s]:null}}),define(ne[292],se([1,0,207,182]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.computeRanges=e.RangesCollector=e.IndentRangeProvider=void 0;const y=5e3,D=\"indent\";class S{constructor(s,i,n){this.editorModel=s,this.languageConfigurationService=i,this.foldingRangesLimit=n,this.id=D}dispose(){}compute(s){const i=this.languageConfigurationService.getLanguageConfiguration(this.editorModel.getLanguageId()).foldingRules,n=i&&!!i.offSide,t=i&&i.markers;return Promise.resolve(g(this.editorModel,n,t,this.foldingRangesLimit))}}e.IndentRangeProvider=S;class f{constructor(s){this._startIndexes=[],this._endIndexes=[],this._indentOccurrences=[],this._length=0,this._foldingRangesLimit=s}insertFirst(s,i,n){if(s>k.MAX_LINE_NUMBER||i>k.MAX_LINE_NUMBER)return;const t=this._length;this._startIndexes[t]=s,this._endIndexes[t]=i,this._length++,n<1e3&&(this._indentOccurrences[n]=(this._indentOccurrences[n]||0)+1)}toIndentRanges(s){const i=this._foldingRangesLimit.limit;if(this._length<=i){this._foldingRangesLimit.update(this._length,!1);const n=new Uint32Array(this._length),t=new Uint32Array(this._length);for(let a=this._length-1,u=0;a>=0;a--,u++)n[u]=this._startIndexes[a],t[u]=this._endIndexes[a];return new k.FoldingRegions(n,t)}else{this._foldingRangesLimit.update(this._length,i);let n=0,t=this._indentOccurrences.length;for(let r=0;r<this._indentOccurrences.length;r++){const c=this._indentOccurrences[r];if(c){if(c+n>i){t=r;break}n+=c}}const a=s.getOptions().tabSize,u=new Uint32Array(i),h=new Uint32Array(i);for(let r=this._length-1,c=0;r>=0;r--){const o=this._startIndexes[r],d=s.getLineContent(o),l=(0,L.computeIndentLevel)(d,a);(l<t||l===t&&n++<i)&&(u[c]=o,h[c]=this._endIndexes[r],c++)}return new k.FoldingRegions(u,h)}}}e.RangesCollector=f;const _={limit:y,update:()=>{}};function g(C,s,i,n=_){const t=C.getOptions().tabSize,a=new f(n);let u;i&&(u=new RegExp(`(${i.start.source})|(?:${i.end.source})`));const h=[],r=C.getLineCount()+1;h.push({indent:-1,endAbove:r,line:r});for(let c=C.getLineCount();c>0;c--){const o=C.getLineContent(c),d=(0,L.computeIndentLevel)(o,t);let l=h[h.length-1];if(d===-1){s&&(l.endAbove=c);continue}let p;if(u&&(p=o.match(u)))if(p[1]){let m=h.length-1;for(;m>0&&h[m].indent!==-2;)m--;if(m>0){h.length=m+1,l=h[m],a.insertFirst(c,l.line,d),l.line=c,l.indent=d,l.endAbove=c;continue}}else{h.push({indent:-2,endAbove:c,line:c});continue}if(l.indent>d){do h.pop(),l=h[h.length-1];while(l.indent>d);const m=l.endAbove-1;m-c>=1&&a.insertFirst(c,m,d)}l.indent===d?l.endAbove=c:h.push({indent:d,endAbove:c,line:c})}return a.toIndentRanges(C)}e.computeRanges=g}),define(ne[293],se([1,0,9,2,182]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sanitizeRanges=e.SyntaxRangeProvider=void 0;const D={},S=\"syntax\";class f{constructor(i,n,t,a,u){this.editorModel=i,this.providers=n,this.handleFoldingRangesChange=t,this.foldingRangesLimit=a,this.fallbackRangeProvider=u,this.id=S,this.disposables=new k.DisposableStore,u&&this.disposables.add(u);for(const h of n)typeof h.onDidChange==\"function\"&&this.disposables.add(h.onDidChange(t))}compute(i){return _(this.providers,this.editorModel,i).then(n=>{var t,a;return n?C(n,this.foldingRangesLimit):(a=(t=this.fallbackRangeProvider)===null||t===void 0?void 0:t.compute(i))!==null&&a!==void 0?a:null})}dispose(){this.disposables.dispose()}}e.SyntaxRangeProvider=f;function _(s,i,n){let t=null;const a=s.map((u,h)=>Promise.resolve(u.provideFoldingRanges(i,D,n)).then(r=>{if(!n.isCancellationRequested&&Array.isArray(r)){Array.isArray(t)||(t=[]);const c=i.getLineCount();for(const o of r)o.start>0&&o.end>o.start&&o.end<=c&&t.push({start:o.start,end:o.end,rank:h,kind:o.kind})}},L.onUnexpectedExternalError));return Promise.all(a).then(u=>t)}class g{constructor(i){this._startIndexes=[],this._endIndexes=[],this._nestingLevels=[],this._nestingLevelCounts=[],this._types=[],this._length=0,this._foldingRangesLimit=i}add(i,n,t,a){if(i>y.MAX_LINE_NUMBER||n>y.MAX_LINE_NUMBER)return;const u=this._length;this._startIndexes[u]=i,this._endIndexes[u]=n,this._nestingLevels[u]=a,this._types[u]=t,this._length++,a<30&&(this._nestingLevelCounts[a]=(this._nestingLevelCounts[a]||0)+1)}toIndentRanges(){const i=this._foldingRangesLimit.limit;if(this._length<=i){this._foldingRangesLimit.update(this._length,!1);const n=new Uint32Array(this._length),t=new Uint32Array(this._length);for(let a=0;a<this._length;a++)n[a]=this._startIndexes[a],t[a]=this._endIndexes[a];return new y.FoldingRegions(n,t,this._types)}else{this._foldingRangesLimit.update(this._length,i);let n=0,t=this._nestingLevelCounts.length;for(let r=0;r<this._nestingLevelCounts.length;r++){const c=this._nestingLevelCounts[r];if(c){if(c+n>i){t=r;break}n+=c}}const a=new Uint32Array(i),u=new Uint32Array(i),h=[];for(let r=0,c=0;r<this._length;r++){const o=this._nestingLevels[r];(o<t||o===t&&n++<i)&&(a[c]=this._startIndexes[r],u[c]=this._endIndexes[r],h[c]=this._types[r],c++)}return new y.FoldingRegions(a,u,h)}}}function C(s,i){const n=s.sort((h,r)=>{let c=h.start-r.start;return c===0&&(c=h.rank-r.rank),c}),t=new g(i);let a;const u=[];for(const h of n)if(!a)a=h,t.add(h.start,h.end,h.kind&&h.kind.value,u.length);else if(h.start>a.start)if(h.end<=a.end)u.push(a),a=h,t.add(h.start,h.end,h.kind&&h.kind.value,u.length);else{if(h.start>a.end){do a=u.pop();while(a&&h.start>a.end);a&&u.push(a),a=h}t.add(h.start,h.end,h.kind&&h.kind.value,u.length)}return t.toIndentRanges()}e.sanitizeRanges=C}),define(ne[294],se([1,0,73,5,108]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FormattingEdit=void 0;class D{static _handleEolEdits(f,_){let g;const C=[];for(const s of _)typeof s.eol==\"number\"&&(g=s.eol),s.range&&typeof s.text==\"string\"&&C.push(s);return typeof g==\"number\"&&f.hasModel()&&f.getModel().pushEOL(g),C}static _isFullModelReplaceEdit(f,_){if(!f.hasModel())return!1;const g=f.getModel(),C=g.validateRange(_.range);return g.getFullModelRange().equalsRange(C)}static execute(f,_,g){g&&f.pushUndoStop();const C=y.StableEditorScrollState.capture(f),s=D._handleEolEdits(f,_);s.length===1&&D._isFullModelReplaceEdit(f,s[0])?f.executeEdits(\"formatEditsCommand\",s.map(i=>L.EditOperation.replace(k.Range.lift(i.range),i.text))):f.executeEdits(\"formatEditsCommand\",s.map(i=>L.EditOperation.replaceMove(k.Range.lift(i.range),i.text))),g&&f.pushUndoStop(),C.restoreRelativeVerticalPositionOfCursor(f)}}e.FormattingEdit=D}),define(ne[103],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HoverParticipantRegistry=e.HoverForeignElementAnchor=e.HoverRangeAnchor=void 0;class L{constructor(D,S,f,_){this.priority=D,this.range=S,this.initialMousePosX=f,this.initialMousePosY=_,this.type=1}equals(D){return D.type===1&&this.range.equalsRange(D.range)}canAdoptVisibleHover(D,S){return D.type===1&&S.lineNumber===this.range.startLineNumber}}e.HoverRangeAnchor=L;class k{constructor(D,S,f,_,g,C){this.priority=D,this.owner=S,this.range=f,this.initialMousePosX=_,this.initialMousePosY=g,this.supportsMarkerHover=C,this.type=2}equals(D){return D.type===2&&this.owner===D.owner}canAdoptVisibleHover(D,S){return D.type===2&&this.owner===D.owner}}e.HoverForeignElementAnchor=k,e.HoverParticipantRegistry=new class{constructor(){this._participants=[]}register(D){this._participants.push(D)}getAll(){return this._participants}}}),define(ne[544],se([1,0,24]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InPlaceReplaceCommand=void 0;class k{constructor(D,S,f){this._editRange=D,this._originalSelection=S,this._text=f}getEditOperations(D,S){S.addTrackedEditOperation(this._editRange,this._text)}computeCursorState(D,S){const _=S.getInverseEditOperations()[0].range;return this._originalSelection.isEmpty()?new L.Selection(_.endLineNumber,Math.min(this._originalSelection.positionColumn,_.endColumn),_.endLineNumber,Math.min(this._originalSelection.positionColumn,_.endColumn)):new L.Selection(_.endLineNumber,_.endColumn-this._text.length,_.endLineNumber,_.endColumn)}}e.InPlaceReplaceCommand=k}),define(ne[295],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.generateIndent=e.getSpaceCnt=void 0;function L(y,D){let S=0;for(let f=0;f<y.length;f++)y.charAt(f)===\"\t\"?S+=D:S++;return S}e.getSpaceCnt=L;function k(y,D,S){y=y<0?0:y;let f=\"\";if(!S){const _=Math.floor(y/D);y=y%D;for(let g=0;g<_;g++)f+=\"\t\"}for(let _=0;_<y;_++)f+=\" \";return f}e.generateIndent=k}),define(ne[214],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.showNextInlineSuggestionActionId=e.showPreviousInlineSuggestionActionId=e.inlineSuggestCommitId=void 0,e.inlineSuggestCommitId=\"editor.action.inlineSuggest.commit\",e.showPreviousInlineSuggestionActionId=\"editor.action.inlineSuggest.showPrevious\",e.showNextInlineSuggestionActionId=\"editor.action.inlineSuggest.showNext\"}),define(ne[151],se([1,0,9,2,42,12,5]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.lengthOfText=e.addPositions=e.applyObservableDecorations=e.ColumnRange=e.getReadonlyEmptyArray=e.applyEdits=void 0;function f(a,u){const h=new _(a),r=u.map(c=>{const o=S.Range.lift(c.range);return{startOffset:h.getOffset(o.getStartPosition()),endOffset:h.getOffset(o.getEndPosition()),text:c.text}});r.sort((c,o)=>o.startOffset-c.startOffset);for(const c of r)a=a.substring(0,c.startOffset)+c.text+a.substring(c.endOffset);return a}e.applyEdits=f;class _{constructor(u){this.lineStartOffsetByLineIdx=[],this.lineStartOffsetByLineIdx.push(0);for(let h=0;h<u.length;h++)u.charAt(h)===`\n`&&this.lineStartOffsetByLineIdx.push(h+1)}getOffset(u){return this.lineStartOffsetByLineIdx[u.lineNumber-1]+u.column-1}}const g=[];function C(){return g}e.getReadonlyEmptyArray=C;class s{constructor(u,h){if(this.startColumn=u,this.endColumnExclusive=h,u>h)throw new L.BugIndicatingError(`startColumn ${u} cannot be after endColumnExclusive ${h}`)}toRange(u){return new S.Range(u,this.startColumn,u,this.endColumnExclusive)}equals(u){return this.startColumn===u.startColumn&&this.endColumnExclusive===u.endColumnExclusive}}e.ColumnRange=s;function i(a,u){const h=new k.DisposableStore,r=a.createDecorationsCollection();return h.add((0,y.autorunOpts)({debugName:()=>`Apply decorations from ${u.debugName}`},c=>{const o=u.read(c);r.set(o)})),h.add({dispose:()=>{r.clear()}}),h}e.applyObservableDecorations=i;function n(a,u){return new D.Position(a.lineNumber+u.lineNumber-1,u.lineNumber===1?a.column+u.column-1:u.column)}e.addPositions=n;function t(a){let u=1,h=1;for(const r of a)r===`\n`?(u++,h=1):h++;return new D.Position(u,h)}e.lengthOfText=t}),define(ne[215],se([1,0,151]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ghostTextOrReplacementEquals=e.GhostTextReplacement=e.GhostTextPart=e.GhostText=void 0;class k{constructor(_,g){this.lineNumber=_,this.parts=g}equals(_){return this.lineNumber===_.lineNumber&&this.parts.length===_.parts.length&&this.parts.every((g,C)=>g.equals(_.parts[C]))}renderForScreenReader(_){if(this.parts.length===0)return\"\";const g=this.parts[this.parts.length-1],C=_.substr(0,g.column-1);return(0,L.applyEdits)(C,this.parts.map(i=>({range:{startLineNumber:1,endLineNumber:1,startColumn:i.column,endColumn:i.column},text:i.lines.join(`\n`)}))).substring(this.parts[0].column-1)}isEmpty(){return this.parts.every(_=>_.lines.length===0)}get lineCount(){return 1+this.parts.reduce((_,g)=>_+g.lines.length-1,0)}}e.GhostText=k;class y{constructor(_,g,C){this.column=_,this.lines=g,this.preview=C}equals(_){return this.column===_.column&&this.lines.length===_.lines.length&&this.lines.every((g,C)=>g===_.lines[C])}}e.GhostTextPart=y;class D{constructor(_,g,C,s=0){this.lineNumber=_,this.columnRange=g,this.newLines=C,this.additionalReservedLineCount=s,this.parts=[new y(this.columnRange.endColumnExclusive,this.newLines,!1)]}renderForScreenReader(_){return this.newLines.join(`\n`)}get lineCount(){return this.newLines.length}isEmpty(){return this.parts.every(_=>_.lines.length===0)}equals(_){return this.lineNumber===_.lineNumber&&this.columnRange.equals(_.columnRange)&&this.newLines.length===_.newLines.length&&this.newLines.every((g,C)=>g===_.newLines[C])&&this.additionalReservedLineCount===_.additionalReservedLineCount}}e.GhostTextReplacement=D;function S(f,_){return f===_?!0:!f||!_?!1:f instanceof k&&_ instanceof k||f instanceof D&&_ instanceof D?f.equals(_):!1}e.ghostTextOrReplacementEquals=S}),define(ne[296],se([1,0,168,11,5,215,151]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SingleTextEdit=void 0;class f{constructor(t,a){this.range=t,this.text=a}removeCommonPrefix(t,a){const u=a?this.range.intersectRanges(a):this.range;if(!u)return this;const h=t.getValueInRange(u,1),r=(0,k.commonPrefixLength)(h,this.text),c=(0,S.addPositions)(this.range.getStartPosition(),(0,S.lengthOfText)(h.substring(0,r))),o=this.text.substring(r),d=y.Range.fromPositions(c,this.range.getEndPosition());return new f(d,o)}augments(t){return this.text.startsWith(t.text)&&_(this.range,t.range)}computeGhostText(t,a,u,h=0){let r=this.removeCommonPrefix(t);if(r.range.endLineNumber!==r.range.startLineNumber)return;const c=t.getLineContent(r.range.startLineNumber),o=(0,k.getLeadingWhitespace)(c).length;if(r.range.startColumn-1<=o){const w=(0,k.getLeadingWhitespace)(r.text).length,E=c.substring(r.range.startColumn-1,o),[I,M]=[r.range.getStartPosition(),r.range.getEndPosition()],P=I.column+E.length<=M.column?I.delta(0,E.length):M,x=y.Range.fromPositions(P,M),T=r.text.startsWith(E)?r.text.substring(E.length):r.text.substring(w);r=new f(x,T)}const l=t.getValueInRange(r.range),p=C(l,r.text);if(!p)return;const m=r.range.startLineNumber,v=new Array;if(a===\"prefix\"){const w=p.filter(E=>E.originalLength===0);if(w.length>1||w.length===1&&w[0].originalStart!==l.length)return}const b=r.text.length-h;for(const w of p){const E=r.range.startColumn+w.originalStart+w.originalLength;if(a===\"subwordSmart\"&&u&&u.lineNumber===r.range.startLineNumber&&E<u.column||w.originalLength>0)return;if(w.modifiedLength===0)continue;const I=w.modifiedStart+w.modifiedLength,M=Math.max(w.modifiedStart,Math.min(I,b)),P=r.text.substring(w.modifiedStart,M),x=r.text.substring(M,Math.max(w.modifiedStart,I));if(P.length>0){const T=(0,k.splitLines)(P);v.push(new D.GhostTextPart(E,T,!1))}if(x.length>0){const T=(0,k.splitLines)(x);v.push(new D.GhostTextPart(E,T,!0))}}return new D.GhostText(m,v)}}e.SingleTextEdit=f;function _(n,t){return t.getStartPosition().equals(n.getStartPosition())&&t.getEndPosition().isBeforeOrEqual(n.getEndPosition())}let g;function C(n,t){if(g?.originalValue===n&&g?.newValue===t)return g?.changes;{let a=i(n,t,!0);if(a){const u=s(a);if(u>0){const h=i(n,t,!1);h&&s(h)<u&&(a=h)}}return g={originalValue:n,newValue:t,changes:a},a}}function s(n){let t=0;for(const a of n)t+=a.originalLength;return t}function i(n,t,a){if(n.length>5e3||t.length>5e3)return;function u(l){let p=0;for(let m=0,v=l.length;m<v;m++){const b=l.charCodeAt(m);b>p&&(p=b)}return p}const h=Math.max(u(n),u(t));function r(l){if(l<0)throw new Error(\"unexpected\");return h+l+1}function c(l){let p=0,m=0;const v=new Int32Array(l.length);for(let b=0,w=l.length;b<w;b++)if(a&&l[b]===\"(\"){const E=m*100+p;v[b]=r(2*E),p++}else if(a&&l[b]===\")\"){p=Math.max(p-1,0);const E=m*100+p;v[b]=r(2*E+1),p===0&&m++}else v[b]=l.charCodeAt(b);return v}const o=c(n),d=c(t);return new L.LcsDiff({getElements:()=>o},{getElements:()=>d}).ComputeDiff(!1).changes}}),define(ne[545],se([1,0,5,24]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CopyLinesCommand=void 0;class y{constructor(S,f,_){this._selection=S,this._isCopyingDown=f,this._noop=_||!1,this._selectionDirection=0,this._selectionId=null,this._startLineNumberDelta=0,this._endLineNumberDelta=0}getEditOperations(S,f){let _=this._selection;this._startLineNumberDelta=0,this._endLineNumberDelta=0,_.startLineNumber<_.endLineNumber&&_.endColumn===1&&(this._endLineNumberDelta=1,_=_.setEndPosition(_.endLineNumber-1,S.getLineMaxColumn(_.endLineNumber-1)));const g=[];for(let s=_.startLineNumber;s<=_.endLineNumber;s++)g.push(S.getLineContent(s));const C=g.join(`\n`);C===\"\"&&this._isCopyingDown&&(this._startLineNumberDelta++,this._endLineNumberDelta++),this._noop?f.addEditOperation(new L.Range(_.endLineNumber,S.getLineMaxColumn(_.endLineNumber),_.endLineNumber+1,1),_.endLineNumber===S.getLineCount()?\"\":`\n`):this._isCopyingDown?f.addEditOperation(new L.Range(_.startLineNumber,1,_.startLineNumber,1),C+`\n`):f.addEditOperation(new L.Range(_.endLineNumber,S.getLineMaxColumn(_.endLineNumber),_.endLineNumber,S.getLineMaxColumn(_.endLineNumber)),`\n`+C),this._selectionId=f.trackSelection(_),this._selectionDirection=this._selection.getDirection()}computeCursorState(S,f){let _=f.getTrackedSelection(this._selectionId);if(this._startLineNumberDelta!==0||this._endLineNumberDelta!==0){let g=_.startLineNumber,C=_.startColumn,s=_.endLineNumber,i=_.endColumn;this._startLineNumberDelta!==0&&(g=g+this._startLineNumberDelta,C=1),this._endLineNumberDelta!==0&&(s=s+this._endLineNumberDelta,i=1),_=k.Selection.createWithDirection(g,C,s,i,this._selectionDirection)}return _}}e.CopyLinesCommand=y}),define(ne[546],se([1,0,73,5]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SortLinesCommand=void 0;class y{static getCollator(){return y._COLLATOR||(y._COLLATOR=new Intl.Collator),y._COLLATOR}constructor(_,g){this.selection=_,this.descending=g,this.selectionId=null}getEditOperations(_,g){const C=S(_,this.selection,this.descending);C&&g.addEditOperation(C.range,C.text),this.selectionId=g.trackSelection(this.selection)}computeCursorState(_,g){return g.getTrackedSelection(this.selectionId)}static canRun(_,g,C){if(_===null)return!1;const s=D(_,g,C);if(!s)return!1;for(let i=0,n=s.before.length;i<n;i++)if(s.before[i]!==s.after[i])return!0;return!1}}e.SortLinesCommand=y,y._COLLATOR=null;function D(f,_,g){const C=_.startLineNumber;let s=_.endLineNumber;if(_.endColumn===1&&s--,C>=s)return null;const i=[];for(let t=C;t<=s;t++)i.push(f.getLineContent(t));let n=i.slice(0);return n.sort(y.getCollator().compare),g===!0&&(n=n.reverse()),{startLineNumber:C,endLineNumber:s,before:i,after:n}}function S(f,_,g){const C=D(f,_,g);return C?L.EditOperation.replace(new k.Range(C.startLineNumber,1,C.endLineNumber,f.getLineMaxColumn(C.endLineNumber)),C.after.join(`\n`)):null}}),define(ne[297],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isSemanticColoringEnabled=e.SEMANTIC_HIGHLIGHTING_SETTING_ID=void 0,e.SEMANTIC_HIGHLIGHTING_SETTING_ID=\"editor.semanticHighlighting\";function L(k,y,D){var S;const f=(S=D.getValue(e.SEMANTIC_HIGHLIGHTING_SETTING_ID,{overrideIdentifier:k.getLanguageId(),resource:k.uri}))===null||S===void 0?void 0:S.enabled;return typeof f==\"boolean\"?f:y.getColorTheme().semanticHighlighting}e.isSemanticColoringEnabled=L}),define(ne[298],se([1,0,64,12,5]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BracketSelectionRangeProvider=void 0;class D{provideSelectionRanges(f,_){return we(this,void 0,void 0,function*(){const g=[];for(const C of _){const s=[];g.push(s);const i=new Map;yield new Promise(n=>D._bracketsRightYield(n,0,f,C,i)),yield new Promise(n=>D._bracketsLeftYield(n,0,f,C,i,s))}return g})}static _bracketsRightYield(f,_,g,C,s){const i=new Map,n=Date.now();for(;;){if(_>=D._maxRounds){f();break}if(!C){f();break}const t=g.bracketPairs.findNextBracket(C);if(!t){f();break}if(Date.now()-n>D._maxDuration){setTimeout(()=>D._bracketsRightYield(f,_+1,g,C,s));break}if(t.bracketInfo.isOpeningBracket){const u=t.bracketInfo.bracketText,h=i.has(u)?i.get(u):0;i.set(u,h+1)}else{const u=t.bracketInfo.getOpeningBrackets()[0].bracketText;let h=i.has(u)?i.get(u):0;if(h-=1,i.set(u,Math.max(0,h)),h<0){let r=s.get(u);r||(r=new L.LinkedList,s.set(u,r)),r.push(t.range)}}C=t.range.getEndPosition()}}static _bracketsLeftYield(f,_,g,C,s,i){const n=new Map,t=Date.now();for(;;){if(_>=D._maxRounds&&s.size===0){f();break}if(!C){f();break}const a=g.bracketPairs.findPrevBracket(C);if(!a){f();break}if(Date.now()-t>D._maxDuration){setTimeout(()=>D._bracketsLeftYield(f,_+1,g,C,s,i));break}if(a.bracketInfo.isOpeningBracket){const h=a.bracketInfo.bracketText;let r=n.has(h)?n.get(h):0;if(r-=1,n.set(h,Math.max(0,r)),r<0){const c=s.get(h);if(c){const o=c.shift();c.size===0&&s.delete(h);const d=y.Range.fromPositions(a.range.getEndPosition(),o.getStartPosition()),l=y.Range.fromPositions(a.range.getStartPosition(),o.getEndPosition());i.push({range:d}),i.push({range:l}),D._addBracketLeading(g,l,i)}}}else{const h=a.bracketInfo.getOpeningBrackets()[0].bracketText,r=n.has(h)?n.get(h):0;n.set(h,r+1)}C=a.range.getStartPosition()}}static _addBracketLeading(f,_,g){if(_.startLineNumber===_.endLineNumber)return;const C=_.startLineNumber,s=f.getLineFirstNonWhitespaceColumn(C);s!==0&&s!==_.startColumn&&(g.push({range:y.Range.fromPositions(new k.Position(C,s),_.getEndPosition())}),g.push({range:y.Range.fromPositions(new k.Position(C,1),_.getEndPosition())}));const i=C-1;if(i>0){const n=f.getLineFirstNonWhitespaceColumn(i);n===_.startColumn&&n!==f.getLineLastNonWhitespaceColumn(i)&&(g.push({range:y.Range.fromPositions(new k.Position(i,n),_.getEndPosition())}),g.push({range:y.Range.fromPositions(new k.Position(i,1),_.getEndPosition())}))}}}e.BracketSelectionRangeProvider=D,D._maxDuration=30,D._maxRounds=2}),define(ne[547],se([1,0,11,5]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WordSelectionRangeProvider=void 0;class y{constructor(S=!0){this.selectSubwords=S}provideSelectionRanges(S,f){const _=[];for(const g of f){const C=[];_.push(C),this.selectSubwords&&this._addInWordRanges(C,S,g),this._addWordRanges(C,S,g),this._addWhitespaceLine(C,S,g),C.push({range:S.getFullModelRange()})}return _}_addInWordRanges(S,f,_){const g=f.getWordAtPosition(_);if(!g)return;const{word:C,startColumn:s}=g,i=_.column-s;let n=i,t=i,a=0;for(;n>=0;n--){const u=C.charCodeAt(n);if(n!==i&&(u===95||u===45))break;if((0,L.isLowerAsciiLetter)(u)&&(0,L.isUpperAsciiLetter)(a))break;a=u}for(n+=1;t<C.length;t++){const u=C.charCodeAt(t);if((0,L.isUpperAsciiLetter)(u)&&(0,L.isLowerAsciiLetter)(a))break;if(u===95||u===45)break;a=u}n<t&&S.push({range:new k.Range(_.lineNumber,s+n,_.lineNumber,s+t)})}_addWordRanges(S,f,_){const g=f.getWordAtPosition(_);g&&S.push({range:new k.Range(_.lineNumber,g.startColumn,_.lineNumber,g.endColumn)})}_addWhitespaceLine(S,f,_){f.getLineLength(_.lineNumber)>0&&f.getLineFirstNonWhitespaceColumn(_.lineNumber)===0&&f.getLineLastNonWhitespaceColumn(_.lineNumber)===0&&S.push({range:new k.Range(_.lineNumber,1,_.lineNumber,f.getLineMaxColumn(_.lineNumber))})}}e.WordSelectionRangeProvider=y}),define(ne[128],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SnippetParser=e.TextmateSnippet=e.Variable=e.FormatString=e.Transform=e.Choice=e.Placeholder=e.TransformableMarker=e.Text=e.Marker=e.Scanner=void 0;class L{constructor(){this.value=\"\",this.pos=0}static isDigitCharacter(a){return a>=48&&a<=57}static isVariableCharacter(a){return a===95||a>=97&&a<=122||a>=65&&a<=90}text(a){this.value=a,this.pos=0}tokenText(a){return this.value.substr(a.pos,a.len)}next(){if(this.pos>=this.value.length)return{type:14,pos:this.pos,len:0};const a=this.pos;let u=0,h=this.value.charCodeAt(a),r;if(r=L._table[h],typeof r==\"number\")return this.pos+=1,{type:r,pos:a,len:1};if(L.isDigitCharacter(h)){r=8;do u+=1,h=this.value.charCodeAt(a+u);while(L.isDigitCharacter(h));return this.pos+=u,{type:r,pos:a,len:u}}if(L.isVariableCharacter(h)){r=9;do h=this.value.charCodeAt(a+ ++u);while(L.isVariableCharacter(h)||L.isDigitCharacter(h));return this.pos+=u,{type:r,pos:a,len:u}}r=10;do u+=1,h=this.value.charCodeAt(a+u);while(!isNaN(h)&&typeof L._table[h]>\"u\"&&!L.isDigitCharacter(h)&&!L.isVariableCharacter(h));return this.pos+=u,{type:r,pos:a,len:u}}}e.Scanner=L,L._table={[36]:0,[58]:1,[44]:2,[123]:3,[125]:4,[92]:5,[47]:6,[124]:7,[43]:11,[45]:12,[63]:13};class k{constructor(){this._children=[]}appendChild(a){return a instanceof y&&this._children[this._children.length-1]instanceof y?this._children[this._children.length-1].value+=a.value:(a.parent=this,this._children.push(a)),this}replace(a,u){const{parent:h}=a,r=h.children.indexOf(a),c=h.children.slice(0);c.splice(r,1,...u),h._children=c,function o(d,l){for(const p of d)p.parent=l,o(p.children,p)}(u,h)}get children(){return this._children}get rightMostDescendant(){return this._children.length>0?this._children[this._children.length-1].rightMostDescendant:this}get snippet(){let a=this;for(;;){if(!a)return;if(a instanceof i)return a;a=a.parent}}toString(){return this.children.reduce((a,u)=>a+u.toString(),\"\")}len(){return 0}}e.Marker=k;class y extends k{constructor(a){super(),this.value=a}toString(){return this.value}len(){return this.value.length}clone(){return new y(this.value)}}e.Text=y;class D extends k{}e.TransformableMarker=D;class S extends D{static compareByIndex(a,u){return a.index===u.index?0:a.isFinalTabstop?1:u.isFinalTabstop||a.index<u.index?-1:a.index>u.index?1:0}constructor(a){super(),this.index=a}get isFinalTabstop(){return this.index===0}get choice(){return this._children.length===1&&this._children[0]instanceof f?this._children[0]:void 0}clone(){const a=new S(this.index);return this.transform&&(a.transform=this.transform.clone()),a._children=this.children.map(u=>u.clone()),a}}e.Placeholder=S;class f extends k{constructor(){super(...arguments),this.options=[]}appendChild(a){return a instanceof y&&(a.parent=this,this.options.push(a)),this}toString(){return this.options[0].value}len(){return this.options[0].len()}clone(){const a=new f;return this.options.forEach(a.appendChild,a),a}}e.Choice=f;class _ extends k{constructor(){super(...arguments),this.regexp=new RegExp(\"\")}resolve(a){const u=this;let h=!1,r=a.replace(this.regexp,function(){return h=!0,u._replace(Array.prototype.slice.call(arguments,0,-2))});return!h&&this._children.some(c=>c instanceof g&&!!c.elseValue)&&(r=this._replace([])),r}_replace(a){let u=\"\";for(const h of this._children)if(h instanceof g){let r=a[h.index]||\"\";r=h.resolve(r),u+=r}else u+=h.toString();return u}toString(){return\"\"}clone(){const a=new _;return a.regexp=new RegExp(this.regexp.source,(this.regexp.ignoreCase?\"i\":\"\")+(this.regexp.global?\"g\":\"\")),a._children=this.children.map(u=>u.clone()),a}}e.Transform=_;class g extends k{constructor(a,u,h,r){super(),this.index=a,this.shorthandName=u,this.ifValue=h,this.elseValue=r}resolve(a){return this.shorthandName===\"upcase\"?a?a.toLocaleUpperCase():\"\":this.shorthandName===\"downcase\"?a?a.toLocaleLowerCase():\"\":this.shorthandName===\"capitalize\"?a?a[0].toLocaleUpperCase()+a.substr(1):\"\":this.shorthandName===\"pascalcase\"?a?this._toPascalCase(a):\"\":this.shorthandName===\"camelcase\"?a?this._toCamelCase(a):\"\":a&&typeof this.ifValue==\"string\"?this.ifValue:!a&&typeof this.elseValue==\"string\"?this.elseValue:a||\"\"}_toPascalCase(a){const u=a.match(/[a-z0-9]+/gi);return u?u.map(h=>h.charAt(0).toUpperCase()+h.substr(1)).join(\"\"):a}_toCamelCase(a){const u=a.match(/[a-z0-9]+/gi);return u?u.map((h,r)=>r===0?h.charAt(0).toLowerCase()+h.substr(1):h.charAt(0).toUpperCase()+h.substr(1)).join(\"\"):a}clone(){return new g(this.index,this.shorthandName,this.ifValue,this.elseValue)}}e.FormatString=g;class C extends D{constructor(a){super(),this.name=a}resolve(a){let u=a.resolve(this);return this.transform&&(u=this.transform.resolve(u||\"\")),u!==void 0?(this._children=[new y(u)],!0):!1}clone(){const a=new C(this.name);return this.transform&&(a.transform=this.transform.clone()),a._children=this.children.map(u=>u.clone()),a}}e.Variable=C;function s(t,a){const u=[...t];for(;u.length>0;){const h=u.shift();if(!a(h))break;u.unshift(...h.children)}}class i extends k{get placeholderInfo(){if(!this._placeholders){const a=[];let u;this.walk(function(h){return h instanceof S&&(a.push(h),u=!u||u.index<h.index?h:u),!0}),this._placeholders={all:a,last:u}}return this._placeholders}get placeholders(){const{all:a}=this.placeholderInfo;return a}offset(a){let u=0,h=!1;return this.walk(r=>r===a?(h=!0,!1):(u+=r.len(),!0)),h?u:-1}fullLen(a){let u=0;return s([a],h=>(u+=h.len(),!0)),u}enclosingPlaceholders(a){const u=[];let{parent:h}=a;for(;h;)h instanceof S&&u.push(h),h=h.parent;return u}resolveVariables(a){return this.walk(u=>(u instanceof C&&u.resolve(a)&&(this._placeholders=void 0),!0)),this}appendChild(a){return this._placeholders=void 0,super.appendChild(a)}replace(a,u){return this._placeholders=void 0,super.replace(a,u)}clone(){const a=new i;return this._children=this.children.map(u=>u.clone()),a}walk(a){s(this.children,a)}}e.TextmateSnippet=i;class n{constructor(){this._scanner=new L,this._token={type:14,pos:0,len:0}}static escape(a){return a.replace(/\\$|}|\\\\/g,\"\\\\$&\")}static guessNeedsClipboard(a){return/\\${?CLIPBOARD/.test(a)}parse(a,u,h){const r=new i;return this.parseFragment(a,r),this.ensureFinalTabstop(r,h??!1,u??!1),r}parseFragment(a,u){const h=u.children.length;for(this._scanner.text(a),this._token=this._scanner.next();this._parse(u););const r=new Map,c=[];u.walk(l=>(l instanceof S&&(l.isFinalTabstop?r.set(0,void 0):!r.has(l.index)&&l.children.length>0?r.set(l.index,l.children):c.push(l)),!0));const o=(l,p)=>{const m=r.get(l.index);if(!m)return;const v=new S(l.index);v.transform=l.transform;for(const b of m){const w=b.clone();v.appendChild(w),w instanceof S&&r.has(w.index)&&!p.has(w.index)&&(p.add(w.index),o(w,p),p.delete(w.index))}u.replace(l,[v])},d=new Set;for(const l of c)o(l,d);return u.children.slice(h)}ensureFinalTabstop(a,u,h){(u||h&&a.placeholders.length>0)&&(a.placeholders.find(c=>c.index===0)||a.appendChild(new S(0)))}_accept(a,u){if(a===void 0||this._token.type===a){const h=u?this._scanner.tokenText(this._token):!0;return this._token=this._scanner.next(),h}return!1}_backTo(a){return this._scanner.pos=a.pos+a.len,this._token=a,!1}_until(a){const u=this._token;for(;this._token.type!==a;){if(this._token.type===14)return!1;if(this._token.type===5){const r=this._scanner.next();if(r.type!==0&&r.type!==4&&r.type!==5)return!1}this._token=this._scanner.next()}const h=this._scanner.value.substring(u.pos,this._token.pos).replace(/\\\\(\\$|}|\\\\)/g,\"$1\");return this._token=this._scanner.next(),h}_parse(a){return this._parseEscaped(a)||this._parseTabstopOrVariableName(a)||this._parseComplexPlaceholder(a)||this._parseComplexVariable(a)||this._parseAnything(a)}_parseEscaped(a){let u;return(u=this._accept(5,!0))?(u=this._accept(0,!0)||this._accept(4,!0)||this._accept(5,!0)||u,a.appendChild(new y(u)),!0):!1}_parseTabstopOrVariableName(a){let u;const h=this._token;return this._accept(0)&&(u=this._accept(9,!0)||this._accept(8,!0))?(a.appendChild(/^\\d+$/.test(u)?new S(Number(u)):new C(u)),!0):this._backTo(h)}_parseComplexPlaceholder(a){let u;const h=this._token;if(!(this._accept(0)&&this._accept(3)&&(u=this._accept(8,!0))))return this._backTo(h);const c=new S(Number(u));if(this._accept(1))for(;;){if(this._accept(4))return a.appendChild(c),!0;if(!this._parse(c))return a.appendChild(new y(\"${\"+u+\":\")),c.children.forEach(a.appendChild,a),!0}else if(c.index>0&&this._accept(7)){const o=new f;for(;;){if(this._parseChoiceElement(o)){if(this._accept(2))continue;if(this._accept(7)&&(c.appendChild(o),this._accept(4)))return a.appendChild(c),!0}return this._backTo(h),!1}}else return this._accept(6)?this._parseTransform(c)?(a.appendChild(c),!0):(this._backTo(h),!1):this._accept(4)?(a.appendChild(c),!0):this._backTo(h)}_parseChoiceElement(a){const u=this._token,h=[];for(;!(this._token.type===2||this._token.type===7);){let r;if((r=this._accept(5,!0))?r=this._accept(2,!0)||this._accept(7,!0)||this._accept(5,!0)||r:r=this._accept(void 0,!0),!r)return this._backTo(u),!1;h.push(r)}return h.length===0?(this._backTo(u),!1):(a.appendChild(new y(h.join(\"\"))),!0)}_parseComplexVariable(a){let u;const h=this._token;if(!(this._accept(0)&&this._accept(3)&&(u=this._accept(9,!0))))return this._backTo(h);const c=new C(u);if(this._accept(1))for(;;){if(this._accept(4))return a.appendChild(c),!0;if(!this._parse(c))return a.appendChild(new y(\"${\"+u+\":\")),c.children.forEach(a.appendChild,a),!0}else return this._accept(6)?this._parseTransform(c)?(a.appendChild(c),!0):(this._backTo(h),!1):this._accept(4)?(a.appendChild(c),!0):this._backTo(h)}_parseTransform(a){const u=new _;let h=\"\",r=\"\";for(;!this._accept(6);){let c;if(c=this._accept(5,!0)){c=this._accept(6,!0)||c,h+=c;continue}if(this._token.type!==14){h+=this._accept(void 0,!0);continue}return!1}for(;!this._accept(6);){let c;if(c=this._accept(5,!0)){c=this._accept(5,!0)||this._accept(6,!0)||c,u.appendChild(new y(c));continue}if(!(this._parseFormatString(u)||this._parseAnything(u)))return!1}for(;!this._accept(4);){if(this._token.type!==14){r+=this._accept(void 0,!0);continue}return!1}try{u.regexp=new RegExp(h,r)}catch{return!1}return a.transform=u,!0}_parseFormatString(a){const u=this._token;if(!this._accept(0))return!1;let h=!1;this._accept(3)&&(h=!0);const r=this._accept(8,!0);if(r)if(h){if(this._accept(4))return a.appendChild(new g(Number(r))),!0;if(!this._accept(1))return this._backTo(u),!1}else return a.appendChild(new g(Number(r))),!0;else return this._backTo(u),!1;if(this._accept(6)){const c=this._accept(9,!0);return!c||!this._accept(4)?(this._backTo(u),!1):(a.appendChild(new g(Number(r),c)),!0)}else if(this._accept(11)){const c=this._until(4);if(c)return a.appendChild(new g(Number(r),void 0,c,void 0)),!0}else if(this._accept(12)){const c=this._until(4);if(c)return a.appendChild(new g(Number(r),void 0,void 0,c)),!0}else if(this._accept(13)){const c=this._until(1);if(c){const o=this._until(4);if(o)return a.appendChild(new g(Number(r),void 0,c,o)),!0}}else{const c=this._until(4);if(c)return a.appendChild(new g(Number(r),void 0,void 0,c)),!0}return this._backTo(u),!1}_parseAnything(a){return this._token.type!==14?(a.appendChild(new y(this._scanner.tokenText(this._token))),this._accept(void 0),!0):!1}}e.SnippetParser=n}),define(ne[299],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StickyModel=e.StickyElement=e.StickyRange=void 0;class L{constructor(S,f){this.startLineNumber=S,this.endLineNumber=f}}e.StickyRange=L;class k{constructor(S,f,_){this.range=S,this.children=f,this.parent=_}}e.StickyElement=k;class y{constructor(S,f,_,g){this.uri=S,this.version=f,this.element=_,this.outlineProviderId=g}}e.StickyModel=y}),define(ne[300],se([1,0,14,72,11]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CompletionModel=e.LineContext=void 0;class D{constructor(_,g){this.leadingLineContent=_,this.characterCountDelta=g}}e.LineContext=D;class S{constructor(_,g,C,s,i,n,t=k.FuzzyScoreOptions.default,a=void 0){this.clipboardText=a,this._snippetCompareFn=S._compareCompletionItems,this._items=_,this._column=g,this._wordDistance=s,this._options=i,this._refilterKind=1,this._lineContext=C,this._fuzzyScoreOptions=t,n===\"top\"?this._snippetCompareFn=S._compareCompletionItemsSnippetsUp:n===\"bottom\"&&(this._snippetCompareFn=S._compareCompletionItemsSnippetsDown)}get lineContext(){return this._lineContext}set lineContext(_){(this._lineContext.leadingLineContent!==_.leadingLineContent||this._lineContext.characterCountDelta!==_.characterCountDelta)&&(this._refilterKind=this._lineContext.characterCountDelta<_.characterCountDelta&&this._filteredItems?2:1,this._lineContext=_)}get items(){return this._ensureCachedState(),this._filteredItems}getItemsByProvider(){return this._ensureCachedState(),this._itemsByProvider}getIncompleteProvider(){this._ensureCachedState();const _=new Set;for(const[g,C]of this.getItemsByProvider())C.length>0&&C[0].container.incomplete&&_.add(g);return _}get stats(){return this._ensureCachedState(),this._stats}_ensureCachedState(){this._refilterKind!==0&&this._createCachedState()}_createCachedState(){this._itemsByProvider=new Map;const _=[],{leadingLineContent:g,characterCountDelta:C}=this._lineContext;let s=\"\",i=\"\";const n=this._refilterKind===1?this._items:this._filteredItems,t=[],a=!this._options.filterGraceful||n.length>2e3?k.fuzzyScore:k.fuzzyScoreGracefulAggressive;for(let u=0;u<n.length;u++){const h=n[u];if(h.isInvalid)continue;const r=this._itemsByProvider.get(h.provider);r?r.push(h):this._itemsByProvider.set(h.provider,[h]);const c=h.position.column-h.editStart.column,o=c+C-(h.position.column-this._column);if(s.length!==o&&(s=o===0?\"\":g.slice(-o),i=s.toLowerCase()),h.word=s,o===0)h.score=k.FuzzyScore.Default;else{let d=0;for(;d<c;){const l=s.charCodeAt(d);if(l===32||l===9)d+=1;else break}if(d>=o)h.score=k.FuzzyScore.Default;else if(typeof h.completion.filterText==\"string\"){const l=a(s,i,d,h.completion.filterText,h.filterTextLow,0,this._fuzzyScoreOptions);if(!l)continue;(0,y.compareIgnoreCase)(h.completion.filterText,h.textLabel)===0?h.score=l:(h.score=(0,k.anyScore)(s,i,d,h.textLabel,h.labelLow,0),h.score[0]=l[0])}else{const l=a(s,i,d,h.textLabel,h.labelLow,0,this._fuzzyScoreOptions);if(!l)continue;h.score=l}}h.idx=u,h.distance=this._wordDistance.distance(h.position,h.completion),t.push(h),_.push(h.textLabel.length)}this._filteredItems=t.sort(this._snippetCompareFn),this._refilterKind=0,this._stats={pLabelLen:_.length?(0,L.quickSelect)(_.length-.85,_,(u,h)=>u-h):0}}static _compareCompletionItems(_,g){return _.score[0]>g.score[0]?-1:_.score[0]<g.score[0]?1:_.distance<g.distance?-1:_.distance>g.distance?1:_.idx<g.idx?-1:_.idx>g.idx?1:0}static _compareCompletionItemsSnippetsDown(_,g){if(_.completion.kind!==g.completion.kind){if(_.completion.kind===27)return 1;if(g.completion.kind===27)return-1}return S._compareCompletionItems(_,g)}static _compareCompletionItemsSnippetsUp(_,g){if(_.completion.kind!==g.completion.kind){if(_.completion.kind===27)return-1;if(g.completion.kind===27)return 1}return S._compareCompletionItems(_,g)}}e.CompletionModel=S}),define(ne[548],se([1,0,14,2,121]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommitCharacterController=void 0;class D{constructor(f,_,g,C){this._disposables=new k.DisposableStore,this._disposables.add(g.onDidSuggest(s=>{s.completionModel.items.length===0&&this.reset()})),this._disposables.add(g.onDidCancel(s=>{this.reset()})),this._disposables.add(_.onDidShow(()=>this._onItem(_.getFocusedItem()))),this._disposables.add(_.onDidFocus(this._onItem,this)),this._disposables.add(_.onDidHide(this.reset,this)),this._disposables.add(f.onWillType(s=>{if(this._active&&!_.isFrozen()&&g.state!==0){const i=s.charCodeAt(s.length-1);this._active.acceptCharacters.has(i)&&f.getOption(0)&&C(this._active.item)}}))}_onItem(f){if(!f||!(0,L.isNonEmptyArray)(f.item.completion.commitCharacters)){this.reset();return}if(this._active&&this._active.item.item===f.item)return;const _=new y.CharacterSet;for(const g of f.item.completion.commitCharacters)g.length>0&&_.add(g.charCodeAt(0));this._active={acceptCharacters:_,item:f}}reset(){this._active=void 0}dispose(){this._disposables.dispose()}}e.CommitCharacterController=D}),define(ne[549],se([1,0,2]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OvertypingCapturer=void 0;class k{constructor(D,S){this._disposables=new L.DisposableStore,this._lastOvertyped=[],this._locked=!1,this._disposables.add(D.onWillType(()=>{if(this._locked||!D.hasModel())return;const f=D.getSelections(),_=f.length;let g=!1;for(let s=0;s<_;s++)if(!f[s].isEmpty()){g=!0;break}if(!g){this._lastOvertyped.length!==0&&(this._lastOvertyped.length=0);return}this._lastOvertyped=[];const C=D.getModel();for(let s=0;s<_;s++){const i=f[s];if(C.getValueLengthInRange(i)>k._maxSelectionLength)return;this._lastOvertyped[s]={value:C.getValueInRange(i),multiline:i.startLineNumber!==i.endLineNumber}}})),this._disposables.add(S.onDidTrigger(f=>{this._locked=!0})),this._disposables.add(S.onDidCancel(f=>{this._locked=!1}))}getLastOvertypedInfo(D){if(D>=0&&D<this._lastOvertyped.length)return this._lastOvertyped[D]}dispose(){this._disposables.dispose()}}e.OvertypingCapturer=k,k._maxSelectionLength=51200}),define(ne[301],se([1,0,14,5,298]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WordDistance=void 0;class D{static create(f,_){return we(this,void 0,void 0,function*(){if(!_.getOption(116).localityBonus||!_.hasModel())return D.None;const g=_.getModel(),C=_.getPosition();if(!f.canComputeWordRanges(g.uri))return D.None;const[s]=yield new y.BracketSelectionRangeProvider().provideSelectionRanges(g,[C]);if(s.length===0)return D.None;const i=yield f.computeWordRanges(g.uri,s[0].range);if(!i)return D.None;const n=g.getWordUntilPosition(C);return delete i[n.word],new class extends D{distance(t,a){if(!C.equals(_.getPosition()))return 0;if(a.kind===17)return 2<<20;const u=typeof a.label==\"string\"?a.label:a.label.label,h=i[u];if((0,L.isFalsyOrEmpty)(h))return 2<<20;const r=(0,L.binarySearch)(h,k.Range.fromPositions(t),k.Range.compareRangesUsingStarts),c=r>=0?h[r]:h[Math.max(0,~r-1)];let o=s.length;for(const d of s){if(!k.Range.containsRange(d.range,c))break;o-=1}return o}}})}}e.WordDistance=D,D.None=new class extends D{distance(){return 0}}}),define(ne[302],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.stateExists=e.findRules=e.substituteMatches=e.createError=e.log=e.sanitize=e.fixCase=e.empty=e.isIAction=e.isString=e.isFuzzyAction=e.isFuzzyActionArr=void 0;function L(t){return Array.isArray(t)}e.isFuzzyActionArr=L;function k(t){return!L(t)}e.isFuzzyAction=k;function y(t){return typeof t==\"string\"}e.isString=y;function D(t){return!y(t)}e.isIAction=D;function S(t){return!t}e.empty=S;function f(t,a){return t.ignoreCase&&a?a.toLowerCase():a}e.fixCase=f;function _(t){return t.replace(/[&<>'\"_]/g,\"-\")}e.sanitize=_;function g(t,a){console.log(`${t.languageId}: ${a}`)}e.log=g;function C(t,a){return new Error(`${t.languageId}: ${a}`)}e.createError=C;function s(t,a,u,h,r){const c=/\\$((\\$)|(#)|(\\d\\d?)|[sS](\\d\\d?)|@(\\w+))/g;let o=null;return a.replace(c,function(d,l,p,m,v,b,w,E,I){return S(p)?S(m)?!S(v)&&v<h.length?f(t,h[v]):!S(w)&&t&&typeof t[w]==\"string\"?t[w]:(o===null&&(o=r.split(\".\"),o.unshift(r)),!S(b)&&b<o.length?f(t,o[b]):\"\"):f(t,u):\"$\"})}e.substituteMatches=s;function i(t,a){let u=a;for(;u&&u.length>0;){const h=t.tokenizer[u];if(h)return h;const r=u.lastIndexOf(\".\");r<0?u=null:u=u.substr(0,r)}return null}e.findRules=i;function n(t,a){let u=a;for(;u&&u.length>0;){if(t.stateNames[u])return!0;const r=u.lastIndexOf(\".\");r<0?u=null:u=u.substr(0,r)}return!1}e.stateExists=n}),define(ne[550],se([1,0,302]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.compile=void 0;function k(t,a){if(!a||!Array.isArray(a))return!1;for(const u of a)if(!t(u))return!1;return!0}function y(t,a){return typeof t==\"boolean\"?t:a}function D(t,a){return typeof t==\"string\"?t:a}function S(t){const a={};for(const u of t)a[u]=!0;return a}function f(t,a=!1){a&&(t=t.map(function(h){return h.toLowerCase()}));const u=S(t);return a?function(h){return u[h.toLowerCase()]!==void 0&&u.hasOwnProperty(h.toLowerCase())}:function(h){return u[h]!==void 0&&u.hasOwnProperty(h)}}function _(t,a){a=a.replace(/@@/g,\"\u0001\");let u=0,h;do h=!1,a=a.replace(/@(\\w+)/g,function(c,o){h=!0;let d=\"\";if(typeof t[o]==\"string\")d=t[o];else if(t[o]&&t[o]instanceof RegExp)d=t[o].source;else throw t[o]===void 0?L.createError(t,\"language definition does not contain attribute '\"+o+\"', used at: \"+a):L.createError(t,\"attribute reference '\"+o+\"' must be a string, used at: \"+a);return L.empty(d)?\"\":\"(?:\"+d+\")\"}),u++;while(h&&u<5);a=a.replace(/\\x01/g,\"@\");const r=(t.ignoreCase?\"i\":\"\")+(t.unicode?\"u\":\"\");return new RegExp(a,r)}function g(t,a,u,h){if(h<0)return t;if(h<a.length)return a[h];if(h>=100){h=h-100;const r=u.split(\".\");if(r.unshift(u),h<r.length)return r[h]}return null}function C(t,a,u,h){let r=-1,c=u,o=u.match(/^\\$(([sS]?)(\\d\\d?)|#)(.*)$/);o&&(o[3]&&(r=parseInt(o[3]),o[2]&&(r=r+100)),c=o[4]);let d=\"~\",l=c;!c||c.length===0?(d=\"!=\",l=\"\"):/^\\w*$/.test(l)?d=\"==\":(o=c.match(/^(@|!@|~|!~|==|!=)(.*)$/),o&&(d=o[1],l=o[2]));let p;if((d===\"~\"||d===\"!~\")&&/^(\\w|\\|)*$/.test(l)){const m=f(l.split(\"|\"),t.ignoreCase);p=function(v){return d===\"~\"?m(v):!m(v)}}else if(d===\"@\"||d===\"!@\"){const m=t[l];if(!m)throw L.createError(t,\"the @ match target '\"+l+\"' is not defined, in rule: \"+a);if(!k(function(b){return typeof b==\"string\"},m))throw L.createError(t,\"the @ match target '\"+l+\"' must be an array of strings, in rule: \"+a);const v=f(m,t.ignoreCase);p=function(b){return d===\"@\"?v(b):!v(b)}}else if(d===\"~\"||d===\"!~\")if(l.indexOf(\"$\")<0){const m=_(t,\"^\"+l+\"$\");p=function(v){return d===\"~\"?m.test(v):!m.test(v)}}else p=function(m,v,b,w){return _(t,\"^\"+L.substituteMatches(t,l,v,b,w)+\"$\").test(m)};else if(l.indexOf(\"$\")<0){const m=L.fixCase(t,l);p=function(v){return d===\"==\"?v===m:v!==m}}else{const m=L.fixCase(t,l);p=function(v,b,w,E,I){const M=L.substituteMatches(t,m,b,w,E);return d===\"==\"?v===M:v!==M}}return r===-1?{name:u,value:h,test:function(m,v,b,w){return p(m,m,v,b,w)}}:{name:u,value:h,test:function(m,v,b,w){const E=g(m,v,b,r);return p(E||\"\",m,v,b,w)}}}function s(t,a,u){if(u){if(typeof u==\"string\")return u;if(u.token||u.token===\"\"){if(typeof u.token!=\"string\")throw L.createError(t,\"a 'token' attribute must be of type string, in rule: \"+a);{const h={token:u.token};if(u.token.indexOf(\"$\")>=0&&(h.tokenSubst=!0),typeof u.bracket==\"string\")if(u.bracket===\"@open\")h.bracket=1;else if(u.bracket===\"@close\")h.bracket=-1;else throw L.createError(t,\"a 'bracket' attribute must be either '@open' or '@close', in rule: \"+a);if(u.next){if(typeof u.next!=\"string\")throw L.createError(t,\"the next state must be a string value in rule: \"+a);{let r=u.next;if(!/^(@pop|@push|@popall)$/.test(r)&&(r[0]===\"@\"&&(r=r.substr(1)),r.indexOf(\"$\")<0&&!L.stateExists(t,L.substituteMatches(t,r,\"\",[],\"\"))))throw L.createError(t,\"the next state '\"+u.next+\"' is not defined in rule: \"+a);h.next=r}}return typeof u.goBack==\"number\"&&(h.goBack=u.goBack),typeof u.switchTo==\"string\"&&(h.switchTo=u.switchTo),typeof u.log==\"string\"&&(h.log=u.log),typeof u.nextEmbedded==\"string\"&&(h.nextEmbedded=u.nextEmbedded,t.usesEmbedded=!0),h}}else if(Array.isArray(u)){const h=[];for(let r=0,c=u.length;r<c;r++)h[r]=s(t,a,u[r]);return{group:h}}else if(u.cases){const h=[];for(const c in u.cases)if(u.cases.hasOwnProperty(c)){const o=s(t,a,u.cases[c]);c===\"@default\"||c===\"@\"||c===\"\"?h.push({test:void 0,value:o,name:c}):c===\"@eos\"?h.push({test:function(d,l,p,m){return m},value:o,name:c}):h.push(C(t,a,c,o))}const r=t.defaultToken;return{test:function(c,o,d,l){for(const p of h)if(!p.test||p.test(c,o,d,l))return p.value;return r}}}else throw L.createError(t,\"an action must be a string, an object with a 'token' or 'cases' attribute, or an array of actions; in rule: \"+a)}else return{token:\"\"}}class i{constructor(a){this.regex=new RegExp(\"\"),this.action={token:\"\"},this.matchOnlyAtLineStart=!1,this.name=\"\",this.name=a}setRegex(a,u){let h;if(typeof u==\"string\")h=u;else if(u instanceof RegExp)h=u.source;else throw L.createError(a,\"rules must start with a match string or regular expression: \"+this.name);this.matchOnlyAtLineStart=h.length>0&&h[0]===\"^\",this.name=this.name+\": \"+h,this.regex=_(a,\"^(?:\"+(this.matchOnlyAtLineStart?h.substr(1):h)+\")\")}setAction(a,u){this.action=s(a,this.name,u)}}function n(t,a){if(!a||typeof a!=\"object\")throw new Error(\"Monarch: expecting a language definition object\");const u={};u.languageId=t,u.includeLF=y(a.includeLF,!1),u.noThrow=!1,u.maxStack=100,u.start=typeof a.start==\"string\"?a.start:null,u.ignoreCase=y(a.ignoreCase,!1),u.unicode=y(a.unicode,!1),u.tokenPostfix=D(a.tokenPostfix,\".\"+u.languageId),u.defaultToken=D(a.defaultToken,\"source\"),u.usesEmbedded=!1;const h=a;h.languageId=t,h.includeLF=u.includeLF,h.ignoreCase=u.ignoreCase,h.unicode=u.unicode,h.noThrow=u.noThrow,h.usesEmbedded=u.usesEmbedded,h.stateNames=a.tokenizer,h.defaultToken=u.defaultToken;function r(o,d,l){for(const p of l){let m=p.include;if(m){if(typeof m!=\"string\")throw L.createError(u,\"an 'include' attribute must be a string at: \"+o);if(m[0]===\"@\"&&(m=m.substr(1)),!a.tokenizer[m])throw L.createError(u,\"include target '\"+m+\"' is not defined at: \"+o);r(o+\".\"+m,d,a.tokenizer[m])}else{const v=new i(o);if(Array.isArray(p)&&p.length>=1&&p.length<=3)if(v.setRegex(h,p[0]),p.length>=3)if(typeof p[1]==\"string\")v.setAction(h,{token:p[1],next:p[2]});else if(typeof p[1]==\"object\"){const b=p[1];b.next=p[2],v.setAction(h,b)}else throw L.createError(u,\"a next state as the last element of a rule can only be given if the action is either an object or a string, at: \"+o);else v.setAction(h,p[1]);else{if(!p.regex)throw L.createError(u,\"a rule must either be an array, or an object with a 'regex' or 'include' field at: \"+o);p.name&&typeof p.name==\"string\"&&(v.name=p.name),p.matchOnlyAtStart&&(v.matchOnlyAtLineStart=y(p.matchOnlyAtLineStart,!1)),v.setRegex(h,p.regex),v.setAction(h,p.action)}d.push(v)}}}if(!a.tokenizer||typeof a.tokenizer!=\"object\")throw L.createError(u,\"a language definition must define the 'tokenizer' attribute as an object\");u.tokenizer=[];for(const o in a.tokenizer)if(a.tokenizer.hasOwnProperty(o)){u.start||(u.start=o);const d=a.tokenizer[o];u.tokenizer[o]=new Array,r(\"tokenizer.\"+o,u.tokenizer[o],d)}if(u.usesEmbedded=h.usesEmbedded,a.brackets){if(!Array.isArray(a.brackets))throw L.createError(u,\"the 'brackets' attribute must be defined as an array\")}else a.brackets=[{open:\"{\",close:\"}\",token:\"delimiter.curly\"},{open:\"[\",close:\"]\",token:\"delimiter.square\"},{open:\"(\",close:\")\",token:\"delimiter.parenthesis\"},{open:\"<\",close:\">\",token:\"delimiter.angle\"}];const c=[];for(const o of a.brackets){let d=o;if(d&&Array.isArray(d)&&d.length===3&&(d={token:d[2],open:d[0],close:d[1]}),d.open===d.close)throw L.createError(u,\"open and close brackets in a 'brackets' attribute must be different: \"+d.open+`\n hint: use the 'bracket' attribute if matching on equal brackets is required.`);if(typeof d.open==\"string\"&&typeof d.token==\"string\"&&typeof d.close==\"string\")c.push({token:d.token+u.tokenPostfix,open:L.fixCase(u,d.open),close:L.fixCase(u,d.close)});else throw L.createError(u,\"every element in the 'brackets' array must be a '{open,close,token}' object or array\")}return u.brackets=c,u.noThrow=!0,u}e.compile=n}),define(ne[551],se([3,4]),function(Q,e){return Q.create(\"vs/base/browser/ui/actionbar/actionViewItems\",e)}),define(ne[552],se([3,4]),function(Q,e){return Q.create(\"vs/base/browser/ui/findinput/findInput\",e)}),define(ne[553],se([3,4]),function(Q,e){return Q.create(\"vs/base/browser/ui/findinput/findInputToggles\",e)}),define(ne[554],se([3,4]),function(Q,e){return Q.create(\"vs/base/browser/ui/findinput/replaceInput\",e)}),define(ne[555],se([3,4]),function(Q,e){return Q.create(\"vs/base/browser/ui/hover/hoverWidget\",e)}),define(ne[556],se([3,4]),function(Q,e){return Q.create(\"vs/base/browser/ui/iconLabel/iconLabelHover\",e)}),define(ne[557],se([3,4]),function(Q,e){return Q.create(\"vs/base/browser/ui/inputbox/inputBox\",e)}),define(ne[558],se([3,4]),function(Q,e){return Q.create(\"vs/base/browser/ui/keybindingLabel/keybindingLabel\",e)}),define(ne[559],se([3,4]),function(Q,e){return Q.create(\"vs/base/browser/ui/selectBox/selectBoxCustom\",e)}),define(ne[560],se([3,4]),function(Q,e){return Q.create(\"vs/base/browser/ui/toolbar/toolbar\",e)}),define(ne[561],se([3,4]),function(Q,e){return Q.create(\"vs/base/browser/ui/tree/abstractTree\",e)}),define(ne[562],se([3,4]),function(Q,e){return Q.create(\"vs/base/common/actions\",e)}),define(ne[39],se([1,0,6,2,562]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.toAction=e.EmptySubmenuAction=e.SubmenuAction=e.Separator=e.ActionRunner=e.Action=void 0;class D extends k.Disposable{constructor(i,n=\"\",t=\"\",a=!0,u){super(),this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,this._enabled=!0,this._id=i,this._label=n,this._cssClass=t,this._enabled=a,this._actionCallback=u}get id(){return this._id}get label(){return this._label}set label(i){this._setLabel(i)}_setLabel(i){this._label!==i&&(this._label=i,this._onDidChange.fire({label:i}))}get tooltip(){return this._tooltip||\"\"}set tooltip(i){this._setTooltip(i)}_setTooltip(i){this._tooltip!==i&&(this._tooltip=i,this._onDidChange.fire({tooltip:i}))}get class(){return this._cssClass}set class(i){this._setClass(i)}_setClass(i){this._cssClass!==i&&(this._cssClass=i,this._onDidChange.fire({class:i}))}get enabled(){return this._enabled}set enabled(i){this._setEnabled(i)}_setEnabled(i){this._enabled!==i&&(this._enabled=i,this._onDidChange.fire({enabled:i}))}get checked(){return this._checked}set checked(i){this._setChecked(i)}_setChecked(i){this._checked!==i&&(this._checked=i,this._onDidChange.fire({checked:i}))}run(i,n){return we(this,void 0,void 0,function*(){this._actionCallback&&(yield this._actionCallback(i))})}}e.Action=D;class S extends k.Disposable{constructor(){super(...arguments),this._onWillRun=this._register(new L.Emitter),this.onWillRun=this._onWillRun.event,this._onDidRun=this._register(new L.Emitter),this.onDidRun=this._onDidRun.event}run(i,n){return we(this,void 0,void 0,function*(){if(!i.enabled)return;this._onWillRun.fire({action:i});let t;try{yield this.runAction(i,n)}catch(a){t=a}this._onDidRun.fire({action:i,error:t})})}runAction(i,n){return we(this,void 0,void 0,function*(){yield i.run(n)})}}e.ActionRunner=S;class f{constructor(){this.id=f.ID,this.label=\"\",this.tooltip=\"\",this.class=\"separator\",this.enabled=!1,this.checked=!1}static join(...i){let n=[];for(const t of i)t.length&&(n.length?n=[...n,new f,...t]:n=t);return n}run(){return we(this,void 0,void 0,function*(){})}}e.Separator=f,f.ID=\"vs.actions.separator\";class _{get actions(){return this._actions}constructor(i,n,t,a){this.tooltip=\"\",this.enabled=!0,this.checked=void 0,this.id=i,this.label=n,this.class=a,this._actions=t}run(){return we(this,void 0,void 0,function*(){})}}e.SubmenuAction=_;class g extends D{constructor(){super(g.ID,y.localize(0,null),void 0,!1)}}e.EmptySubmenuAction=g,g.ID=\"vs.actions.empty\";function C(s){var i,n;return{id:s.id,label:s.label,class:void 0,enabled:(i=s.enabled)!==null&&i!==void 0?i:!0,checked:(n=s.checked)!==null&&n!==void 0?n:!1,run:()=>we(this,void 0,void 0,function*(){return s.run()}),tooltip:s.label}}e.toAction=C}),define(ne[563],se([3,4]),function(Q,e){return Q.create(\"vs/base/common/errorMessage\",e)}),define(ne[564],se([1,0,14,20,563]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.toErrorMessage=void 0;function D(g,C){return C&&(g.stack||g.stacktrace)?y.localize(0,null,f(g),S(g.stack)||S(g.stacktrace)):f(g)}function S(g){return Array.isArray(g)?g.join(`\n`):g}function f(g){return g.code===\"ERR_UNC_HOST_NOT_ALLOWED\"?`${g.message}. Please update the 'security.allowedUNCHosts' setting if you want to allow this host.`:typeof g.code==\"string\"&&typeof g.errno==\"number\"&&typeof g.syscall==\"string\"?y.localize(1,null,g.message):g.message||y.localize(2,null)}function _(g=null,C=!1){if(!g)return y.localize(3,null);if(Array.isArray(g)){const s=L.coalesce(g),i=_(s[0],C);return s.length>1?y.localize(4,null,i,s.length):i}if(k.isString(g))return g;if(g.detail){const s=g.detail;if(s.error)return D(s.error,C);if(s.exception)return D(s.exception,C)}return g.stack?D(g,C):g.message?g.message:y.localize(5,null)}e.toErrorMessage=_}),define(ne[565],se([3,4]),function(Q,e){return Q.create(\"vs/base/common/keybindingLabels\",e)}),define(ne[216],se([1,0,565]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserSettingsLabelProvider=e.ElectronAcceleratorLabelProvider=e.AriaLabelProvider=e.UILabelProvider=e.ModifierLabelProvider=void 0;class k{constructor(S,f,_=f){this.modifierLabels=[null],this.modifierLabels[2]=S,this.modifierLabels[1]=f,this.modifierLabels[3]=_}toLabel(S,f,_){if(f.length===0)return null;const g=[];for(let C=0,s=f.length;C<s;C++){const i=f[C],n=_(i);if(n===null)return null;g[C]=y(i,n,this.modifierLabels[S])}return g.join(\" \")}}e.ModifierLabelProvider=k,e.UILabelProvider=new k({ctrlKey:\"\\u2303\",shiftKey:\"\\u21E7\",altKey:\"\\u2325\",metaKey:\"\\u2318\",separator:\"\"},{ctrlKey:L.localize(0,null),shiftKey:L.localize(1,null),altKey:L.localize(2,null),metaKey:L.localize(3,null),separator:\"+\"},{ctrlKey:L.localize(4,null),shiftKey:L.localize(5,null),altKey:L.localize(6,null),metaKey:L.localize(7,null),separator:\"+\"}),e.AriaLabelProvider=new k({ctrlKey:L.localize(8,null),shiftKey:L.localize(9,null),altKey:L.localize(10,null),metaKey:L.localize(11,null),separator:\"+\"},{ctrlKey:L.localize(12,null),shiftKey:L.localize(13,null),altKey:L.localize(14,null),metaKey:L.localize(15,null),separator:\"+\"},{ctrlKey:L.localize(16,null),shiftKey:L.localize(17,null),altKey:L.localize(18,null),metaKey:L.localize(19,null),separator:\"+\"}),e.ElectronAcceleratorLabelProvider=new k({ctrlKey:\"Ctrl\",shiftKey:\"Shift\",altKey:\"Alt\",metaKey:\"Cmd\",separator:\"+\"},{ctrlKey:\"Ctrl\",shiftKey:\"Shift\",altKey:\"Alt\",metaKey:\"Super\",separator:\"+\"}),e.UserSettingsLabelProvider=new k({ctrlKey:\"ctrl\",shiftKey:\"shift\",altKey:\"alt\",metaKey:\"cmd\",separator:\"+\"},{ctrlKey:\"ctrl\",shiftKey:\"shift\",altKey:\"alt\",metaKey:\"win\",separator:\"+\"},{ctrlKey:\"ctrl\",shiftKey:\"shift\",altKey:\"alt\",metaKey:\"meta\",separator:\"+\"});function y(D,S,f){if(S===null)return\"\";const _=[];return D.ctrlKey&&_.push(f.ctrlKey),D.shiftKey&&_.push(f.shiftKey),D.altKey&&_.push(f.altKey),D.metaKey&&_.push(f.metaKey),S!==\"\"&&_.push(S),_.join(f.separator)}}),define(ne[566],se([3,4]),function(Q,e){return Q.create(\"vs/base/common/platform\",e)}),define(ne[17],se([1,0,566]),function(Q,e,L){\"use strict\";var k;Object.defineProperty(e,\"__esModule\",{value:!0}),e.isAndroid=e.isEdge=e.isSafari=e.isFirefox=e.isChrome=e.isLittleEndian=e.OS=e.setTimeout0=e.setTimeout0IsFaster=e.language=e.userAgent=e.isMobile=e.isIOS=e.isWebWorker=e.isWeb=e.isNative=e.isLinux=e.isMacintosh=e.isWindows=e.globals=e.LANGUAGE_DEFAULT=void 0,e.LANGUAGE_DEFAULT=\"en\";let y=!1,D=!1,S=!1,f=!1,_=!1,g=!1,C=!1,s=!1,i=!1,n=!1,t,a=e.LANGUAGE_DEFAULT,u=e.LANGUAGE_DEFAULT,h,r;e.globals=typeof self==\"object\"?self:typeof global==\"object\"?global:{};let c;typeof e.globals.vscode<\"u\"&&typeof e.globals.vscode.process<\"u\"?c=e.globals.vscode.process:typeof process<\"u\"&&(c=process);const o=typeof((k=c?.versions)===null||k===void 0?void 0:k.electron)==\"string\",d=o&&c?.type===\"renderer\";if(typeof navigator==\"object\"&&!d)r=navigator.userAgent,y=r.indexOf(\"Windows\")>=0,D=r.indexOf(\"Macintosh\")>=0,s=(r.indexOf(\"Macintosh\")>=0||r.indexOf(\"iPad\")>=0||r.indexOf(\"iPhone\")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,S=r.indexOf(\"Linux\")>=0,n=r?.indexOf(\"Mobi\")>=0,g=!0,t=L.getConfiguredDefaultLocale(L.localize(0,null))||e.LANGUAGE_DEFAULT,a=t,u=navigator.language;else if(typeof c==\"object\"){y=c.platform===\"win32\",D=c.platform===\"darwin\",S=c.platform===\"linux\",f=S&&!!c.env.SNAP&&!!c.env.SNAP_REVISION,C=o,i=!!c.env.CI||!!c.env.BUILD_ARTIFACTSTAGINGDIRECTORY,t=e.LANGUAGE_DEFAULT,a=e.LANGUAGE_DEFAULT;const b=c.env.VSCODE_NLS_CONFIG;if(b)try{const w=JSON.parse(b),E=w.availableLanguages[\"*\"];t=w.locale,u=w.osLocale,a=E||e.LANGUAGE_DEFAULT,h=w._translationsConfigFile}catch{}_=!0}else console.error(\"Unable to resolve platform.\");let l=0;D?l=1:y?l=3:S&&(l=2),e.isWindows=y,e.isMacintosh=D,e.isLinux=S,e.isNative=_,e.isWeb=g,e.isWebWorker=g&&typeof e.globals.importScripts==\"function\",e.isIOS=s,e.isMobile=n,e.userAgent=r,e.language=a,e.setTimeout0IsFaster=typeof e.globals.postMessage==\"function\"&&!e.globals.importScripts,e.setTimeout0=(()=>{if(e.setTimeout0IsFaster){const b=[];e.globals.addEventListener(\"message\",E=>{if(E.data&&E.data.vscodeScheduleAsyncWork)for(let I=0,M=b.length;I<M;I++){const P=b[I];if(P.id===E.data.vscodeScheduleAsyncWork){b.splice(I,1),P.callback();return}}});let w=0;return E=>{const I=++w;b.push({id:I,callback:E}),e.globals.postMessage({vscodeScheduleAsyncWork:I},\"*\")}}return b=>setTimeout(b)})(),e.OS=D||s?2:y?1:3;let p=!0,m=!1;function v(){if(!m){m=!0;const b=new Uint8Array(2);b[0]=1,b[1]=2,p=new Uint16Array(b.buffer)[0]===(2<<8)+1}return p}e.isLittleEndian=v,e.isChrome=!!(e.userAgent&&e.userAgent.indexOf(\"Chrome\")>=0),e.isFirefox=!!(e.userAgent&&e.userAgent.indexOf(\"Firefox\")>=0),e.isSafari=!!(!e.isChrome&&e.userAgent&&e.userAgent.indexOf(\"Safari\")>=0),e.isEdge=!!(e.userAgent&&e.userAgent.indexOf(\"Edg/\")>=0),e.isAndroid=!!(e.userAgent&&e.userAgent.indexOf(\"Android\")>=0)}),define(ne[217],se([1,0,52,17]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BrowserFeatures=void 0,e.BrowserFeatures={clipboard:{writeText:k.isNative||document.queryCommandSupported&&document.queryCommandSupported(\"copy\")||!!(navigator&&navigator.clipboard&&navigator.clipboard.writeText),readText:k.isNative||!!(navigator&&navigator.clipboard&&navigator.clipboard.readText)},keyboard:(()=>k.isNative||L.isStandalone()?0:navigator.keyboard||L.isSafari?1:2)(),touch:\"ontouchstart\"in window||navigator.maxTouchPoints>0,pointerEvents:window.PointerEvent&&(\"ontouchstart\"in window||window.navigator.maxTouchPoints>0||navigator.maxTouchPoints>0)}}),define(ne[44],se([1,0,52,63,119,17]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StandardKeyboardEvent=void 0;function S(i){if(i.charCode){const t=String.fromCharCode(i.charCode).toUpperCase();return k.KeyCodeUtils.fromString(t)}const n=i.keyCode;if(n===3)return 7;if(L.isFirefox)switch(n){case 59:return 85;case 60:if(D.isLinux)return 97;break;case 61:return 86;case 107:return 109;case 109:return 111;case 173:return 88;case 224:if(D.isMacintosh)return 57;break}else if(L.isWebKit){if(D.isMacintosh&&n===93)return 57;if(!D.isMacintosh&&n===92)return 57}return k.EVENT_KEY_CODE_MAP[n]||0}const f=D.isMacintosh?256:2048,_=512,g=1024,C=D.isMacintosh?2048:256;class s{constructor(n){this._standardKeyboardEventBrand=!0;const t=n;this.browserEvent=t,this.target=t.target,this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,this.altGraphKey=t.getModifierState(\"AltGraph\"),this.keyCode=S(t),this.code=t.code,this.ctrlKey=this.ctrlKey||this.keyCode===5,this.altKey=this.altKey||this.keyCode===6,this.shiftKey=this.shiftKey||this.keyCode===4,this.metaKey=this.metaKey||this.keyCode===57,this._asKeybinding=this._computeKeybinding(),this._asKeyCodeChord=this._computeKeyCodeChord()}preventDefault(){this.browserEvent&&this.browserEvent.preventDefault&&this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent&&this.browserEvent.stopPropagation&&this.browserEvent.stopPropagation()}toKeyCodeChord(){return this._asKeyCodeChord}equals(n){return this._asKeybinding===n}_computeKeybinding(){let n=0;this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(n=this.keyCode);let t=0;return this.ctrlKey&&(t|=f),this.altKey&&(t|=_),this.shiftKey&&(t|=g),this.metaKey&&(t|=C),t|=n,t}_computeKeyCodeChord(){let n=0;return this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(n=this.keyCode),new y.KeyCodeChord(this.ctrlKey,this.shiftKey,this.altKey,this.metaKey,n)}}e.StandardKeyboardEvent=s}),define(ne[60],se([1,0,52,380,17]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StandardWheelEvent=e.StandardMouseEvent=void 0;class D{constructor(_){this.timestamp=Date.now(),this.browserEvent=_,this.leftButton=_.button===0,this.middleButton=_.button===1,this.rightButton=_.button===2,this.buttons=_.buttons,this.target=_.target,this.detail=_.detail||1,_.type===\"dblclick\"&&(this.detail=2),this.ctrlKey=_.ctrlKey,this.shiftKey=_.shiftKey,this.altKey=_.altKey,this.metaKey=_.metaKey,typeof _.pageX==\"number\"?(this.posx=_.pageX,this.posy=_.pageY):(this.posx=_.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,this.posy=_.clientY+document.body.scrollTop+document.documentElement.scrollTop);const g=k.IframeUtils.getPositionOfChildWindowRelativeToAncestorWindow(window,_.view);this.posx-=g.left,this.posy-=g.top}preventDefault(){this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent.stopPropagation()}}e.StandardMouseEvent=D;class S{constructor(_,g=0,C=0){if(this.browserEvent=_||null,this.target=_?_.target||_.targetNode||_.srcElement:null,this.deltaY=C,this.deltaX=g,_){const s=_,i=_;if(typeof s.wheelDeltaY<\"u\")this.deltaY=s.wheelDeltaY/120;else if(typeof i.VERTICAL_AXIS<\"u\"&&i.axis===i.VERTICAL_AXIS)this.deltaY=-i.detail/3;else if(_.type===\"wheel\"){const n=_;n.deltaMode===n.DOM_DELTA_LINE?L.isFirefox&&!y.isMacintosh?this.deltaY=-_.deltaY/3:this.deltaY=-_.deltaY:this.deltaY=-_.deltaY/40}if(typeof s.wheelDeltaX<\"u\")L.isSafari&&y.isWindows?this.deltaX=-(s.wheelDeltaX/120):this.deltaX=s.wheelDeltaX/120;else if(typeof i.HORIZONTAL_AXIS<\"u\"&&i.axis===i.HORIZONTAL_AXIS)this.deltaX=-_.detail/3;else if(_.type===\"wheel\"){const n=_;n.deltaMode===n.DOM_DELTA_LINE?L.isFirefox&&!y.isMacintosh?this.deltaX=-_.deltaX/3:this.deltaX=-_.deltaX:this.deltaX=-_.deltaX/40}this.deltaY===0&&this.deltaX===0&&_.wheelDelta&&(this.deltaY=_.wheelDelta/120)}}preventDefault(){var _;(_=this.browserEvent)===null||_===void 0||_.preventDefault()}stopPropagation(){var _;(_=this.browserEvent)===null||_===void 0||_.stopPropagation()}}e.StandardWheelEvent=S});var Lt=this&&this.__asyncValues||function(Q){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e=Q[Symbol.asyncIterator],L;return e?e.call(Q):(Q=typeof __values==\"function\"?__values(Q):Q[Symbol.iterator](),L={},k(\"next\"),k(\"throw\"),k(\"return\"),L[Symbol.asyncIterator]=function(){return this},L);function k(D){L[D]=Q[D]&&function(S){return new Promise(function(f,_){S=Q[D](S),y(f,_,S.done,S.value)})}}function y(D,S,f,_){Promise.resolve(_).then(function(g){D({value:g,done:f})},S)}};define(ne[13],se([1,0,19,9,6,2,17,264]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createCancelableAsyncIterable=e.CancelableAsyncIterableObject=e.AsyncIterableObject=e.Promises=e.DeferredPromise=e.IdleValue=e.runWhenIdle=e.RunOnceScheduler=e.IntervalTimer=e.TimeoutTimer=e.first=e.disposableTimeout=e.timeout=e.ThrottledDelayer=e.Delayer=e.Throttler=e.raceCancellation=e.createCancelablePromise=e.isThenable=void 0;function _(E){return!!E&&typeof E.then==\"function\"}e.isThenable=_;function g(E){const I=new L.CancellationTokenSource,M=E(I.token),P=new Promise((x,T)=>{const A=I.token.onCancellationRequested(()=>{A.dispose(),I.dispose(),T(new k.CancellationError)});Promise.resolve(M).then(N=>{A.dispose(),I.dispose(),x(N)},N=>{A.dispose(),I.dispose(),T(N)})});return new class{cancel(){I.cancel()}then(x,T){return P.then(x,T)}catch(x){return this.then(void 0,x)}finally(x){return P.finally(x)}}}e.createCancelablePromise=g;function C(E,I,M){return new Promise((P,x)=>{const T=I.onCancellationRequested(()=>{T.dispose(),P(M)});E.then(P,x).finally(()=>T.dispose())})}e.raceCancellation=C;class s{constructor(){this.isDisposed=!1,this.activePromise=null,this.queuedPromise=null,this.queuedPromiseFactory=null}queue(I){if(this.isDisposed)throw new Error(\"Throttler is disposed\");if(this.activePromise){if(this.queuedPromiseFactory=I,!this.queuedPromise){const M=()=>{if(this.queuedPromise=null,this.isDisposed)return;const P=this.queue(this.queuedPromiseFactory);return this.queuedPromiseFactory=null,P};this.queuedPromise=new Promise(P=>{this.activePromise.then(M,M).then(P)})}return new Promise((M,P)=>{this.queuedPromise.then(M,P)})}return this.activePromise=I(),new Promise((M,P)=>{this.activePromise.then(x=>{this.activePromise=null,M(x)},x=>{this.activePromise=null,P(x)})})}dispose(){this.isDisposed=!0}}e.Throttler=s;const i=(E,I)=>{let M=!0;const P=setTimeout(()=>{M=!1,I()},E);return{isTriggered:()=>M,dispose:()=>{clearTimeout(P),M=!1}}},n=E=>{let I=!0;return queueMicrotask(()=>{I&&(I=!1,E())}),{isTriggered:()=>I,dispose:()=>{I=!1}}};class t{constructor(I){this.defaultDelay=I,this.deferred=null,this.completionPromise=null,this.doResolve=null,this.doReject=null,this.task=null}trigger(I,M=this.defaultDelay){this.task=I,this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise((x,T)=>{this.doResolve=x,this.doReject=T}).then(()=>{if(this.completionPromise=null,this.doResolve=null,this.task){const x=this.task;return this.task=null,x()}}));const P=()=>{var x;this.deferred=null,(x=this.doResolve)===null||x===void 0||x.call(this,null)};return this.deferred=M===f.MicrotaskDelay?n(P):i(M,P),this.completionPromise}isTriggered(){var I;return!!(!((I=this.deferred)===null||I===void 0)&&I.isTriggered())}cancel(){var I;this.cancelTimeout(),this.completionPromise&&((I=this.doReject)===null||I===void 0||I.call(this,new k.CancellationError),this.completionPromise=null)}cancelTimeout(){var I;(I=this.deferred)===null||I===void 0||I.dispose(),this.deferred=null}dispose(){this.cancel()}}e.Delayer=t;class a{constructor(I){this.delayer=new t(I),this.throttler=new s}trigger(I,M){return this.delayer.trigger(()=>this.throttler.queue(I),M)}cancel(){this.delayer.cancel()}dispose(){this.delayer.dispose(),this.throttler.dispose()}}e.ThrottledDelayer=a;function u(E,I){return I?new Promise((M,P)=>{const x=setTimeout(()=>{T.dispose(),M()},E),T=I.onCancellationRequested(()=>{clearTimeout(x),T.dispose(),P(new k.CancellationError)})}):g(M=>u(E,M))}e.timeout=u;function h(E,I=0){const M=setTimeout(E,I);return(0,D.toDisposable)(()=>clearTimeout(M))}e.disposableTimeout=h;function r(E,I=P=>!!P,M=null){let P=0;const x=E.length,T=()=>{if(P>=x)return Promise.resolve(M);const A=E[P++];return Promise.resolve(A()).then(F=>I(F)?Promise.resolve(F):T())};return T()}e.first=r;class c{constructor(I,M){this._token=-1,typeof I==\"function\"&&typeof M==\"number\"&&this.setIfNotSet(I,M)}dispose(){this.cancel()}cancel(){this._token!==-1&&(clearTimeout(this._token),this._token=-1)}cancelAndSet(I,M){this.cancel(),this._token=setTimeout(()=>{this._token=-1,I()},M)}setIfNotSet(I,M){this._token===-1&&(this._token=setTimeout(()=>{this._token=-1,I()},M))}}e.TimeoutTimer=c;class o{constructor(){this._token=-1}dispose(){this.cancel()}cancel(){this._token!==-1&&(clearInterval(this._token),this._token=-1)}cancelAndSet(I,M){this.cancel(),this._token=setInterval(()=>{I()},M)}}e.IntervalTimer=o;class d{constructor(I,M){this.timeoutToken=-1,this.runner=I,this.timeout=M,this.timeoutHandler=this.onTimeout.bind(this)}dispose(){this.cancel(),this.runner=null}cancel(){this.isScheduled()&&(clearTimeout(this.timeoutToken),this.timeoutToken=-1)}schedule(I=this.timeout){this.cancel(),this.timeoutToken=setTimeout(this.timeoutHandler,I)}get delay(){return this.timeout}set delay(I){this.timeout=I}isScheduled(){return this.timeoutToken!==-1}onTimeout(){this.timeoutToken=-1,this.runner&&this.doRun()}doRun(){var I;(I=this.runner)===null||I===void 0||I.call(this)}}e.RunOnceScheduler=d,function(){typeof requestIdleCallback!=\"function\"||typeof cancelIdleCallback!=\"function\"?e.runWhenIdle=E=>{(0,S.setTimeout0)(()=>{if(I)return;const M=Date.now()+15;E(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,M-Date.now())}}))});let I=!1;return{dispose(){I||(I=!0)}}}:e.runWhenIdle=(E,I)=>{const M=requestIdleCallback(E,typeof I==\"number\"?{timeout:I}:void 0);let P=!1;return{dispose(){P||(P=!0,cancelIdleCallback(M))}}}}();class l{constructor(I){this._didRun=!1,this._executor=()=>{try{this._value=I()}catch(M){this._error=M}finally{this._didRun=!0}},this._handle=(0,e.runWhenIdle)(()=>this._executor())}dispose(){this._handle.dispose()}get value(){if(this._didRun||(this._handle.dispose(),this._executor()),this._error)throw this._error;return this._value}get isInitialized(){return this._didRun}}e.IdleValue=l;class p{get isRejected(){var I;return((I=this.outcome)===null||I===void 0?void 0:I.outcome)===1}get isSettled(){return!!this.outcome}constructor(){this.p=new Promise((I,M)=>{this.completeCallback=I,this.errorCallback=M})}complete(I){return new Promise(M=>{this.completeCallback(I),this.outcome={outcome:0,value:I},M()})}error(I){return new Promise(M=>{this.errorCallback(I),this.outcome={outcome:1,value:I},M()})}cancel(){return this.error(new k.CancellationError)}}e.DeferredPromise=p;var m;(function(E){function I(P){return we(this,void 0,void 0,function*(){let x;const T=yield Promise.all(P.map(A=>A.then(N=>N,N=>{x||(x=N)})));if(typeof x<\"u\")throw x;return T})}E.settled=I;function M(P){return new Promise((x,T)=>we(this,void 0,void 0,function*(){try{yield P(x,T)}catch(A){T(A)}}))}E.withAsyncBody=M})(m||(e.Promises=m={}));class v{static fromArray(I){return new v(M=>{M.emitMany(I)})}static fromPromise(I){return new v(M=>we(this,void 0,void 0,function*(){M.emitMany(yield I)}))}static fromPromises(I){return new v(M=>we(this,void 0,void 0,function*(){yield Promise.all(I.map(P=>we(this,void 0,void 0,function*(){return M.emitOne(yield P)})))}))}static merge(I){return new v(M=>we(this,void 0,void 0,function*(){yield Promise.all(I.map(P=>{var x,T,A;return we(this,void 0,void 0,function*(){var N,F,O,W;try{for(x=!0,T=Lt(P);A=yield T.next(),N=A.done,!N;x=!0){W=A.value,x=!1;const U=W;M.emitOne(U)}}catch(U){F={error:U}}finally{try{!x&&!N&&(O=T.return)&&(yield O.call(T))}finally{if(F)throw F.error}}})}))}))}constructor(I){this._state=0,this._results=[],this._error=null,this._onStateChanged=new y.Emitter,queueMicrotask(()=>we(this,void 0,void 0,function*(){const M={emitOne:P=>this.emitOne(P),emitMany:P=>this.emitMany(P),reject:P=>this.reject(P)};try{yield Promise.resolve(I(M)),this.resolve()}catch(P){this.reject(P)}finally{M.emitOne=void 0,M.emitMany=void 0,M.reject=void 0}}))}[Symbol.asyncIterator](){let I=0;return{next:()=>we(this,void 0,void 0,function*(){do{if(this._state===2)throw this._error;if(I<this._results.length)return{done:!1,value:this._results[I++]};if(this._state===1)return{done:!0,value:void 0};yield y.Event.toPromise(this._onStateChanged.event)}while(!0)})}}static map(I,M){return new v(P=>we(this,void 0,void 0,function*(){var x,T,A,N;try{for(var F=!0,O=Lt(I),W;W=yield O.next(),x=W.done,!x;F=!0){N=W.value,F=!1;const U=N;P.emitOne(M(U))}}catch(U){T={error:U}}finally{try{!F&&!x&&(A=O.return)&&(yield A.call(O))}finally{if(T)throw T.error}}}))}map(I){return v.map(this,I)}static filter(I,M){return new v(P=>we(this,void 0,void 0,function*(){var x,T,A,N;try{for(var F=!0,O=Lt(I),W;W=yield O.next(),x=W.done,!x;F=!0){N=W.value,F=!1;const U=N;M(U)&&P.emitOne(U)}}catch(U){T={error:U}}finally{try{!F&&!x&&(A=O.return)&&(yield A.call(O))}finally{if(T)throw T.error}}}))}filter(I){return v.filter(this,I)}static coalesce(I){return v.filter(I,M=>!!M)}coalesce(){return v.coalesce(this)}static toPromise(I){var M,P,x,T,A,N,F;return we(this,void 0,void 0,function*(){const O=[];try{for(M=!0,P=Lt(I);x=yield P.next(),T=x.done,!T;M=!0){F=x.value,M=!1;const W=F;O.push(W)}}catch(W){A={error:W}}finally{try{!M&&!T&&(N=P.return)&&(yield N.call(P))}finally{if(A)throw A.error}}return O})}toPromise(){return v.toPromise(this)}emitOne(I){this._state===0&&(this._results.push(I),this._onStateChanged.fire())}emitMany(I){this._state===0&&(this._results=this._results.concat(I),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(I){this._state===0&&(this._state=2,this._error=I,this._onStateChanged.fire())}}e.AsyncIterableObject=v,v.EMPTY=v.fromArray([]);class b extends v{constructor(I,M){super(M),this._source=I}cancel(){this._source.cancel()}}e.CancelableAsyncIterableObject=b;function w(E){const I=new L.CancellationTokenSource,M=E(I.token);return new b(I,P=>we(this,void 0,void 0,function*(){var x,T,A,N;const F=I.token.onCancellationRequested(()=>{F.dispose(),I.dispose(),P.reject(new k.CancellationError)});try{try{for(var O=!0,W=Lt(M),U;U=yield W.next(),x=U.done,!x;O=!0){N=U.value,O=!1;const j=N;if(I.token.isCancellationRequested)return;P.emitOne(j)}}catch(j){T={error:j}}finally{try{!O&&!x&&(A=W.return)&&(yield A.call(W))}finally{if(T)throw T.error}}F.dispose(),I.dispose()}catch(j){F.dispose(),I.dispose(),P.reject(j)}}))}e.createCancelableAsyncIterable=w}),define(ne[567],se([1,0,13,2]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ScrollbarVisibilityController=void 0;class y extends k.Disposable{constructor(S,f,_){super(),this._visibility=S,this._visibleClassName=f,this._invisibleClassName=_,this._domNode=null,this._isVisible=!1,this._isNeeded=!1,this._rawShouldBeVisible=!1,this._shouldBeVisible=!1,this._revealTimer=this._register(new L.TimeoutTimer)}setVisibility(S){this._visibility!==S&&(this._visibility=S,this._updateShouldBeVisible())}setShouldBeVisible(S){this._rawShouldBeVisible=S,this._updateShouldBeVisible()}_applyVisibilitySetting(){return this._visibility===2?!1:this._visibility===3?!0:this._rawShouldBeVisible}_updateShouldBeVisible(){const S=this._applyVisibilitySetting();this._shouldBeVisible!==S&&(this._shouldBeVisible=S,this.ensureVisibility())}setIsNeeded(S){this._isNeeded!==S&&(this._isNeeded=S,this.ensureVisibility())}setDomNode(S){this._domNode=S,this._domNode.setClassName(this._invisibleClassName),this.setShouldBeVisible(!1)}ensureVisibility(){if(!this._isNeeded){this._hide(!1);return}this._shouldBeVisible?this._reveal():this._hide(!0)}_reveal(){this._isVisible||(this._isVisible=!0,this._revealTimer.setIfNotSet(()=>{var S;(S=this._domNode)===null||S===void 0||S.setClassName(this._visibleClassName)},0))}_hide(S){var f;this._revealTimer.cancel(),this._isVisible&&(this._isVisible=!1,(f=this._domNode)===null||f===void 0||f.setClassName(this._invisibleClassName+(S?\" fade\":\"\")))}}e.ScrollbarVisibilityController=y}),define(ne[218],se([1,0,139,14,13,264,168,6,46]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IndexTreeModel=e.getVisibleState=e.isFilterResult=void 0;function g(n){return typeof n==\"object\"&&\"visibility\"in n&&\"data\"in n}e.isFilterResult=g;function C(n){switch(n){case!0:return 1;case!1:return 0;default:return n}}e.getVisibleState=C;function s(n){return typeof n.collapsible==\"boolean\"}class i{constructor(t,a,u,h={}){this.user=t,this.list=a,this.rootRef=[],this.eventBufferer=new f.EventBufferer,this._onDidChangeCollapseState=new f.Emitter,this.onDidChangeCollapseState=this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event),this._onDidChangeRenderNodeCount=new f.Emitter,this.onDidChangeRenderNodeCount=this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event),this._onDidSplice=new f.Emitter,this.onDidSplice=this._onDidSplice.event,this.refilterDelayer=new y.Delayer(D.MicrotaskDelay),this.collapseByDefault=typeof h.collapseByDefault>\"u\"?!1:h.collapseByDefault,this.filter=h.filter,this.autoExpandSingleChildren=typeof h.autoExpandSingleChildren>\"u\"?!1:h.autoExpandSingleChildren,this.root={parent:void 0,element:u,children:[],depth:0,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:!1,collapsed:!1,renderNodeCount:0,visibility:1,visible:!0,filterData:void 0}}splice(t,a,u=_.Iterable.empty(),h={}){if(t.length===0)throw new L.TreeError(this.user,\"Invalid tree location\");h.diffIdentityProvider?this.spliceSmart(h.diffIdentityProvider,t,a,u,h):this.spliceSimple(t,a,u,h)}spliceSmart(t,a,u,h,r,c){var o;h===void 0&&(h=_.Iterable.empty()),c===void 0&&(c=(o=r.diffDepth)!==null&&o!==void 0?o:0);const{parentNode:d}=this.getParentNodeWithListIndex(a);if(!d.lastDiffIds)return this.spliceSimple(a,u,h,r);const l=[...h],p=a[a.length-1],m=new S.LcsDiff({getElements:()=>d.lastDiffIds},{getElements:()=>[...d.children.slice(0,p),...l,...d.children.slice(p+u)].map(I=>t.getId(I.element).toString())}).ComputeDiff(!1);if(m.quitEarly)return d.lastDiffIds=void 0,this.spliceSimple(a,u,l,r);const v=a.slice(0,-1),b=(I,M,P)=>{if(c>0)for(let x=0;x<P;x++)I--,M--,this.spliceSmart(t,[...v,I,0],Number.MAX_SAFE_INTEGER,l[M].children,r,c-1)};let w=Math.min(d.children.length,p+u),E=l.length;for(const I of m.changes.sort((M,P)=>P.originalStart-M.originalStart))b(w,E,w-(I.originalStart+I.originalLength)),w=I.originalStart,E=I.modifiedStart-p,this.spliceSimple([...v,w],I.originalLength,_.Iterable.slice(l,E,E+I.modifiedLength),r);b(w,E,w)}spliceSimple(t,a,u=_.Iterable.empty(),{onDidCreateNode:h,onDidDeleteNode:r,diffIdentityProvider:c}){const{parentNode:o,listIndex:d,revealed:l,visible:p}=this.getParentNodeWithListIndex(t),m=[],v=_.Iterable.map(u,F=>this.createTreeNode(F,o,o.visible?1:0,l,m,h)),b=t[t.length-1],w=o.children.length>0;let E=0;for(let F=b;F>=0&&F<o.children.length;F--){const O=o.children[F];if(O.visible){E=O.visibleChildIndex;break}}const I=[];let M=0,P=0;for(const F of v)I.push(F),P+=F.renderNodeCount,F.visible&&(F.visibleChildIndex=E+M++);const x=(0,k.splice)(o.children,b,a,I);c?o.lastDiffIds?(0,k.splice)(o.lastDiffIds,b,a,I.map(F=>c.getId(F.element).toString())):o.lastDiffIds=o.children.map(F=>c.getId(F.element).toString()):o.lastDiffIds=void 0;let T=0;for(const F of x)F.visible&&T++;if(T!==0)for(let F=b+I.length;F<o.children.length;F++){const O=o.children[F];O.visible&&(O.visibleChildIndex-=T)}if(o.visibleChildrenCount+=M-T,l&&p){const F=x.reduce((O,W)=>O+(W.visible?W.renderNodeCount:0),0);this._updateAncestorsRenderNodeCount(o,P-F),this.list.splice(d,F,m)}if(x.length>0&&r){const F=O=>{r(O),O.children.forEach(F)};x.forEach(F)}this._onDidSplice.fire({insertedNodes:I,deletedNodes:x});const A=o.children.length>0;w!==A&&this.setCollapsible(t.slice(0,-1),A);let N=o;for(;N;){if(N.visibility===2){this.refilterDelayer.trigger(()=>this.refilter());break}N=N.parent}}rerender(t){if(t.length===0)throw new L.TreeError(this.user,\"Invalid tree location\");const{node:a,listIndex:u,revealed:h}=this.getTreeNodeWithListIndex(t);a.visible&&h&&this.list.splice(u,1,[a])}has(t){return this.hasTreeNode(t)}getListIndex(t){const{listIndex:a,visible:u,revealed:h}=this.getTreeNodeWithListIndex(t);return u&&h?a:-1}getListRenderCount(t){return this.getTreeNode(t).renderNodeCount}isCollapsible(t){return this.getTreeNode(t).collapsible}setCollapsible(t,a){const u=this.getTreeNode(t);typeof a>\"u\"&&(a=!u.collapsible);const h={collapsible:a};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(t,h))}isCollapsed(t){return this.getTreeNode(t).collapsed}setCollapsed(t,a,u){const h=this.getTreeNode(t);typeof a>\"u\"&&(a=!h.collapsed);const r={collapsed:a,recursive:u||!1};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(t,r))}_setCollapseState(t,a){const{node:u,listIndex:h,revealed:r}=this.getTreeNodeWithListIndex(t),c=this._setListNodeCollapseState(u,h,r,a);if(u!==this.root&&this.autoExpandSingleChildren&&c&&!s(a)&&u.collapsible&&!u.collapsed&&!a.recursive){let o=-1;for(let d=0;d<u.children.length;d++)if(u.children[d].visible)if(o>-1){o=-1;break}else o=d;o>-1&&this._setCollapseState([...t,o],a)}return c}_setListNodeCollapseState(t,a,u,h){const r=this._setNodeCollapseState(t,h,!1);if(!u||!t.visible||!r)return r;const c=t.renderNodeCount,o=this.updateNodeAfterCollapseChange(t),d=c-(a===-1?0:1);return this.list.splice(a+1,d,o.slice(1)),r}_setNodeCollapseState(t,a,u){let h;if(t===this.root?h=!1:(s(a)?(h=t.collapsible!==a.collapsible,t.collapsible=a.collapsible):t.collapsible?(h=t.collapsed!==a.collapsed,t.collapsed=a.collapsed):h=!1,h&&this._onDidChangeCollapseState.fire({node:t,deep:u})),!s(a)&&a.recursive)for(const r of t.children)h=this._setNodeCollapseState(r,a,!0)||h;return h}expandTo(t){this.eventBufferer.bufferEvents(()=>{let a=this.getTreeNode(t);for(;a.parent;)a=a.parent,t=t.slice(0,t.length-1),a.collapsed&&this._setCollapseState(t,{collapsed:!1,recursive:!1})})}refilter(){const t=this.root.renderNodeCount,a=this.updateNodeAfterFilterChange(this.root);this.list.splice(0,t,a),this.refilterDelayer.cancel()}createTreeNode(t,a,u,h,r,c){const o={parent:a,element:t.element,children:[],depth:a.depth+1,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:typeof t.collapsible==\"boolean\"?t.collapsible:typeof t.collapsed<\"u\",collapsed:typeof t.collapsed>\"u\"?this.collapseByDefault:t.collapsed,renderNodeCount:1,visibility:1,visible:!0,filterData:void 0},d=this._filterNode(o,u);o.visibility=d,h&&r.push(o);const l=t.children||_.Iterable.empty(),p=h&&d!==0&&!o.collapsed;let m=0,v=1;for(const b of l){const w=this.createTreeNode(b,o,d,p,r,c);o.children.push(w),v+=w.renderNodeCount,w.visible&&(w.visibleChildIndex=m++)}return o.collapsible=o.collapsible||o.children.length>0,o.visibleChildrenCount=m,o.visible=d===2?m>0:d===1,o.visible?o.collapsed||(o.renderNodeCount=v):(o.renderNodeCount=0,h&&r.pop()),c?.(o),o}updateNodeAfterCollapseChange(t){const a=t.renderNodeCount,u=[];return this._updateNodeAfterCollapseChange(t,u),this._updateAncestorsRenderNodeCount(t.parent,u.length-a),u}_updateNodeAfterCollapseChange(t,a){if(t.visible===!1)return 0;if(a.push(t),t.renderNodeCount=1,!t.collapsed)for(const u of t.children)t.renderNodeCount+=this._updateNodeAfterCollapseChange(u,a);return this._onDidChangeRenderNodeCount.fire(t),t.renderNodeCount}updateNodeAfterFilterChange(t){const a=t.renderNodeCount,u=[];return this._updateNodeAfterFilterChange(t,t.visible?1:0,u),this._updateAncestorsRenderNodeCount(t.parent,u.length-a),u}_updateNodeAfterFilterChange(t,a,u,h=!0){let r;if(t!==this.root){if(r=this._filterNode(t,a),r===0)return t.visible=!1,t.renderNodeCount=0,!1;h&&u.push(t)}const c=u.length;t.renderNodeCount=t===this.root?0:1;let o=!1;if(!t.collapsed||r!==0){let d=0;for(const l of t.children)o=this._updateNodeAfterFilterChange(l,r,u,h&&!t.collapsed)||o,l.visible&&(l.visibleChildIndex=d++);t.visibleChildrenCount=d}else t.visibleChildrenCount=0;return t!==this.root&&(t.visible=r===2?o:r===1,t.visibility=r),t.visible?t.collapsed||(t.renderNodeCount+=u.length-c):(t.renderNodeCount=0,h&&u.pop()),this._onDidChangeRenderNodeCount.fire(t),t.visible}_updateAncestorsRenderNodeCount(t,a){if(a!==0)for(;t;)t.renderNodeCount+=a,this._onDidChangeRenderNodeCount.fire(t),t=t.parent}_filterNode(t,a){const u=this.filter?this.filter.filter(t.element,a):1;return typeof u==\"boolean\"?(t.filterData=void 0,u?1:0):g(u)?(t.filterData=u.data,C(u.visibility)):(t.filterData=void 0,C(u))}hasTreeNode(t,a=this.root){if(!t||t.length===0)return!0;const[u,...h]=t;return u<0||u>a.children.length?!1:this.hasTreeNode(h,a.children[u])}getTreeNode(t,a=this.root){if(!t||t.length===0)return a;const[u,...h]=t;if(u<0||u>a.children.length)throw new L.TreeError(this.user,\"Invalid tree location\");return this.getTreeNode(h,a.children[u])}getTreeNodeWithListIndex(t){if(t.length===0)return{node:this.root,listIndex:-1,revealed:!0,visible:!1};const{parentNode:a,listIndex:u,revealed:h,visible:r}=this.getParentNodeWithListIndex(t),c=t[t.length-1];if(c<0||c>a.children.length)throw new L.TreeError(this.user,\"Invalid tree location\");const o=a.children[c];return{node:o,listIndex:u,revealed:h,visible:r&&o.visible}}getParentNodeWithListIndex(t,a=this.root,u=0,h=!0,r=!0){const[c,...o]=t;if(c<0||c>a.children.length)throw new L.TreeError(this.user,\"Invalid tree location\");for(let d=0;d<c;d++)u+=a.children[d].renderNodeCount;return h=h&&!a.collapsed,r=r&&a.visible,o.length===0?{parentNode:a,listIndex:u,revealed:h,visible:r}:this.getParentNodeWithListIndex(o,a.children[c],u+1,h,r)}getNode(t=[]){return this.getTreeNode(t)}getNodeLocation(t){const a=[];let u=t;for(;u.parent;)a.push(u.parent.children.indexOf(u)),u=u.parent;return a.reverse()}getParentNodeLocation(t){if(t.length!==0)return t.length===1?[]:(0,k.tail2)(t)[0]}getFirstElementChild(t){const a=this.getTreeNode(t);if(a.children.length!==0)return a.children[0].element}}e.IndexTreeModel=i}),define(ne[219],se([1,0,218,139,46]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ObjectTreeModel=void 0;class D{constructor(f,_,g={}){this.user=f,this.rootRef=null,this.nodes=new Map,this.nodesByIdentity=new Map,this.model=new L.IndexTreeModel(f,_,null,g),this.onDidSplice=this.model.onDidSplice,this.onDidChangeCollapseState=this.model.onDidChangeCollapseState,this.onDidChangeRenderNodeCount=this.model.onDidChangeRenderNodeCount,g.sorter&&(this.sorter={compare(C,s){return g.sorter.compare(C.element,s.element)}}),this.identityProvider=g.identityProvider}setChildren(f,_=y.Iterable.empty(),g={}){const C=this.getElementLocation(f);this._setChildren(C,this.preserveCollapseState(_),g)}_setChildren(f,_=y.Iterable.empty(),g){const C=new Set,s=new Set,i=t=>{var a;if(t.element===null)return;const u=t;if(C.add(u.element),this.nodes.set(u.element,u),this.identityProvider){const h=this.identityProvider.getId(u.element).toString();s.add(h),this.nodesByIdentity.set(h,u)}(a=g.onDidCreateNode)===null||a===void 0||a.call(g,u)},n=t=>{var a;if(t.element===null)return;const u=t;if(C.has(u.element)||this.nodes.delete(u.element),this.identityProvider){const h=this.identityProvider.getId(u.element).toString();s.has(h)||this.nodesByIdentity.delete(h)}(a=g.onDidDeleteNode)===null||a===void 0||a.call(g,u)};this.model.splice([...f,0],Number.MAX_VALUE,_,Object.assign(Object.assign({},g),{onDidCreateNode:i,onDidDeleteNode:n}))}preserveCollapseState(f=y.Iterable.empty()){return this.sorter&&(f=[...f].sort(this.sorter.compare.bind(this.sorter))),y.Iterable.map(f,_=>{let g=this.nodes.get(_.element);if(!g&&this.identityProvider){const i=this.identityProvider.getId(_.element).toString();g=this.nodesByIdentity.get(i)}if(!g){let i;return typeof _.collapsed>\"u\"?i=void 0:_.collapsed===k.ObjectTreeElementCollapseState.Collapsed||_.collapsed===k.ObjectTreeElementCollapseState.PreserveOrCollapsed?i=!0:_.collapsed===k.ObjectTreeElementCollapseState.Expanded||_.collapsed===k.ObjectTreeElementCollapseState.PreserveOrExpanded?i=!1:i=!!_.collapsed,Object.assign(Object.assign({},_),{children:this.preserveCollapseState(_.children),collapsed:i})}const C=typeof _.collapsible==\"boolean\"?_.collapsible:g.collapsible;let s;return typeof _.collapsed>\"u\"||_.collapsed===k.ObjectTreeElementCollapseState.PreserveOrCollapsed||_.collapsed===k.ObjectTreeElementCollapseState.PreserveOrExpanded?s=g.collapsed:_.collapsed===k.ObjectTreeElementCollapseState.Collapsed?s=!0:_.collapsed===k.ObjectTreeElementCollapseState.Expanded?s=!1:s=!!_.collapsed,Object.assign(Object.assign({},_),{collapsible:C,collapsed:s,children:this.preserveCollapseState(_.children)})})}rerender(f){const _=this.getElementLocation(f);this.model.rerender(_)}getFirstElementChild(f=null){const _=this.getElementLocation(f);return this.model.getFirstElementChild(_)}has(f){return this.nodes.has(f)}getListIndex(f){const _=this.getElementLocation(f);return this.model.getListIndex(_)}getListRenderCount(f){const _=this.getElementLocation(f);return this.model.getListRenderCount(_)}isCollapsible(f){const _=this.getElementLocation(f);return this.model.isCollapsible(_)}setCollapsible(f,_){const g=this.getElementLocation(f);return this.model.setCollapsible(g,_)}isCollapsed(f){const _=this.getElementLocation(f);return this.model.isCollapsed(_)}setCollapsed(f,_,g){const C=this.getElementLocation(f);return this.model.setCollapsed(C,_,g)}expandTo(f){const _=this.getElementLocation(f);this.model.expandTo(_)}refilter(){this.model.refilter()}getNode(f=null){if(f===null)return this.model.getNode(this.model.rootRef);const _=this.nodes.get(f);if(!_)throw new k.TreeError(this.user,`Tree element not found: ${f}`);return _}getNodeLocation(f){return f.element}getParentNodeLocation(f){if(f===null)throw new k.TreeError(this.user,\"Invalid getParentNodeLocation call\");const _=this.nodes.get(f);if(!_)throw new k.TreeError(this.user,`Tree element not found: ${f}`);const g=this.model.getNodeLocation(_),C=this.model.getParentNodeLocation(g);return this.model.getNode(C).element}getElementLocation(f){if(f===null)return[];const _=this.nodes.get(f);if(!_)throw new k.TreeError(this.user,`Tree element not found: ${f}`);return this.model.getNodeLocation(_)}}e.ObjectTreeModel=D}),define(ne[568],se([1,0,219,139,14,6,46]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CompressibleObjectTreeModel=e.DefaultElementMapper=e.CompressedObjectTreeModel=e.decompress=e.compress=void 0;function f(c){const o=[c.element],d=c.incompressible||!1;return{element:{elements:o,incompressible:d},children:S.Iterable.map(S.Iterable.from(c.children),f),collapsible:c.collapsible,collapsed:c.collapsed}}function _(c){const o=[c.element],d=c.incompressible||!1;let l,p;for(;[p,l]=S.Iterable.consume(S.Iterable.from(c.children),2),!(p.length!==1||p[0].incompressible);)c=p[0],o.push(c.element);return{element:{elements:o,incompressible:d},children:S.Iterable.map(S.Iterable.concat(p,l),_),collapsible:c.collapsible,collapsed:c.collapsed}}e.compress=_;function g(c,o=0){let d;return o<c.element.elements.length-1?d=[g(c,o+1)]:d=S.Iterable.map(S.Iterable.from(c.children),l=>g(l,0)),o===0&&c.element.incompressible?{element:c.element.elements[o],children:d,incompressible:!0,collapsible:c.collapsible,collapsed:c.collapsed}:{element:c.element.elements[o],children:d,collapsible:c.collapsible,collapsed:c.collapsed}}function C(c){return g(c,0)}e.decompress=C;function s(c,o,d){return c.element===o?Object.assign(Object.assign({},c),{children:d}):Object.assign(Object.assign({},c),{children:S.Iterable.map(S.Iterable.from(c.children),l=>s(l,o,d))})}const i=c=>({getId(o){return o.elements.map(d=>c.getId(d).toString()).join(\"\\0\")}});class n{get onDidSplice(){return this.model.onDidSplice}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get onDidChangeRenderNodeCount(){return this.model.onDidChangeRenderNodeCount}constructor(o,d,l={}){this.user=o,this.rootRef=null,this.nodes=new Map,this.model=new L.ObjectTreeModel(o,d,l),this.enabled=typeof l.compressionEnabled>\"u\"?!0:l.compressionEnabled,this.identityProvider=l.identityProvider}setChildren(o,d=S.Iterable.empty(),l){const p=l.diffIdentityProvider&&i(l.diffIdentityProvider);if(o===null){const T=S.Iterable.map(d,this.enabled?_:f);this._setChildren(null,T,{diffIdentityProvider:p,diffDepth:1/0});return}const m=this.nodes.get(o);if(!m)throw new k.TreeError(this.user,\"Unknown compressed tree node\");const v=this.model.getNode(m),b=this.model.getParentNodeLocation(m),w=this.model.getNode(b),E=C(v),I=s(E,o,d),M=(this.enabled?_:f)(I),P=l.diffIdentityProvider?(T,A)=>l.diffIdentityProvider.getId(T)===l.diffIdentityProvider.getId(A):void 0;if((0,y.equals)(M.element.elements,v.element.elements,P)){this._setChildren(m,M.children||S.Iterable.empty(),{diffIdentityProvider:p,diffDepth:1});return}const x=w.children.map(T=>T===v?M:T);this._setChildren(w.element,x,{diffIdentityProvider:p,diffDepth:v.depth-w.depth})}setCompressionEnabled(o){if(o===this.enabled)return;this.enabled=o;const l=this.model.getNode().children,p=S.Iterable.map(l,C),m=S.Iterable.map(p,o?_:f);this._setChildren(null,m,{diffIdentityProvider:this.identityProvider,diffDepth:1/0})}_setChildren(o,d,l){const p=new Set,m=b=>{for(const w of b.element.elements)p.add(w),this.nodes.set(w,b.element)},v=b=>{for(const w of b.element.elements)p.has(w)||this.nodes.delete(w)};this.model.setChildren(o,d,Object.assign(Object.assign({},l),{onDidCreateNode:m,onDidDeleteNode:v}))}has(o){return this.nodes.has(o)}getListIndex(o){const d=this.getCompressedNode(o);return this.model.getListIndex(d)}getListRenderCount(o){const d=this.getCompressedNode(o);return this.model.getListRenderCount(d)}getNode(o){if(typeof o>\"u\")return this.model.getNode();const d=this.getCompressedNode(o);return this.model.getNode(d)}getNodeLocation(o){const d=this.model.getNodeLocation(o);return d===null?null:d.elements[d.elements.length-1]}getParentNodeLocation(o){const d=this.getCompressedNode(o),l=this.model.getParentNodeLocation(d);return l===null?null:l.elements[l.elements.length-1]}getFirstElementChild(o){const d=this.getCompressedNode(o);return this.model.getFirstElementChild(d)}isCollapsible(o){const d=this.getCompressedNode(o);return this.model.isCollapsible(d)}setCollapsible(o,d){const l=this.getCompressedNode(o);return this.model.setCollapsible(l,d)}isCollapsed(o){const d=this.getCompressedNode(o);return this.model.isCollapsed(d)}setCollapsed(o,d,l){const p=this.getCompressedNode(o);return this.model.setCollapsed(p,d,l)}expandTo(o){const d=this.getCompressedNode(o);this.model.expandTo(d)}rerender(o){const d=this.getCompressedNode(o);this.model.rerender(d)}refilter(){this.model.refilter()}getCompressedNode(o){if(o===null)return null;const d=this.nodes.get(o);if(!d)throw new k.TreeError(this.user,`Tree element not found: ${o}`);return d}}e.CompressedObjectTreeModel=n;const t=c=>c[c.length-1];e.DefaultElementMapper=t;class a{get element(){return this.node.element===null?null:this.unwrapper(this.node.element)}get children(){return this.node.children.map(o=>new a(this.unwrapper,o))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(o,d){this.unwrapper=o,this.node=d}}function u(c,o){return{splice(d,l,p){o.splice(d,l,p.map(m=>c.map(m)))},updateElementHeight(d,l){o.updateElementHeight(d,l)}}}function h(c,o){return Object.assign(Object.assign({},o),{identityProvider:o.identityProvider&&{getId(d){return o.identityProvider.getId(c(d))}},sorter:o.sorter&&{compare(d,l){return o.sorter.compare(d.elements[0],l.elements[0])}},filter:o.filter&&{filter(d,l){return o.filter.filter(c(d),l)}}})}class r{get onDidSplice(){return D.Event.map(this.model.onDidSplice,({insertedNodes:o,deletedNodes:d})=>({insertedNodes:o.map(l=>this.nodeMapper.map(l)),deletedNodes:d.map(l=>this.nodeMapper.map(l))}))}get onDidChangeCollapseState(){return D.Event.map(this.model.onDidChangeCollapseState,({node:o,deep:d})=>({node:this.nodeMapper.map(o),deep:d}))}get onDidChangeRenderNodeCount(){return D.Event.map(this.model.onDidChangeRenderNodeCount,o=>this.nodeMapper.map(o))}constructor(o,d,l={}){this.rootRef=null,this.elementMapper=l.elementMapper||e.DefaultElementMapper;const p=m=>this.elementMapper(m.elements);this.nodeMapper=new k.WeakMapper(m=>new a(p,m)),this.model=new n(o,u(this.nodeMapper,d),h(p,l))}setChildren(o,d=S.Iterable.empty(),l={}){this.model.setChildren(o,d,l)}setCompressionEnabled(o){this.model.setCompressionEnabled(o)}has(o){return this.model.has(o)}getListIndex(o){return this.model.getListIndex(o)}getListRenderCount(o){return this.model.getListRenderCount(o)}getNode(o){return this.nodeMapper.map(this.model.getNode(o))}getNodeLocation(o){return o.element}getParentNodeLocation(o){return this.model.getParentNodeLocation(o)}getFirstElementChild(o){const d=this.model.getFirstElementChild(o);return d===null||typeof d>\"u\"?d:this.elementMapper(d.elements)}isCollapsible(o){return this.model.isCollapsible(o)}setCollapsible(o,d){return this.model.setCollapsible(o,d)}isCollapsed(o){return this.model.isCollapsed(o)}setCollapsed(o,d,l){return this.model.setCollapsed(o,d,l)}expandTo(o){return this.model.expandTo(o)}rerender(o){return this.model.rerender(o)}refilter(){return this.model.refilter()}getCompressedTreeNode(o=null){return this.model.getNode(o)}}e.CompressibleObjectTreeModel=r}),define(ne[569],se([1,0,17]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.platform=e.env=e.cwd=void 0;let k;if(typeof L.globals.vscode<\"u\"&&typeof L.globals.vscode.process<\"u\"){const y=L.globals.vscode.process;k={get platform(){return y.platform},get arch(){return y.arch},get env(){return y.env},cwd(){return y.cwd()}}}else typeof process<\"u\"?k={get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:k={get platform(){return L.isWindows?\"win32\":L.isMacintosh?\"darwin\":\"linux\"},get arch(){},get env(){return{}},cwd(){return\"/\"}};e.cwd=k.cwd,e.env=k.env,e.platform=k.platform}),define(ne[92],se([1,0,569]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sep=e.extname=e.basename=e.dirname=e.relative=e.resolve=e.normalize=e.posix=e.win32=void 0;const k=65,y=97,D=90,S=122,f=46,_=47,g=92,C=58,s=63;class i extends Error{constructor(p,m,v){let b;typeof m==\"string\"&&m.indexOf(\"not \")===0?(b=\"must not be\",m=m.replace(/^not /,\"\")):b=\"must be\";const w=p.indexOf(\".\")!==-1?\"property\":\"argument\";let E=`The \"${p}\" ${w} ${b} of type ${m}`;E+=`. Received type ${typeof v}`,super(E),this.code=\"ERR_INVALID_ARG_TYPE\"}}function n(l,p){if(l===null||typeof l!=\"object\")throw new i(p,\"Object\",l)}function t(l,p){if(typeof l!=\"string\")throw new i(p,\"string\",l)}const a=L.platform===\"win32\";function u(l){return l===_||l===g}function h(l){return l===_}function r(l){return l>=k&&l<=D||l>=y&&l<=S}function c(l,p,m,v){let b=\"\",w=0,E=-1,I=0,M=0;for(let P=0;P<=l.length;++P){if(P<l.length)M=l.charCodeAt(P);else{if(v(M))break;M=_}if(v(M)){if(!(E===P-1||I===1))if(I===2){if(b.length<2||w!==2||b.charCodeAt(b.length-1)!==f||b.charCodeAt(b.length-2)!==f){if(b.length>2){const x=b.lastIndexOf(m);x===-1?(b=\"\",w=0):(b=b.slice(0,x),w=b.length-1-b.lastIndexOf(m)),E=P,I=0;continue}else if(b.length!==0){b=\"\",w=0,E=P,I=0;continue}}p&&(b+=b.length>0?`${m}..`:\"..\",w=2)}else b.length>0?b+=`${m}${l.slice(E+1,P)}`:b=l.slice(E+1,P),w=P-E-1;E=P,I=0}else M===f&&I!==-1?++I:I=-1}return b}function o(l,p){n(p,\"pathObject\");const m=p.dir||p.root,v=p.base||`${p.name||\"\"}${p.ext||\"\"}`;return m?m===p.root?`${m}${v}`:`${m}${l}${v}`:v}e.win32={resolve(...l){let p=\"\",m=\"\",v=!1;for(let b=l.length-1;b>=-1;b--){let w;if(b>=0){if(w=l[b],t(w,\"path\"),w.length===0)continue}else p.length===0?w=L.cwd():(w=L.env[`=${p}`]||L.cwd(),(w===void 0||w.slice(0,2).toLowerCase()!==p.toLowerCase()&&w.charCodeAt(2)===g)&&(w=`${p}\\\\`));const E=w.length;let I=0,M=\"\",P=!1;const x=w.charCodeAt(0);if(E===1)u(x)&&(I=1,P=!0);else if(u(x))if(P=!0,u(w.charCodeAt(1))){let T=2,A=T;for(;T<E&&!u(w.charCodeAt(T));)T++;if(T<E&&T!==A){const N=w.slice(A,T);for(A=T;T<E&&u(w.charCodeAt(T));)T++;if(T<E&&T!==A){for(A=T;T<E&&!u(w.charCodeAt(T));)T++;(T===E||T!==A)&&(M=`\\\\\\\\${N}\\\\${w.slice(A,T)}`,I=T)}}}else I=1;else r(x)&&w.charCodeAt(1)===C&&(M=w.slice(0,2),I=2,E>2&&u(w.charCodeAt(2))&&(P=!0,I=3));if(M.length>0)if(p.length>0){if(M.toLowerCase()!==p.toLowerCase())continue}else p=M;if(v){if(p.length>0)break}else if(m=`${w.slice(I)}\\\\${m}`,v=P,P&&p.length>0)break}return m=c(m,!v,\"\\\\\",u),v?`${p}\\\\${m}`:`${p}${m}`||\".\"},normalize(l){t(l,\"path\");const p=l.length;if(p===0)return\".\";let m=0,v,b=!1;const w=l.charCodeAt(0);if(p===1)return h(w)?\"\\\\\":l;if(u(w))if(b=!0,u(l.charCodeAt(1))){let I=2,M=I;for(;I<p&&!u(l.charCodeAt(I));)I++;if(I<p&&I!==M){const P=l.slice(M,I);for(M=I;I<p&&u(l.charCodeAt(I));)I++;if(I<p&&I!==M){for(M=I;I<p&&!u(l.charCodeAt(I));)I++;if(I===p)return`\\\\\\\\${P}\\\\${l.slice(M)}\\\\`;I!==M&&(v=`\\\\\\\\${P}\\\\${l.slice(M,I)}`,m=I)}}}else m=1;else r(w)&&l.charCodeAt(1)===C&&(v=l.slice(0,2),m=2,p>2&&u(l.charCodeAt(2))&&(b=!0,m=3));let E=m<p?c(l.slice(m),!b,\"\\\\\",u):\"\";return E.length===0&&!b&&(E=\".\"),E.length>0&&u(l.charCodeAt(p-1))&&(E+=\"\\\\\"),v===void 0?b?`\\\\${E}`:E:b?`${v}\\\\${E}`:`${v}${E}`},isAbsolute(l){t(l,\"path\");const p=l.length;if(p===0)return!1;const m=l.charCodeAt(0);return u(m)||p>2&&r(m)&&l.charCodeAt(1)===C&&u(l.charCodeAt(2))},join(...l){if(l.length===0)return\".\";let p,m;for(let w=0;w<l.length;++w){const E=l[w];t(E,\"path\"),E.length>0&&(p===void 0?p=m=E:p+=`\\\\${E}`)}if(p===void 0)return\".\";let v=!0,b=0;if(typeof m==\"string\"&&u(m.charCodeAt(0))){++b;const w=m.length;w>1&&u(m.charCodeAt(1))&&(++b,w>2&&(u(m.charCodeAt(2))?++b:v=!1))}if(v){for(;b<p.length&&u(p.charCodeAt(b));)b++;b>=2&&(p=`\\\\${p.slice(b)}`)}return e.win32.normalize(p)},relative(l,p){if(t(l,\"from\"),t(p,\"to\"),l===p)return\"\";const m=e.win32.resolve(l),v=e.win32.resolve(p);if(m===v||(l=m.toLowerCase(),p=v.toLowerCase(),l===p))return\"\";let b=0;for(;b<l.length&&l.charCodeAt(b)===g;)b++;let w=l.length;for(;w-1>b&&l.charCodeAt(w-1)===g;)w--;const E=w-b;let I=0;for(;I<p.length&&p.charCodeAt(I)===g;)I++;let M=p.length;for(;M-1>I&&p.charCodeAt(M-1)===g;)M--;const P=M-I,x=E<P?E:P;let T=-1,A=0;for(;A<x;A++){const F=l.charCodeAt(b+A);if(F!==p.charCodeAt(I+A))break;F===g&&(T=A)}if(A!==x){if(T===-1)return v}else{if(P>x){if(p.charCodeAt(I+A)===g)return v.slice(I+A+1);if(A===2)return v.slice(I+A)}E>x&&(l.charCodeAt(b+A)===g?T=A:A===2&&(T=3)),T===-1&&(T=0)}let N=\"\";for(A=b+T+1;A<=w;++A)(A===w||l.charCodeAt(A)===g)&&(N+=N.length===0?\"..\":\"\\\\..\");return I+=T,N.length>0?`${N}${v.slice(I,M)}`:(v.charCodeAt(I)===g&&++I,v.slice(I,M))},toNamespacedPath(l){if(typeof l!=\"string\"||l.length===0)return l;const p=e.win32.resolve(l);if(p.length<=2)return l;if(p.charCodeAt(0)===g){if(p.charCodeAt(1)===g){const m=p.charCodeAt(2);if(m!==s&&m!==f)return`\\\\\\\\?\\\\UNC\\\\${p.slice(2)}`}}else if(r(p.charCodeAt(0))&&p.charCodeAt(1)===C&&p.charCodeAt(2)===g)return`\\\\\\\\?\\\\${p}`;return l},dirname(l){t(l,\"path\");const p=l.length;if(p===0)return\".\";let m=-1,v=0;const b=l.charCodeAt(0);if(p===1)return u(b)?l:\".\";if(u(b)){if(m=v=1,u(l.charCodeAt(1))){let I=2,M=I;for(;I<p&&!u(l.charCodeAt(I));)I++;if(I<p&&I!==M){for(M=I;I<p&&u(l.charCodeAt(I));)I++;if(I<p&&I!==M){for(M=I;I<p&&!u(l.charCodeAt(I));)I++;if(I===p)return l;I!==M&&(m=v=I+1)}}}}else r(b)&&l.charCodeAt(1)===C&&(m=p>2&&u(l.charCodeAt(2))?3:2,v=m);let w=-1,E=!0;for(let I=p-1;I>=v;--I)if(u(l.charCodeAt(I))){if(!E){w=I;break}}else E=!1;if(w===-1){if(m===-1)return\".\";w=m}return l.slice(0,w)},basename(l,p){p!==void 0&&t(p,\"ext\"),t(l,\"path\");let m=0,v=-1,b=!0,w;if(l.length>=2&&r(l.charCodeAt(0))&&l.charCodeAt(1)===C&&(m=2),p!==void 0&&p.length>0&&p.length<=l.length){if(p===l)return\"\";let E=p.length-1,I=-1;for(w=l.length-1;w>=m;--w){const M=l.charCodeAt(w);if(u(M)){if(!b){m=w+1;break}}else I===-1&&(b=!1,I=w+1),E>=0&&(M===p.charCodeAt(E)?--E===-1&&(v=w):(E=-1,v=I))}return m===v?v=I:v===-1&&(v=l.length),l.slice(m,v)}for(w=l.length-1;w>=m;--w)if(u(l.charCodeAt(w))){if(!b){m=w+1;break}}else v===-1&&(b=!1,v=w+1);return v===-1?\"\":l.slice(m,v)},extname(l){t(l,\"path\");let p=0,m=-1,v=0,b=-1,w=!0,E=0;l.length>=2&&l.charCodeAt(1)===C&&r(l.charCodeAt(0))&&(p=v=2);for(let I=l.length-1;I>=p;--I){const M=l.charCodeAt(I);if(u(M)){if(!w){v=I+1;break}continue}b===-1&&(w=!1,b=I+1),M===f?m===-1?m=I:E!==1&&(E=1):m!==-1&&(E=-1)}return m===-1||b===-1||E===0||E===1&&m===b-1&&m===v+1?\"\":l.slice(m,b)},format:o.bind(null,\"\\\\\"),parse(l){t(l,\"path\");const p={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(l.length===0)return p;const m=l.length;let v=0,b=l.charCodeAt(0);if(m===1)return u(b)?(p.root=p.dir=l,p):(p.base=p.name=l,p);if(u(b)){if(v=1,u(l.charCodeAt(1))){let T=2,A=T;for(;T<m&&!u(l.charCodeAt(T));)T++;if(T<m&&T!==A){for(A=T;T<m&&u(l.charCodeAt(T));)T++;if(T<m&&T!==A){for(A=T;T<m&&!u(l.charCodeAt(T));)T++;T===m?v=T:T!==A&&(v=T+1)}}}}else if(r(b)&&l.charCodeAt(1)===C){if(m<=2)return p.root=p.dir=l,p;if(v=2,u(l.charCodeAt(2))){if(m===3)return p.root=p.dir=l,p;v=3}}v>0&&(p.root=l.slice(0,v));let w=-1,E=v,I=-1,M=!0,P=l.length-1,x=0;for(;P>=v;--P){if(b=l.charCodeAt(P),u(b)){if(!M){E=P+1;break}continue}I===-1&&(M=!1,I=P+1),b===f?w===-1?w=P:x!==1&&(x=1):w!==-1&&(x=-1)}return I!==-1&&(w===-1||x===0||x===1&&w===I-1&&w===E+1?p.base=p.name=l.slice(E,I):(p.name=l.slice(E,w),p.base=l.slice(E,I),p.ext=l.slice(w,I))),E>0&&E!==v?p.dir=l.slice(0,E-1):p.dir=p.root,p},sep:\"\\\\\",delimiter:\";\",win32:null,posix:null};const d=(()=>{if(a){const l=/\\\\/g;return()=>{const p=L.cwd().replace(l,\"/\");return p.slice(p.indexOf(\"/\"))}}return()=>L.cwd()})();e.posix={resolve(...l){let p=\"\",m=!1;for(let v=l.length-1;v>=-1&&!m;v--){const b=v>=0?l[v]:d();t(b,\"path\"),b.length!==0&&(p=`${b}/${p}`,m=b.charCodeAt(0)===_)}return p=c(p,!m,\"/\",h),m?`/${p}`:p.length>0?p:\".\"},normalize(l){if(t(l,\"path\"),l.length===0)return\".\";const p=l.charCodeAt(0)===_,m=l.charCodeAt(l.length-1)===_;return l=c(l,!p,\"/\",h),l.length===0?p?\"/\":m?\"./\":\".\":(m&&(l+=\"/\"),p?`/${l}`:l)},isAbsolute(l){return t(l,\"path\"),l.length>0&&l.charCodeAt(0)===_},join(...l){if(l.length===0)return\".\";let p;for(let m=0;m<l.length;++m){const v=l[m];t(v,\"path\"),v.length>0&&(p===void 0?p=v:p+=`/${v}`)}return p===void 0?\".\":e.posix.normalize(p)},relative(l,p){if(t(l,\"from\"),t(p,\"to\"),l===p||(l=e.posix.resolve(l),p=e.posix.resolve(p),l===p))return\"\";const m=1,v=l.length,b=v-m,w=1,E=p.length-w,I=b<E?b:E;let M=-1,P=0;for(;P<I;P++){const T=l.charCodeAt(m+P);if(T!==p.charCodeAt(w+P))break;T===_&&(M=P)}if(P===I)if(E>I){if(p.charCodeAt(w+P)===_)return p.slice(w+P+1);if(P===0)return p.slice(w+P)}else b>I&&(l.charCodeAt(m+P)===_?M=P:P===0&&(M=0));let x=\"\";for(P=m+M+1;P<=v;++P)(P===v||l.charCodeAt(P)===_)&&(x+=x.length===0?\"..\":\"/..\");return`${x}${p.slice(w+M)}`},toNamespacedPath(l){return l},dirname(l){if(t(l,\"path\"),l.length===0)return\".\";const p=l.charCodeAt(0)===_;let m=-1,v=!0;for(let b=l.length-1;b>=1;--b)if(l.charCodeAt(b)===_){if(!v){m=b;break}}else v=!1;return m===-1?p?\"/\":\".\":p&&m===1?\"//\":l.slice(0,m)},basename(l,p){p!==void 0&&t(p,\"ext\"),t(l,\"path\");let m=0,v=-1,b=!0,w;if(p!==void 0&&p.length>0&&p.length<=l.length){if(p===l)return\"\";let E=p.length-1,I=-1;for(w=l.length-1;w>=0;--w){const M=l.charCodeAt(w);if(M===_){if(!b){m=w+1;break}}else I===-1&&(b=!1,I=w+1),E>=0&&(M===p.charCodeAt(E)?--E===-1&&(v=w):(E=-1,v=I))}return m===v?v=I:v===-1&&(v=l.length),l.slice(m,v)}for(w=l.length-1;w>=0;--w)if(l.charCodeAt(w)===_){if(!b){m=w+1;break}}else v===-1&&(b=!1,v=w+1);return v===-1?\"\":l.slice(m,v)},extname(l){t(l,\"path\");let p=-1,m=0,v=-1,b=!0,w=0;for(let E=l.length-1;E>=0;--E){const I=l.charCodeAt(E);if(I===_){if(!b){m=E+1;break}continue}v===-1&&(b=!1,v=E+1),I===f?p===-1?p=E:w!==1&&(w=1):p!==-1&&(w=-1)}return p===-1||v===-1||w===0||w===1&&p===v-1&&p===m+1?\"\":l.slice(p,v)},format:o.bind(null,\"/\"),parse(l){t(l,\"path\");const p={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(l.length===0)return p;const m=l.charCodeAt(0)===_;let v;m?(p.root=\"/\",v=1):v=0;let b=-1,w=0,E=-1,I=!0,M=l.length-1,P=0;for(;M>=v;--M){const x=l.charCodeAt(M);if(x===_){if(!I){w=M+1;break}continue}E===-1&&(I=!1,E=M+1),x===f?b===-1?b=M:P!==1&&(P=1):b!==-1&&(P=-1)}if(E!==-1){const x=w===0&&m?1:w;b===-1||P===0||P===1&&b===E-1&&b===w+1?p.base=p.name=l.slice(x,E):(p.name=l.slice(x,b),p.base=l.slice(x,E),p.ext=l.slice(b,E))}return w>0?p.dir=l.slice(0,w-1):m&&(p.dir=\"/\"),p},sep:\"/\",delimiter:\":\",win32:null,posix:null},e.posix.win32=e.win32.win32=e.win32,e.posix.posix=e.win32.posix=e.posix,e.normalize=a?e.win32.normalize:e.posix.normalize,e.resolve=a?e.win32.resolve:e.posix.resolve,e.relative=a?e.win32.relative:e.posix.relative,e.dirname=a?e.win32.dirname:e.posix.dirname,e.basename=a?e.win32.basename:e.posix.basename,e.extname=a?e.win32.extname:e.posix.extname,e.sep=a?e.win32.sep:e.posix.sep}),define(ne[220],se([1,0,92,17,11]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.hasDriveLetter=e.isWindowsDriveLetter=e.isEqualOrParent=e.getRoot=e.toPosixPath=e.toSlashes=e.isPathSeparator=void 0;function D(i){return i===47||i===92}e.isPathSeparator=D;function S(i){return i.replace(/[\\\\/]/g,L.posix.sep)}e.toSlashes=S;function f(i){return i.indexOf(\"/\")===-1&&(i=S(i)),/^[a-zA-Z]:(\\/|$)/.test(i)&&(i=\"/\"+i),i}e.toPosixPath=f;function _(i,n=L.posix.sep){if(!i)return\"\";const t=i.length,a=i.charCodeAt(0);if(D(a)){if(D(i.charCodeAt(1))&&!D(i.charCodeAt(2))){let h=3;const r=h;for(;h<t&&!D(i.charCodeAt(h));h++);if(r!==h&&!D(i.charCodeAt(h+1))){for(h+=1;h<t;h++)if(D(i.charCodeAt(h)))return i.slice(0,h+1).replace(/[\\\\/]/g,n)}}return n}else if(C(a)&&i.charCodeAt(1)===58)return D(i.charCodeAt(2))?i.slice(0,2)+n:i.slice(0,2);let u=i.indexOf(\"://\");if(u!==-1){for(u+=3;u<t;u++)if(D(i.charCodeAt(u)))return i.slice(0,u+1)}return\"\"}e.getRoot=_;function g(i,n,t,a=L.sep){if(i===n)return!0;if(!i||!n||n.length>i.length)return!1;if(t){if(!(0,y.startsWithIgnoreCase)(i,n))return!1;if(n.length===i.length)return!0;let h=n.length;return n.charAt(n.length-1)===a&&h--,i.charAt(h)===a}return n.charAt(n.length-1)!==a&&(n+=a),i.indexOf(n)===0}e.isEqualOrParent=g;function C(i){return i>=65&&i<=90||i>=97&&i<=122}e.isWindowsDriveLetter=C;function s(i,n=k.isWindows){return n?C(i.charCodeAt(0))&&i.charCodeAt(1)===58:!1}e.hasDriveLetter=s}),define(ne[570],se([1,0,72,92,17,11]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.pieceToQuery=e.prepareQuery=e.scoreFuzzy2=void 0;const S=[void 0,[]];function f(r,c,o=0,d=0){const l=c;return l.values&&l.values.length>1?_(r,l.values,o,d):g(r,c,o,d)}e.scoreFuzzy2=f;function _(r,c,o,d){let l=0;const p=[];for(const m of c){const[v,b]=g(r,m,o,d);if(typeof v!=\"number\")return S;l+=v,p.push(...b)}return[l,s(p)]}function g(r,c,o,d){const l=(0,L.fuzzyScore)(c.original,c.originalLowercase,o,r,r.toLowerCase(),d,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return l?[l[0],(0,L.createMatches)(l)]:S}const C=Object.freeze({score:0});function s(r){const c=r.sort((l,p)=>l.start-p.start),o=[];let d;for(const l of c)!d||!i(d,l)?(d=l,o.push(l)):(d.start=Math.min(d.start,l.start),d.end=Math.max(d.end,l.end));return o}function i(r,c){return!(r.end<c.start||c.end<r.start)}function n(r){return r.startsWith('\"')&&r.endsWith('\"')}const t=\" \";function a(r){typeof r!=\"string\"&&(r=\"\");const c=r.toLowerCase(),{pathNormalized:o,normalized:d,normalizedLowercase:l}=u(r),p=o.indexOf(k.sep)>=0,m=n(r);let v;const b=r.split(t);if(b.length>1)for(const w of b){const E=n(w),{pathNormalized:I,normalized:M,normalizedLowercase:P}=u(w);M&&(v||(v=[]),v.push({original:w,originalLowercase:w.toLowerCase(),pathNormalized:I,normalized:M,normalizedLowercase:P,expectContiguousMatch:E}))}return{original:r,originalLowercase:c,pathNormalized:o,normalized:d,normalizedLowercase:l,values:v,containsPathSeparator:p,expectContiguousMatch:m}}e.prepareQuery=a;function u(r){let c;y.isWindows?c=r.replace(/\\//g,k.sep):c=r.replace(/\\\\/g,k.sep);const o=(0,D.stripWildcards)(c).replace(/\\s|\"/g,\"\");return{pathNormalized:c,normalized:o,normalizedLowercase:o.toLowerCase()}}function h(r){return Array.isArray(r)?a(r.map(c=>c.original).join(t)):a(r.original)}e.pieceToQuery=h}),define(ne[303],se([1,0,13,220,65,92,17,11]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isRelativePattern=e.parse=e.match=e.splitGlobAware=e.GLOB_SPLIT=e.GLOBSTAR=void 0,e.GLOBSTAR=\"**\",e.GLOB_SPLIT=\"/\";const _=\"[/\\\\\\\\]\",g=\"[^/\\\\\\\\]\",C=/\\//g;function s(O,W){switch(O){case 0:return\"\";case 1:return`${g}*?`;default:return`(?:${_}|${g}+${_}${W?`|${_}${g}+`:\"\"})*?`}}function i(O,W){if(!O)return[];const U=[];let j=!1,R=!1,K=\"\";for(const G of O){switch(G){case W:if(!j&&!R){U.push(K),K=\"\";continue}break;case\"{\":j=!0;break;case\"}\":j=!1;break;case\"[\":R=!0;break;case\"]\":R=!1;break}K+=G}return K&&U.push(K),U}e.splitGlobAware=i;function n(O){if(!O)return\"\";let W=\"\";const U=i(O,e.GLOB_SPLIT);if(U.every(j=>j===e.GLOBSTAR))W=\".*\";else{let j=!1;U.forEach((R,K)=>{if(R===e.GLOBSTAR){if(j)return;W+=s(2,K===U.length-1)}else{let G=!1,Z=\"\",J=!1,X=\"\";for(const H of R){if(H!==\"}\"&&G){Z+=H;continue}if(J&&(H!==\"]\"||!X)){let B;H===\"-\"?B=H:(H===\"^\"||H===\"!\")&&!X?B=\"^\":H===e.GLOB_SPLIT?B=\"\":B=(0,f.escapeRegExpCharacters)(H),X+=B;continue}switch(H){case\"{\":G=!0;continue;case\"[\":J=!0;continue;case\"}\":{const V=`(?:${i(Z,\",\").map(Y=>n(Y)).join(\"|\")})`;W+=V,G=!1,Z=\"\";break}case\"]\":{W+=\"[\"+X+\"]\",J=!1,X=\"\";break}case\"?\":W+=g;continue;case\"*\":W+=s(1);continue;default:W+=(0,f.escapeRegExpCharacters)(H)}}K<U.length-1&&(U[K+1]!==e.GLOBSTAR||K+2<U.length)&&(W+=_)}j=R===e.GLOBSTAR})}return W}const t=/^\\*\\*\\/\\*\\.[\\w\\.-]+$/,a=/^\\*\\*\\/([\\w\\.-]+)\\/?$/,u=/^{\\*\\*\\/\\*?[\\w\\.-]+\\/?(,\\*\\*\\/\\*?[\\w\\.-]+\\/?)*}$/,h=/^{\\*\\*\\/\\*?[\\w\\.-]+(\\/(\\*\\*)?)?(,\\*\\*\\/\\*?[\\w\\.-]+(\\/(\\*\\*)?)?)*}$/,r=/^\\*\\*((\\/[\\w\\.-]+)+)\\/?$/,c=/^([\\w\\.-]+(\\/[\\w\\.-]+)*)\\/?$/,o=new y.LRUCache(1e4),d=function(){return!1},l=function(){return null};function p(O,W){if(!O)return l;let U;typeof O!=\"string\"?U=O.pattern:U=O,U=U.trim();const j=`${U}_${!!W.trimForExclusions}`;let R=o.get(j);if(R)return m(R,O);let K;return t.test(U)?R=b(U.substr(4),U):(K=a.exec(v(U,W)))?R=w(K[1],U):(W.trimForExclusions?h:u).test(U)?R=E(U,W):(K=r.exec(v(U,W)))?R=I(K[1].substr(1),U,!0):(K=c.exec(v(U,W)))?R=I(K[1],U,!1):R=M(U),o.set(j,R),m(R,O)}function m(O,W){if(typeof W==\"string\")return O;const U=function(j,R){return(0,k.isEqualOrParent)(j,W.base,!S.isLinux)?O((0,f.ltrim)(j.substr(W.base.length),D.sep),R):null};return U.allBasenames=O.allBasenames,U.allPaths=O.allPaths,U.basenames=O.basenames,U.patterns=O.patterns,U}function v(O,W){return W.trimForExclusions&&O.endsWith(\"/**\")?O.substr(0,O.length-2):O}function b(O,W){return function(U,j){return typeof U==\"string\"&&U.endsWith(O)?W:null}}function w(O,W){const U=`/${O}`,j=`\\\\${O}`,R=function(G,Z){return typeof G!=\"string\"?null:Z?Z===O?W:null:G===O||G.endsWith(U)||G.endsWith(j)?W:null},K=[O];return R.basenames=K,R.patterns=[W],R.allBasenames=K,R}function E(O,W){const U=F(O.slice(1,-1).split(\",\").map(Z=>p(Z,W)).filter(Z=>Z!==l),O),j=U.length;if(!j)return l;if(j===1)return U[0];const R=function(Z,J){for(let X=0,H=U.length;X<H;X++)if(U[X](Z,J))return O;return null},K=U.find(Z=>!!Z.allBasenames);K&&(R.allBasenames=K.allBasenames);const G=U.reduce((Z,J)=>J.allPaths?Z.concat(J.allPaths):Z,[]);return G.length&&(R.allPaths=G),R}function I(O,W,U){const j=D.sep===D.posix.sep,R=j?O:O.replace(C,D.sep),K=D.sep+R,G=D.posix.sep+O;let Z;return U?Z=function(J,X){return typeof J==\"string\"&&(J===R||J.endsWith(K)||!j&&(J===O||J.endsWith(G)))?W:null}:Z=function(J,X){return typeof J==\"string\"&&(J===R||!j&&J===O)?W:null},Z.allPaths=[(U?\"*/\":\"./\")+O],Z}function M(O){try{const W=new RegExp(`^${n(O)}$`);return function(U){return W.lastIndex=0,typeof U==\"string\"&&W.test(U)?O:null}}catch{return l}}function P(O,W,U){return!O||typeof W!=\"string\"?!1:x(O)(W,void 0,U)}e.match=P;function x(O,W={}){if(!O)return d;if(typeof O==\"string\"||T(O)){const U=p(O,W);if(U===l)return d;const j=function(R,K){return!!U(R,K)};return U.allBasenames&&(j.allBasenames=U.allBasenames),U.allPaths&&(j.allPaths=U.allPaths),j}return A(O,W)}e.parse=x;function T(O){const W=O;return W?typeof W.base==\"string\"&&typeof W.pattern==\"string\":!1}e.isRelativePattern=T;function A(O,W){const U=F(Object.getOwnPropertyNames(O).map(Z=>N(Z,O[Z],W)).filter(Z=>Z!==l)),j=U.length;if(!j)return l;if(!U.some(Z=>!!Z.requiresSiblings)){if(j===1)return U[0];const Z=function(H,B){let V;for(let Y=0,ie=U.length;Y<ie;Y++){const ae=U[Y](H,B);if(typeof ae==\"string\")return ae;(0,L.isThenable)(ae)&&(V||(V=[]),V.push(ae))}return V?(()=>we(this,void 0,void 0,function*(){for(const Y of V){const ie=yield Y;if(typeof ie==\"string\")return ie}return null}))():null},J=U.find(H=>!!H.allBasenames);J&&(Z.allBasenames=J.allBasenames);const X=U.reduce((H,B)=>B.allPaths?H.concat(B.allPaths):H,[]);return X.length&&(Z.allPaths=X),Z}const R=function(Z,J,X){let H,B;for(let V=0,Y=U.length;V<Y;V++){const ie=U[V];ie.requiresSiblings&&X&&(J||(J=(0,D.basename)(Z)),H||(H=J.substr(0,J.length-(0,D.extname)(Z).length)));const ae=ie(Z,J,H,X);if(typeof ae==\"string\")return ae;(0,L.isThenable)(ae)&&(B||(B=[]),B.push(ae))}return B?(()=>we(this,void 0,void 0,function*(){for(const V of B){const Y=yield V;if(typeof Y==\"string\")return Y}return null}))():null},K=U.find(Z=>!!Z.allBasenames);K&&(R.allBasenames=K.allBasenames);const G=U.reduce((Z,J)=>J.allPaths?Z.concat(J.allPaths):Z,[]);return G.length&&(R.allPaths=G),R}function N(O,W,U){if(W===!1)return l;const j=p(O,U);if(j===l)return l;if(typeof W==\"boolean\")return j;if(W){const R=W.when;if(typeof R==\"string\"){const K=(G,Z,J,X)=>{if(!X||!j(G,Z))return null;const H=R.replace(\"$(basename)\",()=>J),B=X(H);return(0,L.isThenable)(B)?B.then(V=>V?O:null):B?O:null};return K.requiresSiblings=!0,K}}return j}function F(O,W){const U=O.filter(Z=>!!Z.basenames);if(U.length<2)return O;const j=U.reduce((Z,J)=>{const X=J.basenames;return X?Z.concat(X):Z},[]);let R;if(W){R=[];for(let Z=0,J=j.length;Z<J;Z++)R.push(W)}else R=U.reduce((Z,J)=>{const X=J.patterns;return X?Z.concat(X):Z},[]);const K=function(Z,J){if(typeof Z!=\"string\")return null;if(!J){let H;for(H=Z.length;H>0;H--){const B=Z.charCodeAt(H-1);if(B===47||B===92)break}J=Z.substr(H)}const X=j.indexOf(J);return X!==-1?R[X]:null};K.basenames=j,K.patterns=R,K.allBasenames=j;const G=O.filter(Z=>!Z.basenames);return G.push(K),G}}),define(ne[571],se([1,0,220,17]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.normalizeDriveLetter=void 0;function y(S,f=k.isWindows){return(0,L.hasDriveLetter)(S,f)?S.charAt(0).toUpperCase()+S.slice(1):S}e.normalizeDriveLetter=y;let D=Object.create(null)}),define(ne[22],se([1,0,92,17]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.uriToFsPath=e.URI=void 0;const y=/^\\w[\\w\\d+.-]*$/,D=/^\\//,S=/^\\/\\//;function f(m,v){if(!m.scheme&&v)throw new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${m.authority}\", path: \"${m.path}\", query: \"${m.query}\", fragment: \"${m.fragment}\"}`);if(m.scheme&&!y.test(m.scheme))throw new Error(\"[UriError]: Scheme contains illegal characters.\");if(m.path){if(m.authority){if(!D.test(m.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character')}else if(S.test(m.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")')}}function _(m,v){return!m&&!v?\"file\":m}function g(m,v){switch(m){case\"https\":case\"http\":case\"file\":v?v[0]!==s&&(v=s+v):v=s;break}return v}const C=\"\",s=\"/\",i=/^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;class n{static isUri(v){return v instanceof n?!0:v?typeof v.authority==\"string\"&&typeof v.fragment==\"string\"&&typeof v.path==\"string\"&&typeof v.query==\"string\"&&typeof v.scheme==\"string\"&&typeof v.fsPath==\"string\"&&typeof v.with==\"function\"&&typeof v.toString==\"function\":!1}constructor(v,b,w,E,I,M=!1){typeof v==\"object\"?(this.scheme=v.scheme||C,this.authority=v.authority||C,this.path=v.path||C,this.query=v.query||C,this.fragment=v.fragment||C):(this.scheme=_(v,M),this.authority=b||C,this.path=g(this.scheme,w||C),this.query=E||C,this.fragment=I||C,f(this,M))}get fsPath(){return c(this,!1)}with(v){if(!v)return this;let{scheme:b,authority:w,path:E,query:I,fragment:M}=v;return b===void 0?b=this.scheme:b===null&&(b=C),w===void 0?w=this.authority:w===null&&(w=C),E===void 0?E=this.path:E===null&&(E=C),I===void 0?I=this.query:I===null&&(I=C),M===void 0?M=this.fragment:M===null&&(M=C),b===this.scheme&&w===this.authority&&E===this.path&&I===this.query&&M===this.fragment?this:new a(b,w,E,I,M)}static parse(v,b=!1){const w=i.exec(v);return w?new a(w[2]||C,p(w[4]||C),p(w[5]||C),p(w[7]||C),p(w[9]||C),b):new a(C,C,C,C,C)}static file(v){let b=C;if(k.isWindows&&(v=v.replace(/\\\\/g,s)),v[0]===s&&v[1]===s){const w=v.indexOf(s,2);w===-1?(b=v.substring(2),v=s):(b=v.substring(2,w),v=v.substring(w)||s)}return new a(\"file\",b,v,C,C)}static from(v,b){return new a(v.scheme,v.authority,v.path,v.query,v.fragment,b)}static joinPath(v,...b){if(!v.path)throw new Error(\"[UriError]: cannot call joinPath on URI without path\");let w;return k.isWindows&&v.scheme===\"file\"?w=n.file(L.win32.join(c(v,!0),...b)).path:w=L.posix.join(v.path,...b),v.with({path:w})}toString(v=!1){return o(this,v)}toJSON(){return this}static revive(v){var b,w;if(v){if(v instanceof n)return v;{const E=new a(v);return E._formatted=(b=v.external)!==null&&b!==void 0?b:null,E._fsPath=v._sep===t&&(w=v.fsPath)!==null&&w!==void 0?w:null,E}}else return v}}e.URI=n;const t=k.isWindows?1:void 0;class a extends n{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=c(this,!1)),this._fsPath}toString(v=!1){return v?o(this,!0):(this._formatted||(this._formatted=o(this,!1)),this._formatted)}toJSON(){const v={$mid:1};return this._fsPath&&(v.fsPath=this._fsPath,v._sep=t),this._formatted&&(v.external=this._formatted),this.path&&(v.path=this.path),this.scheme&&(v.scheme=this.scheme),this.authority&&(v.authority=this.authority),this.query&&(v.query=this.query),this.fragment&&(v.fragment=this.fragment),v}}const u={[58]:\"%3A\",[47]:\"%2F\",[63]:\"%3F\",[35]:\"%23\",[91]:\"%5B\",[93]:\"%5D\",[64]:\"%40\",[33]:\"%21\",[36]:\"%24\",[38]:\"%26\",[39]:\"%27\",[40]:\"%28\",[41]:\"%29\",[42]:\"%2A\",[43]:\"%2B\",[44]:\"%2C\",[59]:\"%3B\",[61]:\"%3D\",[32]:\"%20\"};function h(m,v,b){let w,E=-1;for(let I=0;I<m.length;I++){const M=m.charCodeAt(I);if(M>=97&&M<=122||M>=65&&M<=90||M>=48&&M<=57||M===45||M===46||M===95||M===126||v&&M===47||b&&M===91||b&&M===93||b&&M===58)E!==-1&&(w+=encodeURIComponent(m.substring(E,I)),E=-1),w!==void 0&&(w+=m.charAt(I));else{w===void 0&&(w=m.substr(0,I));const P=u[M];P!==void 0?(E!==-1&&(w+=encodeURIComponent(m.substring(E,I)),E=-1),w+=P):E===-1&&(E=I)}}return E!==-1&&(w+=encodeURIComponent(m.substring(E))),w!==void 0?w:m}function r(m){let v;for(let b=0;b<m.length;b++){const w=m.charCodeAt(b);w===35||w===63?(v===void 0&&(v=m.substr(0,b)),v+=u[w]):v!==void 0&&(v+=m[b])}return v!==void 0?v:m}function c(m,v){let b;return m.authority&&m.path.length>1&&m.scheme===\"file\"?b=`//${m.authority}${m.path}`:m.path.charCodeAt(0)===47&&(m.path.charCodeAt(1)>=65&&m.path.charCodeAt(1)<=90||m.path.charCodeAt(1)>=97&&m.path.charCodeAt(1)<=122)&&m.path.charCodeAt(2)===58?v?b=m.path.substr(1):b=m.path[1].toLowerCase()+m.path.substr(2):b=m.path,k.isWindows&&(b=b.replace(/\\//g,\"\\\\\")),b}e.uriToFsPath=c;function o(m,v){const b=v?r:h;let w=\"\",{scheme:E,authority:I,path:M,query:P,fragment:x}=m;if(E&&(w+=E,w+=\":\"),(I||E===\"file\")&&(w+=s,w+=s),I){let T=I.indexOf(\"@\");if(T!==-1){const A=I.substr(0,T);I=I.substr(T+1),T=A.lastIndexOf(\":\"),T===-1?w+=b(A,!1,!1):(w+=b(A.substr(0,T),!1,!1),w+=\":\",w+=b(A.substr(T+1),!1,!0)),w+=\"@\"}I=I.toLowerCase(),T=I.lastIndexOf(\":\"),T===-1?w+=b(I,!1,!0):(w+=b(I.substr(0,T),!1,!0),w+=I.substr(T))}if(M){if(M.length>=3&&M.charCodeAt(0)===47&&M.charCodeAt(2)===58){const T=M.charCodeAt(1);T>=65&&T<=90&&(M=`/${String.fromCharCode(T+32)}:${M.substr(3)}`)}else if(M.length>=2&&M.charCodeAt(1)===58){const T=M.charCodeAt(0);T>=65&&T<=90&&(M=`${String.fromCharCode(T+32)}:${M.substr(2)}`)}w+=b(M,!0,!1)}return P&&(w+=\"?\",w+=b(P,!1,!1)),x&&(w+=\"#\",w+=v?x:h(x,!1,!1)),w}function d(m){try{return decodeURIComponent(m)}catch{return m.length>3?m.substr(0,3)+d(m.substr(3)):m}}const l=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function p(m){return m.match(l)?m.replace(l,v=>d(v)):m}}),define(ne[221],se([1,0,140,22]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.revive=e.parse=e.stringify=void 0;function y(_){return JSON.stringify(_,S)}e.stringify=y;function D(_){let g=JSON.parse(_);return g=f(g),g}e.parse=D;function S(_,g){return g instanceof RegExp?{$mid:2,source:g.source,flags:g.flags}:g}function f(_,g=0){if(!_||g>200)return _;if(typeof _==\"object\"){switch(_.$mid){case 1:return k.URI.revive(_);case 2:return new RegExp(_.source,_.flags);case 16:return new Date(_.source)}if(_ instanceof L.VSBuffer||_ instanceof Uint8Array)return _;if(Array.isArray(_))for(let C=0;C<_.length;++C)_[C]=f(_[C],g+1);else for(const C in _)Object.hasOwnProperty.call(_,C)&&(_[C]=f(_[C],g+1))}return _}e.revive=f}),define(ne[54],se([1,0,9,17,22]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.COI=e.FileAccess=e.RemoteAuthorities=e.connectionTokenQueryName=e.Schemas=void 0;var D;(function(g){g.inMemory=\"inmemory\",g.vscode=\"vscode\",g.internal=\"private\",g.walkThrough=\"walkThrough\",g.walkThroughSnippet=\"walkThroughSnippet\",g.http=\"http\",g.https=\"https\",g.file=\"file\",g.mailto=\"mailto\",g.untitled=\"untitled\",g.data=\"data\",g.command=\"command\",g.vscodeRemote=\"vscode-remote\",g.vscodeRemoteResource=\"vscode-remote-resource\",g.vscodeManagedRemoteResource=\"vscode-managed-remote-resource\",g.vscodeUserData=\"vscode-userdata\",g.vscodeCustomEditor=\"vscode-custom-editor\",g.vscodeNotebookCell=\"vscode-notebook-cell\",g.vscodeNotebookCellMetadata=\"vscode-notebook-cell-metadata\",g.vscodeNotebookCellOutput=\"vscode-notebook-cell-output\",g.vscodeInteractiveInput=\"vscode-interactive-input\",g.vscodeSettings=\"vscode-settings\",g.vscodeWorkspaceTrust=\"vscode-workspace-trust\",g.vscodeTerminal=\"vscode-terminal\",g.vscodeChatSesssion=\"vscode-chat-editor\",g.webviewPanel=\"webview-panel\",g.vscodeWebview=\"vscode-webview\",g.extension=\"extension\",g.vscodeFileResource=\"vscode-file\",g.tmp=\"tmp\",g.vsls=\"vsls\",g.vscodeSourceControl=\"vscode-scm\"})(D||(e.Schemas=D={})),e.connectionTokenQueryName=\"tkn\";class S{constructor(){this._hosts=Object.create(null),this._ports=Object.create(null),this._connectionTokens=Object.create(null),this._preferredWebSchema=\"http\",this._delegate=null,this._remoteResourcesPath=`/${D.vscodeRemoteResource}`}setPreferredWebSchema(C){this._preferredWebSchema=C}rewrite(C){if(this._delegate)try{return this._delegate(C)}catch(u){return L.onUnexpectedError(u),C}const s=C.authority;let i=this._hosts[s];i&&i.indexOf(\":\")!==-1&&i.indexOf(\"[\")===-1&&(i=`[${i}]`);const n=this._ports[s],t=this._connectionTokens[s];let a=`path=${encodeURIComponent(C.path)}`;return typeof t==\"string\"&&(a+=`&${e.connectionTokenQueryName}=${encodeURIComponent(t)}`),y.URI.from({scheme:k.isWeb?this._preferredWebSchema:D.vscodeRemoteResource,authority:`${i}:${n}`,path:this._remoteResourcesPath,query:a})}}e.RemoteAuthorities=new S;class f{uriToBrowserUri(C){return C.scheme===D.vscodeRemote?e.RemoteAuthorities.rewrite(C):C.scheme===D.file&&(k.isNative||k.isWebWorker&&k.globals.origin===`${D.vscodeFileResource}://${f.FALLBACK_AUTHORITY}`)?C.with({scheme:D.vscodeFileResource,authority:C.authority||f.FALLBACK_AUTHORITY,query:null,fragment:null}):C}}f.FALLBACK_AUTHORITY=\"vscode-app\",e.FileAccess=new f;var _;(function(g){const C=new Map([[\"1\",{\"Cross-Origin-Opener-Policy\":\"same-origin\"}],[\"2\",{\"Cross-Origin-Embedder-Policy\":\"require-corp\"}],[\"3\",{\"Cross-Origin-Opener-Policy\":\"same-origin\",\"Cross-Origin-Embedder-Policy\":\"require-corp\"}]]);g.CoopAndCoep=Object.freeze(C.get(\"3\"));const s=\"vscode-coi\";function i(t){let a;typeof t==\"string\"?a=new URL(t).searchParams:t instanceof URL?a=t.searchParams:y.URI.isUri(t)&&(a=new URL(t.toString(!0)).searchParams);const u=a?.get(s);if(u)return C.get(u)}g.getHeadersFromQuery=i;function n(t,a,u){if(!globalThis.crossOriginIsolated)return;const h=a&&u?\"3\":u?\"2\":\"1\";t instanceof URLSearchParams?t.set(s,h):t[s]=h}g.addSearchParam=n})(_||(e.COI=_={}))}),define(ne[7],se([1,0,52,217,44,60,9,6,304,2,54,17]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.h=e.DragAndDropObserver=e.ModifierKeyEmitter=e.basicMarkupHtmlTags=e.hookDomPurifyHrefAndSrcSanitizer=e.asCssValueWithDefault=e.asCSSPropertyValue=e.asCSSUrl=e.animate=e.windowOpenNoOpener=e.computeScreenAwareSize=e.hide=e.show=e.setVisibility=e.$=e.Namespace=e.reset=e.prepend=e.append=e.trackFocus=e.restoreParentsScrollTop=e.saveParentsScrollTop=e.EventHelper=e.isEventLike=e.EventType=e.isHTMLElement=e.removeCSSRulesContainingSelector=e.createCSSRule=e.createStyleSheet=e.getActiveElement=e.getShadowRoot=e.isInShadowDOM=e.isShadowRoot=e.hasParentWithClass=e.findParentWithClass=e.isAncestor=e.getTotalHeight=e.getContentHeight=e.getContentWidth=e.getTotalWidth=e.getDomNodeZoomLevel=e.getDomNodePagePosition=e.size=e.getTopLeftOffset=e.Dimension=e.getClientArea=e.getComputedStyle=e.scheduleAtNextAnimationFrame=e.runAtThisOrScheduleAtNextAnimationFrame=e.addDisposableGenericMouseUpListener=e.addDisposableGenericMouseDownListener=e.addStandardDisposableGenericMouseUpListener=e.addStandardDisposableGenericMouseDownListener=e.addStandardDisposableListener=e.addDisposableListener=e.isInDOM=e.clearNode=void 0;function i(Ce){for(;Ce.firstChild;)Ce.firstChild.remove()}e.clearNode=i;function n(Ce){var be;return(be=Ce?.isConnected)!==null&&be!==void 0?be:!1}e.isInDOM=n;class t{constructor(be,Ie,Ne,Re){this._node=be,this._type=Ie,this._handler=Ne,this._options=Re||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}}function a(Ce,be,Ie,Ne){return new t(Ce,be,Ie,Ne)}e.addDisposableListener=a;function u(Ce){return function(be){return Ce(new D.StandardMouseEvent(be))}}function h(Ce){return function(be){return Ce(new y.StandardKeyboardEvent(be))}}const r=function(be,Ie,Ne,Re){let Ve=Ne;return Ie===\"click\"||Ie===\"mousedown\"?Ve=u(Ne):(Ie===\"keydown\"||Ie===\"keypress\"||Ie===\"keyup\")&&(Ve=h(Ne)),a(be,Ie,Ve,Re)};e.addStandardDisposableListener=r;const c=function(be,Ie,Ne){const Re=u(Ie);return d(be,Re,Ne)};e.addStandardDisposableGenericMouseDownListener=c;const o=function(be,Ie,Ne){const Re=u(Ie);return l(be,Re,Ne)};e.addStandardDisposableGenericMouseUpListener=o;function d(Ce,be,Ie){return a(Ce,s.isIOS&&k.BrowserFeatures.pointerEvents?e.EventType.POINTER_DOWN:e.EventType.MOUSE_DOWN,be,Ie)}e.addDisposableGenericMouseDownListener=d;function l(Ce,be,Ie){return a(Ce,s.isIOS&&k.BrowserFeatures.pointerEvents?e.EventType.POINTER_UP:e.EventType.MOUSE_UP,be,Ie)}e.addDisposableGenericMouseUpListener=l;class p{constructor(be,Ie=0){this._runner=be,this.priority=Ie,this._canceled=!1}dispose(){this._canceled=!0}execute(){if(!this._canceled)try{this._runner()}catch(be){(0,S.onUnexpectedError)(be)}}static sort(be,Ie){return Ie.priority-be.priority}}(function(){let Ce=[],be=null,Ie=!1,Ne=!1;const Re=()=>{for(Ie=!1,be=Ce,Ce=[],Ne=!0;be.length>0;)be.sort(p.sort),be.shift().execute();Ne=!1};e.scheduleAtNextAnimationFrame=(Ve,ze=0)=>{const We=new p(Ve,ze);return Ce.push(We),Ie||(Ie=!0,requestAnimationFrame(Re)),We},e.runAtThisOrScheduleAtNextAnimationFrame=(Ve,ze)=>{if(Ne){const We=new p(Ve,ze);return be.push(We),We}else return(0,e.scheduleAtNextAnimationFrame)(Ve,ze)}})();function m(Ce){return document.defaultView.getComputedStyle(Ce,null)}e.getComputedStyle=m;function v(Ce){if(Ce!==document.body)return new w(Ce.clientWidth,Ce.clientHeight);if(s.isIOS&&window.visualViewport)return new w(window.visualViewport.width,window.visualViewport.height);if(window.innerWidth&&window.innerHeight)return new w(window.innerWidth,window.innerHeight);if(document.body&&document.body.clientWidth&&document.body.clientHeight)return new w(document.body.clientWidth,document.body.clientHeight);if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientHeight)return new w(document.documentElement.clientWidth,document.documentElement.clientHeight);throw new Error(\"Unable to figure out browser width and height\")}e.getClientArea=v;class b{static convertToPixels(be,Ie){return parseFloat(Ie)||0}static getDimension(be,Ie,Ne){const Re=m(be),Ve=Re?Re.getPropertyValue(Ie):\"0\";return b.convertToPixels(be,Ve)}static getBorderLeftWidth(be){return b.getDimension(be,\"border-left-width\",\"borderLeftWidth\")}static getBorderRightWidth(be){return b.getDimension(be,\"border-right-width\",\"borderRightWidth\")}static getBorderTopWidth(be){return b.getDimension(be,\"border-top-width\",\"borderTopWidth\")}static getBorderBottomWidth(be){return b.getDimension(be,\"border-bottom-width\",\"borderBottomWidth\")}static getPaddingLeft(be){return b.getDimension(be,\"padding-left\",\"paddingLeft\")}static getPaddingRight(be){return b.getDimension(be,\"padding-right\",\"paddingRight\")}static getPaddingTop(be){return b.getDimension(be,\"padding-top\",\"paddingTop\")}static getPaddingBottom(be){return b.getDimension(be,\"padding-bottom\",\"paddingBottom\")}static getMarginLeft(be){return b.getDimension(be,\"margin-left\",\"marginLeft\")}static getMarginTop(be){return b.getDimension(be,\"margin-top\",\"marginTop\")}static getMarginRight(be){return b.getDimension(be,\"margin-right\",\"marginRight\")}static getMarginBottom(be){return b.getDimension(be,\"margin-bottom\",\"marginBottom\")}}class w{constructor(be,Ie){this.width=be,this.height=Ie}with(be=this.width,Ie=this.height){return be!==this.width||Ie!==this.height?new w(be,Ie):this}static is(be){return typeof be==\"object\"&&typeof be.height==\"number\"&&typeof be.width==\"number\"}static lift(be){return be instanceof w?be:new w(be.width,be.height)}static equals(be,Ie){return be===Ie?!0:!be||!Ie?!1:be.width===Ie.width&&be.height===Ie.height}}e.Dimension=w,w.None=new w(0,0);function E(Ce){let be=Ce.offsetParent,Ie=Ce.offsetTop,Ne=Ce.offsetLeft;for(;(Ce=Ce.parentNode)!==null&&Ce!==document.body&&Ce!==document.documentElement;){Ie-=Ce.scrollTop;const Re=U(Ce)?null:m(Ce);Re&&(Ne-=Re.direction!==\"rtl\"?Ce.scrollLeft:-Ce.scrollLeft),Ce===be&&(Ne+=b.getBorderLeftWidth(Ce),Ie+=b.getBorderTopWidth(Ce),Ie+=Ce.offsetTop,Ne+=Ce.offsetLeft,be=Ce.offsetParent)}return{left:Ne,top:Ie}}e.getTopLeftOffset=E;function I(Ce,be,Ie){typeof be==\"number\"&&(Ce.style.width=`${be}px`),typeof Ie==\"number\"&&(Ce.style.height=`${Ie}px`)}e.size=I;function M(Ce){const be=Ce.getBoundingClientRect();return{left:be.left+window.scrollX,top:be.top+window.scrollY,width:be.width,height:be.height}}e.getDomNodePagePosition=M;function P(Ce){let be=Ce,Ie=1;do{const Ne=m(be).zoom;Ne!=null&&Ne!==\"1\"&&(Ie*=Ne),be=be.parentElement}while(be!==null&&be!==document.documentElement);return Ie}e.getDomNodeZoomLevel=P;function x(Ce){const be=b.getMarginLeft(Ce)+b.getMarginRight(Ce);return Ce.offsetWidth+be}e.getTotalWidth=x;function T(Ce){const be=b.getBorderLeftWidth(Ce)+b.getBorderRightWidth(Ce),Ie=b.getPaddingLeft(Ce)+b.getPaddingRight(Ce);return Ce.offsetWidth-be-Ie}e.getContentWidth=T;function A(Ce){const be=b.getBorderTopWidth(Ce)+b.getBorderBottomWidth(Ce),Ie=b.getPaddingTop(Ce)+b.getPaddingBottom(Ce);return Ce.offsetHeight-be-Ie}e.getContentHeight=A;function N(Ce){const be=b.getMarginTop(Ce)+b.getMarginBottom(Ce);return Ce.offsetHeight+be}e.getTotalHeight=N;function F(Ce,be){for(;Ce;){if(Ce===be)return!0;Ce=Ce.parentNode}return!1}e.isAncestor=F;function O(Ce,be,Ie){for(;Ce&&Ce.nodeType===Ce.ELEMENT_NODE;){if(Ce.classList.contains(be))return Ce;if(Ie){if(typeof Ie==\"string\"){if(Ce.classList.contains(Ie))return null}else if(Ce===Ie)return null}Ce=Ce.parentNode}return null}e.findParentWithClass=O;function W(Ce,be,Ie){return!!O(Ce,be,Ie)}e.hasParentWithClass=W;function U(Ce){return Ce&&!!Ce.host&&!!Ce.mode}e.isShadowRoot=U;function j(Ce){return!!R(Ce)}e.isInShadowDOM=j;function R(Ce){for(;Ce.parentNode;){if(Ce===document.body)return null;Ce=Ce.parentNode}return U(Ce)?Ce:null}e.getShadowRoot=R;function K(){let Ce=document.activeElement;for(;Ce?.shadowRoot;)Ce=Ce.shadowRoot.activeElement;return Ce}e.getActiveElement=K;function G(Ce=document.getElementsByTagName(\"head\")[0],be){const Ie=document.createElement(\"style\");return Ie.type=\"text/css\",Ie.media=\"screen\",be?.(Ie),Ce.appendChild(Ie),Ie}e.createStyleSheet=G;let Z=null;function J(){return Z||(Z=G()),Z}function X(Ce){var be,Ie;return!((be=Ce?.sheet)===null||be===void 0)&&be.rules?Ce.sheet.rules:!((Ie=Ce?.sheet)===null||Ie===void 0)&&Ie.cssRules?Ce.sheet.cssRules:[]}function H(Ce,be,Ie=J()){!Ie||!be||Ie.sheet.insertRule(Ce+\"{\"+be+\"}\",0)}e.createCSSRule=H;function B(Ce,be=J()){if(!be)return;const Ie=X(be),Ne=[];for(let Re=0;Re<Ie.length;Re++)Ie[Re].selectorText.indexOf(Ce)!==-1&&Ne.push(Re);for(let Re=Ne.length-1;Re>=0;Re--)be.sheet.deleteRule(Ne[Re])}e.removeCSSRulesContainingSelector=B;function V(Ce){return typeof HTMLElement==\"object\"?Ce instanceof HTMLElement:Ce&&typeof Ce==\"object\"&&Ce.nodeType===1&&typeof Ce.nodeName==\"string\"}e.isHTMLElement=V,e.EventType={CLICK:\"click\",AUXCLICK:\"auxclick\",DBLCLICK:\"dblclick\",MOUSE_UP:\"mouseup\",MOUSE_DOWN:\"mousedown\",MOUSE_OVER:\"mouseover\",MOUSE_MOVE:\"mousemove\",MOUSE_OUT:\"mouseout\",MOUSE_ENTER:\"mouseenter\",MOUSE_LEAVE:\"mouseleave\",MOUSE_WHEEL:\"wheel\",POINTER_UP:\"pointerup\",POINTER_DOWN:\"pointerdown\",POINTER_MOVE:\"pointermove\",POINTER_LEAVE:\"pointerleave\",CONTEXT_MENU:\"contextmenu\",WHEEL:\"wheel\",KEY_DOWN:\"keydown\",KEY_PRESS:\"keypress\",KEY_UP:\"keyup\",LOAD:\"load\",BEFORE_UNLOAD:\"beforeunload\",UNLOAD:\"unload\",PAGE_SHOW:\"pageshow\",PAGE_HIDE:\"pagehide\",ABORT:\"abort\",ERROR:\"error\",RESIZE:\"resize\",SCROLL:\"scroll\",FULLSCREEN_CHANGE:\"fullscreenchange\",WK_FULLSCREEN_CHANGE:\"webkitfullscreenchange\",SELECT:\"select\",CHANGE:\"change\",SUBMIT:\"submit\",RESET:\"reset\",FOCUS:\"focus\",FOCUS_IN:\"focusin\",FOCUS_OUT:\"focusout\",BLUR:\"blur\",INPUT:\"input\",STORAGE:\"storage\",DRAG_START:\"dragstart\",DRAG:\"drag\",DRAG_ENTER:\"dragenter\",DRAG_LEAVE:\"dragleave\",DRAG_OVER:\"dragover\",DROP:\"drop\",DRAG_END:\"dragend\",ANIMATION_START:L.isWebKit?\"webkitAnimationStart\":\"animationstart\",ANIMATION_END:L.isWebKit?\"webkitAnimationEnd\":\"animationend\",ANIMATION_ITERATION:L.isWebKit?\"webkitAnimationIteration\":\"animationiteration\"};function Y(Ce){const be=Ce;return!!(be&&typeof be.preventDefault==\"function\"&&typeof be.stopPropagation==\"function\")}e.isEventLike=Y,e.EventHelper={stop:(Ce,be)=>(Ce.preventDefault(),be&&Ce.stopPropagation(),Ce)};function ie(Ce){const be=[];for(let Ie=0;Ce&&Ce.nodeType===Ce.ELEMENT_NODE;Ie++)be[Ie]=Ce.scrollTop,Ce=Ce.parentNode;return be}e.saveParentsScrollTop=ie;function ae(Ce,be){for(let Ie=0;Ce&&Ce.nodeType===Ce.ELEMENT_NODE;Ie++)Ce.scrollTop!==be[Ie]&&(Ce.scrollTop=be[Ie]),Ce=Ce.parentNode}e.restoreParentsScrollTop=ae;class ce extends g.Disposable{static hasFocusWithin(be){const Ie=R(be),Ne=Ie?Ie.activeElement:document.activeElement;return F(Ne,be)}constructor(be){super(),this._onDidFocus=this._register(new f.Emitter),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new f.Emitter),this.onDidBlur=this._onDidBlur.event;let Ie=ce.hasFocusWithin(be),Ne=!1;const Re=()=>{Ne=!1,Ie||(Ie=!0,this._onDidFocus.fire())},Ve=()=>{Ie&&(Ne=!0,window.setTimeout(()=>{Ne&&(Ne=!1,Ie=!1,this._onDidBlur.fire())},0))};this._refreshStateHandler=()=>{ce.hasFocusWithin(be)!==Ie&&(Ie?Ve():Re())},this._register(a(be,e.EventType.FOCUS,Re,!0)),this._register(a(be,e.EventType.BLUR,Ve,!0)),this._register(a(be,e.EventType.FOCUS_IN,()=>this._refreshStateHandler())),this._register(a(be,e.EventType.FOCUS_OUT,()=>this._refreshStateHandler()))}}function de(Ce){return new ce(Ce)}e.trackFocus=de;function he(Ce,...be){if(Ce.append(...be),be.length===1&&typeof be[0]!=\"string\")return be[0]}e.append=he;function ue(Ce,be){return Ce.insertBefore(be,Ce.firstChild),be}e.prepend=ue;function te(Ce,...be){Ce.innerText=\"\",he(Ce,...be)}e.reset=te;const q=/([\\w\\-]+)?(#([\\w\\-]+))?((\\.([\\w\\-]+))*)/;var z;(function(Ce){Ce.HTML=\"http://www.w3.org/1999/xhtml\",Ce.SVG=\"http://www.w3.org/2000/svg\"})(z||(e.Namespace=z={}));function ee(Ce,be,Ie,...Ne){const Re=q.exec(be);if(!Re)throw new Error(\"Bad use of emmet\");const Ve=Re[1]||\"div\";let ze;return Ce!==z.HTML?ze=document.createElementNS(Ce,Ve):ze=document.createElement(Ve),Re[3]&&(ze.id=Re[3]),Re[4]&&(ze.className=Re[4].replace(/\\./g,\" \").trim()),Ie&&Object.entries(Ie).forEach(([We,qe])=>{typeof qe>\"u\"||(/^on\\w+$/.test(We)?ze[We]=qe:We===\"selected\"?qe&&ze.setAttribute(We,\"true\"):ze.setAttribute(We,qe))}),ze.append(...Ne),ze}function $(Ce,be,...Ie){return ee(z.HTML,Ce,be,...Ie)}e.$=$,$.SVG=function(Ce,be,...Ie){return ee(z.SVG,Ce,be,...Ie)};function re(Ce,...be){Ce?oe(...be):ge(...be)}e.setVisibility=re;function oe(...Ce){for(const be of Ce)be.style.display=\"\",be.removeAttribute(\"aria-hidden\")}e.show=oe;function ge(...Ce){for(const be of Ce)be.style.display=\"none\",be.setAttribute(\"aria-hidden\",\"true\")}e.hide=ge;function ve(Ce){const be=window.devicePixelRatio*Ce;return Math.max(1,Math.floor(be))/window.devicePixelRatio}e.computeScreenAwareSize=ve;function Se(Ce){window.open(Ce,\"_blank\",\"noopener\")}e.windowOpenNoOpener=Se;function Le(Ce){const be=()=>{Ce(),Ie=(0,e.scheduleAtNextAnimationFrame)(be)};let Ie=(0,e.scheduleAtNextAnimationFrame)(be);return(0,g.toDisposable)(()=>Ie.dispose())}e.animate=Le,C.RemoteAuthorities.setPreferredWebSchema(/^https:/.test(window.location.href)?\"https\":\"http\");function De(Ce){return Ce?`url('${C.FileAccess.uriToBrowserUri(Ce).toString(!0).replace(/'/g,\"%27\")}')`:\"url('')\"}e.asCSSUrl=De;function ye(Ce){return`'${Ce.replace(/'/g,\"%27\")}'`}e.asCSSPropertyValue=ye;function Ee(Ce,be){if(Ce!==void 0){const Ie=Ce.match(/^\\s*var\\((.+)\\)$/);if(Ie){const Ne=Ie[1].split(\",\",2);return Ne.length===2&&(be=Ee(Ne[1].trim(),be)),`var(${Ne[0]}, ${be})`}return Ce}return be}e.asCssValueWithDefault=Ee;function Me(Ce,be=!1){const Ie=document.createElement(\"a\");return _.addHook(\"afterSanitizeAttributes\",Ne=>{for(const Re of[\"href\",\"src\"])if(Ne.hasAttribute(Re)){const Ve=Ne.getAttribute(Re);if(Re===\"href\"&&Ve.startsWith(\"#\"))continue;if(Ie.href=Ve,!Ce.includes(Ie.protocol.replace(/:$/,\"\"))){if(be&&Re===\"src\"&&Ie.href.startsWith(\"data:\"))continue;Ne.removeAttribute(Re)}}}),(0,g.toDisposable)(()=>{_.removeHook(\"afterSanitizeAttributes\")})}e.hookDomPurifyHrefAndSrcSanitizer=Me,e.basicMarkupHtmlTags=Object.freeze([\"a\",\"abbr\",\"b\",\"bdo\",\"blockquote\",\"br\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"dd\",\"del\",\"details\",\"dfn\",\"div\",\"dl\",\"dt\",\"em\",\"figcaption\",\"figure\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"hr\",\"i\",\"img\",\"ins\",\"kbd\",\"label\",\"li\",\"mark\",\"ol\",\"p\",\"pre\",\"q\",\"rp\",\"rt\",\"ruby\",\"samp\",\"small\",\"small\",\"source\",\"span\",\"strike\",\"strong\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"tt\",\"u\",\"ul\",\"var\",\"video\",\"wbr\"]);const Pe=Object.freeze({ALLOWED_TAGS:[\"a\",\"button\",\"blockquote\",\"code\",\"div\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"hr\",\"input\",\"label\",\"li\",\"p\",\"pre\",\"select\",\"small\",\"span\",\"strong\",\"textarea\",\"ul\",\"ol\"],ALLOWED_ATTR:[\"href\",\"data-href\",\"data-command\",\"target\",\"title\",\"name\",\"src\",\"alt\",\"class\",\"id\",\"role\",\"tabindex\",\"style\",\"data-code\",\"width\",\"height\",\"align\",\"x-dispatch\",\"required\",\"checked\",\"placeholder\",\"type\",\"start\"],RETURN_DOM:!1,RETURN_DOM_FRAGMENT:!1,RETURN_TRUSTED_TYPE:!0});class Fe extends f.Emitter{constructor(){super(),this._subscriptions=new g.DisposableStore,this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1},this._subscriptions.add(a(window,\"keydown\",be=>{if(be.defaultPrevented)return;const Ie=new y.StandardKeyboardEvent(be);if(!(Ie.keyCode===6&&be.repeat)){if(be.altKey&&!this._keyStatus.altKey)this._keyStatus.lastKeyPressed=\"alt\";else if(be.ctrlKey&&!this._keyStatus.ctrlKey)this._keyStatus.lastKeyPressed=\"ctrl\";else if(be.metaKey&&!this._keyStatus.metaKey)this._keyStatus.lastKeyPressed=\"meta\";else if(be.shiftKey&&!this._keyStatus.shiftKey)this._keyStatus.lastKeyPressed=\"shift\";else if(Ie.keyCode!==6)this._keyStatus.lastKeyPressed=void 0;else return;this._keyStatus.altKey=be.altKey,this._keyStatus.ctrlKey=be.ctrlKey,this._keyStatus.metaKey=be.metaKey,this._keyStatus.shiftKey=be.shiftKey,this._keyStatus.lastKeyPressed&&(this._keyStatus.event=be,this.fire(this._keyStatus))}},!0)),this._subscriptions.add(a(window,\"keyup\",be=>{be.defaultPrevented||(!be.altKey&&this._keyStatus.altKey?this._keyStatus.lastKeyReleased=\"alt\":!be.ctrlKey&&this._keyStatus.ctrlKey?this._keyStatus.lastKeyReleased=\"ctrl\":!be.metaKey&&this._keyStatus.metaKey?this._keyStatus.lastKeyReleased=\"meta\":!be.shiftKey&&this._keyStatus.shiftKey?this._keyStatus.lastKeyReleased=\"shift\":this._keyStatus.lastKeyReleased=void 0,this._keyStatus.lastKeyPressed!==this._keyStatus.lastKeyReleased&&(this._keyStatus.lastKeyPressed=void 0),this._keyStatus.altKey=be.altKey,this._keyStatus.ctrlKey=be.ctrlKey,this._keyStatus.metaKey=be.metaKey,this._keyStatus.shiftKey=be.shiftKey,this._keyStatus.lastKeyReleased&&(this._keyStatus.event=be,this.fire(this._keyStatus)))},!0)),this._subscriptions.add(a(document.body,\"mousedown\",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),this._subscriptions.add(a(document.body,\"mouseup\",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),this._subscriptions.add(a(document.body,\"mousemove\",be=>{be.buttons&&(this._keyStatus.lastKeyPressed=void 0)},!0)),this._subscriptions.add(a(window,\"blur\",()=>{this.resetKeyStatus()}))}get keyStatus(){return this._keyStatus}resetKeyStatus(){this.doResetKeyStatus(),this.fire(this._keyStatus)}doResetKeyStatus(){this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1}}static getInstance(){return Fe.instance||(Fe.instance=new Fe),Fe.instance}dispose(){super.dispose(),this._subscriptions.dispose()}}e.ModifierKeyEmitter=Fe;class _e extends g.Disposable{constructor(be,Ie){super(),this.element=be,this.callbacks=Ie,this.counter=0,this.dragStartTime=0,this.registerListeners()}registerListeners(){this._register(a(this.element,e.EventType.DRAG_ENTER,be=>{this.counter++,this.dragStartTime=be.timeStamp,this.callbacks.onDragEnter(be)})),this._register(a(this.element,e.EventType.DRAG_OVER,be=>{var Ie,Ne;be.preventDefault(),(Ne=(Ie=this.callbacks).onDragOver)===null||Ne===void 0||Ne.call(Ie,be,be.timeStamp-this.dragStartTime)})),this._register(a(this.element,e.EventType.DRAG_LEAVE,be=>{this.counter--,this.counter===0&&(this.dragStartTime=0,this.callbacks.onDragLeave(be))})),this._register(a(this.element,e.EventType.DRAG_END,be=>{this.counter=0,this.dragStartTime=0,this.callbacks.onDragEnd(be)})),this._register(a(this.element,e.EventType.DROP,be=>{this.counter=0,this.dragStartTime=0,this.callbacks.onDrop(be)}))}}e.DragAndDropObserver=_e;const me=/(?<tag>[\\w\\-]+)?(?:#(?<id>[\\w\\-]+))?(?<class>(?:\\.(?:[\\w\\-]+))*)(?:@(?<name>(?:[\\w\\_])+))?/;function le(Ce,...be){let Ie,Ne;Array.isArray(be[0])?(Ie={},Ne=be[0]):(Ie=be[0]||{},Ne=be[1]);const Re=me.exec(Ce);if(!Re||!Re.groups)throw new Error(\"Bad use of h\");const Ve=Re.groups.tag||\"div\",ze=document.createElement(Ve);Re.groups.id&&(ze.id=Re.groups.id);const We=[];if(Re.groups.class)for(const Oe of Re.groups.class.split(\".\"))Oe!==\"\"&&We.push(Oe);if(Ie.className!==void 0)for(const Oe of Ie.className.split(\".\"))Oe!==\"\"&&We.push(Oe);We.length>0&&(ze.className=We.join(\" \"));const qe={};if(Re.groups.name&&(qe[Re.groups.name]=ze),Ne)for(const Oe of Ne)Oe instanceof HTMLElement?ze.appendChild(Oe):typeof Oe==\"string\"?ze.append(Oe):\"root\"in Oe&&(Object.assign(qe,Oe),ze.appendChild(Oe.root));for(const[Oe,Ge]of Object.entries(Ie))if(Oe!==\"className\")if(Oe===\"style\")for(const[Qe,st]of Object.entries(Ge))ze.style.setProperty(pe(Qe),typeof st==\"number\"?st+\"px\":\"\"+st);else Oe===\"tabIndex\"?ze.tabIndex=Ge:ze.setAttribute(pe(Oe),Ge.toString());return qe.root=ze,qe}e.h=le;function pe(Ce){return Ce.replace(/([a-z])([A-Z])/g,\"$1-$2\").toLowerCase()}}),define(ne[305],se([1,0,7]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createElement=e.renderFormattedText=e.renderText=void 0;function k(s,i={}){const n=D(i);return n.textContent=s,n}e.renderText=k;function y(s,i={}){const n=D(i);return f(n,_(s,!!i.renderCodeSegments),i.actionHandler,i.renderCodeSegments),n}e.renderFormattedText=y;function D(s){const i=s.inline?\"span\":\"div\",n=document.createElement(i);return s.className&&(n.className=s.className),n}e.createElement=D;class S{constructor(i){this.source=i,this.index=0}eos(){return this.index>=this.source.length}next(){const i=this.peek();return this.advance(),i}peek(){return this.source[this.index]}advance(){this.index++}}function f(s,i,n,t){let a;if(i.type===2)a=document.createTextNode(i.content||\"\");else if(i.type===3)a=document.createElement(\"b\");else if(i.type===4)a=document.createElement(\"i\");else if(i.type===7&&t)a=document.createElement(\"code\");else if(i.type===5&&n){const u=document.createElement(\"a\");n.disposables.add(L.addStandardDisposableListener(u,\"click\",h=>{n.callback(String(i.index),h)})),a=u}else i.type===8?a=document.createElement(\"br\"):i.type===1&&(a=s);a&&s!==a&&s.appendChild(a),a&&Array.isArray(i.children)&&i.children.forEach(u=>{f(a,u,n,t)})}function _(s,i){const n={type:1,children:[]};let t=0,a=n;const u=[],h=new S(s);for(;!h.eos();){let r=h.next();const c=r===\"\\\\\"&&C(h.peek(),i)!==0;if(c&&(r=h.next()),!c&&g(r,i)&&r===h.peek()){h.advance(),a.type===2&&(a=u.pop());const o=C(r,i);if(a.type===o||a.type===5&&o===6)a=u.pop();else{const d={type:o,children:[]};o===5&&(d.index=t,t++),a.children.push(d),u.push(a),a=d}}else if(r===`\n`)a.type===2&&(a=u.pop()),a.children.push({type:8});else if(a.type!==2){const o={type:2,content:r};a.children.push(o),u.push(a),a=o}else a.content+=r}return a.type===2&&(a=u.pop()),u.length,n}function g(s,i){return C(s,i)!==0}function C(s,i){switch(s){case\"*\":return 3;case\"_\":return 4;case\"[\":return 5;case\"]\":return 6;case\"`\":return i?7:0;default:return 0}}}),define(ne[152],se([1,0,7,2]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.GlobalPointerMoveMonitor=void 0;class y{constructor(){this._hooks=new k.DisposableStore,this._pointerMoveCallback=null,this._onStopCallback=null}dispose(){this.stopMonitoring(!1),this._hooks.dispose()}stopMonitoring(S,f){if(!this.isMonitoring())return;this._hooks.clear(),this._pointerMoveCallback=null;const _=this._onStopCallback;this._onStopCallback=null,S&&_&&_(f)}isMonitoring(){return!!this._pointerMoveCallback}startMonitoring(S,f,_,g,C){this.isMonitoring()&&this.stopMonitoring(!1),this._pointerMoveCallback=g,this._onStopCallback=C;let s=S;try{S.setPointerCapture(f),this._hooks.add((0,k.toDisposable)(()=>{try{S.releasePointerCapture(f)}catch{}}))}catch{s=window}this._hooks.add(L.addDisposableListener(s,L.EventType.POINTER_MOVE,i=>{if(i.buttons!==_){this.stopMonitoring(!0);return}i.preventDefault(),this._pointerMoveCallback(i)})),this._hooks.add(L.addDisposableListener(s,L.EventType.POINTER_UP,i=>this.stopMonitoring(!0)))}}e.GlobalPointerMoveMonitor=y}),define(ne[61],se([1,0,7,14,106,2,64]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Gesture=e.EventType=void 0;var f;(function(g){g.Tap=\"-monaco-gesturetap\",g.Change=\"-monaco-gesturechange\",g.Start=\"-monaco-gesturestart\",g.End=\"-monaco-gesturesend\",g.Contextmenu=\"-monaco-gesturecontextmenu\"})(f||(e.EventType=f={}));class _ extends D.Disposable{constructor(){super(),this.dispatched=!1,this.targets=new S.LinkedList,this.ignoreTargets=new S.LinkedList,this.activeTouches={},this.handle=null,this._lastSetTapCountTime=0,this._register(L.addDisposableListener(document,\"touchstart\",C=>this.onTouchStart(C),{passive:!1})),this._register(L.addDisposableListener(document,\"touchend\",C=>this.onTouchEnd(C))),this._register(L.addDisposableListener(document,\"touchmove\",C=>this.onTouchMove(C),{passive:!1}))}static addTarget(C){if(!_.isTouchDevice())return D.Disposable.None;_.INSTANCE||(_.INSTANCE=new _);const s=_.INSTANCE.targets.push(C);return(0,D.toDisposable)(s)}static ignoreTarget(C){if(!_.isTouchDevice())return D.Disposable.None;_.INSTANCE||(_.INSTANCE=new _);const s=_.INSTANCE.ignoreTargets.push(C);return(0,D.toDisposable)(s)}static isTouchDevice(){return\"ontouchstart\"in window||navigator.maxTouchPoints>0}dispose(){this.handle&&(this.handle.dispose(),this.handle=null),super.dispose()}onTouchStart(C){const s=Date.now();this.handle&&(this.handle.dispose(),this.handle=null);for(let i=0,n=C.targetTouches.length;i<n;i++){const t=C.targetTouches.item(i);this.activeTouches[t.identifier]={id:t.identifier,initialTarget:t.target,initialTimeStamp:s,initialPageX:t.pageX,initialPageY:t.pageY,rollingTimestamps:[s],rollingPageX:[t.pageX],rollingPageY:[t.pageY]};const a=this.newGestureEvent(f.Start,t.target);a.pageX=t.pageX,a.pageY=t.pageY,this.dispatchEvent(a)}this.dispatched&&(C.preventDefault(),C.stopPropagation(),this.dispatched=!1)}onTouchEnd(C){const s=Date.now(),i=Object.keys(this.activeTouches).length;for(let n=0,t=C.changedTouches.length;n<t;n++){const a=C.changedTouches.item(n);if(!this.activeTouches.hasOwnProperty(String(a.identifier))){console.warn(\"move of an UNKNOWN touch\",a);continue}const u=this.activeTouches[a.identifier],h=Date.now()-u.initialTimeStamp;if(h<_.HOLD_DELAY&&Math.abs(u.initialPageX-k.tail(u.rollingPageX))<30&&Math.abs(u.initialPageY-k.tail(u.rollingPageY))<30){const r=this.newGestureEvent(f.Tap,u.initialTarget);r.pageX=k.tail(u.rollingPageX),r.pageY=k.tail(u.rollingPageY),this.dispatchEvent(r)}else if(h>=_.HOLD_DELAY&&Math.abs(u.initialPageX-k.tail(u.rollingPageX))<30&&Math.abs(u.initialPageY-k.tail(u.rollingPageY))<30){const r=this.newGestureEvent(f.Contextmenu,u.initialTarget);r.pageX=k.tail(u.rollingPageX),r.pageY=k.tail(u.rollingPageY),this.dispatchEvent(r)}else if(i===1){const r=k.tail(u.rollingPageX),c=k.tail(u.rollingPageY),o=k.tail(u.rollingTimestamps)-u.rollingTimestamps[0],d=r-u.rollingPageX[0],l=c-u.rollingPageY[0],p=[...this.targets].filter(m=>u.initialTarget instanceof Node&&m.contains(u.initialTarget));this.inertia(p,s,Math.abs(d)/o,d>0?1:-1,r,Math.abs(l)/o,l>0?1:-1,c)}this.dispatchEvent(this.newGestureEvent(f.End,u.initialTarget)),delete this.activeTouches[a.identifier]}this.dispatched&&(C.preventDefault(),C.stopPropagation(),this.dispatched=!1)}newGestureEvent(C,s){const i=document.createEvent(\"CustomEvent\");return i.initEvent(C,!1,!0),i.initialTarget=s,i.tapCount=0,i}dispatchEvent(C){if(C.type===f.Tap){const s=new Date().getTime();let i=0;s-this._lastSetTapCountTime>_.CLEAR_TAP_COUNT_TIME?i=1:i=2,this._lastSetTapCountTime=s,C.tapCount=i}else(C.type===f.Change||C.type===f.Contextmenu)&&(this._lastSetTapCountTime=0);if(C.initialTarget instanceof Node){for(const s of this.ignoreTargets)if(s.contains(C.initialTarget))return;for(const s of this.targets)s.contains(C.initialTarget)&&(s.dispatchEvent(C),this.dispatched=!0)}}inertia(C,s,i,n,t,a,u,h){this.handle=L.scheduleAtNextAnimationFrame(()=>{const r=Date.now(),c=r-s;let o=0,d=0,l=!0;i+=_.SCROLL_FRICTION*c,a+=_.SCROLL_FRICTION*c,i>0&&(l=!1,o=n*i*c),a>0&&(l=!1,d=u*a*c);const p=this.newGestureEvent(f.Change);p.translationX=o,p.translationY=d,C.forEach(m=>m.dispatchEvent(p)),l||this.inertia(C,r,i,n,t+o,a,u,h+d)})}onTouchMove(C){const s=Date.now();for(let i=0,n=C.changedTouches.length;i<n;i++){const t=C.changedTouches.item(i);if(!this.activeTouches.hasOwnProperty(String(t.identifier))){console.warn(\"end of an UNKNOWN touch\",t);continue}const a=this.activeTouches[t.identifier],u=this.newGestureEvent(f.Change,a.initialTarget);u.translationX=t.pageX-k.tail(a.rollingPageX),u.translationY=t.pageY-k.tail(a.rollingPageY),u.pageX=t.pageX,u.pageY=t.pageY,this.dispatchEvent(u),a.rollingPageX.length>3&&(a.rollingPageX.shift(),a.rollingPageY.shift(),a.rollingTimestamps.shift()),a.rollingPageX.push(t.pageX),a.rollingPageY.push(t.pageY),a.rollingTimestamps.push(s)}this.dispatched&&(C.preventDefault(),C.stopPropagation(),this.dispatched=!1)}}e.Gesture=_,_.SCROLL_FRICTION=-.005,_.HOLD_DELAY=700,_.CLEAR_TAP_COUNT_TIME=400,ke([y.memoize],_,\"isTouchDevice\",null)}),define(ne[49],se([1,0,7,393]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.status=e.alert=e.setARIAContainer=void 0;const k=2e4;let y,D,S,f,_;function g(n){y=document.createElement(\"div\"),y.className=\"monaco-aria-container\";const t=()=>{const u=document.createElement(\"div\");return u.className=\"monaco-alert\",u.setAttribute(\"role\",\"alert\"),u.setAttribute(\"aria-atomic\",\"true\"),y.appendChild(u),u};D=t(),S=t();const a=()=>{const u=document.createElement(\"div\");return u.className=\"monaco-status\",u.setAttribute(\"aria-live\",\"polite\"),u.setAttribute(\"aria-atomic\",\"true\"),y.appendChild(u),u};f=a(),_=a(),n.appendChild(y)}e.setARIAContainer=g;function C(n){y&&(D.textContent!==n?(L.clearNode(S),i(D,n)):(L.clearNode(D),i(S,n)))}e.alert=C;function s(n){y&&(f.textContent!==n?(L.clearNode(_),i(f,n)):(L.clearNode(f),i(_,n)))}e.status=s;function i(n,t){L.clearNode(n),t.length>k&&(t=t.substr(0,k)),n.textContent=t,n.style.visibility=\"hidden\",n.style.visibility=\"visible\"}}),define(ne[306],se([1,0,217,7,2,17,166,397]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ContextView=e.layout=e.LayoutAnchorMode=e.isAnchor=void 0;function f(i){const n=i;return!!n&&typeof n.x==\"number\"&&typeof n.y==\"number\"}e.isAnchor=f;var _;(function(i){i[i.AVOID=0]=\"AVOID\",i[i.ALIGN=1]=\"ALIGN\"})(_||(e.LayoutAnchorMode=_={}));function g(i,n,t){const a=t.mode===_.ALIGN?t.offset:t.offset+t.size,u=t.mode===_.ALIGN?t.offset+t.size:t.offset;return t.position===0?n<=i-a?a:n<=u?u-n:Math.max(i-n,0):n<=u?u-n:n<=i-a?a:0}e.layout=g;class C extends y.Disposable{constructor(n,t){super(),this.container=null,this.delegate=null,this.toDisposeOnClean=y.Disposable.None,this.toDisposeOnSetContainer=y.Disposable.None,this.shadowRoot=null,this.shadowRootHostElement=null,this.view=k.$(\".context-view\"),this.useFixedPosition=!1,this.useShadowDOM=!1,k.hide(this.view),this.setContainer(n,t),this._register((0,y.toDisposable)(()=>this.setContainer(null,1)))}setContainer(n,t){var a;if(this.container&&(this.toDisposeOnSetContainer.dispose(),this.shadowRoot?(this.shadowRoot.removeChild(this.view),this.shadowRoot=null,(a=this.shadowRootHostElement)===null||a===void 0||a.remove(),this.shadowRootHostElement=null):this.container.removeChild(this.view),this.container=null),n){if(this.container=n,this.useFixedPosition=t!==1,this.useShadowDOM=t===3,this.useShadowDOM){this.shadowRootHostElement=k.$(\".shadow-root-host\"),this.container.appendChild(this.shadowRootHostElement),this.shadowRoot=this.shadowRootHostElement.attachShadow({mode:\"open\"});const h=document.createElement(\"style\");h.textContent=s,this.shadowRoot.appendChild(h),this.shadowRoot.appendChild(this.view),this.shadowRoot.appendChild(k.$(\"slot\"))}else this.container.appendChild(this.view);const u=new y.DisposableStore;C.BUBBLE_UP_EVENTS.forEach(h=>{u.add(k.addStandardDisposableListener(this.container,h,r=>{this.onDOMEvent(r,!1)}))}),C.BUBBLE_DOWN_EVENTS.forEach(h=>{u.add(k.addStandardDisposableListener(this.container,h,r=>{this.onDOMEvent(r,!0)},!0))}),this.toDisposeOnSetContainer=u}}show(n){var t,a;this.isVisible()&&this.hide(),k.clearNode(this.view),this.view.className=\"context-view\",this.view.style.top=\"0px\",this.view.style.left=\"0px\",this.view.style.zIndex=\"2575\",this.view.style.position=this.useFixedPosition?\"fixed\":\"absolute\",k.show(this.view),this.toDisposeOnClean=n.render(this.view)||y.Disposable.None,this.delegate=n,this.doLayout(),(a=(t=this.delegate).focus)===null||a===void 0||a.call(t)}getViewElement(){return this.view}layout(){if(this.isVisible()){if(this.delegate.canRelayout===!1&&!(D.isIOS&&L.BrowserFeatures.pointerEvents)){this.hide();return}this.delegate.layout&&this.delegate.layout(),this.doLayout()}}doLayout(){if(!this.isVisible())return;const n=this.delegate.getAnchor();let t;if(k.isHTMLElement(n)){const p=k.getDomNodePagePosition(n),m=k.getDomNodeZoomLevel(n);t={top:p.top*m,left:p.left*m,width:p.width*m,height:p.height*m}}else f(n)?t={top:n.y,left:n.x,width:n.width||1,height:n.height||2}:t={top:n.posy,left:n.posx,width:2,height:2};const a=k.getTotalWidth(this.view),u=k.getTotalHeight(this.view),h=this.delegate.anchorPosition||0,r=this.delegate.anchorAlignment||0,c=this.delegate.anchorAxisAlignment||0;let o,d;if(c===0){const p={offset:t.top-window.pageYOffset,size:t.height,position:h===0?0:1},m={offset:t.left,size:t.width,position:r===0?0:1,mode:_.ALIGN};o=g(window.innerHeight,u,p)+window.pageYOffset,S.Range.intersects({start:o,end:o+u},{start:p.offset,end:p.offset+p.size})&&(m.mode=_.AVOID),d=g(window.innerWidth,a,m)}else{const p={offset:t.left,size:t.width,position:r===0?0:1},m={offset:t.top,size:t.height,position:h===0?0:1,mode:_.ALIGN};d=g(window.innerWidth,a,p),S.Range.intersects({start:d,end:d+a},{start:p.offset,end:p.offset+p.size})&&(m.mode=_.AVOID),o=g(window.innerHeight,u,m)+window.pageYOffset}this.view.classList.remove(\"top\",\"bottom\",\"left\",\"right\"),this.view.classList.add(h===0?\"bottom\":\"top\"),this.view.classList.add(r===0?\"left\":\"right\"),this.view.classList.toggle(\"fixed\",this.useFixedPosition);const l=k.getDomNodePagePosition(this.container);this.view.style.top=`${o-(this.useFixedPosition?k.getDomNodePagePosition(this.view).top:l.top)}px`,this.view.style.left=`${d-(this.useFixedPosition?k.getDomNodePagePosition(this.view).left:l.left)}px`,this.view.style.width=\"initial\"}hide(n){const t=this.delegate;this.delegate=null,t?.onHide&&t.onHide(n),this.toDisposeOnClean.dispose(),k.hide(this.view)}isVisible(){return!!this.delegate}onDOMEvent(n,t){this.delegate&&(this.delegate.onDOMEvent?this.delegate.onDOMEvent(n,document.activeElement):t&&!k.isAncestor(n.target,this.container)&&this.hide())}dispose(){this.hide(),super.dispose()}}e.ContextView=C,C.BUBBLE_UP_EVENTS=[\"click\",\"keydown\",\"focus\",\"blur\"],C.BUBBLE_DOWN_EVENTS=[\"click\"];const s=`\n\t:host {\n\t\tall: initial; /* 1st rule so subsequent properties are reset. */\n\t}\n\n\t.codicon[class*='codicon-'] {\n\t\tfont: normal normal normal 16px/1 codicon;\n\t\tdisplay: inline-block;\n\t\ttext-decoration: none;\n\t\ttext-rendering: auto;\n\t\ttext-align: center;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\tuser-select: none;\n\t\t-webkit-user-select: none;\n\t\t-ms-user-select: none;\n\t}\n\n\t:host {\n\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe WPC\", \"Segoe UI\", \"HelveticaNeue-Light\", system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif;\n\t}\n\n\t:host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; }\n\t:host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, \"PingFang SC\", \"Hiragino Sans GB\", sans-serif; }\n\t:host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, \"PingFang TC\", sans-serif; }\n\t:host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, \"Hiragino Kaku Gothic Pro\", sans-serif; }\n\t:host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, \"Nanum Gothic\", \"Apple SD Gothic Neo\", \"AppleGothic\", sans-serif; }\n\n\t:host-context(.windows) { font-family: \"Segoe WPC\", \"Segoe UI\", sans-serif; }\n\t:host-context(.windows:lang(zh-Hans)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Microsoft YaHei\", sans-serif; }\n\t:host-context(.windows:lang(zh-Hant)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Microsoft Jhenghei\", sans-serif; }\n\t:host-context(.windows:lang(ja)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Yu Gothic UI\", \"Meiryo UI\", sans-serif; }\n\t:host-context(.windows:lang(ko)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Malgun Gothic\", \"Dotom\", sans-serif; }\n\n\t:host-context(.linux) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif; }\n\t:host-context(.linux:lang(zh-Hans)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans SC\", \"Source Han Sans CN\", \"Source Han Sans\", sans-serif; }\n\t:host-context(.linux:lang(zh-Hant)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans TC\", \"Source Han Sans TW\", \"Source Han Sans\", sans-serif; }\n\t:host-context(.linux:lang(ja)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans J\", \"Source Han Sans JP\", \"Source Han Sans\", sans-serif; }\n\t:host-context(.linux:lang(ko)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans K\", \"Source Han Sans JR\", \"Source Han Sans\", \"UnDotum\", \"FBaekmuk Gulim\", sans-serif; }\n`}),define(ne[307],se([1,0,7,11,398]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CountBadge=void 0;class y{constructor(S,f,_){this.options=f,this.styles=_,this.count=0,this.element=(0,L.append)(S,(0,L.$)(\".monaco-count-badge\")),this.countFormat=this.options.countFormat||\"{0}\",this.titleFormat=this.options.titleFormat||\"\",this.setCount(this.options.count||0)}setCount(S){this.count=S,this.render()}setTitleFormat(S){this.titleFormat=S,this.render()}render(){var S,f;this.element.textContent=(0,k.format)(this.countFormat,this.count),this.element.title=(0,k.format)(this.titleFormat,this.count),this.element.style.backgroundColor=(S=this.styles.badgeBackground)!==null&&S!==void 0?S:\"\",this.element.style.color=(f=this.styles.badgeForeground)!==null&&f!==void 0?f:\"\",this.styles.badgeBorder&&(this.element.style.border=`1px solid ${this.styles.badgeBorder}`)}}e.CountBadge=y}),define(ne[572],se([1,0,7,44,61,39,6,266]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DropdownMenu=void 0;class f extends D.ActionRunner{constructor(C,s){super(),this._onDidChangeVisibility=this._register(new S.Emitter),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this._element=(0,L.append)(C,(0,L.$)(\".monaco-dropdown\")),this._label=(0,L.append)(this._element,(0,L.$)(\".dropdown-label\"));let i=s.labelRenderer;i||(i=t=>(t.textContent=s.label||\"\",null));for(const t of[L.EventType.CLICK,L.EventType.MOUSE_DOWN,y.EventType.Tap])this._register((0,L.addDisposableListener)(this.element,t,a=>L.EventHelper.stop(a,!0)));for(const t of[L.EventType.MOUSE_DOWN,y.EventType.Tap])this._register((0,L.addDisposableListener)(this._label,t,a=>{a instanceof MouseEvent&&(a.detail>1||a.button!==0)||(this.visible?this.hide():this.show())}));this._register((0,L.addDisposableListener)(this._label,L.EventType.KEY_UP,t=>{const a=new k.StandardKeyboardEvent(t);(a.equals(3)||a.equals(10))&&(L.EventHelper.stop(t,!0),this.visible?this.hide():this.show())}));const n=i(this._label);n&&this._register(n),this._register(y.Gesture.addTarget(this._label))}get element(){return this._element}show(){this.visible||(this.visible=!0,this._onDidChangeVisibility.fire(!0))}hide(){this.visible&&(this.visible=!1,this._onDidChangeVisibility.fire(!1))}dispose(){super.dispose(),this.hide(),this.boxContainer&&(this.boxContainer.remove(),this.boxContainer=void 0),this.contents&&(this.contents.remove(),this.contents=void 0),this._label&&(this._label.remove(),this._label=void 0)}}class _ extends f{constructor(C,s){super(C,s),this._options=s,this._actions=[],this.actions=s.actions||[]}set menuOptions(C){this._menuOptions=C}get menuOptions(){return this._menuOptions}get actions(){return this._options.actionProvider?this._options.actionProvider.getActions():this._actions}set actions(C){this._actions=C}show(){super.show(),this.element.classList.add(\"active\"),this._options.contextMenuProvider.showContextMenu({getAnchor:()=>this.element,getActions:()=>this.actions,getActionsContext:()=>this.menuOptions?this.menuOptions.context:null,getActionViewItem:(C,s)=>this.menuOptions&&this.menuOptions.actionViewItemProvider?this.menuOptions.actionViewItemProvider(C,s):void 0,getKeyBinding:C=>this.menuOptions&&this.menuOptions.getKeyBinding?this.menuOptions.getKeyBinding(C):void 0,getMenuClassName:()=>this._options.menuClassName||\"\",onHide:()=>this.onHide(),actionRunner:this.menuOptions?this.menuOptions.actionRunner:void 0,anchorAlignment:this.menuOptions?this.menuOptions.anchorAlignment:0,domForShadowRoot:this._options.menuAsChild?this.element:void 0,skipTelemetry:this._options.skipTelemetry})}hide(){super.hide()}onHide(){this.hide(),this.element.classList.remove(\"active\")}}e.DropdownMenu=_}),define(ne[129],se([1,0,7,26]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.renderIcon=e.renderLabelWithIcons=void 0;const y=new RegExp(`(\\\\\\\\)?\\\\$\\\\((${k.ThemeIcon.iconNameExpression}(?:${k.ThemeIcon.iconModifierExpression})?)\\\\)`,\"g\");function D(f){const _=new Array;let g,C=0,s=0;for(;(g=y.exec(f))!==null;){s=g.index||0,C<s&&_.push(f.substring(C,s)),C=(g.index||0)+g[0].length;const[,i,n]=g;_.push(i?`$(${n})`:S({id:n}))}return C<f.length&&_.push(f.substring(C)),_}e.renderLabelWithIcons=D;function S(f){const _=L.$(\"span\");return _.classList.add(...k.ThemeIcon.asClassNameArray(f)),_}e.renderIcon=S}),define(ne[308],se([1,0,7,129,47]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HighlightedLabel=void 0;class D{constructor(f,_){var g;this.text=\"\",this.title=\"\",this.highlights=[],this.didEverRender=!1,this.supportIcons=(g=_?.supportIcons)!==null&&g!==void 0?g:!1,this.domNode=L.append(f,L.$(\"span.monaco-highlighted-label\"))}get element(){return this.domNode}set(f,_=[],g=\"\",C){f||(f=\"\"),C&&(f=D.escapeNewLines(f,_)),!(this.didEverRender&&this.text===f&&this.title===g&&y.equals(this.highlights,_))&&(this.text=f,this.title=g,this.highlights=_,this.render())}render(){const f=[];let _=0;for(const g of this.highlights){if(g.end===g.start)continue;if(_<g.start){const i=this.text.substring(_,g.start);this.supportIcons?f.push(...(0,k.renderLabelWithIcons)(i)):f.push(i),_=g.start}const C=this.text.substring(_,g.end),s=L.$(\"span.highlight\",void 0,...this.supportIcons?(0,k.renderLabelWithIcons)(C):[C]);g.extraClasses&&s.classList.add(...g.extraClasses),f.push(s),_=g.end}if(_<this.text.length){const g=this.text.substring(_);this.supportIcons?f.push(...(0,k.renderLabelWithIcons)(g)):f.push(g)}L.reset(this.domNode,...f),this.title?this.domNode.title=this.title:this.domNode.removeAttribute(\"title\"),this.didEverRender=!0}static escapeNewLines(f,_){let g=0,C=0;return f.replace(/\\r\\n|\\r|\\n/g,(s,i)=>{C=s===`\\r\n`?-1:0,i+=g;for(const n of _)n.end<=i||(n.start>=i&&(n.start+=C),n.end>=i&&(n.end+=C));return g+=C,\"\\u23CE\"})}}e.HighlightedLabel=D}),define(ne[222],se([1,0,7,216,47,558,402]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.KeybindingLabel=e.unthemedKeybindingLabelOptions=void 0;const S=L.$;e.unthemedKeybindingLabelOptions={keybindingLabelBackground:void 0,keybindingLabelForeground:void 0,keybindingLabelBorder:void 0,keybindingLabelBottomBorder:void 0,keybindingLabelShadow:void 0};class f{constructor(g,C,s){this.os=C,this.keyElements=new Set,this.options=s||Object.create(null);const i=this.options.keybindingLabelForeground;this.domNode=L.append(g,S(\".monaco-keybinding\")),i&&(this.domNode.style.color=i),this.didEverRender=!1,g.appendChild(this.domNode)}get element(){return this.domNode}set(g,C){this.didEverRender&&this.keybinding===g&&f.areSame(this.matches,C)||(this.keybinding=g,this.matches=C,this.render())}render(){var g;if(this.clear(),this.keybinding){const C=this.keybinding.getChords();C[0]&&this.renderChord(this.domNode,C[0],this.matches?this.matches.firstPart:null);for(let i=1;i<C.length;i++)L.append(this.domNode,S(\"span.monaco-keybinding-key-chord-separator\",void 0,\" \")),this.renderChord(this.domNode,C[i],this.matches?this.matches.chordPart:null);const s=(g=this.options.disableTitle)!==null&&g!==void 0&&g?void 0:this.keybinding.getAriaLabel()||void 0;s!==void 0?this.domNode.title=s:this.domNode.removeAttribute(\"title\")}else this.options&&this.options.renderUnboundKeybindings&&this.renderUnbound(this.domNode);this.didEverRender=!0}clear(){L.clearNode(this.domNode),this.keyElements.clear()}renderChord(g,C,s){const i=k.UILabelProvider.modifierLabels[this.os];C.ctrlKey&&this.renderKey(g,i.ctrlKey,!!s?.ctrlKey,i.separator),C.shiftKey&&this.renderKey(g,i.shiftKey,!!s?.shiftKey,i.separator),C.altKey&&this.renderKey(g,i.altKey,!!s?.altKey,i.separator),C.metaKey&&this.renderKey(g,i.metaKey,!!s?.metaKey,i.separator);const n=C.keyLabel;n&&this.renderKey(g,n,!!s?.keyCode,\"\")}renderKey(g,C,s,i){L.append(g,this.createKeyElement(C,s?\".highlight\":\"\")),i&&L.append(g,S(\"span.monaco-keybinding-key-separator\",void 0,i))}renderUnbound(g){L.append(g,this.createKeyElement((0,D.localize)(0,null)))}createKeyElement(g,C=\"\"){const s=S(\"span.monaco-keybinding-key\"+C,void 0,g);return this.keyElements.add(s),this.options.keybindingLabelBackground&&(s.style.backgroundColor=this.options.keybindingLabelBackground),this.options.keybindingLabelBorder&&(s.style.borderColor=this.options.keybindingLabelBorder),this.options.keybindingLabelBottomBorder&&(s.style.borderBottomColor=this.options.keybindingLabelBottomBorder),this.options.keybindingLabelShadow&&(s.style.boxShadow=`inset 0 -1px 0 ${this.options.keybindingLabelShadow}`),s}static areSame(g,C){return g===C||!g&&!C?!0:!!g&&!!C&&(0,y.equals)(g.firstPart,C.firstPart)&&(0,y.equals)(g.chordPart,C.chordPart)}}e.KeybindingLabel=f}),define(ne[573],se([1,0,7]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RowCache=void 0;function k(D){var S;try{(S=D.parentElement)===null||S===void 0||S.removeChild(D)}catch{}}class y{constructor(S){this.renderers=S,this.cache=new Map,this.transactionNodesPendingRemoval=new Set,this.inTransaction=!1}alloc(S){let f=this.getTemplateCache(S).pop(),_=!1;if(f)_=this.transactionNodesPendingRemoval.has(f.domNode),_&&this.transactionNodesPendingRemoval.delete(f.domNode);else{const g=(0,L.$)(\".monaco-list-row\"),s=this.getRenderer(S).renderTemplate(g);f={domNode:g,templateId:S,templateData:s}}return{row:f,isReusingConnectedDomNode:_}}release(S){S&&this.releaseRow(S)}transact(S){if(this.inTransaction)throw new Error(\"Already in transaction\");this.inTransaction=!0;try{S()}finally{for(const f of this.transactionNodesPendingRemoval)this.doRemoveNode(f);this.transactionNodesPendingRemoval.clear(),this.inTransaction=!1}}releaseRow(S){const{domNode:f,templateId:_}=S;f&&(this.inTransaction?this.transactionNodesPendingRemoval.add(f):this.doRemoveNode(f)),this.getTemplateCache(_).push(S)}doRemoveNode(S){S.classList.remove(\"scrolling\"),k(S)}getTemplateCache(S){let f=this.cache.get(S);return f||(f=[],this.cache.set(S,f)),f}dispose(){this.cache.forEach((S,f)=>{for(const _ of S)this.getRenderer(f).disposeTemplate(_.templateData),_.templateData=null}),this.cache.clear(),this.transactionNodesPendingRemoval.clear()}getRenderer(S){const f=this.renderers.get(S);if(!f)throw new Error(`No renderer found for ${S}`);return f}}e.RowCache=y}),define(ne[574],se([1,0,7,13,2,404]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ProgressBar=void 0;const D=\"done\",S=\"active\",f=\"infinite\",_=\"infinite-long-running\",g=\"discrete\";class C extends y.Disposable{constructor(i,n){super(),this.workedVal=0,this.showDelayedScheduler=this._register(new k.RunOnceScheduler(()=>(0,L.show)(this.element),0)),this.longRunningScheduler=this._register(new k.RunOnceScheduler(()=>this.infiniteLongRunning(),C.LONG_RUNNING_INFINITE_THRESHOLD)),this.create(i,n)}create(i,n){this.element=document.createElement(\"div\"),this.element.classList.add(\"monaco-progress-container\"),this.element.setAttribute(\"role\",\"progressbar\"),this.element.setAttribute(\"aria-valuemin\",\"0\"),i.appendChild(this.element),this.bit=document.createElement(\"div\"),this.bit.classList.add(\"progress-bit\"),this.bit.style.backgroundColor=n?.progressBarBackground||\"#0E70C0\",this.element.appendChild(this.bit)}off(){this.bit.style.width=\"inherit\",this.bit.style.opacity=\"1\",this.element.classList.remove(S,f,_,g),this.workedVal=0,this.totalWork=void 0,this.longRunningScheduler.cancel()}stop(){return this.doDone(!1)}doDone(i){return this.element.classList.add(D),this.element.classList.contains(f)?(this.bit.style.opacity=\"0\",i?setTimeout(()=>this.off(),200):this.off()):(this.bit.style.width=\"inherit\",i?setTimeout(()=>this.off(),200):this.off()),this}infinite(){return this.bit.style.width=\"2%\",this.bit.style.opacity=\"1\",this.element.classList.remove(g,D,_),this.element.classList.add(S,f),this.longRunningScheduler.schedule(),this}infiniteLongRunning(){this.element.classList.add(_)}getContainer(){return this.element}}e.ProgressBar=C,C.LONG_RUNNING_INFINITE_THRESHOLD=1e4}),define(ne[130],se([1,0,7,81,61,13,106,6,2,17,405]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Sash=e.OrthogonalEdge=void 0;const C=!1;var s;(function(d){d.North=\"north\",d.South=\"south\",d.East=\"east\",d.West=\"west\"})(s||(e.OrthogonalEdge=s={}));let i=4;const n=new f.Emitter;let t=300;const a=new f.Emitter;class u{constructor(){this.disposables=new _.DisposableStore}get onPointerMove(){return this.disposables.add(new k.DomEmitter(window,\"mousemove\")).event}get onPointerUp(){return this.disposables.add(new k.DomEmitter(window,\"mouseup\")).event}dispose(){this.disposables.dispose()}}ke([S.memoize],u.prototype,\"onPointerMove\",null),ke([S.memoize],u.prototype,\"onPointerUp\",null);class h{get onPointerMove(){return this.disposables.add(new k.DomEmitter(this.el,y.EventType.Change)).event}get onPointerUp(){return this.disposables.add(new k.DomEmitter(this.el,y.EventType.End)).event}constructor(l){this.el=l,this.disposables=new _.DisposableStore}dispose(){this.disposables.dispose()}}ke([S.memoize],h.prototype,\"onPointerMove\",null),ke([S.memoize],h.prototype,\"onPointerUp\",null);class r{get onPointerMove(){return this.factory.onPointerMove}get onPointerUp(){return this.factory.onPointerUp}constructor(l){this.factory=l}dispose(){}}ke([S.memoize],r.prototype,\"onPointerMove\",null),ke([S.memoize],r.prototype,\"onPointerUp\",null);const c=\"pointer-events-disabled\";class o extends _.Disposable{get state(){return this._state}get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}set state(l){this._state!==l&&(this.el.classList.toggle(\"disabled\",l===0),this.el.classList.toggle(\"minimum\",l===1),this.el.classList.toggle(\"maximum\",l===2),this._state=l,this.onDidEnablementChange.fire(l))}set orthogonalStartSash(l){if(this._orthogonalStartSash!==l){if(this.orthogonalStartDragHandleDisposables.clear(),this.orthogonalStartSashDisposables.clear(),l){const p=m=>{this.orthogonalStartDragHandleDisposables.clear(),m!==0&&(this._orthogonalStartDragHandle=(0,L.append)(this.el,(0,L.$)(\".orthogonal-drag-handle.start\")),this.orthogonalStartDragHandleDisposables.add((0,_.toDisposable)(()=>this._orthogonalStartDragHandle.remove())),this.orthogonalStartDragHandleDisposables.add(new k.DomEmitter(this._orthogonalStartDragHandle,\"mouseenter\")).event(()=>o.onMouseEnter(l),void 0,this.orthogonalStartDragHandleDisposables),this.orthogonalStartDragHandleDisposables.add(new k.DomEmitter(this._orthogonalStartDragHandle,\"mouseleave\")).event(()=>o.onMouseLeave(l),void 0,this.orthogonalStartDragHandleDisposables))};this.orthogonalStartSashDisposables.add(l.onDidEnablementChange.event(p,this)),p(l.state)}this._orthogonalStartSash=l}}set orthogonalEndSash(l){if(this._orthogonalEndSash!==l){if(this.orthogonalEndDragHandleDisposables.clear(),this.orthogonalEndSashDisposables.clear(),l){const p=m=>{this.orthogonalEndDragHandleDisposables.clear(),m!==0&&(this._orthogonalEndDragHandle=(0,L.append)(this.el,(0,L.$)(\".orthogonal-drag-handle.end\")),this.orthogonalEndDragHandleDisposables.add((0,_.toDisposable)(()=>this._orthogonalEndDragHandle.remove())),this.orthogonalEndDragHandleDisposables.add(new k.DomEmitter(this._orthogonalEndDragHandle,\"mouseenter\")).event(()=>o.onMouseEnter(l),void 0,this.orthogonalEndDragHandleDisposables),this.orthogonalEndDragHandleDisposables.add(new k.DomEmitter(this._orthogonalEndDragHandle,\"mouseleave\")).event(()=>o.onMouseLeave(l),void 0,this.orthogonalEndDragHandleDisposables))};this.orthogonalEndSashDisposables.add(l.onDidEnablementChange.event(p,this)),p(l.state)}this._orthogonalEndSash=l}}constructor(l,p,m){super(),this.hoverDelay=t,this.hoverDelayer=this._register(new D.Delayer(this.hoverDelay)),this._state=3,this.onDidEnablementChange=this._register(new f.Emitter),this._onDidStart=this._register(new f.Emitter),this._onDidChange=this._register(new f.Emitter),this._onDidReset=this._register(new f.Emitter),this._onDidEnd=this._register(new f.Emitter),this.orthogonalStartSashDisposables=this._register(new _.DisposableStore),this.orthogonalStartDragHandleDisposables=this._register(new _.DisposableStore),this.orthogonalEndSashDisposables=this._register(new _.DisposableStore),this.orthogonalEndDragHandleDisposables=this._register(new _.DisposableStore),this.onDidStart=this._onDidStart.event,this.onDidChange=this._onDidChange.event,this.onDidReset=this._onDidReset.event,this.onDidEnd=this._onDidEnd.event,this.linkedSash=void 0,this.el=(0,L.append)(l,(0,L.$)(\".monaco-sash\")),m.orthogonalEdge&&this.el.classList.add(`orthogonal-edge-${m.orthogonalEdge}`),g.isMacintosh&&this.el.classList.add(\"mac\");const v=this._register(new k.DomEmitter(this.el,\"mousedown\")).event;this._register(v(x=>this.onPointerStart(x,new u),this));const b=this._register(new k.DomEmitter(this.el,\"dblclick\")).event;this._register(b(this.onPointerDoublePress,this));const w=this._register(new k.DomEmitter(this.el,\"mouseenter\")).event;this._register(w(()=>o.onMouseEnter(this)));const E=this._register(new k.DomEmitter(this.el,\"mouseleave\")).event;this._register(E(()=>o.onMouseLeave(this))),this._register(y.Gesture.addTarget(this.el));const I=this._register(new k.DomEmitter(this.el,y.EventType.Start)).event;this._register(I(x=>this.onPointerStart(x,new h(this.el)),this));const M=this._register(new k.DomEmitter(this.el,y.EventType.Tap)).event;let P;this._register(M(x=>{if(P){clearTimeout(P),P=void 0,this.onPointerDoublePress(x);return}clearTimeout(P),P=setTimeout(()=>P=void 0,250)},this)),typeof m.size==\"number\"?(this.size=m.size,m.orientation===0?this.el.style.width=`${this.size}px`:this.el.style.height=`${this.size}px`):(this.size=i,this._register(n.event(x=>{this.size=x,this.layout()}))),this._register(a.event(x=>this.hoverDelay=x)),this.layoutProvider=p,this.orthogonalStartSash=m.orthogonalStartSash,this.orthogonalEndSash=m.orthogonalEndSash,this.orientation=m.orientation||0,this.orientation===1?(this.el.classList.add(\"horizontal\"),this.el.classList.remove(\"vertical\")):(this.el.classList.remove(\"horizontal\"),this.el.classList.add(\"vertical\")),this.el.classList.toggle(\"debug\",C),this.layout()}onPointerStart(l,p){L.EventHelper.stop(l);let m=!1;if(!l.__orthogonalSashEvent){const N=this.getOrthogonalSash(l);N&&(m=!0,l.__orthogonalSashEvent=!0,N.onPointerStart(l,new r(p)))}if(this.linkedSash&&!l.__linkedSashEvent&&(l.__linkedSashEvent=!0,this.linkedSash.onPointerStart(l,new r(p))),!this.state)return;const v=document.getElementsByTagName(\"iframe\");for(const N of v)N.classList.add(c);const b=l.pageX,w=l.pageY,E=l.altKey,I={startX:b,currentX:b,startY:w,currentY:w,altKey:E};this.el.classList.add(\"active\"),this._onDidStart.fire(I);const M=(0,L.createStyleSheet)(this.el),P=()=>{let N=\"\";m?N=\"all-scroll\":this.orientation===1?this.state===1?N=\"s-resize\":this.state===2?N=\"n-resize\":N=g.isMacintosh?\"row-resize\":\"ns-resize\":this.state===1?N=\"e-resize\":this.state===2?N=\"w-resize\":N=g.isMacintosh?\"col-resize\":\"ew-resize\",M.textContent=`* { cursor: ${N} !important; }`},x=new _.DisposableStore;P(),m||this.onDidEnablementChange.event(P,null,x);const T=N=>{L.EventHelper.stop(N,!1);const F={startX:b,currentX:N.pageX,startY:w,currentY:N.pageY,altKey:E};this._onDidChange.fire(F)},A=N=>{L.EventHelper.stop(N,!1),this.el.removeChild(M),this.el.classList.remove(\"active\"),this._onDidEnd.fire(),x.dispose();for(const F of v)F.classList.remove(c)};p.onPointerMove(T,null,x),p.onPointerUp(A,null,x),x.add(p)}onPointerDoublePress(l){const p=this.getOrthogonalSash(l);p&&p._onDidReset.fire(),this.linkedSash&&this.linkedSash._onDidReset.fire(),this._onDidReset.fire()}static onMouseEnter(l,p=!1){l.el.classList.contains(\"active\")?(l.hoverDelayer.cancel(),l.el.classList.add(\"hover\")):l.hoverDelayer.trigger(()=>l.el.classList.add(\"hover\"),l.hoverDelay).then(void 0,()=>{}),!p&&l.linkedSash&&o.onMouseEnter(l.linkedSash,!0)}static onMouseLeave(l,p=!1){l.hoverDelayer.cancel(),l.el.classList.remove(\"hover\"),!p&&l.linkedSash&&o.onMouseLeave(l.linkedSash,!0)}clearSashHoverState(){o.onMouseLeave(this)}layout(){if(this.orientation===0){const l=this.layoutProvider;this.el.style.left=l.getVerticalSashLeft(this)-this.size/2+\"px\",l.getVerticalSashTop&&(this.el.style.top=l.getVerticalSashTop(this)+\"px\"),l.getVerticalSashHeight&&(this.el.style.height=l.getVerticalSashHeight(this)+\"px\")}else{const l=this.layoutProvider;this.el.style.top=l.getHorizontalSashTop(this)-this.size/2+\"px\",l.getHorizontalSashLeft&&(this.el.style.left=l.getHorizontalSashLeft(this)+\"px\"),l.getHorizontalSashWidth&&(this.el.style.width=l.getHorizontalSashWidth(this)+\"px\")}}getOrthogonalSash(l){var p;const m=(p=l.initialTarget)!==null&&p!==void 0?p:l.target;if(!(!m||!(m instanceof HTMLElement))&&m.classList.contains(\"orthogonal-drag-handle\"))return m.classList.contains(\"start\")?this.orthogonalStartSash:this.orthogonalEndSash}dispose(){super.dispose(),this.el.remove()}}e.Sash=o}),define(ne[223],se([1,0,7,130,6,2]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ResizableHTMLElement=void 0;class S{constructor(){this._onDidWillResize=new y.Emitter,this.onDidWillResize=this._onDidWillResize.event,this._onDidResize=new y.Emitter,this.onDidResize=this._onDidResize.event,this._sashListener=new D.DisposableStore,this._size=new L.Dimension(0,0),this._minSize=new L.Dimension(0,0),this._maxSize=new L.Dimension(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER),this.domNode=document.createElement(\"div\"),this._eastSash=new k.Sash(this.domNode,{getVerticalSashLeft:()=>this._size.width},{orientation:0}),this._westSash=new k.Sash(this.domNode,{getVerticalSashLeft:()=>0},{orientation:0}),this._northSash=new k.Sash(this.domNode,{getHorizontalSashTop:()=>0},{orientation:1,orthogonalEdge:k.OrthogonalEdge.North}),this._southSash=new k.Sash(this.domNode,{getHorizontalSashTop:()=>this._size.height},{orientation:1,orthogonalEdge:k.OrthogonalEdge.South}),this._northSash.orthogonalStartSash=this._westSash,this._northSash.orthogonalEndSash=this._eastSash,this._southSash.orthogonalStartSash=this._westSash,this._southSash.orthogonalEndSash=this._eastSash;let _,g=0,C=0;this._sashListener.add(y.Event.any(this._northSash.onDidStart,this._eastSash.onDidStart,this._southSash.onDidStart,this._westSash.onDidStart)(()=>{_===void 0&&(this._onDidWillResize.fire(),_=this._size,g=0,C=0)})),this._sashListener.add(y.Event.any(this._northSash.onDidEnd,this._eastSash.onDidEnd,this._southSash.onDidEnd,this._westSash.onDidEnd)(()=>{_!==void 0&&(_=void 0,g=0,C=0,this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(this._eastSash.onDidChange(s=>{_&&(C=s.currentX-s.startX,this.layout(_.height+g,_.width+C),this._onDidResize.fire({dimension:this._size,done:!1,east:!0}))})),this._sashListener.add(this._westSash.onDidChange(s=>{_&&(C=-(s.currentX-s.startX),this.layout(_.height+g,_.width+C),this._onDidResize.fire({dimension:this._size,done:!1,west:!0}))})),this._sashListener.add(this._northSash.onDidChange(s=>{_&&(g=-(s.currentY-s.startY),this.layout(_.height+g,_.width+C),this._onDidResize.fire({dimension:this._size,done:!1,north:!0}))})),this._sashListener.add(this._southSash.onDidChange(s=>{_&&(g=s.currentY-s.startY,this.layout(_.height+g,_.width+C),this._onDidResize.fire({dimension:this._size,done:!1,south:!0}))})),this._sashListener.add(y.Event.any(this._eastSash.onDidReset,this._westSash.onDidReset)(s=>{this._preferredSize&&(this.layout(this._size.height,this._preferredSize.width),this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(y.Event.any(this._northSash.onDidReset,this._southSash.onDidReset)(s=>{this._preferredSize&&(this.layout(this._preferredSize.height,this._size.width),this._onDidResize.fire({dimension:this._size,done:!0}))}))}dispose(){this._northSash.dispose(),this._southSash.dispose(),this._eastSash.dispose(),this._westSash.dispose(),this._sashListener.dispose(),this._onDidResize.dispose(),this._onDidWillResize.dispose(),this.domNode.remove()}enableSashes(_,g,C,s){this._northSash.state=_?3:0,this._eastSash.state=g?3:0,this._southSash.state=C?3:0,this._westSash.state=s?3:0}layout(_=this.size.height,g=this.size.width){const{height:C,width:s}=this._minSize,{height:i,width:n}=this._maxSize;_=Math.max(C,Math.min(i,_)),g=Math.max(s,Math.min(n,g));const t=new L.Dimension(g,_);L.Dimension.equals(t,this._size)||(this.domNode.style.height=_+\"px\",this.domNode.style.width=g+\"px\",this._size=t,this._northSash.layout(),this._eastSash.layout(),this._southSash.layout(),this._westSash.layout())}clearSashHoverState(){this._eastSash.clearSashHoverState(),this._westSash.clearSashHoverState(),this._northSash.clearSashHoverState(),this._southSash.clearSashHoverState()}get size(){return this._size}set maxSize(_){this._maxSize=_}get maxSize(){return this._maxSize}set minSize(_){this._minSize=_}get minSize(){return this._minSize}set preferredSize(_){this._preferredSize=_}get preferredSize(){return this._preferredSize}}e.ResizableHTMLElement=S}),define(ne[575],se([1,0,7,61,14,6,2,17]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SelectBoxNative=void 0;class _ extends S.Disposable{constructor(C,s,i,n){super(),this.selected=0,this.selectBoxOptions=n||Object.create(null),this.options=[],this.selectElement=document.createElement(\"select\"),this.selectElement.className=\"monaco-select-box\",typeof this.selectBoxOptions.ariaLabel==\"string\"&&this.selectElement.setAttribute(\"aria-label\",this.selectBoxOptions.ariaLabel),typeof this.selectBoxOptions.ariaDescription==\"string\"&&this.selectElement.setAttribute(\"aria-description\",this.selectBoxOptions.ariaDescription),this._onDidSelect=this._register(new D.Emitter),this.styles=i,this.registerListeners(),this.setOptions(C,s)}registerListeners(){this._register(k.Gesture.addTarget(this.selectElement)),[k.EventType.Tap].forEach(C=>{this._register(L.addDisposableListener(this.selectElement,C,s=>{this.selectElement.focus()}))}),this._register(L.addStandardDisposableListener(this.selectElement,\"click\",C=>{L.EventHelper.stop(C,!0)})),this._register(L.addStandardDisposableListener(this.selectElement,\"change\",C=>{this.selectElement.title=C.target.value,this._onDidSelect.fire({index:C.target.selectedIndex,selected:C.target.value})})),this._register(L.addStandardDisposableListener(this.selectElement,\"keydown\",C=>{let s=!1;f.isMacintosh?(C.keyCode===18||C.keyCode===16||C.keyCode===10)&&(s=!0):(C.keyCode===18&&C.altKey||C.keyCode===10||C.keyCode===3)&&(s=!0),s&&C.stopPropagation()}))}get onDidSelect(){return this._onDidSelect.event}setOptions(C,s){(!this.options||!y.equals(this.options,C))&&(this.options=C,this.selectElement.options.length=0,this.options.forEach((i,n)=>{this.selectElement.add(this.createOption(i.text,n,i.isDisabled))})),s!==void 0&&this.select(s)}select(C){this.options.length===0?this.selected=0:C>=0&&C<this.options.length?this.selected=C:C>this.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.selected<this.options.length&&typeof this.options[this.selected].text==\"string\"?this.selectElement.title=this.options[this.selected].text:this.selectElement.title=\"\"}focus(){this.selectElement&&(this.selectElement.tabIndex=0,this.selectElement.focus())}blur(){this.selectElement&&(this.selectElement.tabIndex=-1,this.selectElement.blur())}setFocusable(C){this.selectElement.tabIndex=C?0:-1}render(C){C.classList.add(\"select-container\"),C.appendChild(this.selectElement),this.setOptions(this.options,this.selected),this.applyStyles()}applyStyles(){var C,s,i;this.selectElement&&(this.selectElement.style.backgroundColor=(C=this.styles.selectBackground)!==null&&C!==void 0?C:\"\",this.selectElement.style.color=(s=this.styles.selectForeground)!==null&&s!==void 0?s:\"\",this.selectElement.style.borderColor=(i=this.styles.selectBorder)!==null&&i!==void 0?i:\"\")}createOption(C,s,i){const n=document.createElement(\"option\");return n.value=C,n.text=C,n.disabled=!!i,n}}e.SelectBoxNative=_}),define(ne[83],se([1,0,7,44,60,61,2]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Widget=void 0;class f extends S.Disposable{onclick(g,C){this._register(L.addDisposableListener(g,L.EventType.CLICK,s=>C(new y.StandardMouseEvent(s))))}onmousedown(g,C){this._register(L.addDisposableListener(g,L.EventType.MOUSE_DOWN,s=>C(new y.StandardMouseEvent(s))))}onmouseover(g,C){this._register(L.addDisposableListener(g,L.EventType.MOUSE_OVER,s=>C(new y.StandardMouseEvent(s))))}onmouseleave(g,C){this._register(L.addDisposableListener(g,L.EventType.MOUSE_LEAVE,s=>C(new y.StandardMouseEvent(s))))}onkeydown(g,C){this._register(L.addDisposableListener(g,L.EventType.KEY_DOWN,s=>C(new k.StandardKeyboardEvent(s))))}onkeyup(g,C){this._register(L.addDisposableListener(g,L.EventType.KEY_UP,s=>C(new k.StandardKeyboardEvent(s))))}oninput(g,C){this._register(L.addDisposableListener(g,L.EventType.INPUT,C))}onblur(g,C){this._register(L.addDisposableListener(g,L.EventType.BLUR,C))}onfocus(g,C){this._register(L.addDisposableListener(g,L.EventType.FOCUS,C))}ignoreGesture(g){return D.Gesture.ignoreTarget(g)}}e.Widget=f}),define(ne[224],se([1,0,152,83,13,26,7]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ScrollbarArrow=e.ARROW_IMG_SIZE=void 0,e.ARROW_IMG_SIZE=11;class f extends k.Widget{constructor(g){super(),this._onActivate=g.onActivate,this.bgDomNode=document.createElement(\"div\"),this.bgDomNode.className=\"arrow-background\",this.bgDomNode.style.position=\"absolute\",this.bgDomNode.style.width=g.bgWidth+\"px\",this.bgDomNode.style.height=g.bgHeight+\"px\",typeof g.top<\"u\"&&(this.bgDomNode.style.top=\"0px\"),typeof g.left<\"u\"&&(this.bgDomNode.style.left=\"0px\"),typeof g.bottom<\"u\"&&(this.bgDomNode.style.bottom=\"0px\"),typeof g.right<\"u\"&&(this.bgDomNode.style.right=\"0px\"),this.domNode=document.createElement(\"div\"),this.domNode.className=g.className,this.domNode.classList.add(...D.ThemeIcon.asClassNameArray(g.icon)),this.domNode.style.position=\"absolute\",this.domNode.style.width=e.ARROW_IMG_SIZE+\"px\",this.domNode.style.height=e.ARROW_IMG_SIZE+\"px\",typeof g.top<\"u\"&&(this.domNode.style.top=g.top+\"px\"),typeof g.left<\"u\"&&(this.domNode.style.left=g.left+\"px\"),typeof g.bottom<\"u\"&&(this.domNode.style.bottom=g.bottom+\"px\"),typeof g.right<\"u\"&&(this.domNode.style.right=g.right+\"px\"),this._pointerMoveMonitor=this._register(new L.GlobalPointerMoveMonitor),this._register(S.addStandardDisposableListener(this.bgDomNode,S.EventType.POINTER_DOWN,C=>this._arrowPointerDown(C))),this._register(S.addStandardDisposableListener(this.domNode,S.EventType.POINTER_DOWN,C=>this._arrowPointerDown(C))),this._pointerdownRepeatTimer=this._register(new y.IntervalTimer),this._pointerdownScheduleRepeatTimer=this._register(new y.TimeoutTimer)}_arrowPointerDown(g){if(!g.target||!(g.target instanceof Element))return;const C=()=>{this._pointerdownRepeatTimer.cancelAndSet(()=>this._onActivate(),1e3/24)};this._onActivate(),this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancelAndSet(C,200),this._pointerMoveMonitor.startMonitoring(g.target,g.pointerId,g.buttons,s=>{},()=>{this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancel()}),g.preventDefault()}}e.ScrollbarArrow=f}),define(ne[309],se([1,0,7,35,152,224,567,83,17]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractScrollbar=void 0;const g=140;class C extends f.Widget{constructor(i){super(),this._lazyRender=i.lazyRender,this._host=i.host,this._scrollable=i.scrollable,this._scrollByPage=i.scrollByPage,this._scrollbarState=i.scrollbarState,this._visibilityController=this._register(new S.ScrollbarVisibilityController(i.visibility,\"visible scrollbar \"+i.extraScrollbarClassName,\"invisible scrollbar \"+i.extraScrollbarClassName)),this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._pointerMoveMonitor=this._register(new y.GlobalPointerMoveMonitor),this._shouldRender=!0,this.domNode=(0,k.createFastDomNode)(document.createElement(\"div\")),this.domNode.setAttribute(\"role\",\"presentation\"),this.domNode.setAttribute(\"aria-hidden\",\"true\"),this._visibilityController.setDomNode(this.domNode),this.domNode.setPosition(\"absolute\"),this._register(L.addDisposableListener(this.domNode.domNode,L.EventType.POINTER_DOWN,n=>this._domNodePointerDown(n)))}_createArrow(i){const n=this._register(new D.ScrollbarArrow(i));this.domNode.domNode.appendChild(n.bgDomNode),this.domNode.domNode.appendChild(n.domNode)}_createSlider(i,n,t,a){this.slider=(0,k.createFastDomNode)(document.createElement(\"div\")),this.slider.setClassName(\"slider\"),this.slider.setPosition(\"absolute\"),this.slider.setTop(i),this.slider.setLeft(n),typeof t==\"number\"&&this.slider.setWidth(t),typeof a==\"number\"&&this.slider.setHeight(a),this.slider.setLayerHinting(!0),this.slider.setContain(\"strict\"),this.domNode.domNode.appendChild(this.slider.domNode),this._register(L.addDisposableListener(this.slider.domNode,L.EventType.POINTER_DOWN,u=>{u.button===0&&(u.preventDefault(),this._sliderPointerDown(u))})),this.onclick(this.slider.domNode,u=>{u.leftButton&&u.stopPropagation()})}_onElementSize(i){return this._scrollbarState.setVisibleSize(i)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollSize(i){return this._scrollbarState.setScrollSize(i)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollPosition(i){return this._scrollbarState.setScrollPosition(i)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}beginReveal(){this._visibilityController.setShouldBeVisible(!0)}beginHide(){this._visibilityController.setShouldBeVisible(!1)}render(){this._shouldRender&&(this._shouldRender=!1,this._renderDomNode(this._scrollbarState.getRectangleLargeSize(),this._scrollbarState.getRectangleSmallSize()),this._updateSlider(this._scrollbarState.getSliderSize(),this._scrollbarState.getArrowSize()+this._scrollbarState.getSliderPosition()))}_domNodePointerDown(i){i.target===this.domNode.domNode&&this._onPointerDown(i)}delegatePointerDown(i){const n=this.domNode.domNode.getClientRects()[0].top,t=n+this._scrollbarState.getSliderPosition(),a=n+this._scrollbarState.getSliderPosition()+this._scrollbarState.getSliderSize(),u=this._sliderPointerPosition(i);t<=u&&u<=a?i.button===0&&(i.preventDefault(),this._sliderPointerDown(i)):this._onPointerDown(i)}_onPointerDown(i){let n,t;if(i.target===this.domNode.domNode&&typeof i.offsetX==\"number\"&&typeof i.offsetY==\"number\")n=i.offsetX,t=i.offsetY;else{const u=L.getDomNodePagePosition(this.domNode.domNode);n=i.pageX-u.left,t=i.pageY-u.top}const a=this._pointerDownRelativePosition(n,t);this._setDesiredScrollPositionNow(this._scrollByPage?this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(a):this._scrollbarState.getDesiredScrollPositionFromOffset(a)),i.button===0&&(i.preventDefault(),this._sliderPointerDown(i))}_sliderPointerDown(i){if(!i.target||!(i.target instanceof Element))return;const n=this._sliderPointerPosition(i),t=this._sliderOrthogonalPointerPosition(i),a=this._scrollbarState.clone();this.slider.toggleClassName(\"active\",!0),this._pointerMoveMonitor.startMonitoring(i.target,i.pointerId,i.buttons,u=>{const h=this._sliderOrthogonalPointerPosition(u),r=Math.abs(h-t);if(_.isWindows&&r>g){this._setDesiredScrollPositionNow(a.getScrollPosition());return}const o=this._sliderPointerPosition(u)-n;this._setDesiredScrollPositionNow(a.getDesiredScrollPositionFromDelta(o))},()=>{this.slider.toggleClassName(\"active\",!1),this._host.onDragEnd()}),this._host.onDragStart()}_setDesiredScrollPositionNow(i){const n={};this.writeScrollPosition(n,i),this._scrollable.setScrollPositionNow(n)}updateScrollbarSize(i){this._updateScrollbarSize(i),this._scrollbarState.setScrollbarSize(i),this._shouldRender=!0,this._lazyRender||this.render()}isNeeded(){return this._scrollbarState.isNeeded()}}e.AbstractScrollbar=C}),define(ne[576],se([1,0,60,309,224,195,25]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HorizontalScrollbar=void 0;class f extends k.AbstractScrollbar{constructor(g,C,s){const i=g.getScrollDimensions(),n=g.getCurrentScrollPosition();if(super({lazyRender:C.lazyRender,host:s,scrollbarState:new D.ScrollbarState(C.horizontalHasArrows?C.arrowSize:0,C.horizontal===2?0:C.horizontalScrollbarSize,C.vertical===2?0:C.verticalScrollbarSize,i.width,i.scrollWidth,n.scrollLeft),visibility:C.horizontal,extraScrollbarClassName:\"horizontal\",scrollable:g,scrollByPage:C.scrollByPage}),C.horizontalHasArrows){const t=(C.arrowSize-y.ARROW_IMG_SIZE)/2,a=(C.horizontalScrollbarSize-y.ARROW_IMG_SIZE)/2;this._createArrow({className:\"scra\",icon:S.Codicon.scrollbarButtonLeft,top:a,left:t,bottom:void 0,right:void 0,bgWidth:C.arrowSize,bgHeight:C.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new L.StandardWheelEvent(null,1,0))}),this._createArrow({className:\"scra\",icon:S.Codicon.scrollbarButtonRight,top:a,left:void 0,bottom:void 0,right:t,bgWidth:C.arrowSize,bgHeight:C.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new L.StandardWheelEvent(null,-1,0))})}this._createSlider(Math.floor((C.horizontalScrollbarSize-C.horizontalSliderSize)/2),0,void 0,C.horizontalSliderSize)}_updateSlider(g,C){this.slider.setWidth(g),this.slider.setLeft(C)}_renderDomNode(g,C){this.domNode.setWidth(g),this.domNode.setHeight(C),this.domNode.setLeft(0),this.domNode.setBottom(0)}onDidScroll(g){return this._shouldRender=this._onElementScrollSize(g.scrollWidth)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(g.scrollLeft)||this._shouldRender,this._shouldRender=this._onElementSize(g.width)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(g,C){return g}_sliderPointerPosition(g){return g.pageX}_sliderOrthogonalPointerPosition(g){return g.pageY}_updateScrollbarSize(g){this.slider.setHeight(g)}writeScrollPosition(g,C){g.scrollLeft=C}updateOptions(g){this.updateScrollbarSize(g.horizontal===2?0:g.horizontalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(g.vertical===2?0:g.verticalScrollbarSize),this._visibilityController.setVisibility(g.horizontal),this._scrollByPage=g.scrollByPage}}e.HorizontalScrollbar=f}),define(ne[577],se([1,0,60,309,224,195,25]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VerticalScrollbar=void 0;class f extends k.AbstractScrollbar{constructor(g,C,s){const i=g.getScrollDimensions(),n=g.getCurrentScrollPosition();if(super({lazyRender:C.lazyRender,host:s,scrollbarState:new D.ScrollbarState(C.verticalHasArrows?C.arrowSize:0,C.vertical===2?0:C.verticalScrollbarSize,0,i.height,i.scrollHeight,n.scrollTop),visibility:C.vertical,extraScrollbarClassName:\"vertical\",scrollable:g,scrollByPage:C.scrollByPage}),C.verticalHasArrows){const t=(C.arrowSize-y.ARROW_IMG_SIZE)/2,a=(C.verticalScrollbarSize-y.ARROW_IMG_SIZE)/2;this._createArrow({className:\"scra\",icon:S.Codicon.scrollbarButtonUp,top:t,left:a,bottom:void 0,right:void 0,bgWidth:C.verticalScrollbarSize,bgHeight:C.arrowSize,onActivate:()=>this._host.onMouseWheel(new L.StandardWheelEvent(null,0,1))}),this._createArrow({className:\"scra\",icon:S.Codicon.scrollbarButtonDown,top:void 0,left:a,bottom:t,right:void 0,bgWidth:C.verticalScrollbarSize,bgHeight:C.arrowSize,onActivate:()=>this._host.onMouseWheel(new L.StandardWheelEvent(null,0,-1))})}this._createSlider(0,Math.floor((C.verticalScrollbarSize-C.verticalSliderSize)/2),C.verticalSliderSize,void 0)}_updateSlider(g,C){this.slider.setHeight(g),this.slider.setTop(C)}_renderDomNode(g,C){this.domNode.setWidth(C),this.domNode.setHeight(g),this.domNode.setRight(0),this.domNode.setTop(0)}onDidScroll(g){return this._shouldRender=this._onElementScrollSize(g.scrollHeight)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(g.scrollTop)||this._shouldRender,this._shouldRender=this._onElementSize(g.height)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(g,C){return C}_sliderPointerPosition(g){return g.pageY}_sliderOrthogonalPointerPosition(g){return g.pageX}_updateScrollbarSize(g){this.slider.setWidth(g)}writeScrollPosition(g,C){g.scrollTop=C}updateOptions(g){this.updateScrollbarSize(g.vertical===2?0:g.verticalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(0),this._visibilityController.setVisibility(g.vertical),this._scrollByPage=g.scrollByPage}}e.VerticalScrollbar=f}),define(ne[75],se([1,0,52,7,35,60,576,577,83,13,6,2,17,167,406]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DomScrollableElement=e.SmoothScrollableElement=e.ScrollableElement=e.AbstractScrollableElement=e.MouseWheelClassifier=void 0;const t=500,a=50,u=!0;class h{constructor(v,b,w){this.timestamp=v,this.deltaX=b,this.deltaY=w,this.score=0}}class r{constructor(){this._capacity=5,this._memory=[],this._front=-1,this._rear=-1}isPhysicalMouseWheel(){if(this._front===-1&&this._rear===-1)return!1;let v=1,b=0,w=1,E=this._rear;do{const I=E===this._front?v:Math.pow(2,-w);if(v-=I,b+=this._memory[E].score*I,E===this._front)break;E=(this._capacity+E-1)%this._capacity,w++}while(!0);return b<=.5}acceptStandardWheelEvent(v){const b=window.devicePixelRatio/(0,L.getZoomFactor)();i.isWindows||i.isLinux?this.accept(Date.now(),v.deltaX/b,v.deltaY/b):this.accept(Date.now(),v.deltaX,v.deltaY)}accept(v,b,w){const E=new h(v,b,w);E.score=this._computeScore(E),this._front===-1&&this._rear===-1?(this._memory[0]=E,this._front=0,this._rear=0):(this._rear=(this._rear+1)%this._capacity,this._rear===this._front&&(this._front=(this._front+1)%this._capacity),this._memory[this._rear]=E)}_computeScore(v){if(Math.abs(v.deltaX)>0&&Math.abs(v.deltaY)>0)return 1;let b=.5;const w=this._front===-1&&this._rear===-1?null:this._memory[this._rear];return(!this._isAlmostInt(v.deltaX)||!this._isAlmostInt(v.deltaY))&&(b+=.25),Math.min(Math.max(b,0),1)}_isAlmostInt(v){return Math.abs(Math.round(v)-v)<.01}}e.MouseWheelClassifier=r,r.INSTANCE=new r;class c extends _.Widget{get options(){return this._options}constructor(v,b,w){super(),this._onScroll=this._register(new C.Emitter),this.onScroll=this._onScroll.event,this._onWillScroll=this._register(new C.Emitter),v.style.overflow=\"hidden\",this._options=p(b),this._scrollable=w,this._register(this._scrollable.onScroll(I=>{this._onWillScroll.fire(I),this._onDidScroll(I),this._onScroll.fire(I)}));const E={onMouseWheel:I=>this._onMouseWheel(I),onDragStart:()=>this._onDragStart(),onDragEnd:()=>this._onDragEnd()};this._verticalScrollbar=this._register(new f.VerticalScrollbar(this._scrollable,this._options,E)),this._horizontalScrollbar=this._register(new S.HorizontalScrollbar(this._scrollable,this._options,E)),this._domNode=document.createElement(\"div\"),this._domNode.className=\"monaco-scrollable-element \"+this._options.className,this._domNode.setAttribute(\"role\",\"presentation\"),this._domNode.style.position=\"relative\",this._domNode.style.overflow=\"hidden\",this._domNode.appendChild(v),this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode),this._domNode.appendChild(this._verticalScrollbar.domNode.domNode),this._options.useShadows?(this._leftShadowDomNode=(0,y.createFastDomNode)(document.createElement(\"div\")),this._leftShadowDomNode.setClassName(\"shadow\"),this._domNode.appendChild(this._leftShadowDomNode.domNode),this._topShadowDomNode=(0,y.createFastDomNode)(document.createElement(\"div\")),this._topShadowDomNode.setClassName(\"shadow\"),this._domNode.appendChild(this._topShadowDomNode.domNode),this._topLeftShadowDomNode=(0,y.createFastDomNode)(document.createElement(\"div\")),this._topLeftShadowDomNode.setClassName(\"shadow\"),this._domNode.appendChild(this._topLeftShadowDomNode.domNode)):(this._leftShadowDomNode=null,this._topShadowDomNode=null,this._topLeftShadowDomNode=null),this._listenOnDomNode=this._options.listenOnDomNode||this._domNode,this._mouseWheelToDispose=[],this._setListeningToMouseWheel(this._options.handleMouseWheel),this.onmouseover(this._listenOnDomNode,I=>this._onMouseOver(I)),this.onmouseleave(this._listenOnDomNode,I=>this._onMouseLeave(I)),this._hideTimeout=this._register(new g.TimeoutTimer),this._isDragging=!1,this._mouseIsOver=!1,this._shouldRender=!0,this._revealOnScroll=!0}dispose(){this._mouseWheelToDispose=(0,s.dispose)(this._mouseWheelToDispose),super.dispose()}getDomNode(){return this._domNode}getOverviewRulerLayoutInfo(){return{parent:this._domNode,insertBefore:this._verticalScrollbar.domNode.domNode}}delegateVerticalScrollbarPointerDown(v){this._verticalScrollbar.delegatePointerDown(v)}getScrollDimensions(){return this._scrollable.getScrollDimensions()}setScrollDimensions(v){this._scrollable.setScrollDimensions(v,!1)}updateClassName(v){this._options.className=v,i.isMacintosh&&(this._options.className+=\" mac\"),this._domNode.className=\"monaco-scrollable-element \"+this._options.className}updateOptions(v){typeof v.handleMouseWheel<\"u\"&&(this._options.handleMouseWheel=v.handleMouseWheel,this._setListeningToMouseWheel(this._options.handleMouseWheel)),typeof v.mouseWheelScrollSensitivity<\"u\"&&(this._options.mouseWheelScrollSensitivity=v.mouseWheelScrollSensitivity),typeof v.fastScrollSensitivity<\"u\"&&(this._options.fastScrollSensitivity=v.fastScrollSensitivity),typeof v.scrollPredominantAxis<\"u\"&&(this._options.scrollPredominantAxis=v.scrollPredominantAxis),typeof v.horizontal<\"u\"&&(this._options.horizontal=v.horizontal),typeof v.vertical<\"u\"&&(this._options.vertical=v.vertical),typeof v.horizontalScrollbarSize<\"u\"&&(this._options.horizontalScrollbarSize=v.horizontalScrollbarSize),typeof v.verticalScrollbarSize<\"u\"&&(this._options.verticalScrollbarSize=v.verticalScrollbarSize),typeof v.scrollByPage<\"u\"&&(this._options.scrollByPage=v.scrollByPage),this._horizontalScrollbar.updateOptions(this._options),this._verticalScrollbar.updateOptions(this._options),this._options.lazyRender||this._render()}delegateScrollFromMouseWheelEvent(v){this._onMouseWheel(new D.StandardWheelEvent(v))}_setListeningToMouseWheel(v){if(this._mouseWheelToDispose.length>0!==v&&(this._mouseWheelToDispose=(0,s.dispose)(this._mouseWheelToDispose),v)){const w=E=>{this._onMouseWheel(new D.StandardWheelEvent(E))};this._mouseWheelToDispose.push(k.addDisposableListener(this._listenOnDomNode,k.EventType.MOUSE_WHEEL,w,{passive:!1}))}}_onMouseWheel(v){var b;if(!((b=v.browserEvent)===null||b===void 0)&&b.defaultPrevented)return;const w=r.INSTANCE;u&&w.acceptStandardWheelEvent(v);let E=!1;if(v.deltaY||v.deltaX){let M=v.deltaY*this._options.mouseWheelScrollSensitivity,P=v.deltaX*this._options.mouseWheelScrollSensitivity;this._options.scrollPredominantAxis&&(this._options.scrollYToX&&P+M===0?P=M=0:Math.abs(M)>=Math.abs(P)?P=0:M=0),this._options.flipAxes&&([M,P]=[P,M]);const x=!i.isMacintosh&&v.browserEvent&&v.browserEvent.shiftKey;(this._options.scrollYToX||x)&&!P&&(P=M,M=0),v.browserEvent&&v.browserEvent.altKey&&(P=P*this._options.fastScrollSensitivity,M=M*this._options.fastScrollSensitivity);const T=this._scrollable.getFutureScrollPosition();let A={};if(M){const N=a*M,F=T.scrollTop-(N<0?Math.floor(N):Math.ceil(N));this._verticalScrollbar.writeScrollPosition(A,F)}if(P){const N=a*P,F=T.scrollLeft-(N<0?Math.floor(N):Math.ceil(N));this._horizontalScrollbar.writeScrollPosition(A,F)}A=this._scrollable.validateScrollPosition(A),(T.scrollLeft!==A.scrollLeft||T.scrollTop!==A.scrollTop)&&(u&&this._options.mouseWheelSmoothScroll&&w.isPhysicalMouseWheel()?this._scrollable.setScrollPositionSmooth(A):this._scrollable.setScrollPositionNow(A),E=!0)}let I=E;!I&&this._options.alwaysConsumeMouseWheel&&(I=!0),!I&&this._options.consumeMouseWheelIfScrollbarIsNeeded&&(this._verticalScrollbar.isNeeded()||this._horizontalScrollbar.isNeeded())&&(I=!0),I&&(v.preventDefault(),v.stopPropagation())}_onDidScroll(v){this._shouldRender=this._horizontalScrollbar.onDidScroll(v)||this._shouldRender,this._shouldRender=this._verticalScrollbar.onDidScroll(v)||this._shouldRender,this._options.useShadows&&(this._shouldRender=!0),this._revealOnScroll&&this._reveal(),this._options.lazyRender||this._render()}renderNow(){if(!this._options.lazyRender)throw new Error(\"Please use `lazyRender` together with `renderNow`!\");this._render()}_render(){if(this._shouldRender&&(this._shouldRender=!1,this._horizontalScrollbar.render(),this._verticalScrollbar.render(),this._options.useShadows)){const v=this._scrollable.getCurrentScrollPosition(),b=v.scrollTop>0,w=v.scrollLeft>0,E=w?\" left\":\"\",I=b?\" top\":\"\",M=w||b?\" top-left-corner\":\"\";this._leftShadowDomNode.setClassName(`shadow${E}`),this._topShadowDomNode.setClassName(`shadow${I}`),this._topLeftShadowDomNode.setClassName(`shadow${M}${I}${E}`)}}_onDragStart(){this._isDragging=!0,this._reveal()}_onDragEnd(){this._isDragging=!1,this._hide()}_onMouseLeave(v){this._mouseIsOver=!1,this._hide()}_onMouseOver(v){this._mouseIsOver=!0,this._reveal()}_reveal(){this._verticalScrollbar.beginReveal(),this._horizontalScrollbar.beginReveal(),this._scheduleHide()}_hide(){!this._mouseIsOver&&!this._isDragging&&(this._verticalScrollbar.beginHide(),this._horizontalScrollbar.beginHide())}_scheduleHide(){!this._mouseIsOver&&!this._isDragging&&this._hideTimeout.cancelAndSet(()=>this._hide(),t)}}e.AbstractScrollableElement=c;class o extends c{constructor(v,b){b=b||{},b.mouseWheelSmoothScroll=!1;const w=new n.Scrollable({forceIntegerValues:!0,smoothScrollDuration:0,scheduleAtNextAnimationFrame:E=>k.scheduleAtNextAnimationFrame(E)});super(v,b,w),this._register(w)}setScrollPosition(v){this._scrollable.setScrollPositionNow(v)}}e.ScrollableElement=o;class d extends c{constructor(v,b,w){super(v,b,w)}setScrollPosition(v){v.reuseAnimation?this._scrollable.setScrollPositionSmooth(v,v.reuseAnimation):this._scrollable.setScrollPositionNow(v)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}}e.SmoothScrollableElement=d;class l extends c{constructor(v,b){b=b||{},b.mouseWheelSmoothScroll=!1;const w=new n.Scrollable({forceIntegerValues:!1,smoothScrollDuration:0,scheduleAtNextAnimationFrame:E=>k.scheduleAtNextAnimationFrame(E)});super(v,b,w),this._register(w),this._element=v,this.onScroll(E=>{E.scrollTopChanged&&(this._element.scrollTop=E.scrollTop),E.scrollLeftChanged&&(this._element.scrollLeft=E.scrollLeft)}),this.scanDomNode()}setScrollPosition(v){this._scrollable.setScrollPositionNow(v)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}scanDomNode(){this.setScrollDimensions({width:this._element.clientWidth,scrollWidth:this._element.scrollWidth,height:this._element.clientHeight,scrollHeight:this._element.scrollHeight}),this.setScrollPosition({scrollLeft:this._element.scrollLeft,scrollTop:this._element.scrollTop})}}e.DomScrollableElement=l;function p(m){const v={lazyRender:typeof m.lazyRender<\"u\"?m.lazyRender:!1,className:typeof m.className<\"u\"?m.className:\"\",useShadows:typeof m.useShadows<\"u\"?m.useShadows:!0,handleMouseWheel:typeof m.handleMouseWheel<\"u\"?m.handleMouseWheel:!0,flipAxes:typeof m.flipAxes<\"u\"?m.flipAxes:!1,consumeMouseWheelIfScrollbarIsNeeded:typeof m.consumeMouseWheelIfScrollbarIsNeeded<\"u\"?m.consumeMouseWheelIfScrollbarIsNeeded:!1,alwaysConsumeMouseWheel:typeof m.alwaysConsumeMouseWheel<\"u\"?m.alwaysConsumeMouseWheel:!1,scrollYToX:typeof m.scrollYToX<\"u\"?m.scrollYToX:!1,mouseWheelScrollSensitivity:typeof m.mouseWheelScrollSensitivity<\"u\"?m.mouseWheelScrollSensitivity:1,fastScrollSensitivity:typeof m.fastScrollSensitivity<\"u\"?m.fastScrollSensitivity:5,scrollPredominantAxis:typeof m.scrollPredominantAxis<\"u\"?m.scrollPredominantAxis:!0,mouseWheelSmoothScroll:typeof m.mouseWheelSmoothScroll<\"u\"?m.mouseWheelSmoothScroll:!0,arrowSize:typeof m.arrowSize<\"u\"?m.arrowSize:11,listenOnDomNode:typeof m.listenOnDomNode<\"u\"?m.listenOnDomNode:null,horizontal:typeof m.horizontal<\"u\"?m.horizontal:1,horizontalScrollbarSize:typeof m.horizontalScrollbarSize<\"u\"?m.horizontalScrollbarSize:10,horizontalSliderSize:typeof m.horizontalSliderSize<\"u\"?m.horizontalSliderSize:0,horizontalHasArrows:typeof m.horizontalHasArrows<\"u\"?m.horizontalHasArrows:!1,vertical:typeof m.vertical<\"u\"?m.vertical:1,verticalScrollbarSize:typeof m.verticalScrollbarSize<\"u\"?m.verticalScrollbarSize:10,verticalHasArrows:typeof m.verticalHasArrows<\"u\"?m.verticalHasArrows:!1,verticalSliderSize:typeof m.verticalSliderSize<\"u\"?m.verticalSliderSize:0,scrollByPage:typeof m.scrollByPage<\"u\"?m.scrollByPage:!1};return v.horizontalSliderSize=typeof m.horizontalSliderSize<\"u\"?m.horizontalSliderSize:v.horizontalScrollbarSize,v.verticalSliderSize=typeof m.verticalSliderSize<\"u\"?m.verticalSliderSize:v.verticalScrollbarSize,i.isMacintosh&&(v.className+=\" mac\"),v}}),define(ne[310],se([1,0,7,44,75,2,555,399]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getHoverAccessibleViewHint=e.HoverAction=e.HoverWidget=void 0;const f=L.$;class _ extends D.Disposable{constructor(){super(),this.containerDomNode=document.createElement(\"div\"),this.containerDomNode.className=\"monaco-hover\",this.containerDomNode.tabIndex=0,this.containerDomNode.setAttribute(\"role\",\"tooltip\"),this.contentsDomNode=document.createElement(\"div\"),this.contentsDomNode.className=\"monaco-hover-content\",this.scrollbar=this._register(new y.DomScrollableElement(this.contentsDomNode,{consumeMouseWheelIfScrollbarIsNeeded:!0})),this.containerDomNode.appendChild(this.scrollbar.getDomNode())}onContentsChanged(){this.scrollbar.scanDomNode()}}e.HoverWidget=_;class g extends D.Disposable{static render(i,n,t){return new g(i,n,t)}constructor(i,n,t){super(),this.actionContainer=L.append(i,f(\"div.action-container\")),this.actionContainer.setAttribute(\"tabindex\",\"0\"),this.action=L.append(this.actionContainer,f(\"a.action\")),this.action.setAttribute(\"role\",\"button\"),n.iconClass&&L.append(this.action,f(`span.icon.${n.iconClass}`));const a=L.append(this.action,f(\"span\"));a.textContent=t?`${n.label} (${t})`:n.label,this._register(L.addDisposableListener(this.actionContainer,L.EventType.CLICK,u=>{u.stopPropagation(),u.preventDefault(),n.run(this.actionContainer)})),this._register(L.addDisposableListener(this.actionContainer,L.EventType.KEY_DOWN,u=>{const h=new k.StandardKeyboardEvent(u);(h.equals(3)||h.equals(10))&&(u.stopPropagation(),u.preventDefault(),n.run(this.actionContainer))})),this.setEnabled(!0)}setEnabled(i){i?(this.actionContainer.classList.remove(\"disabled\"),this.actionContainer.removeAttribute(\"aria-disabled\")):(this.actionContainer.classList.add(\"disabled\"),this.actionContainer.setAttribute(\"aria-disabled\",\"true\"))}}e.HoverAction=g;function C(s,i){return s&&i?(0,S.localize)(0,null,i):s?(0,S.localize)(1,null):\"\"}e.getHoverAccessibleViewHint=C}),define(ne[225],se([1,0,197,7,81,61,75,14,13,106,6,2,166,167,391,573,9]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ListView=e.NativeDragAndDropData=e.ExternalElementsDragAndDropData=e.ElementsDragAndDropData=void 0;const h={CurrentDragAndDropData:void 0},r={useShadows:!0,verticalScrollMode:1,setRowLineHeight:!0,setRowHeight:!0,supportDynamicHeights:!1,dnd:{getDragElements(v){return[v]},getDragURI(){return null},onDragStart(){},onDragOver(){return!1},drop(){}},horizontalScrolling:!1,transformOptimization:!0,alwaysConsumeMouseWheel:!0};class c{constructor(b){this.elements=b}update(){}getData(){return this.elements}}e.ElementsDragAndDropData=c;class o{constructor(b){this.elements=b}update(){}getData(){return this.elements}}e.ExternalElementsDragAndDropData=o;class d{constructor(){this.types=[],this.files=[]}update(b){if(b.types&&this.types.splice(0,this.types.length,...b.types),b.files){this.files.splice(0,this.files.length);for(let w=0;w<b.files.length;w++){const E=b.files.item(w);E&&(E.size||E.type)&&this.files.push(E)}}}getData(){return{types:this.types,files:this.files}}}e.NativeDragAndDropData=d;function l(v,b){return Array.isArray(v)&&Array.isArray(b)?(0,f.equals)(v,b):v===b}class p{constructor(b){b?.getSetSize?this.getSetSize=b.getSetSize.bind(b):this.getSetSize=(w,E,I)=>I,b?.getPosInSet?this.getPosInSet=b.getPosInSet.bind(b):this.getPosInSet=(w,E)=>E+1,b?.getRole?this.getRole=b.getRole.bind(b):this.getRole=w=>\"listitem\",b?.isChecked?this.isChecked=b.isChecked.bind(b):this.isChecked=w=>{}}}class m{get contentHeight(){return this.rangeMap.size}get onDidScroll(){return this.scrollableElement.onScroll}get horizontalScrolling(){return this._horizontalScrolling}set horizontalScrolling(b){if(b!==this._horizontalScrolling){if(b&&this.supportDynamicHeights)throw new Error(\"Horizontal scrolling and dynamic heights not supported simultaneously\");if(this._horizontalScrolling=b,this.domNode.classList.toggle(\"horizontal-scrolling\",this._horizontalScrolling),this._horizontalScrolling){for(const w of this.items)this.measureItemWidth(w);this.updateScrollWidth(),this.scrollableElement.setScrollDimensions({width:(0,k.getContentWidth)(this.domNode)}),this.rowsContainer.style.width=`${Math.max(this.scrollWidth||0,this.renderWidth)}px`}else this.scrollableElementWidthDelayer.cancel(),this.scrollableElement.setScrollDimensions({width:this.renderWidth,scrollWidth:this.renderWidth}),this.rowsContainer.style.width=\"\"}}constructor(b,w,E,I=r){var M,P,x,T,A,N,F,O,W,U,j,R,K;if(this.virtualDelegate=w,this.domId=`list_id_${++m.InstanceCount}`,this.renderers=new Map,this.renderWidth=0,this._scrollHeight=0,this.scrollableElementUpdateDisposable=null,this.scrollableElementWidthDelayer=new _.Delayer(50),this.splicing=!1,this.dragOverAnimationStopDisposable=s.Disposable.None,this.dragOverMouseY=0,this.canDrop=!1,this.currentDragFeedbackDisposable=s.Disposable.None,this.onDragLeaveTimeout=s.Disposable.None,this.disposables=new s.DisposableStore,this._onDidChangeContentHeight=new C.Emitter,this._onDidChangeContentWidth=new C.Emitter,this._horizontalScrolling=!1,I.horizontalScrolling&&I.supportDynamicHeights)throw new Error(\"Horizontal scrolling and dynamic heights not supported simultaneously\");this.items=[],this.itemId=0,this.rangeMap=new t.RangeMap((M=I.paddingTop)!==null&&M!==void 0?M:0);for(const Z of E)this.renderers.set(Z.templateId,Z);this.cache=this.disposables.add(new a.RowCache(this.renderers)),this.lastRenderTop=0,this.lastRenderHeight=0,this.domNode=document.createElement(\"div\"),this.domNode.className=\"monaco-list\",this.domNode.classList.add(this.domId),this.domNode.tabIndex=0,this.domNode.classList.toggle(\"mouse-support\",typeof I.mouseSupport==\"boolean\"?I.mouseSupport:!0),this._horizontalScrolling=(P=I.horizontalScrolling)!==null&&P!==void 0?P:r.horizontalScrolling,this.domNode.classList.toggle(\"horizontal-scrolling\",this._horizontalScrolling),this.paddingBottom=typeof I.paddingBottom>\"u\"?0:I.paddingBottom,this.accessibilityProvider=new p(I.accessibilityProvider),this.rowsContainer=document.createElement(\"div\"),this.rowsContainer.className=\"monaco-list-rows\",((x=I.transformOptimization)!==null&&x!==void 0?x:r.transformOptimization)&&(this.rowsContainer.style.transform=\"translate3d(0px, 0px, 0px)\",this.rowsContainer.style.overflow=\"hidden\",this.rowsContainer.style.contain=\"strict\"),this.disposables.add(D.Gesture.addTarget(this.rowsContainer)),this.scrollable=new n.Scrollable({forceIntegerValues:!0,smoothScrollDuration:(T=I.smoothScrolling)!==null&&T!==void 0&&T?125:0,scheduleAtNextAnimationFrame:Z=>(0,k.scheduleAtNextAnimationFrame)(Z)}),this.scrollableElement=this.disposables.add(new S.SmoothScrollableElement(this.rowsContainer,{alwaysConsumeMouseWheel:(A=I.alwaysConsumeMouseWheel)!==null&&A!==void 0?A:r.alwaysConsumeMouseWheel,horizontal:1,vertical:(N=I.verticalScrollMode)!==null&&N!==void 0?N:r.verticalScrollMode,useShadows:(F=I.useShadows)!==null&&F!==void 0?F:r.useShadows,mouseWheelScrollSensitivity:I.mouseWheelScrollSensitivity,fastScrollSensitivity:I.fastScrollSensitivity,scrollByPage:I.scrollByPage},this.scrollable)),this.domNode.appendChild(this.scrollableElement.getDomNode()),b.appendChild(this.domNode),this.scrollableElement.onScroll(this.onScroll,this,this.disposables),this.disposables.add((0,k.addDisposableListener)(this.rowsContainer,D.EventType.Change,Z=>this.onTouchChange(Z))),this.disposables.add((0,k.addDisposableListener)(this.scrollableElement.getDomNode(),\"scroll\",Z=>Z.target.scrollTop=0)),this.disposables.add((0,k.addDisposableListener)(this.domNode,\"dragover\",Z=>this.onDragOver(this.toDragEvent(Z)))),this.disposables.add((0,k.addDisposableListener)(this.domNode,\"drop\",Z=>this.onDrop(this.toDragEvent(Z)))),this.disposables.add((0,k.addDisposableListener)(this.domNode,\"dragleave\",Z=>this.onDragLeave(this.toDragEvent(Z)))),this.disposables.add((0,k.addDisposableListener)(this.domNode,\"dragend\",Z=>this.onDragEnd(Z))),this.setRowLineHeight=(O=I.setRowLineHeight)!==null&&O!==void 0?O:r.setRowLineHeight,this.setRowHeight=(W=I.setRowHeight)!==null&&W!==void 0?W:r.setRowHeight,this.supportDynamicHeights=(U=I.supportDynamicHeights)!==null&&U!==void 0?U:r.supportDynamicHeights,this.dnd=(j=I.dnd)!==null&&j!==void 0?j:r.dnd,this.layout((R=I.initialSize)===null||R===void 0?void 0:R.height,(K=I.initialSize)===null||K===void 0?void 0:K.width)}updateOptions(b){b.paddingBottom!==void 0&&(this.paddingBottom=b.paddingBottom,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),b.smoothScrolling!==void 0&&this.scrollable.setSmoothScrollDuration(b.smoothScrolling?125:0),b.horizontalScrolling!==void 0&&(this.horizontalScrolling=b.horizontalScrolling);let w;if(b.scrollByPage!==void 0&&(w=Object.assign(Object.assign({},w??{}),{scrollByPage:b.scrollByPage})),b.mouseWheelScrollSensitivity!==void 0&&(w=Object.assign(Object.assign({},w??{}),{mouseWheelScrollSensitivity:b.mouseWheelScrollSensitivity})),b.fastScrollSensitivity!==void 0&&(w=Object.assign(Object.assign({},w??{}),{fastScrollSensitivity:b.fastScrollSensitivity})),w&&this.scrollableElement.updateOptions(w),b.paddingTop!==void 0&&b.paddingTop!==this.rangeMap.paddingTop){const E=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),I=b.paddingTop-this.rangeMap.paddingTop;this.rangeMap.paddingTop=b.paddingTop,this.render(E,Math.max(0,this.lastRenderTop+I),this.lastRenderHeight,void 0,void 0,!0),this.setScrollTop(this.lastRenderTop),this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.lastRenderTop,this.lastRenderHeight)}}splice(b,w,E=[]){if(this.splicing)throw new Error(\"Can't run recursive splices.\");this.splicing=!0;try{return this._splice(b,w,E)}finally{this.splicing=!1,this._onDidChangeContentHeight.fire(this.contentHeight)}}_splice(b,w,E=[]){const I=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),M={start:b,end:b+w},P=i.Range.intersect(I,M),x=new Map;for(let H=P.end-1;H>=P.start;H--){const B=this.items[H];if(B.dragStartDisposable.dispose(),B.checkedDisposable.dispose(),B.row){let V=x.get(B.templateId);V||(V=[],x.set(B.templateId,V));const Y=this.renderers.get(B.templateId);Y&&Y.disposeElement&&Y.disposeElement(B.element,H,B.row.templateData,B.size),V.push(B.row)}B.row=null}const T={start:b+w,end:this.items.length},A=i.Range.intersect(T,I),N=i.Range.relativeComplement(T,I),F=E.map(H=>({id:String(this.itemId++),element:H,templateId:this.virtualDelegate.getTemplateId(H),size:this.virtualDelegate.getHeight(H),width:void 0,hasDynamicHeight:!!this.virtualDelegate.hasDynamicHeight&&this.virtualDelegate.hasDynamicHeight(H),lastDynamicHeightWidth:void 0,row:null,uri:void 0,dropTarget:!1,dragStartDisposable:s.Disposable.None,checkedDisposable:s.Disposable.None}));let O;b===0&&w>=this.items.length?(this.rangeMap=new t.RangeMap(this.rangeMap.paddingTop),this.rangeMap.splice(0,0,F),O=this.items,this.items=F):(this.rangeMap.splice(b,w,F),O=this.items.splice(b,w,...F));const W=E.length-w,U=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),j=(0,t.shift)(A,W),R=i.Range.intersect(U,j);for(let H=R.start;H<R.end;H++)this.updateItemInDOM(this.items[H],H);const K=i.Range.relativeComplement(j,U);for(const H of K)for(let B=H.start;B<H.end;B++)this.removeItemFromDOM(B);const G=N.map(H=>(0,t.shift)(H,W)),J=[{start:b,end:b+E.length},...G].map(H=>i.Range.intersect(U,H)),X=this.getNextToLastElement(J);for(const H of J)for(let B=H.start;B<H.end;B++){const V=this.items[B],Y=x.get(V.templateId),ie=Y?.pop();this.insertItemInDOM(B,X,ie)}for(const H of x.values())for(const B of H)this.cache.release(B);return this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight),O.map(H=>H.element)}eventuallyUpdateScrollDimensions(){this._scrollHeight=this.contentHeight,this.rowsContainer.style.height=`${this._scrollHeight}px`,this.scrollableElementUpdateDisposable||(this.scrollableElementUpdateDisposable=(0,k.scheduleAtNextAnimationFrame)(()=>{this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight}),this.updateScrollWidth(),this.scrollableElementUpdateDisposable=null}))}eventuallyUpdateScrollWidth(){if(!this.horizontalScrolling){this.scrollableElementWidthDelayer.cancel();return}this.scrollableElementWidthDelayer.trigger(()=>this.updateScrollWidth())}updateScrollWidth(){if(!this.horizontalScrolling)return;let b=0;for(const w of this.items)typeof w.width<\"u\"&&(b=Math.max(b,w.width));this.scrollWidth=b,this.scrollableElement.setScrollDimensions({scrollWidth:b===0?0:b+10}),this._onDidChangeContentWidth.fire(this.scrollWidth)}rerender(){if(this.supportDynamicHeights){for(const b of this.items)b.lastDynamicHeightWidth=void 0;this._rerender(this.lastRenderTop,this.lastRenderHeight)}}get length(){return this.items.length}get renderHeight(){return this.scrollableElement.getScrollDimensions().height}get firstVisibleIndex(){const b=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),w=this.rangeMap.positionAt(b.start),E=this.rangeMap.positionAt(b.start+1);return E!==-1&&(E-w)/2+w<this.scrollTop?b.start+1:b.start}element(b){return this.items[b].element}domElement(b){const w=this.items[b].row;return w&&w.domNode}elementHeight(b){return this.items[b].size}elementTop(b){return this.rangeMap.positionAt(b)}indexAt(b){return this.rangeMap.indexAt(b)}indexAfter(b){return this.rangeMap.indexAfter(b)}layout(b,w){const E={height:typeof b==\"number\"?b:(0,k.getContentHeight)(this.domNode)};this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,E.scrollHeight=this.scrollHeight),this.scrollableElement.setScrollDimensions(E),typeof w<\"u\"&&(this.renderWidth=w,this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight)),this.horizontalScrolling&&this.scrollableElement.setScrollDimensions({width:typeof w==\"number\"?w:(0,k.getContentWidth)(this.domNode)})}render(b,w,E,I,M,P=!1){const x=this.getRenderRange(w,E),T=i.Range.relativeComplement(x,b),A=i.Range.relativeComplement(b,x),N=this.getNextToLastElement(T);if(P){const F=i.Range.intersect(b,x);for(let O=F.start;O<F.end;O++)this.updateItemInDOM(this.items[O],O)}this.cache.transact(()=>{for(const F of A)for(let O=F.start;O<F.end;O++)this.removeItemFromDOM(O);for(const F of T)for(let O=F.start;O<F.end;O++)this.insertItemInDOM(O,N)}),I!==void 0&&(this.rowsContainer.style.left=`-${I}px`),this.rowsContainer.style.top=`-${w}px`,this.horizontalScrolling&&M!==void 0&&(this.rowsContainer.style.width=`${Math.max(M,this.renderWidth)}px`),this.lastRenderTop=w,this.lastRenderHeight=E}insertItemInDOM(b,w,E){const I=this.items[b];let M=!1;if(!I.row)if(E)I.row=E;else{const N=this.cache.alloc(I.templateId);I.row=N.row,M=N.isReusingConnectedDomNode}const P=this.accessibilityProvider.getRole(I.element)||\"listitem\";I.row.domNode.setAttribute(\"role\",P);const x=this.accessibilityProvider.isChecked(I.element);if(typeof x==\"boolean\")I.row.domNode.setAttribute(\"aria-checked\",String(!!x));else if(x){const N=F=>I.row.domNode.setAttribute(\"aria-checked\",String(!!F));N(x.value),I.checkedDisposable=x.onDidChange(N)}(M||!I.row.domNode.parentElement)&&(w?this.rowsContainer.insertBefore(I.row.domNode,w):this.rowsContainer.appendChild(I.row.domNode)),this.updateItemInDOM(I,b);const T=this.renderers.get(I.templateId);if(!T)throw new Error(`No renderer found for template id ${I.templateId}`);T?.renderElement(I.element,b,I.row.templateData,I.size);const A=this.dnd.getDragURI(I.element);I.dragStartDisposable.dispose(),I.row.domNode.draggable=!!A,A&&(I.dragStartDisposable=(0,k.addDisposableListener)(I.row.domNode,\"dragstart\",N=>this.onDragStart(I.element,A,N))),this.horizontalScrolling&&(this.measureItemWidth(I),this.eventuallyUpdateScrollWidth())}measureItemWidth(b){if(!b.row||!b.row.domNode)return;b.row.domNode.style.width=\"fit-content\",b.width=(0,k.getContentWidth)(b.row.domNode);const w=window.getComputedStyle(b.row.domNode);w.paddingLeft&&(b.width+=parseFloat(w.paddingLeft)),w.paddingRight&&(b.width+=parseFloat(w.paddingRight)),b.row.domNode.style.width=\"\"}updateItemInDOM(b,w){b.row.domNode.style.top=`${this.elementTop(w)}px`,this.setRowHeight&&(b.row.domNode.style.height=`${b.size}px`),this.setRowLineHeight&&(b.row.domNode.style.lineHeight=`${b.size}px`),b.row.domNode.setAttribute(\"data-index\",`${w}`),b.row.domNode.setAttribute(\"data-last-element\",w===this.length-1?\"true\":\"false\"),b.row.domNode.setAttribute(\"data-parity\",w%2===0?\"even\":\"odd\"),b.row.domNode.setAttribute(\"aria-setsize\",String(this.accessibilityProvider.getSetSize(b.element,w,this.length))),b.row.domNode.setAttribute(\"aria-posinset\",String(this.accessibilityProvider.getPosInSet(b.element,w))),b.row.domNode.setAttribute(\"id\",this.getElementDomId(w)),b.row.domNode.classList.toggle(\"drop-target\",b.dropTarget)}removeItemFromDOM(b){const w=this.items[b];if(w.dragStartDisposable.dispose(),w.checkedDisposable.dispose(),w.row){const E=this.renderers.get(w.templateId);E&&E.disposeElement&&E.disposeElement(w.element,b,w.row.templateData,w.size),this.cache.release(w.row),w.row=null}this.horizontalScrolling&&this.eventuallyUpdateScrollWidth()}getScrollTop(){return this.scrollableElement.getScrollPosition().scrollTop}setScrollTop(b,w){this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),this.scrollableElement.setScrollPosition({scrollTop:b,reuseAnimation:w})}get scrollTop(){return this.getScrollTop()}set scrollTop(b){this.setScrollTop(b)}get scrollHeight(){return this._scrollHeight+(this.horizontalScrolling?10:0)+this.paddingBottom}get onMouseClick(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,\"click\")).event,b=>this.toMouseEvent(b),this.disposables)}get onMouseDblClick(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,\"dblclick\")).event,b=>this.toMouseEvent(b),this.disposables)}get onMouseMiddleClick(){return C.Event.filter(C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,\"auxclick\")).event,b=>this.toMouseEvent(b),this.disposables),b=>b.browserEvent.button===1,this.disposables)}get onMouseDown(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,\"mousedown\")).event,b=>this.toMouseEvent(b),this.disposables)}get onMouseOver(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,\"mouseover\")).event,b=>this.toMouseEvent(b),this.disposables)}get onMouseOut(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,\"mouseout\")).event,b=>this.toMouseEvent(b),this.disposables)}get onContextMenu(){return C.Event.any(C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,\"contextmenu\")).event,b=>this.toMouseEvent(b),this.disposables),C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,D.EventType.Contextmenu)).event,b=>this.toGestureEvent(b),this.disposables))}get onTouchStart(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.domNode,\"touchstart\")).event,b=>this.toTouchEvent(b),this.disposables)}get onTap(){return C.Event.map(this.disposables.add(new y.DomEmitter(this.rowsContainer,D.EventType.Tap)).event,b=>this.toGestureEvent(b),this.disposables)}toMouseEvent(b){const w=this.getItemIndexFromEventTarget(b.target||null),E=typeof w>\"u\"?void 0:this.items[w],I=E&&E.element;return{browserEvent:b,index:w,element:I}}toTouchEvent(b){const w=this.getItemIndexFromEventTarget(b.target||null),E=typeof w>\"u\"?void 0:this.items[w],I=E&&E.element;return{browserEvent:b,index:w,element:I}}toGestureEvent(b){const w=this.getItemIndexFromEventTarget(b.initialTarget||null),E=typeof w>\"u\"?void 0:this.items[w],I=E&&E.element;return{browserEvent:b,index:w,element:I}}toDragEvent(b){const w=this.getItemIndexFromEventTarget(b.target||null),E=typeof w>\"u\"?void 0:this.items[w],I=E&&E.element;return{browserEvent:b,index:w,element:I}}onScroll(b){try{const w=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight);this.render(w,b.scrollTop,b.height,b.scrollLeft,b.scrollWidth),this.supportDynamicHeights&&this._rerender(b.scrollTop,b.height,b.inSmoothScrolling)}catch(w){throw console.error(\"Got bad scroll event:\",b),w}}onTouchChange(b){b.preventDefault(),b.stopPropagation(),this.scrollTop-=b.translationY}onDragStart(b,w,E){var I,M;if(!E.dataTransfer)return;const P=this.dnd.getDragElements(b);if(E.dataTransfer.effectAllowed=\"copyMove\",E.dataTransfer.setData(L.DataTransfers.TEXT,w),E.dataTransfer.setDragImage){let x;this.dnd.getDragLabel&&(x=this.dnd.getDragLabel(P,E)),typeof x>\"u\"&&(x=String(P.length));const T=(0,k.$)(\".monaco-drag-image\");T.textContent=x;const N=(F=>{for(;F&&!F.classList.contains(\"monaco-workbench\");)F=F.parentElement;return F||document.body})(this.domNode);N.appendChild(T),E.dataTransfer.setDragImage(T,-10,-10),setTimeout(()=>N.removeChild(T),0)}this.domNode.classList.add(\"dragging\"),this.currentDragData=new c(P),h.CurrentDragAndDropData=new o(P),(M=(I=this.dnd).onDragStart)===null||M===void 0||M.call(I,this.currentDragData,E)}onDragOver(b){var w;if(b.browserEvent.preventDefault(),this.onDragLeaveTimeout.dispose(),h.CurrentDragAndDropData&&h.CurrentDragAndDropData.getData()===\"vscode-ui\"||(this.setupDragAndDropScrollTopAnimation(b.browserEvent),!b.browserEvent.dataTransfer))return!1;if(!this.currentDragData)if(h.CurrentDragAndDropData)this.currentDragData=h.CurrentDragAndDropData;else{if(!b.browserEvent.dataTransfer.types)return!1;this.currentDragData=new d}const E=this.dnd.onDragOver(this.currentDragData,b.element,b.index,b.browserEvent);if(this.canDrop=typeof E==\"boolean\"?E:E.accept,!this.canDrop)return this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),!1;b.browserEvent.dataTransfer.dropEffect=typeof E!=\"boolean\"&&E.effect===0?\"copy\":\"move\";let I;if(typeof E!=\"boolean\"&&E.feedback?I=E.feedback:typeof b.index>\"u\"?I=[-1]:I=[b.index],I=(0,f.distinct)(I).filter(M=>M>=-1&&M<this.length).sort((M,P)=>M-P),I=I[0]===-1?[-1]:I,l(this.currentDragFeedback,I))return!0;if(this.currentDragFeedback=I,this.currentDragFeedbackDisposable.dispose(),I[0]===-1)this.domNode.classList.add(\"drop-target\"),this.rowsContainer.classList.add(\"drop-target\"),this.currentDragFeedbackDisposable=(0,s.toDisposable)(()=>{this.domNode.classList.remove(\"drop-target\"),this.rowsContainer.classList.remove(\"drop-target\")});else{for(const M of I){const P=this.items[M];P.dropTarget=!0,(w=P.row)===null||w===void 0||w.domNode.classList.add(\"drop-target\")}this.currentDragFeedbackDisposable=(0,s.toDisposable)(()=>{var M;for(const P of I){const x=this.items[P];x.dropTarget=!1,(M=x.row)===null||M===void 0||M.domNode.classList.remove(\"drop-target\")}})}return!0}onDragLeave(b){var w,E;this.onDragLeaveTimeout.dispose(),this.onDragLeaveTimeout=(0,_.disposableTimeout)(()=>this.clearDragOverFeedback(),100),this.currentDragData&&((E=(w=this.dnd).onDragLeave)===null||E===void 0||E.call(w,this.currentDragData,b.element,b.index,b.browserEvent))}onDrop(b){if(!this.canDrop)return;const w=this.currentDragData;this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove(\"dragging\"),this.currentDragData=void 0,h.CurrentDragAndDropData=void 0,!(!w||!b.browserEvent.dataTransfer)&&(b.browserEvent.preventDefault(),w.update(b.browserEvent.dataTransfer),this.dnd.drop(w,b.element,b.index,b.browserEvent))}onDragEnd(b){var w,E;this.canDrop=!1,this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove(\"dragging\"),this.currentDragData=void 0,h.CurrentDragAndDropData=void 0,(E=(w=this.dnd).onDragEnd)===null||E===void 0||E.call(w,b)}clearDragOverFeedback(){this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),this.currentDragFeedbackDisposable=s.Disposable.None}setupDragAndDropScrollTopAnimation(b){if(!this.dragOverAnimationDisposable){const w=(0,k.getTopLeftOffset)(this.domNode).top;this.dragOverAnimationDisposable=(0,k.animate)(this.animateDragAndDropScrollTop.bind(this,w))}this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationStopDisposable=(0,_.disposableTimeout)(()=>{this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)},1e3),this.dragOverMouseY=b.pageY}animateDragAndDropScrollTop(b){if(this.dragOverMouseY===void 0)return;const w=this.dragOverMouseY-b,E=this.renderHeight-35;w<35?this.scrollTop+=Math.max(-14,Math.floor(.3*(w-35))):w>E&&(this.scrollTop+=Math.min(14,Math.floor(.3*(w-E))))}teardownDragAndDropScrollTopAnimation(){this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)}getItemIndexFromEventTarget(b){const w=this.scrollableElement.getDomNode();let E=b;for(;E instanceof HTMLElement&&E!==this.rowsContainer&&w.contains(E);){const I=E.getAttribute(\"data-index\");if(I){const M=Number(I);if(!isNaN(M))return M}E=E.parentElement}}getRenderRange(b,w){return{start:this.rangeMap.indexAt(b),end:this.rangeMap.indexAfter(b+w-1)}}_rerender(b,w,E){const I=this.getRenderRange(b,w);let M,P;b===this.elementTop(I.start)?(M=I.start,P=0):I.end-I.start>1&&(M=I.start+1,P=this.elementTop(M)-b);let x=0;for(;;){const T=this.getRenderRange(b,w);let A=!1;for(let N=T.start;N<T.end;N++){const F=this.probeDynamicHeight(N);F!==0&&this.rangeMap.splice(N,1,[this.items[N]]),x+=F,A=A||F!==0}if(!A){x!==0&&this.eventuallyUpdateScrollDimensions();const N=i.Range.relativeComplement(I,T);for(const O of N)for(let W=O.start;W<O.end;W++)this.items[W].row&&this.removeItemFromDOM(W);const F=i.Range.relativeComplement(T,I);for(const O of F)for(let W=O.start;W<O.end;W++){const U=W+1,j=U<this.items.length?this.items[U].row:null,R=j?j.domNode:null;this.insertItemInDOM(W,R)}for(let O=T.start;O<T.end;O++)this.items[O].row&&this.updateItemInDOM(this.items[O],O);if(typeof M==\"number\"){const O=this.scrollable.getFutureScrollPosition().scrollTop-b,W=this.elementTop(M)-P+O;this.setScrollTop(W,E)}this._onDidChangeContentHeight.fire(this.contentHeight);return}}}probeDynamicHeight(b){var w,E,I;const M=this.items[b];if(this.virtualDelegate.getDynamicHeight){const A=this.virtualDelegate.getDynamicHeight(M.element);if(A!==null){const N=M.size;return M.size=A,M.lastDynamicHeightWidth=this.renderWidth,A-N}}if(!M.hasDynamicHeight||M.lastDynamicHeightWidth===this.renderWidth||this.virtualDelegate.hasDynamicHeight&&!this.virtualDelegate.hasDynamicHeight(M.element))return 0;const P=M.size;if(M.row)return M.row.domNode.style.height=\"\",M.size=M.row.domNode.offsetHeight,M.lastDynamicHeightWidth=this.renderWidth,M.size-P;const{row:x}=this.cache.alloc(M.templateId);x.domNode.style.height=\"\",this.rowsContainer.appendChild(x.domNode);const T=this.renderers.get(M.templateId);if(!T)throw new u.BugIndicatingError(\"Missing renderer for templateId: \"+M.templateId);return T.renderElement(M.element,b,x.templateData,void 0),M.size=x.domNode.offsetHeight,(w=T.disposeElement)===null||w===void 0||w.call(T,M.element,b,x.templateData,void 0),(I=(E=this.virtualDelegate).setDynamicHeight)===null||I===void 0||I.call(E,M.element,M.size),M.lastDynamicHeightWidth=this.renderWidth,this.rowsContainer.removeChild(x.domNode),this.cache.release(x),M.size-P}getNextToLastElement(b){const w=b[b.length-1];if(!w)return null;const E=this.items[w.end];return!E||!E.row?null:E.row.domNode}getElementDomId(b){return`${this.domId}_${b}`}dispose(){var b;if(this.items){for(const w of this.items)if(w.row){const E=this.renderers.get(w.row.templateId);E&&((b=E.disposeElement)===null||b===void 0||b.call(E,w.element,-1,w.row.templateData,void 0),E.disposeTemplate(w.row.templateData))}this.items=[]}this.domNode&&this.domNode.parentNode&&this.domNode.parentNode.removeChild(this.domNode),(0,s.dispose)(this.disposables)}}e.ListView=m,m.InstanceCount=0,ke([g.memoize],m.prototype,\"onMouseClick\",null),ke([g.memoize],m.prototype,\"onMouseDblClick\",null),ke([g.memoize],m.prototype,\"onMouseMiddleClick\",null),ke([g.memoize],m.prototype,\"onMouseDown\",null),ke([g.memoize],m.prototype,\"onMouseOver\",null),ke([g.memoize],m.prototype,\"onMouseOut\",null),ke([g.memoize],m.prototype,\"onContextMenu\",null),ke([g.memoize],m.prototype,\"onTouchStart\",null),ke([g.memoize],m.prototype,\"onTap\",null)}),define(ne[114],se([1,0,7,81,44,61,49,382,14,13,38,106,6,72,2,141,17,20,381,225,60,268]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.List=e.unthemedListStyles=e.DefaultStyleController=e.MouseController=e.isSelectionRangeChangeEvent=e.isSelectionSingleChangeEvent=e.DefaultKeyboardNavigationDelegate=e.TypeNavigationMode=e.isButton=e.isMonacoEditor=e.isInputElement=void 0;class d{constructor(V){this.trait=V,this.renderedElements=[]}get templateId(){return`template:${this.trait.name}`}renderTemplate(V){return V}renderElement(V,Y,ie){const ae=this.renderedElements.findIndex(ce=>ce.templateData===ie);if(ae>=0){const ce=this.renderedElements[ae];this.trait.unrender(ie),ce.index=Y}else{const ce={index:Y,templateData:ie};this.renderedElements.push(ce)}this.trait.renderIndex(Y,ie)}splice(V,Y,ie){const ae=[];for(const ce of this.renderedElements)ce.index<V?ae.push(ce):ce.index>=V+Y&&ae.push({index:ce.index+ie-Y,templateData:ce.templateData});this.renderedElements=ae}renderIndexes(V){for(const{index:Y,templateData:ie}of this.renderedElements)V.indexOf(Y)>-1&&this.trait.renderIndex(Y,ie)}disposeTemplate(V){const Y=this.renderedElements.findIndex(ie=>ie.templateData===V);Y<0||this.renderedElements.splice(Y,1)}}class l{get name(){return this._trait}get renderer(){return new d(this)}constructor(V){this._trait=V,this.length=0,this.indexes=[],this.sortedIndexes=[],this._onChange=new i.Emitter,this.onChange=this._onChange.event}splice(V,Y,ie){var ae;Y=Math.max(0,Math.min(Y,this.length-V));const ce=ie.length-Y,de=V+Y,he=[];let ue=0;for(;ue<this.sortedIndexes.length&&this.sortedIndexes[ue]<V;)he.push(this.sortedIndexes[ue++]);for(let q=0;q<ie.length;q++)ie[q]&&he.push(q+V);for(;ue<this.sortedIndexes.length&&this.sortedIndexes[ue]>=de;)he.push(this.sortedIndexes[ue++]+ce);const te=this.length+ce;if(this.sortedIndexes.length>0&&he.length===0&&te>0){const q=(ae=this.sortedIndexes.find(z=>z>=V))!==null&&ae!==void 0?ae:te-1;he.push(Math.min(q,te-1))}this.renderer.splice(V,Y,ie.length),this._set(he,he),this.length=te}renderIndex(V,Y){Y.classList.toggle(this._trait,this.contains(V))}unrender(V){V.classList.remove(this._trait)}set(V,Y){return this._set(V,[...V].sort(G),Y)}_set(V,Y,ie){const ae=this.indexes,ce=this.sortedIndexes;this.indexes=V,this.sortedIndexes=Y;const de=R(ce,V);return this.renderer.renderIndexes(de),this._onChange.fire({indexes:V,browserEvent:ie}),ae}get(){return this.indexes}contains(V){return(0,_.binarySearch)(this.sortedIndexes,V,G)>=0}dispose(){(0,t.dispose)(this._onChange)}}ke([s.memoize],l.prototype,\"renderer\",null);class p extends l{constructor(V){super(\"selected\"),this.setAriaSelected=V}renderIndex(V,Y){super.renderIndex(V,Y),this.setAriaSelected&&(this.contains(V)?Y.setAttribute(\"aria-selected\",\"true\"):Y.setAttribute(\"aria-selected\",\"false\"))}}class m{constructor(V,Y,ie){this.trait=V,this.view=Y,this.identityProvider=ie}splice(V,Y,ie){if(!this.identityProvider)return this.trait.splice(V,Y,new Array(ie.length).fill(!1));const ae=this.trait.get().map(he=>this.identityProvider.getId(this.view.element(he)).toString());if(ae.length===0)return this.trait.splice(V,Y,new Array(ie.length).fill(!1));const ce=new Set(ae),de=ie.map(he=>ce.has(this.identityProvider.getId(he).toString()));this.trait.splice(V,Y,de)}}function v(B){return B.tagName===\"INPUT\"||B.tagName===\"TEXTAREA\"}e.isInputElement=v;function b(B){return B.classList.contains(\"monaco-editor\")?!0:B.classList.contains(\"monaco-list\")||!B.parentElement?!1:b(B.parentElement)}e.isMonacoEditor=b;function w(B){return B.tagName===\"A\"&&B.classList.contains(\"monaco-button\")||B.tagName===\"DIV\"&&B.classList.contains(\"monaco-button-dropdown\")?!0:B.classList.contains(\"monaco-list\")||!B.parentElement?!1:w(B.parentElement)}e.isButton=w;class E{get onKeyDown(){return this.disposables.add(i.Event.chain(this.disposables.add(new k.DomEmitter(this.view.domNode,\"keydown\")).event).filter(V=>!v(V.target)).map(V=>new y.StandardKeyboardEvent(V)))}constructor(V,Y,ie){this.list=V,this.view=Y,this.disposables=new t.DisposableStore,this.multipleSelectionDisposables=new t.DisposableStore,this.onKeyDown.filter(ae=>ae.keyCode===3).on(this.onEnter,this,this.disposables),this.onKeyDown.filter(ae=>ae.keyCode===16).on(this.onUpArrow,this,this.disposables),this.onKeyDown.filter(ae=>ae.keyCode===18).on(this.onDownArrow,this,this.disposables),this.onKeyDown.filter(ae=>ae.keyCode===11).on(this.onPageUpArrow,this,this.disposables),this.onKeyDown.filter(ae=>ae.keyCode===12).on(this.onPageDownArrow,this,this.disposables),this.onKeyDown.filter(ae=>ae.keyCode===9).on(this.onEscape,this,this.disposables),ie.multipleSelectionSupport!==!1&&this.onKeyDown.filter(ae=>(u.isMacintosh?ae.metaKey:ae.ctrlKey)&&ae.keyCode===31).on(this.onCtrlA,this,this.multipleSelectionDisposables)}updateOptions(V){V.multipleSelectionSupport!==void 0&&(this.multipleSelectionDisposables.clear(),V.multipleSelectionSupport&&this.onKeyDown.filter(Y=>(u.isMacintosh?Y.metaKey:Y.ctrlKey)&&Y.keyCode===31).on(this.onCtrlA,this,this.multipleSelectionDisposables))}onEnter(V){V.preventDefault(),V.stopPropagation(),this.list.setSelection(this.list.getFocus(),V.browserEvent)}onUpArrow(V){V.preventDefault(),V.stopPropagation(),this.list.focusPrevious(1,!1,V.browserEvent);const Y=this.list.getFocus()[0];this.list.setAnchor(Y),this.list.reveal(Y),this.view.domNode.focus()}onDownArrow(V){V.preventDefault(),V.stopPropagation(),this.list.focusNext(1,!1,V.browserEvent);const Y=this.list.getFocus()[0];this.list.setAnchor(Y),this.list.reveal(Y),this.view.domNode.focus()}onPageUpArrow(V){V.preventDefault(),V.stopPropagation(),this.list.focusPreviousPage(V.browserEvent);const Y=this.list.getFocus()[0];this.list.setAnchor(Y),this.list.reveal(Y),this.view.domNode.focus()}onPageDownArrow(V){V.preventDefault(),V.stopPropagation(),this.list.focusNextPage(V.browserEvent);const Y=this.list.getFocus()[0];this.list.setAnchor(Y),this.list.reveal(Y),this.view.domNode.focus()}onCtrlA(V){V.preventDefault(),V.stopPropagation(),this.list.setSelection((0,_.range)(this.list.length),V.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus()}onEscape(V){this.list.getSelection().length&&(V.preventDefault(),V.stopPropagation(),this.list.setSelection([],V.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus())}dispose(){this.disposables.dispose(),this.multipleSelectionDisposables.dispose()}}ke([s.memoize],E.prototype,\"onKeyDown\",null);var I;(function(B){B[B.Automatic=0]=\"Automatic\",B[B.Trigger=1]=\"Trigger\"})(I||(e.TypeNavigationMode=I={}));var M;(function(B){B[B.Idle=0]=\"Idle\",B[B.Typing=1]=\"Typing\"})(M||(M={})),e.DefaultKeyboardNavigationDelegate=new class{mightProducePrintableCharacter(B){return B.ctrlKey||B.metaKey||B.altKey?!1:B.keyCode>=31&&B.keyCode<=56||B.keyCode>=21&&B.keyCode<=30||B.keyCode>=98&&B.keyCode<=107||B.keyCode>=85&&B.keyCode<=95}};class P{constructor(V,Y,ie,ae,ce){this.list=V,this.view=Y,this.keyboardNavigationLabelProvider=ie,this.keyboardNavigationEventFilter=ae,this.delegate=ce,this.enabled=!1,this.state=M.Idle,this.mode=I.Automatic,this.triggered=!1,this.previouslyFocused=-1,this.enabledDisposables=new t.DisposableStore,this.disposables=new t.DisposableStore,this.updateOptions(V.options)}updateOptions(V){var Y,ie;!((Y=V.typeNavigationEnabled)!==null&&Y!==void 0)||Y?this.enable():this.disable(),this.mode=(ie=V.typeNavigationMode)!==null&&ie!==void 0?ie:I.Automatic}enable(){if(this.enabled)return;let V=!1;const Y=this.enabledDisposables.add(i.Event.chain(this.enabledDisposables.add(new k.DomEmitter(this.view.domNode,\"keydown\")).event)).filter(ce=>!v(ce.target)).filter(()=>this.mode===I.Automatic||this.triggered).map(ce=>new y.StandardKeyboardEvent(ce)).filter(ce=>V||this.keyboardNavigationEventFilter(ce)).filter(ce=>this.delegate.mightProducePrintableCharacter(ce)).forEach(ce=>L.EventHelper.stop(ce,!0)).map(ce=>ce.browserEvent.key).event,ie=i.Event.debounce(Y,()=>null,800,void 0,void 0,void 0,this.enabledDisposables);i.Event.reduce(i.Event.any(Y,ie),(ce,de)=>de===null?null:(ce||\"\")+de,void 0,this.enabledDisposables)(this.onInput,this,this.enabledDisposables),ie(this.onClear,this,this.enabledDisposables),Y(()=>V=!0,void 0,this.enabledDisposables),ie(()=>V=!1,void 0,this.enabledDisposables),this.enabled=!0,this.triggered=!1}disable(){this.enabled&&(this.enabledDisposables.clear(),this.enabled=!1,this.triggered=!1)}onClear(){var V;const Y=this.list.getFocus();if(Y.length>0&&Y[0]===this.previouslyFocused){const ie=(V=this.list.options.accessibilityProvider)===null||V===void 0?void 0:V.getAriaLabel(this.list.element(Y[0]));ie&&(0,S.alert)(ie)}this.previouslyFocused=-1}onInput(V){if(!V){this.state=M.Idle,this.triggered=!1;return}const Y=this.list.getFocus(),ie=Y.length>0?Y[0]:0,ae=this.state===M.Idle?1:0;this.state=M.Typing;for(let ce=0;ce<this.list.length;ce++){const de=(ie+ce+ae)%this.list.length,he=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(this.view.element(de)),ue=he&&he.toString();if(this.list.options.typeNavigationEnabled){if(typeof ue<\"u\"){const te=(0,n.matchesPrefix)(V,ue),q=(0,n.matchesFuzzy2)(V,ue);if(q){const z=q[0].end-q[0].start;if(te||z>1&&q.length===1){this.previouslyFocused=ie,this.list.setFocus([de]),this.list.reveal(de);return}}}}else if(typeof ue>\"u\"||(0,n.matchesPrefix)(V,ue)){this.previouslyFocused=ie,this.list.setFocus([de]),this.list.reveal(de);return}}}dispose(){this.disable(),this.enabledDisposables.dispose(),this.disposables.dispose()}}class x{constructor(V,Y){this.list=V,this.view=Y,this.disposables=new t.DisposableStore,this.disposables.add(i.Event.chain(this.disposables.add(new k.DomEmitter(Y.domNode,\"keydown\")).event)).filter(ae=>!v(ae.target)).map(ae=>new y.StandardKeyboardEvent(ae)).filter(ae=>ae.keyCode===2&&!ae.ctrlKey&&!ae.metaKey&&!ae.shiftKey&&!ae.altKey).on(this.onTab,this,this.disposables)}onTab(V){if(V.target!==this.view.domNode)return;const Y=this.list.getFocus();if(Y.length===0)return;const ie=this.view.domElement(Y[0]);if(!ie)return;const ae=ie.querySelector(\"[tabIndex]\");if(!ae||!(ae instanceof HTMLElement)||ae.tabIndex===-1)return;const ce=window.getComputedStyle(ae);ce.visibility===\"hidden\"||ce.display===\"none\"||(V.preventDefault(),V.stopPropagation(),ae.focus())}dispose(){this.disposables.dispose()}}function T(B){return u.isMacintosh?B.browserEvent.metaKey:B.browserEvent.ctrlKey}e.isSelectionSingleChangeEvent=T;function A(B){return B.browserEvent.shiftKey}e.isSelectionRangeChangeEvent=A;function N(B){return B instanceof MouseEvent&&B.button===2}const F={isSelectionSingleChangeEvent:T,isSelectionRangeChangeEvent:A};class O{constructor(V){this.list=V,this.disposables=new t.DisposableStore,this._onPointer=new i.Emitter,this.onPointer=this._onPointer.event,V.options.multipleSelectionSupport!==!1&&(this.multipleSelectionController=this.list.options.multipleSelectionController||F),this.mouseSupport=typeof V.options.mouseSupport>\"u\"||!!V.options.mouseSupport,this.mouseSupport&&(V.onMouseDown(this.onMouseDown,this,this.disposables),V.onContextMenu(this.onContextMenu,this,this.disposables),V.onMouseDblClick(this.onDoubleClick,this,this.disposables),V.onTouchStart(this.onMouseDown,this,this.disposables),this.disposables.add(D.Gesture.addTarget(V.getHTMLElement()))),i.Event.any(V.onMouseClick,V.onMouseMiddleClick,V.onTap)(this.onViewPointer,this,this.disposables)}updateOptions(V){V.multipleSelectionSupport!==void 0&&(this.multipleSelectionController=void 0,V.multipleSelectionSupport&&(this.multipleSelectionController=this.list.options.multipleSelectionController||F))}isSelectionSingleChangeEvent(V){return this.multipleSelectionController?this.multipleSelectionController.isSelectionSingleChangeEvent(V):!1}isSelectionRangeChangeEvent(V){return this.multipleSelectionController?this.multipleSelectionController.isSelectionRangeChangeEvent(V):!1}isSelectionChangeEvent(V){return this.isSelectionSingleChangeEvent(V)||this.isSelectionRangeChangeEvent(V)}onMouseDown(V){b(V.browserEvent.target)||document.activeElement!==V.browserEvent.target&&this.list.domFocus()}onContextMenu(V){if(v(V.browserEvent.target)||b(V.browserEvent.target))return;const Y=typeof V.index>\"u\"?[]:[V.index];this.list.setFocus(Y,V.browserEvent)}onViewPointer(V){if(!this.mouseSupport||v(V.browserEvent.target)||b(V.browserEvent.target)||V.browserEvent.isHandledByList)return;V.browserEvent.isHandledByList=!0;const Y=V.index;if(typeof Y>\"u\"){this.list.setFocus([],V.browserEvent),this.list.setSelection([],V.browserEvent),this.list.setAnchor(void 0);return}if(this.isSelectionChangeEvent(V))return this.changeSelection(V);this.list.setFocus([Y],V.browserEvent),this.list.setAnchor(Y),N(V.browserEvent)||this.list.setSelection([Y],V.browserEvent),this._onPointer.fire(V)}onDoubleClick(V){if(v(V.browserEvent.target)||b(V.browserEvent.target)||this.isSelectionChangeEvent(V)||V.browserEvent.isHandledByList)return;V.browserEvent.isHandledByList=!0;const Y=this.list.getFocus();this.list.setSelection(Y,V.browserEvent)}changeSelection(V){const Y=V.index;let ie=this.list.getAnchor();if(this.isSelectionRangeChangeEvent(V)){if(typeof ie>\"u\"){const q=this.list.getFocus()[0];ie=q??Y,this.list.setAnchor(ie)}const ae=Math.min(ie,Y),ce=Math.max(ie,Y),de=(0,_.range)(ae,ce+1),he=this.list.getSelection(),ue=j(R(he,[ie]),ie);if(ue.length===0)return;const te=R(de,K(he,ue));this.list.setSelection(te,V.browserEvent),this.list.setFocus([Y],V.browserEvent)}else if(this.isSelectionSingleChangeEvent(V)){const ae=this.list.getSelection(),ce=ae.filter(de=>de!==Y);this.list.setFocus([Y]),this.list.setAnchor(Y),ae.length===ce.length?this.list.setSelection([...ce,Y],V.browserEvent):this.list.setSelection(ce,V.browserEvent)}}dispose(){this.disposables.dispose()}}e.MouseController=O;class W{constructor(V,Y){this.styleElement=V,this.selectorSuffix=Y}style(V){var Y,ie;const ae=this.selectorSuffix&&`.${this.selectorSuffix}`,ce=[];V.listBackground&&ce.push(`.monaco-list${ae} .monaco-list-rows { background: ${V.listBackground}; }`),V.listFocusBackground&&(ce.push(`.monaco-list${ae}:focus .monaco-list-row.focused { background-color: ${V.listFocusBackground}; }`),ce.push(`.monaco-list${ae}:focus .monaco-list-row.focused:hover { background-color: ${V.listFocusBackground}; }`)),V.listFocusForeground&&ce.push(`.monaco-list${ae}:focus .monaco-list-row.focused { color: ${V.listFocusForeground}; }`),V.listActiveSelectionBackground&&(ce.push(`.monaco-list${ae}:focus .monaco-list-row.selected { background-color: ${V.listActiveSelectionBackground}; }`),ce.push(`.monaco-list${ae}:focus .monaco-list-row.selected:hover { background-color: ${V.listActiveSelectionBackground}; }`)),V.listActiveSelectionForeground&&ce.push(`.monaco-list${ae}:focus .monaco-list-row.selected { color: ${V.listActiveSelectionForeground}; }`),V.listActiveSelectionIconForeground&&ce.push(`.monaco-list${ae}:focus .monaco-list-row.selected .codicon { color: ${V.listActiveSelectionIconForeground}; }`),V.listFocusAndSelectionBackground&&ce.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${ae}:focus .monaco-list-row.selected.focused { background-color: ${V.listFocusAndSelectionBackground}; }\n\t\t\t`),V.listFocusAndSelectionForeground&&ce.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${ae}:focus .monaco-list-row.selected.focused { color: ${V.listFocusAndSelectionForeground}; }\n\t\t\t`),V.listInactiveFocusForeground&&(ce.push(`.monaco-list${ae} .monaco-list-row.focused { color:  ${V.listInactiveFocusForeground}; }`),ce.push(`.monaco-list${ae} .monaco-list-row.focused:hover { color:  ${V.listInactiveFocusForeground}; }`)),V.listInactiveSelectionIconForeground&&ce.push(`.monaco-list${ae} .monaco-list-row.focused .codicon { color:  ${V.listInactiveSelectionIconForeground}; }`),V.listInactiveFocusBackground&&(ce.push(`.monaco-list${ae} .monaco-list-row.focused { background-color:  ${V.listInactiveFocusBackground}; }`),ce.push(`.monaco-list${ae} .monaco-list-row.focused:hover { background-color:  ${V.listInactiveFocusBackground}; }`)),V.listInactiveSelectionBackground&&(ce.push(`.monaco-list${ae} .monaco-list-row.selected { background-color:  ${V.listInactiveSelectionBackground}; }`),ce.push(`.monaco-list${ae} .monaco-list-row.selected:hover { background-color:  ${V.listInactiveSelectionBackground}; }`)),V.listInactiveSelectionForeground&&ce.push(`.monaco-list${ae} .monaco-list-row.selected { color: ${V.listInactiveSelectionForeground}; }`),V.listHoverBackground&&ce.push(`.monaco-list${ae}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${V.listHoverBackground}; }`),V.listHoverForeground&&ce.push(`.monaco-list${ae}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { color:  ${V.listHoverForeground}; }`);const de=(0,L.asCssValueWithDefault)(V.listFocusAndSelectionOutline,(0,L.asCssValueWithDefault)(V.listSelectionOutline,(Y=V.listFocusOutline)!==null&&Y!==void 0?Y:\"\"));de&&ce.push(`.monaco-list${ae}:focus .monaco-list-row.focused.selected { outline: 1px solid ${de}; outline-offset: -1px;}`),V.listFocusOutline&&ce.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${ae}:focus .monaco-list-row.focused { outline: 1px solid ${V.listFocusOutline}; outline-offset: -1px; }\n\t\t\t\t.monaco-workbench.context-menu-visible .monaco-list${ae}.last-focused .monaco-list-row.focused { outline: 1px solid ${V.listFocusOutline}; outline-offset: -1px; }\n\t\t\t`);const he=(0,L.asCssValueWithDefault)(V.listSelectionOutline,(ie=V.listInactiveFocusOutline)!==null&&ie!==void 0?ie:\"\");he&&ce.push(`.monaco-list${ae} .monaco-list-row.focused.selected { outline: 1px dotted ${he}; outline-offset: -1px; }`),V.listSelectionOutline&&ce.push(`.monaco-list${ae} .monaco-list-row.selected { outline: 1px dotted ${V.listSelectionOutline}; outline-offset: -1px; }`),V.listInactiveFocusOutline&&ce.push(`.monaco-list${ae} .monaco-list-row.focused { outline: 1px dotted ${V.listInactiveFocusOutline}; outline-offset: -1px; }`),V.listHoverOutline&&ce.push(`.monaco-list${ae} .monaco-list-row:hover { outline: 1px dashed ${V.listHoverOutline}; outline-offset: -1px; }`),V.listDropBackground&&ce.push(`\n\t\t\t\t.monaco-list${ae}.drop-target,\n\t\t\t\t.monaco-list${ae} .monaco-list-rows.drop-target,\n\t\t\t\t.monaco-list${ae} .monaco-list-row.drop-target { background-color: ${V.listDropBackground} !important; color: inherit !important; }\n\t\t\t`),V.tableColumnsBorder&&ce.push(`\n\t\t\t\t.monaco-table > .monaco-split-view2,\n\t\t\t\t.monaco-table > .monaco-split-view2 .monaco-sash.vertical::before,\n\t\t\t\t.monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2,\n\t\t\t\t.monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\t\t\tborder-color: ${V.tableColumnsBorder};\n\t\t\t\t}\n\n\t\t\t\t.monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2,\n\t\t\t\t.monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\t\t\tborder-color: transparent;\n\t\t\t\t}\n\t\t\t`),V.tableOddRowsBackgroundColor&&ce.push(`\n\t\t\t\t.monaco-table .monaco-list-row[data-parity=odd]:not(.focused):not(.selected):not(:hover) .monaco-table-tr,\n\t\t\t\t.monaco-table .monaco-list:not(:focus) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr,\n\t\t\t\t.monaco-table .monaco-list:not(.focused) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr {\n\t\t\t\t\tbackground-color: ${V.tableOddRowsBackgroundColor};\n\t\t\t\t}\n\t\t\t`),this.styleElement.textContent=ce.join(`\n`)}}e.DefaultStyleController=W,e.unthemedListStyles={listFocusBackground:\"#7FB0D0\",listActiveSelectionBackground:\"#0E639C\",listActiveSelectionForeground:\"#FFFFFF\",listActiveSelectionIconForeground:\"#FFFFFF\",listFocusAndSelectionOutline:\"#90C2F9\",listFocusAndSelectionBackground:\"#094771\",listFocusAndSelectionForeground:\"#FFFFFF\",listInactiveSelectionBackground:\"#3F3F46\",listInactiveSelectionIconForeground:\"#FFFFFF\",listHoverBackground:\"#2A2D2E\",listDropBackground:\"#383B3D\",treeIndentGuidesStroke:\"#a9a9a9\",treeInactiveIndentGuidesStroke:C.Color.fromHex(\"#a9a9a9\").transparent(.4).toString(),tableColumnsBorder:C.Color.fromHex(\"#cccccc\").transparent(.2).toString(),tableOddRowsBackgroundColor:C.Color.fromHex(\"#cccccc\").transparent(.04).toString(),listBackground:void 0,listFocusForeground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusForeground:void 0,listInactiveFocusBackground:void 0,listHoverForeground:void 0,listFocusOutline:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listHoverOutline:void 0};const U={keyboardSupport:!0,mouseSupport:!0,multipleSelectionSupport:!0,dnd:{getDragURI(){return null},onDragStart(){},onDragOver(){return!1},drop(){}}};function j(B,V){const Y=B.indexOf(V);if(Y===-1)return[];const ie=[];let ae=Y-1;for(;ae>=0&&B[ae]===V-(Y-ae);)ie.push(B[ae--]);for(ie.reverse(),ae=Y;ae<B.length&&B[ae]===V+(ae-Y);)ie.push(B[ae++]);return ie}function R(B,V){const Y=[];let ie=0,ae=0;for(;ie<B.length||ae<V.length;)if(ie>=B.length)Y.push(V[ae++]);else if(ae>=V.length)Y.push(B[ie++]);else if(B[ie]===V[ae]){Y.push(B[ie]),ie++,ae++;continue}else B[ie]<V[ae]?Y.push(B[ie++]):Y.push(V[ae++]);return Y}function K(B,V){const Y=[];let ie=0,ae=0;for(;ie<B.length||ae<V.length;)if(ie>=B.length)Y.push(V[ae++]);else if(ae>=V.length)Y.push(B[ie++]);else if(B[ie]===V[ae]){ie++,ae++;continue}else B[ie]<V[ae]?Y.push(B[ie++]):ae++;return Y}const G=(B,V)=>B-V;class Z{constructor(V,Y){this._templateId=V,this.renderers=Y}get templateId(){return this._templateId}renderTemplate(V){return this.renderers.map(Y=>Y.renderTemplate(V))}renderElement(V,Y,ie,ae){let ce=0;for(const de of this.renderers)de.renderElement(V,Y,ie[ce++],ae)}disposeElement(V,Y,ie,ae){var ce;let de=0;for(const he of this.renderers)(ce=he.disposeElement)===null||ce===void 0||ce.call(he,V,Y,ie[de],ae),de+=1}disposeTemplate(V){let Y=0;for(const ie of this.renderers)ie.disposeTemplate(V[Y++])}}class J{constructor(V){this.accessibilityProvider=V,this.templateId=\"a18n\"}renderTemplate(V){return V}renderElement(V,Y,ie){const ae=this.accessibilityProvider.getAriaLabel(V);ae?ie.setAttribute(\"aria-label\",ae):ie.removeAttribute(\"aria-label\");const ce=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(V);typeof ce==\"number\"?ie.setAttribute(\"aria-level\",`${ce}`):ie.removeAttribute(\"aria-level\")}disposeTemplate(V){}}class X{constructor(V,Y){this.list=V,this.dnd=Y}getDragElements(V){const Y=this.list.getSelectedElements();return Y.indexOf(V)>-1?Y:[V]}getDragURI(V){return this.dnd.getDragURI(V)}getDragLabel(V,Y){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(V,Y)}onDragStart(V,Y){var ie,ae;(ae=(ie=this.dnd).onDragStart)===null||ae===void 0||ae.call(ie,V,Y)}onDragOver(V,Y,ie,ae){return this.dnd.onDragOver(V,Y,ie,ae)}onDragLeave(V,Y,ie,ae){var ce,de;(de=(ce=this.dnd).onDragLeave)===null||de===void 0||de.call(ce,V,Y,ie,ae)}onDragEnd(V){var Y,ie;(ie=(Y=this.dnd).onDragEnd)===null||ie===void 0||ie.call(Y,V)}drop(V,Y,ie,ae){this.dnd.drop(V,Y,ie,ae)}}class H{get onDidChangeFocus(){return i.Event.map(this.eventBufferer.wrapEvent(this.focus.onChange),V=>this.toListEvent(V),this.disposables)}get onDidChangeSelection(){return i.Event.map(this.eventBufferer.wrapEvent(this.selection.onChange),V=>this.toListEvent(V),this.disposables)}get domId(){return this.view.domId}get onDidScroll(){return this.view.onDidScroll}get onMouseClick(){return this.view.onMouseClick}get onMouseDblClick(){return this.view.onMouseDblClick}get onMouseMiddleClick(){return this.view.onMouseMiddleClick}get onPointer(){return this.mouseController.onPointer}get onMouseDown(){return this.view.onMouseDown}get onMouseOver(){return this.view.onMouseOver}get onMouseOut(){return this.view.onMouseOut}get onTouchStart(){return this.view.onTouchStart}get onTap(){return this.view.onTap}get onContextMenu(){let V=!1;const Y=this.disposables.add(i.Event.chain(this.disposables.add(new k.DomEmitter(this.view.domNode,\"keydown\")).event)).map(ce=>new y.StandardKeyboardEvent(ce)).filter(ce=>V=ce.keyCode===58||ce.shiftKey&&ce.keyCode===68).map(ce=>L.EventHelper.stop(ce,!0)).filter(()=>!1).event,ie=this.disposables.add(i.Event.chain(this.disposables.add(new k.DomEmitter(this.view.domNode,\"keyup\")).event)).forEach(()=>V=!1).map(ce=>new y.StandardKeyboardEvent(ce)).filter(ce=>ce.keyCode===58||ce.shiftKey&&ce.keyCode===68).map(ce=>L.EventHelper.stop(ce,!0)).map(({browserEvent:ce})=>{const de=this.getFocus(),he=de.length?de[0]:void 0,ue=typeof he<\"u\"?this.view.element(he):void 0,te=typeof he<\"u\"?this.view.domElement(he):this.view.domNode;return{index:he,element:ue,anchor:te,browserEvent:ce}}).event,ae=this.disposables.add(i.Event.chain(this.view.onContextMenu)).filter(ce=>!V).map(({element:ce,index:de,browserEvent:he})=>({element:ce,index:de,anchor:new o.StandardMouseEvent(he),browserEvent:he})).event;return i.Event.any(Y,ie,ae)}get onKeyDown(){return this.disposables.add(new k.DomEmitter(this.view.domNode,\"keydown\")).event}get onDidFocus(){return i.Event.signal(this.disposables.add(new k.DomEmitter(this.view.domNode,\"focus\",!0)).event)}constructor(V,Y,ie,ae,ce=U){var de,he,ue,te;this.user=V,this._options=ce,this.focus=new l(\"focused\"),this.anchor=new l(\"anchor\"),this.eventBufferer=new i.EventBufferer,this._ariaLabel=\"\",this.disposables=new t.DisposableStore,this._onDidDispose=new i.Emitter,this.onDidDispose=this._onDidDispose.event;const q=this._options.accessibilityProvider&&this._options.accessibilityProvider.getWidgetRole?(de=this._options.accessibilityProvider)===null||de===void 0?void 0:de.getWidgetRole():\"list\";this.selection=new p(q!==\"listbox\");const z=[this.focus.renderer,this.selection.renderer];this.accessibilityProvider=ce.accessibilityProvider,this.accessibilityProvider&&(z.push(new J(this.accessibilityProvider)),(ue=(he=this.accessibilityProvider).onDidChangeActiveDescendant)===null||ue===void 0||ue.call(he,this.onDidChangeActiveDescendant,this,this.disposables)),ae=ae.map($=>new Z($.templateId,[...z,$]));const ee=Object.assign(Object.assign({},ce),{dnd:ce.dnd&&new X(this,ce.dnd)});if(this.view=this.createListView(Y,ie,ae,ee),this.view.domNode.setAttribute(\"role\",q),ce.styleController)this.styleController=ce.styleController(this.view.domId);else{const $=(0,L.createStyleSheet)(this.view.domNode);this.styleController=new W($,this.view.domId)}if(this.spliceable=new f.CombinedSpliceable([new m(this.focus,this.view,ce.identityProvider),new m(this.selection,this.view,ce.identityProvider),new m(this.anchor,this.view,ce.identityProvider),this.view]),this.disposables.add(this.focus),this.disposables.add(this.selection),this.disposables.add(this.anchor),this.disposables.add(this.view),this.disposables.add(this._onDidDispose),this.disposables.add(new x(this,this.view)),(typeof ce.keyboardSupport!=\"boolean\"||ce.keyboardSupport)&&(this.keyboardController=new E(this,this.view,ce),this.disposables.add(this.keyboardController)),ce.keyboardNavigationLabelProvider){const $=ce.keyboardNavigationDelegate||e.DefaultKeyboardNavigationDelegate;this.typeNavigationController=new P(this,this.view,ce.keyboardNavigationLabelProvider,(te=ce.keyboardNavigationEventFilter)!==null&&te!==void 0?te:()=>!0,$),this.disposables.add(this.typeNavigationController)}this.mouseController=this.createMouseController(ce),this.disposables.add(this.mouseController),this.onDidChangeFocus(this._onFocusChange,this,this.disposables),this.onDidChangeSelection(this._onSelectionChange,this,this.disposables),this.accessibilityProvider&&(this.ariaLabel=this.accessibilityProvider.getWidgetAriaLabel()),this._options.multipleSelectionSupport!==!1&&this.view.domNode.setAttribute(\"aria-multiselectable\",\"true\")}createListView(V,Y,ie,ae){return new c.ListView(V,Y,ie,ae)}createMouseController(V){return new O(this)}updateOptions(V={}){var Y,ie;this._options=Object.assign(Object.assign({},this._options),V),(Y=this.typeNavigationController)===null||Y===void 0||Y.updateOptions(this._options),this._options.multipleSelectionController!==void 0&&(this._options.multipleSelectionSupport?this.view.domNode.setAttribute(\"aria-multiselectable\",\"true\"):this.view.domNode.removeAttribute(\"aria-multiselectable\")),this.mouseController.updateOptions(V),(ie=this.keyboardController)===null||ie===void 0||ie.updateOptions(V),this.view.updateOptions(V)}get options(){return this._options}splice(V,Y,ie=[]){if(V<0||V>this.view.length)throw new r.ListError(this.user,`Invalid start index: ${V}`);if(Y<0)throw new r.ListError(this.user,`Invalid delete count: ${Y}`);Y===0&&ie.length===0||this.eventBufferer.bufferEvents(()=>this.spliceable.splice(V,Y,ie))}rerender(){this.view.rerender()}element(V){return this.view.element(V)}get length(){return this.view.length}get contentHeight(){return this.view.contentHeight}get scrollTop(){return this.view.getScrollTop()}set scrollTop(V){this.view.setScrollTop(V)}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}get firstVisibleIndex(){return this.view.firstVisibleIndex}get ariaLabel(){return this._ariaLabel}set ariaLabel(V){this._ariaLabel=V,this.view.domNode.setAttribute(\"aria-label\",V)}domFocus(){this.view.domNode.focus({preventScroll:!0})}layout(V,Y){this.view.layout(V,Y)}setSelection(V,Y){for(const ie of V)if(ie<0||ie>=this.length)throw new r.ListError(this.user,`Invalid index ${ie}`);this.selection.set(V,Y)}getSelection(){return this.selection.get()}getSelectedElements(){return this.getSelection().map(V=>this.view.element(V))}setAnchor(V){if(typeof V>\"u\"){this.anchor.set([]);return}if(V<0||V>=this.length)throw new r.ListError(this.user,`Invalid index ${V}`);this.anchor.set([V])}getAnchor(){return(0,_.firstOrDefault)(this.anchor.get(),void 0)}getAnchorElement(){const V=this.getAnchor();return typeof V>\"u\"?void 0:this.element(V)}setFocus(V,Y){for(const ie of V)if(ie<0||ie>=this.length)throw new r.ListError(this.user,`Invalid index ${ie}`);this.focus.set(V,Y)}focusNext(V=1,Y=!1,ie,ae){if(this.length===0)return;const ce=this.focus.get(),de=this.findNextIndex(ce.length>0?ce[0]+V:0,Y,ae);de>-1&&this.setFocus([de],ie)}focusPrevious(V=1,Y=!1,ie,ae){if(this.length===0)return;const ce=this.focus.get(),de=this.findPreviousIndex(ce.length>0?ce[0]-V:0,Y,ae);de>-1&&this.setFocus([de],ie)}focusNextPage(V,Y){return we(this,void 0,void 0,function*(){let ie=this.view.indexAt(this.view.getScrollTop()+this.view.renderHeight);ie=ie===0?0:ie-1;const ae=this.getFocus()[0];if(ae!==ie&&(ae===void 0||ie>ae)){const ce=this.findPreviousIndex(ie,!1,Y);ce>-1&&ae!==ce?this.setFocus([ce],V):this.setFocus([ie],V)}else{const ce=this.view.getScrollTop();let de=ce+this.view.renderHeight;ie>ae&&(de-=this.view.elementHeight(ie)),this.view.setScrollTop(de),this.view.getScrollTop()!==ce&&(this.setFocus([]),yield(0,g.timeout)(0),yield this.focusNextPage(V,Y))}})}focusPreviousPage(V,Y){return we(this,void 0,void 0,function*(){let ie;const ae=this.view.getScrollTop();ae===0?ie=this.view.indexAt(ae):ie=this.view.indexAfter(ae-1);const ce=this.getFocus()[0];if(ce!==ie&&(ce===void 0||ce>=ie)){const de=this.findNextIndex(ie,!1,Y);de>-1&&ce!==de?this.setFocus([de],V):this.setFocus([ie],V)}else{const de=ae;this.view.setScrollTop(ae-this.view.renderHeight),this.view.getScrollTop()!==de&&(this.setFocus([]),yield(0,g.timeout)(0),yield this.focusPreviousPage(V,Y))}})}focusLast(V,Y){if(this.length===0)return;const ie=this.findPreviousIndex(this.length-1,!1,Y);ie>-1&&this.setFocus([ie],V)}focusFirst(V,Y){this.focusNth(0,V,Y)}focusNth(V,Y,ie){if(this.length===0)return;const ae=this.findNextIndex(V,!1,ie);ae>-1&&this.setFocus([ae],Y)}findNextIndex(V,Y=!1,ie){for(let ae=0;ae<this.length;ae++){if(V>=this.length&&!Y)return-1;if(V=V%this.length,!ie||ie(this.element(V)))return V;V++}return-1}findPreviousIndex(V,Y=!1,ie){for(let ae=0;ae<this.length;ae++){if(V<0&&!Y)return-1;if(V=(this.length+V%this.length)%this.length,!ie||ie(this.element(V)))return V;V--}return-1}getFocus(){return this.focus.get()}getFocusedElements(){return this.getFocus().map(V=>this.view.element(V))}reveal(V,Y){if(V<0||V>=this.length)throw new r.ListError(this.user,`Invalid index ${V}`);const ie=this.view.getScrollTop(),ae=this.view.elementTop(V),ce=this.view.elementHeight(V);if((0,h.isNumber)(Y)){const de=ce-this.view.renderHeight;this.view.setScrollTop(de*(0,a.clamp)(Y,0,1)+ae)}else{const de=ae+ce,he=ie+this.view.renderHeight;ae<ie&&de>=he||(ae<ie||de>=he&&ce>=this.view.renderHeight?this.view.setScrollTop(ae):de>=he&&this.view.setScrollTop(de-this.view.renderHeight))}}getHTMLElement(){return this.view.domNode}getElementID(V){return this.view.getElementDomId(V)}style(V){this.styleController.style(V)}toListEvent({indexes:V,browserEvent:Y}){return{indexes:V,elements:V.map(ie=>this.view.element(ie)),browserEvent:Y}}_onFocusChange(){const V=this.focus.get();this.view.domNode.classList.toggle(\"element-focused\",V.length>0),this.onDidChangeActiveDescendant()}onDidChangeActiveDescendant(){var V;const Y=this.focus.get();if(Y.length>0){let ie;!((V=this.accessibilityProvider)===null||V===void 0)&&V.getActiveDescendantId&&(ie=this.accessibilityProvider.getActiveDescendantId(this.view.element(Y[0]))),this.view.domNode.setAttribute(\"aria-activedescendant\",ie||this.view.getElementDomId(Y[0]))}else this.view.domNode.removeAttribute(\"aria-activedescendant\")}_onSelectionChange(){const V=this.selection.get();this.view.domNode.classList.toggle(\"selection-none\",V.length===0),this.view.domNode.classList.toggle(\"selection-single\",V.length===1),this.view.domNode.classList.toggle(\"selection-multiple\",V.length>1)}dispose(){this._onDidDispose.fire(),this.disposables.dispose(),this._onDidDispose.dispose()}}e.List=H,ke([s.memoize],H.prototype,\"onDidChangeFocus\",null),ke([s.memoize],H.prototype,\"onDidChangeSelection\",null),ke([s.memoize],H.prototype,\"onContextMenu\",null),ke([s.memoize],H.prototype,\"onKeyDown\",null),ke([s.memoize],H.prototype,\"onDidFocus\",null)}),define(ne[578],se([1,0,14,19,6,2,114,268]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PagedList=void 0;class f{get templateId(){return this.renderer.templateId}constructor(i,n){this.renderer=i,this.modelProvider=n}renderTemplate(i){return{data:this.renderer.renderTemplate(i),disposable:D.Disposable.None}}renderElement(i,n,t,a){var u;if((u=t.disposable)===null||u===void 0||u.dispose(),!t.data)return;const h=this.modelProvider();if(h.isResolved(i))return this.renderer.renderElement(h.get(i),i,t.data,a);const r=new k.CancellationTokenSource,c=h.resolve(i,r.token);t.disposable={dispose:()=>r.cancel()},this.renderer.renderPlaceholder(i,t.data),c.then(o=>this.renderer.renderElement(o,i,t.data,a))}disposeTemplate(i){i.disposable&&(i.disposable.dispose(),i.disposable=void 0),i.data&&(this.renderer.disposeTemplate(i.data),i.data=void 0)}}class _{constructor(i,n){this.modelProvider=i,this.accessibilityProvider=n}getWidgetAriaLabel(){return this.accessibilityProvider.getWidgetAriaLabel()}getAriaLabel(i){const n=this.modelProvider();return n.isResolved(i)?this.accessibilityProvider.getAriaLabel(n.get(i)):null}}function g(s,i){return Object.assign(Object.assign({},i),{accessibilityProvider:i.accessibilityProvider&&new _(s,i.accessibilityProvider)})}class C{constructor(i,n,t,a,u={}){const h=()=>this.model,r=a.map(c=>new f(c,h));this.list=new S.List(i,n,t,r,g(h,u))}updateOptions(i){this.list.updateOptions(i)}getHTMLElement(){return this.list.getHTMLElement()}get onDidFocus(){return this.list.onDidFocus}get widget(){return this.list}get onDidDispose(){return this.list.onDidDispose}get onMouseDblClick(){return y.Event.map(this.list.onMouseDblClick,({element:i,index:n,browserEvent:t})=>({element:i===void 0?void 0:this._model.get(i),index:n,browserEvent:t}))}get onPointer(){return y.Event.map(this.list.onPointer,({element:i,index:n,browserEvent:t})=>({element:i===void 0?void 0:this._model.get(i),index:n,browserEvent:t}))}get onDidChangeSelection(){return y.Event.map(this.list.onDidChangeSelection,({elements:i,indexes:n,browserEvent:t})=>({elements:i.map(a=>this._model.get(a)),indexes:n,browserEvent:t}))}get model(){return this._model}set model(i){this._model=i,this.list.splice(0,this.list.length,(0,L.range)(i.length))}getFocus(){return this.list.getFocus()}getSelection(){return this.list.getSelection()}getSelectedElements(){return this.getSelection().map(i=>this.model.get(i))}style(i){this.list.style(i)}dispose(){this.list.dispose()}}e.PagedList=C}),define(ne[311],se([1,0,7,81,130,75,14,38,6,2,141,167,20,409]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SplitView=e.Sizing=void 0;const n={separatorBorder:f.Color.transparent};class t{set size(d){this._size=d}get size(){return this._size}get visible(){return typeof this._cachedVisibleSize>\"u\"}setVisible(d,l){var p,m;d!==this.visible&&(d?(this.size=(0,C.clamp)(this._cachedVisibleSize,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize=typeof l==\"number\"?l:this.size,this.size=0),this.container.classList.toggle(\"visible\",d),(m=(p=this.view).setVisible)===null||m===void 0||m.call(p,d))}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get proportionalLayout(){var d;return(d=this.view.proportionalLayout)!==null&&d!==void 0?d:!0}get snap(){return!!this.view.snap}set enabled(d){this.container.style.pointerEvents=d?\"\":\"none\"}constructor(d,l,p,m){this.container=d,this.view=l,this.disposable=m,this._cachedVisibleSize=void 0,typeof p==\"number\"?(this._size=p,this._cachedVisibleSize=void 0,d.classList.add(\"visible\")):(this._size=0,this._cachedVisibleSize=p.cachedVisibleSize)}layout(d,l){this.layoutContainer(d),this.view.layout(this.size,d,l)}dispose(){this.disposable.dispose()}}class a extends t{layoutContainer(d){this.container.style.top=`${d}px`,this.container.style.height=`${this.size}px`}}class u extends t{layoutContainer(d){this.container.style.left=`${d}px`,this.container.style.width=`${this.size}px`}}var h;(function(o){o[o.Idle=0]=\"Idle\",o[o.Busy=1]=\"Busy\"})(h||(h={}));var r;(function(o){o.Distribute={type:\"distribute\"};function d(m){return{type:\"split\",index:m}}o.Split=d;function l(m){return{type:\"auto\",index:m}}o.Auto=l;function p(m){return{type:\"invisible\",cachedVisibleSize:m}}o.Invisible=p})(r||(e.Sizing=r={}));class c extends g.Disposable{get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}get startSnappingEnabled(){return this._startSnappingEnabled}get endSnappingEnabled(){return this._endSnappingEnabled}set orthogonalStartSash(d){for(const l of this.sashItems)l.sash.orthogonalStartSash=d;this._orthogonalStartSash=d}set orthogonalEndSash(d){for(const l of this.sashItems)l.sash.orthogonalEndSash=d;this._orthogonalEndSash=d}set startSnappingEnabled(d){this._startSnappingEnabled!==d&&(this._startSnappingEnabled=d,this.updateSashEnablement())}set endSnappingEnabled(d){this._endSnappingEnabled!==d&&(this._endSnappingEnabled=d,this.updateSashEnablement())}constructor(d,l={}){var p,m,v,b,w;super(),this.size=0,this.contentSize=0,this.proportions=void 0,this.viewItems=[],this.sashItems=[],this.state=h.Idle,this._onDidSashChange=this._register(new _.Emitter),this._onDidSashReset=this._register(new _.Emitter),this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this.onDidSashChange=this._onDidSashChange.event,this.onDidSashReset=this._onDidSashReset.event,this.orientation=(p=l.orientation)!==null&&p!==void 0?p:0,this.inverseAltBehavior=(m=l.inverseAltBehavior)!==null&&m!==void 0?m:!1,this.proportionalLayout=(v=l.proportionalLayout)!==null&&v!==void 0?v:!0,this.getSashOrthogonalSize=l.getSashOrthogonalSize,this.el=document.createElement(\"div\"),this.el.classList.add(\"monaco-split-view2\"),this.el.classList.add(this.orientation===0?\"vertical\":\"horizontal\"),d.appendChild(this.el),this.sashContainer=(0,L.append)(this.el,(0,L.$)(\".sash-container\")),this.viewContainer=(0,L.$)(\".split-view-container\"),this.scrollable=this._register(new s.Scrollable({forceIntegerValues:!0,smoothScrollDuration:125,scheduleAtNextAnimationFrame:L.scheduleAtNextAnimationFrame})),this.scrollableElement=this._register(new D.SmoothScrollableElement(this.viewContainer,{vertical:this.orientation===0?(b=l.scrollbarVisibility)!==null&&b!==void 0?b:1:2,horizontal:this.orientation===1?(w=l.scrollbarVisibility)!==null&&w!==void 0?w:1:2},this.scrollable));const E=this._register(new k.DomEmitter(this.viewContainer,\"scroll\")).event;this._register(E(I=>{const M=this.scrollableElement.getScrollPosition(),P=Math.abs(this.viewContainer.scrollLeft-M.scrollLeft)<=1?void 0:this.viewContainer.scrollLeft,x=Math.abs(this.viewContainer.scrollTop-M.scrollTop)<=1?void 0:this.viewContainer.scrollTop;(P!==void 0||x!==void 0)&&this.scrollableElement.setScrollPosition({scrollLeft:P,scrollTop:x})})),this.onDidScroll=this.scrollableElement.onScroll,this._register(this.onDidScroll(I=>{I.scrollTopChanged&&(this.viewContainer.scrollTop=I.scrollTop),I.scrollLeftChanged&&(this.viewContainer.scrollLeft=I.scrollLeft)})),(0,L.append)(this.el,this.scrollableElement.getDomNode()),this.style(l.styles||n),l.descriptor&&(this.size=l.descriptor.size,l.descriptor.views.forEach((I,M)=>{const P=i.isUndefined(I.visible)||I.visible?I.size:{type:\"invisible\",cachedVisibleSize:I.size},x=I.view;this.doAddView(x,P,M,!0)}),this.contentSize=this.viewItems.reduce((I,M)=>I+M.size,0),this.saveProportions())}style(d){d.separatorBorder.isTransparent()?(this.el.classList.remove(\"separator-border\"),this.el.style.removeProperty(\"--separator-border\")):(this.el.classList.add(\"separator-border\"),this.el.style.setProperty(\"--separator-border\",d.separatorBorder.toString()))}addView(d,l,p=this.viewItems.length,m){this.doAddView(d,l,p,m)}layout(d,l){const p=Math.max(this.size,this.contentSize);if(this.size=d,this.layoutContext=l,this.proportions){let m=0;for(let v=0;v<this.viewItems.length;v++){const b=this.viewItems[v],w=this.proportions[v];typeof w==\"number\"?m+=w:d-=b.size}for(let v=0;v<this.viewItems.length;v++){const b=this.viewItems[v],w=this.proportions[v];typeof w==\"number\"&&(b.size=(0,C.clamp)(Math.round(w*d/m),b.minimumSize,b.maximumSize))}}else{const m=(0,S.range)(this.viewItems.length),v=m.filter(w=>this.viewItems[w].priority===1),b=m.filter(w=>this.viewItems[w].priority===2);this.resize(this.viewItems.length-1,d-p,void 0,v,b)}this.distributeEmptySpace(),this.layoutViews()}saveProportions(){this.proportionalLayout&&this.contentSize>0&&(this.proportions=this.viewItems.map(d=>d.proportionalLayout?d.size/this.contentSize:void 0))}onSashStart({sash:d,start:l,alt:p}){for(const w of this.viewItems)w.enabled=!1;const m=this.sashItems.findIndex(w=>w.sash===d),v=(0,g.combinedDisposable)((0,L.addDisposableListener)(document.body,\"keydown\",w=>b(this.sashDragState.current,w.altKey)),(0,L.addDisposableListener)(document.body,\"keyup\",()=>b(this.sashDragState.current,!1))),b=(w,E)=>{const I=this.viewItems.map(A=>A.size);let M=Number.NEGATIVE_INFINITY,P=Number.POSITIVE_INFINITY;if(this.inverseAltBehavior&&(E=!E),E)if(m===this.sashItems.length-1){const N=this.viewItems[m];M=(N.minimumSize-N.size)/2,P=(N.maximumSize-N.size)/2}else{const N=this.viewItems[m+1];M=(N.size-N.maximumSize)/2,P=(N.size-N.minimumSize)/2}let x,T;if(!E){const A=(0,S.range)(m,-1),N=(0,S.range)(m+1,this.viewItems.length),F=A.reduce((Z,J)=>Z+(this.viewItems[J].minimumSize-I[J]),0),O=A.reduce((Z,J)=>Z+(this.viewItems[J].viewMaximumSize-I[J]),0),W=N.length===0?Number.POSITIVE_INFINITY:N.reduce((Z,J)=>Z+(I[J]-this.viewItems[J].minimumSize),0),U=N.length===0?Number.NEGATIVE_INFINITY:N.reduce((Z,J)=>Z+(I[J]-this.viewItems[J].viewMaximumSize),0),j=Math.max(F,U),R=Math.min(W,O),K=this.findFirstSnapIndex(A),G=this.findFirstSnapIndex(N);if(typeof K==\"number\"){const Z=this.viewItems[K],J=Math.floor(Z.viewMinimumSize/2);x={index:K,limitDelta:Z.visible?j-J:j+J,size:Z.size}}if(typeof G==\"number\"){const Z=this.viewItems[G],J=Math.floor(Z.viewMinimumSize/2);T={index:G,limitDelta:Z.visible?R+J:R-J,size:Z.size}}}this.sashDragState={start:w,current:w,index:m,sizes:I,minDelta:M,maxDelta:P,alt:E,snapBefore:x,snapAfter:T,disposable:v}};b(l,p)}onSashChange({current:d}){const{index:l,start:p,sizes:m,alt:v,minDelta:b,maxDelta:w,snapBefore:E,snapAfter:I}=this.sashDragState;this.sashDragState.current=d;const M=d-p,P=this.resize(l,M,m,void 0,void 0,b,w,E,I);if(v){const x=l===this.sashItems.length-1,T=this.viewItems.map(U=>U.size),A=x?l:l+1,N=this.viewItems[A],F=N.size-N.maximumSize,O=N.size-N.minimumSize,W=x?l-1:l+1;this.resize(W,-P,T,void 0,void 0,F,O)}this.distributeEmptySpace(),this.layoutViews()}onSashEnd(d){this._onDidSashChange.fire(d),this.sashDragState.disposable.dispose(),this.saveProportions();for(const l of this.viewItems)l.enabled=!0}onViewChange(d,l){const p=this.viewItems.indexOf(d);p<0||p>=this.viewItems.length||(l=typeof l==\"number\"?l:d.size,l=(0,C.clamp)(l,d.minimumSize,d.maximumSize),this.inverseAltBehavior&&p>0?(this.resize(p-1,Math.floor((d.size-l)/2)),this.distributeEmptySpace(),this.layoutViews()):(d.size=l,this.relayout([p],void 0)))}resizeView(d,l){if(this.state!==h.Idle)throw new Error(\"Cant modify splitview\");if(this.state=h.Busy,d<0||d>=this.viewItems.length)return;const p=(0,S.range)(this.viewItems.length).filter(w=>w!==d),m=[...p.filter(w=>this.viewItems[w].priority===1),d],v=p.filter(w=>this.viewItems[w].priority===2),b=this.viewItems[d];l=Math.round(l),l=(0,C.clamp)(l,b.minimumSize,Math.min(b.maximumSize,this.size)),b.size=l,this.relayout(m,v),this.state=h.Idle}distributeViewSizes(){const d=[];let l=0;for(const w of this.viewItems)w.maximumSize-w.minimumSize>0&&(d.push(w),l+=w.size);const p=Math.floor(l/d.length);for(const w of d)w.size=(0,C.clamp)(p,w.minimumSize,w.maximumSize);const m=(0,S.range)(this.viewItems.length),v=m.filter(w=>this.viewItems[w].priority===1),b=m.filter(w=>this.viewItems[w].priority===2);this.relayout(v,b)}getViewSize(d){return d<0||d>=this.viewItems.length?-1:this.viewItems[d].size}doAddView(d,l,p=this.viewItems.length,m){if(this.state!==h.Idle)throw new Error(\"Cant modify splitview\");this.state=h.Busy;const v=(0,L.$)(\".split-view-view\");p===this.viewItems.length?this.viewContainer.appendChild(v):this.viewContainer.insertBefore(v,this.viewContainer.children.item(p));const b=d.onDidChange(x=>this.onViewChange(M,x)),w=(0,g.toDisposable)(()=>this.viewContainer.removeChild(v)),E=(0,g.combinedDisposable)(b,w);let I;typeof l==\"number\"?I=l:(l.type===\"auto\"&&(this.areViewsDistributed()?l={type:\"distribute\"}:l={type:\"split\",index:l.index}),l.type===\"split\"?I=this.getViewSize(l.index)/2:l.type===\"invisible\"?I={cachedVisibleSize:l.cachedVisibleSize}:I=d.minimumSize);const M=this.orientation===0?new a(v,d,I,E):new u(v,d,I,E);if(this.viewItems.splice(p,0,M),this.viewItems.length>1){const x={orthogonalStartSash:this.orthogonalStartSash,orthogonalEndSash:this.orthogonalEndSash},T=this.orientation===0?new y.Sash(this.sashContainer,{getHorizontalSashTop:Z=>this.getSashPosition(Z),getHorizontalSashWidth:this.getSashOrthogonalSize},Object.assign(Object.assign({},x),{orientation:1})):new y.Sash(this.sashContainer,{getVerticalSashLeft:Z=>this.getSashPosition(Z),getVerticalSashHeight:this.getSashOrthogonalSize},Object.assign(Object.assign({},x),{orientation:0})),A=this.orientation===0?Z=>({sash:T,start:Z.startY,current:Z.currentY,alt:Z.altKey}):Z=>({sash:T,start:Z.startX,current:Z.currentX,alt:Z.altKey}),F=_.Event.map(T.onDidStart,A)(this.onSashStart,this),W=_.Event.map(T.onDidChange,A)(this.onSashChange,this),j=_.Event.map(T.onDidEnd,()=>this.sashItems.findIndex(Z=>Z.sash===T))(this.onSashEnd,this),R=T.onDidReset(()=>{const Z=this.sashItems.findIndex(V=>V.sash===T),J=(0,S.range)(Z,-1),X=(0,S.range)(Z+1,this.viewItems.length),H=this.findFirstSnapIndex(J),B=this.findFirstSnapIndex(X);typeof H==\"number\"&&!this.viewItems[H].visible||typeof B==\"number\"&&!this.viewItems[B].visible||this._onDidSashReset.fire(Z)}),K=(0,g.combinedDisposable)(F,W,j,R,T),G={sash:T,disposable:K};this.sashItems.splice(p-1,0,G)}v.appendChild(d.element);let P;typeof l!=\"number\"&&l.type===\"split\"&&(P=[l.index]),m||this.relayout([p],P),this.state=h.Idle,!m&&typeof l!=\"number\"&&l.type===\"distribute\"&&this.distributeViewSizes()}relayout(d,l){const p=this.viewItems.reduce((m,v)=>m+v.size,0);this.resize(this.viewItems.length-1,this.size-p,void 0,d,l),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}resize(d,l,p=this.viewItems.map(M=>M.size),m,v,b=Number.NEGATIVE_INFINITY,w=Number.POSITIVE_INFINITY,E,I){if(d<0||d>=this.viewItems.length)return 0;const M=(0,S.range)(d,-1),P=(0,S.range)(d+1,this.viewItems.length);if(v)for(const G of v)(0,S.pushToStart)(M,G),(0,S.pushToStart)(P,G);if(m)for(const G of m)(0,S.pushToEnd)(M,G),(0,S.pushToEnd)(P,G);const x=M.map(G=>this.viewItems[G]),T=M.map(G=>p[G]),A=P.map(G=>this.viewItems[G]),N=P.map(G=>p[G]),F=M.reduce((G,Z)=>G+(this.viewItems[Z].minimumSize-p[Z]),0),O=M.reduce((G,Z)=>G+(this.viewItems[Z].maximumSize-p[Z]),0),W=P.length===0?Number.POSITIVE_INFINITY:P.reduce((G,Z)=>G+(p[Z]-this.viewItems[Z].minimumSize),0),U=P.length===0?Number.NEGATIVE_INFINITY:P.reduce((G,Z)=>G+(p[Z]-this.viewItems[Z].maximumSize),0),j=Math.max(F,U,b),R=Math.min(W,O,w);let K=!1;if(E){const G=this.viewItems[E.index],Z=l>=E.limitDelta;K=Z!==G.visible,G.setVisible(Z,E.size)}if(!K&&I){const G=this.viewItems[I.index],Z=l<I.limitDelta;K=Z!==G.visible,G.setVisible(Z,I.size)}if(K)return this.resize(d,l,p,m,v,b,w);l=(0,C.clamp)(l,j,R);for(let G=0,Z=l;G<x.length;G++){const J=x[G],X=(0,C.clamp)(T[G]+Z,J.minimumSize,J.maximumSize),H=X-T[G];Z-=H,J.size=X}for(let G=0,Z=l;G<A.length;G++){const J=A[G],X=(0,C.clamp)(N[G]-Z,J.minimumSize,J.maximumSize),H=X-N[G];Z+=H,J.size=X}return l}distributeEmptySpace(d){const l=this.viewItems.reduce((w,E)=>w+E.size,0);let p=this.size-l;const m=(0,S.range)(this.viewItems.length-1,-1),v=m.filter(w=>this.viewItems[w].priority===1),b=m.filter(w=>this.viewItems[w].priority===2);for(const w of b)(0,S.pushToStart)(m,w);for(const w of v)(0,S.pushToEnd)(m,w);typeof d==\"number\"&&(0,S.pushToEnd)(m,d);for(let w=0;p!==0&&w<m.length;w++){const E=this.viewItems[m[w]],I=(0,C.clamp)(E.size+p,E.minimumSize,E.maximumSize),M=I-E.size;p-=M,E.size=I}}layoutViews(){this.contentSize=this.viewItems.reduce((l,p)=>l+p.size,0);let d=0;for(const l of this.viewItems)l.layout(d,this.layoutContext),d+=l.size;this.sashItems.forEach(l=>l.sash.layout()),this.updateSashEnablement(),this.updateScrollableElement()}updateScrollableElement(){this.orientation===0?this.scrollableElement.setScrollDimensions({height:this.size,scrollHeight:this.contentSize}):this.scrollableElement.setScrollDimensions({width:this.size,scrollWidth:this.contentSize})}updateSashEnablement(){let d=!1;const l=this.viewItems.map(E=>d=E.size-E.minimumSize>0||d);d=!1;const p=this.viewItems.map(E=>d=E.maximumSize-E.size>0||d),m=[...this.viewItems].reverse();d=!1;const v=m.map(E=>d=E.size-E.minimumSize>0||d).reverse();d=!1;const b=m.map(E=>d=E.maximumSize-E.size>0||d).reverse();let w=0;for(let E=0;E<this.sashItems.length;E++){const{sash:I}=this.sashItems[E],M=this.viewItems[E];w+=M.size;const P=!(l[E]&&b[E+1]),x=!(p[E]&&v[E+1]);if(P&&x){const T=(0,S.range)(E,-1),A=(0,S.range)(E+1,this.viewItems.length),N=this.findFirstSnapIndex(T),F=this.findFirstSnapIndex(A),O=typeof N==\"number\"&&!this.viewItems[N].visible,W=typeof F==\"number\"&&!this.viewItems[F].visible;O&&v[E]&&(w>0||this.startSnappingEnabled)?I.state=1:W&&l[E]&&(w<this.contentSize||this.endSnappingEnabled)?I.state=2:I.state=0}else P&&!x?I.state=1:!P&&x?I.state=2:I.state=3}}getSashPosition(d){let l=0;for(let p=0;p<this.sashItems.length;p++)if(l+=this.viewItems[p].size,this.sashItems[p].sash===d)return l;return 0}findFirstSnapIndex(d){for(const l of d){const p=this.viewItems[l];if(p.visible&&p.snap)return l}for(const l of d){const p=this.viewItems[l];if(p.visible&&p.maximumSize-p.minimumSize>0)return;if(!p.visible&&p.snap)return l}}areViewsDistributed(){let d,l;for(const p of this.viewItems)if(d=d===void 0?p.size:Math.min(d,p.size),l=l===void 0?p.size:Math.max(l,p.size),l-d>2)return!1;return!0}dispose(){var d;(d=this.sashDragState)===null||d===void 0||d.disposable.dispose(),(0,g.dispose)(this.viewItems),this.viewItems=[],this.sashItems.forEach(l=>l.disposable.dispose()),this.sashItems=[],super.dispose()}}e.SplitView=c}),define(ne[579],se([1,0,7,114,311,6,2,410]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Table=void 0;class f{constructor(i,n,t){this.columns=i,this.getColumnSize=t,this.templateId=f.TemplateId,this.renderedTemplates=new Set;const a=new Map(n.map(u=>[u.templateId,u]));this.renderers=[];for(const u of i){const h=a.get(u.templateId);if(!h)throw new Error(`Table cell renderer for template id ${u.templateId} not found.`);this.renderers.push(h)}}renderTemplate(i){const n=(0,L.append)(i,(0,L.$)(\".monaco-table-tr\")),t=[],a=[];for(let h=0;h<this.columns.length;h++){const r=this.renderers[h],c=(0,L.append)(n,(0,L.$)(\".monaco-table-td\",{\"data-col-index\":h}));c.style.width=`${this.getColumnSize(h)}px`,t.push(c),a.push(r.renderTemplate(c))}const u={container:i,cellContainers:t,cellTemplateData:a};return this.renderedTemplates.add(u),u}renderElement(i,n,t,a){for(let u=0;u<this.columns.length;u++){const r=this.columns[u].project(i);this.renderers[u].renderElement(r,n,t.cellTemplateData[u],a)}}disposeElement(i,n,t,a){for(let u=0;u<this.columns.length;u++){const h=this.renderers[u];if(h.disposeElement){const c=this.columns[u].project(i);h.disposeElement(c,n,t.cellTemplateData[u],a)}}}disposeTemplate(i){for(let n=0;n<this.columns.length;n++)this.renderers[n].disposeTemplate(i.cellTemplateData[n]);(0,L.clearNode)(i.container),this.renderedTemplates.delete(i)}layoutColumn(i,n){for(const{cellContainers:t}of this.renderedTemplates)t[i].style.width=`${n}px`}}f.TemplateId=\"row\";function _(s){return{getHeight(i){return s.getHeight(i)},getTemplateId(){return f.TemplateId}}}class g{get minimumSize(){var i;return(i=this.column.minimumWidth)!==null&&i!==void 0?i:120}get maximumSize(){var i;return(i=this.column.maximumWidth)!==null&&i!==void 0?i:Number.POSITIVE_INFINITY}get onDidChange(){var i;return(i=this.column.onDidChangeWidthConstraints)!==null&&i!==void 0?i:D.Event.None}constructor(i,n){this.column=i,this.index=n,this._onDidLayout=new D.Emitter,this.onDidLayout=this._onDidLayout.event,this.element=(0,L.$)(\".monaco-table-th\",{\"data-col-index\":n,title:i.tooltip},i.label)}layout(i){this._onDidLayout.fire([this.index,i])}}class C{get onDidChangeFocus(){return this.list.onDidChangeFocus}get onDidChangeSelection(){return this.list.onDidChangeSelection}get onDidScroll(){return this.list.onDidScroll}get onMouseDblClick(){return this.list.onMouseDblClick}get onPointer(){return this.list.onPointer}get onDidFocus(){return this.list.onDidFocus}get scrollTop(){return this.list.scrollTop}set scrollTop(i){this.list.scrollTop=i}get scrollHeight(){return this.list.scrollHeight}get renderHeight(){return this.list.renderHeight}get onDidDispose(){return this.list.onDidDispose}constructor(i,n,t,a,u,h){this.virtualDelegate=t,this.domId=`table_id_${++C.InstanceCount}`,this.disposables=new S.DisposableStore,this.cachedWidth=0,this.cachedHeight=0,this.domNode=(0,L.append)(n,(0,L.$)(`.monaco-table.${this.domId}`));const r=a.map((d,l)=>new g(d,l)),c={size:r.reduce((d,l)=>d+l.column.weight,0),views:r.map(d=>({size:d.column.weight,view:d}))};this.splitview=this.disposables.add(new y.SplitView(this.domNode,{orientation:1,scrollbarVisibility:2,getSashOrthogonalSize:()=>this.cachedHeight,descriptor:c})),this.splitview.el.style.height=`${t.headerRowHeight}px`,this.splitview.el.style.lineHeight=`${t.headerRowHeight}px`;const o=new f(a,u,d=>this.splitview.getViewSize(d));this.list=this.disposables.add(new k.List(i,this.domNode,_(t),[o],h)),D.Event.any(...r.map(d=>d.onDidLayout))(([d,l])=>o.layoutColumn(d,l),null,this.disposables),this.splitview.onDidSashReset(d=>{const l=a.reduce((m,v)=>m+v.weight,0),p=a[d].weight/l*this.cachedWidth;this.splitview.resizeView(d,p)},null,this.disposables),this.styleElement=(0,L.createStyleSheet)(this.domNode),this.style(k.unthemedListStyles)}updateOptions(i){this.list.updateOptions(i)}splice(i,n,t=[]){this.list.splice(i,n,t)}getHTMLElement(){return this.domNode}style(i){const n=[];n.push(`.monaco-table.${this.domId} > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\ttop: ${this.virtualDelegate.headerRowHeight+1}px;\n\t\t\theight: calc(100% - ${this.virtualDelegate.headerRowHeight}px);\n\t\t}`),this.styleElement.textContent=n.join(`\n`),this.list.style(i)}getSelectedElements(){return this.list.getSelectedElements()}getSelection(){return this.list.getSelection()}getFocus(){return this.list.getFocus()}dispose(){this.disposables.dispose()}}e.Table=C,C.InstanceCount=0}),define(ne[153],se([1,0,83,26,6,411]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Toggle=e.unthemedToggleStyles=void 0,e.unthemedToggleStyles={inputActiveOptionBorder:\"#007ACC00\",inputActiveOptionForeground:\"#FFFFFF\",inputActiveOptionBackground:\"#0E639C50\"};class D extends L.Widget{constructor(f){super(),this._onChange=this._register(new y.Emitter),this.onChange=this._onChange.event,this._onKeyDown=this._register(new y.Emitter),this.onKeyDown=this._onKeyDown.event,this._opts=f,this._checked=this._opts.isChecked;const _=[\"monaco-custom-toggle\"];this._opts.icon&&(this._icon=this._opts.icon,_.push(...k.ThemeIcon.asClassNameArray(this._icon))),this._opts.actionClassName&&_.push(...this._opts.actionClassName.split(\" \")),this._checked&&_.push(\"checked\"),this.domNode=document.createElement(\"div\"),this.domNode.title=this._opts.title,this.domNode.classList.add(..._),this._opts.notFocusable||(this.domNode.tabIndex=0),this.domNode.setAttribute(\"role\",\"checkbox\"),this.domNode.setAttribute(\"aria-checked\",String(this._checked)),this.domNode.setAttribute(\"aria-label\",this._opts.title),this.applyStyles(),this.onclick(this.domNode,g=>{this.enabled&&(this.checked=!this._checked,this._onChange.fire(!1),g.preventDefault())}),this._register(this.ignoreGesture(this.domNode)),this.onkeydown(this.domNode,g=>{if(g.keyCode===10||g.keyCode===3){this.checked=!this._checked,this._onChange.fire(!0),g.preventDefault(),g.stopPropagation();return}this._onKeyDown.fire(g)})}get enabled(){return this.domNode.getAttribute(\"aria-disabled\")!==\"true\"}focus(){this.domNode.focus()}get checked(){return this._checked}set checked(f){this._checked=f,this.domNode.setAttribute(\"aria-checked\",String(this._checked)),this.domNode.classList.toggle(\"checked\",this._checked),this.applyStyles()}width(){return 2+2+2+16}applyStyles(){this.domNode&&(this.domNode.style.borderColor=this._checked&&this._opts.inputActiveOptionBorder||\"\",this.domNode.style.color=this._checked&&this._opts.inputActiveOptionForeground||\"inherit\",this.domNode.style.backgroundColor=this._checked&&this._opts.inputActiveOptionBackground||\"\")}enable(){this.domNode.setAttribute(\"aria-disabled\",String(!1))}disable(){this.domNode.setAttribute(\"aria-disabled\",String(!0))}}e.Toggle=D}),define(ne[312],se([1,0,153,25,553]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RegexToggle=e.WholeWordsToggle=e.CaseSensitiveToggle=void 0;const D=y.localize(0,null),S=y.localize(1,null),f=y.localize(2,null);class _ extends L.Toggle{constructor(i){super({icon:k.Codicon.caseSensitive,title:D+i.appendTitle,isChecked:i.isChecked,inputActiveOptionBorder:i.inputActiveOptionBorder,inputActiveOptionForeground:i.inputActiveOptionForeground,inputActiveOptionBackground:i.inputActiveOptionBackground})}}e.CaseSensitiveToggle=_;class g extends L.Toggle{constructor(i){super({icon:k.Codicon.wholeWord,title:S+i.appendTitle,isChecked:i.isChecked,inputActiveOptionBorder:i.inputActiveOptionBorder,inputActiveOptionForeground:i.inputActiveOptionForeground,inputActiveOptionBackground:i.inputActiveOptionBackground})}}e.WholeWordsToggle=g;class C extends L.Toggle{constructor(i){super({icon:k.Codicon.regex,title:f+i.appendTitle,isChecked:i.isChecked,inputActiveOptionBorder:i.inputActiveOptionBorder,inputActiveOptionForeground:i.inputActiveOptionForeground,inputActiveOptionBackground:i.inputActiveOptionBackground})}}e.RegexToggle=C}),define(ne[45],se([1,0,220,54,92,17,11,22]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DataUri=e.addTrailingPathSeparator=e.removeTrailingPathSeparator=e.hasTrailingPathSeparator=e.isEqualAuthority=e.isAbsolutePath=e.resolvePath=e.relativePath=e.normalizePath=e.joinPath=e.dirname=e.extname=e.basename=e.basenameOrAuthority=e.getComparisonKey=e.isEqualOrParent=e.isEqual=e.extUriIgnorePathCase=e.extUriBiasedIgnorePathCase=e.extUri=e.ExtUri=e.originalFSPath=void 0;function _(s){return(0,f.uriToFsPath)(s,!0)}e.originalFSPath=_;class g{constructor(i){this._ignorePathCasing=i}compare(i,n,t=!1){return i===n?0:(0,S.compare)(this.getComparisonKey(i,t),this.getComparisonKey(n,t))}isEqual(i,n,t=!1){return i===n?!0:!i||!n?!1:this.getComparisonKey(i,t)===this.getComparisonKey(n,t)}getComparisonKey(i,n=!1){return i.with({path:this._ignorePathCasing(i)?i.path.toLowerCase():void 0,fragment:n?null:void 0}).toString()}isEqualOrParent(i,n,t=!1){if(i.scheme===n.scheme){if(i.scheme===k.Schemas.file)return L.isEqualOrParent(_(i),_(n),this._ignorePathCasing(i))&&i.query===n.query&&(t||i.fragment===n.fragment);if((0,e.isEqualAuthority)(i.authority,n.authority))return L.isEqualOrParent(i.path,n.path,this._ignorePathCasing(i),\"/\")&&i.query===n.query&&(t||i.fragment===n.fragment)}return!1}joinPath(i,...n){return f.URI.joinPath(i,...n)}basenameOrAuthority(i){return(0,e.basename)(i)||i.authority}basename(i){return y.posix.basename(i.path)}extname(i){return y.posix.extname(i.path)}dirname(i){if(i.path.length===0)return i;let n;return i.scheme===k.Schemas.file?n=f.URI.file(y.dirname(_(i))).path:(n=y.posix.dirname(i.path),i.authority&&n.length&&n.charCodeAt(0)!==47&&(console.error(`dirname(\"${i.toString})) resulted in a relative path`),n=\"/\")),i.with({path:n})}normalizePath(i){if(!i.path.length)return i;let n;return i.scheme===k.Schemas.file?n=f.URI.file(y.normalize(_(i))).path:n=y.posix.normalize(i.path),i.with({path:n})}relativePath(i,n){if(i.scheme!==n.scheme||!(0,e.isEqualAuthority)(i.authority,n.authority))return;if(i.scheme===k.Schemas.file){const u=y.relative(_(i),_(n));return D.isWindows?L.toSlashes(u):u}let t=i.path||\"/\";const a=n.path||\"/\";if(this._ignorePathCasing(i)){let u=0;for(const h=Math.min(t.length,a.length);u<h&&!(t.charCodeAt(u)!==a.charCodeAt(u)&&t.charAt(u).toLowerCase()!==a.charAt(u).toLowerCase());u++);t=a.substr(0,u)+t.substr(u)}return y.posix.relative(t,a)}resolvePath(i,n){if(i.scheme===k.Schemas.file){const t=f.URI.file(y.resolve(_(i),n));return i.with({authority:t.authority,path:t.path})}return n=L.toPosixPath(n),i.with({path:y.posix.resolve(i.path,n)})}isAbsolutePath(i){return!!i.path&&i.path[0]===\"/\"}isEqualAuthority(i,n){return i===n||i!==void 0&&n!==void 0&&(0,S.equalsIgnoreCase)(i,n)}hasTrailingPathSeparator(i,n=y.sep){if(i.scheme===k.Schemas.file){const t=_(i);return t.length>L.getRoot(t).length&&t[t.length-1]===n}else{const t=i.path;return t.length>1&&t.charCodeAt(t.length-1)===47&&!/^[a-zA-Z]:(\\/$|\\\\$)/.test(i.fsPath)}}removeTrailingPathSeparator(i,n=y.sep){return(0,e.hasTrailingPathSeparator)(i,n)?i.with({path:i.path.substr(0,i.path.length-1)}):i}addTrailingPathSeparator(i,n=y.sep){let t=!1;if(i.scheme===k.Schemas.file){const a=_(i);t=a!==void 0&&a.length===L.getRoot(a).length&&a[a.length-1]===n}else{n=\"/\";const a=i.path;t=a.length===1&&a.charCodeAt(a.length-1)===47}return!t&&!(0,e.hasTrailingPathSeparator)(i,n)?i.with({path:i.path+\"/\"}):i}}e.ExtUri=g,e.extUri=new g(()=>!1),e.extUriBiasedIgnorePathCase=new g(s=>s.scheme===k.Schemas.file?!D.isLinux:!0),e.extUriIgnorePathCase=new g(s=>!0),e.isEqual=e.extUri.isEqual.bind(e.extUri),e.isEqualOrParent=e.extUri.isEqualOrParent.bind(e.extUri),e.getComparisonKey=e.extUri.getComparisonKey.bind(e.extUri),e.basenameOrAuthority=e.extUri.basenameOrAuthority.bind(e.extUri),e.basename=e.extUri.basename.bind(e.extUri),e.extname=e.extUri.extname.bind(e.extUri),e.dirname=e.extUri.dirname.bind(e.extUri),e.joinPath=e.extUri.joinPath.bind(e.extUri),e.normalizePath=e.extUri.normalizePath.bind(e.extUri),e.relativePath=e.extUri.relativePath.bind(e.extUri),e.resolvePath=e.extUri.resolvePath.bind(e.extUri),e.isAbsolutePath=e.extUri.isAbsolutePath.bind(e.extUri),e.isEqualAuthority=e.extUri.isEqualAuthority.bind(e.extUri),e.hasTrailingPathSeparator=e.extUri.hasTrailingPathSeparator.bind(e.extUri),e.removeTrailingPathSeparator=e.extUri.removeTrailingPathSeparator.bind(e.extUri),e.addTrailingPathSeparator=e.extUri.addTrailingPathSeparator.bind(e.extUri);var C;(function(s){s.META_DATA_LABEL=\"label\",s.META_DATA_DESCRIPTION=\"description\",s.META_DATA_SIZE=\"size\",s.META_DATA_MIME=\"mime\";function i(n){const t=new Map;n.path.substring(n.path.indexOf(\";\")+1,n.path.lastIndexOf(\";\")).split(\";\").forEach(h=>{const[r,c]=h.split(\":\");r&&c&&t.set(r,c)});const u=n.path.substring(0,n.path.indexOf(\";\"));return u&&t.set(s.META_DATA_MIME,u),t}s.parseMetaData=i})(C||(e.DataUri=C={}))}),define(ne[55],se([1,0,9,120,45,11,22]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.parseHrefAndDimensions=e.removeMarkdownEscapes=e.escapeDoubleQuotes=e.escapeMarkdownSyntaxTokens=e.markdownStringEqual=e.isMarkdownString=e.isEmptyMarkdownString=e.MarkdownString=void 0;class f{constructor(u=\"\",h=!1){var r,c,o;if(this.value=u,typeof this.value!=\"string\")throw(0,L.illegalArgument)(\"value\");typeof h==\"boolean\"?(this.isTrusted=h,this.supportThemeIcons=!1,this.supportHtml=!1):(this.isTrusted=(r=h.isTrusted)!==null&&r!==void 0?r:void 0,this.supportThemeIcons=(c=h.supportThemeIcons)!==null&&c!==void 0?c:!1,this.supportHtml=(o=h.supportHtml)!==null&&o!==void 0?o:!1)}appendText(u,h=0){return this.value+=s(this.supportThemeIcons?(0,k.escapeIcons)(u):u).replace(/([ \\t]+)/g,(r,c)=>\"&nbsp;\".repeat(c.length)).replace(/\\>/gm,\"\\\\>\").replace(/\\n/g,h===1?`\\\\\n`:`\n\n`),this}appendMarkdown(u){return this.value+=u,this}appendCodeblock(u,h){return this.value+=\"\\n```\",this.value+=u,this.value+=`\n`,this.value+=h,this.value+=\"\\n```\\n\",this}appendLink(u,h,r){return this.value+=\"[\",this.value+=this._escape(h,\"]\"),this.value+=\"](\",this.value+=this._escape(String(u),\")\"),r&&(this.value+=` \"${this._escape(this._escape(r,'\"'),\")\")}\"`),this.value+=\")\",this}_escape(u,h){const r=new RegExp((0,D.escapeRegExpCharacters)(h),\"g\");return u.replace(r,(c,o)=>u.charAt(o-1)!==\"\\\\\"?`\\\\${c}`:c)}}e.MarkdownString=f;function _(a){return g(a)?!a.value:Array.isArray(a)?a.every(_):!0}e.isEmptyMarkdownString=_;function g(a){return a instanceof f?!0:a&&typeof a==\"object\"?typeof a.value==\"string\"&&(typeof a.isTrusted==\"boolean\"||typeof a.isTrusted==\"object\"||a.isTrusted===void 0)&&(typeof a.supportThemeIcons==\"boolean\"||a.supportThemeIcons===void 0):!1}e.isMarkdownString=g;function C(a,u){return a===u?!0:!a||!u?!1:a.value===u.value&&a.isTrusted===u.isTrusted&&a.supportThemeIcons===u.supportThemeIcons&&a.supportHtml===u.supportHtml&&(a.baseUri===u.baseUri||!!a.baseUri&&!!u.baseUri&&(0,y.isEqual)(S.URI.from(a.baseUri),S.URI.from(u.baseUri)))}e.markdownStringEqual=C;function s(a){return a.replace(/[\\\\`*_{}[\\]()#+\\-!~]/g,\"\\\\$&\")}e.escapeMarkdownSyntaxTokens=s;function i(a){return a.replace(/\"/g,\"&quot;\")}e.escapeDoubleQuotes=i;function n(a){return a&&a.replace(/\\\\([\\\\`*_{}[\\]()#+\\-.!~])/g,\"$1\")}e.removeMarkdownEscapes=n;function t(a){const u=[],h=a.split(\"|\").map(c=>c.trim());a=h[0];const r=h[1];if(r){const c=/height=(\\d+)/.exec(r),o=/width=(\\d+)/.exec(r),d=c?c[1]:\"\",l=o?o[1]:\"\",p=isFinite(parseInt(l)),m=isFinite(parseInt(d));p&&u.push(`width=\"${l}\"`),m&&u.push(`height=\"${d}\"`)}return{href:a,dimensions:u}}e.parseHrefAndDimensions=t}),define(ne[183],se([1,0,7,304,81,305,44,60,129,9,6,55,120,164,100,2,386,221,54,47,45,11,22]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.fillInIncompleteTokens=e.renderMarkdownAsPlaintext=e.renderStringAsPlaintext=e.allowedMarkdownAttr=e.renderMarkdown=void 0;const p=Object.freeze({image:(X,H,B)=>{let V=[],Y=[];return X&&({href:X,dimensions:V}=(0,s.parseHrefAndDimensions)(X),Y.push(`src=\"${(0,s.escapeDoubleQuotes)(X)}\"`)),B&&Y.push(`alt=\"${(0,s.escapeDoubleQuotes)(B)}\"`),H&&Y.push(`title=\"${(0,s.escapeDoubleQuotes)(H)}\"`),V.length&&(Y=Y.concat(V)),\"<img \"+Y.join(\" \")+\">\"},paragraph:X=>`<p>${X}</p>`,link:(X,H,B)=>typeof X!=\"string\"?\"\":(X===B&&(B=(0,s.removeMarkdownEscapes)(B)),H=typeof H==\"string\"?(0,s.escapeDoubleQuotes)((0,s.removeMarkdownEscapes)(H)):\"\",X=(0,s.removeMarkdownEscapes)(X),X=X.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#39;\"),`<a href=\"${X}\" title=\"${H||X}\">${B}</a>`)});function m(X,H={},B={}){var V,Y;const ie=new a.DisposableStore;let ae=!1;const ce=(0,D.createElement)(H),de=function(oe){let ge;try{ge=(0,h.parse)(decodeURIComponent(oe))}catch{}return ge?(ge=(0,c.cloneAndChange)(ge,ve=>{if(X.uris&&X.uris[ve])return l.URI.revive(X.uris[ve])}),encodeURIComponent(JSON.stringify(ge))):oe},he=function(oe,ge){const ve=X.uris&&X.uris[oe];let Se=l.URI.revive(ve);return ge?oe.startsWith(r.Schemas.data+\":\")?oe:(Se||(Se=l.URI.parse(oe)),r.FileAccess.uriToBrowserUri(Se).toString(!0)):!Se||l.URI.parse(oe).toString()===Se.toString()?oe:(Se.query&&(Se=Se.with({query:de(Se.query)})),Se.toString())},ue=new u.marked.Renderer;ue.image=p.image,ue.link=p.link,ue.paragraph=p.paragraph;const te=[],q=[];if(H.codeBlockRendererSync?ue.code=(oe,ge)=>{const ve=n.defaultGenerator.nextId(),Se=H.codeBlockRendererSync(v(ge),oe);return q.push([ve,Se]),`<div class=\"code\" data-code=\"${ve}\">${(0,d.escape)(oe)}</div>`}:H.codeBlockRenderer&&(ue.code=(oe,ge)=>{const ve=n.defaultGenerator.nextId(),Se=H.codeBlockRenderer(v(ge),oe);return te.push(Se.then(Le=>[ve,Le])),`<div class=\"code\" data-code=\"${ve}\">${(0,d.escape)(oe)}</div>`}),H.actionHandler){const oe=function(Se){let Le=Se.target;if(!(Le.tagName!==\"A\"&&(Le=Le.parentElement,!Le||Le.tagName!==\"A\")))try{let De=Le.dataset.href;De&&(X.baseUri&&(De=b(l.URI.from(X.baseUri),De)),H.actionHandler.callback(De,Se))}catch(De){(0,g.onUnexpectedError)(De)}finally{Se.preventDefault()}},ge=H.actionHandler.disposables.add(new y.DomEmitter(ce,\"click\")),ve=H.actionHandler.disposables.add(new y.DomEmitter(ce,\"auxclick\"));H.actionHandler.disposables.add(C.Event.any(ge.event,ve.event)(Se=>{const Le=new f.StandardMouseEvent(Se);!Le.leftButton&&!Le.middleButton||oe(Le)})),H.actionHandler.disposables.add(L.addDisposableListener(ce,\"keydown\",Se=>{const Le=new S.StandardKeyboardEvent(Se);!Le.equals(10)&&!Le.equals(3)||oe(Le)}))}X.supportHtml||(B.sanitizer=oe=>(X.isTrusted?oe.match(/^(<span[^>]+>)|(<\\/\\s*span>)$/):void 0)?oe:\"\",B.sanitize=!0,B.silent=!0),B.renderer=ue;let z=(V=X.value)!==null&&V!==void 0?V:\"\";z.length>1e5&&(z=`${z.substr(0,1e5)}\\u2026`),X.supportThemeIcons&&(z=(0,i.markdownEscapeEscapedIcons)(z));let ee;if(H.fillInIncompleteTokens){const oe=Object.assign(Object.assign({},u.marked.defaults),B),ge=u.marked.lexer(z,oe),ve=N(ge);ee=u.marked.parser(ve,oe)}else ee=u.marked.parse(z,B);X.supportThemeIcons&&(ee=(0,_.renderLabelWithIcons)(ee).map(ge=>typeof ge==\"string\"?ge:ge.outerHTML).join(\"\"));const re=new DOMParser().parseFromString(w(X,ee),\"text/html\");if(re.body.querySelectorAll(\"img\").forEach(oe=>{const ge=oe.getAttribute(\"src\");if(ge){let ve=ge;try{X.baseUri&&(ve=b(l.URI.from(X.baseUri),ve))}catch{}oe.src=he(ve,!0)}}),re.body.querySelectorAll(\"a\").forEach(oe=>{const ge=oe.getAttribute(\"href\");if(oe.setAttribute(\"href\",\"\"),!ge||/^data:|javascript:/i.test(ge)||/^command:/i.test(ge)&&!X.isTrusted||/^command:(\\/\\/\\/)?_workbench\\.downloadResource/i.test(ge))oe.replaceWith(...oe.childNodes);else{let ve=he(ge,!1);X.baseUri&&(ve=b(l.URI.from(X.baseUri),ge)),oe.dataset.href=ve}}),ce.innerHTML=w(X,re.body.innerHTML),te.length>0)Promise.all(te).then(oe=>{var ge,ve;if(ae)return;const Se=new Map(oe),Le=ce.querySelectorAll(\"div[data-code]\");for(const De of Le){const ye=Se.get((ge=De.dataset.code)!==null&&ge!==void 0?ge:\"\");ye&&L.reset(De,ye)}(ve=H.asyncRenderCallback)===null||ve===void 0||ve.call(H)});else if(q.length>0){const oe=new Map(q),ge=ce.querySelectorAll(\"div[data-code]\");for(const ve of ge){const Se=oe.get((Y=ve.dataset.code)!==null&&Y!==void 0?Y:\"\");Se&&L.reset(ve,Se)}}if(H.asyncRenderCallback)for(const oe of ce.getElementsByTagName(\"img\")){const ge=ie.add(L.addDisposableListener(oe,\"load\",()=>{ge.dispose(),H.asyncRenderCallback()}))}return{element:ce,dispose:()=>{ae=!0,ie.dispose()}}}e.renderMarkdown=m;function v(X){if(!X)return\"\";const H=X.split(/[\\s+|:|,|\\{|\\?]/,1);return H.length?H[0]:X}function b(X,H){return/^\\w[\\w\\d+.-]*:/.test(H)?H:X.path.endsWith(\"/\")?(0,o.resolvePath)(X,H).toString():(0,o.resolvePath)((0,o.dirname)(X),H).toString()}function w(X,H){const{config:B,allowedSchemes:V}=E(X);k.addHook(\"uponSanitizeAttribute\",(ie,ae)=>{if(ae.attrName===\"style\"||ae.attrName===\"class\"){if(ie.tagName===\"SPAN\"){if(ae.attrName===\"style\"){ae.keepAttr=/^(color\\:(#[0-9a-fA-F]+|var\\(--vscode(-[a-zA-Z]+)+\\));)?(background-color\\:(#[0-9a-fA-F]+|var\\(--vscode(-[a-zA-Z]+)+\\));)?$/.test(ae.attrValue);return}else if(ae.attrName===\"class\"){ae.keepAttr=/^codicon codicon-[a-z\\-]+( codicon-modifier-[a-z\\-]+)?$/.test(ae.attrValue);return}}ae.keepAttr=!1;return}});const Y=L.hookDomPurifyHrefAndSrcSanitizer(V);try{return k.sanitize(H,Object.assign(Object.assign({},B),{RETURN_TRUSTED_TYPE:!0}))}finally{k.removeHook(\"uponSanitizeAttribute\"),Y.dispose()}}e.allowedMarkdownAttr=[\"align\",\"autoplay\",\"alt\",\"class\",\"controls\",\"data-code\",\"data-href\",\"height\",\"href\",\"loop\",\"muted\",\"playsinline\",\"poster\",\"src\",\"style\",\"target\",\"title\",\"width\",\"start\"];function E(X){const H=[r.Schemas.http,r.Schemas.https,r.Schemas.mailto,r.Schemas.data,r.Schemas.file,r.Schemas.vscodeFileResource,r.Schemas.vscodeRemote,r.Schemas.vscodeRemoteResource];return X.isTrusted&&H.push(r.Schemas.command),{config:{ALLOWED_TAGS:[...L.basicMarkupHtmlTags],ALLOWED_ATTR:e.allowedMarkdownAttr,ALLOW_UNKNOWN_PROTOCOLS:!0},allowedSchemes:H}}function I(X){return typeof X==\"string\"?X:M(X)}e.renderStringAsPlaintext=I;function M(X){var H;let B=(H=X.value)!==null&&H!==void 0?H:\"\";B.length>1e5&&(B=`${B.substr(0,1e5)}\\u2026`);const V=u.marked.parse(B,{renderer:x.value}).replace(/&(#\\d+|[a-zA-Z]+);/g,Y=>{var ie;return(ie=P.get(Y))!==null&&ie!==void 0?ie:Y});return w({isTrusted:!1},V).toString()}e.renderMarkdownAsPlaintext=M;const P=new Map([[\"&quot;\",'\"'],[\"&nbsp;\",\" \"],[\"&amp;\",\"&\"],[\"&#39;\",\"'\"],[\"&lt;\",\"<\"],[\"&gt;\",\">\"]]),x=new t.Lazy(()=>{const X=new u.marked.Renderer;return X.code=H=>H,X.blockquote=H=>H,X.html=H=>\"\",X.heading=(H,B,V)=>H+`\n`,X.hr=()=>\"\",X.list=(H,B)=>H,X.listitem=H=>H+`\n`,X.paragraph=H=>H+`\n`,X.table=(H,B)=>H+B+`\n`,X.tablerow=H=>H,X.tablecell=(H,B)=>H+\" \",X.strong=H=>H,X.em=H=>H,X.codespan=H=>H,X.br=()=>`\n`,X.del=H=>H,X.image=(H,B,V)=>\"\",X.text=H=>H,X.link=(H,B,V)=>V,X});function T(X){let H=\"\";return X.forEach(B=>{H+=B.raw}),H}function A(X){for(const H of X.tokens)if(H.type===\"text\"){const B=H.raw.split(`\n`),V=B[B.length-1];if(V.includes(\"`\"))return O(X);if(V.includes(\"**\"))return K(X);if(V.match(/\\*\\w/))return W(X);if(V.match(/(^|\\s)__\\w/))return G(X);if(V.match(/(^|\\s)_\\w/))return U(X);if(V.match(/(^|\\s)\\[.*\\]\\(\\w*/))return j(X);if(V.match(/(^|\\s)\\[\\w/))return R(X)}}function N(X){let H,B;for(H=0;H<X.length;H++){const V=X[H];if(V.type===\"paragraph\"&&V.raw.match(/(\\n|^)```/)){B=F(X.slice(H));break}if(V.type===\"paragraph\"&&V.raw.match(/(\\n|^)\\|/)){B=J(X.slice(H));break}if(H===X.length-1&&V.type===\"paragraph\"){const Y=A(V);if(Y){B=[Y];break}}}if(B){const V=[...X.slice(0,H),...B];return V.links=X.links,V}return X}e.fillInIncompleteTokens=N;function F(X){const H=T(X);return u.marked.lexer(H+\"\\n```\")}function O(X){return Z(X,\"`\")}function W(X){return Z(X,\"*\")}function U(X){return Z(X,\"_\")}function j(X){return Z(X,\")\")}function R(X){return Z(X,\"](about:blank)\")}function K(X){return Z(X,\"**\")}function G(X){return Z(X,\"__\")}function Z(X,H){const B=T(Array.isArray(X)?X:[X]);return u.marked.lexer(B+H)[0]}function J(X){const H=T(X),B=H.split(`\n`);let V,Y=!1;for(let ie=0;ie<B.length;ie++){const ae=B[ie].trim();if(typeof V>\"u\"&&ae.match(/^\\s*\\|/)){const ce=ae.match(/(\\|[^\\|]+)(?=\\||$)/g);ce&&(V=ce.length)}else if(typeof V==\"number\")if(ae.match(/^\\s*\\|/)){if(ie!==B.length-1)return;Y=!0}else return}if(typeof V==\"number\"&&V>0){const ie=Y?B.slice(0,-1).join(`\n`):H,ae=!!ie.match(/\\|\\s*$/),ce=ie+(ae?\"\":\"|\")+`\n|${\" --- |\".repeat(V)}`;return u.marked.lexer(ce)}}}),define(ne[313],se([1,0,7,304,44,183,61,129,38,6,55,2,394]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Button=e.unthemedButtonStyles=void 0,e.unthemedButtonStyles={buttonBackground:\"#0E639C\",buttonHoverBackground:\"#006BB3\",buttonSeparator:_.Color.white.toString(),buttonForeground:_.Color.white.toString(),buttonBorder:void 0,buttonSecondaryBackground:void 0,buttonSecondaryForeground:void 0,buttonSecondaryHoverBackground:void 0};class i extends s.Disposable{get onDidClick(){return this._onDidClick.event}constructor(t,a){super(),this._label=\"\",this._onDidClick=this._register(new g.Emitter),this.options=a,this._element=document.createElement(\"a\"),this._element.classList.add(\"monaco-button\"),this._element.tabIndex=0,this._element.setAttribute(\"role\",\"button\"),this._element.classList.toggle(\"secondary\",!!a.secondary);const u=a.secondary?a.buttonSecondaryBackground:a.buttonBackground,h=a.secondary?a.buttonSecondaryForeground:a.buttonForeground;this._element.style.color=h||\"\",this._element.style.backgroundColor=u||\"\",a.supportShortLabel&&(this._labelShortElement=document.createElement(\"div\"),this._labelShortElement.classList.add(\"monaco-button-label-short\"),this._element.appendChild(this._labelShortElement),this._labelElement=document.createElement(\"div\"),this._labelElement.classList.add(\"monaco-button-label\"),this._element.appendChild(this._labelElement),this._element.classList.add(\"monaco-text-button-with-short-label\")),t.appendChild(this._element),this._register(S.Gesture.addTarget(this._element)),[L.EventType.CLICK,S.EventType.Tap].forEach(r=>{this._register((0,L.addDisposableListener)(this._element,r,c=>{if(!this.enabled){L.EventHelper.stop(c);return}this._onDidClick.fire(c)}))}),this._register((0,L.addDisposableListener)(this._element,L.EventType.KEY_DOWN,r=>{const c=new y.StandardKeyboardEvent(r);let o=!1;this.enabled&&(c.equals(3)||c.equals(10))?(this._onDidClick.fire(r),o=!0):c.equals(9)&&(this._element.blur(),o=!0),o&&L.EventHelper.stop(c,!0)})),this._register((0,L.addDisposableListener)(this._element,L.EventType.MOUSE_OVER,r=>{this._element.classList.contains(\"disabled\")||this.updateBackground(!0)})),this._register((0,L.addDisposableListener)(this._element,L.EventType.MOUSE_OUT,r=>{this.updateBackground(!1)})),this.focusTracker=this._register((0,L.trackFocus)(this._element)),this._register(this.focusTracker.onDidFocus(()=>{this.enabled&&this.updateBackground(!0)})),this._register(this.focusTracker.onDidBlur(()=>{this.enabled&&this.updateBackground(!1)}))}dispose(){super.dispose(),this._element.remove()}getContentElements(t){const a=[];for(let u of(0,f.renderLabelWithIcons)(t))if(typeof u==\"string\"){if(u=u.trim(),u===\"\")continue;const h=document.createElement(\"span\");h.textContent=u,a.push(h)}else a.push(u);return a}updateBackground(t){let a;this.options.secondary?a=t?this.options.buttonSecondaryHoverBackground:this.options.buttonSecondaryBackground:a=t?this.options.buttonHoverBackground:this.options.buttonBackground,a&&(this._element.style.backgroundColor=a)}get element(){return this._element}set label(t){var a;if(this._label===t||(0,C.isMarkdownString)(this._label)&&(0,C.isMarkdownString)(t)&&(0,C.markdownStringEqual)(this._label,t))return;this._element.classList.add(\"monaco-text-button\");const u=this.options.supportShortLabel?this._labelElement:this._element;if((0,C.isMarkdownString)(t)){const h=(0,D.renderMarkdown)(t,{inline:!0});h.dispose();const r=(a=h.element.querySelector(\"p\"))===null||a===void 0?void 0:a.innerHTML;if(r){const c=(0,k.sanitize)(r,{ADD_TAGS:[\"b\",\"i\",\"u\",\"code\",\"span\"],ALLOWED_ATTR:[\"class\"],RETURN_TRUSTED_TYPE:!0});u.innerHTML=c}else(0,L.reset)(u)}else this.options.supportIcons?(0,L.reset)(u,...this.getContentElements(t)):u.textContent=t;typeof this.options.title==\"string\"?this._element.title=this.options.title:this.options.title&&(this._element.title=(0,D.renderStringAsPlaintext)(t)),this._label=t}get label(){return this._label}set enabled(t){t?(this._element.classList.remove(\"disabled\"),this._element.setAttribute(\"aria-disabled\",String(!1)),this._element.tabIndex=0):(this._element.classList.add(\"disabled\"),this._element.setAttribute(\"aria-disabled\",String(!0)))}get enabled(){return!this._element.classList.contains(\"disabled\")}}e.Button=i}),define(ne[314],se([1,0,7,13,19,55,120,2,20,556]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.setupCustomHover=e.setupNativeHover=void 0;function C(n,t){(0,_.isString)(t)?n.title=(0,S.stripIcons)(t):t?.markdownNotSupportedFallback?n.title=t.markdownNotSupportedFallback:n.removeAttribute(\"title\")}e.setupNativeHover=C;class s{constructor(t,a,u){this.hoverDelegate=t,this.target=a,this.fadeInAnimation=u}update(t,a,u){var h;return we(this,void 0,void 0,function*(){if(this._cancellationTokenSource&&(this._cancellationTokenSource.dispose(!0),this._cancellationTokenSource=void 0),this.isDisposed)return;let r;if(t===void 0||(0,_.isString)(t)||t instanceof HTMLElement)r=t;else if(!(0,_.isFunction)(t.markdown))r=(h=t.markdown)!==null&&h!==void 0?h:t.markdownNotSupportedFallback;else{this._hoverWidget||this.show((0,g.localize)(0,null),a),this._cancellationTokenSource=new y.CancellationTokenSource;const c=this._cancellationTokenSource.token;if(r=yield t.markdown(c),r===void 0&&(r=t.markdownNotSupportedFallback),this.isDisposed||c.isCancellationRequested)return}this.show(r,a,u)})}show(t,a,u){const h=this._hoverWidget;if(this.hasContent(t)){const r=Object.assign({content:t,target:this.target,showPointer:this.hoverDelegate.placement===\"element\",hoverPosition:2,skipFadeInAnimation:!this.fadeInAnimation||!!h},u);this._hoverWidget=this.hoverDelegate.showHover(r,a)}h?.dispose()}hasContent(t){return t?(0,D.isMarkdownString)(t)?!!t.value:!0:!1}get isDisposed(){var t;return(t=this._hoverWidget)===null||t===void 0?void 0:t.isDisposed}dispose(){var t,a;(t=this._hoverWidget)===null||t===void 0||t.dispose(),(a=this._cancellationTokenSource)===null||a===void 0||a.dispose(!0),this._cancellationTokenSource=void 0}}function i(n,t,a,u){let h,r;const c=(m,v)=>{var b;const w=r!==void 0;m&&(r?.dispose(),r=void 0),v&&(h?.dispose(),h=void 0),w&&((b=n.onDidHideHover)===null||b===void 0||b.call(n))},o=(m,v,b)=>new k.TimeoutTimer(()=>we(this,void 0,void 0,function*(){(!r||r.isDisposed)&&(r=new s(n,b||t,m>0),yield r.update(a,v,u))}),m),d=()=>{if(h)return;const m=new f.DisposableStore,v=E=>c(!1,E.fromElement===t);m.add(L.addDisposableListener(t,L.EventType.MOUSE_LEAVE,v,!0));const b=()=>c(!0,!0);m.add(L.addDisposableListener(t,L.EventType.MOUSE_DOWN,b,!0));const w={targetElements:[t],dispose:()=>{}};if(n.placement===void 0||n.placement===\"mouse\"){const E=I=>{w.x=I.x+10,I.target instanceof HTMLElement&&I.target.classList.contains(\"action-label\")&&c(!0,!0)};m.add(L.addDisposableListener(t,L.EventType.MOUSE_MOVE,E,!0))}m.add(o(n.delay,!1,w)),h=m},l=L.addDisposableListener(t,L.EventType.MOUSE_OVER,d,!0);return{show:m=>{c(!1,!0),o(0,m)},hide:()=>{c(!0,!0)},update:(m,v)=>we(this,void 0,void 0,function*(){a=m,yield r?.update(a,void 0,v)}),dispose:()=>{l.dispose(),c(!0,!0)}}}e.setupCustomHover=i}),define(ne[226],se([1,0,7,308,314,2,47,166,400]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IconLabel=void 0;class _{constructor(t){this._element=t}get element(){return this._element}set textContent(t){this.disposed||t===this._textContent||(this._textContent=t,this._element.textContent=t)}set className(t){this.disposed||t===this._className||(this._className=t,this._element.className=t)}set empty(t){this.disposed||t===this._empty||(this._empty=t,this._element.style.marginLeft=t?\"0\":\"\")}dispose(){this.disposed=!0}}class g extends D.Disposable{constructor(t,a){super(),this.customHovers=new Map,this.creationOptions=a,this.domNode=this._register(new _(L.append(t,L.$(\".monaco-icon-label\")))),this.labelContainer=L.append(this.domNode.element,L.$(\".monaco-icon-label-container\"));const u=L.append(this.labelContainer,L.$(\"span.monaco-icon-name-container\"));a?.supportHighlights||a?.supportIcons?this.nameNode=new i(u,!!a.supportIcons):this.nameNode=new C(u),this.hoverDelegate=a?.hoverDelegate}get element(){return this.domNode.element}setLabel(t,a,u){const h=[\"monaco-icon-label\"],r=[\"monaco-icon-label-container\"];let c=\"\";if(u&&(u.extraClasses&&h.push(...u.extraClasses),u.italic&&h.push(\"italic\"),u.strikethrough&&h.push(\"strikethrough\"),u.disabledCommand&&r.push(\"disabled\"),u.title&&(c+=u.title)),this.domNode.className=h.join(\" \"),this.domNode.element.setAttribute(\"aria-label\",c),this.labelContainer.className=r.join(\" \"),this.setupHover(u?.descriptionTitle?this.labelContainer:this.element,u?.title),this.nameNode.setLabel(t,u),a||this.descriptionNode){const o=this.getOrCreateDescriptionNode();o instanceof k.HighlightedLabel?(o.set(a||\"\",u?u.descriptionMatches:void 0,void 0,u?.labelEscapeNewLines),this.setupHover(o.element,u?.descriptionTitle)):(o.textContent=a&&u?.labelEscapeNewLines?k.HighlightedLabel.escapeNewLines(a,[]):a||\"\",this.setupHover(o.element,u?.descriptionTitle||\"\"),o.empty=!a)}}setupHover(t,a){const u=this.customHovers.get(t);if(u&&(u.dispose(),this.customHovers.delete(t)),!a){t.removeAttribute(\"title\");return}if(!this.hoverDelegate)(0,y.setupNativeHover)(t,a);else{const h=(0,y.setupCustomHover)(this.hoverDelegate,t,a);h&&this.customHovers.set(t,h)}}dispose(){super.dispose();for(const t of this.customHovers.values())t.dispose();this.customHovers.clear()}getOrCreateDescriptionNode(){var t;if(!this.descriptionNode){const a=this._register(new _(L.append(this.labelContainer,L.$(\"span.monaco-icon-description-container\"))));!((t=this.creationOptions)===null||t===void 0)&&t.supportDescriptionHighlights?this.descriptionNode=new k.HighlightedLabel(L.append(a.element,L.$(\"span.label-description\")),{supportIcons:!!this.creationOptions.supportIcons}):this.descriptionNode=this._register(new _(L.append(a.element,L.$(\"span.label-description\"))))}return this.descriptionNode}}e.IconLabel=g;class C{constructor(t){this.container=t,this.label=void 0,this.singleLabel=void 0}setLabel(t,a){if(!(this.label===t&&(0,S.equals)(this.options,a)))if(this.label=t,this.options=a,typeof t==\"string\")this.singleLabel||(this.container.innerText=\"\",this.container.classList.remove(\"multiple\"),this.singleLabel=L.append(this.container,L.$(\"a.label-name\",{id:a?.domId}))),this.singleLabel.textContent=t;else{this.container.innerText=\"\",this.container.classList.add(\"multiple\"),this.singleLabel=void 0;for(let u=0;u<t.length;u++){const h=t[u],r=a?.domId&&`${a?.domId}_${u}`;L.append(this.container,L.$(\"a.label-name\",{id:r,\"data-icon-label-count\":t.length,\"data-icon-label-index\":u,role:\"treeitem\"},h)),u<t.length-1&&L.append(this.container,L.$(\"span.label-separator\",void 0,a?.separator||\"/\"))}}}}function s(n,t,a){if(!a)return;let u=0;return n.map(h=>{const r={start:u,end:u+h.length},c=a.map(o=>f.Range.intersect(r,o)).filter(o=>!f.Range.isEmpty(o)).map(({start:o,end:d})=>({start:o-u,end:d-u}));return u=r.end+t.length,c})}class i{constructor(t,a){this.container=t,this.supportIcons=a,this.label=void 0,this.singleLabel=void 0}setLabel(t,a){if(!(this.label===t&&(0,S.equals)(this.options,a)))if(this.label=t,this.options=a,typeof t==\"string\")this.singleLabel||(this.container.innerText=\"\",this.container.classList.remove(\"multiple\"),this.singleLabel=new k.HighlightedLabel(L.append(this.container,L.$(\"a.label-name\",{id:a?.domId})),{supportIcons:this.supportIcons})),this.singleLabel.set(t,a?.matches,void 0,a?.labelEscapeNewLines);else{this.container.innerText=\"\",this.container.classList.add(\"multiple\"),this.singleLabel=void 0;const u=a?.separator||\"/\",h=s(t,u,a?.matches);for(let r=0;r<t.length;r++){const c=t[r],o=h?h[r]:void 0,d=a?.domId&&`${a?.domId}_${r}`,l=L.$(\"a.label-name\",{id:d,\"data-icon-label-count\":t.length,\"data-icon-label-index\":r,role:\"treeitem\"});new k.HighlightedLabel(L.append(this.container,l),{supportIcons:this.supportIcons}).set(c,o,void 0,a?.labelEscapeNewLines),r<t.length-1&&L.append(l,L.$(\"span.label-separator\",void 0,u))}}}}}),define(ne[580],se([1,0,7,81,44,183,114,14,6,63,2,17,559,408]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SelectBoxList=void 0;const n=L.$,t=\"selectOption.entry.template\";class a{get templateId(){return t}renderTemplate(r){const c=Object.create(null);return c.root=r,c.text=L.append(r,n(\".option-text\")),c.detail=L.append(r,n(\".option-detail\")),c.decoratorRight=L.append(r,n(\".option-decorator-right\")),c}renderElement(r,c,o){const d=o,l=r.text,p=r.detail,m=r.decoratorRight,v=r.isDisabled;d.text.textContent=l,d.detail.textContent=p||\"\",d.decoratorRight.innerText=m||\"\",v?d.root.classList.add(\"option-disabled\"):d.root.classList.remove(\"option-disabled\")}disposeTemplate(r){}}class u extends C.Disposable{constructor(r,c,o,d,l){super(),this.options=[],this._currentSelection=0,this._hasDetails=!1,this._skipLayout=!1,this._sticky=!1,this._isVisible=!1,this.styles=d,this.selectBoxOptions=l||Object.create(null),typeof this.selectBoxOptions.minBottomMargin!=\"number\"?this.selectBoxOptions.minBottomMargin=u.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN:this.selectBoxOptions.minBottomMargin<0&&(this.selectBoxOptions.minBottomMargin=0),this.selectElement=document.createElement(\"select\"),this.selectElement.className=\"monaco-select-box monaco-select-box-dropdown-padding\",typeof this.selectBoxOptions.ariaLabel==\"string\"&&this.selectElement.setAttribute(\"aria-label\",this.selectBoxOptions.ariaLabel),typeof this.selectBoxOptions.ariaDescription==\"string\"&&this.selectElement.setAttribute(\"aria-description\",this.selectBoxOptions.ariaDescription),this._onDidSelect=new _.Emitter,this._register(this._onDidSelect),this.registerListeners(),this.constructSelectDropDown(o),this.selected=c||0,r&&this.setOptions(r,c),this.initStyleSheet()}getHeight(){return 22}getTemplateId(){return t}constructSelectDropDown(r){this.contextViewProvider=r,this.selectDropDownContainer=L.$(\".monaco-select-box-dropdown-container\"),this.selectDropDownContainer.classList.add(\"monaco-select-box-dropdown-padding\"),this.selectionDetailsPane=L.append(this.selectDropDownContainer,n(\".select-box-details-pane\"));const c=L.append(this.selectDropDownContainer,n(\".select-box-dropdown-container-width-control\")),o=L.append(c,n(\".width-control-div\"));this.widthControlElement=document.createElement(\"span\"),this.widthControlElement.className=\"option-text-width-control\",L.append(o,this.widthControlElement),this._dropDownPosition=0,this.styleElement=L.createStyleSheet(this.selectDropDownContainer),this.selectDropDownContainer.setAttribute(\"draggable\",\"true\"),this._register(L.addDisposableListener(this.selectDropDownContainer,L.EventType.DRAG_START,d=>{L.EventHelper.stop(d,!0)}))}registerListeners(){this._register(L.addStandardDisposableListener(this.selectElement,\"change\",c=>{this.selected=c.target.selectedIndex,this._onDidSelect.fire({index:c.target.selectedIndex,selected:c.target.value}),this.options[this.selected]&&this.options[this.selected].text&&(this.selectElement.title=this.options[this.selected].text)})),this._register(L.addDisposableListener(this.selectElement,L.EventType.CLICK,c=>{L.EventHelper.stop(c),this._isVisible?this.hideSelectDropDown(!0):this.showSelectDropDown()})),this._register(L.addDisposableListener(this.selectElement,L.EventType.MOUSE_DOWN,c=>{L.EventHelper.stop(c)}));let r;this._register(L.addDisposableListener(this.selectElement,\"touchstart\",c=>{r=this._isVisible})),this._register(L.addDisposableListener(this.selectElement,\"touchend\",c=>{L.EventHelper.stop(c),r?this.hideSelectDropDown(!0):this.showSelectDropDown()})),this._register(L.addDisposableListener(this.selectElement,L.EventType.KEY_DOWN,c=>{const o=new y.StandardKeyboardEvent(c);let d=!1;s.isMacintosh?(o.keyCode===18||o.keyCode===16||o.keyCode===10||o.keyCode===3)&&(d=!0):(o.keyCode===18&&o.altKey||o.keyCode===16&&o.altKey||o.keyCode===10||o.keyCode===3)&&(d=!0),d&&(this.showSelectDropDown(),L.EventHelper.stop(c,!0))}))}get onDidSelect(){return this._onDidSelect.event}setOptions(r,c){f.equals(this.options,r)||(this.options=r,this.selectElement.options.length=0,this._hasDetails=!1,this._cachedMaxDetailsHeight=void 0,this.options.forEach((o,d)=>{this.selectElement.add(this.createOption(o.text,d,o.isDisabled)),typeof o.description==\"string\"&&(this._hasDetails=!0)})),c!==void 0&&(this.select(c),this._currentSelection=this.selected)}setOptionsList(){var r;(r=this.selectList)===null||r===void 0||r.splice(0,this.selectList.length,this.options)}select(r){r>=0&&r<this.options.length?this.selected=r:r>this.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.options[this.selected]&&this.options[this.selected].text&&(this.selectElement.title=this.options[this.selected].text)}focus(){this.selectElement&&(this.selectElement.tabIndex=0,this.selectElement.focus())}blur(){this.selectElement&&(this.selectElement.tabIndex=-1,this.selectElement.blur())}setFocusable(r){this.selectElement.tabIndex=r?0:-1}render(r){this.container=r,r.classList.add(\"select-container\"),r.appendChild(this.selectElement),this.styleSelectElement()}initStyleSheet(){const r=[];this.styles.listFocusBackground&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { background-color: ${this.styles.listFocusBackground} !important; }`),this.styles.listFocusForeground&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { color: ${this.styles.listFocusForeground} !important; }`),this.styles.decoratorRightForeground&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.focused) .option-decorator-right { color: ${this.styles.decoratorRightForeground}; }`),this.styles.selectBackground&&this.styles.selectBorder&&this.styles.selectBorder!==this.styles.selectBackground?(r.push(`.monaco-select-box-dropdown-container { border: 1px solid ${this.styles.selectBorder} } `),r.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectBorder} } `),r.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectBorder} } `)):this.styles.selectListBorder&&(r.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectListBorder} } `),r.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectListBorder} } `)),this.styles.listHoverForeground&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { color: ${this.styles.listHoverForeground} !important; }`),this.styles.listHoverBackground&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { background-color: ${this.styles.listHoverBackground} !important; }`),this.styles.listFocusOutline&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { outline: 1.6px dotted ${this.styles.listFocusOutline} !important; outline-offset: -1.6px !important; }`),this.styles.listHoverOutline&&r.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { outline: 1.6px dashed ${this.styles.listHoverOutline} !important; outline-offset: -1.6px !important; }`),r.push(\".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled.focused { background-color: transparent !important; color: inherit !important; outline: none !important; }\"),r.push(\".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled:hover { background-color: transparent !important; color: inherit !important; outline: none !important; }\"),this.styleElement.textContent=r.join(`\n`)}styleSelectElement(){var r,c,o;const d=(r=this.styles.selectBackground)!==null&&r!==void 0?r:\"\",l=(c=this.styles.selectForeground)!==null&&c!==void 0?c:\"\",p=(o=this.styles.selectBorder)!==null&&o!==void 0?o:\"\";this.selectElement.style.backgroundColor=d,this.selectElement.style.color=l,this.selectElement.style.borderColor=p}styleList(){var r,c;const o=(r=this.styles.selectBackground)!==null&&r!==void 0?r:\"\",d=L.asCssValueWithDefault(this.styles.selectListBackground,o);this.selectDropDownListContainer.style.backgroundColor=d,this.selectionDetailsPane.style.backgroundColor=d;const l=(c=this.styles.focusBorder)!==null&&c!==void 0?c:\"\";this.selectDropDownContainer.style.outlineColor=l,this.selectDropDownContainer.style.outlineOffset=\"-1px\",this.selectList.style(this.styles)}createOption(r,c,o){const d=document.createElement(\"option\");return d.value=r,d.text=r,d.disabled=!!o,d}showSelectDropDown(){this.selectionDetailsPane.innerText=\"\",!(!this.contextViewProvider||this._isVisible)&&(this.createSelectList(this.selectDropDownContainer),this.setOptionsList(),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:r=>this.renderSelectDropDown(r,!0),layout:()=>{this.layoutSelectDropDown()},onHide:()=>{this.selectDropDownContainer.classList.remove(\"visible\"),this.selectElement.classList.remove(\"synthetic-focus\")},anchorPosition:this._dropDownPosition},this.selectBoxOptions.optionsAsChildren?this.container:void 0),this._isVisible=!0,this.hideSelectDropDown(!1),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:r=>this.renderSelectDropDown(r),layout:()=>this.layoutSelectDropDown(),onHide:()=>{this.selectDropDownContainer.classList.remove(\"visible\"),this.selectElement.classList.remove(\"synthetic-focus\")},anchorPosition:this._dropDownPosition},this.selectBoxOptions.optionsAsChildren?this.container:void 0),this._currentSelection=this.selected,this._isVisible=!0,this.selectElement.setAttribute(\"aria-expanded\",\"true\"))}hideSelectDropDown(r){!this.contextViewProvider||!this._isVisible||(this._isVisible=!1,this.selectElement.setAttribute(\"aria-expanded\",\"false\"),r&&this.selectElement.focus(),this.contextViewProvider.hideContextView())}renderSelectDropDown(r,c){return r.appendChild(this.selectDropDownContainer),this.layoutSelectDropDown(c),{dispose:()=>{try{r.removeChild(this.selectDropDownContainer)}catch{}}}}measureMaxDetailsHeight(){let r=0;return this.options.forEach((c,o)=>{this.updateDetail(o),this.selectionDetailsPane.offsetHeight>r&&(r=this.selectionDetailsPane.offsetHeight)}),r}layoutSelectDropDown(r){if(this._skipLayout)return!1;if(this.selectList){this.selectDropDownContainer.classList.add(\"visible\");const c=L.getDomNodePagePosition(this.selectElement),o=getComputedStyle(this.selectElement),d=parseFloat(o.getPropertyValue(\"--dropdown-padding-top\"))+parseFloat(o.getPropertyValue(\"--dropdown-padding-bottom\")),l=window.innerHeight-c.top-c.height-(this.selectBoxOptions.minBottomMargin||0),p=c.top-u.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN,m=this.selectElement.offsetWidth,v=this.setWidthControlElement(this.widthControlElement),b=Math.max(v,Math.round(m)).toString()+\"px\";this.selectDropDownContainer.style.width=b,this.selectList.getHTMLElement().style.height=\"\",this.selectList.layout();let w=this.selectList.contentHeight;this._hasDetails&&this._cachedMaxDetailsHeight===void 0&&(this._cachedMaxDetailsHeight=this.measureMaxDetailsHeight());const E=this._hasDetails?this._cachedMaxDetailsHeight:0,I=w+d+E,M=Math.floor((l-d-E)/this.getHeight()),P=Math.floor((p-d-E)/this.getHeight());if(r)return c.top+c.height>window.innerHeight-22||c.top<u.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN||M<1&&P<1?!1:(M<u.DEFAULT_MINIMUM_VISIBLE_OPTIONS&&P>M&&this.options.length>M?(this._dropDownPosition=1,this.selectDropDownContainer.removeChild(this.selectDropDownListContainer),this.selectDropDownContainer.removeChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectDropDownListContainer),this.selectionDetailsPane.classList.remove(\"border-top\"),this.selectionDetailsPane.classList.add(\"border-bottom\")):(this._dropDownPosition=0,this.selectDropDownContainer.removeChild(this.selectDropDownListContainer),this.selectDropDownContainer.removeChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectDropDownListContainer),this.selectDropDownContainer.appendChild(this.selectionDetailsPane),this.selectionDetailsPane.classList.remove(\"border-bottom\"),this.selectionDetailsPane.classList.add(\"border-top\")),!0);if(c.top+c.height>window.innerHeight-22||c.top<u.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN||this._dropDownPosition===0&&M<1||this._dropDownPosition===1&&P<1)return this.hideSelectDropDown(!0),!1;if(this._dropDownPosition===0){if(this._isVisible&&M+P<1)return this.hideSelectDropDown(!0),!1;I>l&&(w=M*this.getHeight())}else I>p&&(w=P*this.getHeight());return this.selectList.layout(w),this.selectList.domFocus(),this.selectList.length>0&&(this.selectList.setFocus([this.selected||0]),this.selectList.reveal(this.selectList.getFocus()[0]||0)),this._hasDetails?(this.selectList.getHTMLElement().style.height=w+d+\"px\",this.selectDropDownContainer.style.height=\"\"):this.selectDropDownContainer.style.height=w+d+\"px\",this.updateDetail(this.selected),this.selectDropDownContainer.style.width=b,this.selectDropDownListContainer.setAttribute(\"tabindex\",\"0\"),this.selectElement.classList.add(\"synthetic-focus\"),this.selectDropDownContainer.classList.add(\"synthetic-focus\"),!0}else return!1}setWidthControlElement(r){let c=0;if(r){let o=0,d=0;this.options.forEach((l,p)=>{const m=l.detail?l.detail.length:0,v=l.decoratorRight?l.decoratorRight.length:0,b=l.text.length+m+v;b>d&&(o=p,d=b)}),r.textContent=this.options[o].text+(this.options[o].decoratorRight?this.options[o].decoratorRight+\" \":\"\"),c=L.getTotalWidth(r)}return c}createSelectList(r){if(this.selectList)return;this.selectDropDownListContainer=L.append(r,n(\".select-box-dropdown-list-container\")),this.listRenderer=new a,this.selectList=new S.List(\"SelectBoxCustom\",this.selectDropDownListContainer,this,[this.listRenderer],{useShadows:!1,verticalScrollMode:3,keyboardSupport:!1,mouseSupport:!1,accessibilityProvider:{getAriaLabel:d=>{let l=d.text;return d.detail&&(l+=`. ${d.detail}`),d.decoratorRight&&(l+=`. ${d.decoratorRight}`),d.description&&(l+=`. ${d.description}`),l},getWidgetAriaLabel:()=>(0,i.localize)(0,null),getRole:()=>s.isMacintosh?\"\":\"option\",getWidgetRole:()=>\"listbox\"}}),this.selectBoxOptions.ariaLabel&&(this.selectList.ariaLabel=this.selectBoxOptions.ariaLabel);const c=this._register(new k.DomEmitter(this.selectDropDownListContainer,\"keydown\")),o=_.Event.chain(c.event).filter(()=>this.selectList.length>0).map(d=>new y.StandardKeyboardEvent(d));this._register(o.filter(d=>d.keyCode===3).on(d=>this.onEnter(d),this)),this._register(o.filter(d=>d.keyCode===2).on(d=>this.onEnter(d),this)),this._register(o.filter(d=>d.keyCode===9).on(d=>this.onEscape(d),this)),this._register(o.filter(d=>d.keyCode===16).on(d=>this.onUpArrow(d),this)),this._register(o.filter(d=>d.keyCode===18).on(d=>this.onDownArrow(d),this)),this._register(o.filter(d=>d.keyCode===12).on(this.onPageDown,this)),this._register(o.filter(d=>d.keyCode===11).on(this.onPageUp,this)),this._register(o.filter(d=>d.keyCode===14).on(this.onHome,this)),this._register(o.filter(d=>d.keyCode===13).on(this.onEnd,this)),this._register(o.filter(d=>d.keyCode>=21&&d.keyCode<=56||d.keyCode>=85&&d.keyCode<=113).on(this.onCharacter,this)),this._register(L.addDisposableListener(this.selectList.getHTMLElement(),L.EventType.POINTER_UP,d=>this.onPointerUp(d))),this._register(this.selectList.onMouseOver(d=>typeof d.index<\"u\"&&this.selectList.setFocus([d.index]))),this._register(this.selectList.onDidChangeFocus(d=>this.onListFocus(d))),this._register(L.addDisposableListener(this.selectDropDownContainer,L.EventType.FOCUS_OUT,d=>{!this._isVisible||L.isAncestor(d.relatedTarget,this.selectDropDownContainer)||this.onListBlur()})),this.selectList.getHTMLElement().setAttribute(\"aria-label\",this.selectBoxOptions.ariaLabel||\"\"),this.selectList.getHTMLElement().setAttribute(\"aria-expanded\",\"true\"),this.styleList()}onPointerUp(r){if(!this.selectList.length)return;L.EventHelper.stop(r);const c=r.target;if(!c||c.classList.contains(\"slider\"))return;const o=c.closest(\".monaco-list-row\");if(!o)return;const d=Number(o.getAttribute(\"data-index\")),l=o.classList.contains(\"option-disabled\");d>=0&&d<this.options.length&&!l&&(this.selected=d,this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0]),this.selected!==this._currentSelection&&(this._currentSelection=this.selected,this._onDidSelect.fire({index:this.selectElement.selectedIndex,selected:this.options[this.selected].text}),this.options[this.selected]&&this.options[this.selected].text&&(this.selectElement.title=this.options[this.selected].text)),this.hideSelectDropDown(!0))}onListBlur(){this._sticky||(this.selected!==this._currentSelection&&this.select(this._currentSelection),this.hideSelectDropDown(!1))}renderDescriptionMarkdown(r,c){const o=l=>{for(let p=0;p<l.childNodes.length;p++){const m=l.childNodes.item(p);(m.tagName&&m.tagName.toLowerCase())===\"img\"?l.removeChild(m):o(m)}},d=(0,D.renderMarkdown)({value:r,supportThemeIcons:!0},{actionHandler:c});return d.element.classList.add(\"select-box-description-markdown\"),o(d.element),d.element}onListFocus(r){!this._isVisible||!this._hasDetails||this.updateDetail(r.indexes[0])}updateDetail(r){var c,o;this.selectionDetailsPane.innerText=\"\";const d=this.options[r],l=(c=d?.description)!==null&&c!==void 0?c:\"\",p=(o=d?.descriptionIsMarkdown)!==null&&o!==void 0?o:!1;if(l){if(p){const m=d.descriptionMarkdownActionHandler;this.selectionDetailsPane.appendChild(this.renderDescriptionMarkdown(l,m))}else this.selectionDetailsPane.innerText=l;this.selectionDetailsPane.style.display=\"block\"}else this.selectionDetailsPane.style.display=\"none\";this._skipLayout=!0,this.contextViewProvider.layout(),this._skipLayout=!1}onEscape(r){L.EventHelper.stop(r),this.select(this._currentSelection),this.hideSelectDropDown(!0)}onEnter(r){L.EventHelper.stop(r),this.selected!==this._currentSelection&&(this._currentSelection=this.selected,this._onDidSelect.fire({index:this.selectElement.selectedIndex,selected:this.options[this.selected].text}),this.options[this.selected]&&this.options[this.selected].text&&(this.selectElement.title=this.options[this.selected].text)),this.hideSelectDropDown(!0)}onDownArrow(r){if(this.selected<this.options.length-1){L.EventHelper.stop(r,!0);const c=this.options[this.selected+1].isDisabled;if(c&&this.options.length>this.selected+2)this.selected+=2;else{if(c)return;this.selected++}this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0])}}onUpArrow(r){this.selected>0&&(L.EventHelper.stop(r,!0),this.options[this.selected-1].isDisabled&&this.selected>1?this.selected-=2:this.selected--,this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0]))}onPageUp(r){L.EventHelper.stop(r),this.selectList.focusPreviousPage(),setTimeout(()=>{this.selected=this.selectList.getFocus()[0],this.options[this.selected].isDisabled&&this.selected<this.options.length-1&&(this.selected++,this.selectList.setFocus([this.selected])),this.selectList.reveal(this.selected),this.select(this.selected)},1)}onPageDown(r){L.EventHelper.stop(r),this.selectList.focusNextPage(),setTimeout(()=>{this.selected=this.selectList.getFocus()[0],this.options[this.selected].isDisabled&&this.selected>0&&(this.selected--,this.selectList.setFocus([this.selected])),this.selectList.reveal(this.selected),this.select(this.selected)},1)}onHome(r){L.EventHelper.stop(r),!(this.options.length<2)&&(this.selected=0,this.options[this.selected].isDisabled&&this.selected>1&&this.selected++,this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selected),this.select(this.selected))}onEnd(r){L.EventHelper.stop(r),!(this.options.length<2)&&(this.selected=this.options.length-1,this.options[this.selected].isDisabled&&this.selected>1&&this.selected--,this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selected),this.select(this.selected))}onCharacter(r){const c=g.KeyCodeUtils.toString(r.keyCode);let o=-1;for(let d=0;d<this.options.length-1;d++)if(o=(d+this.selected+1)%this.options.length,this.options[o].text.charAt(0).toUpperCase()===c&&!this.options[o].isDisabled){this.select(o),this.selectList.setFocus([o]),this.selectList.reveal(this.selectList.getFocus()[0]),L.EventHelper.stop(r);break}}dispose(){this.hideSelectDropDown(!1),super.dispose()}}e.SelectBoxList=u,u.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN=32,u.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN=2,u.DEFAULT_MINIMUM_VISIBLE_OPTIONS=3}),define(ne[581],se([1,0,580,575,83,17,407]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SelectBox=void 0;class S extends y.Widget{constructor(_,g,C,s,i){super(),D.isMacintosh&&!i?.useCustomDrawn?this.selectBoxDelegate=new k.SelectBoxNative(_,g,s,i):this.selectBoxDelegate=new L.SelectBoxList(_,g,C,s,i),this._register(this.selectBoxDelegate)}get onDidSelect(){return this.selectBoxDelegate.onDidSelect}setOptions(_,g){this.selectBoxDelegate.setOptions(_,g)}select(_){this.selectBoxDelegate.select(_)}focus(){this.selectBoxDelegate.focus()}blur(){this.selectBoxDelegate.blur()}setFocusable(_){this.selectBoxDelegate.setFocusable(_)}render(_){this.selectBoxDelegate.render(_)}}e.SelectBox=S}),define(ne[131],se([1,0,52,197,7,61,314,581,39,2,17,20,551,265]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SelectActionViewItem=e.ActionViewItem=e.BaseActionViewItem=void 0;class n extends g.Disposable{get action(){return this._action}constructor(h,r,c={}){super(),this.options=c,this._context=h||this,this._action=r,r instanceof _.Action&&this._register(r.onDidChange(o=>{this.element&&this.handleActionChangeEvent(o)}))}handleActionChangeEvent(h){h.enabled!==void 0&&this.updateEnabled(),h.checked!==void 0&&this.updateChecked(),h.class!==void 0&&this.updateClass(),h.label!==void 0&&(this.updateLabel(),this.updateTooltip()),h.tooltip!==void 0&&this.updateTooltip()}get actionRunner(){return this._actionRunner||(this._actionRunner=this._register(new _.ActionRunner)),this._actionRunner}set actionRunner(h){this._actionRunner=h}isEnabled(){return this._action.enabled}setActionContext(h){this._context=h}render(h){const r=this.element=h;this._register(D.Gesture.addTarget(h));const c=this.options&&this.options.draggable;c&&(h.draggable=!0,L.isFirefox&&this._register((0,y.addDisposableListener)(h,y.EventType.DRAG_START,o=>{var d;return(d=o.dataTransfer)===null||d===void 0?void 0:d.setData(k.DataTransfers.TEXT,this._action.label)}))),this._register((0,y.addDisposableListener)(r,D.EventType.Tap,o=>this.onClick(o,!0))),this._register((0,y.addDisposableListener)(r,y.EventType.MOUSE_DOWN,o=>{c||y.EventHelper.stop(o,!0),this._action.enabled&&o.button===0&&r.classList.add(\"active\")})),C.isMacintosh&&this._register((0,y.addDisposableListener)(r,y.EventType.CONTEXT_MENU,o=>{o.button===0&&o.ctrlKey===!0&&this.onClick(o)})),this._register((0,y.addDisposableListener)(r,y.EventType.CLICK,o=>{y.EventHelper.stop(o,!0),this.options&&this.options.isMenu||this.onClick(o)})),this._register((0,y.addDisposableListener)(r,y.EventType.DBLCLICK,o=>{y.EventHelper.stop(o,!0)})),[y.EventType.MOUSE_UP,y.EventType.MOUSE_OUT].forEach(o=>{this._register((0,y.addDisposableListener)(r,o,d=>{y.EventHelper.stop(d),r.classList.remove(\"active\")}))})}onClick(h,r=!1){var c;y.EventHelper.stop(h,!0);const o=s.isUndefinedOrNull(this._context)?!((c=this.options)===null||c===void 0)&&c.useEventAsContext?h:{preserveFocus:r}:this._context;this.actionRunner.run(this._action,o)}focus(){this.element&&(this.element.tabIndex=0,this.element.focus(),this.element.classList.add(\"focused\"))}blur(){this.element&&(this.element.blur(),this.element.tabIndex=-1,this.element.classList.remove(\"focused\"))}setFocusable(h){this.element&&(this.element.tabIndex=h?0:-1)}get trapsArrowNavigation(){return!1}updateEnabled(){}updateLabel(){}getTooltip(){return this.action.tooltip}updateTooltip(){var h;if(!this.element)return;const r=(h=this.getTooltip())!==null&&h!==void 0?h:\"\";this.updateAriaLabel(),this.options.hoverDelegate?(this.element.title=\"\",this.customHover?this.customHover.update(r):(this.customHover=(0,S.setupCustomHover)(this.options.hoverDelegate,this.element,r),this._store.add(this.customHover))):this.element.title=r}updateAriaLabel(){var h;if(this.element){const r=(h=this.getTooltip())!==null&&h!==void 0?h:\"\";this.element.setAttribute(\"aria-label\",r)}}updateClass(){}updateChecked(){}dispose(){this.element&&(this.element.remove(),this.element=void 0),this._context=void 0,super.dispose()}}e.BaseActionViewItem=n;class t extends n{constructor(h,r,c){super(h,r,c),this.options=c,this.options.icon=c.icon!==void 0?c.icon:!1,this.options.label=c.label!==void 0?c.label:!0,this.cssClass=\"\"}render(h){super.render(h),this.element&&(this.label=(0,y.append)(this.element,(0,y.$)(\"a.action-label\"))),this.label&&this.label.setAttribute(\"role\",this.getDefaultAriaRole()),this.options.label&&this.options.keybinding&&this.element&&((0,y.append)(this.element,(0,y.$)(\"span.keybinding\")).textContent=this.options.keybinding),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked()}getDefaultAriaRole(){return this._action.id===_.Separator.ID?\"presentation\":this.options.isMenu?\"menuitem\":\"button\"}focus(){this.label&&(this.label.tabIndex=0,this.label.focus())}blur(){this.label&&(this.label.tabIndex=-1)}setFocusable(h){this.label&&(this.label.tabIndex=h?0:-1)}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this.action.label)}getTooltip(){let h=null;return this.action.tooltip?h=this.action.tooltip:!this.options.label&&this.action.label&&this.options.icon&&(h=this.action.label,this.options.keybinding&&(h=i.localize(0,null,h,this.options.keybinding))),h??void 0}updateClass(){var h;this.cssClass&&this.label&&this.label.classList.remove(...this.cssClass.split(\" \")),this.options.icon?(this.cssClass=this.action.class,this.label&&(this.label.classList.add(\"codicon\"),this.cssClass&&this.label.classList.add(...this.cssClass.split(\" \"))),this.updateEnabled()):(h=this.label)===null||h===void 0||h.classList.remove(\"codicon\")}updateEnabled(){var h,r;this.action.enabled?(this.label&&(this.label.removeAttribute(\"aria-disabled\"),this.label.classList.remove(\"disabled\")),(h=this.element)===null||h===void 0||h.classList.remove(\"disabled\")):(this.label&&(this.label.setAttribute(\"aria-disabled\",\"true\"),this.label.classList.add(\"disabled\")),(r=this.element)===null||r===void 0||r.classList.add(\"disabled\"))}updateAriaLabel(){var h;if(this.label){const r=(h=this.getTooltip())!==null&&h!==void 0?h:\"\";this.label.setAttribute(\"aria-label\",r)}}updateChecked(){this.label&&(this.action.checked!==void 0?(this.label.classList.toggle(\"checked\",this.action.checked),this.label.setAttribute(\"aria-checked\",this.action.checked?\"true\":\"false\"),this.label.setAttribute(\"role\",\"checkbox\")):(this.label.classList.remove(\"checked\"),this.label.setAttribute(\"aria-checked\",\"\"),this.label.setAttribute(\"role\",this.getDefaultAriaRole())))}}e.ActionViewItem=t;class a extends n{constructor(h,r,c,o,d,l,p){super(h,r),this.selectBox=new f.SelectBox(c,o,d,l,p),this.selectBox.setFocusable(!1),this._register(this.selectBox),this.registerListeners()}select(h){this.selectBox.select(h)}registerListeners(){this._register(this.selectBox.onDidSelect(h=>this.runAction(h.selected,h.index)))}runAction(h,r){this.actionRunner.run(this._action,this.getActionContext(h,r))}getActionContext(h,r){return h}setFocusable(h){this.selectBox.setFocusable(h)}focus(){var h;(h=this.selectBox)===null||h===void 0||h.focus()}blur(){var h;(h=this.selectBox)===null||h===void 0||h.blur()}render(h){this.selectBox.render(h)}}e.SelectActionViewItem=a}),define(ne[68],se([1,0,7,44,131,39,6,2,20,265]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ActionBar=void 0;class g extends f.Disposable{constructor(s,i={}){var n,t,a,u,h,r;super(),this._actionRunnerDisposables=this._register(new f.DisposableStore),this.viewItemDisposables=this._register(new f.DisposableMap),this.triggerKeyDown=!1,this.focusable=!0,this._onDidBlur=this._register(new S.Emitter),this.onDidBlur=this._onDidBlur.event,this._onDidCancel=this._register(new S.Emitter({onWillAddFirstListener:()=>this.cancelHasListener=!0})),this.onDidCancel=this._onDidCancel.event,this.cancelHasListener=!1,this._onDidRun=this._register(new S.Emitter),this.onDidRun=this._onDidRun.event,this._onWillRun=this._register(new S.Emitter),this.onWillRun=this._onWillRun.event,this.options=i,this._context=(n=i.context)!==null&&n!==void 0?n:null,this._orientation=(t=this.options.orientation)!==null&&t!==void 0?t:0,this._triggerKeys={keyDown:(u=(a=this.options.triggerKeys)===null||a===void 0?void 0:a.keyDown)!==null&&u!==void 0?u:!1,keys:(r=(h=this.options.triggerKeys)===null||h===void 0?void 0:h.keys)!==null&&r!==void 0?r:[3,10]},this.options.actionRunner?this._actionRunner=this.options.actionRunner:(this._actionRunner=new D.ActionRunner,this._actionRunnerDisposables.add(this._actionRunner)),this._actionRunnerDisposables.add(this._actionRunner.onDidRun(d=>this._onDidRun.fire(d))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun(d=>this._onWillRun.fire(d))),this.viewItems=[],this.focusedItem=void 0,this.domNode=document.createElement(\"div\"),this.domNode.className=\"monaco-action-bar\",i.animated!==!1&&this.domNode.classList.add(\"animated\");let c,o;switch(this._orientation){case 0:c=[15],o=[17];break;case 1:c=[16],o=[18],this.domNode.className+=\" vertical\";break}this._register(L.addDisposableListener(this.domNode,L.EventType.KEY_DOWN,d=>{const l=new k.StandardKeyboardEvent(d);let p=!0;const m=typeof this.focusedItem==\"number\"?this.viewItems[this.focusedItem]:void 0;c&&(l.equals(c[0])||l.equals(c[1]))?p=this.focusPrevious():o&&(l.equals(o[0])||l.equals(o[1]))?p=this.focusNext():l.equals(9)&&this.cancelHasListener?this._onDidCancel.fire():l.equals(14)?p=this.focusFirst():l.equals(13)?p=this.focusLast():l.equals(2)&&m instanceof y.BaseActionViewItem&&m.trapsArrowNavigation?p=this.focusNext():this.isTriggerKeyEvent(l)?this._triggerKeys.keyDown?this.doTrigger(l):this.triggerKeyDown=!0:p=!1,p&&(l.preventDefault(),l.stopPropagation())})),this._register(L.addDisposableListener(this.domNode,L.EventType.KEY_UP,d=>{const l=new k.StandardKeyboardEvent(d);this.isTriggerKeyEvent(l)?(!this._triggerKeys.keyDown&&this.triggerKeyDown&&(this.triggerKeyDown=!1,this.doTrigger(l)),l.preventDefault(),l.stopPropagation()):(l.equals(2)||l.equals(1026))&&this.updateFocusedItem()})),this.focusTracker=this._register(L.trackFocus(this.domNode)),this._register(this.focusTracker.onDidBlur(()=>{(L.getActiveElement()===this.domNode||!L.isAncestor(L.getActiveElement(),this.domNode))&&(this._onDidBlur.fire(),this.previouslyFocusedItem=this.focusedItem,this.focusedItem=void 0,this.triggerKeyDown=!1)})),this._register(this.focusTracker.onDidFocus(()=>this.updateFocusedItem())),this.actionsList=document.createElement(\"ul\"),this.actionsList.className=\"actions-container\",this.options.highlightToggledItems&&this.actionsList.classList.add(\"highlight-toggled\"),this.actionsList.setAttribute(\"role\",this.options.ariaRole||\"toolbar\"),this.options.ariaLabel&&this.actionsList.setAttribute(\"aria-label\",this.options.ariaLabel),this.domNode.appendChild(this.actionsList),s.appendChild(this.domNode)}refreshRole(){this.length()>=2?this.actionsList.setAttribute(\"role\",this.options.ariaRole||\"toolbar\"):this.actionsList.setAttribute(\"role\",\"presentation\")}setFocusable(s){if(this.focusable=s,this.focusable){const i=this.viewItems.find(n=>n instanceof y.BaseActionViewItem&&n.isEnabled());i instanceof y.BaseActionViewItem&&i.setFocusable(!0)}else this.viewItems.forEach(i=>{i instanceof y.BaseActionViewItem&&i.setFocusable(!1)})}isTriggerKeyEvent(s){let i=!1;return this._triggerKeys.keys.forEach(n=>{i=i||s.equals(n)}),i}updateFocusedItem(){for(let s=0;s<this.actionsList.children.length;s++){const i=this.actionsList.children[s];if(L.isAncestor(L.getActiveElement(),i)){this.focusedItem=s;break}}}get context(){return this._context}set context(s){this._context=s,this.viewItems.forEach(i=>i.setActionContext(s))}get actionRunner(){return this._actionRunner}set actionRunner(s){this._actionRunner=s,this._actionRunnerDisposables.clear(),this._actionRunnerDisposables.add(this._actionRunner.onDidRun(i=>this._onDidRun.fire(i))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun(i=>this._onWillRun.fire(i))),this.viewItems.forEach(i=>i.actionRunner=s)}getContainer(){return this.domNode}getAction(s){var i;if(typeof s==\"number\")return(i=this.viewItems[s])===null||i===void 0?void 0:i.action;if(s instanceof HTMLElement){for(;s.parentElement!==this.actionsList;){if(!s.parentElement)return;s=s.parentElement}for(let n=0;n<this.actionsList.childNodes.length;n++)if(this.actionsList.childNodes[n]===s)return this.viewItems[n].action}}push(s,i={}){const n=Array.isArray(s)?s:[s];let t=_.isNumber(i.index)?i.index:null;n.forEach(a=>{const u=document.createElement(\"li\");u.className=\"action-item\",u.setAttribute(\"role\",\"presentation\");let h;const r=Object.assign({hoverDelegate:this.options.hoverDelegate},i);this.options.actionViewItemProvider&&(h=this.options.actionViewItemProvider(a,r)),h||(h=new y.ActionViewItem(this.context,a,r)),this.options.allowContextMenu||this.viewItemDisposables.set(h,L.addDisposableListener(u,L.EventType.CONTEXT_MENU,c=>{L.EventHelper.stop(c,!0)})),h.actionRunner=this._actionRunner,h.setActionContext(this.context),h.render(u),this.focusable&&h instanceof y.BaseActionViewItem&&this.viewItems.length===0&&h.setFocusable(!0),t===null||t<0||t>=this.actionsList.children.length?(this.actionsList.appendChild(u),this.viewItems.push(h)):(this.actionsList.insertBefore(u,this.actionsList.children[t]),this.viewItems.splice(t,0,h),t++)}),typeof this.focusedItem==\"number\"&&this.focus(this.focusedItem),this.refreshRole()}clear(){this.isEmpty()||(this.viewItems=(0,f.dispose)(this.viewItems),this.viewItemDisposables.clearAndDisposeAll(),L.clearNode(this.actionsList),this.refreshRole())}length(){return this.viewItems.length}isEmpty(){return this.viewItems.length===0}focus(s){let i=!1,n;if(s===void 0?i=!0:typeof s==\"number\"?n=s:typeof s==\"boolean\"&&(i=s),i&&typeof this.focusedItem>\"u\"){const t=this.viewItems.findIndex(a=>a.isEnabled());this.focusedItem=t===-1?void 0:t,this.updateFocus(void 0,void 0,!0)}else n!==void 0&&(this.focusedItem=n),this.updateFocus(void 0,void 0,!0)}focusFirst(){return this.focusedItem=this.length()-1,this.focusNext(!0)}focusLast(){return this.focusedItem=0,this.focusPrevious(!0)}focusNext(s){if(typeof this.focusedItem>\"u\")this.focusedItem=this.viewItems.length-1;else if(this.viewItems.length<=1)return!1;const i=this.focusedItem;let n;do{if(!s&&this.options.preventLoopNavigation&&this.focusedItem+1>=this.viewItems.length)return this.focusedItem=i,!1;this.focusedItem=(this.focusedItem+1)%this.viewItems.length,n=this.viewItems[this.focusedItem]}while(this.focusedItem!==i&&(this.options.focusOnlyEnabledItems&&!n.isEnabled()||n.action.id===D.Separator.ID));return this.updateFocus(),!0}focusPrevious(s){if(typeof this.focusedItem>\"u\")this.focusedItem=0;else if(this.viewItems.length<=1)return!1;const i=this.focusedItem;let n;do{if(this.focusedItem=this.focusedItem-1,this.focusedItem<0){if(!s&&this.options.preventLoopNavigation)return this.focusedItem=i,!1;this.focusedItem=this.viewItems.length-1}n=this.viewItems[this.focusedItem]}while(this.focusedItem!==i&&(this.options.focusOnlyEnabledItems&&!n.isEnabled()||n.action.id===D.Separator.ID));return this.updateFocus(!0),!0}updateFocus(s,i,n=!1){var t;typeof this.focusedItem>\"u\"&&this.actionsList.focus({preventScroll:i}),this.previouslyFocusedItem!==void 0&&this.previouslyFocusedItem!==this.focusedItem&&((t=this.viewItems[this.previouslyFocusedItem])===null||t===void 0||t.blur());const a=this.focusedItem!==void 0&&this.viewItems[this.focusedItem];if(a){let u=!0;_.isFunction(a.focus)||(u=!1),this.options.focusOnlyEnabledItems&&_.isFunction(a.isEnabled)&&!a.isEnabled()&&(u=!1),a.action.id===D.Separator.ID&&(u=!1),u?(n||this.previouslyFocusedItem!==this.focusedItem)&&(a.focus(s),this.previouslyFocusedItem=this.focusedItem):(this.actionsList.focus({preventScroll:i}),this.previouslyFocusedItem=void 0)}}doTrigger(s){if(typeof this.focusedItem>\"u\")return;const i=this.viewItems[this.focusedItem];if(i instanceof y.BaseActionViewItem){const n=i._context===null||i._context===void 0?s:i._context;this.run(i._action,n)}}run(s,i){return we(this,void 0,void 0,function*(){yield this._actionRunner.run(s,i)})}dispose(){this._context=void 0,this.viewItems=(0,f.dispose)(this.viewItems),this.getContainer().remove(),super.dispose()}}e.ActionBar=g}),define(ne[315],se([1,0,7,131,572,6,266]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DropdownMenuActionViewItem=void 0;class S extends k.BaseActionViewItem{constructor(_,g,C,s=Object.create(null)){super(null,_,s),this.actionItem=null,this._onDidChangeVisibility=this._register(new D.Emitter),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this.menuActionsOrProvider=g,this.contextMenuProvider=C,this.options=s,this.options.actionRunner&&(this.actionRunner=this.options.actionRunner)}render(_){this.actionItem=_;const g=i=>{this.element=(0,L.append)(i,(0,L.$)(\"a.action-label\"));let n=[];return typeof this.options.classNames==\"string\"?n=this.options.classNames.split(/\\s+/g).filter(t=>!!t):this.options.classNames&&(n=this.options.classNames),n.find(t=>t===\"icon\")||n.push(\"codicon\"),this.element.classList.add(...n),this.element.setAttribute(\"role\",\"button\"),this.element.setAttribute(\"aria-haspopup\",\"true\"),this.element.setAttribute(\"aria-expanded\",\"false\"),this.element.title=this._action.label||\"\",this.element.ariaLabel=this._action.label||\"\",null},C=Array.isArray(this.menuActionsOrProvider),s={contextMenuProvider:this.contextMenuProvider,labelRenderer:g,menuAsChild:this.options.menuAsChild,actions:C?this.menuActionsOrProvider:void 0,actionProvider:C?void 0:this.menuActionsOrProvider,skipTelemetry:this.options.skipTelemetry};if(this.dropdownMenu=this._register(new y.DropdownMenu(_,s)),this._register(this.dropdownMenu.onDidChangeVisibility(i=>{var n;(n=this.element)===null||n===void 0||n.setAttribute(\"aria-expanded\",`${i}`),this._onDidChangeVisibility.fire(i)})),this.dropdownMenu.menuOptions={actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,getKeyBinding:this.options.keybindingProvider,context:this._context},this.options.anchorAlignmentProvider){const i=this;this.dropdownMenu.menuOptions=Object.assign(Object.assign({},this.dropdownMenu.menuOptions),{get anchorAlignment(){return i.options.anchorAlignmentProvider()}})}this.updateTooltip(),this.updateEnabled()}getTooltip(){let _=null;return this.action.tooltip?_=this.action.tooltip:this.action.label&&(_=this.action.label),_??void 0}setActionContext(_){super.setActionContext(_),this.dropdownMenu&&(this.dropdownMenu.menuOptions?this.dropdownMenu.menuOptions.context=_:this.dropdownMenu.menuOptions={context:_})}show(){var _;(_=this.dropdownMenu)===null||_===void 0||_.show()}updateEnabled(){var _,g;const C=!this.action.enabled;(_=this.actionItem)===null||_===void 0||_.classList.toggle(\"disabled\",C),(g=this.element)===null||g===void 0||g.classList.toggle(\"disabled\",C)}}e.DropdownMenuActionViewItem=S}),define(ne[227],se([1,0,7,81,305,68,49,75,83,6,388,47,557,401]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HistoryInputBox=e.InputBox=e.unthemedInboxStyles=void 0;const n=L.$;e.unthemedInboxStyles={inputBackground:\"#3C3C3C\",inputForeground:\"#CCCCCC\",inputValidationInfoBorder:\"#55AAFF\",inputValidationInfoBackground:\"#063B49\",inputValidationWarningBorder:\"#B89500\",inputValidationWarningBackground:\"#352A05\",inputValidationErrorBorder:\"#BE1100\",inputValidationErrorBackground:\"#5A1D1D\",inputBorder:void 0,inputValidationErrorForeground:void 0,inputValidationInfoForeground:void 0,inputValidationWarningForeground:void 0};class t extends _.Widget{constructor(h,r,c){var o;super(),this.state=\"idle\",this.maxHeight=Number.POSITIVE_INFINITY,this._onDidChange=this._register(new g.Emitter),this.onDidChange=this._onDidChange.event,this._onDidHeightChange=this._register(new g.Emitter),this.onDidHeightChange=this._onDidHeightChange.event,this.contextViewProvider=r,this.options=c,this.message=null,this.placeholder=this.options.placeholder||\"\",this.tooltip=(o=this.options.tooltip)!==null&&o!==void 0?o:this.placeholder||\"\",this.ariaLabel=this.options.ariaLabel||\"\",this.options.validationOptions&&(this.validation=this.options.validationOptions.validation),this.element=L.append(h,n(\".monaco-inputbox.idle\"));const d=this.options.flexibleHeight?\"textarea\":\"input\",l=L.append(this.element,n(\".ibwrapper\"));if(this.input=L.append(l,n(d+\".input.empty\")),this.input.setAttribute(\"autocorrect\",\"off\"),this.input.setAttribute(\"autocapitalize\",\"off\"),this.input.setAttribute(\"spellcheck\",\"false\"),this.onfocus(this.input,()=>this.element.classList.add(\"synthetic-focus\")),this.onblur(this.input,()=>this.element.classList.remove(\"synthetic-focus\")),this.options.flexibleHeight){this.maxHeight=typeof this.options.flexibleMaxHeight==\"number\"?this.options.flexibleMaxHeight:Number.POSITIVE_INFINITY,this.mirror=L.append(l,n(\"div.mirror\")),this.mirror.innerText=\"\\xA0\",this.scrollableElement=new f.ScrollableElement(this.element,{vertical:1}),this.options.flexibleWidth&&(this.input.setAttribute(\"wrap\",\"off\"),this.mirror.style.whiteSpace=\"pre\",this.mirror.style.wordWrap=\"initial\"),L.append(h,this.scrollableElement.getDomNode()),this._register(this.scrollableElement),this._register(this.scrollableElement.onScroll(v=>this.input.scrollTop=v.scrollTop));const p=this._register(new k.DomEmitter(document,\"selectionchange\")),m=g.Event.filter(p.event,()=>{const v=document.getSelection();return v?.anchorNode===l});this._register(m(this.updateScrollDimensions,this)),this._register(this.onDidHeightChange(this.updateScrollDimensions,this))}else this.input.type=this.options.type||\"text\",this.input.setAttribute(\"wrap\",\"off\");this.ariaLabel&&this.input.setAttribute(\"aria-label\",this.ariaLabel),this.placeholder&&!this.options.showPlaceholderOnFocus&&this.setPlaceHolder(this.placeholder),this.tooltip&&this.setTooltip(this.tooltip),this.oninput(this.input,()=>this.onValueChange()),this.onblur(this.input,()=>this.onBlur()),this.onfocus(this.input,()=>this.onFocus()),this._register(this.ignoreGesture(this.input)),setTimeout(()=>this.updateMirror(),0),this.options.actions&&(this.actionbar=this._register(new D.ActionBar(this.element)),this.actionbar.push(this.options.actions,{icon:!0,label:!1})),this.applyStyles()}onBlur(){this._hideMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute(\"placeholder\",\"\")}onFocus(){this._showMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute(\"placeholder\",this.placeholder||\"\")}setPlaceHolder(h){this.placeholder=h,this.input.setAttribute(\"placeholder\",h)}setTooltip(h){this.tooltip=h,this.input.title=h}get inputElement(){return this.input}get value(){return this.input.value}set value(h){this.input.value!==h&&(this.input.value=h,this.onValueChange())}get height(){return typeof this.cachedHeight==\"number\"?this.cachedHeight:L.getTotalHeight(this.element)}focus(){this.input.focus()}blur(){this.input.blur()}hasFocus(){return document.activeElement===this.input}select(h=null){this.input.select(),h&&(this.input.setSelectionRange(h.start,h.end),h.end===this.input.value.length&&(this.input.scrollLeft=this.input.scrollWidth))}isSelectionAtEnd(){return this.input.selectionEnd===this.input.value.length&&this.input.selectionStart===this.input.selectionEnd}enable(){this.input.removeAttribute(\"disabled\")}disable(){this.blur(),this.input.disabled=!0,this._hideMessage()}set paddingRight(h){this.input.style.width=`calc(100% - ${h}px)`,this.mirror&&(this.mirror.style.paddingRight=h+\"px\")}updateScrollDimensions(){if(typeof this.cachedContentHeight!=\"number\"||typeof this.cachedHeight!=\"number\"||!this.scrollableElement)return;const h=this.cachedContentHeight,r=this.cachedHeight,c=this.input.scrollTop;this.scrollableElement.setScrollDimensions({scrollHeight:h,height:r}),this.scrollableElement.setScrollPosition({scrollTop:c})}showMessage(h,r){if(this.state===\"open\"&&(0,s.equals)(this.message,h))return;this.message=h,this.element.classList.remove(\"idle\"),this.element.classList.remove(\"info\"),this.element.classList.remove(\"warning\"),this.element.classList.remove(\"error\"),this.element.classList.add(this.classForType(h.type));const c=this.stylesForType(this.message.type);this.element.style.border=`1px solid ${L.asCssValueWithDefault(c.border,\"transparent\")}`,this.message.content&&(this.hasFocus()||r)&&this._showMessage()}hideMessage(){this.message=null,this.element.classList.remove(\"info\"),this.element.classList.remove(\"warning\"),this.element.classList.remove(\"error\"),this.element.classList.add(\"idle\"),this._hideMessage(),this.applyStyles()}validate(){let h=null;return this.validation&&(h=this.validation(this.value),h?(this.inputElement.setAttribute(\"aria-invalid\",\"true\"),this.showMessage(h)):this.inputElement.hasAttribute(\"aria-invalid\")&&(this.inputElement.removeAttribute(\"aria-invalid\"),this.hideMessage())),h?.type}stylesForType(h){const r=this.options.inputBoxStyles;switch(h){case 1:return{border:r.inputValidationInfoBorder,background:r.inputValidationInfoBackground,foreground:r.inputValidationInfoForeground};case 2:return{border:r.inputValidationWarningBorder,background:r.inputValidationWarningBackground,foreground:r.inputValidationWarningForeground};default:return{border:r.inputValidationErrorBorder,background:r.inputValidationErrorBackground,foreground:r.inputValidationErrorForeground}}}classForType(h){switch(h){case 1:return\"info\";case 2:return\"warning\";default:return\"error\"}}_showMessage(){if(!this.contextViewProvider||!this.message)return;let h;const r=()=>h.style.width=L.getTotalWidth(this.element)+\"px\";this.contextViewProvider.showContextView({getAnchor:()=>this.element,anchorAlignment:1,render:o=>{var d,l;if(!this.message)return null;h=L.append(o,n(\".monaco-inputbox-container\")),r();const p={inline:!0,className:\"monaco-inputbox-message\"},m=this.message.formatContent?(0,y.renderFormattedText)(this.message.content,p):(0,y.renderText)(this.message.content,p);m.classList.add(this.classForType(this.message.type));const v=this.stylesForType(this.message.type);return m.style.backgroundColor=(d=v.background)!==null&&d!==void 0?d:\"\",m.style.color=(l=v.foreground)!==null&&l!==void 0?l:\"\",m.style.border=v.border?`1px solid ${v.border}`:\"\",L.append(h,m),null},onHide:()=>{this.state=\"closed\"},layout:r});let c;this.message.type===3?c=i.localize(0,null,this.message.content):this.message.type===2?c=i.localize(1,null,this.message.content):c=i.localize(2,null,this.message.content),S.alert(c),this.state=\"open\"}_hideMessage(){this.contextViewProvider&&(this.state===\"open\"&&this.contextViewProvider.hideContextView(),this.state=\"idle\")}onValueChange(){this._onDidChange.fire(this.value),this.validate(),this.updateMirror(),this.input.classList.toggle(\"empty\",!this.value),this.state===\"open\"&&this.contextViewProvider&&this.contextViewProvider.layout()}updateMirror(){if(!this.mirror)return;const h=this.value,c=h.charCodeAt(h.length-1)===10?\" \":\"\";(h+c).replace(/\\u000c/g,\"\")?this.mirror.textContent=h+c:this.mirror.innerText=\"\\xA0\",this.layout()}applyStyles(){var h,r,c;const o=this.options.inputBoxStyles,d=(h=o.inputBackground)!==null&&h!==void 0?h:\"\",l=(r=o.inputForeground)!==null&&r!==void 0?r:\"\",p=(c=o.inputBorder)!==null&&c!==void 0?c:\"\";this.element.style.backgroundColor=d,this.element.style.color=l,this.input.style.backgroundColor=\"inherit\",this.input.style.color=l,this.element.style.border=`1px solid ${L.asCssValueWithDefault(p,\"transparent\")}`}layout(){if(!this.mirror)return;const h=this.cachedContentHeight;this.cachedContentHeight=L.getTotalHeight(this.mirror),h!==this.cachedContentHeight&&(this.cachedHeight=Math.min(this.cachedContentHeight,this.maxHeight),this.input.style.height=this.cachedHeight+\"px\",this._onDidHeightChange.fire(this.cachedContentHeight))}insertAtCursor(h){const r=this.inputElement,c=r.selectionStart,o=r.selectionEnd,d=r.value;c!==null&&o!==null&&(this.value=d.substr(0,c)+h+d.substr(o),r.setSelectionRange(c+1,c+1),this.layout())}dispose(){var h;this._hideMessage(),this.message=null,(h=this.actionbar)===null||h===void 0||h.dispose(),super.dispose()}}e.InputBox=t;class a extends t{constructor(h,r,c){const o=i.localize(3,null),d=` or \\u21C5 ${o}`,l=` (\\u21C5 ${o})`;super(h,r,c),this._onDidFocus=this._register(new g.Emitter),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new g.Emitter),this.onDidBlur=this._onDidBlur.event,this.history=new C.HistoryNavigator(c.history,100);const p=()=>{if(c.showHistoryHint&&c.showHistoryHint()&&!this.placeholder.endsWith(d)&&!this.placeholder.endsWith(l)&&this.history.getHistory().length){const m=this.placeholder.endsWith(\")\")?d:l,v=this.placeholder+m;c.showPlaceholderOnFocus&&document.activeElement!==this.input?this.placeholder=v:this.setPlaceHolder(v)}};this.observer=new MutationObserver((m,v)=>{m.forEach(b=>{b.target.textContent||p()})}),this.observer.observe(this.input,{attributeFilter:[\"class\"]}),this.onfocus(this.input,()=>p()),this.onblur(this.input,()=>{const m=v=>{if(this.placeholder.endsWith(v)){const b=this.placeholder.slice(0,this.placeholder.length-v.length);return c.showPlaceholderOnFocus?this.placeholder=b:this.setPlaceHolder(b),!0}else return!1};m(l)||m(d)})}dispose(){super.dispose(),this.observer&&(this.observer.disconnect(),this.observer=void 0)}addToHistory(h){this.value&&(h||this.value!==this.getCurrentValue())&&this.history.add(this.value)}isAtLastInHistory(){return this.history.isLast()}isNowhereInHistory(){return this.history.isNowhere()}showNextValue(){this.history.has(this.value)||this.addToHistory();let h=this.getNextValue();h&&(h=h===this.value?this.getNextValue():h),this.value=h??\"\",S.status(this.value?this.value:i.localize(4,null))}showPreviousValue(){this.history.has(this.value)||this.addToHistory();let h=this.getPreviousValue();h&&(h=h===this.value?this.getPreviousValue():h),h&&(this.value=h,S.status(this.value))}onBlur(){super.onBlur(),this._onDidBlur.fire()}onFocus(){super.onFocus(),this._onDidFocus.fire()}getCurrentValue(){let h=this.history.current();return h||(h=this.history.last(),this.history.next()),h}getPreviousValue(){return this.history.previous()||this.history.first()}getNextValue(){return this.history.next()}}e.HistoryInputBox=a}),define(ne[228],se([1,0,7,312,227,83,6,552,2,267]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindInput=void 0;const g=f.localize(0,null);class C extends D.Widget{constructor(i,n,t){super(),this.fixFocusOnOptionClickEnabled=!0,this.imeSessionInProgress=!1,this.additionalTogglesDisposables=new _.DisposableStore,this.additionalToggles=[],this._onDidOptionChange=this._register(new S.Emitter),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new S.Emitter),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new S.Emitter),this.onMouseDown=this._onMouseDown.event,this._onInput=this._register(new S.Emitter),this._onKeyUp=this._register(new S.Emitter),this._onCaseSensitiveKeyDown=this._register(new S.Emitter),this.onCaseSensitiveKeyDown=this._onCaseSensitiveKeyDown.event,this._onRegexKeyDown=this._register(new S.Emitter),this.onRegexKeyDown=this._onRegexKeyDown.event,this._lastHighlightFindOptions=0,this.placeholder=t.placeholder||\"\",this.validation=t.validation,this.label=t.label||g,this.showCommonFindToggles=!!t.showCommonFindToggles;const a=t.appendCaseSensitiveLabel||\"\",u=t.appendWholeWordsLabel||\"\",h=t.appendRegexLabel||\"\",r=t.history||[],c=!!t.flexibleHeight,o=!!t.flexibleWidth,d=t.flexibleMaxHeight;if(this.domNode=document.createElement(\"div\"),this.domNode.classList.add(\"monaco-findInput\"),this.inputBox=this._register(new y.HistoryInputBox(this.domNode,n,{placeholder:this.placeholder||\"\",ariaLabel:this.label||\"\",validationOptions:{validation:this.validation},history:r,showHistoryHint:t.showHistoryHint,flexibleHeight:c,flexibleWidth:o,flexibleMaxHeight:d,inputBoxStyles:t.inputBoxStyles})),this.showCommonFindToggles){this.regex=this._register(new k.RegexToggle(Object.assign({appendTitle:h,isChecked:!1},t.toggleStyles))),this._register(this.regex.onChange(p=>{this._onDidOptionChange.fire(p),!p&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.regex.onKeyDown(p=>{this._onRegexKeyDown.fire(p)})),this.wholeWords=this._register(new k.WholeWordsToggle(Object.assign({appendTitle:u,isChecked:!1},t.toggleStyles))),this._register(this.wholeWords.onChange(p=>{this._onDidOptionChange.fire(p),!p&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this.caseSensitive=this._register(new k.CaseSensitiveToggle(Object.assign({appendTitle:a,isChecked:!1},t.toggleStyles))),this._register(this.caseSensitive.onChange(p=>{this._onDidOptionChange.fire(p),!p&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.caseSensitive.onKeyDown(p=>{this._onCaseSensitiveKeyDown.fire(p)}));const l=[this.caseSensitive.domNode,this.wholeWords.domNode,this.regex.domNode];this.onkeydown(this.domNode,p=>{if(p.equals(15)||p.equals(17)||p.equals(9)){const m=l.indexOf(document.activeElement);if(m>=0){let v=-1;p.equals(17)?v=(m+1)%l.length:p.equals(15)&&(m===0?v=l.length-1:v=m-1),p.equals(9)?(l[m].blur(),this.inputBox.focus()):v>=0&&l[v].focus(),L.EventHelper.stop(p,!0)}}})}this.controls=document.createElement(\"div\"),this.controls.className=\"controls\",this.controls.style.display=this.showCommonFindToggles?\"\":\"none\",this.caseSensitive&&this.controls.append(this.caseSensitive.domNode),this.wholeWords&&this.controls.appendChild(this.wholeWords.domNode),this.regex&&this.controls.appendChild(this.regex.domNode),this.setAdditionalToggles(t?.additionalToggles),this.controls&&this.domNode.appendChild(this.controls),i?.appendChild(this.domNode),this._register(L.addDisposableListener(this.inputBox.inputElement,\"compositionstart\",l=>{this.imeSessionInProgress=!0})),this._register(L.addDisposableListener(this.inputBox.inputElement,\"compositionend\",l=>{this.imeSessionInProgress=!1,this._onInput.fire()})),this.onkeydown(this.inputBox.inputElement,l=>this._onKeyDown.fire(l)),this.onkeyup(this.inputBox.inputElement,l=>this._onKeyUp.fire(l)),this.oninput(this.inputBox.inputElement,l=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,l=>this._onMouseDown.fire(l))}get onDidChange(){return this.inputBox.onDidChange}layout(i){this.inputBox.layout(),this.updateInputBoxPadding(i.collapsedFindWidget)}enable(){var i,n,t;this.domNode.classList.remove(\"disabled\"),this.inputBox.enable(),(i=this.regex)===null||i===void 0||i.enable(),(n=this.wholeWords)===null||n===void 0||n.enable(),(t=this.caseSensitive)===null||t===void 0||t.enable();for(const a of this.additionalToggles)a.enable()}disable(){var i,n,t;this.domNode.classList.add(\"disabled\"),this.inputBox.disable(),(i=this.regex)===null||i===void 0||i.disable(),(n=this.wholeWords)===null||n===void 0||n.disable(),(t=this.caseSensitive)===null||t===void 0||t.disable();for(const a of this.additionalToggles)a.disable()}setFocusInputOnOptionClick(i){this.fixFocusOnOptionClickEnabled=i}setEnabled(i){i?this.enable():this.disable()}setAdditionalToggles(i){for(const n of this.additionalToggles)n.domNode.remove();this.additionalToggles=[],this.additionalTogglesDisposables.dispose(),this.additionalTogglesDisposables=new _.DisposableStore;for(const n of i??[])this.additionalTogglesDisposables.add(n),this.controls.appendChild(n.domNode),this.additionalTogglesDisposables.add(n.onChange(t=>{this._onDidOptionChange.fire(t),!t&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus()})),this.additionalToggles.push(n);this.additionalToggles.length>0&&(this.controls.style.display=\"\"),this.updateInputBoxPadding()}updateInputBoxPadding(i=!1){var n,t,a,u,h,r;i?this.inputBox.paddingRight=0:this.inputBox.paddingRight=((t=(n=this.caseSensitive)===null||n===void 0?void 0:n.width())!==null&&t!==void 0?t:0)+((u=(a=this.wholeWords)===null||a===void 0?void 0:a.width())!==null&&u!==void 0?u:0)+((r=(h=this.regex)===null||h===void 0?void 0:h.width())!==null&&r!==void 0?r:0)+this.additionalToggles.reduce((c,o)=>c+o.width(),0)}getValue(){return this.inputBox.value}setValue(i){this.inputBox.value!==i&&(this.inputBox.value=i)}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getCaseSensitive(){var i,n;return(n=(i=this.caseSensitive)===null||i===void 0?void 0:i.checked)!==null&&n!==void 0?n:!1}setCaseSensitive(i){this.caseSensitive&&(this.caseSensitive.checked=i)}getWholeWords(){var i,n;return(n=(i=this.wholeWords)===null||i===void 0?void 0:i.checked)!==null&&n!==void 0?n:!1}setWholeWords(i){this.wholeWords&&(this.wholeWords.checked=i)}getRegex(){var i,n;return(n=(i=this.regex)===null||i===void 0?void 0:i.checked)!==null&&n!==void 0?n:!1}setRegex(i){this.regex&&(this.regex.checked=i,this.validate())}focusOnCaseSensitive(){var i;(i=this.caseSensitive)===null||i===void 0||i.focus()}highlightFindOptions(){this.domNode.classList.remove(\"highlight-\"+this._lastHighlightFindOptions),this._lastHighlightFindOptions=1-this._lastHighlightFindOptions,this.domNode.classList.add(\"highlight-\"+this._lastHighlightFindOptions)}validate(){this.inputBox.validate()}showMessage(i){this.inputBox.showMessage(i)}clearMessage(){this.inputBox.hideMessage()}}e.FindInput=C}),define(ne[582],se([1,0,7,153,227,83,25,6,554,267]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ReplaceInput=void 0;const g=_.localize(0,null),C=_.localize(1,null);class s extends k.Toggle{constructor(t){super({icon:S.Codicon.preserveCase,title:C+t.appendTitle,isChecked:t.isChecked,inputActiveOptionBorder:t.inputActiveOptionBorder,inputActiveOptionForeground:t.inputActiveOptionForeground,inputActiveOptionBackground:t.inputActiveOptionBackground})}}class i extends D.Widget{constructor(t,a,u,h){super(),this._showOptionButtons=u,this.fixFocusOnOptionClickEnabled=!0,this.cachedOptionsWidth=0,this._onDidOptionChange=this._register(new f.Emitter),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new f.Emitter),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new f.Emitter),this._onInput=this._register(new f.Emitter),this._onKeyUp=this._register(new f.Emitter),this._onPreserveCaseKeyDown=this._register(new f.Emitter),this.onPreserveCaseKeyDown=this._onPreserveCaseKeyDown.event,this.contextViewProvider=a,this.placeholder=h.placeholder||\"\",this.validation=h.validation,this.label=h.label||g;const r=h.appendPreserveCaseLabel||\"\",c=h.history||[],o=!!h.flexibleHeight,d=!!h.flexibleWidth,l=h.flexibleMaxHeight;this.domNode=document.createElement(\"div\"),this.domNode.classList.add(\"monaco-findInput\"),this.inputBox=this._register(new y.HistoryInputBox(this.domNode,this.contextViewProvider,{ariaLabel:this.label||\"\",placeholder:this.placeholder||\"\",validationOptions:{validation:this.validation},history:c,showHistoryHint:h.showHistoryHint,flexibleHeight:o,flexibleWidth:d,flexibleMaxHeight:l,inputBoxStyles:h.inputBoxStyles})),this.preserveCase=this._register(new s(Object.assign({appendTitle:r,isChecked:!1},h.toggleStyles))),this._register(this.preserveCase.onChange(v=>{this._onDidOptionChange.fire(v),!v&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.preserveCase.onKeyDown(v=>{this._onPreserveCaseKeyDown.fire(v)})),this._showOptionButtons?this.cachedOptionsWidth=this.preserveCase.width():this.cachedOptionsWidth=0;const p=[this.preserveCase.domNode];this.onkeydown(this.domNode,v=>{if(v.equals(15)||v.equals(17)||v.equals(9)){const b=p.indexOf(document.activeElement);if(b>=0){let w=-1;v.equals(17)?w=(b+1)%p.length:v.equals(15)&&(b===0?w=p.length-1:w=b-1),v.equals(9)?(p[b].blur(),this.inputBox.focus()):w>=0&&p[w].focus(),L.EventHelper.stop(v,!0)}}});const m=document.createElement(\"div\");m.className=\"controls\",m.style.display=this._showOptionButtons?\"block\":\"none\",m.appendChild(this.preserveCase.domNode),this.domNode.appendChild(m),t?.appendChild(this.domNode),this.onkeydown(this.inputBox.inputElement,v=>this._onKeyDown.fire(v)),this.onkeyup(this.inputBox.inputElement,v=>this._onKeyUp.fire(v)),this.oninput(this.inputBox.inputElement,v=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,v=>this._onMouseDown.fire(v))}enable(){this.domNode.classList.remove(\"disabled\"),this.inputBox.enable(),this.preserveCase.enable()}disable(){this.domNode.classList.add(\"disabled\"),this.inputBox.disable(),this.preserveCase.disable()}setEnabled(t){t?this.enable():this.disable()}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getPreserveCase(){return this.preserveCase.checked}setPreserveCase(t){this.preserveCase.checked=t}focusOnPreserve(){this.preserveCase.focus()}validate(){var t;(t=this.inputBox)===null||t===void 0||t.validate()}set width(t){this.inputBox.paddingRight=this.cachedOptionsWidth,this.domNode.style.width=t+\"px\"}dispose(){super.dispose()}}e.ReplaceInput=i}),define(ne[583],se([1,0,52,61,7,44,60,68,131,306,75,39,13,25,26,120,2,17,11]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.formatRule=e.cleanMnemonic=e.Menu=e.Direction=e.MENU_ESCAPED_MNEMONIC_REGEX=e.MENU_MNEMONIC_REGEX=void 0,e.MENU_MNEMONIC_REGEX=/\\(&([^\\s&])\\)|(^|[^&])&([^\\s&])/,e.MENU_ESCAPED_MNEMONIC_REGEX=/(&amp;)?(&amp;)([^\\s&])/g;var c;(function(w){w[w.Right=0]=\"Right\",w[w.Left=1]=\"Left\"})(c||(e.Direction=c={}));class o extends f.ActionBar{constructor(E,I,M,P){E.classList.add(\"monaco-menu-container\"),E.setAttribute(\"role\",\"presentation\");const x=document.createElement(\"div\");x.classList.add(\"monaco-menu\"),x.setAttribute(\"role\",\"presentation\"),super(x,{orientation:1,actionViewItemProvider:N=>this.doGetActionViewItem(N,M,T),context:M.context,actionRunner:M.actionRunner,ariaLabel:M.ariaLabel,ariaRole:\"menu\",focusOnlyEnabledItems:!0,triggerKeys:{keys:[3,...h.isMacintosh||h.isLinux?[10]:[]],keyDown:!0}}),this.menuStyles=P,this.menuElement=x,this.actionsList.tabIndex=0,this.menuDisposables=this._register(new u.DisposableStore),this.initializeOrUpdateStyleSheet(E,P),this._register(k.Gesture.addTarget(x)),(0,y.addDisposableListener)(x,y.EventType.KEY_DOWN,N=>{new D.StandardKeyboardEvent(N).equals(2)&&N.preventDefault()}),M.enableMnemonics&&this.menuDisposables.add((0,y.addDisposableListener)(x,y.EventType.KEY_DOWN,N=>{const F=N.key.toLocaleLowerCase();if(this.mnemonics.has(F)){y.EventHelper.stop(N,!0);const O=this.mnemonics.get(F);if(O.length===1&&(O[0]instanceof l&&O[0].container&&this.focusItemByElement(O[0].container),O[0].onClick(N)),O.length>1){const W=O.shift();W&&W.container&&(this.focusItemByElement(W.container),O.push(W)),this.mnemonics.set(F,O)}}})),h.isLinux&&this._register((0,y.addDisposableListener)(x,y.EventType.KEY_DOWN,N=>{const F=new D.StandardKeyboardEvent(N);F.equals(14)||F.equals(11)?(this.focusedItem=this.viewItems.length-1,this.focusNext(),y.EventHelper.stop(N,!0)):(F.equals(13)||F.equals(12))&&(this.focusedItem=0,this.focusPrevious(),y.EventHelper.stop(N,!0))})),this._register((0,y.addDisposableListener)(this.domNode,y.EventType.MOUSE_OUT,N=>{const F=N.relatedTarget;(0,y.isAncestor)(F,this.domNode)||(this.focusedItem=void 0,this.updateFocus(),N.stopPropagation())})),this._register((0,y.addDisposableListener)(this.actionsList,y.EventType.MOUSE_OVER,N=>{let F=N.target;if(!(!F||!(0,y.isAncestor)(F,this.actionsList)||F===this.actionsList)){for(;F.parentElement!==this.actionsList&&F.parentElement!==null;)F=F.parentElement;if(F.classList.contains(\"action-item\")){const O=this.focusedItem;this.setFocusedItem(F),O!==this.focusedItem&&this.updateFocus()}}})),this._register(k.Gesture.addTarget(this.actionsList)),this._register((0,y.addDisposableListener)(this.actionsList,k.EventType.Tap,N=>{let F=N.initialTarget;if(!(!F||!(0,y.isAncestor)(F,this.actionsList)||F===this.actionsList)){for(;F.parentElement!==this.actionsList&&F.parentElement!==null;)F=F.parentElement;if(F.classList.contains(\"action-item\")){const O=this.focusedItem;this.setFocusedItem(F),O!==this.focusedItem&&this.updateFocus()}}}));const T={parent:this};this.mnemonics=new Map,this.scrollableElement=this._register(new C.DomScrollableElement(x,{alwaysConsumeMouseWheel:!0,horizontal:2,vertical:3,verticalScrollbarSize:7,handleMouseWheel:!0,useShadows:!0}));const A=this.scrollableElement.getDomNode();A.style.position=\"\",this.styleScrollElement(A,P),this._register((0,y.addDisposableListener)(x,k.EventType.Change,N=>{y.EventHelper.stop(N,!0);const F=this.scrollableElement.getScrollPosition().scrollTop;this.scrollableElement.setScrollPosition({scrollTop:F-N.translationY})})),this._register((0,y.addDisposableListener)(A,y.EventType.MOUSE_UP,N=>{N.preventDefault()})),x.style.maxHeight=`${Math.max(10,window.innerHeight-E.getBoundingClientRect().top-35)}px`,I=I.filter(N=>{var F;return!((F=M.submenuIds)===null||F===void 0)&&F.has(N.id)?(console.warn(`Found submenu cycle: ${N.id}`),!1):!0}),this.push(I,{icon:!0,label:!0,isMenu:!0}),E.appendChild(this.scrollableElement.getDomNode()),this.scrollableElement.scanDomNode(),this.viewItems.filter(N=>!(N instanceof p)).forEach((N,F,O)=>{N.updatePositionInSet(F+1,O.length)})}initializeOrUpdateStyleSheet(E,I){this.styleSheet||((0,y.isInShadowDOM)(E)?this.styleSheet=(0,y.createStyleSheet)(E):(o.globalStyleSheet||(o.globalStyleSheet=(0,y.createStyleSheet)()),this.styleSheet=o.globalStyleSheet)),this.styleSheet.textContent=b(I,(0,y.isInShadowDOM)(E))}styleScrollElement(E,I){var M,P;const x=(M=I.foregroundColor)!==null&&M!==void 0?M:\"\",T=(P=I.backgroundColor)!==null&&P!==void 0?P:\"\",A=I.borderColor?`1px solid ${I.borderColor}`:\"\",N=\"5px\",F=I.shadowColor?`0 2px 8px ${I.shadowColor}`:\"\";E.style.outline=A,E.style.borderRadius=N,E.style.color=x,E.style.backgroundColor=T,E.style.boxShadow=F}getContainer(){return this.scrollableElement.getDomNode()}get onScroll(){return this.scrollableElement.onScroll}focusItemByElement(E){const I=this.focusedItem;this.setFocusedItem(E),I!==this.focusedItem&&this.updateFocus()}setFocusedItem(E){for(let I=0;I<this.actionsList.children.length;I++){const M=this.actionsList.children[I];if(E===M){this.focusedItem=I;break}}}updateFocus(E){super.updateFocus(E,!0,!0),typeof this.focusedItem<\"u\"&&this.scrollableElement.setScrollPosition({scrollTop:Math.round(this.menuElement.scrollTop)})}doGetActionViewItem(E,I,M){if(E instanceof s.Separator)return new p(I.context,E,{icon:!0},this.menuStyles);if(E instanceof s.SubmenuAction){const P=new l(E,E.actions,M,Object.assign(Object.assign({},I),{submenuIds:new Set([...I.submenuIds||[],E.id])}),this.menuStyles);if(I.enableMnemonics){const x=P.getMnemonic();if(x&&P.isEnabled()){let T=[];this.mnemonics.has(x)&&(T=this.mnemonics.get(x)),T.push(P),this.mnemonics.set(x,T)}}return P}else{const P={enableMnemonics:I.enableMnemonics,useEventAsContext:I.useEventAsContext};if(I.getKeyBinding){const T=I.getKeyBinding(E);if(T){const A=T.getLabel();A&&(P.keybinding=A)}}const x=new d(I.context,E,P,this.menuStyles);if(I.enableMnemonics){const T=x.getMnemonic();if(T&&x.isEnabled()){let A=[];this.mnemonics.has(T)&&(A=this.mnemonics.get(T)),A.push(x),this.mnemonics.set(T,A)}}return x}}}e.Menu=o;class d extends _.BaseActionViewItem{constructor(E,I,M,P){if(M.isMenu=!0,super(I,I,M),this.menuStyle=P,this.options=M,this.options.icon=M.icon!==void 0?M.icon:!1,this.options.label=M.label!==void 0?M.label:!0,this.cssClass=\"\",this.options.label&&M.enableMnemonics){const x=this.action.label;if(x){const T=e.MENU_MNEMONIC_REGEX.exec(x);T&&(this.mnemonic=(T[1]?T[1]:T[3]).toLocaleLowerCase())}}this.runOnceToEnableMouseUp=new i.RunOnceScheduler(()=>{this.element&&(this._register((0,y.addDisposableListener)(this.element,y.EventType.MOUSE_UP,x=>{if(y.EventHelper.stop(x,!0),L.isFirefox){if(new S.StandardMouseEvent(x).rightButton)return;this.onClick(x)}else setTimeout(()=>{this.onClick(x)},0)})),this._register((0,y.addDisposableListener)(this.element,y.EventType.CONTEXT_MENU,x=>{y.EventHelper.stop(x,!0)})))},100),this._register(this.runOnceToEnableMouseUp)}render(E){super.render(E),this.element&&(this.container=E,this.item=(0,y.append)(this.element,(0,y.$)(\"a.action-menu-item\")),this._action.id===s.Separator.ID?this.item.setAttribute(\"role\",\"presentation\"):(this.item.setAttribute(\"role\",\"menuitem\"),this.mnemonic&&this.item.setAttribute(\"aria-keyshortcuts\",`${this.mnemonic}`)),this.check=(0,y.append)(this.item,(0,y.$)(\"span.menu-item-check\"+t.ThemeIcon.asCSSSelector(n.Codicon.menuSelection))),this.check.setAttribute(\"role\",\"none\"),this.label=(0,y.append)(this.item,(0,y.$)(\"span.action-label\")),this.options.label&&this.options.keybinding&&((0,y.append)(this.item,(0,y.$)(\"span.keybinding\")).textContent=this.options.keybinding),this.runOnceToEnableMouseUp.schedule(),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked(),this.applyStyle())}blur(){super.blur(),this.applyStyle()}focus(){var E;super.focus(),(E=this.item)===null||E===void 0||E.focus(),this.applyStyle()}updatePositionInSet(E,I){this.item&&(this.item.setAttribute(\"aria-posinset\",`${E}`),this.item.setAttribute(\"aria-setsize\",`${I}`))}updateLabel(){var E;if(this.label&&this.options.label){(0,y.clearNode)(this.label);let I=(0,a.stripIcons)(this.action.label);if(I){const M=m(I);this.options.enableMnemonics||(I=M),this.label.setAttribute(\"aria-label\",M.replace(/&&/g,\"&\"));const P=e.MENU_MNEMONIC_REGEX.exec(I);if(P){I=r.escape(I),e.MENU_ESCAPED_MNEMONIC_REGEX.lastIndex=0;let x=e.MENU_ESCAPED_MNEMONIC_REGEX.exec(I);for(;x&&x[1];)x=e.MENU_ESCAPED_MNEMONIC_REGEX.exec(I);const T=A=>A.replace(/&amp;&amp;/g,\"&amp;\");x?this.label.append(r.ltrim(T(I.substr(0,x.index)),\" \"),(0,y.$)(\"u\",{\"aria-hidden\":\"true\"},x[3]),r.rtrim(T(I.substr(x.index+x[0].length)),\" \")):this.label.innerText=T(I).trim(),(E=this.item)===null||E===void 0||E.setAttribute(\"aria-keyshortcuts\",(P[1]?P[1]:P[3]).toLocaleLowerCase())}else this.label.innerText=I.replace(/&&/g,\"&\").trim()}}}updateTooltip(){}updateClass(){this.cssClass&&this.item&&this.item.classList.remove(...this.cssClass.split(\" \")),this.options.icon&&this.label?(this.cssClass=this.action.class||\"\",this.label.classList.add(\"icon\"),this.cssClass&&this.label.classList.add(...this.cssClass.split(\" \")),this.updateEnabled()):this.label&&this.label.classList.remove(\"icon\")}updateEnabled(){this.action.enabled?(this.element&&(this.element.classList.remove(\"disabled\"),this.element.removeAttribute(\"aria-disabled\")),this.item&&(this.item.classList.remove(\"disabled\"),this.item.removeAttribute(\"aria-disabled\"),this.item.tabIndex=0)):(this.element&&(this.element.classList.add(\"disabled\"),this.element.setAttribute(\"aria-disabled\",\"true\")),this.item&&(this.item.classList.add(\"disabled\"),this.item.setAttribute(\"aria-disabled\",\"true\")))}updateChecked(){if(!this.item)return;const E=this.action.checked;this.item.classList.toggle(\"checked\",!!E),E!==void 0?(this.item.setAttribute(\"role\",\"menuitemcheckbox\"),this.item.setAttribute(\"aria-checked\",E?\"true\":\"false\")):(this.item.setAttribute(\"role\",\"menuitem\"),this.item.setAttribute(\"aria-checked\",\"\"))}getMnemonic(){return this.mnemonic}applyStyle(){const E=this.element&&this.element.classList.contains(\"focused\"),I=E&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor,M=E&&this.menuStyle.selectionBackgroundColor?this.menuStyle.selectionBackgroundColor:void 0,P=E&&this.menuStyle.selectionBorderColor?`1px solid ${this.menuStyle.selectionBorderColor}`:\"\",x=E&&this.menuStyle.selectionBorderColor?\"-1px\":\"\";this.item&&(this.item.style.color=I??\"\",this.item.style.backgroundColor=M??\"\",this.item.style.outline=P,this.item.style.outlineOffset=x),this.check&&(this.check.style.color=I??\"\")}}class l extends d{constructor(E,I,M,P,x){super(E,E,P,x),this.submenuActions=I,this.parentData=M,this.submenuOptions=P,this.mysubmenu=null,this.submenuDisposables=this._register(new u.DisposableStore),this.mouseOver=!1,this.expandDirection=P&&P.expandDirection!==void 0?P.expandDirection:c.Right,this.showScheduler=new i.RunOnceScheduler(()=>{this.mouseOver&&(this.cleanupExistingSubmenu(!1),this.createSubmenu(!1))},250),this.hideScheduler=new i.RunOnceScheduler(()=>{this.element&&!(0,y.isAncestor)((0,y.getActiveElement)(),this.element)&&this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))},750)}render(E){super.render(E),this.element&&(this.item&&(this.item.classList.add(\"monaco-submenu-item\"),this.item.tabIndex=0,this.item.setAttribute(\"aria-haspopup\",\"true\"),this.updateAriaExpanded(\"false\"),this.submenuIndicator=(0,y.append)(this.item,(0,y.$)(\"span.submenu-indicator\"+t.ThemeIcon.asCSSSelector(n.Codicon.menuSubmenu))),this.submenuIndicator.setAttribute(\"aria-hidden\",\"true\")),this._register((0,y.addDisposableListener)(this.element,y.EventType.KEY_UP,I=>{const M=new D.StandardKeyboardEvent(I);(M.equals(17)||M.equals(3))&&(y.EventHelper.stop(I,!0),this.createSubmenu(!0))})),this._register((0,y.addDisposableListener)(this.element,y.EventType.KEY_DOWN,I=>{const M=new D.StandardKeyboardEvent(I);(0,y.getActiveElement)()===this.item&&(M.equals(17)||M.equals(3))&&y.EventHelper.stop(I,!0)})),this._register((0,y.addDisposableListener)(this.element,y.EventType.MOUSE_OVER,I=>{this.mouseOver||(this.mouseOver=!0,this.showScheduler.schedule())})),this._register((0,y.addDisposableListener)(this.element,y.EventType.MOUSE_LEAVE,I=>{this.mouseOver=!1})),this._register((0,y.addDisposableListener)(this.element,y.EventType.FOCUS_OUT,I=>{this.element&&!(0,y.isAncestor)((0,y.getActiveElement)(),this.element)&&this.hideScheduler.schedule()})),this._register(this.parentData.parent.onScroll(()=>{this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))})))}updateEnabled(){}onClick(E){y.EventHelper.stop(E,!0),this.cleanupExistingSubmenu(!1),this.createSubmenu(!0)}cleanupExistingSubmenu(E){if(this.parentData.submenu&&(E||this.parentData.submenu!==this.mysubmenu)){try{this.parentData.submenu.dispose()}catch{}this.parentData.submenu=void 0,this.updateAriaExpanded(\"false\"),this.submenuContainer&&(this.submenuDisposables.clear(),this.submenuContainer=void 0)}}calculateSubmenuMenuLayout(E,I,M,P){const x={top:0,left:0};return x.left=(0,g.layout)(E.width,I.width,{position:P===c.Right?0:1,offset:M.left,size:M.width}),x.left>=M.left&&x.left<M.left+M.width&&(M.left+10+I.width<=E.width&&(x.left=M.left+10),M.top+=10,M.height=0),x.top=(0,g.layout)(E.height,I.height,{position:0,offset:M.top,size:0}),x.top+I.height===M.top&&x.top+M.height+I.height<=E.height&&(x.top+=M.height),x}createSubmenu(E=!0){if(this.element)if(this.parentData.submenu)this.parentData.submenu.focus(!1);else{this.updateAriaExpanded(\"true\"),this.submenuContainer=(0,y.append)(this.element,(0,y.$)(\"div.monaco-submenu\")),this.submenuContainer.classList.add(\"menubar-menu-items-holder\",\"context-view\");const I=getComputedStyle(this.parentData.parent.domNode),M=parseFloat(I.paddingTop||\"0\")||0;this.submenuContainer.style.zIndex=\"1\",this.submenuContainer.style.position=\"fixed\",this.submenuContainer.style.top=\"0\",this.submenuContainer.style.left=\"0\",this.parentData.submenu=new o(this.submenuContainer,this.submenuActions.length?this.submenuActions:[new s.EmptySubmenuAction],this.submenuOptions,this.menuStyle);const P=this.element.getBoundingClientRect(),x={top:P.top-M,left:P.left,height:P.height+2*M,width:P.width},T=this.submenuContainer.getBoundingClientRect(),{top:A,left:N}=this.calculateSubmenuMenuLayout(new y.Dimension(window.innerWidth,window.innerHeight),y.Dimension.lift(T),x,this.expandDirection);this.submenuContainer.style.left=`${N-T.left}px`,this.submenuContainer.style.top=`${A-T.top}px`,this.submenuDisposables.add((0,y.addDisposableListener)(this.submenuContainer,y.EventType.KEY_UP,F=>{new D.StandardKeyboardEvent(F).equals(15)&&(y.EventHelper.stop(F,!0),this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0))})),this.submenuDisposables.add((0,y.addDisposableListener)(this.submenuContainer,y.EventType.KEY_DOWN,F=>{new D.StandardKeyboardEvent(F).equals(15)&&y.EventHelper.stop(F,!0)})),this.submenuDisposables.add(this.parentData.submenu.onDidCancel(()=>{this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0)})),this.parentData.submenu.focus(E),this.mysubmenu=this.parentData.submenu}}updateAriaExpanded(E){var I;this.item&&((I=this.item)===null||I===void 0||I.setAttribute(\"aria-expanded\",E))}applyStyle(){super.applyStyle();const I=this.element&&this.element.classList.contains(\"focused\")&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor;this.submenuIndicator&&(this.submenuIndicator.style.color=I??\"\")}dispose(){super.dispose(),this.hideScheduler.dispose(),this.mysubmenu&&(this.mysubmenu.dispose(),this.mysubmenu=null),this.submenuContainer&&(this.submenuContainer=void 0)}}class p extends _.ActionViewItem{constructor(E,I,M,P){super(E,I,M),this.menuStyles=P}render(E){super.render(E),this.label&&(this.label.style.borderBottomColor=this.menuStyles.separatorColor?`${this.menuStyles.separatorColor}`:\"\")}}function m(w){const E=e.MENU_MNEMONIC_REGEX,I=E.exec(w);if(!I)return w;const M=!I[1];return w.replace(E,M?\"$2$3\":\"\").trim()}e.cleanMnemonic=m;function v(w){const E=(0,n.getCodiconFontCharacters)()[w.id];return`.codicon-${w.id}:before { content: '\\\\${E.toString(16)}'; }`}e.formatRule=v;function b(w,E){let I=`\n.monaco-menu {\n\tfont-size: 13px;\n\tborder-radius: 5px;\n\tmin-width: 160px;\n}\n\n${v(n.Codicon.menuSelection)}\n${v(n.Codicon.menuSubmenu)}\n\n.monaco-menu .monaco-action-bar {\n\ttext-align: right;\n\toverflow: hidden;\n\twhite-space: nowrap;\n}\n\n.monaco-menu .monaco-action-bar .actions-container {\n\tdisplay: flex;\n\tmargin: 0 auto;\n\tpadding: 0;\n\twidth: 100%;\n\tjustify-content: flex-end;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar.reverse .actions-container {\n\tflex-direction: row-reverse;\n}\n\n.monaco-menu .monaco-action-bar .action-item {\n\tcursor: pointer;\n\tdisplay: inline-block;\n\ttransition: transform 50ms ease;\n\tposition: relative;  /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled {\n\tcursor: default;\n}\n\n.monaco-menu .monaco-action-bar.animated .action-item.active {\n\ttransform: scale(1.272019649, 1.272019649); /* 1.272019649 = \\u221A\\u03C6 */\n}\n\n.monaco-menu .monaco-action-bar .action-item .icon,\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar .action-label {\n\tfont-size: 11px;\n\tmargin-right: 4px;\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label,\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover {\n\tcolor: var(--vscode-disabledForeground);\n}\n\n/* Vertical actions */\n\n.monaco-menu .monaco-action-bar.vertical {\n\ttext-align: left;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tdisplay: block;\n\tborder-bottom: 1px solid var(--vscode-menu-separatorBackground);\n\tpadding-top: 1px;\n\tpadding: 30px;\n}\n\n.monaco-menu .secondary-actions .monaco-action-bar .action-label {\n\tmargin-left: 6px;\n}\n\n/* Action Items */\n.monaco-menu .monaco-action-bar .action-item.select-container {\n\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\n\tflex: 1;\n\tmax-width: 170px;\n\tmin-width: 60px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-right: 10px;\n}\n\n.monaco-menu .monaco-action-bar.vertical {\n\tmargin-left: 0;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tpadding: 0;\n\ttransform: none;\n\tdisplay: flex;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.active {\n\ttransform: none;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\tflex: 1 1 auto;\n\tdisplay: flex;\n\theight: 2em;\n\talign-items: center;\n\tposition: relative;\n\tmargin: 0 4px;\n\tborder-radius: 4px;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .keybinding,\n.monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .keybinding {\n\topacity: unset;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label {\n\tflex: 1 1 auto;\n\ttext-decoration: none;\n\tpadding: 0 1em;\n\tbackground: none;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .keybinding,\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tdisplay: inline-block;\n\tflex: 2 1 auto;\n\tpadding: 0 1em;\n\ttext-align: right;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon {\n\tfont-size: 16px !important;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before {\n\tmargin-left: auto;\n\tmargin-right: -20px;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding,\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator {\n\topacity: 0.4;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) {\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\tmargin: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tposition: static;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu {\n\tposition: absolute;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\twidth: 100%;\n\theight: 0px !important;\n\topacity: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator.text {\n\tpadding: 0.7em 1em 0.1em 1em;\n\tfont-weight: bold;\n\topacity: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:hover {\n\tcolor: inherit;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tposition: absolute;\n\tvisibility: hidden;\n\twidth: 1em;\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check {\n\tvisibility: visible;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* Context Menu */\n\n.context-view.monaco-menu-container {\n\toutline: 0;\n\tborder: none;\n\tanimation: fadeIn 0.083s linear;\n\t-webkit-app-region: no-drag;\n}\n\n.context-view.monaco-menu-container :focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical:focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical :focus {\n\toutline: 0;\n}\n\n.hc-black .context-view.monaco-menu-container,\n.hc-light .context-view.monaco-menu-container,\n:host-context(.hc-black) .context-view.monaco-menu-container,\n:host-context(.hc-light) .context-view.monaco-menu-container {\n\tbox-shadow: none;\n}\n\n.hc-black .monaco-menu .monaco-action-bar.vertical .action-item.focused,\n.hc-light .monaco-menu .monaco-action-bar.vertical .action-item.focused,\n:host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused,\n:host-context(.hc-light) .monaco-menu .monaco-action-bar.vertical .action-item.focused {\n\tbackground: none;\n}\n\n/* Vertical Action Bar Styles */\n\n.monaco-menu .monaco-action-bar.vertical {\n\tpadding: 4px 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\theight: 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator),\n.monaco-menu .monaco-action-bar.vertical .keybinding {\n\tfont-size: inherit;\n\tpadding: 0 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tfont-size: inherit;\n\twidth: 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tfont-size: inherit;\n\tmargin: 5px 0 !important;\n\tpadding: 0;\n\tborder-radius: 0;\n}\n\n.linux .monaco-menu .monaco-action-bar.vertical .action-label.separator,\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tfont-size: 60%;\n\tpadding: 0 1.8em;\n}\n\n.linux .monaco-menu .monaco-action-bar.vertical .submenu-indicator,\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n\tmask-size: 10px 10px;\n\t-webkit-mask-size: 10px 10px;\n}\n\n.monaco-menu .action-item {\n\tcursor: default;\n}`;if(E){I+=`\n\t\t\t/* Arrows */\n\t\t\t.monaco-scrollable-element > .scrollbar > .scra {\n\t\t\t\tcursor: pointer;\n\t\t\t\tfont-size: 11px !important;\n\t\t\t}\n\n\t\t\t.monaco-scrollable-element > .visible {\n\t\t\t\topacity: 1;\n\n\t\t\t\t/* Background rule added for IE9 - to allow clicks on dom node */\n\t\t\t\tbackground:rgba(0,0,0,0);\n\n\t\t\t\ttransition: opacity 100ms linear;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .invisible {\n\t\t\t\topacity: 0;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .invisible.fade {\n\t\t\t\ttransition: opacity 800ms linear;\n\t\t\t}\n\n\t\t\t/* Scrollable Content Inset Shadow */\n\t\t\t.monaco-scrollable-element > .shadow {\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .shadow.top {\n\t\t\t\tdisplay: block;\n\t\t\t\ttop: 0;\n\t\t\t\tleft: 3px;\n\t\t\t\theight: 3px;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .shadow.left {\n\t\t\t\tdisplay: block;\n\t\t\t\ttop: 3px;\n\t\t\t\tleft: 0;\n\t\t\t\theight: 100%;\n\t\t\t\twidth: 3px;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .shadow.top-left-corner {\n\t\t\t\tdisplay: block;\n\t\t\t\ttop: 0;\n\t\t\t\tleft: 0;\n\t\t\t\theight: 3px;\n\t\t\t\twidth: 3px;\n\t\t\t}\n\t\t`;const M=w.scrollbarShadow;M&&(I+=`\n\t\t\t\t.monaco-scrollable-element > .shadow.top {\n\t\t\t\t\tbox-shadow: ${M} 0 6px 6px -6px inset;\n\t\t\t\t}\n\n\t\t\t\t.monaco-scrollable-element > .shadow.left {\n\t\t\t\t\tbox-shadow: ${M} 6px 0 6px -6px inset;\n\t\t\t\t}\n\n\t\t\t\t.monaco-scrollable-element > .shadow.top.left {\n\t\t\t\t\tbox-shadow: ${M} 6px 6px 6px -6px inset;\n\t\t\t\t}\n\t\t\t`);const P=w.scrollbarSliderBackground;P&&(I+=`\n\t\t\t\t.monaco-scrollable-element > .scrollbar > .slider {\n\t\t\t\t\tbackground: ${P};\n\t\t\t\t}\n\t\t\t`);const x=w.scrollbarSliderHoverBackground;x&&(I+=`\n\t\t\t\t.monaco-scrollable-element > .scrollbar > .slider:hover {\n\t\t\t\t\tbackground: ${x};\n\t\t\t\t}\n\t\t\t`);const T=w.scrollbarSliderActiveBackground;T&&(I+=`\n\t\t\t\t.monaco-scrollable-element > .scrollbar > .slider.active {\n\t\t\t\t\tbackground: ${T};\n\t\t\t\t}\n\t\t\t`)}return I}}),define(ne[584],se([1,0,68,315,39,25,26,6,2,560,412]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ToggleMenuAction=e.ToolBar=void 0;class C extends _.Disposable{constructor(n,t,a={orientation:0}){super(),this.submenuActionViewItems=[],this.hasSecondaryActions=!1,this._onDidChangeDropdownVisibility=this._register(new f.EventMultiplexer),this.onDidChangeDropdownVisibility=this._onDidChangeDropdownVisibility.event,this.disposables=this._register(new _.DisposableStore),this.options=a,this.lookupKeybindings=typeof this.options.getKeyBinding==\"function\",this.toggleMenuAction=this._register(new s(()=>{var u;return(u=this.toggleMenuActionViewItem)===null||u===void 0?void 0:u.show()},a.toggleMenuTitle)),this.element=document.createElement(\"div\"),this.element.className=\"monaco-toolbar\",n.appendChild(this.element),this.actionBar=this._register(new L.ActionBar(this.element,{orientation:a.orientation,ariaLabel:a.ariaLabel,actionRunner:a.actionRunner,allowContextMenu:a.allowContextMenu,highlightToggledItems:a.highlightToggledItems,actionViewItemProvider:(u,h)=>{var r;if(u.id===s.ID)return this.toggleMenuActionViewItem=new k.DropdownMenuActionViewItem(u,u.menuActions,t,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:S.ThemeIcon.asClassNameArray((r=a.moreIcon)!==null&&r!==void 0?r:D.Codicon.toolBarMore),anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry}),this.toggleMenuActionViewItem.setActionContext(this.actionBar.context),this.disposables.add(this._onDidChangeDropdownVisibility.add(this.toggleMenuActionViewItem.onDidChangeVisibility)),this.toggleMenuActionViewItem;if(a.actionViewItemProvider){const c=a.actionViewItemProvider(u,h);if(c)return c}if(u instanceof y.SubmenuAction){const c=new k.DropdownMenuActionViewItem(u,u.actions,t,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:u.class,anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry});return c.setActionContext(this.actionBar.context),this.submenuActionViewItems.push(c),this.disposables.add(this._onDidChangeDropdownVisibility.add(c.onDidChangeVisibility)),c}}}))}set actionRunner(n){this.actionBar.actionRunner=n}get actionRunner(){return this.actionBar.actionRunner}getElement(){return this.element}getItemAction(n){return this.actionBar.getAction(n)}setActions(n,t){this.clear();const a=n?n.slice(0):[];this.hasSecondaryActions=!!(t&&t.length>0),this.hasSecondaryActions&&t&&(this.toggleMenuAction.menuActions=t.slice(0),a.push(this.toggleMenuAction)),a.forEach(u=>{this.actionBar.push(u,{icon:!0,label:!1,keybinding:this.getKeybindingLabel(u)})})}getKeybindingLabel(n){var t,a,u;const h=this.lookupKeybindings?(a=(t=this.options).getKeyBinding)===null||a===void 0?void 0:a.call(t,n):void 0;return(u=h?.getLabel())!==null&&u!==void 0?u:void 0}clear(){this.submenuActionViewItems=[],this.disposables.clear(),this.actionBar.clear()}dispose(){this.clear(),super.dispose()}}e.ToolBar=C;class s extends y.Action{constructor(n,t){t=t||g.localize(0,null),super(s.ID,t,void 0,!0),this._menuActions=[],this.toggleDropdownMenu=n}run(){return we(this,void 0,void 0,function*(){this.toggleDropdownMenu()})}get menuActions(){return this._menuActions}set menuActions(n){this._menuActions=n}}e.ToggleMenuAction=s,s.ID=\"toolbar.toggle.more\"}),define(ne[184],se([1,0,7,81,44,68,228,227,225,114,153,218,139,39,14,13,25,26,196,6,72,2,141,20,561,413]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractTree=e.TreeFindMatchType=e.TreeFindMode=e.FuzzyToggle=e.ModeToggle=e.RenderIndentGuides=e.ComposedTreeDelegate=void 0;class v extends _.ElementsDragAndDropData{constructor(B){super(B.elements.map(V=>V.element)),this.data=B}}function b(H){return H instanceof _.ElementsDragAndDropData?new v(H):H}class w{constructor(B,V){this.modelProvider=B,this.dnd=V,this.autoExpandDisposable=d.Disposable.None}getDragURI(B){return this.dnd.getDragURI(B.element)}getDragLabel(B,V){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(B.map(Y=>Y.element),V)}onDragStart(B,V){var Y,ie;(ie=(Y=this.dnd).onDragStart)===null||ie===void 0||ie.call(Y,b(B),V)}onDragOver(B,V,Y,ie,ae=!0){const ce=this.dnd.onDragOver(b(B),V&&V.element,Y,ie),de=this.autoExpandNode!==V;if(de&&(this.autoExpandDisposable.dispose(),this.autoExpandNode=V),typeof V>\"u\")return ce;if(de&&typeof ce!=\"boolean\"&&ce.autoExpand&&(this.autoExpandDisposable=(0,a.disposableTimeout)(()=>{const z=this.modelProvider(),ee=z.getNodeLocation(V);z.isCollapsed(ee)&&z.setCollapsed(ee,!1),this.autoExpandNode=void 0},500)),typeof ce==\"boolean\"||!ce.accept||typeof ce.bubble>\"u\"||ce.feedback){if(!ae){const z=typeof ce==\"boolean\"?ce:ce.accept,ee=typeof ce==\"boolean\"?void 0:ce.effect;return{accept:z,effect:ee,feedback:[Y]}}return ce}if(ce.bubble===1){const z=this.modelProvider(),ee=z.getNodeLocation(V),$=z.getParentNodeLocation(ee),re=z.getNode($),oe=$&&z.getListIndex($);return this.onDragOver(B,re,oe,ie,!1)}const he=this.modelProvider(),ue=he.getNodeLocation(V),te=he.getListIndex(ue),q=he.getListRenderCount(ue);return Object.assign(Object.assign({},ce),{feedback:(0,t.range)(te,te+q)})}drop(B,V,Y,ie){this.autoExpandDisposable.dispose(),this.autoExpandNode=void 0,this.dnd.drop(b(B),V&&V.element,Y,ie)}onDragEnd(B){var V,Y;(Y=(V=this.dnd).onDragEnd)===null||Y===void 0||Y.call(V,B)}}function E(H,B){return B&&Object.assign(Object.assign({},B),{identityProvider:B.identityProvider&&{getId(V){return B.identityProvider.getId(V.element)}},dnd:B.dnd&&new w(H,B.dnd),multipleSelectionController:B.multipleSelectionController&&{isSelectionSingleChangeEvent(V){return B.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({},V),{element:V.element}))},isSelectionRangeChangeEvent(V){return B.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({},V),{element:V.element}))}},accessibilityProvider:B.accessibilityProvider&&Object.assign(Object.assign({},B.accessibilityProvider),{getSetSize(V){const Y=H(),ie=Y.getNodeLocation(V),ae=Y.getParentNodeLocation(ie);return Y.getNode(ae).visibleChildrenCount},getPosInSet(V){return V.visibleChildIndex+1},isChecked:B.accessibilityProvider&&B.accessibilityProvider.isChecked?V=>B.accessibilityProvider.isChecked(V.element):void 0,getRole:B.accessibilityProvider&&B.accessibilityProvider.getRole?V=>B.accessibilityProvider.getRole(V.element):()=>\"treeitem\",getAriaLabel(V){return B.accessibilityProvider.getAriaLabel(V.element)},getWidgetAriaLabel(){return B.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:B.accessibilityProvider&&B.accessibilityProvider.getWidgetRole?()=>B.accessibilityProvider.getWidgetRole():()=>\"tree\",getAriaLevel:B.accessibilityProvider&&B.accessibilityProvider.getAriaLevel?V=>B.accessibilityProvider.getAriaLevel(V.element):V=>V.depth,getActiveDescendantId:B.accessibilityProvider.getActiveDescendantId&&(V=>B.accessibilityProvider.getActiveDescendantId(V.element))}),keyboardNavigationLabelProvider:B.keyboardNavigationLabelProvider&&Object.assign(Object.assign({},B.keyboardNavigationLabelProvider),{getKeyboardNavigationLabel(V){return B.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(V.element)}})})}class I{constructor(B){this.delegate=B}getHeight(B){return this.delegate.getHeight(B.element)}getTemplateId(B){return this.delegate.getTemplateId(B.element)}hasDynamicHeight(B){return!!this.delegate.hasDynamicHeight&&this.delegate.hasDynamicHeight(B.element)}setDynamicHeight(B,V){var Y,ie;(ie=(Y=this.delegate).setDynamicHeight)===null||ie===void 0||ie.call(Y,B.element,V)}}e.ComposedTreeDelegate=I;var M;(function(H){H.None=\"none\",H.OnHover=\"onHover\",H.Always=\"always\"})(M||(e.RenderIndentGuides=M={}));class P{get elements(){return this._elements}constructor(B,V=[]){this._elements=V,this.disposables=new d.DisposableStore,this.onDidChange=c.Event.forEach(B,Y=>this._elements=Y,this.disposables)}dispose(){this.disposables.dispose()}}class x{constructor(B,V,Y,ie,ae,ce={}){var de;this.renderer=B,this.modelProvider=V,this.activeNodes=ie,this.renderedIndentGuides=ae,this.renderedElements=new Map,this.renderedNodes=new Map,this.indent=x.DefaultIndent,this.hideTwistiesOfChildlessElements=!1,this.shouldRenderIndentGuides=!1,this.activeIndentNodes=new Set,this.indentGuidesDisposable=d.Disposable.None,this.disposables=new d.DisposableStore,this.templateId=B.templateId,this.updateOptions(ce),c.Event.map(Y,he=>he.node)(this.onDidChangeNodeTwistieState,this,this.disposables),(de=B.onDidChangeTwistieState)===null||de===void 0||de.call(B,this.onDidChangeTwistieState,this,this.disposables)}updateOptions(B={}){if(typeof B.indent<\"u\"){const V=(0,l.clamp)(B.indent,0,40);if(V!==this.indent){this.indent=V;for(const[Y,ie]of this.renderedNodes)this.renderTreeElement(Y,ie)}}if(typeof B.renderIndentGuides<\"u\"){const V=B.renderIndentGuides!==M.None;if(V!==this.shouldRenderIndentGuides){this.shouldRenderIndentGuides=V;for(const[Y,ie]of this.renderedNodes)this._renderIndentGuides(Y,ie);if(this.indentGuidesDisposable.dispose(),V){const Y=new d.DisposableStore;this.activeNodes.onDidChange(this._onDidChangeActiveNodes,this,Y),this.indentGuidesDisposable=Y,this._onDidChangeActiveNodes(this.activeNodes.elements)}}}typeof B.hideTwistiesOfChildlessElements<\"u\"&&(this.hideTwistiesOfChildlessElements=B.hideTwistiesOfChildlessElements)}renderTemplate(B){const V=(0,L.append)(B,(0,L.$)(\".monaco-tl-row\")),Y=(0,L.append)(V,(0,L.$)(\".monaco-tl-indent\")),ie=(0,L.append)(V,(0,L.$)(\".monaco-tl-twistie\")),ae=(0,L.append)(V,(0,L.$)(\".monaco-tl-contents\")),ce=this.renderer.renderTemplate(ae);return{container:B,indent:Y,twistie:ie,indentGuidesDisposable:d.Disposable.None,templateData:ce}}renderElement(B,V,Y,ie){this.renderedNodes.set(B,Y),this.renderedElements.set(B.element,B),this.renderTreeElement(B,Y),this.renderer.renderElement(B,V,Y.templateData,ie)}disposeElement(B,V,Y,ie){var ae,ce;Y.indentGuidesDisposable.dispose(),(ce=(ae=this.renderer).disposeElement)===null||ce===void 0||ce.call(ae,B,V,Y.templateData,ie),typeof ie==\"number\"&&(this.renderedNodes.delete(B),this.renderedElements.delete(B.element))}disposeTemplate(B){this.renderer.disposeTemplate(B.templateData)}onDidChangeTwistieState(B){const V=this.renderedElements.get(B);V&&this.onDidChangeNodeTwistieState(V)}onDidChangeNodeTwistieState(B){const V=this.renderedNodes.get(B);V&&(this._onDidChangeActiveNodes(this.activeNodes.elements),this.renderTreeElement(B,V))}renderTreeElement(B,V){const Y=x.DefaultIndent+(B.depth-1)*this.indent;V.twistie.style.paddingLeft=`${Y}px`,V.indent.style.width=`${Y+this.indent-16}px`,B.collapsible?V.container.setAttribute(\"aria-expanded\",String(!B.collapsed)):V.container.removeAttribute(\"aria-expanded\"),V.twistie.classList.remove(...h.ThemeIcon.asClassNameArray(u.Codicon.treeItemExpanded));let ie=!1;this.renderer.renderTwistie&&(ie=this.renderer.renderTwistie(B.element,V.twistie)),B.collapsible&&(!this.hideTwistiesOfChildlessElements||B.visibleChildrenCount>0)?(ie||V.twistie.classList.add(...h.ThemeIcon.asClassNameArray(u.Codicon.treeItemExpanded)),V.twistie.classList.add(\"collapsible\"),V.twistie.classList.toggle(\"collapsed\",B.collapsed)):V.twistie.classList.remove(\"collapsible\",\"collapsed\"),this._renderIndentGuides(B,V)}_renderIndentGuides(B,V){if((0,L.clearNode)(V.indent),V.indentGuidesDisposable.dispose(),!this.shouldRenderIndentGuides)return;const Y=new d.DisposableStore,ie=this.modelProvider();for(;;){const ae=ie.getNodeLocation(B),ce=ie.getParentNodeLocation(ae);if(!ce)break;const de=ie.getNode(ce),he=(0,L.$)(\".indent-guide\",{style:`width: ${this.indent}px`});this.activeIndentNodes.has(de)&&he.classList.add(\"active\"),V.indent.childElementCount===0?V.indent.appendChild(he):V.indent.insertBefore(he,V.indent.firstElementChild),this.renderedIndentGuides.add(de,he),Y.add((0,d.toDisposable)(()=>this.renderedIndentGuides.delete(de,he))),B=de}V.indentGuidesDisposable=Y}_onDidChangeActiveNodes(B){if(!this.shouldRenderIndentGuides)return;const V=new Set,Y=this.modelProvider();B.forEach(ie=>{const ae=Y.getNodeLocation(ie);try{const ce=Y.getParentNodeLocation(ae);ie.collapsible&&ie.children.length>0&&!ie.collapsed?V.add(ie):ce&&V.add(Y.getNode(ce))}catch{}}),this.activeIndentNodes.forEach(ie=>{V.has(ie)||this.renderedIndentGuides.forEach(ie,ae=>ae.classList.remove(\"active\"))}),V.forEach(ie=>{this.activeIndentNodes.has(ie)||this.renderedIndentGuides.forEach(ie,ae=>ae.classList.add(\"active\"))}),this.activeIndentNodes=V}dispose(){this.renderedNodes.clear(),this.renderedElements.clear(),this.indentGuidesDisposable.dispose(),(0,d.dispose)(this.disposables)}}x.DefaultIndent=8;class T{get totalCount(){return this._totalCount}get matchCount(){return this._matchCount}constructor(B,V,Y){this.tree=B,this.keyboardNavigationLabelProvider=V,this._filter=Y,this._totalCount=0,this._matchCount=0,this._pattern=\"\",this._lowercasePattern=\"\",this.disposables=new d.DisposableStore,B.onWillRefilter(this.reset,this,this.disposables)}filter(B,V){let Y=1;if(this._filter){const ce=this._filter.filter(B,V);if(typeof ce==\"boolean\"?Y=ce?1:0:(0,s.isFilterResult)(ce)?Y=(0,s.getVisibleState)(ce.visibility):Y=ce,Y===0)return!1}if(this._totalCount++,!this._pattern)return this._matchCount++,{data:o.FuzzyScore.Default,visibility:Y};const ie=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(B),ae=Array.isArray(ie)?ie:[ie];for(const ce of ae){const de=ce&&ce.toString();if(typeof de>\"u\")return{data:o.FuzzyScore.Default,visibility:Y};let he;if(this.tree.findMatchType===W.Contiguous){const ue=de.toLowerCase().indexOf(this._lowercasePattern);if(ue>-1){he=[Number.MAX_SAFE_INTEGER,0];for(let te=this._lowercasePattern.length;te>0;te--)he.push(ue+te-1)}}else he=(0,o.fuzzyScore)(this._pattern,this._lowercasePattern,0,de,de.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});if(he)return this._matchCount++,ae.length===1?{data:he,visibility:Y}:{data:{label:de,score:he},visibility:Y}}return this.tree.findMode===O.Filter?typeof this.tree.options.defaultFindVisibility==\"number\"?this.tree.options.defaultFindVisibility:this.tree.options.defaultFindVisibility?this.tree.options.defaultFindVisibility(B):2:{data:o.FuzzyScore.Default,visibility:Y}}reset(){this._totalCount=0,this._matchCount=0}dispose(){(0,d.dispose)(this.disposables)}}class A extends C.Toggle{constructor(B){var V;super({icon:u.Codicon.listFilter,title:(0,m.localize)(0,null),isChecked:(V=B.isChecked)!==null&&V!==void 0?V:!1,inputActiveOptionBorder:B.inputActiveOptionBorder,inputActiveOptionForeground:B.inputActiveOptionForeground,inputActiveOptionBackground:B.inputActiveOptionBackground})}}e.ModeToggle=A;class N extends C.Toggle{constructor(B){var V;super({icon:u.Codicon.searchFuzzy,title:(0,m.localize)(1,null),isChecked:(V=B.isChecked)!==null&&V!==void 0?V:!1,inputActiveOptionBorder:B.inputActiveOptionBorder,inputActiveOptionForeground:B.inputActiveOptionForeground,inputActiveOptionBackground:B.inputActiveOptionBackground})}}e.FuzzyToggle=N;const F={inputBoxStyles:f.unthemedInboxStyles,toggleStyles:C.unthemedToggleStyles,listFilterWidgetBackground:void 0,listFilterWidgetNoMatchesOutline:void 0,listFilterWidgetOutline:void 0,listFilterWidgetShadow:void 0};var O;(function(H){H[H.Highlight=0]=\"Highlight\",H[H.Filter=1]=\"Filter\"})(O||(e.TreeFindMode=O={}));var W;(function(H){H[H.Fuzzy=0]=\"Fuzzy\",H[H.Contiguous=1]=\"Contiguous\"})(W||(e.TreeFindMatchType=W={}));class U extends d.Disposable{set mode(B){this.modeToggle.checked=B===O.Filter,this.findInput.inputBox.setPlaceHolder(B===O.Filter?(0,m.localize)(2,null):(0,m.localize)(3,null))}set matchType(B){this.matchTypeToggle.checked=B===W.Fuzzy}constructor(B,V,Y,ie,ae,ce){var de;super(),this.tree=V,this.elements=(0,L.h)(\".monaco-tree-type-filter\",[(0,L.h)(\".monaco-tree-type-filter-grab.codicon.codicon-debug-gripper@grab\",{tabIndex:0}),(0,L.h)(\".monaco-tree-type-filter-input@findInput\"),(0,L.h)(\".monaco-tree-type-filter-actionbar@actionbar\")]),this.width=0,this.right=0,this.top=0,this._onDidDisable=new c.Emitter,B.appendChild(this.elements.root),this._register((0,d.toDisposable)(()=>B.removeChild(this.elements.root)));const he=(de=ce?.styles)!==null&&de!==void 0?de:F;he.listFilterWidgetBackground&&(this.elements.root.style.backgroundColor=he.listFilterWidgetBackground),he.listFilterWidgetShadow&&(this.elements.root.style.boxShadow=`0 0 8px 2px ${he.listFilterWidgetShadow}`),this.modeToggle=this._register(new A(Object.assign(Object.assign({},he.toggleStyles),{isChecked:ie===O.Filter}))),this.matchTypeToggle=this._register(new N(Object.assign(Object.assign({},he.toggleStyles),{isChecked:ae===W.Fuzzy}))),this.onDidChangeMode=c.Event.map(this.modeToggle.onChange,()=>this.modeToggle.checked?O.Filter:O.Highlight,this._store),this.onDidChangeMatchType=c.Event.map(this.matchTypeToggle.onChange,()=>this.matchTypeToggle.checked?W.Fuzzy:W.Contiguous,this._store),this.findInput=this._register(new S.FindInput(this.elements.findInput,Y,{label:(0,m.localize)(4,null),additionalToggles:[this.modeToggle,this.matchTypeToggle],showCommonFindToggles:!1,inputBoxStyles:he.inputBoxStyles,toggleStyles:he.toggleStyles,history:ce?.history})),this.actionbar=this._register(new D.ActionBar(this.elements.actionbar)),this.mode=ie;const ue=this._register(new k.DomEmitter(this.findInput.inputBox.inputElement,\"keydown\")),te=this._register(c.Event.chain(ue.event)).map($=>new y.StandardKeyboardEvent($)).event;this._register(te($=>{if($.equals(3)){$.preventDefault(),$.stopPropagation(),this.findInput.inputBox.addToHistory(),this.tree.domFocus();return}if($.equals(18)){$.preventDefault(),$.stopPropagation(),this.findInput.inputBox.isAtLastInHistory()||this.findInput.inputBox.isNowhereInHistory()?(this.findInput.inputBox.addToHistory(),this.tree.domFocus()):this.findInput.inputBox.showNextValue();return}if($.equals(16)){$.preventDefault(),$.stopPropagation(),this.findInput.inputBox.showPreviousValue();return}}));const q=this._register(new n.Action(\"close\",(0,m.localize)(5,null),\"codicon codicon-close\",!0,()=>this.dispose()));this.actionbar.push(q,{icon:!0,label:!1});const z=this._register(new k.DomEmitter(this.elements.grab,\"mousedown\"));this._register(z.event($=>{const re=new d.DisposableStore,oe=re.add(new k.DomEmitter(window,\"mousemove\")),ge=re.add(new k.DomEmitter(window,\"mouseup\")),ve=this.right,Se=$.pageX,Le=this.top,De=$.pageY;this.elements.grab.classList.add(\"grabbing\");const ye=this.elements.root.style.transition;this.elements.root.style.transition=\"unset\";const Ee=Me=>{const Pe=Me.pageX-Se;this.right=ve-Pe;const Fe=Me.pageY-De;this.top=Le+Fe,this.layout()};re.add(oe.event(Ee)),re.add(ge.event(Me=>{Ee(Me),this.elements.grab.classList.remove(\"grabbing\"),this.elements.root.style.transition=ye,re.dispose()}))}));const ee=this._register(c.Event.chain(this._register(new k.DomEmitter(this.elements.grab,\"keydown\")).event)).map($=>new y.StandardKeyboardEvent($)).event;this._register(ee($=>{let re,oe;if($.keyCode===15?re=Number.POSITIVE_INFINITY:$.keyCode===17?re=0:$.keyCode===10&&(re=this.right===0?Number.POSITIVE_INFINITY:0),$.keyCode===16?oe=0:$.keyCode===18&&(oe=Number.POSITIVE_INFINITY),re!==void 0&&($.preventDefault(),$.stopPropagation(),this.right=re,this.layout()),oe!==void 0){$.preventDefault(),$.stopPropagation(),this.top=oe;const ge=this.elements.root.style.transition;this.elements.root.style.transition=\"unset\",this.layout(),setTimeout(()=>{this.elements.root.style.transition=ge},0)}})),this.onDidChangeValue=this.findInput.onDidChange}layout(B=this.width){this.width=B,this.right=(0,l.clamp)(this.right,0,Math.max(0,B-212)),this.elements.root.style.right=`${this.right}px`,this.top=(0,l.clamp)(this.top,0,24),this.elements.root.style.top=`${this.top}px`}showMessage(B){this.findInput.showMessage(B)}clearMessage(){this.findInput.clearMessage()}dispose(){const B=Object.create(null,{dispose:{get:()=>super.dispose}});return we(this,void 0,void 0,function*(){this._onDidDisable.fire(),this.elements.root.classList.add(\"disabled\"),yield(0,a.timeout)(300),B.dispose.call(this)})}}class j{get pattern(){return this._pattern}get mode(){return this._mode}set mode(B){B!==this._mode&&(this._mode=B,this.widget&&(this.widget.mode=this._mode),this.tree.refilter(),this.render(),this._onDidChangeMode.fire(B))}get matchType(){return this._matchType}set matchType(B){B!==this._matchType&&(this._matchType=B,this.widget&&(this.widget.matchType=this._matchType),this.tree.refilter(),this.render(),this._onDidChangeMatchType.fire(B))}constructor(B,V,Y,ie,ae,ce={}){var de,he;this.tree=B,this.view=Y,this.filter=ie,this.contextViewProvider=ae,this.options=ce,this._pattern=\"\",this.width=0,this._onDidChangeMode=new c.Emitter,this.onDidChangeMode=this._onDidChangeMode.event,this._onDidChangeMatchType=new c.Emitter,this.onDidChangeMatchType=this._onDidChangeMatchType.event,this._onDidChangePattern=new c.Emitter,this._onDidChangeOpenState=new c.Emitter,this.onDidChangeOpenState=this._onDidChangeOpenState.event,this.enabledDisposables=new d.DisposableStore,this.disposables=new d.DisposableStore,this._mode=(de=B.options.defaultFindMode)!==null&&de!==void 0?de:O.Highlight,this._matchType=(he=B.options.defaultFindMatchType)!==null&&he!==void 0?he:W.Fuzzy,V.onDidSplice(this.onDidSpliceModel,this,this.disposables)}updateOptions(B={}){B.defaultFindMode!==void 0&&(this.mode=B.defaultFindMode),B.defaultFindMatchType!==void 0&&(this.matchType=B.defaultFindMatchType)}onDidSpliceModel(){!this.widget||this.pattern.length===0||(this.tree.refilter(),this.render())}render(){var B,V,Y,ie;const ae=this.filter.totalCount>0&&this.filter.matchCount===0;this.pattern&&ae?!((B=this.tree.options.showNotFoundMessage)!==null&&B!==void 0)||B?(V=this.widget)===null||V===void 0||V.showMessage({type:2,content:(0,m.localize)(6,null)}):(Y=this.widget)===null||Y===void 0||Y.showMessage({type:2}):(ie=this.widget)===null||ie===void 0||ie.clearMessage()}shouldAllowFocus(B){return!this.widget||!this.pattern||this._mode===O.Filter||this.filter.totalCount>0&&this.filter.matchCount<=1?!0:!o.FuzzyScore.isDefault(B.filterData)}layout(B){var V;this.width=B,(V=this.widget)===null||V===void 0||V.layout(B)}dispose(){this._history=void 0,this._onDidChangePattern.dispose(),this.enabledDisposables.dispose(),this.disposables.dispose()}}function R(H){let B=i.TreeMouseEventTarget.Unknown;return(0,L.hasParentWithClass)(H.browserEvent.target,\"monaco-tl-twistie\",\"monaco-tl-row\")?B=i.TreeMouseEventTarget.Twistie:(0,L.hasParentWithClass)(H.browserEvent.target,\"monaco-tl-contents\",\"monaco-tl-row\")?B=i.TreeMouseEventTarget.Element:(0,L.hasParentWithClass)(H.browserEvent.target,\"monaco-tree-type-filter\",\"monaco-list\")&&(B=i.TreeMouseEventTarget.Filter),{browserEvent:H.browserEvent,element:H.element?H.element.element:null,target:B}}function K(H,B){B(H),H.children.forEach(V=>K(V,B))}class G{get nodeSet(){return this._nodeSet||(this._nodeSet=this.createNodeSet()),this._nodeSet}constructor(B,V){this.getFirstViewElementWithTrait=B,this.identityProvider=V,this.nodes=[],this._onDidChange=new c.Emitter,this.onDidChange=this._onDidChange.event}set(B,V){!V?.__forceEvent&&(0,t.equals)(this.nodes,B)||this._set(B,!1,V)}_set(B,V,Y){if(this.nodes=[...B],this.elements=void 0,this._nodeSet=void 0,!V){const ie=this;this._onDidChange.fire({get elements(){return ie.get()},browserEvent:Y})}}get(){return this.elements||(this.elements=this.nodes.map(B=>B.element)),[...this.elements]}getNodes(){return this.nodes}has(B){return this.nodeSet.has(B)}onDidModelSplice({insertedNodes:B,deletedNodes:V}){if(!this.identityProvider){const he=this.createNodeSet(),ue=te=>he.delete(te);V.forEach(te=>K(te,ue)),this.set([...he.values()]);return}const Y=new Set,ie=he=>Y.add(this.identityProvider.getId(he.element).toString());V.forEach(he=>K(he,ie));const ae=new Map,ce=he=>ae.set(this.identityProvider.getId(he.element).toString(),he);B.forEach(he=>K(he,ce));const de=[];for(const he of this.nodes){const ue=this.identityProvider.getId(he.element).toString();if(!Y.has(ue))de.push(he);else{const q=ae.get(ue);q&&q.visible&&de.push(q)}}if(this.nodes.length>0&&de.length===0){const he=this.getFirstViewElementWithTrait();he&&de.push(he)}this._set(de,!0)}createNodeSet(){const B=new Set;for(const V of this.nodes)B.add(V);return B}}class Z extends g.MouseController{constructor(B,V){super(B),this.tree=V}onViewPointer(B){if((0,g.isButton)(B.browserEvent.target)||(0,g.isInputElement)(B.browserEvent.target)||(0,g.isMonacoEditor)(B.browserEvent.target)||B.browserEvent.isHandledByList)return;const V=B.element;if(!V)return super.onViewPointer(B);if(this.isSelectionRangeChangeEvent(B)||this.isSelectionSingleChangeEvent(B))return super.onViewPointer(B);const Y=B.browserEvent.target,ie=Y.classList.contains(\"monaco-tl-twistie\")||Y.classList.contains(\"monaco-icon-label\")&&Y.classList.contains(\"folder-icon\")&&B.browserEvent.offsetX<16;let ae=!1;if(typeof this.tree.expandOnlyOnTwistieClick==\"function\"?ae=this.tree.expandOnlyOnTwistieClick(V.element):ae=!!this.tree.expandOnlyOnTwistieClick,ae&&!ie&&B.browserEvent.detail!==2)return super.onViewPointer(B);if(!this.tree.expandOnDoubleClick&&B.browserEvent.detail===2)return super.onViewPointer(B);if(V.collapsible){const ce=this.tree.getNodeLocation(V),de=B.browserEvent.altKey;if(this.tree.setFocus([ce]),this.tree.toggleCollapsed(ce,de),ae&&ie){B.browserEvent.isHandledByList=!0;return}}super.onViewPointer(B)}onDoubleClick(B){B.browserEvent.target.classList.contains(\"monaco-tl-twistie\")||!this.tree.expandOnDoubleClick||B.browserEvent.isHandledByList||super.onDoubleClick(B)}}class J extends g.List{constructor(B,V,Y,ie,ae,ce,de,he){super(B,V,Y,ie,he),this.focusTrait=ae,this.selectionTrait=ce,this.anchorTrait=de}createMouseController(B){return new Z(this,B.tree)}splice(B,V,Y=[]){if(super.splice(B,V,Y),Y.length===0)return;const ie=[],ae=[];let ce;Y.forEach((de,he)=>{this.focusTrait.has(de)&&ie.push(B+he),this.selectionTrait.has(de)&&ae.push(B+he),this.anchorTrait.has(de)&&(ce=B+he)}),ie.length>0&&super.setFocus((0,t.distinct)([...super.getFocus(),...ie])),ae.length>0&&super.setSelection((0,t.distinct)([...super.getSelection(),...ae])),typeof ce==\"number\"&&super.setAnchor(ce)}setFocus(B,V,Y=!1){super.setFocus(B,V),Y||this.focusTrait.set(B.map(ie=>this.element(ie)),V)}setSelection(B,V,Y=!1){super.setSelection(B,V),Y||this.selectionTrait.set(B.map(ie=>this.element(ie)),V)}setAnchor(B,V=!1){super.setAnchor(B),V||(typeof B>\"u\"?this.anchorTrait.set([]):this.anchorTrait.set([this.element(B)]))}}class X{get onDidScroll(){return this.view.onDidScroll}get onDidChangeFocus(){return this.eventBufferer.wrapEvent(this.focus.onDidChange)}get onDidChangeSelection(){return this.eventBufferer.wrapEvent(this.selection.onDidChange)}get onMouseDblClick(){return c.Event.filter(c.Event.map(this.view.onMouseDblClick,R),B=>B.target!==i.TreeMouseEventTarget.Filter)}get onPointer(){return c.Event.map(this.view.onPointer,R)}get onDidFocus(){return this.view.onDidFocus}get onDidChangeModel(){return c.Event.signal(this.model.onDidSplice)}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get findMode(){var B,V;return(V=(B=this.findController)===null||B===void 0?void 0:B.mode)!==null&&V!==void 0?V:O.Highlight}set findMode(B){this.findController&&(this.findController.mode=B)}get findMatchType(){var B,V;return(V=(B=this.findController)===null||B===void 0?void 0:B.matchType)!==null&&V!==void 0?V:W.Fuzzy}set findMatchType(B){this.findController&&(this.findController.matchType=B)}get expandOnDoubleClick(){return typeof this._options.expandOnDoubleClick>\"u\"?!0:this._options.expandOnDoubleClick}get expandOnlyOnTwistieClick(){return typeof this._options.expandOnlyOnTwistieClick>\"u\"?!0:this._options.expandOnlyOnTwistieClick}get onDidDispose(){return this.view.onDidDispose}constructor(B,V,Y,ie,ae={}){var ce;this._user=B,this._options=ae,this.eventBufferer=new c.EventBufferer,this.onDidChangeFindOpenState=c.Event.None,this.disposables=new d.DisposableStore,this._onWillRefilter=new c.Emitter,this.onWillRefilter=this._onWillRefilter.event,this._onDidUpdateOptions=new c.Emitter;const de=new I(Y),he=new c.Relay,ue=new c.Relay,te=this.disposables.add(new P(ue.event)),q=new r.SetMap;this.renderers=ie.map($=>new x($,()=>this.model,he.event,te,q,ae));for(const $ of this.renderers)this.disposables.add($);let z;ae.keyboardNavigationLabelProvider&&(z=new T(this,ae.keyboardNavigationLabelProvider,ae.filter),ae=Object.assign(Object.assign({},ae),{filter:z}),this.disposables.add(z)),this.focus=new G(()=>this.view.getFocusedElements()[0],ae.identityProvider),this.selection=new G(()=>this.view.getSelectedElements()[0],ae.identityProvider),this.anchor=new G(()=>this.view.getAnchorElement(),ae.identityProvider),this.view=new J(B,V,de,this.renderers,this.focus,this.selection,this.anchor,Object.assign(Object.assign({},E(()=>this.model,ae)),{tree:this})),this.model=this.createModel(B,this.view,ae),he.input=this.model.onDidChangeCollapseState;const ee=c.Event.forEach(this.model.onDidSplice,$=>{this.eventBufferer.bufferEvents(()=>{this.focus.onDidModelSplice($),this.selection.onDidModelSplice($)})},this.disposables);if(ee(()=>null,null,this.disposables),ue.input=c.Event.chain(c.Event.any(ee,this.focus.onDidChange,this.selection.onDidChange)).debounce(()=>null,0).map(()=>{const $=new Set;for(const re of this.focus.getNodes())$.add(re);for(const re of this.selection.getNodes())$.add(re);return[...$.values()]}).event,ae.keyboardSupport!==!1){const $=c.Event.chain(this.view.onKeyDown).filter(re=>!(0,g.isInputElement)(re.target)).map(re=>new y.StandardKeyboardEvent(re));$.filter(re=>re.keyCode===15).on(this.onLeftArrow,this,this.disposables),$.filter(re=>re.keyCode===17).on(this.onRightArrow,this,this.disposables),$.filter(re=>re.keyCode===10).on(this.onSpace,this,this.disposables)}if((!((ce=ae.findWidgetEnabled)!==null&&ce!==void 0)||ce)&&ae.keyboardNavigationLabelProvider&&ae.contextViewProvider){const $=this.options.findWidgetStyles?{styles:this.options.findWidgetStyles}:void 0;this.findController=new j(this,this.model,this.view,z,ae.contextViewProvider,$),this.focusNavigationFilter=re=>this.findController.shouldAllowFocus(re),this.onDidChangeFindOpenState=this.findController.onDidChangeOpenState,this.disposables.add(this.findController),this.onDidChangeFindMode=this.findController.onDidChangeMode,this.onDidChangeFindMatchType=this.findController.onDidChangeMatchType}else this.onDidChangeFindMode=c.Event.None,this.onDidChangeFindMatchType=c.Event.None;this.styleElement=(0,L.createStyleSheet)(this.view.getHTMLElement()),this.getHTMLElement().classList.toggle(\"always\",this._options.renderIndentGuides===M.Always)}updateOptions(B={}){var V;this._options=Object.assign(Object.assign({},this._options),B);for(const Y of this.renderers)Y.updateOptions(B);this.view.updateOptions(this._options),(V=this.findController)===null||V===void 0||V.updateOptions(B),this._onDidUpdateOptions.fire(this._options),this.getHTMLElement().classList.toggle(\"always\",this._options.renderIndentGuides===M.Always)}get options(){return this._options}getHTMLElement(){return this.view.getHTMLElement()}get scrollTop(){return this.view.scrollTop}set scrollTop(B){this.view.scrollTop=B}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}domFocus(){this.view.domFocus()}layout(B,V){var Y;this.view.layout(B,V),(0,p.isNumber)(V)&&((Y=this.findController)===null||Y===void 0||Y.layout(V))}style(B){const V=`.${this.view.domId}`,Y=[];B.treeIndentGuidesStroke&&(Y.push(`.monaco-list${V}:hover .monaco-tl-indent > .indent-guide, .monaco-list${V}.always .monaco-tl-indent > .indent-guide  { border-color: ${B.treeInactiveIndentGuidesStroke}; }`),Y.push(`.monaco-list${V} .monaco-tl-indent > .indent-guide.active { border-color: ${B.treeIndentGuidesStroke}; }`)),this.styleElement.textContent=Y.join(`\n`),this.view.style(B)}getParentElement(B){const V=this.model.getParentNodeLocation(B);return this.model.getNode(V).element}getFirstElementChild(B){return this.model.getFirstElementChild(B)}getNode(B){return this.model.getNode(B)}getNodeLocation(B){return this.model.getNodeLocation(B)}collapse(B,V=!1){return this.model.setCollapsed(B,!0,V)}expand(B,V=!1){return this.model.setCollapsed(B,!1,V)}toggleCollapsed(B,V=!1){return this.model.setCollapsed(B,void 0,V)}isCollapsible(B){return this.model.isCollapsible(B)}setCollapsible(B,V){return this.model.setCollapsible(B,V)}isCollapsed(B){return this.model.isCollapsed(B)}refilter(){this._onWillRefilter.fire(void 0),this.model.refilter()}setSelection(B,V){const Y=B.map(ae=>this.model.getNode(ae));this.selection.set(Y,V);const ie=B.map(ae=>this.model.getListIndex(ae)).filter(ae=>ae>-1);this.view.setSelection(ie,V,!0)}getSelection(){return this.selection.get()}setFocus(B,V){const Y=B.map(ae=>this.model.getNode(ae));this.focus.set(Y,V);const ie=B.map(ae=>this.model.getListIndex(ae)).filter(ae=>ae>-1);this.view.setFocus(ie,V,!0)}getFocus(){return this.focus.get()}reveal(B,V){this.model.expandTo(B);const Y=this.model.getListIndex(B);Y!==-1&&this.view.reveal(Y,V)}onLeftArrow(B){B.preventDefault(),B.stopPropagation();const V=this.view.getFocusedElements();if(V.length===0)return;const Y=V[0],ie=this.model.getNodeLocation(Y);if(!this.model.setCollapsed(ie,!0)){const ce=this.model.getParentNodeLocation(ie);if(!ce)return;const de=this.model.getListIndex(ce);this.view.reveal(de),this.view.setFocus([de])}}onRightArrow(B){B.preventDefault(),B.stopPropagation();const V=this.view.getFocusedElements();if(V.length===0)return;const Y=V[0],ie=this.model.getNodeLocation(Y);if(!this.model.setCollapsed(ie,!1)){if(!Y.children.some(he=>he.visible))return;const[ce]=this.view.getFocus(),de=ce+1;this.view.reveal(de),this.view.setFocus([de])}}onSpace(B){B.preventDefault(),B.stopPropagation();const V=this.view.getFocusedElements();if(V.length===0)return;const Y=V[0],ie=this.model.getNodeLocation(Y),ae=B.browserEvent.altKey;this.model.setCollapsed(ie,void 0,ae)}dispose(){(0,d.dispose)(this.disposables),this.view.dispose()}}e.AbstractTree=X}),define(ne[585],se([1,0,184,219]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DataTree=void 0;class y extends L.AbstractTree{constructor(S,f,_,g,C,s={}){super(S,f,_,g,s),this.user=S,this.dataSource=C,this.identityProvider=s.identityProvider}createModel(S,f,_){return new k.ObjectTreeModel(S,f,_)}}e.DataTree=y}),define(ne[316],se([1,0,184,568,219,106,46]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CompressibleObjectTree=e.ObjectTree=void 0;class f extends L.AbstractTree{get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}constructor(i,n,t,a,u={}){super(i,n,t,a,u),this.user=i}setChildren(i,n=S.Iterable.empty(),t){this.model.setChildren(i,n,t)}rerender(i){if(i===void 0){this.view.rerender();return}this.model.rerender(i)}hasElement(i){return this.model.has(i)}createModel(i,n,t){return new y.ObjectTreeModel(i,n,t)}}e.ObjectTree=f;class _{get compressedTreeNodeProvider(){return this._compressedTreeNodeProvider()}constructor(i,n){this._compressedTreeNodeProvider=i,this.renderer=n,this.templateId=n.templateId,n.onDidChangeTwistieState&&(this.onDidChangeTwistieState=n.onDidChangeTwistieState)}renderTemplate(i){return{compressedTreeNode:void 0,data:this.renderer.renderTemplate(i)}}renderElement(i,n,t,a){const u=this.compressedTreeNodeProvider.getCompressedTreeNode(i.element);u.element.elements.length===1?(t.compressedTreeNode=void 0,this.renderer.renderElement(i,n,t.data,a)):(t.compressedTreeNode=u,this.renderer.renderCompressedElements(u,n,t.data,a))}disposeElement(i,n,t,a){var u,h,r,c;t.compressedTreeNode?(h=(u=this.renderer).disposeCompressedElements)===null||h===void 0||h.call(u,t.compressedTreeNode,n,t.data,a):(c=(r=this.renderer).disposeElement)===null||c===void 0||c.call(r,i,n,t.data,a)}disposeTemplate(i){this.renderer.disposeTemplate(i.data)}renderTwistie(i,n){return this.renderer.renderTwistie?this.renderer.renderTwistie(i,n):!1}}ke([D.memoize],_.prototype,\"compressedTreeNodeProvider\",null);function g(s,i){return i&&Object.assign(Object.assign({},i),{keyboardNavigationLabelProvider:i.keyboardNavigationLabelProvider&&{getKeyboardNavigationLabel(n){let t;try{t=s().getCompressedTreeNode(n)}catch{return i.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(n)}return t.element.elements.length===1?i.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(n):i.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(t.element.elements)}}})}class C extends f{constructor(i,n,t,a,u={}){const h=()=>this,r=a.map(c=>new _(h,c));super(i,n,t,r,g(h,u))}setChildren(i,n=S.Iterable.empty(),t){this.model.setChildren(i,n,t)}createModel(i,n,t){return new k.CompressibleObjectTreeModel(i,n,t)}updateOptions(i={}){super.updateOptions(i),typeof i.compressionEnabled<\"u\"&&this.model.setCompressionEnabled(i.compressionEnabled)}getCompressedTreeNode(i=null){return this.model.getCompressedTreeNode(i)}}e.CompressibleObjectTree=C}),define(ne[586],se([1,0,225,184,218,316,139,13,25,26,9,6,46,2,20]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CompressibleAsyncDataTree=e.AsyncDataTree=void 0;function a(T){return Object.assign(Object.assign({},T),{children:[],refreshPromise:void 0,stale:!0,slow:!1,collapsedByDefault:void 0})}function u(T,A){return A.parent?A.parent===T?!0:u(T,A.parent):!1}function h(T,A){return T===A||u(T,A)||u(A,T)}class r{get element(){return this.node.element.element}get children(){return this.node.children.map(A=>new r(A))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(A){this.node=A}}class c{constructor(A,N,F){this.renderer=A,this.nodeMapper=N,this.onDidChangeTwistieState=F,this.renderedNodes=new Map,this.templateId=A.templateId}renderTemplate(A){return{templateData:this.renderer.renderTemplate(A)}}renderElement(A,N,F,O){this.renderer.renderElement(this.nodeMapper.map(A),N,F.templateData,O)}renderTwistie(A,N){return A.slow?(N.classList.add(...g.ThemeIcon.asClassNameArray(_.Codicon.treeItemLoading)),!0):(N.classList.remove(...g.ThemeIcon.asClassNameArray(_.Codicon.treeItemLoading)),!1)}disposeElement(A,N,F,O){var W,U;(U=(W=this.renderer).disposeElement)===null||U===void 0||U.call(W,this.nodeMapper.map(A),N,F.templateData,O)}disposeTemplate(A){this.renderer.disposeTemplate(A.templateData)}dispose(){this.renderedNodes.clear()}}function o(T){return{browserEvent:T.browserEvent,elements:T.elements.map(A=>A.element)}}function d(T){return{browserEvent:T.browserEvent,element:T.element&&T.element.element,target:T.target}}class l extends L.ElementsDragAndDropData{constructor(A){super(A.elements.map(N=>N.element)),this.data=A}}function p(T){return T instanceof L.ElementsDragAndDropData?new l(T):T}class m{constructor(A){this.dnd=A}getDragURI(A){return this.dnd.getDragURI(A.element)}getDragLabel(A,N){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(A.map(F=>F.element),N)}onDragStart(A,N){var F,O;(O=(F=this.dnd).onDragStart)===null||O===void 0||O.call(F,p(A),N)}onDragOver(A,N,F,O,W=!0){return this.dnd.onDragOver(p(A),N&&N.element,F,O)}drop(A,N,F,O){this.dnd.drop(p(A),N&&N.element,F,O)}onDragEnd(A){var N,F;(F=(N=this.dnd).onDragEnd)===null||F===void 0||F.call(N,A)}}function v(T){return T&&Object.assign(Object.assign({},T),{collapseByDefault:!0,identityProvider:T.identityProvider&&{getId(A){return T.identityProvider.getId(A.element)}},dnd:T.dnd&&new m(T.dnd),multipleSelectionController:T.multipleSelectionController&&{isSelectionSingleChangeEvent(A){return T.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({},A),{element:A.element}))},isSelectionRangeChangeEvent(A){return T.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({},A),{element:A.element}))}},accessibilityProvider:T.accessibilityProvider&&Object.assign(Object.assign({},T.accessibilityProvider),{getPosInSet:void 0,getSetSize:void 0,getRole:T.accessibilityProvider.getRole?A=>T.accessibilityProvider.getRole(A.element):()=>\"treeitem\",isChecked:T.accessibilityProvider.isChecked?A=>{var N;return!!(!((N=T.accessibilityProvider)===null||N===void 0)&&N.isChecked(A.element))}:void 0,getAriaLabel(A){return T.accessibilityProvider.getAriaLabel(A.element)},getWidgetAriaLabel(){return T.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:T.accessibilityProvider.getWidgetRole?()=>T.accessibilityProvider.getWidgetRole():()=>\"tree\",getAriaLevel:T.accessibilityProvider.getAriaLevel&&(A=>T.accessibilityProvider.getAriaLevel(A.element)),getActiveDescendantId:T.accessibilityProvider.getActiveDescendantId&&(A=>T.accessibilityProvider.getActiveDescendantId(A.element))}),filter:T.filter&&{filter(A,N){return T.filter.filter(A.element,N)}},keyboardNavigationLabelProvider:T.keyboardNavigationLabelProvider&&Object.assign(Object.assign({},T.keyboardNavigationLabelProvider),{getKeyboardNavigationLabel(A){return T.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(A.element)}}),sorter:void 0,expandOnlyOnTwistieClick:typeof T.expandOnlyOnTwistieClick>\"u\"?void 0:typeof T.expandOnlyOnTwistieClick!=\"function\"?T.expandOnlyOnTwistieClick:A=>T.expandOnlyOnTwistieClick(A.element),defaultFindVisibility:A=>A.hasChildren&&A.stale?1:typeof T.defaultFindVisibility==\"number\"?T.defaultFindVisibility:typeof T.defaultFindVisibility>\"u\"?2:T.defaultFindVisibility(A.element)})}function b(T,A){A(T),T.children.forEach(N=>b(N,A))}class w{get onDidScroll(){return this.tree.onDidScroll}get onDidChangeFocus(){return s.Event.map(this.tree.onDidChangeFocus,o)}get onDidChangeSelection(){return s.Event.map(this.tree.onDidChangeSelection,o)}get onMouseDblClick(){return s.Event.map(this.tree.onMouseDblClick,d)}get onPointer(){return s.Event.map(this.tree.onPointer,d)}get onDidFocus(){return this.tree.onDidFocus}get onDidChangeModel(){return this.tree.onDidChangeModel}get onDidChangeCollapseState(){return this.tree.onDidChangeCollapseState}get onDidChangeFindOpenState(){return this.tree.onDidChangeFindOpenState}get onDidDispose(){return this.tree.onDidDispose}constructor(A,N,F,O,W,U={}){this.user=A,this.dataSource=W,this.nodes=new Map,this.subTreeRefreshPromises=new Map,this.refreshPromises=new Map,this._onDidRender=new s.Emitter,this._onDidChangeNodeSlowState=new s.Emitter,this.nodeMapper=new S.WeakMapper(j=>new r(j)),this.disposables=new n.DisposableStore,this.identityProvider=U.identityProvider,this.autoExpandSingleChildren=typeof U.autoExpandSingleChildren>\"u\"?!1:U.autoExpandSingleChildren,this.sorter=U.sorter,this.collapseByDefault=U.collapseByDefault,this.tree=this.createTree(A,N,F,O,U),this.onDidChangeFindMode=this.tree.onDidChangeFindMode,this.root=a({element:void 0,parent:null,hasChildren:!0}),this.identityProvider&&(this.root=Object.assign(Object.assign({},this.root),{id:null})),this.nodes.set(null,this.root),this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState,this,this.disposables)}createTree(A,N,F,O,W){const U=new k.ComposedTreeDelegate(F),j=O.map(K=>new c(K,this.nodeMapper,this._onDidChangeNodeSlowState.event)),R=v(W)||{};return new D.ObjectTree(A,N,U,j,R)}updateOptions(A={}){this.tree.updateOptions(A)}getHTMLElement(){return this.tree.getHTMLElement()}get scrollTop(){return this.tree.scrollTop}set scrollTop(A){this.tree.scrollTop=A}get scrollHeight(){return this.tree.scrollHeight}get renderHeight(){return this.tree.renderHeight}domFocus(){this.tree.domFocus()}layout(A,N){this.tree.layout(A,N)}style(A){this.tree.style(A)}getInput(){return this.root.element}setInput(A,N){return we(this,void 0,void 0,function*(){this.refreshPromises.forEach(O=>O.cancel()),this.refreshPromises.clear(),this.root.element=A;const F=N&&{viewState:N,focus:[],selection:[]};yield this._updateChildren(A,!0,!1,F),F&&(this.tree.setFocus(F.focus),this.tree.setSelection(F.selection)),N&&typeof N.scrollTop==\"number\"&&(this.scrollTop=N.scrollTop)})}_updateChildren(A=this.root.element,N=!0,F=!1,O,W){return we(this,void 0,void 0,function*(){if(typeof this.root.element>\"u\")throw new S.TreeError(this.user,\"Tree input not set\");this.root.refreshPromise&&(yield this.root.refreshPromise,yield s.Event.toPromise(this._onDidRender.event));const U=this.getDataNode(A);if(yield this.refreshAndRenderNode(U,N,O,W),F)try{this.tree.rerender(U)}catch{}})}rerender(A){if(A===void 0||A===this.root.element){this.tree.rerender();return}const N=this.getDataNode(A);this.tree.rerender(N)}getNode(A=this.root.element){const N=this.getDataNode(A),F=this.tree.getNode(N===this.root?null:N);return this.nodeMapper.map(F)}collapse(A,N=!1){const F=this.getDataNode(A);return this.tree.collapse(F===this.root?null:F,N)}expand(A,N=!1){return we(this,void 0,void 0,function*(){if(typeof this.root.element>\"u\")throw new S.TreeError(this.user,\"Tree input not set\");this.root.refreshPromise&&(yield this.root.refreshPromise,yield s.Event.toPromise(this._onDidRender.event));const F=this.getDataNode(A);if(this.tree.hasElement(F)&&!this.tree.isCollapsible(F)||(F.refreshPromise&&(yield this.root.refreshPromise,yield s.Event.toPromise(this._onDidRender.event)),F!==this.root&&!F.refreshPromise&&!this.tree.isCollapsed(F)))return!1;const O=this.tree.expand(F===this.root?null:F,N);return F.refreshPromise&&(yield this.root.refreshPromise,yield s.Event.toPromise(this._onDidRender.event)),O})}setSelection(A,N){const F=A.map(O=>this.getDataNode(O));this.tree.setSelection(F,N)}getSelection(){return this.tree.getSelection().map(N=>N.element)}setFocus(A,N){const F=A.map(O=>this.getDataNode(O));this.tree.setFocus(F,N)}getFocus(){return this.tree.getFocus().map(N=>N.element)}reveal(A,N){this.tree.reveal(this.getDataNode(A),N)}getParentElement(A){const N=this.tree.getParentElement(this.getDataNode(A));return N&&N.element}getFirstElementChild(A=this.root.element){const N=this.getDataNode(A),F=this.tree.getFirstElementChild(N===this.root?null:N);return F&&F.element}getDataNode(A){const N=this.nodes.get(A===this.root.element?null:A);if(!N)throw new S.TreeError(this.user,`Data tree node not found: ${A}`);return N}refreshAndRenderNode(A,N,F,O){return we(this,void 0,void 0,function*(){yield this.refreshNode(A,N,F),this.render(A,F,O)})}refreshNode(A,N,F){return we(this,void 0,void 0,function*(){let O;if(this.subTreeRefreshPromises.forEach((W,U)=>{!O&&h(U,A)&&(O=W.then(()=>this.refreshNode(A,N,F)))}),O)return O;if(A!==this.root&&this.tree.getNode(A).collapsed){A.hasChildren=!!this.dataSource.hasChildren(A.element),A.stale=!0;return}return this.doRefreshSubTree(A,N,F)})}doRefreshSubTree(A,N,F){return we(this,void 0,void 0,function*(){let O;A.refreshPromise=new Promise(W=>O=W),this.subTreeRefreshPromises.set(A,A.refreshPromise),A.refreshPromise.finally(()=>{A.refreshPromise=void 0,this.subTreeRefreshPromises.delete(A)});try{const W=yield this.doRefreshNode(A,N,F);A.stale=!1,yield f.Promises.settled(W.map(U=>this.doRefreshSubTree(U,N,F)))}finally{O()}})}doRefreshNode(A,N,F){return we(this,void 0,void 0,function*(){A.hasChildren=!!this.dataSource.hasChildren(A.element);let O;if(!A.hasChildren)O=Promise.resolve(i.Iterable.empty());else{const W=this.doGetChildren(A);if((0,t.isIterable)(W))O=Promise.resolve(W);else{const U=(0,f.timeout)(800);U.then(()=>{A.slow=!0,this._onDidChangeNodeSlowState.fire(A)},j=>null),O=W.finally(()=>U.cancel())}}try{const W=yield O;return this.setChildren(A,W,N,F)}catch(W){if(A!==this.root&&this.tree.hasElement(A)&&this.tree.collapse(A),(0,C.isCancellationError)(W))return[];throw W}finally{A.slow&&(A.slow=!1,this._onDidChangeNodeSlowState.fire(A))}})}doGetChildren(A){let N=this.refreshPromises.get(A);if(N)return N;const F=this.dataSource.getChildren(A.element);return(0,t.isIterable)(F)?this.processChildren(F):(N=(0,f.createCancelablePromise)(()=>we(this,void 0,void 0,function*(){return this.processChildren(yield F)})),this.refreshPromises.set(A,N),N.finally(()=>{this.refreshPromises.delete(A)}))}_onDidChangeCollapseState({node:A,deep:N}){A.element!==null&&!A.collapsed&&A.element.stale&&(N?this.collapse(A.element.element):this.refreshAndRenderNode(A.element,!1).catch(C.onUnexpectedError))}setChildren(A,N,F,O){const W=[...N];if(A.children.length===0&&W.length===0)return[];const U=new Map,j=new Map;for(const G of A.children)if(U.set(G.element,G),this.identityProvider){const Z=this.tree.isCollapsed(G);j.set(G.id,{node:G,collapsed:Z})}const R=[],K=W.map(G=>{const Z=!!this.dataSource.hasChildren(G);if(!this.identityProvider){const B=a({element:G,parent:A,hasChildren:Z});return Z&&this.collapseByDefault&&!this.collapseByDefault(G)&&(B.collapsedByDefault=!1,R.push(B)),B}const J=this.identityProvider.getId(G).toString(),X=j.get(J);if(X){const B=X.node;return U.delete(B.element),this.nodes.delete(B.element),this.nodes.set(G,B),B.element=G,B.hasChildren=Z,F?X.collapsed?(B.children.forEach(V=>b(V,Y=>this.nodes.delete(Y.element))),B.children.splice(0,B.children.length),B.stale=!0):R.push(B):Z&&this.collapseByDefault&&!this.collapseByDefault(G)&&(B.collapsedByDefault=!1,R.push(B)),B}const H=a({element:G,parent:A,id:J,hasChildren:Z});return O&&O.viewState.focus&&O.viewState.focus.indexOf(J)>-1&&O.focus.push(H),O&&O.viewState.selection&&O.viewState.selection.indexOf(J)>-1&&O.selection.push(H),O&&O.viewState.expanded&&O.viewState.expanded.indexOf(J)>-1?R.push(H):Z&&this.collapseByDefault&&!this.collapseByDefault(G)&&(H.collapsedByDefault=!1,R.push(H)),H});for(const G of U.values())b(G,Z=>this.nodes.delete(Z.element));for(const G of K)this.nodes.set(G.element,G);return A.children.splice(0,A.children.length,...K),A!==this.root&&this.autoExpandSingleChildren&&K.length===1&&R.length===0&&(K[0].collapsedByDefault=!1,R.push(K[0])),R}render(A,N,F){const O=A.children.map(U=>this.asTreeElement(U,N)),W=F&&Object.assign(Object.assign({},F),{diffIdentityProvider:F.diffIdentityProvider&&{getId(U){return F.diffIdentityProvider.getId(U.element)}}});this.tree.setChildren(A===this.root?null:A,O,W),A!==this.root&&this.tree.setCollapsible(A,A.hasChildren),this._onDidRender.fire()}asTreeElement(A,N){if(A.stale)return{element:A,collapsible:A.hasChildren,collapsed:!0};let F;return N&&N.viewState.expanded&&A.id&&N.viewState.expanded.indexOf(A.id)>-1?F=!1:F=A.collapsedByDefault,A.collapsedByDefault=void 0,{element:A,children:A.hasChildren?i.Iterable.map(A.children,O=>this.asTreeElement(O,N)):[],collapsible:A.hasChildren,collapsed:F}}processChildren(A){return this.sorter&&(A=[...A].sort(this.sorter.compare.bind(this.sorter))),A}dispose(){this.disposables.dispose()}}e.AsyncDataTree=w;class E{get element(){return{elements:this.node.element.elements.map(A=>A.element),incompressible:this.node.element.incompressible}}get children(){return this.node.children.map(A=>new E(A))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(A){this.node=A}}class I{constructor(A,N,F,O){this.renderer=A,this.nodeMapper=N,this.compressibleNodeMapperProvider=F,this.onDidChangeTwistieState=O,this.renderedNodes=new Map,this.disposables=[],this.templateId=A.templateId}renderTemplate(A){return{templateData:this.renderer.renderTemplate(A)}}renderElement(A,N,F,O){this.renderer.renderElement(this.nodeMapper.map(A),N,F.templateData,O)}renderCompressedElements(A,N,F,O){this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(A),N,F.templateData,O)}renderTwistie(A,N){return A.slow?(N.classList.add(...g.ThemeIcon.asClassNameArray(_.Codicon.treeItemLoading)),!0):(N.classList.remove(...g.ThemeIcon.asClassNameArray(_.Codicon.treeItemLoading)),!1)}disposeElement(A,N,F,O){var W,U;(U=(W=this.renderer).disposeElement)===null||U===void 0||U.call(W,this.nodeMapper.map(A),N,F.templateData,O)}disposeCompressedElements(A,N,F,O){var W,U;(U=(W=this.renderer).disposeCompressedElements)===null||U===void 0||U.call(W,this.compressibleNodeMapperProvider().map(A),N,F.templateData,O)}disposeTemplate(A){this.renderer.disposeTemplate(A.templateData)}dispose(){this.renderedNodes.clear(),this.disposables=(0,n.dispose)(this.disposables)}}function M(T){const A=T&&v(T);return A&&Object.assign(Object.assign({},A),{keyboardNavigationLabelProvider:A.keyboardNavigationLabelProvider&&Object.assign(Object.assign({},A.keyboardNavigationLabelProvider),{getCompressedNodeKeyboardNavigationLabel(N){return T.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(N.map(F=>F.element))}})})}class P extends w{constructor(A,N,F,O,W,U,j={}){super(A,N,F,W,U,j),this.compressionDelegate=O,this.compressibleNodeMapper=new S.WeakMapper(R=>new E(R)),this.filter=j.filter}createTree(A,N,F,O,W){const U=new k.ComposedTreeDelegate(F),j=O.map(K=>new I(K,this.nodeMapper,()=>this.compressibleNodeMapper,this._onDidChangeNodeSlowState.event)),R=M(W)||{};return new D.CompressibleObjectTree(A,N,U,j,R)}asTreeElement(A,N){return Object.assign({incompressible:this.compressionDelegate.isIncompressible(A.element)},super.asTreeElement(A,N))}updateOptions(A={}){this.tree.updateOptions(A)}render(A,N){if(!this.identityProvider)return super.render(A,N);const F=J=>this.identityProvider.getId(J).toString(),O=J=>{const X=new Set;for(const H of J){const B=this.tree.getCompressedTreeNode(H===this.root?null:H);if(B.element)for(const V of B.element.elements)X.add(F(V.element))}return X},W=O(this.tree.getSelection()),U=O(this.tree.getFocus());super.render(A,N);const j=this.getSelection();let R=!1;const K=this.getFocus();let G=!1;const Z=J=>{const X=J.element;if(X)for(let H=0;H<X.elements.length;H++){const B=F(X.elements[H].element),V=X.elements[X.elements.length-1].element;W.has(B)&&j.indexOf(V)===-1&&(j.push(V),R=!0),U.has(B)&&K.indexOf(V)===-1&&(K.push(V),G=!0)}J.children.forEach(Z)};Z(this.tree.getCompressedTreeNode(A===this.root?null:A)),R&&this.setSelection(j),G&&this.setFocus(K)}processChildren(A){return this.filter&&(A=i.Iterable.filter(A,N=>{const F=this.filter.filter(N,1),O=x(F);if(O===2)throw new Error(\"Recursive tree visibility not supported in async data compressed trees\");return O===1})),super.processChildren(A)}}e.CompressibleAsyncDataTree=P;function x(T){return typeof T==\"boolean\"?T?1:0:(0,y.isFilterResult)(T)?(0,y.getVisibleState)(T.visibility):(0,y.getVisibleState)(T)}}),define(ne[317],se([1,0,9,6,2,47,17,11]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.create=e.SimpleWorkerServer=e.SimpleWorkerClient=e.logOnceWebWorkerWarning=void 0;const _=\"$initialize\";let g=!1;function C(p){S.isWeb&&(g||(g=!0,console.warn(\"Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq\")),console.warn(p.message))}e.logOnceWebWorkerWarning=C;class s{constructor(m,v,b,w){this.vsWorker=m,this.req=v,this.method=b,this.args=w,this.type=0}}class i{constructor(m,v,b,w){this.vsWorker=m,this.seq=v,this.res=b,this.err=w,this.type=1}}class n{constructor(m,v,b,w){this.vsWorker=m,this.req=v,this.eventName=b,this.arg=w,this.type=2}}class t{constructor(m,v,b){this.vsWorker=m,this.req=v,this.event=b,this.type=3}}class a{constructor(m,v){this.vsWorker=m,this.req=v,this.type=4}}class u{constructor(m){this._workerId=-1,this._handler=m,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(m){this._workerId=m}sendMessage(m,v){const b=String(++this._lastSentReq);return new Promise((w,E)=>{this._pendingReplies[b]={resolve:w,reject:E},this._send(new s(this._workerId,b,m,v))})}listen(m,v){let b=null;const w=new k.Emitter({onWillAddFirstListener:()=>{b=String(++this._lastSentReq),this._pendingEmitters.set(b,w),this._send(new n(this._workerId,b,m,v))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(b),this._send(new a(this._workerId,b)),b=null}});return w.event}handleMessage(m){!m||!m.vsWorker||this._workerId!==-1&&m.vsWorker!==this._workerId||this._handleMessage(m)}_handleMessage(m){switch(m.type){case 1:return this._handleReplyMessage(m);case 0:return this._handleRequestMessage(m);case 2:return this._handleSubscribeEventMessage(m);case 3:return this._handleEventMessage(m);case 4:return this._handleUnsubscribeEventMessage(m)}}_handleReplyMessage(m){if(!this._pendingReplies[m.seq]){console.warn(\"Got reply to unknown seq\");return}const v=this._pendingReplies[m.seq];if(delete this._pendingReplies[m.seq],m.err){let b=m.err;m.err.$isError&&(b=new Error,b.name=m.err.name,b.message=m.err.message,b.stack=m.err.stack),v.reject(b);return}v.resolve(m.res)}_handleRequestMessage(m){const v=m.req;this._handler.handleMessage(m.method,m.args).then(w=>{this._send(new i(this._workerId,v,w,void 0))},w=>{w.detail instanceof Error&&(w.detail=(0,L.transformErrorForSerialization)(w.detail)),this._send(new i(this._workerId,v,void 0,(0,L.transformErrorForSerialization)(w)))})}_handleSubscribeEventMessage(m){const v=m.req,b=this._handler.handleEvent(m.eventName,m.arg)(w=>{this._send(new t(this._workerId,v,w))});this._pendingEvents.set(v,b)}_handleEventMessage(m){if(!this._pendingEmitters.has(m.req)){console.warn(\"Got event for unknown req\");return}this._pendingEmitters.get(m.req).fire(m.event)}_handleUnsubscribeEventMessage(m){if(!this._pendingEvents.has(m.req)){console.warn(\"Got unsubscribe for unknown req\");return}this._pendingEvents.get(m.req).dispose(),this._pendingEvents.delete(m.req)}_send(m){const v=[];if(m.type===0)for(let b=0;b<m.args.length;b++)m.args[b]instanceof ArrayBuffer&&v.push(m.args[b]);else m.type===1&&m.res instanceof ArrayBuffer&&v.push(m.res);this._handler.sendMessage(m,v)}}class h extends y.Disposable{constructor(m,v,b){super();let w=null;this._worker=this._register(m.create(\"vs/base/common/worker/simpleWorker\",T=>{this._protocol.handleMessage(T)},T=>{w?.(T)})),this._protocol=new u({sendMessage:(T,A)=>{this._worker.postMessage(T,A)},handleMessage:(T,A)=>{if(typeof b[T]!=\"function\")return Promise.reject(new Error(\"Missing method \"+T+\" on main thread host.\"));try{return Promise.resolve(b[T].apply(b,A))}catch(N){return Promise.reject(N)}},handleEvent:(T,A)=>{if(c(T)){const N=b[T].call(b,A);if(typeof N!=\"function\")throw new Error(`Missing dynamic event ${T} on main thread host.`);return N}if(r(T)){const N=b[T];if(typeof N!=\"function\")throw new Error(`Missing event ${T} on main thread host.`);return N}throw new Error(`Malformed event name ${T}`)}}),this._protocol.setWorkerId(this._worker.getId());let E=null;const I=globalThis.require;typeof I<\"u\"&&typeof I.getConfig==\"function\"?E=I.getConfig():typeof globalThis.requirejs<\"u\"&&(E=globalThis.requirejs.s.contexts._.config);const M=(0,D.getAllMethodNames)(b);this._onModuleLoaded=this._protocol.sendMessage(_,[this._worker.getId(),JSON.parse(JSON.stringify(E)),v,M]);const P=(T,A)=>this._request(T,A),x=(T,A)=>this._protocol.listen(T,A);this._lazyProxy=new Promise((T,A)=>{w=A,this._onModuleLoaded.then(N=>{T(o(N,P,x))},N=>{A(N),this._onError(\"Worker failed to load \"+v,N)})})}getProxyObject(){return this._lazyProxy}_request(m,v){return new Promise((b,w)=>{this._onModuleLoaded.then(()=>{this._protocol.sendMessage(m,v).then(b,w)},w)})}_onError(m,v){console.error(m),console.info(v)}}e.SimpleWorkerClient=h;function r(p){return p[0]===\"o\"&&p[1]===\"n\"&&f.isUpperAsciiLetter(p.charCodeAt(2))}function c(p){return/^onDynamic/.test(p)&&f.isUpperAsciiLetter(p.charCodeAt(9))}function o(p,m,v){const b=I=>function(){const M=Array.prototype.slice.call(arguments,0);return m(I,M)},w=I=>function(M){return v(I,M)},E={};for(const I of p){if(c(I)){E[I]=w(I);continue}if(r(I)){E[I]=v(I,void 0);continue}E[I]=b(I)}return E}class d{constructor(m,v){this._requestHandlerFactory=v,this._requestHandler=null,this._protocol=new u({sendMessage:(b,w)=>{m(b,w)},handleMessage:(b,w)=>this._handleMessage(b,w),handleEvent:(b,w)=>this._handleEvent(b,w)})}onmessage(m){this._protocol.handleMessage(m)}_handleMessage(m,v){if(m===_)return this.initialize(v[0],v[1],v[2],v[3]);if(!this._requestHandler||typeof this._requestHandler[m]!=\"function\")return Promise.reject(new Error(\"Missing requestHandler or method: \"+m));try{return Promise.resolve(this._requestHandler[m].apply(this._requestHandler,v))}catch(b){return Promise.reject(b)}}_handleEvent(m,v){if(!this._requestHandler)throw new Error(\"Missing requestHandler\");if(c(m)){const b=this._requestHandler[m].call(this._requestHandler,v);if(typeof b!=\"function\")throw new Error(`Missing dynamic event ${m} on request handler.`);return b}if(r(m)){const b=this._requestHandler[m];if(typeof b!=\"function\")throw new Error(`Missing event ${m} on request handler.`);return b}throw new Error(`Malformed event name ${m}`)}initialize(m,v,b,w){this._protocol.setWorkerId(m);const M=o(w,(P,x)=>this._protocol.sendMessage(P,x),(P,x)=>this._protocol.listen(P,x));return this._requestHandlerFactory?(this._requestHandler=this._requestHandlerFactory(M),Promise.resolve((0,D.getAllMethodNames)(this._requestHandler))):(v&&(typeof v.baseUrl<\"u\"&&delete v.baseUrl,typeof v.paths<\"u\"&&typeof v.paths.vs<\"u\"&&delete v.paths.vs,typeof v.trustedTypesPolicy!==void 0&&delete v.trustedTypesPolicy,v.catchError=!0,globalThis.require.config(v)),new Promise((P,x)=>{(globalThis.require||Q)([b],A=>{if(this._requestHandler=A.create(M),!this._requestHandler){x(new Error(\"No RequestHandler!\"));return}P((0,D.getAllMethodNames)(this._requestHandler))},x)}))}}e.SimpleWorkerServer=d;function l(p){return new d(p,null)}e.create=l}),define(ne[587],se([1,0,89,9,54,317]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DefaultWorkerFactory=e.getWorkerBootstrapUrl=void 0;const S=(0,L.createTrustedTypesPolicy)(\"defaultWorkerFactory\",{createScriptURL:i=>i});function f(i){const n=globalThis.MonacoEnvironment;if(n){if(typeof n.getWorker==\"function\")return n.getWorker(\"workerMain.js\",i);if(typeof n.getWorkerUrl==\"function\"){const t=n.getWorkerUrl(\"workerMain.js\",i);return new Worker(S?S.createScriptURL(t):t,{name:i})}}if(typeof Q==\"function\"){const t=Q.toUrl(\"vs/base/worker/workerMain.js\"),a=_(t,i);return new Worker(S?S.createScriptURL(a):a,{name:i})}throw new Error(\"You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker\")}function _(i,n){if(/^((http:)|(https:)|(file:))/.test(i)&&i.substring(0,globalThis.origin.length)!==globalThis.origin){const r=\"vs/base/worker/defaultWorkerFactory.js\",c=Q.toUrl(r).slice(0,-r.length),o=`/*${n}*/globalThis.MonacoEnvironment={baseUrl: '${c}'};const ttPolicy = globalThis.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });importScripts(ttPolicy?.createScriptURL('${i}') ?? '${i}');/*${n}*/`,d=new Blob([o],{type:\"application/javascript\"});return URL.createObjectURL(d)}const t=i.lastIndexOf(\"?\"),a=i.lastIndexOf(\"#\",t),u=t>0?new URLSearchParams(i.substring(t+1,~a?a:void 0)):new URLSearchParams;return y.COI.addSearchParam(u,!0,!0),u.toString()?`${i}?${u.toString()}#${n}`:`${i}#${n}`}e.getWorkerBootstrapUrl=_;function g(i){return typeof i.then==\"function\"}class C{constructor(n,t,a,u,h){this.id=t,this.label=a;const r=f(a);g(r)?this.worker=r:this.worker=Promise.resolve(r),this.postMessage(n,[]),this.worker.then(c=>{c.onmessage=function(o){u(o.data)},c.onmessageerror=h,typeof c.addEventListener==\"function\"&&c.addEventListener(\"error\",h)})}getId(){return this.id}postMessage(n,t){var a;(a=this.worker)===null||a===void 0||a.then(u=>{try{u.postMessage(n,t)}catch(h){(0,k.onUnexpectedError)(h),(0,k.onUnexpectedError)(new Error(`FAILED to post message to '${this.label}'-worker`,{cause:h}))}})}dispose(){var n;(n=this.worker)===null||n===void 0||n.then(t=>t.terminate()),this.worker=null}}class s{constructor(n){this._label=n,this._webWorkerFailedBeforeError=!1}create(n,t,a){const u=++s.LAST_WORKER_ID;if(this._webWorkerFailedBeforeError)throw this._webWorkerFailedBeforeError;return new C(n,u,this._label||\"anonymous\"+u,t,h=>{(0,D.logOnceWebWorkerWarning)(h),this._webWorkerFailedBeforeError=h,a(h)})}}e.DefaultWorkerFactory=s,s.LAST_WORKER_ID=0}),define(ne[588],se([1,0,13,6,2,221,20]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InMemoryStorageDatabase=e.Storage=e.StorageState=e.StorageHint=void 0;var f;(function(s){s[s.STORAGE_DOES_NOT_EXIST=0]=\"STORAGE_DOES_NOT_EXIST\",s[s.STORAGE_IN_MEMORY=1]=\"STORAGE_IN_MEMORY\"})(f||(e.StorageHint=f={}));var _;(function(s){s[s.None=0]=\"None\",s[s.Initialized=1]=\"Initialized\",s[s.Closed=2]=\"Closed\"})(_||(e.StorageState=_={}));class g extends y.Disposable{constructor(i,n=Object.create(null)){super(),this.database=i,this.options=n,this._onDidChangeStorage=this._register(new k.PauseableEmitter),this.onDidChangeStorage=this._onDidChangeStorage.event,this.state=_.None,this.cache=new Map,this.flushDelayer=new L.ThrottledDelayer(g.DEFAULT_FLUSH_DELAY),this.pendingDeletes=new Set,this.pendingInserts=new Map,this.whenFlushedCallbacks=[],this.registerListeners()}registerListeners(){this._register(this.database.onDidChangeItemsExternal(i=>this.onDidChangeItemsExternal(i)))}onDidChangeItemsExternal(i){var n,t;this._onDidChangeStorage.pause();try{(n=i.changed)===null||n===void 0||n.forEach((a,u)=>this.acceptExternal(u,a)),(t=i.deleted)===null||t===void 0||t.forEach(a=>this.acceptExternal(a,void 0))}finally{this._onDidChangeStorage.resume()}}acceptExternal(i,n){if(this.state===_.Closed)return;let t=!1;(0,S.isUndefinedOrNull)(n)?t=this.cache.delete(i):this.cache.get(i)!==n&&(this.cache.set(i,n),t=!0),t&&this._onDidChangeStorage.fire({key:i,external:!0})}get(i,n){const t=this.cache.get(i);return(0,S.isUndefinedOrNull)(t)?n:t}getBoolean(i,n){const t=this.get(i);return(0,S.isUndefinedOrNull)(t)?n:t===\"true\"}getNumber(i,n){const t=this.get(i);return(0,S.isUndefinedOrNull)(t)?n:parseInt(t,10)}set(i,n,t=!1){return we(this,void 0,void 0,function*(){if(this.state===_.Closed)return;if((0,S.isUndefinedOrNull)(n))return this.delete(i,t);const a=(0,S.isObject)(n)||Array.isArray(n)?(0,D.stringify)(n):String(n);if(this.cache.get(i)!==a)return this.cache.set(i,a),this.pendingInserts.set(i,a),this.pendingDeletes.delete(i),this._onDidChangeStorage.fire({key:i,external:t}),this.doFlush()})}delete(i,n=!1){return we(this,void 0,void 0,function*(){if(!(this.state===_.Closed||!this.cache.delete(i)))return this.pendingDeletes.has(i)||this.pendingDeletes.add(i),this.pendingInserts.delete(i),this._onDidChangeStorage.fire({key:i,external:n}),this.doFlush()})}get hasPending(){return this.pendingInserts.size>0||this.pendingDeletes.size>0}flushPending(){return we(this,void 0,void 0,function*(){if(!this.hasPending)return;const i={insert:this.pendingInserts,delete:this.pendingDeletes};return this.pendingDeletes=new Set,this.pendingInserts=new Map,this.database.updateItems(i).finally(()=>{var n;if(!this.hasPending)for(;this.whenFlushedCallbacks.length;)(n=this.whenFlushedCallbacks.pop())===null||n===void 0||n()})})}doFlush(i){return we(this,void 0,void 0,function*(){return this.flushDelayer.trigger(()=>this.flushPending(),i)})}dispose(){this.flushDelayer.dispose(),super.dispose()}}e.Storage=g,g.DEFAULT_FLUSH_DELAY=100;class C{constructor(){this.onDidChangeItemsExternal=k.Event.None,this.items=new Map}updateItems(i){var n,t;return we(this,void 0,void 0,function*(){(n=i.insert)===null||n===void 0||n.forEach((a,u)=>this.items.set(u,a)),(t=i.delete)===null||t===void 0||t.forEach(a=>this.items.delete(a))})}}e.InMemoryStorageDatabase=C}),define(ne[185],se([1,0,52,7,81,44,260,13,6,2,107,11,273,24]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextAreaWrapper=e.ClipboardEventUtils=e.TextAreaInput=e.InMemoryClipboardMetadataManager=e.CopyOptions=e.TextAreaSyntethicEvents=void 0;var t;(function(c){c.Tap=\"-monaco-textarea-synthetic-tap\"})(t||(e.TextAreaSyntethicEvents=t={})),e.CopyOptions={forceCopyWithSyntaxHighlighting:!1};class a{constructor(){this._lastState=null}set(o,d){this._lastState={lastCopiedValue:o,data:d}}get(o){return this._lastState&&this._lastState.lastCopiedValue===o?this._lastState.data:(this._lastState=null,null)}}e.InMemoryClipboardMetadataManager=a,a.INSTANCE=new a;class u{constructor(){this._lastTypeTextLength=0}handleCompositionUpdate(o){o=o||\"\";const d={text:o,replacePrevCharCnt:this._lastTypeTextLength,replaceNextCharCnt:0,positionDelta:0};return this._lastTypeTextLength=o.length,d}}class h extends g.Disposable{get textAreaState(){return this._textAreaState}constructor(o,d,l,p){super(),this._host=o,this._textArea=d,this._OS=l,this._browser=p,this._onFocus=this._register(new _.Emitter),this.onFocus=this._onFocus.event,this._onBlur=this._register(new _.Emitter),this.onBlur=this._onBlur.event,this._onKeyDown=this._register(new _.Emitter),this.onKeyDown=this._onKeyDown.event,this._onKeyUp=this._register(new _.Emitter),this.onKeyUp=this._onKeyUp.event,this._onCut=this._register(new _.Emitter),this.onCut=this._onCut.event,this._onPaste=this._register(new _.Emitter),this.onPaste=this._onPaste.event,this._onType=this._register(new _.Emitter),this.onType=this._onType.event,this._onCompositionStart=this._register(new _.Emitter),this.onCompositionStart=this._onCompositionStart.event,this._onCompositionUpdate=this._register(new _.Emitter),this.onCompositionUpdate=this._onCompositionUpdate.event,this._onCompositionEnd=this._register(new _.Emitter),this.onCompositionEnd=this._onCompositionEnd.event,this._onSelectionChangeRequest=this._register(new _.Emitter),this.onSelectionChangeRequest=this._onSelectionChangeRequest.event,this._asyncTriggerCut=this._register(new f.RunOnceScheduler(()=>this._onCut.fire(),0)),this._asyncFocusGainWriteScreenReaderContent=this._register(new f.RunOnceScheduler(()=>this.writeScreenReaderContent(\"asyncFocusGain\"),0)),this._textAreaState=i.TextAreaState.EMPTY,this._selectionChangeListener=null,this.writeScreenReaderContent(\"ctor\"),this._hasFocus=!1,this._currentComposition=null;let m=null;this._register(this._textArea.onKeyDown(v=>{const b=new D.StandardKeyboardEvent(v);(b.keyCode===114||this._currentComposition&&b.keyCode===1)&&b.stopPropagation(),b.equals(9)&&b.preventDefault(),m=b,this._onKeyDown.fire(b)})),this._register(this._textArea.onKeyUp(v=>{const b=new D.StandardKeyboardEvent(v);this._onKeyUp.fire(b)})),this._register(this._textArea.onCompositionStart(v=>{i._debugComposition&&console.log(\"[compositionstart]\",v);const b=new u;if(this._currentComposition){this._currentComposition=b;return}if(this._currentComposition=b,this._OS===2&&m&&m.equals(114)&&this._textAreaState.selectionStart===this._textAreaState.selectionEnd&&this._textAreaState.selectionStart>0&&this._textAreaState.value.substr(this._textAreaState.selectionStart-1,1)===v.data&&(m.code===\"ArrowRight\"||m.code===\"ArrowLeft\")){i._debugComposition&&console.log(\"[compositionstart] Handling long press case on macOS + arrow key\",v),b.handleCompositionUpdate(\"x\"),this._onCompositionStart.fire({data:v.data});return}if(this._browser.isAndroid){this._onCompositionStart.fire({data:v.data});return}this._onCompositionStart.fire({data:v.data})})),this._register(this._textArea.onCompositionUpdate(v=>{i._debugComposition&&console.log(\"[compositionupdate]\",v);const b=this._currentComposition;if(!b)return;if(this._browser.isAndroid){const E=i.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),I=i.TextAreaState.deduceAndroidCompositionInput(this._textAreaState,E);this._textAreaState=E,this._onType.fire(I),this._onCompositionUpdate.fire(v);return}const w=b.handleCompositionUpdate(v.data);this._textAreaState=i.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(w),this._onCompositionUpdate.fire(v)})),this._register(this._textArea.onCompositionEnd(v=>{i._debugComposition&&console.log(\"[compositionend]\",v);const b=this._currentComposition;if(!b)return;if(this._currentComposition=null,this._browser.isAndroid){const E=i.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),I=i.TextAreaState.deduceAndroidCompositionInput(this._textAreaState,E);this._textAreaState=E,this._onType.fire(I),this._onCompositionEnd.fire();return}const w=b.handleCompositionUpdate(v.data);this._textAreaState=i.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(w),this._onCompositionEnd.fire()})),this._register(this._textArea.onInput(v=>{if(i._debugComposition&&console.log(\"[input]\",v),this._textArea.setIgnoreSelectionChangeTime(\"received input event\"),this._currentComposition)return;const b=i.TextAreaState.readFromTextArea(this._textArea,this._textAreaState),w=i.TextAreaState.deduceInput(this._textAreaState,b,this._OS===2);w.replacePrevCharCnt===0&&w.text.length===1&&(s.isHighSurrogate(w.text.charCodeAt(0))||w.text.charCodeAt(0)===127)||(this._textAreaState=b,(w.text!==\"\"||w.replacePrevCharCnt!==0||w.replaceNextCharCnt!==0||w.positionDelta!==0)&&this._onType.fire(w))})),this._register(this._textArea.onCut(v=>{this._textArea.setIgnoreSelectionChangeTime(\"received cut event\"),this._ensureClipboardGetsEditorSelection(v),this._asyncTriggerCut.schedule()})),this._register(this._textArea.onCopy(v=>{this._ensureClipboardGetsEditorSelection(v)})),this._register(this._textArea.onPaste(v=>{if(this._textArea.setIgnoreSelectionChangeTime(\"received paste event\"),v.preventDefault(),!v.clipboardData)return;let[b,w]=e.ClipboardEventUtils.getTextData(v.clipboardData);b&&(w=w||a.INSTANCE.get(b),this._onPaste.fire({text:b,metadata:w}))})),this._register(this._textArea.onFocus(()=>{const v=this._hasFocus;this._setHasFocus(!0),this._browser.isSafari&&!v&&this._hasFocus&&this._asyncFocusGainWriteScreenReaderContent.schedule()})),this._register(this._textArea.onBlur(()=>{this._currentComposition&&(this._currentComposition=null,this.writeScreenReaderContent(\"blurWithoutCompositionEnd\"),this._onCompositionEnd.fire()),this._setHasFocus(!1)})),this._register(this._textArea.onSyntheticTap(()=>{this._browser.isAndroid&&this._currentComposition&&(this._currentComposition=null,this.writeScreenReaderContent(\"tapWithoutCompositionEnd\"),this._onCompositionEnd.fire())}))}_installSelectionChangeListener(){let o=0;return k.addDisposableListener(document,\"selectionchange\",d=>{if(S.inputLatency.onSelectionChange(),!this._hasFocus||this._currentComposition||!this._browser.isChrome)return;const l=Date.now(),p=l-o;if(o=l,p<5)return;const m=l-this._textArea.getIgnoreSelectionChangeTime();if(this._textArea.resetSelectionChangeTime(),m<100||!this._textAreaState.selection)return;const v=this._textArea.getValue();if(this._textAreaState.value!==v)return;const b=this._textArea.getSelectionStart(),w=this._textArea.getSelectionEnd();if(this._textAreaState.selectionStart===b&&this._textAreaState.selectionEnd===w)return;const E=this._textAreaState.deduceEditorPosition(b),I=this._host.deduceModelPosition(E[0],E[1],E[2]),M=this._textAreaState.deduceEditorPosition(w),P=this._host.deduceModelPosition(M[0],M[1],M[2]),x=new n.Selection(I.lineNumber,I.column,P.lineNumber,P.column);this._onSelectionChangeRequest.fire(x)})}dispose(){super.dispose(),this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null)}focusTextArea(){this._setHasFocus(!0),this.refreshFocusState()}isFocused(){return this._hasFocus}refreshFocusState(){this._setHasFocus(this._textArea.hasFocus())}_setHasFocus(o){this._hasFocus!==o&&(this._hasFocus=o,this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null),this._hasFocus&&(this._selectionChangeListener=this._installSelectionChangeListener()),this._hasFocus&&this.writeScreenReaderContent(\"focusgain\"),this._hasFocus?this._onFocus.fire():this._onBlur.fire())}_setAndWriteTextAreaState(o,d){this._hasFocus||(d=d.collapseSelection()),d.writeToTextArea(o,this._textArea,this._hasFocus),this._textAreaState=d}writeScreenReaderContent(o){this._currentComposition||this._setAndWriteTextAreaState(o,this._host.getScreenReaderContent())}_ensureClipboardGetsEditorSelection(o){const d=this._host.getDataToCopy(),l={version:1,isFromEmptySelection:d.isFromEmptySelection,multicursorText:d.multicursorText,mode:d.mode};a.INSTANCE.set(this._browser.isFirefox?d.text.replace(/\\r\\n/g,`\n`):d.text,l),o.preventDefault(),o.clipboardData&&e.ClipboardEventUtils.setTextData(o.clipboardData,d.text,d.html,l)}}e.TextAreaInput=h,e.ClipboardEventUtils={getTextData(c){const o=c.getData(C.Mimes.text);let d=null;const l=c.getData(\"vscode-editor-data\");if(typeof l==\"string\")try{d=JSON.parse(l),d.version!==1&&(d=null)}catch{}return o.length===0&&d===null&&c.files.length>0?[Array.prototype.slice.call(c.files,0).map(m=>m.name).join(`\n`),null]:[o,d]},setTextData(c,o,d,l){c.setData(C.Mimes.text,o),typeof d==\"string\"&&c.setData(\"text/html\",d),c.setData(\"vscode-editor-data\",JSON.stringify(l))}};class r extends g.Disposable{constructor(o){super(),this._actual=o,this.onKeyDown=this._register(new y.DomEmitter(this._actual,\"keydown\")).event,this.onKeyUp=this._register(new y.DomEmitter(this._actual,\"keyup\")).event,this.onCompositionStart=this._register(new y.DomEmitter(this._actual,\"compositionstart\")).event,this.onCompositionUpdate=this._register(new y.DomEmitter(this._actual,\"compositionupdate\")).event,this.onCompositionEnd=this._register(new y.DomEmitter(this._actual,\"compositionend\")).event,this.onBeforeInput=this._register(new y.DomEmitter(this._actual,\"beforeinput\")).event,this.onInput=this._register(new y.DomEmitter(this._actual,\"input\")).event,this.onCut=this._register(new y.DomEmitter(this._actual,\"cut\")).event,this.onCopy=this._register(new y.DomEmitter(this._actual,\"copy\")).event,this.onPaste=this._register(new y.DomEmitter(this._actual,\"paste\")).event,this.onFocus=this._register(new y.DomEmitter(this._actual,\"focus\")).event,this.onBlur=this._register(new y.DomEmitter(this._actual,\"blur\")).event,this._onSyntheticTap=this._register(new _.Emitter),this.onSyntheticTap=this._onSyntheticTap.event,this._ignoreSelectionChangeTime=0,this._register(this.onKeyDown(()=>S.inputLatency.onKeyDown())),this._register(this.onBeforeInput(()=>S.inputLatency.onBeforeInput())),this._register(this.onInput(()=>S.inputLatency.onInput())),this._register(this.onKeyUp(()=>S.inputLatency.onKeyUp())),this._register(k.addDisposableListener(this._actual,t.Tap,()=>this._onSyntheticTap.fire()))}hasFocus(){const o=k.getShadowRoot(this._actual);return o?o.activeElement===this._actual:k.isInDOM(this._actual)?document.activeElement===this._actual:!1}setIgnoreSelectionChangeTime(o){this._ignoreSelectionChangeTime=Date.now()}getIgnoreSelectionChangeTime(){return this._ignoreSelectionChangeTime}resetSelectionChangeTime(){this._ignoreSelectionChangeTime=0}getValue(){return this._actual.value}setValue(o,d){const l=this._actual;l.value!==d&&(this.setIgnoreSelectionChangeTime(\"setValue\"),l.value=d)}getSelectionStart(){return this._actual.selectionDirection===\"backward\"?this._actual.selectionEnd:this._actual.selectionStart}getSelectionEnd(){return this._actual.selectionDirection===\"backward\"?this._actual.selectionStart:this._actual.selectionEnd}setSelectionRange(o,d,l){const p=this._actual;let m=null;const v=k.getShadowRoot(p);v?m=v.activeElement:m=document.activeElement;const b=m===p,w=p.selectionStart,E=p.selectionEnd;if(b&&w===d&&E===l){L.isFirefox&&window.parent!==window&&p.focus();return}if(b){this.setIgnoreSelectionChangeTime(\"setSelectionRange\"),p.setSelectionRange(d,l),L.isFirefox&&window.parent!==window&&p.focus();return}try{const I=k.saveParentsScrollTop(p);this.setIgnoreSelectionChangeTime(\"setSelectionRange\"),p.focus(),p.setSelectionRange(d,l),k.restoreParentsScrollTop(p,I)}catch{}}}e.TextAreaWrapper=r}),define(ne[589],se([1,0,7,35,53]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewContentWidgets=void 0;class D extends y.ViewPart{constructor(i,n){super(i),this._viewDomNode=n,this._widgets={},this.domNode=(0,k.createFastDomNode)(document.createElement(\"div\")),y.PartFingerprints.write(this.domNode,1),this.domNode.setClassName(\"contentWidgets\"),this.domNode.setPosition(\"absolute\"),this.domNode.setTop(0),this.overflowingContentWidgetsDomNode=(0,k.createFastDomNode)(document.createElement(\"div\")),y.PartFingerprints.write(this.overflowingContentWidgetsDomNode,2),this.overflowingContentWidgetsDomNode.setClassName(\"overflowingContentWidgets\")}dispose(){super.dispose(),this._widgets={}}onConfigurationChanged(i){const n=Object.keys(this._widgets);for(const t of n)this._widgets[t].onConfigurationChanged(i);return!0}onDecorationsChanged(i){return!0}onFlushed(i){return!0}onLineMappingChanged(i){return this._updateAnchorsViewPositions(),!0}onLinesChanged(i){return this._updateAnchorsViewPositions(),!0}onLinesDeleted(i){return this._updateAnchorsViewPositions(),!0}onLinesInserted(i){return this._updateAnchorsViewPositions(),!0}onScrollChanged(i){return!0}onZonesChanged(i){return!0}_updateAnchorsViewPositions(){const i=Object.keys(this._widgets);for(const n of i)this._widgets[n].updateAnchorViewPosition()}addWidget(i){const n=new S(this._context,this._viewDomNode,i);this._widgets[n.id]=n,n.allowEditorOverflow?this.overflowingContentWidgetsDomNode.appendChild(n.domNode):this.domNode.appendChild(n.domNode),this.setShouldRender()}setWidgetPosition(i,n,t,a,u){this._widgets[i.getId()].setPosition(n,t,a,u),this.setShouldRender()}removeWidget(i){const n=i.getId();if(this._widgets.hasOwnProperty(n)){const t=this._widgets[n];delete this._widgets[n];const a=t.domNode.domNode;a.parentNode.removeChild(a),a.removeAttribute(\"monaco-visible-content-widget\"),this.setShouldRender()}}shouldSuppressMouseDownOnWidget(i){return this._widgets.hasOwnProperty(i)?this._widgets[i].suppressMouseDown:!1}onBeforeRender(i){const n=Object.keys(this._widgets);for(const t of n)this._widgets[t].onBeforeRender(i)}prepareRender(i){const n=Object.keys(this._widgets);for(const t of n)this._widgets[t].prepareRender(i)}render(i){const n=Object.keys(this._widgets);for(const t of n)this._widgets[t].render(i)}}e.ViewContentWidgets=D;class S{constructor(i,n,t){this._primaryAnchor=new f(null,null),this._secondaryAnchor=new f(null,null),this._context=i,this._viewDomNode=n,this._actual=t,this.domNode=(0,k.createFastDomNode)(this._actual.getDomNode()),this.id=this._actual.getId(),this.allowEditorOverflow=this._actual.allowEditorOverflow||!1,this.suppressMouseDown=this._actual.suppressMouseDown||!1;const a=this._context.configuration.options,u=a.get(142);this._fixedOverflowWidgets=a.get(41),this._contentWidth=u.contentWidth,this._contentLeft=u.contentLeft,this._lineHeight=a.get(65),this._affinity=null,this._preference=[],this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1,this._maxWidth=this._getMaxWidth(),this._isVisible=!1,this._renderData=null,this.domNode.setPosition(this._fixedOverflowWidgets&&this.allowEditorOverflow?\"fixed\":\"absolute\"),this.domNode.setDisplay(\"none\"),this.domNode.setVisibility(\"hidden\"),this.domNode.setAttribute(\"widgetId\",this.id),this.domNode.setMaxWidth(this._maxWidth)}onConfigurationChanged(i){const n=this._context.configuration.options;if(this._lineHeight=n.get(65),i.hasChanged(142)){const t=n.get(142);this._contentLeft=t.contentLeft,this._contentWidth=t.contentWidth,this._maxWidth=this._getMaxWidth()}}updateAnchorViewPosition(){this._setPosition(this._affinity,this._primaryAnchor.modelPosition,this._secondaryAnchor.modelPosition)}_setPosition(i,n,t){this._affinity=i,this._primaryAnchor=a(n,this._context.viewModel,this._affinity),this._secondaryAnchor=a(t,this._context.viewModel,this._affinity);function a(u,h,r){if(!u)return new f(null,null);const c=h.model.validatePosition(u);if(h.coordinatesConverter.modelPositionIsVisible(c)){const o=h.coordinatesConverter.convertModelPositionToViewPosition(c,r??void 0);return new f(u,o)}return new f(u,null)}}_getMaxWidth(){return this.allowEditorOverflow?window.innerWidth||document.documentElement.offsetWidth||document.body.offsetWidth:this._contentWidth}setPosition(i,n,t,a){this._setPosition(a,i,n),this._preference=t,this._primaryAnchor.viewPosition&&this._preference&&this._preference.length>0?this.domNode.setDisplay(\"block\"):this.domNode.setDisplay(\"none\"),this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1}_layoutBoxInViewport(i,n,t,a){const u=i.top,h=u,r=i.top+i.height,c=a.viewportHeight-r,o=u-t,d=h>=t,l=r,p=c>=t;let m=i.left;return m+n>a.scrollLeft+a.viewportWidth&&(m=a.scrollLeft+a.viewportWidth-n),m<a.scrollLeft&&(m=a.scrollLeft),{fitsAbove:d,aboveTop:o,fitsBelow:p,belowTop:l,left:m}}_layoutHorizontalSegmentInPage(i,n,t,a){const r=Math.max(15,n.left-a),c=Math.min(n.left+n.width+a,i.width-15);let o=n.left+t-window.scrollX;if(o+a>c){const d=o-(c-a);o-=d,t-=d}if(o<r){const d=o-r;o-=d,t-=d}return[t,o]}_layoutBoxInPage(i,n,t,a){const u=i.top-t,h=i.top+i.height,r=L.getDomNodePagePosition(this._viewDomNode.domNode),c=r.top+u-window.scrollY,o=r.top+h-window.scrollY,d=L.getClientArea(document.body),[l,p]=this._layoutHorizontalSegmentInPage(d,r,i.left-a.scrollLeft+this._contentLeft,n),m=22,v=22,b=c>=m,w=o+t<=d.height-v;return this._fixedOverflowWidgets?{fitsAbove:b,aboveTop:Math.max(c,m),fitsBelow:w,belowTop:o,left:p}:{fitsAbove:b,aboveTop:u,fitsBelow:w,belowTop:h,left:l}}_prepareRenderWidgetAtExactPositionOverflowing(i){return new _(i.top,i.left+this._contentLeft)}_getAnchorsCoordinates(i){var n,t;const a=r(this._primaryAnchor.viewPosition,this._affinity,this._lineHeight),u=((n=this._secondaryAnchor.viewPosition)===null||n===void 0?void 0:n.lineNumber)===((t=this._primaryAnchor.viewPosition)===null||t===void 0?void 0:t.lineNumber)?this._secondaryAnchor.viewPosition:null,h=r(u,this._affinity,this._lineHeight);return{primary:a,secondary:h};function r(c,o,d){if(!c)return null;const l=i.visibleRangeForPosition(c);if(!l)return null;const p=c.column===1&&o===3?0:l.left,m=i.getVerticalOffsetForLineNumber(c.lineNumber)-i.scrollTop;return new g(m,p,d)}}_reduceAnchorCoordinates(i,n,t){if(!n)return i;const a=this._context.configuration.options.get(49);let u=n.left;return u<i.left?u=Math.max(u,i.left-t+a.typicalFullwidthCharacterWidth):u=Math.min(u,i.left+t-a.typicalFullwidthCharacterWidth),new g(i.top,u,i.height)}_prepareRenderWidget(i){if(!this._preference||this._preference.length===0)return null;const{primary:n,secondary:t}=this._getAnchorsCoordinates(i);if(!n)return null;if(this._cachedDomNodeOffsetWidth===-1||this._cachedDomNodeOffsetHeight===-1){let h=null;if(typeof this._actual.beforeRender==\"function\"&&(h=C(this._actual.beforeRender,this._actual)),h)this._cachedDomNodeOffsetWidth=h.width,this._cachedDomNodeOffsetHeight=h.height;else{const c=this.domNode.domNode.getBoundingClientRect();this._cachedDomNodeOffsetWidth=Math.round(c.width),this._cachedDomNodeOffsetHeight=Math.round(c.height)}}const a=this._reduceAnchorCoordinates(n,t,this._cachedDomNodeOffsetWidth);let u;this.allowEditorOverflow?u=this._layoutBoxInPage(a,this._cachedDomNodeOffsetWidth,this._cachedDomNodeOffsetHeight,i):u=this._layoutBoxInViewport(a,this._cachedDomNodeOffsetWidth,this._cachedDomNodeOffsetHeight,i);for(let h=1;h<=2;h++)for(const r of this._preference)if(r===1){if(!u)return null;if(h===2||u.fitsAbove)return{coordinate:new _(u.aboveTop,u.left),position:1}}else if(r===2){if(!u)return null;if(h===2||u.fitsBelow)return{coordinate:new _(u.belowTop,u.left),position:2}}else return this.allowEditorOverflow?{coordinate:this._prepareRenderWidgetAtExactPositionOverflowing(new _(a.top,a.left)),position:0}:{coordinate:new _(a.top,a.left),position:0};return null}onBeforeRender(i){!this._primaryAnchor.viewPosition||!this._preference||this._primaryAnchor.viewPosition.lineNumber<i.startLineNumber||this._primaryAnchor.viewPosition.lineNumber>i.endLineNumber||this.domNode.setMaxWidth(this._maxWidth)}prepareRender(i){this._renderData=this._prepareRenderWidget(i)}render(i){if(!this._renderData){this._isVisible&&(this.domNode.removeAttribute(\"monaco-visible-content-widget\"),this._isVisible=!1,this.domNode.setVisibility(\"hidden\")),typeof this._actual.afterRender==\"function\"&&C(this._actual.afterRender,this._actual,null);return}this.allowEditorOverflow?(this.domNode.setTop(this._renderData.coordinate.top),this.domNode.setLeft(this._renderData.coordinate.left)):(this.domNode.setTop(this._renderData.coordinate.top+i.scrollTop-i.bigNumbersDelta),this.domNode.setLeft(this._renderData.coordinate.left)),this._isVisible||(this.domNode.setVisibility(\"inherit\"),this.domNode.setAttribute(\"monaco-visible-content-widget\",\"true\"),this._isVisible=!0),typeof this._actual.afterRender==\"function\"&&C(this._actual.afterRender,this._actual,this._renderData.position)}}class f{constructor(i,n){this.modelPosition=i,this.viewPosition=n}}class _{constructor(i,n){this.top=i,this.left=n,this._coordinateBrand=void 0}}class g{constructor(i,n,t){this.top=i,this.left=n,this.height=t,this._anchorCoordinateBrand=void 0}}function C(s,i,...n){try{return s.call(i,...n)}catch{return null}}}),define(ne[590],se([1,0,130,2,42]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DiffEditorSash=void 0;class D extends k.Disposable{constructor(f,_,g){super(),this._options=f,this._domNode=_,this._dimensions=g,this._sashRatio=(0,y.observableValue)(\"sashRatio\",void 0),this.sashLeft=(0,y.derived)(C=>{var s;const i=(s=this._sashRatio.read(C))!==null&&s!==void 0?s:this._options.splitViewDefaultRatio.read(C);return this._computeSashLeft(i,C)}),this._sash=this._register(new L.Sash(this._domNode,{getVerticalSashTop:C=>0,getVerticalSashLeft:C=>this.sashLeft.get(),getVerticalSashHeight:C=>this._dimensions.height.get()},{orientation:0})),this._startSashPosition=void 0,this._register(this._sash.onDidStart(()=>{this._startSashPosition=this.sashLeft.get()})),this._register(this._sash.onDidChange(C=>{const s=this._dimensions.width.get(),i=this._computeSashLeft((this._startSashPosition+(C.currentX-C.startX))/s,void 0);this._sashRatio.set(i/s,void 0)})),this._register(this._sash.onDidEnd(()=>this._sash.layout())),this._register(this._sash.onDidReset(()=>this._sashRatio.set(void 0,void 0))),this._register((0,y.autorun)(C=>{const s=this._options.enableSplitViewResizing.read(C);this._sash.state=s?3:0,this.sashLeft.read(C),this._sash.layout()}))}setBoundarySashes(f){this._sash.orthogonalEndSash=f.bottom}_computeSashLeft(f,_){const g=this._dimensions.width.read(_),C=Math.floor(this._options.splitViewDefaultRatio.read(_)*g),s=this._options.enableSplitViewResizing.read(_)?Math.floor(f*g):C,i=100;return g<=i*2?C:s<i?i:s>g-i?g-i:s}}e.DiffEditorSash=D}),define(ne[318],se([1,0,13,19,2,42,102,66,276,109,179,278]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnchangedRegion=e.DiffMapping=e.DiffState=e.DiffEditorViewModel=void 0;class i extends y.Disposable{setActiveMovedText(c){this._activeMovedText.set(c,void 0)}constructor(c,o,d){super(),this.model=c,this._options=o,this._isDiffUpToDate=(0,D.observableValue)(\"isDiffUpToDate\",!1),this.isDiffUpToDate=this._isDiffUpToDate,this._diff=(0,D.observableValue)(\"diff\",void 0),this.diff=this._diff,this._unchangedRegions=(0,D.observableValue)(\"unchangedRegion\",{regions:[],originalDecorationIds:[],modifiedDecorationIds:[]}),this.unchangedRegions=(0,D.derived)(b=>this._options.hideUnchangedRegions.read(b)?this._unchangedRegions.read(b).regions:((0,D.transaction)(w=>{for(const E of this._unchangedRegions.get().regions)E.collapseAll(w)}),[])),this.movedTextToCompare=(0,D.observableValue)(\"movedTextToCompare\",void 0),this._activeMovedText=(0,D.observableValue)(\"activeMovedText\",void 0),this._hoveredMovedText=(0,D.observableValue)(\"hoveredMovedText\",void 0),this.activeMovedText=(0,D.derived)(b=>{var w,E;return(E=(w=this.movedTextToCompare.read(b))!==null&&w!==void 0?w:this._hoveredMovedText.read(b))!==null&&E!==void 0?E:this._activeMovedText.read(b)}),this._cancellationTokenSource=new k.CancellationTokenSource,this._register((0,y.toDisposable)(()=>this._cancellationTokenSource.cancel()));const l=(0,D.observableSignal)(\"contentChangedSignal\"),p=this._register(new L.RunOnceScheduler(()=>l.trigger(void 0),200)),m=(b,w,E)=>{const I=a.fromDiffs(b.changes,c.original.getLineCount(),c.modified.getLineCount(),this._options.hideUnchangedRegionsminimumLineCount.read(E),this._options.hideUnchangedRegionsContextLineCount.read(E)),M=this._unchangedRegions.get(),P=M.originalDecorationIds.map(N=>c.original.getDecorationRange(N)).filter(N=>!!N).map(N=>f.LineRange.fromRange(N)),x=M.modifiedDecorationIds.map(N=>c.modified.getDecorationRange(N)).filter(N=>!!N).map(N=>f.LineRange.fromRange(N)),T=c.original.deltaDecorations(M.originalDecorationIds,I.map(N=>({range:N.originalRange.toInclusiveRange(),options:{description:\"unchanged\"}}))),A=c.modified.deltaDecorations(M.modifiedDecorationIds,I.map(N=>({range:N.modifiedRange.toInclusiveRange(),options:{description:\"unchanged\"}})));for(const N of I)for(let F=0;F<M.regions.length;F++)if(N.originalRange.intersectsStrict(P[F])&&N.modifiedRange.intersectsStrict(x[F])){N.setHiddenModifiedRange(M.regions[F].getHiddenModifiedRange(void 0),w);break}this._unchangedRegions.set({regions:I,originalDecorationIds:T,modifiedDecorationIds:A},w)};this._register(c.modified.onDidChangeContent(b=>{if(this._diff.get()){const E=C.TextEditInfo.fromModelContentChanges(b.changes),I=(this._lastDiff,c.original,c.modified,void 0);I&&(this._lastDiff=I,(0,D.transaction)(M=>{this._diff.set(n.fromDiffResult(this._lastDiff),M),m(I,M);const P=this.movedTextToCompare.get();this.movedTextToCompare.set(P?this._lastDiff.moves.find(x=>x.lineRangeMapping.modified.intersect(P.lineRangeMapping.modified)):void 0,M)}))}p.schedule()})),this._register(c.original.onDidChangeContent(b=>{if(this._diff.get()){const E=C.TextEditInfo.fromModelContentChanges(b.changes),I=(this._lastDiff,c.original,c.modified,void 0);I&&(this._lastDiff=I,(0,D.transaction)(M=>{this._diff.set(n.fromDiffResult(this._lastDiff),M),m(I,M);const P=this.movedTextToCompare.get();this.movedTextToCompare.set(P?this._lastDiff.moves.find(x=>x.lineRangeMapping.modified.intersect(P.lineRangeMapping.modified)):void 0,M)}))}p.schedule()}));const v=(0,D.observableSignalFromEvent)(\"documentDiffProviderOptionChanged\",d.onDidChange);this._register((0,D.autorunWithStore)((b,w)=>we(this,void 0,void 0,function*(){var E,I;this._options.hideUnchangedRegionsminimumLineCount.read(b),this._options.hideUnchangedRegionsContextLineCount.read(b),p.cancel(),l.read(b),v.read(b),(0,S.readHotReloadableExport)(_.AdvancedLinesDiffComputer,b),this._isDiffUpToDate.set(!1,void 0);let M=[];w.add(c.original.onDidChangeContent(T=>{const A=C.TextEditInfo.fromModelContentChanges(T.changes);M=(0,s.combineTextEditInfos)(M,A)}));let P=[];w.add(c.modified.onDidChangeContent(T=>{const A=C.TextEditInfo.fromModelContentChanges(T.changes);P=(0,s.combineTextEditInfos)(P,A)}));let x=yield d.computeDiff(c.original,c.modified,{ignoreTrimWhitespace:this._options.ignoreTrimWhitespace.read(b),maxComputationTimeMs:this._options.maxComputationTimeMs.read(b),computeMoves:this._options.showMoves.read(b)},this._cancellationTokenSource.token);this._cancellationTokenSource.token.isCancellationRequested||(x=(E=(c.original,c.modified,void 0))!==null&&E!==void 0?E:x,x=(I=(c.original,c.modified,void 0))!==null&&I!==void 0?I:x,(0,D.transaction)(T=>{m(x,T),this._lastDiff=x;const A=n.fromDiffResult(x);this._diff.set(A,T),this._isDiffUpToDate.set(!0,T);const N=this.movedTextToCompare.get();this.movedTextToCompare.set(N?this._lastDiff.moves.find(F=>F.lineRangeMapping.modified.intersect(N.lineRangeMapping.modified)):void 0,T)}))})))}ensureModifiedLineIsVisible(c,o){var d;if(((d=this.diff.get())===null||d===void 0?void 0:d.mappings.length)===0)return;const l=this._unchangedRegions.get().regions;for(const p of l)if(p.getHiddenModifiedRange(void 0).contains(c)){p.showModifiedLine(c,o);return}}ensureOriginalLineIsVisible(c,o){var d;if(((d=this.diff.get())===null||d===void 0?void 0:d.mappings.length)===0)return;const l=this._unchangedRegions.get().regions;for(const p of l)if(p.getHiddenOriginalRange(void 0).contains(c)){p.showOriginalLine(c,o);return}}waitForDiff(){return we(this,void 0,void 0,function*(){yield(0,D.waitForState)(this.isDiffUpToDate,c=>c)})}serializeState(){return{collapsedRegions:this._unchangedRegions.get().regions.map(o=>({range:o.getHiddenModifiedRange(void 0).serialize()}))}}restoreSerializedState(c){const o=c.collapsedRegions.map(l=>f.LineRange.deserialize(l.range)),d=this._unchangedRegions.get();(0,D.transaction)(l=>{for(const p of d.regions)for(const m of o)if(p.modifiedRange.intersect(m)){p.setHiddenModifiedRange(m,l);break}})}}e.DiffEditorViewModel=i;class n{static fromDiffResult(c){return new n(c.changes.map(o=>new t(o)),c.moves||[],c.identical,c.quitEarly)}constructor(c,o,d,l){this.mappings=c,this.movedTexts=o,this.identical=d,this.quitEarly=l}}e.DiffState=n;class t{constructor(c){this.lineRangeMapping=c}}e.DiffMapping=t;class a{static fromDiffs(c,o,d,l,p){const m=g.LineRangeMapping.inverse(c,o,d),v=[];for(const b of m){let w=b.originalRange.startLineNumber,E=b.modifiedRange.startLineNumber,I=b.originalRange.length;const M=w===1&&E===1,P=w+I===o+1&&E+I===d+1;(M||P)&&I>=p+l?(M&&!P&&(I-=p),P&&!M&&(w+=p,E+=p,I-=p),v.push(new a(w,E,I,0,0))):I>=p*2+l&&(w+=p,E+=p,I-=p*2,v.push(new a(w,E,I,0,0)))}return v}get originalRange(){return f.LineRange.ofLength(this.originalLineNumber,this.lineCount)}get modifiedRange(){return f.LineRange.ofLength(this.modifiedLineNumber,this.lineCount)}constructor(c,o,d,l,p){this.originalLineNumber=c,this.modifiedLineNumber=o,this.lineCount=d,this._visibleLineCountTop=(0,D.observableValue)(\"visibleLineCountTop\",0),this.visibleLineCountTop=this._visibleLineCountTop,this._visibleLineCountBottom=(0,D.observableValue)(\"visibleLineCountBottom\",0),this.visibleLineCountBottom=this._visibleLineCountBottom,this._shouldHideControls=(0,D.derived)(m=>this.visibleLineCountTop.read(m)+this.visibleLineCountBottom.read(m)===this.lineCount&&!this.isDragged.read(m)),this.isDragged=(0,D.observableValue)(\"isDragged\",!1),this._visibleLineCountTop.set(l,void 0),this._visibleLineCountBottom.set(p,void 0)}shouldHideControls(c){return this._shouldHideControls.read(c)}getHiddenOriginalRange(c){return f.LineRange.ofLength(this.originalLineNumber+this._visibleLineCountTop.read(c),this.lineCount-this._visibleLineCountTop.read(c)-this._visibleLineCountBottom.read(c))}getHiddenModifiedRange(c){return f.LineRange.ofLength(this.modifiedLineNumber+this._visibleLineCountTop.read(c),this.lineCount-this._visibleLineCountTop.read(c)-this._visibleLineCountBottom.read(c))}setHiddenModifiedRange(c,o){const d=c.startLineNumber-this.modifiedLineNumber,l=this.modifiedLineNumber+this.lineCount-c.endLineNumberExclusive;this.setState(d,l,o)}getMaxVisibleLineCountTop(){return this.lineCount-this._visibleLineCountBottom.get()}getMaxVisibleLineCountBottom(){return this.lineCount-this._visibleLineCountTop.get()}showMoreAbove(c=10,o){const d=this.getMaxVisibleLineCountTop();this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get()+c,d),o)}showMoreBelow(c=10,o){const d=this.lineCount-this._visibleLineCountTop.get();this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get()+c,d),o)}showAll(c){this._visibleLineCountBottom.set(this.lineCount-this._visibleLineCountTop.get(),c)}showModifiedLine(c,o){const d=c+1-(this.modifiedLineNumber+this._visibleLineCountTop.get()),l=this.modifiedLineNumber-this._visibleLineCountBottom.get()+this.lineCount-c;d<l?this._visibleLineCountTop.set(this._visibleLineCountTop.get()+d,o):this._visibleLineCountBottom.set(this._visibleLineCountBottom.get()+l,o)}showOriginalLine(c,o){const d=c-this.originalLineNumber,l=this.originalLineNumber+this.lineCount-c;d<l?this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get()+l-d,this.getMaxVisibleLineCountTop()),o):this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get()+d-l,this.getMaxVisibleLineCountBottom()),o)}collapseAll(c){this._visibleLineCountTop.set(0,c),this._visibleLineCountBottom.set(0,c)}setState(c,o,d){c=Math.max(Math.min(c,this.lineCount),0),o=Math.max(Math.min(o,this.lineCount-c),0),this._visibleLineCountTop.set(c,d),this._visibleLineCountBottom.set(o,d)}}e.UnchangedRegion=a;function u(r,c,o,d){}function h(r,c,o,d){}}),define(ne[93],se([1,0,11,17,140]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StringBuilder=e.decodeUTF16LE=e.getPlatformTextDecoder=void 0;let D;function S(){return D||(D=new TextDecoder(\"UTF-16LE\")),D}let f;function _(){return f||(f=new TextDecoder(\"UTF-16BE\")),f}let g;function C(){return g||(g=k.isLittleEndian()?S():_()),g}e.getPlatformTextDecoder=C;function s(t,a,u){const h=new Uint16Array(t.buffer,a,u);return u>0&&(h[0]===65279||h[0]===65534)?i(t,a,u):S().decode(h)}e.decodeUTF16LE=s;function i(t,a,u){const h=[];let r=0;for(let c=0;c<u;c++){const o=y.readUInt16LE(t,a);a+=2,h[r++]=String.fromCharCode(o)}return h.join(\"\")}class n{constructor(a){this._capacity=a|0,this._buffer=new Uint16Array(this._capacity),this._completedStrings=null,this._bufferLength=0}reset(){this._completedStrings=null,this._bufferLength=0}build(){return this._completedStrings!==null?(this._flushBuffer(),this._completedStrings.join(\"\")):this._buildBuffer()}_buildBuffer(){if(this._bufferLength===0)return\"\";const a=new Uint16Array(this._buffer.buffer,0,this._bufferLength);return C().decode(a)}_flushBuffer(){const a=this._buildBuffer();this._bufferLength=0,this._completedStrings===null?this._completedStrings=[a]:this._completedStrings[this._completedStrings.length]=a}appendCharCode(a){const u=this._capacity-this._bufferLength;u<=1&&(u===0||L.isHighSurrogate(a))&&this._flushBuffer(),this._buffer[this._bufferLength++]=a}appendASCIICharCode(a){this._bufferLength===this._capacity&&this._flushBuffer(),this._buffer[this._bufferLength++]=a}appendString(a){const u=a.length;if(this._bufferLength+u>=this._capacity){this._flushBuffer(),this._completedStrings[this._completedStrings.length]=a;return}for(let h=0;h<u;h++)this._buffer[this._bufferLength++]=a.charCodeAt(h)}}e.StringBuilder=n}),define(ne[591],se([1,0,89,11,59,93,284,111]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DOMLineBreaksComputerFactory=void 0;const _=(0,L.createTrustedTypesPolicy)(\"domLineBreaksComputer\",{createHTML:a=>a});class g{static create(){return new g}constructor(){}createLineBreaksComputer(u,h,r,c,o){const d=[],l=[];return{addRequest:(p,m,v)=>{d.push(p),l.push(m)},finalize:()=>C(d,u,h,r,c,o,l)}}}e.DOMLineBreaksComputerFactory=g;function C(a,u,h,r,c,o,d){var l;function p(j){const R=d[j];if(R){const K=f.LineInjectedText.applyInjectedText(a[j],R),G=R.map(J=>J.options),Z=R.map(J=>J.column-1);return new S.ModelLineProjectionData(Z,G,[K.length],[],0)}else return null}if(r===-1){const j=[];for(let R=0,K=a.length;R<K;R++)j[R]=p(R);return j}const m=Math.round(r*u.typicalHalfwidthCharacterWidth),b=Math.round(h*(c===3?2:c===2?1:0)),w=Math.ceil(u.spaceWidth*b),E=document.createElement(\"div\");(0,y.applyFontInfo)(E,u);const I=new D.StringBuilder(1e4),M=[],P=[],x=[],T=[],A=[];for(let j=0;j<a.length;j++){const R=f.LineInjectedText.applyInjectedText(a[j],d[j]);let K=0,G=0,Z=m;if(c!==0)if(K=k.firstNonWhitespaceIndex(R),K===-1)K=0;else{for(let B=0;B<K;B++){const V=R.charCodeAt(B)===9?h-G%h:1;G+=V}const H=Math.ceil(u.spaceWidth*G);H+u.typicalFullwidthCharacterWidth>m?(K=0,G=0):Z=m-H}const J=R.substr(K),X=s(J,G,h,Z,I,w);M[j]=K,P[j]=G,x[j]=J,T[j]=X[0],A[j]=X[1]}const N=I.build(),F=(l=_?.createHTML(N))!==null&&l!==void 0?l:N;E.innerHTML=F,E.style.position=\"absolute\",E.style.top=\"10000\",o===\"keepAll\"?(E.style.wordBreak=\"keep-all\",E.style.overflowWrap=\"anywhere\"):(E.style.wordBreak=\"inherit\",E.style.overflowWrap=\"break-word\"),document.body.appendChild(E);const O=document.createRange(),W=Array.prototype.slice.call(E.children,0),U=[];for(let j=0;j<a.length;j++){const R=W[j],K=i(O,R,x[j],T[j]);if(K===null){U[j]=p(j);continue}const G=M[j],Z=P[j]+b,J=A[j],X=[];for(let Y=0,ie=K.length;Y<ie;Y++)X[Y]=J[K[Y]];if(G!==0)for(let Y=0,ie=K.length;Y<ie;Y++)K[Y]+=G;let H,B;const V=d[j];V?(H=V.map(Y=>Y.options),B=V.map(Y=>Y.column-1)):(H=null,B=null),U[j]=new S.ModelLineProjectionData(B,H,K,X,Z)}return document.body.removeChild(E),U}function s(a,u,h,r,c,o){if(o!==0){const w=String(o);c.appendString('<div style=\"text-indent: -'),c.appendString(w),c.appendString(\"px; padding-left: \"),c.appendString(w),c.appendString(\"px; box-sizing: border-box; width:\")}else c.appendString('<div style=\"width:');c.appendString(String(r)),c.appendString('px;\">');const d=a.length;let l=u,p=0;const m=[],v=[];let b=0<d?a.charCodeAt(0):0;c.appendString(\"<span>\");for(let w=0;w<d;w++){w!==0&&w%16384===0&&c.appendString(\"</span><span>\"),m[w]=p,v[w]=l;const E=b;b=w+1<d?a.charCodeAt(w+1):0;let I=1,M=1;switch(E){case 9:I=h-l%h,M=I;for(let P=1;P<=I;P++)P<I?c.appendCharCode(160):c.appendASCIICharCode(32);break;case 32:b===32?c.appendCharCode(160):c.appendASCIICharCode(32);break;case 60:c.appendString(\"&lt;\");break;case 62:c.appendString(\"&gt;\");break;case 38:c.appendString(\"&amp;\");break;case 0:c.appendString(\"&#00;\");break;case 65279:case 8232:case 8233:case 133:c.appendCharCode(65533);break;default:k.isFullWidthCharacter(E)&&M++,E<32?c.appendCharCode(9216+E):c.appendCharCode(E)}p+=I,l+=M}return c.appendString(\"</span>\"),m[a.length]=p,v[a.length]=l,c.appendString(\"</div>\"),[m,v]}function i(a,u,h,r){if(h.length<=1)return null;const c=Array.prototype.slice.call(u.children,0),o=[];try{n(a,c,r,0,null,h.length-1,null,o)}catch(d){return console.log(d),null}return o.length===0?null:(o.push(h.length),o)}function n(a,u,h,r,c,o,d,l){if(r===o||(c=c||t(a,u,h[r],h[r+1]),d=d||t(a,u,h[o],h[o+1]),Math.abs(c[0].top-d[0].top)<=.1))return;if(r+1===o){l.push(o);return}const p=r+(o-r)/2|0,m=t(a,u,h[p],h[p+1]);n(a,u,h,r,c,p,m,l),n(a,u,h,p,m,o,d,l)}function t(a,u,h,r){return a.setStart(u[h/16384|0].firstChild,h%16384),a.setEnd(u[r/16384|0].firstChild,r%16384),a.getClientRects()}}),define(ne[229],se([1,0,35,89,9,93]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.VisibleLinesCollection=e.RenderedLinesCollection=void 0;class S{constructor(C){this._createLine=C,this._set(1,[])}flush(){this._set(1,[])}_set(C,s){this._lines=s,this._rendLineNumberStart=C}_get(){return{rendLineNumberStart:this._rendLineNumberStart,lines:this._lines}}getStartLineNumber(){return this._rendLineNumberStart}getEndLineNumber(){return this._rendLineNumberStart+this._lines.length-1}getCount(){return this._lines.length}getLine(C){const s=C-this._rendLineNumberStart;if(s<0||s>=this._lines.length)throw new y.BugIndicatingError(\"Illegal value for lineNumber\");return this._lines[s]}onLinesDeleted(C,s){if(this.getCount()===0)return null;const i=this.getStartLineNumber(),n=this.getEndLineNumber();if(s<i){const h=s-C+1;return this._rendLineNumberStart-=h,null}if(C>n)return null;let t=0,a=0;for(let h=i;h<=n;h++){const r=h-this._rendLineNumberStart;C<=h&&h<=s&&(a===0?(t=r,a=1):a++)}if(C<i){let h=0;s<i?h=s-C+1:h=i-C,this._rendLineNumberStart-=h}return this._lines.splice(t,a)}onLinesChanged(C,s){const i=C+s-1;if(this.getCount()===0)return!1;const n=this.getStartLineNumber(),t=this.getEndLineNumber();let a=!1;for(let u=C;u<=i;u++)u>=n&&u<=t&&(this._lines[u-this._rendLineNumberStart].onContentChanged(),a=!0);return a}onLinesInserted(C,s){if(this.getCount()===0)return null;const i=s-C+1,n=this.getStartLineNumber(),t=this.getEndLineNumber();if(C<=n)return this._rendLineNumberStart+=i,null;if(C>t)return null;if(i+C>t)return this._lines.splice(C-this._rendLineNumberStart,t-C+1);const a=[];for(let o=0;o<i;o++)a[o]=this._createLine();const u=C-this._rendLineNumberStart,h=this._lines.slice(0,u),r=this._lines.slice(u,this._lines.length-i),c=this._lines.slice(this._lines.length-i,this._lines.length);return this._lines=h.concat(a).concat(r),c}onTokensChanged(C){if(this.getCount()===0)return!1;const s=this.getStartLineNumber(),i=this.getEndLineNumber();let n=!1;for(let t=0,a=C.length;t<a;t++){const u=C[t];if(u.toLineNumber<s||u.fromLineNumber>i)continue;const h=Math.max(s,u.fromLineNumber),r=Math.min(i,u.toLineNumber);for(let c=h;c<=r;c++){const o=c-this._rendLineNumberStart;this._lines[o].onTokensChanged(),n=!0}}return n}}e.RenderedLinesCollection=S;class f{constructor(C){this._host=C,this.domNode=this._createDomNode(),this._linesCollection=new S(()=>this._host.createVisibleLine())}_createDomNode(){const C=(0,L.createFastDomNode)(document.createElement(\"div\"));return C.setClassName(\"view-layer\"),C.setPosition(\"absolute\"),C.domNode.setAttribute(\"role\",\"presentation\"),C.domNode.setAttribute(\"aria-hidden\",\"true\"),C}onConfigurationChanged(C){return!!C.hasChanged(142)}onFlushed(C){return this._linesCollection.flush(),!0}onLinesChanged(C){return this._linesCollection.onLinesChanged(C.fromLineNumber,C.count)}onLinesDeleted(C){const s=this._linesCollection.onLinesDeleted(C.fromLineNumber,C.toLineNumber);if(s)for(let i=0,n=s.length;i<n;i++){const t=s[i].getDomNode();t&&this.domNode.domNode.removeChild(t)}return!0}onLinesInserted(C){const s=this._linesCollection.onLinesInserted(C.fromLineNumber,C.toLineNumber);if(s)for(let i=0,n=s.length;i<n;i++){const t=s[i].getDomNode();t&&this.domNode.domNode.removeChild(t)}return!0}onScrollChanged(C){return C.scrollTopChanged}onTokensChanged(C){return this._linesCollection.onTokensChanged(C.ranges)}onZonesChanged(C){return!0}getStartLineNumber(){return this._linesCollection.getStartLineNumber()}getEndLineNumber(){return this._linesCollection.getEndLineNumber()}getVisibleLine(C){return this._linesCollection.getLine(C)}renderLines(C){const s=this._linesCollection._get(),i=new _(this.domNode.domNode,this._host,C),n={rendLineNumberStart:s.rendLineNumberStart,lines:s.lines,linesLength:s.lines.length},t=i.render(n,C.startLineNumber,C.endLineNumber,C.relativeVerticalOffset);this._linesCollection._set(t.rendLineNumberStart,t.lines)}}e.VisibleLinesCollection=f;class _{constructor(C,s,i){this.domNode=C,this.host=s,this.viewportData=i}render(C,s,i,n){const t={rendLineNumberStart:C.rendLineNumberStart,lines:C.lines.slice(0),linesLength:C.linesLength};if(t.rendLineNumberStart+t.linesLength-1<s||i<t.rendLineNumberStart){t.rendLineNumberStart=s,t.linesLength=i-s+1,t.lines=[];for(let a=s;a<=i;a++)t.lines[a-s]=this.host.createVisibleLine();return this._finishRendering(t,!0,n),t}if(this._renderUntouchedLines(t,Math.max(s-t.rendLineNumberStart,0),Math.min(i-t.rendLineNumberStart,t.linesLength-1),n,s),t.rendLineNumberStart>s){const a=s,u=Math.min(i,t.rendLineNumberStart-1);a<=u&&(this._insertLinesBefore(t,a,u,n,s),t.linesLength+=u-a+1)}else if(t.rendLineNumberStart<s){const a=Math.min(t.linesLength,s-t.rendLineNumberStart);a>0&&(this._removeLinesBefore(t,a),t.linesLength-=a)}if(t.rendLineNumberStart=s,t.rendLineNumberStart+t.linesLength-1<i){const a=t.rendLineNumberStart+t.linesLength,u=i;a<=u&&(this._insertLinesAfter(t,a,u,n,s),t.linesLength+=u-a+1)}else if(t.rendLineNumberStart+t.linesLength-1>i){const a=Math.max(0,i-t.rendLineNumberStart+1),h=t.linesLength-1-a+1;h>0&&(this._removeLinesAfter(t,h),t.linesLength-=h)}return this._finishRendering(t,!1,n),t}_renderUntouchedLines(C,s,i,n,t){const a=C.rendLineNumberStart,u=C.lines;for(let h=s;h<=i;h++){const r=a+h;u[h].layoutLine(r,n[r-t])}}_insertLinesBefore(C,s,i,n,t){const a=[];let u=0;for(let h=s;h<=i;h++)a[u++]=this.host.createVisibleLine();C.lines=a.concat(C.lines)}_removeLinesBefore(C,s){for(let i=0;i<s;i++){const n=C.lines[i].getDomNode();n&&this.domNode.removeChild(n)}C.lines.splice(0,s)}_insertLinesAfter(C,s,i,n,t){const a=[];let u=0;for(let h=s;h<=i;h++)a[u++]=this.host.createVisibleLine();C.lines=C.lines.concat(a)}_removeLinesAfter(C,s){const i=C.linesLength-s;for(let n=0;n<s;n++){const t=C.lines[i+n].getDomNode();t&&this.domNode.removeChild(t)}C.lines.splice(i,s)}_finishRenderingNewLines(C,s,i,n){_._ttPolicy&&(i=_._ttPolicy.createHTML(i));const t=this.domNode.lastChild;s||!t?this.domNode.innerHTML=i:t.insertAdjacentHTML(\"afterend\",i);let a=this.domNode.lastChild;for(let u=C.linesLength-1;u>=0;u--){const h=C.lines[u];n[u]&&(h.setDomNode(a),a=a.previousSibling)}}_finishRenderingInvalidLines(C,s,i){const n=document.createElement(\"div\");_._ttPolicy&&(s=_._ttPolicy.createHTML(s)),n.innerHTML=s;for(let t=0;t<C.linesLength;t++){const a=C.lines[t];if(i[t]){const u=n.firstChild,h=a.getDomNode();h.parentNode.replaceChild(u,h),a.setDomNode(u)}}}_finishRendering(C,s,i){const n=_._sb,t=C.linesLength,a=C.lines,u=C.rendLineNumberStart,h=[];{n.reset();let r=!1;for(let c=0;c<t;c++){const o=a[c];h[c]=!1,!(o.getDomNode()||!o.renderLine(c+u,i[c],this.viewportData,n))&&(h[c]=!0,r=!0)}r&&this._finishRenderingNewLines(C,s,n.build(),h)}{n.reset();let r=!1;const c=[];for(let o=0;o<t;o++){const d=a[o];c[o]=!1,!(h[o]||!d.renderLine(o+u,i[o],this.viewportData,n))&&(c[o]=!0,r=!0)}r&&this._finishRenderingInvalidLines(C,n.build(),c)}}}_._ttPolicy=(0,k.createTrustedTypesPolicy)(\"editorViewLayer\",{createHTML:g=>g}),_._sb=new D.StringBuilder(1e5)}),define(ne[592],se([1,0,35,59,229,53]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MarginViewOverlays=e.ContentViewOverlays=e.ViewOverlayLine=e.ViewOverlays=void 0;class S extends D.ViewPart{constructor(s){super(s),this._visibleLines=new y.VisibleLinesCollection(this),this.domNode=this._visibleLines.domNode;const n=this._context.configuration.options.get(49);(0,k.applyFontInfo)(this.domNode,n),this._dynamicOverlays=[],this._isFocused=!1,this.domNode.setClassName(\"view-overlays\")}shouldRender(){if(super.shouldRender())return!0;for(let s=0,i=this._dynamicOverlays.length;s<i;s++)if(this._dynamicOverlays[s].shouldRender())return!0;return!1}dispose(){super.dispose();for(let s=0,i=this._dynamicOverlays.length;s<i;s++)this._dynamicOverlays[s].dispose();this._dynamicOverlays=[]}getDomNode(){return this.domNode}createVisibleLine(){return new f(this._context.configuration,this._dynamicOverlays)}addDynamicOverlay(s){this._dynamicOverlays.push(s)}onConfigurationChanged(s){this._visibleLines.onConfigurationChanged(s);const i=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber();for(let u=i;u<=n;u++)this._visibleLines.getVisibleLine(u).onConfigurationChanged(s);const a=this._context.configuration.options.get(49);return(0,k.applyFontInfo)(this.domNode,a),!0}onFlushed(s){return this._visibleLines.onFlushed(s)}onFocusChanged(s){return this._isFocused=s.isFocused,!0}onLinesChanged(s){return this._visibleLines.onLinesChanged(s)}onLinesDeleted(s){return this._visibleLines.onLinesDeleted(s)}onLinesInserted(s){return this._visibleLines.onLinesInserted(s)}onScrollChanged(s){return this._visibleLines.onScrollChanged(s)||!0}onTokensChanged(s){return this._visibleLines.onTokensChanged(s)}onZonesChanged(s){return this._visibleLines.onZonesChanged(s)}prepareRender(s){const i=this._dynamicOverlays.filter(n=>n.shouldRender());for(let n=0,t=i.length;n<t;n++){const a=i[n];a.prepareRender(s),a.onDidRender()}}render(s){this._viewOverlaysRender(s),this.domNode.toggleClassName(\"focused\",this._isFocused)}_viewOverlaysRender(s){this._visibleLines.renderLines(s.viewportData)}}e.ViewOverlays=S;class f{constructor(s,i){this._configuration=s,this._lineHeight=this._configuration.options.get(65),this._dynamicOverlays=i,this._domNode=null,this._renderedContent=null}getDomNode(){return this._domNode?this._domNode.domNode:null}setDomNode(s){this._domNode=(0,L.createFastDomNode)(s)}onContentChanged(){}onTokensChanged(){}onConfigurationChanged(s){this._lineHeight=this._configuration.options.get(65)}renderLine(s,i,n,t){let a=\"\";for(let u=0,h=this._dynamicOverlays.length;u<h;u++){const r=this._dynamicOverlays[u];a+=r.render(n.startLineNumber,s)}return this._renderedContent===a?!1:(this._renderedContent=a,t.appendString('<div style=\"position:absolute;top:'),t.appendString(String(i)),t.appendString(\"px;width:100%;height:\"),t.appendString(String(this._lineHeight)),t.appendString('px;\">'),t.appendString(a),t.appendString(\"</div>\"),!0)}layoutLine(s,i){this._domNode&&(this._domNode.setTop(i),this._domNode.setHeight(this._lineHeight))}}e.ViewOverlayLine=f;class _ extends S{constructor(s){super(s);const n=this._context.configuration.options.get(142);this._contentWidth=n.contentWidth,this.domNode.setHeight(0)}onConfigurationChanged(s){const n=this._context.configuration.options.get(142);return this._contentWidth=n.contentWidth,super.onConfigurationChanged(s)||!0}onScrollChanged(s){return super.onScrollChanged(s)||s.scrollWidthChanged}_viewOverlaysRender(s){super._viewOverlaysRender(s),this.domNode.setWidth(Math.max(s.scrollWidth,this._contentWidth))}}e.ContentViewOverlays=_;class g extends S{constructor(s){super(s);const i=this._context.configuration.options,n=i.get(142);this._contentLeft=n.contentLeft,this.domNode.setClassName(\"margin-view-overlays\"),this.domNode.setWidth(1),(0,k.applyFontInfo)(this.domNode,i.get(49))}onConfigurationChanged(s){const i=this._context.configuration.options;(0,k.applyFontInfo)(this.domNode,i.get(49));const n=i.get(142);return this._contentLeft=n.contentLeft,super.onConfigurationChanged(s)||!0}onScrollChanged(s){return super.onScrollChanged(s)||s.scrollHeightChanged}_viewOverlaysRender(s){super._viewOverlaysRender(s);const i=Math.min(s.scrollHeight,1e6);this.domNode.setHeight(i),this.domNode.setWidth(this._contentLeft)}}e.MarginViewOverlays=g}),define(ne[319],se([1,0,140,93]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.compressConsecutiveTextChanges=e.TextChange=void 0;function y(_){return _.replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\")}class D{get oldLength(){return this.oldText.length}get oldEnd(){return this.oldPosition+this.oldText.length}get newLength(){return this.newText.length}get newEnd(){return this.newPosition+this.newText.length}constructor(g,C,s,i){this.oldPosition=g,this.oldText=C,this.newPosition=s,this.newText=i}toString(){return this.oldText.length===0?`(insert@${this.oldPosition} \"${y(this.newText)}\")`:this.newText.length===0?`(delete@${this.oldPosition} \"${y(this.oldText)}\")`:`(replace@${this.oldPosition} \"${y(this.oldText)}\" with \"${y(this.newText)}\")`}static _writeStringSize(g){return 4+2*g.length}static _writeString(g,C,s){const i=C.length;L.writeUInt32BE(g,i,s),s+=4;for(let n=0;n<i;n++)L.writeUInt16LE(g,C.charCodeAt(n),s),s+=2;return s}static _readString(g,C){const s=L.readUInt32BE(g,C);return C+=4,(0,k.decodeUTF16LE)(g,C,s)}writeSize(){return 4+4+D._writeStringSize(this.oldText)+D._writeStringSize(this.newText)}write(g,C){return L.writeUInt32BE(g,this.oldPosition,C),C+=4,L.writeUInt32BE(g,this.newPosition,C),C+=4,C=D._writeString(g,this.oldText,C),C=D._writeString(g,this.newText,C),C}static read(g,C,s){const i=L.readUInt32BE(g,C);C+=4;const n=L.readUInt32BE(g,C);C+=4;const t=D._readString(g,C);C+=D._writeStringSize(t);const a=D._readString(g,C);return C+=D._writeStringSize(a),s.push(new D(i,t,n,a)),C}}e.TextChange=D;function S(_,g){return _===null||_.length===0?g:new f(_,g).compress()}e.compressConsecutiveTextChanges=S;class f{constructor(g,C){this._prevEdits=g,this._currEdits=C,this._result=[],this._resultLen=0,this._prevLen=this._prevEdits.length,this._prevDeltaOffset=0,this._currLen=this._currEdits.length,this._currDeltaOffset=0}compress(){let g=0,C=0,s=this._getPrev(g),i=this._getCurr(C);for(;g<this._prevLen||C<this._currLen;){if(s===null){this._acceptCurr(i),i=this._getCurr(++C);continue}if(i===null){this._acceptPrev(s),s=this._getPrev(++g);continue}if(i.oldEnd<=s.newPosition){this._acceptCurr(i),i=this._getCurr(++C);continue}if(s.newEnd<=i.oldPosition){this._acceptPrev(s),s=this._getPrev(++g);continue}if(i.oldPosition<s.newPosition){const[h,r]=f._splitCurr(i,s.newPosition-i.oldPosition);this._acceptCurr(h),i=r;continue}if(s.newPosition<i.oldPosition){const[h,r]=f._splitPrev(s,i.oldPosition-s.newPosition);this._acceptPrev(h),s=r;continue}let a,u;if(i.oldEnd===s.newEnd)a=s,u=i,s=this._getPrev(++g),i=this._getCurr(++C);else if(i.oldEnd<s.newEnd){const[h,r]=f._splitPrev(s,i.oldLength);a=h,u=i,s=r,i=this._getCurr(++C)}else{const[h,r]=f._splitCurr(i,s.newLength);a=s,u=h,s=this._getPrev(++g),i=r}this._result[this._resultLen++]=new D(a.oldPosition,a.oldText,u.newPosition,u.newText),this._prevDeltaOffset+=a.newLength-a.oldLength,this._currDeltaOffset+=u.newLength-u.oldLength}const n=f._merge(this._result);return f._removeNoOps(n)}_acceptCurr(g){this._result[this._resultLen++]=f._rebaseCurr(this._prevDeltaOffset,g),this._currDeltaOffset+=g.newLength-g.oldLength}_getCurr(g){return g<this._currLen?this._currEdits[g]:null}_acceptPrev(g){this._result[this._resultLen++]=f._rebasePrev(this._currDeltaOffset,g),this._prevDeltaOffset+=g.newLength-g.oldLength}_getPrev(g){return g<this._prevLen?this._prevEdits[g]:null}static _rebaseCurr(g,C){return new D(C.oldPosition-g,C.oldText,C.newPosition,C.newText)}static _rebasePrev(g,C){return new D(C.oldPosition,C.oldText,C.newPosition+g,C.newText)}static _splitPrev(g,C){const s=g.newText.substr(0,C),i=g.newText.substr(C);return[new D(g.oldPosition,g.oldText,g.newPosition,s),new D(g.oldEnd,\"\",g.newPosition+C,i)]}static _splitCurr(g,C){const s=g.oldText.substr(0,C),i=g.oldText.substr(C);return[new D(g.oldPosition,s,g.newPosition,g.newText),new D(g.oldPosition+C,i,g.newEnd,\"\")]}static _merge(g){if(g.length===0)return g;const C=[];let s=0,i=g[0];for(let n=1;n<g.length;n++){const t=g[n];i.oldEnd===t.oldPosition?i=new D(i.oldPosition,i.oldText+t.oldText,i.newPosition,i.newText+t.newText):(C[s++]=i,i=t)}return C[s++]=i,C}static _removeNoOps(g){if(g.length===0)return g;const C=[];let s=0;for(let i=0;i<g.length;i++){const n=g[i];n.oldText!==n.newText&&(C[s++]=n)}return C}}}),define(ne[593],se([1,0,303,92]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.score=void 0;function y(D,S,f,_,g,C){if(Array.isArray(D)){let s=0;for(const i of D){const n=y(i,S,f,_,g,C);if(n===10)return n;n>s&&(s=n)}return s}else{if(typeof D==\"string\")return _?D===\"*\"?5:D===f?10:0:0;if(D){const{language:s,pattern:i,scheme:n,hasAccessToAllModels:t,notebookType:a}=D;if(!_&&!t)return 0;a&&g&&(S=g);let u=0;if(n)if(n===S.scheme)u=10;else if(n===\"*\")u=5;else return 0;if(s)if(s===f)u=10;else if(s===\"*\")u=Math.max(u,5);else return 0;if(a)if(a===C)u=10;else if(a===\"*\"&&C!==void 0)u=Math.max(u,5);else return 0;if(i){let h;if(typeof i==\"string\"?h=i:h=Object.assign(Object.assign({},i),{base:(0,k.normalize)(i.base)}),h===S.fsPath||(0,L.match)(h,S.fsPath))u=10;else return 0}return u}else return 0}}e.score=y}),define(ne[594],se([1,0,6,2,48,593]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LanguageFeatureRegistry=void 0;function S(C){return typeof C==\"string\"?!1:Array.isArray(C)?C.every(S):!!C.exclusive}class f{constructor(s,i,n,t){this.uri=s,this.languageId=i,this.notebookUri=n,this.notebookType=t}equals(s){var i,n;return this.notebookType===s.notebookType&&this.languageId===s.languageId&&this.uri.toString()===s.uri.toString()&&((i=this.notebookUri)===null||i===void 0?void 0:i.toString())===((n=s.notebookUri)===null||n===void 0?void 0:n.toString())}}class _{constructor(s){this._notebookInfoResolver=s,this._clock=0,this._entries=[],this._onDidChange=new L.Emitter,this.onDidChange=this._onDidChange.event}register(s,i){let n={selector:s,provider:i,_score:-1,_time:this._clock++};return this._entries.push(n),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),(0,k.toDisposable)(()=>{if(n){const t=this._entries.indexOf(n);t>=0&&(this._entries.splice(t,1),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),n=void 0)}})}has(s){return this.all(s).length>0}all(s){if(!s)return[];this._updateScores(s);const i=[];for(const n of this._entries)n._score>0&&i.push(n.provider);return i}ordered(s){const i=[];return this._orderedForEach(s,n=>i.push(n.provider)),i}orderedGroups(s){const i=[];let n,t;return this._orderedForEach(s,a=>{n&&t===a._score?n.push(a.provider):(t=a._score,n=[a.provider],i.push(n))}),i}_orderedForEach(s,i){this._updateScores(s);for(const n of this._entries)n._score>0&&i(n)}_updateScores(s){var i,n;const t=(i=this._notebookInfoResolver)===null||i===void 0?void 0:i.call(this,s.uri),a=t?new f(s.uri,s.getLanguageId(),t.uri,t.type):new f(s.uri,s.getLanguageId(),void 0,void 0);if(!(!((n=this._lastCandidate)===null||n===void 0)&&n.equals(a))){this._lastCandidate=a;for(const u of this._entries)if(u._score=(0,D.score)(u.selector,a.uri,a.languageId,(0,y.shouldSynchronizeModel)(s),a.notebookUri,a.notebookType),S(u.selector)&&u._score>0){for(const h of this._entries)h._score=0;u._score=1e3;break}this._entries.sort(_._compareByScoreAndTime)}}static _compareByScoreAndTime(s,i){return s._score<i._score?1:s._score>i._score?-1:g(s.selector)&&!g(i.selector)?1:!g(s.selector)&&g(i.selector)?-1:s._time<i._time?1:s._time>i._time?-1:0}}e.LanguageFeatureRegistry=_;function g(C){return typeof C==\"string\"?!1:Array.isArray(C)?C.some(g):!!C.isBuiltin}}),define(ne[230],se([1,0,11,93,5]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BracketsUtils=e.RichEditBrackets=e.RichEditBracket=void 0;class D{constructor(o,d,l,p,m,v){this._richEditBracketBrand=void 0,this.languageId=o,this.index=d,this.open=l,this.close=p,this.forwardRegex=m,this.reversedRegex=v,this._openSet=D._toSet(this.open),this._closeSet=D._toSet(this.close)}isOpen(o){return this._openSet.has(o)}isClose(o){return this._closeSet.has(o)}static _toSet(o){const d=new Set;for(const l of o)d.add(l);return d}}e.RichEditBracket=D;function S(c){const o=c.length;c=c.map(v=>[v[0].toLowerCase(),v[1].toLowerCase()]);const d=[];for(let v=0;v<o;v++)d[v]=v;const l=(v,b)=>{const[w,E]=v,[I,M]=b;return w===I||w===M||E===I||E===M},p=(v,b)=>{const w=Math.min(v,b),E=Math.max(v,b);for(let I=0;I<o;I++)d[I]===E&&(d[I]=w)};for(let v=0;v<o;v++){const b=c[v];for(let w=v+1;w<o;w++){const E=c[w];l(b,E)&&p(d[v],d[w])}}const m=[];for(let v=0;v<o;v++){const b=[],w=[];for(let E=0;E<o;E++)if(d[E]===v){const[I,M]=c[E];b.push(I),w.push(M)}b.length>0&&m.push({open:b,close:w})}return m}class f{constructor(o,d){this._richEditBracketsBrand=void 0;const l=S(d);this.brackets=l.map((p,m)=>new D(o,m,p.open,p.close,s(p.open,p.close,l,m),i(p.open,p.close,l,m))),this.forwardRegex=n(this.brackets),this.reversedRegex=t(this.brackets),this.textIsBracket={},this.textIsOpenBracket={},this.maxBracketLength=0;for(const p of this.brackets){for(const m of p.open)this.textIsBracket[m]=p,this.textIsOpenBracket[m]=!0,this.maxBracketLength=Math.max(this.maxBracketLength,m.length);for(const m of p.close)this.textIsBracket[m]=p,this.textIsOpenBracket[m]=!1,this.maxBracketLength=Math.max(this.maxBracketLength,m.length)}}}e.RichEditBrackets=f;function _(c,o,d,l){for(let p=0,m=o.length;p<m;p++){if(p===d)continue;const v=o[p];for(const b of v.open)b.indexOf(c)>=0&&l.push(b);for(const b of v.close)b.indexOf(c)>=0&&l.push(b)}}function g(c,o){return c.length-o.length}function C(c){if(c.length<=1)return c;const o=[],d=new Set;for(const l of c)d.has(l)||(o.push(l),d.add(l));return o}function s(c,o,d,l){let p=[];p=p.concat(c),p=p.concat(o);for(let m=0,v=p.length;m<v;m++)_(p[m],d,l,p);return p=C(p),p.sort(g),p.reverse(),u(p)}function i(c,o,d,l){let p=[];p=p.concat(c),p=p.concat(o);for(let m=0,v=p.length;m<v;m++)_(p[m],d,l,p);return p=C(p),p.sort(g),p.reverse(),u(p.map(h))}function n(c){let o=[];for(const d of c){for(const l of d.open)o.push(l);for(const l of d.close)o.push(l)}return o=C(o),u(o)}function t(c){let o=[];for(const d of c){for(const l of d.open)o.push(l);for(const l of d.close)o.push(l)}return o=C(o),u(o.map(h))}function a(c){const o=/^[\\w ]+$/.test(c);return c=L.escapeRegExpCharacters(c),o?`\\\\b${c}\\\\b`:c}function u(c){const o=`(${c.map(a).join(\")|(\")})`;return L.createRegExp(o,!0)}const h=function(){function c(l){const p=new Uint16Array(l.length);let m=0;for(let v=l.length-1;v>=0;v--)p[m++]=l.charCodeAt(v);return k.getPlatformTextDecoder().decode(p)}let o=null,d=null;return function(p){return o!==p&&(o=p,d=c(o)),d}}();class r{static _findPrevBracketInText(o,d,l,p){const m=l.match(o);if(!m)return null;const v=l.length-(m.index||0),b=m[0].length,w=p+v;return new y.Range(d,w-b+1,d,w+1)}static findPrevBracketInRange(o,d,l,p,m){const b=h(l).substring(l.length-m,l.length-p);return this._findPrevBracketInText(o,d,b,p)}static findNextBracketInText(o,d,l,p){const m=l.match(o);if(!m)return null;const v=m.index||0,b=m[0].length;if(b===0)return null;const w=p+v;return new y.Range(d,w+1,d,w+1+b)}static findNextBracketInRange(o,d,l,p,m){const v=l.substring(p,m);return this.findNextBracketInText(o,d,v,p)}}e.BracketsUtils=r}),define(ne[595],se([1,0,14,125,230]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BracketElectricCharacterSupport=void 0;class D{constructor(f){this._richEditBrackets=f}getElectricCharacters(){const f=[];if(this._richEditBrackets)for(const _ of this._richEditBrackets.brackets)for(const g of _.close){const C=g.charAt(g.length-1);f.push(C)}return(0,L.distinct)(f)}onElectricCharacter(f,_,g){if(!this._richEditBrackets||this._richEditBrackets.brackets.length===0)return null;const C=_.findTokenIndexAtOffset(g-1);if((0,k.ignoreBracketsInToken)(_.getStandardTokenType(C)))return null;const s=this._richEditBrackets.reversedRegex,i=_.getLineContent().substring(0,g-1)+f,n=y.BracketsUtils.findPrevBracketInRange(s,1,i,0,i.length);if(!n)return null;const t=i.substring(n.startColumn-1,n.endColumn-1).toLowerCase();if(this._richEditBrackets.textIsOpenBracket[t])return null;const u=_.getActualLineContentBefore(n.startColumn-1);return/^\\s*$/.test(u)?{matchOpenBracket:t}:null}}e.BracketElectricCharacterSupport=D}),define(ne[596],se([1,0,14,6,2,5,125,230,514]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BracketPairsTextModelPart=void 0;class g extends y.Disposable{get canBuildAST(){return this.textModel.getValueLength()<=5e6}constructor(a,u){super(),this.textModel=a,this.languageConfigurationService=u,this.bracketPairsTree=this._register(new y.MutableDisposable),this.onDidChangeEmitter=new k.Emitter,this.onDidChange=this.onDidChangeEmitter.event,this.bracketsRequested=!1,this._register(this.languageConfigurationService.onDidChange(h=>{var r;(!h.languageId||!((r=this.bracketPairsTree.value)===null||r===void 0)&&r.object.didLanguageChange(h.languageId))&&(this.bracketPairsTree.clear(),this.updateBracketPairsTree())}))}handleDidChangeOptions(a){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeLanguage(a){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeContent(a){var u;(u=this.bracketPairsTree.value)===null||u===void 0||u.object.handleContentChanged(a)}handleDidChangeBackgroundTokenizationState(){var a;(a=this.bracketPairsTree.value)===null||a===void 0||a.object.handleDidChangeBackgroundTokenizationState()}handleDidChangeTokens(a){var u;(u=this.bracketPairsTree.value)===null||u===void 0||u.object.handleDidChangeTokens(a)}updateBracketPairsTree(){if(this.bracketsRequested&&this.canBuildAST){if(!this.bracketPairsTree.value){const a=new y.DisposableStore;this.bracketPairsTree.value=C(a.add(new _.BracketPairsTree(this.textModel,u=>this.languageConfigurationService.getLanguageConfiguration(u))),a),a.add(this.bracketPairsTree.value.object.onDidChange(u=>this.onDidChangeEmitter.fire(u))),this.onDidChangeEmitter.fire()}}else this.bracketPairsTree.value&&(this.bracketPairsTree.clear(),this.onDidChangeEmitter.fire())}getBracketPairsInRange(a){var u;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((u=this.bracketPairsTree.value)===null||u===void 0?void 0:u.object.getBracketPairsInRange(a,!1))||L.CallbackIterable.empty}getBracketPairsInRangeWithMinIndentation(a){var u;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((u=this.bracketPairsTree.value)===null||u===void 0?void 0:u.object.getBracketPairsInRange(a,!0))||L.CallbackIterable.empty}getBracketsInRange(a,u=!1){var h;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((h=this.bracketPairsTree.value)===null||h===void 0?void 0:h.object.getBracketsInRange(a,u))||L.CallbackIterable.empty}findMatchingBracketUp(a,u,h){const r=this.textModel.validatePosition(u),c=this.textModel.getLanguageIdAtPosition(r.lineNumber,r.column);if(this.canBuildAST){const o=this.languageConfigurationService.getLanguageConfiguration(c).bracketsNew.getClosingBracketInfo(a);if(!o)return null;const d=this.getBracketPairsInRange(D.Range.fromPositions(u,u)).findLast(l=>o.closes(l.openingBracketInfo));return d?d.openingBracketRange:null}else{const o=a.toLowerCase(),d=this.languageConfigurationService.getLanguageConfiguration(c).brackets;if(!d)return null;const l=d.textIsBracket[o];return l?n(this._findMatchingBracketUp(l,r,s(h))):null}}matchBracket(a,u){if(this.canBuildAST){const h=this.getBracketPairsInRange(D.Range.fromPositions(a,a)).filter(r=>r.closingBracketRange!==void 0&&(r.openingBracketRange.containsPosition(a)||r.closingBracketRange.containsPosition(a))).findLastMaxBy((0,L.compareBy)(r=>r.openingBracketRange.containsPosition(a)?r.openingBracketRange:r.closingBracketRange,D.Range.compareRangesUsingStarts));return h?[h.openingBracketRange,h.closingBracketRange]:null}else{const h=s(u);return this._matchBracket(this.textModel.validatePosition(a),h)}}_establishBracketSearchOffsets(a,u,h,r){const c=u.getCount(),o=u.getLanguageId(r);let d=Math.max(0,a.column-1-h.maxBracketLength);for(let p=r-1;p>=0;p--){const m=u.getEndOffset(p);if(m<=d)break;if((0,S.ignoreBracketsInToken)(u.getStandardTokenType(p))||u.getLanguageId(p)!==o){d=m;break}}let l=Math.min(u.getLineContent().length,a.column-1+h.maxBracketLength);for(let p=r+1;p<c;p++){const m=u.getStartOffset(p);if(m>=l)break;if((0,S.ignoreBracketsInToken)(u.getStandardTokenType(p))||u.getLanguageId(p)!==o){l=m;break}}return{searchStartOffset:d,searchEndOffset:l}}_matchBracket(a,u){const h=a.lineNumber,r=this.textModel.tokenization.getLineTokens(h),c=this.textModel.getLineContent(h),o=r.findTokenIndexAtOffset(a.column-1);if(o<0)return null;const d=this.languageConfigurationService.getLanguageConfiguration(r.getLanguageId(o)).brackets;if(d&&!(0,S.ignoreBracketsInToken)(r.getStandardTokenType(o))){let{searchStartOffset:l,searchEndOffset:p}=this._establishBracketSearchOffsets(a,r,d,o),m=null;for(;;){const v=f.BracketsUtils.findNextBracketInRange(d.forwardRegex,h,c,l,p);if(!v)break;if(v.startColumn<=a.column&&a.column<=v.endColumn){const b=c.substring(v.startColumn-1,v.endColumn-1).toLowerCase(),w=this._matchFoundBracket(v,d.textIsBracket[b],d.textIsOpenBracket[b],u);if(w){if(w instanceof i)return null;m=w}}l=v.endColumn-1}if(m)return m}if(o>0&&r.getStartOffset(o)===a.column-1){const l=o-1,p=this.languageConfigurationService.getLanguageConfiguration(r.getLanguageId(l)).brackets;if(p&&!(0,S.ignoreBracketsInToken)(r.getStandardTokenType(l))){const{searchStartOffset:m,searchEndOffset:v}=this._establishBracketSearchOffsets(a,r,p,l),b=f.BracketsUtils.findPrevBracketInRange(p.reversedRegex,h,c,m,v);if(b&&b.startColumn<=a.column&&a.column<=b.endColumn){const w=c.substring(b.startColumn-1,b.endColumn-1).toLowerCase(),E=this._matchFoundBracket(b,p.textIsBracket[w],p.textIsOpenBracket[w],u);if(E)return E instanceof i?null:E}}}return null}_matchFoundBracket(a,u,h,r){if(!u)return null;const c=h?this._findMatchingBracketDown(u,a.getEndPosition(),r):this._findMatchingBracketUp(u,a.getStartPosition(),r);return c?c instanceof i?c:[a,c]:null}_findMatchingBracketUp(a,u,h){const r=a.languageId,c=a.reversedRegex;let o=-1,d=0;const l=(p,m,v,b)=>{for(;;){if(h&&++d%100===0&&!h())return i.INSTANCE;const w=f.BracketsUtils.findPrevBracketInRange(c,p,m,v,b);if(!w)break;const E=m.substring(w.startColumn-1,w.endColumn-1).toLowerCase();if(a.isOpen(E)?o++:a.isClose(E)&&o--,o===0)return w;b=w.startColumn-1}return null};for(let p=u.lineNumber;p>=1;p--){const m=this.textModel.tokenization.getLineTokens(p),v=m.getCount(),b=this.textModel.getLineContent(p);let w=v-1,E=b.length,I=b.length;p===u.lineNumber&&(w=m.findTokenIndexAtOffset(u.column-1),E=u.column-1,I=u.column-1);let M=!0;for(;w>=0;w--){const P=m.getLanguageId(w)===r&&!(0,S.ignoreBracketsInToken)(m.getStandardTokenType(w));if(P)M?E=m.getStartOffset(w):(E=m.getStartOffset(w),I=m.getEndOffset(w));else if(M&&E!==I){const x=l(p,b,E,I);if(x)return x}M=P}if(M&&E!==I){const P=l(p,b,E,I);if(P)return P}}return null}_findMatchingBracketDown(a,u,h){const r=a.languageId,c=a.forwardRegex;let o=1,d=0;const l=(m,v,b,w)=>{for(;;){if(h&&++d%100===0&&!h())return i.INSTANCE;const E=f.BracketsUtils.findNextBracketInRange(c,m,v,b,w);if(!E)break;const I=v.substring(E.startColumn-1,E.endColumn-1).toLowerCase();if(a.isOpen(I)?o++:a.isClose(I)&&o--,o===0)return E;b=E.endColumn-1}return null},p=this.textModel.getLineCount();for(let m=u.lineNumber;m<=p;m++){const v=this.textModel.tokenization.getLineTokens(m),b=v.getCount(),w=this.textModel.getLineContent(m);let E=0,I=0,M=0;m===u.lineNumber&&(E=v.findTokenIndexAtOffset(u.column-1),I=u.column-1,M=u.column-1);let P=!0;for(;E<b;E++){const x=v.getLanguageId(E)===r&&!(0,S.ignoreBracketsInToken)(v.getStandardTokenType(E));if(x)P||(I=v.getStartOffset(E)),M=v.getEndOffset(E);else if(P&&I!==M){const T=l(m,w,I,M);if(T)return T}P=x}if(P&&I!==M){const x=l(m,w,I,M);if(x)return x}}return null}findPrevBracket(a){var u;const h=this.textModel.validatePosition(a);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),((u=this.bracketPairsTree.value)===null||u===void 0?void 0:u.object.getFirstBracketBefore(h))||null;let r=null,c=null,o=null;for(let d=h.lineNumber;d>=1;d--){const l=this.textModel.tokenization.getLineTokens(d),p=l.getCount(),m=this.textModel.getLineContent(d);let v=p-1,b=m.length,w=m.length;if(d===h.lineNumber){v=l.findTokenIndexAtOffset(h.column-1),b=h.column-1,w=h.column-1;const I=l.getLanguageId(v);r!==I&&(r=I,c=this.languageConfigurationService.getLanguageConfiguration(r).brackets,o=this.languageConfigurationService.getLanguageConfiguration(r).bracketsNew)}let E=!0;for(;v>=0;v--){const I=l.getLanguageId(v);if(r!==I){if(c&&o&&E&&b!==w){const P=f.BracketsUtils.findPrevBracketInRange(c.reversedRegex,d,m,b,w);if(P)return this._toFoundBracket(o,P);E=!1}r=I,c=this.languageConfigurationService.getLanguageConfiguration(r).brackets,o=this.languageConfigurationService.getLanguageConfiguration(r).bracketsNew}const M=!!c&&!(0,S.ignoreBracketsInToken)(l.getStandardTokenType(v));if(M)E?b=l.getStartOffset(v):(b=l.getStartOffset(v),w=l.getEndOffset(v));else if(o&&c&&E&&b!==w){const P=f.BracketsUtils.findPrevBracketInRange(c.reversedRegex,d,m,b,w);if(P)return this._toFoundBracket(o,P)}E=M}if(o&&c&&E&&b!==w){const I=f.BracketsUtils.findPrevBracketInRange(c.reversedRegex,d,m,b,w);if(I)return this._toFoundBracket(o,I)}}return null}findNextBracket(a){var u;const h=this.textModel.validatePosition(a);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),((u=this.bracketPairsTree.value)===null||u===void 0?void 0:u.object.getFirstBracketAfter(h))||null;const r=this.textModel.getLineCount();let c=null,o=null,d=null;for(let l=h.lineNumber;l<=r;l++){const p=this.textModel.tokenization.getLineTokens(l),m=p.getCount(),v=this.textModel.getLineContent(l);let b=0,w=0,E=0;if(l===h.lineNumber){b=p.findTokenIndexAtOffset(h.column-1),w=h.column-1,E=h.column-1;const M=p.getLanguageId(b);c!==M&&(c=M,o=this.languageConfigurationService.getLanguageConfiguration(c).brackets,d=this.languageConfigurationService.getLanguageConfiguration(c).bracketsNew)}let I=!0;for(;b<m;b++){const M=p.getLanguageId(b);if(c!==M){if(d&&o&&I&&w!==E){const x=f.BracketsUtils.findNextBracketInRange(o.forwardRegex,l,v,w,E);if(x)return this._toFoundBracket(d,x);I=!1}c=M,o=this.languageConfigurationService.getLanguageConfiguration(c).brackets,d=this.languageConfigurationService.getLanguageConfiguration(c).bracketsNew}const P=!!o&&!(0,S.ignoreBracketsInToken)(p.getStandardTokenType(b));if(P)I||(w=p.getStartOffset(b)),E=p.getEndOffset(b);else if(d&&o&&I&&w!==E){const x=f.BracketsUtils.findNextBracketInRange(o.forwardRegex,l,v,w,E);if(x)return this._toFoundBracket(d,x)}I=P}if(d&&o&&I&&w!==E){const M=f.BracketsUtils.findNextBracketInRange(o.forwardRegex,l,v,w,E);if(M)return this._toFoundBracket(d,M)}}return null}findEnclosingBrackets(a,u){const h=this.textModel.validatePosition(a);if(this.canBuildAST){const w=D.Range.fromPositions(h),E=this.getBracketPairsInRange(D.Range.fromPositions(h,h)).findLast(I=>I.closingBracketRange!==void 0&&I.range.strictContainsRange(w));return E?[E.openingBracketRange,E.closingBracketRange]:null}const r=s(u),c=this.textModel.getLineCount(),o=new Map;let d=[];const l=(w,E)=>{if(!o.has(w)){const I=[];for(let M=0,P=E?E.brackets.length:0;M<P;M++)I[M]=0;o.set(w,I)}d=o.get(w)};let p=0;const m=(w,E,I,M,P)=>{for(;;){if(r&&++p%100===0&&!r())return i.INSTANCE;const x=f.BracketsUtils.findNextBracketInRange(w.forwardRegex,E,I,M,P);if(!x)break;const T=I.substring(x.startColumn-1,x.endColumn-1).toLowerCase(),A=w.textIsBracket[T];if(A&&(A.isOpen(T)?d[A.index]++:A.isClose(T)&&d[A.index]--,d[A.index]===-1))return this._matchFoundBracket(x,A,!1,r);M=x.endColumn-1}return null};let v=null,b=null;for(let w=h.lineNumber;w<=c;w++){const E=this.textModel.tokenization.getLineTokens(w),I=E.getCount(),M=this.textModel.getLineContent(w);let P=0,x=0,T=0;if(w===h.lineNumber){P=E.findTokenIndexAtOffset(h.column-1),x=h.column-1,T=h.column-1;const N=E.getLanguageId(P);v!==N&&(v=N,b=this.languageConfigurationService.getLanguageConfiguration(v).brackets,l(v,b))}let A=!0;for(;P<I;P++){const N=E.getLanguageId(P);if(v!==N){if(b&&A&&x!==T){const O=m(b,w,M,x,T);if(O)return n(O);A=!1}v=N,b=this.languageConfigurationService.getLanguageConfiguration(v).brackets,l(v,b)}const F=!!b&&!(0,S.ignoreBracketsInToken)(E.getStandardTokenType(P));if(F)A||(x=E.getStartOffset(P)),T=E.getEndOffset(P);else if(b&&A&&x!==T){const O=m(b,w,M,x,T);if(O)return n(O)}A=F}if(b&&A&&x!==T){const N=m(b,w,M,x,T);if(N)return n(N)}}return null}_toFoundBracket(a,u){if(!u)return null;let h=this.textModel.getValueInRange(u);h=h.toLowerCase();const r=a.getBracketInfo(h);return r?{range:u,bracketInfo:r}:null}}e.BracketPairsTextModelPart=g;function C(t,a){return{object:t,dispose:()=>a?.dispose()}}function s(t){if(typeof t>\"u\")return()=>!0;{const a=Date.now();return()=>Date.now()-a<=t}}class i{constructor(){this._searchCanceledBrand=void 0}}i.INSTANCE=new i;function n(t){return t instanceof i?null:t}}),define(ne[320],se([1,0,6,11,5,48,283,122,319,2]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PieceTreeTextBuffer=void 0;class C extends g.Disposable{constructor(i,n,t,a,u,h,r){super(),this._onDidChangeContent=this._register(new L.Emitter),this._BOM=n,this._mightContainNonBasicASCII=!h,this._mightContainRTL=a,this._mightContainUnusualLineTerminators=u,this._pieceTree=new S.PieceTreeBase(i,t,r)}mightContainRTL(){return this._mightContainRTL}mightContainUnusualLineTerminators(){return this._mightContainUnusualLineTerminators}resetMightContainUnusualLineTerminators(){this._mightContainUnusualLineTerminators=!1}mightContainNonBasicASCII(){return this._mightContainNonBasicASCII}getBOM(){return this._BOM}getEOL(){return this._pieceTree.getEOL()}createSnapshot(i){return this._pieceTree.createSnapshot(i?this._BOM:\"\")}getOffsetAt(i,n){return this._pieceTree.getOffsetAt(i,n)}getPositionAt(i){return this._pieceTree.getPositionAt(i)}getRangeAt(i,n){const t=i+n,a=this.getPositionAt(i),u=this.getPositionAt(t);return new y.Range(a.lineNumber,a.column,u.lineNumber,u.column)}getValueInRange(i,n=0){if(i.isEmpty())return\"\";const t=this._getEndOfLine(n);return this._pieceTree.getValueInRange(i,t)}getValueLengthInRange(i,n=0){if(i.isEmpty())return 0;if(i.startLineNumber===i.endLineNumber)return i.endColumn-i.startColumn;const t=this.getOffsetAt(i.startLineNumber,i.startColumn),a=this.getOffsetAt(i.endLineNumber,i.endColumn);let u=0;const h=this._getEndOfLine(n),r=this.getEOL();if(h.length!==r.length){const c=h.length-r.length,o=i.endLineNumber-i.startLineNumber;u=c*o}return a-t+u}getCharacterCountInRange(i,n=0){if(this._mightContainNonBasicASCII){let t=0;const a=i.startLineNumber,u=i.endLineNumber;for(let h=a;h<=u;h++){const r=this.getLineContent(h),c=h===a?i.startColumn-1:0,o=h===u?i.endColumn-1:r.length;for(let d=c;d<o;d++)k.isHighSurrogate(r.charCodeAt(d))?(t=t+1,d=d+1):t=t+1}return t+=this._getEndOfLine(n).length*(u-a),t}return this.getValueLengthInRange(i,n)}getLength(){return this._pieceTree.getLength()}getLineCount(){return this._pieceTree.getLineCount()}getLinesContent(){return this._pieceTree.getLinesContent()}getLineContent(i){return this._pieceTree.getLineContent(i)}getLineCharCode(i,n){return this._pieceTree.getLineCharCode(i,n)}getLineLength(i){return this._pieceTree.getLineLength(i)}getLineFirstNonWhitespaceColumn(i){const n=k.firstNonWhitespaceIndex(this.getLineContent(i));return n===-1?0:n+1}getLineLastNonWhitespaceColumn(i){const n=k.lastNonWhitespaceIndex(this.getLineContent(i));return n===-1?0:n+2}_getEndOfLine(i){switch(i){case 1:return`\n`;case 2:return`\\r\n`;case 0:return this.getEOL();default:throw new Error(\"Unknown EOL preference\")}}setEOL(i){this._pieceTree.setEOL(i)}applyEdits(i,n,t){let a=this._mightContainRTL,u=this._mightContainUnusualLineTerminators,h=this._mightContainNonBasicASCII,r=!0,c=[];for(let b=0;b<i.length;b++){const w=i[b];r&&w._isTracked&&(r=!1);const E=w.range;if(w.text){let T=!0;h||(T=!k.isBasicASCII(w.text),h=T),!a&&T&&(a=k.containsRTL(w.text)),!u&&T&&(u=k.containsUnusualLineTerminators(w.text))}let I=\"\",M=0,P=0,x=0;if(w.text){let T;[M,P,x,T]=(0,f.countEOL)(w.text);const A=this.getEOL();T===0||T===(A===`\\r\n`?2:1)?I=w.text:I=w.text.replace(/\\r\\n|\\r|\\n/g,A)}c[b]={sortIndex:b,identifier:w.identifier||null,range:E,rangeOffset:this.getOffsetAt(E.startLineNumber,E.startColumn),rangeLength:this.getValueLengthInRange(E),text:I,eolCount:M,firstLineLength:P,lastLineLength:x,forceMoveMarkers:!!w.forceMoveMarkers,isAutoWhitespaceEdit:w.isAutoWhitespaceEdit||!1}}c.sort(C._sortOpsAscending);let o=!1;for(let b=0,w=c.length-1;b<w;b++){const E=c[b].range.getEndPosition(),I=c[b+1].range.getStartPosition();if(I.isBeforeOrEqual(E)){if(I.isBefore(E))throw new Error(\"Overlapping ranges are not allowed!\");o=!0}}r&&(c=this._reduceOperations(c));const d=t||n?C._getInverseEditRanges(c):[],l=[];if(n)for(let b=0;b<c.length;b++){const w=c[b],E=d[b];if(w.isAutoWhitespaceEdit&&w.range.isEmpty())for(let I=E.startLineNumber;I<=E.endLineNumber;I++){let M=\"\";I===E.startLineNumber&&(M=this.getLineContent(w.range.startLineNumber),k.firstNonWhitespaceIndex(M)!==-1)||l.push({lineNumber:I,oldContent:M})}}let p=null;if(t){let b=0;p=[];for(let w=0;w<c.length;w++){const E=c[w],I=d[w],M=this.getValueInRange(E.range),P=E.rangeOffset+b;b+=E.text.length-M.length,p[w]={sortIndex:E.sortIndex,identifier:E.identifier,range:I,text:M,textChange:new _.TextChange(E.rangeOffset,M,P,E.text)}}o||p.sort((w,E)=>w.sortIndex-E.sortIndex)}this._mightContainRTL=a,this._mightContainUnusualLineTerminators=u,this._mightContainNonBasicASCII=h;const m=this._doApplyEdits(c);let v=null;if(n&&l.length>0){l.sort((b,w)=>w.lineNumber-b.lineNumber),v=[];for(let b=0,w=l.length;b<w;b++){const E=l[b].lineNumber;if(b>0&&l[b-1].lineNumber===E)continue;const I=l[b].oldContent,M=this.getLineContent(E);M.length===0||M===I||k.firstNonWhitespaceIndex(M)!==-1||v.push(E)}}return this._onDidChangeContent.fire(),new D.ApplyEditsResult(p,m,v)}_reduceOperations(i){return i.length<1e3?i:[this._toSingleEditOperation(i)]}_toSingleEditOperation(i){let n=!1;const t=i[0].range,a=i[i.length-1].range,u=new y.Range(t.startLineNumber,t.startColumn,a.endLineNumber,a.endColumn);let h=t.startLineNumber,r=t.startColumn;const c=[];for(let m=0,v=i.length;m<v;m++){const b=i[m],w=b.range;n=n||b.forceMoveMarkers,c.push(this.getValueInRange(new y.Range(h,r,w.startLineNumber,w.startColumn))),b.text.length>0&&c.push(b.text),h=w.endLineNumber,r=w.endColumn}const o=c.join(\"\"),[d,l,p]=(0,f.countEOL)(o);return{sortIndex:0,identifier:i[0].identifier,range:u,rangeOffset:this.getOffsetAt(u.startLineNumber,u.startColumn),rangeLength:this.getValueLengthInRange(u,0),text:o,eolCount:d,firstLineLength:l,lastLineLength:p,forceMoveMarkers:n,isAutoWhitespaceEdit:!1}}_doApplyEdits(i){i.sort(C._sortOpsDescending);const n=[];for(let t=0;t<i.length;t++){const a=i[t],u=a.range.startLineNumber,h=a.range.startColumn,r=a.range.endLineNumber,c=a.range.endColumn;if(u===r&&h===c&&a.text.length===0)continue;a.text?(this._pieceTree.delete(a.rangeOffset,a.rangeLength),this._pieceTree.insert(a.rangeOffset,a.text,!0)):this._pieceTree.delete(a.rangeOffset,a.rangeLength);const o=new y.Range(u,h,r,c);n.push({range:o,rangeLength:a.rangeLength,text:a.text,rangeOffset:a.rangeOffset,forceMoveMarkers:a.forceMoveMarkers})}return n}findMatchesLineByLine(i,n,t,a){return this._pieceTree.findMatchesLineByLine(i,n,t,a)}static _getInverseEditRanges(i){const n=[];let t=0,a=0,u=null;for(let h=0,r=i.length;h<r;h++){const c=i[h];let o,d;u?u.range.endLineNumber===c.range.startLineNumber?(o=t,d=a+(c.range.startColumn-u.range.endColumn)):(o=t+(c.range.startLineNumber-u.range.endLineNumber),d=c.range.startColumn):(o=c.range.startLineNumber,d=c.range.startColumn);let l;if(c.text.length>0){const p=c.eolCount+1;p===1?l=new y.Range(o,d,o,d+c.firstLineLength):l=new y.Range(o,d,o+p-1,c.lastLineLength+1)}else l=new y.Range(o,d,o,d);t=l.endLineNumber,a=l.endColumn,n.push(l),u=c}return n}static _sortOpsAscending(i,n){const t=y.Range.compareRangesUsingEnds(i.range,n.range);return t===0?i.sortIndex-n.sortIndex:t}static _sortOpsDescending(i,n){const t=y.Range.compareRangesUsingEnds(i.range,n.range);return t===0?n.sortIndex-i.sortIndex:-t}}e.PieceTreeTextBuffer=C}),define(ne[597],se([1,0,11,283,320]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PieceTreeTextBufferBuilder=void 0;class D{constructor(_,g,C,s,i,n,t,a,u){this._chunks=_,this._bom=g,this._cr=C,this._lf=s,this._crlf=i,this._containsRTL=n,this._containsUnusualLineTerminators=t,this._isBasicASCII=a,this._normalizeEOL=u}_getEOL(_){const g=this._cr+this._lf+this._crlf,C=this._cr+this._crlf;return g===0?_===1?`\n`:`\\r\n`:C>g/2?`\\r\n`:`\n`}create(_){const g=this._getEOL(_),C=this._chunks;if(this._normalizeEOL&&(g===`\\r\n`&&(this._cr>0||this._lf>0)||g===`\n`&&(this._cr>0||this._crlf>0)))for(let i=0,n=C.length;i<n;i++){const t=C[i].buffer.replace(/\\r\\n|\\r|\\n/g,g),a=(0,k.createLineStartsFast)(t);C[i]=new k.StringBuffer(t,a)}const s=new y.PieceTreeTextBuffer(C,this._bom,g,this._containsRTL,this._containsUnusualLineTerminators,this._isBasicASCII,this._normalizeEOL);return{textBuffer:s,disposable:s}}}class S{constructor(){this.chunks=[],this.BOM=\"\",this._hasPreviousChar=!1,this._previousChar=0,this._tmpLineStarts=[],this.cr=0,this.lf=0,this.crlf=0,this.containsRTL=!1,this.containsUnusualLineTerminators=!1,this.isBasicASCII=!0}acceptChunk(_){if(_.length===0)return;this.chunks.length===0&&L.startsWithUTF8BOM(_)&&(this.BOM=L.UTF8_BOM_CHARACTER,_=_.substr(1));const g=_.charCodeAt(_.length-1);g===13||g>=55296&&g<=56319?(this._acceptChunk1(_.substr(0,_.length-1),!1),this._hasPreviousChar=!0,this._previousChar=g):(this._acceptChunk1(_,!1),this._hasPreviousChar=!1,this._previousChar=g)}_acceptChunk1(_,g){!g&&_.length===0||(this._hasPreviousChar?this._acceptChunk2(String.fromCharCode(this._previousChar)+_):this._acceptChunk2(_))}_acceptChunk2(_){const g=(0,k.createLineStarts)(this._tmpLineStarts,_);this.chunks.push(new k.StringBuffer(_,g.lineStarts)),this.cr+=g.cr,this.lf+=g.lf,this.crlf+=g.crlf,g.isBasicASCII||(this.isBasicASCII=!1,this.containsRTL||(this.containsRTL=L.containsRTL(_)),this.containsUnusualLineTerminators||(this.containsUnusualLineTerminators=L.containsUnusualLineTerminators(_)))}finish(_=!0){return this._finish(),new D(this.chunks,this.BOM,this.cr,this.lf,this.crlf,this.containsRTL,this.containsUnusualLineTerminators,this.isBasicASCII,_)}_finish(){if(this.chunks.length===0&&this._acceptChunk1(\"\",!0),this._hasPreviousChar){this._hasPreviousChar=!1;const _=this.chunks[this.chunks.length-1];_.buffer+=String.fromCharCode(this._previousChar);const g=(0,k.createLineStartsFast)(_.buffer);_.lineStarts=g,this._previousChar===13&&this.cr++}}}e.PieceTreeTextBufferBuilder=S}),define(ne[598],se([1,0,140,17]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.encodeSemanticTokensDto=void 0;function y(_){for(let g=0,C=_.length;g<C;g+=4){const s=_[g+0],i=_[g+1],n=_[g+2],t=_[g+3];_[g+0]=t,_[g+1]=n,_[g+2]=i,_[g+3]=s}}function D(_){const g=new Uint8Array(_.buffer,_.byteOffset,_.length*4);return k.isLittleEndian()||y(g),L.VSBuffer.wrap(g)}function S(_){const g=new Uint32Array(f(_));let C=0;if(g[C++]=_.id,_.type===\"full\")g[C++]=1,g[C++]=_.data.length,g.set(_.data,C),C+=_.data.length;else{g[C++]=2,g[C++]=_.deltas.length;for(const s of _.deltas)g[C++]=s.start,g[C++]=s.deleteCount,s.data?(g[C++]=s.data.length,g.set(s.data,C),C+=s.data.length):g[C++]=0}return D(g)}e.encodeSemanticTokensDto=S;function f(_){let g=0;if(g+=1+1,_.type===\"full\")g+=1+_.data.length;else{g+=1,g+=(1+1+1)*_.deltas.length;for(const C of _.deltas)C.data&&(g+=C.data.length)}return g}}),define(ne[186],se([1,0,6,2,17]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ClickLinkGesture=e.ClickLinkOptions=e.ClickLinkKeyboardEvent=e.ClickLinkMouseEvent=void 0;function D(s,i){return!!s[i]}class S{constructor(i,n){this.target=i.target,this.isLeftClick=i.event.leftButton,this.isMiddleClick=i.event.middleButton,this.isRightClick=i.event.rightButton,this.hasTriggerModifier=D(i.event,n.triggerModifier),this.hasSideBySideModifier=D(i.event,n.triggerSideBySideModifier),this.isNoneOrSingleMouseDown=i.event.detail<=1}}e.ClickLinkMouseEvent=S;class f{constructor(i,n){this.keyCodeIsTriggerKey=i.keyCode===n.triggerKey,this.keyCodeIsSideBySideKey=i.keyCode===n.triggerSideBySideKey,this.hasTriggerModifier=D(i,n.triggerModifier)}}e.ClickLinkKeyboardEvent=f;class _{constructor(i,n,t,a){this.triggerKey=i,this.triggerModifier=n,this.triggerSideBySideKey=t,this.triggerSideBySideModifier=a}equals(i){return this.triggerKey===i.triggerKey&&this.triggerModifier===i.triggerModifier&&this.triggerSideBySideKey===i.triggerSideBySideKey&&this.triggerSideBySideModifier===i.triggerSideBySideModifier}}e.ClickLinkOptions=_;function g(s){return s===\"altKey\"?y.isMacintosh?new _(57,\"metaKey\",6,\"altKey\"):new _(5,\"ctrlKey\",6,\"altKey\"):y.isMacintosh?new _(6,\"altKey\",57,\"metaKey\"):new _(6,\"altKey\",5,\"ctrlKey\")}class C extends k.Disposable{constructor(i,n){var t;super(),this._onMouseMoveOrRelevantKeyDown=this._register(new L.Emitter),this.onMouseMoveOrRelevantKeyDown=this._onMouseMoveOrRelevantKeyDown.event,this._onExecute=this._register(new L.Emitter),this.onExecute=this._onExecute.event,this._onCancel=this._register(new L.Emitter),this.onCancel=this._onCancel.event,this._editor=i,this._extractLineNumberFromMouseEvent=(t=n?.extractLineNumberFromMouseEvent)!==null&&t!==void 0?t:a=>a.target.position?a.target.position.lineNumber:0,this._opts=g(this._editor.getOption(76)),this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._register(this._editor.onDidChangeConfiguration(a=>{if(a.hasChanged(76)){const u=g(this._editor.getOption(76));if(this._opts.equals(u))return;this._opts=u,this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._onCancel.fire()}})),this._register(this._editor.onMouseMove(a=>this._onEditorMouseMove(new S(a,this._opts)))),this._register(this._editor.onMouseDown(a=>this._onEditorMouseDown(new S(a,this._opts)))),this._register(this._editor.onMouseUp(a=>this._onEditorMouseUp(new S(a,this._opts)))),this._register(this._editor.onKeyDown(a=>this._onEditorKeyDown(new f(a,this._opts)))),this._register(this._editor.onKeyUp(a=>this._onEditorKeyUp(new f(a,this._opts)))),this._register(this._editor.onMouseDrag(()=>this._resetHandler())),this._register(this._editor.onDidChangeCursorSelection(a=>this._onDidChangeCursorSelection(a))),this._register(this._editor.onDidChangeModel(a=>this._resetHandler())),this._register(this._editor.onDidChangeModelContent(()=>this._resetHandler())),this._register(this._editor.onDidScrollChange(a=>{(a.scrollTopChanged||a.scrollLeftChanged)&&this._resetHandler()}))}_onDidChangeCursorSelection(i){i.selection&&i.selection.startColumn!==i.selection.endColumn&&this._resetHandler()}_onEditorMouseMove(i){this._lastMouseMoveEvent=i,this._onMouseMoveOrRelevantKeyDown.fire([i,null])}_onEditorMouseDown(i){this._hasTriggerKeyOnMouseDown=i.hasTriggerModifier,this._lineNumberOnMouseDown=this._extractLineNumberFromMouseEvent(i)}_onEditorMouseUp(i){const n=this._extractLineNumberFromMouseEvent(i);this._hasTriggerKeyOnMouseDown&&this._lineNumberOnMouseDown&&this._lineNumberOnMouseDown===n&&this._onExecute.fire(i)}_onEditorKeyDown(i){this._lastMouseMoveEvent&&(i.keyCodeIsTriggerKey||i.keyCodeIsSideBySideKey&&i.hasTriggerModifier)?this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent,i]):i.hasTriggerModifier&&this._onCancel.fire()}_onEditorKeyUp(i){i.keyCodeIsTriggerKey&&this._onCancel.fire()}_resetHandler(){this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._onCancel.fire()}}e.ClickLinkGesture=C});var Lt=this&&this.__asyncValues||function(Q){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e=Q[Symbol.asyncIterator],L;return e?e.call(Q):(Q=typeof __values==\"function\"?__values(Q):Q[Symbol.iterator](),L={},k(\"next\"),k(\"throw\"),k(\"return\"),L[Symbol.asyncIterator]=function(){return this},L);function k(D){L[D]=Q[D]&&function(S){return new Promise(function(f,_){S=Q[D](S),y(f,_,S.done,S.value)})}}function y(D,S,f,_){Promise.resolve(_).then(function(g){D({value:g,done:f})},S)}};define(ne[321],se([1,0,13,9,6,2]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.HoverOperation=e.HoverResult=void 0;class S{constructor(g,C,s){this.value=g,this.isComplete=C,this.hasLoadingMessage=s}}e.HoverResult=S;class f extends D.Disposable{constructor(g,C){super(),this._editor=g,this._computer=C,this._onResult=this._register(new y.Emitter),this.onResult=this._onResult.event,this._firstWaitScheduler=this._register(new L.RunOnceScheduler(()=>this._triggerAsyncComputation(),0)),this._secondWaitScheduler=this._register(new L.RunOnceScheduler(()=>this._triggerSyncComputation(),0)),this._loadingMessageScheduler=this._register(new L.RunOnceScheduler(()=>this._triggerLoadingMessage(),0)),this._state=0,this._asyncIterable=null,this._asyncIterableDone=!1,this._result=[]}dispose(){this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),super.dispose()}get _hoverTime(){return this._editor.getOption(59).delay}get _firstWaitTime(){return this._hoverTime/2}get _secondWaitTime(){return this._hoverTime-this._firstWaitTime}get _loadingMessageTime(){return 3*this._hoverTime}_setState(g,C=!0){this._state=g,C&&this._fireResult()}_triggerAsyncComputation(){this._setState(2),this._secondWaitScheduler.schedule(this._secondWaitTime),this._computer.computeAsync?(this._asyncIterableDone=!1,this._asyncIterable=(0,L.createCancelableAsyncIterable)(g=>this._computer.computeAsync(g)),we(this,void 0,void 0,function*(){var g,C,s,i;try{try{for(var n=!0,t=Lt(this._asyncIterable),a;a=yield t.next(),g=a.done,!g;n=!0){i=a.value,n=!1;const u=i;u&&(this._result.push(u),this._fireResult())}}catch(u){C={error:u}}finally{try{!n&&!g&&(s=t.return)&&(yield s.call(t))}finally{if(C)throw C.error}}this._asyncIterableDone=!0,(this._state===3||this._state===4)&&this._setState(0)}catch(u){(0,k.onUnexpectedError)(u)}})):this._asyncIterableDone=!0}_triggerSyncComputation(){this._computer.computeSync&&(this._result=this._result.concat(this._computer.computeSync())),this._setState(this._asyncIterableDone?0:3)}_triggerLoadingMessage(){this._state===3&&this._setState(4)}_fireResult(){if(this._state===1||this._state===2)return;const g=this._state===0,C=this._state===4;this._onResult.fire(new S(this._result.slice(0),g,C))}start(g){if(g===0)this._state===0&&(this._setState(1),this._firstWaitScheduler.schedule(this._firstWaitTime),this._loadingMessageScheduler.schedule(this._loadingMessageTime));else switch(this._state){case 0:this._triggerAsyncComputation(),this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break;case 2:this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break}}cancel(){this._firstWaitScheduler.cancel(),this._secondWaitScheduler.cancel(),this._loadingMessageScheduler.cancel(),this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),this._result=[],this._setState(0,!1)}}e.HoverOperation=f}),define(ne[599],se([1,0,223,2,12,7]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ResizableContentWidget=void 0;const S=30,f=24;class _ extends k.Disposable{constructor(C,s=new D.Dimension(10,10)){super(),this._editor=C,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._resizableNode=this._register(new L.ResizableHTMLElement),this._contentPosition=null,this._isResizing=!1,this._resizableNode.domNode.style.position=\"absolute\",this._resizableNode.minSize=D.Dimension.lift(s),this._resizableNode.layout(s.height,s.width),this._resizableNode.enableSashes(!0,!0,!0,!0),this._register(this._resizableNode.onDidResize(i=>{this._resize(new D.Dimension(i.dimension.width,i.dimension.height)),i.done&&(this._isResizing=!1)})),this._register(this._resizableNode.onDidWillResize(()=>{this._isResizing=!0}))}get isResizing(){return this._isResizing}getDomNode(){return this._resizableNode.domNode}getPosition(){return this._contentPosition}get position(){var C;return!((C=this._contentPosition)===null||C===void 0)&&C.position?y.Position.lift(this._contentPosition.position):void 0}_availableVerticalSpaceAbove(C){const s=this._editor.getDomNode(),i=this._editor.getScrolledVisiblePosition(C);return!s||!i?void 0:D.getDomNodePagePosition(s).top+i.top-S}_availableVerticalSpaceBelow(C){const s=this._editor.getDomNode(),i=this._editor.getScrolledVisiblePosition(C);if(!s||!i)return;const n=D.getDomNodePagePosition(s),t=D.getClientArea(document.body),a=n.top+i.top+i.height;return t.height-a-f}_findPositionPreference(C,s){var i,n;const t=Math.min((i=this._availableVerticalSpaceBelow(s))!==null&&i!==void 0?i:1/0,C),a=Math.min((n=this._availableVerticalSpaceAbove(s))!==null&&n!==void 0?n:1/0,C),u=Math.min(Math.max(a,t),C),h=Math.min(C,u);let r;return this._editor.getOption(59).above?r=h<=a?1:2:r=h<=t?2:1,r===1?this._resizableNode.enableSashes(!0,!0,!1,!1):this._resizableNode.enableSashes(!1,!0,!0,!1),r}_resize(C){this._resizableNode.layout(C.height,C.width)}}e.ResizableContentWidget=_}),define(ne[322],se([1,0,9,2,12,5,54,22]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.asCommandLink=e.InlayHintsFragments=e.InlayHintItem=e.InlayHintAnchor=void 0;class _{constructor(n,t){this.range=n,this.direction=t}}e.InlayHintAnchor=_;class g{constructor(n,t,a){this.hint=n,this.anchor=t,this.provider=a,this._isResolved=!1}with(n){const t=new g(this.hint,n.anchor,this.provider);return t._isResolved=this._isResolved,t._currentResolve=this._currentResolve,t}resolve(n){return we(this,void 0,void 0,function*(){if(typeof this.provider.resolveInlayHint==\"function\"){if(this._currentResolve)return yield this._currentResolve,n.isCancellationRequested?void 0:this.resolve(n);this._isResolved||(this._currentResolve=this._doResolve(n).finally(()=>this._currentResolve=void 0)),yield this._currentResolve}})}_doResolve(n){var t,a;return we(this,void 0,void 0,function*(){try{const u=yield Promise.resolve(this.provider.resolveInlayHint(this.hint,n));this.hint.tooltip=(t=u?.tooltip)!==null&&t!==void 0?t:this.hint.tooltip,this.hint.label=(a=u?.label)!==null&&a!==void 0?a:this.hint.label,this._isResolved=!0}catch(u){(0,L.onUnexpectedExternalError)(u),this._isResolved=!1}})}}e.InlayHintItem=g;class C{static create(n,t,a,u){return we(this,void 0,void 0,function*(){const h=[],r=n.ordered(t).reverse().map(c=>a.map(o=>we(this,void 0,void 0,function*(){try{const d=yield c.provideInlayHints(t,o,u);d?.hints.length&&h.push([d,c])}catch(d){(0,L.onUnexpectedExternalError)(d)}})));if(yield Promise.all(r.flat()),u.isCancellationRequested||t.isDisposed())throw new L.CancellationError;return new C(a,h,t)})}constructor(n,t,a){this._disposables=new k.DisposableStore,this.ranges=n,this.provider=new Set;const u=[];for(const[h,r]of t){this._disposables.add(h),this.provider.add(r);for(const c of h.hints){const o=a.validatePosition(c.position);let d=\"before\";const l=C._getRangeAtPosition(a,o);let p;l.getStartPosition().isBefore(o)?(p=D.Range.fromPositions(l.getStartPosition(),o),d=\"after\"):(p=D.Range.fromPositions(o,l.getEndPosition()),d=\"before\"),u.push(new g(c,new _(p,d),r))}}this.items=u.sort((h,r)=>y.Position.compare(h.hint.position,r.hint.position))}dispose(){this._disposables.dispose()}static _getRangeAtPosition(n,t){const a=t.lineNumber,u=n.getWordAtPosition(t);if(u)return new D.Range(a,u.startColumn,a,u.endColumn);n.tokenization.tokenizeIfCheap(a);const h=n.tokenization.getLineTokens(a),r=t.column-1,c=h.findTokenIndexAtOffset(r);let o=h.getStartOffset(c),d=h.getEndOffset(c);return d-o===1&&(o===r&&c>1?(o=h.getStartOffset(c-1),d=h.getEndOffset(c-1)):d===r&&c<h.getCount()-1&&(o=h.getStartOffset(c+1),d=h.getEndOffset(c+1))),new D.Range(a,o+1,a,d+1)}}e.InlayHintsFragments=C;function s(i){return f.URI.from({scheme:S.Schemas.command,path:i.id,query:i.arguments&&encodeURIComponent(JSON.stringify(i.arguments))}).toString()}e.asCommandLink=s}),define(ne[600],se([1,0,85,13,19,196,9,5,507,151,128]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InlineCompletionItem=e.InlineCompletionList=e.InlineCompletionProviderResult=e.provideInlineCompletions=void 0;function s(h,r,c,o,d=y.CancellationToken.None,l){return we(this,void 0,void 0,function*(){const p=a(r,c),m=h.all(c),v=new D.SetMap;for(const A of m)A.groupId&&v.add(A.groupId,A);function b(A){if(!A.yieldsToGroupIds)return[];const N=[];for(const F of A.yieldsToGroupIds||[]){const O=v.get(F);for(const W of O)N.push(W)}return N}const w=new Map,E=new Set;function I(A,N){if(N=[...N,A],E.has(A))return N;E.add(A);try{const F=b(A);for(const O of F){const W=I(O,N);if(W)return W}}finally{E.delete(A)}}function M(A){const N=w.get(A);if(N)return N;const F=I(A,[]);F&&(0,S.onUnexpectedExternalError)(new Error(`Inline completions: cyclic yield-to dependency detected. Path: ${F.map(W=>W.toString?W.toString():\"\"+W).join(\" -> \")}`));const O=new k.DeferredPromise;return w.set(A,O.p),(()=>we(this,void 0,void 0,function*(){if(!F){const W=b(A);for(const U of W){const j=yield M(U);if(j&&j.items.length>0)return}}try{return yield A.provideInlineCompletions(c,r,o,d)}catch(W){(0,S.onUnexpectedExternalError)(W);return}}))().then(W=>O.complete(W),W=>O.error(W)),O.p}const P=yield Promise.all(m.map(A=>we(this,void 0,void 0,function*(){return{provider:A,completions:yield M(A)}}))),x=new Map,T=[];for(const A of P){const N=A.completions;if(!N)continue;const F=new n(N,A.provider);T.push(F);for(const O of N.items){const W=t.from(O,F,p,c,l);x.set(W.hash(),W)}}return new i(Array.from(x.values()),new Set(x.keys()),T)})}e.provideInlineCompletions=s;class i{constructor(r,c,o){this.completions=r,this.hashs=c,this.providerResults=o}has(r){return this.hashs.has(r.hash())}dispose(){for(const r of this.providerResults)r.removeRef()}}e.InlineCompletionProviderResult=i;class n{constructor(r,c){this.inlineCompletions=r,this.provider=c,this.refCount=1}addRef(){this.refCount++}removeRef(){this.refCount--,this.refCount===0&&this.provider.freeInlineCompletions(this.inlineCompletions)}}e.InlineCompletionList=n;class t{static from(r,c,o,d,l){let p,m,v=r.range?f.Range.lift(r.range):o;if(typeof r.insertText==\"string\"){if(p=r.insertText,l&&r.completeBracketPairs){p=u(p,v.getStartPosition(),d,l);const b=p.length-r.insertText.length;b!==0&&(v=new f.Range(v.startLineNumber,v.startColumn,v.endLineNumber,v.endColumn+b))}m=void 0}else if(\"snippet\"in r.insertText){const b=r.insertText.snippet.length;if(l&&r.completeBracketPairs){r.insertText.snippet=u(r.insertText.snippet,v.getStartPosition(),d,l);const E=r.insertText.snippet.length-b;E!==0&&(v=new f.Range(v.startLineNumber,v.startColumn,v.endLineNumber,v.endColumn+E))}const w=new C.SnippetParser().parse(r.insertText.snippet);w.children.length===1&&w.children[0]instanceof C.Text?(p=w.children[0].value,m=void 0):(p=w.toString(),m={snippet:r.insertText.snippet,range:v})}else(0,L.assertNever)(r.insertText);return new t(p,r.command,v,p,m,r.additionalTextEdits||(0,g.getReadonlyEmptyArray)(),r,c)}constructor(r,c,o,d,l,p,m,v){this.filterText=r,this.command=c,this.range=o,this.insertText=d,this.snippetInfo=l,this.additionalTextEdits=p,this.sourceInlineCompletion=m,this.source=v,r=r.replace(/\\r\\n|\\r/g,`\n`),d=r.replace(/\\r\\n|\\r/g,`\n`)}withRange(r){return new t(this.filterText,this.command,r,this.insertText,this.snippetInfo,this.additionalTextEdits,this.sourceInlineCompletion,this.source)}hash(){return JSON.stringify({insertText:this.insertText,range:this.range.toString()})}}e.InlineCompletionItem=t;function a(h,r){const c=r.getWordAtPosition(h),o=r.getLineMaxColumn(h.lineNumber);return c?new f.Range(h.lineNumber,c.startColumn,h.lineNumber,o):f.Range.fromPositions(h,h.with(void 0,o))}function u(h,r,c,o){const l=c.getLineContent(r.lineNumber).substring(0,r.column-1)+h,p=c.tokenization.tokenizeLineWithEdit(r,l.length-(r.column-1),h),m=p?.sliceAndInflate(r.column-1,l.length,0);return m?(0,_.fixBracketsInLine)(m,o):h}}),define(ne[601],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/controller/textAreaHandler\",e)}),define(ne[602],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/coreCommands\",e)}),define(ne[603],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/editorExtensions\",e)}),define(ne[604],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/widget/codeEditorWidget\",e)}),define(ne[605],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/widget/diffEditor.contribution\",e)}),define(ne[606],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/widget/diffEditorWidget\",e)}),define(ne[607],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\",e)}),define(ne[608],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/widget/diffEditorWidget2/colors\",e)}),define(ne[609],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/widget/diffEditorWidget2/decorations\",e)}),define(ne[610],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\",e)}),define(ne[611],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\",e)}),define(ne[612],se([1,0,7,39,25,2,17,26,611]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InlineDiffDeletedCodeMargin=void 0;class g extends D.Disposable{get visibility(){return this._visibility}set visibility(s){this._visibility!==s&&(this._visibility=s,this._diffActions.style.visibility=s?\"visible\":\"hidden\")}constructor(s,i,n,t,a,u,h,r,c){super(),this._getViewZoneId=s,this._marginDomNode=i,this._modifiedEditor=n,this._diff=t,this._editor=a,this._viewLineCounts=u,this._originalTextModel=h,this._contextMenuService=r,this._clipboardService=c,this._visibility=!1,this._marginDomNode.style.zIndex=\"10\",this._diffActions=document.createElement(\"div\"),this._diffActions.className=f.ThemeIcon.asClassName(y.Codicon.lightBulb)+\" lightbulb-glyph\",this._diffActions.style.position=\"absolute\";const o=this._modifiedEditor.getOption(65);this._diffActions.style.right=\"0px\",this._diffActions.style.visibility=\"hidden\",this._diffActions.style.height=`${o}px`,this._diffActions.style.lineHeight=`${o}px`,this._marginDomNode.appendChild(this._diffActions);let d=0;const l=n.getOption(125)&&!S.isIOS,p=(m,v)=>{var b;this._contextMenuService.showContextMenu({domForShadowRoot:l&&(b=n.getDomNode())!==null&&b!==void 0?b:void 0,getAnchor:()=>({x:m,y:v}),getActions:()=>{const w=[],E=t.modifiedRange.isEmpty;return w.push(new k.Action(\"diff.clipboard.copyDeletedContent\",E?t.originalRange.length>1?(0,_.localize)(0,null):(0,_.localize)(1,null):t.originalRange.length>1?(0,_.localize)(2,null):(0,_.localize)(3,null),void 0,!0,()=>we(this,void 0,void 0,function*(){const M=this._originalTextModel.getValueInRange(t.originalRange.toExclusiveRange());yield this._clipboardService.writeText(M)}))),t.originalRange.length>1&&w.push(new k.Action(\"diff.clipboard.copyDeletedLineContent\",E?(0,_.localize)(4,null,t.originalRange.startLineNumber+d):(0,_.localize)(5,null,t.originalRange.startLineNumber+d),void 0,!0,()=>we(this,void 0,void 0,function*(){let M=this._originalTextModel.getLineContent(t.originalRange.startLineNumber+d);M===\"\"&&(M=this._originalTextModel.getEndOfLineSequence()===0?`\n`:`\\r\n`),yield this._clipboardService.writeText(M)}))),n.getOption(89)||w.push(new k.Action(\"diff.inline.revertChange\",(0,_.localize)(6,null),void 0,!0,()=>we(this,void 0,void 0,function*(){this._editor.revert(this._diff)}))),w},autoSelectFirstItem:!0})};this._register((0,L.addStandardDisposableListener)(this._diffActions,\"mousedown\",m=>{const{top:v,height:b}=(0,L.getDomNodePagePosition)(this._diffActions),w=Math.floor(o/3);m.preventDefault(),p(m.posx,v+b+w)})),this._register(n.onMouseMove(m=>{(m.target.type===8||m.target.type===5)&&m.target.detail.viewZoneId===this._getViewZoneId()?(d=this._updateLightBulbPosition(this._marginDomNode,m.event.browserEvent.y,o),this.visibility=!0):this.visibility=!1})),this._register(n.onMouseDown(m=>{m.event.rightButton&&(m.target.type===8||m.target.type===5)&&m.target.detail.viewZoneId===this._getViewZoneId()&&(m.event.preventDefault(),d=this._updateLightBulbPosition(this._marginDomNode,m.event.browserEvent.y,o),p(m.event.posx,m.event.posy+o))}))}_updateLightBulbPosition(s,i,n){const{top:t}=(0,L.getDomNodePagePosition)(s),a=i-t,u=Math.floor(a/n),h=u*n;if(this._diffActions.style.top=`${h}px`,this._viewLineCounts){let r=0;for(let c=0;c<this._viewLineCounts.length;c++)if(r+=this._viewLineCounts[c],u<r)return c}return u}}e.InlineDiffDeletedCodeMargin=g}),define(ne[613],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\",e)}),define(ne[323],se([1,0,7,68,39,14,25,2,42,26,102,90,613]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MovedBlocksLinesPart=void 0;class n extends f.Disposable{constructor(h,r,c,o,d){super(),this._rootElement=h,this._diffModel=r,this._originalEditorLayoutInfo=c,this._modifiedEditorLayoutInfo=o,this._editors=d,this._originalScrollTop=(0,_.observableFromEvent)(this._editors.original.onDidScrollChange,()=>this._editors.original.getScrollTop()),this._modifiedScrollTop=(0,_.observableFromEvent)(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._viewZonesChanged=(0,_.observableSignalFromEvent)(\"onDidChangeViewZones\",this._editors.modified.onDidChangeViewZones),this.width=(0,_.observableValue)(\"width\",0),this._modifiedViewZonesChangedSignal=(0,_.observableSignalFromEvent)(\"modified.onDidChangeViewZones\",this._editors.modified.onDidChangeViewZones),this._originalViewZonesChangedSignal=(0,_.observableSignalFromEvent)(\"original.onDidChangeViewZones\",this._editors.original.onDidChangeViewZones),this._state=(0,_.derivedWithStore)(\"state\",(E,I)=>{var M;this._element.replaceChildren();const P=this._diffModel.read(E),x=(M=P?.diff.read(E))===null||M===void 0?void 0:M.movedTexts;if(!x||x.length===0){this.width.set(0,void 0);return}this._viewZonesChanged.read(E);const T=this._originalEditorLayoutInfo.read(E),A=this._modifiedEditorLayoutInfo.read(E);if(!T||!A){this.width.set(0,void 0);return}this._modifiedViewZonesChangedSignal.read(E),this._originalViewZonesChangedSignal.read(E);const N=x.map(K=>{function G(ae,ce){const de=ce.getTopForLineNumber(ae.startLineNumber,!0),he=ce.getTopForLineNumber(ae.endLineNumberExclusive,!0);return(de+he)/2}const Z=G(K.lineRangeMapping.original,this._editors.original),J=this._originalScrollTop.read(E),X=G(K.lineRangeMapping.modified,this._editors.modified),H=this._modifiedScrollTop.read(E),B=Z-J,V=X-H,Y=Math.min(Z,X),ie=Math.max(Z,X);return{range:new s.OffsetRange(Y,ie),from:B,to:V,fromWithoutScroll:Z,toWithoutScroll:X,move:K}});N.sort((0,D.tieBreakComparators)((0,D.compareBy)(K=>K.fromWithoutScroll>K.toWithoutScroll,D.booleanComparator),(0,D.compareBy)(K=>K.fromWithoutScroll>K.toWithoutScroll?K.fromWithoutScroll:-K.toWithoutScroll,D.numberComparator)));const F=t.compute(N.map(K=>K.range)),O=10,W=T.verticalScrollbarWidth,U=(F.getTrackCount()-1)*10+O*2,j=W+U+(A.contentLeft-n.movedCodeBlockPadding);let R=0;for(const K of N){const G=F.getTrack(R),Z=W+O+G*10,J=15,X=15,H=j,B=A.glyphMarginWidth+A.lineNumbersWidth,V=18,Y=document.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\");Y.classList.add(\"arrow-rectangle\"),Y.setAttribute(\"x\",`${H-B}`),Y.setAttribute(\"y\",`${K.to-V/2}`),Y.setAttribute(\"width\",`${B}`),Y.setAttribute(\"height\",`${V}`),this._element.appendChild(Y);const ie=document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\"),ae=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\");ae.setAttribute(\"d\",`M 0 ${K.from} L ${Z} ${K.from} L ${Z} ${K.to} L ${H-X} ${K.to}`),ae.setAttribute(\"fill\",\"none\"),ie.appendChild(ae);const ce=document.createElementNS(\"http://www.w3.org/2000/svg\",\"polygon\");ce.classList.add(\"arrow\"),I.add((0,_.autorun)(de=>{ae.classList.toggle(\"currentMove\",K.move===P.activeMovedText.read(de)),ce.classList.toggle(\"currentMove\",K.move===P.activeMovedText.read(de))})),ce.setAttribute(\"points\",`${H-X},${K.to-J/2} ${H},${K.to} ${H-X},${K.to+J/2}`),ie.appendChild(ce),this._element.appendChild(ie),R++}this.width.set(U,void 0)}),this._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\"),this._element.setAttribute(\"class\",\"moved-blocks-lines\"),this._rootElement.appendChild(this._element),this._register((0,f.toDisposable)(()=>this._element.remove())),this._register((0,_.autorun)(E=>{const I=this._originalEditorLayoutInfo.read(E),M=this._modifiedEditorLayoutInfo.read(E);!I||!M||(this._element.style.left=`${I.width-I.verticalScrollbarWidth}px`,this._element.style.height=`${I.height}px`,this._element.style.width=`${I.verticalScrollbarWidth+I.contentLeft-n.movedCodeBlockPadding+this.width.read(E)}px`)})),this._register((0,_.keepAlive)(this._state,!0));const l=(0,_.derived)(E=>{const I=this._diffModel.read(E),M=I?.diff.read(E);return M?M.movedTexts.map(P=>({move:P,original:new C.PlaceholderViewZone((0,_.constObservable)(P.lineRangeMapping.original.startLineNumber-1),18),modified:new C.PlaceholderViewZone((0,_.constObservable)(P.lineRangeMapping.modified.startLineNumber-1),18)})):[]});this._register((0,C.applyViewZones)(this._editors.original,l.map(E=>E.map(I=>I.original)))),this._register((0,C.applyViewZones)(this._editors.modified,l.map(E=>E.map(I=>I.modified)))),this._register((0,_.autorunWithStore)((E,I)=>{const M=l.read(E);for(const P of M)I.add(new a(this._editors.original,P.original,P.move,\"original\",this._diffModel.get())),I.add(new a(this._editors.modified,P.modified,P.move,\"modified\",this._diffModel.get()))}));const p=(0,_.observableFromEvent)(this._editors.original.onDidChangeCursorPosition,()=>this._editors.original.getPosition()),m=(0,_.observableFromEvent)(this._editors.modified.onDidChangeCursorPosition,()=>this._editors.modified.getPosition()),v=(0,_.observableSignalFromEvent)(\"original.onDidFocusEditorWidget\",E=>this._editors.original.onDidFocusEditorWidget(()=>setTimeout(()=>E(void 0),0))),b=(0,_.observableSignalFromEvent)(\"modified.onDidFocusEditorWidget\",E=>this._editors.modified.onDidFocusEditorWidget(()=>setTimeout(()=>E(void 0),0)));let w=\"modified\";this._register((0,_.autorunHandleChanges)({createEmptyChangeSummary:()=>{},handleChange:(E,I)=>(E.didChange(v)&&(w=\"original\"),E.didChange(b)&&(w=\"modified\"),!0)},E=>{v.read(E),b.read(E);const I=this._diffModel.read(E);if(!I)return;const M=I.diff.read(E);let P;if(M&&w===\"original\"){const x=p.read(E);x&&(P=M.movedTexts.find(T=>T.lineRangeMapping.original.contains(x.lineNumber)))}if(M&&w===\"modified\"){const x=m.read(E);x&&(P=M.movedTexts.find(T=>T.lineRangeMapping.modified.contains(x.lineNumber)))}P!==I.movedTextToCompare.get()&&I.movedTextToCompare.set(void 0,void 0),I.setActiveMovedText(P)}))}}e.MovedBlocksLinesPart=n,n.movedCodeBlockPadding=4;class t{static compute(h){const r=[],c=[];for(const o of h){let d=r.findIndex(l=>!l.intersectsStrict(o));d===-1&&(r.length>=6?d=(0,D.findMaxIdxBy)(r,(0,D.compareBy)(p=>p.intersectWithRangeLength(o),D.numberComparator)):(d=r.length,r.push(new s.OffsetRangeSet))),r[d].addRange(o),c.push(d)}return new t(r.length,c)}constructor(h,r){this._trackCount=h,this.trackPerLineIdx=r}getTrack(h){return this.trackPerLineIdx[h]}getTrackCount(){return this._trackCount}}class a extends C.ViewZoneOverlayWidget{constructor(h,r,c,o,d){const l=(0,L.h)(\"div.diff-hidden-lines-widget\");super(h,r,l.root),this._editor=h,this._move=c,this._kind=o,this._diffModel=d,this._nodes=(0,L.h)(\"div.diff-moved-code-block\",{style:{marginRight:\"4px\"}},[(0,L.h)(\"div.text-content@textContent\"),(0,L.h)(\"div.action-bar@actionBar\")]),l.root.appendChild(this._nodes.root);const p=(0,_.observableFromEvent)(this._editor.onDidLayoutChange,()=>this._editor.getLayoutInfo());this._register((0,C.applyStyle)(this._nodes.root,{paddingRight:p.map(E=>E.verticalScrollbarWidth)}));let m;c.changes.length>0?m=this._kind===\"original\"?(0,i.localize)(0,null,this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive):(0,i.localize)(1,null,this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive):m=this._kind===\"original\"?(0,i.localize)(2,null,this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive):(0,i.localize)(3,null,this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive);const v=this._register(new k.ActionBar(this._nodes.actionBar,{highlightToggledItems:!0})),b=new y.Action(\"\",m,\"\",!1);v.push(b,{icon:!1,label:!0});const w=new y.Action(\"\",\"Compare\",g.ThemeIcon.asClassName(S.Codicon.compareChanges),!0,()=>{this._editor.focus(),this._diffModel.movedTextToCompare.set(this._diffModel.movedTextToCompare.get()===c?void 0:this._move,void 0)});this._register((0,_.autorun)(E=>{const I=this._diffModel.movedTextToCompare.read(E)===c;w.checked=I})),v.push(w,{icon:!1,label:!0})}}}),define(ne[614],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\",e)}),define(ne[615],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/widget/diffReview\",e)}),define(ne[616],se([3,4]),function(Q,e){return Q.create(\"vs/editor/browser/widget/inlineDiffMargin\",e)}),define(ne[617],se([1,0,616,7,39,2,5,25,26,17]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InlineDiffMargin=void 0;class C extends D.Disposable{get visibility(){return this._visibility}set visibility(i){this._visibility!==i&&(this._visibility=i,i?this._diffActions.style.visibility=\"visible\":this._diffActions.style.visibility=\"hidden\")}constructor(i,n,t,a,u,h){super(),this._viewZoneId=i,this._marginDomNode=n,this.editor=t,this.diff=a,this._contextMenuService=u,this._clipboardService=h,this._visibility=!1,this._marginDomNode.style.zIndex=\"10\",this._diffActions=document.createElement(\"div\"),this._diffActions.className=_.ThemeIcon.asClassName(f.Codicon.lightBulb)+\" lightbulb-glyph\",this._diffActions.style.position=\"absolute\";const r=t.getOption(65),c=t.getModel().getEOL();this._diffActions.style.right=\"0px\",this._diffActions.style.visibility=\"hidden\",this._diffActions.style.height=`${r}px`,this._diffActions.style.lineHeight=`${r}px`,this._marginDomNode.appendChild(this._diffActions);const o=[],d=a.modifiedEndLineNumber===0;o.push(new y.Action(\"diff.clipboard.copyDeletedContent\",d?a.originalEndLineNumber>a.modifiedStartLineNumber?L.localize(0,null):L.localize(1,null):a.originalEndLineNumber>a.modifiedStartLineNumber?L.localize(2,null):L.localize(3,null),void 0,!0,()=>we(this,void 0,void 0,function*(){const w=new S.Range(a.originalStartLineNumber,1,a.originalEndLineNumber+1,1),E=a.originalModel.getValueInRange(w);yield this._clipboardService.writeText(E)})));let l=0,p;a.originalEndLineNumber>a.modifiedStartLineNumber&&(p=new y.Action(\"diff.clipboard.copyDeletedLineContent\",d?L.localize(4,null,a.originalStartLineNumber):L.localize(5,null,a.originalStartLineNumber),void 0,!0,()=>we(this,void 0,void 0,function*(){const w=a.originalModel.getLineContent(a.originalStartLineNumber+l);if(w===\"\"){const E=a.originalModel.getEndOfLineSequence();yield this._clipboardService.writeText(E===0?`\n`:`\\r\n`)}else yield this._clipboardService.writeText(w)})),o.push(p)),t.getOption(89)||o.push(new y.Action(\"diff.inline.revertChange\",L.localize(6,null),void 0,!0,()=>we(this,void 0,void 0,function*(){const w=new S.Range(a.originalStartLineNumber,1,a.originalEndLineNumber,a.originalModel.getLineMaxColumn(a.originalEndLineNumber)),E=a.originalModel.getValueInRange(w);if(a.modifiedEndLineNumber===0){const I=t.getModel().getLineMaxColumn(a.modifiedStartLineNumber);t.executeEdits(\"diffEditor\",[{range:new S.Range(a.modifiedStartLineNumber,I,a.modifiedStartLineNumber,I),text:c+E}])}else{const I=t.getModel().getLineMaxColumn(a.modifiedEndLineNumber);t.executeEdits(\"diffEditor\",[{range:new S.Range(a.modifiedStartLineNumber,1,a.modifiedEndLineNumber,I),text:E}])}})));const v=t.getOption(125)&&!g.isIOS,b=(w,E)=>{var I;this._contextMenuService.showContextMenu({domForShadowRoot:v&&(I=t.getDomNode())!==null&&I!==void 0?I:void 0,getAnchor:()=>({x:w,y:E}),getActions:()=>(p&&(p.label=d?L.localize(7,null,a.originalStartLineNumber+l):L.localize(8,null,a.originalStartLineNumber+l)),o),autoSelectFirstItem:!0})};this._register(k.addStandardDisposableListener(this._diffActions,\"mousedown\",w=>{const{top:E,height:I}=k.getDomNodePagePosition(this._diffActions),M=Math.floor(r/3);w.preventDefault(),b(w.posx,E+I+M)})),this._register(t.onMouseMove(w=>{w.target.type===8||w.target.type===5?w.target.detail.viewZoneId===this._viewZoneId?(this.visibility=!0,l=this._updateLightBulbPosition(this._marginDomNode,w.event.browserEvent.y,r)):this.visibility=!1:this.visibility=!1})),this._register(t.onMouseDown(w=>{w.event.rightButton&&(w.target.type===8||w.target.type===5)&&w.target.detail.viewZoneId===this._viewZoneId&&(w.event.preventDefault(),l=this._updateLightBulbPosition(this._marginDomNode,w.event.browserEvent.y,r),b(w.event.posx,w.event.posy+r))}))}_updateLightBulbPosition(i,n,t){const{top:a}=k.getDomNodePagePosition(i),u=n-a,h=Math.floor(u/t),r=h*t;if(this._diffActions.style.top=`${r}px`,this.diff.viewLineCounts){let c=0;for(let o=0;o<this.diff.viewLineCounts.length;o++)if(c+=this.diff.viewLineCounts[o],h<c)return o}return h}}e.InlineDiffMargin=C}),define(ne[618],se([3,4]),function(Q,e){return Q.create(\"vs/editor/common/config/editorConfigurationSchema\",e)}),define(ne[619],se([3,4]),function(Q,e){return Q.create(\"vs/editor/common/config/editorOptions\",e)}),define(ne[36],se([1,0,14,47,17,175,147,619]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditorOptions=e.editorOptionsRegistry=e.EDITOR_FONT_DEFAULTS=e.unicodeHighlightConfigKeys=e.inUntrustedWorkspace=e.filterValidationDecorations=e.EditorLayoutInfoComputer=e.EditorFontVariations=e.EditorFontLigatures=e.TextEditorCursorStyle=e.stringSet=e.clampedFloat=e.clampedInt=e.boolean=e.ApplyUpdateResult=e.ComputeOptionsMemory=e.ConfigurationChangedEvent=e.MINIMAP_GUTTER_WIDTH=void 0,e.MINIMAP_GUTTER_WIDTH=8;class _{constructor(le){this._values=le}hasChanged(le){return this._values[le]}}e.ConfigurationChangedEvent=_;class g{constructor(){this.stableMinimapLayoutInput=null,this.stableFitMaxMinimapScale=0,this.stableFitRemainingWidth=0}}e.ComputeOptionsMemory=g;class C{constructor(le,pe,Ce,be){this.id=le,this.name=pe,this.defaultValue=Ce,this.schema=be}applyUpdate(le,pe){return i(le,pe)}compute(le,pe,Ce){return Ce}}class s{constructor(le,pe){this.newValue=le,this.didChange=pe}}e.ApplyUpdateResult=s;function i(me,le){if(typeof me!=\"object\"||typeof le!=\"object\"||!me||!le)return new s(le,me!==le);if(Array.isArray(me)||Array.isArray(le)){const Ce=Array.isArray(me)&&Array.isArray(le)&&L.equals(me,le);return new s(le,!Ce)}let pe=!1;for(const Ce in le)if(le.hasOwnProperty(Ce)){const be=i(me[Ce],le[Ce]);be.didChange&&(me[Ce]=be.newValue,pe=!0)}return new s(me,pe)}class n{constructor(le){this.schema=void 0,this.id=le,this.name=\"_never_\",this.defaultValue=void 0}applyUpdate(le,pe){return i(le,pe)}validate(le){return this.defaultValue}}class t{constructor(le,pe,Ce,be){this.id=le,this.name=pe,this.defaultValue=Ce,this.schema=be}applyUpdate(le,pe){return i(le,pe)}validate(le){return typeof le>\"u\"?this.defaultValue:le}compute(le,pe,Ce){return Ce}}function a(me,le){return typeof me>\"u\"?le:me===\"false\"?!1:!!me}e.boolean=a;class u extends t{constructor(le,pe,Ce,be=void 0){typeof be<\"u\"&&(be.type=\"boolean\",be.default=Ce),super(le,pe,Ce,be)}validate(le){return a(le,this.defaultValue)}}function h(me,le,pe,Ce){if(typeof me>\"u\")return le;let be=parseInt(me,10);return isNaN(be)?le:(be=Math.max(pe,be),be=Math.min(Ce,be),be|0)}e.clampedInt=h;class r extends t{static clampedInt(le,pe,Ce,be){return h(le,pe,Ce,be)}constructor(le,pe,Ce,be,Ie,Ne=void 0){typeof Ne<\"u\"&&(Ne.type=\"integer\",Ne.default=Ce,Ne.minimum=be,Ne.maximum=Ie),super(le,pe,Ce,Ne),this.minimum=be,this.maximum=Ie}validate(le){return r.clampedInt(le,this.defaultValue,this.minimum,this.maximum)}}function c(me,le,pe,Ce){if(typeof me>\"u\")return le;const be=o.float(me,le);return o.clamp(be,pe,Ce)}e.clampedFloat=c;class o extends t{static clamp(le,pe,Ce){return le<pe?pe:le>Ce?Ce:le}static float(le,pe){if(typeof le==\"number\")return le;if(typeof le>\"u\")return pe;const Ce=parseFloat(le);return isNaN(Ce)?pe:Ce}constructor(le,pe,Ce,be,Ie){typeof Ie<\"u\"&&(Ie.type=\"number\",Ie.default=Ce),super(le,pe,Ce,Ie),this.validationFn=be}validate(le){return this.validationFn(o.float(le,this.defaultValue))}}class d extends t{static string(le,pe){return typeof le!=\"string\"?pe:le}constructor(le,pe,Ce,be=void 0){typeof be<\"u\"&&(be.type=\"string\",be.default=Ce),super(le,pe,Ce,be)}validate(le){return d.string(le,this.defaultValue)}}function l(me,le,pe,Ce){return typeof me!=\"string\"?le:Ce&&me in Ce?Ce[me]:pe.indexOf(me)===-1?le:me}e.stringSet=l;class p extends t{constructor(le,pe,Ce,be,Ie=void 0){typeof Ie<\"u\"&&(Ie.type=\"string\",Ie.enum=be,Ie.default=Ce),super(le,pe,Ce,Ie),this._allowedValues=be}validate(le){return l(le,this.defaultValue,this._allowedValues)}}class m extends C{constructor(le,pe,Ce,be,Ie,Ne,Re=void 0){typeof Re<\"u\"&&(Re.type=\"string\",Re.enum=Ie,Re.default=be),super(le,pe,Ce,Re),this._allowedValues=Ie,this._convert=Ne}validate(le){return typeof le!=\"string\"?this.defaultValue:this._allowedValues.indexOf(le)===-1?this.defaultValue:this._convert(le)}}function v(me){switch(me){case\"none\":return 0;case\"keep\":return 1;case\"brackets\":return 2;case\"advanced\":return 3;case\"full\":return 4}}class b extends C{constructor(){super(2,\"accessibilitySupport\",0,{type:\"string\",enum:[\"auto\",\"on\",\"off\"],enumDescriptions:[f.localize(0,null),f.localize(1,null),f.localize(2,null)],default:\"auto\",tags:[\"accessibility\"],description:f.localize(3,null)})}validate(le){switch(le){case\"auto\":return 0;case\"off\":return 1;case\"on\":return 2}return this.defaultValue}compute(le,pe,Ce){return Ce===0?le.accessibilitySupport:Ce}}class w extends C{constructor(){const le={insertSpace:!0,ignoreEmptyLines:!0};super(22,\"comments\",le,{\"editor.comments.insertSpace\":{type:\"boolean\",default:le.insertSpace,description:f.localize(4,null)},\"editor.comments.ignoreEmptyLines\":{type:\"boolean\",default:le.ignoreEmptyLines,description:f.localize(5,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{insertSpace:a(pe.insertSpace,this.defaultValue.insertSpace),ignoreEmptyLines:a(pe.ignoreEmptyLines,this.defaultValue.ignoreEmptyLines)}}}function E(me){switch(me){case\"blink\":return 1;case\"smooth\":return 2;case\"phase\":return 3;case\"expand\":return 4;case\"solid\":return 5}}var I;(function(me){me[me.Line=1]=\"Line\",me[me.Block=2]=\"Block\",me[me.Underline=3]=\"Underline\",me[me.LineThin=4]=\"LineThin\",me[me.BlockOutline=5]=\"BlockOutline\",me[me.UnderlineThin=6]=\"UnderlineThin\"})(I||(e.TextEditorCursorStyle=I={}));function M(me){switch(me){case\"line\":return I.Line;case\"block\":return I.Block;case\"underline\":return I.Underline;case\"line-thin\":return I.LineThin;case\"block-outline\":return I.BlockOutline;case\"underline-thin\":return I.UnderlineThin}}class P extends n{constructor(){super(139)}compute(le,pe,Ce){const be=[\"monaco-editor\"];return pe.get(38)&&be.push(pe.get(38)),le.extraEditorClassName&&be.push(le.extraEditorClassName),pe.get(72)===\"default\"?be.push(\"mouse-default\"):pe.get(72)===\"copy\"&&be.push(\"mouse-copy\"),pe.get(109)&&be.push(\"showUnused\"),pe.get(137)&&be.push(\"showDeprecated\"),be.join(\" \")}}class x extends u{constructor(){super(36,\"emptySelectionClipboard\",!0,{description:f.localize(6,null)})}compute(le,pe,Ce){return Ce&&le.emptySelectionClipboard}}class T extends C{constructor(){const le={cursorMoveOnType:!0,seedSearchStringFromSelection:\"always\",autoFindInSelection:\"never\",globalFindClipboard:!1,addExtraSpaceOnTop:!0,loop:!0};super(40,\"find\",le,{\"editor.find.cursorMoveOnType\":{type:\"boolean\",default:le.cursorMoveOnType,description:f.localize(7,null)},\"editor.find.seedSearchStringFromSelection\":{type:\"string\",enum:[\"never\",\"always\",\"selection\"],default:le.seedSearchStringFromSelection,enumDescriptions:[f.localize(8,null),f.localize(9,null),f.localize(10,null)],description:f.localize(11,null)},\"editor.find.autoFindInSelection\":{type:\"string\",enum:[\"never\",\"always\",\"multiline\"],default:le.autoFindInSelection,enumDescriptions:[f.localize(12,null),f.localize(13,null),f.localize(14,null)],description:f.localize(15,null)},\"editor.find.globalFindClipboard\":{type:\"boolean\",default:le.globalFindClipboard,description:f.localize(16,null),included:y.isMacintosh},\"editor.find.addExtraSpaceOnTop\":{type:\"boolean\",default:le.addExtraSpaceOnTop,description:f.localize(17,null)},\"editor.find.loop\":{type:\"boolean\",default:le.loop,description:f.localize(18,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{cursorMoveOnType:a(pe.cursorMoveOnType,this.defaultValue.cursorMoveOnType),seedSearchStringFromSelection:typeof le.seedSearchStringFromSelection==\"boolean\"?le.seedSearchStringFromSelection?\"always\":\"never\":l(pe.seedSearchStringFromSelection,this.defaultValue.seedSearchStringFromSelection,[\"never\",\"always\",\"selection\"]),autoFindInSelection:typeof le.autoFindInSelection==\"boolean\"?le.autoFindInSelection?\"always\":\"never\":l(pe.autoFindInSelection,this.defaultValue.autoFindInSelection,[\"never\",\"always\",\"multiline\"]),globalFindClipboard:a(pe.globalFindClipboard,this.defaultValue.globalFindClipboard),addExtraSpaceOnTop:a(pe.addExtraSpaceOnTop,this.defaultValue.addExtraSpaceOnTop),loop:a(pe.loop,this.defaultValue.loop)}}}class A extends C{constructor(){super(50,\"fontLigatures\",A.OFF,{anyOf:[{type:\"boolean\",description:f.localize(19,null)},{type:\"string\",description:f.localize(20,null)}],description:f.localize(21,null),default:!1})}validate(le){return typeof le>\"u\"?this.defaultValue:typeof le==\"string\"?le===\"false\"?A.OFF:le===\"true\"?A.ON:le:le?A.ON:A.OFF}}e.EditorFontLigatures=A,A.OFF='\"liga\" off, \"calt\" off',A.ON='\"liga\" on, \"calt\" on';class N extends C{constructor(){super(53,\"fontVariations\",N.OFF,{anyOf:[{type:\"boolean\",description:f.localize(22,null)},{type:\"string\",description:f.localize(23,null)}],description:f.localize(24,null),default:!1})}validate(le){return typeof le>\"u\"?this.defaultValue:typeof le==\"string\"?le===\"false\"?N.OFF:le===\"true\"?N.TRANSLATE:le:le?N.TRANSLATE:N.OFF}compute(le,pe,Ce){return le.fontInfo.fontVariationSettings}}e.EditorFontVariations=N,N.OFF=\"normal\",N.TRANSLATE=\"translate\";class F extends n{constructor(){super(49)}compute(le,pe,Ce){return le.fontInfo}}class O extends t{constructor(){super(51,\"fontSize\",e.EDITOR_FONT_DEFAULTS.fontSize,{type:\"number\",minimum:6,maximum:100,default:e.EDITOR_FONT_DEFAULTS.fontSize,description:f.localize(25,null)})}validate(le){const pe=o.float(le,this.defaultValue);return pe===0?e.EDITOR_FONT_DEFAULTS.fontSize:o.clamp(pe,6,100)}compute(le,pe,Ce){return le.fontInfo.fontSize}}class W extends C{constructor(){super(52,\"fontWeight\",e.EDITOR_FONT_DEFAULTS.fontWeight,{anyOf:[{type:\"number\",minimum:W.MINIMUM_VALUE,maximum:W.MAXIMUM_VALUE,errorMessage:f.localize(26,null)},{type:\"string\",pattern:\"^(normal|bold|1000|[1-9][0-9]{0,2})$\"},{enum:W.SUGGESTION_VALUES}],default:e.EDITOR_FONT_DEFAULTS.fontWeight,description:f.localize(27,null)})}validate(le){return le===\"normal\"||le===\"bold\"?le:String(r.clampedInt(le,e.EDITOR_FONT_DEFAULTS.fontWeight,W.MINIMUM_VALUE,W.MAXIMUM_VALUE))}}W.SUGGESTION_VALUES=[\"normal\",\"bold\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"],W.MINIMUM_VALUE=1,W.MAXIMUM_VALUE=1e3;class U extends C{constructor(){const le={multiple:\"peek\",multipleDefinitions:\"peek\",multipleTypeDefinitions:\"peek\",multipleDeclarations:\"peek\",multipleImplementations:\"peek\",multipleReferences:\"peek\",alternativeDefinitionCommand:\"editor.action.goToReferences\",alternativeTypeDefinitionCommand:\"editor.action.goToReferences\",alternativeDeclarationCommand:\"editor.action.goToReferences\",alternativeImplementationCommand:\"\",alternativeReferenceCommand:\"\"},pe={type:\"string\",enum:[\"peek\",\"gotoAndPeek\",\"goto\"],default:le.multiple,enumDescriptions:[f.localize(28,null),f.localize(29,null),f.localize(30,null)]},Ce=[\"\",\"editor.action.referenceSearch.trigger\",\"editor.action.goToReferences\",\"editor.action.peekImplementation\",\"editor.action.goToImplementation\",\"editor.action.peekTypeDefinition\",\"editor.action.goToTypeDefinition\",\"editor.action.peekDeclaration\",\"editor.action.revealDeclaration\",\"editor.action.peekDefinition\",\"editor.action.revealDefinitionAside\",\"editor.action.revealDefinition\"];super(57,\"gotoLocation\",le,{\"editor.gotoLocation.multiple\":{deprecationMessage:f.localize(31,null)},\"editor.gotoLocation.multipleDefinitions\":Object.assign({description:f.localize(32,null)},pe),\"editor.gotoLocation.multipleTypeDefinitions\":Object.assign({description:f.localize(33,null)},pe),\"editor.gotoLocation.multipleDeclarations\":Object.assign({description:f.localize(34,null)},pe),\"editor.gotoLocation.multipleImplementations\":Object.assign({description:f.localize(35,null)},pe),\"editor.gotoLocation.multipleReferences\":Object.assign({description:f.localize(36,null)},pe),\"editor.gotoLocation.alternativeDefinitionCommand\":{type:\"string\",default:le.alternativeDefinitionCommand,enum:Ce,description:f.localize(37,null)},\"editor.gotoLocation.alternativeTypeDefinitionCommand\":{type:\"string\",default:le.alternativeTypeDefinitionCommand,enum:Ce,description:f.localize(38,null)},\"editor.gotoLocation.alternativeDeclarationCommand\":{type:\"string\",default:le.alternativeDeclarationCommand,enum:Ce,description:f.localize(39,null)},\"editor.gotoLocation.alternativeImplementationCommand\":{type:\"string\",default:le.alternativeImplementationCommand,enum:Ce,description:f.localize(40,null)},\"editor.gotoLocation.alternativeReferenceCommand\":{type:\"string\",default:le.alternativeReferenceCommand,enum:Ce,description:f.localize(41,null)}})}validate(le){var pe,Ce,be,Ie,Ne;if(!le||typeof le!=\"object\")return this.defaultValue;const Re=le;return{multiple:l(Re.multiple,this.defaultValue.multiple,[\"peek\",\"gotoAndPeek\",\"goto\"]),multipleDefinitions:(pe=Re.multipleDefinitions)!==null&&pe!==void 0?pe:l(Re.multipleDefinitions,\"peek\",[\"peek\",\"gotoAndPeek\",\"goto\"]),multipleTypeDefinitions:(Ce=Re.multipleTypeDefinitions)!==null&&Ce!==void 0?Ce:l(Re.multipleTypeDefinitions,\"peek\",[\"peek\",\"gotoAndPeek\",\"goto\"]),multipleDeclarations:(be=Re.multipleDeclarations)!==null&&be!==void 0?be:l(Re.multipleDeclarations,\"peek\",[\"peek\",\"gotoAndPeek\",\"goto\"]),multipleImplementations:(Ie=Re.multipleImplementations)!==null&&Ie!==void 0?Ie:l(Re.multipleImplementations,\"peek\",[\"peek\",\"gotoAndPeek\",\"goto\"]),multipleReferences:(Ne=Re.multipleReferences)!==null&&Ne!==void 0?Ne:l(Re.multipleReferences,\"peek\",[\"peek\",\"gotoAndPeek\",\"goto\"]),alternativeDefinitionCommand:d.string(Re.alternativeDefinitionCommand,this.defaultValue.alternativeDefinitionCommand),alternativeTypeDefinitionCommand:d.string(Re.alternativeTypeDefinitionCommand,this.defaultValue.alternativeTypeDefinitionCommand),alternativeDeclarationCommand:d.string(Re.alternativeDeclarationCommand,this.defaultValue.alternativeDeclarationCommand),alternativeImplementationCommand:d.string(Re.alternativeImplementationCommand,this.defaultValue.alternativeImplementationCommand),alternativeReferenceCommand:d.string(Re.alternativeReferenceCommand,this.defaultValue.alternativeReferenceCommand)}}}class j extends C{constructor(){const le={enabled:!0,delay:300,sticky:!0,above:!0};super(59,\"hover\",le,{\"editor.hover.enabled\":{type:\"boolean\",default:le.enabled,description:f.localize(42,null)},\"editor.hover.delay\":{type:\"number\",default:le.delay,minimum:0,maximum:1e4,description:f.localize(43,null)},\"editor.hover.sticky\":{type:\"boolean\",default:le.sticky,description:f.localize(44,null)},\"editor.hover.above\":{type:\"boolean\",default:le.above,description:f.localize(45,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),delay:r.clampedInt(pe.delay,this.defaultValue.delay,0,1e4),sticky:a(pe.sticky,this.defaultValue.sticky),above:a(pe.above,this.defaultValue.above)}}}class R extends n{constructor(){super(142)}compute(le,pe,Ce){return R.computeLayout(pe,{memory:le.memory,outerWidth:le.outerWidth,outerHeight:le.outerHeight,isDominatedByLongLines:le.isDominatedByLongLines,lineHeight:le.fontInfo.lineHeight,viewLineCount:le.viewLineCount,lineNumbersDigitCount:le.lineNumbersDigitCount,typicalHalfwidthCharacterWidth:le.fontInfo.typicalHalfwidthCharacterWidth,maxDigitWidth:le.fontInfo.maxDigitWidth,pixelRatio:le.pixelRatio,glyphMarginDecorationLaneCount:le.glyphMarginDecorationLaneCount})}static computeContainedMinimapLineCount(le){const pe=le.height/le.lineHeight,Ce=Math.floor(le.paddingTop/le.lineHeight);let be=Math.floor(le.paddingBottom/le.lineHeight);le.scrollBeyondLastLine&&(be=Math.max(be,pe-1));const Ie=(Ce+le.viewLineCount+be)/(le.pixelRatio*le.height),Ne=Math.floor(le.viewLineCount/Ie);return{typicalViewportLineCount:pe,extraLinesBeforeFirstLine:Ce,extraLinesBeyondLastLine:be,desiredRatio:Ie,minimapLineCount:Ne}}static _computeMinimapLayout(le,pe){const Ce=le.outerWidth,be=le.outerHeight,Ie=le.pixelRatio;if(!le.minimap.enabled)return{renderMinimap:0,minimapLeft:0,minimapWidth:0,minimapHeightIsEditorHeight:!1,minimapIsSampling:!1,minimapScale:1,minimapLineHeight:1,minimapCanvasInnerWidth:0,minimapCanvasInnerHeight:Math.floor(Ie*be),minimapCanvasOuterWidth:0,minimapCanvasOuterHeight:be};const Ne=pe.stableMinimapLayoutInput,Re=Ne&&le.outerHeight===Ne.outerHeight&&le.lineHeight===Ne.lineHeight&&le.typicalHalfwidthCharacterWidth===Ne.typicalHalfwidthCharacterWidth&&le.pixelRatio===Ne.pixelRatio&&le.scrollBeyondLastLine===Ne.scrollBeyondLastLine&&le.paddingTop===Ne.paddingTop&&le.paddingBottom===Ne.paddingBottom&&le.minimap.enabled===Ne.minimap.enabled&&le.minimap.side===Ne.minimap.side&&le.minimap.size===Ne.minimap.size&&le.minimap.showSlider===Ne.minimap.showSlider&&le.minimap.renderCharacters===Ne.minimap.renderCharacters&&le.minimap.maxColumn===Ne.minimap.maxColumn&&le.minimap.scale===Ne.minimap.scale&&le.verticalScrollbarWidth===Ne.verticalScrollbarWidth&&le.isViewportWrapping===Ne.isViewportWrapping,Ve=le.lineHeight,ze=le.typicalHalfwidthCharacterWidth,We=le.scrollBeyondLastLine,qe=le.minimap.renderCharacters;let Oe=Ie>=2?Math.round(le.minimap.scale*2):le.minimap.scale;const Ge=le.minimap.maxColumn,Qe=le.minimap.size,st=le.minimap.side,nt=le.verticalScrollbarWidth,ot=le.viewLineCount,ct=le.remainingWidth,lt=le.isViewportWrapping,gt=qe?2:3;let at=Math.floor(Ie*be);const ht=at/Ie;let Be=!1,Te=!1,xe=gt*Oe,He=Oe/Ie,Ye=1;if(Qe===\"fill\"||Qe===\"fit\"){const{typicalViewportLineCount:$e,extraLinesBeforeFirstLine:et,extraLinesBeyondLastLine:tt,desiredRatio:ut,minimapLineCount:it}=R.computeContainedMinimapLineCount({viewLineCount:ot,scrollBeyondLastLine:We,paddingTop:le.paddingTop,paddingBottom:le.paddingBottom,height:be,lineHeight:Ve,pixelRatio:Ie});if(ot/it>1)Be=!0,Te=!0,Oe=1,xe=1,He=Oe/Ie;else{let dt=!1,ft=Oe+1;if(Qe===\"fit\"){const St=Math.ceil((et+ot+tt)*xe);lt&&Re&&ct<=pe.stableFitRemainingWidth?(dt=!0,ft=pe.stableFitMaxMinimapScale):dt=St>at}if(Qe===\"fill\"||dt){Be=!0;const St=Oe;xe=Math.min(Ve*Ie,Math.max(1,Math.floor(1/ut))),lt&&Re&&ct<=pe.stableFitRemainingWidth&&(ft=pe.stableFitMaxMinimapScale),Oe=Math.min(ft,Math.max(1,Math.floor(xe/gt))),Oe>St&&(Ye=Math.min(2,Oe/St)),He=Oe/Ie/Ye,at=Math.ceil(Math.max($e,et+ot+tt)*xe),lt?(pe.stableMinimapLayoutInput=le,pe.stableFitRemainingWidth=ct,pe.stableFitMaxMinimapScale=Oe):(pe.stableMinimapLayoutInput=null,pe.stableFitRemainingWidth=0)}}}const Ze=Math.floor(Ge*He),Xe=Math.min(Ze,Math.max(0,Math.floor((ct-nt-2)*He/(ze+He)))+e.MINIMAP_GUTTER_WIDTH);let je=Math.floor(Ie*Xe);const Ae=je/Ie;je=Math.floor(je*Ye);const Ue=qe?1:2,Ke=st===\"left\"?0:Ce-Xe-nt;return{renderMinimap:Ue,minimapLeft:Ke,minimapWidth:Xe,minimapHeightIsEditorHeight:Be,minimapIsSampling:Te,minimapScale:Oe,minimapLineHeight:xe,minimapCanvasInnerWidth:je,minimapCanvasInnerHeight:at,minimapCanvasOuterWidth:Ae,minimapCanvasOuterHeight:ht}}static computeLayout(le,pe){const Ce=pe.outerWidth|0,be=pe.outerHeight|0,Ie=pe.lineHeight|0,Ne=pe.lineNumbersDigitCount|0,Re=pe.typicalHalfwidthCharacterWidth,Ve=pe.maxDigitWidth,ze=pe.pixelRatio,We=pe.viewLineCount,qe=le.get(134),Oe=qe===\"inherit\"?le.get(133):qe,Ge=Oe===\"inherit\"?le.get(129):Oe,Qe=le.get(132),st=pe.isDominatedByLongLines,nt=le.get(56),ot=le.get(66).renderType!==0,ct=le.get(67),lt=le.get(103),gt=le.get(82),at=le.get(71),ht=le.get(101),Be=ht.verticalScrollbarSize,Te=ht.verticalHasArrows,xe=ht.arrowSize,He=ht.horizontalScrollbarSize,Ye=le.get(42),Ze=le.get(108)!==\"never\";let Xe=le.get(64);Ye&&Ze&&(Xe+=16);let je=0;if(ot){const wt=Math.max(Ne,ct);je=Math.round(wt*Ve)}let Ae=0;nt&&(Ae=Ie*pe.glyphMarginDecorationLaneCount);let Ue=0,Ke=Ue+Ae,$e=Ke+je,et=$e+Xe;const tt=Ce-Ae-je-Xe;let ut=!1,it=!1,rt=-1;Oe===\"inherit\"&&st?(ut=!0,it=!0):Ge===\"on\"||Ge===\"bounded\"?it=!0:Ge===\"wordWrapColumn\"&&(rt=Qe);const dt=R._computeMinimapLayout({outerWidth:Ce,outerHeight:be,lineHeight:Ie,typicalHalfwidthCharacterWidth:Re,pixelRatio:ze,scrollBeyondLastLine:lt,paddingTop:gt.top,paddingBottom:gt.bottom,minimap:at,verticalScrollbarWidth:Be,viewLineCount:We,remainingWidth:tt,isViewportWrapping:it},pe.memory||new g);dt.renderMinimap!==0&&dt.minimapLeft===0&&(Ue+=dt.minimapWidth,Ke+=dt.minimapWidth,$e+=dt.minimapWidth,et+=dt.minimapWidth);const ft=tt-dt.minimapWidth,St=Math.max(1,Math.floor((ft-Be-2)/Re)),mt=Te?xe:0;return it&&(rt=Math.max(1,St),Ge===\"bounded\"&&(rt=Math.min(rt,Qe))),{width:Ce,height:be,glyphMarginLeft:Ue,glyphMarginWidth:Ae,glyphMarginDecorationLaneCount:pe.glyphMarginDecorationLaneCount,lineNumbersLeft:Ke,lineNumbersWidth:je,decorationsLeft:$e,decorationsWidth:Xe,contentLeft:et,contentWidth:ft,minimap:dt,viewportColumn:St,isWordWrapMinified:ut,isViewportWrapping:it,wrappingColumn:rt,verticalScrollbarWidth:Be,horizontalScrollbarHeight:He,overviewRuler:{top:mt,width:Be,height:be-2*mt,right:0}}}}e.EditorLayoutInfoComputer=R;class K extends C{constructor(){super(136,\"wrappingStrategy\",\"simple\",{\"editor.wrappingStrategy\":{enumDescriptions:[f.localize(46,null),f.localize(47,null)],type:\"string\",enum:[\"simple\",\"advanced\"],default:\"simple\",description:f.localize(48,null)}})}validate(le){return l(le,\"simple\",[\"simple\",\"advanced\"])}compute(le,pe,Ce){return pe.get(2)===2?\"advanced\":Ce}}class G extends C{constructor(){const le={enabled:!0};super(63,\"lightbulb\",le,{\"editor.lightbulb.enabled\":{type:\"boolean\",default:le.enabled,description:f.localize(49,null)}})}validate(le){return!le||typeof le!=\"object\"?this.defaultValue:{enabled:a(le.enabled,this.defaultValue.enabled)}}}class Z extends C{constructor(){const le={enabled:!1,maxLineCount:5,defaultModel:\"outlineModel\",scrollWithEditor:!0};super(113,\"stickyScroll\",le,{\"editor.stickyScroll.enabled\":{type:\"boolean\",default:le.enabled,description:f.localize(50,null)},\"editor.stickyScroll.maxLineCount\":{type:\"number\",default:le.maxLineCount,minimum:1,maximum:10,description:f.localize(51,null)},\"editor.stickyScroll.defaultModel\":{type:\"string\",enum:[\"outlineModel\",\"foldingProviderModel\",\"indentationModel\"],default:le.defaultModel,description:f.localize(52,null)},\"editor.stickyScroll.scrollWithEditor\":{type:\"boolean\",default:le.scrollWithEditor,description:f.localize(53,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),maxLineCount:r.clampedInt(pe.maxLineCount,this.defaultValue.maxLineCount,1,10),defaultModel:l(pe.defaultModel,this.defaultValue.defaultModel,[\"outlineModel\",\"foldingProviderModel\",\"indentationModel\"]),scrollWithEditor:a(pe.scrollWithEditor,this.defaultValue.scrollWithEditor)}}}class J extends C{constructor(){const le={enabled:\"on\",fontSize:0,fontFamily:\"\",padding:!1};super(138,\"inlayHints\",le,{\"editor.inlayHints.enabled\":{type:\"string\",default:le.enabled,description:f.localize(54,null),enum:[\"on\",\"onUnlessPressed\",\"offUnlessPressed\",\"off\"],markdownEnumDescriptions:[f.localize(55,null),f.localize(56,null,y.isMacintosh?\"Ctrl+Option\":\"Ctrl+Alt\"),f.localize(57,null,y.isMacintosh?\"Ctrl+Option\":\"Ctrl+Alt\"),f.localize(58,null)]},\"editor.inlayHints.fontSize\":{type:\"number\",default:le.fontSize,markdownDescription:f.localize(59,null,\"`#editor.fontSize#`\",\"`5`\")},\"editor.inlayHints.fontFamily\":{type:\"string\",default:le.fontFamily,markdownDescription:f.localize(60,null,\"`#editor.fontFamily#`\")},\"editor.inlayHints.padding\":{type:\"boolean\",default:le.padding,description:f.localize(61,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return typeof pe.enabled==\"boolean\"&&(pe.enabled=pe.enabled?\"on\":\"off\"),{enabled:l(pe.enabled,this.defaultValue.enabled,[\"on\",\"off\",\"offUnlessPressed\",\"onUnlessPressed\"]),fontSize:r.clampedInt(pe.fontSize,this.defaultValue.fontSize,0,100),fontFamily:d.string(pe.fontFamily,this.defaultValue.fontFamily),padding:a(pe.padding,this.defaultValue.padding)}}}class X extends C{constructor(){super(64,\"lineDecorationsWidth\",10)}validate(le){return typeof le==\"string\"&&/^\\d+(\\.\\d+)?ch$/.test(le)?-parseFloat(le.substring(0,le.length-2)):r.clampedInt(le,this.defaultValue,0,1e3)}compute(le,pe,Ce){return Ce<0?r.clampedInt(-Ce*le.fontInfo.typicalHalfwidthCharacterWidth,this.defaultValue,0,1e3):Ce}}class H extends o{constructor(){super(65,\"lineHeight\",e.EDITOR_FONT_DEFAULTS.lineHeight,le=>o.clamp(le,0,150),{markdownDescription:f.localize(62,null)})}compute(le,pe,Ce){return le.fontInfo.lineHeight}}class B extends C{constructor(){const le={enabled:!0,size:\"proportional\",side:\"right\",showSlider:\"mouseover\",autohide:!1,renderCharacters:!0,maxColumn:120,scale:1};super(71,\"minimap\",le,{\"editor.minimap.enabled\":{type:\"boolean\",default:le.enabled,description:f.localize(63,null)},\"editor.minimap.autohide\":{type:\"boolean\",default:le.autohide,description:f.localize(64,null)},\"editor.minimap.size\":{type:\"string\",enum:[\"proportional\",\"fill\",\"fit\"],enumDescriptions:[f.localize(65,null),f.localize(66,null),f.localize(67,null)],default:le.size,description:f.localize(68,null)},\"editor.minimap.side\":{type:\"string\",enum:[\"left\",\"right\"],default:le.side,description:f.localize(69,null)},\"editor.minimap.showSlider\":{type:\"string\",enum:[\"always\",\"mouseover\"],default:le.showSlider,description:f.localize(70,null)},\"editor.minimap.scale\":{type:\"number\",default:le.scale,minimum:1,maximum:3,enum:[1,2,3],description:f.localize(71,null)},\"editor.minimap.renderCharacters\":{type:\"boolean\",default:le.renderCharacters,description:f.localize(72,null)},\"editor.minimap.maxColumn\":{type:\"number\",default:le.maxColumn,description:f.localize(73,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),autohide:a(pe.autohide,this.defaultValue.autohide),size:l(pe.size,this.defaultValue.size,[\"proportional\",\"fill\",\"fit\"]),side:l(pe.side,this.defaultValue.side,[\"right\",\"left\"]),showSlider:l(pe.showSlider,this.defaultValue.showSlider,[\"always\",\"mouseover\"]),renderCharacters:a(pe.renderCharacters,this.defaultValue.renderCharacters),scale:r.clampedInt(pe.scale,1,1,3),maxColumn:r.clampedInt(pe.maxColumn,this.defaultValue.maxColumn,1,1e4)}}}function V(me){return me===\"ctrlCmd\"?y.isMacintosh?\"metaKey\":\"ctrlKey\":\"altKey\"}class Y extends C{constructor(){super(82,\"padding\",{top:0,bottom:0},{\"editor.padding.top\":{type:\"number\",default:0,minimum:0,maximum:1e3,description:f.localize(74,null)},\"editor.padding.bottom\":{type:\"number\",default:0,minimum:0,maximum:1e3,description:f.localize(75,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{top:r.clampedInt(pe.top,0,0,1e3),bottom:r.clampedInt(pe.bottom,0,0,1e3)}}}class ie extends C{constructor(){const le={enabled:!0,cycle:!0};super(84,\"parameterHints\",le,{\"editor.parameterHints.enabled\":{type:\"boolean\",default:le.enabled,description:f.localize(76,null)},\"editor.parameterHints.cycle\":{type:\"boolean\",default:le.cycle,description:f.localize(77,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),cycle:a(pe.cycle,this.defaultValue.cycle)}}}class ae extends n{constructor(){super(140)}compute(le,pe,Ce){return le.pixelRatio}}class ce extends C{constructor(){const le={other:\"on\",comments:\"off\",strings:\"off\"},pe=[{type:\"boolean\"},{type:\"string\",enum:[\"on\",\"inline\",\"off\"],enumDescriptions:[f.localize(78,null),f.localize(79,null),f.localize(80,null)]}];super(87,\"quickSuggestions\",le,{type:\"object\",additionalProperties:!1,properties:{strings:{anyOf:pe,default:le.strings,description:f.localize(81,null)},comments:{anyOf:pe,default:le.comments,description:f.localize(82,null)},other:{anyOf:pe,default:le.other,description:f.localize(83,null)}},default:le,markdownDescription:f.localize(84,null,\"#editor.suggestOnTriggerCharacters#\")}),this.defaultValue=le}validate(le){if(typeof le==\"boolean\"){const ze=le?\"on\":\"off\";return{comments:ze,strings:ze,other:ze}}if(!le||typeof le!=\"object\")return this.defaultValue;const{other:pe,comments:Ce,strings:be}=le,Ie=[\"on\",\"inline\",\"off\"];let Ne,Re,Ve;return typeof pe==\"boolean\"?Ne=pe?\"on\":\"off\":Ne=l(pe,this.defaultValue.other,Ie),typeof Ce==\"boolean\"?Re=Ce?\"on\":\"off\":Re=l(Ce,this.defaultValue.comments,Ie),typeof be==\"boolean\"?Ve=be?\"on\":\"off\":Ve=l(be,this.defaultValue.strings,Ie),{other:Ne,comments:Re,strings:Ve}}}class de extends C{constructor(){super(66,\"lineNumbers\",{renderType:1,renderFn:null},{type:\"string\",enum:[\"off\",\"on\",\"relative\",\"interval\"],enumDescriptions:[f.localize(85,null),f.localize(86,null),f.localize(87,null),f.localize(88,null)],default:\"on\",description:f.localize(89,null)})}validate(le){let pe=this.defaultValue.renderType,Ce=this.defaultValue.renderFn;return typeof le<\"u\"&&(typeof le==\"function\"?(pe=4,Ce=le):le===\"interval\"?pe=3:le===\"relative\"?pe=2:le===\"on\"?pe=1:pe=0),{renderType:pe,renderFn:Ce}}}function he(me){const le=me.get(96);return le===\"editable\"?me.get(89):le!==\"on\"}e.filterValidationDecorations=he;class ue extends C{constructor(){const le=[],pe={type:\"number\",description:f.localize(90,null)};super(100,\"rulers\",le,{type:\"array\",items:{anyOf:[pe,{type:[\"object\"],properties:{column:pe,color:{type:\"string\",description:f.localize(91,null),format:\"color-hex\"}}}]},default:le,description:f.localize(92,null)})}validate(le){if(Array.isArray(le)){const pe=[];for(const Ce of le)if(typeof Ce==\"number\")pe.push({column:r.clampedInt(Ce,0,0,1e4),color:null});else if(Ce&&typeof Ce==\"object\"){const be=Ce;pe.push({column:r.clampedInt(be.column,0,0,1e4),color:be.color})}return pe.sort((Ce,be)=>Ce.column-be.column),pe}return this.defaultValue}}class te extends C{constructor(){super(90,\"readOnlyMessage\",void 0)}validate(le){return!le||typeof le!=\"object\"?this.defaultValue:le}}function q(me,le){if(typeof me!=\"string\")return le;switch(me){case\"hidden\":return 2;case\"visible\":return 3;default:return 1}}class z extends C{constructor(){const le={vertical:1,horizontal:1,arrowSize:11,useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,horizontalScrollbarSize:12,horizontalSliderSize:12,verticalScrollbarSize:14,verticalSliderSize:14,handleMouseWheel:!0,alwaysConsumeMouseWheel:!0,scrollByPage:!1};super(101,\"scrollbar\",le,{\"editor.scrollbar.vertical\":{type:\"string\",enum:[\"auto\",\"visible\",\"hidden\"],enumDescriptions:[f.localize(93,null),f.localize(94,null),f.localize(95,null)],default:\"auto\",description:f.localize(96,null)},\"editor.scrollbar.horizontal\":{type:\"string\",enum:[\"auto\",\"visible\",\"hidden\"],enumDescriptions:[f.localize(97,null),f.localize(98,null),f.localize(99,null)],default:\"auto\",description:f.localize(100,null)},\"editor.scrollbar.verticalScrollbarSize\":{type:\"number\",default:le.verticalScrollbarSize,description:f.localize(101,null)},\"editor.scrollbar.horizontalScrollbarSize\":{type:\"number\",default:le.horizontalScrollbarSize,description:f.localize(102,null)},\"editor.scrollbar.scrollByPage\":{type:\"boolean\",default:le.scrollByPage,description:f.localize(103,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le,Ce=r.clampedInt(pe.horizontalScrollbarSize,this.defaultValue.horizontalScrollbarSize,0,1e3),be=r.clampedInt(pe.verticalScrollbarSize,this.defaultValue.verticalScrollbarSize,0,1e3);return{arrowSize:r.clampedInt(pe.arrowSize,this.defaultValue.arrowSize,0,1e3),vertical:q(pe.vertical,this.defaultValue.vertical),horizontal:q(pe.horizontal,this.defaultValue.horizontal),useShadows:a(pe.useShadows,this.defaultValue.useShadows),verticalHasArrows:a(pe.verticalHasArrows,this.defaultValue.verticalHasArrows),horizontalHasArrows:a(pe.horizontalHasArrows,this.defaultValue.horizontalHasArrows),handleMouseWheel:a(pe.handleMouseWheel,this.defaultValue.handleMouseWheel),alwaysConsumeMouseWheel:a(pe.alwaysConsumeMouseWheel,this.defaultValue.alwaysConsumeMouseWheel),horizontalScrollbarSize:Ce,horizontalSliderSize:r.clampedInt(pe.horizontalSliderSize,Ce,0,1e3),verticalScrollbarSize:be,verticalSliderSize:r.clampedInt(pe.verticalSliderSize,be,0,1e3),scrollByPage:a(pe.scrollByPage,this.defaultValue.scrollByPage)}}}e.inUntrustedWorkspace=\"inUntrustedWorkspace\",e.unicodeHighlightConfigKeys={allowedCharacters:\"editor.unicodeHighlight.allowedCharacters\",invisibleCharacters:\"editor.unicodeHighlight.invisibleCharacters\",nonBasicASCII:\"editor.unicodeHighlight.nonBasicASCII\",ambiguousCharacters:\"editor.unicodeHighlight.ambiguousCharacters\",includeComments:\"editor.unicodeHighlight.includeComments\",includeStrings:\"editor.unicodeHighlight.includeStrings\",allowedLocales:\"editor.unicodeHighlight.allowedLocales\"};class ee extends C{constructor(){const le={nonBasicASCII:e.inUntrustedWorkspace,invisibleCharacters:!0,ambiguousCharacters:!0,includeComments:e.inUntrustedWorkspace,includeStrings:!0,allowedCharacters:{},allowedLocales:{_os:!0,_vscode:!0}};super(123,\"unicodeHighlight\",le,{[e.unicodeHighlightConfigKeys.nonBasicASCII]:{restricted:!0,type:[\"boolean\",\"string\"],enum:[!0,!1,e.inUntrustedWorkspace],default:le.nonBasicASCII,description:f.localize(104,null)},[e.unicodeHighlightConfigKeys.invisibleCharacters]:{restricted:!0,type:\"boolean\",default:le.invisibleCharacters,description:f.localize(105,null)},[e.unicodeHighlightConfigKeys.ambiguousCharacters]:{restricted:!0,type:\"boolean\",default:le.ambiguousCharacters,description:f.localize(106,null)},[e.unicodeHighlightConfigKeys.includeComments]:{restricted:!0,type:[\"boolean\",\"string\"],enum:[!0,!1,e.inUntrustedWorkspace],default:le.includeComments,description:f.localize(107,null)},[e.unicodeHighlightConfigKeys.includeStrings]:{restricted:!0,type:[\"boolean\",\"string\"],enum:[!0,!1,e.inUntrustedWorkspace],default:le.includeStrings,description:f.localize(108,null)},[e.unicodeHighlightConfigKeys.allowedCharacters]:{restricted:!0,type:\"object\",default:le.allowedCharacters,description:f.localize(109,null),additionalProperties:{type:\"boolean\"}},[e.unicodeHighlightConfigKeys.allowedLocales]:{restricted:!0,type:\"object\",additionalProperties:{type:\"boolean\"},default:le.allowedLocales,description:f.localize(110,null)}})}applyUpdate(le,pe){let Ce=!1;pe.allowedCharacters&&le&&(k.equals(le.allowedCharacters,pe.allowedCharacters)||(le=Object.assign(Object.assign({},le),{allowedCharacters:pe.allowedCharacters}),Ce=!0)),pe.allowedLocales&&le&&(k.equals(le.allowedLocales,pe.allowedLocales)||(le=Object.assign(Object.assign({},le),{allowedLocales:pe.allowedLocales}),Ce=!0));const be=super.applyUpdate(le,pe);return Ce?new s(be.newValue,!0):be}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{nonBasicASCII:ge(pe.nonBasicASCII,e.inUntrustedWorkspace,[!0,!1,e.inUntrustedWorkspace]),invisibleCharacters:a(pe.invisibleCharacters,this.defaultValue.invisibleCharacters),ambiguousCharacters:a(pe.ambiguousCharacters,this.defaultValue.ambiguousCharacters),includeComments:ge(pe.includeComments,e.inUntrustedWorkspace,[!0,!1,e.inUntrustedWorkspace]),includeStrings:ge(pe.includeStrings,e.inUntrustedWorkspace,[!0,!1,e.inUntrustedWorkspace]),allowedCharacters:this.validateBooleanMap(le.allowedCharacters,this.defaultValue.allowedCharacters),allowedLocales:this.validateBooleanMap(le.allowedLocales,this.defaultValue.allowedLocales)}}validateBooleanMap(le,pe){if(typeof le!=\"object\"||!le)return pe;const Ce={};for(const[be,Ie]of Object.entries(le))Ie===!0&&(Ce[be]=!0);return Ce}}class $ extends C{constructor(){const le={enabled:!0,mode:\"subwordSmart\",showToolbar:\"onHover\",suppressSuggestions:!1,keepOnBlur:!1};super(61,\"inlineSuggest\",le,{\"editor.inlineSuggest.enabled\":{type:\"boolean\",default:le.enabled,description:f.localize(111,null)},\"editor.inlineSuggest.showToolbar\":{type:\"string\",default:le.showToolbar,enum:[\"always\",\"onHover\"],enumDescriptions:[f.localize(112,null),f.localize(113,null)],description:f.localize(114,null)},\"editor.inlineSuggest.suppressSuggestions\":{type:\"boolean\",default:le.suppressSuggestions,description:f.localize(115,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),mode:l(pe.mode,this.defaultValue.mode,[\"prefix\",\"subword\",\"subwordSmart\"]),showToolbar:l(pe.showToolbar,this.defaultValue.showToolbar,[\"always\",\"onHover\"]),suppressSuggestions:a(pe.suppressSuggestions,this.defaultValue.suppressSuggestions),keepOnBlur:a(pe.keepOnBlur,this.defaultValue.keepOnBlur)}}}class re extends C{constructor(){const le={enabled:D.EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions.enabled,independentColorPoolPerBracketType:D.EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions.independentColorPoolPerBracketType};super(14,\"bracketPairColorization\",le,{\"editor.bracketPairColorization.enabled\":{type:\"boolean\",default:le.enabled,markdownDescription:f.localize(116,null,\"`#workbench.colorCustomizations#`\")},\"editor.bracketPairColorization.independentColorPoolPerBracketType\":{type:\"boolean\",default:le.independentColorPoolPerBracketType,description:f.localize(117,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),independentColorPoolPerBracketType:a(pe.independentColorPoolPerBracketType,this.defaultValue.independentColorPoolPerBracketType)}}}class oe extends C{constructor(){const le={bracketPairs:!1,bracketPairsHorizontal:\"active\",highlightActiveBracketPair:!0,indentation:!0,highlightActiveIndentation:!0};super(15,\"guides\",le,{\"editor.guides.bracketPairs\":{type:[\"boolean\",\"string\"],enum:[!0,\"active\",!1],enumDescriptions:[f.localize(118,null),f.localize(119,null),f.localize(120,null)],default:le.bracketPairs,description:f.localize(121,null)},\"editor.guides.bracketPairsHorizontal\":{type:[\"boolean\",\"string\"],enum:[!0,\"active\",!1],enumDescriptions:[f.localize(122,null),f.localize(123,null),f.localize(124,null)],default:le.bracketPairsHorizontal,description:f.localize(125,null)},\"editor.guides.highlightActiveBracketPair\":{type:\"boolean\",default:le.highlightActiveBracketPair,description:f.localize(126,null)},\"editor.guides.indentation\":{type:\"boolean\",default:le.indentation,description:f.localize(127,null)},\"editor.guides.highlightActiveIndentation\":{type:[\"boolean\",\"string\"],enum:[!0,\"always\",!1],enumDescriptions:[f.localize(128,null),f.localize(129,null),f.localize(130,null)],default:le.highlightActiveIndentation,description:f.localize(131,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{bracketPairs:ge(pe.bracketPairs,this.defaultValue.bracketPairs,[!0,!1,\"active\"]),bracketPairsHorizontal:ge(pe.bracketPairsHorizontal,this.defaultValue.bracketPairsHorizontal,[!0,!1,\"active\"]),highlightActiveBracketPair:a(pe.highlightActiveBracketPair,this.defaultValue.highlightActiveBracketPair),indentation:a(pe.indentation,this.defaultValue.indentation),highlightActiveIndentation:ge(pe.highlightActiveIndentation,this.defaultValue.highlightActiveIndentation,[!0,!1,\"always\"])}}}function ge(me,le,pe){const Ce=pe.indexOf(me);return Ce===-1?le:pe[Ce]}class ve extends C{constructor(){const le={insertMode:\"insert\",filterGraceful:!0,snippetsPreventQuickSuggestions:!1,localityBonus:!1,shareSuggestSelections:!1,selectionMode:\"always\",showIcons:!0,showStatusBar:!1,preview:!1,previewMode:\"subwordSmart\",showInlineDetails:!0,showMethods:!0,showFunctions:!0,showConstructors:!0,showDeprecated:!0,matchOnWordStartOnly:!0,showFields:!0,showVariables:!0,showClasses:!0,showStructs:!0,showInterfaces:!0,showModules:!0,showProperties:!0,showEvents:!0,showOperators:!0,showUnits:!0,showValues:!0,showConstants:!0,showEnums:!0,showEnumMembers:!0,showKeywords:!0,showWords:!0,showColors:!0,showFiles:!0,showReferences:!0,showFolders:!0,showTypeParameters:!0,showSnippets:!0,showUsers:!0,showIssues:!0};super(116,\"suggest\",le,{\"editor.suggest.insertMode\":{type:\"string\",enum:[\"insert\",\"replace\"],enumDescriptions:[f.localize(132,null),f.localize(133,null)],default:le.insertMode,description:f.localize(134,null)},\"editor.suggest.filterGraceful\":{type:\"boolean\",default:le.filterGraceful,description:f.localize(135,null)},\"editor.suggest.localityBonus\":{type:\"boolean\",default:le.localityBonus,description:f.localize(136,null)},\"editor.suggest.shareSuggestSelections\":{type:\"boolean\",default:le.shareSuggestSelections,markdownDescription:f.localize(137,null)},\"editor.suggest.selectionMode\":{type:\"string\",enum:[\"always\",\"never\",\"whenTriggerCharacter\",\"whenQuickSuggestion\"],enumDescriptions:[f.localize(138,null),f.localize(139,null),f.localize(140,null),f.localize(141,null)],default:le.selectionMode,markdownDescription:f.localize(142,null)},\"editor.suggest.snippetsPreventQuickSuggestions\":{type:\"boolean\",default:le.snippetsPreventQuickSuggestions,description:f.localize(143,null)},\"editor.suggest.showIcons\":{type:\"boolean\",default:le.showIcons,description:f.localize(144,null)},\"editor.suggest.showStatusBar\":{type:\"boolean\",default:le.showStatusBar,description:f.localize(145,null)},\"editor.suggest.preview\":{type:\"boolean\",default:le.preview,description:f.localize(146,null)},\"editor.suggest.showInlineDetails\":{type:\"boolean\",default:le.showInlineDetails,description:f.localize(147,null)},\"editor.suggest.maxVisibleSuggestions\":{type:\"number\",deprecationMessage:f.localize(148,null)},\"editor.suggest.filteredTypes\":{type:\"object\",deprecationMessage:f.localize(149,null)},\"editor.suggest.showMethods\":{type:\"boolean\",default:!0,markdownDescription:f.localize(150,null)},\"editor.suggest.showFunctions\":{type:\"boolean\",default:!0,markdownDescription:f.localize(151,null)},\"editor.suggest.showConstructors\":{type:\"boolean\",default:!0,markdownDescription:f.localize(152,null)},\"editor.suggest.showDeprecated\":{type:\"boolean\",default:!0,markdownDescription:f.localize(153,null)},\"editor.suggest.matchOnWordStartOnly\":{type:\"boolean\",default:!0,markdownDescription:f.localize(154,null)},\"editor.suggest.showFields\":{type:\"boolean\",default:!0,markdownDescription:f.localize(155,null)},\"editor.suggest.showVariables\":{type:\"boolean\",default:!0,markdownDescription:f.localize(156,null)},\"editor.suggest.showClasses\":{type:\"boolean\",default:!0,markdownDescription:f.localize(157,null)},\"editor.suggest.showStructs\":{type:\"boolean\",default:!0,markdownDescription:f.localize(158,null)},\"editor.suggest.showInterfaces\":{type:\"boolean\",default:!0,markdownDescription:f.localize(159,null)},\"editor.suggest.showModules\":{type:\"boolean\",default:!0,markdownDescription:f.localize(160,null)},\"editor.suggest.showProperties\":{type:\"boolean\",default:!0,markdownDescription:f.localize(161,null)},\"editor.suggest.showEvents\":{type:\"boolean\",default:!0,markdownDescription:f.localize(162,null)},\"editor.suggest.showOperators\":{type:\"boolean\",default:!0,markdownDescription:f.localize(163,null)},\"editor.suggest.showUnits\":{type:\"boolean\",default:!0,markdownDescription:f.localize(164,null)},\"editor.suggest.showValues\":{type:\"boolean\",default:!0,markdownDescription:f.localize(165,null)},\"editor.suggest.showConstants\":{type:\"boolean\",default:!0,markdownDescription:f.localize(166,null)},\"editor.suggest.showEnums\":{type:\"boolean\",default:!0,markdownDescription:f.localize(167,null)},\"editor.suggest.showEnumMembers\":{type:\"boolean\",default:!0,markdownDescription:f.localize(168,null)},\"editor.suggest.showKeywords\":{type:\"boolean\",default:!0,markdownDescription:f.localize(169,null)},\"editor.suggest.showWords\":{type:\"boolean\",default:!0,markdownDescription:f.localize(170,null)},\"editor.suggest.showColors\":{type:\"boolean\",default:!0,markdownDescription:f.localize(171,null)},\"editor.suggest.showFiles\":{type:\"boolean\",default:!0,markdownDescription:f.localize(172,null)},\"editor.suggest.showReferences\":{type:\"boolean\",default:!0,markdownDescription:f.localize(173,null)},\"editor.suggest.showCustomcolors\":{type:\"boolean\",default:!0,markdownDescription:f.localize(174,null)},\"editor.suggest.showFolders\":{type:\"boolean\",default:!0,markdownDescription:f.localize(175,null)},\"editor.suggest.showTypeParameters\":{type:\"boolean\",default:!0,markdownDescription:f.localize(176,null)},\"editor.suggest.showSnippets\":{type:\"boolean\",default:!0,markdownDescription:f.localize(177,null)},\"editor.suggest.showUsers\":{type:\"boolean\",default:!0,markdownDescription:f.localize(178,null)},\"editor.suggest.showIssues\":{type:\"boolean\",default:!0,markdownDescription:f.localize(179,null)}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{insertMode:l(pe.insertMode,this.defaultValue.insertMode,[\"insert\",\"replace\"]),filterGraceful:a(pe.filterGraceful,this.defaultValue.filterGraceful),snippetsPreventQuickSuggestions:a(pe.snippetsPreventQuickSuggestions,this.defaultValue.filterGraceful),localityBonus:a(pe.localityBonus,this.defaultValue.localityBonus),shareSuggestSelections:a(pe.shareSuggestSelections,this.defaultValue.shareSuggestSelections),selectionMode:l(pe.selectionMode,this.defaultValue.selectionMode,[\"always\",\"never\",\"whenQuickSuggestion\",\"whenTriggerCharacter\"]),showIcons:a(pe.showIcons,this.defaultValue.showIcons),showStatusBar:a(pe.showStatusBar,this.defaultValue.showStatusBar),preview:a(pe.preview,this.defaultValue.preview),previewMode:l(pe.previewMode,this.defaultValue.previewMode,[\"prefix\",\"subword\",\"subwordSmart\"]),showInlineDetails:a(pe.showInlineDetails,this.defaultValue.showInlineDetails),showMethods:a(pe.showMethods,this.defaultValue.showMethods),showFunctions:a(pe.showFunctions,this.defaultValue.showFunctions),showConstructors:a(pe.showConstructors,this.defaultValue.showConstructors),showDeprecated:a(pe.showDeprecated,this.defaultValue.showDeprecated),matchOnWordStartOnly:a(pe.matchOnWordStartOnly,this.defaultValue.matchOnWordStartOnly),showFields:a(pe.showFields,this.defaultValue.showFields),showVariables:a(pe.showVariables,this.defaultValue.showVariables),showClasses:a(pe.showClasses,this.defaultValue.showClasses),showStructs:a(pe.showStructs,this.defaultValue.showStructs),showInterfaces:a(pe.showInterfaces,this.defaultValue.showInterfaces),showModules:a(pe.showModules,this.defaultValue.showModules),showProperties:a(pe.showProperties,this.defaultValue.showProperties),showEvents:a(pe.showEvents,this.defaultValue.showEvents),showOperators:a(pe.showOperators,this.defaultValue.showOperators),showUnits:a(pe.showUnits,this.defaultValue.showUnits),showValues:a(pe.showValues,this.defaultValue.showValues),showConstants:a(pe.showConstants,this.defaultValue.showConstants),showEnums:a(pe.showEnums,this.defaultValue.showEnums),showEnumMembers:a(pe.showEnumMembers,this.defaultValue.showEnumMembers),showKeywords:a(pe.showKeywords,this.defaultValue.showKeywords),showWords:a(pe.showWords,this.defaultValue.showWords),showColors:a(pe.showColors,this.defaultValue.showColors),showFiles:a(pe.showFiles,this.defaultValue.showFiles),showReferences:a(pe.showReferences,this.defaultValue.showReferences),showFolders:a(pe.showFolders,this.defaultValue.showFolders),showTypeParameters:a(pe.showTypeParameters,this.defaultValue.showTypeParameters),showSnippets:a(pe.showSnippets,this.defaultValue.showSnippets),showUsers:a(pe.showUsers,this.defaultValue.showUsers),showIssues:a(pe.showIssues,this.defaultValue.showIssues)}}}class Se extends C{constructor(){super(111,\"smartSelect\",{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},{\"editor.smartSelect.selectLeadingAndTrailingWhitespace\":{description:f.localize(180,null),default:!0,type:\"boolean\"},\"editor.smartSelect.selectSubwords\":{description:f.localize(181,null),default:!0,type:\"boolean\"}})}validate(le){return!le||typeof le!=\"object\"?this.defaultValue:{selectLeadingAndTrailingWhitespace:a(le.selectLeadingAndTrailingWhitespace,this.defaultValue.selectLeadingAndTrailingWhitespace),selectSubwords:a(le.selectSubwords,this.defaultValue.selectSubwords)}}}class Le extends C{constructor(){super(135,\"wrappingIndent\",1,{\"editor.wrappingIndent\":{type:\"string\",enum:[\"none\",\"same\",\"indent\",\"deepIndent\"],enumDescriptions:[f.localize(182,null),f.localize(183,null),f.localize(184,null),f.localize(185,null)],description:f.localize(186,null),default:\"same\"}})}validate(le){switch(le){case\"none\":return 0;case\"same\":return 1;case\"indent\":return 2;case\"deepIndent\":return 3}return 1}compute(le,pe,Ce){return pe.get(2)===2?0:Ce}}class De extends n{constructor(){super(143)}compute(le,pe,Ce){const be=pe.get(142);return{isDominatedByLongLines:le.isDominatedByLongLines,isWordWrapMinified:be.isWordWrapMinified,isViewportWrapping:be.isViewportWrapping,wrappingColumn:be.wrappingColumn}}}class ye extends C{constructor(){const le={enabled:!0,showDropSelector:\"afterDrop\"};super(35,\"dropIntoEditor\",le,{\"editor.dropIntoEditor.enabled\":{type:\"boolean\",default:le.enabled,markdownDescription:f.localize(187,null)},\"editor.dropIntoEditor.showDropSelector\":{type:\"string\",markdownDescription:f.localize(188,null),enum:[\"afterDrop\",\"never\"],enumDescriptions:[f.localize(189,null),f.localize(190,null)],default:\"afterDrop\"}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),showDropSelector:l(pe.showDropSelector,this.defaultValue.showDropSelector,[\"afterDrop\",\"never\"])}}}class Ee extends C{constructor(){const le={enabled:!0,showPasteSelector:\"afterPaste\"};super(83,\"pasteAs\",le,{\"editor.pasteAs.enabled\":{type:\"boolean\",default:le.enabled,markdownDescription:f.localize(191,null)},\"editor.pasteAs.showPasteSelector\":{type:\"string\",markdownDescription:f.localize(192,null),enum:[\"afterPaste\",\"never\"],enumDescriptions:[f.localize(193,null),f.localize(194,null)],default:\"afterPaste\"}})}validate(le){if(!le||typeof le!=\"object\")return this.defaultValue;const pe=le;return{enabled:a(pe.enabled,this.defaultValue.enabled),showPasteSelector:l(pe.showPasteSelector,this.defaultValue.showPasteSelector,[\"afterPaste\",\"never\"])}}}const Me=\"Consolas, 'Courier New', monospace\",Pe=\"Menlo, Monaco, 'Courier New', monospace\",Fe=\"'Droid Sans Mono', 'monospace', monospace\";e.EDITOR_FONT_DEFAULTS={fontFamily:y.isMacintosh?Pe:y.isLinux?Fe:Me,fontWeight:\"normal\",fontSize:y.isMacintosh?12:14,lineHeight:0,letterSpacing:0},e.editorOptionsRegistry=[];function _e(me){return e.editorOptionsRegistry[me.id]=me,me}e.EditorOptions={acceptSuggestionOnCommitCharacter:_e(new u(0,\"acceptSuggestionOnCommitCharacter\",!0,{markdownDescription:f.localize(195,null)})),acceptSuggestionOnEnter:_e(new p(1,\"acceptSuggestionOnEnter\",\"on\",[\"on\",\"smart\",\"off\"],{markdownEnumDescriptions:[\"\",f.localize(196,null),\"\"],markdownDescription:f.localize(197,null)})),accessibilitySupport:_e(new b),accessibilityPageSize:_e(new r(3,\"accessibilityPageSize\",10,1,1073741824,{description:f.localize(198,null),tags:[\"accessibility\"]})),ariaLabel:_e(new d(4,\"ariaLabel\",f.localize(199,null))),ariaRequired:_e(new u(5,\"ariaRequired\",!1,void 0)),screenReaderAnnounceInlineSuggestion:_e(new u(7,\"screenReaderAnnounceInlineSuggestion\",!0,{description:f.localize(200,null),tags:[\"accessibility\"]})),autoClosingBrackets:_e(new p(6,\"autoClosingBrackets\",\"languageDefined\",[\"always\",\"languageDefined\",\"beforeWhitespace\",\"never\"],{enumDescriptions:[\"\",f.localize(201,null),f.localize(202,null),\"\"],description:f.localize(203,null)})),autoClosingDelete:_e(new p(8,\"autoClosingDelete\",\"auto\",[\"always\",\"auto\",\"never\"],{enumDescriptions:[\"\",f.localize(204,null),\"\"],description:f.localize(205,null)})),autoClosingOvertype:_e(new p(9,\"autoClosingOvertype\",\"auto\",[\"always\",\"auto\",\"never\"],{enumDescriptions:[\"\",f.localize(206,null),\"\"],description:f.localize(207,null)})),autoClosingQuotes:_e(new p(10,\"autoClosingQuotes\",\"languageDefined\",[\"always\",\"languageDefined\",\"beforeWhitespace\",\"never\"],{enumDescriptions:[\"\",f.localize(208,null),f.localize(209,null),\"\"],description:f.localize(210,null)})),autoIndent:_e(new m(11,\"autoIndent\",4,\"full\",[\"none\",\"keep\",\"brackets\",\"advanced\",\"full\"],v,{enumDescriptions:[f.localize(211,null),f.localize(212,null),f.localize(213,null),f.localize(214,null),f.localize(215,null)],description:f.localize(216,null)})),automaticLayout:_e(new u(12,\"automaticLayout\",!1)),autoSurround:_e(new p(13,\"autoSurround\",\"languageDefined\",[\"languageDefined\",\"quotes\",\"brackets\",\"never\"],{enumDescriptions:[f.localize(217,null),f.localize(218,null),f.localize(219,null),\"\"],description:f.localize(220,null)})),bracketPairColorization:_e(new re),bracketPairGuides:_e(new oe),stickyTabStops:_e(new u(114,\"stickyTabStops\",!1,{description:f.localize(221,null)})),codeLens:_e(new u(16,\"codeLens\",!0,{description:f.localize(222,null)})),codeLensFontFamily:_e(new d(17,\"codeLensFontFamily\",\"\",{description:f.localize(223,null)})),codeLensFontSize:_e(new r(18,\"codeLensFontSize\",0,0,100,{type:\"number\",default:0,minimum:0,maximum:100,markdownDescription:f.localize(224,null)})),colorDecorators:_e(new u(19,\"colorDecorators\",!0,{description:f.localize(225,null)})),colorDecoratorActivatedOn:_e(new p(145,\"colorDecoratorsActivatedOn\",\"clickAndHover\",[\"clickAndHover\",\"hover\",\"click\"],{enumDescriptions:[f.localize(226,null),f.localize(227,null),f.localize(228,null)],description:f.localize(229,null)})),colorDecoratorsLimit:_e(new r(20,\"colorDecoratorsLimit\",500,1,1e6,{markdownDescription:f.localize(230,null)})),columnSelection:_e(new u(21,\"columnSelection\",!1,{description:f.localize(231,null)})),comments:_e(new w),contextmenu:_e(new u(23,\"contextmenu\",!0)),copyWithSyntaxHighlighting:_e(new u(24,\"copyWithSyntaxHighlighting\",!0,{description:f.localize(232,null)})),cursorBlinking:_e(new m(25,\"cursorBlinking\",1,\"blink\",[\"blink\",\"smooth\",\"phase\",\"expand\",\"solid\"],E,{description:f.localize(233,null)})),cursorSmoothCaretAnimation:_e(new p(26,\"cursorSmoothCaretAnimation\",\"off\",[\"off\",\"explicit\",\"on\"],{enumDescriptions:[f.localize(234,null),f.localize(235,null),f.localize(236,null)],description:f.localize(237,null)})),cursorStyle:_e(new m(27,\"cursorStyle\",I.Line,\"line\",[\"line\",\"block\",\"underline\",\"line-thin\",\"block-outline\",\"underline-thin\"],M,{description:f.localize(238,null)})),cursorSurroundingLines:_e(new r(28,\"cursorSurroundingLines\",0,0,1073741824,{description:f.localize(239,null)})),cursorSurroundingLinesStyle:_e(new p(29,\"cursorSurroundingLinesStyle\",\"default\",[\"default\",\"all\"],{enumDescriptions:[f.localize(240,null),f.localize(241,null)],description:f.localize(242,null)})),cursorWidth:_e(new r(30,\"cursorWidth\",0,0,1073741824,{markdownDescription:f.localize(243,null)})),disableLayerHinting:_e(new u(31,\"disableLayerHinting\",!1)),disableMonospaceOptimizations:_e(new u(32,\"disableMonospaceOptimizations\",!1)),domReadOnly:_e(new u(33,\"domReadOnly\",!1)),dragAndDrop:_e(new u(34,\"dragAndDrop\",!0,{description:f.localize(244,null)})),emptySelectionClipboard:_e(new x),dropIntoEditor:_e(new ye),stickyScroll:_e(new Z),experimentalWhitespaceRendering:_e(new p(37,\"experimentalWhitespaceRendering\",\"svg\",[\"svg\",\"font\",\"off\"],{enumDescriptions:[f.localize(245,null),f.localize(246,null),f.localize(247,null)],description:f.localize(248,null)})),extraEditorClassName:_e(new d(38,\"extraEditorClassName\",\"\")),fastScrollSensitivity:_e(new o(39,\"fastScrollSensitivity\",5,me=>me<=0?5:me,{markdownDescription:f.localize(249,null)})),find:_e(new T),fixedOverflowWidgets:_e(new u(41,\"fixedOverflowWidgets\",!1)),folding:_e(new u(42,\"folding\",!0,{description:f.localize(250,null)})),foldingStrategy:_e(new p(43,\"foldingStrategy\",\"auto\",[\"auto\",\"indentation\"],{enumDescriptions:[f.localize(251,null),f.localize(252,null)],description:f.localize(253,null)})),foldingHighlight:_e(new u(44,\"foldingHighlight\",!0,{description:f.localize(254,null)})),foldingImportsByDefault:_e(new u(45,\"foldingImportsByDefault\",!1,{description:f.localize(255,null)})),foldingMaximumRegions:_e(new r(46,\"foldingMaximumRegions\",5e3,10,65e3,{description:f.localize(256,null)})),unfoldOnClickAfterEndOfLine:_e(new u(47,\"unfoldOnClickAfterEndOfLine\",!1,{description:f.localize(257,null)})),fontFamily:_e(new d(48,\"fontFamily\",e.EDITOR_FONT_DEFAULTS.fontFamily,{description:f.localize(258,null)})),fontInfo:_e(new F),fontLigatures2:_e(new A),fontSize:_e(new O),fontWeight:_e(new W),fontVariations:_e(new N),formatOnPaste:_e(new u(54,\"formatOnPaste\",!1,{description:f.localize(259,null)})),formatOnType:_e(new u(55,\"formatOnType\",!1,{description:f.localize(260,null)})),glyphMargin:_e(new u(56,\"glyphMargin\",!0,{description:f.localize(261,null)})),gotoLocation:_e(new U),hideCursorInOverviewRuler:_e(new u(58,\"hideCursorInOverviewRuler\",!1,{description:f.localize(262,null)})),hover:_e(new j),inDiffEditor:_e(new u(60,\"inDiffEditor\",!1)),letterSpacing:_e(new o(62,\"letterSpacing\",e.EDITOR_FONT_DEFAULTS.letterSpacing,me=>o.clamp(me,-5,20),{description:f.localize(263,null)})),lightbulb:_e(new G),lineDecorationsWidth:_e(new X),lineHeight:_e(new H),lineNumbers:_e(new de),lineNumbersMinChars:_e(new r(67,\"lineNumbersMinChars\",5,1,300)),linkedEditing:_e(new u(68,\"linkedEditing\",!1,{description:f.localize(264,null)})),links:_e(new u(69,\"links\",!0,{description:f.localize(265,null)})),matchBrackets:_e(new p(70,\"matchBrackets\",\"always\",[\"always\",\"near\",\"never\"],{description:f.localize(266,null)})),minimap:_e(new B),mouseStyle:_e(new p(72,\"mouseStyle\",\"text\",[\"text\",\"default\",\"copy\"])),mouseWheelScrollSensitivity:_e(new o(73,\"mouseWheelScrollSensitivity\",1,me=>me===0?1:me,{markdownDescription:f.localize(267,null)})),mouseWheelZoom:_e(new u(74,\"mouseWheelZoom\",!1,{markdownDescription:f.localize(268,null)})),multiCursorMergeOverlapping:_e(new u(75,\"multiCursorMergeOverlapping\",!0,{description:f.localize(269,null)})),multiCursorModifier:_e(new m(76,\"multiCursorModifier\",\"altKey\",\"alt\",[\"ctrlCmd\",\"alt\"],V,{markdownEnumDescriptions:[f.localize(270,null),f.localize(271,null)],markdownDescription:f.localize(272,null)})),multiCursorPaste:_e(new p(77,\"multiCursorPaste\",\"spread\",[\"spread\",\"full\"],{markdownEnumDescriptions:[f.localize(273,null),f.localize(274,null)],markdownDescription:f.localize(275,null)})),multiCursorLimit:_e(new r(78,\"multiCursorLimit\",1e4,1,1e5,{markdownDescription:f.localize(276,null)})),occurrencesHighlight:_e(new u(79,\"occurrencesHighlight\",!0,{description:f.localize(277,null)})),overviewRulerBorder:_e(new u(80,\"overviewRulerBorder\",!0,{description:f.localize(278,null)})),overviewRulerLanes:_e(new r(81,\"overviewRulerLanes\",3,0,3)),padding:_e(new Y),pasteAs:_e(new Ee),parameterHints:_e(new ie),peekWidgetDefaultFocus:_e(new p(85,\"peekWidgetDefaultFocus\",\"tree\",[\"tree\",\"editor\"],{enumDescriptions:[f.localize(279,null),f.localize(280,null)],description:f.localize(281,null)})),definitionLinkOpensInPeek:_e(new u(86,\"definitionLinkOpensInPeek\",!1,{description:f.localize(282,null)})),quickSuggestions:_e(new ce),quickSuggestionsDelay:_e(new r(88,\"quickSuggestionsDelay\",10,0,1073741824,{description:f.localize(283,null)})),readOnly:_e(new u(89,\"readOnly\",!1)),readOnlyMessage:_e(new te),renameOnType:_e(new u(91,\"renameOnType\",!1,{description:f.localize(284,null),markdownDeprecationMessage:f.localize(285,null)})),renderControlCharacters:_e(new u(92,\"renderControlCharacters\",!0,{description:f.localize(286,null),restricted:!0})),renderFinalNewline:_e(new p(93,\"renderFinalNewline\",y.isLinux?\"dimmed\":\"on\",[\"off\",\"on\",\"dimmed\"],{description:f.localize(287,null)})),renderLineHighlight:_e(new p(94,\"renderLineHighlight\",\"line\",[\"none\",\"gutter\",\"line\",\"all\"],{enumDescriptions:[\"\",\"\",\"\",f.localize(288,null)],description:f.localize(289,null)})),renderLineHighlightOnlyWhenFocus:_e(new u(95,\"renderLineHighlightOnlyWhenFocus\",!1,{description:f.localize(290,null)})),renderValidationDecorations:_e(new p(96,\"renderValidationDecorations\",\"editable\",[\"editable\",\"on\",\"off\"])),renderWhitespace:_e(new p(97,\"renderWhitespace\",\"selection\",[\"none\",\"boundary\",\"selection\",\"trailing\",\"all\"],{enumDescriptions:[\"\",f.localize(291,null),f.localize(292,null),f.localize(293,null),\"\"],description:f.localize(294,null)})),revealHorizontalRightPadding:_e(new r(98,\"revealHorizontalRightPadding\",15,0,1e3)),roundedSelection:_e(new u(99,\"roundedSelection\",!0,{description:f.localize(295,null)})),rulers:_e(new ue),scrollbar:_e(new z),scrollBeyondLastColumn:_e(new r(102,\"scrollBeyondLastColumn\",4,0,1073741824,{description:f.localize(296,null)})),scrollBeyondLastLine:_e(new u(103,\"scrollBeyondLastLine\",!0,{description:f.localize(297,null)})),scrollPredominantAxis:_e(new u(104,\"scrollPredominantAxis\",!0,{description:f.localize(298,null)})),selectionClipboard:_e(new u(105,\"selectionClipboard\",!0,{description:f.localize(299,null),included:y.isLinux})),selectionHighlight:_e(new u(106,\"selectionHighlight\",!0,{description:f.localize(300,null)})),selectOnLineNumbers:_e(new u(107,\"selectOnLineNumbers\",!0)),showFoldingControls:_e(new p(108,\"showFoldingControls\",\"mouseover\",[\"always\",\"never\",\"mouseover\"],{enumDescriptions:[f.localize(301,null),f.localize(302,null),f.localize(303,null)],description:f.localize(304,null)})),showUnused:_e(new u(109,\"showUnused\",!0,{description:f.localize(305,null)})),showDeprecated:_e(new u(137,\"showDeprecated\",!0,{description:f.localize(306,null)})),inlayHints:_e(new J),snippetSuggestions:_e(new p(110,\"snippetSuggestions\",\"inline\",[\"top\",\"bottom\",\"inline\",\"none\"],{enumDescriptions:[f.localize(307,null),f.localize(308,null),f.localize(309,null),f.localize(310,null)],description:f.localize(311,null)})),smartSelect:_e(new Se),smoothScrolling:_e(new u(112,\"smoothScrolling\",!1,{description:f.localize(312,null)})),stopRenderingLineAfter:_e(new r(115,\"stopRenderingLineAfter\",1e4,-1,1073741824)),suggest:_e(new ve),inlineSuggest:_e(new $),inlineCompletionsAccessibilityVerbose:_e(new u(146,\"inlineCompletionsAccessibilityVerbose\",!1,{description:f.localize(313,null)})),suggestFontSize:_e(new r(117,\"suggestFontSize\",0,0,1e3,{markdownDescription:f.localize(314,null,\"`0`\",\"`#editor.fontSize#`\")})),suggestLineHeight:_e(new r(118,\"suggestLineHeight\",0,0,1e3,{markdownDescription:f.localize(315,null,\"`0`\",\"`#editor.lineHeight#`\")})),suggestOnTriggerCharacters:_e(new u(119,\"suggestOnTriggerCharacters\",!0,{description:f.localize(316,null)})),suggestSelection:_e(new p(120,\"suggestSelection\",\"first\",[\"first\",\"recentlyUsed\",\"recentlyUsedByPrefix\"],{markdownEnumDescriptions:[f.localize(317,null),f.localize(318,null),f.localize(319,null)],description:f.localize(320,null)})),tabCompletion:_e(new p(121,\"tabCompletion\",\"off\",[\"on\",\"off\",\"onlySnippets\"],{enumDescriptions:[f.localize(321,null),f.localize(322,null),f.localize(323,null)],description:f.localize(324,null)})),tabIndex:_e(new r(122,\"tabIndex\",0,-1,1073741824)),unicodeHighlight:_e(new ee),unusualLineTerminators:_e(new p(124,\"unusualLineTerminators\",\"prompt\",[\"auto\",\"off\",\"prompt\"],{enumDescriptions:[f.localize(325,null),f.localize(326,null),f.localize(327,null)],description:f.localize(328,null)})),useShadowDOM:_e(new u(125,\"useShadowDOM\",!0)),useTabStops:_e(new u(126,\"useTabStops\",!0,{description:f.localize(329,null)})),wordBreak:_e(new p(127,\"wordBreak\",\"normal\",[\"normal\",\"keepAll\"],{markdownEnumDescriptions:[f.localize(330,null),f.localize(331,null)],description:f.localize(332,null)})),wordSeparators:_e(new d(128,\"wordSeparators\",S.USUAL_WORD_SEPARATORS,{description:f.localize(333,null)})),wordWrap:_e(new p(129,\"wordWrap\",\"off\",[\"off\",\"on\",\"wordWrapColumn\",\"bounded\"],{markdownEnumDescriptions:[f.localize(334,null),f.localize(335,null),f.localize(336,null),f.localize(337,null)],description:f.localize(338,null)})),wordWrapBreakAfterCharacters:_e(new d(130,\"wordWrapBreakAfterCharacters\",\" \t})]?|/&.,;\\xA2\\xB0\\u2032\\u2033\\u2030\\u2103\\u3001\\u3002\\uFF61\\uFF64\\uFFE0\\uFF0C\\uFF0E\\uFF1A\\uFF1B\\uFF1F\\uFF01\\uFF05\\u30FB\\uFF65\\u309D\\u309E\\u30FD\\u30FE\\u30FC\\u30A1\\u30A3\\u30A5\\u30A7\\u30A9\\u30C3\\u30E3\\u30E5\\u30E7\\u30EE\\u30F5\\u30F6\\u3041\\u3043\\u3045\\u3047\\u3049\\u3063\\u3083\\u3085\\u3087\\u308E\\u3095\\u3096\\u31F0\\u31F1\\u31F2\\u31F3\\u31F4\\u31F5\\u31F6\\u31F7\\u31F8\\u31F9\\u31FA\\u31FB\\u31FC\\u31FD\\u31FE\\u31FF\\u3005\\u303B\\uFF67\\uFF68\\uFF69\\uFF6A\\uFF6B\\uFF6C\\uFF6D\\uFF6E\\uFF6F\\uFF70\\u201D\\u3009\\u300B\\u300D\\u300F\\u3011\\u3015\\uFF09\\uFF3D\\uFF5D\\uFF63\")),wordWrapBreakBeforeCharacters:_e(new d(131,\"wordWrapBreakBeforeCharacters\",\"([{\\u2018\\u201C\\u3008\\u300A\\u300C\\u300E\\u3010\\u3014\\uFF08\\uFF3B\\uFF5B\\uFF62\\xA3\\xA5\\uFF04\\uFFE1\\uFFE5+\\uFF0B\")),wordWrapColumn:_e(new r(132,\"wordWrapColumn\",80,1,1073741824,{markdownDescription:f.localize(339,null)})),wordWrapOverride1:_e(new p(133,\"wordWrapOverride1\",\"inherit\",[\"off\",\"on\",\"inherit\"])),wordWrapOverride2:_e(new p(134,\"wordWrapOverride2\",\"inherit\",[\"off\",\"on\",\"inherit\"])),editorClassName:_e(new P),defaultColorDecorators:_e(new u(144,\"defaultColorDecorators\",!1,{markdownDescription:f.localize(340,null)})),pixelRatio:_e(new ae),tabFocusMode:_e(new u(141,\"tabFocusMode\",!1,{markdownDescription:f.localize(341,null)})),layoutInfo:_e(new R),wrappingInfo:_e(new De),wrappingIndent:_e(new Le),wrappingStrategy:_e(new K)}}),define(ne[620],se([1,0,7,35,11,59,36,12,5,173]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewCursor=void 0;class C{constructor(n,t,a,u,h,r,c){this.top=n,this.left=t,this.paddingLeft=a,this.width=u,this.height=h,this.textContent=r,this.textContentClassName=c}}class s{constructor(n){this._context=n;const t=this._context.configuration.options,a=t.get(49);this._cursorStyle=t.get(27),this._lineHeight=t.get(65),this._typicalHalfwidthCharacterWidth=a.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(30),this._typicalHalfwidthCharacterWidth),this._isVisible=!0,this._domNode=(0,k.createFastDomNode)(document.createElement(\"div\")),this._domNode.setClassName(`cursor ${g.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`),this._domNode.setHeight(this._lineHeight),this._domNode.setTop(0),this._domNode.setLeft(0),(0,D.applyFontInfo)(this._domNode,a),this._domNode.setDisplay(\"none\"),this._position=new f.Position(1,1),this._lastRenderedContent=\"\",this._renderData=null}getDomNode(){return this._domNode}getPosition(){return this._position}show(){this._isVisible||(this._domNode.setVisibility(\"inherit\"),this._isVisible=!0)}hide(){this._isVisible&&(this._domNode.setVisibility(\"hidden\"),this._isVisible=!1)}onConfigurationChanged(n){const t=this._context.configuration.options,a=t.get(49);return this._cursorStyle=t.get(27),this._lineHeight=t.get(65),this._typicalHalfwidthCharacterWidth=a.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(30),this._typicalHalfwidthCharacterWidth),(0,D.applyFontInfo)(this._domNode,a),!0}onCursorPositionChanged(n,t){return t?this._domNode.domNode.style.transitionProperty=\"none\":this._domNode.domNode.style.transitionProperty=\"\",this._position=n,!0}_getGraphemeAwarePosition(){const{lineNumber:n,column:t}=this._position,a=this._context.viewModel.getLineContent(n),[u,h]=y.getCharContainingOffset(a,t-1);return[new f.Position(n,u+1),a.substring(u,h)]}_prepareRender(n){let t=\"\",a=\"\";const[u,h]=this._getGraphemeAwarePosition();if(this._cursorStyle===S.TextEditorCursorStyle.Line||this._cursorStyle===S.TextEditorCursorStyle.LineThin){const m=n.visibleRangeForPosition(u);if(!m||m.outsideRenderedLine)return null;let v;this._cursorStyle===S.TextEditorCursorStyle.Line?(v=L.computeScreenAwareSize(this._lineCursorWidth>0?this._lineCursorWidth:2),v>2&&(t=h,a=this._getTokenClassName(u))):v=L.computeScreenAwareSize(1);let b=m.left,w=0;v>=2&&b>=1&&(w=1,b-=w);const E=n.getVerticalOffsetForLineNumber(u.lineNumber)-n.bigNumbersDelta;return new C(E,b,w,v,this._lineHeight,t,a)}const r=n.linesVisibleRangesForRange(new _.Range(u.lineNumber,u.column,u.lineNumber,u.column+h.length),!1);if(!r||r.length===0)return null;const c=r[0];if(c.outsideRenderedLine||c.ranges.length===0)return null;const o=c.ranges[0],d=h===\"\t\"?this._typicalHalfwidthCharacterWidth:o.width<1?this._typicalHalfwidthCharacterWidth:o.width;this._cursorStyle===S.TextEditorCursorStyle.Block&&(t=h,a=this._getTokenClassName(u));let l=n.getVerticalOffsetForLineNumber(u.lineNumber)-n.bigNumbersDelta,p=this._lineHeight;return(this._cursorStyle===S.TextEditorCursorStyle.Underline||this._cursorStyle===S.TextEditorCursorStyle.UnderlineThin)&&(l+=this._lineHeight-2,p=2),new C(l,o.left,0,d,p,t,a)}_getTokenClassName(n){const t=this._context.viewModel.getViewLineData(n.lineNumber),a=t.tokens.findTokenIndexAtOffset(n.column-1);return t.tokens.getClassName(a)}prepareRender(n){this._renderData=this._prepareRender(n)}render(n){return this._renderData?(this._lastRenderedContent!==this._renderData.textContent&&(this._lastRenderedContent=this._renderData.textContent,this._domNode.domNode.textContent=this._lastRenderedContent),this._domNode.setClassName(`cursor ${g.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME} ${this._renderData.textContentClassName}`),this._domNode.setDisplay(\"block\"),this._domNode.setTop(this._renderData.top),this._domNode.setLeft(this._renderData.left),this._domNode.setPaddingLeft(this._renderData.paddingLeft),this._domNode.setWidth(this._renderData.width),this._domNode.setLineHeight(this._renderData.height),this._domNode.setHeight(this._renderData.height),{domNode:this._domNode.domNode,position:this._position,contentLeft:this._renderData.left,height:this._renderData.height,width:2}):(this._domNode.setDisplay(\"none\"),null)}}e.ViewCursor=s}),define(ne[621],se([1,0,42,271,36]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DiffEditorOptions=void 0;class D{get editorOptions(){return this._options}constructor(_,g){this.diffEditorWidth=g,this.couldShowInlineViewBecauseOfSize=(0,L.derived)(s=>this._options.read(s).renderSideBySide&&this.diffEditorWidth.read(s)<=this._options.read(s).renderSideBySideInlineBreakpoint),this.renderOverviewRuler=(0,L.derived)(s=>this._options.read(s).renderOverviewRuler),this.renderSideBySide=(0,L.derived)(s=>this._options.read(s).renderSideBySide&&!(this._options.read(s).useInlineViewWhenSpaceIsLimited&&this.couldShowInlineViewBecauseOfSize.read(s))),this.readOnly=(0,L.derived)(s=>this._options.read(s).readOnly),this.shouldRenderRevertArrows=(0,L.derived)(s=>!(!this._options.read(s).renderMarginRevertIcon||!this.renderSideBySide.read(s)||this.readOnly.read(s))),this.renderIndicators=(0,L.derived)(s=>this._options.read(s).renderIndicators),this.enableSplitViewResizing=(0,L.derived)(s=>this._options.read(s).enableSplitViewResizing),this.splitViewDefaultRatio=(0,L.derived)(s=>this._options.read(s).splitViewDefaultRatio),this.ignoreTrimWhitespace=(0,L.derived)(s=>this._options.read(s).ignoreTrimWhitespace),this.maxComputationTimeMs=(0,L.derived)(s=>this._options.read(s).maxComputationTime),this.showMoves=(0,L.derived)(s=>this._options.read(s).experimental.showMoves&&this.renderSideBySide.read(s)),this.isInEmbeddedEditor=(0,L.derived)(s=>this._options.read(s).isInEmbeddedEditor),this.diffWordWrap=(0,L.derived)(s=>this._options.read(s).diffWordWrap),this.originalEditable=(0,L.derived)(s=>this._options.read(s).originalEditable),this.diffCodeLens=(0,L.derived)(s=>this._options.read(s).diffCodeLens),this.accessibilityVerbose=(0,L.derived)(s=>this._options.read(s).accessibilityVerbose),this.diffAlgorithm=(0,L.derived)(s=>this._options.read(s).diffAlgorithm),this.showEmptyDecorations=(0,L.derived)(s=>this._options.read(s).experimental.showEmptyDecorations),this.onlyShowAccessibleDiffViewer=(0,L.derived)(s=>this._options.read(s).onlyShowAccessibleDiffViewer),this.hideUnchangedRegions=(0,L.derived)(s=>this._options.read(s).hideUnchangedRegions.enabled),this.hideUnchangedRegionsRevealLineCount=(0,L.derived)(s=>this._options.read(s).hideUnchangedRegions.revealLineCount),this.hideUnchangedRegionsContextLineCount=(0,L.derived)(s=>this._options.read(s).hideUnchangedRegions.contextLineCount),this.hideUnchangedRegionsminimumLineCount=(0,L.derived)(s=>this._options.read(s).hideUnchangedRegions.minimumLineCount);const C=Object.assign(Object.assign({},_),S(_,k.diffEditorDefaultOptions));this._options=(0,L.observableValue)(\"options\",C)}updateOptions(_){const g=S(_,this._options.get()),C=Object.assign(Object.assign(Object.assign({},this._options.get()),_),g);this._options.set(C,void 0,{changedOptions:_})}}e.DiffEditorOptions=D;function S(f,_){var g,C,s,i,n,t,a,u;return{enableSplitViewResizing:(0,y.boolean)(f.enableSplitViewResizing,_.enableSplitViewResizing),splitViewDefaultRatio:(0,y.clampedFloat)(f.splitViewDefaultRatio,.5,.1,.9),renderSideBySide:(0,y.boolean)(f.renderSideBySide,_.renderSideBySide),renderMarginRevertIcon:(0,y.boolean)(f.renderMarginRevertIcon,_.renderMarginRevertIcon),maxComputationTime:(0,y.clampedInt)(f.maxComputationTime,_.maxComputationTime,0,1073741824),maxFileSize:(0,y.clampedInt)(f.maxFileSize,_.maxFileSize,0,1073741824),ignoreTrimWhitespace:(0,y.boolean)(f.ignoreTrimWhitespace,_.ignoreTrimWhitespace),renderIndicators:(0,y.boolean)(f.renderIndicators,_.renderIndicators),originalEditable:(0,y.boolean)(f.originalEditable,_.originalEditable),diffCodeLens:(0,y.boolean)(f.diffCodeLens,_.diffCodeLens),renderOverviewRuler:(0,y.boolean)(f.renderOverviewRuler,_.renderOverviewRuler),diffWordWrap:(0,y.stringSet)(f.diffWordWrap,_.diffWordWrap,[\"off\",\"on\",\"inherit\"]),diffAlgorithm:(0,y.stringSet)(f.diffAlgorithm,_.diffAlgorithm,[\"legacy\",\"advanced\"],{smart:\"legacy\",experimental:\"advanced\"}),accessibilityVerbose:(0,y.boolean)(f.accessibilityVerbose,_.accessibilityVerbose),experimental:{showMoves:(0,y.boolean)((g=f.experimental)===null||g===void 0?void 0:g.showMoves,_.experimental.showMoves),showEmptyDecorations:(0,y.boolean)((C=f.experimental)===null||C===void 0?void 0:C.showEmptyDecorations,_.experimental.showEmptyDecorations)},hideUnchangedRegions:{enabled:(0,y.boolean)((i=(s=f.hideUnchangedRegions)===null||s===void 0?void 0:s.enabled)!==null&&i!==void 0?i:(n=f.experimental)===null||n===void 0?void 0:n.collapseUnchangedRegions,_.hideUnchangedRegions.enabled),contextLineCount:(0,y.clampedInt)((t=f.hideUnchangedRegions)===null||t===void 0?void 0:t.contextLineCount,_.hideUnchangedRegions.contextLineCount,0,1073741824),minimumLineCount:(0,y.clampedInt)((a=f.hideUnchangedRegions)===null||a===void 0?void 0:a.minimumLineCount,_.hideUnchangedRegions.minimumLineCount,0,1073741824),revealLineCount:(0,y.clampedInt)((u=f.hideUnchangedRegions)===null||u===void 0?void 0:u.revealLineCount,_.hideUnchangedRegions.revealLineCount,0,1073741824)},isInEmbeddedEditor:(0,y.boolean)(f.isInEmbeddedEditor,_.isInEmbeddedEditor),onlyShowAccessibleDiffViewer:(0,y.boolean)(f.onlyShowAccessibleDiffViewer,_.onlyShowAccessibleDiffViewer),renderSideBySideInlineBreakpoint:(0,y.clampedInt)(f.renderSideBySideInlineBreakpoint,_.renderSideBySideInlineBreakpoint,0,1073741824),useInlineViewWhenSpaceIsLimited:(0,y.boolean)(f.useInlineViewWhenSpaceIsLimited,_.useInlineViewWhenSpaceIsLimited)}}}),define(ne[231],se([1,0,17,36,145]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FontInfo=e.SERIALIZED_FONT_INFO_VERSION=e.BareFontInfo=void 0;const D=L.isMacintosh?1.5:1.35,S=8;class f{static createFromValidatedSettings(C,s,i){const n=C.get(48),t=C.get(52),a=C.get(51),u=C.get(50),h=C.get(53),r=C.get(65),c=C.get(62);return f._create(n,t,a,u,h,r,c,s,i)}static _create(C,s,i,n,t,a,u,h,r){a===0?a=D*i:a<S&&(a=a*i),a=Math.round(a),a<S&&(a=S);const c=1+(r?0:y.EditorZoom.getZoomLevel()*.1);return i*=c,a*=c,t===k.EditorFontVariations.TRANSLATE&&(s===\"normal\"||s===\"bold\"?t=k.EditorFontVariations.OFF:(t=`'wght' ${parseInt(s,10)}`,s=\"normal\")),new f({pixelRatio:h,fontFamily:C,fontWeight:s,fontSize:i,fontFeatureSettings:n,fontVariationSettings:t,lineHeight:a,letterSpacing:u})}constructor(C){this._bareFontInfoBrand=void 0,this.pixelRatio=C.pixelRatio,this.fontFamily=String(C.fontFamily),this.fontWeight=String(C.fontWeight),this.fontSize=C.fontSize,this.fontFeatureSettings=C.fontFeatureSettings,this.fontVariationSettings=C.fontVariationSettings,this.lineHeight=C.lineHeight|0,this.letterSpacing=C.letterSpacing}getId(){return`${this.pixelRatio}-${this.fontFamily}-${this.fontWeight}-${this.fontSize}-${this.fontFeatureSettings}-${this.fontVariationSettings}-${this.lineHeight}-${this.letterSpacing}`}getMassagedFontFamily(){const C=k.EDITOR_FONT_DEFAULTS.fontFamily,s=f._wrapInQuotes(this.fontFamily);return C&&this.fontFamily!==C?`${s}, ${C}`:s}static _wrapInQuotes(C){return/[,\"']/.test(C)?C:/[+ ]/.test(C)?`\"${C}\"`:C}}e.BareFontInfo=f,e.SERIALIZED_FONT_INFO_VERSION=2;class _ extends f{constructor(C,s){super(C),this._editorStylingBrand=void 0,this.version=e.SERIALIZED_FONT_INFO_VERSION,this.isTrusted=s,this.isMonospace=C.isMonospace,this.typicalHalfwidthCharacterWidth=C.typicalHalfwidthCharacterWidth,this.typicalFullwidthCharacterWidth=C.typicalFullwidthCharacterWidth,this.canUseHalfwidthRightwardsArrow=C.canUseHalfwidthRightwardsArrow,this.spaceWidth=C.spaceWidth,this.middotWidth=C.middotWidth,this.wsmiddotWidth=C.wsmiddotWidth,this.maxDigitWidth=C.maxDigitWidth}equals(C){return this.fontFamily===C.fontFamily&&this.fontWeight===C.fontWeight&&this.fontSize===C.fontSize&&this.fontFeatureSettings===C.fontFeatureSettings&&this.fontVariationSettings===C.fontVariationSettings&&this.lineHeight===C.lineHeight&&this.letterSpacing===C.letterSpacing&&this.typicalHalfwidthCharacterWidth===C.typicalHalfwidthCharacterWidth&&this.typicalFullwidthCharacterWidth===C.typicalFullwidthCharacterWidth&&this.canUseHalfwidthRightwardsArrow===C.canUseHalfwidthRightwardsArrow&&this.spaceWidth===C.spaceWidth&&this.middotWidth===C.middotWidth&&this.wsmiddotWidth===C.wsmiddotWidth&&this.maxDigitWidth===C.maxDigitWidth}}e.FontInfo=_}),define(ne[324],se([1,0,52,6,2,475,36,231]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FontMeasurements=e.FontMeasurementsImpl=void 0;class _ extends y.Disposable{constructor(){super(),this._onDidChange=this._register(new k.Emitter),this.onDidChange=this._onDidChange.event,this._cache=new g,this._evictUntrustedReadingsTimeout=-1}dispose(){this._evictUntrustedReadingsTimeout!==-1&&(window.clearTimeout(this._evictUntrustedReadingsTimeout),this._evictUntrustedReadingsTimeout=-1),super.dispose()}clearAllFontInfos(){this._cache=new g,this._onDidChange.fire()}_writeToCache(s,i){this._cache.put(s,i),!i.isTrusted&&this._evictUntrustedReadingsTimeout===-1&&(this._evictUntrustedReadingsTimeout=window.setTimeout(()=>{this._evictUntrustedReadingsTimeout=-1,this._evictUntrustedReadings()},5e3))}_evictUntrustedReadings(){const s=this._cache.getValues();let i=!1;for(const n of s)n.isTrusted||(i=!0,this._cache.remove(n));i&&this._onDidChange.fire()}readFontInfo(s){if(!this._cache.has(s)){let i=this._actualReadFontInfo(s);(i.typicalHalfwidthCharacterWidth<=2||i.typicalFullwidthCharacterWidth<=2||i.spaceWidth<=2||i.maxDigitWidth<=2)&&(i=new f.FontInfo({pixelRatio:L.PixelRatio.value,fontFamily:i.fontFamily,fontWeight:i.fontWeight,fontSize:i.fontSize,fontFeatureSettings:i.fontFeatureSettings,fontVariationSettings:i.fontVariationSettings,lineHeight:i.lineHeight,letterSpacing:i.letterSpacing,isMonospace:i.isMonospace,typicalHalfwidthCharacterWidth:Math.max(i.typicalHalfwidthCharacterWidth,5),typicalFullwidthCharacterWidth:Math.max(i.typicalFullwidthCharacterWidth,5),canUseHalfwidthRightwardsArrow:i.canUseHalfwidthRightwardsArrow,spaceWidth:Math.max(i.spaceWidth,5),middotWidth:Math.max(i.middotWidth,5),wsmiddotWidth:Math.max(i.wsmiddotWidth,5),maxDigitWidth:Math.max(i.maxDigitWidth,5)},!1)),this._writeToCache(s,i)}return this._cache.get(s)}_createRequest(s,i,n,t){const a=new D.CharWidthRequest(s,i);return n.push(a),t?.push(a),a}_actualReadFontInfo(s){const i=[],n=[],t=this._createRequest(\"n\",0,i,n),a=this._createRequest(\"\\uFF4D\",0,i,null),u=this._createRequest(\" \",0,i,n),h=this._createRequest(\"0\",0,i,n),r=this._createRequest(\"1\",0,i,n),c=this._createRequest(\"2\",0,i,n),o=this._createRequest(\"3\",0,i,n),d=this._createRequest(\"4\",0,i,n),l=this._createRequest(\"5\",0,i,n),p=this._createRequest(\"6\",0,i,n),m=this._createRequest(\"7\",0,i,n),v=this._createRequest(\"8\",0,i,n),b=this._createRequest(\"9\",0,i,n),w=this._createRequest(\"\\u2192\",0,i,n),E=this._createRequest(\"\\uFFEB\",0,i,null),I=this._createRequest(\"\\xB7\",0,i,n),M=this._createRequest(String.fromCharCode(11825),0,i,null),P=\"|/-_ilm%\";for(let F=0,O=P.length;F<O;F++)this._createRequest(P.charAt(F),0,i,n),this._createRequest(P.charAt(F),1,i,n),this._createRequest(P.charAt(F),2,i,n);(0,D.readCharWidths)(s,i);const x=Math.max(h.width,r.width,c.width,o.width,d.width,l.width,p.width,m.width,v.width,b.width);let T=s.fontFeatureSettings===S.EditorFontLigatures.OFF;const A=n[0].width;for(let F=1,O=n.length;T&&F<O;F++){const W=A-n[F].width;if(W<-.001||W>.001){T=!1;break}}let N=!0;return T&&E.width!==A&&(N=!1),E.width>w.width&&(N=!1),new f.FontInfo({pixelRatio:L.PixelRatio.value,fontFamily:s.fontFamily,fontWeight:s.fontWeight,fontSize:s.fontSize,fontFeatureSettings:s.fontFeatureSettings,fontVariationSettings:s.fontVariationSettings,lineHeight:s.lineHeight,letterSpacing:s.letterSpacing,isMonospace:T,typicalHalfwidthCharacterWidth:t.width,typicalFullwidthCharacterWidth:a.width,canUseHalfwidthRightwardsArrow:N,spaceWidth:u.width,middotWidth:I.width,wsmiddotWidth:M.width,maxDigitWidth:x},!0)}}e.FontMeasurementsImpl=_;class g{constructor(){this._keys=Object.create(null),this._values=Object.create(null)}has(s){const i=s.getId();return!!this._values[i]}get(s){const i=s.getId();return this._values[i]}put(s,i){const n=s.getId();this._keys[n]=s,this._values[n]=i}remove(s){const i=s.getId();delete this._keys[i],delete this._values[i]}getValues(){return Object.keys(this._keys).map(s=>this._values[s])}}e.FontMeasurements=new _}),define(ne[325],se([1,0,12,5,67,36]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isModelDecorationInString=e.isModelDecorationInComment=e.isModelDecorationVisible=e.ViewModelDecorations=void 0;class S{constructor(i,n,t,a,u){this.editorId=i,this.model=n,this.configuration=t,this._linesCollection=a,this._coordinatesConverter=u,this._decorationsCache=Object.create(null),this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}_clearCachedModelDecorationsResolver(){this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}dispose(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}reset(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onModelDecorationsChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onLineMappingChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}_getOrCreateViewModelDecoration(i){const n=i.id;let t=this._decorationsCache[n];if(!t){const a=i.range,u=i.options;let h;if(u.isWholeLine){const r=this._coordinatesConverter.convertModelPositionToViewPosition(new L.Position(a.startLineNumber,1),0,!1,!0),c=this._coordinatesConverter.convertModelPositionToViewPosition(new L.Position(a.endLineNumber,this.model.getLineMaxColumn(a.endLineNumber)),1);h=new k.Range(r.lineNumber,r.column,c.lineNumber,c.column)}else h=this._coordinatesConverter.convertModelRangeToViewRange(a,1);t=new y.ViewModelDecoration(h,u),this._decorationsCache[n]=t}return t}getMinimapDecorationsInRange(i){return this._getDecorationsInRange(i,!0,!1).decorations}getDecorationsViewportData(i){let n=this._cachedModelDecorationsResolver!==null;return n=n&&i.equalsRange(this._cachedModelDecorationsResolverViewRange),n||(this._cachedModelDecorationsResolver=this._getDecorationsInRange(i,!1,!1),this._cachedModelDecorationsResolverViewRange=i),this._cachedModelDecorationsResolver}getInlineDecorationsOnLine(i,n=!1,t=!1){const a=new k.Range(i,this._linesCollection.getViewLineMinColumn(i),i,this._linesCollection.getViewLineMaxColumn(i));return this._getDecorationsInRange(a,n,t).inlineDecorations[0]}_getDecorationsInRange(i,n,t){const a=this._linesCollection.getDecorationsInRange(i,this.editorId,(0,D.filterValidationDecorations)(this.configuration.options),n,t),u=i.startLineNumber,h=i.endLineNumber,r=[];let c=0;const o=[];for(let d=u;d<=h;d++)o[d-u]=[];for(let d=0,l=a.length;d<l;d++){const p=a[d],m=p.options;if(!f(this.model,p))continue;const v=this._getOrCreateViewModelDecoration(p),b=v.range;if(r[c++]=v,m.inlineClassName){const w=new y.InlineDecoration(b,m.inlineClassName,m.inlineClassNameAffectsLetterSpacing?3:0),E=Math.max(u,b.startLineNumber),I=Math.min(h,b.endLineNumber);for(let M=E;M<=I;M++)o[M-u].push(w)}if(m.beforeContentClassName&&u<=b.startLineNumber&&b.startLineNumber<=h){const w=new y.InlineDecoration(new k.Range(b.startLineNumber,b.startColumn,b.startLineNumber,b.startColumn),m.beforeContentClassName,1);o[b.startLineNumber-u].push(w)}if(m.afterContentClassName&&u<=b.endLineNumber&&b.endLineNumber<=h){const w=new y.InlineDecoration(new k.Range(b.endLineNumber,b.endColumn,b.endLineNumber,b.endColumn),m.afterContentClassName,2);o[b.endLineNumber-u].push(w)}}return{decorations:r,inlineDecorations:o}}}e.ViewModelDecorations=S;function f(s,i){return!(i.options.hideInCommentTokens&&_(s,i)||i.options.hideInStringTokens&&g(s,i))}e.isModelDecorationVisible=f;function _(s,i){return C(s,i.range,n=>n===1)}e.isModelDecorationInComment=_;function g(s,i){return C(s,i.range,n=>n===2)}e.isModelDecorationInString=g;function C(s,i,n){for(let t=i.startLineNumber;t<=i.endLineNumber;t++){const a=s.tokenization.getLineTokens(t),u=t===i.startLineNumber,h=t===i.endLineNumber;let r=u?a.findTokenIndexAtOffset(i.startColumn-1):0;for(;r<a.getCount()&&!(h&&a.getStartOffset(r)>i.endColumn-1);){if(!n(a.getStandardTokenType(r)))return!1;r++}}return!0}}),define(ne[622],se([3,4]),function(Q,e){return Q.create(\"vs/editor/common/core/editorColorRegistry\",e)}),define(ne[623],se([3,4]),function(Q,e){return Q.create(\"vs/editor/common/editorContextKeys\",e)}),define(ne[624],se([3,4]),function(Q,e){return Q.create(\"vs/editor/common/languages\",e)}),define(ne[29],se([1,0,25,22,5,515,624]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenizationRegistry=e.LazyTokenizationSupport=e.InlayHintKind=e.Command=e.FoldingRangeKind=e.TextEdit=e.SymbolKinds=e.getAriaLabelForSymbol=e.symbolKindNames=e.isLocationLink=e.DocumentHighlightKind=e.SignatureHelpTriggerKind=e.SelectedSuggestionInfo=e.InlineCompletionTriggerKind=e.CompletionItemKinds=e.EncodedTokenizationResult=e.TokenizationResult=e.Token=void 0;class f{constructor(m,v,b){this.offset=m,this.type=v,this.language=b,this._tokenBrand=void 0}toString(){return\"(\"+this.offset+\", \"+this.type+\")\"}}e.Token=f;class _{constructor(m,v){this.tokens=m,this.endState=v,this._tokenizationResultBrand=void 0}}e.TokenizationResult=_;class g{constructor(m,v){this.tokens=m,this.endState=v,this._encodedTokenizationResultBrand=void 0}}e.EncodedTokenizationResult=g;var C;(function(p){const m=new Map;m.set(0,L.Codicon.symbolMethod),m.set(1,L.Codicon.symbolFunction),m.set(2,L.Codicon.symbolConstructor),m.set(3,L.Codicon.symbolField),m.set(4,L.Codicon.symbolVariable),m.set(5,L.Codicon.symbolClass),m.set(6,L.Codicon.symbolStruct),m.set(7,L.Codicon.symbolInterface),m.set(8,L.Codicon.symbolModule),m.set(9,L.Codicon.symbolProperty),m.set(10,L.Codicon.symbolEvent),m.set(11,L.Codicon.symbolOperator),m.set(12,L.Codicon.symbolUnit),m.set(13,L.Codicon.symbolValue),m.set(15,L.Codicon.symbolEnum),m.set(14,L.Codicon.symbolConstant),m.set(15,L.Codicon.symbolEnum),m.set(16,L.Codicon.symbolEnumMember),m.set(17,L.Codicon.symbolKeyword),m.set(27,L.Codicon.symbolSnippet),m.set(18,L.Codicon.symbolText),m.set(19,L.Codicon.symbolColor),m.set(20,L.Codicon.symbolFile),m.set(21,L.Codicon.symbolReference),m.set(22,L.Codicon.symbolCustomColor),m.set(23,L.Codicon.symbolFolder),m.set(24,L.Codicon.symbolTypeParameter),m.set(25,L.Codicon.account),m.set(26,L.Codicon.issues);function v(E){let I=m.get(E);return I||(console.info(\"No codicon found for CompletionItemKind \"+E),I=L.Codicon.symbolProperty),I}p.toIcon=v;const b=new Map;b.set(\"method\",0),b.set(\"function\",1),b.set(\"constructor\",2),b.set(\"field\",3),b.set(\"variable\",4),b.set(\"class\",5),b.set(\"struct\",6),b.set(\"interface\",7),b.set(\"module\",8),b.set(\"property\",9),b.set(\"event\",10),b.set(\"operator\",11),b.set(\"unit\",12),b.set(\"value\",13),b.set(\"constant\",14),b.set(\"enum\",15),b.set(\"enum-member\",16),b.set(\"enumMember\",16),b.set(\"keyword\",17),b.set(\"snippet\",27),b.set(\"text\",18),b.set(\"color\",19),b.set(\"file\",20),b.set(\"reference\",21),b.set(\"customcolor\",22),b.set(\"folder\",23),b.set(\"type-parameter\",24),b.set(\"typeParameter\",24),b.set(\"account\",25),b.set(\"issue\",26);function w(E,I){let M=b.get(E);return typeof M>\"u\"&&!I&&(M=9),M}p.fromString=w})(C||(e.CompletionItemKinds=C={}));var s;(function(p){p[p.Automatic=0]=\"Automatic\",p[p.Explicit=1]=\"Explicit\"})(s||(e.InlineCompletionTriggerKind=s={}));class i{constructor(m,v,b,w){this.range=m,this.text=v,this.completionKind=b,this.isSnippetText=w}equals(m){return y.Range.lift(this.range).equalsRange(m.range)&&this.text===m.text&&this.completionKind===m.completionKind&&this.isSnippetText===m.isSnippetText}}e.SelectedSuggestionInfo=i;var n;(function(p){p[p.Invoke=1]=\"Invoke\",p[p.TriggerCharacter=2]=\"TriggerCharacter\",p[p.ContentChange=3]=\"ContentChange\"})(n||(e.SignatureHelpTriggerKind=n={}));var t;(function(p){p[p.Text=0]=\"Text\",p[p.Read=1]=\"Read\",p[p.Write=2]=\"Write\"})(t||(e.DocumentHighlightKind=t={}));function a(p){return p&&k.URI.isUri(p.uri)&&y.Range.isIRange(p.range)&&(y.Range.isIRange(p.originSelectionRange)||y.Range.isIRange(p.targetSelectionRange))}e.isLocationLink=a,e.symbolKindNames={[17]:(0,S.localize)(0,null),[16]:(0,S.localize)(1,null),[4]:(0,S.localize)(2,null),[13]:(0,S.localize)(3,null),[8]:(0,S.localize)(4,null),[9]:(0,S.localize)(5,null),[21]:(0,S.localize)(6,null),[23]:(0,S.localize)(7,null),[7]:(0,S.localize)(8,null),[0]:(0,S.localize)(9,null),[11]:(0,S.localize)(10,null),[10]:(0,S.localize)(11,null),[19]:(0,S.localize)(12,null),[5]:(0,S.localize)(13,null),[1]:(0,S.localize)(14,null),[2]:(0,S.localize)(15,null),[20]:(0,S.localize)(16,null),[15]:(0,S.localize)(17,null),[18]:(0,S.localize)(18,null),[24]:(0,S.localize)(19,null),[3]:(0,S.localize)(20,null),[6]:(0,S.localize)(21,null),[14]:(0,S.localize)(22,null),[22]:(0,S.localize)(23,null),[25]:(0,S.localize)(24,null),[12]:(0,S.localize)(25,null)};function u(p,m){return(0,S.localize)(26,null,p,e.symbolKindNames[m])}e.getAriaLabelForSymbol=u;var h;(function(p){const m=new Map;m.set(0,L.Codicon.symbolFile),m.set(1,L.Codicon.symbolModule),m.set(2,L.Codicon.symbolNamespace),m.set(3,L.Codicon.symbolPackage),m.set(4,L.Codicon.symbolClass),m.set(5,L.Codicon.symbolMethod),m.set(6,L.Codicon.symbolProperty),m.set(7,L.Codicon.symbolField),m.set(8,L.Codicon.symbolConstructor),m.set(9,L.Codicon.symbolEnum),m.set(10,L.Codicon.symbolInterface),m.set(11,L.Codicon.symbolFunction),m.set(12,L.Codicon.symbolVariable),m.set(13,L.Codicon.symbolConstant),m.set(14,L.Codicon.symbolString),m.set(15,L.Codicon.symbolNumber),m.set(16,L.Codicon.symbolBoolean),m.set(17,L.Codicon.symbolArray),m.set(18,L.Codicon.symbolObject),m.set(19,L.Codicon.symbolKey),m.set(20,L.Codicon.symbolNull),m.set(21,L.Codicon.symbolEnumMember),m.set(22,L.Codicon.symbolStruct),m.set(23,L.Codicon.symbolEvent),m.set(24,L.Codicon.symbolOperator),m.set(25,L.Codicon.symbolTypeParameter);function v(b){let w=m.get(b);return w||(console.info(\"No codicon found for SymbolKind \"+b),w=L.Codicon.symbolProperty),w}p.toIcon=v})(h||(e.SymbolKinds=h={}));class r{}e.TextEdit=r;class c{static fromValue(m){switch(m){case\"comment\":return c.Comment;case\"imports\":return c.Imports;case\"region\":return c.Region}return new c(m)}constructor(m){this.value=m}}e.FoldingRangeKind=c,c.Comment=new c(\"comment\"),c.Imports=new c(\"imports\"),c.Region=new c(\"region\");var o;(function(p){function m(v){return!v||typeof v!=\"object\"?!1:typeof v.id==\"string\"&&typeof v.title==\"string\"}p.is=m})(o||(e.Command=o={}));var d;(function(p){p[p.Type=1]=\"Type\",p[p.Parameter=2]=\"Parameter\"})(d||(e.InlayHintKind=d={}));class l{constructor(m){this.createSupport=m,this._tokenizationSupport=null}dispose(){this._tokenizationSupport&&this._tokenizationSupport.then(m=>{m&&m.dispose()})}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}e.LazyTokenizationSupport=l,e.TokenizationRegistry=new D.TokenizationRegistry}),define(ne[154],se([1,0,29]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.nullTokenizeEncoded=e.nullTokenize=e.NullState=void 0,e.NullState=new class{clone(){return this}equals(D){return this===D}};function k(D,S){return new L.TokenizationResult([new L.Token(0,\"\",D)],S)}e.nullTokenize=k;function y(D,S){const f=new Uint32Array(2);return f[0]=0,f[1]=(D<<0|0<<8|0<<11|1<<15|2<<24)>>>0,new L.EncodedTokenizationResult(f,S===null?e.NullState:S)}e.nullTokenizeEncoded=y}),define(ne[326],se([1,0,11,86,29,154]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e._tokenizeToString=e.tokenizeLineToHTML=e.tokenizeToString=void 0;const S={getInitialState:()=>D.NullState,tokenizeEncoded:(C,s,i)=>(0,D.nullTokenizeEncoded)(0,i)};function f(C,s,i){return we(this,void 0,void 0,function*(){if(!i)return g(s,C.languageIdCodec,S);const n=yield y.TokenizationRegistry.getOrCreate(i);return g(s,C.languageIdCodec,n||S)})}e.tokenizeToString=f;function _(C,s,i,n,t,a,u){let h=\"<div>\",r=n,c=0,o=!0;for(let d=0,l=s.getCount();d<l;d++){const p=s.getEndOffset(d);if(p<=n)continue;let m=\"\";for(;r<p&&r<t;r++){const v=C.charCodeAt(r);switch(v){case 9:{let b=a-(r+c)%a;for(c+=b-1;b>0;)u&&o?(m+=\"&#160;\",o=!1):(m+=\" \",o=!0),b--;break}case 60:m+=\"&lt;\",o=!1;break;case 62:m+=\"&gt;\",o=!1;break;case 38:m+=\"&amp;\",o=!1;break;case 0:m+=\"&#00;\",o=!1;break;case 65279:case 8232:case 8233:case 133:m+=\"\\uFFFD\",o=!1;break;case 13:m+=\"&#8203\",o=!1;break;case 32:u&&o?(m+=\"&#160;\",o=!1):(m+=\" \",o=!0);break;default:m+=String.fromCharCode(v),o=!1}}if(h+=`<span style=\"${s.getInlineStyle(d,i)}\">${m}</span>`,p>t||r>=t)break}return h+=\"</div>\",h}e.tokenizeLineToHTML=_;function g(C,s,i){let n='<div class=\"monaco-tokenized-source\">';const t=L.splitLines(C);let a=i.getInitialState();for(let u=0,h=t.length;u<h;u++){const r=t[u];u>0&&(n+=\"<br/>\");const c=i.tokenizeEncoded(r,!0,a);k.LineTokens.convertToEndOffset(c.tokens,r.length);const d=new k.LineTokens(c.tokens,r,s).inflate();let l=0;for(let p=0,m=d.getCount();p<m;p++){const v=d.getClassName(p),b=d.getEndOffset(p);n+=`<span class=\"${v}\">${L.escape(r.substring(l,b))}</span>`,l=b}a=c.endState}return n+=\"</div>\",n}e._tokenizeToString=g}),define(ne[625],se([1,0,13,9,17,58,122,66,90,154,508,288,86]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DefaultBackgroundTokenizer=e.RangePriorityQueueImpl=e.TokenizationStateStore=e.TrackingTokenizationStateStore=e.TokenizerWithStateStoreAndTextModel=e.TokenizerWithStateStore=void 0;class n{constructor(d,l){this.tokenizationSupport=l,this.initialState=this.tokenizationSupport.getInitialState(),this.store=new a(d)}getStartState(d){return this.store.getStartState(d,this.initialState)}getFirstInvalidLine(){return this.store.getFirstInvalidLine(this.initialState)}}e.TokenizerWithStateStore=n;class t extends n{constructor(d,l,p,m){super(d,l),this._textModel=p,this._languageIdCodec=m}updateTokensUntilLine(d,l){const p=this._textModel.getLanguageId();for(;;){const m=this.getFirstInvalidLine();if(!m||m.lineNumber>l)break;const v=this._textModel.getLineContent(m.lineNumber),b=r(this._languageIdCodec,p,this.tokenizationSupport,v,!0,m.startState);d.add(m.lineNumber,b.tokens),this.store.setEndState(m.lineNumber,b.endState)}}getTokenTypeIfInsertingCharacter(d,l){const p=this.getStartState(d.lineNumber);if(!p)return 0;const m=this._textModel.getLanguageId(),v=this._textModel.getLineContent(d.lineNumber),b=v.substring(0,d.column-1)+l+v.substring(d.column-1),w=r(this._languageIdCodec,m,this.tokenizationSupport,b,!0,p),E=new i.LineTokens(w.tokens,b,this._languageIdCodec);if(E.getCount()===0)return 0;const I=E.findTokenIndexAtOffset(d.column-1);return E.getStandardTokenType(I)}tokenizeLineWithEdit(d,l,p){const m=d.lineNumber,v=d.column,b=this.getStartState(m);if(!b)return null;const w=this._textModel.getLineContent(m),E=w.substring(0,v-1)+p+w.substring(v-1+l),I=this._textModel.getLanguageIdAtPosition(m,0),M=r(this._languageIdCodec,I,this.tokenizationSupport,E,!0,b);return new i.LineTokens(M.tokens,E,this._languageIdCodec)}isCheapToTokenize(d){const l=this.store.getFirstInvalidEndStateLineNumberOrMax();return d<l||d===l&&this._textModel.getLineLength(d)<2048}tokenizeHeuristically(d,l,p){if(p<=this.store.getFirstInvalidEndStateLineNumberOrMax())return{heuristicTokens:!1};if(l<=this.store.getFirstInvalidEndStateLineNumberOrMax())return this.updateTokensUntilLine(d,p),{heuristicTokens:!1};let m=this.guessStartState(l);const v=this._textModel.getLanguageId();for(let b=l;b<=p;b++){const w=this._textModel.getLineContent(b),E=r(this._languageIdCodec,v,this.tokenizationSupport,w,!0,m);d.add(b,E.tokens),m=E.endState}return{heuristicTokens:!0}}guessStartState(d){let l=this._textModel.getLineFirstNonWhitespaceColumn(d);const p=[];let m=null;for(let w=d-1;l>1&&w>=1;w--){const E=this._textModel.getLineFirstNonWhitespaceColumn(w);if(E!==0&&E<l&&(p.push(this._textModel.getLineContent(w)),l=E,m=this.getStartState(w),m))break}m||(m=this.tokenizationSupport.getInitialState()),p.reverse();const v=this._textModel.getLanguageId();let b=m;for(const w of p)b=r(this._languageIdCodec,v,this.tokenizationSupport,w,!1,b).endState;return b}}e.TokenizerWithStateStoreAndTextModel=t;class a{constructor(d){this.lineCount=d,this._tokenizationStateStore=new u,this._invalidEndStatesLineNumbers=new h,this._invalidEndStatesLineNumbers.addRange(new _.OffsetRange(1,d+1))}getEndState(d){return this._tokenizationStateStore.getEndState(d)}setEndState(d,l){if(!l)throw new k.BugIndicatingError(\"Cannot set null/undefined state\");this._invalidEndStatesLineNumbers.delete(d);const p=this._tokenizationStateStore.setEndState(d,l);return p&&d<this.lineCount&&this._invalidEndStatesLineNumbers.addRange(new _.OffsetRange(d+1,d+2)),p}acceptChange(d,l){this.lineCount+=l-d.length,this._tokenizationStateStore.acceptChange(d,l),this._invalidEndStatesLineNumbers.addRangeAndResize(new _.OffsetRange(d.startLineNumber,d.endLineNumberExclusive),l)}acceptChanges(d){for(const l of d){const[p]=(0,S.countEOL)(l.text);this.acceptChange(new f.LineRange(l.range.startLineNumber,l.range.endLineNumber+1),p+1)}}invalidateEndStateRange(d){this._invalidEndStatesLineNumbers.addRange(new _.OffsetRange(d.startLineNumber,d.endLineNumberExclusive))}getFirstInvalidEndStateLineNumber(){return this._invalidEndStatesLineNumbers.min}getFirstInvalidEndStateLineNumberOrMax(){return this.getFirstInvalidEndStateLineNumber()||Number.MAX_SAFE_INTEGER}allStatesValid(){return this._invalidEndStatesLineNumbers.min===null}getStartState(d,l){return d===1?l:this.getEndState(d-1)}getFirstInvalidLine(d){const l=this.getFirstInvalidEndStateLineNumber();if(l===null)return null;const p=this.getStartState(l,d);if(!p)throw new k.BugIndicatingError(\"Start state must be defined\");return{lineNumber:l,startState:p}}}e.TrackingTokenizationStateStore=a;class u{constructor(){this._lineEndStates=new C.FixedArray(null)}getEndState(d){return this._lineEndStates.get(d)}setEndState(d,l){const p=this._lineEndStates.get(d);return p&&p.equals(l)?!1:(this._lineEndStates.set(d,l),!0)}acceptChange(d,l){let p=d.length;l>0&&p>0&&(p--,l--),this._lineEndStates.replace(d.startLineNumber,p,l)}}e.TokenizationStateStore=u;class h{constructor(){this._ranges=[]}get min(){return this._ranges.length===0?null:this._ranges[0].start}delete(d){const l=this._ranges.findIndex(p=>p.contains(d));if(l!==-1){const p=this._ranges[l];p.start===d?p.endExclusive===d+1?this._ranges.splice(l,1):this._ranges[l]=new _.OffsetRange(d+1,p.endExclusive):p.endExclusive===d+1?this._ranges[l]=new _.OffsetRange(p.start,d):this._ranges.splice(l,1,new _.OffsetRange(p.start,d),new _.OffsetRange(d+1,p.endExclusive))}}addRange(d){_.OffsetRange.addRange(d,this._ranges)}addRangeAndResize(d,l){let p=0;for(;!(p>=this._ranges.length||d.start<=this._ranges[p].endExclusive);)p++;let m=p;for(;!(m>=this._ranges.length||d.endExclusive<this._ranges[m].start);)m++;const v=l-d.length;for(let b=m;b<this._ranges.length;b++)this._ranges[b]=this._ranges[b].delta(v);if(p===m){const b=new _.OffsetRange(d.start,d.start+l);b.isEmpty||this._ranges.splice(p,0,b)}else{const b=Math.min(d.start,this._ranges[p].start),w=Math.max(d.endExclusive,this._ranges[m-1].endExclusive),E=new _.OffsetRange(b,w+v);E.isEmpty?this._ranges.splice(p,m-p):this._ranges.splice(p,m-p,E)}}toString(){return this._ranges.map(d=>d.toString()).join(\" + \")}}e.RangePriorityQueueImpl=h;function r(o,d,l,p,m,v){let b=null;if(l)try{b=l.tokenizeEncoded(p,m,v.clone())}catch(w){(0,k.onUnexpectedError)(w)}return b||(b=(0,g.nullTokenizeEncoded)(o.encodeLanguageId(d),v)),i.LineTokens.convertToEndOffset(b.tokens,p.length),b}class c{constructor(d,l){this._tokenizerWithStateStore=d,this._backgroundTokenStore=l,this._isDisposed=!1,this._isScheduled=!1}dispose(){this._isDisposed=!0}handleChanges(){this._beginBackgroundTokenization()}_beginBackgroundTokenization(){this._isScheduled||!this._tokenizerWithStateStore._textModel.isAttachedToEditor()||!this._hasLinesToTokenize()||(this._isScheduled=!0,(0,L.runWhenIdle)(d=>{this._isScheduled=!1,this._backgroundTokenizeWithDeadline(d)}))}_backgroundTokenizeWithDeadline(d){const l=Date.now()+d.timeRemaining(),p=()=>{this._isDisposed||!this._tokenizerWithStateStore._textModel.isAttachedToEditor()||!this._hasLinesToTokenize()||(this._backgroundTokenizeForAtLeast1ms(),Date.now()<l?(0,y.setTimeout0)(p):this._beginBackgroundTokenization())};p()}_backgroundTokenizeForAtLeast1ms(){const d=this._tokenizerWithStateStore._textModel.getLineCount(),l=new s.ContiguousMultilineTokensBuilder,p=D.StopWatch.create(!1);do if(p.elapsed()>1||this._tokenizeOneInvalidLine(l)>=d)break;while(this._hasLinesToTokenize());this._backgroundTokenStore.setTokens(l.finalize()),this.checkFinished()}_hasLinesToTokenize(){return this._tokenizerWithStateStore?!this._tokenizerWithStateStore.store.allStatesValid():!1}_tokenizeOneInvalidLine(d){var l;const p=(l=this._tokenizerWithStateStore)===null||l===void 0?void 0:l.getFirstInvalidLine();return p?(this._tokenizerWithStateStore.updateTokensUntilLine(d,p.lineNumber),p.lineNumber):this._tokenizerWithStateStore._textModel.getLineCount()+1}checkFinished(){this._isDisposed||this._tokenizerWithStateStore.store.allStatesValid()&&this._backgroundTokenStore.backgroundTokenizationFinished()}requestTokens(d,l){this._tokenizerWithStateStore.store.invalidateEndStateRange(new f.LineRange(d,l))}}e.DefaultBackgroundTokenizer=c}),define(ne[626],se([1,0,14,13,9,6,2,122,66,12,147,29,282,625,288,518,520]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenizationTextModelPart=void 0;class h extends i.TextModelPart{constructor(d,l,p,m,v,b){super(),this._languageService=d,this._languageConfigurationService=l,this._textModel=p,this._bracketPairsTextModelPart=m,this._languageId=v,this._attachedViews=b,this._semanticTokens=new u.SparseTokensStore(this._languageService.languageIdCodec),this._onDidChangeLanguage=this._register(new D.Emitter),this.onDidChangeLanguage=this._onDidChangeLanguage.event,this._onDidChangeLanguageConfiguration=this._register(new D.Emitter),this.onDidChangeLanguageConfiguration=this._onDidChangeLanguageConfiguration.event,this._onDidChangeTokens=this._register(new D.Emitter),this.onDidChangeTokens=this._onDidChangeTokens.event,this.grammarTokens=this._register(new r(this._languageService.languageIdCodec,this._textModel,()=>this._languageId,this._attachedViews)),this._register(this._languageConfigurationService.onDidChange(w=>{w.affects(this._languageId)&&this._onDidChangeLanguageConfiguration.fire({})})),this._register(this.grammarTokens.onDidChangeTokens(w=>{this._emitModelTokensChangedEvent(w)})),this._register(this.grammarTokens.onDidChangeBackgroundTokenizationState(w=>{this._bracketPairsTextModelPart.handleDidChangeBackgroundTokenizationState()}))}handleDidChangeContent(d){if(d.isFlush)this._semanticTokens.flush();else if(!d.isEolChange)for(const l of d.changes){const[p,m,v]=(0,f.countEOL)(l.text);this._semanticTokens.acceptEdit(l.range,p,m,v,l.text.length>0?l.text.charCodeAt(0):0)}this.grammarTokens.handleDidChangeContent(d)}handleDidChangeAttached(){this.grammarTokens.handleDidChangeAttached()}getLineTokens(d){this.validateLineNumber(d);const l=this.grammarTokens.getLineTokens(d);return this._semanticTokens.addSparseTokens(d,l)}_emitModelTokensChangedEvent(d){this._textModel._isDisposing()||(this._bracketPairsTextModelPart.handleDidChangeTokens(d),this._onDidChangeTokens.fire(d))}validateLineNumber(d){if(d<1||d>this._textModel.getLineCount())throw new y.BugIndicatingError(\"Illegal value for lineNumber\")}get hasTokens(){return this.grammarTokens.hasTokens}resetTokenization(){this.grammarTokens.resetTokenization()}get backgroundTokenizationState(){return this.grammarTokens.backgroundTokenizationState}forceTokenization(d){this.validateLineNumber(d),this.grammarTokens.forceTokenization(d)}isCheapToTokenize(d){return this.validateLineNumber(d),this.grammarTokens.isCheapToTokenize(d)}tokenizeIfCheap(d){this.validateLineNumber(d),this.grammarTokens.tokenizeIfCheap(d)}getTokenTypeIfInsertingCharacter(d,l,p){return this.grammarTokens.getTokenTypeIfInsertingCharacter(d,l,p)}tokenizeLineWithEdit(d,l,p){return this.grammarTokens.tokenizeLineWithEdit(d,l,p)}setSemanticTokens(d,l){this._semanticTokens.set(d,l),this._emitModelTokensChangedEvent({semanticTokensApplied:d!==null,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]})}hasCompleteSemanticTokens(){return this._semanticTokens.isComplete()}hasSomeSemanticTokens(){return!this._semanticTokens.isEmpty()}setPartialSemanticTokens(d,l){if(this.hasCompleteSemanticTokens())return;const p=this._textModel.validateRange(this._semanticTokens.setPartial(d,l));this._emitModelTokensChangedEvent({semanticTokensApplied:!0,ranges:[{fromLineNumber:p.startLineNumber,toLineNumber:p.endLineNumber}]})}getWordAtPosition(d){this.assertNotDisposed();const l=this._textModel.validatePosition(d),p=this._textModel.getLineContent(l.lineNumber),m=this.getLineTokens(l.lineNumber),v=m.findTokenIndexAtOffset(l.column-1),[b,w]=h._findLanguageBoundaries(m,v),E=(0,C.getWordAtText)(l.column,this.getLanguageConfiguration(m.getLanguageId(v)).getWordDefinition(),p.substring(b,w),b);if(E&&E.startColumn<=d.column&&d.column<=E.endColumn)return E;if(v>0&&b===l.column-1){const[I,M]=h._findLanguageBoundaries(m,v-1),P=(0,C.getWordAtText)(l.column,this.getLanguageConfiguration(m.getLanguageId(v-1)).getWordDefinition(),p.substring(I,M),I);if(P&&P.startColumn<=d.column&&d.column<=P.endColumn)return P}return null}getLanguageConfiguration(d){return this._languageConfigurationService.getLanguageConfiguration(d)}static _findLanguageBoundaries(d,l){const p=d.getLanguageId(l);let m=0;for(let b=l;b>=0&&d.getLanguageId(b)===p;b--)m=d.getStartOffset(b);let v=d.getLineContent().length;for(let b=l,w=d.getCount();b<w&&d.getLanguageId(b)===p;b++)v=d.getEndOffset(b);return[m,v]}getWordUntilPosition(d){const l=this.getWordAtPosition(d);return l?{word:l.word.substr(0,d.column-l.startColumn),startColumn:l.startColumn,endColumn:d.column}:{word:\"\",startColumn:d.column,endColumn:d.column}}getLanguageId(){return this._languageId}getLanguageIdAtPosition(d,l){const p=this._textModel.validatePosition(new g.Position(d,l)),m=this.getLineTokens(p.lineNumber);return m.getLanguageId(m.findTokenIndexAtOffset(p.column-1))}setLanguageId(d,l=\"api\"){if(this._languageId===d)return;const p={oldLanguage:this._languageId,newLanguage:d,source:l};this._languageId=d,this._bracketPairsTextModelPart.handleDidChangeLanguage(p),this.grammarTokens.resetTokenization(),this._onDidChangeLanguage.fire(p),this._onDidChangeLanguageConfiguration.fire({})}}e.TokenizationTextModelPart=h;class r extends S.Disposable{get backgroundTokenizationState(){return this._backgroundTokenizationState}constructor(d,l,p,m){super(),this._languageIdCodec=d,this._textModel=l,this.getLanguageId=p,this._tokenizer=null,this._defaultBackgroundTokenizer=null,this._backgroundTokenizer=this._register(new S.MutableDisposable),this._tokens=new a.ContiguousTokensStore(this._languageIdCodec),this._debugBackgroundTokenizer=this._register(new S.MutableDisposable),this._backgroundTokenizationState=1,this._onDidChangeBackgroundTokenizationState=this._register(new D.Emitter),this.onDidChangeBackgroundTokenizationState=this._onDidChangeBackgroundTokenizationState.event,this._onDidChangeTokens=this._register(new D.Emitter),this.onDidChangeTokens=this._onDidChangeTokens.event,this._attachedViewStates=this._register(new S.DisposableMap),this._register(s.TokenizationRegistry.onDidChange(v=>{const b=this.getLanguageId();v.changedLanguages.indexOf(b)!==-1&&this.resetTokenization()})),this.resetTokenization(),this._register(m.onDidChangeVisibleRanges(({view:v,state:b})=>{if(b){let w=this._attachedViewStates.get(v);w||(w=new c(()=>this.refreshRanges(w.lineRanges)),this._attachedViewStates.set(v,w)),w.handleStateChange(b)}else this._attachedViewStates.deleteAndDispose(v)}))}resetTokenization(d=!0){var l;this._tokens.flush(),(l=this._debugBackgroundTokens)===null||l===void 0||l.flush(),this._debugBackgroundStates&&(this._debugBackgroundStates=new n.TrackingTokenizationStateStore(this._textModel.getLineCount())),d&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]});const p=()=>{if(this._textModel.isTooLargeForTokenization())return[null,null];const b=s.TokenizationRegistry.get(this.getLanguageId());if(!b)return[null,null];let w;try{w=b.getInitialState()}catch(E){return(0,y.onUnexpectedError)(E),[null,null]}return[b,w]},[m,v]=p();if(m&&v?this._tokenizer=new n.TokenizerWithStateStoreAndTextModel(this._textModel.getLineCount(),m,this._textModel,this._languageIdCodec):this._tokenizer=null,this._backgroundTokenizer.clear(),this._defaultBackgroundTokenizer=null,this._tokenizer){const b={setTokens:w=>{this.setTokens(w)},backgroundTokenizationFinished:()=>{if(this._backgroundTokenizationState===2)return;const w=2;this._backgroundTokenizationState=w,this._onDidChangeBackgroundTokenizationState.fire()},setEndState:(w,E)=>{var I;if(!this._tokenizer)return;const M=this._tokenizer.store.getFirstInvalidEndStateLineNumber();M!==null&&w>=M&&((I=this._tokenizer)===null||I===void 0||I.store.setEndState(w,E))}};m&&m.createBackgroundTokenizer&&!m.backgroundTokenizerShouldOnlyVerifyTokens&&(this._backgroundTokenizer.value=m.createBackgroundTokenizer(this._textModel,b)),this._backgroundTokenizer.value||(this._backgroundTokenizer.value=this._defaultBackgroundTokenizer=new n.DefaultBackgroundTokenizer(this._tokenizer,b),this._defaultBackgroundTokenizer.handleChanges()),m?.backgroundTokenizerShouldOnlyVerifyTokens&&m.createBackgroundTokenizer?(this._debugBackgroundTokens=new a.ContiguousTokensStore(this._languageIdCodec),this._debugBackgroundStates=new n.TrackingTokenizationStateStore(this._textModel.getLineCount()),this._debugBackgroundTokenizer.clear(),this._debugBackgroundTokenizer.value=m.createBackgroundTokenizer(this._textModel,{setTokens:w=>{var E;(E=this._debugBackgroundTokens)===null||E===void 0||E.setMultilineTokens(w,this._textModel)},backgroundTokenizationFinished(){},setEndState:(w,E)=>{var I;(I=this._debugBackgroundStates)===null||I===void 0||I.setEndState(w,E)}})):(this._debugBackgroundTokens=void 0,this._debugBackgroundStates=void 0,this._debugBackgroundTokenizer.value=void 0)}this.refreshAllVisibleLineTokens()}handleDidChangeAttached(){var d;(d=this._defaultBackgroundTokenizer)===null||d===void 0||d.handleChanges()}handleDidChangeContent(d){var l,p,m;if(d.isFlush)this.resetTokenization(!1);else if(!d.isEolChange){for(const v of d.changes){const[b,w]=(0,f.countEOL)(v.text);this._tokens.acceptEdit(v.range,b,w),(l=this._debugBackgroundTokens)===null||l===void 0||l.acceptEdit(v.range,b,w)}(p=this._debugBackgroundStates)===null||p===void 0||p.acceptChanges(d.changes),this._tokenizer&&this._tokenizer.store.acceptChanges(d.changes),(m=this._defaultBackgroundTokenizer)===null||m===void 0||m.handleChanges()}}setTokens(d){const{changes:l}=this._tokens.setMultilineTokens(d,this._textModel);return l.length>0&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:l}),{changes:l}}refreshAllVisibleLineTokens(){const d=_.LineRange.joinMany([...this._attachedViewStates].map(([l,p])=>p.lineRanges));this.refreshRanges(d)}refreshRanges(d){for(const l of d)this.refreshRange(l.startLineNumber,l.endLineNumberExclusive-1)}refreshRange(d,l){var p,m;if(!this._tokenizer)return;d=Math.max(1,Math.min(this._textModel.getLineCount(),d)),l=Math.min(this._textModel.getLineCount(),l);const v=new t.ContiguousMultilineTokensBuilder,{heuristicTokens:b}=this._tokenizer.tokenizeHeuristically(v,d,l),w=this.setTokens(v.finalize());if(b)for(const E of w.changes)(p=this._backgroundTokenizer.value)===null||p===void 0||p.requestTokens(E.fromLineNumber,E.toLineNumber+1);(m=this._defaultBackgroundTokenizer)===null||m===void 0||m.checkFinished()}forceTokenization(d){var l,p;const m=new t.ContiguousMultilineTokensBuilder;(l=this._tokenizer)===null||l===void 0||l.updateTokensUntilLine(m,d),this.setTokens(m.finalize()),(p=this._defaultBackgroundTokenizer)===null||p===void 0||p.checkFinished()}isCheapToTokenize(d){return this._tokenizer?this._tokenizer.isCheapToTokenize(d):!0}tokenizeIfCheap(d){this.isCheapToTokenize(d)&&this.forceTokenization(d)}getLineTokens(d){var l;const p=this._textModel.getLineContent(d),m=this._tokens.getTokens(this._textModel.getLanguageId(),d-1,p);if(this._debugBackgroundTokens&&this._debugBackgroundStates&&this._tokenizer&&this._debugBackgroundStates.getFirstInvalidEndStateLineNumberOrMax()>d&&this._tokenizer.store.getFirstInvalidEndStateLineNumberOrMax()>d){const v=this._debugBackgroundTokens.getTokens(this._textModel.getLanguageId(),d-1,p);!m.equals(v)&&(!((l=this._debugBackgroundTokenizer.value)===null||l===void 0)&&l.reportMismatchingTokens)&&this._debugBackgroundTokenizer.value.reportMismatchingTokens(d)}return m}getTokenTypeIfInsertingCharacter(d,l,p){if(!this._tokenizer)return 0;const m=this._textModel.validatePosition(new g.Position(d,l));return this.forceTokenization(m.lineNumber),this._tokenizer.getTokenTypeIfInsertingCharacter(m,p)}tokenizeLineWithEdit(d,l,p){if(!this._tokenizer)return null;const m=this._textModel.validatePosition(d);return this.forceTokenization(m.lineNumber),this._tokenizer.tokenizeLineWithEdit(m,l,p)}get hasTokens(){return this._tokens.hasTokens}}class c extends S.Disposable{get lineRanges(){return this._lineRanges}constructor(d){super(),this._refreshTokens=d,this.runner=this._register(new k.RunOnceScheduler(()=>this.update(),50)),this._computedLineRanges=[],this._lineRanges=[]}update(){(0,L.equals)(this._computedLineRanges,this._lineRanges,(d,l)=>d.equals(l))||(this._computedLineRanges=this._lineRanges,this._refreshTokens())}handleStateChange(d){this._lineRanges=d.visibleLineRanges,d.stabilized?(this.runner.cancel(),this.update()):this.runner.schedule()}}}),define(ne[327],se([1,0,19,6,63,22,12,5,24,29,208]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createMonacoBaseAPI=e.KeyMod=void 0;class s{static chord(t,a){return(0,y.KeyChord)(t,a)}}e.KeyMod=s,s.CtrlCmd=2048,s.Shift=1024,s.Alt=512,s.WinCtrl=256;function i(){return{editor:void 0,languages:void 0,CancellationTokenSource:L.CancellationTokenSource,Emitter:k.Emitter,KeyCode:C.KeyCode,KeyMod:s,Position:S.Position,Range:f.Range,Selection:_.Selection,SelectionDirection:C.SelectionDirection,MarkerSeverity:C.MarkerSeverity,MarkerTag:C.MarkerTag,Uri:D.URI,Token:g.Token}}e.createMonacoBaseAPI=i}),define(ne[627],se([1,0,168,22,12,5,512,147,495,501,327,58,286,492,47,494]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.create=e.EditorSimpleWorker=void 0;class u extends S.MirrorTextModel{get uri(){return this._uri}get eol(){return this._eol}getValue(){return this.getText()}findMatches(o){const d=[];for(let l=0;l<this._lines.length;l++){const p=this._lines[l],m=this.offsetAt(new y.Position(l+1,1)),v=p.matchAll(o);for(const b of v)(b.index||b.index===0)&&(b.index=b.index+m),d.push(b)}return d}getLinesContent(){return this._lines.slice(0)}getLineCount(){return this._lines.length}getLineContent(o){return this._lines[o-1]}getWordAtPosition(o,d){const l=(0,f.getWordAtText)(o.column,(0,f.ensureValidWordDefinition)(d),this._lines[o.lineNumber-1],0);return l?new D.Range(o.lineNumber,l.startColumn,o.lineNumber,l.endColumn):null}words(o){const d=this._lines,l=this._wordenize.bind(this);let p=0,m=\"\",v=0,b=[];return{*[Symbol.iterator](){for(;;)if(v<b.length){const w=m.substring(b[v].start,b[v].end);v+=1,yield w}else if(p<d.length)m=d[p],b=l(m,o),v=0,p+=1;else break}}}getLineWords(o,d){const l=this._lines[o-1],p=this._wordenize(l,d),m=[];for(const v of p)m.push({word:l.substring(v.start,v.end),startColumn:v.start+1,endColumn:v.end+1});return m}_wordenize(o,d){const l=[];let p;for(d.lastIndex=0;(p=d.exec(o))&&p[0].length!==0;)l.push({start:p.index,end:p.index+p[0].length});return l}getValueInRange(o){if(o=this._validateRange(o),o.startLineNumber===o.endLineNumber)return this._lines[o.startLineNumber-1].substring(o.startColumn-1,o.endColumn-1);const d=this._eol,l=o.startLineNumber-1,p=o.endLineNumber-1,m=[];m.push(this._lines[l].substring(o.startColumn-1));for(let v=l+1;v<p;v++)m.push(this._lines[v]);return m.push(this._lines[p].substring(0,o.endColumn-1)),m.join(d)}offsetAt(o){return o=this._validatePosition(o),this._ensureLineStarts(),this._lineStarts.getPrefixSum(o.lineNumber-2)+(o.column-1)}positionAt(o){o=Math.floor(o),o=Math.max(0,o),this._ensureLineStarts();const d=this._lineStarts.getIndexOf(o),l=this._lines[d.index].length;return{lineNumber:1+d.index,column:1+Math.min(d.remainder,l)}}_validateRange(o){const d=this._validatePosition({lineNumber:o.startLineNumber,column:o.startColumn}),l=this._validatePosition({lineNumber:o.endLineNumber,column:o.endColumn});return d.lineNumber!==o.startLineNumber||d.column!==o.startColumn||l.lineNumber!==o.endLineNumber||l.column!==o.endColumn?{startLineNumber:d.lineNumber,startColumn:d.column,endLineNumber:l.lineNumber,endColumn:l.column}:o}_validatePosition(o){if(!y.Position.isIPosition(o))throw new Error(\"bad position\");let{lineNumber:d,column:l}=o,p=!1;if(d<1)d=1,l=1,p=!0;else if(d>this._lines.length)d=this._lines.length,l=this._lines[d-1].length+1,p=!0;else{const m=this._lines[d-1].length+1;l<1?(l=1,p=!0):l>m&&(l=m,p=!0)}return p?{lineNumber:d,column:l}:o}}class h{constructor(o,d){this._host=o,this._models=Object.create(null),this._foreignModuleFactory=d,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(o){return this._models[o]}_getModels(){const o=[];return Object.keys(this._models).forEach(d=>o.push(this._models[d])),o}acceptNewModel(o){this._models[o.url]=new u(k.URI.parse(o.url),o.lines,o.EOL,o.versionId)}acceptModelChanged(o,d){if(!this._models[o])return;this._models[o].onEvents(d)}acceptRemovedModel(o){this._models[o]&&delete this._models[o]}computeUnicodeHighlights(o,d,l){return we(this,void 0,void 0,function*(){const p=this._getModel(o);return p?i.UnicodeTextModelHighlighter.computeUnicodeHighlights(p,d,l):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}})}computeDiff(o,d,l,p){return we(this,void 0,void 0,function*(){const m=this._getModel(o),v=this._getModel(d);return!m||!v?null:h.computeDiff(m,v,l,p)})}static computeDiff(o,d,l,p){const m=p===\"advanced\"?n.linesDiffComputers.getAdvanced():n.linesDiffComputers.getLegacy(),v=o.getLinesContent(),b=d.getLinesContent(),w=m.computeDiff(v,b,l),E=w.changes.length>0?!1:this._modelsAreIdentical(o,d);function I(M){return M.map(P=>{var x;return[P.originalRange.startLineNumber,P.originalRange.endLineNumberExclusive,P.modifiedRange.startLineNumber,P.modifiedRange.endLineNumberExclusive,(x=P.innerChanges)===null||x===void 0?void 0:x.map(T=>[T.originalRange.startLineNumber,T.originalRange.startColumn,T.originalRange.endLineNumber,T.originalRange.endColumn,T.modifiedRange.startLineNumber,T.modifiedRange.startColumn,T.modifiedRange.endLineNumber,T.modifiedRange.endColumn])]})}return{identical:E,quitEarly:w.hitTimeout,changes:I(w.changes),moves:w.moves.map(M=>[M.lineRangeMapping.original.startLineNumber,M.lineRangeMapping.original.endLineNumberExclusive,M.lineRangeMapping.modified.startLineNumber,M.lineRangeMapping.modified.endLineNumberExclusive,I(M.changes)])}}static _modelsAreIdentical(o,d){const l=o.getLineCount(),p=d.getLineCount();if(l!==p)return!1;for(let m=1;m<=l;m++){const v=o.getLineContent(m),b=d.getLineContent(m);if(v!==b)return!1}return!0}computeMoreMinimalEdits(o,d,l){return we(this,void 0,void 0,function*(){const p=this._getModel(o);if(!p)return d;const m=[];let v;d=d.slice(0).sort((b,w)=>{if(b.range&&w.range)return D.Range.compareRangesUsingStarts(b.range,w.range);const E=b.range?0:1,I=w.range?0:1;return E-I});for(let{range:b,text:w,eol:E}of d){if(typeof E==\"number\"&&(v=E),D.Range.isEmpty(b)&&!w)continue;const I=p.getValueInRange(b);if(w=w.replace(/\\r\\n|\\n|\\r/g,p.eol),I===w)continue;if(Math.max(w.length,I.length)>h._diffLimit){m.push({range:b,text:w});continue}const M=(0,L.stringDiff)(I,w,l),P=p.offsetAt(D.Range.lift(b).getStartPosition());for(const x of M){const T=p.positionAt(P+x.originalStart),A=p.positionAt(P+x.originalStart+x.originalLength),N={text:w.substr(x.modifiedStart,x.modifiedLength),range:{startLineNumber:T.lineNumber,startColumn:T.column,endLineNumber:A.lineNumber,endColumn:A.column}};p.getValueInRange(N.range)!==N.text&&m.push(N)}}return typeof v==\"number\"&&m.push({eol:v,text:\"\",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),m})}computeLinks(o){return we(this,void 0,void 0,function*(){const d=this._getModel(o);return d?(0,_.computeLinks)(d):null})}computeDefaultDocumentColors(o){return we(this,void 0,void 0,function*(){const d=this._getModel(o);return d?(0,a.computeDefaultDocumentColors)(d):null})}textualSuggest(o,d,l,p){return we(this,void 0,void 0,function*(){const m=new s.StopWatch,v=new RegExp(l,p),b=new Set;e:for(const w of o){const E=this._getModel(w);if(E){for(const I of E.words(v))if(!(I===d||!isNaN(Number(I)))&&(b.add(I),b.size>h._suggestionsLimit))break e}}return{words:Array.from(b),duration:m.elapsed()}})}computeWordRanges(o,d,l,p){return we(this,void 0,void 0,function*(){const m=this._getModel(o);if(!m)return Object.create(null);const v=new RegExp(l,p),b=Object.create(null);for(let w=d.startLineNumber;w<d.endLineNumber;w++){const E=m.getLineWords(w,v);for(const I of E){if(!isNaN(Number(I.word)))continue;let M=b[I.word];M||(M=[],b[I.word]=M),M.push({startLineNumber:w,startColumn:I.startColumn,endLineNumber:w,endColumn:I.endColumn})}}return b})}navigateValueSet(o,d,l,p,m){return we(this,void 0,void 0,function*(){const v=this._getModel(o);if(!v)return null;const b=new RegExp(p,m);d.startColumn===d.endColumn&&(d={startLineNumber:d.startLineNumber,startColumn:d.startColumn,endLineNumber:d.endLineNumber,endColumn:d.endColumn+1});const w=v.getValueInRange(d),E=v.getWordAtPosition({lineNumber:d.startLineNumber,column:d.startColumn},b);if(!E)return null;const I=v.getValueInRange(E);return g.BasicInplaceReplace.INSTANCE.navigateValueSet(d,w,E,I,l)})}loadForeignModule(o,d,l){const p=(b,w)=>this._host.fhr(b,w),v={host:(0,t.createProxyObject)(l,p),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(v,d),Promise.resolve((0,t.getAllMethodNames)(this._foreignModule))):new Promise((b,w)=>{Q([o],E=>{this._foreignModule=E.create(v,d),b((0,t.getAllMethodNames)(this._foreignModule))},w)})}fmr(o,d){if(!this._foreignModule||typeof this._foreignModule[o]!=\"function\")return Promise.reject(new Error(\"Missing requestHandler or method: \"+o));try{return Promise.resolve(this._foreignModule[o].apply(this._foreignModule,d))}catch(l){return Promise.reject(l)}}}e.EditorSimpleWorker=h,h._diffLimit=1e5,h._suggestionsLimit=1e4;function r(c){return new h(c,null)}e.create=r,typeof importScripts==\"function\"&&(globalThis.monaco=(0,C.createMonacoBaseAPI)())}),define(ne[328],se([1,0,6,2,274,29]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MinimapTokensColorTracker=void 0;class S extends k.Disposable{static getInstance(){return this._INSTANCE||(this._INSTANCE=(0,k.markAsSingleton)(new S)),this._INSTANCE}constructor(){super(),this._onDidChange=new L.Emitter,this.onDidChange=this._onDidChange.event,this._updateColorMap(),this._register(D.TokenizationRegistry.onDidChange(_=>{_.changedColorMap&&this._updateColorMap()}))}_updateColorMap(){const _=D.TokenizationRegistry.getColorMap();if(!_){this._colors=[y.RGBA8.Empty],this._backgroundIsLight=!0;return}this._colors=[y.RGBA8.Empty];for(let C=1;C<_.length;C++){const s=_[C].rgba;this._colors[C]=new y.RGBA8(s.r,s.g,s.b,Math.round(s.a*255))}const g=_[2].getRelativeLuminance();this._backgroundIsLight=g>=.5,this._onDidChange.fire(void 0)}getColor(_){return(_<1||_>=this._colors.length)&&(_=2),this._colors[_]}backgroundIsLight(){return this._backgroundIsLight}}e.MinimapTokensColorTracker=S,S._INSTANCE=null}),define(ne[628],se([3,4]),function(Q,e){return Q.create(\"vs/editor/common/languages/modesRegistry\",e)}),define(ne[629],se([3,4]),function(Q,e){return Q.create(\"vs/editor/common/model/editStack\",e)}),define(ne[329],se([1,0,629,9,24,22,319,140,45]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditStack=e.isEditStackElement=e.MultiModelEditStackElement=e.SingleModelEditStackElement=e.SingleModelEditStackData=void 0;function g(u){return u.toString()}class C{static create(h,r){const c=h.getAlternativeVersionId(),o=n(h);return new C(c,c,o,o,r,r,[])}constructor(h,r,c,o,d,l,p){this.beforeVersionId=h,this.afterVersionId=r,this.beforeEOL=c,this.afterEOL=o,this.beforeCursorState=d,this.afterCursorState=l,this.changes=p}append(h,r,c,o,d){r.length>0&&(this.changes=(0,S.compressConsecutiveTextChanges)(this.changes,r)),this.afterEOL=c,this.afterVersionId=o,this.afterCursorState=d}static _writeSelectionsSize(h){return 4+4*4*(h?h.length:0)}static _writeSelections(h,r,c){if(f.writeUInt32BE(h,r?r.length:0,c),c+=4,r)for(const o of r)f.writeUInt32BE(h,o.selectionStartLineNumber,c),c+=4,f.writeUInt32BE(h,o.selectionStartColumn,c),c+=4,f.writeUInt32BE(h,o.positionLineNumber,c),c+=4,f.writeUInt32BE(h,o.positionColumn,c),c+=4;return c}static _readSelections(h,r,c){const o=f.readUInt32BE(h,r);r+=4;for(let d=0;d<o;d++){const l=f.readUInt32BE(h,r);r+=4;const p=f.readUInt32BE(h,r);r+=4;const m=f.readUInt32BE(h,r);r+=4;const v=f.readUInt32BE(h,r);r+=4,c.push(new y.Selection(l,p,m,v))}return r}serialize(){let h=10+C._writeSelectionsSize(this.beforeCursorState)+C._writeSelectionsSize(this.afterCursorState)+4;for(const o of this.changes)h+=o.writeSize();const r=new Uint8Array(h);let c=0;f.writeUInt32BE(r,this.beforeVersionId,c),c+=4,f.writeUInt32BE(r,this.afterVersionId,c),c+=4,f.writeUInt8(r,this.beforeEOL,c),c+=1,f.writeUInt8(r,this.afterEOL,c),c+=1,c=C._writeSelections(r,this.beforeCursorState,c),c=C._writeSelections(r,this.afterCursorState,c),f.writeUInt32BE(r,this.changes.length,c),c+=4;for(const o of this.changes)c=o.write(r,c);return r.buffer}static deserialize(h){const r=new Uint8Array(h);let c=0;const o=f.readUInt32BE(r,c);c+=4;const d=f.readUInt32BE(r,c);c+=4;const l=f.readUInt8(r,c);c+=1;const p=f.readUInt8(r,c);c+=1;const m=[];c=C._readSelections(r,c,m);const v=[];c=C._readSelections(r,c,v);const b=f.readUInt32BE(r,c);c+=4;const w=[];for(let E=0;E<b;E++)c=S.TextChange.read(r,c,w);return new C(o,d,l,p,m,v,w)}}e.SingleModelEditStackData=C;class s{get type(){return 0}get resource(){return D.URI.isUri(this.model)?this.model:this.model.uri}constructor(h,r,c,o){this.label=h,this.code=r,this.model=c,this._data=C.create(c,o)}toString(){return(this._data instanceof C?this._data:C.deserialize(this._data)).changes.map(r=>r.toString()).join(\", \")}matchesResource(h){return(D.URI.isUri(this.model)?this.model:this.model.uri).toString()===h.toString()}setModel(h){this.model=h}canAppend(h){return this.model===h&&this._data instanceof C}append(h,r,c,o,d){this._data instanceof C&&this._data.append(h,r,c,o,d)}close(){this._data instanceof C&&(this._data=this._data.serialize())}open(){this._data instanceof C||(this._data=C.deserialize(this._data))}undo(){if(D.URI.isUri(this.model))throw new Error(\"Invalid SingleModelEditStackElement\");this._data instanceof C&&(this._data=this._data.serialize());const h=C.deserialize(this._data);this.model._applyUndo(h.changes,h.beforeEOL,h.beforeVersionId,h.beforeCursorState)}redo(){if(D.URI.isUri(this.model))throw new Error(\"Invalid SingleModelEditStackElement\");this._data instanceof C&&(this._data=this._data.serialize());const h=C.deserialize(this._data);this.model._applyRedo(h.changes,h.afterEOL,h.afterVersionId,h.afterCursorState)}heapSize(){return this._data instanceof C&&(this._data=this._data.serialize()),this._data.byteLength+168}}e.SingleModelEditStackElement=s;class i{get resources(){return this._editStackElementsArr.map(h=>h.resource)}constructor(h,r,c){this.label=h,this.code=r,this.type=1,this._isOpen=!0,this._editStackElementsArr=c.slice(0),this._editStackElementsMap=new Map;for(const o of this._editStackElementsArr){const d=g(o.resource);this._editStackElementsMap.set(d,o)}this._delegate=null}prepareUndoRedo(){if(this._delegate)return this._delegate.prepareUndoRedo(this)}matchesResource(h){const r=g(h);return this._editStackElementsMap.has(r)}setModel(h){const r=g(D.URI.isUri(h)?h:h.uri);this._editStackElementsMap.has(r)&&this._editStackElementsMap.get(r).setModel(h)}canAppend(h){if(!this._isOpen)return!1;const r=g(h.uri);return this._editStackElementsMap.has(r)?this._editStackElementsMap.get(r).canAppend(h):!1}append(h,r,c,o,d){const l=g(h.uri);this._editStackElementsMap.get(l).append(h,r,c,o,d)}close(){this._isOpen=!1}open(){}undo(){this._isOpen=!1;for(const h of this._editStackElementsArr)h.undo()}redo(){for(const h of this._editStackElementsArr)h.redo()}heapSize(h){const r=g(h);return this._editStackElementsMap.has(r)?this._editStackElementsMap.get(r).heapSize():0}split(){return this._editStackElementsArr}toString(){const h=[];for(const r of this._editStackElementsArr)h.push(`${(0,_.basename)(r.resource)}: ${r}`);return`{${h.join(\", \")}}`}}e.MultiModelEditStackElement=i;function n(u){return u.getEOL()===`\n`?0:1}function t(u){return u?u instanceof s||u instanceof i:!1}e.isEditStackElement=t;class a{constructor(h,r){this._model=h,this._undoRedoService=r}pushStackElement(){const h=this._undoRedoService.getLastElement(this._model.uri);t(h)&&h.close()}popStackElement(){const h=this._undoRedoService.getLastElement(this._model.uri);t(h)&&h.open()}clear(){this._undoRedoService.removeElements(this._model.uri)}_getOrCreateEditStackElement(h,r){const c=this._undoRedoService.getLastElement(this._model.uri);if(t(c)&&c.canAppend(this._model))return c;const o=new s(L.localize(0,null),\"undoredo.textBufferEdit\",this._model,h);return this._undoRedoService.pushElement(o,r),o}pushEOL(h){const r=this._getOrCreateEditStackElement(null,void 0);this._model.setEOL(h),r.append(this._model,[],n(this._model),this._model.getAlternativeVersionId(),null)}pushEditOperation(h,r,c,o){const d=this._getOrCreateEditStackElement(h,o),l=this._model.applyEdits(r,!0),p=a._computeCursorState(c,l),m=l.map((v,b)=>({index:b,textChange:v.textChange}));return m.sort((v,b)=>v.textChange.oldPosition===b.textChange.oldPosition?v.index-b.index:v.textChange.oldPosition-b.textChange.oldPosition),d.append(this._model,m.map(v=>v.textChange),n(this._model),this._model.getAlternativeVersionId(),p),p}static _computeCursorState(h,r){try{return h?h(r):null}catch(c){return(0,k.onUnexpectedError)(c),null}}}e.EditStack=a}),define(ne[630],se([3,4]),function(Q,e){return Q.create(\"vs/editor/common/standaloneStrings\",e)}),define(ne[94],se([1,0,630]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StandaloneServicesNLS=e.ToggleHighContrastNLS=e.StandaloneCodeEditorNLS=e.QuickOutlineNLS=e.QuickCommandNLS=e.QuickHelpNLS=e.GoToLineNLS=e.InspectTokensNLS=void 0;var k;(function(s){s.inspectTokensAction=L.localize(0,null)})(k||(e.InspectTokensNLS=k={}));var y;(function(s){s.gotoLineActionLabel=L.localize(1,null)})(y||(e.GoToLineNLS=y={}));var D;(function(s){s.helpQuickAccessActionLabel=L.localize(2,null)})(D||(e.QuickHelpNLS=D={}));var S;(function(s){s.quickCommandActionLabel=L.localize(3,null),s.quickCommandHelp=L.localize(4,null)})(S||(e.QuickCommandNLS=S={}));var f;(function(s){s.quickOutlineActionLabel=L.localize(5,null),s.quickOutlineByCategoryActionLabel=L.localize(6,null)})(f||(e.QuickOutlineNLS=f={}));var _;(function(s){s.editorViewAccessibleLabel=L.localize(7,null),s.accessibilityHelpMessage=L.localize(8,null)})(_||(e.StandaloneCodeEditorNLS=_={}));var g;(function(s){s.toggleHighContrast=L.localize(9,null)})(g||(e.ToggleHighContrastNLS=g={}));var C;(function(s){s.bulkEditServiceSummary=L.localize(10,null)})(C||(e.StandaloneServicesNLS=C={}))}),define(ne[631],se([3,4]),function(Q,e){return Q.create(\"vs/editor/common/viewLayout/viewLineRenderer\",e)}),define(ne[95],se([1,0,631,11,93,127,529]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.renderViewLine2=e.RenderLineOutput2=e.renderViewLine=e.RenderLineOutput=e.CharacterMapping=e.DomPosition=e.RenderLineInput=e.LineRange=void 0;class f{constructor(w,E){this.startOffset=w,this.endOffset=E}equals(w){return this.startOffset===w.startOffset&&this.endOffset===w.endOffset}}e.LineRange=f;class _{constructor(w,E,I,M,P,x,T,A,N,F,O,W,U,j,R,K,G,Z,J){this.useMonospaceOptimizations=w,this.canUseHalfwidthRightwardsArrow=E,this.lineContent=I,this.continuesWithWrappedLine=M,this.isBasicASCII=P,this.containsRTL=x,this.fauxIndentLength=T,this.lineTokens=A,this.lineDecorations=N.sort(D.LineDecoration.compare),this.tabSize=F,this.startVisibleColumn=O,this.spaceWidth=W,this.stopRenderingLineAfter=R,this.renderWhitespace=K===\"all\"?4:K===\"boundary\"?1:K===\"selection\"?2:K===\"trailing\"?3:0,this.renderControlCharacters=G,this.fontLigatures=Z,this.selectionsOnLine=J&&J.sort((B,V)=>B.startOffset<V.startOffset?-1:1);const X=Math.abs(j-W),H=Math.abs(U-W);X<H?(this.renderSpaceWidth=j,this.renderSpaceCharCode=11825):(this.renderSpaceWidth=U,this.renderSpaceCharCode=183)}sameSelection(w){if(this.selectionsOnLine===null)return w===null;if(w===null||w.length!==this.selectionsOnLine.length)return!1;for(let E=0;E<this.selectionsOnLine.length;E++)if(!this.selectionsOnLine[E].equals(w[E]))return!1;return!0}equals(w){return this.useMonospaceOptimizations===w.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===w.canUseHalfwidthRightwardsArrow&&this.lineContent===w.lineContent&&this.continuesWithWrappedLine===w.continuesWithWrappedLine&&this.isBasicASCII===w.isBasicASCII&&this.containsRTL===w.containsRTL&&this.fauxIndentLength===w.fauxIndentLength&&this.tabSize===w.tabSize&&this.startVisibleColumn===w.startVisibleColumn&&this.spaceWidth===w.spaceWidth&&this.renderSpaceWidth===w.renderSpaceWidth&&this.renderSpaceCharCode===w.renderSpaceCharCode&&this.stopRenderingLineAfter===w.stopRenderingLineAfter&&this.renderWhitespace===w.renderWhitespace&&this.renderControlCharacters===w.renderControlCharacters&&this.fontLigatures===w.fontLigatures&&D.LineDecoration.equalsArr(this.lineDecorations,w.lineDecorations)&&this.lineTokens.equals(w.lineTokens)&&this.sameSelection(w.selectionsOnLine)}}e.RenderLineInput=_;class g{constructor(w,E){this.partIndex=w,this.charIndex=E}}e.DomPosition=g;class C{static getPartIndex(w){return(w&4294901760)>>>16}static getCharIndex(w){return(w&65535)>>>0}constructor(w,E){this.length=w,this._data=new Uint32Array(this.length),this._horizontalOffset=new Uint32Array(this.length)}setColumnInfo(w,E,I,M){const P=(E<<16|I<<0)>>>0;this._data[w-1]=P,this._horizontalOffset[w-1]=M}getHorizontalOffset(w){return this._horizontalOffset.length===0?0:this._horizontalOffset[w-1]}charOffsetToPartData(w){return this.length===0?0:w<0?this._data[0]:w>=this.length?this._data[this.length-1]:this._data[w]}getDomPosition(w){const E=this.charOffsetToPartData(w-1),I=C.getPartIndex(E),M=C.getCharIndex(E);return new g(I,M)}getColumn(w,E){return this.partDataToCharOffset(w.partIndex,E,w.charIndex)+1}partDataToCharOffset(w,E,I){if(this.length===0)return 0;const M=(w<<16|I<<0)>>>0;let P=0,x=this.length-1;for(;P+1<x;){const R=P+x>>>1,K=this._data[R];if(K===M)return R;K>M?x=R:P=R}if(P===x)return P;const T=this._data[P],A=this._data[x];if(T===M)return P;if(A===M)return x;const N=C.getPartIndex(T),F=C.getCharIndex(T),O=C.getPartIndex(A);let W;N!==O?W=E:W=C.getCharIndex(A);const U=I-F,j=W-I;return U<=j?P:x}}e.CharacterMapping=C;class s{constructor(w,E,I){this._renderLineOutputBrand=void 0,this.characterMapping=w,this.containsRTL=E,this.containsForeignElements=I}}e.RenderLineOutput=s;function i(b,w){if(b.lineContent.length===0){if(b.lineDecorations.length>0){w.appendString(\"<span>\");let E=0,I=0,M=0;for(const x of b.lineDecorations)(x.type===1||x.type===2)&&(w.appendString('<span class=\"'),w.appendString(x.className),w.appendString('\"></span>'),x.type===1&&(M|=1,E++),x.type===2&&(M|=2,I++));w.appendString(\"</span>\");const P=new C(1,E+I);return P.setColumnInfo(1,E,0,0),new s(P,!1,M)}return w.appendString(\"<span><span></span></span>\"),new s(new C(0,0),!1,0)}return p(u(b),w)}e.renderViewLine=i;class n{constructor(w,E,I,M){this.characterMapping=w,this.html=E,this.containsRTL=I,this.containsForeignElements=M}}e.RenderLineOutput2=n;function t(b){const w=new y.StringBuilder(1e4),E=i(b,w);return new n(E.characterMapping,w.build(),E.containsRTL,E.containsForeignElements)}e.renderViewLine2=t;class a{constructor(w,E,I,M,P,x,T,A,N,F,O,W,U,j,R,K){this.fontIsMonospace=w,this.canUseHalfwidthRightwardsArrow=E,this.lineContent=I,this.len=M,this.isOverflowing=P,this.overflowingCharCount=x,this.parts=T,this.containsForeignElements=A,this.fauxIndentLength=N,this.tabSize=F,this.startVisibleColumn=O,this.containsRTL=W,this.spaceWidth=U,this.renderSpaceCharCode=j,this.renderWhitespace=R,this.renderControlCharacters=K}}function u(b){const w=b.lineContent;let E,I,M;b.stopRenderingLineAfter!==-1&&b.stopRenderingLineAfter<w.length?(E=!0,I=w.length-b.stopRenderingLineAfter,M=b.stopRenderingLineAfter):(E=!1,I=0,M=w.length);let P=h(w,b.containsRTL,b.lineTokens,b.fauxIndentLength,M);b.renderControlCharacters&&!b.isBasicASCII&&(P=o(w,P)),(b.renderWhitespace===4||b.renderWhitespace===1||b.renderWhitespace===2&&b.selectionsOnLine||b.renderWhitespace===3&&!b.continuesWithWrappedLine)&&(P=d(b,w,M,P));let x=0;if(b.lineDecorations.length>0){for(let T=0,A=b.lineDecorations.length;T<A;T++){const N=b.lineDecorations[T];N.type===3||N.type===1?x|=1:N.type===2&&(x|=2)}P=l(w,M,P,b.lineDecorations)}return b.containsRTL||(P=r(w,P,!b.isBasicASCII||b.fontLigatures)),new a(b.useMonospaceOptimizations,b.canUseHalfwidthRightwardsArrow,w,M,E,I,P,x,b.fauxIndentLength,b.tabSize,b.startVisibleColumn,b.containsRTL,b.spaceWidth,b.renderSpaceCharCode,b.renderWhitespace,b.renderControlCharacters)}function h(b,w,E,I,M){const P=[];let x=0;I>0&&(P[x++]=new S.LinePart(I,\"\",0,!1));let T=I;for(let A=0,N=E.getCount();A<N;A++){const F=E.getEndOffset(A);if(F<=I)continue;const O=E.getClassName(A);if(F>=M){const U=w?k.containsRTL(b.substring(T,M)):!1;P[x++]=new S.LinePart(M,O,0,U);break}const W=w?k.containsRTL(b.substring(T,F)):!1;P[x++]=new S.LinePart(F,O,0,W),T=F}return P}function r(b,w,E){let I=0;const M=[];let P=0;if(E)for(let x=0,T=w.length;x<T;x++){const A=w[x],N=A.endIndex;if(I+50<N){const F=A.type,O=A.metadata,W=A.containsRTL;let U=-1,j=I;for(let R=I;R<N;R++)b.charCodeAt(R)===32&&(U=R),U!==-1&&R-j>=50&&(M[P++]=new S.LinePart(U+1,F,O,W),j=U+1,U=-1);j!==N&&(M[P++]=new S.LinePart(N,F,O,W))}else M[P++]=A;I=N}else for(let x=0,T=w.length;x<T;x++){const A=w[x],N=A.endIndex,F=N-I;if(F>50){const O=A.type,W=A.metadata,U=A.containsRTL,j=Math.ceil(F/50);for(let R=1;R<j;R++){const K=I+R*50;M[P++]=new S.LinePart(K,O,W,U)}M[P++]=new S.LinePart(N,O,W,U)}else M[P++]=A;I=N}return M}function c(b){return b<32?b!==9:b===127||b>=8234&&b<=8238||b>=8294&&b<=8297||b>=8206&&b<=8207||b===1564}function o(b,w){const E=[];let I=new S.LinePart(0,\"\",0,!1),M=0;for(const P of w){const x=P.endIndex;for(;M<x;M++){const T=b.charCodeAt(M);c(T)&&(M>I.endIndex&&(I=new S.LinePart(M,P.type,P.metadata,P.containsRTL),E.push(I)),I=new S.LinePart(M+1,\"mtkcontrol\",P.metadata,!1),E.push(I))}M>I.endIndex&&(I=new S.LinePart(x,P.type,P.metadata,P.containsRTL),E.push(I))}return E}function d(b,w,E,I){const M=b.continuesWithWrappedLine,P=b.fauxIndentLength,x=b.tabSize,T=b.startVisibleColumn,A=b.useMonospaceOptimizations,N=b.selectionsOnLine,F=b.renderWhitespace===1,O=b.renderWhitespace===3,W=b.renderSpaceWidth!==b.spaceWidth,U=[];let j=0,R=0,K=I[R].type,G=I[R].containsRTL,Z=I[R].endIndex;const J=I.length;let X=!1,H=k.firstNonWhitespaceIndex(w),B;H===-1?(X=!0,H=E,B=E):B=k.lastNonWhitespaceIndex(w);let V=!1,Y=0,ie=N&&N[Y],ae=T%x;for(let de=P;de<E;de++){const he=w.charCodeAt(de);ie&&de>=ie.endOffset&&(Y++,ie=N&&N[Y]);let ue;if(de<H||de>B)ue=!0;else if(he===9)ue=!0;else if(he===32)if(F)if(V)ue=!0;else{const te=de+1<E?w.charCodeAt(de+1):0;ue=te===32||te===9}else ue=!0;else ue=!1;if(ue&&N&&(ue=!!ie&&ie.startOffset<=de&&ie.endOffset>de),ue&&O&&(ue=X||de>B),ue&&G&&de>=H&&de<=B&&(ue=!1),V){if(!ue||!A&&ae>=x){if(W){const te=j>0?U[j-1].endIndex:P;for(let q=te+1;q<=de;q++)U[j++]=new S.LinePart(q,\"mtkw\",1,!1)}else U[j++]=new S.LinePart(de,\"mtkw\",1,!1);ae=ae%x}}else(de===Z||ue&&de>P)&&(U[j++]=new S.LinePart(de,K,0,G),ae=ae%x);for(he===9?ae=x:k.isFullWidthCharacter(he)?ae+=2:ae++,V=ue;de===Z&&(R++,R<J);)K=I[R].type,G=I[R].containsRTL,Z=I[R].endIndex}let ce=!1;if(V)if(M&&F){const de=E>0?w.charCodeAt(E-1):0,he=E>1?w.charCodeAt(E-2):0;de===32&&he!==32&&he!==9||(ce=!0)}else ce=!0;if(ce)if(W){const de=j>0?U[j-1].endIndex:P;for(let he=de+1;he<=E;he++)U[j++]=new S.LinePart(he,\"mtkw\",1,!1)}else U[j++]=new S.LinePart(E,\"mtkw\",1,!1);else U[j++]=new S.LinePart(E,K,0,G);return U}function l(b,w,E,I){I.sort(D.LineDecoration.compare);const M=D.LineDecorationsNormalizer.normalize(b,I),P=M.length;let x=0;const T=[];let A=0,N=0;for(let O=0,W=E.length;O<W;O++){const U=E[O],j=U.endIndex,R=U.type,K=U.metadata,G=U.containsRTL;for(;x<P&&M[x].startOffset<j;){const Z=M[x];if(Z.startOffset>N&&(N=Z.startOffset,T[A++]=new S.LinePart(N,R,K,G)),Z.endOffset+1<=j)N=Z.endOffset+1,T[A++]=new S.LinePart(N,R+\" \"+Z.className,K|Z.metadata,G),x++;else{N=j,T[A++]=new S.LinePart(N,R+\" \"+Z.className,K|Z.metadata,G);break}}j>N&&(N=j,T[A++]=new S.LinePart(N,R,K,G))}const F=E[E.length-1].endIndex;if(x<P&&M[x].startOffset===F)for(;x<P&&M[x].startOffset===F;){const O=M[x];T[A++]=new S.LinePart(N,O.className,O.metadata,!1),x++}return T}function p(b,w){const E=b.fontIsMonospace,I=b.canUseHalfwidthRightwardsArrow,M=b.containsForeignElements,P=b.lineContent,x=b.len,T=b.isOverflowing,A=b.overflowingCharCount,N=b.parts,F=b.fauxIndentLength,O=b.tabSize,W=b.startVisibleColumn,U=b.containsRTL,j=b.spaceWidth,R=b.renderSpaceCharCode,K=b.renderWhitespace,G=b.renderControlCharacters,Z=new C(x+1,N.length);let J=!1,X=0,H=W,B=0,V=0,Y=0;U?w.appendString('<span dir=\"ltr\">'):w.appendString(\"<span>\");for(let ie=0,ae=N.length;ie<ae;ie++){const ce=N[ie],de=ce.endIndex,he=ce.type,ue=ce.containsRTL,te=K!==0&&ce.isWhitespace(),q=te&&!E&&(he===\"mtkw\"||!M),z=X===de&&ce.isPseudoAfter();if(B=0,w.appendString(\"<span \"),ue&&w.appendString('style=\"unicode-bidi:isolate\" '),w.appendString('class=\"'),w.appendString(q?\"mtkz\":he),w.appendASCIICharCode(34),te){let ee=0;{let $=X,re=H;for(;$<de;$++){const ge=(P.charCodeAt($)===9?O-re%O:1)|0;ee+=ge,$>=F&&(re+=ge)}}for(q&&(w.appendString(' style=\"width:'),w.appendString(String(j*ee)),w.appendString('px\"')),w.appendASCIICharCode(62);X<de;X++){Z.setColumnInfo(X+1,ie-Y,B,V),Y=0;const $=P.charCodeAt(X);let re,oe;if($===9){re=O-H%O|0,oe=re,!I||oe>1?w.appendCharCode(8594):w.appendCharCode(65515);for(let ge=2;ge<=oe;ge++)w.appendCharCode(160)}else re=2,oe=1,w.appendCharCode(R),w.appendCharCode(8204);B+=re,V+=oe,X>=F&&(H+=oe)}}else for(w.appendASCIICharCode(62);X<de;X++){Z.setColumnInfo(X+1,ie-Y,B,V),Y=0;const ee=P.charCodeAt(X);let $=1,re=1;switch(ee){case 9:$=O-H%O,re=$;for(let oe=1;oe<=$;oe++)w.appendCharCode(160);break;case 32:w.appendCharCode(160);break;case 60:w.appendString(\"&lt;\");break;case 62:w.appendString(\"&gt;\");break;case 38:w.appendString(\"&amp;\");break;case 0:G?w.appendCharCode(9216):w.appendString(\"&#00;\");break;case 65279:case 8232:case 8233:case 133:w.appendCharCode(65533);break;default:k.isFullWidthCharacter(ee)&&re++,G&&ee<32?w.appendCharCode(9216+ee):G&&ee===127?w.appendCharCode(9249):G&&c(ee)?(w.appendString(\"[U+\"),w.appendString(m(ee)),w.appendString(\"]\"),$=8,re=$):w.appendCharCode(ee)}B+=$,V+=re,X>=F&&(H+=re)}z?Y++:Y=0,X>=x&&!J&&ce.isPseudoAfter()&&(J=!0,Z.setColumnInfo(X+1,ie,B,V)),w.appendString(\"</span>\")}return J||Z.setColumnInfo(x+1,N.length-1,B,V),T&&(w.appendString('<span class=\"mtkoverflow\">'),w.appendString(L.localize(0,null,v(A))),w.appendString(\"</span>\")),w.appendString(\"</span>\"),new s(Z,U,M)}function m(b){return b.toString(16).toUpperCase().padStart(4,\"0\")}function v(b){return b<1024?L.localize(1,null,b):b<1024*1024?`${(b/1024).toFixed(1)} KB`:`${(b/1024/1024).toFixed(1)} MB`}}),define(ne[632],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/anchorSelect/browser/anchorSelect\",e)}),define(ne[633],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/bracketMatching/browser/bracketMatching\",e)}),define(ne[634],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/caretOperations/browser/caretOperations\",e)}),define(ne[635],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/caretOperations/browser/transpose\",e)}),define(ne[636],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/clipboard/browser/clipboard\",e)}),define(ne[637],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/codeAction/browser/codeAction\",e)}),define(ne[638],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/codeAction/browser/codeActionCommands\",e)}),define(ne[639],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/codeAction/browser/codeActionContributions\",e)}),define(ne[640],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/codeAction/browser/codeActionController\",e)}),define(ne[641],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/codeAction/browser/codeActionMenu\",e)}),define(ne[642],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/codeAction/browser/lightBulbWidget\",e)}),define(ne[643],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/codelens/browser/codelensController\",e)}),define(ne[644],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/colorPicker/browser/colorPickerWidget\",e)}),define(ne[645],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\",e)}),define(ne[646],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/comment/browser/comment\",e)}),define(ne[647],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/contextmenu/browser/contextmenu\",e)}),define(ne[648],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/cursorUndo/browser/cursorUndo\",e)}),define(ne[649],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\",e)}),define(ne[650],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\",e)}),define(ne[651],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\",e)}),define(ne[652],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\",e)}),define(ne[653],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\",e)}),define(ne[654],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/editorState/browser/keybindingCancellation\",e)}),define(ne[655],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/find/browser/findController\",e)}),define(ne[656],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/find/browser/findWidget\",e)}),define(ne[657],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/folding/browser/folding\",e)}),define(ne[658],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/folding/browser/foldingDecorations\",e)}),define(ne[659],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/fontZoom/browser/fontZoom\",e)}),define(ne[660],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/format/browser/format\",e)}),define(ne[661],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/format/browser/formatActions\",e)}),define(ne[662],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/gotoError/browser/gotoError\",e)}),define(ne[663],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/gotoError/browser/gotoErrorWidget\",e)}),define(ne[664],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/gotoSymbol/browser/goToCommands\",e)}),define(ne[665],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\",e)}),define(ne[666],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/gotoSymbol/browser/peek/referencesController\",e)}),define(ne[667],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\",e)}),define(ne[668],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\",e)}),define(ne[669],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/gotoSymbol/browser/referencesModel\",e)}),define(ne[155],se([1,0,9,6,164,2,65,45,11,5,669]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ReferencesModel=e.FileReferences=e.FilePreview=e.OneReference=void 0;class s{constructor(u,h,r,c){this.isProviderFirst=u,this.parent=h,this.link=r,this._rangeCallback=c,this.id=y.defaultGenerator.nextId()}get uri(){return this.link.uri}get range(){var u,h;return(h=(u=this._range)!==null&&u!==void 0?u:this.link.targetSelectionRange)!==null&&h!==void 0?h:this.link.range}set range(u){this._range=u,this._rangeCallback(this)}get ariaMessage(){var u;const h=(u=this.parent.getPreview(this))===null||u===void 0?void 0:u.preview(this.range);return h?(0,C.localize)(1,null,h.value,(0,f.basename)(this.uri),this.range.startLineNumber,this.range.startColumn):(0,C.localize)(0,null,(0,f.basename)(this.uri),this.range.startLineNumber,this.range.startColumn)}}e.OneReference=s;class i{constructor(u){this._modelReference=u}dispose(){this._modelReference.dispose()}preview(u,h=8){const r=this._modelReference.object.textEditorModel;if(!r)return;const{startLineNumber:c,startColumn:o,endLineNumber:d,endColumn:l}=u,p=r.getWordUntilPosition({lineNumber:c,column:o-h}),m=new g.Range(c,p.startColumn,c,o),v=new g.Range(d,l,d,1073741824),b=r.getValueInRange(m).replace(/^\\s+/,\"\"),w=r.getValueInRange(u),E=r.getValueInRange(v).replace(/\\s+$/,\"\");return{value:b+w+E,highlight:{start:b.length,end:b.length+w.length}}}}e.FilePreview=i;class n{constructor(u,h){this.parent=u,this.uri=h,this.children=[],this._previews=new S.ResourceMap}dispose(){(0,D.dispose)(this._previews.values()),this._previews.clear()}getPreview(u){return this._previews.get(u.uri)}get ariaMessage(){const u=this.children.length;return u===1?(0,C.localize)(2,null,(0,f.basename)(this.uri),this.uri.fsPath):(0,C.localize)(3,null,u,(0,f.basename)(this.uri),this.uri.fsPath)}resolve(u){return we(this,void 0,void 0,function*(){if(this._previews.size!==0)return this;for(const h of this.children)if(!this._previews.has(h.uri))try{const r=yield u.createModelReference(h.uri);this._previews.set(h.uri,new i(r))}catch(r){(0,L.onUnexpectedError)(r)}return this})}}e.FileReferences=n;class t{constructor(u,h){this.groups=[],this.references=[],this._onDidChangeReferenceRange=new k.Emitter,this.onDidChangeReferenceRange=this._onDidChangeReferenceRange.event,this._links=u,this._title=h;const[r]=u;u.sort(t._compareReferences);let c;for(const o of u)if((!c||!f.extUri.isEqual(c.uri,o.uri,!0))&&(c=new n(this,o.uri),this.groups.push(c)),c.children.length===0||t._compareReferences(o,c.children[c.children.length-1])!==0){const d=new s(r===o,c,o,l=>this._onDidChangeReferenceRange.fire(l));this.references.push(d),c.children.push(d)}}dispose(){(0,D.dispose)(this.groups),this._onDidChangeReferenceRange.dispose(),this.groups.length=0}clone(){return new t(this._links,this._title)}get title(){return this._title}get isEmpty(){return this.groups.length===0}get ariaMessage(){return this.isEmpty?(0,C.localize)(4,null):this.references.length===1?(0,C.localize)(5,null,this.references[0].uri.fsPath):this.groups.length===1?(0,C.localize)(6,null,this.references.length,this.groups[0].uri.fsPath):(0,C.localize)(7,null,this.references.length,this.groups.length)}nextOrPreviousReference(u,h){const{parent:r}=u;let c=r.children.indexOf(u);const o=r.children.length,d=r.parent.groups.length;return d===1||h&&c+1<o||!h&&c>0?(h?c=(c+1)%o:c=(c+o-1)%o,r.children[c]):(c=r.parent.groups.indexOf(r),h?(c=(c+1)%d,r.parent.groups[c].children[0]):(c=(c+d-1)%d,r.parent.groups[c].children[r.parent.groups[c].children.length-1]))}nearestReference(u,h){const r=this.references.map((c,o)=>({idx:o,prefixLen:_.commonPrefixLength(c.uri.toString(),u.toString()),offsetDist:Math.abs(c.range.startLineNumber-h.lineNumber)*100+Math.abs(c.range.startColumn-h.column)})).sort((c,o)=>c.prefixLen>o.prefixLen?-1:c.prefixLen<o.prefixLen?1:c.offsetDist<o.offsetDist?-1:c.offsetDist>o.offsetDist?1:0)[0];if(r)return this.references[r.idx]}referenceAt(u,h){for(const r of this.references)if(r.uri.toString()===u.toString()&&g.Range.containsPosition(r.range,h))return r}firstReference(){for(const u of this.references)if(u.isProviderFirst)return u;return this.references[0]}static _compareReferences(u,h){return f.extUri.compare(u.uri,h.uri)||g.Range.compareRangesUsingStarts(u.range,h.range)}}e.ReferencesModel=t}),define(ne[670],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/gotoSymbol/browser/symbolNavigation\",e)}),define(ne[671],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/hover/browser/hover\",e)}),define(ne[672],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/hover/browser/markdownHoverParticipant\",e)}),define(ne[673],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/hover/browser/markerHoverParticipant\",e)}),define(ne[674],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\",e)}),define(ne[675],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/indentation/browser/indentation\",e)}),define(ne[676],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/inlayHints/browser/inlayHintsHover\",e)}),define(ne[677],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/inlineCompletions/browser/commands\",e)}),define(ne[678],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/inlineCompletions/browser/hoverParticipant\",e)}),define(ne[679],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\",e)}),define(ne[680],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\",e)}),define(ne[681],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\",e)}),define(ne[682],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/lineSelection/browser/lineSelection\",e)}),define(ne[683],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/linesOperations/browser/linesOperations\",e)}),define(ne[684],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/linkedEditing/browser/linkedEditing\",e)}),define(ne[685],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/links/browser/links\",e)}),define(ne[686],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/message/browser/messageController\",e)}),define(ne[687],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/multicursor/browser/multicursor\",e)}),define(ne[688],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/parameterHints/browser/parameterHints\",e)}),define(ne[689],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/parameterHints/browser/parameterHintsWidget\",e)}),define(ne[690],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/peekView/browser/peekView\",e)}),define(ne[691],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\",e)}),define(ne[692],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\",e)}),define(ne[693],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/readOnlyMessage/browser/contribution\",e)}),define(ne[694],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/rename/browser/rename\",e)}),define(ne[695],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/rename/browser/renameInputField\",e)}),define(ne[696],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/smartSelect/browser/smartSelect\",e)}),define(ne[697],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/snippet/browser/snippetController2\",e)}),define(ne[698],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/snippet/browser/snippetVariables\",e)}),define(ne[699],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/stickyScroll/browser/stickyScrollActions\",e)}),define(ne[700],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/suggest/browser/suggest\",e)}),define(ne[701],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/suggest/browser/suggestController\",e)}),define(ne[702],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/suggest/browser/suggestWidget\",e)}),define(ne[703],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/suggest/browser/suggestWidgetDetails\",e)}),define(ne[704],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/suggest/browser/suggestWidgetRenderer\",e)}),define(ne[705],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/suggest/browser/suggestWidgetStatus\",e)}),define(ne[706],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/symbolIcons/browser/symbolIcons\",e)}),define(ne[707],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\",e)}),define(ne[708],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/tokenization/browser/tokenization\",e)}),define(ne[709],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\",e)}),define(ne[710],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\",e)}),define(ne[711],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/wordHighlighter/browser/highlightDecorations\",e)}),define(ne[712],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/wordHighlighter/browser/wordHighlighter\",e)}),define(ne[713],se([3,4]),function(Q,e){return Q.create(\"vs/editor/contrib/wordOperations/browser/wordOperations\",e)}),define(ne[714],se([3,4]),function(Q,e){return Q.create(\"vs/platform/action/common/actionCommonCategories\",e)}),define(ne[715],se([3,4]),function(Q,e){return Q.create(\"vs/platform/actionWidget/browser/actionList\",e)}),define(ne[716],se([3,4]),function(Q,e){return Q.create(\"vs/platform/actionWidget/browser/actionWidget\",e)}),define(ne[717],se([3,4]),function(Q,e){return Q.create(\"vs/platform/actions/browser/menuEntryActionViewItem\",e)}),define(ne[718],se([3,4]),function(Q,e){return Q.create(\"vs/platform/actions/browser/toolbar\",e)}),define(ne[719],se([3,4]),function(Q,e){return Q.create(\"vs/platform/actions/common/menuService\",e)}),define(ne[720],se([3,4]),function(Q,e){return Q.create(\"vs/platform/audioCues/browser/audioCueService\",e)}),define(ne[721],se([3,4]),function(Q,e){return Q.create(\"vs/platform/configuration/common/configurationRegistry\",e)}),define(ne[722],se([3,4]),function(Q,e){return Q.create(\"vs/platform/contextkey/browser/contextKeyService\",e)}),define(ne[723],se([3,4]),function(Q,e){return Q.create(\"vs/platform/contextkey/common/contextkey\",e)}),define(ne[724],se([3,4]),function(Q,e){return Q.create(\"vs/platform/contextkey/common/contextkeys\",e)}),define(ne[725],se([3,4]),function(Q,e){return Q.create(\"vs/platform/contextkey/common/scanner\",e)}),define(ne[726],se([3,4]),function(Q,e){return Q.create(\"vs/platform/history/browser/contextScopedHistoryWidget\",e)}),define(ne[727],se([3,4]),function(Q,e){return Q.create(\"vs/platform/keybinding/common/abstractKeybindingService\",e)}),define(ne[728],se([3,4]),function(Q,e){return Q.create(\"vs/platform/list/browser/listService\",e)}),define(ne[729],se([3,4]),function(Q,e){return Q.create(\"vs/platform/markers/common/markers\",e)}),define(ne[730],se([3,4]),function(Q,e){return Q.create(\"vs/platform/quickinput/browser/commandsQuickAccess\",e)}),define(ne[731],se([3,4]),function(Q,e){return Q.create(\"vs/platform/quickinput/browser/helpQuickAccess\",e)}),define(ne[732],se([3,4]),function(Q,e){return Q.create(\"vs/platform/quickinput/browser/quickInput\",e)}),define(ne[733],se([3,4]),function(Q,e){return Q.create(\"vs/platform/quickinput/browser/quickInputController\",e)}),define(ne[734],se([3,4]),function(Q,e){return Q.create(\"vs/platform/quickinput/browser/quickInputList\",e)}),define(ne[735],se([3,4]),function(Q,e){return Q.create(\"vs/platform/quickinput/browser/quickInputUtils\",e)}),define(ne[736],se([3,4]),function(Q,e){return Q.create(\"vs/platform/theme/common/colorRegistry\",e)}),define(ne[737],se([3,4]),function(Q,e){return Q.create(\"vs/platform/theme/common/iconRegistry\",e)}),define(ne[738],se([3,4]),function(Q,e){return Q.create(\"vs/platform/undoRedo/common/undoRedoService\",e)}),define(ne[739],se([3,4]),function(Q,e){return Q.create(\"vs/platform/workspace/common/workspace\",e)}),define(ne[740],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isICommandActionToggleInfo=void 0;function L(k){return k?k.condition!==void 0:!1}e.isICommandActionToggleInfo=L}),define(ne[741],se([1,0,714]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Categories=void 0,e.Categories=Object.freeze({View:{value:(0,L.localize)(0,null),original:\"View\"},Help:{value:(0,L.localize)(1,null),original:\"Help\"},Test:{value:(0,L.localize)(2,null),original:\"Test\"},File:{value:(0,L.localize)(3,null),original:\"File\"},Preferences:{value:(0,L.localize)(4,null),original:\"Preferences\"},Developer:{value:(0,L.localize)(5,null),original:\"Developer\"}})}),define(ne[742],se([1,0,9,725]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Scanner=void 0;function y(..._){switch(_.length){case 1:return(0,k.localize)(0,null,_[0]);case 2:return(0,k.localize)(1,null,_[0],_[1]);case 3:return(0,k.localize)(2,null,_[0],_[1],_[2]);default:return}}const D=(0,k.localize)(3,null),S=(0,k.localize)(4,null);class f{constructor(){this._input=\"\",this._start=0,this._current=0,this._tokens=[],this._errors=[],this.stringRe=/[a-zA-Z0-9_<>\\-\\./\\\\:\\*\\?\\+\\[\\]\\^,#@;\"%\\$\\p{L}-]+/uy}static getLexeme(g){switch(g.type){case 0:return\"(\";case 1:return\")\";case 2:return\"!\";case 3:return g.isTripleEq?\"===\":\"==\";case 4:return g.isTripleEq?\"!==\":\"!=\";case 5:return\"<\";case 6:return\"<=\";case 7:return\">=\";case 8:return\">=\";case 9:return\"=~\";case 10:return g.lexeme;case 11:return\"true\";case 12:return\"false\";case 13:return\"in\";case 14:return\"not\";case 15:return\"&&\";case 16:return\"||\";case 17:return g.lexeme;case 18:return g.lexeme;case 19:return g.lexeme;case 20:return\"EOF\";default:throw(0,L.illegalState)(`unhandled token type: ${JSON.stringify(g)}; have you forgotten to add a case?`)}}reset(g){return this._input=g,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();)switch(this._start=this._current,this._advance()){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){const C=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:C})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){const C=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:C})}else this._match(126)?this._addToken(9):this._error(y(\"==\",\"=~\"));break;case 60:this._addToken(this._match(61)?6:5);break;case 62:this._addToken(this._match(61)?8:7);break;case 38:this._match(38)?this._addToken(15):this._error(y(\"&&\"));break;case 124:this._match(124)?this._addToken(16):this._error(y(\"||\"));break;case 32:case 13:case 9:case 10:case 160:break;default:this._string()}return this._start=this._current,this._addToken(20),Array.from(this._tokens)}_match(g){return this._isAtEnd()||this._input.charCodeAt(this._current)!==g?!1:(this._current++,!0)}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(g){this._tokens.push({type:g,offset:this._start})}_error(g){const C=this._start,s=this._input.substring(this._start,this._current),i={type:19,offset:this._start,lexeme:s};this._errors.push({offset:C,lexeme:s,additionalInfo:g}),this._tokens.push(i)}_string(){this.stringRe.lastIndex=this._start;const g=this.stringRe.exec(this._input);if(g){this._current=this._start+g[0].length;const C=this._input.substring(this._start,this._current),s=f._keywords.get(C);s?this._addToken(s):this._tokens.push({type:17,lexeme:C,offset:this._start})}}_quotedString(){for(;this._peek()!==39&&!this._isAtEnd();)this._advance();if(this._isAtEnd()){this._error(D);return}this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1})}_regex(){let g=this._current,C=!1,s=!1;for(;;){if(g>=this._input.length){this._current=g,this._error(S);return}const n=this._input.charCodeAt(g);if(C)C=!1;else if(n===47&&!s){g++;break}else n===91?s=!0:n===92?C=!0:n===93&&(s=!1);g++}for(;g<this._input.length&&f._regexFlags.has(this._input.charCodeAt(g));)g++;this._current=g;const i=this._input.substring(this._start,this._current);this._tokens.push({type:10,lexeme:i,offset:this._start})}_isAtEnd(){return this._current>=this._input.length}}e.Scanner=f,f._regexFlags=new Set([\"i\",\"g\",\"s\",\"m\",\"y\",\"u\"].map(_=>_.charCodeAt(0))),f._keywords=new Map([[\"not\",14],[\"in\",13],[\"false\",12],[\"true\",11]])}),define(ne[743],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditorOpenSource=void 0;var L;(function(k){k[k.API=0]=\"API\",k[k.USER=1]=\"USER\"})(L||(e.EditorOpenSource=L={}))}),define(ne[744],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ExtensionIdentifierSet=e.ExtensionIdentifier=void 0;class L{constructor(D){this.value=D,this._lower=D.toLowerCase()}static toKey(D){return typeof D==\"string\"?D.toLowerCase():D._lower}}e.ExtensionIdentifier=L;class k{constructor(D){if(this._set=new Set,D)for(const S of D)this.add(S)}add(D){this._set.add(L.toKey(D))}has(D){return this._set.has(L.toKey(D))}}e.ExtensionIdentifierSet=k}),define(ne[330],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FileKind=void 0;var L;(function(k){k[k.FILE=0]=\"FILE\",k[k.FOLDER=1]=\"FOLDER\",k[k.ROOT_FOLDER=2]=\"ROOT_FOLDER\"})(L||(e.FileKind=L={}))}),define(ne[745],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.showHistoryKeybindingHint=void 0;function L(k){var y,D;return((y=k.lookupKeybinding(\"history.showPrevious\"))===null||y===void 0?void 0:y.getElectronAccelerator())===\"Up\"&&((D=k.lookupKeybinding(\"history.showNext\"))===null||D===void 0?void 0:D.getElectronAccelerator())===\"Down\"}e.showHistoryKeybindingHint=L}),define(ne[232],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SyncDescriptor=void 0;class L{constructor(y,D=[],S=!1){this.ctor=y,this.staticArguments=D,this.supportsDelayedInstantiation=S}}e.SyncDescriptor=L}),define(ne[50],se([1,0,232]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getSingletonServiceDescriptors=e.registerSingleton=void 0;const k=[];function y(S,f,_){f instanceof L.SyncDescriptor||(f=new L.SyncDescriptor(f,[],!!_)),k.push([S,f])}e.registerSingleton=y;function D(){return k}e.getSingletonServiceDescriptors=D}),define(ne[746],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Graph=e.Node=void 0;class L{constructor(D,S){this.key=D,this.data=S,this.incoming=new Map,this.outgoing=new Map}}e.Node=L;class k{constructor(D){this._hashFn=D,this._nodes=new Map}roots(){const D=[];for(const S of this._nodes.values())S.outgoing.size===0&&D.push(S);return D}insertEdge(D,S){const f=this.lookupOrInsertNode(D),_=this.lookupOrInsertNode(S);f.outgoing.set(_.key,_),_.incoming.set(f.key,f)}removeNode(D){const S=this._hashFn(D);this._nodes.delete(S);for(const f of this._nodes.values())f.outgoing.delete(S),f.incoming.delete(S)}lookupOrInsertNode(D){const S=this._hashFn(D);let f=this._nodes.get(S);return f||(f=new L(S,D),this._nodes.set(S,f)),f}isEmpty(){return this._nodes.size===0}toString(){const D=[];for(const[S,f]of this._nodes)D.push(`${S}\n\t(-> incoming)[${[...f.incoming.keys()].join(\", \")}]\n\t(outgoing ->)[${[...f.outgoing.keys()].join(\",\")}]\n`);return D.join(`\n`)}findCycleSlow(){for(const[D,S]of this._nodes){const f=new Set([D]),_=this._findCycle(S,f);if(_)return _}}_findCycle(D,S){for(const[f,_]of D.outgoing){if(S.has(f))return[...S,f].join(\" -> \");S.add(f);const g=this._findCycle(_,S);if(g)return g;S.delete(f)}}}e.Graph=k}),define(ne[8],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createDecorator=e.IInstantiationService=e._util=void 0;var L;(function(D){D.serviceIds=new Map,D.DI_TARGET=\"$di$target\",D.DI_DEPENDENCIES=\"$di$dependencies\";function S(f){return f[D.DI_DEPENDENCIES]||[]}D.getServiceDependencies=S})(L||(e._util=L={})),e.IInstantiationService=y(\"instantiationService\");function k(D,S,f){S[L.DI_TARGET]===S?S[L.DI_DEPENDENCIES].push({id:D,index:f}):(S[L.DI_DEPENDENCIES]=[{id:D,index:f}],S[L.DI_TARGET]=S)}function y(D){if(L.serviceIds.has(D))return L.serviceIds.get(D);const S=function(f,_,g){if(arguments.length!==3)throw new Error(\"@IServiceName-decorator can only be used to decorate a parameter\");k(S,f,g)};return S.toString=()=>D,L.serviceIds.set(D,S),S}e.createDecorator=y}),define(ne[132],se([1,0,8,22,20]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ResourceFileEdit=e.ResourceTextEdit=e.ResourceEdit=e.IBulkEditService=void 0,e.IBulkEditService=(0,L.createDecorator)(\"IWorkspaceEditService\");class D{constructor(g){this.metadata=g}static convert(g){return g.edits.map(C=>{if(S.is(C))return S.lift(C);if(f.is(C))return f.lift(C);throw new Error(\"Unsupported edit\")})}}e.ResourceEdit=D;class S extends D{static is(g){return g instanceof S?!0:(0,y.isObject)(g)&&k.URI.isUri(g.resource)&&(0,y.isObject)(g.textEdit)}static lift(g){return g instanceof S?g:new S(g.resource,g.textEdit,g.versionId,g.metadata)}constructor(g,C,s=void 0,i){super(i),this.resource=g,this.textEdit=C,this.versionId=s}}e.ResourceTextEdit=S;class f extends D{static is(g){return g instanceof f?!0:(0,y.isObject)(g)&&(!!g.newResource||!!g.oldResource)}static lift(g){return g instanceof f?g:new f(g.oldResource,g.newResource,g.options,g.metadata)}constructor(g,C,s={},i){super(i),this.oldResource=g,this.newResource=C,this.options=s}}e.ResourceFileEdit=f}),define(ne[33],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ICodeEditorService=void 0,e.ICodeEditorService=(0,L.createDecorator)(\"codeEditorService\")}),define(ne[41],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ILanguageService=void 0,e.ILanguageService=(0,L.createDecorator)(\"languageService\")}),define(ne[115],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IEditorWorkerService=void 0,e.IEditorWorkerService=(0,L.createDecorator)(\"editorWorkerService\")}),define(ne[18],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ILanguageFeaturesService=void 0,e.ILanguageFeaturesService=(0,L.createDecorator)(\"ILanguageFeaturesService\")});var fe=this&&this.__param||function(Q,e){return function(L,k){e(L,k,Q)}};define(ne[747],se([1,0,7,129,14,19,25,6,55,2,42,26,20,483,102,66,12,5,29,18,614]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnchangedRangesFeature=void 0;let d=class extends g.Disposable{get isUpdatingViewZones(){return this._isUpdatingViewZones}constructor(b,w,E,I){super(),this._editors=b,this._diffModel=w,this._options=E,this._languageFeaturesService=I,this._isUpdatingViewZones=!1,this._modifiedModel=(0,C.observableFromEvent)(this._editors.modified.onDidChangeModel,()=>this._editors.modified.getModel()),this._modifiedOutlineSource=(0,C.derivedWithStore)(\"modified outline source\",(A,N)=>{const F=this._modifiedModel.read(A);if(F)return N.add(new p(this._languageFeaturesService,F))}),this._register(this._editors.original.onDidChangeCursorPosition(A=>{if(A.reason===3){const N=this._diffModel.get();(0,C.transaction)(F=>{for(const O of this._editors.original.getSelections()||[])N?.ensureOriginalLineIsVisible(O.getStartPosition().lineNumber,F),N?.ensureOriginalLineIsVisible(O.getEndPosition().lineNumber,F)})}})),this._register(this._editors.modified.onDidChangeCursorPosition(A=>{if(A.reason===3){const N=this._diffModel.get();(0,C.transaction)(F=>{for(const O of this._editors.modified.getSelections()||[])N?.ensureModifiedLineIsVisible(O.getStartPosition().lineNumber,F),N?.ensureModifiedLineIsVisible(O.getEndPosition().lineNumber,F)})}}));const M=this._diffModel.map((A,N)=>{var F,O;return((F=A?.diff.read(N))===null||F===void 0?void 0:F.mappings.length)===0?[]:(O=A?.unchangedRegions.read(N))!==null&&O!==void 0?O:[]}),P=(0,C.derivedWithStore)(\"view zones\",(A,N)=>{const F=[],O=[],W=this._options.renderSideBySide.read(A),U=this._modifiedOutlineSource.read(A);if(!U)return{origViewZones:F,modViewZones:O};const j=M.read(A);for(const R of j)if(!R.shouldHideControls(A)){{const K=(0,C.derived)(Z=>R.getHiddenOriginalRange(Z).startLineNumber-1),G=new t.PlaceholderViewZone(K,24);F.push(G),N.add(new m(this._editors.original,G,R,R.originalRange,!W,U,Z=>this._diffModel.get().ensureModifiedLineIsVisible(Z,void 0),this._options))}{const K=(0,C.derived)(Z=>R.getHiddenModifiedRange(Z).startLineNumber-1),G=new t.PlaceholderViewZone(K,24);O.push(G),N.add(new m(this._editors.modified,G,R,R.modifiedRange,!1,U,Z=>this._diffModel.get().ensureModifiedLineIsVisible(Z,void 0),this._options))}}return{origViewZones:F,modViewZones:O}}),x={description:\"unchanged lines\",className:\"diff-unchanged-lines\",isWholeLine:!0},T={description:\"Fold Unchanged\",glyphMarginHoverMessage:new _.MarkdownString(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown((0,o.localize)(0,null)),glyphMarginClassName:\"fold-unchanged \"+s.ThemeIcon.asClassName(S.Codicon.fold),zIndex:10001};this._register((0,t.applyObservableDecorations)(this._editors.original,(0,C.derived)(A=>{const N=M.read(A),F=N.map(O=>({range:O.originalRange.toInclusiveRange(),options:x}));for(const O of N)O.shouldHideControls(A)&&F.push({range:h.Range.fromPositions(new u.Position(O.originalLineNumber,1)),options:T});return F}))),this._register((0,t.applyObservableDecorations)(this._editors.modified,(0,C.derived)(A=>{const N=M.read(A),F=N.map(O=>({range:O.modifiedRange.toInclusiveRange(),options:x}));for(const O of N)O.shouldHideControls(A)&&F.push({range:a.LineRange.ofLength(O.modifiedLineNumber,1).toInclusiveRange(),options:T});return F}))),this._register((0,t.applyViewZones)(this._editors.original,P.map(A=>A.origViewZones),A=>this._isUpdatingViewZones=A)),this._register((0,t.applyViewZones)(this._editors.modified,P.map(A=>A.modViewZones),A=>this._isUpdatingViewZones=A)),this._register((0,C.autorun)(A=>{const N=M.read(A);this._editors.original.setHiddenAreas(N.map(F=>F.getHiddenOriginalRange(A).toInclusiveRange()).filter(i.isDefined)),this._editors.modified.setHiddenAreas(N.map(F=>F.getHiddenModifiedRange(A).toInclusiveRange()).filter(i.isDefined))})),this._register(this._editors.modified.onMouseUp(A=>{var N;if(!A.event.rightButton&&A.target.position&&(!((N=A.target.element)===null||N===void 0)&&N.className.includes(\"fold-unchanged\"))){const F=A.target.position.lineNumber,O=this._diffModel.get();if(!O)return;const W=O.unchangedRegions.get().find(U=>U.modifiedRange.includes(F));if(!W)return;W.collapseAll(void 0),A.event.stopPropagation(),A.event.preventDefault()}})),this._register(this._editors.original.onMouseUp(A=>{var N;if(!A.event.rightButton&&A.target.position&&(!((N=A.target.element)===null||N===void 0)&&N.className.includes(\"fold-unchanged\"))){const F=A.target.position.lineNumber,O=this._diffModel.get();if(!O)return;const W=O.unchangedRegions.get().find(U=>U.originalRange.includes(F));if(!W)return;W.collapseAll(void 0),A.event.stopPropagation(),A.event.preventDefault()}}))}};e.UnchangedRangesFeature=d,e.UnchangedRangesFeature=d=ke([fe(3,c.ILanguageFeaturesService)],d);class l extends D.CancellationTokenSource{dispose(){super.dispose(!0)}}let p=class extends g.Disposable{constructor(b,w){super(),this._languageFeaturesService=b,this._textModel=w,this._currentModel=(0,C.observableValue)(\"current model\",void 0);const E=(0,C.observableSignalFromEvent)(\"documentSymbolProvider.onDidChange\",this._languageFeaturesService.documentSymbolProvider.onDidChange),I=(0,C.observableSignalFromEvent)(\"_textModel.onDidChangeContent\",f.Event.debounce(M=>this._textModel.onDidChangeContent(M),()=>{},100));this._register((0,C.autorunWithStore)((M,P)=>we(this,void 0,void 0,function*(){E.read(M),I.read(M);const x=P.add(new l),T=yield n.OutlineModel.create(this._languageFeaturesService.documentSymbolProvider,this._textModel,x.token);P.isDisposed||this._currentModel.set(T,void 0)})))}getBreadcrumbItems(b,w){const E=this._currentModel.read(w);if(!E)return[];const I=E.asListOfDocumentSymbols().filter(M=>b.contains(M.range.startLineNumber)&&!b.contains(M.range.endLineNumber));return I.sort((0,y.reverseOrder)((0,y.compareBy)(M=>M.range.endLineNumber-M.range.startLineNumber,y.numberComparator))),I.map(M=>({name:M.name,kind:M.kind,startLineNumber:M.range.startLineNumber}))}};p=ke([fe(0,c.ILanguageFeaturesService)],p);class m extends t.ViewZoneOverlayWidget{constructor(b,w,E,I,M,P,x,T){const A=(0,L.h)(\"div.diff-hidden-lines-widget\");super(b,w,A.root),this._editor=b,this._unchangedRegion=E,this._unchangedRegionRange=I,this.hide=M,this._modifiedOutlineSource=P,this._revealModifiedHiddenLine=x,this._options=T,this._nodes=(0,L.h)(\"div.diff-hidden-lines\",[(0,L.h)(\"div.top@top\",{title:(0,o.localize)(1,null)}),(0,L.h)(\"div.center@content\",{style:{display:\"flex\"}},[(0,L.h)(\"div@first\",{style:{display:\"flex\",justifyContent:\"center\",alignItems:\"center\",flexShrink:\"0\"}},[(0,L.$)(\"a\",{title:(0,o.localize)(2,null),role:\"button\",onclick:()=>{this.showAll()}},...(0,k.renderLabelWithIcons)(\"$(unfold)\"))]),(0,L.h)(\"div@others\",{style:{display:\"flex\",justifyContent:\"center\",alignItems:\"center\"}})]),(0,L.h)(\"div.bottom@bottom\",{title:(0,o.localize)(3,null),role:\"button\"})]),A.root.appendChild(this._nodes.root);const N=(0,C.observableFromEvent)(this._editor.onDidLayoutChange,()=>this._editor.getLayoutInfo());this.hide?(0,L.reset)(this._nodes.first):this._register((0,t.applyStyle)(this._nodes.first,{width:N.map(O=>O.contentLeft)}));const F=this._editor;this._register((0,L.addDisposableListener)(this._nodes.top,\"mousedown\",O=>{if(O.button!==0)return;this._nodes.top.classList.toggle(\"dragging\",!0),this._nodes.root.classList.toggle(\"dragging\",!0),O.preventDefault();const W=O.clientY;let U=!1;const j=this._unchangedRegion.visibleLineCountTop.get();this._unchangedRegion.isDragged.set(!0,void 0);const R=(0,L.addDisposableListener)(window,\"mousemove\",G=>{const J=G.clientY-W;U=U||Math.abs(J)>2;const X=Math.round(J/F.getOption(65)),H=Math.max(0,Math.min(j+X,this._unchangedRegion.getMaxVisibleLineCountTop()));this._unchangedRegion.visibleLineCountTop.set(H,void 0)}),K=(0,L.addDisposableListener)(window,\"mouseup\",G=>{U||this._unchangedRegion.showMoreAbove(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0),this._nodes.top.classList.toggle(\"dragging\",!1),this._nodes.root.classList.toggle(\"dragging\",!1),this._unchangedRegion.isDragged.set(!1,void 0),R.dispose(),K.dispose()})})),this._register((0,L.addDisposableListener)(this._nodes.bottom,\"mousedown\",O=>{if(O.button!==0)return;this._nodes.bottom.classList.toggle(\"dragging\",!0),this._nodes.root.classList.toggle(\"dragging\",!0),O.preventDefault();const W=O.clientY;let U=!1;const j=this._unchangedRegion.visibleLineCountBottom.get();this._unchangedRegion.isDragged.set(!0,void 0);const R=(0,L.addDisposableListener)(window,\"mousemove\",G=>{const J=G.clientY-W;U=U||Math.abs(J)>2;const X=Math.round(J/F.getOption(65)),H=Math.max(0,Math.min(j-X,this._unchangedRegion.getMaxVisibleLineCountBottom())),B=F.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.visibleLineCountBottom.set(H,void 0);const V=F.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);F.setScrollTop(F.getScrollTop()+(V-B))}),K=(0,L.addDisposableListener)(window,\"mouseup\",G=>{if(this._unchangedRegion.isDragged.set(!1,void 0),!U){const Z=F.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0);const J=F.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);F.setScrollTop(F.getScrollTop()+(J-Z))}this._nodes.bottom.classList.toggle(\"dragging\",!1),this._nodes.root.classList.toggle(\"dragging\",!1),R.dispose(),K.dispose()})})),this._register((0,C.autorun)(O=>{const W=[];if(!this.hide){const U=E.getHiddenModifiedRange(O).length,j=(0,o.localize)(4,null,U),R=(0,L.$)(\"span\",{title:(0,o.localize)(5,null)},j);R.addEventListener(\"dblclick\",Z=>{Z.button===0&&(Z.preventDefault(),this.showAll())}),W.push(R);const K=this._unchangedRegion.getHiddenModifiedRange(O),G=this._modifiedOutlineSource.getBreadcrumbItems(K,O);if(G.length>0){W.push((0,L.$)(\"span\",void 0,\"\\xA0\\xA0|\\xA0\\xA0\"));for(let Z=0;Z<G.length;Z++){const J=G[Z],X=r.SymbolKinds.toIcon(J.kind),H=(0,L.h)(\"div.breadcrumb-item\",{style:{display:\"flex\",alignItems:\"center\"}},[(0,k.renderIcon)(X),\"\\xA0\",J.name,...Z===G.length-1?[]:[(0,k.renderIcon)(S.Codicon.chevronRight)]]).root;W.push(H),H.onclick=()=>{this._revealModifiedHiddenLine(J.startLineNumber)}}}}(0,L.reset)(this._nodes.others,...W)}))}showAll(){this._unchangedRegion.showAll(void 0)}}}),define(ne[748],se([1,0,594,18,50]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LanguageFeaturesService=void 0;class D{constructor(){this.referenceProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.renameProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.codeActionProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.definitionProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.typeDefinitionProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.declarationProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.implementationProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentSymbolProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.inlayHintsProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.colorProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.codeLensProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentFormattingEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentRangeFormattingEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.onTypeFormattingEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.signatureHelpProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.hoverProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentHighlightProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.selectionRangeProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.foldingRangeProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.linkProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.inlineCompletionsProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.completionProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.linkedEditingRangeProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentRangeSemanticTokensProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentSemanticTokensProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentOnDropEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this)),this.documentPasteEditProvider=new L.LanguageFeatureRegistry(this._score.bind(this))}_score(f){var _;return(_=this._notebookTypeResolver)===null||_===void 0?void 0:_.call(this,f)}}e.LanguageFeaturesService=D,(0,y.registerSingleton)(k.ILanguageFeaturesService,D,1)}),define(ne[233],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IMarkerDecorationsService=void 0,e.IMarkerDecorationsService=(0,L.createDecorator)(\"markerDecorationsService\")}),define(ne[51],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IModelService=void 0,e.IModelService=(0,L.createDecorator)(\"modelService\")}),define(ne[69],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ITextModelService=void 0,e.ITextModelService=(0,L.createDecorator)(\"textModelService\")}),define(ne[234],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ISemanticTokensStylingService=void 0,e.ISemanticTokensStylingService=(0,L.createDecorator)(\"semanticTokensStylingService\")}),define(ne[187],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ITextResourcePropertiesService=e.ITextResourceConfigurationService=void 0,e.ITextResourceConfigurationService=(0,L.createDecorator)(\"textResourceConfigurationService\"),e.ITextResourcePropertiesService=(0,L.createDecorator)(\"textResourcePropertiesService\")}),define(ne[749],se([1,0,50,8,285]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ITreeViewsDnDService=void 0,e.ITreeViewsDnDService=(0,k.createDecorator)(\"treeViewsDndService\"),(0,L.registerSingleton)(e.ITreeViewsDnDService,y.TreeViewsDnDService,1)}),define(ne[331],se([1,0,132]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.sortEditsByYieldTo=e.createCombinedWorkspaceEdit=void 0;function k(D,S,f){var _,g;return{edits:[...S.map(C=>new L.ResourceTextEdit(D,typeof f.insertText==\"string\"?{range:C,text:f.insertText,insertAsSnippet:!1}:{range:C,text:f.insertText.snippet,insertAsSnippet:!0})),...(g=(_=f.additionalEdit)===null||_===void 0?void 0:_.edits)!==null&&g!==void 0?g:[]]}}e.createCombinedWorkspaceEdit=k;function y(D){var S;function f(i,n){return\"providerId\"in i&&i.providerId===n.providerId||\"mimeType\"in i&&i.mimeType===n.handledMimeType}const _=new Map;for(const i of D)for(const n of(S=i.yieldTo)!==null&&S!==void 0?S:[])for(const t of D)if(t!==i&&f(n,t)){let a=_.get(i);a||(a=[],_.set(i,a)),a.push(t)}if(!_.size)return Array.from(D);const g=new Set,C=[];function s(i){if(!i.length)return[];const n=i[0];if(C.includes(n))return console.warn(`Yield to cycle detected for ${n.providerId}`),i;if(g.has(n))return s(i.slice(1));let t=[];const a=_.get(n);return a&&(C.push(n),t=s(a),C.pop()),g.add(n),[...t,n,...s(i.slice(1))]}return s(Array.from(D))}e.sortEditsByYieldTo=y}),define(ne[750],se([1,0,89,6,2,42,11,59,36,12,5,93,41,48,86,127,95,215,151,450]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.GhostTextWidget=void 0;let c=class extends y.Disposable{constructor(m,v,b){super(),this.editor=m,this.model=v,this.languageService=b,this.isDisposed=(0,D.observableValue)(\"isDisposed\",!1),this.currentTextModel=(0,D.observableFromEvent)(this.editor.onDidChangeModel,()=>this.editor.getModel()),this.uiState=(0,D.derived)(w=>{if(this.isDisposed.read(w))return;const E=this.currentTextModel.read(w);if(E!==this.model.targetTextModel.read(w))return;const I=this.model.ghostText.read(w);if(!I)return;const M=I instanceof h.GhostTextReplacement?I.columnRange:void 0,P=[],x=[];function T(W,U){if(x.length>0){const j=x[x.length-1];U&&j.decorations.push(new a.LineDecoration(j.content.length+1,j.content.length+1+W[0].length,U,0)),j.content+=W[0],W=W.slice(1)}for(const j of W)x.push({content:j,decorations:U?[new a.LineDecoration(1,j.length+1,U,0)]:[]})}const A=E.getLineContent(I.lineNumber);let N,F=0;for(const W of I.parts){let U=W.lines;N===void 0?(P.push({column:W.column,text:U[0],preview:W.preview}),U=U.slice(1)):T([A.substring(F,W.column-1)],void 0),U.length>0&&(T(U,\"ghost-text\"),N===void 0&&W.column<=A.length&&(N=W.column)),F=W.column-1}N!==void 0&&T([A.substring(F)],void 0);const O=N!==void 0?new r.ColumnRange(N,A.length+1):void 0;return{replacedRange:M,inlineTexts:P,additionalLines:x,hiddenRange:O,lineNumber:I.lineNumber,additionalReservedLineCount:this.model.minReservedLineCount.read(w),targetTextModel:E}}),this.decorations=(0,D.derived)(w=>{const E=this.uiState.read(w);if(!E)return[];const I=[];E.replacedRange&&I.push({range:E.replacedRange.toRange(E.lineNumber),options:{inlineClassName:\"inline-completion-text-to-replace\",description:\"GhostTextReplacement\"}}),E.hiddenRange&&I.push({range:E.hiddenRange.toRange(E.lineNumber),options:{inlineClassName:\"ghost-text-hidden\",description:\"ghost-text-hidden\"}});for(const M of E.inlineTexts)I.push({range:C.Range.fromPositions(new g.Position(E.lineNumber,M.column)),options:{description:\"ghost-text\",after:{content:M.text,inlineClassName:M.preview?\"ghost-text-decoration-preview\":\"ghost-text-decoration\",cursorStops:n.InjectedTextCursorStops.Left},showIfCollapsed:!0}});return I}),this.additionalLinesWidget=this._register(new o(this.editor,this.languageService.languageIdCodec,(0,D.derived)(w=>{const E=this.uiState.read(w);return E?{lineNumber:E.lineNumber,additionalLines:E.additionalLines,minReservedLineCount:E.additionalReservedLineCount,targetTextModel:E.targetTextModel}:void 0}))),this._register((0,y.toDisposable)(()=>{this.isDisposed.set(!0,void 0)})),this._register((0,r.applyObservableDecorations)(this.editor,this.decorations))}ownsViewZone(m){return this.additionalLinesWidget.viewZoneId===m}};e.GhostTextWidget=c,e.GhostTextWidget=c=ke([fe(2,i.ILanguageService)],c);class o extends y.Disposable{get viewZoneId(){return this._viewZoneId}constructor(m,v,b){super(),this.editor=m,this.languageIdCodec=v,this.lines=b,this._viewZoneId=void 0,this.editorOptionsChanged=(0,D.observableSignalFromEvent)(\"editorOptionChanged\",k.Event.filter(this.editor.onDidChangeConfiguration,w=>w.hasChanged(32)||w.hasChanged(115)||w.hasChanged(97)||w.hasChanged(92)||w.hasChanged(50)||w.hasChanged(49)||w.hasChanged(65))),this._register((0,D.autorun)(w=>{const E=this.lines.read(w);this.editorOptionsChanged.read(w),E?this.updateLines(E.lineNumber,E.additionalLines,E.minReservedLineCount):this.clear()}))}dispose(){super.dispose(),this.clear()}clear(){this.editor.changeViewZones(m=>{this._viewZoneId&&(m.removeZone(this._viewZoneId),this._viewZoneId=void 0)})}updateLines(m,v,b){const w=this.editor.getModel();if(!w)return;const{tabSize:E}=w.getOptions();this.editor.changeViewZones(I=>{this._viewZoneId&&(I.removeZone(this._viewZoneId),this._viewZoneId=void 0);const M=Math.max(v.length,b);if(M>0){const P=document.createElement(\"div\");d(P,E,v,this.editor.getOptions(),this.languageIdCodec),this._viewZoneId=I.addZone({afterLineNumber:m,heightInLines:M,domNode:P,afterColumnAffinity:1})}})}}function d(p,m,v,b,w){const E=b.get(32),I=b.get(115),M=\"none\",P=b.get(92),x=b.get(50),T=b.get(49),A=b.get(65),N=new s.StringBuilder(1e4);N.appendString('<div class=\"suggest-preview-text\">');for(let W=0,U=v.length;W<U;W++){const j=v[W],R=j.content;N.appendString('<div class=\"view-line'),N.appendString('\" style=\"top:'),N.appendString(String(W*A)),N.appendString('px;width:1000000px;\">');const K=S.isBasicASCII(R),G=S.containsRTL(R),Z=t.LineTokens.createEmpty(R,w);(0,u.renderViewLine)(new u.RenderLineInput(T.isMonospace&&!E,T.canUseHalfwidthRightwardsArrow,R,!1,K,G,0,Z,j.decorations,m,0,T.spaceWidth,T.middotWidth,T.wsmiddotWidth,I,M,P,x!==_.EditorFontLigatures.OFF,null),N),N.appendString(\"</div>\")}N.appendString(\"</div>\"),(0,f.applyFontInfo)(p,T);const F=N.build(),O=l?l.createHTML(F):F;p.innerHTML=O}const l=(0,L.createTrustedTypesPolicy)(\"editorGhostText\",{createHTML:p=>p})}),define(ne[133],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IStandaloneThemeService=void 0,e.IStandaloneThemeService=(0,L.createDecorator)(\"themeService\")}),define(ne[116],se([1,0,8,720]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AudioCue=e.SoundSource=e.Sound=e.IAudioCueService=void 0,e.IAudioCueService=(0,L.createDecorator)(\"audioCue\");class y{static register(_){return new y(_.fileName)}constructor(_){this.fileName=_}}e.Sound=y,y.error=y.register({fileName:\"error.mp3\"}),y.warning=y.register({fileName:\"warning.mp3\"}),y.foldedArea=y.register({fileName:\"foldedAreas.mp3\"}),y.break=y.register({fileName:\"break.mp3\"}),y.quickFixes=y.register({fileName:\"quickFixes.mp3\"}),y.taskCompleted=y.register({fileName:\"taskCompleted.mp3\"}),y.taskFailed=y.register({fileName:\"taskFailed.mp3\"}),y.terminalBell=y.register({fileName:\"terminalBell.mp3\"}),y.diffLineInserted=y.register({fileName:\"diffLineInserted.mp3\"}),y.diffLineDeleted=y.register({fileName:\"diffLineDeleted.mp3\"}),y.diffLineModified=y.register({fileName:\"diffLineModified.mp3\"}),y.chatRequestSent=y.register({fileName:\"chatRequestSent.mp3\"}),y.chatResponsePending=y.register({fileName:\"chatResponsePending.mp3\"}),y.chatResponseReceived1=y.register({fileName:\"chatResponseReceived1.mp3\"}),y.chatResponseReceived2=y.register({fileName:\"chatResponseReceived2.mp3\"}),y.chatResponseReceived3=y.register({fileName:\"chatResponseReceived3.mp3\"}),y.chatResponseReceived4=y.register({fileName:\"chatResponseReceived4.mp3\"});class D{constructor(_){this.randomOneOf=_}}e.SoundSource=D;class S{static register(_){const g=new D(\"randomOneOf\"in _.sound?_.sound.randomOneOf:[_.sound]),C=new S(g,_.name,_.settingsKey);return S._audioCues.add(C),C}constructor(_,g,C){this.sound=_,this.name=g,this.settingsKey=C}}e.AudioCue=S,S._audioCues=new Set,S.error=S.register({name:(0,k.localize)(0,null),sound:y.error,settingsKey:\"audioCues.lineHasError\"}),S.warning=S.register({name:(0,k.localize)(1,null),sound:y.warning,settingsKey:\"audioCues.lineHasWarning\"}),S.foldedArea=S.register({name:(0,k.localize)(2,null),sound:y.foldedArea,settingsKey:\"audioCues.lineHasFoldedArea\"}),S.break=S.register({name:(0,k.localize)(3,null),sound:y.break,settingsKey:\"audioCues.lineHasBreakpoint\"}),S.inlineSuggestion=S.register({name:(0,k.localize)(4,null),sound:y.quickFixes,settingsKey:\"audioCues.lineHasInlineSuggestion\"}),S.terminalQuickFix=S.register({name:(0,k.localize)(5,null),sound:y.quickFixes,settingsKey:\"audioCues.terminalQuickFix\"}),S.onDebugBreak=S.register({name:(0,k.localize)(6,null),sound:y.break,settingsKey:\"audioCues.onDebugBreak\"}),S.noInlayHints=S.register({name:(0,k.localize)(7,null),sound:y.error,settingsKey:\"audioCues.noInlayHints\"}),S.taskCompleted=S.register({name:(0,k.localize)(8,null),sound:y.taskCompleted,settingsKey:\"audioCues.taskCompleted\"}),S.taskFailed=S.register({name:(0,k.localize)(9,null),sound:y.taskFailed,settingsKey:\"audioCues.taskFailed\"}),S.terminalCommandFailed=S.register({name:(0,k.localize)(10,null),sound:y.error,settingsKey:\"audioCues.terminalCommandFailed\"}),S.terminalBell=S.register({name:(0,k.localize)(11,null),sound:y.terminalBell,settingsKey:\"audioCues.terminalBell\"}),S.notebookCellCompleted=S.register({name:(0,k.localize)(12,null),sound:y.taskCompleted,settingsKey:\"audioCues.notebookCellCompleted\"}),S.notebookCellFailed=S.register({name:(0,k.localize)(13,null),sound:y.taskFailed,settingsKey:\"audioCues.notebookCellFailed\"}),S.diffLineInserted=S.register({name:(0,k.localize)(14,null),sound:y.diffLineInserted,settingsKey:\"audioCues.diffLineInserted\"}),S.diffLineDeleted=S.register({name:(0,k.localize)(15,null),sound:y.diffLineDeleted,settingsKey:\"audioCues.diffLineDeleted\"}),S.diffLineModified=S.register({name:(0,k.localize)(16,null),sound:y.diffLineModified,settingsKey:\"audioCues.diffLineModified\"}),S.chatRequestSent=S.register({name:(0,k.localize)(17,null),sound:y.chatRequestSent,settingsKey:\"audioCues.chatRequestSent\"}),S.chatResponseReceived=S.register({name:(0,k.localize)(18,null),settingsKey:\"audioCues.chatResponseReceived\",sound:{randomOneOf:[y.chatResponseReceived1,y.chatResponseReceived2,y.chatResponseReceived3,y.chatResponseReceived4]}}),S.chatResponsePending=S.register({name:(0,k.localize)(19,null),sound:y.chatResponsePending,settingsKey:\"audioCues.chatResponsePending\"})}),define(ne[96],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IClipboardService=void 0,e.IClipboardService=(0,L.createDecorator)(\"clipboardService\")}),define(ne[27],se([1,0,6,46,2,64,20,8]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommandsRegistry=e.ICommandService=void 0,e.ICommandService=(0,f.createDecorator)(\"commandService\"),e.CommandsRegistry=new class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new L.Emitter,this.onDidRegisterCommand=this._onDidRegisterCommand.event}registerCommand(_,g){if(!_)throw new Error(\"invalid command\");if(typeof _==\"string\"){if(!g)throw new Error(\"invalid command\");return this.registerCommand({id:_,handler:g})}if(_.description){const t=[];for(const u of _.description.args)t.push(u.constraint);const a=_.handler;_.handler=function(u,...h){return(0,S.validateConstraints)(h,t),a(u,...h)}}const{id:C}=_;let s=this._commands.get(C);s||(s=new D.LinkedList,this._commands.set(C,s));const i=s.unshift(_),n=(0,y.toDisposable)(()=>{i();const t=this._commands.get(C);t?.isEmpty()&&this._commands.delete(C)});return this._onDidRegisterCommand.fire(C),n}registerCommandAlias(_,g){return e.CommandsRegistry.registerCommand(_,(C,...s)=>C.get(e.ICommandService).executeCommand(g,...s))}getCommand(_){const g=this._commands.get(_);if(!(!g||g.isEmpty()))return k.Iterable.first(g)}getCommands(){const _=new Map;for(const g of this._commands.keys()){const C=this.getCommand(g);C&&_.set(g,C)}return _}},e.CommandsRegistry.registerCommand(\"noop\",()=>{})}),define(ne[332],se([1,0,19,9,2,20,22,51,27,18]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getCodeLensModel=e.CodeLensModel=void 0;class C{constructor(){this.lenses=[],this._disposables=new y.DisposableStore}dispose(){this._disposables.dispose()}get isDisposed(){return this._disposables.isDisposed}add(n,t){this._disposables.add(n);for(const a of n.lenses)this.lenses.push({symbol:a,provider:t})}}e.CodeLensModel=C;function s(i,n,t){return we(this,void 0,void 0,function*(){const a=i.ordered(n),u=new Map,h=new C,r=a.map((c,o)=>we(this,void 0,void 0,function*(){u.set(c,o);try{const d=yield Promise.resolve(c.provideCodeLenses(n,t));d&&h.add(d,c)}catch(d){(0,k.onUnexpectedExternalError)(d)}}));return yield Promise.all(r),h.lenses=h.lenses.sort((c,o)=>c.symbol.range.startLineNumber<o.symbol.range.startLineNumber?-1:c.symbol.range.startLineNumber>o.symbol.range.startLineNumber?1:u.get(c.provider)<u.get(o.provider)?-1:u.get(c.provider)>u.get(o.provider)?1:c.symbol.range.startColumn<o.symbol.range.startColumn?-1:c.symbol.range.startColumn>o.symbol.range.startColumn?1:0),h})}e.getCodeLensModel=s,_.CommandsRegistry.registerCommand(\"_executeCodeLensProvider\",function(i,...n){let[t,a]=n;(0,D.assertType)(S.URI.isUri(t)),(0,D.assertType)(typeof a==\"number\"||!a);const{codeLensProvider:u}=i.get(g.ILanguageFeaturesService),h=i.get(f.IModelService).getModel(t);if(!h)throw(0,k.illegalArgument)();const r=[],c=new y.DisposableStore;return s(u,h,L.CancellationToken.None).then(o=>{c.add(o);const d=[];for(const l of o.lenses)a==null||l.symbol.command?r.push(l.symbol):a-- >0&&l.provider.resolveCodeLens&&d.push(Promise.resolve(l.provider.resolveCodeLens(h,l.symbol,L.CancellationToken.None)).then(p=>r.push(p||l.symbol)));return Promise.all(d)}).then(()=>r).finally(()=>{setTimeout(()=>c.dispose(),100)})})}),define(ne[751],se([1,0,14,19,9,2,20,22,5,51,27,18]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getLinks=e.LinksList=e.Link=void 0;class i{constructor(u,h){this._link=u,this._provider=h}toJSON(){return{range:this.range,url:this.url,tooltip:this.tooltip}}get range(){return this._link.range}get url(){return this._link.url}get tooltip(){return this._link.tooltip}resolve(u){return we(this,void 0,void 0,function*(){return this._link.url?this._link.url:typeof this._provider.resolveLink==\"function\"?Promise.resolve(this._provider.resolveLink(this._link,u)).then(h=>(this._link=h||this._link,this._link.url?this.resolve(u):Promise.reject(new Error(\"missing\")))):Promise.reject(new Error(\"missing\"))})}}e.Link=i;class n{constructor(u){this._disposables=new D.DisposableStore;let h=[];for(const[r,c]of u){const o=r.links.map(d=>new i(d,c));h=n._union(h,o),(0,D.isDisposable)(r)&&this._disposables.add(r)}this.links=h}dispose(){this._disposables.dispose(),this.links.length=0}static _union(u,h){const r=[];let c,o,d,l;for(c=0,d=0,o=u.length,l=h.length;c<o&&d<l;){const p=u[c],m=h[d];if(_.Range.areIntersectingOrTouching(p.range,m.range)){c++;continue}_.Range.compareRangesUsingStarts(p.range,m.range)<0?(r.push(p),c++):(r.push(m),d++)}for(;c<o;c++)r.push(u[c]);for(;d<l;d++)r.push(h[d]);return r}}e.LinksList=n;function t(a,u,h){const r=[],c=a.ordered(u).reverse().map((o,d)=>Promise.resolve(o.provideLinks(u,h)).then(l=>{l&&(r[d]=[l,o])},y.onUnexpectedExternalError));return Promise.all(c).then(()=>{const o=new n((0,L.coalesce)(r));return h.isCancellationRequested?(o.dispose(),new n([])):o})}e.getLinks=t,C.CommandsRegistry.registerCommand(\"_executeLinkProvider\",(a,...u)=>we(void 0,void 0,void 0,function*(){let[h,r]=u;(0,S.assertType)(h instanceof f.URI),typeof r!=\"number\"&&(r=0);const{linkProvider:c}=a.get(s.ILanguageFeaturesService),o=a.get(g.IModelService).getModel(h);if(!o)return[];const d=yield t(c,o,k.CancellationToken.None);if(!d)return[];for(let p=0;p<Math.min(r,d.links.length);p++)yield d.links[p].resolve(k.CancellationToken.None);const l=d.links.slice(0);return d.dispose(),l}))}),define(ne[333],se([1,0,19,9,22,51,27,20,598,5,18]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getDocumentRangeSemanticTokens=e.hasDocumentRangeSemanticTokensProvider=e.getDocumentSemanticTokens=e.hasDocumentSemanticTokensProvider=e.DocumentSemanticTokensResult=e.isSemanticTokensEdits=e.isSemanticTokens=void 0;function s(l){return l&&!!l.data}e.isSemanticTokens=s;function i(l){return l&&Array.isArray(l.edits)}e.isSemanticTokensEdits=i;class n{constructor(p,m,v){this.provider=p,this.tokens=m,this.error=v}}e.DocumentSemanticTokensResult=n;function t(l,p){return l.has(p)}e.hasDocumentSemanticTokensProvider=t;function a(l,p){const m=l.orderedGroups(p);return m.length>0?m[0]:[]}function u(l,p,m,v,b){return we(this,void 0,void 0,function*(){const w=a(l,p),E=yield Promise.all(w.map(I=>we(this,void 0,void 0,function*(){let M,P=null;try{M=yield I.provideDocumentSemanticTokens(p,I===m?v:null,b)}catch(x){P=x,M=null}return(!M||!s(M)&&!i(M))&&(M=null),new n(I,M,P)})));for(const I of E){if(I.error)throw I.error;if(I.tokens)return I}return E.length>0?E[0]:null})}e.getDocumentSemanticTokens=u;function h(l,p){const m=l.orderedGroups(p);return m.length>0?m[0]:null}class r{constructor(p,m){this.provider=p,this.tokens=m}}function c(l,p){return l.has(p)}e.hasDocumentRangeSemanticTokensProvider=c;function o(l,p){const m=l.orderedGroups(p);return m.length>0?m[0]:[]}function d(l,p,m,v){return we(this,void 0,void 0,function*(){const b=o(l,p),w=yield Promise.all(b.map(E=>we(this,void 0,void 0,function*(){let I;try{I=yield E.provideDocumentRangeSemanticTokens(p,m,v)}catch(M){(0,k.onUnexpectedExternalError)(M),I=null}return(!I||!s(I))&&(I=null),new r(E,I)})));for(const E of w)if(E.tokens)return E;return w.length>0?w[0]:null})}e.getDocumentRangeSemanticTokens=d,S.CommandsRegistry.registerCommand(\"_provideDocumentSemanticTokensLegend\",(l,...p)=>we(void 0,void 0,void 0,function*(){const[m]=p;(0,f.assertType)(m instanceof y.URI);const v=l.get(D.IModelService).getModel(m);if(!v)return;const{documentSemanticTokensProvider:b}=l.get(C.ILanguageFeaturesService),w=h(b,v);return w?w[0].getLegend():l.get(S.ICommandService).executeCommand(\"_provideDocumentRangeSemanticTokensLegend\",m)})),S.CommandsRegistry.registerCommand(\"_provideDocumentSemanticTokens\",(l,...p)=>we(void 0,void 0,void 0,function*(){const[m]=p;(0,f.assertType)(m instanceof y.URI);const v=l.get(D.IModelService).getModel(m);if(!v)return;const{documentSemanticTokensProvider:b}=l.get(C.ILanguageFeaturesService);if(!t(b,v))return l.get(S.ICommandService).executeCommand(\"_provideDocumentRangeSemanticTokens\",m,v.getFullModelRange());const w=yield u(b,v,null,null,L.CancellationToken.None);if(!w)return;const{provider:E,tokens:I}=w;if(!I||!s(I))return;const M=(0,_.encodeSemanticTokensDto)({id:0,type:\"full\",data:I.data});return I.resultId&&E.releaseDocumentSemanticTokens(I.resultId),M})),S.CommandsRegistry.registerCommand(\"_provideDocumentRangeSemanticTokensLegend\",(l,...p)=>we(void 0,void 0,void 0,function*(){const[m,v]=p;(0,f.assertType)(m instanceof y.URI);const b=l.get(D.IModelService).getModel(m);if(!b)return;const{documentRangeSemanticTokensProvider:w}=l.get(C.ILanguageFeaturesService),E=o(w,b);if(E.length===0)return;if(E.length===1)return E[0].getLegend();if(!v||!g.Range.isIRange(v))return console.warn(\"provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in\"),E[0].getLegend();const I=yield d(w,b,g.Range.lift(v),L.CancellationToken.None);if(I)return I.provider.getLegend()})),S.CommandsRegistry.registerCommand(\"_provideDocumentRangeSemanticTokens\",(l,...p)=>we(void 0,void 0,void 0,function*(){const[m,v]=p;(0,f.assertType)(m instanceof y.URI),(0,f.assertType)(g.Range.isIRange(v));const b=l.get(D.IModelService).getModel(m);if(!b)return;const{documentRangeSemanticTokensProvider:w}=l.get(C.ILanguageFeaturesService),E=yield d(w,b,g.Range.lift(v),L.CancellationToken.None);if(!(!E||!E.tokens))return(0,_.encodeSemanticTokensDto)({id:0,type:\"full\",data:E.tokens.data})}))}),define(ne[28],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getLanguageTagSettingPlainKey=e.getConfigurationValue=e.removeFromValueTree=e.addToValueTree=e.toValuesTree=e.IConfigurationService=void 0,e.IConfigurationService=(0,L.createDecorator)(\"configurationService\");function k(g,C){const s=Object.create(null);for(const i in g)y(s,i,g[i],C);return s}e.toValuesTree=k;function y(g,C,s,i){const n=C.split(\".\"),t=n.pop();let a=g;for(let u=0;u<n.length;u++){const h=n[u];let r=a[h];switch(typeof r){case\"undefined\":r=a[h]=Object.create(null);break;case\"object\":break;default:i(`Ignoring ${C} as ${n.slice(0,u+1).join(\".\")} is ${JSON.stringify(r)}`);return}a=r}if(typeof a==\"object\"&&a!==null)try{a[t]=s}catch{i(`Ignoring ${C} as ${n.join(\".\")} is ${JSON.stringify(a)}`)}else i(`Ignoring ${C} as ${n.join(\".\")} is ${JSON.stringify(a)}`)}e.addToValueTree=y;function D(g,C){const s=C.split(\".\");S(g,s)}e.removeFromValueTree=D;function S(g,C){const s=C.shift();if(C.length===0){delete g[s];return}if(Object.keys(g).indexOf(s)!==-1){const i=g[s];typeof i==\"object\"&&!Array.isArray(i)&&(S(i,C),Object.keys(i).length===0&&delete g[s])}}function f(g,C,s){function i(a,u){let h=a;for(const r of u){if(typeof h!=\"object\"||h===null)return;h=h[r]}return h}const n=C.split(\".\"),t=i(g,n);return typeof t>\"u\"?s:t}e.getConfigurationValue=f;function _(g){return g.replace(/[\\[\\]]/g,\"\")}e.getLanguageTagSettingPlainKey=_}),define(ne[334],se([1,0,29,154,302,28]),function(Q,e,L,k,y,D){\"use strict\";var S;Object.defineProperty(e,\"__esModule\",{value:!0}),e.MonarchTokenizer=void 0;const f=5;class _{static create(r,c){return this._INSTANCE.create(r,c)}constructor(r){this._maxCacheDepth=r,this._entries=Object.create(null)}create(r,c){if(r!==null&&r.depth>=this._maxCacheDepth)return new g(r,c);let o=g.getStackElementId(r);o.length>0&&(o+=\"|\"),o+=c;let d=this._entries[o];return d||(d=new g(r,c),this._entries[o]=d,d)}}_._INSTANCE=new _(f);class g{constructor(r,c){this.parent=r,this.state=c,this.depth=(this.parent?this.parent.depth:0)+1}static getStackElementId(r){let c=\"\";for(;r!==null;)c.length>0&&(c+=\"|\"),c+=r.state,r=r.parent;return c}static _equals(r,c){for(;r!==null&&c!==null;){if(r===c)return!0;if(r.state!==c.state)return!1;r=r.parent,c=c.parent}return r===null&&c===null}equals(r){return g._equals(this,r)}push(r){return _.create(this,r)}pop(){return this.parent}popall(){let r=this;for(;r.parent;)r=r.parent;return r}switchTo(r){return _.create(this.parent,r)}}class C{constructor(r,c){this.languageId=r,this.state=c}equals(r){return this.languageId===r.languageId&&this.state.equals(r.state)}clone(){return this.state.clone()===this.state?this:new C(this.languageId,this.state)}}class s{static create(r,c){return this._INSTANCE.create(r,c)}constructor(r){this._maxCacheDepth=r,this._entries=Object.create(null)}create(r,c){if(c!==null)return new i(r,c);if(r!==null&&r.depth>=this._maxCacheDepth)return new i(r,c);const o=g.getStackElementId(r);let d=this._entries[o];return d||(d=new i(r,null),this._entries[o]=d,d)}}s._INSTANCE=new s(f);class i{constructor(r,c){this.stack=r,this.embeddedLanguageData=c}clone(){return(this.embeddedLanguageData?this.embeddedLanguageData.clone():null)===this.embeddedLanguageData?this:s.create(this.stack,this.embeddedLanguageData)}equals(r){return!(r instanceof i)||!this.stack.equals(r.stack)?!1:this.embeddedLanguageData===null&&r.embeddedLanguageData===null?!0:this.embeddedLanguageData===null||r.embeddedLanguageData===null?!1:this.embeddedLanguageData.equals(r.embeddedLanguageData)}}class n{constructor(){this._tokens=[],this._languageId=null,this._lastTokenType=null,this._lastTokenLanguage=null}enterLanguage(r){this._languageId=r}emit(r,c){this._lastTokenType===c&&this._lastTokenLanguage===this._languageId||(this._lastTokenType=c,this._lastTokenLanguage=this._languageId,this._tokens.push(new L.Token(r,c,this._languageId)))}nestedLanguageTokenize(r,c,o,d){const l=o.languageId,p=o.state,m=L.TokenizationRegistry.get(l);if(!m)return this.enterLanguage(l),this.emit(d,\"\"),p;const v=m.tokenize(r,c,p);if(d!==0)for(const b of v.tokens)this._tokens.push(new L.Token(b.offset+d,b.type,b.language));else this._tokens=this._tokens.concat(v.tokens);return this._lastTokenType=null,this._lastTokenLanguage=null,this._languageId=null,v.endState}finalize(r){return new L.TokenizationResult(this._tokens,r)}}class t{constructor(r,c){this._languageService=r,this._theme=c,this._prependTokens=null,this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0}enterLanguage(r){this._currentLanguageId=this._languageService.languageIdCodec.encodeLanguageId(r)}emit(r,c){const o=this._theme.match(this._currentLanguageId,c)|1024;this._lastTokenMetadata!==o&&(this._lastTokenMetadata=o,this._tokens.push(r),this._tokens.push(o))}static _merge(r,c,o){const d=r!==null?r.length:0,l=c.length,p=o!==null?o.length:0;if(d===0&&l===0&&p===0)return new Uint32Array(0);if(d===0&&l===0)return o;if(l===0&&p===0)return r;const m=new Uint32Array(d+l+p);r!==null&&m.set(r);for(let v=0;v<l;v++)m[d+v]=c[v];return o!==null&&m.set(o,d+l),m}nestedLanguageTokenize(r,c,o,d){const l=o.languageId,p=o.state,m=L.TokenizationRegistry.get(l);if(!m)return this.enterLanguage(l),this.emit(d,\"\"),p;const v=m.tokenizeEncoded(r,c,p);if(d!==0)for(let b=0,w=v.tokens.length;b<w;b+=2)v.tokens[b]+=d;return this._prependTokens=t._merge(this._prependTokens,this._tokens,v.tokens),this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0,v.endState}finalize(r){return new L.EncodedTokenizationResult(t._merge(this._prependTokens,this._tokens,null),r)}}let a=S=class{constructor(r,c,o,d,l){this._configurationService=l,this._languageService=r,this._standaloneThemeService=c,this._languageId=o,this._lexer=d,this._embeddedLanguages=Object.create(null),this.embeddedLoaded=Promise.resolve(void 0);let p=!1;this._tokenizationRegistryListener=L.TokenizationRegistry.onDidChange(m=>{if(p)return;let v=!1;for(let b=0,w=m.changedLanguages.length;b<w;b++){const E=m.changedLanguages[b];if(this._embeddedLanguages[E]){v=!0;break}}v&&(p=!0,L.TokenizationRegistry.handleChange([this._languageId]),p=!1)}),this._maxTokenizationLineLength=this._configurationService.getValue(\"editor.maxTokenizationLineLength\",{overrideIdentifier:this._languageId}),this._configurationService.onDidChangeConfiguration(m=>{m.affectsConfiguration(\"editor.maxTokenizationLineLength\")&&(this._maxTokenizationLineLength=this._configurationService.getValue(\"editor.maxTokenizationLineLength\",{overrideIdentifier:this._languageId}))})}dispose(){this._tokenizationRegistryListener.dispose()}getLoadStatus(){const r=[];for(const c in this._embeddedLanguages){const o=L.TokenizationRegistry.get(c);if(o){if(o instanceof S){const d=o.getLoadStatus();d.loaded===!1&&r.push(d.promise)}continue}L.TokenizationRegistry.isResolved(c)||r.push(L.TokenizationRegistry.getOrCreate(c))}return r.length===0?{loaded:!0}:{loaded:!1,promise:Promise.all(r).then(c=>{})}}getInitialState(){const r=_.create(null,this._lexer.start);return s.create(r,null)}tokenize(r,c,o){if(r.length>=this._maxTokenizationLineLength)return(0,k.nullTokenize)(this._languageId,o);const d=new n,l=this._tokenize(r,c,o,d);return d.finalize(l)}tokenizeEncoded(r,c,o){if(r.length>=this._maxTokenizationLineLength)return(0,k.nullTokenizeEncoded)(this._languageService.languageIdCodec.encodeLanguageId(this._languageId),o);const d=new t(this._languageService,this._standaloneThemeService.getColorTheme().tokenTheme),l=this._tokenize(r,c,o,d);return d.finalize(l)}_tokenize(r,c,o,d){return o.embeddedLanguageData?this._nestedTokenize(r,c,o,0,d):this._myTokenize(r,c,o,0,d)}_findLeavingNestedLanguageOffset(r,c){let o=this._lexer.tokenizer[c.stack.state];if(!o&&(o=y.findRules(this._lexer,c.stack.state),!o))throw y.createError(this._lexer,\"tokenizer state is not defined: \"+c.stack.state);let d=-1,l=!1;for(const p of o){if(!y.isIAction(p.action)||p.action.nextEmbedded!==\"@pop\")continue;l=!0;let m=p.regex;const v=p.regex.source;if(v.substr(0,4)===\"^(?:\"&&v.substr(v.length-1,1)===\")\"){const w=(m.ignoreCase?\"i\":\"\")+(m.unicode?\"u\":\"\");m=new RegExp(v.substr(4,v.length-5),w)}const b=r.search(m);b===-1||b!==0&&p.matchOnlyAtLineStart||(d===-1||b<d)&&(d=b)}if(!l)throw y.createError(this._lexer,'no rule containing nextEmbedded: \"@pop\" in tokenizer embedded state: '+c.stack.state);return d}_nestedTokenize(r,c,o,d,l){const p=this._findLeavingNestedLanguageOffset(r,o);if(p===-1){const b=l.nestedLanguageTokenize(r,c,o.embeddedLanguageData,d);return s.create(o.stack,new C(o.embeddedLanguageData.languageId,b))}const m=r.substring(0,p);m.length>0&&l.nestedLanguageTokenize(m,!1,o.embeddedLanguageData,d);const v=r.substring(p);return this._myTokenize(v,c,o,d+p,l)}_safeRuleName(r){return r?r.name:\"(unknown)\"}_myTokenize(r,c,o,d,l){l.enterLanguage(this._languageId);const p=r.length,m=c&&this._lexer.includeLF?r+`\n`:r,v=m.length;let b=o.embeddedLanguageData,w=o.stack,E=0,I=null,M=!0;for(;M||E<v;){const P=E,x=w.depth,T=I?I.groups.length:0,A=w.state;let N=null,F=null,O=null,W=null,U=null;if(I){N=I.matches;const K=I.groups.shift();F=K.matched,O=K.action,W=I.rule,I.groups.length===0&&(I=null)}else{if(!M&&E>=v)break;M=!1;let K=this._lexer.tokenizer[A];if(!K&&(K=y.findRules(this._lexer,A),!K))throw y.createError(this._lexer,\"tokenizer state is not defined: \"+A);const G=m.substr(E);for(const Z of K)if((E===0||!Z.matchOnlyAtLineStart)&&(N=G.match(Z.regex),N)){F=N[0],O=Z.action;break}}if(N||(N=[\"\"],F=\"\"),O||(E<v&&(N=[m.charAt(E)],F=N[0]),O=this._lexer.defaultToken),F===null)break;for(E+=F.length;y.isFuzzyAction(O)&&y.isIAction(O)&&O.test;)O=O.test(F,N,A,E===v);let j=null;if(typeof O==\"string\"||Array.isArray(O))j=O;else if(O.group)j=O.group;else if(O.token!==null&&O.token!==void 0){if(O.tokenSubst?j=y.substituteMatches(this._lexer,O.token,F,N,A):j=O.token,O.nextEmbedded)if(O.nextEmbedded===\"@pop\"){if(!b)throw y.createError(this._lexer,\"cannot pop embedded language if not inside one\");b=null}else{if(b)throw y.createError(this._lexer,\"cannot enter embedded language from within an embedded language\");U=y.substituteMatches(this._lexer,O.nextEmbedded,F,N,A)}if(O.goBack&&(E=Math.max(0,E-O.goBack)),O.switchTo&&typeof O.switchTo==\"string\"){let K=y.substituteMatches(this._lexer,O.switchTo,F,N,A);if(K[0]===\"@\"&&(K=K.substr(1)),y.findRules(this._lexer,K))w=w.switchTo(K);else throw y.createError(this._lexer,\"trying to switch to a state '\"+K+\"' that is undefined in rule: \"+this._safeRuleName(W))}else{if(O.transform&&typeof O.transform==\"function\")throw y.createError(this._lexer,\"action.transform not supported\");if(O.next)if(O.next===\"@push\"){if(w.depth>=this._lexer.maxStack)throw y.createError(this._lexer,\"maximum tokenizer stack size reached: [\"+w.state+\",\"+w.parent.state+\",...]\");w=w.push(A)}else if(O.next===\"@pop\"){if(w.depth<=1)throw y.createError(this._lexer,\"trying to pop an empty stack in rule: \"+this._safeRuleName(W));w=w.pop()}else if(O.next===\"@popall\")w=w.popall();else{let K=y.substituteMatches(this._lexer,O.next,F,N,A);if(K[0]===\"@\"&&(K=K.substr(1)),y.findRules(this._lexer,K))w=w.push(K);else throw y.createError(this._lexer,\"trying to set a next state '\"+K+\"' that is undefined in rule: \"+this._safeRuleName(W))}}O.log&&typeof O.log==\"string\"&&y.log(this._lexer,this._lexer.languageId+\": \"+y.substituteMatches(this._lexer,O.log,F,N,A))}if(j===null)throw y.createError(this._lexer,\"lexer rule has no well-defined action in rule: \"+this._safeRuleName(W));const R=K=>{const G=this._languageService.getLanguageIdByLanguageName(K)||this._languageService.getLanguageIdByMimeType(K)||K,Z=this._getNestedEmbeddedLanguageData(G);if(E<v){const J=r.substr(E);return this._nestedTokenize(J,c,s.create(w,Z),d+E,l)}else return s.create(w,Z)};if(Array.isArray(j)){if(I&&I.groups.length>0)throw y.createError(this._lexer,\"groups cannot be nested: \"+this._safeRuleName(W));if(N.length!==j.length+1)throw y.createError(this._lexer,\"matched number of groups does not match the number of actions in rule: \"+this._safeRuleName(W));let K=0;for(let G=1;G<N.length;G++)K+=N[G].length;if(K!==F.length)throw y.createError(this._lexer,\"with groups, all characters should be matched in consecutive groups in rule: \"+this._safeRuleName(W));I={rule:W,matches:N,groups:[]};for(let G=0;G<j.length;G++)I.groups[G]={action:j[G],matched:N[G+1]};E-=F.length;continue}else{if(j===\"@rematch\"&&(E-=F.length,F=\"\",N=null,j=\"\",U!==null))return R(U);if(F.length===0){if(v===0||x!==w.depth||A!==w.state||(I?I.groups.length:0)!==T)continue;throw y.createError(this._lexer,\"no progress in tokenizer in rule: \"+this._safeRuleName(W))}let K=null;if(y.isString(j)&&j.indexOf(\"@brackets\")===0){const G=j.substr(9),Z=u(this._lexer,F);if(!Z)throw y.createError(this._lexer,\"@brackets token returned but no bracket defined as: \"+F);K=y.sanitize(Z.token+G)}else{const G=j===\"\"?\"\":j+this._lexer.tokenPostfix;K=y.sanitize(G)}P<p&&l.emit(P+d,K)}if(U!==null)return R(U)}return s.create(w,b)}_getNestedEmbeddedLanguageData(r){if(!this._languageService.isRegisteredLanguageId(r))return new C(r,k.NullState);r!==this._languageId&&(this._languageService.requestBasicLanguageFeatures(r),L.TokenizationRegistry.getOrCreate(r),this._embeddedLanguages[r]=!0);const c=L.TokenizationRegistry.get(r);return c?new C(r,c.getInitialState()):new C(r,k.NullState)}};e.MonarchTokenizer=a,e.MonarchTokenizer=a=S=ke([fe(4,D.IConfigurationService)],a);function u(h,r){if(!r)return null;r=y.fixCase(h,r);const c=h.brackets;for(const o of c){if(o.open===r)return{token:o.token,bracketType:1};if(o.close===r)return{token:o.token,bracketType:-1}}return null}}),define(ne[752],se([1,0,89,11,29,86,95,67,334]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Colorizer=void 0;const g=(0,L.createTrustedTypesPolicy)(\"standaloneColorizer\",{createHTML:t=>t});class C{static colorizeElement(a,u,h,r){r=r||{};const c=r.theme||\"vs\",o=r.mimeType||h.getAttribute(\"lang\")||h.getAttribute(\"data-lang\");if(!o)return console.error(\"Mode not detected\"),Promise.resolve();const d=u.getLanguageIdByMimeType(o)||o;a.setTheme(c);const l=h.firstChild?h.firstChild.nodeValue:\"\";h.className+=\" \"+c;const p=m=>{var v;const b=(v=g?.createHTML(m))!==null&&v!==void 0?v:m;h.innerHTML=b};return this.colorize(u,l||\"\",d,r).then(p,m=>console.error(m))}static colorize(a,u,h,r){return we(this,void 0,void 0,function*(){const c=a.languageIdCodec;let o=4;r&&typeof r.tabSize==\"number\"&&(o=r.tabSize),k.startsWithUTF8BOM(u)&&(u=u.substr(1));const d=k.splitLines(u);if(!a.isRegisteredLanguageId(h))return i(d,o,c);const l=yield y.TokenizationRegistry.getOrCreate(h);return l?s(d,o,l,c):i(d,o,c)})}static colorizeLine(a,u,h,r,c=4){const o=f.ViewLineRenderingData.isBasicASCII(a,u),d=f.ViewLineRenderingData.containsRTL(a,o,h);return(0,S.renderViewLine2)(new S.RenderLineInput(!1,!0,a,!1,o,d,0,r,[],c,0,0,0,0,-1,\"none\",!1,!1,null)).html}static colorizeModelLine(a,u,h=4){const r=a.getLineContent(u);a.tokenization.forceTokenization(u);const o=a.tokenization.getLineTokens(u).inflate();return this.colorizeLine(r,a.mightContainNonBasicASCII(),a.mightContainRTL(),o,h)}}e.Colorizer=C;function s(t,a,u,h){return new Promise((r,c)=>{const o=()=>{const d=n(t,a,u,h);if(u instanceof _.MonarchTokenizer){const l=u.getLoadStatus();if(l.loaded===!1){l.promise.then(o,c);return}}r(d)};o()})}function i(t,a,u){let h=[];const c=new Uint32Array(2);c[0]=0,c[1]=33587200;for(let o=0,d=t.length;o<d;o++){const l=t[o];c[0]=l.length;const p=new D.LineTokens(c,l,u),m=f.ViewLineRenderingData.isBasicASCII(l,!0),v=f.ViewLineRenderingData.containsRTL(l,m,!0),b=(0,S.renderViewLine2)(new S.RenderLineInput(!1,!0,l,!1,m,v,0,p,[],a,0,0,0,0,-1,\"none\",!1,!1,null));h=h.concat(b.html),h.push(\"<br/>\")}return h.join(\"\")}function n(t,a,u,h){let r=[],c=u.getInitialState();for(let o=0,d=t.length;o<d;o++){const l=t[o],p=u.tokenizeEncoded(l,!0,c);D.LineTokens.convertToEndOffset(p.tokens,l.length);const m=new D.LineTokens(p.tokens,l,h),v=f.ViewLineRenderingData.isBasicASCII(l,!0),b=f.ViewLineRenderingData.containsRTL(l,v,!0),w=(0,S.renderViewLine2)(new S.RenderLineInput(!1,!0,l,!1,v,b,0,m.inflate(),[],a,0,0,0,0,-1,\"none\",!1,!1,null));r=r.concat(w.html),r.push(\"<br/>\"),c=p.endState}return r.join(\"\")}}),define(ne[15],se([1,0,17,11,742,8,723]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.implies=e.IContextKeyService=e.RawContextKey=e.ContextKeyOrExpr=e.ContextKeyAndExpr=e.ContextKeyNotRegexExpr=e.ContextKeyRegexExpr=e.ContextKeySmallerEqualsExpr=e.ContextKeySmallerExpr=e.ContextKeyGreaterEqualsExpr=e.ContextKeyGreaterExpr=e.ContextKeyNotExpr=e.ContextKeyNotEqualsExpr=e.ContextKeyNotInExpr=e.ContextKeyInExpr=e.ContextKeyEqualsExpr=e.ContextKeyDefinedExpr=e.ContextKeyTrueExpr=e.ContextKeyFalseExpr=e.expressionsAreEqualWithConstantSubstitution=e.ContextKeyExpr=e.Parser=void 0;const f=new Map;f.set(\"false\",!1),f.set(\"true\",!0),f.set(\"isMac\",L.isMacintosh),f.set(\"isLinux\",L.isLinux),f.set(\"isWindows\",L.isWindows),f.set(\"isWeb\",L.isWeb),f.set(\"isMacNative\",L.isMacintosh&&!L.isWeb),f.set(\"isEdge\",L.isEdge),f.set(\"isFirefox\",L.isFirefox),f.set(\"isChrome\",L.isChrome),f.set(\"isSafari\",L.isSafari);const _=Object.prototype.hasOwnProperty,g={regexParsingWithErrorRecovery:!0},C=(0,S.localize)(0,null),s=(0,S.localize)(1,null),i=(0,S.localize)(2,null),n=(0,S.localize)(3,null),t=(0,S.localize)(4,null),a=(0,S.localize)(5,null),u=(0,S.localize)(6,null),h=(0,S.localize)(7,null);class r{constructor(H=g){this._config=H,this._scanner=new y.Scanner,this._tokens=[],this._current=0,this._parsingErrors=[],this._flagsGYRe=/g|y/g}parse(H){if(H===\"\"){this._parsingErrors.push({message:C,offset:0,lexeme:\"\",additionalInfo:s});return}this._tokens=this._scanner.reset(H).scan(),this._current=0,this._parsingErrors=[];try{const B=this._expr();if(!this._isAtEnd()){const V=this._peek(),Y=V.type===17?a:void 0;throw this._parsingErrors.push({message:t,offset:V.offset,lexeme:y.Scanner.getLexeme(V),additionalInfo:Y}),r._parseError}return B}catch(B){if(B!==r._parseError)throw B;return}}_expr(){return this._or()}_or(){const H=[this._and()];for(;this._matchOne(16);){const B=this._and();H.push(B)}return H.length===1?H[0]:c.or(...H)}_and(){const H=[this._term()];for(;this._matchOne(15);){const B=this._term();H.push(B)}return H.length===1?H[0]:c.and(...H)}_term(){if(this._matchOne(2)){const H=this._peek();switch(H.type){case 11:return this._advance(),l.INSTANCE;case 12:return this._advance(),p.INSTANCE;case 0:{this._advance();const B=this._expr();return this._consume(1,n),B?.negate()}case 17:return this._advance(),I.create(H.lexeme);default:throw this._errExpectedButGot(\"KEY | true | false | '(' expression ')'\",H)}}return this._primary()}_primary(){const H=this._peek();switch(H.type){case 11:return this._advance(),c.true();case 12:return this._advance(),c.false();case 0:{this._advance();const B=this._expr();return this._consume(1,n),B}case 17:{const B=H.lexeme;if(this._advance(),this._matchOne(9)){const Y=this._peek();if(!this._config.regexParsingWithErrorRecovery){if(this._advance(),Y.type!==10)throw this._errExpectedButGot(\"REGEX\",Y);const ie=Y.lexeme,ae=ie.lastIndexOf(\"/\"),ce=ae===ie.length-1?void 0:this._removeFlagsGY(ie.substring(ae+1));let de;try{de=new RegExp(ie.substring(1,ae),ce)}catch{throw this._errExpectedButGot(\"REGEX\",Y)}return N.create(B,de)}switch(Y.type){case 10:case 19:{const ie=[Y.lexeme];this._advance();let ae=this._peek(),ce=0;for(let q=0;q<Y.lexeme.length;q++)Y.lexeme.charCodeAt(q)===40?ce++:Y.lexeme.charCodeAt(q)===41&&ce--;for(;!this._isAtEnd()&&ae.type!==15&&ae.type!==16;){switch(ae.type){case 0:ce++;break;case 1:ce--;break;case 10:case 18:for(let q=0;q<ae.lexeme.length;q++)ae.lexeme.charCodeAt(q)===40?ce++:Y.lexeme.charCodeAt(q)===41&&ce--}if(ce<0)break;ie.push(y.Scanner.getLexeme(ae)),this._advance(),ae=this._peek()}const de=ie.join(\"\"),he=de.lastIndexOf(\"/\"),ue=he===de.length-1?void 0:this._removeFlagsGY(de.substring(he+1));let te;try{te=new RegExp(de.substring(1,he),ue)}catch{throw this._errExpectedButGot(\"REGEX\",Y)}return c.regex(B,te)}case 18:{const ie=Y.lexeme;this._advance();let ae=null;if(!(0,k.isFalsyOrWhitespace)(ie)){const ce=ie.indexOf(\"/\"),de=ie.lastIndexOf(\"/\");if(ce!==de&&ce>=0){const he=ie.slice(ce+1,de),ue=ie[de+1]===\"i\"?\"i\":\"\";try{ae=new RegExp(he,ue)}catch{throw this._errExpectedButGot(\"REGEX\",Y)}}}if(ae===null)throw this._errExpectedButGot(\"REGEX\",Y);return N.create(B,ae)}default:throw this._errExpectedButGot(\"REGEX\",this._peek())}}if(this._matchOne(14)){this._consume(13,i);const Y=this._value();return c.notIn(B,Y)}switch(this._peek().type){case 3:{this._advance();const Y=this._value();if(this._previous().type===18)return c.equals(B,Y);switch(Y){case\"true\":return c.has(B);case\"false\":return c.not(B);default:return c.equals(B,Y)}}case 4:{this._advance();const Y=this._value();if(this._previous().type===18)return c.notEquals(B,Y);switch(Y){case\"true\":return c.not(B);case\"false\":return c.has(B);default:return c.notEquals(B,Y)}}case 5:return this._advance(),T.create(B,this._value());case 6:return this._advance(),A.create(B,this._value());case 7:return this._advance(),P.create(B,this._value());case 8:return this._advance(),x.create(B,this._value());case 13:return this._advance(),c.in(B,this._value());default:return c.has(B)}}case 20:throw this._parsingErrors.push({message:u,offset:H.offset,lexeme:\"\",additionalInfo:h}),r._parseError;default:throw this._errExpectedButGot(`true | false | KEY \n\t| KEY '=~' REGEX \n\t| KEY ('==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'not' 'in') value`,this._peek())}}_value(){const H=this._peek();switch(H.type){case 17:case 18:return this._advance(),H.lexeme;case 11:return this._advance(),\"true\";case 12:return this._advance(),\"false\";case 13:return this._advance(),\"in\";default:return\"\"}}_removeFlagsGY(H){return H.replaceAll(this._flagsGYRe,\"\")}_previous(){return this._tokens[this._current-1]}_matchOne(H){return this._check(H)?(this._advance(),!0):!1}_advance(){return this._isAtEnd()||this._current++,this._previous()}_consume(H,B){if(this._check(H))return this._advance();throw this._errExpectedButGot(B,this._peek())}_errExpectedButGot(H,B,V){const Y=(0,S.localize)(8,null,H,y.Scanner.getLexeme(B)),ie=B.offset,ae=y.Scanner.getLexeme(B);return this._parsingErrors.push({message:Y,offset:ie,lexeme:ae,additionalInfo:V}),r._parseError}_check(H){return this._peek().type===H}_peek(){return this._tokens[this._current]}_isAtEnd(){return this._peek().type===20}}e.Parser=r,r._parseError=new Error;class c{static false(){return l.INSTANCE}static true(){return p.INSTANCE}static has(H){return m.create(H)}static equals(H,B){return v.create(H,B)}static notEquals(H,B){return E.create(H,B)}static regex(H,B){return N.create(H,B)}static in(H,B){return b.create(H,B)}static notIn(H,B){return w.create(H,B)}static not(H){return I.create(H)}static and(...H){return W.create(H,null,!0)}static or(...H){return U.create(H,null,!0)}static deserialize(H){return H==null?void 0:this._parser.parse(H)}}e.ContextKeyExpr=c,c._parser=new r({regexParsingWithErrorRecovery:!1});function o(X,H){const B=X?X.substituteConstants():void 0,V=H?H.substituteConstants():void 0;return!B&&!V?!0:!B||!V?!1:B.equals(V)}e.expressionsAreEqualWithConstantSubstitution=o;function d(X,H){return X.cmp(H)}class l{constructor(){this.type=0}cmp(H){return this.type-H.type}equals(H){return H.type===this.type}substituteConstants(){return this}evaluate(H){return!1}serialize(){return\"false\"}keys(){return[]}negate(){return p.INSTANCE}}e.ContextKeyFalseExpr=l,l.INSTANCE=new l;class p{constructor(){this.type=1}cmp(H){return this.type-H.type}equals(H){return H.type===this.type}substituteConstants(){return this}evaluate(H){return!0}serialize(){return\"true\"}keys(){return[]}negate(){return l.INSTANCE}}e.ContextKeyTrueExpr=p,p.INSTANCE=new p;class m{static create(H,B=null){const V=f.get(H);return typeof V==\"boolean\"?V?p.INSTANCE:l.INSTANCE:new m(H,B)}constructor(H,B){this.key=H,this.negated=B,this.type=2}cmp(H){return H.type!==this.type?this.type-H.type:R(this.key,H.key)}equals(H){return H.type===this.type?this.key===H.key:!1}substituteConstants(){const H=f.get(this.key);return typeof H==\"boolean\"?H?p.INSTANCE:l.INSTANCE:this}evaluate(H){return!!H.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}negate(){return this.negated||(this.negated=I.create(this.key,this)),this.negated}}e.ContextKeyDefinedExpr=m;class v{static create(H,B,V=null){if(typeof B==\"boolean\")return B?m.create(H,V):I.create(H,V);const Y=f.get(H);return typeof Y==\"boolean\"?B===(Y?\"true\":\"false\")?p.INSTANCE:l.INSTANCE:new v(H,B,V)}constructor(H,B,V){this.key=H,this.value=B,this.negated=V,this.type=4}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.value,H.key,H.value)}equals(H){return H.type===this.type?this.key===H.key&&this.value===H.value:!1}substituteConstants(){const H=f.get(this.key);if(typeof H==\"boolean\"){const B=H?\"true\":\"false\";return this.value===B?p.INSTANCE:l.INSTANCE}return this}evaluate(H){return H.getValue(this.key)==this.value}serialize(){return`${this.key} == '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=E.create(this.key,this.value,this)),this.negated}}e.ContextKeyEqualsExpr=v;class b{static create(H,B){return new b(H,B)}constructor(H,B){this.key=H,this.valueKey=B,this.type=10,this.negated=null}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.valueKey,H.key,H.valueKey)}equals(H){return H.type===this.type?this.key===H.key&&this.valueKey===H.valueKey:!1}substituteConstants(){return this}evaluate(H){const B=H.getValue(this.valueKey),V=H.getValue(this.key);return Array.isArray(B)?B.includes(V):typeof V==\"string\"&&typeof B==\"object\"&&B!==null?_.call(B,V):!1}serialize(){return`${this.key} in '${this.valueKey}'`}keys(){return[this.key,this.valueKey]}negate(){return this.negated||(this.negated=w.create(this.key,this.valueKey)),this.negated}}e.ContextKeyInExpr=b;class w{static create(H,B){return new w(H,B)}constructor(H,B){this.key=H,this.valueKey=B,this.type=11,this._negated=b.create(H,B)}cmp(H){return H.type!==this.type?this.type-H.type:this._negated.cmp(H._negated)}equals(H){return H.type===this.type?this._negated.equals(H._negated):!1}substituteConstants(){return this}evaluate(H){return!this._negated.evaluate(H)}serialize(){return`${this.key} not in '${this.valueKey}'`}keys(){return this._negated.keys()}negate(){return this._negated}}e.ContextKeyNotInExpr=w;class E{static create(H,B,V=null){if(typeof B==\"boolean\")return B?I.create(H,V):m.create(H,V);const Y=f.get(H);return typeof Y==\"boolean\"?B===(Y?\"true\":\"false\")?l.INSTANCE:p.INSTANCE:new E(H,B,V)}constructor(H,B,V){this.key=H,this.value=B,this.negated=V,this.type=5}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.value,H.key,H.value)}equals(H){return H.type===this.type?this.key===H.key&&this.value===H.value:!1}substituteConstants(){const H=f.get(this.key);if(typeof H==\"boolean\"){const B=H?\"true\":\"false\";return this.value===B?l.INSTANCE:p.INSTANCE}return this}evaluate(H){return H.getValue(this.key)!=this.value}serialize(){return`${this.key} != '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=v.create(this.key,this.value,this)),this.negated}}e.ContextKeyNotEqualsExpr=E;class I{static create(H,B=null){const V=f.get(H);return typeof V==\"boolean\"?V?l.INSTANCE:p.INSTANCE:new I(H,B)}constructor(H,B){this.key=H,this.negated=B,this.type=3}cmp(H){return H.type!==this.type?this.type-H.type:R(this.key,H.key)}equals(H){return H.type===this.type?this.key===H.key:!1}substituteConstants(){const H=f.get(this.key);return typeof H==\"boolean\"?H?l.INSTANCE:p.INSTANCE:this}evaluate(H){return!H.getValue(this.key)}serialize(){return`!${this.key}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=m.create(this.key,this)),this.negated}}e.ContextKeyNotExpr=I;function M(X,H){if(typeof X==\"string\"){const B=parseFloat(X);isNaN(B)||(X=B)}return typeof X==\"string\"||typeof X==\"number\"?H(X):l.INSTANCE}class P{static create(H,B,V=null){return M(B,Y=>new P(H,Y,V))}constructor(H,B,V){this.key=H,this.value=B,this.negated=V,this.type=12}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.value,H.key,H.value)}equals(H){return H.type===this.type?this.key===H.key&&this.value===H.value:!1}substituteConstants(){return this}evaluate(H){return typeof this.value==\"string\"?!1:parseFloat(H.getValue(this.key))>this.value}serialize(){return`${this.key} > ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=A.create(this.key,this.value,this)),this.negated}}e.ContextKeyGreaterExpr=P;class x{static create(H,B,V=null){return M(B,Y=>new x(H,Y,V))}constructor(H,B,V){this.key=H,this.value=B,this.negated=V,this.type=13}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.value,H.key,H.value)}equals(H){return H.type===this.type?this.key===H.key&&this.value===H.value:!1}substituteConstants(){return this}evaluate(H){return typeof this.value==\"string\"?!1:parseFloat(H.getValue(this.key))>=this.value}serialize(){return`${this.key} >= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=T.create(this.key,this.value,this)),this.negated}}e.ContextKeyGreaterEqualsExpr=x;class T{static create(H,B,V=null){return M(B,Y=>new T(H,Y,V))}constructor(H,B,V){this.key=H,this.value=B,this.negated=V,this.type=14}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.value,H.key,H.value)}equals(H){return H.type===this.type?this.key===H.key&&this.value===H.value:!1}substituteConstants(){return this}evaluate(H){return typeof this.value==\"string\"?!1:parseFloat(H.getValue(this.key))<this.value}serialize(){return`${this.key} < ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=x.create(this.key,this.value,this)),this.negated}}e.ContextKeySmallerExpr=T;class A{static create(H,B,V=null){return M(B,Y=>new A(H,Y,V))}constructor(H,B,V){this.key=H,this.value=B,this.negated=V,this.type=15}cmp(H){return H.type!==this.type?this.type-H.type:K(this.key,this.value,H.key,H.value)}equals(H){return H.type===this.type?this.key===H.key&&this.value===H.value:!1}substituteConstants(){return this}evaluate(H){return typeof this.value==\"string\"?!1:parseFloat(H.getValue(this.key))<=this.value}serialize(){return`${this.key} <= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=P.create(this.key,this.value,this)),this.negated}}e.ContextKeySmallerEqualsExpr=A;class N{static create(H,B){return new N(H,B)}constructor(H,B){this.key=H,this.regexp=B,this.type=7,this.negated=null}cmp(H){if(H.type!==this.type)return this.type-H.type;if(this.key<H.key)return-1;if(this.key>H.key)return 1;const B=this.regexp?this.regexp.source:\"\",V=H.regexp?H.regexp.source:\"\";return B<V?-1:B>V?1:0}equals(H){if(H.type===this.type){const B=this.regexp?this.regexp.source:\"\",V=H.regexp?H.regexp.source:\"\";return this.key===H.key&&B===V}return!1}substituteConstants(){return this}evaluate(H){const B=H.getValue(this.key);return this.regexp?this.regexp.test(B):!1}serialize(){const H=this.regexp?`/${this.regexp.source}/${this.regexp.flags}`:\"/invalid/\";return`${this.key} =~ ${H}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=F.create(this)),this.negated}}e.ContextKeyRegexExpr=N;class F{static create(H){return new F(H)}constructor(H){this._actual=H,this.type=8}cmp(H){return H.type!==this.type?this.type-H.type:this._actual.cmp(H._actual)}equals(H){return H.type===this.type?this._actual.equals(H._actual):!1}substituteConstants(){return this}evaluate(H){return!this._actual.evaluate(H)}serialize(){return`!(${this._actual.serialize()})`}keys(){return this._actual.keys()}negate(){return this._actual}}e.ContextKeyNotRegexExpr=F;function O(X){let H=null;for(let B=0,V=X.length;B<V;B++){const Y=X[B].substituteConstants();if(X[B]!==Y&&H===null){H=[];for(let ie=0;ie<B;ie++)H[ie]=X[ie]}H!==null&&(H[B]=Y)}return H===null?X:H}class W{static create(H,B,V){return W._normalizeArr(H,B,V)}constructor(H,B){this.expr=H,this.negated=B,this.type=6}cmp(H){if(H.type!==this.type)return this.type-H.type;if(this.expr.length<H.expr.length)return-1;if(this.expr.length>H.expr.length)return 1;for(let B=0,V=this.expr.length;B<V;B++){const Y=d(this.expr[B],H.expr[B]);if(Y!==0)return Y}return 0}equals(H){if(H.type===this.type){if(this.expr.length!==H.expr.length)return!1;for(let B=0,V=this.expr.length;B<V;B++)if(!this.expr[B].equals(H.expr[B]))return!1;return!0}return!1}substituteConstants(){const H=O(this.expr);return H===this.expr?this:W.create(H,this.negated,!1)}evaluate(H){for(let B=0,V=this.expr.length;B<V;B++)if(!this.expr[B].evaluate(H))return!1;return!0}static _normalizeArr(H,B,V){const Y=[];let ie=!1;for(const ae of H)if(ae){if(ae.type===1){ie=!0;continue}if(ae.type===0)return l.INSTANCE;if(ae.type===6){Y.push(...ae.expr);continue}Y.push(ae)}if(Y.length===0&&ie)return p.INSTANCE;if(Y.length!==0){if(Y.length===1)return Y[0];Y.sort(d);for(let ae=1;ae<Y.length;ae++)Y[ae-1].equals(Y[ae])&&(Y.splice(ae,1),ae--);if(Y.length===1)return Y[0];for(;Y.length>1;){const ae=Y[Y.length-1];if(ae.type!==9)break;Y.pop();const ce=Y.pop(),de=Y.length===0,he=U.create(ae.expr.map(ue=>W.create([ue,ce],null,V)),null,de);he&&(Y.push(he),Y.sort(d))}if(Y.length===1)return Y[0];if(V){for(let ae=0;ae<Y.length;ae++)for(let ce=ae+1;ce<Y.length;ce++)if(Y[ae].negate().equals(Y[ce]))return l.INSTANCE;if(Y.length===1)return Y[0]}return new W(Y,B)}}serialize(){return this.expr.map(H=>H.serialize()).join(\" && \")}keys(){const H=[];for(const B of this.expr)H.push(...B.keys());return H}negate(){if(!this.negated){const H=[];for(const B of this.expr)H.push(B.negate());this.negated=U.create(H,this,!0)}return this.negated}}e.ContextKeyAndExpr=W;class U{static create(H,B,V){return U._normalizeArr(H,B,V)}constructor(H,B){this.expr=H,this.negated=B,this.type=9}cmp(H){if(H.type!==this.type)return this.type-H.type;if(this.expr.length<H.expr.length)return-1;if(this.expr.length>H.expr.length)return 1;for(let B=0,V=this.expr.length;B<V;B++){const Y=d(this.expr[B],H.expr[B]);if(Y!==0)return Y}return 0}equals(H){if(H.type===this.type){if(this.expr.length!==H.expr.length)return!1;for(let B=0,V=this.expr.length;B<V;B++)if(!this.expr[B].equals(H.expr[B]))return!1;return!0}return!1}substituteConstants(){const H=O(this.expr);return H===this.expr?this:U.create(H,this.negated,!1)}evaluate(H){for(let B=0,V=this.expr.length;B<V;B++)if(this.expr[B].evaluate(H))return!0;return!1}static _normalizeArr(H,B,V){let Y=[],ie=!1;if(H){for(let ae=0,ce=H.length;ae<ce;ae++){const de=H[ae];if(de){if(de.type===0){ie=!0;continue}if(de.type===1)return p.INSTANCE;if(de.type===9){Y=Y.concat(de.expr);continue}Y.push(de)}}if(Y.length===0&&ie)return l.INSTANCE;Y.sort(d)}if(Y.length!==0){if(Y.length===1)return Y[0];for(let ae=1;ae<Y.length;ae++)Y[ae-1].equals(Y[ae])&&(Y.splice(ae,1),ae--);if(Y.length===1)return Y[0];if(V){for(let ae=0;ae<Y.length;ae++)for(let ce=ae+1;ce<Y.length;ce++)if(Y[ae].negate().equals(Y[ce]))return p.INSTANCE;if(Y.length===1)return Y[0]}return new U(Y,B)}}serialize(){return this.expr.map(H=>H.serialize()).join(\" || \")}keys(){const H=[];for(const B of this.expr)H.push(...B.keys());return H}negate(){if(!this.negated){const H=[];for(const B of this.expr)H.push(B.negate());for(;H.length>1;){const B=H.shift(),V=H.shift(),Y=[];for(const ie of J(B))for(const ae of J(V))Y.push(W.create([ie,ae],null,!1));H.unshift(U.create(Y,null,!1))}this.negated=U.create(H,this,!0)}return this.negated}}e.ContextKeyOrExpr=U;class j extends m{static all(){return j._info.values()}constructor(H,B,V){super(H,null),this._defaultValue=B,typeof V==\"object\"?j._info.push(Object.assign(Object.assign({},V),{key:H})):V!==!0&&j._info.push({key:H,description:V,type:B!=null?typeof B:void 0})}bindTo(H){return H.createKey(this.key,this._defaultValue)}getValue(H){return H.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(H){return v.create(this.key,H)}}e.RawContextKey=j,j._info=[],e.IContextKeyService=(0,D.createDecorator)(\"contextKeyService\");function R(X,H){return X<H?-1:X>H?1:0}function K(X,H,B,V){return X<B?-1:X>B?1:H<V?-1:H>V?1:0}function G(X,H){if(X.type===0||H.type===1)return!0;if(X.type===9)return H.type===9?Z(X.expr,H.expr):!1;if(H.type===9){for(const B of H.expr)if(G(X,B))return!0;return!1}if(X.type===6){if(H.type===6)return Z(H.expr,X.expr);for(const B of X.expr)if(G(B,H))return!0;return!1}return X.equals(H)}e.implies=G;function Z(X,H){let B=0,V=0;for(;B<X.length&&V<H.length;){const Y=X[B].cmp(H[V]);if(Y<0)return!1;Y===0&&B++,V++}return B===X.length}function J(X){return X.type===9?X.expr:[X]}}),define(ne[21],se([1,0,623,15]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditorContextKeys=void 0;var y;(function(D){D.editorSimpleInput=new k.RawContextKey(\"editorSimpleInput\",!1,!0),D.editorTextFocus=new k.RawContextKey(\"editorTextFocus\",!1,L.localize(0,null)),D.focus=new k.RawContextKey(\"editorFocus\",!1,L.localize(1,null)),D.textInputFocus=new k.RawContextKey(\"textInputFocus\",!1,L.localize(2,null)),D.readOnly=new k.RawContextKey(\"editorReadonly\",!1,L.localize(3,null)),D.inDiffEditor=new k.RawContextKey(\"inDiffEditor\",!1,L.localize(4,null)),D.isEmbeddedDiffEditor=new k.RawContextKey(\"isEmbeddedDiffEditor\",!1,L.localize(5,null)),D.comparingMovedCode=new k.RawContextKey(\"comparingMovedCode\",!1,L.localize(6,null)),D.accessibleDiffViewerVisible=new k.RawContextKey(\"accessibleDiffViewerVisible\",!1,L.localize(7,null)),D.diffEditorRenderSideBySideInlineBreakpointReached=new k.RawContextKey(\"diffEditorRenderSideBySideInlineBreakpointReached\",!1,L.localize(8,null)),D.columnSelection=new k.RawContextKey(\"editorColumnSelection\",!1,L.localize(9,null)),D.writable=D.readOnly.toNegated(),D.hasNonEmptySelection=new k.RawContextKey(\"editorHasSelection\",!1,L.localize(10,null)),D.hasOnlyEmptySelection=D.hasNonEmptySelection.toNegated(),D.hasMultipleSelections=new k.RawContextKey(\"editorHasMultipleSelections\",!1,L.localize(11,null)),D.hasSingleSelection=D.hasMultipleSelections.toNegated(),D.tabMovesFocus=new k.RawContextKey(\"editorTabMovesFocus\",!1,L.localize(12,null)),D.tabDoesNotMoveFocus=D.tabMovesFocus.toNegated(),D.isInWalkThroughSnippet=new k.RawContextKey(\"isInEmbeddedEditor\",!1,!0),D.canUndo=new k.RawContextKey(\"canUndo\",!1,!0),D.canRedo=new k.RawContextKey(\"canRedo\",!1,!0),D.hoverVisible=new k.RawContextKey(\"editorHoverVisible\",!1,L.localize(13,null)),D.hoverFocused=new k.RawContextKey(\"editorHoverFocused\",!1,L.localize(14,null)),D.stickyScrollFocused=new k.RawContextKey(\"stickyScrollFocused\",!1,L.localize(15,null)),D.stickyScrollVisible=new k.RawContextKey(\"stickyScrollVisible\",!1,L.localize(16,null)),D.standaloneColorPickerVisible=new k.RawContextKey(\"standaloneColorPickerVisible\",!1,L.localize(17,null)),D.standaloneColorPickerFocused=new k.RawContextKey(\"standaloneColorPickerFocused\",!1,L.localize(18,null)),D.inCompositeEditor=new k.RawContextKey(\"inCompositeEditor\",void 0,L.localize(19,null)),D.notInCompositeEditor=D.inCompositeEditor.toNegated(),D.languageId=new k.RawContextKey(\"editorLangId\",\"\",L.localize(20,null)),D.hasCompletionItemProvider=new k.RawContextKey(\"editorHasCompletionItemProvider\",!1,L.localize(21,null)),D.hasCodeActionsProvider=new k.RawContextKey(\"editorHasCodeActionsProvider\",!1,L.localize(22,null)),D.hasCodeLensProvider=new k.RawContextKey(\"editorHasCodeLensProvider\",!1,L.localize(23,null)),D.hasDefinitionProvider=new k.RawContextKey(\"editorHasDefinitionProvider\",!1,L.localize(24,null)),D.hasDeclarationProvider=new k.RawContextKey(\"editorHasDeclarationProvider\",!1,L.localize(25,null)),D.hasImplementationProvider=new k.RawContextKey(\"editorHasImplementationProvider\",!1,L.localize(26,null)),D.hasTypeDefinitionProvider=new k.RawContextKey(\"editorHasTypeDefinitionProvider\",!1,L.localize(27,null)),D.hasHoverProvider=new k.RawContextKey(\"editorHasHoverProvider\",!1,L.localize(28,null)),D.hasDocumentHighlightProvider=new k.RawContextKey(\"editorHasDocumentHighlightProvider\",!1,L.localize(29,null)),D.hasDocumentSymbolProvider=new k.RawContextKey(\"editorHasDocumentSymbolProvider\",!1,L.localize(30,null)),D.hasReferenceProvider=new k.RawContextKey(\"editorHasReferenceProvider\",!1,L.localize(31,null)),D.hasRenameProvider=new k.RawContextKey(\"editorHasRenameProvider\",!1,L.localize(32,null)),D.hasSignatureHelpProvider=new k.RawContextKey(\"editorHasSignatureHelpProvider\",!1,L.localize(33,null)),D.hasInlayHintsProvider=new k.RawContextKey(\"editorHasInlayHintsProvider\",!1,L.localize(34,null)),D.hasDocumentFormattingProvider=new k.RawContextKey(\"editorHasDocumentFormattingProvider\",!1,L.localize(35,null)),D.hasDocumentSelectionFormattingProvider=new k.RawContextKey(\"editorHasDocumentSelectionFormattingProvider\",!1,L.localize(36,null)),D.hasMultipleDocumentFormattingProvider=new k.RawContextKey(\"editorHasMultipleDocumentFormattingProvider\",!1,L.localize(37,null)),D.hasMultipleDocumentSelectionFormattingProvider=new k.RawContextKey(\"editorHasMultipleDocumentSelectionFormattingProvider\",!1,L.localize(38,null))})(y||(e.EditorContextKeys=y={}))}),define(ne[235],se([1,0,42,11,82,15,2,679]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InlineCompletionContextKeys=void 0;class _ extends S.Disposable{constructor(C,s){super(),this.contextKeyService=C,this.model=s,this.inlineCompletionVisible=_.inlineSuggestionVisible.bindTo(this.contextKeyService),this.inlineCompletionSuggestsIndentation=_.inlineSuggestionHasIndentation.bindTo(this.contextKeyService),this.inlineCompletionSuggestsIndentationLessThanTabSize=_.inlineSuggestionHasIndentationLessThanTabSize.bindTo(this.contextKeyService),this.suppressSuggestions=_.suppressSuggestions.bindTo(this.contextKeyService),this._register((0,L.autorun)(i=>{const n=this.model.read(i),t=n?.state.read(i),a=!!t?.inlineCompletion&&t?.ghostText!==void 0&&!t?.ghostText.isEmpty();this.inlineCompletionVisible.set(a),t?.ghostText&&t?.inlineCompletion&&this.suppressSuggestions.set(t.inlineCompletion.inlineCompletion.source.inlineCompletions.suppressSuggestions)})),this._register((0,L.autorun)(i=>{const n=this.model.read(i);let t=!1,a=!0;const u=n?.ghostText.read(i);if(n?.selectedSuggestItem&&u&&u.parts.length>0){const{column:h,lines:r}=u.parts[0],c=r[0],o=n.textModel.getLineIndentColumn(u.lineNumber);if(h<=o){let l=(0,k.firstNonWhitespaceIndex)(c);l===-1&&(l=c.length-1),t=l>0;const p=n.textModel.getOptions().tabSize;a=y.CursorColumns.visibleColumnFromColumn(c,l+1,p)<p}}this.inlineCompletionSuggestsIndentation.set(t),this.inlineCompletionSuggestsIndentationLessThanTabSize.set(a)}))}}e.InlineCompletionContextKeys=_,_.inlineSuggestionVisible=new D.RawContextKey(\"inlineSuggestionVisible\",!1,(0,f.localize)(0,null)),_.inlineSuggestionHasIndentation=new D.RawContextKey(\"inlineSuggestionHasIndentation\",!1,(0,f.localize)(1,null)),_.inlineSuggestionHasIndentationLessThanTabSize=new D.RawContextKey(\"inlineSuggestionHasIndentationLessThanTabSize\",!0,(0,f.localize)(2,null)),_.suppressSuggestions=new D.RawContextKey(\"inlineSuggestionSuppressSuggestions\",void 0,(0,f.localize)(3,null))}),define(ne[236],se([1,0,19,9,20,22,12,29,18,69,27,15]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.provideSignatureHelp=e.Context=void 0,e.Context={Visible:new s.RawContextKey(\"parameterHintsVisible\",!1),MultipleSignatures:new s.RawContextKey(\"parameterHintsMultipleSignatures\",!1)};function i(n,t,a,u,h){return we(this,void 0,void 0,function*(){const r=n.ordered(t);for(const c of r)try{const o=yield c.provideSignatureHelp(t,a,h,u);if(o)return o}catch(o){(0,k.onUnexpectedExternalError)(o)}})}e.provideSignatureHelp=i,C.CommandsRegistry.registerCommand(\"_executeSignatureHelpProvider\",(n,...t)=>we(void 0,void 0,void 0,function*(){const[a,u,h]=t;(0,y.assertType)(D.URI.isUri(a)),(0,y.assertType)(S.Position.isIPosition(u)),(0,y.assertType)(typeof h==\"string\"||!h);const r=n.get(_.ILanguageFeaturesService),c=yield n.get(g.ITextModelService).createModelReference(a);try{const o=yield i(r.signatureHelpProvider,c.object.textEditorModel,S.Position.lift(u),{triggerKind:f.SignatureHelpTriggerKind.Invoke,isRetrigger:!1,triggerCharacter:h},L.CancellationToken.None);return o?(setTimeout(()=>o.dispose(),0),o.value):void 0}finally{c.dispose()}}))}),define(ne[753],se([1,0,13,9,6,2,121,29,236]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ParameterHintsModel=void 0;var g;(function(i){i.Default={type:0};class n{constructor(u,h){this.request=u,this.previouslyActiveHints=h,this.type=2}}i.Pending=n;class t{constructor(u){this.hints=u,this.type=1}}i.Active=t})(g||(g={}));class C extends D.Disposable{constructor(n,t,a=C.DEFAULT_DELAY){super(),this._onChangedHints=this._register(new y.Emitter),this.onChangedHints=this._onChangedHints.event,this.triggerOnType=!1,this._state=g.Default,this._pendingTriggers=[],this._lastSignatureHelpResult=this._register(new D.MutableDisposable),this.triggerChars=new S.CharacterSet,this.retriggerChars=new S.CharacterSet,this.triggerId=0,this.editor=n,this.providers=t,this.throttledDelayer=new L.Delayer(a),this._register(this.editor.onDidBlurEditorWidget(()=>this.cancel())),this._register(this.editor.onDidChangeConfiguration(()=>this.onEditorConfigurationChange())),this._register(this.editor.onDidChangeModel(u=>this.onModelChanged())),this._register(this.editor.onDidChangeModelLanguage(u=>this.onModelChanged())),this._register(this.editor.onDidChangeCursorSelection(u=>this.onCursorChange(u))),this._register(this.editor.onDidChangeModelContent(u=>this.onModelContentChange())),this._register(this.providers.onDidChange(this.onModelChanged,this)),this._register(this.editor.onDidType(u=>this.onDidType(u))),this.onEditorConfigurationChange(),this.onModelChanged()}get state(){return this._state}set state(n){this._state.type===2&&this._state.request.cancel(),this._state=n}cancel(n=!1){this.state=g.Default,this.throttledDelayer.cancel(),n||this._onChangedHints.fire(void 0)}trigger(n,t){const a=this.editor.getModel();if(!a||!this.providers.has(a))return;const u=++this.triggerId;this._pendingTriggers.push(n),this.throttledDelayer.trigger(()=>this.doTrigger(u),t).catch(k.onUnexpectedError)}next(){if(this.state.type!==1)return;const n=this.state.hints.signatures.length,t=this.state.hints.activeSignature,a=t%n===n-1,u=this.editor.getOption(84).cycle;if((n<2||a)&&!u){this.cancel();return}this.updateActiveSignature(a&&u?0:t+1)}previous(){if(this.state.type!==1)return;const n=this.state.hints.signatures.length,t=this.state.hints.activeSignature,a=t===0,u=this.editor.getOption(84).cycle;if((n<2||a)&&!u){this.cancel();return}this.updateActiveSignature(a&&u?n-1:t-1)}updateActiveSignature(n){this.state.type===1&&(this.state=new g.Active(Object.assign(Object.assign({},this.state.hints),{activeSignature:n})),this._onChangedHints.fire(this.state.hints))}doTrigger(n){return we(this,void 0,void 0,function*(){const t=this.state.type===1||this.state.type===2,a=this.getLastActiveHints();if(this.cancel(!0),this._pendingTriggers.length===0)return!1;const u=this._pendingTriggers.reduce(s);this._pendingTriggers=[];const h={triggerKind:u.triggerKind,triggerCharacter:u.triggerCharacter,isRetrigger:t,activeSignatureHelp:a};if(!this.editor.hasModel())return!1;const r=this.editor.getModel(),c=this.editor.getPosition();this.state=new g.Pending((0,L.createCancelablePromise)(o=>(0,_.provideSignatureHelp)(this.providers,r,c,h,o)),a);try{const o=yield this.state.request;return n!==this.triggerId?(o?.dispose(),!1):!o||!o.value.signatures||o.value.signatures.length===0?(o?.dispose(),this._lastSignatureHelpResult.clear(),this.cancel(),!1):(this.state=new g.Active(o.value),this._lastSignatureHelpResult.value=o,this._onChangedHints.fire(this.state.hints),!0)}catch(o){return n===this.triggerId&&(this.state=g.Default),(0,k.onUnexpectedError)(o),!1}})}getLastActiveHints(){switch(this.state.type){case 1:return this.state.hints;case 2:return this.state.previouslyActiveHints;default:return}}get isTriggered(){return this.state.type===1||this.state.type===2||this.throttledDelayer.isTriggered()}onModelChanged(){this.cancel(),this.triggerChars.clear(),this.retriggerChars.clear();const n=this.editor.getModel();if(n)for(const t of this.providers.ordered(n)){for(const a of t.signatureHelpTriggerCharacters||[])if(a.length){const u=a.charCodeAt(0);this.triggerChars.add(u),this.retriggerChars.add(u)}for(const a of t.signatureHelpRetriggerCharacters||[])a.length&&this.retriggerChars.add(a.charCodeAt(0))}}onDidType(n){if(!this.triggerOnType)return;const t=n.length-1,a=n.charCodeAt(t);(this.triggerChars.has(a)||this.isTriggered&&this.retriggerChars.has(a))&&this.trigger({triggerKind:f.SignatureHelpTriggerKind.TriggerCharacter,triggerCharacter:n.charAt(t)})}onCursorChange(n){n.source===\"mouse\"?this.cancel():this.isTriggered&&this.trigger({triggerKind:f.SignatureHelpTriggerKind.ContentChange})}onModelContentChange(){this.isTriggered&&this.trigger({triggerKind:f.SignatureHelpTriggerKind.ContentChange})}onEditorConfigurationChange(){this.triggerOnType=this.editor.getOption(84).enabled,this.triggerOnType||this.cancel()}dispose(){this.cancel(!0),super.dispose()}}e.ParameterHintsModel=C,C.DEFAULT_DELAY=120;function s(i,n){switch(n.triggerKind){case f.SignatureHelpTriggerKind.Invoke:return n;case f.SignatureHelpTriggerKind.ContentChange:return i;case f.SignatureHelpTriggerKind.TriggerCharacter:default:return n}}}),define(ne[754],se([1,0,15]),function(Q,e,L){\"use strict\";var k;Object.defineProperty(e,\"__esModule\",{value:!0}),e.SuggestAlternatives=void 0;let y=k=class{constructor(S,f){this._editor=S,this._index=0,this._ckOtherSuggestions=k.OtherSuggestions.bindTo(f)}dispose(){this.reset()}reset(){var S;this._ckOtherSuggestions.reset(),(S=this._listener)===null||S===void 0||S.dispose(),this._model=void 0,this._acceptNext=void 0,this._ignore=!1}set({model:S,index:f},_){if(S.items.length===0){this.reset();return}if(k._moveIndex(!0,S,f)===f){this.reset();return}this._acceptNext=_,this._model=S,this._index=f,this._listener=this._editor.onDidChangeCursorPosition(()=>{this._ignore||this.reset()}),this._ckOtherSuggestions.set(!0)}static _moveIndex(S,f,_){let g=_;for(let C=f.items.length;C>0&&(g=(g+f.items.length+(S?1:-1))%f.items.length,!(g===_||!f.items[g].completion.additionalTextEdits));C--);return g}next(){this._move(!0)}prev(){this._move(!1)}_move(S){if(this._model)try{this._ignore=!0,this._index=k._moveIndex(S,this._model,this._index),this._acceptNext({index:this._index,item:this._model.items[this._index],model:this._model})}finally{this._ignore=!1}}};e.SuggestAlternatives=y,y.OtherSuggestions=new L.RawContextKey(\"hasOtherSuggestions\",!1),e.SuggestAlternatives=y=k=ke([fe(1,L.IContextKeyService)],y)}),define(ne[755],se([1,0,15]),function(Q,e,L){\"use strict\";var k;Object.defineProperty(e,\"__esModule\",{value:!0}),e.WordContextKey=void 0;let y=k=class{constructor(S,f){this._editor=S,this._enabled=!1,this._ckAtEnd=k.AtEnd.bindTo(f),this._configListener=this._editor.onDidChangeConfiguration(_=>_.hasChanged(121)&&this._update()),this._update()}dispose(){var S;this._configListener.dispose(),(S=this._selectionListener)===null||S===void 0||S.dispose(),this._ckAtEnd.reset()}_update(){const S=this._editor.getOption(121)===\"on\";if(this._enabled!==S)if(this._enabled=S,this._enabled){const f=()=>{if(!this._editor.hasModel()){this._ckAtEnd.set(!1);return}const _=this._editor.getModel(),g=this._editor.getSelection(),C=_.getWordAtPosition(g.getStartPosition());if(!C){this._ckAtEnd.set(!1);return}this._ckAtEnd.set(C.endColumn===g.getStartPosition().column)};this._selectionListener=this._editor.onDidChangeCursorSelection(f),f()}else this._selectionListener&&(this._ckAtEnd.reset(),this._selectionListener.dispose(),this._selectionListener=void 0)}};e.WordContextKey=y,y.AtEnd=new L.RawContextKey(\"atEndOfWord\",!1),e.WordContextKey=y=k=ke([fe(1,L.IContextKeyService)],y)}),define(ne[84],se([1,0,15,8]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CONTEXT_ACCESSIBILITY_MODE_ENABLED=e.IAccessibilityService=void 0,e.IAccessibilityService=(0,k.createDecorator)(\"accessibilityService\"),e.CONTEXT_ACCESSIBILITY_MODE_ENABLED=new L.RawContextKey(\"accessibilityModeEnabled\",!1)}),define(ne[756],se([1,0,52,14,6,2,47,17,200,324,476,201,36,145,231,84]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ComputedEditorOptions=e.EditorConfiguration=void 0;let u=class extends D.Disposable{constructor(m,v,b,w){super(),this._accessibilityService=w,this._onDidChange=this._register(new y.Emitter),this.onDidChange=this._onDidChange.event,this._onDidChangeFast=this._register(new y.Emitter),this.onDidChangeFast=this._onDidChangeFast.event,this._isDominatedByLongLines=!1,this._viewLineCount=1,this._lineNumbersDigitCount=1,this._reservedHeight=0,this._glyphMarginDecorationLaneCount=1,this._computeOptionsMemory=new i.ComputeOptionsMemory,this.isSimpleWidget=m,this._containerObserver=this._register(new _.ElementSizeObserver(b,v.dimension)),this._rawOptions=l(v),this._validatedOptions=d.validateOptions(this._rawOptions),this.options=this._computeOptions(),this.options.get(12)&&this._containerObserver.startObserving(),this._register(n.EditorZoom.onDidChangeZoomLevel(()=>this._recomputeOptions())),this._register(s.TabFocus.onDidChangeTabFocus(()=>this._recomputeOptions())),this._register(this._containerObserver.onDidChange(()=>this._recomputeOptions())),this._register(g.FontMeasurements.onDidChange(()=>this._recomputeOptions())),this._register(L.PixelRatio.onDidChange(()=>this._recomputeOptions())),this._register(this._accessibilityService.onDidChangeScreenReaderOptimized(()=>this._recomputeOptions()))}_recomputeOptions(){const m=this._computeOptions(),v=d.checkEquals(this.options,m);v!==null&&(this.options=m,this._onDidChangeFast.fire(v),this._onDidChange.fire(v))}_computeOptions(){const m=this._readEnvConfiguration(),v=t.BareFontInfo.createFromValidatedSettings(this._validatedOptions,m.pixelRatio,this.isSimpleWidget),b=this._readFontInfo(v),w={memory:this._computeOptionsMemory,outerWidth:m.outerWidth,outerHeight:m.outerHeight-this._reservedHeight,fontInfo:b,extraEditorClassName:m.extraEditorClassName,isDominatedByLongLines:this._isDominatedByLongLines,viewLineCount:this._viewLineCount,lineNumbersDigitCount:this._lineNumbersDigitCount,emptySelectionClipboard:m.emptySelectionClipboard,pixelRatio:m.pixelRatio,tabFocusMode:s.TabFocus.getTabFocusMode(\"editorFocus\"),accessibilitySupport:m.accessibilitySupport,glyphMarginDecorationLaneCount:this._glyphMarginDecorationLaneCount};return d.computeOptions(this._validatedOptions,w)}_readEnvConfiguration(){return{extraEditorClassName:r(),outerWidth:this._containerObserver.getWidth(),outerHeight:this._containerObserver.getHeight(),emptySelectionClipboard:L.isWebKit||L.isFirefox,pixelRatio:L.PixelRatio.value,accessibilitySupport:this._accessibilityService.isScreenReaderOptimized()?2:this._accessibilityService.getAccessibilitySupport()}}_readFontInfo(m){return g.FontMeasurements.readFontInfo(m)}getRawOptions(){return this._rawOptions}updateOptions(m){const v=l(m);d.applyUpdate(this._rawOptions,v)&&(this._validatedOptions=d.validateOptions(this._rawOptions),this._recomputeOptions())}observeContainer(m){this._containerObserver.observe(m)}setIsDominatedByLongLines(m){this._isDominatedByLongLines!==m&&(this._isDominatedByLongLines=m,this._recomputeOptions())}setModelLineCount(m){const v=h(m);this._lineNumbersDigitCount!==v&&(this._lineNumbersDigitCount=v,this._recomputeOptions())}setViewLineCount(m){this._viewLineCount!==m&&(this._viewLineCount=m,this._recomputeOptions())}setReservedHeight(m){this._reservedHeight!==m&&(this._reservedHeight=m,this._recomputeOptions())}setGlyphMarginDecorationLaneCount(m){this._glyphMarginDecorationLaneCount!==m&&(this._glyphMarginDecorationLaneCount=m,this._recomputeOptions())}};e.EditorConfiguration=u,e.EditorConfiguration=u=ke([fe(3,a.IAccessibilityService)],u);function h(p){let m=0;for(;p;)p=Math.floor(p/10),m++;return m||1}function r(){let p=\"\";return!L.isSafari&&!L.isWebkitWebView&&(p+=\"no-user-select \"),L.isSafari&&(p+=\"no-minimap-shadow \",p+=\"enable-user-select \"),f.isMacintosh&&(p+=\"mac \"),p}class c{constructor(){this._values=[]}_read(m){return this._values[m]}get(m){return this._values[m]}_write(m,v){this._values[m]=v}}class o{constructor(){this._values=[]}_read(m){if(m>=this._values.length)throw new Error(\"Cannot read uninitialized value\");return this._values[m]}get(m){return this._read(m)}_write(m,v){this._values[m]=v}}e.ComputedEditorOptions=o;class d{static validateOptions(m){const v=new c;for(const b of i.editorOptionsRegistry){const w=b.name===\"_never_\"?void 0:m[b.name];v._write(b.id,b.validate(w))}return v}static computeOptions(m,v){const b=new o;for(const w of i.editorOptionsRegistry)b._write(w.id,w.compute(v,b,m._read(w.id)));return b}static _deepEquals(m,v){if(typeof m!=\"object\"||typeof v!=\"object\"||!m||!v)return m===v;if(Array.isArray(m)||Array.isArray(v))return Array.isArray(m)&&Array.isArray(v)?k.equals(m,v):!1;if(Object.keys(m).length!==Object.keys(v).length)return!1;for(const b in m)if(!d._deepEquals(m[b],v[b]))return!1;return!0}static checkEquals(m,v){const b=[];let w=!1;for(const E of i.editorOptionsRegistry){const I=!d._deepEquals(m._read(E.id),v._read(E.id));b[E.id]=I,I&&(w=!0)}return w?new i.ConfigurationChangedEvent(b):null}static applyUpdate(m,v){let b=!1;for(const w of i.editorOptionsRegistry)if(v.hasOwnProperty(w.name)){const E=w.applyUpdate(m[w.name],v[w.name]);m[w.name]=E.newValue,b=b||E.didChange}return b}}function l(p){const m=S.deepClone(p);return(0,C.migrateOptions)(m),m}}),define(ne[237],se([1,0,85,6,2,47,5,116,33,84]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DiffNavigator=void 0;const C={followsCaret:!0,ignoreCharChanges:!0,alwaysRevealFirst:!0,findResultLoop:!0};let s=class extends y.Disposable{constructor(n,t={},a,u,h){super(),this._audioCueService=a,this._codeEditorService=u,this._accessibilityService=h,this._onDidUpdate=this._register(new k.Emitter),this._editor=n,this._options=D.mixin(t,C,!1),this.disposed=!1,this.nextIdx=-1,this.ranges=[],this.ignoreSelectionChange=!1,this.revealFirst=!!this._options.alwaysRevealFirst,this._register(this._editor.onDidUpdateDiff(()=>this._onDiffUpdated())),this._options.followsCaret&&this._register(this._editor.getModifiedEditor().onDidChangeCursorPosition(r=>{this.ignoreSelectionChange||(this._updateAccessibilityState(r.position.lineNumber),this.nextIdx=-1)})),this._init()}_init(){this._editor.getLineChanges()}_onDiffUpdated(){this._init(),this._compute(this._editor.getLineChanges()),this.revealFirst&&this._editor.getLineChanges()!==null&&(this.revealFirst=!1,this.nextIdx=-1,this.next(1))}_compute(n){this.ranges=[],n&&n.forEach(t=>{!this._options.ignoreCharChanges&&t.charChanges?t.charChanges.forEach(a=>{this.ranges.push({rhs:!0,range:new S.Range(a.modifiedStartLineNumber,a.modifiedStartColumn,a.modifiedEndLineNumber,a.modifiedEndColumn)})}):t.modifiedEndLineNumber===0?this.ranges.push({rhs:!0,range:new S.Range(t.modifiedStartLineNumber,1,t.modifiedStartLineNumber+1,1)}):this.ranges.push({rhs:!0,range:new S.Range(t.modifiedStartLineNumber,1,t.modifiedEndLineNumber+1,1)})}),this.ranges.sort((t,a)=>S.Range.compareRangesUsingStarts(t.range,a.range)),this._onDidUpdate.fire(this)}_initIdx(n){let t=!1;const a=this._editor.getPosition();if(!a){this.nextIdx=0;return}for(let u=0,h=this.ranges.length;u<h&&!t;u++){const r=this.ranges[u].range;a.isBeforeOrEqual(r.getStartPosition())&&(this.nextIdx=u+(n?0:-1),t=!0)}t||(this.nextIdx=n?0:this.ranges.length-1),this.nextIdx<0&&(this.nextIdx=this.ranges.length-1)}_move(n,t){if(L.ok(!this.disposed,\"Illegal State - diff navigator has been disposed\"),!this.canNavigate())return;this.nextIdx===-1?this._initIdx(n):n?(this.nextIdx+=1,this.nextIdx>=this.ranges.length&&(this.nextIdx=0)):(this.nextIdx-=1,this.nextIdx<0&&(this.nextIdx=this.ranges.length-1));const a=this.ranges[this.nextIdx];this.ignoreSelectionChange=!0;try{const u=a.range.getStartPosition();this._editor.setPosition(u),this._editor.revealRangeInCenter(a.range,t),this._updateAccessibilityState(u.lineNumber,!0)}finally{this.ignoreSelectionChange=!1}}_updateAccessibilityState(n,t){var a;const u=(a=this._editor.getModel())===null||a===void 0?void 0:a.modified;if(!u)return;const h=u.getLineDecorations(n).find(c=>c.options.className===\"line-insert\");if(h)this._audioCueService.playAudioCue(f.AudioCue.diffLineModified,{allowManyInParallel:!0});else if(t)this._audioCueService.playAudioCue(f.AudioCue.diffLineDeleted,{allowManyInParallel:!0});else return;const r=this._codeEditorService.getActiveCodeEditor();t&&r&&h&&this._accessibilityService.isScreenReaderOptimized()&&(r.setSelection({startLineNumber:n,startColumn:0,endLineNumber:n,endColumn:Number.MAX_VALUE}),r.writeScreenReaderContent(\"diff-navigation\"))}canNavigate(){return this.ranges&&this.ranges.length>0}next(n=0){this.canNavigateNext()&&this._move(!0,n)}previous(n=0){this.canNavigatePrevious()&&this._move(!1,n)}canNavigateNext(){return this.canNavigateLoop()||this.nextIdx<this.ranges.length-1}canNavigatePrevious(){return this.canNavigateLoop()||this.nextIdx!==0}canNavigateLoop(){return!!this._options.findResultLoop}dispose(){super.dispose(),this.ranges=[],this.disposed=!0}};e.DiffNavigator=s,e.DiffNavigator=s=ke([fe(2,f.IAudioCueService),fe(3,_.ICodeEditorService),fe(4,g.IAccessibilityService)],s)}),define(ne[757],se([1,0,6,46,2,47,198,22,722,27,28,15]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.setContext=e.ContextKeyService=e.AbstractContextKeyService=e.Context=void 0;const i=\"data-keybinding-context\";class n{constructor(E,I){this._id=E,this._parent=I,this._value=Object.create(null),this._value._contextId=E}get value(){return Object.assign({},this._value)}setValue(E,I){return this._value[E]!==I?(this._value[E]=I,!0):!1}removeValue(E){return E in this._value?(delete this._value[E],!0):!1}getValue(E){const I=this._value[E];return typeof I>\"u\"&&this._parent?this._parent.getValue(E):I}}e.Context=n;class t extends n{constructor(){super(-1,null)}setValue(E,I){return!1}removeValue(E){return!1}getValue(E){}}t.INSTANCE=new t;class a extends n{constructor(E,I,M){super(E,null),this._configurationService=I,this._values=S.TernarySearchTree.forConfigKeys(),this._listener=this._configurationService.onDidChangeConfiguration(P=>{if(P.source===7){const x=Array.from(this._values,([T])=>T);this._values.clear(),M.fire(new r(x))}else{const x=[];for(const T of P.affectedKeys){const A=`config.${T}`,N=this._values.findSuperstr(A);N!==void 0&&(x.push(...k.Iterable.map(N,([F])=>F)),this._values.deleteSuperstr(A)),this._values.has(A)&&(x.push(A),this._values.delete(A))}M.fire(new r(x))}})}dispose(){this._listener.dispose()}getValue(E){if(E.indexOf(a._keyPrefix)!==0)return super.getValue(E);if(this._values.has(E))return this._values.get(E);const I=E.substr(a._keyPrefix.length),M=this._configurationService.getValue(I);let P;switch(typeof M){case\"number\":case\"boolean\":case\"string\":P=M;break;default:Array.isArray(M)?P=JSON.stringify(M):P=M}return this._values.set(E,P),P}setValue(E,I){return super.setValue(E,I)}removeValue(E){return super.removeValue(E)}}a._keyPrefix=\"config.\";class u{constructor(E,I,M){this._service=E,this._key=I,this._defaultValue=M,this.reset()}set(E){this._service.setContext(this._key,E)}reset(){typeof this._defaultValue>\"u\"?this._service.removeContext(this._key):this._service.setContext(this._key,this._defaultValue)}get(){return this._service.getContextKeyValue(this._key)}}class h{constructor(E){this.key=E}affectsSome(E){return E.has(this.key)}allKeysContainedIn(E){return this.affectsSome(E)}}class r{constructor(E){this.keys=E}affectsSome(E){for(const I of this.keys)if(E.has(I))return!0;return!1}allKeysContainedIn(E){return this.keys.every(I=>E.has(I))}}class c{constructor(E){this.events=E}affectsSome(E){for(const I of this.events)if(I.affectsSome(E))return!0;return!1}allKeysContainedIn(E){return this.events.every(I=>I.allKeysContainedIn(E))}}function o(w,E){return w.allKeysContainedIn(new Set(Object.keys(E)))}class d{constructor(E){this._onDidChangeContext=new L.PauseableEmitter({merge:I=>new c(I)}),this.onDidChangeContext=this._onDidChangeContext.event,this._isDisposed=!1,this._myContextId=E}createKey(E,I){if(this._isDisposed)throw new Error(\"AbstractContextKeyService has been disposed\");return new u(this,E,I)}bufferChangeEvents(E){this._onDidChangeContext.pause();try{E()}finally{this._onDidChangeContext.resume()}}createScoped(E){if(this._isDisposed)throw new Error(\"AbstractContextKeyService has been disposed\");return new p(this,E)}contextMatchesRules(E){if(this._isDisposed)throw new Error(\"AbstractContextKeyService has been disposed\");const I=this.getContextValuesContainer(this._myContextId);return E?E.evaluate(I):!0}getContextKeyValue(E){if(!this._isDisposed)return this.getContextValuesContainer(this._myContextId).getValue(E)}setContext(E,I){if(this._isDisposed)return;const M=this.getContextValuesContainer(this._myContextId);M&&M.setValue(E,I)&&this._onDidChangeContext.fire(new h(E))}removeContext(E){this._isDisposed||this.getContextValuesContainer(this._myContextId).removeValue(E)&&this._onDidChangeContext.fire(new h(E))}getContext(E){return this._isDisposed?t.INSTANCE:this.getContextValuesContainer(m(E))}}e.AbstractContextKeyService=d;let l=class extends d{constructor(E){super(0),this._contexts=new Map,this._toDispose=new y.DisposableStore,this._lastContextId=0;const I=new a(this._myContextId,E,this._onDidChangeContext);this._contexts.set(this._myContextId,I),this._toDispose.add(I)}dispose(){this._onDidChangeContext.dispose(),this._isDisposed=!0,this._toDispose.dispose()}getContextValuesContainer(E){return this._isDisposed?t.INSTANCE:this._contexts.get(E)||t.INSTANCE}createChildContext(E=this._myContextId){if(this._isDisposed)throw new Error(\"ContextKeyService has been disposed\");const I=++this._lastContextId;return this._contexts.set(I,new n(I,this.getContextValuesContainer(E))),I}disposeContext(E){this._isDisposed||this._contexts.delete(E)}};e.ContextKeyService=l,e.ContextKeyService=l=ke([fe(0,C.IConfigurationService)],l);class p extends d{constructor(E,I){if(super(E.createChildContext()),this._parentChangeListener=new y.MutableDisposable,this._parent=E,this._updateParentChangeListener(),this._domNode=I,this._domNode.hasAttribute(i)){let M=\"\";this._domNode.classList&&(M=Array.from(this._domNode.classList.values()).join(\", \")),console.error(`Element already has context attribute${M?\": \"+M:\"\"}`)}this._domNode.setAttribute(i,String(this._myContextId))}_updateParentChangeListener(){this._parentChangeListener.value=this._parent.onDidChangeContext(E=>{const M=this._parent.getContextValuesContainer(this._myContextId).value;o(E,M)||this._onDidChangeContext.fire(E)})}dispose(){this._isDisposed||(this._onDidChangeContext.dispose(),this._parent.disposeContext(this._myContextId),this._parentChangeListener.dispose(),this._domNode.removeAttribute(i),this._isDisposed=!0)}getContextValuesContainer(E){return this._isDisposed?t.INSTANCE:this._parent.getContextValuesContainer(E)}createChildContext(E=this._myContextId){if(this._isDisposed)throw new Error(\"ScopedContextKeyService has been disposed\");return this._parent.createChildContext(E)}disposeContext(E){this._isDisposed||this._parent.disposeContext(E)}}function m(w){for(;w;){if(w.hasAttribute(i)){const E=w.getAttribute(i);return E?parseInt(E,10):NaN}w=w.parentElement}return 0}function v(w,E,I){w.get(s.IContextKeyService).createKey(String(E),b(I))}e.setContext=v;function b(w){return(0,D.cloneAndChange)(w,E=>{if(typeof E==\"object\"&&E.$mid===1)return f.URI.revive(E).toString();if(E instanceof f.URI)return E.toString()})}g.CommandsRegistry.registerCommand(\"_setContext\",v),g.CommandsRegistry.registerCommand({id:\"getContextKeyInfo\",handler(){return[...s.RawContextKey.all()].sort((w,E)=>w.key.localeCompare(E.key))},description:{description:(0,_.localize)(0,null),args:[]}}),g.CommandsRegistry.registerCommand(\"_generateContextKeyInfo\",function(){const w=[],E=new Set;for(const I of s.RawContextKey.all())E.has(I.key)||(E.add(I.key),w.push(I));w.sort((I,M)=>I.key.localeCompare(M.key)),console.log(JSON.stringify(w,void 0,2))})}),define(ne[238],se([1,0,17,724,15]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InputFocusedContext=e.InputFocusedContextKey=e.ProductQualityContext=e.IsDevelopmentContext=e.IsMobileContext=e.IsIOSContext=e.IsMacNativeContext=e.IsWebContext=e.IsWindowsContext=e.IsLinuxContext=e.IsMacContext=void 0,e.IsMacContext=new y.RawContextKey(\"isMac\",L.isMacintosh,(0,k.localize)(0,null)),e.IsLinuxContext=new y.RawContextKey(\"isLinux\",L.isLinux,(0,k.localize)(1,null)),e.IsWindowsContext=new y.RawContextKey(\"isWindows\",L.isWindows,(0,k.localize)(2,null)),e.IsWebContext=new y.RawContextKey(\"isWeb\",L.isWeb,(0,k.localize)(3,null)),e.IsMacNativeContext=new y.RawContextKey(\"isMacNative\",L.isMacintosh&&!L.isWeb,(0,k.localize)(4,null)),e.IsIOSContext=new y.RawContextKey(\"isIOS\",L.isIOS,(0,k.localize)(5,null)),e.IsMobileContext=new y.RawContextKey(\"isMobile\",L.isMobile,(0,k.localize)(6,null)),e.IsDevelopmentContext=new y.RawContextKey(\"isDevelopment\",!1,!0),e.ProductQualityContext=new y.RawContextKey(\"productQualityType\",\"\",(0,k.localize)(7,null)),e.InputFocusedContextKey=\"inputFocus\",e.InputFocusedContext=new y.RawContextKey(e.InputFocusedContextKey,!1,(0,k.localize)(8,null))}),define(ne[57],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IContextMenuService=e.IContextViewService=void 0,e.IContextViewService=(0,L.createDecorator)(\"contextViewService\"),e.IContextMenuService=(0,L.createDecorator)(\"contextMenuService\")}),define(ne[156],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IDialogService=void 0,e.IDialogService=(0,L.createDecorator)(\"dialogService\")}),define(ne[239],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IEnvironmentService=void 0,e.IEnvironmentService=(0,L.createDecorator)(\"environmentService\")}),define(ne[157],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ServiceCollection=void 0;class L{constructor(...y){this._entries=new Map;for(const[D,S]of y)this.set(D,S)}set(y,D){const S=this._entries.get(y);return this._entries.set(y,D),S}get(y){return this._entries.get(y)}}e.ServiceCollection=L}),define(ne[758],se([1,0,13,9,2,232,746,8,157,64]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Trace=e.InstantiationService=void 0;const C=!1;class s extends Error{constructor(a){var u;super(\"cyclic dependency between services\"),this.message=(u=a.findCycleSlow())!==null&&u!==void 0?u:`UNABLE to detect cycle, dumping graph: \n${a.toString()}`}}class i{constructor(a=new _.ServiceCollection,u=!1,h,r=C){var c;this._services=a,this._strict=u,this._parent=h,this._enableTracing=r,this._activeInstantiations=new Set,this._services.set(f.IInstantiationService,this),this._globalGraph=r?(c=h?._globalGraph)!==null&&c!==void 0?c:new S.Graph(o=>o):void 0}createChild(a){return new i(a,this._strict,this,this._enableTracing)}invokeFunction(a,...u){const h=n.traceInvocation(this._enableTracing,a);let r=!1;try{return a({get:o=>{if(r)throw(0,k.illegalState)(\"service accessor is only valid during the invocation of its target method\");const d=this._getOrCreateServiceInstance(o,h);if(!d)throw new Error(`[invokeFunction] unknown service '${o}'`);return d}},...u)}finally{r=!0,h.stop()}}createInstance(a,...u){let h,r;return a instanceof D.SyncDescriptor?(h=n.traceCreation(this._enableTracing,a.ctor),r=this._createInstance(a.ctor,a.staticArguments.concat(u),h)):(h=n.traceCreation(this._enableTracing,a),r=this._createInstance(a,u,h)),h.stop(),r}_createInstance(a,u=[],h){const r=f._util.getServiceDependencies(a).sort((d,l)=>d.index-l.index),c=[];for(const d of r){const l=this._getOrCreateServiceInstance(d.id,h);l||this._throwIfStrict(`[createInstance] ${a.name} depends on UNKNOWN service ${d.id}.`,!1),c.push(l)}const o=r.length>0?r[0].index:u.length;if(u.length!==o){console.trace(`[createInstance] First service dependency of ${a.name} at position ${o+1} conflicts with ${u.length} static arguments`);const d=o-u.length;d>0?u=u.concat(new Array(d)):u=u.slice(0,o)}return Reflect.construct(a,u.concat(c))}_setServiceInstance(a,u){if(this._services.get(a)instanceof D.SyncDescriptor)this._services.set(a,u);else if(this._parent)this._parent._setServiceInstance(a,u);else throw new Error(\"illegalState - setting UNKNOWN service instance\")}_getServiceInstanceOrDescriptor(a){const u=this._services.get(a);return!u&&this._parent?this._parent._getServiceInstanceOrDescriptor(a):u}_getOrCreateServiceInstance(a,u){this._globalGraph&&this._globalGraphImplicitDependency&&this._globalGraph.insertEdge(this._globalGraphImplicitDependency,String(a));const h=this._getServiceInstanceOrDescriptor(a);return h instanceof D.SyncDescriptor?this._safeCreateAndCacheServiceInstance(a,h,u.branch(a,!0)):(u.branch(a,!1),h)}_safeCreateAndCacheServiceInstance(a,u,h){if(this._activeInstantiations.has(a))throw new Error(`illegal state - RECURSIVELY instantiating service '${a}'`);this._activeInstantiations.add(a);try{return this._createAndCacheServiceInstance(a,u,h)}finally{this._activeInstantiations.delete(a)}}_createAndCacheServiceInstance(a,u,h){var r;const c=new S.Graph(l=>l.id.toString());let o=0;const d=[{id:a,desc:u,_trace:h}];for(;d.length;){const l=d.pop();if(c.lookupOrInsertNode(l),o++>1e3)throw new s(c);for(const p of f._util.getServiceDependencies(l.desc.ctor)){const m=this._getServiceInstanceOrDescriptor(p.id);if(m||this._throwIfStrict(`[createInstance] ${a} depends on ${p.id} which is NOT registered.`,!0),(r=this._globalGraph)===null||r===void 0||r.insertEdge(String(l.id),String(p.id)),m instanceof D.SyncDescriptor){const v={id:p.id,desc:m,_trace:l._trace.branch(p.id,!0)};c.insertEdge(l,v),d.push(v)}}}for(;;){const l=c.roots();if(l.length===0){if(!c.isEmpty())throw new s(c);break}for(const{data:p}of l){if(this._getServiceInstanceOrDescriptor(p.id)instanceof D.SyncDescriptor){const v=this._createServiceInstanceWithOwner(p.id,p.desc.ctor,p.desc.staticArguments,p.desc.supportsDelayedInstantiation,p._trace);this._setServiceInstance(p.id,v)}c.removeNode(p)}}return this._getServiceInstanceOrDescriptor(a)}_createServiceInstanceWithOwner(a,u,h=[],r,c){if(this._services.get(a)instanceof D.SyncDescriptor)return this._createServiceInstance(a,u,h,r,c);if(this._parent)return this._parent._createServiceInstanceWithOwner(a,u,h,r,c);throw new Error(`illegalState - creating UNKNOWN service instance ${u.name}`)}_createServiceInstance(a,u,h=[],r,c){if(r){const o=new i(void 0,this._strict,this,this._enableTracing);o._globalGraphImplicitDependency=String(a);const d=new Map,l=new L.IdleValue(()=>{const p=o._createInstance(u,h,c);for(const[m,v]of d){const b=p[m];if(typeof b==\"function\")for(const w of v)b.apply(p,w)}return d.clear(),p});return new Proxy(Object.create(null),{get(p,m){if(!l.isInitialized&&typeof m==\"string\"&&(m.startsWith(\"onDid\")||m.startsWith(\"onWill\"))){let w=d.get(m);return w||(w=new g.LinkedList,d.set(m,w)),(I,M,P)=>{const x=w.push([I,M,P]);return(0,y.toDisposable)(x)}}if(m in p)return p[m];const v=l.value;let b=v[m];return typeof b!=\"function\"||(b=b.bind(v),p[m]=b),b},set(p,m,v){return l.value[m]=v,!0},getPrototypeOf(p){return u.prototype}})}else return this._createInstance(u,h,c)}_throwIfStrict(a,u){if(u&&console.warn(a),this._strict)throw new Error(a)}}e.InstantiationService=i;class n{static traceInvocation(a,u){return a?new n(2,u.name||new Error().stack.split(`\n`).slice(3,4).join(`\n`)):n._None}static traceCreation(a,u){return a?new n(1,u.name):n._None}constructor(a,u){this.type=a,this.name=u,this._start=Date.now(),this._dep=[]}branch(a,u){const h=new n(3,a.toString());return this._dep.push([a,u,h]),h}stop(){const a=Date.now()-this._start;n._totals+=a;let u=!1;function h(c,o){const d=[],l=new Array(c+1).join(\"\t\");for(const[p,m,v]of o._dep)if(m&&v){u=!0,d.push(`${l}CREATES -> ${p}`);const b=h(c+1,v);b&&d.push(b)}else d.push(`${l}uses -> ${p}`);return d.join(`\n`)}const r=[`${this.type===1?\"CREATE\":\"CALL\"} ${this.name}`,`${h(1,this)}`,`DONE, took ${a.toFixed(2)}ms (grand total ${n._totals.toFixed(2)}ms)`];(a>2||u)&&n.all.add(r.join(`\n`))}}e.Trace=n,n.all=new Set,n._None=new class extends n{constructor(){super(0,null)}stop(){}branch(){return this}},n._totals=0}),define(ne[759],se([1,0,9,216,119]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BaseResolvedKeybinding=void 0;class D extends y.ResolvedKeybinding{constructor(f,_){if(super(),_.length===0)throw(0,L.illegalArgument)(\"chords\");this._os=f,this._chords=_}getLabel(){return k.UILabelProvider.toLabel(this._os,this._chords,f=>this._getLabel(f))}getAriaLabel(){return k.AriaLabelProvider.toLabel(this._os,this._chords,f=>this._getAriaLabel(f))}getElectronAccelerator(){return this._chords.length>1||this._chords[0].isDuplicateModifierCase()?null:k.ElectronAcceleratorLabelProvider.toLabel(this._os,this._chords,f=>this._getElectronAccelerator(f))}getUserSettingsLabel(){return k.UserSettingsLabelProvider.toLabel(this._os,this._chords,f=>this._getUserSettingsLabel(f))}hasMultipleChords(){return this._chords.length>1}getChords(){return this._chords.map(f=>this._getChord(f))}_getChord(f){return new y.ResolvedChord(f.ctrlKey,f.shiftKey,f.altKey,f.metaKey,this._getLabel(f),this._getAriaLabel(f))}getDispatchChords(){return this._chords.map(f=>this._getChordDispatch(f))}getSingleModifierDispatchChords(){return this._chords.map(f=>this._getSingleModifierChordDispatch(f))}}e.BaseResolvedKeybinding=D}),define(ne[34],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IKeybindingService=void 0,e.IKeybindingService=(0,L.createDecorator)(\"keybindingService\")}),define(ne[335],se([1,0,7,313,39,6,2,132,15,57,8,34,441]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";var i;Object.defineProperty(e,\"__esModule\",{value:!0}),e.PostEditWidgetManager=void 0;let n=i=class extends S.Disposable{constructor(u,h,r,c,o,d,l,p,m,v){super(),this.typeId=u,this.editor=h,this.showCommand=c,this.range=o,this.edits=d,this.onSelectNewEdit=l,this._contextMenuService=p,this._keybindingService=v,this.allowEditorOverflow=!0,this.suppressMouseDown=!0,this.create(),this.visibleContext=r.bindTo(m),this.visibleContext.set(!0),this._register((0,S.toDisposable)(()=>this.visibleContext.reset())),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this),this._register((0,S.toDisposable)(()=>this.editor.removeContentWidget(this))),this._register(this.editor.onDidChangeCursorPosition(b=>{o.containsPosition(b.position)||this.dispose()})),this._register(D.Event.runAndSubscribe(v.onDidUpdateKeybindings,()=>{this._updateButtonTitle()}))}_updateButtonTitle(){var u;const h=(u=this._keybindingService.lookupKeybinding(this.showCommand.id))===null||u===void 0?void 0:u.getLabel();this.button.element.title=this.showCommand.label+(h?` (${h})`:\"\")}create(){this.domNode=L.$(\".post-edit-widget\"),this.button=this._register(new k.Button(this.domNode,{supportIcons:!0})),this.button.label=\"$(insert)\",this._register(L.addDisposableListener(this.domNode,L.EventType.CLICK,()=>this.showSelector()))}getId(){return i.baseId+\".\"+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:this.range.getEndPosition(),preference:[2]}}showSelector(){this._contextMenuService.showContextMenu({getAnchor:()=>{const u=L.getDomNodePagePosition(this.button.element);return{x:u.left+u.width,y:u.top+u.height}},getActions:()=>this.edits.allEdits.map((u,h)=>(0,y.toAction)({id:\"\",label:u.label,checked:h===this.edits.activeEditIndex,run:()=>{if(h!==this.edits.activeEditIndex)return this.onSelectNewEdit(h)}}))})}};n.baseId=\"editor.widget.postEditWidget\",n=i=ke([fe(7,g.IContextMenuService),fe(8,_.IContextKeyService),fe(9,s.IKeybindingService)],n);let t=class extends S.Disposable{constructor(u,h,r,c,o,d){super(),this._id=u,this._editor=h,this._visibleContext=r,this._showCommand=c,this._instantiationService=o,this._bulkEditService=d,this._currentWidget=this._register(new S.MutableDisposable),this._register(D.Event.any(h.onDidChangeModel,h.onDidChangeModelContent)(()=>this.clear()))}applyEditAndShowIfNeeded(u,h,r,c){var o,d;return we(this,void 0,void 0,function*(){const l=this._editor.getModel();if(!l||!u.length)return;const p=h.allEdits[h.activeEditIndex];if(!p)return;let m=[];(typeof p.insertText==\"string\"?p.insertText===\"\":p.insertText.snippet===\"\")?m=[]:m=u.map(P=>new f.ResourceTextEdit(l.uri,typeof p.insertText==\"string\"?{range:P,text:p.insertText,insertAsSnippet:!1}:{range:P,text:p.insertText.snippet,insertAsSnippet:!0}));const b={edits:[...m,...(d=(o=p.additionalEdit)===null||o===void 0?void 0:o.edits)!==null&&d!==void 0?d:[]]},w=u[0],E=l.deltaDecorations([],[{range:w,options:{description:\"paste-line-suffix\",stickiness:0}}]);let I,M;try{I=yield this._bulkEditService.apply(b,{editor:this._editor,token:c}),M=l.getDecorationRange(E[0])}finally{l.deltaDecorations(E,[])}r&&I.isApplied&&h.allEdits.length>1&&this.show(M??w,h,P=>we(this,void 0,void 0,function*(){const x=this._editor.getModel();x&&(yield x.undo(),this.applyEditAndShowIfNeeded(u,{activeEditIndex:P,allEdits:h.allEdits},r,c))}))})}show(u,h,r){this.clear(),this._editor.hasModel()&&(this._currentWidget.value=this._instantiationService.createInstance(n,this._id,this._editor,this._visibleContext,this._showCommand,u,h,r))}clear(){this._currentWidget.clear()}tryShowSelector(){var u;(u=this._currentWidget.value)===null||u===void 0||u.showSelector()}};e.PostEditWidgetManager=t,e.PostEditWidgetManager=t=ke([fe(4,C.IInstantiationService),fe(5,f.IBulkEditService)],t)}),define(ne[336],se([1,0,15]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.KeybindingResolver=e.NoMatchingKb=void 0,e.NoMatchingKb={kind:0};const k={kind:1};function y(_,g,C){return{kind:2,commandId:_,commandArgs:g,isBubble:C}}class D{constructor(g,C,s){var i;this._log=s,this._defaultKeybindings=g,this._defaultBoundCommands=new Map;for(const n of g){const t=n.command;t&&t.charAt(0)!==\"-\"&&this._defaultBoundCommands.set(t,!0)}this._map=new Map,this._lookupMap=new Map,this._keybindings=D.handleRemovals([].concat(g).concat(C));for(let n=0,t=this._keybindings.length;n<t;n++){const a=this._keybindings[n];if(a.chords.length===0)continue;const u=(i=a.when)===null||i===void 0?void 0:i.substituteConstants();u&&u.type===0||this._addKeyPress(a.chords[0],a)}}static _isTargetedForRemoval(g,C,s){if(C){for(let i=0;i<C.length;i++)if(C[i]!==g.chords[i])return!1}return!(s&&s.type!==1&&(!g.when||!(0,L.expressionsAreEqualWithConstantSubstitution)(s,g.when)))}static handleRemovals(g){const C=new Map;for(let i=0,n=g.length;i<n;i++){const t=g[i];if(t.command&&t.command.charAt(0)===\"-\"){const a=t.command.substring(1);C.has(a)?C.get(a).push(t):C.set(a,[t])}}if(C.size===0)return g;const s=[];for(let i=0,n=g.length;i<n;i++){const t=g[i];if(!t.command||t.command.length===0){s.push(t);continue}if(t.command.charAt(0)===\"-\")continue;const a=C.get(t.command);if(!a||!t.isDefault){s.push(t);continue}let u=!1;for(const h of a){const r=h.when;if(this._isTargetedForRemoval(t,h.chords,r)){u=!0;break}}if(!u){s.push(t);continue}}return s}_addKeyPress(g,C){const s=this._map.get(g);if(typeof s>\"u\"){this._map.set(g,[C]),this._addToLookupMap(C);return}for(let i=s.length-1;i>=0;i--){const n=s[i];if(n.command===C.command)continue;let t=!0;for(let a=1;a<n.chords.length&&a<C.chords.length;a++)if(n.chords[a]!==C.chords[a]){t=!1;break}t&&D.whenIsEntirelyIncluded(n.when,C.when)&&this._removeFromLookupMap(n)}s.push(C),this._addToLookupMap(C)}_addToLookupMap(g){if(!g.command)return;let C=this._lookupMap.get(g.command);typeof C>\"u\"?(C=[g],this._lookupMap.set(g.command,C)):C.push(g)}_removeFromLookupMap(g){if(!g.command)return;const C=this._lookupMap.get(g.command);if(!(typeof C>\"u\")){for(let s=0,i=C.length;s<i;s++)if(C[s]===g){C.splice(s,1);return}}}static whenIsEntirelyIncluded(g,C){return!C||C.type===1?!0:!g||g.type===1?!1:(0,L.implies)(g,C)}getKeybindings(){return this._keybindings}lookupPrimaryKeybinding(g,C){const s=this._lookupMap.get(g);if(typeof s>\"u\"||s.length===0)return null;if(s.length===1)return s[0];for(let i=s.length-1;i>=0;i--){const n=s[i];if(C.contextMatchesRules(n.when))return n}return s[s.length-1]}resolve(g,C,s){const i=[...C,s];this._log(`| Resolving ${i}`);const n=this._map.get(i[0]);if(n===void 0)return this._log(\"\\\\ No keybinding entries.\"),e.NoMatchingKb;let t=null;if(i.length<2)t=n;else{t=[];for(let u=0,h=n.length;u<h;u++){const r=n[u];if(i.length>r.chords.length)continue;let c=!0;for(let o=1;o<i.length;o++)if(r.chords[o]!==i[o]){c=!1;break}c&&t.push(r)}}const a=this._findCommand(g,t);return a?i.length<a.chords.length?(this._log(`\\\\ From ${t.length} keybinding entries, awaiting ${a.chords.length-i.length} more chord(s), when: ${S(a.when)}, source: ${f(a)}.`),k):(this._log(`\\\\ From ${t.length} keybinding entries, matched ${a.command}, when: ${S(a.when)}, source: ${f(a)}.`),y(a.command,a.commandArgs,a.bubble)):(this._log(`\\\\ From ${t.length} keybinding entries, no when clauses matched the context.`),e.NoMatchingKb)}_findCommand(g,C){for(let s=C.length-1;s>=0;s--){const i=C[s];if(D._contextMatchesRules(g,i.when))return i}return null}static _contextMatchesRules(g,C){return C?C.evaluate(g):!0}}e.KeybindingResolver=D;function S(_){return _?`${_.serialize()}`:\"no when condition\"}function f(_){return _.extensionId?_.isBuiltinExtension?`built-in extension ${_.extensionId}`:`user extension ${_.extensionId}`:_.isDefault?\"built-in\":\"user\"}}),define(ne[760],se([1,0,13,9,6,263,2,727,336]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractKeybindingService=void 0;const g=/^(cursor|delete|undo|redo|tab|editor\\.action\\.clipboard)/;class C extends S.Disposable{get onDidUpdateKeybindings(){return this._onDidUpdateKeybindings?this._onDidUpdateKeybindings.event:y.Event.None}get inChordMode(){return this._currentChords.length>0}constructor(n,t,a,u,h){super(),this._contextKeyService=n,this._commandService=t,this._telemetryService=a,this._notificationService=u,this._logService=h,this._onDidUpdateKeybindings=this._register(new y.Emitter),this._currentChords=[],this._currentChordChecker=new L.IntervalTimer,this._currentChordStatusMessage=null,this._ignoreSingleModifiers=s.EMPTY,this._currentSingleModifier=null,this._currentSingleModifierClearTimeout=new L.TimeoutTimer,this._logging=!1}dispose(){super.dispose()}_log(n){this._logging&&this._logService.info(`[KeybindingService]: ${n}`)}getKeybindings(){return this._getResolver().getKeybindings()}lookupKeybinding(n,t){const a=this._getResolver().lookupPrimaryKeybinding(n,t||this._contextKeyService);if(a)return a.resolvedKeybinding}dispatchEvent(n,t){return this._dispatch(n,t)}softDispatch(n,t){this._log(\"/ Soft dispatching keyboard event\");const a=this.resolveKeyboardEvent(n);if(a.hasMultipleChords())return console.warn(\"keyboard event should not be mapped to multiple chords\"),_.NoMatchingKb;const[u]=a.getDispatchChords();if(u===null)return this._log(\"\\\\ Keyboard event cannot be dispatched\"),_.NoMatchingKb;const h=this._contextKeyService.getContext(t),r=this._currentChords.map(({keypress:c})=>c);return this._getResolver().resolve(h,r,u)}_scheduleLeaveChordMode(){const n=Date.now();this._currentChordChecker.cancelAndSet(()=>{if(!this._documentHasFocus()){this._leaveChordMode();return}Date.now()-n>5e3&&this._leaveChordMode()},500)}_expectAnotherChord(n,t){switch(this._currentChords.push({keypress:n,label:t}),this._currentChords.length){case 0:throw(0,k.illegalState)(\"impossible\");case 1:this._currentChordStatusMessage=this._notificationService.status(f.localize(0,null,t));break;default:{const a=this._currentChords.map(({label:u})=>u).join(\", \");this._currentChordStatusMessage=this._notificationService.status(f.localize(1,null,a))}}this._scheduleLeaveChordMode(),D.IME.enabled&&D.IME.disable()}_leaveChordMode(){this._currentChordStatusMessage&&(this._currentChordStatusMessage.dispose(),this._currentChordStatusMessage=null),this._currentChordChecker.cancel(),this._currentChords=[],D.IME.enable()}_dispatch(n,t){return this._doDispatch(this.resolveKeyboardEvent(n),t,!1)}_singleModifierDispatch(n,t){const a=this.resolveKeyboardEvent(n),[u]=a.getSingleModifierDispatchChords();if(u)return this._ignoreSingleModifiers.has(u)?(this._log(`+ Ignoring single modifier ${u} due to it being pressed together with other keys.`),this._ignoreSingleModifiers=s.EMPTY,this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1):(this._ignoreSingleModifiers=s.EMPTY,this._currentSingleModifier===null?(this._log(`+ Storing single modifier for possible chord ${u}.`),this._currentSingleModifier=u,this._currentSingleModifierClearTimeout.cancelAndSet(()=>{this._log(\"+ Clearing single modifier due to 300ms elapsed.\"),this._currentSingleModifier=null},300),!1):u===this._currentSingleModifier?(this._log(`/ Dispatching single modifier chord ${u} ${u}`),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,this._doDispatch(a,t,!0)):(this._log(`+ Clearing single modifier due to modifier mismatch: ${this._currentSingleModifier} ${u}`),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1));const[h]=a.getChords();return this._ignoreSingleModifiers=new s(h),this._currentSingleModifier!==null&&this._log(\"+ Clearing single modifier due to other key up.\"),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1}_doDispatch(n,t,a=!1){var u;let h=!1;if(n.hasMultipleChords())return console.warn(\"Unexpected keyboard event mapped to multiple chords\"),!1;let r=null,c=null;if(a){const[p]=n.getSingleModifierDispatchChords();r=p,c=p?[p]:[]}else[r]=n.getDispatchChords(),c=this._currentChords.map(({keypress:p})=>p);if(r===null)return this._log(\"\\\\ Keyboard event cannot be dispatched in keydown phase.\"),h;const o=this._contextKeyService.getContext(t),d=n.getLabel(),l=this._getResolver().resolve(o,c,r);switch(l.kind){case 0:{if(this._logService.trace(\"KeybindingService#dispatch\",d,\"[ No matching keybinding ]\"),this.inChordMode){const p=this._currentChords.map(({label:m})=>m).join(\", \");this._log(`+ Leaving multi-chord mode: Nothing bound to \"${p}, ${d}\".`),this._notificationService.status(f.localize(2,null,p,d),{hideAfter:10*1e3}),this._leaveChordMode(),h=!0}return h}case 1:return this._logService.trace(\"KeybindingService#dispatch\",d,\"[ Several keybindings match - more chords needed ]\"),h=!0,this._expectAnotherChord(r,d),this._log(this._currentChords.length===1?\"+ Entering multi-chord mode...\":\"+ Continuing multi-chord mode...\"),h;case 2:{if(this._logService.trace(\"KeybindingService#dispatch\",d,`[ Will dispatch command ${l.commandId} ]`),l.commandId===null||l.commandId===\"\"){if(this.inChordMode){const p=this._currentChords.map(({label:m})=>m).join(\", \");this._log(`+ Leaving chord mode: Nothing bound to \"${p}, ${d}\".`),this._notificationService.status(f.localize(3,null,p,d),{hideAfter:10*1e3}),this._leaveChordMode(),h=!0}}else this.inChordMode&&this._leaveChordMode(),l.isBubble||(h=!0),this._log(`+ Invoking command ${l.commandId}.`),typeof l.commandArgs>\"u\"?this._commandService.executeCommand(l.commandId).then(void 0,p=>this._notificationService.warn(p)):this._commandService.executeCommand(l.commandId,l.commandArgs).then(void 0,p=>this._notificationService.warn(p)),g.test(l.commandId)||this._telemetryService.publicLog2(\"workbenchActionExecuted\",{id:l.commandId,from:\"keybinding\",detail:(u=n.getUserSettingsLabel())!==null&&u!==void 0?u:void 0});return h}}}mightProducePrintableCharacter(n){return n.ctrlKey||n.metaKey?!1:n.keyCode>=31&&n.keyCode<=56||n.keyCode>=21&&n.keyCode<=30}}e.AbstractKeybindingService=C;class s{constructor(n){this._ctrlKey=n?n.ctrlKey:!1,this._shiftKey=n?n.shiftKey:!1,this._altKey=n?n.altKey:!1,this._metaKey=n?n.metaKey:!1}has(n){switch(n){case\"ctrl\":return this._ctrlKey;case\"shift\":return this._shiftKey;case\"alt\":return this._altKey;case\"meta\":return this._metaKey}}}s.EMPTY=new s(null)}),define(ne[337],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.toEmptyArrayIfContainsNull=e.ResolvedKeybindingItem=void 0;class L{constructor(D,S,f,_,g,C,s){this._resolvedKeybindingItemBrand=void 0,this.resolvedKeybinding=D,this.chords=D?k(D.getDispatchChords()):[],D&&this.chords.length===0&&(this.chords=k(D.getSingleModifierDispatchChords())),this.bubble=S?S.charCodeAt(0)===94:!1,this.command=this.bubble?S.substr(1):S,this.commandArgs=f,this.when=_,this.isDefault=g,this.extensionId=C,this.isBuiltinExtension=s}}e.ResolvedKeybindingItem=L;function k(y){const D=[];for(let S=0,f=y.length;S<f;S++){const _=y[S];if(!_)return[];D.push(_)}return D}e.toEmptyArrayIfContainsNull=k}),define(ne[761],se([1,0,63,119,759,337]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.USLayoutResolvedKeybinding=void 0;class S extends y.BaseResolvedKeybinding{constructor(_,g){super(g,_)}_keyCodeToUILabel(_){if(this._os===2)switch(_){case 15:return\"\\u2190\";case 16:return\"\\u2191\";case 17:return\"\\u2192\";case 18:return\"\\u2193\"}return L.KeyCodeUtils.toString(_)}_getLabel(_){return _.isDuplicateModifierCase()?\"\":this._keyCodeToUILabel(_.keyCode)}_getAriaLabel(_){return _.isDuplicateModifierCase()?\"\":L.KeyCodeUtils.toString(_.keyCode)}_getElectronAccelerator(_){return L.KeyCodeUtils.toElectronAccelerator(_.keyCode)}_getUserSettingsLabel(_){if(_.isDuplicateModifierCase())return\"\";const g=L.KeyCodeUtils.toUserSettingsUS(_.keyCode);return g&&g.toLowerCase()}_getChordDispatch(_){return S.getDispatchStr(_)}static getDispatchStr(_){if(_.isModifierKey())return null;let g=\"\";return _.ctrlKey&&(g+=\"ctrl+\"),_.shiftKey&&(g+=\"shift+\"),_.altKey&&(g+=\"alt+\"),_.metaKey&&(g+=\"meta+\"),g+=L.KeyCodeUtils.toString(_.keyCode),g}_getSingleModifierChordDispatch(_){return _.keyCode===5&&!_.shiftKey&&!_.altKey&&!_.metaKey?\"ctrl\":_.keyCode===4&&!_.ctrlKey&&!_.altKey&&!_.metaKey?\"shift\":_.keyCode===6&&!_.ctrlKey&&!_.shiftKey&&!_.metaKey?\"alt\":_.keyCode===57&&!_.ctrlKey&&!_.shiftKey&&!_.altKey?\"meta\":null}static _scanCodeToKeyCode(_){const g=L.IMMUTABLE_CODE_TO_KEY_CODE[_];if(g!==-1)return g;switch(_){case 10:return 31;case 11:return 32;case 12:return 33;case 13:return 34;case 14:return 35;case 15:return 36;case 16:return 37;case 17:return 38;case 18:return 39;case 19:return 40;case 20:return 41;case 21:return 42;case 22:return 43;case 23:return 44;case 24:return 45;case 25:return 46;case 26:return 47;case 27:return 48;case 28:return 49;case 29:return 50;case 30:return 51;case 31:return 52;case 32:return 53;case 33:return 54;case 34:return 55;case 35:return 56;case 36:return 22;case 37:return 23;case 38:return 24;case 39:return 25;case 40:return 26;case 41:return 27;case 42:return 28;case 43:return 29;case 44:return 30;case 45:return 21;case 51:return 88;case 52:return 86;case 53:return 92;case 54:return 94;case 55:return 93;case 56:return 0;case 57:return 85;case 58:return 95;case 59:return 91;case 60:return 87;case 61:return 89;case 62:return 90;case 106:return 97}return 0}static _toKeyCodeChord(_){if(!_)return null;if(_ instanceof k.KeyCodeChord)return _;const g=this._scanCodeToKeyCode(_.scanCode);return g===0?null:new k.KeyCodeChord(_.ctrlKey,_.shiftKey,_.altKey,_.metaKey,g)}static resolveKeybinding(_,g){const C=(0,D.toEmptyArrayIfContainsNull)(_.chords.map(s=>this._toKeyCodeChord(s)));return C.length>0?[new S(C,g)]:[]}}e.USLayoutResolvedKeybinding=S}),define(ne[158],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ILabelService=void 0,e.ILabelService=(0,L.createDecorator)(\"labelService\")}),define(ne[134],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ILayoutService=void 0,e.ILayoutService=(0,L.createDecorator)(\"layoutService\")}),define(ne[338],se([1,0,7,6,134,33,50]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditorScopedLayoutService=void 0;let f=class{get dimension(){return this._dimension||(this._dimension=L.getClientArea(window.document.body)),this._dimension}get hasContainer(){return!1}get container(){throw new Error(\"ILayoutService.container is not available in the standalone editor!\")}focus(){var C;(C=this._codeEditorService.getFocusedCodeEditor())===null||C===void 0||C.focus()}constructor(C){this._codeEditorService=C,this.onDidLayout=k.Event.None,this.offset={top:0,quickPickTop:0}}};f=ke([fe(0,D.ICodeEditorService)],f);let _=class extends f{get hasContainer(){return!1}get container(){return this._container}constructor(C,s){super(s),this._container=C}};e.EditorScopedLayoutService=_,e.EditorScopedLayoutService=_=ke([fe(1,D.ICodeEditorService)],_),(0,S.registerSingleton)(y.ILayoutService,f,1)}),define(ne[762],se([1,0,7,6,2,84,28,15,134]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AccessibilityService=void 0;let g=class extends y.Disposable{constructor(s,i,n){super(),this._contextKeyService=s,this._layoutService=i,this._configurationService=n,this._accessibilitySupport=0,this._onDidChangeScreenReaderOptimized=new k.Emitter,this._onDidChangeReducedMotion=new k.Emitter,this._accessibilityModeEnabledContext=D.CONTEXT_ACCESSIBILITY_MODE_ENABLED.bindTo(this._contextKeyService);const t=()=>this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());this._register(this._configurationService.onDidChangeConfiguration(u=>{u.affectsConfiguration(\"editor.accessibilitySupport\")&&(t(),this._onDidChangeScreenReaderOptimized.fire()),u.affectsConfiguration(\"workbench.reduceMotion\")&&(this._configMotionReduced=this._configurationService.getValue(\"workbench.reduceMotion\"),this._onDidChangeReducedMotion.fire())})),t(),this._register(this.onDidChangeScreenReaderOptimized(()=>t()));const a=window.matchMedia(\"(prefers-reduced-motion: reduce)\");this._systemMotionReduced=a.matches,this._configMotionReduced=this._configurationService.getValue(\"workbench.reduceMotion\"),this.initReducedMotionListeners(a)}initReducedMotionListeners(s){if(!this._layoutService.hasContainer)return;this._register((0,L.addDisposableListener)(s,\"change\",()=>{this._systemMotionReduced=s.matches,this._configMotionReduced===\"auto\"&&this._onDidChangeReducedMotion.fire()}));const i=()=>{const n=this.isMotionReduced();this._layoutService.container.classList.toggle(\"reduce-motion\",n),this._layoutService.container.classList.toggle(\"enable-motion\",!n)};i(),this._register(this.onDidChangeReducedMotion(()=>i()))}get onDidChangeScreenReaderOptimized(){return this._onDidChangeScreenReaderOptimized.event}isScreenReaderOptimized(){const s=this._configurationService.getValue(\"editor.accessibilitySupport\");return s===\"on\"||s===\"auto\"&&this._accessibilitySupport===2}get onDidChangeReducedMotion(){return this._onDidChangeReducedMotion.event}isMotionReduced(){const s=this._configMotionReduced;return s===\"on\"||s===\"auto\"&&this._systemMotionReduced}getAccessibilitySupport(){return this._accessibilitySupport}};e.AccessibilityService=g,e.AccessibilityService=g=ke([fe(0,f.IContextKeyService),fe(1,_.ILayoutService),fe(2,S.IConfigurationService)],g)}),define(ne[763],se([1,0,306,2,134]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ContextViewService=void 0;let D=class extends k.Disposable{constructor(f){super(),this.layoutService=f,this.currentViewDisposable=k.Disposable.None,this.container=f.hasContainer?f.container:null,this.contextView=this._register(new L.ContextView(this.container,1)),this.layout(),this._register(f.onDidLayout(()=>this.layout()))}setContainer(f,_){this.contextView.setContainer(f,_||1)}showContextView(f,_,g){_?(_!==this.container||this.shadowRoot!==g)&&(this.container=_,this.setContainer(_,g?3:2)):this.layoutService.hasContainer&&this.container!==this.layoutService.container&&(this.container=this.layoutService.container,this.setContainer(this.container,1)),this.shadowRoot=g,this.contextView.show(f);const C=(0,k.toDisposable)(()=>{this.currentViewDisposable===C&&this.hideContextView()});return this.currentViewDisposable=C,C}getContextViewElement(){return this.contextView.getViewElement()}layout(){this.contextView.layout()}hideContextView(f){this.contextView.hide(f)}};e.ContextViewService=D,e.ContextViewService=D=ke([fe(0,y.ILayoutService)],D)}),define(ne[70],se([1,0,6,2,15,8]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CONTEXT_LOG_LEVEL=e.LogLevelToString=e.MultiplexLogger=e.ConsoleLogger=e.AbstractLogger=e.DEFAULT_LOG_LEVEL=e.LogLevel=e.ILogService=void 0,e.ILogService=(0,D.createDecorator)(\"logService\");var S;(function(s){s[s.Off=0]=\"Off\",s[s.Trace=1]=\"Trace\",s[s.Debug=2]=\"Debug\",s[s.Info=3]=\"Info\",s[s.Warning=4]=\"Warning\",s[s.Error=5]=\"Error\"})(S||(e.LogLevel=S={})),e.DEFAULT_LOG_LEVEL=S.Info;class f extends k.Disposable{constructor(){super(...arguments),this.level=e.DEFAULT_LOG_LEVEL,this._onDidChangeLogLevel=this._register(new L.Emitter),this.onDidChangeLogLevel=this._onDidChangeLogLevel.event}setLevel(i){this.level!==i&&(this.level=i,this._onDidChangeLogLevel.fire(this.level))}getLevel(){return this.level}checkLogLevel(i){return this.level!==S.Off&&this.level<=i}}e.AbstractLogger=f;class _ extends f{constructor(i=e.DEFAULT_LOG_LEVEL,n=!0){super(),this.useColors=n,this.setLevel(i)}trace(i,...n){this.checkLogLevel(S.Trace)&&(this.useColors?console.log(\"%cTRACE\",\"color: #888\",i,...n):console.log(i,...n))}debug(i,...n){this.checkLogLevel(S.Debug)&&(this.useColors?console.log(\"%cDEBUG\",\"background: #eee; color: #888\",i,...n):console.log(i,...n))}info(i,...n){this.checkLogLevel(S.Info)&&(this.useColors?console.log(\"%c INFO\",\"color: #33f\",i,...n):console.log(i,...n))}warn(i,...n){this.checkLogLevel(S.Warning)&&(this.useColors?console.log(\"%c WARN\",\"color: #993\",i,...n):console.log(i,...n))}error(i,...n){this.checkLogLevel(S.Error)&&(this.useColors?console.log(\"%c  ERR\",\"color: #f33\",i,...n):console.error(i,...n))}dispose(){}}e.ConsoleLogger=_;class g extends f{constructor(i){super(),this.loggers=i,i.length&&this.setLevel(i[0].getLevel())}setLevel(i){for(const n of this.loggers)n.setLevel(i);super.setLevel(i)}trace(i,...n){for(const t of this.loggers)t.trace(i,...n)}debug(i,...n){for(const t of this.loggers)t.debug(i,...n)}info(i,...n){for(const t of this.loggers)t.info(i,...n)}warn(i,...n){for(const t of this.loggers)t.warn(i,...n)}error(i,...n){for(const t of this.loggers)t.error(i,...n)}dispose(){for(const i of this.loggers)i.dispose()}}e.MultiplexLogger=g;function C(s){switch(s){case S.Trace:return\"trace\";case S.Debug:return\"debug\";case S.Info:return\"info\";case S.Warning:return\"warn\";case S.Error:return\"error\";case S.Off:return\"off\"}}e.LogLevelToString=C,e.CONTEXT_LOG_LEVEL=new y.RawContextKey(\"logLevel\",C(S.Info))}),define(ne[764],se([1,0,52,7,13,2,134,70]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BrowserClipboardService=void 0;let _=class extends D.Disposable{constructor(C,s){super(),this.layoutService=C,this.logService=s,this.mapTextToType=new Map,this.findText=\"\",this.resources=[],(L.isSafari||L.isWebkitWebView)&&this.installWebKitWriteTextWorkaround()}installWebKitWriteTextWorkaround(){const C=()=>{const s=new y.DeferredPromise;this.webKitPendingClipboardWritePromise&&!this.webKitPendingClipboardWritePromise.isSettled&&this.webKitPendingClipboardWritePromise.cancel(),this.webKitPendingClipboardWritePromise=s,navigator.clipboard.write([new ClipboardItem({\"text/plain\":s.p})]).catch(i=>we(this,void 0,void 0,function*(){(!(i instanceof Error)||i.name!==\"NotAllowedError\"||!s.isRejected)&&this.logService.error(i)}))};this.layoutService.hasContainer&&(this._register((0,k.addDisposableListener)(this.layoutService.container,\"click\",C)),this._register((0,k.addDisposableListener)(this.layoutService.container,\"keydown\",C)))}writeText(C,s){return we(this,void 0,void 0,function*(){if(s){this.mapTextToType.set(s,C);return}if(this.webKitPendingClipboardWritePromise)return this.webKitPendingClipboardWritePromise.complete(C);try{return yield navigator.clipboard.writeText(C)}catch(t){console.error(t)}const i=document.activeElement,n=document.body.appendChild((0,k.$)(\"textarea\",{\"aria-hidden\":!0}));n.style.height=\"1px\",n.style.width=\"1px\",n.style.position=\"absolute\",n.value=C,n.focus(),n.select(),document.execCommand(\"copy\"),i instanceof HTMLElement&&i.focus(),document.body.removeChild(n)})}readText(C){return we(this,void 0,void 0,function*(){if(C)return this.mapTextToType.get(C)||\"\";try{return yield navigator.clipboard.readText()}catch(s){return console.error(s),\"\"}})}readFindText(){return we(this,void 0,void 0,function*(){return this.findText})}writeFindText(C){return we(this,void 0,void 0,function*(){this.findText=C})}writeResources(C){return we(this,void 0,void 0,function*(){this.resources=C})}readResources(){return we(this,void 0,void 0,function*(){return this.resources})}};e.BrowserClipboardService=_,e.BrowserClipboardService=_=ke([fe(0,S.ILayoutService),fe(1,f.ILogService)],_)}),define(ne[765],se([1,0,2,70]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LogService=void 0;class y extends L.Disposable{constructor(S,f=[]){super(),this.logger=new k.MultiplexLogger([S,...f]),this._register(S.onDidChangeLogLevel(_=>this.setLevel(_)))}get onDidChangeLogLevel(){return this.logger.onDidChangeLogLevel}setLevel(S){this.logger.setLevel(S)}getLevel(){return this.logger.getLevel()}trace(S,...f){this.logger.trace(S,...f)}debug(S,...f){this.logger.debug(S,...f)}info(S,...f){this.logger.info(S,...f)}warn(S,...f){this.logger.warn(S,...f)}error(S,...f){this.logger.error(S,...f)}}e.LogService=y}),define(ne[97],se([1,0,101,729,8]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IMarkerService=e.IMarkerData=e.MarkerSeverity=void 0;var D;(function(f){f[f.Hint=1]=\"Hint\",f[f.Info=2]=\"Info\",f[f.Warning=4]=\"Warning\",f[f.Error=8]=\"Error\"})(D||(e.MarkerSeverity=D={})),function(f){function _(n,t){return t-n}f.compare=_;const g=Object.create(null);g[f.Error]=(0,k.localize)(0,null),g[f.Warning]=(0,k.localize)(1,null),g[f.Info]=(0,k.localize)(2,null);function C(n){return g[n]||\"\"}f.toString=C;function s(n){switch(n){case L.default.Error:return f.Error;case L.default.Warning:return f.Warning;case L.default.Info:return f.Info;case L.default.Ignore:return f.Hint}}f.fromSeverity=s;function i(n){switch(n){case f.Error:return L.default.Error;case f.Warning:return L.default.Warning;case f.Info:return L.default.Info;case f.Hint:return L.default.Ignore}}f.toSeverity=i}(D||(e.MarkerSeverity=D={}));var S;(function(f){const _=\"\";function g(s){return C(s,!0)}f.makeKey=g;function C(s,i){const n=[_];return s.source?n.push(s.source.replace(\"\\xA6\",\"\\\\\\xA6\")):n.push(_),s.code?typeof s.code==\"string\"?n.push(s.code.replace(\"\\xA6\",\"\\\\\\xA6\")):n.push(s.code.value.replace(\"\\xA6\",\"\\\\\\xA6\")):n.push(_),s.severity!==void 0&&s.severity!==null?n.push(D.toString(s.severity)):n.push(_),s.message&&i?n.push(s.message.replace(\"\\xA6\",\"\\\\\\xA6\")):n.push(_),s.startLineNumber!==void 0&&s.startLineNumber!==null?n.push(s.startLineNumber.toString()):n.push(_),s.startColumn!==void 0&&s.startColumn!==null?n.push(s.startColumn.toString()):n.push(_),s.endLineNumber!==void 0&&s.endLineNumber!==null?n.push(s.endLineNumber.toString()):n.push(_),s.endColumn!==void 0&&s.endColumn!==null?n.push(s.endColumn.toString()):n.push(_),n.push(_),n.join(\"\\xA6\")}f.makeKeyOptionalMessage=C})(S||(e.IMarkerData=S={})),e.IMarkerService=(0,y.createDecorator)(\"markerService\")}),define(ne[766],se([1,0,14,6,2,64,11,22,5,50,8,97,28]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IMarkerNavigationService=e.MarkerList=e.MarkerCoordinate=void 0;class n{constructor(h,r,c){this.marker=h,this.index=r,this.total=c}}e.MarkerCoordinate=n;let t=class{constructor(h,r,c){this._markerService=r,this._configService=c,this._onDidChange=new k.Emitter,this.onDidChange=this._onDidChange.event,this._dispoables=new y.DisposableStore,this._markers=[],this._nextIdx=-1,f.URI.isUri(h)?this._resourceFilter=p=>p.toString()===h.toString():h&&(this._resourceFilter=h);const o=this._configService.getValue(\"problems.sortOrder\"),d=(p,m)=>{let v=(0,S.compare)(p.resource.toString(),m.resource.toString());return v===0&&(o===\"position\"?v=_.Range.compareRangesUsingStarts(p,m)||s.MarkerSeverity.compare(p.severity,m.severity):v=s.MarkerSeverity.compare(p.severity,m.severity)||_.Range.compareRangesUsingStarts(p,m)),v},l=()=>{this._markers=this._markerService.read({resource:f.URI.isUri(h)?h:void 0,severities:s.MarkerSeverity.Error|s.MarkerSeverity.Warning|s.MarkerSeverity.Info}),typeof h==\"function\"&&(this._markers=this._markers.filter(p=>this._resourceFilter(p.resource))),this._markers.sort(d)};l(),this._dispoables.add(r.onMarkerChanged(p=>{(!this._resourceFilter||p.some(m=>this._resourceFilter(m)))&&(l(),this._nextIdx=-1,this._onDidChange.fire())}))}dispose(){this._dispoables.dispose(),this._onDidChange.dispose()}matches(h){return!this._resourceFilter&&!h?!0:!this._resourceFilter||!h?!1:this._resourceFilter(h)}get selected(){const h=this._markers[this._nextIdx];return h&&new n(h,this._nextIdx+1,this._markers.length)}_initIdx(h,r,c){let o=!1,d=this._markers.findIndex(l=>l.resource.toString()===h.uri.toString());d<0&&(d=(0,L.binarySearch)(this._markers,{resource:h.uri},(l,p)=>(0,S.compare)(l.resource.toString(),p.resource.toString())),d<0&&(d=~d));for(let l=d;l<this._markers.length;l++){let p=_.Range.lift(this._markers[l]);if(p.isEmpty()){const m=h.getWordAtPosition(p.getStartPosition());m&&(p=new _.Range(p.startLineNumber,m.startColumn,p.startLineNumber,m.endColumn))}if(r&&(p.containsPosition(r)||r.isBeforeOrEqual(p.getStartPosition()))){this._nextIdx=l,o=!0;break}if(this._markers[l].resource.toString()!==h.uri.toString())break}o||(this._nextIdx=c?0:this._markers.length-1),this._nextIdx<0&&(this._nextIdx=this._markers.length-1)}resetIndex(){this._nextIdx=-1}move(h,r,c){if(this._markers.length===0)return!1;const o=this._nextIdx;return this._nextIdx===-1?this._initIdx(r,c,h):h?this._nextIdx=(this._nextIdx+1)%this._markers.length:h||(this._nextIdx=(this._nextIdx-1+this._markers.length)%this._markers.length),o!==this._nextIdx}find(h,r){let c=this._markers.findIndex(o=>o.resource.toString()===h.toString());if(!(c<0)){for(;c<this._markers.length;c++)if(_.Range.containsPosition(this._markers[c],r))return new n(this._markers[c],c+1,this._markers.length)}}};e.MarkerList=t,e.MarkerList=t=ke([fe(1,s.IMarkerService),fe(2,i.IConfigurationService)],t),e.IMarkerNavigationService=(0,C.createDecorator)(\"IMarkerNavigationService\");let a=class{constructor(h,r){this._markerService=h,this._configService=r,this._provider=new D.LinkedList}getMarkerList(h){for(const r of this._provider){const c=r.getMarkerList(h);if(c)return c}return new t(h,this._markerService,this._configService)}};a=ke([fe(0,s.IMarkerService),fe(1,i.IConfigurationService)],a),(0,g.registerSingleton)(e.IMarkerNavigationService,a,1)}),define(ne[767],se([1,0,14,6,46,65,54,22,97]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MarkerService=e.unsupportedSchemas=void 0,e.unsupportedSchemas=new Set([S.Schemas.inMemory,S.Schemas.vscodeSourceControl,S.Schemas.walkThrough,S.Schemas.walkThroughSnippet]);class g{constructor(){this._byResource=new D.ResourceMap,this._byOwner=new Map}set(n,t,a){let u=this._byResource.get(n);u||(u=new Map,this._byResource.set(n,u)),u.set(t,a);let h=this._byOwner.get(t);h||(h=new D.ResourceMap,this._byOwner.set(t,h)),h.set(n,a)}get(n,t){const a=this._byResource.get(n);return a?.get(t)}delete(n,t){let a=!1,u=!1;const h=this._byResource.get(n);h&&(a=h.delete(t));const r=this._byOwner.get(t);if(r&&(u=r.delete(n)),a!==u)throw new Error(\"illegal state\");return a&&u}values(n){var t,a,u,h;return typeof n==\"string\"?(a=(t=this._byOwner.get(n))===null||t===void 0?void 0:t.values())!==null&&a!==void 0?a:y.Iterable.empty():f.URI.isUri(n)?(h=(u=this._byResource.get(n))===null||u===void 0?void 0:u.values())!==null&&h!==void 0?h:y.Iterable.empty():y.Iterable.map(y.Iterable.concat(...this._byOwner.values()),r=>r[1])}}class C{constructor(n){this.errors=0,this.infos=0,this.warnings=0,this.unknowns=0,this._data=new D.ResourceMap,this._service=n,this._subscription=n.onMarkerChanged(this._update,this)}dispose(){this._subscription.dispose()}_update(n){for(const t of n){const a=this._data.get(t);a&&this._substract(a);const u=this._resourceStats(t);this._add(u),this._data.set(t,u)}}_resourceStats(n){const t={errors:0,warnings:0,infos:0,unknowns:0};if(e.unsupportedSchemas.has(n.scheme))return t;for(const{severity:a}of this._service.read({resource:n}))a===_.MarkerSeverity.Error?t.errors+=1:a===_.MarkerSeverity.Warning?t.warnings+=1:a===_.MarkerSeverity.Info?t.infos+=1:t.unknowns+=1;return t}_substract(n){this.errors-=n.errors,this.warnings-=n.warnings,this.infos-=n.infos,this.unknowns-=n.unknowns}_add(n){this.errors+=n.errors,this.warnings+=n.warnings,this.infos+=n.infos,this.unknowns+=n.unknowns}}class s{constructor(){this._onMarkerChanged=new k.DebounceEmitter({delay:0,merge:s._merge}),this.onMarkerChanged=this._onMarkerChanged.event,this._data=new g,this._stats=new C(this)}dispose(){this._stats.dispose(),this._onMarkerChanged.dispose()}remove(n,t){for(const a of t||[])this.changeOne(n,a,[])}changeOne(n,t,a){if((0,L.isFalsyOrEmpty)(a))this._data.delete(t,n)&&this._onMarkerChanged.fire([t]);else{const u=[];for(const h of a){const r=s._toMarker(n,t,h);r&&u.push(r)}this._data.set(t,n,u),this._onMarkerChanged.fire([t])}}static _toMarker(n,t,a){let{code:u,severity:h,message:r,source:c,startLineNumber:o,startColumn:d,endLineNumber:l,endColumn:p,relatedInformation:m,tags:v}=a;if(r)return o=o>0?o:1,d=d>0?d:1,l=l>=o?l:o,p=p>0?p:d,{resource:t,owner:n,code:u,severity:h,message:r,source:c,startLineNumber:o,startColumn:d,endLineNumber:l,endColumn:p,relatedInformation:m,tags:v}}changeAll(n,t){const a=[],u=this._data.values(n);if(u)for(const h of u){const r=y.Iterable.first(h);r&&(a.push(r.resource),this._data.delete(r.resource,n))}if((0,L.isNonEmptyArray)(t)){const h=new D.ResourceMap;for(const{resource:r,marker:c}of t){const o=s._toMarker(n,r,c);if(!o)continue;const d=h.get(r);d?d.push(o):(h.set(r,[o]),a.push(r))}for(const[r,c]of h)this._data.set(r,n,c)}a.length>0&&this._onMarkerChanged.fire(a)}read(n=Object.create(null)){let{owner:t,resource:a,severities:u,take:h}=n;if((!h||h<0)&&(h=-1),t&&a){const r=this._data.get(a,t);if(r){const c=[];for(const o of r)if(s._accept(o,u)){const d=c.push(o);if(h>0&&d===h)break}return c}else return[]}else if(!t&&!a){const r=[];for(const c of this._data.values())for(const o of c)if(s._accept(o,u)){const d=r.push(o);if(h>0&&d===h)return r}return r}else{const r=this._data.values(a??t),c=[];for(const o of r)for(const d of o)if(s._accept(d,u)){const l=c.push(d);if(h>0&&l===h)return c}return c}}static _accept(n,t){return t===void 0||(t&n.severity)===n.severity}static _merge(n){const t=new D.ResourceMap;for(const a of n)for(const u of a)t.set(u,!0);return Array.from(t.keys())}}e.MarkerService=s}),define(ne[43],se([1,0,101,8]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.NoOpNotification=e.INotificationService=e.Severity=void 0,e.Severity=L.default,e.INotificationService=(0,k.createDecorator)(\"notificationService\");class y{}e.NoOpNotification=y}),define(ne[56],se([1,0,11,22,8]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.extractSelection=e.matchesSomeScheme=e.matchesScheme=e.IOpenerService=void 0,e.IOpenerService=(0,y.createDecorator)(\"openerService\");function D(_,g){return k.URI.isUri(_)?(0,L.equalsIgnoreCase)(_.scheme,g):(0,L.startsWithIgnoreCase)(_,g+\":\")}e.matchesScheme=D;function S(_,...g){return g.some(C=>D(_,C))}e.matchesSomeScheme=S;function f(_){let g;const C=/^L?(\\d+)(?:,(\\d+))?(-L?(\\d+)(?:,(\\d+))?)?/.exec(_.fragment);return C&&(g={startLineNumber:parseInt(C[1]),startColumn:C[2]?parseInt(C[2]):1,endLineNumber:C[4]?parseInt(C[4]):void 0,endColumn:C[4]?C[5]?parseInt(C[5]):1:void 0},_=_.with({fragment:\"\"})),{selection:g,uri:_}}e.extractSelection=f}),define(ne[768],se([1,0,7,19,64,65,221,54,45,22,33,27,743,56]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OpenerService=void 0;let t=class{constructor(r){this._commandService=r}open(r,c){return we(this,void 0,void 0,function*(){if(!(0,n.matchesScheme)(r,f.Schemas.command))return!1;if(!c?.allowCommands||(typeof r==\"string\"&&(r=g.URI.parse(r)),Array.isArray(c.allowCommands)&&!c.allowCommands.includes(r.path)))return!0;let o=[];try{o=(0,S.parse)(decodeURIComponent(r.query))}catch{try{o=(0,S.parse)(r.query)}catch{}}return Array.isArray(o)||(o=[o]),yield this._commandService.executeCommand(r.path,...o),!0})}};t=ke([fe(0,s.ICommandService)],t);let a=class{constructor(r){this._editorService=r}open(r,c){return we(this,void 0,void 0,function*(){typeof r==\"string\"&&(r=g.URI.parse(r));const{selection:o,uri:d}=(0,n.extractSelection)(r);return r=d,r.scheme===f.Schemas.file&&(r=(0,_.normalizePath)(r)),yield this._editorService.openCodeEditor({resource:r,options:Object.assign({selection:o,source:c?.fromUserGesture?i.EditorOpenSource.USER:i.EditorOpenSource.API},c?.editorOptions)},this._editorService.getFocusedCodeEditor(),c?.openToSide),!0})}};a=ke([fe(0,C.ICodeEditorService)],a);let u=class{constructor(r,c){this._openers=new y.LinkedList,this._validators=new y.LinkedList,this._resolvers=new y.LinkedList,this._resolvedUriTargets=new D.ResourceMap(o=>o.with({path:null,fragment:null,query:null}).toString()),this._externalOpeners=new y.LinkedList,this._defaultExternalOpener={openExternal:o=>we(this,void 0,void 0,function*(){return(0,n.matchesSomeScheme)(o,f.Schemas.http,f.Schemas.https)?L.windowOpenNoOpener(o):window.location.href=o,!0})},this._openers.push({open:(o,d)=>we(this,void 0,void 0,function*(){return d?.openExternal||(0,n.matchesSomeScheme)(o,f.Schemas.mailto,f.Schemas.http,f.Schemas.https,f.Schemas.vsls)?(yield this._doOpenExternal(o,d),!0):!1})}),this._openers.push(new t(c)),this._openers.push(new a(r))}registerOpener(r){return{dispose:this._openers.unshift(r)}}open(r,c){var o;return we(this,void 0,void 0,function*(){const d=typeof r==\"string\"?g.URI.parse(r):r,l=(o=this._resolvedUriTargets.get(d))!==null&&o!==void 0?o:r;for(const p of this._validators)if(!(yield p.shouldOpen(l,c)))return!1;for(const p of this._openers)if(yield p.open(r,c))return!0;return!1})}resolveExternalUri(r,c){return we(this,void 0,void 0,function*(){for(const o of this._resolvers)try{const d=yield o.resolveExternalUri(r,c);if(d)return this._resolvedUriTargets.has(d.resolved)||this._resolvedUriTargets.set(d.resolved,r),d}catch{}throw new Error(\"Could not resolve external URI: \"+r.toString())})}_doOpenExternal(r,c){return we(this,void 0,void 0,function*(){const o=typeof r==\"string\"?g.URI.parse(r):r;let d;try{d=(yield this.resolveExternalUri(o,c)).resolved}catch{d=o}let l;if(typeof r==\"string\"&&o.toString()===d.toString()?l=r:l=encodeURI(d.toString(!0)),c?.allowContributedOpeners){const p=typeof c?.allowContributedOpeners==\"string\"?c?.allowContributedOpeners:void 0;for(const m of this._externalOpeners)if(yield m.openExternal(l,{sourceUri:o,preferredOpenerId:p},k.CancellationToken.None))return!0}return this._defaultExternalOpener.openExternal(l,{sourceUri:o},k.CancellationToken.None)})}dispose(){this._validators.clear()}};e.OpenerService=u,e.OpenerService=u=ke([fe(0,C.ICodeEditorService),fe(1,s.ICommandService)],u)}),define(ne[76],se([1,0,143,65,141,239,50,8,70,56]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LanguageFeatureDebounceService=e.ILanguageFeatureDebounceService=void 0,e.ILanguageFeatureDebounceService=(0,f.createDecorator)(\"ILanguageFeatureDebounceService\");var C;(function(t){const a=new WeakMap;let u=0;function h(r){let c=a.get(r);return c===void 0&&(c=++u,a.set(r,c)),c}t.of=h})(C||(C={}));class s{constructor(a){this._default=a}get(a){return this._default}update(a,u){return this._default}default(){return this._default}}class i{constructor(a,u,h,r,c,o){this._logService=a,this._name=u,this._registry=h,this._default=r,this._min=c,this._max=o,this._cache=new k.LRUCache(50,.7)}_key(a){return a.id+this._registry.all(a).reduce((u,h)=>(0,L.doHash)(C.of(h),u),0)}get(a){const u=this._key(a),h=this._cache.get(u);return h?(0,y.clamp)(h.value,this._min,this._max):this.default()}update(a,u){const h=this._key(a);let r=this._cache.get(h);r||(r=new y.SlidingWindowAverage(6),this._cache.set(h,r));const c=(0,y.clamp)(r.update(u),this._min,this._max);return(0,g.matchesScheme)(a.uri,\"output\")||this._logService.trace(`[DEBOUNCE: ${this._name}] for ${a.uri.toString()} is ${c}ms`),c}_overall(){const a=new y.MovingAverage;for(const[,u]of this._cache)a.update(u.value);return a.value}default(){const a=this._overall()|0||this._default;return(0,y.clamp)(a,this._min,this._max)}}let n=class{constructor(a,u){this._logService=a,this._data=new Map,this._isDev=u.isExtensionDevelopment||!u.isBuilt}for(a,u,h){var r,c,o;const d=(r=h?.min)!==null&&r!==void 0?r:50,l=(c=h?.max)!==null&&c!==void 0?c:Math.pow(d,2),p=(o=h?.key)!==null&&o!==void 0?o:void 0,m=`${C.of(a)},${d}${p?\",\"+p:\"\"}`;let v=this._data.get(m);return v||(this._isDev?v=new i(this._logService,u,a,this._overallAverage()|0||d*1.5,d,l):(this._logService.debug(`[DEBOUNCE: ${u}] is disabled in developed mode`),v=new s(d*1.5)),this._data.set(m,v)),v}_overallAverage(){const a=new y.MovingAverage;for(const u of this._data.values())a.update(u.default());return a.value}};e.LanguageFeatureDebounceService=n,e.LanguageFeatureDebounceService=n=ke([fe(0,_.ILogService),fe(1,D.IEnvironmentService)],n),(0,S.registerSingleton)(e.ILanguageFeatureDebounceService,n,1)}),define(ne[188],se([1,0,14,19,9,46,65,12,5,76,8,50,51,2,18]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OutlineModelService=e.IOutlineModelService=e.OutlineModel=e.OutlineGroup=e.OutlineElement=e.TreeElement=void 0;class a{remove(){var d;(d=this.parent)===null||d===void 0||d.children.delete(this.id)}static findId(d,l){let p;typeof d==\"string\"?p=`${l.id}/${d}`:(p=`${l.id}/${d.name}`,l.children.get(p)!==void 0&&(p=`${l.id}/${d.name}_${d.range.startLineNumber}_${d.range.startColumn}`));let m=p;for(let v=0;l.children.get(m)!==void 0;v++)m=`${p}_${v}`;return m}static empty(d){return d.children.size===0}}e.TreeElement=a;class u extends a{constructor(d,l,p){super(),this.id=d,this.parent=l,this.symbol=p,this.children=new Map}}e.OutlineElement=u;class h extends a{constructor(d,l,p,m){super(),this.id=d,this.parent=l,this.label=p,this.order=m,this.children=new Map}}e.OutlineGroup=h;class r extends a{static create(d,l,p){const m=new k.CancellationTokenSource(p),v=new r(l.uri),b=d.ordered(l),w=b.map((I,M)=>{var P;const x=a.findId(`provider_${M}`,v),T=new h(x,v,(P=I.displayName)!==null&&P!==void 0?P:\"Unknown Outline Provider\",M);return Promise.resolve(I.provideDocumentSymbols(l,m.token)).then(A=>{for(const N of A||[])r._makeOutlineElement(N,T);return T},A=>((0,y.onUnexpectedExternalError)(A),T)).then(A=>{a.empty(A)?A.remove():v._groups.set(x,A)})}),E=d.onDidChange(()=>{const I=d.ordered(l);(0,L.equals)(I,b)||m.cancel()});return Promise.all(w).then(()=>m.token.isCancellationRequested&&!p.isCancellationRequested?r.create(d,l,p):v._compact()).finally(()=>{E.dispose()})}static _makeOutlineElement(d,l){const p=a.findId(d,l),m=new u(p,l,d);if(d.children)for(const v of d.children)r._makeOutlineElement(v,m);l.children.set(m.id,m)}constructor(d){super(),this.uri=d,this.id=\"root\",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id=\"root\",this.parent=void 0}_compact(){let d=0;for(const[l,p]of this._groups)p.children.size===0?this._groups.delete(l):d+=1;if(d!==1)this.children=this._groups;else{const l=D.Iterable.first(this._groups.values());for(const[,p]of l.children)p.parent=this,this.children.set(p.id,p)}return this}getTopLevelSymbols(){const d=[];for(const l of this.children.values())l instanceof u?d.push(l.symbol):d.push(...D.Iterable.map(l.children.values(),p=>p.symbol));return d.sort((l,p)=>_.Range.compareRangesUsingStarts(l.range,p.range))}asListOfDocumentSymbols(){const d=this.getTopLevelSymbols(),l=[];return r._flattenDocumentSymbols(l,d,\"\"),l.sort((p,m)=>f.Position.compare(_.Range.getStartPosition(p.range),_.Range.getStartPosition(m.range))||f.Position.compare(_.Range.getEndPosition(m.range),_.Range.getEndPosition(p.range)))}static _flattenDocumentSymbols(d,l,p){for(const m of l)d.push({kind:m.kind,tags:m.tags,name:m.name,detail:m.detail,containerName:m.containerName||p,range:m.range,selectionRange:m.selectionRange,children:void 0}),m.children&&r._flattenDocumentSymbols(d,m.children,m.name)}}e.OutlineModel=r,e.IOutlineModelService=(0,C.createDecorator)(\"IOutlineModelService\");let c=class{constructor(d,l,p){this._languageFeaturesService=d,this._disposables=new n.DisposableStore,this._cache=new S.LRUCache(10,.7),this._debounceInformation=l.for(d.documentSymbolProvider,\"DocumentSymbols\",{min:350}),this._disposables.add(p.onModelRemoved(m=>{this._cache.delete(m.id)}))}dispose(){this._disposables.dispose()}getOrCreate(d,l){return we(this,void 0,void 0,function*(){const p=this._languageFeaturesService.documentSymbolProvider,m=p.ordered(d);let v=this._cache.get(d.id);if(!v||v.versionId!==d.getVersionId()||!(0,L.equals)(v.provider,m)){const w=new k.CancellationTokenSource;v={versionId:d.getVersionId(),provider:m,promiseCnt:0,source:w,promise:r.create(p,d,w.token),model:void 0},this._cache.set(d.id,v);const E=Date.now();v.promise.then(I=>{v.model=I,this._debounceInformation.update(d,Date.now()-E)}).catch(I=>{this._cache.delete(d.id)})}if(v.model)return v.model;v.promiseCnt+=1;const b=l.onCancellationRequested(()=>{--v.promiseCnt===0&&(v.source.cancel(),this._cache.delete(d.id))});try{return yield v.promise}finally{b.dispose()}})}};e.OutlineModelService=c,e.OutlineModelService=c=ke([fe(0,t.ILanguageFeaturesService),fe(1,g.ILanguageFeatureDebounceService),fe(2,i.IModelService)],c),(0,s.registerSingleton)(e.IOutlineModelService,c,1)}),define(ne[769],se([1,0,19,20,22,69,188,27]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),f.CommandsRegistry.registerCommand(\"_executeDocumentSymbolProvider\",function(_,...g){return we(this,void 0,void 0,function*(){const[C]=g;(0,k.assertType)(y.URI.isUri(C));const s=_.get(S.IOutlineModelService),n=yield _.get(D.ITextModelService).createModelReference(C);try{return(yield s.getOrCreate(n.object.textEditorModel,L.CancellationToken.None)).getTopLevelSymbols()}finally{n.dispose()}})})}),define(ne[770],se([1,0,7,81,44,61,6,2,56,473]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Link=void 0;let g=class extends f.Disposable{get enabled(){return this._enabled}set enabled(s){s?(this.el.setAttribute(\"aria-disabled\",\"false\"),this.el.tabIndex=0,this.el.style.pointerEvents=\"auto\",this.el.style.opacity=\"1\",this.el.style.cursor=\"pointer\",this._enabled=!1):(this.el.setAttribute(\"aria-disabled\",\"true\"),this.el.tabIndex=-1,this.el.style.pointerEvents=\"none\",this.el.style.opacity=\"0.4\",this.el.style.cursor=\"default\",this._enabled=!0),this._enabled=s}constructor(s,i,n={},t){var a;super(),this._link=i,this._enabled=!0,this.el=(0,L.append)(s,(0,L.$)(\"a.monaco-link\",{tabIndex:(a=i.tabIndex)!==null&&a!==void 0?a:0,href:i.href,title:i.title},i.label)),this.el.setAttribute(\"role\",\"button\");const u=this._register(new k.DomEmitter(this.el,\"click\")),h=this._register(new k.DomEmitter(this.el,\"keypress\")),r=S.Event.chain(h.event).map(d=>new y.StandardKeyboardEvent(d)).filter(d=>d.keyCode===3).event,c=this._register(new k.DomEmitter(this.el,D.EventType.Tap)).event;this._register(D.Gesture.addTarget(this.el));const o=S.Event.any(u.event,r,c);this._register(o(d=>{this.enabled&&(L.EventHelper.stop(d,!0),n?.opener?n.opener(this._link.href):t.open(this._link.href,{allowCommands:!0}))})),this.enabled=!0}};e.Link=g,e.Link=g=ke([fe(3,_.IOpenerService)],g)}),define(ne[77],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IEditorProgressService=e.Progress=e.emptyProgressRunner=e.IProgressService=void 0,e.IProgressService=(0,L.createDecorator)(\"progressService\"),e.emptyProgressRunner=Object.freeze({total(){},worked(){},done(){}});class k{constructor(D,S){this.callback=D,this.report=S?.async?this._reportAsync.bind(this):this._reportSync.bind(this)}_reportSync(D){this._value=D,this.callback(this._value)}_reportAsync(D){Promise.resolve(this._lastTask).finally(()=>{this._value=D;const S=this.callback(this._value);this._lastTask=Promise.resolve(S).finally(()=>this._lastTask=void 0)})}}e.Progress=k,k.None=Object.freeze({report(){}}),e.IEditorProgressService=(0,L.createDecorator)(\"editorProgressService\")}),define(ne[771],se([1,0,13,19,2,20]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PickerQuickAccessProvider=e.TriggerAction=void 0;var S;(function(C){C[C.NO_ACTION=0]=\"NO_ACTION\",C[C.CLOSE_PICKER=1]=\"CLOSE_PICKER\",C[C.REFRESH_PICKER=2]=\"REFRESH_PICKER\",C[C.REMOVE_ITEM=3]=\"REMOVE_ITEM\"})(S||(e.TriggerAction=S={}));function f(C){const s=C;return Array.isArray(s.items)}function _(C){const s=C;return!!s.picks&&s.additionalPicks instanceof Promise}class g extends y.Disposable{constructor(s,i){super(),this.prefix=s,this.options=i}provide(s,i,n){var t;const a=new y.DisposableStore;s.canAcceptInBackground=!!(!((t=this.options)===null||t===void 0)&&t.canAcceptInBackground),s.matchOnLabel=s.matchOnDescription=s.matchOnDetail=s.sortByLabel=!1;let u;const h=a.add(new y.MutableDisposable),r=()=>we(this,void 0,void 0,function*(){const c=h.value=new y.DisposableStore;u?.dispose(!0),s.busy=!1,u=new k.CancellationTokenSource(i);const o=u.token,d=s.value.substr(this.prefix.length).trim(),l=this._getPicks(d,c,o,n),p=(v,b)=>{var w;let E,I;if(f(v)?(E=v.items,I=v.active):E=v,E.length===0){if(b)return!1;(d.length>0||s.hideInput)&&(!((w=this.options)===null||w===void 0)&&w.noResultsPick)&&((0,D.isFunction)(this.options.noResultsPick)?E=[this.options.noResultsPick(d)]:E=[this.options.noResultsPick])}return s.items=E,I&&(s.activeItems=[I]),!0},m=v=>we(this,void 0,void 0,function*(){let b=!1,w=!1;yield Promise.all([(()=>we(this,void 0,void 0,function*(){typeof v.mergeDelay==\"number\"&&(yield(0,L.timeout)(v.mergeDelay),o.isCancellationRequested)||w||(b=p(v.picks,!0))}))(),(()=>we(this,void 0,void 0,function*(){s.busy=!0;try{const E=yield v.additionalPicks;if(o.isCancellationRequested)return;let I,M;f(v.picks)?(I=v.picks.items,M=v.picks.active):I=v.picks;let P,x;if(f(E)?(P=E.items,x=E.active):P=E,P.length>0||!b){let T;if(!M&&!x){const A=s.activeItems[0];A&&I.indexOf(A)!==-1&&(T=A)}p({items:[...I,...P],active:M||x||T})}}finally{o.isCancellationRequested||(s.busy=!1),w=!0}}))()])});if(l!==null)if(_(l))yield m(l);else if(!(l instanceof Promise))p(l);else{s.busy=!0;try{const v=yield l;if(o.isCancellationRequested)return;_(v)?yield m(v):p(v)}finally{o.isCancellationRequested||(s.busy=!1)}}});return a.add(s.onDidChangeValue(()=>r())),r(),a.add(s.onDidAccept(c=>{const[o]=s.selectedItems;typeof o?.accept==\"function\"&&(c.inBackground||s.hide(),o.accept(s.keyMods,c))})),a.add(s.onDidTriggerItemButton(({button:c,item:o})=>we(this,void 0,void 0,function*(){var d,l;if(typeof o.trigger==\"function\"){const p=(l=(d=o.buttons)===null||d===void 0?void 0:d.indexOf(c))!==null&&l!==void 0?l:-1;if(p>=0){const m=o.trigger(p,s.keyMods),v=typeof m==\"number\"?m:yield m;if(i.isCancellationRequested)return;switch(v){case S.NO_ACTION:break;case S.CLOSE_PICKER:s.hide();break;case S.REFRESH_PICKER:r();break;case S.REMOVE_ITEM:{const b=s.items.indexOf(o);if(b!==-1){const w=s.items.slice(),E=w.splice(b,1),I=s.activeItems.filter(P=>P!==E[0]),M=s.keepScrollPosition;s.keepScrollPosition=!0,s.items=w,I&&(s.activeItems=I),s.keepScrollPosition=M}break}}}}}))),a}}e.PickerQuickAccessProvider=g}),define(ne[772],se([1,0,7,44,60,228,2,101,174]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.QuickInputBox=void 0;const _=L.$;class g extends S.Disposable{constructor(s,i,n){super(),this.parent=s,this.onKeyDown=a=>L.addDisposableListener(this.findInput.inputBox.inputElement,L.EventType.KEY_DOWN,u=>{a(new k.StandardKeyboardEvent(u))}),this.onMouseDown=a=>L.addDisposableListener(this.findInput.inputBox.inputElement,L.EventType.MOUSE_DOWN,u=>{a(new y.StandardMouseEvent(u))}),this.onDidChange=a=>this.findInput.onDidChange(a),this.container=L.append(this.parent,_(\".quick-input-box\")),this.findInput=this._register(new D.FindInput(this.container,void 0,{label:\"\",inputBoxStyles:i,toggleStyles:n}));const t=this.findInput.inputBox.inputElement;t.role=\"combobox\",t.ariaHasPopup=\"menu\",t.ariaAutoComplete=\"list\",t.ariaExpanded=\"true\"}get value(){return this.findInput.getValue()}set value(s){this.findInput.setValue(s)}select(s=null){this.findInput.inputBox.select(s)}isSelectionAtEnd(){return this.findInput.inputBox.isSelectionAtEnd()}get placeholder(){return this.findInput.inputBox.inputElement.getAttribute(\"placeholder\")||\"\"}set placeholder(s){this.findInput.inputBox.setPlaceHolder(s)}get password(){return this.findInput.inputBox.inputElement.type===\"password\"}set password(s){this.findInput.inputBox.inputElement.type=s?\"password\":\"text\"}set enabled(s){this.findInput.inputBox.inputElement.toggleAttribute(\"readonly\",!s)}set toggles(s){this.findInput.setAdditionalToggles(s)}setAttribute(s,i){this.findInput.inputBox.inputElement.setAttribute(s,i)}showDecoration(s){s===f.default.Ignore?this.findInput.clearMessage():this.findInput.showMessage({type:s===f.default.Info?1:s===f.default.Warning?2:3,content:\"\"})}stylesForType(s){return this.findInput.inputBox.stylesForType(s===f.default.Info?1:s===f.default.Warning?2:3)}setFocus(){this.findInput.focus()}layout(){this.findInput.inputBox.layout()}}e.QuickInputBox=g}),define(ne[339],se([1,0,7,81,6,44,61,129,164,385,735,174]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.renderQuickInputDescription=e.getIconClass=void 0;const s={},i=new _.IdGenerator(\"quick-input-button-icon-\");function n(a){if(!a)return;let u;const h=a.dark.toString();return s[h]?u=s[h]:(u=i.nextId(),L.createCSSRule(`.${u}, .hc-light .${u}`,`background-image: ${L.asCSSUrl(a.light||a.dark)}`),L.createCSSRule(`.vs-dark .${u}, .hc-black .${u}`,`background-image: ${L.asCSSUrl(a.dark)}`),s[h]=u),u}e.getIconClass=n;function t(a,u,h){L.reset(u);const r=(0,g.parseLinkedText)(a);let c=0;for(const o of r.nodes)if(typeof o==\"string\")u.append(...(0,f.renderLabelWithIcons)(o));else{let d=o.title;!d&&o.href.startsWith(\"command:\")?d=(0,C.localize)(0,null,o.href.substring(8)):d||(d=o.href);const l=L.$(\"a\",{href:o.href,title:d,tabIndex:c++},o.label);l.style.textDecoration=\"underline\";const p=E=>{L.isEventLike(E)&&L.EventHelper.stop(E,!0),h.callback(o.href)},m=h.disposables.add(new k.DomEmitter(l,L.EventType.CLICK)).event,v=h.disposables.add(new k.DomEmitter(l,L.EventType.KEY_DOWN)).event,b=h.disposables.add(y.Event.chain(v)).filter(E=>{const I=new D.StandardKeyboardEvent(E);return I.equals(10)||I.equals(3)}).event;h.disposables.add(S.Gesture.addTarget(l));const w=h.disposables.add(new k.DomEmitter(l,S.EventType.Tap)).event;y.Event.any(m,w,b)(p,null,h.disposables),u.appendChild(l)}}e.renderQuickInputDescription=t}),define(ne[71],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IQuickInputService=e.quickPickItemScorerAccessor=e.QuickPickItemScorerAccessor=e.ItemActivation=e.QuickInputHideReason=e.NO_KEY_MODS=void 0,e.NO_KEY_MODS={ctrlCmd:!1,alt:!1};var k;(function(S){S[S.Blur=1]=\"Blur\",S[S.Gesture=2]=\"Gesture\",S[S.Other=3]=\"Other\"})(k||(e.QuickInputHideReason=k={}));var y;(function(S){S[S.NONE=0]=\"NONE\",S[S.FIRST=1]=\"FIRST\",S[S.SECOND=2]=\"SECOND\",S[S.LAST=3]=\"LAST\"})(y||(e.ItemActivation=y={}));class D{constructor(f){this.options=f}}e.QuickPickItemScorerAccessor=D,e.quickPickItemScorerAccessor=new D,e.IQuickInputService=(0,L.createDecorator)(\"quickInputService\")}),define(ne[37],se([1,0,85,20]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Registry=void 0;class y{constructor(){this.data=new Map}add(S,f){L.ok(k.isString(S)),L.ok(k.isObject(f)),L.ok(!this.data.has(S),\"There is already an extension with this id\"),this.data.set(S,f)}as(S){return this.data.get(S)||null}}e.Registry=new y}),define(ne[340],se([1,0,37]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LocalSelectionTransfer=e.Extensions=e.CodeDataTransfers=void 0,e.CodeDataTransfers={EDITORS:\"CodeEditors\",FILES:\"CodeFiles\"};class k{}e.Extensions={DragAndDropContribution:\"workbench.contributions.dragAndDrop\"},L.Registry.add(e.Extensions.DragAndDropContribution,new k);class y{constructor(){}static getInstance(){return y.INSTANCE}hasData(S){return S&&S===this.proto}getData(S){if(this.hasData(S))return this.data}}e.LocalSelectionTransfer=y,y.INSTANCE=new y}),define(ne[341],se([1,0,197,171,107,22,340]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.toExternalVSDataTransfer=e.toVSDataTransfer=void 0;function f(s){const i=new k.VSDataTransfer;for(const n of s.items){const t=n.type;if(n.kind===\"string\"){const a=new Promise(u=>n.getAsString(u));i.append(t,(0,k.createStringDataTransferItem)(a))}else if(n.kind===\"file\"){const a=n.getAsFile();a&&i.append(t,_(a))}}return i}e.toVSDataTransfer=f;function _(s){const i=s.path?D.URI.parse(s.path):void 0;return(0,k.createFileDataTransferItem)(s.name,i,()=>we(this,void 0,void 0,function*(){return new Uint8Array(yield s.arrayBuffer())}))}const g=Object.freeze([S.CodeDataTransfers.EDITORS,S.CodeDataTransfers.FILES,L.DataTransfers.RESOURCES,L.DataTransfers.INTERNAL_URI_LIST]);function C(s,i=!1){const n=f(s),t=n.get(L.DataTransfers.INTERNAL_URI_LIST);if(t)n.replace(y.Mimes.uriList,t);else if(i||!n.has(y.Mimes.uriList)){const a=[];for(const u of s.items){const h=u.getAsFile();if(h){const r=h.path;try{r?a.push(D.URI.file(r).toString()):a.push(D.URI.parse(h.name,!0).toString())}catch{}}}a.length&&n.replace(y.Mimes.uriList,(0,k.createStringDataTransferItem)(k.UriList.create(a)))}for(const a of g)n.delete(a);return n}e.toExternalVSDataTransfer=C}),define(ne[240],se([1,0,6,37]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Extensions=void 0,e.Extensions={JSONContribution:\"base.contributions.json\"};function y(f){return f.length>0&&f.charAt(f.length-1)===\"#\"?f.substring(0,f.length-1):f}class D{constructor(){this._onDidChangeSchema=new L.Emitter,this.schemasById={}}registerSchema(_,g){this.schemasById[y(_)]=g,this._onDidChangeSchema.fire(_)}notifySchemaChanged(_){this._onDidChangeSchema.fire(_)}}const S=new D;k.Registry.add(e.Extensions.JSONContribution,S)}),define(ne[98],se([1,0,14,6,20,721,28,240,37]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.validateProperty=e.getDefaultValue=e.overrideIdentifiersFromKey=e.OVERRIDE_PROPERTY_REGEX=e.OVERRIDE_PROPERTY_PATTERN=e.resourceLanguageSettingsSchemaId=e.resourceSettings=e.windowSettings=e.machineOverridableSettings=e.machineSettings=e.applicationSettings=e.allSettings=e.Extensions=void 0,e.Extensions={Configuration:\"base.contributions.configuration\"},e.allSettings={properties:{},patternProperties:{}},e.applicationSettings={properties:{},patternProperties:{}},e.machineSettings={properties:{},patternProperties:{}},e.machineOverridableSettings={properties:{},patternProperties:{}},e.windowSettings={properties:{},patternProperties:{}},e.resourceSettings={properties:{},patternProperties:{}},e.resourceLanguageSettingsSchemaId=\"vscode://schemas/settings/resourceLanguage\";const g=_.Registry.as(f.Extensions.JSONContribution);class C{constructor(){this.overrideIdentifiers=new Set,this._onDidSchemaChange=new k.Emitter,this._onDidUpdateConfiguration=new k.Emitter,this.configurationDefaultsOverrides=new Map,this.defaultLanguageConfigurationOverridesNode={id:\"defaultOverrides\",title:D.localize(0,null),properties:{}},this.configurationContributors=[this.defaultLanguageConfigurationOverridesNode],this.resourceLanguageSettingsSchema={properties:{},patternProperties:{},additionalProperties:!0,allowTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.policyConfigurations=new Map,this.excludedConfigurationProperties={},g.registerSchema(e.resourceLanguageSettingsSchemaId,this.resourceLanguageSettingsSchema),this.registerOverridePropertyPatternKey()}registerConfiguration(r,c=!0){this.registerConfigurations([r],c)}registerConfigurations(r,c=!0){const o=new Set;this.doRegisterConfigurations(r,c,o),g.registerSchema(e.resourceLanguageSettingsSchemaId,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:o})}registerDefaultConfigurations(r){const c=new Set;this.doRegisterDefaultConfigurations(r,c),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:c,defaultsOverrides:!0})}doRegisterDefaultConfigurations(r,c){var o;const d=[];for(const{overrides:l,source:p}of r)for(const m in l)if(c.add(m),e.OVERRIDE_PROPERTY_REGEX.test(m)){const v=this.configurationDefaultsOverrides.get(m),b=(o=v?.valuesSources)!==null&&o!==void 0?o:new Map;if(p)for(const M of Object.keys(l[m]))b.set(M,p);const w=Object.assign(Object.assign({},v?.value||{}),l[m]);this.configurationDefaultsOverrides.set(m,{source:p,value:w,valuesSources:b});const E=(0,S.getLanguageTagSettingPlainKey)(m),I={type:\"object\",default:w,description:D.localize(1,null,E),$ref:e.resourceLanguageSettingsSchemaId,defaultDefaultValue:w,source:y.isString(p)?void 0:p,defaultValueSource:p};d.push(...n(m)),this.configurationProperties[m]=I,this.defaultLanguageConfigurationOverridesNode.properties[m]=I}else{this.configurationDefaultsOverrides.set(m,{value:l[m],source:p});const v=this.configurationProperties[m];v&&(this.updatePropertyDefaultValue(m,v),this.updateSchema(m,v))}this.doRegisterOverrideIdentifiers(d)}registerOverrideIdentifiers(r){this.doRegisterOverrideIdentifiers(r),this._onDidSchemaChange.fire()}doRegisterOverrideIdentifiers(r){for(const c of r)this.overrideIdentifiers.add(c);this.updateOverridePropertyPatternKey()}doRegisterConfigurations(r,c,o){r.forEach(d=>{this.validateAndRegisterProperties(d,c,d.extensionInfo,d.restrictedProperties,void 0,o),this.configurationContributors.push(d),this.registerJSONConfiguration(d)})}validateAndRegisterProperties(r,c=!0,o,d,l=3,p){var m;l=y.isUndefinedOrNull(r.scope)?l:r.scope;const v=r.properties;if(v)for(const w in v){const E=v[w];if(c&&u(w,E)){delete v[w];continue}if(E.source=o,E.defaultDefaultValue=v[w].default,this.updatePropertyDefaultValue(w,E),e.OVERRIDE_PROPERTY_REGEX.test(w)?E.scope=void 0:(E.scope=y.isUndefinedOrNull(E.scope)?l:E.scope,E.restricted=y.isUndefinedOrNull(E.restricted)?!!d?.includes(w):E.restricted),v[w].hasOwnProperty(\"included\")&&!v[w].included){this.excludedConfigurationProperties[w]=v[w],delete v[w];continue}else this.configurationProperties[w]=v[w],!((m=v[w].policy)===null||m===void 0)&&m.name&&this.policyConfigurations.set(v[w].policy.name,w);!v[w].deprecationMessage&&v[w].markdownDeprecationMessage&&(v[w].deprecationMessage=v[w].markdownDeprecationMessage),p.add(w)}const b=r.allOf;if(b)for(const w of b)this.validateAndRegisterProperties(w,c,o,d,l,p)}getConfigurationProperties(){return this.configurationProperties}getPolicyConfigurations(){return this.policyConfigurations}registerJSONConfiguration(r){const c=o=>{const d=o.properties;if(d)for(const p in d)this.updateSchema(p,d[p]);const l=o.allOf;l?.forEach(c)};c(r)}updateSchema(r,c){switch(e.allSettings.properties[r]=c,c.scope){case 1:e.applicationSettings.properties[r]=c;break;case 2:e.machineSettings.properties[r]=c;break;case 6:e.machineOverridableSettings.properties[r]=c;break;case 3:e.windowSettings.properties[r]=c;break;case 4:e.resourceSettings.properties[r]=c;break;case 5:e.resourceSettings.properties[r]=c,this.resourceLanguageSettingsSchema.properties[r]=c;break}}updateOverridePropertyPatternKey(){for(const r of this.overrideIdentifiers.values()){const c=`[${r}]`,o={type:\"object\",description:D.localize(2,null),errorMessage:D.localize(3,null),$ref:e.resourceLanguageSettingsSchemaId};this.updatePropertyDefaultValue(c,o),e.allSettings.properties[c]=o,e.applicationSettings.properties[c]=o,e.machineSettings.properties[c]=o,e.machineOverridableSettings.properties[c]=o,e.windowSettings.properties[c]=o,e.resourceSettings.properties[c]=o}}registerOverridePropertyPatternKey(){const r={type:\"object\",description:D.localize(4,null),errorMessage:D.localize(5,null),$ref:e.resourceLanguageSettingsSchemaId};e.allSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=r,e.applicationSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=r,e.machineSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=r,e.machineOverridableSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=r,e.windowSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=r,e.resourceSettings.patternProperties[e.OVERRIDE_PROPERTY_PATTERN]=r,this._onDidSchemaChange.fire()}updatePropertyDefaultValue(r,c){const o=this.configurationDefaultsOverrides.get(r);let d=o?.value,l=o?.source;y.isUndefined(d)&&(d=c.defaultDefaultValue,l=void 0),y.isUndefined(d)&&(d=t(c.type)),c.default=d,c.defaultValueSource=l}}const s=\"\\\\[([^\\\\]]+)\\\\]\",i=new RegExp(s,\"g\");e.OVERRIDE_PROPERTY_PATTERN=`^(${s})+$`,e.OVERRIDE_PROPERTY_REGEX=new RegExp(e.OVERRIDE_PROPERTY_PATTERN);function n(h){const r=[];if(e.OVERRIDE_PROPERTY_REGEX.test(h)){let c=i.exec(h);for(;c?.length;){const o=c[1].trim();o&&r.push(o),c=i.exec(h)}}return(0,L.distinct)(r)}e.overrideIdentifiersFromKey=n;function t(h){switch(Array.isArray(h)?h[0]:h){case\"boolean\":return!1;case\"integer\":case\"number\":return 0;case\"string\":return\"\";case\"array\":return[];case\"object\":return{};default:return null}}e.getDefaultValue=t;const a=new C;_.Registry.add(e.Extensions.Configuration,a);function u(h,r){var c,o,d,l;return h.trim()?e.OVERRIDE_PROPERTY_REGEX.test(h)?D.localize(7,null,h):a.getConfigurationProperties()[h]!==void 0?D.localize(8,null,h):!((c=r.policy)===null||c===void 0)&&c.name&&a.getPolicyConfigurations().get((o=r.policy)===null||o===void 0?void 0:o.name)!==void 0?D.localize(9,null,h,(d=r.policy)===null||d===void 0?void 0:d.name,a.getPolicyConfigurations().get((l=r.policy)===null||l===void 0?void 0:l.name)):null:D.localize(6,null)}e.validateProperty=u}),define(ne[241],se([1,0,271,36,175,618,98,37]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isDiffEditorConfigurationKey=e.isEditorConfigurationKey=e.editorConfigurationBaseNode=void 0,e.editorConfigurationBaseNode=Object.freeze({id:\"editor\",order:5,type:\"object\",title:D.localize(0,null),scope:5});const _=Object.assign(Object.assign({},e.editorConfigurationBaseNode),{properties:{\"editor.tabSize\":{type:\"number\",default:y.EDITOR_MODEL_DEFAULTS.tabSize,minimum:1,markdownDescription:D.localize(1,null,\"`#editor.detectIndentation#`\")},\"editor.indentSize\":{anyOf:[{type:\"string\",enum:[\"tabSize\"]},{type:\"number\",minimum:1}],default:\"tabSize\",markdownDescription:D.localize(2,null)},\"editor.insertSpaces\":{type:\"boolean\",default:y.EDITOR_MODEL_DEFAULTS.insertSpaces,markdownDescription:D.localize(3,null,\"`#editor.detectIndentation#`\")},\"editor.detectIndentation\":{type:\"boolean\",default:y.EDITOR_MODEL_DEFAULTS.detectIndentation,markdownDescription:D.localize(4,null,\"`#editor.tabSize#`\",\"`#editor.insertSpaces#`\")},\"editor.trimAutoWhitespace\":{type:\"boolean\",default:y.EDITOR_MODEL_DEFAULTS.trimAutoWhitespace,description:D.localize(5,null)},\"editor.largeFileOptimizations\":{type:\"boolean\",default:y.EDITOR_MODEL_DEFAULTS.largeFileOptimizations,description:D.localize(6,null)},\"editor.wordBasedSuggestions\":{type:\"boolean\",default:!0,description:D.localize(7,null)},\"editor.wordBasedSuggestionsMode\":{enum:[\"currentDocument\",\"matchingDocuments\",\"allDocuments\"],default:\"matchingDocuments\",enumDescriptions:[D.localize(8,null),D.localize(9,null),D.localize(10,null)],description:D.localize(11,null)},\"editor.semanticHighlighting.enabled\":{enum:[!0,!1,\"configuredByTheme\"],enumDescriptions:[D.localize(12,null),D.localize(13,null),D.localize(14,null)],default:\"configuredByTheme\",description:D.localize(15,null)},\"editor.stablePeek\":{type:\"boolean\",default:!1,markdownDescription:D.localize(16,null)},\"editor.maxTokenizationLineLength\":{type:\"integer\",default:2e4,description:D.localize(17,null)},\"editor.experimental.asyncTokenization\":{type:\"boolean\",default:!1,description:D.localize(18,null),tags:[\"experimental\"]},\"editor.experimental.asyncTokenizationLogging\":{type:\"boolean\",default:!1,description:D.localize(19,null)},\"editor.experimental.asyncTokenizationVerification\":{type:\"boolean\",default:!1,description:D.localize(20,null),tags:[\"experimental\"]},\"editor.language.brackets\":{type:[\"array\",\"null\"],default:null,description:D.localize(21,null),items:{type:\"array\",items:[{type:\"string\",description:D.localize(22,null)},{type:\"string\",description:D.localize(23,null)}]}},\"editor.language.colorizedBracketPairs\":{type:[\"array\",\"null\"],default:null,description:D.localize(24,null),items:{type:\"array\",items:[{type:\"string\",description:D.localize(25,null)},{type:\"string\",description:D.localize(26,null)}]}},\"diffEditor.maxComputationTime\":{type:\"number\",default:L.diffEditorDefaultOptions.maxComputationTime,description:D.localize(27,null)},\"diffEditor.maxFileSize\":{type:\"number\",default:L.diffEditorDefaultOptions.maxFileSize,description:D.localize(28,null)},\"diffEditor.renderSideBySide\":{type:\"boolean\",default:L.diffEditorDefaultOptions.renderSideBySide,description:D.localize(29,null)},\"diffEditor.renderSideBySideInlineBreakpoint\":{type:\"number\",default:L.diffEditorDefaultOptions.renderSideBySideInlineBreakpoint,description:D.localize(30,null)},\"diffEditor.useInlineViewWhenSpaceIsLimited\":{type:\"boolean\",default:L.diffEditorDefaultOptions.useInlineViewWhenSpaceIsLimited,description:D.localize(31,null)},\"diffEditor.renderMarginRevertIcon\":{type:\"boolean\",default:L.diffEditorDefaultOptions.renderMarginRevertIcon,description:D.localize(32,null)},\"diffEditor.ignoreTrimWhitespace\":{type:\"boolean\",default:L.diffEditorDefaultOptions.ignoreTrimWhitespace,description:D.localize(33,null)},\"diffEditor.renderIndicators\":{type:\"boolean\",default:L.diffEditorDefaultOptions.renderIndicators,description:D.localize(34,null)},\"diffEditor.codeLens\":{type:\"boolean\",default:L.diffEditorDefaultOptions.diffCodeLens,description:D.localize(35,null)},\"diffEditor.wordWrap\":{type:\"string\",enum:[\"off\",\"on\",\"inherit\"],default:L.diffEditorDefaultOptions.diffWordWrap,markdownEnumDescriptions:[D.localize(36,null),D.localize(37,null),D.localize(38,null,\"`#editor.wordWrap#`\")]},\"diffEditor.diffAlgorithm\":{type:\"string\",enum:[\"legacy\",\"advanced\"],default:L.diffEditorDefaultOptions.diffAlgorithm,markdownEnumDescriptions:[D.localize(39,null),D.localize(40,null)],tags:[\"experimental\"]},\"diffEditor.hideUnchangedRegions.enabled\":{type:\"boolean\",default:L.diffEditorDefaultOptions.hideUnchangedRegions.enabled,markdownDescription:D.localize(41,null,\"`#diffEditor.experimental.useVersion2#`\")},\"diffEditor.hideUnchangedRegions.revealLineCount\":{type:\"integer\",default:L.diffEditorDefaultOptions.hideUnchangedRegions.revealLineCount,markdownDescription:D.localize(42,null,\"`#diffEditor.experimental.useVersion2#`\"),minimum:1},\"diffEditor.hideUnchangedRegions.minimumLineCount\":{type:\"integer\",default:L.diffEditorDefaultOptions.hideUnchangedRegions.minimumLineCount,markdownDescription:D.localize(43,null,\"`#diffEditor.experimental.useVersion2#`\"),minimum:1},\"diffEditor.hideUnchangedRegions.contextLineCount\":{type:\"integer\",default:L.diffEditorDefaultOptions.hideUnchangedRegions.contextLineCount,markdownDescription:D.localize(44,null,\"`#diffEditor.experimental.useVersion2#`\"),minimum:1},\"diffEditor.experimental.showMoves\":{type:\"boolean\",default:L.diffEditorDefaultOptions.experimental.showMoves,markdownDescription:D.localize(45,null,\"`#diffEditor.experimental.useVersion2#`\")},\"diffEditor.experimental.useVersion2\":{type:\"boolean\",default:!0,description:D.localize(46,null),tags:[\"experimental\"]},\"diffEditor.experimental.showEmptyDecorations\":{type:\"boolean\",default:L.diffEditorDefaultOptions.experimental.showEmptyDecorations,description:D.localize(47,null)}}});function g(a){return typeof a.type<\"u\"||typeof a.anyOf<\"u\"}for(const a of k.editorOptionsRegistry){const u=a.schema;if(typeof u<\"u\")if(g(u))_.properties[`editor.${a.name}`]=u;else for(const h in u)Object.hasOwnProperty.call(u,h)&&(_.properties[h]=u[h])}let C=null;function s(){return C===null&&(C=Object.create(null),Object.keys(_.properties).forEach(a=>{C[a]=!0})),C}function i(a){return s()[`editor.${a}`]||!1}e.isEditorConfigurationKey=i;function n(a){return s()[`diffEditor.${a}`]||!1}e.isDiffEditorConfigurationKey=n,f.Registry.as(S.Extensions.Configuration).registerConfiguration(_)}),define(ne[78],se([1,0,628,6,37,107,98]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PLAINTEXT_EXTENSION=e.PLAINTEXT_LANGUAGE_ID=e.ModesRegistry=e.EditorModesRegistry=e.Extensions=void 0,e.Extensions={ModesRegistry:\"editor.modesRegistry\"};class f{constructor(){this._onDidChangeLanguages=new k.Emitter,this.onDidChangeLanguages=this._onDidChangeLanguages.event,this._languages=[]}registerLanguage(g){return this._languages.push(g),this._onDidChangeLanguages.fire(void 0),{dispose:()=>{for(let C=0,s=this._languages.length;C<s;C++)if(this._languages[C]===g){this._languages.splice(C,1);return}}}}getLanguages(){return this._languages}}e.EditorModesRegistry=f,e.ModesRegistry=new f,y.Registry.add(e.Extensions.ModesRegistry,e.ModesRegistry),e.PLAINTEXT_LANGUAGE_ID=\"plaintext\",e.PLAINTEXT_EXTENSION=\".txt\",e.ModesRegistry.registerLanguage({id:e.PLAINTEXT_LANGUAGE_ID,extensions:[e.PLAINTEXT_EXTENSION],aliases:[L.localize(0,null),\"text\"],mimetypes:[D.Mimes.text]}),y.Registry.as(S.Extensions.Configuration).registerDefaultConfigurations([{overrides:{\"[plaintext]\":{\"editor.unicodeHighlight.ambiguousCharacters\":!1,\"editor.unicodeHighlight.invisibleCharacters\":!1}}}])}),define(ne[32],se([1,0,6,2,11,147,110,125,499,595,500,503,230,8,28,41,50,78,502]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ResolvedLanguageConfiguration=e.LanguageConfigurationRegistry=e.LanguageConfigurationChangeEvent=e.getScopedLineTokens=e.getIndentationAtPosition=e.LanguageConfigurationService=e.ILanguageConfigurationService=e.LanguageConfigurationServiceChangeEvent=void 0;class c{constructor(A){this.languageId=A}affects(A){return this.languageId?this.languageId===A:!0}}e.LanguageConfigurationServiceChangeEvent=c,e.ILanguageConfigurationService=(0,n.createDecorator)(\"languageConfigurationService\");let o=class extends k.Disposable{constructor(A,N){super(),this.configurationService=A,this.languageService=N,this._registry=this._register(new P),this.onDidChangeEmitter=this._register(new L.Emitter),this.onDidChange=this.onDidChangeEmitter.event,this.configurations=new Map;const F=new Set(Object.values(l));this._register(this.configurationService.onDidChangeConfiguration(O=>{const W=O.change.keys.some(j=>F.has(j)),U=O.change.overrides.filter(([j,R])=>R.some(K=>F.has(K))).map(([j])=>j);if(W)this.configurations.clear(),this.onDidChangeEmitter.fire(new c(void 0));else for(const j of U)this.languageService.isRegisteredLanguageId(j)&&(this.configurations.delete(j),this.onDidChangeEmitter.fire(new c(j)))})),this._register(this._registry.onDidChange(O=>{this.configurations.delete(O.languageId),this.onDidChangeEmitter.fire(new c(O.languageId))}))}register(A,N,F){return this._registry.register(A,N,F)}getLanguageConfiguration(A){let N=this.configurations.get(A);return N||(N=d(A,this._registry,this.configurationService,this.languageService),this.configurations.set(A,N)),N}};e.LanguageConfigurationService=o,e.LanguageConfigurationService=o=ke([fe(0,t.IConfigurationService),fe(1,a.ILanguageService)],o);function d(T,A,N,F){let O=A.getLanguageConfiguration(T);if(!O){if(!F.isRegisteredLanguageId(T))return new x(T,{});O=new x(T,{})}const W=p(O.languageId,N),U=E([O.underlyingConfig,W]);return new x(O.languageId,U)}const l={brackets:\"editor.language.brackets\",colorizedBracketPairs:\"editor.language.colorizedBracketPairs\"};function p(T,A){const N=A.getValue(l.brackets,{overrideIdentifier:T}),F=A.getValue(l.colorizedBracketPairs,{overrideIdentifier:T});return{brackets:m(N),colorizedBracketPairs:m(F)}}function m(T){if(Array.isArray(T))return T.map(A=>{if(!(!Array.isArray(A)||A.length!==2))return[A[0],A[1]]}).filter(A=>!!A)}function v(T,A,N){const F=T.getLineContent(A);let O=y.getLeadingWhitespace(F);return O.length>N-1&&(O=O.substring(0,N-1)),O}e.getIndentationAtPosition=v;function b(T,A,N){T.tokenization.forceTokenization(A);const F=T.tokenization.getLineTokens(A),O=typeof N>\"u\"?T.getLineMaxColumn(A)-1:N-1;return(0,f.createScopedLineTokens)(F,O)}e.getScopedLineTokens=b;class w{constructor(A){this.languageId=A,this._resolved=null,this._entries=[],this._order=0,this._resolved=null}register(A,N){const F=new I(A,N,++this._order);return this._entries.push(F),this._resolved=null,(0,k.toDisposable)(()=>{for(let O=0;O<this._entries.length;O++)if(this._entries[O]===F){this._entries.splice(O,1),this._resolved=null;break}})}getResolvedConfiguration(){if(!this._resolved){const A=this._resolve();A&&(this._resolved=new x(this.languageId,A))}return this._resolved}_resolve(){return this._entries.length===0?null:(this._entries.sort(I.cmp),E(this._entries.map(A=>A.configuration)))}}function E(T){let A={comments:void 0,brackets:void 0,wordPattern:void 0,indentationRules:void 0,onEnterRules:void 0,autoClosingPairs:void 0,surroundingPairs:void 0,autoCloseBefore:void 0,folding:void 0,colorizedBracketPairs:void 0,__electricCharacterSupport:void 0};for(const N of T)A={comments:N.comments||A.comments,brackets:N.brackets||A.brackets,wordPattern:N.wordPattern||A.wordPattern,indentationRules:N.indentationRules||A.indentationRules,onEnterRules:N.onEnterRules||A.onEnterRules,autoClosingPairs:N.autoClosingPairs||A.autoClosingPairs,surroundingPairs:N.surroundingPairs||A.surroundingPairs,autoCloseBefore:N.autoCloseBefore||A.autoCloseBefore,folding:N.folding||A.folding,colorizedBracketPairs:N.colorizedBracketPairs||A.colorizedBracketPairs,__electricCharacterSupport:N.__electricCharacterSupport||A.__electricCharacterSupport};return A}class I{constructor(A,N,F){this.configuration=A,this.priority=N,this.order=F}static cmp(A,N){return A.priority===N.priority?A.order-N.order:A.priority-N.priority}}class M{constructor(A){this.languageId=A}}e.LanguageConfigurationChangeEvent=M;class P extends k.Disposable{constructor(){super(),this._entries=new Map,this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,this._register(this.register(h.PLAINTEXT_LANGUAGE_ID,{brackets:[[\"(\",\")\"],[\"[\",\"]\"],[\"{\",\"}\"]],surroundingPairs:[{open:\"{\",close:\"}\"},{open:\"[\",close:\"]\"},{open:\"(\",close:\")\"},{open:\"<\",close:\">\"},{open:'\"',close:'\"'},{open:\"'\",close:\"'\"},{open:\"`\",close:\"`\"}],colorizedBracketPairs:[],folding:{offSide:!0}},0))}register(A,N,F=0){let O=this._entries.get(A);O||(O=new w(A),this._entries.set(A,O));const W=O.register(N,F);return this._onDidChange.fire(new M(A)),(0,k.toDisposable)(()=>{W.dispose(),this._onDidChange.fire(new M(A))})}getLanguageConfiguration(A){const N=this._entries.get(A);return N?.getResolvedConfiguration()||null}}e.LanguageConfigurationRegistry=P;class x{constructor(A,N){this.languageId=A,this.underlyingConfig=N,this._brackets=null,this._electricCharacter=null,this._onEnterSupport=this.underlyingConfig.brackets||this.underlyingConfig.indentationRules||this.underlyingConfig.onEnterRules?new s.OnEnterSupport(this.underlyingConfig):null,this.comments=x._handleComments(this.underlyingConfig),this.characterPair=new _.CharacterPairSupport(this.underlyingConfig),this.wordDefinition=this.underlyingConfig.wordPattern||D.DEFAULT_WORD_REGEXP,this.indentationRules=this.underlyingConfig.indentationRules,this.underlyingConfig.indentationRules?this.indentRulesSupport=new C.IndentRulesSupport(this.underlyingConfig.indentationRules):this.indentRulesSupport=null,this.foldingRules=this.underlyingConfig.folding||{},this.bracketsNew=new r.LanguageBracketsConfiguration(A,this.underlyingConfig)}getWordDefinition(){return(0,D.ensureValidWordDefinition)(this.wordDefinition)}get brackets(){return!this._brackets&&this.underlyingConfig.brackets&&(this._brackets=new i.RichEditBrackets(this.languageId,this.underlyingConfig.brackets)),this._brackets}get electricCharacter(){return this._electricCharacter||(this._electricCharacter=new g.BracketElectricCharacterSupport(this.brackets)),this._electricCharacter}onEnter(A,N,F,O){return this._onEnterSupport?this._onEnterSupport.onEnter(A,N,F,O):null}getAutoClosingPairs(){return new S.AutoClosingPairs(this.characterPair.getAutoClosingPairs())}getAutoCloseBeforeSet(A){return this.characterPair.getAutoCloseBeforeSet(A)}getSurroundingPairs(){return this.characterPair.getSurroundingPairs()}static _handleComments(A){const N=A.comments;if(!N)return null;const F={};if(N.lineComment&&(F.lineCommentToken=N.lineComment),N.blockComment){const[O,W]=N.blockComment;F.blockCommentStartToken=O,F.blockCommentEndToken=W}return F}}e.ResolvedLanguageConfiguration=x,(0,u.registerSingleton)(e.ILanguageConfigurationService,o,1)}),define(ne[242],se([1,0,13,2,317,587,5,32,627,51,187,14,70,58,9,18,109,66]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditorWorkerClient=e.EditorWorkerHost=e.EditorWorkerService=void 0;const r=60*1e3,c=5*60*1e3;function o(E,I){const M=E.getModel(I);return!(!M||M.isTooLargeForSyncing())}let d=class extends k.Disposable{constructor(I,M,P,x,T){super(),this._modelService=I,this._workerManager=this._register(new p(this._modelService,x)),this._logService=P,this._register(T.linkProvider.register({language:\"*\",hasAccessToAllModels:!0},{provideLinks:(A,N)=>o(this._modelService,A.uri)?this._workerManager.withWorker().then(F=>F.computeLinks(A.uri)).then(F=>F&&{links:F}):Promise.resolve({links:[]})})),this._register(T.completionProvider.register(\"*\",new l(this._workerManager,M,this._modelService,x)))}dispose(){super.dispose()}canComputeUnicodeHighlights(I){return o(this._modelService,I)}computedUnicodeHighlights(I,M,P){return this._workerManager.withWorker().then(x=>x.computedUnicodeHighlights(I,M,P))}computeDiff(I,M,P,x){return we(this,void 0,void 0,function*(){const T=yield this._workerManager.withWorker().then(F=>F.computeDiff(I,M,P,x));if(!T)return null;return{identical:T.identical,quitEarly:T.quitEarly,changes:N(T.changes),moves:T.moves.map(F=>new u.MovedText(new u.SimpleLineRangeMapping(new h.LineRange(F[0],F[1]),new h.LineRange(F[2],F[3])),N(F[4])))};function N(F){return F.map(O=>{var W;return new u.LineRangeMapping(new h.LineRange(O[0],O[1]),new h.LineRange(O[2],O[3]),(W=O[4])===null||W===void 0?void 0:W.map(U=>new u.RangeMapping(new S.Range(U[0],U[1],U[2],U[3]),new S.Range(U[4],U[5],U[6],U[7]))))})}})}computeMoreMinimalEdits(I,M,P=!1){if((0,s.isNonEmptyArray)(M)){if(!o(this._modelService,I))return Promise.resolve(M);const x=n.StopWatch.create(),T=this._workerManager.withWorker().then(A=>A.computeMoreMinimalEdits(I,M,P));return T.finally(()=>this._logService.trace(\"FORMAT#computeMoreMinimalEdits\",I.toString(!0),x.elapsed())),Promise.race([T,(0,L.timeout)(1e3).then(()=>M)])}else return Promise.resolve(void 0)}canNavigateValueSet(I){return o(this._modelService,I)}navigateValueSet(I,M,P){return this._workerManager.withWorker().then(x=>x.navigateValueSet(I,M,P))}canComputeWordRanges(I){return o(this._modelService,I)}computeWordRanges(I,M){return this._workerManager.withWorker().then(P=>P.computeWordRanges(I,M))}};e.EditorWorkerService=d,e.EditorWorkerService=d=ke([fe(0,g.IModelService),fe(1,C.ITextResourceConfigurationService),fe(2,i.ILogService),fe(3,f.ILanguageConfigurationService),fe(4,a.ILanguageFeaturesService)],d);class l{constructor(I,M,P,x){this.languageConfigurationService=x,this._debugDisplayName=\"wordbasedCompletions\",this._workerManager=I,this._configurationService=M,this._modelService=P}provideCompletionItems(I,M){return we(this,void 0,void 0,function*(){const P=this._configurationService.getValue(I.uri,M,\"editor\");if(!P.wordBasedSuggestions)return;const x=[];if(P.wordBasedSuggestionsMode===\"currentDocument\")o(this._modelService,I.uri)&&x.push(I.uri);else for(const U of this._modelService.getModels())o(this._modelService,U.uri)&&(U===I?x.unshift(U.uri):(P.wordBasedSuggestionsMode===\"allDocuments\"||U.getLanguageId()===I.getLanguageId())&&x.push(U.uri));if(x.length===0)return;const T=this.languageConfigurationService.getLanguageConfiguration(I.getLanguageId()).getWordDefinition(),A=I.getWordAtPosition(M),N=A?new S.Range(M.lineNumber,A.startColumn,M.lineNumber,A.endColumn):S.Range.fromPositions(M),F=N.setEndPosition(M.lineNumber,M.column),W=yield(yield this._workerManager.withWorker()).textualSuggest(x,A?.word,T);if(W)return{duration:W.duration,suggestions:W.words.map(U=>({kind:18,label:U,insertText:U,range:{insert:F,replace:N}}))}})}}class p extends k.Disposable{constructor(I,M){super(),this.languageConfigurationService=M,this._modelService=I,this._editorWorkerClient=null,this._lastWorkerUsedTime=new Date().getTime(),this._register(new L.IntervalTimer).cancelAndSet(()=>this._checkStopIdleWorker(),Math.round(c/2)),this._register(this._modelService.onModelRemoved(x=>this._checkStopEmptyWorker()))}dispose(){this._editorWorkerClient&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null),super.dispose()}_checkStopEmptyWorker(){if(!this._editorWorkerClient)return;this._modelService.getModels().length===0&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}_checkStopIdleWorker(){if(!this._editorWorkerClient)return;new Date().getTime()-this._lastWorkerUsedTime>c&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}withWorker(){return this._lastWorkerUsedTime=new Date().getTime(),this._editorWorkerClient||(this._editorWorkerClient=new w(this._modelService,!1,\"editorWorkerService\",this.languageConfigurationService)),Promise.resolve(this._editorWorkerClient)}}class m extends k.Disposable{constructor(I,M,P){if(super(),this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),this._proxy=I,this._modelService=M,!P){const x=new L.IntervalTimer;x.cancelAndSet(()=>this._checkStopModelSync(),Math.round(r/2)),this._register(x)}}dispose(){for(const I in this._syncedModels)(0,k.dispose)(this._syncedModels[I]);this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),super.dispose()}ensureSyncedResources(I,M){for(const P of I){const x=P.toString();this._syncedModels[x]||this._beginModelSync(P,M),this._syncedModels[x]&&(this._syncedModelsLastUsedTime[x]=new Date().getTime())}}_checkStopModelSync(){const I=new Date().getTime(),M=[];for(const P in this._syncedModelsLastUsedTime)I-this._syncedModelsLastUsedTime[P]>r&&M.push(P);for(const P of M)this._stopModelSync(P)}_beginModelSync(I,M){const P=this._modelService.getModel(I);if(!P||!M&&P.isTooLargeForSyncing())return;const x=I.toString();this._proxy.acceptNewModel({url:P.uri.toString(),lines:P.getLinesContent(),EOL:P.getEOL(),versionId:P.getVersionId()});const T=new k.DisposableStore;T.add(P.onDidChangeContent(A=>{this._proxy.acceptModelChanged(x.toString(),A)})),T.add(P.onWillDispose(()=>{this._stopModelSync(x)})),T.add((0,k.toDisposable)(()=>{this._proxy.acceptRemovedModel(x)})),this._syncedModels[x]=T}_stopModelSync(I){const M=this._syncedModels[I];delete this._syncedModels[I],delete this._syncedModelsLastUsedTime[I],(0,k.dispose)(M)}}class v{constructor(I){this._instance=I,this._proxyObj=Promise.resolve(this._instance)}dispose(){this._instance.dispose()}getProxyObject(){return this._proxyObj}}class b{constructor(I){this._workerClient=I}fhr(I,M){return this._workerClient.fhr(I,M)}}e.EditorWorkerHost=b;class w extends k.Disposable{constructor(I,M,P,x){super(),this.languageConfigurationService=x,this._disposed=!1,this._modelService=I,this._keepIdleModels=M,this._workerFactory=new D.DefaultWorkerFactory(P),this._worker=null,this._modelManager=null}fhr(I,M){throw new Error(\"Not implemented!\")}_getOrCreateWorker(){if(!this._worker)try{this._worker=this._register(new y.SimpleWorkerClient(this._workerFactory,\"vs/editor/common/services/editorSimpleWorker\",new b(this)))}catch(I){(0,y.logOnceWebWorkerWarning)(I),this._worker=new v(new _.EditorSimpleWorker(new b(this),null))}return this._worker}_getProxy(){return this._getOrCreateWorker().getProxyObject().then(void 0,I=>((0,y.logOnceWebWorkerWarning)(I),this._worker=new v(new _.EditorSimpleWorker(new b(this),null)),this._getOrCreateWorker().getProxyObject()))}_getOrCreateModelManager(I){return this._modelManager||(this._modelManager=this._register(new m(I,this._modelService,this._keepIdleModels))),this._modelManager}_withSyncedResources(I,M=!1){return we(this,void 0,void 0,function*(){return this._disposed?Promise.reject((0,t.canceled)()):this._getProxy().then(P=>(this._getOrCreateModelManager(P).ensureSyncedResources(I,M),P))})}computedUnicodeHighlights(I,M,P){return this._withSyncedResources([I]).then(x=>x.computeUnicodeHighlights(I.toString(),M,P))}computeDiff(I,M,P,x){return this._withSyncedResources([I,M],!0).then(T=>T.computeDiff(I.toString(),M.toString(),P,x))}computeMoreMinimalEdits(I,M,P){return this._withSyncedResources([I]).then(x=>x.computeMoreMinimalEdits(I.toString(),M,P))}computeLinks(I){return this._withSyncedResources([I]).then(M=>M.computeLinks(I.toString()))}computeDefaultDocumentColors(I){return this._withSyncedResources([I]).then(M=>M.computeDefaultDocumentColors(I.toString()))}textualSuggest(I,M,P){return we(this,void 0,void 0,function*(){const x=yield this._withSyncedResources(I),T=P.source,A=P.flags;return x.textualSuggest(I.map(N=>N.toString()),M,T,A)})}computeWordRanges(I,M){return this._withSyncedResources([I]).then(P=>{const x=this._modelService.getModel(I);if(!x)return Promise.resolve(null);const T=this.languageConfigurationService.getLanguageConfiguration(x.getLanguageId()).getWordDefinition(),A=T.source,N=T.flags;return P.computeWordRanges(I.toString(),M,A,N)})}navigateValueSet(I,M,P){return this._withSyncedResources([I]).then(x=>{const T=this._modelService.getModel(I);if(!T)return null;const A=this.languageConfigurationService.getLanguageConfiguration(T.getLanguageId()).getWordDefinition(),N=A.source,F=A.flags;return x.navigateValueSet(I.toString(),M,P,N,F)})}dispose(){super.dispose(),this._disposed=!0}}e.EditorWorkerClient=w}),define(ne[773],se([1,0,47,242]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createWebWorker=void 0;function y(S,f,_){return new D(S,f,_)}e.createWebWorker=y;class D extends k.EditorWorkerClient{constructor(f,_,g){super(f,g.keepIdleModels||!1,g.label,_),this._foreignModuleId=g.moduleId,this._foreignModuleCreateData=g.createData||null,this._foreignModuleHost=g.host||null,this._foreignProxy=null}fhr(f,_){if(!this._foreignModuleHost||typeof this._foreignModuleHost[f]!=\"function\")return Promise.reject(new Error(\"Missing method \"+f+\" or missing main thread foreign host.\"));try{return Promise.resolve(this._foreignModuleHost[f].apply(this._foreignModuleHost,_))}catch(g){return Promise.reject(g)}}_getForeignProxy(){return this._foreignProxy||(this._foreignProxy=this._getProxy().then(f=>{const _=this._foreignModuleHost?(0,L.getAllMethodNames)(this._foreignModuleHost):[];return f.loadForeignModule(this._foreignModuleId,this._foreignModuleCreateData,_).then(g=>{this._foreignModuleCreateData=null;const C=(n,t)=>f.fmr(n,t),s=(n,t)=>function(){const a=Array.prototype.slice.call(arguments,0);return t(n,a)},i={};for(const n of g)i[n]=s(n,C);return i})})),this._foreignProxy}getProxy(){return this._getForeignProxy()}withSyncedResources(f){return this._withSyncedResources(f).then(_=>this.getProxy())}}}),define(ne[243],se([1,0,11,110,125,32]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getIndentMetadata=e.getIndentActionForType=e.getIndentForEnter=e.getGoodIndentForLine=e.getInheritIndentForLine=void 0;function S(i,n,t){const a=i.tokenization.getLanguageIdAtPosition(n,0);if(n>1){let u,h=-1;for(u=n-1;u>=1;u--){if(i.tokenization.getLanguageIdAtPosition(u,0)!==a)return h;const r=i.getLineContent(u);if(t.shouldIgnore(r)||/^\\s+$/.test(r)||r===\"\"){h=u;continue}return u}}return-1}function f(i,n,t,a=!0,u){if(i<4)return null;const h=u.getLanguageConfiguration(n.tokenization.getLanguageId()).indentRulesSupport;if(!h)return null;if(t<=1)return{indentation:\"\",action:null};for(let o=t-1;o>0&&n.getLineContent(o)===\"\";o--)if(o===1)return{indentation:\"\",action:null};const r=S(n,t,h);if(r<0)return null;if(r<1)return{indentation:\"\",action:null};const c=n.getLineContent(r);if(h.shouldIncrease(c)||h.shouldIndentNextLine(c))return{indentation:L.getLeadingWhitespace(c),action:k.IndentAction.Indent,line:r};if(h.shouldDecrease(c))return{indentation:L.getLeadingWhitespace(c),action:null,line:r};{if(r===1)return{indentation:L.getLeadingWhitespace(n.getLineContent(r)),action:null,line:r};const o=r-1,d=h.getIndentMetadata(n.getLineContent(o));if(!(d&3)&&d&4){let l=0;for(let p=o-1;p>0;p--)if(!h.shouldIndentNextLine(n.getLineContent(p))){l=p;break}return{indentation:L.getLeadingWhitespace(n.getLineContent(l+1)),action:null,line:l+1}}if(a)return{indentation:L.getLeadingWhitespace(n.getLineContent(r)),action:null,line:r};for(let l=r;l>0;l--){const p=n.getLineContent(l);if(h.shouldIncrease(p))return{indentation:L.getLeadingWhitespace(p),action:k.IndentAction.Indent,line:l};if(h.shouldIndentNextLine(p)){let m=0;for(let v=l-1;v>0;v--)if(!h.shouldIndentNextLine(n.getLineContent(l))){m=v;break}return{indentation:L.getLeadingWhitespace(n.getLineContent(m+1)),action:null,line:m+1}}else if(h.shouldDecrease(p))return{indentation:L.getLeadingWhitespace(p),action:null,line:l}}return{indentation:L.getLeadingWhitespace(n.getLineContent(1)),action:null,line:1}}}e.getInheritIndentForLine=f;function _(i,n,t,a,u,h){if(i<4)return null;const r=h.getLanguageConfiguration(t);if(!r)return null;const c=h.getLanguageConfiguration(t).indentRulesSupport;if(!c)return null;const o=f(i,n,a,void 0,h),d=n.getLineContent(a);if(o){const l=o.line;if(l!==void 0){let p=!0;for(let m=l;m<a-1;m++)if(!/^\\s*$/.test(n.getLineContent(m))){p=!1;break}if(p){const m=r.onEnter(i,\"\",n.getLineContent(l),\"\");if(m){let v=L.getLeadingWhitespace(n.getLineContent(l));return m.removeText&&(v=v.substring(0,v.length-m.removeText)),m.indentAction===k.IndentAction.Indent||m.indentAction===k.IndentAction.IndentOutdent?v=u.shiftIndent(v):m.indentAction===k.IndentAction.Outdent&&(v=u.unshiftIndent(v)),c.shouldDecrease(d)&&(v=u.unshiftIndent(v)),m.appendText&&(v+=m.appendText),L.getLeadingWhitespace(v)}}}return c.shouldDecrease(d)?o.action===k.IndentAction.Indent?o.indentation:u.unshiftIndent(o.indentation):o.action===k.IndentAction.Indent?u.shiftIndent(o.indentation):o.indentation}return null}e.getGoodIndentForLine=_;function g(i,n,t,a,u){if(i<4)return null;n.tokenization.forceTokenization(t.startLineNumber);const h=n.tokenization.getLineTokens(t.startLineNumber),r=(0,y.createScopedLineTokens)(h,t.startColumn-1),c=r.getLineContent();let o=!1,d;r.firstCharOffset>0&&h.getLanguageId(0)!==r.languageId?(o=!0,d=c.substr(0,t.startColumn-1-r.firstCharOffset)):d=h.getLineContent().substring(0,t.startColumn-1);let l;t.isEmpty()?l=c.substr(t.startColumn-1-r.firstCharOffset):l=(0,D.getScopedLineTokens)(n,t.endLineNumber,t.endColumn).getLineContent().substr(t.endColumn-1-r.firstCharOffset);const p=u.getLanguageConfiguration(r.languageId).indentRulesSupport;if(!p)return null;const m=d,v=L.getLeadingWhitespace(d),b={tokenization:{getLineTokens:M=>n.tokenization.getLineTokens(M),getLanguageId:()=>n.getLanguageId(),getLanguageIdAtPosition:(M,P)=>n.getLanguageIdAtPosition(M,P)},getLineContent:M=>M===t.startLineNumber?m:n.getLineContent(M)},w=L.getLeadingWhitespace(h.getLineContent()),E=f(i,b,t.startLineNumber+1,void 0,u);if(!E){const M=o?w:v;return{beforeEnter:M,afterEnter:M}}let I=o?w:E.indentation;return E.action===k.IndentAction.Indent&&(I=a.shiftIndent(I)),p.shouldDecrease(l)&&(I=a.unshiftIndent(I)),{beforeEnter:o?w:v,afterEnter:I}}e.getIndentForEnter=g;function C(i,n,t,a,u,h){if(i<4)return null;const r=(0,D.getScopedLineTokens)(n,t.startLineNumber,t.startColumn);if(r.firstCharOffset)return null;const c=h.getLanguageConfiguration(r.languageId).indentRulesSupport;if(!c)return null;const o=r.getLineContent(),d=o.substr(0,t.startColumn-1-r.firstCharOffset);let l;if(t.isEmpty()?l=o.substr(t.startColumn-1-r.firstCharOffset):l=(0,D.getScopedLineTokens)(n,t.endLineNumber,t.endColumn).getLineContent().substr(t.endColumn-1-r.firstCharOffset),!c.shouldDecrease(d+l)&&c.shouldDecrease(d+a+l)){const p=f(i,n,t.startLineNumber,!1,h);if(!p)return null;let m=p.indentation;return p.action!==k.IndentAction.Indent&&(m=u.unshiftIndent(m)),m}return null}e.getIndentActionForType=C;function s(i,n,t){const a=t.getLanguageConfiguration(i.getLanguageId()).indentRulesSupport;return!a||n<1||n>i.getLineCount()?null:a.getIndentMetadata(i.getLineContent(n))}e.getIndentMetadata=s}),define(ne[244],se([1,0,110,32]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getEnterAction=void 0;function y(D,S,f,_){const g=(0,k.getScopedLineTokens)(S,f.startLineNumber,f.startColumn),C=_.getLanguageConfiguration(g.languageId);if(!C)return null;const s=g.getLineContent(),i=s.substr(0,f.startColumn-1-g.firstCharOffset);let n;f.isEmpty()?n=s.substr(f.startColumn-1-g.firstCharOffset):n=(0,k.getScopedLineTokens)(S,f.endLineNumber,f.endColumn).getLineContent().substr(f.endColumn-1-g.firstCharOffset);let t=\"\";if(f.startLineNumber>1&&g.firstCharOffset===0){const o=(0,k.getScopedLineTokens)(S,f.startLineNumber-1);o.languageId===g.languageId&&(t=o.getLineContent())}const a=C.onEnter(D,t,i,n);if(!a)return null;const u=a.indentAction;let h=a.appendText;const r=a.removeText||0;h?u===L.IndentAction.Indent&&(h=\"\t\"+h):u===L.IndentAction.Indent||u===L.IndentAction.IndentOutdent?h=\"\t\":h=\"\";let c=(0,k.getIndentationAtPosition)(S,f.startLineNumber,f.startColumn);return r&&(c=c.substring(0,c.length-r)),{indentAction:u,appendText:h,removeText:r,indentation:c}}e.getEnterAction=y}),define(ne[245],se([1,0,11,82,5,24,244,32]),function(Q,e,L,k,y,D,S,f){\"use strict\";var _;Object.defineProperty(e,\"__esModule\",{value:!0}),e.ShiftCommand=void 0;const g=Object.create(null);function C(i,n){if(n<=0)return\"\";g[i]||(g[i]=[\"\",i]);const t=g[i];for(let a=t.length;a<=n;a++)t[a]=t[a-1]+i;return t[n]}let s=_=class{static unshiftIndent(n,t,a,u,h){const r=k.CursorColumns.visibleColumnFromColumn(n,t,a);if(h){const c=C(\" \",u),d=k.CursorColumns.prevIndentTabStop(r,u)/u;return C(c,d)}else{const c=\"\t\",d=k.CursorColumns.prevRenderTabStop(r,a)/a;return C(c,d)}}static shiftIndent(n,t,a,u,h){const r=k.CursorColumns.visibleColumnFromColumn(n,t,a);if(h){const c=C(\" \",u),d=k.CursorColumns.nextIndentTabStop(r,u)/u;return C(c,d)}else{const c=\"\t\",d=k.CursorColumns.nextRenderTabStop(r,a)/a;return C(c,d)}}constructor(n,t,a){this._languageConfigurationService=a,this._opts=t,this._selection=n,this._selectionId=null,this._useLastEditRangeForCursorEndPosition=!1,this._selectionStartColumnStaysPut=!1}_addEditOperation(n,t,a){this._useLastEditRangeForCursorEndPosition?n.addTrackedEditOperation(t,a):n.addEditOperation(t,a)}getEditOperations(n,t){const a=this._selection.startLineNumber;let u=this._selection.endLineNumber;this._selection.endColumn===1&&a!==u&&(u=u-1);const{tabSize:h,indentSize:r,insertSpaces:c}=this._opts,o=a===u;if(this._opts.useTabStops){this._selection.isEmpty()&&/^\\s*$/.test(n.getLineContent(a))&&(this._useLastEditRangeForCursorEndPosition=!0);let d=0,l=0;for(let p=a;p<=u;p++,d=l){l=0;const m=n.getLineContent(p);let v=L.firstNonWhitespaceIndex(m);if(this._opts.isUnshift&&(m.length===0||v===0)||!o&&!this._opts.isUnshift&&m.length===0)continue;if(v===-1&&(v=m.length),p>1&&k.CursorColumns.visibleColumnFromColumn(m,v+1,h)%r!==0&&n.tokenization.isCheapToTokenize(p-1)){const E=(0,S.getEnterAction)(this._opts.autoIndent,n,new y.Range(p-1,n.getLineMaxColumn(p-1),p-1,n.getLineMaxColumn(p-1)),this._languageConfigurationService);if(E){if(l=d,E.appendText)for(let I=0,M=E.appendText.length;I<M&&l<r&&E.appendText.charCodeAt(I)===32;I++)l++;E.removeText&&(l=Math.max(0,l-E.removeText));for(let I=0;I<l&&!(v===0||m.charCodeAt(v-1)!==32);I++)v--}}if(this._opts.isUnshift&&v===0)continue;let b;this._opts.isUnshift?b=_.unshiftIndent(m,v+1,h,r,c):b=_.shiftIndent(m,v+1,h,r,c),this._addEditOperation(t,new y.Range(p,1,p,v+1),b),p===a&&!this._selection.isEmpty()&&(this._selectionStartColumnStaysPut=this._selection.startColumn<=v+1)}}else{!this._opts.isUnshift&&this._selection.isEmpty()&&n.getLineLength(a)===0&&(this._useLastEditRangeForCursorEndPosition=!0);const d=c?C(\" \",r):\"\t\";for(let l=a;l<=u;l++){const p=n.getLineContent(l);let m=L.firstNonWhitespaceIndex(p);if(!(this._opts.isUnshift&&(p.length===0||m===0))&&!(!o&&!this._opts.isUnshift&&p.length===0)&&(m===-1&&(m=p.length),!(this._opts.isUnshift&&m===0)))if(this._opts.isUnshift){m=Math.min(m,r);for(let v=0;v<m;v++)if(p.charCodeAt(v)===9){m=v+1;break}this._addEditOperation(t,new y.Range(l,1,l,m+1),\"\")}else this._addEditOperation(t,new y.Range(l,1,l,1),d),l===a&&!this._selection.isEmpty()&&(this._selectionStartColumnStaysPut=this._selection.startColumn===1)}}this._selectionId=t.trackSelection(this._selection)}computeCursorState(n,t){if(this._useLastEditRangeForCursorEndPosition){const u=t.getInverseEditOperations()[0];return new D.Selection(u.range.endLineNumber,u.range.endColumn,u.range.endLineNumber,u.range.endColumn)}const a=t.getTrackedSelection(this._selectionId);if(this._selectionStartColumnStaysPut){const u=this._selection.startColumn;return a.startColumn<=u?a:a.getDirection()===0?new D.Selection(a.startLineNumber,u,a.endLineNumber,a.endColumn):new D.Selection(a.endLineNumber,a.endColumn,a.startLineNumber,u)}return a}};e.ShiftCommand=s,e.ShiftCommand=s=_=ke([fe(2,f.ILanguageConfigurationService)],s)}),define(ne[246],se([1,0,9,11,123,245,485,74,146,5,12,110,32,125,243,244]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CompositionOutcome=e.TypeWithAutoClosingCommand=e.TypeOperations=void 0;class u{static indent(m,v,b){if(v===null||b===null)return[];const w=[];for(let E=0,I=b.length;E<I;E++)w[E]=new D.ShiftCommand(b[E],{isUnshift:!1,tabSize:m.tabSize,indentSize:m.indentSize,insertSpaces:m.insertSpaces,useTabStops:m.useTabStops,autoIndent:m.autoIndent},m.languageConfigurationService);return w}static outdent(m,v,b){const w=[];for(let E=0,I=b.length;E<I;E++)w[E]=new D.ShiftCommand(b[E],{isUnshift:!0,tabSize:m.tabSize,indentSize:m.indentSize,insertSpaces:m.insertSpaces,useTabStops:m.useTabStops,autoIndent:m.autoIndent},m.languageConfigurationService);return w}static shiftIndent(m,v,b){return b=b||1,D.ShiftCommand.shiftIndent(v,v.length+b,m.tabSize,m.indentSize,m.insertSpaces)}static unshiftIndent(m,v,b){return b=b||1,D.ShiftCommand.unshiftIndent(v,v.length+b,m.tabSize,m.indentSize,m.insertSpaces)}static _distributedPaste(m,v,b,w){const E=[];for(let I=0,M=b.length;I<M;I++)E[I]=new y.ReplaceCommand(b[I],w[I]);return new f.EditOperationResult(0,E,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _simplePaste(m,v,b,w,E){const I=[];for(let M=0,P=b.length;M<P;M++){const x=b[M],T=x.getPosition();if(E&&!x.isEmpty()&&(E=!1),E&&w.indexOf(`\n`)!==w.length-1&&(E=!1),E){const A=new g.Range(T.lineNumber,1,T.lineNumber,1);I[M]=new y.ReplaceCommandThatPreservesSelection(A,w,x,!0)}else I[M]=new y.ReplaceCommand(x,w)}return new f.EditOperationResult(0,I,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _distributePasteToCursors(m,v,b,w,E){if(w||v.length===1)return null;if(E&&E.length===v.length)return E;if(m.multiCursorPaste===\"spread\"){b.charCodeAt(b.length-1)===10&&(b=b.substr(0,b.length-1)),b.charCodeAt(b.length-1)===13&&(b=b.substr(0,b.length-1));const I=k.splitLines(b);if(I.length===v.length)return I}return null}static paste(m,v,b,w,E,I){const M=this._distributePasteToCursors(m,b,w,E,I);return M?(b=b.sort(g.Range.compareRangesUsingStarts),this._distributedPaste(m,v,b,M)):this._simplePaste(m,v,b,w,E)}static _goodIndentForLine(m,v,b){let w=null,E=\"\";const I=(0,t.getInheritIndentForLine)(m.autoIndent,v,b,!1,m.languageConfigurationService);if(I)w=I.action,E=I.indentation;else if(b>1){let M;for(M=b-1;M>=1;M--){const T=v.getLineContent(M);if(k.lastNonWhitespaceIndex(T)>=0)break}if(M<1)return null;const P=v.getLineMaxColumn(M),x=(0,a.getEnterAction)(m.autoIndent,v,new g.Range(M,P,M,P),m.languageConfigurationService);x&&(E=x.indentation+x.appendText)}return w&&(w===s.IndentAction.Indent&&(E=u.shiftIndent(m,E)),w===s.IndentAction.Outdent&&(E=u.unshiftIndent(m,E)),E=m.normalizeIndentation(E)),E||null}static _replaceJumpToNextIndent(m,v,b,w){let E=\"\";const I=b.getStartPosition();if(m.insertSpaces){const M=m.visibleColumnFromColumn(v,I),P=m.indentSize,x=P-M%P;for(let T=0;T<x;T++)E+=\" \"}else E=\"\t\";return new y.ReplaceCommand(b,E,w)}static tab(m,v,b){const w=[];for(let E=0,I=b.length;E<I;E++){const M=b[E];if(M.isEmpty()){const P=v.getLineContent(M.startLineNumber);if(/^\\s*$/.test(P)&&v.tokenization.isCheapToTokenize(M.startLineNumber)){let x=this._goodIndentForLine(m,v,M.startLineNumber);x=x||\"\t\";const T=m.normalizeIndentation(x);if(!P.startsWith(T)){w[E]=new y.ReplaceCommand(new g.Range(M.startLineNumber,1,M.startLineNumber,P.length+1),T,!0);continue}}w[E]=this._replaceJumpToNextIndent(m,v,M,!0)}else{if(M.startLineNumber===M.endLineNumber){const P=v.getLineMaxColumn(M.startLineNumber);if(M.startColumn!==1||M.endColumn!==P){w[E]=this._replaceJumpToNextIndent(m,v,M,!1);continue}}w[E]=new D.ShiftCommand(M,{isUnshift:!1,tabSize:m.tabSize,indentSize:m.indentSize,insertSpaces:m.insertSpaces,useTabStops:m.useTabStops,autoIndent:m.autoIndent},m.languageConfigurationService)}}return w}static compositionType(m,v,b,w,E,I,M,P){const x=w.map(T=>this._compositionType(b,T,E,I,M,P));return new f.EditOperationResult(4,x,{shouldPushStackElementBefore:o(m,4),shouldPushStackElementAfter:!1})}static _compositionType(m,v,b,w,E,I){if(!v.isEmpty())return null;const M=v.getPosition(),P=Math.max(1,M.column-w),x=Math.min(m.getLineMaxColumn(M.lineNumber),M.column+E),T=new g.Range(M.lineNumber,P,M.lineNumber,x);return m.getValueInRange(T)===b&&I===0?null:new y.ReplaceCommandWithOffsetCursorState(T,b,0,I)}static _typeCommand(m,v,b){return b?new y.ReplaceCommandWithoutChangingPosition(m,v,!0):new y.ReplaceCommand(m,v,!0)}static _enter(m,v,b,w){if(m.autoIndent===0)return u._typeCommand(w,`\n`,b);if(!v.tokenization.isCheapToTokenize(w.getStartPosition().lineNumber)||m.autoIndent===1){const P=v.getLineContent(w.startLineNumber),x=k.getLeadingWhitespace(P).substring(0,w.startColumn-1);return u._typeCommand(w,`\n`+m.normalizeIndentation(x),b)}const E=(0,a.getEnterAction)(m.autoIndent,v,w,m.languageConfigurationService);if(E){if(E.indentAction===s.IndentAction.None)return u._typeCommand(w,`\n`+m.normalizeIndentation(E.indentation+E.appendText),b);if(E.indentAction===s.IndentAction.Indent)return u._typeCommand(w,`\n`+m.normalizeIndentation(E.indentation+E.appendText),b);if(E.indentAction===s.IndentAction.IndentOutdent){const P=m.normalizeIndentation(E.indentation),x=m.normalizeIndentation(E.indentation+E.appendText),T=`\n`+x+`\n`+P;return b?new y.ReplaceCommandWithoutChangingPosition(w,T,!0):new y.ReplaceCommandWithOffsetCursorState(w,T,-1,x.length-P.length,!0)}else if(E.indentAction===s.IndentAction.Outdent){const P=u.unshiftIndent(m,E.indentation);return u._typeCommand(w,`\n`+m.normalizeIndentation(P+E.appendText),b)}}const I=v.getLineContent(w.startLineNumber),M=k.getLeadingWhitespace(I).substring(0,w.startColumn-1);if(m.autoIndent>=4){const P=(0,t.getIndentForEnter)(m.autoIndent,v,w,{unshiftIndent:x=>u.unshiftIndent(m,x),shiftIndent:x=>u.shiftIndent(m,x),normalizeIndentation:x=>m.normalizeIndentation(x)},m.languageConfigurationService);if(P){let x=m.visibleColumnFromColumn(v,w.getEndPosition());const T=w.endColumn,A=v.getLineContent(w.endLineNumber),N=k.firstNonWhitespaceIndex(A);if(N>=0?w=w.setEndPosition(w.endLineNumber,Math.max(w.endColumn,N+1)):w=w.setEndPosition(w.endLineNumber,v.getLineMaxColumn(w.endLineNumber)),b)return new y.ReplaceCommandWithoutChangingPosition(w,`\n`+m.normalizeIndentation(P.afterEnter),!0);{let F=0;return T<=N+1&&(m.insertSpaces||(x=Math.ceil(x/m.indentSize)),F=Math.min(x+1-m.normalizeIndentation(P.afterEnter).length-1,0)),new y.ReplaceCommandWithOffsetCursorState(w,`\n`+m.normalizeIndentation(P.afterEnter),0,F,!0)}}}return u._typeCommand(w,`\n`+m.normalizeIndentation(M),b)}static _isAutoIndentType(m,v,b){if(m.autoIndent<4)return!1;for(let w=0,E=b.length;w<E;w++)if(!v.tokenization.isCheapToTokenize(b[w].getEndPosition().lineNumber))return!1;return!0}static _runAutoIndentType(m,v,b,w){const E=(0,i.getIndentationAtPosition)(v,b.startLineNumber,b.startColumn),I=(0,t.getIndentActionForType)(m.autoIndent,v,b,w,{shiftIndent:M=>u.shiftIndent(m,M),unshiftIndent:M=>u.unshiftIndent(m,M)},m.languageConfigurationService);if(I===null)return null;if(I!==m.normalizeIndentation(E)){const M=v.getLineFirstNonWhitespaceColumn(b.startLineNumber);return M===0?u._typeCommand(new g.Range(b.startLineNumber,1,b.endLineNumber,b.endColumn),m.normalizeIndentation(I)+w,!1):u._typeCommand(new g.Range(b.startLineNumber,1,b.endLineNumber,b.endColumn),m.normalizeIndentation(I)+v.getLineContent(b.startLineNumber).substring(M-1,b.startColumn-1)+w,!1)}return null}static _isAutoClosingOvertype(m,v,b,w,E){if(m.autoClosingOvertype===\"never\"||!m.autoClosingPairs.autoClosingPairsCloseSingleChar.has(E))return!1;for(let I=0,M=b.length;I<M;I++){const P=b[I];if(!P.isEmpty())return!1;const x=P.getPosition(),T=v.getLineContent(x.lineNumber);if(T.charAt(x.column-1)!==E)return!1;const N=(0,f.isQuote)(E);if((x.column>2?T.charCodeAt(x.column-2):0)===92&&N)return!1;if(m.autoClosingOvertype===\"auto\"){let O=!1;for(let W=0,U=w.length;W<U;W++){const j=w[W];if(x.lineNumber===j.startLineNumber&&x.column===j.startColumn){O=!0;break}}if(!O)return!1}}return!0}static _runAutoClosingOvertype(m,v,b,w,E){const I=[];for(let M=0,P=w.length;M<P;M++){const T=w[M].getPosition(),A=new g.Range(T.lineNumber,T.column,T.lineNumber,T.column+1);I[M]=new y.ReplaceCommand(A,E)}return new f.EditOperationResult(4,I,{shouldPushStackElementBefore:o(m,4),shouldPushStackElementAfter:!1})}static _isBeforeClosingBrace(m,v){const b=v.charAt(0),w=m.autoClosingPairs.autoClosingPairsOpenByStart.get(b)||[],E=m.autoClosingPairs.autoClosingPairsCloseByStart.get(b)||[],I=w.some(P=>v.startsWith(P.open)),M=E.some(P=>v.startsWith(P.close));return!I&&M}static _findAutoClosingPairOpen(m,v,b,w){const E=m.autoClosingPairs.autoClosingPairsOpenByEnd.get(w);if(!E)return null;let I=null;for(const M of E)if(I===null||M.open.length>I.open.length){let P=!0;for(const x of b)if(v.getValueInRange(new g.Range(x.lineNumber,x.column-M.open.length+1,x.lineNumber,x.column))+w!==M.open){P=!1;break}P&&(I=M)}return I}static _findContainedAutoClosingPair(m,v){if(v.open.length<=1)return null;const b=v.close.charAt(v.close.length-1),w=m.autoClosingPairs.autoClosingPairsCloseByEnd.get(b)||[];let E=null;for(const I of w)I.open!==v.open&&v.open.includes(I.open)&&v.close.endsWith(I.close)&&(!E||I.open.length>E.open.length)&&(E=I);return E}static _getAutoClosingPairClose(m,v,b,w,E){const I=(0,f.isQuote)(w),M=I?m.autoClosingQuotes:m.autoClosingBrackets,P=I?m.shouldAutoCloseBefore.quote:m.shouldAutoCloseBefore.bracket;if(M===\"never\")return null;for(const O of b)if(!O.isEmpty())return null;const x=b.map(O=>{const W=O.getPosition();return E?{lineNumber:W.lineNumber,beforeColumn:W.column-w.length,afterColumn:W.column}:{lineNumber:W.lineNumber,beforeColumn:W.column,afterColumn:W.column}}),T=this._findAutoClosingPairOpen(m,v,x.map(O=>new C.Position(O.lineNumber,O.beforeColumn)),w);if(!T)return null;const A=this._findContainedAutoClosingPair(m,T),N=A?A.close:\"\";let F=!0;for(const O of x){const{lineNumber:W,beforeColumn:U,afterColumn:j}=O,R=v.getLineContent(W),K=R.substring(0,U-1),G=R.substring(j-1);if(G.startsWith(N)||(F=!1),G.length>0){const H=G.charAt(0);if(!u._isBeforeClosingBrace(m,G)&&!P(H))return null}if(T.open.length===1&&(w===\"'\"||w==='\"')&&M!==\"always\"){const H=(0,_.getMapForWordSeparators)(m.wordSeparators);if(K.length>0){const B=K.charCodeAt(K.length-1);if(H.get(B)===0)return null}}if(!v.tokenization.isCheapToTokenize(W))return null;v.tokenization.forceTokenization(W);const Z=v.tokenization.getLineTokens(W),J=(0,n.createScopedLineTokens)(Z,U-1);if(!T.shouldAutoClose(J,U-J.firstCharOffset))return null;const X=T.findNeutralCharacter();if(X){const H=v.tokenization.getTokenTypeIfInsertingCharacter(W,U,X);if(!T.isOK(H))return null}}return F?T.close.substring(0,T.close.length-N.length):T.close}static _runAutoClosingOpenCharType(m,v,b,w,E,I,M){const P=[];for(let x=0,T=w.length;x<T;x++){const A=w[x];P[x]=new h(A,E,!I,M)}return new f.EditOperationResult(4,P,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}static _shouldSurroundChar(m,v){return(0,f.isQuote)(v)?m.autoSurround===\"quotes\"||m.autoSurround===\"languageDefined\":m.autoSurround===\"brackets\"||m.autoSurround===\"languageDefined\"}static _isSurroundSelectionType(m,v,b,w){if(!u._shouldSurroundChar(m,w)||!m.surroundingPairs.hasOwnProperty(w))return!1;const E=(0,f.isQuote)(w);for(const I of b){if(I.isEmpty())return!1;let M=!0;for(let P=I.startLineNumber;P<=I.endLineNumber;P++){const x=v.getLineContent(P),T=P===I.startLineNumber?I.startColumn-1:0,A=P===I.endLineNumber?I.endColumn-1:x.length,N=x.substring(T,A);if(/[^ \\t]/.test(N)){M=!1;break}}if(M)return!1;if(E&&I.startLineNumber===I.endLineNumber&&I.startColumn+1===I.endColumn){const P=v.getValueInRange(I);if((0,f.isQuote)(P))return!1}}return!0}static _runSurroundSelectionType(m,v,b,w,E){const I=[];for(let M=0,P=w.length;M<P;M++){const x=w[M],T=v.surroundingPairs[E];I[M]=new S.SurroundSelectionCommand(x,E,T)}return new f.EditOperationResult(0,I,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _isTypeInterceptorElectricChar(m,v,b){return!!(b.length===1&&v.tokenization.isCheapToTokenize(b[0].getEndPosition().lineNumber))}static _typeInterceptorElectricChar(m,v,b,w,E){if(!v.electricChars.hasOwnProperty(E)||!w.isEmpty())return null;const I=w.getPosition();b.tokenization.forceTokenization(I.lineNumber);const M=b.tokenization.getLineTokens(I.lineNumber);let P;try{P=v.onElectricCharacter(E,M,I.column)}catch(x){return(0,L.onUnexpectedError)(x),null}if(!P)return null;if(P.matchOpenBracket){const x=(M.getLineContent()+E).lastIndexOf(P.matchOpenBracket)+1,T=b.bracketPairs.findMatchingBracketUp(P.matchOpenBracket,{lineNumber:I.lineNumber,column:x},500);if(T){if(T.startLineNumber===I.lineNumber)return null;const A=b.getLineContent(T.startLineNumber),N=k.getLeadingWhitespace(A),F=v.normalizeIndentation(N),O=b.getLineContent(I.lineNumber),W=b.getLineFirstNonWhitespaceColumn(I.lineNumber)||I.column,U=O.substring(W-1,I.column-1),j=F+U+E,R=new g.Range(I.lineNumber,1,I.lineNumber,I.column),K=new y.ReplaceCommand(R,j);return new f.EditOperationResult(c(j,m),[K],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!0})}}return null}static compositionEndWithInterceptors(m,v,b,w,E,I){if(!w)return null;let M=null;for(const A of w)if(M===null)M=A.insertedText;else if(M!==A.insertedText)return null;if(!M||M.length!==1)return null;const P=M;let x=!1;for(const A of w)if(A.deletedText.length!==0){x=!0;break}if(x){if(!u._shouldSurroundChar(v,P)||!v.surroundingPairs.hasOwnProperty(P))return null;const A=(0,f.isQuote)(P);for(const O of w)if(O.deletedSelectionStart!==0||O.deletedSelectionEnd!==O.deletedText.length||/^[ \\t]+$/.test(O.deletedText)||A&&(0,f.isQuote)(O.deletedText))return null;const N=[];for(const O of E){if(!O.isEmpty())return null;N.push(O.getPosition())}if(N.length!==w.length)return null;const F=[];for(let O=0,W=N.length;O<W;O++)F.push(new S.CompositionSurroundSelectionCommand(N[O],w[O].deletedText,v.surroundingPairs[P]));return new f.EditOperationResult(4,F,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}if(this._isAutoClosingOvertype(v,b,E,I,P)){const A=E.map(N=>new y.ReplaceCommand(new g.Range(N.positionLineNumber,N.positionColumn,N.positionLineNumber,N.positionColumn+1),\"\",!1));return new f.EditOperationResult(4,A,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}const T=this._getAutoClosingPairClose(v,b,E,P,!0);return T!==null?this._runAutoClosingOpenCharType(m,v,b,E,P,!0,T):null}static typeWithInterceptors(m,v,b,w,E,I,M){if(!m&&M===`\n`){const T=[];for(let A=0,N=E.length;A<N;A++)T[A]=u._enter(b,w,!1,E[A]);return new f.EditOperationResult(4,T,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}if(!m&&this._isAutoIndentType(b,w,E)){const T=[];let A=!1;for(let N=0,F=E.length;N<F;N++)if(T[N]=this._runAutoIndentType(b,w,E[N],M),!T[N]){A=!0;break}if(!A)return new f.EditOperationResult(4,T,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}if(this._isAutoClosingOvertype(b,w,E,I,M))return this._runAutoClosingOvertype(v,b,w,E,M);if(!m){const T=this._getAutoClosingPairClose(b,w,E,M,!1);if(T)return this._runAutoClosingOpenCharType(v,b,w,E,M,!1,T)}if(!m&&this._isSurroundSelectionType(b,w,E,M))return this._runSurroundSelectionType(v,b,w,E,M);if(!m&&this._isTypeInterceptorElectricChar(b,w,E)){const T=this._typeInterceptorElectricChar(v,b,w,E[0],M);if(T)return T}const P=[];for(let T=0,A=E.length;T<A;T++)P[T]=new y.ReplaceCommand(E[T],M);const x=c(M,v);return new f.EditOperationResult(x,P,{shouldPushStackElementBefore:o(v,x),shouldPushStackElementAfter:!1})}static typeWithoutInterceptors(m,v,b,w,E){const I=[];for(let P=0,x=w.length;P<x;P++)I[P]=new y.ReplaceCommand(w[P],E);const M=c(E,m);return new f.EditOperationResult(M,I,{shouldPushStackElementBefore:o(m,M),shouldPushStackElementAfter:!1})}static lineInsertBefore(m,v,b){if(v===null||b===null)return[];const w=[];for(let E=0,I=b.length;E<I;E++){let M=b[E].positionLineNumber;if(M===1)w[E]=new y.ReplaceCommandWithoutChangingPosition(new g.Range(1,1,1,1),`\n`);else{M--;const P=v.getLineMaxColumn(M);w[E]=this._enter(m,v,!1,new g.Range(M,P,M,P))}}return w}static lineInsertAfter(m,v,b){if(v===null||b===null)return[];const w=[];for(let E=0,I=b.length;E<I;E++){const M=b[E].positionLineNumber,P=v.getLineMaxColumn(M);w[E]=this._enter(m,v,!1,new g.Range(M,P,M,P))}return w}static lineBreakInsert(m,v,b){const w=[];for(let E=0,I=b.length;E<I;E++)w[E]=this._enter(m,v,!0,b[E]);return w}}e.TypeOperations=u;class h extends y.ReplaceCommandWithOffsetCursorState{constructor(m,v,b,w){super(m,(b?v:\"\")+w,0,-w.length),this._openCharacter=v,this._closeCharacter=w,this.closeCharacterRange=null,this.enclosingRange=null}computeCursorState(m,v){const w=v.getInverseEditOperations()[0].range;return this.closeCharacterRange=new g.Range(w.startLineNumber,w.endColumn-this._closeCharacter.length,w.endLineNumber,w.endColumn),this.enclosingRange=new g.Range(w.startLineNumber,w.endColumn-this._openCharacter.length-this._closeCharacter.length,w.endLineNumber,w.endColumn),super.computeCursorState(m,v)}}e.TypeWithAutoClosingCommand=h;class r{constructor(m,v,b,w,E,I){this.deletedText=m,this.deletedSelectionStart=v,this.deletedSelectionEnd=b,this.insertedText=w,this.insertedSelectionStart=E,this.insertedSelectionEnd=I}}e.CompositionOutcome=r;function c(p,m){return p===\" \"?m===5||m===6?6:5:4}function o(p,m){return l(p)&&!l(m)?!0:p===5?!1:d(p)!==d(m)}function d(p){return p===6||p===5?\"space\":p}function l(p){return p===4||p===5||p===6}}),define(ne[774],se([1,0,9,11,498,74,486,204,246,5,24,111,211,2,213]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CursorsController=void 0;class a extends n.Disposable{constructor(l,p,m,v){super(),this._model=l,this._knownModelVersionId=this._model.getVersionId(),this._viewModel=p,this._coordinatesConverter=m,this.context=new S.CursorContext(this._model,this._viewModel,this._coordinatesConverter,v),this._cursors=new y.CursorCollection(this.context),this._hasFocus=!1,this._isHandling=!1,this._compositionState=null,this._columnSelectData=null,this._autoClosedActions=[],this._prevEditOperationType=0}dispose(){this._cursors.dispose(),this._autoClosedActions=(0,n.dispose)(this._autoClosedActions),super.dispose()}updateConfiguration(l){this.context=new S.CursorContext(this._model,this._viewModel,this._coordinatesConverter,l),this._cursors.updateContext(this.context)}onLineMappingChanged(l){this._knownModelVersionId===this._model.getVersionId()&&this.setStates(l,\"viewModel\",0,this.getCursorStates())}setHasFocus(l){this._hasFocus=l}_validateAutoClosedActions(){if(this._autoClosedActions.length>0){const l=this._cursors.getSelections();for(let p=0;p<this._autoClosedActions.length;p++){const m=this._autoClosedActions[p];m.isValid(l)||(m.dispose(),this._autoClosedActions.splice(p,1),p--)}}}getPrimaryCursorState(){return this._cursors.getPrimaryCursor()}getLastAddedCursorIndex(){return this._cursors.getLastAddedCursorIndex()}getCursorStates(){return this._cursors.getAll()}setStates(l,p,m,v){let b=!1;const w=this.context.cursorConfig.multiCursorLimit;v!==null&&v.length>w&&(v=v.slice(0,w),b=!0);const E=u.from(this._model,this);return this._cursors.setStates(v),this._cursors.normalize(),this._columnSelectData=null,this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(l,p,m,E,b)}setCursorColumnSelectData(l){this._columnSelectData=l}revealPrimary(l,p,m,v,b,w){const E=this._cursors.getViewPositions();let I=null,M=null;E.length>1?M=this._cursors.getViewSelections():I=g.Range.fromPositions(E[0],E[0]),l.emitViewEvent(new i.ViewRevealRangeRequestEvent(p,m,I,M,v,b,w))}saveState(){const l=[],p=this._cursors.getSelections();for(let m=0,v=p.length;m<v;m++){const b=p[m];l.push({inSelectionMode:!b.isEmpty(),selectionStart:{lineNumber:b.selectionStartLineNumber,column:b.selectionStartColumn},position:{lineNumber:b.positionLineNumber,column:b.positionColumn}})}return l}restoreState(l,p){const m=[];for(let v=0,b=p.length;v<b;v++){const w=p[v];let E=1,I=1;w.position&&w.position.lineNumber&&(E=w.position.lineNumber),w.position&&w.position.column&&(I=w.position.column);let M=E,P=I;w.selectionStart&&w.selectionStart.lineNumber&&(M=w.selectionStart.lineNumber),w.selectionStart&&w.selectionStart.column&&(P=w.selectionStart.column),m.push({selectionStartLineNumber:M,selectionStartColumn:P,positionLineNumber:E,positionColumn:I})}this.setStates(l,\"restoreState\",0,D.CursorState.fromModelSelections(m)),this.revealPrimary(l,\"restoreState\",!1,0,!0,1)}onModelContentChanged(l,p){if(p instanceof s.ModelInjectedTextChangedEvent){if(this._isHandling)return;this._isHandling=!0;try{this.setStates(l,\"modelChange\",0,this.getCursorStates())}finally{this._isHandling=!1}}else{const m=p.rawContentChangedEvent;if(this._knownModelVersionId=m.versionId,this._isHandling)return;const v=m.containsEvent(1);if(this._prevEditOperationType=0,v)this._cursors.dispose(),this._cursors=new y.CursorCollection(this.context),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(l,\"model\",1,null,!1);else if(this._hasFocus&&m.resultingSelection&&m.resultingSelection.length>0){const b=D.CursorState.fromModelSelections(m.resultingSelection);this.setStates(l,\"modelChange\",m.isUndoing?5:m.isRedoing?6:2,b)&&this.revealPrimary(l,\"modelChange\",!1,0,!0,0)}else{const b=this._cursors.readSelectionFromMarkers();this.setStates(l,\"modelChange\",2,D.CursorState.fromModelSelections(b))}}}getSelection(){return this._cursors.getPrimaryCursor().modelState.selection}getTopMostViewPosition(){return this._cursors.getTopMostViewPosition()}getBottomMostViewPosition(){return this._cursors.getBottomMostViewPosition()}getCursorColumnSelectData(){if(this._columnSelectData)return this._columnSelectData;const l=this._cursors.getPrimaryCursor(),p=l.viewState.selectionStart.getStartPosition(),m=l.viewState.position;return{isReal:!1,fromViewLineNumber:p.lineNumber,fromViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,p),toViewLineNumber:m.lineNumber,toViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,m)}}getSelections(){return this._cursors.getSelections()}setSelections(l,p,m,v){this.setStates(l,p,v,D.CursorState.fromModelSelections(m))}getPrevEditOperationType(){return this._prevEditOperationType}setPrevEditOperationType(l){this._prevEditOperationType=l}_pushAutoClosedAction(l,p){const m=[],v=[];for(let E=0,I=l.length;E<I;E++)m.push({range:l[E],options:{description:\"auto-closed-character\",inlineClassName:\"auto-closed-character\",stickiness:1}}),v.push({range:p[E],options:{description:\"auto-closed-enclosing\",stickiness:1}});const b=this._model.deltaDecorations([],m),w=this._model.deltaDecorations([],v);this._autoClosedActions.push(new h(this._model,b,w))}_executeEditOperation(l){if(!l)return;l.shouldPushStackElementBefore&&this._model.pushStackElement();const p=r.executeCommands(this._model,this._cursors.getSelections(),l.commands);if(p){this._interpretCommandResult(p);const m=[],v=[];for(let b=0;b<l.commands.length;b++){const w=l.commands[b];w instanceof _.TypeWithAutoClosingCommand&&w.enclosingRange&&w.closeCharacterRange&&(m.push(w.closeCharacterRange),v.push(w.enclosingRange))}m.length>0&&this._pushAutoClosedAction(m,v),this._prevEditOperationType=l.type}l.shouldPushStackElementAfter&&this._model.pushStackElement()}_interpretCommandResult(l){(!l||l.length===0)&&(l=this._cursors.readSelectionFromMarkers()),this._columnSelectData=null,this._cursors.setSelections(l),this._cursors.normalize()}_emitStateChangedIfNecessary(l,p,m,v,b){const w=u.from(this._model,this);if(w.equals(v))return!1;const E=this._cursors.getSelections(),I=this._cursors.getViewSelections();if(l.emitViewEvent(new i.ViewCursorStateChangedEvent(I,E,m)),!v||v.cursorState.length!==w.cursorState.length||w.cursorState.some((M,P)=>!M.modelState.equals(v.cursorState[P].modelState))){const M=v?v.cursorState.map(x=>x.modelState.selection):null,P=v?v.modelVersionId:0;l.emitOutgoingEvent(new t.CursorStateChangedEvent(M,E,P,w.modelVersionId,p||\"keyboard\",m,b))}return!0}_findAutoClosingPairs(l){if(!l.length)return null;const p=[];for(let m=0,v=l.length;m<v;m++){const b=l[m];if(!b.text||b.text.indexOf(`\n`)>=0)return null;const w=b.text.match(/([)\\]}>'\"`])([^)\\]}>'\"`]*)$/);if(!w)return null;const E=w[1],I=this.context.cursorConfig.autoClosingPairs.autoClosingPairsCloseSingleChar.get(E);if(!I||I.length!==1)return null;const M=I[0].open,P=b.text.length-w[2].length-1,x=b.text.lastIndexOf(M,P-1);if(x===-1)return null;p.push([x,P])}return p}executeEdits(l,p,m,v){let b=null;p===\"snippet\"&&(b=this._findAutoClosingPairs(m)),b&&(m[0]._isTracked=!0);const w=[],E=[],I=this._model.pushEditOperations(this.getSelections(),m,M=>{if(b)for(let x=0,T=b.length;x<T;x++){const[A,N]=b[x],F=M[x],O=F.range.startLineNumber,W=F.range.startColumn-1+A,U=F.range.startColumn-1+N;w.push(new g.Range(O,U+1,O,U+2)),E.push(new g.Range(O,W+1,O,U+2))}const P=v(M);return P&&(this._isHandling=!0),P});I&&(this._isHandling=!1,this.setSelections(l,p,I,0)),w.length>0&&this._pushAutoClosedAction(w,E)}_executeEdit(l,p,m,v=0){if(this.context.cursorConfig.readOnly)return;const b=u.from(this._model,this);this._cursors.stopTrackingSelections(),this._isHandling=!0;try{this._cursors.ensureValidState(),l()}catch(w){(0,L.onUnexpectedError)(w)}this._isHandling=!1,this._cursors.startTrackingSelections(),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(p,m,v,b,!1)&&this.revealPrimary(p,m,!1,0,!0,0)}getAutoClosedCharacters(){return h.getAllAutoClosedCharacters(this._autoClosedActions)}startComposition(l){this._compositionState=new o(this._model,this.getSelections())}endComposition(l,p){const m=this._compositionState?this._compositionState.deduceOutcome(this._model,this.getSelections()):null;this._compositionState=null,this._executeEdit(()=>{p===\"keyboard\"&&this._executeEditOperation(_.TypeOperations.compositionEndWithInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,m,this.getSelections(),this.getAutoClosedCharacters()))},l,p)}type(l,p,m){this._executeEdit(()=>{if(m===\"keyboard\"){const v=p.length;let b=0;for(;b<v;){const w=k.nextCharLength(p,b),E=p.substr(b,w);this._executeEditOperation(_.TypeOperations.typeWithInterceptors(!!this._compositionState,this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),this.getAutoClosedCharacters(),E)),b+=w}}else this._executeEditOperation(_.TypeOperations.typeWithoutInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),p))},l,m)}compositionType(l,p,m,v,b,w){if(p.length===0&&m===0&&v===0){if(b!==0){const E=this.getSelections().map(I=>{const M=I.getPosition();return new C.Selection(M.lineNumber,M.column+b,M.lineNumber,M.column+b)});this.setSelections(l,w,E,0)}return}this._executeEdit(()=>{this._executeEditOperation(_.TypeOperations.compositionType(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),p,m,v,b))},l,w)}paste(l,p,m,v,b){this._executeEdit(()=>{this._executeEditOperation(_.TypeOperations.paste(this.context.cursorConfig,this._model,this.getSelections(),p,m,v||[]))},l,b,4)}cut(l,p){this._executeEdit(()=>{this._executeEditOperation(f.DeleteOperations.cut(this.context.cursorConfig,this._model,this.getSelections()))},l,p)}executeCommand(l,p,m){this._executeEdit(()=>{this._cursors.killSecondaryCursors(),this._executeEditOperation(new D.EditOperationResult(0,[p],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))},l,m)}executeCommands(l,p,m){this._executeEdit(()=>{this._executeEditOperation(new D.EditOperationResult(0,p,{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))},l,m)}}e.CursorsController=a;class u{static from(l,p){return new u(l.getVersionId(),p.getCursorStates())}constructor(l,p){this.modelVersionId=l,this.cursorState=p}equals(l){if(!l||this.modelVersionId!==l.modelVersionId||this.cursorState.length!==l.cursorState.length)return!1;for(let p=0,m=this.cursorState.length;p<m;p++)if(!this.cursorState[p].equals(l.cursorState[p]))return!1;return!0}}class h{static getAllAutoClosedCharacters(l){let p=[];for(const m of l)p=p.concat(m.getAutoClosedCharactersRanges());return p}constructor(l,p,m){this._model=l,this._autoClosedCharactersDecorations=p,this._autoClosedEnclosingDecorations=m}dispose(){this._autoClosedCharactersDecorations=this._model.deltaDecorations(this._autoClosedCharactersDecorations,[]),this._autoClosedEnclosingDecorations=this._model.deltaDecorations(this._autoClosedEnclosingDecorations,[])}getAutoClosedCharactersRanges(){const l=[];for(let p=0;p<this._autoClosedCharactersDecorations.length;p++){const m=this._model.getDecorationRange(this._autoClosedCharactersDecorations[p]);m&&l.push(m)}return l}isValid(l){const p=[];for(let m=0;m<this._autoClosedEnclosingDecorations.length;m++){const v=this._model.getDecorationRange(this._autoClosedEnclosingDecorations[m]);if(v&&(p.push(v),v.startLineNumber!==v.endLineNumber))return!1}p.sort(g.Range.compareRangesUsingStarts),l.sort(g.Range.compareRangesUsingStarts);for(let m=0;m<l.length;m++)if(m>=p.length||!p[m].strictContainsRange(l[m]))return!1;return!0}}class r{static executeCommands(l,p,m){const v={model:l,selectionsBefore:p,trackedRanges:[],trackedRangesDirection:[]},b=this._innerExecuteCommands(v,m);for(let w=0,E=v.trackedRanges.length;w<E;w++)v.model._setTrackedRange(v.trackedRanges[w],null,0);return b}static _innerExecuteCommands(l,p){if(this._arrayIsEmpty(p))return null;const m=this._getEditOperations(l,p);if(m.operations.length===0)return null;const v=m.operations,b=this._getLoserCursorMap(v);if(b.hasOwnProperty(\"0\"))return console.warn(\"Ignoring commands\"),null;const w=[];for(let M=0,P=v.length;M<P;M++)b.hasOwnProperty(v[M].identifier.major.toString())||w.push(v[M]);m.hadTrackedEditOperation&&w.length>0&&(w[0]._isTracked=!0);let E=l.model.pushEditOperations(l.selectionsBefore,w,M=>{const P=[];for(let A=0;A<l.selectionsBefore.length;A++)P[A]=[];for(const A of M)A.identifier&&P[A.identifier.major].push(A);const x=(A,N)=>A.identifier.minor-N.identifier.minor,T=[];for(let A=0;A<l.selectionsBefore.length;A++)P[A].length>0?(P[A].sort(x),T[A]=p[A].computeCursorState(l.model,{getInverseEditOperations:()=>P[A],getTrackedSelection:N=>{const F=parseInt(N,10),O=l.model._getTrackedRange(l.trackedRanges[F]);return l.trackedRangesDirection[F]===0?new C.Selection(O.startLineNumber,O.startColumn,O.endLineNumber,O.endColumn):new C.Selection(O.endLineNumber,O.endColumn,O.startLineNumber,O.startColumn)}})):T[A]=l.selectionsBefore[A];return T});E||(E=l.selectionsBefore);const I=[];for(const M in b)b.hasOwnProperty(M)&&I.push(parseInt(M,10));I.sort((M,P)=>P-M);for(const M of I)E.splice(M,1);return E}static _arrayIsEmpty(l){for(let p=0,m=l.length;p<m;p++)if(l[p])return!1;return!0}static _getEditOperations(l,p){let m=[],v=!1;for(let b=0,w=p.length;b<w;b++){const E=p[b];if(E){const I=this._getEditOperationsFromCommand(l,b,E);m=m.concat(I.operations),v=v||I.hadTrackedEditOperation}}return{operations:m,hadTrackedEditOperation:v}}static _getEditOperationsFromCommand(l,p,m){const v=[];let b=0;const w=(x,T,A=!1)=>{g.Range.isEmpty(x)&&T===\"\"||v.push({identifier:{major:p,minor:b++},range:x,text:T,forceMoveMarkers:A,isAutoWhitespaceEdit:m.insertsAutoWhitespace})};let E=!1;const P={addEditOperation:w,addTrackedEditOperation:(x,T,A)=>{E=!0,w(x,T,A)},trackSelection:(x,T)=>{const A=C.Selection.liftSelection(x);let N;if(A.isEmpty())if(typeof T==\"boolean\")T?N=2:N=3;else{const W=l.model.getLineMaxColumn(A.startLineNumber);A.startColumn===W?N=2:N=3}else N=1;const F=l.trackedRanges.length,O=l.model._setTrackedRange(null,A,N);return l.trackedRanges[F]=O,l.trackedRangesDirection[F]=A.getDirection(),F.toString()}};try{m.getEditOperations(l.model,P)}catch(x){return(0,L.onUnexpectedError)(x),{operations:[],hadTrackedEditOperation:!1}}return{operations:v,hadTrackedEditOperation:E}}static _getLoserCursorMap(l){l=l.slice(0),l.sort((m,v)=>-g.Range.compareRangesUsingEnds(m.range,v.range));const p={};for(let m=1;m<l.length;m++){const v=l[m-1],b=l[m];if(g.Range.getStartPosition(v.range).isBefore(g.Range.getEndPosition(b.range))){let w;v.identifier.major>b.identifier.major?w=v.identifier.major:w=b.identifier.major,p[w.toString()]=!0;for(let E=0;E<l.length;E++)l[E].identifier.major===w&&(l.splice(E,1),E<m&&m--,E--);m>0&&m--}}return p}}class c{constructor(l,p,m){this.text=l,this.startSelection=p,this.endSelection=m}}class o{static _capture(l,p){const m=[];for(const v of p){if(v.startLineNumber!==v.endLineNumber)return null;m.push(new c(l.getLineContent(v.startLineNumber),v.startColumn-1,v.endColumn-1))}return m}constructor(l,p){this._original=o._capture(l,p)}deduceOutcome(l,p){if(!this._original)return null;const m=o._capture(l,p);if(!m||this._original.length!==m.length)return null;const v=[];for(let b=0,w=this._original.length;b<w;b++)v.push(o._deduceOutcome(this._original[b],m[b]));return v}static _deduceOutcome(l,p){const m=Math.min(l.startSelection,p.startSelection,k.commonPrefixLength(l.text,p.text)),v=Math.min(l.text.length-l.endSelection,p.text.length-p.endSelection,k.commonSuffixLength(l.text,p.text)),b=l.text.substring(m,l.text.length-v),w=p.text.substring(m,p.text.length-v);return new _.CompositionOutcome(b,l.startSelection-m,l.endSelection-m,w,p.startSelection-m,p.endSelection-m)}}}),define(ne[775],se([1,0,54,45,78,330]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getIconClasses=void 0;const S=/(?:\\/|^)(?:([^\\/]+)\\/)?([^\\/]+)$/;function f(C,s,i,n){const t=n===D.FileKind.ROOT_FOLDER?[\"rootfolder-icon\"]:n===D.FileKind.FOLDER?[\"folder-icon\"]:[\"file-icon\"];if(i){let a;if(i.scheme===L.Schemas.data)a=k.DataUri.parseMetaData(i).get(k.DataUri.META_DATA_LABEL);else{const u=i.path.match(S);u?(a=g(u[2].toLowerCase()),u[1]&&t.push(`${g(u[1].toLowerCase())}-name-dir-icon`)):a=g(i.authority.toLowerCase())}if(n===D.FileKind.FOLDER)t.push(`${a}-name-folder-icon`);else{if(a){if(t.push(`${a}-name-file-icon`),t.push(\"name-file-icon\"),a.length<=255){const h=a.split(\".\");for(let r=1;r<h.length;r++)t.push(`${h.slice(r).join(\".\")}-ext-file-icon`)}t.push(\"ext-file-icon\")}const u=_(C,s,i);u&&t.push(`${g(u)}-lang-file-icon`)}}return t}e.getIconClasses=f;function _(C,s,i){if(!i)return null;let n=null;if(i.scheme===L.Schemas.data){const a=k.DataUri.parseMetaData(i).get(k.DataUri.META_DATA_MIME);a&&(n=s.getLanguageIdByMimeType(a))}else{const t=C.getModel(i);t&&(n=t.getLanguageId())}return n&&n!==y.PLAINTEXT_LANGUAGE_ID?n:s.guessLanguageIdByFilepathOrFirstLine(i)}function g(C){return C.replace(/[\\11\\12\\14\\15\\40]/g,\"/\")}}),define(ne[776],se([1,0,303,107,54,92,45,11,78]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getLanguageIds=e.clearPlatformLanguageAssociations=e.registerPlatformLanguageAssociation=void 0;let g=[],C=[],s=[];function i(o,d=!1){n(o,!1,d)}e.registerPlatformLanguageAssociation=i;function n(o,d,l){const p=t(o,d);g.push(p),p.userConfigured?s.push(p):C.push(p),l&&!p.userConfigured&&g.forEach(m=>{m.mime===p.mime||m.userConfigured||(p.extension&&m.extension===p.extension&&console.warn(`Overwriting extension <<${p.extension}>> to now point to mime <<${p.mime}>>`),p.filename&&m.filename===p.filename&&console.warn(`Overwriting filename <<${p.filename}>> to now point to mime <<${p.mime}>>`),p.filepattern&&m.filepattern===p.filepattern&&console.warn(`Overwriting filepattern <<${p.filepattern}>> to now point to mime <<${p.mime}>>`),p.firstline&&m.firstline===p.firstline&&console.warn(`Overwriting firstline <<${p.firstline}>> to now point to mime <<${p.mime}>>`))})}function t(o,d){return{id:o.id,mime:o.mime,filename:o.filename,extension:o.extension,filepattern:o.filepattern,firstline:o.firstline,userConfigured:d,filenameLowercase:o.filename?o.filename.toLowerCase():void 0,extensionLowercase:o.extension?o.extension.toLowerCase():void 0,filepatternLowercase:o.filepattern?(0,L.parse)(o.filepattern.toLowerCase()):void 0,filepatternOnPath:o.filepattern?o.filepattern.indexOf(D.posix.sep)>=0:!1}}function a(){g=g.filter(o=>o.userConfigured),C=[]}e.clearPlatformLanguageAssociations=a;function u(o,d){return h(o,d).map(l=>l.id)}e.getLanguageIds=u;function h(o,d){let l;if(o)switch(o.scheme){case y.Schemas.file:l=o.fsPath;break;case y.Schemas.data:{l=S.DataUri.parseMetaData(o).get(S.DataUri.META_DATA_LABEL);break}case y.Schemas.vscodeNotebookCell:l=void 0;break;default:l=o.path}if(!l)return[{id:\"unknown\",mime:k.Mimes.unknown}];l=l.toLowerCase();const p=(0,D.basename)(l),m=r(l,p,s);if(m)return[m,{id:_.PLAINTEXT_LANGUAGE_ID,mime:k.Mimes.text}];const v=r(l,p,C);if(v)return[v,{id:_.PLAINTEXT_LANGUAGE_ID,mime:k.Mimes.text}];if(d){const b=c(d);if(b)return[b,{id:_.PLAINTEXT_LANGUAGE_ID,mime:k.Mimes.text}]}return[{id:\"unknown\",mime:k.Mimes.unknown}]}function r(o,d,l){var p;let m,v,b;for(let w=l.length-1;w>=0;w--){const E=l[w];if(d===E.filenameLowercase){m=E;break}if(E.filepattern&&(!v||E.filepattern.length>v.filepattern.length)){const I=E.filepatternOnPath?o:d;!((p=E.filepatternLowercase)===null||p===void 0)&&p.call(E,I)&&(v=E)}E.extension&&(!b||E.extension.length>b.extension.length)&&d.endsWith(E.extensionLowercase)&&(b=E)}if(m)return m;if(v)return v;if(b)return b}function c(o){if((0,f.startsWithUTF8BOM)(o)&&(o=o.substr(1)),o.length>0)for(let d=g.length-1;d>=0;d--){const l=g[d];if(!l.firstline)continue;const p=o.match(l.firstline);if(p&&p.length>0)return l}}}),define(ne[777],se([1,0,6,2,11,776,78,98,37]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LanguagesRegistry=e.LanguageIdCodec=void 0;const g=Object.prototype.hasOwnProperty,C=\"vs.editor.nullLanguage\";class s{constructor(){this._languageIdToLanguage=[],this._languageToLanguageId=new Map,this._register(C,0),this._register(S.PLAINTEXT_LANGUAGE_ID,1),this._nextLanguageId=2}_register(t,a){this._languageIdToLanguage[a]=t,this._languageToLanguageId.set(t,a)}register(t){if(this._languageToLanguageId.has(t))return;const a=this._nextLanguageId++;this._register(t,a)}encodeLanguageId(t){return this._languageToLanguageId.get(t)||0}decodeLanguageId(t){return this._languageIdToLanguage[t]||C}}e.LanguageIdCodec=s;class i extends k.Disposable{constructor(t=!0,a=!1){super(),this._onDidChange=this._register(new L.Emitter),this.onDidChange=this._onDidChange.event,i.instanceCount++,this._warnOnOverwrite=a,this.languageIdCodec=new s,this._dynamicLanguages=[],this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},t&&(this._initializeFromRegistry(),this._register(S.ModesRegistry.onDidChangeLanguages(u=>{this._initializeFromRegistry()})))}dispose(){i.instanceCount--,super.dispose()}_initializeFromRegistry(){this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},(0,D.clearPlatformLanguageAssociations)();const t=[].concat(S.ModesRegistry.getLanguages()).concat(this._dynamicLanguages);this._registerLanguages(t)}_registerLanguages(t){for(const a of t)this._registerLanguage(a);this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},Object.keys(this._languages).forEach(a=>{const u=this._languages[a];u.name&&(this._nameMap[u.name]=u.identifier),u.aliases.forEach(h=>{this._lowercaseNameMap[h.toLowerCase()]=u.identifier}),u.mimetypes.forEach(h=>{this._mimeTypesMap[h]=u.identifier})}),_.Registry.as(f.Extensions.Configuration).registerOverrideIdentifiers(this.getRegisteredLanguageIds()),this._onDidChange.fire()}_registerLanguage(t){const a=t.id;let u;g.call(this._languages,a)?u=this._languages[a]:(this.languageIdCodec.register(a),u={identifier:a,name:null,mimetypes:[],aliases:[],extensions:[],filenames:[],configurationFiles:[],icons:[]},this._languages[a]=u),this._mergeLanguage(u,t)}_mergeLanguage(t,a){const u=a.id;let h=null;if(Array.isArray(a.mimetypes)&&a.mimetypes.length>0&&(t.mimetypes.push(...a.mimetypes),h=a.mimetypes[0]),h||(h=`text/x-${u}`,t.mimetypes.push(h)),Array.isArray(a.extensions)){a.configuration?t.extensions=a.extensions.concat(t.extensions):t.extensions=t.extensions.concat(a.extensions);for(const o of a.extensions)(0,D.registerPlatformLanguageAssociation)({id:u,mime:h,extension:o},this._warnOnOverwrite)}if(Array.isArray(a.filenames))for(const o of a.filenames)(0,D.registerPlatformLanguageAssociation)({id:u,mime:h,filename:o},this._warnOnOverwrite),t.filenames.push(o);if(Array.isArray(a.filenamePatterns))for(const o of a.filenamePatterns)(0,D.registerPlatformLanguageAssociation)({id:u,mime:h,filepattern:o},this._warnOnOverwrite);if(typeof a.firstLine==\"string\"&&a.firstLine.length>0){let o=a.firstLine;o.charAt(0)!==\"^\"&&(o=\"^\"+o);try{const d=new RegExp(o);(0,y.regExpLeadsToEndlessLoop)(d)||(0,D.registerPlatformLanguageAssociation)({id:u,mime:h,firstline:d},this._warnOnOverwrite)}catch(d){console.warn(`[${a.id}]: Invalid regular expression \\`${o}\\`: `,d)}}t.aliases.push(u);let r=null;if(typeof a.aliases<\"u\"&&Array.isArray(a.aliases)&&(a.aliases.length===0?r=[null]:r=a.aliases),r!==null)for(const o of r)!o||o.length===0||t.aliases.push(o);const c=r!==null&&r.length>0;if(!(c&&r[0]===null)){const o=(c?r[0]:null)||u;(c||!t.name)&&(t.name=o)}a.configuration&&t.configurationFiles.push(a.configuration),a.icon&&t.icons.push(a.icon)}isRegisteredLanguageId(t){return t?g.call(this._languages,t):!1}getRegisteredLanguageIds(){return Object.keys(this._languages)}getLanguageIdByLanguageName(t){const a=t.toLowerCase();return g.call(this._lowercaseNameMap,a)?this._lowercaseNameMap[a]:null}getLanguageIdByMimeType(t){return t&&g.call(this._mimeTypesMap,t)?this._mimeTypesMap[t]:null}guessLanguageIdByFilepathOrFirstLine(t,a){return!t&&!a?[]:(0,D.getLanguageIds)(t,a)}}e.LanguagesRegistry=i,i.instanceCount=0}),define(ne[778],se([1,0,6,2,777,14,29,78]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LanguageService=void 0;class _ extends k.Disposable{constructor(s=!1){super(),this._onDidRequestBasicLanguageFeatures=this._register(new L.Emitter),this.onDidRequestBasicLanguageFeatures=this._onDidRequestBasicLanguageFeatures.event,this._onDidRequestRichLanguageFeatures=this._register(new L.Emitter),this.onDidRequestRichLanguageFeatures=this._onDidRequestRichLanguageFeatures.event,this._onDidChange=this._register(new L.Emitter({leakWarningThreshold:200})),this.onDidChange=this._onDidChange.event,this._requestedBasicLanguages=new Set,this._requestedRichLanguages=new Set,_.instanceCount++,this._registry=this._register(new y.LanguagesRegistry(!0,s)),this.languageIdCodec=this._registry.languageIdCodec,this._register(this._registry.onDidChange(()=>this._onDidChange.fire()))}dispose(){_.instanceCount--,super.dispose()}isRegisteredLanguageId(s){return this._registry.isRegisteredLanguageId(s)}getLanguageIdByLanguageName(s){return this._registry.getLanguageIdByLanguageName(s)}getLanguageIdByMimeType(s){return this._registry.getLanguageIdByMimeType(s)}guessLanguageIdByFilepathOrFirstLine(s,i){const n=this._registry.guessLanguageIdByFilepathOrFirstLine(s,i);return(0,D.firstOrDefault)(n,null)}createById(s){return new g(this.onDidChange,()=>this._createAndGetLanguageIdentifier(s))}createByFilepathOrFirstLine(s,i){return new g(this.onDidChange,()=>{const n=this.guessLanguageIdByFilepathOrFirstLine(s,i);return this._createAndGetLanguageIdentifier(n)})}_createAndGetLanguageIdentifier(s){return(!s||!this.isRegisteredLanguageId(s))&&(s=f.PLAINTEXT_LANGUAGE_ID),s}requestBasicLanguageFeatures(s){this._requestedBasicLanguages.has(s)||(this._requestedBasicLanguages.add(s),this._onDidRequestBasicLanguageFeatures.fire(s))}requestRichLanguageFeatures(s){this._requestedRichLanguages.has(s)||(this._requestedRichLanguages.add(s),this.requestBasicLanguageFeatures(s),S.TokenizationRegistry.getOrCreate(s),this._onDidRequestRichLanguageFeatures.fire(s))}}e.LanguageService=_,_.instanceCount=0;class g{constructor(s,i){this._onDidChangeLanguages=s,this._selector=i,this._listener=null,this._emitter=null,this.languageId=this._selector()}_dispose(){this._listener&&(this._listener.dispose(),this._listener=null),this._emitter&&(this._emitter.dispose(),this._emitter=null)}get onDidChange(){return this._listener||(this._listener=this._onDidChangeLanguages(()=>this._evaluate())),this._emitter||(this._emitter=new L.Emitter({onDidRemoveLastListener:()=>{this._dispose()}})),this._emitter.event}_evaluate(){var s;const i=this._selector();i!==this.languageId&&(this.languageId=i,(s=this._emitter)===null||s===void 0||s.fire(this.languageId))}}}),define(ne[342],se([1,0,38,242,51,32,2,18,149]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DefaultDocumentColorProvider=void 0;class g{constructor(i,n){this._editorWorkerClient=new k.EditorWorkerClient(i,!1,\"editorWorkerService\",n)}provideDocumentColors(i,n){return we(this,void 0,void 0,function*(){return this._editorWorkerClient.computeDefaultDocumentColors(i.uri)})}provideColorPresentations(i,n,t){const a=n.range,u=n.color,h=u.alpha,r=new L.Color(new L.RGBA(Math.round(255*u.red),Math.round(255*u.green),Math.round(255*u.blue),h)),c=h?L.Color.Format.CSS.formatRGB(r):L.Color.Format.CSS.formatRGBA(r),o=h?L.Color.Format.CSS.formatHSL(r):L.Color.Format.CSS.formatHSLA(r),d=h?L.Color.Format.CSS.formatHex(r):L.Color.Format.CSS.formatHexA(r),l=[];return l.push({label:c,textEdit:{range:a,text:c}}),l.push({label:o,textEdit:{range:a,text:o}}),l.push({label:d,textEdit:{range:a,text:d}}),l}}e.DefaultDocumentColorProvider=g;let C=class extends S.Disposable{constructor(i,n,t){super(),this._register(t.colorProvider.register(\"*\",new g(i,n)))}};C=ke([fe(0,y.IModelService),fe(1,D.ILanguageConfigurationService),fe(2,f.ILanguageFeaturesService)],C),(0,_.registerEditorFeature)(C)}),define(ne[343],se([1,0,19,9,22,5,51,27,18,342,28]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getColorPresentations=e.getColors=void 0;function s(r,c,o,d=!0){return we(this,void 0,void 0,function*(){return u(new n,r,c,o,d)})}e.getColors=s;function i(r,c,o,d){return Promise.resolve(o.provideColorPresentations(r,c,d))}e.getColorPresentations=i;class n{constructor(){}compute(c,o,d,l){return we(this,void 0,void 0,function*(){const p=yield c.provideDocumentColors(o,d);if(Array.isArray(p))for(const m of p)l.push({colorInfo:m,provider:c});return Array.isArray(p)})}}class t{constructor(){}compute(c,o,d,l){return we(this,void 0,void 0,function*(){const p=yield c.provideDocumentColors(o,d);if(Array.isArray(p))for(const m of p)l.push({range:m.range,color:[m.color.red,m.color.green,m.color.blue,m.color.alpha]});return Array.isArray(p)})}}class a{constructor(c){this.colorInfo=c}compute(c,o,d,l){return we(this,void 0,void 0,function*(){const p=yield c.provideColorPresentations(o,this.colorInfo,L.CancellationToken.None);return Array.isArray(p)&&l.push(...p),Array.isArray(p)})}}function u(r,c,o,d,l){return we(this,void 0,void 0,function*(){let p=!1,m;const v=[],b=c.ordered(o);for(let w=b.length-1;w>=0;w--){const E=b[w];if(E instanceof g.DefaultDocumentColorProvider)m=E;else try{(yield r.compute(E,o,d,v))&&(p=!0)}catch(I){(0,k.onUnexpectedExternalError)(I)}}return p?v:m&&l?(yield r.compute(m,o,d,v),v):[]})}function h(r,c){const{colorProvider:o}=r.get(_.ILanguageFeaturesService),d=r.get(S.IModelService).getModel(c);if(!d)throw(0,k.illegalArgument)();const l=r.get(C.IConfigurationService).getValue(\"editor.defaultColorDecorators\",{resource:c});return{model:d,colorProviderRegistry:o,isDefaultColorDecoratorsEnabled:l}}f.CommandsRegistry.registerCommand(\"_executeDocumentColorProvider\",function(r,...c){const[o]=c;if(!(o instanceof y.URI))throw(0,k.illegalArgument)();const{model:d,colorProviderRegistry:l,isDefaultColorDecoratorsEnabled:p}=h(r,o);return u(new t,l,d,L.CancellationToken.None,p)}),f.CommandsRegistry.registerCommand(\"_executeColorPresentationProvider\",function(r,...c){const[o,d]=c,{uri:l,range:p}=d;if(!(l instanceof y.URI)||!Array.isArray(o)||o.length!==4||!D.Range.isIRange(p))throw(0,k.illegalArgument)();const{model:m,colorProviderRegistry:v,isDefaultColorDecoratorsEnabled:b}=h(r,l),[w,E,I,M]=o;return u(new a({range:p,color:{red:w,green:E,blue:I,alpha:M}}),v,m,L.CancellationToken.None,b)})}),define(ne[779],se([1,0,19,72,2,42,12,29,32,18,600,296]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InlineCompletionWithUpdatedRange=e.UpToDateInlineCompletions=e.InlineCompletionsSource=void 0;let i=class extends y.Disposable{constructor(d,l,p,m,v){super(),this.textModel=d,this.versionId=l,this._debounceValue=p,this.languageFeaturesService=m,this.languageConfigurationService=v,this._updateOperation=this._register(new y.MutableDisposable),this.inlineCompletions=(0,D.disposableObservableValue)(\"inlineCompletions\",void 0),this.suggestWidgetInlineCompletions=(0,D.disposableObservableValue)(\"suggestWidgetInlineCompletions\",void 0),this._register(this.textModel.onDidChangeContent(()=>{this._updateOperation.clear()}))}fetch(d,l,p){var m,v;const b=new t(d,l,this.textModel.getVersionId()),w=l.selectedSuggestionInfo?this.suggestWidgetInlineCompletions:this.inlineCompletions;if(!((m=this._updateOperation.value)===null||m===void 0)&&m.request.satisfies(b))return this._updateOperation.value.promise;if(!((v=w.get())===null||v===void 0)&&v.request.satisfies(b))return Promise.resolve(!0);const E=!!this._updateOperation.value;this._updateOperation.clear();const I=new L.CancellationTokenSource,M=(()=>we(this,void 0,void 0,function*(){if((E||l.triggerKind===f.InlineCompletionTriggerKind.Automatic)&&(yield n(this._debounceValue.get(this.textModel))),I.token.isCancellationRequested||this.textModel.getVersionId()!==b.versionId)return!1;const T=new Date,A=yield(0,C.provideInlineCompletions)(this.languageFeaturesService.inlineCompletionsProvider,d,this.textModel,l,I.token,this.languageConfigurationService);if(I.token.isCancellationRequested||this.textModel.getVersionId()!==b.versionId)return!1;const N=new Date;this._debounceValue.update(this.textModel,N.getTime()-T.getTime());const F=new h(A,b,this.textModel,this.versionId);if(p){const O=p.toInlineCompletion(void 0);p.canBeReused(this.textModel,d)&&!A.has(O)&&F.prepend(p.inlineCompletion,O.range,!0)}return this._updateOperation.clear(),(0,D.transaction)(O=>{w.set(F,O)}),!0}))(),P=new u(b,I,M);return this._updateOperation.value=P,M}clear(d){this._updateOperation.clear(),this.inlineCompletions.set(void 0,d),this.suggestWidgetInlineCompletions.set(void 0,d)}clearSuggestWidgetInlineCompletions(d){var l;!((l=this._updateOperation.value)===null||l===void 0)&&l.request.context.selectedSuggestionInfo&&this._updateOperation.clear(),this.suggestWidgetInlineCompletions.set(void 0,d)}cancelUpdate(){this._updateOperation.clear()}};e.InlineCompletionsSource=i,e.InlineCompletionsSource=i=ke([fe(3,g.ILanguageFeaturesService),fe(4,_.ILanguageConfigurationService)],i);function n(o,d){return new Promise(l=>{let p;const m=setTimeout(()=>{p&&p.dispose(),l()},o);d&&(p=d.onCancellationRequested(()=>{clearTimeout(m),p&&p.dispose(),l()}))})}class t{constructor(d,l,p){this.position=d,this.context=l,this.versionId=p}satisfies(d){return this.position.equals(d.position)&&a(this.context.selectedSuggestionInfo,d.context.selectedSuggestionInfo,(l,p)=>l.equals(p))&&(d.context.triggerKind===f.InlineCompletionTriggerKind.Automatic||this.context.triggerKind===f.InlineCompletionTriggerKind.Explicit)&&this.versionId===d.versionId}}function a(o,d,l){return!o||!d?o===d:l(o,d)}class u{constructor(d,l,p){this.request=d,this.cancellationTokenSource=l,this.promise=p}dispose(){this.cancellationTokenSource.cancel()}}class h{get inlineCompletions(){return this._inlineCompletions}constructor(d,l,p,m){this.inlineCompletionProviderResult=d,this.request=l,this.textModel=p,this.versionId=m,this._refCount=1,this._prependedInlineCompletionItems=[],this._rangeVersionIdValue=0,this._rangeVersionId=(0,D.derived)(b=>{this.versionId.read(b);let w=!1;for(const E of this._inlineCompletions)w=w||E._updateRange(this.textModel);return w&&this._rangeVersionIdValue++,this._rangeVersionIdValue});const v=p.deltaDecorations([],d.completions.map(b=>({range:b.range,options:{description:\"inline-completion-tracking-range\"}})));this._inlineCompletions=d.completions.map((b,w)=>new r(b,v[w],this._rangeVersionId))}clone(){return this._refCount++,this}dispose(){if(this._refCount--,this._refCount===0){setTimeout(()=>{this.textModel.isDisposed()||this.textModel.deltaDecorations(this._inlineCompletions.map(d=>d.decorationId),[])},0),this.inlineCompletionProviderResult.dispose();for(const d of this._prependedInlineCompletionItems)d.source.removeRef()}}prepend(d,l,p){p&&d.source.addRef();const m=this.textModel.deltaDecorations([],[{range:l,options:{description:\"inline-completion-tracking-range\"}}])[0];this._inlineCompletions.unshift(new r(d,m,this._rangeVersionId,l)),this._prependedInlineCompletionItems.push(d)}}e.UpToDateInlineCompletions=h;class r{get forwardStable(){var d;return(d=this.inlineCompletion.source.inlineCompletions.enableForwardStability)!==null&&d!==void 0?d:!1}constructor(d,l,p,m){this.inlineCompletion=d,this.decorationId=l,this.rangeVersion=p,this.semanticId=JSON.stringify([this.inlineCompletion.filterText,this.inlineCompletion.insertText,this.inlineCompletion.range.getStartPosition().toString()]),this._isValid=!0,this._updatedRange=m??d.range}toInlineCompletion(d){return this.inlineCompletion.withRange(this._getUpdatedRange(d))}toSingleTextEdit(d){return new s.SingleTextEdit(this._getUpdatedRange(d),this.inlineCompletion.insertText)}isVisible(d,l,p){const m=this._toFilterTextReplacement(p).removeCommonPrefix(d);if(!this._isValid||!this.inlineCompletion.range.getStartPosition().equals(this._getUpdatedRange(p).getStartPosition())||l.lineNumber!==m.range.startLineNumber)return!1;const v=d.getValueInRange(m.range,1).toLowerCase(),b=m.text.toLowerCase(),w=Math.max(0,l.column-m.range.startColumn);let E=b.substring(0,w),I=b.substring(w),M=v.substring(0,w),P=v.substring(w);const x=d.getLineIndentColumn(m.range.startLineNumber);return m.range.startColumn<=x&&(M=M.trimStart(),M.length===0&&(P=P.trimStart()),E=E.trimStart(),E.length===0&&(I=I.trimStart())),E.startsWith(M)&&!!(0,k.matchesSubString)(P,I)}canBeReused(d,l){return this._isValid&&this._getUpdatedRange(void 0).containsPosition(l)&&this.isVisible(d,l,void 0)&&!this._isSmallerThanOriginal(void 0)}_toFilterTextReplacement(d){return new s.SingleTextEdit(this._getUpdatedRange(d),this.inlineCompletion.filterText)}_isSmallerThanOriginal(d){return c(this._getUpdatedRange(d)).isBefore(c(this.inlineCompletion.range))}_getUpdatedRange(d){return this.rangeVersion.read(d),this._updatedRange}_updateRange(d){const l=d.getDecorationRange(this.decorationId);return l?this._updatedRange.equalsRange(l)?!1:(this._updatedRange=l,!0):(this._isValid=!1,!0)}}e.InlineCompletionWithUpdatedRange=r;function c(o){return o.startLineNumber===o.endLineNumber?new S.Position(1,1+o.endColumn-o.startColumn):new S.Position(1+o.endLineNumber-o.startLineNumber,o.endColumn)}}),define(ne[780],se([1,0,11,245,5,24,110,32,295,243,244]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MoveLinesCommand=void 0;let s=class{constructor(n,t,a,u){this._languageConfigurationService=u,this._selection=n,this._isMovingDown=t,this._autoIndent=a,this._selectionId=null,this._moveEndLineSelectionShrink=!1}getEditOperations(n,t){const a=n.getLineCount();if(this._isMovingDown&&this._selection.endLineNumber===a){this._selectionId=t.trackSelection(this._selection);return}if(!this._isMovingDown&&this._selection.startLineNumber===1){this._selectionId=t.trackSelection(this._selection);return}this._moveEndPositionDown=!1;let u=this._selection;u.startLineNumber<u.endLineNumber&&u.endColumn===1&&(this._moveEndPositionDown=!0,u=u.setEndPosition(u.endLineNumber-1,n.getLineMaxColumn(u.endLineNumber-1)));const{tabSize:h,indentSize:r,insertSpaces:c}=n.getOptions(),o=this.buildIndentConverter(h,r,c),d={tokenization:{getLineTokens:l=>n.tokenization.getLineTokens(l),getLanguageId:()=>n.getLanguageId(),getLanguageIdAtPosition:(l,p)=>n.getLanguageIdAtPosition(l,p)},getLineContent:null};if(u.startLineNumber===u.endLineNumber&&n.getLineMaxColumn(u.startLineNumber)===1){const l=u.startLineNumber,p=this._isMovingDown?l+1:l-1;n.getLineMaxColumn(p)===1?t.addEditOperation(new y.Range(1,1,1,1),null):(t.addEditOperation(new y.Range(l,1,l,1),n.getLineContent(p)),t.addEditOperation(new y.Range(p,1,p,n.getLineMaxColumn(p)),null)),u=new D.Selection(p,1,p,1)}else{let l,p;if(this._isMovingDown){l=u.endLineNumber+1,p=n.getLineContent(l),t.addEditOperation(new y.Range(l-1,n.getLineMaxColumn(l-1),l,n.getLineMaxColumn(l)),null);let m=p;if(this.shouldAutoIndent(n,u)){const v=this.matchEnterRule(n,o,h,l,u.startLineNumber-1);if(v!==null){const w=L.getLeadingWhitespace(n.getLineContent(l)),E=v+_.getSpaceCnt(w,h);m=_.generateIndent(E,h,c)+this.trimStart(p)}else{d.getLineContent=E=>E===u.startLineNumber?n.getLineContent(l):n.getLineContent(E);const w=(0,g.getGoodIndentForLine)(this._autoIndent,d,n.getLanguageIdAtPosition(l,1),u.startLineNumber,o,this._languageConfigurationService);if(w!==null){const E=L.getLeadingWhitespace(n.getLineContent(l)),I=_.getSpaceCnt(w,h),M=_.getSpaceCnt(E,h);I!==M&&(m=_.generateIndent(I,h,c)+this.trimStart(p))}}t.addEditOperation(new y.Range(u.startLineNumber,1,u.startLineNumber,1),m+`\n`);const b=this.matchEnterRuleMovingDown(n,o,h,u.startLineNumber,l,m);if(b!==null)b!==0&&this.getIndentEditsOfMovingBlock(n,t,u,h,c,b);else{d.getLineContent=E=>E===u.startLineNumber?m:E>=u.startLineNumber+1&&E<=u.endLineNumber+1?n.getLineContent(E-1):n.getLineContent(E);const w=(0,g.getGoodIndentForLine)(this._autoIndent,d,n.getLanguageIdAtPosition(l,1),u.startLineNumber+1,o,this._languageConfigurationService);if(w!==null){const E=L.getLeadingWhitespace(n.getLineContent(u.startLineNumber)),I=_.getSpaceCnt(w,h),M=_.getSpaceCnt(E,h);if(I!==M){const P=I-M;this.getIndentEditsOfMovingBlock(n,t,u,h,c,P)}}}}else t.addEditOperation(new y.Range(u.startLineNumber,1,u.startLineNumber,1),m+`\n`)}else if(l=u.startLineNumber-1,p=n.getLineContent(l),t.addEditOperation(new y.Range(l,1,l+1,1),null),t.addEditOperation(new y.Range(u.endLineNumber,n.getLineMaxColumn(u.endLineNumber),u.endLineNumber,n.getLineMaxColumn(u.endLineNumber)),`\n`+p),this.shouldAutoIndent(n,u)){d.getLineContent=v=>v===l?n.getLineContent(u.startLineNumber):n.getLineContent(v);const m=this.matchEnterRule(n,o,h,u.startLineNumber,u.startLineNumber-2);if(m!==null)m!==0&&this.getIndentEditsOfMovingBlock(n,t,u,h,c,m);else{const v=(0,g.getGoodIndentForLine)(this._autoIndent,d,n.getLanguageIdAtPosition(u.startLineNumber,1),l,o,this._languageConfigurationService);if(v!==null){const b=L.getLeadingWhitespace(n.getLineContent(u.startLineNumber)),w=_.getSpaceCnt(v,h),E=_.getSpaceCnt(b,h);if(w!==E){const I=w-E;this.getIndentEditsOfMovingBlock(n,t,u,h,c,I)}}}}}this._selectionId=t.trackSelection(u)}buildIndentConverter(n,t,a){return{shiftIndent:u=>k.ShiftCommand.shiftIndent(u,u.length+1,n,t,a),unshiftIndent:u=>k.ShiftCommand.unshiftIndent(u,u.length+1,n,t,a)}}parseEnterResult(n,t,a,u,h){if(h){let r=h.indentation;h.indentAction===S.IndentAction.None||h.indentAction===S.IndentAction.Indent?r=h.indentation+h.appendText:h.indentAction===S.IndentAction.IndentOutdent?r=h.indentation:h.indentAction===S.IndentAction.Outdent&&(r=t.unshiftIndent(h.indentation)+h.appendText);const c=n.getLineContent(u);if(this.trimStart(c).indexOf(this.trimStart(r))>=0){const o=L.getLeadingWhitespace(n.getLineContent(u));let d=L.getLeadingWhitespace(r);const l=(0,g.getIndentMetadata)(n,u,this._languageConfigurationService);l!==null&&l&2&&(d=t.unshiftIndent(d));const p=_.getSpaceCnt(d,a),m=_.getSpaceCnt(o,a);return p-m}}return null}matchEnterRuleMovingDown(n,t,a,u,h,r){if(L.lastNonWhitespaceIndex(r)>=0){const c=n.getLineMaxColumn(h),o=(0,C.getEnterAction)(this._autoIndent,n,new y.Range(h,c,h,c),this._languageConfigurationService);return this.parseEnterResult(n,t,a,u,o)}else{let c=u-1;for(;c>=1;){const l=n.getLineContent(c);if(L.lastNonWhitespaceIndex(l)>=0)break;c--}if(c<1||u>n.getLineCount())return null;const o=n.getLineMaxColumn(c),d=(0,C.getEnterAction)(this._autoIndent,n,new y.Range(c,o,c,o),this._languageConfigurationService);return this.parseEnterResult(n,t,a,u,d)}}matchEnterRule(n,t,a,u,h,r){let c=h;for(;c>=1;){let l;if(c===h&&r!==void 0?l=r:l=n.getLineContent(c),L.lastNonWhitespaceIndex(l)>=0)break;c--}if(c<1||u>n.getLineCount())return null;const o=n.getLineMaxColumn(c),d=(0,C.getEnterAction)(this._autoIndent,n,new y.Range(c,o,c,o),this._languageConfigurationService);return this.parseEnterResult(n,t,a,u,d)}trimStart(n){return n.replace(/^\\s+/,\"\")}shouldAutoIndent(n,t){if(this._autoIndent<4||!n.tokenization.isCheapToTokenize(t.startLineNumber))return!1;const a=n.getLanguageIdAtPosition(t.startLineNumber,1),u=n.getLanguageIdAtPosition(t.endLineNumber,1);return!(a!==u||this._languageConfigurationService.getLanguageConfiguration(a).indentRulesSupport===null)}getIndentEditsOfMovingBlock(n,t,a,u,h,r){for(let c=a.startLineNumber;c<=a.endLineNumber;c++){const o=n.getLineContent(c),d=L.getLeadingWhitespace(o),p=_.getSpaceCnt(d,u)+r,m=_.generateIndent(p,u,h);m!==d&&(t.addEditOperation(new y.Range(c,1,c,d.length+1),m),c===a.endLineNumber&&a.endColumn<=d.length+1&&m===\"\"&&(this._moveEndLineSelectionShrink=!0))}}computeCursorState(n,t){let a=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(a=a.setEndPosition(a.endLineNumber+1,1)),this._moveEndLineSelectionShrink&&a.startLineNumber<a.endLineNumber&&(a=a.setEndPosition(a.endLineNumber,2)),a}};e.MoveLinesCommand=s,e.MoveLinesCommand=s=ke([fe(3,f.ILanguageConfigurationService)],s)}),define(ne[117],se([1,0,183,89,9,6,2,59,41,78,326,56,455]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";var i;Object.defineProperty(e,\"__esModule\",{value:!0}),e.openLinkFromMarkdown=e.MarkdownRenderer=void 0;let n=i=class{constructor(h,r,c){this._options=h,this._languageService=r,this._openerService=c,this._onDidRenderAsync=new D.Emitter,this.onDidRenderAsync=this._onDidRenderAsync.event}dispose(){this._onDidRenderAsync.dispose()}render(h,r,c){if(!h)return{element:document.createElement(\"span\"),dispose:()=>{}};const o=new S.DisposableStore,d=o.add((0,L.renderMarkdown)(h,Object.assign(Object.assign({},this._getRenderOptions(h,o)),r),c));return d.element.classList.add(\"rendered-markdown\"),{element:d.element,dispose:()=>o.dispose()}}_getRenderOptions(h,r){return{codeBlockRenderer:(c,o)=>we(this,void 0,void 0,function*(){var d,l,p;let m;c?m=this._languageService.getLanguageIdByLanguageName(c):this._options.editor&&(m=(d=this._options.editor.getModel())===null||d===void 0?void 0:d.getLanguageId()),m||(m=g.PLAINTEXT_LANGUAGE_ID);const v=yield(0,C.tokenizeToString)(this._languageService,o,m),b=document.createElement(\"span\");if(b.innerHTML=(p=(l=i._ttpTokenizer)===null||l===void 0?void 0:l.createHTML(v))!==null&&p!==void 0?p:v,this._options.editor){const w=this._options.editor.getOption(49);(0,f.applyFontInfo)(b,w)}else this._options.codeBlockFontFamily&&(b.style.fontFamily=this._options.codeBlockFontFamily);return this._options.codeBlockFontSize!==void 0&&(b.style.fontSize=this._options.codeBlockFontSize),b}),asyncRenderCallback:()=>this._onDidRenderAsync.fire(),actionHandler:{callback:c=>t(this._openerService,c,h.isTrusted),disposables:r}}}};e.MarkdownRenderer=n,n._ttpTokenizer=(0,k.createTrustedTypesPolicy)(\"tokenizeToString\",{createHTML(u){return u}}),e.MarkdownRenderer=n=i=ke([fe(1,_.ILanguageService),fe(2,s.IOpenerService)],n);function t(u,h,r){return we(this,void 0,void 0,function*(){try{return yield u.open(h,{fromUserGesture:!0,allowContributedOpeners:!0,allowCommands:a(r)})}catch(c){return(0,y.onUnexpectedError)(c),!1}})}e.openLinkFromMarkdown=t;function a(u){return u===!0?!0:u&&Array.isArray(u.enabledCommands)?u.enabledCommands:!1}}),define(ne[781],se([1,0,7,14,55,2,117,321,310]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MarginHoverWidget=void 0;const g=L.$;class C extends D.Disposable{constructor(n,t,a){super(),this._renderDisposeables=this._register(new D.DisposableStore),this._editor=n,this._isVisible=!1,this._messages=[],this._hover=this._register(new _.HoverWidget),this._hover.containerDomNode.classList.toggle(\"hidden\",!this._isVisible),this._markdownRenderer=this._register(new S.MarkdownRenderer({editor:this._editor},t,a)),this._computer=new s(this._editor),this._hoverOperation=this._register(new f.HoverOperation(this._editor,this._computer)),this._register(this._hoverOperation.onResult(u=>{this._withResult(u.value)})),this._register(this._editor.onDidChangeModelDecorations(()=>this._onModelDecorationsChanged())),this._register(this._editor.onDidChangeConfiguration(u=>{u.hasChanged(49)&&this._updateFont()})),this._editor.addOverlayWidget(this)}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return C.ID}getDomNode(){return this._hover.containerDomNode}getPosition(){return null}_updateFont(){Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName(\"code\")).forEach(t=>this._editor.applyFontInfo(t))}_onModelDecorationsChanged(){this._isVisible&&(this._hoverOperation.cancel(),this._hoverOperation.start(0))}startShowingAt(n){this._computer.lineNumber!==n&&(this._hoverOperation.cancel(),this.hide(),this._computer.lineNumber=n,this._hoverOperation.start(0))}hide(){this._computer.lineNumber=-1,this._hoverOperation.cancel(),this._isVisible&&(this._isVisible=!1,this._hover.containerDomNode.classList.toggle(\"hidden\",!this._isVisible))}_withResult(n){this._messages=n,this._messages.length>0?this._renderMessages(this._computer.lineNumber,this._messages):this.hide()}_renderMessages(n,t){this._renderDisposeables.clear();const a=document.createDocumentFragment();for(const u of t){const h=g(\"div.hover-row.markdown-hover\"),r=L.append(h,g(\"div.hover-contents\")),c=this._renderDisposeables.add(this._markdownRenderer.render(u.value));r.appendChild(c.element),a.appendChild(h)}this._updateContents(a),this._showAt(n)}_updateContents(n){this._hover.contentsDomNode.textContent=\"\",this._hover.contentsDomNode.appendChild(n),this._updateFont()}_showAt(n){this._isVisible||(this._isVisible=!0,this._hover.containerDomNode.classList.toggle(\"hidden\",!this._isVisible));const t=this._editor.getLayoutInfo(),a=this._editor.getTopForLineNumber(n),u=this._editor.getScrollTop(),h=this._editor.getOption(65),r=this._hover.containerDomNode.clientHeight,c=a-u-(r-h)/2;this._hover.containerDomNode.style.left=`${t.glyphMarginLeft+t.glyphMarginWidth}px`,this._hover.containerDomNode.style.top=`${Math.max(Math.round(c),0)}px`}}e.MarginHoverWidget=C,C.ID=\"editor.contrib.modesGlyphHoverWidget\";class s{get lineNumber(){return this._lineNumber}set lineNumber(n){this._lineNumber=n}constructor(n){this._editor=n,this._lineNumber=-1}computeSync(){const n=u=>({value:u}),t=this._editor.getLineDecorations(this._lineNumber),a=[];if(!t)return a;for(const u of t){if(!u.options.glyphMarginClassName)continue;const h=u.options.glyphMarginHoverMessage;!h||(0,y.isEmptyMarkdownString)(h)||a.push(...(0,k.asArray)(h).map(n))}return a}}}),define(ne[344],se([1,0,7,75,25,26,6,55,2,117,223,703,8]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SuggestDetailsOverlay=e.SuggestDetailsWidget=e.canExpandCompletionItem=void 0;function n(u){return!!u&&!!(u.completion.documentation||u.completion.detail&&u.completion.detail!==u.completion.label)}e.canExpandCompletionItem=n;let t=class{constructor(h,r){this._editor=h,this._onDidClose=new S.Emitter,this.onDidClose=this._onDidClose.event,this._onDidChangeContents=new S.Emitter,this.onDidChangeContents=this._onDidChangeContents.event,this._disposables=new _.DisposableStore,this._renderDisposeable=new _.DisposableStore,this._borderWidth=1,this._size=new L.Dimension(330,0),this.domNode=L.$(\".suggest-details\"),this.domNode.classList.add(\"no-docs\"),this._markdownRenderer=r.createInstance(g.MarkdownRenderer,{editor:h}),this._body=L.$(\".body\"),this._scrollbar=new k.DomScrollableElement(this._body,{alwaysConsumeMouseWheel:!0}),L.append(this.domNode,this._scrollbar.getDomNode()),this._disposables.add(this._scrollbar),this._header=L.append(this._body,L.$(\".header\")),this._close=L.append(this._header,L.$(\"span\"+D.ThemeIcon.asCSSSelector(y.Codicon.close))),this._close.title=s.localize(0,null),this._type=L.append(this._header,L.$(\"p.type\")),this._docs=L.append(this._body,L.$(\"p.docs\")),this._configureFont(),this._disposables.add(this._editor.onDidChangeConfiguration(c=>{c.hasChanged(49)&&this._configureFont()}))}dispose(){this._disposables.dispose(),this._renderDisposeable.dispose()}_configureFont(){const h=this._editor.getOptions(),r=h.get(49),c=r.getMassagedFontFamily(),o=h.get(117)||r.fontSize,d=h.get(118)||r.lineHeight,l=r.fontWeight,p=`${o}px`,m=`${d}px`;this.domNode.style.fontSize=p,this.domNode.style.lineHeight=`${d/o}`,this.domNode.style.fontWeight=l,this.domNode.style.fontFeatureSettings=r.fontFeatureSettings,this._type.style.fontFamily=c,this._close.style.height=m,this._close.style.width=m}getLayoutInfo(){const h=this._editor.getOption(118)||this._editor.getOption(49).lineHeight,r=this._borderWidth,c=r*2;return{lineHeight:h,borderWidth:r,borderHeight:c,verticalPadding:22,horizontalPadding:14}}renderLoading(){this._type.textContent=s.localize(1,null),this._docs.textContent=\"\",this.domNode.classList.remove(\"no-docs\",\"no-type\"),this.layout(this.size.width,this.getLayoutInfo().lineHeight*2),this._onDidChangeContents.fire(this)}renderItem(h,r){var c,o;this._renderDisposeable.clear();let{detail:d,documentation:l}=h.completion;if(r){let p=\"\";p+=`score: ${h.score[0]}\n`,p+=`prefix: ${(c=h.word)!==null&&c!==void 0?c:\"(no prefix)\"}\n`,p+=`word: ${h.completion.filterText?h.completion.filterText+\" (filterText)\":h.textLabel}\n`,p+=`distance: ${h.distance} (localityBonus-setting)\n`,p+=`index: ${h.idx}, based on ${h.completion.sortText&&`sortText: \"${h.completion.sortText}\"`||\"label\"}\n`,p+=`commit_chars: ${(o=h.completion.commitCharacters)===null||o===void 0?void 0:o.join(\"\")}\n`,l=new f.MarkdownString().appendCodeblock(\"empty\",p),d=`Provider: ${h.provider._debugDisplayName}`}if(!r&&!n(h)){this.clearContents();return}if(this.domNode.classList.remove(\"no-docs\",\"no-type\"),d){const p=d.length>1e5?`${d.substr(0,1e5)}\\u2026`:d;this._type.textContent=p,this._type.title=p,L.show(this._type),this._type.classList.toggle(\"auto-wrap\",!/\\r?\\n^\\s+/gmi.test(p))}else L.clearNode(this._type),this._type.title=\"\",L.hide(this._type),this.domNode.classList.add(\"no-type\");if(L.clearNode(this._docs),typeof l==\"string\")this._docs.classList.remove(\"markdown-docs\"),this._docs.textContent=l;else if(l){this._docs.classList.add(\"markdown-docs\"),L.clearNode(this._docs);const p=this._markdownRenderer.render(l);this._docs.appendChild(p.element),this._renderDisposeable.add(p),this._renderDisposeable.add(this._markdownRenderer.onDidRenderAsync(()=>{this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}))}this.domNode.style.userSelect=\"text\",this.domNode.tabIndex=-1,this._close.onmousedown=p=>{p.preventDefault(),p.stopPropagation()},this._close.onclick=p=>{p.preventDefault(),p.stopPropagation(),this._onDidClose.fire()},this._body.scrollTop=0,this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}clearContents(){this.domNode.classList.add(\"no-docs\"),this._type.textContent=\"\",this._docs.textContent=\"\"}get size(){return this._size}layout(h,r){const c=new L.Dimension(h,r);L.Dimension.equals(c,this._size)||(this._size=c,L.size(this.domNode,h,r)),this._scrollbar.scanDomNode()}scrollDown(h=8){this._body.scrollTop+=h}scrollUp(h=8){this._body.scrollTop-=h}scrollTop(){this._body.scrollTop=0}scrollBottom(){this._body.scrollTop=this._body.scrollHeight}pageDown(){this.scrollDown(80)}pageUp(){this.scrollUp(80)}set borderWidth(h){this._borderWidth=h}get borderWidth(){return this._borderWidth}};e.SuggestDetailsWidget=t,e.SuggestDetailsWidget=t=ke([fe(1,i.IInstantiationService)],t);class a{constructor(h,r){this.widget=h,this._editor=r,this._disposables=new _.DisposableStore,this._added=!1,this._preferAlignAtTop=!0,this._resizable=new C.ResizableHTMLElement,this._resizable.domNode.classList.add(\"suggest-details-container\"),this._resizable.domNode.appendChild(h.domNode),this._resizable.enableSashes(!1,!0,!0,!1);let c,o,d=0,l=0;this._disposables.add(this._resizable.onDidWillResize(()=>{c=this._topLeft,o=this._resizable.size})),this._disposables.add(this._resizable.onDidResize(p=>{if(c&&o){this.widget.layout(p.dimension.width,p.dimension.height);let m=!1;p.west&&(l=o.width-p.dimension.width,m=!0),p.north&&(d=o.height-p.dimension.height,m=!0),m&&this._applyTopLeft({top:c.top+d,left:c.left+l})}p.done&&(c=void 0,o=void 0,d=0,l=0,this._userSize=p.dimension)})),this._disposables.add(this.widget.onDidChangeContents(()=>{var p;this._anchorBox&&this._placeAtAnchor(this._anchorBox,(p=this._userSize)!==null&&p!==void 0?p:this.widget.size,this._preferAlignAtTop)}))}dispose(){this._resizable.dispose(),this._disposables.dispose(),this.hide()}getId(){return\"suggest.details\"}getDomNode(){return this._resizable.domNode}getPosition(){return null}show(){this._added||(this._editor.addOverlayWidget(this),this.getDomNode().style.position=\"fixed\",this._added=!0)}hide(h=!1){this._resizable.clearSashHoverState(),this._added&&(this._editor.removeOverlayWidget(this),this._added=!1,this._anchorBox=void 0,this._topLeft=void 0),h&&(this._userSize=void 0,this.widget.clearContents())}placeAtAnchor(h,r){var c;const o=h.getBoundingClientRect();this._anchorBox=o,this._preferAlignAtTop=r,this._placeAtAnchor(this._anchorBox,(c=this._userSize)!==null&&c!==void 0?c:this.widget.size,r)}_placeAtAnchor(h,r,c){var o;const d=L.getClientArea(document.body),l=this.widget.getLayoutInfo(),p=new L.Dimension(220,2*l.lineHeight),m=h.top,v=function(){const N=d.width-(h.left+h.width+l.borderWidth+l.horizontalPadding),F=-l.borderWidth+h.left+h.width,O=new L.Dimension(N,d.height-h.top-l.borderHeight-l.verticalPadding),W=O.with(void 0,h.top+h.height-l.borderHeight-l.verticalPadding);return{top:m,left:F,fit:N-r.width,maxSizeTop:O,maxSizeBottom:W,minSize:p.with(Math.min(N,p.width))}}(),b=function(){const N=h.left-l.borderWidth-l.horizontalPadding,F=Math.max(l.horizontalPadding,h.left-r.width-l.borderWidth),O=new L.Dimension(N,d.height-h.top-l.borderHeight-l.verticalPadding),W=O.with(void 0,h.top+h.height-l.borderHeight-l.verticalPadding);return{top:m,left:F,fit:N-r.width,maxSizeTop:O,maxSizeBottom:W,minSize:p.with(Math.min(N,p.width))}}(),w=function(){const N=h.left,F=-l.borderWidth+h.top+h.height,O=new L.Dimension(h.width-l.borderHeight,d.height-h.top-h.height-l.verticalPadding);return{top:F,left:N,fit:O.height-r.height,maxSizeBottom:O,maxSizeTop:O,minSize:p.with(O.width)}}(),E=[v,b,w],I=(o=E.find(N=>N.fit>=0))!==null&&o!==void 0?o:E.sort((N,F)=>F.fit-N.fit)[0],M=h.top+h.height-l.borderHeight;let P,x=r.height;const T=Math.max(I.maxSizeTop.height,I.maxSizeBottom.height);x>T&&(x=T);let A;c?x<=I.maxSizeTop.height?(P=!0,A=I.maxSizeTop):(P=!1,A=I.maxSizeBottom):x<=I.maxSizeBottom.height?(P=!1,A=I.maxSizeBottom):(P=!0,A=I.maxSizeTop),this._applyTopLeft({left:I.left,top:P?I.top:M-x}),this.getDomNode().style.position=\"fixed\",this._resizable.enableSashes(!P,I===v,P,I!==v),this._resizable.minSize=I.minSize,this._resizable.maxSize=A,this._resizable.layout(x,Math.min(A.width,r.width)),this.widget.layout(this._resizable.size.width,this._resizable.size.height)}_applyTopLeft(h){this._topLeft=h,this.getDomNode().style.left=`${this._topLeft.left}px`,this.getDomNode().style.top=`${this._topLeft.top}px`}}e.SuggestDetailsOverlay=a}),define(ne[345],se([1,0,14,65,47,20,22,28,98,37]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ConfigurationChangeEvent=e.Configuration=e.ConfigurationModelParser=e.ConfigurationModel=void 0;function C(u){return Object.isFrozen(u)?u:y.deepFreeze(u)}class s{constructor(h={},r=[],c=[],o){this._contents=h,this._keys=r,this._overrides=c,this.raw=o,this.overrideConfigurations=new Map}get rawConfiguration(){var h;if(!this._rawConfiguration)if(!((h=this.raw)===null||h===void 0)&&h.length){const r=this.raw.map(c=>{if(c instanceof s)return c;const o=new i(\"\");return o.parseRaw(c),o.configurationModel});this._rawConfiguration=r.reduce((c,o)=>o===c?o:c.merge(o),r[0])}else this._rawConfiguration=this;return this._rawConfiguration}get contents(){return this._contents}get overrides(){return this._overrides}get keys(){return this._keys}isEmpty(){return this._keys.length===0&&Object.keys(this._contents).length===0&&this._overrides.length===0}getValue(h){return h?(0,f.getConfigurationValue)(this.contents,h):this.contents}inspect(h,r){const c=this.rawConfiguration.getValue(h),o=r?this.rawConfiguration.getOverrideValue(h,r):void 0,d=r?this.rawConfiguration.override(r).getValue(h):c;return{value:c,override:o,merged:d}}getOverrideValue(h,r){const c=this.getContentsForOverrideIdentifer(r);return c?h?(0,f.getConfigurationValue)(c,h):c:void 0}override(h){let r=this.overrideConfigurations.get(h);return r||(r=this.createOverrideConfigurationModel(h),this.overrideConfigurations.set(h,r)),r}merge(...h){var r,c;const o=y.deepClone(this.contents),d=y.deepClone(this.overrides),l=[...this.keys],p=!((r=this.raw)===null||r===void 0)&&r.length?[...this.raw]:[this];for(const m of h)if(p.push(...!((c=m.raw)===null||c===void 0)&&c.length?m.raw:[m]),!m.isEmpty()){this.mergeContents(o,m.contents);for(const v of m.overrides){const[b]=d.filter(w=>L.equals(w.identifiers,v.identifiers));b?(this.mergeContents(b.contents,v.contents),b.keys.push(...v.keys),b.keys=L.distinct(b.keys)):d.push(y.deepClone(v))}for(const v of m.keys)l.indexOf(v)===-1&&l.push(v)}return new s(o,l,d,p.every(m=>m instanceof s)?void 0:p)}createOverrideConfigurationModel(h){const r=this.getContentsForOverrideIdentifer(h);if(!r||typeof r!=\"object\"||!Object.keys(r).length)return this;const c={};for(const o of L.distinct([...Object.keys(this.contents),...Object.keys(r)])){let d=this.contents[o];const l=r[o];l&&(typeof d==\"object\"&&typeof l==\"object\"?(d=y.deepClone(d),this.mergeContents(d,l)):d=l),c[o]=d}return new s(c,this.keys,this.overrides)}mergeContents(h,r){for(const c of Object.keys(r)){if(c in h&&D.isObject(h[c])&&D.isObject(r[c])){this.mergeContents(h[c],r[c]);continue}h[c]=y.deepClone(r[c])}}getContentsForOverrideIdentifer(h){let r=null,c=null;const o=d=>{d&&(c?this.mergeContents(c,d):c=y.deepClone(d))};for(const d of this.overrides)d.identifiers.length===1&&d.identifiers[0]===h?r=d.contents:d.identifiers.includes(h)&&o(d.contents);return o(r),c}toJSON(){return{contents:this.contents,overrides:this.overrides,keys:this.keys}}addValue(h,r){this.updateValue(h,r,!0)}setValue(h,r){this.updateValue(h,r,!1)}removeValue(h){const r=this.keys.indexOf(h);r!==-1&&(this.keys.splice(r,1),(0,f.removeFromValueTree)(this.contents,h),_.OVERRIDE_PROPERTY_REGEX.test(h)&&this.overrides.splice(this.overrides.findIndex(c=>L.equals(c.identifiers,(0,_.overrideIdentifiersFromKey)(h))),1))}updateValue(h,r,c){(0,f.addToValueTree)(this.contents,h,r,o=>console.error(o)),c=c||this.keys.indexOf(h)===-1,c&&this.keys.push(h),_.OVERRIDE_PROPERTY_REGEX.test(h)&&this.overrides.push({identifiers:(0,_.overrideIdentifiersFromKey)(h),keys:Object.keys(this.contents[h]),contents:(0,f.toValuesTree)(this.contents[h],o=>console.error(o))})}}e.ConfigurationModel=s;class i{constructor(h){this._name=h,this._raw=null,this._configurationModel=null,this._restrictedConfigurations=[]}get configurationModel(){return this._configurationModel||new s}parseRaw(h,r){this._raw=h;const{contents:c,keys:o,overrides:d,restricted:l,hasExcludedProperties:p}=this.doParseRaw(h,r);this._configurationModel=new s(c,o,d,p?[h]:void 0),this._restrictedConfigurations=l||[]}doParseRaw(h,r){const c=g.Registry.as(_.Extensions.Configuration).getConfigurationProperties(),o=this.filter(h,c,!0,r);h=o.raw;const d=(0,f.toValuesTree)(h,m=>console.error(`Conflict in settings file ${this._name}: ${m}`)),l=Object.keys(h),p=this.toOverrides(h,m=>console.error(`Conflict in settings file ${this._name}: ${m}`));return{contents:d,keys:l,overrides:p,restricted:o.restricted,hasExcludedProperties:o.hasExcludedProperties}}filter(h,r,c,o){var d,l,p;let m=!1;if(!o?.scopes&&!o?.skipRestricted&&!(!((d=o?.exclude)===null||d===void 0)&&d.length))return{raw:h,restricted:[],hasExcludedProperties:m};const v={},b=[];for(const w in h)if(_.OVERRIDE_PROPERTY_REGEX.test(w)&&c){const E=this.filter(h[w],r,!1,o);v[w]=E.raw,m=m||E.hasExcludedProperties,b.push(...E.restricted)}else{const E=r[w],I=E?typeof E.scope<\"u\"?E.scope:3:void 0;E?.restricted&&b.push(w),!(!((l=o.exclude)===null||l===void 0)&&l.includes(w))&&(!((p=o.include)===null||p===void 0)&&p.includes(w)||(I===void 0||o.scopes===void 0||o.scopes.includes(I))&&!(o.skipRestricted&&E?.restricted))?v[w]=h[w]:m=!0}return{raw:v,restricted:b,hasExcludedProperties:m}}toOverrides(h,r){const c=[];for(const o of Object.keys(h))if(_.OVERRIDE_PROPERTY_REGEX.test(o)){const d={};for(const l in h[o])d[l]=h[o][l];c.push({identifiers:(0,_.overrideIdentifiersFromKey)(o),keys:Object.keys(d),contents:(0,f.toValuesTree)(d,r)})}return c}}e.ConfigurationModelParser=i;class n{constructor(h,r,c,o,d,l,p,m,v,b,w,E,I){this.key=h,this.overrides=r,this._value=c,this.overrideIdentifiers=o,this.defaultConfiguration=d,this.policyConfiguration=l,this.applicationConfiguration=p,this.userConfiguration=m,this.localUserConfiguration=v,this.remoteUserConfiguration=b,this.workspaceConfiguration=w,this.folderConfigurationModel=E,this.memoryConfigurationModel=I}inspect(h,r,c){const o=h.inspect(r,c);return{get value(){return C(o.value)},get override(){return C(o.override)},get merged(){return C(o.merged)}}}get userInspectValue(){return this._userInspectValue||(this._userInspectValue=this.inspect(this.userConfiguration,this.key,this.overrides.overrideIdentifier)),this._userInspectValue}get user(){return this.userInspectValue.value!==void 0||this.userInspectValue.override!==void 0?{value:this.userInspectValue.value,override:this.userInspectValue.override}:void 0}}class t{constructor(h,r,c,o,d=new s,l=new s,p=new k.ResourceMap,m=new s,v=new k.ResourceMap){this._defaultConfiguration=h,this._policyConfiguration=r,this._applicationConfiguration=c,this._localUserConfiguration=o,this._remoteUserConfiguration=d,this._workspaceConfiguration=l,this._folderConfigurations=p,this._memoryConfiguration=m,this._memoryConfigurationByResource=v,this._workspaceConsolidatedConfiguration=null,this._foldersConsolidatedConfigurations=new k.ResourceMap,this._userConfiguration=null}getValue(h,r,c){return this.getConsolidatedConfigurationModel(h,r,c).getValue(h)}updateValue(h,r,c={}){let o;c.resource?(o=this._memoryConfigurationByResource.get(c.resource),o||(o=new s,this._memoryConfigurationByResource.set(c.resource,o))):o=this._memoryConfiguration,r===void 0?o.removeValue(h):o.setValue(h,r),c.resource||(this._workspaceConsolidatedConfiguration=null)}inspect(h,r,c){const o=this.getConsolidatedConfigurationModel(h,r,c),d=this.getFolderConfigurationModelForResource(r.resource,c),l=r.resource?this._memoryConfigurationByResource.get(r.resource)||this._memoryConfiguration:this._memoryConfiguration,p=new Set;for(const m of o.overrides)for(const v of m.identifiers)o.getOverrideValue(h,v)!==void 0&&p.add(v);return new n(h,r,o.getValue(h),p.size?[...p]:void 0,this._defaultConfiguration,this._policyConfiguration.isEmpty()?void 0:this._policyConfiguration,this.applicationConfiguration.isEmpty()?void 0:this.applicationConfiguration,this.userConfiguration,this.localUserConfiguration,this.remoteUserConfiguration,c?this._workspaceConfiguration:void 0,d||void 0,l)}get applicationConfiguration(){return this._applicationConfiguration}get userConfiguration(){return this._userConfiguration||(this._userConfiguration=this._remoteUserConfiguration.isEmpty()?this._localUserConfiguration:this._localUserConfiguration.merge(this._remoteUserConfiguration)),this._userConfiguration}get localUserConfiguration(){return this._localUserConfiguration}get remoteUserConfiguration(){return this._remoteUserConfiguration}getConsolidatedConfigurationModel(h,r,c){let o=this.getConsolidatedConfigurationModelForResource(r,c);return r.overrideIdentifier&&(o=o.override(r.overrideIdentifier)),!this._policyConfiguration.isEmpty()&&this._policyConfiguration.getValue(h)!==void 0&&(o=o.merge(this._policyConfiguration)),o}getConsolidatedConfigurationModelForResource({resource:h},r){let c=this.getWorkspaceConsolidatedConfiguration();if(r&&h){const o=r.getFolder(h);o&&(c=this.getFolderConsolidatedConfiguration(o.uri)||c);const d=this._memoryConfigurationByResource.get(h);d&&(c=c.merge(d))}return c}getWorkspaceConsolidatedConfiguration(){return this._workspaceConsolidatedConfiguration||(this._workspaceConsolidatedConfiguration=this._defaultConfiguration.merge(this.applicationConfiguration,this.userConfiguration,this._workspaceConfiguration,this._memoryConfiguration)),this._workspaceConsolidatedConfiguration}getFolderConsolidatedConfiguration(h){let r=this._foldersConsolidatedConfigurations.get(h);if(!r){const c=this.getWorkspaceConsolidatedConfiguration(),o=this._folderConfigurations.get(h);o?(r=c.merge(o),this._foldersConsolidatedConfigurations.set(h,r)):r=c}return r}getFolderConfigurationModelForResource(h,r){if(r&&h){const c=r.getFolder(h);if(c)return this._folderConfigurations.get(c.uri)}}toData(){return{defaults:{contents:this._defaultConfiguration.contents,overrides:this._defaultConfiguration.overrides,keys:this._defaultConfiguration.keys},policy:{contents:this._policyConfiguration.contents,overrides:this._policyConfiguration.overrides,keys:this._policyConfiguration.keys},application:{contents:this.applicationConfiguration.contents,overrides:this.applicationConfiguration.overrides,keys:this.applicationConfiguration.keys},user:{contents:this.userConfiguration.contents,overrides:this.userConfiguration.overrides,keys:this.userConfiguration.keys},workspace:{contents:this._workspaceConfiguration.contents,overrides:this._workspaceConfiguration.overrides,keys:this._workspaceConfiguration.keys},folders:[...this._folderConfigurations.keys()].reduce((h,r)=>{const{contents:c,overrides:o,keys:d}=this._folderConfigurations.get(r);return h.push([r,{contents:c,overrides:o,keys:d}]),h},[])}}static parse(h){const r=this.parseConfigurationModel(h.defaults),c=this.parseConfigurationModel(h.policy),o=this.parseConfigurationModel(h.application),d=this.parseConfigurationModel(h.user),l=this.parseConfigurationModel(h.workspace),p=h.folders.reduce((m,v)=>(m.set(S.URI.revive(v[0]),this.parseConfigurationModel(v[1])),m),new k.ResourceMap);return new t(r,c,o,d,new s,l,p,new s,new k.ResourceMap)}static parseConfigurationModel(h){return new s(h.contents,h.keys,h.overrides)}}e.Configuration=t;class a{constructor(h,r,c,o){this.change=h,this.previous=r,this.currentConfiguraiton=c,this.currentWorkspace=o,this._marker=`\n`,this._markerCode1=this._marker.charCodeAt(0),this._markerCode2=\".\".charCodeAt(0),this.affectedKeys=new Set,this._previousConfiguration=void 0;for(const d of h.keys)this.affectedKeys.add(d);for(const[,d]of h.overrides)for(const l of d)this.affectedKeys.add(l);this._affectsConfigStr=this._marker;for(const d of this.affectedKeys)this._affectsConfigStr+=d+this._marker}get previousConfiguration(){return!this._previousConfiguration&&this.previous&&(this._previousConfiguration=t.parse(this.previous.data)),this._previousConfiguration}affectsConfiguration(h,r){var c;const o=this._marker+h,d=this._affectsConfigStr.indexOf(o);if(d<0)return!1;const l=d+o.length;if(l>=this._affectsConfigStr.length)return!1;const p=this._affectsConfigStr.charCodeAt(l);if(p!==this._markerCode1&&p!==this._markerCode2)return!1;if(r){const m=this.previousConfiguration?this.previousConfiguration.getValue(h,r,(c=this.previous)===null||c===void 0?void 0:c.workspace):void 0,v=this.currentConfiguraiton.getValue(h,r,this.currentWorkspace);return!y.equals(m,v)}return!0}}e.ConfigurationChangeEvent=a}),define(ne[782],se([1,0,2,345,98,37]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DefaultConfiguration=void 0;class S extends L.Disposable{constructor(){super(...arguments),this._configurationModel=new k.ConfigurationModel}get configurationModel(){return this._configurationModel}reload(){return this.resetConfigurationModel(),this.configurationModel}getConfigurationDefaultOverrides(){return{}}resetConfigurationModel(){this._configurationModel=new k.ConfigurationModel;const _=D.Registry.as(y.Extensions.Configuration).getConfigurationProperties();this.updateConfigurationModel(Object.keys(_),_)}updateConfigurationModel(_,g){const C=this.getConfigurationDefaultOverrides();for(const s of _){const i=C[s],n=g[s];i!==void 0?this._configurationModel.addValue(s,i):n?this._configurationModel.addValue(s,n.default):this._configurationModel.removeValue(s)}}}e.DefaultConfiguration=S}),define(ne[118],se([1,0,119,17,27,37,2,64]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Extensions=e.KeybindingsRegistry=void 0;class _{constructor(){this._coreKeybindings=new f.LinkedList,this._extensionKeybindings=[],this._cachedMergedKeybindings=null}static bindToCurrentPlatform(s){if(k.OS===1){if(s&&s.win)return s.win}else if(k.OS===2){if(s&&s.mac)return s.mac}else if(s&&s.linux)return s.linux;return s}registerKeybindingRule(s){const i=_.bindToCurrentPlatform(s),n=new S.DisposableStore;if(i&&i.primary){const t=(0,L.decodeKeybinding)(i.primary,k.OS);t&&n.add(this._registerDefaultKeybinding(t,s.id,s.args,s.weight,0,s.when))}if(i&&Array.isArray(i.secondary))for(let t=0,a=i.secondary.length;t<a;t++){const u=i.secondary[t],h=(0,L.decodeKeybinding)(u,k.OS);h&&n.add(this._registerDefaultKeybinding(h,s.id,s.args,s.weight,-t-1,s.when))}return n}registerCommandAndKeybindingRule(s){return(0,S.combinedDisposable)(this.registerKeybindingRule(s),y.CommandsRegistry.registerCommand(s))}_registerDefaultKeybinding(s,i,n,t,a,u){const h=this._coreKeybindings.push({keybinding:s,command:i,commandArgs:n,when:u,weight1:t,weight2:a,extensionId:null,isBuiltinExtension:!1});return this._cachedMergedKeybindings=null,(0,S.toDisposable)(()=>{h(),this._cachedMergedKeybindings=null})}getDefaultKeybindings(){return this._cachedMergedKeybindings||(this._cachedMergedKeybindings=Array.from(this._coreKeybindings).concat(this._extensionKeybindings),this._cachedMergedKeybindings.sort(g)),this._cachedMergedKeybindings.slice(0)}}e.KeybindingsRegistry=new _,e.Extensions={EditorModes:\"platform.keybindingsRegistry\"},D.Registry.add(e.Extensions.EditorModes,e.KeybindingsRegistry);function g(C,s){if(C.weight1!==s.weight1)return C.weight1-s.weight1;if(C.command&&s.command){if(C.command<s.command)return-1;if(C.command>s.command)return 1}return C.weight2-s.weight2}});var vi=this&&this.__rest||function(Q,e){var L={};for(var k in Q)Object.prototype.hasOwnProperty.call(Q,k)&&e.indexOf(k)<0&&(L[k]=Q[k]);if(Q!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var y=0,k=Object.getOwnPropertySymbols(Q);y<k.length;y++)e.indexOf(k[y])<0&&Object.prototype.propertyIsEnumerable.call(Q,k[y])&&(L[k[y]]=Q[k[y]]);return L};define(ne[30],se([1,0,39,26,6,2,64,27,15,8,118]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";var s;Object.defineProperty(e,\"__esModule\",{value:!0}),e.registerAction2=e.Action2=e.MenuItemAction=e.SubmenuItemAction=e.MenuRegistry=e.IMenuService=e.MenuId=e.isISubmenuItem=e.isIMenuItem=void 0;function i(o){return o.command!==void 0}e.isIMenuItem=i;function n(o){return o.submenu!==void 0}e.isISubmenuItem=n;class t{constructor(d){if(t._instances.has(d))throw new TypeError(`MenuId with identifier '${d}' already exists. Use MenuId.for(ident) or a unique identifier`);t._instances.set(d,this),this.id=d}}e.MenuId=t,t._instances=new Map,t.CommandPalette=new t(\"CommandPalette\"),t.DebugBreakpointsContext=new t(\"DebugBreakpointsContext\"),t.DebugCallStackContext=new t(\"DebugCallStackContext\"),t.DebugConsoleContext=new t(\"DebugConsoleContext\"),t.DebugVariablesContext=new t(\"DebugVariablesContext\"),t.DebugWatchContext=new t(\"DebugWatchContext\"),t.DebugToolBar=new t(\"DebugToolBar\"),t.DebugToolBarStop=new t(\"DebugToolBarStop\"),t.EditorContext=new t(\"EditorContext\"),t.SimpleEditorContext=new t(\"SimpleEditorContext\"),t.EditorContent=new t(\"EditorContent\"),t.EditorLineNumberContext=new t(\"EditorLineNumberContext\"),t.EditorContextCopy=new t(\"EditorContextCopy\"),t.EditorContextPeek=new t(\"EditorContextPeek\"),t.EditorContextShare=new t(\"EditorContextShare\"),t.EditorTitle=new t(\"EditorTitle\"),t.EditorTitleRun=new t(\"EditorTitleRun\"),t.EditorTitleContext=new t(\"EditorTitleContext\"),t.EditorTitleContextShare=new t(\"EditorTitleContextShare\"),t.EmptyEditorGroup=new t(\"EmptyEditorGroup\"),t.EmptyEditorGroupContext=new t(\"EmptyEditorGroupContext\"),t.EditorTabsBarContext=new t(\"EditorTabsBarContext\"),t.ExplorerContext=new t(\"ExplorerContext\"),t.ExplorerContextShare=new t(\"ExplorerContextShare\"),t.ExtensionContext=new t(\"ExtensionContext\"),t.GlobalActivity=new t(\"GlobalActivity\"),t.CommandCenter=new t(\"CommandCenter\"),t.LayoutControlMenuSubmenu=new t(\"LayoutControlMenuSubmenu\"),t.LayoutControlMenu=new t(\"LayoutControlMenu\"),t.MenubarMainMenu=new t(\"MenubarMainMenu\"),t.MenubarAppearanceMenu=new t(\"MenubarAppearanceMenu\"),t.MenubarDebugMenu=new t(\"MenubarDebugMenu\"),t.MenubarEditMenu=new t(\"MenubarEditMenu\"),t.MenubarCopy=new t(\"MenubarCopy\"),t.MenubarFileMenu=new t(\"MenubarFileMenu\"),t.MenubarGoMenu=new t(\"MenubarGoMenu\"),t.MenubarHelpMenu=new t(\"MenubarHelpMenu\"),t.MenubarLayoutMenu=new t(\"MenubarLayoutMenu\"),t.MenubarNewBreakpointMenu=new t(\"MenubarNewBreakpointMenu\"),t.PanelAlignmentMenu=new t(\"PanelAlignmentMenu\"),t.PanelPositionMenu=new t(\"PanelPositionMenu\"),t.MenubarPreferencesMenu=new t(\"MenubarPreferencesMenu\"),t.MenubarRecentMenu=new t(\"MenubarRecentMenu\"),t.MenubarSelectionMenu=new t(\"MenubarSelectionMenu\"),t.MenubarShare=new t(\"MenubarShare\"),t.MenubarSwitchEditorMenu=new t(\"MenubarSwitchEditorMenu\"),t.MenubarSwitchGroupMenu=new t(\"MenubarSwitchGroupMenu\"),t.MenubarTerminalMenu=new t(\"MenubarTerminalMenu\"),t.MenubarViewMenu=new t(\"MenubarViewMenu\"),t.MenubarHomeMenu=new t(\"MenubarHomeMenu\"),t.OpenEditorsContext=new t(\"OpenEditorsContext\"),t.OpenEditorsContextShare=new t(\"OpenEditorsContextShare\"),t.ProblemsPanelContext=new t(\"ProblemsPanelContext\"),t.SCMChangeContext=new t(\"SCMChangeContext\"),t.SCMResourceContext=new t(\"SCMResourceContext\"),t.SCMResourceContextShare=new t(\"SCMResourceContextShare\"),t.SCMResourceFolderContext=new t(\"SCMResourceFolderContext\"),t.SCMResourceGroupContext=new t(\"SCMResourceGroupContext\"),t.SCMSourceControl=new t(\"SCMSourceControl\"),t.SCMTitle=new t(\"SCMTitle\"),t.SearchContext=new t(\"SearchContext\"),t.SearchActionMenu=new t(\"SearchActionContext\"),t.StatusBarWindowIndicatorMenu=new t(\"StatusBarWindowIndicatorMenu\"),t.StatusBarRemoteIndicatorMenu=new t(\"StatusBarRemoteIndicatorMenu\"),t.StickyScrollContext=new t(\"StickyScrollContext\"),t.TestItem=new t(\"TestItem\"),t.TestItemGutter=new t(\"TestItemGutter\"),t.TestMessageContext=new t(\"TestMessageContext\"),t.TestMessageContent=new t(\"TestMessageContent\"),t.TestPeekElement=new t(\"TestPeekElement\"),t.TestPeekTitle=new t(\"TestPeekTitle\"),t.TouchBarContext=new t(\"TouchBarContext\"),t.TitleBarContext=new t(\"TitleBarContext\"),t.TitleBarTitleContext=new t(\"TitleBarTitleContext\"),t.TunnelContext=new t(\"TunnelContext\"),t.TunnelPrivacy=new t(\"TunnelPrivacy\"),t.TunnelProtocol=new t(\"TunnelProtocol\"),t.TunnelPortInline=new t(\"TunnelInline\"),t.TunnelTitle=new t(\"TunnelTitle\"),t.TunnelLocalAddressInline=new t(\"TunnelLocalAddressInline\"),t.TunnelOriginInline=new t(\"TunnelOriginInline\"),t.ViewItemContext=new t(\"ViewItemContext\"),t.ViewContainerTitle=new t(\"ViewContainerTitle\"),t.ViewContainerTitleContext=new t(\"ViewContainerTitleContext\"),t.ViewTitle=new t(\"ViewTitle\"),t.ViewTitleContext=new t(\"ViewTitleContext\"),t.CommentEditorActions=new t(\"CommentEditorActions\"),t.CommentThreadTitle=new t(\"CommentThreadTitle\"),t.CommentThreadActions=new t(\"CommentThreadActions\"),t.CommentThreadAdditionalActions=new t(\"CommentThreadAdditionalActions\"),t.CommentThreadTitleContext=new t(\"CommentThreadTitleContext\"),t.CommentThreadCommentContext=new t(\"CommentThreadCommentContext\"),t.CommentTitle=new t(\"CommentTitle\"),t.CommentActions=new t(\"CommentActions\"),t.InteractiveToolbar=new t(\"InteractiveToolbar\"),t.InteractiveCellTitle=new t(\"InteractiveCellTitle\"),t.InteractiveCellDelete=new t(\"InteractiveCellDelete\"),t.InteractiveCellExecute=new t(\"InteractiveCellExecute\"),t.InteractiveInputExecute=new t(\"InteractiveInputExecute\"),t.NotebookToolbar=new t(\"NotebookToolbar\"),t.NotebookStickyScrollContext=new t(\"NotebookStickyScrollContext\"),t.NotebookCellTitle=new t(\"NotebookCellTitle\"),t.NotebookCellDelete=new t(\"NotebookCellDelete\"),t.NotebookCellInsert=new t(\"NotebookCellInsert\"),t.NotebookCellBetween=new t(\"NotebookCellBetween\"),t.NotebookCellListTop=new t(\"NotebookCellTop\"),t.NotebookCellExecute=new t(\"NotebookCellExecute\"),t.NotebookCellExecutePrimary=new t(\"NotebookCellExecutePrimary\"),t.NotebookDiffCellInputTitle=new t(\"NotebookDiffCellInputTitle\"),t.NotebookDiffCellMetadataTitle=new t(\"NotebookDiffCellMetadataTitle\"),t.NotebookDiffCellOutputsTitle=new t(\"NotebookDiffCellOutputsTitle\"),t.NotebookOutputToolbar=new t(\"NotebookOutputToolbar\"),t.NotebookEditorLayoutConfigure=new t(\"NotebookEditorLayoutConfigure\"),t.NotebookKernelSource=new t(\"NotebookKernelSource\"),t.BulkEditTitle=new t(\"BulkEditTitle\"),t.BulkEditContext=new t(\"BulkEditContext\"),t.TimelineItemContext=new t(\"TimelineItemContext\"),t.TimelineTitle=new t(\"TimelineTitle\"),t.TimelineTitleContext=new t(\"TimelineTitleContext\"),t.TimelineFilterSubMenu=new t(\"TimelineFilterSubMenu\"),t.AccountsContext=new t(\"AccountsContext\"),t.PanelTitle=new t(\"PanelTitle\"),t.AuxiliaryBarTitle=new t(\"AuxiliaryBarTitle\"),t.TerminalInstanceContext=new t(\"TerminalInstanceContext\"),t.TerminalEditorInstanceContext=new t(\"TerminalEditorInstanceContext\"),t.TerminalNewDropdownContext=new t(\"TerminalNewDropdownContext\"),t.TerminalTabContext=new t(\"TerminalTabContext\"),t.TerminalTabEmptyAreaContext=new t(\"TerminalTabEmptyAreaContext\"),t.WebviewContext=new t(\"WebviewContext\"),t.InlineCompletionsActions=new t(\"InlineCompletionsActions\"),t.NewFile=new t(\"NewFile\"),t.MergeInput1Toolbar=new t(\"MergeToolbar1Toolbar\"),t.MergeInput2Toolbar=new t(\"MergeToolbar2Toolbar\"),t.MergeBaseToolbar=new t(\"MergeBaseToolbar\"),t.MergeInputResultToolbar=new t(\"MergeToolbarResultToolbar\"),t.InlineSuggestionToolbar=new t(\"InlineSuggestionToolbar\"),t.ChatContext=new t(\"ChatContext\"),t.ChatCodeBlock=new t(\"ChatCodeblock\"),t.ChatMessageTitle=new t(\"ChatMessageTitle\"),t.ChatExecute=new t(\"ChatExecute\"),t.ChatInputSide=new t(\"ChatInputSide\"),t.AccessibleView=new t(\"AccessibleView\"),e.IMenuService=(0,g.createDecorator)(\"menuService\");class a{static for(d){let l=this._all.get(d);return l||(l=new a(d),this._all.set(d,l)),l}static merge(d){const l=new Set;for(const p of d)p instanceof a&&l.add(p.id);return l}constructor(d){this.id=d,this.has=l=>l===d}}a._all=new Map,e.MenuRegistry=new class{constructor(){this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new y.MicrotaskEmitter({merge:a.merge}),this.onDidChangeMenu=this._onDidChangeMenu.event}addCommand(o){return this._commands.set(o.id,o),this._onDidChangeMenu.fire(a.for(t.CommandPalette)),(0,D.toDisposable)(()=>{this._commands.delete(o.id)&&this._onDidChangeMenu.fire(a.for(t.CommandPalette))})}getCommand(o){return this._commands.get(o)}getCommands(){const o=new Map;return this._commands.forEach((d,l)=>o.set(l,d)),o}appendMenuItem(o,d){let l=this._menuItems.get(o);l||(l=new S.LinkedList,this._menuItems.set(o,l));const p=l.push(d);return this._onDidChangeMenu.fire(a.for(o)),(0,D.toDisposable)(()=>{p(),this._onDidChangeMenu.fire(a.for(o))})}appendMenuItems(o){const d=new D.DisposableStore;for(const{id:l,item:p}of o)d.add(this.appendMenuItem(l,p));return d}getMenuItems(o){let d;return this._menuItems.has(o)?d=[...this._menuItems.get(o)]:d=[],o===t.CommandPalette&&this._appendImplicitItems(d),d}_appendImplicitItems(o){const d=new Set;for(const l of o)i(l)&&(d.add(l.command.id),l.alt&&d.add(l.alt.id));this._commands.forEach((l,p)=>{d.has(p)||o.push({command:l})})}};class u extends L.SubmenuAction{constructor(d,l,p){super(`submenuitem.${d.submenu.id}`,typeof d.title==\"string\"?d.title:d.title.value,p,\"submenu\"),this.item=d,this.hideActions=l}}e.SubmenuItemAction=u;let h=s=class{static label(d,l){return l?.renderShortTitle&&d.shortTitle?typeof d.shortTitle==\"string\"?d.shortTitle:d.shortTitle.value:typeof d.title==\"string\"?d.title:d.title.value}constructor(d,l,p,m,v,b){var w,E;this.hideActions=m,this._commandService=b,this.id=d.id,this.label=s.label(d,p),this.tooltip=(E=typeof d.tooltip==\"string\"?d.tooltip:(w=d.tooltip)===null||w===void 0?void 0:w.value)!==null&&E!==void 0?E:\"\",this.enabled=!d.precondition||v.contextMatchesRules(d.precondition),this.checked=void 0;let I;if(d.toggled){const M=d.toggled.condition?d.toggled:{condition:d.toggled};this.checked=v.contextMatchesRules(M.condition),this.checked&&M.tooltip&&(this.tooltip=typeof M.tooltip==\"string\"?M.tooltip:M.tooltip.value),this.checked&&k.ThemeIcon.isThemeIcon(M.icon)&&(I=M.icon),this.checked&&M.title&&(this.label=typeof M.title==\"string\"?M.title:M.title.value)}I||(I=k.ThemeIcon.isThemeIcon(d.icon)?d.icon:void 0),this.item=d,this.alt=l?new s(l,void 0,p,m,v,b):void 0,this._options=p,this.class=I&&k.ThemeIcon.asClassName(I)}run(...d){var l,p;let m=[];return!((l=this._options)===null||l===void 0)&&l.arg&&(m=[...m,this._options.arg]),!((p=this._options)===null||p===void 0)&&p.shouldForwardArgs&&(m=[...m,...d]),this._commandService.executeCommand(this.id,...m)}};e.MenuItemAction=h,e.MenuItemAction=h=s=ke([fe(4,_.IContextKeyService),fe(5,f.ICommandService)],h);class r{constructor(d){this.desc=d}}e.Action2=r;function c(o){const d=new D.DisposableStore,l=new o,p=l.desc,{f1:m,menu:v,keybinding:b,description:w}=p,E=vi(p,[\"f1\",\"menu\",\"keybinding\",\"description\"]);if(d.add(f.CommandsRegistry.registerCommand({id:E.id,handler:(I,...M)=>l.run(I,...M),description:w})),Array.isArray(v))for(const I of v)d.add(e.MenuRegistry.appendMenuItem(I.id,Object.assign({command:Object.assign(Object.assign({},E),{precondition:I.precondition===null?void 0:E.precondition})},I)));else v&&d.add(e.MenuRegistry.appendMenuItem(v.id,Object.assign({command:Object.assign(Object.assign({},E),{precondition:v.precondition===null?void 0:E.precondition})},v)));if(m&&(d.add(e.MenuRegistry.appendMenuItem(t.CommandPalette,{command:E,when:E.precondition})),d.add(e.MenuRegistry.addCommand(E))),Array.isArray(b))for(const I of b)d.add(C.KeybindingsRegistry.registerKeybindingRule(Object.assign(Object.assign({},I),{id:E.id,when:E.precondition?_.ContextKeyExpr.and(E.precondition,I.when):I.when})));else b&&d.add(C.KeybindingsRegistry.registerKeybindingRule(Object.assign(Object.assign({},b),{id:E.id,when:E.precondition?_.ContextKeyExpr.and(E.precondition,b.when):b.when})));return d}e.registerAction2=c}),define(ne[783],se([1,0,33,21,605,30,27,15]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.findFocusedDiffEditor=e.AccessibleDiffViewerPrev=e.AccessibleDiffViewerNext=void 0;const _={value:(0,y.localize)(0,null),original:\"Accessible Diff Viewer\"};class g extends D.Action2{constructor(){super({id:g.id,title:{value:(0,y.localize)(1,null),original:\"Go to Next Difference\"},category:_,precondition:f.ContextKeyExpr.has(\"isInDiffEditor\"),keybinding:{primary:65,weight:100},f1:!0})}run(t){const a=s(t);a?.accessibleDiffViewerNext()}}e.AccessibleDiffViewerNext=g,g.id=\"editor.action.accessibleDiffViewer.next\",D.MenuRegistry.appendMenuItem(D.MenuId.EditorTitle,{command:{id:g.id,title:(0,y.localize)(2,null)},order:10,group:\"2_diff\",when:f.ContextKeyExpr.and(k.EditorContextKeys.accessibleDiffViewerVisible.negate(),f.ContextKeyExpr.has(\"isInDiffEditor\"))});class C extends D.Action2{constructor(){super({id:C.id,title:{value:(0,y.localize)(3,null),original:\"Go to Previous Difference\"},category:_,precondition:f.ContextKeyExpr.has(\"isInDiffEditor\"),keybinding:{primary:1089,weight:100},f1:!0})}run(t){const a=s(t);a?.accessibleDiffViewerPrev()}}e.AccessibleDiffViewerPrev=C,C.id=\"editor.action.accessibleDiffViewer.prev\";function s(n){var t;const a=n.get(L.ICodeEditorService),u=a.listDiffEditors(),h=(t=a.getFocusedCodeEditor())!==null&&t!==void 0?t:a.getActiveCodeEditor();if(!h)return null;for(let r=0,c=u.length;r<c;r++){const o=u[r];if(o.getModifiedEditor().getId()===h.getId()||o.getOriginalEditor().getId()===h.getId())return o}if(document.activeElement)for(const r of u){const c=r.getContainerDomNode();if(i(c,document.activeElement))return r}return null}e.findFocusedDiffEditor=s;function i(n,t){let a=t;for(;a;){if(a===n)return!0;a=a.parentElement}return!1}S.CommandsRegistry.registerCommandAlias(\"editor.action.diffReview.next\",g.id),(0,D.registerAction2)(g),S.CommandsRegistry.registerCommandAlias(\"editor.action.diffReview.prev\",C.id),(0,D.registerAction2)(C)}),define(ne[784],se([1,0,13,9,2,783]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CodeEditorContributions=void 0;class D extends y.Disposable{constructor(){super(),this._editor=null,this._instantiationService=null,this._instances=this._register(new y.DisposableMap),this._pending=new Map,this._finishedInstantiation=[],this._finishedInstantiation[0]=!1,this._finishedInstantiation[1]=!1,this._finishedInstantiation[2]=!1,this._finishedInstantiation[3]=!1}initialize(f,_,g){this._editor=f,this._instantiationService=g;for(const C of _){if(this._pending.has(C.id)){(0,k.onUnexpectedError)(new Error(`Cannot have two contributions with the same id ${C.id}`));continue}this._pending.set(C.id,C)}this._instantiateSome(0),this._register((0,L.runWhenIdle)(()=>{this._instantiateSome(1)})),this._register((0,L.runWhenIdle)(()=>{this._instantiateSome(2)})),this._register((0,L.runWhenIdle)(()=>{this._instantiateSome(3)},5e3))}saveViewState(){const f={};for(const[_,g]of this._instances)typeof g.saveViewState==\"function\"&&(f[_]=g.saveViewState());return f}restoreViewState(f){for(const[_,g]of this._instances)typeof g.restoreViewState==\"function\"&&g.restoreViewState(f[_])}get(f){return this._instantiateById(f),this._instances.get(f)||null}onBeforeInteractionEvent(){this._instantiateSome(2)}onAfterModelAttached(){this._register((0,L.runWhenIdle)(()=>{this._instantiateSome(1)},50))}_instantiateSome(f){if(this._finishedInstantiation[f])return;this._finishedInstantiation[f]=!0;const _=this._findPendingContributionsByInstantiation(f);for(const g of _)this._instantiateById(g.id)}_findPendingContributionsByInstantiation(f){const _=[];for(const[,g]of this._pending)g.instantiation===f&&_.push(g);return _}_instantiateById(f){const _=this._pending.get(f);if(_){if(this._pending.delete(f),!this._instantiationService||!this._editor)throw new Error(\"Cannot instantiate contributions before being initialized!\");try{const g=this._instantiationService.createInstance(_.ctor,this._editor);this._instances.set(_.id,g),typeof g.restoreViewState==\"function\"&&_.instantiation!==0&&console.warn(`Editor contribution '${_.id}' should be eager instantiated because it uses saveViewState / restoreViewState.`)}catch(g){(0,k.onUnexpectedError)(g)}}}}e.CodeEditorContributions=D}),define(ne[785],se([1,0,49,201,707,30,15]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ToggleTabFocusModeAction=void 0;class f extends D.Action2{constructor(){super({id:f.ID,title:{value:y.localize(0,null),original:\"Toggle Tab Key Moves Focus\"},precondition:void 0,keybinding:{primary:2091,mac:{primary:1323},weight:100},f1:!0})}run(g){const C=g.get(S.IContextKeyService).getContextKeyValue(\"focusedView\")===\"terminal\"?\"terminalFocus\":\"editorFocus\",i=!k.TabFocus.getTabFocusMode(C);k.TabFocus.setTabFocusMode(i,C),i?(0,L.alert)(y.localize(1,null)):(0,L.alert)(y.localize(2,null))}}e.ToggleTabFocusModeAction=f,f.ID=\"editor.action.toggleTabFocusMode\",(0,D.registerAction2)(f)}),define(ne[346],se([1,0,228,582,15,118,726,2]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ContextScopedReplaceInput=e.ContextScopedFindInput=e.registerAndCreateHistoryNavigationContext=e.historyNavigationVisible=void 0,e.historyNavigationVisible=new y.RawContextKey(\"suggestWidgetVisible\",!1,(0,S.localize)(0,null));const _=\"historyNavigationWidgetFocus\",g=\"historyNavigationForwardsEnabled\",C=\"historyNavigationBackwardsEnabled\";let s;const i=[];function n(u,h){if(i.includes(h))throw new Error(\"Cannot register the same widget multiple times\");i.push(h);const r=new f.DisposableStore,c=new y.RawContextKey(_,!1).bindTo(u),o=new y.RawContextKey(g,!0).bindTo(u),d=new y.RawContextKey(C,!0).bindTo(u),l=()=>{c.set(!0),s=h},p=()=>{c.set(!1),s===h&&(s=void 0)};return h.element===document.activeElement&&l(),r.add(h.onDidFocus(()=>l())),r.add(h.onDidBlur(()=>p())),r.add((0,f.toDisposable)(()=>{i.splice(i.indexOf(h),1),p()})),{historyNavigationForwardsEnablement:o,historyNavigationBackwardsEnablement:d,dispose(){r.dispose()}}}e.registerAndCreateHistoryNavigationContext=n;let t=class extends L.FindInput{constructor(h,r,c,o){super(h,r,c);const d=this._register(o.createScoped(this.inputBox.element));this._register(n(d,this.inputBox))}};e.ContextScopedFindInput=t,e.ContextScopedFindInput=t=ke([fe(3,y.IContextKeyService)],t);let a=class extends k.ReplaceInput{constructor(h,r,c,o,d=!1){super(h,r,d,c);const l=this._register(o.createScoped(this.inputBox.element));this._register(n(l,this.inputBox))}};e.ContextScopedReplaceInput=a,e.ContextScopedReplaceInput=a=ke([fe(3,y.IContextKeyService)],a),D.KeybindingsRegistry.registerCommandAndKeybindingRule({id:\"history.showPrevious\",weight:200,when:y.ContextKeyExpr.and(y.ContextKeyExpr.has(_),y.ContextKeyExpr.equals(C,!0),y.ContextKeyExpr.not(\"isComposing\"),e.historyNavigationVisible.isEqualTo(!1)),primary:16,secondary:[528],handler:u=>{s?.showPreviousValue()}}),D.KeybindingsRegistry.registerCommandAndKeybindingRule({id:\"history.showNext\",weight:200,when:y.ContextKeyExpr.and(y.ContextKeyExpr.has(_),y.ContextKeyExpr.equals(g,!0),y.ContextKeyExpr.not(\"isComposing\"),e.historyNavigationVisible.isEqualTo(!1)),primary:18,secondary:[530],handler:u=>{s?.showNextValue()}})}),define(ne[135],se([1,0,19,9,72,2,58,20,22,12,5,69,128,700,30,27,15,18,346]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.QuickSuggestionsOptions=e.showSimpleSuggestions=e.getSuggestionComparator=e.provideSuggestionItems=e.CompletionItemModel=e.getSnippetSuggestSupport=e.CompletionOptions=e.CompletionItem=e.suggestWidgetStatusbarMenu=e.Context=void 0,e.Context={Visible:r.historyNavigationVisible,HasFocusedSuggestion:new u.RawContextKey(\"suggestWidgetHasFocusedSuggestion\",!1,(0,n.localize)(0,null)),DetailsVisible:new u.RawContextKey(\"suggestWidgetDetailsVisible\",!1,(0,n.localize)(1,null)),MultipleSuggestions:new u.RawContextKey(\"suggestWidgetMultipleSuggestions\",!1,(0,n.localize)(2,null)),MakesTextEdit:new u.RawContextKey(\"suggestionMakesTextEdit\",!0,(0,n.localize)(3,null)),AcceptSuggestionsOnEnter:new u.RawContextKey(\"acceptSuggestionOnEnter\",!0,(0,n.localize)(4,null)),HasInsertAndReplaceRange:new u.RawContextKey(\"suggestionHasInsertAndReplaceRange\",!1,(0,n.localize)(5,null)),InsertMode:new u.RawContextKey(\"suggestionInsertMode\",void 0,{type:\"string\",description:(0,n.localize)(6,null)}),CanResolve:new u.RawContextKey(\"suggestionCanResolve\",!1,(0,n.localize)(7,null))},e.suggestWidgetStatusbarMenu=new t.MenuId(\"suggestWidgetStatusBar\");class c{constructor(T,A,N,F){var O;this.position=T,this.completion=A,this.container=N,this.provider=F,this.isInvalid=!1,this.score=y.FuzzyScore.Default,this.distance=0,this.textLabel=typeof A.label==\"string\"?A.label:(O=A.label)===null||O===void 0?void 0:O.label,this.labelLow=this.textLabel.toLowerCase(),this.isInvalid=!this.textLabel,this.sortTextLow=A.sortText&&A.sortText.toLowerCase(),this.filterTextLow=A.filterText&&A.filterText.toLowerCase(),this.extensionId=A.extensionId,C.Range.isIRange(A.range)?(this.editStart=new g.Position(A.range.startLineNumber,A.range.startColumn),this.editInsertEnd=new g.Position(A.range.endLineNumber,A.range.endColumn),this.editReplaceEnd=new g.Position(A.range.endLineNumber,A.range.endColumn),this.isInvalid=this.isInvalid||C.Range.spansMultipleLines(A.range)||A.range.startLineNumber!==T.lineNumber):(this.editStart=new g.Position(A.range.insert.startLineNumber,A.range.insert.startColumn),this.editInsertEnd=new g.Position(A.range.insert.endLineNumber,A.range.insert.endColumn),this.editReplaceEnd=new g.Position(A.range.replace.endLineNumber,A.range.replace.endColumn),this.isInvalid=this.isInvalid||C.Range.spansMultipleLines(A.range.insert)||C.Range.spansMultipleLines(A.range.replace)||A.range.insert.startLineNumber!==T.lineNumber||A.range.replace.startLineNumber!==T.lineNumber||A.range.insert.startColumn!==A.range.replace.startColumn),typeof F.resolveCompletionItem!=\"function\"&&(this._resolveCache=Promise.resolve(),this._resolveDuration=0)}get isResolved(){return this._resolveDuration!==void 0}get resolveDuration(){return this._resolveDuration!==void 0?this._resolveDuration:-1}resolve(T){return we(this,void 0,void 0,function*(){if(!this._resolveCache){const A=T.onCancellationRequested(()=>{this._resolveCache=void 0,this._resolveDuration=void 0}),N=new S.StopWatch(!0);this._resolveCache=Promise.resolve(this.provider.resolveCompletionItem(this.completion,T)).then(F=>{Object.assign(this.completion,F),this._resolveDuration=N.elapsed(),A.dispose()},F=>{(0,k.isCancellationError)(F)&&(this._resolveCache=void 0,this._resolveDuration=void 0)})}return this._resolveCache})}}e.CompletionItem=c;class o{constructor(T=2,A=new Set,N=new Set,F=new Map,O=!0){this.snippetSortOrder=T,this.kindFilter=A,this.providerFilter=N,this.providerItemsToReuse=F,this.showDeprecated=O}}e.CompletionOptions=o,o.default=new o;let d;function l(){return d}e.getSnippetSuggestSupport=l;class p{constructor(T,A,N,F){this.items=T,this.needsClipboard=A,this.durations=N,this.disposable=F}}e.CompletionItemModel=p;function m(x,T,A,N=o.default,F={triggerKind:0},O=L.CancellationToken.None){return we(this,void 0,void 0,function*(){const W=new S.StopWatch;A=A.clone();const U=T.getWordAtPosition(A),j=U?new C.Range(A.lineNumber,U.startColumn,A.lineNumber,U.endColumn):C.Range.fromPositions(A),R={replace:j,insert:j.setEndPosition(A.lineNumber,A.column)},K=[],G=new D.DisposableStore,Z=[];let J=!1;const X=(B,V,Y)=>{var ie,ae,ce;let de=!1;if(!V)return de;for(const he of V.suggestions)if(!N.kindFilter.has(he.kind)){if(!N.showDeprecated&&(!((ie=he?.tags)===null||ie===void 0)&&ie.includes(1)))continue;he.range||(he.range=R),he.sortText||(he.sortText=typeof he.label==\"string\"?he.label:he.label.label),!J&&he.insertTextRules&&he.insertTextRules&4&&(J=i.SnippetParser.guessNeedsClipboard(he.insertText)),K.push(new c(A,he,V,B)),de=!0}return(0,D.isDisposable)(V)&&G.add(V),Z.push({providerName:(ae=B._debugDisplayName)!==null&&ae!==void 0?ae:\"unknown_provider\",elapsedProvider:(ce=V.duration)!==null&&ce!==void 0?ce:-1,elapsedOverall:Y.elapsed()}),de},H=(()=>we(this,void 0,void 0,function*(){if(!d||N.kindFilter.has(27))return;const B=N.providerItemsToReuse.get(d);if(B){B.forEach(ie=>K.push(ie));return}if(N.providerFilter.size>0&&!N.providerFilter.has(d))return;const V=new S.StopWatch,Y=yield d.provideCompletionItems(T,A,F,O);X(d,Y,V)}))();for(const B of x.orderedGroups(T)){let V=!1;if(yield Promise.all(B.map(Y=>we(this,void 0,void 0,function*(){if(N.providerItemsToReuse.has(Y)){const ie=N.providerItemsToReuse.get(Y);ie.forEach(ae=>K.push(ae)),V=V||ie.length>0;return}if(!(N.providerFilter.size>0&&!N.providerFilter.has(Y)))try{const ie=new S.StopWatch,ae=yield Y.provideCompletionItems(T,A,F,O);V=X(Y,ae,ie)||V}catch(ie){(0,k.onUnexpectedExternalError)(ie)}}))),V||O.isCancellationRequested)break}return yield H,O.isCancellationRequested?(G.dispose(),Promise.reject(new k.CancellationError)):new p(K.sort(I(N.snippetSortOrder)),J,{entries:Z,elapsed:W.elapsed()},G)})}e.provideSuggestionItems=m;function v(x,T){if(x.sortTextLow&&T.sortTextLow){if(x.sortTextLow<T.sortTextLow)return-1;if(x.sortTextLow>T.sortTextLow)return 1}return x.textLabel<T.textLabel?-1:x.textLabel>T.textLabel?1:x.completion.kind-T.completion.kind}function b(x,T){if(x.completion.kind!==T.completion.kind){if(x.completion.kind===27)return-1;if(T.completion.kind===27)return 1}return v(x,T)}function w(x,T){if(x.completion.kind!==T.completion.kind){if(x.completion.kind===27)return 1;if(T.completion.kind===27)return-1}return v(x,T)}const E=new Map;E.set(0,b),E.set(2,w),E.set(1,v);function I(x){return E.get(x)}e.getSuggestionComparator=I,a.CommandsRegistry.registerCommand(\"_executeCompletionItemProvider\",(x,...T)=>we(void 0,void 0,void 0,function*(){const[A,N,F,O]=T;(0,f.assertType)(_.URI.isUri(A)),(0,f.assertType)(g.Position.isIPosition(N)),(0,f.assertType)(typeof F==\"string\"||!F),(0,f.assertType)(typeof O==\"number\"||!O);const{completionProvider:W}=x.get(h.ILanguageFeaturesService),U=yield x.get(s.ITextModelService).createModelReference(A);try{const j={incomplete:!1,suggestions:[]},R=[],K=U.object.textEditorModel.validatePosition(N),G=yield m(W,U.object.textEditorModel,K,void 0,{triggerCharacter:F??void 0,triggerKind:F?1:0});for(const Z of G.items)R.length<(O??0)&&R.push(Z.resolve(L.CancellationToken.None)),j.incomplete=j.incomplete||Z.container.incomplete,j.suggestions.push(Z.completion);try{return yield Promise.all(R),j}finally{setTimeout(()=>G.disposable.dispose(),100)}}finally{U.dispose()}}));function M(x,T){var A;(A=x.getContribution(\"editor.contrib.suggestController\"))===null||A===void 0||A.triggerSuggest(new Set().add(T),void 0,!0)}e.showSimpleSuggestions=M;class P{static isAllOff(T){return T.other===\"off\"&&T.comments===\"off\"&&T.strings===\"off\"}static isAllOn(T){return T.other===\"on\"&&T.comments===\"on\"&&T.strings===\"on\"}static valueFor(T,A){switch(A){case 1:return T.comments;case 2:return T.strings;default:return T.other}}}e.QuickSuggestionsOptions=P}),define(ne[136],se([1,0,14,2,37]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.QuickAccessRegistry=e.Extensions=e.DefaultQuickAccessFilterValue=void 0;var D;(function(f){f[f.PRESERVE=0]=\"PRESERVE\",f[f.LAST=1]=\"LAST\"})(D||(e.DefaultQuickAccessFilterValue=D={})),e.Extensions={Quickaccess:\"workbench.contributions.quickaccess\"};class S{constructor(){this.providers=[],this.defaultProvider=void 0}registerQuickAccessProvider(_){return _.prefix.length===0?this.defaultProvider=_:this.providers.push(_),this.providers.sort((g,C)=>C.prefix.length-g.prefix.length),(0,k.toDisposable)(()=>{this.providers.splice(this.providers.indexOf(_),1),this.defaultProvider===_&&(this.defaultProvider=void 0)})}getQuickAccessProviders(){return(0,L.coalesce)([this.defaultProvider,...this.providers])}getQuickAccessProvider(_){return _&&this.providers.find(C=>_.startsWith(C.prefix))||void 0||this.defaultProvider}}e.QuickAccessRegistry=S,y.Registry.add(e.Extensions.Quickaccess,new S)}),define(ne[786],se([1,0,731,37,2,34,136,71]),function(Q,e,L,k,y,D,S,f){\"use strict\";var _;Object.defineProperty(e,\"__esModule\",{value:!0}),e.HelpQuickAccessProvider=void 0;let g=_=class{constructor(s,i){this.quickInputService=s,this.keybindingService=i,this.registry=k.Registry.as(S.Extensions.Quickaccess)}provide(s){const i=new y.DisposableStore;return i.add(s.onDidAccept(()=>{const[n]=s.selectedItems;n&&this.quickInputService.quickAccess.show(n.prefix,{preserveValue:!0})})),i.add(s.onDidChangeValue(n=>{const t=this.registry.getQuickAccessProvider(n.substr(_.PREFIX.length));t&&t.prefix&&t.prefix!==_.PREFIX&&this.quickInputService.quickAccess.show(t.prefix,{preserveValue:!0})})),s.items=this.getQuickAccessProviders().filter(n=>n.prefix!==_.PREFIX),i}getQuickAccessProviders(){return this.registry.getQuickAccessProviders().sort((i,n)=>i.prefix.localeCompare(n.prefix)).flatMap(i=>this.createPicks(i))}createPicks(s){return s.helpEntries.map(i=>{const n=i.prefix||s.prefix,t=n||\"\\u2026\";return{prefix:n,label:t,keybinding:i.commandId?this.keybindingService.lookupKeybinding(i.commandId):void 0,ariaLabel:(0,L.localize)(0,null,t,i.description),description:i.description}})}};e.HelpQuickAccessProvider=g,g.PREFIX=\"?\",e.HelpQuickAccessProvider=g=_=ke([fe(0,f.IQuickInputService),fe(1,D.IKeybindingService)],g)}),define(ne[787],se([1,0,37,136,94,786]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),L.Registry.as(k.Extensions.Quickaccess).registerQuickAccessProvider({ctor:D.HelpQuickAccessProvider,prefix:\"\",helpEntries:[{description:y.QuickHelpNLS.helpQuickAccessActionLabel}]})}),define(ne[788],se([1,0,13,19,99,2,8,136,71,37]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.QuickAccessController=void 0;let C=class extends D.Disposable{constructor(i,n){super(),this.quickInputService=i,this.instantiationService=n,this.registry=g.Registry.as(f.Extensions.Quickaccess),this.mapProviderToDescriptor=new Map,this.lastAcceptedPickerValues=new Map,this.visibleQuickAccess=void 0}show(i=\"\",n){this.doShowOrPick(i,!1,n)}doShowOrPick(i,n,t){var a;const[u,h]=this.getOrInstantiateProvider(i),r=this.visibleQuickAccess,c=r?.descriptor;if(r&&h&&c===h){i!==h.prefix&&!t?.preserveValue&&(r.picker.value=i),this.adjustValueSelection(r.picker,h,t);return}if(h&&!t?.preserveValue){let m;if(r&&c&&c!==h){const v=r.value.substr(c.prefix.length);v&&(m=`${h.prefix}${v}`)}if(!m){const v=u?.defaultFilterValue;v===f.DefaultQuickAccessFilterValue.LAST?m=this.lastAcceptedPickerValues.get(h):typeof v==\"string\"&&(m=`${h.prefix}${v}`)}typeof m==\"string\"&&(i=m)}const o=new D.DisposableStore,d=o.add(this.quickInputService.createQuickPick());d.value=i,this.adjustValueSelection(d,h,t),d.placeholder=h?.placeholder,d.quickNavigate=t?.quickNavigateConfiguration,d.hideInput=!!d.quickNavigate&&!r,(typeof t?.itemActivation==\"number\"||t?.quickNavigateConfiguration)&&(d.itemActivation=(a=t?.itemActivation)!==null&&a!==void 0?a:_.ItemActivation.SECOND),d.contextKey=h?.contextKey,d.filterValue=m=>m.substring(h?h.prefix.length:0);let l;n&&(l=new L.DeferredPromise,o.add((0,y.once)(d.onWillAccept)(m=>{m.veto(),d.hide()}))),o.add(this.registerPickerListeners(d,u,h,i,t?.providerOptions));const p=o.add(new k.CancellationTokenSource);if(u&&o.add(u.provide(d,p.token,t?.providerOptions)),(0,y.once)(d.onDidHide)(()=>{d.selectedItems.length===0&&p.cancel(),o.dispose(),l?.complete(d.selectedItems.slice(0))}),d.show(),n)return l?.p}adjustValueSelection(i,n,t){var a;let u;t?.preserveValue?u=[i.value.length,i.value.length]:u=[(a=n?.prefix.length)!==null&&a!==void 0?a:0,i.value.length],i.valueSelection=u}registerPickerListeners(i,n,t,a,u){const h=new D.DisposableStore,r=this.visibleQuickAccess={picker:i,descriptor:t,value:a};return h.add((0,D.toDisposable)(()=>{r===this.visibleQuickAccess&&(this.visibleQuickAccess=void 0)})),h.add(i.onDidChangeValue(c=>{const[o]=this.getOrInstantiateProvider(c);o!==n?this.show(c,{preserveValue:!0,providerOptions:u}):r.value=c})),t&&h.add(i.onDidAccept(()=>{this.lastAcceptedPickerValues.set(t,i.value)})),h}getOrInstantiateProvider(i){const n=this.registry.getQuickAccessProvider(i);if(!n)return[void 0,void 0];let t=this.mapProviderToDescriptor.get(n);return t||(t=this.instantiationService.createInstance(n.ctor),this.mapProviderToDescriptor.set(n,t)),[t,n]}};e.QuickAccessController=C,e.QuickAccessController=C=ke([fe(0,_.IQuickInputService),fe(1,S.IInstantiationService)],C)}),define(ne[789],se([1,0,25,26,101,474]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SeverityIcon=void 0;var D;(function(S){function f(_){switch(_){case y.default.Ignore:return\"severity-ignore \"+k.ThemeIcon.asClassName(L.Codicon.info);case y.default.Info:return k.ThemeIcon.asClassName(L.Codicon.info);case y.default.Warning:return k.ThemeIcon.asClassName(L.Codicon.warning);case y.default.Error:return k.ThemeIcon.asClassName(L.Codicon.error);default:return\"\"}}S.className=f})(D||(e.SeverityIcon=D={}))}),define(ne[87],se([1,0,6,2,20,588,8]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InMemoryStorageService=e.AbstractStorageService=e.loadKeyTargets=e.WillSaveStateReason=e.IStorageService=e.TARGET_KEY=void 0,e.TARGET_KEY=\"__$__targetStorageMarker\",e.IStorageService=(0,S.createDecorator)(\"storageService\");var f;(function(s){s[s.NONE=0]=\"NONE\",s[s.SHUTDOWN=1]=\"SHUTDOWN\"})(f||(e.WillSaveStateReason=f={}));function _(s){const i=s.get(e.TARGET_KEY);if(i)try{return JSON.parse(i)}catch{}return Object.create(null)}e.loadKeyTargets=_;class g extends k.Disposable{constructor(i={flushInterval:g.DEFAULT_FLUSH_INTERVAL}){super(),this.options=i,this._onDidChangeValue=this._register(new L.PauseableEmitter),this._onDidChangeTarget=this._register(new L.PauseableEmitter),this._onWillSaveState=this._register(new L.Emitter),this.onWillSaveState=this._onWillSaveState.event,this._workspaceKeyTargets=void 0,this._profileKeyTargets=void 0,this._applicationKeyTargets=void 0}onDidChangeValue(i,n,t){return L.Event.filter(this._onDidChangeValue.event,a=>a.scope===i&&(n===void 0||a.key===n),t)}emitDidChangeValue(i,n){const{key:t,external:a}=n;if(t===e.TARGET_KEY){switch(i){case-1:this._applicationKeyTargets=void 0;break;case 0:this._profileKeyTargets=void 0;break;case 1:this._workspaceKeyTargets=void 0;break}this._onDidChangeTarget.fire({scope:i})}else this._onDidChangeValue.fire({scope:i,key:t,target:this.getKeyTargets(i)[t],external:a})}get(i,n,t){var a;return(a=this.getStorage(n))===null||a===void 0?void 0:a.get(i,t)}getBoolean(i,n,t){var a;return(a=this.getStorage(n))===null||a===void 0?void 0:a.getBoolean(i,t)}getNumber(i,n,t){var a;return(a=this.getStorage(n))===null||a===void 0?void 0:a.getNumber(i,t)}store(i,n,t,a,u=!1){if((0,y.isUndefinedOrNull)(n)){this.remove(i,t,u);return}this.withPausedEmitters(()=>{var h;this.updateKeyTarget(i,t,a),(h=this.getStorage(t))===null||h===void 0||h.set(i,n,u)})}remove(i,n,t=!1){this.withPausedEmitters(()=>{var a;this.updateKeyTarget(i,n,void 0),(a=this.getStorage(n))===null||a===void 0||a.delete(i,t)})}withPausedEmitters(i){this._onDidChangeValue.pause(),this._onDidChangeTarget.pause();try{i()}finally{this._onDidChangeValue.resume(),this._onDidChangeTarget.resume()}}updateKeyTarget(i,n,t,a=!1){var u,h;const r=this.getKeyTargets(n);typeof t==\"number\"?r[i]!==t&&(r[i]=t,(u=this.getStorage(n))===null||u===void 0||u.set(e.TARGET_KEY,JSON.stringify(r),a)):typeof r[i]==\"number\"&&(delete r[i],(h=this.getStorage(n))===null||h===void 0||h.set(e.TARGET_KEY,JSON.stringify(r),a))}get workspaceKeyTargets(){return this._workspaceKeyTargets||(this._workspaceKeyTargets=this.loadKeyTargets(1)),this._workspaceKeyTargets}get profileKeyTargets(){return this._profileKeyTargets||(this._profileKeyTargets=this.loadKeyTargets(0)),this._profileKeyTargets}get applicationKeyTargets(){return this._applicationKeyTargets||(this._applicationKeyTargets=this.loadKeyTargets(-1)),this._applicationKeyTargets}getKeyTargets(i){switch(i){case-1:return this.applicationKeyTargets;case 0:return this.profileKeyTargets;default:return this.workspaceKeyTargets}}loadKeyTargets(i){const n=this.getStorage(i);return n?_(n):Object.create(null)}}e.AbstractStorageService=g,g.DEFAULT_FLUSH_INTERVAL=60*1e3;class C extends g{constructor(){super(),this.applicationStorage=this._register(new D.Storage(new D.InMemoryStorageDatabase,{hint:D.StorageHint.STORAGE_IN_MEMORY})),this.profileStorage=this._register(new D.Storage(new D.InMemoryStorageDatabase,{hint:D.StorageHint.STORAGE_IN_MEMORY})),this.workspaceStorage=this._register(new D.Storage(new D.InMemoryStorageDatabase,{hint:D.StorageHint.STORAGE_IN_MEMORY})),this._register(this.workspaceStorage.onDidChangeStorage(i=>this.emitDidChangeValue(1,i))),this._register(this.profileStorage.onDidChangeStorage(i=>this.emitDidChangeValue(0,i))),this._register(this.applicationStorage.onDidChangeStorage(i=>this.emitDidChangeValue(-1,i)))}getStorage(i){switch(i){case-1:return this.applicationStorage;case 0:return this.profileStorage;default:return this.workspaceStorage}}}e.InMemoryStorageService=C}),define(ne[790],se([1,0,13,99,65,5,332,50,8,87]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CodeLensCache=e.ICodeLensCache=void 0,e.ICodeLensCache=(0,_.createDecorator)(\"ICodeLensCache\");class C{constructor(n,t){this.lineCount=n,this.data=t}}let s=class{constructor(n){this._fakeProvider=new class{provideCodeLenses(){throw new Error(\"not supported\")}},this._cache=new y.LRUCache(20,.75);const t=\"codelens/cache\";(0,L.runWhenIdle)(()=>n.remove(t,1));const a=\"codelens/cache2\",u=n.get(a,1,\"{}\");this._deserialize(u),(0,k.once)(n.onWillSaveState)(h=>{h.reason===g.WillSaveStateReason.SHUTDOWN&&n.store(a,this._serialize(),1,1)})}put(n,t){const a=t.lenses.map(r=>{var c;return{range:r.symbol.range,command:r.symbol.command&&{id:\"\",title:(c=r.symbol.command)===null||c===void 0?void 0:c.title}}}),u=new S.CodeLensModel;u.add({lenses:a,dispose:()=>{}},this._fakeProvider);const h=new C(n.getLineCount(),u);this._cache.set(n.uri.toString(),h)}get(n){const t=this._cache.get(n.uri.toString());return t&&t.lineCount===n.getLineCount()?t.data:void 0}delete(n){this._cache.delete(n.uri.toString())}_serialize(){const n=Object.create(null);for(const[t,a]of this._cache){const u=new Set;for(const h of a.data.lenses)u.add(h.symbol.range.startLineNumber);n[t]={lineCount:a.lineCount,lines:[...u.values()]}}return JSON.stringify(n)}_deserialize(n){try{const t=JSON.parse(n);for(const a in t){const u=t[a],h=[];for(const c of u.lines)h.push({range:new D.Range(c,1,c,11)});const r=new S.CodeLensModel;r.add({lenses:h,dispose(){}},this._fakeProvider),this._cache.set(a,new C(u.lineCount,r))}}catch{}}};e.CodeLensCache=s,e.CodeLensCache=s=ke([fe(0,g.IStorageService)],s),(0,f.registerSingleton)(e.ICodeLensCache,s,1)}),define(ne[347],se([1,0,13,2,65,198,29,28,50,8,87]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";var s;Object.defineProperty(e,\"__esModule\",{value:!0}),e.ISuggestMemoryService=e.SuggestMemoryService=e.PrefixMemory=e.LRUMemory=e.NoMemory=e.Memory=void 0;class i{constructor(r){this.name=r}select(r,c,o){if(o.length===0)return 0;const d=o[0].score[0];for(let l=0;l<o.length;l++){const{score:p,completion:m}=o[l];if(p[0]!==d)break;if(m.preselect)return l}return 0}}e.Memory=i;class n extends i{constructor(){super(\"first\")}memorize(r,c,o){}toJSON(){}fromJSON(){}}e.NoMemory=n;class t extends i{constructor(){super(\"recentlyUsed\"),this._cache=new y.LRUCache(300,.66),this._seq=0}memorize(r,c,o){const d=`${r.getLanguageId()}/${o.textLabel}`;this._cache.set(d,{touch:this._seq++,type:o.completion.kind,insertText:o.completion.insertText})}select(r,c,o){if(o.length===0)return 0;const d=r.getLineContent(c.lineNumber).substr(c.column-10,c.column-1);if(/\\s$/.test(d))return super.select(r,c,o);const l=o[0].score[0];let p=-1,m=-1,v=-1;for(let b=0;b<o.length&&o[b].score[0]===l;b++){const w=`${r.getLanguageId()}/${o[b].textLabel}`,E=this._cache.peek(w);if(E&&E.touch>v&&E.type===o[b].completion.kind&&E.insertText===o[b].completion.insertText&&(v=E.touch,m=b),o[b].completion.preselect&&p===-1)return p=b}return m!==-1?m:p!==-1?p:0}toJSON(){return this._cache.toJSON()}fromJSON(r){this._cache.clear();const c=0;for(const[o,d]of r)d.touch=c,d.type=typeof d.type==\"number\"?d.type:S.CompletionItemKinds.fromString(d.type),this._cache.set(o,d);this._seq=this._cache.size}}e.LRUMemory=t;class a extends i{constructor(){super(\"recentlyUsedByPrefix\"),this._trie=D.TernarySearchTree.forStrings(),this._seq=0}memorize(r,c,o){const{word:d}=r.getWordUntilPosition(c),l=`${r.getLanguageId()}/${d}`;this._trie.set(l,{type:o.completion.kind,insertText:o.completion.insertText,touch:this._seq++})}select(r,c,o){const{word:d}=r.getWordUntilPosition(c);if(!d)return super.select(r,c,o);const l=`${r.getLanguageId()}/${d}`;let p=this._trie.get(l);if(p||(p=this._trie.findSubstr(l)),p)for(let m=0;m<o.length;m++){const{kind:v,insertText:b}=o[m].completion;if(v===p.type&&b===p.insertText)return m}return super.select(r,c,o)}toJSON(){const r=[];return this._trie.forEach((c,o)=>r.push([o,c])),r.sort((c,o)=>-(c[1].touch-o[1].touch)).forEach((c,o)=>c[1].touch=o),r.slice(0,200)}fromJSON(r){if(this._trie.clear(),r.length>0){this._seq=r[0][1].touch+1;for(const[c,o]of r)o.type=typeof o.type==\"number\"?o.type:S.CompletionItemKinds.fromString(o.type),this._trie.set(c,o)}}}e.PrefixMemory=a;let u=s=class{constructor(r,c){this._storageService=r,this._configService=c,this._disposables=new k.DisposableStore,this._persistSoon=new L.RunOnceScheduler(()=>this._saveState(),500),this._disposables.add(r.onWillSaveState(o=>{o.reason===C.WillSaveStateReason.SHUTDOWN&&this._saveState()}))}dispose(){this._disposables.dispose(),this._persistSoon.dispose()}memorize(r,c,o){this._withStrategy(r,c).memorize(r,c,o),this._persistSoon.schedule()}select(r,c,o){return this._withStrategy(r,c).select(r,c,o)}_withStrategy(r,c){var o;const d=this._configService.getValue(\"editor.suggestSelection\",{overrideIdentifier:r.getLanguageIdAtPosition(c.lineNumber,c.column),resource:r.uri});if(((o=this._strategy)===null||o===void 0?void 0:o.name)!==d){this._saveState();const l=s._strategyCtors.get(d)||n;this._strategy=new l;try{const m=this._configService.getValue(\"editor.suggest.shareSuggestSelections\")?0:1,v=this._storageService.get(`${s._storagePrefix}/${d}`,m);v&&this._strategy.fromJSON(JSON.parse(v))}catch{}}return this._strategy}_saveState(){if(this._strategy){const c=this._configService.getValue(\"editor.suggest.shareSuggestSelections\")?0:1,o=JSON.stringify(this._strategy);this._storageService.store(`${s._storagePrefix}/${this._strategy.name}`,o,c,1)}}};e.SuggestMemoryService=u,u._strategyCtors=new Map([[\"recentlyUsedByPrefix\",a],[\"recentlyUsed\",t],[\"first\",n]]),u._storagePrefix=\"suggest/memories\",e.SuggestMemoryService=u=s=ke([fe(0,C.IStorageService),fe(1,f.IConfigurationService)],u),e.ISuggestMemoryService=(0,g.createDecorator)(\"ISuggestMemories\"),(0,_.registerSingleton)(e.ISuggestMemoryService,u,1)}),define(ne[791],se([1,0,13,6,2,30,27,15,39,87,14,719]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";var i,n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.MenuService=void 0;let t=class{constructor(o,d){this._commandService=o,this._hiddenStates=new a(d)}createMenu(o,d,l){return new h(o,this._hiddenStates,Object.assign({emitEventsForSubmenuChanges:!1,eventDebounceDelay:50},l),this._commandService,d)}resetHiddenStates(o){this._hiddenStates.reset(o)}};e.MenuService=t,e.MenuService=t=ke([fe(0,S.ICommandService),fe(1,g.IStorageService)],t);let a=i=class{constructor(o){this._storageService=o,this._disposables=new y.DisposableStore,this._onDidChange=new k.Emitter,this.onDidChange=this._onDidChange.event,this._ignoreChangeEvent=!1,this._hiddenByDefaultCache=new Map;try{const d=o.get(i._key,0,\"{}\");this._data=JSON.parse(d)}catch{this._data=Object.create(null)}this._disposables.add(o.onDidChangeValue(0,i._key,this._disposables)(()=>{if(!this._ignoreChangeEvent)try{const d=o.get(i._key,0,\"{}\");this._data=JSON.parse(d)}catch(d){console.log(\"FAILED to read storage after UPDATE\",d)}this._onDidChange.fire()}))}dispose(){this._onDidChange.dispose(),this._disposables.dispose()}_isHiddenByDefault(o,d){var l;return(l=this._hiddenByDefaultCache.get(`${o.id}/${d}`))!==null&&l!==void 0?l:!1}setDefaultState(o,d,l){this._hiddenByDefaultCache.set(`${o.id}/${d}`,l)}isHidden(o,d){var l,p;const m=this._isHiddenByDefault(o,d),v=(p=(l=this._data[o.id])===null||l===void 0?void 0:l.includes(d))!==null&&p!==void 0?p:!1;return m?!v:v}updateHidden(o,d,l){this._isHiddenByDefault(o,d)&&(l=!l);const m=this._data[o.id];if(l)m?m.indexOf(d)<0&&m.push(d):this._data[o.id]=[d];else if(m){const v=m.indexOf(d);v>=0&&(0,C.removeFastWithoutKeepingOrder)(m,v),m.length===0&&delete this._data[o.id]}this._persist()}reset(o){if(o===void 0)this._data=Object.create(null),this._persist();else{for(const{id:d}of o)this._data[d]&&delete this._data[d];this._persist()}}_persist(){try{this._ignoreChangeEvent=!0;const o=JSON.stringify(this._data);this._storageService.store(i._key,o,0,0)}finally{this._ignoreChangeEvent=!1}}};a._key=\"menu.hiddenCommands\",a=i=ke([fe(0,g.IStorageService)],a);let u=n=class{constructor(o,d,l,p,m){this._id=o,this._hiddenStates=d,this._collectContextKeysForSubmenus=l,this._commandService=p,this._contextKeyService=m,this._menuGroups=[],this._structureContextKeys=new Set,this._preconditionContextKeys=new Set,this._toggledContextKeys=new Set,this.refresh()}get structureContextKeys(){return this._structureContextKeys}get preconditionContextKeys(){return this._preconditionContextKeys}get toggledContextKeys(){return this._toggledContextKeys}refresh(){this._menuGroups.length=0,this._structureContextKeys.clear(),this._preconditionContextKeys.clear(),this._toggledContextKeys.clear();const o=D.MenuRegistry.getMenuItems(this._id);let d;o.sort(n._compareMenuItems);for(const l of o){const p=l.group||\"\";(!d||d[0]!==p)&&(d=[p,[]],this._menuGroups.push(d)),d[1].push(l),this._collectContextKeys(l)}}_collectContextKeys(o){if(n._fillInKbExprKeys(o.when,this._structureContextKeys),(0,D.isIMenuItem)(o)){if(o.command.precondition&&n._fillInKbExprKeys(o.command.precondition,this._preconditionContextKeys),o.command.toggled){const d=o.command.toggled.condition||o.command.toggled;n._fillInKbExprKeys(d,this._toggledContextKeys)}}else this._collectContextKeysForSubmenus&&D.MenuRegistry.getMenuItems(o.submenu).forEach(this._collectContextKeys,this)}createActionGroups(o){const d=[];for(const l of this._menuGroups){const[p,m]=l,v=[];for(const b of m)if(this._contextKeyService.contextMatchesRules(b.when)){const w=(0,D.isIMenuItem)(b);w&&this._hiddenStates.setDefaultState(this._id,b.command.id,!!b.isHiddenByDefault);const E=r(this._id,w?b.command:b,this._hiddenStates);if(w)v.push(new D.MenuItemAction(b.command,b.alt,o,E,this._contextKeyService,this._commandService));else{const I=new n(b.submenu,this._hiddenStates,this._collectContextKeysForSubmenus,this._commandService,this._contextKeyService).createActionGroups(o),M=_.Separator.join(...I.map(P=>P[1]));M.length>0&&v.push(new D.SubmenuItemAction(b,E,M))}}v.length>0&&d.push([p,v])}return d}static _fillInKbExprKeys(o,d){if(o)for(const l of o.keys())d.add(l)}static _compareMenuItems(o,d){const l=o.group,p=d.group;if(l!==p){if(l){if(!p)return-1}else return 1;if(l===\"navigation\")return-1;if(p===\"navigation\")return 1;const b=l.localeCompare(p);if(b!==0)return b}const m=o.order||0,v=d.order||0;return m<v?-1:m>v?1:n._compareTitles((0,D.isIMenuItem)(o)?o.command.title:o.title,(0,D.isIMenuItem)(d)?d.command.title:d.title)}static _compareTitles(o,d){const l=typeof o==\"string\"?o:o.original,p=typeof d==\"string\"?d:d.original;return l.localeCompare(p)}};u=n=ke([fe(3,S.ICommandService),fe(4,f.IContextKeyService)],u);let h=class{constructor(o,d,l,p,m){this._disposables=new y.DisposableStore,this._menuInfo=new u(o,d,l.emitEventsForSubmenuChanges,p,m);const v=new L.RunOnceScheduler(()=>{this._menuInfo.refresh(),this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!0,isToggleChange:!0})},l.eventDebounceDelay);this._disposables.add(v),this._disposables.add(D.MenuRegistry.onDidChangeMenu(I=>{I.has(o)&&v.schedule()}));const b=this._disposables.add(new y.DisposableStore),w=I=>{let M=!1,P=!1,x=!1;for(const T of I)if(M=M||T.isStructuralChange,P=P||T.isEnablementChange,x=x||T.isToggleChange,M&&P&&x)break;return{menu:this,isStructuralChange:M,isEnablementChange:P,isToggleChange:x}},E=()=>{b.add(m.onDidChangeContext(I=>{const M=I.affectsSome(this._menuInfo.structureContextKeys),P=I.affectsSome(this._menuInfo.preconditionContextKeys),x=I.affectsSome(this._menuInfo.toggledContextKeys);(M||P||x)&&this._onDidChange.fire({menu:this,isStructuralChange:M,isEnablementChange:P,isToggleChange:x})})),b.add(d.onDidChange(I=>{this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!1,isToggleChange:!1})}))};this._onDidChange=new k.DebounceEmitter({onWillAddFirstListener:E,onDidRemoveLastListener:b.clear.bind(b),delay:l.eventDebounceDelay,merge:w}),this.onDidChange=this._onDidChange.event}getActions(o){return this._menuInfo.createActionGroups(o)}dispose(){this._disposables.dispose(),this._onDidChange.dispose()}};h=ke([fe(3,S.ICommandService),fe(4,f.IContextKeyService)],h);function r(c,o,d){const l=(0,D.isISubmenuItem)(o)?o.submenu.id:o.id,p=typeof o.title==\"string\"?o.title:o.title.value,m=(0,_.toAction)({id:`hide/${c.id}/${l}`,label:(0,s.localize)(0,null,p),run(){d.updateHidden(c,l,!0)}}),v=(0,_.toAction)({id:`toggle/${c.id}/${l}`,label:p,get checked(){return!d.isHidden(c,l)},run(){d.updateHidden(c,l,!!this.checked)}});return{hide:m,toggle:v,get isHidden(){return!v.checked}}}}),define(ne[79],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ITelemetryService=void 0,e.ITelemetryService=(0,L.createDecorator)(\"telemetryService\")}),define(ne[16],se([1,0,603,22,33,12,51,69,30,27,15,8,118,37,79,20,70]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SelectAllCommand=e.RedoCommand=e.UndoCommand=e.EditorExtensionsRegistry=e.registerEditorContribution=e.registerInstantiatedEditorAction=e.registerMultiEditorAction=e.registerEditorAction=e.registerEditorCommand=e.registerModelAndPositionCommand=e.EditorAction2=e.MultiEditorAction=e.EditorAction=e.EditorCommand=e.ProxyCommand=e.MultiCommand=e.Command=void 0;class h{constructor(N){this.id=N.id,this.precondition=N.precondition,this._kbOpts=N.kbOpts,this._menuOpts=N.menuOpts,this._description=N.description}register(){if(Array.isArray(this._menuOpts)?this._menuOpts.forEach(this._registerMenuItem,this):this._menuOpts&&this._registerMenuItem(this._menuOpts),this._kbOpts){const N=Array.isArray(this._kbOpts)?this._kbOpts:[this._kbOpts];for(const F of N){let O=F.kbExpr;this.precondition&&(O?O=C.ContextKeyExpr.and(O,this.precondition):O=this.precondition);const W={id:this.id,weight:F.weight,args:F.args,when:O,primary:F.primary,secondary:F.secondary,win:F.win,linux:F.linux,mac:F.mac};i.KeybindingsRegistry.registerKeybindingRule(W)}}g.CommandsRegistry.registerCommand({id:this.id,handler:(N,F)=>this.runCommand(N,F),description:this._description})}_registerMenuItem(N){_.MenuRegistry.appendMenuItem(N.menuId,{group:N.group,command:{id:this.id,title:N.title,icon:N.icon,precondition:this.precondition},when:N.when,order:N.order})}}e.Command=h;class r extends h{constructor(){super(...arguments),this._implementations=[]}addImplementation(N,F,O,W){return this._implementations.push({priority:N,name:F,implementation:O,when:W}),this._implementations.sort((U,j)=>j.priority-U.priority),{dispose:()=>{for(let U=0;U<this._implementations.length;U++)if(this._implementations[U].implementation===O){this._implementations.splice(U,1);return}}}}runCommand(N,F){const O=N.get(u.ILogService),W=N.get(C.IContextKeyService);O.trace(`Executing Command '${this.id}' which has ${this._implementations.length} bound.`);for(const U of this._implementations){if(U.when){const R=W.getContext(document.activeElement);if(!U.when.evaluate(R))continue}const j=U.implementation(N,F);if(j)return O.trace(`Command '${this.id}' was handled by '${U.name}'.`),typeof j==\"boolean\"?void 0:j}O.trace(`The Command '${this.id}' was not handled by any implementation.`)}}e.MultiCommand=r;class c extends h{constructor(N,F){super(F),this.command=N}runCommand(N,F){return this.command.runCommand(N,F)}}e.ProxyCommand=c;class o extends h{static bindToContribution(N){return class extends o{constructor(O){super(O),this._callback=O.handler}runEditorCommand(O,W,U){const j=N(W);j&&this._callback(j,U)}}}static runEditorCommand(N,F,O,W){const U=N.get(y.ICodeEditorService),j=U.getFocusedCodeEditor()||U.getActiveCodeEditor();if(j)return j.invokeWithinContext(R=>{if(R.get(C.IContextKeyService).contextMatchesRules(O??void 0))return W(R,j,F)})}runCommand(N,F){return o.runEditorCommand(N,F,this.precondition,(O,W,U)=>this.runEditorCommand(O,W,U))}}e.EditorCommand=o;class d extends o{static convertOptions(N){let F;Array.isArray(N.menuOpts)?F=N.menuOpts:N.menuOpts?F=[N.menuOpts]:F=[];function O(W){return W.menuId||(W.menuId=_.MenuId.EditorContext),W.title||(W.title=N.label),W.when=C.ContextKeyExpr.and(N.precondition,W.when),W}return Array.isArray(N.contextMenuOpts)?F.push(...N.contextMenuOpts.map(O)):N.contextMenuOpts&&F.push(O(N.contextMenuOpts)),N.menuOpts=F,N}constructor(N){super(d.convertOptions(N)),this.label=N.label,this.alias=N.alias}runEditorCommand(N,F,O){return this.reportTelemetry(N,F),this.run(N,F,O||{})}reportTelemetry(N,F){N.get(t.ITelemetryService).publicLog2(\"editorActionInvoked\",{name:this.label,id:this.id})}}e.EditorAction=d;class l extends d{constructor(){super(...arguments),this._implementations=[]}addImplementation(N,F){return this._implementations.push([N,F]),this._implementations.sort((O,W)=>W[0]-O[0]),{dispose:()=>{for(let O=0;O<this._implementations.length;O++)if(this._implementations[O][1]===F){this._implementations.splice(O,1);return}}}}run(N,F,O){for(const W of this._implementations){const U=W[1](N,F,O);if(U)return typeof U==\"boolean\"?void 0:U}}}e.MultiEditorAction=l;class p extends _.Action2{run(N,...F){const O=N.get(y.ICodeEditorService),W=O.getFocusedCodeEditor()||O.getActiveCodeEditor();if(W)return W.invokeWithinContext(U=>{var j,R;const K=U.get(C.IContextKeyService),G=U.get(u.ILogService);if(!K.contextMatchesRules((j=this.desc.precondition)!==null&&j!==void 0?j:void 0)){G.debug(\"[EditorAction2] NOT running command because its precondition is FALSE\",this.desc.id,(R=this.desc.precondition)===null||R===void 0?void 0:R.serialize());return}return this.runEditorCommand(U,W,...F)})}}e.EditorAction2=p;function m(A,N){g.CommandsRegistry.registerCommand(A,function(F,...O){const W=F.get(s.IInstantiationService),[U,j]=O;(0,a.assertType)(k.URI.isUri(U)),(0,a.assertType)(D.Position.isIPosition(j));const R=F.get(S.IModelService).getModel(U);if(R){const K=D.Position.lift(j);return W.invokeFunction(N,R,K,...O.slice(2))}return F.get(f.ITextModelService).createModelReference(U).then(K=>new Promise((G,Z)=>{try{const J=W.invokeFunction(N,K.object.textEditorModel,D.Position.lift(j),O.slice(2));G(J)}catch(J){Z(J)}}).finally(()=>{K.dispose()}))})}e.registerModelAndPositionCommand=m;function v(A){return x.INSTANCE.registerEditorCommand(A),A}e.registerEditorCommand=v;function b(A){const N=new A;return x.INSTANCE.registerEditorAction(N),N}e.registerEditorAction=b;function w(A){return x.INSTANCE.registerEditorAction(A),A}e.registerMultiEditorAction=w;function E(A){x.INSTANCE.registerEditorAction(A)}e.registerInstantiatedEditorAction=E;function I(A,N,F){x.INSTANCE.registerEditorContribution(A,N,F)}e.registerEditorContribution=I;var M;(function(A){function N(j){return x.INSTANCE.getEditorCommand(j)}A.getEditorCommand=N;function F(){return x.INSTANCE.getEditorActions()}A.getEditorActions=F;function O(){return x.INSTANCE.getEditorContributions()}A.getEditorContributions=O;function W(j){return x.INSTANCE.getEditorContributions().filter(R=>j.indexOf(R.id)>=0)}A.getSomeEditorContributions=W;function U(){return x.INSTANCE.getDiffEditorContributions()}A.getDiffEditorContributions=U})(M||(e.EditorExtensionsRegistry=M={}));const P={EditorCommonContributions:\"editor.contributions\"};class x{constructor(){this.editorContributions=[],this.diffEditorContributions=[],this.editorActions=[],this.editorCommands=Object.create(null)}registerEditorContribution(N,F,O){this.editorContributions.push({id:N,ctor:F,instantiation:O})}getEditorContributions(){return this.editorContributions.slice(0)}getDiffEditorContributions(){return this.diffEditorContributions.slice(0)}registerEditorAction(N){N.register(),this.editorActions.push(N)}getEditorActions(){return this.editorActions}registerEditorCommand(N){N.register(),this.editorCommands[N.id]=N}getEditorCommand(N){return this.editorCommands[N]||null}}x.INSTANCE=new x,n.Registry.add(P.EditorCommonContributions,x.INSTANCE);function T(A){return A.register(),A}e.UndoCommand=T(new r({id:\"undo\",precondition:void 0,kbOpts:{weight:0,primary:2104},menuOpts:[{menuId:_.MenuId.MenubarEditMenu,group:\"1_do\",title:L.localize(0,null),order:1},{menuId:_.MenuId.CommandPalette,group:\"\",title:L.localize(1,null),order:1}]})),T(new c(e.UndoCommand,{id:\"default:undo\",precondition:void 0})),e.RedoCommand=T(new r({id:\"redo\",precondition:void 0,kbOpts:{weight:0,primary:2103,secondary:[3128],mac:{primary:3128}},menuOpts:[{menuId:_.MenuId.MenubarEditMenu,group:\"1_do\",title:L.localize(2,null),order:2},{menuId:_.MenuId.CommandPalette,group:\"\",title:L.localize(3,null),order:1}]})),T(new c(e.RedoCommand,{id:\"default:redo\",precondition:void 0})),e.SelectAllCommand=T(new r({id:\"editor.action.selectAll\",precondition:void 0,kbOpts:{weight:0,kbExpr:null,primary:2079},menuOpts:[{menuId:_.MenuId.MenubarSelectionMenu,group:\"1_basic\",title:L.localize(4,null),order:1},{menuId:_.MenuId.CommandPalette,group:\"\",title:L.localize(5,null),order:1}]}))}),define(ne[189],se([1,0,602,52,20,49,16,33,496,74,204,205,246,12,5,21,15,118]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CoreEditingCommands=e.CoreNavigationCommands=e.RevealLine_=e.EditorScroll_=e.CoreEditorCommand=void 0;const r=0;class c extends S.EditorCommand{runEditorCommand(P,x,T){const A=x._getViewModel();A&&this.runCoreEditorCommand(A,T||{})}}e.CoreEditorCommand=c;var o;(function(M){const P=function(T){if(!y.isObject(T))return!1;const A=T;return!(!y.isString(A.to)||!y.isUndefined(A.by)&&!y.isString(A.by)||!y.isUndefined(A.value)&&!y.isNumber(A.value)||!y.isUndefined(A.revealCursor)&&!y.isBoolean(A.revealCursor))};M.description={description:\"Scroll editor in the given direction\",args:[{name:\"Editor scroll argument object\",description:\"Property-value pairs that can be passed through this argument:\\n\t\t\t\t\t* 'to': A mandatory direction value.\\n\t\t\t\t\t\t```\\n\t\t\t\t\t\t'up', 'down'\\n\t\t\t\t\t\t```\\n\t\t\t\t\t* 'by': Unit to move. Default is computed based on 'to' value.\\n\t\t\t\t\t\t```\\n\t\t\t\t\t\t'line', 'wrappedLine', 'page', 'halfPage', 'editor'\\n\t\t\t\t\t\t```\\n\t\t\t\t\t* 'value': Number of units to move. Default is '1'.\\n\t\t\t\t\t* 'revealCursor': If 'true' reveals the cursor if it is outside view port.\\n\t\t\t\t\",constraint:P,schema:{type:\"object\",required:[\"to\"],properties:{to:{type:\"string\",enum:[\"up\",\"down\"]},by:{type:\"string\",enum:[\"line\",\"wrappedLine\",\"page\",\"halfPage\",\"editor\"]},value:{type:\"number\",default:1},revealCursor:{type:\"boolean\"}}}}]},M.RawDirection={Up:\"up\",Right:\"right\",Down:\"down\",Left:\"left\"},M.RawUnit={Line:\"line\",WrappedLine:\"wrappedLine\",Page:\"page\",HalfPage:\"halfPage\",Editor:\"editor\",Column:\"column\"};function x(T){let A;switch(T.to){case M.RawDirection.Up:A=1;break;case M.RawDirection.Right:A=2;break;case M.RawDirection.Down:A=3;break;case M.RawDirection.Left:A=4;break;default:return null}let N;switch(T.by){case M.RawUnit.Line:N=1;break;case M.RawUnit.WrappedLine:N=2;break;case M.RawUnit.Page:N=3;break;case M.RawUnit.HalfPage:N=4;break;case M.RawUnit.Editor:N=5;break;case M.RawUnit.Column:N=6;break;default:N=2}const F=Math.floor(T.value||1),O=!!T.revealCursor;return{direction:A,unit:N,value:F,revealCursor:O,select:!!T.select}}M.parse=x})(o||(e.EditorScroll_=o={}));var d;(function(M){const P=function(x){if(!y.isObject(x))return!1;const T=x;return!(!y.isNumber(T.lineNumber)&&!y.isString(T.lineNumber)||!y.isUndefined(T.at)&&!y.isString(T.at))};M.description={description:\"Reveal the given line at the given logical position\",args:[{name:\"Reveal line argument object\",description:\"Property-value pairs that can be passed through this argument:\\n\t\t\t\t\t* 'lineNumber': A mandatory line number value.\\n\t\t\t\t\t* 'at': Logical position at which line has to be revealed.\\n\t\t\t\t\t\t```\\n\t\t\t\t\t\t'top', 'center', 'bottom'\\n\t\t\t\t\t\t```\\n\t\t\t\t\",constraint:P,schema:{type:\"object\",required:[\"lineNumber\"],properties:{lineNumber:{type:[\"number\",\"string\"]},at:{type:\"string\",enum:[\"top\",\"center\",\"bottom\"]}}}}]},M.RawAtArgument={Top:\"top\",Center:\"center\",Bottom:\"bottom\"}})(d||(e.RevealLine_=d={}));class l{constructor(P){P.addImplementation(1e4,\"code-editor\",(x,T)=>{const A=x.get(f.ICodeEditorService).getFocusedCodeEditor();return A&&A.hasTextFocus()?this._runEditorCommand(x,A,T):!1}),P.addImplementation(1e3,\"generic-dom-input-textarea\",(x,T)=>{const A=document.activeElement;return A&&[\"input\",\"textarea\"].indexOf(A.tagName.toLowerCase())>=0?(this.runDOMCommand(),!0):!1}),P.addImplementation(0,\"generic-dom\",(x,T)=>{const A=x.get(f.ICodeEditorService).getActiveCodeEditor();return A?(A.focus(),this._runEditorCommand(x,A,T)):!1})}_runEditorCommand(P,x,T){const A=this.runEditorCommand(P,x,T);return A||!0}}var p;(function(M){class P extends c{constructor(B){super(B),this._inSelectionMode=B.inSelectionMode}runCoreEditorCommand(B,V){if(!V.position)return;B.model.pushStackElement(),B.setCursorStates(V.source,3,[s.CursorMoveCommands.moveTo(B,B.getPrimaryCursorState(),this._inSelectionMode,V.position,V.viewPosition)])&&V.revealType!==2&&B.revealPrimaryCursor(V.source,!0,!0)}}M.MoveTo=(0,S.registerEditorCommand)(new P({id:\"_moveTo\",inSelectionMode:!1,precondition:void 0})),M.MoveToSelect=(0,S.registerEditorCommand)(new P({id:\"_moveToSelect\",inSelectionMode:!0,precondition:void 0}));class x extends c{runCoreEditorCommand(B,V){B.model.pushStackElement();const Y=this._getColumnSelectResult(B,B.getPrimaryCursorState(),B.getCursorColumnSelectData(),V);Y!==null&&(B.setCursorStates(V.source,3,Y.viewStates.map(ie=>g.CursorState.fromViewState(ie))),B.setCursorColumnSelectData({isReal:!0,fromViewLineNumber:Y.fromLineNumber,fromViewVisualColumn:Y.fromVisualColumn,toViewLineNumber:Y.toLineNumber,toViewVisualColumn:Y.toVisualColumn}),Y.reversed?B.revealTopMostCursor(V.source):B.revealBottomMostCursor(V.source))}}M.ColumnSelect=(0,S.registerEditorCommand)(new class extends x{constructor(){super({id:\"columnSelect\",precondition:void 0})}_getColumnSelectResult(H,B,V,Y){if(typeof Y.position>\"u\"||typeof Y.viewPosition>\"u\"||typeof Y.mouseColumn>\"u\")return null;const ie=H.model.validatePosition(Y.position),ae=H.coordinatesConverter.validateViewPosition(new n.Position(Y.viewPosition.lineNumber,Y.viewPosition.column),ie),ce=Y.doColumnSelect?V.fromViewLineNumber:ae.lineNumber,de=Y.doColumnSelect?V.fromViewVisualColumn:Y.mouseColumn-1;return _.ColumnSelection.columnSelect(H.cursorConfig,H,ce,de,ae.lineNumber,Y.mouseColumn-1)}}),M.CursorColumnSelectLeft=(0,S.registerEditorCommand)(new class extends x{constructor(){super({id:\"cursorColumnSelectLeft\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3599,linux:{primary:0}}})}_getColumnSelectResult(H,B,V,Y){return _.ColumnSelection.columnSelectLeft(H.cursorConfig,H,V)}}),M.CursorColumnSelectRight=(0,S.registerEditorCommand)(new class extends x{constructor(){super({id:\"cursorColumnSelectRight\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3601,linux:{primary:0}}})}_getColumnSelectResult(H,B,V,Y){return _.ColumnSelection.columnSelectRight(H.cursorConfig,H,V)}});class T extends x{constructor(B){super(B),this._isPaged=B.isPaged}_getColumnSelectResult(B,V,Y,ie){return _.ColumnSelection.columnSelectUp(B.cursorConfig,B,Y,this._isPaged)}}M.CursorColumnSelectUp=(0,S.registerEditorCommand)(new T({isPaged:!1,id:\"cursorColumnSelectUp\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3600,linux:{primary:0}}})),M.CursorColumnSelectPageUp=(0,S.registerEditorCommand)(new T({isPaged:!0,id:\"cursorColumnSelectPageUp\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3595,linux:{primary:0}}}));class A extends x{constructor(B){super(B),this._isPaged=B.isPaged}_getColumnSelectResult(B,V,Y,ie){return _.ColumnSelection.columnSelectDown(B.cursorConfig,B,Y,this._isPaged)}}M.CursorColumnSelectDown=(0,S.registerEditorCommand)(new A({isPaged:!1,id:\"cursorColumnSelectDown\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3602,linux:{primary:0}}})),M.CursorColumnSelectPageDown=(0,S.registerEditorCommand)(new A({isPaged:!0,id:\"cursorColumnSelectPageDown\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3596,linux:{primary:0}}}));class N extends c{constructor(){super({id:\"cursorMove\",precondition:void 0,description:s.CursorMove.description})}runCoreEditorCommand(B,V){const Y=s.CursorMove.parse(V);Y&&this._runCursorMove(B,V.source,Y)}_runCursorMove(B,V,Y){B.model.pushStackElement(),B.setCursorStates(V,3,N._move(B,B.getCursorStates(),Y)),B.revealPrimaryCursor(V,!0)}static _move(B,V,Y){const ie=Y.select,ae=Y.value;switch(Y.direction){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:return s.CursorMoveCommands.simpleMove(B,V,Y.direction,ie,ae,Y.unit);case 11:case 13:case 12:case 14:return s.CursorMoveCommands.viewportMove(B,V,Y.direction,ie,ae);default:return null}}}M.CursorMoveImpl=N,M.CursorMove=(0,S.registerEditorCommand)(new N);class F extends c{constructor(B){super(B),this._staticArgs=B.args}runCoreEditorCommand(B,V){let Y=this._staticArgs;this._staticArgs.value===-1&&(Y={direction:this._staticArgs.direction,unit:this._staticArgs.unit,select:this._staticArgs.select,value:V.pageSize||B.cursorConfig.pageSize}),B.model.pushStackElement(),B.setCursorStates(V.source,3,s.CursorMoveCommands.simpleMove(B,B.getCursorStates(),Y.direction,Y.select,Y.value,Y.unit)),B.revealPrimaryCursor(V.source,!0)}}M.CursorLeft=(0,S.registerEditorCommand)(new F({args:{direction:0,unit:0,select:!1,value:1},id:\"cursorLeft\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:15,mac:{primary:15,secondary:[288]}}})),M.CursorLeftSelect=(0,S.registerEditorCommand)(new F({args:{direction:0,unit:0,select:!0,value:1},id:\"cursorLeftSelect\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1039}})),M.CursorRight=(0,S.registerEditorCommand)(new F({args:{direction:1,unit:0,select:!1,value:1},id:\"cursorRight\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:17,mac:{primary:17,secondary:[292]}}})),M.CursorRightSelect=(0,S.registerEditorCommand)(new F({args:{direction:1,unit:0,select:!0,value:1},id:\"cursorRightSelect\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1041}})),M.CursorUp=(0,S.registerEditorCommand)(new F({args:{direction:2,unit:2,select:!1,value:1},id:\"cursorUp\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:16,mac:{primary:16,secondary:[302]}}})),M.CursorUpSelect=(0,S.registerEditorCommand)(new F({args:{direction:2,unit:2,select:!0,value:1},id:\"cursorUpSelect\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1040,secondary:[3088],mac:{primary:1040},linux:{primary:1040}}})),M.CursorPageUp=(0,S.registerEditorCommand)(new F({args:{direction:2,unit:2,select:!1,value:-1},id:\"cursorPageUp\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:11}})),M.CursorPageUpSelect=(0,S.registerEditorCommand)(new F({args:{direction:2,unit:2,select:!0,value:-1},id:\"cursorPageUpSelect\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1035}})),M.CursorDown=(0,S.registerEditorCommand)(new F({args:{direction:3,unit:2,select:!1,value:1},id:\"cursorDown\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:18,mac:{primary:18,secondary:[300]}}})),M.CursorDownSelect=(0,S.registerEditorCommand)(new F({args:{direction:3,unit:2,select:!0,value:1},id:\"cursorDownSelect\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1042,secondary:[3090],mac:{primary:1042},linux:{primary:1042}}})),M.CursorPageDown=(0,S.registerEditorCommand)(new F({args:{direction:3,unit:2,select:!1,value:-1},id:\"cursorPageDown\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:12}})),M.CursorPageDownSelect=(0,S.registerEditorCommand)(new F({args:{direction:3,unit:2,select:!0,value:-1},id:\"cursorPageDownSelect\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1036}})),M.CreateCursor=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"createCursor\",precondition:void 0})}runCoreEditorCommand(H,B){if(!B.position)return;let V;B.wholeLine?V=s.CursorMoveCommands.line(H,H.getPrimaryCursorState(),!1,B.position,B.viewPosition):V=s.CursorMoveCommands.moveTo(H,H.getPrimaryCursorState(),!1,B.position,B.viewPosition);const Y=H.getCursorStates();if(Y.length>1){const ie=V.modelState?V.modelState.position:null,ae=V.viewState?V.viewState.position:null;for(let ce=0,de=Y.length;ce<de;ce++){const he=Y[ce];if(!(ie&&!he.modelState.selection.containsPosition(ie))&&!(ae&&!he.viewState.selection.containsPosition(ae))){Y.splice(ce,1),H.model.pushStackElement(),H.setCursorStates(B.source,3,Y);return}}}Y.push(V),H.model.pushStackElement(),H.setCursorStates(B.source,3,Y)}}),M.LastCursorMoveToSelect=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"_lastCursorMoveToSelect\",precondition:void 0})}runCoreEditorCommand(H,B){if(!B.position)return;const V=H.getLastAddedCursorIndex(),Y=H.getCursorStates(),ie=Y.slice(0);ie[V]=s.CursorMoveCommands.moveTo(H,Y[V],!0,B.position,B.viewPosition),H.model.pushStackElement(),H.setCursorStates(B.source,3,ie)}});class O extends c{constructor(B){super(B),this._inSelectionMode=B.inSelectionMode}runCoreEditorCommand(B,V){B.model.pushStackElement(),B.setCursorStates(V.source,3,s.CursorMoveCommands.moveToBeginningOfLine(B,B.getCursorStates(),this._inSelectionMode)),B.revealPrimaryCursor(V.source,!0)}}M.CursorHome=(0,S.registerEditorCommand)(new O({inSelectionMode:!1,id:\"cursorHome\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:14,mac:{primary:14,secondary:[2063]}}})),M.CursorHomeSelect=(0,S.registerEditorCommand)(new O({inSelectionMode:!0,id:\"cursorHomeSelect\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1038,mac:{primary:1038,secondary:[3087]}}}));class W extends c{constructor(B){super(B),this._inSelectionMode=B.inSelectionMode}runCoreEditorCommand(B,V){B.model.pushStackElement(),B.setCursorStates(V.source,3,this._exec(B.getCursorStates())),B.revealPrimaryCursor(V.source,!0)}_exec(B){const V=[];for(let Y=0,ie=B.length;Y<ie;Y++){const ae=B[Y],ce=ae.modelState.position.lineNumber;V[Y]=g.CursorState.fromModelState(ae.modelState.move(this._inSelectionMode,ce,1,0))}return V}}M.CursorLineStart=(0,S.registerEditorCommand)(new W({inSelectionMode:!1,id:\"cursorLineStart\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:0,mac:{primary:287}}})),M.CursorLineStartSelect=(0,S.registerEditorCommand)(new W({inSelectionMode:!0,id:\"cursorLineStartSelect\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:0,mac:{primary:1311}}}));class U extends c{constructor(B){super(B),this._inSelectionMode=B.inSelectionMode}runCoreEditorCommand(B,V){B.model.pushStackElement(),B.setCursorStates(V.source,3,s.CursorMoveCommands.moveToEndOfLine(B,B.getCursorStates(),this._inSelectionMode,V.sticky||!1)),B.revealPrimaryCursor(V.source,!0)}}M.CursorEnd=(0,S.registerEditorCommand)(new U({inSelectionMode:!1,id:\"cursorEnd\",precondition:void 0,kbOpts:{args:{sticky:!1},weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:13,mac:{primary:13,secondary:[2065]}},description:{description:\"Go to End\",args:[{name:\"args\",schema:{type:\"object\",properties:{sticky:{description:L.localize(0,null),type:\"boolean\",default:!1}}}}]}})),M.CursorEndSelect=(0,S.registerEditorCommand)(new U({inSelectionMode:!0,id:\"cursorEndSelect\",precondition:void 0,kbOpts:{args:{sticky:!1},weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1037,mac:{primary:1037,secondary:[3089]}},description:{description:\"Select to End\",args:[{name:\"args\",schema:{type:\"object\",properties:{sticky:{description:L.localize(1,null),type:\"boolean\",default:!1}}}}]}}));class j extends c{constructor(B){super(B),this._inSelectionMode=B.inSelectionMode}runCoreEditorCommand(B,V){B.model.pushStackElement(),B.setCursorStates(V.source,3,this._exec(B,B.getCursorStates())),B.revealPrimaryCursor(V.source,!0)}_exec(B,V){const Y=[];for(let ie=0,ae=V.length;ie<ae;ie++){const ce=V[ie],de=ce.modelState.position.lineNumber,he=B.model.getLineMaxColumn(de);Y[ie]=g.CursorState.fromModelState(ce.modelState.move(this._inSelectionMode,de,he,0))}return Y}}M.CursorLineEnd=(0,S.registerEditorCommand)(new j({inSelectionMode:!1,id:\"cursorLineEnd\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:0,mac:{primary:291}}})),M.CursorLineEndSelect=(0,S.registerEditorCommand)(new j({inSelectionMode:!0,id:\"cursorLineEndSelect\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:0,mac:{primary:1315}}}));class R extends c{constructor(B){super(B),this._inSelectionMode=B.inSelectionMode}runCoreEditorCommand(B,V){B.model.pushStackElement(),B.setCursorStates(V.source,3,s.CursorMoveCommands.moveToBeginningOfBuffer(B,B.getCursorStates(),this._inSelectionMode)),B.revealPrimaryCursor(V.source,!0)}}M.CursorTop=(0,S.registerEditorCommand)(new R({inSelectionMode:!1,id:\"cursorTop\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:2062,mac:{primary:2064}}})),M.CursorTopSelect=(0,S.registerEditorCommand)(new R({inSelectionMode:!0,id:\"cursorTopSelect\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3086,mac:{primary:3088}}}));class K extends c{constructor(B){super(B),this._inSelectionMode=B.inSelectionMode}runCoreEditorCommand(B,V){B.model.pushStackElement(),B.setCursorStates(V.source,3,s.CursorMoveCommands.moveToEndOfBuffer(B,B.getCursorStates(),this._inSelectionMode)),B.revealPrimaryCursor(V.source,!0)}}M.CursorBottom=(0,S.registerEditorCommand)(new K({inSelectionMode:!1,id:\"cursorBottom\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:2061,mac:{primary:2066}}})),M.CursorBottomSelect=(0,S.registerEditorCommand)(new K({inSelectionMode:!0,id:\"cursorBottomSelect\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:3085,mac:{primary:3090}}}));class G extends c{constructor(){super({id:\"editorScroll\",precondition:void 0,description:o.description})}determineScrollMethod(B){const V=[6],Y=[1,2,3,4,5,6],ie=[4,2],ae=[1,3];return V.includes(B.unit)&&ie.includes(B.direction)?this._runHorizontalEditorScroll.bind(this):Y.includes(B.unit)&&ae.includes(B.direction)?this._runVerticalEditorScroll.bind(this):null}runCoreEditorCommand(B,V){const Y=o.parse(V);if(!Y)return;const ie=this.determineScrollMethod(Y);ie&&ie(B,V.source,Y)}_runVerticalEditorScroll(B,V,Y){const ie=this._computeDesiredScrollTop(B,Y);if(Y.revealCursor){const ae=B.getCompletelyVisibleViewRangeAtScrollTop(ie);B.setCursorStates(V,3,[s.CursorMoveCommands.findPositionInViewportIfOutside(B,B.getPrimaryCursorState(),ae,Y.select)])}B.viewLayout.setScrollPosition({scrollTop:ie},0)}_computeDesiredScrollTop(B,V){if(V.unit===1){const ae=B.viewLayout.getFutureViewport(),ce=B.getCompletelyVisibleViewRangeAtScrollTop(ae.top),de=B.coordinatesConverter.convertViewRangeToModelRange(ce);let he;V.direction===1?he=Math.max(1,de.startLineNumber-V.value):he=Math.min(B.model.getLineCount(),de.startLineNumber+V.value);const ue=B.coordinatesConverter.convertModelPositionToViewPosition(new n.Position(he,1));return B.viewLayout.getVerticalOffsetForLineNumber(ue.lineNumber)}if(V.unit===5){let ae=0;return V.direction===3&&(ae=B.model.getLineCount()-B.cursorConfig.pageSize),B.viewLayout.getVerticalOffsetForLineNumber(ae)}let Y;V.unit===3?Y=B.cursorConfig.pageSize*V.value:V.unit===4?Y=Math.round(B.cursorConfig.pageSize/2)*V.value:Y=V.value;const ie=(V.direction===1?-1:1)*Y;return B.viewLayout.getCurrentScrollTop()+ie*B.cursorConfig.lineHeight}_runHorizontalEditorScroll(B,V,Y){const ie=this._computeDesiredScrollLeft(B,Y);B.viewLayout.setScrollPosition({scrollLeft:ie},0)}_computeDesiredScrollLeft(B,V){const Y=(V.direction===4?-1:1)*V.value;return B.viewLayout.getCurrentScrollLeft()+Y*B.cursorConfig.typicalHalfwidthCharacterWidth}}M.EditorScrollImpl=G,M.EditorScroll=(0,S.registerEditorCommand)(new G),M.ScrollLineUp=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"scrollLineUp\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:2064,mac:{primary:267}}})}runCoreEditorCommand(H,B){M.EditorScroll.runCoreEditorCommand(H,{to:o.RawDirection.Up,by:o.RawUnit.WrappedLine,value:1,revealCursor:!1,select:!1,source:B.source})}}),M.ScrollPageUp=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"scrollPageUp\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:2059,win:{primary:523},linux:{primary:523}}})}runCoreEditorCommand(H,B){M.EditorScroll.runCoreEditorCommand(H,{to:o.RawDirection.Up,by:o.RawUnit.Page,value:1,revealCursor:!1,select:!1,source:B.source})}}),M.ScrollEditorTop=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"scrollEditorTop\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus}})}runCoreEditorCommand(H,B){M.EditorScroll.runCoreEditorCommand(H,{to:o.RawDirection.Up,by:o.RawUnit.Editor,value:1,revealCursor:!1,select:!1,source:B.source})}}),M.ScrollLineDown=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"scrollLineDown\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:2066,mac:{primary:268}}})}runCoreEditorCommand(H,B){M.EditorScroll.runCoreEditorCommand(H,{to:o.RawDirection.Down,by:o.RawUnit.WrappedLine,value:1,revealCursor:!1,select:!1,source:B.source})}}),M.ScrollPageDown=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"scrollPageDown\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:2060,win:{primary:524},linux:{primary:524}}})}runCoreEditorCommand(H,B){M.EditorScroll.runCoreEditorCommand(H,{to:o.RawDirection.Down,by:o.RawUnit.Page,value:1,revealCursor:!1,select:!1,source:B.source})}}),M.ScrollEditorBottom=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"scrollEditorBottom\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus}})}runCoreEditorCommand(H,B){M.EditorScroll.runCoreEditorCommand(H,{to:o.RawDirection.Down,by:o.RawUnit.Editor,value:1,revealCursor:!1,select:!1,source:B.source})}}),M.ScrollLeft=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"scrollLeft\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus}})}runCoreEditorCommand(H,B){M.EditorScroll.runCoreEditorCommand(H,{to:o.RawDirection.Left,by:o.RawUnit.Column,value:2,revealCursor:!1,select:!1,source:B.source})}}),M.ScrollRight=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"scrollRight\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus}})}runCoreEditorCommand(H,B){M.EditorScroll.runCoreEditorCommand(H,{to:o.RawDirection.Right,by:o.RawUnit.Column,value:2,revealCursor:!1,select:!1,source:B.source})}});class Z extends c{constructor(B){super(B),this._inSelectionMode=B.inSelectionMode}runCoreEditorCommand(B,V){V.position&&(B.model.pushStackElement(),B.setCursorStates(V.source,3,[s.CursorMoveCommands.word(B,B.getPrimaryCursorState(),this._inSelectionMode,V.position)]),V.revealType!==2&&B.revealPrimaryCursor(V.source,!0,!0))}}M.WordSelect=(0,S.registerEditorCommand)(new Z({inSelectionMode:!1,id:\"_wordSelect\",precondition:void 0})),M.WordSelectDrag=(0,S.registerEditorCommand)(new Z({inSelectionMode:!0,id:\"_wordSelectDrag\",precondition:void 0})),M.LastCursorWordSelect=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"lastCursorWordSelect\",precondition:void 0})}runCoreEditorCommand(H,B){if(!B.position)return;const V=H.getLastAddedCursorIndex(),Y=H.getCursorStates(),ie=Y.slice(0),ae=Y[V];ie[V]=s.CursorMoveCommands.word(H,ae,ae.modelState.hasSelection(),B.position),H.model.pushStackElement(),H.setCursorStates(B.source,3,ie)}});class J extends c{constructor(B){super(B),this._inSelectionMode=B.inSelectionMode}runCoreEditorCommand(B,V){V.position&&(B.model.pushStackElement(),B.setCursorStates(V.source,3,[s.CursorMoveCommands.line(B,B.getPrimaryCursorState(),this._inSelectionMode,V.position,V.viewPosition)]),V.revealType!==2&&B.revealPrimaryCursor(V.source,!1,!0))}}M.LineSelect=(0,S.registerEditorCommand)(new J({inSelectionMode:!1,id:\"_lineSelect\",precondition:void 0})),M.LineSelectDrag=(0,S.registerEditorCommand)(new J({inSelectionMode:!0,id:\"_lineSelectDrag\",precondition:void 0}));class X extends c{constructor(B){super(B),this._inSelectionMode=B.inSelectionMode}runCoreEditorCommand(B,V){if(!V.position)return;const Y=B.getLastAddedCursorIndex(),ie=B.getCursorStates(),ae=ie.slice(0);ae[Y]=s.CursorMoveCommands.line(B,ie[Y],this._inSelectionMode,V.position,V.viewPosition),B.model.pushStackElement(),B.setCursorStates(V.source,3,ae)}}M.LastCursorLineSelect=(0,S.registerEditorCommand)(new X({inSelectionMode:!1,id:\"lastCursorLineSelect\",precondition:void 0})),M.LastCursorLineSelectDrag=(0,S.registerEditorCommand)(new X({inSelectionMode:!0,id:\"lastCursorLineSelectDrag\",precondition:void 0})),M.CancelSelection=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"cancelSelection\",precondition:a.EditorContextKeys.hasNonEmptySelection,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:9,secondary:[1033]}})}runCoreEditorCommand(H,B){H.model.pushStackElement(),H.setCursorStates(B.source,3,[s.CursorMoveCommands.cancelSelection(H,H.getPrimaryCursorState())]),H.revealPrimaryCursor(B.source,!0)}}),M.RemoveSecondaryCursors=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"removeSecondaryCursors\",precondition:a.EditorContextKeys.hasMultipleSelections,kbOpts:{weight:r+1,kbExpr:a.EditorContextKeys.textInputFocus,primary:9,secondary:[1033]}})}runCoreEditorCommand(H,B){H.model.pushStackElement(),H.setCursorStates(B.source,3,[H.getPrimaryCursorState()]),H.revealPrimaryCursor(B.source,!0),(0,D.status)(L.localize(2,null))}}),M.RevealLine=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"revealLine\",precondition:void 0,description:d.description})}runCoreEditorCommand(H,B){const V=B,Y=V.lineNumber||0;let ie=typeof Y==\"number\"?Y+1:parseInt(Y)+1;ie<1&&(ie=1);const ae=H.model.getLineCount();ie>ae&&(ie=ae);const ce=new t.Range(ie,1,ie,H.model.getLineMaxColumn(ie));let de=0;if(V.at)switch(V.at){case d.RawAtArgument.Top:de=3;break;case d.RawAtArgument.Center:de=1;break;case d.RawAtArgument.Bottom:de=4;break;default:break}const he=H.coordinatesConverter.convertModelRangeToViewRange(ce);H.revealRange(B.source,!1,he,de,0)}}),M.SelectAll=new class extends l{constructor(){super(S.SelectAllCommand)}runDOMCommand(){k.isFirefox&&(document.activeElement.focus(),document.activeElement.select()),document.execCommand(\"selectAll\")}runEditorCommand(H,B,V){const Y=B._getViewModel();Y&&this.runCoreEditorCommand(Y,V)}runCoreEditorCommand(H,B){H.model.pushStackElement(),H.setCursorStates(\"keyboard\",3,[s.CursorMoveCommands.selectAll(H,H.getPrimaryCursorState())])}},M.SetSelection=(0,S.registerEditorCommand)(new class extends c{constructor(){super({id:\"setSelection\",precondition:void 0})}runCoreEditorCommand(H,B){B.selection&&(H.model.pushStackElement(),H.setCursorStates(B.source,3,[g.CursorState.fromModelSelection(B.selection)]))}})})(p||(e.CoreNavigationCommands=p={}));const m=u.ContextKeyExpr.and(a.EditorContextKeys.textInputFocus,a.EditorContextKeys.columnSelection);function v(M,P){h.KeybindingsRegistry.registerKeybindingRule({id:M,primary:P,when:m,weight:r+1})}v(p.CursorColumnSelectLeft.id,1039),v(p.CursorColumnSelectRight.id,1041),v(p.CursorColumnSelectUp.id,1040),v(p.CursorColumnSelectPageUp.id,1035),v(p.CursorColumnSelectDown.id,1042),v(p.CursorColumnSelectPageDown.id,1036);function b(M){return M.register(),M}var w;(function(M){class P extends S.EditorCommand{runEditorCommand(T,A,N){const F=A._getViewModel();F&&this.runCoreEditingCommand(A,F,N||{})}}M.CoreEditingCommand=P,M.LineBreakInsert=(0,S.registerEditorCommand)(new class extends P{constructor(){super({id:\"lineBreakInsert\",precondition:a.EditorContextKeys.writable,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:0,mac:{primary:301}}})}runCoreEditingCommand(x,T,A){x.pushUndoStop(),x.executeCommands(this.id,i.TypeOperations.lineBreakInsert(T.cursorConfig,T.model,T.getCursorStates().map(N=>N.modelState.selection)))}}),M.Outdent=(0,S.registerEditorCommand)(new class extends P{constructor(){super({id:\"outdent\",precondition:a.EditorContextKeys.writable,kbOpts:{weight:r,kbExpr:u.ContextKeyExpr.and(a.EditorContextKeys.editorTextFocus,a.EditorContextKeys.tabDoesNotMoveFocus),primary:1026}})}runCoreEditingCommand(x,T,A){x.pushUndoStop(),x.executeCommands(this.id,i.TypeOperations.outdent(T.cursorConfig,T.model,T.getCursorStates().map(N=>N.modelState.selection))),x.pushUndoStop()}}),M.Tab=(0,S.registerEditorCommand)(new class extends P{constructor(){super({id:\"tab\",precondition:a.EditorContextKeys.writable,kbOpts:{weight:r,kbExpr:u.ContextKeyExpr.and(a.EditorContextKeys.editorTextFocus,a.EditorContextKeys.tabDoesNotMoveFocus),primary:2}})}runCoreEditingCommand(x,T,A){x.pushUndoStop(),x.executeCommands(this.id,i.TypeOperations.tab(T.cursorConfig,T.model,T.getCursorStates().map(N=>N.modelState.selection))),x.pushUndoStop()}}),M.DeleteLeft=(0,S.registerEditorCommand)(new class extends P{constructor(){super({id:\"deleteLeft\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:1,secondary:[1025],mac:{primary:1,secondary:[1025,294,257]}}})}runCoreEditingCommand(x,T,A){const[N,F]=C.DeleteOperations.deleteLeft(T.getPrevEditOperationType(),T.cursorConfig,T.model,T.getCursorStates().map(O=>O.modelState.selection),T.getCursorAutoClosedCharacters());N&&x.pushUndoStop(),x.executeCommands(this.id,F),T.setPrevEditOperationType(2)}}),M.DeleteRight=(0,S.registerEditorCommand)(new class extends P{constructor(){super({id:\"deleteRight\",precondition:void 0,kbOpts:{weight:r,kbExpr:a.EditorContextKeys.textInputFocus,primary:20,mac:{primary:20,secondary:[290,276]}}})}runCoreEditingCommand(x,T,A){const[N,F]=C.DeleteOperations.deleteRight(T.getPrevEditOperationType(),T.cursorConfig,T.model,T.getCursorStates().map(O=>O.modelState.selection));N&&x.pushUndoStop(),x.executeCommands(this.id,F),T.setPrevEditOperationType(3)}}),M.Undo=new class extends l{constructor(){super(S.UndoCommand)}runDOMCommand(){document.execCommand(\"undo\")}runEditorCommand(x,T,A){if(!(!T.hasModel()||T.getOption(89)===!0))return T.getModel().undo()}},M.Redo=new class extends l{constructor(){super(S.RedoCommand)}runDOMCommand(){document.execCommand(\"redo\")}runEditorCommand(x,T,A){if(!(!T.hasModel()||T.getOption(89)===!0))return T.getModel().redo()}}})(w||(e.CoreEditingCommands=w={}));class E extends S.Command{constructor(P,x,T){super({id:P,precondition:void 0,description:T}),this._handlerId=x}runCommand(P,x){const T=P.get(f.ICodeEditorService).getFocusedCodeEditor();T&&T.trigger(\"keyboard\",this._handlerId,x)}}function I(M,P){b(new E(\"default:\"+M,M)),b(new E(M,M,P))}I(\"type\",{description:\"Type\",args:[{name:\"args\",schema:{type:\"object\",required:[\"text\"],properties:{text:{type:\"string\"}}}}]}),I(\"replacePreviousChar\"),I(\"compositionType\"),I(\"compositionStart\"),I(\"compositionEnd\"),I(\"paste\"),I(\"cut\")}),define(ne[792],se([1,0,233,16]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MarkerDecorationsContribution=void 0;let y=class{constructor(S,f){}dispose(){}};e.MarkerDecorationsContribution=y,y.ID=\"editor.contrib.markerDecorations\",e.MarkerDecorationsContribution=y=ke([fe(1,L.IMarkerDecorationsService)],y),(0,k.registerEditorContribution)(y.ID,y,0)}),define(ne[793],se([1,0,189,12,17]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewController=void 0;class D{constructor(f,_,g,C){this.configuration=f,this.viewModel=_,this.userInputEvents=g,this.commandDelegate=C}paste(f,_,g,C){this.commandDelegate.paste(f,_,g,C)}type(f){this.commandDelegate.type(f)}compositionType(f,_,g,C){this.commandDelegate.compositionType(f,_,g,C)}compositionStart(){this.commandDelegate.startComposition()}compositionEnd(){this.commandDelegate.endComposition()}cut(){this.commandDelegate.cut()}setSelection(f){L.CoreNavigationCommands.SetSelection.runCoreEditorCommand(this.viewModel,{source:\"keyboard\",selection:f})}_validateViewColumn(f){const _=this.viewModel.getLineMinColumn(f.lineNumber);return f.column<_?new k.Position(f.lineNumber,_):f}_hasMulticursorModifier(f){switch(this.configuration.options.get(76)){case\"altKey\":return f.altKey;case\"ctrlKey\":return f.ctrlKey;case\"metaKey\":return f.metaKey;default:return!1}}_hasNonMulticursorModifier(f){switch(this.configuration.options.get(76)){case\"altKey\":return f.ctrlKey||f.metaKey;case\"ctrlKey\":return f.altKey||f.metaKey;case\"metaKey\":return f.ctrlKey||f.altKey;default:return!1}}dispatchMouse(f){const _=this.configuration.options,g=y.isLinux&&_.get(105),C=_.get(21);f.middleButton&&!g?this._columnSelect(f.position,f.mouseColumn,f.inSelectionMode):f.startedOnLineNumbers?this._hasMulticursorModifier(f)?f.inSelectionMode?this._lastCursorLineSelect(f.position,f.revealType):this._createCursor(f.position,!0):f.inSelectionMode?this._lineSelectDrag(f.position,f.revealType):this._lineSelect(f.position,f.revealType):f.mouseDownCount>=4?this._selectAll():f.mouseDownCount===3?this._hasMulticursorModifier(f)?f.inSelectionMode?this._lastCursorLineSelectDrag(f.position,f.revealType):this._lastCursorLineSelect(f.position,f.revealType):f.inSelectionMode?this._lineSelectDrag(f.position,f.revealType):this._lineSelect(f.position,f.revealType):f.mouseDownCount===2?f.onInjectedText||(this._hasMulticursorModifier(f)?this._lastCursorWordSelect(f.position,f.revealType):f.inSelectionMode?this._wordSelectDrag(f.position,f.revealType):this._wordSelect(f.position,f.revealType)):this._hasMulticursorModifier(f)?this._hasNonMulticursorModifier(f)||(f.shiftKey?this._columnSelect(f.position,f.mouseColumn,!0):f.inSelectionMode?this._lastCursorMoveToSelect(f.position,f.revealType):this._createCursor(f.position,!1)):f.inSelectionMode?f.altKey?this._columnSelect(f.position,f.mouseColumn,!0):C?this._columnSelect(f.position,f.mouseColumn,!0):this._moveToSelect(f.position,f.revealType):this.moveTo(f.position,f.revealType)}_usualArgs(f,_){return f=this._validateViewColumn(f),{source:\"mouse\",position:this._convertViewToModelPosition(f),viewPosition:f,revealType:_}}moveTo(f,_){L.CoreNavigationCommands.MoveTo.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_moveToSelect(f,_){L.CoreNavigationCommands.MoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_columnSelect(f,_,g){f=this._validateViewColumn(f),L.CoreNavigationCommands.ColumnSelect.runCoreEditorCommand(this.viewModel,{source:\"mouse\",position:this._convertViewToModelPosition(f),viewPosition:f,mouseColumn:_,doColumnSelect:g})}_createCursor(f,_){f=this._validateViewColumn(f),L.CoreNavigationCommands.CreateCursor.runCoreEditorCommand(this.viewModel,{source:\"mouse\",position:this._convertViewToModelPosition(f),viewPosition:f,wholeLine:_})}_lastCursorMoveToSelect(f,_){L.CoreNavigationCommands.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_wordSelect(f,_){L.CoreNavigationCommands.WordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_wordSelectDrag(f,_){L.CoreNavigationCommands.WordSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_lastCursorWordSelect(f,_){L.CoreNavigationCommands.LastCursorWordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_lineSelect(f,_){L.CoreNavigationCommands.LineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_lineSelectDrag(f,_){L.CoreNavigationCommands.LineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_lastCursorLineSelect(f,_){L.CoreNavigationCommands.LastCursorLineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_lastCursorLineSelectDrag(f,_){L.CoreNavigationCommands.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(f,_))}_selectAll(){L.CoreNavigationCommands.SelectAll.runCoreEditorCommand(this.viewModel,{source:\"mouse\"})}_convertViewToModelPosition(f){return this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(f)}emitKeyDown(f){this.userInputEvents.emitKeyDown(f)}emitKeyUp(f){this.userInputEvents.emitKeyUp(f)}emitContextMenu(f){this.userInputEvents.emitContextMenu(f)}emitMouseMove(f){this.userInputEvents.emitMouseMove(f)}emitMouseLeave(f){this.userInputEvents.emitMouseLeave(f)}emitMouseUp(f){this.userInputEvents.emitMouseUp(f)}emitMouseDown(f){this.userInputEvents.emitMouseDown(f)}emitMouseDrag(f){this.userInputEvents.emitMouseDrag(f)}emitMouseDrop(f){this.userInputEvents.emitMouseDrop(f)}emitMouseDropCanceled(){this.userInputEvents.emitMouseDropCanceled()}emitMouseWheel(f){this.userInputEvents.emitMouseWheel(f)}}e.ViewController=D}),define(ne[348],se([1,0,6,58,66,109,115,79]),function(Q,e,L,k,y,D,S,f){\"use strict\";var _;Object.defineProperty(e,\"__esModule\",{value:!0}),e.WorkerBasedDocumentDiffProvider=void 0;let g=_=class{constructor(s,i,n){this.editorWorkerService=i,this.telemetryService=n,this.onDidChangeEventEmitter=new L.Emitter,this.onDidChange=this.onDidChangeEventEmitter.event,this.diffAlgorithm=\"advanced\",this.diffAlgorithmOnDidChangeSubscription=void 0,this.setOptions(s)}dispose(){var s;(s=this.diffAlgorithmOnDidChangeSubscription)===null||s===void 0||s.dispose()}computeDiff(s,i,n,t){var a,u;return we(this,void 0,void 0,function*(){if(typeof this.diffAlgorithm!=\"string\")return this.diffAlgorithm.computeDiff(s,i,n,t);if(s.getLineCount()===1&&s.getLineMaxColumn(1)===1)return i.getLineCount()===1&&i.getLineMaxColumn(1)===1?{changes:[],identical:!0,quitEarly:!1,moves:[]}:{changes:[new D.LineRangeMapping(new y.LineRange(1,2),new y.LineRange(1,i.getLineCount()+1),[new D.RangeMapping(s.getFullModelRange(),i.getFullModelRange())])],identical:!1,quitEarly:!1,moves:[]};const h=JSON.stringify([s.uri.toString(),i.uri.toString()]),r=JSON.stringify([s.id,i.id,s.getAlternativeVersionId(),i.getAlternativeVersionId(),JSON.stringify(n)]),c=_.diffCache.get(h);if(c&&c.context===r)return c.result;const o=k.StopWatch.create(),d=yield this.editorWorkerService.computeDiff(s.uri,i.uri,n,this.diffAlgorithm),l=o.elapsed();if(this.telemetryService.publicLog2(\"diffEditor.computeDiff\",{timeMs:l,timedOut:(a=d?.quitEarly)!==null&&a!==void 0?a:!0,detectedMoves:n.computeMoves?(u=d?.moves.length)!==null&&u!==void 0?u:0:-1}),t.isCancellationRequested)return{changes:[],identical:!1,quitEarly:!0,moves:[]};if(!d)throw new Error(\"no diff result available\");return _.diffCache.size>10&&_.diffCache.delete(_.diffCache.keys().next().value),_.diffCache.set(h,{result:d,context:r}),d})}setOptions(s){var i;let n=!1;s.diffAlgorithm&&this.diffAlgorithm!==s.diffAlgorithm&&((i=this.diffAlgorithmOnDidChangeSubscription)===null||i===void 0||i.dispose(),this.diffAlgorithmOnDidChangeSubscription=void 0,this.diffAlgorithm=s.diffAlgorithm,typeof s.diffAlgorithm!=\"string\"&&(this.diffAlgorithmOnDidChangeSubscription=s.diffAlgorithm.onDidChange(()=>this.onDidChangeEventEmitter.fire())),n=!0),n&&this.onDidChangeEventEmitter.fire()}};e.WorkerBasedDocumentDiffProvider=g,g.diffCache=new Map,e.WorkerBasedDocumentDiffProvider=g=_=ke([fe(1,S.IEditorWorkerService),fe(2,f.ITelemetryService)],g)}),define(ne[794],se([1,0,49,55,63,16,24,21,632,15,436]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";var C;Object.defineProperty(e,\"__esModule\",{value:!0}),e.SelectionAnchorSet=void 0,e.SelectionAnchorSet=new g.RawContextKey(\"selectionAnchorSet\",!1);let s=C=class{static get(h){return h.getContribution(C.ID)}constructor(h,r){this.editor=h,this.selectionAnchorSetContextKey=e.SelectionAnchorSet.bindTo(r),this.modelChangeListener=h.onDidChangeModel(()=>this.selectionAnchorSetContextKey.reset())}setSelectionAnchor(){if(this.editor.hasModel()){const h=this.editor.getPosition();this.editor.changeDecorations(r=>{this.decorationId&&r.removeDecoration(this.decorationId),this.decorationId=r.addDecoration(S.Selection.fromPositions(h,h),{description:\"selection-anchor\",stickiness:1,hoverMessage:new k.MarkdownString().appendText((0,_.localize)(0,null)),className:\"selection-anchor\"})}),this.selectionAnchorSetContextKey.set(!!this.decorationId),(0,L.alert)((0,_.localize)(1,null,h.lineNumber,h.column))}}goToSelectionAnchor(){if(this.editor.hasModel()&&this.decorationId){const h=this.editor.getModel().getDecorationRange(this.decorationId);h&&this.editor.setPosition(h.getStartPosition())}}selectFromAnchorToCursor(){if(this.editor.hasModel()&&this.decorationId){const h=this.editor.getModel().getDecorationRange(this.decorationId);if(h){const r=this.editor.getPosition();this.editor.setSelection(S.Selection.fromPositions(h.getStartPosition(),r)),this.cancelSelectionAnchor()}}}cancelSelectionAnchor(){if(this.decorationId){const h=this.decorationId;this.editor.changeDecorations(r=>{r.removeDecoration(h),this.decorationId=void 0}),this.selectionAnchorSetContextKey.set(!1)}}dispose(){this.cancelSelectionAnchor(),this.modelChangeListener.dispose()}};s.ID=\"editor.contrib.selectionAnchorController\",s=C=ke([fe(1,g.IContextKeyService)],s);class i extends D.EditorAction{constructor(){super({id:\"editor.action.setSelectionAnchor\",label:(0,_.localize)(2,null),alias:\"Set Selection Anchor\",precondition:void 0,kbOpts:{kbExpr:f.EditorContextKeys.editorTextFocus,primary:(0,y.KeyChord)(2089,2080),weight:100}})}run(h,r){var c;return we(this,void 0,void 0,function*(){(c=s.get(r))===null||c===void 0||c.setSelectionAnchor()})}}class n extends D.EditorAction{constructor(){super({id:\"editor.action.goToSelectionAnchor\",label:(0,_.localize)(3,null),alias:\"Go to Selection Anchor\",precondition:e.SelectionAnchorSet})}run(h,r){var c;return we(this,void 0,void 0,function*(){(c=s.get(r))===null||c===void 0||c.goToSelectionAnchor()})}}class t extends D.EditorAction{constructor(){super({id:\"editor.action.selectFromAnchorToCursor\",label:(0,_.localize)(4,null),alias:\"Select from Anchor to Cursor\",precondition:e.SelectionAnchorSet,kbOpts:{kbExpr:f.EditorContextKeys.editorTextFocus,primary:(0,y.KeyChord)(2089,2089),weight:100}})}run(h,r){var c;return we(this,void 0,void 0,function*(){(c=s.get(r))===null||c===void 0||c.selectFromAnchorToCursor()})}}class a extends D.EditorAction{constructor(){super({id:\"editor.action.cancelSelectionAnchor\",label:(0,_.localize)(5,null),alias:\"Cancel Selection Anchor\",precondition:e.SelectionAnchorSet,kbOpts:{kbExpr:f.EditorContextKeys.editorTextFocus,primary:9,weight:100}})}run(h,r){var c;return we(this,void 0,void 0,function*(){(c=s.get(r))===null||c===void 0||c.cancelSelectionAnchor()})}}(0,D.registerEditorContribution)(s.ID,s,4),(0,D.registerEditorAction)(i),(0,D.registerEditorAction)(n),(0,D.registerEditorAction)(t),(0,D.registerEditorAction)(a)}),define(ne[795],se([1,0,16,21,537,634]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});class S extends L.EditorAction{constructor(C,s){super(s),this.left=C}run(C,s){if(!s.hasModel())return;const i=[],n=s.getSelections();for(const t of n)i.push(new y.MoveCaretCommand(t,this.left));s.pushUndoStop(),s.executeCommands(this.id,i),s.pushUndoStop()}}class f extends S{constructor(){super(!0,{id:\"editor.action.moveCarretLeftAction\",label:D.localize(0,null),alias:\"Move Selected Text Left\",precondition:k.EditorContextKeys.writable})}}class _ extends S{constructor(){super(!1,{id:\"editor.action.moveCarretRightAction\",label:D.localize(1,null),alias:\"Move Selected Text Right\",precondition:k.EditorContextKeys.writable})}}(0,L.registerEditorAction)(f),(0,L.registerEditorAction)(_)}),define(ne[796],se([1,0,16,123,203,5,21,635]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});class _ extends L.EditorAction{constructor(){super({id:\"editor.action.transposeLetters\",label:f.localize(0,null),alias:\"Transpose Letters\",precondition:S.EditorContextKeys.writable,kbOpts:{kbExpr:S.EditorContextKeys.textInputFocus,primary:0,mac:{primary:306},weight:100}})}run(C,s){if(!s.hasModel())return;const i=s.getModel(),n=[],t=s.getSelections();for(const a of t){if(!a.isEmpty())continue;const u=a.startLineNumber,h=a.startColumn,r=i.getLineMaxColumn(u);if(u===1&&(h===1||h===2&&r===2))continue;const c=h===r?a.getPosition():y.MoveOperations.rightPosition(i,a.getPosition().lineNumber,a.getPosition().column),o=y.MoveOperations.leftPosition(i,c),d=y.MoveOperations.leftPosition(i,o),l=i.getValueInRange(D.Range.fromPositions(d,o)),p=i.getValueInRange(D.Range.fromPositions(o,c)),m=D.Range.fromPositions(d,c);n.push(new k.ReplaceCommand(m,p+l))}n.length>0&&(s.pushUndoStop(),s.executeCommands(this.id,n),s.pushUndoStop())}}(0,L.registerEditorAction)(_)}),define(ne[797],se([1,0,52,17,185,16,33,21,636,30,96,15]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PasteAction=e.CopyAction=e.CutAction=void 0;const i=\"9_cutcopypaste\",n=k.isNative||document.queryCommandSupported(\"cut\"),t=k.isNative||document.queryCommandSupported(\"copy\"),a=typeof navigator.clipboard>\"u\"||L.isFirefox?document.queryCommandSupported(\"paste\"):!0;function u(c){return c.register(),c}e.CutAction=n?u(new D.MultiCommand({id:\"editor.action.clipboardCutAction\",precondition:void 0,kbOpts:k.isNative?{primary:2102,win:{primary:2102,secondary:[1044]},weight:100}:void 0,menuOpts:[{menuId:g.MenuId.MenubarEditMenu,group:\"2_ccp\",title:_.localize(0,null),order:1},{menuId:g.MenuId.EditorContext,group:i,title:_.localize(1,null),when:f.EditorContextKeys.writable,order:1},{menuId:g.MenuId.CommandPalette,group:\"\",title:_.localize(2,null),order:1},{menuId:g.MenuId.SimpleEditorContext,group:i,title:_.localize(3,null),when:f.EditorContextKeys.writable,order:1}]})):void 0,e.CopyAction=t?u(new D.MultiCommand({id:\"editor.action.clipboardCopyAction\",precondition:void 0,kbOpts:k.isNative?{primary:2081,win:{primary:2081,secondary:[2067]},weight:100}:void 0,menuOpts:[{menuId:g.MenuId.MenubarEditMenu,group:\"2_ccp\",title:_.localize(4,null),order:2},{menuId:g.MenuId.EditorContext,group:i,title:_.localize(5,null),order:2},{menuId:g.MenuId.CommandPalette,group:\"\",title:_.localize(6,null),order:1},{menuId:g.MenuId.SimpleEditorContext,group:i,title:_.localize(7,null),order:2}]})):void 0,g.MenuRegistry.appendMenuItem(g.MenuId.MenubarEditMenu,{submenu:g.MenuId.MenubarCopy,title:{value:_.localize(8,null),original:\"Copy As\"},group:\"2_ccp\",order:3}),g.MenuRegistry.appendMenuItem(g.MenuId.EditorContext,{submenu:g.MenuId.EditorContextCopy,title:{value:_.localize(9,null),original:\"Copy As\"},group:i,order:3}),g.MenuRegistry.appendMenuItem(g.MenuId.EditorContext,{submenu:g.MenuId.EditorContextShare,title:{value:_.localize(10,null),original:\"Share\"},group:\"11_share\",order:-1,when:s.ContextKeyExpr.and(s.ContextKeyExpr.notEquals(\"resourceScheme\",\"output\"),f.EditorContextKeys.editorTextFocus)}),g.MenuRegistry.appendMenuItem(g.MenuId.EditorTitleContext,{submenu:g.MenuId.EditorTitleContextShare,title:{value:_.localize(11,null),original:\"Share\"},group:\"11_share\",order:-1}),g.MenuRegistry.appendMenuItem(g.MenuId.ExplorerContext,{submenu:g.MenuId.ExplorerContextShare,title:{value:_.localize(12,null),original:\"Share\"},group:\"11_share\",order:-1}),e.PasteAction=a?u(new D.MultiCommand({id:\"editor.action.clipboardPasteAction\",precondition:void 0,kbOpts:k.isNative?{primary:2100,win:{primary:2100,secondary:[1043]},linux:{primary:2100,secondary:[1043]},weight:100}:void 0,menuOpts:[{menuId:g.MenuId.MenubarEditMenu,group:\"2_ccp\",title:_.localize(13,null),order:4},{menuId:g.MenuId.EditorContext,group:i,title:_.localize(14,null),when:f.EditorContextKeys.writable,order:4},{menuId:g.MenuId.CommandPalette,group:\"\",title:_.localize(15,null),order:1},{menuId:g.MenuId.SimpleEditorContext,group:i,title:_.localize(16,null),when:f.EditorContextKeys.writable,order:4}]})):void 0;class h extends D.EditorAction{constructor(){super({id:\"editor.action.clipboardCopyWithSyntaxHighlightingAction\",label:_.localize(17,null),alias:\"Copy With Syntax Highlighting\",precondition:void 0,kbOpts:{kbExpr:f.EditorContextKeys.textInputFocus,primary:0,weight:100}})}run(o,d){!d.hasModel()||!d.getOption(36)&&d.getSelection().isEmpty()||(y.CopyOptions.forceCopyWithSyntaxHighlighting=!0,d.focus(),document.execCommand(\"copy\"),y.CopyOptions.forceCopyWithSyntaxHighlighting=!1)}}function r(c,o){c&&(c.addImplementation(1e4,\"code-editor\",(d,l)=>{const p=d.get(S.ICodeEditorService).getFocusedCodeEditor();if(p&&p.hasTextFocus()){const m=p.getOption(36),v=p.getSelection();return v&&v.isEmpty()&&!m||document.execCommand(o),!0}return!1}),c.addImplementation(0,\"generic-dom\",(d,l)=>(document.execCommand(o),!0)))}r(e.CutAction,\"cut\"),r(e.CopyAction,\"copy\"),e.PasteAction&&(e.PasteAction.addImplementation(1e4,\"code-editor\",(c,o)=>{const d=c.get(S.ICodeEditorService),l=c.get(C.IClipboardService),p=d.getFocusedCodeEditor();return p&&p.hasTextFocus()?!document.execCommand(\"paste\")&&k.isWeb?(()=>we(void 0,void 0,void 0,function*(){const v=yield l.readText();if(v!==\"\"){const b=y.InMemoryClipboardMetadataManager.INSTANCE.get(v);let w=!1,E=null,I=null;b&&(w=p.getOption(36)&&!!b.isFromEmptySelection,E=typeof b.multicursorText<\"u\"?b.multicursorText:null,I=b.mode),p.trigger(\"keyboard\",\"paste\",{text:v,pasteOnNewLine:w,multicursorText:E,mode:I})}}))():!0:!1}),e.PasteAction.addImplementation(0,\"generic-dom\",(c,o)=>(document.execCommand(\"paste\"),!0))),t&&(0,D.registerEditorAction)(h)}),define(ne[798],se([1,0,63,16,5,21,32,290,539,646,30]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});class s extends k.EditorAction{constructor(h,r){super(r),this._type=h}run(h,r){const c=h.get(S.ILanguageConfigurationService);if(!r.hasModel())return;const o=r.getModel(),d=[],l=o.getOptions(),p=r.getOption(22),m=r.getSelections().map((b,w)=>({selection:b,index:w,ignoreFirstLine:!1}));m.sort((b,w)=>y.Range.compareRangesUsingStarts(b.selection,w.selection));let v=m[0];for(let b=1;b<m.length;b++){const w=m[b];v.selection.endLineNumber===w.selection.startLineNumber&&(v.index<w.index?w.ignoreFirstLine=!0:(v.ignoreFirstLine=!0,v=w))}for(const b of m)d.push(new _.LineCommentCommand(c,b.selection,l.tabSize,this._type,p.insertSpace,p.ignoreEmptyLines,b.ignoreFirstLine));r.pushUndoStop(),r.executeCommands(this.id,d),r.pushUndoStop()}}class i extends s{constructor(){super(0,{id:\"editor.action.commentLine\",label:g.localize(0,null),alias:\"Toggle Line Comment\",precondition:D.EditorContextKeys.writable,kbOpts:{kbExpr:D.EditorContextKeys.editorTextFocus,primary:2138,weight:100},menuOpts:{menuId:C.MenuId.MenubarEditMenu,group:\"5_insert\",title:g.localize(1,null),order:1}})}}class n extends s{constructor(){super(1,{id:\"editor.action.addCommentLine\",label:g.localize(2,null),alias:\"Add Line Comment\",precondition:D.EditorContextKeys.writable,kbOpts:{kbExpr:D.EditorContextKeys.editorTextFocus,primary:(0,L.KeyChord)(2089,2081),weight:100}})}}class t extends s{constructor(){super(2,{id:\"editor.action.removeCommentLine\",label:g.localize(3,null),alias:\"Remove Line Comment\",precondition:D.EditorContextKeys.writable,kbOpts:{kbExpr:D.EditorContextKeys.editorTextFocus,primary:(0,L.KeyChord)(2089,2099),weight:100}})}}class a extends k.EditorAction{constructor(){super({id:\"editor.action.blockComment\",label:g.localize(4,null),alias:\"Toggle Block Comment\",precondition:D.EditorContextKeys.writable,kbOpts:{kbExpr:D.EditorContextKeys.editorTextFocus,primary:1567,linux:{primary:3103},weight:100},menuOpts:{menuId:C.MenuId.MenubarEditMenu,group:\"5_insert\",title:g.localize(5,null),order:2}})}run(h,r){const c=h.get(S.ILanguageConfigurationService);if(!r.hasModel())return;const o=r.getOption(22),d=[],l=r.getSelections();for(const p of l)d.push(new f.BlockCommentCommand(p,o.insertSpace,c));r.pushUndoStop(),r.executeCommands(this.id,d),r.pushUndoStop()}}(0,k.registerEditorAction)(i),(0,k.registerEditorAction)(n),(0,k.registerEditorAction)(t),(0,k.registerEditorAction)(a)}),define(ne[799],se([1,0,2,16,21,648]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CursorRedo=e.CursorUndo=e.CursorUndoRedoController=void 0;class S{constructor(i){this.selections=i}equals(i){const n=this.selections.length,t=i.selections.length;if(n!==t)return!1;for(let a=0;a<n;a++)if(!this.selections[a].equalsSelection(i.selections[a]))return!1;return!0}}class f{constructor(i,n,t){this.cursorState=i,this.scrollTop=n,this.scrollLeft=t}}class _ extends L.Disposable{static get(i){return i.getContribution(_.ID)}constructor(i){super(),this._editor=i,this._isCursorUndoRedo=!1,this._undoStack=[],this._redoStack=[],this._register(i.onDidChangeModel(n=>{this._undoStack=[],this._redoStack=[]})),this._register(i.onDidChangeModelContent(n=>{this._undoStack=[],this._redoStack=[]})),this._register(i.onDidChangeCursorSelection(n=>{if(this._isCursorUndoRedo||!n.oldSelections||n.oldModelVersionId!==n.modelVersionId)return;const t=new S(n.oldSelections);this._undoStack.length>0&&this._undoStack[this._undoStack.length-1].cursorState.equals(t)||(this._undoStack.push(new f(t,i.getScrollTop(),i.getScrollLeft())),this._redoStack=[],this._undoStack.length>50&&this._undoStack.shift())}))}cursorUndo(){!this._editor.hasModel()||this._undoStack.length===0||(this._redoStack.push(new f(new S(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._undoStack.pop()))}cursorRedo(){!this._editor.hasModel()||this._redoStack.length===0||(this._undoStack.push(new f(new S(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._redoStack.pop()))}_applyState(i){this._isCursorUndoRedo=!0,this._editor.setSelections(i.cursorState.selections),this._editor.setScrollPosition({scrollTop:i.scrollTop,scrollLeft:i.scrollLeft}),this._isCursorUndoRedo=!1}}e.CursorUndoRedoController=_,_.ID=\"editor.contrib.cursorUndoRedoController\";class g extends k.EditorAction{constructor(){super({id:\"cursorUndo\",label:D.localize(0,null),alias:\"Cursor Undo\",precondition:void 0,kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:2099,weight:100}})}run(i,n,t){var a;(a=_.get(n))===null||a===void 0||a.cursorUndo()}}e.CursorUndo=g;class C extends k.EditorAction{constructor(){super({id:\"cursorRedo\",label:D.localize(1,null),alias:\"Cursor Redo\",precondition:void 0})}run(i,n,t){var a;(a=_.get(n))===null||a===void 0||a.cursorRedo()}}e.CursorRedo=C,(0,k.registerEditorContribution)(_.ID,_,0),(0,k.registerEditorAction)(g),(0,k.registerEditorAction)(C)}),define(ne[800],se([1,0,16,15,19,64,8,50,654]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditorKeybindingCancellationTokenSource=void 0;const g=(0,S.createDecorator)(\"IEditorCancelService\"),C=new k.RawContextKey(\"cancellableOperation\",!1,(0,_.localize)(0,null));(0,f.registerSingleton)(g,class{constructor(){this._tokens=new WeakMap}add(i,n){let t=this._tokens.get(i);t||(t=i.invokeWithinContext(u=>{const h=C.bindTo(u.get(k.IContextKeyService)),r=new D.LinkedList;return{key:h,tokens:r}}),this._tokens.set(i,t));let a;return t.key.set(!0),a=t.tokens.push(n),()=>{a&&(a(),t.key.set(!t.tokens.isEmpty()),a=void 0)}}cancel(i){const n=this._tokens.get(i);if(!n)return;const t=n.tokens.pop();t&&(t.cancel(),n.key.set(!n.tokens.isEmpty()))}},1);class s extends y.CancellationTokenSource{constructor(n,t){super(t),this.editor=n,this._unregister=n.invokeWithinContext(a=>a.get(g).add(n,this))}dispose(){this._unregister(),super.dispose()}}e.EditorKeybindingCancellationTokenSource=s,(0,L.registerEditorCommand)(new class extends L.EditorCommand{constructor(){super({id:\"editor.cancelOperation\",kbOpts:{weight:100,primary:9},precondition:C})}runEditorCommand(i,n){i.get(g).cancel(n)}})}),define(ne[104],se([1,0,11,5,19,2,800]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextModelCancellationTokenSource=e.EditorStateCancellationTokenSource=e.EditorState=void 0;class f{constructor(s,i){if(this.flags=i,this.flags&1){const n=s.getModel();this.modelVersionId=n?L.format(\"{0}#{1}\",n.uri.toString(),n.getVersionId()):null}else this.modelVersionId=null;this.flags&4?this.position=s.getPosition():this.position=null,this.flags&2?this.selection=s.getSelection():this.selection=null,this.flags&8?(this.scrollLeft=s.getScrollLeft(),this.scrollTop=s.getScrollTop()):(this.scrollLeft=-1,this.scrollTop=-1)}_equals(s){if(!(s instanceof f))return!1;const i=s;return!(this.modelVersionId!==i.modelVersionId||this.scrollLeft!==i.scrollLeft||this.scrollTop!==i.scrollTop||!this.position&&i.position||this.position&&!i.position||this.position&&i.position&&!this.position.equals(i.position)||!this.selection&&i.selection||this.selection&&!i.selection||this.selection&&i.selection&&!this.selection.equalsRange(i.selection))}validate(s){return this._equals(new f(s,this.flags))}}e.EditorState=f;class _ extends S.EditorKeybindingCancellationTokenSource{constructor(s,i,n,t){super(s,t),this._listener=new D.DisposableStore,i&4&&this._listener.add(s.onDidChangeCursorPosition(a=>{(!n||!k.Range.containsPosition(n,a.position))&&this.cancel()})),i&2&&this._listener.add(s.onDidChangeCursorSelection(a=>{(!n||!k.Range.containsRange(n,a.selection))&&this.cancel()})),i&8&&this._listener.add(s.onDidScrollChange(a=>this.cancel())),i&1&&(this._listener.add(s.onDidChangeModel(a=>this.cancel())),this._listener.add(s.onDidChangeModelContent(a=>this.cancel())))}dispose(){this._listener.dispose(),super.dispose()}}e.EditorStateCancellationTokenSource=_;class g extends y.CancellationTokenSource{constructor(s,i){super(i),this._listener=s.onDidChangeContent(()=>this.cancel())}dispose(){this._listener.dispose(),super.dispose()}}e.TextModelCancellationTokenSource=g}),define(ne[137],se([1,0,14,19,9,2,22,132,5,24,18,51,104,637,27,43,77,79,113]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.applyCodeAction=e.ApplyCodeActionReason=e.getCodeActions=e.fixAllCommandId=e.organizeImportsCommandId=e.sourceActionCommandId=e.refactorCommandId=e.autoFixCommandId=e.quickFixCommandId=e.codeActionCommandId=void 0,e.codeActionCommandId=\"editor.action.codeAction\",e.quickFixCommandId=\"editor.action.quickFix\",e.autoFixCommandId=\"editor.action.autoFix\",e.refactorCommandId=\"editor.action.refactor\",e.sourceActionCommandId=\"editor.action.sourceAction\",e.organizeImportsCommandId=\"editor.action.organizeImports\",e.fixAllCommandId=\"editor.action.fixAll\";class c extends D.Disposable{static codeActionsPreferredComparator(I,M){return I.isPreferred&&!M.isPreferred?-1:!I.isPreferred&&M.isPreferred?1:0}static codeActionsComparator({action:I},{action:M}){return(0,L.isNonEmptyArray)(I.diagnostics)?(0,L.isNonEmptyArray)(M.diagnostics)?c.codeActionsPreferredComparator(I,M):-1:(0,L.isNonEmptyArray)(M.diagnostics)?1:c.codeActionsPreferredComparator(I,M)}constructor(I,M,P){super(),this.documentation=M,this._register(P),this.allActions=[...I].sort(c.codeActionsComparator),this.validActions=this.allActions.filter(({action:x})=>!x.disabled)}get hasAutoFix(){return this.validActions.some(({action:I})=>!!I.kind&&r.CodeActionKind.QuickFix.contains(new r.CodeActionKind(I.kind))&&!!I.isPreferred)}}const o={actions:[],documentation:void 0};function d(E,I,M,P,x,T){var A;return we(this,void 0,void 0,function*(){const N=P.filter||{},F={only:(A=N.include)===null||A===void 0?void 0:A.value,trigger:P.type},O=new i.TextModelCancellationTokenSource(I,T),W=l(E,I,N),U=new D.DisposableStore,j=W.map(K=>we(this,void 0,void 0,function*(){try{x.report(K);const G=yield K.provideCodeActions(I,M,F,O.token);if(G&&U.add(G),O.token.isCancellationRequested)return o;const Z=(G?.actions||[]).filter(X=>X&&(0,r.filtersAction)(N,X)),J=m(K,Z,N.include);return{actions:Z.map(X=>new r.CodeActionItem(X,K)),documentation:J}}catch(G){if((0,y.isCancellationError)(G))throw G;return(0,y.onUnexpectedExternalError)(G),o}})),R=E.onDidChange(()=>{const K=E.all(I);(0,L.equals)(K,W)||O.cancel()});try{const K=yield Promise.all(j),G=K.map(J=>J.actions).flat(),Z=[...(0,L.coalesce)(K.map(J=>J.documentation)),...p(E,I,P,G)];return new c(G,Z,U)}finally{R.dispose(),O.dispose()}})}e.getCodeActions=d;function l(E,I,M){return E.all(I).filter(P=>P.providedCodeActionKinds?P.providedCodeActionKinds.some(x=>(0,r.mayIncludeActionsOfKind)(M,new r.CodeActionKind(x))):!0)}function*p(E,I,M,P){var x,T,A;if(I&&P.length)for(const N of E.all(I))N._getAdditionalMenuItems&&(yield*(x=N._getAdditionalMenuItems)===null||x===void 0?void 0:x.call(N,{trigger:M.type,only:(A=(T=M.filter)===null||T===void 0?void 0:T.include)===null||A===void 0?void 0:A.value},P.map(F=>F.action)))}function m(E,I,M){if(!E.documentation)return;const P=E.documentation.map(x=>({kind:new r.CodeActionKind(x.kind),command:x.command}));if(M){let x;for(const T of P)T.kind.contains(M)&&(x?x.kind.contains(T.kind)&&(x=T):x=T);if(x)return x?.command}for(const x of I)if(x.kind){for(const T of P)if(T.kind.contains(new r.CodeActionKind(x.kind)))return T.command}}var v;(function(E){E.OnSave=\"onSave\",E.FromProblemsView=\"fromProblemsView\",E.FromCodeActions=\"fromCodeActions\"})(v||(e.ApplyCodeActionReason=v={}));function b(E,I,M,P,x=k.CancellationToken.None){var T;return we(this,void 0,void 0,function*(){const A=E.get(f.IBulkEditService),N=E.get(t.ICommandService),F=E.get(h.ITelemetryService),O=E.get(a.INotificationService);if(F.publicLog2(\"codeAction.applyCodeAction\",{codeActionTitle:I.action.title,codeActionKind:I.action.kind,codeActionIsPreferred:!!I.action.isPreferred,reason:M}),yield I.resolve(x),!x.isCancellationRequested&&!(!((T=I.action.edit)===null||T===void 0)&&T.edits.length&&!(yield A.apply(I.action.edit,{editor:P?.editor,label:I.action.title,quotableLabel:I.action.title,code:\"undoredo.codeAction\",respectAutoSaveConfig:M!==v.OnSave,showPreview:P?.preview})).isApplied)&&I.action.command)try{yield N.executeCommand(I.action.command.id,...I.action.command.arguments||[])}catch(W){const U=w(W);O.error(typeof U==\"string\"?U:n.localize(0,null))}})}e.applyCodeAction=b;function w(E){return typeof E==\"string\"?E:E instanceof Error&&typeof E.message==\"string\"?E.message:void 0}t.CommandsRegistry.registerCommand(\"_executeCodeActionProvider\",function(E,I,M,P,x){return we(this,void 0,void 0,function*(){if(!(I instanceof S.URI))throw(0,y.illegalArgument)();const{codeActionProvider:T}=E.get(C.ILanguageFeaturesService),A=E.get(s.IModelService).getModel(I);if(!A)throw(0,y.illegalArgument)();const N=g.Selection.isISelection(M)?g.Selection.liftSelection(M):_.Range.isIRange(M)?A.validateRange(M):void 0;if(!N)throw(0,y.illegalArgument)();const F=typeof P==\"string\"?new r.CodeActionKind(P):void 0,O=yield d(T,A,N,{type:1,triggerAction:r.CodeActionTriggerSource.Default,filter:{includeSourceActions:!0,include:F}},u.Progress.None,k.CancellationToken.None),W=[],U=Math.min(O.validActions.length,typeof x==\"number\"?x:0);for(let j=0;j<U;j++)W.push(O.validActions[j].resolve(k.CancellationToken.None));try{return yield Promise.all(W),O.validActions.map(j=>j.action)}finally{setTimeout(()=>O.dispose(),100)}})})}),define(ne[801],se([1,0,100,137,113,34]),function(Q,e,L,k,y,D){\"use strict\";var S;Object.defineProperty(e,\"__esModule\",{value:!0}),e.CodeActionKeybindingResolver=void 0;let f=S=class{constructor(g){this.keybindingService=g}getResolver(){const g=new L.Lazy(()=>this.keybindingService.getKeybindings().filter(C=>S.codeActionCommands.indexOf(C.command)>=0).filter(C=>C.resolvedKeybinding).map(C=>{let s=C.commandArgs;return C.command===k.organizeImportsCommandId?s={kind:y.CodeActionKind.SourceOrganizeImports.value}:C.command===k.fixAllCommandId&&(s={kind:y.CodeActionKind.SourceFixAll.value}),Object.assign({resolvedKeybinding:C.resolvedKeybinding},y.CodeActionCommandArgs.fromUser(s,{kind:y.CodeActionKind.None,apply:\"never\"}))}));return C=>{if(C.kind){const s=this.bestKeybindingForCodeAction(C,g.value);return s?.resolvedKeybinding}}}bestKeybindingForCodeAction(g,C){if(!g.kind)return;const s=new y.CodeActionKind(g.kind);return C.filter(i=>i.kind.contains(s)).filter(i=>i.preferred?g.isPreferred:!0).reduceRight((i,n)=>i?i.kind.contains(n.kind)?n:i:n,void 0)}};e.CodeActionKeybindingResolver=f,f.codeActionCommands=[k.refactorCommandId,k.codeActionCommandId,k.sourceActionCommandId,k.organizeImportsCommandId,k.fixAllCommandId],e.CodeActionKeybindingResolver=f=S=ke([fe(0,D.IKeybindingService)],f)}),define(ne[349],se([1,0,13,9,6,2,45,15,77,113,137]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CodeActionModel=e.CodeActionsState=e.SUPPORTED_CODE_ACTIONS=void 0,e.SUPPORTED_CODE_ACTIONS=new f.RawContextKey(\"supportedCodeAction\",\"\");class s extends D.Disposable{constructor(u,h,r,c=250){super(),this._editor=u,this._markerService=h,this._signalChange=r,this._delay=c,this._autoTriggerTimer=this._register(new L.TimeoutTimer),this._register(this._markerService.onMarkerChanged(o=>this._onMarkerChanges(o))),this._register(this._editor.onDidChangeCursorPosition(()=>this._tryAutoTrigger()))}trigger(u){const h=this._getRangeOfSelectionUnlessWhitespaceEnclosed(u);this._signalChange(h?{trigger:u,selection:h}:void 0)}_onMarkerChanges(u){const h=this._editor.getModel();h&&u.some(r=>(0,S.isEqual)(r,h.uri))&&this._tryAutoTrigger()}_tryAutoTrigger(){this._autoTriggerTimer.cancelAndSet(()=>{this.trigger({type:2,triggerAction:g.CodeActionTriggerSource.Default})},this._delay)}_getRangeOfSelectionUnlessWhitespaceEnclosed(u){if(!this._editor.hasModel())return;const h=this._editor.getModel(),r=this._editor.getSelection();if(r.isEmpty()&&u.type===2){const{lineNumber:c,column:o}=r.getPosition(),d=h.getLineContent(c);if(d.length===0)return;if(o===1){if(/\\s/.test(d[0]))return}else if(o===h.getLineMaxColumn(c)){if(/\\s/.test(d[d.length-1]))return}else if(/\\s/.test(d[o-2])&&/\\s/.test(d[o-1]))return}return r}}var i;(function(a){a.Empty={type:0};class u{constructor(r,c,o){this.trigger=r,this.position=c,this._cancellablePromise=o,this.type=1,this.actions=o.catch(d=>{if((0,k.isCancellationError)(d))return n;throw d})}cancel(){this._cancellablePromise.cancel()}}a.Triggered=u})(i||(e.CodeActionsState=i={}));const n=Object.freeze({allActions:[],validActions:[],dispose:()=>{},documentation:[],hasAutoFix:!1});class t extends D.Disposable{constructor(u,h,r,c,o){super(),this._editor=u,this._registry=h,this._markerService=r,this._progressService=o,this._codeActionOracle=this._register(new D.MutableDisposable),this._state=i.Empty,this._onDidChangeState=this._register(new y.Emitter),this.onDidChangeState=this._onDidChangeState.event,this._disposed=!1,this._supportedCodeActions=e.SUPPORTED_CODE_ACTIONS.bindTo(c),this._register(this._editor.onDidChangeModel(()=>this._update())),this._register(this._editor.onDidChangeModelLanguage(()=>this._update())),this._register(this._registry.onDidChange(()=>this._update())),this._update()}dispose(){this._disposed||(this._disposed=!0,super.dispose(),this.setState(i.Empty,!0))}_update(){if(this._disposed)return;this._codeActionOracle.value=void 0,this.setState(i.Empty);const u=this._editor.getModel();if(u&&this._registry.has(u)&&!this._editor.getOption(89)){const h=this._registry.all(u).flatMap(r=>{var c;return(c=r.providedCodeActionKinds)!==null&&c!==void 0?c:[]});this._supportedCodeActions.set(h.join(\" \")),this._codeActionOracle.value=new s(this._editor,this._markerService,r=>{var c;if(!r){this.setState(i.Empty);return}const o=(0,L.createCancelablePromise)(d=>(0,C.getCodeActions)(this._registry,u,r.selection,r.trigger,_.Progress.None,d));r.trigger.type===1&&((c=this._progressService)===null||c===void 0||c.showWhile(o,250)),this.setState(new i.Triggered(r.trigger,r.selection.getStartPosition(),o))},void 0),this._codeActionOracle.value.trigger({type:2,triggerAction:g.CodeActionTriggerSource.Default})}else this._supportedCodeActions.reset()}trigger(u){var h;(h=this._codeActionOracle.value)===null||h===void 0||h.trigger(u)}setState(u,h){u!==this._state&&(this._state.type===1&&this._state.cancel(),this._state=u,!h&&!this._disposed&&this._onDidChangeState.fire(u))}}e.CodeActionModel=t}),define(ne[350],se([1,0,7,61,25,6,2,26,207,137,642,34,438]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";var i;Object.defineProperty(e,\"__esModule\",{value:!0}),e.LightBulbWidget=void 0;var n;(function(a){a.Hidden={type:0};class u{constructor(r,c,o,d){this.actions=r,this.trigger=c,this.editorPosition=o,this.widgetPosition=d,this.type=1}}a.Showing=u})(n||(n={}));let t=i=class extends S.Disposable{constructor(u,h){super(),this._editor=u,this._onClick=this._register(new D.Emitter),this.onClick=this._onClick.event,this._state=n.Hidden,this._domNode=L.$(\"div.lightBulbWidget\"),this._register(k.Gesture.ignoreTarget(this._domNode)),this._editor.addContentWidget(this),this._register(this._editor.onDidChangeModelContent(r=>{const c=this._editor.getModel();(this.state.type!==1||!c||this.state.editorPosition.lineNumber>=c.getLineCount())&&this.hide()})),this._register(L.addStandardDisposableGenericMouseDownListener(this._domNode,r=>{if(this.state.type!==1)return;this._editor.focus(),r.preventDefault();const{top:c,height:o}=L.getDomNodePagePosition(this._domNode),d=this._editor.getOption(65);let l=Math.floor(d/3);this.state.widgetPosition.position!==null&&this.state.widgetPosition.position.lineNumber<this.state.editorPosition.lineNumber&&(l+=d),this._onClick.fire({x:r.posx,y:c+o+l,actions:this.state.actions,trigger:this.state.trigger})})),this._register(L.addDisposableListener(this._domNode,\"mouseenter\",r=>{(r.buttons&1)===1&&this.hide()})),this._register(this._editor.onDidChangeConfiguration(r=>{r.hasChanged(63)&&!this._editor.getOption(63).enabled&&this.hide()})),this._register(D.Event.runAndSubscribe(h.onDidUpdateKeybindings,()=>{var r,c,o,d;this._preferredKbLabel=(c=(r=h.lookupKeybinding(g.autoFixCommandId))===null||r===void 0?void 0:r.getLabel())!==null&&c!==void 0?c:void 0,this._quickFixKbLabel=(d=(o=h.lookupKeybinding(g.quickFixCommandId))===null||o===void 0?void 0:o.getLabel())!==null&&d!==void 0?d:void 0,this._updateLightBulbTitleAndIcon()}))}dispose(){super.dispose(),this._editor.removeContentWidget(this)}getId(){return\"LightBulbWidget\"}getDomNode(){return this._domNode}getPosition(){return this._state.type===1?this._state.widgetPosition:null}update(u,h,r){if(u.validActions.length<=0)return this.hide();const c=this._editor.getOptions();if(!c.get(63).enabled)return this.hide();const o=this._editor.getModel();if(!o)return this.hide();const{lineNumber:d,column:l}=o.validatePosition(r),p=o.getOptions().tabSize,m=c.get(49),v=o.getLineContent(d),b=(0,_.computeIndentLevel)(v,p),w=m.spaceWidth*b>22,E=M=>M>2&&this._editor.getTopForLineNumber(M)===this._editor.getTopForLineNumber(M-1);let I=d;if(!w){if(d>1&&!E(d-1))I-=1;else if(!E(d+1))I+=1;else if(l*m.spaceWidth<22)return this.hide()}this.state=new n.Showing(u,h,r,{position:{lineNumber:I,column:1},preference:i._posPref}),this._editor.layoutContentWidget(this)}hide(){this.state!==n.Hidden&&(this.state=n.Hidden,this._editor.layoutContentWidget(this))}get state(){return this._state}set state(u){this._state=u,this._updateLightBulbTitleAndIcon()}_updateLightBulbTitleAndIcon(){if(this.state.type===1&&this.state.actions.hasAutoFix&&(this._domNode.classList.remove(...f.ThemeIcon.asClassNameArray(y.Codicon.lightBulb)),this._domNode.classList.add(...f.ThemeIcon.asClassNameArray(y.Codicon.lightbulbAutofix)),this._preferredKbLabel)){this.title=C.localize(0,null,this._preferredKbLabel);return}this._domNode.classList.remove(...f.ThemeIcon.asClassNameArray(y.Codicon.lightbulbAutofix)),this._domNode.classList.add(...f.ThemeIcon.asClassNameArray(y.Codicon.lightBulb)),this._quickFixKbLabel?this.title=C.localize(1,null,this._quickFixKbLabel):this.title=C.localize(2,null)}set title(u){this._domNode.title=u}};e.LightBulbWidget=t,t.ID=\"editor.contrib.lightbulbWidget\",t._posPref=[0],e.LightBulbWidget=t=i=ke([fe(1,s.IKeybindingService)],t)}),define(ne[802],se([1,0,16,145,659]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});class D extends L.EditorAction{constructor(){super({id:\"editor.action.fontZoomIn\",label:y.localize(0,null),alias:\"Editor Font Zoom In\",precondition:void 0})}run(g,C){k.EditorZoom.setZoomLevel(k.EditorZoom.getZoomLevel()+1)}}class S extends L.EditorAction{constructor(){super({id:\"editor.action.fontZoomOut\",label:y.localize(1,null),alias:\"Editor Font Zoom Out\",precondition:void 0})}run(g,C){k.EditorZoom.setZoomLevel(k.EditorZoom.getZoomLevel()-1)}}class f extends L.EditorAction{constructor(){super({id:\"editor.action.fontZoomReset\",label:y.localize(2,null),alias:\"Editor Font Zoom Reset\",precondition:void 0})}run(g,C){k.EditorZoom.setZoomLevel(0)}}(0,L.registerEditorAction)(D),(0,L.registerEditorAction)(S),(0,L.registerEditorAction)(f)}),define(ne[351],se([1,0,49,14,19,9,46,64,20,22,104,177,12,5,24,115,69,294,660,27,744,8,18,70]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getOnTypeFormattingEdits=e.getDocumentFormattingEditsUntilResult=e.getDocumentRangeFormattingEditsUntilResult=e.formatDocumentWithProvider=e.formatDocumentWithSelectedProvider=e.formatDocumentRangesWithProvider=e.formatDocumentRangesWithSelectedProvider=e.FormattingConflicts=e.getRealAndSyntheticDocumentFormattersOrdered=e.alertFormattingEdits=void 0;function m(A){if(A=A.filter(W=>W.range),!A.length)return;let{range:N}=A[0];for(let W=1;W<A.length;W++)N=n.Range.plusRange(N,A[W].range);const{startLineNumber:F,endLineNumber:O}=N;F===O?A.length===1?(0,L.alert)(r.localize(0,null,F)):(0,L.alert)(r.localize(1,null,A.length,F)):A.length===1?(0,L.alert)(r.localize(2,null,F,O)):(0,L.alert)(r.localize(3,null,A.length,F,O))}e.alertFormattingEdits=m;function v(A,N,F){const O=[],W=new o.ExtensionIdentifierSet,U=A.ordered(F);for(const R of U)O.push(R),R.extensionId&&W.add(R.extensionId);const j=N.ordered(F);for(const R of j){if(R.extensionId){if(W.has(R.extensionId))continue;W.add(R.extensionId)}O.push({displayName:R.displayName,extensionId:R.extensionId,provideDocumentFormattingEdits(K,G,Z){return R.provideDocumentRangeFormattingEdits(K,K.getFullModelRange(),G,Z)}})}return O}e.getRealAndSyntheticDocumentFormattersOrdered=v;class b{static setFormatterSelector(N){return{dispose:b._selectors.unshift(N)}}static select(N,F,O){return we(this,void 0,void 0,function*(){if(N.length===0)return;const W=S.Iterable.first(b._selectors);if(W)return yield W(N,F,O)})}}e.FormattingConflicts=b,b._selectors=new f.LinkedList;function w(A,N,F,O,W,U){return we(this,void 0,void 0,function*(){const j=A.get(d.IInstantiationService),{documentRangeFormattingEditProvider:R}=A.get(l.ILanguageFeaturesService),K=(0,s.isCodeEditor)(N)?N.getModel():N,G=R.ordered(K),Z=yield b.select(G,K,O);Z&&(W.report(Z),yield j.invokeFunction(E,Z,N,F,U))})}e.formatDocumentRangesWithSelectedProvider=w;function E(A,N,F,O,W){var U,j;return we(this,void 0,void 0,function*(){const R=A.get(a.IEditorWorkerService),K=A.get(p.ILogService);let G,Z;(0,s.isCodeEditor)(F)?(G=F.getModel(),Z=new C.EditorStateCancellationTokenSource(F,5,void 0,W)):(G=F,Z=new C.TextModelCancellationTokenSource(F,W));const J=[];let X=0;for(const ie of(0,k.asArray)(O).sort(n.Range.compareRangesUsingStarts))X>0&&n.Range.areIntersectingOrTouching(J[X-1],ie)?J[X-1]=n.Range.fromPositions(J[X-1].getStartPosition(),ie.getEndPosition()):X=J.push(ie);const H=ie=>we(this,void 0,void 0,function*(){var ae,ce;K.trace(\"[format][provideDocumentRangeFormattingEdits] (request)\",(ae=N.extensionId)===null||ae===void 0?void 0:ae.value,ie);const de=(yield N.provideDocumentRangeFormattingEdits(G,ie,G.getFormattingOptions(),Z.token))||[];return K.trace(\"[format][provideDocumentRangeFormattingEdits] (response)\",(ce=N.extensionId)===null||ce===void 0?void 0:ce.value,de),de}),B=(ie,ae)=>{if(!ie.length||!ae.length)return!1;const ce=ie.reduce((de,he)=>n.Range.plusRange(de,he.range),ie[0].range);if(!ae.some(de=>n.Range.intersectRanges(ce,de.range)))return!1;for(const de of ie)for(const he of ae)if(n.Range.intersectRanges(de.range,he.range))return!0;return!1},V=[],Y=[];try{if(typeof N.provideDocumentRangesFormattingEdits==\"function\"){K.trace(\"[format][provideDocumentRangeFormattingEdits] (request)\",(U=N.extensionId)===null||U===void 0?void 0:U.value,J);const ie=(yield N.provideDocumentRangesFormattingEdits(G,J,G.getFormattingOptions(),Z.token))||[];K.trace(\"[format][provideDocumentRangeFormattingEdits] (response)\",(j=N.extensionId)===null||j===void 0?void 0:j.value,ie),Y.push(ie)}else{for(const ie of J){if(Z.token.isCancellationRequested)return!0;Y.push(yield H(ie))}for(let ie=0;ie<J.length;++ie)for(let ae=ie+1;ae<J.length;++ae){if(Z.token.isCancellationRequested)return!0;if(B(Y[ie],Y[ae])){const ce=n.Range.plusRange(J[ie],J[ae]),de=yield H(ce);J.splice(ae,1),J.splice(ie,1),J.push(ce),Y.splice(ae,1),Y.splice(ie,1),Y.push(de),ie=0,ae=0}}}for(const ie of Y){if(Z.token.isCancellationRequested)return!0;const ae=yield R.computeMoreMinimalEdits(G.uri,ie);ae&&V.push(...ae)}}finally{Z.dispose()}if(V.length===0)return!1;if((0,s.isCodeEditor)(F))h.FormattingEdit.execute(F,V,!0),m(V),F.revealPositionInCenterIfOutsideViewport(F.getPosition(),1);else{const[{range:ie}]=V,ae=new t.Selection(ie.startLineNumber,ie.startColumn,ie.endLineNumber,ie.endColumn);G.pushEditOperations([ae],V.map(ce=>({text:ce.text,range:n.Range.lift(ce.range),forceMoveMarkers:!0})),ce=>{for(const{range:de}of ce)if(n.Range.areIntersectingOrTouching(de,ae))return[new t.Selection(de.startLineNumber,de.startColumn,de.endLineNumber,de.endColumn)];return null})}return!0})}e.formatDocumentRangesWithProvider=E;function I(A,N,F,O,W){return we(this,void 0,void 0,function*(){const U=A.get(d.IInstantiationService),j=A.get(l.ILanguageFeaturesService),R=(0,s.isCodeEditor)(N)?N.getModel():N,K=v(j.documentFormattingEditProvider,j.documentRangeFormattingEditProvider,R),G=yield b.select(K,R,F);G&&(O.report(G),yield U.invokeFunction(M,G,N,F,W))})}e.formatDocumentWithSelectedProvider=I;function M(A,N,F,O,W){return we(this,void 0,void 0,function*(){const U=A.get(a.IEditorWorkerService);let j,R;(0,s.isCodeEditor)(F)?(j=F.getModel(),R=new C.EditorStateCancellationTokenSource(F,5,void 0,W)):(j=F,R=new C.TextModelCancellationTokenSource(F,W));let K;try{const G=yield N.provideDocumentFormattingEdits(j,j.getFormattingOptions(),R.token);if(K=yield U.computeMoreMinimalEdits(j.uri,G),R.token.isCancellationRequested)return!0}finally{R.dispose()}if(!K||K.length===0)return!1;if((0,s.isCodeEditor)(F))h.FormattingEdit.execute(F,K,O!==2),O!==2&&(m(K),F.revealPositionInCenterIfOutsideViewport(F.getPosition(),1));else{const[{range:G}]=K,Z=new t.Selection(G.startLineNumber,G.startColumn,G.endLineNumber,G.endColumn);j.pushEditOperations([Z],K.map(J=>({text:J.text,range:n.Range.lift(J.range),forceMoveMarkers:!0})),J=>{for(const{range:X}of J)if(n.Range.areIntersectingOrTouching(X,Z))return[new t.Selection(X.startLineNumber,X.startColumn,X.endLineNumber,X.endColumn)];return null})}return!0})}e.formatDocumentWithProvider=M;function P(A,N,F,O,W,U){return we(this,void 0,void 0,function*(){const j=N.documentRangeFormattingEditProvider.ordered(F);for(const R of j){const K=yield Promise.resolve(R.provideDocumentRangeFormattingEdits(F,O,W,U)).catch(D.onUnexpectedExternalError);if((0,k.isNonEmptyArray)(K))return yield A.computeMoreMinimalEdits(F.uri,K)}})}e.getDocumentRangeFormattingEditsUntilResult=P;function x(A,N,F,O,W){return we(this,void 0,void 0,function*(){const U=v(N.documentFormattingEditProvider,N.documentRangeFormattingEditProvider,F);for(const j of U){const R=yield Promise.resolve(j.provideDocumentFormattingEdits(F,O,W)).catch(D.onUnexpectedExternalError);if((0,k.isNonEmptyArray)(R))return yield A.computeMoreMinimalEdits(F.uri,R)}})}e.getDocumentFormattingEditsUntilResult=x;function T(A,N,F,O,W,U,j){const R=N.onTypeFormattingEditProvider.ordered(F);return R.length===0||R[0].autoFormatTriggerCharacters.indexOf(W)<0?Promise.resolve(void 0):Promise.resolve(R[0].provideOnTypeFormattingEdits(F,O,W,U,j)).catch(D.onUnexpectedExternalError).then(K=>A.computeMoreMinimalEdits(F.uri,K))}e.getOnTypeFormattingEdits=T,c.CommandsRegistry.registerCommand(\"_executeFormatRangeProvider\",function(A,...N){return we(this,void 0,void 0,function*(){const[F,O,W]=N;(0,_.assertType)(g.URI.isUri(F)),(0,_.assertType)(n.Range.isIRange(O));const U=A.get(u.ITextModelService),j=A.get(a.IEditorWorkerService),R=A.get(l.ILanguageFeaturesService),K=yield U.createModelReference(F);try{return P(j,R,K.object.textEditorModel,n.Range.lift(O),W,y.CancellationToken.None)}finally{K.dispose()}})}),c.CommandsRegistry.registerCommand(\"_executeFormatDocumentProvider\",function(A,...N){return we(this,void 0,void 0,function*(){const[F,O]=N;(0,_.assertType)(g.URI.isUri(F));const W=A.get(u.ITextModelService),U=A.get(a.IEditorWorkerService),j=A.get(l.ILanguageFeaturesService),R=yield W.createModelReference(F);try{return x(U,j,R.object.textEditorModel,O,y.CancellationToken.None)}finally{R.dispose()}})}),c.CommandsRegistry.registerCommand(\"_executeFormatOnTypeProvider\",function(A,...N){return we(this,void 0,void 0,function*(){const[F,O,W,U]=N;(0,_.assertType)(g.URI.isUri(F)),(0,_.assertType)(i.Position.isIPosition(O)),(0,_.assertType)(typeof W==\"string\");const j=A.get(u.ITextModelService),R=A.get(a.IEditorWorkerService),K=A.get(l.ILanguageFeaturesService),G=yield j.createModelReference(F);try{return T(R,K,G.object.textEditorModel,i.Position.lift(O),W,U,y.CancellationToken.None)}finally{G.dispose()}})})}),define(ne[803],se([1,0,14,19,9,63,2,16,33,121,5,21,115,18,351,294,661,27,15,8,77]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});let d=class{constructor(b,w,E){this._editor=b,this._languageFeaturesService=w,this._workerService=E,this._disposables=new S.DisposableStore,this._sessionDisposables=new S.DisposableStore,this._disposables.add(w.onTypeFormattingEditProvider.onDidChange(this._update,this)),this._disposables.add(b.onDidChangeModel(()=>this._update())),this._disposables.add(b.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(b.onDidChangeConfiguration(I=>{I.hasChanged(55)&&this._update()})),this._update()}dispose(){this._disposables.dispose(),this._sessionDisposables.dispose()}_update(){if(this._sessionDisposables.clear(),!this._editor.getOption(55)||!this._editor.hasModel())return;const b=this._editor.getModel(),[w]=this._languageFeaturesService.onTypeFormattingEditProvider.ordered(b);if(!w||!w.autoFormatTriggerCharacters)return;const E=new g.CharacterSet;for(const I of w.autoFormatTriggerCharacters)E.add(I.charCodeAt(0));this._sessionDisposables.add(this._editor.onDidType(I=>{const M=I.charCodeAt(I.length-1);E.has(M)&&this._trigger(String.fromCharCode(M))}))}_trigger(b){if(!this._editor.hasModel()||this._editor.getSelections().length>1||!this._editor.getSelection().isEmpty())return;const w=this._editor.getModel(),E=this._editor.getPosition(),I=new k.CancellationTokenSource,M=this._editor.onDidChangeModelContent(P=>{if(P.isFlush){I.cancel(),M.dispose();return}for(let x=0,T=P.changes.length;x<T;x++)if(P.changes[x].range.endLineNumber<=E.lineNumber){I.cancel(),M.dispose();return}});(0,t.getOnTypeFormattingEdits)(this._workerService,this._languageFeaturesService,w,E,b,w.getFormattingOptions(),I.token).then(P=>{I.token.isCancellationRequested||(0,L.isNonEmptyArray)(P)&&(a.FormattingEdit.execute(this._editor,P,!0),(0,t.alertFormattingEdits)(P))}).finally(()=>{M.dispose()})}};d.ID=\"editor.contrib.autoFormat\",d=ke([fe(1,n.ILanguageFeaturesService),fe(2,i.IEditorWorkerService)],d);let l=class{constructor(b,w,E){this.editor=b,this._languageFeaturesService=w,this._instantiationService=E,this._callOnDispose=new S.DisposableStore,this._callOnModel=new S.DisposableStore,this._callOnDispose.add(b.onDidChangeConfiguration(()=>this._update())),this._callOnDispose.add(b.onDidChangeModel(()=>this._update())),this._callOnDispose.add(b.onDidChangeModelLanguage(()=>this._update())),this._callOnDispose.add(w.documentRangeFormattingEditProvider.onDidChange(this._update,this))}dispose(){this._callOnDispose.dispose(),this._callOnModel.dispose()}_update(){this._callOnModel.clear(),this.editor.getOption(54)&&this.editor.hasModel()&&this._languageFeaturesService.documentRangeFormattingEditProvider.has(this.editor.getModel())&&this._callOnModel.add(this.editor.onDidPaste(({range:b})=>this._trigger(b)))}_trigger(b){this.editor.hasModel()&&(this.editor.getSelections().length>1||this._instantiationService.invokeFunction(t.formatDocumentRangesWithSelectedProvider,this.editor,b,2,o.Progress.None,k.CancellationToken.None).catch(y.onUnexpectedError))}};l.ID=\"editor.contrib.formatOnPaste\",l=ke([fe(1,n.ILanguageFeaturesService),fe(2,c.IInstantiationService)],l);class p extends f.EditorAction{constructor(){super({id:\"editor.action.formatDocument\",label:u.localize(0,null),alias:\"Format Document\",precondition:r.ContextKeyExpr.and(s.EditorContextKeys.notInCompositeEditor,s.EditorContextKeys.writable,s.EditorContextKeys.hasDocumentFormattingProvider),kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:1572,linux:{primary:3111},weight:100},contextMenuOpts:{group:\"1_modification\",order:1.3}})}run(b,w){return we(this,void 0,void 0,function*(){if(w.hasModel()){const E=b.get(c.IInstantiationService);yield b.get(o.IEditorProgressService).showWhile(E.invokeFunction(t.formatDocumentWithSelectedProvider,w,1,o.Progress.None,k.CancellationToken.None),250)}})}}class m extends f.EditorAction{constructor(){super({id:\"editor.action.formatSelection\",label:u.localize(1,null),alias:\"Format Selection\",precondition:r.ContextKeyExpr.and(s.EditorContextKeys.writable,s.EditorContextKeys.hasDocumentSelectionFormattingProvider),kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2084),weight:100},contextMenuOpts:{when:s.EditorContextKeys.hasNonEmptySelection,group:\"1_modification\",order:1.31}})}run(b,w){return we(this,void 0,void 0,function*(){if(!w.hasModel())return;const E=b.get(c.IInstantiationService),I=w.getModel(),M=w.getSelections().map(x=>x.isEmpty()?new C.Range(x.startLineNumber,1,x.startLineNumber,I.getLineMaxColumn(x.startLineNumber)):x);yield b.get(o.IEditorProgressService).showWhile(E.invokeFunction(t.formatDocumentRangesWithSelectedProvider,w,M,1,o.Progress.None,k.CancellationToken.None),250)})}}(0,f.registerEditorContribution)(d.ID,d,2),(0,f.registerEditorContribution)(l.ID,l,2),(0,f.registerEditorAction)(p),(0,f.registerEditorAction)(m),h.CommandsRegistry.registerCommand(\"editor.action.format\",v=>we(void 0,void 0,void 0,function*(){const b=v.get(_.ICodeEditorService).getFocusedCodeEditor();if(!b||!b.hasModel())return;const w=v.get(h.ICommandService);b.getSelection().isEmpty()?yield w.executeCommand(\"editor.action.formatDocument\"):yield w.executeCommand(\"editor.action.formatSelection\")}))}),define(ne[247],se([1,0,14,19,9,16,18,155]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getReferencesAtPosition=e.getTypeDefinitionsAtPosition=e.getImplementationsAtPosition=e.getDeclarationsAtPosition=e.getDefinitionsAtPosition=void 0;function _(a,u,h,r){return we(this,void 0,void 0,function*(){const o=h.ordered(a).map(l=>Promise.resolve(r(l,a,u)).then(void 0,p=>{(0,y.onUnexpectedExternalError)(p)})),d=yield Promise.all(o);return(0,L.coalesce)(d.flat())})}function g(a,u,h,r){return _(u,h,a,(c,o,d)=>c.provideDefinition(o,d,r))}e.getDefinitionsAtPosition=g;function C(a,u,h,r){return _(u,h,a,(c,o,d)=>c.provideDeclaration(o,d,r))}e.getDeclarationsAtPosition=C;function s(a,u,h,r){return _(u,h,a,(c,o,d)=>c.provideImplementation(o,d,r))}e.getImplementationsAtPosition=s;function i(a,u,h,r){return _(u,h,a,(c,o,d)=>c.provideTypeDefinition(o,d,r))}e.getTypeDefinitionsAtPosition=i;function n(a,u,h,r,c){return _(u,h,a,(o,d,l)=>we(this,void 0,void 0,function*(){const p=yield o.provideReferences(d,l,{includeDeclaration:!0},c);if(!r||!p||p.length!==2)return p;const m=yield o.provideReferences(d,l,{includeDeclaration:!1},c);return m&&m.length===1?m:p}))}e.getReferencesAtPosition=n;function t(a){return we(this,void 0,void 0,function*(){const u=yield a(),h=new f.ReferencesModel(u,\"\"),r=h.references.map(c=>c.link);return h.dispose(),r})}(0,D.registerModelAndPositionCommand)(\"_executeDefinitionProvider\",(a,u,h)=>{const r=a.get(S.ILanguageFeaturesService),c=g(r.definitionProvider,u,h,k.CancellationToken.None);return t(()=>c)}),(0,D.registerModelAndPositionCommand)(\"_executeTypeDefinitionProvider\",(a,u,h)=>{const r=a.get(S.ILanguageFeaturesService),c=i(r.typeDefinitionProvider,u,h,k.CancellationToken.None);return t(()=>c)}),(0,D.registerModelAndPositionCommand)(\"_executeDeclarationProvider\",(a,u,h)=>{const r=a.get(S.ILanguageFeaturesService),c=C(r.declarationProvider,u,h,k.CancellationToken.None);return t(()=>c)}),(0,D.registerModelAndPositionCommand)(\"_executeReferenceProvider\",(a,u,h)=>{const r=a.get(S.ILanguageFeaturesService),c=n(r.referenceProvider,u,h,!1,k.CancellationToken.None);return t(()=>c)}),(0,D.registerModelAndPositionCommand)(\"_executeImplementationProvider\",(a,u,h)=>{const r=a.get(S.ILanguageFeaturesService),c=s(r.implementationProvider,u,h,k.CancellationToken.None);return t(()=>c)})}),define(ne[804],se([1,0,6,2,45,16,33,5,670,15,50,8,34,118,43]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ISymbolNavigationService=e.ctxHasSymbols=void 0,e.ctxHasSymbols=new g.RawContextKey(\"hasSymbols\",!1,(0,_.localize)(0,null)),e.ISymbolNavigationService=(0,s.createDecorator)(\"ISymbolNavigationService\");let a=class{constructor(r,c,o,d){this._editorService=c,this._notificationService=o,this._keybindingService=d,this._currentModel=void 0,this._currentIdx=-1,this._ignoreEditorChange=!1,this._ctxHasSymbols=e.ctxHasSymbols.bindTo(r)}reset(){var r,c;this._ctxHasSymbols.reset(),(r=this._currentState)===null||r===void 0||r.dispose(),(c=this._currentMessage)===null||c===void 0||c.dispose(),this._currentModel=void 0,this._currentIdx=-1}put(r){const c=r.parent.parent;if(c.references.length<=1){this.reset();return}this._currentModel=c,this._currentIdx=c.references.indexOf(r),this._ctxHasSymbols.set(!0),this._showMessage();const o=new u(this._editorService),d=o.onDidChange(l=>{if(this._ignoreEditorChange)return;const p=this._editorService.getActiveCodeEditor();if(!p)return;const m=p.getModel(),v=p.getPosition();if(!m||!v)return;let b=!1,w=!1;for(const E of c.references)if((0,y.isEqual)(E.uri,m.uri))b=!0,w=w||f.Range.containsPosition(E.range,v);else if(b)break;(!b||!w)&&this.reset()});this._currentState=(0,k.combinedDisposable)(o,d)}revealNext(r){if(!this._currentModel)return Promise.resolve();this._currentIdx+=1,this._currentIdx%=this._currentModel.references.length;const c=this._currentModel.references[this._currentIdx];return this._showMessage(),this._ignoreEditorChange=!0,this._editorService.openCodeEditor({resource:c.uri,options:{selection:f.Range.collapseToStart(c.range),selectionRevealType:3}},r).finally(()=>{this._ignoreEditorChange=!1})}_showMessage(){var r;(r=this._currentMessage)===null||r===void 0||r.dispose();const c=this._keybindingService.lookupKeybinding(\"editor.gotoNextSymbolFromResult\"),o=c?(0,_.localize)(1,null,this._currentIdx+1,this._currentModel.references.length,c.getLabel()):(0,_.localize)(2,null,this._currentIdx+1,this._currentModel.references.length);this._currentMessage=this._notificationService.status(o)}};a=ke([fe(0,g.IContextKeyService),fe(1,S.ICodeEditorService),fe(2,t.INotificationService),fe(3,i.IKeybindingService)],a),(0,C.registerSingleton)(e.ISymbolNavigationService,a,1),(0,D.registerEditorCommand)(new class extends D.EditorCommand{constructor(){super({id:\"editor.gotoNextSymbolFromResult\",precondition:e.ctxHasSymbols,kbOpts:{weight:100,primary:70}})}runEditorCommand(h,r){return h.get(e.ISymbolNavigationService).revealNext(r)}}),n.KeybindingsRegistry.registerCommandAndKeybindingRule({id:\"editor.gotoNextSymbolFromResult.cancel\",weight:100,when:e.ctxHasSymbols,primary:9,handler(h){h.get(e.ISymbolNavigationService).reset()}});let u=class{constructor(r){this._listener=new Map,this._disposables=new k.DisposableStore,this._onDidChange=new L.Emitter,this.onDidChange=this._onDidChange.event,this._disposables.add(r.onCodeEditorRemove(this._onDidRemoveEditor,this)),this._disposables.add(r.onCodeEditorAdd(this._onDidAddEditor,this)),r.listCodeEditors().forEach(this._onDidAddEditor,this)}dispose(){this._disposables.dispose(),this._onDidChange.dispose(),(0,k.dispose)(this._listener.values())}_onDidAddEditor(r){this._listener.set(r,(0,k.combinedDisposable)(r.onDidChangeCursorPosition(c=>this._onDidChange.fire({editor:r})),r.onDidChangeModelContent(c=>this._onDidChange.fire({editor:r}))))}_onDidRemoveEditor(r){var c;(c=this._listener.get(r))===null||c===void 0||c.dispose(),this._listener.delete(r)}};u=ke([fe(0,S.ICodeEditorService)],u)}),define(ne[352],se([1,0,13,19,9,16,18]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getHoverPromise=e.getHover=e.HoverProviderResult=void 0;class f{constructor(n,t,a){this.provider=n,this.hover=t,this.ordinal=a}}e.HoverProviderResult=f;function _(i,n,t,a,u){return we(this,void 0,void 0,function*(){try{const h=yield Promise.resolve(i.provideHover(t,a,u));if(h&&s(h))return new f(i,h,n)}catch(h){(0,y.onUnexpectedExternalError)(h)}})}function g(i,n,t,a){const h=i.ordered(n).map((r,c)=>_(r,c,n,t,a));return L.AsyncIterableObject.fromPromises(h).coalesce()}e.getHover=g;function C(i,n,t,a){return g(i,n,t,a).map(u=>u.hover).toPromise()}e.getHoverPromise=C,(0,D.registerModelAndPositionCommand)(\"_executeHoverProvider\",(i,n,t)=>{const a=i.get(S.ILanguageFeaturesService);return C(a.hoverProvider,n,t,k.CancellationToken.None)});function s(i){const n=typeof i.range<\"u\",t=typeof i.contents<\"u\"&&i.contents&&i.contents.length>0;return n&&t}}),define(ne[248],se([1,0,7,14,13,55,2,117,12,5,41,352,672,28,56,18]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.renderMarkdownHovers=e.MarkdownHoverParticipant=e.MarkdownHover=void 0;const u=L.$;class h{constructor(d,l,p,m,v){this.owner=d,this.range=l,this.contents=p,this.isBeforeContent=m,this.ordinal=v}isValidForHoverAnchor(d){return d.type===1&&this.range.startColumn<=d.range.startColumn&&this.range.endColumn>=d.range.endColumn}}e.MarkdownHover=h;let r=class{constructor(d,l,p,m,v){this._editor=d,this._languageService=l,this._openerService=p,this._configurationService=m,this._languageFeaturesService=v,this.hoverOrdinal=3}createLoadingMessage(d){return new h(this,d.range,[new D.MarkdownString().appendText(i.localize(0,null))],!1,2e3)}computeSync(d,l){if(!this._editor.hasModel()||d.type!==1)return[];const p=this._editor.getModel(),m=d.range.startLineNumber,v=p.getLineMaxColumn(m),b=[];let w=1e3;const E=p.getLineLength(m),I=p.getLanguageIdAtPosition(d.range.startLineNumber,d.range.startColumn),M=this._editor.getOption(115),P=this._configurationService.getValue(\"editor.maxTokenizationLineLength\",{overrideIdentifier:I});let x=!1;M>=0&&E>M&&d.range.startColumn>=M&&(x=!0,b.push(new h(this,d.range,[{value:i.localize(1,null)}],!1,w++))),!x&&typeof P==\"number\"&&E>=P&&b.push(new h(this,d.range,[{value:i.localize(2,null)}],!1,w++));let T=!1;for(const A of l){const N=A.range.startLineNumber===m?A.range.startColumn:1,F=A.range.endLineNumber===m?A.range.endColumn:v,O=A.options.hoverMessage;if(!O||(0,D.isEmptyMarkdownString)(O))continue;A.options.beforeContentClassName&&(T=!0);const W=new g.Range(d.range.startLineNumber,N,d.range.startLineNumber,F);b.push(new h(this,W,(0,k.asArray)(O),T,w++))}return b}computeAsync(d,l,p){if(!this._editor.hasModel()||d.type!==1)return y.AsyncIterableObject.EMPTY;const m=this._editor.getModel();if(!this._languageFeaturesService.hoverProvider.has(m))return y.AsyncIterableObject.EMPTY;const v=new _.Position(d.range.startLineNumber,d.range.startColumn);return(0,s.getHover)(this._languageFeaturesService.hoverProvider,m,v,p).filter(b=>!(0,D.isEmptyMarkdownString)(b.hover.contents)).map(b=>{const w=b.hover.range?g.Range.lift(b.hover.range):d.range;return new h(this,w,b.hover.contents,!1,b.ordinal)})}renderHoverParts(d,l){return c(d,l,this._editor,this._languageService,this._openerService)}};e.MarkdownHoverParticipant=r,e.MarkdownHoverParticipant=r=ke([fe(1,C.ILanguageService),fe(2,t.IOpenerService),fe(3,n.IConfigurationService),fe(4,a.ILanguageFeaturesService)],r);function c(o,d,l,p,m){d.sort((b,w)=>b.ordinal-w.ordinal);const v=new S.DisposableStore;for(const b of d)for(const w of b.contents){if((0,D.isEmptyMarkdownString)(w))continue;const E=u(\"div.hover-row.markdown-hover\"),I=L.append(E,u(\"div.hover-contents\")),M=v.add(new f.MarkdownRenderer({editor:l},p,m));v.add(M.onDidRenderAsync(()=>{I.className=\"hover-contents code-hover-contents\",o.onContentsChanged()}));const P=v.add(M.render(w));I.appendChild(P.element),o.fragment.appendChild(E)}return v}e.renderMarkdownHovers=c}),define(ne[805],se([1,0,2,11,16,245,73,5,24,21,32,51,295,675,71,202,243]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IndentationToTabsCommand=e.IndentationToSpacesCommand=e.AutoIndentOnPaste=e.AutoIndentOnPasteCommand=e.ReindentSelectedLinesAction=e.ReindentLinesAction=e.DetectIndentation=e.ChangeTabDisplaySize=e.IndentUsingSpaces=e.IndentUsingTabs=e.ChangeIndentationSizeAction=e.IndentationToTabsAction=e.IndentationToSpacesAction=e.getReindentEditOperations=void 0;function h(x,T,A,N,F){if(x.getLineCount()===1&&x.getLineMaxColumn(1)===1)return[];const O=T.getLanguageConfiguration(x.getLanguageId()).indentationRules;if(!O)return[];for(N=Math.min(N,x.getLineCount());A<=N&&O.unIndentedLinePattern;){const B=x.getLineContent(A);if(!O.unIndentedLinePattern.test(B))break;A++}if(A>N-1)return[];const{tabSize:W,indentSize:U,insertSpaces:j}=x.getOptions(),R=(B,V)=>(V=V||1,D.ShiftCommand.shiftIndent(B,B.length+V,W,U,j)),K=(B,V)=>(V=V||1,D.ShiftCommand.unshiftIndent(B,B.length+V,W,U,j)),G=[];let Z;const J=x.getLineContent(A);let X=J;if(F!=null){Z=F;const B=k.getLeadingWhitespace(J);X=Z+J.substring(B.length),O.decreaseIndentPattern&&O.decreaseIndentPattern.test(X)&&(Z=K(Z),X=Z+J.substring(B.length)),J!==X&&G.push(S.EditOperation.replaceMove(new _.Selection(A,1,A,B.length+1),(0,a.normalizeIndentation)(Z,U,j)))}else Z=k.getLeadingWhitespace(J);let H=Z;O.increaseIndentPattern&&O.increaseIndentPattern.test(X)?(H=R(H),Z=R(Z)):O.indentNextLinePattern&&O.indentNextLinePattern.test(X)&&(H=R(H)),A++;for(let B=A;B<=N;B++){const V=x.getLineContent(B),Y=k.getLeadingWhitespace(V),ie=H+V.substring(Y.length);O.decreaseIndentPattern&&O.decreaseIndentPattern.test(ie)&&(H=K(H),Z=K(Z)),Y!==H&&G.push(S.EditOperation.replaceMove(new _.Selection(B,1,B,Y.length+1),(0,a.normalizeIndentation)(H,U,j))),!(O.unIndentedLinePattern&&O.unIndentedLinePattern.test(V))&&(O.increaseIndentPattern&&O.increaseIndentPattern.test(ie)?(Z=R(Z),H=Z):O.indentNextLinePattern&&O.indentNextLinePattern.test(ie)?H=R(H):H=Z)}return G}e.getReindentEditOperations=h;class r extends y.EditorAction{constructor(){super({id:r.ID,label:n.localize(0,null),alias:\"Convert Indentation to Spaces\",precondition:g.EditorContextKeys.writable})}run(T,A){const N=A.getModel();if(!N)return;const F=N.getOptions(),O=A.getSelection();if(!O)return;const W=new M(O,F.tabSize);A.pushUndoStop(),A.executeCommands(this.id,[W]),A.pushUndoStop(),N.updateOptions({insertSpaces:!0})}}e.IndentationToSpacesAction=r,r.ID=\"editor.action.indentationToSpaces\";class c extends y.EditorAction{constructor(){super({id:c.ID,label:n.localize(1,null),alias:\"Convert Indentation to Tabs\",precondition:g.EditorContextKeys.writable})}run(T,A){const N=A.getModel();if(!N)return;const F=N.getOptions(),O=A.getSelection();if(!O)return;const W=new P(O,F.tabSize);A.pushUndoStop(),A.executeCommands(this.id,[W]),A.pushUndoStop(),N.updateOptions({insertSpaces:!1})}}e.IndentationToTabsAction=c,c.ID=\"editor.action.indentationToTabs\";class o extends y.EditorAction{constructor(T,A,N){super(N),this.insertSpaces=T,this.displaySizeOnly=A}run(T,A){const N=T.get(t.IQuickInputService),F=T.get(s.IModelService),O=A.getModel();if(!O)return;const W=F.getCreationOptions(O.getLanguageId(),O.uri,O.isForSimpleWidget),U=O.getOptions(),j=[1,2,3,4,5,6,7,8].map(K=>({id:K.toString(),label:K.toString(),description:K===W.tabSize&&K===U.tabSize?n.localize(2,null):K===W.tabSize?n.localize(3,null):K===U.tabSize?n.localize(4,null):void 0})),R=Math.min(O.getOptions().tabSize-1,7);setTimeout(()=>{N.pick(j,{placeHolder:n.localize(5,null),activeItem:j[R]}).then(K=>{if(K&&O&&!O.isDisposed()){const G=parseInt(K.label,10);this.displaySizeOnly?O.updateOptions({tabSize:G}):O.updateOptions({tabSize:G,indentSize:G,insertSpaces:this.insertSpaces})}})},50)}}e.ChangeIndentationSizeAction=o;class d extends o{constructor(){super(!1,!1,{id:d.ID,label:n.localize(6,null),alias:\"Indent Using Tabs\",precondition:void 0})}}e.IndentUsingTabs=d,d.ID=\"editor.action.indentUsingTabs\";class l extends o{constructor(){super(!0,!1,{id:l.ID,label:n.localize(7,null),alias:\"Indent Using Spaces\",precondition:void 0})}}e.IndentUsingSpaces=l,l.ID=\"editor.action.indentUsingSpaces\";class p extends o{constructor(){super(!0,!0,{id:p.ID,label:n.localize(8,null),alias:\"Change Tab Display Size\",precondition:void 0})}}e.ChangeTabDisplaySize=p,p.ID=\"editor.action.changeTabDisplaySize\";class m extends y.EditorAction{constructor(){super({id:m.ID,label:n.localize(9,null),alias:\"Detect Indentation from Content\",precondition:void 0})}run(T,A){const N=T.get(s.IModelService),F=A.getModel();if(!F)return;const O=N.getCreationOptions(F.getLanguageId(),F.uri,F.isForSimpleWidget);F.detectIndentation(O.insertSpaces,O.tabSize)}}e.DetectIndentation=m,m.ID=\"editor.action.detectIndentation\";class v extends y.EditorAction{constructor(){super({id:\"editor.action.reindentlines\",label:n.localize(10,null),alias:\"Reindent Lines\",precondition:g.EditorContextKeys.writable})}run(T,A){const N=T.get(C.ILanguageConfigurationService),F=A.getModel();if(!F)return;const O=h(F,N,1,F.getLineCount());O.length>0&&(A.pushUndoStop(),A.executeEdits(this.id,O),A.pushUndoStop())}}e.ReindentLinesAction=v;class b extends y.EditorAction{constructor(){super({id:\"editor.action.reindentselectedlines\",label:n.localize(11,null),alias:\"Reindent Selected Lines\",precondition:g.EditorContextKeys.writable})}run(T,A){const N=T.get(C.ILanguageConfigurationService),F=A.getModel();if(!F)return;const O=A.getSelections();if(O===null)return;const W=[];for(const U of O){let j=U.startLineNumber,R=U.endLineNumber;if(j!==R&&U.endColumn===1&&R--,j===1){if(j===R)continue}else j--;const K=h(F,N,j,R);W.push(...K)}W.length>0&&(A.pushUndoStop(),A.executeEdits(this.id,W),A.pushUndoStop())}}e.ReindentSelectedLinesAction=b;class w{constructor(T,A){this._initialSelection=A,this._edits=[],this._selectionId=null;for(const N of T)N.range&&typeof N.text==\"string\"&&this._edits.push(N)}getEditOperations(T,A){for(const F of this._edits)A.addEditOperation(f.Range.lift(F.range),F.text);let N=!1;Array.isArray(this._edits)&&this._edits.length===1&&this._initialSelection.isEmpty()&&(this._edits[0].range.startColumn===this._initialSelection.endColumn&&this._edits[0].range.startLineNumber===this._initialSelection.endLineNumber?(N=!0,this._selectionId=A.trackSelection(this._initialSelection,!0)):this._edits[0].range.endColumn===this._initialSelection.startColumn&&this._edits[0].range.endLineNumber===this._initialSelection.startLineNumber&&(N=!0,this._selectionId=A.trackSelection(this._initialSelection,!1))),N||(this._selectionId=A.trackSelection(this._initialSelection))}computeCursorState(T,A){return A.getTrackedSelection(this._selectionId)}}e.AutoIndentOnPasteCommand=w;let E=class{constructor(T,A){this.editor=T,this._languageConfigurationService=A,this.callOnDispose=new L.DisposableStore,this.callOnModel=new L.DisposableStore,this.callOnDispose.add(T.onDidChangeConfiguration(()=>this.update())),this.callOnDispose.add(T.onDidChangeModel(()=>this.update())),this.callOnDispose.add(T.onDidChangeModelLanguage(()=>this.update()))}update(){this.callOnModel.clear(),!(this.editor.getOption(11)<4||this.editor.getOption(54))&&this.editor.hasModel()&&this.callOnModel.add(this.editor.onDidPaste(({range:T})=>{this.trigger(T)}))}trigger(T){const A=this.editor.getSelections();if(A===null||A.length>1)return;const N=this.editor.getModel();if(!N||!N.tokenization.isCheapToTokenize(T.getStartPosition().lineNumber))return;const F=this.editor.getOption(11),{tabSize:O,indentSize:W,insertSpaces:U}=N.getOptions(),j=[],R={shiftIndent:J=>D.ShiftCommand.shiftIndent(J,J.length+1,O,W,U),unshiftIndent:J=>D.ShiftCommand.unshiftIndent(J,J.length+1,O,W,U)};let K=T.startLineNumber;for(;K<=T.endLineNumber;){if(this.shouldIgnoreLine(N,K)){K++;continue}break}if(K>T.endLineNumber)return;let G=N.getLineContent(K);if(!/\\S/.test(G.substring(0,T.startColumn-1))){const J=(0,u.getGoodIndentForLine)(F,N,N.getLanguageId(),K,R,this._languageConfigurationService);if(J!==null){const X=k.getLeadingWhitespace(G),H=i.getSpaceCnt(J,O),B=i.getSpaceCnt(X,O);if(H!==B){const V=i.generateIndent(H,O,U);j.push({range:new f.Range(K,1,K,X.length+1),text:V}),G=V+G.substr(X.length)}else{const V=(0,u.getIndentMetadata)(N,K,this._languageConfigurationService);if(V===0||V===8)return}}}const Z=K;for(;K<T.endLineNumber;){if(!/\\S/.test(N.getLineContent(K+1))){K++;continue}break}if(K!==T.endLineNumber){const J={tokenization:{getLineTokens:H=>N.tokenization.getLineTokens(H),getLanguageId:()=>N.getLanguageId(),getLanguageIdAtPosition:(H,B)=>N.getLanguageIdAtPosition(H,B)},getLineContent:H=>H===Z?G:N.getLineContent(H)},X=(0,u.getGoodIndentForLine)(F,J,N.getLanguageId(),K+1,R,this._languageConfigurationService);if(X!==null){const H=i.getSpaceCnt(X,O),B=i.getSpaceCnt(k.getLeadingWhitespace(N.getLineContent(K+1)),O);if(H!==B){const V=H-B;for(let Y=K+1;Y<=T.endLineNumber;Y++){const ie=N.getLineContent(Y),ae=k.getLeadingWhitespace(ie),de=i.getSpaceCnt(ae,O)+V,he=i.generateIndent(de,O,U);he!==ae&&j.push({range:new f.Range(Y,1,Y,ae.length+1),text:he})}}}}if(j.length>0){this.editor.pushUndoStop();const J=new w(j,this.editor.getSelection());this.editor.executeCommand(\"autoIndentOnPaste\",J),this.editor.pushUndoStop()}}shouldIgnoreLine(T,A){T.tokenization.forceTokenization(A);const N=T.getLineFirstNonWhitespaceColumn(A);if(N===0)return!0;const F=T.tokenization.getLineTokens(A);if(F.getCount()>0){const O=F.findTokenIndexAtOffset(N);if(O>=0&&F.getStandardTokenType(O)===1)return!0}return!1}dispose(){this.callOnDispose.dispose(),this.callOnModel.dispose()}};e.AutoIndentOnPaste=E,E.ID=\"editor.contrib.autoIndentOnPaste\",e.AutoIndentOnPaste=E=ke([fe(1,C.ILanguageConfigurationService)],E);function I(x,T,A,N){if(x.getLineCount()===1&&x.getLineMaxColumn(1)===1)return;let F=\"\";for(let W=0;W<A;W++)F+=\" \";const O=new RegExp(F,\"gi\");for(let W=1,U=x.getLineCount();W<=U;W++){let j=x.getLineFirstNonWhitespaceColumn(W);if(j===0&&(j=x.getLineMaxColumn(W)),j===1)continue;const R=new f.Range(W,1,W,j),K=x.getValueInRange(R),G=N?K.replace(/\\t/ig,F):K.replace(O,\"\t\");T.addEditOperation(R,G)}}class M{constructor(T,A){this.selection=T,this.tabSize=A,this.selectionId=null}getEditOperations(T,A){this.selectionId=A.trackSelection(this.selection),I(T,A,this.tabSize,!0)}computeCursorState(T,A){return A.getTrackedSelection(this.selectionId)}}e.IndentationToSpacesCommand=M;class P{constructor(T,A){this.selection=T,this.tabSize=A,this.selectionId=null}getEditOperations(T,A){this.selectionId=A.trackSelection(this.selection),I(T,A,this.tabSize,!1)}computeCursorState(T,A){return A.getTrackedSelection(this.selectionId)}}e.IndentationToTabsCommand=P,(0,y.registerEditorContribution)(E.ID,E,2),(0,y.registerEditorAction)(r),(0,y.registerEditorAction)(c),(0,y.registerEditorAction)(d),(0,y.registerEditorAction)(l),(0,y.registerEditorAction)(p),(0,y.registerEditorAction)(m),(0,y.registerEditorAction)(v),(0,y.registerEditorAction)(b)}),define(ne[806],se([1,0,16,205,21,682]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ExpandLineSelectionAction=void 0;class S extends L.EditorAction{constructor(){super({id:\"expandLineSelection\",label:D.localize(0,null),alias:\"Expand Line Selection\",precondition:void 0,kbOpts:{weight:0,kbExpr:y.EditorContextKeys.textInputFocus,primary:2090}})}run(_,g,C){if(C=C||{},!g.hasModel())return;const s=g._getViewModel();s.model.pushStackElement(),s.setCursorStates(C.source,3,k.CursorMoveCommands.expandLineSelection(s,s.getCursorStates())),s.revealPrimaryCursor(C.source,!0)}}e.ExpandLineSelectionAction=S,(0,L.registerEditorAction)(S)}),define(ne[807],se([1,0,63,189,16,123,484,246,73,12,5,24,21,545,780,546,683,30,32]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.KebabCaseAction=e.CamelCaseAction=e.SnakeCaseAction=e.TitleCaseAction=e.LowerCaseAction=e.UpperCaseAction=e.AbstractCaseAction=e.TransposeAction=e.JoinLinesAction=e.DeleteAllRightAction=e.DeleteAllLeftAction=e.AbstractDeleteAllToBoundaryAction=e.InsertLineAfterAction=e.InsertLineBeforeAction=e.IndentLinesAction=e.DeleteLinesAction=e.TrimTrailingWhitespaceAction=e.DeleteDuplicateLinesAction=e.SortLinesDescendingAction=e.SortLinesAscendingAction=e.AbstractSortLinesAction=e.DuplicateSelectionAction=void 0;class c extends y.EditorAction{constructor(Y,ie){super(ie),this.down=Y}run(Y,ie){if(!ie.hasModel())return;const ae=ie.getSelections().map((he,ue)=>({selection:he,index:ue,ignore:!1}));ae.sort((he,ue)=>C.Range.compareRangesUsingStarts(he.selection,ue.selection));let ce=ae[0];for(let he=1;he<ae.length;he++){const ue=ae[he];ce.selection.endLineNumber===ue.selection.startLineNumber&&(ce.index<ue.index?ue.ignore=!0:(ce.ignore=!0,ce=ue))}const de=[];for(const he of ae)de.push(new n.CopyLinesCommand(he.selection,this.down,he.ignore));ie.pushUndoStop(),ie.executeCommands(this.id,de),ie.pushUndoStop()}}class o extends c{constructor(){super(!1,{id:\"editor.action.copyLinesUpAction\",label:u.localize(0,null),alias:\"Copy Line Up\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:1552,linux:{primary:3600},weight:100},menuOpts:{menuId:h.MenuId.MenubarSelectionMenu,group:\"2_line\",title:u.localize(1,null),order:1}})}}class d extends c{constructor(){super(!0,{id:\"editor.action.copyLinesDownAction\",label:u.localize(2,null),alias:\"Copy Line Down\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:1554,linux:{primary:3602},weight:100},menuOpts:{menuId:h.MenuId.MenubarSelectionMenu,group:\"2_line\",title:u.localize(3,null),order:2}})}}class l extends y.EditorAction{constructor(){super({id:\"editor.action.duplicateSelection\",label:u.localize(4,null),alias:\"Duplicate Selection\",precondition:i.EditorContextKeys.writable,menuOpts:{menuId:h.MenuId.MenubarSelectionMenu,group:\"2_line\",title:u.localize(5,null),order:5}})}run(Y,ie,ae){if(!ie.hasModel())return;const ce=[],de=ie.getSelections(),he=ie.getModel();for(const ue of de)if(ue.isEmpty())ce.push(new n.CopyLinesCommand(ue,!0));else{const te=new s.Selection(ue.endLineNumber,ue.endColumn,ue.endLineNumber,ue.endColumn);ce.push(new D.ReplaceCommandThatSelectsText(te,he.getValueInRange(ue)))}ie.pushUndoStop(),ie.executeCommands(this.id,ce),ie.pushUndoStop()}}e.DuplicateSelectionAction=l;class p extends y.EditorAction{constructor(Y,ie){super(ie),this.down=Y}run(Y,ie){const ae=Y.get(r.ILanguageConfigurationService),ce=[],de=ie.getSelections()||[],he=ie.getOption(11);for(const ue of de)ce.push(new t.MoveLinesCommand(ue,this.down,he,ae));ie.pushUndoStop(),ie.executeCommands(this.id,ce),ie.pushUndoStop()}}class m extends p{constructor(){super(!1,{id:\"editor.action.moveLinesUpAction\",label:u.localize(6,null),alias:\"Move Line Up\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:528,linux:{primary:528},weight:100},menuOpts:{menuId:h.MenuId.MenubarSelectionMenu,group:\"2_line\",title:u.localize(7,null),order:3}})}}class v extends p{constructor(){super(!0,{id:\"editor.action.moveLinesDownAction\",label:u.localize(8,null),alias:\"Move Line Down\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:530,linux:{primary:530},weight:100},menuOpts:{menuId:h.MenuId.MenubarSelectionMenu,group:\"2_line\",title:u.localize(9,null),order:4}})}}class b extends y.EditorAction{constructor(Y,ie){super(ie),this.descending=Y}run(Y,ie){const ae=ie.getSelections()||[];for(const de of ae)if(!a.SortLinesCommand.canRun(ie.getModel(),de,this.descending))return;const ce=[];for(let de=0,he=ae.length;de<he;de++)ce[de]=new a.SortLinesCommand(ae[de],this.descending);ie.pushUndoStop(),ie.executeCommands(this.id,ce),ie.pushUndoStop()}}e.AbstractSortLinesAction=b;class w extends b{constructor(){super(!1,{id:\"editor.action.sortLinesAscending\",label:u.localize(10,null),alias:\"Sort Lines Ascending\",precondition:i.EditorContextKeys.writable})}}e.SortLinesAscendingAction=w;class E extends b{constructor(){super(!0,{id:\"editor.action.sortLinesDescending\",label:u.localize(11,null),alias:\"Sort Lines Descending\",precondition:i.EditorContextKeys.writable})}}e.SortLinesDescendingAction=E;class I extends y.EditorAction{constructor(){super({id:\"editor.action.removeDuplicateLines\",label:u.localize(12,null),alias:\"Delete Duplicate Lines\",precondition:i.EditorContextKeys.writable})}run(Y,ie){if(!ie.hasModel())return;const ae=ie.getModel();if(ae.getLineCount()===1&&ae.getLineMaxColumn(1)===1)return;const ce=[],de=[];let he=0;for(const ue of ie.getSelections()){const te=new Set,q=[];for(let re=ue.startLineNumber;re<=ue.endLineNumber;re++){const oe=ae.getLineContent(re);te.has(oe)||(q.push(oe),te.add(oe))}const z=new s.Selection(ue.startLineNumber,1,ue.endLineNumber,ae.getLineMaxColumn(ue.endLineNumber)),ee=ue.startLineNumber-he,$=new s.Selection(ee,1,ee+q.length-1,q[q.length-1].length);ce.push(_.EditOperation.replace(z,q.join(`\n`))),de.push($),he+=ue.endLineNumber-ue.startLineNumber+1-q.length}ie.pushUndoStop(),ie.executeEdits(this.id,ce,de),ie.pushUndoStop()}}e.DeleteDuplicateLinesAction=I;class M extends y.EditorAction{constructor(){super({id:M.ID,label:u.localize(13,null),alias:\"Trim Trailing Whitespace\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:(0,L.KeyChord)(2089,2102),weight:100}})}run(Y,ie,ae){let ce=[];ae.reason===\"auto-save\"&&(ce=(ie.getSelections()||[]).map(ue=>new g.Position(ue.positionLineNumber,ue.positionColumn)));const de=ie.getSelection();if(de===null)return;const he=new S.TrimTrailingWhitespaceCommand(de,ce);ie.pushUndoStop(),ie.executeCommands(this.id,[he]),ie.pushUndoStop()}}e.TrimTrailingWhitespaceAction=M,M.ID=\"editor.action.trimTrailingWhitespace\";class P extends y.EditorAction{constructor(){super({id:\"editor.action.deleteLines\",label:u.localize(14,null),alias:\"Delete Line\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.textInputFocus,primary:3113,weight:100}})}run(Y,ie){if(!ie.hasModel())return;const ae=this._getLinesToRemove(ie),ce=ie.getModel();if(ce.getLineCount()===1&&ce.getLineMaxColumn(1)===1)return;let de=0;const he=[],ue=[];for(let te=0,q=ae.length;te<q;te++){const z=ae[te];let ee=z.startLineNumber,$=z.endLineNumber,re=1,oe=ce.getLineMaxColumn($);$<ce.getLineCount()?($+=1,oe=1):ee>1&&(ee-=1,re=ce.getLineMaxColumn(ee)),he.push(_.EditOperation.replace(new s.Selection(ee,re,$,oe),\"\")),ue.push(new s.Selection(ee-de,z.positionColumn,ee-de,z.positionColumn)),de+=z.endLineNumber-z.startLineNumber+1}ie.pushUndoStop(),ie.executeEdits(this.id,he,ue),ie.pushUndoStop()}_getLinesToRemove(Y){const ie=Y.getSelections().map(de=>{let he=de.endLineNumber;return de.startLineNumber<de.endLineNumber&&de.endColumn===1&&(he-=1),{startLineNumber:de.startLineNumber,selectionStartColumn:de.selectionStartColumn,endLineNumber:he,positionColumn:de.positionColumn}});ie.sort((de,he)=>de.startLineNumber===he.startLineNumber?de.endLineNumber-he.endLineNumber:de.startLineNumber-he.startLineNumber);const ae=[];let ce=ie[0];for(let de=1;de<ie.length;de++)ce.endLineNumber+1>=ie[de].startLineNumber?ce.endLineNumber=ie[de].endLineNumber:(ae.push(ce),ce=ie[de]);return ae.push(ce),ae}}e.DeleteLinesAction=P;class x extends y.EditorAction{constructor(){super({id:\"editor.action.indentLines\",label:u.localize(15,null),alias:\"Indent Line\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:2142,weight:100}})}run(Y,ie){const ae=ie._getViewModel();ae&&(ie.pushUndoStop(),ie.executeCommands(this.id,f.TypeOperations.indent(ae.cursorConfig,ie.getModel(),ie.getSelections())),ie.pushUndoStop())}}e.IndentLinesAction=x;class T extends y.EditorAction{constructor(){super({id:\"editor.action.outdentLines\",label:u.localize(16,null),alias:\"Outdent Line\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:2140,weight:100}})}run(Y,ie){k.CoreEditingCommands.Outdent.runEditorCommand(Y,ie,null)}}class A extends y.EditorAction{constructor(){super({id:\"editor.action.insertLineBefore\",label:u.localize(17,null),alias:\"Insert Line Above\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:3075,weight:100}})}run(Y,ie){const ae=ie._getViewModel();ae&&(ie.pushUndoStop(),ie.executeCommands(this.id,f.TypeOperations.lineInsertBefore(ae.cursorConfig,ie.getModel(),ie.getSelections())))}}e.InsertLineBeforeAction=A;class N extends y.EditorAction{constructor(){super({id:\"editor.action.insertLineAfter\",label:u.localize(18,null),alias:\"Insert Line Below\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:2051,weight:100}})}run(Y,ie){const ae=ie._getViewModel();ae&&(ie.pushUndoStop(),ie.executeCommands(this.id,f.TypeOperations.lineInsertAfter(ae.cursorConfig,ie.getModel(),ie.getSelections())))}}e.InsertLineAfterAction=N;class F extends y.EditorAction{run(Y,ie){if(!ie.hasModel())return;const ae=ie.getSelection(),ce=this._getRangesToDelete(ie),de=[];for(let te=0,q=ce.length-1;te<q;te++){const z=ce[te],ee=ce[te+1];C.Range.intersectRanges(z,ee)===null?de.push(z):ce[te+1]=C.Range.plusRange(z,ee)}de.push(ce[ce.length-1]);const he=this._getEndCursorState(ae,de),ue=de.map(te=>_.EditOperation.replace(te,\"\"));ie.pushUndoStop(),ie.executeEdits(this.id,ue,he),ie.pushUndoStop()}}e.AbstractDeleteAllToBoundaryAction=F;class O extends F{constructor(){super({id:\"deleteAllLeft\",label:u.localize(19,null),alias:\"Delete All Left\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.textInputFocus,primary:0,mac:{primary:2049},weight:100}})}_getEndCursorState(Y,ie){let ae=null;const ce=[];let de=0;return ie.forEach(he=>{let ue;if(he.endColumn===1&&de>0){const te=he.startLineNumber-de;ue=new s.Selection(te,he.startColumn,te,he.startColumn)}else ue=new s.Selection(he.startLineNumber,he.startColumn,he.startLineNumber,he.startColumn);de+=he.endLineNumber-he.startLineNumber,he.intersectRanges(Y)?ae=ue:ce.push(ue)}),ae&&ce.unshift(ae),ce}_getRangesToDelete(Y){const ie=Y.getSelections();if(ie===null)return[];let ae=ie;const ce=Y.getModel();return ce===null?[]:(ae.sort(C.Range.compareRangesUsingStarts),ae=ae.map(de=>{if(de.isEmpty())if(de.startColumn===1){const he=Math.max(1,de.startLineNumber-1),ue=de.startLineNumber===1?1:ce.getLineContent(he).length+1;return new C.Range(he,ue,de.startLineNumber,1)}else return new C.Range(de.startLineNumber,1,de.startLineNumber,de.startColumn);else return new C.Range(de.startLineNumber,1,de.endLineNumber,de.endColumn)}),ae)}}e.DeleteAllLeftAction=O;class W extends F{constructor(){super({id:\"deleteAllRight\",label:u.localize(20,null),alias:\"Delete All Right\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.textInputFocus,primary:0,mac:{primary:297,secondary:[2068]},weight:100}})}_getEndCursorState(Y,ie){let ae=null;const ce=[];for(let de=0,he=ie.length,ue=0;de<he;de++){const te=ie[de],q=new s.Selection(te.startLineNumber-ue,te.startColumn,te.startLineNumber-ue,te.startColumn);te.intersectRanges(Y)?ae=q:ce.push(q)}return ae&&ce.unshift(ae),ce}_getRangesToDelete(Y){const ie=Y.getModel();if(ie===null)return[];const ae=Y.getSelections();if(ae===null)return[];const ce=ae.map(de=>{if(de.isEmpty()){const he=ie.getLineMaxColumn(de.startLineNumber);return de.startColumn===he?new C.Range(de.startLineNumber,de.startColumn,de.startLineNumber+1,1):new C.Range(de.startLineNumber,de.startColumn,de.startLineNumber,he)}return de});return ce.sort(C.Range.compareRangesUsingStarts),ce}}e.DeleteAllRightAction=W;class U extends y.EditorAction{constructor(){super({id:\"editor.action.joinLines\",label:u.localize(21,null),alias:\"Join Lines\",precondition:i.EditorContextKeys.writable,kbOpts:{kbExpr:i.EditorContextKeys.editorTextFocus,primary:0,mac:{primary:296},weight:100}})}run(Y,ie){const ae=ie.getSelections();if(ae===null)return;let ce=ie.getSelection();if(ce===null)return;ae.sort(C.Range.compareRangesUsingStarts);const de=[],he=ae.reduce(($,re)=>$.isEmpty()?$.endLineNumber===re.startLineNumber?(ce.equalsSelection($)&&(ce=re),re):re.startLineNumber>$.endLineNumber+1?(de.push($),re):new s.Selection($.startLineNumber,$.startColumn,re.endLineNumber,re.endColumn):re.startLineNumber>$.endLineNumber?(de.push($),re):new s.Selection($.startLineNumber,$.startColumn,re.endLineNumber,re.endColumn));de.push(he);const ue=ie.getModel();if(ue===null)return;const te=[],q=[];let z=ce,ee=0;for(let $=0,re=de.length;$<re;$++){const oe=de[$],ge=oe.startLineNumber,ve=1;let Se=0,Le,De;const ye=ue.getLineContent(oe.endLineNumber).length-oe.endColumn;if(oe.isEmpty()||oe.startLineNumber===oe.endLineNumber){const Pe=oe.getStartPosition();Pe.lineNumber<ue.getLineCount()?(Le=ge+1,De=ue.getLineMaxColumn(Le)):(Le=Pe.lineNumber,De=ue.getLineMaxColumn(Pe.lineNumber))}else Le=oe.endLineNumber,De=ue.getLineMaxColumn(Le);let Ee=ue.getLineContent(ge);for(let Pe=ge+1;Pe<=Le;Pe++){const Fe=ue.getLineContent(Pe),_e=ue.getLineFirstNonWhitespaceColumn(Pe);if(_e>=1){let me=!0;Ee===\"\"&&(me=!1),me&&(Ee.charAt(Ee.length-1)===\" \"||Ee.charAt(Ee.length-1)===\"\t\")&&(me=!1,Ee=Ee.replace(/[\\s\\uFEFF\\xA0]+$/g,\" \"));const le=Fe.substr(_e-1);Ee+=(me?\" \":\"\")+le,me?Se=le.length+1:Se=le.length}else Se=0}const Me=new C.Range(ge,ve,Le,De);if(!Me.isEmpty()){let Pe;oe.isEmpty()?(te.push(_.EditOperation.replace(Me,Ee)),Pe=new s.Selection(Me.startLineNumber-ee,Ee.length-Se+1,ge-ee,Ee.length-Se+1)):oe.startLineNumber===oe.endLineNumber?(te.push(_.EditOperation.replace(Me,Ee)),Pe=new s.Selection(oe.startLineNumber-ee,oe.startColumn,oe.endLineNumber-ee,oe.endColumn)):(te.push(_.EditOperation.replace(Me,Ee)),Pe=new s.Selection(oe.startLineNumber-ee,oe.startColumn,oe.startLineNumber-ee,Ee.length-ye)),C.Range.intersectRanges(Me,ce)!==null?z=Pe:q.push(Pe)}ee+=Me.endLineNumber-Me.startLineNumber}q.unshift(z),ie.pushUndoStop(),ie.executeEdits(this.id,te,q),ie.pushUndoStop()}}e.JoinLinesAction=U;class j extends y.EditorAction{constructor(){super({id:\"editor.action.transpose\",label:u.localize(22,null),alias:\"Transpose Characters around the Cursor\",precondition:i.EditorContextKeys.writable})}run(Y,ie){const ae=ie.getSelections();if(ae===null)return;const ce=ie.getModel();if(ce===null)return;const de=[];for(let he=0,ue=ae.length;he<ue;he++){const te=ae[he];if(!te.isEmpty())continue;const q=te.getStartPosition(),z=ce.getLineMaxColumn(q.lineNumber);if(q.column>=z){if(q.lineNumber===ce.getLineCount())continue;const ee=new C.Range(q.lineNumber,Math.max(1,q.column-1),q.lineNumber+1,1),$=ce.getValueInRange(ee).split(\"\").reverse().join(\"\");de.push(new D.ReplaceCommand(new s.Selection(q.lineNumber,Math.max(1,q.column-1),q.lineNumber+1,1),$))}else{const ee=new C.Range(q.lineNumber,Math.max(1,q.column-1),q.lineNumber,q.column+1),$=ce.getValueInRange(ee).split(\"\").reverse().join(\"\");de.push(new D.ReplaceCommandThatPreservesSelection(ee,$,new s.Selection(q.lineNumber,q.column+1,q.lineNumber,q.column+1)))}}ie.pushUndoStop(),ie.executeCommands(this.id,de),ie.pushUndoStop()}}e.TransposeAction=j;class R extends y.EditorAction{run(Y,ie){const ae=ie.getSelections();if(ae===null)return;const ce=ie.getModel();if(ce===null)return;const de=ie.getOption(128),he=[];for(const ue of ae)if(ue.isEmpty()){const te=ue.getStartPosition(),q=ie.getConfiguredWordAtPosition(te);if(!q)continue;const z=new C.Range(te.lineNumber,q.startColumn,te.lineNumber,q.endColumn),ee=ce.getValueInRange(z);he.push(_.EditOperation.replace(z,this._modifyText(ee,de)))}else{const te=ce.getValueInRange(ue);he.push(_.EditOperation.replace(ue,this._modifyText(te,de)))}ie.pushUndoStop(),ie.executeEdits(this.id,he),ie.pushUndoStop()}}e.AbstractCaseAction=R;class K extends R{constructor(){super({id:\"editor.action.transformToUppercase\",label:u.localize(23,null),alias:\"Transform to Uppercase\",precondition:i.EditorContextKeys.writable})}_modifyText(Y,ie){return Y.toLocaleUpperCase()}}e.UpperCaseAction=K;class G extends R{constructor(){super({id:\"editor.action.transformToLowercase\",label:u.localize(24,null),alias:\"Transform to Lowercase\",precondition:i.EditorContextKeys.writable})}_modifyText(Y,ie){return Y.toLocaleLowerCase()}}e.LowerCaseAction=G;class Z{constructor(Y,ie){this._pattern=Y,this._flags=ie,this._actual=null,this._evaluated=!1}get(){if(!this._evaluated){this._evaluated=!0;try{this._actual=new RegExp(this._pattern,this._flags)}catch{}}return this._actual}isSupported(){return this.get()!==null}}class J extends R{constructor(){super({id:\"editor.action.transformToTitlecase\",label:u.localize(25,null),alias:\"Transform to Title Case\",precondition:i.EditorContextKeys.writable})}_modifyText(Y,ie){const ae=J.titleBoundary.get();return ae?Y.toLocaleLowerCase().replace(ae,ce=>ce.toLocaleUpperCase()):Y}}e.TitleCaseAction=J,J.titleBoundary=new Z(\"(^|[^\\\\p{L}\\\\p{N}']|((^|\\\\P{L})'))\\\\p{L}\",\"gmu\");class X extends R{constructor(){super({id:\"editor.action.transformToSnakecase\",label:u.localize(26,null),alias:\"Transform to Snake Case\",precondition:i.EditorContextKeys.writable})}_modifyText(Y,ie){const ae=X.caseBoundary.get(),ce=X.singleLetters.get();return!ae||!ce?Y:Y.replace(ae,\"$1_$2\").replace(ce,\"$1_$2$3\").toLocaleLowerCase()}}e.SnakeCaseAction=X,X.caseBoundary=new Z(\"(\\\\p{Ll})(\\\\p{Lu})\",\"gmu\"),X.singleLetters=new Z(\"(\\\\p{Lu}|\\\\p{N})(\\\\p{Lu})(\\\\p{Ll})\",\"gmu\");class H extends R{constructor(){super({id:\"editor.action.transformToCamelcase\",label:u.localize(27,null),alias:\"Transform to Camel Case\",precondition:i.EditorContextKeys.writable})}_modifyText(Y,ie){const ae=H.wordBoundary.get();if(!ae)return Y;const ce=Y.split(ae);return ce.shift()+ce.map(he=>he.substring(0,1).toLocaleUpperCase()+he.substring(1)).join(\"\")}}e.CamelCaseAction=H,H.wordBoundary=new Z(\"[_\\\\s-]\",\"gm\");class B extends R{static isSupported(){return[this.caseBoundary,this.singleLetters,this.underscoreBoundary].every(ie=>ie.isSupported())}constructor(){super({id:\"editor.action.transformToKebabcase\",label:u.localize(28,null),alias:\"Transform to Kebab Case\",precondition:i.EditorContextKeys.writable})}_modifyText(Y,ie){const ae=B.caseBoundary.get(),ce=B.singleLetters.get(),de=B.underscoreBoundary.get();return!ae||!ce||!de?Y:Y.replace(de,\"$1-$3\").replace(ae,\"$1-$2\").replace(ce,\"$1-$2\").toLocaleLowerCase()}}e.KebabCaseAction=B,B.caseBoundary=new Z(\"(\\\\p{Ll})(\\\\p{Lu})\",\"gmu\"),B.singleLetters=new Z(\"(\\\\p{Lu}|\\\\p{N})(\\\\p{Lu}\\\\p{Ll})\",\"gmu\"),B.underscoreBoundary=new Z(\"(\\\\S)(_)(\\\\S)\",\"gm\"),(0,y.registerEditorAction)(o),(0,y.registerEditorAction)(d),(0,y.registerEditorAction)(l),(0,y.registerEditorAction)(m),(0,y.registerEditorAction)(v),(0,y.registerEditorAction)(w),(0,y.registerEditorAction)(E),(0,y.registerEditorAction)(I),(0,y.registerEditorAction)(M),(0,y.registerEditorAction)(P),(0,y.registerEditorAction)(x),(0,y.registerEditorAction)(T),(0,y.registerEditorAction)(A),(0,y.registerEditorAction)(N),(0,y.registerEditorAction)(O),(0,y.registerEditorAction)(W),(0,y.registerEditorAction)(U),(0,y.registerEditorAction)(j),(0,y.registerEditorAction)(K),(0,y.registerEditorAction)(G),X.caseBoundary.isSupported()&&X.singleLetters.isSupported()&&(0,y.registerEditorAction)(X),H.wordBoundary.isSupported()&&(0,y.registerEditorAction)(H),J.titleBoundary.isSupported()&&(0,y.registerEditorAction)(J),B.isSupported()&&(0,y.registerEditorAction)(B)}),define(ne[808],se([1,0,2,16]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});class y extends L.Disposable{constructor(S){super(),this._editor=S,this._register(this._editor.onMouseDown(f=>{const _=this._editor.getOption(115);_>=0&&f.target.type===6&&f.target.position.column>=_&&this._editor.updateOptions({stopRenderingLineAfter:-1})}))}}y.ID=\"editor.contrib.longLinesHelper\",(0,k.registerEditorContribution)(y.ID,y,2)}),define(ne[190],se([1,0,183,49,6,55,2,16,5,117,686,15,56,7,456]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";var t;Object.defineProperty(e,\"__esModule\",{value:!0}),e.MessageController=void 0;let a=t=class{static get(c){return c.getContribution(t.ID)}constructor(c,o,d){this._openerService=d,this._messageWidget=new S.MutableDisposable,this._messageListeners=new S.DisposableStore,this._mouseOverMessage=!1,this._editor=c,this._visible=t.MESSAGE_VISIBLE.bindTo(o)}dispose(){var c;(c=this._message)===null||c===void 0||c.dispose(),this._messageListeners.dispose(),this._messageWidget.dispose(),this._visible.reset()}showMessage(c,o){(0,k.alert)((0,D.isMarkdownString)(c)?c.value:c),this._visible.set(!0),this._messageWidget.clear(),this._messageListeners.clear(),this._message=(0,D.isMarkdownString)(c)?(0,L.renderMarkdown)(c,{actionHandler:{callback:l=>(0,g.openLinkFromMarkdown)(this._openerService,l,(0,D.isMarkdownString)(c)?c.isTrusted:void 0),disposables:this._messageListeners}}):void 0,this._messageWidget.value=new h(this._editor,o,typeof c==\"string\"?c:this._message.element),this._messageListeners.add(y.Event.debounce(this._editor.onDidBlurEditorText,(l,p)=>p,0)(()=>{this._mouseOverMessage||this._messageWidget.value&&n.isAncestor(document.activeElement,this._messageWidget.value.getDomNode())||this.closeMessage()})),this._messageListeners.add(this._editor.onDidChangeCursorPosition(()=>this.closeMessage())),this._messageListeners.add(this._editor.onDidDispose(()=>this.closeMessage())),this._messageListeners.add(this._editor.onDidChangeModel(()=>this.closeMessage())),this._messageListeners.add(n.addDisposableListener(this._messageWidget.value.getDomNode(),n.EventType.MOUSE_ENTER,()=>this._mouseOverMessage=!0,!0)),this._messageListeners.add(n.addDisposableListener(this._messageWidget.value.getDomNode(),n.EventType.MOUSE_LEAVE,()=>this._mouseOverMessage=!1,!0));let d;this._messageListeners.add(this._editor.onMouseMove(l=>{l.target.position&&(d?d.containsPosition(l.target.position)||this.closeMessage():d=new _.Range(o.lineNumber-3,1,l.target.position.lineNumber+3,1))}))}closeMessage(){this._visible.reset(),this._messageListeners.clear(),this._messageWidget.value&&this._messageListeners.add(h.fadeOut(this._messageWidget.value))}};e.MessageController=a,a.ID=\"editor.contrib.messageController\",a.MESSAGE_VISIBLE=new s.RawContextKey(\"messageVisible\",!1,C.localize(0,null)),e.MessageController=a=t=ke([fe(1,s.IContextKeyService),fe(2,i.IOpenerService)],a);const u=f.EditorCommand.bindToContribution(a.get);(0,f.registerEditorCommand)(new u({id:\"leaveEditorMessage\",precondition:a.MESSAGE_VISIBLE,handler:r=>r.closeMessage(),kbOpts:{weight:100+30,primary:9}}));class h{static fadeOut(c){const o=()=>{c.dispose(),clearTimeout(d),c.getDomNode().removeEventListener(\"animationend\",o)},d=setTimeout(o,110);return c.getDomNode().addEventListener(\"animationend\",o),c.getDomNode().classList.add(\"fadeOut\"),{dispose:o}}constructor(c,{lineNumber:o,column:d},l){this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._editor=c,this._editor.revealLinesInCenterIfOutsideViewport(o,o,0),this._position={lineNumber:o,column:d},this._domNode=document.createElement(\"div\"),this._domNode.classList.add(\"monaco-editor-overlaymessage\"),this._domNode.style.marginLeft=\"-6px\";const p=document.createElement(\"div\");p.classList.add(\"anchor\",\"top\"),this._domNode.appendChild(p);const m=document.createElement(\"div\");typeof l==\"string\"?(m.classList.add(\"message\"),m.textContent=l):(l.classList.add(\"message\"),m.appendChild(l)),this._domNode.appendChild(m);const v=document.createElement(\"div\");v.classList.add(\"anchor\",\"below\"),this._domNode.appendChild(v),this._editor.addContentWidget(this),this._domNode.classList.add(\"fadeIn\")}dispose(){this._editor.removeContentWidget(this)}getId(){return\"messageoverlay\"}getDomNode(){return this._domNode}getPosition(){return{position:this._position,preference:[1,2],positionAffinity:1}}afterRender(c){this._domNode.classList.toggle(\"below\",c===2)}}(0,f.registerEditorContribution)(a.ID,a,4)}),define(ne[809],se([1,0,55,2,16,190,693]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ReadOnlyMessageController=void 0;class f extends k.Disposable{constructor(g){super(),this.editor=g,this._register(this.editor.onDidAttemptReadOnlyEdit(()=>this._onDidAttemptReadOnlyEdit()))}_onDidAttemptReadOnlyEdit(){const g=D.MessageController.get(this.editor);if(g&&this.editor.hasModel()){let C=this.editor.getOptions().get(90);C||(this.editor.isSimpleWidget?C=new L.MarkdownString(S.localize(0,null)):C=new L.MarkdownString(S.localize(1,null))),g.showMessage(C,this.editor.getPosition())}}}e.ReadOnlyMessageController=f,f.ID=\"editor.contrib.readOnlyMessageController\",(0,y.registerEditorContribution)(f.ID,f,2)}),define(ne[810],se([1,0,14,19,9,16,12,5,24,21,298,547,696,30,27,18,69,20,22]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){\"use strict\";var c;Object.defineProperty(e,\"__esModule\",{value:!0}),e.provideSelectionRanges=e.SmartSelectController=void 0;class o{constructor(w,E){this.index=w,this.ranges=E}mov(w){const E=this.index+(w?1:-1);if(E<0||E>=this.ranges.length)return this;const I=new o(E,this.ranges);return I.ranges[E].equalsRange(this.ranges[this.index])?I.mov(w):I}}let d=c=class{static get(w){return w.getContribution(c.ID)}constructor(w,E){this._editor=w,this._languageFeaturesService=E,this._ignoreSelection=!1}dispose(){var w;(w=this._selectionListener)===null||w===void 0||w.dispose()}run(w){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel())return;const E=this._editor.getSelections(),I=this._editor.getModel();if(this._state||(yield v(this._languageFeaturesService.selectionRangeProvider,I,E.map(P=>P.getPosition()),this._editor.getOption(111),k.CancellationToken.None).then(P=>{var x;if(!(!L.isNonEmptyArray(P)||P.length!==E.length)&&!(!this._editor.hasModel()||!L.equals(this._editor.getSelections(),E,(T,A)=>T.equalsSelection(A)))){for(let T=0;T<P.length;T++)P[T]=P[T].filter(A=>A.containsPosition(E[T].getStartPosition())&&A.containsPosition(E[T].getEndPosition())),P[T].unshift(E[T]);this._state=P.map(T=>new o(0,T)),(x=this._selectionListener)===null||x===void 0||x.dispose(),this._selectionListener=this._editor.onDidChangeCursorPosition(()=>{var T;this._ignoreSelection||((T=this._selectionListener)===null||T===void 0||T.dispose(),this._state=void 0)})}})),!this._state)return;this._state=this._state.map(P=>P.mov(w));const M=this._state.map(P=>_.Selection.fromPositions(P.ranges[P.index].getStartPosition(),P.ranges[P.index].getEndPosition()));this._ignoreSelection=!0;try{this._editor.setSelections(M)}finally{this._ignoreSelection=!1}})}};e.SmartSelectController=d,d.ID=\"editor.contrib.smartSelectController\",e.SmartSelectController=d=c=ke([fe(1,a.ILanguageFeaturesService)],d);class l extends D.EditorAction{constructor(w,E){super(E),this._forward=w}run(w,E){return we(this,void 0,void 0,function*(){const I=d.get(E);I&&(yield I.run(this._forward))})}}class p extends l{constructor(){super(!0,{id:\"editor.action.smartSelect.expand\",label:i.localize(0,null),alias:\"Expand Selection\",precondition:void 0,kbOpts:{kbExpr:g.EditorContextKeys.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:\"1_basic\",title:i.localize(1,null),order:2}})}}t.CommandsRegistry.registerCommandAlias(\"editor.action.smartSelect.grow\",\"editor.action.smartSelect.expand\");class m extends l{constructor(){super(!1,{id:\"editor.action.smartSelect.shrink\",label:i.localize(2,null),alias:\"Shrink Selection\",precondition:void 0,kbOpts:{kbExpr:g.EditorContextKeys.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:\"1_basic\",title:i.localize(3,null),order:3}})}}(0,D.registerEditorContribution)(d.ID,d,4),(0,D.registerEditorAction)(p),(0,D.registerEditorAction)(m);function v(b,w,E,I,M){return we(this,void 0,void 0,function*(){const P=b.all(w).concat(new s.WordSelectionRangeProvider(I.selectSubwords));P.length===1&&P.unshift(new C.BracketSelectionRangeProvider);const x=[],T=[];for(const A of P)x.push(Promise.resolve(A.provideSelectionRanges(w,E,M)).then(N=>{if(L.isNonEmptyArray(N)&&N.length===E.length)for(let F=0;F<E.length;F++){T[F]||(T[F]=[]);for(const O of N[F])f.Range.isIRange(O.range)&&f.Range.containsPosition(O.range,E[F])&&T[F].push(f.Range.lift(O.range))}},y.onUnexpectedExternalError));return yield Promise.all(x),T.map(A=>{if(A.length===0)return[];A.sort((W,U)=>S.Position.isBefore(W.getStartPosition(),U.getStartPosition())?1:S.Position.isBefore(U.getStartPosition(),W.getStartPosition())||S.Position.isBefore(W.getEndPosition(),U.getEndPosition())?-1:S.Position.isBefore(U.getEndPosition(),W.getEndPosition())?1:0);const N=[];let F;for(const W of A)(!F||f.Range.containsRange(W,F)&&!f.Range.equalsRange(W,F))&&(N.push(W),F=W);if(!I.selectLeadingAndTrailingWhitespace)return N;const O=[N[0]];for(let W=1;W<N.length;W++){const U=N[W-1],j=N[W];if(j.startLineNumber!==U.startLineNumber||j.endLineNumber!==U.endLineNumber){const R=new f.Range(U.startLineNumber,w.getLineFirstNonWhitespaceColumn(U.startLineNumber),U.endLineNumber,w.getLineLastNonWhitespaceColumn(U.endLineNumber));R.containsRange(U)&&!R.equalsRange(U)&&j.containsRange(R)&&!j.equalsRange(R)&&O.push(R);const K=new f.Range(U.startLineNumber,1,U.endLineNumber,w.getLineMaxColumn(U.endLineNumber));K.containsRange(U)&&!K.equalsRange(R)&&j.containsRange(K)&&!j.equalsRange(K)&&O.push(K)}O.push(j)}return O})})}e.provideSelectionRanges=v,t.CommandsRegistry.registerCommand(\"_executeSelectionRangeProvider\",function(b,...w){return we(this,void 0,void 0,function*(){const[E,I]=w;(0,h.assertType)(r.URI.isUri(E));const M=b.get(a.ILanguageFeaturesService).selectionRangeProvider,P=yield b.get(u.ITextModelService).createModelReference(E);try{return v(M,P.object.textEditorModel,I,{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},k.CancellationToken.None)}finally{P.dispose()}})})}),define(ne[811],se([1,0,19,72,46,2,16,33,5,18,300,135,347,301,96,8]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";var u;Object.defineProperty(e,\"__esModule\",{value:!0}),e.SuggestInlineCompletions=void 0;class h{constructor(l,p,m,v,b,w){this.range=l,this.insertText=p,this.filterText=m,this.additionalTextEdits=v,this.command=b,this.completion=w}}let r=class extends D.RefCountedDisposable{constructor(l,p,m,v,b,w){super(b.disposable),this.model=l,this.line=p,this.word=m,this.completionModel=v,this._suggestMemoryService=w}canBeReused(l,p,m){return this.model===l&&this.line===p&&this.word.word.length>0&&this.word.startColumn===m.startColumn&&this.word.endColumn<m.endColumn&&this.completionModel.getIncompleteProvider().size===0}get items(){var l;const p=[],{items:m}=this.completionModel,v=this._suggestMemoryService.select(this.model,{lineNumber:this.line,column:this.word.endColumn+this.completionModel.lineContext.characterCountDelta},m),b=y.Iterable.slice(m,v),w=y.Iterable.slice(m,0,v);let E=5;for(const I of y.Iterable.concat(b,w)){if(I.score===k.FuzzyScore.Default)continue;const M=new _.Range(I.editStart.lineNumber,I.editStart.column,I.editInsertEnd.lineNumber,I.editInsertEnd.column+this.completionModel.lineContext.characterCountDelta),P=I.completion.insertTextRules&&I.completion.insertTextRules&4?{snippet:I.completion.insertText}:I.completion.insertText;p.push(new h(M,P,(l=I.filterTextLow)!==null&&l!==void 0?l:I.labelLow,I.completion.additionalTextEdits,I.completion.command,I)),E-->=0&&I.resolve(L.CancellationToken.None)}return p}};r=ke([fe(5,i.ISuggestMemoryService)],r);let c=class{constructor(l,p,m,v){this._getEditorOption=l,this._languageFeatureService=p,this._clipboardService=m,this._suggestMemoryService=v}provideInlineCompletions(l,p,m,v){var b;return we(this,void 0,void 0,function*(){if(m.selectedSuggestionInfo)return;const w=this._getEditorOption(87,l);if(s.QuickSuggestionsOptions.isAllOff(w))return;l.tokenization.tokenizeIfCheap(p.lineNumber);const E=l.tokenization.getLineTokens(p.lineNumber),I=E.getStandardTokenType(E.findTokenIndexAtOffset(Math.max(p.column-1-1,0)));if(s.QuickSuggestionsOptions.valueFor(w,I)!==\"inline\")return;let M=l.getWordAtPosition(p),P;if(M?.word||(P=this._getTriggerCharacterInfo(l,p)),!M?.word&&!P||(M||(M=l.getWordUntilPosition(p)),M.endColumn!==p.column))return;let x;const T=l.getValueInRange(new _.Range(p.lineNumber,1,p.lineNumber,p.column));if(!P&&(!((b=this._lastResult)===null||b===void 0)&&b.canBeReused(l,p.lineNumber,M))){const A=new C.LineContext(T,p.column-this._lastResult.word.endColumn);this._lastResult.completionModel.lineContext=A,this._lastResult.acquire(),x=this._lastResult}else{const A=yield(0,s.provideSuggestionItems)(this._languageFeatureService.completionProvider,l,p,new s.CompletionOptions(void 0,void 0,P?.providers),P&&{triggerKind:1,triggerCharacter:P.ch},v);let N;A.needsClipboard&&(N=yield this._clipboardService.readText());const F=new C.CompletionModel(A.items,p.column,new C.LineContext(T,0),n.WordDistance.None,this._getEditorOption(116,l),this._getEditorOption(110,l),{boostFullMatch:!1,firstMatchCanBeWeak:!1},N);x=new r(l,p.lineNumber,M,F,A,this._suggestMemoryService)}return this._lastResult=x,x})}handleItemDidShow(l,p){p.completion.resolve(L.CancellationToken.None)}freeInlineCompletions(l){l.release()}_getTriggerCharacterInfo(l,p){var m;const v=l.getValueInRange(_.Range.fromPositions({lineNumber:p.lineNumber,column:p.column-1},p)),b=new Set;for(const w of this._languageFeatureService.completionProvider.all(l))!((m=w.triggerCharacters)===null||m===void 0)&&m.includes(v)&&b.add(w);if(b.size!==0)return{providers:b,ch:v}}};e.SuggestInlineCompletions=c,e.SuggestInlineCompletions=c=ke([fe(1,g.ILanguageFeaturesService),fe(2,t.IClipboardService),fe(3,i.ISuggestMemoryService)],c);let o=u=class{constructor(l,p,m,v){if(++u._counter===1){const b=v.createInstance(c,(w,E)=>{var I;return((I=m.listCodeEditors().find(P=>P.getModel()===E))!==null&&I!==void 0?I:l).getOption(w)});u._disposable=p.inlineCompletionsProvider.register(\"*\",b)}}dispose(){var l;--u._counter===0&&((l=u._disposable)===null||l===void 0||l.dispose(),u._disposable=void 0)}};o._counter=0,o=u=ke([fe(1,g.ILanguageFeaturesService),fe(2,f.ICodeEditorService),fe(3,a.IInstantiationService)],o),(0,S.registerEditorContribution)(\"suggest.inlineCompletionsProvider\",o,0)}),define(ne[812],se([1,0,58,16,708]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});class D extends k.EditorAction{constructor(){super({id:\"editor.action.forceRetokenize\",label:y.localize(0,null),alias:\"Developer: Force Retokenize\",precondition:void 0})}run(f,_){if(!_.hasModel())return;const g=_.getModel();g.tokenization.resetTokenization();const C=new L.StopWatch;g.tokenization.forceTokenization(g.getLineCount()),C.stop(),console.log(`tokenization took ${C.elapsed()}`)}}(0,k.registerEditorAction)(D)}),define(ne[813],se([1,0,2,45,16,33,710,156]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnusualLineTerminatorsDetector=void 0;const _=\"ignoreUnusualLineTerminators\";function g(i,n,t){i.setModelProperty(n.uri,_,t)}function C(i,n){return i.getModelProperty(n.uri,_)}let s=class extends L.Disposable{constructor(n,t,a){super(),this._editor=n,this._dialogService=t,this._codeEditorService=a,this._isPresentingDialog=!1,this._config=this._editor.getOption(124),this._register(this._editor.onDidChangeConfiguration(u=>{u.hasChanged(124)&&(this._config=this._editor.getOption(124),this._checkForUnusualLineTerminators())})),this._register(this._editor.onDidChangeModel(()=>{this._checkForUnusualLineTerminators()})),this._register(this._editor.onDidChangeModelContent(u=>{u.isUndoing||this._checkForUnusualLineTerminators()})),this._checkForUnusualLineTerminators()}_checkForUnusualLineTerminators(){return we(this,void 0,void 0,function*(){if(this._config===\"off\"||!this._editor.hasModel())return;const n=this._editor.getModel();if(!n.mightContainUnusualLineTerminators()||C(this._codeEditorService,n)===!0||this._editor.getOption(89))return;if(this._config===\"auto\"){n.removeUnusualLineTerminators(this._editor.getSelections());return}if(this._isPresentingDialog)return;let a;try{this._isPresentingDialog=!0,a=yield this._dialogService.confirm({title:S.localize(0,null),message:S.localize(1,null),detail:S.localize(2,null,(0,k.basename)(n.uri)),primaryButton:S.localize(3,null),cancelButton:S.localize(4,null)})}finally{this._isPresentingDialog=!1}if(!a.confirmed){g(this._codeEditorService,n,!0);return}n.removeUnusualLineTerminators(this._editor.getSelections())})}};e.UnusualLineTerminatorsDetector=s,s.ID=\"editor.contrib.unusualLineTerminatorsDetector\",e.UnusualLineTerminatorsDetector=s=ke([fe(1,f.IDialogService),fe(2,D.ICodeEditorService)],s),(0,y.registerEditorContribution)(s.ID,s,1)}),define(ne[353],se([1,0,16,123,36,74,178,146,12,5,24,21,32,713,84,15,238]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DeleteInsideWord=e.DeleteWordRight=e.DeleteWordEndRight=e.DeleteWordStartRight=e.DeleteWordLeft=e.DeleteWordEndLeft=e.DeleteWordStartLeft=e.DeleteWordRightCommand=e.DeleteWordLeftCommand=e.DeleteWordCommand=e.CursorWordAccessibilityRightSelect=e.CursorWordAccessibilityRight=e.CursorWordRightSelect=e.CursorWordEndRightSelect=e.CursorWordStartRightSelect=e.CursorWordRight=e.CursorWordEndRight=e.CursorWordStartRight=e.CursorWordAccessibilityLeftSelect=e.CursorWordAccessibilityLeft=e.CursorWordLeftSelect=e.CursorWordEndLeftSelect=e.CursorWordStartLeftSelect=e.CursorWordLeft=e.CursorWordEndLeft=e.CursorWordStartLeft=e.WordRightCommand=e.WordLeftCommand=e.MoveWordCommand=void 0;class h extends L.EditorCommand{constructor(H){super(H),this._inSelectionMode=H.inSelectionMode,this._wordNavigationType=H.wordNavigationType}runEditorCommand(H,B,V){if(!B.hasModel())return;const Y=(0,f.getMapForWordSeparators)(B.getOption(128)),ie=B.getModel(),ce=B.getSelections().map(de=>{const he=new _.Position(de.positionLineNumber,de.positionColumn),ue=this._move(Y,ie,he,this._wordNavigationType);return this._moveTo(de,ue,this._inSelectionMode)});if(ie.pushStackElement(),B._getViewModel().setCursorStates(\"moveWordCommand\",3,ce.map(de=>D.CursorState.fromModelSelection(de))),ce.length===1){const de=new _.Position(ce[0].positionLineNumber,ce[0].positionColumn);B.revealPosition(de,0)}}_moveTo(H,B,V){return V?new C.Selection(H.selectionStartLineNumber,H.selectionStartColumn,B.lineNumber,B.column):new C.Selection(B.lineNumber,B.column,B.lineNumber,B.column)}}e.MoveWordCommand=h;class r extends h{_move(H,B,V,Y){return S.WordOperations.moveWordLeft(H,B,V,Y)}}e.WordLeftCommand=r;class c extends h{_move(H,B,V,Y){return S.WordOperations.moveWordRight(H,B,V,Y)}}e.WordRightCommand=c;class o extends r{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:\"cursorWordStartLeft\",precondition:void 0})}}e.CursorWordStartLeft=o;class d extends r{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:\"cursorWordEndLeft\",precondition:void 0})}}e.CursorWordEndLeft=d;class l extends r{constructor(){var H;super({inSelectionMode:!1,wordNavigationType:1,id:\"cursorWordLeft\",precondition:void 0,kbOpts:{kbExpr:a.ContextKeyExpr.and(s.EditorContextKeys.textInputFocus,(H=a.ContextKeyExpr.and(t.CONTEXT_ACCESSIBILITY_MODE_ENABLED,u.IsWindowsContext))===null||H===void 0?void 0:H.negate()),primary:2063,mac:{primary:527},weight:100}})}}e.CursorWordLeft=l;class p extends r{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:\"cursorWordStartLeftSelect\",precondition:void 0})}}e.CursorWordStartLeftSelect=p;class m extends r{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:\"cursorWordEndLeftSelect\",precondition:void 0})}}e.CursorWordEndLeftSelect=m;class v extends r{constructor(){var H;super({inSelectionMode:!0,wordNavigationType:1,id:\"cursorWordLeftSelect\",precondition:void 0,kbOpts:{kbExpr:a.ContextKeyExpr.and(s.EditorContextKeys.textInputFocus,(H=a.ContextKeyExpr.and(t.CONTEXT_ACCESSIBILITY_MODE_ENABLED,u.IsWindowsContext))===null||H===void 0?void 0:H.negate()),primary:3087,mac:{primary:1551},weight:100}})}}e.CursorWordLeftSelect=v;class b extends r{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:\"cursorWordAccessibilityLeft\",precondition:void 0})}_move(H,B,V,Y){return super._move((0,f.getMapForWordSeparators)(y.EditorOptions.wordSeparators.defaultValue),B,V,Y)}}e.CursorWordAccessibilityLeft=b;class w extends r{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:\"cursorWordAccessibilityLeftSelect\",precondition:void 0})}_move(H,B,V,Y){return super._move((0,f.getMapForWordSeparators)(y.EditorOptions.wordSeparators.defaultValue),B,V,Y)}}e.CursorWordAccessibilityLeftSelect=w;class E extends c{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:\"cursorWordStartRight\",precondition:void 0})}}e.CursorWordStartRight=E;class I extends c{constructor(){var H;super({inSelectionMode:!1,wordNavigationType:2,id:\"cursorWordEndRight\",precondition:void 0,kbOpts:{kbExpr:a.ContextKeyExpr.and(s.EditorContextKeys.textInputFocus,(H=a.ContextKeyExpr.and(t.CONTEXT_ACCESSIBILITY_MODE_ENABLED,u.IsWindowsContext))===null||H===void 0?void 0:H.negate()),primary:2065,mac:{primary:529},weight:100}})}}e.CursorWordEndRight=I;class M extends c{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:\"cursorWordRight\",precondition:void 0})}}e.CursorWordRight=M;class P extends c{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:\"cursorWordStartRightSelect\",precondition:void 0})}}e.CursorWordStartRightSelect=P;class x extends c{constructor(){var H;super({inSelectionMode:!0,wordNavigationType:2,id:\"cursorWordEndRightSelect\",precondition:void 0,kbOpts:{kbExpr:a.ContextKeyExpr.and(s.EditorContextKeys.textInputFocus,(H=a.ContextKeyExpr.and(t.CONTEXT_ACCESSIBILITY_MODE_ENABLED,u.IsWindowsContext))===null||H===void 0?void 0:H.negate()),primary:3089,mac:{primary:1553},weight:100}})}}e.CursorWordEndRightSelect=x;class T extends c{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:\"cursorWordRightSelect\",precondition:void 0})}}e.CursorWordRightSelect=T;class A extends c{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:\"cursorWordAccessibilityRight\",precondition:void 0})}_move(H,B,V,Y){return super._move((0,f.getMapForWordSeparators)(y.EditorOptions.wordSeparators.defaultValue),B,V,Y)}}e.CursorWordAccessibilityRight=A;class N extends c{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:\"cursorWordAccessibilityRightSelect\",precondition:void 0})}_move(H,B,V,Y){return super._move((0,f.getMapForWordSeparators)(y.EditorOptions.wordSeparators.defaultValue),B,V,Y)}}e.CursorWordAccessibilityRightSelect=N;class F extends L.EditorCommand{constructor(H){super(H),this._whitespaceHeuristics=H.whitespaceHeuristics,this._wordNavigationType=H.wordNavigationType}runEditorCommand(H,B,V){const Y=H.get(i.ILanguageConfigurationService);if(!B.hasModel())return;const ie=(0,f.getMapForWordSeparators)(B.getOption(128)),ae=B.getModel(),ce=B.getSelections(),de=B.getOption(6),he=B.getOption(10),ue=Y.getLanguageConfiguration(ae.getLanguageId()).getAutoClosingPairs(),te=B._getViewModel(),q=ce.map(z=>{const ee=this._delete({wordSeparators:ie,model:ae,selection:z,whitespaceHeuristics:this._whitespaceHeuristics,autoClosingDelete:B.getOption(8),autoClosingBrackets:de,autoClosingQuotes:he,autoClosingPairs:ue,autoClosedCharacters:te.getCursorAutoClosedCharacters()},this._wordNavigationType);return new k.ReplaceCommand(ee,\"\")});B.pushUndoStop(),B.executeCommands(this.id,q),B.pushUndoStop()}}e.DeleteWordCommand=F;class O extends F{_delete(H,B){const V=S.WordOperations.deleteWordLeft(H,B);return V||new g.Range(1,1,1,1)}}e.DeleteWordLeftCommand=O;class W extends F{_delete(H,B){const V=S.WordOperations.deleteWordRight(H,B);if(V)return V;const Y=H.model.getLineCount(),ie=H.model.getLineMaxColumn(Y);return new g.Range(Y,ie,Y,ie)}}e.DeleteWordRightCommand=W;class U extends O{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:\"deleteWordStartLeft\",precondition:s.EditorContextKeys.writable})}}e.DeleteWordStartLeft=U;class j extends O{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:\"deleteWordEndLeft\",precondition:s.EditorContextKeys.writable})}}e.DeleteWordEndLeft=j;class R extends O{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:\"deleteWordLeft\",precondition:s.EditorContextKeys.writable,kbOpts:{kbExpr:s.EditorContextKeys.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}}e.DeleteWordLeft=R;class K extends W{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:\"deleteWordStartRight\",precondition:s.EditorContextKeys.writable})}}e.DeleteWordStartRight=K;class G extends W{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:\"deleteWordEndRight\",precondition:s.EditorContextKeys.writable})}}e.DeleteWordEndRight=G;class Z extends W{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:\"deleteWordRight\",precondition:s.EditorContextKeys.writable,kbOpts:{kbExpr:s.EditorContextKeys.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}}e.DeleteWordRight=Z;class J extends L.EditorAction{constructor(){super({id:\"deleteInsideWord\",precondition:s.EditorContextKeys.writable,label:n.localize(0,null),alias:\"Delete Word\"})}run(H,B,V){if(!B.hasModel())return;const Y=(0,f.getMapForWordSeparators)(B.getOption(128)),ie=B.getModel(),ce=B.getSelections().map(de=>{const he=S.WordOperations.deleteInsideWord(Y,ie,de);return new k.ReplaceCommand(he,\"\")});B.pushUndoStop(),B.executeCommands(this.id,ce),B.pushUndoStop()}}e.DeleteInsideWord=J,(0,L.registerEditorCommand)(new o),(0,L.registerEditorCommand)(new d),(0,L.registerEditorCommand)(new l),(0,L.registerEditorCommand)(new p),(0,L.registerEditorCommand)(new m),(0,L.registerEditorCommand)(new v),(0,L.registerEditorCommand)(new E),(0,L.registerEditorCommand)(new I),(0,L.registerEditorCommand)(new M),(0,L.registerEditorCommand)(new P),(0,L.registerEditorCommand)(new x),(0,L.registerEditorCommand)(new T),(0,L.registerEditorCommand)(new b),(0,L.registerEditorCommand)(new w),(0,L.registerEditorCommand)(new A),(0,L.registerEditorCommand)(new N),(0,L.registerEditorCommand)(new U),(0,L.registerEditorCommand)(new j),(0,L.registerEditorCommand)(new R),(0,L.registerEditorCommand)(new K),(0,L.registerEditorCommand)(new G),(0,L.registerEditorCommand)(new Z),(0,L.registerEditorAction)(J)}),define(ne[814],se([1,0,16,178,5,21,353,27]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CursorWordPartRightSelect=e.CursorWordPartRight=e.WordPartRightCommand=e.CursorWordPartLeftSelect=e.CursorWordPartLeft=e.WordPartLeftCommand=e.DeleteWordPartRight=e.DeleteWordPartLeft=void 0;class _ extends S.DeleteWordCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:\"deleteWordPartLeft\",precondition:D.EditorContextKeys.writable,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:769},weight:100}})}_delete(h,r){const c=k.WordPartOperations.deleteWordPartLeft(h);return c||new y.Range(1,1,1,1)}}e.DeleteWordPartLeft=_;class g extends S.DeleteWordCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:\"deleteWordPartRight\",precondition:D.EditorContextKeys.writable,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:788},weight:100}})}_delete(h,r){const c=k.WordPartOperations.deleteWordPartRight(h);if(c)return c;const o=h.model.getLineCount(),d=h.model.getLineMaxColumn(o);return new y.Range(o,d,o,d)}}e.DeleteWordPartRight=g;class C extends S.MoveWordCommand{_move(h,r,c,o){return k.WordPartOperations.moveWordPartLeft(h,r,c)}}e.WordPartLeftCommand=C;class s extends C{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:\"cursorWordPartLeft\",precondition:void 0,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:783},weight:100}})}}e.CursorWordPartLeft=s,f.CommandsRegistry.registerCommandAlias(\"cursorWordPartStartLeft\",\"cursorWordPartLeft\");class i extends C{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:\"cursorWordPartLeftSelect\",precondition:void 0,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}}e.CursorWordPartLeftSelect=i,f.CommandsRegistry.registerCommandAlias(\"cursorWordPartStartLeftSelect\",\"cursorWordPartLeftSelect\");class n extends S.MoveWordCommand{_move(h,r,c,o){return k.WordPartOperations.moveWordPartRight(h,r,c)}}e.WordPartRightCommand=n;class t extends n{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:\"cursorWordPartRight\",precondition:void 0,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:785},weight:100}})}}e.CursorWordPartRight=t;class a extends n{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:\"cursorWordPartRightSelect\",precondition:void 0,kbOpts:{kbExpr:D.EditorContextKeys.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}}e.CursorWordPartRightSelect=a,(0,L.registerEditorCommand)(new _),(0,L.registerEditorCommand)(new g),(0,L.registerEditorCommand)(new s),(0,L.registerEditorCommand)(new i),(0,L.registerEditorCommand)(new t),(0,L.registerEditorCommand)(new a)}),define(ne[815],se([1,0,7,2,16,17,468]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IPadShowKeyboard=void 0;class S extends k.Disposable{constructor(g){super(),this.editor=g,this.widget=null,D.isIOS&&(this._register(g.onDidChangeConfiguration(()=>this.update())),this.update())}update(){const g=!this.editor.getOption(89);!this.widget&&g?this.widget=new f(this.editor):this.widget&&!g&&(this.widget.dispose(),this.widget=null)}dispose(){super.dispose(),this.widget&&(this.widget.dispose(),this.widget=null)}}e.IPadShowKeyboard=S,S.ID=\"editor.contrib.iPadShowKeyboard\";class f extends k.Disposable{constructor(g){super(),this.editor=g,this._domNode=document.createElement(\"textarea\"),this._domNode.className=\"iPadShowKeyboard\",this._register(L.addDisposableListener(this._domNode,\"touchstart\",C=>{this.editor.focus()})),this._register(L.addDisposableListener(this._domNode,\"focus\",C=>{this.editor.focus()})),this.editor.addOverlayWidget(this)}dispose(){this.editor.removeOverlayWidget(this),super.dispose()}getId(){return f.ID}getDomNode(){return this._domNode}getPosition(){return{preference:1}}}f.ID=\"editor.contrib.ShowKeyboardWidget\",(0,y.registerEditorContribution)(S.ID,S,3)}),define(ne[816],se([1,0,7,38,2,16,29,124,154,41,133,94,469]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";var i;Object.defineProperty(e,\"__esModule\",{value:!0});let n=i=class extends y.Disposable{static get(c){return c.getContribution(i.ID)}constructor(c,o,d){super(),this._editor=c,this._languageService=d,this._widget=null,this._register(this._editor.onDidChangeModel(l=>this.stop())),this._register(this._editor.onDidChangeModelLanguage(l=>this.stop())),this._register(S.TokenizationRegistry.onDidChange(l=>this.stop())),this._register(this._editor.onKeyUp(l=>l.keyCode===9&&this.stop()))}dispose(){this.stop(),super.dispose()}launch(){this._widget||this._editor.hasModel()&&(this._widget=new h(this._editor,this._languageService))}stop(){this._widget&&(this._widget.dispose(),this._widget=null)}};n.ID=\"editor.contrib.inspectTokens\",n=i=ke([fe(1,C.IStandaloneThemeService),fe(2,g.ILanguageService)],n);class t extends D.EditorAction{constructor(){super({id:\"editor.action.inspectTokens\",label:s.InspectTokensNLS.inspectTokensAction,alias:\"Developer: Inspect Tokens\",precondition:void 0})}run(c,o){const d=n.get(o);d?.launch()}}function a(r){let c=\"\";for(let o=0,d=r.length;o<d;o++){const l=r.charCodeAt(o);switch(l){case 9:c+=\"\\u2192\";break;case 32:c+=\"\\xB7\";break;default:c+=String.fromCharCode(l)}}return c}function u(r,c){const o=S.TokenizationRegistry.get(c);if(o)return o;const d=r.encodeLanguageId(c);return{getInitialState:()=>_.NullState,tokenize:(l,p,m)=>(0,_.nullTokenize)(c,m),tokenizeEncoded:(l,p,m)=>(0,_.nullTokenizeEncoded)(d,m)}}class h extends y.Disposable{constructor(c,o){super(),this.allowEditorOverflow=!0,this._editor=c,this._languageService=o,this._model=this._editor.getModel(),this._domNode=document.createElement(\"div\"),this._domNode.className=\"tokens-inspect-widget\",this._tokenizationSupport=u(this._languageService.languageIdCodec,this._model.getLanguageId()),this._compute(this._editor.getPosition()),this._register(this._editor.onDidChangeCursorPosition(d=>this._compute(this._editor.getPosition()))),this._editor.addContentWidget(this)}dispose(){this._editor.removeContentWidget(this),super.dispose()}getId(){return h._ID}_compute(c){const o=this._getTokensAtLine(c.lineNumber);let d=0;for(let b=o.tokens1.length-1;b>=0;b--){const w=o.tokens1[b];if(c.column-1>=w.offset){d=b;break}}let l=0;for(let b=o.tokens2.length>>>1;b>=0;b--)if(c.column-1>=o.tokens2[b<<1]){l=b;break}const p=this._model.getLineContent(c.lineNumber);let m=\"\";if(d<o.tokens1.length){const b=o.tokens1[d].offset,w=d+1<o.tokens1.length?o.tokens1[d+1].offset:p.length;m=p.substring(b,w)}(0,L.reset)(this._domNode,(0,L.$)(\"h2.tm-token\",void 0,a(m),(0,L.$)(\"span.tm-token-length\",void 0,`${m.length} ${m.length===1?\"char\":\"chars\"}`))),(0,L.append)(this._domNode,(0,L.$)(\"hr.tokens-inspect-separator\",{style:\"clear:both\"}));const v=(l<<1)+1<o.tokens2.length?this._decodeMetadata(o.tokens2[(l<<1)+1]):null;(0,L.append)(this._domNode,(0,L.$)(\"table.tm-metadata-table\",void 0,(0,L.$)(\"tbody\",void 0,(0,L.$)(\"tr\",void 0,(0,L.$)(\"td.tm-metadata-key\",void 0,\"language\"),(0,L.$)(\"td.tm-metadata-value\",void 0,`${v?v.languageId:\"-?-\"}`)),(0,L.$)(\"tr\",void 0,(0,L.$)(\"td.tm-metadata-key\",void 0,\"token type\"),(0,L.$)(\"td.tm-metadata-value\",void 0,`${v?this._tokenTypeToString(v.tokenType):\"-?-\"}`)),(0,L.$)(\"tr\",void 0,(0,L.$)(\"td.tm-metadata-key\",void 0,\"font style\"),(0,L.$)(\"td.tm-metadata-value\",void 0,`${v?this._fontStyleToString(v.fontStyle):\"-?-\"}`)),(0,L.$)(\"tr\",void 0,(0,L.$)(\"td.tm-metadata-key\",void 0,\"foreground\"),(0,L.$)(\"td.tm-metadata-value\",void 0,`${v?k.Color.Format.CSS.formatHex(v.foreground):\"-?-\"}`)),(0,L.$)(\"tr\",void 0,(0,L.$)(\"td.tm-metadata-key\",void 0,\"background\"),(0,L.$)(\"td.tm-metadata-value\",void 0,`${v?k.Color.Format.CSS.formatHex(v.background):\"-?-\"}`))))),(0,L.append)(this._domNode,(0,L.$)(\"hr.tokens-inspect-separator\")),d<o.tokens1.length&&(0,L.append)(this._domNode,(0,L.$)(\"span.tm-token-type\",void 0,o.tokens1[d].type)),this._editor.layoutContentWidget(this)}_decodeMetadata(c){const o=S.TokenizationRegistry.getColorMap(),d=f.TokenMetadata.getLanguageId(c),l=f.TokenMetadata.getTokenType(c),p=f.TokenMetadata.getFontStyle(c),m=f.TokenMetadata.getForeground(c),v=f.TokenMetadata.getBackground(c);return{languageId:this._languageService.languageIdCodec.decodeLanguageId(d),tokenType:l,fontStyle:p,foreground:o[m],background:o[v]}}_tokenTypeToString(c){switch(c){case 0:return\"Other\";case 1:return\"Comment\";case 2:return\"String\";case 3:return\"RegEx\";default:return\"??\"}}_fontStyleToString(c){let o=\"\";return c&1&&(o+=\"italic \"),c&2&&(o+=\"bold \"),c&4&&(o+=\"underline \"),c&8&&(o+=\"strikethrough \"),o.length===0&&(o=\"---\"),o}_getTokensAtLine(c){const o=this._getStateBeforeLine(c),d=this._tokenizationSupport.tokenize(this._model.getLineContent(c),!0,o),l=this._tokenizationSupport.tokenizeEncoded(this._model.getLineContent(c),!0,o);return{startState:o,tokens1:d.tokens,tokens2:l.tokens,endState:d.endState}}_getStateBeforeLine(c){let o=this._tokenizationSupport.getInitialState();for(let d=1;d<c;d++)o=this._tokenizationSupport.tokenize(this._model.getLineContent(d),!0,o).endState;return o}getDomNode(){return this._domNode}getPosition(){return{position:this._editor.getPosition(),preference:[2,1]}}}h._ID=\"editor.contrib.inspectTokensWidget\",(0,D.registerEditorContribution)(n.ID,n,4),(0,D.registerEditorAction)(t)}),define(ne[817],se([1,0,7,60,584,39,14,2,718,30,15,57,34,79]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WorkbenchToolBar=void 0;let t=class extends y.ToolBar{constructor(u,h,r,c,o,d,l){super(u,o,Object.assign(Object.assign({getKeyBinding:m=>{var v;return(v=d.lookupKeybinding(m.id))!==null&&v!==void 0?v:void 0}},h),{allowContextMenu:!0,skipTelemetry:typeof h?.telemetrySource==\"string\"})),this._options=h,this._menuService=r,this._contextKeyService=c,this._contextMenuService=o,this._sessionDisposables=this._store.add(new f.DisposableStore);const p=h?.telemetrySource;p&&this._store.add(this.actionBar.onDidRun(m=>l.publicLog2(\"workbenchActionExecuted\",{id:m.action.id,from:p})))}setActions(u,h=[],r){var c,o,d;this._sessionDisposables.clear();const l=u.slice(),p=h.slice(),m=[];let v=0;const b=[];let w=!1;if(((c=this._options)===null||c===void 0?void 0:c.hiddenItemStrategy)!==-1)for(let E=0;E<l.length;E++){const I=l[E];!(I instanceof g.MenuItemAction)&&!(I instanceof g.SubmenuItemAction)||I.hideActions&&(m.push(I.hideActions.toggle),I.hideActions.toggle.checked&&v++,I.hideActions.isHidden&&(w=!0,l[E]=void 0,((o=this._options)===null||o===void 0?void 0:o.hiddenItemStrategy)!==0&&(b[E]=I)))}if(((d=this._options)===null||d===void 0?void 0:d.maxNumberOfItems)!==void 0){let E=0;for(let I=0;I<l.length;I++){const M=l[I];M&&++E>=this._options.maxNumberOfItems&&(l[I]=void 0,b[I]=M)}}(0,S.coalesceInPlace)(l),(0,S.coalesceInPlace)(b),super.setActions(l,D.Separator.join(b,p)),m.length>0&&this._sessionDisposables.add((0,L.addDisposableListener)(this.getElement(),\"contextmenu\",E=>{var I,M,P,x,T;const A=new k.StandardMouseEvent(E),N=this.getItemAction(A.target);if(!N)return;A.preventDefault(),A.stopPropagation();let F=!1;if(v===1&&((I=this._options)===null||I===void 0?void 0:I.hiddenItemStrategy)===0){F=!0;for(let U=0;U<m.length;U++)if(m[U].checked){m[U]=(0,D.toAction)({id:N.id,label:N.label,checked:!0,enabled:!1,run(){}});break}}let O;if(!F&&(N instanceof g.MenuItemAction||N instanceof g.SubmenuItemAction)){if(!N.hideActions)return;O=N.hideActions.hide}else O=(0,D.toAction)({id:\"label\",label:(0,_.localize)(0,null),enabled:!1,run(){}});const W=D.Separator.join([O],m);!((M=this._options)===null||M===void 0)&&M.resetMenu&&!r&&(r=[this._options.resetMenu]),w&&r&&(W.push(new D.Separator),W.push((0,D.toAction)({id:\"resetThisMenu\",label:(0,_.localize)(1,null),run:()=>this._menuService.resetHiddenStates(r)}))),this._contextMenuService.showContextMenu({getAnchor:()=>A,getActions:()=>W,menuId:(P=this._options)===null||P===void 0?void 0:P.contextMenu,menuActionOptions:Object.assign({renderShortTitle:!0},(x=this._options)===null||x===void 0?void 0:x.menuOptions),skipTelemetry:typeof((T=this._options)===null||T===void 0?void 0:T.telemetrySource)==\"string\",contextKeyService:this._contextKeyService})}))}};e.WorkbenchToolBar=t,e.WorkbenchToolBar=t=ke([fe(2,g.IMenuService),fe(3,C.IContextKeyService),fe(4,s.IContextMenuService),fe(5,i.IKeybindingService),fe(6,n.ITelemetryService)],t)}),define(ne[818],se([1,0,564,9,72,2,65,730,27,28,156,8,34,771,87,79]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";var u,h;Object.defineProperty(e,\"__esModule\",{value:!0}),e.CommandsHistory=e.AbstractCommandsQuickAccessProvider=void 0;let r=u=class extends n.PickerQuickAccessProvider{constructor(d,l,p,m,v,b){super(u.PREFIX,d),this.instantiationService=l,this.keybindingService=p,this.commandService=m,this.telemetryService=v,this.dialogService=b,this.commandsHistory=this._register(this.instantiationService.createInstance(c)),this.options=d}_getPicks(d,l,p,m){var v,b,w,E;return we(this,void 0,void 0,function*(){const I=yield this.getCommandPicks(p);if(p.isCancellationRequested)return[];const M=[];for(const N of I){const F=(v=u.WORD_FILTER(d,N.label))!==null&&v!==void 0?v:void 0,O=N.commandAlias&&(b=u.WORD_FILTER(d,N.commandAlias))!==null&&b!==void 0?b:void 0;F||O?(N.highlights={label:F,detail:this.options.showAlias?O:void 0},M.push(N)):d===N.commandId&&M.push(N)}const P=new Map;for(const N of M){const F=P.get(N.label);F?(N.description=N.commandId,F.description=F.commandId):P.set(N.label,N)}M.sort((N,F)=>{const O=this.commandsHistory.peek(N.commandId),W=this.commandsHistory.peek(F.commandId);if(O&&W)return O>W?-1:1;if(O)return-1;if(W)return 1;if(this.options.suggestedCommandIds){const U=this.options.suggestedCommandIds.has(N.commandId),j=this.options.suggestedCommandIds.has(F.commandId);if(U&&j)return 0;if(U)return-1;if(j)return 1}return N.label.localeCompare(F.label)});const x=[];let T=!1,A=!!this.options.suggestedCommandIds;for(let N=0;N<M.length;N++){const F=M[N];N===0&&this.commandsHistory.peek(F.commandId)&&(x.push({type:\"separator\",label:(0,f.localize)(0,null)}),T=!0),A&&!this.commandsHistory.peek(F.commandId)&&(!((w=this.options.suggestedCommandIds)===null||w===void 0)&&w.has(F.commandId))&&(x.push({type:\"separator\",label:(0,f.localize)(1,null)}),T=!0,A=!1),T&&!this.commandsHistory.peek(F.commandId)&&!(!((E=this.options.suggestedCommandIds)===null||E===void 0)&&E.has(F.commandId))&&(x.push({type:\"separator\",label:(0,f.localize)(2,null)}),T=!1),x.push(this.toCommandPick(F,m))}return this.hasAdditionalCommandPicks(d,p)?{picks:x,additionalPicks:(()=>we(this,void 0,void 0,function*(){const N=yield this.getAdditionalCommandPicks(I,M,d,p);return p.isCancellationRequested?[]:N.map(F=>this.toCommandPick(F,m))}))()}:x})}toCommandPick(d,l){if(d.type===\"separator\")return d;const p=this.keybindingService.lookupKeybinding(d.commandId),m=p?(0,f.localize)(3,null,d.label,p.getAriaLabel()):d.label;return Object.assign(Object.assign({},d),{ariaLabel:m,detail:this.options.showAlias&&d.commandAlias!==d.label?d.commandAlias:void 0,keybinding:p,accept:()=>we(this,void 0,void 0,function*(){var v,b;this.commandsHistory.push(d.commandId),this.telemetryService.publicLog2(\"workbenchActionExecuted\",{id:d.commandId,from:(v=l?.from)!==null&&v!==void 0?v:\"quick open\"});try{!((b=d.args)===null||b===void 0)&&b.length?yield this.commandService.executeCommand(d.commandId,...d.args):yield this.commandService.executeCommand(d.commandId)}catch(w){(0,k.isCancellationError)(w)||this.dialogService.error((0,f.localize)(4,null,d.label),(0,L.toErrorMessage)(w))}})})}};e.AbstractCommandsQuickAccessProvider=r,r.PREFIX=\">\",r.WORD_FILTER=(0,y.or)(y.matchesPrefix,y.matchesWords,y.matchesContiguousSubString),e.AbstractCommandsQuickAccessProvider=r=u=ke([fe(1,s.IInstantiationService),fe(2,i.IKeybindingService),fe(3,_.ICommandService),fe(4,a.ITelemetryService),fe(5,C.IDialogService)],r);let c=h=class extends D.Disposable{constructor(d,l){super(),this.storageService=d,this.configurationService=l,this.configuredCommandsHistoryLength=0,this.updateConfiguration(),this.load(),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(d=>this.updateConfiguration(d)))}updateConfiguration(d){d&&!d.affectsConfiguration(\"workbench.commandPalette.history\")||(this.configuredCommandsHistoryLength=h.getConfiguredCommandHistoryLength(this.configurationService),h.cache&&h.cache.limit!==this.configuredCommandsHistoryLength&&(h.cache.limit=this.configuredCommandsHistoryLength,h.saveState(this.storageService)))}load(){const d=this.storageService.get(h.PREF_KEY_CACHE,0);let l;if(d)try{l=JSON.parse(d)}catch{}const p=h.cache=new S.LRUCache(this.configuredCommandsHistoryLength,1);if(l){let m;l.usesLRU?m=l.entries:m=l.entries.sort((v,b)=>v.value-b.value),m.forEach(v=>p.set(v.key,v.value))}h.counter=this.storageService.getNumber(h.PREF_KEY_COUNTER,0,h.counter)}push(d){h.cache&&(h.cache.set(d,h.counter++),h.saveState(this.storageService))}peek(d){var l;return(l=h.cache)===null||l===void 0?void 0:l.peek(d)}static saveState(d){if(!h.cache)return;const l={usesLRU:!0,entries:[]};h.cache.forEach((p,m)=>l.entries.push({key:m,value:p})),d.store(h.PREF_KEY_CACHE,JSON.stringify(l),0,0),d.store(h.PREF_KEY_COUNTER,h.counter,0,0)}static getConfiguredCommandHistoryLength(d){var l,p;const v=(p=(l=d.getValue().workbench)===null||l===void 0?void 0:l.commandPalette)===null||p===void 0?void 0:p.history;return typeof v==\"number\"?v:h.DEFAULT_COMMANDS_HISTORY_LENGTH}};e.CommandsHistory=c,c.DEFAULT_COMMANDS_HISTORY_LENGTH=50,c.PREF_KEY_CACHE=\"commandPalette.mru.cache\",c.PREF_KEY_COUNTER=\"commandPalette.mru.counter\",c.counter=1,e.CommandsHistory=c=h=ke([fe(0,t.IStorageService),fe(1,g.IConfigurationService)],c)}),define(ne[819],se([1,0,120,818]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractEditorCommandsQuickAccessProvider=void 0;class y extends k.AbstractCommandsQuickAccessProvider{constructor(S,f,_,g,C,s){super(S,f,_,g,C,s)}getCodeEditorCommandPicks(){const S=this.activeTextEditorControl;if(!S)return[];const f=[];for(const _ of S.getSupportedActions())f.push({commandId:_.id,commandAlias:_.alias,label:(0,L.stripIcons)(_.label)||_.id});return f}}e.AbstractEditorCommandsQuickAccessProvider=y}),define(ne[820],se([1,0,37,136,94,33,819,8,34,27,79,156,16,21,71]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.GotoLineAction=e.StandaloneCommandsQuickAccessProvider=void 0;let a=class extends S.AbstractEditorCommandsQuickAccessProvider{get activeTextEditorControl(){var r;return(r=this.codeEditorService.getFocusedCodeEditor())!==null&&r!==void 0?r:void 0}constructor(r,c,o,d,l,p){super({showAlias:!1},r,o,d,l,p),this.codeEditorService=c}getCommandPicks(){return we(this,void 0,void 0,function*(){return this.getCodeEditorCommandPicks()})}hasAdditionalCommandPicks(){return!1}getAdditionalCommandPicks(){return we(this,void 0,void 0,function*(){return[]})}};e.StandaloneCommandsQuickAccessProvider=a,e.StandaloneCommandsQuickAccessProvider=a=ke([fe(0,f.IInstantiationService),fe(1,D.ICodeEditorService),fe(2,_.IKeybindingService),fe(3,g.ICommandService),fe(4,C.ITelemetryService),fe(5,s.IDialogService)],a);class u extends i.EditorAction{constructor(){super({id:u.ID,label:y.QuickCommandNLS.quickCommandActionLabel,alias:\"Command Palette\",precondition:void 0,kbOpts:{kbExpr:n.EditorContextKeys.focus,primary:59,weight:100},contextMenuOpts:{group:\"z_commands\",order:1}})}run(r){r.get(t.IQuickInputService).quickAccess.show(a.PREFIX)}}e.GotoLineAction=u,u.ID=\"editor.action.quickCommand\",(0,i.registerEditorAction)(u),L.Registry.as(k.Extensions.Quickaccess).registerQuickAccessProvider({ctor:a,prefix:a.PREFIX,helpEntries:[{description:y.QuickCommandNLS.quickCommandHelp,commandId:u.ID}]})}),define(ne[31],se([1,0,13,38,6,85,736,240,37]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.workbenchColorsSchemaId=e.resolveColorValue=e.ifDefinedThenElse=e.oneOf=e.transparent=e.lighten=e.darken=e.executeTransform=e.chartsPurple=e.chartsGreen=e.chartsOrange=e.chartsYellow=e.chartsBlue=e.chartsRed=e.chartsLines=e.chartsForeground=e.problemsInfoIconForeground=e.problemsWarningIconForeground=e.problemsErrorIconForeground=e.minimapSliderActiveBackground=e.minimapSliderHoverBackground=e.minimapSliderBackground=e.minimapForegroundOpacity=e.minimapBackground=e.minimapWarning=e.minimapError=e.minimapSelection=e.minimapSelectionOccurrenceHighlight=e.minimapFindMatch=e.overviewRulerSelectionHighlightForeground=e.overviewRulerFindMatchForeground=e.overviewRulerCommonContentForeground=e.overviewRulerIncomingContentForeground=e.overviewRulerCurrentContentForeground=e.mergeBorder=e.mergeCommonContentBackground=e.mergeCommonHeaderBackground=e.mergeIncomingContentBackground=e.mergeIncomingHeaderBackground=e.mergeCurrentContentBackground=e.mergeCurrentHeaderBackground=e.breadcrumbsPickerBackground=e.breadcrumbsActiveSelectionForeground=e.breadcrumbsFocusForeground=e.breadcrumbsBackground=e.breadcrumbsForeground=e.snippetFinalTabstopHighlightBorder=e.snippetFinalTabstopHighlightBackground=e.snippetTabstopHighlightBorder=e.snippetTabstopHighlightBackground=e.toolbarActiveBackground=e.toolbarHoverOutline=e.toolbarHoverBackground=e.menuSeparatorBackground=e.menuSelectionBorder=e.menuSelectionBackground=e.menuSelectionForeground=e.menuBackground=e.menuForeground=e.menuBorder=e.quickInputListFocusBackground=e.quickInputListFocusIconForeground=e.quickInputListFocusForeground=e._deprecatedQuickInputListFocusBackground=e.checkboxSelectBorder=e.checkboxBorder=e.checkboxForeground=e.checkboxSelectBackground=e.checkboxBackground=e.listDeemphasizedForeground=e.tableOddRowsBackgroundColor=e.tableColumnsBorder=e.treeInactiveIndentGuidesStroke=e.treeIndentGuidesStroke=e.listFilterMatchHighlightBorder=e.listFilterMatchHighlight=e.listFilterWidgetShadow=e.listFilterWidgetNoMatchesOutline=e.listFilterWidgetOutline=e.listFilterWidgetBackground=e.listWarningForeground=e.listErrorForeground=e.listInvalidItemForeground=e.listFocusHighlightForeground=e.listHighlightForeground=e.listDropBackground=e.listHoverForeground=e.listHoverBackground=e.listInactiveFocusOutline=e.listInactiveFocusBackground=e.listInactiveSelectionIconForeground=e.listInactiveSelectionForeground=e.listInactiveSelectionBackground=e.listActiveSelectionIconForeground=e.listActiveSelectionForeground=e.listActiveSelectionBackground=e.listFocusAndSelectionOutline=e.listFocusOutline=e.listFocusForeground=e.listFocusBackground=e.diffUnchangedTextBackground=e.diffUnchangedRegionForeground=e.diffUnchangedRegionBackground=e.diffDiagonalFill=e.diffBorder=e.diffRemovedOutline=e.diffInsertedOutline=e.diffOverviewRulerRemoved=e.diffOverviewRulerInserted=e.diffRemovedLineGutter=e.diffInsertedLineGutter=e.diffRemovedLine=e.diffInsertedLine=e.diffRemoved=e.diffInserted=e.defaultRemoveColor=e.defaultInsertColor=e.editorLightBulbAutoFixForeground=e.editorLightBulbForeground=e.editorInlayHintParameterBackground=e.editorInlayHintParameterForeground=e.editorInlayHintTypeBackground=e.editorInlayHintTypeForeground=e.editorInlayHintBackground=e.editorInlayHintForeground=e.editorActiveLinkForeground=e.editorHoverStatusBarBackground=e.editorHoverBorder=e.editorHoverForeground=e.editorHoverBackground=e.editorHoverHighlight=e.searchResultsInfoForeground=e.searchEditorFindMatchBorder=e.searchEditorFindMatch=e.editorFindRangeHighlightBorder=e.editorFindMatchHighlightBorder=e.editorFindMatchBorder=e.editorFindRangeHighlight=e.editorFindMatchHighlight=e.editorFindMatch=e.editorSelectionHighlightBorder=e.editorSelectionHighlight=e.editorInactiveSelection=e.editorSelectionForeground=e.editorSelectionBackground=e.keybindingLabelBottomBorder=e.keybindingLabelBorder=e.keybindingLabelForeground=e.keybindingLabelBackground=e.pickerGroupBorder=e.pickerGroupForeground=e.quickInputTitleBackground=e.quickInputForeground=e.quickInputBackground=e.editorWidgetResizeBorder=e.editorWidgetBorder=e.editorWidgetForeground=e.editorWidgetBackground=e.editorStickyScrollHoverBackground=e.editorStickyScrollBackground=e.editorForeground=e.editorBackground=e.sashHoverBorder=e.editorHintBorder=e.editorHintForeground=e.editorInfoBorder=e.editorInfoForeground=e.editorInfoBackground=e.editorWarningBorder=e.editorWarningForeground=e.editorWarningBackground=e.editorErrorBorder=e.editorErrorForeground=e.editorErrorBackground=e.progressBarBackground=e.scrollbarSliderActiveBackground=e.scrollbarSliderHoverBackground=e.scrollbarSliderBackground=e.scrollbarShadow=e.badgeForeground=e.badgeBackground=e.buttonSecondaryHoverBackground=e.buttonSecondaryBackground=e.buttonSecondaryForeground=e.buttonBorder=e.buttonHoverBackground=e.buttonBackground=e.buttonSeparator=e.buttonForeground=e.selectBorder=e.selectForeground=e.selectListBackground=e.selectBackground=e.inputValidationErrorBorder=e.inputValidationErrorForeground=e.inputValidationErrorBackground=e.inputValidationWarningBorder=e.inputValidationWarningForeground=e.inputValidationWarningBackground=e.inputValidationInfoBorder=e.inputValidationInfoForeground=e.inputValidationInfoBackground=e.inputPlaceholderForeground=e.inputActiveOptionForeground=e.inputActiveOptionBackground=e.inputActiveOptionHoverBackground=e.inputActiveOptionBorder=e.inputBorder=e.inputForeground=e.inputBackground=e.widgetBorder=e.widgetShadow=e.textCodeBlockBackground=e.textBlockQuoteBorder=e.textBlockQuoteBackground=e.textPreformatForeground=e.textLinkActiveForeground=e.textLinkForeground=e.textSeparatorForeground=e.selectionBackground=e.activeContrastBorder=e.contrastBorder=e.focusBorder=e.iconForeground=e.descriptionForeground=e.errorForeground=e.disabledForeground=e.foreground=e.registerColor=e.Extensions=e.asCssVariableWithDefault=e.asCssVariable=e.asCssVariableName=void 0;function g(P){return`--vscode-${P.replace(/\\./g,\"-\")}`}e.asCssVariableName=g;function C(P){return`var(${g(P)})`}e.asCssVariable=C;function s(P,x){return`var(${g(P)}, ${x})`}e.asCssVariableWithDefault=s,e.Extensions={ColorContribution:\"base.contributions.colors\"};class i{constructor(){this._onDidChangeSchema=new y.Emitter,this.onDidChangeSchema=this._onDidChangeSchema.event,this.colorSchema={type:\"object\",properties:{}},this.colorReferenceSchema={type:\"string\",enum:[],enumDescriptions:[]},this.colorsById={}}registerColor(x,T,A,N=!1,F){const O={id:x,description:A,defaults:T,needsTransparency:N,deprecationMessage:F};this.colorsById[x]=O;const W={type:\"string\",description:A,format:\"color-hex\",defaultSnippets:[{body:\"${1:#ff0000}\"}]};return F&&(W.deprecationMessage=F),this.colorSchema.properties[x]=W,this.colorReferenceSchema.enum.push(x),this.colorReferenceSchema.enumDescriptions.push(A),this._onDidChangeSchema.fire(),x}getColors(){return Object.keys(this.colorsById).map(x=>this.colorsById[x])}resolveDefaultColor(x,T){const A=this.colorsById[x];if(A&&A.defaults){const N=A.defaults[T.type];return E(N,T)}}getColorSchema(){return this.colorSchema}toString(){const x=(T,A)=>{const N=T.indexOf(\".\")===-1?0:1,F=A.indexOf(\".\")===-1?0:1;return N!==F?N-F:T.localeCompare(A)};return Object.keys(this.colorsById).sort(x).map(T=>`- \\`${T}\\`: ${this.colorsById[T].description}`).join(`\n`)}}const n=new i;_.Registry.add(e.Extensions.ColorContribution,n);function t(P,x,T,A,N){return n.registerColor(P,x,T,A,N)}e.registerColor=t,e.foreground=t(\"foreground\",{dark:\"#CCCCCC\",light:\"#616161\",hcDark:\"#FFFFFF\",hcLight:\"#292929\"},S.localize(0,null)),e.disabledForeground=t(\"disabledForeground\",{dark:\"#CCCCCC80\",light:\"#61616180\",hcDark:\"#A5A5A5\",hcLight:\"#7F7F7F\"},S.localize(1,null)),e.errorForeground=t(\"errorForeground\",{dark:\"#F48771\",light:\"#A1260D\",hcDark:\"#F48771\",hcLight:\"#B5200D\"},S.localize(2,null)),e.descriptionForeground=t(\"descriptionForeground\",{light:\"#717171\",dark:m(e.foreground,.7),hcDark:m(e.foreground,.7),hcLight:m(e.foreground,.7)},S.localize(3,null)),e.iconForeground=t(\"icon.foreground\",{dark:\"#C5C5C5\",light:\"#424242\",hcDark:\"#FFFFFF\",hcLight:\"#292929\"},S.localize(4,null)),e.focusBorder=t(\"focusBorder\",{dark:\"#007FD4\",light:\"#0090F1\",hcDark:\"#F38518\",hcLight:\"#006BBD\"},S.localize(5,null)),e.contrastBorder=t(\"contrastBorder\",{light:null,dark:null,hcDark:\"#6FC3DF\",hcLight:\"#0F4A85\"},S.localize(6,null)),e.activeContrastBorder=t(\"contrastActiveBorder\",{light:null,dark:null,hcDark:e.focusBorder,hcLight:e.focusBorder},S.localize(7,null)),e.selectionBackground=t(\"selection.background\",{light:null,dark:null,hcDark:null,hcLight:null},S.localize(8,null)),e.textSeparatorForeground=t(\"textSeparator.foreground\",{light:\"#0000002e\",dark:\"#ffffff2e\",hcDark:k.Color.black,hcLight:\"#292929\"},S.localize(9,null)),e.textLinkForeground=t(\"textLink.foreground\",{light:\"#006AB1\",dark:\"#3794FF\",hcDark:\"#3794FF\",hcLight:\"#0F4A85\"},S.localize(10,null)),e.textLinkActiveForeground=t(\"textLink.activeForeground\",{light:\"#006AB1\",dark:\"#3794FF\",hcDark:\"#3794FF\",hcLight:\"#0F4A85\"},S.localize(11,null)),e.textPreformatForeground=t(\"textPreformat.foreground\",{light:\"#A31515\",dark:\"#D7BA7D\",hcDark:\"#D7BA7D\",hcLight:\"#292929\"},S.localize(12,null)),e.textBlockQuoteBackground=t(\"textBlockQuote.background\",{light:\"#7f7f7f1a\",dark:\"#7f7f7f1a\",hcDark:null,hcLight:\"#F2F2F2\"},S.localize(13,null)),e.textBlockQuoteBorder=t(\"textBlockQuote.border\",{light:\"#007acc80\",dark:\"#007acc80\",hcDark:k.Color.white,hcLight:\"#292929\"},S.localize(14,null)),e.textCodeBlockBackground=t(\"textCodeBlock.background\",{light:\"#dcdcdc66\",dark:\"#0a0a0a66\",hcDark:k.Color.black,hcLight:\"#F2F2F2\"},S.localize(15,null)),e.widgetShadow=t(\"widget.shadow\",{dark:m(k.Color.black,.36),light:m(k.Color.black,.16),hcDark:null,hcLight:null},S.localize(16,null)),e.widgetBorder=t(\"widget.border\",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(17,null)),e.inputBackground=t(\"input.background\",{dark:\"#3C3C3C\",light:k.Color.white,hcDark:k.Color.black,hcLight:k.Color.white},S.localize(18,null)),e.inputForeground=t(\"input.foreground\",{dark:e.foreground,light:e.foreground,hcDark:e.foreground,hcLight:e.foreground},S.localize(19,null)),e.inputBorder=t(\"input.border\",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(20,null)),e.inputActiveOptionBorder=t(\"inputOption.activeBorder\",{dark:\"#007ACC\",light:\"#007ACC\",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(21,null)),e.inputActiveOptionHoverBackground=t(\"inputOption.hoverBackground\",{dark:\"#5a5d5e80\",light:\"#b8b8b850\",hcDark:null,hcLight:null},S.localize(22,null)),e.inputActiveOptionBackground=t(\"inputOption.activeBackground\",{dark:m(e.focusBorder,.4),light:m(e.focusBorder,.2),hcDark:k.Color.transparent,hcLight:k.Color.transparent},S.localize(23,null)),e.inputActiveOptionForeground=t(\"inputOption.activeForeground\",{dark:k.Color.white,light:k.Color.black,hcDark:e.foreground,hcLight:e.foreground},S.localize(24,null)),e.inputPlaceholderForeground=t(\"input.placeholderForeground\",{light:m(e.foreground,.5),dark:m(e.foreground,.5),hcDark:m(e.foreground,.7),hcLight:m(e.foreground,.7)},S.localize(25,null)),e.inputValidationInfoBackground=t(\"inputValidation.infoBackground\",{dark:\"#063B49\",light:\"#D6ECF2\",hcDark:k.Color.black,hcLight:k.Color.white},S.localize(26,null)),e.inputValidationInfoForeground=t(\"inputValidation.infoForeground\",{dark:null,light:null,hcDark:null,hcLight:e.foreground},S.localize(27,null)),e.inputValidationInfoBorder=t(\"inputValidation.infoBorder\",{dark:\"#007acc\",light:\"#007acc\",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(28,null)),e.inputValidationWarningBackground=t(\"inputValidation.warningBackground\",{dark:\"#352A05\",light:\"#F6F5D2\",hcDark:k.Color.black,hcLight:k.Color.white},S.localize(29,null)),e.inputValidationWarningForeground=t(\"inputValidation.warningForeground\",{dark:null,light:null,hcDark:null,hcLight:e.foreground},S.localize(30,null)),e.inputValidationWarningBorder=t(\"inputValidation.warningBorder\",{dark:\"#B89500\",light:\"#B89500\",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(31,null)),e.inputValidationErrorBackground=t(\"inputValidation.errorBackground\",{dark:\"#5A1D1D\",light:\"#F2DEDE\",hcDark:k.Color.black,hcLight:k.Color.white},S.localize(32,null)),e.inputValidationErrorForeground=t(\"inputValidation.errorForeground\",{dark:null,light:null,hcDark:null,hcLight:e.foreground},S.localize(33,null)),e.inputValidationErrorBorder=t(\"inputValidation.errorBorder\",{dark:\"#BE1100\",light:\"#BE1100\",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(34,null)),e.selectBackground=t(\"dropdown.background\",{dark:\"#3C3C3C\",light:k.Color.white,hcDark:k.Color.black,hcLight:k.Color.white},S.localize(35,null)),e.selectListBackground=t(\"dropdown.listBackground\",{dark:null,light:null,hcDark:k.Color.black,hcLight:k.Color.white},S.localize(36,null)),e.selectForeground=t(\"dropdown.foreground\",{dark:\"#F0F0F0\",light:e.foreground,hcDark:k.Color.white,hcLight:e.foreground},S.localize(37,null)),e.selectBorder=t(\"dropdown.border\",{dark:e.selectBackground,light:\"#CECECE\",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(38,null)),e.buttonForeground=t(\"button.foreground\",{dark:k.Color.white,light:k.Color.white,hcDark:k.Color.white,hcLight:k.Color.white},S.localize(39,null)),e.buttonSeparator=t(\"button.separator\",{dark:m(e.buttonForeground,.4),light:m(e.buttonForeground,.4),hcDark:m(e.buttonForeground,.4),hcLight:m(e.buttonForeground,.4)},S.localize(40,null)),e.buttonBackground=t(\"button.background\",{dark:\"#0E639C\",light:\"#007ACC\",hcDark:null,hcLight:\"#0F4A85\"},S.localize(41,null)),e.buttonHoverBackground=t(\"button.hoverBackground\",{dark:p(e.buttonBackground,.2),light:l(e.buttonBackground,.2),hcDark:e.buttonBackground,hcLight:e.buttonBackground},S.localize(42,null)),e.buttonBorder=t(\"button.border\",{dark:e.contrastBorder,light:e.contrastBorder,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(43,null)),e.buttonSecondaryForeground=t(\"button.secondaryForeground\",{dark:k.Color.white,light:k.Color.white,hcDark:k.Color.white,hcLight:e.foreground},S.localize(44,null)),e.buttonSecondaryBackground=t(\"button.secondaryBackground\",{dark:\"#3A3D41\",light:\"#5F6A79\",hcDark:null,hcLight:k.Color.white},S.localize(45,null)),e.buttonSecondaryHoverBackground=t(\"button.secondaryHoverBackground\",{dark:p(e.buttonSecondaryBackground,.2),light:l(e.buttonSecondaryBackground,.2),hcDark:null,hcLight:null},S.localize(46,null)),e.badgeBackground=t(\"badge.background\",{dark:\"#4D4D4D\",light:\"#C4C4C4\",hcDark:k.Color.black,hcLight:\"#0F4A85\"},S.localize(47,null)),e.badgeForeground=t(\"badge.foreground\",{dark:k.Color.white,light:\"#333\",hcDark:k.Color.white,hcLight:k.Color.white},S.localize(48,null)),e.scrollbarShadow=t(\"scrollbar.shadow\",{dark:\"#000000\",light:\"#DDDDDD\",hcDark:null,hcLight:null},S.localize(49,null)),e.scrollbarSliderBackground=t(\"scrollbarSlider.background\",{dark:k.Color.fromHex(\"#797979\").transparent(.4),light:k.Color.fromHex(\"#646464\").transparent(.4),hcDark:m(e.contrastBorder,.6),hcLight:m(e.contrastBorder,.4)},S.localize(50,null)),e.scrollbarSliderHoverBackground=t(\"scrollbarSlider.hoverBackground\",{dark:k.Color.fromHex(\"#646464\").transparent(.7),light:k.Color.fromHex(\"#646464\").transparent(.7),hcDark:m(e.contrastBorder,.8),hcLight:m(e.contrastBorder,.8)},S.localize(51,null)),e.scrollbarSliderActiveBackground=t(\"scrollbarSlider.activeBackground\",{dark:k.Color.fromHex(\"#BFBFBF\").transparent(.4),light:k.Color.fromHex(\"#000000\").transparent(.6),hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(52,null)),e.progressBarBackground=t(\"progressBar.background\",{dark:k.Color.fromHex(\"#0E70C0\"),light:k.Color.fromHex(\"#0E70C0\"),hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(53,null)),e.editorErrorBackground=t(\"editorError.background\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(54,null),!0),e.editorErrorForeground=t(\"editorError.foreground\",{dark:\"#F14C4C\",light:\"#E51400\",hcDark:\"#F48771\",hcLight:\"#B5200D\"},S.localize(55,null)),e.editorErrorBorder=t(\"editorError.border\",{dark:null,light:null,hcDark:k.Color.fromHex(\"#E47777\").transparent(.8),hcLight:\"#B5200D\"},S.localize(56,null)),e.editorWarningBackground=t(\"editorWarning.background\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(57,null),!0),e.editorWarningForeground=t(\"editorWarning.foreground\",{dark:\"#CCA700\",light:\"#BF8803\",hcDark:\"#FFD370\",hcLight:\"#895503\"},S.localize(58,null)),e.editorWarningBorder=t(\"editorWarning.border\",{dark:null,light:null,hcDark:k.Color.fromHex(\"#FFCC00\").transparent(.8),hcLight:k.Color.fromHex(\"#FFCC00\").transparent(.8)},S.localize(59,null)),e.editorInfoBackground=t(\"editorInfo.background\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(60,null),!0),e.editorInfoForeground=t(\"editorInfo.foreground\",{dark:\"#3794FF\",light:\"#1a85ff\",hcDark:\"#3794FF\",hcLight:\"#1a85ff\"},S.localize(61,null)),e.editorInfoBorder=t(\"editorInfo.border\",{dark:null,light:null,hcDark:k.Color.fromHex(\"#3794FF\").transparent(.8),hcLight:\"#292929\"},S.localize(62,null)),e.editorHintForeground=t(\"editorHint.foreground\",{dark:k.Color.fromHex(\"#eeeeee\").transparent(.7),light:\"#6c6c6c\",hcDark:null,hcLight:null},S.localize(63,null)),e.editorHintBorder=t(\"editorHint.border\",{dark:null,light:null,hcDark:k.Color.fromHex(\"#eeeeee\").transparent(.8),hcLight:\"#292929\"},S.localize(64,null)),e.sashHoverBorder=t(\"sash.hoverBorder\",{dark:e.focusBorder,light:e.focusBorder,hcDark:e.focusBorder,hcLight:e.focusBorder},S.localize(65,null)),e.editorBackground=t(\"editor.background\",{light:\"#ffffff\",dark:\"#1E1E1E\",hcDark:k.Color.black,hcLight:k.Color.white},S.localize(66,null)),e.editorForeground=t(\"editor.foreground\",{light:\"#333333\",dark:\"#BBBBBB\",hcDark:k.Color.white,hcLight:e.foreground},S.localize(67,null)),e.editorStickyScrollBackground=t(\"editorStickyScroll.background\",{light:e.editorBackground,dark:e.editorBackground,hcDark:e.editorBackground,hcLight:e.editorBackground},S.localize(68,null)),e.editorStickyScrollHoverBackground=t(\"editorStickyScrollHover.background\",{dark:\"#2A2D2E\",light:\"#F0F0F0\",hcDark:null,hcLight:k.Color.fromHex(\"#0F4A85\").transparent(.1)},S.localize(69,null)),e.editorWidgetBackground=t(\"editorWidget.background\",{dark:\"#252526\",light:\"#F3F3F3\",hcDark:\"#0C141F\",hcLight:k.Color.white},S.localize(70,null)),e.editorWidgetForeground=t(\"editorWidget.foreground\",{dark:e.foreground,light:e.foreground,hcDark:e.foreground,hcLight:e.foreground},S.localize(71,null)),e.editorWidgetBorder=t(\"editorWidget.border\",{dark:\"#454545\",light:\"#C8C8C8\",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(72,null)),e.editorWidgetResizeBorder=t(\"editorWidget.resizeBorder\",{light:null,dark:null,hcDark:null,hcLight:null},S.localize(73,null)),e.quickInputBackground=t(\"quickInput.background\",{dark:e.editorWidgetBackground,light:e.editorWidgetBackground,hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(74,null)),e.quickInputForeground=t(\"quickInput.foreground\",{dark:e.editorWidgetForeground,light:e.editorWidgetForeground,hcDark:e.editorWidgetForeground,hcLight:e.editorWidgetForeground},S.localize(75,null)),e.quickInputTitleBackground=t(\"quickInputTitle.background\",{dark:new k.Color(new k.RGBA(255,255,255,.105)),light:new k.Color(new k.RGBA(0,0,0,.06)),hcDark:\"#000000\",hcLight:k.Color.white},S.localize(76,null)),e.pickerGroupForeground=t(\"pickerGroup.foreground\",{dark:\"#3794FF\",light:\"#0066BF\",hcDark:k.Color.white,hcLight:\"#0F4A85\"},S.localize(77,null)),e.pickerGroupBorder=t(\"pickerGroup.border\",{dark:\"#3F3F46\",light:\"#CCCEDB\",hcDark:k.Color.white,hcLight:\"#0F4A85\"},S.localize(78,null)),e.keybindingLabelBackground=t(\"keybindingLabel.background\",{dark:new k.Color(new k.RGBA(128,128,128,.17)),light:new k.Color(new k.RGBA(221,221,221,.4)),hcDark:k.Color.transparent,hcLight:k.Color.transparent},S.localize(79,null)),e.keybindingLabelForeground=t(\"keybindingLabel.foreground\",{dark:k.Color.fromHex(\"#CCCCCC\"),light:k.Color.fromHex(\"#555555\"),hcDark:k.Color.white,hcLight:e.foreground},S.localize(80,null)),e.keybindingLabelBorder=t(\"keybindingLabel.border\",{dark:new k.Color(new k.RGBA(51,51,51,.6)),light:new k.Color(new k.RGBA(204,204,204,.4)),hcDark:new k.Color(new k.RGBA(111,195,223)),hcLight:e.contrastBorder},S.localize(81,null)),e.keybindingLabelBottomBorder=t(\"keybindingLabel.bottomBorder\",{dark:new k.Color(new k.RGBA(68,68,68,.6)),light:new k.Color(new k.RGBA(187,187,187,.4)),hcDark:new k.Color(new k.RGBA(111,195,223)),hcLight:e.foreground},S.localize(82,null)),e.editorSelectionBackground=t(\"editor.selectionBackground\",{light:\"#ADD6FF\",dark:\"#264F78\",hcDark:\"#f3f518\",hcLight:\"#0F4A85\"},S.localize(83,null)),e.editorSelectionForeground=t(\"editor.selectionForeground\",{light:null,dark:null,hcDark:\"#000000\",hcLight:k.Color.white},S.localize(84,null)),e.editorInactiveSelection=t(\"editor.inactiveSelectionBackground\",{light:m(e.editorSelectionBackground,.5),dark:m(e.editorSelectionBackground,.5),hcDark:m(e.editorSelectionBackground,.7),hcLight:m(e.editorSelectionBackground,.5)},S.localize(85,null),!0),e.editorSelectionHighlight=t(\"editor.selectionHighlightBackground\",{light:w(e.editorSelectionBackground,e.editorBackground,.3,.6),dark:w(e.editorSelectionBackground,e.editorBackground,.3,.6),hcDark:null,hcLight:null},S.localize(86,null),!0),e.editorSelectionHighlightBorder=t(\"editor.selectionHighlightBorder\",{light:null,dark:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(87,null)),e.editorFindMatch=t(\"editor.findMatchBackground\",{light:\"#A8AC94\",dark:\"#515C6A\",hcDark:null,hcLight:null},S.localize(88,null)),e.editorFindMatchHighlight=t(\"editor.findMatchHighlightBackground\",{light:\"#EA5C0055\",dark:\"#EA5C0055\",hcDark:null,hcLight:null},S.localize(89,null),!0),e.editorFindRangeHighlight=t(\"editor.findRangeHighlightBackground\",{dark:\"#3a3d4166\",light:\"#b4b4b44d\",hcDark:null,hcLight:null},S.localize(90,null),!0),e.editorFindMatchBorder=t(\"editor.findMatchBorder\",{light:null,dark:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(91,null)),e.editorFindMatchHighlightBorder=t(\"editor.findMatchHighlightBorder\",{light:null,dark:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(92,null)),e.editorFindRangeHighlightBorder=t(\"editor.findRangeHighlightBorder\",{dark:null,light:null,hcDark:m(e.activeContrastBorder,.4),hcLight:m(e.activeContrastBorder,.4)},S.localize(93,null),!0),e.searchEditorFindMatch=t(\"searchEditor.findMatchBackground\",{light:m(e.editorFindMatchHighlight,.66),dark:m(e.editorFindMatchHighlight,.66),hcDark:e.editorFindMatchHighlight,hcLight:e.editorFindMatchHighlight},S.localize(94,null)),e.searchEditorFindMatchBorder=t(\"searchEditor.findMatchBorder\",{light:m(e.editorFindMatchHighlightBorder,.66),dark:m(e.editorFindMatchHighlightBorder,.66),hcDark:e.editorFindMatchHighlightBorder,hcLight:e.editorFindMatchHighlightBorder},S.localize(95,null)),e.searchResultsInfoForeground=t(\"search.resultsInfoForeground\",{light:e.foreground,dark:m(e.foreground,.65),hcDark:e.foreground,hcLight:e.foreground},S.localize(96,null)),e.editorHoverHighlight=t(\"editor.hoverHighlightBackground\",{light:\"#ADD6FF26\",dark:\"#264f7840\",hcDark:\"#ADD6FF26\",hcLight:null},S.localize(97,null),!0),e.editorHoverBackground=t(\"editorHoverWidget.background\",{light:e.editorWidgetBackground,dark:e.editorWidgetBackground,hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(98,null)),e.editorHoverForeground=t(\"editorHoverWidget.foreground\",{light:e.editorWidgetForeground,dark:e.editorWidgetForeground,hcDark:e.editorWidgetForeground,hcLight:e.editorWidgetForeground},S.localize(99,null)),e.editorHoverBorder=t(\"editorHoverWidget.border\",{light:e.editorWidgetBorder,dark:e.editorWidgetBorder,hcDark:e.editorWidgetBorder,hcLight:e.editorWidgetBorder},S.localize(100,null)),e.editorHoverStatusBarBackground=t(\"editorHoverWidget.statusBarBackground\",{dark:p(e.editorHoverBackground,.2),light:l(e.editorHoverBackground,.05),hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(101,null)),e.editorActiveLinkForeground=t(\"editorLink.activeForeground\",{dark:\"#4E94CE\",light:k.Color.blue,hcDark:k.Color.cyan,hcLight:\"#292929\"},S.localize(102,null)),e.editorInlayHintForeground=t(\"editorInlayHint.foreground\",{dark:\"#969696\",light:\"#969696\",hcDark:k.Color.white,hcLight:k.Color.black},S.localize(103,null)),e.editorInlayHintBackground=t(\"editorInlayHint.background\",{dark:m(e.badgeBackground,.1),light:m(e.badgeBackground,.1),hcDark:m(k.Color.white,.1),hcLight:m(e.badgeBackground,.1)},S.localize(104,null)),e.editorInlayHintTypeForeground=t(\"editorInlayHint.typeForeground\",{dark:e.editorInlayHintForeground,light:e.editorInlayHintForeground,hcDark:e.editorInlayHintForeground,hcLight:e.editorInlayHintForeground},S.localize(105,null)),e.editorInlayHintTypeBackground=t(\"editorInlayHint.typeBackground\",{dark:e.editorInlayHintBackground,light:e.editorInlayHintBackground,hcDark:e.editorInlayHintBackground,hcLight:e.editorInlayHintBackground},S.localize(106,null)),e.editorInlayHintParameterForeground=t(\"editorInlayHint.parameterForeground\",{dark:e.editorInlayHintForeground,light:e.editorInlayHintForeground,hcDark:e.editorInlayHintForeground,hcLight:e.editorInlayHintForeground},S.localize(107,null)),e.editorInlayHintParameterBackground=t(\"editorInlayHint.parameterBackground\",{dark:e.editorInlayHintBackground,light:e.editorInlayHintBackground,hcDark:e.editorInlayHintBackground,hcLight:e.editorInlayHintBackground},S.localize(108,null)),e.editorLightBulbForeground=t(\"editorLightBulb.foreground\",{dark:\"#FFCC00\",light:\"#DDB100\",hcDark:\"#FFCC00\",hcLight:\"#007ACC\"},S.localize(109,null)),e.editorLightBulbAutoFixForeground=t(\"editorLightBulbAutoFix.foreground\",{dark:\"#75BEFF\",light:\"#007ACC\",hcDark:\"#75BEFF\",hcLight:\"#007ACC\"},S.localize(110,null)),e.defaultInsertColor=new k.Color(new k.RGBA(155,185,85,.2)),e.defaultRemoveColor=new k.Color(new k.RGBA(255,0,0,.2)),e.diffInserted=t(\"diffEditor.insertedTextBackground\",{dark:\"#9ccc2c33\",light:\"#9ccc2c40\",hcDark:null,hcLight:null},S.localize(111,null),!0),e.diffRemoved=t(\"diffEditor.removedTextBackground\",{dark:\"#ff000033\",light:\"#ff000033\",hcDark:null,hcLight:null},S.localize(112,null),!0),e.diffInsertedLine=t(\"diffEditor.insertedLineBackground\",{dark:e.defaultInsertColor,light:e.defaultInsertColor,hcDark:null,hcLight:null},S.localize(113,null),!0),e.diffRemovedLine=t(\"diffEditor.removedLineBackground\",{dark:e.defaultRemoveColor,light:e.defaultRemoveColor,hcDark:null,hcLight:null},S.localize(114,null),!0),e.diffInsertedLineGutter=t(\"diffEditorGutter.insertedLineBackground\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(115,null)),e.diffRemovedLineGutter=t(\"diffEditorGutter.removedLineBackground\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(116,null)),e.diffOverviewRulerInserted=t(\"diffEditorOverview.insertedForeground\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(117,null)),e.diffOverviewRulerRemoved=t(\"diffEditorOverview.removedForeground\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(118,null)),e.diffInsertedOutline=t(\"diffEditor.insertedTextBorder\",{dark:null,light:null,hcDark:\"#33ff2eff\",hcLight:\"#374E06\"},S.localize(119,null)),e.diffRemovedOutline=t(\"diffEditor.removedTextBorder\",{dark:null,light:null,hcDark:\"#FF008F\",hcLight:\"#AD0707\"},S.localize(120,null)),e.diffBorder=t(\"diffEditor.border\",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(121,null)),e.diffDiagonalFill=t(\"diffEditor.diagonalFill\",{dark:\"#cccccc33\",light:\"#22222233\",hcDark:null,hcLight:null},S.localize(122,null)),e.diffUnchangedRegionBackground=t(\"diffEditor.unchangedRegionBackground\",{dark:\"#3e3e3e\",light:\"#e4e4e4\",hcDark:null,hcLight:null},S.localize(123,null)),e.diffUnchangedRegionForeground=t(\"diffEditor.unchangedRegionForeground\",{dark:\"#a3a2a2\",light:\"#4d4c4c\",hcDark:null,hcLight:null},S.localize(124,null)),e.diffUnchangedTextBackground=t(\"diffEditor.unchangedCodeBackground\",{dark:\"#74747429\",light:\"#b8b8b829\",hcDark:null,hcLight:null},S.localize(125,null)),e.listFocusBackground=t(\"list.focusBackground\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(126,null)),e.listFocusForeground=t(\"list.focusForeground\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(127,null)),e.listFocusOutline=t(\"list.focusOutline\",{dark:e.focusBorder,light:e.focusBorder,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(128,null)),e.listFocusAndSelectionOutline=t(\"list.focusAndSelectionOutline\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(129,null)),e.listActiveSelectionBackground=t(\"list.activeSelectionBackground\",{dark:\"#04395E\",light:\"#0060C0\",hcDark:null,hcLight:k.Color.fromHex(\"#0F4A85\").transparent(.1)},S.localize(130,null)),e.listActiveSelectionForeground=t(\"list.activeSelectionForeground\",{dark:k.Color.white,light:k.Color.white,hcDark:null,hcLight:null},S.localize(131,null)),e.listActiveSelectionIconForeground=t(\"list.activeSelectionIconForeground\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(132,null)),e.listInactiveSelectionBackground=t(\"list.inactiveSelectionBackground\",{dark:\"#37373D\",light:\"#E4E6F1\",hcDark:null,hcLight:k.Color.fromHex(\"#0F4A85\").transparent(.1)},S.localize(133,null)),e.listInactiveSelectionForeground=t(\"list.inactiveSelectionForeground\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(134,null)),e.listInactiveSelectionIconForeground=t(\"list.inactiveSelectionIconForeground\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(135,null)),e.listInactiveFocusBackground=t(\"list.inactiveFocusBackground\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(136,null)),e.listInactiveFocusOutline=t(\"list.inactiveFocusOutline\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(137,null)),e.listHoverBackground=t(\"list.hoverBackground\",{dark:\"#2A2D2E\",light:\"#F0F0F0\",hcDark:k.Color.white.transparent(.1),hcLight:k.Color.fromHex(\"#0F4A85\").transparent(.1)},S.localize(138,null)),e.listHoverForeground=t(\"list.hoverForeground\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(139,null)),e.listDropBackground=t(\"list.dropBackground\",{dark:\"#062F4A\",light:\"#D6EBFF\",hcDark:null,hcLight:null},S.localize(140,null)),e.listHighlightForeground=t(\"list.highlightForeground\",{dark:\"#2AAAFF\",light:\"#0066BF\",hcDark:e.focusBorder,hcLight:e.focusBorder},S.localize(141,null)),e.listFocusHighlightForeground=t(\"list.focusHighlightForeground\",{dark:e.listHighlightForeground,light:b(e.listActiveSelectionBackground,e.listHighlightForeground,\"#BBE7FF\"),hcDark:e.listHighlightForeground,hcLight:e.listHighlightForeground},S.localize(142,null)),e.listInvalidItemForeground=t(\"list.invalidItemForeground\",{dark:\"#B89500\",light:\"#B89500\",hcDark:\"#B89500\",hcLight:\"#B5200D\"},S.localize(143,null)),e.listErrorForeground=t(\"list.errorForeground\",{dark:\"#F88070\",light:\"#B01011\",hcDark:null,hcLight:null},S.localize(144,null)),e.listWarningForeground=t(\"list.warningForeground\",{dark:\"#CCA700\",light:\"#855F00\",hcDark:null,hcLight:null},S.localize(145,null)),e.listFilterWidgetBackground=t(\"listFilterWidget.background\",{light:l(e.editorWidgetBackground,0),dark:p(e.editorWidgetBackground,0),hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(146,null)),e.listFilterWidgetOutline=t(\"listFilterWidget.outline\",{dark:k.Color.transparent,light:k.Color.transparent,hcDark:\"#f38518\",hcLight:\"#007ACC\"},S.localize(147,null)),e.listFilterWidgetNoMatchesOutline=t(\"listFilterWidget.noMatchesOutline\",{dark:\"#BE1100\",light:\"#BE1100\",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(148,null)),e.listFilterWidgetShadow=t(\"listFilterWidget.shadow\",{dark:e.widgetShadow,light:e.widgetShadow,hcDark:e.widgetShadow,hcLight:e.widgetShadow},S.localize(149,null)),e.listFilterMatchHighlight=t(\"list.filterMatchBackground\",{dark:e.editorFindMatchHighlight,light:e.editorFindMatchHighlight,hcDark:null,hcLight:null},S.localize(150,null)),e.listFilterMatchHighlightBorder=t(\"list.filterMatchBorder\",{dark:e.editorFindMatchHighlightBorder,light:e.editorFindMatchHighlightBorder,hcDark:e.contrastBorder,hcLight:e.activeContrastBorder},S.localize(151,null)),e.treeIndentGuidesStroke=t(\"tree.indentGuidesStroke\",{dark:\"#585858\",light:\"#a9a9a9\",hcDark:\"#a9a9a9\",hcLight:\"#a5a5a5\"},S.localize(152,null)),e.treeInactiveIndentGuidesStroke=t(\"tree.inactiveIndentGuidesStroke\",{dark:m(e.treeIndentGuidesStroke,.4),light:m(e.treeIndentGuidesStroke,.4),hcDark:m(e.treeIndentGuidesStroke,.4),hcLight:m(e.treeIndentGuidesStroke,.4)},S.localize(153,null)),e.tableColumnsBorder=t(\"tree.tableColumnsBorder\",{dark:\"#CCCCCC20\",light:\"#61616120\",hcDark:null,hcLight:null},S.localize(154,null)),e.tableOddRowsBackgroundColor=t(\"tree.tableOddRowsBackground\",{dark:m(e.foreground,.04),light:m(e.foreground,.04),hcDark:null,hcLight:null},S.localize(155,null)),e.listDeemphasizedForeground=t(\"list.deemphasizedForeground\",{dark:\"#8C8C8C\",light:\"#8E8E90\",hcDark:\"#A7A8A9\",hcLight:\"#666666\"},S.localize(156,null)),e.checkboxBackground=t(\"checkbox.background\",{dark:e.selectBackground,light:e.selectBackground,hcDark:e.selectBackground,hcLight:e.selectBackground},S.localize(157,null)),e.checkboxSelectBackground=t(\"checkbox.selectBackground\",{dark:e.editorWidgetBackground,light:e.editorWidgetBackground,hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(158,null)),e.checkboxForeground=t(\"checkbox.foreground\",{dark:e.selectForeground,light:e.selectForeground,hcDark:e.selectForeground,hcLight:e.selectForeground},S.localize(159,null)),e.checkboxBorder=t(\"checkbox.border\",{dark:e.selectBorder,light:e.selectBorder,hcDark:e.selectBorder,hcLight:e.selectBorder},S.localize(160,null)),e.checkboxSelectBorder=t(\"checkbox.selectBorder\",{dark:e.iconForeground,light:e.iconForeground,hcDark:e.iconForeground,hcLight:e.iconForeground},S.localize(161,null)),e._deprecatedQuickInputListFocusBackground=t(\"quickInput.list.focusBackground\",{dark:null,light:null,hcDark:null,hcLight:null},\"\",void 0,S.localize(162,null)),e.quickInputListFocusForeground=t(\"quickInputList.focusForeground\",{dark:e.listActiveSelectionForeground,light:e.listActiveSelectionForeground,hcDark:e.listActiveSelectionForeground,hcLight:e.listActiveSelectionForeground},S.localize(163,null)),e.quickInputListFocusIconForeground=t(\"quickInputList.focusIconForeground\",{dark:e.listActiveSelectionIconForeground,light:e.listActiveSelectionIconForeground,hcDark:e.listActiveSelectionIconForeground,hcLight:e.listActiveSelectionIconForeground},S.localize(164,null)),e.quickInputListFocusBackground=t(\"quickInputList.focusBackground\",{dark:v(e._deprecatedQuickInputListFocusBackground,e.listActiveSelectionBackground),light:v(e._deprecatedQuickInputListFocusBackground,e.listActiveSelectionBackground),hcDark:null,hcLight:null},S.localize(165,null)),e.menuBorder=t(\"menu.border\",{dark:null,light:null,hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(166,null)),e.menuForeground=t(\"menu.foreground\",{dark:e.selectForeground,light:e.selectForeground,hcDark:e.selectForeground,hcLight:e.selectForeground},S.localize(167,null)),e.menuBackground=t(\"menu.background\",{dark:e.selectBackground,light:e.selectBackground,hcDark:e.selectBackground,hcLight:e.selectBackground},S.localize(168,null)),e.menuSelectionForeground=t(\"menu.selectionForeground\",{dark:e.listActiveSelectionForeground,light:e.listActiveSelectionForeground,hcDark:e.listActiveSelectionForeground,hcLight:e.listActiveSelectionForeground},S.localize(169,null)),e.menuSelectionBackground=t(\"menu.selectionBackground\",{dark:e.listActiveSelectionBackground,light:e.listActiveSelectionBackground,hcDark:e.listActiveSelectionBackground,hcLight:e.listActiveSelectionBackground},S.localize(170,null)),e.menuSelectionBorder=t(\"menu.selectionBorder\",{dark:null,light:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(171,null)),e.menuSeparatorBackground=t(\"menu.separatorBackground\",{dark:\"#606060\",light:\"#D4D4D4\",hcDark:e.contrastBorder,hcLight:e.contrastBorder},S.localize(172,null)),e.toolbarHoverBackground=t(\"toolbar.hoverBackground\",{dark:\"#5a5d5e50\",light:\"#b8b8b850\",hcDark:null,hcLight:null},S.localize(173,null)),e.toolbarHoverOutline=t(\"toolbar.hoverOutline\",{dark:null,light:null,hcDark:e.activeContrastBorder,hcLight:e.activeContrastBorder},S.localize(174,null)),e.toolbarActiveBackground=t(\"toolbar.activeBackground\",{dark:p(e.toolbarHoverBackground,.1),light:l(e.toolbarHoverBackground,.1),hcDark:null,hcLight:null},S.localize(175,null)),e.snippetTabstopHighlightBackground=t(\"editor.snippetTabstopHighlightBackground\",{dark:new k.Color(new k.RGBA(124,124,124,.3)),light:new k.Color(new k.RGBA(10,50,100,.2)),hcDark:new k.Color(new k.RGBA(124,124,124,.3)),hcLight:new k.Color(new k.RGBA(10,50,100,.2))},S.localize(176,null)),e.snippetTabstopHighlightBorder=t(\"editor.snippetTabstopHighlightBorder\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(177,null)),e.snippetFinalTabstopHighlightBackground=t(\"editor.snippetFinalTabstopHighlightBackground\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(178,null)),e.snippetFinalTabstopHighlightBorder=t(\"editor.snippetFinalTabstopHighlightBorder\",{dark:\"#525252\",light:new k.Color(new k.RGBA(10,50,100,.5)),hcDark:\"#525252\",hcLight:\"#292929\"},S.localize(179,null)),e.breadcrumbsForeground=t(\"breadcrumb.foreground\",{light:m(e.foreground,.8),dark:m(e.foreground,.8),hcDark:m(e.foreground,.8),hcLight:m(e.foreground,.8)},S.localize(180,null)),e.breadcrumbsBackground=t(\"breadcrumb.background\",{light:e.editorBackground,dark:e.editorBackground,hcDark:e.editorBackground,hcLight:e.editorBackground},S.localize(181,null)),e.breadcrumbsFocusForeground=t(\"breadcrumb.focusForeground\",{light:l(e.foreground,.2),dark:p(e.foreground,.1),hcDark:p(e.foreground,.1),hcLight:p(e.foreground,.1)},S.localize(182,null)),e.breadcrumbsActiveSelectionForeground=t(\"breadcrumb.activeSelectionForeground\",{light:l(e.foreground,.2),dark:p(e.foreground,.1),hcDark:p(e.foreground,.1),hcLight:p(e.foreground,.1)},S.localize(183,null)),e.breadcrumbsPickerBackground=t(\"breadcrumbPicker.background\",{light:e.editorWidgetBackground,dark:e.editorWidgetBackground,hcDark:e.editorWidgetBackground,hcLight:e.editorWidgetBackground},S.localize(184,null));const a=.5,u=k.Color.fromHex(\"#40C8AE\").transparent(a),h=k.Color.fromHex(\"#40A6FF\").transparent(a),r=k.Color.fromHex(\"#606060\").transparent(.4),c=.4,o=1;e.mergeCurrentHeaderBackground=t(\"merge.currentHeaderBackground\",{dark:u,light:u,hcDark:null,hcLight:null},S.localize(185,null),!0),e.mergeCurrentContentBackground=t(\"merge.currentContentBackground\",{dark:m(e.mergeCurrentHeaderBackground,c),light:m(e.mergeCurrentHeaderBackground,c),hcDark:m(e.mergeCurrentHeaderBackground,c),hcLight:m(e.mergeCurrentHeaderBackground,c)},S.localize(186,null),!0),e.mergeIncomingHeaderBackground=t(\"merge.incomingHeaderBackground\",{dark:h,light:h,hcDark:null,hcLight:null},S.localize(187,null),!0),e.mergeIncomingContentBackground=t(\"merge.incomingContentBackground\",{dark:m(e.mergeIncomingHeaderBackground,c),light:m(e.mergeIncomingHeaderBackground,c),hcDark:m(e.mergeIncomingHeaderBackground,c),hcLight:m(e.mergeIncomingHeaderBackground,c)},S.localize(188,null),!0),e.mergeCommonHeaderBackground=t(\"merge.commonHeaderBackground\",{dark:r,light:r,hcDark:null,hcLight:null},S.localize(189,null),!0),e.mergeCommonContentBackground=t(\"merge.commonContentBackground\",{dark:m(e.mergeCommonHeaderBackground,c),light:m(e.mergeCommonHeaderBackground,c),hcDark:m(e.mergeCommonHeaderBackground,c),hcLight:m(e.mergeCommonHeaderBackground,c)},S.localize(190,null),!0),e.mergeBorder=t(\"merge.border\",{dark:null,light:null,hcDark:\"#C3DF6F\",hcLight:\"#007ACC\"},S.localize(191,null)),e.overviewRulerCurrentContentForeground=t(\"editorOverviewRuler.currentContentForeground\",{dark:m(e.mergeCurrentHeaderBackground,o),light:m(e.mergeCurrentHeaderBackground,o),hcDark:e.mergeBorder,hcLight:e.mergeBorder},S.localize(192,null)),e.overviewRulerIncomingContentForeground=t(\"editorOverviewRuler.incomingContentForeground\",{dark:m(e.mergeIncomingHeaderBackground,o),light:m(e.mergeIncomingHeaderBackground,o),hcDark:e.mergeBorder,hcLight:e.mergeBorder},S.localize(193,null)),e.overviewRulerCommonContentForeground=t(\"editorOverviewRuler.commonContentForeground\",{dark:m(e.mergeCommonHeaderBackground,o),light:m(e.mergeCommonHeaderBackground,o),hcDark:e.mergeBorder,hcLight:e.mergeBorder},S.localize(194,null)),e.overviewRulerFindMatchForeground=t(\"editorOverviewRuler.findMatchForeground\",{dark:\"#d186167e\",light:\"#d186167e\",hcDark:\"#AB5A00\",hcLight:\"\"},S.localize(195,null),!0),e.overviewRulerSelectionHighlightForeground=t(\"editorOverviewRuler.selectionHighlightForeground\",{dark:\"#A0A0A0CC\",light:\"#A0A0A0CC\",hcDark:\"#A0A0A0CC\",hcLight:\"#A0A0A0CC\"},S.localize(196,null),!0),e.minimapFindMatch=t(\"minimap.findMatchHighlight\",{light:\"#d18616\",dark:\"#d18616\",hcDark:\"#AB5A00\",hcLight:\"#0F4A85\"},S.localize(197,null),!0),e.minimapSelectionOccurrenceHighlight=t(\"minimap.selectionOccurrenceHighlight\",{light:\"#c9c9c9\",dark:\"#676767\",hcDark:\"#ffffff\",hcLight:\"#0F4A85\"},S.localize(198,null),!0),e.minimapSelection=t(\"minimap.selectionHighlight\",{light:\"#ADD6FF\",dark:\"#264F78\",hcDark:\"#ffffff\",hcLight:\"#0F4A85\"},S.localize(199,null),!0),e.minimapError=t(\"minimap.errorHighlight\",{dark:new k.Color(new k.RGBA(255,18,18,.7)),light:new k.Color(new k.RGBA(255,18,18,.7)),hcDark:new k.Color(new k.RGBA(255,50,50,1)),hcLight:\"#B5200D\"},S.localize(200,null)),e.minimapWarning=t(\"minimap.warningHighlight\",{dark:e.editorWarningForeground,light:e.editorWarningForeground,hcDark:e.editorWarningBorder,hcLight:e.editorWarningBorder},S.localize(201,null)),e.minimapBackground=t(\"minimap.background\",{dark:null,light:null,hcDark:null,hcLight:null},S.localize(202,null)),e.minimapForegroundOpacity=t(\"minimap.foregroundOpacity\",{dark:k.Color.fromHex(\"#000f\"),light:k.Color.fromHex(\"#000f\"),hcDark:k.Color.fromHex(\"#000f\"),hcLight:k.Color.fromHex(\"#000f\")},S.localize(203,null)),e.minimapSliderBackground=t(\"minimapSlider.background\",{light:m(e.scrollbarSliderBackground,.5),dark:m(e.scrollbarSliderBackground,.5),hcDark:m(e.scrollbarSliderBackground,.5),hcLight:m(e.scrollbarSliderBackground,.5)},S.localize(204,null)),e.minimapSliderHoverBackground=t(\"minimapSlider.hoverBackground\",{light:m(e.scrollbarSliderHoverBackground,.5),dark:m(e.scrollbarSliderHoverBackground,.5),hcDark:m(e.scrollbarSliderHoverBackground,.5),hcLight:m(e.scrollbarSliderHoverBackground,.5)},S.localize(205,null)),e.minimapSliderActiveBackground=t(\"minimapSlider.activeBackground\",{light:m(e.scrollbarSliderActiveBackground,.5),dark:m(e.scrollbarSliderActiveBackground,.5),hcDark:m(e.scrollbarSliderActiveBackground,.5),hcLight:m(e.scrollbarSliderActiveBackground,.5)},S.localize(206,null)),e.problemsErrorIconForeground=t(\"problemsErrorIcon.foreground\",{dark:e.editorErrorForeground,light:e.editorErrorForeground,hcDark:e.editorErrorForeground,hcLight:e.editorErrorForeground},S.localize(207,null)),e.problemsWarningIconForeground=t(\"problemsWarningIcon.foreground\",{dark:e.editorWarningForeground,light:e.editorWarningForeground,hcDark:e.editorWarningForeground,hcLight:e.editorWarningForeground},S.localize(208,null)),e.problemsInfoIconForeground=t(\"problemsInfoIcon.foreground\",{dark:e.editorInfoForeground,light:e.editorInfoForeground,hcDark:e.editorInfoForeground,hcLight:e.editorInfoForeground},S.localize(209,null)),e.chartsForeground=t(\"charts.foreground\",{dark:e.foreground,light:e.foreground,hcDark:e.foreground,hcLight:e.foreground},S.localize(210,null)),e.chartsLines=t(\"charts.lines\",{dark:m(e.foreground,.5),light:m(e.foreground,.5),hcDark:m(e.foreground,.5),hcLight:m(e.foreground,.5)},S.localize(211,null)),e.chartsRed=t(\"charts.red\",{dark:e.editorErrorForeground,light:e.editorErrorForeground,hcDark:e.editorErrorForeground,hcLight:e.editorErrorForeground},S.localize(212,null)),e.chartsBlue=t(\"charts.blue\",{dark:e.editorInfoForeground,light:e.editorInfoForeground,hcDark:e.editorInfoForeground,hcLight:e.editorInfoForeground},S.localize(213,null)),e.chartsYellow=t(\"charts.yellow\",{dark:e.editorWarningForeground,light:e.editorWarningForeground,hcDark:e.editorWarningForeground,hcLight:e.editorWarningForeground},S.localize(214,null)),e.chartsOrange=t(\"charts.orange\",{dark:e.minimapFindMatch,light:e.minimapFindMatch,hcDark:e.minimapFindMatch,hcLight:e.minimapFindMatch},S.localize(215,null)),e.chartsGreen=t(\"charts.green\",{dark:\"#89D185\",light:\"#388A34\",hcDark:\"#89D185\",hcLight:\"#374e06\"},S.localize(216,null)),e.chartsPurple=t(\"charts.purple\",{dark:\"#B180D7\",light:\"#652D90\",hcDark:\"#B180D7\",hcLight:\"#652D90\"},S.localize(217,null));function d(P,x){var T,A,N,F;switch(P.op){case 0:return(T=E(P.value,x))===null||T===void 0?void 0:T.darken(P.factor);case 1:return(A=E(P.value,x))===null||A===void 0?void 0:A.lighten(P.factor);case 2:return(N=E(P.value,x))===null||N===void 0?void 0:N.transparent(P.factor);case 3:{const O=E(P.background,x);return O?(F=E(P.value,x))===null||F===void 0?void 0:F.makeOpaque(O):E(P.value,x)}case 4:for(const O of P.values){const W=E(O,x);if(W)return W}return;case 6:return E(x.defines(P.if)?P.then:P.else,x);case 5:{const O=E(P.value,x);if(!O)return;const W=E(P.background,x);return W?O.isDarkerThan(W)?k.Color.getLighterColor(O,W,P.factor).transparent(P.transparency):k.Color.getDarkerColor(O,W,P.factor).transparent(P.transparency):O.transparent(P.factor*P.transparency)}default:throw(0,D.assertNever)(P)}}e.executeTransform=d;function l(P,x){return{op:0,value:P,factor:x}}e.darken=l;function p(P,x){return{op:1,value:P,factor:x}}e.lighten=p;function m(P,x){return{op:2,value:P,factor:x}}e.transparent=m;function v(...P){return{op:4,values:P}}e.oneOf=v;function b(P,x,T){return{op:6,if:P,then:x,else:T}}e.ifDefinedThenElse=b;function w(P,x,T,A){return{op:5,value:P,background:x,factor:T,transparency:A}}function E(P,x){if(P!==null){if(typeof P==\"string\")return P[0]===\"#\"?k.Color.fromHex(P):x.getColor(P);if(P instanceof k.Color)return P;if(typeof P==\"object\")return d(P,x)}}e.resolveColorValue=E,e.workbenchColorsSchemaId=\"vscode://schemas/workbench-colors\";const I=_.Registry.as(f.Extensions.JSONContribution);I.registerSchema(e.workbenchColorsSchemaId,n.getColorSchema());const M=new L.RunOnceScheduler(()=>I.notifySchemaChanged(e.workbenchColorsSchemaId),200);n.onDidChangeSchema(()=>{M.isScheduled()||M.schedule()})}),define(ne[159],se([1,0,7,152,60,13,2,31]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DynamicCssRules=e.GlobalEditorPointerMoveMonitor=e.EditorPointerEventFactory=e.EditorMouseEventFactory=e.EditorMouseEvent=e.createCoordinatesRelativeToEditor=e.createEditorPagePosition=e.CoordinatesRelativeToEditor=e.EditorPagePosition=e.ClientCoordinates=e.PageCoordinates=void 0;class _{constructor(l,p){this.x=l,this.y=p,this._pageCoordinatesBrand=void 0}toClientCoordinates(){return new g(this.x-window.scrollX,this.y-window.scrollY)}}e.PageCoordinates=_;class g{constructor(l,p){this.clientX=l,this.clientY=p,this._clientCoordinatesBrand=void 0}toPageCoordinates(){return new _(this.clientX+window.scrollX,this.clientY+window.scrollY)}}e.ClientCoordinates=g;class C{constructor(l,p,m,v){this.x=l,this.y=p,this.width=m,this.height=v,this._editorPagePositionBrand=void 0}}e.EditorPagePosition=C;class s{constructor(l,p){this.x=l,this.y=p,this._positionRelativeToEditorBrand=void 0}}e.CoordinatesRelativeToEditor=s;function i(d){const l=L.getDomNodePagePosition(d);return new C(l.left,l.top,l.width,l.height)}e.createEditorPagePosition=i;function n(d,l,p){const m=l.width/d.offsetWidth,v=l.height/d.offsetHeight,b=(p.x-l.x)/m,w=(p.y-l.y)/v;return new s(b,w)}e.createCoordinatesRelativeToEditor=n;class t extends y.StandardMouseEvent{constructor(l,p,m){super(l),this._editorMouseEventBrand=void 0,this.isFromPointerCapture=p,this.pos=new _(this.posx,this.posy),this.editorPos=i(m),this.relativePos=n(m,this.editorPos,this.pos)}}e.EditorMouseEvent=t;class a{constructor(l){this._editorViewDomNode=l}_create(l){return new t(l,!1,this._editorViewDomNode)}onContextMenu(l,p){return L.addDisposableListener(l,\"contextmenu\",m=>{p(this._create(m))})}onMouseUp(l,p){return L.addDisposableListener(l,\"mouseup\",m=>{p(this._create(m))})}onMouseDown(l,p){return L.addDisposableListener(l,L.EventType.MOUSE_DOWN,m=>{p(this._create(m))})}onPointerDown(l,p){return L.addDisposableListener(l,L.EventType.POINTER_DOWN,m=>{p(this._create(m),m.pointerId)})}onMouseLeave(l,p){return L.addDisposableListener(l,L.EventType.MOUSE_LEAVE,m=>{p(this._create(m))})}onMouseMove(l,p){return L.addDisposableListener(l,\"mousemove\",m=>p(this._create(m)))}}e.EditorMouseEventFactory=a;class u{constructor(l){this._editorViewDomNode=l}_create(l){return new t(l,!1,this._editorViewDomNode)}onPointerUp(l,p){return L.addDisposableListener(l,\"pointerup\",m=>{p(this._create(m))})}onPointerDown(l,p){return L.addDisposableListener(l,L.EventType.POINTER_DOWN,m=>{p(this._create(m),m.pointerId)})}onPointerLeave(l,p){return L.addDisposableListener(l,L.EventType.POINTER_LEAVE,m=>{p(this._create(m))})}onPointerMove(l,p){return L.addDisposableListener(l,\"pointermove\",m=>p(this._create(m)))}}e.EditorPointerEventFactory=u;class h extends S.Disposable{constructor(l){super(),this._editorViewDomNode=l,this._globalPointerMoveMonitor=this._register(new k.GlobalPointerMoveMonitor),this._keydownListener=null}startMonitoring(l,p,m,v,b){this._keydownListener=L.addStandardDisposableListener(document,\"keydown\",w=>{w.toKeyCodeChord().isModifierKey()||this._globalPointerMoveMonitor.stopMonitoring(!0,w.browserEvent)},!0),this._globalPointerMoveMonitor.startMonitoring(l,p,m,w=>{v(new t(w,!0,this._editorViewDomNode))},w=>{this._keydownListener.dispose(),b(w)})}stopMonitoring(){this._globalPointerMoveMonitor.stopMonitoring(!0)}}e.GlobalEditorPointerMoveMonitor=h;class r{constructor(l){this._editor=l,this._instanceId=++r._idPool,this._counter=0,this._rules=new Map,this._garbageCollectionScheduler=new D.RunOnceScheduler(()=>this.garbageCollect(),1e3)}createClassNameRef(l){const p=this.getOrCreateRule(l);return p.increaseRefCount(),{className:p.className,dispose:()=>{p.decreaseRefCount(),this._garbageCollectionScheduler.schedule()}}}getOrCreateRule(l){const p=this.computeUniqueKey(l);let m=this._rules.get(p);if(!m){const v=this._counter++;m=new c(p,`dyn-rule-${this._instanceId}-${v}`,L.isInShadowDOM(this._editor.getContainerDomNode())?this._editor.getContainerDomNode():void 0,l),this._rules.set(p,m)}return m}computeUniqueKey(l){return JSON.stringify(l)}garbageCollect(){for(const l of this._rules.values())l.hasReferences()||(this._rules.delete(l.key),l.dispose())}}e.DynamicCssRules=r,r._idPool=0;class c{constructor(l,p,m,v){this.key=l,this.className=p,this.properties=v,this._referenceCount=0,this._styleElement=L.createStyleSheet(m),this._styleElement.textContent=this.getCssText(this.className,this.properties)}getCssText(l,p){let m=`.${l} {`;for(const v in p){const b=p[v];let w;typeof b==\"object\"?w=(0,f.asCssVariable)(b.id):w=b;const E=o(v);m+=`\n\t${E}: ${w};`}return m+=`\n}`,m}dispose(){this._styleElement.remove()}increaseRefCount(){this._referenceCount++}decreaseRefCount(){this._referenceCount--}hasReferences(){return this._referenceCount>0}}function o(d){return d.replace(/(^[A-Z])/,([l])=>l.toLowerCase()).replace(/([A-Z])/g,([l])=>`-${l.toLowerCase()}`)}}),define(ne[821],se([1,0,7,35,152,2,17,11,229,53,36,5,274,328,67,31,24,61,481,48,99,425]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Minimap=void 0;const d=140,l=2;class p{constructor(T,A,N){const F=T.options,O=F.get(140),W=F.get(142),U=W.minimap,j=F.get(49),R=F.get(71);this.renderMinimap=U.renderMinimap,this.size=R.size,this.minimapHeightIsEditorHeight=U.minimapHeightIsEditorHeight,this.scrollBeyondLastLine=F.get(103),this.paddingTop=F.get(82).top,this.paddingBottom=F.get(82).bottom,this.showSlider=R.showSlider,this.autohide=R.autohide,this.pixelRatio=O,this.typicalHalfwidthCharacterWidth=j.typicalHalfwidthCharacterWidth,this.lineHeight=F.get(65),this.minimapLeft=U.minimapLeft,this.minimapWidth=U.minimapWidth,this.minimapHeight=W.height,this.canvasInnerWidth=U.minimapCanvasInnerWidth,this.canvasInnerHeight=U.minimapCanvasInnerHeight,this.canvasOuterWidth=U.minimapCanvasOuterWidth,this.canvasOuterHeight=U.minimapCanvasOuterHeight,this.isSampling=U.minimapIsSampling,this.editorHeight=W.height,this.fontScale=U.minimapScale,this.minimapLineHeight=U.minimapLineHeight,this.minimapCharWidth=1*this.fontScale,this.charRenderer=(0,o.once)(()=>r.MinimapCharRendererFactory.create(this.fontScale,j.fontFamily)),this.defaultBackgroundColor=N.getColor(2),this.backgroundColor=p._getMinimapBackground(A,this.defaultBackgroundColor),this.foregroundAlpha=p._getMinimapForegroundOpacity(A)}static _getMinimapBackground(T,A){const N=T.getColor(a.minimapBackground);return N?new i.RGBA8(N.rgba.r,N.rgba.g,N.rgba.b,Math.round(255*N.rgba.a)):A}static _getMinimapForegroundOpacity(T){const A=T.getColor(a.minimapForegroundOpacity);return A?i.RGBA8._clamp(Math.round(255*A.rgba.a)):255}equals(T){return this.renderMinimap===T.renderMinimap&&this.size===T.size&&this.minimapHeightIsEditorHeight===T.minimapHeightIsEditorHeight&&this.scrollBeyondLastLine===T.scrollBeyondLastLine&&this.paddingTop===T.paddingTop&&this.paddingBottom===T.paddingBottom&&this.showSlider===T.showSlider&&this.autohide===T.autohide&&this.pixelRatio===T.pixelRatio&&this.typicalHalfwidthCharacterWidth===T.typicalHalfwidthCharacterWidth&&this.lineHeight===T.lineHeight&&this.minimapLeft===T.minimapLeft&&this.minimapWidth===T.minimapWidth&&this.minimapHeight===T.minimapHeight&&this.canvasInnerWidth===T.canvasInnerWidth&&this.canvasInnerHeight===T.canvasInnerHeight&&this.canvasOuterWidth===T.canvasOuterWidth&&this.canvasOuterHeight===T.canvasOuterHeight&&this.isSampling===T.isSampling&&this.editorHeight===T.editorHeight&&this.fontScale===T.fontScale&&this.minimapLineHeight===T.minimapLineHeight&&this.minimapCharWidth===T.minimapCharWidth&&this.defaultBackgroundColor&&this.defaultBackgroundColor.equals(T.defaultBackgroundColor)&&this.backgroundColor&&this.backgroundColor.equals(T.backgroundColor)&&this.foregroundAlpha===T.foregroundAlpha}}class m{constructor(T,A,N,F,O,W,U,j,R){this.scrollTop=T,this.scrollHeight=A,this.sliderNeeded=N,this._computedSliderRatio=F,this.sliderTop=O,this.sliderHeight=W,this.topPaddingLineCount=U,this.startLineNumber=j,this.endLineNumber=R}getDesiredScrollTopFromDelta(T){return Math.round(this.scrollTop+T/this._computedSliderRatio)}getDesiredScrollTopFromTouchLocation(T){return Math.round((T-this.sliderHeight/2)/this._computedSliderRatio)}intersectWithViewport(T){const A=Math.max(this.startLineNumber,T.startLineNumber),N=Math.min(this.endLineNumber,T.endLineNumber);return A>N?null:[A,N]}getYForLineNumber(T,A){return+(T-this.startLineNumber+this.topPaddingLineCount)*A}static create(T,A,N,F,O,W,U,j,R,K,G){const Z=T.pixelRatio,J=T.minimapLineHeight,X=Math.floor(T.canvasInnerHeight/J),H=T.lineHeight;if(T.minimapHeightIsEditorHeight){let de=j*T.lineHeight+T.paddingTop+T.paddingBottom;T.scrollBeyondLastLine&&(de+=Math.max(0,O-T.lineHeight-T.paddingBottom));const he=Math.max(1,Math.floor(O*O/de)),ue=Math.max(0,T.minimapHeight-he),te=ue/(K-O),q=R*te,z=ue>0,ee=Math.floor(T.canvasInnerHeight/T.minimapLineHeight),$=Math.floor(T.paddingTop/T.lineHeight);return new m(R,K,z,te,q,he,$,1,Math.min(U,ee))}let B;if(W&&N!==U){const de=N-A+1;B=Math.floor(de*J/Z)}else{const de=O/H;B=Math.floor(de*J/Z)}const V=Math.floor(T.paddingTop/H);let Y=Math.floor(T.paddingBottom/H);if(T.scrollBeyondLastLine){const de=O/H;Y=Math.max(Y,de-1)}let ie;if(Y>0){const de=O/H;ie=(V+U+Y-de-1)*J/Z}else ie=Math.max(0,(V+U)*J/Z-B);ie=Math.min(T.minimapHeight-B,ie);const ae=ie/(K-O),ce=R*ae;if(X>=V+U+Y){const de=ie>0;return new m(R,K,de,ae,ce,B,V,1,U)}else{let de;A>1?de=A+V:de=Math.max(1,R/H);let he,ue=Math.max(1,Math.floor(de-ce*Z/J));ue<V?(he=V-ue+1,ue=1):(he=0,ue=Math.max(1,ue-V)),G&&G.scrollHeight===K&&(G.scrollTop>R&&(ue=Math.min(ue,G.startLineNumber),he=Math.max(he,G.topPaddingLineCount)),G.scrollTop<R&&(ue=Math.max(ue,G.startLineNumber),he=Math.min(he,G.topPaddingLineCount)));const te=Math.min(U,ue-he+X-1),q=(R-F)/H;let z;return R>=T.paddingTop?z=(A-ue+he+q)*J/Z:z=R/T.paddingTop*(he+q)*J/Z,new m(R,K,!0,ae,z,B,he,ue,te)}}}class v{constructor(T){this.dy=T}onContentChanged(){this.dy=-1}onTokensChanged(){this.dy=-1}}v.INVALID=new v(-1);class b{constructor(T,A,N){this.renderedLayout=T,this._imageData=A,this._renderedLines=new _.RenderedLinesCollection(()=>v.INVALID),this._renderedLines._set(T.startLineNumber,N)}linesEquals(T){if(!this.scrollEquals(T))return!1;const N=this._renderedLines._get().lines;for(let F=0,O=N.length;F<O;F++)if(N[F].dy===-1)return!1;return!0}scrollEquals(T){return this.renderedLayout.startLineNumber===T.startLineNumber&&this.renderedLayout.endLineNumber===T.endLineNumber}_get(){const T=this._renderedLines._get();return{imageData:this._imageData,rendLineNumberStart:T.rendLineNumberStart,lines:T.lines}}onLinesChanged(T,A){return this._renderedLines.onLinesChanged(T,A)}onLinesDeleted(T,A){this._renderedLines.onLinesDeleted(T,A)}onLinesInserted(T,A){this._renderedLines.onLinesInserted(T,A)}onTokensChanged(T){return this._renderedLines.onTokensChanged(T)}}class w{constructor(T,A,N,F){this._backgroundFillData=w._createBackgroundFillData(A,N,F),this._buffers=[T.createImageData(A,N),T.createImageData(A,N)],this._lastUsedBuffer=0}getBuffer(){this._lastUsedBuffer=1-this._lastUsedBuffer;const T=this._buffers[this._lastUsedBuffer];return T.data.set(this._backgroundFillData),T}static _createBackgroundFillData(T,A,N){const F=N.r,O=N.g,W=N.b,U=N.a,j=new Uint8ClampedArray(T*A*4);let R=0;for(let K=0;K<A;K++)for(let G=0;G<T;G++)j[R]=F,j[R+1]=O,j[R+2]=W,j[R+3]=U,R+=4;return j}}class E{static compute(T,A,N){if(T.renderMinimap===0||!T.isSampling)return[null,[]];const{minimapLineCount:F}=C.EditorLayoutInfoComputer.computeContainedMinimapLineCount({viewLineCount:A,scrollBeyondLastLine:T.scrollBeyondLastLine,paddingTop:T.paddingTop,paddingBottom:T.paddingBottom,height:T.editorHeight,lineHeight:T.lineHeight,pixelRatio:T.pixelRatio}),O=A/F,W=O/2;if(!N||N.minimapLines.length===0){const B=[];if(B[0]=1,F>1){for(let V=0,Y=F-1;V<Y;V++)B[V]=Math.round(V*O+W);B[F-1]=A}return[new E(O,B),[]]}const U=N.minimapLines,j=U.length,R=[];let K=0,G=0,Z=1;const J=10;let X=[],H=null;for(let B=0;B<F;B++){const V=Math.max(Z,Math.round(B*O)),Y=Math.max(V,Math.round((B+1)*O));for(;K<j&&U[K]<V;){if(X.length<J){const ae=K+1+G;H&&H.type===\"deleted\"&&H._oldIndex===K-1?H.deleteToLineNumber++:(H={type:\"deleted\",_oldIndex:K,deleteFromLineNumber:ae,deleteToLineNumber:ae},X.push(H)),G--}K++}let ie;if(K<j&&U[K]<=Y)ie=U[K],K++;else if(B===0?ie=1:B+1===F?ie=A:ie=Math.round(B*O+W),X.length<J){const ae=K+1+G;H&&H.type===\"inserted\"&&H._i===B-1?H.insertToLineNumber++:(H={type:\"inserted\",_i:B,insertFromLineNumber:ae,insertToLineNumber:ae},X.push(H)),G++}R[B]=ie,Z=ie}if(X.length<J)for(;K<j;){const B=K+1+G;H&&H.type===\"deleted\"&&H._oldIndex===K-1?H.deleteToLineNumber++:(H={type:\"deleted\",_oldIndex:K,deleteFromLineNumber:B,deleteToLineNumber:B},X.push(H)),G--,K++}else X=[{type:\"flush\"}];return[new E(O,R),X]}constructor(T,A){this.samplingRatio=T,this.minimapLines=A}modelLineToMinimapLine(T){return Math.min(this.minimapLines.length,Math.max(1,Math.round(T/this.samplingRatio)))}modelLineRangeToMinimapLineRange(T,A){let N=this.modelLineToMinimapLine(T)-1;for(;N>0&&this.minimapLines[N-1]>=T;)N--;let F=this.modelLineToMinimapLine(A)-1;for(;F+1<this.minimapLines.length&&this.minimapLines[F+1]<=A;)F++;if(N===F){const O=this.minimapLines[N];if(O<T||O>A)return null}return[N+1,F+1]}decorationLineRangeToMinimapLineRange(T,A){let N=this.modelLineToMinimapLine(T),F=this.modelLineToMinimapLine(A);return T!==A&&F===N&&(F===this.minimapLines.length?N>1&&N--:F++),[N,F]}onLinesDeleted(T){const A=T.toLineNumber-T.fromLineNumber+1;let N=this.minimapLines.length,F=0;for(let O=this.minimapLines.length-1;O>=0&&!(this.minimapLines[O]<T.fromLineNumber);O--)this.minimapLines[O]<=T.toLineNumber?(this.minimapLines[O]=Math.max(1,T.fromLineNumber-1),N=Math.min(N,O),F=Math.max(F,O)):this.minimapLines[O]-=A;return[N,F]}onLinesInserted(T){const A=T.toLineNumber-T.fromLineNumber+1;for(let N=this.minimapLines.length-1;N>=0&&!(this.minimapLines[N]<T.fromLineNumber);N--)this.minimapLines[N]+=A}}class I extends g.ViewPart{constructor(T){super(T),this.tokensColorTracker=n.MinimapTokensColorTracker.getInstance(),this._selections=[],this._minimapSelections=null,this.options=new p(this._context.configuration,this._context.theme,this.tokensColorTracker);const[A]=E.compute(this.options,this._context.viewModel.getLineCount(),null);this._samplingState=A,this._shouldCheckSampling=!1,this._actual=new M(T.theme,this)}dispose(){this._actual.dispose(),super.dispose()}getDomNode(){return this._actual.getDomNode()}_onOptionsMaybeChanged(){const T=new p(this._context.configuration,this._context.theme,this.tokensColorTracker);return this.options.equals(T)?!1:(this.options=T,this._recreateLineSampling(),this._actual.onDidChangeOptions(),!0)}onConfigurationChanged(T){return this._onOptionsMaybeChanged()}onCursorStateChanged(T){return this._selections=T.selections,this._minimapSelections=null,this._actual.onSelectionChanged()}onDecorationsChanged(T){return T.affectsMinimap?this._actual.onDecorationsChanged():!1}onFlushed(T){return this._samplingState&&(this._shouldCheckSampling=!0),this._actual.onFlushed()}onLinesChanged(T){if(this._samplingState){const A=this._samplingState.modelLineRangeToMinimapLineRange(T.fromLineNumber,T.fromLineNumber+T.count-1);return A?this._actual.onLinesChanged(A[0],A[1]-A[0]+1):!1}else return this._actual.onLinesChanged(T.fromLineNumber,T.count)}onLinesDeleted(T){if(this._samplingState){const[A,N]=this._samplingState.onLinesDeleted(T);return A<=N&&this._actual.onLinesChanged(A+1,N-A+1),this._shouldCheckSampling=!0,!0}else return this._actual.onLinesDeleted(T.fromLineNumber,T.toLineNumber)}onLinesInserted(T){return this._samplingState?(this._samplingState.onLinesInserted(T),this._shouldCheckSampling=!0,!0):this._actual.onLinesInserted(T.fromLineNumber,T.toLineNumber)}onScrollChanged(T){return this._actual.onScrollChanged()}onThemeChanged(T){return this._actual.onThemeChanged(),this._onOptionsMaybeChanged(),!0}onTokensChanged(T){if(this._samplingState){const A=[];for(const N of T.ranges){const F=this._samplingState.modelLineRangeToMinimapLineRange(N.fromLineNumber,N.toLineNumber);F&&A.push({fromLineNumber:F[0],toLineNumber:F[1]})}return A.length?this._actual.onTokensChanged(A):!1}else return this._actual.onTokensChanged(T.ranges)}onTokensColorsChanged(T){return this._onOptionsMaybeChanged(),this._actual.onTokensColorsChanged()}onZonesChanged(T){return this._actual.onZonesChanged()}prepareRender(T){this._shouldCheckSampling&&(this._shouldCheckSampling=!1,this._recreateLineSampling())}render(T){let A=T.visibleRange.startLineNumber,N=T.visibleRange.endLineNumber;this._samplingState&&(A=this._samplingState.modelLineToMinimapLine(A),N=this._samplingState.modelLineToMinimapLine(N));const F={viewportContainsWhitespaceGaps:T.viewportData.whitespaceViewportData.length>0,scrollWidth:T.scrollWidth,scrollHeight:T.scrollHeight,viewportStartLineNumber:A,viewportEndLineNumber:N,viewportStartLineNumberVerticalOffset:T.getVerticalOffsetForLineNumber(A),scrollTop:T.scrollTop,scrollLeft:T.scrollLeft,viewportWidth:T.viewportWidth,viewportHeight:T.viewportHeight};this._actual.render(F)}_recreateLineSampling(){this._minimapSelections=null;const T=!!this._samplingState,[A,N]=E.compute(this.options,this._context.viewModel.getLineCount(),this._samplingState);if(this._samplingState=A,T&&this._samplingState)for(const F of N)switch(F.type){case\"deleted\":this._actual.onLinesDeleted(F.deleteFromLineNumber,F.deleteToLineNumber);break;case\"inserted\":this._actual.onLinesInserted(F.insertFromLineNumber,F.insertToLineNumber);break;case\"flush\":this._actual.onFlushed();break}}getLineCount(){return this._samplingState?this._samplingState.minimapLines.length:this._context.viewModel.getLineCount()}getRealLineCount(){return this._context.viewModel.getLineCount()}getLineContent(T){return this._samplingState?this._context.viewModel.getLineContent(this._samplingState.minimapLines[T-1]):this._context.viewModel.getLineContent(T)}getLineMaxColumn(T){return this._samplingState?this._context.viewModel.getLineMaxColumn(this._samplingState.minimapLines[T-1]):this._context.viewModel.getLineMaxColumn(T)}getMinimapLinesRenderingData(T,A,N){if(this._samplingState){const F=[];for(let O=0,W=A-T+1;O<W;O++)N[O]?F[O]=this._context.viewModel.getViewLineData(this._samplingState.minimapLines[T+O-1]):F[O]=null;return F}return this._context.viewModel.getMinimapLinesRenderingData(T,A,N).data}getSelections(){if(this._minimapSelections===null)if(this._samplingState){this._minimapSelections=[];for(const T of this._selections){const[A,N]=this._samplingState.decorationLineRangeToMinimapLineRange(T.startLineNumber,T.endLineNumber);this._minimapSelections.push(new u.Selection(A,T.startColumn,N,T.endColumn))}}else this._minimapSelections=this._selections;return this._minimapSelections}getMinimapDecorationsInViewport(T,A){let N;if(this._samplingState){const O=this._samplingState.minimapLines[T-1],W=this._samplingState.minimapLines[A-1];N=new s.Range(O,1,W,this._context.viewModel.getLineMaxColumn(W))}else N=new s.Range(T,1,A,this._context.viewModel.getLineMaxColumn(A));const F=this._context.viewModel.getMinimapDecorationsInRange(N);if(this._samplingState){const O=[];for(const W of F){if(!W.options.minimap)continue;const U=W.range,j=this._samplingState.modelLineToMinimapLine(U.startLineNumber),R=this._samplingState.modelLineToMinimapLine(U.endLineNumber);O.push(new t.ViewModelDecoration(new s.Range(j,U.startColumn,R,U.endColumn),W.options))}return O}return F}getOptions(){return this._context.viewModel.model.getOptions()}revealLineNumber(T){this._samplingState&&(T=this._samplingState.minimapLines[T-1]),this._context.viewModel.revealRange(\"mouse\",!1,new s.Range(T,1,T,1),1,0)}setScrollTop(T){this._context.viewModel.viewLayout.setScrollPosition({scrollTop:T},1)}}e.Minimap=I;class M extends D.Disposable{constructor(T,A){super(),this._renderDecorations=!1,this._gestureInProgress=!1,this._theme=T,this._model=A,this._lastRenderData=null,this._buffers=null,this._selectionColor=this._theme.getColor(a.minimapSelection),this._domNode=(0,k.createFastDomNode)(document.createElement(\"div\")),g.PartFingerprints.write(this._domNode,8),this._domNode.setClassName(this._getMinimapDomNodeClassName()),this._domNode.setPosition(\"absolute\"),this._domNode.setAttribute(\"role\",\"presentation\"),this._domNode.setAttribute(\"aria-hidden\",\"true\"),this._shadow=(0,k.createFastDomNode)(document.createElement(\"div\")),this._shadow.setClassName(\"minimap-shadow-hidden\"),this._domNode.appendChild(this._shadow),this._canvas=(0,k.createFastDomNode)(document.createElement(\"canvas\")),this._canvas.setPosition(\"absolute\"),this._canvas.setLeft(0),this._domNode.appendChild(this._canvas),this._decorationsCanvas=(0,k.createFastDomNode)(document.createElement(\"canvas\")),this._decorationsCanvas.setPosition(\"absolute\"),this._decorationsCanvas.setClassName(\"minimap-decorations-layer\"),this._decorationsCanvas.setLeft(0),this._domNode.appendChild(this._decorationsCanvas),this._slider=(0,k.createFastDomNode)(document.createElement(\"div\")),this._slider.setPosition(\"absolute\"),this._slider.setClassName(\"minimap-slider\"),this._slider.setLayerHinting(!0),this._slider.setContain(\"strict\"),this._domNode.appendChild(this._slider),this._sliderHorizontal=(0,k.createFastDomNode)(document.createElement(\"div\")),this._sliderHorizontal.setPosition(\"absolute\"),this._sliderHorizontal.setClassName(\"minimap-slider-horizontal\"),this._slider.appendChild(this._sliderHorizontal),this._applyLayout(),this._pointerDownListener=L.addStandardDisposableListener(this._domNode.domNode,L.EventType.POINTER_DOWN,N=>{if(N.preventDefault(),this._model.options.renderMinimap===0||!this._lastRenderData)return;if(this._model.options.size!==\"proportional\"){if(N.button===0&&this._lastRenderData){const R=L.getDomNodePagePosition(this._slider.domNode),K=R.top+R.height/2;this._startSliderDragging(N,K,this._lastRenderData.renderedLayout)}return}const O=this._model.options.minimapLineHeight,W=this._model.options.canvasInnerHeight/this._model.options.canvasOuterHeight*N.offsetY;let j=Math.floor(W/O)+this._lastRenderData.renderedLayout.startLineNumber-this._lastRenderData.renderedLayout.topPaddingLineCount;j=Math.min(j,this._model.getLineCount()),this._model.revealLineNumber(j)}),this._sliderPointerMoveMonitor=new y.GlobalPointerMoveMonitor,this._sliderPointerDownListener=L.addStandardDisposableListener(this._slider.domNode,L.EventType.POINTER_DOWN,N=>{N.preventDefault(),N.stopPropagation(),N.button===0&&this._lastRenderData&&this._startSliderDragging(N,N.pageY,this._lastRenderData.renderedLayout)}),this._gestureDisposable=h.Gesture.addTarget(this._domNode.domNode),this._sliderTouchStartListener=L.addDisposableListener(this._domNode.domNode,h.EventType.Start,N=>{N.preventDefault(),N.stopPropagation(),this._lastRenderData&&(this._slider.toggleClassName(\"active\",!0),this._gestureInProgress=!0,this.scrollDueToTouchEvent(N))},{passive:!1}),this._sliderTouchMoveListener=L.addDisposableListener(this._domNode.domNode,h.EventType.Change,N=>{N.preventDefault(),N.stopPropagation(),this._lastRenderData&&this._gestureInProgress&&this.scrollDueToTouchEvent(N)},{passive:!1}),this._sliderTouchEndListener=L.addStandardDisposableListener(this._domNode.domNode,h.EventType.End,N=>{N.preventDefault(),N.stopPropagation(),this._gestureInProgress=!1,this._slider.toggleClassName(\"active\",!1)})}_startSliderDragging(T,A,N){if(!T.target||!(T.target instanceof Element))return;const F=T.pageX;this._slider.toggleClassName(\"active\",!0);const O=(W,U)=>{const j=L.getDomNodePagePosition(this._domNode.domNode),R=Math.min(Math.abs(U-F),Math.abs(U-j.left),Math.abs(U-j.left-j.width));if(S.isWindows&&R>d){this._model.setScrollTop(N.scrollTop);return}const K=W-A;this._model.setScrollTop(N.getDesiredScrollTopFromDelta(K))};T.pageY!==A&&O(T.pageY,F),this._sliderPointerMoveMonitor.startMonitoring(T.target,T.pointerId,T.buttons,W=>O(W.pageY,W.pageX),()=>{this._slider.toggleClassName(\"active\",!1)})}scrollDueToTouchEvent(T){const A=this._domNode.domNode.getBoundingClientRect().top,N=this._lastRenderData.renderedLayout.getDesiredScrollTopFromTouchLocation(T.pageY-A);this._model.setScrollTop(N)}dispose(){this._pointerDownListener.dispose(),this._sliderPointerMoveMonitor.dispose(),this._sliderPointerDownListener.dispose(),this._gestureDisposable.dispose(),this._sliderTouchStartListener.dispose(),this._sliderTouchMoveListener.dispose(),this._sliderTouchEndListener.dispose(),super.dispose()}_getMinimapDomNodeClassName(){const T=[\"minimap\"];return this._model.options.showSlider===\"always\"?T.push(\"slider-always\"):T.push(\"slider-mouseover\"),this._model.options.autohide&&T.push(\"autohide\"),T.join(\" \")}getDomNode(){return this._domNode}_applyLayout(){this._domNode.setLeft(this._model.options.minimapLeft),this._domNode.setWidth(this._model.options.minimapWidth),this._domNode.setHeight(this._model.options.minimapHeight),this._shadow.setHeight(this._model.options.minimapHeight),this._canvas.setWidth(this._model.options.canvasOuterWidth),this._canvas.setHeight(this._model.options.canvasOuterHeight),this._canvas.domNode.width=this._model.options.canvasInnerWidth,this._canvas.domNode.height=this._model.options.canvasInnerHeight,this._decorationsCanvas.setWidth(this._model.options.canvasOuterWidth),this._decorationsCanvas.setHeight(this._model.options.canvasOuterHeight),this._decorationsCanvas.domNode.width=this._model.options.canvasInnerWidth,this._decorationsCanvas.domNode.height=this._model.options.canvasInnerHeight,this._slider.setWidth(this._model.options.minimapWidth)}_getBuffer(){return this._buffers||this._model.options.canvasInnerWidth>0&&this._model.options.canvasInnerHeight>0&&(this._buffers=new w(this._canvas.domNode.getContext(\"2d\"),this._model.options.canvasInnerWidth,this._model.options.canvasInnerHeight,this._model.options.backgroundColor)),this._buffers?this._buffers.getBuffer():null}onDidChangeOptions(){this._lastRenderData=null,this._buffers=null,this._applyLayout(),this._domNode.setClassName(this._getMinimapDomNodeClassName())}onSelectionChanged(){return this._renderDecorations=!0,!0}onDecorationsChanged(){return this._renderDecorations=!0,!0}onFlushed(){return this._lastRenderData=null,!0}onLinesChanged(T,A){return this._lastRenderData?this._lastRenderData.onLinesChanged(T,A):!1}onLinesDeleted(T,A){var N;return(N=this._lastRenderData)===null||N===void 0||N.onLinesDeleted(T,A),!0}onLinesInserted(T,A){var N;return(N=this._lastRenderData)===null||N===void 0||N.onLinesInserted(T,A),!0}onScrollChanged(){return this._renderDecorations=!0,!0}onThemeChanged(){return this._selectionColor=this._theme.getColor(a.minimapSelection),this._renderDecorations=!0,!0}onTokensChanged(T){return this._lastRenderData?this._lastRenderData.onTokensChanged(T):!1}onTokensColorsChanged(){return this._lastRenderData=null,this._buffers=null,!0}onZonesChanged(){return this._lastRenderData=null,!0}render(T){if(this._model.options.renderMinimap===0){this._shadow.setClassName(\"minimap-shadow-hidden\"),this._sliderHorizontal.setWidth(0),this._sliderHorizontal.setHeight(0);return}T.scrollLeft+T.viewportWidth>=T.scrollWidth?this._shadow.setClassName(\"minimap-shadow-hidden\"):this._shadow.setClassName(\"minimap-shadow-visible\");const N=m.create(this._model.options,T.viewportStartLineNumber,T.viewportEndLineNumber,T.viewportStartLineNumberVerticalOffset,T.viewportHeight,T.viewportContainsWhitespaceGaps,this._model.getLineCount(),this._model.getRealLineCount(),T.scrollTop,T.scrollHeight,this._lastRenderData?this._lastRenderData.renderedLayout:null);this._slider.setDisplay(N.sliderNeeded?\"block\":\"none\"),this._slider.setTop(N.sliderTop),this._slider.setHeight(N.sliderHeight),this._sliderHorizontal.setLeft(0),this._sliderHorizontal.setWidth(this._model.options.minimapWidth),this._sliderHorizontal.setTop(0),this._sliderHorizontal.setHeight(N.sliderHeight),this.renderDecorations(N),this._lastRenderData=this.renderLines(N)}renderDecorations(T){if(this._renderDecorations){this._renderDecorations=!1;const A=this._model.getSelections();A.sort(s.Range.compareRangesUsingStarts);const N=this._model.getMinimapDecorationsInViewport(T.startLineNumber,T.endLineNumber);N.sort((Z,J)=>(Z.options.zIndex||0)-(J.options.zIndex||0));const{canvasInnerWidth:F,canvasInnerHeight:O}=this._model.options,W=this._model.options.minimapLineHeight,U=this._model.options.minimapCharWidth,j=this._model.getOptions().tabSize,R=this._decorationsCanvas.domNode.getContext(\"2d\");R.clearRect(0,0,F,O);const K=new P(T.startLineNumber,T.endLineNumber,!1);this._renderSelectionLineHighlights(R,A,K,T,W),this._renderDecorationsLineHighlights(R,N,K,T,W);const G=new P(T.startLineNumber,T.endLineNumber,null);this._renderSelectionsHighlights(R,A,G,T,W,j,U,F),this._renderDecorationsHighlights(R,N,G,T,W,j,U,F)}}_renderSelectionLineHighlights(T,A,N,F,O){if(!this._selectionColor||this._selectionColor.isTransparent())return;T.fillStyle=this._selectionColor.transparent(.5).toString();let W=0,U=0;for(const j of A){const R=F.intersectWithViewport(j);if(!R)continue;const[K,G]=R;for(let X=K;X<=G;X++)N.set(X,!0);const Z=F.getYForLineNumber(K,O),J=F.getYForLineNumber(G,O);U>=Z||(U>W&&T.fillRect(C.MINIMAP_GUTTER_WIDTH,W,T.canvas.width,U-W),W=Z),U=J}U>W&&T.fillRect(C.MINIMAP_GUTTER_WIDTH,W,T.canvas.width,U-W)}_renderDecorationsLineHighlights(T,A,N,F,O){const W=new Map;for(let U=A.length-1;U>=0;U--){const j=A[U],R=j.options.minimap;if(!R||R.position!==c.MinimapPosition.Inline)continue;const K=F.intersectWithViewport(j.range);if(!K)continue;const[G,Z]=K,J=R.getColor(this._theme.value);if(!J||J.isTransparent())continue;let X=W.get(J.toString());X||(X=J.transparent(.5).toString(),W.set(J.toString(),X)),T.fillStyle=X;for(let H=G;H<=Z;H++){if(N.has(H))continue;N.set(H,!0);const B=F.getYForLineNumber(G,O);T.fillRect(C.MINIMAP_GUTTER_WIDTH,B,T.canvas.width,O)}}}_renderSelectionsHighlights(T,A,N,F,O,W,U,j){if(!(!this._selectionColor||this._selectionColor.isTransparent()))for(const R of A){const K=F.intersectWithViewport(R);if(!K)continue;const[G,Z]=K;for(let J=G;J<=Z;J++)this.renderDecorationOnLine(T,N,R,this._selectionColor,F,J,O,O,W,U,j)}}_renderDecorationsHighlights(T,A,N,F,O,W,U,j){for(const R of A){const K=R.options.minimap;if(!K)continue;const G=F.intersectWithViewport(R.range);if(!G)continue;const[Z,J]=G,X=K.getColor(this._theme.value);if(!(!X||X.isTransparent()))for(let H=Z;H<=J;H++)switch(K.position){case c.MinimapPosition.Inline:this.renderDecorationOnLine(T,N,R.range,X,F,H,O,O,W,U,j);continue;case c.MinimapPosition.Gutter:{const B=F.getYForLineNumber(H,O),V=2;this.renderDecoration(T,X,V,B,l,O);continue}}}}renderDecorationOnLine(T,A,N,F,O,W,U,j,R,K,G){const Z=O.getYForLineNumber(W,j);if(Z+U<0||Z>this._model.options.canvasInnerHeight)return;const{startLineNumber:J,endLineNumber:X}=N,H=J===W?N.startColumn:1,B=X===W?N.endColumn:this._model.getLineMaxColumn(W),V=this.getXOffsetForPosition(A,W,H,R,K,G),Y=this.getXOffsetForPosition(A,W,B,R,K,G);this.renderDecoration(T,F,V,Z,Y-V,U)}getXOffsetForPosition(T,A,N,F,O,W){if(N===1)return C.MINIMAP_GUTTER_WIDTH;if((N-1)*O>=W)return W;let j=T.get(A);if(!j){const R=this._model.getLineContent(A);j=[C.MINIMAP_GUTTER_WIDTH];let K=C.MINIMAP_GUTTER_WIDTH;for(let G=1;G<R.length+1;G++){const Z=R.charCodeAt(G-1),J=Z===9?F*O:f.isFullWidthCharacter(Z)?2*O:O,X=K+J;if(X>=W){j[G]=W;break}j[G]=X,K=X}T.set(A,j)}return N-1<j.length?j[N-1]:W}renderDecoration(T,A,N,F,O,W){T.fillStyle=A&&A.toString()||\"\",T.fillRect(N,F,O,W)}renderLines(T){const A=T.startLineNumber,N=T.endLineNumber,F=this._model.options.minimapLineHeight;if(this._lastRenderData&&this._lastRenderData.linesEquals(T)){const oe=this._lastRenderData._get();return new b(T,oe.imageData,oe.lines)}const O=this._getBuffer();if(!O)return null;const[W,U,j]=M._renderUntouchedLines(O,T.topPaddingLineCount,A,N,F,this._lastRenderData),R=this._model.getMinimapLinesRenderingData(A,N,j),K=this._model.getOptions().tabSize,G=this._model.options.defaultBackgroundColor,Z=this._model.options.backgroundColor,J=this._model.options.foregroundAlpha,X=this._model.tokensColorTracker,H=X.backgroundIsLight(),B=this._model.options.renderMinimap,V=this._model.options.charRenderer(),Y=this._model.options.fontScale,ie=this._model.options.minimapCharWidth,ce=(B===1?2:2+1)*Y,de=F>ce?Math.floor((F-ce)/2):0,he=Z.a/255,ue=new i.RGBA8(Math.round((Z.r-G.r)*he+G.r),Math.round((Z.g-G.g)*he+G.g),Math.round((Z.b-G.b)*he+G.b),255);let te=T.topPaddingLineCount*F;const q=[];for(let oe=0,ge=N-A+1;oe<ge;oe++)j[oe]&&M._renderLine(O,ue,Z.a,H,B,ie,X,J,V,te,de,K,R[oe],Y,F),q[oe]=new v(te),te+=F;const z=W===-1?0:W,$=(U===-1?O.height:U)-z;return this._canvas.domNode.getContext(\"2d\").putImageData(O,0,0,0,z,O.width,$),new b(T,O,q)}static _renderUntouchedLines(T,A,N,F,O,W){const U=[];if(!W){for(let te=0,q=F-N+1;te<q;te++)U[te]=!0;return[-1,-1,U]}const j=W._get(),R=j.imageData.data,K=j.rendLineNumberStart,G=j.lines,Z=G.length,J=T.width,X=T.data,H=(F-N+1)*O*J*4;let B=-1,V=-1,Y=-1,ie=-1,ae=-1,ce=-1,de=A*O;for(let te=N;te<=F;te++){const q=te-N,z=te-K,ee=z>=0&&z<Z?G[z].dy:-1;if(ee===-1){U[q]=!0,de+=O;continue}const $=ee*J*4,re=(ee+O)*J*4,oe=de*J*4,ge=(de+O)*J*4;ie===$&&ce===oe?(ie=re,ce=ge):(Y!==-1&&(X.set(R.subarray(Y,ie),ae),B===-1&&Y===0&&Y===ae&&(B=ie),V===-1&&ie===H&&Y===ae&&(V=Y)),Y=$,ie=re,ae=oe,ce=ge),U[q]=!1,de+=O}Y!==-1&&(X.set(R.subarray(Y,ie),ae),B===-1&&Y===0&&Y===ae&&(B=ie),V===-1&&ie===H&&Y===ae&&(V=Y));const he=B===-1?-1:B/(J*4),ue=V===-1?-1:V/(J*4);return[he,ue,U]}static _renderLine(T,A,N,F,O,W,U,j,R,K,G,Z,J,X,H){const B=J.content,V=J.tokens,Y=T.width-W,ie=H===1;let ae=C.MINIMAP_GUTTER_WIDTH,ce=0,de=0;for(let he=0,ue=V.getCount();he<ue;he++){const te=V.getEndOffset(he),q=V.getForeground(he),z=U.getColor(q);for(;ce<te;ce++){if(ae>Y)return;const ee=B.charCodeAt(ce);if(ee===9){const $=Z-(ce+de)%Z;de+=$-1,ae+=$*W}else if(ee===32)ae+=W;else{const $=f.isFullWidthCharacter(ee)?2:1;for(let re=0;re<$;re++)if(O===2?R.blockRenderChar(T,ae,K+G,z,j,A,N,ie):R.renderChar(T,ae,K+G,ee,z,j,A,N,X,F,ie),ae+=W,ae>Y)return}}}}}class P{constructor(T,A,N){this._startLineNumber=T,this._endLineNumber=A,this._defaultValue=N,this._values=[];for(let F=0,O=this._endLineNumber-this._startLineNumber+1;F<O;F++)this._values[F]=N}has(T){return this.get(T)!==this._defaultValue}set(T,A){T<this._startLineNumber||T>this._endLineNumber||(this._values[T-this._startLineNumber]=A)}get(T){return T<this._startLineNumber||T>this._endLineNumber?this._defaultValue:this._values[T-this._startLineNumber]}}}),define(ne[822],se([1,0,608,31]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.diffMoveBorderActive=e.diffMoveBorder=void 0,e.diffMoveBorder=(0,k.registerColor)(\"diffEditor.move.border\",{dark:\"#8b8b8b9c\",light:\"#8b8b8b9c\",hcDark:\"#8b8b8b9c\",hcLight:\"#8b8b8b9c\"},(0,L.localize)(0,null)),e.diffMoveBorderActive=(0,k.registerColor)(\"diffEditor.moveActive.border\",{dark:\"#FFA500\",light:\"#FFA500\",hcDark:\"#FFA500\",hcLight:\"#FFA500\"},(0,L.localize)(1,null))}),define(ne[249],se([1,0,706,31,463]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SYMBOL_ICON_VARIABLE_FOREGROUND=e.SYMBOL_ICON_UNIT_FOREGROUND=e.SYMBOL_ICON_TYPEPARAMETER_FOREGROUND=e.SYMBOL_ICON_TEXT_FOREGROUND=e.SYMBOL_ICON_STRUCT_FOREGROUND=e.SYMBOL_ICON_STRING_FOREGROUND=e.SYMBOL_ICON_SNIPPET_FOREGROUND=e.SYMBOL_ICON_REFERENCE_FOREGROUND=e.SYMBOL_ICON_PROPERTY_FOREGROUND=e.SYMBOL_ICON_PACKAGE_FOREGROUND=e.SYMBOL_ICON_OPERATOR_FOREGROUND=e.SYMBOL_ICON_OBJECT_FOREGROUND=e.SYMBOL_ICON_NUMBER_FOREGROUND=e.SYMBOL_ICON_NULL_FOREGROUND=e.SYMBOL_ICON_NAMESPACE_FOREGROUND=e.SYMBOL_ICON_MODULE_FOREGROUND=e.SYMBOL_ICON_METHOD_FOREGROUND=e.SYMBOL_ICON_KEYWORD_FOREGROUND=e.SYMBOL_ICON_KEY_FOREGROUND=e.SYMBOL_ICON_INTERFACE_FOREGROUND=e.SYMBOL_ICON_FUNCTION_FOREGROUND=e.SYMBOL_ICON_FOLDER_FOREGROUND=e.SYMBOL_ICON_FILE_FOREGROUND=e.SYMBOL_ICON_FIELD_FOREGROUND=e.SYMBOL_ICON_EVENT_FOREGROUND=e.SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND=e.SYMBOL_ICON_ENUMERATOR_FOREGROUND=e.SYMBOL_ICON_CONSTRUCTOR_FOREGROUND=e.SYMBOL_ICON_CONSTANT_FOREGROUND=e.SYMBOL_ICON_COLOR_FOREGROUND=e.SYMBOL_ICON_CLASS_FOREGROUND=e.SYMBOL_ICON_BOOLEAN_FOREGROUND=e.SYMBOL_ICON_ARRAY_FOREGROUND=void 0,e.SYMBOL_ICON_ARRAY_FOREGROUND=(0,k.registerColor)(\"symbolIcon.arrayForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(0,null)),e.SYMBOL_ICON_BOOLEAN_FOREGROUND=(0,k.registerColor)(\"symbolIcon.booleanForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(1,null)),e.SYMBOL_ICON_CLASS_FOREGROUND=(0,k.registerColor)(\"symbolIcon.classForeground\",{dark:\"#EE9D28\",light:\"#D67E00\",hcDark:\"#EE9D28\",hcLight:\"#D67E00\"},(0,L.localize)(2,null)),e.SYMBOL_ICON_COLOR_FOREGROUND=(0,k.registerColor)(\"symbolIcon.colorForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(3,null)),e.SYMBOL_ICON_CONSTANT_FOREGROUND=(0,k.registerColor)(\"symbolIcon.constantForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(4,null)),e.SYMBOL_ICON_CONSTRUCTOR_FOREGROUND=(0,k.registerColor)(\"symbolIcon.constructorForeground\",{dark:\"#B180D7\",light:\"#652D90\",hcDark:\"#B180D7\",hcLight:\"#652D90\"},(0,L.localize)(5,null)),e.SYMBOL_ICON_ENUMERATOR_FOREGROUND=(0,k.registerColor)(\"symbolIcon.enumeratorForeground\",{dark:\"#EE9D28\",light:\"#D67E00\",hcDark:\"#EE9D28\",hcLight:\"#D67E00\"},(0,L.localize)(6,null)),e.SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND=(0,k.registerColor)(\"symbolIcon.enumeratorMemberForeground\",{dark:\"#75BEFF\",light:\"#007ACC\",hcDark:\"#75BEFF\",hcLight:\"#007ACC\"},(0,L.localize)(7,null)),e.SYMBOL_ICON_EVENT_FOREGROUND=(0,k.registerColor)(\"symbolIcon.eventForeground\",{dark:\"#EE9D28\",light:\"#D67E00\",hcDark:\"#EE9D28\",hcLight:\"#D67E00\"},(0,L.localize)(8,null)),e.SYMBOL_ICON_FIELD_FOREGROUND=(0,k.registerColor)(\"symbolIcon.fieldForeground\",{dark:\"#75BEFF\",light:\"#007ACC\",hcDark:\"#75BEFF\",hcLight:\"#007ACC\"},(0,L.localize)(9,null)),e.SYMBOL_ICON_FILE_FOREGROUND=(0,k.registerColor)(\"symbolIcon.fileForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(10,null)),e.SYMBOL_ICON_FOLDER_FOREGROUND=(0,k.registerColor)(\"symbolIcon.folderForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(11,null)),e.SYMBOL_ICON_FUNCTION_FOREGROUND=(0,k.registerColor)(\"symbolIcon.functionForeground\",{dark:\"#B180D7\",light:\"#652D90\",hcDark:\"#B180D7\",hcLight:\"#652D90\"},(0,L.localize)(12,null)),e.SYMBOL_ICON_INTERFACE_FOREGROUND=(0,k.registerColor)(\"symbolIcon.interfaceForeground\",{dark:\"#75BEFF\",light:\"#007ACC\",hcDark:\"#75BEFF\",hcLight:\"#007ACC\"},(0,L.localize)(13,null)),e.SYMBOL_ICON_KEY_FOREGROUND=(0,k.registerColor)(\"symbolIcon.keyForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(14,null)),e.SYMBOL_ICON_KEYWORD_FOREGROUND=(0,k.registerColor)(\"symbolIcon.keywordForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(15,null)),e.SYMBOL_ICON_METHOD_FOREGROUND=(0,k.registerColor)(\"symbolIcon.methodForeground\",{dark:\"#B180D7\",light:\"#652D90\",hcDark:\"#B180D7\",hcLight:\"#652D90\"},(0,L.localize)(16,null)),e.SYMBOL_ICON_MODULE_FOREGROUND=(0,k.registerColor)(\"symbolIcon.moduleForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(17,null)),e.SYMBOL_ICON_NAMESPACE_FOREGROUND=(0,k.registerColor)(\"symbolIcon.namespaceForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(18,null)),e.SYMBOL_ICON_NULL_FOREGROUND=(0,k.registerColor)(\"symbolIcon.nullForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(19,null)),e.SYMBOL_ICON_NUMBER_FOREGROUND=(0,k.registerColor)(\"symbolIcon.numberForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(20,null)),e.SYMBOL_ICON_OBJECT_FOREGROUND=(0,k.registerColor)(\"symbolIcon.objectForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(21,null)),e.SYMBOL_ICON_OPERATOR_FOREGROUND=(0,k.registerColor)(\"symbolIcon.operatorForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(22,null)),e.SYMBOL_ICON_PACKAGE_FOREGROUND=(0,k.registerColor)(\"symbolIcon.packageForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(23,null)),e.SYMBOL_ICON_PROPERTY_FOREGROUND=(0,k.registerColor)(\"symbolIcon.propertyForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(24,null)),e.SYMBOL_ICON_REFERENCE_FOREGROUND=(0,k.registerColor)(\"symbolIcon.referenceForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(25,null)),e.SYMBOL_ICON_SNIPPET_FOREGROUND=(0,k.registerColor)(\"symbolIcon.snippetForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(26,null)),e.SYMBOL_ICON_STRING_FOREGROUND=(0,k.registerColor)(\"symbolIcon.stringForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(27,null)),e.SYMBOL_ICON_STRUCT_FOREGROUND=(0,k.registerColor)(\"symbolIcon.structForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(28,null)),e.SYMBOL_ICON_TEXT_FOREGROUND=(0,k.registerColor)(\"symbolIcon.textForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(29,null)),e.SYMBOL_ICON_TYPEPARAMETER_FOREGROUND=(0,k.registerColor)(\"symbolIcon.typeParameterForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(30,null)),e.SYMBOL_ICON_UNIT_FOREGROUND=(0,k.registerColor)(\"symbolIcon.unitForeground\",{dark:k.foreground,light:k.foreground,hcDark:k.foreground,hcLight:k.foreground},(0,L.localize)(31,null)),e.SYMBOL_ICON_VARIABLE_FOREGROUND=(0,k.registerColor)(\"symbolIcon.variableForeground\",{dark:\"#75BEFF\",light:\"#007ACC\",hcDark:\"#75BEFF\",hcLight:\"#007ACC\"},(0,L.localize)(32,null))}),define(ne[823],se([1,0,25,113,641,172,249]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.toMenuItems=void 0;const D=Object.freeze({kind:k.CodeActionKind.Empty,title:(0,y.localize)(0,null)}),S=Object.freeze([{kind:k.CodeActionKind.QuickFix,title:(0,y.localize)(1,null)},{kind:k.CodeActionKind.RefactorExtract,title:(0,y.localize)(2,null),icon:L.Codicon.wrench},{kind:k.CodeActionKind.RefactorInline,title:(0,y.localize)(3,null),icon:L.Codicon.wrench},{kind:k.CodeActionKind.RefactorRewrite,title:(0,y.localize)(4,null),icon:L.Codicon.wrench},{kind:k.CodeActionKind.RefactorMove,title:(0,y.localize)(5,null),icon:L.Codicon.wrench},{kind:k.CodeActionKind.SurroundWith,title:(0,y.localize)(6,null),icon:L.Codicon.symbolSnippet},{kind:k.CodeActionKind.Source,title:(0,y.localize)(7,null),icon:L.Codicon.symbolFile},D]);function f(_,g,C){if(!g)return _.map(n=>({kind:\"action\",item:n,group:D,disabled:!!n.action.disabled,label:n.action.disabled||n.action.title}));const s=S.map(n=>({group:n,actions:[]}));for(const n of _){const t=n.action.kind?new k.CodeActionKind(n.action.kind):k.CodeActionKind.None;for(const a of s)if(a.group.kind.contains(t)){a.actions.push(n);break}}const i=[];for(const n of s)if(n.actions.length){i.push({kind:\"header\",group:n.group});for(const t of n.actions)i.push({kind:\"action\",item:t,group:n.group,label:t.action.title,disabled:!!t.action.disabled,keybinding:C(t.action)})}return i}e.toMenuItems=f}),define(ne[105],se([1,0,31,38]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.defaultMenuStyles=e.defaultSelectBoxStyles=e.getListStyles=e.defaultListStyles=e.defaultBreadcrumbsWidgetStyles=e.defaultCountBadgeStyles=e.defaultFindWidgetStyles=e.defaultInputBoxStyles=e.defaultDialogStyles=e.defaultCheckboxStyles=e.defaultToggleStyles=e.defaultProgressBarStyles=e.defaultButtonStyles=e.defaultKeybindingLabelStyles=void 0;function y(S,f){const _=Object.assign({},f);for(const g in S){const C=S[g];_[g]=C!==void 0?(0,L.asCssVariable)(C):void 0}return _}e.defaultKeybindingLabelStyles={keybindingLabelBackground:(0,L.asCssVariable)(L.keybindingLabelBackground),keybindingLabelForeground:(0,L.asCssVariable)(L.keybindingLabelForeground),keybindingLabelBorder:(0,L.asCssVariable)(L.keybindingLabelBorder),keybindingLabelBottomBorder:(0,L.asCssVariable)(L.keybindingLabelBottomBorder),keybindingLabelShadow:(0,L.asCssVariable)(L.widgetShadow)},e.defaultButtonStyles={buttonForeground:(0,L.asCssVariable)(L.buttonForeground),buttonSeparator:(0,L.asCssVariable)(L.buttonSeparator),buttonBackground:(0,L.asCssVariable)(L.buttonBackground),buttonHoverBackground:(0,L.asCssVariable)(L.buttonHoverBackground),buttonSecondaryForeground:(0,L.asCssVariable)(L.buttonSecondaryForeground),buttonSecondaryBackground:(0,L.asCssVariable)(L.buttonSecondaryBackground),buttonSecondaryHoverBackground:(0,L.asCssVariable)(L.buttonSecondaryHoverBackground),buttonBorder:(0,L.asCssVariable)(L.buttonBorder)},e.defaultProgressBarStyles={progressBarBackground:(0,L.asCssVariable)(L.progressBarBackground)},e.defaultToggleStyles={inputActiveOptionBorder:(0,L.asCssVariable)(L.inputActiveOptionBorder),inputActiveOptionForeground:(0,L.asCssVariable)(L.inputActiveOptionForeground),inputActiveOptionBackground:(0,L.asCssVariable)(L.inputActiveOptionBackground)},e.defaultCheckboxStyles={checkboxBackground:(0,L.asCssVariable)(L.checkboxBackground),checkboxBorder:(0,L.asCssVariable)(L.checkboxBorder),checkboxForeground:(0,L.asCssVariable)(L.checkboxForeground)},e.defaultDialogStyles={dialogBackground:(0,L.asCssVariable)(L.editorWidgetBackground),dialogForeground:(0,L.asCssVariable)(L.editorWidgetForeground),dialogShadow:(0,L.asCssVariable)(L.widgetShadow),dialogBorder:(0,L.asCssVariable)(L.contrastBorder),errorIconForeground:(0,L.asCssVariable)(L.problemsErrorIconForeground),warningIconForeground:(0,L.asCssVariable)(L.problemsWarningIconForeground),infoIconForeground:(0,L.asCssVariable)(L.problemsInfoIconForeground),textLinkForeground:(0,L.asCssVariable)(L.textLinkForeground)},e.defaultInputBoxStyles={inputBackground:(0,L.asCssVariable)(L.inputBackground),inputForeground:(0,L.asCssVariable)(L.inputForeground),inputBorder:(0,L.asCssVariable)(L.inputBorder),inputValidationInfoBorder:(0,L.asCssVariable)(L.inputValidationInfoBorder),inputValidationInfoBackground:(0,L.asCssVariable)(L.inputValidationInfoBackground),inputValidationInfoForeground:(0,L.asCssVariable)(L.inputValidationInfoForeground),inputValidationWarningBorder:(0,L.asCssVariable)(L.inputValidationWarningBorder),inputValidationWarningBackground:(0,L.asCssVariable)(L.inputValidationWarningBackground),inputValidationWarningForeground:(0,L.asCssVariable)(L.inputValidationWarningForeground),inputValidationErrorBorder:(0,L.asCssVariable)(L.inputValidationErrorBorder),inputValidationErrorBackground:(0,L.asCssVariable)(L.inputValidationErrorBackground),inputValidationErrorForeground:(0,L.asCssVariable)(L.inputValidationErrorForeground)},e.defaultFindWidgetStyles={listFilterWidgetBackground:(0,L.asCssVariable)(L.listFilterWidgetBackground),listFilterWidgetOutline:(0,L.asCssVariable)(L.listFilterWidgetOutline),listFilterWidgetNoMatchesOutline:(0,L.asCssVariable)(L.listFilterWidgetNoMatchesOutline),listFilterWidgetShadow:(0,L.asCssVariable)(L.listFilterWidgetShadow),inputBoxStyles:e.defaultInputBoxStyles,toggleStyles:e.defaultToggleStyles},e.defaultCountBadgeStyles={badgeBackground:(0,L.asCssVariable)(L.badgeBackground),badgeForeground:(0,L.asCssVariable)(L.badgeForeground),badgeBorder:(0,L.asCssVariable)(L.contrastBorder)},e.defaultBreadcrumbsWidgetStyles={breadcrumbsBackground:(0,L.asCssVariable)(L.breadcrumbsBackground),breadcrumbsForeground:(0,L.asCssVariable)(L.breadcrumbsForeground),breadcrumbsHoverForeground:(0,L.asCssVariable)(L.breadcrumbsFocusForeground),breadcrumbsFocusForeground:(0,L.asCssVariable)(L.breadcrumbsFocusForeground),breadcrumbsFocusAndSelectionForeground:(0,L.asCssVariable)(L.breadcrumbsActiveSelectionForeground)},e.defaultListStyles={listBackground:void 0,listInactiveFocusForeground:void 0,listFocusBackground:(0,L.asCssVariable)(L.listFocusBackground),listFocusForeground:(0,L.asCssVariable)(L.listFocusForeground),listFocusOutline:(0,L.asCssVariable)(L.listFocusOutline),listActiveSelectionBackground:(0,L.asCssVariable)(L.listActiveSelectionBackground),listActiveSelectionForeground:(0,L.asCssVariable)(L.listActiveSelectionForeground),listActiveSelectionIconForeground:(0,L.asCssVariable)(L.listActiveSelectionIconForeground),listFocusAndSelectionOutline:(0,L.asCssVariable)(L.listFocusAndSelectionOutline),listFocusAndSelectionBackground:(0,L.asCssVariable)(L.listActiveSelectionBackground),listFocusAndSelectionForeground:(0,L.asCssVariable)(L.listActiveSelectionForeground),listInactiveSelectionBackground:(0,L.asCssVariable)(L.listInactiveSelectionBackground),listInactiveSelectionIconForeground:(0,L.asCssVariable)(L.listInactiveSelectionIconForeground),listInactiveSelectionForeground:(0,L.asCssVariable)(L.listInactiveSelectionForeground),listInactiveFocusBackground:(0,L.asCssVariable)(L.listInactiveFocusBackground),listInactiveFocusOutline:(0,L.asCssVariable)(L.listInactiveFocusOutline),listHoverBackground:(0,L.asCssVariable)(L.listHoverBackground),listHoverForeground:(0,L.asCssVariable)(L.listHoverForeground),listDropBackground:(0,L.asCssVariable)(L.listDropBackground),listSelectionOutline:(0,L.asCssVariable)(L.activeContrastBorder),listHoverOutline:(0,L.asCssVariable)(L.activeContrastBorder),treeIndentGuidesStroke:(0,L.asCssVariable)(L.treeIndentGuidesStroke),treeInactiveIndentGuidesStroke:(0,L.asCssVariable)(L.treeInactiveIndentGuidesStroke),tableColumnsBorder:(0,L.asCssVariable)(L.tableColumnsBorder),tableOddRowsBackgroundColor:(0,L.asCssVariable)(L.tableOddRowsBackgroundColor)};function D(S){return y(S,e.defaultListStyles)}e.getListStyles=D,e.defaultSelectBoxStyles={selectBackground:(0,L.asCssVariable)(L.selectBackground),selectListBackground:(0,L.asCssVariable)(L.selectListBackground),selectForeground:(0,L.asCssVariable)(L.selectForeground),decoratorRightForeground:(0,L.asCssVariable)(L.pickerGroupForeground),selectBorder:(0,L.asCssVariable)(L.selectBorder),focusBorder:(0,L.asCssVariable)(L.focusBorder),listFocusBackground:(0,L.asCssVariable)(L.quickInputListFocusBackground),listInactiveSelectionIconForeground:(0,L.asCssVariable)(L.quickInputListFocusIconForeground),listFocusForeground:(0,L.asCssVariable)(L.quickInputListFocusForeground),listFocusOutline:(0,L.asCssVariableWithDefault)(L.activeContrastBorder,k.Color.transparent.toString()),listHoverBackground:(0,L.asCssVariable)(L.listHoverBackground),listHoverForeground:(0,L.asCssVariable)(L.listHoverForeground),listHoverOutline:(0,L.asCssVariable)(L.activeContrastBorder),selectListBorder:(0,L.asCssVariable)(L.editorWidgetBorder),listBackground:void 0,listActiveSelectionBackground:void 0,listActiveSelectionForeground:void 0,listActiveSelectionIconForeground:void 0,listFocusAndSelectionBackground:void 0,listDropBackground:void 0,listInactiveSelectionBackground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusBackground:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listFocusAndSelectionForeground:void 0,listFocusAndSelectionOutline:void 0,listInactiveFocusForeground:void 0,tableColumnsBorder:void 0,tableOddRowsBackgroundColor:void 0,treeIndentGuidesStroke:void 0,treeInactiveIndentGuidesStroke:void 0},e.defaultMenuStyles={shadowColor:(0,L.asCssVariable)(L.widgetShadow),borderColor:(0,L.asCssVariable)(L.menuBorder),foregroundColor:(0,L.asCssVariable)(L.menuForeground),backgroundColor:(0,L.asCssVariable)(L.menuBackground),selectionForegroundColor:(0,L.asCssVariable)(L.menuSelectionForeground),selectionBackgroundColor:(0,L.asCssVariable)(L.menuSelectionBackground),selectionBorderColor:(0,L.asCssVariable)(L.menuSelectionBorder),separatorColor:(0,L.asCssVariable)(L.menuSeparatorBackground),scrollbarShadow:(0,L.asCssVariable)(L.scrollbarShadow),scrollbarSliderBackground:(0,L.asCssVariable)(L.scrollbarSliderBackground),scrollbarSliderHoverBackground:(0,L.asCssVariable)(L.scrollbarSliderHoverBackground),scrollbarSliderActiveBackground:(0,L.asCssVariable)(L.scrollbarSliderActiveBackground)}}),define(ne[824],se([1,0,7,307,308,226,72,2,45,69,667,8,34,158,105,155]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";var u;Object.defineProperty(e,\"__esModule\",{value:!0}),e.AccessibilityProvider=e.OneReferenceRenderer=e.FileReferencesRenderer=e.IdentityProvider=e.StringRepresentationProvider=e.Delegate=e.DataSource=void 0;let h=class{constructor(w){this._resolverService=w}hasChildren(w){return w instanceof a.ReferencesModel||w instanceof a.FileReferences}getChildren(w){if(w instanceof a.ReferencesModel)return w.groups;if(w instanceof a.FileReferences)return w.resolve(this._resolverService).then(E=>E.children);throw new Error(\"bad tree\")}};e.DataSource=h,e.DataSource=h=ke([fe(0,g.ITextModelService)],h);class r{getHeight(){return 23}getTemplateId(w){return w instanceof a.FileReferences?l.id:m.id}}e.Delegate=r;let c=class{constructor(w){this._keybindingService=w}getKeyboardNavigationLabel(w){var E;if(w instanceof a.OneReference){const I=(E=w.parent.getPreview(w))===null||E===void 0?void 0:E.preview(w.range);if(I)return I.value}return(0,_.basename)(w.uri)}};e.StringRepresentationProvider=c,e.StringRepresentationProvider=c=ke([fe(0,i.IKeybindingService)],c);class o{getId(w){return w instanceof a.OneReference?w.id:w.uri}}e.IdentityProvider=o;let d=class extends f.Disposable{constructor(w,E){super(),this._labelService=E;const I=document.createElement(\"div\");I.classList.add(\"reference-file\"),this.file=this._register(new D.IconLabel(I,{supportHighlights:!0})),this.badge=new k.CountBadge(L.append(I,L.$(\".count\")),{},t.defaultCountBadgeStyles),w.appendChild(I)}set(w,E){const I=(0,_.dirname)(w.uri);this.file.setLabel(this._labelService.getUriBasenameLabel(w.uri),this._labelService.getUriLabel(I,{relative:!0}),{title:this._labelService.getUriLabel(w.uri),matches:E});const M=w.children.length;this.badge.setCount(M),M>1?this.badge.setTitleFormat((0,C.localize)(0,null,M)):this.badge.setTitleFormat((0,C.localize)(1,null,M))}};d=ke([fe(1,n.ILabelService)],d);let l=u=class{constructor(w){this._instantiationService=w,this.templateId=u.id}renderTemplate(w){return this._instantiationService.createInstance(d,w)}renderElement(w,E,I){I.set(w.element,(0,S.createMatches)(w.filterData))}disposeTemplate(w){w.dispose()}};e.FileReferencesRenderer=l,l.id=\"FileReferencesRenderer\",e.FileReferencesRenderer=l=u=ke([fe(0,s.IInstantiationService)],l);class p{constructor(w){this.label=new y.HighlightedLabel(w)}set(w,E){var I;const M=(I=w.parent.getPreview(w))===null||I===void 0?void 0:I.preview(w.range);if(!M||!M.value)this.label.set(`${(0,_.basename)(w.uri)}:${w.range.startLineNumber+1}:${w.range.startColumn+1}`);else{const{value:P,highlight:x}=M;E&&!S.FuzzyScore.isDefault(E)?(this.label.element.classList.toggle(\"referenceMatch\",!1),this.label.set(P,(0,S.createMatches)(E))):(this.label.element.classList.toggle(\"referenceMatch\",!0),this.label.set(P,[x]))}}}class m{constructor(){this.templateId=m.id}renderTemplate(w){return new p(w)}renderElement(w,E,I){I.set(w.element,w.filterData)}disposeTemplate(){}}e.OneReferenceRenderer=m,m.id=\"OneReferenceRenderer\";class v{getWidgetAriaLabel(){return(0,C.localize)(2,null)}getAriaLabel(w){return w.ariaMessage}}e.AccessibilityProvider=v}),define(ne[825],se([1,0,7,222,114,25,2,17,26,715,57,34,105,31,269]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ActionList=e.previewSelectedActionCommand=e.acceptSelectedActionCommand=void 0,e.acceptSelectedActionCommand=\"acceptSelectedCodeAction\",e.previewSelectedActionCommand=\"previewSelectedCodeAction\";class t{get templateId(){return\"header\"}renderTemplate(l){l.classList.add(\"group-header\");const p=document.createElement(\"span\");return l.append(p),{container:l,text:p}}renderElement(l,p,m){var v,b;m.text.textContent=(b=(v=l.group)===null||v===void 0?void 0:v.title)!==null&&b!==void 0?b:\"\"}disposeTemplate(l){}}let a=class{get templateId(){return\"action\"}constructor(l,p){this._supportsPreview=l,this._keybindingService=p}renderTemplate(l){l.classList.add(this.templateId);const p=document.createElement(\"div\");p.className=\"icon\",l.append(p);const m=document.createElement(\"span\");m.className=\"title\",l.append(m);const v=new k.KeybindingLabel(l,f.OS);return{container:l,icon:p,text:m,keybinding:v}}renderElement(l,p,m){var v,b,w;if(!((v=l.group)===null||v===void 0)&&v.icon?(m.icon.className=_.ThemeIcon.asClassName(l.group.icon),l.group.icon.color&&(m.icon.style.color=(0,n.asCssVariable)(l.group.icon.color.id))):(m.icon.className=_.ThemeIcon.asClassName(D.Codicon.lightBulb),m.icon.style.color=\"var(--vscode-editorLightBulb-foreground)\"),!l.item||!l.label)return;m.text.textContent=o(l.label),m.keybinding.set(l.keybinding),L.setVisibility(!!l.keybinding,m.keybinding.element);const E=(b=this._keybindingService.lookupKeybinding(e.acceptSelectedActionCommand))===null||b===void 0?void 0:b.getLabel(),I=(w=this._keybindingService.lookupKeybinding(e.previewSelectedActionCommand))===null||w===void 0?void 0:w.getLabel();m.container.classList.toggle(\"option-disabled\",l.disabled),l.disabled?m.container.title=l.label:E&&I?this._supportsPreview?m.container.title=(0,g.localize)(0,null,E,I):m.container.title=(0,g.localize)(1,null,E):m.container.title=\"\"}disposeTemplate(l){}};a=ke([fe(1,s.IKeybindingService)],a);class u extends UIEvent{constructor(){super(\"acceptSelectedAction\")}}class h extends UIEvent{constructor(){super(\"previewSelectedAction\")}}function r(d){if(d.kind===\"action\")return d.label}let c=class extends S.Disposable{constructor(l,p,m,v,b,w){super(),this._delegate=v,this._contextViewService=b,this._keybindingService=w,this._actionLineHeight=24,this._headerLineHeight=26,this.domNode=document.createElement(\"div\"),this.domNode.classList.add(\"actionList\");const E={getHeight:I=>I.kind===\"header\"?this._headerLineHeight:this._actionLineHeight,getTemplateId:I=>I.kind};this._list=this._register(new y.List(l,this.domNode,E,[new a(p,this._keybindingService),new t],{keyboardSupport:!1,typeNavigationEnabled:!0,keyboardNavigationLabelProvider:{getKeyboardNavigationLabel:r},accessibilityProvider:{getAriaLabel:I=>{if(I.kind===\"action\"){let M=I.label?o(I?.label):\"\";return I.disabled&&(M=(0,g.localize)(2,null,M,I.disabled)),M}return null},getWidgetAriaLabel:()=>(0,g.localize)(3,null),getRole:I=>I.kind===\"action\"?\"option\":\"separator\",getWidgetRole:()=>\"listbox\"}})),this._list.style(i.defaultListStyles),this._register(this._list.onMouseClick(I=>this.onListClick(I))),this._register(this._list.onMouseOver(I=>this.onListHover(I))),this._register(this._list.onDidChangeFocus(()=>this._list.domFocus())),this._register(this._list.onDidChangeSelection(I=>this.onListSelection(I))),this._allMenuItems=m,this._list.splice(0,this._list.length,this._allMenuItems),this._list.length&&this.focusNext()}focusCondition(l){return!l.disabled&&l.kind===\"action\"}hide(l){this._delegate.onHide(l),this._contextViewService.hideContextView()}layout(l){const p=this._allMenuItems.filter(M=>M.kind===\"header\").length,v=this._allMenuItems.length*this._actionLineHeight+p*this._headerLineHeight-p*this._actionLineHeight;this._list.layout(v);const b=this._allMenuItems.map((M,P)=>{const x=document.getElementById(this._list.getElementID(P));if(x){x.style.width=\"auto\";const T=x.getBoundingClientRect().width;return x.style.width=\"\",T}return 0}),w=Math.max(...b,l),E=.7,I=Math.min(v,document.body.clientHeight*E);return this._list.layout(I,w),this.domNode.style.height=`${I}px`,this._list.domFocus(),w}focusPrevious(){this._list.focusPrevious(1,!0,void 0,this.focusCondition)}focusNext(){this._list.focusNext(1,!0,void 0,this.focusCondition)}acceptSelected(l){const p=this._list.getFocus();if(p.length===0)return;const m=p[0],v=this._list.element(m);if(!this.focusCondition(v))return;const b=l?new h:new u;this._list.setSelection([m],b)}onListSelection(l){if(!l.elements.length)return;const p=l.elements[0];p.item&&this.focusCondition(p)?this._delegate.onSelect(p.item,l.browserEvent instanceof h):this._list.setSelection([])}onListHover(l){this._list.setFocus(typeof l.index==\"number\"?[l.index]:[])}onListClick(l){l.element&&this.focusCondition(l.element)&&this._list.setFocus([])}};e.ActionList=c,e.ActionList=c=ke([fe(4,C.IContextViewService),fe(5,s.IKeybindingService)],c);function o(d){return d.replace(/\\r\\n|\\r|\\n/g,\" \")}}),define(ne[826],se([1,0,7,68,2,716,825,30,15,57,50,8,31,269]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IActionWidgetService=void 0,(0,i.registerColor)(\"actionBar.toggledBackground\",{dark:i.inputActiveOptionBackground,light:i.inputActiveOptionBackground,hcDark:i.inputActiveOptionBackground,hcLight:i.inputActiveOptionBackground},(0,D.localize)(0,null));const n={Visible:new _.RawContextKey(\"codeActionMenuVisible\",!1,(0,D.localize)(1,null))};e.IActionWidgetService=(0,s.createDecorator)(\"actionWidgetService\");let t=class extends y.Disposable{get isVisible(){return n.Visible.getValue(this._contextKeyService)||!1}constructor(h,r,c){super(),this._contextViewService=h,this._contextKeyService=r,this._instantiationService=c,this._list=this._register(new y.MutableDisposable)}show(h,r,c,o,d,l,p){const m=n.Visible.bindTo(this._contextKeyService),v=this._instantiationService.createInstance(S.ActionList,h,r,c,o);this._contextViewService.showContextView({getAnchor:()=>d,render:b=>(m.set(!0),this._renderWidget(b,v,p??[])),onHide:b=>{m.reset(),this._onWidgetClosed(b)}},l,!1)}acceptSelected(h){var r;(r=this._list.value)===null||r===void 0||r.acceptSelected(h)}focusPrevious(){var h,r;(r=(h=this._list)===null||h===void 0?void 0:h.value)===null||r===void 0||r.focusPrevious()}focusNext(){var h,r;(r=(h=this._list)===null||h===void 0?void 0:h.value)===null||r===void 0||r.focusNext()}hide(){var h;(h=this._list.value)===null||h===void 0||h.hide(),this._list.clear()}_renderWidget(h,r,c){var o;const d=document.createElement(\"div\");if(d.classList.add(\"action-widget\"),h.appendChild(d),this._list.value=r,this._list.value)d.appendChild(this._list.value.domNode);else throw new Error(\"List has no value\");const l=new y.DisposableStore,p=document.createElement(\"div\"),m=h.appendChild(p);m.classList.add(\"context-view-block\"),l.add(L.addDisposableListener(m,L.EventType.MOUSE_DOWN,M=>M.stopPropagation()));const v=document.createElement(\"div\"),b=h.appendChild(v);b.classList.add(\"context-view-pointerBlock\"),l.add(L.addDisposableListener(b,L.EventType.POINTER_MOVE,()=>b.remove())),l.add(L.addDisposableListener(b,L.EventType.MOUSE_DOWN,()=>b.remove()));let w=0;if(c.length){const M=this._createActionBar(\".action-widget-action-bar\",c);M&&(d.appendChild(M.getContainer().parentElement),l.add(M),w=M.getContainer().offsetWidth)}const E=(o=this._list.value)===null||o===void 0?void 0:o.layout(w);d.style.width=`${E}px`;const I=l.add(L.trackFocus(h));return l.add(I.onDidBlur(()=>this.hide())),l}_createActionBar(h,r){if(!r.length)return;const c=L.$(h),o=new k.ActionBar(c);return o.push(r,{icon:!1,label:!0}),o}_onWidgetClosed(h){var r;(r=this._list.value)===null||r===void 0||r.hide(h)}};t=ke([fe(0,g.IContextViewService),fe(1,_.IContextKeyService),fe(2,s.IInstantiationService)],t),(0,C.registerSingleton)(e.IActionWidgetService,t,1);const a=100+1e3;(0,f.registerAction2)(class extends f.Action2{constructor(){super({id:\"hideCodeActionWidget\",title:{value:(0,D.localize)(2,null),original:\"Hide action widget\"},precondition:n.Visible,keybinding:{weight:a,primary:9,secondary:[1033]}})}run(u){u.get(e.IActionWidgetService).hide()}}),(0,f.registerAction2)(class extends f.Action2{constructor(){super({id:\"selectPrevCodeAction\",title:{value:(0,D.localize)(3,null),original:\"Select previous action\"},precondition:n.Visible,keybinding:{weight:a,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})}run(u){const h=u.get(e.IActionWidgetService);h instanceof t&&h.focusPrevious()}}),(0,f.registerAction2)(class extends f.Action2{constructor(){super({id:\"selectNextCodeAction\",title:{value:(0,D.localize)(4,null),original:\"Select next action\"},precondition:n.Visible,keybinding:{weight:a,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})}run(u){const h=u.get(e.IActionWidgetService);h instanceof t&&h.focusNext()}}),(0,f.registerAction2)(class extends f.Action2{constructor(){super({id:S.acceptSelectedActionCommand,title:{value:(0,D.localize)(5,null),original:\"Accept selected action\"},precondition:n.Visible,keybinding:{weight:a,primary:3,secondary:[2137]}})}run(u){const h=u.get(e.IActionWidgetService);h instanceof t&&h.acceptSelected()}}),(0,f.registerAction2)(class extends f.Action2{constructor(){super({id:S.previewSelectedActionCommand,title:{value:(0,D.localize)(6,null),original:\"Preview selected action\"},precondition:n.Visible,keybinding:{weight:a,primary:2051}})}run(u){const h=u.get(e.IActionWidgetService);h instanceof t&&h.acceptSelected(!0)}})}),define(ne[250],se([1,0,7,9,100,2,12,18,137,801,823,350,190,640,826,27,28,15,8,97,77,113,349]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l){\"use strict\";var p;Object.defineProperty(e,\"__esModule\",{value:!0}),e.CodeActionController=void 0;let m=p=class extends D.Disposable{static get(b){return b.getContribution(p.ID)}constructor(b,w,E,I,M,P,x,T,A,N){super(),this._commandService=x,this._configurationService=T,this._actionWidgetService=A,this._instantiationService=N,this._activeCodeActions=this._register(new D.MutableDisposable),this._showDisabled=!1,this._disposed=!1,this._editor=b,this._model=this._register(new l.CodeActionModel(this._editor,M.codeActionProvider,w,E,P)),this._register(this._model.onDidChangeState(F=>this.update(F))),this._lightBulbWidget=new y.Lazy(()=>{const F=this._editor.getContribution(s.LightBulbWidget.ID);return F&&this._register(F.onClick(O=>this.showCodeActionList(O.actions,O,{includeDisabledActions:!1,fromLightbulb:!0}))),F}),this._resolver=I.createInstance(g.CodeActionKeybindingResolver),this._register(this._editor.onDidLayoutChange(()=>this._actionWidgetService.hide()))}dispose(){this._disposed=!0,super.dispose()}showCodeActions(b,w,E){return this.showCodeActionList(w,E,{includeDisabledActions:!1,fromLightbulb:!1})}manualTriggerAtCurrentPosition(b,w,E,I){var M;if(!this._editor.hasModel())return;(M=i.MessageController.get(this._editor))===null||M===void 0||M.closeMessage();const P=this._editor.getPosition();this._trigger({type:1,triggerAction:w,filter:E,autoApply:I,context:{notAvailableMessage:b,position:P}})}_trigger(b){return this._model.trigger(b)}_applyCodeAction(b,w,E){return we(this,void 0,void 0,function*(){try{yield this._instantiationService.invokeFunction(_.applyCodeAction,b,_.ApplyCodeActionReason.FromCodeActions,{preview:E,editor:this._editor})}finally{w&&this._trigger({type:2,triggerAction:d.CodeActionTriggerSource.QuickFix,filter:{}})}})}update(b){var w,E,I,M,P,x,T;return we(this,void 0,void 0,function*(){if(b.type!==1){(w=this._lightBulbWidget.rawValue)===null||w===void 0||w.hide();return}let A;try{A=yield b.actions}catch(N){(0,k.onUnexpectedError)(N);return}if(!this._disposed)if((E=this._lightBulbWidget.value)===null||E===void 0||E.update(A,b.trigger,b.position),b.trigger.type===1){if(!((I=b.trigger.filter)===null||I===void 0)&&I.include){const F=this.tryGetValidActionToApply(b.trigger,A);if(F){try{(M=this._lightBulbWidget.value)===null||M===void 0||M.hide(),yield this._applyCodeAction(F,!1,!1)}finally{A.dispose()}return}if(b.trigger.context){const O=this.getInvalidActionThatWouldHaveBeenApplied(b.trigger,A);if(O&&O.action.disabled){(P=i.MessageController.get(this._editor))===null||P===void 0||P.showMessage(O.action.disabled,b.trigger.context.position),A.dispose();return}}}const N=!!(!((x=b.trigger.filter)===null||x===void 0)&&x.include);if(b.trigger.context&&(!A.allActions.length||!N&&!A.validActions.length)){(T=i.MessageController.get(this._editor))===null||T===void 0||T.showMessage(b.trigger.context.notAvailableMessage,b.trigger.context.position),this._activeCodeActions.value=A,A.dispose();return}this._activeCodeActions.value=A,this.showCodeActionList(A,this.toCoords(b.position),{includeDisabledActions:N,fromLightbulb:!1})}else this._actionWidgetService.isVisible?A.dispose():this._activeCodeActions.value=A})}getInvalidActionThatWouldHaveBeenApplied(b,w){if(w.allActions.length&&(b.autoApply===\"first\"&&w.validActions.length===0||b.autoApply===\"ifSingle\"&&w.allActions.length===1))return w.allActions.find(({action:E})=>E.disabled)}tryGetValidActionToApply(b,w){if(w.validActions.length&&(b.autoApply===\"first\"&&w.validActions.length>0||b.autoApply===\"ifSingle\"&&w.validActions.length===1))return w.validActions[0]}showCodeActionList(b,w,E){return we(this,void 0,void 0,function*(){const I=this._editor.getDomNode();if(!I)return;const M=E.includeDisabledActions&&(this._showDisabled||b.validActions.length===0)?b.allActions:b.validActions;if(!M.length)return;const P=S.Position.isIPosition(w)?this.toCoords(w):w,x={onSelect:(T,A)=>we(this,void 0,void 0,function*(){this._applyCodeAction(T,!0,!!A),this._actionWidgetService.hide()}),onHide:()=>{var T;(T=this._editor)===null||T===void 0||T.focus()}};this._actionWidgetService.show(\"codeActionWidget\",!0,(0,C.toMenuItems)(M,this._shouldShowHeaders(),this._resolver.getResolver()),x,P,I,this._getActionBarActions(b,w,E))})}toCoords(b){if(!this._editor.hasModel())return{x:0,y:0};this._editor.revealPosition(b,1),this._editor.render();const w=this._editor.getScrolledVisiblePosition(b),E=(0,L.getDomNodePagePosition)(this._editor.getDomNode()),I=E.left+w.left,M=E.top+w.top+w.height;return{x:I,y:M}}_shouldShowHeaders(){var b;const w=(b=this._editor)===null||b===void 0?void 0:b.getModel();return this._configurationService.getValue(\"editor.codeActionWidget.showHeaders\",{resource:w?.uri})}_getActionBarActions(b,w,E){if(E.fromLightbulb)return[];const I=b.documentation.map(M=>{var P;return{id:M.id,label:M.title,tooltip:(P=M.tooltip)!==null&&P!==void 0?P:\"\",class:void 0,enabled:!0,run:()=>{var x;return this._commandService.executeCommand(M.id,...(x=M.arguments)!==null&&x!==void 0?x:[])}}});return E.includeDisabledActions&&b.validActions.length>0&&b.allActions.length!==b.validActions.length&&I.push(this._showDisabled?{id:\"hideMoreActions\",label:(0,n.localize)(0,null),enabled:!0,tooltip:\"\",class:void 0,run:()=>(this._showDisabled=!1,this.showCodeActionList(b,w,E))}:{id:\"showMoreActions\",label:(0,n.localize)(1,null),enabled:!0,tooltip:\"\",class:void 0,run:()=>(this._showDisabled=!0,this.showCodeActionList(b,w,E))}),I}};e.CodeActionController=m,m.ID=\"editor.contrib.codeActionController\",e.CodeActionController=m=p=ke([fe(1,c.IMarkerService),fe(2,h.IContextKeyService),fe(3,r.IInstantiationService),fe(4,f.ILanguageFeaturesService),fe(5,o.IEditorProgressService),fe(6,a.ICommandService),fe(7,u.IConfigurationService),fe(8,t.IActionWidgetService),fe(9,r.IInstantiationService)],m)}),define(ne[827],se([1,0,11,16,21,137,638,15,113,250,349]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AutoFixAction=e.FixAllAction=e.OrganizeImportsAction=e.SourceAction=e.RefactorAction=e.CodeActionCommand=e.QuickFixAction=void 0;function s(d){return f.ContextKeyExpr.regex(C.SUPPORTED_CODE_ACTIONS.keys()[0],new RegExp(\"(\\\\s|^)\"+(0,L.escapeRegExpCharacters)(d.value)+\"\\\\b\"))}const i={type:\"object\",defaultSnippets:[{body:{kind:\"\"}}],properties:{kind:{type:\"string\",description:S.localize(0,null)},apply:{type:\"string\",description:S.localize(1,null),default:\"ifSingle\",enum:[\"first\",\"ifSingle\",\"never\"],enumDescriptions:[S.localize(2,null),S.localize(3,null),S.localize(4,null)]},preferred:{type:\"boolean\",default:!1,description:S.localize(5,null)}}};function n(d,l,p,m,v=_.CodeActionTriggerSource.Default){if(d.hasModel()){const b=g.CodeActionController.get(d);b?.manualTriggerAtCurrentPosition(l,v,p,m)}}class t extends k.EditorAction{constructor(){super({id:D.quickFixCommandId,label:S.localize(6,null),alias:\"Quick Fix...\",precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,y.EditorContextKeys.hasCodeActionsProvider),kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:2137,weight:100}})}run(l,p){return n(p,S.localize(7,null),void 0,void 0,_.CodeActionTriggerSource.QuickFix)}}e.QuickFixAction=t;class a extends k.EditorCommand{constructor(){super({id:D.codeActionCommandId,precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,y.EditorContextKeys.hasCodeActionsProvider),description:{description:\"Trigger a code action\",args:[{name:\"args\",schema:i}]}})}runEditorCommand(l,p,m){const v=_.CodeActionCommandArgs.fromUser(m,{kind:_.CodeActionKind.Empty,apply:\"ifSingle\"});return n(p,typeof m?.kind==\"string\"?v.preferred?S.localize(8,null,m.kind):S.localize(9,null,m.kind):v.preferred?S.localize(10,null):S.localize(11,null),{include:v.kind,includeSourceActions:!0,onlyIncludePreferredActions:v.preferred},v.apply)}}e.CodeActionCommand=a;class u extends k.EditorAction{constructor(){super({id:D.refactorCommandId,label:S.localize(12,null),alias:\"Refactor...\",precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,y.EditorContextKeys.hasCodeActionsProvider),kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:3120,mac:{primary:1328},weight:100},contextMenuOpts:{group:\"1_modification\",order:2,when:f.ContextKeyExpr.and(y.EditorContextKeys.writable,s(_.CodeActionKind.Refactor))},description:{description:\"Refactor...\",args:[{name:\"args\",schema:i}]}})}run(l,p,m){const v=_.CodeActionCommandArgs.fromUser(m,{kind:_.CodeActionKind.Refactor,apply:\"never\"});return n(p,typeof m?.kind==\"string\"?v.preferred?S.localize(13,null,m.kind):S.localize(14,null,m.kind):v.preferred?S.localize(15,null):S.localize(16,null),{include:_.CodeActionKind.Refactor.contains(v.kind)?v.kind:_.CodeActionKind.None,onlyIncludePreferredActions:v.preferred},v.apply,_.CodeActionTriggerSource.Refactor)}}e.RefactorAction=u;class h extends k.EditorAction{constructor(){super({id:D.sourceActionCommandId,label:S.localize(17,null),alias:\"Source Action...\",precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,y.EditorContextKeys.hasCodeActionsProvider),contextMenuOpts:{group:\"1_modification\",order:2.1,when:f.ContextKeyExpr.and(y.EditorContextKeys.writable,s(_.CodeActionKind.Source))},description:{description:\"Source Action...\",args:[{name:\"args\",schema:i}]}})}run(l,p,m){const v=_.CodeActionCommandArgs.fromUser(m,{kind:_.CodeActionKind.Source,apply:\"never\"});return n(p,typeof m?.kind==\"string\"?v.preferred?S.localize(18,null,m.kind):S.localize(19,null,m.kind):v.preferred?S.localize(20,null):S.localize(21,null),{include:_.CodeActionKind.Source.contains(v.kind)?v.kind:_.CodeActionKind.None,includeSourceActions:!0,onlyIncludePreferredActions:v.preferred},v.apply,_.CodeActionTriggerSource.SourceAction)}}e.SourceAction=h;class r extends k.EditorAction{constructor(){super({id:D.organizeImportsCommandId,label:S.localize(22,null),alias:\"Organize Imports\",precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,s(_.CodeActionKind.SourceOrganizeImports)),kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:1581,weight:100}})}run(l,p){return n(p,S.localize(23,null),{include:_.CodeActionKind.SourceOrganizeImports,includeSourceActions:!0},\"ifSingle\",_.CodeActionTriggerSource.OrganizeImports)}}e.OrganizeImportsAction=r;class c extends k.EditorAction{constructor(){super({id:D.fixAllCommandId,label:S.localize(24,null),alias:\"Fix All\",precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,s(_.CodeActionKind.SourceFixAll))})}run(l,p){return n(p,S.localize(25,null),{include:_.CodeActionKind.SourceFixAll,includeSourceActions:!0},\"ifSingle\",_.CodeActionTriggerSource.FixAll)}}e.FixAllAction=c;class o extends k.EditorAction{constructor(){super({id:D.autoFixCommandId,label:S.localize(26,null),alias:\"Auto Fix...\",precondition:f.ContextKeyExpr.and(y.EditorContextKeys.writable,s(_.CodeActionKind.QuickFix)),kbOpts:{kbExpr:y.EditorContextKeys.textInputFocus,primary:1625,mac:{primary:2649},weight:100}})}run(l,p){return n(p,S.localize(27,null),{include:_.CodeActionKind.QuickFix,onlyIncludePreferredActions:!0},\"ifSingle\",_.CodeActionTriggerSource.AutoFix)}}e.AutoFixAction=o}),define(ne[828],se([1,0,16,241,827,250,350,639,98,37]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),(0,L.registerEditorContribution)(D.CodeActionController.ID,D.CodeActionController,3),(0,L.registerEditorContribution)(S.LightBulbWidget.ID,S.LightBulbWidget,4),(0,L.registerEditorAction)(y.QuickFixAction),(0,L.registerEditorAction)(y.RefactorAction),(0,L.registerEditorAction)(y.SourceAction),(0,L.registerEditorAction)(y.OrganizeImportsAction),(0,L.registerEditorAction)(y.AutoFixAction),(0,L.registerEditorAction)(y.FixAllAction),(0,L.registerEditorCommand)(new y.CodeActionCommand),g.Registry.as(_.Extensions.Configuration).registerConfiguration(Object.assign(Object.assign({},k.editorConfigurationBaseNode),{properties:{\"editor.codeActionWidget.showHeaders\":{type:\"boolean\",scope:5,description:f.localize(0,null),default:!0}}}))}),define(ne[829],se([1,0,7,60,583,39,9,2,105]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ContextMenuHandler=void 0;class g{constructor(s,i,n,t){this.contextViewService=s,this.telemetryService=i,this.notificationService=n,this.keybindingService=t,this.focusToReturn=null,this.lastContainer=null,this.block=null,this.blockDisposable=null,this.options={blockMouse:!0}}configure(s){this.options=s}showContextMenu(s){const i=s.getActions();if(!i.length)return;this.focusToReturn=document.activeElement;let n;const t=(0,L.isHTMLElement)(s.domForShadowRoot)?s.domForShadowRoot:void 0;this.contextViewService.showContextView({getAnchor:()=>s.getAnchor(),canRelayout:!1,anchorAlignment:s.anchorAlignment,anchorAxisAlignment:s.anchorAxisAlignment,render:a=>{var u;this.lastContainer=a;const h=s.getMenuClassName?s.getMenuClassName():\"\";h&&(a.className+=\" \"+h),this.options.blockMouse&&(this.block=a.appendChild((0,L.$)(\".context-view-block\")),this.block.style.position=\"fixed\",this.block.style.cursor=\"initial\",this.block.style.left=\"0\",this.block.style.top=\"0\",this.block.style.width=\"100%\",this.block.style.height=\"100%\",this.block.style.zIndex=\"-1\",(u=this.blockDisposable)===null||u===void 0||u.dispose(),this.blockDisposable=(0,L.addDisposableListener)(this.block,L.EventType.MOUSE_DOWN,o=>o.stopPropagation()));const r=new f.DisposableStore,c=s.actionRunner||new D.ActionRunner;return c.onWillRun(o=>this.onActionRun(o,!s.skipTelemetry),this,r),c.onDidRun(this.onDidActionRun,this,r),n=new y.Menu(a,i,{actionViewItemProvider:s.getActionViewItem,context:s.getActionsContext?s.getActionsContext():null,actionRunner:c,getKeyBinding:s.getKeyBinding?s.getKeyBinding:o=>this.keybindingService.lookupKeybinding(o.id)},_.defaultMenuStyles),n.onDidCancel(()=>this.contextViewService.hideContextView(!0),null,r),n.onDidBlur(()=>this.contextViewService.hideContextView(!0),null,r),r.add((0,L.addDisposableListener)(window,L.EventType.BLUR,()=>this.contextViewService.hideContextView(!0))),r.add((0,L.addDisposableListener)(window,L.EventType.MOUSE_DOWN,o=>{if(o.defaultPrevented)return;const d=new k.StandardMouseEvent(o);let l=d.target;if(!d.rightButton){for(;l;){if(l===a)return;l=l.parentElement}this.contextViewService.hideContextView(!0)}})),(0,f.combinedDisposable)(r,n)},focus:()=>{n?.focus(!!s.autoSelectFirstItem)},onHide:a=>{var u,h,r;(u=s.onHide)===null||u===void 0||u.call(s,!!a),this.block&&(this.block.remove(),this.block=null),(h=this.blockDisposable)===null||h===void 0||h.dispose(),this.blockDisposable=null,this.lastContainer&&((0,L.getActiveElement)()===this.lastContainer||(0,L.isAncestor)((0,L.getActiveElement)(),this.lastContainer))&&((r=this.focusToReturn)===null||r===void 0||r.focus()),this.lastContainer=null}},t,!!t)}onActionRun(s,i){i&&this.telemetryService.publicLog2(\"workbenchActionExecuted\",{id:s.action.id,from:\"contextMenu\"}),this.contextViewService.hideContextView(!1)}onDidActionRun(s){s.error&&!(0,S.isCancellationError)(s.error)&&this.notificationService.error(s.error)}}e.ContextMenuHandler=g}),define(ne[191],se([1,0,7,578,114,579,184,586,585,316,6,2,728,28,98,15,238,57,8,34,37,105]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WorkbenchCompressibleAsyncDataTree=e.WorkbenchAsyncDataTree=e.WorkbenchDataTree=e.WorkbenchCompressibleObjectTree=e.WorkbenchObjectTree=e.WorkbenchTable=e.WorkbenchPagedList=e.WorkbenchList=e.WorkbenchTreeFindOpen=e.WorkbenchTreeElementHasChild=e.WorkbenchTreeElementCanExpand=e.WorkbenchTreeElementHasParent=e.WorkbenchTreeElementCanCollapse=e.WorkbenchListSupportsFind=e.WorkbenchListSelectionNavigation=e.WorkbenchListMultiSelection=e.WorkbenchListDoubleSelection=e.WorkbenchListHasSelectionOrFocus=e.WorkbenchListFocusContextKey=e.WorkbenchListSupportsMultiSelectContextKey=e.RawWorkbenchListFocusContextKey=e.WorkbenchListScrollAtBottomContextKey=e.WorkbenchListScrollAtTopContextKey=e.RawWorkbenchListScrollAtBoundaryContextKey=e.ListService=e.IListService=void 0,e.IListService=(0,r.createDecorator)(\"listService\");class l{get lastFocusedList(){return this._lastFocusedWidget}constructor(){this.disposables=new s.DisposableStore,this.lists=[],this._lastFocusedWidget=void 0,this._hasCreatedStyleController=!1}setLastFocusedList(oe){var ge,ve;oe!==this._lastFocusedWidget&&((ge=this._lastFocusedWidget)===null||ge===void 0||ge.getHTMLElement().classList.remove(\"last-focused\"),this._lastFocusedWidget=oe,(ve=this._lastFocusedWidget)===null||ve===void 0||ve.getHTMLElement().classList.add(\"last-focused\"))}register(oe,ge){if(this._hasCreatedStyleController||(this._hasCreatedStyleController=!0,new y.DefaultStyleController((0,L.createStyleSheet)(),\"\").style(d.defaultListStyles)),this.lists.some(Se=>Se.widget===oe))throw new Error(\"Cannot register the same widget multiple times\");const ve={widget:oe,extraContextKeys:ge};return this.lists.push(ve),oe.getHTMLElement()===document.activeElement&&this.setLastFocusedList(oe),(0,s.combinedDisposable)(oe.onDidFocus(()=>this.setLastFocusedList(oe)),(0,s.toDisposable)(()=>this.lists.splice(this.lists.indexOf(ve),1)),oe.onDidDispose(()=>{this.lists=this.lists.filter(Se=>Se!==ve),this._lastFocusedWidget===oe&&this.setLastFocusedList(void 0)}))}dispose(){this.disposables.dispose()}}e.ListService=l,e.RawWorkbenchListScrollAtBoundaryContextKey=new a.RawContextKey(\"listScrollAtBoundary\",\"none\"),e.WorkbenchListScrollAtTopContextKey=a.ContextKeyExpr.or(e.RawWorkbenchListScrollAtBoundaryContextKey.isEqualTo(\"top\"),e.RawWorkbenchListScrollAtBoundaryContextKey.isEqualTo(\"both\")),e.WorkbenchListScrollAtBottomContextKey=a.ContextKeyExpr.or(e.RawWorkbenchListScrollAtBoundaryContextKey.isEqualTo(\"bottom\"),e.RawWorkbenchListScrollAtBoundaryContextKey.isEqualTo(\"both\")),e.RawWorkbenchListFocusContextKey=new a.RawContextKey(\"listFocus\",!0),e.WorkbenchListSupportsMultiSelectContextKey=new a.RawContextKey(\"listSupportsMultiselect\",!0),e.WorkbenchListFocusContextKey=a.ContextKeyExpr.and(e.RawWorkbenchListFocusContextKey,a.ContextKeyExpr.not(u.InputFocusedContextKey)),e.WorkbenchListHasSelectionOrFocus=new a.RawContextKey(\"listHasSelectionOrFocus\",!1),e.WorkbenchListDoubleSelection=new a.RawContextKey(\"listDoubleSelection\",!1),e.WorkbenchListMultiSelection=new a.RawContextKey(\"listMultiSelection\",!1),e.WorkbenchListSelectionNavigation=new a.RawContextKey(\"listSelectionNavigation\",!1),e.WorkbenchListSupportsFind=new a.RawContextKey(\"listSupportsFind\",!0),e.WorkbenchTreeElementCanCollapse=new a.RawContextKey(\"treeElementCanCollapse\",!1),e.WorkbenchTreeElementHasParent=new a.RawContextKey(\"treeElementHasParent\",!1),e.WorkbenchTreeElementCanExpand=new a.RawContextKey(\"treeElementCanExpand\",!1),e.WorkbenchTreeElementHasChild=new a.RawContextKey(\"treeElementHasChild\",!1),e.WorkbenchTreeFindOpen=new a.RawContextKey(\"treeFindOpen\",!1);const p=\"listTypeNavigationMode\",m=\"listAutomaticKeyboardNavigation\";function v(re,oe){const ge=re.createScoped(oe.getHTMLElement());return e.RawWorkbenchListFocusContextKey.bindTo(ge),ge}function b(re,oe){const ge=e.RawWorkbenchListScrollAtBoundaryContextKey.bindTo(re),ve=()=>{const Se=oe.scrollTop===0,Le=oe.scrollHeight-oe.renderHeight-oe.scrollTop<1;Se&&Le?ge.set(\"both\"):Se?ge.set(\"top\"):Le?ge.set(\"bottom\"):ge.set(\"none\")};return ve(),oe.onDidScroll(ve)}const w=\"workbench.list.multiSelectModifier\",E=\"workbench.list.openMode\",I=\"workbench.list.horizontalScrolling\",M=\"workbench.list.defaultFindMode\",P=\"workbench.list.typeNavigationMode\",x=\"workbench.list.keyboardNavigation\",T=\"workbench.list.scrollByPage\",A=\"workbench.list.defaultFindMatchType\",N=\"workbench.tree.indent\",F=\"workbench.tree.renderIndentGuides\",O=\"workbench.list.smoothScrolling\",W=\"workbench.list.mouseWheelScrollSensitivity\",U=\"workbench.list.fastScrollSensitivity\",j=\"workbench.tree.expandMode\";function R(re){return re.getValue(w)===\"alt\"}class K extends s.Disposable{constructor(oe){super(),this.configurationService=oe,this.useAltAsMultipleSelectionModifier=R(oe),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(oe=>{oe.affectsConfiguration(w)&&(this.useAltAsMultipleSelectionModifier=R(this.configurationService))}))}isSelectionSingleChangeEvent(oe){return this.useAltAsMultipleSelectionModifier?oe.browserEvent.altKey:(0,y.isSelectionSingleChangeEvent)(oe)}isSelectionRangeChangeEvent(oe){return(0,y.isSelectionRangeChangeEvent)(oe)}}function G(re,oe){var ge;const ve=re.get(n.IConfigurationService),Se=re.get(c.IKeybindingService),Le=new s.DisposableStore;return[Object.assign(Object.assign({},oe),{keyboardNavigationDelegate:{mightProducePrintableCharacter(ye){return Se.mightProducePrintableCharacter(ye)}},smoothScrolling:!!ve.getValue(O),mouseWheelScrollSensitivity:ve.getValue(W),fastScrollSensitivity:ve.getValue(U),multipleSelectionController:(ge=oe.multipleSelectionController)!==null&&ge!==void 0?ge:Le.add(new K(ve)),keyboardNavigationEventFilter:ie(Se),scrollByPage:!!ve.getValue(T)}),Le]}let Z=class extends y.List{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me){const Pe=typeof Le.horizontalScrolling<\"u\"?Le.horizontalScrolling:!!Ee.getValue(I),[Fe,_e]=Me.invokeFunction(G,Le);super(oe,ge,ve,Se,Object.assign(Object.assign({keyboardSupport:!1},Fe),{horizontalScrolling:Pe})),this.disposables.add(_e),this.contextKeyService=v(De,this),this.disposables.add(b(this.contextKeyService,this)),this.listSupportsMultiSelect=e.WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(Le.multipleSelectionSupport!==!1),e.WorkbenchListSelectionNavigation.bindTo(this.contextKeyService).set(!!Le.selectionNavigation),this.listHasSelectionOrFocus=e.WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService),this.listDoubleSelection=e.WorkbenchListDoubleSelection.bindTo(this.contextKeyService),this.listMultiSelection=e.WorkbenchListMultiSelection.bindTo(this.contextKeyService),this.horizontalScrolling=Le.horizontalScrolling,this._useAltAsMultipleSelectionModifier=R(Ee),this.disposables.add(this.contextKeyService),this.disposables.add(ye.register(this)),this.updateStyles(Le.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const le=this.getSelection(),pe=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(le.length>0||pe.length>0),this.listMultiSelection.set(le.length>1),this.listDoubleSelection.set(le.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const le=this.getSelection(),pe=this.getFocus();this.listHasSelectionOrFocus.set(le.length>0||pe.length>0)})),this.disposables.add(Ee.onDidChangeConfiguration(le=>{le.affectsConfiguration(w)&&(this._useAltAsMultipleSelectionModifier=R(Ee));let pe={};if(le.affectsConfiguration(I)&&this.horizontalScrolling===void 0){const Ce=!!Ee.getValue(I);pe=Object.assign(Object.assign({},pe),{horizontalScrolling:Ce})}if(le.affectsConfiguration(T)){const Ce=!!Ee.getValue(T);pe=Object.assign(Object.assign({},pe),{scrollByPage:Ce})}if(le.affectsConfiguration(O)){const Ce=!!Ee.getValue(O);pe=Object.assign(Object.assign({},pe),{smoothScrolling:Ce})}if(le.affectsConfiguration(W)){const Ce=Ee.getValue(W);pe=Object.assign(Object.assign({},pe),{mouseWheelScrollSensitivity:Ce})}if(le.affectsConfiguration(U)){const Ce=Ee.getValue(U);pe=Object.assign(Object.assign({},pe),{fastScrollSensitivity:Ce})}Object.keys(pe).length>0&&this.updateOptions(pe)})),this.navigator=new B(this,Object.assign({configurationService:Ee},Le)),this.disposables.add(this.navigator)}updateOptions(oe){super.updateOptions(oe),oe.overrideStyles!==void 0&&this.updateStyles(oe.overrideStyles),oe.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!oe.multipleSelectionSupport)}updateStyles(oe){this.style(oe?(0,d.getListStyles)(oe):d.defaultListStyles)}};e.WorkbenchList=Z,e.WorkbenchList=Z=ke([fe(5,a.IContextKeyService),fe(6,e.IListService),fe(7,n.IConfigurationService),fe(8,r.IInstantiationService)],Z);let J=class extends k.PagedList{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me){const Pe=typeof Le.horizontalScrolling<\"u\"?Le.horizontalScrolling:!!Ee.getValue(I),[Fe,_e]=Me.invokeFunction(G,Le);super(oe,ge,ve,Se,Object.assign(Object.assign({keyboardSupport:!1},Fe),{horizontalScrolling:Pe})),this.disposables=new s.DisposableStore,this.disposables.add(_e),this.contextKeyService=v(De,this),this.disposables.add(b(this.contextKeyService,this.widget)),this.horizontalScrolling=Le.horizontalScrolling,this.listSupportsMultiSelect=e.WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(Le.multipleSelectionSupport!==!1),e.WorkbenchListSelectionNavigation.bindTo(this.contextKeyService).set(!!Le.selectionNavigation),this._useAltAsMultipleSelectionModifier=R(Ee),this.disposables.add(this.contextKeyService),this.disposables.add(ye.register(this)),this.updateStyles(Le.overrideStyles),this.disposables.add(Ee.onDidChangeConfiguration(le=>{le.affectsConfiguration(w)&&(this._useAltAsMultipleSelectionModifier=R(Ee));let pe={};if(le.affectsConfiguration(I)&&this.horizontalScrolling===void 0){const Ce=!!Ee.getValue(I);pe=Object.assign(Object.assign({},pe),{horizontalScrolling:Ce})}if(le.affectsConfiguration(T)){const Ce=!!Ee.getValue(T);pe=Object.assign(Object.assign({},pe),{scrollByPage:Ce})}if(le.affectsConfiguration(O)){const Ce=!!Ee.getValue(O);pe=Object.assign(Object.assign({},pe),{smoothScrolling:Ce})}if(le.affectsConfiguration(W)){const Ce=Ee.getValue(W);pe=Object.assign(Object.assign({},pe),{mouseWheelScrollSensitivity:Ce})}if(le.affectsConfiguration(U)){const Ce=Ee.getValue(U);pe=Object.assign(Object.assign({},pe),{fastScrollSensitivity:Ce})}Object.keys(pe).length>0&&this.updateOptions(pe)})),this.navigator=new B(this,Object.assign({configurationService:Ee},Le)),this.disposables.add(this.navigator)}updateOptions(oe){super.updateOptions(oe),oe.overrideStyles!==void 0&&this.updateStyles(oe.overrideStyles),oe.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!oe.multipleSelectionSupport)}updateStyles(oe){this.style(oe?(0,d.getListStyles)(oe):d.defaultListStyles)}dispose(){this.disposables.dispose(),super.dispose()}};e.WorkbenchPagedList=J,e.WorkbenchPagedList=J=ke([fe(5,a.IContextKeyService),fe(6,e.IListService),fe(7,n.IConfigurationService),fe(8,r.IInstantiationService)],J);let X=class extends D.Table{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe){const Fe=typeof De.horizontalScrolling<\"u\"?De.horizontalScrolling:!!Me.getValue(I),[_e,me]=Pe.invokeFunction(G,De);super(oe,ge,ve,Se,Le,Object.assign(Object.assign({keyboardSupport:!1},_e),{horizontalScrolling:Fe})),this.disposables.add(me),this.contextKeyService=v(ye,this),this.disposables.add(b(this.contextKeyService,this)),this.listSupportsMultiSelect=e.WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(De.multipleSelectionSupport!==!1),e.WorkbenchListSelectionNavigation.bindTo(this.contextKeyService).set(!!De.selectionNavigation),this.listHasSelectionOrFocus=e.WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService),this.listDoubleSelection=e.WorkbenchListDoubleSelection.bindTo(this.contextKeyService),this.listMultiSelection=e.WorkbenchListMultiSelection.bindTo(this.contextKeyService),this.horizontalScrolling=De.horizontalScrolling,this._useAltAsMultipleSelectionModifier=R(Me),this.disposables.add(this.contextKeyService),this.disposables.add(Ee.register(this)),this.updateStyles(De.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const pe=this.getSelection(),Ce=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(pe.length>0||Ce.length>0),this.listMultiSelection.set(pe.length>1),this.listDoubleSelection.set(pe.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const pe=this.getSelection(),Ce=this.getFocus();this.listHasSelectionOrFocus.set(pe.length>0||Ce.length>0)})),this.disposables.add(Me.onDidChangeConfiguration(pe=>{pe.affectsConfiguration(w)&&(this._useAltAsMultipleSelectionModifier=R(Me));let Ce={};if(pe.affectsConfiguration(I)&&this.horizontalScrolling===void 0){const be=!!Me.getValue(I);Ce=Object.assign(Object.assign({},Ce),{horizontalScrolling:be})}if(pe.affectsConfiguration(T)){const be=!!Me.getValue(T);Ce=Object.assign(Object.assign({},Ce),{scrollByPage:be})}if(pe.affectsConfiguration(O)){const be=!!Me.getValue(O);Ce=Object.assign(Object.assign({},Ce),{smoothScrolling:be})}if(pe.affectsConfiguration(W)){const be=Me.getValue(W);Ce=Object.assign(Object.assign({},Ce),{mouseWheelScrollSensitivity:be})}if(pe.affectsConfiguration(U)){const be=Me.getValue(U);Ce=Object.assign(Object.assign({},Ce),{fastScrollSensitivity:be})}Object.keys(Ce).length>0&&this.updateOptions(Ce)})),this.navigator=new V(this,Object.assign({configurationService:Me},De)),this.disposables.add(this.navigator)}updateOptions(oe){super.updateOptions(oe),oe.overrideStyles!==void 0&&this.updateStyles(oe.overrideStyles),oe.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!oe.multipleSelectionSupport)}updateStyles(oe){this.style(oe?(0,d.getListStyles)(oe):d.defaultListStyles)}dispose(){this.disposables.dispose(),super.dispose()}};e.WorkbenchTable=X,e.WorkbenchTable=X=ke([fe(6,a.IContextKeyService),fe(7,e.IListService),fe(8,n.IConfigurationService),fe(9,r.IInstantiationService)],X);class H extends s.Disposable{constructor(oe,ge){var ve;super(),this.widget=oe,this._onDidOpen=this._register(new C.Emitter),this.onDidOpen=this._onDidOpen.event,this._register(C.Event.filter(this.widget.onDidChangeSelection,Se=>Se.browserEvent instanceof KeyboardEvent)(Se=>this.onSelectionFromKeyboard(Se))),this._register(this.widget.onPointer(Se=>this.onPointer(Se.element,Se.browserEvent))),this._register(this.widget.onMouseDblClick(Se=>this.onMouseDblClick(Se.element,Se.browserEvent))),typeof ge?.openOnSingleClick!=\"boolean\"&&ge?.configurationService?(this.openOnSingleClick=ge?.configurationService.getValue(E)!==\"doubleClick\",this._register(ge?.configurationService.onDidChangeConfiguration(Se=>{Se.affectsConfiguration(E)&&(this.openOnSingleClick=ge?.configurationService.getValue(E)!==\"doubleClick\")}))):this.openOnSingleClick=(ve=ge?.openOnSingleClick)!==null&&ve!==void 0?ve:!0}onSelectionFromKeyboard(oe){if(oe.elements.length!==1)return;const ge=oe.browserEvent,ve=typeof ge.preserveFocus==\"boolean\"?ge.preserveFocus:!0,Se=typeof ge.pinned==\"boolean\"?ge.pinned:!ve,Le=!1;this._open(this.getSelectedElement(),ve,Se,Le,oe.browserEvent)}onPointer(oe,ge){if(!this.openOnSingleClick||ge.detail===2)return;const Se=ge.button===1,Le=!0,De=Se,ye=ge.ctrlKey||ge.metaKey||ge.altKey;this._open(oe,Le,De,ye,ge)}onMouseDblClick(oe,ge){if(!ge)return;const ve=ge.target;if(ve.classList.contains(\"monaco-tl-twistie\")||ve.classList.contains(\"monaco-icon-label\")&&ve.classList.contains(\"folder-icon\")&&ge.offsetX<16)return;const Le=!1,De=!0,ye=ge.ctrlKey||ge.metaKey||ge.altKey;this._open(oe,Le,De,ye,ge)}_open(oe,ge,ve,Se,Le){oe&&this._onDidOpen.fire({editorOptions:{preserveFocus:ge,pinned:ve,revealIfVisible:!0},sideBySide:Se,element:oe,browserEvent:Le})}}class B extends H{constructor(oe,ge){super(oe,ge),this.widget=oe}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class V extends H{constructor(oe,ge){super(oe,ge)}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class Y extends H{constructor(oe,ge){super(oe,ge)}getSelectedElement(){var oe;return(oe=this.widget.getSelection()[0])!==null&&oe!==void 0?oe:void 0}}function ie(re){let oe=!1;return ge=>{if(ge.toKeyCodeChord().isModifierKey())return!1;if(oe)return oe=!1,!1;const ve=re.softDispatch(ge,ge.target);return ve.kind===1?(oe=!0,!1):(oe=!1,ve.kind===0)}}let ae=class extends g.ObjectTree{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me){const{options:Pe,getTypeNavigationMode:Fe,disposable:_e}=De.invokeFunction(z,Le);super(oe,ge,ve,Se,Pe),this.disposables.add(_e),this.internals=new ee(this,Le,Fe,Le.overrideStyles,ye,Ee,Me),this.disposables.add(this.internals)}updateOptions(oe){super.updateOptions(oe),this.internals.updateOptions(oe)}};e.WorkbenchObjectTree=ae,e.WorkbenchObjectTree=ae=ke([fe(5,r.IInstantiationService),fe(6,a.IContextKeyService),fe(7,e.IListService),fe(8,n.IConfigurationService)],ae);let ce=class extends g.CompressibleObjectTree{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me){const{options:Pe,getTypeNavigationMode:Fe,disposable:_e}=De.invokeFunction(z,Le);super(oe,ge,ve,Se,Pe),this.disposables.add(_e),this.internals=new ee(this,Le,Fe,Le.overrideStyles,ye,Ee,Me),this.disposables.add(this.internals)}updateOptions(oe={}){super.updateOptions(oe),oe.overrideStyles&&this.internals.updateStyleOverrides(oe.overrideStyles),this.internals.updateOptions(oe)}};e.WorkbenchCompressibleObjectTree=ce,e.WorkbenchCompressibleObjectTree=ce=ke([fe(5,r.IInstantiationService),fe(6,a.IContextKeyService),fe(7,e.IListService),fe(8,n.IConfigurationService)],ce);let de=class extends _.DataTree{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe){const{options:Fe,getTypeNavigationMode:_e,disposable:me}=ye.invokeFunction(z,De);super(oe,ge,ve,Se,Le,Fe),this.disposables.add(me),this.internals=new ee(this,De,_e,De.overrideStyles,Ee,Me,Pe),this.disposables.add(this.internals)}updateOptions(oe={}){super.updateOptions(oe),oe.overrideStyles!==void 0&&this.internals.updateStyleOverrides(oe.overrideStyles),this.internals.updateOptions(oe)}};e.WorkbenchDataTree=de,e.WorkbenchDataTree=de=ke([fe(6,r.IInstantiationService),fe(7,a.IContextKeyService),fe(8,e.IListService),fe(9,n.IConfigurationService)],de);let he=class extends f.AsyncDataTree{get onDidOpen(){return this.internals.onDidOpen}constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe){const{options:Fe,getTypeNavigationMode:_e,disposable:me}=ye.invokeFunction(z,De);super(oe,ge,ve,Se,Le,Fe),this.disposables.add(me),this.internals=new ee(this,De,_e,De.overrideStyles,Ee,Me,Pe),this.disposables.add(this.internals)}updateOptions(oe={}){super.updateOptions(oe),oe.overrideStyles&&this.internals.updateStyleOverrides(oe.overrideStyles),this.internals.updateOptions(oe)}};e.WorkbenchAsyncDataTree=he,e.WorkbenchAsyncDataTree=he=ke([fe(6,r.IInstantiationService),fe(7,a.IContextKeyService),fe(8,e.IListService),fe(9,n.IConfigurationService)],he);let ue=class extends f.CompressibleAsyncDataTree{constructor(oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe,Fe){const{options:_e,getTypeNavigationMode:me,disposable:le}=Ee.invokeFunction(z,ye);super(oe,ge,ve,Se,Le,De,_e),this.disposables.add(le),this.internals=new ee(this,ye,me,ye.overrideStyles,Me,Pe,Fe),this.disposables.add(this.internals)}updateOptions(oe){super.updateOptions(oe),this.internals.updateOptions(oe)}};e.WorkbenchCompressibleAsyncDataTree=ue,e.WorkbenchCompressibleAsyncDataTree=ue=ke([fe(7,r.IInstantiationService),fe(8,a.IContextKeyService),fe(9,e.IListService),fe(10,n.IConfigurationService)],ue);function te(re){const oe=re.getValue(M);if(oe===\"highlight\")return S.TreeFindMode.Highlight;if(oe===\"filter\")return S.TreeFindMode.Filter;const ge=re.getValue(x);if(ge===\"simple\"||ge===\"highlight\")return S.TreeFindMode.Highlight;if(ge===\"filter\")return S.TreeFindMode.Filter}function q(re){const oe=re.getValue(A);if(oe===\"fuzzy\")return S.TreeFindMatchType.Fuzzy;if(oe===\"contiguous\")return S.TreeFindMatchType.Contiguous}function z(re,oe){var ge;const ve=re.get(n.IConfigurationService),Se=re.get(h.IContextViewService),Le=re.get(a.IContextKeyService),De=re.get(r.IInstantiationService),ye=()=>{const me=Le.getContextKeyValue(p);if(me===\"automatic\")return y.TypeNavigationMode.Automatic;if(me===\"trigger\"||Le.getContextKeyValue(m)===!1)return y.TypeNavigationMode.Trigger;const pe=ve.getValue(P);if(pe===\"automatic\")return y.TypeNavigationMode.Automatic;if(pe===\"trigger\")return y.TypeNavigationMode.Trigger},Ee=oe.horizontalScrolling!==void 0?oe.horizontalScrolling:!!ve.getValue(I),[Me,Pe]=De.invokeFunction(G,oe),Fe=oe.paddingBottom,_e=oe.renderIndentGuides!==void 0?oe.renderIndentGuides:ve.getValue(F);return{getTypeNavigationMode:ye,disposable:Pe,options:Object.assign(Object.assign({keyboardSupport:!1},Me),{indent:typeof ve.getValue(N)==\"number\"?ve.getValue(N):void 0,renderIndentGuides:_e,smoothScrolling:!!ve.getValue(O),defaultFindMode:te(ve),defaultFindMatchType:q(ve),horizontalScrolling:Ee,scrollByPage:!!ve.getValue(T),paddingBottom:Fe,hideTwistiesOfChildlessElements:oe.hideTwistiesOfChildlessElements,expandOnlyOnTwistieClick:(ge=oe.expandOnlyOnTwistieClick)!==null&&ge!==void 0?ge:ve.getValue(j)===\"doubleClick\",contextViewProvider:Se,findWidgetStyles:d.defaultFindWidgetStyles})}}let ee=class{get onDidOpen(){return this.navigator.onDidOpen}constructor(oe,ge,ve,Se,Le,De,ye){var Ee;this.tree=oe,this.disposables=[],this.contextKeyService=v(Le,oe),this.disposables.push(b(this.contextKeyService,oe)),this.listSupportsMultiSelect=e.WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(ge.multipleSelectionSupport!==!1),e.WorkbenchListSelectionNavigation.bindTo(this.contextKeyService).set(!!ge.selectionNavigation),this.listSupportFindWidget=e.WorkbenchListSupportsFind.bindTo(this.contextKeyService),this.listSupportFindWidget.set((Ee=ge.findWidgetEnabled)!==null&&Ee!==void 0?Ee:!0),this.hasSelectionOrFocus=e.WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService),this.hasDoubleSelection=e.WorkbenchListDoubleSelection.bindTo(this.contextKeyService),this.hasMultiSelection=e.WorkbenchListMultiSelection.bindTo(this.contextKeyService),this.treeElementCanCollapse=e.WorkbenchTreeElementCanCollapse.bindTo(this.contextKeyService),this.treeElementHasParent=e.WorkbenchTreeElementHasParent.bindTo(this.contextKeyService),this.treeElementCanExpand=e.WorkbenchTreeElementCanExpand.bindTo(this.contextKeyService),this.treeElementHasChild=e.WorkbenchTreeElementHasChild.bindTo(this.contextKeyService),this.treeFindOpen=e.WorkbenchTreeFindOpen.bindTo(this.contextKeyService),this._useAltAsMultipleSelectionModifier=R(ye),this.updateStyleOverrides(Se);const Pe=()=>{const _e=oe.getFocus()[0];if(!_e)return;const me=oe.getNode(_e);this.treeElementCanCollapse.set(me.collapsible&&!me.collapsed),this.treeElementHasParent.set(!!oe.getParentElement(_e)),this.treeElementCanExpand.set(me.collapsible&&me.collapsed),this.treeElementHasChild.set(!!oe.getFirstElementChild(_e))},Fe=new Set;Fe.add(p),Fe.add(m),this.disposables.push(this.contextKeyService,De.register(oe),oe.onDidChangeSelection(()=>{const _e=oe.getSelection(),me=oe.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.hasSelectionOrFocus.set(_e.length>0||me.length>0),this.hasMultiSelection.set(_e.length>1),this.hasDoubleSelection.set(_e.length===2)})}),oe.onDidChangeFocus(()=>{const _e=oe.getSelection(),me=oe.getFocus();this.hasSelectionOrFocus.set(_e.length>0||me.length>0),Pe()}),oe.onDidChangeCollapseState(Pe),oe.onDidChangeModel(Pe),oe.onDidChangeFindOpenState(_e=>this.treeFindOpen.set(_e)),ye.onDidChangeConfiguration(_e=>{let me={};if(_e.affectsConfiguration(w)&&(this._useAltAsMultipleSelectionModifier=R(ye)),_e.affectsConfiguration(N)){const le=ye.getValue(N);me=Object.assign(Object.assign({},me),{indent:le})}if(_e.affectsConfiguration(F)&&ge.renderIndentGuides===void 0){const le=ye.getValue(F);me=Object.assign(Object.assign({},me),{renderIndentGuides:le})}if(_e.affectsConfiguration(O)){const le=!!ye.getValue(O);me=Object.assign(Object.assign({},me),{smoothScrolling:le})}if(_e.affectsConfiguration(M)||_e.affectsConfiguration(x)){const le=te(ye);me=Object.assign(Object.assign({},me),{defaultFindMode:le})}if(_e.affectsConfiguration(P)||_e.affectsConfiguration(x)){const le=ve();me=Object.assign(Object.assign({},me),{typeNavigationMode:le})}if(_e.affectsConfiguration(A)){const le=q(ye);me=Object.assign(Object.assign({},me),{defaultFindMatchType:le})}if(_e.affectsConfiguration(I)&&ge.horizontalScrolling===void 0){const le=!!ye.getValue(I);me=Object.assign(Object.assign({},me),{horizontalScrolling:le})}if(_e.affectsConfiguration(T)){const le=!!ye.getValue(T);me=Object.assign(Object.assign({},me),{scrollByPage:le})}if(_e.affectsConfiguration(j)&&ge.expandOnlyOnTwistieClick===void 0&&(me=Object.assign(Object.assign({},me),{expandOnlyOnTwistieClick:ye.getValue(j)===\"doubleClick\"})),_e.affectsConfiguration(W)){const le=ye.getValue(W);me=Object.assign(Object.assign({},me),{mouseWheelScrollSensitivity:le})}if(_e.affectsConfiguration(U)){const le=ye.getValue(U);me=Object.assign(Object.assign({},me),{fastScrollSensitivity:le})}Object.keys(me).length>0&&oe.updateOptions(me)}),this.contextKeyService.onDidChangeContext(_e=>{_e.affectsSome(Fe)&&oe.updateOptions({typeNavigationMode:ve()})})),this.navigator=new Y(oe,Object.assign({configurationService:ye},ge)),this.disposables.push(this.navigator)}updateOptions(oe){oe.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!oe.multipleSelectionSupport)}updateStyleOverrides(oe){this.tree.style(oe?(0,d.getListStyles)(oe):d.defaultListStyles)}dispose(){this.disposables=(0,s.dispose)(this.disposables)}};ee=ke([fe(4,a.IContextKeyService),fe(5,e.IListService),fe(6,n.IConfigurationService)],ee),o.Registry.as(t.Extensions.Configuration).registerConfiguration({id:\"workbench\",order:7,title:(0,i.localize)(0,null),type:\"object\",properties:{[w]:{type:\"string\",enum:[\"ctrlCmd\",\"alt\"],markdownEnumDescriptions:[(0,i.localize)(1,null),(0,i.localize)(2,null)],default:\"ctrlCmd\",description:(0,i.localize)(3,null)},[E]:{type:\"string\",enum:[\"singleClick\",\"doubleClick\"],default:\"singleClick\",description:(0,i.localize)(4,null)},[I]:{type:\"boolean\",default:!1,description:(0,i.localize)(5,null)},[T]:{type:\"boolean\",default:!1,description:(0,i.localize)(6,null)},[N]:{type:\"number\",default:8,minimum:4,maximum:40,description:(0,i.localize)(7,null)},[F]:{type:\"string\",enum:[\"none\",\"onHover\",\"always\"],default:\"onHover\",description:(0,i.localize)(8,null)},[O]:{type:\"boolean\",default:!1,description:(0,i.localize)(9,null)},[W]:{type:\"number\",default:1,markdownDescription:(0,i.localize)(10,null)},[U]:{type:\"number\",default:5,markdownDescription:(0,i.localize)(11,null)},[M]:{type:\"string\",enum:[\"highlight\",\"filter\"],enumDescriptions:[(0,i.localize)(12,null),(0,i.localize)(13,null)],default:\"highlight\",description:(0,i.localize)(14,null)},[x]:{type:\"string\",enum:[\"simple\",\"highlight\",\"filter\"],enumDescriptions:[(0,i.localize)(15,null),(0,i.localize)(16,null),(0,i.localize)(17,null)],default:\"highlight\",description:(0,i.localize)(18,null),deprecated:!0,deprecationMessage:(0,i.localize)(19,null)},[A]:{type:\"string\",enum:[\"fuzzy\",\"contiguous\"],enumDescriptions:[(0,i.localize)(20,null),(0,i.localize)(21,null)],default:\"fuzzy\",description:(0,i.localize)(22,null)},[j]:{type:\"string\",enum:[\"singleClick\",\"doubleClick\"],default:\"singleClick\",description:(0,i.localize)(23,null)},[P]:{type:\"string\",enum:[\"automatic\",\"trigger\"],default:\"automatic\",description:(0,i.localize)(24,null)}}})}),define(ne[62],se([1,0,13,25,26,6,20,22,737,240,37]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.spinningLoading=e.syncing=e.gotoNextLocation=e.gotoPreviousLocation=e.widgetClose=e.iconsSchemaId=e.getIconRegistry=e.registerIcon=e.IconFontDefinition=e.IconContribution=e.Extensions=void 0,e.Extensions={IconContribution:\"base.contributions.icons\"};var s;(function(o){function d(l,p){let m=l.defaults;for(;y.ThemeIcon.isThemeIcon(m);){const v=t.getIcon(m.id);if(!v)return;m=v.defaults}return m}o.getDefinition=d})(s||(e.IconContribution=s={}));var i;(function(o){function d(p){return{weight:p.weight,style:p.style,src:p.src.map(m=>({format:m.format,location:m.location.toString()}))}}o.toJSONObject=d;function l(p){const m=v=>(0,S.isString)(v)?v:void 0;if(p&&Array.isArray(p.src)&&p.src.every(v=>(0,S.isString)(v.format)&&(0,S.isString)(v.location)))return{weight:m(p.weight),style:m(p.style),src:p.src.map(v=>({format:v.format,location:f.URI.parse(v.location)}))}}o.fromJSONObject=l})(i||(e.IconFontDefinition=i={}));class n{constructor(){this._onDidChange=new D.Emitter,this.onDidChange=this._onDidChange.event,this.iconSchema={definitions:{icons:{type:\"object\",properties:{fontId:{type:\"string\",description:(0,_.localize)(0,null)},fontCharacter:{type:\"string\",description:(0,_.localize)(1,null)}},additionalProperties:!1,defaultSnippets:[{body:{fontCharacter:\"\\\\\\\\e030\"}}]}},type:\"object\",properties:{}},this.iconReferenceSchema={type:\"string\",pattern:`^${y.ThemeIcon.iconNameExpression}$`,enum:[],enumDescriptions:[]},this.iconsById={},this.iconFontsById={}}registerIcon(d,l,p,m){const v=this.iconsById[d];if(v){if(p&&!v.description){v.description=p,this.iconSchema.properties[d].markdownDescription=`${p} $(${d})`;const E=this.iconReferenceSchema.enum.indexOf(d);E!==-1&&(this.iconReferenceSchema.enumDescriptions[E]=p),this._onDidChange.fire()}return v}const b={id:d,description:p,defaults:l,deprecationMessage:m};this.iconsById[d]=b;const w={$ref:\"#/definitions/icons\"};return m&&(w.deprecationMessage=m),p&&(w.markdownDescription=`${p}: $(${d})`),this.iconSchema.properties[d]=w,this.iconReferenceSchema.enum.push(d),this.iconReferenceSchema.enumDescriptions.push(p||\"\"),this._onDidChange.fire(),{id:d}}getIcons(){return Object.keys(this.iconsById).map(d=>this.iconsById[d])}getIcon(d){return this.iconsById[d]}getIconSchema(){return this.iconSchema}toString(){const d=(v,b)=>v.id.localeCompare(b.id),l=v=>{for(;y.ThemeIcon.isThemeIcon(v.defaults);)v=this.iconsById[v.defaults.id];return`codicon codicon-${v?v.id:\"\"}`},p=[];p.push(\"| preview     | identifier                        | default codicon ID                | description\"),p.push(\"| ----------- | --------------------------------- | --------------------------------- | --------------------------------- |\");const m=Object.keys(this.iconsById).map(v=>this.iconsById[v]);for(const v of m.filter(b=>!!b.description).sort(d))p.push(`|<i class=\"${l(v)}\"></i>|${v.id}|${y.ThemeIcon.isThemeIcon(v.defaults)?v.defaults.id:v.id}|${v.description||\"\"}|`);p.push(\"| preview     | identifier                        \"),p.push(\"| ----------- | --------------------------------- |\");for(const v of m.filter(b=>!y.ThemeIcon.isThemeIcon(b.defaults)).sort(d))p.push(`|<i class=\"${l(v)}\"></i>|${v.id}|`);return p.join(`\n`)}}const t=new n;C.Registry.add(e.Extensions.IconContribution,t);function a(o,d,l,p){return t.registerIcon(o,d,l,p)}e.registerIcon=a;function u(){return t}e.getIconRegistry=u;function h(){const o=(0,k.getCodiconFontCharacters)();for(const d in o){const l=\"\\\\\"+o[d].toString(16);t.registerIcon(d,{fontCharacter:l})}}h(),e.iconsSchemaId=\"vscode://schemas/icons\";const r=C.Registry.as(g.Extensions.JSONContribution);r.registerSchema(e.iconsSchemaId,t.getIconSchema());const c=new L.RunOnceScheduler(()=>r.notifySchemaChanged(e.iconsSchemaId),200);t.onDidChange(()=>{c.isScheduled()||c.schedule()}),e.widgetClose=a(\"widget-close\",k.Codicon.close,(0,_.localize)(2,null)),e.gotoPreviousLocation=a(\"goto-previous-location\",k.Codicon.arrowUp,(0,_.localize)(3,null)),e.gotoNextLocation=a(\"goto-next-location\",k.Codicon.arrowDown,(0,_.localize)(4,null)),e.syncing=y.ThemeIcon.modify(k.Codicon.sync,\"spin\"),e.spinningLoading=y.ThemeIcon.modify(k.Codicon.loading,\"spin\")}),define(ne[354],se([1,0,7,35,89,68,75,39,25,2,26,59,36,12,41,86,95,67,615,116,28,62,434]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d){\"use strict\";var l;Object.defineProperty(e,\"__esModule\",{value:!0}),e.DiffReview=void 0;const p=3;class m{constructor(P,x,T,A){this.originalLineStart=P,this.originalLineEnd=x,this.modifiedLineStart=T,this.modifiedLineEnd=A}getType(){return this.originalLineStart===0?1:this.modifiedLineStart===0?2:0}}class v{constructor(P){this.entries=P}}const b=(0,d.registerIcon)(\"diff-review-insert\",_.Codicon.add,r.localize(0,null)),w=(0,d.registerIcon)(\"diff-review-remove\",_.Codicon.remove,r.localize(1,null)),E=(0,d.registerIcon)(\"diff-review-close\",_.Codicon.close,r.localize(2,null));let I=l=class extends g.Disposable{constructor(P,x,T,A){super(),this._languageService=x,this._audioCueService=T,this._configurationService=A,this._width=0,this._diffEditor=P,this._isVisible=!1,this.shadow=(0,k.createFastDomNode)(document.createElement(\"div\")),this.shadow.setClassName(\"diff-review-shadow\"),this.actionBarContainer=(0,k.createFastDomNode)(document.createElement(\"div\")),this.actionBarContainer.setClassName(\"diff-review-actions\"),this._actionBar=this._register(new D.ActionBar(this.actionBarContainer.domNode)),this._actionBar.push(new f.Action(\"diffreview.close\",r.localize(3,null),\"close-diff-review \"+C.ThemeIcon.asClassName(E),!0,()=>we(this,void 0,void 0,function*(){return this.hide()})),{label:!1,icon:!0}),this.domNode=(0,k.createFastDomNode)(document.createElement(\"div\")),this.domNode.setClassName(\"diff-review monaco-editor-background\"),this._content=(0,k.createFastDomNode)(document.createElement(\"div\")),this._content.setClassName(\"diff-review-content\"),this._content.setAttribute(\"role\",\"code\"),this.scrollbar=this._register(new S.DomScrollableElement(this._content.domNode,{})),this.domNode.domNode.appendChild(this.scrollbar.getDomNode()),this._register(P.onDidUpdateDiff(()=>{this._isVisible&&(this._diffs=this._compute(),this._render())})),this._register(P.getModifiedEditor().onDidChangeCursorPosition(()=>{this._isVisible&&this._render()})),this._register(L.addStandardDisposableListener(this.domNode.domNode,\"click\",N=>{N.preventDefault();const F=L.findParentWithClass(N.target,\"diff-review-row\");F&&this._goToRow(F)})),this._register(L.addStandardDisposableListener(this.domNode.domNode,\"keydown\",N=>{(N.equals(18)||N.equals(2066)||N.equals(530))&&(N.preventDefault(),this._goToRow(this._getNextRow(),\"next\")),(N.equals(16)||N.equals(2064)||N.equals(528))&&(N.preventDefault(),this._goToRow(this._getPrevRow(),\"previous\")),(N.equals(9)||N.equals(2057)||N.equals(521)||N.equals(1033)||N.equals(10)||N.equals(3))&&(N.preventDefault(),this.accept())})),this._register(this._configurationService.onDidChangeConfiguration(N=>{N.affectsConfiguration(\"accessibility.verbosity.diffEditor\")&&this._diffEditor.updateOptions({accessibilityVerbose:this._configurationService.getValue(\"accessibility.verbosity.diffEditor\")})})),this._diffs=[],this._currentDiff=null}prev(){let P=0;if(this._isVisible||(this._diffs=this._compute()),this._isVisible){let T=-1;for(let A=0,N=this._diffs.length;A<N;A++)if(this._diffs[A]===this._currentDiff){T=A;break}P=this._diffs.length+T-1}else P=this._findDiffIndex(this._diffEditor.getPosition());if(this._diffs.length===0)return;P=P%this._diffs.length;const x=this._diffs[P].entries;this._diffEditor.setPosition(new n.Position(x[0].modifiedLineStart,1)),this._diffEditor.setSelection({startColumn:1,startLineNumber:x[0].modifiedLineStart,endColumn:1073741824,endLineNumber:x[x.length-1].modifiedLineEnd}),this._isVisible=!0,this._diffEditor.doLayout(),this._render(),this._goToRow(this._getPrevRow(),\"previous\")}next(){let P=0;if(this._isVisible||(this._diffs=this._compute()),this._isVisible){let T=-1;for(let A=0,N=this._diffs.length;A<N;A++)if(this._diffs[A]===this._currentDiff){T=A;break}P=T+1}else P=this._findDiffIndex(this._diffEditor.getPosition());if(this._diffs.length===0)return;P=P%this._diffs.length;const x=this._diffs[P].entries;this._diffEditor.setPosition(new n.Position(x[0].modifiedLineStart,1)),this._diffEditor.setSelection({startColumn:1,startLineNumber:x[0].modifiedLineStart,endColumn:1073741824,endLineNumber:x[x.length-1].modifiedLineEnd}),this._isVisible=!0,this._diffEditor.doLayout(),this._render(),this._goToRow(this._getNextRow(),\"next\")}accept(){let P=-1;const x=this._getCurrentFocusedRow();if(x){const T=parseInt(x.getAttribute(\"data-line\"),10);isNaN(T)||(P=T)}this.hide(),P!==-1&&(this._diffEditor.setPosition(new n.Position(P,1)),this._diffEditor.revealPosition(new n.Position(P,1),1))}hide(){this._isVisible=!1,this._diffEditor.updateOptions({readOnly:!1}),this._diffEditor.focus(),this._diffEditor.doLayout(),this._render()}_getPrevRow(){const P=this._getCurrentFocusedRow();return P?P.previousElementSibling?P.previousElementSibling:P:this._getFirstRow()}_getNextRow(){const P=this._getCurrentFocusedRow();return P?P.nextElementSibling?P.nextElementSibling:P:this._getFirstRow()}_getFirstRow(){return this.domNode.domNode.querySelector(\".diff-review-row\")}_getCurrentFocusedRow(){const P=document.activeElement;return P&&/diff-review-row/.test(P.className)?P:null}_goToRow(P,x){const T=this._getCurrentFocusedRow();P.tabIndex=0,P.focus(),T&&T!==P&&(T.tabIndex=-1);const A=x?x===\"next\"?T?.nextElementSibling:T?.previousElementSibling:T;A?.classList.contains(\"line-insert\")?this._audioCueService.playAudioCue(c.AudioCue.diffLineInserted,{allowManyInParallel:!0}):A?.classList.contains(\"line-delete\")&&this._audioCueService.playAudioCue(c.AudioCue.diffLineDeleted,{allowManyInParallel:!0}),this.scrollbar.scanDomNode()}isVisible(){return this._isVisible}layout(P,x,T){this._width=x,this.shadow.setTop(P-6),this.shadow.setWidth(x),this.shadow.setHeight(this._isVisible?6:0),this.domNode.setTop(P),this.domNode.setWidth(x),this.domNode.setHeight(T),this._content.setHeight(T),this._content.setWidth(x),this._isVisible?(this.actionBarContainer.setAttribute(\"aria-hidden\",\"false\"),this.actionBarContainer.setDisplay(\"block\")):(this.actionBarContainer.setAttribute(\"aria-hidden\",\"true\"),this.actionBarContainer.setDisplay(\"none\"))}_compute(){const P=this._diffEditor.getLineChanges();if(!P||P.length===0)return[];const x=this._diffEditor.getOriginalEditor().getModel(),T=this._diffEditor.getModifiedEditor().getModel();return!x||!T?[]:l._mergeAdjacent(P,x.getLineCount(),T.getLineCount())}static _mergeAdjacent(P,x,T){if(!P||P.length===0)return[];const A=[];let N=0;for(let U=0,j=P.length;U<j;U++){const R=P[U],K=R.originalStartLineNumber,G=R.originalEndLineNumber,Z=R.modifiedStartLineNumber,J=R.modifiedEndLineNumber,X=[];let H=0;{const B=G===0?K:K-1,V=J===0?Z:Z-1;let Y=1,ie=1;if(U>0){const de=P[U-1];de.originalEndLineNumber===0?Y=de.originalStartLineNumber+1:Y=de.originalEndLineNumber+1,de.modifiedEndLineNumber===0?ie=de.modifiedStartLineNumber+1:ie=de.modifiedEndLineNumber+1}let ae=B-p+1,ce=V-p+1;if(ae<Y){const de=Y-ae;ae=ae+de,ce=ce+de}if(ce<ie){const de=ie-ce;ae=ae+de,ce=ce+de}X[H++]=new m(ae,B,ce,V)}G!==0&&(X[H++]=new m(K,G,0,0)),J!==0&&(X[H++]=new m(0,0,Z,J));{const B=G===0?K+1:G+1,V=J===0?Z+1:J+1;let Y=x,ie=T;if(U+1<j){const de=P[U+1];de.originalEndLineNumber===0?Y=de.originalStartLineNumber:Y=de.originalStartLineNumber-1,de.modifiedEndLineNumber===0?ie=de.modifiedStartLineNumber:ie=de.modifiedStartLineNumber-1}let ae=B+p-1,ce=V+p-1;if(ae>Y){const de=Y-ae;ae=ae+de,ce=ce+de}if(ce>ie){const de=ie-ce;ae=ae+de,ce=ce+de}X[H++]=new m(B,ae,V,ce)}A[N++]=new v(X)}let F=A[0].entries;const O=[];let W=0;for(let U=1,j=A.length;U<j;U++){const R=A[U].entries,K=F[F.length-1],G=R[0];if(K.getType()===0&&G.getType()===0&&G.originalLineStart<=K.originalLineEnd){F[F.length-1]=new m(K.originalLineStart,G.originalLineEnd,K.modifiedLineStart,G.modifiedLineEnd),F=F.concat(R.slice(1));continue}O[W++]=new v(F),F=R}return O[W++]=new v(F),O}_findDiffIndex(P){const x=P.lineNumber;for(let T=0,A=this._diffs.length;T<A;T++){const N=this._diffs[T].entries,F=N[N.length-1].modifiedLineEnd;if(x<=F)return T}return 0}_render(){const P=this._diffEditor.getOriginalEditor().getOptions(),x=this._diffEditor.getModifiedEditor().getOptions(),T=this._diffEditor.getOriginalEditor().getModel(),A=this._diffEditor.getModifiedEditor().getModel(),N=T.getOptions(),F=A.getOptions();if(!this._isVisible||!T||!A){L.clearNode(this._content.domNode),this._currentDiff=null,this.scrollbar.scanDomNode();return}this._diffEditor.updateOptions({readOnly:!0});const O=this._findDiffIndex(this._diffEditor.getPosition());if(this._diffs[O]===this._currentDiff)return;this._currentDiff=this._diffs[O];const W=this._diffs[O].entries,U=document.createElement(\"div\");U.className=\"diff-review-table\",U.setAttribute(\"role\",\"list\"),U.setAttribute(\"aria-label\",'Difference review. Use \"Stage | Unstage | Revert Selected Ranges\" commands'),(0,s.applyFontInfo)(U,x.get(49));let j=0,R=0,K=0,G=0;for(let ce=0,de=W.length;ce<de;ce++){const he=W[ce],ue=he.originalLineStart,te=he.originalLineEnd,q=he.modifiedLineStart,z=he.modifiedLineEnd;ue!==0&&(j===0||ue<j)&&(j=ue),te!==0&&(R===0||te>R)&&(R=te),q!==0&&(K===0||q<K)&&(K=q),z!==0&&(G===0||z>G)&&(G=z)}const Z=document.createElement(\"div\");Z.className=\"diff-review-row\";const J=document.createElement(\"div\");J.className=\"diff-review-cell diff-review-summary\";const X=R-j+1,H=G-K+1;J.appendChild(document.createTextNode(`${O+1}/${this._diffs.length}: @@ -${j},${X} +${K},${H} @@`)),Z.setAttribute(\"data-line\",String(K));const B=ce=>ce===0?r.localize(4,null):ce===1?r.localize(5,null):r.localize(6,null,ce),V=B(X),Y=B(H);Z.setAttribute(\"aria-label\",r.localize(7,null,O+1,this._diffs.length,j,V,K,Y)),Z.appendChild(J),Z.setAttribute(\"role\",\"listitem\"),U.appendChild(Z);const ie=x.get(65);let ae=K;for(let ce=0,de=W.length;ce<de;ce++){const he=W[ce];l._renderSection(U,he,ae,ie,this._width,P,T,N,x,A,F,this._languageService.languageIdCodec),he.modifiedLineStart!==0&&(ae=he.modifiedLineEnd)}L.clearNode(this._content.domNode),this._content.domNode.appendChild(U),this.scrollbar.scanDomNode()}static _renderSection(P,x,T,A,N,F,O,W,U,j,R,K){const G=x.getType();let Z=\"diff-review-row\",J=\"\";const X=\"diff-review-spacer\";let H=null;switch(G){case 1:Z=\"diff-review-row line-insert\",J=\" char-insert\",H=b;break;case 2:Z=\"diff-review-row line-delete\",J=\" char-delete\",H=w;break}const B=x.originalLineStart,V=x.originalLineEnd,Y=x.modifiedLineStart,ie=x.modifiedLineEnd,ae=Math.max(ie-Y,V-B),ce=F.get(142),de=ce.glyphMarginWidth+ce.lineNumbersWidth,he=U.get(142),ue=10+he.glyphMarginWidth+he.lineNumbersWidth;for(let te=0;te<=ae;te++){const q=B===0?0:B+te,z=Y===0?0:Y+te,ee=document.createElement(\"div\");ee.style.minWidth=N+\"px\",ee.className=Z,ee.setAttribute(\"role\",\"listitem\"),z!==0&&(T=z),ee.setAttribute(\"data-line\",String(T));const $=document.createElement(\"div\");$.className=\"diff-review-cell\",$.style.height=`${A}px`,ee.appendChild($);const re=document.createElement(\"span\");re.style.width=de+\"px\",re.style.minWidth=de+\"px\",re.className=\"diff-review-line-number\"+J,q!==0?re.appendChild(document.createTextNode(String(q))):re.innerText=\"\\xA0\",$.appendChild(re);const oe=document.createElement(\"span\");oe.style.width=ue+\"px\",oe.style.minWidth=ue+\"px\",oe.style.paddingRight=\"10px\",oe.className=\"diff-review-line-number\"+J,z!==0?oe.appendChild(document.createTextNode(String(z))):oe.innerText=\"\\xA0\",$.appendChild(oe);const ge=document.createElement(\"span\");if(ge.className=X,H){const Le=document.createElement(\"span\");Le.className=C.ThemeIcon.asClassName(H),Le.innerText=\"\\xA0\\xA0\",ge.appendChild(Le)}else ge.innerText=\"\\xA0\\xA0\";$.appendChild(ge);let ve;if(z!==0){let Le=this._renderLine(j,U,R.tabSize,z,K);l._ttPolicy&&(Le=l._ttPolicy.createHTML(Le)),$.insertAdjacentHTML(\"beforeend\",Le),ve=j.getLineContent(z)}else{let Le=this._renderLine(O,F,W.tabSize,q,K);l._ttPolicy&&(Le=l._ttPolicy.createHTML(Le)),$.insertAdjacentHTML(\"beforeend\",Le),ve=O.getLineContent(q)}ve.length===0&&(ve=r.localize(8,null));let Se=\"\";switch(G){case 0:q===z?Se=r.localize(9,null,ve,q):Se=r.localize(10,null,ve,q,z);break;case 1:Se=r.localize(11,null,ve,z);break;case 2:Se=r.localize(12,null,ve,q);break}ee.setAttribute(\"aria-label\",Se),P.appendChild(ee)}}static _renderLine(P,x,T,A,N){const F=P.getLineContent(A),O=x.get(49),W=a.LineTokens.createEmpty(F,N),U=h.ViewLineRenderingData.isBasicASCII(F,P.mightContainNonBasicASCII()),j=h.ViewLineRenderingData.containsRTL(F,U,P.mightContainRTL());return(0,u.renderViewLine2)(new u.RenderLineInput(O.isMonospace&&!x.get(32),O.canUseHalfwidthRightwardsArrow,F,!1,U,j,0,W,[],T,0,O.spaceWidth,O.middotWidth,O.wsmiddotWidth,x.get(115),x.get(97),x.get(92),x.get(50)!==i.EditorFontLigatures.OFF,null)).html}};e.DiffReview=I,I._ttPolicy=(0,y.createTrustedTypesPolicy)(\"diffReview\",{createHTML:M=>M}),e.DiffReview=I=l=ke([fe(1,t.ILanguageService),fe(2,c.IAudioCueService),fe(3,o.IConfigurationService)],I)}),define(ne[830],se([1,0,7,68,75,39,25,2,42,26,59,102,354,36,66,90,12,5,109,41,86,95,67,607,116,8,62]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AccessibleDiffViewer=void 0;const w=(0,b.registerIcon)(\"diff-review-insert\",S.Codicon.add,(0,p.localize)(0,null)),E=(0,b.registerIcon)(\"diff-review-remove\",S.Codicon.remove,(0,p.localize)(1,null)),I=(0,b.registerIcon)(\"diff-review-close\",S.Codicon.close,(0,p.localize)(2,null));let M=class extends f.Disposable{constructor(Z,J,X,H,B,V,Y,ie,ae){super(),this._parentNode=Z,this._visible=J,this._setVisible=X,this._canClose=H,this._width=B,this._height=V,this._diffs=Y,this._editors=ie,this._instantiationService=ae,this.model=(0,_.derivedWithStore)(\"model\",(ce,de)=>{const he=this._visible.read(ce);if(this._parentNode.style.visibility=he?\"visible\":\"hidden\",!he)return null;const ue=de.add(this._instantiationService.createInstance(P,this._diffs,this._editors,this._setVisible,this._canClose)),te=de.add(this._instantiationService.createInstance(j,this._parentNode,ue,this._width,this._height,this._editors));return{model:ue,view:te}}),this._register((0,_.keepAlive)(this.model,!0))}next(){(0,_.transaction)(Z=>{const J=this._visible.get();this._setVisible(!0,Z),J&&this.model.get().model.nextGroup(Z)})}prev(){(0,_.transaction)(Z=>{this._setVisible(!0,Z),this.model.get().model.previousGroup(Z)})}close(){(0,_.transaction)(Z=>{this._setVisible(!1,Z)})}};e.AccessibleDiffViewer=M,e.AccessibleDiffViewer=M=ke([fe(8,v.IInstantiationService)],M);let P=class extends f.Disposable{constructor(Z,J,X,H,B){super(),this._diffs=Z,this._editors=J,this._setVisible=X,this.canClose=H,this._audioCueService=B,this._groups=(0,_.observableValue)(\"groups\",[]),this._currentGroupIdx=(0,_.observableValue)(\"currentGroupIdx\",0),this._currentElementIdx=(0,_.observableValue)(\"currentElementIdx\",0),this.groups=this._groups,this.currentGroup=this._currentGroupIdx.map((V,Y)=>this._groups.read(Y)[V]),this.currentGroupIndex=this._currentGroupIdx,this.currentElement=this._currentElementIdx.map((V,Y)=>{var ie;return(ie=this.currentGroup.read(Y))===null||ie===void 0?void 0:ie.lines[V]}),this._register((0,_.autorun)(V=>{const Y=this._diffs.read(V);if(!Y){this._groups.set([],void 0);return}const ie=T(Y,this._editors.original.getModel().getLineCount(),this._editors.modified.getModel().getLineCount());(0,_.transaction)(ae=>{const ce=this._editors.modified.getPosition();if(ce){const de=ie.findIndex(he=>ce?.lineNumber<he.range.modified.endLineNumberExclusive);de!==-1&&this._currentGroupIdx.set(de,ae)}this._groups.set(ie,ae)})})),this._register((0,_.autorun)(V=>{const Y=this.currentElement.read(V);Y?.type===A.Deleted?this._audioCueService.playAudioCue(m.AudioCue.diffLineDeleted,{source:\"accessibleDiffViewer.currentElementChanged\"}):Y?.type===A.Added&&this._audioCueService.playAudioCue(m.AudioCue.diffLineInserted,{source:\"accessibleDiffViewer.currentElementChanged\"})})),this._register((0,_.autorun)(V=>{var Y;const ie=this.currentElement.read(V);if(ie&&ie.type!==A.Header){const ae=(Y=ie.modifiedLineNumber)!==null&&Y!==void 0?Y:ie.diff.modifiedRange.startLineNumber;this._editors.modified.setSelection(h.Range.fromPositions(new u.Position(ae,1)))}}))}_goToGroupDelta(Z,J){const X=this.groups.get();!X||X.length<=1||(0,_.subtransaction)(J,H=>{this._currentGroupIdx.set(a.OffsetRange.ofLength(X.length).clipCyclic(this._currentGroupIdx.get()+Z),H),this._currentElementIdx.set(0,H)})}nextGroup(Z){this._goToGroupDelta(1,Z)}previousGroup(Z){this._goToGroupDelta(-1,Z)}_goToLineDelta(Z){const J=this.currentGroup.get();!J||J.lines.length<=1||(0,_.transaction)(X=>{this._currentElementIdx.set(a.OffsetRange.ofLength(J.lines.length).clip(this._currentElementIdx.get()+Z),X)})}goToNextLine(){this._goToLineDelta(1)}goToPreviousLine(){this._goToLineDelta(-1)}goToLine(Z){const J=this.currentGroup.get();if(!J)return;const X=J.lines.indexOf(Z);X!==-1&&(0,_.transaction)(H=>{this._currentElementIdx.set(X,H)})}revealCurrentElementInEditor(){this._setVisible(!1,void 0);const Z=this.currentElement.get();Z&&(Z.type===A.Deleted?(this._editors.original.setSelection(h.Range.fromPositions(new u.Position(Z.originalLineNumber,1))),this._editors.original.revealLine(Z.originalLineNumber),this._editors.original.focus()):(Z.type!==A.Header&&(this._editors.modified.setSelection(h.Range.fromPositions(new u.Position(Z.modifiedLineNumber,1))),this._editors.modified.revealLine(Z.modifiedLineNumber)),this._editors.modified.focus()))}close(){this._setVisible(!1,void 0),this._editors.modified.focus()}};P=ke([fe(4,m.IAudioCueService)],P);const x=3;function T(G,Z,J){const X=[];for(const H of K(G,(B,V)=>V.modifiedRange.startLineNumber-B.modifiedRange.endLineNumberExclusive<2*x)){const B=[];B.push(new F);const V=new t.LineRange(Math.max(1,H[0].originalRange.startLineNumber-x),Math.min(H[H.length-1].originalRange.endLineNumberExclusive+x,Z+1)),Y=new t.LineRange(Math.max(1,H[0].modifiedRange.startLineNumber-x),Math.min(H[H.length-1].modifiedRange.endLineNumberExclusive+x,J+1));R(H,(ce,de)=>{const he=new t.LineRange(ce?ce.originalRange.endLineNumberExclusive:V.startLineNumber,de?de.originalRange.startLineNumber:V.endLineNumberExclusive),ue=new t.LineRange(ce?ce.modifiedRange.endLineNumberExclusive:Y.startLineNumber,de?de.modifiedRange.startLineNumber:Y.endLineNumberExclusive);he.forEach(te=>{B.push(new U(te,ue.startLineNumber+(te-he.startLineNumber)))}),de&&(de.originalRange.forEach(te=>{B.push(new O(de,te))}),de.modifiedRange.forEach(te=>{B.push(new W(de,te))}))});const ie=H[0].modifiedRange.join(H[H.length-1].modifiedRange),ae=H[0].originalRange.join(H[H.length-1].originalRange);X.push(new N(new r.SimpleLineRangeMapping(ie,ae),B))}return X}var A;(function(G){G[G.Header=0]=\"Header\",G[G.Unchanged=1]=\"Unchanged\",G[G.Deleted=2]=\"Deleted\",G[G.Added=3]=\"Added\"})(A||(A={}));class N{constructor(Z,J){this.range=Z,this.lines=J}}class F{constructor(){this.type=A.Header}}class O{constructor(Z,J){this.diff=Z,this.originalLineNumber=J,this.type=A.Deleted,this.modifiedLineNumber=void 0}}class W{constructor(Z,J){this.diff=Z,this.modifiedLineNumber=J,this.type=A.Added,this.originalLineNumber=void 0}}class U{constructor(Z,J){this.originalLineNumber=Z,this.modifiedLineNumber=J,this.type=A.Unchanged}}let j=class extends f.Disposable{constructor(Z,J,X,H,B,V){super(),this._element=Z,this._model=J,this._width=X,this._height=H,this._editors=B,this._languageService=V,this.domNode=this._element,this.domNode.className=\"diff-review monaco-editor-background\";const Y=document.createElement(\"div\");Y.className=\"diff-review-actions\",this._actionBar=this._register(new k.ActionBar(Y)),this._register((0,_.autorun)(ie=>{this._actionBar.clear(),this._model.canClose.read(ie)&&this._actionBar.push(new D.Action(\"diffreview.close\",(0,p.localize)(3,null),\"close-diff-review \"+g.ThemeIcon.asClassName(I),!0,()=>we(this,void 0,void 0,function*(){return J.close()})),{label:!1,icon:!0})})),this._content=document.createElement(\"div\"),this._content.className=\"diff-review-content\",this._content.setAttribute(\"role\",\"code\"),this._scrollbar=this._register(new y.DomScrollableElement(this._content,{})),(0,L.reset)(this.domNode,this._scrollbar.getDomNode(),Y),this._register((0,f.toDisposable)(()=>{(0,L.reset)(this.domNode)})),this._register((0,s.applyStyle)(this.domNode,{width:this._width,height:this._height})),this._register((0,s.applyStyle)(this._content,{width:this._width,height:this._height})),this._register((0,_.autorunWithStore)((ie,ae)=>{this._model.currentGroup.read(ie),this._render(ae)})),this._register((0,L.addStandardDisposableListener)(this.domNode,\"keydown\",ie=>{(ie.equals(18)||ie.equals(2066)||ie.equals(530))&&(ie.preventDefault(),this._model.goToNextLine()),(ie.equals(16)||ie.equals(2064)||ie.equals(528))&&(ie.preventDefault(),this._model.goToPreviousLine()),(ie.equals(9)||ie.equals(2057)||ie.equals(521)||ie.equals(1033))&&(ie.preventDefault(),this._model.close()),(ie.equals(10)||ie.equals(3))&&(ie.preventDefault(),this._model.revealCurrentElementInEditor())}))}_render(Z){const J=this._editors.original.getOptions(),X=this._editors.modified.getOptions(),H=document.createElement(\"div\");H.className=\"diff-review-table\",H.setAttribute(\"role\",\"list\"),H.setAttribute(\"aria-label\",(0,p.localize)(4,null)),(0,C.applyFontInfo)(H,X.get(49)),(0,L.reset)(this._content,H);const B=this._editors.original.getModel(),V=this._editors.modified.getModel();if(!B||!V)return;const Y=B.getOptions(),ie=V.getOptions(),ae=X.get(65),ce=this._model.currentGroup.get();for(const de of ce?.lines||[]){if(!ce)break;let he;if(de.type===A.Header){const te=document.createElement(\"div\");te.className=\"diff-review-row\",te.setAttribute(\"role\",\"listitem\");const q=ce.range,z=this._model.currentGroupIndex.get(),ee=this._model.groups.get().length,$=ve=>ve===0?(0,p.localize)(5,null):ve===1?(0,p.localize)(6,null):(0,p.localize)(7,null,ve),re=$(q.original.length),oe=$(q.modified.length);te.setAttribute(\"aria-label\",(0,p.localize)(8,null,z+1,ee,q.original.startLineNumber,re,q.modified.startLineNumber,oe));const ge=document.createElement(\"div\");ge.className=\"diff-review-cell diff-review-summary\",ge.appendChild(document.createTextNode(`${z+1}/${ee}: @@ -${q.original.startLineNumber},${q.original.length} +${q.modified.startLineNumber},${q.modified.length} @@`)),te.appendChild(ge),he=te}else he=this._createRow(de,ae,this._width.get(),J,B,Y,X,V,ie);H.appendChild(he);const ue=(0,_.derived)(te=>this._model.currentElement.read(te)===de);Z.add((0,_.autorun)(te=>{const q=ue.read(te);he.tabIndex=q?0:-1,q&&he.focus()})),Z.add((0,L.addDisposableListener)(he,\"focus\",()=>{this._model.goToLine(de)}))}this._scrollbar.scanDomNode()}_createRow(Z,J,X,H,B,V,Y,ie,ae){const ce=H.get(142),de=ce.glyphMarginWidth+ce.lineNumbersWidth,he=Y.get(142),ue=10+he.glyphMarginWidth+he.lineNumbersWidth;let te=\"diff-review-row\",q=\"\";const z=\"diff-review-spacer\";let ee=null;switch(Z.type){case A.Added:te=\"diff-review-row line-insert\",q=\" char-insert\",ee=w;break;case A.Deleted:te=\"diff-review-row line-delete\",q=\" char-delete\",ee=E;break}const $=document.createElement(\"div\");$.style.minWidth=X+\"px\",$.className=te,$.setAttribute(\"role\",\"listitem\"),$.ariaLevel=\"\";const re=document.createElement(\"div\");re.className=\"diff-review-cell\",re.style.height=`${J}px`,$.appendChild(re);const oe=document.createElement(\"span\");oe.style.width=de+\"px\",oe.style.minWidth=de+\"px\",oe.className=\"diff-review-line-number\"+q,Z.originalLineNumber!==void 0?oe.appendChild(document.createTextNode(String(Z.originalLineNumber))):oe.innerText=\"\\xA0\",re.appendChild(oe);const ge=document.createElement(\"span\");ge.style.width=ue+\"px\",ge.style.minWidth=ue+\"px\",ge.style.paddingRight=\"10px\",ge.className=\"diff-review-line-number\"+q,Z.modifiedLineNumber!==void 0?ge.appendChild(document.createTextNode(String(Z.modifiedLineNumber))):ge.innerText=\"\\xA0\",re.appendChild(ge);const ve=document.createElement(\"span\");if(ve.className=z,ee){const De=document.createElement(\"span\");De.className=g.ThemeIcon.asClassName(ee),De.innerText=\"\\xA0\\xA0\",ve.appendChild(De)}else ve.innerText=\"\\xA0\\xA0\";re.appendChild(ve);let Se;if(Z.modifiedLineNumber!==void 0){let De=this._getLineHtml(ie,Y,ae.tabSize,Z.modifiedLineNumber,this._languageService.languageIdCodec);i.DiffReview._ttPolicy&&(De=i.DiffReview._ttPolicy.createHTML(De)),re.insertAdjacentHTML(\"beforeend\",De),Se=ie.getLineContent(Z.modifiedLineNumber)}else{let De=this._getLineHtml(B,H,V.tabSize,Z.originalLineNumber,this._languageService.languageIdCodec);i.DiffReview._ttPolicy&&(De=i.DiffReview._ttPolicy.createHTML(De)),re.insertAdjacentHTML(\"beforeend\",De),Se=B.getLineContent(Z.originalLineNumber)}Se.length===0&&(Se=(0,p.localize)(9,null));let Le=\"\";switch(Z.type){case A.Unchanged:Z.originalLineNumber===Z.modifiedLineNumber?Le=(0,p.localize)(10,null,Se,Z.originalLineNumber):Le=(0,p.localize)(11,null,Se,Z.originalLineNumber,Z.modifiedLineNumber);break;case A.Added:Le=(0,p.localize)(12,null,Se,Z.modifiedLineNumber);break;case A.Deleted:Le=(0,p.localize)(13,null,Se,Z.originalLineNumber);break}return $.setAttribute(\"aria-label\",Le),$}_getLineHtml(Z,J,X,H,B){const V=Z.getLineContent(H),Y=J.get(49),ie=o.LineTokens.createEmpty(V,B),ae=l.ViewLineRenderingData.isBasicASCII(V,Z.mightContainNonBasicASCII()),ce=l.ViewLineRenderingData.containsRTL(V,ae,Z.mightContainRTL());return(0,d.renderViewLine2)(new d.RenderLineInput(Y.isMonospace&&!J.get(32),Y.canUseHalfwidthRightwardsArrow,V,!1,ae,ce,0,ie,[],X,0,Y.spaceWidth,Y.middotWidth,Y.wsmiddotWidth,J.get(115),J.get(97),J.get(92),J.get(50)!==n.EditorFontLigatures.OFF,null)).html}};j=ke([fe(5,c.ILanguageService)],j);function R(G,Z){let J;for(const X of G)Z(J,X),J=X;Z(J,void 0)}function*K(G,Z){let J,X;for(const H of G)X!==void 0&&Z(X,H)?J.push(H):(J&&(yield J),J=[H]),X=H;J&&(yield J)}}),define(ne[831],se([1,0,52,7,152,83,25,38,6,2,26,644,31,62,199]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorPickerWidget=e.InsertButton=e.ColorPickerBody=e.ColorPickerHeader=void 0;const t=k.$;class a extends g.Disposable{constructor(v,b,w,E=!1){super(),this.model=b,this.showingStandaloneColorPicker=E,this._closeButton=null,this._domNode=t(\".colorpicker-header\"),k.append(v,this._domNode),this._pickedColorNode=k.append(this._domNode,t(\".picked-color\")),k.append(this._pickedColorNode,t(\"span.codicon.codicon-color-mode\")),this._pickedColorPresentation=k.append(this._pickedColorNode,document.createElement(\"span\")),this._pickedColorPresentation.classList.add(\"picked-color-presentation\");const I=(0,s.localize)(0,null);this._pickedColorNode.setAttribute(\"title\",I),this._originalColorNode=k.append(this._domNode,t(\".original-color\")),this._originalColorNode.style.backgroundColor=f.Color.Format.CSS.format(this.model.originalColor)||\"\",this.backgroundColor=w.getColorTheme().getColor(i.editorHoverBackground)||f.Color.white,this._register(w.onDidColorThemeChange(M=>{this.backgroundColor=M.getColor(i.editorHoverBackground)||f.Color.white})),this._register(k.addDisposableListener(this._pickedColorNode,k.EventType.CLICK,()=>this.model.selectNextColorPresentation())),this._register(k.addDisposableListener(this._originalColorNode,k.EventType.CLICK,()=>{this.model.color=this.model.originalColor,this.model.flushColor()})),this._register(b.onDidChangeColor(this.onDidChangeColor,this)),this._register(b.onDidChangePresentation(this.onDidChangePresentation,this)),this._pickedColorNode.style.backgroundColor=f.Color.Format.CSS.format(b.color)||\"\",this._pickedColorNode.classList.toggle(\"light\",b.color.rgba.a<.5?this.backgroundColor.isLighter():b.color.isLighter()),this.onDidChangeColor(this.model.color),this.showingStandaloneColorPicker&&(this._domNode.classList.add(\"standalone-colorpicker\"),this._closeButton=this._register(new u(this._domNode)))}get closeButton(){return this._closeButton}get pickedColorNode(){return this._pickedColorNode}get originalColorNode(){return this._originalColorNode}onDidChangeColor(v){this._pickedColorNode.style.backgroundColor=f.Color.Format.CSS.format(v)||\"\",this._pickedColorNode.classList.toggle(\"light\",v.rgba.a<.5?this.backgroundColor.isLighter():v.isLighter()),this.onDidChangePresentation()}onDidChangePresentation(){this._pickedColorPresentation.textContent=this.model.presentation?this.model.presentation.label:\"\"}}e.ColorPickerHeader=a;class u extends g.Disposable{constructor(v){super(),this._onClicked=this._register(new _.Emitter),this.onClicked=this._onClicked.event,this._button=document.createElement(\"div\"),this._button.classList.add(\"close-button\"),k.append(v,this._button);const b=document.createElement(\"div\");b.classList.add(\"close-button-inner-div\"),k.append(this._button,b),k.append(b,t(\".button\"+C.ThemeIcon.asCSSSelector((0,n.registerIcon)(\"color-picker-close\",S.Codicon.close,(0,s.localize)(1,null))))).classList.add(\"close-icon\"),this._button.onclick=()=>{this._onClicked.fire()}}}class h extends g.Disposable{constructor(v,b,w,E=!1){super(),this.model=b,this.pixelRatio=w,this._insertButton=null,this._domNode=t(\".colorpicker-body\"),k.append(v,this._domNode),this._saturationBox=new r(this._domNode,this.model,this.pixelRatio),this._register(this._saturationBox),this._register(this._saturationBox.onDidChange(this.onDidSaturationValueChange,this)),this._register(this._saturationBox.onColorFlushed(this.flushColor,this)),this._opacityStrip=new o(this._domNode,this.model,E),this._register(this._opacityStrip),this._register(this._opacityStrip.onDidChange(this.onDidOpacityChange,this)),this._register(this._opacityStrip.onColorFlushed(this.flushColor,this)),this._hueStrip=new d(this._domNode,this.model,E),this._register(this._hueStrip),this._register(this._hueStrip.onDidChange(this.onDidHueChange,this)),this._register(this._hueStrip.onColorFlushed(this.flushColor,this)),E&&(this._insertButton=this._register(new l(this._domNode)),this._domNode.classList.add(\"standalone-colorpicker\"))}flushColor(){this.model.flushColor()}onDidSaturationValueChange({s:v,v:b}){const w=this.model.color.hsva;this.model.color=new f.Color(new f.HSVA(w.h,v,b,w.a))}onDidOpacityChange(v){const b=this.model.color.hsva;this.model.color=new f.Color(new f.HSVA(b.h,b.s,b.v,v))}onDidHueChange(v){const b=this.model.color.hsva,w=(1-v)*360;this.model.color=new f.Color(new f.HSVA(w===360?0:w,b.s,b.v,b.a))}get domNode(){return this._domNode}get saturationBox(){return this._saturationBox}get enterButton(){return this._insertButton}layout(){this._saturationBox.layout(),this._opacityStrip.layout(),this._hueStrip.layout()}}e.ColorPickerBody=h;class r extends g.Disposable{constructor(v,b,w){super(),this.model=b,this.pixelRatio=w,this._onDidChange=new _.Emitter,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new _.Emitter,this.onColorFlushed=this._onColorFlushed.event,this._domNode=t(\".saturation-wrap\"),k.append(v,this._domNode),this._canvas=document.createElement(\"canvas\"),this._canvas.className=\"saturation-box\",k.append(this._domNode,this._canvas),this.selection=t(\".saturation-selection\"),k.append(this._domNode,this.selection),this.layout(),this._register(k.addDisposableListener(this._domNode,k.EventType.POINTER_DOWN,E=>this.onPointerDown(E))),this._register(this.model.onDidChangeColor(this.onDidChangeColor,this)),this.monitor=null}get domNode(){return this._domNode}onPointerDown(v){if(!v.target||!(v.target instanceof Element))return;this.monitor=this._register(new y.GlobalPointerMoveMonitor);const b=k.getDomNodePagePosition(this._domNode);v.target!==this.selection&&this.onDidChangePosition(v.offsetX,v.offsetY),this.monitor.startMonitoring(v.target,v.pointerId,v.buttons,E=>this.onDidChangePosition(E.pageX-b.left,E.pageY-b.top),()=>null);const w=k.addDisposableListener(document,k.EventType.POINTER_UP,()=>{this._onColorFlushed.fire(),w.dispose(),this.monitor&&(this.monitor.stopMonitoring(!0),this.monitor=null)},!0)}onDidChangePosition(v,b){const w=Math.max(0,Math.min(1,v/this.width)),E=Math.max(0,Math.min(1,1-b/this.height));this.paintSelection(w,E),this._onDidChange.fire({s:w,v:E})}layout(){this.width=this._domNode.offsetWidth,this.height=this._domNode.offsetHeight,this._canvas.width=this.width*this.pixelRatio,this._canvas.height=this.height*this.pixelRatio,this.paint();const v=this.model.color.hsva;this.paintSelection(v.s,v.v)}paint(){const v=this.model.color.hsva,b=new f.Color(new f.HSVA(v.h,1,1,1)),w=this._canvas.getContext(\"2d\"),E=w.createLinearGradient(0,0,this._canvas.width,0);E.addColorStop(0,\"rgba(255, 255, 255, 1)\"),E.addColorStop(.5,\"rgba(255, 255, 255, 0.5)\"),E.addColorStop(1,\"rgba(255, 255, 255, 0)\");const I=w.createLinearGradient(0,0,0,this._canvas.height);I.addColorStop(0,\"rgba(0, 0, 0, 0)\"),I.addColorStop(1,\"rgba(0, 0, 0, 1)\"),w.rect(0,0,this._canvas.width,this._canvas.height),w.fillStyle=f.Color.Format.CSS.format(b),w.fill(),w.fillStyle=E,w.fill(),w.fillStyle=I,w.fill()}paintSelection(v,b){this.selection.style.left=`${v*this.width}px`,this.selection.style.top=`${this.height-b*this.height}px`}onDidChangeColor(v){if(this.monitor&&this.monitor.isMonitoring())return;this.paint();const b=v.hsva;this.paintSelection(b.s,b.v)}}class c extends g.Disposable{constructor(v,b,w=!1){super(),this.model=b,this._onDidChange=new _.Emitter,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new _.Emitter,this.onColorFlushed=this._onColorFlushed.event,w?(this.domNode=k.append(v,t(\".standalone-strip\")),this.overlay=k.append(this.domNode,t(\".standalone-overlay\"))):(this.domNode=k.append(v,t(\".strip\")),this.overlay=k.append(this.domNode,t(\".overlay\"))),this.slider=k.append(this.domNode,t(\".slider\")),this.slider.style.top=\"0px\",this._register(k.addDisposableListener(this.domNode,k.EventType.POINTER_DOWN,E=>this.onPointerDown(E))),this._register(b.onDidChangeColor(this.onDidChangeColor,this)),this.layout()}layout(){this.height=this.domNode.offsetHeight-this.slider.offsetHeight;const v=this.getValue(this.model.color);this.updateSliderPosition(v)}onDidChangeColor(v){const b=this.getValue(v);this.updateSliderPosition(b)}onPointerDown(v){if(!v.target||!(v.target instanceof Element))return;const b=this._register(new y.GlobalPointerMoveMonitor),w=k.getDomNodePagePosition(this.domNode);this.domNode.classList.add(\"grabbing\"),v.target!==this.slider&&this.onDidChangeTop(v.offsetY),b.startMonitoring(v.target,v.pointerId,v.buttons,I=>this.onDidChangeTop(I.pageY-w.top),()=>null);const E=k.addDisposableListener(document,k.EventType.POINTER_UP,()=>{this._onColorFlushed.fire(),E.dispose(),b.stopMonitoring(!0),this.domNode.classList.remove(\"grabbing\")},!0)}onDidChangeTop(v){const b=Math.max(0,Math.min(1,1-v/this.height));this.updateSliderPosition(b),this._onDidChange.fire(b)}updateSliderPosition(v){this.slider.style.top=`${(1-v)*this.height}px`}}class o extends c{constructor(v,b,w=!1){super(v,b,w),this.domNode.classList.add(\"opacity-strip\"),this.onDidChangeColor(this.model.color)}onDidChangeColor(v){super.onDidChangeColor(v);const{r:b,g:w,b:E}=v.rgba,I=new f.Color(new f.RGBA(b,w,E,1)),M=new f.Color(new f.RGBA(b,w,E,0));this.overlay.style.background=`linear-gradient(to bottom, ${I} 0%, ${M} 100%)`}getValue(v){return v.hsva.a}}class d extends c{constructor(v,b,w=!1){super(v,b,w),this.domNode.classList.add(\"hue-strip\")}getValue(v){return 1-v.hsva.h/360}}class l extends g.Disposable{constructor(v){super(),this._onClicked=this._register(new _.Emitter),this.onClicked=this._onClicked.event,this._button=k.append(v,document.createElement(\"button\")),this._button.classList.add(\"insert-button\"),this._button.textContent=\"Insert\",this._button.onclick=b=>{this._onClicked.fire()}}get button(){return this._button}}e.InsertButton=l;class p extends D.Widget{constructor(v,b,w,E,I=!1){super(),this.model=b,this.pixelRatio=w,this._register(L.PixelRatio.onDidChange(()=>this.layout()));const M=t(\".colorpicker-widget\");v.appendChild(M),this.header=this._register(new a(M,this.model,E,I)),this.body=this._register(new h(M,this.model,this.pixelRatio,I))}layout(){this.body.layout()}}e.ColorPickerWidget=p}),define(ne[832],se([1,0,7,49,75,25,6,2,11,20,41,117,236,689,15,56,31,62,26,457]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){\"use strict\";var c;Object.defineProperty(e,\"__esModule\",{value:!0}),e.ParameterHintsWidget=void 0;const o=L.$,d=(0,h.registerIcon)(\"parameter-hints-next\",D.Codicon.chevronDown,n.localize(0,null)),l=(0,h.registerIcon)(\"parameter-hints-previous\",D.Codicon.chevronUp,n.localize(1,null));let p=c=class extends f.Disposable{constructor(v,b,w,E,I){super(),this.editor=v,this.model=b,this.renderDisposeables=this._register(new f.DisposableStore),this.visible=!1,this.announcedLabel=null,this.allowEditorOverflow=!0,this.markdownRenderer=this._register(new s.MarkdownRenderer({editor:v},I,E)),this.keyVisible=i.Context.Visible.bindTo(w),this.keyMultipleSignatures=i.Context.MultipleSignatures.bindTo(w)}createParameterHintDOMNodes(){const v=o(\".editor-widget.parameter-hints-widget\"),b=L.append(v,o(\".phwrapper\"));b.tabIndex=-1;const w=L.append(b,o(\".controls\")),E=L.append(w,o(\".button\"+r.ThemeIcon.asCSSSelector(l))),I=L.append(w,o(\".overloads\")),M=L.append(w,o(\".button\"+r.ThemeIcon.asCSSSelector(d)));this._register(L.addDisposableListener(E,\"click\",F=>{L.EventHelper.stop(F),this.previous()})),this._register(L.addDisposableListener(M,\"click\",F=>{L.EventHelper.stop(F),this.next()}));const P=o(\".body\"),x=new y.DomScrollableElement(P,{alwaysConsumeMouseWheel:!0});this._register(x),b.appendChild(x.getDomNode());const T=L.append(P,o(\".signature\")),A=L.append(P,o(\".docs\"));v.style.userSelect=\"text\",this.domNodes={element:v,signature:T,overloads:I,docs:A,scrollbar:x},this.editor.addContentWidget(this),this.hide(),this._register(this.editor.onDidChangeCursorSelection(F=>{this.visible&&this.editor.layoutContentWidget(this)}));const N=()=>{if(!this.domNodes)return;const F=this.editor.getOption(49);this.domNodes.element.style.fontSize=`${F.fontSize}px`,this.domNodes.element.style.lineHeight=`${F.lineHeight/F.fontSize}`};N(),this._register(S.Event.chain(this.editor.onDidChangeConfiguration.bind(this.editor)).filter(F=>F.hasChanged(49)).on(N,null)),this._register(this.editor.onDidLayoutChange(F=>this.updateMaxHeight())),this.updateMaxHeight()}show(){this.visible||(this.domNodes||this.createParameterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout(()=>{var v;(v=this.domNodes)===null||v===void 0||v.element.classList.add(\"visible\")},100),this.editor.layoutContentWidget(this))}hide(){var v;this.renderDisposeables.clear(),this.visible&&(this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,(v=this.domNodes)===null||v===void 0||v.element.classList.remove(\"visible\"),this.editor.layoutContentWidget(this))}getPosition(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null}render(v){var b;if(this.renderDisposeables.clear(),!this.domNodes)return;const w=v.signatures.length>1;this.domNodes.element.classList.toggle(\"multiple\",w),this.keyMultipleSignatures.set(w),this.domNodes.signature.innerText=\"\",this.domNodes.docs.innerText=\"\";const E=v.signatures[v.activeSignature];if(!E)return;const I=L.append(this.domNodes.signature,o(\".code\")),M=this.editor.getOption(49);I.style.fontSize=`${M.fontSize}px`,I.style.fontFamily=M.fontFamily;const P=E.parameters.length>0,x=(b=E.activeParameter)!==null&&b!==void 0?b:v.activeParameter;if(P)this.renderParameters(I,E,x);else{const N=L.append(I,o(\"span\"));N.textContent=E.label}const T=E.parameters[x];if(T?.documentation){const N=o(\"span.documentation\");if(typeof T.documentation==\"string\")N.textContent=T.documentation;else{const F=this.renderMarkdownDocs(T.documentation);N.appendChild(F.element)}L.append(this.domNodes.docs,o(\"p\",{},N))}if(E.documentation!==void 0)if(typeof E.documentation==\"string\")L.append(this.domNodes.docs,o(\"p\",{},E.documentation));else{const N=this.renderMarkdownDocs(E.documentation);L.append(this.domNodes.docs,N.element)}const A=this.hasDocs(E,T);if(this.domNodes.signature.classList.toggle(\"has-docs\",A),this.domNodes.docs.classList.toggle(\"empty\",!A),this.domNodes.overloads.textContent=String(v.activeSignature+1).padStart(v.signatures.length.toString().length,\"0\")+\"/\"+v.signatures.length,T){let N=\"\";const F=E.parameters[x];Array.isArray(F.label)?N=E.label.substring(F.label[0],F.label[1]):N=F.label,F.documentation&&(N+=typeof F.documentation==\"string\"?`, ${F.documentation}`:`, ${F.documentation.value}`),E.documentation&&(N+=typeof E.documentation==\"string\"?`, ${E.documentation}`:`, ${E.documentation.value}`),this.announcedLabel!==N&&(k.alert(n.localize(2,null,N)),this.announcedLabel=N)}this.editor.layoutContentWidget(this),this.domNodes.scrollbar.scanDomNode()}renderMarkdownDocs(v){const b=this.renderDisposeables.add(this.markdownRenderer.render(v,{asyncRenderCallback:()=>{var w;(w=this.domNodes)===null||w===void 0||w.scrollbar.scanDomNode()}}));return b.element.classList.add(\"markdown-docs\"),b}hasDocs(v,b){return!!(b&&typeof b.documentation==\"string\"&&(0,g.assertIsDefined)(b.documentation).length>0||b&&typeof b.documentation==\"object\"&&(0,g.assertIsDefined)(b.documentation).value.length>0||v.documentation&&typeof v.documentation==\"string\"&&(0,g.assertIsDefined)(v.documentation).length>0||v.documentation&&typeof v.documentation==\"object\"&&(0,g.assertIsDefined)(v.documentation.value).length>0)}renderParameters(v,b,w){const[E,I]=this.getParameterLabelOffsets(b,w),M=document.createElement(\"span\");M.textContent=b.label.substring(0,E);const P=document.createElement(\"span\");P.textContent=b.label.substring(E,I),P.className=\"parameter active\";const x=document.createElement(\"span\");x.textContent=b.label.substring(I),L.append(v,M,P,x)}getParameterLabelOffsets(v,b){const w=v.parameters[b];if(w){if(Array.isArray(w.label))return w.label;if(w.label.length){const E=new RegExp(`(\\\\W|^)${(0,_.escapeRegExpCharacters)(w.label)}(?=\\\\W|$)`,\"g\");E.test(v.label);const I=E.lastIndex-w.label.length;return I>=0?[I,E.lastIndex]:[0,0]}else return[0,0]}else return[0,0]}next(){this.editor.focus(),this.model.next()}previous(){this.editor.focus(),this.model.previous()}getDomNode(){return this.domNodes||this.createParameterHintDOMNodes(),this.domNodes.element}getId(){return c.ID}updateMaxHeight(){if(!this.domNodes)return;const b=`${Math.max(this.editor.getLayoutInfo().height/4,250)}px`;this.domNodes.element.style.maxHeight=b;const w=this.domNodes.element.getElementsByClassName(\"phwrapper\");w.length&&(w[0].style.maxHeight=b)}};e.ParameterHintsWidget=p,p.ID=\"editor.widget.parameterHintsWidget\",e.ParameterHintsWidget=p=c=ke([fe(2,t.IContextKeyService),fe(3,a.IOpenerService),fe(4,C.ILanguageService)],p),(0,u.registerColor)(\"editorHoverWidget.highlightForeground\",{dark:u.listHighlightForeground,light:u.listHighlightForeground,hcDark:u.listHighlightForeground,hcLight:u.listHighlightForeground},n.localize(3,null))}),define(ne[833],se([1,0,100,2,16,21,29,18,753,236,688,15,8,832]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";var t;Object.defineProperty(e,\"__esModule\",{value:!0}),e.TriggerParameterHintsAction=e.ParameterHintsController=void 0;let a=t=class extends k.Disposable{static get(o){return o.getContribution(t.ID)}constructor(o,d,l){super(),this.editor=o,this.model=this._register(new _.ParameterHintsModel(o,l.signatureHelpProvider)),this._register(this.model.onChangedHints(p=>{var m;p?(this.widget.value.show(),this.widget.value.render(p)):(m=this.widget.rawValue)===null||m===void 0||m.hide()})),this.widget=new L.Lazy(()=>this._register(d.createInstance(n.ParameterHintsWidget,this.editor,this.model)))}cancel(){this.model.cancel()}previous(){var o;(o=this.widget.rawValue)===null||o===void 0||o.previous()}next(){var o;(o=this.widget.rawValue)===null||o===void 0||o.next()}trigger(o){this.model.trigger(o,0)}};e.ParameterHintsController=a,a.ID=\"editor.controller.parameterHints\",e.ParameterHintsController=a=t=ke([fe(1,i.IInstantiationService),fe(2,f.ILanguageFeaturesService)],a);class u extends y.EditorAction{constructor(){super({id:\"editor.action.triggerParameterHints\",label:C.localize(0,null),alias:\"Trigger Parameter Hints\",precondition:D.EditorContextKeys.hasSignatureHelpProvider,kbOpts:{kbExpr:D.EditorContextKeys.editorTextFocus,primary:3082,weight:100}})}run(o,d){const l=a.get(d);l?.trigger({triggerKind:S.SignatureHelpTriggerKind.Invoke})}}e.TriggerParameterHintsAction=u,(0,y.registerEditorContribution)(a.ID,a,2),(0,y.registerEditorAction)(u);const h=100+75,r=y.EditorCommand.bindToContribution(a.get);(0,y.registerEditorCommand)(new r({id:\"closeParameterHints\",precondition:g.Context.Visible,handler:c=>c.cancel(),kbOpts:{weight:h,kbExpr:D.EditorContextKeys.focus,primary:9,secondary:[1033]}})),(0,y.registerEditorCommand)(new r({id:\"showPrevParameterHint\",precondition:s.ContextKeyExpr.and(g.Context.Visible,g.Context.MultipleSignatures),handler:c=>c.previous(),kbOpts:{weight:h,kbExpr:D.EditorContextKeys.focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}})),(0,y.registerEditorCommand)(new r({id:\"showNextParameterHint\",precondition:s.ContextKeyExpr.and(g.Context.Visible,g.Context.MultipleSignatures),handler:c=>c.next(),kbOpts:{weight:h,kbExpr:D.EditorContextKeys.focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}))}),define(ne[834],se([1,0,7,68,39,2,117,8,770,62,26,464]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BannerController=void 0;const s=26;let i=class extends D.Disposable{constructor(a,u){super(),this._editor=a,this.instantiationService=u,this.banner=this._register(this.instantiationService.createInstance(n))}hide(){this._editor.setBanner(null,0),this.banner.clear()}show(a){this.banner.show(Object.assign(Object.assign({},a),{onClose:()=>{var u;this.hide(),(u=a.onClose)===null||u===void 0||u.call(a)}})),this._editor.setBanner(this.banner.element,s)}};e.BannerController=i,e.BannerController=i=ke([fe(1,f.IInstantiationService)],i);let n=class extends D.Disposable{constructor(a){super(),this.instantiationService=a,this.markdownRenderer=this.instantiationService.createInstance(S.MarkdownRenderer,{}),this.element=(0,L.$)(\"div.editor-banner\"),this.element.tabIndex=0}getAriaLabel(a){if(a.ariaLabel)return a.ariaLabel;if(typeof a.message==\"string\")return a.message}getBannerMessage(a){if(typeof a==\"string\"){const u=(0,L.$)(\"span\");return u.innerText=a,u}return this.markdownRenderer.render(a).element}clear(){(0,L.clearNode)(this.element)}show(a){(0,L.clearNode)(this.element);const u=this.getAriaLabel(a);u&&this.element.setAttribute(\"aria-label\",u);const h=(0,L.append)(this.element,(0,L.$)(\"div.icon-container\"));h.setAttribute(\"aria-hidden\",\"true\"),a.icon&&h.appendChild((0,L.$)(`div${C.ThemeIcon.asCSSSelector(a.icon)}`));const r=(0,L.append)(this.element,(0,L.$)(\"div.message-container\"));if(r.setAttribute(\"aria-hidden\",\"true\"),r.appendChild(this.getBannerMessage(a.message)),this.messageActionsContainer=(0,L.append)(this.element,(0,L.$)(\"div.message-actions-container\")),a.actions)for(const o of a.actions)this._register(this.instantiationService.createInstance(_.Link,this.messageActionsContainer,Object.assign(Object.assign({},o),{tabIndex:-1}),{}));const c=(0,L.append)(this.element,(0,L.$)(\"div.action-container\"));this.actionBar=this._register(new k.ActionBar(c)),this.actionBar.push(this._register(new y.Action(\"banner.close\",\"Close Banner\",C.ThemeIcon.asClassName(g.widgetClose),!0,()=>{typeof a.onClose==\"function\"&&a.onClose()})),{icon:!0,label:!1}),this.actionBar.setFocusable(!1)}};n=ke([fe(0,f.IInstantiationService)],n)}),define(ne[835],se([1,0,7,6,26,62]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UnthemedProductIconTheme=e.getIconsStyleSheet=void 0;function S(_){const g=new k.Emitter,C=(0,D.getIconRegistry)();return C.onDidChange(()=>g.fire()),_?.onDidProductIconThemeChange(()=>g.fire()),{onDidChange:g.event,getCSS(){const s=_?_.getProductIconTheme():new f,i={},n=a=>{const u=s.getIcon(a);if(!u)return;const h=u.font;return h?(i[h.id]=h.definition,`.codicon-${a.id}:before { content: '${u.fontCharacter}'; font-family: ${(0,L.asCSSPropertyValue)(h.id)}; }`):`.codicon-${a.id}:before { content: '${u.fontCharacter}'; }`},t=[];for(const a of C.getIcons()){const u=n(a);u&&t.push(u)}for(const a in i){const u=i[a],h=u.weight?`font-weight: ${u.weight};`:\"\",r=u.style?`font-style: ${u.style};`:\"\",c=u.src.map(o=>`${(0,L.asCSSUrl)(o.location)} format('${o.format}')`).join(\", \");t.push(`@font-face { src: ${c}; font-family: ${(0,L.asCSSPropertyValue)(a)};${h}${r} font-display: block; }`)}return t.join(`\n`)}}}e.getIconsStyleSheet=S;class f{getIcon(g){const C=(0,D.getIconRegistry)();let s=g.defaults;for(;y.ThemeIcon.isThemeIcon(s);){const i=C.getIcon(s.id);if(!i)return;s=i.defaults}return s}}e.UnthemedProductIconTheme=f}),define(ne[88],se([1,0]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isDark=e.isHighContrast=e.ColorScheme=void 0;var L;(function(D){D.DARK=\"dark\",D.LIGHT=\"light\",D.HIGH_CONTRAST_DARK=\"hcDark\",D.HIGH_CONTRAST_LIGHT=\"hcLight\"})(L||(e.ColorScheme=L={}));function k(D){return D===L.HIGH_CONTRAST_DARK||D===L.HIGH_CONTRAST_LIGHT}e.isHighContrast=k;function y(D){return D===L.DARK||D===L.HIGH_CONTRAST_DARK}e.isDark=y}),define(ne[251],se([1,0,52,35,17,478,144,127,95,88,36]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getColumnOfNodeOffset=e.ViewLine=e.ViewLineOptions=void 0;const s=function(){return y.isNative?!0:!(y.isLinux||L.isFirefox||L.isSafari)}();let i=!0;class n{constructor(p,m){this.themeType=m;const v=p.options,b=v.get(49);v.get(37)===\"off\"?this.renderWhitespace=v.get(97):this.renderWhitespace=\"none\",this.renderControlCharacters=v.get(92),this.spaceWidth=b.spaceWidth,this.middotWidth=b.middotWidth,this.wsmiddotWidth=b.wsmiddotWidth,this.useMonospaceOptimizations=b.isMonospace&&!v.get(32),this.canUseHalfwidthRightwardsArrow=b.canUseHalfwidthRightwardsArrow,this.lineHeight=v.get(65),this.stopRenderingLineAfter=v.get(115),this.fontLigatures=v.get(50)}equals(p){return this.themeType===p.themeType&&this.renderWhitespace===p.renderWhitespace&&this.renderControlCharacters===p.renderControlCharacters&&this.spaceWidth===p.spaceWidth&&this.middotWidth===p.middotWidth&&this.wsmiddotWidth===p.wsmiddotWidth&&this.useMonospaceOptimizations===p.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===p.canUseHalfwidthRightwardsArrow&&this.lineHeight===p.lineHeight&&this.stopRenderingLineAfter===p.stopRenderingLineAfter&&this.fontLigatures===p.fontLigatures}}e.ViewLineOptions=n;class t{constructor(p){this._options=p,this._isMaybeInvalid=!0,this._renderedViewLine=null}getDomNode(){return this._renderedViewLine&&this._renderedViewLine.domNode?this._renderedViewLine.domNode.domNode:null}setDomNode(p){if(this._renderedViewLine)this._renderedViewLine.domNode=(0,k.createFastDomNode)(p);else throw new Error(\"I have no rendered view line to set the dom node to...\")}onContentChanged(){this._isMaybeInvalid=!0}onTokensChanged(){this._isMaybeInvalid=!0}onDecorationsChanged(){this._isMaybeInvalid=!0}onOptionsChanged(p){this._isMaybeInvalid=!0,this._options=p}onSelectionChanged(){return(0,g.isHighContrast)(this._options.themeType)||this._options.renderWhitespace===\"selection\"?(this._isMaybeInvalid=!0,!0):!1}renderLine(p,m,v,b){if(this._isMaybeInvalid===!1)return!1;this._isMaybeInvalid=!1;const w=v.getViewLineRenderingData(p),E=this._options,I=f.LineDecoration.filter(w.inlineDecorations,p,w.minColumn,w.maxColumn);let M=null;if((0,g.isHighContrast)(E.themeType)||this._options.renderWhitespace===\"selection\"){const A=v.selections;for(const N of A){if(N.endLineNumber<p||N.startLineNumber>p)continue;const F=N.startLineNumber===p?N.startColumn:w.minColumn,O=N.endLineNumber===p?N.endColumn:w.maxColumn;F<O&&((0,g.isHighContrast)(E.themeType)&&I.push(new f.LineDecoration(F,O,\"inline-selected-text\",0)),this._options.renderWhitespace===\"selection\"&&(M||(M=[]),M.push(new _.LineRange(F-1,O-1))))}}const P=new _.RenderLineInput(E.useMonospaceOptimizations,E.canUseHalfwidthRightwardsArrow,w.content,w.continuesWithWrappedLine,w.isBasicASCII,w.containsRTL,w.minColumn-1,w.tokens,I,w.tabSize,w.startVisibleColumn,E.spaceWidth,E.middotWidth,E.wsmiddotWidth,E.stopRenderingLineAfter,E.renderWhitespace,E.renderControlCharacters,E.fontLigatures!==C.EditorFontLigatures.OFF,M);if(this._renderedViewLine&&this._renderedViewLine.input.equals(P))return!1;b.appendString('<div style=\"top:'),b.appendString(String(m)),b.appendString(\"px;height:\"),b.appendString(String(this._options.lineHeight)),b.appendString('px;\" class=\"'),b.appendString(t.CLASS_NAME),b.appendString('\">');const x=(0,_.renderViewLine)(P,b);b.appendString(\"</div>\");let T=null;return i&&s&&w.isBasicASCII&&E.useMonospaceOptimizations&&x.containsForeignElements===0&&(T=new a(this._renderedViewLine?this._renderedViewLine.domNode:null,P,x.characterMapping)),T||(T=r(this._renderedViewLine?this._renderedViewLine.domNode:null,P,x.characterMapping,x.containsRTL,x.containsForeignElements)),this._renderedViewLine=T,!0}layoutLine(p,m){this._renderedViewLine&&this._renderedViewLine.domNode&&(this._renderedViewLine.domNode.setTop(m),this._renderedViewLine.domNode.setHeight(this._options.lineHeight))}getWidth(p){return this._renderedViewLine?this._renderedViewLine.getWidth(p):0}getWidthIsFast(){return this._renderedViewLine?this._renderedViewLine.getWidthIsFast():!0}needsMonospaceFontCheck(){return this._renderedViewLine?this._renderedViewLine instanceof a:!1}monospaceAssumptionsAreValid(){return this._renderedViewLine&&this._renderedViewLine instanceof a?this._renderedViewLine.monospaceAssumptionsAreValid():i}onMonospaceAssumptionsInvalidated(){this._renderedViewLine&&this._renderedViewLine instanceof a&&(this._renderedViewLine=this._renderedViewLine.toSlowRenderedLine())}getVisibleRangesForRange(p,m,v,b){if(!this._renderedViewLine)return null;m=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,m)),v=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,v));const w=this._renderedViewLine.input.stopRenderingLineAfter;if(w!==-1&&m>w+1&&v>w+1)return new S.VisibleRanges(!0,[new S.FloatHorizontalRange(this.getWidth(b),0)]);w!==-1&&m>w+1&&(m=w+1),w!==-1&&v>w+1&&(v=w+1);const E=this._renderedViewLine.getVisibleRangesForRange(p,m,v,b);return E&&E.length>0?new S.VisibleRanges(!1,E):null}getColumnOfNodeOffset(p,m){return this._renderedViewLine?this._renderedViewLine.getColumnOfNodeOffset(p,m):1}}e.ViewLine=t,t.CLASS_NAME=\"view-line\";class a{constructor(p,m,v){this._cachedWidth=-1,this.domNode=p,this.input=m;const b=Math.floor(m.lineContent.length/300);if(b>0){this._keyColumnPixelOffsetCache=new Float32Array(b);for(let w=0;w<b;w++)this._keyColumnPixelOffsetCache[w]=-1}else this._keyColumnPixelOffsetCache=null;this._characterMapping=v,this._charWidth=m.spaceWidth}getWidth(p){if(!this.domNode||this.input.lineContent.length<300){const m=this._characterMapping.getHorizontalOffset(this._characterMapping.length);return Math.round(this._charWidth*m)}return this._cachedWidth===-1&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth,p?.markDidDomLayout()),this._cachedWidth}getWidthIsFast(){return this.input.lineContent.length<300||this._cachedWidth!==-1}monospaceAssumptionsAreValid(){if(!this.domNode)return i;if(this.input.lineContent.length<300){const p=this.getWidth(null),m=this.domNode.domNode.firstChild.offsetWidth;Math.abs(p-m)>=2&&(console.warn(\"monospace assumptions have been violated, therefore disabling monospace optimizations!\"),i=!1)}return i}toSlowRenderedLine(){return r(this.domNode,this.input,this._characterMapping,!1,0)}getVisibleRangesForRange(p,m,v,b){const w=this._getColumnPixelOffset(p,m,b),E=this._getColumnPixelOffset(p,v,b);return[new S.FloatHorizontalRange(w,E-w)]}_getColumnPixelOffset(p,m,v){if(m<=300){const P=this._characterMapping.getHorizontalOffset(m);return this._charWidth*P}const b=Math.floor((m-1)/300)-1,w=(b+1)*300+1;let E=-1;if(this._keyColumnPixelOffsetCache&&(E=this._keyColumnPixelOffsetCache[b],E===-1&&(E=this._actualReadPixelOffset(p,w,v),this._keyColumnPixelOffsetCache[b]=E)),E===-1){const P=this._characterMapping.getHorizontalOffset(m);return this._charWidth*P}const I=this._characterMapping.getHorizontalOffset(w),M=this._characterMapping.getHorizontalOffset(m);return E+this._charWidth*(M-I)}_getReadingTarget(p){return p.domNode.firstChild}_actualReadPixelOffset(p,m,v){if(!this.domNode)return-1;const b=this._characterMapping.getDomPosition(m),w=D.RangeUtil.readHorizontalRanges(this._getReadingTarget(this.domNode),b.partIndex,b.charIndex,b.partIndex,b.charIndex,v);return!w||w.length===0?-1:w[0].left}getColumnOfNodeOffset(p,m){return d(this._characterMapping,p,m)}}class u{constructor(p,m,v,b,w){if(this.domNode=p,this.input=m,this._characterMapping=v,this._isWhitespaceOnly=/^\\s*$/.test(m.lineContent),this._containsForeignElements=w,this._cachedWidth=-1,this._pixelOffsetCache=null,!b||this._characterMapping.length===0){this._pixelOffsetCache=new Float32Array(Math.max(2,this._characterMapping.length+1));for(let E=0,I=this._characterMapping.length;E<=I;E++)this._pixelOffsetCache[E]=-1}}_getReadingTarget(p){return p.domNode.firstChild}getWidth(p){return this.domNode?(this._cachedWidth===-1&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth,p?.markDidDomLayout()),this._cachedWidth):0}getWidthIsFast(){return this._cachedWidth!==-1}getVisibleRangesForRange(p,m,v,b){if(!this.domNode)return null;if(this._pixelOffsetCache!==null){const w=this._readPixelOffset(this.domNode,p,m,b);if(w===-1)return null;const E=this._readPixelOffset(this.domNode,p,v,b);return E===-1?null:[new S.FloatHorizontalRange(w,E-w)]}return this._readVisibleRangesForRange(this.domNode,p,m,v,b)}_readVisibleRangesForRange(p,m,v,b,w){if(v===b){const E=this._readPixelOffset(p,m,v,w);return E===-1?null:[new S.FloatHorizontalRange(E,0)]}else return this._readRawVisibleRangesForRange(p,v,b,w)}_readPixelOffset(p,m,v,b){if(this._characterMapping.length===0){if(this._containsForeignElements===0||this._containsForeignElements===2)return 0;if(this._containsForeignElements===1)return this.getWidth(b);const w=this._getReadingTarget(p);return w.firstChild?(b.markDidDomLayout(),w.firstChild.offsetWidth):0}if(this._pixelOffsetCache!==null){const w=this._pixelOffsetCache[v];if(w!==-1)return w;const E=this._actualReadPixelOffset(p,m,v,b);return this._pixelOffsetCache[v]=E,E}return this._actualReadPixelOffset(p,m,v,b)}_actualReadPixelOffset(p,m,v,b){if(this._characterMapping.length===0){const M=D.RangeUtil.readHorizontalRanges(this._getReadingTarget(p),0,0,0,0,b);return!M||M.length===0?-1:M[0].left}if(v===this._characterMapping.length&&this._isWhitespaceOnly&&this._containsForeignElements===0)return this.getWidth(b);const w=this._characterMapping.getDomPosition(v),E=D.RangeUtil.readHorizontalRanges(this._getReadingTarget(p),w.partIndex,w.charIndex,w.partIndex,w.charIndex,b);if(!E||E.length===0)return-1;const I=E[0].left;if(this.input.isBasicASCII){const M=this._characterMapping.getHorizontalOffset(v),P=Math.round(this.input.spaceWidth*M);if(Math.abs(P-I)<=1)return P}return I}_readRawVisibleRangesForRange(p,m,v,b){if(m===1&&v===this._characterMapping.length)return[new S.FloatHorizontalRange(0,this.getWidth(b))];const w=this._characterMapping.getDomPosition(m),E=this._characterMapping.getDomPosition(v);return D.RangeUtil.readHorizontalRanges(this._getReadingTarget(p),w.partIndex,w.charIndex,E.partIndex,E.charIndex,b)}getColumnOfNodeOffset(p,m){return d(this._characterMapping,p,m)}}class h extends u{_readVisibleRangesForRange(p,m,v,b,w){const E=super._readVisibleRangesForRange(p,m,v,b,w);if(!E||E.length===0||v===b||v===1&&b===this._characterMapping.length)return E;if(!this.input.containsRTL){const I=this._readPixelOffset(p,m,b,w);if(I!==-1){const M=E[E.length-1];M.left<I&&(M.width=I-M.left)}}return E}}const r=function(){return L.isWebKit?c:o}();function c(l,p,m,v,b){return new h(l,p,m,v,b)}function o(l,p,m,v,b){return new u(l,p,m,v,b)}function d(l,p,m){const v=p.textContent.length;let b=-1;for(;p;)p=p.previousSibling,b++;return l.getColumn(new _.DomPosition(b,m),v)}e.getColumnOfNodeOffset=d}),define(ne[355],se([1,0,159,53,251,12,5,82,7,275]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MouseTargetFactory=e.HitTestContext=e.MouseTarget=e.PointerHandlerLastRenderData=void 0;class C{constructor(v=null){this.hitTarget=v,this.type=0}}class s{constructor(v,b,w){this.position=v,this.spanNode=b,this.injectedText=w,this.type=1}}var i;(function(m){function v(b,w,E){const I=b.getPositionFromDOMInfo(w,E);return I?new s(I,w,null):new C(w)}m.createFromDOMInfo=v})(i||(i={}));class n{constructor(v,b){this.lastViewCursorsRenderData=v,this.lastTextareaPosition=b}}e.PointerHandlerLastRenderData=n;class t{static _deduceRage(v,b=null){return!b&&v?new S.Range(v.lineNumber,v.column,v.lineNumber,v.column):b??null}static createUnknown(v,b,w){return{type:0,element:v,mouseColumn:b,position:w,range:this._deduceRage(w)}}static createTextarea(v,b){return{type:1,element:v,mouseColumn:b,position:null,range:null}}static createMargin(v,b,w,E,I,M){return{type:v,element:b,mouseColumn:w,position:E,range:I,detail:M}}static createViewZone(v,b,w,E,I){return{type:v,element:b,mouseColumn:w,position:E,range:this._deduceRage(E),detail:I}}static createContentText(v,b,w,E,I){return{type:6,element:v,mouseColumn:b,position:w,range:this._deduceRage(w,E),detail:I}}static createContentEmpty(v,b,w,E){return{type:7,element:v,mouseColumn:b,position:w,range:this._deduceRage(w),detail:E}}static createContentWidget(v,b,w){return{type:9,element:v,mouseColumn:b,position:null,range:null,detail:w}}static createScrollbar(v,b,w){return{type:11,element:v,mouseColumn:b,position:w,range:this._deduceRage(w)}}static createOverlayWidget(v,b,w){return{type:12,element:v,mouseColumn:b,position:null,range:null,detail:w}}static createOutsideEditor(v,b,w,E){return{type:13,element:null,mouseColumn:v,position:b,range:this._deduceRage(b),outsidePosition:w,outsideDistance:E}}static _typeToString(v){return v===1?\"TEXTAREA\":v===2?\"GUTTER_GLYPH_MARGIN\":v===3?\"GUTTER_LINE_NUMBERS\":v===4?\"GUTTER_LINE_DECORATIONS\":v===5?\"GUTTER_VIEW_ZONE\":v===6?\"CONTENT_TEXT\":v===7?\"CONTENT_EMPTY\":v===8?\"CONTENT_VIEW_ZONE\":v===9?\"CONTENT_WIDGET\":v===10?\"OVERVIEW_RULER\":v===11?\"SCROLLBAR\":v===12?\"OVERLAY_WIDGET\":\"UNKNOWN\"}static toString(v){return this._typeToString(v.type)+\": \"+v.position+\" - \"+v.range+\" - \"+JSON.stringify(v.detail)}}e.MouseTarget=t;class a{static isTextArea(v){return v.length===2&&v[0]===3&&v[1]===6}static isChildOfViewLines(v){return v.length>=4&&v[0]===3&&v[3]===7}static isStrictChildOfViewLines(v){return v.length>4&&v[0]===3&&v[3]===7}static isChildOfScrollableElement(v){return v.length>=2&&v[0]===3&&v[1]===5}static isChildOfMinimap(v){return v.length>=2&&v[0]===3&&v[1]===8}static isChildOfContentWidgets(v){return v.length>=4&&v[0]===3&&v[3]===1}static isChildOfOverflowGuard(v){return v.length>=1&&v[0]===3}static isChildOfOverflowingContentWidgets(v){return v.length>=1&&v[0]===2}static isChildOfOverlayWidgets(v){return v.length>=2&&v[0]===3&&v[1]===4}}class u{constructor(v,b,w){this.viewModel=v.viewModel;const E=v.configuration.options;this.layoutInfo=E.get(142),this.viewDomNode=b.viewDomNode,this.lineHeight=E.get(65),this.stickyTabStops=E.get(114),this.typicalHalfwidthCharacterWidth=E.get(49).typicalHalfwidthCharacterWidth,this.lastRenderData=w,this._context=v,this._viewHelper=b}getZoneAtCoord(v){return u.getZoneAtCoord(this._context,v)}static getZoneAtCoord(v,b){const w=v.viewLayout.getWhitespaceAtVerticalOffset(b);if(w){const E=w.verticalOffset+w.height/2,I=v.viewModel.getLineCount();let M=null,P,x=null;return w.afterLineNumber!==I&&(x=new D.Position(w.afterLineNumber+1,1)),w.afterLineNumber>0&&(M=new D.Position(w.afterLineNumber,v.viewModel.getLineMaxColumn(w.afterLineNumber))),x===null?P=M:M===null?P=x:b<E?P=M:P=x,{viewZoneId:w.id,afterLineNumber:w.afterLineNumber,positionBefore:M,positionAfter:x,position:P}}return null}getFullLineRangeAtCoord(v){if(this._context.viewLayout.isAfterLines(v)){const E=this._context.viewModel.getLineCount(),I=this._context.viewModel.getLineMaxColumn(E);return{range:new S.Range(E,I,E,I),isAfterLines:!0}}const b=this._context.viewLayout.getLineNumberAtVerticalOffset(v),w=this._context.viewModel.getLineMaxColumn(b);return{range:new S.Range(b,1,b,w),isAfterLines:!1}}getLineNumberAtVerticalOffset(v){return this._context.viewLayout.getLineNumberAtVerticalOffset(v)}isAfterLines(v){return this._context.viewLayout.isAfterLines(v)}isInTopPadding(v){return this._context.viewLayout.isInTopPadding(v)}isInBottomPadding(v){return this._context.viewLayout.isInBottomPadding(v)}getVerticalOffsetForLineNumber(v){return this._context.viewLayout.getVerticalOffsetForLineNumber(v)}findAttribute(v,b){return u._findAttribute(v,b,this._viewHelper.viewDomNode)}static _findAttribute(v,b,w){for(;v&&v!==document.body;){if(v.hasAttribute&&v.hasAttribute(b))return v.getAttribute(b);if(v===w)return null;v=v.parentNode}return null}getLineWidth(v){return this._viewHelper.getLineWidth(v)}visibleRangeForPosition(v,b){return this._viewHelper.visibleRangeForPosition(v,b)}getPositionFromDOMInfo(v,b){return this._viewHelper.getPositionFromDOMInfo(v,b)}getCurrentScrollTop(){return this._context.viewLayout.getCurrentScrollTop()}getCurrentScrollLeft(){return this._context.viewLayout.getCurrentScrollLeft()}}e.HitTestContext=u;class h{constructor(v,b,w,E){this.editorPos=b,this.pos=w,this.relativePos=E,this.mouseVerticalOffset=Math.max(0,v.getCurrentScrollTop()+this.relativePos.y),this.mouseContentHorizontalOffset=v.getCurrentScrollLeft()+this.relativePos.x-v.layoutInfo.contentLeft,this.isInMarginArea=this.relativePos.x<v.layoutInfo.contentLeft&&this.relativePos.x>=v.layoutInfo.glyphMarginLeft,this.isInContentArea=!this.isInMarginArea,this.mouseColumn=Math.max(0,d._getMouseColumn(this.mouseContentHorizontalOffset,v.typicalHalfwidthCharacterWidth))}}class r extends h{constructor(v,b,w,E,I){super(v,b,w,E),this._ctx=v,I?(this.target=I,this.targetPath=k.PartFingerprints.collect(I,v.viewDomNode)):(this.target=null,this.targetPath=new Uint8Array(0))}toString(){return`pos(${this.pos.x},${this.pos.y}), editorPos(${this.editorPos.x},${this.editorPos.y}), relativePos(${this.relativePos.x},${this.relativePos.y}), mouseVerticalOffset: ${this.mouseVerticalOffset}, mouseContentHorizontalOffset: ${this.mouseContentHorizontalOffset}\n\ttarget: ${this.target?this.target.outerHTML:null}`}_getMouseColumn(v=null){return v&&v.column<this._ctx.viewModel.getLineMaxColumn(v.lineNumber)?f.CursorColumns.visibleColumnFromColumn(this._ctx.viewModel.getLineContent(v.lineNumber),v.column,this._ctx.viewModel.model.getOptions().tabSize)+1:this.mouseColumn}fulfillUnknown(v=null){return t.createUnknown(this.target,this._getMouseColumn(v),v)}fulfillTextarea(){return t.createTextarea(this.target,this._getMouseColumn())}fulfillMargin(v,b,w,E){return t.createMargin(v,this.target,this._getMouseColumn(b),b,w,E)}fulfillViewZone(v,b,w){return t.createViewZone(v,this.target,this._getMouseColumn(b),b,w)}fulfillContentText(v,b,w){return t.createContentText(this.target,this._getMouseColumn(v),v,b,w)}fulfillContentEmpty(v,b){return t.createContentEmpty(this.target,this._getMouseColumn(v),v,b)}fulfillContentWidget(v){return t.createContentWidget(this.target,this._getMouseColumn(),v)}fulfillScrollbar(v){return t.createScrollbar(this.target,this._getMouseColumn(v),v)}fulfillOverlayWidget(v){return t.createOverlayWidget(this.target,this._getMouseColumn(),v)}withTarget(v){return new r(this._ctx,this.editorPos,this.pos,this.relativePos,v)}}const c={isAfterLines:!0};function o(m){return{isAfterLines:!1,horizontalDistanceToText:m}}class d{constructor(v,b){this._context=v,this._viewHelper=b}mouseTargetIsWidget(v){const b=v.target,w=k.PartFingerprints.collect(b,this._viewHelper.viewDomNode);return!!(a.isChildOfContentWidgets(w)||a.isChildOfOverflowingContentWidgets(w)||a.isChildOfOverlayWidgets(w))}createMouseTarget(v,b,w,E,I){const M=new u(this._context,this._viewHelper,v),P=new r(M,b,w,E,I);try{const x=d._createMouseTarget(M,P,!1);if(x.type===6&&M.stickyTabStops&&x.position!==null){const T=d._snapToSoftTabBoundary(x.position,M.viewModel),A=S.Range.fromPositions(T,T).plusRange(x.range);return P.fulfillContentText(T,A,x.detail)}return x}catch{return P.fulfillUnknown()}}static _createMouseTarget(v,b,w){if(b.target===null){if(w)return b.fulfillUnknown();const M=d._doHitTest(v,b);return M.type===1?d.createMouseTargetFromHitTestPosition(v,b,M.spanNode,M.position,M.injectedText):this._createMouseTarget(v,b.withTarget(M.hitTarget),!0)}const E=b;let I=null;return!a.isChildOfOverflowGuard(b.targetPath)&&!a.isChildOfOverflowingContentWidgets(b.targetPath)&&(I=I||b.fulfillUnknown()),I=I||d._hitTestContentWidget(v,E),I=I||d._hitTestOverlayWidget(v,E),I=I||d._hitTestMinimap(v,E),I=I||d._hitTestScrollbarSlider(v,E),I=I||d._hitTestViewZone(v,E),I=I||d._hitTestMargin(v,E),I=I||d._hitTestViewCursor(v,E),I=I||d._hitTestTextArea(v,E),I=I||d._hitTestViewLines(v,E,w),I=I||d._hitTestScrollbar(v,E),I||b.fulfillUnknown()}static _hitTestContentWidget(v,b){if(a.isChildOfContentWidgets(b.targetPath)||a.isChildOfOverflowingContentWidgets(b.targetPath)){const w=v.findAttribute(b.target,\"widgetId\");return w?b.fulfillContentWidget(w):b.fulfillUnknown()}return null}static _hitTestOverlayWidget(v,b){if(a.isChildOfOverlayWidgets(b.targetPath)){const w=v.findAttribute(b.target,\"widgetId\");return w?b.fulfillOverlayWidget(w):b.fulfillUnknown()}return null}static _hitTestViewCursor(v,b){if(b.target){const w=v.lastRenderData.lastViewCursorsRenderData;for(const E of w)if(b.target===E.domNode)return b.fulfillContentText(E.position,null,{mightBeForeignElement:!1,injectedText:null})}if(b.isInContentArea){const w=v.lastRenderData.lastViewCursorsRenderData,E=b.mouseContentHorizontalOffset,I=b.mouseVerticalOffset;for(const M of w){if(E<M.contentLeft||E>M.contentLeft+M.width)continue;const P=v.getVerticalOffsetForLineNumber(M.position.lineNumber);if(P<=I&&I<=P+M.height)return b.fulfillContentText(M.position,null,{mightBeForeignElement:!1,injectedText:null})}}return null}static _hitTestViewZone(v,b){const w=v.getZoneAtCoord(b.mouseVerticalOffset);if(w){const E=b.isInContentArea?8:5;return b.fulfillViewZone(E,w.position,w)}return null}static _hitTestTextArea(v,b){return a.isTextArea(b.targetPath)?v.lastRenderData.lastTextareaPosition?b.fulfillContentText(v.lastRenderData.lastTextareaPosition,null,{mightBeForeignElement:!1,injectedText:null}):b.fulfillTextarea():null}static _hitTestMargin(v,b){if(b.isInMarginArea){const w=v.getFullLineRangeAtCoord(b.mouseVerticalOffset),E=w.range.getStartPosition();let I=Math.abs(b.relativePos.x);const M={isAfterLines:w.isAfterLines,glyphMarginLeft:v.layoutInfo.glyphMarginLeft,glyphMarginWidth:v.layoutInfo.glyphMarginWidth,lineNumbersWidth:v.layoutInfo.lineNumbersWidth,offsetX:I};return I-=v.layoutInfo.glyphMarginLeft,I<=v.layoutInfo.glyphMarginWidth?b.fulfillMargin(2,E,w.range,M):(I-=v.layoutInfo.glyphMarginWidth,I<=v.layoutInfo.lineNumbersWidth?b.fulfillMargin(3,E,w.range,M):(I-=v.layoutInfo.lineNumbersWidth,b.fulfillMargin(4,E,w.range,M)))}return null}static _hitTestViewLines(v,b,w){if(!a.isChildOfViewLines(b.targetPath))return null;if(v.isInTopPadding(b.mouseVerticalOffset))return b.fulfillContentEmpty(new D.Position(1,1),c);if(v.isAfterLines(b.mouseVerticalOffset)||v.isInBottomPadding(b.mouseVerticalOffset)){const I=v.viewModel.getLineCount(),M=v.viewModel.getLineMaxColumn(I);return b.fulfillContentEmpty(new D.Position(I,M),c)}if(w){if(a.isStrictChildOfViewLines(b.targetPath)){const I=v.getLineNumberAtVerticalOffset(b.mouseVerticalOffset);if(v.viewModel.getLineLength(I)===0){const P=v.getLineWidth(I),x=o(b.mouseContentHorizontalOffset-P);return b.fulfillContentEmpty(new D.Position(I,1),x)}const M=v.getLineWidth(I);if(b.mouseContentHorizontalOffset>=M){const P=o(b.mouseContentHorizontalOffset-M),x=new D.Position(I,v.viewModel.getLineMaxColumn(I));return b.fulfillContentEmpty(x,P)}}return b.fulfillUnknown()}const E=d._doHitTest(v,b);return E.type===1?d.createMouseTargetFromHitTestPosition(v,b,E.spanNode,E.position,E.injectedText):this._createMouseTarget(v,b.withTarget(E.hitTarget),!0)}static _hitTestMinimap(v,b){if(a.isChildOfMinimap(b.targetPath)){const w=v.getLineNumberAtVerticalOffset(b.mouseVerticalOffset),E=v.viewModel.getLineMaxColumn(w);return b.fulfillScrollbar(new D.Position(w,E))}return null}static _hitTestScrollbarSlider(v,b){if(a.isChildOfScrollableElement(b.targetPath)&&b.target&&b.target.nodeType===1){const w=b.target.className;if(w&&/\\b(slider|scrollbar)\\b/.test(w)){const E=v.getLineNumberAtVerticalOffset(b.mouseVerticalOffset),I=v.viewModel.getLineMaxColumn(E);return b.fulfillScrollbar(new D.Position(E,I))}}return null}static _hitTestScrollbar(v,b){if(a.isChildOfScrollableElement(b.targetPath)){const w=v.getLineNumberAtVerticalOffset(b.mouseVerticalOffset),E=v.viewModel.getLineMaxColumn(w);return b.fulfillScrollbar(new D.Position(w,E))}return null}getMouseColumn(v){const b=this._context.configuration.options,w=b.get(142),E=this._context.viewLayout.getCurrentScrollLeft()+v.x-w.contentLeft;return d._getMouseColumn(E,b.get(49).typicalHalfwidthCharacterWidth)}static _getMouseColumn(v,b){return v<0?1:Math.round(v/b)+1}static createMouseTargetFromHitTestPosition(v,b,w,E,I){const M=E.lineNumber,P=E.column,x=v.getLineWidth(M);if(b.mouseContentHorizontalOffset>x){const R=o(b.mouseContentHorizontalOffset-x);return b.fulfillContentEmpty(E,R)}const T=v.visibleRangeForPosition(M,P);if(!T)return b.fulfillUnknown(E);const A=T.left;if(Math.abs(b.mouseContentHorizontalOffset-A)<1)return b.fulfillContentText(E,null,{mightBeForeignElement:!!I,injectedText:I});const N=[];if(N.push({offset:T.left,column:P}),P>1){const R=v.visibleRangeForPosition(M,P-1);R&&N.push({offset:R.left,column:P-1})}const F=v.viewModel.getLineMaxColumn(M);if(P<F){const R=v.visibleRangeForPosition(M,P+1);R&&N.push({offset:R.left,column:P+1})}N.sort((R,K)=>R.offset-K.offset);const O=b.pos.toClientCoordinates(),W=w.getBoundingClientRect(),U=W.left<=O.clientX&&O.clientX<=W.right;let j=null;for(let R=1;R<N.length;R++){const K=N[R-1],G=N[R];if(K.offset<=b.mouseContentHorizontalOffset&&b.mouseContentHorizontalOffset<=G.offset){j=new S.Range(M,K.column,M,G.column);const Z=Math.abs(K.offset-b.mouseContentHorizontalOffset),J=Math.abs(G.offset-b.mouseContentHorizontalOffset);E=Z<J?new D.Position(M,K.column):new D.Position(M,G.column);break}}return b.fulfillContentText(E,j,{mightBeForeignElement:!U||!!I,injectedText:I})}static _doHitTestWithCaretRangeFromPoint(v,b){const w=v.getLineNumberAtVerticalOffset(b.mouseVerticalOffset),E=v.getVerticalOffsetForLineNumber(w),I=E+v.lineHeight;if(!(w===v.viewModel.getLineCount()&&b.mouseVerticalOffset>I)){const P=Math.floor((E+I)/2);let x=b.pos.y+(P-b.mouseVerticalOffset);x<=b.editorPos.y&&(x=b.editorPos.y+1),x>=b.editorPos.y+b.editorPos.height&&(x=b.editorPos.y+b.editorPos.height-1);const T=new L.PageCoordinates(b.pos.x,x),A=this._actualDoHitTestWithCaretRangeFromPoint(v,T.toClientCoordinates());if(A.type===1)return A}return this._actualDoHitTestWithCaretRangeFromPoint(v,b.pos.toClientCoordinates())}static _actualDoHitTestWithCaretRangeFromPoint(v,b){const w=_.getShadowRoot(v.viewDomNode);let E;if(w?typeof w.caretRangeFromPoint>\"u\"?E=l(w,b.clientX,b.clientY):E=w.caretRangeFromPoint(b.clientX,b.clientY):E=document.caretRangeFromPoint(b.clientX,b.clientY),!E||!E.startContainer)return new C;const I=E.startContainer;if(I.nodeType===I.TEXT_NODE){const M=I.parentNode,P=M?M.parentNode:null,x=P?P.parentNode:null;return(x&&x.nodeType===x.ELEMENT_NODE?x.className:null)===y.ViewLine.CLASS_NAME?i.createFromDOMInfo(v,M,E.startOffset):new C(I.parentNode)}else if(I.nodeType===I.ELEMENT_NODE){const M=I.parentNode,P=M?M.parentNode:null;return(P&&P.nodeType===P.ELEMENT_NODE?P.className:null)===y.ViewLine.CLASS_NAME?i.createFromDOMInfo(v,I,I.textContent.length):new C(I)}return new C}static _doHitTestWithCaretPositionFromPoint(v,b){const w=document.caretPositionFromPoint(b.clientX,b.clientY);if(w.offsetNode.nodeType===w.offsetNode.TEXT_NODE){const E=w.offsetNode.parentNode,I=E?E.parentNode:null,M=I?I.parentNode:null;return(M&&M.nodeType===M.ELEMENT_NODE?M.className:null)===y.ViewLine.CLASS_NAME?i.createFromDOMInfo(v,w.offsetNode.parentNode,w.offset):new C(w.offsetNode.parentNode)}if(w.offsetNode.nodeType===w.offsetNode.ELEMENT_NODE){const E=w.offsetNode.parentNode,I=E&&E.nodeType===E.ELEMENT_NODE?E.className:null,M=E?E.parentNode:null,P=M&&M.nodeType===M.ELEMENT_NODE?M.className:null;if(I===y.ViewLine.CLASS_NAME){const x=w.offsetNode.childNodes[Math.min(w.offset,w.offsetNode.childNodes.length-1)];if(x)return i.createFromDOMInfo(v,x,0)}else if(P===y.ViewLine.CLASS_NAME)return i.createFromDOMInfo(v,w.offsetNode,0)}return new C(w.offsetNode)}static _snapToSoftTabBoundary(v,b){const w=b.getLineContent(v.lineNumber),{tabSize:E}=b.model.getOptions(),I=g.AtomicTabMoveOperations.atomicPosition(w,v.column-1,E,2);return I!==-1?new D.Position(v.lineNumber,I+1):v}static _doHitTest(v,b){let w=new C;if(typeof document.caretRangeFromPoint==\"function\"?w=this._doHitTestWithCaretRangeFromPoint(v,b):document.caretPositionFromPoint&&(w=this._doHitTestWithCaretPositionFromPoint(v,b.pos.toClientCoordinates())),w.type===1){const E=v.viewModel.getInjectedTextAt(w.position),I=v.viewModel.normalizePosition(w.position,2);(E||!I.equals(w.position))&&(w=new s(I,w.spanNode,E))}return w}}e.MouseTargetFactory=d;function l(m,v,b){const w=document.createRange();let E=m.elementFromPoint(v,b);if(E!==null){for(;E&&E.firstChild&&E.firstChild.nodeType!==E.firstChild.TEXT_NODE&&E.lastChild&&E.lastChild.firstChild;)E=E.lastChild;const I=E.getBoundingClientRect(),M=window.getComputedStyle(E,null).getPropertyValue(\"font-style\"),P=window.getComputedStyle(E,null).getPropertyValue(\"font-variant\"),x=window.getComputedStyle(E,null).getPropertyValue(\"font-weight\"),T=window.getComputedStyle(E,null).getPropertyValue(\"font-size\"),A=window.getComputedStyle(E,null).getPropertyValue(\"line-height\"),N=window.getComputedStyle(E,null).getPropertyValue(\"font-family\"),F=`${M} ${P} ${x} ${T}/${A} ${N}`,O=E.innerText;let W=I.left,U=0,j;if(v>I.left+I.width)U=O.length;else{const R=p.getInstance();for(let K=0;K<O.length+1;K++){if(j=R.getCharWidth(O.charAt(K),F)/2,W+=j,v<W){U=K;break}W+=j}}w.setStart(E.firstChild,U),w.setEnd(E.firstChild,U)}return w}class p{static getInstance(){return p._INSTANCE||(p._INSTANCE=new p),p._INSTANCE}constructor(){this._cache={},this._canvas=document.createElement(\"canvas\")}getCharWidth(v,b){const w=v+b;if(this._cache[w])return this._cache[w];const E=this._canvas.getContext(\"2d\");E.font=b;const M=E.measureText(v).width;return this._cache[w]=M,M}}p._INSTANCE=null}),define(ne[836],se([1,0,7,60,2,17,355,159,145,12,24,150,75]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MouseHandler=void 0;class n extends s.ViewEventHandler{constructor(c,o,d){super(),this._mouseLeaveMonitor=null,this._context=c,this.viewController=o,this.viewHelper=d,this.mouseTargetFactory=new S.MouseTargetFactory(this._context,d),this._mouseDownOperation=this._register(new t(this._context,this.viewController,this.viewHelper,this.mouseTargetFactory,(m,v)=>this._createMouseTarget(m,v),m=>this._getMouseColumn(m))),this.lastMouseLeaveTime=-1,this._height=this._context.configuration.options.get(142).height;const l=new f.EditorMouseEventFactory(this.viewHelper.viewDomNode);this._register(l.onContextMenu(this.viewHelper.viewDomNode,m=>this._onContextMenu(m,!0))),this._register(l.onMouseMove(this.viewHelper.viewDomNode,m=>{this._onMouseMove(m),this._mouseLeaveMonitor||(this._mouseLeaveMonitor=L.addDisposableListener(document,\"mousemove\",v=>{this.viewHelper.viewDomNode.contains(v.target)||this._onMouseLeave(new f.EditorMouseEvent(v,!1,this.viewHelper.viewDomNode))}))})),this._register(l.onMouseUp(this.viewHelper.viewDomNode,m=>this._onMouseUp(m))),this._register(l.onMouseLeave(this.viewHelper.viewDomNode,m=>this._onMouseLeave(m)));let p=0;this._register(l.onPointerDown(this.viewHelper.viewDomNode,(m,v)=>{p=v})),this._register(L.addDisposableListener(this.viewHelper.viewDomNode,L.EventType.POINTER_UP,m=>{this._mouseDownOperation.onPointerUp()})),this._register(l.onMouseDown(this.viewHelper.viewDomNode,m=>this._onMouseDown(m,p))),this._setupMouseWheelZoomListener(),this._context.addEventHandler(this)}_setupMouseWheelZoomListener(){const c=i.MouseWheelClassifier.INSTANCE;let o=0,d=_.EditorZoom.getZoomLevel(),l=!1,p=0;const m=b=>{if(this.viewController.emitMouseWheel(b),!this._context.configuration.options.get(74))return;const w=new k.StandardWheelEvent(b);if(c.acceptStandardWheelEvent(w),c.isPhysicalMouseWheel()){if(v(b)){const E=_.EditorZoom.getZoomLevel(),I=w.deltaY>0?1:-1;_.EditorZoom.setZoomLevel(E+I),w.preventDefault(),w.stopPropagation()}}else Date.now()-o>50&&(d=_.EditorZoom.getZoomLevel(),l=v(b),p=0),o=Date.now(),p+=w.deltaY,l&&(_.EditorZoom.setZoomLevel(d+p/5),w.preventDefault(),w.stopPropagation())};this._register(L.addDisposableListener(this.viewHelper.viewDomNode,L.EventType.MOUSE_WHEEL,m,{capture:!0,passive:!1}));function v(b){return D.isMacintosh?(b.metaKey||b.ctrlKey)&&!b.shiftKey&&!b.altKey:b.ctrlKey&&!b.metaKey&&!b.shiftKey&&!b.altKey}}dispose(){this._context.removeEventHandler(this),this._mouseLeaveMonitor&&(this._mouseLeaveMonitor.dispose(),this._mouseLeaveMonitor=null),super.dispose()}onConfigurationChanged(c){if(c.hasChanged(142)){const o=this._context.configuration.options.get(142).height;this._height!==o&&(this._height=o,this._mouseDownOperation.onHeightChanged())}return!1}onCursorStateChanged(c){return this._mouseDownOperation.onCursorStateChanged(c),!1}onFocusChanged(c){return!1}getTargetAtClientPoint(c,o){const l=new f.ClientCoordinates(c,o).toPageCoordinates(),p=(0,f.createEditorPagePosition)(this.viewHelper.viewDomNode);if(l.y<p.y||l.y>p.y+p.height||l.x<p.x||l.x>p.x+p.width)return null;const m=(0,f.createCoordinatesRelativeToEditor)(this.viewHelper.viewDomNode,p,l);return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),p,l,m,null)}_createMouseTarget(c,o){let d=c.target;if(!this.viewHelper.viewDomNode.contains(d)){const l=L.getShadowRoot(this.viewHelper.viewDomNode);l&&(d=l.elementsFromPoint(c.posx,c.posy).find(p=>this.viewHelper.viewDomNode.contains(p)))}return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),c.editorPos,c.pos,c.relativePos,o?d:null)}_getMouseColumn(c){return this.mouseTargetFactory.getMouseColumn(c.relativePos)}_onContextMenu(c,o){this.viewController.emitContextMenu({event:c,target:this._createMouseTarget(c,o)})}_onMouseMove(c){this.mouseTargetFactory.mouseTargetIsWidget(c)||c.preventDefault(),!(this._mouseDownOperation.isActive()||c.timestamp<this.lastMouseLeaveTime)&&this.viewController.emitMouseMove({event:c,target:this._createMouseTarget(c,!0)})}_onMouseLeave(c){this._mouseLeaveMonitor&&(this._mouseLeaveMonitor.dispose(),this._mouseLeaveMonitor=null),this.lastMouseLeaveTime=new Date().getTime(),this.viewController.emitMouseLeave({event:c,target:null})}_onMouseUp(c){this.viewController.emitMouseUp({event:c,target:this._createMouseTarget(c,!0)})}_onMouseDown(c,o){const d=this._createMouseTarget(c,!0),l=d.type===6||d.type===7,p=d.type===2||d.type===3||d.type===4,m=d.type===3,v=this._context.configuration.options.get(107),b=d.type===8||d.type===5,w=d.type===9;let E=c.leftButton||c.middleButton;D.isMacintosh&&c.leftButton&&c.ctrlKey&&(E=!1);const I=()=>{c.preventDefault(),this.viewHelper.focusTextArea()};if(E&&(l||m&&v))I(),this._mouseDownOperation.start(d.type,c,o);else if(p)c.preventDefault();else if(b){const M=d.detail;E&&this.viewHelper.shouldSuppressMouseDownOnViewZone(M.viewZoneId)&&(I(),this._mouseDownOperation.start(d.type,c,o),c.preventDefault())}else w&&this.viewHelper.shouldSuppressMouseDownOnWidget(d.detail)&&(I(),c.preventDefault());this.viewController.emitMouseDown({event:c,target:d})}}e.MouseHandler=n;class t extends y.Disposable{constructor(c,o,d,l,p,m){super(),this._context=c,this._viewController=o,this._viewHelper=d,this._mouseTargetFactory=l,this._createMouseTarget=p,this._getMouseColumn=m,this._mouseMoveMonitor=this._register(new f.GlobalEditorPointerMoveMonitor(this._viewHelper.viewDomNode)),this._topBottomDragScrolling=this._register(new a(this._context,this._viewHelper,this._mouseTargetFactory,(v,b,w)=>this._dispatchMouse(v,b,w))),this._mouseState=new h,this._currentSelection=new C.Selection(1,1,1,1),this._isActive=!1,this._lastMouseEvent=null}dispose(){super.dispose()}isActive(){return this._isActive}_onMouseDownThenMove(c){this._lastMouseEvent=c,this._mouseState.setModifiers(c);const o=this._findMousePosition(c,!1);o&&(this._mouseState.isDragAndDrop?this._viewController.emitMouseDrag({event:c,target:o}):o.type===13&&(o.outsidePosition===\"above\"||o.outsidePosition===\"below\")?this._topBottomDragScrolling.start(o,c):(this._topBottomDragScrolling.stop(),this._dispatchMouse(o,!0,1)))}start(c,o,d){this._lastMouseEvent=o,this._mouseState.setStartedOnLineNumbers(c===3),this._mouseState.setStartButtons(o),this._mouseState.setModifiers(o);const l=this._findMousePosition(o,!0);if(!l||!l.position)return;this._mouseState.trySetCount(o.detail,l.position),o.detail=this._mouseState.count;const p=this._context.configuration.options;if(!p.get(89)&&p.get(34)&&!p.get(21)&&!this._mouseState.altKey&&o.detail<2&&!this._isActive&&!this._currentSelection.isEmpty()&&l.type===6&&l.position&&this._currentSelection.containsPosition(l.position)){this._mouseState.isDragAndDrop=!0,this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,d,o.buttons,m=>this._onMouseDownThenMove(m),m=>{const v=this._findMousePosition(this._lastMouseEvent,!1);m&&m instanceof KeyboardEvent?this._viewController.emitMouseDropCanceled():this._viewController.emitMouseDrop({event:this._lastMouseEvent,target:v?this._createMouseTarget(this._lastMouseEvent,!0):null}),this._stop()});return}this._mouseState.isDragAndDrop=!1,this._dispatchMouse(l,o.shiftKey,1),this._isActive||(this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,d,o.buttons,m=>this._onMouseDownThenMove(m),()=>this._stop()))}_stop(){this._isActive=!1,this._topBottomDragScrolling.stop()}onHeightChanged(){this._mouseMoveMonitor.stopMonitoring()}onPointerUp(){this._mouseMoveMonitor.stopMonitoring()}onCursorStateChanged(c){this._currentSelection=c.selections[0]}_getPositionOutsideEditor(c){const o=c.editorPos,d=this._context.viewModel,l=this._context.viewLayout,p=this._getMouseColumn(c);if(c.posy<o.y){const v=o.y-c.posy,b=Math.max(l.getCurrentScrollTop()-v,0),w=S.HitTestContext.getZoneAtCoord(this._context,b);if(w){const I=this._helpPositionJumpOverViewZone(w);if(I)return S.MouseTarget.createOutsideEditor(p,I,\"above\",v)}const E=l.getLineNumberAtVerticalOffset(b);return S.MouseTarget.createOutsideEditor(p,new g.Position(E,1),\"above\",v)}if(c.posy>o.y+o.height){const v=c.posy-o.y-o.height,b=l.getCurrentScrollTop()+c.relativePos.y,w=S.HitTestContext.getZoneAtCoord(this._context,b);if(w){const I=this._helpPositionJumpOverViewZone(w);if(I)return S.MouseTarget.createOutsideEditor(p,I,\"below\",v)}const E=l.getLineNumberAtVerticalOffset(b);return S.MouseTarget.createOutsideEditor(p,new g.Position(E,d.getLineMaxColumn(E)),\"below\",v)}const m=l.getLineNumberAtVerticalOffset(l.getCurrentScrollTop()+c.relativePos.y);if(c.posx<o.x){const v=o.x-c.posx;return S.MouseTarget.createOutsideEditor(p,new g.Position(m,1),\"left\",v)}if(c.posx>o.x+o.width){const v=c.posx-o.x-o.width;return S.MouseTarget.createOutsideEditor(p,new g.Position(m,d.getLineMaxColumn(m)),\"right\",v)}return null}_findMousePosition(c,o){const d=this._getPositionOutsideEditor(c);if(d)return d;const l=this._createMouseTarget(c,o);if(!l.position)return null;if(l.type===8||l.type===5){const m=this._helpPositionJumpOverViewZone(l.detail);if(m)return S.MouseTarget.createViewZone(l.type,l.element,l.mouseColumn,m,l.detail)}return l}_helpPositionJumpOverViewZone(c){const o=new g.Position(this._currentSelection.selectionStartLineNumber,this._currentSelection.selectionStartColumn),d=c.positionBefore,l=c.positionAfter;return d&&l?d.isBefore(o)?d:l:null}_dispatchMouse(c,o,d){c.position&&this._viewController.dispatchMouse({position:c.position,mouseColumn:c.mouseColumn,startedOnLineNumbers:this._mouseState.startedOnLineNumbers,revealType:d,inSelectionMode:o,mouseDownCount:this._mouseState.count,altKey:this._mouseState.altKey,ctrlKey:this._mouseState.ctrlKey,metaKey:this._mouseState.metaKey,shiftKey:this._mouseState.shiftKey,leftButton:this._mouseState.leftButton,middleButton:this._mouseState.middleButton,onInjectedText:c.type===6&&c.detail.injectedText!==null})}}class a extends y.Disposable{constructor(c,o,d,l){super(),this._context=c,this._viewHelper=o,this._mouseTargetFactory=d,this._dispatchMouse=l,this._operation=null}dispose(){super.dispose(),this.stop()}start(c,o){this._operation?this._operation.setPosition(c,o):this._operation=new u(this._context,this._viewHelper,this._mouseTargetFactory,this._dispatchMouse,c,o)}stop(){this._operation&&(this._operation.dispose(),this._operation=null)}}class u extends y.Disposable{constructor(c,o,d,l,p,m){super(),this._context=c,this._viewHelper=o,this._mouseTargetFactory=d,this._dispatchMouse=l,this._position=p,this._mouseEvent=m,this._lastTime=Date.now(),this._animationFrameDisposable=L.scheduleAtNextAnimationFrame(()=>this._execute())}dispose(){this._animationFrameDisposable.dispose()}setPosition(c,o){this._position=c,this._mouseEvent=o}_tick(){const c=Date.now(),o=c-this._lastTime;return this._lastTime=c,o}_getScrollSpeed(){const c=this._context.configuration.options.get(65),o=this._context.configuration.options.get(142).height/c,d=this._position.outsideDistance/c;return d<=1.5?Math.max(30,o*(1+d)):d<=3?Math.max(60,o*(2+d)):Math.max(200,o*(7+d))}_execute(){const c=this._context.configuration.options.get(65),o=this._getScrollSpeed(),d=this._tick(),l=o*(d/1e3)*c,p=this._position.outsidePosition===\"above\"?-l:l;this._context.viewModel.viewLayout.deltaScrollNow(0,p),this._viewHelper.renderNow();const m=this._context.viewLayout.getLinesViewportData(),v=this._position.outsidePosition===\"above\"?m.startLineNumber:m.endLineNumber;let b;{const w=(0,f.createEditorPagePosition)(this._viewHelper.viewDomNode),E=this._context.configuration.options.get(142).horizontalScrollbarHeight,I=new f.PageCoordinates(this._mouseEvent.pos.x,w.y+w.height-E-.1),M=(0,f.createCoordinatesRelativeToEditor)(this._viewHelper.viewDomNode,w,I);b=this._mouseTargetFactory.createMouseTarget(this._viewHelper.getLastRenderData(),w,I,M,null)}(!b.position||b.position.lineNumber!==v)&&(this._position.outsidePosition===\"above\"?b=S.MouseTarget.createOutsideEditor(this._position.mouseColumn,new g.Position(v,1),\"above\",this._position.outsideDistance):b=S.MouseTarget.createOutsideEditor(this._position.mouseColumn,new g.Position(v,this._context.viewModel.getLineMaxColumn(v)),\"below\",this._position.outsideDistance)),this._dispatchMouse(b,!0,2),this._animationFrameDisposable=L.scheduleAtNextAnimationFrame(()=>this._execute())}}class h{get altKey(){return this._altKey}get ctrlKey(){return this._ctrlKey}get metaKey(){return this._metaKey}get shiftKey(){return this._shiftKey}get leftButton(){return this._leftButton}get middleButton(){return this._middleButton}get startedOnLineNumbers(){return this._startedOnLineNumbers}constructor(){this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._leftButton=!1,this._middleButton=!1,this._startedOnLineNumbers=!1,this._lastMouseDownPosition=null,this._lastMouseDownPositionEqualCount=0,this._lastMouseDownCount=0,this._lastSetMouseDownCountTime=0,this.isDragAndDrop=!1}get count(){return this._lastMouseDownCount}setModifiers(c){this._altKey=c.altKey,this._ctrlKey=c.ctrlKey,this._metaKey=c.metaKey,this._shiftKey=c.shiftKey}setStartButtons(c){this._leftButton=c.leftButton,this._middleButton=c.middleButton}setStartedOnLineNumbers(c){this._startedOnLineNumbers=c}trySetCount(c,o){const d=new Date().getTime();d-this._lastSetMouseDownCountTime>h.CLEAR_MOUSE_DOWN_COUNT_TIME&&(c=1),this._lastSetMouseDownCountTime=d,c>this._lastMouseDownCount+1&&(c=this._lastMouseDownCount+1),this._lastMouseDownPosition&&this._lastMouseDownPosition.equals(o)?this._lastMouseDownPositionEqualCount++:this._lastMouseDownPositionEqualCount=1,this._lastMouseDownPosition=o,this._lastMouseDownCount=Math.min(c,this._lastMouseDownPositionEqualCount)}}h.CLEAR_MOUSE_DOWN_COUNT_TIME=400}),define(ne[837],se([1,0,7,17,61,2,836,159,217,185]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PointerHandler=e.PointerEventHandler=void 0;class C extends S.MouseHandler{constructor(t,a,u){super(t,a,u),this._register(y.Gesture.addTarget(this.viewHelper.linesContentDomNode)),this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Tap,r=>this.onTap(r))),this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Change,r=>this.onChange(r))),this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Contextmenu,r=>this._onContextMenu(new f.EditorMouseEvent(r,!1,this.viewHelper.viewDomNode),!1))),this._lastPointerType=\"mouse\",this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,\"pointerdown\",r=>{const c=r.pointerType;if(c===\"mouse\"){this._lastPointerType=\"mouse\";return}else c===\"touch\"?this._lastPointerType=\"touch\":this._lastPointerType=\"pen\"}));const h=new f.EditorPointerEventFactory(this.viewHelper.viewDomNode);this._register(h.onPointerMove(this.viewHelper.viewDomNode,r=>this._onMouseMove(r))),this._register(h.onPointerUp(this.viewHelper.viewDomNode,r=>this._onMouseUp(r))),this._register(h.onPointerLeave(this.viewHelper.viewDomNode,r=>this._onMouseLeave(r))),this._register(h.onPointerDown(this.viewHelper.viewDomNode,(r,c)=>this._onMouseDown(r,c)))}onTap(t){if(!t.initialTarget||!this.viewHelper.linesContentDomNode.contains(t.initialTarget))return;t.preventDefault(),this.viewHelper.focusTextArea();const a=this._createMouseTarget(new f.EditorMouseEvent(t,!1,this.viewHelper.viewDomNode),!1);a.position&&this.viewController.dispatchMouse({position:a.position,mouseColumn:a.position.column,startedOnLineNumbers:!1,revealType:1,mouseDownCount:t.tapCount,inSelectionMode:!1,altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1,leftButton:!1,middleButton:!1,onInjectedText:a.type===6&&a.detail.injectedText!==null})}onChange(t){this._lastPointerType===\"touch\"&&this._context.viewModel.viewLayout.deltaScrollNow(-t.translationX,-t.translationY)}_onMouseDown(t,a){t.browserEvent.pointerType!==\"touch\"&&super._onMouseDown(t,a)}}e.PointerEventHandler=C;class s extends S.MouseHandler{constructor(t,a,u){super(t,a,u),this._register(y.Gesture.addTarget(this.viewHelper.linesContentDomNode)),this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Tap,h=>this.onTap(h))),this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Change,h=>this.onChange(h))),this._register(L.addDisposableListener(this.viewHelper.linesContentDomNode,y.EventType.Contextmenu,h=>this._onContextMenu(new f.EditorMouseEvent(h,!1,this.viewHelper.viewDomNode),!1)))}onTap(t){t.preventDefault(),this.viewHelper.focusTextArea();const a=this._createMouseTarget(new f.EditorMouseEvent(t,!1,this.viewHelper.viewDomNode),!1);if(a.position){const u=document.createEvent(\"CustomEvent\");u.initEvent(g.TextAreaSyntethicEvents.Tap,!1,!0),this.viewHelper.dispatchTextAreaEvent(u),this.viewController.moveTo(a.position,1)}}onChange(t){this._context.viewModel.viewLayout.deltaScrollNow(-t.translationX,-t.translationY)}}class i extends D.Disposable{constructor(t,a,u){super(),k.isIOS&&_.BrowserFeatures.pointerEvents?this.handler=this._register(new C(t,a,u)):window.TouchEvent?this.handler=this._register(new s(t,a,u)):this.handler=this._register(new S.MouseHandler(t,a,u))}getTargetAtClientPoint(t,a){return this.handler.getTargetAtClientPoint(t,a)}}e.PointerHandler=i}),define(ne[838],se([1,0,173,13,17,59,144,229,53,477,251,12,5,421]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewLines=void 0;class n{constructor(){this._currentVisibleRange=new i.Range(1,1,1,1)}getCurrentVisibleRange(){return this._currentVisibleRange}setCurrentVisibleRange(r){this._currentVisibleRange=r}}class t{constructor(r,c,o,d,l,p,m){this.minimalReveal=r,this.lineNumber=c,this.startColumn=o,this.endColumn=d,this.startScrollTop=l,this.stopScrollTop=p,this.scrollType=m,this.type=\"range\",this.minLineNumber=c,this.maxLineNumber=c}}class a{constructor(r,c,o,d,l){this.minimalReveal=r,this.selections=c,this.startScrollTop=o,this.stopScrollTop=d,this.scrollType=l,this.type=\"selections\";let p=c[0].startLineNumber,m=c[0].endLineNumber;for(let v=1,b=c.length;v<b;v++){const w=c[v];p=Math.min(p,w.startLineNumber),m=Math.max(m,w.endLineNumber)}this.minLineNumber=p,this.maxLineNumber=m}}class u extends _.ViewPart{constructor(r,c){super(r),this._linesContent=c,this._textRangeRestingSpot=document.createElement(\"div\"),this._visibleLines=new f.VisibleLinesCollection(this),this.domNode=this._visibleLines.domNode;const o=this._context.configuration,d=this._context.configuration.options,l=d.get(49),p=d.get(143);this._lineHeight=d.get(65),this._typicalHalfwidthCharacterWidth=l.typicalHalfwidthCharacterWidth,this._isViewportWrapping=p.isViewportWrapping,this._revealHorizontalRightPadding=d.get(98),this._cursorSurroundingLines=d.get(28),this._cursorSurroundingLinesStyle=d.get(29),this._canUseLayerHinting=!d.get(31),this._viewLineOptions=new C.ViewLineOptions(o,this._context.theme.type),_.PartFingerprints.write(this.domNode,7),this.domNode.setClassName(`view-lines ${L.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`),(0,D.applyFontInfo)(this.domNode,l),this._maxLineWidth=0,this._asyncUpdateLineWidths=new k.RunOnceScheduler(()=>{this._updateLineWidthsSlow()},200),this._asyncCheckMonospaceFontAssumptions=new k.RunOnceScheduler(()=>{this._checkMonospaceFontAssumptions()},2e3),this._lastRenderedData=new n,this._horizontalRevealRequest=null,this._stickyScrollEnabled=d.get(113).enabled,this._maxNumberStickyLines=d.get(113).maxLineCount}dispose(){this._asyncUpdateLineWidths.dispose(),this._asyncCheckMonospaceFontAssumptions.dispose(),super.dispose()}getDomNode(){return this.domNode}createVisibleLine(){return new C.ViewLine(this._viewLineOptions)}onConfigurationChanged(r){this._visibleLines.onConfigurationChanged(r),r.hasChanged(143)&&(this._maxLineWidth=0);const c=this._context.configuration.options,o=c.get(49),d=c.get(143);return this._lineHeight=c.get(65),this._typicalHalfwidthCharacterWidth=o.typicalHalfwidthCharacterWidth,this._isViewportWrapping=d.isViewportWrapping,this._revealHorizontalRightPadding=c.get(98),this._cursorSurroundingLines=c.get(28),this._cursorSurroundingLinesStyle=c.get(29),this._canUseLayerHinting=!c.get(31),this._stickyScrollEnabled=c.get(113).enabled,this._maxNumberStickyLines=c.get(113).maxLineCount,(0,D.applyFontInfo)(this.domNode,o),this._onOptionsMaybeChanged(),r.hasChanged(142)&&(this._maxLineWidth=0),!0}_onOptionsMaybeChanged(){const r=this._context.configuration,c=new C.ViewLineOptions(r,this._context.theme.type);if(!this._viewLineOptions.equals(c)){this._viewLineOptions=c;const o=this._visibleLines.getStartLineNumber(),d=this._visibleLines.getEndLineNumber();for(let l=o;l<=d;l++)this._visibleLines.getVisibleLine(l).onOptionsChanged(this._viewLineOptions);return!0}return!1}onCursorStateChanged(r){const c=this._visibleLines.getStartLineNumber(),o=this._visibleLines.getEndLineNumber();let d=!1;for(let l=c;l<=o;l++)d=this._visibleLines.getVisibleLine(l).onSelectionChanged()||d;return d}onDecorationsChanged(r){{const c=this._visibleLines.getStartLineNumber(),o=this._visibleLines.getEndLineNumber();for(let d=c;d<=o;d++)this._visibleLines.getVisibleLine(d).onDecorationsChanged()}return!0}onFlushed(r){const c=this._visibleLines.onFlushed(r);return this._maxLineWidth=0,c}onLinesChanged(r){return this._visibleLines.onLinesChanged(r)}onLinesDeleted(r){return this._visibleLines.onLinesDeleted(r)}onLinesInserted(r){return this._visibleLines.onLinesInserted(r)}onRevealRangeRequest(r){const c=this._computeScrollTopToRevealRange(this._context.viewLayout.getFutureViewport(),r.source,r.minimalReveal,r.range,r.selections,r.verticalType);if(c===-1)return!1;let o=this._context.viewLayout.validateScrollPosition({scrollTop:c});r.revealHorizontal?r.range&&r.range.startLineNumber!==r.range.endLineNumber?o={scrollTop:o.scrollTop,scrollLeft:0}:r.range?this._horizontalRevealRequest=new t(r.minimalReveal,r.range.startLineNumber,r.range.startColumn,r.range.endColumn,this._context.viewLayout.getCurrentScrollTop(),o.scrollTop,r.scrollType):r.selections&&r.selections.length>0&&(this._horizontalRevealRequest=new a(r.minimalReveal,r.selections,this._context.viewLayout.getCurrentScrollTop(),o.scrollTop,r.scrollType)):this._horizontalRevealRequest=null;const l=Math.abs(this._context.viewLayout.getCurrentScrollTop()-o.scrollTop)<=this._lineHeight?1:r.scrollType;return this._context.viewModel.viewLayout.setScrollPosition(o,l),!0}onScrollChanged(r){if(this._horizontalRevealRequest&&r.scrollLeftChanged&&(this._horizontalRevealRequest=null),this._horizontalRevealRequest&&r.scrollTopChanged){const c=Math.min(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop),o=Math.max(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop);(r.scrollTop<c||r.scrollTop>o)&&(this._horizontalRevealRequest=null)}return this.domNode.setWidth(r.scrollWidth),this._visibleLines.onScrollChanged(r)||!0}onTokensChanged(r){return this._visibleLines.onTokensChanged(r)}onZonesChanged(r){return this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth),this._visibleLines.onZonesChanged(r)}onThemeChanged(r){return this._onOptionsMaybeChanged()}getPositionFromDOMInfo(r,c){const o=this._getViewLineDomNode(r);if(o===null)return null;const d=this._getLineNumberFor(o);if(d===-1||d<1||d>this._context.viewModel.getLineCount())return null;if(this._context.viewModel.getLineMaxColumn(d)===1)return new s.Position(d,1);const l=this._visibleLines.getStartLineNumber(),p=this._visibleLines.getEndLineNumber();if(d<l||d>p)return null;let m=this._visibleLines.getVisibleLine(d).getColumnOfNodeOffset(r,c);const v=this._context.viewModel.getLineMinColumn(d);return m<v&&(m=v),new s.Position(d,m)}_getViewLineDomNode(r){for(;r&&r.nodeType===1;){if(r.className===C.ViewLine.CLASS_NAME)return r;r=r.parentElement}return null}_getLineNumberFor(r){const c=this._visibleLines.getStartLineNumber(),o=this._visibleLines.getEndLineNumber();for(let d=c;d<=o;d++){const l=this._visibleLines.getVisibleLine(d);if(r===l.getDomNode())return d}return-1}getLineWidth(r){const c=this._visibleLines.getStartLineNumber(),o=this._visibleLines.getEndLineNumber();if(r<c||r>o)return-1;const d=new g.DomReadingContext(this.domNode.domNode,this._textRangeRestingSpot),l=this._visibleLines.getVisibleLine(r).getWidth(d);return this._updateLineWidthsSlowIfDomDidLayout(d),l}linesVisibleRangesForRange(r,c){if(this.shouldRender())return null;const o=r.endLineNumber,d=i.Range.intersectRanges(r,this._lastRenderedData.getCurrentVisibleRange());if(!d)return null;const l=[];let p=0;const m=new g.DomReadingContext(this.domNode.domNode,this._textRangeRestingSpot);let v=0;c&&(v=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new s.Position(d.startLineNumber,1)).lineNumber);const b=this._visibleLines.getStartLineNumber(),w=this._visibleLines.getEndLineNumber();for(let E=d.startLineNumber;E<=d.endLineNumber;E++){if(E<b||E>w)continue;const I=E===d.startLineNumber?d.startColumn:1,M=E!==d.endLineNumber,P=M?this._context.viewModel.getLineMaxColumn(E):d.endColumn,x=this._visibleLines.getVisibleLine(E).getVisibleRangesForRange(E,I,P,m);if(x){if(c&&E<o){const T=v;v=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new s.Position(E+1,1)).lineNumber,T!==v&&(x.ranges[x.ranges.length-1].width+=this._typicalHalfwidthCharacterWidth)}l[p++]=new S.LineVisibleRanges(x.outsideRenderedLine,E,S.HorizontalRange.from(x.ranges),M)}}return this._updateLineWidthsSlowIfDomDidLayout(m),p===0?null:l}_visibleRangesForLineRange(r,c,o){if(this.shouldRender()||r<this._visibleLines.getStartLineNumber()||r>this._visibleLines.getEndLineNumber())return null;const d=new g.DomReadingContext(this.domNode.domNode,this._textRangeRestingSpot),l=this._visibleLines.getVisibleLine(r).getVisibleRangesForRange(r,c,o,d);return this._updateLineWidthsSlowIfDomDidLayout(d),l}visibleRangeForPosition(r){const c=this._visibleRangesForLineRange(r.lineNumber,r.column,r.column);return c?new S.HorizontalPosition(c.outsideRenderedLine,c.ranges[0].left):null}_updateLineWidthsFast(){return this._updateLineWidths(!0)}_updateLineWidthsSlow(){this._updateLineWidths(!1)}_updateLineWidthsSlowIfDomDidLayout(r){r.didDomLayout&&(this._asyncUpdateLineWidths.isScheduled()||(this._asyncUpdateLineWidths.cancel(),this._updateLineWidthsSlow()))}_updateLineWidths(r){const c=this._visibleLines.getStartLineNumber(),o=this._visibleLines.getEndLineNumber();let d=1,l=!0;for(let p=c;p<=o;p++){const m=this._visibleLines.getVisibleLine(p);if(r&&!m.getWidthIsFast()){l=!1;continue}d=Math.max(d,m.getWidth(null))}return l&&c===1&&o===this._context.viewModel.getLineCount()&&(this._maxLineWidth=0),this._ensureMaxLineWidth(d),l}_checkMonospaceFontAssumptions(){let r=-1,c=-1;const o=this._visibleLines.getStartLineNumber(),d=this._visibleLines.getEndLineNumber();for(let l=o;l<=d;l++){const p=this._visibleLines.getVisibleLine(l);if(p.needsMonospaceFontCheck()){const m=p.getWidth(null);m>c&&(c=m,r=l)}}if(r!==-1&&!this._visibleLines.getVisibleLine(r).monospaceAssumptionsAreValid())for(let l=o;l<=d;l++)this._visibleLines.getVisibleLine(l).onMonospaceAssumptionsInvalidated()}prepareRender(){throw new Error(\"Not supported\")}render(){throw new Error(\"Not supported\")}renderText(r){if(this._visibleLines.renderLines(r),this._lastRenderedData.setCurrentVisibleRange(r.visibleRange),this.domNode.setWidth(this._context.viewLayout.getScrollWidth()),this.domNode.setHeight(Math.min(this._context.viewLayout.getScrollHeight(),1e6)),this._horizontalRevealRequest){const o=this._horizontalRevealRequest;if(r.startLineNumber<=o.minLineNumber&&o.maxLineNumber<=r.endLineNumber){this._horizontalRevealRequest=null,this.onDidRender();const d=this._computeScrollLeftToReveal(o);d&&(this._isViewportWrapping||this._ensureMaxLineWidth(d.maxHorizontalOffset),this._context.viewModel.viewLayout.setScrollPosition({scrollLeft:d.scrollLeft},o.scrollType))}}if(this._updateLineWidthsFast()?this._asyncUpdateLineWidths.cancel():this._asyncUpdateLineWidths.schedule(),y.isLinux&&!this._asyncCheckMonospaceFontAssumptions.isScheduled()){const o=this._visibleLines.getStartLineNumber(),d=this._visibleLines.getEndLineNumber();for(let l=o;l<=d;l++)if(this._visibleLines.getVisibleLine(l).needsMonospaceFontCheck()){this._asyncCheckMonospaceFontAssumptions.schedule();break}}this._linesContent.setLayerHinting(this._canUseLayerHinting),this._linesContent.setContain(\"strict\");const c=this._context.viewLayout.getCurrentScrollTop()-r.bigNumbersDelta;this._linesContent.setTop(-c),this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft())}_ensureMaxLineWidth(r){const c=Math.ceil(r);this._maxLineWidth<c&&(this._maxLineWidth=c,this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth))}_computeScrollTopToRevealRange(r,c,o,d,l,p){const m=r.top,v=r.height,b=m+v;let w,E,I;if(l&&l.length>0){let A=l[0].startLineNumber,N=l[0].endLineNumber;for(let F=1,O=l.length;F<O;F++){const W=l[F];A=Math.min(A,W.startLineNumber),N=Math.max(N,W.endLineNumber)}w=!1,E=this._context.viewLayout.getVerticalOffsetForLineNumber(A),I=this._context.viewLayout.getVerticalOffsetForLineNumber(N)+this._lineHeight}else if(d)w=!0,E=this._context.viewLayout.getVerticalOffsetForLineNumber(d.startLineNumber),I=this._context.viewLayout.getVerticalOffsetForLineNumber(d.endLineNumber)+this._lineHeight;else return-1;const M=(c===\"mouse\"||o)&&this._cursorSurroundingLinesStyle===\"default\";let P=0,x=0;if(M)o||(P=this._lineHeight);else{const A=Math.min(v/this._lineHeight/2,this._cursorSurroundingLines);this._stickyScrollEnabled?P=Math.max(A,this._maxNumberStickyLines)*this._lineHeight:P=A*this._lineHeight,x=Math.max(0,A-1)*this._lineHeight}o||(p===0||p===4)&&(x+=this._lineHeight),E-=P,I+=x;let T;if(I-E>v){if(!w)return-1;T=E}else if(p===5||p===6)if(p===6&&m<=E&&I<=b)T=m;else{const A=Math.max(5*this._lineHeight,v*.2),N=E-A,F=I-v;T=Math.max(F,N)}else if(p===1||p===2)if(p===2&&m<=E&&I<=b)T=m;else{const A=(E+I)/2;T=Math.max(0,A-v/2)}else T=this._computeMinimumScrolling(m,b,E,I,p===3,p===4);return T}_computeScrollLeftToReveal(r){const c=this._context.viewLayout.getCurrentViewport(),o=this._context.configuration.options.get(142),d=c.left,l=d+c.width-o.verticalScrollbarWidth;let p=1073741824,m=0;if(r.type===\"range\"){const b=this._visibleRangesForLineRange(r.lineNumber,r.startColumn,r.endColumn);if(!b)return null;for(const w of b.ranges)p=Math.min(p,Math.round(w.left)),m=Math.max(m,Math.round(w.left+w.width))}else for(const b of r.selections){if(b.startLineNumber!==b.endLineNumber)return null;const w=this._visibleRangesForLineRange(b.startLineNumber,b.startColumn,b.endColumn);if(!w)return null;for(const E of w.ranges)p=Math.min(p,Math.round(E.left)),m=Math.max(m,Math.round(E.left+E.width))}return r.minimalReveal||(p=Math.max(0,p-u.HORIZONTAL_EXTRA_PX),m+=this._revealHorizontalRightPadding),r.type===\"selections\"&&m-p>c.width?null:{scrollLeft:this._computeMinimumScrolling(d,l,p,m),maxHorizontalOffset:m}}_computeMinimumScrolling(r,c,o,d,l,p){r=r|0,c=c|0,o=o|0,d=d|0,l=!!l,p=!!p;const m=c-r;if(d-o<m){if(l)return o;if(p)return Math.max(0,d-m);if(o<r)return o;if(d>c)return Math.max(0,d-m)}else return o;return r}}e.ViewLines=u,u.HORIZONTAL_EXTRA_PX=30}),define(ne[356],se([1,0,7,44,68,226,222,14,13,384,106,9,6,120,2,17,11,734,339,100,22,88,174]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.QuickInputList=e.QuickInputListFocus=void 0;const l=L.$;class p{constructor(T,A,N,F,O,W,U){var j,R,K;this._checked=!1,this._hidden=!1,this.hasCheckbox=F,this.index=N,this.fireButtonTriggered=O,this.fireSeparatorButtonTriggered=W,this._onChecked=U,this.onChecked=F?i.Event.map(i.Event.filter(this._onChecked.event,G=>G.listElement===this),G=>G.checked):i.Event.None,T.type===\"separator\"?this._separator=T:(this.item=T,A&&A.type===\"separator\"&&!A.buttons&&(this._separator=A),this.saneDescription=this.item.description,this.saneDetail=this.item.detail,this._labelHighlights=(j=this.item.highlights)===null||j===void 0?void 0:j.label,this._descriptionHighlights=(R=this.item.highlights)===null||R===void 0?void 0:R.description,this._detailHighlights=(K=this.item.highlights)===null||K===void 0?void 0:K.detail,this.saneTooltip=this.item.tooltip),this._init=new c.Lazy(()=>{var G;const Z=(G=T.label)!==null&&G!==void 0?G:\"\",J=(0,n.parseLabelWithIcons)(Z).text.trim(),X=T.ariaLabel||[Z,this.saneDescription,this.saneDetail].map(H=>(0,n.getCodiconAriaLabel)(H)).filter(H=>!!H).join(\", \");return{saneLabel:Z,saneSortLabel:J,saneAriaLabel:X}})}get saneLabel(){return this._init.value.saneLabel}get saneSortLabel(){return this._init.value.saneSortLabel}get saneAriaLabel(){return this._init.value.saneAriaLabel}get element(){return this._element}set element(T){this._element=T}get hidden(){return this._hidden}set hidden(T){this._hidden=T}get checked(){return this._checked}set checked(T){T!==this._checked&&(this._checked=T,this._onChecked.fire({listElement:this,checked:T}))}get separator(){return this._separator}set separator(T){this._separator=T}get labelHighlights(){return this._labelHighlights}set labelHighlights(T){this._labelHighlights=T}get descriptionHighlights(){return this._descriptionHighlights}set descriptionHighlights(T){this._descriptionHighlights=T}get detailHighlights(){return this._detailHighlights}set detailHighlights(T){this._detailHighlights=T}}class m{constructor(T){this.themeService=T}get templateId(){return m.ID}renderTemplate(T){const A=Object.create(null);A.toDisposeElement=[],A.toDisposeTemplate=[],A.entry=L.append(T,l(\".quick-input-list-entry\"));const N=L.append(A.entry,l(\"label.quick-input-list-label\"));A.toDisposeTemplate.push(L.addStandardDisposableListener(N,L.EventType.CLICK,R=>{A.checkbox.offsetParent||R.preventDefault()})),A.checkbox=L.append(N,l(\"input.quick-input-list-checkbox\")),A.checkbox.type=\"checkbox\",A.toDisposeTemplate.push(L.addStandardDisposableListener(A.checkbox,L.EventType.CHANGE,R=>{A.element.checked=A.checkbox.checked}));const F=L.append(N,l(\".quick-input-list-rows\")),O=L.append(F,l(\".quick-input-list-row\")),W=L.append(F,l(\".quick-input-list-row\"));A.label=new D.IconLabel(O,{supportHighlights:!0,supportDescriptionHighlights:!0,supportIcons:!0}),A.icon=L.prepend(A.label.element,l(\".quick-input-list-icon\"));const U=L.append(O,l(\".quick-input-list-entry-keybinding\"));A.keybinding=new S.KeybindingLabel(U,a.OS);const j=L.append(W,l(\".quick-input-list-label-meta\"));return A.detail=new D.IconLabel(j,{supportHighlights:!0,supportIcons:!0}),A.separator=L.append(A.entry,l(\".quick-input-list-separator\")),A.actionBar=new y.ActionBar(A.entry),A.actionBar.domNode.classList.add(\"quick-input-list-entry-action-bar\"),A.toDisposeTemplate.push(A.actionBar),A}renderElement(T,A,N){var F,O,W,U;N.element=T,T.element=(F=N.entry)!==null&&F!==void 0?F:void 0;const j=T.item?T.item:T.separator;N.checkbox.checked=T.checked,N.toDisposeElement.push(T.onChecked(X=>N.checkbox.checked=X));const{labelHighlights:R,descriptionHighlights:K,detailHighlights:G}=T;if(!((O=T.item)===null||O===void 0)&&O.iconPath){const X=(0,d.isDark)(this.themeService.getColorTheme().type)?T.item.iconPath.dark:(W=T.item.iconPath.light)!==null&&W!==void 0?W:T.item.iconPath.dark,H=o.URI.revive(X);N.icon.className=\"quick-input-list-icon\",N.icon.style.backgroundImage=L.asCSSUrl(H)}else N.icon.style.backgroundImage=\"\",N.icon.className=!((U=T.item)===null||U===void 0)&&U.iconClass?`quick-input-list-icon ${T.item.iconClass}`:\"\";const Z={matches:R||[],descriptionTitle:T.saneDescription,descriptionMatches:K||[],labelEscapeNewLines:!0};j.type!==\"separator\"?(Z.extraClasses=j.iconClasses,Z.italic=j.italic,Z.strikethrough=j.strikethrough,N.entry.classList.remove(\"quick-input-list-separator-as-item\")):N.entry.classList.add(\"quick-input-list-separator-as-item\"),N.label.setLabel(T.saneLabel,T.saneDescription,Z),N.keybinding.set(j.type===\"separator\"?void 0:j.keybinding),T.saneDetail?(N.detail.element.style.display=\"\",N.detail.setLabel(T.saneDetail,void 0,{matches:G,title:T.saneDetail,labelEscapeNewLines:!0})):N.detail.element.style.display=\"none\",T.item&&T.separator&&T.separator.label?(N.separator.textContent=T.separator.label,N.separator.style.display=\"\"):N.separator.style.display=\"none\",N.entry.classList.toggle(\"quick-input-list-separator-border\",!!T.separator);const J=j.buttons;J&&J.length?(N.actionBar.push(J.map((X,H)=>{let B=X.iconClass||(X.iconPath?(0,r.getIconClass)(X.iconPath):void 0);return X.alwaysVisible&&(B=B?`${B} always-visible`:\"always-visible\"),{id:`id-${H}`,class:B,enabled:!0,label:\"\",tooltip:X.tooltip||\"\",run:()=>{j.type!==\"separator\"?T.fireButtonTriggered({button:X,item:j}):T.fireSeparatorButtonTriggered({button:X,separator:j})}}}),{icon:!0,label:!1}),N.entry.classList.add(\"has-actions\")):N.entry.classList.remove(\"has-actions\")}disposeElement(T,A,N){N.toDisposeElement=(0,t.dispose)(N.toDisposeElement),N.actionBar.clear()}disposeTemplate(T){T.toDisposeElement=(0,t.dispose)(T.toDisposeElement),T.toDisposeTemplate=(0,t.dispose)(T.toDisposeTemplate)}}m.ID=\"listelement\";class v{getHeight(T){return T.item?T.saneDetail?44:22:24}getTemplateId(T){return m.ID}}var b;(function(x){x[x.First=1]=\"First\",x[x.Second=2]=\"Second\",x[x.Last=3]=\"Last\",x[x.Next=4]=\"Next\",x[x.Previous=5]=\"Previous\",x[x.NextPage=6]=\"NextPage\",x[x.PreviousPage=7]=\"PreviousPage\"})(b||(e.QuickInputListFocus=b={}));class w{constructor(T,A,N,F){this.parent=T,this.options=N,this.inputElements=[],this.elements=[],this.elementsToIndexes=new Map,this.matchOnDescription=!1,this.matchOnDetail=!1,this.matchOnLabel=!0,this.matchOnLabelMode=\"fuzzy\",this.sortByLabel=!0,this._onChangedAllVisibleChecked=new i.Emitter,this.onChangedAllVisibleChecked=this._onChangedAllVisibleChecked.event,this._onChangedCheckedCount=new i.Emitter,this.onChangedCheckedCount=this._onChangedCheckedCount.event,this._onChangedVisibleCount=new i.Emitter,this.onChangedVisibleCount=this._onChangedVisibleCount.event,this._onChangedCheckedElements=new i.Emitter,this.onChangedCheckedElements=this._onChangedCheckedElements.event,this._onButtonTriggered=new i.Emitter,this.onButtonTriggered=this._onButtonTriggered.event,this._onSeparatorButtonTriggered=new i.Emitter,this.onSeparatorButtonTriggered=this._onSeparatorButtonTriggered.event,this._onKeyDown=new i.Emitter,this.onKeyDown=this._onKeyDown.event,this._onLeave=new i.Emitter,this.onLeave=this._onLeave.event,this._listElementChecked=new i.Emitter,this._fireCheckedEvents=!0,this.elementDisposables=[],this.disposables=[],this.id=A,this.container=L.append(this.parent,l(\".quick-input-list\"));const O=new v,W=new P;if(this.list=N.createList(\"QuickInput\",this.container,O,[new m(F)],{identityProvider:{getId:U=>{var j,R,K,G,Z,J,X,H;return(H=(J=(G=(R=(j=U.item)===null||j===void 0?void 0:j.id)!==null&&R!==void 0?R:(K=U.item)===null||K===void 0?void 0:K.label)!==null&&G!==void 0?G:(Z=U.separator)===null||Z===void 0?void 0:Z.id)!==null&&J!==void 0?J:(X=U.separator)===null||X===void 0?void 0:X.label)!==null&&H!==void 0?H:\"\"}},setRowLineHeight:!1,multipleSelectionSupport:!1,horizontalScrolling:!1,accessibilityProvider:W}),this.list.getHTMLElement().id=A,this.disposables.push(this.list),this.disposables.push(this.list.onKeyDown(U=>{const j=new k.StandardKeyboardEvent(U);switch(j.keyCode){case 10:this.toggleCheckbox();break;case 31:(a.isMacintosh?U.metaKey:U.ctrlKey)&&this.list.setFocus((0,f.range)(this.list.length));break;case 16:{const R=this.list.getFocus();R.length===1&&R[0]===0&&this._onLeave.fire();break}case 18:{const R=this.list.getFocus();R.length===1&&R[0]===this.list.length-1&&this._onLeave.fire();break}}this._onKeyDown.fire(j)})),this.disposables.push(this.list.onMouseDown(U=>{U.browserEvent.button!==2&&U.browserEvent.preventDefault()})),this.disposables.push(L.addDisposableListener(this.container,L.EventType.CLICK,U=>{(U.x||U.y)&&this._onLeave.fire()})),this.disposables.push(this.list.onMouseMiddleClick(U=>{this._onLeave.fire()})),this.disposables.push(this.list.onContextMenu(U=>{typeof U.index==\"number\"&&(U.browserEvent.preventDefault(),this.list.setSelection([U.index]))})),N.hoverDelegate){const U=new _.ThrottledDelayer(N.hoverDelegate.delay);this.disposables.push(this.list.onMouseOver(j=>we(this,void 0,void 0,function*(){var R;if(j.browserEvent.target instanceof HTMLAnchorElement){U.cancel();return}if(!(!(j.browserEvent.relatedTarget instanceof HTMLAnchorElement)&&L.isAncestor(j.browserEvent.relatedTarget,(R=j.element)===null||R===void 0?void 0:R.element)))try{yield U.trigger(()=>we(this,void 0,void 0,function*(){j.element&&this.showHover(j.element)}))}catch(K){if(!(0,s.isCancellationError)(K))throw K}}))),this.disposables.push(this.list.onMouseOut(j=>{var R;L.isAncestor(j.browserEvent.relatedTarget,(R=j.element)===null||R===void 0?void 0:R.element)||U.cancel()})),this.disposables.push(U)}this.disposables.push(this._listElementChecked.event(U=>this.fireCheckedEvents())),this.disposables.push(this._onChangedAllVisibleChecked,this._onChangedCheckedCount,this._onChangedVisibleCount,this._onChangedCheckedElements,this._onButtonTriggered,this._onSeparatorButtonTriggered,this._onLeave,this._onKeyDown)}get onDidChangeFocus(){return i.Event.map(this.list.onDidChangeFocus,T=>T.elements.map(A=>A.item))}get onDidChangeSelection(){return i.Event.map(this.list.onDidChangeSelection,T=>({items:T.elements.map(A=>A.item),event:T.browserEvent}))}get scrollTop(){return this.list.scrollTop}set scrollTop(T){this.list.scrollTop=T}get ariaLabel(){return this.list.getHTMLElement().ariaLabel}set ariaLabel(T){this.list.getHTMLElement().ariaLabel=T}getAllVisibleChecked(){return this.allVisibleChecked(this.elements,!1)}allVisibleChecked(T,A=!0){for(let N=0,F=T.length;N<F;N++){const O=T[N];if(!O.hidden)if(O.checked)A=!0;else return!1}return A}getCheckedCount(){let T=0;const A=this.elements;for(let N=0,F=A.length;N<F;N++)A[N].checked&&T++;return T}getVisibleCount(){let T=0;const A=this.elements;for(let N=0,F=A.length;N<F;N++)A[N].hidden||T++;return T}setAllVisibleChecked(T){try{this._fireCheckedEvents=!1,this.elements.forEach(A=>{A.hidden||(A.checked=T)})}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}setElements(T){this.elementDisposables=(0,t.dispose)(this.elementDisposables);const A=W=>this.fireButtonTriggered(W),N=W=>this.fireSeparatorButtonTriggered(W);this.inputElements=T;const F=new Map,O=this.parent.classList.contains(\"show-checkboxes\");this.elements=T.reduce((W,U,j)=>{var R;const K=j>0?T[j-1]:void 0;if(U.type===\"separator\"&&!U.buttons)return W;const G=new p(U,K,j,O,A,N,this._listElementChecked),Z=W.length;return W.push(G),F.set((R=G.item)!==null&&R!==void 0?R:G.separator,Z),W},[]),this.elementsToIndexes=F,this.list.splice(0,this.list.length),this.list.splice(0,this.list.length,this.elements),this._onChangedVisibleCount.fire(this.elements.length)}getFocusedElements(){return this.list.getFocusedElements().map(T=>T.item)}setFocusedElements(T){if(this.list.setFocus(T.filter(A=>this.elementsToIndexes.has(A)).map(A=>this.elementsToIndexes.get(A))),T.length>0){const A=this.list.getFocus()[0];typeof A==\"number\"&&this.list.reveal(A)}}getActiveDescendant(){return this.list.getHTMLElement().getAttribute(\"aria-activedescendant\")}setSelectedElements(T){this.list.setSelection(T.filter(A=>this.elementsToIndexes.has(A)).map(A=>this.elementsToIndexes.get(A)))}getCheckedElements(){return this.elements.filter(T=>T.checked).map(T=>T.item).filter(T=>!!T)}setCheckedElements(T){try{this._fireCheckedEvents=!1;const A=new Set;for(const N of T)A.add(N);for(const N of this.elements)N.checked=A.has(N.item)}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}set enabled(T){this.list.getHTMLElement().style.pointerEvents=T?\"\":\"none\"}focus(T){if(!this.list.length)return;switch(T===b.Second&&this.list.length<2&&(T=b.First),T){case b.First:this.list.scrollTop=0,this.list.focusFirst(void 0,N=>!!N.item);break;case b.Second:this.list.scrollTop=0,this.list.focusNth(1,void 0,N=>!!N.item);break;case b.Last:this.list.scrollTop=this.list.scrollHeight,this.list.focusLast(void 0,N=>!!N.item);break;case b.Next:{this.list.focusNext(void 0,!0,void 0,F=>!!F.item);const N=this.list.getFocus()[0];N!==0&&!this.elements[N-1].item&&this.list.firstVisibleIndex>N-1&&this.list.reveal(N-1);break}case b.Previous:{this.list.focusPrevious(void 0,!0,void 0,F=>!!F.item);const N=this.list.getFocus()[0];N!==0&&!this.elements[N-1].item&&this.list.firstVisibleIndex>N-1&&this.list.reveal(N-1);break}case b.NextPage:this.list.focusNextPage(void 0,N=>!!N.item);break;case b.PreviousPage:this.list.focusPreviousPage(void 0,N=>!!N.item);break}const A=this.list.getFocus()[0];typeof A==\"number\"&&this.list.reveal(A)}clearFocus(){this.list.setFocus([])}domFocus(){this.list.domFocus()}showHover(T){var A,N,F;this.options.hoverDelegate!==void 0&&(this._lastHover&&!this._lastHover.isDisposed&&((N=(A=this.options.hoverDelegate).onDidHideHover)===null||N===void 0||N.call(A),(F=this._lastHover)===null||F===void 0||F.dispose()),!(!T.element||!T.saneTooltip)&&(this._lastHover=this.options.hoverDelegate.showHover({content:T.saneTooltip,target:T.element,linkHandler:O=>{this.options.linkOpenerDelegate(O)},showPointer:!0,container:this.container,hoverPosition:1},!1)))}layout(T){this.list.getHTMLElement().style.maxHeight=T?`${Math.floor(T/44)*44+6}px`:\"\",this.list.layout()}filter(T){if(!(this.sortByLabel||this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))return this.list.layout(),!1;const A=T;if(T=T.trim(),!T||!(this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))this.elements.forEach(F=>{F.labelHighlights=void 0,F.descriptionHighlights=void 0,F.detailHighlights=void 0,F.hidden=!1;const O=F.index&&this.inputElements[F.index-1];F.item&&(F.separator=O&&O.type===\"separator\"&&!O.buttons?O:void 0)});else{let F;this.elements.forEach(O=>{var W,U,j,R;let K;this.matchOnLabelMode===\"fuzzy\"?K=this.matchOnLabel&&(W=(0,n.matchesFuzzyIconAware)(T,(0,n.parseLabelWithIcons)(O.saneLabel)))!==null&&W!==void 0?W:void 0:K=this.matchOnLabel&&(U=E(A,(0,n.parseLabelWithIcons)(O.saneLabel)))!==null&&U!==void 0?U:void 0;const G=this.matchOnDescription&&(j=(0,n.matchesFuzzyIconAware)(T,(0,n.parseLabelWithIcons)(O.saneDescription||\"\")))!==null&&j!==void 0?j:void 0,Z=this.matchOnDetail&&(R=(0,n.matchesFuzzyIconAware)(T,(0,n.parseLabelWithIcons)(O.saneDetail||\"\")))!==null&&R!==void 0?R:void 0;if(K||G||Z?(O.labelHighlights=K,O.descriptionHighlights=G,O.detailHighlights=Z,O.hidden=!1):(O.labelHighlights=void 0,O.descriptionHighlights=void 0,O.detailHighlights=void 0,O.hidden=O.item?!O.item.alwaysShow:!0),O.item?O.separator=void 0:O.separator&&(O.hidden=!0),!this.sortByLabel){const J=O.index&&this.inputElements[O.index-1];F=J&&J.type===\"separator\"?J:F,F&&!O.hidden&&(O.separator=F,F=void 0)}})}const N=this.elements.filter(F=>!F.hidden);if(this.sortByLabel&&T){const F=T.toLowerCase();N.sort((O,W)=>M(O,W,F))}return this.elementsToIndexes=N.reduce((F,O,W)=>{var U;return F.set((U=O.item)!==null&&U!==void 0?U:O.separator,W),F},new Map),this.list.splice(0,this.list.length,N),this.list.setFocus([]),this.list.layout(),this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedVisibleCount.fire(N.length),!0}toggleCheckbox(){try{this._fireCheckedEvents=!1;const T=this.list.getFocusedElements(),A=this.allVisibleChecked(T);for(const N of T)N.checked=!A}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}display(T){this.container.style.display=T?\"\":\"none\"}isDisplayed(){return this.container.style.display!==\"none\"}dispose(){this.elementDisposables=(0,t.dispose)(this.elementDisposables),this.disposables=(0,t.dispose)(this.disposables)}fireCheckedEvents(){this._fireCheckedEvents&&(this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedCheckedCount.fire(this.getCheckedCount()),this._onChangedCheckedElements.fire(this.getCheckedElements()))}fireButtonTriggered(T){this._onButtonTriggered.fire(T)}fireSeparatorButtonTriggered(T){this._onSeparatorButtonTriggered.fire(T)}style(T){this.list.style(T)}toggleHover(){const T=this.list.getFocusedElements()[0];if(!T?.saneTooltip)return;if(this._lastHover&&!this._lastHover.isDisposed){this._lastHover.dispose();return}const A=this.list.getFocusedElements()[0];if(!A)return;this.showHover(A);const N=new t.DisposableStore;N.add(this.list.onDidChangeFocus(F=>{F.indexes.length&&this.showHover(F.elements[0])})),this._lastHover&&N.add(this._lastHover),this._toggleHover=N,this.elementDisposables.push(this._toggleHover)}}e.QuickInputList=w,ke([C.memoize],w.prototype,\"onDidChangeFocus\",null),ke([C.memoize],w.prototype,\"onDidChangeSelection\",null);function E(x,T){const{text:A,iconOffsets:N}=T;if(!N||N.length===0)return I(x,A);const F=(0,u.ltrim)(A,\" \"),O=A.length-F.length,W=I(x,F);if(W)for(const U of W){const j=N[U.start+O]+O;U.start+=j,U.end+=j}return W}function I(x,T){const A=T.toLowerCase().indexOf(x.toLowerCase());return A!==-1?[{start:A,end:A+x.length}]:null}function M(x,T,A){const N=x.labelHighlights||[],F=T.labelHighlights||[];return N.length&&!F.length?-1:!N.length&&F.length?1:N.length===0&&F.length===0?0:(0,g.compareAnything)(x.saneSortLabel,T.saneSortLabel,A)}class P{getWidgetAriaLabel(){return(0,h.localize)(0,null)}getAriaLabel(T){var A;return!((A=T.separator)===null||A===void 0)&&A.label?`${T.saneAriaLabel}, ${T.separator.label}`:T.saneAriaLabel}getWidgetRole(){return\"listbox\"}getRole(T){return T.hasCheckbox?\"checkbox\":\"option\"}isChecked(T){if(T.hasCheckbox)return{value:T.checked,onDidChange:T.onChecked}}}}),define(ne[839],se([1,0,7,44,153,39,14,13,25,6,2,17,101,26,732,71,356,339,174]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InputBox=e.QuickPick=e.backButton=void 0,e.backButton={iconClass:n.ThemeIcon.asClassName(_.Codicon.quickInputBack),tooltip:(0,t.localize)(0,null),handle:-1};class r extends C.Disposable{constructor(l){super(),this.ui=l,this._widgetUpdated=!1,this.visible=!1,this._enabled=!0,this._busy=!1,this._ignoreFocusOut=!1,this._buttons=[],this.buttonsUpdated=!1,this._toggles=[],this.togglesUpdated=!1,this.noValidationMessage=r.noPromptMessage,this._severity=i.default.Ignore,this.onDidTriggerButtonEmitter=this._register(new g.Emitter),this.onDidHideEmitter=this._register(new g.Emitter),this.onDisposeEmitter=this._register(new g.Emitter),this.visibleDisposables=this._register(new C.DisposableStore),this.onDidHide=this.onDidHideEmitter.event}get title(){return this._title}set title(l){this._title=l,this.update()}get description(){return this._description}set description(l){this._description=l,this.update()}get step(){return this._steps}set step(l){this._steps=l,this.update()}get totalSteps(){return this._totalSteps}set totalSteps(l){this._totalSteps=l,this.update()}get enabled(){return this._enabled}set enabled(l){this._enabled=l,this.update()}get contextKey(){return this._contextKey}set contextKey(l){this._contextKey=l,this.update()}get busy(){return this._busy}set busy(l){this._busy=l,this.update()}get ignoreFocusOut(){return this._ignoreFocusOut}set ignoreFocusOut(l){const p=this._ignoreFocusOut!==l&&!s.isIOS;this._ignoreFocusOut=l&&!s.isIOS,p&&this.update()}get buttons(){return this._buttons}set buttons(l){this._buttons=l,this.buttonsUpdated=!0,this.update()}get toggles(){return this._toggles}set toggles(l){this._toggles=l??[],this.togglesUpdated=!0,this.update()}get validationMessage(){return this._validationMessage}set validationMessage(l){this._validationMessage=l,this.update()}get severity(){return this._severity}set severity(l){this._severity=l,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.onDidTriggerButton(l=>{this.buttons.indexOf(l)!==-1&&this.onDidTriggerButtonEmitter.fire(l)})),this.ui.show(this),this.visible=!0,this._lastValidationMessage=void 0,this._lastSeverity=void 0,this.buttons.length&&(this.buttonsUpdated=!0),this.toggles.length&&(this.togglesUpdated=!0),this.update())}hide(){this.visible&&this.ui.hide()}didHide(l=a.QuickInputHideReason.Other){this.visible=!1,this.visibleDisposables.clear(),this.onDidHideEmitter.fire({reason:l})}update(){var l,p;if(!this.visible)return;const m=this.getTitle();m&&this.ui.title.textContent!==m?this.ui.title.textContent=m:!m&&this.ui.title.innerHTML!==\"&nbsp;\"&&(this.ui.title.innerText=\"\\xA0\");const v=this.getDescription();if(this.ui.description1.textContent!==v&&(this.ui.description1.textContent=v),this.ui.description2.textContent!==v&&(this.ui.description2.textContent=v),this._widgetUpdated&&(this._widgetUpdated=!1,this._widget?L.reset(this.ui.widget,this._widget):L.reset(this.ui.widget)),this.busy&&!this.busyDelay&&(this.busyDelay=new f.TimeoutTimer,this.busyDelay.setIfNotSet(()=>{this.visible&&this.ui.progressBar.infinite()},800)),!this.busy&&this.busyDelay&&(this.ui.progressBar.stop(),this.busyDelay.cancel(),this.busyDelay=void 0),this.buttonsUpdated){this.buttonsUpdated=!1,this.ui.leftActionBar.clear();const w=this.buttons.filter(I=>I===e.backButton);this.ui.leftActionBar.push(w.map((I,M)=>{const P=new D.Action(`id-${M}`,\"\",I.iconClass||(0,h.getIconClass)(I.iconPath),!0,()=>we(this,void 0,void 0,function*(){this.onDidTriggerButtonEmitter.fire(I)}));return P.tooltip=I.tooltip||\"\",P}),{icon:!0,label:!1}),this.ui.rightActionBar.clear();const E=this.buttons.filter(I=>I!==e.backButton);this.ui.rightActionBar.push(E.map((I,M)=>{const P=new D.Action(`id-${M}`,\"\",I.iconClass||(0,h.getIconClass)(I.iconPath),!0,()=>we(this,void 0,void 0,function*(){this.onDidTriggerButtonEmitter.fire(I)}));return P.tooltip=I.tooltip||\"\",P}),{icon:!0,label:!1})}if(this.togglesUpdated){this.togglesUpdated=!1;const w=(p=(l=this.toggles)===null||l===void 0?void 0:l.filter(E=>E instanceof y.Toggle))!==null&&p!==void 0?p:[];this.ui.inputBox.toggles=w}this.ui.ignoreFocusOut=this.ignoreFocusOut,this.ui.setEnabled(this.enabled),this.ui.setContextKey(this.contextKey);const b=this.validationMessage||this.noValidationMessage;this._lastValidationMessage!==b&&(this._lastValidationMessage=b,L.reset(this.ui.message),(0,h.renderQuickInputDescription)(b,this.ui.message,{callback:w=>{this.ui.linkOpenerDelegate(w)},disposables:this.visibleDisposables})),this._lastSeverity!==this.severity&&(this._lastSeverity=this.severity,this.showMessageDecoration(this.severity))}getTitle(){return this.title&&this.step?`${this.title} (${this.getSteps()})`:this.title?this.title:this.step?this.getSteps():\"\"}getDescription(){return this.description||\"\"}getSteps(){return this.step&&this.totalSteps?(0,t.localize)(2,null,this.step,this.totalSteps):this.step?String(this.step):\"\"}showMessageDecoration(l){if(this.ui.inputBox.showDecoration(l),l!==i.default.Ignore){const p=this.ui.inputBox.stylesForType(l);this.ui.message.style.color=p.foreground?`${p.foreground}`:\"\",this.ui.message.style.backgroundColor=p.background?`${p.background}`:\"\",this.ui.message.style.border=p.border?`1px solid ${p.border}`:\"\",this.ui.message.style.marginBottom=\"-2px\"}else this.ui.message.style.color=\"\",this.ui.message.style.backgroundColor=\"\",this.ui.message.style.border=\"\",this.ui.message.style.marginBottom=\"\"}dispose(){this.hide(),this.onDisposeEmitter.fire(),super.dispose()}}r.noPromptMessage=(0,t.localize)(1,null);class c extends r{constructor(){super(...arguments),this._value=\"\",this.onDidChangeValueEmitter=this._register(new g.Emitter),this.onWillAcceptEmitter=this._register(new g.Emitter),this.onDidAcceptEmitter=this._register(new g.Emitter),this.onDidCustomEmitter=this._register(new g.Emitter),this._items=[],this.itemsUpdated=!1,this._canSelectMany=!1,this._canAcceptInBackground=!1,this._matchOnDescription=!1,this._matchOnDetail=!1,this._matchOnLabel=!0,this._matchOnLabelMode=\"fuzzy\",this._sortByLabel=!0,this._autoFocusOnList=!0,this._keepScrollPosition=!1,this._itemActivation=a.ItemActivation.FIRST,this._activeItems=[],this.activeItemsUpdated=!1,this.activeItemsToConfirm=[],this.onDidChangeActiveEmitter=this._register(new g.Emitter),this._selectedItems=[],this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=[],this.onDidChangeSelectionEmitter=this._register(new g.Emitter),this.onDidTriggerItemButtonEmitter=this._register(new g.Emitter),this.onDidTriggerSeparatorButtonEmitter=this._register(new g.Emitter),this.valueSelectionUpdated=!0,this._ok=\"default\",this._customButton=!1,this.filterValue=l=>l,this.onDidChangeValue=this.onDidChangeValueEmitter.event,this.onWillAccept=this.onWillAcceptEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event,this.onDidChangeActive=this.onDidChangeActiveEmitter.event,this.onDidChangeSelection=this.onDidChangeSelectionEmitter.event,this.onDidTriggerItemButton=this.onDidTriggerItemButtonEmitter.event,this.onDidTriggerSeparatorButton=this.onDidTriggerSeparatorButtonEmitter.event}get quickNavigate(){return this._quickNavigate}set quickNavigate(l){this._quickNavigate=l,this.update()}get value(){return this._value}set value(l){this.doSetValue(l)}doSetValue(l,p){this._value!==l&&(this._value=l,p||this.update(),this.visible&&this.ui.list.filter(this.filterValue(this._value))&&this.trySelectFirst(),this.onDidChangeValueEmitter.fire(this._value))}set ariaLabel(l){this._ariaLabel=l,this.update()}get ariaLabel(){return this._ariaLabel}get placeholder(){return this._placeholder}set placeholder(l){this._placeholder=l,this.update()}get items(){return this._items}get scrollTop(){return this.ui.list.scrollTop}set scrollTop(l){this.ui.list.scrollTop=l}set items(l){this._items=l,this.itemsUpdated=!0,this.update()}get canSelectMany(){return this._canSelectMany}set canSelectMany(l){this._canSelectMany=l,this.update()}get canAcceptInBackground(){return this._canAcceptInBackground}set canAcceptInBackground(l){this._canAcceptInBackground=l}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(l){this._matchOnDescription=l,this.update()}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(l){this._matchOnDetail=l,this.update()}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(l){this._matchOnLabel=l,this.update()}get matchOnLabelMode(){return this._matchOnLabelMode}set matchOnLabelMode(l){this._matchOnLabelMode=l,this.update()}get sortByLabel(){return this._sortByLabel}set sortByLabel(l){this._sortByLabel=l,this.update()}get autoFocusOnList(){return this._autoFocusOnList}set autoFocusOnList(l){this._autoFocusOnList=l,this.update()}get keepScrollPosition(){return this._keepScrollPosition}set keepScrollPosition(l){this._keepScrollPosition=l}get itemActivation(){return this._itemActivation}set itemActivation(l){this._itemActivation=l}get activeItems(){return this._activeItems}set activeItems(l){this._activeItems=l,this.activeItemsUpdated=!0,this.update()}get selectedItems(){return this._selectedItems}set selectedItems(l){this._selectedItems=l,this.selectedItemsUpdated=!0,this.update()}get keyMods(){return this._quickNavigate?a.NO_KEY_MODS:this.ui.keyMods}set valueSelection(l){this._valueSelection=l,this.valueSelectionUpdated=!0,this.update()}get customButton(){return this._customButton}set customButton(l){this._customButton=l,this.update()}get customLabel(){return this._customButtonLabel}set customLabel(l){this._customButtonLabel=l,this.update()}get customHover(){return this._customButtonHover}set customHover(l){this._customButtonHover=l,this.update()}get ok(){return this._ok}set ok(l){this._ok=l,this.update()}get hideInput(){return!!this._hideInput}set hideInput(l){this._hideInput=l,this.update()}trySelectFirst(){this.autoFocusOnList&&(this.canSelectMany||this.ui.list.focus(u.QuickInputListFocus.First))}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(l=>{this.doSetValue(l,!0)})),this.visibleDisposables.add(this.ui.inputBox.onMouseDown(l=>{this.autoFocusOnList||this.ui.list.clearFocus()})),this.visibleDisposables.add((this._hideInput?this.ui.list:this.ui.inputBox).onKeyDown(l=>{switch(l.keyCode){case 18:this.ui.list.focus(u.QuickInputListFocus.Next),this.canSelectMany&&this.ui.list.domFocus(),L.EventHelper.stop(l,!0);break;case 16:this.ui.list.getFocusedElements().length?this.ui.list.focus(u.QuickInputListFocus.Previous):this.ui.list.focus(u.QuickInputListFocus.Last),this.canSelectMany&&this.ui.list.domFocus(),L.EventHelper.stop(l,!0);break;case 12:this.ui.list.focus(u.QuickInputListFocus.NextPage),this.canSelectMany&&this.ui.list.domFocus(),L.EventHelper.stop(l,!0);break;case 11:this.ui.list.focus(u.QuickInputListFocus.PreviousPage),this.canSelectMany&&this.ui.list.domFocus(),L.EventHelper.stop(l,!0);break;case 17:if(!this._canAcceptInBackground||!this.ui.inputBox.isSelectionAtEnd())return;this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(!0));break;case 14:(l.ctrlKey||l.metaKey)&&!l.shiftKey&&!l.altKey&&(this.ui.list.focus(u.QuickInputListFocus.First),L.EventHelper.stop(l,!0));break;case 13:(l.ctrlKey||l.metaKey)&&!l.shiftKey&&!l.altKey&&(this.ui.list.focus(u.QuickInputListFocus.Last),L.EventHelper.stop(l,!0));break}})),this.visibleDisposables.add(this.ui.onDidAccept(()=>{this.canSelectMany?this.ui.list.getCheckedElements().length||(this._selectedItems=[],this.onDidChangeSelectionEmitter.fire(this.selectedItems)):this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems)),this.handleAccept(!1)})),this.visibleDisposables.add(this.ui.onDidCustom(()=>{this.onDidCustomEmitter.fire()})),this.visibleDisposables.add(this.ui.list.onDidChangeFocus(l=>{this.activeItemsUpdated||this.activeItemsToConfirm!==this._activeItems&&(0,S.equals)(l,this._activeItems,(p,m)=>p===m)||(this._activeItems=l,this.onDidChangeActiveEmitter.fire(l))})),this.visibleDisposables.add(this.ui.list.onDidChangeSelection(({items:l,event:p})=>{if(this.canSelectMany){l.length&&this.ui.list.setSelectedElements([]);return}this.selectedItemsToConfirm!==this._selectedItems&&(0,S.equals)(l,this._selectedItems,(m,v)=>m===v)||(this._selectedItems=l,this.onDidChangeSelectionEmitter.fire(l),l.length&&this.handleAccept(p instanceof MouseEvent&&p.button===1))})),this.visibleDisposables.add(this.ui.list.onChangedCheckedElements(l=>{this.canSelectMany&&(this.selectedItemsToConfirm!==this._selectedItems&&(0,S.equals)(l,this._selectedItems,(p,m)=>p===m)||(this._selectedItems=l,this.onDidChangeSelectionEmitter.fire(l)))})),this.visibleDisposables.add(this.ui.list.onButtonTriggered(l=>this.onDidTriggerItemButtonEmitter.fire(l))),this.visibleDisposables.add(this.ui.list.onSeparatorButtonTriggered(l=>this.onDidTriggerSeparatorButtonEmitter.fire(l))),this.visibleDisposables.add(this.registerQuickNavigation()),this.valueSelectionUpdated=!0),super.show()}handleAccept(l){let p=!1;this.onWillAcceptEmitter.fire({veto:()=>p=!0}),p||this.onDidAcceptEmitter.fire({inBackground:l})}registerQuickNavigation(){return L.addDisposableListener(this.ui.container,L.EventType.KEY_UP,l=>{if(this.canSelectMany||!this._quickNavigate)return;const p=new k.StandardKeyboardEvent(l),m=p.keyCode;this._quickNavigate.keybindings.some(w=>{const E=w.getChords();return E.length>1?!1:E[0].shiftKey&&m===4?!(p.ctrlKey||p.altKey||p.metaKey):!!(E[0].altKey&&m===6||E[0].ctrlKey&&m===5||E[0].metaKey&&m===57)})&&(this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(!1)),this._quickNavigate=void 0)})}update(){if(!this.visible)return;const l=this.keepScrollPosition?this.scrollTop:0,p=!!this.description,m={title:!!this.title||!!this.step||!!this.buttons.length,description:p,checkAll:this.canSelectMany&&!this._hideCheckAll,checkBox:this.canSelectMany,inputBox:!this._hideInput,progressBar:!this._hideInput||p,visibleCount:!0,count:this.canSelectMany&&!this._hideCountBadge,ok:this.ok===\"default\"?this.canSelectMany:this.ok,list:!0,message:!!this.validationMessage,customButton:this.customButton};this.ui.setVisibilities(m),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||\"\")&&(this.ui.inputBox.placeholder=this.placeholder||\"\");let v=this.ariaLabel;if(!v&&m.inputBox&&(v=this.placeholder||c.DEFAULT_ARIA_LABEL,this.title&&(v+=` - ${this.title}`)),this.ui.list.ariaLabel!==v&&(this.ui.list.ariaLabel=v??null),this.ui.list.matchOnDescription=this.matchOnDescription,this.ui.list.matchOnDetail=this.matchOnDetail,this.ui.list.matchOnLabel=this.matchOnLabel,this.ui.list.matchOnLabelMode=this.matchOnLabelMode,this.ui.list.sortByLabel=this.sortByLabel,this.itemsUpdated)switch(this.itemsUpdated=!1,this.ui.list.setElements(this.items),this.ui.list.filter(this.filterValue(this.ui.inputBox.value)),this.ui.checkAll.checked=this.ui.list.getAllVisibleChecked(),this.ui.visibleCount.setCount(this.ui.list.getVisibleCount()),this.ui.count.setCount(this.ui.list.getCheckedCount()),this._itemActivation){case a.ItemActivation.NONE:this._itemActivation=a.ItemActivation.FIRST;break;case a.ItemActivation.SECOND:this.ui.list.focus(u.QuickInputListFocus.Second),this._itemActivation=a.ItemActivation.FIRST;break;case a.ItemActivation.LAST:this.ui.list.focus(u.QuickInputListFocus.Last),this._itemActivation=a.ItemActivation.FIRST;break;default:this.trySelectFirst();break}this.ui.container.classList.contains(\"show-checkboxes\")!==!!this.canSelectMany&&(this.canSelectMany?this.ui.list.clearFocus():this.trySelectFirst()),this.activeItemsUpdated&&(this.activeItemsUpdated=!1,this.activeItemsToConfirm=this._activeItems,this.ui.list.setFocusedElements(this.activeItems),this.activeItemsToConfirm===this._activeItems&&(this.activeItemsToConfirm=null)),this.selectedItemsUpdated&&(this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=this._selectedItems,this.canSelectMany?this.ui.list.setCheckedElements(this.selectedItems):this.ui.list.setSelectedElements(this.selectedItems),this.selectedItemsToConfirm===this._selectedItems&&(this.selectedItemsToConfirm=null)),this.ui.customButton.label=this.customLabel||\"\",this.ui.customButton.element.title=this.customHover||\"\",m.inputBox||(this.ui.list.domFocus(),this.canSelectMany&&this.ui.list.focus(u.QuickInputListFocus.First)),this.keepScrollPosition&&(this.scrollTop=l)}}e.QuickPick=c,c.DEFAULT_ARIA_LABEL=(0,t.localize)(3,null);class o extends r{constructor(){super(...arguments),this._value=\"\",this.valueSelectionUpdated=!0,this._password=!1,this.onDidValueChangeEmitter=this._register(new g.Emitter),this.onDidAcceptEmitter=this._register(new g.Emitter),this.onDidChangeValue=this.onDidValueChangeEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event}get value(){return this._value}set value(l){this._value=l||\"\",this.update()}get placeholder(){return this._placeholder}set placeholder(l){this._placeholder=l,this.update()}get password(){return this._password}set password(l){this._password=l,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(l=>{l!==this.value&&(this._value=l,this.onDidValueChangeEmitter.fire(l))})),this.visibleDisposables.add(this.ui.onDidAccept(()=>this.onDidAcceptEmitter.fire())),this.valueSelectionUpdated=!0),super.show()}update(){if(!this.visible)return;this.ui.container.classList.remove(\"hidden-input\");const l={title:!!this.title||!!this.step||!!this.buttons.length,description:!!this.description||!!this.step,inputBox:!0,message:!0,progressBar:!0};this.ui.setVisibilities(l),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||\"\")&&(this.ui.inputBox.placeholder=this.placeholder||\"\"),this.ui.inputBox.password!==this.password&&(this.ui.inputBox.password=this.password)}}e.InputBox=o}),define(ne[840],se([1,0,7,68,313,307,574,19,6,2,101,733,71,772,356,839]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.QuickInputController=void 0;const u=L.$;class h extends g.Disposable{constructor(c,o){super(),this.options=c,this.themeService=o,this.enabled=!0,this.onDidAcceptEmitter=this._register(new _.Emitter),this.onDidCustomEmitter=this._register(new _.Emitter),this.onDidTriggerButtonEmitter=this._register(new _.Emitter),this.keyMods={ctrlCmd:!1,alt:!1},this.controller=null,this.onShowEmitter=this._register(new _.Emitter),this.onShow=this.onShowEmitter.event,this.onHideEmitter=this._register(new _.Emitter),this.onHide=this.onHideEmitter.event,this.idPrefix=c.idPrefix,this.parentElement=c.container,this.styles=c.styles,this.registerKeyModsListeners()}registerKeyModsListeners(){const c=o=>{this.keyMods.ctrlCmd=o.ctrlKey||o.metaKey,this.keyMods.alt=o.altKey};this._register(L.addDisposableListener(window,L.EventType.KEY_DOWN,c,!0)),this._register(L.addDisposableListener(window,L.EventType.KEY_UP,c,!0)),this._register(L.addDisposableListener(window,L.EventType.MOUSE_DOWN,c,!0))}getUI(){if(this.ui)return this.ui;const c=L.append(this.parentElement,u(\".quick-input-widget.show-file-icons\"));c.tabIndex=-1,c.style.display=\"none\";const o=L.createStyleSheet(c),d=L.append(c,u(\".quick-input-titlebar\")),l=this.options.hoverDelegate?{hoverDelegate:this.options.hoverDelegate}:void 0,p=this._register(new k.ActionBar(d,l));p.domNode.classList.add(\"quick-input-left-action-bar\");const m=L.append(d,u(\".quick-input-title\")),v=this._register(new k.ActionBar(d,l));v.domNode.classList.add(\"quick-input-right-action-bar\");const b=L.append(c,u(\".quick-input-header\")),w=L.append(b,u(\"input.quick-input-check-all\"));w.type=\"checkbox\",w.setAttribute(\"aria-label\",(0,s.localize)(0,null)),this._register(L.addStandardDisposableListener(w,L.EventType.CHANGE,H=>{const B=w.checked;J.setAllVisibleChecked(B)})),this._register(L.addDisposableListener(w,L.EventType.CLICK,H=>{(H.x||H.y)&&P.setFocus()}));const E=L.append(b,u(\".quick-input-description\")),I=L.append(b,u(\".quick-input-and-message\")),M=L.append(I,u(\".quick-input-filter\")),P=this._register(new n.QuickInputBox(M,this.styles.inputBox,this.styles.toggle));P.setAttribute(\"aria-describedby\",`${this.idPrefix}message`);const x=L.append(M,u(\".quick-input-visible-count\"));x.setAttribute(\"aria-live\",\"polite\"),x.setAttribute(\"aria-atomic\",\"true\");const T=new D.CountBadge(x,{countFormat:(0,s.localize)(1,null)},this.styles.countBadge),A=L.append(M,u(\".quick-input-count\"));A.setAttribute(\"aria-live\",\"polite\");const N=new D.CountBadge(A,{countFormat:(0,s.localize)(2,null)},this.styles.countBadge),F=L.append(b,u(\".quick-input-action\")),O=new y.Button(F,this.styles.button);O.label=(0,s.localize)(3,null),this._register(O.onDidClick(H=>{this.onDidAcceptEmitter.fire()}));const W=L.append(b,u(\".quick-input-action\")),U=new y.Button(W,this.styles.button);U.label=(0,s.localize)(4,null),this._register(U.onDidClick(H=>{this.onDidCustomEmitter.fire()}));const j=L.append(I,u(`#${this.idPrefix}message.quick-input-message`)),R=new S.ProgressBar(c,this.styles.progressBar);R.getContainer().classList.add(\"quick-input-progress\");const K=L.append(c,u(\".quick-input-html-widget\"));K.tabIndex=-1;const G=L.append(c,u(\".quick-input-description\")),Z=this.idPrefix+\"list\",J=this._register(new t.QuickInputList(c,Z,this.options,this.themeService));P.setAttribute(\"aria-controls\",Z),this._register(J.onDidChangeFocus(()=>{var H;P.setAttribute(\"aria-activedescendant\",(H=J.getActiveDescendant())!==null&&H!==void 0?H:\"\")})),this._register(J.onChangedAllVisibleChecked(H=>{w.checked=H})),this._register(J.onChangedVisibleCount(H=>{T.setCount(H)})),this._register(J.onChangedCheckedCount(H=>{N.setCount(H)})),this._register(J.onLeave(()=>{setTimeout(()=>{P.setFocus(),this.controller instanceof a.QuickPick&&this.controller.canSelectMany&&J.clearFocus()},0)}));const X=L.trackFocus(c);return this._register(X),this._register(L.addDisposableListener(c,L.EventType.FOCUS,H=>{L.isAncestor(H.relatedTarget,c)||(this.previousFocusElement=H.relatedTarget instanceof HTMLElement?H.relatedTarget:void 0)},!0)),this._register(X.onDidBlur(()=>{!this.getUI().ignoreFocusOut&&!this.options.ignoreFocusOut()&&this.hide(i.QuickInputHideReason.Blur),this.previousFocusElement=void 0})),this._register(L.addDisposableListener(c,L.EventType.FOCUS,H=>{P.setFocus()})),this._register(L.addStandardDisposableListener(c,L.EventType.KEY_DOWN,H=>{if(!L.isAncestor(H.target,K))switch(H.keyCode){case 3:L.EventHelper.stop(H,!0),this.enabled&&this.onDidAcceptEmitter.fire();break;case 9:L.EventHelper.stop(H,!0),this.hide(i.QuickInputHideReason.Gesture);break;case 2:if(!H.altKey&&!H.ctrlKey&&!H.metaKey){const B=[\".quick-input-list .monaco-action-bar .always-visible\",\".quick-input-list-entry:hover .monaco-action-bar\",\".monaco-list-row.focused .monaco-action-bar\"];if(c.classList.contains(\"show-checkboxes\")?B.push(\"input\"):B.push(\"input[type=text]\"),this.getUI().list.isDisplayed()&&B.push(\".monaco-list\"),this.getUI().message&&B.push(\".quick-input-message a\"),this.getUI().widget){if(L.isAncestor(H.target,this.getUI().widget))break;B.push(\".quick-input-html-widget\")}const V=c.querySelectorAll(B.join(\", \"));H.shiftKey&&H.target===V[0]?(L.EventHelper.stop(H,!0),J.clearFocus()):!H.shiftKey&&L.isAncestor(H.target,V[V.length-1])&&(L.EventHelper.stop(H,!0),V[0].focus())}break;case 10:H.ctrlKey&&(L.EventHelper.stop(H,!0),this.getUI().list.toggleHover());break}})),this.ui={container:c,styleSheet:o,leftActionBar:p,titleBar:d,title:m,description1:G,description2:E,widget:K,rightActionBar:v,checkAll:w,inputContainer:I,filterContainer:M,inputBox:P,visibleCountContainer:x,visibleCount:T,countContainer:A,count:N,okContainer:F,ok:O,message:j,customButtonContainer:W,customButton:U,list:J,progressBar:R,onDidAccept:this.onDidAcceptEmitter.event,onDidCustom:this.onDidCustomEmitter.event,onDidTriggerButton:this.onDidTriggerButtonEmitter.event,ignoreFocusOut:!1,keyMods:this.keyMods,show:H=>this.show(H),hide:()=>this.hide(),setVisibilities:H=>this.setVisibilities(H),setEnabled:H=>this.setEnabled(H),setContextKey:H=>this.options.setContextKey(H),linkOpenerDelegate:H=>this.options.linkOpenerDelegate(H)},this.updateStyles(),this.ui}pick(c,o={},d=f.CancellationToken.None){return new Promise((l,p)=>{let m=E=>{var I;m=l,(I=o.onKeyMods)===null||I===void 0||I.call(o,v.keyMods),l(E)};if(d.isCancellationRequested){m(void 0);return}const v=this.createQuickPick();let b;const w=[v,v.onDidAccept(()=>{if(v.canSelectMany)m(v.selectedItems.slice()),v.hide();else{const E=v.activeItems[0];E&&(m(E),v.hide())}}),v.onDidChangeActive(E=>{const I=E[0];I&&o.onDidFocus&&o.onDidFocus(I)}),v.onDidChangeSelection(E=>{if(!v.canSelectMany){const I=E[0];I&&(m(I),v.hide())}}),v.onDidTriggerItemButton(E=>o.onDidTriggerItemButton&&o.onDidTriggerItemButton(Object.assign(Object.assign({},E),{removeItem:()=>{const I=v.items.indexOf(E.item);if(I!==-1){const M=v.items.slice(),P=M.splice(I,1),x=v.activeItems.filter(A=>A!==P[0]),T=v.keepScrollPosition;v.keepScrollPosition=!0,v.items=M,x&&(v.activeItems=x),v.keepScrollPosition=T}}}))),v.onDidTriggerSeparatorButton(E=>{var I;return(I=o.onDidTriggerSeparatorButton)===null||I===void 0?void 0:I.call(o,E)}),v.onDidChangeValue(E=>{b&&!E&&(v.activeItems.length!==1||v.activeItems[0]!==b)&&(v.activeItems=[b])}),d.onCancellationRequested(()=>{v.hide()}),v.onDidHide(()=>{(0,g.dispose)(w),m(void 0)})];v.title=o.title,v.canSelectMany=!!o.canPickMany,v.placeholder=o.placeHolder,v.ignoreFocusOut=!!o.ignoreFocusLost,v.matchOnDescription=!!o.matchOnDescription,v.matchOnDetail=!!o.matchOnDetail,v.matchOnLabel=o.matchOnLabel===void 0||o.matchOnLabel,v.autoFocusOnList=o.autoFocusOnList===void 0||o.autoFocusOnList,v.quickNavigate=o.quickNavigate,v.hideInput=!!o.hideInput,v.contextKey=o.contextKey,v.busy=!0,Promise.all([c,o.activeItem]).then(([E,I])=>{b=I,v.busy=!1,v.items=E,v.canSelectMany&&(v.selectedItems=E.filter(M=>M.type!==\"separator\"&&M.picked)),b&&(v.activeItems=[b])}),v.show(),Promise.resolve(c).then(void 0,E=>{p(E),v.hide()})})}createQuickPick(){const c=this.getUI();return new a.QuickPick(c)}createInputBox(){const c=this.getUI();return new a.InputBox(c)}show(c){const o=this.getUI();this.onShowEmitter.fire();const d=this.controller;this.controller=c,d?.didHide(),this.setEnabled(!0),o.leftActionBar.clear(),o.title.textContent=\"\",o.description1.textContent=\"\",o.description2.textContent=\"\",L.reset(o.widget),o.rightActionBar.clear(),o.checkAll.checked=!1,o.inputBox.placeholder=\"\",o.inputBox.password=!1,o.inputBox.showDecoration(C.default.Ignore),o.visibleCount.setCount(0),o.count.setCount(0),L.reset(o.message),o.progressBar.stop(),o.list.setElements([]),o.list.matchOnDescription=!1,o.list.matchOnDetail=!1,o.list.matchOnLabel=!0,o.list.sortByLabel=!0,o.ignoreFocusOut=!1,o.inputBox.toggles=void 0;const l=this.options.backKeybindingLabel();a.backButton.tooltip=l?(0,s.localize)(5,null,l):(0,s.localize)(6,null),o.container.style.display=\"\",this.updateLayout(),o.inputBox.setFocus()}setVisibilities(c){const o=this.getUI();o.title.style.display=c.title?\"\":\"none\",o.description1.style.display=c.description&&(c.inputBox||c.checkAll)?\"\":\"none\",o.description2.style.display=c.description&&!(c.inputBox||c.checkAll)?\"\":\"none\",o.checkAll.style.display=c.checkAll?\"\":\"none\",o.inputContainer.style.display=c.inputBox?\"\":\"none\",o.filterContainer.style.display=c.inputBox?\"\":\"none\",o.visibleCountContainer.style.display=c.visibleCount?\"\":\"none\",o.countContainer.style.display=c.count?\"\":\"none\",o.okContainer.style.display=c.ok?\"\":\"none\",o.customButtonContainer.style.display=c.customButton?\"\":\"none\",o.message.style.display=c.message?\"\":\"none\",o.progressBar.getContainer().style.display=c.progressBar?\"\":\"none\",o.list.display(!!c.list),o.container.classList.toggle(\"show-checkboxes\",!!c.checkBox),o.container.classList.toggle(\"hidden-input\",!c.inputBox&&!c.description),this.updateLayout()}setEnabled(c){if(c!==this.enabled){this.enabled=c;for(const o of this.getUI().leftActionBar.viewItems)o.action.enabled=c;for(const o of this.getUI().rightActionBar.viewItems)o.action.enabled=c;this.getUI().checkAll.disabled=!c,this.getUI().inputBox.enabled=c,this.getUI().ok.enabled=c,this.getUI().list.enabled=c}}hide(c){var o,d,l;const p=this.controller;if(!p)return;const m=!L.isAncestor(document.activeElement,(d=(o=this.ui)===null||o===void 0?void 0:o.container)!==null&&d!==void 0?d:null);if(this.controller=null,this.onHideEmitter.fire(),this.getUI().container.style.display=\"none\",!m){let v=this.previousFocusElement;for(;v&&!v.offsetParent;)v=(l=v.parentElement)!==null&&l!==void 0?l:void 0;v?.offsetParent?(v.focus(),this.previousFocusElement=void 0):this.options.returnFocus()}p.didHide(c)}layout(c,o){this.dimension=c,this.titleBarOffset=o,this.updateLayout()}updateLayout(){if(this.ui&&this.isDisplayed()){this.ui.container.style.top=`${this.titleBarOffset}px`;const c=this.ui.container.style,o=Math.min(this.dimension.width*.62,h.MAX_WIDTH);c.width=o+\"px\",c.marginLeft=\"-\"+o/2+\"px\",this.ui.inputBox.layout(),this.ui.list.layout(this.dimension&&this.dimension.height*.4)}}applyStyles(c){this.styles=c,this.updateStyles()}updateStyles(){if(this.ui){const{quickInputTitleBackground:c,quickInputBackground:o,quickInputForeground:d,widgetBorder:l,widgetShadow:p}=this.styles.widget;this.ui.titleBar.style.backgroundColor=c??\"\",this.ui.container.style.backgroundColor=o??\"\",this.ui.container.style.color=d??\"\",this.ui.container.style.border=l?`1px solid ${l}`:\"\",this.ui.container.style.boxShadow=p?`0 0 8px 2px ${p}`:\"\",this.ui.list.style(this.styles.list);const m=[];this.styles.pickerGroup.pickerGroupBorder&&m.push(`.quick-input-list .quick-input-list-entry { border-top-color:  ${this.styles.pickerGroup.pickerGroupBorder}; }`),this.styles.pickerGroup.pickerGroupForeground&&m.push(`.quick-input-list .quick-input-list-separator { color:  ${this.styles.pickerGroup.pickerGroupForeground}; }`),this.styles.pickerGroup.pickerGroupForeground&&m.push(\".quick-input-list .quick-input-list-separator-as-item { color: var(--vscode-descriptionForeground); }\"),(this.styles.keybindingLabel.keybindingLabelBackground||this.styles.keybindingLabel.keybindingLabelBorder||this.styles.keybindingLabel.keybindingLabelBottomBorder||this.styles.keybindingLabel.keybindingLabelShadow||this.styles.keybindingLabel.keybindingLabelForeground)&&(m.push(\".quick-input-list .monaco-keybinding > .monaco-keybinding-key {\"),this.styles.keybindingLabel.keybindingLabelBackground&&m.push(`background-color: ${this.styles.keybindingLabel.keybindingLabelBackground};`),this.styles.keybindingLabel.keybindingLabelBorder&&m.push(`border-color: ${this.styles.keybindingLabel.keybindingLabelBorder};`),this.styles.keybindingLabel.keybindingLabelBottomBorder&&m.push(`border-bottom-color: ${this.styles.keybindingLabel.keybindingLabelBottomBorder};`),this.styles.keybindingLabel.keybindingLabelShadow&&m.push(`box-shadow: inset 0 -1px 0 ${this.styles.keybindingLabel.keybindingLabelShadow};`),this.styles.keybindingLabel.keybindingLabelForeground&&m.push(`color: ${this.styles.keybindingLabel.keybindingLabelForeground};`),m.push(\"}\"));const v=m.join(`\n`);v!==this.ui.styleSheet.textContent&&(this.ui.styleSheet.textContent=v)}}isDisplayed(){return this.ui&&this.ui.container.style.display!==\"none\"}}e.QuickInputController=h,h.MAX_WIDTH=600}),define(ne[23],se([1,0,6,2,8,37,88]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Themable=e.registerThemingParticipant=e.Extensions=e.getThemeTypeSelector=e.themeColorFromId=e.IThemeService=void 0,e.IThemeService=(0,y.createDecorator)(\"themeService\");function f(n){return{id:n}}e.themeColorFromId=f;function _(n){switch(n){case S.ColorScheme.DARK:return\"vs-dark\";case S.ColorScheme.HIGH_CONTRAST_DARK:return\"hc-black\";case S.ColorScheme.HIGH_CONTRAST_LIGHT:return\"hc-light\";default:return\"vs\"}}e.getThemeTypeSelector=_,e.Extensions={ThemingContribution:\"base.contributions.theming\"};class g{constructor(){this.themingParticipants=[],this.themingParticipants=[],this.onThemingParticipantAddedEmitter=new L.Emitter}onColorThemeChange(t){return this.themingParticipants.push(t),this.onThemingParticipantAddedEmitter.fire(t),(0,k.toDisposable)(()=>{const a=this.themingParticipants.indexOf(t);this.themingParticipants.splice(a,1)})}getThemingParticipants(){return this.themingParticipants}}const C=new g;D.Registry.add(e.Extensions.ThemingContribution,C);function s(n){return C.onColorThemeChange(n)}e.registerThemingParticipant=s;class i extends k.Disposable{constructor(t){super(),this.themeService=t,this.theme=t.getColorTheme(),this._register(this.themeService.onDidColorThemeChange(a=>this.onThemeChange(a)))}onThemeChange(t){this.theme=t,this.updateStyles()}updateStyles(){}}e.Themable=i}),define(ne[841],se([1,0,6,2,64,23]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.GlobalStyleSheet=e.AbstractCodeEditorService=void 0;let S=class extends k.Disposable{constructor(g){super(),this._themeService=g,this._onWillCreateCodeEditor=this._register(new L.Emitter),this._onCodeEditorAdd=this._register(new L.Emitter),this.onCodeEditorAdd=this._onCodeEditorAdd.event,this._onCodeEditorRemove=this._register(new L.Emitter),this.onCodeEditorRemove=this._onCodeEditorRemove.event,this._onWillCreateDiffEditor=this._register(new L.Emitter),this._onDiffEditorAdd=this._register(new L.Emitter),this.onDiffEditorAdd=this._onDiffEditorAdd.event,this._onDiffEditorRemove=this._register(new L.Emitter),this.onDiffEditorRemove=this._onDiffEditorRemove.event,this._decorationOptionProviders=new Map,this._codeEditorOpenHandlers=new y.LinkedList,this._modelProperties=new Map,this._codeEditors=Object.create(null),this._diffEditors=Object.create(null),this._globalStyleSheet=null}willCreateCodeEditor(){this._onWillCreateCodeEditor.fire()}addCodeEditor(g){this._codeEditors[g.getId()]=g,this._onCodeEditorAdd.fire(g)}removeCodeEditor(g){delete this._codeEditors[g.getId()]&&this._onCodeEditorRemove.fire(g)}listCodeEditors(){return Object.keys(this._codeEditors).map(g=>this._codeEditors[g])}willCreateDiffEditor(){this._onWillCreateDiffEditor.fire()}addDiffEditor(g){this._diffEditors[g.getId()]=g,this._onDiffEditorAdd.fire(g)}removeDiffEditor(g){delete this._diffEditors[g.getId()]&&this._onDiffEditorRemove.fire(g)}listDiffEditors(){return Object.keys(this._diffEditors).map(g=>this._diffEditors[g])}getFocusedCodeEditor(){let g=null;const C=this.listCodeEditors();for(const s of C){if(s.hasTextFocus())return s;s.hasWidgetFocus()&&(g=s)}return g}removeDecorationType(g){const C=this._decorationOptionProviders.get(g);C&&(C.refCount--,C.refCount<=0&&(this._decorationOptionProviders.delete(g),C.dispose(),this.listCodeEditors().forEach(s=>s.removeDecorationsByType(g))))}setModelProperty(g,C,s){const i=g.toString();let n;this._modelProperties.has(i)?n=this._modelProperties.get(i):(n=new Map,this._modelProperties.set(i,n)),n.set(C,s)}getModelProperty(g,C){const s=g.toString();if(this._modelProperties.has(s))return this._modelProperties.get(s).get(C)}openCodeEditor(g,C,s){return we(this,void 0,void 0,function*(){for(const i of this._codeEditorOpenHandlers){const n=yield i(g,C,s);if(n!==null)return n}return null})}registerCodeEditorOpenHandler(g){const C=this._codeEditorOpenHandlers.unshift(g);return(0,k.toDisposable)(C)}};e.AbstractCodeEditorService=S,e.AbstractCodeEditorService=S=ke([fe(0,D.IThemeService)],S);class f{constructor(g){this._styleSheet=g}}e.GlobalStyleSheet=f}),define(ne[842],se([1,0,7,35,75,53,23]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditorScrollbar=void 0;class f extends D.ViewPart{constructor(g,C,s,i){super(g);const n=this._context.configuration.options,t=n.get(101),a=n.get(73),u=n.get(39),h=n.get(104),r={listenOnDomNode:s.domNode,className:\"editor-scrollable \"+(0,S.getThemeTypeSelector)(g.theme.type),useShadows:!1,lazyRender:!0,vertical:t.vertical,horizontal:t.horizontal,verticalHasArrows:t.verticalHasArrows,horizontalHasArrows:t.horizontalHasArrows,verticalScrollbarSize:t.verticalScrollbarSize,verticalSliderSize:t.verticalSliderSize,horizontalScrollbarSize:t.horizontalScrollbarSize,horizontalSliderSize:t.horizontalSliderSize,handleMouseWheel:t.handleMouseWheel,alwaysConsumeMouseWheel:t.alwaysConsumeMouseWheel,arrowSize:t.arrowSize,mouseWheelScrollSensitivity:a,fastScrollSensitivity:u,scrollPredominantAxis:h,scrollByPage:t.scrollByPage};this.scrollbar=this._register(new y.SmoothScrollableElement(C.domNode,r,this._context.viewLayout.getScrollable())),D.PartFingerprints.write(this.scrollbar.getDomNode(),5),this.scrollbarDomNode=(0,k.createFastDomNode)(this.scrollbar.getDomNode()),this.scrollbarDomNode.setPosition(\"absolute\"),this._setLayout();const c=(o,d,l)=>{const p={};if(d){const m=o.scrollTop;m&&(p.scrollTop=this._context.viewLayout.getCurrentScrollTop()+m,o.scrollTop=0)}if(l){const m=o.scrollLeft;m&&(p.scrollLeft=this._context.viewLayout.getCurrentScrollLeft()+m,o.scrollLeft=0)}this._context.viewModel.viewLayout.setScrollPosition(p,1)};this._register(L.addDisposableListener(s.domNode,\"scroll\",o=>c(s.domNode,!0,!0))),this._register(L.addDisposableListener(C.domNode,\"scroll\",o=>c(C.domNode,!0,!1))),this._register(L.addDisposableListener(i.domNode,\"scroll\",o=>c(i.domNode,!0,!1))),this._register(L.addDisposableListener(this.scrollbarDomNode.domNode,\"scroll\",o=>c(this.scrollbarDomNode.domNode,!0,!1)))}dispose(){super.dispose()}_setLayout(){const g=this._context.configuration.options,C=g.get(142);this.scrollbarDomNode.setLeft(C.contentLeft),g.get(71).side===\"right\"?this.scrollbarDomNode.setWidth(C.contentWidth+C.minimap.minimapWidth):this.scrollbarDomNode.setWidth(C.contentWidth),this.scrollbarDomNode.setHeight(C.height)}getOverviewRulerLayoutInfo(){return this.scrollbar.getOverviewRulerLayoutInfo()}getDomNode(){return this.scrollbarDomNode}delegateVerticalScrollbarPointerDown(g){this.scrollbar.delegateVerticalScrollbarPointerDown(g)}delegateScrollFromMouseWheelEvent(g){this.scrollbar.delegateScrollFromMouseWheelEvent(g)}onConfigurationChanged(g){if(g.hasChanged(101)||g.hasChanged(73)||g.hasChanged(39)){const C=this._context.configuration.options,s=C.get(101),i=C.get(73),n=C.get(39),t=C.get(104),a={vertical:s.vertical,horizontal:s.horizontal,verticalScrollbarSize:s.verticalScrollbarSize,horizontalScrollbarSize:s.horizontalScrollbarSize,scrollByPage:s.scrollByPage,handleMouseWheel:s.handleMouseWheel,mouseWheelScrollSensitivity:i,fastScrollSensitivity:n,scrollPredominantAxis:t};this.scrollbar.updateOptions(a)}return g.hasChanged(142)&&this._setLayout(),!0}onScrollChanged(g){return!0}onThemeChanged(g){return this.scrollbar.updateClassName(\"editor-scrollable \"+(0,S.getThemeTypeSelector)(this._context.theme.type)),!0}prepareRender(g){}render(g){this.scrollbar.renderNow()}}e.EditorScrollbar=f}),define(ne[843],se([1,0,112,31,23,429]),function(Q,e,L,k,y){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SelectionsOverlay=void 0;class D{constructor(i){this.left=i.left,this.width=i.width,this.startStyle=null,this.endStyle=null}}class S{constructor(i,n){this.lineNumber=i,this.ranges=n}}function f(s){return new D(s)}function _(s){return new S(s.lineNumber,s.ranges.map(f))}class g extends L.DynamicViewOverlay{constructor(i){super(),this._previousFrameVisibleRangesWithStyle=[],this._context=i;const n=this._context.configuration.options;this._lineHeight=n.get(65),this._roundedSelection=n.get(99),this._typicalHalfwidthCharacterWidth=n.get(49).typicalHalfwidthCharacterWidth,this._selections=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(i){const n=this._context.configuration.options;return this._lineHeight=n.get(65),this._roundedSelection=n.get(99),this._typicalHalfwidthCharacterWidth=n.get(49).typicalHalfwidthCharacterWidth,!0}onCursorStateChanged(i){return this._selections=i.selections.slice(0),!0}onDecorationsChanged(i){return!0}onFlushed(i){return!0}onLinesChanged(i){return!0}onLinesDeleted(i){return!0}onLinesInserted(i){return!0}onScrollChanged(i){return i.scrollTopChanged}onZonesChanged(i){return!0}_visibleRangesHaveGaps(i){for(let n=0,t=i.length;n<t;n++)if(i[n].ranges.length>1)return!0;return!1}_enrichVisibleRangesWithStyle(i,n,t){const a=this._typicalHalfwidthCharacterWidth/4;let u=null,h=null;if(t&&t.length>0&&n.length>0){const r=n[0].lineNumber;if(r===i.startLineNumber)for(let o=0;!u&&o<t.length;o++)t[o].lineNumber===r&&(u=t[o].ranges[0]);const c=n[n.length-1].lineNumber;if(c===i.endLineNumber)for(let o=t.length-1;!h&&o>=0;o--)t[o].lineNumber===c&&(h=t[o].ranges[0]);u&&!u.startStyle&&(u=null),h&&!h.startStyle&&(h=null)}for(let r=0,c=n.length;r<c;r++){const o=n[r].ranges[0],d=o.left,l=o.left+o.width,p={top:0,bottom:0},m={top:0,bottom:0};if(r>0){const v=n[r-1].ranges[0].left,b=n[r-1].ranges[0].left+n[r-1].ranges[0].width;C(d-v)<a?p.top=2:d>v&&(p.top=1),C(l-b)<a?m.top=2:v<l&&l<b&&(m.top=1)}else u&&(p.top=u.startStyle.top,m.top=u.endStyle.top);if(r+1<c){const v=n[r+1].ranges[0].left,b=n[r+1].ranges[0].left+n[r+1].ranges[0].width;C(d-v)<a?p.bottom=2:v<d&&d<b&&(p.bottom=1),C(l-b)<a?m.bottom=2:l<b&&(m.bottom=1)}else h&&(p.bottom=h.startStyle.bottom,m.bottom=h.endStyle.bottom);o.startStyle=p,o.endStyle=m}}_getVisibleRangesWithStyle(i,n,t){const u=(n.linesVisibleRangesForRange(i,!0)||[]).map(_);return!this._visibleRangesHaveGaps(u)&&this._roundedSelection&&this._enrichVisibleRangesWithStyle(n.visibleRange,u,t),u}_createSelectionPiece(i,n,t,a,u){return'<div class=\"cslr '+t+'\" style=\"top:'+i.toString()+\"px;left:\"+a.toString()+\"px;width:\"+u.toString()+\"px;height:\"+n+'px;\"></div>'}_actualRenderOneSelection(i,n,t,a){if(a.length===0)return;const u=!!a[0].ranges[0].startStyle,h=this._lineHeight.toString(),r=(this._lineHeight-1).toString(),c=a[0].lineNumber,o=a[a.length-1].lineNumber;for(let d=0,l=a.length;d<l;d++){const p=a[d],m=p.lineNumber,v=m-n,b=t&&(m===o||m===c)?r:h,w=t&&m===c?1:0;let E=\"\",I=\"\";for(let M=0,P=p.ranges.length;M<P;M++){const x=p.ranges[M];if(u){const A=x.startStyle,N=x.endStyle;if(A.top===1||A.bottom===1){E+=this._createSelectionPiece(w,b,g.SELECTION_CLASS_NAME,x.left-g.ROUNDED_PIECE_WIDTH,g.ROUNDED_PIECE_WIDTH);let F=g.EDITOR_BACKGROUND_CLASS_NAME;A.top===1&&(F+=\" \"+g.SELECTION_TOP_RIGHT),A.bottom===1&&(F+=\" \"+g.SELECTION_BOTTOM_RIGHT),E+=this._createSelectionPiece(w,b,F,x.left-g.ROUNDED_PIECE_WIDTH,g.ROUNDED_PIECE_WIDTH)}if(N.top===1||N.bottom===1){E+=this._createSelectionPiece(w,b,g.SELECTION_CLASS_NAME,x.left+x.width,g.ROUNDED_PIECE_WIDTH);let F=g.EDITOR_BACKGROUND_CLASS_NAME;N.top===1&&(F+=\" \"+g.SELECTION_TOP_LEFT),N.bottom===1&&(F+=\" \"+g.SELECTION_BOTTOM_LEFT),E+=this._createSelectionPiece(w,b,F,x.left+x.width,g.ROUNDED_PIECE_WIDTH)}}let T=g.SELECTION_CLASS_NAME;if(u){const A=x.startStyle,N=x.endStyle;A.top===0&&(T+=\" \"+g.SELECTION_TOP_LEFT),A.bottom===0&&(T+=\" \"+g.SELECTION_BOTTOM_LEFT),N.top===0&&(T+=\" \"+g.SELECTION_TOP_RIGHT),N.bottom===0&&(T+=\" \"+g.SELECTION_BOTTOM_RIGHT)}I+=this._createSelectionPiece(w,b,T,x.left,x.width)}i[v][0]+=E,i[v][1]+=I}}prepareRender(i){const n=[],t=i.visibleRange.startLineNumber,a=i.visibleRange.endLineNumber;for(let h=t;h<=a;h++){const r=h-t;n[r]=[\"\",\"\"]}const u=[];for(let h=0,r=this._selections.length;h<r;h++){const c=this._selections[h];if(c.isEmpty()){u[h]=null;continue}const o=this._getVisibleRangesWithStyle(c,i,this._previousFrameVisibleRangesWithStyle[h]);u[h]=o,this._actualRenderOneSelection(n,t,this._selections.length>1,o)}this._previousFrameVisibleRangesWithStyle=u,this._renderResult=n.map(([h,r])=>h+r)}render(i,n){if(!this._renderResult)return\"\";const t=n-i;return t<0||t>=this._renderResult.length?\"\":this._renderResult[t]}}e.SelectionsOverlay=g,g.SELECTION_CLASS_NAME=\"selected-text\",g.SELECTION_TOP_LEFT=\"top-left-radius\",g.SELECTION_BOTTOM_LEFT=\"bottom-left-radius\",g.SELECTION_TOP_RIGHT=\"top-right-radius\",g.SELECTION_BOTTOM_RIGHT=\"bottom-right-radius\",g.EDITOR_BACKGROUND_CLASS_NAME=\"monaco-editor-background\",g.ROUNDED_PIECE_WIDTH=10,(0,y.registerThemingParticipant)((s,i)=>{const n=s.getColor(k.editorSelectionForeground);n&&!n.isTransparent()&&i.addRule(`.monaco-editor .view-line span.inline-selected-text { color: ${n}; }`)});function C(s){return s<0?-s:s}}),define(ne[357],se([1,0,7,35,195,2,42,102,12,212,31,23]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";var i;Object.defineProperty(e,\"__esModule\",{value:!0}),e.OverviewRulerPart=void 0;let n=i=class extends D.Disposable{constructor(a,u,h,r,c,o,d,l){super(),this._editors=a,this._rootElement=u,this._diffModel=h,this._rootWidth=r,this._rootHeight=c,this._modifiedEditorLayoutInfo=o,this._options=d,this._themeService=l;const p=(0,S.observableFromEvent)(this._themeService.onDidColorThemeChange,()=>this._themeService.getColorTheme()),m=(0,S.derived)(w=>{const E=p.read(w),I=E.getColor(C.diffOverviewRulerInserted)||(E.getColor(C.diffInserted)||C.defaultInsertColor).transparent(2),M=E.getColor(C.diffOverviewRulerRemoved)||(E.getColor(C.diffRemoved)||C.defaultRemoveColor).transparent(2);return{insertColor:I,removeColor:M}}),v=(0,S.observableFromEvent)(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),b=(0,S.observableFromEvent)(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollHeight());this._register((0,S.autorunWithStore)((w,E)=>{if(!this._options.renderOverviewRuler.read(w))return;const I=(0,k.createFastDomNode)(document.createElement(\"div\"));I.setClassName(\"diffViewport\"),I.setPosition(\"absolute\");const M=(0,L.h)(\"div.diffOverview\",{style:{position:\"absolute\",top:\"0px\",width:i.ENTIRE_DIFF_OVERVIEW_WIDTH+\"px\"}}).root;E.add((0,f.appendRemoveOnDispose)(M,I.domNode)),E.add((0,L.addStandardDisposableListener)(M,L.EventType.POINTER_DOWN,P=>{this._editors.modified.delegateVerticalScrollbarPointerDown(P)})),E.add((0,L.addDisposableListener)(M,L.EventType.MOUSE_WHEEL,P=>{this._editors.modified.delegateScrollFromMouseWheelEvent(P)},{passive:!1})),E.add((0,f.appendRemoveOnDispose)(this._rootElement,M)),E.add((0,S.autorunWithStore)((P,x)=>{const T=this._diffModel.read(P),A=this._editors.original.createOverviewRuler(\"original diffOverviewRuler\");A&&(x.add(A),x.add((0,f.appendRemoveOnDispose)(M,A.getDomNode())));const N=this._editors.modified.createOverviewRuler(\"modified diffOverviewRuler\");if(N&&(x.add(N),x.add((0,f.appendRemoveOnDispose)(M,N.getDomNode()))),!A||!N)return;const F=(0,S.observableSignalFromEvent)(\"viewZoneChanged\",this._editors.original.onDidChangeViewZones),O=(0,S.observableSignalFromEvent)(\"viewZoneChanged\",this._editors.modified.onDidChangeViewZones),W=(0,S.observableSignalFromEvent)(\"hiddenRangesChanged\",this._editors.original.onDidChangeHiddenAreas),U=(0,S.observableSignalFromEvent)(\"hiddenRangesChanged\",this._editors.modified.onDidChangeHiddenAreas);x.add((0,S.autorun)(j=>{var R;F.read(j),O.read(j),W.read(j),U.read(j);const K=m.read(j),G=(R=T?.diff.read(j))===null||R===void 0?void 0:R.mappings;function Z(H,B,V){const Y=V._getViewModel();return Y?H.filter(ie=>ie.length>0).map(ie=>{const ae=Y.coordinatesConverter.convertModelPositionToViewPosition(new _.Position(ie.startLineNumber,1)),ce=Y.coordinatesConverter.convertModelPositionToViewPosition(new _.Position(ie.endLineNumberExclusive,1)),de=ce.lineNumber-ae.lineNumber;return new g.OverviewRulerZone(ae.lineNumber,ce.lineNumber,de,B.toString())}):[]}const J=Z((G||[]).map(H=>H.lineRangeMapping.originalRange),K.removeColor,this._editors.original),X=Z((G||[]).map(H=>H.lineRangeMapping.modifiedRange),K.insertColor,this._editors.modified);A?.setZones(J),N?.setZones(X)})),x.add((0,S.autorun)(j=>{const R=this._rootHeight.read(j),K=this._rootWidth.read(j),G=this._modifiedEditorLayoutInfo.read(j);if(G){const Z=i.ENTIRE_DIFF_OVERVIEW_WIDTH-2*i.ONE_OVERVIEW_WIDTH;A.setLayout({top:0,height:R,right:Z+i.ONE_OVERVIEW_WIDTH,width:i.ONE_OVERVIEW_WIDTH}),N.setLayout({top:0,height:R,right:0,width:i.ONE_OVERVIEW_WIDTH});const J=v.read(j),X=b.read(j),H=this._editors.modified.getOption(101),B=new y.ScrollbarState(H.verticalHasArrows?H.arrowSize:0,H.verticalScrollbarSize,0,G.height,X,J);I.setTop(B.getSliderPosition()),I.setHeight(B.getSliderSize())}else I.setTop(0),I.setHeight(0);M.style.height=R+\"px\",M.style.left=K-i.ENTIRE_DIFF_OVERVIEW_WIDTH+\"px\",I.setWidth(i.ENTIRE_DIFF_OVERVIEW_WIDTH)}))}))}))}};e.OverviewRulerPart=n,n.ONE_OVERVIEW_WIDTH=15,n.ENTIRE_DIFF_OVERVIEW_WIDTH=i.ONE_OVERVIEW_WIDTH*2,e.OverviewRulerPart=n=i=ke([fe(7,s.IThemeService)],n)}),define(ne[844],se([1,0,6,2,42,357,36,610,8,34]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DiffEditorEditors=void 0;let C=class extends k.Disposable{constructor(i,n,t,a,u,h,r){super(),this.originalEditorElement=i,this.modifiedEditorElement=n,this._options=t,this._createInnerEditor=u,this._instantiationService=h,this._keybindingService=r,this._onDidContentSizeChange=this._register(new L.Emitter),this.original=this._register(this._createLeftHandSideEditor(t.editorOptions.get(),a.originalEditor||{})),this.modified=this._register(this._createRightHandSideEditor(t.editorOptions.get(),a.modifiedEditor||{})),this._register((0,y.autorunHandleChanges)({createEmptyChangeSummary:()=>({}),handleChange:(c,o)=>(c.didChange(t.editorOptions)&&Object.assign(o,c.change.changedOptions),!0)},(c,o)=>{t.editorOptions.read(c),this._options.renderSideBySide.read(c),this.modified.updateOptions(this._adjustOptionsForRightHandSide(c,o)),this.original.updateOptions(this._adjustOptionsForLeftHandSide(c,o))}))}_createLeftHandSideEditor(i,n){const t=this._adjustOptionsForLeftHandSide(void 0,i),a=this._constructInnerEditor(this._instantiationService,this.originalEditorElement,t,n);return a.setContextValue(\"isInDiffLeftEditor\",!0),a}_createRightHandSideEditor(i,n){const t=this._adjustOptionsForRightHandSide(void 0,i),a=this._constructInnerEditor(this._instantiationService,this.modifiedEditorElement,t,n);return a.setContextValue(\"isInDiffRightEditor\",!0),a}_constructInnerEditor(i,n,t,a){const u=this._createInnerEditor(i,n,t,a);return this._register(u.onDidContentSizeChange(h=>{const r=this.original.getContentWidth()+this.modified.getContentWidth()+D.OverviewRulerPart.ENTIRE_DIFF_OVERVIEW_WIDTH,c=Math.max(this.modified.getContentHeight(),this.original.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:c,contentWidth:r,contentHeightChanged:h.contentHeightChanged,contentWidthChanged:h.contentWidthChanged})})),u}_adjustOptionsForLeftHandSide(i,n){const t=this._adjustOptionsForSubEditor(n);return this._options.renderSideBySide.get()?(t.unicodeHighlight=this._options.editorOptions.get().unicodeHighlight||{},t.wordWrapOverride1=this._options.diffWordWrap.get()):(t.wordWrapOverride1=\"off\",t.wordWrapOverride2=\"off\",t.stickyScroll={enabled:!1},t.unicodeHighlight={nonBasicASCII:!1,ambiguousCharacters:!1,invisibleCharacters:!1}),n.originalAriaLabel&&(t.ariaLabel=n.originalAriaLabel),t.ariaLabel=this._updateAriaLabel(t.ariaLabel),t.readOnly=!this._options.originalEditable.get(),t.dropIntoEditor={enabled:!t.readOnly},t.extraEditorClassName=\"original-in-monaco-diff-editor\",t}_adjustOptionsForRightHandSide(i,n){const t=this._adjustOptionsForSubEditor(n);return n.modifiedAriaLabel&&(t.ariaLabel=n.modifiedAriaLabel),t.ariaLabel=this._updateAriaLabel(t.ariaLabel),t.wordWrapOverride1=this._options.diffWordWrap.get(),t.revealHorizontalRightPadding=S.EditorOptions.revealHorizontalRightPadding.defaultValue+D.OverviewRulerPart.ENTIRE_DIFF_OVERVIEW_WIDTH,t.scrollbar.verticalHasArrows=!1,t.extraEditorClassName=\"modified-in-monaco-diff-editor\",t}_adjustOptionsForSubEditor(i){const n=Object.assign(Object.assign({},i),{dimension:{height:0,width:0}});return n.inDiffEditor=!0,n.automaticLayout=!1,n.scrollbar=Object.assign({},n.scrollbar||{}),n.scrollbar.vertical=\"visible\",n.folding=!1,n.codeLens=this._options.diffCodeLens.get(),n.fixedOverflowWidgets=!0,n.minimap=Object.assign({},n.minimap||{}),n.minimap.enabled=!1,this._options.hideUnchangedRegions.get()?n.stickyScroll={enabled:!1}:n.stickyScroll=this._options.editorOptions.get().stickyScroll,n}_updateAriaLabel(i){var n;i||(i=\"\");const t=(0,f.localize)(0,null,(n=this._keybindingService.lookupKeybinding(\"editor.action.accessibilityHelp\"))===null||n===void 0?void 0:n.getAriaLabel());return this._options.accessibilityVerbose.get()?i+t:i?i.replaceAll(t,\"\"):\"\"}};e.DiffEditorEditors=C,e.DiffEditorEditors=C=ke([fe(5,_.IInstantiationService),fe(6,g.IKeybindingService)],C)}),define(ne[80],se([1,0,622,38,31,23]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.editorUnicodeHighlightBackground=e.editorUnicodeHighlightBorder=e.editorBracketPairGuideActiveBackground6=e.editorBracketPairGuideActiveBackground5=e.editorBracketPairGuideActiveBackground4=e.editorBracketPairGuideActiveBackground3=e.editorBracketPairGuideActiveBackground2=e.editorBracketPairGuideActiveBackground1=e.editorBracketPairGuideBackground6=e.editorBracketPairGuideBackground5=e.editorBracketPairGuideBackground4=e.editorBracketPairGuideBackground3=e.editorBracketPairGuideBackground2=e.editorBracketPairGuideBackground1=e.editorBracketHighlightingUnexpectedBracketForeground=e.editorBracketHighlightingForeground6=e.editorBracketHighlightingForeground5=e.editorBracketHighlightingForeground4=e.editorBracketHighlightingForeground3=e.editorBracketHighlightingForeground2=e.editorBracketHighlightingForeground1=e.overviewRulerInfo=e.overviewRulerWarning=e.overviewRulerError=e.overviewRulerRangeHighlight=e.ghostTextBackground=e.ghostTextForeground=e.ghostTextBorder=e.editorUnnecessaryCodeOpacity=e.editorUnnecessaryCodeBorder=e.editorGutter=e.editorOverviewRulerBackground=e.editorOverviewRulerBorder=e.editorBracketMatchBorder=e.editorBracketMatchBackground=e.editorCodeLensForeground=e.editorRuler=e.editorDimmedLineNumber=e.editorActiveLineNumber=e.editorActiveIndentGuide6=e.editorActiveIndentGuide5=e.editorActiveIndentGuide4=e.editorActiveIndentGuide3=e.editorActiveIndentGuide2=e.editorActiveIndentGuide1=e.editorIndentGuide6=e.editorIndentGuide5=e.editorIndentGuide4=e.editorIndentGuide3=e.editorIndentGuide2=e.editorIndentGuide1=e.deprecatedEditorActiveIndentGuides=e.deprecatedEditorIndentGuides=e.editorLineNumbers=e.editorWhitespaces=e.editorCursorBackground=e.editorCursorForeground=e.editorSymbolHighlightBorder=e.editorSymbolHighlight=e.editorRangeHighlightBorder=e.editorRangeHighlight=e.editorLineHighlightBorder=e.editorLineHighlight=void 0,e.editorLineHighlight=(0,y.registerColor)(\"editor.lineHighlightBackground\",{dark:null,light:null,hcDark:null,hcLight:null},L.localize(0,null)),e.editorLineHighlightBorder=(0,y.registerColor)(\"editor.lineHighlightBorder\",{dark:\"#282828\",light:\"#eeeeee\",hcDark:\"#f38518\",hcLight:y.contrastBorder},L.localize(1,null)),e.editorRangeHighlight=(0,y.registerColor)(\"editor.rangeHighlightBackground\",{dark:\"#ffffff0b\",light:\"#fdff0033\",hcDark:null,hcLight:null},L.localize(2,null),!0),e.editorRangeHighlightBorder=(0,y.registerColor)(\"editor.rangeHighlightBorder\",{dark:null,light:null,hcDark:y.activeContrastBorder,hcLight:y.activeContrastBorder},L.localize(3,null),!0),e.editorSymbolHighlight=(0,y.registerColor)(\"editor.symbolHighlightBackground\",{dark:y.editorFindMatchHighlight,light:y.editorFindMatchHighlight,hcDark:null,hcLight:null},L.localize(4,null),!0),e.editorSymbolHighlightBorder=(0,y.registerColor)(\"editor.symbolHighlightBorder\",{dark:null,light:null,hcDark:y.activeContrastBorder,hcLight:y.activeContrastBorder},L.localize(5,null),!0),e.editorCursorForeground=(0,y.registerColor)(\"editorCursor.foreground\",{dark:\"#AEAFAD\",light:k.Color.black,hcDark:k.Color.white,hcLight:\"#0F4A85\"},L.localize(6,null)),e.editorCursorBackground=(0,y.registerColor)(\"editorCursor.background\",null,L.localize(7,null)),e.editorWhitespaces=(0,y.registerColor)(\"editorWhitespace.foreground\",{dark:\"#e3e4e229\",light:\"#33333333\",hcDark:\"#e3e4e229\",hcLight:\"#CCCCCC\"},L.localize(8,null)),e.editorLineNumbers=(0,y.registerColor)(\"editorLineNumber.foreground\",{dark:\"#858585\",light:\"#237893\",hcDark:k.Color.white,hcLight:\"#292929\"},L.localize(9,null)),e.deprecatedEditorIndentGuides=(0,y.registerColor)(\"editorIndentGuide.background\",{dark:e.editorWhitespaces,light:e.editorWhitespaces,hcDark:e.editorWhitespaces,hcLight:e.editorWhitespaces},L.localize(10,null),!1,L.localize(11,null)),e.deprecatedEditorActiveIndentGuides=(0,y.registerColor)(\"editorIndentGuide.activeBackground\",{dark:e.editorWhitespaces,light:e.editorWhitespaces,hcDark:e.editorWhitespaces,hcLight:e.editorWhitespaces},L.localize(12,null),!1,L.localize(13,null)),e.editorIndentGuide1=(0,y.registerColor)(\"editorIndentGuide.background1\",{dark:e.deprecatedEditorIndentGuides,light:e.deprecatedEditorIndentGuides,hcDark:e.deprecatedEditorIndentGuides,hcLight:e.deprecatedEditorIndentGuides},L.localize(14,null)),e.editorIndentGuide2=(0,y.registerColor)(\"editorIndentGuide.background2\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(15,null)),e.editorIndentGuide3=(0,y.registerColor)(\"editorIndentGuide.background3\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(16,null)),e.editorIndentGuide4=(0,y.registerColor)(\"editorIndentGuide.background4\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(17,null)),e.editorIndentGuide5=(0,y.registerColor)(\"editorIndentGuide.background5\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(18,null)),e.editorIndentGuide6=(0,y.registerColor)(\"editorIndentGuide.background6\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(19,null)),e.editorActiveIndentGuide1=(0,y.registerColor)(\"editorIndentGuide.activeBackground1\",{dark:e.deprecatedEditorActiveIndentGuides,light:e.deprecatedEditorActiveIndentGuides,hcDark:e.deprecatedEditorActiveIndentGuides,hcLight:e.deprecatedEditorActiveIndentGuides},L.localize(20,null)),e.editorActiveIndentGuide2=(0,y.registerColor)(\"editorIndentGuide.activeBackground2\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(21,null)),e.editorActiveIndentGuide3=(0,y.registerColor)(\"editorIndentGuide.activeBackground3\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(22,null)),e.editorActiveIndentGuide4=(0,y.registerColor)(\"editorIndentGuide.activeBackground4\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(23,null)),e.editorActiveIndentGuide5=(0,y.registerColor)(\"editorIndentGuide.activeBackground5\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(24,null)),e.editorActiveIndentGuide6=(0,y.registerColor)(\"editorIndentGuide.activeBackground6\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(25,null));const S=(0,y.registerColor)(\"editorActiveLineNumber.foreground\",{dark:\"#c6c6c6\",light:\"#0B216F\",hcDark:y.activeContrastBorder,hcLight:y.activeContrastBorder},L.localize(26,null),!1,L.localize(27,null));e.editorActiveLineNumber=(0,y.registerColor)(\"editorLineNumber.activeForeground\",{dark:S,light:S,hcDark:S,hcLight:S},L.localize(28,null)),e.editorDimmedLineNumber=(0,y.registerColor)(\"editorLineNumber.dimmedForeground\",{dark:null,light:null,hcDark:null,hcLight:null},L.localize(29,null)),e.editorRuler=(0,y.registerColor)(\"editorRuler.foreground\",{dark:\"#5A5A5A\",light:k.Color.lightgrey,hcDark:k.Color.white,hcLight:\"#292929\"},L.localize(30,null)),e.editorCodeLensForeground=(0,y.registerColor)(\"editorCodeLens.foreground\",{dark:\"#999999\",light:\"#919191\",hcDark:\"#999999\",hcLight:\"#292929\"},L.localize(31,null)),e.editorBracketMatchBackground=(0,y.registerColor)(\"editorBracketMatch.background\",{dark:\"#0064001a\",light:\"#0064001a\",hcDark:\"#0064001a\",hcLight:\"#0000\"},L.localize(32,null)),e.editorBracketMatchBorder=(0,y.registerColor)(\"editorBracketMatch.border\",{dark:\"#888\",light:\"#B9B9B9\",hcDark:y.contrastBorder,hcLight:y.contrastBorder},L.localize(33,null)),e.editorOverviewRulerBorder=(0,y.registerColor)(\"editorOverviewRuler.border\",{dark:\"#7f7f7f4d\",light:\"#7f7f7f4d\",hcDark:\"#7f7f7f4d\",hcLight:\"#666666\"},L.localize(34,null)),e.editorOverviewRulerBackground=(0,y.registerColor)(\"editorOverviewRuler.background\",null,L.localize(35,null)),e.editorGutter=(0,y.registerColor)(\"editorGutter.background\",{dark:y.editorBackground,light:y.editorBackground,hcDark:y.editorBackground,hcLight:y.editorBackground},L.localize(36,null)),e.editorUnnecessaryCodeBorder=(0,y.registerColor)(\"editorUnnecessaryCode.border\",{dark:null,light:null,hcDark:k.Color.fromHex(\"#fff\").transparent(.8),hcLight:y.contrastBorder},L.localize(37,null)),e.editorUnnecessaryCodeOpacity=(0,y.registerColor)(\"editorUnnecessaryCode.opacity\",{dark:k.Color.fromHex(\"#000a\"),light:k.Color.fromHex(\"#0007\"),hcDark:null,hcLight:null},L.localize(38,null)),e.ghostTextBorder=(0,y.registerColor)(\"editorGhostText.border\",{dark:null,light:null,hcDark:k.Color.fromHex(\"#fff\").transparent(.8),hcLight:k.Color.fromHex(\"#292929\").transparent(.8)},L.localize(39,null)),e.ghostTextForeground=(0,y.registerColor)(\"editorGhostText.foreground\",{dark:k.Color.fromHex(\"#ffffff56\"),light:k.Color.fromHex(\"#0007\"),hcDark:null,hcLight:null},L.localize(40,null)),e.ghostTextBackground=(0,y.registerColor)(\"editorGhostText.background\",{dark:null,light:null,hcDark:null,hcLight:null},L.localize(41,null));const f=new k.Color(new k.RGBA(0,122,204,.6));e.overviewRulerRangeHighlight=(0,y.registerColor)(\"editorOverviewRuler.rangeHighlightForeground\",{dark:f,light:f,hcDark:f,hcLight:f},L.localize(42,null),!0),e.overviewRulerError=(0,y.registerColor)(\"editorOverviewRuler.errorForeground\",{dark:new k.Color(new k.RGBA(255,18,18,.7)),light:new k.Color(new k.RGBA(255,18,18,.7)),hcDark:new k.Color(new k.RGBA(255,50,50,1)),hcLight:\"#B5200D\"},L.localize(43,null)),e.overviewRulerWarning=(0,y.registerColor)(\"editorOverviewRuler.warningForeground\",{dark:y.editorWarningForeground,light:y.editorWarningForeground,hcDark:y.editorWarningBorder,hcLight:y.editorWarningBorder},L.localize(44,null)),e.overviewRulerInfo=(0,y.registerColor)(\"editorOverviewRuler.infoForeground\",{dark:y.editorInfoForeground,light:y.editorInfoForeground,hcDark:y.editorInfoBorder,hcLight:y.editorInfoBorder},L.localize(45,null)),e.editorBracketHighlightingForeground1=(0,y.registerColor)(\"editorBracketHighlight.foreground1\",{dark:\"#FFD700\",light:\"#0431FAFF\",hcDark:\"#FFD700\",hcLight:\"#0431FAFF\"},L.localize(46,null)),e.editorBracketHighlightingForeground2=(0,y.registerColor)(\"editorBracketHighlight.foreground2\",{dark:\"#DA70D6\",light:\"#319331FF\",hcDark:\"#DA70D6\",hcLight:\"#319331FF\"},L.localize(47,null)),e.editorBracketHighlightingForeground3=(0,y.registerColor)(\"editorBracketHighlight.foreground3\",{dark:\"#179FFF\",light:\"#7B3814FF\",hcDark:\"#87CEFA\",hcLight:\"#7B3814FF\"},L.localize(48,null)),e.editorBracketHighlightingForeground4=(0,y.registerColor)(\"editorBracketHighlight.foreground4\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(49,null)),e.editorBracketHighlightingForeground5=(0,y.registerColor)(\"editorBracketHighlight.foreground5\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(50,null)),e.editorBracketHighlightingForeground6=(0,y.registerColor)(\"editorBracketHighlight.foreground6\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(51,null)),e.editorBracketHighlightingUnexpectedBracketForeground=(0,y.registerColor)(\"editorBracketHighlight.unexpectedBracket.foreground\",{dark:new k.Color(new k.RGBA(255,18,18,.8)),light:new k.Color(new k.RGBA(255,18,18,.8)),hcDark:new k.Color(new k.RGBA(255,50,50,1)),hcLight:\"\"},L.localize(52,null)),e.editorBracketPairGuideBackground1=(0,y.registerColor)(\"editorBracketPairGuide.background1\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(53,null)),e.editorBracketPairGuideBackground2=(0,y.registerColor)(\"editorBracketPairGuide.background2\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(54,null)),e.editorBracketPairGuideBackground3=(0,y.registerColor)(\"editorBracketPairGuide.background3\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(55,null)),e.editorBracketPairGuideBackground4=(0,y.registerColor)(\"editorBracketPairGuide.background4\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(56,null)),e.editorBracketPairGuideBackground5=(0,y.registerColor)(\"editorBracketPairGuide.background5\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(57,null)),e.editorBracketPairGuideBackground6=(0,y.registerColor)(\"editorBracketPairGuide.background6\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(58,null)),e.editorBracketPairGuideActiveBackground1=(0,y.registerColor)(\"editorBracketPairGuide.activeBackground1\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(59,null)),e.editorBracketPairGuideActiveBackground2=(0,y.registerColor)(\"editorBracketPairGuide.activeBackground2\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(60,null)),e.editorBracketPairGuideActiveBackground3=(0,y.registerColor)(\"editorBracketPairGuide.activeBackground3\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(61,null)),e.editorBracketPairGuideActiveBackground4=(0,y.registerColor)(\"editorBracketPairGuide.activeBackground4\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(62,null)),e.editorBracketPairGuideActiveBackground5=(0,y.registerColor)(\"editorBracketPairGuide.activeBackground5\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(63,null)),e.editorBracketPairGuideActiveBackground6=(0,y.registerColor)(\"editorBracketPairGuide.activeBackground6\",{dark:\"#00000000\",light:\"#00000000\",hcDark:\"#00000000\",hcLight:\"#00000000\"},L.localize(64,null)),e.editorUnicodeHighlightBorder=(0,y.registerColor)(\"editorUnicodeHighlight.border\",{dark:\"#BD9B03\",light:\"#CEA33D\",hcDark:\"#ff0000\",hcLight:\"#CEA33D\"},L.localize(65,null)),e.editorUnicodeHighlightBackground=(0,y.registerColor)(\"editorUnicodeHighlight.background\",{dark:\"#bd9b0326\",light:\"#cea33d14\",hcDark:\"#00000000\",hcLight:\"#cea33d14\"},L.localize(66,null)),(0,D.registerThemingParticipant)((_,g)=>{const C=_.getColor(y.editorBackground),s=_.getColor(e.editorLineHighlight),i=s&&!s.isTransparent()?s:C;i&&g.addRule(`.monaco-editor .inputarea.ime-input { background-color: ${i}; }`)})}),define(ne[845],se([1,0,112,80,14,23,24,88,416]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CurrentLineMarginHighlightOverlay=e.CurrentLineHighlightOverlay=e.AbstractLineHighlightOverlay=void 0;class _ extends L.DynamicViewOverlay{constructor(i){super(),this._context=i;const n=this._context.configuration.options,t=n.get(142);this._lineHeight=n.get(65),this._renderLineHighlight=n.get(94),this._renderLineHighlightOnlyWhenFocus=n.get(95),this._contentLeft=t.contentLeft,this._contentWidth=t.contentWidth,this._selectionIsEmpty=!0,this._focused=!1,this._cursorLineNumbers=[1],this._selections=[new S.Selection(1,1,1,1)],this._renderData=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}_readFromSelections(){let i=!1;const n=this._selections.map(a=>a.positionLineNumber);n.sort((a,u)=>a-u),y.equals(this._cursorLineNumbers,n)||(this._cursorLineNumbers=n,i=!0);const t=this._selections.every(a=>a.isEmpty());return this._selectionIsEmpty!==t&&(this._selectionIsEmpty=t,i=!0),i}onThemeChanged(i){return this._readFromSelections()}onConfigurationChanged(i){const n=this._context.configuration.options,t=n.get(142);return this._lineHeight=n.get(65),this._renderLineHighlight=n.get(94),this._renderLineHighlightOnlyWhenFocus=n.get(95),this._contentLeft=t.contentLeft,this._contentWidth=t.contentWidth,!0}onCursorStateChanged(i){return this._selections=i.selections,this._readFromSelections()}onFlushed(i){return!0}onLinesDeleted(i){return!0}onLinesInserted(i){return!0}onScrollChanged(i){return i.scrollWidthChanged||i.scrollTopChanged}onZonesChanged(i){return!0}onFocusChanged(i){return this._renderLineHighlightOnlyWhenFocus?(this._focused=i.isFocused,!0):!1}prepareRender(i){if(!this._shouldRenderThis()){this._renderData=null;return}const n=this._renderOne(i),t=i.visibleRange.startLineNumber,a=i.visibleRange.endLineNumber,u=this._cursorLineNumbers.length;let h=0;const r=[];for(let c=t;c<=a;c++){const o=c-t;for(;h<u&&this._cursorLineNumbers[h]<c;)h++;h<u&&this._cursorLineNumbers[h]===c?r[o]=n:r[o]=\"\"}this._renderData=r}render(i,n){if(!this._renderData)return\"\";const t=n-i;return t>=this._renderData.length?\"\":this._renderData[t]}_shouldRenderInMargin(){return(this._renderLineHighlight===\"gutter\"||this._renderLineHighlight===\"all\")&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}_shouldRenderInContent(){return(this._renderLineHighlight===\"line\"||this._renderLineHighlight===\"all\")&&this._selectionIsEmpty&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}}e.AbstractLineHighlightOverlay=_;class g extends _{_renderOne(i){return`<div class=\"${\"current-line\"+(this._shouldRenderOther()?\" current-line-both\":\"\")}\" style=\"width:${Math.max(i.scrollWidth,this._contentWidth)}px; height:${this._lineHeight}px;\"></div>`}_shouldRenderThis(){return this._shouldRenderInContent()}_shouldRenderOther(){return this._shouldRenderInMargin()}}e.CurrentLineHighlightOverlay=g;class C extends _{_renderOne(i){return`<div class=\"${\"current-line\"+(this._shouldRenderInMargin()?\" current-line-margin\":\"\")+(this._shouldRenderOther()?\" current-line-margin-both\":\"\")}\" style=\"width:${this._contentLeft}px; height:${this._lineHeight}px;\"></div>`}_shouldRenderThis(){return!0}_shouldRenderOther(){return this._shouldRenderInContent()}}e.CurrentLineMarginHighlightOverlay=C,(0,D.registerThemingParticipant)((s,i)=>{const n=s.getColor(k.editorLineHighlight);if(n&&(i.addRule(`.monaco-editor .view-overlays .current-line { background-color: ${n}; }`),i.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { background-color: ${n}; border: none; }`)),!n||n.isTransparent()||s.defines(k.editorLineHighlightBorder)){const t=s.getColor(k.editorLineHighlightBorder);t&&(i.addRule(`.monaco-editor .view-overlays .current-line { border: 2px solid ${t}; }`),i.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { border: 2px solid ${t}; }`),(0,f.isHighContrast)(s.type)&&(i.addRule(\".monaco-editor .view-overlays .current-line { border-width: 1px; }\"),i.addRule(\".monaco-editor .margin-view-overlays .current-line-margin { border-width: 1px; }\")))}})}),define(ne[846],se([1,0,112,80,23,12,14,20,287,209,419]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IndentGuidesOverlay=void 0;class C extends L.DynamicViewOverlay{constructor(n){super(),this._context=n,this._primaryPosition=null;const t=this._context.configuration.options,a=t.get(143),u=t.get(49);this._lineHeight=t.get(65),this._spaceWidth=u.spaceWidth,this._maxIndentLeft=a.wrappingColumn===-1?-1:a.wrappingColumn*u.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(15),this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(n){const t=this._context.configuration.options,a=t.get(143),u=t.get(49);return this._lineHeight=t.get(65),this._spaceWidth=u.spaceWidth,this._maxIndentLeft=a.wrappingColumn===-1?-1:a.wrappingColumn*u.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(15),!0}onCursorStateChanged(n){var t;const u=n.selections[0].getPosition();return!((t=this._primaryPosition)===null||t===void 0)&&t.equals(u)?!1:(this._primaryPosition=u,!0)}onDecorationsChanged(n){return!0}onFlushed(n){return!0}onLinesChanged(n){return!0}onLinesDeleted(n){return!0}onLinesInserted(n){return!0}onScrollChanged(n){return n.scrollTopChanged}onZonesChanged(n){return!0}onLanguageConfigurationChanged(n){return!0}prepareRender(n){var t,a,u,h;if(!this._bracketPairGuideOptions.indentation&&this._bracketPairGuideOptions.bracketPairs===!1){this._renderResult=null;return}const r=n.visibleRange.startLineNumber,c=n.visibleRange.endLineNumber,o=n.scrollWidth,d=this._lineHeight,l=this._primaryPosition,p=this.getGuidesByLine(r,Math.min(c+1,this._context.viewModel.getLineCount()),l),m=[];for(let v=r;v<=c;v++){const b=v-r,w=p[b];let E=\"\";const I=(a=(t=n.visibleRangeForPosition(new D.Position(v,1)))===null||t===void 0?void 0:t.left)!==null&&a!==void 0?a:0;for(const M of w){const P=M.column===-1?I+(M.visibleColumn-1)*this._spaceWidth:n.visibleRangeForPosition(new D.Position(v,M.column)).left;if(P>o||this._maxIndentLeft>0&&P>this._maxIndentLeft)break;const x=M.horizontalLine?M.horizontalLine.top?\"horizontal-top\":\"horizontal-bottom\":\"vertical\",T=M.horizontalLine?((h=(u=n.visibleRangeForPosition(new D.Position(v,M.horizontalLine.endColumn)))===null||u===void 0?void 0:u.left)!==null&&h!==void 0?h:P+this._spaceWidth)-P:this._spaceWidth;E+=`<div class=\"core-guide ${M.className} ${x}\" style=\"left:${P}px;height:${d}px;width:${T}px\"></div>`}m[b]=E}this._renderResult=m}getGuidesByLine(n,t,a){const u=this._bracketPairGuideOptions.bracketPairs!==!1?this._context.viewModel.getBracketGuidesInRangeByLine(n,t,a,{highlightActive:this._bracketPairGuideOptions.highlightActiveBracketPair,horizontalGuides:this._bracketPairGuideOptions.bracketPairsHorizontal===!0?g.HorizontalGuidesState.Enabled:this._bracketPairGuideOptions.bracketPairsHorizontal===\"active\"?g.HorizontalGuidesState.EnabledForActive:g.HorizontalGuidesState.Disabled,includeInactive:this._bracketPairGuideOptions.bracketPairs===!0}):null,h=this._bracketPairGuideOptions.indentation?this._context.viewModel.getLinesIndentGuides(n,t):null;let r=0,c=0,o=0;if(this._bracketPairGuideOptions.highlightActiveIndentation!==!1&&a){const p=this._context.viewModel.getActiveIndentGuide(a.lineNumber,n,t);r=p.startLineNumber,c=p.endLineNumber,o=p.indent}const{indentSize:d}=this._context.viewModel.model.getOptions(),l=[];for(let p=n;p<=t;p++){const m=new Array;l.push(m);const v=u?u[p-n]:[],b=new S.ArrayQueue(v),w=h?h[p-n]:0;for(let E=1;E<=w;E++){const I=(E-1)*d+1,M=(this._bracketPairGuideOptions.highlightActiveIndentation===\"always\"||v.length===0)&&r<=p&&p<=c&&E===o;m.push(...b.takeWhile(x=>x.visibleColumn<I)||[]);const P=b.peek();(!P||P.visibleColumn!==I||P.horizontalLine)&&m.push(new g.IndentGuide(I,-1,`core-guide-indent lvl-${(E-1)%30}`+(M?\" indent-active\":\"\"),null,-1,-1))}m.push(...b.takeWhile(E=>!0)||[])}return l}render(n,t){if(!this._renderResult)return\"\";const a=t-n;return a<0||a>=this._renderResult.length?\"\":this._renderResult[a]}}e.IndentGuidesOverlay=C;function s(i){if(!(i&&i.isTransparent()))return i}(0,y.registerThemingParticipant)((i,n)=>{const t=[{bracketColor:k.editorBracketHighlightingForeground1,guideColor:k.editorBracketPairGuideBackground1,guideColorActive:k.editorBracketPairGuideActiveBackground1},{bracketColor:k.editorBracketHighlightingForeground2,guideColor:k.editorBracketPairGuideBackground2,guideColorActive:k.editorBracketPairGuideActiveBackground2},{bracketColor:k.editorBracketHighlightingForeground3,guideColor:k.editorBracketPairGuideBackground3,guideColorActive:k.editorBracketPairGuideActiveBackground3},{bracketColor:k.editorBracketHighlightingForeground4,guideColor:k.editorBracketPairGuideBackground4,guideColorActive:k.editorBracketPairGuideActiveBackground4},{bracketColor:k.editorBracketHighlightingForeground5,guideColor:k.editorBracketPairGuideBackground5,guideColorActive:k.editorBracketPairGuideActiveBackground5},{bracketColor:k.editorBracketHighlightingForeground6,guideColor:k.editorBracketPairGuideBackground6,guideColorActive:k.editorBracketPairGuideActiveBackground6}],a=new _.BracketPairGuidesClassNames,u=[{indentColor:k.editorIndentGuide1,indentColorActive:k.editorActiveIndentGuide1},{indentColor:k.editorIndentGuide2,indentColorActive:k.editorActiveIndentGuide2},{indentColor:k.editorIndentGuide3,indentColorActive:k.editorActiveIndentGuide3},{indentColor:k.editorIndentGuide4,indentColorActive:k.editorActiveIndentGuide4},{indentColor:k.editorIndentGuide5,indentColorActive:k.editorActiveIndentGuide5},{indentColor:k.editorIndentGuide6,indentColorActive:k.editorActiveIndentGuide6}],h=t.map(c=>{var o,d;const l=i.getColor(c.bracketColor),p=i.getColor(c.guideColor),m=i.getColor(c.guideColorActive),v=s((o=s(p))!==null&&o!==void 0?o:l?.transparent(.3)),b=s((d=s(m))!==null&&d!==void 0?d:l);if(!(!v||!b))return{guideColor:v,guideColorActive:b}}).filter(f.isDefined),r=u.map(c=>{const o=i.getColor(c.indentColor),d=i.getColor(c.indentColorActive),l=s(o),p=s(d);if(!(!l||!p))return{indentColor:l,indentColorActive:p}}).filter(f.isDefined);if(h.length>0){for(let c=0;c<30;c++){const o=h[c%h.length];n.addRule(`.monaco-editor .${a.getInlineClassNameOfLevel(c).replace(/ /g,\".\")} { --guide-color: ${o.guideColor}; --guide-color-active: ${o.guideColorActive}; }`)}n.addRule(\".monaco-editor .vertical { box-shadow: 1px 0 0 0 var(--guide-color) inset; }\"),n.addRule(\".monaco-editor .horizontal-top { border-top: 1px solid var(--guide-color); }\"),n.addRule(\".monaco-editor .horizontal-bottom { border-bottom: 1px solid var(--guide-color); }\"),n.addRule(`.monaco-editor .vertical.${a.activeClassName} { box-shadow: 1px 0 0 0 var(--guide-color-active) inset; }`),n.addRule(`.monaco-editor .horizontal-top.${a.activeClassName} { border-top: 1px solid var(--guide-color-active); }`),n.addRule(`.monaco-editor .horizontal-bottom.${a.activeClassName} { border-bottom: 1px solid var(--guide-color-active); }`)}if(r.length>0){for(let c=0;c<30;c++){const o=r[c%r.length];n.addRule(`.monaco-editor .lines-content .core-guide-indent.lvl-${c} { --indent-color: ${o.indentColor}; --indent-color-active: ${o.indentColorActive}; }`)}n.addRule(\".monaco-editor .lines-content .core-guide-indent { box-shadow: 1px 0 0 0 var(--indent-color) inset; }\"),n.addRule(\".monaco-editor .lines-content .core-guide-indent.indent-active { box-shadow: 1px 0 0 0 var(--indent-color-active) inset; }\")}})}),define(ne[358],se([1,0,17,112,12,23,80,420]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.LineNumbersOverlay=void 0;class f extends k.DynamicViewOverlay{constructor(g){super(),this._context=g,this._readConfig(),this._lastCursorModelPosition=new y.Position(1,1),this._renderResult=null,this._activeLineNumber=1,this._context.addEventHandler(this)}_readConfig(){const g=this._context.configuration.options;this._lineHeight=g.get(65);const C=g.get(66);this._renderLineNumbers=C.renderType,this._renderCustomLineNumbers=C.renderFn,this._renderFinalNewline=g.get(93);const s=g.get(142);this._lineNumbersLeft=s.lineNumbersLeft,this._lineNumbersWidth=s.lineNumbersWidth}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(g){return this._readConfig(),!0}onCursorStateChanged(g){const C=g.selections[0].getPosition();this._lastCursorModelPosition=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(C);let s=!1;return this._activeLineNumber!==C.lineNumber&&(this._activeLineNumber=C.lineNumber,s=!0),(this._renderLineNumbers===2||this._renderLineNumbers===3)&&(s=!0),s}onFlushed(g){return!0}onLinesChanged(g){return!0}onLinesDeleted(g){return!0}onLinesInserted(g){return!0}onScrollChanged(g){return g.scrollTopChanged}onZonesChanged(g){return!0}_getLineRenderLineNumber(g){const C=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new y.Position(g,1));if(C.column!==1)return\"\";const s=C.lineNumber;if(this._renderCustomLineNumbers)return this._renderCustomLineNumbers(s);if(this._renderLineNumbers===2){const i=Math.abs(this._lastCursorModelPosition.lineNumber-s);return i===0?'<span class=\"relative-current-line-number\">'+s+\"</span>\":String(i)}return this._renderLineNumbers===3?this._lastCursorModelPosition.lineNumber===s||s%10===0?String(s):\"\":String(s)}prepareRender(g){if(this._renderLineNumbers===0){this._renderResult=null;return}const C=L.isLinux?this._lineHeight%2===0?\" lh-even\":\" lh-odd\":\"\",s=g.visibleRange.startLineNumber,i=g.visibleRange.endLineNumber,n=this._context.viewModel.getLineCount(),t=[];for(let a=s;a<=i;a++){const u=a-s,h=this._getLineRenderLineNumber(a);if(!h){t[u]=\"\";continue}let r=\"\";if(a===n&&this._context.viewModel.getLineLength(a)===0){if(this._renderFinalNewline===\"off\"){t[u]=\"\";continue}this._renderFinalNewline===\"dimmed\"&&(r=\" dimmed-line-number\")}a===this._activeLineNumber&&(r=\" active-line-number\"),t[u]=`<div class=\"${f.CLASS_NAME}${C}${r}\" style=\"left:${this._lineNumbersLeft}px;width:${this._lineNumbersWidth}px;\">${h}</div>`}this._renderResult=t}render(g,C){if(!this._renderResult)return\"\";const s=C-g;return s<0||s>=this._renderResult.length?\"\":this._renderResult[s]}}e.LineNumbersOverlay=f,f.CLASS_NAME=\"line-numbers\",(0,D.registerThemingParticipant)((_,g)=>{const C=_.getColor(S.editorLineNumbers),s=_.getColor(S.editorDimmedLineNumber);s?g.addRule(`.monaco-editor .line-numbers.dimmed-line-number { color: ${s}; }`):C&&g.addRule(`.monaco-editor .line-numbers.dimmed-line-number { color: ${C.transparent(.4)}; }`)})}),define(ne[847],se([1,0,601,52,35,17,11,59,185,273,53,358,289,36,146,12,5,24,173,29,38,263,34,414]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TextAreaHandler=void 0;class p{constructor(E,I,M,P,x){this._context=E,this.modelLineNumber=I,this.distanceToModelLineStart=M,this.widthOfHiddenLineTextBefore=P,this.distanceToModelLineEnd=x,this._visibleTextAreaBrand=void 0,this.startPosition=null,this.endPosition=null,this.visibleTextareaStart=null,this.visibleTextareaEnd=null,this._previousPresentation=null}prepareRender(E){const I=new a.Position(this.modelLineNumber,this.distanceToModelLineStart+1),M=new a.Position(this.modelLineNumber,this._context.viewModel.model.getLineMaxColumn(this.modelLineNumber)-this.distanceToModelLineEnd);this.startPosition=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(I),this.endPosition=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(M),this.startPosition.lineNumber===this.endPosition.lineNumber?(this.visibleTextareaStart=E.visibleRangeForPosition(this.startPosition),this.visibleTextareaEnd=E.visibleRangeForPosition(this.endPosition)):(this.visibleTextareaStart=null,this.visibleTextareaEnd=null)}definePresentation(E){return this._previousPresentation||(E?this._previousPresentation=E:this._previousPresentation={foreground:1,italic:!1,bold:!1,underline:!1,strikethrough:!1}),this._previousPresentation}}const m=k.isFirefox;let v=class extends C.ViewPart{constructor(E,I,M,P){super(E),this._keybindingService=P,this._primaryCursorPosition=new a.Position(1,1),this._primaryCursorVisibleRange=null,this._viewController=I,this._visibleRangeProvider=M,this._scrollLeft=0,this._scrollTop=0;const x=this._context.configuration.options,T=x.get(142);this._setAccessibilityOptions(x),this._contentLeft=T.contentLeft,this._contentWidth=T.contentWidth,this._contentHeight=T.height,this._fontInfo=x.get(49),this._lineHeight=x.get(65),this._emptySelectionClipboard=x.get(36),this._copyWithSyntaxHighlighting=x.get(24),this._visibleTextArea=null,this._selections=[new h.Selection(1,1,1,1)],this._modelSelections=[new h.Selection(1,1,1,1)],this._lastRenderPosition=null,this.textArea=(0,y.createFastDomNode)(document.createElement(\"textarea\")),C.PartFingerprints.write(this.textArea,6),this.textArea.setClassName(`inputarea ${r.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`),this.textArea.setAttribute(\"wrap\",this._textAreaWrapping&&!this._visibleTextArea?\"on\":\"off\");const{tabSize:A}=this._context.viewModel.model.getOptions();this.textArea.domNode.style.tabSize=`${A*this._fontInfo.spaceWidth}px`,this.textArea.setAttribute(\"autocorrect\",\"off\"),this.textArea.setAttribute(\"autocapitalize\",\"off\"),this.textArea.setAttribute(\"autocomplete\",\"off\"),this.textArea.setAttribute(\"spellcheck\",\"false\"),this.textArea.setAttribute(\"aria-label\",this._getAriaLabel(x)),this.textArea.setAttribute(\"aria-required\",x.get(5)?\"true\":\"false\"),this.textArea.setAttribute(\"tabindex\",String(x.get(122))),this.textArea.setAttribute(\"role\",\"textbox\"),this.textArea.setAttribute(\"aria-roledescription\",L.localize(0,null)),this.textArea.setAttribute(\"aria-multiline\",\"true\"),this.textArea.setAttribute(\"aria-autocomplete\",x.get(89)?\"none\":\"both\"),this._ensureReadOnlyAttribute(),this.textAreaCover=(0,y.createFastDomNode)(document.createElement(\"div\")),this.textAreaCover.setPosition(\"absolute\");const N={getLineCount:()=>this._context.viewModel.getLineCount(),getLineMaxColumn:W=>this._context.viewModel.getLineMaxColumn(W),getValueInRange:(W,U)=>this._context.viewModel.getValueInRange(W,U),getValueLengthInRange:(W,U)=>this._context.viewModel.getValueLengthInRange(W,U),modifyPosition:(W,U)=>this._context.viewModel.modifyPosition(W,U)},F={getDataToCopy:()=>{const W=this._context.viewModel.getPlainTextToCopy(this._modelSelections,this._emptySelectionClipboard,D.isWindows),U=this._context.viewModel.model.getEOL(),j=this._emptySelectionClipboard&&this._modelSelections.length===1&&this._modelSelections[0].isEmpty(),R=Array.isArray(W)?W:null,K=Array.isArray(W)?W.join(U):W;let G,Z=null;if(_.CopyOptions.forceCopyWithSyntaxHighlighting||this._copyWithSyntaxHighlighting&&K.length<65536){const J=this._context.viewModel.getRichTextToCopy(this._modelSelections,this._emptySelectionClipboard);J&&(G=J.html,Z=J.mode)}return{isFromEmptySelection:j,multicursorText:R,text:K,html:G,mode:Z}},getScreenReaderContent:()=>{if(this._accessibilitySupport===1){const W=this._selections[0];if(D.isMacintosh&&W.isEmpty()){const j=W.getStartPosition();let R=this._getWordBeforePosition(j);if(R.length===0&&(R=this._getCharacterBeforePosition(j)),R.length>0)return new g.TextAreaState(R,R.length,R.length,u.Range.fromPositions(j),0)}const U=500;if(D.isMacintosh&&!W.isEmpty()&&N.getValueLengthInRange(W,0)<U){const j=N.getValueInRange(W,0);return new g.TextAreaState(j,0,j.length,W,0)}if(k.isSafari&&!W.isEmpty()){const j=\"vscode-placeholder\";return new g.TextAreaState(j,0,j.length,null,void 0)}return g.TextAreaState.EMPTY}if(k.isAndroid){const W=this._selections[0];if(W.isEmpty()){const U=W.getStartPosition(),[j,R]=this._getAndroidWordAtPosition(U);if(j.length>0)return new g.TextAreaState(j,R,R,u.Range.fromPositions(U),0)}return g.TextAreaState.EMPTY}return g.PagedScreenReaderStrategy.fromEditorSelection(N,this._selections[0],this._accessibilityPageSize,this._accessibilitySupport===0)},deduceModelPosition:(W,U,j)=>this._context.viewModel.deduceModelPositionRelativeToViewPosition(W,U,j)},O=this._register(new _.TextAreaWrapper(this.textArea.domNode));this._textAreaInput=this._register(new _.TextAreaInput(F,O,D.OS,{isAndroid:k.isAndroid,isChrome:k.isChrome,isFirefox:k.isFirefox,isSafari:k.isSafari})),this._register(this._textAreaInput.onKeyDown(W=>{this._viewController.emitKeyDown(W)})),this._register(this._textAreaInput.onKeyUp(W=>{this._viewController.emitKeyUp(W)})),this._register(this._textAreaInput.onPaste(W=>{let U=!1,j=null,R=null;W.metadata&&(U=this._emptySelectionClipboard&&!!W.metadata.isFromEmptySelection,j=typeof W.metadata.multicursorText<\"u\"?W.metadata.multicursorText:null,R=W.metadata.mode),this._viewController.paste(W.text,U,j,R)})),this._register(this._textAreaInput.onCut(()=>{this._viewController.cut()})),this._register(this._textAreaInput.onType(W=>{W.replacePrevCharCnt||W.replaceNextCharCnt||W.positionDelta?(g._debugComposition&&console.log(` => compositionType: <<${W.text}>>, ${W.replacePrevCharCnt}, ${W.replaceNextCharCnt}, ${W.positionDelta}`),this._viewController.compositionType(W.text,W.replacePrevCharCnt,W.replaceNextCharCnt,W.positionDelta)):(g._debugComposition&&console.log(` => type: <<${W.text}>>`),this._viewController.type(W.text))})),this._register(this._textAreaInput.onSelectionChangeRequest(W=>{this._viewController.setSelection(W)})),this._register(this._textAreaInput.onCompositionStart(W=>{const U=this.textArea.domNode,j=this._modelSelections[0],{distanceToModelLineStart:R,widthOfHiddenTextBefore:K}=(()=>{const Z=U.value.substring(0,Math.min(U.selectionStart,U.selectionEnd)),J=Z.lastIndexOf(`\n`),X=Z.substring(J+1),H=X.lastIndexOf(\"\t\"),B=X.length-H-1,V=j.getStartPosition(),Y=Math.min(V.column-1,B),ie=V.column-1-Y,ae=X.substring(0,X.length-Y),{tabSize:ce}=this._context.viewModel.model.getOptions(),de=b(ae,this._fontInfo,ce);return{distanceToModelLineStart:ie,widthOfHiddenTextBefore:de}})(),{distanceToModelLineEnd:G}=(()=>{const Z=U.value.substring(Math.max(U.selectionStart,U.selectionEnd)),J=Z.indexOf(`\n`),X=J===-1?Z:Z.substring(0,J),H=X.indexOf(\"\t\"),B=H===-1?X.length:X.length-H-1,V=j.getEndPosition(),Y=Math.min(this._context.viewModel.model.getLineMaxColumn(V.lineNumber)-V.column,B);return{distanceToModelLineEnd:this._context.viewModel.model.getLineMaxColumn(V.lineNumber)-V.column-Y}})();this._context.viewModel.revealRange(\"keyboard\",!0,u.Range.fromPositions(this._selections[0].getStartPosition()),0,1),this._visibleTextArea=new p(this._context,j.startLineNumber,R,K,G),this.textArea.setAttribute(\"wrap\",this._textAreaWrapping&&!this._visibleTextArea?\"on\":\"off\"),this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render(),this.textArea.setClassName(`inputarea ${r.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME} ime-input`),this._viewController.compositionStart(),this._context.viewModel.onCompositionStart()})),this._register(this._textAreaInput.onCompositionUpdate(W=>{this._visibleTextArea&&(this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render())})),this._register(this._textAreaInput.onCompositionEnd(()=>{this._visibleTextArea=null,this.textArea.setAttribute(\"wrap\",this._textAreaWrapping&&!this._visibleTextArea?\"on\":\"off\"),this._render(),this.textArea.setClassName(`inputarea ${r.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`),this._viewController.compositionEnd(),this._context.viewModel.onCompositionEnd()})),this._register(this._textAreaInput.onFocus(()=>{this._context.viewModel.setHasFocus(!0)})),this._register(this._textAreaInput.onBlur(()=>{this._context.viewModel.setHasFocus(!1)})),this._register(d.IME.onDidChange(()=>{this._ensureReadOnlyAttribute()}))}writeScreenReaderContent(E){this._textAreaInput.writeScreenReaderContent(E)}dispose(){super.dispose()}_getAndroidWordAtPosition(E){const I='`~!@#$%^&*()-=+[{]}\\\\|;:\",.<>/?',M=this._context.viewModel.getLineContent(E.lineNumber),P=(0,t.getMapForWordSeparators)(I);let x=!0,T=E.column,A=!0,N=E.column,F=0;for(;F<50&&(x||A);){if(x&&T<=1&&(x=!1),x){const O=M.charCodeAt(T-2);P.get(O)!==0?x=!1:T--}if(A&&N>M.length&&(A=!1),A){const O=M.charCodeAt(N-1);P.get(O)!==0?A=!1:N++}F++}return[M.substring(T-1,N-1),E.column-T]}_getWordBeforePosition(E){const I=this._context.viewModel.getLineContent(E.lineNumber),M=(0,t.getMapForWordSeparators)(this._context.configuration.options.get(128));let P=E.column,x=0;for(;P>1;){const T=I.charCodeAt(P-2);if(M.get(T)!==0||x>50)return I.substring(P-1,E.column-1);x++,P--}return I.substring(0,E.column-1)}_getCharacterBeforePosition(E){if(E.column>1){const M=this._context.viewModel.getLineContent(E.lineNumber).charAt(E.column-2);if(!S.isHighSurrogate(M.charCodeAt(0)))return M}return\"\"}_getAriaLabel(E){var I,M,P;if(E.get(2)===1){const T=(I=this._keybindingService.lookupKeybinding(\"editor.action.toggleScreenReaderAccessibilityMode\"))===null||I===void 0?void 0:I.getAriaLabel(),A=(M=this._keybindingService.lookupKeybinding(\"workbench.action.showCommands\"))===null||M===void 0?void 0:M.getAriaLabel(),N=(P=this._keybindingService.lookupKeybinding(\"workbench.action.openGlobalKeybindings\"))===null||P===void 0?void 0:P.getAriaLabel(),F=L.localize(1,null);return T?L.localize(2,null,F,T):A?L.localize(3,null,F,A):N?L.localize(4,null,F,N):F}return E.get(4)}_setAccessibilityOptions(E){this._accessibilitySupport=E.get(2);const I=E.get(3);this._accessibilitySupport===2&&I===n.EditorOptions.accessibilityPageSize.defaultValue?this._accessibilityPageSize=500:this._accessibilityPageSize=I;const P=E.get(142).wrappingColumn;if(P!==-1&&this._accessibilitySupport!==1){const x=E.get(49);this._textAreaWrapping=!0,this._textAreaWidth=Math.round(P*x.typicalHalfwidthCharacterWidth)}else this._textAreaWrapping=!1,this._textAreaWidth=m?0:1}onConfigurationChanged(E){const I=this._context.configuration.options,M=I.get(142);this._setAccessibilityOptions(I),this._contentLeft=M.contentLeft,this._contentWidth=M.contentWidth,this._contentHeight=M.height,this._fontInfo=I.get(49),this._lineHeight=I.get(65),this._emptySelectionClipboard=I.get(36),this._copyWithSyntaxHighlighting=I.get(24),this.textArea.setAttribute(\"wrap\",this._textAreaWrapping&&!this._visibleTextArea?\"on\":\"off\");const{tabSize:P}=this._context.viewModel.model.getOptions();return this.textArea.domNode.style.tabSize=`${P*this._fontInfo.spaceWidth}px`,this.textArea.setAttribute(\"aria-label\",this._getAriaLabel(I)),this.textArea.setAttribute(\"aria-required\",I.get(5)?\"true\":\"false\"),this.textArea.setAttribute(\"tabindex\",String(I.get(122))),(E.hasChanged(33)||E.hasChanged(89))&&this._ensureReadOnlyAttribute(),E.hasChanged(2)&&this._textAreaInput.writeScreenReaderContent(\"strategy changed\"),!0}onCursorStateChanged(E){return this._selections=E.selections.slice(0),this._modelSelections=E.modelSelections.slice(0),this._textAreaInput.writeScreenReaderContent(\"selection changed\"),!0}onDecorationsChanged(E){return!0}onFlushed(E){return!0}onLinesChanged(E){return!0}onLinesDeleted(E){return!0}onLinesInserted(E){return!0}onScrollChanged(E){return this._scrollLeft=E.scrollLeft,this._scrollTop=E.scrollTop,!0}onZonesChanged(E){return!0}isFocused(){return this._textAreaInput.isFocused()}focusTextArea(){this._textAreaInput.focusTextArea()}getLastRenderData(){return this._lastRenderPosition}setAriaOptions(E){E.activeDescendant?(this.textArea.setAttribute(\"aria-haspopup\",\"true\"),this.textArea.setAttribute(\"aria-autocomplete\",\"list\"),this.textArea.setAttribute(\"aria-activedescendant\",E.activeDescendant)):(this.textArea.setAttribute(\"aria-haspopup\",\"false\"),this.textArea.setAttribute(\"aria-autocomplete\",\"both\"),this.textArea.removeAttribute(\"aria-activedescendant\")),E.role&&this.textArea.setAttribute(\"role\",E.role)}_ensureReadOnlyAttribute(){const E=this._context.configuration.options;!d.IME.enabled||E.get(33)&&E.get(89)?this.textArea.setAttribute(\"readonly\",\"true\"):this.textArea.removeAttribute(\"readonly\")}prepareRender(E){var I;this._primaryCursorPosition=new a.Position(this._selections[0].positionLineNumber,this._selections[0].positionColumn),this._primaryCursorVisibleRange=E.visibleRangeForPosition(this._primaryCursorPosition),(I=this._visibleTextArea)===null||I===void 0||I.prepareRender(E)}render(E){this._textAreaInput.writeScreenReaderContent(\"render\"),this._render()}_render(){var E;if(this._visibleTextArea){const P=this._visibleTextArea.visibleTextareaStart,x=this._visibleTextArea.visibleTextareaEnd,T=this._visibleTextArea.startPosition,A=this._visibleTextArea.endPosition;if(T&&A&&P&&x&&x.left>=this._scrollLeft&&P.left<=this._scrollLeft+this._contentWidth){const N=this._context.viewLayout.getVerticalOffsetForLineNumber(this._primaryCursorPosition.lineNumber)-this._scrollTop,F=this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));let O=this._visibleTextArea.widthOfHiddenLineTextBefore,W=this._contentLeft+P.left-this._scrollLeft,U=x.left-P.left+1;if(W<this._contentLeft){const J=this._contentLeft-W;W+=J,O+=J,U-=J}U>this._contentWidth&&(U=this._contentWidth);const j=this._context.viewModel.getViewLineData(T.lineNumber),R=j.tokens.findTokenIndexAtOffset(T.column-1),K=j.tokens.findTokenIndexAtOffset(A.column-1),G=R===K,Z=this._visibleTextArea.definePresentation(G?j.tokens.getPresentation(R):null);this.textArea.domNode.scrollTop=F*this._lineHeight,this.textArea.domNode.scrollLeft=O,this._doRender({lastRenderPosition:null,top:N,left:W,width:U,height:this._lineHeight,useCover:!1,color:(c.TokenizationRegistry.getColorMap()||[])[Z.foreground],italic:Z.italic,bold:Z.bold,underline:Z.underline,strikethrough:Z.strikethrough})}return}if(!this._primaryCursorVisibleRange){this._renderAtTopLeft();return}const I=this._contentLeft+this._primaryCursorVisibleRange.left-this._scrollLeft;if(I<this._contentLeft||I>this._contentLeft+this._contentWidth){this._renderAtTopLeft();return}const M=this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber)-this._scrollTop;if(M<0||M>this._contentHeight){this._renderAtTopLeft();return}if(D.isMacintosh){this._doRender({lastRenderPosition:this._primaryCursorPosition,top:M,left:this._textAreaWrapping?this._contentLeft:I,width:this._textAreaWidth,height:this._lineHeight,useCover:!1}),this.textArea.domNode.scrollLeft=this._primaryCursorVisibleRange.left;const P=(E=this._textAreaInput.textAreaState.newlineCountBeforeSelection)!==null&&E!==void 0?E:this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));this.textArea.domNode.scrollTop=P*this._lineHeight;return}this._doRender({lastRenderPosition:this._primaryCursorPosition,top:M,left:this._textAreaWrapping?this._contentLeft:I,width:this._textAreaWidth,height:m?0:1,useCover:!1})}_newlinecount(E){let I=0,M=-1;do{if(M=E.indexOf(`\n`,M+1),M===-1)break;I++}while(!0);return I}_renderAtTopLeft(){this._doRender({lastRenderPosition:null,top:0,left:0,width:this._textAreaWidth,height:m?0:1,useCover:!0})}_doRender(E){this._lastRenderPosition=E.lastRenderPosition;const I=this.textArea,M=this.textAreaCover;(0,f.applyFontInfo)(I,this._fontInfo),I.setTop(E.top),I.setLeft(E.left),I.setWidth(E.width),I.setHeight(E.height),I.setColor(E.color?o.Color.Format.CSS.formatHex(E.color):\"\"),I.setFontStyle(E.italic?\"italic\":\"\"),E.bold&&I.setFontWeight(\"bold\"),I.setTextDecoration(`${E.underline?\" underline\":\"\"}${E.strikethrough?\" line-through\":\"\"}`),M.setTop(E.useCover?E.top:0),M.setLeft(E.useCover?E.left:0),M.setWidth(E.useCover?E.width:0),M.setHeight(E.useCover?E.height:0);const P=this._context.configuration.options;P.get(56)?M.setClassName(\"monaco-editor-background textAreaCover \"+i.Margin.OUTER_CLASS_NAME):P.get(66).renderType!==0?M.setClassName(\"monaco-editor-background textAreaCover \"+s.LineNumbersOverlay.CLASS_NAME):M.setClassName(\"monaco-editor-background textAreaCover\")}};e.TextAreaHandler=v,e.TextAreaHandler=v=ke([fe(3,l.IKeybindingService)],v);function b(w,E,I){if(w.length===0)return 0;const M=document.createElement(\"div\");M.style.position=\"absolute\",M.style.top=\"-50000px\",M.style.width=\"50000px\";const P=document.createElement(\"span\");(0,f.applyFontInfo)(P,E),P.style.whiteSpace=\"pre\",P.style.tabSize=`${I*E.spaceWidth}px`,P.append(w),M.appendChild(P),document.body.appendChild(M);const x=P.offsetWidth;return document.body.removeChild(M),x}}),define(ne[848],se([1,0,35,38,53,12,29,80,67]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DecorationsOverviewRuler=void 0;class g{constructor(i,n){const t=i.options;this.lineHeight=t.get(65),this.pixelRatio=t.get(140),this.overviewRulerLanes=t.get(81),this.renderBorder=t.get(80);const a=n.getColor(f.editorOverviewRulerBorder);this.borderColor=a?a.toString():null,this.hideCursor=t.get(58);const u=n.getColor(f.editorCursorForeground);this.cursorColor=u?u.transparent(.7).toString():null,this.themeType=n.type;const h=t.get(71),r=h.enabled,c=h.side,o=n.getColor(f.editorOverviewRulerBackground),d=S.TokenizationRegistry.getDefaultBackground();o?this.backgroundColor=o:r&&c===\"right\"?this.backgroundColor=d:this.backgroundColor=null;const p=t.get(142).overviewRuler;this.top=p.top,this.right=p.right,this.domWidth=p.width,this.domHeight=p.height,this.overviewRulerLanes===0?(this.canvasWidth=0,this.canvasHeight=0):(this.canvasWidth=this.domWidth*this.pixelRatio|0,this.canvasHeight=this.domHeight*this.pixelRatio|0);const[m,v]=this._initLanes(1,this.canvasWidth,this.overviewRulerLanes);this.x=m,this.w=v}_initLanes(i,n,t){const a=n-i;if(t>=3){const u=Math.floor(a/3),h=Math.floor(a/3),r=a-u-h,c=i,o=c+u,d=c+u+r;return[[0,c,o,c,d,c,o,c],[0,u,r,u+r,h,u+r+h,r+h,u+r+h]]}else if(t===2){const u=Math.floor(a/2),h=a-u,r=i,c=r+u;return[[0,r,r,r,c,r,r,r],[0,u,u,u,h,u+h,u+h,u+h]]}else{const u=i,h=a;return[[0,u,u,u,u,u,u,u],[0,h,h,h,h,h,h,h]]}}equals(i){return this.lineHeight===i.lineHeight&&this.pixelRatio===i.pixelRatio&&this.overviewRulerLanes===i.overviewRulerLanes&&this.renderBorder===i.renderBorder&&this.borderColor===i.borderColor&&this.hideCursor===i.hideCursor&&this.cursorColor===i.cursorColor&&this.themeType===i.themeType&&k.Color.equals(this.backgroundColor,i.backgroundColor)&&this.top===i.top&&this.right===i.right&&this.domWidth===i.domWidth&&this.domHeight===i.domHeight&&this.canvasWidth===i.canvasWidth&&this.canvasHeight===i.canvasHeight}}class C extends y.ViewPart{constructor(i){super(i),this._domNode=(0,L.createFastDomNode)(document.createElement(\"canvas\")),this._domNode.setClassName(\"decorationsOverviewRuler\"),this._domNode.setPosition(\"absolute\"),this._domNode.setLayerHinting(!0),this._domNode.setContain(\"strict\"),this._domNode.setAttribute(\"aria-hidden\",\"true\"),this._updateSettings(!1),this._tokensColorTrackerListener=S.TokenizationRegistry.onDidChange(n=>{n.changedColorMap&&this._updateSettings(!0)}),this._cursorPositions=[]}dispose(){super.dispose(),this._tokensColorTrackerListener.dispose()}_updateSettings(i){const n=new g(this._context.configuration,this._context.theme);return this._settings&&this._settings.equals(n)?!1:(this._settings=n,this._domNode.setTop(this._settings.top),this._domNode.setRight(this._settings.right),this._domNode.setWidth(this._settings.domWidth),this._domNode.setHeight(this._settings.domHeight),this._domNode.domNode.width=this._settings.canvasWidth,this._domNode.domNode.height=this._settings.canvasHeight,i&&this._render(),!0)}onConfigurationChanged(i){return this._updateSettings(!1)}onCursorStateChanged(i){this._cursorPositions=[];for(let n=0,t=i.selections.length;n<t;n++)this._cursorPositions[n]=i.selections[n].getPosition();return this._cursorPositions.sort(D.Position.compare),!0}onDecorationsChanged(i){return!!i.affectsOverviewRuler}onFlushed(i){return!0}onScrollChanged(i){return i.scrollHeightChanged}onZonesChanged(i){return!0}onThemeChanged(i){return this._updateSettings(!1)}getDomNode(){return this._domNode.domNode}prepareRender(i){}render(i){this._render()}_render(){const i=this._settings.backgroundColor;if(this._settings.overviewRulerLanes===0){this._domNode.setBackgroundColor(i?k.Color.Format.CSS.formatHexA(i):\"\"),this._domNode.setDisplay(\"none\");return}this._domNode.setDisplay(\"block\");const n=this._settings.canvasWidth,t=this._settings.canvasHeight,a=this._settings.lineHeight,u=this._context.viewLayout,h=this._context.viewLayout.getScrollHeight(),r=t/h,c=this._context.viewModel.getAllOverviewRulerDecorations(this._context.theme),o=6*this._settings.pixelRatio|0,d=o/2|0,l=this._domNode.domNode.getContext(\"2d\");i?i.isOpaque()?(l.fillStyle=k.Color.Format.CSS.formatHexA(i),l.fillRect(0,0,n,t)):(l.clearRect(0,0,n,t),l.fillStyle=k.Color.Format.CSS.formatHexA(i),l.fillRect(0,0,n,t)):l.clearRect(0,0,n,t);const p=this._settings.x,m=this._settings.w;c.sort(_.OverviewRulerDecorationsGroup.cmp);for(const v of c){const b=v.color,w=v.data;l.fillStyle=b;let E=0,I=0,M=0;for(let P=0,x=w.length/3;P<x;P++){const T=w[3*P],A=w[3*P+1],N=w[3*P+2];let F=u.getVerticalOffsetForLineNumber(A)*r|0,O=(u.getVerticalOffsetForLineNumber(N)+a)*r|0;if(O-F<o){let U=(F+O)/2|0;U<d?U=d:U+d>t&&(U=t-d),F=U-d,O=U+d}F>M+1||T!==E?(P!==0&&l.fillRect(p[E],I,m[E],M-I),E=T,I=F,M=O):O>M&&(M=O)}l.fillRect(p[E],I,m[E],M-I)}if(!this._settings.hideCursor&&this._settings.cursorColor){const v=2*this._settings.pixelRatio|0,b=v/2|0,w=this._settings.x[7],E=this._settings.w[7];l.fillStyle=this._settings.cursorColor;let I=-100,M=-100;for(let P=0,x=this._cursorPositions.length;P<x;P++){const T=this._cursorPositions[P];let A=u.getVerticalOffsetForLineNumber(T.lineNumber)*r|0;A<b?A=b:A+b>t&&(A=t-b);const N=A-b,F=N+v;N>M+1?(P!==0&&l.fillRect(w,I,E,M-I),I=N,M=F):F>M&&(M=F)}l.fillRect(w,I,E,M-I)}this._settings.renderBorder&&this._settings.borderColor&&this._settings.overviewRulerLanes>0&&(l.beginPath(),l.lineWidth=1,l.strokeStyle=this._settings.borderColor,l.moveTo(0,0),l.lineTo(0,t),l.stroke(),l.moveTo(0,0),l.lineTo(n,0),l.stroke())}}e.DecorationsOverviewRuler=C}),define(ne[849],se([1,0,35,13,53,620,36,80,23,88,430]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewCursors=void 0;class C extends y.ViewPart{constructor(i){super(i);const n=this._context.configuration.options;this._readOnly=n.get(89),this._cursorBlinking=n.get(25),this._cursorStyle=n.get(27),this._cursorSmoothCaretAnimation=n.get(26),this._selectionIsEmpty=!0,this._isComposingInput=!1,this._isVisible=!1,this._primaryCursor=new D.ViewCursor(this._context),this._secondaryCursors=[],this._renderData=[],this._domNode=(0,L.createFastDomNode)(document.createElement(\"div\")),this._domNode.setAttribute(\"role\",\"presentation\"),this._domNode.setAttribute(\"aria-hidden\",\"true\"),this._updateDomClassName(),this._domNode.appendChild(this._primaryCursor.getDomNode()),this._startCursorBlinkAnimation=new k.TimeoutTimer,this._cursorFlatBlinkInterval=new k.IntervalTimer,this._blinkingEnabled=!1,this._editorHasFocus=!1,this._updateBlinking()}dispose(){super.dispose(),this._startCursorBlinkAnimation.dispose(),this._cursorFlatBlinkInterval.dispose()}getDomNode(){return this._domNode}onCompositionStart(i){return this._isComposingInput=!0,this._updateBlinking(),!0}onCompositionEnd(i){return this._isComposingInput=!1,this._updateBlinking(),!0}onConfigurationChanged(i){const n=this._context.configuration.options;this._readOnly=n.get(89),this._cursorBlinking=n.get(25),this._cursorStyle=n.get(27),this._cursorSmoothCaretAnimation=n.get(26),this._updateBlinking(),this._updateDomClassName(),this._primaryCursor.onConfigurationChanged(i);for(let t=0,a=this._secondaryCursors.length;t<a;t++)this._secondaryCursors[t].onConfigurationChanged(i);return!0}_onCursorPositionChanged(i,n,t){const a=this._secondaryCursors.length!==n.length||this._cursorSmoothCaretAnimation===\"explicit\"&&t!==3;if(this._primaryCursor.onCursorPositionChanged(i,a),this._updateBlinking(),this._secondaryCursors.length<n.length){const u=n.length-this._secondaryCursors.length;for(let h=0;h<u;h++){const r=new D.ViewCursor(this._context);this._domNode.domNode.insertBefore(r.getDomNode().domNode,this._primaryCursor.getDomNode().domNode.nextSibling),this._secondaryCursors.push(r)}}else if(this._secondaryCursors.length>n.length){const u=this._secondaryCursors.length-n.length;for(let h=0;h<u;h++)this._domNode.removeChild(this._secondaryCursors[0].getDomNode()),this._secondaryCursors.splice(0,1)}for(let u=0;u<n.length;u++)this._secondaryCursors[u].onCursorPositionChanged(n[u],a)}onCursorStateChanged(i){const n=[];for(let a=0,u=i.selections.length;a<u;a++)n[a]=i.selections[a].getPosition();this._onCursorPositionChanged(n[0],n.slice(1),i.reason);const t=i.selections[0].isEmpty();return this._selectionIsEmpty!==t&&(this._selectionIsEmpty=t,this._updateDomClassName()),!0}onDecorationsChanged(i){return!0}onFlushed(i){return!0}onFocusChanged(i){return this._editorHasFocus=i.isFocused,this._updateBlinking(),!1}onLinesChanged(i){return!0}onLinesDeleted(i){return!0}onLinesInserted(i){return!0}onScrollChanged(i){return!0}onTokensChanged(i){const n=t=>{for(let a=0,u=i.ranges.length;a<u;a++)if(i.ranges[a].fromLineNumber<=t.lineNumber&&t.lineNumber<=i.ranges[a].toLineNumber)return!0;return!1};if(n(this._primaryCursor.getPosition()))return!0;for(const t of this._secondaryCursors)if(n(t.getPosition()))return!0;return!1}onZonesChanged(i){return!0}_getCursorBlinking(){return this._isComposingInput||!this._editorHasFocus?0:this._readOnly?5:this._cursorBlinking}_updateBlinking(){this._startCursorBlinkAnimation.cancel(),this._cursorFlatBlinkInterval.cancel();const i=this._getCursorBlinking(),n=i===0,t=i===5;n?this._hide():this._show(),this._blinkingEnabled=!1,this._updateDomClassName(),!n&&!t&&(i===1?this._cursorFlatBlinkInterval.cancelAndSet(()=>{this._isVisible?this._hide():this._show()},C.BLINK_INTERVAL):this._startCursorBlinkAnimation.setIfNotSet(()=>{this._blinkingEnabled=!0,this._updateDomClassName()},C.BLINK_INTERVAL))}_updateDomClassName(){this._domNode.setClassName(this._getClassName())}_getClassName(){let i=\"cursors-layer\";switch(this._selectionIsEmpty||(i+=\" has-selection\"),this._cursorStyle){case S.TextEditorCursorStyle.Line:i+=\" cursor-line-style\";break;case S.TextEditorCursorStyle.Block:i+=\" cursor-block-style\";break;case S.TextEditorCursorStyle.Underline:i+=\" cursor-underline-style\";break;case S.TextEditorCursorStyle.LineThin:i+=\" cursor-line-thin-style\";break;case S.TextEditorCursorStyle.BlockOutline:i+=\" cursor-block-outline-style\";break;case S.TextEditorCursorStyle.UnderlineThin:i+=\" cursor-underline-thin-style\";break;default:i+=\" cursor-line-style\"}if(this._blinkingEnabled)switch(this._getCursorBlinking()){case 1:i+=\" cursor-blink\";break;case 2:i+=\" cursor-smooth\";break;case 3:i+=\" cursor-phase\";break;case 4:i+=\" cursor-expand\";break;case 5:i+=\" cursor-solid\";break;default:i+=\" cursor-solid\"}else i+=\" cursor-solid\";return(this._cursorSmoothCaretAnimation===\"on\"||this._cursorSmoothCaretAnimation===\"explicit\")&&(i+=\" cursor-smooth-caret-animation\"),i}_show(){this._primaryCursor.show();for(let i=0,n=this._secondaryCursors.length;i<n;i++)this._secondaryCursors[i].show();this._isVisible=!0}_hide(){this._primaryCursor.hide();for(let i=0,n=this._secondaryCursors.length;i<n;i++)this._secondaryCursors[i].hide();this._isVisible=!1}prepareRender(i){this._primaryCursor.prepareRender(i);for(let n=0,t=this._secondaryCursors.length;n<t;n++)this._secondaryCursors[n].prepareRender(i)}render(i){const n=[];let t=0;const a=this._primaryCursor.render(i);a&&(n[t++]=a);for(let u=0,h=this._secondaryCursors.length;u<h;u++){const r=this._secondaryCursors[u].render(i);r&&(n[t++]=r)}this._renderData=n}getLastRenderData(){return this._renderData}}e.ViewCursors=C,C.BLINK_INTERVAL=500,(0,_.registerThemingParticipant)((s,i)=>{const n=s.getColor(f.editorCursorForeground);if(n){let t=s.getColor(f.editorCursorBackground);t||(t=n.opposite()),i.addRule(`.monaco-editor .cursors-layer .cursor { background-color: ${n}; border-color: ${n}; color: ${t}; }`),(0,g.isHighContrast)(s.type)&&i.addRule(`.monaco-editor .cursors-layer.has-selection .cursor { border-left: 1px solid ${t}; border-right: 1px solid ${t}; }`)}})}),define(ne[850],se([1,0,112,11,95,12,80,431]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WhitespaceOverlay=void 0;class f extends L.DynamicViewOverlay{constructor(C){super(),this._context=C,this._options=new _(this._context.configuration),this._selection=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(C){const s=new _(this._context.configuration);return this._options.equals(s)?C.hasChanged(142):(this._options=s,!0)}onCursorStateChanged(C){return this._selection=C.selections,this._options.renderWhitespace===\"selection\"}onDecorationsChanged(C){return!0}onFlushed(C){return!0}onLinesChanged(C){return!0}onLinesDeleted(C){return!0}onLinesInserted(C){return!0}onScrollChanged(C){return C.scrollTopChanged}onZonesChanged(C){return!0}prepareRender(C){if(this._options.renderWhitespace===\"none\"){this._renderResult=null;return}const s=C.visibleRange.startLineNumber,n=C.visibleRange.endLineNumber-s+1,t=new Array(n);for(let u=0;u<n;u++)t[u]=!0;const a=this._context.viewModel.getMinimapLinesRenderingData(C.viewportData.startLineNumber,C.viewportData.endLineNumber,t);this._renderResult=[];for(let u=C.viewportData.startLineNumber;u<=C.viewportData.endLineNumber;u++){const h=u-C.viewportData.startLineNumber,r=a.data[h];let c=null;if(this._options.renderWhitespace===\"selection\"){const o=this._selection;for(const d of o){if(d.endLineNumber<u||d.startLineNumber>u)continue;const l=d.startLineNumber===u?d.startColumn:r.minColumn,p=d.endLineNumber===u?d.endColumn:r.maxColumn;l<p&&(c||(c=[]),c.push(new y.LineRange(l-1,p-1)))}}this._renderResult[h]=this._applyRenderWhitespace(C,u,c,r)}}_applyRenderWhitespace(C,s,i,n){if(this._options.renderWhitespace===\"selection\"&&!i||this._options.renderWhitespace===\"trailing\"&&n.continuesWithWrappedLine)return\"\";const t=this._context.theme.getColor(S.editorWhitespaces),a=this._options.renderWithSVG,u=n.content,h=this._options.stopRenderingLineAfter===-1?u.length:Math.min(this._options.stopRenderingLineAfter,u.length),r=n.continuesWithWrappedLine,c=n.minColumn-1,o=this._options.renderWhitespace===\"boundary\",d=this._options.renderWhitespace===\"trailing\",l=this._options.lineHeight,p=this._options.middotWidth,m=this._options.wsmiddotWidth,v=this._options.spaceWidth,b=Math.abs(m-v),w=Math.abs(p-v),E=b<w?11825:183,I=this._options.canUseHalfwidthRightwardsArrow;let M=\"\",P=!1,x=k.firstNonWhitespaceIndex(u),T;x===-1?(P=!0,x=h,T=h):T=k.lastNonWhitespaceIndex(u);let A=0,N=i&&i[A],F=0;for(let O=c;O<h;O++){const W=u.charCodeAt(O);if(N&&O>=N.endOffset&&(A++,N=i&&i[A]),W!==9&&W!==32||d&&!P&&O<=T)continue;if(o&&O>=x&&O<=T&&W===32){const j=O-1>=0?u.charCodeAt(O-1):0,R=O+1<h?u.charCodeAt(O+1):0;if(j!==32&&R!==32)continue}if(o&&r&&O===h-1){const j=O-1>=0?u.charCodeAt(O-1):0;if(W===32&&j!==32&&j!==9)continue}if(i&&(!N||N.startOffset>O||N.endOffset<=O))continue;const U=C.visibleRangeForPosition(new D.Position(s,O+1));U&&(a?(F=Math.max(F,U.left),W===9?M+=this._renderArrow(l,v,U.left):M+=`<circle cx=\"${(U.left+v/2).toFixed(2)}\" cy=\"${(l/2).toFixed(2)}\" r=\"${(v/7).toFixed(2)}\" />`):W===9?M+=`<div class=\"mwh\" style=\"left:${U.left}px;height:${l}px;\">${I?String.fromCharCode(65515):String.fromCharCode(8594)}</div>`:M+=`<div class=\"mwh\" style=\"left:${U.left}px;height:${l}px;\">${String.fromCharCode(E)}</div>`)}return a?(F=Math.round(F+v),`<svg style=\"position:absolute;width:${F}px;height:${l}px\" viewBox=\"0 0 ${F} ${l}\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"${t}\">`+M+\"</svg>\"):M}_renderArrow(C,s,i){const n=s/7,t=s,a=C/2,u=i,h={x:0,y:n/2},r={x:100/125*t,y:h.y},c={x:r.x-.2*r.x,y:r.y+.2*r.x},o={x:c.x+.1*r.x,y:c.y+.1*r.x},d={x:o.x+.35*r.x,y:o.y-.35*r.x},l={x:d.x,y:-d.y},p={x:o.x,y:-o.y},m={x:c.x,y:-c.y},v={x:r.x,y:-r.y},b={x:h.x,y:-h.y};return`<path d=\"M ${[h,r,c,o,d,l,p,m,v,b].map(I=>`${(u+I.x).toFixed(2)} ${(a+I.y).toFixed(2)}`).join(\" L \")}\" />`}render(C,s){if(!this._renderResult)return\"\";const i=s-C;return i<0||i>=this._renderResult.length?\"\":this._renderResult[i]}}e.WhitespaceOverlay=f;class _{constructor(C){const s=C.options,i=s.get(49),n=s.get(37);n===\"off\"?(this.renderWhitespace=\"none\",this.renderWithSVG=!1):n===\"svg\"?(this.renderWhitespace=s.get(97),this.renderWithSVG=!0):(this.renderWhitespace=s.get(97),this.renderWithSVG=!1),this.spaceWidth=i.spaceWidth,this.middotWidth=i.middotWidth,this.wsmiddotWidth=i.wsmiddotWidth,this.canUseHalfwidthRightwardsArrow=i.canUseHalfwidthRightwardsArrow,this.lineHeight=s.get(65),this.stopRenderingLineAfter=s.get(115)}equals(C){return this.renderWhitespace===C.renderWhitespace&&this.renderWithSVG===C.renderWithSVG&&this.spaceWidth===C.spaceWidth&&this.middotWidth===C.middotWidth&&this.wsmiddotWidth===C.wsmiddotWidth&&this.canUseHalfwidthRightwardsArrow===C.canUseHalfwidthRightwardsArrow&&this.lineHeight===C.lineHeight&&this.stopRenderingLineAfter===C.stopRenderingLineAfter}}}),define(ne[851],se([1,0,7,24,5,35,9,837,847,793,272,592,53,589,845,522,842,846,358,838,523,289,524,821,525,848,534,526,527,843,849,528,12,144,535,531,150,23,355,521,260,850,210,48,8]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P,x,T,A,N,F,O,W,U,j,R,K,G,Z){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.View=void 0;let J=class extends F.ViewEventHandler{constructor(B,V,Y,ie,ae,ce,de){super(),this._instantiationService=de,this._shouldRecomputeGlyphMarginLanes=!1,this._selections=[new k.Selection(1,1,1,1)],this._renderAnimationFrame=null;const he=new g.ViewController(V,ie,ae,B);this._context=new A.ViewContext(V,Y,ie),this._context.addEventHandler(this),this._viewParts=[],this._textAreaHandler=this._instantiationService.createInstance(_.TextAreaHandler,this._context,he,this._createTextAreaHandlerHelper()),this._viewParts.push(this._textAreaHandler),this._linesContent=(0,D.createFastDomNode)(document.createElement(\"div\")),this._linesContent.setClassName(\"lines-content monaco-editor-background\"),this._linesContent.setPosition(\"absolute\"),this.domNode=(0,D.createFastDomNode)(document.createElement(\"div\")),this.domNode.setClassName(this._getEditorClassName()),this.domNode.setAttribute(\"role\",\"code\"),this._overflowGuardContainer=(0,D.createFastDomNode)(document.createElement(\"div\")),i.PartFingerprints.write(this._overflowGuardContainer,3),this._overflowGuardContainer.setClassName(\"overflow-guard\"),this._scrollbar=new u.EditorScrollbar(this._context,this._linesContent,this.domNode,this._overflowGuardContainer),this._viewParts.push(this._scrollbar),this._viewLines=new c.ViewLines(this._context,this._linesContent),this._viewZones=new P.ViewZones(this._context),this._viewParts.push(this._viewZones);const ue=new v.DecorationsOverviewRuler(this._context);this._viewParts.push(ue);const te=new E.ScrollDecorationViewPart(this._context);this._viewParts.push(te);const q=new s.ContentViewOverlays(this._context);this._viewParts.push(q),q.addDynamicOverlay(new t.CurrentLineHighlightOverlay(this._context)),q.addDynamicOverlay(new I.SelectionsOverlay(this._context)),q.addDynamicOverlay(new h.IndentGuidesOverlay(this._context)),q.addDynamicOverlay(new a.DecorationsOverlay(this._context)),q.addDynamicOverlay(new R.WhitespaceOverlay(this._context));const z=new s.MarginViewOverlays(this._context);this._viewParts.push(z),z.addDynamicOverlay(new t.CurrentLineMarginHighlightOverlay(this._context)),z.addDynamicOverlay(new l.MarginViewLineDecorationsOverlay(this._context)),z.addDynamicOverlay(new o.LinesDecorationsOverlay(this._context)),z.addDynamicOverlay(new r.LineNumbersOverlay(this._context)),this._glyphMarginWidgets=new K.GlyphMarginWidgets(this._context),this._viewParts.push(this._glyphMarginWidgets);const ee=new d.Margin(this._context);ee.getDomNode().appendChild(this._viewZones.marginDomNode),ee.getDomNode().appendChild(z.getDomNode()),ee.getDomNode().appendChild(this._glyphMarginWidgets.domNode),this._viewParts.push(ee),this._contentWidgets=new n.ViewContentWidgets(this._context,this.domNode),this._viewParts.push(this._contentWidgets),this._viewCursors=new M.ViewCursors(this._context),this._viewParts.push(this._viewCursors),this._overlayWidgets=new m.ViewOverlayWidgets(this._context),this._viewParts.push(this._overlayWidgets);const $=new w.Rulers(this._context);this._viewParts.push($);const re=new U.BlockDecorations(this._context);this._viewParts.push(re);const oe=new p.Minimap(this._context);if(this._viewParts.push(oe),ue){const ge=this._scrollbar.getOverviewRulerLayoutInfo();ge.parent.insertBefore(ue.getDomNode(),ge.insertBefore)}this._linesContent.appendChild(q.getDomNode()),this._linesContent.appendChild($.domNode),this._linesContent.appendChild(this._viewZones.domNode),this._linesContent.appendChild(this._viewLines.getDomNode()),this._linesContent.appendChild(this._contentWidgets.domNode),this._linesContent.appendChild(this._viewCursors.getDomNode()),this._overflowGuardContainer.appendChild(ee.getDomNode()),this._overflowGuardContainer.appendChild(this._scrollbar.getDomNode()),this._overflowGuardContainer.appendChild(te.getDomNode()),this._overflowGuardContainer.appendChild(this._textAreaHandler.textArea),this._overflowGuardContainer.appendChild(this._textAreaHandler.textAreaCover),this._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode()),this._overflowGuardContainer.appendChild(oe.getDomNode()),this._overflowGuardContainer.appendChild(re.domNode),this.domNode.appendChild(this._overflowGuardContainer),ce?ce.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode):this.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode),this._applyLayout(),this._pointerHandler=this._register(new f.PointerHandler(this._context,he,this._createPointerHandlerHelper()))}_flushAccumulatedAndRenderNow(){this._shouldRecomputeGlyphMarginLanes&&(this._shouldRecomputeGlyphMarginLanes=!1,this._context.configuration.setGlyphMarginDecorationLaneCount(this._computeGlyphMarginLaneCount())),j.inputLatency.onRenderStart(),this._renderNow()}_computeGlyphMarginLaneCount(){const B=this._context.viewModel.model;let V=[];V=V.concat(B.getAllMarginDecorations().map(ae=>{var ce,de;const he=(de=(ce=ae.options.glyphMargin)===null||ce===void 0?void 0:ce.position)!==null&&de!==void 0?de:G.GlyphMarginLane.Left;return{range:ae.range,lane:he}})),V=V.concat(this._glyphMarginWidgets.getWidgets().map(ae=>({range:B.validateRange(ae.preference.range),lane:ae.preference.lane}))),V.sort((ae,ce)=>y.Range.compareRangesUsingStarts(ae.range,ce.range));let Y=null,ie=null;for(const ae of V)if(ae.lane===G.GlyphMarginLane.Left&&(!Y||y.Range.compareRangesUsingEnds(Y,ae.range)<0)&&(Y=ae.range),ae.lane===G.GlyphMarginLane.Right&&(!ie||y.Range.compareRangesUsingEnds(ie,ae.range)<0)&&(ie=ae.range),Y&&ie){if(Y.endLineNumber<ie.startLineNumber){Y=null;continue}if(ie.endLineNumber<Y.startLineNumber){ie=null;continue}return 2}return 1}_createPointerHandlerHelper(){return{viewDomNode:this.domNode.domNode,linesContentDomNode:this._linesContent.domNode,viewLinesDomNode:this._viewLines.getDomNode().domNode,focusTextArea:()=>{this.focus()},dispatchTextAreaEvent:B=>{this._textAreaHandler.textArea.domNode.dispatchEvent(B)},getLastRenderData:()=>{const B=this._viewCursors.getLastRenderData()||[],V=this._textAreaHandler.getLastRenderData();return new W.PointerHandlerLastRenderData(B,V)},renderNow:()=>{this.render(!0,!1)},shouldSuppressMouseDownOnViewZone:B=>this._viewZones.shouldSuppressMouseDownOnViewZone(B),shouldSuppressMouseDownOnWidget:B=>this._contentWidgets.shouldSuppressMouseDownOnWidget(B),getPositionFromDOMInfo:(B,V)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getPositionFromDOMInfo(B,V)),visibleRangeForPosition:(B,V)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(new x.Position(B,V))),getLineWidth:B=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getLineWidth(B))}}_createTextAreaHandlerHelper(){return{visibleRangeForPosition:B=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(B))}}_applyLayout(){const V=this._context.configuration.options.get(142);this.domNode.setWidth(V.width),this.domNode.setHeight(V.height),this._overflowGuardContainer.setWidth(V.width),this._overflowGuardContainer.setHeight(V.height),this._linesContent.setWidth(1e6),this._linesContent.setHeight(1e6)}_getEditorClassName(){const B=this._textAreaHandler.isFocused()?\" focused\":\"\";return this._context.configuration.options.get(139)+\" \"+(0,O.getThemeTypeSelector)(this._context.theme.type)+B}handleEvents(B){super.handleEvents(B),this._scheduleRender()}onConfigurationChanged(B){return this.domNode.setClassName(this._getEditorClassName()),this._applyLayout(),!1}onCursorStateChanged(B){return this._selections=B.selections,!1}onDecorationsChanged(B){return B.affectsGlyphMargin&&(this._shouldRecomputeGlyphMarginLanes=!0),!1}onFocusChanged(B){return this.domNode.setClassName(this._getEditorClassName()),!1}onThemeChanged(B){return this._context.theme.update(B.theme),this.domNode.setClassName(this._getEditorClassName()),!1}dispose(){this._renderAnimationFrame!==null&&(this._renderAnimationFrame.dispose(),this._renderAnimationFrame=null),this._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove(),this._context.removeEventHandler(this),this._viewLines.dispose();for(const B of this._viewParts)B.dispose();super.dispose()}_scheduleRender(){this._renderAnimationFrame===null&&(this._renderAnimationFrame=L.runAtThisOrScheduleAtNextAnimationFrame(this._onRenderScheduled.bind(this),100))}_onRenderScheduled(){this._renderAnimationFrame=null,this._flushAccumulatedAndRenderNow()}_renderNow(){X(()=>this._actualRender())}_getViewPartsToRender(){const B=[];let V=0;for(const Y of this._viewParts)Y.shouldRender()&&(B[V++]=Y);return B}_actualRender(){if(!L.isInDOM(this.domNode.domNode))return;let B=this._getViewPartsToRender();if(!this._viewLines.shouldRender()&&B.length===0)return;const V=this._context.viewLayout.getLinesViewportData();this._context.viewModel.setViewport(V.startLineNumber,V.endLineNumber,V.centeredLineNumber);const Y=new N.ViewportData(this._selections,V,this._context.viewLayout.getWhitespaceViewportData(),this._context.viewModel);this._contentWidgets.shouldRender()&&this._contentWidgets.onBeforeRender(Y),this._viewLines.shouldRender()&&(this._viewLines.renderText(Y),this._viewLines.onDidRender(),B=this._getViewPartsToRender());const ie=new T.RenderingContext(this._context.viewLayout,Y,this._viewLines);for(const ae of B)ae.prepareRender(ie);for(const ae of B)ae.render(ie),ae.onDidRender()}delegateVerticalScrollbarPointerDown(B){this._scrollbar.delegateVerticalScrollbarPointerDown(B)}delegateScrollFromMouseWheelEvent(B){this._scrollbar.delegateScrollFromMouseWheelEvent(B)}restoreState(B){this._context.viewModel.viewLayout.setScrollPosition({scrollTop:B.scrollTop,scrollLeft:B.scrollLeft},1),this._context.viewModel.visibleLinesStabilized()}getOffsetForColumn(B,V){const Y=this._context.viewModel.model.validatePosition({lineNumber:B,column:V}),ie=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(Y);this._flushAccumulatedAndRenderNow();const ae=this._viewLines.visibleRangeForPosition(new x.Position(ie.lineNumber,ie.column));return ae?ae.left:-1}getTargetAtClientPoint(B,V){const Y=this._pointerHandler.getTargetAtClientPoint(B,V);return Y?C.ViewUserInputEvents.convertViewToModelMouseTarget(Y,this._context.viewModel.coordinatesConverter):null}createOverviewRuler(B){return new b.OverviewRuler(this._context,B)}change(B){this._viewZones.changeViewZones(B),this._scheduleRender()}render(B,V){if(V){this._viewLines.forceShouldRender();for(const Y of this._viewParts)Y.forceShouldRender()}B?this._flushAccumulatedAndRenderNow():this._scheduleRender()}writeScreenReaderContent(B){this._textAreaHandler.writeScreenReaderContent(B)}focus(){this._textAreaHandler.focusTextArea()}isFocused(){return this._textAreaHandler.isFocused()}setAriaOptions(B){this._textAreaHandler.setAriaOptions(B)}addContentWidget(B){this._contentWidgets.addWidget(B.widget),this.layoutContentWidget(B),this._scheduleRender()}layoutContentWidget(B){var V,Y,ie,ae,ce,de,he,ue;this._contentWidgets.setWidgetPosition(B.widget,(Y=(V=B.position)===null||V===void 0?void 0:V.position)!==null&&Y!==void 0?Y:null,(ae=(ie=B.position)===null||ie===void 0?void 0:ie.secondaryPosition)!==null&&ae!==void 0?ae:null,(de=(ce=B.position)===null||ce===void 0?void 0:ce.preference)!==null&&de!==void 0?de:null,(ue=(he=B.position)===null||he===void 0?void 0:he.positionAffinity)!==null&&ue!==void 0?ue:null),this._scheduleRender()}removeContentWidget(B){this._contentWidgets.removeWidget(B.widget),this._scheduleRender()}addOverlayWidget(B){this._overlayWidgets.addWidget(B.widget),this.layoutOverlayWidget(B),this._scheduleRender()}layoutOverlayWidget(B){const V=B.position?B.position.preference:null;this._overlayWidgets.setWidgetPosition(B.widget,V)&&this._scheduleRender()}removeOverlayWidget(B){this._overlayWidgets.removeWidget(B.widget),this._scheduleRender()}addGlyphMarginWidget(B){this._glyphMarginWidgets.addWidget(B.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}layoutGlyphMarginWidget(B){const V=B.position;this._glyphMarginWidgets.setWidgetPosition(B.widget,V)&&(this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender())}removeGlyphMarginWidget(B){this._glyphMarginWidgets.removeWidget(B.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}};e.View=J,e.View=J=ke([fe(6,Z.IInstantiationService)],J);function X(H){try{return H()}catch(B){(0,S.onUnexpectedError)(B)}}}),define(ne[852],se([1,0,6,2,5,80,23]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorizedBracketPairsDecorationProvider=void 0;class f extends k.Disposable{constructor(C){super(),this.textModel=C,this.colorProvider=new _,this.onDidChangeEmitter=new L.Emitter,this.onDidChange=this.onDidChangeEmitter.event,this.colorizationOptions=C.getOptions().bracketPairColorizationOptions,this._register(C.bracketPairs.onDidChange(s=>{this.onDidChangeEmitter.fire()}))}handleDidChangeOptions(C){this.colorizationOptions=this.textModel.getOptions().bracketPairColorizationOptions}getDecorationsInRange(C,s,i,n){return n?[]:s===void 0?[]:this.colorizationOptions.enabled?this.textModel.bracketPairs.getBracketsInRange(C,!0).map(a=>({id:`bracket${a.range.toString()}-${a.nestingLevel}`,options:{description:\"BracketPairColorization\",inlineClassName:this.colorProvider.getInlineClassName(a,this.colorizationOptions.independentColorPoolPerBracketType)},ownerId:0,range:a.range})).toArray():[]}getAllDecorations(C,s){return C===void 0?[]:this.colorizationOptions.enabled?this.getDecorationsInRange(new y.Range(1,1,this.textModel.getLineCount(),1),C,s):[]}}e.ColorizedBracketPairsDecorationProvider=f;class _{constructor(){this.unexpectedClosingBracketClassName=\"unexpected-closing-bracket\"}getInlineClassName(C,s){return C.isInvalid?this.unexpectedClosingBracketClassName:this.getInlineClassNameOfLevel(s?C.nestingLevelOfEqualBracketType:C.nestingLevel)}getInlineClassNameOfLevel(C){return`bracket-highlighting-${C%30}`}}(0,S.registerThemingParticipant)((g,C)=>{const s=[D.editorBracketHighlightingForeground1,D.editorBracketHighlightingForeground2,D.editorBracketHighlightingForeground3,D.editorBracketHighlightingForeground4,D.editorBracketHighlightingForeground5,D.editorBracketHighlightingForeground6],i=new _;C.addRule(`.monaco-editor .${i.unexpectedClosingBracketClassName} { color: ${g.getColor(D.editorBracketHighlightingUnexpectedBracketForeground)}; }`);const n=s.map(t=>g.getColor(t)).filter(t=>!!t).filter(t=>!t.isTransparent());for(let t=0;t<30;t++){const a=n[t%n.length];C.addRule(`.monaco-editor .${i.getInlineClassNameOfLevel(t)} { color: ${a}; }`)}})}),define(ne[853],se([1,0,97,2,48,23,80,51,5,54,6,31,65]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MarkerDecorationsService=void 0;class n extends k.Disposable{constructor(u){super(),this.model=u,this._markersData=new Map,this._register((0,k.toDisposable)(()=>{this.model.deltaDecorations([...this._markersData.keys()],[]),this._markersData.clear()}))}update(u,h){const r=[...this._markersData.keys()];this._markersData.clear();const c=this.model.deltaDecorations(r,h);for(let o=0;o<c.length;o++)this._markersData.set(c[o],u[o]);return r.length!==0||c.length!==0}getMarker(u){return this._markersData.get(u.id)}}let t=class extends k.Disposable{constructor(u,h){super(),this._markerService=h,this._onDidChangeMarker=this._register(new C.Emitter),this._markerDecorations=new i.ResourceMap,u.getModels().forEach(r=>this._onModelAdded(r)),this._register(u.onModelAdded(this._onModelAdded,this)),this._register(u.onModelRemoved(this._onModelRemoved,this)),this._register(this._markerService.onMarkerChanged(this._handleMarkerChange,this))}dispose(){super.dispose(),this._markerDecorations.forEach(u=>u.dispose()),this._markerDecorations.clear()}getMarker(u,h){const r=this._markerDecorations.get(u);return r&&r.getMarker(h)||null}_handleMarkerChange(u){u.forEach(h=>{const r=this._markerDecorations.get(h);r&&this._updateDecorations(r)})}_onModelAdded(u){const h=new n(u);this._markerDecorations.set(u.uri,h),this._updateDecorations(h)}_onModelRemoved(u){var h;const r=this._markerDecorations.get(u.uri);r&&(r.dispose(),this._markerDecorations.delete(u.uri)),(u.uri.scheme===g.Schemas.inMemory||u.uri.scheme===g.Schemas.internal||u.uri.scheme===g.Schemas.vscode)&&((h=this._markerService)===null||h===void 0||h.read({resource:u.uri}).map(c=>c.owner).forEach(c=>this._markerService.remove(c,[u.uri])))}_updateDecorations(u){const h=this._markerService.read({resource:u.model.uri,take:500}),r=h.map(c=>({range:this._createDecorationRange(u.model,c),options:this._createDecorationOption(c)}));u.update(h,r)&&this._onDidChangeMarker.fire(u.model)}_createDecorationRange(u,h){let r=_.Range.lift(h);if(h.severity===L.MarkerSeverity.Hint&&!this._hasMarkerTag(h,1)&&!this._hasMarkerTag(h,2)&&(r=r.setEndPosition(r.startLineNumber,r.startColumn+2)),r=u.validateRange(r),r.isEmpty()){const c=u.getLineLastNonWhitespaceColumn(r.startLineNumber)||u.getLineMaxColumn(r.startLineNumber);if(c===1||r.endColumn>=c)return r;const o=u.getWordAtPosition(r.getStartPosition());o&&(r=new _.Range(r.startLineNumber,o.startColumn,r.endLineNumber,o.endColumn))}else if(h.endColumn===Number.MAX_VALUE&&h.startColumn===1&&r.startLineNumber===r.endLineNumber){const c=u.getLineFirstNonWhitespaceColumn(h.startLineNumber);c<r.endColumn&&(r=new _.Range(r.startLineNumber,c,r.endLineNumber,r.endColumn),h.startColumn=c)}return r}_createDecorationOption(u){let h,r,c,o,d;switch(u.severity){case L.MarkerSeverity.Hint:this._hasMarkerTag(u,2)?h=void 0:this._hasMarkerTag(u,1)?h=\"squiggly-unnecessary\":h=\"squiggly-hint\",c=0;break;case L.MarkerSeverity.Warning:h=\"squiggly-warning\",r=(0,D.themeColorFromId)(S.overviewRulerWarning),c=20,d={color:(0,D.themeColorFromId)(s.minimapWarning),position:y.MinimapPosition.Inline};break;case L.MarkerSeverity.Info:h=\"squiggly-info\",r=(0,D.themeColorFromId)(S.overviewRulerInfo),c=10;break;case L.MarkerSeverity.Error:default:h=\"squiggly-error\",r=(0,D.themeColorFromId)(S.overviewRulerError),c=30,d={color:(0,D.themeColorFromId)(s.minimapError),position:y.MinimapPosition.Inline};break}return u.tags&&(u.tags.indexOf(1)!==-1&&(o=\"squiggly-inline-unnecessary\"),u.tags.indexOf(2)!==-1&&(o=\"squiggly-inline-deprecated\")),{description:\"marker-decoration\",stickiness:1,className:h,showIfCollapsed:!0,overviewRuler:{color:r,position:y.OverviewRulerLane.Right},minimap:d,zIndex:c,inlineClassName:o}}_hasMarkerTag(u,h){return u.tags?u.tags.indexOf(h)>=0:!1}};e.MarkerDecorationsService=t,e.MarkerDecorationsService=t=ke([fe(0,f.IModelService),fe(1,L.IMarkerService)],t)}),define(ne[252],se([1,0,124,23,70,519,41]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.toMultilineTokens2=e.SemanticTokensProviderStyling=void 0;let f=class{constructor(i,n,t,a){this._legend=i,this._themeService=n,this._languageService=t,this._logService=a,this._hasWarnedOverlappingTokens=!1,this._hasWarnedInvalidLengthTokens=!1,this._hasWarnedInvalidEditStart=!1,this._hashTable=new C}getMetadata(i,n,t){const a=this._languageService.languageIdCodec.encodeLanguageId(t),u=this._hashTable.get(i,n,a);let h;if(u)h=u.metadata,this._logService.getLevel()===y.LogLevel.Trace&&this._logService.trace(`SemanticTokensProviderStyling [CACHED] ${i} / ${n}: foreground ${L.TokenMetadata.getForeground(h)}, fontStyle ${L.TokenMetadata.getFontStyle(h).toString(2)}`);else{let r=this._legend.tokenTypes[i];const c=[];if(r){let o=n;for(let l=0;o>0&&l<this._legend.tokenModifiers.length;l++)o&1&&c.push(this._legend.tokenModifiers[l]),o=o>>1;o>0&&this._logService.getLevel()===y.LogLevel.Trace&&(this._logService.trace(`SemanticTokensProviderStyling: unknown token modifier index: ${n.toString(2)} for legend: ${JSON.stringify(this._legend.tokenModifiers)}`),c.push(\"not-in-legend\"));const d=this._themeService.getColorTheme().getTokenStyleMetadata(r,c,t);if(typeof d>\"u\")h=2147483647;else{if(h=0,typeof d.italic<\"u\"){const l=(d.italic?1:0)<<11;h|=l|1}if(typeof d.bold<\"u\"){const l=(d.bold?2:0)<<11;h|=l|2}if(typeof d.underline<\"u\"){const l=(d.underline?4:0)<<11;h|=l|4}if(typeof d.strikethrough<\"u\"){const l=(d.strikethrough?8:0)<<11;h|=l|8}if(d.foreground){const l=d.foreground<<15;h|=l|16}h===0&&(h=2147483647)}}else this._logService.getLevel()===y.LogLevel.Trace&&this._logService.trace(`SemanticTokensProviderStyling: unknown token type index: ${i} for legend: ${JSON.stringify(this._legend.tokenTypes)}`),h=2147483647,r=\"not-in-legend\";this._hashTable.add(i,n,a,h),this._logService.getLevel()===y.LogLevel.Trace&&this._logService.trace(`SemanticTokensProviderStyling ${i} (${r}) / ${n} (${c.join(\" \")}): foreground ${L.TokenMetadata.getForeground(h)}, fontStyle ${L.TokenMetadata.getFontStyle(h).toString(2)}`)}return h}warnOverlappingSemanticTokens(i,n){this._hasWarnedOverlappingTokens||(this._hasWarnedOverlappingTokens=!0,console.warn(`Overlapping semantic tokens detected at lineNumber ${i}, column ${n}`))}warnInvalidLengthSemanticTokens(i,n){this._hasWarnedInvalidLengthTokens||(this._hasWarnedInvalidLengthTokens=!0,console.warn(`Semantic token with invalid length detected at lineNumber ${i}, column ${n}`))}warnInvalidEditStart(i,n,t,a,u){this._hasWarnedInvalidEditStart||(this._hasWarnedInvalidEditStart=!0,console.warn(`Invalid semantic tokens edit detected (previousResultId: ${i}, resultId: ${n}) at edit #${t}: The provided start offset ${a} is outside the previous data (length ${u}).`))}};e.SemanticTokensProviderStyling=f,e.SemanticTokensProviderStyling=f=ke([fe(1,k.IThemeService),fe(2,S.ILanguageService),fe(3,y.ILogService)],f);function _(s,i,n){const t=s.data,a=s.data.length/5|0,u=Math.max(Math.ceil(a/1024),400),h=[];let r=0,c=1,o=0;for(;r<a;){const d=r;let l=Math.min(d+u,a);if(l<a){let I=l;for(;I-1>d&&t[5*I]===0;)I--;if(I-1===d){let M=l;for(;M+1<a&&t[5*M]===0;)M++;l=M}else l=I}let p=new Uint32Array((l-d)*4),m=0,v=0,b=0,w=0;for(;r<l;){const I=5*r,M=t[I],P=t[I+1],x=c+M|0,T=M===0?o+P|0:P,A=t[I+2],N=T+A|0,F=t[I+3],O=t[I+4];if(N<=T)i.warnInvalidLengthSemanticTokens(x,T+1);else if(b===x&&w>T)i.warnOverlappingSemanticTokens(x,T+1);else{const W=i.getMetadata(F,O,n);W!==2147483647&&(v===0&&(v=x),p[m]=x-v,p[m+1]=T,p[m+2]=N,p[m+3]=W,m+=4,b=x,w=N)}c=x,o=T,r++}m!==p.length&&(p=p.subarray(0,m));const E=D.SparseMultilineTokens.create(v,p);h.push(E)}return h}e.toMultilineTokens2=_;class g{constructor(i,n,t,a){this.tokenTypeIndex=i,this.tokenModifierSet=n,this.languageId=t,this.metadata=a,this.next=null}}class C{constructor(){this._elementsCount=0,this._currentLengthIndex=0,this._currentLength=C._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1<C._SIZES.length?2/3*this._currentLength:0),this._elements=[],C._nullOutEntries(this._elements,this._currentLength)}static _nullOutEntries(i,n){for(let t=0;t<n;t++)i[t]=null}_hash2(i,n){return(i<<5)-i+n|0}_hashFunc(i,n,t){return this._hash2(this._hash2(i,n),t)%this._currentLength}get(i,n,t){const a=this._hashFunc(i,n,t);let u=this._elements[a];for(;u;){if(u.tokenTypeIndex===i&&u.tokenModifierSet===n&&u.languageId===t)return u;u=u.next}return null}add(i,n,t,a){if(this._elementsCount++,this._growCount!==0&&this._elementsCount>=this._growCount){const u=this._elements;this._currentLengthIndex++,this._currentLength=C._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1<C._SIZES.length?2/3*this._currentLength:0),this._elements=[],C._nullOutEntries(this._elements,this._currentLength);for(const h of u){let r=h;for(;r;){const c=r.next;r.next=null,this._add(r),r=c}}}this._add(new g(i,n,t,a))}_add(i){const n=this._hashFunc(i.tokenTypeIndex,i.tokenModifierSet,i.languageId);i.next=this._elements[n],this._elements[n]=i}}C._SIZES=[3,7,13,31,61,127,251,509,1021,2039,4093,8191,16381,32749,65521,131071,262139,524287,1048573,2097143]}),define(ne[854],se([1,0,2,41,23,70,252,234,50]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SemanticTokensStylingService=void 0;let g=class extends L.Disposable{constructor(s,i,n){super(),this._themeService=s,this._logService=i,this._languageService=n,this._caches=new WeakMap,this._register(this._themeService.onDidColorThemeChange(()=>{this._caches=new WeakMap}))}getStyling(s){return this._caches.has(s)||this._caches.set(s,new S.SemanticTokensProviderStyling(s.getLegend(),this._themeService,this._languageService,this._logService)),this._caches.get(s)}};e.SemanticTokensStylingService=g,e.SemanticTokensStylingService=g=ke([fe(0,y.IThemeService),fe(1,D.ILogService),fe(2,k.ILanguageService)],g),(0,_.registerSingleton)(f.ISemanticTokensStylingService,g,1)}),define(ne[359],se([1,0,99,2,177,48,80,23,49]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractEditorNavigationQuickAccessProvider=void 0;class g{constructor(s){this.options=s,this.rangeHighlightDecorationId=void 0}provide(s,i){var n;const t=new k.DisposableStore;s.canAcceptInBackground=!!(!((n=this.options)===null||n===void 0)&&n.canAcceptInBackground),s.matchOnLabel=s.matchOnDescription=s.matchOnDetail=s.sortByLabel=!1;const a=t.add(new k.MutableDisposable);return a.value=this.doProvide(s,i),t.add(this.onDidActiveTextEditorControlChange(()=>{a.value=void 0,a.value=this.doProvide(s,i)})),t}doProvide(s,i){var n;const t=new k.DisposableStore,a=this.activeTextEditorControl;if(a&&this.canProvideWithTextEditor(a)){const u={editor:a},h=(0,y.getCodeEditor)(a);if(h){let r=(n=a.saveViewState())!==null&&n!==void 0?n:void 0;t.add(h.onDidChangeCursorPosition(()=>{var c;r=(c=a.saveViewState())!==null&&c!==void 0?c:void 0})),u.restoreViewState=()=>{r&&a===this.activeTextEditorControl&&a.restoreViewState(r)},t.add((0,L.once)(i.onCancellationRequested)(()=>{var c;return(c=u.restoreViewState)===null||c===void 0?void 0:c.call(u)}))}t.add((0,k.toDisposable)(()=>this.clearDecorations(a))),t.add(this.provideWithTextEditor(u,s,i))}else t.add(this.provideWithoutTextEditor(s,i));return t}canProvideWithTextEditor(s){return!0}gotoLocation({editor:s},i){s.setSelection(i.range),s.revealRangeInCenter(i.range,0),i.preserveFocus||s.focus();const n=s.getModel();n&&\"getLineContent\"in n&&(0,_.status)(`${n.getLineContent(i.range.startLineNumber)}`)}getModel(s){var i;return(0,y.isDiffEditor)(s)?(i=s.getModel())===null||i===void 0?void 0:i.modified:s.getModel()}addDecorations(s,i){s.changeDecorations(n=>{const t=[];this.rangeHighlightDecorationId&&(t.push(this.rangeHighlightDecorationId.overviewRulerDecorationId),t.push(this.rangeHighlightDecorationId.rangeHighlightId),this.rangeHighlightDecorationId=void 0);const a=[{range:i,options:{description:\"quick-access-range-highlight\",className:\"rangeHighlight\",isWholeLine:!0}},{range:i,options:{description:\"quick-access-range-highlight-overview\",overviewRuler:{color:(0,f.themeColorFromId)(S.overviewRulerRangeHighlight),position:D.OverviewRulerLane.Full}}}],[u,h]=n.deltaDecorations(t,a);this.rangeHighlightDecorationId={rangeHighlightId:u,overviewRulerDecorationId:h}})}clearDecorations(s){const i=this.rangeHighlightDecorationId;i&&(s.changeDecorations(n=>{n.deltaDecorations([i.overviewRulerDecorationId,i.rangeHighlightId],[])}),this.rangeHighlightDecorationId=void 0)}}e.AbstractEditorNavigationQuickAccessProvider=g}),define(ne[855],se([1,0,2,177,359,691]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractGotoLineQuickAccessProvider=void 0;class S extends y.AbstractEditorNavigationQuickAccessProvider{constructor(){super({canAcceptInBackground:!0})}provideWithoutTextEditor(_){const g=(0,D.localize)(0,null);return _.items=[{label:g}],_.ariaLabel=g,L.Disposable.None}provideWithTextEditor(_,g,C){const s=_.editor,i=new L.DisposableStore;i.add(g.onDidAccept(a=>{const[u]=g.selectedItems;if(u){if(!this.isValidLineNumber(s,u.lineNumber))return;this.gotoLocation(_,{range:this.toRange(u.lineNumber,u.column),keyMods:g.keyMods,preserveFocus:a.inBackground}),a.inBackground||g.hide()}}));const n=()=>{const a=this.parsePosition(s,g.value.trim().substr(S.PREFIX.length)),u=this.getPickLabel(s,a.lineNumber,a.column);if(g.items=[{lineNumber:a.lineNumber,column:a.column,label:u}],g.ariaLabel=u,!this.isValidLineNumber(s,a.lineNumber)){this.clearDecorations(s);return}const h=this.toRange(a.lineNumber,a.column);s.revealRangeInCenter(h,0),this.addDecorations(s,h)};n(),i.add(g.onDidChangeValue(()=>n()));const t=(0,k.getCodeEditor)(s);return t&&t.getOptions().get(66).renderType===2&&(t.updateOptions({lineNumbers:\"on\"}),i.add((0,L.toDisposable)(()=>t.updateOptions({lineNumbers:\"relative\"})))),i}toRange(_=1,g=1){return{startLineNumber:_,startColumn:g,endLineNumber:_,endColumn:g}}parsePosition(_,g){const C=g.split(/,|:|#/).map(i=>parseInt(i,10)).filter(i=>!isNaN(i)),s=this.lineCount(_)+1;return{lineNumber:C[0]>0?C[0]:s+C[0],column:C[1]}}getPickLabel(_,g,C){if(this.isValidLineNumber(_,g))return this.isValidColumn(_,g,C)?(0,D.localize)(1,null,g,C):(0,D.localize)(2,null,g);const s=_.getPosition()||{lineNumber:1,column:1},i=this.lineCount(_);return i>1?(0,D.localize)(3,null,s.lineNumber,s.column,i):(0,D.localize)(4,null,s.lineNumber,s.column)}isValidLineNumber(_,g){return!g||typeof g!=\"number\"?!1:g>0&&g<=this.lineCount(_)}isValidColumn(_,g,C){if(!C||typeof C!=\"number\")return!1;const s=this.getModel(_);if(!s)return!1;const i={lineNumber:g,column:C};return s.validatePosition(i).equals(i)}lineCount(_){var g,C;return(C=(g=this.getModel(_))===null||g===void 0?void 0:g.getLineCount())!==null&&C!==void 0?C:0}}e.AbstractGotoLineQuickAccessProvider=S,S.PREFIX=\":\"}),define(ne[856],se([1,0,13,19,25,26,570,2,11,5,29,188,359,692,18,14]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";var u;Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractGotoSymbolQuickAccessProvider=void 0;let h=u=class extends i.AbstractEditorNavigationQuickAccessProvider{constructor(d,l,p=Object.create(null)){super(p),this._languageFeaturesService=d,this._outlineModelService=l,this.options=p,this.options.canAcceptInBackground=!0}provideWithoutTextEditor(d){return this.provideLabelPick(d,(0,n.localize)(0,null)),f.Disposable.None}provideWithTextEditor(d,l,p){const m=d.editor,v=this.getModel(m);return v?this._languageFeaturesService.documentSymbolProvider.has(v)?this.doProvideWithEditorSymbols(d,v,l,p):this.doProvideWithoutEditorSymbols(d,v,l,p):f.Disposable.None}doProvideWithoutEditorSymbols(d,l,p,m){const v=new f.DisposableStore;return this.provideLabelPick(p,(0,n.localize)(1,null)),we(this,void 0,void 0,function*(){!(yield this.waitForLanguageSymbolRegistry(l,v))||m.isCancellationRequested||v.add(this.doProvideWithEditorSymbols(d,l,p,m))}),v}provideLabelPick(d,l){d.items=[{label:l,index:0,kind:14}],d.ariaLabel=l}waitForLanguageSymbolRegistry(d,l){return we(this,void 0,void 0,function*(){if(this._languageFeaturesService.documentSymbolProvider.has(d))return!0;const p=new L.DeferredPromise,m=l.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>{this._languageFeaturesService.documentSymbolProvider.has(d)&&(m.dispose(),p.complete(!0))}));return l.add((0,f.toDisposable)(()=>p.complete(!1))),p.p})}doProvideWithEditorSymbols(d,l,p,m){var v;const b=d.editor,w=new f.DisposableStore;w.add(p.onDidAccept(P=>{const[x]=p.selectedItems;x&&x.range&&(this.gotoLocation(d,{range:x.range.selection,keyMods:p.keyMods,preserveFocus:P.inBackground}),P.inBackground||p.hide())})),w.add(p.onDidTriggerItemButton(({item:P})=>{P&&P.range&&(this.gotoLocation(d,{range:P.range.selection,keyMods:p.keyMods,forceSideBySide:!0}),p.hide())}));const E=this.getDocumentSymbols(l,m);let I;const M=P=>we(this,void 0,void 0,function*(){I?.dispose(!0),p.busy=!1,I=new k.CancellationTokenSource(m),p.busy=!0;try{const x=(0,S.prepareQuery)(p.value.substr(u.PREFIX.length).trim()),T=yield this.doGetSymbolPicks(E,x,void 0,I.token);if(m.isCancellationRequested)return;if(T.length>0){if(p.items=T,P&&x.original.length===0){const A=(0,a.findLast)(T,N=>!!(N.type!==\"separator\"&&N.range&&g.Range.containsPosition(N.range.decoration,P)));A&&(p.activeItems=[A])}}else x.original.length>0?this.provideLabelPick(p,(0,n.localize)(2,null)):this.provideLabelPick(p,(0,n.localize)(3,null))}finally{m.isCancellationRequested||(p.busy=!1)}});return w.add(p.onDidChangeValue(()=>M(void 0))),M((v=b.getSelection())===null||v===void 0?void 0:v.getPosition()),w.add(p.onDidChangeActive(()=>{const[P]=p.activeItems;P&&P.range&&(b.revealRangeInCenter(P.range.selection,0),this.addDecorations(b,P.range.decoration))})),w}doGetSymbolPicks(d,l,p,m){var v,b;return we(this,void 0,void 0,function*(){const w=yield d;if(m.isCancellationRequested)return[];const E=l.original.indexOf(u.SCOPE_PREFIX)===0,I=E?1:0;let M,P;l.values&&l.values.length>1?(M=(0,S.pieceToQuery)(l.values[0]),P=(0,S.pieceToQuery)(l.values.slice(1))):M=l;let x;const T=(b=(v=this.options)===null||v===void 0?void 0:v.openSideBySideDirection)===null||b===void 0?void 0:b.call(v);T&&(x=[{iconClass:T===\"right\"?D.ThemeIcon.asClassName(y.Codicon.splitHorizontal):D.ThemeIcon.asClassName(y.Codicon.splitVertical),tooltip:T===\"right\"?(0,n.localize)(4,null):(0,n.localize)(5,null)}]);const A=[];for(let O=0;O<w.length;O++){const W=w[O],U=(0,_.trim)(W.name),j=`$(${C.SymbolKinds.toIcon(W.kind).id}) ${U}`,R=j.length-U.length;let K=W.containerName;p?.extraContainerLabel&&(K?K=`${p.extraContainerLabel} \\u2022 ${K}`:K=p.extraContainerLabel);let G,Z,J,X;if(l.original.length>I){let B=!1;if(M!==l&&([G,Z]=(0,S.scoreFuzzy2)(j,Object.assign(Object.assign({},l),{values:void 0}),I,R),typeof G==\"number\"&&(B=!0)),typeof G!=\"number\"&&([G,Z]=(0,S.scoreFuzzy2)(j,M,I,R),typeof G!=\"number\"))continue;if(!B&&P){if(K&&P.original.length>0&&([J,X]=(0,S.scoreFuzzy2)(K,P)),typeof J!=\"number\")continue;typeof G==\"number\"&&(G+=J)}}const H=W.tags&&W.tags.indexOf(1)>=0;A.push({index:O,kind:W.kind,score:G,label:j,ariaLabel:(0,C.getAriaLabelForSymbol)(W.name,W.kind),description:K,highlights:H?void 0:{label:Z,description:X},range:{selection:g.Range.collapseToStart(W.selectionRange),decoration:W.range},strikethrough:H,buttons:x})}const N=A.sort((O,W)=>E?this.compareByKindAndScore(O,W):this.compareByScore(O,W));let F=[];if(E){let j=function(){W&&typeof O==\"number\"&&U>0&&(W.label=(0,_.format)(c[O]||r,U))},O,W,U=0;for(const R of N)O!==R.kind?(j(),O=R.kind,U=1,W={type:\"separator\"},F.push(W)):U++,F.push(R);j()}else N.length>0&&(F=[{label:(0,n.localize)(6,null,A.length),type:\"separator\"},...N]);return F})}compareByScore(d,l){if(typeof d.score!=\"number\"&&typeof l.score==\"number\")return 1;if(typeof d.score==\"number\"&&typeof l.score!=\"number\")return-1;if(typeof d.score==\"number\"&&typeof l.score==\"number\"){if(d.score>l.score)return-1;if(d.score<l.score)return 1}return d.index<l.index?-1:d.index>l.index?1:0}compareByKindAndScore(d,l){const p=c[d.kind]||r,m=c[l.kind]||r,v=p.localeCompare(m);return v===0?this.compareByScore(d,l):v}getDocumentSymbols(d,l){return we(this,void 0,void 0,function*(){const p=yield this._outlineModelService.getOrCreate(d,l);return l.isCancellationRequested?[]:p.asListOfDocumentSymbols()})}};e.AbstractGotoSymbolQuickAccessProvider=h,h.PREFIX=\"@\",h.SCOPE_PREFIX=\":\",h.PREFIX_BY_CATEGORY=`${u.PREFIX}${u.SCOPE_PREFIX}`,e.AbstractGotoSymbolQuickAccessProvider=h=u=ke([fe(0,t.ILanguageFeaturesService),fe(1,s.IOutlineModelService)],h);const r=(0,n.localize)(7,null),c={[5]:(0,n.localize)(8,null),[11]:(0,n.localize)(9,null),[8]:(0,n.localize)(10,null),[12]:(0,n.localize)(11,null),[4]:(0,n.localize)(12,null),[22]:(0,n.localize)(13,null),[23]:(0,n.localize)(14,null),[24]:(0,n.localize)(15,null),[10]:(0,n.localize)(16,null),[2]:(0,n.localize)(17,null),[3]:(0,n.localize)(18,null),[25]:(0,n.localize)(19,null),[1]:(0,n.localize)(20,null),[6]:(0,n.localize)(21,null),[9]:(0,n.localize)(22,null),[21]:(0,n.localize)(23,null),[14]:(0,n.localize)(24,null),[0]:(0,n.localize)(25,null),[17]:(0,n.localize)(26,null),[15]:(0,n.localize)(27,null),[16]:(0,n.localize)(28,null),[18]:(0,n.localize)(29,null),[19]:(0,n.localize)(30,null),[7]:(0,n.localize)(31,null),[13]:(0,n.localize)(32,null)}}),define(ne[857],se([1,0,2,12,695,15,34,31,23,459]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RenameInputField=e.CONTEXT_RENAME_INPUT_VISIBLE=void 0,e.CONTEXT_RENAME_INPUT_VISIBLE=new D.RawContextKey(\"renameInputVisible\",!1,(0,y.localize)(0,null));let g=class{constructor(s,i,n,t,a){this._editor=s,this._acceptKeybindings=i,this._themeService=n,this._keybindingService=t,this._disposables=new L.DisposableStore,this.allowEditorOverflow=!0,this._visibleContextKey=e.CONTEXT_RENAME_INPUT_VISIBLE.bindTo(a),this._editor.addContentWidget(this),this._disposables.add(this._editor.onDidChangeConfiguration(u=>{u.hasChanged(49)&&this._updateFont()})),this._disposables.add(n.onDidColorThemeChange(this._updateStyles,this))}dispose(){this._disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return\"__renameInputWidget\"}getDomNode(){return this._domNode||(this._domNode=document.createElement(\"div\"),this._domNode.className=\"monaco-editor rename-box\",this._input=document.createElement(\"input\"),this._input.className=\"rename-input\",this._input.type=\"text\",this._input.setAttribute(\"aria-label\",(0,y.localize)(1,null)),this._domNode.appendChild(this._input),this._label=document.createElement(\"div\"),this._label.className=\"rename-label\",this._domNode.appendChild(this._label),this._updateFont(),this._updateStyles(this._themeService.getColorTheme())),this._domNode}_updateStyles(s){var i,n,t,a;if(!this._input||!this._domNode)return;const u=s.getColor(f.widgetShadow),h=s.getColor(f.widgetBorder);this._domNode.style.backgroundColor=String((i=s.getColor(f.editorWidgetBackground))!==null&&i!==void 0?i:\"\"),this._domNode.style.boxShadow=u?` 0 0 8px 2px ${u}`:\"\",this._domNode.style.border=h?`1px solid ${h}`:\"\",this._domNode.style.color=String((n=s.getColor(f.inputForeground))!==null&&n!==void 0?n:\"\"),this._input.style.backgroundColor=String((t=s.getColor(f.inputBackground))!==null&&t!==void 0?t:\"\");const r=s.getColor(f.inputBorder);this._input.style.borderWidth=r?\"1px\":\"0px\",this._input.style.borderStyle=r?\"solid\":\"none\",this._input.style.borderColor=(a=r?.toString())!==null&&a!==void 0?a:\"none\"}_updateFont(){if(!this._input||!this._label)return;const s=this._editor.getOption(49);this._input.style.fontFamily=s.fontFamily,this._input.style.fontWeight=s.fontWeight,this._input.style.fontSize=`${s.fontSize}px`,this._label.style.fontSize=`${s.fontSize*.8}px`}getPosition(){return this._visible?{position:this._position,preference:[2,1]}:null}beforeRender(){var s,i;const[n,t]=this._acceptKeybindings;return this._label.innerText=(0,y.localize)(2,null,(s=this._keybindingService.lookupKeybinding(n))===null||s===void 0?void 0:s.getLabel(),(i=this._keybindingService.lookupKeybinding(t))===null||i===void 0?void 0:i.getLabel()),null}afterRender(s){s||this.cancelInput(!0)}acceptInput(s){var i;(i=this._currentAcceptInput)===null||i===void 0||i.call(this,s)}cancelInput(s){var i;(i=this._currentCancelInput)===null||i===void 0||i.call(this,s)}getInput(s,i,n,t,a,u){this._domNode.classList.toggle(\"preview\",a),this._position=new k.Position(s.startLineNumber,s.startColumn),this._input.value=i,this._input.setAttribute(\"selectionStart\",n.toString()),this._input.setAttribute(\"selectionEnd\",t.toString()),this._input.size=Math.max((s.endColumn-s.startColumn)*1.1,20);const h=new L.DisposableStore;return new Promise(r=>{this._currentCancelInput=c=>(this._currentAcceptInput=void 0,this._currentCancelInput=void 0,r(c),!0),this._currentAcceptInput=c=>{if(this._input.value.trim().length===0||this._input.value===i){this.cancelInput(!0);return}this._currentAcceptInput=void 0,this._currentCancelInput=void 0,r({newName:this._input.value,wantsPreview:a&&c})},h.add(u.onCancellationRequested(()=>this.cancelInput(!0))),h.add(this._editor.onDidBlurEditorWidget(()=>this.cancelInput(!document.hasFocus()))),this._show()}).finally(()=>{h.dispose(),this._hide()})}_show(){this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._visibleContextKey.set(!0),this._editor.layoutContentWidget(this),setTimeout(()=>{this._input.focus(),this._input.setSelectionRange(parseInt(this._input.getAttribute(\"selectionStart\")),parseInt(this._input.getAttribute(\"selectionEnd\")))},100)}_hide(){this._visible=!1,this._visibleContextKey.reset(),this._editor.layoutContentWidget(this)}};e.RenameInputField=g,e.RenameInputField=g=ke([fe(2,_.IThemeService),fe(3,S.IKeybindingService),fe(4,D.IContextKeyService)],g)}),define(ne[858],se([1,0,49,13,19,9,2,20,22,104,16,132,33,12,5,21,187,190,694,98,15,8,70,43,77,37,857,18]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w){\"use strict\";var E;Object.defineProperty(e,\"__esModule\",{value:!0}),e.RenameAction=e.rename=void 0;class I{constructor(N,F,O){this.model=N,this.position=F,this._providerRenameIdx=0,this._providers=O.ordered(N)}hasProvider(){return this._providers.length>0}resolveRenameLocation(N){return we(this,void 0,void 0,function*(){const F=[];for(this._providerRenameIdx=0;this._providerRenameIdx<this._providers.length;this._providerRenameIdx++){const W=this._providers[this._providerRenameIdx];if(!W.resolveRenameLocation)break;const U=yield W.resolveRenameLocation(this.model,this.position,N);if(U){if(U.rejectReason){F.push(U.rejectReason);continue}return U}}const O=this.model.getWordAtPosition(this.position);return O?{range:new t.Range(this.position.lineNumber,O.startColumn,this.position.lineNumber,O.endColumn),text:O.word,rejectReason:F.length>0?F.join(`\n`):void 0}:{range:t.Range.fromPositions(this.position),text:\"\",rejectReason:F.length>0?F.join(`\n`):void 0}})}provideRenameEdits(N,F){return we(this,void 0,void 0,function*(){return this._provideRenameEdits(N,this._providerRenameIdx,[],F)})}_provideRenameEdits(N,F,O,W){return we(this,void 0,void 0,function*(){const U=this._providers[F];if(!U)return{edits:[],rejectReason:O.join(`\n`)};const j=yield U.provideRenameEdits(this.model,this.position,N,W);if(j){if(j.rejectReason)return this._provideRenameEdits(N,F+1,O.concat(j.rejectReason),W)}else return this._provideRenameEdits(N,F+1,O.concat(r.localize(0,null)),W);return j})}}function M(A,N,F,O){return we(this,void 0,void 0,function*(){const W=new I(N,F,A),U=yield W.resolveRenameLocation(y.CancellationToken.None);return U?.rejectReason?{edits:[],rejectReason:U.rejectReason}:W.provideRenameEdits(O,y.CancellationToken.None)})}e.rename=M;let P=E=class{static get(N){return N.getContribution(E.ID)}constructor(N,F,O,W,U,j,R,K){this.editor=N,this._instaService=F,this._notificationService=O,this._bulkEditService=W,this._progressService=U,this._logService=j,this._configService=R,this._languageFeaturesService=K,this._disposableStore=new S.DisposableStore,this._cts=new y.CancellationTokenSource,this._renameInputField=this._disposableStore.add(this._instaService.createInstance(b.RenameInputField,this.editor,[\"acceptRenameInput\",\"acceptRenameInputWithPreview\"]))}dispose(){this._disposableStore.dispose(),this._cts.dispose(!0)}run(){var N,F;return we(this,void 0,void 0,function*(){if(this._cts.dispose(!0),this._cts=new y.CancellationTokenSource,!this.editor.hasModel())return;const O=this.editor.getPosition(),W=new I(this.editor.getModel(),O,this._languageFeaturesService.renameProvider);if(!W.hasProvider())return;const U=new g.EditorStateCancellationTokenSource(this.editor,5,void 0,this._cts.token);let j;try{const B=W.resolveRenameLocation(U.token);this._progressService.showWhile(B,250),j=yield B}catch(B){(N=h.MessageController.get(this.editor))===null||N===void 0||N.showMessage(B||r.localize(1,null),O);return}finally{U.dispose()}if(!j)return;if(j.rejectReason){(F=h.MessageController.get(this.editor))===null||F===void 0||F.showMessage(j.rejectReason,O);return}if(U.token.isCancellationRequested)return;const R=new g.EditorStateCancellationTokenSource(this.editor,5,j.range,this._cts.token),K=this.editor.getSelection();let G=0,Z=j.text.length;!t.Range.isEmpty(K)&&!t.Range.spansMultipleLines(K)&&t.Range.containsRange(j.range,K)&&(G=Math.max(0,K.startColumn-j.range.startColumn),Z=Math.min(j.range.endColumn,K.endColumn)-j.range.startColumn);const J=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,\"editor.rename.enablePreview\"),X=yield this._renameInputField.getInput(j.range,j.text,G,Z,J,R.token);if(typeof X==\"boolean\"){X&&this.editor.focus(),R.dispose();return}this.editor.focus();const H=(0,k.raceCancellation)(W.provideRenameEdits(X.newName,R.token),R.token).then(B=>we(this,void 0,void 0,function*(){if(!(!B||!this.editor.hasModel())){if(B.rejectReason){this._notificationService.info(B.rejectReason);return}this.editor.setSelection(t.Range.fromPositions(this.editor.getSelection().getPosition())),this._bulkEditService.apply(B,{editor:this.editor,showPreview:X.wantsPreview,label:r.localize(2,null,j?.text,X.newName),code:\"undoredo.rename\",quotableLabel:r.localize(3,null,j?.text,X.newName),respectAutoSaveConfig:!0}).then(V=>{V.ariaSummary&&(0,L.alert)(r.localize(4,null,j.text,X.newName,V.ariaSummary))}).catch(V=>{this._notificationService.error(r.localize(5,null)),this._logService.error(V)})}}),B=>{this._notificationService.error(r.localize(6,null)),this._logService.error(B)}).finally(()=>{R.dispose()});return this._progressService.showWhile(H,250),H})}acceptRenameInput(N){this._renameInputField.acceptInput(N)}cancelRenameInput(){this._renameInputField.cancelInput(!0)}};P.ID=\"editor.contrib.renameController\",P=E=ke([fe(1,d.IInstantiationService),fe(2,p.INotificationService),fe(3,s.IBulkEditService),fe(4,m.IEditorProgressService),fe(5,l.ILogService),fe(6,u.ITextResourceConfigurationService),fe(7,w.ILanguageFeaturesService)],P);class x extends C.EditorAction{constructor(){super({id:\"editor.action.rename\",label:r.localize(7,null),alias:\"Rename Symbol\",precondition:o.ContextKeyExpr.and(a.EditorContextKeys.writable,a.EditorContextKeys.hasRenameProvider),kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:\"1_modification\",order:1.1}})}runCommand(N,F){const O=N.get(i.ICodeEditorService),[W,U]=Array.isArray(F)&&F||[void 0,void 0];return _.URI.isUri(W)&&n.Position.isIPosition(U)?O.openCodeEditor({resource:W},O.getActiveCodeEditor()).then(j=>{j&&(j.setPosition(U),j.invokeWithinContext(R=>(this.reportTelemetry(R,j),this.run(R,j))))},D.onUnexpectedError):super.runCommand(N,F)}run(N,F){const O=P.get(F);return O?O.run():Promise.resolve()}}e.RenameAction=x,(0,C.registerEditorContribution)(P.ID,P,4),(0,C.registerEditorAction)(x);const T=C.EditorCommand.bindToContribution(P.get);(0,C.registerEditorCommand)(new T({id:\"acceptRenameInput\",precondition:b.CONTEXT_RENAME_INPUT_VISIBLE,handler:A=>A.acceptRenameInput(!1),kbOpts:{weight:100+99,kbExpr:o.ContextKeyExpr.and(a.EditorContextKeys.focus,o.ContextKeyExpr.not(\"isComposing\")),primary:3}})),(0,C.registerEditorCommand)(new T({id:\"acceptRenameInputWithPreview\",precondition:o.ContextKeyExpr.and(b.CONTEXT_RENAME_INPUT_VISIBLE,o.ContextKeyExpr.has(\"config.editor.rename.enablePreview\")),handler:A=>A.acceptRenameInput(!0),kbOpts:{weight:100+99,kbExpr:o.ContextKeyExpr.and(a.EditorContextKeys.focus,o.ContextKeyExpr.not(\"isComposing\")),primary:1024+3}})),(0,C.registerEditorCommand)(new T({id:\"cancelRenameInput\",precondition:b.CONTEXT_RENAME_INPUT_VISIBLE,handler:A=>A.cancelRenameInput(),kbOpts:{weight:100+99,kbExpr:a.EditorContextKeys.focus,primary:9,secondary:[1033]}})),(0,C.registerModelAndPositionCommand)(\"_executeDocumentRenameProvider\",function(A,N,F,...O){const[W]=O;(0,f.assertType)(typeof W==\"string\");const{renameProvider:U}=A.get(w.ILanguageFeaturesService);return M(U,N,F,W)}),(0,C.registerModelAndPositionCommand)(\"_executePrepareRename\",function(A,N,F){return we(this,void 0,void 0,function*(){const{renameProvider:O}=A.get(w.ILanguageFeaturesService),U=yield new I(N,F,O).resolveRenameLocation(y.CancellationToken.None);if(U?.rejectReason)throw new Error(U.rejectReason);return U})}),v.Registry.as(c.Extensions.Configuration).registerConfiguration({id:\"editor\",properties:{\"editor.rename.enablePreview\":{scope:5,description:r.localize(8,null),default:!0,type:\"boolean\"}}})}),define(ne[859],se([1,0,2,9,51,28,13,19,23,252,333,76,58,18,234,149,297]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){\"use strict\";var h;Object.defineProperty(e,\"__esModule\",{value:!0}),e.DocumentSemanticTokensFeature=void 0;let r=class extends L.Disposable{constructor(l,p,m,v,b,w){super(),this._watchers=Object.create(null);const E=P=>{this._watchers[P.uri.toString()]=new c(P,l,m,b,w)},I=(P,x)=>{x.dispose(),delete this._watchers[P.uri.toString()]},M=()=>{for(const P of p.getModels()){const x=this._watchers[P.uri.toString()];(0,u.isSemanticColoringEnabled)(P,m,v)?x||E(P):x&&I(P,x)}};this._register(p.onModelAdded(P=>{(0,u.isSemanticColoringEnabled)(P,m,v)&&E(P)})),this._register(p.onModelRemoved(P=>{const x=this._watchers[P.uri.toString()];x&&I(P,x)})),this._register(v.onDidChangeConfiguration(P=>{P.affectsConfiguration(u.SEMANTIC_HIGHLIGHTING_SETTING_ID)&&M()})),this._register(m.onDidColorThemeChange(M))}dispose(){for(const l of Object.values(this._watchers))l.dispose();super.dispose()}};e.DocumentSemanticTokensFeature=r,e.DocumentSemanticTokensFeature=r=ke([fe(0,t.ISemanticTokensStylingService),fe(1,y.IModelService),fe(2,_.IThemeService),fe(3,D.IConfigurationService),fe(4,s.ILanguageFeatureDebounceService),fe(5,n.ILanguageFeaturesService)],r);let c=h=class extends L.Disposable{constructor(l,p,m,v,b){super(),this._semanticTokensStylingService=p,this._isDisposed=!1,this._model=l,this._provider=b.documentSemanticTokensProvider,this._debounceInformation=v.for(this._provider,\"DocumentSemanticTokens\",{min:h.REQUEST_MIN_DELAY,max:h.REQUEST_MAX_DELAY}),this._fetchDocumentSemanticTokens=this._register(new S.RunOnceScheduler(()=>this._fetchDocumentSemanticTokensNow(),h.REQUEST_MIN_DELAY)),this._currentDocumentResponse=null,this._currentDocumentRequestCancellationTokenSource=null,this._documentProvidersChangeListeners=[],this._providersChangedDuringRequest=!1,this._register(this._model.onDidChangeContent(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeAttached(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeLanguage(()=>{this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(0)}));const w=()=>{(0,L.dispose)(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const E of this._provider.all(l))typeof E.onDidChange==\"function\"&&this._documentProvidersChangeListeners.push(E.onDidChange(()=>{if(this._currentDocumentRequestCancellationTokenSource){this._providersChangedDuringRequest=!0;return}this._fetchDocumentSemanticTokens.schedule(0)}))};w(),this._register(this._provider.onDidChange(()=>{w(),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(m.onDidColorThemeChange(E=>{this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._fetchDocumentSemanticTokens.schedule(0)}dispose(){this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),(0,L.dispose)(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[],this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;if(!(0,C.hasDocumentSemanticTokensProvider)(this._provider,this._model)){this._currentDocumentResponse&&this._model.tokenization.setSemanticTokens(null,!1);return}if(!this._model.isAttachedToEditor())return;const l=new f.CancellationTokenSource,p=this._currentDocumentResponse?this._currentDocumentResponse.provider:null,m=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,v=(0,C.getDocumentSemanticTokens)(this._provider,this._model,p,m,l.token);this._currentDocumentRequestCancellationTokenSource=l,this._providersChangedDuringRequest=!1;const b=[],w=this._model.onDidChangeContent(I=>{b.push(I)}),E=new i.StopWatch(!1);v.then(I=>{if(this._debounceInformation.update(this._model,E.elapsed()),this._currentDocumentRequestCancellationTokenSource=null,w.dispose(),!I)this._setDocumentSemanticTokens(null,null,null,b);else{const{provider:M,tokens:P}=I,x=this._semanticTokensStylingService.getStyling(M);this._setDocumentSemanticTokens(M,P||null,x,b)}},I=>{I&&(k.isCancellationError(I)||typeof I.message==\"string\"&&I.message.indexOf(\"busy\")!==-1)||k.onUnexpectedError(I),this._currentDocumentRequestCancellationTokenSource=null,w.dispose(),(b.length>0||this._providersChangedDuringRequest)&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model)))})}static _copy(l,p,m,v,b){b=Math.min(b,m.length-v,l.length-p);for(let w=0;w<b;w++)m[v+w]=l[p+w]}_setDocumentSemanticTokens(l,p,m,v){const b=this._currentDocumentResponse,w=()=>{(v.length>0||this._providersChangedDuringRequest)&&!this._fetchDocumentSemanticTokens.isScheduled()&&this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))};if(this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._isDisposed){l&&p&&l.releaseDocumentSemanticTokens(p.resultId);return}if(!l||!m){this._model.tokenization.setSemanticTokens(null,!1);return}if(!p){this._model.tokenization.setSemanticTokens(null,!0),w();return}if((0,C.isSemanticTokensEdits)(p)){if(!b){this._model.tokenization.setSemanticTokens(null,!0);return}if(p.edits.length===0)p={resultId:p.resultId,data:b.data};else{let E=0;for(const T of p.edits)E+=(T.data?T.data.length:0)-T.deleteCount;const I=b.data,M=new Uint32Array(I.length+E);let P=I.length,x=M.length;for(let T=p.edits.length-1;T>=0;T--){const A=p.edits[T];if(A.start>I.length){m.warnInvalidEditStart(b.resultId,p.resultId,T,A.start,I.length),this._model.tokenization.setSemanticTokens(null,!0);return}const N=P-(A.start+A.deleteCount);N>0&&(h._copy(I,P-N,M,x-N,N),x-=N),A.data&&(h._copy(A.data,0,M,x-A.data.length,A.data.length),x-=A.data.length),P=A.start}P>0&&h._copy(I,0,M,0,P),p={resultId:p.resultId,data:M}}}if((0,C.isSemanticTokens)(p)){this._currentDocumentResponse=new o(l,p.resultId,p.data);const E=(0,g.toMultilineTokens2)(p,m,this._model.getLanguageId());if(v.length>0)for(const I of v)for(const M of E)for(const P of I.changes)M.applyEdit(P.range,P.text);this._model.tokenization.setSemanticTokens(E,!0)}else this._model.tokenization.setSemanticTokens(null,!0);w()}};c.REQUEST_MIN_DELAY=300,c.REQUEST_MAX_DELAY=2e3,c=h=ke([fe(1,t.ISemanticTokensStylingService),fe(2,_.IThemeService),fe(3,s.ILanguageFeatureDebounceService),fe(4,n.ILanguageFeaturesService)],c);class o{constructor(l,p,m){this.provider=l,this.resultId=p,this.data=m}dispose(){this.provider.releaseDocumentSemanticTokens(this.resultId)}}(0,a.registerEditorFeature)(r)}),define(ne[860],se([1,0,13,2,16,333,297,252,28,23,76,58,18,234]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewportSemanticTokensContribution=void 0;let t=class extends k.Disposable{constructor(u,h,r,c,o,d){super(),this._semanticTokensStylingService=h,this._themeService=r,this._configurationService=c,this._editor=u,this._provider=d.documentRangeSemanticTokensProvider,this._debounceInformation=o.for(this._provider,\"DocumentRangeSemanticTokens\",{min:100,max:500}),this._tokenizeViewport=this._register(new L.RunOnceScheduler(()=>this._tokenizeViewportNow(),100)),this._outstandingRequests=[];const l=()=>{this._editor.hasModel()&&this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()))};this._register(this._editor.onDidScrollChange(()=>{l()})),this._register(this._editor.onDidChangeModel(()=>{this._cancelAll(),l()})),this._register(this._editor.onDidChangeModelContent(p=>{this._cancelAll(),l()})),this._register(this._provider.onDidChange(()=>{this._cancelAll(),l()})),this._register(this._configurationService.onDidChangeConfiguration(p=>{p.affectsConfiguration(S.SEMANTIC_HIGHLIGHTING_SETTING_ID)&&(this._cancelAll(),l())})),this._register(this._themeService.onDidColorThemeChange(()=>{this._cancelAll(),l()})),l()}_cancelAll(){for(const u of this._outstandingRequests)u.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(u){for(let h=0,r=this._outstandingRequests.length;h<r;h++)if(this._outstandingRequests[h]===u){this._outstandingRequests.splice(h,1);return}}_tokenizeViewportNow(){if(!this._editor.hasModel())return;const u=this._editor.getModel();if(u.tokenization.hasCompleteSemanticTokens())return;if(!(0,S.isSemanticColoringEnabled)(u,this._themeService,this._configurationService)){u.tokenization.hasSomeSemanticTokens()&&u.tokenization.setSemanticTokens(null,!1);return}if(!(0,D.hasDocumentRangeSemanticTokensProvider)(this._provider,u)){u.tokenization.hasSomeSemanticTokens()&&u.tokenization.setSemanticTokens(null,!1);return}const h=this._editor.getVisibleRangesPlusViewportAboveBelow();this._outstandingRequests=this._outstandingRequests.concat(h.map(r=>this._requestRange(u,r)))}_requestRange(u,h){const r=u.getVersionId(),c=(0,L.createCancelablePromise)(d=>Promise.resolve((0,D.getDocumentRangeSemanticTokens)(this._provider,u,h,d))),o=new s.StopWatch(!1);return c.then(d=>{if(this._debounceInformation.update(u,o.elapsed()),!d||!d.tokens||u.isDisposed()||u.getVersionId()!==r)return;const{provider:l,tokens:p}=d,m=this._semanticTokensStylingService.getStyling(l);u.tokenization.setPartialSemanticTokens(h,(0,f.toMultilineTokens2)(p,m,u.getLanguageId()))}).then(()=>this._removeOutstandingRequest(c),()=>this._removeOutstandingRequest(c)),c}};e.ViewportSemanticTokensContribution=t,t.ID=\"editor.contrib.viewportSemanticTokens\",e.ViewportSemanticTokensContribution=t=ke([fe(1,n.ISemanticTokensStylingService),fe(2,g.IThemeService),fe(3,_.IConfigurationService),fe(4,C.ILanguageFeatureDebounceService),fe(5,i.ILanguageFeaturesService)],t),(0,y.registerEditorContribution)(t.ID,t,1)}),define(ne[861],se([1,0,7,226,25,26,6,72,2,22,29,775,51,41,704,330,62,23,344]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){\"use strict\";var c;Object.defineProperty(e,\"__esModule\",{value:!0}),e.ItemRenderer=e.getAriaId=void 0;function o(v){return`suggest-aria-id:${v}`}e.getAriaId=o;const d=(0,u.registerIcon)(\"suggest-more-info\",y.Codicon.chevronRight,t.localize(0,null)),l=new(c=class{extract(b,w){if(b.textLabel.match(c._regexStrict))return w[0]=b.textLabel,!0;if(b.completion.detail&&b.completion.detail.match(c._regexStrict))return w[0]=b.completion.detail,!0;if(typeof b.completion.documentation==\"string\"){const E=c._regexRelaxed.exec(b.completion.documentation);if(E&&(E.index===0||E.index+E[0].length===b.completion.documentation.length))return w[0]=E[0],!0}return!1}},c._regexRelaxed=/(#([\\da-fA-F]{3}){1,2}|(rgb|hsl)a\\(\\s*(\\d{1,3}%?\\s*,\\s*){3}(1|0?\\.\\d+)\\)|(rgb|hsl)\\(\\s*\\d{1,3}%?(\\s*,\\s*\\d{1,3}%?){2}\\s*\\))/,c._regexStrict=new RegExp(`^${c._regexRelaxed.source}$`,\"i\"),c);let p=class{constructor(b,w,E,I){this._editor=b,this._modelService=w,this._languageService=E,this._themeService=I,this._onDidToggleDetails=new S.Emitter,this.onDidToggleDetails=this._onDidToggleDetails.event,this.templateId=\"suggestion\"}dispose(){this._onDidToggleDetails.dispose()}renderTemplate(b){const w=new _.DisposableStore,E=b;E.classList.add(\"show-file-icons\");const I=(0,L.append)(b,(0,L.$)(\".icon\")),M=(0,L.append)(I,(0,L.$)(\"span.colorspan\")),P=(0,L.append)(b,(0,L.$)(\".contents\")),x=(0,L.append)(P,(0,L.$)(\".main\")),T=(0,L.append)(x,(0,L.$)(\".icon-label.codicon\")),A=(0,L.append)(x,(0,L.$)(\"span.left\")),N=(0,L.append)(x,(0,L.$)(\"span.right\")),F=new k.IconLabel(A,{supportHighlights:!0,supportIcons:!0});w.add(F);const O=(0,L.append)(A,(0,L.$)(\"span.signature-label\")),W=(0,L.append)(A,(0,L.$)(\"span.qualifier-label\")),U=(0,L.append)(N,(0,L.$)(\"span.details-label\")),j=(0,L.append)(N,(0,L.$)(\"span.readMore\"+D.ThemeIcon.asCSSSelector(d)));j.title=t.localize(1,null);const R=()=>{const K=this._editor.getOptions(),G=K.get(49),Z=G.getMassagedFontFamily(),J=G.fontFeatureSettings,X=K.get(117)||G.fontSize,H=K.get(118)||G.lineHeight,B=G.fontWeight,V=G.letterSpacing,Y=`${X}px`,ie=`${H}px`,ae=`${V}px`;E.style.fontSize=Y,E.style.fontWeight=B,E.style.letterSpacing=ae,x.style.fontFamily=Z,x.style.fontFeatureSettings=J,x.style.lineHeight=ie,I.style.height=ie,I.style.width=ie,j.style.height=ie,j.style.width=ie};return R(),w.add(this._editor.onDidChangeConfiguration(K=>{(K.hasChanged(49)||K.hasChanged(117)||K.hasChanged(118))&&R()})),{root:E,left:A,right:N,icon:I,colorspan:M,iconLabel:F,iconContainer:T,parametersLabel:O,qualifierLabel:W,detailsLabel:U,readMore:j,disposables:w}}renderElement(b,w,E){const{completion:I}=b;E.root.id=o(w),E.colorspan.style.backgroundColor=\"\";const M={labelEscapeNewLines:!0,matches:(0,f.createMatches)(b.score)},P=[];if(I.kind===19&&l.extract(b,P))E.icon.className=\"icon customcolor\",E.iconContainer.className=\"icon hide\",E.colorspan.style.backgroundColor=P[0];else if(I.kind===20&&this._themeService.getFileIconTheme().hasFileIcons){E.icon.className=\"icon hide\",E.iconContainer.className=\"icon hide\";const x=(0,s.getIconClasses)(this._modelService,this._languageService,g.URI.from({scheme:\"fake\",path:b.textLabel}),a.FileKind.FILE),T=(0,s.getIconClasses)(this._modelService,this._languageService,g.URI.from({scheme:\"fake\",path:I.detail}),a.FileKind.FILE);M.extraClasses=x.length>T.length?x:T}else I.kind===23&&this._themeService.getFileIconTheme().hasFolderIcons?(E.icon.className=\"icon hide\",E.iconContainer.className=\"icon hide\",M.extraClasses=[(0,s.getIconClasses)(this._modelService,this._languageService,g.URI.from({scheme:\"fake\",path:b.textLabel}),a.FileKind.FOLDER),(0,s.getIconClasses)(this._modelService,this._languageService,g.URI.from({scheme:\"fake\",path:I.detail}),a.FileKind.FOLDER)].flat()):(E.icon.className=\"icon hide\",E.iconContainer.className=\"\",E.iconContainer.classList.add(\"suggest-icon\",...D.ThemeIcon.asClassNameArray(C.CompletionItemKinds.toIcon(I.kind))));I.tags&&I.tags.indexOf(1)>=0&&(M.extraClasses=(M.extraClasses||[]).concat([\"deprecated\"]),M.matches=[]),E.iconLabel.setLabel(b.textLabel,void 0,M),typeof I.label==\"string\"?(E.parametersLabel.textContent=\"\",E.detailsLabel.textContent=m(I.detail||\"\"),E.root.classList.add(\"string-label\")):(E.parametersLabel.textContent=m(I.label.detail||\"\"),E.detailsLabel.textContent=m(I.label.description||\"\"),E.root.classList.remove(\"string-label\")),this._editor.getOption(116).showInlineDetails?(0,L.show)(E.detailsLabel):(0,L.hide)(E.detailsLabel),(0,r.canExpandCompletionItem)(b)?(E.right.classList.add(\"can-expand-details\"),(0,L.show)(E.readMore),E.readMore.onmousedown=x=>{x.stopPropagation(),x.preventDefault()},E.readMore.onclick=x=>{x.stopPropagation(),x.preventDefault(),this._onDidToggleDetails.fire()}):(E.right.classList.remove(\"can-expand-details\"),(0,L.hide)(E.readMore),E.readMore.onmousedown=null,E.readMore.onclick=null)}disposeTemplate(b){b.disposables.dispose()}};e.ItemRenderer=p,e.ItemRenderer=p=ke([fe(1,i.IModelService),fe(2,n.ILanguageService),fe(3,h.IThemeService)],p);function m(v){return v.replace(/\\r\\n|\\r|\\n/g,\"\")}}),define(ne[862],se([1,0,855,37,136,33,94,6,16,21,71]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.GotoLineAction=e.StandaloneGotoLineQuickAccessProvider=void 0;let s=class extends L.AbstractGotoLineQuickAccessProvider{constructor(t){super(),this.editorService=t,this.onDidActiveTextEditorControlChange=f.Event.None}get activeTextEditorControl(){var t;return(t=this.editorService.getFocusedCodeEditor())!==null&&t!==void 0?t:void 0}};e.StandaloneGotoLineQuickAccessProvider=s,e.StandaloneGotoLineQuickAccessProvider=s=ke([fe(0,D.ICodeEditorService)],s);class i extends _.EditorAction{constructor(){super({id:i.ID,label:S.GoToLineNLS.gotoLineActionLabel,alias:\"Go to Line/Column...\",precondition:void 0,kbOpts:{kbExpr:g.EditorContextKeys.focus,primary:2085,mac:{primary:293},weight:100}})}run(t){t.get(C.IQuickInputService).quickAccess.show(s.PREFIX)}}e.GotoLineAction=i,i.ID=\"editor.action.gotoLine\",(0,_.registerEditorAction)(i),k.Registry.as(y.Extensions.Quickaccess).registerQuickAccessProvider({ctor:s,prefix:s.PREFIX,helpEntries:[{description:S.GoToLineNLS.gotoLineActionLabel,commandId:i.ID}]})}),define(ne[863],se([1,0,856,37,136,33,94,6,16,21,71,188,18,172,249]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.GotoSymbolAction=e.StandaloneGotoSymbolQuickAccessProvider=void 0;let n=class extends L.AbstractGotoSymbolQuickAccessProvider{constructor(u,h,r){super(h,r),this.editorService=u,this.onDidActiveTextEditorControlChange=f.Event.None}get activeTextEditorControl(){var u;return(u=this.editorService.getFocusedCodeEditor())!==null&&u!==void 0?u:void 0}};e.StandaloneGotoSymbolQuickAccessProvider=n,e.StandaloneGotoSymbolQuickAccessProvider=n=ke([fe(0,D.ICodeEditorService),fe(1,i.ILanguageFeaturesService),fe(2,s.IOutlineModelService)],n);class t extends _.EditorAction{constructor(){super({id:t.ID,label:S.QuickOutlineNLS.quickOutlineActionLabel,alias:\"Go to Symbol...\",precondition:g.EditorContextKeys.hasDocumentSymbolProvider,kbOpts:{kbExpr:g.EditorContextKeys.focus,primary:3117,weight:100},contextMenuOpts:{group:\"navigation\",order:3}})}run(u){u.get(C.IQuickInputService).quickAccess.show(L.AbstractGotoSymbolQuickAccessProvider.PREFIX,{itemActivation:C.ItemActivation.NONE})}}e.GotoSymbolAction=t,t.ID=\"editor.action.quickOutline\",(0,_.registerEditorAction)(t),k.Registry.as(y.Extensions.Quickaccess).registerQuickAccessProvider({ctor:n,prefix:L.AbstractGotoSymbolQuickAccessProvider.PREFIX,helpEntries:[{description:S.QuickOutlineNLS.quickOutlineActionLabel,prefix:L.AbstractGotoSymbolQuickAccessProvider.PREFIX,commandId:t.ID},{description:S.QuickOutlineNLS.quickOutlineByCategoryActionLabel,prefix:L.AbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY}]})}),define(ne[360],se([1,0,7,54,841,33,15,50,23]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StandaloneCodeEditorService=void 0;let g=class extends y.AbstractCodeEditorService{constructor(s,i){super(i),this.onCodeEditorAdd(()=>this._checkContextKey()),this.onCodeEditorRemove(()=>this._checkContextKey()),this._editorIsOpen=s.createKey(\"editorIsOpen\",!1),this._activeCodeEditor=null,this.registerCodeEditorOpenHandler((n,t,a)=>we(this,void 0,void 0,function*(){return t?this.doOpenEditor(t,n):null}))}_checkContextKey(){let s=!1;for(const i of this.listCodeEditors())if(!i.isSimpleWidget){s=!0;break}this._editorIsOpen.set(s)}setActiveCodeEditor(s){this._activeCodeEditor=s}getActiveCodeEditor(){return this._activeCodeEditor}doOpenEditor(s,i){if(!this.findModel(s,i.resource)){if(i.resource){const a=i.resource.scheme;if(a===k.Schemas.http||a===k.Schemas.https)return(0,L.windowOpenNoOpener)(i.resource.toString()),s}return null}const t=i.options?i.options.selection:null;if(t)if(typeof t.endLineNumber==\"number\"&&typeof t.endColumn==\"number\")s.setSelection(t),s.revealRangeInCenter(t,1);else{const a={lineNumber:t.startLineNumber,column:t.startColumn};s.setPosition(a),s.revealPositionInCenter(a,1)}return s}findModel(s,i){const n=s.getModel();return n&&n.uri.toString()!==i.toString()?null:n}};e.StandaloneCodeEditorService=g,e.StandaloneCodeEditorService=g=ke([fe(0,S.IContextKeyService),fe(1,_.IThemeService)],g),(0,f.registerSingleton)(D.ICodeEditorService,g,0)}),define(ne[864],se([1,0,80,31]),function(Q,e,L,k){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.hc_light=e.hc_black=e.vs_dark=e.vs=void 0,e.vs={base:\"vs\",inherit:!1,rules:[{token:\"\",foreground:\"000000\",background:\"fffffe\"},{token:\"invalid\",foreground:\"cd3131\"},{token:\"emphasis\",fontStyle:\"italic\"},{token:\"strong\",fontStyle:\"bold\"},{token:\"variable\",foreground:\"001188\"},{token:\"variable.predefined\",foreground:\"4864AA\"},{token:\"constant\",foreground:\"dd0000\"},{token:\"comment\",foreground:\"008000\"},{token:\"number\",foreground:\"098658\"},{token:\"number.hex\",foreground:\"3030c0\"},{token:\"regexp\",foreground:\"800000\"},{token:\"annotation\",foreground:\"808080\"},{token:\"type\",foreground:\"008080\"},{token:\"delimiter\",foreground:\"000000\"},{token:\"delimiter.html\",foreground:\"383838\"},{token:\"delimiter.xml\",foreground:\"0000FF\"},{token:\"tag\",foreground:\"800000\"},{token:\"tag.id.pug\",foreground:\"4F76AC\"},{token:\"tag.class.pug\",foreground:\"4F76AC\"},{token:\"meta.scss\",foreground:\"800000\"},{token:\"metatag\",foreground:\"e00000\"},{token:\"metatag.content.html\",foreground:\"FF0000\"},{token:\"metatag.html\",foreground:\"808080\"},{token:\"metatag.xml\",foreground:\"808080\"},{token:\"metatag.php\",fontStyle:\"bold\"},{token:\"key\",foreground:\"863B00\"},{token:\"string.key.json\",foreground:\"A31515\"},{token:\"string.value.json\",foreground:\"0451A5\"},{token:\"attribute.name\",foreground:\"FF0000\"},{token:\"attribute.value\",foreground:\"0451A5\"},{token:\"attribute.value.number\",foreground:\"098658\"},{token:\"attribute.value.unit\",foreground:\"098658\"},{token:\"attribute.value.html\",foreground:\"0000FF\"},{token:\"attribute.value.xml\",foreground:\"0000FF\"},{token:\"string\",foreground:\"A31515\"},{token:\"string.html\",foreground:\"0000FF\"},{token:\"string.sql\",foreground:\"FF0000\"},{token:\"string.yaml\",foreground:\"0451A5\"},{token:\"keyword\",foreground:\"0000FF\"},{token:\"keyword.json\",foreground:\"0451A5\"},{token:\"keyword.flow\",foreground:\"AF00DB\"},{token:\"keyword.flow.scss\",foreground:\"0000FF\"},{token:\"operator.scss\",foreground:\"666666\"},{token:\"operator.sql\",foreground:\"778899\"},{token:\"operator.swift\",foreground:\"666666\"},{token:\"predefined.sql\",foreground:\"C700C7\"}],colors:{[k.editorBackground]:\"#FFFFFE\",[k.editorForeground]:\"#000000\",[k.editorInactiveSelection]:\"#E5EBF1\",[L.editorIndentGuide1]:\"#D3D3D3\",[L.editorActiveIndentGuide1]:\"#939393\",[k.editorSelectionHighlight]:\"#ADD6FF4D\"}},e.vs_dark={base:\"vs-dark\",inherit:!1,rules:[{token:\"\",foreground:\"D4D4D4\",background:\"1E1E1E\"},{token:\"invalid\",foreground:\"f44747\"},{token:\"emphasis\",fontStyle:\"italic\"},{token:\"strong\",fontStyle:\"bold\"},{token:\"variable\",foreground:\"74B0DF\"},{token:\"variable.predefined\",foreground:\"4864AA\"},{token:\"variable.parameter\",foreground:\"9CDCFE\"},{token:\"constant\",foreground:\"569CD6\"},{token:\"comment\",foreground:\"608B4E\"},{token:\"number\",foreground:\"B5CEA8\"},{token:\"number.hex\",foreground:\"5BB498\"},{token:\"regexp\",foreground:\"B46695\"},{token:\"annotation\",foreground:\"cc6666\"},{token:\"type\",foreground:\"3DC9B0\"},{token:\"delimiter\",foreground:\"DCDCDC\"},{token:\"delimiter.html\",foreground:\"808080\"},{token:\"delimiter.xml\",foreground:\"808080\"},{token:\"tag\",foreground:\"569CD6\"},{token:\"tag.id.pug\",foreground:\"4F76AC\"},{token:\"tag.class.pug\",foreground:\"4F76AC\"},{token:\"meta.scss\",foreground:\"A79873\"},{token:\"meta.tag\",foreground:\"CE9178\"},{token:\"metatag\",foreground:\"DD6A6F\"},{token:\"metatag.content.html\",foreground:\"9CDCFE\"},{token:\"metatag.html\",foreground:\"569CD6\"},{token:\"metatag.xml\",foreground:\"569CD6\"},{token:\"metatag.php\",fontStyle:\"bold\"},{token:\"key\",foreground:\"9CDCFE\"},{token:\"string.key.json\",foreground:\"9CDCFE\"},{token:\"string.value.json\",foreground:\"CE9178\"},{token:\"attribute.name\",foreground:\"9CDCFE\"},{token:\"attribute.value\",foreground:\"CE9178\"},{token:\"attribute.value.number.css\",foreground:\"B5CEA8\"},{token:\"attribute.value.unit.css\",foreground:\"B5CEA8\"},{token:\"attribute.value.hex.css\",foreground:\"D4D4D4\"},{token:\"string\",foreground:\"CE9178\"},{token:\"string.sql\",foreground:\"FF0000\"},{token:\"keyword\",foreground:\"569CD6\"},{token:\"keyword.flow\",foreground:\"C586C0\"},{token:\"keyword.json\",foreground:\"CE9178\"},{token:\"keyword.flow.scss\",foreground:\"569CD6\"},{token:\"operator.scss\",foreground:\"909090\"},{token:\"operator.sql\",foreground:\"778899\"},{token:\"operator.swift\",foreground:\"909090\"},{token:\"predefined.sql\",foreground:\"FF00FF\"}],colors:{[k.editorBackground]:\"#1E1E1E\",[k.editorForeground]:\"#D4D4D4\",[k.editorInactiveSelection]:\"#3A3D41\",[L.editorIndentGuide1]:\"#404040\",[L.editorActiveIndentGuide1]:\"#707070\",[k.editorSelectionHighlight]:\"#ADD6FF26\"}},e.hc_black={base:\"hc-black\",inherit:!1,rules:[{token:\"\",foreground:\"FFFFFF\",background:\"000000\"},{token:\"invalid\",foreground:\"f44747\"},{token:\"emphasis\",fontStyle:\"italic\"},{token:\"strong\",fontStyle:\"bold\"},{token:\"variable\",foreground:\"1AEBFF\"},{token:\"variable.parameter\",foreground:\"9CDCFE\"},{token:\"constant\",foreground:\"569CD6\"},{token:\"comment\",foreground:\"608B4E\"},{token:\"number\",foreground:\"FFFFFF\"},{token:\"regexp\",foreground:\"C0C0C0\"},{token:\"annotation\",foreground:\"569CD6\"},{token:\"type\",foreground:\"3DC9B0\"},{token:\"delimiter\",foreground:\"FFFF00\"},{token:\"delimiter.html\",foreground:\"FFFF00\"},{token:\"tag\",foreground:\"569CD6\"},{token:\"tag.id.pug\",foreground:\"4F76AC\"},{token:\"tag.class.pug\",foreground:\"4F76AC\"},{token:\"meta\",foreground:\"D4D4D4\"},{token:\"meta.tag\",foreground:\"CE9178\"},{token:\"metatag\",foreground:\"569CD6\"},{token:\"metatag.content.html\",foreground:\"1AEBFF\"},{token:\"metatag.html\",foreground:\"569CD6\"},{token:\"metatag.xml\",foreground:\"569CD6\"},{token:\"metatag.php\",fontStyle:\"bold\"},{token:\"key\",foreground:\"9CDCFE\"},{token:\"string.key\",foreground:\"9CDCFE\"},{token:\"string.value\",foreground:\"CE9178\"},{token:\"attribute.name\",foreground:\"569CD6\"},{token:\"attribute.value\",foreground:\"3FF23F\"},{token:\"string\",foreground:\"CE9178\"},{token:\"string.sql\",foreground:\"FF0000\"},{token:\"keyword\",foreground:\"569CD6\"},{token:\"keyword.flow\",foreground:\"C586C0\"},{token:\"operator.sql\",foreground:\"778899\"},{token:\"operator.swift\",foreground:\"909090\"},{token:\"predefined.sql\",foreground:\"FF00FF\"}],colors:{[k.editorBackground]:\"#000000\",[k.editorForeground]:\"#FFFFFF\",[L.editorIndentGuide1]:\"#FFFFFF\",[L.editorActiveIndentGuide1]:\"#FFFFFF\"}},e.hc_light={base:\"hc-light\",inherit:!1,rules:[{token:\"\",foreground:\"292929\",background:\"FFFFFF\"},{token:\"invalid\",foreground:\"B5200D\"},{token:\"emphasis\",fontStyle:\"italic\"},{token:\"strong\",fontStyle:\"bold\"},{token:\"variable\",foreground:\"264F70\"},{token:\"variable.predefined\",foreground:\"4864AA\"},{token:\"constant\",foreground:\"dd0000\"},{token:\"comment\",foreground:\"008000\"},{token:\"number\",foreground:\"098658\"},{token:\"number.hex\",foreground:\"3030c0\"},{token:\"regexp\",foreground:\"800000\"},{token:\"annotation\",foreground:\"808080\"},{token:\"type\",foreground:\"008080\"},{token:\"delimiter\",foreground:\"000000\"},{token:\"delimiter.html\",foreground:\"383838\"},{token:\"tag\",foreground:\"800000\"},{token:\"tag.id.pug\",foreground:\"4F76AC\"},{token:\"tag.class.pug\",foreground:\"4F76AC\"},{token:\"meta.scss\",foreground:\"800000\"},{token:\"metatag\",foreground:\"e00000\"},{token:\"metatag.content.html\",foreground:\"B5200D\"},{token:\"metatag.html\",foreground:\"808080\"},{token:\"metatag.xml\",foreground:\"808080\"},{token:\"metatag.php\",fontStyle:\"bold\"},{token:\"key\",foreground:\"863B00\"},{token:\"string.key.json\",foreground:\"A31515\"},{token:\"string.value.json\",foreground:\"0451A5\"},{token:\"attribute.name\",foreground:\"264F78\"},{token:\"attribute.value\",foreground:\"0451A5\"},{token:\"string\",foreground:\"A31515\"},{token:\"string.sql\",foreground:\"B5200D\"},{token:\"keyword\",foreground:\"0000FF\"},{token:\"keyword.flow\",foreground:\"AF00DB\"},{token:\"operator.sql\",foreground:\"778899\"},{token:\"operator.swift\",foreground:\"666666\"},{token:\"predefined.sql\",foreground:\"C700C7\"}],colors:{[k.editorBackground]:\"#FFFFFF\",[k.editorForeground]:\"#292929\",[L.editorIndentGuide1]:\"#292929\",[L.editorActiveIndentGuide1]:\"#292929\"}}}),define(ne[361],se([1,0,7,52,38,6,29,124,504,864,37,31,23,2,88,835]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StandaloneThemeService=e.HC_LIGHT_THEME_NAME=e.HC_BLACK_THEME_NAME=e.VS_DARK_THEME_NAME=e.VS_LIGHT_THEME_NAME=void 0,e.VS_LIGHT_THEME_NAME=\"vs\",e.VS_DARK_THEME_NAME=\"vs-dark\",e.HC_BLACK_THEME_NAME=\"hc-black\",e.HC_LIGHT_THEME_NAME=\"hc-light\";const u=C.Registry.as(s.Extensions.ColorContribution),h=C.Registry.as(i.Extensions.ThemingContribution);class r{constructor(m,v){this.semanticHighlighting=!1,this.themeData=v;const b=v.base;m.length>0?(c(m)?this.id=m:this.id=b+\" \"+m,this.themeName=m):(this.id=b,this.themeName=b),this.colors=null,this.defaultColors=Object.create(null),this._tokenTheme=null}get base(){return this.themeData.base}notifyBaseUpdated(){this.themeData.inherit&&(this.colors=null,this._tokenTheme=null)}getColors(){if(!this.colors){const m=new Map;for(const v in this.themeData.colors)m.set(v,y.Color.fromHex(this.themeData.colors[v]));if(this.themeData.inherit){const v=o(this.themeData.base);for(const b in v.colors)m.has(b)||m.set(b,y.Color.fromHex(v.colors[b]))}this.colors=m}return this.colors}getColor(m,v){const b=this.getColors().get(m);if(b)return b;if(v!==!1)return this.getDefault(m)}getDefault(m){let v=this.defaultColors[m];return v||(v=u.resolveDefaultColor(m,this),this.defaultColors[m]=v,v)}defines(m){return this.getColors().has(m)}get type(){switch(this.base){case e.VS_LIGHT_THEME_NAME:return t.ColorScheme.LIGHT;case e.HC_BLACK_THEME_NAME:return t.ColorScheme.HIGH_CONTRAST_DARK;case e.HC_LIGHT_THEME_NAME:return t.ColorScheme.HIGH_CONTRAST_LIGHT;default:return t.ColorScheme.DARK}}get tokenTheme(){if(!this._tokenTheme){let m=[],v=[];if(this.themeData.inherit){const E=o(this.themeData.base);m=E.rules,E.encodedTokensColors&&(v=E.encodedTokensColors)}const b=this.themeData.colors[\"editor.foreground\"],w=this.themeData.colors[\"editor.background\"];if(b||w){const E={token:\"\"};b&&(E.foreground=b),w&&(E.background=w),m.push(E)}m=m.concat(this.themeData.rules),this.themeData.encodedTokensColors&&(v=this.themeData.encodedTokensColors),this._tokenTheme=_.TokenTheme.createFromRawTokenTheme(m,v)}return this._tokenTheme}getTokenStyleMetadata(m,v,b){const E=this.tokenTheme._match([m].concat(v).join(\".\")).metadata,I=f.TokenMetadata.getForeground(E),M=f.TokenMetadata.getFontStyle(E);return{foreground:I,italic:!!(M&1),bold:!!(M&2),underline:!!(M&4),strikethrough:!!(M&8)}}}function c(p){return p===e.VS_LIGHT_THEME_NAME||p===e.VS_DARK_THEME_NAME||p===e.HC_BLACK_THEME_NAME||p===e.HC_LIGHT_THEME_NAME}function o(p){switch(p){case e.VS_LIGHT_THEME_NAME:return g.vs;case e.VS_DARK_THEME_NAME:return g.vs_dark;case e.HC_BLACK_THEME_NAME:return g.hc_black;case e.HC_LIGHT_THEME_NAME:return g.hc_light}}function d(p){const m=o(p);return new r(p,m)}class l extends n.Disposable{constructor(){super(),this._onColorThemeChange=this._register(new D.Emitter),this.onDidColorThemeChange=this._onColorThemeChange.event,this._onProductIconThemeChange=this._register(new D.Emitter),this.onDidProductIconThemeChange=this._onProductIconThemeChange.event,this._environment=Object.create(null),this._builtInProductIconTheme=new a.UnthemedProductIconTheme,this._autoDetectHighContrast=!0,this._knownThemes=new Map,this._knownThemes.set(e.VS_LIGHT_THEME_NAME,d(e.VS_LIGHT_THEME_NAME)),this._knownThemes.set(e.VS_DARK_THEME_NAME,d(e.VS_DARK_THEME_NAME)),this._knownThemes.set(e.HC_BLACK_THEME_NAME,d(e.HC_BLACK_THEME_NAME)),this._knownThemes.set(e.HC_LIGHT_THEME_NAME,d(e.HC_LIGHT_THEME_NAME));const m=(0,a.getIconsStyleSheet)(this);this._codiconCSS=m.getCSS(),this._themeCSS=\"\",this._allCSS=`${this._codiconCSS}\n${this._themeCSS}`,this._globalStyleElement=null,this._styleElements=[],this._colorMapOverride=null,this.setTheme(e.VS_LIGHT_THEME_NAME),this._onOSSchemeChanged(),m.onDidChange(()=>{this._codiconCSS=m.getCSS(),this._updateCSS()}),(0,k.addMatchMediaChangeListener)(\"(forced-colors: active)\",()=>{this._onOSSchemeChanged()})}registerEditorContainer(m){return L.isInShadowDOM(m)?this._registerShadowDomContainer(m):this._registerRegularEditorContainer()}_registerRegularEditorContainer(){return this._globalStyleElement||(this._globalStyleElement=L.createStyleSheet(void 0,m=>{m.className=\"monaco-colors\",m.textContent=this._allCSS}),this._styleElements.push(this._globalStyleElement)),n.Disposable.None}_registerShadowDomContainer(m){const v=L.createStyleSheet(m,b=>{b.className=\"monaco-colors\",b.textContent=this._allCSS});return this._styleElements.push(v),{dispose:()=>{for(let b=0;b<this._styleElements.length;b++)if(this._styleElements[b]===v){this._styleElements.splice(b,1);return}}}}defineTheme(m,v){if(!/^[a-z0-9\\-]+$/i.test(m))throw new Error(\"Illegal theme name!\");if(!c(v.base)&&!c(m))throw new Error(\"Illegal theme base!\");this._knownThemes.set(m,new r(m,v)),c(m)&&this._knownThemes.forEach(b=>{b.base===m&&b.notifyBaseUpdated()}),this._theme.themeName===m&&this.setTheme(m)}getColorTheme(){return this._theme}setColorMapOverride(m){this._colorMapOverride=m,this._updateThemeOrColorMap()}setTheme(m){let v;this._knownThemes.has(m)?v=this._knownThemes.get(m):v=this._knownThemes.get(e.VS_LIGHT_THEME_NAME),this._updateActualTheme(v)}_updateActualTheme(m){!m||this._theme===m||(this._theme=m,this._updateThemeOrColorMap())}_onOSSchemeChanged(){if(this._autoDetectHighContrast){const m=window.matchMedia(\"(forced-colors: active)\").matches;if(m!==(0,t.isHighContrast)(this._theme.type)){let v;(0,t.isDark)(this._theme.type)?v=m?e.HC_BLACK_THEME_NAME:e.VS_DARK_THEME_NAME:v=m?e.HC_LIGHT_THEME_NAME:e.VS_LIGHT_THEME_NAME,this._updateActualTheme(this._knownThemes.get(v))}}}setAutoDetectHighContrast(m){this._autoDetectHighContrast=m,this._onOSSchemeChanged()}_updateThemeOrColorMap(){const m=[],v={},b={addRule:I=>{v[I]||(m.push(I),v[I]=!0)}};h.getThemingParticipants().forEach(I=>I(this._theme,b,this._environment));const w=[];for(const I of u.getColors()){const M=this._theme.getColor(I.id,!0);M&&w.push(`${(0,s.asCssVariableName)(I.id)}: ${M.toString()};`)}b.addRule(`.monaco-editor, .monaco-diff-editor { ${w.join(`\n`)} }`);const E=this._colorMapOverride||this._theme.tokenTheme.getColorMap();b.addRule((0,_.generateTokensCSSForColorMap)(E)),this._themeCSS=m.join(`\n`),this._updateCSS(),S.TokenizationRegistry.setColorMap(E),this._onColorThemeChange.fire(this._theme)}_updateCSS(){this._allCSS=`${this._codiconCSS}\n${this._themeCSS}`,this._styleElements.forEach(m=>m.textContent=this._allCSS)}getFileIconTheme(){return{hasFileIcons:!1,hasFolderIcons:!1,hidesExplorerArrows:!1}}getProductIconTheme(){return this._builtInProductIconTheme}}e.StandaloneThemeService=l}),define(ne[865],se([1,0,16,133,94,88,361]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});class f extends L.EditorAction{constructor(){super({id:\"editor.action.toggleHighContrast\",label:y.ToggleHighContrastNLS.toggleHighContrast,alias:\"Toggle High Contrast Theme\",precondition:void 0}),this._originalThemeName=null}run(g,C){const s=g.get(k.IStandaloneThemeService),i=s.getColorTheme();(0,D.isHighContrast)(i.type)?(s.setTheme(this._originalThemeName||((0,D.isDark)(i.type)?S.VS_DARK_THEME_NAME:S.VS_LIGHT_THEME_NAME)),this._originalThemeName=null):(s.setTheme((0,D.isDark)(i.type)?S.HC_BLACK_THEME_NAME:S.HC_LIGHT_THEME_NAME),this._originalThemeName=i.themeName)}}(0,L.registerEditorAction)(f)}),define(ne[160],se([1,0,7,44,131,315,39,216,2,17,717,30,740,15,57,8,34,43,87,23,26,88,20,31,105,84,472]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createActionViewItem=e.DropdownWithDefaultActionViewItem=e.SubmenuEntryActionViewItem=e.MenuEntryActionViewItem=e.createAndFillInActionBarActions=e.createAndFillInContextMenuActions=void 0;function b(A,N,F,O){const W=A.getActions(N),U=L.ModifierKeyEmitter.getInstance(),j=U.keyStatus.altKey||(g.isWindows||g.isLinux)&&U.keyStatus.shiftKey;E(W,F,j,O?R=>R===O:R=>R===\"navigation\")}e.createAndFillInContextMenuActions=b;function w(A,N,F,O,W,U){const j=A.getActions(N);E(j,F,!1,typeof O==\"string\"?K=>K===O:O,W,U)}e.createAndFillInActionBarActions=w;function E(A,N,F,O=j=>j===\"navigation\",W=()=>!1,U=!1){let j,R;Array.isArray(N)?(j=N,R=N):(j=N.primary,R=N.secondary);const K=new Set;for(const[G,Z]of A){let J;O(G)?(J=j,J.length>0&&U&&J.push(new S.Separator)):(J=R,J.length>0&&J.push(new S.Separator));for(let X of Z){F&&(X=X instanceof s.MenuItemAction&&X.alt?X.alt:X);const H=J.push(X);X instanceof S.SubmenuAction&&K.add({group:G,action:X,index:H-1})}}for(const{group:G,action:Z,index:J}of K){const X=O(G)?j:R,H=Z.actions;H.length<=1&&W(Z,G,X.length)&&X.splice(J,1,...H)}}let I=class extends y.ActionViewItem{constructor(N,F,O,W,U,j,R,K){super(void 0,N,{icon:!!(N.class||N.item.icon),label:!N.class&&!N.item.icon,draggable:F?.draggable,keybinding:F?.keybinding,hoverDelegate:F?.hoverDelegate}),this._keybindingService=O,this._notificationService=W,this._contextKeyService=U,this._themeService=j,this._contextMenuService=R,this._accessibilityService=K,this._wantsAltCommand=!1,this._itemClassDispose=this._register(new _.MutableDisposable),this._altKey=L.ModifierKeyEmitter.getInstance()}get _menuItemAction(){return this._action}get _commandAction(){return this._wantsAltCommand&&this._menuItemAction.alt||this._menuItemAction}onClick(N){return we(this,void 0,void 0,function*(){N.preventDefault(),N.stopPropagation();try{yield this.actionRunner.run(this._commandAction,this._context)}catch(F){this._notificationService.error(F)}})}render(N){if(super.render(N),N.classList.add(\"menu-entry\"),this.options.icon&&this._updateItemClass(this._menuItemAction.item),this._menuItemAction.alt){let F=!1;const O=()=>{var W;const U=!!(!((W=this._menuItemAction.alt)===null||W===void 0)&&W.enabled)&&(!this._accessibilityService.isMotionReduced()||F)&&(this._altKey.keyStatus.altKey||this._altKey.keyStatus.shiftKey&&F);U!==this._wantsAltCommand&&(this._wantsAltCommand=U,this.updateLabel(),this.updateTooltip(),this.updateClass())};this._register(this._altKey.event(O)),this._register((0,L.addDisposableListener)(N,\"mouseleave\",W=>{F=!1,O()})),this._register((0,L.addDisposableListener)(N,\"mouseenter\",W=>{F=!0,O()})),O()}}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this._commandAction.label)}getTooltip(){var N;const F=this._keybindingService.lookupKeybinding(this._commandAction.id,this._contextKeyService),O=F&&F.getLabel(),W=this._commandAction.tooltip||this._commandAction.label;let U=O?(0,C.localize)(0,null,W,O):W;if(!this._wantsAltCommand&&(!((N=this._menuItemAction.alt)===null||N===void 0)&&N.enabled)){const j=this._menuItemAction.alt.tooltip||this._menuItemAction.alt.label,R=this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id,this._contextKeyService),K=R&&R.getLabel(),G=K?(0,C.localize)(1,null,j,K):j;U=(0,C.localize)(2,null,U,f.UILabelProvider.modifierLabels[g.OS].altKey,G)}return U}updateClass(){this.options.icon&&(this._commandAction!==this._menuItemAction?this._menuItemAction.alt&&this._updateItemClass(this._menuItemAction.alt.item):this._updateItemClass(this._menuItemAction.item))}_updateItemClass(N){this._itemClassDispose.value=void 0;const{element:F,label:O}=this;if(!F||!O)return;const W=this._commandAction.checked&&(0,i.isICommandActionToggleInfo)(N.toggled)&&N.toggled.icon?N.toggled.icon:N.icon;if(W)if(o.ThemeIcon.isThemeIcon(W)){const U=o.ThemeIcon.asClassNameArray(W);O.classList.add(...U),this._itemClassDispose.value=(0,_.toDisposable)(()=>{O.classList.remove(...U)})}else O.style.backgroundImage=(0,d.isDark)(this._themeService.getColorTheme().type)?(0,L.asCSSUrl)(W.dark):(0,L.asCSSUrl)(W.light),O.classList.add(\"icon\"),this._itemClassDispose.value=(0,_.combinedDisposable)((0,_.toDisposable)(()=>{O.style.backgroundImage=\"\",O.classList.remove(\"icon\")}),this._themeService.onDidColorThemeChange(()=>{this.updateClass()}))}};e.MenuEntryActionViewItem=I,e.MenuEntryActionViewItem=I=ke([fe(2,u.IKeybindingService),fe(3,h.INotificationService),fe(4,n.IContextKeyService),fe(5,c.IThemeService),fe(6,t.IContextMenuService),fe(7,v.IAccessibilityService)],I);let M=class extends D.DropdownMenuActionViewItem{constructor(N,F,O,W,U){var j,R,K;const G=Object.assign(Object.assign({},F),{menuAsChild:(j=F?.menuAsChild)!==null&&j!==void 0?j:!1,classNames:(R=F?.classNames)!==null&&R!==void 0?R:o.ThemeIcon.isThemeIcon(N.item.icon)?o.ThemeIcon.asClassName(N.item.icon):void 0,keybindingProvider:(K=F?.keybindingProvider)!==null&&K!==void 0?K:Z=>O.lookupKeybinding(Z.id)});super(N,{getActions:()=>N.actions},W,G),this._keybindingService=O,this._contextMenuService=W,this._themeService=U}render(N){super.render(N),(0,l.assertType)(this.element),N.classList.add(\"menu-entry\");const F=this._action,{icon:O}=F.item;if(O&&!o.ThemeIcon.isThemeIcon(O)){this.element.classList.add(\"icon\");const W=()=>{this.element&&(this.element.style.backgroundImage=(0,d.isDark)(this._themeService.getColorTheme().type)?(0,L.asCSSUrl)(O.dark):(0,L.asCSSUrl)(O.light))};W(),this._register(this._themeService.onDidColorThemeChange(()=>{W()}))}}};e.SubmenuEntryActionViewItem=M,e.SubmenuEntryActionViewItem=M=ke([fe(2,u.IKeybindingService),fe(3,t.IContextMenuService),fe(4,c.IThemeService)],M);let P=class extends y.BaseActionViewItem{constructor(N,F,O,W,U,j,R,K){var G,Z,J;super(null,N),this._keybindingService=O,this._notificationService=W,this._contextMenuService=U,this._menuService=j,this._instaService=R,this._storageService=K,this._container=null,this._options=F,this._storageKey=`${N.item.submenu.id}_lastActionId`;let X;const H=F?.persistLastActionId?K.get(this._storageKey,1):void 0;H&&(X=N.actions.find(V=>H===V.id)),X||(X=N.actions[0]),this._defaultAction=this._instaService.createInstance(I,X,{keybinding:this._getDefaultActionKeybindingLabel(X)});const B=Object.assign(Object.assign({keybindingProvider:V=>this._keybindingService.lookupKeybinding(V.id)},F),{menuAsChild:(G=F?.menuAsChild)!==null&&G!==void 0?G:!0,classNames:(Z=F?.classNames)!==null&&Z!==void 0?Z:[\"codicon\",\"codicon-chevron-down\"],actionRunner:(J=F?.actionRunner)!==null&&J!==void 0?J:new S.ActionRunner});this._dropdown=new D.DropdownMenuActionViewItem(N,N.actions,this._contextMenuService,B),this._dropdown.actionRunner.onDidRun(V=>{V.action instanceof s.MenuItemAction&&this.update(V.action)})}update(N){var F;!((F=this._options)===null||F===void 0)&&F.persistLastActionId&&this._storageService.store(this._storageKey,N.id,1,1),this._defaultAction.dispose(),this._defaultAction=this._instaService.createInstance(I,N,{keybinding:this._getDefaultActionKeybindingLabel(N)}),this._defaultAction.actionRunner=new class extends S.ActionRunner{runAction(O,W){return we(this,void 0,void 0,function*(){yield O.run(void 0)})}},this._container&&this._defaultAction.render((0,L.prepend)(this._container,(0,L.$)(\".action-container\")))}_getDefaultActionKeybindingLabel(N){var F;let O;if(!((F=this._options)===null||F===void 0)&&F.renderKeybindingWithDefaultActionLabel){const W=this._keybindingService.lookupKeybinding(N.id);W&&(O=`(${W.getLabel()})`)}return O}setActionContext(N){super.setActionContext(N),this._defaultAction.setActionContext(N),this._dropdown.setActionContext(N)}render(N){this._container=N,super.render(this._container),this._container.classList.add(\"monaco-dropdown-with-default\");const F=(0,L.$)(\".action-container\");this._defaultAction.render((0,L.append)(this._container,F)),this._register((0,L.addDisposableListener)(F,L.EventType.KEY_DOWN,W=>{const U=new k.StandardKeyboardEvent(W);U.equals(17)&&(this._defaultAction.element.tabIndex=-1,this._dropdown.focus(),U.stopPropagation())}));const O=(0,L.$)(\".dropdown-action-container\");this._dropdown.render((0,L.append)(this._container,O)),this._register((0,L.addDisposableListener)(O,L.EventType.KEY_DOWN,W=>{var U;const j=new k.StandardKeyboardEvent(W);j.equals(15)&&(this._defaultAction.element.tabIndex=0,this._dropdown.setFocusable(!1),(U=this._defaultAction.element)===null||U===void 0||U.focus(),j.stopPropagation())}))}focus(N){N?this._dropdown.focus():(this._defaultAction.element.tabIndex=0,this._defaultAction.element.focus())}blur(){this._defaultAction.element.tabIndex=-1,this._dropdown.blur(),this._container.blur()}setFocusable(N){N?this._defaultAction.element.tabIndex=0:(this._defaultAction.element.tabIndex=-1,this._dropdown.setFocusable(!1))}dispose(){this._defaultAction.dispose(),this._dropdown.dispose(),super.dispose()}};e.DropdownWithDefaultActionViewItem=P,e.DropdownWithDefaultActionViewItem=P=ke([fe(2,u.IKeybindingService),fe(3,h.INotificationService),fe(4,t.IContextMenuService),fe(5,s.IMenuService),fe(6,a.IInstantiationService),fe(7,r.IStorageService)],P);let x=class extends y.SelectActionViewItem{constructor(N,F){super(null,N,N.actions.map(O=>({text:O.id===S.Separator.ID?\"\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\":O.label,isDisabled:!O.enabled})),0,F,m.defaultSelectBoxStyles,{ariaLabel:N.tooltip,optionsAsChildren:!0}),this.select(Math.max(0,N.actions.findIndex(O=>O.checked)))}render(N){super.render(N),N.style.borderColor=(0,p.asCssVariable)(p.selectBorder)}runAction(N,F){const O=this.action.actions[F];O&&this.actionRunner.run(O)}};x=ke([fe(1,t.IContextViewService)],x);function T(A,N,F){return N instanceof s.MenuItemAction?A.createInstance(I,N,F):N instanceof s.SubmenuItemAction?N.item.isSelection?A.createInstance(x,N):N.item.rememberDefaultAction?A.createInstance(P,N,Object.assign(Object.assign({},F),{persistLastActionId:!0})):A.createInstance(M,N,F):void 0}e.createActionViewItem=T}),define(ne[253],se([1,0,7,131,222,39,14,13,25,2,42,17,26,12,29,214,681,160,817,30,27,15,57,8,34,79,62,451]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b){\"use strict\";var w;Object.defineProperty(e,\"__esModule\",{value:!0}),e.CustomizedMenuWorkbenchToolBar=e.InlineSuggestionHintsContentWidget=e.InlineCompletionsHintsWidget=void 0;let E=class extends g.Disposable{constructor(F,O,W){super(),this.editor=F,this.model=O,this.instantiationService=W,this.alwaysShowToolbar=(0,C.observableFromEvent)(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(61).showToolbar===\"always\"),this.sessionPosition=void 0,this.position=(0,C.derived)(U=>{var j,R,K;const G=(j=this.model.read(U))===null||j===void 0?void 0:j.ghostText.read(U);if(!this.alwaysShowToolbar.read(U)||!G||G.parts.length===0)return this.sessionPosition=void 0,null;const Z=G.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==G.lineNumber&&(this.sessionPosition=void 0);const J=new n.Position(G.lineNumber,Math.min(Z,(K=(R=this.sessionPosition)===null||R===void 0?void 0:R.column)!==null&&K!==void 0?K:Number.MAX_SAFE_INTEGER));return this.sessionPosition=J,J}),this._register((0,C.autorunWithStore)((U,j)=>{const R=this.model.read(U);if(!R||!this.alwaysShowToolbar.read(U))return;const K=j.add(this.instantiationService.createInstance(P,this.editor,!0,this.position,R.selectedInlineCompletionIndex,R.inlineCompletionsCount,R.selectedInlineCompletion.map(G=>{var Z;return(Z=G?.inlineCompletion.source.inlineCompletions.commands)!==null&&Z!==void 0?Z:[]})));F.addContentWidget(K),j.add((0,g.toDisposable)(()=>F.removeContentWidget(K))),j.add((0,C.autorun)(G=>{this.position.read(G)&&R.lastTriggerKind.read(G)!==t.InlineCompletionTriggerKind.Explicit&&R.triggerExplicitly()}))}))}};e.InlineCompletionsHintsWidget=E,e.InlineCompletionsHintsWidget=E=ke([fe(2,p.IInstantiationService)],E);const I=(0,b.registerIcon)(\"inline-suggestion-hints-next\",_.Codicon.chevronRight,(0,u.localize)(0,null)),M=(0,b.registerIcon)(\"inline-suggestion-hints-previous\",_.Codicon.chevronLeft,(0,u.localize)(1,null));let P=w=class extends g.Disposable{static get dropDownVisible(){return this._dropDownVisible}createCommandAction(F,O,W){const U=new D.Action(F,O,W,!0,()=>this._commandService.executeCommand(F)),j=this.keybindingService.lookupKeybinding(F,this._contextKeyService);let R=O;return j&&(R=(0,u.localize)(2,null,O,j.getLabel())),U.tooltip=R,U}constructor(F,O,W,U,j,R,K,G,Z,J,X){super(),this.editor=F,this.withBorder=O,this._position=W,this._currentSuggestionIdx=U,this._suggestionCount=j,this._extraCommands=R,this._commandService=K,this.keybindingService=Z,this._contextKeyService=J,this._menuService=X,this.id=`InlineSuggestionHintsContentWidget${w.id++}`,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this.nodes=(0,L.h)(\"div.inlineSuggestionsHints\",{className:this.withBorder?\".withBorder\":\"\"},[(0,L.h)(\"div@toolBar\")]),this.previousAction=this.createCommandAction(a.showPreviousInlineSuggestionActionId,(0,u.localize)(3,null),i.ThemeIcon.asClassName(M)),this.availableSuggestionCountAction=new D.Action(\"inlineSuggestionHints.availableSuggestionCount\",\"\",void 0,!1),this.nextAction=this.createCommandAction(a.showNextInlineSuggestionActionId,(0,u.localize)(4,null),i.ThemeIcon.asClassName(I)),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(c.MenuId.InlineCompletionsActions,this._contextKeyService)),this.clearAvailableSuggestionCountLabelDebounced=this._register(new f.RunOnceScheduler(()=>{this.availableSuggestionCountAction.label=\"\"},100)),this.disableButtonsDebounced=this._register(new f.RunOnceScheduler(()=>{this.previousAction.enabled=this.nextAction.enabled=!1},100)),this.lastCommands=[],this.toolBar=this._register(G.createInstance(A,this.nodes.toolBar,c.MenuId.InlineSuggestionToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:H=>H.startsWith(\"primary\")},actionViewItemProvider:(H,B)=>{if(H instanceof c.MenuItemAction)return G.createInstance(T,H,void 0);if(H===this.availableSuggestionCountAction){const V=new x(void 0,H,{label:!0,icon:!1});return V.setClass(\"availableSuggestionCount\"),V}},telemetrySource:\"InlineSuggestionToolbar\"})),this.toolBar.setPrependedPrimaryActions([this.previousAction,this.availableSuggestionCountAction,this.nextAction]),this._register(this.toolBar.onDidChangeDropdownVisibility(H=>{w._dropDownVisible=H})),this._register((0,C.autorun)(H=>{this._position.read(H),this.editor.layoutContentWidget(this)})),this._register((0,C.autorun)(H=>{const B=this._suggestionCount.read(H),V=this._currentSuggestionIdx.read(H);B!==void 0?(this.clearAvailableSuggestionCountLabelDebounced.cancel(),this.availableSuggestionCountAction.label=`${V+1}/${B}`):this.clearAvailableSuggestionCountLabelDebounced.schedule(),B!==void 0&&B>1?(this.disableButtonsDebounced.cancel(),this.previousAction.enabled=this.nextAction.enabled=!0):this.disableButtonsDebounced.schedule()})),this._register((0,C.autorun)(H=>{const B=this._extraCommands.read(H);if((0,S.equals)(this.lastCommands,B))return;this.lastCommands=B;const V=B.map(Y=>({class:void 0,id:Y.id,enabled:!0,tooltip:Y.tooltip||\"\",label:Y.title,run:ie=>this._commandService.executeCommand(Y.id)}));for(const[Y,ie]of this.inlineCompletionsActionsMenus.getActions())for(const ae of ie)ae instanceof c.MenuItemAction&&V.push(ae);V.length>0&&V.unshift(new D.Separator),this.toolBar.setAdditionalSecondaryActions(V)}))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}};e.InlineSuggestionHintsContentWidget=P,P._dropDownVisible=!1,P.id=0,e.InlineSuggestionHintsContentWidget=P=w=ke([fe(6,o.ICommandService),fe(7,p.IInstantiationService),fe(8,m.IKeybindingService),fe(9,d.IContextKeyService),fe(10,c.IMenuService)],P);class x extends k.ActionViewItem{constructor(){super(...arguments),this._className=void 0}setClass(F){this._className=F}render(F){super.render(F),this._className&&F.classList.add(this._className)}}class T extends h.MenuEntryActionViewItem{updateLabel(){const F=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!F)return super.updateLabel();if(this.label){const O=(0,L.h)(\"div.keybinding\").root;new y.KeybindingLabel(O,s.OS,Object.assign({disableTitle:!0},y.unthemedKeybindingLabelOptions)).set(F),this.label.textContent=this._action.label,this.label.appendChild(O),this.label.classList.add(\"inlineSuggestionStatusBarItemLabel\")}}}let A=class extends r.WorkbenchToolBar{constructor(F,O,W,U,j,R,K,G){super(F,Object.assign({resetMenu:O},W),U,j,R,K,G),this.menuId=O,this.options2=W,this.menuService=U,this.contextKeyService=j,this.menu=this._store.add(this.menuService.createMenu(this.menuId,this.contextKeyService,{emitEventsForSubmenuChanges:!0})),this.additionalActions=[],this.prependedPrimaryActions=[],this._store.add(this.menu.onDidChange(()=>this.updateToolbar())),this.updateToolbar()}updateToolbar(){var F,O,W,U,j,R,K;const G=[],Z=[];(0,h.createAndFillInActionBarActions)(this.menu,(F=this.options2)===null||F===void 0?void 0:F.menuOptions,{primary:G,secondary:Z},(W=(O=this.options2)===null||O===void 0?void 0:O.toolbarOptions)===null||W===void 0?void 0:W.primaryGroup,(j=(U=this.options2)===null||U===void 0?void 0:U.toolbarOptions)===null||j===void 0?void 0:j.shouldInlineSubmenu,(K=(R=this.options2)===null||R===void 0?void 0:R.toolbarOptions)===null||K===void 0?void 0:K.useSeparatorsInPrimaryActions),Z.push(...this.additionalActions),G.unshift(...this.prependedPrimaryActions),this.setActions(G,Z)}setPrependedPrimaryActions(F){(0,S.equals)(this.prependedPrimaryActions,F,(O,W)=>O===W)||(this.prependedPrimaryActions=F,this.updateToolbar())}setAdditionalSecondaryActions(F){(0,S.equals)(this.additionalActions,F,(O,W)=>O===W)||(this.additionalActions=F,this.updateToolbar())}};e.CustomizedMenuWorkbenchToolBar=A,e.CustomizedMenuWorkbenchToolBar=A=ke([fe(3,c.IMenuService),fe(4,d.IContextKeyService),fe(5,l.IContextMenuService),fe(6,m.IKeybindingService),fe(7,v.ITelemetryService)],A)}),define(ne[866],se([1,0,7,68,2,705,160,30,15,8]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SuggestWidgetStatus=void 0;class C extends S.MenuEntryActionViewItem{updateLabel(){const n=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!n)return super.updateLabel();this.label&&(this.label.textContent=(0,D.localize)(0,null,this._action.label,C.symbolPrintEnter(n)))}static symbolPrintEnter(n){var t;return(t=n.getLabel())===null||t===void 0?void 0:t.replace(/\\benter\\b/gi,\"\\u23CE\")}}let s=class{constructor(n,t,a,u,h){this._menuId=t,this._menuService=u,this._contextKeyService=h,this._menuDisposables=new y.DisposableStore,this.element=L.append(n,L.$(\".suggest-status-bar\"));const r=c=>c instanceof f.MenuItemAction?a.createInstance(C,c,void 0):void 0;this._leftActions=new k.ActionBar(this.element,{actionViewItemProvider:r}),this._rightActions=new k.ActionBar(this.element,{actionViewItemProvider:r}),this._leftActions.domNode.classList.add(\"left\"),this._rightActions.domNode.classList.add(\"right\")}dispose(){this._menuDisposables.dispose(),this.element.remove()}show(){const n=this._menuService.createMenu(this._menuId,this._contextKeyService),t=()=>{const a=[],u=[];for(const[h,r]of n.getActions())h===\"left\"?a.push(...r):u.push(...r);this._leftActions.clear(),this._leftActions.push(a),this._rightActions.clear(),this._rightActions.push(u)};this._menuDisposables.add(n.onDidChange(()=>t())),this._menuDisposables.add(n)}hide(){this._menuDisposables.clear()}};e.SuggestWidgetStatus=s,e.SuggestWidgetStatus=s=ke([fe(2,g.IInstantiationService),fe(3,f.IMenuService),fe(4,_.IContextKeyService)],s)}),define(ne[867],se([1,0,7,39,6,2,160,30,15,34,43,79,829,57]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ContextMenuMenuDelegate=e.ContextMenuService=void 0;let t=class extends D.Disposable{get contextMenuHandler(){return this._contextMenuHandler||(this._contextMenuHandler=new i.ContextMenuHandler(this.contextViewService,this.telemetryService,this.notificationService,this.keybindingService)),this._contextMenuHandler}constructor(h,r,c,o,d,l){super(),this.telemetryService=h,this.notificationService=r,this.contextViewService=c,this.keybindingService=o,this.menuService=d,this.contextKeyService=l,this._contextMenuHandler=void 0,this._onDidShowContextMenu=this._store.add(new y.Emitter),this._onDidHideContextMenu=this._store.add(new y.Emitter)}configure(h){this.contextMenuHandler.configure(h)}showContextMenu(h){h=a.transform(h,this.menuService,this.contextKeyService),this.contextMenuHandler.showContextMenu(Object.assign(Object.assign({},h),{onHide:r=>{var c;(c=h.onHide)===null||c===void 0||c.call(h,r),this._onDidHideContextMenu.fire()}})),L.ModifierKeyEmitter.getInstance().resetKeyStatus(),this._onDidShowContextMenu.fire()}};e.ContextMenuService=t,e.ContextMenuService=t=ke([fe(0,s.ITelemetryService),fe(1,C.INotificationService),fe(2,n.IContextViewService),fe(3,g.IKeybindingService),fe(4,f.IMenuService),fe(5,_.IContextKeyService)],t);var a;(function(u){function h(c){return c&&c.menuId instanceof f.MenuId}function r(c,o,d){if(!h(c))return c;const{menuId:l,menuActionOptions:p,contextKeyService:m}=c;return Object.assign(Object.assign({},c),{getActions:()=>{const v=[];if(l){const b=o.createMenu(l,m??d);(0,S.createAndFillInContextMenuActions)(b,p,v),b.dispose()}return c.getActions?k.Separator.join(c.getActions(),v):v}})}u.transform=r})(a||(e.ContextMenuMenuDelegate=a={}))}),define(ne[868],se([1,0,19,6,15,8,134,191,56,788,105,31,23,840]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.QuickInputService=void 0;let t=class extends i.Themable{get controller(){return this._controller||(this._controller=this._register(this.createController())),this._controller}get hasController(){return!!this._controller}get quickAccess(){return this._quickAccess||(this._quickAccess=this._register(this.instantiationService.createInstance(g.QuickAccessController))),this._quickAccess}constructor(u,h,r,c){super(r),this.instantiationService=u,this.contextKeyService=h,this.layoutService=c,this._onShow=this._register(new k.Emitter),this._onHide=this._register(new k.Emitter),this.contexts=new Map}createController(u=this.layoutService,h){const r={idPrefix:\"quickInput_\",container:u.container,ignoreFocusOut:()=>!1,backKeybindingLabel:()=>{},setContextKey:o=>this.setContextKey(o),linkOpenerDelegate:o=>{this.instantiationService.invokeFunction(d=>{d.get(_.IOpenerService).open(o,{allowCommands:!0,fromUserGesture:!0})})},returnFocus:()=>u.focus(),createList:(o,d,l,p,m)=>this.instantiationService.createInstance(f.WorkbenchList,o,d,l,p,m),styles:this.computeStyles()},c=this._register(new n.QuickInputController(Object.assign(Object.assign({},r),h),this.themeService));return c.layout(u.dimension,u.offset.quickPickTop),this._register(u.onDidLayout(o=>c.layout(o,u.offset.quickPickTop))),this._register(c.onShow(()=>{this.resetContextKeys(),this._onShow.fire()})),this._register(c.onHide(()=>{this.resetContextKeys(),this._onHide.fire()})),c}setContextKey(u){let h;u&&(h=this.contexts.get(u),h||(h=new y.RawContextKey(u,!1).bindTo(this.contextKeyService),this.contexts.set(u,h))),!(h&&h.get())&&(this.resetContextKeys(),h?.set(!0))}resetContextKeys(){this.contexts.forEach(u=>{u.get()&&u.reset()})}pick(u,h={},r=L.CancellationToken.None){return this.controller.pick(u,h,r)}createQuickPick(){return this.controller.createQuickPick()}createInputBox(){return this.controller.createInputBox()}updateStyles(){this.hasController&&this.controller.applyStyles(this.computeStyles())}computeStyles(){return{widget:{quickInputBackground:(0,s.asCssVariable)(s.quickInputBackground),quickInputForeground:(0,s.asCssVariable)(s.quickInputForeground),quickInputTitleBackground:(0,s.asCssVariable)(s.quickInputTitleBackground),widgetBorder:(0,s.asCssVariable)(s.widgetBorder),widgetShadow:(0,s.asCssVariable)(s.widgetShadow)},inputBox:C.defaultInputBoxStyles,toggle:C.defaultToggleStyles,countBadge:C.defaultCountBadgeStyles,button:C.defaultButtonStyles,progressBar:C.defaultProgressBarStyles,keybindingLabel:C.defaultKeybindingLabelStyles,list:(0,C.getListStyles)({listBackground:s.quickInputBackground,listFocusBackground:s.quickInputListFocusBackground,listFocusForeground:s.quickInputListFocusForeground,listInactiveFocusForeground:s.quickInputListFocusForeground,listInactiveSelectionIconForeground:s.quickInputListFocusIconForeground,listInactiveFocusBackground:s.quickInputListFocusBackground,listFocusOutline:s.activeContrastBorder,listInactiveFocusOutline:s.activeContrastBorder}),pickerGroup:{pickerGroupBorder:(0,s.asCssVariable)(s.pickerGroupBorder),pickerGroupForeground:(0,s.asCssVariable)(s.pickerGroupForeground)}}}};e.QuickInputService=t,e.QuickInputService=t=ke([fe(0,D.IInstantiationService),fe(1,y.IContextKeyService),fe(2,i.IThemeService),fe(3,S.ILayoutService)],t)}),define(ne[869],se([1,0,16,23,19,8,15,338,33,868,99,470]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.QuickInputEditorWidget=e.QuickInputEditorContribution=e.StandaloneQuickInputService=void 0;let s=class extends g.QuickInputService{constructor(u,h,r,c,o){super(h,r,c,new f.EditorScopedLayoutService(u.getContainerDomNode(),o)),this.host=void 0;const d=n.get(u);if(d){const l=d.widget;this.host={_serviceBrand:void 0,get hasContainer(){return!0},get container(){return l.getDomNode()},get dimension(){return u.getLayoutInfo()},get onDidLayout(){return u.onDidLayoutChange},focus:()=>u.focus(),offset:{top:0,quickPickTop:0}}}else this.host=void 0}createController(){return super.createController(this.host)}};s=ke([fe(1,D.IInstantiationService),fe(2,S.IContextKeyService),fe(3,k.IThemeService),fe(4,_.ICodeEditorService)],s);let i=class{get activeService(){const u=this.codeEditorService.getFocusedCodeEditor();if(!u)throw new Error(\"Quick input service needs a focused editor to work.\");let h=this.mapEditorToService.get(u);if(!h){const r=h=this.instantiationService.createInstance(s,u);this.mapEditorToService.set(u,h),(0,C.once)(u.onDidDispose)(()=>{r.dispose(),this.mapEditorToService.delete(u)})}return h}get quickAccess(){return this.activeService.quickAccess}constructor(u,h){this.instantiationService=u,this.codeEditorService=h,this.mapEditorToService=new Map}pick(u,h={},r=y.CancellationToken.None){return this.activeService.pick(u,h,r)}createQuickPick(){return this.activeService.createQuickPick()}createInputBox(){return this.activeService.createInputBox()}};e.StandaloneQuickInputService=i,e.StandaloneQuickInputService=i=ke([fe(0,D.IInstantiationService),fe(1,_.ICodeEditorService)],i);class n{static get(u){return u.getContribution(n.ID)}constructor(u){this.editor=u,this.widget=new t(this.editor)}dispose(){this.widget.dispose()}}e.QuickInputEditorContribution=n,n.ID=\"editor.controller.quickInput\";class t{constructor(u){this.codeEditor=u,this.domNode=document.createElement(\"div\"),this.codeEditor.addOverlayWidget(this)}getId(){return t.ID}getDomNode(){return this.domNode}getPosition(){return{preference:2}}dispose(){this.codeEditor.removeOverlayWidget(this)}}e.QuickInputEditorWidget=t,t.ID=\"editor.contrib.quickInputWidget\",(0,L.registerEditorContribution)(n.ID,n,4)}),define(ne[192],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UndoRedoSource=e.UndoRedoGroup=e.ResourceEditStackSnapshot=e.IUndoRedoService=void 0,e.IUndoRedoService=(0,L.createDecorator)(\"undoRedoService\");class k{constructor(f,_){this.resource=f,this.elements=_}}e.ResourceEditStackSnapshot=k;class y{constructor(){this.id=y._ID++,this.order=1}nextOrder(){return this.id===0?0:this.order++}}e.UndoRedoGroup=y,y._ID=0,y.None=new y;class D{constructor(){this.id=D._ID++,this.order=1}nextOrder(){return this.id===0?0:this.order++}}e.UndoRedoSource=D,D._ID=0,D.None=new D}),define(ne[40],se([1,0,14,38,9,6,2,11,22,122,202,66,12,5,24,175,41,32,48,596,852,329,287,509,510,320,597,181,626,111,192]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M){\"use strict\";var P;Object.defineProperty(e,\"__esModule\",{value:!0}),e.AttachedViews=e.ModelDecorationOptions=e.ModelDecorationInjectedTextOptions=e.ModelDecorationMinimapOptions=e.ModelDecorationGlyphMarginOptions=e.ModelDecorationOverviewRulerOptions=e.TextModel=e.createTextBuffer=e.createTextBufferFactoryFromSnapshot=e.createTextBufferFactory=void 0;function x(q){const z=new b.PieceTreeTextBufferBuilder;return z.acceptChunk(q),z.finish()}e.createTextBufferFactory=x;function T(q){const z=new b.PieceTreeTextBufferBuilder;let ee;for(;typeof(ee=q.read())==\"string\";)z.acceptChunk(ee);return z.finish()}e.createTextBufferFactoryFromSnapshot=T;function A(q,z){let ee;return typeof q==\"string\"?ee=x(q):r.isITextSnapshot(q)?ee=T(q):ee=q,ee.create(z)}e.createTextBuffer=A;let N=0;const F=999,O=1e4;class W{constructor(z){this._source=z,this._eos=!1}read(){if(this._eos)return null;const z=[];let ee=0,$=0;do{const re=this._source.read();if(re===null)return this._eos=!0,ee===0?null:z.join(\"\");if(re.length>0&&(z[ee++]=re,$+=re.length),$>=64*1024)return z.join(\"\")}while(!0)}}const U=()=>{throw new Error(\"Invalid change accessor\")};let j=P=class extends S.Disposable{static resolveOptions(z,ee){if(ee.detectIndentation){const $=(0,p.guessIndentation)(z,ee.tabSize,ee.insertSpaces);return new r.TextModelResolvedOptions({tabSize:$.tabSize,indentSize:\"tabSize\",insertSpaces:$.insertSpaces,trimAutoWhitespace:ee.trimAutoWhitespace,defaultEOL:ee.defaultEOL,bracketPairColorizationOptions:ee.bracketPairColorizationOptions})}return new r.TextModelResolvedOptions(ee)}get onDidChangeLanguage(){return this._tokenizationTextModelPart.onDidChangeLanguage}get onDidChangeLanguageConfiguration(){return this._tokenizationTextModelPart.onDidChangeLanguageConfiguration}get onDidChangeTokens(){return this._tokenizationTextModelPart.onDidChangeTokens}onDidChangeContent(z){return this._eventEmitter.slowEvent(ee=>z(ee.contentChangedEvent))}onDidChangeContentOrInjectedText(z){return(0,S.combinedDisposable)(this._eventEmitter.fastEvent(ee=>z(ee)),this._onDidChangeInjectedText.event(ee=>z(ee)))}_isDisposing(){return this.__isDisposing}get tokenization(){return this._tokenizationTextModelPart}get bracketPairs(){return this._bracketPairs}get guides(){return this._guidesTextModelPart}constructor(z,ee,$,re=null,oe,ge,ve){super(),this._undoRedoService=oe,this._languageService=ge,this._languageConfigurationService=ve,this._onWillDispose=this._register(new D.Emitter),this.onWillDispose=this._onWillDispose.event,this._onDidChangeDecorations=this._register(new de(Me=>this.handleBeforeFireDecorationsChangedEvent(Me))),this.onDidChangeDecorations=this._onDidChangeDecorations.event,this._onDidChangeOptions=this._register(new D.Emitter),this.onDidChangeOptions=this._onDidChangeOptions.event,this._onDidChangeAttached=this._register(new D.Emitter),this.onDidChangeAttached=this._onDidChangeAttached.event,this._onDidChangeInjectedText=this._register(new D.Emitter),this._eventEmitter=this._register(new he),this._languageSelectionListener=this._register(new S.MutableDisposable),this._deltaDecorationCallCnt=0,this._attachedViews=new ue,N++,this.id=\"$model\"+N,this.isForSimpleWidget=$.isForSimpleWidget,typeof re>\"u\"||re===null?this._associatedResource=_.URI.parse(\"inmemory://model/\"+N):this._associatedResource=re,this._attachedEditorCount=0;const{textBuffer:Se,disposable:Le}=A(z,$.defaultEOL);this._buffer=Se,this._bufferDisposable=Le,this._options=P.resolveOptions(this._buffer,$);const De=typeof ee==\"string\"?ee:ee.languageId;typeof ee!=\"string\"&&(this._languageSelectionListener.value=ee.onDidChange(()=>this._setLanguage(ee.languageId))),this._bracketPairs=this._register(new c.BracketPairsTextModelPart(this,this._languageConfigurationService)),this._guidesTextModelPart=this._register(new l.GuidesTextModelPart(this,this._languageConfigurationService)),this._decorationProvider=this._register(new o.ColorizedBracketPairsDecorationProvider(this)),this._tokenizationTextModelPart=new E.TokenizationTextModelPart(this._languageService,this._languageConfigurationService,this,this._bracketPairs,De,this._attachedViews);const ye=this._buffer.getLineCount(),Ee=this._buffer.getValueLengthInRange(new n.Range(1,1,ye,this._buffer.getLineLength(ye)+1),0);$.largeFileOptimizations?this._isTooLargeForTokenization=Ee>P.LARGE_FILE_SIZE_THRESHOLD||ye>P.LARGE_FILE_LINE_COUNT_THRESHOLD:this._isTooLargeForTokenization=!1,this._isTooLargeForSyncing=Ee>P._MODEL_SYNC_LIMIT,this._versionId=1,this._alternativeVersionId=1,this._initialUndoRedoSnapshot=null,this._isDisposed=!1,this.__isDisposing=!1,this._instanceId=f.singleLetterHash(N),this._lastDecorationId=0,this._decorations=Object.create(null),this._decorationsTree=new Z,this._commandManager=new d.EditStack(this,this._undoRedoService),this._isUndoing=!1,this._isRedoing=!1,this._trimAutoWhitespaceLines=null,this._register(this._decorationProvider.onDidChange(()=>{this._onDidChangeDecorations.beginDeferredEmit(),this._onDidChangeDecorations.fire(),this._onDidChangeDecorations.endDeferredEmit()})),this._languageService.requestRichLanguageFeatures(De)}dispose(){this.__isDisposing=!0,this._onWillDispose.fire(),this._tokenizationTextModelPart.dispose(),this._isDisposed=!0,super.dispose(),this._bufferDisposable.dispose(),this.__isDisposing=!1;const z=new v.PieceTreeTextBuffer([],\"\",`\n`,!1,!1,!0,!0);z.dispose(),this._buffer=z,this._bufferDisposable=S.Disposable.None}_assertNotDisposed(){if(this._isDisposed)throw new Error(\"Model is disposed!\")}_emitContentChangedEvent(z,ee){this.__isDisposing||(this._tokenizationTextModelPart.handleDidChangeContent(ee),this._bracketPairs.handleDidChangeContent(ee),this._eventEmitter.fire(new I.InternalModelContentChangeEvent(z,ee)))}setValue(z){if(this._assertNotDisposed(),z==null)throw(0,y.illegalArgument)();const{textBuffer:ee,disposable:$}=A(z,this._options.defaultEOL);this._setValueFromTextBuffer(ee,$)}_createContentChanged2(z,ee,$,re,oe,ge,ve,Se){return{changes:[{range:z,rangeOffset:ee,rangeLength:$,text:re}],eol:this._buffer.getEOL(),isEolChange:Se,versionId:this.getVersionId(),isUndoing:oe,isRedoing:ge,isFlush:ve}}_setValueFromTextBuffer(z,ee){this._assertNotDisposed();const $=this.getFullModelRange(),re=this.getValueLengthInRange($),oe=this.getLineCount(),ge=this.getLineMaxColumn(oe);this._buffer=z,this._bufferDisposable.dispose(),this._bufferDisposable=ee,this._increaseVersionId(),this._decorations=Object.create(null),this._decorationsTree=new Z,this._commandManager.clear(),this._trimAutoWhitespaceLines=null,this._emitContentChangedEvent(new I.ModelRawContentChangedEvent([new I.ModelRawFlush],this._versionId,!1,!1),this._createContentChanged2(new n.Range(1,1,oe,ge),0,re,this.getValue(),!1,!1,!0,!1))}setEOL(z){this._assertNotDisposed();const ee=z===1?`\\r\n`:`\n`;if(this._buffer.getEOL()===ee)return;const $=this.getFullModelRange(),re=this.getValueLengthInRange($),oe=this.getLineCount(),ge=this.getLineMaxColumn(oe);this._onBeforeEOLChange(),this._buffer.setEOL(ee),this._increaseVersionId(),this._onAfterEOLChange(),this._emitContentChangedEvent(new I.ModelRawContentChangedEvent([new I.ModelRawEOLChanged],this._versionId,!1,!1),this._createContentChanged2(new n.Range(1,1,oe,ge),0,re,this.getValue(),!1,!1,!1,!0))}_onBeforeEOLChange(){this._decorationsTree.ensureAllNodesHaveRanges(this)}_onAfterEOLChange(){const z=this.getVersionId(),ee=this._decorationsTree.collectNodesPostOrder();for(let $=0,re=ee.length;$<re;$++){const oe=ee[$],ge=oe.range,ve=oe.cachedAbsoluteStart-oe.start,Se=this._buffer.getOffsetAt(ge.startLineNumber,ge.startColumn),Le=this._buffer.getOffsetAt(ge.endLineNumber,ge.endColumn);oe.cachedAbsoluteStart=Se,oe.cachedAbsoluteEnd=Le,oe.cachedVersionId=z,oe.start=Se-ve,oe.end=Le-ve,(0,m.recomputeMaxEnd)(oe)}}onBeforeAttached(){return this._attachedEditorCount++,this._attachedEditorCount===1&&(this._tokenizationTextModelPart.handleDidChangeAttached(),this._onDidChangeAttached.fire(void 0)),this._attachedViews.attachView()}onBeforeDetached(z){this._attachedEditorCount--,this._attachedEditorCount===0&&(this._tokenizationTextModelPart.handleDidChangeAttached(),this._onDidChangeAttached.fire(void 0)),this._attachedViews.detachView(z)}isAttachedToEditor(){return this._attachedEditorCount>0}getAttachedEditorCount(){return this._attachedEditorCount}isTooLargeForSyncing(){return this._isTooLargeForSyncing}isTooLargeForTokenization(){return this._isTooLargeForTokenization}isDisposed(){return this._isDisposed}isDominatedByLongLines(){if(this._assertNotDisposed(),this.isTooLargeForTokenization())return!1;let z=0,ee=0;const $=this._buffer.getLineCount();for(let re=1;re<=$;re++){const oe=this._buffer.getLineLength(re);oe>=O?ee+=oe:z+=oe}return ee>z}get uri(){return this._associatedResource}getOptions(){return this._assertNotDisposed(),this._options}getFormattingOptions(){return{tabSize:this._options.indentSize,insertSpaces:this._options.insertSpaces}}updateOptions(z){this._assertNotDisposed();const ee=typeof z.tabSize<\"u\"?z.tabSize:this._options.tabSize,$=typeof z.indentSize<\"u\"?z.indentSize:this._options.originalIndentSize,re=typeof z.insertSpaces<\"u\"?z.insertSpaces:this._options.insertSpaces,oe=typeof z.trimAutoWhitespace<\"u\"?z.trimAutoWhitespace:this._options.trimAutoWhitespace,ge=typeof z.bracketColorizationOptions<\"u\"?z.bracketColorizationOptions:this._options.bracketPairColorizationOptions,ve=new r.TextModelResolvedOptions({tabSize:ee,indentSize:$,insertSpaces:re,defaultEOL:this._options.defaultEOL,trimAutoWhitespace:oe,bracketPairColorizationOptions:ge});if(this._options.equals(ve))return;const Se=this._options.createChangeEvent(ve);this._options=ve,this._bracketPairs.handleDidChangeOptions(Se),this._decorationProvider.handleDidChangeOptions(Se),this._onDidChangeOptions.fire(Se)}detectIndentation(z,ee){this._assertNotDisposed();const $=(0,p.guessIndentation)(this._buffer,ee,z);this.updateOptions({insertSpaces:$.insertSpaces,tabSize:$.tabSize,indentSize:$.tabSize})}normalizeIndentation(z){return this._assertNotDisposed(),(0,C.normalizeIndentation)(z,this._options.indentSize,this._options.insertSpaces)}getVersionId(){return this._assertNotDisposed(),this._versionId}mightContainRTL(){return this._buffer.mightContainRTL()}mightContainUnusualLineTerminators(){return this._buffer.mightContainUnusualLineTerminators()}removeUnusualLineTerminators(z=null){const ee=this.findMatches(f.UNUSUAL_LINE_TERMINATORS.source,!1,!0,!1,null,!1,1073741824);this._buffer.resetMightContainUnusualLineTerminators(),this.pushEditOperations(z,ee.map($=>({range:$.range,text:null})),()=>null)}mightContainNonBasicASCII(){return this._buffer.mightContainNonBasicASCII()}getAlternativeVersionId(){return this._assertNotDisposed(),this._alternativeVersionId}getInitialUndoRedoSnapshot(){return this._assertNotDisposed(),this._initialUndoRedoSnapshot}getOffsetAt(z){this._assertNotDisposed();const ee=this._validatePosition(z.lineNumber,z.column,0);return this._buffer.getOffsetAt(ee.lineNumber,ee.column)}getPositionAt(z){this._assertNotDisposed();const ee=Math.min(this._buffer.getLength(),Math.max(0,z));return this._buffer.getPositionAt(ee)}_increaseVersionId(){this._versionId=this._versionId+1,this._alternativeVersionId=this._versionId}_overwriteVersionId(z){this._versionId=z}_overwriteAlternativeVersionId(z){this._alternativeVersionId=z}_overwriteInitialUndoRedoSnapshot(z){this._initialUndoRedoSnapshot=z}getValue(z,ee=!1){this._assertNotDisposed();const $=this.getFullModelRange(),re=this.getValueInRange($,z);return ee?this._buffer.getBOM()+re:re}createSnapshot(z=!1){return new W(this._buffer.createSnapshot(z))}getValueLength(z,ee=!1){this._assertNotDisposed();const $=this.getFullModelRange(),re=this.getValueLengthInRange($,z);return ee?this._buffer.getBOM().length+re:re}getValueInRange(z,ee=0){return this._assertNotDisposed(),this._buffer.getValueInRange(this.validateRange(z),ee)}getValueLengthInRange(z,ee=0){return this._assertNotDisposed(),this._buffer.getValueLengthInRange(this.validateRange(z),ee)}getCharacterCountInRange(z,ee=0){return this._assertNotDisposed(),this._buffer.getCharacterCountInRange(this.validateRange(z),ee)}getLineCount(){return this._assertNotDisposed(),this._buffer.getLineCount()}getLineContent(z){if(this._assertNotDisposed(),z<1||z>this.getLineCount())throw new y.BugIndicatingError(\"Illegal value for lineNumber\");return this._buffer.getLineContent(z)}getLineLength(z){if(this._assertNotDisposed(),z<1||z>this.getLineCount())throw new y.BugIndicatingError(\"Illegal value for lineNumber\");return this._buffer.getLineLength(z)}getLinesContent(){return this._assertNotDisposed(),this._buffer.getLinesContent()}getEOL(){return this._assertNotDisposed(),this._buffer.getEOL()}getEndOfLineSequence(){return this._assertNotDisposed(),this._buffer.getEOL()===`\n`?0:1}getLineMinColumn(z){return this._assertNotDisposed(),1}getLineMaxColumn(z){if(this._assertNotDisposed(),z<1||z>this.getLineCount())throw new y.BugIndicatingError(\"Illegal value for lineNumber\");return this._buffer.getLineLength(z)+1}getLineFirstNonWhitespaceColumn(z){if(this._assertNotDisposed(),z<1||z>this.getLineCount())throw new y.BugIndicatingError(\"Illegal value for lineNumber\");return this._buffer.getLineFirstNonWhitespaceColumn(z)}getLineLastNonWhitespaceColumn(z){if(this._assertNotDisposed(),z<1||z>this.getLineCount())throw new y.BugIndicatingError(\"Illegal value for lineNumber\");return this._buffer.getLineLastNonWhitespaceColumn(z)}_validateRangeRelaxedNoAllocations(z){const ee=this._buffer.getLineCount(),$=z.startLineNumber,re=z.startColumn;let oe=Math.floor(typeof $==\"number\"&&!isNaN($)?$:1),ge=Math.floor(typeof re==\"number\"&&!isNaN(re)?re:1);if(oe<1)oe=1,ge=1;else if(oe>ee)oe=ee,ge=this.getLineMaxColumn(oe);else if(ge<=1)ge=1;else{const ye=this.getLineMaxColumn(oe);ge>=ye&&(ge=ye)}const ve=z.endLineNumber,Se=z.endColumn;let Le=Math.floor(typeof ve==\"number\"&&!isNaN(ve)?ve:1),De=Math.floor(typeof Se==\"number\"&&!isNaN(Se)?Se:1);if(Le<1)Le=1,De=1;else if(Le>ee)Le=ee,De=this.getLineMaxColumn(Le);else if(De<=1)De=1;else{const ye=this.getLineMaxColumn(Le);De>=ye&&(De=ye)}return $===oe&&re===ge&&ve===Le&&Se===De&&z instanceof n.Range&&!(z instanceof t.Selection)?z:new n.Range(oe,ge,Le,De)}_isValidPosition(z,ee,$){if(typeof z!=\"number\"||typeof ee!=\"number\"||isNaN(z)||isNaN(ee)||z<1||ee<1||(z|0)!==z||(ee|0)!==ee)return!1;const re=this._buffer.getLineCount();if(z>re)return!1;if(ee===1)return!0;const oe=this.getLineMaxColumn(z);if(ee>oe)return!1;if($===1){const ge=this._buffer.getLineCharCode(z,ee-2);if(f.isHighSurrogate(ge))return!1}return!0}_validatePosition(z,ee,$){const re=Math.floor(typeof z==\"number\"&&!isNaN(z)?z:1),oe=Math.floor(typeof ee==\"number\"&&!isNaN(ee)?ee:1),ge=this._buffer.getLineCount();if(re<1)return new i.Position(1,1);if(re>ge)return new i.Position(ge,this.getLineMaxColumn(ge));if(oe<=1)return new i.Position(re,1);const ve=this.getLineMaxColumn(re);if(oe>=ve)return new i.Position(re,ve);if($===1){const Se=this._buffer.getLineCharCode(re,oe-2);if(f.isHighSurrogate(Se))return new i.Position(re,oe-1)}return new i.Position(re,oe)}validatePosition(z){return this._assertNotDisposed(),z instanceof i.Position&&this._isValidPosition(z.lineNumber,z.column,1)?z:this._validatePosition(z.lineNumber,z.column,1)}_isValidRange(z,ee){const $=z.startLineNumber,re=z.startColumn,oe=z.endLineNumber,ge=z.endColumn;if(!this._isValidPosition($,re,0)||!this._isValidPosition(oe,ge,0))return!1;if(ee===1){const ve=re>1?this._buffer.getLineCharCode($,re-2):0,Se=ge>1&&ge<=this._buffer.getLineLength(oe)?this._buffer.getLineCharCode(oe,ge-2):0,Le=f.isHighSurrogate(ve),De=f.isHighSurrogate(Se);return!Le&&!De}return!0}validateRange(z){if(this._assertNotDisposed(),z instanceof n.Range&&!(z instanceof t.Selection)&&this._isValidRange(z,1))return z;const $=this._validatePosition(z.startLineNumber,z.startColumn,0),re=this._validatePosition(z.endLineNumber,z.endColumn,0),oe=$.lineNumber,ge=$.column,ve=re.lineNumber,Se=re.column;{const Le=ge>1?this._buffer.getLineCharCode(oe,ge-2):0,De=Se>1&&Se<=this._buffer.getLineLength(ve)?this._buffer.getLineCharCode(ve,Se-2):0,ye=f.isHighSurrogate(Le),Ee=f.isHighSurrogate(De);return!ye&&!Ee?new n.Range(oe,ge,ve,Se):oe===ve&&ge===Se?new n.Range(oe,ge-1,ve,Se-1):ye&&Ee?new n.Range(oe,ge-1,ve,Se+1):ye?new n.Range(oe,ge-1,ve,Se):new n.Range(oe,ge,ve,Se+1)}return new n.Range(oe,ge,ve,Se)}modifyPosition(z,ee){this._assertNotDisposed();const $=this.getOffsetAt(z)+ee;return this.getPositionAt(Math.min(this._buffer.getLength(),Math.max(0,$)))}getFullModelRange(){this._assertNotDisposed();const z=this.getLineCount();return new n.Range(1,1,z,this.getLineMaxColumn(z))}findMatchesLineByLine(z,ee,$,re){return this._buffer.findMatchesLineByLine(z,ee,$,re)}findMatches(z,ee,$,re,oe,ge,ve=F){this._assertNotDisposed();let Se=null;ee!==null&&(Array.isArray(ee)||(ee=[ee]),ee.every(ye=>n.Range.isIRange(ye))&&(Se=ee.map(ye=>this.validateRange(ye)))),Se===null&&(Se=[this.getFullModelRange()]),Se=Se.sort((ye,Ee)=>ye.startLineNumber-Ee.startLineNumber||ye.startColumn-Ee.startColumn);const Le=[];Le.push(Se.reduce((ye,Ee)=>n.Range.areIntersecting(ye,Ee)?ye.plusRange(Ee):(Le.push(ye),Ee)));let De;if(!$&&z.indexOf(`\n`)<0){const Ee=new w.SearchParams(z,$,re,oe).parseSearchRequest();if(!Ee)return[];De=Me=>this.findMatchesLineByLine(Me,Ee,ge,ve)}else De=ye=>w.TextModelSearch.findMatches(this,new w.SearchParams(z,$,re,oe),ye,ge,ve);return Le.map(De).reduce((ye,Ee)=>ye.concat(Ee),[])}findNextMatch(z,ee,$,re,oe,ge){this._assertNotDisposed();const ve=this.validatePosition(ee);if(!$&&z.indexOf(`\n`)<0){const Le=new w.SearchParams(z,$,re,oe).parseSearchRequest();if(!Le)return null;const De=this.getLineCount();let ye=new n.Range(ve.lineNumber,ve.column,De,this.getLineMaxColumn(De)),Ee=this.findMatchesLineByLine(ye,Le,ge,1);return w.TextModelSearch.findNextMatch(this,new w.SearchParams(z,$,re,oe),ve,ge),Ee.length>0||(ye=new n.Range(1,1,ve.lineNumber,this.getLineMaxColumn(ve.lineNumber)),Ee=this.findMatchesLineByLine(ye,Le,ge,1),Ee.length>0)?Ee[0]:null}return w.TextModelSearch.findNextMatch(this,new w.SearchParams(z,$,re,oe),ve,ge)}findPreviousMatch(z,ee,$,re,oe,ge){this._assertNotDisposed();const ve=this.validatePosition(ee);return w.TextModelSearch.findPreviousMatch(this,new w.SearchParams(z,$,re,oe),ve,ge)}pushStackElement(){this._commandManager.pushStackElement()}popStackElement(){this._commandManager.popStackElement()}pushEOL(z){if((this.getEOL()===`\n`?0:1)!==z)try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._initialUndoRedoSnapshot===null&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEOL(z)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_validateEditOperation(z){return z instanceof r.ValidAnnotatedEditOperation?z:new r.ValidAnnotatedEditOperation(z.identifier||null,this.validateRange(z.range),z.text,z.forceMoveMarkers||!1,z.isAutoWhitespaceEdit||!1,z._isTracked||!1)}_validateEditOperations(z){const ee=[];for(let $=0,re=z.length;$<re;$++)ee[$]=this._validateEditOperation(z[$]);return ee}pushEditOperations(z,ee,$,re){try{return this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._pushEditOperations(z,this._validateEditOperations(ee),$,re)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_pushEditOperations(z,ee,$,re){if(this._options.trimAutoWhitespace&&this._trimAutoWhitespaceLines){const oe=ee.map(ve=>({range:this.validateRange(ve.range),text:ve.text}));let ge=!0;if(z)for(let ve=0,Se=z.length;ve<Se;ve++){const Le=z[ve];let De=!1;for(let ye=0,Ee=oe.length;ye<Ee;ye++){const Me=oe[ye].range,Pe=Me.startLineNumber>Le.endLineNumber,Fe=Le.startLineNumber>Me.endLineNumber;if(!Pe&&!Fe){De=!0;break}}if(!De){ge=!1;break}}if(ge)for(let ve=0,Se=this._trimAutoWhitespaceLines.length;ve<Se;ve++){const Le=this._trimAutoWhitespaceLines[ve],De=this.getLineMaxColumn(Le);let ye=!0;for(let Ee=0,Me=oe.length;Ee<Me;Ee++){const Pe=oe[Ee].range,Fe=oe[Ee].text;if(!(Le<Pe.startLineNumber||Le>Pe.endLineNumber)&&!(Le===Pe.startLineNumber&&Pe.startColumn===De&&Pe.isEmpty()&&Fe&&Fe.length>0&&Fe.charAt(0)===`\n`)&&!(Le===Pe.startLineNumber&&Pe.startColumn===1&&Pe.isEmpty()&&Fe&&Fe.length>0&&Fe.charAt(Fe.length-1)===`\n`)){ye=!1;break}}if(ye){const Ee=new n.Range(Le,1,Le,De);ee.push(new r.ValidAnnotatedEditOperation(null,Ee,null,!1,!1,!1))}}this._trimAutoWhitespaceLines=null}return this._initialUndoRedoSnapshot===null&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEditOperation(z,ee,$,re)}_applyUndo(z,ee,$,re){const oe=z.map(ge=>{const ve=this.getPositionAt(ge.newPosition),Se=this.getPositionAt(ge.newEnd);return{range:new n.Range(ve.lineNumber,ve.column,Se.lineNumber,Se.column),text:ge.oldText}});this._applyUndoRedoEdits(oe,ee,!0,!1,$,re)}_applyRedo(z,ee,$,re){const oe=z.map(ge=>{const ve=this.getPositionAt(ge.oldPosition),Se=this.getPositionAt(ge.oldEnd);return{range:new n.Range(ve.lineNumber,ve.column,Se.lineNumber,Se.column),text:ge.newText}});this._applyUndoRedoEdits(oe,ee,!1,!0,$,re)}_applyUndoRedoEdits(z,ee,$,re,oe,ge){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._isUndoing=$,this._isRedoing=re,this.applyEdits(z,!1),this.setEOL(ee),this._overwriteAlternativeVersionId(oe)}finally{this._isUndoing=!1,this._isRedoing=!1,this._eventEmitter.endDeferredEmit(ge),this._onDidChangeDecorations.endDeferredEmit()}}applyEdits(z,ee=!1){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit();const $=this._validateEditOperations(z);return this._doApplyEdits($,ee)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_doApplyEdits(z,ee){const $=this._buffer.getLineCount(),re=this._buffer.applyEdits(z,this._options.trimAutoWhitespace,ee),oe=this._buffer.getLineCount(),ge=re.changes;if(this._trimAutoWhitespaceLines=re.trimAutoWhitespaceLineNumbers,ge.length!==0){for(let Le=0,De=ge.length;Le<De;Le++){const ye=ge[Le];this._decorationsTree.acceptReplace(ye.rangeOffset,ye.rangeLength,ye.text.length,ye.forceMoveMarkers)}const ve=[];this._increaseVersionId();let Se=$;for(let Le=0,De=ge.length;Le<De;Le++){const ye=ge[Le],[Ee]=(0,g.countEOL)(ye.text);this._onDidChangeDecorations.fire();const Me=ye.range.startLineNumber,Pe=ye.range.endLineNumber,Fe=Pe-Me,_e=Ee,me=Math.min(Fe,_e),le=_e-Fe,pe=oe-Se-le+Me,Ce=pe,be=pe+_e,Ie=this._decorationsTree.getInjectedTextInInterval(this,this.getOffsetAt(new i.Position(Ce,1)),this.getOffsetAt(new i.Position(be,this.getLineMaxColumn(be))),0),Ne=I.LineInjectedText.fromDecorations(Ie),Re=new L.ArrayQueue(Ne);for(let Ve=me;Ve>=0;Ve--){const ze=Me+Ve,We=pe+Ve;Re.takeFromEndWhile(Oe=>Oe.lineNumber>We);const qe=Re.takeFromEndWhile(Oe=>Oe.lineNumber===We);ve.push(new I.ModelRawLineChanged(ze,this.getLineContent(We),qe))}if(me<Fe){const Ve=Me+me;ve.push(new I.ModelRawLinesDeleted(Ve+1,Pe))}if(me<_e){const Ve=new L.ArrayQueue(Ne),ze=Me+me,We=_e-me,qe=oe-Se-We+ze+1,Oe=[],Ge=[];for(let Qe=0;Qe<We;Qe++){const st=qe+Qe;Ge[Qe]=this.getLineContent(st),Ve.takeWhile(nt=>nt.lineNumber<st),Oe[Qe]=Ve.takeWhile(nt=>nt.lineNumber===st)}ve.push(new I.ModelRawLinesInserted(ze+1,Me+_e,Ge,Oe))}Se+=le}this._emitContentChangedEvent(new I.ModelRawContentChangedEvent(ve,this.getVersionId(),this._isUndoing,this._isRedoing),{changes:ge,eol:this._buffer.getEOL(),isEolChange:!1,versionId:this.getVersionId(),isUndoing:this._isUndoing,isRedoing:this._isRedoing,isFlush:!1})}return re.reverseEdits===null?void 0:re.reverseEdits}undo(){return this._undoRedoService.undo(this.uri)}canUndo(){return this._undoRedoService.canUndo(this.uri)}redo(){return this._undoRedoService.redo(this.uri)}canRedo(){return this._undoRedoService.canRedo(this.uri)}handleBeforeFireDecorationsChangedEvent(z){if(z===null||z.size===0)return;const $=Array.from(z).map(re=>new I.ModelRawLineChanged(re,this.getLineContent(re),this._getInjectedTextInLine(re)));this._onDidChangeInjectedText.fire(new I.ModelInjectedTextChangedEvent($))}changeDecorations(z,ee=0){this._assertNotDisposed();try{return this._onDidChangeDecorations.beginDeferredEmit(),this._changeDecorations(ee,z)}finally{this._onDidChangeDecorations.endDeferredEmit()}}_changeDecorations(z,ee){const $={addDecoration:(oe,ge)=>this._deltaDecorationsImpl(z,[],[{range:oe,options:ge}])[0],changeDecoration:(oe,ge)=>{this._changeDecorationImpl(oe,ge)},changeDecorationOptions:(oe,ge)=>{this._changeDecorationOptionsImpl(oe,ce(ge))},removeDecoration:oe=>{this._deltaDecorationsImpl(z,[oe],[])},deltaDecorations:(oe,ge)=>oe.length===0&&ge.length===0?[]:this._deltaDecorationsImpl(z,oe,ge)};let re=null;try{re=ee($)}catch(oe){(0,y.onUnexpectedError)(oe)}return $.addDecoration=U,$.changeDecoration=U,$.changeDecorationOptions=U,$.removeDecoration=U,$.deltaDecorations=U,re}deltaDecorations(z,ee,$=0){if(this._assertNotDisposed(),z||(z=[]),z.length===0&&ee.length===0)return[];try{return this._deltaDecorationCallCnt++,this._deltaDecorationCallCnt>1&&(console.warn(\"Invoking deltaDecorations recursively could lead to leaking decorations.\"),(0,y.onUnexpectedError)(new Error(\"Invoking deltaDecorations recursively could lead to leaking decorations.\"))),this._onDidChangeDecorations.beginDeferredEmit(),this._deltaDecorationsImpl($,z,ee)}finally{this._onDidChangeDecorations.endDeferredEmit(),this._deltaDecorationCallCnt--}}_getTrackedRange(z){return this.getDecorationRange(z)}_setTrackedRange(z,ee,$){const re=z?this._decorations[z]:null;if(!re)return ee?this._deltaDecorationsImpl(0,[],[{range:ee,options:ae[$]}],!0)[0]:null;if(!ee)return this._decorationsTree.delete(re),delete this._decorations[re.id],null;const oe=this._validateRangeRelaxedNoAllocations(ee),ge=this._buffer.getOffsetAt(oe.startLineNumber,oe.startColumn),ve=this._buffer.getOffsetAt(oe.endLineNumber,oe.endColumn);return this._decorationsTree.delete(re),re.reset(this.getVersionId(),ge,ve,oe),re.setOptions(ae[$]),this._decorationsTree.insert(re),re.id}removeAllDecorationsWithOwnerId(z){if(this._isDisposed)return;const ee=this._decorationsTree.collectNodesFromOwner(z);for(let $=0,re=ee.length;$<re;$++){const oe=ee[$];this._decorationsTree.delete(oe),delete this._decorations[oe.id]}}getDecorationOptions(z){const ee=this._decorations[z];return ee?ee.options:null}getDecorationRange(z){const ee=this._decorations[z];return ee?this._decorationsTree.getNodeRange(this,ee):null}getLineDecorations(z,ee=0,$=!1){return z<1||z>this.getLineCount()?[]:this.getLinesDecorations(z,z,ee,$)}getLinesDecorations(z,ee,$=0,re=!1,oe=!1){const ge=this.getLineCount(),ve=Math.min(ge,Math.max(1,z)),Se=Math.min(ge,Math.max(1,ee)),Le=this.getLineMaxColumn(Se),De=new n.Range(ve,1,Se,Le),ye=this._getDecorationsInRange(De,$,re,oe);return(0,L.pushMany)(ye,this._decorationProvider.getDecorationsInRange(De,$,re)),ye}getDecorationsInRange(z,ee=0,$=!1,re=!1,oe=!1){const ge=this.validateRange(z),ve=this._getDecorationsInRange(ge,ee,$,oe);return(0,L.pushMany)(ve,this._decorationProvider.getDecorationsInRange(ge,ee,$,re)),ve}getOverviewRulerDecorations(z=0,ee=!1){return this._decorationsTree.getAll(this,z,ee,!0,!1)}getInjectedTextDecorations(z=0){return this._decorationsTree.getAllInjectedText(this,z)}_getInjectedTextInLine(z){const ee=this._buffer.getOffsetAt(z,1),$=ee+this._buffer.getLineLength(z),re=this._decorationsTree.getInjectedTextInInterval(this,ee,$,0);return I.LineInjectedText.fromDecorations(re).filter(oe=>oe.lineNumber===z)}getAllDecorations(z=0,ee=!1){let $=this._decorationsTree.getAll(this,z,ee,!1,!1);return $=$.concat(this._decorationProvider.getAllDecorations(z,ee)),$}getAllMarginDecorations(z=0){return this._decorationsTree.getAll(this,z,!1,!1,!0)}_getDecorationsInRange(z,ee,$,re){const oe=this._buffer.getOffsetAt(z.startLineNumber,z.startColumn),ge=this._buffer.getOffsetAt(z.endLineNumber,z.endColumn);return this._decorationsTree.getAllInInterval(this,oe,ge,ee,$,re)}getRangeAt(z,ee){return this._buffer.getRangeAt(z,ee-z)}_changeDecorationImpl(z,ee){const $=this._decorations[z];if(!$)return;if($.options.after){const ve=this.getDecorationRange(z);this._onDidChangeDecorations.recordLineAffectedByInjectedText(ve.endLineNumber)}if($.options.before){const ve=this.getDecorationRange(z);this._onDidChangeDecorations.recordLineAffectedByInjectedText(ve.startLineNumber)}const re=this._validateRangeRelaxedNoAllocations(ee),oe=this._buffer.getOffsetAt(re.startLineNumber,re.startColumn),ge=this._buffer.getOffsetAt(re.endLineNumber,re.endColumn);this._decorationsTree.delete($),$.reset(this.getVersionId(),oe,ge,re),this._decorationsTree.insert($),this._onDidChangeDecorations.checkAffectedAndFire($.options),$.options.after&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(re.endLineNumber),$.options.before&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(re.startLineNumber)}_changeDecorationOptionsImpl(z,ee){const $=this._decorations[z];if(!$)return;const re=!!($.options.overviewRuler&&$.options.overviewRuler.color),oe=!!(ee.overviewRuler&&ee.overviewRuler.color);if(this._onDidChangeDecorations.checkAffectedAndFire($.options),this._onDidChangeDecorations.checkAffectedAndFire(ee),$.options.after||ee.after){const ge=this._decorationsTree.getNodeRange(this,$);this._onDidChangeDecorations.recordLineAffectedByInjectedText(ge.endLineNumber)}if($.options.before||ee.before){const ge=this._decorationsTree.getNodeRange(this,$);this._onDidChangeDecorations.recordLineAffectedByInjectedText(ge.startLineNumber)}re!==oe?(this._decorationsTree.delete($),$.setOptions(ee),this._decorationsTree.insert($)):$.setOptions(ee)}_deltaDecorationsImpl(z,ee,$,re=!1){const oe=this.getVersionId(),ge=ee.length;let ve=0;const Se=$.length;let Le=0;this._onDidChangeDecorations.beginDeferredEmit();try{const De=new Array(Se);for(;ve<ge||Le<Se;){let ye=null;if(ve<ge){do ye=this._decorations[ee[ve++]];while(!ye&&ve<ge);if(ye){if(ye.options.after){const Ee=this._decorationsTree.getNodeRange(this,ye);this._onDidChangeDecorations.recordLineAffectedByInjectedText(Ee.endLineNumber)}if(ye.options.before){const Ee=this._decorationsTree.getNodeRange(this,ye);this._onDidChangeDecorations.recordLineAffectedByInjectedText(Ee.startLineNumber)}this._decorationsTree.delete(ye),re||this._onDidChangeDecorations.checkAffectedAndFire(ye.options)}}if(Le<Se){if(!ye){const me=++this._lastDecorationId,le=`${this._instanceId};${me}`;ye=new m.IntervalNode(le,0,0),this._decorations[le]=ye}const Ee=$[Le],Me=this._validateRangeRelaxedNoAllocations(Ee.range),Pe=ce(Ee.options),Fe=this._buffer.getOffsetAt(Me.startLineNumber,Me.startColumn),_e=this._buffer.getOffsetAt(Me.endLineNumber,Me.endColumn);ye.ownerId=z,ye.reset(oe,Fe,_e,Me),ye.setOptions(Pe),ye.options.after&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(Me.endLineNumber),ye.options.before&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(Me.startLineNumber),re||this._onDidChangeDecorations.checkAffectedAndFire(Pe),this._decorationsTree.insert(ye),De[Le]=ye.id,Le++}else ye&&delete this._decorations[ye.id]}return De}finally{this._onDidChangeDecorations.endDeferredEmit()}}getLanguageId(){return this.tokenization.getLanguageId()}setLanguage(z,ee){typeof z==\"string\"?(this._languageSelectionListener.clear(),this._setLanguage(z,ee)):(this._languageSelectionListener.value=z.onDidChange(()=>this._setLanguage(z.languageId,ee)),this._setLanguage(z.languageId,ee))}_setLanguage(z,ee){this.tokenization.setLanguageId(z,ee),this._languageService.requestRichLanguageFeatures(z)}getLanguageIdAtPosition(z,ee){return this.tokenization.getLanguageIdAtPosition(z,ee)}getWordAtPosition(z){return this._tokenizationTextModelPart.getWordAtPosition(z)}getWordUntilPosition(z){return this._tokenizationTextModelPart.getWordUntilPosition(z)}normalizePosition(z,ee){return z}getLineIndentColumn(z){return R(this.getLineContent(z))+1}};e.TextModel=j,j._MODEL_SYNC_LIMIT=50*1024*1024,j.LARGE_FILE_SIZE_THRESHOLD=20*1024*1024,j.LARGE_FILE_LINE_COUNT_THRESHOLD=300*1e3,j.DEFAULT_CREATION_OPTIONS={isForSimpleWidget:!1,tabSize:a.EDITOR_MODEL_DEFAULTS.tabSize,indentSize:a.EDITOR_MODEL_DEFAULTS.indentSize,insertSpaces:a.EDITOR_MODEL_DEFAULTS.insertSpaces,detectIndentation:!1,defaultEOL:1,trimAutoWhitespace:a.EDITOR_MODEL_DEFAULTS.trimAutoWhitespace,largeFileOptimizations:a.EDITOR_MODEL_DEFAULTS.largeFileOptimizations,bracketPairColorizationOptions:a.EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions},e.TextModel=j=P=ke([fe(4,M.IUndoRedoService),fe(5,u.ILanguageService),fe(6,h.ILanguageConfigurationService)],j);function R(q){let z=0;for(const ee of q)if(ee===\" \"||ee===\"\t\")z++;else break;return z}function K(q){return!!(q.options.overviewRuler&&q.options.overviewRuler.color)}function G(q){return!!q.options.after||!!q.options.before}class Z{constructor(){this._decorationsTree0=new m.IntervalTree,this._decorationsTree1=new m.IntervalTree,this._injectedTextDecorationsTree=new m.IntervalTree}ensureAllNodesHaveRanges(z){this.getAll(z,0,!1,!1,!1)}_ensureNodesHaveRanges(z,ee){for(const $ of ee)$.range===null&&($.range=z.getRangeAt($.cachedAbsoluteStart,$.cachedAbsoluteEnd));return ee}getAllInInterval(z,ee,$,re,oe,ge){const ve=z.getVersionId(),Se=this._intervalSearch(ee,$,re,oe,ve,ge);return this._ensureNodesHaveRanges(z,Se)}_intervalSearch(z,ee,$,re,oe,ge){const ve=this._decorationsTree0.intervalSearch(z,ee,$,re,oe,ge),Se=this._decorationsTree1.intervalSearch(z,ee,$,re,oe,ge),Le=this._injectedTextDecorationsTree.intervalSearch(z,ee,$,re,oe,ge);return ve.concat(Se).concat(Le)}getInjectedTextInInterval(z,ee,$,re){const oe=z.getVersionId(),ge=this._injectedTextDecorationsTree.intervalSearch(ee,$,re,!1,oe,!1);return this._ensureNodesHaveRanges(z,ge).filter(ve=>ve.options.showIfCollapsed||!ve.range.isEmpty())}getAllInjectedText(z,ee){const $=z.getVersionId(),re=this._injectedTextDecorationsTree.search(ee,!1,$,!1);return this._ensureNodesHaveRanges(z,re).filter(oe=>oe.options.showIfCollapsed||!oe.range.isEmpty())}getAll(z,ee,$,re,oe){const ge=z.getVersionId(),ve=this._search(ee,$,re,ge,oe);return this._ensureNodesHaveRanges(z,ve)}_search(z,ee,$,re,oe){if($)return this._decorationsTree1.search(z,ee,re,oe);{const ge=this._decorationsTree0.search(z,ee,re,oe),ve=this._decorationsTree1.search(z,ee,re,oe),Se=this._injectedTextDecorationsTree.search(z,ee,re,oe);return ge.concat(ve).concat(Se)}}collectNodesFromOwner(z){const ee=this._decorationsTree0.collectNodesFromOwner(z),$=this._decorationsTree1.collectNodesFromOwner(z),re=this._injectedTextDecorationsTree.collectNodesFromOwner(z);return ee.concat($).concat(re)}collectNodesPostOrder(){const z=this._decorationsTree0.collectNodesPostOrder(),ee=this._decorationsTree1.collectNodesPostOrder(),$=this._injectedTextDecorationsTree.collectNodesPostOrder();return z.concat(ee).concat($)}insert(z){G(z)?this._injectedTextDecorationsTree.insert(z):K(z)?this._decorationsTree1.insert(z):this._decorationsTree0.insert(z)}delete(z){G(z)?this._injectedTextDecorationsTree.delete(z):K(z)?this._decorationsTree1.delete(z):this._decorationsTree0.delete(z)}getNodeRange(z,ee){const $=z.getVersionId();return ee.cachedVersionId!==$&&this._resolveNode(ee,$),ee.range===null&&(ee.range=z.getRangeAt(ee.cachedAbsoluteStart,ee.cachedAbsoluteEnd)),ee.range}_resolveNode(z,ee){G(z)?this._injectedTextDecorationsTree.resolveNode(z,ee):K(z)?this._decorationsTree1.resolveNode(z,ee):this._decorationsTree0.resolveNode(z,ee)}acceptReplace(z,ee,$,re){this._decorationsTree0.acceptReplace(z,ee,$,re),this._decorationsTree1.acceptReplace(z,ee,$,re),this._injectedTextDecorationsTree.acceptReplace(z,ee,$,re)}}function J(q){return q.replace(/[^a-z0-9\\-_]/gi,\" \")}class X{constructor(z){this.color=z.color||\"\",this.darkColor=z.darkColor||\"\"}}class H extends X{constructor(z){super(z),this._resolvedColor=null,this.position=typeof z.position==\"number\"?z.position:r.OverviewRulerLane.Center}getColor(z){return this._resolvedColor||(z.type!==\"light\"&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,z):this._resolvedColor=this._resolveColor(this.color,z)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=null}_resolveColor(z,ee){if(typeof z==\"string\")return z;const $=z?ee.getColor(z.id):null;return $?$.toString():\"\"}}e.ModelDecorationOverviewRulerOptions=H;class B{constructor(z){var ee;this.position=(ee=z?.position)!==null&&ee!==void 0?ee:r.GlyphMarginLane.Left}}e.ModelDecorationGlyphMarginOptions=B;class V extends X{constructor(z){super(z),this.position=z.position}getColor(z){return this._resolvedColor||(z.type!==\"light\"&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,z):this._resolvedColor=this._resolveColor(this.color,z)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=void 0}_resolveColor(z,ee){return typeof z==\"string\"?k.Color.fromHex(z):ee.getColor(z.id)}}e.ModelDecorationMinimapOptions=V;class Y{static from(z){return z instanceof Y?z:new Y(z)}constructor(z){this.content=z.content||\"\",this.inlineClassName=z.inlineClassName||null,this.inlineClassNameAffectsLetterSpacing=z.inlineClassNameAffectsLetterSpacing||!1,this.attachedData=z.attachedData||null,this.cursorStops=z.cursorStops||null}}e.ModelDecorationInjectedTextOptions=Y;class ie{static register(z){return new ie(z)}static createDynamic(z){return new ie(z)}constructor(z){var ee,$,re,oe,ge,ve;this.description=z.description,this.blockClassName=z.blockClassName?J(z.blockClassName):null,this.blockDoesNotCollapse=(ee=z.blockDoesNotCollapse)!==null&&ee!==void 0?ee:null,this.blockIsAfterEnd=($=z.blockIsAfterEnd)!==null&&$!==void 0?$:null,this.blockPadding=(re=z.blockPadding)!==null&&re!==void 0?re:null,this.stickiness=z.stickiness||0,this.zIndex=z.zIndex||0,this.className=z.className?J(z.className):null,this.shouldFillLineOnLineBreak=(oe=z.shouldFillLineOnLineBreak)!==null&&oe!==void 0?oe:null,this.hoverMessage=z.hoverMessage||null,this.glyphMarginHoverMessage=z.glyphMarginHoverMessage||null,this.isWholeLine=z.isWholeLine||!1,this.showIfCollapsed=z.showIfCollapsed||!1,this.collapseOnReplaceEdit=z.collapseOnReplaceEdit||!1,this.overviewRuler=z.overviewRuler?new H(z.overviewRuler):null,this.minimap=z.minimap?new V(z.minimap):null,this.glyphMargin=z.glyphMarginClassName?new B(z.glyphMargin):null,this.glyphMarginClassName=z.glyphMarginClassName?J(z.glyphMarginClassName):null,this.linesDecorationsClassName=z.linesDecorationsClassName?J(z.linesDecorationsClassName):null,this.firstLineDecorationClassName=z.firstLineDecorationClassName?J(z.firstLineDecorationClassName):null,this.marginClassName=z.marginClassName?J(z.marginClassName):null,this.inlineClassName=z.inlineClassName?J(z.inlineClassName):null,this.inlineClassNameAffectsLetterSpacing=z.inlineClassNameAffectsLetterSpacing||!1,this.beforeContentClassName=z.beforeContentClassName?J(z.beforeContentClassName):null,this.afterContentClassName=z.afterContentClassName?J(z.afterContentClassName):null,this.after=z.after?Y.from(z.after):null,this.before=z.before?Y.from(z.before):null,this.hideInCommentTokens=(ge=z.hideInCommentTokens)!==null&&ge!==void 0?ge:!1,this.hideInStringTokens=(ve=z.hideInStringTokens)!==null&&ve!==void 0?ve:!1}}e.ModelDecorationOptions=ie,ie.EMPTY=ie.register({description:\"empty\"});const ae=[ie.register({description:\"tracked-range-always-grows-when-typing-at-edges\",stickiness:0}),ie.register({description:\"tracked-range-never-grows-when-typing-at-edges\",stickiness:1}),ie.register({description:\"tracked-range-grows-only-when-typing-before\",stickiness:2}),ie.register({description:\"tracked-range-grows-only-when-typing-after\",stickiness:3})];function ce(q){return q instanceof ie?q:ie.createDynamic(q)}class de extends S.Disposable{constructor(z){super(),this.handleBeforeFire=z,this._actual=this._register(new D.Emitter),this.event=this._actual.event,this._affectedInjectedTextLines=null,this._deferredCnt=0,this._shouldFireDeferred=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._affectsGlyphMargin=!1}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(){var z;this._deferredCnt--,this._deferredCnt===0&&(this._shouldFireDeferred&&this.doFire(),(z=this._affectedInjectedTextLines)===null||z===void 0||z.clear(),this._affectedInjectedTextLines=null)}recordLineAffectedByInjectedText(z){this._affectedInjectedTextLines||(this._affectedInjectedTextLines=new Set),this._affectedInjectedTextLines.add(z)}checkAffectedAndFire(z){this._affectsMinimap||(this._affectsMinimap=!!(z.minimap&&z.minimap.position)),this._affectsOverviewRuler||(this._affectsOverviewRuler=!!(z.overviewRuler&&z.overviewRuler.color)),this._affectsGlyphMargin||(this._affectsGlyphMargin=!!z.glyphMarginClassName),this.tryFire()}fire(){this._affectsMinimap=!0,this._affectsOverviewRuler=!0,this._affectsGlyphMargin=!0,this.tryFire()}tryFire(){this._deferredCnt===0?this.doFire():this._shouldFireDeferred=!0}doFire(){this.handleBeforeFire(this._affectedInjectedTextLines);const z={affectsMinimap:this._affectsMinimap,affectsOverviewRuler:this._affectsOverviewRuler,affectsGlyphMargin:this._affectsGlyphMargin};this._shouldFireDeferred=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._affectsGlyphMargin=!1,this._actual.fire(z)}}class he extends S.Disposable{constructor(){super(),this._fastEmitter=this._register(new D.Emitter),this.fastEvent=this._fastEmitter.event,this._slowEmitter=this._register(new D.Emitter),this.slowEvent=this._slowEmitter.event,this._deferredCnt=0,this._deferredEvent=null}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(z=null){if(this._deferredCnt--,this._deferredCnt===0&&this._deferredEvent!==null){this._deferredEvent.rawContentChangedEvent.resultingSelection=z;const ee=this._deferredEvent;this._deferredEvent=null,this._fastEmitter.fire(ee),this._slowEmitter.fire(ee)}}fire(z){if(this._deferredCnt>0){this._deferredEvent?this._deferredEvent=this._deferredEvent.merge(z):this._deferredEvent=z;return}this._fastEmitter.fire(z),this._slowEmitter.fire(z)}}class ue{constructor(){this._onDidChangeVisibleRanges=new D.Emitter,this.onDidChangeVisibleRanges=this._onDidChangeVisibleRanges.event,this._views=new Set}attachView(){const z=new te(ee=>{this._onDidChangeVisibleRanges.fire({view:z,state:ee})});return this._views.add(z),z}detachView(z){this._views.delete(z),this._onDidChangeVisibleRanges.fire({view:z,state:void 0})}}e.AttachedViews=ue;class te{constructor(z){this.handleStateChange=z}setVisibleLines(z,ee){const $=z.map(re=>new s.LineRange(re.startLineNumber,re.endLineNumber+1));this.handleStateChange({visibleLineRanges:$,stabilized:ee})}}}),define(ne[362],se([1,0,25,55,26,40,609,62]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.arrowRevertChange=e.diffDeleteDecorationEmpty=e.diffWholeLineDeleteDecoration=e.diffDeleteDecoration=e.diffAddDecorationEmpty=e.diffWholeLineAddDecoration=e.diffAddDecoration=e.diffLineDeleteDecorationBackground=e.diffLineAddDecorationBackground=e.diffLineDeleteDecorationBackgroundWithIndicator=e.diffLineAddDecorationBackgroundWithIndicator=e.diffRemoveIcon=e.diffInsertIcon=void 0,e.diffInsertIcon=(0,f.registerIcon)(\"diff-insert\",L.Codicon.add,(0,S.localize)(0,null)),e.diffRemoveIcon=(0,f.registerIcon)(\"diff-remove\",L.Codicon.remove,(0,S.localize)(1,null)),e.diffLineAddDecorationBackgroundWithIndicator=D.ModelDecorationOptions.register({className:\"line-insert\",description:\"line-insert\",isWholeLine:!0,linesDecorationsClassName:\"insert-sign \"+y.ThemeIcon.asClassName(e.diffInsertIcon),marginClassName:\"gutter-insert\"}),e.diffLineDeleteDecorationBackgroundWithIndicator=D.ModelDecorationOptions.register({className:\"line-delete\",description:\"line-delete\",isWholeLine:!0,linesDecorationsClassName:\"delete-sign \"+y.ThemeIcon.asClassName(e.diffRemoveIcon),marginClassName:\"gutter-delete\"}),e.diffLineAddDecorationBackground=D.ModelDecorationOptions.register({className:\"line-insert\",description:\"line-insert\",isWholeLine:!0,marginClassName:\"gutter-insert\"}),e.diffLineDeleteDecorationBackground=D.ModelDecorationOptions.register({className:\"line-delete\",description:\"line-delete\",isWholeLine:!0,marginClassName:\"gutter-delete\"}),e.diffAddDecoration=D.ModelDecorationOptions.register({className:\"char-insert\",description:\"char-insert\",shouldFillLineOnLineBreak:!0}),e.diffWholeLineAddDecoration=D.ModelDecorationOptions.register({className:\"char-insert\",description:\"char-insert\",isWholeLine:!0}),e.diffAddDecorationEmpty=D.ModelDecorationOptions.register({className:\"char-insert diff-range-empty\",description:\"char-insert diff-range-empty\"}),e.diffDeleteDecoration=D.ModelDecorationOptions.register({className:\"char-delete\",description:\"char-delete\",shouldFillLineOnLineBreak:!0}),e.diffWholeLineDeleteDecoration=D.ModelDecorationOptions.register({className:\"char-delete\",description:\"char-delete\",isWholeLine:!0}),e.diffDeleteDecorationEmpty=D.ModelDecorationOptions.register({className:\"char-delete diff-range-empty\",description:\"char-delete diff-range-empty\"}),e.arrowRevertChange=D.ModelDecorationOptions.register({description:\"diff-editor-arrow-revert-change\",glyphMarginHoverMessage:new k.MarkdownString(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown((0,S.localize)(2,null)),glyphMarginClassName:\"arrow-revert-change \"+y.ThemeIcon.asClassName(L.Codicon.arrowRight),zIndex:10001})}),define(ne[870],se([1,0,2,42,362,323,102,12,5]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DiffEditorDecorations=void 0;class g extends L.Disposable{constructor(s,i,n){super(),this._editors=s,this._diffModel=i,this._options=n,this._decorations=(0,k.derived)(t=>{var a;const u=(a=this._diffModel.read(t))===null||a===void 0?void 0:a.diff.read(t);if(!u)return null;const h=this._diffModel.read(t).movedTextToCompare.read(t),r=this._options.renderIndicators.read(t),c=this._options.showEmptyDecorations.read(t),o=[],d=[];if(!h)for(const p of u.mappings){if(p.lineRangeMapping.originalRange.isEmpty||o.push({range:p.lineRangeMapping.originalRange.toInclusiveRange(),options:r?y.diffLineDeleteDecorationBackgroundWithIndicator:y.diffLineDeleteDecorationBackground}),p.lineRangeMapping.modifiedRange.isEmpty||d.push({range:p.lineRangeMapping.modifiedRange.toInclusiveRange(),options:r?y.diffLineAddDecorationBackgroundWithIndicator:y.diffLineAddDecorationBackground}),p.lineRangeMapping.modifiedRange.isEmpty||p.lineRangeMapping.originalRange.isEmpty)p.lineRangeMapping.originalRange.isEmpty||o.push({range:p.lineRangeMapping.originalRange.toInclusiveRange(),options:y.diffWholeLineDeleteDecoration}),p.lineRangeMapping.modifiedRange.isEmpty||d.push({range:p.lineRangeMapping.modifiedRange.toInclusiveRange(),options:y.diffWholeLineAddDecoration});else for(const m of p.lineRangeMapping.innerChanges||[])p.lineRangeMapping.originalRange.contains(m.originalRange.startLineNumber)&&o.push({range:m.originalRange,options:m.originalRange.isEmpty()&&c?y.diffDeleteDecorationEmpty:y.diffDeleteDecoration}),p.lineRangeMapping.modifiedRange.contains(m.modifiedRange.startLineNumber)&&d.push({range:m.modifiedRange,options:m.modifiedRange.isEmpty()&&c?y.diffAddDecorationEmpty:y.diffAddDecoration});!p.lineRangeMapping.modifiedRange.isEmpty&&this._options.shouldRenderRevertArrows.read(t)&&!h&&d.push({range:_.Range.fromPositions(new f.Position(p.lineRangeMapping.modifiedRange.startLineNumber,1)),options:y.arrowRevertChange})}if(h)for(const p of h.changes){const m=p.originalRange.toInclusiveRange();m&&o.push({range:m,options:r?y.diffLineDeleteDecorationBackgroundWithIndicator:y.diffLineDeleteDecorationBackground});const v=p.modifiedRange.toInclusiveRange();v&&d.push({range:v,options:r?y.diffLineAddDecorationBackgroundWithIndicator:y.diffLineAddDecorationBackground});for(const b of p.innerChanges||[])o.push({range:b.originalRange,options:y.diffDeleteDecoration}),d.push({range:b.modifiedRange,options:y.diffAddDecoration})}const l=this._diffModel.read(t).activeMovedText.read(t);for(const p of u.movedTexts)o.push({range:p.lineRangeMapping.original.toInclusiveRange(),options:{description:\"moved\",blockClassName:\"movedOriginal\"+(p===l?\" currentMove\":\"\"),blockPadding:[D.MovedBlocksLinesPart.movedCodeBlockPadding,0,D.MovedBlocksLinesPart.movedCodeBlockPadding,D.MovedBlocksLinesPart.movedCodeBlockPadding]}}),d.push({range:p.lineRangeMapping.modified.toInclusiveRange(),options:{description:\"moved\",blockClassName:\"movedModified\"+(p===l?\" currentMove\":\"\"),blockPadding:[4,0,4,4]}});return{originalDecorations:o,modifiedDecorations:d}}),this._register((0,S.applyObservableDecorations)(this._editors.original,this._decorations.map(t=>t?.originalDecorations||[]))),this._register((0,S.applyObservableDecorations)(this._editors.modified,this._decorations.map(t=>t?.modifiedDecorations||[])))}}e.DiffEditorDecorations=g}),define(ne[871],se([1,0,6,2,17,40,175,78,41,187,28,192,143,329,54,47,32]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){\"use strict\";var h;Object.defineProperty(e,\"__esModule\",{value:!0}),e.ModelService=void 0;function r(m){return m.toString()}function c(m){const v=new i.StringSHA1,b=m.createSnapshot();let w;for(;w=b.read();)v.update(w);return v.digest()}class o{constructor(v,b,w){this.model=v,this._modelEventListeners=new k.DisposableStore,this.model=v,this._modelEventListeners.add(v.onWillDispose(()=>b(v))),this._modelEventListeners.add(v.onDidChangeLanguage(E=>w(v,E)))}dispose(){this._modelEventListeners.dispose()}}const d=y.isLinux||y.isMacintosh?1:2;class l{constructor(v,b,w,E,I,M,P,x){this.uri=v,this.initialUndoRedoSnapshot=b,this.time=w,this.sharesUndoRedoStack=E,this.heapSize=I,this.sha1=M,this.versionId=P,this.alternativeVersionId=x}}let p=h=class extends k.Disposable{constructor(v,b,w,E,I){super(),this._configurationService=v,this._resourcePropertiesService=b,this._undoRedoService=w,this._languageService=E,this._languageConfigurationService=I,this._onModelAdded=this._register(new L.Emitter),this.onModelAdded=this._onModelAdded.event,this._onModelRemoved=this._register(new L.Emitter),this.onModelRemoved=this._onModelRemoved.event,this._onModelModeChanged=this._register(new L.Emitter),this.onModelLanguageChanged=this._onModelModeChanged.event,this._modelCreationOptionsByLanguageAndResource=Object.create(null),this._models={},this._disposedModels=new Map,this._disposedModelsHeapSize=0,this._register(this._configurationService.onDidChangeConfiguration(M=>this._updateModelOptions(M))),this._updateModelOptions(void 0)}static _readModelOptions(v,b){var w;let E=S.EDITOR_MODEL_DEFAULTS.tabSize;if(v.editor&&typeof v.editor.tabSize<\"u\"){const O=parseInt(v.editor.tabSize,10);isNaN(O)||(E=O),E<1&&(E=1)}let I=\"tabSize\";if(v.editor&&typeof v.editor.indentSize<\"u\"&&v.editor.indentSize!==\"tabSize\"){const O=parseInt(v.editor.indentSize,10);isNaN(O)||(I=Math.max(O,1))}let M=S.EDITOR_MODEL_DEFAULTS.insertSpaces;v.editor&&typeof v.editor.insertSpaces<\"u\"&&(M=v.editor.insertSpaces===\"false\"?!1:!!v.editor.insertSpaces);let P=d;const x=v.eol;x===`\\r\n`?P=2:x===`\n`&&(P=1);let T=S.EDITOR_MODEL_DEFAULTS.trimAutoWhitespace;v.editor&&typeof v.editor.trimAutoWhitespace<\"u\"&&(T=v.editor.trimAutoWhitespace===\"false\"?!1:!!v.editor.trimAutoWhitespace);let A=S.EDITOR_MODEL_DEFAULTS.detectIndentation;v.editor&&typeof v.editor.detectIndentation<\"u\"&&(A=v.editor.detectIndentation===\"false\"?!1:!!v.editor.detectIndentation);let N=S.EDITOR_MODEL_DEFAULTS.largeFileOptimizations;v.editor&&typeof v.editor.largeFileOptimizations<\"u\"&&(N=v.editor.largeFileOptimizations===\"false\"?!1:!!v.editor.largeFileOptimizations);let F=S.EDITOR_MODEL_DEFAULTS.bracketPairColorizationOptions;return!((w=v.editor)===null||w===void 0)&&w.bracketPairColorization&&typeof v.editor.bracketPairColorization==\"object\"&&(F={enabled:!!v.editor.bracketPairColorization.enabled,independentColorPoolPerBracketType:!!v.editor.bracketPairColorization.independentColorPoolPerBracketType}),{isForSimpleWidget:b,tabSize:E,indentSize:I,insertSpaces:M,detectIndentation:A,defaultEOL:P,trimAutoWhitespace:T,largeFileOptimizations:N,bracketPairColorizationOptions:F}}_getEOL(v,b){if(v)return this._resourcePropertiesService.getEOL(v,b);const w=this._configurationService.getValue(\"files.eol\",{overrideIdentifier:b});return w&&typeof w==\"string\"&&w!==\"auto\"?w:y.OS===3||y.OS===2?`\n`:`\\r\n`}_shouldRestoreUndoStack(){const v=this._configurationService.getValue(\"files.restoreUndoStack\");return typeof v==\"boolean\"?v:!0}getCreationOptions(v,b,w){const E=typeof v==\"string\"?v:v.languageId;let I=this._modelCreationOptionsByLanguageAndResource[E+b];if(!I){const M=this._configurationService.getValue(\"editor\",{overrideIdentifier:E,resource:b}),P=this._getEOL(b,E);I=h._readModelOptions({editor:M,eol:P},w),this._modelCreationOptionsByLanguageAndResource[E+b]=I}return I}_updateModelOptions(v){const b=this._modelCreationOptionsByLanguageAndResource;this._modelCreationOptionsByLanguageAndResource=Object.create(null);const w=Object.keys(this._models);for(let E=0,I=w.length;E<I;E++){const M=w[E],P=this._models[M],x=P.model.getLanguageId(),T=P.model.uri;if(v&&!v.affectsConfiguration(\"editor\",{overrideIdentifier:x,resource:T})&&!v.affectsConfiguration(\"files.eol\",{overrideIdentifier:x,resource:T}))continue;const A=b[x+T],N=this.getCreationOptions(x,T,P.model.isForSimpleWidget);h._setModelOptionsForModel(P.model,N,A)}}static _setModelOptionsForModel(v,b,w){w&&w.defaultEOL!==b.defaultEOL&&v.getLineCount()===1&&v.setEOL(b.defaultEOL===1?0:1),!(w&&w.detectIndentation===b.detectIndentation&&w.insertSpaces===b.insertSpaces&&w.tabSize===b.tabSize&&w.indentSize===b.indentSize&&w.trimAutoWhitespace===b.trimAutoWhitespace&&(0,a.equals)(w.bracketPairColorizationOptions,b.bracketPairColorizationOptions))&&(b.detectIndentation?(v.detectIndentation(b.insertSpaces,b.tabSize),v.updateOptions({trimAutoWhitespace:b.trimAutoWhitespace,bracketColorizationOptions:b.bracketPairColorizationOptions})):v.updateOptions({insertSpaces:b.insertSpaces,tabSize:b.tabSize,indentSize:b.indentSize,trimAutoWhitespace:b.trimAutoWhitespace,bracketColorizationOptions:b.bracketPairColorizationOptions}))}_insertDisposedModel(v){this._disposedModels.set(r(v.uri),v),this._disposedModelsHeapSize+=v.heapSize}_removeDisposedModel(v){const b=this._disposedModels.get(r(v));return b&&(this._disposedModelsHeapSize-=b.heapSize),this._disposedModels.delete(r(v)),b}_ensureDisposedModelsHeapSize(v){if(this._disposedModelsHeapSize>v){const b=[];for(this._disposedModels.forEach(w=>{w.sharesUndoRedoStack||b.push(w)}),b.sort((w,E)=>w.time-E.time);b.length>0&&this._disposedModelsHeapSize>v;){const w=b.shift();this._removeDisposedModel(w.uri),w.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(w.initialUndoRedoSnapshot)}}}_createModelData(v,b,w,E){const I=this.getCreationOptions(b,w,E),M=new D.TextModel(v,b,I,w,this._undoRedoService,this._languageService,this._languageConfigurationService);if(w&&this._disposedModels.has(r(w))){const T=this._removeDisposedModel(w),A=this._undoRedoService.getElements(w),N=c(M)===T.sha1;if(N||T.sharesUndoRedoStack){for(const F of A.past)(0,n.isEditStackElement)(F)&&F.matchesResource(w)&&F.setModel(M);for(const F of A.future)(0,n.isEditStackElement)(F)&&F.matchesResource(w)&&F.setModel(M);this._undoRedoService.setElementsValidFlag(w,!0,F=>(0,n.isEditStackElement)(F)&&F.matchesResource(w)),N&&(M._overwriteVersionId(T.versionId),M._overwriteAlternativeVersionId(T.alternativeVersionId),M._overwriteInitialUndoRedoSnapshot(T.initialUndoRedoSnapshot))}else T.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(T.initialUndoRedoSnapshot)}const P=r(M.uri);if(this._models[P])throw new Error(\"ModelService: Cannot add model because it already exists!\");const x=new o(M,T=>this._onWillDispose(T),(T,A)=>this._onDidChangeLanguage(T,A));return this._models[P]=x,x}createModel(v,b,w,E=!1){let I;return b?I=this._createModelData(v,b,w,E):I=this._createModelData(v,f.PLAINTEXT_LANGUAGE_ID,w,E),this._onModelAdded.fire(I.model),I.model}getModels(){const v=[],b=Object.keys(this._models);for(let w=0,E=b.length;w<E;w++){const I=b[w];v.push(this._models[I].model)}return v}getModel(v){const b=r(v),w=this._models[b];return w?w.model:null}_schemaShouldMaintainUndoRedoElements(v){return v.scheme===t.Schemas.file||v.scheme===t.Schemas.vscodeRemote||v.scheme===t.Schemas.vscodeUserData||v.scheme===t.Schemas.vscodeNotebookCell||v.scheme===\"fake-fs\"}_onWillDispose(v){const b=r(v.uri),w=this._models[b],E=this._undoRedoService.getUriComparisonKey(v.uri)!==v.uri.toString();let I=!1,M=0;if(E||this._shouldRestoreUndoStack()&&this._schemaShouldMaintainUndoRedoElements(v.uri)){const x=this._undoRedoService.getElements(v.uri);if(x.past.length>0||x.future.length>0){for(const T of x.past)(0,n.isEditStackElement)(T)&&T.matchesResource(v.uri)&&(I=!0,M+=T.heapSize(v.uri),T.setModel(v.uri));for(const T of x.future)(0,n.isEditStackElement)(T)&&T.matchesResource(v.uri)&&(I=!0,M+=T.heapSize(v.uri),T.setModel(v.uri))}}const P=h.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK;if(I)if(!E&&M>P){const x=w.model.getInitialUndoRedoSnapshot();x!==null&&this._undoRedoService.restoreSnapshot(x)}else this._ensureDisposedModelsHeapSize(P-M),this._undoRedoService.setElementsValidFlag(v.uri,!1,x=>(0,n.isEditStackElement)(x)&&x.matchesResource(v.uri)),this._insertDisposedModel(new l(v.uri,w.model.getInitialUndoRedoSnapshot(),Date.now(),E,M,c(v),v.getVersionId(),v.getAlternativeVersionId()));else if(!E){const x=w.model.getInitialUndoRedoSnapshot();x!==null&&this._undoRedoService.restoreSnapshot(x)}delete this._models[b],w.dispose(),delete this._modelCreationOptionsByLanguageAndResource[v.getLanguageId()+v.uri],this._onModelRemoved.fire(v)}_onDidChangeLanguage(v,b){const w=b.oldLanguage,E=v.getLanguageId(),I=this.getCreationOptions(w,v.uri,v.isForSimpleWidget),M=this.getCreationOptions(E,v.uri,v.isForSimpleWidget);h._setModelOptionsForModel(v,M,I),this._onModelModeChanged.fire({model:v,oldLanguageId:w})}};e.ModelService=p,p.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK=20*1024*1024,e.ModelService=p=h=ke([fe(0,C.IConfigurationService),fe(1,g.ITextResourcePropertiesService),fe(2,s.IUndoRedoService),fe(3,_.ILanguageService),fe(4,u.ILanguageConfigurationService)],p)}),define(ne[872],se([1,0,14,12,5,209,40,111,211,532,281,67]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewModelLinesFromModelAsIs=e.ViewModelLinesFromProjectedModel=void 0;class i{constructor(o,d,l,p,m,v,b,w,E,I){this._editorId=o,this.model=d,this._validModelVersionId=-1,this._domLineBreaksComputerFactory=l,this._monospaceLineBreaksComputerFactory=p,this.fontInfo=m,this.tabSize=v,this.wrappingStrategy=b,this.wrappingColumn=w,this.wrappingIndent=E,this.wordBreak=I,this._constructLines(!0,null)}dispose(){this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[])}createCoordinatesConverter(){return new u(this)}_constructLines(o,d){this.modelLineProjections=[],o&&(this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[]));const l=this.model.getLinesContent(),p=this.model.getInjectedTextDecorations(this._editorId),m=l.length,v=this.createLineBreaksComputer(),b=new L.ArrayQueue(f.LineInjectedText.fromDecorations(p));for(let A=0;A<m;A++){const N=b.takeWhile(F=>F.lineNumber===A+1);v.addRequest(l[A],N,d?d[A]:null)}const w=v.finalize(),E=[],I=this.hiddenAreasDecorationIds.map(A=>this.model.getDecorationRange(A)).sort(y.Range.compareRangesUsingStarts);let M=1,P=0,x=-1,T=x+1<I.length?P+1:m+2;for(let A=0;A<m;A++){const N=A+1;N===T&&(x++,M=I[x].startLineNumber,P=I[x].endLineNumber,T=x+1<I.length?P+1:m+2);const F=N>=M&&N<=P,O=(0,g.createModelLineProjection)(w[A],!F);E[A]=O.getViewLineCount(),this.modelLineProjections[A]=O}this._validModelVersionId=this.model.getVersionId(),this.projectedModelLineLineCounts=new C.ConstantTimePrefixSumComputer(E)}getHiddenAreas(){return this.hiddenAreasDecorationIds.map(o=>this.model.getDecorationRange(o))}setHiddenAreas(o){const d=o.map(P=>this.model.validateRange(P)),l=n(d),p=this.hiddenAreasDecorationIds.map(P=>this.model.getDecorationRange(P)).sort(y.Range.compareRangesUsingStarts);if(l.length===p.length){let P=!1;for(let x=0;x<l.length;x++)if(!l[x].equalsRange(p[x])){P=!0;break}if(!P)return!1}const m=l.map(P=>({range:P,options:S.ModelDecorationOptions.EMPTY}));this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,m);const v=l;let b=1,w=0,E=-1,I=E+1<v.length?w+1:this.modelLineProjections.length+2,M=!1;for(let P=0;P<this.modelLineProjections.length;P++){const x=P+1;x===I&&(E++,b=v[E].startLineNumber,w=v[E].endLineNumber,I=E+1<v.length?w+1:this.modelLineProjections.length+2);let T=!1;if(x>=b&&x<=w?this.modelLineProjections[P].isVisible()&&(this.modelLineProjections[P]=this.modelLineProjections[P].setVisible(!1),T=!0):(M=!0,this.modelLineProjections[P].isVisible()||(this.modelLineProjections[P]=this.modelLineProjections[P].setVisible(!0),T=!0)),T){const A=this.modelLineProjections[P].getViewLineCount();this.projectedModelLineLineCounts.setValue(P,A)}}return M||this.setHiddenAreas([]),!0}modelPositionIsVisible(o,d){return o<1||o>this.modelLineProjections.length?!1:this.modelLineProjections[o-1].isVisible()}getModelLineViewLineCount(o){return o<1||o>this.modelLineProjections.length?1:this.modelLineProjections[o-1].getViewLineCount()}setTabSize(o){return this.tabSize===o?!1:(this.tabSize=o,this._constructLines(!1,null),!0)}setWrappingSettings(o,d,l,p,m){const v=this.fontInfo.equals(o),b=this.wrappingStrategy===d,w=this.wrappingColumn===l,E=this.wrappingIndent===p,I=this.wordBreak===m;if(v&&b&&w&&E&&I)return!1;const M=v&&b&&!w&&E&&I;this.fontInfo=o,this.wrappingStrategy=d,this.wrappingColumn=l,this.wrappingIndent=p,this.wordBreak=m;let P=null;if(M){P=[];for(let x=0,T=this.modelLineProjections.length;x<T;x++)P[x]=this.modelLineProjections[x].getProjectionData()}return this._constructLines(!1,P),!0}createLineBreaksComputer(){return(this.wrappingStrategy===\"advanced\"?this._domLineBreaksComputerFactory:this._monospaceLineBreaksComputerFactory).createLineBreaksComputer(this.fontInfo,this.tabSize,this.wrappingColumn,this.wrappingIndent,this.wordBreak)}onModelFlushed(){this._constructLines(!0,null)}onModelLinesDeleted(o,d,l){if(!o||o<=this._validModelVersionId)return null;const p=d===1?1:this.projectedModelLineLineCounts.getPrefixSum(d-1)+1,m=this.projectedModelLineLineCounts.getPrefixSum(l);return this.modelLineProjections.splice(d-1,l-d+1),this.projectedModelLineLineCounts.removeValues(d-1,l-d+1),new _.ViewLinesDeletedEvent(p,m)}onModelLinesInserted(o,d,l,p){if(!o||o<=this._validModelVersionId)return null;const m=d>2&&!this.modelLineProjections[d-2].isVisible(),v=d===1?1:this.projectedModelLineLineCounts.getPrefixSum(d-1)+1;let b=0;const w=[],E=[];for(let I=0,M=p.length;I<M;I++){const P=(0,g.createModelLineProjection)(p[I],!m);w.push(P);const x=P.getViewLineCount();b+=x,E[I]=x}return this.modelLineProjections=this.modelLineProjections.slice(0,d-1).concat(w).concat(this.modelLineProjections.slice(d-1)),this.projectedModelLineLineCounts.insertValues(d-1,E),new _.ViewLinesInsertedEvent(v,v+b-1)}onModelLineChanged(o,d,l){if(o!==null&&o<=this._validModelVersionId)return[!1,null,null,null];const p=d-1,m=this.modelLineProjections[p].getViewLineCount(),v=this.modelLineProjections[p].isVisible(),b=(0,g.createModelLineProjection)(l,v);this.modelLineProjections[p]=b;const w=this.modelLineProjections[p].getViewLineCount();let E=!1,I=0,M=-1,P=0,x=-1,T=0,A=-1;m>w?(I=this.projectedModelLineLineCounts.getPrefixSum(d-1)+1,M=I+w-1,T=M+1,A=T+(m-w)-1,E=!0):m<w?(I=this.projectedModelLineLineCounts.getPrefixSum(d-1)+1,M=I+m-1,P=M+1,x=P+(w-m)-1,E=!0):(I=this.projectedModelLineLineCounts.getPrefixSum(d-1)+1,M=I+w-1),this.projectedModelLineLineCounts.setValue(p,w);const N=I<=M?new _.ViewLinesChangedEvent(I,M-I+1):null,F=P<=x?new _.ViewLinesInsertedEvent(P,x):null,O=T<=A?new _.ViewLinesDeletedEvent(T,A):null;return[E,N,F,O]}acceptVersionId(o){this._validModelVersionId=o,this.modelLineProjections.length===1&&!this.modelLineProjections[0].isVisible()&&this.setHiddenAreas([])}getViewLineCount(){return this.projectedModelLineLineCounts.getTotalSum()}_toValidViewLineNumber(o){if(o<1)return 1;const d=this.getViewLineCount();return o>d?d:o|0}getActiveIndentGuide(o,d,l){o=this._toValidViewLineNumber(o),d=this._toValidViewLineNumber(d),l=this._toValidViewLineNumber(l);const p=this.convertViewPositionToModelPosition(o,this.getViewLineMinColumn(o)),m=this.convertViewPositionToModelPosition(d,this.getViewLineMinColumn(d)),v=this.convertViewPositionToModelPosition(l,this.getViewLineMinColumn(l)),b=this.model.guides.getActiveIndentGuide(p.lineNumber,m.lineNumber,v.lineNumber),w=this.convertModelPositionToViewPosition(b.startLineNumber,1),E=this.convertModelPositionToViewPosition(b.endLineNumber,this.model.getLineMaxColumn(b.endLineNumber));return{startLineNumber:w.lineNumber,endLineNumber:E.lineNumber,indent:b.indent}}getViewLineInfo(o){o=this._toValidViewLineNumber(o);const d=this.projectedModelLineLineCounts.getIndexOf(o-1),l=d.index,p=d.remainder;return new t(l+1,p)}getMinColumnOfViewLine(o){return this.modelLineProjections[o.modelLineNumber-1].getViewLineMinColumn(this.model,o.modelLineNumber,o.modelLineWrappedLineIdx)}getMaxColumnOfViewLine(o){return this.modelLineProjections[o.modelLineNumber-1].getViewLineMaxColumn(this.model,o.modelLineNumber,o.modelLineWrappedLineIdx)}getModelStartPositionOfViewLine(o){const d=this.modelLineProjections[o.modelLineNumber-1],l=d.getViewLineMinColumn(this.model,o.modelLineNumber,o.modelLineWrappedLineIdx),p=d.getModelColumnOfViewPosition(o.modelLineWrappedLineIdx,l);return new k.Position(o.modelLineNumber,p)}getModelEndPositionOfViewLine(o){const d=this.modelLineProjections[o.modelLineNumber-1],l=d.getViewLineMaxColumn(this.model,o.modelLineNumber,o.modelLineWrappedLineIdx),p=d.getModelColumnOfViewPosition(o.modelLineWrappedLineIdx,l);return new k.Position(o.modelLineNumber,p)}getViewLineInfosGroupedByModelRanges(o,d){const l=this.getViewLineInfo(o),p=this.getViewLineInfo(d),m=new Array;let v=this.getModelStartPositionOfViewLine(l),b=new Array;for(let w=l.modelLineNumber;w<=p.modelLineNumber;w++){const E=this.modelLineProjections[w-1];if(E.isVisible()){const I=w===l.modelLineNumber?l.modelLineWrappedLineIdx:0,M=w===p.modelLineNumber?p.modelLineWrappedLineIdx+1:E.getViewLineCount();for(let P=I;P<M;P++)b.push(new t(w,P))}if(!E.isVisible()&&v){const I=new k.Position(w-1,this.model.getLineMaxColumn(w-1)+1),M=y.Range.fromPositions(v,I);m.push(new a(M,b)),b=[],v=null}else E.isVisible()&&!v&&(v=new k.Position(w,1))}if(v){const w=y.Range.fromPositions(v,this.getModelEndPositionOfViewLine(p));m.push(new a(w,b))}return m}getViewLinesBracketGuides(o,d,l,p){const m=l?this.convertViewPositionToModelPosition(l.lineNumber,l.column):null,v=[];for(const b of this.getViewLineInfosGroupedByModelRanges(o,d)){const w=b.modelRange.startLineNumber,E=this.model.guides.getLinesBracketGuides(w,b.modelRange.endLineNumber,m,p);for(const I of b.viewLines){const P=E[I.modelLineNumber-w].map(x=>{if(x.forWrappedLinesAfterColumn!==-1&&this.modelLineProjections[I.modelLineNumber-1].getViewPositionOfModelPosition(0,x.forWrappedLinesAfterColumn).lineNumber>=I.modelLineWrappedLineIdx||x.forWrappedLinesBeforeOrAtColumn!==-1&&this.modelLineProjections[I.modelLineNumber-1].getViewPositionOfModelPosition(0,x.forWrappedLinesBeforeOrAtColumn).lineNumber<I.modelLineWrappedLineIdx)return;if(!x.horizontalLine)return x;let T=-1;if(x.column!==-1){const F=this.modelLineProjections[I.modelLineNumber-1].getViewPositionOfModelPosition(0,x.column);if(F.lineNumber===I.modelLineWrappedLineIdx)T=F.column;else if(F.lineNumber<I.modelLineWrappedLineIdx)T=this.getMinColumnOfViewLine(I);else if(F.lineNumber>I.modelLineWrappedLineIdx)return}const A=this.convertModelPositionToViewPosition(I.modelLineNumber,x.horizontalLine.endColumn),N=this.modelLineProjections[I.modelLineNumber-1].getViewPositionOfModelPosition(0,x.horizontalLine.endColumn);return N.lineNumber===I.modelLineWrappedLineIdx?new D.IndentGuide(x.visibleColumn,T,x.className,new D.IndentGuideHorizontalLine(x.horizontalLine.top,A.column),-1,-1):N.lineNumber<I.modelLineWrappedLineIdx||x.visibleColumn!==-1?void 0:new D.IndentGuide(x.visibleColumn,T,x.className,new D.IndentGuideHorizontalLine(x.horizontalLine.top,this.getMaxColumnOfViewLine(I)),-1,-1)});v.push(P.filter(x=>!!x))}}return v}getViewLinesIndentGuides(o,d){o=this._toValidViewLineNumber(o),d=this._toValidViewLineNumber(d);const l=this.convertViewPositionToModelPosition(o,this.getViewLineMinColumn(o)),p=this.convertViewPositionToModelPosition(d,this.getViewLineMaxColumn(d));let m=[];const v=[],b=[],w=l.lineNumber-1,E=p.lineNumber-1;let I=null;for(let T=w;T<=E;T++){const A=this.modelLineProjections[T];if(A.isVisible()){const N=A.getViewLineNumberOfModelPosition(0,T===w?l.column:1),F=A.getViewLineNumberOfModelPosition(0,this.model.getLineMaxColumn(T+1)),O=F-N+1;let W=0;O>1&&A.getViewLineMinColumn(this.model,T+1,F)===1&&(W=N===0?1:2),v.push(O),b.push(W),I===null&&(I=new k.Position(T+1,0))}else I!==null&&(m=m.concat(this.model.guides.getLinesIndentGuides(I.lineNumber,T)),I=null)}I!==null&&(m=m.concat(this.model.guides.getLinesIndentGuides(I.lineNumber,p.lineNumber)),I=null);const M=d-o+1,P=new Array(M);let x=0;for(let T=0,A=m.length;T<A;T++){let N=m[T];const F=Math.min(M-x,v[T]),O=b[T];let W;O===2?W=0:O===1?W=1:W=F;for(let U=0;U<F;U++)U===W&&(N=0),P[x++]=N}return P}getViewLineContent(o){const d=this.getViewLineInfo(o);return this.modelLineProjections[d.modelLineNumber-1].getViewLineContent(this.model,d.modelLineNumber,d.modelLineWrappedLineIdx)}getViewLineLength(o){const d=this.getViewLineInfo(o);return this.modelLineProjections[d.modelLineNumber-1].getViewLineLength(this.model,d.modelLineNumber,d.modelLineWrappedLineIdx)}getViewLineMinColumn(o){const d=this.getViewLineInfo(o);return this.modelLineProjections[d.modelLineNumber-1].getViewLineMinColumn(this.model,d.modelLineNumber,d.modelLineWrappedLineIdx)}getViewLineMaxColumn(o){const d=this.getViewLineInfo(o);return this.modelLineProjections[d.modelLineNumber-1].getViewLineMaxColumn(this.model,d.modelLineNumber,d.modelLineWrappedLineIdx)}getViewLineData(o){const d=this.getViewLineInfo(o);return this.modelLineProjections[d.modelLineNumber-1].getViewLineData(this.model,d.modelLineNumber,d.modelLineWrappedLineIdx)}getViewLinesData(o,d,l){o=this._toValidViewLineNumber(o),d=this._toValidViewLineNumber(d);const p=this.projectedModelLineLineCounts.getIndexOf(o-1);let m=o;const v=p.index,b=p.remainder,w=[];for(let E=v,I=this.model.getLineCount();E<I;E++){const M=this.modelLineProjections[E];if(!M.isVisible())continue;const P=E===v?b:0;let x=M.getViewLineCount()-P,T=!1;if(m+x>d&&(T=!0,x=d-m+1),M.getViewLinesData(this.model,E+1,P,x,m-o,l,w),m+=x,T)break}return w}validateViewPosition(o,d,l){o=this._toValidViewLineNumber(o);const p=this.projectedModelLineLineCounts.getIndexOf(o-1),m=p.index,v=p.remainder,b=this.modelLineProjections[m],w=b.getViewLineMinColumn(this.model,m+1,v),E=b.getViewLineMaxColumn(this.model,m+1,v);d<w&&(d=w),d>E&&(d=E);const I=b.getModelColumnOfViewPosition(v,d);return this.model.validatePosition(new k.Position(m+1,I)).equals(l)?new k.Position(o,d):this.convertModelPositionToViewPosition(l.lineNumber,l.column)}validateViewRange(o,d){const l=this.validateViewPosition(o.startLineNumber,o.startColumn,d.getStartPosition()),p=this.validateViewPosition(o.endLineNumber,o.endColumn,d.getEndPosition());return new y.Range(l.lineNumber,l.column,p.lineNumber,p.column)}convertViewPositionToModelPosition(o,d){const l=this.getViewLineInfo(o),p=this.modelLineProjections[l.modelLineNumber-1].getModelColumnOfViewPosition(l.modelLineWrappedLineIdx,d);return this.model.validatePosition(new k.Position(l.modelLineNumber,p))}convertViewRangeToModelRange(o){const d=this.convertViewPositionToModelPosition(o.startLineNumber,o.startColumn),l=this.convertViewPositionToModelPosition(o.endLineNumber,o.endColumn);return new y.Range(d.lineNumber,d.column,l.lineNumber,l.column)}convertModelPositionToViewPosition(o,d,l=2,p=!1,m=!1){const v=this.model.validatePosition(new k.Position(o,d)),b=v.lineNumber,w=v.column;let E=b-1,I=!1;if(m)for(;E<this.modelLineProjections.length&&!this.modelLineProjections[E].isVisible();)E++,I=!0;else for(;E>0&&!this.modelLineProjections[E].isVisible();)E--,I=!0;if(E===0&&!this.modelLineProjections[E].isVisible())return new k.Position(p?0:1,1);const M=1+this.projectedModelLineLineCounts.getPrefixSum(E);let P;return I?m?P=this.modelLineProjections[E].getViewPositionOfModelPosition(M,1,l):P=this.modelLineProjections[E].getViewPositionOfModelPosition(M,this.model.getLineMaxColumn(E+1),l):P=this.modelLineProjections[b-1].getViewPositionOfModelPosition(M,w,l),P}convertModelRangeToViewRange(o,d=0){if(o.isEmpty()){const l=this.convertModelPositionToViewPosition(o.startLineNumber,o.startColumn,d);return y.Range.fromPositions(l)}else{const l=this.convertModelPositionToViewPosition(o.startLineNumber,o.startColumn,1),p=this.convertModelPositionToViewPosition(o.endLineNumber,o.endColumn,0);return new y.Range(l.lineNumber,l.column,p.lineNumber,p.column)}}getViewLineNumberOfModelPosition(o,d){let l=o-1;if(this.modelLineProjections[l].isVisible()){const m=1+this.projectedModelLineLineCounts.getPrefixSum(l);return this.modelLineProjections[l].getViewLineNumberOfModelPosition(m,d)}for(;l>0&&!this.modelLineProjections[l].isVisible();)l--;if(l===0&&!this.modelLineProjections[l].isVisible())return 1;const p=1+this.projectedModelLineLineCounts.getPrefixSum(l);return this.modelLineProjections[l].getViewLineNumberOfModelPosition(p,this.model.getLineMaxColumn(l+1))}getDecorationsInRange(o,d,l,p,m){const v=this.convertViewPositionToModelPosition(o.startLineNumber,o.startColumn),b=this.convertViewPositionToModelPosition(o.endLineNumber,o.endColumn);if(b.lineNumber-v.lineNumber<=o.endLineNumber-o.startLineNumber)return this.model.getDecorationsInRange(new y.Range(v.lineNumber,1,b.lineNumber,b.column),d,l,p,m);let w=[];const E=v.lineNumber-1,I=b.lineNumber-1;let M=null;for(let A=E;A<=I;A++)if(this.modelLineProjections[A].isVisible())M===null&&(M=new k.Position(A+1,A===E?v.column:1));else if(M!==null){const F=this.model.getLineMaxColumn(A);w=w.concat(this.model.getDecorationsInRange(new y.Range(M.lineNumber,M.column,A,F),d,l,p)),M=null}M!==null&&(w=w.concat(this.model.getDecorationsInRange(new y.Range(M.lineNumber,M.column,b.lineNumber,b.column),d,l,p)),M=null),w.sort((A,N)=>{const F=y.Range.compareRangesUsingStarts(A.range,N.range);return F===0?A.id<N.id?-1:A.id>N.id?1:0:F});const P=[];let x=0,T=null;for(const A of w){const N=A.id;T!==N&&(T=N,P[x++]=A)}return P}getInjectedTextAt(o){const d=this.getViewLineInfo(o.lineNumber);return this.modelLineProjections[d.modelLineNumber-1].getInjectedTextAt(d.modelLineWrappedLineIdx,o.column)}normalizePosition(o,d){const l=this.getViewLineInfo(o.lineNumber);return this.modelLineProjections[l.modelLineNumber-1].normalizePosition(l.modelLineWrappedLineIdx,o,d)}getLineIndentColumn(o){const d=this.getViewLineInfo(o);return d.modelLineWrappedLineIdx===0?this.model.getLineIndentColumn(d.modelLineNumber):0}}e.ViewModelLinesFromProjectedModel=i;function n(c){if(c.length===0)return[];const o=c.slice();o.sort(y.Range.compareRangesUsingStarts);const d=[];let l=o[0].startLineNumber,p=o[0].endLineNumber;for(let m=1,v=o.length;m<v;m++){const b=o[m];b.startLineNumber>p+1?(d.push(new y.Range(l,1,p,1)),l=b.startLineNumber,p=b.endLineNumber):b.endLineNumber>p&&(p=b.endLineNumber)}return d.push(new y.Range(l,1,p,1)),d}class t{constructor(o,d){this.modelLineNumber=o,this.modelLineWrappedLineIdx=d}}class a{constructor(o,d){this.modelRange=o,this.viewLines=d}}class u{constructor(o){this._lines=o}convertViewPositionToModelPosition(o){return this._lines.convertViewPositionToModelPosition(o.lineNumber,o.column)}convertViewRangeToModelRange(o){return this._lines.convertViewRangeToModelRange(o)}validateViewPosition(o,d){return this._lines.validateViewPosition(o.lineNumber,o.column,d)}validateViewRange(o,d){return this._lines.validateViewRange(o,d)}convertModelPositionToViewPosition(o,d,l,p){return this._lines.convertModelPositionToViewPosition(o.lineNumber,o.column,d,l,p)}convertModelRangeToViewRange(o,d){return this._lines.convertModelRangeToViewRange(o,d)}modelPositionIsVisible(o){return this._lines.modelPositionIsVisible(o.lineNumber,o.column)}getModelLineViewLineCount(o){return this._lines.getModelLineViewLineCount(o)}getViewLineNumberOfModelPosition(o,d){return this._lines.getViewLineNumberOfModelPosition(o,d)}}class h{constructor(o){this.model=o}dispose(){}createCoordinatesConverter(){return new r(this)}getHiddenAreas(){return[]}setHiddenAreas(o){return!1}setTabSize(o){return!1}setWrappingSettings(o,d,l,p){return!1}createLineBreaksComputer(){const o=[];return{addRequest:(d,l,p)=>{o.push(null)},finalize:()=>o}}onModelFlushed(){}onModelLinesDeleted(o,d,l){return new _.ViewLinesDeletedEvent(d,l)}onModelLinesInserted(o,d,l,p){return new _.ViewLinesInsertedEvent(d,l)}onModelLineChanged(o,d,l){return[!1,new _.ViewLinesChangedEvent(d,1),null,null]}acceptVersionId(o){}getViewLineCount(){return this.model.getLineCount()}getActiveIndentGuide(o,d,l){return{startLineNumber:o,endLineNumber:o,indent:0}}getViewLinesBracketGuides(o,d,l){return new Array(d-o+1).fill([])}getViewLinesIndentGuides(o,d){const l=d-o+1,p=new Array(l);for(let m=0;m<l;m++)p[m]=0;return p}getViewLineContent(o){return this.model.getLineContent(o)}getViewLineLength(o){return this.model.getLineLength(o)}getViewLineMinColumn(o){return this.model.getLineMinColumn(o)}getViewLineMaxColumn(o){return this.model.getLineMaxColumn(o)}getViewLineData(o){const d=this.model.tokenization.getLineTokens(o),l=d.getLineContent();return new s.ViewLineData(l,!1,1,l.length+1,0,d.inflate(),null)}getViewLinesData(o,d,l){const p=this.model.getLineCount();o=Math.min(Math.max(1,o),p),d=Math.min(Math.max(1,d),p);const m=[];for(let v=o;v<=d;v++){const b=v-o;m[b]=l[b]?this.getViewLineData(v):null}return m}getDecorationsInRange(o,d,l,p,m){return this.model.getDecorationsInRange(o,d,l,p,m)}normalizePosition(o,d){return this.model.normalizePosition(o,d)}getLineIndentColumn(o){return this.model.getLineIndentColumn(o)}getInjectedTextAt(o){return null}}e.ViewModelLinesFromModelAsIs=h;class r{constructor(o){this._lines=o}_validPosition(o){return this._lines.model.validatePosition(o)}_validRange(o){return this._lines.model.validateRange(o)}convertViewPositionToModelPosition(o){return this._validPosition(o)}convertViewRangeToModelRange(o){return this._validRange(o)}validateViewPosition(o,d){return this._validPosition(d)}validateViewRange(o,d){return this._validRange(d)}convertModelPositionToViewPosition(o){return this._validPosition(o)}convertModelRangeToViewRange(o){return this._validRange(o)}modelPositionIsVisible(o){const d=this._lines.model.getLineCount();return!(o.lineNumber<1||o.lineNumber>d)}getModelLineViewLineCount(o){return 1}getViewLineNumberOfModelPosition(o,d){return o}}}),define(ne[873],se([1,0,14,13,38,2,17,11,36,774,74,12,5,111,29,78,326,211,536,328,67,325,213,872]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewModel=void 0;const m=!0;class v extends D.Disposable{constructor(T,A,N,F,O,W,U,j,R){if(super(),this.languageConfigurationService=U,this._themeService=j,this._attachedView=R,this.hiddenAreasModel=new E,this.previousHiddenAreas=[],this._editorId=T,this._configuration=A,this.model=N,this._eventDispatcher=new l.ViewModelEventDispatcher,this.onEvent=this._eventDispatcher.onEvent,this.cursorConfig=new C.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._updateConfigurationViewLineCount=this._register(new k.RunOnceScheduler(()=>this._updateConfigurationViewLineCountNow(),0)),this._hasFocus=!1,this._viewportStart=b.create(this.model),m&&this.model.isTooLargeForTokenization())this._lines=new p.ViewModelLinesFromModelAsIs(this.model);else{const K=this._configuration.options,G=K.get(49),Z=K.get(136),J=K.get(143),X=K.get(135),H=K.get(127);this._lines=new p.ViewModelLinesFromProjectedModel(this._editorId,this.model,F,O,G,this.model.getOptions().tabSize,Z,J.wrappingColumn,X,H)}this.coordinatesConverter=this._lines.createCoordinatesConverter(),this._cursor=this._register(new g.CursorsController(N,this,this.coordinatesConverter,this.cursorConfig)),this.viewLayout=this._register(new r.ViewLayout(this._configuration,this.getLineCount(),W)),this._register(this.viewLayout.onDidScroll(K=>{K.scrollTopChanged&&this._handleVisibleLinesChanged(),K.scrollTopChanged&&this._viewportStart.invalidate(),this._eventDispatcher.emitSingleViewEvent(new h.ViewScrollChangedEvent(K)),this._eventDispatcher.emitOutgoingEvent(new l.ScrollChangedEvent(K.oldScrollWidth,K.oldScrollLeft,K.oldScrollHeight,K.oldScrollTop,K.scrollWidth,K.scrollLeft,K.scrollHeight,K.scrollTop))})),this._register(this.viewLayout.onDidContentSizeChange(K=>{this._eventDispatcher.emitOutgoingEvent(K)})),this._decorations=new d.ViewModelDecorations(this._editorId,this.model,this._configuration,this._lines,this.coordinatesConverter),this._registerModelEvents(),this._register(this._configuration.onDidChangeFast(K=>{try{const G=this._eventDispatcher.beginEmitViewEvents();this._onConfigurationChanged(G,K)}finally{this._eventDispatcher.endEmitViewEvents()}})),this._register(c.MinimapTokensColorTracker.getInstance().onDidChange(()=>{this._eventDispatcher.emitSingleViewEvent(new h.ViewTokensColorsChangedEvent)})),this._register(this._themeService.onDidColorThemeChange(K=>{this._invalidateDecorationsColorCache(),this._eventDispatcher.emitSingleViewEvent(new h.ViewThemeChangedEvent(K))})),this._updateConfigurationViewLineCountNow()}dispose(){super.dispose(),this._decorations.dispose(),this._lines.dispose(),this._viewportStart.dispose(),this._eventDispatcher.dispose()}createLineBreaksComputer(){return this._lines.createLineBreaksComputer()}addViewEventHandler(T){this._eventDispatcher.addViewEventHandler(T)}removeViewEventHandler(T){this._eventDispatcher.removeViewEventHandler(T)}_updateConfigurationViewLineCountNow(){this._configuration.setViewLineCount(this._lines.getViewLineCount())}getModelVisibleRanges(){const T=this.viewLayout.getLinesViewportData(),A=new i.Range(T.startLineNumber,this.getLineMinColumn(T.startLineNumber),T.endLineNumber,this.getLineMaxColumn(T.endLineNumber));return this._toModelVisibleRanges(A)}visibleLinesStabilized(){const T=this.getModelVisibleRanges();this._attachedView.setVisibleLines(T,!0)}_handleVisibleLinesChanged(){const T=this.getModelVisibleRanges();this._attachedView.setVisibleLines(T,!1)}setHasFocus(T){this._hasFocus=T,this._cursor.setHasFocus(T),this._eventDispatcher.emitSingleViewEvent(new h.ViewFocusChangedEvent(T)),this._eventDispatcher.emitOutgoingEvent(new l.FocusChangedEvent(!T,T))}onCompositionStart(){this._eventDispatcher.emitSingleViewEvent(new h.ViewCompositionStartEvent)}onCompositionEnd(){this._eventDispatcher.emitSingleViewEvent(new h.ViewCompositionEndEvent)}_captureStableViewport(){if(this._viewportStart.isValid&&this.viewLayout.getCurrentScrollTop()>0){const T=new s.Position(this._viewportStart.viewLineNumber,this.getLineMinColumn(this._viewportStart.viewLineNumber)),A=this.coordinatesConverter.convertViewPositionToModelPosition(T);return new P(A,this._viewportStart.startLineDelta)}return new P(null,0)}_onConfigurationChanged(T,A){const N=this._captureStableViewport(),F=this._configuration.options,O=F.get(49),W=F.get(136),U=F.get(143),j=F.get(135),R=F.get(127);this._lines.setWrappingSettings(O,W,U.wrappingColumn,j,R)&&(T.emitViewEvent(new h.ViewFlushedEvent),T.emitViewEvent(new h.ViewLineMappingChangedEvent),T.emitViewEvent(new h.ViewDecorationsChangedEvent(null)),this._cursor.onLineMappingChanged(T),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this._updateConfigurationViewLineCount.schedule()),A.hasChanged(89)&&(this._decorations.reset(),T.emitViewEvent(new h.ViewDecorationsChangedEvent(null))),T.emitViewEvent(new h.ViewConfigurationChangedEvent(A)),this.viewLayout.onConfigurationChanged(A),N.recoverViewportStart(this.coordinatesConverter,this.viewLayout),C.CursorConfiguration.shouldRecreate(A)&&(this.cursorConfig=new C.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig))}_registerModelEvents(){this._register(this.model.onDidChangeContentOrInjectedText(T=>{try{const N=this._eventDispatcher.beginEmitViewEvents();let F=!1,O=!1;const W=T instanceof n.InternalModelContentChangeEvent?T.rawContentChangedEvent.changes:T.changes,U=T instanceof n.InternalModelContentChangeEvent?T.rawContentChangedEvent.versionId:null,j=this._lines.createLineBreaksComputer();for(const G of W)switch(G.changeType){case 4:{for(let Z=0;Z<G.detail.length;Z++){const J=G.detail[Z];let X=G.injectedTexts[Z];X&&(X=X.filter(H=>!H.ownerId||H.ownerId===this._editorId)),j.addRequest(J,X,null)}break}case 2:{let Z=null;G.injectedText&&(Z=G.injectedText.filter(J=>!J.ownerId||J.ownerId===this._editorId)),j.addRequest(G.detail,Z,null);break}}const R=j.finalize(),K=new L.ArrayQueue(R);for(const G of W)switch(G.changeType){case 1:{this._lines.onModelFlushed(),N.emitViewEvent(new h.ViewFlushedEvent),this._decorations.reset(),this.viewLayout.onFlushed(this.getLineCount()),F=!0;break}case 3:{const Z=this._lines.onModelLinesDeleted(U,G.fromLineNumber,G.toLineNumber);Z!==null&&(N.emitViewEvent(Z),this.viewLayout.onLinesDeleted(Z.fromLineNumber,Z.toLineNumber)),F=!0;break}case 4:{const Z=K.takeCount(G.detail.length),J=this._lines.onModelLinesInserted(U,G.fromLineNumber,G.toLineNumber,Z);J!==null&&(N.emitViewEvent(J),this.viewLayout.onLinesInserted(J.fromLineNumber,J.toLineNumber)),F=!0;break}case 2:{const Z=K.dequeue(),[J,X,H,B]=this._lines.onModelLineChanged(U,G.lineNumber,Z);O=J,X&&N.emitViewEvent(X),H&&(N.emitViewEvent(H),this.viewLayout.onLinesInserted(H.fromLineNumber,H.toLineNumber)),B&&(N.emitViewEvent(B),this.viewLayout.onLinesDeleted(B.fromLineNumber,B.toLineNumber));break}case 5:break}U!==null&&this._lines.acceptVersionId(U),this.viewLayout.onHeightMaybeChanged(),!F&&O&&(N.emitViewEvent(new h.ViewLineMappingChangedEvent),N.emitViewEvent(new h.ViewDecorationsChangedEvent(null)),this._cursor.onLineMappingChanged(N),this._decorations.onLineMappingChanged())}finally{this._eventDispatcher.endEmitViewEvents()}const A=this._viewportStart.isValid;if(this._viewportStart.invalidate(),this._configuration.setModelLineCount(this.model.getLineCount()),this._updateConfigurationViewLineCountNow(),!this._hasFocus&&this.model.getAttachedEditorCount()>=2&&A){const N=this.model._getTrackedRange(this._viewportStart.modelTrackedRange);if(N){const F=this.coordinatesConverter.convertModelPositionToViewPosition(N.getStartPosition()),O=this.viewLayout.getVerticalOffsetForLineNumber(F.lineNumber);this.viewLayout.setScrollPosition({scrollTop:O+this._viewportStart.startLineDelta},1)}}try{const N=this._eventDispatcher.beginEmitViewEvents();T instanceof n.InternalModelContentChangeEvent&&N.emitOutgoingEvent(new l.ModelContentChangedEvent(T.contentChangedEvent)),this._cursor.onModelContentChanged(N,T)}finally{this._eventDispatcher.endEmitViewEvents()}this._handleVisibleLinesChanged()})),this._register(this.model.onDidChangeTokens(T=>{const A=[];for(let N=0,F=T.ranges.length;N<F;N++){const O=T.ranges[N],W=this.coordinatesConverter.convertModelPositionToViewPosition(new s.Position(O.fromLineNumber,1)).lineNumber,U=this.coordinatesConverter.convertModelPositionToViewPosition(new s.Position(O.toLineNumber,this.model.getLineMaxColumn(O.toLineNumber))).lineNumber;A[N]={fromLineNumber:W,toLineNumber:U}}this._eventDispatcher.emitSingleViewEvent(new h.ViewTokensChangedEvent(A)),this._eventDispatcher.emitOutgoingEvent(new l.ModelTokensChangedEvent(T))})),this._register(this.model.onDidChangeLanguageConfiguration(T=>{this._eventDispatcher.emitSingleViewEvent(new h.ViewLanguageConfigurationEvent),this.cursorConfig=new C.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new l.ModelLanguageConfigurationChangedEvent(T))})),this._register(this.model.onDidChangeLanguage(T=>{this.cursorConfig=new C.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new l.ModelLanguageChangedEvent(T))})),this._register(this.model.onDidChangeOptions(T=>{if(this._lines.setTabSize(this.model.getOptions().tabSize)){try{const A=this._eventDispatcher.beginEmitViewEvents();A.emitViewEvent(new h.ViewFlushedEvent),A.emitViewEvent(new h.ViewLineMappingChangedEvent),A.emitViewEvent(new h.ViewDecorationsChangedEvent(null)),this._cursor.onLineMappingChanged(A),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount())}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule()}this.cursorConfig=new C.CursorConfiguration(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new l.ModelOptionsChangedEvent(T))})),this._register(this.model.onDidChangeDecorations(T=>{this._decorations.onModelDecorationsChanged(),this._eventDispatcher.emitSingleViewEvent(new h.ViewDecorationsChangedEvent(T)),this._eventDispatcher.emitOutgoingEvent(new l.ModelDecorationsChangedEvent(T))}))}setHiddenAreas(T,A){this.hiddenAreasModel.setHiddenAreas(A,T);const N=this.hiddenAreasModel.getMergedRanges();if(N===this.previousHiddenAreas)return;this.previousHiddenAreas=N;const F=this._captureStableViewport();let O=!1;try{const W=this._eventDispatcher.beginEmitViewEvents();O=this._lines.setHiddenAreas(N),O&&(W.emitViewEvent(new h.ViewFlushedEvent),W.emitViewEvent(new h.ViewLineMappingChangedEvent),W.emitViewEvent(new h.ViewDecorationsChangedEvent(null)),this._cursor.onLineMappingChanged(W),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this.viewLayout.onHeightMaybeChanged()),F.recoverViewportStart(this.coordinatesConverter,this.viewLayout)}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule(),O&&this._eventDispatcher.emitOutgoingEvent(new l.HiddenAreasChangedEvent)}getVisibleRangesPlusViewportAboveBelow(){const T=this._configuration.options.get(142),A=this._configuration.options.get(65),N=Math.max(20,Math.round(T.height/A)),F=this.viewLayout.getLinesViewportData(),O=Math.max(1,F.completelyVisibleStartLineNumber-N),W=Math.min(this.getLineCount(),F.completelyVisibleEndLineNumber+N);return this._toModelVisibleRanges(new i.Range(O,this.getLineMinColumn(O),W,this.getLineMaxColumn(W)))}getVisibleRanges(){const T=this.getCompletelyVisibleViewRange();return this._toModelVisibleRanges(T)}getHiddenAreas(){return this._lines.getHiddenAreas()}_toModelVisibleRanges(T){const A=this.coordinatesConverter.convertViewRangeToModelRange(T),N=this._lines.getHiddenAreas();if(N.length===0)return[A];const F=[];let O=0,W=A.startLineNumber,U=A.startColumn;const j=A.endLineNumber,R=A.endColumn;for(let K=0,G=N.length;K<G;K++){const Z=N[K].startLineNumber,J=N[K].endLineNumber;J<W||Z>j||(W<Z&&(F[O++]=new i.Range(W,U,Z-1,this.model.getLineMaxColumn(Z-1))),W=J+1,U=1)}return(W<j||W===j&&U<R)&&(F[O++]=new i.Range(W,U,j,R)),F}getCompletelyVisibleViewRange(){const T=this.viewLayout.getLinesViewportData(),A=T.completelyVisibleStartLineNumber,N=T.completelyVisibleEndLineNumber;return new i.Range(A,this.getLineMinColumn(A),N,this.getLineMaxColumn(N))}getCompletelyVisibleViewRangeAtScrollTop(T){const A=this.viewLayout.getLinesViewportDataAtScrollTop(T),N=A.completelyVisibleStartLineNumber,F=A.completelyVisibleEndLineNumber;return new i.Range(N,this.getLineMinColumn(N),F,this.getLineMaxColumn(F))}saveState(){const T=this.viewLayout.saveState(),A=T.scrollTop,N=this.viewLayout.getLineNumberAtVerticalOffset(A),F=this.coordinatesConverter.convertViewPositionToModelPosition(new s.Position(N,this.getLineMinColumn(N))),O=this.viewLayout.getVerticalOffsetForLineNumber(N)-A;return{scrollLeft:T.scrollLeft,firstPosition:F,firstPositionDeltaTop:O}}reduceRestoreState(T){if(typeof T.firstPosition>\"u\")return this._reduceRestoreStateCompatibility(T);const A=this.model.validatePosition(T.firstPosition),N=this.coordinatesConverter.convertModelPositionToViewPosition(A),F=this.viewLayout.getVerticalOffsetForLineNumber(N.lineNumber)-T.firstPositionDeltaTop;return{scrollLeft:T.scrollLeft,scrollTop:F}}_reduceRestoreStateCompatibility(T){return{scrollLeft:T.scrollLeft,scrollTop:T.scrollTopWithoutViewZones}}getTabSize(){return this.model.getOptions().tabSize}getLineCount(){return this._lines.getViewLineCount()}setViewport(T,A,N){this._viewportStart.update(this,T)}getActiveIndentGuide(T,A,N){return this._lines.getActiveIndentGuide(T,A,N)}getLinesIndentGuides(T,A){return this._lines.getViewLinesIndentGuides(T,A)}getBracketGuidesInRangeByLine(T,A,N,F){return this._lines.getViewLinesBracketGuides(T,A,N,F)}getLineContent(T){return this._lines.getViewLineContent(T)}getLineLength(T){return this._lines.getViewLineLength(T)}getLineMinColumn(T){return this._lines.getViewLineMinColumn(T)}getLineMaxColumn(T){return this._lines.getViewLineMaxColumn(T)}getLineFirstNonWhitespaceColumn(T){const A=f.firstNonWhitespaceIndex(this.getLineContent(T));return A===-1?0:A+1}getLineLastNonWhitespaceColumn(T){const A=f.lastNonWhitespaceIndex(this.getLineContent(T));return A===-1?0:A+2}getMinimapDecorationsInRange(T){return this._decorations.getMinimapDecorationsInRange(T)}getDecorationsInViewport(T){return this._decorations.getDecorationsViewportData(T).decorations}getInjectedTextAt(T){return this._lines.getInjectedTextAt(T)}getViewportViewLineRenderingData(T,A){const F=this._decorations.getDecorationsViewportData(T).inlineDecorations[A-T.startLineNumber];return this._getViewLineRenderingData(A,F)}getViewLineRenderingData(T){const A=this._decorations.getInlineDecorationsOnLine(T);return this._getViewLineRenderingData(T,A)}_getViewLineRenderingData(T,A){const N=this.model.mightContainRTL(),F=this.model.mightContainNonBasicASCII(),O=this.getTabSize(),W=this._lines.getViewLineData(T);return W.inlineDecorations&&(A=[...A,...W.inlineDecorations.map(U=>U.toInlineDecoration(T))]),new o.ViewLineRenderingData(W.minColumn,W.maxColumn,W.content,W.continuesWithWrappedLine,N,F,W.tokens,A,O,W.startVisibleColumn)}getViewLineData(T){return this._lines.getViewLineData(T)}getMinimapLinesRenderingData(T,A,N){const F=this._lines.getViewLinesData(T,A,N);return new o.MinimapLinesRenderingData(this.getTabSize(),F)}getAllOverviewRulerDecorations(T){const A=this.model.getOverviewRulerDecorations(this._editorId,(0,_.filterValidationDecorations)(this._configuration.options)),N=new w;for(const F of A){const O=F.options,W=O.overviewRuler;if(!W)continue;const U=W.position;if(U===0)continue;const j=W.getColor(T.value),R=this.coordinatesConverter.getViewLineNumberOfModelPosition(F.range.startLineNumber,F.range.startColumn),K=this.coordinatesConverter.getViewLineNumberOfModelPosition(F.range.endLineNumber,F.range.endColumn);N.accept(j,O.zIndex,R,K,U)}return N.asArray}_invalidateDecorationsColorCache(){const T=this.model.getOverviewRulerDecorations();for(const A of T){const N=A.options.overviewRuler;N?.invalidateCachedColor();const F=A.options.minimap;F?.invalidateCachedColor()}}getValueInRange(T,A){const N=this.coordinatesConverter.convertViewRangeToModelRange(T);return this.model.getValueInRange(N,A)}getValueLengthInRange(T,A){const N=this.coordinatesConverter.convertViewRangeToModelRange(T);return this.model.getValueLengthInRange(N,A)}modifyPosition(T,A){const N=this.coordinatesConverter.convertViewPositionToModelPosition(T);return this.model.modifyPosition(N,A)}deduceModelPositionRelativeToViewPosition(T,A,N){const F=this.coordinatesConverter.convertViewPositionToModelPosition(T);this.model.getEOL().length===2&&(A<0?A-=N:A+=N);const W=this.model.getOffsetAt(F)+A;return this.model.getPositionAt(W)}getPlainTextToCopy(T,A,N){const F=N?`\\r\n`:this.model.getEOL();T=T.slice(0),T.sort(i.Range.compareRangesUsingStarts);let O=!1,W=!1;for(const j of T)j.isEmpty()?O=!0:W=!0;if(!W){if(!A)return\"\";const j=T.map(K=>K.startLineNumber);let R=\"\";for(let K=0;K<j.length;K++)K>0&&j[K-1]===j[K]||(R+=this.model.getLineContent(j[K])+F);return R}if(O&&A){const j=[];let R=0;for(const K of T){const G=K.startLineNumber;K.isEmpty()?G!==R&&j.push(this.model.getLineContent(G)):j.push(this.model.getValueInRange(K,N?2:0)),R=G}return j.length===1?j[0]:j}const U=[];for(const j of T)j.isEmpty()||U.push(this.model.getValueInRange(j,N?2:0));return U.length===1?U[0]:U}getRichTextToCopy(T,A){const N=this.model.getLanguageId();if(N===a.PLAINTEXT_LANGUAGE_ID||T.length!==1)return null;let F=T[0];if(F.isEmpty()){if(!A)return null;const K=F.startLineNumber;F=new i.Range(K,this.model.getLineMinColumn(K),K,this.model.getLineMaxColumn(K))}const O=this._configuration.options.get(49),W=this._getColorMap(),j=/[:;\\\\\\/<>]/.test(O.fontFamily)||O.fontFamily===_.EDITOR_FONT_DEFAULTS.fontFamily;let R;return j?R=_.EDITOR_FONT_DEFAULTS.fontFamily:(R=O.fontFamily,R=R.replace(/\"/g,\"'\"),/[,']/.test(R)||/[+ ]/.test(R)&&(R=`'${R}'`),R=`${R}, ${_.EDITOR_FONT_DEFAULTS.fontFamily}`),{mode:N,html:`<div style=\"color: ${W[1]};background-color: ${W[2]};font-family: ${R};font-weight: ${O.fontWeight};font-size: ${O.fontSize}px;line-height: ${O.lineHeight}px;white-space: pre;\">`+this._getHTMLToCopy(F,W)+\"</div>\"}}_getHTMLToCopy(T,A){const N=T.startLineNumber,F=T.startColumn,O=T.endLineNumber,W=T.endColumn,U=this.getTabSize();let j=\"\";for(let R=N;R<=O;R++){const K=this.model.tokenization.getLineTokens(R),G=K.getLineContent(),Z=R===N?F-1:0,J=R===O?W-1:G.length;G===\"\"?j+=\"<br>\":j+=(0,u.tokenizeLineToHTML)(G,K.inflate(),A,Z,J,U,S.isWindows)}return j}_getColorMap(){const T=t.TokenizationRegistry.getColorMap(),A=[\"#000000\"];if(T)for(let N=1,F=T.length;N<F;N++)A[N]=y.Color.Format.CSS.formatHex(T[N]);return A}getPrimaryCursorState(){return this._cursor.getPrimaryCursorState()}getLastAddedCursorIndex(){return this._cursor.getLastAddedCursorIndex()}getCursorStates(){return this._cursor.getCursorStates()}setCursorStates(T,A,N){return this._withViewEventsCollector(F=>this._cursor.setStates(F,T,A,N))}getCursorColumnSelectData(){return this._cursor.getCursorColumnSelectData()}getCursorAutoClosedCharacters(){return this._cursor.getAutoClosedCharacters()}setCursorColumnSelectData(T){this._cursor.setCursorColumnSelectData(T)}getPrevEditOperationType(){return this._cursor.getPrevEditOperationType()}setPrevEditOperationType(T){this._cursor.setPrevEditOperationType(T)}getSelection(){return this._cursor.getSelection()}getSelections(){return this._cursor.getSelections()}getPosition(){return this._cursor.getPrimaryCursorState().modelState.position}setSelections(T,A,N=0){this._withViewEventsCollector(F=>this._cursor.setSelections(F,T,A,N))}saveCursorState(){return this._cursor.saveState()}restoreCursorState(T){this._withViewEventsCollector(A=>this._cursor.restoreState(A,T))}_executeCursorEdit(T){if(this._cursor.context.cursorConfig.readOnly){this._eventDispatcher.emitOutgoingEvent(new l.ReadOnlyEditAttemptEvent);return}this._withViewEventsCollector(T)}executeEdits(T,A,N){this._executeCursorEdit(F=>this._cursor.executeEdits(F,T,A,N))}startComposition(){this._executeCursorEdit(T=>this._cursor.startComposition(T))}endComposition(T){this._executeCursorEdit(A=>this._cursor.endComposition(A,T))}type(T,A){this._executeCursorEdit(N=>this._cursor.type(N,T,A))}compositionType(T,A,N,F,O){this._executeCursorEdit(W=>this._cursor.compositionType(W,T,A,N,F,O))}paste(T,A,N,F){this._executeCursorEdit(O=>this._cursor.paste(O,T,A,N,F))}cut(T){this._executeCursorEdit(A=>this._cursor.cut(A,T))}executeCommand(T,A){this._executeCursorEdit(N=>this._cursor.executeCommand(N,T,A))}executeCommands(T,A){this._executeCursorEdit(N=>this._cursor.executeCommands(N,T,A))}revealPrimaryCursor(T,A,N=!1){this._withViewEventsCollector(F=>this._cursor.revealPrimary(F,T,N,0,A,0))}revealTopMostCursor(T){const A=this._cursor.getTopMostViewPosition(),N=new i.Range(A.lineNumber,A.column,A.lineNumber,A.column);this._withViewEventsCollector(F=>F.emitViewEvent(new h.ViewRevealRangeRequestEvent(T,!1,N,null,0,!0,0)))}revealBottomMostCursor(T){const A=this._cursor.getBottomMostViewPosition(),N=new i.Range(A.lineNumber,A.column,A.lineNumber,A.column);this._withViewEventsCollector(F=>F.emitViewEvent(new h.ViewRevealRangeRequestEvent(T,!1,N,null,0,!0,0)))}revealRange(T,A,N,F,O){this._withViewEventsCollector(W=>W.emitViewEvent(new h.ViewRevealRangeRequestEvent(T,!1,N,null,F,A,O)))}changeWhitespace(T){this.viewLayout.changeWhitespace(T)&&(this._eventDispatcher.emitSingleViewEvent(new h.ViewZonesChangedEvent),this._eventDispatcher.emitOutgoingEvent(new l.ViewZonesChangedEvent))}_withViewEventsCollector(T){try{const A=this._eventDispatcher.beginEmitViewEvents();return T(A)}finally{this._eventDispatcher.endEmitViewEvents()}}normalizePosition(T,A){return this._lines.normalizePosition(T,A)}getLineIndentColumn(T){return this._lines.getLineIndentColumn(T)}}e.ViewModel=v;class b{static create(T){const A=T._setTrackedRange(null,new i.Range(1,1,1,1),1);return new b(T,1,!1,A,0)}get viewLineNumber(){return this._viewLineNumber}get isValid(){return this._isValid}get modelTrackedRange(){return this._modelTrackedRange}get startLineDelta(){return this._startLineDelta}constructor(T,A,N,F,O){this._model=T,this._viewLineNumber=A,this._isValid=N,this._modelTrackedRange=F,this._startLineDelta=O}dispose(){this._model._setTrackedRange(this._modelTrackedRange,null,1)}update(T,A){const N=T.coordinatesConverter.convertViewPositionToModelPosition(new s.Position(A,T.getLineMinColumn(A))),F=T.model._setTrackedRange(this._modelTrackedRange,new i.Range(N.lineNumber,N.column,N.lineNumber,N.column),1),O=T.viewLayout.getVerticalOffsetForLineNumber(A),W=T.viewLayout.getCurrentScrollTop();this._viewLineNumber=A,this._isValid=!0,this._modelTrackedRange=F,this._startLineDelta=W-O}invalidate(){this._isValid=!1}}class w{constructor(){this._asMap=Object.create(null),this.asArray=[]}accept(T,A,N,F,O){const W=this._asMap[T];if(W){const U=W.data,j=U[U.length-3],R=U[U.length-1];if(j===O&&R+1>=N){F>R&&(U[U.length-1]=F);return}U.push(O,N,F)}else{const U=new o.OverviewRulerDecorationsGroup(T,A,[O,N,F]);this._asMap[T]=U,this.asArray.push(U)}}}class E{constructor(){this.hiddenAreas=new Map,this.shouldRecompute=!1,this.ranges=[]}setHiddenAreas(T,A){const N=this.hiddenAreas.get(T);N&&M(N,A)||(this.hiddenAreas.set(T,A),this.shouldRecompute=!0)}getMergedRanges(){if(!this.shouldRecompute)return this.ranges;this.shouldRecompute=!1;const T=Array.from(this.hiddenAreas.values()).reduce((A,N)=>I(A,N),[]);return M(this.ranges,T)?this.ranges:(this.ranges=T,this.ranges)}}function I(x,T){const A=[];let N=0,F=0;for(;N<x.length&&F<T.length;){const O=x[N],W=T[F];if(O.endLineNumber<W.startLineNumber-1)A.push(x[N++]);else if(W.endLineNumber<O.startLineNumber-1)A.push(T[F++]);else{const U=Math.min(O.startLineNumber,W.startLineNumber),j=Math.max(O.endLineNumber,W.endLineNumber);A.push(new i.Range(U,1,j,1)),N++,F++}}for(;N<x.length;)A.push(x[N++]);for(;F<T.length;)A.push(T[F++]);return A}function M(x,T){if(x.length!==T.length)return!1;for(let A=0;A<x.length;A++)if(!x[A].equalsRange(T[A]))return!1;return!0}class P{constructor(T,A){this.viewportStartModelPosition=T,this.startLineDelta=A}recoverViewportStart(T,A){if(!this.viewportStartModelPosition)return;const N=T.convertModelPositionToViewPosition(this.viewportStartModelPosition),F=A.getVerticalOffsetForLineNumber(N.lineNumber);A.setScrollPosition({scrollTop:F+this.startLineDelta},1)}}}),define(ne[161],se([1,0,604,7,9,6,2,54,756,16,33,851,272,36,82,12,5,24,277,148,21,40,80,31,873,27,15,8,157,43,23,84,533,591,178,32,59,18,784,201,792,435]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P,x,T,A,N,F,O,W,U){\"use strict\";var j;Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditorModeContext=e.BooleanEventEmitter=e.CodeEditorWidget=void 0;let R=0;class K{constructor(te,q,z,ee,$,re){this.model=te,this.viewModel=q,this.view=z,this.hasRealView=ee,this.listenersToRemove=$,this.attachedView=re}dispose(){(0,S.dispose)(this.listenersToRemove),this.model.onBeforeDetached(this.attachedView),this.hasRealView&&this.view.dispose(),this.viewModel.dispose()}}let G=j=class extends S.Disposable{get isSimpleWidget(){return this._configuration.isSimpleWidget}constructor(te,q,z,ee,$,re,oe,ge,ve,Se,Le,De){var ye;super(),this.languageConfigurationService=Le,this._deliveryQueue=(0,D.createEventDeliveryQueue)(),this._contributions=this._register(new W.CodeEditorContributions),this._onDidDispose=this._register(new D.Emitter),this.onDidDispose=this._onDidDispose.event,this._onDidChangeModelContent=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelContent=this._onDidChangeModelContent.event,this._onDidChangeModelLanguage=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelLanguage=this._onDidChangeModelLanguage.event,this._onDidChangeModelLanguageConfiguration=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelLanguageConfiguration=this._onDidChangeModelLanguageConfiguration.event,this._onDidChangeModelOptions=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelOptions=this._onDidChangeModelOptions.event,this._onDidChangeModelDecorations=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelDecorations=this._onDidChangeModelDecorations.event,this._onDidChangeModelTokens=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelTokens=this._onDidChangeModelTokens.event,this._onDidChangeConfiguration=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidChangeConfiguration=this._onDidChangeConfiguration.event,this._onDidChangeModel=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidChangeModel=this._onDidChangeModel.event,this._onDidChangeCursorPosition=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidChangeCursorPosition=this._onDidChangeCursorPosition.event,this._onDidChangeCursorSelection=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidChangeCursorSelection=this._onDidChangeCursorSelection.event,this._onDidAttemptReadOnlyEdit=this._register(new J(this._contributions,this._deliveryQueue)),this.onDidAttemptReadOnlyEdit=this._onDidAttemptReadOnlyEdit.event,this._onDidLayoutChange=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidLayoutChange=this._onDidLayoutChange.event,this._editorTextFocus=this._register(new Z({deliveryQueue:this._deliveryQueue})),this.onDidFocusEditorText=this._editorTextFocus.onDidChangeToTrue,this.onDidBlurEditorText=this._editorTextFocus.onDidChangeToFalse,this._editorWidgetFocus=this._register(new Z({deliveryQueue:this._deliveryQueue})),this.onDidFocusEditorWidget=this._editorWidgetFocus.onDidChangeToTrue,this.onDidBlurEditorWidget=this._editorWidgetFocus.onDidChangeToFalse,this._onWillType=this._register(new J(this._contributions,this._deliveryQueue)),this.onWillType=this._onWillType.event,this._onDidType=this._register(new J(this._contributions,this._deliveryQueue)),this.onDidType=this._onDidType.event,this._onDidCompositionStart=this._register(new J(this._contributions,this._deliveryQueue)),this.onDidCompositionStart=this._onDidCompositionStart.event,this._onDidCompositionEnd=this._register(new J(this._contributions,this._deliveryQueue)),this.onDidCompositionEnd=this._onDidCompositionEnd.event,this._onDidPaste=this._register(new J(this._contributions,this._deliveryQueue)),this.onDidPaste=this._onDidPaste.event,this._onMouseUp=this._register(new J(this._contributions,this._deliveryQueue)),this.onMouseUp=this._onMouseUp.event,this._onMouseDown=this._register(new J(this._contributions,this._deliveryQueue)),this.onMouseDown=this._onMouseDown.event,this._onMouseDrag=this._register(new J(this._contributions,this._deliveryQueue)),this.onMouseDrag=this._onMouseDrag.event,this._onMouseDrop=this._register(new J(this._contributions,this._deliveryQueue)),this.onMouseDrop=this._onMouseDrop.event,this._onMouseDropCanceled=this._register(new J(this._contributions,this._deliveryQueue)),this.onMouseDropCanceled=this._onMouseDropCanceled.event,this._onDropIntoEditor=this._register(new J(this._contributions,this._deliveryQueue)),this.onDropIntoEditor=this._onDropIntoEditor.event,this._onContextMenu=this._register(new J(this._contributions,this._deliveryQueue)),this.onContextMenu=this._onContextMenu.event,this._onMouseMove=this._register(new J(this._contributions,this._deliveryQueue)),this.onMouseMove=this._onMouseMove.event,this._onMouseLeave=this._register(new J(this._contributions,this._deliveryQueue)),this.onMouseLeave=this._onMouseLeave.event,this._onMouseWheel=this._register(new J(this._contributions,this._deliveryQueue)),this.onMouseWheel=this._onMouseWheel.event,this._onKeyUp=this._register(new J(this._contributions,this._deliveryQueue)),this.onKeyUp=this._onKeyUp.event,this._onKeyDown=this._register(new J(this._contributions,this._deliveryQueue)),this.onKeyDown=this._onKeyDown.event,this._onDidContentSizeChange=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidContentSizeChange=this._onDidContentSizeChange.event,this._onDidScrollChange=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidScrollChange=this._onDidScrollChange.event,this._onDidChangeViewZones=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidChangeViewZones=this._onDidChangeViewZones.event,this._onDidChangeHiddenAreas=this._register(new D.Emitter({deliveryQueue:this._deliveryQueue})),this.onDidChangeHiddenAreas=this._onDidChangeHiddenAreas.event,this._actions=new Map,this._bannerDomNode=null,this._dropIntoEditorDecorations=this.createDecorationsCollection(),$.willCreateCodeEditor();const Ee=Object.assign({},q);this._domElement=te,this._overflowWidgetsDomNode=Ee.overflowWidgetsDomNode,delete Ee.overflowWidgetsDomNode,this._id=++R,this._decorationTypeKeysToIds={},this._decorationTypeSubtypes={},this._telemetryData=z.telemetryData,this._configuration=this._register(this._createConfiguration(z.isSimpleWidget||!1,Ee,Se)),this._register(this._configuration.onDidChange(Fe=>{this._onDidChangeConfiguration.fire(Fe);const _e=this._configuration.options;if(Fe.hasChanged(142)){const me=_e.get(142);this._onDidLayoutChange.fire(me)}})),this._contextKeyService=this._register(oe.createScoped(this._domElement)),this._notificationService=ve,this._codeEditorService=$,this._commandService=re,this._themeService=ge,this._register(new X(this,this._contextKeyService)),this._register(new H(this,this._contextKeyService,De)),this._instantiationService=ee.createChild(new E.ServiceCollection([b.IContextKeyService,this._contextKeyService])),this._modelData=null,this._focusTracker=new B(te),this._register(this._focusTracker.onChange(()=>{this._editorWidgetFocus.setValue(this._focusTracker.hasFocus())})),this._contentWidgets={},this._overlayWidgets={},this._glyphMarginWidgets={};let Me;Array.isArray(z.contributions)?Me=z.contributions:Me=g.EditorExtensionsRegistry.getEditorContributions(),this._contributions.initialize(this,Me,this._instantiationService);for(const Fe of g.EditorExtensionsRegistry.getEditorActions()){if(this._actions.has(Fe.id)){(0,y.onUnexpectedError)(new Error(`Cannot have two actions with the same id ${Fe.id}`));continue}const _e=new r.InternalEditorAction(Fe.id,Fe.label,Fe.alias,(ye=Fe.precondition)!==null&&ye!==void 0?ye:void 0,()=>this._instantiationService.invokeFunction(me=>Promise.resolve(Fe.runEditorCommand(me,this,null))),this._contextKeyService);this._actions.set(_e.id,_e)}const Pe=()=>!this._configuration.options.get(89)&&this._configuration.options.get(35).enabled;this._register(new k.DragAndDropObserver(this._domElement,{onDragEnter:()=>{},onDragOver:Fe=>{if(!Pe())return;const _e=this.getTargetAtClientPoint(Fe.clientX,Fe.clientY);_e?.position&&this.showDropIndicatorAt(_e.position)},onDrop:Fe=>we(this,void 0,void 0,function*(){if(!Pe()||(this.removeDropIndicator(),!Fe.dataTransfer))return;const _e=this.getTargetAtClientPoint(Fe.clientX,Fe.clientY);_e?.position&&this._onDropIntoEditor.fire({position:_e.position,event:Fe})}),onDragLeave:()=>{this.removeDropIndicator()},onDragEnd:()=>{this.removeDropIndicator()}})),this._codeEditorService.addCodeEditor(this)}writeScreenReaderContent(te){var q;(q=this._modelData)===null||q===void 0||q.view.writeScreenReaderContent(te)}_createConfiguration(te,q,z){return new _.EditorConfiguration(te,q,this._domElement,z)}getId(){return this.getEditorType()+\":\"+this._id}getEditorType(){return c.EditorType.ICodeEditor}dispose(){this._codeEditorService.removeCodeEditor(this),this._focusTracker.dispose(),this._actions.clear(),this._contentWidgets={},this._overlayWidgets={},this._removeDecorationTypes(),this._postDetachModelCleanup(this._detachModel()),this._onDidDispose.fire(),super.dispose()}invokeWithinContext(te){return this._instantiationService.invokeFunction(te)}updateOptions(te){this._configuration.updateOptions(te||{})}getOptions(){return this._configuration.options}getOption(te){return this._configuration.options.get(te)}getRawOptions(){return this._configuration.getRawOptions()}getOverflowWidgetsDomNode(){return this._overflowWidgetsDomNode}getConfiguredWordAtPosition(te){return this._modelData?A.WordOperations.getWordAtPosition(this._modelData.model,this._configuration.options.get(128),te):null}getValue(te=null){if(!this._modelData)return\"\";const q=!!(te&&te.preserveBOM);let z=0;return te&&te.lineEnding&&te.lineEnding===`\n`?z=1:te&&te.lineEnding&&te.lineEnding===`\\r\n`&&(z=2),this._modelData.model.getValue(z,q)}setValue(te){this._modelData&&this._modelData.model.setValue(te)}getModel(){return this._modelData?this._modelData.model:null}setModel(te=null){const q=te;if(this._modelData===null&&q===null||this._modelData&&this._modelData.model===q)return;const z=this.hasTextFocus(),ee=this._detachModel();this._attachModel(q),z&&this.hasModel()&&this.focus();const $={oldModelUrl:ee?ee.uri:null,newModelUrl:q?q.uri:null};this._removeDecorationTypes(),this._onDidChangeModel.fire($),this._postDetachModelCleanup(ee),this._contributions.onAfterModelAttached()}_removeDecorationTypes(){if(this._decorationTypeKeysToIds={},this._decorationTypeSubtypes){for(const te in this._decorationTypeSubtypes){const q=this._decorationTypeSubtypes[te];for(const z in q)this._removeDecorationType(te+\"-\"+z)}this._decorationTypeSubtypes={}}}getVisibleRanges(){return this._modelData?this._modelData.viewModel.getVisibleRanges():[]}getVisibleRangesPlusViewportAboveBelow(){return this._modelData?this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow():[]}getWhitespaces(){return this._modelData?this._modelData.viewModel.viewLayout.getWhitespaces():[]}static _getVerticalOffsetAfterPosition(te,q,z,ee){const $=te.model.validatePosition({lineNumber:q,column:z}),re=te.viewModel.coordinatesConverter.convertModelPositionToViewPosition($);return te.viewModel.viewLayout.getVerticalOffsetAfterLineNumber(re.lineNumber,ee)}getTopForLineNumber(te,q=!1){return this._modelData?j._getVerticalOffsetForPosition(this._modelData,te,1,q):-1}getTopForPosition(te,q){return this._modelData?j._getVerticalOffsetForPosition(this._modelData,te,q,!1):-1}static _getVerticalOffsetForPosition(te,q,z,ee=!1){const $=te.model.validatePosition({lineNumber:q,column:z}),re=te.viewModel.coordinatesConverter.convertModelPositionToViewPosition($);return te.viewModel.viewLayout.getVerticalOffsetForLineNumber(re.lineNumber,ee)}getBottomForLineNumber(te,q=!1){return this._modelData?j._getVerticalOffsetAfterPosition(this._modelData,te,1,q):-1}setHiddenAreas(te,q){var z;(z=this._modelData)===null||z===void 0||z.viewModel.setHiddenAreas(te.map(ee=>u.Range.lift(ee)),q)}getVisibleColumnFromPosition(te){if(!this._modelData)return te.column;const q=this._modelData.model.validatePosition(te),z=this._modelData.model.getOptions().tabSize;return t.CursorColumns.visibleColumnFromColumn(this._modelData.model.getLineContent(q.lineNumber),q.column,z)+1}getPosition(){return this._modelData?this._modelData.viewModel.getPosition():null}setPosition(te,q=\"api\"){if(this._modelData){if(!a.Position.isIPosition(te))throw new Error(\"Invalid arguments\");this._modelData.viewModel.setSelections(q,[{selectionStartLineNumber:te.lineNumber,selectionStartColumn:te.column,positionLineNumber:te.lineNumber,positionColumn:te.column}])}}_sendRevealRange(te,q,z,ee){if(!this._modelData)return;if(!u.Range.isIRange(te))throw new Error(\"Invalid arguments\");const $=this._modelData.model.validateRange(te),re=this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange($);this._modelData.viewModel.revealRange(\"api\",z,re,q,ee)}revealLine(te,q=0){this._revealLine(te,0,q)}revealLineInCenter(te,q=0){this._revealLine(te,1,q)}revealLineInCenterIfOutsideViewport(te,q=0){this._revealLine(te,2,q)}revealLineNearTop(te,q=0){this._revealLine(te,5,q)}_revealLine(te,q,z){if(typeof te!=\"number\")throw new Error(\"Invalid arguments\");this._sendRevealRange(new u.Range(te,1,te,1),q,!1,z)}revealPosition(te,q=0){this._revealPosition(te,0,!0,q)}revealPositionInCenter(te,q=0){this._revealPosition(te,1,!0,q)}revealPositionInCenterIfOutsideViewport(te,q=0){this._revealPosition(te,2,!0,q)}revealPositionNearTop(te,q=0){this._revealPosition(te,5,!0,q)}_revealPosition(te,q,z,ee){if(!a.Position.isIPosition(te))throw new Error(\"Invalid arguments\");this._sendRevealRange(new u.Range(te.lineNumber,te.column,te.lineNumber,te.column),q,z,ee)}getSelection(){return this._modelData?this._modelData.viewModel.getSelection():null}getSelections(){return this._modelData?this._modelData.viewModel.getSelections():null}setSelection(te,q=\"api\"){const z=h.Selection.isISelection(te),ee=u.Range.isIRange(te);if(!z&&!ee)throw new Error(\"Invalid arguments\");if(z)this._setSelectionImpl(te,q);else if(ee){const $={selectionStartLineNumber:te.startLineNumber,selectionStartColumn:te.startColumn,positionLineNumber:te.endLineNumber,positionColumn:te.endColumn};this._setSelectionImpl($,q)}}_setSelectionImpl(te,q){if(!this._modelData)return;const z=new h.Selection(te.selectionStartLineNumber,te.selectionStartColumn,te.positionLineNumber,te.positionColumn);this._modelData.viewModel.setSelections(q,[z])}revealLines(te,q,z=0){this._revealLines(te,q,0,z)}revealLinesInCenter(te,q,z=0){this._revealLines(te,q,1,z)}revealLinesInCenterIfOutsideViewport(te,q,z=0){this._revealLines(te,q,2,z)}revealLinesNearTop(te,q,z=0){this._revealLines(te,q,5,z)}_revealLines(te,q,z,ee){if(typeof te!=\"number\"||typeof q!=\"number\")throw new Error(\"Invalid arguments\");this._sendRevealRange(new u.Range(te,1,q,1),z,!1,ee)}revealRange(te,q=0,z=!1,ee=!0){this._revealRange(te,z?1:0,ee,q)}revealRangeInCenter(te,q=0){this._revealRange(te,1,!0,q)}revealRangeInCenterIfOutsideViewport(te,q=0){this._revealRange(te,2,!0,q)}revealRangeNearTop(te,q=0){this._revealRange(te,5,!0,q)}revealRangeNearTopIfOutsideViewport(te,q=0){this._revealRange(te,6,!0,q)}revealRangeAtTop(te,q=0){this._revealRange(te,3,!0,q)}_revealRange(te,q,z,ee){if(!u.Range.isIRange(te))throw new Error(\"Invalid arguments\");this._sendRevealRange(u.Range.lift(te),q,z,ee)}setSelections(te,q=\"api\",z=0){if(this._modelData){if(!te||te.length===0)throw new Error(\"Invalid arguments\");for(let ee=0,$=te.length;ee<$;ee++)if(!h.Selection.isISelection(te[ee]))throw new Error(\"Invalid arguments\");this._modelData.viewModel.setSelections(q,te,z)}}getContentWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getContentWidth():-1}getScrollWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollWidth():-1}getScrollLeft(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollLeft():-1}getContentHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getContentHeight():-1}getScrollHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollHeight():-1}getScrollTop(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollTop():-1}setScrollLeft(te,q=1){if(this._modelData){if(typeof te!=\"number\")throw new Error(\"Invalid arguments\");this._modelData.viewModel.viewLayout.setScrollPosition({scrollLeft:te},q)}}setScrollTop(te,q=1){if(this._modelData){if(typeof te!=\"number\")throw new Error(\"Invalid arguments\");this._modelData.viewModel.viewLayout.setScrollPosition({scrollTop:te},q)}}setScrollPosition(te,q=1){this._modelData&&this._modelData.viewModel.viewLayout.setScrollPosition(te,q)}hasPendingScrollAnimation(){return this._modelData?this._modelData.viewModel.viewLayout.hasPendingScrollAnimation():!1}saveViewState(){if(!this._modelData)return null;const te=this._contributions.saveViewState(),q=this._modelData.viewModel.saveCursorState(),z=this._modelData.viewModel.saveState();return{cursorState:q,viewState:z,contributionsState:te}}restoreViewState(te){if(!this._modelData||!this._modelData.hasRealView)return;const q=te;if(q&&q.cursorState&&q.viewState){const z=q.cursorState;Array.isArray(z)?z.length>0&&this._modelData.viewModel.restoreCursorState(z):this._modelData.viewModel.restoreCursorState([z]),this._contributions.restoreViewState(q.contributionsState||{});const ee=this._modelData.viewModel.reduceRestoreState(q.viewState);this._modelData.view.restoreState(ee)}}handleInitialized(){var te;(te=this._getViewModel())===null||te===void 0||te.visibleLinesStabilized()}getContribution(te){return this._contributions.get(te)}getActions(){return Array.from(this._actions.values())}getSupportedActions(){let te=this.getActions();return te=te.filter(q=>q.isSupported()),te}getAction(te){return this._actions.get(te)||null}trigger(te,q,z){switch(z=z||{},q){case\"compositionStart\":this._startComposition();return;case\"compositionEnd\":this._endComposition(te);return;case\"type\":{const $=z;this._type(te,$.text||\"\");return}case\"replacePreviousChar\":{const $=z;this._compositionType(te,$.text||\"\",$.replaceCharCnt||0,0,0);return}case\"compositionType\":{const $=z;this._compositionType(te,$.text||\"\",$.replacePrevCharCnt||0,$.replaceNextCharCnt||0,$.positionDelta||0);return}case\"paste\":{const $=z;this._paste(te,$.text||\"\",$.pasteOnNewLine||!1,$.multicursorText||null,$.mode||null);return}case\"cut\":this._cut(te);return}const ee=this.getAction(q);if(ee){Promise.resolve(ee.run(z)).then(void 0,y.onUnexpectedError);return}this._modelData&&(this._triggerEditorCommand(te,q,z)||this._triggerCommand(q,z))}_triggerCommand(te,q){this._commandService.executeCommand(te,q)}_startComposition(){this._modelData&&(this._modelData.viewModel.startComposition(),this._onDidCompositionStart.fire())}_endComposition(te){this._modelData&&(this._modelData.viewModel.endComposition(te),this._onDidCompositionEnd.fire())}_type(te,q){!this._modelData||q.length===0||(te===\"keyboard\"&&this._onWillType.fire(q),this._modelData.viewModel.type(q,te),te===\"keyboard\"&&this._onDidType.fire(q))}_compositionType(te,q,z,ee,$){this._modelData&&this._modelData.viewModel.compositionType(q,z,ee,$,te)}_paste(te,q,z,ee,$){if(!this._modelData||q.length===0)return;const re=this._modelData.viewModel,oe=re.getSelection().getStartPosition();re.paste(q,z,ee,te);const ge=re.getSelection().getStartPosition();te===\"keyboard\"&&this._onDidPaste.fire({range:new u.Range(oe.lineNumber,oe.column,ge.lineNumber,ge.column),languageId:$})}_cut(te){this._modelData&&this._modelData.viewModel.cut(te)}_triggerEditorCommand(te,q,z){const ee=g.EditorExtensionsRegistry.getEditorCommand(q);return ee?(z=z||{},z.source=te,this._instantiationService.invokeFunction($=>{Promise.resolve(ee.runEditorCommand($,this,z)).then(void 0,y.onUnexpectedError)}),!0):!1}_getViewModel(){return this._modelData?this._modelData.viewModel:null}pushUndoStop(){return!this._modelData||this._configuration.options.get(89)?!1:(this._modelData.model.pushStackElement(),!0)}popUndoStop(){return!this._modelData||this._configuration.options.get(89)?!1:(this._modelData.model.popStackElement(),!0)}executeEdits(te,q,z){if(!this._modelData||this._configuration.options.get(89))return!1;let ee;return z?Array.isArray(z)?ee=()=>z:ee=z:ee=()=>null,this._modelData.viewModel.executeEdits(te,q,ee),!0}executeCommand(te,q){this._modelData&&this._modelData.viewModel.executeCommand(q,te)}executeCommands(te,q){this._modelData&&this._modelData.viewModel.executeCommands(q,te)}createDecorationsCollection(te){return new V(this,te)}changeDecorations(te){return this._modelData?this._modelData.model.changeDecorations(te,this._id):null}getLineDecorations(te){return this._modelData?this._modelData.model.getLineDecorations(te,this._id,(0,n.filterValidationDecorations)(this._configuration.options)):null}getDecorationsInRange(te){return this._modelData?this._modelData.model.getDecorationsInRange(te,this._id,(0,n.filterValidationDecorations)(this._configuration.options)):null}deltaDecorations(te,q){return this._modelData?te.length===0&&q.length===0?te:this._modelData.model.deltaDecorations(te,q,this._id):[]}removeDecorations(te){!this._modelData||te.length===0||this._modelData.model.changeDecorations(q=>{q.deltaDecorations(te,[])})}removeDecorationsByType(te){const q=this._decorationTypeKeysToIds[te];q&&this.deltaDecorations(q,[]),this._decorationTypeKeysToIds.hasOwnProperty(te)&&delete this._decorationTypeKeysToIds[te],this._decorationTypeSubtypes.hasOwnProperty(te)&&delete this._decorationTypeSubtypes[te]}getLayoutInfo(){return this._configuration.options.get(142)}createOverviewRuler(te){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.createOverviewRuler(te)}getContainerDomNode(){return this._domElement}getDomNode(){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.domNode.domNode}delegateVerticalScrollbarPointerDown(te){!this._modelData||!this._modelData.hasRealView||this._modelData.view.delegateVerticalScrollbarPointerDown(te)}delegateScrollFromMouseWheelEvent(te){!this._modelData||!this._modelData.hasRealView||this._modelData.view.delegateScrollFromMouseWheelEvent(te)}layout(te){this._configuration.observeContainer(te),this.render()}focus(){!this._modelData||!this._modelData.hasRealView||this._modelData.view.focus()}hasTextFocus(){return!this._modelData||!this._modelData.hasRealView?!1:this._modelData.view.isFocused()}hasWidgetFocus(){return this._focusTracker&&this._focusTracker.hasFocus()}addContentWidget(te){const q={widget:te,position:te.getPosition()};this._contentWidgets.hasOwnProperty(te.getId())&&console.warn(\"Overwriting a content widget with the same id.\"),this._contentWidgets[te.getId()]=q,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addContentWidget(q)}layoutContentWidget(te){const q=te.getId();if(this._contentWidgets.hasOwnProperty(q)){const z=this._contentWidgets[q];z.position=te.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutContentWidget(z)}}removeContentWidget(te){const q=te.getId();if(this._contentWidgets.hasOwnProperty(q)){const z=this._contentWidgets[q];delete this._contentWidgets[q],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeContentWidget(z)}}addOverlayWidget(te){const q={widget:te,position:te.getPosition()};this._overlayWidgets.hasOwnProperty(te.getId())&&console.warn(\"Overwriting an overlay widget with the same id.\"),this._overlayWidgets[te.getId()]=q,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addOverlayWidget(q)}layoutOverlayWidget(te){const q=te.getId();if(this._overlayWidgets.hasOwnProperty(q)){const z=this._overlayWidgets[q];z.position=te.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutOverlayWidget(z)}}removeOverlayWidget(te){const q=te.getId();if(this._overlayWidgets.hasOwnProperty(q)){const z=this._overlayWidgets[q];delete this._overlayWidgets[q],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeOverlayWidget(z)}}addGlyphMarginWidget(te){const q={widget:te,position:te.getPosition()};this._glyphMarginWidgets.hasOwnProperty(te.getId())&&console.warn(\"Overwriting a glyph margin widget with the same id.\"),this._glyphMarginWidgets[te.getId()]=q,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addGlyphMarginWidget(q)}layoutGlyphMarginWidget(te){const q=te.getId();if(this._glyphMarginWidgets.hasOwnProperty(q)){const z=this._glyphMarginWidgets[q];z.position=te.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutGlyphMarginWidget(z)}}removeGlyphMarginWidget(te){const q=te.getId();if(this._glyphMarginWidgets.hasOwnProperty(q)){const z=this._glyphMarginWidgets[q];delete this._glyphMarginWidgets[q],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeGlyphMarginWidget(z)}}changeViewZones(te){!this._modelData||!this._modelData.hasRealView||this._modelData.view.change(te)}getTargetAtClientPoint(te,q){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.getTargetAtClientPoint(te,q)}getScrolledVisiblePosition(te){if(!this._modelData||!this._modelData.hasRealView)return null;const q=this._modelData.model.validatePosition(te),z=this._configuration.options,ee=z.get(142),$=j._getVerticalOffsetForPosition(this._modelData,q.lineNumber,q.column)-this.getScrollTop(),re=this._modelData.view.getOffsetForColumn(q.lineNumber,q.column)+ee.glyphMarginWidth+ee.lineNumbersWidth+ee.decorationsWidth-this.getScrollLeft();return{top:$,left:re,height:z.get(65)}}getOffsetForColumn(te,q){return!this._modelData||!this._modelData.hasRealView?-1:this._modelData.view.getOffsetForColumn(te,q)}render(te=!1){!this._modelData||!this._modelData.hasRealView||this._modelData.view.render(!0,te)}setAriaOptions(te){!this._modelData||!this._modelData.hasRealView||this._modelData.view.setAriaOptions(te)}applyFontInfo(te){(0,F.applyFontInfo)(te,this._configuration.options.get(49))}setBanner(te,q){this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._domElement.removeChild(this._bannerDomNode),this._bannerDomNode=te,this._configuration.setReservedHeight(te?q:0),this._bannerDomNode&&this._domElement.prepend(this._bannerDomNode)}_attachModel(te){if(!te){this._modelData=null;return}const q=[];this._domElement.setAttribute(\"data-mode-id\",te.getLanguageId()),this._configuration.setIsDominatedByLongLines(te.isDominatedByLongLines()),this._configuration.setModelLineCount(te.getLineCount());const z=te.onBeforeAttached(),ee=new m.ViewModel(this._id,this._configuration,te,T.DOMLineBreaksComputerFactory.create(),x.MonospaceLineBreaksComputerFactory.create(this._configuration.options),oe=>k.scheduleAtNextAnimationFrame(oe),this.languageConfigurationService,this._themeService,z);q.push(te.onWillDispose(()=>this.setModel(null))),q.push(ee.onEvent(oe=>{switch(oe.kind){case 0:this._onDidContentSizeChange.fire(oe);break;case 1:this._editorTextFocus.setValue(oe.hasFocus);break;case 2:this._onDidScrollChange.fire(oe);break;case 3:this._onDidChangeViewZones.fire();break;case 4:this._onDidChangeHiddenAreas.fire();break;case 5:this._onDidAttemptReadOnlyEdit.fire();break;case 6:{if(oe.reachedMaxCursorCount){const Le=this.getOption(78),De=L.localize(0,null,Le);this._notificationService.prompt(I.Severity.Warning,De,[{label:\"Find and Replace\",run:()=>{this._commandService.executeCommand(\"editor.action.startFindReplaceAction\")}},{label:L.localize(1,null),run:()=>{this._commandService.executeCommand(\"workbench.action.openSettings2\",{query:\"editor.multiCursorLimit\"})}}])}const ge=[];for(let Le=0,De=oe.selections.length;Le<De;Le++)ge[Le]=oe.selections[Le].getPosition();const ve={position:ge[0],secondaryPositions:ge.slice(1),reason:oe.reason,source:oe.source};this._onDidChangeCursorPosition.fire(ve);const Se={selection:oe.selections[0],secondarySelections:oe.selections.slice(1),modelVersionId:oe.modelVersionId,oldSelections:oe.oldSelections,oldModelVersionId:oe.oldModelVersionId,source:oe.source,reason:oe.reason};this._onDidChangeCursorSelection.fire(Se);break}case 7:this._onDidChangeModelDecorations.fire(oe.event);break;case 8:this._domElement.setAttribute(\"data-mode-id\",te.getLanguageId()),this._onDidChangeModelLanguage.fire(oe.event);break;case 9:this._onDidChangeModelLanguageConfiguration.fire(oe.event);break;case 10:this._onDidChangeModelContent.fire(oe.event);break;case 11:this._onDidChangeModelOptions.fire(oe.event);break;case 12:this._onDidChangeModelTokens.fire(oe.event);break}}));const[$,re]=this._createView(ee);if(re){this._domElement.appendChild($.domNode.domNode);let oe=Object.keys(this._contentWidgets);for(let ge=0,ve=oe.length;ge<ve;ge++){const Se=oe[ge];$.addContentWidget(this._contentWidgets[Se])}oe=Object.keys(this._overlayWidgets);for(let ge=0,ve=oe.length;ge<ve;ge++){const Se=oe[ge];$.addOverlayWidget(this._overlayWidgets[Se])}oe=Object.keys(this._glyphMarginWidgets);for(let ge=0,ve=oe.length;ge<ve;ge++){const Se=oe[ge];$.addGlyphMarginWidget(this._glyphMarginWidgets[Se])}$.render(!1,!0),$.domNode.domNode.setAttribute(\"data-uri\",te.uri.toString())}this._modelData=new K(te,ee,$,re,q,z)}_createView(te){let q;this.isSimpleWidget?q={paste:($,re,oe,ge)=>{this._paste(\"keyboard\",$,re,oe,ge)},type:$=>{this._type(\"keyboard\",$)},compositionType:($,re,oe,ge)=>{this._compositionType(\"keyboard\",$,re,oe,ge)},startComposition:()=>{this._startComposition()},endComposition:()=>{this._endComposition(\"keyboard\")},cut:()=>{this._cut(\"keyboard\")}}:q={paste:($,re,oe,ge)=>{const ve={text:$,pasteOnNewLine:re,multicursorText:oe,mode:ge};this._commandService.executeCommand(\"paste\",ve)},type:$=>{const re={text:$};this._commandService.executeCommand(\"type\",re)},compositionType:($,re,oe,ge)=>{if(oe||ge){const ve={text:$,replacePrevCharCnt:re,replaceNextCharCnt:oe,positionDelta:ge};this._commandService.executeCommand(\"compositionType\",ve)}else{const ve={text:$,replaceCharCnt:re};this._commandService.executeCommand(\"replacePreviousChar\",ve)}},startComposition:()=>{this._commandService.executeCommand(\"compositionStart\",{})},endComposition:()=>{this._commandService.executeCommand(\"compositionEnd\",{})},cut:()=>{this._commandService.executeCommand(\"cut\",{})}};const z=new i.ViewUserInputEvents(te.coordinatesConverter);return z.onKeyDown=$=>this._onKeyDown.fire($),z.onKeyUp=$=>this._onKeyUp.fire($),z.onContextMenu=$=>this._onContextMenu.fire($),z.onMouseMove=$=>this._onMouseMove.fire($),z.onMouseLeave=$=>this._onMouseLeave.fire($),z.onMouseDown=$=>this._onMouseDown.fire($),z.onMouseUp=$=>this._onMouseUp.fire($),z.onMouseDrag=$=>this._onMouseDrag.fire($),z.onMouseDrop=$=>this._onMouseDrop.fire($),z.onMouseDropCanceled=$=>this._onMouseDropCanceled.fire($),z.onMouseWheel=$=>this._onMouseWheel.fire($),[new s.View(q,this._configuration,this._themeService.getColorTheme(),te,z,this._overflowWidgetsDomNode,this._instantiationService),!0]}_postDetachModelCleanup(te){te?.removeAllDecorationsWithOwnerId(this._id)}_detachModel(){if(!this._modelData)return null;const te=this._modelData.model,q=this._modelData.hasRealView?this._modelData.view.domNode.domNode:null;return this._modelData.dispose(),this._modelData=null,this._domElement.removeAttribute(\"data-mode-id\"),q&&this._domElement.contains(q)&&this._domElement.removeChild(q),this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._domElement.removeChild(this._bannerDomNode),te}_removeDecorationType(te){this._codeEditorService.removeDecorationType(te)}hasModel(){return this._modelData!==null}showDropIndicatorAt(te){const q=[{range:new u.Range(te.lineNumber,te.column,te.lineNumber,te.column),options:j.dropIntoEditorDecorationOptions}];this._dropIntoEditorDecorations.set(q),this.revealPosition(te,1)}removeDropIndicator(){this._dropIntoEditorDecorations.clear()}setContextValue(te,q){this._contextKeyService.createKey(te,q)}};e.CodeEditorWidget=G,G.dropIntoEditorDecorationOptions=d.ModelDecorationOptions.register({description:\"workbench-dnd-target\",className:\"dnd-target\"}),e.CodeEditorWidget=G=j=ke([fe(3,w.IInstantiationService),fe(4,C.ICodeEditorService),fe(5,v.ICommandService),fe(6,b.IContextKeyService),fe(7,M.IThemeService),fe(8,I.INotificationService),fe(9,P.IAccessibilityService),fe(10,N.ILanguageConfigurationService),fe(11,O.ILanguageFeaturesService)],G);class Z extends S.Disposable{constructor(te){super(),this._emitterOptions=te,this._onDidChangeToTrue=this._register(new D.Emitter(this._emitterOptions)),this.onDidChangeToTrue=this._onDidChangeToTrue.event,this._onDidChangeToFalse=this._register(new D.Emitter(this._emitterOptions)),this.onDidChangeToFalse=this._onDidChangeToFalse.event,this._value=0}setValue(te){const q=te?2:1;this._value!==q&&(this._value=q,this._value===2?this._onDidChangeToTrue.fire():this._value===1&&this._onDidChangeToFalse.fire())}}e.BooleanEventEmitter=Z;class J extends D.Emitter{constructor(te,q){super({deliveryQueue:q}),this._contributions=te}fire(te){this._contributions.onBeforeInteractionEvent(),super.fire(te)}}class X extends S.Disposable{constructor(te,q){super(),this._editor=te,q.createKey(\"editorId\",te.getId()),this._editorSimpleInput=o.EditorContextKeys.editorSimpleInput.bindTo(q),this._editorFocus=o.EditorContextKeys.focus.bindTo(q),this._textInputFocus=o.EditorContextKeys.textInputFocus.bindTo(q),this._editorTextFocus=o.EditorContextKeys.editorTextFocus.bindTo(q),this._editorTabMovesFocus=o.EditorContextKeys.tabMovesFocus.bindTo(q),this._editorReadonly=o.EditorContextKeys.readOnly.bindTo(q),this._inDiffEditor=o.EditorContextKeys.inDiffEditor.bindTo(q),this._editorColumnSelection=o.EditorContextKeys.columnSelection.bindTo(q),this._hasMultipleSelections=o.EditorContextKeys.hasMultipleSelections.bindTo(q),this._hasNonEmptySelection=o.EditorContextKeys.hasNonEmptySelection.bindTo(q),this._canUndo=o.EditorContextKeys.canUndo.bindTo(q),this._canRedo=o.EditorContextKeys.canRedo.bindTo(q),this._register(this._editor.onDidChangeConfiguration(()=>this._updateFromConfig())),this._register(this._editor.onDidChangeCursorSelection(()=>this._updateFromSelection())),this._register(this._editor.onDidFocusEditorWidget(()=>this._updateFromFocus())),this._register(this._editor.onDidBlurEditorWidget(()=>this._updateFromFocus())),this._register(this._editor.onDidFocusEditorText(()=>this._updateFromFocus())),this._register(this._editor.onDidBlurEditorText(()=>this._updateFromFocus())),this._register(this._editor.onDidChangeModel(()=>this._updateFromModel())),this._register(this._editor.onDidChangeConfiguration(()=>this._updateFromModel())),this._register(U.TabFocus.onDidChangeTabFocus(()=>this._editorTabMovesFocus.set(U.TabFocus.getTabFocusMode(\"editorFocus\")))),this._updateFromConfig(),this._updateFromSelection(),this._updateFromFocus(),this._updateFromModel(),this._editorSimpleInput.set(this._editor.isSimpleWidget)}_updateFromConfig(){const te=this._editor.getOptions();this._editorTabMovesFocus.set(U.TabFocus.getTabFocusMode(\"editorFocus\")),this._editorReadonly.set(te.get(89)),this._inDiffEditor.set(te.get(60)),this._editorColumnSelection.set(te.get(21))}_updateFromSelection(){const te=this._editor.getSelections();te?(this._hasMultipleSelections.set(te.length>1),this._hasNonEmptySelection.set(te.some(q=>!q.isEmpty()))):(this._hasMultipleSelections.reset(),this._hasNonEmptySelection.reset())}_updateFromFocus(){this._editorFocus.set(this._editor.hasWidgetFocus()&&!this._editor.isSimpleWidget),this._editorTextFocus.set(this._editor.hasTextFocus()&&!this._editor.isSimpleWidget),this._textInputFocus.set(this._editor.hasTextFocus())}_updateFromModel(){const te=this._editor.getModel();this._canUndo.set(!!(te&&te.canUndo())),this._canRedo.set(!!(te&&te.canRedo()))}}class H extends S.Disposable{constructor(te,q,z){super(),this._editor=te,this._contextKeyService=q,this._languageFeaturesService=z,this._langId=o.EditorContextKeys.languageId.bindTo(q),this._hasCompletionItemProvider=o.EditorContextKeys.hasCompletionItemProvider.bindTo(q),this._hasCodeActionsProvider=o.EditorContextKeys.hasCodeActionsProvider.bindTo(q),this._hasCodeLensProvider=o.EditorContextKeys.hasCodeLensProvider.bindTo(q),this._hasDefinitionProvider=o.EditorContextKeys.hasDefinitionProvider.bindTo(q),this._hasDeclarationProvider=o.EditorContextKeys.hasDeclarationProvider.bindTo(q),this._hasImplementationProvider=o.EditorContextKeys.hasImplementationProvider.bindTo(q),this._hasTypeDefinitionProvider=o.EditorContextKeys.hasTypeDefinitionProvider.bindTo(q),this._hasHoverProvider=o.EditorContextKeys.hasHoverProvider.bindTo(q),this._hasDocumentHighlightProvider=o.EditorContextKeys.hasDocumentHighlightProvider.bindTo(q),this._hasDocumentSymbolProvider=o.EditorContextKeys.hasDocumentSymbolProvider.bindTo(q),this._hasReferenceProvider=o.EditorContextKeys.hasReferenceProvider.bindTo(q),this._hasRenameProvider=o.EditorContextKeys.hasRenameProvider.bindTo(q),this._hasSignatureHelpProvider=o.EditorContextKeys.hasSignatureHelpProvider.bindTo(q),this._hasInlayHintsProvider=o.EditorContextKeys.hasInlayHintsProvider.bindTo(q),this._hasDocumentFormattingProvider=o.EditorContextKeys.hasDocumentFormattingProvider.bindTo(q),this._hasDocumentSelectionFormattingProvider=o.EditorContextKeys.hasDocumentSelectionFormattingProvider.bindTo(q),this._hasMultipleDocumentFormattingProvider=o.EditorContextKeys.hasMultipleDocumentFormattingProvider.bindTo(q),this._hasMultipleDocumentSelectionFormattingProvider=o.EditorContextKeys.hasMultipleDocumentSelectionFormattingProvider.bindTo(q),this._isInWalkThrough=o.EditorContextKeys.isInWalkThroughSnippet.bindTo(q);const ee=()=>this._update();this._register(te.onDidChangeModel(ee)),this._register(te.onDidChangeModelLanguage(ee)),this._register(z.completionProvider.onDidChange(ee)),this._register(z.codeActionProvider.onDidChange(ee)),this._register(z.codeLensProvider.onDidChange(ee)),this._register(z.definitionProvider.onDidChange(ee)),this._register(z.declarationProvider.onDidChange(ee)),this._register(z.implementationProvider.onDidChange(ee)),this._register(z.typeDefinitionProvider.onDidChange(ee)),this._register(z.hoverProvider.onDidChange(ee)),this._register(z.documentHighlightProvider.onDidChange(ee)),this._register(z.documentSymbolProvider.onDidChange(ee)),this._register(z.referenceProvider.onDidChange(ee)),this._register(z.renameProvider.onDidChange(ee)),this._register(z.documentFormattingEditProvider.onDidChange(ee)),this._register(z.documentRangeFormattingEditProvider.onDidChange(ee)),this._register(z.signatureHelpProvider.onDidChange(ee)),this._register(z.inlayHintsProvider.onDidChange(ee)),ee()}dispose(){super.dispose()}reset(){this._contextKeyService.bufferChangeEvents(()=>{this._langId.reset(),this._hasCompletionItemProvider.reset(),this._hasCodeActionsProvider.reset(),this._hasCodeLensProvider.reset(),this._hasDefinitionProvider.reset(),this._hasDeclarationProvider.reset(),this._hasImplementationProvider.reset(),this._hasTypeDefinitionProvider.reset(),this._hasHoverProvider.reset(),this._hasDocumentHighlightProvider.reset(),this._hasDocumentSymbolProvider.reset(),this._hasReferenceProvider.reset(),this._hasRenameProvider.reset(),this._hasDocumentFormattingProvider.reset(),this._hasDocumentSelectionFormattingProvider.reset(),this._hasSignatureHelpProvider.reset(),this._isInWalkThrough.reset()})}_update(){const te=this._editor.getModel();if(!te){this.reset();return}this._contextKeyService.bufferChangeEvents(()=>{this._langId.set(te.getLanguageId()),this._hasCompletionItemProvider.set(this._languageFeaturesService.completionProvider.has(te)),this._hasCodeActionsProvider.set(this._languageFeaturesService.codeActionProvider.has(te)),this._hasCodeLensProvider.set(this._languageFeaturesService.codeLensProvider.has(te)),this._hasDefinitionProvider.set(this._languageFeaturesService.definitionProvider.has(te)),this._hasDeclarationProvider.set(this._languageFeaturesService.declarationProvider.has(te)),this._hasImplementationProvider.set(this._languageFeaturesService.implementationProvider.has(te)),this._hasTypeDefinitionProvider.set(this._languageFeaturesService.typeDefinitionProvider.has(te)),this._hasHoverProvider.set(this._languageFeaturesService.hoverProvider.has(te)),this._hasDocumentHighlightProvider.set(this._languageFeaturesService.documentHighlightProvider.has(te)),this._hasDocumentSymbolProvider.set(this._languageFeaturesService.documentSymbolProvider.has(te)),this._hasReferenceProvider.set(this._languageFeaturesService.referenceProvider.has(te)),this._hasRenameProvider.set(this._languageFeaturesService.renameProvider.has(te)),this._hasSignatureHelpProvider.set(this._languageFeaturesService.signatureHelpProvider.has(te)),this._hasInlayHintsProvider.set(this._languageFeaturesService.inlayHintsProvider.has(te)),this._hasDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.has(te)||this._languageFeaturesService.documentRangeFormattingEditProvider.has(te)),this._hasDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.has(te)),this._hasMultipleDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.all(te).length+this._languageFeaturesService.documentRangeFormattingEditProvider.all(te).length>1),this._hasMultipleDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.all(te).length>1),this._isInWalkThrough.set(te.uri.scheme===f.Schemas.walkThroughSnippet)})}}e.EditorModeContext=H;class B extends S.Disposable{constructor(te){super(),this._onChange=this._register(new D.Emitter),this.onChange=this._onChange.event,this._hasFocus=!1,this._domFocusTracker=this._register(k.trackFocus(te)),this._register(this._domFocusTracker.onDidFocus(()=>{this._hasFocus=!0,this._onChange.fire(void 0)})),this._register(this._domFocusTracker.onDidBlur(()=>{this._hasFocus=!1,this._onChange.fire(void 0)}))}hasFocus(){return this._hasFocus}}class V{get length(){return this._decorationIds.length}constructor(te,q){this._editor=te,this._decorationIds=[],this._isChangingDecorations=!1,Array.isArray(q)&&q.length>0&&this.set(q)}onDidChange(te,q,z){return this._editor.onDidChangeModelDecorations(ee=>{this._isChangingDecorations||te.call(q,ee)},z)}getRange(te){return!this._editor.hasModel()||te>=this._decorationIds.length?null:this._editor.getModel().getDecorationRange(this._decorationIds[te])}getRanges(){if(!this._editor.hasModel())return[];const te=this._editor.getModel(),q=[];for(const z of this._decorationIds){const ee=te.getDecorationRange(z);ee&&q.push(ee)}return q}has(te){return this._decorationIds.includes(te.id)}clear(){this._decorationIds.length!==0&&this.set([])}set(te){try{this._isChangingDecorations=!0,this._editor.changeDecorations(q=>{this._decorationIds=q.deltaDecorations(this._decorationIds,te)})}finally{this._isChangingDecorations=!1}return this._decorationIds}}const Y=encodeURIComponent(\"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 3' enable-background='new 0 0 6 3' height='3' width='6'><g fill='\"),ie=encodeURIComponent(\"'><polygon points='5.5,0 2.5,3 1.1,3 4.1,0'/><polygon points='4,0 6,2 6,0.6 5.4,0'/><polygon points='0,2 1,3 2.4,3 0,0.6'/></g></svg>\");function ae(ue){return Y+encodeURIComponent(ue.toString())+ie}const ce=encodeURIComponent('<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"3\" width=\"12\"><g fill=\"'),de=encodeURIComponent('\"><circle cx=\"1\" cy=\"1\" r=\"1\"/><circle cx=\"5\" cy=\"1\" r=\"1\"/><circle cx=\"9\" cy=\"1\" r=\"1\"/></g></svg>');function he(ue){return ce+encodeURIComponent(ue.toString())+de}(0,M.registerThemingParticipant)((ue,te)=>{const q=ue.getColor(p.editorErrorForeground);q&&te.addRule(`.monaco-editor .squiggly-error { background: url(\"data:image/svg+xml,${ae(q)}\") repeat-x bottom left; }`);const z=ue.getColor(p.editorWarningForeground);z&&te.addRule(`.monaco-editor .squiggly-warning { background: url(\"data:image/svg+xml,${ae(z)}\") repeat-x bottom left; }`);const ee=ue.getColor(p.editorInfoForeground);ee&&te.addRule(`.monaco-editor .squiggly-info { background: url(\"data:image/svg+xml,${ae(ee)}\") repeat-x bottom left; }`);const $=ue.getColor(p.editorHintForeground);$&&te.addRule(`.monaco-editor .squiggly-hint { background: url(\"data:image/svg+xml,${he($)}\") no-repeat bottom left; }`);const re=ue.getColor(l.editorUnnecessaryCodeOpacity);re&&te.addRule(`.monaco-editor.showUnused .squiggly-inline-unnecessary { opacity: ${re.rgba.a}; }`)})}),define(ne[254],se([1,0,7,35,89,173,130,85,13,19,25,9,6,55,2,26,59,200,16,33,108,161,237,354,617,348,36,12,5,93,148,21,40,127,95,67,212,606,96,15,57,8,157,43,77,31,62,23,433]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P,x,T,A,N,F,O,W,U,j,R,K,G,Z,J,X,H){\"use strict\";var B;Object.defineProperty(e,\"__esModule\",{value:!0}),e.DiffEditorWidget=e.diffEditorWidgetTtPolicy=void 0;class V{constructor(me,le){this._contextMenuService=me,this._clipboardService=le,this._zones=[],this._inlineDiffMargins=[],this._zonesMap={},this._decorations=[]}getForeignViewZones(me){return me.filter(le=>!this._zonesMap[String(le.id)])}clean(me){this._zones.length>0&&me.changeViewZones(le=>{for(const pe of this._zones)le.removeZone(pe)}),this._zones=[],this._zonesMap={},me.changeDecorations(le=>{this._decorations=le.deltaDecorations(this._decorations,[])})}apply(me,le,pe,Ce){const be=Ce?o.StableEditorScrollState.capture(me):null;me.changeViewZones(Ie=>{var Ne;for(const Re of this._zones)Ie.removeZone(Re);for(const Re of this._inlineDiffMargins)Re.dispose();this._zones=[],this._zonesMap={},this._inlineDiffMargins=[];for(let Re=0,Ve=pe.zones.length;Re<Ve;Re++){const ze=pe.zones[Re];ze.suppressMouseDown=!0,ze.showInHiddenAreas=!0;const We=Ie.addZone(ze);this._zones.push(We),this._zonesMap[String(We)]=!0,pe.zones[Re].diff&&ze.marginDomNode&&(ze.suppressMouseDown=!1,((Ne=pe.zones[Re].diff)===null||Ne===void 0?void 0:Ne.originalModel.getValueLength())!==0&&this._inlineDiffMargins.push(new m.InlineDiffMargin(We,ze.marginDomNode,me,pe.zones[Re].diff,this._contextMenuService,this._clipboardService)))}}),be?.restore(me),me.changeDecorations(Ie=>{this._decorations=Ie.deltaDecorations(this._decorations,pe.decorations)}),le?.setZones(pe.overviewZones)}}let Y=0;const ie=(0,X.registerIcon)(\"diff-insert\",C.Codicon.add,O.localize(0,null)),ae=(0,X.registerIcon)(\"diff-remove\",C.Codicon.remove,O.localize(1,null));e.diffEditorWidgetTtPolicy=(0,y.createTrustedTypesPolicy)(\"diffEditorWidget\",{createHTML:_e=>_e});const ce=O.localize(2,null);let de=B=class extends t.Disposable{constructor(me,le,pe,Ce,be,Ie,Ne,Re,Ve,ze,We){super(),this._editorProgressService=We,this._onDidDispose=this._register(new i.Emitter),this.onDidDispose=this._onDidDispose.event,this._onDidChangeModel=this._register(new i.Emitter),this.onDidChangeModel=this._onDidChangeModel.event,this._onDidUpdateDiff=this._register(new i.Emitter),this.onDidUpdateDiff=this._onDidUpdateDiff.event,this._onDidContentSizeChange=this._register(new i.Emitter),this._lastOriginalWarning=null,this._lastModifiedWarning=null,Ne.willCreateDiffEditor(),this._documentDiffProvider=this._register(Ie.createInstance(v.WorkerBasedDocumentDiffProvider,le)),this._register(this._documentDiffProvider.onDidChange(Oe=>this._beginUpdateDecorationsSoon())),this._codeEditorService=Ne,this._contextKeyService=this._register(be.createScoped(me)),this._instantiationService=Ie.createChild(new K.ServiceCollection([U.IContextKeyService,this._contextKeyService])),this._contextKeyService.createKey(\"isInDiffEditor\",!0),this._themeService=Re,this._notificationService=Ve,this._id=++Y,this._state=0,this._updatingDiffProgress=null,this._domElement=me,le=le||{},this._options=Pe(le,{enableSplitViewResizing:!0,splitViewDefaultRatio:.5,renderSideBySide:!0,renderMarginRevertIcon:!0,maxComputationTime:5e3,maxFileSize:50,ignoreTrimWhitespace:!0,renderIndicators:!0,originalEditable:!1,diffCodeLens:!1,renderOverviewRuler:!0,diffWordWrap:\"inherit\",diffAlgorithm:\"advanced\",accessibilityVerbose:!1,experimental:{showEmptyDecorations:!1,showMoves:!1},hideUnchangedRegions:{enabled:!1,contextLineCount:0,minimumLineCount:0,revealLineCount:0},isInEmbeddedEditor:!1,onlyShowAccessibleDiffViewer:!1,renderSideBySideInlineBreakpoint:0,useInlineViewWhenSpaceIsLimited:!1}),this.isEmbeddedDiffEditorKey=P.EditorContextKeys.isEmbeddedDiffEditor.bindTo(this._contextKeyService),this.isEmbeddedDiffEditorKey.set(typeof le.isInEmbeddedEditor<\"u\"?le.isInEmbeddedEditor:!1),this._updateDecorationsRunner=this._register(new _.RunOnceScheduler(()=>this._updateDecorations(),0)),this._containerDomElement=document.createElement(\"div\"),this._containerDomElement.className=B._getClassName(this._themeService.getColorTheme(),this._options.renderSideBySide),this._containerDomElement.style.position=\"relative\",this._containerDomElement.style.height=\"100%\",this._domElement.appendChild(this._containerDomElement),this._overviewViewportDomElement=(0,k.createFastDomNode)(document.createElement(\"div\")),this._overviewViewportDomElement.setClassName(\"diffViewport\"),this._overviewViewportDomElement.setPosition(\"absolute\"),this._overviewDomElement=document.createElement(\"div\"),this._overviewDomElement.className=\"diffOverview\",this._overviewDomElement.style.position=\"absolute\",this._overviewDomElement.appendChild(this._overviewViewportDomElement.domNode),this._register(L.addStandardDisposableListener(this._overviewDomElement,L.EventType.POINTER_DOWN,Oe=>{this._modifiedEditor.delegateVerticalScrollbarPointerDown(Oe)})),this._register(L.addDisposableListener(this._overviewDomElement,L.EventType.MOUSE_WHEEL,Oe=>{this._modifiedEditor.delegateScrollFromMouseWheelEvent(Oe)},{passive:!1})),this._options.renderOverviewRuler&&this._containerDomElement.appendChild(this._overviewDomElement),this._originalDomNode=document.createElement(\"div\"),this._originalDomNode.className=\"editor original\",this._originalDomNode.style.position=\"absolute\",this._originalDomNode.style.height=\"100%\",this._containerDomElement.appendChild(this._originalDomNode),this._modifiedDomNode=document.createElement(\"div\"),this._modifiedDomNode.className=\"editor modified\",this._modifiedDomNode.style.position=\"absolute\",this._modifiedDomNode.style.height=\"100%\",this._containerDomElement.appendChild(this._modifiedDomNode),this._beginUpdateDecorationsTimeout=-1,this._currentlyChangingViewZones=!1,this._diffComputationToken=0,this._originalEditorState=new V(ze,Ce),this._modifiedEditorState=new V(ze,Ce),this._isVisible=!0,this._isHandlingScrollEvent=!1,this._elementSizeObserver=this._register(new h.ElementSizeObserver(this._containerDomElement,le.dimension)),this._register(this._elementSizeObserver.onDidChange(()=>this._onDidContainerSizeChanged())),le.automaticLayout&&this._elementSizeObserver.startObserving(),this._diffComputationResult=null,this._originalEditor=this._createLeftHandSideEditor(le,pe.originalEditor||{}),this._modifiedEditor=this._createRightHandSideEditor(le,pe.modifiedEditor||{}),this._originalOverviewRuler=null,this._modifiedOverviewRuler=null,this._reviewPane=Ie.createInstance(p.DiffReview,this),this._containerDomElement.appendChild(this._reviewPane.domNode.domNode),this._containerDomElement.appendChild(this._reviewPane.shadow.domNode),this._containerDomElement.appendChild(this._reviewPane.actionBarContainer.domNode),this._options.renderSideBySide?this._setStrategy(new ee(this._createDataSource(),this._options.enableSplitViewResizing,this._options.splitViewDefaultRatio)):this._setStrategy(new re(this._createDataSource(),this._options.enableSplitViewResizing)),this._register(Re.onDidColorThemeChange(Oe=>{this._strategy&&this._strategy.applyColors(Oe)&&this._updateDecorationsRunner.schedule(),this._containerDomElement.className=B._getClassName(this._themeService.getColorTheme(),this._options.renderSideBySide)}));const qe=r.EditorExtensionsRegistry.getDiffEditorContributions();for(const Oe of qe)try{this._register(Ie.createInstance(Oe.ctor,this))}catch(Ge){(0,s.onUnexpectedError)(Ge)}this._codeEditorService.addDiffEditor(this)}_setState(me){this._state!==me&&(this._state=me,this._updatingDiffProgress&&(this._updatingDiffProgress.done(),this._updatingDiffProgress=null),this._state===1&&(this._updatingDiffProgress=this._editorProgressService.show(!0,1e3)))}accessibleDiffViewerNext(){this._reviewPane.next()}accessibleDiffViewerPrev(){this._reviewPane.prev()}static _getClassName(me,le){let pe=\"monaco-diff-editor monaco-editor-background \";return le&&(pe+=\"side-by-side \"),pe+=(0,H.getThemeTypeSelector)(me.type),pe}_disposeOverviewRulers(){this._originalOverviewRuler&&(this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode()),this._originalOverviewRuler.dispose(),this._originalOverviewRuler=null),this._modifiedOverviewRuler&&(this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode()),this._modifiedOverviewRuler.dispose(),this._modifiedOverviewRuler=null)}_createOverviewRulers(){this._options.renderOverviewRuler&&(f.ok(!this._originalOverviewRuler&&!this._modifiedOverviewRuler),this._originalEditor.hasModel()&&(this._originalOverviewRuler=this._originalEditor.createOverviewRuler(\"original diffOverviewRuler\"),this._overviewDomElement.appendChild(this._originalOverviewRuler.getDomNode())),this._modifiedEditor.hasModel()&&(this._modifiedOverviewRuler=this._modifiedEditor.createOverviewRuler(\"modified diffOverviewRuler\"),this._overviewDomElement.appendChild(this._modifiedOverviewRuler.getDomNode())),this._layoutOverviewRulers())}_createLeftHandSideEditor(me,le){const pe=this._createInnerEditor(this._instantiationService,this._originalDomNode,this._adjustOptionsForLeftHandSide(me),le);this._register(pe.onDidScrollChange(be=>{this._isHandlingScrollEvent||!be.scrollTopChanged&&!be.scrollLeftChanged&&!be.scrollHeightChanged||(this._isHandlingScrollEvent=!0,this._modifiedEditor.setScrollPosition({scrollLeft:be.scrollLeft,scrollTop:be.scrollTop}),this._isHandlingScrollEvent=!1,this._layoutOverviewViewport())})),this._register(pe.onDidChangeViewZones(()=>{this._onViewZonesChanged()})),this._register(pe.onDidChangeConfiguration(be=>{pe.getModel()&&(be.hasChanged(49)&&this._updateDecorationsRunner.schedule(),be.hasChanged(143)&&(this._updateDecorationsRunner.cancel(),this._updateDecorations()))})),this._register(pe.onDidChangeHiddenAreas(()=>{this._updateDecorationsRunner.cancel(),this._updateDecorations()})),this._register(pe.onDidChangeModelContent(()=>{this._isVisible&&this._beginUpdateDecorationsSoon()}));const Ce=this._contextKeyService.createKey(\"isInDiffLeftEditor\",pe.hasWidgetFocus());return this._register(pe.onDidFocusEditorWidget(()=>Ce.set(!0))),this._register(pe.onDidBlurEditorWidget(()=>Ce.set(!1))),this._register(pe.onDidContentSizeChange(be=>{const Ie=this._originalEditor.getContentWidth()+this._modifiedEditor.getContentWidth()+B.ONE_OVERVIEW_WIDTH,Ne=Math.max(this._modifiedEditor.getContentHeight(),this._originalEditor.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:Ne,contentWidth:Ie,contentHeightChanged:be.contentHeightChanged,contentWidthChanged:be.contentWidthChanged})})),pe}_createRightHandSideEditor(me,le){const pe=this._createInnerEditor(this._instantiationService,this._modifiedDomNode,this._adjustOptionsForRightHandSide(me),le);this._register(pe.onDidScrollChange(be=>{this._isHandlingScrollEvent||!be.scrollTopChanged&&!be.scrollLeftChanged&&!be.scrollHeightChanged||(this._isHandlingScrollEvent=!0,this._originalEditor.setScrollPosition({scrollLeft:be.scrollLeft,scrollTop:be.scrollTop}),this._isHandlingScrollEvent=!1,this._layoutOverviewViewport())})),this._register(pe.onDidChangeViewZones(()=>{this._onViewZonesChanged()})),this._register(pe.onDidChangeConfiguration(be=>{pe.getModel()&&(be.hasChanged(49)&&this._updateDecorationsRunner.schedule(),be.hasChanged(143)&&(this._updateDecorationsRunner.cancel(),this._updateDecorations()))})),this._register(pe.onDidChangeHiddenAreas(()=>{this._updateDecorationsRunner.cancel(),this._updateDecorations()})),this._register(pe.onDidChangeModelContent(()=>{this._isVisible&&this._beginUpdateDecorationsSoon()})),this._register(pe.onDidChangeModelOptions(be=>{be.tabSize&&this._updateDecorationsRunner.schedule()}));const Ce=this._contextKeyService.createKey(\"isInDiffRightEditor\",pe.hasWidgetFocus());return this._register(pe.onDidFocusEditorWidget(()=>Ce.set(!0))),this._register(pe.onDidBlurEditorWidget(()=>Ce.set(!1))),this._register(pe.onDidContentSizeChange(be=>{const Ie=this._originalEditor.getContentWidth()+this._modifiedEditor.getContentWidth()+B.ONE_OVERVIEW_WIDTH,Ne=Math.max(this._modifiedEditor.getContentHeight(),this._originalEditor.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:Ne,contentWidth:Ie,contentHeightChanged:be.contentHeightChanged,contentWidthChanged:be.contentWidthChanged})})),this._register(pe.onMouseDown(be=>{var Ie,Ne;if(!be.event.rightButton&&be.target.position&&(!((Ie=be.target.element)===null||Ie===void 0)&&Ie.className.includes(\"arrow-revert-change\"))){const Re=be.target.position.lineNumber,Ve=be.target,ze=(Ne=this._diffComputationResult)===null||Ne===void 0?void 0:Ne.changes.find(We=>Ve?.detail.afterLineNumber===We.modifiedStartLineNumber||We.modifiedEndLineNumber>0&&We.modifiedStartLineNumber===Re);ze&&this.revertChange(ze),be.event.stopPropagation(),this._updateDecorations();return}})),pe}revertChange(me){const le=this._modifiedEditor,pe=this._originalEditor.getModel(),Ce=this._modifiedEditor.getModel();if(!pe||!Ce||!le)return;const be=me.originalEndLineNumber>0?new E.Range(me.originalStartLineNumber,1,me.originalEndLineNumber,pe.getLineMaxColumn(me.originalEndLineNumber)):null,Ie=be?pe.getValueInRange(be):null,Ne=me.modifiedEndLineNumber>0?new E.Range(me.modifiedStartLineNumber,1,me.modifiedEndLineNumber,Ce.getLineMaxColumn(me.modifiedEndLineNumber)):null,Re=Ce.getEOL();if(me.originalEndLineNumber===0&&Ne){let Ve=Ne;me.modifiedStartLineNumber>1?Ve=Ne.setStartPosition(me.modifiedStartLineNumber-1,Ce.getLineMaxColumn(me.modifiedStartLineNumber-1)):me.modifiedEndLineNumber<Ce.getLineCount()&&(Ve=Ne.setEndPosition(me.modifiedEndLineNumber+1,1)),le.executeEdits(\"diffEditor\",[{range:Ve,text:\"\"}])}else if(me.modifiedEndLineNumber===0&&Ie!==null){const Ve=me.modifiedStartLineNumber<Ce.getLineCount()?new w.Position(me.modifiedStartLineNumber+1,1):new w.Position(me.modifiedStartLineNumber,Ce.getLineMaxColumn(me.modifiedStartLineNumber));le.executeEdits(\"diffEditor\",[{range:E.Range.fromPositions(Ve,Ve),text:me.modifiedStartLineNumber<Ce.getLineCount()?Ie+Re:Re+Ie}])}else Ne&&Ie!==null&&le.executeEdits(\"diffEditor\",[{range:Ne,text:Ie}])}_createInnerEditor(me,le,pe,Ce){return me.createInstance(d.CodeEditorWidget,le,pe,Ce)}dispose(){this._codeEditorService.removeDiffEditor(this),this._beginUpdateDecorationsTimeout!==-1&&(window.clearTimeout(this._beginUpdateDecorationsTimeout),this._beginUpdateDecorationsTimeout=-1),this._cleanViewZonesAndDecorations(),this._originalOverviewRuler&&(this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode()),this._originalOverviewRuler.dispose()),this._modifiedOverviewRuler&&(this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode()),this._modifiedOverviewRuler.dispose()),this._overviewDomElement.removeChild(this._overviewViewportDomElement.domNode),this._options.renderOverviewRuler&&this._containerDomElement.removeChild(this._overviewDomElement),this._containerDomElement.removeChild(this._originalDomNode),this._originalEditor.dispose(),this._containerDomElement.removeChild(this._modifiedDomNode),this._modifiedEditor.dispose(),this._strategy.dispose(),this._containerDomElement.removeChild(this._reviewPane.domNode.domNode),this._containerDomElement.removeChild(this._reviewPane.shadow.domNode),this._containerDomElement.removeChild(this._reviewPane.actionBarContainer.domNode),this._reviewPane.dispose(),this._domElement.removeChild(this._containerDomElement),this._onDidDispose.fire(),super.dispose()}getId(){return this.getEditorType()+\":\"+this._id}getEditorType(){return M.EditorType.IDiffEditor}getLineChanges(){return this._diffComputationResult?this._diffComputationResult.changes:null}getOriginalEditor(){return this._originalEditor}getModifiedEditor(){return this._modifiedEditor}updateOptions(me){const le=Pe(me,this._options),pe=Fe(this._options,le);this._options=le,this.isEmbeddedDiffEditorKey.set(typeof me.isInEmbeddedEditor<\"u\"?me.isInEmbeddedEditor:!1);const Ce=pe.ignoreTrimWhitespace||pe.renderIndicators||pe.renderMarginRevertIcon,be=this._isVisible&&(pe.maxComputationTime||pe.maxFileSize);this._documentDiffProvider.setOptions(le),Ce?this._beginUpdateDecorations():be&&this._beginUpdateDecorationsSoon(),this._modifiedEditor.updateOptions(this._adjustOptionsForRightHandSide(me)),this._originalEditor.updateOptions(this._adjustOptionsForLeftHandSide(me)),this._strategy.setEnableSplitViewResizing(this._options.enableSplitViewResizing,this._options.splitViewDefaultRatio),pe.renderSideBySide&&(this._options.renderSideBySide?this._setStrategy(new ee(this._createDataSource(),this._options.enableSplitViewResizing,this._options.splitViewDefaultRatio)):this._setStrategy(new re(this._createDataSource(),this._options.enableSplitViewResizing)),this._containerDomElement.className=B._getClassName(this._themeService.getColorTheme(),this._options.renderSideBySide)),pe.renderOverviewRuler&&(this._options.renderOverviewRuler?this._containerDomElement.appendChild(this._overviewDomElement):this._containerDomElement.removeChild(this._overviewDomElement))}getModel(){return{original:this._originalEditor.getModel(),modified:this._modifiedEditor.getModel()}}createViewModel(me){return{model:me,waitForDiff(){return we(this,void 0,void 0,function*(){})}}}setModel(me){if(me&&\"model\"in me&&(me=me.model),me&&(!me.original||!me.modified))throw new Error(me.original?\"DiffEditorWidget.setModel: Modified model is null\":\"DiffEditorWidget.setModel: Original model is null\");this._cleanViewZonesAndDecorations(),this._disposeOverviewRulers(),this._originalEditor.setModel(me?me.original:null),this._modifiedEditor.setModel(me?me.modified:null),this._updateDecorationsRunner.cancel(),me&&(this._originalEditor.setScrollTop(0),this._modifiedEditor.setScrollTop(0)),this._diffComputationResult=null,this._diffComputationToken++,this._setState(0),me&&(this._createOverviewRulers(),this._beginUpdateDecorations()),this._layoutOverviewViewport(),this._onDidChangeModel.fire(),this._diffNavigator=this._register(this._instantiationService.createInstance(l.DiffNavigator,this,{alwaysRevealFirst:!1,findResultLoop:this.getModifiedEditor().getOption(40).loop}))}getContainerDomNode(){return this._domElement}getVisibleColumnFromPosition(me){return this._modifiedEditor.getVisibleColumnFromPosition(me)}getPosition(){return this._modifiedEditor.getPosition()}setPosition(me,le=\"api\"){this._modifiedEditor.setPosition(me,le)}revealLine(me,le=0){this._modifiedEditor.revealLine(me,le)}revealLineInCenter(me,le=0){this._modifiedEditor.revealLineInCenter(me,le)}revealLineInCenterIfOutsideViewport(me,le=0){this._modifiedEditor.revealLineInCenterIfOutsideViewport(me,le)}revealLineNearTop(me,le=0){this._modifiedEditor.revealLineNearTop(me,le)}revealPosition(me,le=0){this._modifiedEditor.revealPosition(me,le)}revealPositionInCenter(me,le=0){this._modifiedEditor.revealPositionInCenter(me,le)}revealPositionInCenterIfOutsideViewport(me,le=0){this._modifiedEditor.revealPositionInCenterIfOutsideViewport(me,le)}revealPositionNearTop(me,le=0){this._modifiedEditor.revealPositionNearTop(me,le)}getSelection(){return this._modifiedEditor.getSelection()}getSelections(){return this._modifiedEditor.getSelections()}setSelection(me,le=\"api\"){this._modifiedEditor.setSelection(me,le)}setSelections(me,le=\"api\"){this._modifiedEditor.setSelections(me,le)}revealLines(me,le,pe=0){this._modifiedEditor.revealLines(me,le,pe)}revealLinesInCenter(me,le,pe=0){this._modifiedEditor.revealLinesInCenter(me,le,pe)}revealLinesInCenterIfOutsideViewport(me,le,pe=0){this._modifiedEditor.revealLinesInCenterIfOutsideViewport(me,le,pe)}revealLinesNearTop(me,le,pe=0){this._modifiedEditor.revealLinesNearTop(me,le,pe)}revealRange(me,le=0,pe=!1,Ce=!0){this._modifiedEditor.revealRange(me,le,pe,Ce)}revealRangeInCenter(me,le=0){this._modifiedEditor.revealRangeInCenter(me,le)}revealRangeInCenterIfOutsideViewport(me,le=0){this._modifiedEditor.revealRangeInCenterIfOutsideViewport(me,le)}revealRangeNearTop(me,le=0){this._modifiedEditor.revealRangeNearTop(me,le)}revealRangeNearTopIfOutsideViewport(me,le=0){this._modifiedEditor.revealRangeNearTopIfOutsideViewport(me,le)}revealRangeAtTop(me,le=0){this._modifiedEditor.revealRangeAtTop(me,le)}getSupportedActions(){return this._modifiedEditor.getSupportedActions()}focus(){this._modifiedEditor.focus()}trigger(me,le,pe){this._modifiedEditor.trigger(me,le,pe)}createDecorationsCollection(me){return this._modifiedEditor.createDecorationsCollection(me)}changeDecorations(me){return this._modifiedEditor.changeDecorations(me)}saveViewState(){const me=this._originalEditor.saveViewState(),le=this._modifiedEditor.saveViewState();return{original:me,modified:le}}restoreViewState(me){if(me&&me.original&&me.modified){const le=me;this._originalEditor.restoreViewState(le.original),this._modifiedEditor.restoreViewState(le.modified)}}layout(me){this._elementSizeObserver.observe(me)}hasTextFocus(){return this._originalEditor.hasTextFocus()||this._modifiedEditor.hasTextFocus()}_onDidContainerSizeChanged(){this._doLayout()}_getReviewHeight(){return this._reviewPane.isVisible()?this._elementSizeObserver.getHeight():0}_layoutOverviewRulers(){if(!this._options.renderOverviewRuler||!this._originalOverviewRuler||!this._modifiedOverviewRuler)return;const me=this._elementSizeObserver.getHeight(),le=this._getReviewHeight(),pe=B.ENTIRE_DIFF_OVERVIEW_WIDTH-2*B.ONE_OVERVIEW_WIDTH;this._modifiedEditor.getLayoutInfo()&&(this._originalOverviewRuler.setLayout({top:0,width:B.ONE_OVERVIEW_WIDTH,right:pe+B.ONE_OVERVIEW_WIDTH,height:me-le}),this._modifiedOverviewRuler.setLayout({top:0,right:0,width:B.ONE_OVERVIEW_WIDTH,height:me-le}))}_onViewZonesChanged(){this._currentlyChangingViewZones||this._updateDecorationsRunner.schedule()}_beginUpdateDecorationsSoon(){this._beginUpdateDecorationsTimeout!==-1&&(window.clearTimeout(this._beginUpdateDecorationsTimeout),this._beginUpdateDecorationsTimeout=-1),this._beginUpdateDecorationsTimeout=window.setTimeout(()=>this._beginUpdateDecorations(),B.UPDATE_DIFF_DECORATIONS_DELAY)}static _equals(me,le){return!me&&!le?!0:!me||!le?!1:me.toString()===le.toString()}_beginUpdateDecorations(){this._beginUpdateDecorationsTimeout!==-1&&(window.clearTimeout(this._beginUpdateDecorationsTimeout),this._beginUpdateDecorationsTimeout=-1);const me=this._originalEditor.getModel(),le=this._modifiedEditor.getModel();if(!me||!le)return;this._diffComputationToken++;const pe=this._diffComputationToken,Ce=this._options.maxFileSize*1024*1024,be=Ie=>{const Ne=Ie.getValueLength();return Ce===0||Ne<=Ce};if(!be(me)||!be(le)){(!B._equals(me.uri,this._lastOriginalWarning)||!B._equals(le.uri,this._lastModifiedWarning))&&(this._lastOriginalWarning=me.uri,this._lastModifiedWarning=le.uri,this._notificationService.warn(O.localize(3,null)));return}this._setState(1),this._documentDiffProvider.computeDiff(me,le,{ignoreTrimWhitespace:this._options.ignoreTrimWhitespace,maxComputationTimeMs:this._options.maxComputationTime,computeMoves:!1},g.CancellationToken.None).then(Ie=>{pe===this._diffComputationToken&&me===this._originalEditor.getModel()&&le===this._modifiedEditor.getModel()&&(this._setState(2),this._diffComputationResult={identical:Ie.identical,quitEarly:Ie.quitEarly,changes2:Ie.changes,changes:Ie.changes.map(Ne=>{let Re,Ve,ze,We,qe=Ne.innerChanges;return Ne.originalRange.isEmpty?(Re=Ne.originalRange.startLineNumber-1,Ve=0,qe=void 0):(Re=Ne.originalRange.startLineNumber,Ve=Ne.originalRange.endLineNumberExclusive-1),Ne.modifiedRange.isEmpty?(ze=Ne.modifiedRange.startLineNumber-1,We=0,qe=void 0):(ze=Ne.modifiedRange.startLineNumber,We=Ne.modifiedRange.endLineNumberExclusive-1),{originalStartLineNumber:Re,originalEndLineNumber:Ve,modifiedStartLineNumber:ze,modifiedEndLineNumber:We,charChanges:qe?.map(Oe=>({originalStartLineNumber:Oe.originalRange.startLineNumber,originalStartColumn:Oe.originalRange.startColumn,originalEndLineNumber:Oe.originalRange.endLineNumber,originalEndColumn:Oe.originalRange.endColumn,modifiedStartLineNumber:Oe.modifiedRange.startLineNumber,modifiedStartColumn:Oe.modifiedRange.startColumn,modifiedEndLineNumber:Oe.modifiedRange.endLineNumber,modifiedEndColumn:Oe.modifiedRange.endColumn}))}})},this._updateDecorationsRunner.schedule(),this._onDidUpdateDiff.fire())},Ie=>{pe===this._diffComputationToken&&me===this._originalEditor.getModel()&&le===this._modifiedEditor.getModel()&&(this._setState(2),this._diffComputationResult=null,this._updateDecorationsRunner.schedule())})}_cleanViewZonesAndDecorations(){this._originalEditorState.clean(this._originalEditor),this._modifiedEditorState.clean(this._modifiedEditor)}_updateDecorations(){if(!this._originalEditor.getModel()||!this._modifiedEditor.getModel())return;const me=this._diffComputationResult?this._diffComputationResult.changes:[],le=this._originalEditorState.getForeignViewZones(this._originalEditor.getWhitespaces()),pe=this._modifiedEditorState.getForeignViewZones(this._modifiedEditor.getWhitespaces()),Ce=this._options.renderMarginRevertIcon&&!this._modifiedEditor.getOption(89),be=this._strategy.getEditorsDiffDecorations(me,this._options.ignoreTrimWhitespace,this._options.renderIndicators,Ce,le,pe);try{this._currentlyChangingViewZones=!0,this._originalEditorState.apply(this._originalEditor,this._originalOverviewRuler,be.original,!1),this._modifiedEditorState.apply(this._modifiedEditor,this._modifiedOverviewRuler,be.modified,!0)}finally{this._currentlyChangingViewZones=!1}}_adjustOptionsForSubEditor(me){const le=Object.assign({},me);return le.inDiffEditor=!0,le.automaticLayout=!1,le.scrollbar=Object.assign({},le.scrollbar||{}),le.scrollbar.vertical=\"visible\",le.folding=!1,le.codeLens=this._options.diffCodeLens,le.fixedOverflowWidgets=!0,le.minimap=Object.assign({},le.minimap||{}),le.minimap.enabled=!1,le}_adjustOptionsForLeftHandSide(me){const le=this._adjustOptionsForSubEditor(me);return this._options.renderSideBySide?le.wordWrapOverride1=this._options.diffWordWrap:(le.wordWrapOverride1=\"off\",le.wordWrapOverride2=\"off\",le.stickyScroll={enabled:!1}),me.originalAriaLabel&&(le.ariaLabel=me.originalAriaLabel),this._updateAriaLabel(le),le.readOnly=!this._options.originalEditable,le.dropIntoEditor={enabled:!le.readOnly},le.extraEditorClassName=\"original-in-monaco-diff-editor\",Object.assign(Object.assign({},le),{dimension:{height:0,width:0}})}_updateAriaLabel(me){var le;let pe=(le=me.ariaLabel)!==null&&le!==void 0?le:\"\";this._options.accessibilityVerbose?pe+=ce:pe&&(pe=pe.replaceAll(ce,\"\")),me.ariaLabel=pe}_adjustOptionsForRightHandSide(me){const le=this._adjustOptionsForSubEditor(me);return me.modifiedAriaLabel&&(le.ariaLabel=me.modifiedAriaLabel),this._updateAriaLabel(le),le.wordWrapOverride1=this._options.diffWordWrap,le.revealHorizontalRightPadding=b.EditorOptions.revealHorizontalRightPadding.defaultValue+B.ENTIRE_DIFF_OVERVIEW_WIDTH,le.scrollbar.verticalHasArrows=!1,le.extraEditorClassName=\"modified-in-monaco-diff-editor\",Object.assign(Object.assign({},le),{dimension:{height:0,width:0}})}doLayout(){this._elementSizeObserver.observe(),this._doLayout()}_doLayout(){const me=this._elementSizeObserver.getWidth(),le=this._elementSizeObserver.getHeight(),pe=this._getReviewHeight(),Ce=this._strategy.layout();this._originalDomNode.style.width=Ce+\"px\",this._originalDomNode.style.left=\"0px\",this._modifiedDomNode.style.width=me-Ce-B.ENTIRE_DIFF_OVERVIEW_WIDTH+\"px\",this._modifiedDomNode.style.left=Ce+\"px\",this._overviewDomElement.style.top=\"0px\",this._overviewDomElement.style.height=le-pe+\"px\",this._overviewDomElement.style.width=B.ENTIRE_DIFF_OVERVIEW_WIDTH+\"px\",this._overviewDomElement.style.left=me-B.ENTIRE_DIFF_OVERVIEW_WIDTH+\"px\",this._overviewViewportDomElement.setWidth(B.ENTIRE_DIFF_OVERVIEW_WIDTH),this._overviewViewportDomElement.setHeight(30),this._originalEditor.layout({width:Ce,height:le-pe}),this._modifiedEditor.layout({width:me-Ce-(this._options.renderOverviewRuler?B.ENTIRE_DIFF_OVERVIEW_WIDTH:0),height:le-pe}),(this._originalOverviewRuler||this._modifiedOverviewRuler)&&this._layoutOverviewRulers(),this._reviewPane.layout(le-pe,me,pe),this._layoutOverviewViewport()}_layoutOverviewViewport(){const me=this._computeOverviewViewport();me?(this._overviewViewportDomElement.setTop(me.top),this._overviewViewportDomElement.setHeight(me.height)):(this._overviewViewportDomElement.setTop(0),this._overviewViewportDomElement.setHeight(0))}_computeOverviewViewport(){const me=this._modifiedEditor.getLayoutInfo();if(!me)return null;const le=this._modifiedEditor.getScrollTop(),pe=this._modifiedEditor.getScrollHeight(),Ce=Math.max(0,me.height),be=Math.max(0,Ce-2*0),Ie=pe>0?be/pe:0,Ne=Math.max(0,Math.floor(me.height*Ie)),Re=Math.floor(le*Ie);return{height:Ne,top:Re}}_createDataSource(){return{getWidth:()=>this._elementSizeObserver.getWidth(),getHeight:()=>this._elementSizeObserver.getHeight()-this._getReviewHeight(),getOptions:()=>({renderOverviewRuler:this._options.renderOverviewRuler}),getContainerDomNode:()=>this._containerDomElement,relayoutEditors:()=>{this._doLayout()},getOriginalEditor:()=>this._originalEditor,getModifiedEditor:()=>this._modifiedEditor}}_setStrategy(me){var le;(le=this._strategy)===null||le===void 0||le.dispose(),this._strategy=me,this._boundarySashes&&me.setBoundarySashes(this._boundarySashes),me.applyColors(this._themeService.getColorTheme()),this._diffComputationResult&&this._updateDecorations(),this._doLayout()}};e.DiffEditorWidget=de,de.ONE_OVERVIEW_WIDTH=15,de.ENTIRE_DIFF_OVERVIEW_WIDTH=30,de.UPDATE_DIFF_DECORATIONS_DELAY=200,e.DiffEditorWidget=de=B=ke([fe(3,W.IClipboardService),fe(4,U.IContextKeyService),fe(5,R.IInstantiationService),fe(6,c.ICodeEditorService),fe(7,H.IThemeService),fe(8,G.INotificationService),fe(9,j.IContextMenuService),fe(10,Z.IEditorProgressService)],de);class he extends t.Disposable{constructor(me){super(),this._dataSource=me,this._insertColor=null,this._removeColor=null}applyColors(me){const le=me.getColor(J.diffOverviewRulerInserted)||(me.getColor(J.diffInserted)||J.defaultInsertColor).transparent(2),pe=me.getColor(J.diffOverviewRulerRemoved)||(me.getColor(J.diffRemoved)||J.defaultRemoveColor).transparent(2),Ce=!le.equals(this._insertColor)||!pe.equals(this._removeColor);return this._insertColor=le,this._removeColor=pe,Ce}getEditorsDiffDecorations(me,le,pe,Ce,be,Ie){Ie=Ie.sort((ze,We)=>ze.afterLineNumber-We.afterLineNumber),be=be.sort((ze,We)=>ze.afterLineNumber-We.afterLineNumber);const Ne=this._getViewZones(me,be,Ie,pe),Re=this._getOriginalEditorDecorations(Ne,me,le,pe),Ve=this._getModifiedEditorDecorations(Ne,me,le,pe,Ce);return{original:{decorations:Re.decorations,overviewZones:Re.overviewZones,zones:Ne.original},modified:{decorations:Ve.decorations,overviewZones:Ve.overviewZones,zones:Ne.modified}}}setBoundarySashes(me){}}class ue{constructor(me){this._source=me,this._index=-1,this.current=null,this.advance()}advance(){this._index++,this._index<this._source.length?this.current=this._source[this._index]:this.current=null}}class te{constructor(me,le,pe,Ce,be){this._lineChanges=me,this._originalForeignVZ=le,this._modifiedForeignVZ=pe,this._originalEditor=Ce,this._modifiedEditor=be}static _getViewLineCount(me,le,pe){const Ce=me.getModel(),be=me._getViewModel();if(Ce&&be){const Ie=Me(Ce,be,le,pe);return Ie.endLineNumber-Ie.startLineNumber+1}return pe-le+1}getViewZones(){const me=this._originalEditor.getOption(65),le=this._modifiedEditor.getOption(65),pe=this._originalEditor.getOption(143).wrappingColumn!==-1,Ce=this._modifiedEditor.getOption(143).wrappingColumn!==-1,be=pe||Ce,Ie=this._originalEditor.getModel(),Ne=this._originalEditor._getViewModel().coordinatesConverter,Re=this._modifiedEditor._getViewModel().coordinatesConverter,Ve={original:[],modified:[]};let ze=0,We=0,qe=0,Oe=0,Ge=0,Qe=0;const st=(at,ht)=>at.afterLineNumber-ht.afterLineNumber,nt=(at,ht)=>{if(ht.domNode===null&&at.length>0){const Be=at[at.length-1];if(Be.afterLineNumber===ht.afterLineNumber&&Be.domNode===null){Be.heightInLines+=ht.heightInLines;return}}at.push(ht)},ot=new ue(this._modifiedForeignVZ),ct=new ue(this._originalForeignVZ);let lt=1,gt=1;for(let at=0,ht=this._lineChanges.length;at<=ht;at++){const Be=at<ht?this._lineChanges[at]:null;Be!==null?(qe=Be.originalStartLineNumber+(Be.originalEndLineNumber>0?-1:0),Oe=Be.modifiedStartLineNumber+(Be.modifiedEndLineNumber>0?-1:0),We=Be.originalEndLineNumber>0?te._getViewLineCount(this._originalEditor,Be.originalStartLineNumber,Be.originalEndLineNumber):0,ze=Be.modifiedEndLineNumber>0?te._getViewLineCount(this._modifiedEditor,Be.modifiedStartLineNumber,Be.modifiedEndLineNumber):0,Ge=Math.max(Be.originalStartLineNumber,Be.originalEndLineNumber),Qe=Math.max(Be.modifiedStartLineNumber,Be.modifiedEndLineNumber)):(qe+=1e7+We,Oe+=1e7+ze,Ge=qe,Qe=Oe);let Te=[],xe=[];if(be){let Ze;Be?Be.originalEndLineNumber>0?Ze=Be.originalStartLineNumber-lt:Ze=Be.modifiedStartLineNumber-gt:Ze=Ie.getLineCount()-lt+1;for(let Xe=0;Xe<Ze;Xe++){const je=lt+Xe,Ae=gt+Xe,Ue=Ne.getModelLineViewLineCount(je),Ke=Re.getModelLineViewLineCount(Ae);Ue<Ke?Te.push({afterLineNumber:je,heightInLines:Ke-Ue,domNode:null,marginDomNode:null}):Ue>Ke&&xe.push({afterLineNumber:Ae,heightInLines:Ue-Ke,domNode:null,marginDomNode:null})}Be&&(lt=(Be.originalEndLineNumber>0?Be.originalEndLineNumber:Be.originalStartLineNumber)+1,gt=(Be.modifiedEndLineNumber>0?Be.modifiedEndLineNumber:Be.modifiedStartLineNumber)+1)}for(;ot.current&&ot.current.afterLineNumber<=Qe;){let Ze;ot.current.afterLineNumber<=Oe?Ze=qe-Oe+ot.current.afterLineNumber:Ze=Ge;let Xe=null;Be&&Be.modifiedStartLineNumber<=ot.current.afterLineNumber&&ot.current.afterLineNumber<=Be.modifiedEndLineNumber&&(Xe=this._createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion()),Te.push({afterLineNumber:Ze,heightInLines:ot.current.height/le,domNode:null,marginDomNode:Xe}),ot.advance()}for(;ct.current&&ct.current.afterLineNumber<=Ge;){let Ze;ct.current.afterLineNumber<=qe?Ze=Oe-qe+ct.current.afterLineNumber:Ze=Qe,xe.push({afterLineNumber:Ze,heightInLines:ct.current.height/me,domNode:null}),ct.advance()}if(Be!==null&&ve(Be)){const Ze=this._produceOriginalFromDiff(Be,We,ze);Ze&&Te.push(Ze)}if(Be!==null&&Se(Be)){const Ze=this._produceModifiedFromDiff(Be,We,ze);Ze&&xe.push(Ze)}let He=0,Ye=0;for(Te=Te.sort(st),xe=xe.sort(st);He<Te.length&&Ye<xe.length;){const Ze=Te[He],Xe=xe[Ye],je=Ze.afterLineNumber-qe,Ae=Xe.afterLineNumber-Oe;je<Ae?(nt(Ve.original,Ze),He++):Ae<je?(nt(Ve.modified,Xe),Ye++):Ze.shouldNotShrink?(nt(Ve.original,Ze),He++):Xe.shouldNotShrink?(nt(Ve.modified,Xe),Ye++):Ze.heightInLines>=Xe.heightInLines?(Ze.heightInLines-=Xe.heightInLines,Ye++):(Xe.heightInLines-=Ze.heightInLines,He++)}for(;He<Te.length;)nt(Ve.original,Te[He]),He++;for(;Ye<xe.length;)nt(Ve.modified,xe[Ye]),Ye++}return{original:te._ensureDomNodes(Ve.original),modified:te._ensureDomNodes(Ve.modified)}}static _ensureDomNodes(me){return me.map(le=>(le.domNode||(le.domNode=ye()),le))}}function q(_e,me,le,pe,Ce){return{range:new E.Range(_e,me,le,pe),options:Ce}}const z={arrowRevertChange:x.ModelDecorationOptions.register({description:\"diff-editor-arrow-revert-change\",glyphMarginHoverMessage:new n.MarkdownString(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown(O.localize(4,null)),glyphMarginClassName:\"arrow-revert-change \"+a.ThemeIcon.asClassName(C.Codicon.arrowRight),zIndex:10001}),charDelete:x.ModelDecorationOptions.register({description:\"diff-editor-char-delete\",className:\"char-delete\"}),charDeleteWholeLine:x.ModelDecorationOptions.register({description:\"diff-editor-char-delete-whole-line\",className:\"char-delete\",isWholeLine:!0}),charInsert:x.ModelDecorationOptions.register({description:\"diff-editor-char-insert\",className:\"char-insert\"}),charInsertWholeLine:x.ModelDecorationOptions.register({description:\"diff-editor-char-insert-whole-line\",className:\"char-insert\",isWholeLine:!0}),lineInsert:x.ModelDecorationOptions.register({description:\"diff-editor-line-insert\",className:\"line-insert\",marginClassName:\"gutter-insert\",isWholeLine:!0}),lineInsertWithSign:x.ModelDecorationOptions.register({description:\"diff-editor-line-insert-with-sign\",className:\"line-insert\",linesDecorationsClassName:\"insert-sign \"+a.ThemeIcon.asClassName(ie),marginClassName:\"gutter-insert\",isWholeLine:!0}),lineDelete:x.ModelDecorationOptions.register({description:\"diff-editor-line-delete\",className:\"line-delete\",marginClassName:\"gutter-delete\",isWholeLine:!0}),lineDeleteWithSign:x.ModelDecorationOptions.register({description:\"diff-editor-line-delete-with-sign\",className:\"line-delete\",linesDecorationsClassName:\"delete-sign \"+a.ThemeIcon.asClassName(ae),marginClassName:\"gutter-delete\",isWholeLine:!0}),lineDeleteMargin:x.ModelDecorationOptions.register({description:\"diff-editor-line-delete-margin\",marginClassName:\"gutter-delete\"})};class ee extends he{constructor(me,le,pe){super(me),this._disableSash=le===!1,this._defaultRatio=pe,this._sashRatio=null,this._sashPosition=null,this._startSashPosition=null,this._sash=this._register(new S.Sash(this._dataSource.getContainerDomNode(),this,{orientation:0})),this._disableSash&&(this._sash.state=0),this._sash.onDidStart(()=>this._onSashDragStart()),this._sash.onDidChange(Ce=>this._onSashDrag(Ce)),this._sash.onDidEnd(()=>this._onSashDragEnd()),this._sash.onDidReset(()=>this._onSashReset())}setEnableSplitViewResizing(me,le){this._defaultRatio=le;const pe=me===!1;this._disableSash!==pe&&(this._disableSash=pe,this._sash.state=this._disableSash?0:3)}layout(me=this._sashRatio||this._defaultRatio){const pe=this._dataSource.getWidth()-(this._dataSource.getOptions().renderOverviewRuler?de.ENTIRE_DIFF_OVERVIEW_WIDTH:0);let Ce=Math.floor((me||this._defaultRatio)*pe);const be=Math.floor(this._defaultRatio*pe);return Ce=this._disableSash?be:Ce||be,pe>ee.MINIMUM_EDITOR_WIDTH*2?(Ce<ee.MINIMUM_EDITOR_WIDTH&&(Ce=ee.MINIMUM_EDITOR_WIDTH),Ce>pe-ee.MINIMUM_EDITOR_WIDTH&&(Ce=pe-ee.MINIMUM_EDITOR_WIDTH)):Ce=be,this._sashPosition!==Ce&&(this._sashPosition=Ce),this._sash.layout(),this._sashPosition}_onSashDragStart(){this._startSashPosition=this._sashPosition}_onSashDrag(me){const pe=this._dataSource.getWidth()-(this._dataSource.getOptions().renderOverviewRuler?de.ENTIRE_DIFF_OVERVIEW_WIDTH:0),Ce=this.layout((this._startSashPosition+(me.currentX-me.startX))/pe);this._sashRatio=Ce/pe,this._dataSource.relayoutEditors()}_onSashDragEnd(){this._sash.layout()}_onSashReset(){this._sashRatio=this._defaultRatio,this._dataSource.relayoutEditors(),this._sash.layout()}getVerticalSashTop(me){return 0}getVerticalSashLeft(me){return this._sashPosition}getVerticalSashHeight(me){return this._dataSource.getHeight()}setBoundarySashes(me){this._sash.orthogonalEndSash=me.bottom}_getViewZones(me,le,pe){const Ce=this._dataSource.getOriginalEditor(),be=this._dataSource.getModifiedEditor();return new $(me,le,pe,Ce,be).getViewZones()}_getOriginalEditorDecorations(me,le,pe,Ce){const be=this._dataSource.getOriginalEditor(),Ie=String(this._removeColor),Ne={decorations:[],overviewZones:[]},Re=be.getModel(),Ve=be._getViewModel();for(const ze of le)if(Se(ze)){Ne.decorations.push({range:new E.Range(ze.originalStartLineNumber,1,ze.originalEndLineNumber,1073741824),options:Ce?z.lineDeleteWithSign:z.lineDelete}),(!ve(ze)||!ze.charChanges)&&Ne.decorations.push(q(ze.originalStartLineNumber,1,ze.originalEndLineNumber,1073741824,z.charDeleteWholeLine));const We=Me(Re,Ve,ze.originalStartLineNumber,ze.originalEndLineNumber);if(Ne.overviewZones.push(new F.OverviewRulerZone(We.startLineNumber,We.endLineNumber,0,Ie)),ze.charChanges){for(const qe of ze.charChanges)if(De(qe))if(pe)for(let Oe=qe.originalStartLineNumber;Oe<=qe.originalEndLineNumber;Oe++){let Ge,Qe;Oe===qe.originalStartLineNumber?Ge=qe.originalStartColumn:Ge=Re.getLineFirstNonWhitespaceColumn(Oe),Oe===qe.originalEndLineNumber?Qe=qe.originalEndColumn:Qe=Re.getLineLastNonWhitespaceColumn(Oe),Ne.decorations.push(q(Oe,Ge,Oe,Qe,z.charDelete))}else Ne.decorations.push(q(qe.originalStartLineNumber,qe.originalStartColumn,qe.originalEndLineNumber,qe.originalEndColumn,z.charDelete))}}return Ne}_getModifiedEditorDecorations(me,le,pe,Ce,be){const Ie=this._dataSource.getModifiedEditor(),Ne=String(this._insertColor),Re={decorations:[],overviewZones:[]},Ve=Ie.getModel(),ze=Ie._getViewModel();for(const We of le){if(be)if(We.modifiedEndLineNumber>0)Re.decorations.push({range:new E.Range(We.modifiedStartLineNumber,1,We.modifiedStartLineNumber,1),options:z.arrowRevertChange});else{const qe=me.modified.find(Oe=>Oe.afterLineNumber===We.modifiedStartLineNumber);qe&&(qe.marginDomNode=Ee())}if(ve(We)){Re.decorations.push({range:new E.Range(We.modifiedStartLineNumber,1,We.modifiedEndLineNumber,1073741824),options:Ce?z.lineInsertWithSign:z.lineInsert}),(!Se(We)||!We.charChanges)&&Re.decorations.push(q(We.modifiedStartLineNumber,1,We.modifiedEndLineNumber,1073741824,z.charInsertWholeLine));const qe=Me(Ve,ze,We.modifiedStartLineNumber,We.modifiedEndLineNumber);if(Re.overviewZones.push(new F.OverviewRulerZone(qe.startLineNumber,qe.endLineNumber,0,Ne)),We.charChanges){for(const Oe of We.charChanges)if(Le(Oe))if(pe)for(let Ge=Oe.modifiedStartLineNumber;Ge<=Oe.modifiedEndLineNumber;Ge++){let Qe,st;Ge===Oe.modifiedStartLineNumber?Qe=Oe.modifiedStartColumn:Qe=Ve.getLineFirstNonWhitespaceColumn(Ge),Ge===Oe.modifiedEndLineNumber?st=Oe.modifiedEndColumn:st=Ve.getLineLastNonWhitespaceColumn(Ge),Re.decorations.push(q(Ge,Qe,Ge,st,z.charInsert))}else Re.decorations.push(q(Oe.modifiedStartLineNumber,Oe.modifiedStartColumn,Oe.modifiedEndLineNumber,Oe.modifiedEndColumn,z.charInsert))}}}return Re}}ee.MINIMUM_EDITOR_WIDTH=100;class $ extends te{constructor(me,le,pe,Ce,be){super(me,le,pe,Ce,be)}_createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion(){return null}_produceOriginalFromDiff(me,le,pe){return pe>le?{afterLineNumber:Math.max(me.originalStartLineNumber,me.originalEndLineNumber),heightInLines:pe-le,domNode:null}:null}_produceModifiedFromDiff(me,le,pe){return le>pe?{afterLineNumber:Math.max(me.modifiedStartLineNumber,me.modifiedEndLineNumber),heightInLines:le-pe,domNode:null}:null}}class re extends he{constructor(me,le){super(me),this._decorationsLeft=me.getOriginalEditor().getLayoutInfo().decorationsLeft,this._register(me.getOriginalEditor().onDidLayoutChange(pe=>{this._decorationsLeft!==pe.decorationsLeft&&(this._decorationsLeft=pe.decorationsLeft,me.relayoutEditors())}))}setEnableSplitViewResizing(me){}_getViewZones(me,le,pe,Ce){const be=this._dataSource.getOriginalEditor(),Ie=this._dataSource.getModifiedEditor();return new oe(me,le,pe,be,Ie,Ce).getViewZones()}_getOriginalEditorDecorations(me,le,pe,Ce){const be=String(this._removeColor),Ie={decorations:[],overviewZones:[]},Ne=this._dataSource.getOriginalEditor(),Re=Ne.getModel(),Ve=Ne._getViewModel();let ze=0;for(const We of le)if(Se(We)){for(Ie.decorations.push({range:new E.Range(We.originalStartLineNumber,1,We.originalEndLineNumber,1073741824),options:z.lineDeleteMargin});ze<me.modified.length;){const Ge=me.modified[ze];if(Ge.diff&&Ge.diff.originalStartLineNumber>=We.originalStartLineNumber)break;ze++}let qe=0;if(ze<me.modified.length){const Ge=me.modified[ze];Ge.diff&&Ge.diff.originalStartLineNumber===We.originalStartLineNumber&&Ge.diff.originalEndLineNumber===We.originalEndLineNumber&&Ge.diff.modifiedStartLineNumber===We.modifiedStartLineNumber&&Ge.diff.modifiedEndLineNumber===We.modifiedEndLineNumber&&(qe=Ge.heightInLines)}const Oe=Me(Re,Ve,We.originalStartLineNumber,We.originalEndLineNumber);Ie.overviewZones.push(new F.OverviewRulerZone(Oe.startLineNumber,Oe.endLineNumber,qe,be))}return Ie}_getModifiedEditorDecorations(me,le,pe,Ce,be){const Ie=this._dataSource.getModifiedEditor(),Ne=String(this._insertColor),Re={decorations:[],overviewZones:[]},Ve=Ie.getModel(),ze=Ie._getViewModel();for(const We of le)if(ve(We)){Re.decorations.push({range:new E.Range(We.modifiedStartLineNumber,1,We.modifiedEndLineNumber,1073741824),options:Ce?z.lineInsertWithSign:z.lineInsert});const qe=Me(Ve,ze,We.modifiedStartLineNumber,We.modifiedEndLineNumber);if(Re.overviewZones.push(new F.OverviewRulerZone(qe.startLineNumber,qe.endLineNumber,0,Ne)),We.charChanges){for(const Oe of We.charChanges)if(Le(Oe))if(pe)for(let Ge=Oe.modifiedStartLineNumber;Ge<=Oe.modifiedEndLineNumber;Ge++){let Qe,st;Ge===Oe.modifiedStartLineNumber?Qe=Oe.modifiedStartColumn:Qe=Ve.getLineFirstNonWhitespaceColumn(Ge),Ge===Oe.modifiedEndLineNumber?st=Oe.modifiedEndColumn:st=Ve.getLineLastNonWhitespaceColumn(Ge),Re.decorations.push(q(Ge,Qe,Ge,st,z.charInsert))}else Re.decorations.push(q(Oe.modifiedStartLineNumber,Oe.modifiedStartColumn,Oe.modifiedEndLineNumber,Oe.modifiedEndColumn,z.charInsert))}else Re.decorations.push(q(We.modifiedStartLineNumber,1,We.modifiedEndLineNumber,1073741824,z.charInsertWholeLine))}return Re}layout(){return Math.max(5,this._decorationsLeft)}}class oe extends te{constructor(me,le,pe,Ce,be,Ie){super(me,le,pe,Ce,be),this._originalModel=Ce.getModel(),this._renderIndicators=Ie,this._pendingLineChange=[],this._pendingViewZones=[],this._lineBreaksComputer=this._modifiedEditor._getViewModel().createLineBreaksComputer()}getViewZones(){const me=super.getViewZones();return this._finalize(me),me}_createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion(){const me=document.createElement(\"div\");return me.className=\"inline-added-margin-view-zone\",me}_produceOriginalFromDiff(me,le,pe){const Ce=document.createElement(\"div\");return Ce.className=\"inline-added-margin-view-zone\",{afterLineNumber:Math.max(me.originalStartLineNumber,me.originalEndLineNumber),heightInLines:pe,domNode:document.createElement(\"div\"),marginDomNode:Ce}}_produceModifiedFromDiff(me,le,pe){const Ce=document.createElement(\"div\");Ce.className=`view-lines line-delete ${D.MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`;const be=document.createElement(\"div\");be.className=\"inline-deleted-margin-view-zone\";const Ie={shouldNotShrink:!0,afterLineNumber:me.modifiedEndLineNumber===0?me.modifiedStartLineNumber:me.modifiedStartLineNumber-1,heightInLines:le,minWidthInPx:0,domNode:Ce,marginDomNode:be,diff:{originalStartLineNumber:me.originalStartLineNumber,originalEndLineNumber:me.originalEndLineNumber,modifiedStartLineNumber:me.modifiedStartLineNumber,modifiedEndLineNumber:me.modifiedEndLineNumber,originalModel:this._originalModel,viewLineCounts:null}};for(let Ne=me.originalStartLineNumber;Ne<=me.originalEndLineNumber;Ne++)this._lineBreaksComputer.addRequest(this._originalModel.getLineContent(Ne),null,null);return this._pendingLineChange.push(me),this._pendingViewZones.push(Ie),Ie}_finalize(me){const le=this._modifiedEditor.getOptions(),pe=this._modifiedEditor.getModel().getOptions().tabSize,Ce=le.get(49),be=le.get(32),Ie=Ce.typicalHalfwidthCharacterWidth,Ne=le.get(102),Re=this._originalModel.mightContainNonBasicASCII(),Ve=this._originalModel.mightContainRTL(),ze=le.get(65),qe=le.get(142).decorationsWidth,Oe=le.get(115),Ge=le.get(97),Qe=le.get(92),st=le.get(50),nt=this._lineBreaksComputer.finalize();let ot=0;for(let ct=0;ct<this._pendingLineChange.length;ct++){const lt=this._pendingLineChange[ct],gt=this._pendingViewZones[ct],at=gt.domNode;(0,u.applyFontInfo)(at,Ce);const ht=gt.marginDomNode;(0,u.applyFontInfo)(ht,Ce);const Be=[];if(lt.charChanges)for(const Ae of lt.charChanges)De(Ae)&&Be.push(new N.InlineDecoration(new E.Range(Ae.originalStartLineNumber,Ae.originalStartColumn,Ae.originalEndLineNumber,Ae.originalEndColumn),\"char-delete\",0));const Te=Be.length>0,xe=new I.StringBuilder(1e4);let He=0,Ye=0,Ze=null;for(let Ae=lt.originalStartLineNumber;Ae<=lt.originalEndLineNumber;Ae++){const Ue=Ae-lt.originalStartLineNumber,Ke=this._originalModel.tokenization.getLineTokens(Ae),$e=Ke.getLineContent(),et=nt[ot++],tt=T.LineDecoration.filter(Be,Ae,1,$e.length+1);if(et){let ut=0;for(const rt of et.breakOffsets){const dt=Ke.sliceAndInflate(ut,rt,0),ft=$e.substring(ut,rt);He=Math.max(He,this._renderOriginalLine(Ye++,ft,dt,T.LineDecoration.extractWrapped(tt,ut,rt),Te,Re,Ve,Ce,be,ze,qe,Oe,Ge,Qe,st,pe,xe,ht)),ut=rt}for(Ze||(Ze=[]);Ze.length<Ue;)Ze[Ze.length]=1;Ze[Ue]=et.breakOffsets.length,gt.heightInLines+=et.breakOffsets.length-1;const it=document.createElement(\"div\");it.className=\"gutter-delete\",me.original.push({afterLineNumber:Ae,afterColumn:0,heightInLines:et.breakOffsets.length-1,domNode:ye(),marginDomNode:it})}else He=Math.max(He,this._renderOriginalLine(Ye++,$e,Ke,tt,Te,Re,Ve,Ce,be,ze,qe,Oe,Ge,Qe,st,pe,xe,ht))}He+=Ne;const Xe=xe.build(),je=e.diffEditorWidgetTtPolicy?e.diffEditorWidgetTtPolicy.createHTML(Xe):Xe;if(at.innerHTML=je,gt.minWidthInPx=He*Ie,Ze){const Ae=lt.originalEndLineNumber-lt.originalStartLineNumber;for(;Ze.length<=Ae;)Ze[Ze.length]=1}gt.diff.viewLineCounts=Ze}me.original.sort((ct,lt)=>ct.afterLineNumber-lt.afterLineNumber)}_renderOriginalLine(me,le,pe,Ce,be,Ie,Ne,Re,Ve,ze,We,qe,Oe,Ge,Qe,st,nt,ot){nt.appendString('<div class=\"view-line'),be||nt.appendString(\" char-delete\"),nt.appendString('\" style=\"top:'),nt.appendString(String(me*ze)),nt.appendString('px;width:1000000px;\">');const ct=N.ViewLineRenderingData.isBasicASCII(le,Ie),lt=N.ViewLineRenderingData.containsRTL(le,ct,Ne),gt=(0,A.renderViewLine)(new A.RenderLineInput(Re.isMonospace&&!Ve,Re.canUseHalfwidthRightwardsArrow,le,!1,ct,lt,0,pe,Ce,st,0,Re.spaceWidth,Re.middotWidth,Re.wsmiddotWidth,qe,Oe,Ge,Qe!==b.EditorFontLigatures.OFF,null),nt);if(nt.appendString(\"</div>\"),this._renderIndicators){const at=document.createElement(\"div\");at.className=`delete-sign ${a.ThemeIcon.asClassName(ae)}`,at.setAttribute(\"style\",`position:absolute;top:${me*ze}px;width:${We}px;height:${ze}px;right:0;`),ot.appendChild(at)}return gt.characterMapping.getHorizontalOffset(gt.characterMapping.length)}}function ge(_e,me){return(0,b.stringSet)(_e,me,[\"off\",\"on\",\"inherit\"])}function ve(_e){return _e.modifiedEndLineNumber>0}function Se(_e){return _e.originalEndLineNumber>0}function Le(_e){return _e.modifiedStartLineNumber===_e.modifiedEndLineNumber?_e.modifiedEndColumn-_e.modifiedStartColumn>0:_e.modifiedEndLineNumber-_e.modifiedStartLineNumber>0}function De(_e){return _e.originalStartLineNumber===_e.originalEndLineNumber?_e.originalEndColumn-_e.originalStartColumn>0:_e.originalEndLineNumber-_e.originalStartLineNumber>0}function ye(){const _e=document.createElement(\"div\");return _e.className=\"diagonal-fill\",_e}function Ee(){const _e=document.createElement(\"div\");return _e.className=\"arrow-revert-change \"+a.ThemeIcon.asClassName(C.Codicon.arrowRight),L.$(\"div\",{},_e)}function Me(_e,me,le,pe){const Ce=_e.getLineCount();return le=Math.min(Ce,Math.max(1,le)),pe=Math.min(Ce,Math.max(1,pe)),me.coordinatesConverter.convertModelRangeToViewRange(new E.Range(le,_e.getLineMinColumn(le),pe,_e.getLineMaxColumn(pe)))}function Pe(_e,me){return{enableSplitViewResizing:(0,b.boolean)(_e.enableSplitViewResizing,me.enableSplitViewResizing),splitViewDefaultRatio:(0,b.clampedFloat)(_e.splitViewDefaultRatio,.5,.1,.9),renderSideBySide:(0,b.boolean)(_e.renderSideBySide,me.renderSideBySide),renderMarginRevertIcon:(0,b.boolean)(_e.renderMarginRevertIcon,me.renderMarginRevertIcon),maxComputationTime:(0,b.clampedInt)(_e.maxComputationTime,me.maxComputationTime,0,1073741824),maxFileSize:(0,b.clampedInt)(_e.maxFileSize,me.maxFileSize,0,1073741824),ignoreTrimWhitespace:(0,b.boolean)(_e.ignoreTrimWhitespace,me.ignoreTrimWhitespace),renderIndicators:(0,b.boolean)(_e.renderIndicators,me.renderIndicators),originalEditable:(0,b.boolean)(_e.originalEditable,me.originalEditable),diffCodeLens:(0,b.boolean)(_e.diffCodeLens,me.diffCodeLens),renderOverviewRuler:(0,b.boolean)(_e.renderOverviewRuler,me.renderOverviewRuler),diffWordWrap:ge(_e.diffWordWrap,me.diffWordWrap),diffAlgorithm:(0,b.stringSet)(_e.diffAlgorithm,me.diffAlgorithm,[\"legacy\",\"advanced\"],{smart:\"legacy\",experimental:\"advanced\"}),accessibilityVerbose:(0,b.boolean)(_e.accessibilityVerbose,me.accessibilityVerbose),hideUnchangedRegions:{enabled:!1,contextLineCount:0,minimumLineCount:0,revealLineCount:0},experimental:{showEmptyDecorations:!1,showMoves:!1},isInEmbeddedEditor:(0,b.boolean)(_e.isInEmbeddedEditor,me.isInEmbeddedEditor),onlyShowAccessibleDiffViewer:!1,renderSideBySideInlineBreakpoint:0,useInlineViewWhenSpaceIsLimited:!1}}function Fe(_e,me){return{enableSplitViewResizing:_e.enableSplitViewResizing!==me.enableSplitViewResizing,renderSideBySide:_e.renderSideBySide!==me.renderSideBySide,renderMarginRevertIcon:_e.renderMarginRevertIcon!==me.renderMarginRevertIcon,maxComputationTime:_e.maxComputationTime!==me.maxComputationTime,maxFileSize:_e.maxFileSize!==me.maxFileSize,ignoreTrimWhitespace:_e.ignoreTrimWhitespace!==me.ignoreTrimWhitespace,renderIndicators:_e.renderIndicators!==me.renderIndicators,originalEditable:_e.originalEditable!==me.originalEditable,diffCodeLens:_e.diffCodeLens!==me.diffCodeLens,renderOverviewRuler:_e.renderOverviewRuler!==me.renderOverviewRuler,diffWordWrap:_e.diffWordWrap!==me.diffWordWrap,diffAlgorithm:_e.diffAlgorithm!==me.diffAlgorithm,accessibilityVerbose:_e.accessibilityVerbose!==me.accessibilityVerbose}}(0,H.registerThemingParticipant)((_e,me)=>{const le=_e.getColor(J.diffDiagonalFill);me.addRule(`\n\t.monaco-editor .diagonal-fill {\n\t\tbackground-image: linear-gradient(\n\t\t\t-45deg,\n\t\t\t${le} 12.5%,\n\t\t\t#0000 12.5%, #0000 50%,\n\t\t\t${le} 50%, ${le} 62.5%,\n\t\t\t#0000 62.5%, #0000 100%\n\t\t);\n\t\tbackground-size: 8px 8px;\n\t}\n\t`)})}),define(ne[874],se([1,0,59,254,36,93,127,95,67]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RenderOptions=e.LineSource=e.renderLines=void 0;const g=k.diffEditorWidgetTtPolicy;function C(t,a,u,h){(0,L.applyFontInfo)(h,a.fontInfo);const r=u.length>0,c=new D.StringBuilder(1e4);let o=0,d=0;const l=[];for(let b=0;b<t.lineTokens.length;b++){const w=b+1,E=t.lineTokens[b],I=t.lineBreakData[b],M=S.LineDecoration.filter(u,w,1,Number.MAX_SAFE_INTEGER);if(I){let P=0;for(const x of I.breakOffsets){const T=E.sliceAndInflate(P,x,0);o=Math.max(o,n(d,T,S.LineDecoration.extractWrapped(M,P,x),r,t.mightContainNonBasicASCII,t.mightContainRTL,a,c)),d++,P=x}l.push(I.breakOffsets.length)}else l.push(1),o=Math.max(o,n(d,E,M,r,t.mightContainNonBasicASCII,t.mightContainRTL,a,c)),d++}o+=a.scrollBeyondLastColumn;const p=c.build(),m=g?g.createHTML(p):p;h.innerHTML=m;const v=o*a.typicalHalfwidthCharacterWidth;return{heightInLines:d,minWidthInPx:v,viewLineCounts:l}}e.renderLines=C;class s{constructor(a,u,h,r){this.lineTokens=a,this.lineBreakData=u,this.mightContainNonBasicASCII=h,this.mightContainRTL=r}}e.LineSource=s;class i{static fromEditor(a){var u;const h=a.getOptions(),r=h.get(49),c=h.get(142);return new i(((u=a.getModel())===null||u===void 0?void 0:u.getOptions().tabSize)||0,r,h.get(32),r.typicalHalfwidthCharacterWidth,h.get(102),h.get(65),c.decorationsWidth,h.get(115),h.get(97),h.get(92),h.get(50))}constructor(a,u,h,r,c,o,d,l,p,m,v){this.tabSize=a,this.fontInfo=u,this.disableMonospaceOptimizations=h,this.typicalHalfwidthCharacterWidth=r,this.scrollBeyondLastColumn=c,this.lineHeight=o,this.lineDecorationsWidth=d,this.stopRenderingLineAfter=l,this.renderWhitespace=p,this.renderControlCharacters=m,this.fontLigatures=v}}e.RenderOptions=i;function n(t,a,u,h,r,c,o,d){d.appendString('<div class=\"view-line'),h||d.appendString(\" char-delete\"),d.appendString('\" style=\"top:'),d.appendString(String(t*o.lineHeight)),d.appendString('px;width:1000000px;\">');const l=a.getLineContent(),p=_.ViewLineRenderingData.isBasicASCII(l,r),m=_.ViewLineRenderingData.containsRTL(l,p,c),v=(0,f.renderViewLine)(new f.RenderLineInput(o.fontInfo.isMonospace&&!o.disableMonospaceOptimizations,o.fontInfo.canUseHalfwidthRightwardsArrow,l,!1,p,m,0,a,u,o.tabSize,0,o.fontInfo.spaceWidth,o.fontInfo.middotWidth,o.fontInfo.wsmiddotWidth,o.stopRenderingLineAfter,o.renderWhitespace,o.renderControlCharacters,o.fontLigatures!==y.EditorFontLigatures.OFF,null),d);return d.appendString(\"</div>\"),v.characterMapping.getHorizontalOffset(v.characterMapping.length)}}),define(ne[875],se([1,0,7,14,13,25,2,42,26,20,59,108,362,318,612,874,102,66,12,67,96,57]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ViewZoneManager=void 0;let l=class extends S.Disposable{constructor(b,w,E,I,M,P,x){super(),this._editors=b,this._diffModel=w,this._options=E,this._diffEditorWidget=I,this._canIgnoreViewZoneUpdateEvent=M,this._clipboardService=P,this._contextMenuService=x,this._originalTopPadding=(0,f.observableValue)(\"originalTopPadding\",0),this._originalScrollOffset=(0,f.observableValue)(\"originalScrollOffset\",0),this._originalScrollOffsetAnimated=(0,u.animatedObservable)(this._originalScrollOffset,this._store),this._modifiedTopPadding=(0,f.observableValue)(\"modifiedTopPadding\",0),this._modifiedScrollOffset=(0,f.observableValue)(\"modifiedScrollOffset\",0),this._modifiedScrollOffsetAnimated=(0,u.animatedObservable)(this._modifiedScrollOffset,this._store);let T=!1;const A=(0,f.observableValue)(\"state\",0),N=this._register(new y.RunOnceScheduler(()=>{A.set(A.get()+1,void 0)},0));this._register(this._editors.original.onDidChangeViewZones(J=>{!T&&!this._canIgnoreViewZoneUpdateEvent()&&N.schedule()})),this._register(this._editors.modified.onDidChangeViewZones(J=>{!T&&!this._canIgnoreViewZoneUpdateEvent()&&N.schedule()})),this._register(this._editors.original.onDidChangeConfiguration(J=>{(J.hasChanged(143)||J.hasChanged(65))&&N.schedule()})),this._register(this._editors.modified.onDidChangeConfiguration(J=>{(J.hasChanged(143)||J.hasChanged(65))&&N.schedule()}));const F=this._diffModel.map(J=>J?(0,f.observableFromEvent)(J.model.original.onDidChangeTokens,()=>J.model.original.tokenization.backgroundTokenizationState===2):void 0).map((J,X)=>J?.read(X)),O=new Set,W=new Set,U=(0,f.derived)(J=>{const X=this._diffModel.read(J),H=X?.diff.read(J);if(!X||!H)return null;A.read(J);const V=this._options.renderSideBySide.read(J);return p(this._editors.original,this._editors.modified,H.mappings,O,W,V)}),j=(0,f.derived)(J=>{var X;const H=(X=this._diffModel.read(J))===null||X===void 0?void 0:X.movedTextToCompare.read(J);if(!H)return null;A.read(J);const B=H.changes.map(V=>new n.DiffMapping(V));return p(this._editors.original,this._editors.modified,B,O,W,!0)});function R(){const J=document.createElement(\"div\");return J.className=\"diagonal-fill\",J}const K=this._register(new S.DisposableStore),G=(0,f.derived)(J=>{var X,H,B,V,Y,ie,ae,ce;K.clear();const de=U.read(J)||[],he=[],ue=[],te=this._modifiedTopPadding.read(J);te>0&&ue.push({afterLineNumber:0,domNode:document.createElement(\"div\"),heightInPx:te,showInHiddenAreas:!0});const q=this._originalTopPadding.read(J);q>0&&he.push({afterLineNumber:0,domNode:document.createElement(\"div\"),heightInPx:q,showInHiddenAreas:!0});const z=this._options.renderSideBySide.read(J),ee=z||(X=this._editors.modified._getViewModel())===null||X===void 0?void 0:X.createLineBreaksComputer();if(ee){for(const De of de)if(De.diff)for(let ye=De.originalRange.startLineNumber;ye<De.originalRange.endLineNumberExclusive;ye++)ee?.addRequest(this._editors.original.getModel().getLineContent(ye),null,null)}const $=(H=ee?.finalize())!==null&&H!==void 0?H:[];let re=0;const oe=this._editors.modified.getOption(65),ge=(B=this._diffModel.read(J))===null||B===void 0?void 0:B.movedTextToCompare.read(J),ve=(Y=(V=this._editors.original.getModel())===null||V===void 0?void 0:V.mightContainNonBasicASCII())!==null&&Y!==void 0?Y:!1,Se=(ae=(ie=this._editors.original.getModel())===null||ie===void 0?void 0:ie.mightContainRTL())!==null&&ae!==void 0?ae:!1,Le=a.RenderOptions.fromEditor(this._editors.modified);for(const De of de)if(De.diff&&!z){if(!De.originalRange.isEmpty){F.read(J);const Ee=document.createElement(\"div\");Ee.classList.add(\"view-lines\",\"line-delete\",\"monaco-mouse-cursor-text\");const Me=new a.LineSource(De.originalRange.mapToLineArray(le=>this._editors.original.getModel().tokenization.getLineTokens(le)),De.originalRange.mapToLineArray(le=>$[re++]),ve,Se),Pe=[];for(const le of De.diff.innerChanges||[])Pe.push(new c.InlineDecoration(le.originalRange.delta(-(De.diff.originalRange.startLineNumber-1)),i.diffDeleteDecoration.className,0));const Fe=(0,a.renderLines)(Me,Le,Pe,Ee),_e=document.createElement(\"div\");if(_e.className=\"inline-deleted-margin-view-zone\",(0,C.applyFontInfo)(_e,Le.fontInfo),this._options.renderIndicators.read(J))for(let le=0;le<Fe.heightInLines;le++){const pe=document.createElement(\"div\");pe.className=`delete-sign ${_.ThemeIcon.asClassName(i.diffRemoveIcon)}`,pe.setAttribute(\"style\",`position:absolute;top:${le*oe}px;width:${Le.lineDecorationsWidth}px;height:${oe}px;right:0;`),_e.appendChild(pe)}let me;K.add(new t.InlineDiffDeletedCodeMargin(()=>(0,g.assertIsDefined)(me),_e,this._editors.modified,De.diff,this._diffEditorWidget,Fe.viewLineCounts,this._editors.original.getModel(),this._contextMenuService,this._clipboardService));for(let le=0;le<Fe.viewLineCounts.length;le++){const pe=Fe.viewLineCounts[le];pe>1&&he.push({afterLineNumber:De.originalRange.startLineNumber+le,domNode:R(),heightInPx:(pe-1)*oe,showInHiddenAreas:!0})}ue.push({afterLineNumber:De.modifiedRange.startLineNumber-1,domNode:Ee,heightInPx:Fe.heightInLines*oe,minWidthInPx:Fe.minWidthInPx,marginDomNode:_e,setZoneId(le){me=le},showInHiddenAreas:!0})}const ye=document.createElement(\"div\");ye.className=\"gutter-delete\",he.push({afterLineNumber:De.originalRange.endLineNumberExclusive-1,domNode:R(),heightInPx:De.modifiedHeightInPx,marginDomNode:ye,showInHiddenAreas:!0})}else{const ye=De.modifiedHeightInPx-De.originalHeightInPx;if(ye>0){if(ge?.lineRangeMapping.original.delta(-1).deltaLength(2).contains(De.originalRange.endLineNumberExclusive-1))continue;he.push({afterLineNumber:De.originalRange.endLineNumberExclusive-1,domNode:R(),heightInPx:ye,showInHiddenAreas:!0})}else{let Ee=function(){const Pe=document.createElement(\"div\");return Pe.className=\"arrow-revert-change \"+_.ThemeIcon.asClassName(D.Codicon.arrowRight),(0,L.$)(\"div\",{},Pe)};if(ge?.lineRangeMapping.modified.delta(-1).deltaLength(2).contains(De.modifiedRange.endLineNumberExclusive-1))continue;let Me;De.diff&&De.diff.modifiedRange.isEmpty&&this._options.shouldRenderRevertArrows.read(J)&&(Me=Ee()),ue.push({afterLineNumber:De.modifiedRange.endLineNumberExclusive-1,domNode:R(),heightInPx:-ye,marginDomNode:Me,showInHiddenAreas:!0})}}for(const De of(ce=j.read(J))!==null&&ce!==void 0?ce:[]){if(!ge?.lineRangeMapping.original.intersect(De.originalRange)||!ge?.lineRangeMapping.modified.intersect(De.modifiedRange))continue;const ye=De.modifiedHeightInPx-De.originalHeightInPx;ye>0?he.push({afterLineNumber:De.originalRange.endLineNumberExclusive-1,domNode:R(),heightInPx:ye,showInHiddenAreas:!0}):ue.push({afterLineNumber:De.modifiedRange.endLineNumberExclusive-1,domNode:R(),heightInPx:-ye,showInHiddenAreas:!0})}return{orig:he,mod:ue}});this._register((0,f.autorunWithStore)(J=>{const X=s.StableEditorScrollState.capture(this._editors.modified),H=G.read(J);T=!0,this._editors.original.changeViewZones(B=>{for(const V of O)B.removeZone(V);O.clear();for(const V of H.orig){const Y=B.addZone(V);V.setZoneId&&V.setZoneId(Y),O.add(Y)}}),this._editors.modified.changeViewZones(B=>{for(const V of W)B.removeZone(V);W.clear();for(const V of H.mod){const Y=B.addZone(V);V.setZoneId&&V.setZoneId(Y),W.add(Y)}}),T=!1,X.restore(this._editors.modified)})),this._register((0,S.toDisposable)(()=>{this._editors.original.changeViewZones(J=>{for(const X of O)J.removeZone(X);O.clear()}),this._editors.modified.changeViewZones(J=>{for(const X of W)J.removeZone(X);W.clear()})}));let Z=!1;this._register(this._editors.original.onDidScrollChange(J=>{J.scrollLeftChanged&&!Z&&(Z=!0,this._editors.modified.setScrollLeft(J.scrollLeft),Z=!1)})),this._register(this._editors.modified.onDidScrollChange(J=>{J.scrollLeftChanged&&!Z&&(Z=!0,this._editors.original.setScrollLeft(J.scrollLeft),Z=!1)})),this._originalScrollTop=(0,f.observableFromEvent)(this._editors.original.onDidScrollChange,()=>this._editors.original.getScrollTop()),this._modifiedScrollTop=(0,f.observableFromEvent)(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._register((0,f.autorun)(J=>{const X=this._originalScrollTop.read(J)-(this._originalScrollOffsetAnimated.get()-this._modifiedScrollOffsetAnimated.read(J))-(this._originalTopPadding.get()-this._modifiedTopPadding.read(J));X!==this._editors.modified.getScrollTop()&&this._editors.modified.setScrollTop(X,1)})),this._register((0,f.autorun)(J=>{const X=this._modifiedScrollTop.read(J)-(this._modifiedScrollOffsetAnimated.get()-this._originalScrollOffsetAnimated.read(J))-(this._modifiedTopPadding.get()-this._originalTopPadding.read(J));X!==this._editors.original.getScrollTop()&&this._editors.original.setScrollTop(X,1)})),this._register((0,f.autorun)(J=>{var X;const H=(X=this._diffModel.read(J))===null||X===void 0?void 0:X.movedTextToCompare.read(J);let B=0;if(H){const V=this._editors.original.getTopForLineNumber(H.lineRangeMapping.original.startLineNumber,!0)-this._originalTopPadding.get();B=this._editors.modified.getTopForLineNumber(H.lineRangeMapping.modified.startLineNumber,!0)-this._modifiedTopPadding.get()-V}B>0?(this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(B,void 0)):B<0?(this._modifiedTopPadding.set(-B,void 0),this._originalTopPadding.set(0,void 0)):setTimeout(()=>{this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(0,void 0)},400),this._editors.modified.hasTextFocus()?this._originalScrollOffset.set(this._modifiedScrollOffset.get()-B,void 0,!0):this._modifiedScrollOffset.set(this._originalScrollOffset.get()+B,void 0,!0)}))}};e.ViewZoneManager=l,e.ViewZoneManager=l=ke([fe(5,o.IClipboardService),fe(6,d.IContextMenuService)],l);function p(v,b,w,E,I,M){const P=new k.ArrayQueue(m(v,E)),x=new k.ArrayQueue(m(b,I)),T=v.getOption(65),A=b.getOption(65),N=[];let F=0,O=0;function W(U,j){for(;;){let R=P.peek(),K=x.peek();if(R&&R.lineNumber>=U&&(R=void 0),K&&K.lineNumber>=j&&(K=void 0),!R&&!K)break;const G=R?R.lineNumber-F:Number.MAX_VALUE,Z=K?K.lineNumber-O:Number.MAX_VALUE;G<Z?(P.dequeue(),K={lineNumber:R.lineNumber-F+O,heightInPx:0}):G>Z?(x.dequeue(),R={lineNumber:K.lineNumber-O+F,heightInPx:0}):(P.dequeue(),x.dequeue()),N.push({originalRange:h.LineRange.ofLength(R.lineNumber,1),modifiedRange:h.LineRange.ofLength(K.lineNumber,1),originalHeightInPx:T+R.heightInPx,modifiedHeightInPx:A+K.heightInPx,diff:void 0})}}for(const U of w){let Z=function(J,X){var H,B,V,Y;if(J<G||X<K)return;if(R)R=!1;else if(J===G||X===K)return;const ie=new h.LineRange(G,J),ae=new h.LineRange(K,X);if(ie.isEmpty&&ae.isEmpty)return;const ce=(B=(H=P.takeWhile(he=>he.lineNumber<J))===null||H===void 0?void 0:H.reduce((he,ue)=>he+ue.heightInPx,0))!==null&&B!==void 0?B:0,de=(Y=(V=x.takeWhile(he=>he.lineNumber<X))===null||V===void 0?void 0:V.reduce((he,ue)=>he+ue.heightInPx,0))!==null&&Y!==void 0?Y:0;N.push({originalRange:ie,modifiedRange:ae,originalHeightInPx:ie.length*T+ce,modifiedHeightInPx:ae.length*A+de,diff:U.lineRangeMapping}),G=J,K=X};const j=U.lineRangeMapping;W(j.originalRange.startLineNumber,j.modifiedRange.startLineNumber);let R=!0,K=j.modifiedRange.startLineNumber,G=j.originalRange.startLineNumber;if(M)for(const J of j.innerChanges||[])J.originalRange.startColumn>1&&J.modifiedRange.startColumn>1&&Z(J.originalRange.startLineNumber,J.modifiedRange.startLineNumber),J.originalRange.endColumn<v.getModel().getLineMaxColumn(J.originalRange.endLineNumber)&&Z(J.originalRange.endLineNumber,J.modifiedRange.endLineNumber);Z(j.originalRange.endLineNumberExclusive,j.modifiedRange.endLineNumberExclusive),F=j.originalRange.endLineNumberExclusive,O=j.modifiedRange.endLineNumberExclusive}return W(Number.MAX_VALUE,Number.MAX_VALUE),N}function m(v,b){const w=[],E=[],I=v.getOption(143).wrappingColumn!==-1,M=v._getViewModel().coordinatesConverter,P=v.getOption(65);if(I)for(let T=1;T<=v.getModel().getLineCount();T++){const A=M.getModelLineViewLineCount(T);A>1&&E.push({lineNumber:T,heightInPx:P*(A-1)})}for(const T of v.getWhitespaces()){if(b.has(T.id))continue;const A=T.afterLineNumber===0?0:M.convertViewPositionToModelPosition(new r.Position(T.afterLineNumber,1)).lineNumber;w.push({lineNumber:A,heightInPx:T.height})}return(0,u.joinCombine)(w,E,T=>T.lineNumber,(T,A)=>({lineNumber:T.lineNumber,heightInPx:T.heightInPx+A.heightInPx}))}}),define(ne[876],se([1,0,7,9,6,42,16,33,161,830,870,590,875,323,357,747,102,348,148,21,116,15,8,157,482,844,621,318,2,77,432,822]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DiffEditorWidget2=void 0;let M=class extends m.DelegatingEditor{constructor(T,A,N,F,O,W,U,j){var R;super(),this._domElement=T,this._parentContextKeyService=F,this._parentInstantiationService=O,this._audioCueService=U,this._editorProgressService=j,this.elements=(0,L.h)(\"div.monaco-diff-editor.side-by-side\",{style:{position:\"relative\",height:\"100%\"}},[(0,L.h)(\"div.noModificationsOverlay@overlay\",{style:{position:\"absolute\",height:\"100%\",visibility:\"hidden\"}},[(0,L.$)(\"span\",{},\"No Changes\")]),(0,L.h)(\"div.editor.original@original\",{style:{position:\"absolute\",height:\"100%\"}}),(0,L.h)(\"div.editor.modified@modified\",{style:{position:\"absolute\",height:\"100%\"}}),(0,L.h)(\"div.accessibleDiffViewer@accessibleDiffViewer\",{style:{position:\"absolute\",height:\"100%\"}})]),this._diffModel=this._register((0,D.disposableObservableValue)(\"diffModel\",void 0)),this.onDidChangeModel=y.Event.fromObservableLight(this._diffModel),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._domElement)),this._instantiationService=this._parentInstantiationService.createChild(new p.ServiceCollection([d.IContextKeyService,this._contextKeyService])),this._boundarySashes=(0,D.observableValue)(\"boundarySashes\",void 0),this._accessibleDiffViewerShouldBeVisible=(0,D.observableValue)(\"accessibleDiffViewerShouldBeVisible\",!1),this._accessibleDiffViewerVisible=(0,D.derived)(H=>this._options.onlyShowAccessibleDiffViewer.read(H)?!0:this._accessibleDiffViewerShouldBeVisible.read(H)),this.movedBlocksLinesPart=(0,D.observableValue)(\"MovedBlocksLinesPart\",void 0),this._layoutInfo=(0,D.derived)(H=>{var B,V,Y;const ie=this._rootSizeObserver.width.read(H),ae=this._rootSizeObserver.height.read(H),ce=(B=this._sash.read(H))===null||B===void 0?void 0:B.sashLeft.read(H),de=ce??Math.max(5,this._editors.original.getLayoutInfo().decorationsLeft),he=ie-de-(this._options.renderOverviewRuler.read(H)?t.OverviewRulerPart.ENTIRE_DIFF_OVERVIEW_WIDTH:0),ue=(Y=(V=this.movedBlocksLinesPart.read(H))===null||V===void 0?void 0:V.width.read(H))!==null&&Y!==void 0?Y:0,te=de-ue;return this.elements.original.style.width=te+\"px\",this.elements.original.style.left=\"0px\",this.elements.modified.style.width=he+\"px\",this.elements.modified.style.left=de+\"px\",this._editors.original.layout({width:te,height:ae}),this._editors.modified.layout({width:he,height:ae}),{modifiedEditor:this._editors.modified.getLayoutInfo(),originalEditor:this._editors.original.getLayoutInfo()}}),this._diffValue=this._diffModel.map((H,B)=>H?.diff.read(B)),this.onDidUpdateDiff=y.Event.fromObservableLight(this._diffValue),W.willCreateDiffEditor(),this._contextKeyService.createKey(\"isInDiffEditor\",!0),this._contextKeyService.createKey(\"diffEditorVersion\",2),this._domElement.appendChild(this.elements.root),this._register((0,E.toDisposable)(()=>this._domElement.removeChild(this.elements.root))),this._rootSizeObserver=this._register(new u.ObservableElementSizeObserver(this.elements.root,A.dimension)),this._rootSizeObserver.setAutomaticLayout((R=A.automaticLayout)!==null&&R!==void 0?R:!1),this._options=new b.DiffEditorOptions(A,this._rootSizeObserver.width),this._contextKeyService.createKey(c.EditorContextKeys.isEmbeddedDiffEditor.key,!1);const K=c.EditorContextKeys.isEmbeddedDiffEditor.bindTo(this._contextKeyService);this._register((0,D.autorun)(H=>{K.set(this._options.isInEmbeddedEditor.read(H))}));const G=c.EditorContextKeys.comparingMovedCode.bindTo(this._contextKeyService);this._register((0,D.autorun)(H=>{var B;G.set(!!(!((B=this._diffModel.read(H))===null||B===void 0)&&B.movedTextToCompare.read(H)))}));const Z=c.EditorContextKeys.diffEditorRenderSideBySideInlineBreakpointReached.bindTo(this._contextKeyService);this._register((0,D.autorun)(H=>{Z.set(this._options.couldShowInlineViewBecauseOfSize.read(H))})),this._editors=this._register(this._instantiationService.createInstance(v.DiffEditorEditors,this.elements.original,this.elements.modified,this._options,N,(H,B,V,Y)=>this._createInnerEditor(H,B,V,Y))),this._sash=(0,D.derivedWithStore)(\"sash\",(H,B)=>{const V=this._options.renderSideBySide.read(H);if(this.elements.root.classList.toggle(\"side-by-side\",V),!V)return;const Y=B.add(new s.DiffEditorSash(this._options,this.elements.root,{height:this._rootSizeObserver.height,width:this._rootSizeObserver.width.map((ie,ae)=>ie-(this._options.renderOverviewRuler.read(ae)?t.OverviewRulerPart.ENTIRE_DIFF_OVERVIEW_WIDTH:0))}));return B.add((0,D.autorun)(ie=>{const ae=this._boundarySashes.read(ie);ae&&Y.setBoundarySashes(ae)})),Y}),this._register((0,D.keepAlive)(this._sash,!0)),this._register((0,D.autorunWithStore)((H,B)=>{this.unchangedRangesFeature=B.add(this._instantiationService.createInstance((0,u.readHotReloadableExport)(a.UnchangedRangesFeature,H),this._editors,this._diffModel,this._options))})),this._register((0,D.autorunWithStore)((H,B)=>{B.add(new((0,u.readHotReloadableExport)(C.DiffEditorDecorations,H))(this._editors,this._diffModel,this._options))})),this._register((0,D.autorunWithStore)((H,B)=>{B.add(this._instantiationService.createInstance((0,u.readHotReloadableExport)(i.ViewZoneManager,H),this._editors,this._diffModel,this._options,this,()=>this.unchangedRangesFeature.isUpdatingViewZones))})),this._register((0,D.autorunWithStore)((H,B)=>{B.add(this._instantiationService.createInstance((0,u.readHotReloadableExport)(t.OverviewRulerPart,H),this._editors,this.elements.root,this._diffModel,this._rootSizeObserver.width,this._rootSizeObserver.height,this._layoutInfo.map(V=>V.modifiedEditor),this._options))})),this._register((0,D.autorunWithStore)((H,B)=>{this._accessibleDiffViewer=B.add(this._register(this._instantiationService.createInstance((0,u.readHotReloadableExport)(g.AccessibleDiffViewer,H),this.elements.accessibleDiffViewer,this._accessibleDiffViewerVisible,(V,Y)=>this._accessibleDiffViewerShouldBeVisible.set(V,Y),this._options.onlyShowAccessibleDiffViewer.map(V=>!V),this._rootSizeObserver.width,this._rootSizeObserver.height,this._diffModel.map((V,Y)=>{var ie;return(ie=V?.diff.read(Y))===null||ie===void 0?void 0:ie.mappings.map(ae=>ae.lineRangeMapping)}),this._editors)))}));const J=this._accessibleDiffViewerVisible.map(H=>H?\"hidden\":\"visible\");this._register((0,u.applyStyle)(this.elements.modified,{visibility:J})),this._register((0,u.applyStyle)(this.elements.original,{visibility:J})),this._createDiffEditorContributions(),W.addDiffEditor(this),this._register((0,D.keepAlive)(this._layoutInfo,!0)),this._register((0,D.autorunWithStore)((H,B)=>{this.movedBlocksLinesPart.set(B.add(new((0,u.readHotReloadableExport)(n.MovedBlocksLinesPart,H))(this.elements.root,this._diffModel,this._layoutInfo.map(V=>V.originalEditor),this._layoutInfo.map(V=>V.modifiedEditor),this._editors)),void 0)})),this._register((0,u.applyStyle)(this.elements.overlay,{width:this._layoutInfo.map((H,B)=>H.originalEditor.width+(this._options.renderSideBySide.read(B)?0:H.modifiedEditor.width)),visibility:(0,D.derived)(H=>{var B,V;return this._options.hideUnchangedRegions.read(H)&&((V=(B=this._diffModel.read(H))===null||B===void 0?void 0:B.diff.read(H))===null||V===void 0?void 0:V.mappings.length)===0?\"visible\":\"hidden\"})})),this._register(this._editors.modified.onMouseDown(H=>{var B,V;if(!H.event.rightButton&&H.target.position&&(!((B=H.target.element)===null||B===void 0)&&B.className.includes(\"arrow-revert-change\"))){const Y=H.target.position.lineNumber,ie=H.target,ae=this._diffModel.get();if(!ae)return;const ce=(V=ae.diff.get())===null||V===void 0?void 0:V.mappings;if(!ce)return;const de=ce.find(he=>ie?.detail.afterLineNumber===he.lineRangeMapping.modifiedRange.startLineNumber-1||he.lineRangeMapping.modifiedRange.startLineNumber===Y);if(!de)return;this.revert(de.lineRangeMapping),H.event.stopPropagation()}})),this._register(y.Event.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition,H=>{var B,V;if(H?.reason===3){const Y=(V=(B=this._diffModel.get())===null||B===void 0?void 0:B.diff.get())===null||V===void 0?void 0:V.mappings.find(ie=>ie.lineRangeMapping.modifiedRange.contains(H.position.lineNumber));Y?.lineRangeMapping.modifiedRange.isEmpty?this._audioCueService.playAudioCue(o.AudioCue.diffLineDeleted,{source:\"diffEditor.cursorPositionChanged\"}):Y?.lineRangeMapping.originalRange.isEmpty?this._audioCueService.playAudioCue(o.AudioCue.diffLineInserted,{source:\"diffEditor.cursorPositionChanged\"}):Y&&this._audioCueService.playAudioCue(o.AudioCue.diffLineModified,{source:\"diffEditor.cursorPositionChanged\"})}}));const X=this._diffModel.map((H,B)=>H?.isDiffUpToDate.read(B));this._register((0,D.autorunWithStore)((H,B)=>{if(X.read(H)===!1){const V=this._editorProgressService.show(!0,1e3);B.add((0,E.toDisposable)(()=>V.done()))}}))}_createInnerEditor(T,A,N,F){return T.createInstance(_.CodeEditorWidget,A,N,F)}_createDiffEditorContributions(){const T=S.EditorExtensionsRegistry.getDiffEditorContributions();for(const A of T)try{this._register(this._instantiationService.createInstance(A.ctor,this))}catch(N){(0,k.onUnexpectedError)(N)}}get _targetEditor(){return this._editors.modified}getEditorType(){return r.EditorType.IDiffEditor}layout(T){this._rootSizeObserver.observe(T)}hasTextFocus(){return this._editors.original.hasTextFocus()||this._editors.modified.hasTextFocus()}saveViewState(){var T;const A=this._editors.original.saveViewState(),N=this._editors.modified.saveViewState();return{original:A,modified:N,modelState:(T=this._diffModel.get())===null||T===void 0?void 0:T.serializeState()}}restoreViewState(T){var A;if(T&&T.original&&T.modified){const N=T;this._editors.original.restoreViewState(N.original),this._editors.modified.restoreViewState(N.modified),N.modelState&&((A=this._diffModel.get())===null||A===void 0||A.restoreSerializedState(N.modelState))}}createViewModel(T){return new w.DiffEditorViewModel(T,this._options,this._instantiationService.createInstance(h.WorkerBasedDocumentDiffProvider,{diffAlgorithm:this._options.diffAlgorithm.get()}))}getModel(){var T,A;return(A=(T=this._diffModel.get())===null||T===void 0?void 0:T.model)!==null&&A!==void 0?A:null}setModel(T){!T&&this._diffModel.get()&&this._accessibleDiffViewer.close();const A=T?\"model\"in T?T:this.createViewModel(T):void 0;this._editors.original.setModel(A?A.model.original:null),this._editors.modified.setModel(A?A.model.modified:null),(0,D.transaction)(N=>{this._diffModel.set(A,N)})}updateOptions(T){this._options.updateOptions(T)}getContainerDomNode(){return this._domElement}getOriginalEditor(){return this._editors.original}getModifiedEditor(){return this._editors.modified}getLineChanges(){var T;const A=(T=this._diffModel.get())===null||T===void 0?void 0:T.diff.get();return A?P(A):null}revert(T){var A;const N=(A=this._diffModel.get())===null||A===void 0?void 0:A.model;if(!N)return;const F=T.innerChanges?T.innerChanges.map(O=>({range:O.modifiedRange,text:N.original.getValueInRange(O.originalRange)})):[{range:T.modifiedRange.toExclusiveRange(),text:N.original.getValueInRange(T.originalRange.toExclusiveRange())}];this._editors.modified.executeEdits(\"diffEditor\",F)}accessibleDiffViewerNext(){this._accessibleDiffViewer.next()}accessibleDiffViewerPrev(){this._accessibleDiffViewer.prev()}};e.DiffEditorWidget2=M,e.DiffEditorWidget2=M=ke([fe(3,d.IContextKeyService),fe(4,l.IInstantiationService),fe(5,f.ICodeEditorService),fe(6,o.IAudioCueService),fe(7,I.IEditorProgressService)],M);function P(x){return x.mappings.map(T=>{const A=T.lineRangeMapping;let N,F,O,W,U=A.innerChanges;return A.originalRange.isEmpty?(N=A.originalRange.startLineNumber-1,F=0,U=void 0):(N=A.originalRange.startLineNumber,F=A.originalRange.endLineNumberExclusive-1),A.modifiedRange.isEmpty?(O=A.modifiedRange.startLineNumber-1,W=0,U=void 0):(O=A.modifiedRange.startLineNumber,W=A.modifiedRange.endLineNumberExclusive-1),{originalStartLineNumber:N,originalEndLineNumber:F,modifiedStartLineNumber:O,modifiedEndLineNumber:W,charChanges:U?.map(j=>({originalStartLineNumber:j.originalRange.startLineNumber,originalStartColumn:j.originalRange.startColumn,originalEndLineNumber:j.originalRange.endLineNumber,originalEndColumn:j.originalRange.endColumn,modifiedStartLineNumber:j.modifiedRange.startLineNumber,modifiedStartColumn:j.modifiedRange.startColumn,modifiedEndLineNumber:j.modifiedRange.endLineNumber,modifiedEndColumn:j.modifiedRange.endColumn}))}})}}),define(ne[162],se([1,0,47,33,161,27,15,8,43,23,84,32,18]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EmbeddedCodeEditorWidget=void 0;let n=class extends y.CodeEditorWidget{constructor(a,u,h,r,c,o,d,l,p,m,v,b,w){super(a,Object.assign(Object.assign({},r.getRawOptions()),{overflowWidgetsDomNode:r.getOverflowWidgetsDomNode()}),h,c,o,d,l,p,m,v,b,w),this._parentEditor=r,this._overwriteOptions=u,super.updateOptions(this._overwriteOptions),this._register(r.onDidChangeConfiguration(E=>this._onParentConfigurationChanged(E)))}getParentEditor(){return this._parentEditor}_onParentConfigurationChanged(a){super.updateOptions(this._parentEditor.getRawOptions()),super.updateOptions(this._overwriteOptions)}updateOptions(a){L.mixin(this._overwriteOptions,a,!0),super.updateOptions(this._overwriteOptions)}};e.EmbeddedCodeEditorWidget=n,e.EmbeddedCodeEditorWidget=n=ke([fe(4,f.IInstantiationService),fe(5,k.ICodeEditorService),fe(6,D.ICommandService),fe(7,S.IContextKeyService),fe(8,g.IThemeService),fe(9,_.INotificationService),fe(10,C.IAccessibilityService),fe(11,s.ILanguageConfigurationService),fe(12,i.ILanguageFeaturesService)],n)}),define(ne[877],se([1,0,13,2,16,12,5,24,21,48,40,633,30,31,23,437]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BracketMatchingController=void 0;const a=(0,n.registerColor)(\"editorOverviewRuler.bracketMatchForeground\",{dark:\"#A0A0A0\",light:\"#A0A0A0\",hcDark:\"#A0A0A0\",hcLight:\"#A0A0A0\"},s.localize(0,null));class u extends y.EditorAction{constructor(){super({id:\"editor.action.jumpToBracket\",label:s.localize(1,null),alias:\"Go to Bracket\",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.editorTextFocus,primary:3165,weight:100}})}run(l,p){var m;(m=o.get(p))===null||m===void 0||m.jumpToBracket()}}class h extends y.EditorAction{constructor(){super({id:\"editor.action.selectToBracket\",label:s.localize(2,null),alias:\"Select to Bracket\",precondition:void 0,description:{description:\"Select to Bracket\",args:[{name:\"args\",schema:{type:\"object\",properties:{selectBrackets:{type:\"boolean\",default:!0}}}}]}})}run(l,p,m){var v;let b=!0;m&&m.selectBrackets===!1&&(b=!1),(v=o.get(p))===null||v===void 0||v.selectToBracket(b)}}class r extends y.EditorAction{constructor(){super({id:\"editor.action.removeBrackets\",label:s.localize(3,null),alias:\"Remove Brackets\",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.editorTextFocus,primary:2561,weight:100}})}run(l,p){var m;(m=o.get(p))===null||m===void 0||m.removeBrackets(this.id)}}class c{constructor(l,p,m){this.position=l,this.brackets=p,this.options=m}}class o extends k.Disposable{static get(l){return l.getContribution(o.ID)}constructor(l){super(),this._editor=l,this._lastBracketsData=[],this._lastVersionId=0,this._decorations=this._editor.createDecorationsCollection(),this._updateBracketsSoon=this._register(new L.RunOnceScheduler(()=>this._updateBrackets(),50)),this._matchBrackets=this._editor.getOption(70),this._updateBracketsSoon.schedule(),this._register(l.onDidChangeCursorPosition(p=>{this._matchBrackets!==\"never\"&&this._updateBracketsSoon.schedule()})),this._register(l.onDidChangeModelContent(p=>{this._updateBracketsSoon.schedule()})),this._register(l.onDidChangeModel(p=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(l.onDidChangeModelLanguageConfiguration(p=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(l.onDidChangeConfiguration(p=>{p.hasChanged(70)&&(this._matchBrackets=this._editor.getOption(70),this._decorations.clear(),this._lastBracketsData=[],this._lastVersionId=0,this._updateBracketsSoon.schedule())})),this._register(l.onDidBlurEditorWidget(()=>{this._updateBracketsSoon.schedule()})),this._register(l.onDidFocusEditorWidget(()=>{this._updateBracketsSoon.schedule()}))}jumpToBracket(){if(!this._editor.hasModel())return;const l=this._editor.getModel(),p=this._editor.getSelections().map(m=>{const v=m.getStartPosition(),b=l.bracketPairs.matchBracket(v);let w=null;if(b)b[0].containsPosition(v)&&!b[1].containsPosition(v)?w=b[1].getStartPosition():b[1].containsPosition(v)&&(w=b[0].getStartPosition());else{const E=l.bracketPairs.findEnclosingBrackets(v);if(E)w=E[1].getStartPosition();else{const I=l.bracketPairs.findNextBracket(v);I&&I.range&&(w=I.range.getStartPosition())}}return w?new f.Selection(w.lineNumber,w.column,w.lineNumber,w.column):new f.Selection(v.lineNumber,v.column,v.lineNumber,v.column)});this._editor.setSelections(p),this._editor.revealRange(p[0])}selectToBracket(l){if(!this._editor.hasModel())return;const p=this._editor.getModel(),m=[];this._editor.getSelections().forEach(v=>{const b=v.getStartPosition();let w=p.bracketPairs.matchBracket(b);if(!w&&(w=p.bracketPairs.findEnclosingBrackets(b),!w)){const M=p.bracketPairs.findNextBracket(b);M&&M.range&&(w=p.bracketPairs.matchBracket(M.range.getStartPosition()))}let E=null,I=null;if(w){w.sort(S.Range.compareRangesUsingStarts);const[M,P]=w;if(E=l?M.getStartPosition():M.getEndPosition(),I=l?P.getEndPosition():P.getStartPosition(),P.containsPosition(b)){const x=E;E=I,I=x}}E&&I&&m.push(new f.Selection(E.lineNumber,E.column,I.lineNumber,I.column))}),m.length>0&&(this._editor.setSelections(m),this._editor.revealRange(m[0]))}removeBrackets(l){if(!this._editor.hasModel())return;const p=this._editor.getModel();this._editor.getSelections().forEach(m=>{const v=m.getPosition();let b=p.bracketPairs.matchBracket(v);b||(b=p.bracketPairs.findEnclosingBrackets(v)),b&&(this._editor.pushUndoStop(),this._editor.executeEdits(l,[{range:b[0],text:\"\"},{range:b[1],text:\"\"}]),this._editor.pushUndoStop())})}_updateBrackets(){if(this._matchBrackets===\"never\")return;this._recomputeBrackets();const l=[];let p=0;for(const m of this._lastBracketsData){const v=m.brackets;v&&(l[p++]={range:v[0],options:m.options},l[p++]={range:v[1],options:m.options})}this._decorations.set(l)}_recomputeBrackets(){if(!this._editor.hasModel()||!this._editor.hasWidgetFocus()){this._lastBracketsData=[],this._lastVersionId=0;return}const l=this._editor.getSelections();if(l.length>100){this._lastBracketsData=[],this._lastVersionId=0;return}const p=this._editor.getModel(),m=p.getVersionId();let v=[];this._lastVersionId===m&&(v=this._lastBracketsData);const b=[];let w=0;for(let x=0,T=l.length;x<T;x++){const A=l[x];A.isEmpty()&&(b[w++]=A.getStartPosition())}b.length>1&&b.sort(D.Position.compare);const E=[];let I=0,M=0;const P=v.length;for(let x=0,T=b.length;x<T;x++){const A=b[x];for(;M<P&&v[M].position.isBefore(A);)M++;if(M<P&&v[M].position.equals(A))E[I++]=v[M];else{let N=p.bracketPairs.matchBracket(A,20),F=o._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;!N&&this._matchBrackets===\"always\"&&(N=p.bracketPairs.findEnclosingBrackets(A,20),F=o._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER),E[I++]=new c(A,N,F)}}this._lastBracketsData=E,this._lastVersionId=m}}e.BracketMatchingController=o,o.ID=\"editor.contrib.bracketMatchingController\",o._DECORATION_OPTIONS_WITH_OVERVIEW_RULER=C.ModelDecorationOptions.register({description:\"bracket-match-overview\",stickiness:1,className:\"bracket-match\",overviewRuler:{color:(0,t.themeColorFromId)(a),position:g.OverviewRulerLane.Center}}),o._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER=C.ModelDecorationOptions.register({description:\"bracket-match-no-overview\",stickiness:1,className:\"bracket-match\"}),(0,y.registerEditorContribution)(o.ID,o,1),(0,y.registerEditorAction)(h),(0,y.registerEditorAction)(u),(0,y.registerEditorAction)(r),i.MenuRegistry.appendMenuItem(i.MenuId.MenubarGoMenu,{group:\"5_infile_nav\",command:{id:\"editor.action.jumpToBracket\",title:s.localize(4,null)},order:2})}),define(ne[878],se([1,0,7,129,5,40,439]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CodeLensWidget=e.CodeLensHelper=void 0;class S{constructor(i,n,t){this.afterColumn=1073741824,this.afterLineNumber=i,this.heightInPx=n,this._onHeight=t,this.suppressMouseDown=!0,this.domNode=document.createElement(\"div\")}onComputedHeight(i){this._lastHeight===void 0?this._lastHeight=i:this._lastHeight!==i&&(this._lastHeight=i,this._onHeight())}isVisible(){return this._lastHeight!==0&&this.domNode.hasAttribute(\"monaco-visible-view-zone\")}}class f{constructor(i,n){this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this._commands=new Map,this._isEmpty=!0,this._editor=i,this._id=`codelens.widget-${f._idPool++}`,this.updatePosition(n),this._domNode=document.createElement(\"span\"),this._domNode.className=\"codelens-decoration\"}withCommands(i,n){this._commands.clear();const t=[];let a=!1;for(let u=0;u<i.length;u++){const h=i[u];if(h&&(a=!0,h.command)){const r=(0,k.renderLabelWithIcons)(h.command.title.trim());h.command.id?(t.push(L.$(\"a\",{id:String(u),title:h.command.tooltip,role:\"button\"},...r)),this._commands.set(String(u),h.command)):t.push(L.$(\"span\",{title:h.command.tooltip},...r)),u+1<i.length&&t.push(L.$(\"span\",void 0,\"\\xA0|\\xA0\"))}}a?(L.reset(this._domNode,...t),this._isEmpty&&n&&this._domNode.classList.add(\"fadein\"),this._isEmpty=!1):L.reset(this._domNode,L.$(\"span\",void 0,\"no commands\"))}getCommand(i){return i.parentElement===this._domNode?this._commands.get(i.id):void 0}getId(){return this._id}getDomNode(){return this._domNode}updatePosition(i){const n=this._editor.getModel().getLineFirstNonWhitespaceColumn(i);this._widgetPosition={position:{lineNumber:i,column:n},preference:[1]}}getPosition(){return this._widgetPosition||null}}f._idPool=0;class _{constructor(){this._removeDecorations=[],this._addDecorations=[],this._addDecorationsCallbacks=[]}addDecoration(i,n){this._addDecorations.push(i),this._addDecorationsCallbacks.push(n)}removeDecoration(i){this._removeDecorations.push(i)}commit(i){const n=i.deltaDecorations(this._removeDecorations,this._addDecorations);for(let t=0,a=n.length;t<a;t++)this._addDecorationsCallbacks[t](n[t])}}e.CodeLensHelper=_;const g=D.ModelDecorationOptions.register({collapseOnReplaceEdit:!0,description:\"codelens\"});class C{constructor(i,n,t,a,u,h){this._isDisposed=!1,this._editor=n,this._data=i,this._decorationIds=[];let r;const c=[];this._data.forEach((o,d)=>{o.symbol.command&&c.push(o.symbol),t.addDecoration({range:o.symbol.range,options:g},l=>this._decorationIds[d]=l),r?r=y.Range.plusRange(r,o.symbol.range):r=y.Range.lift(o.symbol.range)}),this._viewZone=new S(r.startLineNumber-1,u,h),this._viewZoneId=a.addZone(this._viewZone),c.length>0&&(this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(c,!1))}_createContentWidgetIfNecessary(){this._contentWidget?this._editor.layoutContentWidget(this._contentWidget):(this._contentWidget=new f(this._editor,this._viewZone.afterLineNumber+1),this._editor.addContentWidget(this._contentWidget))}dispose(i,n){this._decorationIds.forEach(i.removeDecoration,i),this._decorationIds=[],n?.removeZone(this._viewZoneId),this._contentWidget&&(this._editor.removeContentWidget(this._contentWidget),this._contentWidget=void 0),this._isDisposed=!0}isDisposed(){return this._isDisposed}isValid(){return this._decorationIds.some((i,n)=>{const t=this._editor.getModel().getDecorationRange(i),a=this._data[n].symbol;return!!(t&&y.Range.isEmpty(a.range)===t.isEmpty())})}updateCodeLensSymbols(i,n){this._decorationIds.forEach(n.removeDecoration,n),this._decorationIds=[],this._data=i,this._data.forEach((t,a)=>{n.addDecoration({range:t.symbol.range,options:g},u=>this._decorationIds[a]=u)})}updateHeight(i,n){this._viewZone.heightInPx=i,n.layoutZone(this._viewZoneId),this._contentWidget&&this._editor.layoutContentWidget(this._contentWidget)}computeIfNecessary(i){if(!this._viewZone.isVisible())return null;for(let n=0;n<this._decorationIds.length;n++){const t=i.getDecorationRange(this._decorationIds[n]);t&&(this._data[n].symbol.range=t)}return this._data}updateCommands(i){this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(i,!0);for(let n=0;n<this._data.length;n++){const t=i[n];if(t){const{symbol:a}=this._data[n];a.command=t.command||a.command}}}getCommand(i){var n;return(n=this._contentWidget)===null||n===void 0?void 0:n.getCommand(i)}getLineNumber(){const i=this._editor.getModel().getDecorationRange(this._decorationIds[0]);return i?i.startLineNumber:-1}update(i){if(this.isValid()){const n=this._editor.getModel().getDecorationRange(this._decorationIds[0]);n&&(this._viewZone.afterLineNumber=n.startLineNumber-1,i.layoutZone(this._viewZoneId),this._contentWidget&&(this._contentWidget.updatePosition(n.startLineNumber),this._editor.layoutContentWidget(this._contentWidget)))}}}e.CodeLensWidget=C}),define(ne[879],se([1,0,13,9,2,108,16,36,21,332,790,878,643,27,43,71,76,18]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CodeLensContribution=void 0;let r=class{constructor(o,d,l,p,m,v){this._editor=o,this._languageFeaturesService=d,this._commandService=p,this._notificationService=m,this._codeLensCache=v,this._disposables=new y.DisposableStore,this._localToDispose=new y.DisposableStore,this._lenses=[],this._oldCodeLensModels=new y.DisposableStore,this._provideCodeLensDebounce=l.for(d.codeLensProvider,\"CodeLensProvide\",{min:250}),this._resolveCodeLensesDebounce=l.for(d.codeLensProvider,\"CodeLensResolve\",{min:250,salt:\"resolve\"}),this._resolveCodeLensesScheduler=new L.RunOnceScheduler(()=>this._resolveCodeLensesInViewport(),this._resolveCodeLensesDebounce.default()),this._disposables.add(this._editor.onDidChangeModel(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeConfiguration(b=>{(b.hasChanged(49)||b.hasChanged(18)||b.hasChanged(17))&&this._updateLensStyle(),b.hasChanged(16)&&this._onModelChange()})),this._disposables.add(d.codeLensProvider.onDidChange(this._onModelChange,this)),this._onModelChange(),this._updateLensStyle()}dispose(){var o;this._localDispose(),this._disposables.dispose(),this._oldCodeLensModels.dispose(),(o=this._currentCodeLensModel)===null||o===void 0||o.dispose()}_getLayoutInfo(){const o=Math.max(1.3,this._editor.getOption(65)/this._editor.getOption(51));let d=this._editor.getOption(18);return(!d||d<5)&&(d=this._editor.getOption(51)*.9|0),{fontSize:d,codeLensHeight:d*o|0}}_updateLensStyle(){const{codeLensHeight:o,fontSize:d}=this._getLayoutInfo(),l=this._editor.getOption(17),p=this._editor.getOption(49),{style:m}=this._editor.getContainerDomNode();m.setProperty(\"--vscode-editorCodeLens-lineHeight\",`${o}px`),m.setProperty(\"--vscode-editorCodeLens-fontSize\",`${d}px`),m.setProperty(\"--vscode-editorCodeLens-fontFeatureSettings\",p.fontFeatureSettings),l&&(m.setProperty(\"--vscode-editorCodeLens-fontFamily\",l),m.setProperty(\"--vscode-editorCodeLens-fontFamilyDefault\",f.EDITOR_FONT_DEFAULTS.fontFamily)),this._editor.changeViewZones(v=>{for(const b of this._lenses)b.updateHeight(o,v)})}_localDispose(){var o,d,l;(o=this._getCodeLensModelPromise)===null||o===void 0||o.cancel(),this._getCodeLensModelPromise=void 0,(d=this._resolveCodeLensesPromise)===null||d===void 0||d.cancel(),this._resolveCodeLensesPromise=void 0,this._localToDispose.clear(),this._oldCodeLensModels.clear(),(l=this._currentCodeLensModel)===null||l===void 0||l.dispose()}_onModelChange(){this._localDispose();const o=this._editor.getModel();if(!o||!this._editor.getOption(16))return;const d=this._codeLensCache.get(o);if(d&&this._renderCodeLensSymbols(d),!this._languageFeaturesService.codeLensProvider.has(o)){d&&this._localToDispose.add((0,L.disposableTimeout)(()=>{const p=this._codeLensCache.get(o);d===p&&(this._codeLensCache.delete(o),this._onModelChange())},30*1e3));return}for(const p of this._languageFeaturesService.codeLensProvider.all(o))if(typeof p.onDidChange==\"function\"){const m=p.onDidChange(()=>l.schedule());this._localToDispose.add(m)}const l=new L.RunOnceScheduler(()=>{var p;const m=Date.now();(p=this._getCodeLensModelPromise)===null||p===void 0||p.cancel(),this._getCodeLensModelPromise=(0,L.createCancelablePromise)(v=>(0,g.getCodeLensModel)(this._languageFeaturesService.codeLensProvider,o,v)),this._getCodeLensModelPromise.then(v=>{this._currentCodeLensModel&&this._oldCodeLensModels.add(this._currentCodeLensModel),this._currentCodeLensModel=v,this._codeLensCache.put(o,v);const b=this._provideCodeLensDebounce.update(o,Date.now()-m);l.delay=b,this._renderCodeLensSymbols(v),this._resolveCodeLensesInViewportSoon()},k.onUnexpectedError)},this._provideCodeLensDebounce.get(o));this._localToDispose.add(l),this._localToDispose.add((0,y.toDisposable)(()=>this._resolveCodeLensesScheduler.cancel())),this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{var p;this._editor.changeDecorations(m=>{this._editor.changeViewZones(v=>{const b=[];let w=-1;this._lenses.forEach(I=>{!I.isValid()||w===I.getLineNumber()?b.push(I):(I.update(v),w=I.getLineNumber())});const E=new s.CodeLensHelper;b.forEach(I=>{I.dispose(E,v),this._lenses.splice(this._lenses.indexOf(I),1)}),E.commit(m)})}),l.schedule(),this._resolveCodeLensesScheduler.cancel(),(p=this._resolveCodeLensesPromise)===null||p===void 0||p.cancel(),this._resolveCodeLensesPromise=void 0})),this._localToDispose.add(this._editor.onDidFocusEditorWidget(()=>{l.schedule()})),this._localToDispose.add(this._editor.onDidScrollChange(p=>{p.scrollTopChanged&&this._lenses.length>0&&this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(this._editor.onDidLayoutChange(()=>{this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add((0,y.toDisposable)(()=>{if(this._editor.getModel()){const p=D.StableEditorScrollState.capture(this._editor);this._editor.changeDecorations(m=>{this._editor.changeViewZones(v=>{this._disposeAllLenses(m,v)})}),p.restore(this._editor)}else this._disposeAllLenses(void 0,void 0)})),this._localToDispose.add(this._editor.onMouseDown(p=>{if(p.target.type!==9)return;let m=p.target.element;if(m?.tagName===\"SPAN\"&&(m=m.parentElement),m?.tagName===\"A\")for(const v of this._lenses){const b=v.getCommand(m);if(b){this._commandService.executeCommand(b.id,...b.arguments||[]).catch(w=>this._notificationService.error(w));break}}})),l.schedule()}_disposeAllLenses(o,d){const l=new s.CodeLensHelper;for(const p of this._lenses)p.dispose(l,d);o&&l.commit(o),this._lenses.length=0}_renderCodeLensSymbols(o){if(!this._editor.hasModel())return;const d=this._editor.getModel().getLineCount(),l=[];let p;for(const b of o.lenses){const w=b.symbol.range.startLineNumber;w<1||w>d||(p&&p[p.length-1].symbol.range.startLineNumber===w?p.push(b):(p=[b],l.push(p)))}if(!l.length&&!this._lenses.length)return;const m=D.StableEditorScrollState.capture(this._editor),v=this._getLayoutInfo();this._editor.changeDecorations(b=>{this._editor.changeViewZones(w=>{const E=new s.CodeLensHelper;let I=0,M=0;for(;M<l.length&&I<this._lenses.length;){const P=l[M][0].symbol.range.startLineNumber,x=this._lenses[I].getLineNumber();x<P?(this._lenses[I].dispose(E,w),this._lenses.splice(I,1)):x===P?(this._lenses[I].updateCodeLensSymbols(l[M],E),M++,I++):(this._lenses.splice(I,0,new s.CodeLensWidget(l[M],this._editor,E,w,v.codeLensHeight,()=>this._resolveCodeLensesInViewportSoon())),I++,M++)}for(;I<this._lenses.length;)this._lenses[I].dispose(E,w),this._lenses.splice(I,1);for(;M<l.length;)this._lenses.push(new s.CodeLensWidget(l[M],this._editor,E,w,v.codeLensHeight,()=>this._resolveCodeLensesInViewportSoon())),M++;E.commit(b)})}),m.restore(this._editor)}_resolveCodeLensesInViewportSoon(){this._editor.getModel()&&this._resolveCodeLensesScheduler.schedule()}_resolveCodeLensesInViewport(){var o;(o=this._resolveCodeLensesPromise)===null||o===void 0||o.cancel(),this._resolveCodeLensesPromise=void 0;const d=this._editor.getModel();if(!d)return;const l=[],p=[];if(this._lenses.forEach(b=>{const w=b.computeIfNecessary(d);w&&(l.push(w),p.push(b))}),l.length===0)return;const m=Date.now(),v=(0,L.createCancelablePromise)(b=>{const w=l.map((E,I)=>{const M=new Array(E.length),P=E.map((x,T)=>!x.symbol.command&&typeof x.provider.resolveCodeLens==\"function\"?Promise.resolve(x.provider.resolveCodeLens(d,x.symbol,b)).then(A=>{M[T]=A},k.onUnexpectedExternalError):(M[T]=x.symbol,Promise.resolve(void 0)));return Promise.all(P).then(()=>{!b.isCancellationRequested&&!p[I].isDisposed()&&p[I].updateCommands(M)})});return Promise.all(w)});this._resolveCodeLensesPromise=v,this._resolveCodeLensesPromise.then(()=>{const b=this._resolveCodeLensesDebounce.update(d,Date.now()-m);this._resolveCodeLensesScheduler.delay=b,this._currentCodeLensModel&&this._codeLensCache.put(d,this._currentCodeLensModel),this._oldCodeLensModels.clear(),v===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)},b=>{(0,k.onUnexpectedError)(b),v===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)})}getModel(){return this._currentCodeLensModel}};e.CodeLensContribution=r,r.ID=\"css.editor.codeLens\",e.CodeLensContribution=r=ke([fe(1,h.ILanguageFeaturesService),fe(2,u.ILanguageFeatureDebounceService),fe(3,n.ICommandService),fe(4,t.INotificationService),fe(5,C.ICodeLensCache)],r),(0,S.registerEditorContribution)(r.ID,r,1),(0,S.registerEditorAction)(class extends S.EditorAction{constructor(){super({id:\"codelens.showLensesInCurrentLine\",precondition:_.EditorContextKeys.hasCodeLensProvider,label:(0,i.localize)(0,null),alias:\"Show CodeLens Commands For Current Line\"})}run(o,d){return we(this,void 0,void 0,function*(){if(!d.hasModel())return;const l=o.get(a.IQuickInputService),p=o.get(n.ICommandService),m=o.get(t.INotificationService),v=d.getSelection().positionLineNumber,b=d.getContribution(r.ID);if(!b)return;const w=b.getModel();if(!w)return;const E=[];for(const M of w.lenses)M.symbol.command&&M.symbol.range.startLineNumber===v&&E.push({label:M.symbol.command.title,command:M.symbol.command});if(E.length===0)return;const I=yield l.pick(E,{canPickMany:!1});if(I){if(w.isDisposed)return yield p.executeCommand(this.id);try{yield p.executeCommand(I.command.id,...I.command.arguments||[])}catch(M){m.error(M)}}})}})}),define(ne[363],se([1,0,13,38,9,6,2,58,11,159,16,5,40,76,18,343,28]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){\"use strict\";var h;Object.defineProperty(e,\"__esModule\",{value:!0}),e.DecoratorLimitReporter=e.ColorDetector=e.ColorDecorationInjectedTextMarker=void 0,e.ColorDecorationInjectedTextMarker=Object.create({});let r=h=class extends S.Disposable{constructor(d,l,p,m){super(),this._editor=d,this._configurationService=l,this._languageFeaturesService=p,this._localToDispose=this._register(new S.DisposableStore),this._decorationsIds=[],this._colorDatas=new Map,this._colorDecoratorIds=this._editor.createDecorationsCollection(),this._ruleFactory=new g.DynamicCssRules(this._editor),this._decoratorLimitReporter=new c,this._colorDecorationClassRefs=this._register(new S.DisposableStore),this._debounceInformation=m.for(p.colorProvider,\"Document Colors\",{min:h.RECOMPUTE_TIME}),this._register(d.onDidChangeModel(()=>{this._isColorDecoratorsEnabled=this.isEnabled(),this.updateColors()})),this._register(d.onDidChangeModelLanguage(()=>this.updateColors())),this._register(p.colorProvider.onDidChange(()=>this.updateColors())),this._register(d.onDidChangeConfiguration(v=>{const b=this._isColorDecoratorsEnabled;this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(144);const w=b!==this._isColorDecoratorsEnabled||v.hasChanged(20),E=v.hasChanged(144);(w||E)&&(this._isColorDecoratorsEnabled?this.updateColors():this.removeAllDecorations())})),this._timeoutTimer=null,this._computePromise=null,this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(144),this.updateColors()}isEnabled(){const d=this._editor.getModel();if(!d)return!1;const l=d.getLanguageId(),p=this._configurationService.getValue(l);if(p&&typeof p==\"object\"){const m=p.colorDecorators;if(m&&m.enable!==void 0&&!m.enable)return m.enable}return this._editor.getOption(19)}static get(d){return d.getContribution(this.ID)}dispose(){this.stop(),this.removeAllDecorations(),super.dispose()}updateColors(){if(this.stop(),!this._isColorDecoratorsEnabled)return;const d=this._editor.getModel();!d||!this._languageFeaturesService.colorProvider.has(d)||(this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{this._timeoutTimer||(this._timeoutTimer=new L.TimeoutTimer,this._timeoutTimer.cancelAndSet(()=>{this._timeoutTimer=null,this.beginCompute()},this._debounceInformation.get(d)))})),this.beginCompute())}beginCompute(){return we(this,void 0,void 0,function*(){this._computePromise=(0,L.createCancelablePromise)(d=>we(this,void 0,void 0,function*(){const l=this._editor.getModel();if(!l)return[];const p=new f.StopWatch(!1),m=yield(0,a.getColors)(this._languageFeaturesService.colorProvider,l,d,this._isDefaultColorDecoratorsEnabled);return this._debounceInformation.update(l,p.elapsed()),m}));try{const d=yield this._computePromise;this.updateDecorations(d),this.updateColorDecorators(d),this._computePromise=null}catch(d){(0,y.onUnexpectedError)(d)}})}stop(){this._timeoutTimer&&(this._timeoutTimer.cancel(),this._timeoutTimer=null),this._computePromise&&(this._computePromise.cancel(),this._computePromise=null),this._localToDispose.clear()}updateDecorations(d){const l=d.map(p=>({range:{startLineNumber:p.colorInfo.range.startLineNumber,startColumn:p.colorInfo.range.startColumn,endLineNumber:p.colorInfo.range.endLineNumber,endColumn:p.colorInfo.range.endColumn},options:i.ModelDecorationOptions.EMPTY}));this._editor.changeDecorations(p=>{this._decorationsIds=p.deltaDecorations(this._decorationsIds,l),this._colorDatas=new Map,this._decorationsIds.forEach((m,v)=>this._colorDatas.set(m,d[v]))})}updateColorDecorators(d){this._colorDecorationClassRefs.clear();const l=[],p=this._editor.getOption(20);for(let v=0;v<d.length&&l.length<p;v++){const{red:b,green:w,blue:E,alpha:I}=d[v].colorInfo.color,M=new k.RGBA(Math.round(b*255),Math.round(w*255),Math.round(E*255),I),P=`rgba(${M.r}, ${M.g}, ${M.b}, ${M.a})`,x=this._colorDecorationClassRefs.add(this._ruleFactory.createClassNameRef({backgroundColor:P}));l.push({range:{startLineNumber:d[v].colorInfo.range.startLineNumber,startColumn:d[v].colorInfo.range.startColumn,endLineNumber:d[v].colorInfo.range.endLineNumber,endColumn:d[v].colorInfo.range.endColumn},options:{description:\"colorDetector\",before:{content:_.noBreakWhitespace,inlineClassName:`${x.className} colorpicker-color-decoration`,inlineClassNameAffectsLetterSpacing:!0,attachedData:e.ColorDecorationInjectedTextMarker}}})}const m=p<d.length?p:!1;this._decoratorLimitReporter.update(d.length,m),this._colorDecoratorIds.set(l)}removeAllDecorations(){this._editor.removeDecorations(this._decorationsIds),this._decorationsIds=[],this._colorDecoratorIds.clear(),this._colorDecorationClassRefs.clear()}getColorData(d){const l=this._editor.getModel();if(!l)return null;const p=l.getDecorationsInRange(s.Range.fromPositions(d,d)).filter(m=>this._colorDatas.has(m.id));return p.length===0?null:this._colorDatas.get(p[0].id)}isColorDecoration(d){return this._colorDecoratorIds.has(d)}};e.ColorDetector=r,r.ID=\"editor.contrib.colorDetector\",r.RECOMPUTE_TIME=1e3,e.ColorDetector=r=h=ke([fe(1,u.IConfigurationService),fe(2,t.ILanguageFeaturesService),fe(3,n.ILanguageFeatureDebounceService)],r);class c{constructor(){this._onDidChange=new D.Emitter,this._computed=0,this._limited=!1}update(d,l){(d!==this._computed||l!==this._limited)&&(this._computed=d,this._limited=l,this._onDidChange.fire())}}e.DecoratorLimitReporter=c,(0,C.registerEditorContribution)(r.ID,r,1)}),define(ne[364],se([1,0,13,19,38,2,5,343,363,538,831,23,7]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StandaloneColorPickerParticipant=e.StandaloneColorPickerHover=e.ColorHoverParticipant=e.ColorHover=void 0;class n{constructor(l,p,m,v){this.owner=l,this.range=p,this.model=m,this.provider=v,this.forceShowAtRange=!0}isValidForHoverAnchor(l){return l.type===1&&this.range.startColumn<=l.range.startColumn&&this.range.endColumn>=l.range.endColumn}}e.ColorHover=n;let t=class{constructor(l,p){this._editor=l,this._themeService=p,this.hoverOrdinal=2}computeSync(l,p){return[]}computeAsync(l,p,m){return L.AsyncIterableObject.fromPromise(this._computeAsync(l,p,m))}_computeAsync(l,p,m){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel())return[];const v=_.ColorDetector.get(this._editor);if(!v)return[];for(const b of p){if(!v.isColorDecoration(b))continue;const w=v.getColorData(b.range.getStartPosition());if(w)return[yield h(this,this._editor.getModel(),w.colorInfo,w.provider)]}return[]})}renderHoverParts(l,p){return r(this,this._editor,this._themeService,p,l)}};e.ColorHoverParticipant=t,e.ColorHoverParticipant=t=ke([fe(1,s.IThemeService)],t);class a{constructor(l,p,m,v){this.owner=l,this.range=p,this.model=m,this.provider=v}}e.StandaloneColorPickerHover=a;let u=class{constructor(l,p){this._editor=l,this._themeService=p,this._color=null}createColorHover(l,p,m){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel()||!_.ColorDetector.get(this._editor))return null;const b=yield(0,f.getColors)(m,this._editor.getModel(),k.CancellationToken.None);let w=null,E=null;for(const x of b){const T=x.colorInfo;S.Range.containsRange(T.range,l.range)&&(w=T,E=x.provider)}const I=w??l,M=E??p,P=!!w;return{colorHover:yield h(this,this._editor.getModel(),I,M),foundInEditor:P}})}updateEditorModel(l){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel())return;const p=l.model;let m=new S.Range(l.range.startLineNumber,l.range.startColumn,l.range.endLineNumber,l.range.endColumn);this._color&&(yield o(this._editor.getModel(),p,this._color,m,l),m=c(this._editor,m,p))})}renderHoverParts(l,p){return r(this,this._editor,this._themeService,p,l)}set color(l){this._color=l}get color(){return this._color}};e.StandaloneColorPickerParticipant=u,e.StandaloneColorPickerParticipant=u=ke([fe(1,s.IThemeService)],u);function h(d,l,p,m){return we(this,void 0,void 0,function*(){const v=l.getValueInRange(p.range),{red:b,green:w,blue:E,alpha:I}=p.color,M=new y.RGBA(Math.round(b*255),Math.round(w*255),Math.round(E*255),I),P=new y.Color(M),x=yield(0,f.getColorPresentations)(l,p,m,k.CancellationToken.None),T=new g.ColorPickerModel(P,[],0);return T.colorPresentations=x||[],T.guessColorPresentation(P,v),d instanceof t?new n(d,S.Range.lift(p.range),T,m):new a(d,S.Range.lift(p.range),T,m)})}function r(d,l,p,m,v){if(m.length===0||!l.hasModel())return D.Disposable.None;if(v.setMinimumDimensions){const T=l.getOption(65)+8;v.setMinimumDimensions(new i.Dimension(302,T))}const b=new D.DisposableStore,w=m[0],E=l.getModel(),I=w.model,M=b.add(new C.ColorPickerWidget(v.fragment,I,l.getOption(140),p,d instanceof u));v.setColorPicker(M);let P=!1,x=new S.Range(w.range.startLineNumber,w.range.startColumn,w.range.endLineNumber,w.range.endColumn);if(d instanceof u){const T=m[0].model.color;d.color=T,o(E,I,T,x,w),b.add(I.onColorFlushed(A=>{d.color=A}))}else b.add(I.onColorFlushed(T=>we(this,void 0,void 0,function*(){yield o(E,I,T,x,w),P=!0,x=c(l,x,I,v)})));return b.add(I.onDidChangeColor(T=>{o(E,I,T,x,w)})),b.add(l.onDidChangeModelContent(T=>{P?P=!1:(v.hide(),l.focus())})),b}function c(d,l,p,m){let v,b;if(p.presentation.textEdit){v=[p.presentation.textEdit],b=new S.Range(p.presentation.textEdit.range.startLineNumber,p.presentation.textEdit.range.startColumn,p.presentation.textEdit.range.endLineNumber,p.presentation.textEdit.range.endColumn);const w=d.getModel()._setTrackedRange(null,b,3);d.pushUndoStop(),d.executeEdits(\"colorpicker\",v),b=d.getModel()._getTrackedRange(w)||b}else v=[{range:l,text:p.presentation.label,forceMoveMarkers:!1}],b=l.setEndPosition(l.endLineNumber,l.startColumn+p.presentation.label.length),d.pushUndoStop(),d.executeEdits(\"colorpicker\",v);return p.presentation.additionalTextEdits&&(v=[...p.presentation.additionalTextEdits],d.executeEdits(\"colorpicker\",v),m&&m.hide()),d.pushUndoStop(),b}function o(d,l,p,m,v){return we(this,void 0,void 0,function*(){const b=yield(0,f.getColorPresentations)(d,{range:m,color:{red:p.rgba.r/255,green:p.rgba.g/255,blue:p.rgba.b/255,alpha:p.rgba.a}},v.provider,k.CancellationToken.None);l.colorPresentations=b||[]})}}),define(ne[880],se([1,0,2,17,16,12,5,24,40,540,440]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DragAndDropController=void 0;function C(i){return k.isMacintosh?i.altKey:i.ctrlKey}class s extends L.Disposable{constructor(n){super(),this._editor=n,this._dndDecorationIds=this._editor.createDecorationsCollection(),this._register(this._editor.onMouseDown(t=>this._onEditorMouseDown(t))),this._register(this._editor.onMouseUp(t=>this._onEditorMouseUp(t))),this._register(this._editor.onMouseDrag(t=>this._onEditorMouseDrag(t))),this._register(this._editor.onMouseDrop(t=>this._onEditorMouseDrop(t))),this._register(this._editor.onMouseDropCanceled(()=>this._onEditorMouseDropCanceled())),this._register(this._editor.onKeyDown(t=>this.onEditorKeyDown(t))),this._register(this._editor.onKeyUp(t=>this.onEditorKeyUp(t))),this._register(this._editor.onDidBlurEditorWidget(()=>this.onEditorBlur())),this._register(this._editor.onDidBlurEditorText(()=>this.onEditorBlur())),this._mouseDown=!1,this._modifierPressed=!1,this._dragSelection=null}onEditorBlur(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1}onEditorKeyDown(n){!this._editor.getOption(34)||this._editor.getOption(21)||(C(n)&&(this._modifierPressed=!0),this._mouseDown&&C(n)&&this._editor.updateOptions({mouseStyle:\"copy\"}))}onEditorKeyUp(n){!this._editor.getOption(34)||this._editor.getOption(21)||(C(n)&&(this._modifierPressed=!1),this._mouseDown&&n.keyCode===s.TRIGGER_KEY_VALUE&&this._editor.updateOptions({mouseStyle:\"default\"}))}_onEditorMouseDown(n){this._mouseDown=!0}_onEditorMouseUp(n){this._mouseDown=!1,this._editor.updateOptions({mouseStyle:\"text\"})}_onEditorMouseDrag(n){const t=n.target;if(this._dragSelection===null){const u=(this._editor.getSelections()||[]).filter(h=>t.position&&h.containsPosition(t.position));if(u.length===1)this._dragSelection=u[0];else return}C(n.event)?this._editor.updateOptions({mouseStyle:\"copy\"}):this._editor.updateOptions({mouseStyle:\"default\"}),t.position&&(this._dragSelection.containsPosition(t.position)?this._removeDecoration():this.showAt(t.position))}_onEditorMouseDropCanceled(){this._editor.updateOptions({mouseStyle:\"text\"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}_onEditorMouseDrop(n){if(n.target&&(this._hitContent(n.target)||this._hitMargin(n.target))&&n.target.position){const t=new D.Position(n.target.position.lineNumber,n.target.position.column);if(this._dragSelection===null){let a=null;if(n.event.shiftKey){const u=this._editor.getSelection();if(u){const{selectionStartLineNumber:h,selectionStartColumn:r}=u;a=[new f.Selection(h,r,t.lineNumber,t.column)]}}else a=(this._editor.getSelections()||[]).map(u=>u.containsPosition(t)?new f.Selection(t.lineNumber,t.column,t.lineNumber,t.column):u);this._editor.setSelections(a||[],\"mouse\",3)}else(!this._dragSelection.containsPosition(t)||(C(n.event)||this._modifierPressed)&&(this._dragSelection.getEndPosition().equals(t)||this._dragSelection.getStartPosition().equals(t)))&&(this._editor.pushUndoStop(),this._editor.executeCommand(s.ID,new g.DragAndDropCommand(this._dragSelection,t,C(n.event)||this._modifierPressed)),this._editor.pushUndoStop())}this._editor.updateOptions({mouseStyle:\"text\"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}showAt(n){this._dndDecorationIds.set([{range:new S.Range(n.lineNumber,n.column,n.lineNumber,n.column),options:s._DECORATION_OPTIONS}]),this._editor.revealPosition(n,1)}_removeDecoration(){this._dndDecorationIds.clear()}_hitContent(n){return n.type===6||n.type===7}_hitMargin(n){return n.type===2||n.type===3||n.type===4}dispose(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1,super.dispose()}}e.DragAndDropController=s,s.ID=\"editor.contrib.dragAndDrop\",s.TRIGGER_KEY_VALUE=k.isMacintosh?6:5,s._DECORATION_OPTIONS=_.ModelDecorationOptions.register({description:\"dnd-target\",className:\"dnd-target\"}),(0,y.registerEditorContribution)(s.ID,s,2)}),define(ne[881],se([1,0,5,48,40,31,23]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindDecorations=void 0;class f{constructor(g){this._editor=g,this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null,this._startPosition=this._editor.getPosition()}dispose(){this._editor.removeDecorations(this._allDecorations()),this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}reset(){this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}getCount(){return this._decorations.length}getFindScope(){return this._findScopeDecorationIds[0]?this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]):null}getFindScopes(){if(this._findScopeDecorationIds.length){const g=this._findScopeDecorationIds.map(C=>this._editor.getModel().getDecorationRange(C)).filter(C=>!!C);if(g.length)return g}return null}getStartPosition(){return this._startPosition}setStartPosition(g){this._startPosition=g,this.setCurrentFindMatch(null)}_getDecorationIndex(g){const C=this._decorations.indexOf(g);return C>=0?C+1:1}getDecorationRangeAt(g){const C=g<this._decorations.length?this._decorations[g]:null;return C?this._editor.getModel().getDecorationRange(C):null}getCurrentMatchesPosition(g){const C=this._editor.getModel().getDecorationsInRange(g);for(const s of C){const i=s.options;if(i===f._FIND_MATCH_DECORATION||i===f._CURRENT_FIND_MATCH_DECORATION)return this._getDecorationIndex(s.id)}return 0}setCurrentFindMatch(g){let C=null,s=0;if(g)for(let i=0,n=this._decorations.length;i<n;i++){const t=this._editor.getModel().getDecorationRange(this._decorations[i]);if(g.equalsRange(t)){C=this._decorations[i],s=i+1;break}}return(this._highlightedDecorationId!==null||C!==null)&&this._editor.changeDecorations(i=>{if(this._highlightedDecorationId!==null&&(i.changeDecorationOptions(this._highlightedDecorationId,f._FIND_MATCH_DECORATION),this._highlightedDecorationId=null),C!==null&&(this._highlightedDecorationId=C,i.changeDecorationOptions(this._highlightedDecorationId,f._CURRENT_FIND_MATCH_DECORATION)),this._rangeHighlightDecorationId!==null&&(i.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),C!==null){let n=this._editor.getModel().getDecorationRange(C);if(n.startLineNumber!==n.endLineNumber&&n.endColumn===1){const t=n.endLineNumber-1,a=this._editor.getModel().getLineMaxColumn(t);n=new L.Range(n.startLineNumber,n.startColumn,t,a)}this._rangeHighlightDecorationId=i.addDecoration(n,f._RANGE_HIGHLIGHT_DECORATION)}}),s}set(g,C){this._editor.changeDecorations(s=>{let i=f._FIND_MATCH_DECORATION;const n=[];if(g.length>1e3){i=f._FIND_MATCH_NO_OVERVIEW_DECORATION;const a=this._editor.getModel().getLineCount(),h=this._editor.getLayoutInfo().height/a,r=Math.max(2,Math.ceil(3/h));let c=g[0].range.startLineNumber,o=g[0].range.endLineNumber;for(let d=1,l=g.length;d<l;d++){const p=g[d].range;o+r>=p.startLineNumber?p.endLineNumber>o&&(o=p.endLineNumber):(n.push({range:new L.Range(c,1,o,1),options:f._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),c=p.startLineNumber,o=p.endLineNumber)}n.push({range:new L.Range(c,1,o,1),options:f._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}const t=new Array(g.length);for(let a=0,u=g.length;a<u;a++)t[a]={range:g[a].range,options:i};this._decorations=s.deltaDecorations(this._decorations,t),this._overviewRulerApproximateDecorations=s.deltaDecorations(this._overviewRulerApproximateDecorations,n),this._rangeHighlightDecorationId&&(s.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),this._findScopeDecorationIds.length&&(this._findScopeDecorationIds.forEach(a=>s.removeDecoration(a)),this._findScopeDecorationIds=[]),C?.length&&(this._findScopeDecorationIds=C.map(a=>s.addDecoration(a,f._FIND_SCOPE_DECORATION)))})}matchBeforePosition(g){if(this._decorations.length===0)return null;for(let C=this._decorations.length-1;C>=0;C--){const s=this._decorations[C],i=this._editor.getModel().getDecorationRange(s);if(!(!i||i.endLineNumber>g.lineNumber)){if(i.endLineNumber<g.lineNumber)return i;if(!(i.endColumn>g.column))return i}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])}matchAfterPosition(g){if(this._decorations.length===0)return null;for(let C=0,s=this._decorations.length;C<s;C++){const i=this._decorations[C],n=this._editor.getModel().getDecorationRange(i);if(!(!n||n.startLineNumber<g.lineNumber)){if(n.startLineNumber>g.lineNumber)return n;if(!(n.startColumn<g.column))return n}}return this._editor.getModel().getDecorationRange(this._decorations[0])}_allDecorations(){let g=[];return g=g.concat(this._decorations),g=g.concat(this._overviewRulerApproximateDecorations),this._findScopeDecorationIds.length&&g.push(...this._findScopeDecorationIds),this._rangeHighlightDecorationId&&g.push(this._rangeHighlightDecorationId),g}}e.FindDecorations=f,f._CURRENT_FIND_MATCH_DECORATION=y.ModelDecorationOptions.register({description:\"current-find-match\",stickiness:1,zIndex:13,className:\"currentFindMatch\",showIfCollapsed:!0,overviewRuler:{color:(0,S.themeColorFromId)(D.overviewRulerFindMatchForeground),position:k.OverviewRulerLane.Center},minimap:{color:(0,S.themeColorFromId)(D.minimapFindMatch),position:k.MinimapPosition.Inline}}),f._FIND_MATCH_DECORATION=y.ModelDecorationOptions.register({description:\"find-match\",stickiness:1,zIndex:10,className:\"findMatch\",showIfCollapsed:!0,overviewRuler:{color:(0,S.themeColorFromId)(D.overviewRulerFindMatchForeground),position:k.OverviewRulerLane.Center},minimap:{color:(0,S.themeColorFromId)(D.minimapFindMatch),position:k.MinimapPosition.Inline}}),f._FIND_MATCH_NO_OVERVIEW_DECORATION=y.ModelDecorationOptions.register({description:\"find-match-no-overview\",stickiness:1,className:\"findMatch\",showIfCollapsed:!0}),f._FIND_MATCH_ONLY_OVERVIEW_DECORATION=y.ModelDecorationOptions.register({description:\"find-match-only-overview\",stickiness:1,overviewRuler:{color:(0,S.themeColorFromId)(D.overviewRulerFindMatchForeground),position:k.OverviewRulerLane.Center}}),f._RANGE_HIGHLIGHT_DECORATION=y.ModelDecorationOptions.register({description:\"find-range-highlight\",stickiness:1,className:\"rangeHighlight\",isWholeLine:!0}),f._FIND_SCOPE_DECORATION=y.ModelDecorationOptions.register({description:\"find-scope\",className:\"findScope\",isWholeLine:!0})}),define(ne[193],se([1,0,14,13,2,123,12,5,24,181,881,541,542,15]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindModelBoundToEditorModel=e.MATCHES_LIMIT=e.FIND_IDS=e.TogglePreserveCaseKeybinding=e.ToggleSearchScopeKeybinding=e.ToggleRegexKeybinding=e.ToggleWholeWordKeybinding=e.ToggleCaseSensitiveKeybinding=e.CONTEXT_REPLACE_INPUT_FOCUSED=e.CONTEXT_FIND_INPUT_FOCUSED=e.CONTEXT_FIND_WIDGET_NOT_VISIBLE=e.CONTEXT_FIND_WIDGET_VISIBLE=void 0,e.CONTEXT_FIND_WIDGET_VISIBLE=new n.RawContextKey(\"findWidgetVisible\",!1),e.CONTEXT_FIND_WIDGET_NOT_VISIBLE=e.CONTEXT_FIND_WIDGET_VISIBLE.toNegated(),e.CONTEXT_FIND_INPUT_FOCUSED=new n.RawContextKey(\"findInputFocussed\",!1),e.CONTEXT_REPLACE_INPUT_FOCUSED=new n.RawContextKey(\"replaceInputFocussed\",!1),e.ToggleCaseSensitiveKeybinding={primary:545,mac:{primary:2593}},e.ToggleWholeWordKeybinding={primary:565,mac:{primary:2613}},e.ToggleRegexKeybinding={primary:560,mac:{primary:2608}},e.ToggleSearchScopeKeybinding={primary:554,mac:{primary:2602}},e.TogglePreserveCaseKeybinding={primary:558,mac:{primary:2606}},e.FIND_IDS={StartFindAction:\"actions.find\",StartFindWithSelection:\"actions.findWithSelection\",StartFindWithArgs:\"editor.actions.findWithArgs\",NextMatchFindAction:\"editor.action.nextMatchFindAction\",PreviousMatchFindAction:\"editor.action.previousMatchFindAction\",GoToMatchFindAction:\"editor.action.goToMatchFindAction\",NextSelectionMatchFindAction:\"editor.action.nextSelectionMatchFindAction\",PreviousSelectionMatchFindAction:\"editor.action.previousSelectionMatchFindAction\",StartFindReplaceAction:\"editor.action.startFindReplaceAction\",CloseFindWidgetCommand:\"closeFindWidget\",ToggleCaseSensitiveCommand:\"toggleFindCaseSensitive\",ToggleWholeWordCommand:\"toggleFindWholeWord\",ToggleRegexCommand:\"toggleFindRegex\",ToggleSearchScopeCommand:\"toggleFindInSelection\",TogglePreserveCaseCommand:\"togglePreserveCase\",ReplaceOneAction:\"editor.action.replaceOne\",ReplaceAllAction:\"editor.action.replaceAll\",SelectAllMatchesAction:\"editor.action.selectAllMatches\"},e.MATCHES_LIMIT=19999;const t=240;class a{constructor(h,r){this._toDispose=new y.DisposableStore,this._editor=h,this._state=r,this._isDisposed=!1,this._startSearchingTimer=new k.TimeoutTimer,this._decorations=new C.FindDecorations(h),this._toDispose.add(this._decorations),this._updateDecorationsScheduler=new k.RunOnceScheduler(()=>this.research(!1),100),this._toDispose.add(this._updateDecorationsScheduler),this._toDispose.add(this._editor.onDidChangeCursorPosition(c=>{(c.reason===3||c.reason===5||c.reason===6)&&this._decorations.setStartPosition(this._editor.getPosition())})),this._ignoreModelContentChanged=!1,this._toDispose.add(this._editor.onDidChangeModelContent(c=>{this._ignoreModelContentChanged||(c.isFlush&&this._decorations.reset(),this._decorations.setStartPosition(this._editor.getPosition()),this._updateDecorationsScheduler.schedule())})),this._toDispose.add(this._state.onFindReplaceStateChange(c=>this._onStateChanged(c))),this.research(!1,this._state.searchScope)}dispose(){this._isDisposed=!0,(0,y.dispose)(this._startSearchingTimer),this._toDispose.dispose()}_onStateChanged(h){this._isDisposed||this._editor.hasModel()&&(h.searchString||h.isReplaceRevealed||h.isRegex||h.wholeWord||h.matchCase||h.searchScope)&&(this._editor.getModel().isTooLargeForSyncing()?(this._startSearchingTimer.cancel(),this._startSearchingTimer.setIfNotSet(()=>{h.searchScope?this.research(h.moveCursor,this._state.searchScope):this.research(h.moveCursor)},t)):h.searchScope?this.research(h.moveCursor,this._state.searchScope):this.research(h.moveCursor))}static _getSearchRange(h,r){return r||h.getFullModelRange()}research(h,r){let c=null;typeof r<\"u\"?r!==null&&(Array.isArray(r)?c=r:c=[r]):c=this._decorations.getFindScopes(),c!==null&&(c=c.map(p=>{if(p.startLineNumber!==p.endLineNumber){let m=p.endLineNumber;return p.endColumn===1&&(m=m-1),new f.Range(p.startLineNumber,1,m,this._editor.getModel().getLineMaxColumn(m))}return p}));const o=this._findMatches(c,!1,e.MATCHES_LIMIT);this._decorations.set(o,c);const d=this._editor.getSelection();let l=this._decorations.getCurrentMatchesPosition(d);if(l===0&&o.length>0){const p=(0,L.findFirstInSorted)(o.map(m=>m.range),m=>f.Range.compareRangesUsingStarts(m,d)>=0);l=p>0?p-1+1:l}this._state.changeMatchInfo(l,this._decorations.getCount(),void 0),h&&this._editor.getOption(40).cursorMoveOnType&&this._moveToNextMatch(this._decorations.getStartPosition())}_hasMatches(){return this._state.matchesCount>0}_cannotFind(){if(!this._hasMatches()){const h=this._decorations.getFindScope();return h&&this._editor.revealRangeInCenterIfOutsideViewport(h,0),!0}return!1}_setCurrentFindMatch(h){const r=this._decorations.setCurrentFindMatch(h);this._state.changeMatchInfo(r,this._decorations.getCount(),h),this._editor.setSelection(h),this._editor.revealRangeInCenterIfOutsideViewport(h,0)}_prevSearchPosition(h){const r=this._state.isRegex&&(this._state.searchString.indexOf(\"^\")>=0||this._state.searchString.indexOf(\"$\")>=0);let{lineNumber:c,column:o}=h;const d=this._editor.getModel();return r||o===1?(c===1?c=d.getLineCount():c--,o=d.getLineMaxColumn(c)):o--,new S.Position(c,o)}_moveToPrevMatch(h,r=!1){if(!this._state.canNavigateBack()){const b=this._decorations.matchAfterPosition(h);b&&this._setCurrentFindMatch(b);return}if(this._decorations.getCount()<e.MATCHES_LIMIT){let b=this._decorations.matchBeforePosition(h);b&&b.isEmpty()&&b.getStartPosition().equals(h)&&(h=this._prevSearchPosition(h),b=this._decorations.matchBeforePosition(h)),b&&this._setCurrentFindMatch(b);return}if(this._cannotFind())return;const c=this._decorations.getFindScope(),o=a._getSearchRange(this._editor.getModel(),c);o.getEndPosition().isBefore(h)&&(h=o.getEndPosition()),h.isBefore(o.getStartPosition())&&(h=o.getEndPosition());const{lineNumber:d,column:l}=h,p=this._editor.getModel();let m=new S.Position(d,l),v=p.findPreviousMatch(this._state.searchString,m,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(128):null,!1);if(v&&v.range.isEmpty()&&v.range.getStartPosition().equals(m)&&(m=this._prevSearchPosition(m),v=p.findPreviousMatch(this._state.searchString,m,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(128):null,!1)),!!v){if(!r&&!o.containsRange(v.range))return this._moveToPrevMatch(v.range.getStartPosition(),!0);this._setCurrentFindMatch(v.range)}}moveToPrevMatch(){this._moveToPrevMatch(this._editor.getSelection().getStartPosition())}_nextSearchPosition(h){const r=this._state.isRegex&&(this._state.searchString.indexOf(\"^\")>=0||this._state.searchString.indexOf(\"$\")>=0);let{lineNumber:c,column:o}=h;const d=this._editor.getModel();return r||o===d.getLineMaxColumn(c)?(c===d.getLineCount()?c=1:c++,o=1):o++,new S.Position(c,o)}_moveToNextMatch(h){if(!this._state.canNavigateForward()){const c=this._decorations.matchBeforePosition(h);c&&this._setCurrentFindMatch(c);return}if(this._decorations.getCount()<e.MATCHES_LIMIT){let c=this._decorations.matchAfterPosition(h);c&&c.isEmpty()&&c.getStartPosition().equals(h)&&(h=this._nextSearchPosition(h),c=this._decorations.matchAfterPosition(h)),c&&this._setCurrentFindMatch(c);return}const r=this._getNextMatch(h,!1,!0);r&&this._setCurrentFindMatch(r.range)}_getNextMatch(h,r,c,o=!1){if(this._cannotFind())return null;const d=this._decorations.getFindScope(),l=a._getSearchRange(this._editor.getModel(),d);l.getEndPosition().isBefore(h)&&(h=l.getStartPosition()),h.isBefore(l.getStartPosition())&&(h=l.getStartPosition());const{lineNumber:p,column:m}=h,v=this._editor.getModel();let b=new S.Position(p,m),w=v.findNextMatch(this._state.searchString,b,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(128):null,r);return c&&w&&w.range.isEmpty()&&w.range.getStartPosition().equals(b)&&(b=this._nextSearchPosition(b),w=v.findNextMatch(this._state.searchString,b,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(128):null,r)),w?!o&&!l.containsRange(w.range)?this._getNextMatch(w.range.getEndPosition(),r,c,!0):w:null}moveToNextMatch(){this._moveToNextMatch(this._editor.getSelection().getEndPosition())}_moveToMatch(h){const r=this._decorations.getDecorationRangeAt(h);r&&this._setCurrentFindMatch(r)}moveToMatch(h){this._moveToMatch(h)}_getReplacePattern(){return this._state.isRegex?(0,i.parseReplaceString)(this._state.replaceString):i.ReplacePattern.fromStaticValue(this._state.replaceString)}replace(){if(!this._hasMatches())return;const h=this._getReplacePattern(),r=this._editor.getSelection(),c=this._getNextMatch(r.getStartPosition(),!0,!1);if(c)if(r.equalsRange(c.range)){const o=h.buildReplaceString(c.matches,this._state.preserveCase),d=new D.ReplaceCommand(r,o);this._executeEditorCommand(\"replace\",d),this._decorations.setStartPosition(new S.Position(r.startLineNumber,r.startColumn+o.length)),this.research(!0)}else this._decorations.setStartPosition(this._editor.getPosition()),this._setCurrentFindMatch(c.range)}_findMatches(h,r,c){const o=(h||[null]).map(d=>a._getSearchRange(this._editor.getModel(),d));return this._editor.getModel().findMatches(this._state.searchString,o,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(128):null,r,c)}replaceAll(){if(!this._hasMatches())return;const h=this._decorations.getFindScopes();h===null&&this._state.matchesCount>=e.MATCHES_LIMIT?this._largeReplaceAll():this._regularReplaceAll(h),this.research(!1)}_largeReplaceAll(){const r=new g.SearchParams(this._state.searchString,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(128):null).parseSearchRequest();if(!r)return;let c=r.regex;if(!c.multiline){let w=\"mu\";c.ignoreCase&&(w+=\"i\"),c.global&&(w+=\"g\"),c=new RegExp(c.source,w)}const o=this._editor.getModel(),d=o.getValue(1),l=o.getFullModelRange(),p=this._getReplacePattern();let m;const v=this._state.preserveCase;p.hasReplacementPatterns||v?m=d.replace(c,function(){return p.buildReplaceString(arguments,v)}):m=d.replace(c,p.buildReplaceString(null,v));const b=new D.ReplaceCommandThatPreservesSelection(l,m,this._editor.getSelection());this._executeEditorCommand(\"replaceAll\",b)}_regularReplaceAll(h){const r=this._getReplacePattern(),c=this._findMatches(h,r.hasReplacementPatterns||this._state.preserveCase,1073741824),o=[];for(let l=0,p=c.length;l<p;l++)o[l]=r.buildReplaceString(c[l].matches,this._state.preserveCase);const d=new s.ReplaceAllCommand(this._editor.getSelection(),c.map(l=>l.range),o);this._executeEditorCommand(\"replaceAll\",d)}selectAllMatches(){if(!this._hasMatches())return;const h=this._decorations.getFindScopes();let c=this._findMatches(h,!1,1073741824).map(d=>new _.Selection(d.range.startLineNumber,d.range.startColumn,d.range.endLineNumber,d.range.endColumn));const o=this._editor.getSelection();for(let d=0,l=c.length;d<l;d++)if(c[d].equalsRange(o)){c=[o].concat(c.slice(0,d)).concat(c.slice(d+1));break}this._editor.setSelections(c)}_executeEditorCommand(h,r){try{this._ignoreModelContentChanged=!0,this._editor.pushUndoStop(),this._editor.executeCommand(h,r),this._editor.pushUndoStop()}finally{this._ignoreModelContentChanged=!1}}}e.FindModelBoundToEditorModel=a}),define(ne[882],se([1,0,7,312,83,13,193,31,442]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindOptionsWidget=void 0;class _ extends y.Widget{constructor(C,s,i){super(),this._hideSoon=this._register(new D.RunOnceScheduler(()=>this._hide(),2e3)),this._isVisible=!1,this._editor=C,this._state=s,this._keybindingService=i,this._domNode=document.createElement(\"div\"),this._domNode.className=\"findOptionsWidget\",this._domNode.style.display=\"none\",this._domNode.style.top=\"10px\",this._domNode.style.zIndex=\"12\",this._domNode.setAttribute(\"role\",\"presentation\"),this._domNode.setAttribute(\"aria-hidden\",\"true\");const n={inputActiveOptionBorder:(0,f.asCssVariable)(f.inputActiveOptionBorder),inputActiveOptionForeground:(0,f.asCssVariable)(f.inputActiveOptionForeground),inputActiveOptionBackground:(0,f.asCssVariable)(f.inputActiveOptionBackground)};this.caseSensitive=this._register(new k.CaseSensitiveToggle(Object.assign({appendTitle:this._keybindingLabelFor(S.FIND_IDS.ToggleCaseSensitiveCommand),isChecked:this._state.matchCase},n))),this._domNode.appendChild(this.caseSensitive.domNode),this._register(this.caseSensitive.onChange(()=>{this._state.change({matchCase:this.caseSensitive.checked},!1)})),this.wholeWords=this._register(new k.WholeWordsToggle(Object.assign({appendTitle:this._keybindingLabelFor(S.FIND_IDS.ToggleWholeWordCommand),isChecked:this._state.wholeWord},n))),this._domNode.appendChild(this.wholeWords.domNode),this._register(this.wholeWords.onChange(()=>{this._state.change({wholeWord:this.wholeWords.checked},!1)})),this.regex=this._register(new k.RegexToggle(Object.assign({appendTitle:this._keybindingLabelFor(S.FIND_IDS.ToggleRegexCommand),isChecked:this._state.isRegex},n))),this._domNode.appendChild(this.regex.domNode),this._register(this.regex.onChange(()=>{this._state.change({isRegex:this.regex.checked},!1)})),this._editor.addOverlayWidget(this),this._register(this._state.onFindReplaceStateChange(t=>{let a=!1;t.isRegex&&(this.regex.checked=this._state.isRegex,a=!0),t.wholeWord&&(this.wholeWords.checked=this._state.wholeWord,a=!0),t.matchCase&&(this.caseSensitive.checked=this._state.matchCase,a=!0),!this._state.isRevealed&&a&&this._revealTemporarily()})),this._register(L.addDisposableListener(this._domNode,L.EventType.MOUSE_LEAVE,t=>this._onMouseLeave())),this._register(L.addDisposableListener(this._domNode,\"mouseover\",t=>this._onMouseOver()))}_keybindingLabelFor(C){const s=this._keybindingService.lookupKeybinding(C);return s?` (${s.getLabel()})`:\"\"}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return _.ID}getDomNode(){return this._domNode}getPosition(){return{preference:0}}highlightFindOptions(){this._revealTemporarily()}_revealTemporarily(){this._show(),this._hideSoon.schedule()}_onMouseLeave(){this._hideSoon.schedule()}_onMouseOver(){this._hideSoon.cancel()}_show(){this._isVisible||(this._isVisible=!0,this._domNode.style.display=\"block\")}_hide(){this._isVisible&&(this._isVisible=!1,this._domNode.style.display=\"none\")}}e.FindOptionsWidget=_,_.ID=\"editor.contrib.findOptionsWidget\"}),define(ne[883],se([1,0,6,2,5,193]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FindReplaceState=void 0;function S(_,g){return _===1?!0:_===2?!1:g}class f extends k.Disposable{get searchString(){return this._searchString}get replaceString(){return this._replaceString}get isRevealed(){return this._isRevealed}get isReplaceRevealed(){return this._isReplaceRevealed}get isRegex(){return S(this._isRegexOverride,this._isRegex)}get wholeWord(){return S(this._wholeWordOverride,this._wholeWord)}get matchCase(){return S(this._matchCaseOverride,this._matchCase)}get preserveCase(){return S(this._preserveCaseOverride,this._preserveCase)}get actualIsRegex(){return this._isRegex}get actualWholeWord(){return this._wholeWord}get actualMatchCase(){return this._matchCase}get actualPreserveCase(){return this._preserveCase}get searchScope(){return this._searchScope}get matchesPosition(){return this._matchesPosition}get matchesCount(){return this._matchesCount}get currentMatch(){return this._currentMatch}constructor(){super(),this._onFindReplaceStateChange=this._register(new L.Emitter),this.onFindReplaceStateChange=this._onFindReplaceStateChange.event,this._searchString=\"\",this._replaceString=\"\",this._isRevealed=!1,this._isReplaceRevealed=!1,this._isRegex=!1,this._isRegexOverride=0,this._wholeWord=!1,this._wholeWordOverride=0,this._matchCase=!1,this._matchCaseOverride=0,this._preserveCase=!1,this._preserveCaseOverride=0,this._searchScope=null,this._matchesPosition=0,this._matchesCount=0,this._currentMatch=null,this._loop=!0,this._isSearching=!1,this._filters=null}changeMatchInfo(g,C,s){const i={moveCursor:!1,updateHistory:!1,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let n=!1;C===0&&(g=0),g>C&&(g=C),this._matchesPosition!==g&&(this._matchesPosition=g,i.matchesPosition=!0,n=!0),this._matchesCount!==C&&(this._matchesCount=C,i.matchesCount=!0,n=!0),typeof s<\"u\"&&(y.Range.equalsRange(this._currentMatch,s)||(this._currentMatch=s,i.currentMatch=!0,n=!0)),n&&this._onFindReplaceStateChange.fire(i)}change(g,C,s=!0){var i;const n={moveCursor:C,updateHistory:s,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let t=!1;const a=this.isRegex,u=this.wholeWord,h=this.matchCase,r=this.preserveCase;typeof g.searchString<\"u\"&&this._searchString!==g.searchString&&(this._searchString=g.searchString,n.searchString=!0,t=!0),typeof g.replaceString<\"u\"&&this._replaceString!==g.replaceString&&(this._replaceString=g.replaceString,n.replaceString=!0,t=!0),typeof g.isRevealed<\"u\"&&this._isRevealed!==g.isRevealed&&(this._isRevealed=g.isRevealed,n.isRevealed=!0,t=!0),typeof g.isReplaceRevealed<\"u\"&&this._isReplaceRevealed!==g.isReplaceRevealed&&(this._isReplaceRevealed=g.isReplaceRevealed,n.isReplaceRevealed=!0,t=!0),typeof g.isRegex<\"u\"&&(this._isRegex=g.isRegex),typeof g.wholeWord<\"u\"&&(this._wholeWord=g.wholeWord),typeof g.matchCase<\"u\"&&(this._matchCase=g.matchCase),typeof g.preserveCase<\"u\"&&(this._preserveCase=g.preserveCase),typeof g.searchScope<\"u\"&&(!((i=g.searchScope)===null||i===void 0)&&i.every(c=>{var o;return(o=this._searchScope)===null||o===void 0?void 0:o.some(d=>!y.Range.equalsRange(d,c))})||(this._searchScope=g.searchScope,n.searchScope=!0,t=!0)),typeof g.loop<\"u\"&&this._loop!==g.loop&&(this._loop=g.loop,n.loop=!0,t=!0),typeof g.isSearching<\"u\"&&this._isSearching!==g.isSearching&&(this._isSearching=g.isSearching,n.isSearching=!0,t=!0),typeof g.filters<\"u\"&&(this._filters?this._filters.update(g.filters):this._filters=g.filters,n.filters=!0,t=!0),this._isRegexOverride=typeof g.isRegexOverride<\"u\"?g.isRegexOverride:0,this._wholeWordOverride=typeof g.wholeWordOverride<\"u\"?g.wholeWordOverride:0,this._matchCaseOverride=typeof g.matchCaseOverride<\"u\"?g.matchCaseOverride:0,this._preserveCaseOverride=typeof g.preserveCaseOverride<\"u\"?g.preserveCaseOverride:0,a!==this.isRegex&&(t=!0,n.isRegex=!0),u!==this.wholeWord&&(t=!0,n.wholeWord=!0),h!==this.matchCase&&(t=!0,n.matchCase=!0),r!==this.preserveCase&&(t=!0,n.preserveCase=!0),t&&this._onFindReplaceStateChange.fire(n)}canNavigateBack(){return this.canNavigateInLoop()||this.matchesPosition!==1}canNavigateForward(){return this.canNavigateInLoop()||this.matchesPosition<this.matchesCount}canNavigateInLoop(){return this._loop||this.matchesCount>=D.MATCHES_LIMIT}}e.FindReplaceState=f}),define(ne[884],se([1,0,7,49,153,130,83,13,25,9,2,17,11,5,193,656,346,745,31,62,23,26,88,20,105,443]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SimpleButton=e.FindWidget=e.FindWidgetViewZone=e.NLS_NO_RESULTS=e.NLS_MATCHES_LOCATION=e.findNextMatchIcon=e.findPreviousMatchIcon=e.findReplaceAllIcon=e.findReplaceIcon=void 0;const v=(0,c.registerIcon)(\"find-selection\",_.Codicon.selection,a.localize(0,null)),b=(0,c.registerIcon)(\"find-collapsed\",_.Codicon.chevronRight,a.localize(1,null)),w=(0,c.registerIcon)(\"find-expanded\",_.Codicon.chevronDown,a.localize(2,null));e.findReplaceIcon=(0,c.registerIcon)(\"find-replace\",_.Codicon.replace,a.localize(3,null)),e.findReplaceAllIcon=(0,c.registerIcon)(\"find-replace-all\",_.Codicon.replaceAll,a.localize(4,null)),e.findPreviousMatchIcon=(0,c.registerIcon)(\"find-previous-match\",_.Codicon.arrowUp,a.localize(5,null)),e.findNextMatchIcon=(0,c.registerIcon)(\"find-next-match\",_.Codicon.arrowDown,a.localize(6,null));const E=a.localize(7,null),I=a.localize(8,null),M=a.localize(9,null),P=a.localize(10,null),x=a.localize(11,null),T=a.localize(12,null),A=a.localize(13,null),N=a.localize(14,null),F=a.localize(15,null),O=a.localize(16,null),W=a.localize(17,null),U=a.localize(18,null),j=a.localize(19,null,t.MATCHES_LIMIT);e.NLS_MATCHES_LOCATION=a.localize(20,null),e.NLS_NO_RESULTS=a.localize(21,null);const R=419,G=275-54;let Z=69;const J=33,X=\"ctrlEnterReplaceAll.windows.donotask\",H=s.isMacintosh?256:2048;class B{constructor(de){this.afterLineNumber=de,this.heightInPx=J,this.suppressMouseDown=!1,this.domNode=document.createElement(\"div\"),this.domNode.className=\"dock-find-viewzone\"}}e.FindWidgetViewZone=B;function V(ce,de,he){const ue=!!de.match(/\\n/);if(he&&ue&&he.selectionStart>0){ce.stopPropagation();return}}function Y(ce,de,he){const ue=!!de.match(/\\n/);if(he&&ue&&he.selectionEnd<he.value.length){ce.stopPropagation();return}}class ie extends S.Widget{constructor(de,he,ue,te,q,z,ee,$,re){super(),this._cachedHeight=null,this._revealTimeouts=[],this._codeEditor=de,this._controller=he,this._state=ue,this._contextViewProvider=te,this._keybindingService=q,this._contextKeyService=z,this._storageService=$,this._notificationService=re,this._ctrlEnterReplaceAllWarningPrompted=!!$.getBoolean(X,0),this._isVisible=!1,this._isReplaceVisible=!1,this._ignoreChangeEvent=!1,this._updateHistoryDelayer=new f.Delayer(500),this._register((0,C.toDisposable)(()=>this._updateHistoryDelayer.cancel())),this._register(this._state.onFindReplaceStateChange(oe=>this._onStateChanged(oe))),this._buildDomNode(),this._updateButtons(),this._tryUpdateWidgetWidth(),this._findInput.inputBox.layout(),this._register(this._codeEditor.onDidChangeConfiguration(oe=>{if(oe.hasChanged(89)&&(this._codeEditor.getOption(89)&&this._state.change({isReplaceRevealed:!1},!1),this._updateButtons()),oe.hasChanged(142)&&this._tryUpdateWidgetWidth(),oe.hasChanged(2)&&this.updateAccessibilitySupport(),oe.hasChanged(40)){const ge=this._codeEditor.getOption(40).loop;this._state.change({loop:ge},!1);const ve=this._codeEditor.getOption(40).addExtraSpaceOnTop;ve&&!this._viewZone&&(this._viewZone=new B(0),this._showViewZone()),!ve&&this._viewZone&&this._removeViewZone()}})),this.updateAccessibilitySupport(),this._register(this._codeEditor.onDidChangeCursorSelection(()=>{this._isVisible&&this._updateToggleSelectionFindButton()})),this._register(this._codeEditor.onDidFocusEditorWidget(()=>we(this,void 0,void 0,function*(){if(this._isVisible){const oe=yield this._controller.getGlobalBufferTerm();oe&&oe!==this._state.searchString&&(this._state.change({searchString:oe},!1),this._findInput.select())}}))),this._findInputFocused=t.CONTEXT_FIND_INPUT_FOCUSED.bindTo(z),this._findFocusTracker=this._register(L.trackFocus(this._findInput.inputBox.inputElement)),this._register(this._findFocusTracker.onDidFocus(()=>{this._findInputFocused.set(!0),this._updateSearchScope()})),this._register(this._findFocusTracker.onDidBlur(()=>{this._findInputFocused.set(!1)})),this._replaceInputFocused=t.CONTEXT_REPLACE_INPUT_FOCUSED.bindTo(z),this._replaceFocusTracker=this._register(L.trackFocus(this._replaceInput.inputBox.inputElement)),this._register(this._replaceFocusTracker.onDidFocus(()=>{this._replaceInputFocused.set(!0),this._updateSearchScope()})),this._register(this._replaceFocusTracker.onDidBlur(()=>{this._replaceInputFocused.set(!1)})),this._codeEditor.addOverlayWidget(this),this._codeEditor.getOption(40).addExtraSpaceOnTop&&(this._viewZone=new B(0)),this._register(this._codeEditor.onDidChangeModel(()=>{this._isVisible&&(this._viewZoneId=void 0)})),this._register(this._codeEditor.onDidScrollChange(oe=>{if(oe.scrollTopChanged){this._layoutViewZone();return}setTimeout(()=>{this._layoutViewZone()},0)}))}getId(){return ie.ID}getDomNode(){return this._domNode}getPosition(){return this._isVisible?{preference:0}:null}_onStateChanged(de){if(de.searchString){try{this._ignoreChangeEvent=!0,this._findInput.setValue(this._state.searchString)}finally{this._ignoreChangeEvent=!1}this._updateButtons()}if(de.replaceString&&(this._replaceInput.inputBox.value=this._state.replaceString),de.isRevealed&&(this._state.isRevealed?this._reveal():this._hide(!0)),de.isReplaceRevealed&&(this._state.isReplaceRevealed?!this._codeEditor.getOption(89)&&!this._isReplaceVisible&&(this._isReplaceVisible=!0,this._replaceInput.width=L.getTotalWidth(this._findInput.domNode),this._updateButtons(),this._replaceInput.inputBox.layout()):this._isReplaceVisible&&(this._isReplaceVisible=!1,this._updateButtons())),(de.isRevealed||de.isReplaceRevealed)&&(this._state.isRevealed||this._state.isReplaceRevealed)&&this._tryUpdateHeight()&&this._showViewZone(),de.isRegex&&this._findInput.setRegex(this._state.isRegex),de.wholeWord&&this._findInput.setWholeWords(this._state.wholeWord),de.matchCase&&this._findInput.setCaseSensitive(this._state.matchCase),de.preserveCase&&this._replaceInput.setPreserveCase(this._state.preserveCase),de.searchScope&&(this._state.searchScope?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._updateToggleSelectionFindButton()),de.searchString||de.matchesCount||de.matchesPosition){const he=this._state.searchString.length>0&&this._state.matchesCount===0;this._domNode.classList.toggle(\"no-results\",he),this._updateMatchesCount(),this._updateButtons()}(de.searchString||de.currentMatch)&&this._layoutViewZone(),de.updateHistory&&this._delayedUpdateHistory(),de.loop&&this._updateButtons()}_delayedUpdateHistory(){this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(void 0,g.onUnexpectedError)}_updateHistory(){this._state.searchString&&this._findInput.inputBox.addToHistory(),this._state.replaceString&&this._replaceInput.inputBox.addToHistory()}_updateMatchesCount(){this._matchesCount.style.minWidth=Z+\"px\",this._state.matchesCount>=t.MATCHES_LIMIT?this._matchesCount.title=j:this._matchesCount.title=\"\",this._matchesCount.firstChild&&this._matchesCount.removeChild(this._matchesCount.firstChild);let de;if(this._state.matchesCount>0){let he=String(this._state.matchesCount);this._state.matchesCount>=t.MATCHES_LIMIT&&(he+=\"+\");let ue=String(this._state.matchesPosition);ue===\"0\"&&(ue=\"?\"),de=i.format(e.NLS_MATCHES_LOCATION,ue,he)}else de=e.NLS_NO_RESULTS;this._matchesCount.appendChild(document.createTextNode(de)),(0,k.alert)(this._getAriaLabel(de,this._state.currentMatch,this._state.searchString)),Z=Math.max(Z,this._matchesCount.clientWidth)}_getAriaLabel(de,he,ue){if(de===e.NLS_NO_RESULTS)return ue===\"\"?a.localize(22,null,de):a.localize(23,null,de,ue);if(he){const te=a.localize(24,null,de,ue,he.startLineNumber+\":\"+he.startColumn),q=this._codeEditor.getModel();return q&&he.startLineNumber<=q.getLineCount()&&he.startLineNumber>=1?`${q.getLineContent(he.startLineNumber)}, ${te}`:te}return a.localize(25,null,de,ue)}_updateToggleSelectionFindButton(){const de=this._codeEditor.getSelection(),he=de?de.startLineNumber!==de.endLineNumber||de.startColumn!==de.endColumn:!1,ue=this._toggleSelectionFind.checked;this._isVisible&&(ue||he)?this._toggleSelectionFind.enable():this._toggleSelectionFind.disable()}_updateButtons(){this._findInput.setEnabled(this._isVisible),this._replaceInput.setEnabled(this._isVisible&&this._isReplaceVisible),this._updateToggleSelectionFindButton(),this._closeBtn.setEnabled(this._isVisible);const de=this._state.searchString.length>0,he=!!this._state.matchesCount;this._prevBtn.setEnabled(this._isVisible&&de&&he&&this._state.canNavigateBack()),this._nextBtn.setEnabled(this._isVisible&&de&&he&&this._state.canNavigateForward()),this._replaceBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&de),this._replaceAllBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&de),this._domNode.classList.toggle(\"replaceToggled\",this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);const ue=!this._codeEditor.getOption(89);this._toggleReplaceBtn.setEnabled(this._isVisible&&ue)}_reveal(){if(this._revealTimeouts.forEach(de=>{clearTimeout(de)}),this._revealTimeouts=[],!this._isVisible){this._isVisible=!0;const de=this._codeEditor.getSelection();switch(this._codeEditor.getOption(40).autoFindInSelection){case\"always\":this._toggleSelectionFind.checked=!0;break;case\"never\":this._toggleSelectionFind.checked=!1;break;case\"multiline\":{const ue=!!de&&de.startLineNumber!==de.endLineNumber;this._toggleSelectionFind.checked=ue;break}default:break}this._tryUpdateWidgetWidth(),this._updateButtons(),this._revealTimeouts.push(setTimeout(()=>{this._domNode.classList.add(\"visible\"),this._domNode.setAttribute(\"aria-hidden\",\"false\")},0)),this._revealTimeouts.push(setTimeout(()=>{this._findInput.validate()},200)),this._codeEditor.layoutOverlayWidget(this);let he=!0;if(this._codeEditor.getOption(40).seedSearchStringFromSelection&&de){const ue=this._codeEditor.getDomNode();if(ue){const te=L.getDomNodePagePosition(ue),q=this._codeEditor.getScrolledVisiblePosition(de.getStartPosition()),z=te.left+(q?q.left:0),ee=q?q.top:0;if(this._viewZone&&ee<this._viewZone.heightInPx){de.endLineNumber>de.startLineNumber&&(he=!1);const $=L.getTopLeftOffset(this._domNode).left;z>$&&(he=!1);const re=this._codeEditor.getScrolledVisiblePosition(de.getEndPosition());te.left+(re?re.left:0)>$&&(he=!1)}}}this._showViewZone(he)}}_hide(de){this._revealTimeouts.forEach(he=>{clearTimeout(he)}),this._revealTimeouts=[],this._isVisible&&(this._isVisible=!1,this._updateButtons(),this._domNode.classList.remove(\"visible\"),this._domNode.setAttribute(\"aria-hidden\",\"true\"),this._findInput.clearMessage(),de&&this._codeEditor.focus(),this._codeEditor.layoutOverlayWidget(this),this._removeViewZone())}_layoutViewZone(de){if(!this._codeEditor.getOption(40).addExtraSpaceOnTop){this._removeViewZone();return}if(!this._isVisible)return;const ue=this._viewZone;this._viewZoneId!==void 0||!ue||this._codeEditor.changeViewZones(te=>{ue.heightInPx=this._getHeight(),this._viewZoneId=te.addZone(ue),this._codeEditor.setScrollTop(de||this._codeEditor.getScrollTop()+ue.heightInPx)})}_showViewZone(de=!0){if(!this._isVisible||!this._codeEditor.getOption(40).addExtraSpaceOnTop)return;this._viewZone===void 0&&(this._viewZone=new B(0));const ue=this._viewZone;this._codeEditor.changeViewZones(te=>{if(this._viewZoneId!==void 0){const q=this._getHeight();if(q===ue.heightInPx)return;const z=q-ue.heightInPx;ue.heightInPx=q,te.layoutZone(this._viewZoneId),de&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+z);return}else{let q=this._getHeight();if(q-=this._codeEditor.getOption(82).top,q<=0)return;ue.heightInPx=q,this._viewZoneId=te.addZone(ue),de&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+q)}})}_removeViewZone(){this._codeEditor.changeViewZones(de=>{this._viewZoneId!==void 0&&(de.removeZone(this._viewZoneId),this._viewZoneId=void 0,this._viewZone&&(this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()-this._viewZone.heightInPx),this._viewZone=void 0))})}_tryUpdateWidgetWidth(){if(!this._isVisible||!L.isInDOM(this._domNode))return;const de=this._codeEditor.getLayoutInfo();if(de.contentWidth<=0){this._domNode.classList.add(\"hiddenEditor\");return}else this._domNode.classList.contains(\"hiddenEditor\")&&this._domNode.classList.remove(\"hiddenEditor\");const ue=de.width,te=de.minimap.minimapWidth;let q=!1,z=!1,ee=!1;if(this._resized&&L.getTotalWidth(this._domNode)>R){this._domNode.style.maxWidth=`${ue-28-te-15}px`,this._replaceInput.width=L.getTotalWidth(this._findInput.domNode);return}if(R+28+te>=ue&&(z=!0),R+28+te-Z>=ue&&(ee=!0),R+28+te-Z>=ue+50&&(q=!0),this._domNode.classList.toggle(\"collapsed-find-widget\",q),this._domNode.classList.toggle(\"narrow-find-widget\",ee),this._domNode.classList.toggle(\"reduced-find-widget\",z),!ee&&!q&&(this._domNode.style.maxWidth=`${ue-28-te-15}px`),this._findInput.layout({collapsedFindWidget:q,narrowFindWidget:ee,reducedFindWidget:z}),this._resized){const $=this._findInput.inputBox.element.clientWidth;$>0&&(this._replaceInput.width=$)}else this._isReplaceVisible&&(this._replaceInput.width=L.getTotalWidth(this._findInput.domNode))}_getHeight(){let de=0;return de+=4,de+=this._findInput.inputBox.height+2,this._isReplaceVisible&&(de+=4,de+=this._replaceInput.inputBox.height+2),de+=4,de}_tryUpdateHeight(){const de=this._getHeight();return this._cachedHeight!==null&&this._cachedHeight===de?!1:(this._cachedHeight=de,this._domNode.style.height=`${de}px`,!0)}focusFindInput(){this._findInput.select(),this._findInput.focus()}focusReplaceInput(){this._replaceInput.select(),this._replaceInput.focus()}highlightFindOptions(){this._findInput.highlightFindOptions()}_updateSearchScope(){if(this._codeEditor.hasModel()&&this._toggleSelectionFind.checked){const de=this._codeEditor.getSelections();de.map(he=>{he.endColumn===1&&he.endLineNumber>he.startLineNumber&&(he=he.setEndPosition(he.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(he.endLineNumber-1)));const ue=this._state.currentMatch;return he.startLineNumber!==he.endLineNumber&&!n.Range.equalsRange(he,ue)?he:null}).filter(he=>!!he),de.length&&this._state.change({searchScope:de},!0)}}_onFindInputMouseDown(de){de.middleButton&&de.stopPropagation()}_onFindInputKeyDown(de){if(de.equals(H|3))if(this._keybindingService.dispatchEvent(de,de.target)){de.preventDefault();return}else{this._findInput.inputBox.insertAtCursor(`\n`),de.preventDefault();return}if(de.equals(2)){this._isReplaceVisible?this._replaceInput.focus():this._findInput.focusOnCaseSensitive(),de.preventDefault();return}if(de.equals(2066)){this._codeEditor.focus(),de.preventDefault();return}if(de.equals(16))return V(de,this._findInput.getValue(),this._findInput.domNode.querySelector(\"textarea\"));if(de.equals(18))return Y(de,this._findInput.getValue(),this._findInput.domNode.querySelector(\"textarea\"))}_onReplaceInputKeyDown(de){if(de.equals(H|3))if(this._keybindingService.dispatchEvent(de,de.target)){de.preventDefault();return}else{s.isWindows&&s.isNative&&!this._ctrlEnterReplaceAllWarningPrompted&&(this._notificationService.info(a.localize(26,null)),this._ctrlEnterReplaceAllWarningPrompted=!0,this._storageService.store(X,!0,0,0)),this._replaceInput.inputBox.insertAtCursor(`\n`),de.preventDefault();return}if(de.equals(2)){this._findInput.focusOnCaseSensitive(),de.preventDefault();return}if(de.equals(1026)){this._findInput.focus(),de.preventDefault();return}if(de.equals(2066)){this._codeEditor.focus(),de.preventDefault();return}if(de.equals(16))return V(de,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector(\"textarea\"));if(de.equals(18))return Y(de,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector(\"textarea\"))}getVerticalSashLeft(de){return 0}_keybindingLabelFor(de){const he=this._keybindingService.lookupKeybinding(de);return he?` (${he.getLabel()})`:\"\"}_buildDomNode(){this._findInput=this._register(new u.ContextScopedFindInput(null,this._contextViewProvider,{width:G,label:I,placeholder:M,appendCaseSensitiveLabel:this._keybindingLabelFor(t.FIND_IDS.ToggleCaseSensitiveCommand),appendWholeWordsLabel:this._keybindingLabelFor(t.FIND_IDS.ToggleWholeWordCommand),appendRegexLabel:this._keybindingLabelFor(t.FIND_IDS.ToggleRegexCommand),validation:$=>{if($.length===0||!this._findInput.getRegex())return null;try{return new RegExp($,\"gu\"),null}catch(re){return{content:re.message}}},flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118,showCommonFindToggles:!0,showHistoryHint:()=>(0,h.showHistoryKeybindingHint)(this._keybindingService),inputBoxStyles:m.defaultInputBoxStyles,toggleStyles:m.defaultToggleStyles},this._contextKeyService)),this._findInput.setRegex(!!this._state.isRegex),this._findInput.setCaseSensitive(!!this._state.matchCase),this._findInput.setWholeWords(!!this._state.wholeWord),this._register(this._findInput.onKeyDown($=>this._onFindInputKeyDown($))),this._register(this._findInput.inputBox.onDidChange(()=>{this._ignoreChangeEvent||this._state.change({searchString:this._findInput.getValue()},!0)})),this._register(this._findInput.onDidOptionChange(()=>{this._state.change({isRegex:this._findInput.getRegex(),wholeWord:this._findInput.getWholeWords(),matchCase:this._findInput.getCaseSensitive()},!0)})),this._register(this._findInput.onCaseSensitiveKeyDown($=>{$.equals(1026)&&this._isReplaceVisible&&(this._replaceInput.focus(),$.preventDefault())})),this._register(this._findInput.onRegexKeyDown($=>{$.equals(2)&&this._isReplaceVisible&&(this._replaceInput.focusOnPreserve(),$.preventDefault())})),this._register(this._findInput.inputBox.onDidHeightChange($=>{this._tryUpdateHeight()&&this._showViewZone()})),s.isLinux&&this._register(this._findInput.onMouseDown($=>this._onFindInputMouseDown($))),this._matchesCount=document.createElement(\"div\"),this._matchesCount.className=\"matchesCount\",this._updateMatchesCount(),this._prevBtn=this._register(new ae({label:P+this._keybindingLabelFor(t.FIND_IDS.PreviousMatchFindAction),icon:e.findPreviousMatchIcon,onTrigger:()=>{(0,p.assertIsDefined)(this._codeEditor.getAction(t.FIND_IDS.PreviousMatchFindAction)).run().then(void 0,g.onUnexpectedError)}})),this._nextBtn=this._register(new ae({label:x+this._keybindingLabelFor(t.FIND_IDS.NextMatchFindAction),icon:e.findNextMatchIcon,onTrigger:()=>{(0,p.assertIsDefined)(this._codeEditor.getAction(t.FIND_IDS.NextMatchFindAction)).run().then(void 0,g.onUnexpectedError)}}));const ue=document.createElement(\"div\");ue.className=\"find-part\",ue.appendChild(this._findInput.domNode);const te=document.createElement(\"div\");te.className=\"find-actions\",ue.appendChild(te),te.appendChild(this._matchesCount),te.appendChild(this._prevBtn.domNode),te.appendChild(this._nextBtn.domNode),this._toggleSelectionFind=this._register(new y.Toggle({icon:v,title:T+this._keybindingLabelFor(t.FIND_IDS.ToggleSearchScopeCommand),isChecked:!1,inputActiveOptionBackground:(0,r.asCssVariable)(r.inputActiveOptionBackground),inputActiveOptionBorder:(0,r.asCssVariable)(r.inputActiveOptionBorder),inputActiveOptionForeground:(0,r.asCssVariable)(r.inputActiveOptionForeground)})),this._register(this._toggleSelectionFind.onChange(()=>{if(this._toggleSelectionFind.checked){if(this._codeEditor.hasModel()){const $=this._codeEditor.getSelections();$.map(re=>(re.endColumn===1&&re.endLineNumber>re.startLineNumber&&(re=re.setEndPosition(re.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(re.endLineNumber-1))),re.isEmpty()?null:re)).filter(re=>!!re),$.length&&this._state.change({searchScope:$},!0)}}else this._state.change({searchScope:null},!0)})),te.appendChild(this._toggleSelectionFind.domNode),this._closeBtn=this._register(new ae({label:A+this._keybindingLabelFor(t.FIND_IDS.CloseFindWidgetCommand),icon:c.widgetClose,onTrigger:()=>{this._state.change({isRevealed:!1,searchScope:null},!1)},onKeyDown:$=>{$.equals(2)&&this._isReplaceVisible&&(this._replaceBtn.isEnabled()?this._replaceBtn.focus():this._codeEditor.focus(),$.preventDefault())}})),this._replaceInput=this._register(new u.ContextScopedReplaceInput(null,void 0,{label:N,placeholder:F,appendPreserveCaseLabel:this._keybindingLabelFor(t.FIND_IDS.TogglePreserveCaseCommand),history:[],flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118,showHistoryHint:()=>(0,h.showHistoryKeybindingHint)(this._keybindingService),inputBoxStyles:m.defaultInputBoxStyles,toggleStyles:m.defaultToggleStyles},this._contextKeyService,!0)),this._replaceInput.setPreserveCase(!!this._state.preserveCase),this._register(this._replaceInput.onKeyDown($=>this._onReplaceInputKeyDown($))),this._register(this._replaceInput.inputBox.onDidChange(()=>{this._state.change({replaceString:this._replaceInput.inputBox.value},!1)})),this._register(this._replaceInput.inputBox.onDidHeightChange($=>{this._isReplaceVisible&&this._tryUpdateHeight()&&this._showViewZone()})),this._register(this._replaceInput.onDidOptionChange(()=>{this._state.change({preserveCase:this._replaceInput.getPreserveCase()},!0)})),this._register(this._replaceInput.onPreserveCaseKeyDown($=>{$.equals(2)&&(this._prevBtn.isEnabled()?this._prevBtn.focus():this._nextBtn.isEnabled()?this._nextBtn.focus():this._toggleSelectionFind.enabled?this._toggleSelectionFind.focus():this._closeBtn.isEnabled()&&this._closeBtn.focus(),$.preventDefault())})),this._replaceBtn=this._register(new ae({label:O+this._keybindingLabelFor(t.FIND_IDS.ReplaceOneAction),icon:e.findReplaceIcon,onTrigger:()=>{this._controller.replace()},onKeyDown:$=>{$.equals(1026)&&(this._closeBtn.focus(),$.preventDefault())}})),this._replaceAllBtn=this._register(new ae({label:W+this._keybindingLabelFor(t.FIND_IDS.ReplaceAllAction),icon:e.findReplaceAllIcon,onTrigger:()=>{this._controller.replaceAll()}}));const q=document.createElement(\"div\");q.className=\"replace-part\",q.appendChild(this._replaceInput.domNode);const z=document.createElement(\"div\");z.className=\"replace-actions\",q.appendChild(z),z.appendChild(this._replaceBtn.domNode),z.appendChild(this._replaceAllBtn.domNode),this._toggleReplaceBtn=this._register(new ae({label:U,className:\"codicon toggle left\",onTrigger:()=>{this._state.change({isReplaceRevealed:!this._isReplaceVisible},!1),this._isReplaceVisible&&(this._replaceInput.width=L.getTotalWidth(this._findInput.domNode),this._replaceInput.inputBox.layout()),this._showViewZone()}})),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible),this._domNode=document.createElement(\"div\"),this._domNode.className=\"editor-widget find-widget\",this._domNode.setAttribute(\"aria-hidden\",\"true\"),this._domNode.ariaLabel=E,this._domNode.role=\"dialog\",this._domNode.style.width=`${R}px`,this._domNode.appendChild(this._toggleReplaceBtn.domNode),this._domNode.appendChild(ue),this._domNode.appendChild(this._closeBtn.domNode),this._domNode.appendChild(q),this._resizeSash=new D.Sash(this._domNode,this,{orientation:0,size:2}),this._resized=!1;let ee=R;this._register(this._resizeSash.onDidStart(()=>{ee=L.getTotalWidth(this._domNode)})),this._register(this._resizeSash.onDidChange($=>{this._resized=!0;const re=ee+$.startX-$.currentX;if(re<R)return;const oe=parseFloat(L.getComputedStyle(this._domNode).maxWidth)||0;re>oe||(this._domNode.style.width=`${re}px`,this._isReplaceVisible&&(this._replaceInput.width=L.getTotalWidth(this._findInput.domNode)),this._findInput.inputBox.layout(),this._tryUpdateHeight())})),this._register(this._resizeSash.onDidReset(()=>{const $=L.getTotalWidth(this._domNode);if($<R)return;let re=R;if(!this._resized||$===R){const oe=this._codeEditor.getLayoutInfo();re=oe.width-28-oe.minimap.minimapWidth-15,this._resized=!0}this._domNode.style.width=`${re}px`,this._isReplaceVisible&&(this._replaceInput.width=L.getTotalWidth(this._findInput.domNode)),this._findInput.inputBox.layout()}))}updateAccessibilitySupport(){const de=this._codeEditor.getOption(2);this._findInput.setFocusInputOnOptionClick(de!==2)}}e.FindWidget=ie,ie.ID=\"editor.contrib.findWidget\";class ae extends S.Widget{constructor(de){super(),this._opts=de;let he=\"button\";this._opts.className&&(he=he+\" \"+this._opts.className),this._opts.icon&&(he=he+\" \"+d.ThemeIcon.asClassName(this._opts.icon)),this._domNode=document.createElement(\"div\"),this._domNode.title=this._opts.label,this._domNode.tabIndex=0,this._domNode.className=he,this._domNode.setAttribute(\"role\",\"button\"),this._domNode.setAttribute(\"aria-label\",this._opts.label),this.onclick(this._domNode,ue=>{this._opts.onTrigger(),ue.preventDefault()}),this.onkeydown(this._domNode,ue=>{var te,q;if(ue.equals(10)||ue.equals(3)){this._opts.onTrigger(),ue.preventDefault();return}(q=(te=this._opts).onKeyDown)===null||q===void 0||q.call(te,ue)})}get domNode(){return this._domNode}isEnabled(){return this._domNode.tabIndex>=0}focus(){this._domNode.focus()}setEnabled(de){this._domNode.classList.toggle(\"disabled\",!de),this._domNode.setAttribute(\"aria-disabled\",String(!de)),this._domNode.tabIndex=de?0:-1}setExpanded(de){this._domNode.setAttribute(\"aria-expanded\",String(!!de)),de?(this._domNode.classList.remove(...d.ThemeIcon.asClassNameArray(b)),this._domNode.classList.add(...d.ThemeIcon.asClassNameArray(w))):(this._domNode.classList.remove(...d.ThemeIcon.asClassNameArray(w)),this._domNode.classList.add(...d.ThemeIcon.asClassNameArray(b)))}}e.SimpleButton=ae,(0,o.registerThemingParticipant)((ce,de)=>{const he=(De,ye)=>{ye&&de.addRule(`.monaco-editor ${De} { background-color: ${ye}; }`)};he(\".findMatch\",ce.getColor(r.editorFindMatchHighlight)),he(\".currentFindMatch\",ce.getColor(r.editorFindMatch)),he(\".findScope\",ce.getColor(r.editorFindRangeHighlight));const ue=ce.getColor(r.editorWidgetBackground);he(\".find-widget\",ue);const te=ce.getColor(r.widgetShadow);te&&de.addRule(`.monaco-editor .find-widget { box-shadow: 0 0 8px 2px ${te}; }`);const q=ce.getColor(r.widgetBorder);q&&de.addRule(`.monaco-editor .find-widget { border-left: 1px solid ${q}; border-right: 1px solid ${q}; border-bottom: 1px solid ${q}; }`);const z=ce.getColor(r.editorFindMatchHighlightBorder);z&&de.addRule(`.monaco-editor .findMatch { border: 1px ${(0,l.isHighContrast)(ce.type)?\"dotted\":\"solid\"} ${z}; box-sizing: border-box; }`);const ee=ce.getColor(r.editorFindMatchBorder);ee&&de.addRule(`.monaco-editor .currentFindMatch { border: 2px solid ${ee}; padding: 1px; box-sizing: border-box; }`);const $=ce.getColor(r.editorFindRangeHighlightBorder);$&&de.addRule(`.monaco-editor .findScope { border: 1px ${(0,l.isHighContrast)(ce.type)?\"dashed\":\"solid\"} ${$}; }`);const re=ce.getColor(r.contrastBorder);re&&de.addRule(`.monaco-editor .find-widget { border: 1px solid ${re}; }`);const oe=ce.getColor(r.editorWidgetForeground);oe&&de.addRule(`.monaco-editor .find-widget { color: ${oe}; }`);const ge=ce.getColor(r.errorForeground);ge&&de.addRule(`.monaco-editor .find-widget.no-results .matchesCount { color: ${ge}; }`);const ve=ce.getColor(r.editorWidgetResizeBorder);if(ve)de.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${ve}; }`);else{const De=ce.getColor(r.editorWidgetBorder);De&&de.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${De}; }`)}const Se=ce.getColor(r.toolbarHoverBackground);Se&&de.addRule(`\n\t\t.monaco-editor .find-widget .button:not(.disabled):hover,\n\t\t.monaco-editor .find-widget .codicon-find-selection:hover {\n\t\t\tbackground-color: ${Se} !important;\n\t\t}\n\t`);const Le=ce.getColor(r.focusBorder);Le&&de.addRule(`.monaco-editor .find-widget .monaco-inputbox.synthetic-focus { outline-color: ${Le}; }`)})}),define(ne[365],se([1,0,13,2,11,16,80,21,48,193,882,883,884,655,30,96,15,57,34,43,71,87,23]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l){\"use strict\";var p;Object.defineProperty(e,\"__esModule\",{value:!0}),e.StartFindReplaceAction=e.PreviousSelectionMatchFindAction=e.NextSelectionMatchFindAction=e.SelectionMatchFindAction=e.MoveToMatchFindAction=e.PreviousMatchFindAction=e.NextMatchFindAction=e.MatchFindAction=e.StartFindWithSelectionAction=e.StartFindWithArgsAction=e.StartFindAction=e.FindController=e.CommonFindController=e.getSelectionSearchString=void 0;const m=524288;function v(U,j=\"single\",R=!1){if(!U.hasModel())return null;const K=U.getSelection();if(j===\"single\"&&K.startLineNumber===K.endLineNumber||j===\"multiple\"){if(K.isEmpty()){const G=U.getConfiguredWordAtPosition(K.getStartPosition());if(G&&R===!1)return G.word}else if(U.getModel().getValueLengthInRange(K)<m)return U.getModel().getValueInRange(K)}return null}e.getSelectionSearchString=v;let b=p=class extends k.Disposable{get editor(){return this._editor}static get(j){return j.getContribution(p.ID)}constructor(j,R,K,G){super(),this._editor=j,this._findWidgetVisible=g.CONTEXT_FIND_WIDGET_VISIBLE.bindTo(R),this._contextKeyService=R,this._storageService=K,this._clipboardService=G,this._updateHistoryDelayer=new L.Delayer(500),this._state=this._register(new s.FindReplaceState),this.loadQueryState(),this._register(this._state.onFindReplaceStateChange(Z=>this._onStateChanged(Z))),this._model=null,this._register(this._editor.onDidChangeModel(()=>{const Z=this._editor.getModel()&&this._state.isRevealed;this.disposeModel(),this._state.change({searchScope:null,matchCase:this._storageService.getBoolean(\"editor.matchCase\",1,!1),wholeWord:this._storageService.getBoolean(\"editor.wholeWord\",1,!1),isRegex:this._storageService.getBoolean(\"editor.isRegex\",1,!1),preserveCase:this._storageService.getBoolean(\"editor.preserveCase\",1,!1)},!1),Z&&this._start({forceRevealReplace:!1,seedSearchStringFromSelection:\"none\",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!1,updateSearchScope:!1,loop:this._editor.getOption(40).loop})}))}dispose(){this.disposeModel(),super.dispose()}disposeModel(){this._model&&(this._model.dispose(),this._model=null)}_onStateChanged(j){this.saveQueryState(j),j.isRevealed&&(this._state.isRevealed?this._findWidgetVisible.set(!0):(this._findWidgetVisible.reset(),this.disposeModel())),j.searchString&&this.setGlobalBufferTerm(this._state.searchString)}saveQueryState(j){j.isRegex&&this._storageService.store(\"editor.isRegex\",this._state.actualIsRegex,1,1),j.wholeWord&&this._storageService.store(\"editor.wholeWord\",this._state.actualWholeWord,1,1),j.matchCase&&this._storageService.store(\"editor.matchCase\",this._state.actualMatchCase,1,1),j.preserveCase&&this._storageService.store(\"editor.preserveCase\",this._state.actualPreserveCase,1,1)}loadQueryState(){this._state.change({matchCase:this._storageService.getBoolean(\"editor.matchCase\",1,this._state.matchCase),wholeWord:this._storageService.getBoolean(\"editor.wholeWord\",1,this._state.wholeWord),isRegex:this._storageService.getBoolean(\"editor.isRegex\",1,this._state.isRegex),preserveCase:this._storageService.getBoolean(\"editor.preserveCase\",1,this._state.preserveCase)},!1)}isFindInputFocused(){return!!g.CONTEXT_FIND_INPUT_FOCUSED.getValue(this._contextKeyService)}getState(){return this._state}closeFindWidget(){this._state.change({isRevealed:!1,searchScope:null},!1),this._editor.focus()}toggleCaseSensitive(){this._state.change({matchCase:!this._state.matchCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleWholeWords(){this._state.change({wholeWord:!this._state.wholeWord},!1),this._state.isRevealed||this.highlightFindOptions()}toggleRegex(){this._state.change({isRegex:!this._state.isRegex},!1),this._state.isRevealed||this.highlightFindOptions()}togglePreserveCase(){this._state.change({preserveCase:!this._state.preserveCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleSearchScope(){if(this._state.searchScope)this._state.change({searchScope:null},!0);else if(this._editor.hasModel()){const j=this._editor.getSelections();j.map(R=>(R.endColumn===1&&R.endLineNumber>R.startLineNumber&&(R=R.setEndPosition(R.endLineNumber-1,this._editor.getModel().getLineMaxColumn(R.endLineNumber-1))),R.isEmpty()?null:R)).filter(R=>!!R),j.length&&this._state.change({searchScope:j},!0)}}setSearchString(j){this._state.isRegex&&(j=y.escapeRegExpCharacters(j)),this._state.change({searchString:j},!1)}highlightFindOptions(j=!1){}_start(j,R){return we(this,void 0,void 0,function*(){if(this.disposeModel(),!this._editor.hasModel())return;const K=Object.assign(Object.assign({},R),{isRevealed:!0});if(j.seedSearchStringFromSelection===\"single\"){const G=v(this._editor,j.seedSearchStringFromSelection,j.seedSearchStringFromNonEmptySelection);G&&(this._state.isRegex?K.searchString=y.escapeRegExpCharacters(G):K.searchString=G)}else if(j.seedSearchStringFromSelection===\"multiple\"&&!j.updateSearchScope){const G=v(this._editor,j.seedSearchStringFromSelection);G&&(K.searchString=G)}if(!K.searchString&&j.seedSearchStringFromGlobalClipboard){const G=yield this.getGlobalBufferTerm();if(!this._editor.hasModel())return;G&&(K.searchString=G)}if(j.forceRevealReplace||K.isReplaceRevealed?K.isReplaceRevealed=!0:this._findWidgetVisible.get()||(K.isReplaceRevealed=!1),j.updateSearchScope){const G=this._editor.getSelections();G.some(Z=>!Z.isEmpty())&&(K.searchScope=G)}K.loop=j.loop,this._state.change(K,!1),this._model||(this._model=new g.FindModelBoundToEditorModel(this._editor,this._state))})}start(j,R){return this._start(j,R)}moveToNextMatch(){return this._model?(this._model.moveToNextMatch(),!0):!1}moveToPrevMatch(){return this._model?(this._model.moveToPrevMatch(),!0):!1}goToMatch(j){return this._model?(this._model.moveToMatch(j),!0):!1}replace(){return this._model?(this._model.replace(),!0):!1}replaceAll(){return this._model?(this._model.replaceAll(),!0):!1}selectAllMatches(){return this._model?(this._model.selectAllMatches(),this._editor.focus(),!0):!1}getGlobalBufferTerm(){return we(this,void 0,void 0,function*(){return this._editor.getOption(40).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()?this._clipboardService.readFindText():\"\"})}setGlobalBufferTerm(j){this._editor.getOption(40).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()&&this._clipboardService.writeFindText(j)}};e.CommonFindController=b,b.ID=\"editor.contrib.findController\",e.CommonFindController=b=p=ke([fe(1,u.IContextKeyService),fe(2,d.IStorageService),fe(3,a.IClipboardService)],b);let w=class extends b{constructor(j,R,K,G,Z,J,X,H){super(j,K,X,H),this._contextViewService=R,this._keybindingService=G,this._themeService=Z,this._notificationService=J,this._widget=null,this._findOptionsWidget=null}_start(j,R){const K=Object.create(null,{_start:{get:()=>super._start}});return we(this,void 0,void 0,function*(){this._widget||this._createFindWidget();const G=this._editor.getSelection();let Z=!1;switch(this._editor.getOption(40).autoFindInSelection){case\"always\":Z=!0;break;case\"never\":Z=!1;break;case\"multiline\":{Z=!!G&&G.startLineNumber!==G.endLineNumber;break}default:break}j.updateSearchScope=j.updateSearchScope||Z,yield K._start.call(this,j,R),this._widget&&(j.shouldFocus===2?this._widget.focusReplaceInput():j.shouldFocus===1&&this._widget.focusFindInput())})}highlightFindOptions(j=!1){this._widget||this._createFindWidget(),this._state.isRevealed&&!j?this._widget.highlightFindOptions():this._findOptionsWidget.highlightFindOptions()}_createFindWidget(){this._widget=this._register(new i.FindWidget(this._editor,this,this._state,this._contextViewService,this._keybindingService,this._contextKeyService,this._themeService,this._storageService,this._notificationService)),this._findOptionsWidget=this._register(new C.FindOptionsWidget(this._editor,this._state,this._keybindingService))}};e.FindController=w,e.FindController=w=ke([fe(1,h.IContextViewService),fe(2,u.IContextKeyService),fe(3,r.IKeybindingService),fe(4,l.IThemeService),fe(5,c.INotificationService),fe(6,d.IStorageService),fe(7,a.IClipboardService)],w),e.StartFindAction=(0,D.registerMultiEditorAction)(new D.MultiEditorAction({id:g.FIND_IDS.StartFindAction,label:n.localize(0,null),alias:\"Find\",precondition:u.ContextKeyExpr.or(f.EditorContextKeys.focus,u.ContextKeyExpr.has(\"editorIsOpen\")),kbOpts:{kbExpr:null,primary:2084,weight:100},menuOpts:{menuId:t.MenuId.MenubarEditMenu,group:\"3_find\",title:n.localize(1,null),order:1}})),e.StartFindAction.addImplementation(0,(U,j,R)=>{const K=b.get(j);return K?K.start({forceRevealReplace:!1,seedSearchStringFromSelection:j.getOption(40).seedSearchStringFromSelection!==\"never\"?\"single\":\"none\",seedSearchStringFromNonEmptySelection:j.getOption(40).seedSearchStringFromSelection===\"selection\",seedSearchStringFromGlobalClipboard:j.getOption(40).globalFindClipboard,shouldFocus:1,shouldAnimate:!0,updateSearchScope:!1,loop:j.getOption(40).loop}):!1});const E={description:\"Open a new In-Editor Find Widget.\",args:[{name:\"Open a new In-Editor Find Widget args\",schema:{properties:{searchString:{type:\"string\"},replaceString:{type:\"string\"},regex:{type:\"boolean\"},regexOverride:{type:\"number\",description:n.localize(2,null)},wholeWord:{type:\"boolean\"},wholeWordOverride:{type:\"number\",description:n.localize(3,null)},matchCase:{type:\"boolean\"},matchCaseOverride:{type:\"number\",description:n.localize(4,null)},preserveCase:{type:\"boolean\"},preserveCaseOverride:{type:\"number\",description:n.localize(5,null)},findInSelection:{type:\"boolean\"}}}}]};class I extends D.EditorAction{constructor(){super({id:g.FIND_IDS.StartFindWithArgs,label:n.localize(6,null),alias:\"Find With Arguments\",precondition:void 0,kbOpts:{kbExpr:null,primary:0,weight:100},description:E})}run(j,R,K){return we(this,void 0,void 0,function*(){const G=b.get(R);if(G){const Z=K?{searchString:K.searchString,replaceString:K.replaceString,isReplaceRevealed:K.replaceString!==void 0,isRegex:K.isRegex,wholeWord:K.matchWholeWord,matchCase:K.isCaseSensitive,preserveCase:K.preserveCase}:{};yield G.start({forceRevealReplace:!1,seedSearchStringFromSelection:G.getState().searchString.length===0&&R.getOption(40).seedSearchStringFromSelection!==\"never\"?\"single\":\"none\",seedSearchStringFromNonEmptySelection:R.getOption(40).seedSearchStringFromSelection===\"selection\",seedSearchStringFromGlobalClipboard:!0,shouldFocus:1,shouldAnimate:!0,updateSearchScope:K?.findInSelection||!1,loop:R.getOption(40).loop},Z),G.setGlobalBufferTerm(G.getState().searchString)}})}}e.StartFindWithArgsAction=I;class M extends D.EditorAction{constructor(){super({id:g.FIND_IDS.StartFindWithSelection,label:n.localize(7,null),alias:\"Find With Selection\",precondition:void 0,kbOpts:{kbExpr:null,primary:0,mac:{primary:2083},weight:100}})}run(j,R){return we(this,void 0,void 0,function*(){const K=b.get(R);K&&(yield K.start({forceRevealReplace:!1,seedSearchStringFromSelection:\"multiple\",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:R.getOption(40).loop}),K.setGlobalBufferTerm(K.getState().searchString))})}}e.StartFindWithSelectionAction=M;class P extends D.EditorAction{run(j,R){return we(this,void 0,void 0,function*(){const K=b.get(R);K&&!this._run(K)&&(yield K.start({forceRevealReplace:!1,seedSearchStringFromSelection:K.getState().searchString.length===0&&R.getOption(40).seedSearchStringFromSelection!==\"never\"?\"single\":\"none\",seedSearchStringFromNonEmptySelection:R.getOption(40).seedSearchStringFromSelection===\"selection\",seedSearchStringFromGlobalClipboard:!0,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:R.getOption(40).loop}),this._run(K))})}}e.MatchFindAction=P;class x extends P{constructor(){super({id:g.FIND_IDS.NextMatchFindAction,label:n.localize(8,null),alias:\"Find Next\",precondition:void 0,kbOpts:[{kbExpr:f.EditorContextKeys.focus,primary:61,mac:{primary:2085,secondary:[61]},weight:100},{kbExpr:u.ContextKeyExpr.and(f.EditorContextKeys.focus,g.CONTEXT_FIND_INPUT_FOCUSED),primary:3,weight:100}]})}_run(j){return j.moveToNextMatch()?(j.editor.pushUndoStop(),!0):!1}}e.NextMatchFindAction=x;class T extends P{constructor(){super({id:g.FIND_IDS.PreviousMatchFindAction,label:n.localize(9,null),alias:\"Find Previous\",precondition:void 0,kbOpts:[{kbExpr:f.EditorContextKeys.focus,primary:1085,mac:{primary:3109,secondary:[1085]},weight:100},{kbExpr:u.ContextKeyExpr.and(f.EditorContextKeys.focus,g.CONTEXT_FIND_INPUT_FOCUSED),primary:1027,weight:100}]})}_run(j){return j.moveToPrevMatch()}}e.PreviousMatchFindAction=T;class A extends D.EditorAction{constructor(){super({id:g.FIND_IDS.GoToMatchFindAction,label:n.localize(10,null),alias:\"Go to Match...\",precondition:g.CONTEXT_FIND_WIDGET_VISIBLE}),this._highlightDecorations=[]}run(j,R,K){const G=b.get(R);if(!G)return;const Z=G.getState().matchesCount;if(Z<1){j.get(c.INotificationService).notify({severity:c.Severity.Warning,message:n.localize(11,null)});return}const X=j.get(o.IQuickInputService).createInputBox();X.placeholder=n.localize(12,null,Z);const H=V=>{const Y=parseInt(V);if(isNaN(Y))return;const ie=G.getState().matchesCount;if(Y>0&&Y<=ie)return Y-1;if(Y<0&&Y>=-ie)return ie+Y},B=V=>{const Y=H(V);if(typeof Y==\"number\"){X.validationMessage=void 0,G.goToMatch(Y);const ie=G.getState().currentMatch;ie&&this.addDecorations(R,ie)}else X.validationMessage=n.localize(13,null,G.getState().matchesCount),this.clearDecorations(R)};X.onDidChangeValue(V=>{B(V)}),X.onDidAccept(()=>{const V=H(X.value);typeof V==\"number\"?(G.goToMatch(V),X.hide()):X.validationMessage=n.localize(14,null,G.getState().matchesCount)}),X.onDidHide(()=>{this.clearDecorations(R),X.dispose()}),X.show()}clearDecorations(j){j.changeDecorations(R=>{this._highlightDecorations=R.deltaDecorations(this._highlightDecorations,[])})}addDecorations(j,R){j.changeDecorations(K=>{this._highlightDecorations=K.deltaDecorations(this._highlightDecorations,[{range:R,options:{description:\"find-match-quick-access-range-highlight\",className:\"rangeHighlight\",isWholeLine:!0}},{range:R,options:{description:\"find-match-quick-access-range-highlight-overview\",overviewRuler:{color:(0,l.themeColorFromId)(S.overviewRulerRangeHighlight),position:_.OverviewRulerLane.Full}}}])})}}e.MoveToMatchFindAction=A;class N extends D.EditorAction{run(j,R){return we(this,void 0,void 0,function*(){const K=b.get(R);if(!K)return;const G=v(R,\"single\",!1);G&&K.setSearchString(G),this._run(K)||(yield K.start({forceRevealReplace:!1,seedSearchStringFromSelection:\"none\",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:R.getOption(40).loop}),this._run(K))})}}e.SelectionMatchFindAction=N;class F extends N{constructor(){super({id:g.FIND_IDS.NextSelectionMatchFindAction,label:n.localize(15,null),alias:\"Find Next Selection\",precondition:void 0,kbOpts:{kbExpr:f.EditorContextKeys.focus,primary:2109,weight:100}})}_run(j){return j.moveToNextMatch()}}e.NextSelectionMatchFindAction=F;class O extends N{constructor(){super({id:g.FIND_IDS.PreviousSelectionMatchFindAction,label:n.localize(16,null),alias:\"Find Previous Selection\",precondition:void 0,kbOpts:{kbExpr:f.EditorContextKeys.focus,primary:3133,weight:100}})}_run(j){return j.moveToPrevMatch()}}e.PreviousSelectionMatchFindAction=O,e.StartFindReplaceAction=(0,D.registerMultiEditorAction)(new D.MultiEditorAction({id:g.FIND_IDS.StartFindReplaceAction,label:n.localize(17,null),alias:\"Replace\",precondition:u.ContextKeyExpr.or(f.EditorContextKeys.focus,u.ContextKeyExpr.has(\"editorIsOpen\")),kbOpts:{kbExpr:null,primary:2086,mac:{primary:2596},weight:100},menuOpts:{menuId:t.MenuId.MenubarEditMenu,group:\"3_find\",title:n.localize(18,null),order:2}})),e.StartFindReplaceAction.addImplementation(0,(U,j,R)=>{if(!j.hasModel()||j.getOption(89))return!1;const K=b.get(j);if(!K)return!1;const G=j.getSelection(),Z=K.isFindInputFocused(),J=!G.isEmpty()&&G.startLineNumber===G.endLineNumber&&j.getOption(40).seedSearchStringFromSelection!==\"never\"&&!Z,X=Z||J?2:1;return K.start({forceRevealReplace:!0,seedSearchStringFromSelection:J?\"single\":\"none\",seedSearchStringFromNonEmptySelection:j.getOption(40).seedSearchStringFromSelection===\"selection\",seedSearchStringFromGlobalClipboard:j.getOption(40).seedSearchStringFromSelection!==\"never\",shouldFocus:X,shouldAnimate:!0,updateSearchScope:!1,loop:j.getOption(40).loop})}),(0,D.registerEditorContribution)(b.ID,w,0),(0,D.registerEditorAction)(I),(0,D.registerEditorAction)(M),(0,D.registerEditorAction)(x),(0,D.registerEditorAction)(T),(0,D.registerEditorAction)(A),(0,D.registerEditorAction)(F),(0,D.registerEditorAction)(O);const W=D.EditorCommand.bindToContribution(b.get);(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.CloseFindWidgetCommand,precondition:g.CONTEXT_FIND_WIDGET_VISIBLE,handler:U=>U.closeFindWidget(),kbOpts:{weight:100+5,kbExpr:u.ContextKeyExpr.and(f.EditorContextKeys.focus,u.ContextKeyExpr.not(\"isComposing\")),primary:9,secondary:[1033]}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ToggleCaseSensitiveCommand,precondition:void 0,handler:U=>U.toggleCaseSensitive(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:g.ToggleCaseSensitiveKeybinding.primary,mac:g.ToggleCaseSensitiveKeybinding.mac,win:g.ToggleCaseSensitiveKeybinding.win,linux:g.ToggleCaseSensitiveKeybinding.linux}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ToggleWholeWordCommand,precondition:void 0,handler:U=>U.toggleWholeWords(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:g.ToggleWholeWordKeybinding.primary,mac:g.ToggleWholeWordKeybinding.mac,win:g.ToggleWholeWordKeybinding.win,linux:g.ToggleWholeWordKeybinding.linux}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ToggleRegexCommand,precondition:void 0,handler:U=>U.toggleRegex(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:g.ToggleRegexKeybinding.primary,mac:g.ToggleRegexKeybinding.mac,win:g.ToggleRegexKeybinding.win,linux:g.ToggleRegexKeybinding.linux}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ToggleSearchScopeCommand,precondition:void 0,handler:U=>U.toggleSearchScope(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:g.ToggleSearchScopeKeybinding.primary,mac:g.ToggleSearchScopeKeybinding.mac,win:g.ToggleSearchScopeKeybinding.win,linux:g.ToggleSearchScopeKeybinding.linux}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.TogglePreserveCaseCommand,precondition:void 0,handler:U=>U.togglePreserveCase(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:g.TogglePreserveCaseKeybinding.primary,mac:g.TogglePreserveCaseKeybinding.mac,win:g.TogglePreserveCaseKeybinding.win,linux:g.TogglePreserveCaseKeybinding.linux}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ReplaceOneAction,precondition:g.CONTEXT_FIND_WIDGET_VISIBLE,handler:U=>U.replace(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:3094}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ReplaceOneAction,precondition:g.CONTEXT_FIND_WIDGET_VISIBLE,handler:U=>U.replace(),kbOpts:{weight:100+5,kbExpr:u.ContextKeyExpr.and(f.EditorContextKeys.focus,g.CONTEXT_REPLACE_INPUT_FOCUSED),primary:3}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ReplaceAllAction,precondition:g.CONTEXT_FIND_WIDGET_VISIBLE,handler:U=>U.replaceAll(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:2563}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.ReplaceAllAction,precondition:g.CONTEXT_FIND_WIDGET_VISIBLE,handler:U=>U.replaceAll(),kbOpts:{weight:100+5,kbExpr:u.ContextKeyExpr.and(f.EditorContextKeys.focus,g.CONTEXT_REPLACE_INPUT_FOCUSED),primary:void 0,mac:{primary:2051}}})),(0,D.registerEditorCommand)(new W({id:g.FIND_IDS.SelectAllMatchesAction,precondition:g.CONTEXT_FIND_WIDGET_VISIBLE,handler:U=>U.selectAllMatches(),kbOpts:{weight:100+5,kbExpr:f.EditorContextKeys.focus,primary:515}}))}),define(ne[366],se([1,0,25,48,40,658,31,62,23,26]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.FoldingDecorationProvider=e.foldingManualExpandedIcon=e.foldingManualCollapsedIcon=e.foldingCollapsedIcon=e.foldingExpandedIcon=void 0;const C=(0,S.registerColor)(\"editor.foldBackground\",{light:(0,S.transparent)(S.editorSelectionBackground,.3),dark:(0,S.transparent)(S.editorSelectionBackground,.3),hcDark:null,hcLight:null},(0,D.localize)(0,null),!0);(0,S.registerColor)(\"editorGutter.foldingControlForeground\",{dark:S.iconForeground,light:S.iconForeground,hcDark:S.iconForeground,hcLight:S.iconForeground},(0,D.localize)(1,null)),e.foldingExpandedIcon=(0,f.registerIcon)(\"folding-expanded\",L.Codicon.chevronDown,(0,D.localize)(2,null)),e.foldingCollapsedIcon=(0,f.registerIcon)(\"folding-collapsed\",L.Codicon.chevronRight,(0,D.localize)(3,null)),e.foldingManualCollapsedIcon=(0,f.registerIcon)(\"folding-manual-collapsed\",e.foldingCollapsedIcon,(0,D.localize)(4,null)),e.foldingManualExpandedIcon=(0,f.registerIcon)(\"folding-manual-expanded\",e.foldingExpandedIcon,(0,D.localize)(5,null));const s={color:(0,_.themeColorFromId)(C),position:k.MinimapPosition.Inline};class i{constructor(t){this.editor=t,this.showFoldingControls=\"mouseover\",this.showFoldingHighlights=!0}getDecorationOption(t,a,u){return a?i.HIDDEN_RANGE_DECORATION:this.showFoldingControls===\"never\"?t?this.showFoldingHighlights?i.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION:i.NO_CONTROLS_COLLAPSED_RANGE_DECORATION:i.NO_CONTROLS_EXPANDED_RANGE_DECORATION:t?u?this.showFoldingHighlights?i.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:i.MANUALLY_COLLAPSED_VISUAL_DECORATION:this.showFoldingHighlights?i.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:i.COLLAPSED_VISUAL_DECORATION:this.showFoldingControls===\"mouseover\"?u?i.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION:i.EXPANDED_AUTO_HIDE_VISUAL_DECORATION:u?i.MANUALLY_EXPANDED_VISUAL_DECORATION:i.EXPANDED_VISUAL_DECORATION}changeDecorations(t){return this.editor.changeDecorations(t)}removeDecorations(t){this.editor.removeDecorations(t)}}e.FoldingDecorationProvider=i,i.COLLAPSED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:\"folding-collapsed-visual-decoration\",stickiness:0,afterContentClassName:\"inline-folded\",isWholeLine:!0,firstLineDecorationClassName:g.ThemeIcon.asClassName(e.foldingCollapsedIcon)}),i.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:\"folding-collapsed-highlighted-visual-decoration\",stickiness:0,afterContentClassName:\"inline-folded\",className:\"folded-background\",minimap:s,isWholeLine:!0,firstLineDecorationClassName:g.ThemeIcon.asClassName(e.foldingCollapsedIcon)}),i.MANUALLY_COLLAPSED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:\"folding-manually-collapsed-visual-decoration\",stickiness:0,afterContentClassName:\"inline-folded\",isWholeLine:!0,firstLineDecorationClassName:g.ThemeIcon.asClassName(e.foldingManualCollapsedIcon)}),i.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:\"folding-manually-collapsed-highlighted-visual-decoration\",stickiness:0,afterContentClassName:\"inline-folded\",className:\"folded-background\",minimap:s,isWholeLine:!0,firstLineDecorationClassName:g.ThemeIcon.asClassName(e.foldingManualCollapsedIcon)}),i.NO_CONTROLS_COLLAPSED_RANGE_DECORATION=y.ModelDecorationOptions.register({description:\"folding-no-controls-range-decoration\",stickiness:0,afterContentClassName:\"inline-folded\",isWholeLine:!0}),i.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION=y.ModelDecorationOptions.register({description:\"folding-no-controls-range-decoration\",stickiness:0,afterContentClassName:\"inline-folded\",className:\"folded-background\",minimap:s,isWholeLine:!0}),i.EXPANDED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:\"folding-expanded-visual-decoration\",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:\"alwaysShowFoldIcons \"+g.ThemeIcon.asClassName(e.foldingExpandedIcon)}),i.EXPANDED_AUTO_HIDE_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:\"folding-expanded-auto-hide-visual-decoration\",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:g.ThemeIcon.asClassName(e.foldingExpandedIcon)}),i.MANUALLY_EXPANDED_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:\"folding-manually-expanded-visual-decoration\",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:\"alwaysShowFoldIcons \"+g.ThemeIcon.asClassName(e.foldingManualExpandedIcon)}),i.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION=y.ModelDecorationOptions.register({description:\"folding-manually-expanded-auto-hide-visual-decoration\",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:g.ThemeIcon.asClassName(e.foldingManualExpandedIcon)}),i.NO_CONTROLS_EXPANDED_RANGE_DECORATION=y.ModelDecorationOptions.register({description:\"folding-no-controls-range-decoration\",stickiness:0,isWholeLine:!0}),i.HIDDEN_RANGE_DECORATION=y.ModelDecorationOptions.register({description:\"folding-hidden-range-decoration\",stickiness:1})}),define(ne[255],se([1,0,13,19,9,63,2,11,20,108,16,21,29,32,291,543,292,657,15,366,182,293,43,76,58,18,6,27,22,51,28,444]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M){\"use strict\";var P;Object.defineProperty(e,\"__esModule\",{value:!0}),e.RangesLimitReporter=e.FoldingController=void 0;const x=new r.RawContextKey(\"foldingEnabled\",!1);let T=P=class extends S.Disposable{static get(ue){return ue.getContribution(P.ID)}static getFoldingRangeProviders(ue,te){var q,z;const ee=ue.foldingRangeProvider.ordered(te);return(z=(q=P._foldingRangeSelector)===null||q===void 0?void 0:q.call(P,ee,te))!==null&&z!==void 0?z:ee}constructor(ue,te,q,z,ee,$){super(),this.contextKeyService=te,this.languageConfigurationService=q,this.languageFeaturesService=$,this.localToDispose=this._register(new S.DisposableStore),this.editor=ue,this._foldingLimitReporter=new A(ue);const re=this.editor.getOptions();this._isEnabled=re.get(42),this._useFoldingProviders=re.get(43)!==\"indentation\",this._unfoldOnClickAfterEndOfLine=re.get(47),this._restoringViewState=!1,this._currentModelHasFoldedImports=!1,this._foldingImportsByDefault=re.get(45),this.updateDebounceInfo=ee.for($.foldingRangeProvider,\"Folding\",{min:200}),this.foldingModel=null,this.hiddenRangeModel=null,this.rangeProvider=null,this.foldingRegionPromise=null,this.foldingModelPromise=null,this.updateScheduler=null,this.cursorChangedScheduler=null,this.mouseDownInfo=null,this.foldingDecorationProvider=new c.FoldingDecorationProvider(ue),this.foldingDecorationProvider.showFoldingControls=re.get(108),this.foldingDecorationProvider.showFoldingHighlights=re.get(44),this.foldingEnabled=x.bindTo(this.contextKeyService),this.foldingEnabled.set(this._isEnabled),this._register(this.editor.onDidChangeModel(()=>this.onModelChanged())),this._register(this.editor.onDidChangeConfiguration(oe=>{if(oe.hasChanged(42)&&(this._isEnabled=this.editor.getOptions().get(42),this.foldingEnabled.set(this._isEnabled),this.onModelChanged()),oe.hasChanged(46)&&this.onModelChanged(),oe.hasChanged(108)||oe.hasChanged(44)){const ge=this.editor.getOptions();this.foldingDecorationProvider.showFoldingControls=ge.get(108),this.foldingDecorationProvider.showFoldingHighlights=ge.get(44),this.triggerFoldingModelChanged()}oe.hasChanged(43)&&(this._useFoldingProviders=this.editor.getOptions().get(43)!==\"indentation\",this.onFoldingStrategyChanged()),oe.hasChanged(47)&&(this._unfoldOnClickAfterEndOfLine=this.editor.getOptions().get(47)),oe.hasChanged(45)&&(this._foldingImportsByDefault=this.editor.getOptions().get(45))})),this.onModelChanged()}saveViewState(){const ue=this.editor.getModel();if(!ue||!this._isEnabled||ue.isTooLargeForTokenization())return{};if(this.foldingModel){const te=this.foldingModel.getMemento(),q=this.rangeProvider?this.rangeProvider.id:void 0;return{collapsedRegions:te,lineCount:ue.getLineCount(),provider:q,foldedImports:this._currentModelHasFoldedImports}}}restoreViewState(ue){const te=this.editor.getModel();if(!(!te||!this._isEnabled||te.isTooLargeForTokenization()||!this.hiddenRangeModel)&&ue&&(this._currentModelHasFoldedImports=!!ue.foldedImports,ue.collapsedRegions&&ue.collapsedRegions.length>0&&this.foldingModel)){this._restoringViewState=!0;try{this.foldingModel.applyMemento(ue.collapsedRegions)}finally{this._restoringViewState=!1}}}onModelChanged(){this.localToDispose.clear();const ue=this.editor.getModel();!this._isEnabled||!ue||ue.isTooLargeForTokenization()||(this._currentModelHasFoldedImports=!1,this.foldingModel=new t.FoldingModel(ue,this.foldingDecorationProvider),this.localToDispose.add(this.foldingModel),this.hiddenRangeModel=new a.HiddenRangeModel(this.foldingModel),this.localToDispose.add(this.hiddenRangeModel),this.localToDispose.add(this.hiddenRangeModel.onDidChange(te=>this.onHiddenRangesChanges(te))),this.updateScheduler=new L.Delayer(this.updateDebounceInfo.get(ue)),this.cursorChangedScheduler=new L.RunOnceScheduler(()=>this.revealCursor(),200),this.localToDispose.add(this.cursorChangedScheduler),this.localToDispose.add(this.languageFeaturesService.foldingRangeProvider.onDidChange(()=>this.onFoldingStrategyChanged())),this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(()=>this.onFoldingStrategyChanged())),this.localToDispose.add(this.editor.onDidChangeModelContent(te=>this.onDidChangeModelContent(te))),this.localToDispose.add(this.editor.onDidChangeCursorPosition(()=>this.onCursorPositionChanged())),this.localToDispose.add(this.editor.onMouseDown(te=>this.onEditorMouseDown(te))),this.localToDispose.add(this.editor.onMouseUp(te=>this.onEditorMouseUp(te))),this.localToDispose.add({dispose:()=>{var te,q;this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),(te=this.updateScheduler)===null||te===void 0||te.cancel(),this.updateScheduler=null,this.foldingModel=null,this.foldingModelPromise=null,this.hiddenRangeModel=null,this.cursorChangedScheduler=null,(q=this.rangeProvider)===null||q===void 0||q.dispose(),this.rangeProvider=null}}),this.triggerFoldingModelChanged())}onFoldingStrategyChanged(){var ue;(ue=this.rangeProvider)===null||ue===void 0||ue.dispose(),this.rangeProvider=null,this.triggerFoldingModelChanged()}getRangeProvider(ue){if(this.rangeProvider)return this.rangeProvider;const te=new u.IndentRangeProvider(ue,this.languageConfigurationService,this._foldingLimitReporter);if(this.rangeProvider=te,this._useFoldingProviders&&this.foldingModel){const q=P.getFoldingRangeProviders(this.languageFeaturesService,ue);q.length>0&&(this.rangeProvider=new d.SyntaxRangeProvider(ue,q,()=>this.triggerFoldingModelChanged(),this._foldingLimitReporter,te))}return this.rangeProvider}getFoldingModel(){return this.foldingModelPromise}onDidChangeModelContent(ue){var te;(te=this.hiddenRangeModel)===null||te===void 0||te.notifyChangeModelContent(ue),this.triggerFoldingModelChanged()}triggerFoldingModelChanged(){this.updateScheduler&&(this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),this.foldingModelPromise=this.updateScheduler.trigger(()=>{const ue=this.foldingModel;if(!ue)return null;const te=new m.StopWatch,q=this.getRangeProvider(ue.textModel),z=this.foldingRegionPromise=(0,L.createCancelablePromise)(ee=>q.compute(ee));return z.then(ee=>{if(ee&&z===this.foldingRegionPromise){let $;if(this._foldingImportsByDefault&&!this._currentModelHasFoldedImports){const ve=ee.setCollapsedAllOfType(i.FoldingRangeKind.Imports.value,!0);ve&&($=g.StableEditorScrollState.capture(this.editor),this._currentModelHasFoldedImports=ve)}const re=this.editor.getSelections(),oe=re?re.map(ve=>ve.startLineNumber):[];ue.update(ee,oe),$?.restore(this.editor);const ge=this.updateDebounceInfo.update(ue.textModel,te.elapsed());this.updateScheduler&&(this.updateScheduler.defaultDelay=ge)}return ue})}).then(void 0,ue=>((0,y.onUnexpectedError)(ue),null)))}onHiddenRangesChanges(ue){if(this.hiddenRangeModel&&ue.length&&!this._restoringViewState){const te=this.editor.getSelections();te&&this.hiddenRangeModel.adjustSelections(te)&&this.editor.setSelections(te)}this.editor.setHiddenAreas(ue,this)}onCursorPositionChanged(){this.hiddenRangeModel&&this.hiddenRangeModel.hasRanges()&&this.cursorChangedScheduler.schedule()}revealCursor(){const ue=this.getFoldingModel();ue&&ue.then(te=>{if(te){const q=this.editor.getSelections();if(q&&q.length>0){const z=[];for(const ee of q){const $=ee.selectionStartLineNumber;this.hiddenRangeModel&&this.hiddenRangeModel.isHidden($)&&z.push(...te.getAllRegionsAtLine($,re=>re.isCollapsed&&$>re.startLineNumber))}z.length&&(te.toggleCollapseState(z),this.reveal(q[0].getPosition()))}}}).then(void 0,y.onUnexpectedError)}onEditorMouseDown(ue){if(this.mouseDownInfo=null,!this.hiddenRangeModel||!ue.target||!ue.target.range||!ue.event.leftButton&&!ue.event.middleButton)return;const te=ue.target.range;let q=!1;switch(ue.target.type){case 4:{const z=ue.target.detail,ee=ue.target.element.offsetLeft;if(z.offsetX-ee<4)return;q=!0;break}case 7:{if(this._unfoldOnClickAfterEndOfLine&&this.hiddenRangeModel.hasRanges()&&!ue.target.detail.isAfterLines)break;return}case 6:{if(this.hiddenRangeModel.hasRanges()){const z=this.editor.getModel();if(z&&te.startColumn===z.getLineMaxColumn(te.startLineNumber))break}return}default:return}this.mouseDownInfo={lineNumber:te.startLineNumber,iconClicked:q}}onEditorMouseUp(ue){const te=this.foldingModel;if(!te||!this.mouseDownInfo||!ue.target)return;const q=this.mouseDownInfo.lineNumber,z=this.mouseDownInfo.iconClicked,ee=ue.target.range;if(!ee||ee.startLineNumber!==q)return;if(z){if(ue.target.type!==4)return}else{const re=this.editor.getModel();if(!re||ee.startColumn!==re.getLineMaxColumn(q))return}const $=te.getRegionAtLine(q);if($&&$.startLineNumber===q){const re=$.isCollapsed;if(z||re){const oe=ue.event.altKey;let ge=[];if(oe){const ve=Le=>!Le.containedBy($)&&!$.containedBy(Le),Se=te.getRegionsInside(null,ve);for(const Le of Se)Le.isCollapsed&&ge.push(Le);ge.length===0&&(ge=Se)}else{const ve=ue.event.middleButton||ue.event.shiftKey;if(ve)for(const Se of te.getRegionsInside($))Se.isCollapsed===re&&ge.push(Se);(re||!ve||ge.length===0)&&ge.push($)}te.toggleCollapseState(ge),this.reveal({lineNumber:q,column:1})}}}reveal(ue){this.editor.revealPositionInCenterIfOutsideViewport(ue,0)}};e.FoldingController=T,T.ID=\"editor.contrib.folding\",e.FoldingController=T=P=ke([fe(1,r.IContextKeyService),fe(2,n.ILanguageConfigurationService),fe(3,l.INotificationService),fe(4,p.ILanguageFeatureDebounceService),fe(5,v.ILanguageFeaturesService)],T);class A{constructor(ue){this.editor=ue,this._onDidChange=new b.Emitter,this._computed=0,this._limited=!1}get limit(){return this.editor.getOptions().get(46)}update(ue,te){(ue!==this._computed||te!==this._limited)&&(this._computed=ue,this._limited=te,this._onDidChange.fire())}}e.RangesLimitReporter=A;class N extends C.EditorAction{runEditorCommand(ue,te,q){const z=ue.get(n.ILanguageConfigurationService),ee=T.get(te);if(!ee)return;const $=ee.getFoldingModel();if($)return this.reportTelemetry(ue,te),$.then(re=>{if(re){this.invoke(ee,re,te,q,z);const oe=te.getSelection();oe&&ee.reveal(oe.getStartPosition())}})}getSelectedLines(ue){const te=ue.getSelections();return te?te.map(q=>q.startLineNumber):[]}getLineNumbers(ue,te){return ue&&ue.selectionLines?ue.selectionLines.map(q=>q+1):this.getSelectedLines(te)}run(ue,te){}}function F(he){if(!_.isUndefined(he)){if(!_.isObject(he))return!1;const ue=he;if(!_.isUndefined(ue.levels)&&!_.isNumber(ue.levels)||!_.isUndefined(ue.direction)&&!_.isString(ue.direction)||!_.isUndefined(ue.selectionLines)&&(!Array.isArray(ue.selectionLines)||!ue.selectionLines.every(_.isNumber)))return!1}return!0}class O extends N{constructor(){super({id:\"editor.unfold\",label:h.localize(0,null),alias:\"Unfold\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:3166,mac:{primary:2654},weight:100},description:{description:\"Unfold the content in the editor\",args:[{name:\"Unfold editor argument\",description:`Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t* 'levels': Number of levels to unfold. If not set, defaults to 1.\n\t\t\t\t\t\t* 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n\t\t\t\t\t\t* 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t`,constraint:F,schema:{type:\"object\",properties:{levels:{type:\"number\",default:1},direction:{type:\"string\",enum:[\"up\",\"down\"],default:\"down\"},selectionLines:{type:\"array\",items:{type:\"number\"}}}}}]}})}invoke(ue,te,q,z){const ee=z&&z.levels||1,$=this.getLineNumbers(z,q);z&&z.direction===\"up\"?(0,t.setCollapseStateLevelsUp)(te,!1,ee,$):(0,t.setCollapseStateLevelsDown)(te,!1,ee,$)}}class W extends N{constructor(){super({id:\"editor.unfoldRecursively\",label:h.localize(1,null),alias:\"Unfold Recursively\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2142),weight:100}})}invoke(ue,te,q,z){(0,t.setCollapseStateLevelsDown)(te,!1,Number.MAX_VALUE,this.getSelectedLines(q))}}class U extends N{constructor(){super({id:\"editor.fold\",label:h.localize(2,null),alias:\"Fold\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:3164,mac:{primary:2652},weight:100},description:{description:\"Fold the content in the editor\",args:[{name:\"Fold editor argument\",description:`Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t\t* 'levels': Number of levels to fold.\n\t\t\t\t\t\t\t* 'direction': If 'up', folds given number of levels up otherwise folds down.\n\t\t\t\t\t\t\t* 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t\tIf no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\t\t\t\t\t\t`,constraint:F,schema:{type:\"object\",properties:{levels:{type:\"number\"},direction:{type:\"string\",enum:[\"up\",\"down\"]},selectionLines:{type:\"array\",items:{type:\"number\"}}}}}]}})}invoke(ue,te,q,z){const ee=this.getLineNumbers(z,q),$=z&&z.levels,re=z&&z.direction;typeof $!=\"number\"&&typeof re!=\"string\"?(0,t.setCollapseStateUp)(te,!0,ee):re===\"up\"?(0,t.setCollapseStateLevelsUp)(te,!0,$||1,ee):(0,t.setCollapseStateLevelsDown)(te,!0,$||1,ee)}}class j extends N{constructor(){super({id:\"editor.toggleFold\",label:h.localize(3,null),alias:\"Toggle Fold\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2090),weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);(0,t.toggleCollapseState)(te,1,z)}}class R extends N{constructor(){super({id:\"editor.foldRecursively\",label:h.localize(4,null),alias:\"Fold Recursively\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2140),weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);(0,t.setCollapseStateLevelsDown)(te,!0,Number.MAX_VALUE,z)}}class K extends N{constructor(){super({id:\"editor.foldAllBlockComments\",label:h.localize(5,null),alias:\"Fold All Block Comments\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2138),weight:100}})}invoke(ue,te,q,z,ee){if(te.regions.hasTypes())(0,t.setCollapseStateForType)(te,i.FoldingRangeKind.Comment.value,!0);else{const $=q.getModel();if(!$)return;const re=ee.getLanguageConfiguration($.getLanguageId()).comments;if(re&&re.blockCommentStartToken){const oe=new RegExp(\"^\\\\s*\"+(0,f.escapeRegExpCharacters)(re.blockCommentStartToken));(0,t.setCollapseStateForMatchingLines)(te,oe,!0)}}}}class G extends N{constructor(){super({id:\"editor.foldAllMarkerRegions\",label:h.localize(6,null),alias:\"Fold All Regions\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2077),weight:100}})}invoke(ue,te,q,z,ee){if(te.regions.hasTypes())(0,t.setCollapseStateForType)(te,i.FoldingRangeKind.Region.value,!0);else{const $=q.getModel();if(!$)return;const re=ee.getLanguageConfiguration($.getLanguageId()).foldingRules;if(re&&re.markers&&re.markers.start){const oe=new RegExp(re.markers.start);(0,t.setCollapseStateForMatchingLines)(te,oe,!0)}}}}class Z extends N{constructor(){super({id:\"editor.unfoldAllMarkerRegions\",label:h.localize(7,null),alias:\"Unfold All Regions\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2078),weight:100}})}invoke(ue,te,q,z,ee){if(te.regions.hasTypes())(0,t.setCollapseStateForType)(te,i.FoldingRangeKind.Region.value,!1);else{const $=q.getModel();if(!$)return;const re=ee.getLanguageConfiguration($.getLanguageId()).foldingRules;if(re&&re.markers&&re.markers.start){const oe=new RegExp(re.markers.start);(0,t.setCollapseStateForMatchingLines)(te,oe,!1)}}}}class J extends N{constructor(){super({id:\"editor.foldAllExcept\",label:h.localize(8,null),alias:\"Fold All Except Selected\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2136),weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);(0,t.setCollapseStateForRest)(te,!0,z)}}class X extends N{constructor(){super({id:\"editor.unfoldAllExcept\",label:h.localize(9,null),alias:\"Unfold All Except Selected\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2134),weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);(0,t.setCollapseStateForRest)(te,!1,z)}}class H extends N{constructor(){super({id:\"editor.foldAll\",label:h.localize(10,null),alias:\"Fold All\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2069),weight:100}})}invoke(ue,te,q){(0,t.setCollapseStateLevelsDown)(te,!0)}}class B extends N{constructor(){super({id:\"editor.unfoldAll\",label:h.localize(11,null),alias:\"Unfold All\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2088),weight:100}})}invoke(ue,te,q){(0,t.setCollapseStateLevelsDown)(te,!1)}}class V extends N{getFoldingLevel(){return parseInt(this.id.substr(V.ID_PREFIX.length))}invoke(ue,te,q){(0,t.setCollapseStateAtLevel)(te,this.getFoldingLevel(),!0,this.getSelectedLines(q))}}V.ID_PREFIX=\"editor.foldLevel\",V.ID=he=>V.ID_PREFIX+he;class Y extends N{constructor(){super({id:\"editor.gotoParentFold\",label:h.localize(12,null),alias:\"Go to Parent Fold\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);if(z.length>0){const ee=(0,t.getParentFoldLine)(z[0],te);ee!==null&&q.setSelection({startLineNumber:ee,startColumn:1,endLineNumber:ee,endColumn:1})}}}class ie extends N{constructor(){super({id:\"editor.gotoPreviousFold\",label:h.localize(13,null),alias:\"Go to Previous Folding Range\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);if(z.length>0){const ee=(0,t.getPreviousFoldLine)(z[0],te);ee!==null&&q.setSelection({startLineNumber:ee,startColumn:1,endLineNumber:ee,endColumn:1})}}}class ae extends N{constructor(){super({id:\"editor.gotoNextFold\",label:h.localize(14,null),alias:\"Go to Next Folding Range\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,weight:100}})}invoke(ue,te,q){const z=this.getSelectedLines(q);if(z.length>0){const ee=(0,t.getNextFoldLine)(z[0],te);ee!==null&&q.setSelection({startLineNumber:ee,startColumn:1,endLineNumber:ee,endColumn:1})}}}class ce extends N{constructor(){super({id:\"editor.createFoldingRangeFromSelection\",label:h.localize(15,null),alias:\"Create Folding Range from Selection\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2135),weight:100}})}invoke(ue,te,q){var z;const ee=[],$=q.getSelections();if($){for(const re of $){let oe=re.endLineNumber;re.endColumn===1&&--oe,oe>re.startLineNumber&&(ee.push({startLineNumber:re.startLineNumber,endLineNumber:oe,type:void 0,isCollapsed:!0,source:1}),q.setSelection({startLineNumber:re.startLineNumber,startColumn:1,endLineNumber:re.startLineNumber,endColumn:1}))}if(ee.length>0){ee.sort((oe,ge)=>oe.startLineNumber-ge.startLineNumber);const re=o.FoldingRegions.sanitizeAndMerge(te.regions,ee,(z=q.getModel())===null||z===void 0?void 0:z.getLineCount());te.updatePost(o.FoldingRegions.fromFoldRanges(re))}}}}class de extends N{constructor(){super({id:\"editor.removeManualFoldingRanges\",label:h.localize(16,null),alias:\"Remove Manual Folding Ranges\",precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2137),weight:100}})}invoke(ue,te,q){const z=q.getSelections();if(z){const ee=[];for(const $ of z){const{startLineNumber:re,endLineNumber:oe}=$;ee.push(oe>=re?{startLineNumber:re,endLineNumber:oe}:{endLineNumber:oe,startLineNumber:re})}te.removeManualRanges(ee),ue.triggerFoldingModelChanged()}}}(0,C.registerEditorContribution)(T.ID,T,0),(0,C.registerEditorAction)(O),(0,C.registerEditorAction)(W),(0,C.registerEditorAction)(U),(0,C.registerEditorAction)(R),(0,C.registerEditorAction)(H),(0,C.registerEditorAction)(B),(0,C.registerEditorAction)(K),(0,C.registerEditorAction)(G),(0,C.registerEditorAction)(Z),(0,C.registerEditorAction)(J),(0,C.registerEditorAction)(X),(0,C.registerEditorAction)(j),(0,C.registerEditorAction)(Y),(0,C.registerEditorAction)(ie),(0,C.registerEditorAction)(ae),(0,C.registerEditorAction)(ce),(0,C.registerEditorAction)(de);for(let he=1;he<=7;he++)(0,C.registerInstantiatedEditorAction)(new V({id:V.ID(he),label:h.localize(17,null,he),alias:`Fold Level ${he}`,precondition:x,kbOpts:{kbExpr:s.EditorContextKeys.editorTextFocus,primary:(0,D.KeyChord)(2089,2048|21+he),weight:100}}));w.CommandsRegistry.registerCommand(\"_executeFoldingRangeProvider\",function(he,...ue){return we(this,void 0,void 0,function*(){const[te]=ue;if(!(te instanceof E.URI))throw(0,y.illegalArgument)();const q=he.get(v.ILanguageFeaturesService),z=he.get(I.IModelService).getModel(te);if(!z)throw(0,y.illegalArgument)();const ee=he.get(M.IConfigurationService);if(!ee.getValue(\"editor.folding\",{resource:te}))return[];const $=he.get(n.ILanguageConfigurationService),re=ee.getValue(\"editor.foldingStrategy\",{resource:te}),oe={get limit(){return ee.getValue(\"editor.foldingMaximumRegions\",{resource:te})},update:(De,ye)=>{}},ge=new u.IndentRangeProvider(z,$,oe);let ve=ge;if(re!==\"indentation\"){const De=T.getFoldingRangeProviders(q,z);De.length&&(ve=new d.SyntaxRangeProvider(z,De,()=>{},oe,ge))}const Se=yield ve.compute(k.CancellationToken.None),Le=[];try{if(Se)for(let De=0;De<Se.length;De++){const ye=Se.getType(De);Le.push({start:Se.getStartLineNumber(De),end:Se.getEndLineNumber(De),kind:ye?i.FoldingRangeKind.fromValue(ye):void 0})}return Le}finally{ve.dispose()}})})}),define(ne[367],se([1,0,7,310,14,2,12,5,40,29,321,103,8,34,13,21,15,599,28,84]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c){\"use strict\";var o,d;Object.defineProperty(e,\"__esModule\",{value:!0}),e.EditorHoverStatusBar=e.ContentHoverWidget=e.ContentHoverController=void 0;const l=L.$;let p=o=class extends D.Disposable{constructor(N,F,O){super(),this._editor=N,this._instantiationService=F,this._keybindingService=O,this._currentResult=null,this._widget=this._register(this._instantiationService.createInstance(M,this._editor)),this._participants=[];for(const W of s.HoverParticipantRegistry.getAll())this._participants.push(this._instantiationService.createInstance(W,this._editor));this._participants.sort((W,U)=>W.hoverOrdinal-U.hoverOrdinal),this._computer=new x(this._editor,this._participants),this._hoverOperation=this._register(new C.HoverOperation(this._editor,this._computer)),this._register(this._hoverOperation.onResult(W=>{if(!this._computer.anchor)return;const U=W.hasLoadingMessage?this._addLoadingMessage(W.value):W.value;this._withResult(new m(this._computer.anchor,U,W.isComplete))})),this._register(L.addStandardDisposableListener(this._widget.getDomNode(),\"keydown\",W=>{W.equals(9)&&this.hide()})),this._register(g.TokenizationRegistry.onDidChange(()=>{this._widget.position&&this._currentResult&&this._setCurrentResult(this._currentResult)}))}get widget(){return this._widget}maybeShowAt(N){if(this._widget.isResizing)return!0;const F=[];for(const W of this._participants)if(W.suggestHoverAnchor){const U=W.suggestHoverAnchor(N);U&&F.push(U)}const O=N.target;if(O.type===6&&F.push(new s.HoverRangeAnchor(0,O.range,N.event.posx,N.event.posy)),O.type===7){const W=this._editor.getOption(49).typicalHalfwidthCharacterWidth/2;!O.detail.isAfterLines&&typeof O.detail.horizontalDistanceToText==\"number\"&&O.detail.horizontalDistanceToText<W&&F.push(new s.HoverRangeAnchor(0,O.range,N.event.posx,N.event.posy))}return F.length===0?this._startShowingOrUpdateHover(null,0,0,!1,N):(F.sort((W,U)=>U.priority-W.priority),this._startShowingOrUpdateHover(F[0],0,0,!1,N))}startShowingAtRange(N,F,O,W){this._startShowingOrUpdateHover(new s.HoverRangeAnchor(0,N,void 0,void 0),F,O,W,null)}_startShowingOrUpdateHover(N,F,O,W,U){return!this._widget.position||!this._currentResult?N?(this._startHoverOperationIfNecessary(N,F,O,W,!1),!0):!1:this._editor.getOption(59).sticky&&U&&this._widget.isMouseGettingCloser(U.event.posx,U.event.posy)?(N&&this._startHoverOperationIfNecessary(N,F,O,W,!0),!0):N?N&&this._currentResult.anchor.equals(N)?!0:N.canAdoptVisibleHover(this._currentResult.anchor,this._widget.position)?(this._setCurrentResult(this._currentResult.filter(N)),this._startHoverOperationIfNecessary(N,F,O,W,!1),!0):(this._setCurrentResult(null),this._startHoverOperationIfNecessary(N,F,O,W,!1),!0):(this._setCurrentResult(null),!1)}_startHoverOperationIfNecessary(N,F,O,W,U){this._computer.anchor&&this._computer.anchor.equals(N)||(this._hoverOperation.cancel(),this._computer.anchor=N,this._computer.shouldFocus=W,this._computer.source=O,this._computer.insistOnKeepingHoverVisible=U,this._hoverOperation.start(F))}_setCurrentResult(N){this._currentResult!==N&&(N&&N.messages.length===0&&(N=null),this._currentResult=N,this._currentResult?this._renderMessages(this._currentResult.anchor,this._currentResult.messages):this._widget.hide())}hide(){this._computer.anchor=null,this._hoverOperation.cancel(),this._setCurrentResult(null)}get isColorPickerVisible(){return this._widget.isColorPickerVisible}get isVisibleFromKeyboard(){return this._widget.isVisibleFromKeyboard}get isVisible(){return this._widget.isVisible}get isFocused(){return this._widget.isFocused}get isResizing(){return this._widget.isResizing}containsNode(N){return N?this._widget.getDomNode().contains(N):!1}_addLoadingMessage(N){if(this._computer.anchor){for(const F of this._participants)if(F.createLoadingMessage){const O=F.createLoadingMessage(this._computer.anchor);if(O)return N.slice(0).concat([O])}}return N}_withResult(N){this._widget.position&&this._currentResult&&this._currentResult.isComplete&&(!N.isComplete||this._computer.insistOnKeepingHoverVisible&&N.messages.length===0)||this._setCurrentResult(N)}_renderMessages(N,F){const{showAtPosition:O,showAtSecondaryPosition:W,highlightRange:U}=o.computeHoverRanges(this._editor,N.range,F),j=new D.DisposableStore,R=j.add(new P(this._keybindingService)),K=document.createDocumentFragment();let G=null;const Z={fragment:K,statusBar:R,setColorPicker:X=>G=X,onContentsChanged:()=>this._widget.onContentsChanged(),setMinimumDimensions:X=>this._widget.setMinimumDimensions(X),hide:()=>this.hide()};for(const X of this._participants){const H=F.filter(B=>B.owner===X);H.length>0&&j.add(X.renderHoverParts(Z,H))}const J=F.some(X=>X.isBeforeContent);if(R.hasContent&&K.appendChild(R.hoverElement),K.hasChildNodes()){if(U){const X=this._editor.createDecorationsCollection();X.set([{range:U,options:o._DECORATION_OPTIONS}]),j.add((0,D.toDisposable)(()=>{X.clear()}))}this._widget.showAt(K,new b(G,O,W,this._editor.getOption(59).above,this._computer.shouldFocus,this._computer.source,J,N.initialMousePosX,N.initialMousePosY,j))}else j.dispose()}static computeHoverRanges(N,F,O){let W=1;if(N.hasModel()){const G=N._getViewModel(),Z=G.coordinatesConverter,J=Z.convertModelRangeToViewRange(F),X=new S.Position(J.startLineNumber,G.getLineMinColumn(J.startLineNumber));W=Z.convertViewPositionToModelPosition(X).column}const U=F.startLineNumber;let j=F.startColumn,R=O[0].range,K=null;for(const G of O)R=f.Range.plusRange(R,G.range),G.range.startLineNumber===U&&G.range.endLineNumber===U&&(j=Math.max(Math.min(j,G.range.startColumn),W)),G.forceShowAtRange&&(K=G.range);return{showAtPosition:K?K.getStartPosition():new S.Position(U,F.startColumn),showAtSecondaryPosition:K?K.getStartPosition():new S.Position(U,j),highlightRange:R}}focus(){this._widget.focus()}scrollUp(){this._widget.scrollUp()}scrollDown(){this._widget.scrollDown()}scrollLeft(){this._widget.scrollLeft()}scrollRight(){this._widget.scrollRight()}pageUp(){this._widget.pageUp()}pageDown(){this._widget.pageDown()}goToTop(){this._widget.goToTop()}goToBottom(){this._widget.goToBottom()}};e.ContentHoverController=p,p._DECORATION_OPTIONS=_.ModelDecorationOptions.register({description:\"content-hover-highlight\",className:\"hoverHighlight\"}),e.ContentHoverController=p=o=ke([fe(1,i.IInstantiationService),fe(2,n.IKeybindingService)],p);class m{constructor(N,F,O){this.anchor=N,this.messages=F,this.isComplete=O}filter(N){const F=this.messages.filter(O=>O.isValidForHoverAnchor(N));return F.length===this.messages.length?this:new v(this,this.anchor,F,this.isComplete)}}class v extends m{constructor(N,F,O,W){super(F,O,W),this.original=N}filter(N){return this.original.filter(N)}}class b{constructor(N,F,O,W,U,j,R,K,G,Z){this.colorPicker=N,this.showAtPosition=F,this.showAtSecondaryPosition=O,this.preferAbove=W,this.stoleFocus=U,this.source=j,this.isBeforeContent=R,this.initialMousePosX=K,this.initialMousePosY=G,this.disposables=Z,this.closestMouseDistance=void 0}}const w=30,E=10,I=6;let M=d=class extends h.ResizableContentWidget{get isColorPickerVisible(){var N;return!!(!((N=this._visibleData)===null||N===void 0)&&N.colorPicker)}get isVisibleFromKeyboard(){var N;return((N=this._visibleData)===null||N===void 0?void 0:N.source)===1}get isVisible(){var N;return(N=this._hoverVisibleKey.get())!==null&&N!==void 0?N:!1}get isFocused(){var N;return(N=this._hoverFocusedKey.get())!==null&&N!==void 0?N:!1}constructor(N,F,O,W,U){const j=N.getOption(65)+8,R=150,K=new L.Dimension(R,j);super(N,K),this._configurationService=O,this._accessibilityService=W,this._keybindingService=U,this._hover=this._register(new k.HoverWidget),this._minimumSize=K,this._hoverVisibleKey=a.EditorContextKeys.hoverVisible.bindTo(F),this._hoverFocusedKey=a.EditorContextKeys.hoverFocused.bindTo(F),L.append(this._resizableNode.domNode,this._hover.containerDomNode),this._resizableNode.domNode.style.zIndex=\"50\",this._register(this._editor.onDidLayoutChange(()=>this._layout())),this._register(this._editor.onDidChangeConfiguration(Z=>{Z.hasChanged(49)&&this._updateFont()}));const G=this._register(L.trackFocus(this._resizableNode.domNode));this._register(G.onDidFocus(()=>{this._hoverFocusedKey.set(!0)})),this._register(G.onDidBlur(()=>{this._hoverFocusedKey.set(!1)})),this._setHoverData(void 0),this._layout(),this._editor.addContentWidget(this)}dispose(){var N;super.dispose(),(N=this._visibleData)===null||N===void 0||N.disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return d.ID}static _applyDimensions(N,F,O){const W=typeof F==\"number\"?`${F}px`:F,U=typeof O==\"number\"?`${O}px`:O;N.style.width=W,N.style.height=U}_setContentsDomNodeDimensions(N,F){const O=this._hover.contentsDomNode;return d._applyDimensions(O,N,F)}_setContainerDomNodeDimensions(N,F){const O=this._hover.containerDomNode;return d._applyDimensions(O,N,F)}_setHoverWidgetDimensions(N,F){this._setContentsDomNodeDimensions(N,F),this._setContainerDomNodeDimensions(N,F),this._layoutContentWidget()}static _applyMaxDimensions(N,F,O){const W=typeof F==\"number\"?`${F}px`:F,U=typeof O==\"number\"?`${O}px`:O;N.style.maxWidth=W,N.style.maxHeight=U}_setHoverWidgetMaxDimensions(N,F){d._applyMaxDimensions(this._hover.contentsDomNode,N,F),d._applyMaxDimensions(this._hover.containerDomNode,N,F),this._hover.containerDomNode.style.setProperty(\"--vscode-hover-maxWidth\",typeof N==\"number\"?`${N}px`:N),this._layoutContentWidget()}_hasHorizontalScrollbar(){const N=this._hover.scrollbar.getScrollDimensions();return N.scrollWidth>N.width}_adjustContentsBottomPadding(){const N=this._hover.contentsDomNode,F=`${this._hover.scrollbar.options.horizontalScrollbarSize}px`;N.style.paddingBottom!==F&&(N.style.paddingBottom=F)}_setAdjustedHoverWidgetDimensions(N){this._setHoverWidgetMaxDimensions(\"none\",\"none\");const F=N.width,O=N.height;this._setHoverWidgetDimensions(F,O),this._hasHorizontalScrollbar()&&(this._adjustContentsBottomPadding(),this._setContentsDomNodeDimensions(F,O-E))}_updateResizableNodeMaxDimensions(){var N,F;const O=(N=this._findMaximumRenderingWidth())!==null&&N!==void 0?N:1/0,W=(F=this._findMaximumRenderingHeight())!==null&&F!==void 0?F:1/0;this._resizableNode.maxSize=new L.Dimension(O,W),this._setHoverWidgetMaxDimensions(O,W)}_resize(N){var F,O;d._lastDimensions=new L.Dimension(N.width,N.height),this._setAdjustedHoverWidgetDimensions(N),this._resizableNode.layout(N.height,N.width),this._updateResizableNodeMaxDimensions(),this._hover.scrollbar.scanDomNode(),this._editor.layoutContentWidget(this),(O=(F=this._visibleData)===null||F===void 0?void 0:F.colorPicker)===null||O===void 0||O.layout()}_findAvailableSpaceVertically(){var N;const F=(N=this._visibleData)===null||N===void 0?void 0:N.showAtPosition;if(F)return this._positionPreference===1?this._availableVerticalSpaceAbove(F):this._availableVerticalSpaceBelow(F)}_findMaximumRenderingHeight(){const N=this._findAvailableSpaceVertically();if(!N)return;let F=I;return Array.from(this._hover.contentsDomNode.children).forEach(O=>{F+=O.clientHeight}),this._hasHorizontalScrollbar()&&(F+=E),Math.min(N,F)}_isHoverTextOverflowing(){this._hover.containerDomNode.style.setProperty(\"--vscode-hover-whiteSpace\",\"nowrap\"),this._hover.containerDomNode.style.setProperty(\"--vscode-hover-sourceWhiteSpace\",\"nowrap\");const N=Array.from(this._hover.contentsDomNode.children).some(F=>F.scrollWidth>F.clientWidth);return this._hover.containerDomNode.style.removeProperty(\"--vscode-hover-whiteSpace\"),this._hover.containerDomNode.style.removeProperty(\"--vscode-hover-sourceWhiteSpace\"),N}_findMaximumRenderingWidth(){if(!this._editor||!this._editor.hasModel())return;const N=this._isHoverTextOverflowing(),F=typeof this._contentWidth>\"u\"?0:this._contentWidth-2;return N||this._hover.containerDomNode.clientWidth<F?L.getClientArea(document.body).width-14:this._hover.containerDomNode.clientWidth+2}isMouseGettingCloser(N,F){if(!this._visibleData)return!1;if(typeof this._visibleData.initialMousePosX>\"u\"||typeof this._visibleData.initialMousePosY>\"u\")return this._visibleData.initialMousePosX=N,this._visibleData.initialMousePosY=F,!1;const O=L.getDomNodePagePosition(this.getDomNode());typeof this._visibleData.closestMouseDistance>\"u\"&&(this._visibleData.closestMouseDistance=T(this._visibleData.initialMousePosX,this._visibleData.initialMousePosY,O.left,O.top,O.width,O.height));const W=T(N,F,O.left,O.top,O.width,O.height);return W>this._visibleData.closestMouseDistance+4?!1:(this._visibleData.closestMouseDistance=Math.min(this._visibleData.closestMouseDistance,W),!0)}_setHoverData(N){var F;(F=this._visibleData)===null||F===void 0||F.disposables.dispose(),this._visibleData=N,this._hoverVisibleKey.set(!!N),this._hover.containerDomNode.classList.toggle(\"hidden\",!N)}_layout(){const{fontSize:N,lineHeight:F}=this._editor.getOption(49),O=this._hover.contentsDomNode;O.style.fontSize=`${N}px`,O.style.lineHeight=`${F/N}`,this._updateMaxDimensions()}_updateFont(){Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName(\"code\")).forEach(F=>this._editor.applyFontInfo(F))}_updateContent(N){const F=this._hover.contentsDomNode;F.style.paddingBottom=\"\",F.textContent=\"\",F.appendChild(N)}_layoutContentWidget(){this._editor.layoutContentWidget(this),this._hover.onContentsChanged()}_updateMaxDimensions(){const N=Math.max(this._editor.getLayoutInfo().height/4,250,d._lastDimensions.height),F=Math.max(this._editor.getLayoutInfo().width*.66,500,d._lastDimensions.width);this._setHoverWidgetMaxDimensions(F,N)}_render(N,F){this._setHoverData(F),this._updateFont(),this._updateContent(N),this._updateMaxDimensions(),this.onContentsChanged(),this._editor.render()}getPosition(){var N;return this._visibleData?{position:this._visibleData.showAtPosition,secondaryPosition:this._visibleData.showAtSecondaryPosition,positionAffinity:this._visibleData.isBeforeContent?3:void 0,preference:[(N=this._positionPreference)!==null&&N!==void 0?N:1]}:null}showAt(N,F){var O,W,U,j;if(!this._editor||!this._editor.hasModel())return;this._render(N,F);const R=L.getTotalHeight(this._hover.containerDomNode),K=F.showAtPosition;this._positionPreference=(O=this._findPositionPreference(R,K))!==null&&O!==void 0?O:1,this.onContentsChanged(),F.stoleFocus&&this._hover.containerDomNode.focus(),(W=F.colorPicker)===null||W===void 0||W.layout();const G=(0,k.getHoverAccessibleViewHint)(this._configurationService.getValue(\"accessibility.verbosity.hover\")===!0&&this._accessibilityService.isScreenReaderOptimized(),(j=(U=this._keybindingService.lookupKeybinding(\"editor.action.accessibleView\"))===null||U===void 0?void 0:U.getAriaLabel())!==null&&j!==void 0?j:\"\");G&&(this._hover.contentsDomNode.ariaLabel=this._hover.contentsDomNode.textContent+\", \"+G)}hide(){if(!this._visibleData)return;const N=this._visibleData.stoleFocus||this._hoverFocusedKey.get();this._setHoverData(void 0),this._resizableNode.maxSize=new L.Dimension(1/0,1/0),this._resizableNode.clearSashHoverState(),this._hoverFocusedKey.set(!1),this._editor.layoutContentWidget(this),N&&this._editor.focus()}_removeConstraintsRenderNormally(){const N=this._editor.getLayoutInfo();this._resizableNode.layout(N.height,N.width),this._setHoverWidgetDimensions(\"auto\",\"auto\")}_adjustHoverHeightForScrollbar(N){var F;const O=this._hover.containerDomNode,W=this._hover.contentsDomNode,U=(F=this._findMaximumRenderingHeight())!==null&&F!==void 0?F:1/0;this._setContainerDomNodeDimensions(L.getTotalWidth(O),Math.min(U,N)),this._setContentsDomNodeDimensions(L.getTotalWidth(W),Math.min(U,N-E))}setMinimumDimensions(N){this._minimumSize=new L.Dimension(Math.max(this._minimumSize.width,N.width),Math.max(this._minimumSize.height,N.height)),this._updateMinimumWidth()}_updateMinimumWidth(){const N=typeof this._contentWidth>\"u\"?this._minimumSize.width:Math.min(this._contentWidth,this._minimumSize.width);this._resizableNode.minSize=new L.Dimension(N,this._minimumSize.height)}onContentsChanged(){var N;this._removeConstraintsRenderNormally();const F=this._hover.containerDomNode;let O=L.getTotalHeight(F),W=L.getTotalWidth(F);if(this._resizableNode.layout(O,W),this._setHoverWidgetDimensions(W,O),O=L.getTotalHeight(F),W=L.getTotalWidth(F),this._contentWidth=W,this._updateMinimumWidth(),this._resizableNode.layout(O,W),this._hasHorizontalScrollbar()&&(this._adjustContentsBottomPadding(),this._adjustHoverHeightForScrollbar(O)),!((N=this._visibleData)===null||N===void 0)&&N.showAtPosition){const U=L.getTotalHeight(this._hover.containerDomNode);this._positionPreference=this._findPositionPreference(U,this._visibleData.showAtPosition)}this._layoutContentWidget()}focus(){this._hover.containerDomNode.focus()}scrollUp(){const N=this._hover.scrollbar.getScrollPosition().scrollTop,F=this._editor.getOption(49);this._hover.scrollbar.setScrollPosition({scrollTop:N-F.lineHeight})}scrollDown(){const N=this._hover.scrollbar.getScrollPosition().scrollTop,F=this._editor.getOption(49);this._hover.scrollbar.setScrollPosition({scrollTop:N+F.lineHeight})}scrollLeft(){const N=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:N-w})}scrollRight(){const N=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:N+w})}pageUp(){const N=this._hover.scrollbar.getScrollPosition().scrollTop,F=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:N-F})}pageDown(){const N=this._hover.scrollbar.getScrollPosition().scrollTop,F=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:N+F})}goToTop(){this._hover.scrollbar.setScrollPosition({scrollTop:0})}goToBottom(){this._hover.scrollbar.setScrollPosition({scrollTop:this._hover.scrollbar.getScrollDimensions().scrollHeight})}};e.ContentHoverWidget=M,M.ID=\"editor.contrib.resizableContentHoverWidget\",M._lastDimensions=new L.Dimension(0,0),e.ContentHoverWidget=M=d=ke([fe(1,u.IContextKeyService),fe(2,r.IConfigurationService),fe(3,c.IAccessibilityService),fe(4,n.IKeybindingService)],M);let P=class extends D.Disposable{get hasContent(){return this._hasContent}constructor(N){super(),this._keybindingService=N,this._hasContent=!1,this.hoverElement=l(\"div.hover-row.status-bar\"),this.actionsElement=L.append(this.hoverElement,l(\"div.actions\"))}addAction(N){const F=this._keybindingService.lookupKeybinding(N.commandId),O=F?F.getLabel():null;return this._hasContent=!0,this._register(k.HoverAction.render(this.actionsElement,N,O))}append(N){const F=L.append(this.actionsElement,N);return this._hasContent=!0,F}};e.EditorHoverStatusBar=P,e.EditorHoverStatusBar=P=ke([fe(0,n.IKeybindingService)],P);class x{get anchor(){return this._anchor}set anchor(N){this._anchor=N}get shouldFocus(){return this._shouldFocus}set shouldFocus(N){this._shouldFocus=N}get source(){return this._source}set source(N){this._source=N}get insistOnKeepingHoverVisible(){return this._insistOnKeepingHoverVisible}set insistOnKeepingHoverVisible(N){this._insistOnKeepingHoverVisible=N}constructor(N,F){this._editor=N,this._participants=F,this._anchor=null,this._shouldFocus=!1,this._source=0,this._insistOnKeepingHoverVisible=!1}static _getLineDecorations(N,F){if(F.type!==1&&!F.supportsMarkerHover)return[];const O=N.getModel(),W=F.range.startLineNumber;if(W>O.getLineCount())return[];const U=O.getLineMaxColumn(W);return N.getLineDecorations(W).filter(j=>{if(j.options.isWholeLine)return!0;const R=j.range.startLineNumber===W?j.range.startColumn:1,K=j.range.endLineNumber===W?j.range.endColumn:U;if(j.options.showIfCollapsed){if(R>F.range.startColumn+1||F.range.endColumn-1>K)return!1}else if(R>F.range.startColumn||F.range.endColumn>K)return!1;return!0})}computeAsync(N){const F=this._anchor;if(!this._editor.hasModel()||!F)return t.AsyncIterableObject.EMPTY;const O=x._getLineDecorations(this._editor,F);return t.AsyncIterableObject.merge(this._participants.map(W=>W.computeAsync?W.computeAsync(F,O,N):t.AsyncIterableObject.EMPTY))}computeSync(){if(!this._editor.hasModel()||!this._anchor)return[];const N=x._getLineDecorations(this._editor,this._anchor);let F=[];for(const O of this._participants)F=F.concat(O.computeSync(this._anchor,N));return(0,y.coalesce)(F)}}function T(A,N,F,O,W,U){const j=F+W/2,R=O+U/2,K=Math.max(Math.abs(A-j)-W/2,0),G=Math.max(Math.abs(N-R)-U/2,0);return Math.sqrt(K*K+G*G)}}),define(ne[885],se([1,0,2,364,8,367,34,6,18,16,21,15,51,32,342,7,199]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";var u,h;Object.defineProperty(e,\"__esModule\",{value:!0}),e.StandaloneColorPickerWidget=e.StandaloneColorPickerController=void 0;let r=u=class extends L.Disposable{constructor(m,v,b,w,E,I,M){super(),this._editor=m,this._modelService=b,this._keybindingService=w,this._instantiationService=E,this._languageFeatureService=I,this._languageConfigurationService=M,this._standaloneColorPickerWidget=null,this._standaloneColorPickerVisible=C.EditorContextKeys.standaloneColorPickerVisible.bindTo(v),this._standaloneColorPickerFocused=C.EditorContextKeys.standaloneColorPickerFocused.bindTo(v)}showOrFocus(){var m;this._editor.hasModel()&&(this._standaloneColorPickerVisible.get()?this._standaloneColorPickerFocused.get()||(m=this._standaloneColorPickerWidget)===null||m===void 0||m.focus():this._standaloneColorPickerWidget=new d(this._editor,this._standaloneColorPickerVisible,this._standaloneColorPickerFocused,this._instantiationService,this._modelService,this._keybindingService,this._languageFeatureService,this._languageConfigurationService))}hide(){var m;this._standaloneColorPickerFocused.set(!1),this._standaloneColorPickerVisible.set(!1),(m=this._standaloneColorPickerWidget)===null||m===void 0||m.hide(),this._editor.focus()}insertColor(){var m;(m=this._standaloneColorPickerWidget)===null||m===void 0||m.updateEditor(),this.hide()}static get(m){return m.getContribution(u.ID)}};e.StandaloneColorPickerController=r,r.ID=\"editor.contrib.standaloneColorPickerController\",e.StandaloneColorPickerController=r=u=ke([fe(1,s.IContextKeyService),fe(2,i.IModelService),fe(3,S.IKeybindingService),fe(4,y.IInstantiationService),fe(5,_.ILanguageFeaturesService),fe(6,n.ILanguageConfigurationService)],r),(0,g.registerEditorContribution)(r.ID,r,1);const c=8,o=22;let d=h=class extends L.Disposable{constructor(m,v,b,w,E,I,M,P){var x;super(),this._editor=m,this._standaloneColorPickerVisible=v,this._standaloneColorPickerFocused=b,this._modelService=E,this._keybindingService=I,this._languageFeaturesService=M,this._languageConfigurationService=P,this.allowEditorOverflow=!0,this._position=void 0,this._body=document.createElement(\"div\"),this._colorHover=null,this._selectionSetInEditor=!1,this._onResult=this._register(new f.Emitter),this.onResult=this._onResult.event,this._standaloneColorPickerVisible.set(!0),this._standaloneColorPickerParticipant=w.createInstance(k.StandaloneColorPickerParticipant,this._editor),this._position=(x=this._editor._getViewModel())===null||x===void 0?void 0:x.getPrimaryCursorState().modelState.position;const T=this._editor.getSelection(),A=T?{startLineNumber:T.startLineNumber,startColumn:T.startColumn,endLineNumber:T.endLineNumber,endColumn:T.endColumn}:{startLineNumber:0,endLineNumber:0,endColumn:0,startColumn:0},N=this._register(a.trackFocus(this._body));this._register(N.onDidBlur(F=>{this.hide()})),this._register(N.onDidFocus(F=>{this.focus()})),this._register(this._editor.onDidChangeCursorPosition(()=>{this._selectionSetInEditor?this._selectionSetInEditor=!1:this.hide()})),this._register(this._editor.onMouseMove(F=>{var O;const W=(O=F.target.element)===null||O===void 0?void 0:O.classList;W&&W.contains(\"colorpicker-color-decoration\")&&this.hide()})),this._register(this.onResult(F=>{this._render(F.value,F.foundInEditor)})),this._start(A),this._body.style.zIndex=\"50\",this._editor.addContentWidget(this)}updateEditor(){this._colorHover&&this._standaloneColorPickerParticipant.updateEditorModel(this._colorHover)}getId(){return h.ID}getDomNode(){return this._body}getPosition(){if(!this._position)return null;const m=this._editor.getOption(59).above;return{position:this._position,secondaryPosition:this._position,preference:m?[1,2]:[2,1],positionAffinity:2}}hide(){this.dispose(),this._standaloneColorPickerVisible.set(!1),this._standaloneColorPickerFocused.set(!1),this._editor.removeContentWidget(this),this._editor.focus()}focus(){this._standaloneColorPickerFocused.set(!0),this._body.focus()}_start(m){return we(this,void 0,void 0,function*(){const v=yield this._computeAsync(m);v&&this._onResult.fire(new l(v.result,v.foundInEditor))})}_computeAsync(m){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel())return null;const v={range:m,color:{red:0,green:0,blue:0,alpha:1}},b=yield this._standaloneColorPickerParticipant.createColorHover(v,new t.DefaultDocumentColorProvider(this._modelService,this._languageConfigurationService),this._languageFeaturesService.colorProvider);return b?{result:b.colorHover,foundInEditor:b.foundInEditor}:null})}_render(m,v){const b=document.createDocumentFragment(),w=this._register(new D.EditorHoverStatusBar(this._keybindingService));let E;const I={fragment:b,statusBar:w,setColorPicker:W=>E=W,onContentsChanged:()=>{},hide:()=>this.hide()};if(this._colorHover=m,this._register(this._standaloneColorPickerParticipant.renderHoverParts(I,[m])),E===void 0)return;this._body.classList.add(\"standalone-colorpicker-body\"),this._body.style.maxHeight=Math.max(this._editor.getLayoutInfo().height/4,250)+\"px\",this._body.style.maxWidth=Math.max(this._editor.getLayoutInfo().width*.66,500)+\"px\",this._body.tabIndex=0,this._body.appendChild(b),E.layout();const M=E.body,P=M.saturationBox.domNode.clientWidth,x=M.domNode.clientWidth-P-o-c,T=E.body.enterButton;T?.onClicked(()=>{this.updateEditor(),this.hide()});const A=E.header,N=A.pickedColorNode;N.style.width=P+c+\"px\";const F=A.originalColorNode;F.style.width=x+\"px\";const O=E.header.closeButton;O?.onClicked(()=>{this.hide()}),v&&(T&&(T.button.textContent=\"Replace\"),this._selectionSetInEditor=!0,this._editor.setSelection(m.range)),this._editor.layoutContentWidget(this)}};e.StandaloneColorPickerWidget=d,d.ID=\"editor.contrib.standaloneColorPickerWidget\",e.StandaloneColorPickerWidget=d=h=ke([fe(3,y.IInstantiationService),fe(4,i.IModelService),fe(5,S.IKeybindingService),fe(6,_.ILanguageFeaturesService),fe(7,n.ILanguageConfigurationService)],d);class l{constructor(m,v){this.value=m,this.foundInEditor=v}}}),define(ne[886],se([1,0,16,645,885,21,30,199]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ShowOrFocusStandaloneColorPicker=void 0;class f extends L.EditorAction2{constructor(){super({id:\"editor.action.showOrFocusStandaloneColorPicker\",title:{value:(0,k.localize)(0,null),mnemonicTitle:(0,k.localize)(1,null),original:\"Show or Focus Standalone Color Picker\"},precondition:void 0,menu:[{id:S.MenuId.CommandPalette}]})}runEditorCommand(s,i){var n;(n=y.StandaloneColorPickerController.get(i))===null||n===void 0||n.showOrFocus()}}e.ShowOrFocusStandaloneColorPicker=f;class _ extends L.EditorAction{constructor(){super({id:\"editor.action.hideColorPicker\",label:(0,k.localize)(2,null),alias:\"Hide the Color Picker\",precondition:D.EditorContextKeys.standaloneColorPickerVisible.isEqualTo(!0),kbOpts:{primary:9,weight:100}})}run(s,i){var n;(n=y.StandaloneColorPickerController.get(i))===null||n===void 0||n.hide()}}class g extends L.EditorAction{constructor(){super({id:\"editor.action.insertColorWithStandaloneColorPicker\",label:(0,k.localize)(3,null),alias:\"Insert Color with Standalone Color Picker\",precondition:D.EditorContextKeys.standaloneColorPickerFocused.isEqualTo(!0),kbOpts:{primary:3,weight:100}})}run(s,i){var n;(n=y.StandaloneColorPickerController.get(i))===null||n===void 0||n.insertColor()}}(0,L.registerEditorAction)(_),(0,L.registerEditorAction)(g),(0,S.registerAction2)(f)}),define(ne[887],se([1,0,13,9,104,16,5,24,21,40,115,674,544,449]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";var n;Object.defineProperty(e,\"__esModule\",{value:!0});let t=n=class{static get(r){return r.getContribution(n.ID)}constructor(r,c){this.editor=r,this.editorWorkerService=c,this.decorations=this.editor.createDecorationsCollection()}dispose(){}run(r,c){var o;(o=this.currentRequest)===null||o===void 0||o.cancel();const d=this.editor.getSelection(),l=this.editor.getModel();if(!l||!d)return;let p=d;if(p.startLineNumber!==p.endLineNumber)return;const m=new y.EditorState(this.editor,5),v=l.uri;return this.editorWorkerService.canNavigateValueSet(v)?(this.currentRequest=(0,L.createCancelablePromise)(b=>this.editorWorkerService.navigateValueSet(v,p,c)),this.currentRequest.then(b=>{var w;if(!b||!b.range||!b.value||!m.validate(this.editor))return;const E=S.Range.lift(b.range);let I=b.range;const M=b.value.length-(p.endColumn-p.startColumn);I={startLineNumber:I.startLineNumber,startColumn:I.startColumn,endLineNumber:I.endLineNumber,endColumn:I.startColumn+b.value.length},M>1&&(p=new f.Selection(p.startLineNumber,p.startColumn,p.endLineNumber,p.endColumn+M-1));const P=new i.InPlaceReplaceCommand(E,p,b.value);this.editor.pushUndoStop(),this.editor.executeCommand(r,P),this.editor.pushUndoStop(),this.decorations.set([{range:I,options:n.DECORATION}]),(w=this.decorationRemover)===null||w===void 0||w.cancel(),this.decorationRemover=(0,L.timeout)(350),this.decorationRemover.then(()=>this.decorations.clear()).catch(k.onUnexpectedError)}).catch(k.onUnexpectedError)):Promise.resolve(void 0)}};t.ID=\"editor.contrib.inPlaceReplaceController\",t.DECORATION=g.ModelDecorationOptions.register({description:\"in-place-replace\",className:\"valueSetReplacement\"}),t=n=ke([fe(1,C.IEditorWorkerService)],t);class a extends D.EditorAction{constructor(){super({id:\"editor.action.inPlaceReplace.up\",label:s.localize(0,null),alias:\"Replace with Previous Value\",precondition:_.EditorContextKeys.writable,kbOpts:{kbExpr:_.EditorContextKeys.editorTextFocus,primary:3159,weight:100}})}run(r,c){const o=t.get(c);return o?o.run(this.id,!1):Promise.resolve(void 0)}}class u extends D.EditorAction{constructor(){super({id:\"editor.action.inPlaceReplace.down\",label:s.localize(1,null),alias:\"Replace with Next Value\",precondition:_.EditorContextKeys.writable,kbOpts:{kbExpr:_.EditorContextKeys.editorTextFocus,primary:3161,weight:100}})}run(r,c){const o=t.get(c);return o?o.run(this.id,!0):Promise.resolve(void 0)}}(0,D.registerEditorContribution)(t.ID,t,4),(0,D.registerEditorAction)(a),(0,D.registerEditorAction)(u)}),define(ne[256],se([1,0,7,13,25,2,11,26,5,40,8,452]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InlineProgressManager=void 0;const s=g.ModelDecorationOptions.register({description:\"inline-progress-widget\",stickiness:1,showIfCollapsed:!0,after:{content:S.noBreakWhitespace,inlineClassName:\"inline-editor-progress-decoration\",inlineClassNameAffectsLetterSpacing:!0}});class i extends D.Disposable{constructor(a,u,h,r,c){super(),this.typeId=a,this.editor=u,this.range=h,this.delegate=c,this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this.create(r),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this)}create(a){this.domNode=L.$(\".inline-progress-widget\"),this.domNode.role=\"button\",this.domNode.title=a;const u=L.$(\"span.icon\");this.domNode.append(u),u.classList.add(...f.ThemeIcon.asClassNameArray(y.Codicon.loading),\"codicon-modifier-spin\");const h=()=>{const r=this.editor.getOption(65);this.domNode.style.height=`${r}px`,this.domNode.style.width=`${Math.ceil(.8*r)}px`};h(),this._register(this.editor.onDidChangeConfiguration(r=>{(r.hasChanged(51)||r.hasChanged(65))&&h()})),this._register(L.addDisposableListener(this.domNode,L.EventType.CLICK,r=>{this.delegate.cancel()}))}getId(){return i.baseId+\".\"+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:{lineNumber:this.range.startLineNumber,column:this.range.startColumn},preference:[0]}}dispose(){super.dispose(),this.editor.removeContentWidget(this)}}i.baseId=\"editor.widget.inlineProgressWidget\";let n=class extends D.Disposable{constructor(a,u,h){super(),this.id=a,this._editor=u,this._instantiationService=h,this._showDelay=500,this._showPromise=this._register(new D.MutableDisposable),this._currentWidget=new D.MutableDisposable,this._operationIdPool=0,this._currentDecorations=u.createDecorationsCollection()}showWhile(a,u,h){return we(this,void 0,void 0,function*(){const r=this._operationIdPool++;this._currentOperation=r,this.clear(),this._showPromise.value=(0,k.disposableTimeout)(()=>{const c=_.Range.fromPositions(a);this._currentDecorations.set([{range:c,options:s}]).length>0&&(this._currentWidget.value=this._instantiationService.createInstance(i,this.id,this._editor,c,u,h))},this._showDelay);try{return yield h}finally{this._currentOperation===r&&(this.clear(),this._currentOperation=void 0)}})}clear(){this._showPromise.clear(),this._currentDecorations.clear(),this._currentWidget.clear()}};e.InlineProgressManager=n,e.InlineProgressManager=n=ke([fe(2,C.IInstantiationService)],n)}),define(ne[888],se([1,0,7,14,13,171,2,107,17,170,185,341,132,5,18,331,104,256,650,96,15,8,77,71,335]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m){\"use strict\";var v;Object.defineProperty(e,\"__esModule\",{value:!0}),e.CopyPasteController=e.pasteWidgetVisibleCtx=e.changePasteTypeCommandId=void 0,e.changePasteTypeCommandId=\"editor.changePasteType\",e.pasteWidgetVisibleCtx=new o.RawContextKey(\"pasteWidgetVisible\",!1,(0,r.localize)(0,null));const b=\"application/vnd.code.copyMetadata\";let w=v=class extends S.Disposable{static get(M){return M.getContribution(v.ID)}constructor(M,P,x,T,A,N,F){super(),this._bulkEditService=x,this._clipboardService=T,this._languageFeaturesService=A,this._quickInputService=N,this._progressService=F,this._editor=M;const O=M.getContainerDomNode();this._register((0,L.addDisposableListener)(O,\"copy\",W=>this.handleCopy(W))),this._register((0,L.addDisposableListener)(O,\"cut\",W=>this.handleCopy(W))),this._register((0,L.addDisposableListener)(O,\"paste\",W=>this.handlePaste(W),!0)),this._pasteProgressManager=this._register(new h.InlineProgressManager(\"pasteIntoEditor\",M,P)),this._postPasteWidgetManager=this._register(P.createInstance(m.PostEditWidgetManager,\"pasteIntoEditor\",M,e.pasteWidgetVisibleCtx,{id:e.changePasteTypeCommandId,label:(0,r.localize)(1,null)}))}changePasteType(){this._postPasteWidgetManager.tryShowSelector()}pasteAs(M){this._editor.focus();try{this._pasteAsActionContext={preferredId:M},document.execCommand(\"paste\")}finally{this._pasteAsActionContext=void 0}}isPasteAsEnabled(){return this._editor.getOption(83).enabled&&!this._editor.getOption(89)}handleCopy(M){var P,x;if(!this._editor.hasTextFocus()||(_.isWeb&&this._clipboardService.writeResources([]),!M.clipboardData||!this.isPasteAsEnabled()))return;const T=this._editor.getModel(),A=this._editor.getSelections();if(!T||!A?.length)return;const N=this._editor.getOption(36);let F=A;const O=A.length===1&&A[0].isEmpty();if(O){if(!N)return;F=[new n.Range(F[0].startLineNumber,1,F[0].startLineNumber,1+T.getLineLength(F[0].startLineNumber))]}const W=(P=this._editor._getViewModel())===null||P===void 0?void 0:P.getPlainTextToCopy(A,N,_.isWindows),j={multicursorText:Array.isArray(W)?W:null,pasteOnNewLine:O,mode:null},R=this._languageFeaturesService.documentPasteEditProvider.ordered(T).filter(X=>!!X.prepareDocumentPaste);if(!R.length){this.setCopyMetadata(M.clipboardData,{defaultPastePayload:j});return}const K=(0,s.toVSDataTransfer)(M.clipboardData),G=R.flatMap(X=>{var H;return(H=X.copyMimeTypes)!==null&&H!==void 0?H:[]}),Z=(0,g.generateUuid)();this.setCopyMetadata(M.clipboardData,{id:Z,providerCopyMimeTypes:G,defaultPastePayload:j});const J=(0,y.createCancelablePromise)(X=>we(this,void 0,void 0,function*(){const H=(0,k.coalesce)(yield Promise.all(R.map(B=>we(this,void 0,void 0,function*(){try{return yield B.prepareDocumentPaste(T,F,K,X)}catch(V){console.error(V);return}}))));H.reverse();for(const B of H)for(const[V,Y]of B)K.replace(V,Y);return K}));(x=this._currentCopyOperation)===null||x===void 0||x.dataTransferPromise.cancel(),this._currentCopyOperation={handle:Z,dataTransferPromise:J}}handlePaste(M){var P,x;return we(this,void 0,void 0,function*(){if(!M.clipboardData||!this._editor.hasTextFocus())return;(P=this._currentPasteOperation)===null||P===void 0||P.cancel(),this._currentPasteOperation=void 0;const T=this._editor.getModel(),A=this._editor.getSelections();if(!A?.length||!T||!this.isPasteAsEnabled())return;const N=this.fetchCopyMetadata(M),F=(0,s.toExternalVSDataTransfer)(M.clipboardData);F.delete(b);const O=[...M.clipboardData.types,...(x=N?.providerCopyMimeTypes)!==null&&x!==void 0?x:[],f.Mimes.uriList],W=this._languageFeaturesService.documentPasteEditProvider.ordered(T).filter(U=>{var j;return(j=U.pasteMimeTypes)===null||j===void 0?void 0:j.some(R=>(0,D.matchesMimeType)(R,O))});W.length&&(M.preventDefault(),M.stopImmediatePropagation(),this._pasteAsActionContext?this.showPasteAsPick(this._pasteAsActionContext.preferredId,W,A,F,N):this.doPasteInline(W,A,F,N))})}doPasteInline(M,P,x,T){const A=(0,y.createCancelablePromise)(N=>we(this,void 0,void 0,function*(){const F=this._editor;if(!F.hasModel())return;const O=F.getModel(),W=new u.EditorStateCancellationTokenSource(F,3,void 0,N);try{if(yield this.mergeInDataFromCopy(x,T,W.token),W.token.isCancellationRequested)return;const U=M.filter(R=>E(R,x));if(!U.length||U.length===1&&U[0].id===\"text\"){yield this.applyDefaultPasteHandler(x,T,W.token);return}const j=yield this.getPasteEdits(U,x,O,P,W.token);if(W.token.isCancellationRequested)return;if(j.length===1&&j[0].providerId===\"text\"){yield this.applyDefaultPasteHandler(x,T,W.token);return}if(j.length){const R=F.getOption(83).showPasteSelector===\"afterPaste\";return this._postPasteWidgetManager.applyEditAndShowIfNeeded(P,{activeEditIndex:0,allEdits:j},R,W.token)}yield this.applyDefaultPasteHandler(x,T,W.token)}finally{W.dispose(),this._currentPasteOperation===A&&(this._currentPasteOperation=void 0)}}));this._pasteProgressManager.showWhile(P[0].getEndPosition(),(0,r.localize)(2,null),A),this._currentPasteOperation=A}showPasteAsPick(M,P,x,T,A){const N=(0,y.createCancelablePromise)(F=>we(this,void 0,void 0,function*(){const O=this._editor;if(!O.hasModel())return;const W=O.getModel(),U=new u.EditorStateCancellationTokenSource(O,3,void 0,F);try{if(yield this.mergeInDataFromCopy(T,A,U.token),U.token.isCancellationRequested)return;let j=P.filter(Z=>E(Z,T));M&&(j=j.filter(Z=>Z.id===M));const R=yield this.getPasteEdits(j,T,W,x,U.token);if(U.token.isCancellationRequested||!R.length)return;let K;if(M)K=R.at(0);else{const Z=yield this._quickInputService.pick(R.map(J=>({label:J.label,description:J.providerId,detail:J.detail,edit:J})),{placeHolder:(0,r.localize)(3,null)});K=Z?.edit}if(!K)return;const G=(0,a.createCombinedWorkspaceEdit)(W.uri,x,K);yield this._bulkEditService.apply(G,{editor:this._editor})}finally{U.dispose(),this._currentPasteOperation===N&&(this._currentPasteOperation=void 0)}}));this._progressService.withProgress({location:10,title:(0,r.localize)(4,null)},()=>N)}setCopyMetadata(M,P){M.setData(b,JSON.stringify(P))}fetchCopyMetadata(M){var P;if(!M.clipboardData)return;const x=M.clipboardData.getData(b);if(x)try{return JSON.parse(x)}catch{return}const[T,A]=C.ClipboardEventUtils.getTextData(M.clipboardData);if(A)return{defaultPastePayload:{mode:A.mode,multicursorText:(P=A.multicursorText)!==null&&P!==void 0?P:null,pasteOnNewLine:!!A.isFromEmptySelection}}}mergeInDataFromCopy(M,P,x){var T;return we(this,void 0,void 0,function*(){if(P?.id&&((T=this._currentCopyOperation)===null||T===void 0?void 0:T.handle)===P.id){const A=yield this._currentCopyOperation.dataTransferPromise;if(x.isCancellationRequested)return;for(const[N,F]of A)M.replace(N,F)}if(!M.has(f.Mimes.uriList)){const A=yield this._clipboardService.readResources();if(x.isCancellationRequested)return;A.length&&M.append(f.Mimes.uriList,(0,D.createStringDataTransferItem)(D.UriList.create(A)))}})}getPasteEdits(M,P,x,T,A){return we(this,void 0,void 0,function*(){const N=yield(0,y.raceCancellation)(Promise.all(M.map(O=>we(this,void 0,void 0,function*(){var W;try{const U=yield(W=O.provideDocumentPasteEdits)===null||W===void 0?void 0:W.call(O,x,T,P,A);if(U)return Object.assign(Object.assign({},U),{providerId:O.id})}catch(U){console.error(U)}}))),A),F=(0,k.coalesce)(N??[]);return(0,a.sortEditsByYieldTo)(F),F})}applyDefaultPasteHandler(M,P,x){var T,A,N;return we(this,void 0,void 0,function*(){const F=(T=M.get(f.Mimes.text))!==null&&T!==void 0?T:M.get(\"text\");if(!F)return;const O=yield F.asString();if(x.isCancellationRequested)return;const W={text:O,pasteOnNewLine:(A=P?.defaultPastePayload.pasteOnNewLine)!==null&&A!==void 0?A:!1,multicursorText:(N=P?.defaultPastePayload.multicursorText)!==null&&N!==void 0?N:null,mode:null};this._editor.trigger(\"keyboard\",\"paste\",W)})}};e.CopyPasteController=w,w.ID=\"editor.contrib.copyPasteActionController\",e.CopyPasteController=w=v=ke([fe(1,d.IInstantiationService),fe(2,i.IBulkEditService),fe(3,c.IClipboardService),fe(4,t.ILanguageFeaturesService),fe(5,p.IQuickInputService),fe(6,l.IProgressService)],w);function E(I,M){var P;return!!(!((P=I.pasteMimeTypes)===null||P===void 0)&&P.some(x=>M.matches(x)))}}),define(ne[889],se([1,0,14,13,171,2,341,5,18,285,749,104,256,653,28,15,340,8,331,335]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c){\"use strict\";var o;Object.defineProperty(e,\"__esModule\",{value:!0}),e.DropIntoEditorController=e.dropWidgetVisibleCtx=e.changeDropTypeCommandId=e.defaultProviderConfig=void 0,e.defaultProviderConfig=\"editor.experimental.dropIntoEditor.defaultProvider\",e.changeDropTypeCommandId=\"editor.changeDropType\",e.dropWidgetVisibleCtx=new a.RawContextKey(\"dropWidgetVisible\",!1,(0,n.localize)(0,null));let d=o=class extends D.Disposable{static get(p){return p.getContribution(o.ID)}constructor(p,m,v,b,w){super(),this._configService=v,this._languageFeaturesService=b,this._treeViewsDragAndDropService=w,this.treeItemsTransfer=u.LocalSelectionTransfer.getInstance(),this._dropProgressManager=this._register(m.createInstance(i.InlineProgressManager,\"dropIntoEditor\",p)),this._postDropWidgetManager=this._register(m.createInstance(c.PostEditWidgetManager,\"dropIntoEditor\",p,e.dropWidgetVisibleCtx,{id:e.changeDropTypeCommandId,label:(0,n.localize)(1,null)})),this._register(p.onDropIntoEditor(E=>this.onDropIntoEditor(p,E.position,E.event)))}changeDropType(){this._postDropWidgetManager.tryShowSelector()}onDropIntoEditor(p,m,v){var b;return we(this,void 0,void 0,function*(){if(!v.dataTransfer||!p.hasModel())return;(b=this._currentOperation)===null||b===void 0||b.cancel(),p.focus(),p.setPosition(m);const w=(0,k.createCancelablePromise)(E=>we(this,void 0,void 0,function*(){const I=new s.EditorStateCancellationTokenSource(p,1,void 0,E);try{const M=yield this.extractDataTransferData(v);if(M.size===0||I.token.isCancellationRequested)return;const P=p.getModel();if(!P)return;const x=this._languageFeaturesService.documentOnDropEditProvider.ordered(P).filter(A=>A.dropMimeTypes?A.dropMimeTypes.some(N=>M.matches(N)):!0),T=yield this.getDropEdits(x,P,m,M,I);if(I.token.isCancellationRequested)return;if(T.length){const A=this.getInitialActiveEditIndex(P,T),N=p.getOption(35).showDropSelector===\"afterDrop\";yield this._postDropWidgetManager.applyEditAndShowIfNeeded([f.Range.fromPositions(m)],{activeEditIndex:A,allEdits:T},N,E)}}finally{I.dispose(),this._currentOperation===w&&(this._currentOperation=void 0)}}));this._dropProgressManager.showWhile(m,(0,n.localize)(2,null),w),this._currentOperation=w})}getDropEdits(p,m,v,b,w){return we(this,void 0,void 0,function*(){const E=yield(0,k.raceCancellation)(Promise.all(p.map(M=>we(this,void 0,void 0,function*(){try{const P=yield M.provideDocumentOnDropEdits(m,v,b,w.token);if(P)return Object.assign(Object.assign({},P),{providerId:M.id})}catch(P){console.error(P)}}))),w.token),I=(0,L.coalesce)(E??[]);return(0,r.sortEditsByYieldTo)(I)})}getInitialActiveEditIndex(p,m){const v=this._configService.getValue(e.defaultProviderConfig,{resource:p.uri});for(const[b,w]of Object.entries(v)){const E=m.findIndex(I=>w===I.providerId&&I.handledMimeType&&(0,y.matchesMimeType)(b,[I.handledMimeType]));if(E>=0)return E}return 0}extractDataTransferData(p){return we(this,void 0,void 0,function*(){if(!p.dataTransfer)return new y.VSDataTransfer;const m=(0,S.toExternalVSDataTransfer)(p.dataTransfer);if(this.treeItemsTransfer.hasData(g.DraggedTreeItemsIdentifier.prototype)){const v=this.treeItemsTransfer.getData(g.DraggedTreeItemsIdentifier.prototype);if(Array.isArray(v))for(const b of v){const w=yield this._treeViewsDragAndDropService.removeDragOperationTransfer(b.identifier);if(w)for(const[E,I]of w)m.replace(E,I)}}return m})}};e.DropIntoEditorController=d,d.ID=\"editor.contrib.dropIntoEditorController\",e.DropIntoEditorController=d=o=ke([fe(1,h.IInstantiationService),fe(2,t.IConfigurationService),fe(3,_.ILanguageFeaturesService),fe(4,C.ITreeViewsDnDService)],d)}),define(ne[890],se([1,0,14,13,19,38,9,6,2,11,22,16,33,12,5,21,40,32,684,15,18,31,76,58,453]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p){\"use strict\";var m;Object.defineProperty(e,\"__esModule\",{value:!0}),e.editorLinkedEditingBackground=e.LinkedEditingAction=e.LinkedEditingContribution=e.CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE=void 0,e.CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE=new c.RawContextKey(\"LinkedEditingInputVisible\",!1);const v=\"linked-editing-decoration\";let b=m=class extends _.Disposable{static get(P){return P.getContribution(m.ID)}constructor(P,x,T,A,N){super(),this.languageConfigurationService=A,this._syncRangesToken=0,this._localToDispose=this._register(new _.DisposableStore),this._editor=P,this._providers=T.linkedEditingRangeProvider,this._enabled=!1,this._visibleContextKey=e.CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE.bindTo(x),this._debounceInformation=N.for(this._providers,\"Linked Editing\",{max:200}),this._currentDecorations=this._editor.createDecorationsCollection(),this._languageWordPattern=null,this._currentWordPattern=null,this._ignoreChangeEvent=!1,this._localToDispose=this._register(new _.DisposableStore),this._rangeUpdateTriggerPromise=null,this._rangeSyncTriggerPromise=null,this._currentRequest=null,this._currentRequestPosition=null,this._currentRequestModelVersion=null,this._register(this._editor.onDidChangeModel(()=>this.reinitialize(!0))),this._register(this._editor.onDidChangeConfiguration(F=>{(F.hasChanged(68)||F.hasChanged(91))&&this.reinitialize(!1)})),this._register(this._providers.onDidChange(()=>this.reinitialize(!1))),this._register(this._editor.onDidChangeModelLanguage(()=>this.reinitialize(!0))),this.reinitialize(!0)}reinitialize(P){const x=this._editor.getModel(),T=x!==null&&(this._editor.getOption(68)||this._editor.getOption(91))&&this._providers.has(x);if(T===this._enabled&&!P||(this._enabled=T,this.clearRanges(),this._localToDispose.clear(),!T||x===null))return;this._localToDispose.add(f.Event.runAndSubscribe(x.onDidChangeLanguageConfiguration,()=>{this._languageWordPattern=this.languageConfigurationService.getLanguageConfiguration(x.getLanguageId()).getWordDefinition()}));const A=new k.Delayer(this._debounceInformation.get(x)),N=()=>{var W;this._rangeUpdateTriggerPromise=A.trigger(()=>this.updateRanges(),(W=this._debounceDuration)!==null&&W!==void 0?W:this._debounceInformation.get(x))},F=new k.Delayer(0),O=W=>{this._rangeSyncTriggerPromise=F.trigger(()=>this._syncRanges(W))};this._localToDispose.add(this._editor.onDidChangeCursorPosition(()=>{N()})),this._localToDispose.add(this._editor.onDidChangeModelContent(W=>{if(!this._ignoreChangeEvent&&this._currentDecorations.length>0){const U=this._currentDecorations.getRange(0);if(U&&W.changes.every(j=>U.intersectRanges(j.range))){O(this._syncRangesToken);return}}N()})),this._localToDispose.add({dispose:()=>{A.dispose(),F.dispose()}}),this.updateRanges()}_syncRanges(P){if(!this._editor.hasModel()||P!==this._syncRangesToken||this._currentDecorations.length===0)return;const x=this._editor.getModel(),T=this._currentDecorations.getRange(0);if(!T||T.startLineNumber!==T.endLineNumber)return this.clearRanges();const A=x.getValueInRange(T);if(this._currentWordPattern){const F=A.match(this._currentWordPattern);if((F?F[0].length:0)!==A.length)return this.clearRanges()}const N=[];for(let F=1,O=this._currentDecorations.length;F<O;F++){const W=this._currentDecorations.getRange(F);if(W)if(W.startLineNumber!==W.endLineNumber)N.push({range:W,text:A});else{let U=x.getValueInRange(W),j=A,R=W.startColumn,K=W.endColumn;const G=g.commonPrefixLength(U,j);R+=G,U=U.substr(G),j=j.substr(G);const Z=g.commonSuffixLength(U,j);K-=Z,U=U.substr(0,U.length-Z),j=j.substr(0,j.length-Z),(R!==K||j.length!==0)&&N.push({range:new t.Range(W.startLineNumber,R,W.endLineNumber,K),text:j})}}if(N.length!==0)try{this._editor.popUndoStop(),this._ignoreChangeEvent=!0;const F=this._editor._getViewModel().getPrevEditOperationType();this._editor.executeEdits(\"linkedEditing\",N),this._editor._getViewModel().setPrevEditOperationType(F)}finally{this._ignoreChangeEvent=!1}}dispose(){this.clearRanges(),super.dispose()}clearRanges(){this._visibleContextKey.set(!1),this._currentDecorations.clear(),this._currentRequest&&(this._currentRequest.cancel(),this._currentRequest=null,this._currentRequestPosition=null)}updateRanges(P=!1){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel()){this.clearRanges();return}const x=this._editor.getPosition();if(!this._enabled&&!P||this._editor.getSelections().length>1){this.clearRanges();return}const T=this._editor.getModel(),A=T.getVersionId();if(this._currentRequestPosition&&this._currentRequestModelVersion===A){if(x.equals(this._currentRequestPosition))return;if(this._currentDecorations.length>0){const F=this._currentDecorations.getRange(0);if(F&&F.containsPosition(x))return}}this.clearRanges(),this._currentRequestPosition=x,this._currentRequestModelVersion=A;const N=(0,k.createCancelablePromise)(F=>we(this,void 0,void 0,function*(){try{const O=new p.StopWatch(!1),W=yield I(this._providers,T,x,F);if(this._debounceInformation.update(T,O.elapsed()),N!==this._currentRequest||(this._currentRequest=null,A!==T.getVersionId()))return;let U=[];W?.ranges&&(U=W.ranges),this._currentWordPattern=W?.wordPattern||this._languageWordPattern;let j=!1;for(let K=0,G=U.length;K<G;K++)if(t.Range.containsPosition(U[K],x)){if(j=!0,K!==0){const Z=U[K];U.splice(K,1),U.unshift(Z)}break}if(!j){this.clearRanges();return}const R=U.map(K=>({range:K,options:m.DECORATION}));this._visibleContextKey.set(!0),this._currentDecorations.set(R),this._syncRangesToken++}catch(O){(0,S.isCancellationError)(O)||(0,S.onUnexpectedError)(O),(this._currentRequest===N||!this._currentRequest)&&this.clearRanges()}}));return this._currentRequest=N,N})}};e.LinkedEditingContribution=b,b.ID=\"editor.contrib.linkedEditing\",b.DECORATION=u.ModelDecorationOptions.register({description:\"linked-editing\",stickiness:0,className:v}),e.LinkedEditingContribution=b=m=ke([fe(1,c.IContextKeyService),fe(2,o.ILanguageFeaturesService),fe(3,h.ILanguageConfigurationService),fe(4,l.ILanguageFeatureDebounceService)],b);class w extends s.EditorAction{constructor(){super({id:\"editor.action.linkedEditing\",label:r.localize(0,null),alias:\"Start Linked Editing\",precondition:c.ContextKeyExpr.and(a.EditorContextKeys.writable,a.EditorContextKeys.hasRenameProvider),kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,primary:3132,weight:100}})}runCommand(P,x){const T=P.get(i.ICodeEditorService),[A,N]=Array.isArray(x)&&x||[void 0,void 0];return C.URI.isUri(A)&&n.Position.isIPosition(N)?T.openCodeEditor({resource:A},T.getActiveCodeEditor()).then(F=>{F&&(F.setPosition(N),F.invokeWithinContext(O=>(this.reportTelemetry(O,F),this.run(O,F))))},S.onUnexpectedError):super.runCommand(P,x)}run(P,x){const T=b.get(x);return T?Promise.resolve(T.updateRanges(!0)):Promise.resolve()}}e.LinkedEditingAction=w;const E=s.EditorCommand.bindToContribution(b.get);(0,s.registerEditorCommand)(new E({id:\"cancelLinkedEditingInput\",precondition:e.CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE,handler:M=>M.clearRanges(),kbOpts:{kbExpr:a.EditorContextKeys.editorTextFocus,weight:100+99,primary:9,secondary:[1033]}}));function I(M,P,x,T){const A=M.ordered(P);return(0,k.first)(A.map(N=>()=>we(this,void 0,void 0,function*(){try{return yield N.provideLinkedEditingRanges(P,x,T)}catch(F){(0,S.onUnexpectedExternalError)(F);return}})),N=>!!N&&L.isNonEmptyArray(N?.ranges))}e.editorLinkedEditingBackground=(0,d.registerColor)(\"editor.linkedEditingBackground\",{dark:D.Color.fromHex(\"#f00\").transparent(.3),light:D.Color.fromHex(\"#f00\").transparent(.3),hcDark:D.Color.fromHex(\"#f00\").transparent(.3),hcLight:D.Color.white},r.localize(1,null)),(0,s.registerModelAndPositionCommand)(\"_executeLinkedEditingProvider\",(M,P,x)=>{const{linkedEditingRangeProvider:T}=M.get(o.ILanguageFeaturesService);return I(T,P,x,y.CancellationToken.None)}),(0,s.registerEditorContribution)(b.ID,b,1),(0,s.registerEditorAction)(w)}),define(ne[891],se([1,0,13,19,9,55,2,54,17,45,58,22,16,40,76,18,186,751,685,43,56,454]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){\"use strict\";var d;Object.defineProperty(e,\"__esModule\",{value:!0}),e.LinkDetector=void 0;let l=d=class extends S.Disposable{static get(E){return E.getContribution(d.ID)}constructor(E,I,M,P,x){super(),this.editor=E,this.openerService=I,this.notificationService=M,this.languageFeaturesService=P,this.providers=this.languageFeaturesService.linkProvider,this.debounceInformation=x.for(this.providers,\"Links\",{min:1e3,max:4e3}),this.computeLinks=this._register(new L.RunOnceScheduler(()=>this.computeLinksNow(),1e3)),this.computePromise=null,this.activeLinksList=null,this.currentOccurrences={},this.activeLinkDecorationId=null;const T=this._register(new u.ClickLinkGesture(E));this._register(T.onMouseMoveOrRelevantKeyDown(([A,N])=>{this._onEditorMouseMove(A,N)})),this._register(T.onExecute(A=>{this.onEditorMouseUp(A)})),this._register(T.onCancel(A=>{this.cleanUpActiveLinkDecoration()})),this._register(E.onDidChangeConfiguration(A=>{A.hasChanged(69)&&(this.updateDecorations([]),this.stop(),this.computeLinks.schedule(0))})),this._register(E.onDidChangeModelContent(A=>{this.editor.hasModel()&&this.computeLinks.schedule(this.debounceInformation.get(this.editor.getModel()))})),this._register(E.onDidChangeModel(A=>{this.currentOccurrences={},this.activeLinkDecorationId=null,this.stop(),this.computeLinks.schedule(0)})),this._register(E.onDidChangeModelLanguage(A=>{this.stop(),this.computeLinks.schedule(0)})),this._register(this.providers.onDidChange(A=>{this.stop(),this.computeLinks.schedule(0)})),this.computeLinks.schedule(0)}computeLinksNow(){return we(this,void 0,void 0,function*(){if(!this.editor.hasModel()||!this.editor.getOption(69))return;const E=this.editor.getModel();if(this.providers.has(E)){this.activeLinksList&&(this.activeLinksList.dispose(),this.activeLinksList=null),this.computePromise=(0,L.createCancelablePromise)(I=>(0,h.getLinks)(this.providers,E,I));try{const I=new C.StopWatch(!1);if(this.activeLinksList=yield this.computePromise,this.debounceInformation.update(E,I.elapsed()),E.isDisposed())return;this.updateDecorations(this.activeLinksList.links)}catch(I){(0,y.onUnexpectedError)(I)}finally{this.computePromise=null}}})}updateDecorations(E){const I=this.editor.getOption(76)===\"altKey\",M=[],P=Object.keys(this.currentOccurrences);for(const T of P){const A=this.currentOccurrences[T];M.push(A.decorationId)}const x=[];if(E)for(const T of E)x.push(m.decoration(T,I));this.editor.changeDecorations(T=>{const A=T.deltaDecorations(M,x);this.currentOccurrences={},this.activeLinkDecorationId=null;for(let N=0,F=A.length;N<F;N++){const O=new m(E[N],A[N]);this.currentOccurrences[O.decorationId]=O}})}_onEditorMouseMove(E,I){const M=this.editor.getOption(76)===\"altKey\";if(this.isEnabled(E,I)){this.cleanUpActiveLinkDecoration();const P=this.getLinkOccurrence(E.target.position);P&&this.editor.changeDecorations(x=>{P.activate(x,M),this.activeLinkDecorationId=P.decorationId})}else this.cleanUpActiveLinkDecoration()}cleanUpActiveLinkDecoration(){const E=this.editor.getOption(76)===\"altKey\";if(this.activeLinkDecorationId){const I=this.currentOccurrences[this.activeLinkDecorationId];I&&this.editor.changeDecorations(M=>{I.deactivate(M,E)}),this.activeLinkDecorationId=null}}onEditorMouseUp(E){if(!this.isEnabled(E))return;const I=this.getLinkOccurrence(E.target.position);I&&this.openLinkOccurrence(I,E.hasSideBySideModifier,!0)}openLinkOccurrence(E,I,M=!1){if(!this.openerService)return;const{link:P}=E;P.resolve(k.CancellationToken.None).then(x=>{if(typeof x==\"string\"&&this.editor.hasModel()){const T=this.editor.getModel().uri;if(T.scheme===f.Schemas.file&&x.startsWith(`${f.Schemas.file}:`)){const A=s.URI.parse(x);if(A.scheme===f.Schemas.file){const N=g.originalFSPath(A);let F=null;N.startsWith(\"/./\")?F=`.${N.substr(1)}`:N.startsWith(\"//./\")&&(F=`.${N.substr(2)}`),F&&(x=g.joinPath(T,F))}}}return this.openerService.open(x,{openToSide:I,fromUserGesture:M,allowContributedOpeners:!0,allowCommands:!0,fromWorkspace:!0})},x=>{const T=x instanceof Error?x.message:x;T===\"invalid\"?this.notificationService.warn(r.localize(0,null,P.url.toString())):T===\"missing\"?this.notificationService.warn(r.localize(1,null)):(0,y.onUnexpectedError)(x)})}getLinkOccurrence(E){if(!this.editor.hasModel()||!E)return null;const I=this.editor.getModel().getDecorationsInRange({startLineNumber:E.lineNumber,startColumn:E.column,endLineNumber:E.lineNumber,endColumn:E.column},0,!0);for(const M of I){const P=this.currentOccurrences[M.id];if(P)return P}return null}isEnabled(E,I){return!!(E.target.type===6&&(E.hasTriggerModifier||I&&I.keyCodeIsTriggerKey))}stop(){var E;this.computeLinks.cancel(),this.activeLinksList&&((E=this.activeLinksList)===null||E===void 0||E.dispose(),this.activeLinksList=null),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop()}};e.LinkDetector=l,l.ID=\"editor.linkDetector\",e.LinkDetector=l=d=ke([fe(1,o.IOpenerService),fe(2,c.INotificationService),fe(3,a.ILanguageFeaturesService),fe(4,t.ILanguageFeatureDebounceService)],l);const p={general:n.ModelDecorationOptions.register({description:\"detected-link\",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:\"detected-link\"}),active:n.ModelDecorationOptions.register({description:\"detected-link-active\",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:\"detected-link-active\"})};class m{static decoration(E,I){return{range:E.range,options:m._getOptions(E,I,!1)}}static _getOptions(E,I,M){const P=Object.assign({},M?p.active:p.general);return P.hoverMessage=v(E,I),P}constructor(E,I){this.link=E,this.decorationId=I}activate(E,I){E.changeDecorationOptions(this.decorationId,m._getOptions(this.link,I,!0))}deactivate(E,I){E.changeDecorationOptions(this.decorationId,m._getOptions(this.link,I,!1))}}function v(w,E){const I=w.url&&/^command:/i.test(w.url.toString()),M=w.tooltip?w.tooltip:I?r.localize(2,null):r.localize(3,null),P=E?_.isMacintosh?r.localize(4,null):r.localize(5,null):_.isMacintosh?r.localize(6,null):r.localize(7,null);if(w.url){let x=\"\";if(/^command:/i.test(w.url.toString())){const A=w.url.toString().match(/^command:([^?#]+)/);if(A){const N=A[1];x=r.localize(8,null,N)}}return new D.MarkdownString(\"\",!0).appendLink(w.url.toString(!0).replace(/ /g,\"%20\"),M,x).appendMarkdown(` (${P})`)}else return new D.MarkdownString().appendText(`${M} (${P})`)}class b extends i.EditorAction{constructor(){super({id:\"editor.action.openLink\",label:r.localize(9,null),alias:\"Open Link\",precondition:void 0})}run(E,I){const M=l.get(I);if(!M||!I.hasModel())return;const P=I.getSelections();for(const x of P){const T=M.getLinkOccurrence(x.getEndPosition());T&&M.openLinkOccurrence(T,!1)}}}(0,i.registerEditorContribution)(l.ID,l,1),(0,i.registerEditorAction)(b)}),define(ne[892],se([1,0,2,18,188,13,255,293,292,32,9,299,46]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StickyModelProvider=void 0;var n;(function(d){d.OUTLINE_MODEL=\"outlineModel\",d.FOLDING_PROVIDER_MODEL=\"foldingProviderModel\",d.INDENTATION_MODEL=\"indentationModel\"})(n||(n={}));var t;(function(d){d[d.VALID=0]=\"VALID\",d[d.INVALID=1]=\"INVALID\",d[d.CANCELED=2]=\"CANCELED\"})(t||(t={}));let a=class extends L.Disposable{constructor(l,p,m,v){super(),this._editor=l,this._languageConfigurationService=p,this._languageFeaturesService=m,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=this._register(new D.Delayer(300)),this._updateOperation=this._register(new L.DisposableStore);const b=new h(m),w=new o(this._editor,m),E=new c(this._editor,p);switch(v){case n.OUTLINE_MODEL:this._modelProviders.push(b),this._modelProviders.push(w),this._modelProviders.push(E);break;case n.FOLDING_PROVIDER_MODEL:this._modelProviders.push(w),this._modelProviders.push(E);break;case n.INDENTATION_MODEL:this._modelProviders.push(E);break}}_cancelModelPromise(){this._modelPromise&&(this._modelPromise.cancel(),this._modelPromise=null)}update(l,p,m){return we(this,void 0,void 0,function*(){return this._updateOperation.clear(),this._updateOperation.add({dispose:()=>{this._cancelModelPromise(),this._updateScheduler.cancel()}}),this._cancelModelPromise(),yield this._updateScheduler.trigger(()=>we(this,void 0,void 0,function*(){for(const v of this._modelProviders){const{statusPromise:b,modelPromise:w}=v.computeStickyModel(l,p,m);this._modelPromise=w;const E=yield b;if(this._modelPromise!==w)return null;switch(E){case t.CANCELED:return this._updateOperation.clear(),null;case t.VALID:return v.stickyModel}}return null})).catch(v=>((0,C.onUnexpectedError)(v),null))})}};e.StickyModelProvider=a,e.StickyModelProvider=a=ke([fe(1,g.ILanguageConfigurationService),fe(2,k.ILanguageFeaturesService)],a);class u{constructor(){this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,t.INVALID}computeStickyModel(l,p,m){if(m.isCancellationRequested||!this.isProviderValid(l))return{statusPromise:this._invalid(),modelPromise:null};const v=(0,D.createCancelablePromise)(b=>this.createModelFromProvider(l,p,b));return{statusPromise:v.then(b=>this.isModelValid(b)?m.isCancellationRequested?t.CANCELED:(this._stickyModel=this.createStickyModel(l,p,m,b),t.VALID):this._invalid()).then(void 0,b=>((0,C.onUnexpectedError)(b),t.CANCELED)),modelPromise:v}}isModelValid(l){return!0}isProviderValid(l){return!0}}let h=class extends u{constructor(l){super(),this._languageFeaturesService=l}createModelFromProvider(l,p,m){return y.OutlineModel.create(this._languageFeaturesService.documentSymbolProvider,l,m)}createStickyModel(l,p,m,v){var b;const{stickyOutlineElement:w,providerID:E}=this._stickyModelFromOutlineModel(v,(b=this._stickyModel)===null||b===void 0?void 0:b.outlineProviderId);return new s.StickyModel(l.uri,p,w,E)}isModelValid(l){return l&&l.children.size>0}_stickyModelFromOutlineModel(l,p){let m;if(i.Iterable.first(l.children.values())instanceof y.OutlineGroup){const E=i.Iterable.find(l.children.values(),I=>I.id===p);if(E)m=E.children;else{let I=\"\",M=-1,P;for(const[x,T]of l.children.entries()){const A=this._findSumOfRangesOfGroup(T);A>M&&(P=T,M=A,I=T.id)}p=I,m=P.children}}else m=l.children;const v=[],b=Array.from(m.values()).sort((E,I)=>{const M=new s.StickyRange(E.symbol.range.startLineNumber,E.symbol.range.endLineNumber),P=new s.StickyRange(I.symbol.range.startLineNumber,I.symbol.range.endLineNumber);return this._comparator(M,P)});for(const E of b)v.push(this._stickyModelFromOutlineElement(E,E.symbol.selectionRange.startLineNumber));return{stickyOutlineElement:new s.StickyElement(void 0,v,void 0),providerID:p}}_stickyModelFromOutlineElement(l,p){const m=[];for(const b of l.children.values())if(b.symbol.selectionRange.startLineNumber!==b.symbol.range.endLineNumber)if(b.symbol.selectionRange.startLineNumber!==p)m.push(this._stickyModelFromOutlineElement(b,b.symbol.selectionRange.startLineNumber));else for(const w of b.children.values())m.push(this._stickyModelFromOutlineElement(w,b.symbol.selectionRange.startLineNumber));m.sort((b,w)=>this._comparator(b.range,w.range));const v=new s.StickyRange(l.symbol.selectionRange.startLineNumber,l.symbol.range.endLineNumber);return new s.StickyElement(v,m,void 0)}_comparator(l,p){return l.startLineNumber!==p.startLineNumber?l.startLineNumber-p.startLineNumber:p.endLineNumber-l.endLineNumber}_findSumOfRangesOfGroup(l){let p=0;for(const m of l.children.values())p+=this._findSumOfRangesOfGroup(m);return l instanceof y.OutlineElement?p+l.symbol.range.endLineNumber-l.symbol.selectionRange.startLineNumber:p}};h=ke([fe(0,k.ILanguageFeaturesService)],h);class r extends u{constructor(l){super(),this._foldingLimitReporter=new S.RangesLimitReporter(l)}createStickyModel(l,p,m,v){const b=this._fromFoldingRegions(v);return new s.StickyModel(l.uri,p,b,void 0)}isModelValid(l){return l!==null}_fromFoldingRegions(l){const p=l.length,m=[],v=new s.StickyElement(void 0,[],void 0);for(let b=0;b<p;b++){const w=l.getParentIndex(b);let E;w!==-1?E=m[w]:E=v;const I=new s.StickyElement(new s.StickyRange(l.getStartLineNumber(b),l.getEndLineNumber(b)+1),[],E);E.children.push(I),m.push(I)}return v}}let c=class extends r{constructor(l,p){super(l),this._languageConfigurationService=p}createModelFromProvider(l,p,m){return new _.IndentRangeProvider(l,this._languageConfigurationService,this._foldingLimitReporter).compute(m)}};c=ke([fe(1,g.ILanguageConfigurationService)],c);let o=class extends r{constructor(l,p){super(l),this._languageFeaturesService=p}isProviderValid(l){return S.FoldingController.getFoldingRangeProviders(this._languageFeaturesService,l).length>0}createModelFromProvider(l,p,m){const v=S.FoldingController.getFoldingRangeProviders(this._languageFeaturesService,l);return new f.SyntaxRangeProvider(l,v,()=>this.createModelFromProvider(l,p,m),this._foldingLimitReporter,void 0).compute(m)}};o=ke([fe(1,k.ILanguageFeaturesService)],o)}),define(ne[893],se([1,0,2,18,19,13,14,6,32,892]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StickyLineCandidateProvider=e.StickyLineCandidate=void 0;class C{constructor(n,t,a){this.startLineNumber=n,this.endLineNumber=t,this.nestingDepth=a}}e.StickyLineCandidate=C;let s=class extends L.Disposable{constructor(n,t,a){super(),this._languageFeaturesService=t,this._languageConfigurationService=a,this._onDidChangeStickyScroll=this._register(new f.Emitter),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._options=null,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=n,this._sessionStore=this._register(new L.DisposableStore),this._updateSoon=this._register(new D.RunOnceScheduler(()=>this.update(),50)),this._register(this._editor.onDidChangeConfiguration(u=>{u.hasChanged(113)&&this.readConfiguration()})),this.readConfiguration()}readConfiguration(){this._stickyModelProvider=null,this._sessionStore.clear(),this._options=this._editor.getOption(113),this._options.enabled&&(this._stickyModelProvider=this._sessionStore.add(new g.StickyModelProvider(this._editor,this._languageConfigurationService,this._languageFeaturesService,this._options.defaultModel)),this._sessionStore.add(this._editor.onDidChangeModel(()=>{this._model=null,this._onDidChangeStickyScroll.fire(),this.update()})),this._sessionStore.add(this._editor.onDidChangeHiddenAreas(()=>this.update())),this._sessionStore.add(this._editor.onDidChangeModelContent(()=>this._updateSoon.schedule())),this._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>this.update())),this.update())}getVersionId(){var n;return(n=this._model)===null||n===void 0?void 0:n.version}update(){var n;return we(this,void 0,void 0,function*(){(n=this._cts)===null||n===void 0||n.dispose(!0),this._cts=new y.CancellationTokenSource,yield this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()})}updateStickyModel(n){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel()||!this._stickyModelProvider){this._model=null;return}const t=this._editor.getModel(),a=t.getVersionId(),u=yield this._stickyModelProvider.update(t,a,n);n.isCancellationRequested||(this._model=u)})}updateIndex(n){return n===-1?n=0:n<0&&(n=-n-2),n}getCandidateStickyLinesIntersectingFromStickyModel(n,t,a,u,h){if(t.children.length===0)return;let r=h;const c=[];for(let l=0;l<t.children.length;l++){const p=t.children[l];p.range&&c.push(p.range.startLineNumber)}const o=this.updateIndex((0,S.binarySearch)(c,n.startLineNumber,(l,p)=>l-p)),d=this.updateIndex((0,S.binarySearch)(c,n.startLineNumber+u,(l,p)=>l-p));for(let l=o;l<=d;l++){const p=t.children[l];if(!p)return;if(p.range){const m=p.range.startLineNumber,v=p.range.endLineNumber;n.startLineNumber<=v+1&&m-1<=n.endLineNumber&&m!==r&&(r=m,a.push(new C(m,v-1,u+1)),this.getCandidateStickyLinesIntersectingFromStickyModel(n,p,a,u+1,m))}else this.getCandidateStickyLinesIntersectingFromStickyModel(n,p,a,u,h)}}getCandidateStickyLinesIntersecting(n){var t,a;if(!(!((t=this._model)===null||t===void 0)&&t.element))return[];let u=[];this.getCandidateStickyLinesIntersectingFromStickyModel(n,this._model.element,u,0,-1);const h=(a=this._editor._getViewModel())===null||a===void 0?void 0:a.getHiddenAreas();if(h)for(const r of h)u=u.filter(c=>!(c.startLineNumber>=r.startLineNumber&&c.endLineNumber<=r.endLineNumber+1));return u}};e.StickyLineCandidateProvider=s,e.StickyLineCandidateProvider=s=ke([fe(1,k.ILanguageFeaturesService),fe(2,_.ILanguageConfigurationService)],s)}),define(ne[894],se([1,0,7,89,2,26,251,162,12,93,127,95,255,366,291,461]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StickyScrollWidget=e.StickyScrollWidgetState=void 0;class a{constructor(l,p,m,v=null){this.startLineNumbers=l,this.endLineNumbers=p,this.lastLineRelativePosition=m,this.showEndForLine=v}}e.StickyScrollWidgetState=a;const u=(0,k.createTrustedTypesPolicy)(\"stickyScrollViewLayer\",{createHTML:d=>d}),h=\"data-sticky-line-index\";class r extends y.Disposable{constructor(l){super(),this._editor=l,this._foldingIconStore=new y.DisposableStore,this._rootDomNode=document.createElement(\"div\"),this._lineNumbersDomNode=document.createElement(\"div\"),this._linesDomNodeScrollable=document.createElement(\"div\"),this._linesDomNode=document.createElement(\"div\"),this._lineHeight=this._editor.getOption(65),this._stickyLines=[],this._lineNumbers=[],this._lastLineRelativePosition=0,this._minContentWidthInPx=0,this._isOnGlyphMargin=!1,this._lineNumbersDomNode.className=\"sticky-widget-line-numbers\",this._lineNumbersDomNode.setAttribute(\"role\",\"none\"),this._linesDomNode.className=\"sticky-widget-lines\",this._linesDomNode.setAttribute(\"role\",\"list\"),this._linesDomNodeScrollable.className=\"sticky-widget-lines-scrollable\",this._linesDomNodeScrollable.appendChild(this._linesDomNode),this._rootDomNode.className=\"sticky-widget\",this._rootDomNode.classList.toggle(\"peek\",l instanceof f.EmbeddedCodeEditorWidget),this._rootDomNode.appendChild(this._lineNumbersDomNode),this._rootDomNode.appendChild(this._linesDomNodeScrollable);const p=()=>{this._linesDomNode.style.left=this._editor.getOption(113).scrollWithEditor?`-${this._editor.getScrollLeft()}px`:\"0px\"};this._register(this._editor.onDidChangeConfiguration(m=>{m.hasChanged(113)&&p(),m.hasChanged(65)&&(this._lineHeight=this._editor.getOption(65))})),this._register(this._editor.onDidScrollChange(m=>{m.scrollLeftChanged&&p(),m.scrollWidthChanged&&this._updateWidgetWidth()})),this._register(this._editor.onDidChangeModel(()=>{p(),this._updateWidgetWidth()})),this._register(this._foldingIconStore),p(),this._register(this._editor.onDidLayoutChange(m=>{this._updateWidgetWidth()})),this._updateWidgetWidth()}get lineNumbers(){return this._lineNumbers}get lineNumberCount(){return this._lineNumbers.length}getCurrentLines(){return this._lineNumbers}setState(l){if(this._clearStickyWidget(),!l||!this._editor._getViewModel())return;if(l.startLineNumbers.length*this._lineHeight+l.lastLineRelativePosition>0){this._lastLineRelativePosition=l.lastLineRelativePosition;const m=[...l.startLineNumbers];l.showEndForLine!==null&&(m[l.showEndForLine]=l.endLineNumbers[l.showEndForLine]),this._lineNumbers=m}else this._lastLineRelativePosition=0,this._lineNumbers=[];this._renderRootNode()}_updateWidgetWidth(){const l=this._editor.getLayoutInfo(),m=this._editor.getOption(71).side===\"left\"?l.contentLeft-l.minimap.minimapCanvasOuterWidth:l.contentLeft;this._lineNumbersDomNode.style.width=`${m}px`,this._linesDomNodeScrollable.style.setProperty(\"--vscode-editorStickyScroll-scrollableWidth\",`${this._editor.getScrollWidth()-l.verticalScrollbarWidth}px`),this._rootDomNode.style.width=`${l.width-l.minimap.minimapCanvasOuterWidth-l.verticalScrollbarWidth}px`}_clearStickyWidget(){this._stickyLines=[],this._foldingIconStore.clear(),L.clearNode(this._lineNumbersDomNode),L.clearNode(this._linesDomNode),this._rootDomNode.style.display=\"none\"}_useFoldingOpacityTransition(l){this._lineNumbersDomNode.style.setProperty(\"--vscode-editorStickyScroll-foldingOpacityTransition\",`opacity ${l?.5:0}s`)}_setFoldingIconsVisibility(l){for(const p of this._stickyLines){const m=p.foldingIcon;m&&m.setVisible(l?!0:m.isCollapsed)}}_renderRootNode(){var l;return we(this,void 0,void 0,function*(){const p=yield(l=i.FoldingController.get(this._editor))===null||l===void 0?void 0:l.getFoldingModel(),m=this._editor.getLayoutInfo();for(const[w,E]of this._lineNumbers.entries()){const I=this._renderChildNode(w,E,m,p);this._linesDomNode.appendChild(I.lineDomNode),this._lineNumbersDomNode.appendChild(I.lineNumberDomNode),this._stickyLines.push(I)}p&&(this._setFoldingHoverListeners(),this._useFoldingOpacityTransition(!this._isOnGlyphMargin));const v=this._lineNumbers.length*this._lineHeight+this._lastLineRelativePosition;if(v===0){this._clearStickyWidget();return}this._rootDomNode.style.display=\"block\",this._lineNumbersDomNode.style.height=`${v}px`,this._linesDomNodeScrollable.style.height=`${v}px`,this._rootDomNode.style.height=`${v}px`,this._editor.getOption(71).side===\"left\"?this._rootDomNode.style.marginLeft=m.minimap.minimapCanvasOuterWidth+\"px\":this._rootDomNode.style.marginLeft=\"0px\",this._updateMinContentWidth(),this._editor.layoutOverlayWidget(this)})}_setFoldingHoverListeners(){this._editor.getOption(108)===\"mouseover\"&&(this._foldingIconStore.add(L.addDisposableListener(this._lineNumbersDomNode,L.EventType.MOUSE_ENTER,p=>{this._isOnGlyphMargin=!0,this._setFoldingIconsVisibility(!0)})),this._foldingIconStore.add(L.addDisposableListener(this._lineNumbersDomNode,L.EventType.MOUSE_LEAVE,()=>{this._isOnGlyphMargin=!1,this._useFoldingOpacityTransition(!0),this._setFoldingIconsVisibility(!1)})))}_renderChildNode(l,p,m,v){const b=this._editor._getViewModel(),w=b.coordinatesConverter.convertModelPositionToViewPosition(new _.Position(p,1)).lineNumber,E=b.getViewLineRenderingData(w),I=this._editor.getOption(71).side,M=this._editor.getOption(66);let P;try{P=C.LineDecoration.filter(E.inlineDecorations,w,E.minColumn,E.maxColumn)}catch{P=[]}const x=new s.RenderLineInput(!0,!0,E.content,E.continuesWithWrappedLine,E.isBasicASCII,E.containsRTL,0,E.tokens,P,E.tabSize,E.startVisibleColumn,1,1,1,500,\"none\",!0,!0,null),T=new g.StringBuilder(2e3),A=(0,s.renderViewLine)(x,T);let N;u?N=u.createHTML(T.build()):N=T.build();const F=document.createElement(\"span\");F.className=\"sticky-line-content\",F.classList.add(`stickyLine${p}`),F.style.lineHeight=`${this._lineHeight}px`,F.innerHTML=N;const O=document.createElement(\"span\");O.className=\"sticky-line-number\",O.style.lineHeight=`${this._lineHeight}px`;const W=I===\"left\"?m.contentLeft-m.minimap.minimapCanvasOuterWidth:m.contentLeft;O.style.width=`${W}px`;const U=document.createElement(\"span\");M.renderType===1||M.renderType===3&&p%10===0?U.innerText=p.toString():M.renderType===2&&(U.innerText=Math.abs(p-this._editor.getPosition().lineNumber).toString()),U.className=\"sticky-line-number-inner\",U.style.lineHeight=`${this._lineHeight}px`,U.style.width=`${m.lineNumbersWidth}px`,U.style.float=\"left\",I===\"left\"?U.style.paddingLeft=`${m.lineNumbersLeft-m.minimap.minimapCanvasOuterWidth}px`:I===\"right\"&&(U.style.paddingLeft=`${m.lineNumbersLeft}px`),O.appendChild(U);const j=this._renderFoldingIconForLine(O,v,l,p);this._editor.applyFontInfo(F),this._editor.applyFontInfo(U),F.setAttribute(\"role\",\"listitem\"),F.setAttribute(h,String(l)),F.tabIndex=0,O.style.lineHeight=`${this._lineHeight}px`,F.style.lineHeight=`${this._lineHeight}px`,O.style.height=`${this._lineHeight}px`,F.style.height=`${this._lineHeight}px`;const R=l===this._lineNumbers.length-1,K=\"0\",G=\"1\";F.style.zIndex=R?K:G,O.style.zIndex=R?K:G;const Z=`${l*this._lineHeight+this._lastLineRelativePosition+(j?.isCollapsed?1:0)}px`,J=`${l*this._lineHeight}px`;return F.style.top=R?Z:J,O.style.top=R?Z:J,new c(p,F,O,j,A.characterMapping)}_renderFoldingIconForLine(l,p,m,v){const b=this._editor.getOption(108);if(!p||b===\"never\")return;const w=p.regions,E=w.findRange(v),I=w.getStartLineNumber(E);if(!(v===I))return;const P=w.isCollapsed(E),x=new o(P,this._lineHeight);return l.append(x.domNode),x.setVisible(this._isOnGlyphMargin?!0:P||b===\"always\"),this._foldingIconStore.add(L.addDisposableListener(x.domNode,L.EventType.CLICK,()=>{(0,t.toggleCollapseState)(p,Number.MAX_VALUE,[v]),x.isCollapsed=!P;const T=(P?this._editor.getTopForLineNumber(I):this._editor.getTopForLineNumber(w.getEndLineNumber(E)))-this._lineHeight*m+1;this._editor.setScrollTop(T)})),x}_updateMinContentWidth(){this._minContentWidthInPx=0;for(const l of this._stickyLines)l.lineDomNode.scrollWidth>this._minContentWidthInPx&&(this._minContentWidthInPx=l.lineDomNode.scrollWidth);this._minContentWidthInPx+=this._editor.getLayoutInfo().verticalScrollbarWidth}getId(){return\"editor.contrib.stickyScrollWidget\"}getDomNode(){return this._rootDomNode}getPosition(){return{preference:null}}getMinContentWidthInPx(){return this._minContentWidthInPx}focusLineWithIndex(l){0<=l&&l<this._stickyLines.length&&this._stickyLines[l].lineDomNode.focus()}getEditorPositionFromNode(l){if(!l||l.children.length>0)return null;const p=this._getRenderedStickyLineFromChildDomNode(l);if(!p)return null;const m=(0,S.getColumnOfNodeOffset)(p.characterMapping,l,0);return new _.Position(p.lineNumber,m)}getLineNumberFromChildDomNode(l){var p,m;return(m=(p=this._getRenderedStickyLineFromChildDomNode(l))===null||p===void 0?void 0:p.lineNumber)!==null&&m!==void 0?m:null}_getRenderedStickyLineFromChildDomNode(l){const p=this.getStickyLineIndexFromChildDomNode(l);return p===null||p<0||p>=this._stickyLines.length?null:this._stickyLines[p]}getStickyLineIndexFromChildDomNode(l){for(;l&&l!==this._rootDomNode;){const p=l.getAttribute(h);if(p)return parseInt(p,10);l=l.parentElement}return null}}e.StickyScrollWidget=r;class c{constructor(l,p,m,v,b){this.lineNumber=l,this.lineDomNode=p,this.lineNumberDomNode=m,this.foldingIcon=v,this.characterMapping=b}}class o{constructor(l,p){this.isCollapsed=l,this.dimension=p,this.domNode=document.createElement(\"div\"),this.domNode.style.width=`${p}px`,this.domNode.style.height=`${p}px`,this.domNode.className=D.ThemeIcon.asClassName(l?n.foldingCollapsedIcon:n.foldingExpandedIcon)}setVisible(l){this.domNode.style.cursor=l?\"pointer\":\"default\",this.domNode.style.opacity=l?\"1\":\"0\"}}}),define(ne[895],se([1,0,7,114,13,9,6,2,141,11,162,866,702,15,8,87,31,88,23,223,135,344,861,105,49,172,462,249]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m){\"use strict\";var v;Object.defineProperty(e,\"__esModule\",{value:!0}),e.SuggestContentWidget=e.SuggestWidget=e.editorSuggestWidgetSelectedBackground=void 0,(0,u.registerColor)(\"editorSuggestWidget.background\",{dark:u.editorWidgetBackground,light:u.editorWidgetBackground,hcDark:u.editorWidgetBackground,hcLight:u.editorWidgetBackground},i.localize(0,null)),(0,u.registerColor)(\"editorSuggestWidget.border\",{dark:u.editorWidgetBorder,light:u.editorWidgetBorder,hcDark:u.editorWidgetBorder,hcLight:u.editorWidgetBorder},i.localize(1,null));const b=(0,u.registerColor)(\"editorSuggestWidget.foreground\",{dark:u.editorForeground,light:u.editorForeground,hcDark:u.editorForeground,hcLight:u.editorForeground},i.localize(2,null));(0,u.registerColor)(\"editorSuggestWidget.selectedForeground\",{dark:u.quickInputListFocusForeground,light:u.quickInputListFocusForeground,hcDark:u.quickInputListFocusForeground,hcLight:u.quickInputListFocusForeground},i.localize(3,null)),(0,u.registerColor)(\"editorSuggestWidget.selectedIconForeground\",{dark:u.quickInputListFocusIconForeground,light:u.quickInputListFocusIconForeground,hcDark:u.quickInputListFocusIconForeground,hcLight:u.quickInputListFocusIconForeground},i.localize(4,null)),e.editorSuggestWidgetSelectedBackground=(0,u.registerColor)(\"editorSuggestWidget.selectedBackground\",{dark:u.quickInputListFocusBackground,light:u.quickInputListFocusBackground,hcDark:u.quickInputListFocusBackground,hcLight:u.quickInputListFocusBackground},i.localize(5,null)),(0,u.registerColor)(\"editorSuggestWidget.highlightForeground\",{dark:u.listHighlightForeground,light:u.listHighlightForeground,hcDark:u.listHighlightForeground,hcLight:u.listHighlightForeground},i.localize(6,null)),(0,u.registerColor)(\"editorSuggestWidget.focusHighlightForeground\",{dark:u.listFocusHighlightForeground,light:u.listFocusHighlightForeground,hcDark:u.listFocusHighlightForeground,hcLight:u.listFocusHighlightForeground},i.localize(7,null)),(0,u.registerColor)(\"editorSuggestWidgetStatus.foreground\",{dark:(0,u.transparent)(b,.5),light:(0,u.transparent)(b,.5),hcDark:(0,u.transparent)(b,.5),hcLight:(0,u.transparent)(b,.5)},i.localize(8,null));class w{constructor(P,x){this._service=P,this._key=`suggestWidget.size/${x.getEditorType()}/${x instanceof C.EmbeddedCodeEditorWidget}`}restore(){var P;const x=(P=this._service.get(this._key,0))!==null&&P!==void 0?P:\"\";try{const T=JSON.parse(x);if(L.Dimension.is(T))return L.Dimension.lift(T)}catch{}}store(P){this._service.store(this._key,JSON.stringify(P),0,1)}reset(){this._service.remove(this._key,0)}}let E=v=class{constructor(P,x,T,A,N){this.editor=P,this._storageService=x,this._state=0,this._isAuto=!1,this._pendingLayout=new f.MutableDisposable,this._pendingShowDetails=new f.MutableDisposable,this._ignoreFocusEvents=!1,this._forceRenderingAbove=!1,this._explainMode=!1,this._showTimeout=new y.TimeoutTimer,this._disposables=new f.DisposableStore,this._onDidSelect=new S.PauseableEmitter,this._onDidFocus=new S.PauseableEmitter,this._onDidHide=new S.Emitter,this._onDidShow=new S.Emitter,this.onDidSelect=this._onDidSelect.event,this.onDidFocus=this._onDidFocus.event,this.onDidHide=this._onDidHide.event,this.onDidShow=this._onDidShow.event,this._onDetailsKeydown=new S.Emitter,this.onDetailsKeyDown=this._onDetailsKeydown.event,this.element=new c.ResizableHTMLElement,this.element.domNode.classList.add(\"editor-widget\",\"suggest-widget\"),this._contentWidget=new I(this,P),this._persistedSize=new w(x,P);class F{constructor(G,Z,J=!1,X=!1){this.persistedSize=G,this.currentSize=Z,this.persistHeight=J,this.persistWidth=X}}let O;this._disposables.add(this.element.onDidWillResize(()=>{this._contentWidget.lockPreference(),O=new F(this._persistedSize.restore(),this.element.size)})),this._disposables.add(this.element.onDidResize(K=>{var G,Z,J,X;if(this._resize(K.dimension.width,K.dimension.height),O&&(O.persistHeight=O.persistHeight||!!K.north||!!K.south,O.persistWidth=O.persistWidth||!!K.east||!!K.west),!!K.done){if(O){const{itemHeight:H,defaultSize:B}=this.getLayoutInfo(),V=Math.round(H/2);let{width:Y,height:ie}=this.element.size;(!O.persistHeight||Math.abs(O.currentSize.height-ie)<=V)&&(ie=(Z=(G=O.persistedSize)===null||G===void 0?void 0:G.height)!==null&&Z!==void 0?Z:B.height),(!O.persistWidth||Math.abs(O.currentSize.width-Y)<=V)&&(Y=(X=(J=O.persistedSize)===null||J===void 0?void 0:J.width)!==null&&X!==void 0?X:B.width),this._persistedSize.store(new L.Dimension(Y,ie))}this._contentWidget.unlockPreference(),O=void 0}})),this._messageElement=L.append(this.element.domNode,L.$(\".message\")),this._listElement=L.append(this.element.domNode,L.$(\".tree\"));const W=N.createInstance(d.SuggestDetailsWidget,this.editor);W.onDidClose(this.toggleDetails,this,this._disposables),this._details=new d.SuggestDetailsOverlay(W,this.editor);const U=()=>this.element.domNode.classList.toggle(\"no-icons\",!this.editor.getOption(116).showIcons);U();const j=N.createInstance(l.ItemRenderer,this.editor);this._disposables.add(j),this._disposables.add(j.onDidToggleDetails(()=>this.toggleDetails())),this._list=new k.List(\"SuggestWidget\",this._listElement,{getHeight:K=>this.getLayoutInfo().itemHeight,getTemplateId:K=>\"suggestion\"},[j],{alwaysConsumeMouseWheel:!0,useShadows:!1,mouseSupport:!1,multipleSelectionSupport:!1,accessibilityProvider:{getRole:()=>\"option\",getWidgetAriaLabel:()=>i.localize(11,null),getWidgetRole:()=>\"listbox\",getAriaLabel:K=>{let G=K.textLabel;if(typeof K.completion.label!=\"string\"){const{detail:H,description:B}=K.completion.label;H&&B?G=i.localize(12,null,G,H,B):H?G=i.localize(13,null,G,H):B&&(G=i.localize(14,null,G,B))}if(!K.isResolved||!this._isDetailsVisible())return G;const{documentation:Z,detail:J}=K.completion,X=g.format(\"{0}{1}\",J||\"\",Z?typeof Z==\"string\"?Z:Z.value:\"\");return i.localize(15,null,G,X)}}}),this._list.style((0,p.getListStyles)({listInactiveFocusBackground:e.editorSuggestWidgetSelectedBackground,listInactiveFocusOutline:u.activeContrastBorder})),this._status=N.createInstance(s.SuggestWidgetStatus,this.element.domNode,o.suggestWidgetStatusbarMenu);const R=()=>this.element.domNode.classList.toggle(\"with-status-bar\",this.editor.getOption(116).showStatusBar);R(),this._disposables.add(A.onDidColorThemeChange(K=>this._onThemeChange(K))),this._onThemeChange(A.getColorTheme()),this._disposables.add(this._list.onMouseDown(K=>this._onListMouseDownOrTap(K))),this._disposables.add(this._list.onTap(K=>this._onListMouseDownOrTap(K))),this._disposables.add(this._list.onDidChangeSelection(K=>this._onListSelection(K))),this._disposables.add(this._list.onDidChangeFocus(K=>this._onListFocus(K))),this._disposables.add(this.editor.onDidChangeCursorSelection(()=>this._onCursorSelectionChanged())),this._disposables.add(this.editor.onDidChangeConfiguration(K=>{K.hasChanged(116)&&(R(),U())})),this._ctxSuggestWidgetVisible=o.Context.Visible.bindTo(T),this._ctxSuggestWidgetDetailsVisible=o.Context.DetailsVisible.bindTo(T),this._ctxSuggestWidgetMultipleSuggestions=o.Context.MultipleSuggestions.bindTo(T),this._ctxSuggestWidgetHasFocusedSuggestion=o.Context.HasFocusedSuggestion.bindTo(T),this._disposables.add(L.addStandardDisposableListener(this._details.widget.domNode,\"keydown\",K=>{this._onDetailsKeydown.fire(K)})),this._disposables.add(this.editor.onMouseDown(K=>this._onEditorMouseDown(K)))}dispose(){var P;this._details.widget.dispose(),this._details.dispose(),this._list.dispose(),this._status.dispose(),this._disposables.dispose(),(P=this._loadingTimeout)===null||P===void 0||P.dispose(),this._pendingLayout.dispose(),this._pendingShowDetails.dispose(),this._showTimeout.dispose(),this._contentWidget.dispose(),this.element.dispose()}_onEditorMouseDown(P){this._details.widget.domNode.contains(P.target.element)?this._details.widget.domNode.focus():this.element.domNode.contains(P.target.element)&&this.editor.focus()}_onCursorSelectionChanged(){this._state!==0&&this._contentWidget.layout()}_onListMouseDownOrTap(P){typeof P.element>\"u\"||typeof P.index>\"u\"||(P.browserEvent.preventDefault(),P.browserEvent.stopPropagation(),this._select(P.element,P.index))}_onListSelection(P){P.elements.length&&this._select(P.elements[0],P.indexes[0])}_select(P,x){const T=this._completionModel;T&&(this._onDidSelect.fire({item:P,index:x,model:T}),this.editor.focus())}_onThemeChange(P){this._details.widget.borderWidth=(0,h.isHighContrast)(P.type)?2:1}_onListFocus(P){var x;if(this._ignoreFocusEvents)return;if(!P.elements.length){this._currentSuggestionDetails&&(this._currentSuggestionDetails.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=void 0),this.editor.setAriaOptions({activeDescendant:void 0}),this._ctxSuggestWidgetHasFocusedSuggestion.set(!1);return}if(!this._completionModel)return;this._ctxSuggestWidgetHasFocusedSuggestion.set(!0);const T=P.elements[0],A=P.indexes[0];T!==this._focusedItem&&((x=this._currentSuggestionDetails)===null||x===void 0||x.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=T,this._list.reveal(A),this._currentSuggestionDetails=(0,y.createCancelablePromise)(N=>we(this,void 0,void 0,function*(){const F=(0,y.disposableTimeout)(()=>{this._isDetailsVisible()&&this.showDetails(!0)},250),O=N.onCancellationRequested(()=>F.dispose()),W=yield T.resolve(N);return F.dispose(),O.dispose(),W})),this._currentSuggestionDetails.then(()=>{A>=this._list.length||T!==this._list.element(A)||(this._ignoreFocusEvents=!0,this._list.splice(A,1,[T]),this._list.setFocus([A]),this._ignoreFocusEvents=!1,this._isDetailsVisible()?this.showDetails(!1):this.element.domNode.classList.remove(\"docs-side\"),this.editor.setAriaOptions({activeDescendant:(0,l.getAriaId)(A)}))}).catch(D.onUnexpectedError)),this._onDidFocus.fire({item:T,index:A,model:this._completionModel})}_setState(P){if(this._state!==P)switch(this._state=P,this.element.domNode.classList.toggle(\"frozen\",P===4),this.element.domNode.classList.remove(\"message\"),P){case 0:L.hide(this._messageElement,this._listElement,this._status.element),this._details.hide(!0),this._status.hide(),this._contentWidget.hide(),this._ctxSuggestWidgetVisible.reset(),this._ctxSuggestWidgetMultipleSuggestions.reset(),this._ctxSuggestWidgetHasFocusedSuggestion.reset(),this._showTimeout.cancel(),this.element.domNode.classList.remove(\"visible\"),this._list.splice(0,this._list.length),this._focusedItem=void 0,this._cappedHeight=void 0,this._explainMode=!1;break;case 1:this.element.domNode.classList.add(\"message\"),this._messageElement.textContent=v.LOADING_MESSAGE,L.hide(this._listElement,this._status.element),L.show(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,(0,m.status)(v.LOADING_MESSAGE);break;case 2:this.element.domNode.classList.add(\"message\"),this._messageElement.textContent=v.NO_SUGGESTIONS_MESSAGE,L.hide(this._listElement,this._status.element),L.show(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,(0,m.status)(v.NO_SUGGESTIONS_MESSAGE);break;case 3:L.hide(this._messageElement),L.show(this._listElement,this._status.element),this._show();break;case 4:L.hide(this._messageElement),L.show(this._listElement,this._status.element),this._show();break;case 5:L.hide(this._messageElement),L.show(this._listElement,this._status.element),this._details.show(),this._show();break}}_show(){this._status.show(),this._contentWidget.show(),this._layout(this._persistedSize.restore()),this._ctxSuggestWidgetVisible.set(!0),this._showTimeout.cancelAndSet(()=>{this.element.domNode.classList.add(\"visible\"),this._onDidShow.fire(this)},100)}showTriggered(P,x){this._state===0&&(this._contentWidget.setPosition(this.editor.getPosition()),this._isAuto=!!P,this._isAuto||(this._loadingTimeout=(0,y.disposableTimeout)(()=>this._setState(1),x)))}showSuggestions(P,x,T,A,N){var F,O;if(this._contentWidget.setPosition(this.editor.getPosition()),(F=this._loadingTimeout)===null||F===void 0||F.dispose(),(O=this._currentSuggestionDetails)===null||O===void 0||O.cancel(),this._currentSuggestionDetails=void 0,this._completionModel!==P&&(this._completionModel=P),T&&this._state!==2&&this._state!==0){this._setState(4);return}const W=this._completionModel.items.length,U=W===0;if(this._ctxSuggestWidgetMultipleSuggestions.set(W>1),U){this._setState(A?0:2),this._completionModel=void 0;return}this._focusedItem=void 0,this._onDidFocus.pause(),this._onDidSelect.pause();try{this._list.splice(0,this._list.length,this._completionModel.items),this._setState(T?4:3),this._list.reveal(x,0),this._list.setFocus(N?[]:[x])}finally{this._onDidFocus.resume(),this._onDidSelect.resume()}this._pendingLayout.value=L.runAtThisOrScheduleAtNextAnimationFrame(()=>{this._pendingLayout.clear(),this._layout(this.element.size),this._details.widget.domNode.classList.remove(\"focused\")})}focusSelected(){this._list.length>0&&this._list.setFocus([0])}selectNextPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageDown(),!0;case 1:return!this._isAuto;default:return this._list.focusNextPage(),!0}}selectNext(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusNext(1,!0),!0}}selectLast(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollBottom(),!0;case 1:return!this._isAuto;default:return this._list.focusLast(),!0}}selectPreviousPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageUp(),!0;case 1:return!this._isAuto;default:return this._list.focusPreviousPage(),!0}}selectPrevious(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusPrevious(1,!0),!1}}selectFirst(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollTop(),!0;case 1:return!this._isAuto;default:return this._list.focusFirst(),!0}}getFocusedItem(){if(this._state!==0&&this._state!==2&&this._state!==1&&this._completionModel&&this._list.getFocus().length>0)return{item:this._list.getFocusedElements()[0],index:this._list.getFocus()[0],model:this._completionModel}}toggleDetailsFocus(){this._state===5?(this._setState(3),this._details.widget.domNode.classList.remove(\"focused\")):this._state===3&&this._isDetailsVisible()&&(this._setState(5),this._details.widget.domNode.classList.add(\"focused\"))}toggleDetails(){this._isDetailsVisible()?(this._pendingShowDetails.clear(),this._ctxSuggestWidgetDetailsVisible.set(!1),this._setDetailsVisible(!1),this._details.hide(),this.element.domNode.classList.remove(\"shows-details\")):((0,d.canExpandCompletionItem)(this._list.getFocusedElements()[0])||this._explainMode)&&(this._state===3||this._state===5||this._state===4)&&(this._ctxSuggestWidgetDetailsVisible.set(!0),this._setDetailsVisible(!0),this.showDetails(!1))}showDetails(P){this._pendingShowDetails.value=L.runAtThisOrScheduleAtNextAnimationFrame(()=>{this._pendingShowDetails.clear(),this._details.show(),P?this._details.widget.renderLoading():this._details.widget.renderItem(this._list.getFocusedElements()[0],this._explainMode),this._positionDetails(),this.editor.focus(),this.element.domNode.classList.add(\"shows-details\")})}toggleExplainMode(){this._list.getFocusedElements()[0]&&(this._explainMode=!this._explainMode,this._isDetailsVisible()?this.showDetails(!1):this.toggleDetails())}resetPersistedSize(){this._persistedSize.reset()}hideWidget(){var P;this._pendingLayout.clear(),this._pendingShowDetails.clear(),(P=this._loadingTimeout)===null||P===void 0||P.dispose(),this._setState(0),this._onDidHide.fire(this),this.element.clearSashHoverState();const x=this._persistedSize.restore(),T=Math.ceil(this.getLayoutInfo().itemHeight*4.3);x&&x.height<T&&this._persistedSize.store(x.with(void 0,T))}isFrozen(){return this._state===4}_afterRender(P){if(P===null){this._isDetailsVisible()&&this._details.hide();return}this._state===2||this._state===1||(this._isDetailsVisible()&&this._details.show(),this._positionDetails())}_layout(P){var x,T,A;if(!this.editor.hasModel()||!this.editor.getDomNode())return;const N=L.getClientArea(document.body),F=this.getLayoutInfo();P||(P=F.defaultSize);let O=P.height,W=P.width;if(this._status.element.style.height=`${F.itemHeight}px`,this._state===2||this._state===1)O=F.itemHeight+F.borderHeight,W=F.defaultSize.width/2,this.element.enableSashes(!1,!1,!1,!1),this.element.minSize=this.element.maxSize=new L.Dimension(W,O),this._contentWidget.setPreference(2);else{const U=N.width-F.borderHeight-2*F.horizontalPadding;W>U&&(W=U);const j=this._completionModel?this._completionModel.stats.pLabelLen*F.typicalHalfwidthCharacterWidth:W,R=F.statusBarHeight+this._list.contentHeight+F.borderHeight,K=F.itemHeight+F.statusBarHeight,G=L.getDomNodePagePosition(this.editor.getDomNode()),Z=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),J=G.top+Z.top+Z.height,X=Math.min(N.height-J-F.verticalPadding,R),H=G.top+Z.top-F.verticalPadding,B=Math.min(H,R);let V=Math.min(Math.max(B,X)+F.borderHeight,R);O===((x=this._cappedHeight)===null||x===void 0?void 0:x.capped)&&(O=this._cappedHeight.wanted),O<K&&(O=K),O>V&&(O=V);const Y=150;O>X||this._forceRenderingAbove&&H>Y?(this._contentWidget.setPreference(1),this.element.enableSashes(!0,!0,!1,!1),V=B):(this._contentWidget.setPreference(2),this.element.enableSashes(!1,!0,!0,!1),V=X),this.element.preferredSize=new L.Dimension(j,F.defaultSize.height),this.element.maxSize=new L.Dimension(U,V),this.element.minSize=new L.Dimension(220,K),this._cappedHeight=O===R?{wanted:(A=(T=this._cappedHeight)===null||T===void 0?void 0:T.wanted)!==null&&A!==void 0?A:P.height,capped:O}:void 0}this._resize(W,O)}_resize(P,x){const{width:T,height:A}=this.element.maxSize;P=Math.min(T,P),x=Math.min(A,x);const{statusBarHeight:N}=this.getLayoutInfo();this._list.layout(x-N,P),this._listElement.style.height=`${x-N}px`,this.element.layout(x,P),this._contentWidget.layout(),this._positionDetails()}_positionDetails(){var P;this._isDetailsVisible()&&this._details.placeAtAnchor(this.element.domNode,((P=this._contentWidget.getPosition())===null||P===void 0?void 0:P.preference[0])===2)}getLayoutInfo(){const P=this.editor.getOption(49),x=(0,_.clamp)(this.editor.getOption(118)||P.lineHeight,8,1e3),T=!this.editor.getOption(116).showStatusBar||this._state===2||this._state===1?0:x,A=this._details.widget.borderWidth,N=2*A;return{itemHeight:x,statusBarHeight:T,borderWidth:A,borderHeight:N,typicalHalfwidthCharacterWidth:P.typicalHalfwidthCharacterWidth,verticalPadding:22,horizontalPadding:14,defaultSize:new L.Dimension(430,T+12*x+N)}}_isDetailsVisible(){return this._storageService.getBoolean(\"expandSuggestionDocs\",0,!1)}_setDetailsVisible(P){this._storageService.store(\"expandSuggestionDocs\",P,0,0)}forceRenderingAbove(){this._forceRenderingAbove||(this._forceRenderingAbove=!0,this._layout(this._persistedSize.restore()))}stopForceRenderingAbove(){this._forceRenderingAbove=!1}};e.SuggestWidget=E,E.LOADING_MESSAGE=i.localize(9,null),E.NO_SUGGESTIONS_MESSAGE=i.localize(10,null),e.SuggestWidget=E=v=ke([fe(1,a.IStorageService),fe(2,n.IContextKeyService),fe(3,r.IThemeService),fe(4,t.IInstantiationService)],E);class I{constructor(P,x){this._widget=P,this._editor=x,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._preferenceLocked=!1,this._added=!1,this._hidden=!1}dispose(){this._added&&(this._added=!1,this._editor.removeContentWidget(this))}getId(){return\"editor.widget.suggestWidget\"}getDomNode(){return this._widget.element.domNode}show(){this._hidden=!1,this._added||(this._added=!0,this._editor.addContentWidget(this))}hide(){this._hidden||(this._hidden=!0,this.layout())}layout(){this._editor.layoutContentWidget(this)}getPosition(){return this._hidden||!this._position||!this._preference?null:{position:this._position,preference:[this._preference]}}beforeRender(){const{height:P,width:x}=this._widget.element.size,{borderWidth:T,horizontalPadding:A}=this._widget.getLayoutInfo();return new L.Dimension(x+2*T+A,P+2*T)}afterRender(P){this._widget._afterRender(P)}setPreference(P){this._preferenceLocked||(this._preference=P)}lockPreference(){this._preferenceLocked=!0}unlockPreference(){this._preferenceLocked=!1}setPosition(P){this._position=P}}e.SuggestContentWidget=I}),define(ne[368],se([1,0,48,40,29,711,31,23,466]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getSelectionHighlightDecorationOptions=e.getHighlightDecorationOptions=void 0;const _=(0,S.registerColor)(\"editor.wordHighlightBackground\",{dark:\"#575757B8\",light:\"#57575740\",hcDark:null,hcLight:null},D.localize(0,null),!0);(0,S.registerColor)(\"editor.wordHighlightStrongBackground\",{dark:\"#004972B8\",light:\"#0e639c40\",hcDark:null,hcLight:null},D.localize(1,null),!0),(0,S.registerColor)(\"editor.wordHighlightTextBackground\",{light:_,dark:_,hcDark:_,hcLight:_},D.localize(2,null),!0);const g=(0,S.registerColor)(\"editor.wordHighlightBorder\",{light:null,dark:null,hcDark:S.activeContrastBorder,hcLight:S.activeContrastBorder},D.localize(3,null));(0,S.registerColor)(\"editor.wordHighlightStrongBorder\",{light:null,dark:null,hcDark:S.activeContrastBorder,hcLight:S.activeContrastBorder},D.localize(4,null)),(0,S.registerColor)(\"editor.wordHighlightTextBorder\",{light:g,dark:g,hcDark:g,hcLight:g},D.localize(5,null));const C=(0,S.registerColor)(\"editorOverviewRuler.wordHighlightForeground\",{dark:\"#A0A0A0CC\",light:\"#A0A0A0CC\",hcDark:\"#A0A0A0CC\",hcLight:\"#A0A0A0CC\"},D.localize(6,null),!0),s=(0,S.registerColor)(\"editorOverviewRuler.wordHighlightStrongForeground\",{dark:\"#C0A0C0CC\",light:\"#C0A0C0CC\",hcDark:\"#C0A0C0CC\",hcLight:\"#C0A0C0CC\"},D.localize(7,null),!0),i=(0,S.registerColor)(\"editorOverviewRuler.wordHighlightTextForeground\",{dark:S.overviewRulerSelectionHighlightForeground,light:S.overviewRulerSelectionHighlightForeground,hcDark:S.overviewRulerSelectionHighlightForeground,hcLight:S.overviewRulerSelectionHighlightForeground},D.localize(8,null),!0),n=k.ModelDecorationOptions.register({description:\"word-highlight-strong\",stickiness:1,className:\"wordHighlightStrong\",overviewRuler:{color:(0,f.themeColorFromId)(s),position:L.OverviewRulerLane.Center},minimap:{color:(0,f.themeColorFromId)(S.minimapSelectionOccurrenceHighlight),position:L.MinimapPosition.Inline}}),t=k.ModelDecorationOptions.register({description:\"word-highlight-text\",stickiness:1,className:\"wordHighlightText\",overviewRuler:{color:(0,f.themeColorFromId)(i),position:L.OverviewRulerLane.Center},minimap:{color:(0,f.themeColorFromId)(S.minimapSelectionOccurrenceHighlight),position:L.MinimapPosition.Inline}}),a=k.ModelDecorationOptions.register({description:\"selection-highlight-overview\",stickiness:1,className:\"selectionHighlight\",overviewRuler:{color:(0,f.themeColorFromId)(S.overviewRulerSelectionHighlightForeground),position:L.OverviewRulerLane.Center},minimap:{color:(0,f.themeColorFromId)(S.minimapSelectionOccurrenceHighlight),position:L.MinimapPosition.Inline}}),u=k.ModelDecorationOptions.register({description:\"selection-highlight\",stickiness:1,className:\"selectionHighlight\"}),h=k.ModelDecorationOptions.register({description:\"word-highlight\",stickiness:1,className:\"wordHighlight\",overviewRuler:{color:(0,f.themeColorFromId)(C),position:L.OverviewRulerLane.Center},minimap:{color:(0,f.themeColorFromId)(S.minimapSelectionOccurrenceHighlight),position:L.MinimapPosition.Inline}});function r(o){return o===y.DocumentHighlightKind.Write?n:o===y.DocumentHighlightKind.Text?t:h}e.getHighlightDecorationOptions=r;function c(o){return o?u:a}e.getSelectionHighlightDecorationOptions=c,(0,f.registerThemingParticipant)((o,d)=>{const l=o.getColor(S.editorSelectionHighlight);l&&d.addRule(`.monaco-editor .selectionHighlight { background-color: ${l.transparent(.5)}; }`)})}),define(ne[896],se([1,0,49,13,63,2,16,205,5,24,21,365,687,30,15,18,368,8]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h){\"use strict\";var r;Object.defineProperty(e,\"__esModule\",{value:!0}),e.FocusPreviousCursor=e.FocusNextCursor=e.SelectionHighlighter=e.CompatChangeAll=e.SelectHighlightsAction=e.MoveSelectionToPreviousFindMatchAction=e.MoveSelectionToNextFindMatchAction=e.AddSelectionToPreviousFindMatchAction=e.AddSelectionToNextFindMatchAction=e.MultiCursorSelectionControllerAction=e.MultiCursorSelectionController=e.MultiCursorSession=e.MultiCursorSessionResult=e.InsertCursorBelow=e.InsertCursorAbove=void 0;function c(R,K){const G=K.filter(Z=>!R.find(J=>J.equals(Z)));if(G.length>=1){const Z=G.map(X=>`line ${X.viewState.position.lineNumber} column ${X.viewState.position.column}`).join(\", \"),J=G.length===1?i.localize(0,null,Z):i.localize(1,null,Z);(0,L.status)(J)}}class o extends S.EditorAction{constructor(){super({id:\"editor.action.insertCursorAbove\",label:i.localize(2,null),alias:\"Add Cursor Above\",precondition:void 0,kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:2576,linux:{primary:1552,secondary:[3088]},weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:\"3_multi\",title:i.localize(3,null),order:2}})}run(K,G,Z){if(!G.hasModel())return;let J=!0;Z&&Z.logicalLine===!1&&(J=!1);const X=G._getViewModel();if(X.cursorConfig.readOnly)return;X.model.pushStackElement();const H=X.getCursorStates();X.setCursorStates(Z.source,3,f.CursorMoveCommands.addCursorUp(X,H,J)),X.revealTopMostCursor(Z.source),c(H,X.getCursorStates())}}e.InsertCursorAbove=o;class d extends S.EditorAction{constructor(){super({id:\"editor.action.insertCursorBelow\",label:i.localize(4,null),alias:\"Add Cursor Below\",precondition:void 0,kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:2578,linux:{primary:1554,secondary:[3090]},weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:\"3_multi\",title:i.localize(5,null),order:3}})}run(K,G,Z){if(!G.hasModel())return;let J=!0;Z&&Z.logicalLine===!1&&(J=!1);const X=G._getViewModel();if(X.cursorConfig.readOnly)return;X.model.pushStackElement();const H=X.getCursorStates();X.setCursorStates(Z.source,3,f.CursorMoveCommands.addCursorDown(X,H,J)),X.revealBottomMostCursor(Z.source),c(H,X.getCursorStates())}}e.InsertCursorBelow=d;class l extends S.EditorAction{constructor(){super({id:\"editor.action.insertCursorAtEndOfEachLineSelected\",label:i.localize(6,null),alias:\"Add Cursors to Line Ends\",precondition:void 0,kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:1575,weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:\"3_multi\",title:i.localize(7,null),order:4}})}getCursorsForSelection(K,G,Z){if(!K.isEmpty()){for(let J=K.startLineNumber;J<K.endLineNumber;J++){const X=G.getLineMaxColumn(J);Z.push(new g.Selection(J,X,J,X))}K.endColumn>1&&Z.push(new g.Selection(K.endLineNumber,K.endColumn,K.endLineNumber,K.endColumn))}}run(K,G){if(!G.hasModel())return;const Z=G.getModel(),J=G.getSelections(),X=G._getViewModel(),H=X.getCursorStates(),B=[];J.forEach(V=>this.getCursorsForSelection(V,Z,B)),B.length>0&&G.setSelections(B),c(H,X.getCursorStates())}}class p extends S.EditorAction{constructor(){super({id:\"editor.action.addCursorsToBottom\",label:i.localize(8,null),alias:\"Add Cursors To Bottom\",precondition:void 0})}run(K,G){if(!G.hasModel())return;const Z=G.getSelections(),J=G.getModel().getLineCount(),X=[];for(let V=Z[0].startLineNumber;V<=J;V++)X.push(new g.Selection(V,Z[0].startColumn,V,Z[0].endColumn));const H=G._getViewModel(),B=H.getCursorStates();X.length>0&&G.setSelections(X),c(B,H.getCursorStates())}}class m extends S.EditorAction{constructor(){super({id:\"editor.action.addCursorsToTop\",label:i.localize(9,null),alias:\"Add Cursors To Top\",precondition:void 0})}run(K,G){if(!G.hasModel())return;const Z=G.getSelections(),J=[];for(let B=Z[0].startLineNumber;B>=1;B--)J.push(new g.Selection(B,Z[0].startColumn,B,Z[0].endColumn));const X=G._getViewModel(),H=X.getCursorStates();J.length>0&&G.setSelections(J),c(H,X.getCursorStates())}}class v{constructor(K,G,Z){this.selections=K,this.revealRange=G,this.revealScrollType=Z}}e.MultiCursorSessionResult=v;class b{static create(K,G){if(!K.hasModel())return null;const Z=G.getState();if(!K.hasTextFocus()&&Z.isRevealed&&Z.searchString.length>0)return new b(K,G,!1,Z.searchString,Z.wholeWord,Z.matchCase,null);let J=!1,X,H;const B=K.getSelections();B.length===1&&B[0].isEmpty()?(J=!0,X=!0,H=!0):(X=Z.wholeWord,H=Z.matchCase);const V=K.getSelection();let Y,ie=null;if(V.isEmpty()){const ae=K.getConfiguredWordAtPosition(V.getStartPosition());if(!ae)return null;Y=ae.word,ie=new g.Selection(V.startLineNumber,ae.startColumn,V.startLineNumber,ae.endColumn)}else Y=K.getModel().getValueInRange(V).replace(/\\r\\n/g,`\n`);return new b(K,G,J,Y,X,H,ie)}constructor(K,G,Z,J,X,H,B){this._editor=K,this.findController=G,this.isDisconnectedFromFindController=Z,this.searchText=J,this.wholeWord=X,this.matchCase=H,this.currentMatch=B}addSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const K=this._getNextMatch();if(!K)return null;const G=this._editor.getSelections();return new v(G.concat(K),K,0)}moveSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const K=this._getNextMatch();if(!K)return null;const G=this._editor.getSelections();return new v(G.slice(0,G.length-1).concat(K),K,0)}_getNextMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const J=this.currentMatch;return this.currentMatch=null,J}this.findController.highlightFindOptions();const K=this._editor.getSelections(),G=K[K.length-1],Z=this._editor.getModel().findNextMatch(this.searchText,G.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(128):null,!1);return Z?new g.Selection(Z.range.startLineNumber,Z.range.startColumn,Z.range.endLineNumber,Z.range.endColumn):null}addSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const K=this._getPreviousMatch();if(!K)return null;const G=this._editor.getSelections();return new v(G.concat(K),K,0)}moveSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const K=this._getPreviousMatch();if(!K)return null;const G=this._editor.getSelections();return new v(G.slice(0,G.length-1).concat(K),K,0)}_getPreviousMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const J=this.currentMatch;return this.currentMatch=null,J}this.findController.highlightFindOptions();const K=this._editor.getSelections(),G=K[K.length-1],Z=this._editor.getModel().findPreviousMatch(this.searchText,G.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(128):null,!1);return Z?new g.Selection(Z.range.startLineNumber,Z.range.startColumn,Z.range.endLineNumber,Z.range.endColumn):null}selectAll(K){if(!this._editor.hasModel())return[];this.findController.highlightFindOptions();const G=this._editor.getModel();return K?G.findMatches(this.searchText,K,!1,this.matchCase,this.wholeWord?this._editor.getOption(128):null,!1,1073741824):G.findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getOption(128):null,!1,1073741824)}}e.MultiCursorSession=b;class w extends D.Disposable{static get(K){return K.getContribution(w.ID)}constructor(K){super(),this._sessionDispose=this._register(new D.DisposableStore),this._editor=K,this._ignoreSelectionChange=!1,this._session=null}dispose(){this._endSession(),super.dispose()}_beginSessionIfNeeded(K){if(!this._session){const G=b.create(this._editor,K);if(!G)return;this._session=G;const Z={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(Z.wholeWordOverride=1,Z.matchCaseOverride=1,Z.isRegexOverride=2),K.getState().change(Z,!1),this._sessionDispose.add(this._editor.onDidChangeCursorSelection(J=>{this._ignoreSelectionChange||this._endSession()})),this._sessionDispose.add(this._editor.onDidBlurEditorText(()=>{this._endSession()})),this._sessionDispose.add(K.getState().onFindReplaceStateChange(J=>{(J.matchCase||J.wholeWord)&&this._endSession()}))}}_endSession(){if(this._sessionDispose.clear(),this._session&&this._session.isDisconnectedFromFindController){const K={wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0};this._session.findController.getState().change(K,!1)}this._session=null}_setSelections(K){this._ignoreSelectionChange=!0,this._editor.setSelections(K),this._ignoreSelectionChange=!1}_expandEmptyToWord(K,G){if(!G.isEmpty())return G;const Z=this._editor.getConfiguredWordAtPosition(G.getStartPosition());return Z?new g.Selection(G.startLineNumber,Z.startColumn,G.startLineNumber,Z.endColumn):G}_applySessionResult(K){K&&(this._setSelections(K.selections),K.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(K.revealRange,K.revealScrollType))}getSession(K){return this._session}addSelectionToNextFindMatch(K){if(this._editor.hasModel()){if(!this._session){const G=this._editor.getSelections();if(G.length>1){const J=K.getState().matchCase;if(!O(this._editor.getModel(),G,J)){const H=this._editor.getModel(),B=[];for(let V=0,Y=G.length;V<Y;V++)B[V]=this._expandEmptyToWord(H,G[V]);this._editor.setSelections(B);return}}}this._beginSessionIfNeeded(K),this._session&&this._applySessionResult(this._session.addSelectionToNextFindMatch())}}addSelectionToPreviousFindMatch(K){this._beginSessionIfNeeded(K),this._session&&this._applySessionResult(this._session.addSelectionToPreviousFindMatch())}moveSelectionToNextFindMatch(K){this._beginSessionIfNeeded(K),this._session&&this._applySessionResult(this._session.moveSelectionToNextFindMatch())}moveSelectionToPreviousFindMatch(K){this._beginSessionIfNeeded(K),this._session&&this._applySessionResult(this._session.moveSelectionToPreviousFindMatch())}selectAll(K){if(!this._editor.hasModel())return;let G=null;const Z=K.getState();if(Z.isRevealed&&Z.searchString.length>0&&Z.isRegex){const J=this._editor.getModel();Z.searchScope?G=J.findMatches(Z.searchString,Z.searchScope,Z.isRegex,Z.matchCase,Z.wholeWord?this._editor.getOption(128):null,!1,1073741824):G=J.findMatches(Z.searchString,!0,Z.isRegex,Z.matchCase,Z.wholeWord?this._editor.getOption(128):null,!1,1073741824)}else{if(this._beginSessionIfNeeded(K),!this._session)return;G=this._session.selectAll(Z.searchScope)}if(G.length>0){const J=this._editor.getSelection();for(let X=0,H=G.length;X<H;X++){const B=G[X];if(B.range.intersectRanges(J)){G[X]=G[0],G[0]=B;break}}this._setSelections(G.map(X=>new g.Selection(X.range.startLineNumber,X.range.startColumn,X.range.endLineNumber,X.range.endColumn)))}}}e.MultiCursorSelectionController=w,w.ID=\"editor.contrib.multiCursorController\";class E extends S.EditorAction{run(K,G){const Z=w.get(G);if(!Z)return;const J=G._getViewModel();if(J){const X=J.getCursorStates(),H=s.CommonFindController.get(G);if(H)this._run(Z,H);else{const B=K.get(h.IInstantiationService).createInstance(s.CommonFindController,G);this._run(Z,B),B.dispose()}c(X,J.getCursorStates())}}}e.MultiCursorSelectionControllerAction=E;class I extends E{constructor(){super({id:\"editor.action.addSelectionToNextFindMatch\",label:i.localize(10,null),alias:\"Add Selection To Next Find Match\",precondition:void 0,kbOpts:{kbExpr:C.EditorContextKeys.focus,primary:2082,weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:\"3_multi\",title:i.localize(11,null),order:5}})}_run(K,G){K.addSelectionToNextFindMatch(G)}}e.AddSelectionToNextFindMatchAction=I;class M extends E{constructor(){super({id:\"editor.action.addSelectionToPreviousFindMatch\",label:i.localize(12,null),alias:\"Add Selection To Previous Find Match\",precondition:void 0,menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:\"3_multi\",title:i.localize(13,null),order:6}})}_run(K,G){K.addSelectionToPreviousFindMatch(G)}}e.AddSelectionToPreviousFindMatchAction=M;class P extends E{constructor(){super({id:\"editor.action.moveSelectionToNextFindMatch\",label:i.localize(14,null),alias:\"Move Last Selection To Next Find Match\",precondition:void 0,kbOpts:{kbExpr:C.EditorContextKeys.focus,primary:(0,y.KeyChord)(2089,2082),weight:100}})}_run(K,G){K.moveSelectionToNextFindMatch(G)}}e.MoveSelectionToNextFindMatchAction=P;class x extends E{constructor(){super({id:\"editor.action.moveSelectionToPreviousFindMatch\",label:i.localize(15,null),alias:\"Move Last Selection To Previous Find Match\",precondition:void 0})}_run(K,G){K.moveSelectionToPreviousFindMatch(G)}}e.MoveSelectionToPreviousFindMatchAction=x;class T extends E{constructor(){super({id:\"editor.action.selectHighlights\",label:i.localize(16,null),alias:\"Select All Occurrences of Find Match\",precondition:void 0,kbOpts:{kbExpr:C.EditorContextKeys.focus,primary:3114,weight:100},menuOpts:{menuId:n.MenuId.MenubarSelectionMenu,group:\"3_multi\",title:i.localize(17,null),order:7}})}_run(K,G){K.selectAll(G)}}e.SelectHighlightsAction=T;class A extends E{constructor(){super({id:\"editor.action.changeAll\",label:i.localize(18,null),alias:\"Change All Occurrences\",precondition:t.ContextKeyExpr.and(C.EditorContextKeys.writable,C.EditorContextKeys.editorTextFocus),kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:2108,weight:100},contextMenuOpts:{group:\"1_modification\",order:1.2}})}_run(K,G){K.selectAll(G)}}e.CompatChangeAll=A;class N{constructor(K,G,Z,J,X){this._model=K,this._searchText=G,this._matchCase=Z,this._wordSeparators=J,this._modelVersionId=this._model.getVersionId(),this._cachedFindMatches=null,X&&this._model===X._model&&this._searchText===X._searchText&&this._matchCase===X._matchCase&&this._wordSeparators===X._wordSeparators&&this._modelVersionId===X._modelVersionId&&(this._cachedFindMatches=X._cachedFindMatches)}findMatches(){return this._cachedFindMatches===null&&(this._cachedFindMatches=this._model.findMatches(this._searchText,!0,!1,this._matchCase,this._wordSeparators,!1).map(K=>K.range),this._cachedFindMatches.sort(_.Range.compareRangesUsingStarts)),this._cachedFindMatches}}let F=r=class extends D.Disposable{constructor(K,G){super(),this._languageFeaturesService=G,this.editor=K,this._isEnabled=K.getOption(106),this._decorations=K.createDecorationsCollection(),this.updateSoon=this._register(new k.RunOnceScheduler(()=>this._update(),300)),this.state=null,this._register(K.onDidChangeConfiguration(J=>{this._isEnabled=K.getOption(106)})),this._register(K.onDidChangeCursorSelection(J=>{this._isEnabled&&(J.selection.isEmpty()?J.reason===3?(this.state&&this._setState(null),this.updateSoon.schedule()):this._setState(null):this._update())})),this._register(K.onDidChangeModel(J=>{this._setState(null)})),this._register(K.onDidChangeModelContent(J=>{this._isEnabled&&this.updateSoon.schedule()}));const Z=s.CommonFindController.get(K);Z&&this._register(Z.getState().onFindReplaceStateChange(J=>{this._update()})),this.updateSoon.schedule()}_update(){this._setState(r._createState(this.state,this._isEnabled,this.editor))}static _createState(K,G,Z){if(!G||!Z.hasModel())return null;const J=Z.getSelection();if(J.startLineNumber!==J.endLineNumber)return null;const X=w.get(Z);if(!X)return null;const H=s.CommonFindController.get(Z);if(!H)return null;let B=X.getSession(H);if(!B){const ie=Z.getSelections();if(ie.length>1){const ce=H.getState().matchCase;if(!O(Z.getModel(),ie,ce))return null}B=b.create(Z,H)}if(!B||B.currentMatch||/^[ \\t]+$/.test(B.searchText)||B.searchText.length>200)return null;const V=H.getState(),Y=V.matchCase;if(V.isRevealed){let ie=V.searchString;Y||(ie=ie.toLowerCase());let ae=B.searchText;if(Y||(ae=ae.toLowerCase()),ie===ae&&B.matchCase===V.matchCase&&B.wholeWord===V.wholeWord&&!V.isRegex)return null}return new N(Z.getModel(),B.searchText,B.matchCase,B.wholeWord?Z.getOption(128):null,K)}_setState(K){if(this.state=K,!this.state){this._decorations.clear();return}if(!this.editor.hasModel())return;const G=this.editor.getModel();if(G.isTooLargeForTokenization())return;const Z=this.state.findMatches(),J=this.editor.getSelections();J.sort(_.Range.compareRangesUsingStarts);const X=[];for(let V=0,Y=0,ie=Z.length,ae=J.length;V<ie;){const ce=Z[V];if(Y>=ae)X.push(ce),V++;else{const de=_.Range.compareRangesUsingStarts(ce,J[Y]);de<0?((J[Y].isEmpty()||!_.Range.areIntersecting(ce,J[Y]))&&X.push(ce),V++):(de>0||V++,Y++)}}const H=this._languageFeaturesService.documentHighlightProvider.has(G)&&this.editor.getOption(79),B=X.map(V=>({range:V,options:(0,u.getSelectionHighlightDecorationOptions)(H)}));this._decorations.set(B)}dispose(){this._setState(null),super.dispose()}};e.SelectionHighlighter=F,F.ID=\"editor.contrib.selectionHighlighter\",e.SelectionHighlighter=F=r=ke([fe(1,a.ILanguageFeaturesService)],F);function O(R,K,G){const Z=W(R,K[0],!G);for(let J=1,X=K.length;J<X;J++){const H=K[J];if(H.isEmpty())return!1;const B=W(R,H,!G);if(Z!==B)return!1}return!0}function W(R,K,G){const Z=R.getValueInRange(K);return G?Z.toLowerCase():Z}class U extends S.EditorAction{constructor(){super({id:\"editor.action.focusNextCursor\",label:i.localize(19,null),description:{description:i.localize(20,null),args:[]},alias:\"Focus Next Cursor\",precondition:void 0})}run(K,G,Z){if(!G.hasModel())return;const J=G._getViewModel();if(J.cursorConfig.readOnly)return;J.model.pushStackElement();const X=Array.from(J.getCursorStates()),H=X.shift();H&&(X.push(H),J.setCursorStates(Z.source,3,X),J.revealPrimaryCursor(Z.source,!0),c(X,J.getCursorStates()))}}e.FocusNextCursor=U;class j extends S.EditorAction{constructor(){super({id:\"editor.action.focusPreviousCursor\",label:i.localize(21,null),description:{description:i.localize(22,null),args:[]},alias:\"Focus Previous Cursor\",precondition:void 0})}run(K,G,Z){if(!G.hasModel())return;const J=G._getViewModel();if(J.cursorConfig.readOnly)return;J.model.pushStackElement();const X=Array.from(J.getCursorStates()),H=X.pop();H&&(X.unshift(H),J.setCursorStates(Z.source,3,X),J.revealPrimaryCursor(Z.source,!0),c(X,J.getCursorStates()))}}e.FocusPreviousCursor=j,(0,S.registerEditorContribution)(w.ID,w,4),(0,S.registerEditorContribution)(F.ID,F,1),(0,S.registerEditorAction)(o),(0,S.registerEditorAction)(d),(0,S.registerEditorAction)(l),(0,S.registerEditorAction)(I),(0,S.registerEditorAction)(M),(0,S.registerEditorAction)(P),(0,S.registerEditorAction)(x),(0,S.registerEditorAction)(T),(0,S.registerEditorAction)(A),(0,S.registerEditorAction)(p),(0,S.registerEditorAction)(m),(0,S.registerEditorAction)(U),(0,S.registerEditorAction)(j)}),define(ne[897],se([1,0,49,14,13,19,9,2,16,5,21,29,712,15,18,368,46]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){\"use strict\";var h;Object.defineProperty(e,\"__esModule\",{value:!0}),e.WordHighlighterContribution=e.getOccurrencesAtPosition=void 0;const r=new n.RawContextKey(\"hasWordHighlights\",!1);function c(M,P,x,T){const A=M.ordered(P);return(0,y.first)(A.map(N=>()=>Promise.resolve(N.provideDocumentHighlights(P,x,T)).then(void 0,S.onUnexpectedExternalError)),k.isNonEmptyArray)}e.getOccurrencesAtPosition=c;class o{constructor(P,x,T){this._model=P,this._selection=x,this._wordSeparators=T,this._wordRange=this._getCurrentWordRange(P,x),this._result=null}get result(){return this._result||(this._result=(0,y.createCancelablePromise)(P=>this._compute(this._model,this._selection,this._wordSeparators,P))),this._result}_getCurrentWordRange(P,x){const T=P.getWordAtPosition(x.getPosition());return T?new g.Range(x.startLineNumber,T.startColumn,x.startLineNumber,T.endColumn):null}isValid(P,x,T){const A=x.startLineNumber,N=x.startColumn,F=x.endColumn,O=this._getCurrentWordRange(P,x);let W=!!(this._wordRange&&this._wordRange.equalsRange(O));for(let U=0,j=T.length;!W&&U<j;U++){const R=T.getRange(U);R&&R.startLineNumber===A&&R.startColumn<=N&&R.endColumn>=F&&(W=!0)}return W}cancel(){this.result.cancel()}}class d extends o{constructor(P,x,T,A){super(P,x,T),this._providers=A}_compute(P,x,T,A){return c(this._providers,P,x.getPosition(),A).then(N=>N||[])}}class l extends o{constructor(P,x,T){super(P,x,T),this._selectionIsEmpty=x.isEmpty()}_compute(P,x,T,A){return(0,y.timeout)(250,A).then(()=>{if(!x.isEmpty())return[];const N=P.getWordAtPosition(x.getPosition());return!N||N.word.length>1e3?[]:P.findMatches(N.word,!0,!1,!0,T,!1).map(O=>({range:O.range,kind:s.DocumentHighlightKind.Text}))})}isValid(P,x,T){const A=x.isEmpty();return this._selectionIsEmpty!==A?!1:super.isValid(P,x,T)}}function p(M,P,x,T){return M.has(P)?new d(P,x,T,M):new l(P,x,T)}(0,_.registerModelAndPositionCommand)(\"_executeDocumentHighlights\",(M,P,x)=>{const T=M.get(t.ILanguageFeaturesService);return c(T.documentHighlightProvider,P,x,D.CancellationToken.None)});class m{constructor(P,x,T,A){this.toUnhook=new f.DisposableStore,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=[],this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.editor=P,this.providers=x,this.linkedHighlighters=T,this._hasWordHighlights=r.bindTo(A),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getOption(79),this.model=this.editor.getModel(),this.toUnhook.add(P.onDidChangeCursorPosition(N=>{this._ignorePositionChangeEvent||this.occurrencesHighlight&&this._onPositionChanged(N)})),this.toUnhook.add(P.onDidChangeModelContent(N=>{this._stopAll()})),this.toUnhook.add(P.onDidChangeConfiguration(N=>{const F=this.editor.getOption(79);this.occurrencesHighlight!==F&&(this.occurrencesHighlight=F,this._stopAll())})),this.decorations=this.editor.createDecorationsCollection(),this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1}hasDecorations(){return this.decorations.length>0}restore(){this.occurrencesHighlight&&this._run()}_getSortedHighlights(){return this.decorations.getRanges().sort(g.Range.compareRangesUsingStarts)}moveNext(){const P=this._getSortedHighlights(),T=(P.findIndex(N=>N.containsPosition(this.editor.getPosition()))+1)%P.length,A=P[T];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(A.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(A);const N=this._getWord();if(N){const F=this.editor.getModel().getLineContent(A.startLineNumber);(0,L.alert)(`${F}, ${T+1} of ${P.length} for '${N.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}moveBack(){const P=this._getSortedHighlights(),T=(P.findIndex(N=>N.containsPosition(this.editor.getPosition()))-1+P.length)%P.length,A=P[T];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(A.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(A);const N=this._getWord();if(N){const F=this.editor.getModel().getLineContent(A.startLineNumber);(0,L.alert)(`${F}, ${T+1} of ${P.length} for '${N.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}_removeDecorations(){this.decorations.length>0&&(this.decorations.clear(),this._hasWordHighlights.set(!1))}_stopAll(){this._removeDecorations(),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_onPositionChanged(P){if(!this.occurrencesHighlight){this._stopAll();return}if(P.reason!==3){this._stopAll();return}this._run()}_getWord(){const P=this.editor.getSelection(),x=P.startLineNumber,T=P.startColumn;return this.model.getWordAtPosition({lineNumber:x,column:T})}_run(){const P=this.editor.getSelection();if(P.startLineNumber!==P.endLineNumber){this._stopAll();return}const x=P.startColumn,T=P.endColumn,A=this._getWord();if(!A||A.startColumn>x||A.endColumn<T){this._stopAll();return}const N=this.workerRequest&&this.workerRequest.isValid(this.model,P,this.decorations);if(this.lastCursorPositionChangeTime=new Date().getTime(),N)this.workerRequestCompleted&&this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1,this._beginRenderDecorations());else{this._stopAll();const F=++this.workerRequestTokenId;this.workerRequestCompleted=!1,this.workerRequest=p(this.providers,this.model,this.editor.getSelection(),this.editor.getOption(128)),this.workerRequest.result.then(O=>{F===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=O||[],this._beginRenderDecorations())},S.onUnexpectedError)}}_beginRenderDecorations(){const P=new Date().getTime(),x=this.lastCursorPositionChangeTime+250;P>=x?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout(()=>{this.renderDecorations()},x-P)}renderDecorations(){this.renderDecorationsTimer=-1;const P=[];for(const x of this.workerRequestValue)x.range&&P.push({range:x.range,options:(0,a.getHighlightDecorationOptions)(x.kind)});this.decorations.set(P),this._hasWordHighlights.set(this.hasDecorations());for(const x of this.linkedHighlighters())x?.editor.getModel()===this.editor.getModel()&&(x._stopAll(),x.decorations.set(P),x._hasWordHighlights.set(x.hasDecorations()))}dispose(){this._stopAll(),this.toUnhook.dispose()}}let v=h=class extends f.Disposable{static get(P){return P.getContribution(h.ID)}constructor(P,x,T){super(),this.wordHighlighter=null,this.linkedContributions=new Set;const A=()=>{P.hasModel()&&(this.wordHighlighter=new m(P,T.documentHighlightProvider,()=>u.Iterable.map(this.linkedContributions,N=>N.wordHighlighter),x))};this._register(P.onDidChangeModel(N=>{this.wordHighlighter&&(this.wordHighlighter.dispose(),this.wordHighlighter=null),A()})),A()}saveViewState(){return!!(this.wordHighlighter&&this.wordHighlighter.hasDecorations())}moveNext(){var P;(P=this.wordHighlighter)===null||P===void 0||P.moveNext()}moveBack(){var P;(P=this.wordHighlighter)===null||P===void 0||P.moveBack()}restoreViewState(P){this.wordHighlighter&&P&&this.wordHighlighter.restore()}dispose(){this.wordHighlighter&&(this.wordHighlighter.dispose(),this.wordHighlighter=null),super.dispose()}};e.WordHighlighterContribution=v,v.ID=\"editor.contrib.wordHighlighter\",e.WordHighlighterContribution=v=h=ke([fe(1,n.IContextKeyService),fe(2,t.ILanguageFeaturesService)],v);class b extends _.EditorAction{constructor(P,x){super(x),this._isNext=P}run(P,x){const T=v.get(x);T&&(this._isNext?T.moveNext():T.moveBack())}}class w extends b{constructor(){super(!0,{id:\"editor.action.wordHighlight.next\",label:i.localize(0,null),alias:\"Go to Next Symbol Highlight\",precondition:r,kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:65,weight:100}})}}class E extends b{constructor(){super(!1,{id:\"editor.action.wordHighlight.prev\",label:i.localize(1,null),alias:\"Go to Previous Symbol Highlight\",precondition:r,kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:1089,weight:100}})}}class I extends _.EditorAction{constructor(){super({id:\"editor.action.wordHighlight.trigger\",label:i.localize(2,null),alias:\"Trigger Symbol Highlight\",precondition:r.toNegated(),kbOpts:{kbExpr:C.EditorContextKeys.editorTextFocus,primary:0,weight:100}})}run(P,x,T){const A=v.get(x);A&&A.restoreViewState(!0)}}(0,_.registerEditorContribution)(v.ID,v,0),(0,_.registerEditorAction)(w),(0,_.registerEditorAction)(E),(0,_.registerEditorAction)(I)}),define(ne[898],se([1,0,7,130,38,164,2,47,5,40,467]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ZoneWidget=e.OverlayWidgetDelegate=void 0;const C=new y.Color(new y.RGBA(0,122,204)),s={showArrow:!0,showFrame:!0,className:\"\",frameColor:C,arrowColor:C,keepEditorSelection:!1},i=\"vs.editor.contrib.zoneWidget\";class n{constructor(r,c,o,d,l,p,m,v){this.id=\"\",this.domNode=r,this.afterLineNumber=c,this.afterColumn=o,this.heightInLines=d,this.showInHiddenAreas=m,this.ordinal=v,this._onDomNodeTop=l,this._onComputedHeight=p}onDomNodeTop(r){this._onDomNodeTop(r)}onComputedHeight(r){this._onComputedHeight(r)}}class t{constructor(r,c){this._id=r,this._domNode=c}getId(){return this._id}getDomNode(){return this._domNode}getPosition(){return null}}e.OverlayWidgetDelegate=t;class a{constructor(r){this._editor=r,this._ruleName=a._IdGenerator.nextId(),this._decorations=this._editor.createDecorationsCollection(),this._color=null,this._height=-1}dispose(){this.hide(),L.removeCSSRulesContainingSelector(this._ruleName)}set color(r){this._color!==r&&(this._color=r,this._updateStyle())}set height(r){this._height!==r&&(this._height=r,this._updateStyle())}_updateStyle(){L.removeCSSRulesContainingSelector(this._ruleName),L.createCSSRule(`.monaco-editor ${this._ruleName}`,`border-style: solid; border-color: transparent; border-bottom-color: ${this._color}; border-width: ${this._height}px; bottom: -${this._height}px; margin-left: -${this._height}px; `)}show(r){r.column===1&&(r={lineNumber:r.lineNumber,column:2}),this._decorations.set([{range:_.Range.fromPositions(r),options:{description:\"zone-widget-arrow\",className:this._ruleName,stickiness:1}}])}hide(){this._decorations.clear()}}a._IdGenerator=new D.IdGenerator(\".arrow-decoration-\");class u{constructor(r,c={}){this._arrow=null,this._overlayWidget=null,this._resizeSash=null,this._viewZone=null,this._disposables=new S.DisposableStore,this.container=null,this._isShowing=!1,this.editor=r,this._positionMarkerId=this.editor.createDecorationsCollection(),this.options=f.deepClone(c),f.mixin(this.options,s,!1),this.domNode=document.createElement(\"div\"),this.options.isAccessible||(this.domNode.setAttribute(\"aria-hidden\",\"true\"),this.domNode.setAttribute(\"role\",\"presentation\")),this._disposables.add(this.editor.onDidLayoutChange(o=>{const d=this._getWidth(o);this.domNode.style.width=d+\"px\",this.domNode.style.left=this._getLeft(o)+\"px\",this._onWidth(d)}))}dispose(){this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._viewZone&&this.editor.changeViewZones(r=>{this._viewZone&&r.removeZone(this._viewZone.id),this._viewZone=null}),this._positionMarkerId.clear(),this._disposables.dispose()}create(){this.domNode.classList.add(\"zone-widget\"),this.options.className&&this.domNode.classList.add(this.options.className),this.container=document.createElement(\"div\"),this.container.classList.add(\"zone-widget-container\"),this.domNode.appendChild(this.container),this.options.showArrow&&(this._arrow=new a(this.editor),this._disposables.add(this._arrow)),this._fillContainer(this.container),this._initSash(),this._applyStyles()}style(r){r.frameColor&&(this.options.frameColor=r.frameColor),r.arrowColor&&(this.options.arrowColor=r.arrowColor),this._applyStyles()}_applyStyles(){if(this.container&&this.options.frameColor){const r=this.options.frameColor.toString();this.container.style.borderTopColor=r,this.container.style.borderBottomColor=r}if(this._arrow&&this.options.arrowColor){const r=this.options.arrowColor.toString();this._arrow.color=r}}_getWidth(r){return r.width-r.minimap.minimapWidth-r.verticalScrollbarWidth}_getLeft(r){return r.minimap.minimapWidth>0&&r.minimap.minimapLeft===0?r.minimap.minimapWidth:0}_onViewZoneTop(r){this.domNode.style.top=r+\"px\"}_onViewZoneHeight(r){var c;if(this.domNode.style.height=`${r}px`,this.container){const o=r-this._decoratingElementsHeight();this.container.style.height=`${o}px`;const d=this.editor.getLayoutInfo();this._doLayout(o,this._getWidth(d))}(c=this._resizeSash)===null||c===void 0||c.layout()}get position(){const r=this._positionMarkerId.getRange(0);if(r)return r.getStartPosition()}show(r,c){const o=_.Range.isIRange(r)?_.Range.lift(r):_.Range.fromPositions(r);this._isShowing=!0,this._showImpl(o,c),this._isShowing=!1,this._positionMarkerId.set([{range:o,options:g.ModelDecorationOptions.EMPTY}])}hide(){var r;this._viewZone&&(this.editor.changeViewZones(c=>{this._viewZone&&c.removeZone(this._viewZone.id)}),this._viewZone=null),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),(r=this._arrow)===null||r===void 0||r.hide(),this._positionMarkerId.clear()}_decoratingElementsHeight(){const r=this.editor.getOption(65);let c=0;if(this.options.showArrow){const o=Math.round(r/3);c+=2*o}if(this.options.showFrame){const o=Math.round(r/9);c+=2*o}return c}_showImpl(r,c){const o=r.getStartPosition(),d=this.editor.getLayoutInfo(),l=this._getWidth(d);this.domNode.style.width=`${l}px`,this.domNode.style.left=this._getLeft(d)+\"px\";const p=document.createElement(\"div\");p.style.overflow=\"hidden\";const m=this.editor.getOption(65);if(!this.options.allowUnlimitedHeight){const I=Math.max(12,this.editor.getLayoutInfo().height/m*.8);c=Math.min(c,I)}let v=0,b=0;if(this._arrow&&this.options.showArrow&&(v=Math.round(m/3),this._arrow.height=v,this._arrow.show(o)),this.options.showFrame&&(b=Math.round(m/9)),this.editor.changeViewZones(I=>{this._viewZone&&I.removeZone(this._viewZone.id),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this.domNode.style.top=\"-1000px\",this._viewZone=new n(p,o.lineNumber,o.column,c,M=>this._onViewZoneTop(M),M=>this._onViewZoneHeight(M),this.options.showInHiddenAreas,this.options.ordinal),this._viewZone.id=I.addZone(this._viewZone),this._overlayWidget=new t(i+this._viewZone.id,this.domNode),this.editor.addOverlayWidget(this._overlayWidget)}),this.container&&this.options.showFrame){const I=this.options.frameWidth?this.options.frameWidth:b;this.container.style.borderTopWidth=I+\"px\",this.container.style.borderBottomWidth=I+\"px\"}const w=c*m-this._decoratingElementsHeight();this.container&&(this.container.style.top=v+\"px\",this.container.style.height=w+\"px\",this.container.style.overflow=\"hidden\"),this._doLayout(w,l),this.options.keepEditorSelection||this.editor.setSelection(r);const E=this.editor.getModel();if(E){const I=E.validateRange(new _.Range(r.startLineNumber,1,r.endLineNumber+1,1));this.revealRange(I,I.startLineNumber===E.getLineCount())}}revealRange(r,c){c?this.editor.revealLineNearTop(r.endLineNumber,0):this.editor.revealRange(r,0)}setCssClass(r,c){this.container&&(c&&this.container.classList.remove(c),this.container.classList.add(r))}_onWidth(r){}_doLayout(r,c){}_relayout(r){this._viewZone&&this._viewZone.heightInLines!==r&&this.editor.changeViewZones(c=>{this._viewZone&&(this._viewZone.heightInLines=r,c.layoutZone(this._viewZone.id))})}_initSash(){if(this._resizeSash)return;this._resizeSash=this._disposables.add(new k.Sash(this.domNode,this,{orientation:1})),this.options.isResizeable||(this._resizeSash.state=0);let r;this._disposables.add(this._resizeSash.onDidStart(c=>{this._viewZone&&(r={startY:c.startY,heightInLines:this._viewZone.heightInLines})})),this._disposables.add(this._resizeSash.onDidEnd(()=>{r=void 0})),this._disposables.add(this._resizeSash.onDidChange(c=>{if(r){const o=(c.currentY-r.startY)/this.editor.getOption(65),d=o<0?Math.ceil(o):Math.floor(o),l=r.heightInLines+d;l>5&&l<35&&this._relayout(l)}}))}getHorizontalSashLeft(){return 0}getHorizontalSashTop(){return(this.domNode.style.height===null?0:parseInt(this.domNode.style.height))-this._decoratingElementsHeight()/2}getHorizontalSashWidth(){const r=this.editor.getLayoutInfo();return r.width-r.minimap.minimapWidth}}e.ZoneWidget=u}),define(ne[138],se([1,0,7,68,39,25,26,38,6,47,16,33,162,898,690,160,15,50,8,31,458]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.peekViewEditorMatchHighlightBorder=e.peekViewEditorMatchHighlight=e.peekViewResultsMatchHighlight=e.peekViewEditorStickyScrollBackground=e.peekViewEditorGutterBackground=e.peekViewEditorBackground=e.peekViewResultsSelectionForeground=e.peekViewResultsSelectionBackground=e.peekViewResultsFileForeground=e.peekViewResultsMatchForeground=e.peekViewResultsBackground=e.peekViewBorder=e.peekViewTitleInfoForeground=e.peekViewTitleForeground=e.peekViewTitleBackground=e.PeekViewWidget=e.getOuterEditor=e.PeekContext=e.IPeekViewService=void 0,e.IPeekViewService=(0,r.createDecorator)(\"IPeekViewService\"),(0,h.registerSingleton)(e.IPeekViewService,class{constructor(){this._widgets=new Map}addExclusiveWidget(v,b){const w=this._widgets.get(v);w&&(w.listener.dispose(),w.widget.dispose());const E=()=>{const I=this._widgets.get(v);I&&I.widget===b&&(I.listener.dispose(),this._widgets.delete(v))};this._widgets.set(v,{widget:b,listener:b.onDidClose(E)})}},1);var o;(function(v){v.inPeekEditor=new u.RawContextKey(\"inReferenceSearchEditor\",!0,t.localize(0,null)),v.notInPeekEditor=v.inPeekEditor.toNegated()})(o||(e.PeekContext=o={}));let d=class{constructor(b,w){b instanceof i.EmbeddedCodeEditorWidget&&o.inPeekEditor.bindTo(w)}dispose(){}};d.ID=\"editor.contrib.referenceController\",d=ke([fe(1,u.IContextKeyService)],d),(0,C.registerEditorContribution)(d.ID,d,0);function l(v){const b=v.get(s.ICodeEditorService).getFocusedCodeEditor();return b instanceof i.EmbeddedCodeEditorWidget?b.getParentEditor():b}e.getOuterEditor=l;const p={headerBackgroundColor:f.Color.white,primaryHeadingColor:f.Color.fromHex(\"#333333\"),secondaryHeadingColor:f.Color.fromHex(\"#6c6c6cb3\")};let m=class extends n.ZoneWidget{constructor(b,w,E){super(b,w),this.instantiationService=E,this._onDidClose=new _.Emitter,this.onDidClose=this._onDidClose.event,g.mixin(this.options,p,!1)}dispose(){this.disposed||(this.disposed=!0,super.dispose(),this._onDidClose.fire(this))}style(b){const w=this.options;b.headerBackgroundColor&&(w.headerBackgroundColor=b.headerBackgroundColor),b.primaryHeadingColor&&(w.primaryHeadingColor=b.primaryHeadingColor),b.secondaryHeadingColor&&(w.secondaryHeadingColor=b.secondaryHeadingColor),super.style(b)}_applyStyles(){super._applyStyles();const b=this.options;this._headElement&&b.headerBackgroundColor&&(this._headElement.style.backgroundColor=b.headerBackgroundColor.toString()),this._primaryHeading&&b.primaryHeadingColor&&(this._primaryHeading.style.color=b.primaryHeadingColor.toString()),this._secondaryHeading&&b.secondaryHeadingColor&&(this._secondaryHeading.style.color=b.secondaryHeadingColor.toString()),this._bodyElement&&b.frameColor&&(this._bodyElement.style.borderColor=b.frameColor.toString())}_fillContainer(b){this.setCssClass(\"peekview-widget\"),this._headElement=L.$(\".head\"),this._bodyElement=L.$(\".body\"),this._fillHead(this._headElement),this._fillBody(this._bodyElement),b.appendChild(this._headElement),b.appendChild(this._bodyElement)}_fillHead(b,w){this._titleElement=L.$(\".peekview-title\"),this.options.supportOnTitleClick&&(this._titleElement.classList.add(\"clickable\"),L.addStandardDisposableListener(this._titleElement,\"click\",M=>this._onTitleClick(M))),L.append(this._headElement,this._titleElement),this._fillTitleIcon(this._titleElement),this._primaryHeading=L.$(\"span.filename\"),this._secondaryHeading=L.$(\"span.dirname\"),this._metaHeading=L.$(\"span.meta\"),L.append(this._titleElement,this._primaryHeading,this._secondaryHeading,this._metaHeading);const E=L.$(\".peekview-actions\");L.append(this._headElement,E);const I=this._getActionBarOptions();this._actionbarWidget=new k.ActionBar(E,I),this._disposables.add(this._actionbarWidget),w||this._actionbarWidget.push(new y.Action(\"peekview.close\",t.localize(1,null),S.ThemeIcon.asClassName(D.Codicon.close),!0,()=>(this.dispose(),Promise.resolve())),{label:!1,icon:!0})}_fillTitleIcon(b){}_getActionBarOptions(){return{actionViewItemProvider:a.createActionViewItem.bind(void 0,this.instantiationService),orientation:0}}_onTitleClick(b){}setTitle(b,w){this._primaryHeading&&this._secondaryHeading&&(this._primaryHeading.innerText=b,this._primaryHeading.setAttribute(\"title\",b),w?this._secondaryHeading.innerText=w:L.clearNode(this._secondaryHeading))}setMetaTitle(b){this._metaHeading&&(b?(this._metaHeading.innerText=b,L.show(this._metaHeading)):L.hide(this._metaHeading))}_doLayout(b,w){if(!this._isShowing&&b<0){this.dispose();return}const E=Math.ceil(this.editor.getOption(65)*1.2),I=Math.round(b-(E+2));this._doLayoutHead(E,w),this._doLayoutBody(I,w)}_doLayoutHead(b,w){this._headElement&&(this._headElement.style.height=`${b}px`,this._headElement.style.lineHeight=this._headElement.style.height)}_doLayoutBody(b,w){this._bodyElement&&(this._bodyElement.style.height=`${b}px`)}};e.PeekViewWidget=m,e.PeekViewWidget=m=ke([fe(2,r.IInstantiationService)],m),e.peekViewTitleBackground=(0,c.registerColor)(\"peekViewTitle.background\",{dark:\"#252526\",light:\"#F3F3F3\",hcDark:f.Color.black,hcLight:f.Color.white},t.localize(2,null)),e.peekViewTitleForeground=(0,c.registerColor)(\"peekViewTitleLabel.foreground\",{dark:f.Color.white,light:f.Color.black,hcDark:f.Color.white,hcLight:c.editorForeground},t.localize(3,null)),e.peekViewTitleInfoForeground=(0,c.registerColor)(\"peekViewTitleDescription.foreground\",{dark:\"#ccccccb3\",light:\"#616161\",hcDark:\"#FFFFFF99\",hcLight:\"#292929\"},t.localize(4,null)),e.peekViewBorder=(0,c.registerColor)(\"peekView.border\",{dark:c.editorInfoForeground,light:c.editorInfoForeground,hcDark:c.contrastBorder,hcLight:c.contrastBorder},t.localize(5,null)),e.peekViewResultsBackground=(0,c.registerColor)(\"peekViewResult.background\",{dark:\"#252526\",light:\"#F3F3F3\",hcDark:f.Color.black,hcLight:f.Color.white},t.localize(6,null)),e.peekViewResultsMatchForeground=(0,c.registerColor)(\"peekViewResult.lineForeground\",{dark:\"#bbbbbb\",light:\"#646465\",hcDark:f.Color.white,hcLight:c.editorForeground},t.localize(7,null)),e.peekViewResultsFileForeground=(0,c.registerColor)(\"peekViewResult.fileForeground\",{dark:f.Color.white,light:\"#1E1E1E\",hcDark:f.Color.white,hcLight:c.editorForeground},t.localize(8,null)),e.peekViewResultsSelectionBackground=(0,c.registerColor)(\"peekViewResult.selectionBackground\",{dark:\"#3399ff33\",light:\"#3399ff33\",hcDark:null,hcLight:null},t.localize(9,null)),e.peekViewResultsSelectionForeground=(0,c.registerColor)(\"peekViewResult.selectionForeground\",{dark:f.Color.white,light:\"#6C6C6C\",hcDark:f.Color.white,hcLight:c.editorForeground},t.localize(10,null)),e.peekViewEditorBackground=(0,c.registerColor)(\"peekViewEditor.background\",{dark:\"#001F33\",light:\"#F2F8FC\",hcDark:f.Color.black,hcLight:f.Color.white},t.localize(11,null)),e.peekViewEditorGutterBackground=(0,c.registerColor)(\"peekViewEditorGutter.background\",{dark:e.peekViewEditorBackground,light:e.peekViewEditorBackground,hcDark:e.peekViewEditorBackground,hcLight:e.peekViewEditorBackground},t.localize(12,null)),e.peekViewEditorStickyScrollBackground=(0,c.registerColor)(\"peekViewEditorStickyScroll.background\",{dark:e.peekViewEditorBackground,light:e.peekViewEditorBackground,hcDark:e.peekViewEditorBackground,hcLight:e.peekViewEditorBackground},t.localize(13,null)),e.peekViewResultsMatchHighlight=(0,c.registerColor)(\"peekViewResult.matchHighlightBackground\",{dark:\"#ea5c004d\",light:\"#ea5c004d\",hcDark:null,hcLight:null},t.localize(14,null)),e.peekViewEditorMatchHighlight=(0,c.registerColor)(\"peekViewEditor.matchHighlightBackground\",{dark:\"#ff8f0099\",light:\"#f5d802de\",hcDark:null,hcLight:null},t.localize(15,null)),e.peekViewEditorMatchHighlightBorder=(0,c.registerColor)(\"peekViewEditor.matchHighlightBorder\",{dark:null,light:null,hcDark:c.activeContrastBorder,hcLight:c.activeContrastBorder},t.localize(16,null))}),define(ne[899],se([1,0,7,75,14,38,6,2,45,11,5,138,663,160,30,15,8,158,97,56,789,31,23,445]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l){\"use strict\";var p;Object.defineProperty(e,\"__esModule\",{value:!0}),e.MarkerNavigationWidget=void 0;class m{constructor(O,W,U,j,R){this._openerService=j,this._labelService=R,this._lines=0,this._longestLineLength=0,this._relatedDiagnostics=new WeakMap,this._disposables=new f.DisposableStore,this._editor=W;const K=document.createElement(\"div\");K.className=\"descriptioncontainer\",this._messageBlock=document.createElement(\"div\"),this._messageBlock.classList.add(\"message\"),this._messageBlock.setAttribute(\"aria-live\",\"assertive\"),this._messageBlock.setAttribute(\"role\",\"alert\"),K.appendChild(this._messageBlock),this._relatedBlock=document.createElement(\"div\"),K.appendChild(this._relatedBlock),this._disposables.add(L.addStandardDisposableListener(this._relatedBlock,\"click\",G=>{G.preventDefault();const Z=this._relatedDiagnostics.get(G.target);Z&&U(Z)})),this._scrollable=new k.ScrollableElement(K,{horizontal:1,vertical:1,useShadows:!1,horizontalScrollbarSize:6,verticalScrollbarSize:6}),O.appendChild(this._scrollable.getDomNode()),this._disposables.add(this._scrollable.onScroll(G=>{K.style.left=`-${G.scrollLeft}px`,K.style.top=`-${G.scrollTop}px`})),this._disposables.add(this._scrollable)}dispose(){(0,f.dispose)(this._disposables)}update(O){const{source:W,message:U,relatedInformation:j,code:R}=O;let K=(W?.length||0)+2;R&&(typeof R==\"string\"?K+=R.length:K+=R.value.length);const G=(0,g.splitLines)(U);this._lines=G.length,this._longestLineLength=0;for(const B of G)this._longestLineLength=Math.max(B.length+K,this._longestLineLength);L.clearNode(this._messageBlock),this._messageBlock.setAttribute(\"aria-label\",this.getAriaLabel(O)),this._editor.applyFontInfo(this._messageBlock);let Z=this._messageBlock;for(const B of G)Z=document.createElement(\"div\"),Z.innerText=B,B===\"\"&&(Z.style.height=this._messageBlock.style.lineHeight),this._messageBlock.appendChild(Z);if(W||R){const B=document.createElement(\"span\");if(B.classList.add(\"details\"),Z.appendChild(B),W){const V=document.createElement(\"span\");V.innerText=W,V.classList.add(\"source\"),B.appendChild(V)}if(R)if(typeof R==\"string\"){const V=document.createElement(\"span\");V.innerText=`(${R})`,V.classList.add(\"code\"),B.appendChild(V)}else{this._codeLink=L.$(\"a.code-link\"),this._codeLink.setAttribute(\"href\",`${R.target.toString()}`),this._codeLink.onclick=Y=>{this._openerService.open(R.target,{allowCommands:!0}),Y.preventDefault(),Y.stopPropagation()};const V=L.append(this._codeLink,L.$(\"span\"));V.innerText=R.value,B.appendChild(this._codeLink)}}if(L.clearNode(this._relatedBlock),this._editor.applyFontInfo(this._relatedBlock),(0,y.isNonEmptyArray)(j)){const B=this._relatedBlock.appendChild(document.createElement(\"div\"));B.style.paddingTop=`${Math.floor(this._editor.getOption(65)*.66)}px`,this._lines+=1;for(const V of j){const Y=document.createElement(\"div\"),ie=document.createElement(\"a\");ie.classList.add(\"filename\"),ie.innerText=`${this._labelService.getUriBasenameLabel(V.resource)}(${V.startLineNumber}, ${V.startColumn}): `,ie.title=this._labelService.getUriLabel(V.resource),this._relatedDiagnostics.set(ie,V);const ae=document.createElement(\"span\");ae.innerText=V.message,Y.appendChild(ie),Y.appendChild(ae),this._lines+=1,B.appendChild(Y)}}const J=this._editor.getOption(49),X=Math.ceil(J.typicalFullwidthCharacterWidth*this._longestLineLength*.75),H=J.lineHeight*this._lines;this._scrollable.setScrollDimensions({scrollWidth:X,scrollHeight:H})}layout(O,W){this._scrollable.getDomNode().style.height=`${O}px`,this._scrollable.getDomNode().style.width=`${W}px`,this._scrollable.setScrollDimensions({width:W,height:O})}getHeightInLines(){return Math.min(17,this._lines)}getAriaLabel(O){let W=\"\";switch(O.severity){case r.MarkerSeverity.Error:W=i.localize(0,null);break;case r.MarkerSeverity.Warning:W=i.localize(1,null);break;case r.MarkerSeverity.Info:W=i.localize(2,null);break;case r.MarkerSeverity.Hint:W=i.localize(3,null);break}let U=i.localize(4,null,W,O.startLineNumber+\":\"+O.startColumn);const j=this._editor.getModel();return j&&O.startLineNumber<=j.getLineCount()&&O.startLineNumber>=1&&(U=`${j.getLineContent(O.startLineNumber)}, ${U}`),U}}let v=p=class extends s.PeekViewWidget{constructor(O,W,U,j,R,K,G){super(O,{showArrow:!0,showFrame:!0,isAccessible:!0,frameWidth:1},R),this._themeService=W,this._openerService=U,this._menuService=j,this._contextKeyService=K,this._labelService=G,this._callOnDispose=new f.DisposableStore,this._onDidSelectRelatedInformation=new S.Emitter,this.onDidSelectRelatedInformation=this._onDidSelectRelatedInformation.event,this._severity=r.MarkerSeverity.Warning,this._backgroundColor=D.Color.white,this._applyTheme(W.getColorTheme()),this._callOnDispose.add(W.onDidColorThemeChange(this._applyTheme.bind(this))),this.create()}_applyTheme(O){this._backgroundColor=O.getColor(N);let W=I,U=M;this._severity===r.MarkerSeverity.Warning?(W=P,U=x):this._severity===r.MarkerSeverity.Info&&(W=T,U=A);const j=O.getColor(W),R=O.getColor(U);this.style({arrowColor:j,frameColor:j,headerBackgroundColor:R,primaryHeadingColor:O.getColor(s.peekViewTitleForeground),secondaryHeadingColor:O.getColor(s.peekViewTitleInfoForeground)})}_applyStyles(){this._parentContainer&&(this._parentContainer.style.backgroundColor=this._backgroundColor?this._backgroundColor.toString():\"\"),super._applyStyles()}dispose(){this._callOnDispose.dispose(),super.dispose()}_fillHead(O){super._fillHead(O),this._disposables.add(this._actionbarWidget.actionRunner.onWillRun(j=>this.editor.focus()));const W=[],U=this._menuService.createMenu(p.TitleMenu,this._contextKeyService);(0,n.createAndFillInActionBarActions)(U,void 0,W),this._actionbarWidget.push(W,{label:!1,icon:!0,index:0}),U.dispose()}_fillTitleIcon(O){this._icon=L.append(O,L.$(\"\"))}_fillBody(O){this._parentContainer=O,O.classList.add(\"marker-widget\"),this._parentContainer.tabIndex=0,this._parentContainer.setAttribute(\"role\",\"tooltip\"),this._container=document.createElement(\"div\"),O.appendChild(this._container),this._message=new m(this._container,this.editor,W=>this._onDidSelectRelatedInformation.fire(W),this._openerService,this._labelService),this._disposables.add(this._message)}show(){throw new Error(\"call showAtMarker\")}showAtMarker(O,W,U){this._container.classList.remove(\"stale\"),this._message.update(O),this._severity=O.severity,this._applyTheme(this._themeService.getColorTheme());const j=C.Range.lift(O),R=this.editor.getPosition(),K=R&&j.containsPosition(R)?R:j.getStartPosition();super.show(K,this.computeRequiredHeight());const G=this.editor.getModel();if(G){const Z=U>1?i.localize(5,null,W,U):i.localize(6,null,W,U);this.setTitle((0,_.basename)(G.uri),Z)}this._icon.className=`codicon ${o.SeverityIcon.className(r.MarkerSeverity.toSeverity(this._severity))}`,this.editor.revealPositionNearTop(K,0),this.editor.focus()}updateMarker(O){this._container.classList.remove(\"stale\"),this._message.update(O)}showStale(){this._container.classList.add(\"stale\"),this._relayout()}_doLayoutBody(O,W){super._doLayoutBody(O,W),this._heightInPixel=O,this._message.layout(O,W),this._container.style.height=`${O}px`}_onWidth(O){this._message.layout(this._heightInPixel,O)}_relayout(){super._relayout(this.computeRequiredHeight())}computeRequiredHeight(){return 3+this._message.getHeightInLines()}};e.MarkerNavigationWidget=v,v.TitleMenu=new t.MenuId(\"gotoErrorTitleMenu\"),e.MarkerNavigationWidget=v=p=ke([fe(1,l.IThemeService),fe(2,c.IOpenerService),fe(3,t.IMenuService),fe(4,u.IInstantiationService),fe(5,a.IContextKeyService),fe(6,h.ILabelService)],v);const b=(0,d.oneOf)(d.editorErrorForeground,d.editorErrorBorder),w=(0,d.oneOf)(d.editorWarningForeground,d.editorWarningBorder),E=(0,d.oneOf)(d.editorInfoForeground,d.editorInfoBorder),I=(0,d.registerColor)(\"editorMarkerNavigationError.background\",{dark:b,light:b,hcDark:d.contrastBorder,hcLight:d.contrastBorder},i.localize(7,null)),M=(0,d.registerColor)(\"editorMarkerNavigationError.headerBackground\",{dark:(0,d.transparent)(I,.1),light:(0,d.transparent)(I,.1),hcDark:null,hcLight:null},i.localize(8,null)),P=(0,d.registerColor)(\"editorMarkerNavigationWarning.background\",{dark:w,light:w,hcDark:d.contrastBorder,hcLight:d.contrastBorder},i.localize(9,null)),x=(0,d.registerColor)(\"editorMarkerNavigationWarning.headerBackground\",{dark:(0,d.transparent)(P,.1),light:(0,d.transparent)(P,.1),hcDark:\"#0C141F\",hcLight:(0,d.transparent)(P,.2)},i.localize(10,null)),T=(0,d.registerColor)(\"editorMarkerNavigationInfo.background\",{dark:E,light:E,hcDark:d.contrastBorder,hcLight:d.contrastBorder},i.localize(11,null)),A=(0,d.registerColor)(\"editorMarkerNavigationInfo.headerBackground\",{dark:(0,d.transparent)(T,.1),light:(0,d.transparent)(T,.1),hcDark:null,hcLight:null},i.localize(12,null)),N=(0,d.registerColor)(\"editorMarkerNavigation.background\",{dark:d.editorBackground,light:d.editorBackground,hcDark:d.editorBackground,hcLight:d.editorBackground},i.localize(13,null))}),define(ne[369],se([1,0,25,2,16,33,12,5,21,766,662,30,15,8,62,899]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";var u;Object.defineProperty(e,\"__esModule\",{value:!0}),e.NextMarkerAction=e.MarkerController=void 0;let h=u=class{static get(b){return b.getContribution(u.ID)}constructor(b,w,E,I,M){this._markerNavigationService=w,this._contextKeyService=E,this._editorService=I,this._instantiationService=M,this._sessionDispoables=new k.DisposableStore,this._editor=b,this._widgetVisible=p.bindTo(this._contextKeyService)}dispose(){this._cleanUp(),this._sessionDispoables.dispose()}_cleanUp(){this._widgetVisible.reset(),this._sessionDispoables.clear(),this._widget=void 0,this._model=void 0}_getOrCreateModel(b){if(this._model&&this._model.matches(b))return this._model;let w=!1;return this._model&&(w=!0,this._cleanUp()),this._model=this._markerNavigationService.getMarkerList(b),w&&this._model.move(!0,this._editor.getModel(),this._editor.getPosition()),this._widget=this._instantiationService.createInstance(a.MarkerNavigationWidget,this._editor),this._widget.onDidClose(()=>this.close(),this,this._sessionDispoables),this._widgetVisible.set(!0),this._sessionDispoables.add(this._model),this._sessionDispoables.add(this._widget),this._sessionDispoables.add(this._editor.onDidChangeCursorPosition(E=>{var I,M,P;(!(!((I=this._model)===null||I===void 0)&&I.selected)||!f.Range.containsPosition((M=this._model)===null||M===void 0?void 0:M.selected.marker,E.position))&&((P=this._model)===null||P===void 0||P.resetIndex())})),this._sessionDispoables.add(this._model.onDidChange(()=>{if(!this._widget||!this._widget.position||!this._model)return;const E=this._model.find(this._editor.getModel().uri,this._widget.position);E?this._widget.updateMarker(E.marker):this._widget.showStale()})),this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation(E=>{this._editorService.openCodeEditor({resource:E.resource,options:{pinned:!0,revealIfOpened:!0,selection:f.Range.lift(E).collapseToStart()}},this._editor),this.close(!1)})),this._sessionDispoables.add(this._editor.onDidChangeModel(()=>this._cleanUp())),this._model}close(b=!0){this._cleanUp(),b&&this._editor.focus()}showAtMarker(b){if(this._editor.hasModel()){const w=this._getOrCreateModel(this._editor.getModel().uri);w.resetIndex(),w.move(!0,this._editor.getModel(),new S.Position(b.startLineNumber,b.startColumn)),w.selected&&this._widget.showAtMarker(w.selected.marker,w.selected.index,w.selected.total)}}nagivate(b,w){var E,I;return we(this,void 0,void 0,function*(){if(this._editor.hasModel()){const M=this._getOrCreateModel(w?void 0:this._editor.getModel().uri);if(M.move(b,this._editor.getModel(),this._editor.getPosition()),!M.selected)return;if(M.selected.marker.resource.toString()!==this._editor.getModel().uri.toString()){this._cleanUp();const P=yield this._editorService.openCodeEditor({resource:M.selected.marker.resource,options:{pinned:!1,revealIfOpened:!0,selectionRevealType:2,selection:M.selected.marker}},this._editor);P&&((E=u.get(P))===null||E===void 0||E.close(),(I=u.get(P))===null||I===void 0||I.nagivate(b,w))}else this._widget.showAtMarker(M.selected.marker,M.selected.index,M.selected.total)}})}};e.MarkerController=h,h.ID=\"editor.contrib.markerController\",e.MarkerController=h=u=ke([fe(1,g.IMarkerNavigationService),fe(2,i.IContextKeyService),fe(3,D.ICodeEditorService),fe(4,n.IInstantiationService)],h);class r extends y.EditorAction{constructor(b,w,E){super(E),this._next=b,this._multiFile=w}run(b,w){var E;return we(this,void 0,void 0,function*(){w.hasModel()&&((E=h.get(w))===null||E===void 0||E.nagivate(this._next,this._multiFile))})}}class c extends r{constructor(){super(!0,!1,{id:c.ID,label:c.LABEL,alias:\"Go to Next Problem (Error, Warning, Info)\",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.focus,primary:578,weight:100},menuOpts:{menuId:a.MarkerNavigationWidget.TitleMenu,title:c.LABEL,icon:(0,t.registerIcon)(\"marker-navigation-next\",L.Codicon.arrowDown,C.localize(1,null)),group:\"navigation\",order:1}})}}e.NextMarkerAction=c,c.ID=\"editor.action.marker.next\",c.LABEL=C.localize(0,null);class o extends r{constructor(){super(!1,!1,{id:o.ID,label:o.LABEL,alias:\"Go to Previous Problem (Error, Warning, Info)\",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.focus,primary:1602,weight:100},menuOpts:{menuId:a.MarkerNavigationWidget.TitleMenu,title:o.LABEL,icon:(0,t.registerIcon)(\"marker-navigation-previous\",L.Codicon.arrowUp,C.localize(3,null)),group:\"navigation\",order:2}})}}o.ID=\"editor.action.marker.prev\",o.LABEL=C.localize(2,null);class d extends r{constructor(){super(!0,!0,{id:\"editor.action.marker.nextInFiles\",label:C.localize(4,null),alias:\"Go to Next Problem in Files (Error, Warning, Info)\",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.focus,primary:66,weight:100},menuOpts:{menuId:s.MenuId.MenubarGoMenu,title:C.localize(5,null),group:\"6_problem_nav\",order:1}})}}class l extends r{constructor(){super(!1,!0,{id:\"editor.action.marker.prevInFiles\",label:C.localize(6,null),alias:\"Go to Previous Problem in Files (Error, Warning, Info)\",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.focus,primary:1090,weight:100},menuOpts:{menuId:s.MenuId.MenubarGoMenu,title:C.localize(7,null),group:\"6_problem_nav\",order:2}})}}(0,y.registerEditorContribution)(h.ID,h,4),(0,y.registerEditorAction)(c),(0,y.registerEditorAction)(o),(0,y.registerEditorAction)(d),(0,y.registerEditorAction)(l);const p=new i.RawContextKey(\"markersNavigationVisible\",!1),m=y.EditorCommand.bindToContribution(h.get);(0,y.registerEditorCommand)(new m({id:\"closeMarkersNavigation\",precondition:p,handler:v=>v.close(),kbOpts:{weight:100+50,kbExpr:_.EditorContextKeys.focus,primary:9,secondary:[1033]}}))}),define(ne[900],se([1,0,7,311,38,6,2,54,45,162,5,40,32,78,41,69,824,138,668,8,34,158,191,23,192,155,447]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ReferenceWidget=e.LayoutData=void 0;class b{constructor(P,x){this._editor=P,this._model=x,this._decorations=new Map,this._decorationIgnoreSet=new Set,this._callOnDispose=new S.DisposableStore,this._callOnModelChange=new S.DisposableStore,this._callOnDispose.add(this._editor.onDidChangeModel(()=>this._onModelChanged())),this._onModelChanged()}dispose(){this._callOnModelChange.dispose(),this._callOnDispose.dispose(),this.removeDecorations()}_onModelChanged(){this._callOnModelChange.clear();const P=this._editor.getModel();if(P){for(const x of this._model.references)if(x.uri.toString()===P.uri.toString()){this._addDecorations(x.parent);return}}}_addDecorations(P){if(!this._editor.hasModel())return;this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations(()=>this._onDecorationChanged()));const x=[],T=[];for(let A=0,N=P.children.length;A<N;A++){const F=P.children[A];this._decorationIgnoreSet.has(F.id)||F.uri.toString()===this._editor.getModel().uri.toString()&&(x.push({range:F.range,options:b.DecorationOptions}),T.push(A))}this._editor.changeDecorations(A=>{const N=A.deltaDecorations([],x);for(let F=0;F<N.length;F++)this._decorations.set(N[F],P.children[T[F]])})}_onDecorationChanged(){const P=[],x=this._editor.getModel();if(x){for(const[T,A]of this._decorations){const N=x.getDecorationRange(T);if(!N)continue;let F=!1;if(!C.Range.equalsRange(N,A.range)){if(C.Range.spansMultipleLines(N))F=!0;else{const O=A.range.endColumn-A.range.startColumn,W=N.endColumn-N.startColumn;O!==W&&(F=!0)}F?(this._decorationIgnoreSet.add(A.id),P.push(T)):A.range=N}}for(let T=0,A=P.length;T<A;T++)this._decorations.delete(P[T]);this._editor.removeDecorations(P)}}removeDecorations(){this._editor.removeDecorations([...this._decorations.keys()]),this._decorations.clear()}}b.DecorationOptions=s.ModelDecorationOptions.register({description:\"reference-decoration\",stickiness:1,className:\"reference-decoration\"});class w{constructor(){this.ratio=.7,this.heightInLines=18}static fromJSON(P){let x,T;try{const A=JSON.parse(P);x=A.ratio,T=A.heightInLines}catch{}return{ratio:x||.7,heightInLines:T||18}}}e.LayoutData=w;class E extends l.WorkbenchAsyncDataTree{}let I=class extends h.PeekViewWidget{constructor(P,x,T,A,N,F,O,W,U,j,R,K){super(P,{showFrame:!1,showArrow:!0,isResizeable:!0,isAccessible:!0,supportOnTitleClick:!0},F),this._defaultTreeKeyboardSupport=x,this.layoutData=T,this._textModelResolverService=N,this._instantiationService=F,this._peekViewService=O,this._uriLabel=W,this._undoRedoService=U,this._keybindingService=j,this._languageService=R,this._languageConfigurationService=K,this._disposeOnNewModel=new S.DisposableStore,this._callOnDispose=new S.DisposableStore,this._onDidSelectReference=new D.Emitter,this.onDidSelectReference=this._onDidSelectReference.event,this._dim=new L.Dimension(0,0),this._applyTheme(A.getColorTheme()),this._callOnDispose.add(A.onDidColorThemeChange(this._applyTheme.bind(this))),this._peekViewService.addExclusiveWidget(P,this),this.create()}dispose(){this.setModel(void 0),this._callOnDispose.dispose(),this._disposeOnNewModel.dispose(),(0,S.dispose)(this._preview),(0,S.dispose)(this._previewNotAvailableMessage),(0,S.dispose)(this._tree),(0,S.dispose)(this._previewModelReference),this._splitView.dispose(),super.dispose()}_applyTheme(P){const x=P.getColor(h.peekViewBorder)||y.Color.transparent;this.style({arrowColor:x,frameColor:x,headerBackgroundColor:P.getColor(h.peekViewTitleBackground)||y.Color.transparent,primaryHeadingColor:P.getColor(h.peekViewTitleForeground),secondaryHeadingColor:P.getColor(h.peekViewTitleInfoForeground)})}show(P){super.show(P,this.layoutData.heightInLines||18)}focusOnReferenceTree(){this._tree.domFocus()}focusOnPreviewEditor(){this._preview.focus()}isPreviewEditorFocused(){return this._preview.hasTextFocus()}_onTitleClick(P){this._preview&&this._preview.getModel()&&this._onDidSelectReference.fire({element:this._getFocusedReference(),kind:P.ctrlKey||P.metaKey||P.altKey?\"side\":\"open\",source:\"title\"})}_fillBody(P){this.setCssClass(\"reference-zone-widget\"),this._messageContainer=L.append(P,L.$(\"div.messages\")),L.hide(this._messageContainer),this._splitView=new k.SplitView(P,{orientation:1}),this._previewContainer=L.append(P,L.$(\"div.preview.inline\"));const x={scrollBeyondLastLine:!1,scrollbar:{verticalScrollbarSize:14,horizontal:\"auto\",useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,alwaysConsumeMouseWheel:!0},overviewRulerLanes:2,fixedOverflowWidgets:!0,minimap:{enabled:!1}};this._preview=this._instantiationService.createInstance(g.EmbeddedCodeEditorWidget,this._previewContainer,x,{},this.editor),L.hide(this._previewContainer),this._previewNotAvailableMessage=new s.TextModel(r.localize(0,null),n.PLAINTEXT_LANGUAGE_ID,s.TextModel.DEFAULT_CREATION_OPTIONS,null,this._undoRedoService,this._languageService,this._languageConfigurationService),this._treeContainer=L.append(P,L.$(\"div.ref-tree.inline\"));const T={keyboardSupport:this._defaultTreeKeyboardSupport,accessibilityProvider:new u.AccessibilityProvider,keyboardNavigationLabelProvider:this._instantiationService.createInstance(u.StringRepresentationProvider),identityProvider:new u.IdentityProvider,openOnSingleClick:!0,selectionNavigation:!0,overrideStyles:{listBackground:h.peekViewResultsBackground}};this._defaultTreeKeyboardSupport&&this._callOnDispose.add(L.addStandardDisposableListener(this._treeContainer,\"keydown\",N=>{N.equals(9)&&(this._keybindingService.dispatchEvent(N,N.target),N.stopPropagation())},!0)),this._tree=this._instantiationService.createInstance(E,\"ReferencesWidget\",this._treeContainer,new u.Delegate,[this._instantiationService.createInstance(u.FileReferencesRenderer),this._instantiationService.createInstance(u.OneReferenceRenderer)],this._instantiationService.createInstance(u.DataSource),T),this._splitView.addView({onDidChange:D.Event.None,element:this._previewContainer,minimumSize:200,maximumSize:Number.MAX_VALUE,layout:N=>{this._preview.layout({height:this._dim.height,width:N})}},k.Sizing.Distribute),this._splitView.addView({onDidChange:D.Event.None,element:this._treeContainer,minimumSize:100,maximumSize:Number.MAX_VALUE,layout:N=>{this._treeContainer.style.height=`${this._dim.height}px`,this._treeContainer.style.width=`${N}px`,this._tree.layout(this._dim.height,N)}},k.Sizing.Distribute),this._disposables.add(this._splitView.onDidSashChange(()=>{this._dim.width&&(this.layoutData.ratio=this._splitView.getViewSize(0)/this._dim.width)},void 0));const A=(N,F)=>{N instanceof v.OneReference&&(F===\"show\"&&this._revealReference(N,!1),this._onDidSelectReference.fire({element:N,kind:F,source:\"tree\"}))};this._tree.onDidOpen(N=>{N.sideBySide?A(N.element,\"side\"):N.editorOptions.pinned?A(N.element,\"goto\"):A(N.element,\"show\")}),L.hide(this._treeContainer)}_onWidth(P){this._dim&&this._doLayoutBody(this._dim.height,P)}_doLayoutBody(P,x){super._doLayoutBody(P,x),this._dim=new L.Dimension(x,P),this.layoutData.heightInLines=this._viewZone?this._viewZone.heightInLines:this.layoutData.heightInLines,this._splitView.layout(x),this._splitView.resizeView(0,x*this.layoutData.ratio)}setSelection(P){return this._revealReference(P,!0).then(()=>{this._model&&(this._tree.setSelection([P]),this._tree.setFocus([P]))})}setModel(P){return this._disposeOnNewModel.clear(),this._model=P,this._model?this._onNewModel():Promise.resolve()}_onNewModel(){return this._model?this._model.isEmpty?(this.setTitle(\"\"),this._messageContainer.innerText=r.localize(1,null),L.show(this._messageContainer),Promise.resolve(void 0)):(L.hide(this._messageContainer),this._decorationsManager=new b(this._preview,this._model),this._disposeOnNewModel.add(this._decorationsManager),this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange(P=>this._tree.rerender(P))),this._disposeOnNewModel.add(this._preview.onMouseDown(P=>{const{event:x,target:T}=P;if(x.detail!==2)return;const A=this._getFocusedReference();A&&this._onDidSelectReference.fire({element:{uri:A.uri,range:T.range},kind:x.ctrlKey||x.metaKey||x.altKey?\"side\":\"open\",source:\"editor\"})})),this.container.classList.add(\"results-loaded\"),L.show(this._treeContainer),L.show(this._previewContainer),this._splitView.layout(this._dim.width),this.focusOnReferenceTree(),this._tree.setInput(this._model.groups.length===1?this._model.groups[0]:this._model)):Promise.resolve(void 0)}_getFocusedReference(){const[P]=this._tree.getFocus();if(P instanceof v.OneReference)return P;if(P instanceof v.FileReferences&&P.children.length>0)return P.children[0]}revealReference(P){return we(this,void 0,void 0,function*(){yield this._revealReference(P,!1),this._onDidSelectReference.fire({element:P,kind:\"goto\",source:\"tree\"})})}_revealReference(P,x){return we(this,void 0,void 0,function*(){if(this._revealedReference===P)return;this._revealedReference=P,P.uri.scheme!==f.Schemas.inMemory?this.setTitle((0,_.basenameOrAuthority)(P.uri),this._uriLabel.getUriLabel((0,_.dirname)(P.uri))):this.setTitle(r.localize(2,null));const T=this._textModelResolverService.createModelReference(P.uri);this._tree.getInput()===P.parent?this._tree.reveal(P):(x&&this._tree.reveal(P.parent),yield this._tree.expand(P.parent),this._tree.reveal(P));const A=yield T;if(!this._model){A.dispose();return}(0,S.dispose)(this._previewModelReference);const N=A.object;if(N){const F=this._preview.getModel()===N.textEditorModel?0:1,O=C.Range.lift(P.range).collapseToStart();this._previewModelReference=A,this._preview.setModel(N.textEditorModel),this._preview.setSelection(O),this._preview.revealRangeInCenter(O,F)}else this._preview.setModel(this._previewNotAvailableMessage),A.dispose()})}};e.ReferenceWidget=I,e.ReferenceWidget=I=ke([fe(3,p.IThemeService),fe(4,a.ITextModelService),fe(5,c.IInstantiationService),fe(6,h.IPeekViewService),fe(7,d.ILabelService),fe(8,m.IUndoRedoService),fe(9,o.IKeybindingService),fe(10,t.ILanguageService),fe(11,i.ILanguageConfigurationService)],I)}),define(ne[370],se([1,0,13,9,63,2,33,12,5,138,666,27,28,15,8,118,191,43,87,155,900]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){\"use strict\";var d;Object.defineProperty(e,\"__esModule\",{value:!0}),e.ReferencesController=e.ctxReferenceSearchVisible=void 0,e.ctxReferenceSearchVisible=new n.RawContextKey(\"referenceSearchVisible\",!1,C.localize(0,null));let l=d=class{static get(v){return v.getContribution(d.ID)}constructor(v,b,w,E,I,M,P,x){this._defaultTreeKeyboardSupport=v,this._editor=b,this._editorService=E,this._notificationService=I,this._instantiationService=M,this._storageService=P,this._configurationService=x,this._disposables=new D.DisposableStore,this._requestIdPool=0,this._ignoreModelChangeEvent=!1,this._referenceSearchVisible=e.ctxReferenceSearchVisible.bindTo(w)}dispose(){var v,b;this._referenceSearchVisible.reset(),this._disposables.dispose(),(v=this._widget)===null||v===void 0||v.dispose(),(b=this._model)===null||b===void 0||b.dispose(),this._widget=void 0,this._model=void 0}toggleWidget(v,b,w){let E;if(this._widget&&(E=this._widget.position),this.closeWidget(),E&&v.containsPosition(E))return;this._peekMode=w,this._referenceSearchVisible.set(!0),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>{this.closeWidget()})),this._disposables.add(this._editor.onDidChangeModel(()=>{this._ignoreModelChangeEvent||this.closeWidget()}));const I=\"peekViewLayout\",M=o.LayoutData.fromJSON(this._storageService.get(I,0,\"{}\"));this._widget=this._instantiationService.createInstance(o.ReferenceWidget,this._editor,this._defaultTreeKeyboardSupport,M),this._widget.setTitle(C.localize(1,null)),this._widget.show(v),this._disposables.add(this._widget.onDidClose(()=>{b.cancel(),this._widget&&(this._storageService.store(I,JSON.stringify(this._widget.layoutData),0,1),this._widget=void 0),this.closeWidget()})),this._disposables.add(this._widget.onDidSelectReference(x=>{const{element:T,kind:A}=x;if(T)switch(A){case\"open\":(x.source!==\"editor\"||!this._configurationService.getValue(\"editor.stablePeek\"))&&this.openReference(T,!1,!1);break;case\"side\":this.openReference(T,!0,!1);break;case\"goto\":w?this._gotoReference(T,!0):this.openReference(T,!1,!0);break}}));const P=++this._requestIdPool;b.then(x=>{var T;if(P!==this._requestIdPool||!this._widget){x.dispose();return}return(T=this._model)===null||T===void 0||T.dispose(),this._model=x,this._widget.setModel(this._model).then(()=>{if(this._widget&&this._model&&this._editor.hasModel()){this._model.isEmpty?this._widget.setMetaTitle(\"\"):this._widget.setMetaTitle(C.localize(2,null,this._model.title,this._model.references.length));const A=this._editor.getModel().uri,N=new f.Position(v.startLineNumber,v.startColumn),F=this._model.nearestReference(A,N);if(F)return this._widget.setSelection(F).then(()=>{this._widget&&this._editor.getOption(85)===\"editor\"&&this._widget.focusOnPreviewEditor()})}})},x=>{this._notificationService.error(x)})}changeFocusBetweenPreviewAndReferences(){this._widget&&(this._widget.isPreviewEditorFocused()?this._widget.focusOnReferenceTree():this._widget.focusOnPreviewEditor())}goToNextOrPreviousReference(v){return we(this,void 0,void 0,function*(){if(!this._editor.hasModel()||!this._model||!this._widget)return;const b=this._widget.position;if(!b)return;const w=this._model.nearestReference(this._editor.getModel().uri,b);if(!w)return;const E=this._model.nextOrPreviousReference(w,v),I=this._editor.hasTextFocus(),M=this._widget.isPreviewEditorFocused();yield this._widget.setSelection(E),yield this._gotoReference(E,!1),I?this._editor.focus():this._widget&&M&&this._widget.focusOnPreviewEditor()})}revealReference(v){return we(this,void 0,void 0,function*(){!this._editor.hasModel()||!this._model||!this._widget||(yield this._widget.revealReference(v))})}closeWidget(v=!0){var b,w;(b=this._widget)===null||b===void 0||b.dispose(),(w=this._model)===null||w===void 0||w.dispose(),this._referenceSearchVisible.reset(),this._disposables.clear(),this._widget=void 0,this._model=void 0,v&&this._editor.focus(),this._requestIdPool+=1}_gotoReference(v,b){var w;(w=this._widget)===null||w===void 0||w.hide(),this._ignoreModelChangeEvent=!0;const E=_.Range.lift(v.range).collapseToStart();return this._editorService.openCodeEditor({resource:v.uri,options:{selection:E,selectionSource:\"code.jump\",pinned:b}},this._editor).then(I=>{var M;if(this._ignoreModelChangeEvent=!1,!I||!this._widget){this.closeWidget();return}if(this._editor===I)this._widget.show(E),this._widget.focusOnReferenceTree();else{const P=d.get(I),x=this._model.clone();this.closeWidget(),I.focus(),P?.toggleWidget(E,(0,L.createCancelablePromise)(T=>Promise.resolve(x)),(M=this._peekMode)!==null&&M!==void 0?M:!1)}},I=>{this._ignoreModelChangeEvent=!1,(0,k.onUnexpectedError)(I)})}openReference(v,b,w){b||this.closeWidget();const{uri:E,range:I}=v;this._editorService.openCodeEditor({resource:E,options:{selection:I,selectionSource:\"code.jump\",pinned:w}},this._editor,b)}};e.ReferencesController=l,l.ID=\"editor.contrib.referencesController\",e.ReferencesController=l=d=ke([fe(2,n.IContextKeyService),fe(3,S.ICodeEditorService),fe(4,h.INotificationService),fe(5,t.IInstantiationService),fe(6,r.IStorageService),fe(7,i.IConfigurationService)],l);function p(m,v){const b=(0,g.getOuterEditor)(m);if(!b)return;const w=l.get(b);w&&v(w)}a.KeybindingsRegistry.registerCommandAndKeybindingRule({id:\"togglePeekWidgetFocus\",weight:100,primary:(0,y.KeyChord)(2089,60),when:n.ContextKeyExpr.or(e.ctxReferenceSearchVisible,g.PeekContext.inPeekEditor),handler(m){p(m,v=>{v.changeFocusBetweenPreviewAndReferences()})}}),a.KeybindingsRegistry.registerCommandAndKeybindingRule({id:\"goToNextReference\",weight:100-10,primary:62,secondary:[70],when:n.ContextKeyExpr.or(e.ctxReferenceSearchVisible,g.PeekContext.inPeekEditor),handler(m){p(m,v=>{v.goToNextOrPreviousReference(!0)})}}),a.KeybindingsRegistry.registerCommandAndKeybindingRule({id:\"goToPreviousReference\",weight:100-10,primary:1086,secondary:[1094],when:n.ContextKeyExpr.or(e.ctxReferenceSearchVisible,g.PeekContext.inPeekEditor),handler(m){p(m,v=>{v.goToNextOrPreviousReference(!1)})}}),s.CommandsRegistry.registerCommandAlias(\"goToNextReferenceFromEmbeddedEditor\",\"goToNextReference\"),s.CommandsRegistry.registerCommandAlias(\"goToPreviousReferenceFromEmbeddedEditor\",\"goToPreviousReference\"),s.CommandsRegistry.registerCommandAlias(\"closeReferenceSearchEditor\",\"closeReferenceSearch\"),s.CommandsRegistry.registerCommand(\"closeReferenceSearch\",m=>p(m,v=>v.closeWidget())),a.KeybindingsRegistry.registerKeybindingRule({id:\"closeReferenceSearch\",weight:100-101,primary:9,secondary:[1033],when:n.ContextKeyExpr.and(g.PeekContext.inPeekEditor,n.ContextKeyExpr.not(\"config.editor.stablePeek\"))}),a.KeybindingsRegistry.registerKeybindingRule({id:\"closeReferenceSearch\",weight:200+50,primary:9,secondary:[1033],when:n.ContextKeyExpr.and(e.ctxReferenceSearchVisible,n.ContextKeyExpr.not(\"config.editor.stablePeek\"))}),a.KeybindingsRegistry.registerCommandAndKeybindingRule({id:\"revealReference\",weight:200,primary:3,mac:{primary:3,secondary:[2066]},when:n.ContextKeyExpr.and(e.ctxReferenceSearchVisible,u.WorkbenchListFocusContextKey,u.WorkbenchTreeElementCanCollapse.negate(),u.WorkbenchTreeElementCanExpand.negate()),handler(m){var v;const w=(v=m.get(u.IListService).lastFocusedList)===null||v===void 0?void 0:v.getFocus();Array.isArray(w)&&w[0]instanceof c.OneReference&&p(m,E=>E.revealReference(w[0]))}}),a.KeybindingsRegistry.registerCommandAndKeybindingRule({id:\"openReferenceToSide\",weight:100,primary:2051,mac:{primary:259},when:n.ContextKeyExpr.and(e.ctxReferenceSearchVisible,u.WorkbenchListFocusContextKey,u.WorkbenchTreeElementCanCollapse.negate(),u.WorkbenchTreeElementCanExpand.negate()),handler(m){var v;const w=(v=m.get(u.IListService).lastFocusedList)===null||v===void 0?void 0:v.getFocus();Array.isArray(w)&&w[0]instanceof c.OneReference&&p(m,E=>E.openReference(w[0],!0,!0))}}),s.CommandsRegistry.registerCommand(\"openReference\",m=>{var v;const w=(v=m.get(u.IListService).lastFocusedList)===null||v===void 0?void 0:v.getFocus();Array.isArray(w)&&w[0]instanceof c.OneReference&&p(m,E=>E.openReference(w[0],!1,!0))})}),define(ne[257],se([1,0,49,13,63,20,22,104,177,16,33,162,12,5,21,29,370,155,804,190,138,664,30,27,15,8,43,77,247,18,46,238]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P){\"use strict\";var x,T,A,N,F,O,W,U;Object.defineProperty(e,\"__esModule\",{value:!0}),e.DefinitionAction=e.SymbolNavigationAction=e.SymbolNavigationAnchor=void 0,l.MenuRegistry.appendMenuItem(l.MenuId.EditorContext,{submenu:l.MenuId.EditorContextPeek,title:d.localize(0,null),group:\"navigation\",order:100});class j{static is(V){return!V||typeof V!=\"object\"?!1:!!(V instanceof j||i.Position.isIPosition(V.position)&&V.model)}constructor(V,Y){this.model=V,this.position=Y}}e.SymbolNavigationAnchor=j;class R extends g.EditorAction2{static all(){return R._allSymbolNavigationCommands.values()}static _patchConfig(V){const Y=Object.assign(Object.assign({},V),{f1:!0});if(Y.menu)for(const ie of M.Iterable.wrap(Y.menu))(ie.id===l.MenuId.EditorContext||ie.id===l.MenuId.EditorContextPeek)&&(ie.when=m.ContextKeyExpr.and(V.precondition,ie.when));return Y}constructor(V,Y){super(R._patchConfig(Y)),this.configuration=V,R._allSymbolNavigationCommands.set(Y.id,this)}runEditorCommand(V,Y,ie,ae){if(!Y.hasModel())return Promise.resolve(void 0);const ce=V.get(b.INotificationService),de=V.get(C.ICodeEditorService),he=V.get(w.IEditorProgressService),ue=V.get(r.ISymbolNavigationService),te=V.get(I.ILanguageFeaturesService),q=V.get(v.IInstantiationService),z=Y.getModel(),ee=Y.getPosition(),$=j.is(ie)?ie:new j(z,ee),re=new f.EditorStateCancellationTokenSource(Y,5),oe=(0,k.raceCancellation)(this._getLocationModel(te,$.model,$.position,re.token),re.token).then(ge=>we(this,void 0,void 0,function*(){var ve;if(!ge||re.token.isCancellationRequested)return;(0,L.alert)(ge.ariaMessage);let Se;if(ge.referenceAt(z.uri,ee)){const De=this._getAlternativeCommand(Y);!R._activeAlternativeCommands.has(De)&&R._allSymbolNavigationCommands.has(De)&&(Se=R._allSymbolNavigationCommands.get(De))}const Le=ge.references.length;if(Le===0){if(!this.configuration.muteMessage){const De=z.getWordAtPosition(ee);(ve=c.MessageController.get(Y))===null||ve===void 0||ve.showMessage(this._getNoResultFoundMessage(De),ee)}}else if(Le===1&&Se)R._activeAlternativeCommands.add(this.desc.id),q.invokeFunction(De=>Se.runEditorCommand(De,Y,ie,ae).finally(()=>{R._activeAlternativeCommands.delete(this.desc.id)}));else return this._onResult(de,ue,Y,ge,ae)}),ge=>{ce.error(ge)}).finally(()=>{re.dispose()});return he.showWhile(oe,250),oe}_onResult(V,Y,ie,ae,ce){return we(this,void 0,void 0,function*(){const de=this._getGoToPreference(ie);if(!(ie instanceof s.EmbeddedCodeEditorWidget)&&(this.configuration.openInPeek||de===\"peek\"&&ae.references.length>1))this._openInPeek(ie,ae,ce);else{const he=ae.firstReference(),ue=ae.references.length>1&&de===\"gotoAndPeek\",te=yield this._openReference(ie,V,he,this.configuration.openToSide,!ue);ue&&te?this._openInPeek(te,ae,ce):ae.dispose(),de===\"goto\"&&Y.put(he)}})}_openReference(V,Y,ie,ae,ce){return we(this,void 0,void 0,function*(){let de;if((0,a.isLocationLink)(ie)&&(de=ie.targetSelectionRange),de||(de=ie.range),!de)return;const he=yield Y.openCodeEditor({resource:ie.uri,options:{selection:n.Range.collapseToStart(de),selectionRevealType:3,selectionSource:\"code.jump\"}},V,ae);if(he){if(ce){const ue=he.getModel(),te=he.createDecorationsCollection([{range:de,options:{description:\"symbol-navigate-action-highlight\",className:\"symbolHighlight\"}}]);setTimeout(()=>{he.getModel()===ue&&te.clear()},350)}return he}})}_openInPeek(V,Y,ie){const ae=u.ReferencesController.get(V);ae&&V.hasModel()?ae.toggleWidget(ie??V.getSelection(),(0,k.createCancelablePromise)(ce=>Promise.resolve(Y)),this.configuration.openInPeek):Y.dispose()}}e.SymbolNavigationAction=R,R._allSymbolNavigationCommands=new Map,R._activeAlternativeCommands=new Set;class K extends R{_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(yield(0,E.getDefinitionsAtPosition)(V.definitionProvider,Y,ie,ae),d.localize(1,null))})}_getNoResultFoundMessage(V){return V&&V.word?d.localize(2,null,V.word):d.localize(3,null)}_getAlternativeCommand(V){return V.getOption(57).alternativeDefinitionCommand}_getGoToPreference(V){return V.getOption(57).multipleDefinitions}}e.DefinitionAction=K,(0,l.registerAction2)((x=class extends K{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:x.id,title:{value:d.localize(4,null),original:\"Go to Definition\",mnemonicTitle:d.localize(5,null)},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasDefinitionProvider,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:[{when:t.EditorContextKeys.editorTextFocus,primary:70,weight:100},{when:m.ContextKeyExpr.and(t.EditorContextKeys.editorTextFocus,P.IsWebContext),primary:2118,weight:100}],menu:[{id:l.MenuId.EditorContext,group:\"navigation\",order:1.1},{id:l.MenuId.MenubarGoMenu,precondition:null,group:\"4_symbol_nav\",order:2}]}),p.CommandsRegistry.registerCommandAlias(\"editor.action.goToDeclaration\",x.id)}},x.id=\"editor.action.revealDefinition\",x)),(0,l.registerAction2)((T=class extends K{constructor(){super({openToSide:!0,openInPeek:!1,muteMessage:!1},{id:T.id,title:{value:d.localize(6,null),original:\"Open Definition to the Side\"},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasDefinitionProvider,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:[{when:t.EditorContextKeys.editorTextFocus,primary:(0,y.KeyChord)(2089,70),weight:100},{when:m.ContextKeyExpr.and(t.EditorContextKeys.editorTextFocus,P.IsWebContext),primary:(0,y.KeyChord)(2089,2118),weight:100}]}),p.CommandsRegistry.registerCommandAlias(\"editor.action.openDeclarationToTheSide\",T.id)}},T.id=\"editor.action.revealDefinitionAside\",T)),(0,l.registerAction2)((A=class extends K{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:A.id,title:{value:d.localize(7,null),original:\"Peek Definition\"},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasDefinitionProvider,o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:582,linux:{primary:3140},weight:100},menu:{id:l.MenuId.EditorContextPeek,group:\"peek\",order:2}}),p.CommandsRegistry.registerCommandAlias(\"editor.action.previewDeclaration\",A.id)}},A.id=\"editor.action.peekDefinition\",A));class G extends R{_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(yield(0,E.getDeclarationsAtPosition)(V.declarationProvider,Y,ie,ae),d.localize(8,null))})}_getNoResultFoundMessage(V){return V&&V.word?d.localize(9,null,V.word):d.localize(10,null)}_getAlternativeCommand(V){return V.getOption(57).alternativeDeclarationCommand}_getGoToPreference(V){return V.getOption(57).multipleDeclarations}}(0,l.registerAction2)((N=class extends G{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:N.id,title:{value:d.localize(11,null),original:\"Go to Declaration\",mnemonicTitle:d.localize(12,null)},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasDeclarationProvider,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),menu:[{id:l.MenuId.EditorContext,group:\"navigation\",order:1.3},{id:l.MenuId.MenubarGoMenu,precondition:null,group:\"4_symbol_nav\",order:3}]})}_getNoResultFoundMessage(V){return V&&V.word?d.localize(13,null,V.word):d.localize(14,null)}},N.id=\"editor.action.revealDeclaration\",N)),(0,l.registerAction2)(class extends G{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:\"editor.action.peekDeclaration\",title:{value:d.localize(15,null),original:\"Peek Declaration\"},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasDeclarationProvider,o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),menu:{id:l.MenuId.EditorContextPeek,group:\"peek\",order:3}})}});class Z extends R{_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(yield(0,E.getTypeDefinitionsAtPosition)(V.typeDefinitionProvider,Y,ie,ae),d.localize(16,null))})}_getNoResultFoundMessage(V){return V&&V.word?d.localize(17,null,V.word):d.localize(18,null)}_getAlternativeCommand(V){return V.getOption(57).alternativeTypeDefinitionCommand}_getGoToPreference(V){return V.getOption(57).multipleTypeDefinitions}}(0,l.registerAction2)((F=class extends Z{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:F.ID,title:{value:d.localize(19,null),original:\"Go to Type Definition\",mnemonicTitle:d.localize(20,null)},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasTypeDefinitionProvider,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:0,weight:100},menu:[{id:l.MenuId.EditorContext,group:\"navigation\",order:1.4},{id:l.MenuId.MenubarGoMenu,precondition:null,group:\"4_symbol_nav\",order:3}]})}},F.ID=\"editor.action.goToTypeDefinition\",F)),(0,l.registerAction2)((O=class extends Z{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:O.ID,title:{value:d.localize(21,null),original:\"Peek Type Definition\"},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasTypeDefinitionProvider,o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),menu:{id:l.MenuId.EditorContextPeek,group:\"peek\",order:4}})}},O.ID=\"editor.action.peekTypeDefinition\",O));class J extends R{_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(yield(0,E.getImplementationsAtPosition)(V.implementationProvider,Y,ie,ae),d.localize(22,null))})}_getNoResultFoundMessage(V){return V&&V.word?d.localize(23,null,V.word):d.localize(24,null)}_getAlternativeCommand(V){return V.getOption(57).alternativeImplementationCommand}_getGoToPreference(V){return V.getOption(57).multipleImplementations}}(0,l.registerAction2)((W=class extends J{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:W.ID,title:{value:d.localize(25,null),original:\"Go to Implementations\",mnemonicTitle:d.localize(26,null)},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasImplementationProvider,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:2118,weight:100},menu:[{id:l.MenuId.EditorContext,group:\"navigation\",order:1.45},{id:l.MenuId.MenubarGoMenu,precondition:null,group:\"4_symbol_nav\",order:4}]})}},W.ID=\"editor.action.goToImplementation\",W)),(0,l.registerAction2)((U=class extends J{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:U.ID,title:{value:d.localize(27,null),original:\"Peek Implementations\"},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasImplementationProvider,o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:3142,weight:100},menu:{id:l.MenuId.EditorContextPeek,group:\"peek\",order:5}})}},U.ID=\"editor.action.peekImplementation\",U));class X extends R{_getNoResultFoundMessage(V){return V?d.localize(28,null,V.word):d.localize(29,null)}_getAlternativeCommand(V){return V.getOption(57).alternativeReferenceCommand}_getGoToPreference(V){return V.getOption(57).multipleReferences}}(0,l.registerAction2)(class extends X{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:\"editor.action.goToReferences\",title:{value:d.localize(30,null),original:\"Go to References\",mnemonicTitle:d.localize(31,null)},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasReferenceProvider,o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),keybinding:{when:t.EditorContextKeys.editorTextFocus,primary:1094,weight:100},menu:[{id:l.MenuId.EditorContext,group:\"navigation\",order:1.45},{id:l.MenuId.MenubarGoMenu,precondition:null,group:\"4_symbol_nav\",order:5}]})}_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(yield(0,E.getReferencesAtPosition)(V.referenceProvider,Y,ie,!0,ae),d.localize(32,null))})}}),(0,l.registerAction2)(class extends X{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:\"editor.action.referenceSearch.trigger\",title:{value:d.localize(33,null),original:\"Peek References\"},precondition:m.ContextKeyExpr.and(t.EditorContextKeys.hasReferenceProvider,o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated()),menu:{id:l.MenuId.EditorContextPeek,group:\"peek\",order:6}})}_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(yield(0,E.getReferencesAtPosition)(V.referenceProvider,Y,ie,!1,ae),d.localize(34,null))})}});class H extends R{constructor(V,Y,ie){super(V,{id:\"editor.action.goToLocation\",title:{value:d.localize(35,null),original:\"Go to Any Symbol\"},precondition:m.ContextKeyExpr.and(o.PeekContext.notInPeekEditor,t.EditorContextKeys.isInWalkThroughSnippet.toNegated())}),this._references=Y,this._gotoMultipleBehaviour=ie}_getLocationModel(V,Y,ie,ae){return we(this,void 0,void 0,function*(){return new h.ReferencesModel(this._references,d.localize(36,null))})}_getNoResultFoundMessage(V){return V&&d.localize(37,null,V.word)||\"\"}_getGoToPreference(V){var Y;return(Y=this._gotoMultipleBehaviour)!==null&&Y!==void 0?Y:V.getOption(57).multipleReferences}_getAlternativeCommand(){return\"\"}}p.CommandsRegistry.registerCommand({id:\"editor.action.goToLocations\",description:{description:\"Go to locations from a position in a file\",args:[{name:\"uri\",description:\"The text document in which to start\",constraint:S.URI},{name:\"position\",description:\"The position at which to start\",constraint:i.Position.isIPosition},{name:\"locations\",description:\"An array of locations.\",constraint:Array},{name:\"multiple\",description:\"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto\"},{name:\"noResultsMessage\",description:\"Human readable message that shows when locations is empty.\"}]},handler:(B,V,Y,ie,ae,ce,de)=>we(void 0,void 0,void 0,function*(){(0,D.assertType)(S.URI.isUri(V)),(0,D.assertType)(i.Position.isIPosition(Y)),(0,D.assertType)(Array.isArray(ie)),(0,D.assertType)(typeof ae>\"u\"||typeof ae==\"string\"),(0,D.assertType)(typeof de>\"u\"||typeof de==\"boolean\");const he=B.get(C.ICodeEditorService),ue=yield he.openCodeEditor({resource:V},he.getFocusedCodeEditor());if((0,_.isCodeEditor)(ue))return ue.setPosition(Y),ue.revealPositionInCenterIfOutsideViewport(Y,0),ue.invokeWithinContext(te=>{const q=new class extends H{_getNoResultFoundMessage(z){return ce||super._getNoResultFoundMessage(z)}}({muteMessage:!ce,openInPeek:!!de,openToSide:!1},ie,ae);te.get(v.IInstantiationService).invokeFunction(q.run.bind(q),ue)})})}),p.CommandsRegistry.registerCommand({id:\"editor.action.peekLocations\",description:{description:\"Peek locations from a position in a file\",args:[{name:\"uri\",description:\"The text document in which to start\",constraint:S.URI},{name:\"position\",description:\"The position at which to start\",constraint:i.Position.isIPosition},{name:\"locations\",description:\"An array of locations.\",constraint:Array},{name:\"multiple\",description:\"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto\"}]},handler:(B,V,Y,ie,ae)=>we(void 0,void 0,void 0,function*(){B.get(p.ICommandService).executeCommand(\"editor.action.goToLocations\",V,Y,ie,ae,void 0,!0)})}),p.CommandsRegistry.registerCommand({id:\"editor.action.findReferences\",handler:(B,V,Y)=>{(0,D.assertType)(S.URI.isUri(V)),(0,D.assertType)(i.Position.isIPosition(Y));const ie=B.get(I.ILanguageFeaturesService),ae=B.get(C.ICodeEditorService);return ae.openCodeEditor({resource:V},ae.getFocusedCodeEditor()).then(ce=>{if(!(0,_.isCodeEditor)(ce)||!ce.hasModel())return;const de=u.ReferencesController.get(ce);if(!de)return;const he=(0,k.createCancelablePromise)(te=>(0,E.getReferencesAtPosition)(ie.referenceProvider,ce.getModel(),i.Position.lift(Y),!1,te).then(q=>new h.ReferencesModel(q,d.localize(38,null)))),ue=new n.Range(Y.lineNumber,Y.column,Y.lineNumber,Y.column);return Promise.resolve(de.toggleWidget(ue,he,!1))})}}),p.CommandsRegistry.registerCommandAlias(\"editor.action.showReferences\",\"editor.action.peekLocations\")}),define(ne[371],se([1,0,13,9,55,2,104,16,5,41,69,186,138,665,15,257,247,18,40,446]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){\"use strict\";var c;Object.defineProperty(e,\"__esModule\",{value:!0}),e.GotoDefinitionAtPositionEditorContribution=void 0;let o=c=class{constructor(l,p,m,v){this.textModelResolverService=p,this.languageService=m,this.languageFeaturesService=v,this.toUnhook=new D.DisposableStore,this.toUnhookForKeyboard=new D.DisposableStore,this.currentWordAtPosition=null,this.previousPromise=null,this.editor=l,this.linkDecorations=this.editor.createDecorationsCollection();const b=new s.ClickLinkGesture(l);this.toUnhook.add(b),this.toUnhook.add(b.onMouseMoveOrRelevantKeyDown(([w,E])=>{this.startFindDefinitionFromMouse(w,E??void 0)})),this.toUnhook.add(b.onExecute(w=>{this.isEnabled(w)&&this.gotoDefinition(w.target.position,w.hasSideBySideModifier).catch(E=>{(0,k.onUnexpectedError)(E)}).finally(()=>{this.removeLinkDecorations()})})),this.toUnhook.add(b.onCancel(()=>{this.removeLinkDecorations(),this.currentWordAtPosition=null}))}static get(l){return l.getContribution(c.ID)}startFindDefinitionFromCursor(l){return we(this,void 0,void 0,function*(){yield this.startFindDefinition(l),this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition(()=>{this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear()})),this.toUnhookForKeyboard.add(this.editor.onKeyDown(p=>{p&&(this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear())}))})}startFindDefinitionFromMouse(l,p){if(l.target.type===9&&this.linkDecorations.length>0)return;if(!this.editor.hasModel()||!this.isEnabled(l,p)){this.currentWordAtPosition=null,this.removeLinkDecorations();return}const m=l.target.position;this.startFindDefinition(m)}startFindDefinition(l){var p;return we(this,void 0,void 0,function*(){this.toUnhookForKeyboard.clear();const m=l?(p=this.editor.getModel())===null||p===void 0?void 0:p.getWordAtPosition(l):null;if(!m){this.currentWordAtPosition=null,this.removeLinkDecorations();return}if(this.currentWordAtPosition&&this.currentWordAtPosition.startColumn===m.startColumn&&this.currentWordAtPosition.endColumn===m.endColumn&&this.currentWordAtPosition.word===m.word)return;this.currentWordAtPosition=m;const v=new S.EditorState(this.editor,15);this.previousPromise&&(this.previousPromise.cancel(),this.previousPromise=null),this.previousPromise=(0,L.createCancelablePromise)(E=>this.findDefinition(l,E));let b;try{b=yield this.previousPromise}catch(E){(0,k.onUnexpectedError)(E);return}if(!b||!b.length||!v.validate(this.editor)){this.removeLinkDecorations();return}const w=b[0].originSelectionRange?_.Range.lift(b[0].originSelectionRange):new _.Range(l.lineNumber,m.startColumn,l.lineNumber,m.endColumn);if(b.length>1){let E=w;for(const{originSelectionRange:I}of b)I&&(E=_.Range.plusRange(E,I));this.addDecoration(E,new y.MarkdownString().appendText(n.localize(0,null,b.length)))}else{const E=b[0];if(!E.uri)return;this.textModelResolverService.createModelReference(E.uri).then(I=>{if(!I.object||!I.object.textEditorModel){I.dispose();return}const{object:{textEditorModel:M}}=I,{startLineNumber:P}=E.range;if(P<1||P>M.getLineCount()){I.dispose();return}const x=this.getPreviewValue(M,P,E),T=this.languageService.guessLanguageIdByFilepathOrFirstLine(M.uri);this.addDecoration(w,x?new y.MarkdownString().appendCodeblock(T||\"\",x):void 0),I.dispose()})}})}getPreviewValue(l,p,m){let v=m.range;return v.endLineNumber-v.startLineNumber>=c.MAX_SOURCE_PREVIEW_LINES&&(v=this.getPreviewRangeBasedOnIndentation(l,p)),this.stripIndentationFromPreviewRange(l,p,v)}stripIndentationFromPreviewRange(l,p,m){let b=l.getLineFirstNonWhitespaceColumn(p);for(let E=p+1;E<m.endLineNumber;E++){const I=l.getLineFirstNonWhitespaceColumn(E);b=Math.min(b,I)}return l.getValueInRange(m).replace(new RegExp(`^\\\\s{${b-1}}`,\"gm\"),\"\").trim()}getPreviewRangeBasedOnIndentation(l,p){const m=l.getLineFirstNonWhitespaceColumn(p),v=Math.min(l.getLineCount(),p+c.MAX_SOURCE_PREVIEW_LINES);let b=p+1;for(;b<v;b++){const w=l.getLineFirstNonWhitespaceColumn(b);if(m===w)break}return new _.Range(p,1,b+1,1)}addDecoration(l,p){const m={range:l,options:{description:\"goto-definition-link\",inlineClassName:\"goto-definition-link\",hoverMessage:p}};this.linkDecorations.set([m])}removeLinkDecorations(){this.linkDecorations.clear()}isEnabled(l,p){var m;return this.editor.hasModel()&&l.isLeftClick&&l.isNoneOrSingleMouseDown&&l.target.type===6&&!(((m=l.target.detail.injectedText)===null||m===void 0?void 0:m.options)instanceof r.ModelDecorationInjectedTextOptions)&&(l.hasTriggerModifier||(p?p.keyCodeIsTriggerKey:!1))&&this.languageFeaturesService.definitionProvider.has(this.editor.getModel())}findDefinition(l,p){const m=this.editor.getModel();return m?(0,u.getDefinitionsAtPosition)(this.languageFeaturesService.definitionProvider,m,l,p):Promise.resolve(null)}gotoDefinition(l,p){return this.editor.setPosition(l),this.editor.invokeWithinContext(m=>{const v=!p&&this.editor.getOption(86)&&!this.isInPeekEditor(m);return new a.DefinitionAction({openToSide:p,openInPeek:v,muteMessage:!0},{title:{value:\"\",original:\"\"},id:\"\",precondition:void 0}).run(m)})}isInPeekEditor(l){const p=l.get(t.IContextKeyService);return i.PeekContext.inPeekEditor.getValue(p)}dispose(){this.toUnhook.dispose(),this.toUnhookForKeyboard.dispose()}};e.GotoDefinitionAtPositionEditorContribution=o,o.ID=\"editor.contrib.gotodefinitionatposition\",o.MAX_SOURCE_PREVIEW_LINES=8,e.GotoDefinitionAtPositionEditorContribution=o=c=ke([fe(1,C.ITextModelService),fe(2,g.ILanguageService),fe(3,h.ILanguageFeaturesService)],o),(0,f.registerEditorContribution)(o.ID,o,2)}),define(ne[901],se([1,0,7,14,13,9,2,45,5,18,233,137,250,113,369,673,97,56,77]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MarkerHoverParticipant=e.MarkerHover=void 0;const c=L.$;class o{constructor(m,v,b){this.owner=m,this.range=v,this.marker=b}isValidForHoverAnchor(m){return m.type===1&&this.range.startColumn<=m.range.startColumn&&this.range.endColumn>=m.range.endColumn}}e.MarkerHover=o;const d={type:1,filter:{include:n.CodeActionKind.QuickFix},triggerAction:n.CodeActionTriggerSource.QuickFixHover};let l=class{constructor(m,v,b,w){this._editor=m,this._markerDecorationsService=v,this._openerService=b,this._languageFeaturesService=w,this.hoverOrdinal=1,this.recentMarkerCodeActionsInfo=void 0}computeSync(m,v){if(!this._editor.hasModel()||m.type!==1&&!m.supportsMarkerHover)return[];const b=this._editor.getModel(),w=m.range.startLineNumber,E=b.getLineMaxColumn(w),I=[];for(const M of v){const P=M.range.startLineNumber===w?M.range.startColumn:1,x=M.range.endLineNumber===w?M.range.endColumn:E,T=this._markerDecorationsService.getMarker(b.uri,M);if(!T)continue;const A=new _.Range(m.range.startLineNumber,P,m.range.startLineNumber,x);I.push(new o(this,A,T))}return I}renderHoverParts(m,v){if(!v.length)return S.Disposable.None;const b=new S.DisposableStore;v.forEach(E=>m.fragment.appendChild(this.renderMarkerHover(E,b)));const w=v.length===1?v[0]:v.sort((E,I)=>u.MarkerSeverity.compare(E.marker.severity,I.marker.severity))[0];return this.renderMarkerStatusbar(m,w,b),b}renderMarkerHover(m,v){const b=c(\"div.hover-row\"),w=L.append(b,c(\"div.marker.hover-contents\")),{source:E,message:I,code:M,relatedInformation:P}=m.marker;this._editor.applyFontInfo(w);const x=L.append(w,c(\"span\"));if(x.style.whiteSpace=\"pre-wrap\",x.innerText=I,E||M)if(M&&typeof M!=\"string\"){const T=c(\"span\");if(E){const O=L.append(T,c(\"span\"));O.innerText=E}const A=L.append(T,c(\"a.code-link\"));A.setAttribute(\"href\",M.target.toString()),v.add(L.addDisposableListener(A,\"click\",O=>{this._openerService.open(M.target,{allowCommands:!0}),O.preventDefault(),O.stopPropagation()}));const N=L.append(A,c(\"span\"));N.innerText=M.value;const F=L.append(w,T);F.style.opacity=\"0.6\",F.style.paddingLeft=\"6px\"}else{const T=L.append(w,c(\"span\"));T.style.opacity=\"0.6\",T.style.paddingLeft=\"6px\",T.innerText=E&&M?`${E}(${M})`:E||`(${M})`}if((0,k.isNonEmptyArray)(P))for(const{message:T,resource:A,startLineNumber:N,startColumn:F}of P){const O=L.append(w,c(\"div\"));O.style.marginTop=\"8px\";const W=L.append(O,c(\"a\"));W.innerText=`${(0,f.basename)(A)}(${N}, ${F}): `,W.style.cursor=\"pointer\",v.add(L.addDisposableListener(W,\"click\",j=>{j.stopPropagation(),j.preventDefault(),this._openerService&&this._openerService.open(A,{fromUserGesture:!0,editorOptions:{selection:{startLineNumber:N,startColumn:F}}}).catch(D.onUnexpectedError)}));const U=L.append(O,c(\"span\"));U.innerText=T,this._editor.applyFontInfo(U)}return b}renderMarkerStatusbar(m,v,b){if((v.marker.severity===u.MarkerSeverity.Error||v.marker.severity===u.MarkerSeverity.Warning||v.marker.severity===u.MarkerSeverity.Info)&&m.statusBar.addAction({label:a.localize(0,null),commandId:t.NextMarkerAction.ID,run:()=>{var w;m.hide(),(w=t.MarkerController.get(this._editor))===null||w===void 0||w.showAtMarker(v.marker),this._editor.focus()}}),!this._editor.getOption(89)){const w=m.statusBar.append(c(\"div\"));this.recentMarkerCodeActionsInfo&&(u.IMarkerData.makeKey(this.recentMarkerCodeActionsInfo.marker)===u.IMarkerData.makeKey(v.marker)?this.recentMarkerCodeActionsInfo.hasCodeActions||(w.textContent=a.localize(1,null)):this.recentMarkerCodeActionsInfo=void 0);const E=this.recentMarkerCodeActionsInfo&&!this.recentMarkerCodeActionsInfo.hasCodeActions?S.Disposable.None:b.add((0,y.disposableTimeout)(()=>w.textContent=a.localize(2,null),200));w.textContent||(w.textContent=String.fromCharCode(160));const I=this.getCodeActions(v.marker);b.add((0,S.toDisposable)(()=>I.cancel())),I.then(M=>{if(E.dispose(),this.recentMarkerCodeActionsInfo={marker:v.marker,hasCodeActions:M.validActions.length>0},!this.recentMarkerCodeActionsInfo.hasCodeActions){M.dispose(),w.textContent=a.localize(3,null);return}w.style.display=\"none\";let P=!1;b.add((0,S.toDisposable)(()=>{P||M.dispose()})),m.statusBar.addAction({label:a.localize(4,null),commandId:s.quickFixCommandId,run:x=>{P=!0;const T=i.CodeActionController.get(this._editor),A=L.getDomNodePagePosition(x);m.hide(),T?.showCodeActions(d,M,{x:A.left,y:A.top,width:A.width,height:A.height})}})},D.onUnexpectedError)}}getCodeActions(m){return(0,y.createCancelablePromise)(v=>(0,s.getCodeActions)(this._languageFeaturesService.codeActionProvider,this._editor.getModel(),new _.Range(m.startLineNumber,m.startColumn,m.endLineNumber,m.endColumn),d,r.Progress.None,v))}};e.MarkerHoverParticipant=l,e.MarkerHoverParticipant=l=ke([fe(1,C.IMarkerDecorationsService),fe(2,h.IOpenerService),fe(3,g.ILanguageFeaturesService)],l)}),define(ne[372],se([1,0,63,2,16,5,21,41,371,367,781,8,56,31,23,103,248,901,253,34,671,448]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o){\"use strict\";var d;Object.defineProperty(e,\"__esModule\",{value:!0}),e.ModesHoverController=void 0;const l=!1;let p=d=class{static get(N){return N.getContribution(d.ID)}constructor(N,F,O,W,U){this._editor=N,this._instantiationService=F,this._openerService=O,this._languageService=W,this._keybindingService=U,this._toUnhook=new k.DisposableStore,this._hoverActivatedByColorDecoratorClick=!1,this._isMouseDown=!1,this._hoverClicked=!1,this._contentWidget=null,this._glyphWidget=null,this._hookEvents(),this._didChangeConfigurationHandler=this._editor.onDidChangeConfiguration(j=>{j.hasChanged(59)&&(this._unhookEvents(),this._hookEvents())})}_hookEvents(){const N=()=>this._hideWidgets(),F=this._editor.getOption(59);this._isHoverEnabled=F.enabled,this._isHoverSticky=F.sticky,this._isHoverEnabled?(this._toUnhook.add(this._editor.onMouseDown(O=>this._onEditorMouseDown(O))),this._toUnhook.add(this._editor.onMouseUp(O=>this._onEditorMouseUp(O))),this._toUnhook.add(this._editor.onMouseMove(O=>this._onEditorMouseMove(O))),this._toUnhook.add(this._editor.onKeyDown(O=>this._onKeyDown(O)))):(this._toUnhook.add(this._editor.onMouseMove(O=>this._onEditorMouseMove(O))),this._toUnhook.add(this._editor.onKeyDown(O=>this._onKeyDown(O)))),this._toUnhook.add(this._editor.onMouseLeave(O=>this._onEditorMouseLeave(O))),this._toUnhook.add(this._editor.onDidChangeModel(N)),this._toUnhook.add(this._editor.onDidScrollChange(O=>this._onEditorScrollChanged(O)))}_unhookEvents(){this._toUnhook.clear()}_onEditorScrollChanged(N){(N.scrollTopChanged||N.scrollLeftChanged)&&this._hideWidgets()}_onEditorMouseDown(N){var F;this._isMouseDown=!0;const O=N.target;if(O.type===9&&O.detail===g.ContentHoverWidget.ID){this._hoverClicked=!0;return}O.type===12&&O.detail===C.MarginHoverWidget.ID||(O.type!==12&&(this._hoverClicked=!1),!((F=this._contentWidget)===null||F===void 0)&&F.widget.isResizing||this._hideWidgets())}_onEditorMouseUp(N){this._isMouseDown=!1}_onEditorMouseLeave(N){var F,O;const W=N.event.browserEvent.relatedTarget;!((F=this._contentWidget)===null||F===void 0)&&F.widget.isResizing||!((O=this._contentWidget)===null||O===void 0)&&O.containsNode(W)||l||this._hideWidgets()}_onEditorMouseMove(N){var F,O,W,U,j,R,K,G,Z,J,X;const H=N.target;if(!((F=this._contentWidget)===null||F===void 0)&&F.isFocused||!((O=this._contentWidget)===null||O===void 0)&&O.isResizing||this._isMouseDown&&this._hoverClicked||this._isHoverSticky&&H.type===9&&H.detail===g.ContentHoverWidget.ID||this._isHoverSticky&&(!((W=this._contentWidget)===null||W===void 0)&&W.containsNode((U=N.event.browserEvent.view)===null||U===void 0?void 0:U.document.activeElement))&&!(!((R=(j=N.event.browserEvent.view)===null||j===void 0?void 0:j.getSelection())===null||R===void 0)&&R.isCollapsed)||!this._isHoverSticky&&H.type===9&&H.detail===g.ContentHoverWidget.ID&&(!((K=this._contentWidget)===null||K===void 0)&&K.isColorPickerVisible)||this._isHoverSticky&&H.type===12&&H.detail===C.MarginHoverWidget.ID||this._isHoverSticky&&(!((G=this._contentWidget)===null||G===void 0)&&G.isVisibleFromKeyboard))return;const B=(Z=H.element)===null||Z===void 0?void 0:Z.classList.contains(\"colorpicker-color-decoration\"),V=this._editor.getOption(145);if(B&&(V===\"click\"&&!this._hoverActivatedByColorDecoratorClick||V===\"hover\"&&!this._isHoverEnabled&&!l||V===\"clickAndHover\"&&!this._isHoverEnabled&&!this._hoverActivatedByColorDecoratorClick)||!B&&!this._isHoverEnabled&&!this._hoverActivatedByColorDecoratorClick){this._hideWidgets();return}if(this._getOrCreateContentWidget().maybeShowAt(N)){(J=this._glyphWidget)===null||J===void 0||J.hide();return}if(H.type===2&&H.position){(X=this._contentWidget)===null||X===void 0||X.hide(),this._glyphWidget||(this._glyphWidget=new C.MarginHoverWidget(this._editor,this._languageService,this._openerService)),this._glyphWidget.startShowingAt(H.position.lineNumber);return}l||this._hideWidgets()}_onKeyDown(N){var F;if(!this._editor.hasModel())return;const O=this._keybindingService.softDispatch(N,this._editor.getDomNode()),W=O.kind===1||O.kind===2&&O.commandId===\"editor.action.showHover\"&&((F=this._contentWidget)===null||F===void 0?void 0:F.isVisible);N.keyCode!==5&&N.keyCode!==6&&N.keyCode!==57&&N.keyCode!==4&&!W&&this._hideWidgets()}_hideWidgets(){var N,F,O;l||this._isMouseDown&&this._hoverClicked&&(!((N=this._contentWidget)===null||N===void 0)&&N.isColorPickerVisible)||r.InlineSuggestionHintsContentWidget.dropDownVisible||(this._hoverActivatedByColorDecoratorClick=!1,this._hoverClicked=!1,(F=this._glyphWidget)===null||F===void 0||F.hide(),(O=this._contentWidget)===null||O===void 0||O.hide())}_getOrCreateContentWidget(){return this._contentWidget||(this._contentWidget=this._instantiationService.createInstance(g.ContentHoverController,this._editor)),this._contentWidget}showContentHover(N,F,O,W,U=!1){this._hoverActivatedByColorDecoratorClick=U,this._getOrCreateContentWidget().startShowingAtRange(N,F,O,W)}focus(){var N;(N=this._contentWidget)===null||N===void 0||N.focus()}scrollUp(){var N;(N=this._contentWidget)===null||N===void 0||N.scrollUp()}scrollDown(){var N;(N=this._contentWidget)===null||N===void 0||N.scrollDown()}scrollLeft(){var N;(N=this._contentWidget)===null||N===void 0||N.scrollLeft()}scrollRight(){var N;(N=this._contentWidget)===null||N===void 0||N.scrollRight()}pageUp(){var N;(N=this._contentWidget)===null||N===void 0||N.pageUp()}pageDown(){var N;(N=this._contentWidget)===null||N===void 0||N.pageDown()}goToTop(){var N;(N=this._contentWidget)===null||N===void 0||N.goToTop()}goToBottom(){var N;(N=this._contentWidget)===null||N===void 0||N.goToBottom()}get isColorPickerVisible(){var N;return(N=this._contentWidget)===null||N===void 0?void 0:N.isColorPickerVisible}get isHoverVisible(){var N;return(N=this._contentWidget)===null||N===void 0?void 0:N.isVisible}dispose(){var N,F;this._unhookEvents(),this._toUnhook.dispose(),this._didChangeConfigurationHandler.dispose(),(N=this._glyphWidget)===null||N===void 0||N.dispose(),(F=this._contentWidget)===null||F===void 0||F.dispose()}};e.ModesHoverController=p,p.ID=\"editor.contrib.hover\",e.ModesHoverController=p=d=ke([fe(1,s.IInstantiationService),fe(2,i.IOpenerService),fe(3,f.ILanguageService),fe(4,c.IKeybindingService)],p);class m extends y.EditorAction{constructor(){super({id:\"editor.action.showHover\",label:o.localize(0,null),description:{description:\"Show or Focus Hover\",args:[{name:\"args\",schema:{type:\"object\",properties:{focus:{description:\"Controls if when triggered with the keyboard, the hover should take focus immediately.\",type:\"boolean\",default:!1}}}}]},alias:\"Show or Focus Hover\",precondition:void 0,kbOpts:{kbExpr:S.EditorContextKeys.editorTextFocus,primary:(0,L.KeyChord)(2089,2087),weight:100}})}run(N,F,O){if(!F.hasModel())return;const W=p.get(F);if(!W)return;const U=F.getPosition(),j=new D.Range(U.lineNumber,U.column,U.lineNumber,U.column),R=F.getOption(2)===2||!!O?.focus;W.isHoverVisible?W.focus():W.showContentHover(j,1,1,R)}}class v extends y.EditorAction{constructor(){super({id:\"editor.action.showDefinitionPreviewHover\",label:o.localize(1,null),alias:\"Show Definition Preview Hover\",precondition:void 0})}run(N,F){const O=p.get(F);if(!O)return;const W=F.getPosition();if(!W)return;const U=new D.Range(W.lineNumber,W.column,W.lineNumber,W.column),j=_.GotoDefinitionAtPositionEditorContribution.get(F);if(!j)return;j.startFindDefinitionFromCursor(W).then(()=>{O.showContentHover(U,1,1,!0)})}}class b extends y.EditorAction{constructor(){super({id:\"editor.action.scrollUpHover\",label:o.localize(2,null),alias:\"Scroll Up Hover\",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:16,weight:100}})}run(N,F){const O=p.get(F);O&&O.scrollUp()}}class w extends y.EditorAction{constructor(){super({id:\"editor.action.scrollDownHover\",label:o.localize(3,null),alias:\"Scroll Down Hover\",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:18,weight:100}})}run(N,F){const O=p.get(F);O&&O.scrollDown()}}class E extends y.EditorAction{constructor(){super({id:\"editor.action.scrollLeftHover\",label:o.localize(4,null),alias:\"Scroll Left Hover\",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:15,weight:100}})}run(N,F){const O=p.get(F);O&&O.scrollLeft()}}class I extends y.EditorAction{constructor(){super({id:\"editor.action.scrollRightHover\",label:o.localize(5,null),alias:\"Scroll Right Hover\",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:17,weight:100}})}run(N,F){const O=p.get(F);O&&O.scrollRight()}}class M extends y.EditorAction{constructor(){super({id:\"editor.action.pageUpHover\",label:o.localize(6,null),alias:\"Page Up Hover\",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:11,secondary:[528],weight:100}})}run(N,F){const O=p.get(F);O&&O.pageUp()}}class P extends y.EditorAction{constructor(){super({id:\"editor.action.pageDownHover\",label:o.localize(7,null),alias:\"Page Down Hover\",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:12,secondary:[530],weight:100}})}run(N,F){const O=p.get(F);O&&O.pageDown()}}class x extends y.EditorAction{constructor(){super({id:\"editor.action.goToTopHover\",label:o.localize(8,null),alias:\"Go To Bottom Hover\",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:14,secondary:[2064],weight:100}})}run(N,F){const O=p.get(F);O&&O.goToTop()}}class T extends y.EditorAction{constructor(){super({id:\"editor.action.goToBottomHover\",label:o.localize(9,null),alias:\"Go To Bottom Hover\",precondition:S.EditorContextKeys.hoverFocused,kbOpts:{kbExpr:S.EditorContextKeys.hoverFocused,primary:13,secondary:[2066],weight:100}})}run(N,F){const O=p.get(F);O&&O.goToBottom()}}(0,y.registerEditorContribution)(p.ID,p,2),(0,y.registerEditorAction)(m),(0,y.registerEditorAction)(v),(0,y.registerEditorAction)(b),(0,y.registerEditorAction)(w),(0,y.registerEditorAction)(E),(0,y.registerEditorAction)(I),(0,y.registerEditorAction)(M),(0,y.registerEditorAction)(P),(0,y.registerEditorAction)(x),(0,y.registerEditorAction)(T),a.HoverParticipantRegistry.register(u.MarkdownHoverParticipant),a.HoverParticipantRegistry.register(h.MarkerHoverParticipant),(0,t.registerThemingParticipant)((A,N)=>{const F=A.getColor(n.editorHoverBorder);F&&(N.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${F.transparent(.5)}; }`),N.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${F.transparent(.5)}; }`),N.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${F.transparent(.5)}; }`))})}),define(ne[902],se([1,0,2,16,5,363,364,372,103]),function(Q,e,L,k,y,D,S,f,_){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ColorContribution=void 0;class g extends L.Disposable{constructor(s){super(),this._editor=s,this._register(s.onMouseDown(i=>this.onMouseDown(i)))}dispose(){super.dispose()}onMouseDown(s){const i=this._editor.getOption(145);if(i!==\"click\"&&i!==\"clickAndHover\")return;const n=s.target;if(n.type!==6||!n.detail.injectedText||n.detail.injectedText.options.attachedData!==D.ColorDecorationInjectedTextMarker||!n.range)return;const t=this._editor.getContribution(f.ModesHoverController.ID);if(t&&!t.isColorPickerVisible){const a=new y.Range(n.range.startLineNumber,n.range.startColumn+1,n.range.endLineNumber,n.range.endColumn+1);t.showContentHover(a,1,0,!1,!0)}}}e.ColorContribution=g,g.ID=\"editor.contrib.colorContribution\",(0,k.registerEditorContribution)(g.ID,g,2),_.HoverParticipantRegistry.register(S.ColorHoverParticipant)}),define(ne[373],se([1,0,7,39,19,170,5,69,257,138,30,27,15,57,8,43]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.goToDefinitionWithLocation=e.showGoToContextMenu=void 0;function u(r,c,o,d){var l;return we(this,void 0,void 0,function*(){const p=r.get(f.ITextModelService),m=r.get(n.IContextMenuService),v=r.get(s.ICommandService),b=r.get(t.IInstantiationService),w=r.get(a.INotificationService);if(yield d.item.resolve(y.CancellationToken.None),!d.part.location)return;const E=d.part.location,I=[],M=new Set(C.MenuRegistry.getMenuItems(C.MenuId.EditorContext).map(x=>(0,C.isIMenuItem)(x)?x.command.id:(0,D.generateUuid)()));for(const x of _.SymbolNavigationAction.all())M.has(x.desc.id)&&I.push(new k.Action(x.desc.id,C.MenuItemAction.label(x.desc,{renderShortTitle:!0}),void 0,!0,()=>we(this,void 0,void 0,function*(){const T=yield p.createModelReference(E.uri);try{const A=new _.SymbolNavigationAnchor(T.object.textEditorModel,S.Range.getStartPosition(E.range)),N=d.item.anchor.range;yield b.invokeFunction(x.runEditorCommand.bind(x),c,A,N)}finally{T.dispose()}})));if(d.part.command){const{command:x}=d.part;I.push(new k.Separator),I.push(new k.Action(x.id,x.title,void 0,!0,()=>we(this,void 0,void 0,function*(){var T;try{yield v.executeCommand(x.id,...(T=x.arguments)!==null&&T!==void 0?T:[])}catch(A){w.notify({severity:a.Severity.Error,source:d.item.provider.displayName,message:A})}})))}const P=c.getOption(125);m.showContextMenu({domForShadowRoot:P&&(l=c.getDomNode())!==null&&l!==void 0?l:void 0,getAnchor:()=>{const x=L.getDomNodePagePosition(o);return{x:x.left,y:x.top+x.height+8}},getActions:()=>I,onHide:()=>{c.focus()},autoSelectFirstItem:!0})})}e.showGoToContextMenu=u;function h(r,c,o,d){return we(this,void 0,void 0,function*(){const p=yield r.get(f.ITextModelService).createModelReference(d.uri);yield o.invokeWithinContext(m=>we(this,void 0,void 0,function*(){const v=c.hasSideBySideModifier,b=m.get(i.IContextKeyService),w=g.PeekContext.inPeekEditor.getValue(b),E=!v&&o.getOption(86)&&!w;return new _.DefinitionAction({openToSide:v,openInPeek:E,muteMessage:!0},{title:{value:\"\",original:\"\"},id:\"\",precondition:void 0}).run(m,new _.SymbolNavigationAnchor(p.object.textEditorModel,S.Range.getStartPosition(d.range)),S.Range.lift(d.range))})),p.dispose()})}e.goToDefinitionWithLocation=h}),define(ne[374],se([1,0,7,14,13,19,9,2,65,20,22,159,108,36,73,5,29,48,40,76,18,69,186,322,373,27,50,8,43,31,23]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M){\"use strict\";var P;Object.defineProperty(e,\"__esModule\",{value:!0}),e.InlayHintsController=e.RenderedInlayHintLabelPart=void 0;class x{constructor(){this._entries=new _.LRUCache(50)}get(U){const j=x._key(U);return this._entries.get(j)}set(U,j){const R=x._key(U);this._entries.set(R,j)}static _key(U){return`${U.uri.toString()}/${U.getVersionId()}`}}const T=(0,w.createDecorator)(\"IInlayHintsCache\");(0,b.registerSingleton)(T,x,1);class A{constructor(U,j){this.item=U,this.index=j}get part(){const U=this.item.hint.label;return typeof U==\"string\"?{label:U}:U[this.index]}}e.RenderedInlayHintLabelPart=A;class N{constructor(U,j){this.part=U,this.hasTriggerModifier=j}}let F=P=class{static get(U){var j;return(j=U.getContribution(P.ID))!==null&&j!==void 0?j:void 0}constructor(U,j,R,K,G,Z,J){this._editor=U,this._languageFeaturesService=j,this._inlayHintsCache=K,this._commandService=G,this._notificationService=Z,this._instaService=J,this._disposables=new f.DisposableStore,this._sessionDisposables=new f.DisposableStore,this._decorationsMetadata=new Map,this._ruleFactory=new s.DynamicCssRules(this._editor),this._activeRenderMode=0,this._debounceInfo=R.for(j.inlayHintsProvider,\"InlayHint\",{min:25}),this._disposables.add(j.inlayHintsProvider.onDidChange(()=>this._update())),this._disposables.add(U.onDidChangeModel(()=>this._update())),this._disposables.add(U.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(U.onDidChangeConfiguration(X=>{X.hasChanged(138)&&this._update()})),this._update()}dispose(){this._sessionDisposables.dispose(),this._removeAllDecorations(),this._disposables.dispose()}_update(){this._sessionDisposables.clear(),this._removeAllDecorations();const U=this._editor.getOption(138);if(U.enabled===\"off\")return;const j=this._editor.getModel();if(!j||!this._languageFeaturesService.inlayHintsProvider.has(j))return;const R=this._inlayHintsCache.get(j);R&&this._updateHintsDecorators([j.getFullModelRange()],R),this._sessionDisposables.add((0,f.toDisposable)(()=>{j.isDisposed()||this._cacheHintsForFastRestore(j)}));let K;const G=new Set,Z=new y.RunOnceScheduler(()=>we(this,void 0,void 0,function*(){const J=Date.now();K?.dispose(!0),K=new D.CancellationTokenSource;const X=j.onWillDispose(()=>K?.cancel());try{const H=K.token,B=yield p.InlayHintsFragments.create(this._languageFeaturesService.inlayHintsProvider,j,this._getHintsRanges(),H);if(Z.delay=this._debounceInfo.update(j,Date.now()-J),H.isCancellationRequested){B.dispose();return}for(const V of B.provider)typeof V.onDidChangeInlayHints==\"function\"&&!G.has(V)&&(G.add(V),this._sessionDisposables.add(V.onDidChangeInlayHints(()=>{Z.isScheduled()||Z.schedule()})));this._sessionDisposables.add(B),this._updateHintsDecorators(B.ranges,B.items),this._cacheHintsForFastRestore(j)}catch(H){(0,S.onUnexpectedError)(H)}finally{K.dispose(),X.dispose()}}),this._debounceInfo.get(j));if(this._sessionDisposables.add(Z),this._sessionDisposables.add((0,f.toDisposable)(()=>K?.dispose(!0))),Z.schedule(0),this._sessionDisposables.add(this._editor.onDidScrollChange(J=>{(J.scrollTopChanged||!Z.isScheduled())&&Z.schedule()})),this._sessionDisposables.add(this._editor.onDidChangeModelContent(J=>{const X=Math.max(Z.delay,1250);Z.schedule(X)})),U.enabled===\"on\")this._activeRenderMode=0;else{let J,X;U.enabled===\"onUnlessPressed\"?(J=0,X=1):(J=1,X=0),this._activeRenderMode=J,this._sessionDisposables.add(L.ModifierKeyEmitter.getInstance().event(H=>{if(!this._editor.hasModel())return;const B=H.altKey&&H.ctrlKey&&!(H.shiftKey||H.metaKey)?X:J;if(B!==this._activeRenderMode){this._activeRenderMode=B;const V=this._editor.getModel(),Y=this._copyInlayHintsWithCurrentAnchor(V);this._updateHintsDecorators([V.getFullModelRange()],Y),Z.schedule(0)}}))}this._sessionDisposables.add(this._installDblClickGesture(()=>Z.schedule(0))),this._sessionDisposables.add(this._installLinkGesture()),this._sessionDisposables.add(this._installContextMenu())}_installLinkGesture(){const U=new f.DisposableStore,j=U.add(new l.ClickLinkGesture(this._editor)),R=new f.DisposableStore;return U.add(R),U.add(j.onMouseMoveOrRelevantKeyDown(K=>{const[G]=K,Z=this._getInlayHintLabelPart(G),J=this._editor.getModel();if(!Z||!J){R.clear();return}const X=new D.CancellationTokenSource;R.add((0,f.toDisposable)(()=>X.dispose(!0))),Z.item.resolve(X.token),this._activeInlayHintPart=Z.part.command||Z.part.location?new N(Z,G.hasTriggerModifier):void 0;const H=J.validatePosition(Z.item.hint.position).lineNumber,B=new a.Range(H,1,H,J.getLineMaxColumn(H)),V=this._getInlineHintsForRange(B);this._updateHintsDecorators([B],V),R.add((0,f.toDisposable)(()=>{this._activeInlayHintPart=void 0,this._updateHintsDecorators([B],V)}))})),U.add(j.onCancel(()=>R.clear())),U.add(j.onExecute(K=>we(this,void 0,void 0,function*(){const G=this._getInlayHintLabelPart(K);if(G){const Z=G.part;Z.location?this._instaService.invokeFunction(m.goToDefinitionWithLocation,K,this._editor,Z.location):u.Command.is(Z.command)&&(yield this._invokeCommand(Z.command,G.item))}}))),U}_getInlineHintsForRange(U){const j=new Set;for(const R of this._decorationsMetadata.values())U.containsRange(R.item.anchor.range)&&j.add(R.item);return Array.from(j)}_installDblClickGesture(U){return this._editor.onMouseUp(j=>we(this,void 0,void 0,function*(){if(j.event.detail!==2)return;const R=this._getInlayHintLabelPart(j);if(R&&(j.event.preventDefault(),yield R.item.resolve(D.CancellationToken.None),(0,k.isNonEmptyArray)(R.item.hint.textEdits))){const K=R.item.hint.textEdits.map(G=>t.EditOperation.replace(a.Range.lift(G.range),G.text));this._editor.executeEdits(\"inlayHint.default\",K),U()}}))}_installContextMenu(){return this._editor.onContextMenu(U=>we(this,void 0,void 0,function*(){if(!(U.event.target instanceof HTMLElement))return;const j=this._getInlayHintLabelPart(U);j&&(yield this._instaService.invokeFunction(m.showGoToContextMenu,this._editor,U.event.target,j))}))}_getInlayHintLabelPart(U){var j;if(U.target.type!==6)return;const R=(j=U.target.detail.injectedText)===null||j===void 0?void 0:j.options;if(R instanceof r.ModelDecorationInjectedTextOptions&&R?.attachedData instanceof A)return R.attachedData}_invokeCommand(U,j){var R;return we(this,void 0,void 0,function*(){try{yield this._commandService.executeCommand(U.id,...(R=U.arguments)!==null&&R!==void 0?R:[])}catch(K){this._notificationService.notify({severity:E.Severity.Error,source:j.provider.displayName,message:K})}})}_cacheHintsForFastRestore(U){const j=this._copyInlayHintsWithCurrentAnchor(U);this._inlayHintsCache.set(U,j)}_copyInlayHintsWithCurrentAnchor(U){const j=new Map;for(const[R,K]of this._decorationsMetadata){if(j.has(K.item))continue;const G=U.getDecorationRange(R);if(G){const Z=new p.InlayHintAnchor(G,K.item.anchor.direction),J=K.item.with({anchor:Z});j.set(K.item,J)}}return Array.from(j.values())}_getHintsRanges(){const j=this._editor.getModel(),R=this._editor.getVisibleRangesPlusViewportAboveBelow(),K=[];for(const G of R.sort(a.Range.compareRangesUsingStarts)){const Z=j.validateRange(new a.Range(G.startLineNumber-30,G.startColumn,G.endLineNumber+30,G.endColumn));K.length===0||!a.Range.areIntersectingOrTouching(K[K.length-1],Z)?K.push(Z):K[K.length-1]=a.Range.plusRange(K[K.length-1],Z)}return K}_updateHintsDecorators(U,j){var R,K;const G=[],Z=(ce,de,he,ue,te)=>{const q={content:he,inlineClassNameAffectsLetterSpacing:!0,inlineClassName:de.className,cursorStops:ue,attachedData:te};G.push({item:ce,classNameRef:de,decoration:{range:ce.anchor.range,options:{description:\"InlayHint\",showIfCollapsed:ce.anchor.range.isEmpty(),collapseOnReplaceEdit:!ce.anchor.range.isEmpty(),stickiness:0,[ce.anchor.direction]:this._activeRenderMode===0?q:void 0}}})},J=(ce,de)=>{const he=this._ruleFactory.createClassNameRef({width:`${X/3|0}px`,display:\"inline-block\"});Z(ce,he,\"\\u200A\",de?h.InjectedTextCursorStops.Right:h.InjectedTextCursorStops.None)},{fontSize:X,fontFamily:H,padding:B,isUniform:V}=this._getLayoutInfo(),Y=\"--code-editorInlayHintsFontFamily\";this._editor.getContainerDomNode().style.setProperty(Y,H);for(const ce of j){ce.hint.paddingLeft&&J(ce,!1);const de=typeof ce.hint.label==\"string\"?[{label:ce.hint.label}]:ce.hint.label;for(let he=0;he<de.length;he++){const ue=de[he],te=he===0,q=he===de.length-1,z={fontSize:`${X}px`,fontFamily:`var(${Y}), ${n.EDITOR_FONT_DEFAULTS.fontFamily}`,verticalAlign:V?\"baseline\":\"middle\",unicodeBidi:\"isolate\"};(0,k.isNonEmptyArray)(ce.hint.textEdits)&&(z.cursor=\"default\"),this._fillInColors(z,ce.hint),(ue.command||ue.location)&&((R=this._activeInlayHintPart)===null||R===void 0?void 0:R.part.item)===ce&&this._activeInlayHintPart.part.index===he&&(z.textDecoration=\"underline\",this._activeInlayHintPart.hasTriggerModifier&&(z.color=(0,M.themeColorFromId)(I.editorActiveLinkForeground),z.cursor=\"pointer\")),B&&(te&&q?(z.padding=`1px ${Math.max(1,X/4)|0}px`,z.borderRadius=`${X/4|0}px`):te?(z.padding=`1px 0 1px ${Math.max(1,X/4)|0}px`,z.borderRadius=`${X/4|0}px 0 0 ${X/4|0}px`):q?(z.padding=`1px ${Math.max(1,X/4)|0}px 1px 0`,z.borderRadius=`0 ${X/4|0}px ${X/4|0}px 0`):z.padding=\"1px 0 1px 0\"),Z(ce,this._ruleFactory.createClassNameRef(z),O(ue.label),q&&!ce.hint.paddingRight?h.InjectedTextCursorStops.Right:h.InjectedTextCursorStops.None,new A(ce,he))}if(ce.hint.paddingRight&&J(ce,!0),G.length>P._MAX_DECORATORS)break}const ie=[];for(const ce of U)for(const{id:de}of(K=this._editor.getDecorationsInRange(ce))!==null&&K!==void 0?K:[]){const he=this._decorationsMetadata.get(de);he&&(ie.push(de),he.classNameRef.dispose(),this._decorationsMetadata.delete(de))}const ae=i.StableEditorScrollState.capture(this._editor);this._editor.changeDecorations(ce=>{const de=ce.deltaDecorations(ie,G.map(he=>he.decoration));for(let he=0;he<de.length;he++){const ue=G[he];this._decorationsMetadata.set(de[he],ue)}}),ae.restore(this._editor)}_fillInColors(U,j){j.kind===u.InlayHintKind.Parameter?(U.backgroundColor=(0,M.themeColorFromId)(I.editorInlayHintParameterBackground),U.color=(0,M.themeColorFromId)(I.editorInlayHintParameterForeground)):j.kind===u.InlayHintKind.Type?(U.backgroundColor=(0,M.themeColorFromId)(I.editorInlayHintTypeBackground),U.color=(0,M.themeColorFromId)(I.editorInlayHintTypeForeground)):(U.backgroundColor=(0,M.themeColorFromId)(I.editorInlayHintBackground),U.color=(0,M.themeColorFromId)(I.editorInlayHintForeground))}_getLayoutInfo(){const U=this._editor.getOption(138),j=U.padding,R=this._editor.getOption(51),K=this._editor.getOption(48);let G=U.fontSize;(!G||G<5||G>R)&&(G=R);const Z=U.fontFamily||K;return{fontSize:G,fontFamily:Z,padding:j,isUniform:!j&&Z===K&&G===R}}_removeAllDecorations(){this._editor.removeDecorations(Array.from(this._decorationsMetadata.keys()));for(const U of this._decorationsMetadata.values())U.classNameRef.dispose();this._decorationsMetadata.clear()}};e.InlayHintsController=F,F.ID=\"editor.contrib.InlayHints\",F._MAX_DECORATORS=1500,e.InlayHintsController=F=P=ke([fe(1,o.ILanguageFeaturesService),fe(2,c.ILanguageFeatureDebounceService),fe(3,T),fe(4,v.ICommandService),fe(5,E.INotificationService),fe(6,w.IInstantiationService)],F);function O(W){const U=\"\\xA0\";return W.replace(/[ \\t]/g,U)}v.CommandsRegistry.registerCommand(\"_executeInlayHintProvider\",(W,...U)=>we(void 0,void 0,void 0,function*(){const[j,R]=U;(0,g.assertType)(C.URI.isUri(j)),(0,g.assertType)(a.Range.isIRange(R));const{inlayHintsProvider:K}=W.get(o.ILanguageFeaturesService),G=yield W.get(d.ITextModelService).createModelReference(j);try{const Z=yield p.InlayHintsFragments.create(K,G.object.textEditorModel,[a.Range.lift(R)],D.CancellationToken.None),J=Z.items.map(X=>X.hint);return setTimeout(()=>Z.dispose(),0),J}finally{G.dispose()}}))});var Lt=this&&this.__asyncValues||function(Q){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e=Q[Symbol.asyncIterator],L;return e?e.call(Q):(Q=typeof __values==\"function\"?__values(Q):Q[Symbol.iterator](),L={},k(\"next\"),k(\"throw\"),k(\"return\"),L[Symbol.asyncIterator]=function(){return this},L);function k(D){L[D]=Q[D]&&function(S){return new Promise(function(f,_){S=Q[D](S),y(f,_,S.done,S.value)})}}function y(D,S,f,_){Promise.resolve(_).then(function(g){D({value:g,done:f})},S)}};define(ne[903],se([1,0,13,55,12,40,103,41,69,352,248,374,28,56,18,676,17,322,14]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InlayHintsHover=void 0;class c extends S.HoverForeignElementAnchor{constructor(l,p,m,v){super(10,p,l.item.anchor.range,m,v,!0),this.part=l}}let o=class extends C.MarkdownHoverParticipant{constructor(l,p,m,v,b,w){super(l,p,m,v,w),this._resolverService=b,this.hoverOrdinal=6}suggestHoverAnchor(l){var p;if(!s.InlayHintsController.get(this._editor)||l.target.type!==6)return null;const v=(p=l.target.detail.injectedText)===null||p===void 0?void 0:p.options;return v instanceof D.ModelDecorationInjectedTextOptions&&v.attachedData instanceof s.RenderedInlayHintLabelPart?new c(v.attachedData,this,l.event.posx,l.event.posy):null}computeSync(){return[]}computeAsync(l,p,m){return l instanceof c?new L.AsyncIterableObject(v=>we(this,void 0,void 0,function*(){var b,w,E,I;const{part:M}=l;if(yield M.item.resolve(m),m.isCancellationRequested)return;let P;typeof M.item.hint.tooltip==\"string\"?P=new k.MarkdownString().appendText(M.item.hint.tooltip):M.item.hint.tooltip&&(P=M.item.hint.tooltip),P&&v.emitOne(new C.MarkdownHover(this,l.range,[P],!1,0)),(0,r.isNonEmptyArray)(M.item.hint.textEdits)&&v.emitOne(new C.MarkdownHover(this,l.range,[new k.MarkdownString().appendText((0,a.localize)(0,null))],!1,10001));let x;if(typeof M.part.tooltip==\"string\"?x=new k.MarkdownString().appendText(M.part.tooltip):M.part.tooltip&&(x=M.part.tooltip),x&&v.emitOne(new C.MarkdownHover(this,l.range,[x],!1,1)),M.part.location||M.part.command){let O;const U=this._editor.getOption(76)===\"altKey\"?u.isMacintosh?(0,a.localize)(1,null):(0,a.localize)(2,null):u.isMacintosh?(0,a.localize)(3,null):(0,a.localize)(4,null);M.part.location&&M.part.command?O=new k.MarkdownString().appendText((0,a.localize)(5,null,U)):M.part.location?O=new k.MarkdownString().appendText((0,a.localize)(6,null,U)):M.part.command&&(O=new k.MarkdownString(`[${(0,a.localize)(7,null)}](${(0,h.asCommandLink)(M.part.command)} \"${M.part.command.title}\") (${U})`,{isTrusted:!0})),O&&v.emitOne(new C.MarkdownHover(this,l.range,[O],!1,1e4))}const T=yield this._resolveInlayHintLabelPartHover(M,m);try{for(var A=!0,N=Lt(T),F;F=yield N.next(),b=F.done,!b;A=!0){I=F.value,A=!1;const O=I;v.emitOne(O)}}catch(O){w={error:O}}finally{try{!A&&!b&&(E=N.return)&&(yield E.call(N))}finally{if(w)throw w.error}}})):L.AsyncIterableObject.EMPTY}_resolveInlayHintLabelPartHover(l,p){return we(this,void 0,void 0,function*(){if(!l.part.location)return L.AsyncIterableObject.EMPTY;const{uri:m,range:v}=l.part.location,b=yield this._resolverService.createModelReference(m);try{const w=b.object.textEditorModel;return this._languageFeaturesService.hoverProvider.has(w)?(0,g.getHover)(this._languageFeaturesService.hoverProvider,w,new y.Position(v.startLineNumber,v.startColumn),p).filter(E=>!(0,k.isEmptyMarkdownString)(E.hover.contents)).map(E=>new C.MarkdownHover(this,l.item.anchor.range,E.hover.contents,!1,2+E.ordinal)):L.AsyncIterableObject.EMPTY}finally{b.dispose()}})}};e.InlayHintsHover=o,e.InlayHintsHover=o=ke([fe(1,f.ILanguageService),fe(2,n.IOpenerService),fe(3,i.IConfigurationService),fe(4,_.ITextModelService),fe(5,t.ILanguageFeaturesService)],o)}),define(ne[904],se([1,0,16,103,374,903]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),(0,L.registerEditorContribution)(y.InlayHintsController.ID,y.InlayHintsController,1),k.HoverParticipantRegistry.register(D.InlayHintsHover)}),define(ne[375],se([1,0,2,18,894,893,8,57,30,15,21,186,5,247,373,12,19,32,76,7,299,60]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d){\"use strict\";var l;Object.defineProperty(e,\"__esModule\",{value:!0}),e.StickyScrollController=void 0;let p=l=class extends L.Disposable{constructor(v,b,w,E,I,M,P){super(),this._editor=v,this._contextMenuService=b,this._languageFeaturesService=w,this._instaService=E,this._contextKeyService=P,this._sessionStore=new L.DisposableStore,this._maxStickyLines=Number.MAX_SAFE_INTEGER,this._candidateDefinitionsLength=-1,this._focusedStickyElementIndex=-1,this._enabled=!1,this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1,this._endLineNumbers=[],this._showEndForLine=null,this._stickyScrollWidget=new y.StickyScrollWidget(this._editor),this._stickyLineCandidateProvider=new D.StickyLineCandidateProvider(this._editor,w,I),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=new y.StickyScrollWidgetState([],[],0),this._readConfiguration();const x=this._stickyScrollWidget.getDomNode();this._register(this._editor.onDidChangeConfiguration(A=>{(A.hasChanged(113)||A.hasChanged(71)||A.hasChanged(65)||A.hasChanged(108))&&this._readConfiguration()})),this._register(c.addDisposableListener(x,c.EventType.CONTEXT_MENU,A=>we(this,void 0,void 0,function*(){this._onContextMenu(A)}))),this._stickyScrollFocusedContextKey=C.EditorContextKeys.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=C.EditorContextKeys.stickyScrollVisible.bindTo(this._contextKeyService);const T=this._register(c.trackFocus(x));this._register(T.onDidBlur(A=>{this._positionRevealed===!1&&x.clientHeight===0?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()})),this._register(T.onDidFocus(A=>{this.focus()})),this._registerMouseListeners(),this._register(c.addDisposableListener(x,c.EventType.MOUSE_DOWN,A=>{this._onMouseDown=!0}))}static get(v){return v.getContribution(l.ID)}_disposeFocusStickyScrollStore(){var v;this._stickyScrollFocusedContextKey.set(!1),(v=this._focusDisposableStore)===null||v===void 0||v.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}focus(){if(this._onMouseDown){this._onMouseDown=!1,this._editor.focus();return}this._stickyScrollFocusedContextKey.get()!==!0&&(this._focused=!0,this._focusDisposableStore=new L.DisposableStore,this._stickyScrollFocusedContextKey.set(!0),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumbers.length-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}focusNext(){this._focusedStickyElementIndex<this._stickyScrollWidget.lineNumberCount-1&&this._focusNav(!0)}focusPrevious(){this._focusedStickyElementIndex>0&&this._focusNav(!1)}selectEditor(){this._editor.focus()}_focusNav(v){this._focusedStickyElementIndex=v?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}goToFocused(){const v=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:v[this._focusedStickyElementIndex],column:1})}_revealPosition(v){this._reveaInEditor(v,()=>this._editor.revealPosition(v))}_revealLineInCenterIfOutsideViewport(v){this._reveaInEditor(v,()=>this._editor.revealLineInCenterIfOutsideViewport(v.lineNumber,0))}_reveaInEditor(v,b){this._focused&&this._disposeFocusStickyScrollStore(),this._positionRevealed=!0,b(),this._editor.setSelection(i.Range.fromPositions(v)),this._editor.focus()}_registerMouseListeners(){const v=this._register(new L.DisposableStore),b=this._register(new s.ClickLinkGesture(this._editor,{extractLineNumberFromMouseEvent:I=>{const M=this._stickyScrollWidget.getEditorPositionFromNode(I.target.element);return M?M.lineNumber:0}})),w=I=>{if(!this._editor.hasModel()||I.target.type!==12||I.target.detail!==this._stickyScrollWidget.getId())return null;const M=I.target.element;if(!M||M.innerText!==M.innerHTML)return null;const P=this._stickyScrollWidget.getEditorPositionFromNode(M);return P?{range:new i.Range(P.lineNumber,P.column,P.lineNumber,P.column+M.innerText.length),textElement:M}:null},E=this._stickyScrollWidget.getDomNode();this._register(c.addStandardDisposableListener(E,c.EventType.CLICK,I=>{if(I.ctrlKey||I.altKey||I.metaKey||!I.leftButton)return;if(I.shiftKey){const P=this._stickyScrollWidget.getStickyLineIndexFromChildDomNode(I.target);if(P===null)return;const x=new a.Position(this._endLineNumbers[P],1);this._revealLineInCenterIfOutsideViewport(x);return}let M=this._stickyScrollWidget.getEditorPositionFromNode(I.target);if(!M){const P=this._stickyScrollWidget.getLineNumberFromChildDomNode(I.target);if(P===null)return;M=new a.Position(P,1)}this._revealPosition(M)})),this._register(c.addStandardDisposableListener(E,c.EventType.MOUSE_MOVE,I=>{if(I.shiftKey){const M=this._stickyScrollWidget.getStickyLineIndexFromChildDomNode(I.target);if(M===null||this._showEndForLine!==null&&this._showEndForLine===M)return;this._showEndForLine=M,this._renderStickyScroll();return}this._showEndForLine!==null&&(this._showEndForLine=null,this._renderStickyScroll())})),this._register(c.addDisposableListener(E,c.EventType.MOUSE_LEAVE,I=>{this._showEndForLine!==null&&(this._showEndForLine=null,this._renderStickyScroll())})),this._register(b.onMouseMoveOrRelevantKeyDown(([I,M])=>{const P=w(I);if(!P||!I.hasTriggerModifier||!this._editor.hasModel()){v.clear();return}const{range:x,textElement:T}=P;if(!x.equalsRange(this._stickyRangeProjectedOnEditor))this._stickyRangeProjectedOnEditor=x,v.clear();else if(T.style.textDecoration===\"underline\")return;const A=new u.CancellationTokenSource;v.add((0,L.toDisposable)(()=>A.dispose(!0)));let N;(0,n.getDefinitionsAtPosition)(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new a.Position(x.startLineNumber,x.startColumn+1),A.token).then(F=>{if(!A.token.isCancellationRequested)if(F.length!==0){this._candidateDefinitionsLength=F.length;const O=T;N!==O?(v.clear(),N=O,N.style.textDecoration=\"underline\",v.add((0,L.toDisposable)(()=>{N.style.textDecoration=\"none\"}))):N||(N=O,N.style.textDecoration=\"underline\",v.add((0,L.toDisposable)(()=>{N.style.textDecoration=\"none\"})))}else v.clear()})})),this._register(b.onCancel(()=>{v.clear()})),this._register(b.onExecute(I=>we(this,void 0,void 0,function*(){if(I.target.type!==12||I.target.detail!==this._stickyScrollWidget.getId())return;const M=this._stickyScrollWidget.getEditorPositionFromNode(I.target.element);M&&(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:M.lineNumber,column:1})),this._instaService.invokeFunction(t.goToDefinitionWithLocation,I,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor}))})))}_onContextMenu(v){const b=new d.StandardMouseEvent(v);this._contextMenuService.showContextMenu({menuId:_.MenuId.StickyScrollContext,getAnchor:()=>b})}_readConfiguration(){const v=this._editor.getOption(113);if(v.enabled===!1){this._editor.removeOverlayWidget(this._stickyScrollWidget),this._sessionStore.clear(),this._enabled=!1;return}else v.enabled&&!this._enabled&&(this._editor.addOverlayWidget(this._stickyScrollWidget),this._sessionStore.add(this._editor.onDidScrollChange(w=>{w.scrollTopChanged&&(this._showEndForLine=null,this._renderStickyScroll())})),this._sessionStore.add(this._editor.onDidLayoutChange(()=>this._onDidResize())),this._sessionStore.add(this._editor.onDidChangeModelTokens(w=>this._onTokensChange(w))),this._sessionStore.add(this._stickyLineCandidateProvider.onDidChangeStickyScroll(()=>{this._showEndForLine=null,this._renderStickyScroll()})),this._enabled=!0);this._editor.getOption(66).renderType===2&&this._sessionStore.add(this._editor.onDidChangeCursorPosition(()=>{this._showEndForLine=null,this._renderStickyScroll()}))}_needsUpdate(v){const b=this._stickyScrollWidget.getCurrentLines();for(const w of b)for(const E of v.ranges)if(w>=E.fromLineNumber&&w<=E.toLineNumber)return!0;return!1}_onTokensChange(v){this._needsUpdate(v)&&this._renderStickyScroll()}_onDidResize(){const b=this._editor.getLayoutInfo().height/this._editor.getOption(65);this._maxStickyLines=Math.round(b*.25)}_renderStickyScroll(){const v=this._editor.getModel();if(!v||v.isTooLargeForTokenization()){this._stickyScrollWidget.setState(void 0);return}const b=this._stickyLineCandidateProvider.getVersionId();if(b===void 0||b===v.getVersionId())if(this._widgetState=this.findScrollWidgetState(),this._stickyScrollVisibleContextKey.set(this._widgetState.startLineNumbers.length!==0),!this._focused)this._stickyScrollWidget.setState(this._widgetState);else if(this._focusedStickyElementIndex===-1)this._stickyScrollWidget.setState(this._widgetState),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1,this._focusedStickyElementIndex!==-1&&this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);else{const w=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];this._stickyScrollWidget.setState(this._widgetState),this._stickyScrollWidget.lineNumberCount===0?this._focusedStickyElementIndex=-1:(this._stickyScrollWidget.lineNumbers.includes(w)||(this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1),this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}}findScrollWidgetState(){const v=this._editor.getOption(65),b=Math.min(this._maxStickyLines,this._editor.getOption(113).maxLineCount),w=this._editor.getScrollTop();let E=0;const I=[],M=[],P=this._editor.getVisibleRanges();if(P.length!==0){const x=new o.StickyRange(P[0].startLineNumber,P[P.length-1].endLineNumber),T=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(x);for(const A of T){const N=A.startLineNumber,F=A.endLineNumber,O=A.nestingDepth;if(F-N>0){const W=(O-1)*v,U=O*v,j=this._editor.getBottomForLineNumber(N)-w,R=this._editor.getTopForLineNumber(F)-w,K=this._editor.getBottomForLineNumber(F)-w;if(W>R&&W<=K){I.push(N),M.push(F+1),E=K-U;break}else U>j&&U<=K&&(I.push(N),M.push(F+1));if(I.length===b)break}}}return this._endLineNumbers=M,new y.StickyScrollWidgetState(I,M,E,this._showEndForLine)}dispose(){super.dispose(),this._sessionStore.dispose()}};e.StickyScrollController=p,p.ID=\"store.contrib.stickyScrollController\",e.StickyScrollController=p=l=ke([fe(1,f.IContextMenuService),fe(2,k.ILanguageFeaturesService),fe(3,S.IInstantiationService),fe(4,h.ILanguageConfigurationService),fe(5,r.ILanguageFeatureDebounceService),fe(6,g.IContextKeyService)],p)}),define(ne[905],se([1,0,16,699,741,30,28,15,21,375]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SelectEditor=e.GoToStickyScrollLine=e.SelectPreviousStickyScrollLine=e.SelectNextStickyScrollLine=e.FocusStickyScroll=e.ToggleStickyScroll=void 0;class C extends D.Action2{constructor(){super({id:\"editor.action.toggleStickyScroll\",title:{value:(0,k.localize)(0,null),mnemonicTitle:(0,k.localize)(1,null),original:\"Toggle Sticky Scroll\"},category:y.Categories.View,toggled:{condition:f.ContextKeyExpr.equals(\"config.editor.stickyScroll.enabled\",!0),title:(0,k.localize)(2,null),mnemonicTitle:(0,k.localize)(3,null)},menu:[{id:D.MenuId.CommandPalette},{id:D.MenuId.MenubarAppearanceMenu,group:\"4_editor\",order:3},{id:D.MenuId.StickyScrollContext}]})}run(r){return we(this,void 0,void 0,function*(){const c=r.get(S.IConfigurationService),o=!c.getValue(\"editor.stickyScroll.enabled\");return c.updateValue(\"editor.stickyScroll.enabled\",o)})}}e.ToggleStickyScroll=C;const s=100;class i extends L.EditorAction2{constructor(){super({id:\"editor.action.focusStickyScroll\",title:{value:(0,k.localize)(4,null),mnemonicTitle:(0,k.localize)(5,null),original:\"Focus Sticky Scroll\"},precondition:f.ContextKeyExpr.and(f.ContextKeyExpr.has(\"config.editor.stickyScroll.enabled\"),_.EditorContextKeys.stickyScrollVisible),menu:[{id:D.MenuId.CommandPalette}]})}runEditorCommand(r,c){var o;(o=g.StickyScrollController.get(c))===null||o===void 0||o.focus()}}e.FocusStickyScroll=i;class n extends L.EditorAction2{constructor(){super({id:\"editor.action.selectNextStickyScrollLine\",title:{value:(0,k.localize)(6,null),original:\"Select next sticky scroll line\"},precondition:_.EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:s,primary:18}})}runEditorCommand(r,c){var o;(o=g.StickyScrollController.get(c))===null||o===void 0||o.focusNext()}}e.SelectNextStickyScrollLine=n;class t extends L.EditorAction2{constructor(){super({id:\"editor.action.selectPreviousStickyScrollLine\",title:{value:(0,k.localize)(7,null),original:\"Select previous sticky scroll line\"},precondition:_.EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:s,primary:16}})}runEditorCommand(r,c){var o;(o=g.StickyScrollController.get(c))===null||o===void 0||o.focusPrevious()}}e.SelectPreviousStickyScrollLine=t;class a extends L.EditorAction2{constructor(){super({id:\"editor.action.goToFocusedStickyScrollLine\",title:{value:(0,k.localize)(8,null),original:\"Go to focused sticky scroll line\"},precondition:_.EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:s,primary:3}})}runEditorCommand(r,c){var o;(o=g.StickyScrollController.get(c))===null||o===void 0||o.goToFocused()}}e.GoToStickyScrollLine=a;class u extends L.EditorAction2{constructor(){super({id:\"editor.action.selectEditor\",title:{value:(0,k.localize)(9,null),original:\"Select Editor\"},precondition:_.EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:s,primary:9}})}runEditorCommand(r,c){var o;(o=g.StickyScrollController.get(c))===null||o===void 0||o.selectEditor()}}e.SelectEditor=u}),define(ne[906],se([1,0,16,905,375,30]),function(Q,e,L,k,y,D){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),(0,L.registerEditorContribution)(y.StickyScrollController.ID,y.StickyScrollController,1),(0,D.registerAction2)(k.ToggleStickyScroll),(0,D.registerAction2)(k.FocusStickyScroll),(0,D.registerAction2)(k.SelectPreviousStickyScrollLine),(0,D.registerAction2)(k.SelectNextStickyScrollLine),(0,D.registerAction2)(k.GoToStickyScrollLine),(0,D.registerAction2)(k.SelectEditor)}),define(ne[907],se([1,0,16,33,370,28,15,8,43,87]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StandaloneReferencesController=void 0;let C=class extends y.ReferencesController{constructor(i,n,t,a,u,h,r){super(!0,i,n,t,a,u,h,r)}};e.StandaloneReferencesController=C,e.StandaloneReferencesController=C=ke([fe(1,S.IContextKeyService),fe(2,k.ICodeEditorService),fe(3,_.INotificationService),fe(4,f.IInstantiationService),fe(5,g.IStorageService),fe(6,D.IConfigurationService)],C),(0,L.registerEditorContribution)(y.ReferencesController.ID,C,4)}),define(ne[908],se([1,0,9,2,54,101,738,156,50,43,192]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UndoRedoService=void 0;const s=!1;function i(p){return p.scheme===y.Schemas.file?p.fsPath:p.path}let n=0;class t{constructor(m,v,b,w,E,I,M){this.id=++n,this.type=0,this.actual=m,this.label=m.label,this.confirmBeforeUndo=m.confirmBeforeUndo||!1,this.resourceLabel=v,this.strResource=b,this.resourceLabels=[this.resourceLabel],this.strResources=[this.strResource],this.groupId=w,this.groupOrder=E,this.sourceId=I,this.sourceOrder=M,this.isValid=!0}setValid(m){this.isValid=m}toString(){return`[id:${this.id}] [group:${this.groupId}] [${this.isValid?\"  VALID\":\"INVALID\"}] ${this.actual.constructor.name} - ${this.actual}`}}class a{constructor(m,v){this.resourceLabel=m,this.reason=v}}class u{constructor(){this.elements=new Map}createMessage(){const m=[],v=[];for(const[,w]of this.elements)(w.reason===0?m:v).push(w.resourceLabel);const b=[];return m.length>0&&b.push(S.localize(0,null,m.join(\", \"))),v.length>0&&b.push(S.localize(1,null,v.join(\", \"))),b.join(`\n`)}get size(){return this.elements.size}has(m){return this.elements.has(m)}set(m,v){this.elements.set(m,v)}delete(m){return this.elements.delete(m)}}class h{constructor(m,v,b,w,E,I,M){this.id=++n,this.type=1,this.actual=m,this.label=m.label,this.confirmBeforeUndo=m.confirmBeforeUndo||!1,this.resourceLabels=v,this.strResources=b,this.groupId=w,this.groupOrder=E,this.sourceId=I,this.sourceOrder=M,this.removedResources=null,this.invalidatedResources=null}canSplit(){return typeof this.actual.split==\"function\"}removeResource(m,v,b){this.removedResources||(this.removedResources=new u),this.removedResources.has(v)||this.removedResources.set(v,new a(m,b))}setValid(m,v,b){b?this.invalidatedResources&&(this.invalidatedResources.delete(v),this.invalidatedResources.size===0&&(this.invalidatedResources=null)):(this.invalidatedResources||(this.invalidatedResources=new u),this.invalidatedResources.has(v)||this.invalidatedResources.set(v,new a(m,0)))}toString(){return`[id:${this.id}] [group:${this.groupId}] [${this.invalidatedResources?\"INVALID\":\"  VALID\"}] ${this.actual.constructor.name} - ${this.actual}`}}class r{constructor(m,v){this.resourceLabel=m,this.strResource=v,this._past=[],this._future=[],this.locked=!1,this.versionId=1}dispose(){for(const m of this._past)m.type===1&&m.removeResource(this.resourceLabel,this.strResource,0);for(const m of this._future)m.type===1&&m.removeResource(this.resourceLabel,this.strResource,0);this.versionId++}toString(){const m=[];m.push(`* ${this.strResource}:`);for(let v=0;v<this._past.length;v++)m.push(`   * [UNDO] ${this._past[v]}`);for(let v=this._future.length-1;v>=0;v--)m.push(`   * [REDO] ${this._future[v]}`);return m.join(`\n`)}flushAllElements(){this._past=[],this._future=[],this.versionId++}_setElementValidFlag(m,v){m.type===1?m.setValid(this.resourceLabel,this.strResource,v):m.setValid(v)}setElementsValidFlag(m,v){for(const b of this._past)v(b.actual)&&this._setElementValidFlag(b,m);for(const b of this._future)v(b.actual)&&this._setElementValidFlag(b,m)}pushElement(m){for(const v of this._future)v.type===1&&v.removeResource(this.resourceLabel,this.strResource,1);this._future=[],this._past.push(m),this.versionId++}createSnapshot(m){const v=[];for(let b=0,w=this._past.length;b<w;b++)v.push(this._past[b].id);for(let b=this._future.length-1;b>=0;b--)v.push(this._future[b].id);return new C.ResourceEditStackSnapshot(m,v)}restoreSnapshot(m){const v=m.elements.length;let b=!0,w=0,E=-1;for(let M=0,P=this._past.length;M<P;M++,w++){const x=this._past[M];b&&(w>=v||x.id!==m.elements[w])&&(b=!1,E=0),!b&&x.type===1&&x.removeResource(this.resourceLabel,this.strResource,0)}let I=-1;for(let M=this._future.length-1;M>=0;M--,w++){const P=this._future[M];b&&(w>=v||P.id!==m.elements[w])&&(b=!1,I=M),!b&&P.type===1&&P.removeResource(this.resourceLabel,this.strResource,0)}E!==-1&&(this._past=this._past.slice(0,E)),I!==-1&&(this._future=this._future.slice(I+1)),this.versionId++}getElements(){const m=[],v=[];for(const b of this._past)m.push(b.actual);for(const b of this._future)v.push(b.actual);return{past:m,future:v}}getClosestPastElement(){return this._past.length===0?null:this._past[this._past.length-1]}getSecondClosestPastElement(){return this._past.length<2?null:this._past[this._past.length-2]}getClosestFutureElement(){return this._future.length===0?null:this._future[this._future.length-1]}hasPastElements(){return this._past.length>0}hasFutureElements(){return this._future.length>0}splitPastWorkspaceElement(m,v){for(let b=this._past.length-1;b>=0;b--)if(this._past[b]===m){v.has(this.strResource)?this._past[b]=v.get(this.strResource):this._past.splice(b,1);break}this.versionId++}splitFutureWorkspaceElement(m,v){for(let b=this._future.length-1;b>=0;b--)if(this._future[b]===m){v.has(this.strResource)?this._future[b]=v.get(this.strResource):this._future.splice(b,1);break}this.versionId++}moveBackward(m){this._past.pop(),this._future.push(m),this.versionId++}moveForward(m){this._future.pop(),this._past.push(m),this.versionId++}}class c{constructor(m){this.editStacks=m,this._versionIds=[];for(let v=0,b=this.editStacks.length;v<b;v++)this._versionIds[v]=this.editStacks[v].versionId}isValid(){for(let m=0,v=this.editStacks.length;m<v;m++)if(this._versionIds[m]!==this.editStacks[m].versionId)return!1;return!0}}const o=new r(\"\",\"\");o.locked=!0;let d=class{constructor(m,v){this._dialogService=m,this._notificationService=v,this._editStacks=new Map,this._uriComparisonKeyComputers=[]}getUriComparisonKey(m){for(const v of this._uriComparisonKeyComputers)if(v[0]===m.scheme)return v[1].getComparisonKey(m);return m.toString()}_print(m){console.log(\"------------------------------------\"),console.log(`AFTER ${m}: `);const v=[];for(const b of this._editStacks)v.push(b[1].toString());console.log(v.join(`\n`))}pushElement(m,v=C.UndoRedoGroup.None,b=C.UndoRedoSource.None){if(m.type===0){const w=i(m.resource),E=this.getUriComparisonKey(m.resource);this._pushElement(new t(m,w,E,v.id,v.nextOrder(),b.id,b.nextOrder()))}else{const w=new Set,E=[],I=[];for(const M of m.resources){const P=i(M),x=this.getUriComparisonKey(M);w.has(x)||(w.add(x),E.push(P),I.push(x))}E.length===1?this._pushElement(new t(m,E[0],I[0],v.id,v.nextOrder(),b.id,b.nextOrder())):this._pushElement(new h(m,E,I,v.id,v.nextOrder(),b.id,b.nextOrder()))}s&&this._print(\"pushElement\")}_pushElement(m){for(let v=0,b=m.strResources.length;v<b;v++){const w=m.resourceLabels[v],E=m.strResources[v];let I;this._editStacks.has(E)?I=this._editStacks.get(E):(I=new r(w,E),this._editStacks.set(E,I)),I.pushElement(m)}}getLastElement(m){const v=this.getUriComparisonKey(m);if(this._editStacks.has(v)){const b=this._editStacks.get(v);if(b.hasFutureElements())return null;const w=b.getClosestPastElement();return w?w.actual:null}return null}_splitPastWorkspaceElement(m,v){const b=m.actual.split(),w=new Map;for(const E of b){const I=i(E.resource),M=this.getUriComparisonKey(E.resource),P=new t(E,I,M,0,0,0,0);w.set(P.strResource,P)}for(const E of m.strResources){if(v&&v.has(E))continue;this._editStacks.get(E).splitPastWorkspaceElement(m,w)}}_splitFutureWorkspaceElement(m,v){const b=m.actual.split(),w=new Map;for(const E of b){const I=i(E.resource),M=this.getUriComparisonKey(E.resource),P=new t(E,I,M,0,0,0,0);w.set(P.strResource,P)}for(const E of m.strResources){if(v&&v.has(E))continue;this._editStacks.get(E).splitFutureWorkspaceElement(m,w)}}removeElements(m){const v=typeof m==\"string\"?m:this.getUriComparisonKey(m);this._editStacks.has(v)&&(this._editStacks.get(v).dispose(),this._editStacks.delete(v)),s&&this._print(\"removeElements\")}setElementsValidFlag(m,v,b){const w=this.getUriComparisonKey(m);this._editStacks.has(w)&&this._editStacks.get(w).setElementsValidFlag(v,b),s&&this._print(\"setElementsValidFlag\")}createSnapshot(m){const v=this.getUriComparisonKey(m);return this._editStacks.has(v)?this._editStacks.get(v).createSnapshot(m):new C.ResourceEditStackSnapshot(m,[])}restoreSnapshot(m){const v=this.getUriComparisonKey(m.resource);if(this._editStacks.has(v)){const b=this._editStacks.get(v);b.restoreSnapshot(m),!b.hasPastElements()&&!b.hasFutureElements()&&(b.dispose(),this._editStacks.delete(v))}s&&this._print(\"restoreSnapshot\")}getElements(m){const v=this.getUriComparisonKey(m);return this._editStacks.has(v)?this._editStacks.get(v).getElements():{past:[],future:[]}}_findClosestUndoElementWithSource(m){if(!m)return[null,null];let v=null,b=null;for(const[w,E]of this._editStacks){const I=E.getClosestPastElement();I&&I.sourceId===m&&(!v||I.sourceOrder>v.sourceOrder)&&(v=I,b=w)}return[v,b]}canUndo(m){if(m instanceof C.UndoRedoSource){const[,b]=this._findClosestUndoElementWithSource(m.id);return!!b}const v=this.getUriComparisonKey(m);return this._editStacks.has(v)?this._editStacks.get(v).hasPastElements():!1}_onError(m,v){(0,L.onUnexpectedError)(m);for(const b of v.strResources)this.removeElements(b);this._notificationService.error(m)}_acquireLocks(m){for(const v of m.editStacks)if(v.locked)throw new Error(\"Cannot acquire edit stack lock\");for(const v of m.editStacks)v.locked=!0;return()=>{for(const v of m.editStacks)v.locked=!1}}_safeInvokeWithLocks(m,v,b,w,E){const I=this._acquireLocks(b);let M;try{M=v()}catch(P){return I(),w.dispose(),this._onError(P,m)}return M?M.then(()=>(I(),w.dispose(),E()),P=>(I(),w.dispose(),this._onError(P,m))):(I(),w.dispose(),E())}_invokeWorkspacePrepare(m){return we(this,void 0,void 0,function*(){if(typeof m.actual.prepareUndoRedo>\"u\")return k.Disposable.None;const v=m.actual.prepareUndoRedo();return typeof v>\"u\"?k.Disposable.None:v})}_invokeResourcePrepare(m,v){if(m.actual.type!==1||typeof m.actual.prepareUndoRedo>\"u\")return v(k.Disposable.None);const b=m.actual.prepareUndoRedo();return b?(0,k.isDisposable)(b)?v(b):b.then(w=>v(w)):v(k.Disposable.None)}_getAffectedEditStacks(m){const v=[];for(const b of m.strResources)v.push(this._editStacks.get(b)||o);return new c(v)}_tryToSplitAndUndo(m,v,b,w){if(v.canSplit())return this._splitPastWorkspaceElement(v,b),this._notificationService.warn(w),new l(this._undo(m,0,!0));for(const E of v.strResources)this.removeElements(E);return this._notificationService.warn(w),new l}_checkWorkspaceUndo(m,v,b,w){if(v.removedResources)return this._tryToSplitAndUndo(m,v,v.removedResources,S.localize(2,null,v.label,v.removedResources.createMessage()));if(w&&v.invalidatedResources)return this._tryToSplitAndUndo(m,v,v.invalidatedResources,S.localize(3,null,v.label,v.invalidatedResources.createMessage()));const E=[];for(const M of b.editStacks)M.getClosestPastElement()!==v&&E.push(M.resourceLabel);if(E.length>0)return this._tryToSplitAndUndo(m,v,null,S.localize(4,null,v.label,E.join(\", \")));const I=[];for(const M of b.editStacks)M.locked&&I.push(M.resourceLabel);return I.length>0?this._tryToSplitAndUndo(m,v,null,S.localize(5,null,v.label,I.join(\", \"))):b.isValid()?null:this._tryToSplitAndUndo(m,v,null,S.localize(6,null,v.label))}_workspaceUndo(m,v,b){const w=this._getAffectedEditStacks(v),E=this._checkWorkspaceUndo(m,v,w,!1);return E?E.returnValue:this._confirmAndExecuteWorkspaceUndo(m,v,w,b)}_isPartOfUndoGroup(m){if(!m.groupId)return!1;for(const[,v]of this._editStacks){const b=v.getClosestPastElement();if(b){if(b===m){const w=v.getSecondClosestPastElement();if(w&&w.groupId===m.groupId)return!0}if(b.groupId===m.groupId)return!0}}return!1}_confirmAndExecuteWorkspaceUndo(m,v,b,w){return we(this,void 0,void 0,function*(){if(v.canSplit()&&!this._isPartOfUndoGroup(v)){let M;(function(T){T[T.All=0]=\"All\",T[T.This=1]=\"This\",T[T.Cancel=2]=\"Cancel\"})(M||(M={}));const{result:P}=yield this._dialogService.prompt({type:D.default.Info,message:S.localize(7,null,v.label),buttons:[{label:S.localize(8,null,b.editStacks.length),run:()=>M.All},{label:S.localize(9,null),run:()=>M.This}],cancelButton:{run:()=>M.Cancel}});if(P===M.Cancel)return;if(P===M.This)return this._splitPastWorkspaceElement(v,null),this._undo(m,0,!0);const x=this._checkWorkspaceUndo(m,v,b,!1);if(x)return x.returnValue;w=!0}let E;try{E=yield this._invokeWorkspacePrepare(v)}catch(M){return this._onError(M,v)}const I=this._checkWorkspaceUndo(m,v,b,!0);if(I)return E.dispose(),I.returnValue;for(const M of b.editStacks)M.moveBackward(v);return this._safeInvokeWithLocks(v,()=>v.actual.undo(),b,E,()=>this._continueUndoInGroup(v.groupId,w))})}_resourceUndo(m,v,b){if(!v.isValid){m.flushAllElements();return}if(m.locked){const w=S.localize(10,null,v.label);this._notificationService.warn(w);return}return this._invokeResourcePrepare(v,w=>(m.moveBackward(v),this._safeInvokeWithLocks(v,()=>v.actual.undo(),new c([m]),w,()=>this._continueUndoInGroup(v.groupId,b))))}_findClosestUndoElementInGroup(m){if(!m)return[null,null];let v=null,b=null;for(const[w,E]of this._editStacks){const I=E.getClosestPastElement();I&&I.groupId===m&&(!v||I.groupOrder>v.groupOrder)&&(v=I,b=w)}return[v,b]}_continueUndoInGroup(m,v){if(!m)return;const[,b]=this._findClosestUndoElementInGroup(m);if(b)return this._undo(b,0,v)}undo(m){if(m instanceof C.UndoRedoSource){const[,v]=this._findClosestUndoElementWithSource(m.id);return v?this._undo(v,m.id,!1):void 0}return typeof m==\"string\"?this._undo(m,0,!1):this._undo(this.getUriComparisonKey(m),0,!1)}_undo(m,v=0,b){if(!this._editStacks.has(m))return;const w=this._editStacks.get(m),E=w.getClosestPastElement();if(!E)return;if(E.groupId){const[M,P]=this._findClosestUndoElementInGroup(E.groupId);if(E!==M&&P)return this._undo(P,v,b)}if((E.sourceId!==v||E.confirmBeforeUndo)&&!b)return this._confirmAndContinueUndo(m,v,E);try{return E.type===1?this._workspaceUndo(m,E,b):this._resourceUndo(w,E,b)}finally{s&&this._print(\"undo\")}}_confirmAndContinueUndo(m,v,b){return we(this,void 0,void 0,function*(){if((yield this._dialogService.confirm({message:S.localize(11,null,b.label),primaryButton:S.localize(12,null),cancelButton:S.localize(13,null)})).confirmed)return this._undo(m,v,!0)})}_findClosestRedoElementWithSource(m){if(!m)return[null,null];let v=null,b=null;for(const[w,E]of this._editStacks){const I=E.getClosestFutureElement();I&&I.sourceId===m&&(!v||I.sourceOrder<v.sourceOrder)&&(v=I,b=w)}return[v,b]}canRedo(m){if(m instanceof C.UndoRedoSource){const[,b]=this._findClosestRedoElementWithSource(m.id);return!!b}const v=this.getUriComparisonKey(m);return this._editStacks.has(v)?this._editStacks.get(v).hasFutureElements():!1}_tryToSplitAndRedo(m,v,b,w){if(v.canSplit())return this._splitFutureWorkspaceElement(v,b),this._notificationService.warn(w),new l(this._redo(m));for(const E of v.strResources)this.removeElements(E);return this._notificationService.warn(w),new l}_checkWorkspaceRedo(m,v,b,w){if(v.removedResources)return this._tryToSplitAndRedo(m,v,v.removedResources,S.localize(14,null,v.label,v.removedResources.createMessage()));if(w&&v.invalidatedResources)return this._tryToSplitAndRedo(m,v,v.invalidatedResources,S.localize(15,null,v.label,v.invalidatedResources.createMessage()));const E=[];for(const M of b.editStacks)M.getClosestFutureElement()!==v&&E.push(M.resourceLabel);if(E.length>0)return this._tryToSplitAndRedo(m,v,null,S.localize(16,null,v.label,E.join(\", \")));const I=[];for(const M of b.editStacks)M.locked&&I.push(M.resourceLabel);return I.length>0?this._tryToSplitAndRedo(m,v,null,S.localize(17,null,v.label,I.join(\", \"))):b.isValid()?null:this._tryToSplitAndRedo(m,v,null,S.localize(18,null,v.label))}_workspaceRedo(m,v){const b=this._getAffectedEditStacks(v),w=this._checkWorkspaceRedo(m,v,b,!1);return w?w.returnValue:this._executeWorkspaceRedo(m,v,b)}_executeWorkspaceRedo(m,v,b){return we(this,void 0,void 0,function*(){let w;try{w=yield this._invokeWorkspacePrepare(v)}catch(I){return this._onError(I,v)}const E=this._checkWorkspaceRedo(m,v,b,!0);if(E)return w.dispose(),E.returnValue;for(const I of b.editStacks)I.moveForward(v);return this._safeInvokeWithLocks(v,()=>v.actual.redo(),b,w,()=>this._continueRedoInGroup(v.groupId))})}_resourceRedo(m,v){if(!v.isValid){m.flushAllElements();return}if(m.locked){const b=S.localize(19,null,v.label);this._notificationService.warn(b);return}return this._invokeResourcePrepare(v,b=>(m.moveForward(v),this._safeInvokeWithLocks(v,()=>v.actual.redo(),new c([m]),b,()=>this._continueRedoInGroup(v.groupId))))}_findClosestRedoElementInGroup(m){if(!m)return[null,null];let v=null,b=null;for(const[w,E]of this._editStacks){const I=E.getClosestFutureElement();I&&I.groupId===m&&(!v||I.groupOrder<v.groupOrder)&&(v=I,b=w)}return[v,b]}_continueRedoInGroup(m){if(!m)return;const[,v]=this._findClosestRedoElementInGroup(m);if(v)return this._redo(v)}redo(m){if(m instanceof C.UndoRedoSource){const[,v]=this._findClosestRedoElementWithSource(m.id);return v?this._redo(v):void 0}return typeof m==\"string\"?this._redo(m):this._redo(this.getUriComparisonKey(m))}_redo(m){if(!this._editStacks.has(m))return;const v=this._editStacks.get(m),b=v.getClosestFutureElement();if(b){if(b.groupId){const[w,E]=this._findClosestRedoElementInGroup(b.groupId);if(b!==w&&E)return this._redo(E)}try{return b.type===1?this._workspaceRedo(m,b):this._resourceRedo(v,b)}finally{s&&this._print(\"redo\")}}}};e.UndoRedoService=d,e.UndoRedoService=d=ke([fe(0,f.IDialogService),fe(1,g.INotificationService)],d);class l{constructor(m){this.returnValue=m}}(0,_.registerSingleton)(C.IUndoRedoService,d,1)}),define(ne[163],se([1,0,739,92,198,22,8]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.isStandaloneEditorWorkspace=e.STANDALONE_EDITOR_WORKSPACE_ID=e.WORKSPACE_FILTER=e.WORKSPACE_EXTENSION=e.WorkspaceFolder=e.Workspace=e.isWorkspaceIdentifier=e.toWorkspaceIdentifier=e.UNKNOWN_EMPTY_WINDOW_WORKSPACE=e.EXTENSION_DEVELOPMENT_EMPTY_WINDOW_WORKSPACE=e.isEmptyWorkspaceIdentifier=e.isSingleFolderWorkspaceIdentifier=e.IWorkspaceContextService=void 0,e.IWorkspaceContextService=(0,S.createDecorator)(\"contextService\");function f(t){const a=t;return typeof a?.id==\"string\"&&D.URI.isUri(a.uri)}e.isSingleFolderWorkspaceIdentifier=f;function _(t){const a=t;return typeof a?.id==\"string\"&&!f(t)&&!C(t)}e.isEmptyWorkspaceIdentifier=_,e.EXTENSION_DEVELOPMENT_EMPTY_WINDOW_WORKSPACE={id:\"ext-dev\"},e.UNKNOWN_EMPTY_WINDOW_WORKSPACE={id:\"empty-window\"};function g(t,a){if(typeof t==\"string\"||typeof t>\"u\")return typeof t==\"string\"?{id:(0,k.basename)(t)}:a?e.EXTENSION_DEVELOPMENT_EMPTY_WINDOW_WORKSPACE:e.UNKNOWN_EMPTY_WINDOW_WORKSPACE;const u=t;return u.configuration?{id:u.id,configPath:u.configuration}:u.folders.length===1?{id:u.id,uri:u.folders[0].uri}:{id:u.id}}e.toWorkspaceIdentifier=g;function C(t){const a=t;return typeof a?.id==\"string\"&&D.URI.isUri(a.configPath)}e.isWorkspaceIdentifier=C;class s{constructor(a,u,h,r,c){this._id=a,this._transient=h,this._configuration=r,this._ignorePathCasing=c,this._foldersMap=y.TernarySearchTree.forUris(this._ignorePathCasing,()=>!0),this.folders=u}get folders(){return this._folders}set folders(a){this._folders=a,this.updateFoldersMap()}get id(){return this._id}get transient(){return this._transient}get configuration(){return this._configuration}set configuration(a){this._configuration=a}getFolder(a){return a&&this._foldersMap.findSubstr(a)||null}updateFoldersMap(){this._foldersMap=y.TernarySearchTree.forUris(this._ignorePathCasing,()=>!0);for(const a of this.folders)this._foldersMap.set(a.uri,a)}toJSON(){return{id:this.id,folders:this.folders,transient:this.transient,configuration:this.configuration}}}e.Workspace=s;class i{constructor(a,u){this.raw=u,this.uri=a.uri,this.index=a.index,this.name=a.name}toJSON(){return{uri:this.uri,name:this.name,index:this.index}}}e.WorkspaceFolder=i,e.WORKSPACE_EXTENSION=\"code-workspace\",e.WORKSPACE_FILTER=[{name:(0,L.localize)(0,null),extensions:[e.WORKSPACE_EXTENSION]}],e.STANDALONE_EDITOR_WORKSPACE_ID=\"4064f6ec-cb38-4ad0-af64-ee6467e63c82\";function n(t){return t.id===e.STANDALONE_EDITOR_WORKSPACE_ID}e.isStandaloneEditorWorkspace=n}),define(ne[909],se([1,0,7,131,39,2,17,16,21,647,30,15,57,34,28,163]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";var u;Object.defineProperty(e,\"__esModule\",{value:!0}),e.ContextMenuController=void 0;let h=u=class{static get(o){return o.getContribution(u.ID)}constructor(o,d,l,p,m,v,b,w){this._contextMenuService=d,this._contextViewService=l,this._contextKeyService=p,this._keybindingService=m,this._menuService=v,this._configurationService=b,this._workspaceContextService=w,this._toDispose=new D.DisposableStore,this._contextMenuIsBeingShownCount=0,this._editor=o,this._toDispose.add(this._editor.onContextMenu(E=>this._onContextMenu(E))),this._toDispose.add(this._editor.onMouseWheel(E=>{if(this._contextMenuIsBeingShownCount>0){const I=this._contextViewService.getContextViewElement(),M=E.srcElement;M.shadowRoot&&L.getShadowRoot(I)===M.shadowRoot||this._contextViewService.hideContextView()}})),this._toDispose.add(this._editor.onKeyDown(E=>{this._editor.getOption(23)&&E.keyCode===58&&(E.preventDefault(),E.stopPropagation(),this.showContextMenu())}))}_onContextMenu(o){if(!this._editor.hasModel())return;if(!this._editor.getOption(23)){this._editor.focus(),o.target.position&&!this._editor.getSelection().containsPosition(o.target.position)&&this._editor.setPosition(o.target.position);return}if(o.target.type===12||o.target.type===6&&o.target.detail.injectedText)return;if(o.event.preventDefault(),o.event.stopPropagation(),o.target.type===11)return this._showScrollbarContextMenu(o.event);if(o.target.type!==6&&o.target.type!==7&&o.target.type!==1)return;if(this._editor.focus(),o.target.position){let l=!1;for(const p of this._editor.getSelections())if(p.containsPosition(o.target.position)){l=!0;break}l||this._editor.setPosition(o.target.position)}let d=null;o.target.type!==1&&(d=o.event),this.showContextMenu(d)}showContextMenu(o){if(!this._editor.getOption(23)||!this._editor.hasModel())return;const d=this._getMenuActions(this._editor.getModel(),this._editor.isSimpleWidget?C.MenuId.SimpleEditorContext:C.MenuId.EditorContext);d.length>0&&this._doShowContextMenu(d,o)}_getMenuActions(o,d){const l=[],p=this._menuService.createMenu(d,this._contextKeyService),m=p.getActions({arg:o.uri});p.dispose();for(const v of m){const[,b]=v;let w=0;for(const E of b)if(E instanceof C.SubmenuItemAction){const I=this._getMenuActions(o,E.item.submenu);I.length>0&&(l.push(new y.SubmenuAction(E.id,E.label,I)),w++)}else l.push(E),w++;w&&l.push(new y.Separator)}return l.length&&l.pop(),l}_doShowContextMenu(o,d=null){if(!this._editor.hasModel())return;const l=this._editor.getOption(59);this._editor.updateOptions({hover:{enabled:!1}});let p=d;if(!p){this._editor.revealPosition(this._editor.getPosition(),1),this._editor.render();const v=this._editor.getScrolledVisiblePosition(this._editor.getPosition()),b=L.getDomNodePagePosition(this._editor.getDomNode()),w=b.left+v.left,E=b.top+v.top+v.height;p={x:w,y:E}}const m=this._editor.getOption(125)&&!S.isIOS;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:m?this._editor.getDomNode():void 0,getAnchor:()=>p,getActions:()=>o,getActionViewItem:v=>{const b=this._keybindingFor(v);if(b)return new k.ActionViewItem(v,v,{label:!0,keybinding:b.getLabel(),isMenu:!0});const w=v;return typeof w.getActionViewItem==\"function\"?w.getActionViewItem():new k.ActionViewItem(v,v,{icon:!0,label:!0,isMenu:!0})},getKeyBinding:v=>this._keybindingFor(v),onHide:v=>{this._contextMenuIsBeingShownCount--,this._editor.updateOptions({hover:l})}})}_showScrollbarContextMenu(o){if(!this._editor.hasModel()||(0,a.isStandaloneEditorWorkspace)(this._workspaceContextService.getWorkspace()))return;const d=this._editor.getOption(71);let l=0;const p=E=>({id:`menu-action-${++l}`,label:E.label,tooltip:\"\",class:void 0,enabled:typeof E.enabled>\"u\"?!0:E.enabled,checked:E.checked,run:E.run}),m=(E,I)=>new y.SubmenuAction(`menu-action-${++l}`,E,I,void 0),v=(E,I,M,P,x)=>{if(!I)return p({label:E,enabled:I,run:()=>{}});const T=N=>()=>{this._configurationService.updateValue(M,N)},A=[];for(const N of x)A.push(p({label:N.label,checked:P===N.value,run:T(N.value)}));return m(E,A)},b=[];b.push(p({label:g.localize(0,null),checked:d.enabled,run:()=>{this._configurationService.updateValue(\"editor.minimap.enabled\",!d.enabled)}})),b.push(new y.Separator),b.push(p({label:g.localize(1,null),enabled:d.enabled,checked:d.renderCharacters,run:()=>{this._configurationService.updateValue(\"editor.minimap.renderCharacters\",!d.renderCharacters)}})),b.push(v(g.localize(2,null),d.enabled,\"editor.minimap.size\",d.size,[{label:g.localize(3,null),value:\"proportional\"},{label:g.localize(4,null),value:\"fill\"},{label:g.localize(5,null),value:\"fit\"}])),b.push(v(g.localize(6,null),d.enabled,\"editor.minimap.showSlider\",d.showSlider,[{label:g.localize(7,null),value:\"mouseover\"},{label:g.localize(8,null),value:\"always\"}]));const w=this._editor.getOption(125)&&!S.isIOS;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:w?this._editor.getDomNode():void 0,getAnchor:()=>o,getActions:()=>b,onHide:E=>{this._contextMenuIsBeingShownCount--,this._editor.focus()}})}_keybindingFor(o){return this._keybindingService.lookupKeybinding(o.id)}dispose(){this._contextMenuIsBeingShownCount>0&&this._contextViewService.hideContextView(),this._toDispose.dispose()}};e.ContextMenuController=h,h.ID=\"editor.contrib.contextmenu\",e.ContextMenuController=h=u=ke([fe(1,i.IContextMenuService),fe(2,i.IContextViewService),fe(3,s.IContextKeyService),fe(4,n.IKeybindingService),fe(5,C.IMenuService),fe(6,t.IConfigurationService),fe(7,a.IWorkspaceContextService)],h);class r extends f.EditorAction{constructor(){super({id:\"editor.action.showContextMenu\",label:g.localize(9,null),alias:\"Show Editor Context Menu\",precondition:void 0,kbOpts:{kbExpr:_.EditorContextKeys.textInputFocus,primary:1092,weight:100}})}run(o,d){var l;(l=h.get(d))===null||l===void 0||l.showContextMenu()}}(0,f.registerEditorContribution)(h.ID,h,2),(0,f.registerEditorAction)(r)}),define(ne[376],se([1,0,14,171,2,107,54,45,22,18,651,163]),function(Q,e,L,k,y,D,S,f,_,g,C,s){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.DefaultPasteProvidersFeature=e.DefaultDropProvidersFeature=void 0;const i=(0,C.localize)(0,null);class n{provideDocumentPasteEdits(d,l,p,m){return we(this,void 0,void 0,function*(){const v=yield this.getEdit(p,m);return v?{insertText:v.insertText,label:v.label,detail:v.detail,handledMimeType:v.handledMimeType,yieldTo:v.yieldTo}:void 0})}provideDocumentOnDropEdits(d,l,p,m){return we(this,void 0,void 0,function*(){const v=yield this.getEdit(p,m);return v?{insertText:v.insertText,label:v.label,handledMimeType:v.handledMimeType,yieldTo:v.yieldTo}:void 0})}}class t extends n{constructor(){super(...arguments),this.id=\"text\",this.dropMimeTypes=[D.Mimes.text],this.pasteMimeTypes=[D.Mimes.text]}getEdit(d,l){return we(this,void 0,void 0,function*(){const p=d.get(D.Mimes.text);if(!p||d.has(D.Mimes.uriList))return;const m=yield p.asString();return{handledMimeType:D.Mimes.text,label:(0,C.localize)(1,null),detail:i,insertText:m}})}}class a extends n{constructor(){super(...arguments),this.id=\"uri\",this.dropMimeTypes=[D.Mimes.uriList],this.pasteMimeTypes=[D.Mimes.uriList]}getEdit(d,l){return we(this,void 0,void 0,function*(){const p=yield h(d);if(!p.length||l.isCancellationRequested)return;let m=0;const v=p.map(({uri:w,originalText:E})=>w.scheme===S.Schemas.file?w.fsPath:(m++,E)).join(\" \");let b;return m>0?b=p.length>1?(0,C.localize)(2,null):(0,C.localize)(3,null):b=p.length>1?(0,C.localize)(4,null):(0,C.localize)(5,null),{handledMimeType:D.Mimes.uriList,insertText:v,label:b,detail:i}})}}let u=class extends n{constructor(d){super(),this._workspaceContextService=d,this.id=\"relativePath\",this.dropMimeTypes=[D.Mimes.uriList],this.pasteMimeTypes=[D.Mimes.uriList]}getEdit(d,l){return we(this,void 0,void 0,function*(){const p=yield h(d);if(!p.length||l.isCancellationRequested)return;const m=(0,L.coalesce)(p.map(({uri:v})=>{const b=this._workspaceContextService.getWorkspaceFolder(v);return b?(0,f.relativePath)(b.uri,v):void 0}));if(m.length)return{handledMimeType:D.Mimes.uriList,insertText:m.join(\" \"),label:p.length>1?(0,C.localize)(6,null):(0,C.localize)(7,null),detail:i}})}};u=ke([fe(0,s.IWorkspaceContextService)],u);function h(o){return we(this,void 0,void 0,function*(){const d=o.get(D.Mimes.uriList);if(!d)return[];const l=yield d.asString(),p=[];for(const m of k.UriList.parse(l))try{p.push({uri:_.URI.parse(m),originalText:m})}catch{}return p})}let r=class extends y.Disposable{constructor(d,l){super(),this._register(d.documentOnDropEditProvider.register(\"*\",new t)),this._register(d.documentOnDropEditProvider.register(\"*\",new a)),this._register(d.documentOnDropEditProvider.register(\"*\",new u(l)))}};e.DefaultDropProvidersFeature=r,e.DefaultDropProvidersFeature=r=ke([fe(0,g.ILanguageFeaturesService),fe(1,s.IWorkspaceContextService)],r);let c=class extends y.Disposable{constructor(d,l){super(),this._register(d.documentPasteEditProvider.register(\"*\",new t)),this._register(d.documentPasteEditProvider.register(\"*\",new a)),this._register(d.documentPasteEditProvider.register(\"*\",new u(l)))}};e.DefaultPasteProvidersFeature=c,e.DefaultPasteProvidersFeature=c=ke([fe(0,g.ILanguageFeaturesService),fe(1,s.IWorkspaceContextService)],c)}),define(ne[910],se([1,0,16,149,888,376,649]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),(0,L.registerEditorContribution)(y.CopyPasteController.ID,y.CopyPasteController,0),(0,k.registerEditorFeature)(D.DefaultPasteProvidersFeature),(0,L.registerEditorCommand)(new class extends L.EditorCommand{constructor(){super({id:y.changePasteTypeCommandId,precondition:y.pasteWidgetVisibleCtx,kbOpts:{weight:100,primary:2137}})}runEditorCommand(f,_,g){var C;return(C=y.CopyPasteController.get(_))===null||C===void 0?void 0:C.changePasteType()}}),(0,L.registerEditorAction)(class extends L.EditorAction{constructor(){super({id:\"editor.action.pasteAs\",label:S.localize(0,null),alias:\"Paste As...\",precondition:void 0,description:{description:\"Paste as\",args:[{name:\"args\",schema:{type:\"object\",properties:{id:{type:\"string\",description:S.localize(1,null)}}}}]}})}run(f,_,g){var C;const s=typeof g?.id==\"string\"?g.id:void 0;return(C=y.CopyPasteController.get(_))===null||C===void 0?void 0:C.pasteAs(s)}})}),define(ne[911],se([1,0,16,241,149,376,652,98,37,889]),function(Q,e,L,k,y,D,S,f,_,g){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),(0,L.registerEditorContribution)(g.DropIntoEditorController.ID,g.DropIntoEditorController,2),(0,L.registerEditorCommand)(new class extends L.EditorCommand{constructor(){super({id:g.changeDropTypeCommandId,precondition:g.dropWidgetVisibleCtx,kbOpts:{weight:100,primary:2137}})}runEditorCommand(C,s,i){var n;(n=g.DropIntoEditorController.get(s))===null||n===void 0||n.changeDropType()}}),(0,y.registerEditorFeature)(D.DefaultDropProvidersFeature),_.Registry.as(f.Extensions.Configuration).registerConfiguration(Object.assign(Object.assign({},k.editorConfigurationBaseNode),{properties:{[g.defaultProviderConfig]:{type:\"object\",scope:5,description:S.localize(0,null),default:{},additionalProperties:{type:\"string\"}}}}))}),define(ne[912],se([1,0,571,92,45,11,170,32,128,698,163]),function(Q,e,L,k,y,D,S,f,_,g,C){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RandomBasedVariableResolver=e.WorkspaceBasedVariableResolver=e.TimeBasedVariableResolver=e.CommentBasedVariableResolver=e.ClipboardBasedVariableResolver=e.ModelBasedVariableResolver=e.SelectionBasedVariableResolver=e.CompositeSnippetVariableResolver=e.KnownSnippetVariableNames=void 0,e.KnownSnippetVariableNames=Object.freeze({CURRENT_YEAR:!0,CURRENT_YEAR_SHORT:!0,CURRENT_MONTH:!0,CURRENT_DATE:!0,CURRENT_HOUR:!0,CURRENT_MINUTE:!0,CURRENT_SECOND:!0,CURRENT_DAY_NAME:!0,CURRENT_DAY_NAME_SHORT:!0,CURRENT_MONTH_NAME:!0,CURRENT_MONTH_NAME_SHORT:!0,CURRENT_SECONDS_UNIX:!0,CURRENT_TIMEZONE_OFFSET:!0,SELECTION:!0,CLIPBOARD:!0,TM_SELECTED_TEXT:!0,TM_CURRENT_LINE:!0,TM_CURRENT_WORD:!0,TM_LINE_INDEX:!0,TM_LINE_NUMBER:!0,TM_FILENAME:!0,TM_FILENAME_BASE:!0,TM_DIRECTORY:!0,TM_FILEPATH:!0,CURSOR_INDEX:!0,CURSOR_NUMBER:!0,RELATIVE_FILEPATH:!0,BLOCK_COMMENT_START:!0,BLOCK_COMMENT_END:!0,LINE_COMMENT:!0,WORKSPACE_NAME:!0,WORKSPACE_FOLDER:!0,RANDOM:!0,RANDOM_HEX:!0,UUID:!0});class s{constructor(o){this._delegates=o}resolve(o){for(const d of this._delegates){const l=d.resolve(o);if(l!==void 0)return l}}}e.CompositeSnippetVariableResolver=s;class i{constructor(o,d,l,p){this._model=o,this._selection=d,this._selectionIdx=l,this._overtypingCapturer=p}resolve(o){const{name:d}=o;if(d===\"SELECTION\"||d===\"TM_SELECTED_TEXT\"){let l=this._model.getValueInRange(this._selection)||void 0,p=this._selection.startLineNumber!==this._selection.endLineNumber;if(!l&&this._overtypingCapturer){const m=this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);m&&(l=m.value,p=m.multiline)}if(l&&p&&o.snippet){const m=this._model.getLineContent(this._selection.startLineNumber),v=(0,D.getLeadingWhitespace)(m,0,this._selection.startColumn-1);let b=v;o.snippet.walk(E=>E===o?!1:(E instanceof _.Text&&(b=(0,D.getLeadingWhitespace)((0,D.splitLines)(E.value).pop())),!0));const w=(0,D.commonPrefixLength)(b,v);l=l.replace(/(\\r\\n|\\r|\\n)(.*)/g,(E,I,M)=>`${I}${b.substr(w)}${M}`)}return l}else{if(d===\"TM_CURRENT_LINE\")return this._model.getLineContent(this._selection.positionLineNumber);if(d===\"TM_CURRENT_WORD\"){const l=this._model.getWordAtPosition({lineNumber:this._selection.positionLineNumber,column:this._selection.positionColumn});return l&&l.word||void 0}else{if(d===\"TM_LINE_INDEX\")return String(this._selection.positionLineNumber-1);if(d===\"TM_LINE_NUMBER\")return String(this._selection.positionLineNumber);if(d===\"CURSOR_INDEX\")return String(this._selectionIdx);if(d===\"CURSOR_NUMBER\")return String(this._selectionIdx+1)}}}}e.SelectionBasedVariableResolver=i;class n{constructor(o,d){this._labelService=o,this._model=d}resolve(o){const{name:d}=o;if(d===\"TM_FILENAME\")return k.basename(this._model.uri.fsPath);if(d===\"TM_FILENAME_BASE\"){const l=k.basename(this._model.uri.fsPath),p=l.lastIndexOf(\".\");return p<=0?l:l.slice(0,p)}else{if(d===\"TM_DIRECTORY\")return k.dirname(this._model.uri.fsPath)===\".\"?\"\":this._labelService.getUriLabel((0,y.dirname)(this._model.uri));if(d===\"TM_FILEPATH\")return this._labelService.getUriLabel(this._model.uri);if(d===\"RELATIVE_FILEPATH\")return this._labelService.getUriLabel(this._model.uri,{relative:!0,noPrefix:!0})}}}e.ModelBasedVariableResolver=n;class t{constructor(o,d,l,p){this._readClipboardText=o,this._selectionIdx=d,this._selectionCount=l,this._spread=p}resolve(o){if(o.name!==\"CLIPBOARD\")return;const d=this._readClipboardText();if(d){if(this._spread){const l=d.split(/\\r\\n|\\n|\\r/).filter(p=>!(0,D.isFalsyOrWhitespace)(p));if(l.length===this._selectionCount)return l[this._selectionIdx]}return d}}}e.ClipboardBasedVariableResolver=t;let a=class{constructor(o,d,l){this._model=o,this._selection=d,this._languageConfigurationService=l}resolve(o){const{name:d}=o,l=this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber,this._selection.selectionStartColumn),p=this._languageConfigurationService.getLanguageConfiguration(l).comments;if(p){if(d===\"LINE_COMMENT\")return p.lineCommentToken||void 0;if(d===\"BLOCK_COMMENT_START\")return p.blockCommentStartToken||void 0;if(d===\"BLOCK_COMMENT_END\")return p.blockCommentEndToken||void 0}}};e.CommentBasedVariableResolver=a,e.CommentBasedVariableResolver=a=ke([fe(2,f.ILanguageConfigurationService)],a);class u{constructor(){this._date=new Date}resolve(o){const{name:d}=o;if(d===\"CURRENT_YEAR\")return String(this._date.getFullYear());if(d===\"CURRENT_YEAR_SHORT\")return String(this._date.getFullYear()).slice(-2);if(d===\"CURRENT_MONTH\")return String(this._date.getMonth().valueOf()+1).padStart(2,\"0\");if(d===\"CURRENT_DATE\")return String(this._date.getDate().valueOf()).padStart(2,\"0\");if(d===\"CURRENT_HOUR\")return String(this._date.getHours().valueOf()).padStart(2,\"0\");if(d===\"CURRENT_MINUTE\")return String(this._date.getMinutes().valueOf()).padStart(2,\"0\");if(d===\"CURRENT_SECOND\")return String(this._date.getSeconds().valueOf()).padStart(2,\"0\");if(d===\"CURRENT_DAY_NAME\")return u.dayNames[this._date.getDay()];if(d===\"CURRENT_DAY_NAME_SHORT\")return u.dayNamesShort[this._date.getDay()];if(d===\"CURRENT_MONTH_NAME\")return u.monthNames[this._date.getMonth()];if(d===\"CURRENT_MONTH_NAME_SHORT\")return u.monthNamesShort[this._date.getMonth()];if(d===\"CURRENT_SECONDS_UNIX\")return String(Math.floor(this._date.getTime()/1e3));if(d===\"CURRENT_TIMEZONE_OFFSET\"){const l=this._date.getTimezoneOffset(),p=l>0?\"-\":\"+\",m=Math.trunc(Math.abs(l/60)),v=m<10?\"0\"+m:m,b=Math.abs(l)-m*60,w=b<10?\"0\"+b:b;return p+v+\":\"+w}}}e.TimeBasedVariableResolver=u,u.dayNames=[g.localize(0,null),g.localize(1,null),g.localize(2,null),g.localize(3,null),g.localize(4,null),g.localize(5,null),g.localize(6,null)],u.dayNamesShort=[g.localize(7,null),g.localize(8,null),g.localize(9,null),g.localize(10,null),g.localize(11,null),g.localize(12,null),g.localize(13,null)],u.monthNames=[g.localize(14,null),g.localize(15,null),g.localize(16,null),g.localize(17,null),g.localize(18,null),g.localize(19,null),g.localize(20,null),g.localize(21,null),g.localize(22,null),g.localize(23,null),g.localize(24,null),g.localize(25,null)],u.monthNamesShort=[g.localize(26,null),g.localize(27,null),g.localize(28,null),g.localize(29,null),g.localize(30,null),g.localize(31,null),g.localize(32,null),g.localize(33,null),g.localize(34,null),g.localize(35,null),g.localize(36,null),g.localize(37,null)];class h{constructor(o){this._workspaceService=o}resolve(o){if(!this._workspaceService)return;const d=(0,C.toWorkspaceIdentifier)(this._workspaceService.getWorkspace());if(!(0,C.isEmptyWorkspaceIdentifier)(d)){if(o.name===\"WORKSPACE_NAME\")return this._resolveWorkspaceName(d);if(o.name===\"WORKSPACE_FOLDER\")return this._resoveWorkspacePath(d)}}_resolveWorkspaceName(o){if((0,C.isSingleFolderWorkspaceIdentifier)(o))return k.basename(o.uri.path);let d=k.basename(o.configPath.path);return d.endsWith(C.WORKSPACE_EXTENSION)&&(d=d.substr(0,d.length-C.WORKSPACE_EXTENSION.length-1)),d}_resoveWorkspacePath(o){if((0,C.isSingleFolderWorkspaceIdentifier)(o))return(0,L.normalizeDriveLetter)(o.uri.fsPath);const d=k.basename(o.configPath.path);let l=o.configPath.fsPath;return l.endsWith(d)&&(l=l.substr(0,l.length-d.length-1)),l?(0,L.normalizeDriveLetter)(l):\"/\"}}e.WorkspaceBasedVariableResolver=h;class r{resolve(o){const{name:d}=o;if(d===\"RANDOM\")return Math.random().toString().slice(-6);if(d===\"RANDOM_HEX\")return Math.random().toString(16).slice(-6);if(d===\"UUID\")return(0,S.generateUuid)()}}e.RandomBasedVariableResolver=r}),define(ne[377],se([1,0,14,2,11,73,5,24,32,40,158,163,128,912,460]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";var t;Object.defineProperty(e,\"__esModule\",{value:!0}),e.SnippetSession=e.OneSnippet=void 0;class a{constructor(c,o,d){this._editor=c,this._snippet=o,this._snippetLineLeadingWhitespace=d,this._offset=-1,this._nestingLevel=1,this._placeholderGroups=(0,L.groupBy)(o.placeholders,i.Placeholder.compareByIndex),this._placeholderGroupsIdx=-1}initialize(c){this._offset=c.newPosition}dispose(){this._placeholderDecorations&&this._editor.removeDecorations([...this._placeholderDecorations.values()]),this._placeholderGroups.length=0}_initDecorations(){if(this._offset===-1)throw new Error(\"Snippet not initialized!\");if(this._placeholderDecorations)return;this._placeholderDecorations=new Map;const c=this._editor.getModel();this._editor.changeDecorations(o=>{for(const d of this._snippet.placeholders){const l=this._snippet.offset(d),p=this._snippet.fullLen(d),m=S.Range.fromPositions(c.getPositionAt(this._offset+l),c.getPositionAt(this._offset+l+p)),v=d.isFinalTabstop?a._decor.inactiveFinal:a._decor.inactive,b=o.addDecoration(m,v);this._placeholderDecorations.set(d,b)}})}move(c){if(!this._editor.hasModel())return[];if(this._initDecorations(),this._placeholderGroupsIdx>=0){const l=[];for(const p of this._placeholderGroups[this._placeholderGroupsIdx])if(p.transform){const m=this._placeholderDecorations.get(p),v=this._editor.getModel().getDecorationRange(m),b=this._editor.getModel().getValueInRange(v),w=p.transform.resolve(b).split(/\\r\\n|\\r|\\n/);for(let E=1;E<w.length;E++)w[E]=this._editor.getModel().normalizeIndentation(this._snippetLineLeadingWhitespace+w[E]);l.push(D.EditOperation.replace(v,w.join(this._editor.getModel().getEOL())))}l.length>0&&this._editor.executeEdits(\"snippet.placeholderTransform\",l)}let o=!1;c===!0&&this._placeholderGroupsIdx<this._placeholderGroups.length-1?(this._placeholderGroupsIdx+=1,o=!0):c===!1&&this._placeholderGroupsIdx>0&&(this._placeholderGroupsIdx-=1,o=!0);const d=this._editor.getModel().changeDecorations(l=>{const p=new Set,m=[];for(const v of this._placeholderGroups[this._placeholderGroupsIdx]){const b=this._placeholderDecorations.get(v),w=this._editor.getModel().getDecorationRange(b);m.push(new f.Selection(w.startLineNumber,w.startColumn,w.endLineNumber,w.endColumn)),o=o&&this._hasPlaceholderBeenCollapsed(v),l.changeDecorationOptions(b,v.isFinalTabstop?a._decor.activeFinal:a._decor.active),p.add(v);for(const E of this._snippet.enclosingPlaceholders(v)){const I=this._placeholderDecorations.get(E);l.changeDecorationOptions(I,E.isFinalTabstop?a._decor.activeFinal:a._decor.active),p.add(E)}}for(const[v,b]of this._placeholderDecorations)p.has(v)||l.changeDecorationOptions(b,v.isFinalTabstop?a._decor.inactiveFinal:a._decor.inactive);return m});return o?this.move(c):d??[]}_hasPlaceholderBeenCollapsed(c){let o=c;for(;o;){if(o instanceof i.Placeholder){const d=this._placeholderDecorations.get(o);if(this._editor.getModel().getDecorationRange(d).isEmpty()&&o.toString().length>0)return!0}o=o.parent}return!1}get isAtFirstPlaceholder(){return this._placeholderGroupsIdx<=0||this._placeholderGroups.length===0}get isAtLastPlaceholder(){return this._placeholderGroupsIdx===this._placeholderGroups.length-1}get hasPlaceholder(){return this._snippet.placeholders.length>0}get isTrivialSnippet(){if(this._snippet.placeholders.length===0)return!0;if(this._snippet.placeholders.length===1){const[c]=this._snippet.placeholders;if(c.isFinalTabstop&&this._snippet.rightMostDescendant===c)return!0}return!1}computePossibleSelections(){const c=new Map;for(const o of this._placeholderGroups){let d;for(const l of o){if(l.isFinalTabstop)break;d||(d=[],c.set(l.index,d));const p=this._placeholderDecorations.get(l),m=this._editor.getModel().getDecorationRange(p);if(!m){c.delete(l.index);break}d.push(m)}}return c}get activeChoice(){if(!this._placeholderDecorations)return;const c=this._placeholderGroups[this._placeholderGroupsIdx][0];if(!c?.choice)return;const o=this._placeholderDecorations.get(c);if(!o)return;const d=this._editor.getModel().getDecorationRange(o);if(d)return{range:d,choice:c.choice}}get hasChoice(){let c=!1;return this._snippet.walk(o=>(c=o instanceof i.Choice,!c)),c}merge(c){const o=this._editor.getModel();this._nestingLevel*=10,this._editor.changeDecorations(d=>{for(const l of this._placeholderGroups[this._placeholderGroupsIdx]){const p=c.shift();console.assert(p._offset!==-1),console.assert(!p._placeholderDecorations);const m=p._snippet.placeholderInfo.last.index;for(const b of p._snippet.placeholderInfo.all)b.isFinalTabstop?b.index=l.index+(m+1)/this._nestingLevel:b.index=l.index+b.index/this._nestingLevel;this._snippet.replace(l,p._snippet.children);const v=this._placeholderDecorations.get(l);d.removeDecoration(v),this._placeholderDecorations.delete(l);for(const b of p._snippet.placeholders){const w=p._snippet.offset(b),E=p._snippet.fullLen(b),I=S.Range.fromPositions(o.getPositionAt(p._offset+w),o.getPositionAt(p._offset+w+E)),M=d.addDecoration(I,a._decor.inactive);this._placeholderDecorations.set(b,M)}}this._placeholderGroups=(0,L.groupBy)(this._snippet.placeholders,i.Placeholder.compareByIndex)})}}e.OneSnippet=a,a._decor={active:g.ModelDecorationOptions.register({description:\"snippet-placeholder-1\",stickiness:0,className:\"snippet-placeholder\"}),inactive:g.ModelDecorationOptions.register({description:\"snippet-placeholder-2\",stickiness:1,className:\"snippet-placeholder\"}),activeFinal:g.ModelDecorationOptions.register({description:\"snippet-placeholder-3\",stickiness:1,className:\"finish-snippet-placeholder\"}),inactiveFinal:g.ModelDecorationOptions.register({description:\"snippet-placeholder-4\",stickiness:1,className:\"finish-snippet-placeholder\"})};const u={overwriteBefore:0,overwriteAfter:0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let h=t=class{static adjustWhitespace(c,o,d,l,p){const m=c.getLineContent(o.lineNumber),v=(0,y.getLeadingWhitespace)(m,0,o.column-1);let b;return l.walk(w=>{if(!(w instanceof i.Text)||w.parent instanceof i.Choice||p&&!p.has(w))return!0;const E=w.value.split(/\\r\\n|\\r|\\n/);if(d){const M=l.offset(w);if(M===0)E[0]=c.normalizeIndentation(E[0]);else{b=b??l.toString();const P=b.charCodeAt(M-1);(P===10||P===13)&&(E[0]=c.normalizeIndentation(v+E[0]))}for(let P=1;P<E.length;P++)E[P]=c.normalizeIndentation(v+E[P])}const I=E.join(c.getEOL());return I!==w.value&&(w.parent.replace(w,[new i.Text(I)]),b=void 0),!0}),v}static adjustSelection(c,o,d,l){if(d!==0||l!==0){const{positionLineNumber:p,positionColumn:m}=o,v=m-d,b=m+l,w=c.validateRange({startLineNumber:p,startColumn:v,endLineNumber:p,endColumn:b});o=f.Selection.createWithDirection(w.startLineNumber,w.startColumn,w.endLineNumber,w.endColumn,o.getDirection())}return o}static createEditsAndSnippetsFromSelections(c,o,d,l,p,m,v,b,w){const E=[],I=[];if(!c.hasModel())return{edits:E,snippets:I};const M=c.getModel(),P=c.invokeWithinContext(W=>W.get(s.IWorkspaceContextService)),x=c.invokeWithinContext(W=>new n.ModelBasedVariableResolver(W.get(C.ILabelService),M)),T=()=>v,A=M.getValueInRange(t.adjustSelection(M,c.getSelection(),d,0)),N=M.getValueInRange(t.adjustSelection(M,c.getSelection(),0,l)),F=M.getLineFirstNonWhitespaceColumn(c.getSelection().positionLineNumber),O=c.getSelections().map((W,U)=>({selection:W,idx:U})).sort((W,U)=>S.Range.compareRangesUsingStarts(W.selection,U.selection));for(const{selection:W,idx:U}of O){let j=t.adjustSelection(M,W,d,0),R=t.adjustSelection(M,W,0,l);A!==M.getValueInRange(j)&&(j=W),N!==M.getValueInRange(R)&&(R=W);const K=W.setStartPosition(j.startLineNumber,j.startColumn).setEndPosition(R.endLineNumber,R.endColumn),G=new i.SnippetParser().parse(o,!0,p),Z=K.getStartPosition(),J=t.adjustWhitespace(M,Z,m||U>0&&F!==M.getLineFirstNonWhitespaceColumn(W.positionLineNumber),G);G.resolveVariables(new n.CompositeSnippetVariableResolver([x,new n.ClipboardBasedVariableResolver(T,U,O.length,c.getOption(77)===\"spread\"),new n.SelectionBasedVariableResolver(M,W,U,b),new n.CommentBasedVariableResolver(M,W,w),new n.TimeBasedVariableResolver,new n.WorkspaceBasedVariableResolver(P),new n.RandomBasedVariableResolver])),E[U]=D.EditOperation.replace(K,G.toString()),E[U].identifier={major:U,minor:0},E[U]._isTracked=!0,I[U]=new a(c,G,J)}return{edits:E,snippets:I}}static createEditsAndSnippetsFromEdits(c,o,d,l,p,m,v){if(!c.hasModel()||o.length===0)return{edits:[],snippets:[]};const b=[],w=c.getModel(),E=new i.SnippetParser,I=new i.TextmateSnippet,M=new n.CompositeSnippetVariableResolver([c.invokeWithinContext(x=>new n.ModelBasedVariableResolver(x.get(C.ILabelService),w)),new n.ClipboardBasedVariableResolver(()=>p,0,c.getSelections().length,c.getOption(77)===\"spread\"),new n.SelectionBasedVariableResolver(w,c.getSelection(),0,m),new n.CommentBasedVariableResolver(w,c.getSelection(),v),new n.TimeBasedVariableResolver,new n.WorkspaceBasedVariableResolver(c.invokeWithinContext(x=>x.get(s.IWorkspaceContextService))),new n.RandomBasedVariableResolver]);o=o.sort((x,T)=>S.Range.compareRangesUsingStarts(x.range,T.range));let P=0;for(let x=0;x<o.length;x++){const{range:T,template:A}=o[x];if(x>0){const U=o[x-1].range,j=S.Range.fromPositions(U.getEndPosition(),T.getStartPosition()),R=new i.Text(w.getValueInRange(j));I.appendChild(R),P+=R.value.length}const N=E.parseFragment(A,I);t.adjustWhitespace(w,T.getStartPosition(),!0,I,new Set(N)),I.resolveVariables(M);const F=I.toString(),O=F.slice(P);P=F.length;const W=D.EditOperation.replace(T,O);W.identifier={major:x,minor:0},W._isTracked=!0,b.push(W)}return E.ensureFinalTabstop(I,d,!0),{edits:b,snippets:[new a(c,I,\"\")]}}constructor(c,o,d=u,l){this._editor=c,this._template=o,this._options=d,this._languageConfigurationService=l,this._templateMerges=[],this._snippets=[]}dispose(){(0,k.dispose)(this._snippets)}_logInfo(){return`template=\"${this._template}\", merged_templates=\"${this._templateMerges.join(\" -> \")}\"`}insert(){if(!this._editor.hasModel())return;const{edits:c,snippets:o}=typeof this._template==\"string\"?t.createEditsAndSnippetsFromSelections(this._editor,this._template,this._options.overwriteBefore,this._options.overwriteAfter,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService):t.createEditsAndSnippetsFromEdits(this._editor,this._template,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService);this._snippets=o,this._editor.executeEdits(\"snippet\",c,d=>{const l=d.filter(p=>!!p.identifier);for(let p=0;p<o.length;p++)o[p].initialize(l[p].textChange);return this._snippets[0].hasPlaceholder?this._move(!0):l.map(p=>f.Selection.fromPositions(p.range.getEndPosition()))}),this._editor.revealRange(this._editor.getSelections()[0])}merge(c,o=u){if(!this._editor.hasModel())return;this._templateMerges.push([this._snippets[0]._nestingLevel,this._snippets[0]._placeholderGroupsIdx,c]);const{edits:d,snippets:l}=t.createEditsAndSnippetsFromSelections(this._editor,c,o.overwriteBefore,o.overwriteAfter,!0,o.adjustWhitespace,o.clipboardText,o.overtypingCapturer,this._languageConfigurationService);this._editor.executeEdits(\"snippet\",d,p=>{const m=p.filter(b=>!!b.identifier);for(let b=0;b<l.length;b++)l[b].initialize(m[b].textChange);const v=l[0].isTrivialSnippet;if(!v){for(const b of this._snippets)b.merge(l);console.assert(l.length===0)}return this._snippets[0].hasPlaceholder&&!v?this._move(void 0):m.map(b=>f.Selection.fromPositions(b.range.getEndPosition()))})}next(){const c=this._move(!0);this._editor.setSelections(c),this._editor.revealPositionInCenterIfOutsideViewport(c[0].getPosition())}prev(){const c=this._move(!1);this._editor.setSelections(c),this._editor.revealPositionInCenterIfOutsideViewport(c[0].getPosition())}_move(c){const o=[];for(const d of this._snippets){const l=d.move(c);o.push(...l)}return o}get isAtFirstPlaceholder(){return this._snippets[0].isAtFirstPlaceholder}get isAtLastPlaceholder(){return this._snippets[0].isAtLastPlaceholder}get hasPlaceholder(){return this._snippets[0].hasPlaceholder}get hasChoice(){return this._snippets[0].hasChoice}get activeChoice(){return this._snippets[0].activeChoice}isSelectionWithinPlaceholders(){if(!this.hasPlaceholder)return!1;const c=this._editor.getSelections();if(c.length<this._snippets.length)return!1;const o=new Map;for(const d of this._snippets){const l=d.computePossibleSelections();if(o.size===0)for(const[p,m]of l){m.sort(S.Range.compareRangesUsingStarts);for(const v of c)if(m[0].containsRange(v)){o.set(p,[]);break}}if(o.size===0)return!1;o.forEach((p,m)=>{p.push(...l.get(m))})}c.sort(S.Range.compareRangesUsingStarts);for(const[d,l]of o){if(l.length!==c.length){o.delete(d);continue}l.sort(S.Range.compareRangesUsingStarts);for(let p=0;p<l.length;p++)if(!l[p].containsRange(c[p])){o.delete(d);continue}}return o.size>0}};e.SnippetSession=h,e.SnippetSession=h=t=ke([fe(3,_.ILanguageConfigurationService)],h)}),define(ne[194],se([1,0,2,20,16,12,21,32,18,135,697,15,70,377]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n){\"use strict\";var t;Object.defineProperty(e,\"__esModule\",{value:!0}),e.SnippetController2=void 0;const a={overwriteBefore:0,overwriteAfter:0,undoStopBefore:!0,undoStopAfter:!0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let u=t=class{static get(c){return c.getContribution(t.ID)}constructor(c,o,d,l,p){this._editor=c,this._logService=o,this._languageFeaturesService=d,this._languageConfigurationService=p,this._snippetListener=new L.DisposableStore,this._modelVersionId=-1,this._inSnippet=t.InSnippetMode.bindTo(l),this._hasNextTabstop=t.HasNextTabstop.bindTo(l),this._hasPrevTabstop=t.HasPrevTabstop.bindTo(l)}dispose(){var c;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),(c=this._session)===null||c===void 0||c.dispose(),this._snippetListener.dispose()}insert(c,o){try{this._doInsert(c,typeof o>\"u\"?a:Object.assign(Object.assign({},a),o))}catch(d){this.cancel(),this._logService.error(d),this._logService.error(\"snippet_error\"),this._logService.error(\"insert_template=\",c),this._logService.error(\"existing_template=\",this._session?this._session._logInfo():\"<no_session>\")}}_doInsert(c,o){var d;if(this._editor.hasModel()){if(this._snippetListener.clear(),o.undoStopBefore&&this._editor.getModel().pushStackElement(),this._session&&typeof c!=\"string\"&&this.cancel(),this._session?((0,k.assertType)(typeof c==\"string\"),this._session.merge(c,o)):(this._modelVersionId=this._editor.getModel().getAlternativeVersionId(),this._session=new n.SnippetSession(this._editor,c,o,this._languageConfigurationService),this._session.insert()),o.undoStopAfter&&this._editor.getModel().pushStackElement(),!((d=this._session)===null||d===void 0)&&d.hasChoice){const l={_debugDisplayName:\"snippetChoiceCompletions\",provideCompletionItems:(E,I)=>{if(!this._session||E!==this._editor.getModel()||!D.Position.equals(this._editor.getPosition(),I))return;const{activeChoice:M}=this._session;if(!M||M.choice.options.length===0)return;const P=E.getValueInRange(M.range),x=!!M.choice.options.find(A=>A.value===P),T=[];for(let A=0;A<M.choice.options.length;A++){const N=M.choice.options[A];T.push({kind:13,label:N.value,insertText:N.value,sortText:\"a\".repeat(A+1),range:M.range,filterText:x?`${P}_${N.value}`:void 0,command:{id:\"jumpToNextSnippetPlaceholder\",title:(0,C.localize)(3,null)}})}return{suggestions:T}}},p=this._editor.getModel();let m,v=!1;const b=()=>{m?.dispose(),v=!1},w=()=>{v||(m=this._languageFeaturesService.completionProvider.register({language:p.getLanguageId(),pattern:p.uri.fsPath,scheme:p.uri.scheme,exclusive:!0},l),this._snippetListener.add(m),v=!0)};this._choiceCompletions={provider:l,enable:w,disable:b}}this._updateState(),this._snippetListener.add(this._editor.onDidChangeModelContent(l=>l.isFlush&&this.cancel())),this._snippetListener.add(this._editor.onDidChangeModel(()=>this.cancel())),this._snippetListener.add(this._editor.onDidChangeCursorSelection(()=>this._updateState()))}}_updateState(){if(!(!this._session||!this._editor.hasModel())){if(this._modelVersionId===this._editor.getModel().getAlternativeVersionId())return this.cancel();if(!this._session.hasPlaceholder)return this.cancel();if(this._session.isAtLastPlaceholder||!this._session.isSelectionWithinPlaceholders())return this._editor.getModel().pushStackElement(),this.cancel();this._inSnippet.set(!0),this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder),this._hasNextTabstop.set(!this._session.isAtLastPlaceholder),this._handleChoice()}}_handleChoice(){var c;if(!this._session||!this._editor.hasModel()){this._currentChoice=void 0;return}const{activeChoice:o}=this._session;if(!o||!this._choiceCompletions){(c=this._choiceCompletions)===null||c===void 0||c.disable(),this._currentChoice=void 0;return}this._currentChoice!==o.choice&&(this._currentChoice=o.choice,this._choiceCompletions.enable(),queueMicrotask(()=>{(0,g.showSimpleSuggestions)(this._editor,this._choiceCompletions.provider)}))}finish(){for(;this._inSnippet.get();)this.next()}cancel(c=!1){var o;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),this._snippetListener.clear(),this._currentChoice=void 0,(o=this._session)===null||o===void 0||o.dispose(),this._session=void 0,this._modelVersionId=-1,c&&this._editor.setSelections([this._editor.getSelection()])}prev(){var c;(c=this._session)===null||c===void 0||c.prev(),this._updateState()}next(){var c;(c=this._session)===null||c===void 0||c.next(),this._updateState()}isInSnippet(){return!!this._inSnippet.get()}};e.SnippetController2=u,u.ID=\"snippetController2\",u.InSnippetMode=new s.RawContextKey(\"inSnippetMode\",!1,(0,C.localize)(0,null)),u.HasNextTabstop=new s.RawContextKey(\"hasNextTabstop\",!1,(0,C.localize)(1,null)),u.HasPrevTabstop=new s.RawContextKey(\"hasPrevTabstop\",!1,(0,C.localize)(2,null)),e.SnippetController2=u=t=ke([fe(1,i.ILogService),fe(2,_.ILanguageFeaturesService),fe(3,s.IContextKeyService),fe(4,f.ILanguageConfigurationService)],u),(0,y.registerEditorContribution)(u.ID,u,4);const h=y.EditorCommand.bindToContribution(u.get);(0,y.registerEditorCommand)(new h({id:\"jumpToNextSnippetPlaceholder\",precondition:s.ContextKeyExpr.and(u.InSnippetMode,u.HasNextTabstop),handler:r=>r.next(),kbOpts:{weight:100+30,kbExpr:S.EditorContextKeys.editorTextFocus,primary:2}})),(0,y.registerEditorCommand)(new h({id:\"jumpToPrevSnippetPlaceholder\",precondition:s.ContextKeyExpr.and(u.InSnippetMode,u.HasPrevTabstop),handler:r=>r.prev(),kbOpts:{weight:100+30,kbExpr:S.EditorContextKeys.editorTextFocus,primary:1026}})),(0,y.registerEditorCommand)(new h({id:\"leaveSnippet\",precondition:u.InSnippetMode,handler:r=>r.cancel(!0),kbOpts:{weight:100+30,kbExpr:S.EditorContextKeys.editorTextFocus,primary:9,secondary:[1033]}})),(0,y.registerEditorCommand)(new h({id:\"acceptSnippet\",precondition:u.InSnippetMode,handler:r=>r.finish()}))}),define(ne[913],se([1,0,14,9,2,42,20,73,12,5,29,32,215,779,151,194,27,8]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InlineCompletionsModel=e.VersionIdChangeReason=void 0;var r;(function(o){o[o.Undo=0]=\"Undo\",o[o.Redo=1]=\"Redo\",o[o.AcceptWord=2]=\"AcceptWord\",o[o.Other=3]=\"Other\"})(r||(e.VersionIdChangeReason=r={}));let c=class extends y.Disposable{get isAcceptingPartially(){return this._isAcceptingPartially}constructor(d,l,p,m,v,b,w,E,I,M,P,x){super(),this.textModel=d,this.selectedSuggestItem=l,this.cursorPosition=p,this.textModelVersionId=m,this._debounceValue=v,this._suggestPreviewEnabled=b,this._suggestPreviewMode=w,this._inlineSuggestMode=E,this._enabled=I,this._instantiationService=M,this._commandService=P,this._languageConfigurationService=x,this._source=this._register(this._instantiationService.createInstance(n.InlineCompletionsSource,this.textModel,this.textModelVersionId,this._debounceValue)),this._isActive=(0,D.observableValue)(\"isActive\",!1),this._forceUpdate=(0,D.observableSignal)(\"forceUpdate\"),this._selectedInlineCompletionId=(0,D.observableValue)(\"selectedInlineCompletionId\",void 0),this._isAcceptingPartially=!1,this._preserveCurrentCompletionReasons=new Set([r.Redo,r.Undo,r.AcceptWord]),this._fetchInlineCompletions=(0,D.derivedHandleChanges)(\"fetch inline completions\",{createEmptyChangeSummary:()=>({preserveCurrentCompletion:!1,inlineCompletionTriggerKind:C.InlineCompletionTriggerKind.Automatic}),handleChange:(A,N)=>(A.didChange(this.textModelVersionId)&&this._preserveCurrentCompletionReasons.has(A.change)?N.preserveCurrentCompletion=!0:A.didChange(this._forceUpdate)&&(N.inlineCompletionTriggerKind=A.change),!0)},(A,N)=>{if(this._forceUpdate.read(A),!(this._enabled.read(A)&&this.selectedSuggestItem.read(A)||this._isActive.read(A))){this._source.cancelUpdate();return}this.textModelVersionId.read(A);const O=this.selectedInlineCompletion.get(),W=N.preserveCurrentCompletion||O?.forwardStable?O:void 0,U=this._source.suggestWidgetInlineCompletions.get(),j=this.selectedSuggestItem.read(A);if(U&&!j){const G=this._source.inlineCompletions.get();(0,D.transaction)(Z=>{G&&U.request.versionId>G.request.versionId&&this._source.inlineCompletions.set(U.clone(),Z),this._source.clearSuggestWidgetInlineCompletions(Z)})}const R=this.cursorPosition.read(A),K={triggerKind:N.inlineCompletionTriggerKind,selectedSuggestionInfo:j?.toSelectedSuggestionInfo()};return this._source.fetch(R,K,W)}),this._filteredInlineCompletionItems=(0,D.derived)(A=>{const N=this._source.inlineCompletions.read(A);if(!N)return[];const F=this.cursorPosition.read(A);return N.inlineCompletions.filter(W=>W.isVisible(this.textModel,F,A))}),this.selectedInlineCompletionIndex=(0,D.derived)(A=>{const N=this._selectedInlineCompletionId.read(A),F=this._filteredInlineCompletionItems.read(A),O=this._selectedInlineCompletionId===void 0?-1:F.findIndex(W=>W.semanticId===N);return O===-1?(this._selectedInlineCompletionId.set(void 0,void 0),0):O}),this.selectedInlineCompletion=(0,D.derived)(A=>{const N=this._filteredInlineCompletionItems.read(A),F=this.selectedInlineCompletionIndex.read(A);return N[F]}),this.lastTriggerKind=this._source.inlineCompletions.map(A=>A?.request.context.triggerKind),this.inlineCompletionsCount=(0,D.derived)(A=>{if(this.lastTriggerKind.read(A)===C.InlineCompletionTriggerKind.Explicit)return this._filteredInlineCompletionItems.read(A).length}),this.state=(0,D.derivedOpts)({equalityComparer:(A,N)=>!A||!N?A===N:(0,i.ghostTextOrReplacementEquals)(A.ghostText,N.ghostText)&&A.inlineCompletion===N.inlineCompletion&&A.suggestItem===N.suggestItem},A=>{var N;const F=this.textModel,O=this.selectedSuggestItem.read(A);if(O){const W=O.toSingleTextEdit().removeCommonPrefix(F),U=this._computeAugmentedCompletion(W,A);if(!this._suggestPreviewEnabled.read(A)&&!U)return;const R=(N=U?.edit)!==null&&N!==void 0?N:W,K=U?U.edit.text.length-W.text.length:0,G=this._suggestPreviewMode.read(A),Z=this.cursorPosition.read(A),J=R.computeGhostText(F,G,Z,K);return{ghostText:J??new i.GhostText(R.range.endLineNumber,[]),inlineCompletion:U?.completion,suggestItem:O}}else{if(!this._isActive.read(A))return;const W=this.selectedInlineCompletion.read(A);if(!W)return;const U=W.toSingleTextEdit(A),j=this._inlineSuggestMode.read(A),R=this.cursorPosition.read(A),K=U.computeGhostText(F,j,R);return K?{ghostText:K,inlineCompletion:W,suggestItem:void 0}:void 0}}),this.ghostText=(0,D.derivedOpts)({equalityComparer:i.ghostTextOrReplacementEquals},A=>{const N=this.state.read(A);if(N)return N.ghostText}),this._register((0,D.keepAlive)(this._fetchInlineCompletions,!0));let T;this._register((0,D.autorun)(A=>{var N,F;const O=this.state.read(A),W=O?.inlineCompletion;if(W?.semanticId!==T?.semanticId&&(T=W,W)){const U=W.inlineCompletion,j=U.source;(F=(N=j.provider).handleItemDidShow)===null||F===void 0||F.call(N,j.inlineCompletions,U.sourceInlineCompletion,U.insertText)}}))}trigger(d){return we(this,void 0,void 0,function*(){this._isActive.set(!0,d),yield this._fetchInlineCompletions.get()})}triggerExplicitly(d){return we(this,void 0,void 0,function*(){(0,D.subtransaction)(d,l=>{this._isActive.set(!0,l),this._forceUpdate.trigger(l,C.InlineCompletionTriggerKind.Explicit)}),yield this._fetchInlineCompletions.get()})}stop(d){(0,D.subtransaction)(d,l=>{this._isActive.set(!1,l),this._source.clear(l)})}_computeAugmentedCompletion(d,l){const p=this.textModel,m=this._source.suggestWidgetInlineCompletions.read(l),v=m?m.inlineCompletions:[this.selectedInlineCompletion.read(l)].filter(S.isDefined);return(0,L.mapFind)(v,w=>{let E=w.toSingleTextEdit(l);return E=E.removeCommonPrefix(p,g.Range.fromPositions(E.range.getStartPosition(),d.range.getEndPosition())),E.augments(d)?{edit:E,completion:w}:void 0})}_deltaSelectedInlineCompletionIndex(d){return we(this,void 0,void 0,function*(){yield this.triggerExplicitly();const l=this._filteredInlineCompletionItems.get()||[];if(l.length>0){const p=(this.selectedInlineCompletionIndex.get()+d+l.length)%l.length;this._selectedInlineCompletionId.set(l[p].semanticId,void 0)}else this._selectedInlineCompletionId.set(void 0,void 0)})}next(){return we(this,void 0,void 0,function*(){yield this._deltaSelectedInlineCompletionIndex(1)})}previous(){return we(this,void 0,void 0,function*(){yield this._deltaSelectedInlineCompletionIndex(-1)})}accept(d){var l;return we(this,void 0,void 0,function*(){if(d.getModel()!==this.textModel)throw new k.BugIndicatingError;const p=this.state.get();if(!p||p.ghostText.isEmpty()||!p.inlineCompletion)return;const m=p.inlineCompletion.toInlineCompletion(void 0);d.pushUndoStop(),m.snippetInfo?(d.executeEdits(\"inlineSuggestion.accept\",[f.EditOperation.replaceMove(m.range,\"\"),...m.additionalTextEdits]),d.setPosition(m.snippetInfo.range.getStartPosition()),(l=a.SnippetController2.get(d))===null||l===void 0||l.insert(m.snippetInfo.snippet,{undoStopBefore:!1})):d.executeEdits(\"inlineSuggestion.accept\",[f.EditOperation.replaceMove(m.range,m.insertText),...m.additionalTextEdits]),m.command&&m.source.addRef(),(0,D.transaction)(v=>{this._source.clear(v),this._isActive.set(!1,v)}),m.command&&(yield this._commandService.executeCommand(m.command.id,...m.command.arguments||[]).then(void 0,k.onUnexpectedExternalError),m.source.removeRef())})}acceptNextWord(d){return we(this,void 0,void 0,function*(){yield this._acceptNext(d,(l,p)=>{const m=this.textModel.getLanguageIdAtPosition(l.lineNumber,l.column),v=this._languageConfigurationService.getLanguageConfiguration(m),b=new RegExp(v.wordDefinition.source,v.wordDefinition.flags.replace(\"g\",\"\")),w=p.match(b);let E=0;w&&w.index!==void 0?w.index===0?E=w[0].length:E=w.index:E=p.length;const M=/\\s+/g.exec(p);return M&&M.index!==void 0&&M.index+M[0].length<E&&(E=M.index+M[0].length),E})})}acceptNextLine(d){return we(this,void 0,void 0,function*(){yield this._acceptNext(d,(l,p)=>{const m=p.match(/\\n/);return m&&m.index!==void 0?m.index+1:p.length})})}_acceptNext(d,l){return we(this,void 0,void 0,function*(){if(d.getModel()!==this.textModel)throw new k.BugIndicatingError;const p=this.state.get();if(!p||p.ghostText.isEmpty()||!p.inlineCompletion)return;const m=p.ghostText,v=p.inlineCompletion.toInlineCompletion(void 0);if(v.snippetInfo||v.filterText!==v.insertText){yield this.accept(d);return}const b=m.parts[0],w=new _.Position(m.lineNumber,b.column),E=b.lines.join(`\n`),I=l(w,E);if(I===E.length&&m.parts.length===1){this.accept(d);return}const M=E.substring(0,I);this._isAcceptingPartially=!0;try{d.pushUndoStop(),d.executeEdits(\"inlineSuggestion.accept\",[f.EditOperation.replace(g.Range.fromPositions(w),M)]);const P=(0,t.lengthOfText)(M);d.setPosition((0,t.addPositions)(w,P))}finally{this._isAcceptingPartially=!1}if(v.source.provider.handlePartialAccept){const P=g.Range.fromPositions(v.range.getStartPosition(),(0,t.addPositions)(w,(0,t.lengthOfText)(M))),x=d.getModel().getValueInRange(P,1);v.source.provider.handlePartialAccept(v.source.inlineCompletions,v.sourceInlineCompletion,x.length)}})}handleSuggestAccepted(d){var l,p;const m=d.toSingleTextEdit().removeCommonPrefix(this.textModel),v=this._computeAugmentedCompletion(m,void 0);if(!v)return;const b=v.completion.inlineCompletion;(p=(l=b.source.provider).handlePartialAccept)===null||p===void 0||p.call(l,b.source.inlineCompletions,b.sourceInlineCompletion,m.text.length)}};e.InlineCompletionsModel=c,e.InlineCompletionsModel=c=ke([fe(9,h.IInstantiationService),fe(10,u.ICommandService),fe(11,s.ILanguageConfigurationService)],c)}),define(ne[914],se([1,0,13,19,9,6,2,11,24,115,301,96,28,15,70,79,300,135,18,72,20,235,194,239]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p){\"use strict\";var m;Object.defineProperty(e,\"__esModule\",{value:!0}),e.SuggestModel=e.LineContext=void 0;class v{static shouldAutoTrigger(M){if(!M.hasModel())return!1;const P=M.getModel(),x=M.getPosition();P.tokenization.tokenizeIfCheap(x.lineNumber);const T=P.getWordAtPosition(x);return!(!T||T.endColumn!==x.column&&T.startColumn+1!==x.column||!isNaN(Number(T.word)))}constructor(M,P,x){this.leadingLineContent=M.getLineContent(P.lineNumber).substr(0,P.column-1),this.leadingWord=M.getWordUntilPosition(P),this.lineNumber=P.lineNumber,this.column=P.column,this.triggerOptions=x}}e.LineContext=v;function b(I,M,P){if(!M.getContextKeyValue(d.InlineCompletionContextKeys.inlineSuggestionVisible.key))return!0;const x=M.getContextKeyValue(d.InlineCompletionContextKeys.suppressSuggestions.key);return x!==void 0?!x:!I.getOption(61).suppressSuggestions}function w(I,M,P){if(!M.getContextKeyValue(\"inlineSuggestionVisible\"))return!0;const x=M.getContextKeyValue(d.InlineCompletionContextKeys.suppressSuggestions.key);return x!==void 0?!x:!I.getOption(61).suppressSuggestions}let E=m=class{constructor(M,P,x,T,A,N,F,O,W){this._editor=M,this._editorWorkerService=P,this._clipboardService=x,this._telemetryService=T,this._logService=A,this._contextKeyService=N,this._configurationService=F,this._languageFeaturesService=O,this._envService=W,this._toDispose=new S.DisposableStore,this._triggerCharacterListener=new S.DisposableStore,this._triggerQuickSuggest=new L.TimeoutTimer,this._triggerState=void 0,this._completionDisposables=new S.DisposableStore,this._onDidCancel=new D.Emitter,this._onDidTrigger=new D.Emitter,this._onDidSuggest=new D.Emitter,this.onDidCancel=this._onDidCancel.event,this.onDidTrigger=this._onDidTrigger.event,this.onDidSuggest=this._onDidSuggest.event,this._telemetryGate=0,this._currentSelection=this._editor.getSelection()||new _.Selection(1,1,1,1),this._toDispose.add(this._editor.onDidChangeModel(()=>{this._updateTriggerCharacters(),this.cancel()})),this._toDispose.add(this._editor.onDidChangeModelLanguage(()=>{this._updateTriggerCharacters(),this.cancel()})),this._toDispose.add(this._editor.onDidChangeConfiguration(()=>{this._updateTriggerCharacters()})),this._toDispose.add(this._languageFeaturesService.completionProvider.onDidChange(()=>{this._updateTriggerCharacters(),this._updateActiveSuggestSession()}));let U=!1;this._toDispose.add(this._editor.onDidCompositionStart(()=>{U=!0})),this._toDispose.add(this._editor.onDidCompositionEnd(()=>{U=!1,this._onCompositionEnd()})),this._toDispose.add(this._editor.onDidChangeCursorSelection(j=>{U||this._onCursorChange(j)})),this._toDispose.add(this._editor.onDidChangeModelContent(()=>{!U&&this._triggerState!==void 0&&this._refilterCompletionItems()})),this._updateTriggerCharacters()}dispose(){(0,S.dispose)(this._triggerCharacterListener),(0,S.dispose)([this._onDidCancel,this._onDidSuggest,this._onDidTrigger,this._triggerQuickSuggest]),this._toDispose.dispose(),this._completionDisposables.dispose(),this.cancel()}_updateTriggerCharacters(){if(this._triggerCharacterListener.clear(),this._editor.getOption(89)||!this._editor.hasModel()||!this._editor.getOption(119))return;const M=new Map;for(const x of this._languageFeaturesService.completionProvider.all(this._editor.getModel()))for(const T of x.triggerCharacters||[]){let A=M.get(T);A||(A=new Set,A.add((0,h.getSnippetSuggestSupport)()),M.set(T,A)),A.add(x)}const P=x=>{var T;if(!w(this._editor,this._contextKeyService,this._configurationService)||v.shouldAutoTrigger(this._editor))return;if(!x){const F=this._editor.getPosition();x=this._editor.getModel().getLineContent(F.lineNumber).substr(0,F.column-1)}let A=\"\";(0,f.isLowSurrogate)(x.charCodeAt(x.length-1))?(0,f.isHighSurrogate)(x.charCodeAt(x.length-2))&&(A=x.substr(x.length-2)):A=x.charAt(x.length-1);const N=M.get(A);if(N){const F=new Map;if(this._completionModel)for(const[O,W]of this._completionModel.getItemsByProvider())N.has(O)||F.set(O,W);this.trigger({auto:!0,triggerKind:1,triggerCharacter:A,retrigger:!!this._completionModel,clipboardText:(T=this._completionModel)===null||T===void 0?void 0:T.clipboardText,completionOptions:{providerFilter:N,providerItemsToReuse:F}})}};this._triggerCharacterListener.add(this._editor.onDidType(P)),this._triggerCharacterListener.add(this._editor.onDidCompositionEnd(()=>P()))}get state(){return this._triggerState?this._triggerState.auto?2:1:0}cancel(M=!1){var P;this._triggerState!==void 0&&(this._triggerQuickSuggest.cancel(),(P=this._requestToken)===null||P===void 0||P.cancel(),this._requestToken=void 0,this._triggerState=void 0,this._completionModel=void 0,this._context=void 0,this._onDidCancel.fire({retrigger:M}))}clear(){this._completionDisposables.clear()}_updateActiveSuggestSession(){this._triggerState!==void 0&&(!this._editor.hasModel()||!this._languageFeaturesService.completionProvider.has(this._editor.getModel())?this.cancel():this.trigger({auto:this._triggerState.auto,retrigger:!0}))}_onCursorChange(M){if(!this._editor.hasModel())return;const P=this._currentSelection;if(this._currentSelection=this._editor.getSelection(),!M.selection.isEmpty()||M.reason!==0&&M.reason!==3||M.source!==\"keyboard\"&&M.source!==\"deleteLeft\"){this.cancel();return}this._triggerState===void 0&&M.reason===0?(P.containsRange(this._currentSelection)||P.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition()))&&this._doTriggerQuickSuggest():this._triggerState!==void 0&&M.reason===3&&this._refilterCompletionItems()}_onCompositionEnd(){this._triggerState===void 0?this._doTriggerQuickSuggest():this._refilterCompletionItems()}_doTriggerQuickSuggest(){var M;h.QuickSuggestionsOptions.isAllOff(this._editor.getOption(87))||this._editor.getOption(116).snippetsPreventQuickSuggestions&&(!((M=l.SnippetController2.get(this._editor))===null||M===void 0)&&M.isInSnippet())||(this.cancel(),this._triggerQuickSuggest.cancelAndSet(()=>{if(this._triggerState!==void 0||!v.shouldAutoTrigger(this._editor)||!this._editor.hasModel()||!this._editor.hasWidgetFocus())return;const P=this._editor.getModel(),x=this._editor.getPosition(),T=this._editor.getOption(87);if(!h.QuickSuggestionsOptions.isAllOff(T)){if(!h.QuickSuggestionsOptions.isAllOn(T)){P.tokenization.tokenizeIfCheap(x.lineNumber);const A=P.tokenization.getLineTokens(x.lineNumber),N=A.getStandardTokenType(A.findTokenIndexAtOffset(Math.max(x.column-1-1,0)));if(h.QuickSuggestionsOptions.valueFor(T,N)!==\"on\")return}b(this._editor,this._contextKeyService,this._configurationService)&&this._languageFeaturesService.completionProvider.has(P)&&this.trigger({auto:!0})}},this._editor.getOption(88)))}_refilterCompletionItems(){(0,o.assertType)(this._editor.hasModel()),(0,o.assertType)(this._triggerState!==void 0);const M=this._editor.getModel(),P=this._editor.getPosition(),x=new v(M,P,Object.assign(Object.assign({},this._triggerState),{refilter:!0}));this._onNewContext(x)}trigger(M){var P,x,T,A,N,F;if(!this._editor.hasModel())return;const O=this._editor.getModel(),W=new v(O,this._editor.getPosition(),M);this.cancel(M.retrigger),this._triggerState=M,this._onDidTrigger.fire({auto:M.auto,shy:(P=M.shy)!==null&&P!==void 0?P:!1,position:this._editor.getPosition()}),this._context=W;let U={triggerKind:(x=M.triggerKind)!==null&&x!==void 0?x:0};M.triggerCharacter&&(U={triggerKind:1,triggerCharacter:M.triggerCharacter}),this._requestToken=new k.CancellationTokenSource;const j=this._editor.getOption(110);let R=1;switch(j){case\"top\":R=0;break;case\"bottom\":R=2;break}const{itemKind:K,showDeprecated:G}=m._createSuggestFilter(this._editor),Z=new h.CompletionOptions(R,(A=(T=M.completionOptions)===null||T===void 0?void 0:T.kindFilter)!==null&&A!==void 0?A:K,(N=M.completionOptions)===null||N===void 0?void 0:N.providerFilter,(F=M.completionOptions)===null||F===void 0?void 0:F.providerItemsToReuse,G),J=C.WordDistance.create(this._editorWorkerService,this._editor),X=(0,h.provideSuggestionItems)(this._languageFeaturesService.completionProvider,O,this._editor.getPosition(),Z,U,this._requestToken.token);Promise.all([X,J]).then(([H,B])=>we(this,void 0,void 0,function*(){var V;if((V=this._requestToken)===null||V===void 0||V.dispose(),!this._editor.hasModel())return;let Y=M?.clipboardText;if(!Y&&H.needsClipboard&&(Y=yield this._clipboardService.readText()),this._triggerState===void 0)return;const ie=this._editor.getModel(),ae=new v(ie,this._editor.getPosition(),M),ce=Object.assign(Object.assign({},c.FuzzyScoreOptions.default),{firstMatchCanBeWeak:!this._editor.getOption(116).matchOnWordStartOnly});if(this._completionModel=new u.CompletionModel(H.items,this._context.column,{leadingLineContent:ae.leadingLineContent,characterCountDelta:ae.column-this._context.column},B,this._editor.getOption(116),this._editor.getOption(110),ce,Y),this._completionDisposables.add(H.disposable),this._onNewContext(ae),this._reportDurationsTelemetry(H.durations),!this._envService.isBuilt||this._envService.isExtensionDevelopment)for(const de of H.items)de.isInvalid&&this._logService.warn(`[suggest] did IGNORE invalid completion item from ${de.provider._debugDisplayName}`,de.completion)})).catch(y.onUnexpectedError)}_reportDurationsTelemetry(M){this._telemetryGate++%230===0&&setTimeout(()=>{this._telemetryService.publicLog2(\"suggest.durations.json\",{data:JSON.stringify(M)}),this._logService.debug(\"suggest.durations.json\",M)})}static _createSuggestFilter(M){const P=new Set;M.getOption(110)===\"none\"&&P.add(27);const T=M.getOption(116);return T.showMethods||P.add(0),T.showFunctions||P.add(1),T.showConstructors||P.add(2),T.showFields||P.add(3),T.showVariables||P.add(4),T.showClasses||P.add(5),T.showStructs||P.add(6),T.showInterfaces||P.add(7),T.showModules||P.add(8),T.showProperties||P.add(9),T.showEvents||P.add(10),T.showOperators||P.add(11),T.showUnits||P.add(12),T.showValues||P.add(13),T.showConstants||P.add(14),T.showEnums||P.add(15),T.showEnumMembers||P.add(16),T.showKeywords||P.add(17),T.showWords||P.add(18),T.showColors||P.add(19),T.showFiles||P.add(20),T.showReferences||P.add(21),T.showColors||P.add(22),T.showFolders||P.add(23),T.showTypeParameters||P.add(24),T.showSnippets||P.add(27),T.showUsers||P.add(25),T.showIssues||P.add(26),{itemKind:P,showDeprecated:T.showDeprecated}}_onNewContext(M){if(this._context){if(M.lineNumber!==this._context.lineNumber){this.cancel();return}if((0,f.getLeadingWhitespace)(M.leadingLineContent)!==(0,f.getLeadingWhitespace)(this._context.leadingLineContent)){this.cancel();return}if(M.column<this._context.column){M.leadingWord.word?this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0}):this.cancel();return}if(this._completionModel){if(M.leadingWord.word.length!==0&&M.leadingWord.startColumn>this._context.leadingWord.startColumn){if(v.shouldAutoTrigger(this._editor)&&this._context){const x=this._completionModel.getItemsByProvider();this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerItemsToReuse:x}})}return}if(M.column>this._context.column&&this._completionModel.getIncompleteProvider().size>0&&M.leadingWord.word.length!==0){const P=new Map,x=new Set;for(const[T,A]of this._completionModel.getItemsByProvider())A.length>0&&A[0].container.incomplete?x.add(T):P.set(T,A);this.trigger({auto:this._context.triggerOptions.auto,triggerKind:2,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerFilter:x,providerItemsToReuse:P}})}else{const P=this._completionModel.lineContext;let x=!1;if(this._completionModel.lineContext={leadingLineContent:M.leadingLineContent,characterCountDelta:M.column-this._context.column},this._completionModel.items.length===0){const T=v.shouldAutoTrigger(this._editor);if(!this._context){this.cancel();return}if(T&&this._context.leadingWord.endColumn<M.leadingWord.startColumn){this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0});return}if(this._context.triggerOptions.auto){this.cancel();return}else if(this._completionModel.lineContext=P,x=this._completionModel.items.length>0,x&&M.leadingWord.word.length===0){this.cancel();return}}this._onDidSuggest.fire({completionModel:this._completionModel,triggerOptions:M.triggerOptions,isFrozen:x})}}}}};e.SuggestModel=E,e.SuggestModel=E=m=ke([fe(1,g.IEditorWorkerService),fe(2,s.IClipboardService),fe(3,a.ITelemetryService),fe(4,t.ILogService),fe(5,n.IContextKeyService),fe(6,i.IConfigurationService),fe(7,r.ILanguageFeaturesService),fe(8,p.IEnvironmentService)],E)}),define(ne[378],se([1,0,49,14,13,19,9,6,119,2,17,58,20,108,16,73,12,5,21,194,128,347,755,701,27,15,8,70,135,754,548,914,549,895,79,45,143]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P,x,T,A,N,F){\"use strict\";var O;Object.defineProperty(e,\"__esModule\",{value:!0}),e.TriggerSuggestAction=e.SuggestController=void 0;const W=!1;class U{constructor(X,H){if(this._model=X,this._position=H,X.getLineMaxColumn(H.lineNumber)!==H.column){const V=X.getOffsetAt(H),Y=X.getPositionAt(V+1);this._marker=X.deltaDecorations([],[{range:h.Range.fromPositions(H,Y),options:{description:\"suggest-line-suffix\",stickiness:1}}])}}dispose(){this._marker&&!this._model.isDisposed()&&this._model.deltaDecorations(this._marker,[])}delta(X){if(this._model.isDisposed()||this._position.lineNumber!==X.lineNumber)return 0;if(this._marker){const H=this._model.getDecorationRange(this._marker[0]);return this._model.getOffsetAt(H.getStartPosition())-this._model.getOffsetAt(X)}else return this._model.getLineMaxColumn(X.lineNumber)-X.column}}let j=O=class{static get(X){return X.getContribution(O.ID)}constructor(X,H,B,V,Y,ie,ae){this._memoryService=H,this._commandService=B,this._contextKeyService=V,this._instantiationService=Y,this._logService=ie,this._telemetryService=ae,this._lineSuffix=new g.MutableDisposable,this._toDispose=new g.DisposableStore,this._selectors=new R(ue=>ue.priority),this._onWillInsertSuggestItem=new f.Emitter,this.onWillInsertSuggestItem=this._onWillInsertSuggestItem.event,this.editor=X,this.model=Y.createInstance(P.SuggestModel,this.editor),this._selectors.register({priority:0,select:(ue,te,q)=>this._memoryService.select(ue,te,q)});const ce=E.Context.InsertMode.bindTo(V);ce.set(X.getOption(116).insertMode),this._toDispose.add(this.model.onDidTrigger(()=>ce.set(X.getOption(116).insertMode))),this.widget=this._toDispose.add(new y.IdleValue(()=>{const ue=this._instantiationService.createInstance(T.SuggestWidget,this.editor);this._toDispose.add(ue),this._toDispose.add(ue.onDidSelect($=>this._insertSuggestion($,0),this));const te=new M.CommitCharacterController(this.editor,ue,this.model,$=>this._insertSuggestion($,2));this._toDispose.add(te);const q=E.Context.MakesTextEdit.bindTo(this._contextKeyService),z=E.Context.HasInsertAndReplaceRange.bindTo(this._contextKeyService),ee=E.Context.CanResolve.bindTo(this._contextKeyService);return this._toDispose.add((0,g.toDisposable)(()=>{q.reset(),z.reset(),ee.reset()})),this._toDispose.add(ue.onDidFocus(({item:$})=>{const re=this.editor.getPosition(),oe=$.editStart.column,ge=re.column;let ve=!0;this.editor.getOption(1)===\"smart\"&&this.model.state===2&&!$.completion.additionalTextEdits&&!($.completion.insertTextRules&4)&&ge-oe===$.completion.insertText.length&&(ve=this.editor.getModel().getValueInRange({startLineNumber:re.lineNumber,startColumn:oe,endLineNumber:re.lineNumber,endColumn:ge})!==$.completion.insertText),q.set(ve),z.set(!u.Position.equals($.editInsertEnd,$.editReplaceEnd)),ee.set(!!$.provider.resolveCompletionItem||!!$.completion.documentation||$.completion.detail!==$.completion.label)})),this._toDispose.add(ue.onDetailsKeyDown($=>{if($.toKeyCodeChord().equals(new _.KeyCodeChord(!0,!1,!1,!1,33))||C.isMacintosh&&$.toKeyCodeChord().equals(new _.KeyCodeChord(!1,!1,!1,!0,33))){$.stopPropagation();return}$.toKeyCodeChord().isModifierKey()||this.editor.focus()})),ue})),this._overtypingCapturer=this._toDispose.add(new y.IdleValue(()=>this._toDispose.add(new x.OvertypingCapturer(this.editor,this.model)))),this._alternatives=this._toDispose.add(new y.IdleValue(()=>this._toDispose.add(new I.SuggestAlternatives(this.editor,this._contextKeyService)))),this._toDispose.add(Y.createInstance(l.WordContextKey,X)),this._toDispose.add(this.model.onDidTrigger(ue=>{this.widget.value.showTriggered(ue.auto,ue.shy?250:50),this._lineSuffix.value=new U(this.editor.getModel(),ue.position)})),this._toDispose.add(this.model.onDidSuggest(ue=>{if(ue.triggerOptions.shy)return;let te=-1;for(const z of this._selectors.itemsOrderedByPriorityDesc)if(te=z.select(this.editor.getModel(),this.editor.getPosition(),ue.completionModel.items),te!==-1)break;te===-1&&(te=0);let q=!1;if(ue.triggerOptions.auto){const z=this.editor.getOption(116);z.selectionMode===\"never\"||z.selectionMode===\"always\"?q=z.selectionMode===\"never\":z.selectionMode===\"whenTriggerCharacter\"?q=ue.triggerOptions.triggerKind!==1:z.selectionMode===\"whenQuickSuggestion\"&&(q=ue.triggerOptions.triggerKind===1&&!ue.triggerOptions.refilter)}this.widget.value.showSuggestions(ue.completionModel,te,ue.isFrozen,ue.triggerOptions.auto,q)})),this._toDispose.add(this.model.onDidCancel(ue=>{ue.retrigger||this.widget.value.hideWidget()})),this._toDispose.add(this.editor.onDidBlurEditorWidget(()=>{W||(this.model.cancel(),this.model.clear())}));const de=E.Context.AcceptSuggestionsOnEnter.bindTo(V),he=()=>{const ue=this.editor.getOption(1);de.set(ue===\"on\"||ue===\"smart\")};this._toDispose.add(this.editor.onDidChangeConfiguration(()=>he())),he()}dispose(){this._alternatives.dispose(),this._toDispose.dispose(),this.widget.dispose(),this.model.dispose(),this._lineSuffix.dispose(),this._onWillInsertSuggestItem.dispose()}_insertSuggestion(X,H){if(!X||!X.item){this._alternatives.value.reset(),this.model.cancel(),this.model.clear();return}if(!this.editor.hasModel())return;const B=c.SnippetController2.get(this.editor);if(!B)return;this._onWillInsertSuggestItem.fire({item:X.item});const V=this.editor.getModel(),Y=V.getAlternativeVersionId(),{item:ie}=X,ae=[],ce=new D.CancellationTokenSource;H&1||this.editor.pushUndoStop();const de=this.getOverwriteInfo(ie,!!(H&8));this._memoryService.memorize(V,this.editor.getPosition(),ie);const he=ie.isResolved;let ue=-1,te=-1;if(Array.isArray(ie.completion.additionalTextEdits)){this.model.cancel();const z=n.StableEditorScrollState.capture(this.editor);this.editor.executeEdits(\"suggestController.additionalTextEdits.sync\",ie.completion.additionalTextEdits.map(ee=>a.EditOperation.replaceMove(h.Range.lift(ee.range),ee.text))),z.restoreRelativeVerticalPositionOfCursor(this.editor)}else if(!he){const z=new s.StopWatch;let ee;const $=V.onDidChangeContent(ve=>{if(ve.isFlush){ce.cancel(),$.dispose();return}for(const Se of ve.changes){const Le=h.Range.getEndPosition(Se.range);(!ee||u.Position.isBefore(Le,ee))&&(ee=Le)}}),re=H;H|=2;let oe=!1;const ge=this.editor.onWillType(()=>{ge.dispose(),oe=!0,re&2||this.editor.pushUndoStop()});ae.push(ie.resolve(ce.token).then(()=>{if(!ie.completion.additionalTextEdits||ce.token.isCancellationRequested)return;if(ee&&ie.completion.additionalTextEdits.some(Se=>u.Position.isBefore(ee,h.Range.getStartPosition(Se.range))))return!1;oe&&this.editor.pushUndoStop();const ve=n.StableEditorScrollState.capture(this.editor);return this.editor.executeEdits(\"suggestController.additionalTextEdits.async\",ie.completion.additionalTextEdits.map(Se=>a.EditOperation.replaceMove(h.Range.lift(Se.range),Se.text))),ve.restoreRelativeVerticalPositionOfCursor(this.editor),(oe||!(re&2))&&this.editor.pushUndoStop(),!0}).then(ve=>{this._logService.trace(\"[suggest] async resolving of edits DONE (ms, applied?)\",z.elapsed(),ve),te=ve===!0?1:ve===!1?0:-2}).finally(()=>{$.dispose(),ge.dispose()}))}let{insertText:q}=ie.completion;if(ie.completion.insertTextRules&4||(q=o.SnippetParser.escape(q)),this.model.cancel(),B.insert(q,{overwriteBefore:de.overwriteBefore,overwriteAfter:de.overwriteAfter,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(ie.completion.insertTextRules&1),clipboardText:X.model.clipboardText,overtypingCapturer:this._overtypingCapturer.value}),H&2||this.editor.pushUndoStop(),ie.completion.command)if(ie.completion.command.id===K.id)this.model.trigger({auto:!0,retrigger:!0});else{const z=new s.StopWatch;ae.push(this._commandService.executeCommand(ie.completion.command.id,...ie.completion.command.arguments?[...ie.completion.command.arguments]:[]).catch(ee=>{ie.completion.extensionId?(0,S.onUnexpectedExternalError)(ee):(0,S.onUnexpectedError)(ee)}).finally(()=>{ue=z.elapsed()}))}H&4&&this._alternatives.value.set(X,z=>{for(ce.cancel();V.canUndo();){Y!==V.getAlternativeVersionId()&&V.undo(),this._insertSuggestion(z,3|(H&8?8:0));break}}),this._alertCompletionItem(ie),Promise.all(ae).finally(()=>{this._reportSuggestionAcceptedTelemetry(ie,V,he,ue,te),this.model.clear(),ce.dispose()})}_reportSuggestionAcceptedTelemetry(X,H,B,V,Y){var ie,ae,ce;Math.floor(Math.random()*100)!==0&&this._telemetryService.publicLog2(\"suggest.acceptedSuggestion\",{extensionId:(ae=(ie=X.extensionId)===null||ie===void 0?void 0:ie.value)!==null&&ae!==void 0?ae:\"unknown\",providerId:(ce=X.provider._debugDisplayName)!==null&&ce!==void 0?ce:\"unknown\",kind:X.completion.kind,basenameHash:(0,F.hash)((0,N.basename)(H.uri)).toString(16),languageId:H.getLanguageId(),fileExtension:(0,N.extname)(H.uri),resolveInfo:X.provider.resolveCompletionItem?B?1:0:-1,resolveDuration:X.resolveDuration,commandDuration:V,additionalEditsAsync:Y})}getOverwriteInfo(X,H){(0,i.assertType)(this.editor.hasModel());let B=this.editor.getOption(116).insertMode===\"replace\";H&&(B=!B);const V=X.position.column-X.editStart.column,Y=(B?X.editReplaceEnd.column:X.editInsertEnd.column)-X.position.column,ie=this.editor.getPosition().column-X.position.column,ae=this._lineSuffix.value?this._lineSuffix.value.delta(this.editor.getPosition()):0;return{overwriteBefore:V+ie,overwriteAfter:Y+ae}}_alertCompletionItem(X){if((0,k.isNonEmptyArray)(X.completion.additionalTextEdits)){const H=p.localize(0,null,X.textLabel,X.completion.additionalTextEdits.length);(0,L.alert)(H)}}triggerSuggest(X,H,B){this.editor.hasModel()&&(this.model.trigger({auto:H??!1,completionOptions:{providerFilter:X,kindFilter:B?new Set:void 0}}),this.editor.revealPosition(this.editor.getPosition(),0),this.editor.focus())}triggerSuggestAndAcceptBest(X){if(!this.editor.hasModel())return;const H=this.editor.getPosition(),B=()=>{H.equals(this.editor.getPosition())&&this._commandService.executeCommand(X.fallback)},V=Y=>{if(Y.completion.insertTextRules&4||Y.completion.additionalTextEdits)return!0;const ie=this.editor.getPosition(),ae=Y.editStart.column,ce=ie.column;return ce-ae!==Y.completion.insertText.length?!0:this.editor.getModel().getValueInRange({startLineNumber:ie.lineNumber,startColumn:ae,endLineNumber:ie.lineNumber,endColumn:ce})!==Y.completion.insertText};f.Event.once(this.model.onDidTrigger)(Y=>{const ie=[];f.Event.any(this.model.onDidTrigger,this.model.onDidCancel)(()=>{(0,g.dispose)(ie),B()},void 0,ie),this.model.onDidSuggest(({completionModel:ae})=>{if((0,g.dispose)(ie),ae.items.length===0){B();return}const ce=this._memoryService.select(this.editor.getModel(),this.editor.getPosition(),ae.items),de=ae.items[ce];if(!V(de)){B();return}this.editor.pushUndoStop(),this._insertSuggestion({index:ce,item:de,model:ae},7)},void 0,ie)}),this.model.trigger({auto:!1,shy:!0}),this.editor.revealPosition(H,0),this.editor.focus()}acceptSelectedSuggestion(X,H){const B=this.widget.value.getFocusedItem();let V=0;X&&(V|=4),H&&(V|=8),this._insertSuggestion(B,V)}acceptNextSuggestion(){this._alternatives.value.next()}acceptPrevSuggestion(){this._alternatives.value.prev()}cancelSuggestWidget(){this.model.cancel(),this.model.clear(),this.widget.value.hideWidget()}focusSuggestion(){this.widget.value.focusSelected()}selectNextSuggestion(){this.widget.value.selectNext()}selectNextPageSuggestion(){this.widget.value.selectNextPage()}selectLastSuggestion(){this.widget.value.selectLast()}selectPrevSuggestion(){this.widget.value.selectPrevious()}selectPrevPageSuggestion(){this.widget.value.selectPreviousPage()}selectFirstSuggestion(){this.widget.value.selectFirst()}toggleSuggestionDetails(){this.widget.value.toggleDetails()}toggleExplainMode(){this.widget.value.toggleExplainMode()}toggleSuggestionFocus(){this.widget.value.toggleDetailsFocus()}resetWidgetSize(){this.widget.value.resetPersistedSize()}forceRenderingAbove(){this.widget.value.forceRenderingAbove()}stopForceRenderingAbove(){this.widget.isInitialized&&this.widget.value.stopForceRenderingAbove()}registerSelector(X){return this._selectors.register(X)}};e.SuggestController=j,j.ID=\"editor.contrib.suggestController\",e.SuggestController=j=O=ke([fe(1,d.ISuggestMemoryService),fe(2,m.ICommandService),fe(3,v.IContextKeyService),fe(4,b.IInstantiationService),fe(5,w.ILogService),fe(6,A.ITelemetryService)],j);class R{constructor(X){this.prioritySelector=X,this._items=new Array}register(X){if(this._items.indexOf(X)!==-1)throw new Error(\"Value is already registered\");return this._items.push(X),this._items.sort((H,B)=>this.prioritySelector(B)-this.prioritySelector(H)),{dispose:()=>{const H=this._items.indexOf(X);H>=0&&this._items.splice(H,1)}}}get itemsOrderedByPriorityDesc(){return this._items}}class K extends t.EditorAction{constructor(){super({id:K.id,label:p.localize(1,null),alias:\"Trigger Suggest\",precondition:v.ContextKeyExpr.and(r.EditorContextKeys.writable,r.EditorContextKeys.hasCompletionItemProvider,E.Context.Visible.toNegated()),kbOpts:{kbExpr:r.EditorContextKeys.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[521,2087]},weight:100}})}run(X,H,B){const V=j.get(H);if(!V)return;let Y;B&&typeof B==\"object\"&&B.auto===!0&&(Y=!0),V.triggerSuggest(void 0,Y,void 0)}}e.TriggerSuggestAction=K,K.id=\"editor.action.triggerSuggest\",(0,t.registerEditorContribution)(j.ID,j,2),(0,t.registerEditorAction)(K);const G=100+90,Z=t.EditorCommand.bindToContribution(j.get);(0,t.registerEditorCommand)(new Z({id:\"acceptSelectedSuggestion\",precondition:v.ContextKeyExpr.and(E.Context.Visible,E.Context.HasFocusedSuggestion),handler(J){J.acceptSelectedSuggestion(!0,!1)},kbOpts:[{primary:2,kbExpr:v.ContextKeyExpr.and(E.Context.Visible,r.EditorContextKeys.textInputFocus),weight:G},{primary:3,kbExpr:v.ContextKeyExpr.and(E.Context.Visible,r.EditorContextKeys.textInputFocus,E.Context.AcceptSuggestionsOnEnter,E.Context.MakesTextEdit),weight:G}],menuOpts:[{menuId:E.suggestWidgetStatusbarMenu,title:p.localize(2,null),group:\"left\",order:1,when:E.Context.HasInsertAndReplaceRange.toNegated()},{menuId:E.suggestWidgetStatusbarMenu,title:p.localize(3,null),group:\"left\",order:1,when:v.ContextKeyExpr.and(E.Context.HasInsertAndReplaceRange,E.Context.InsertMode.isEqualTo(\"insert\"))},{menuId:E.suggestWidgetStatusbarMenu,title:p.localize(4,null),group:\"left\",order:1,when:v.ContextKeyExpr.and(E.Context.HasInsertAndReplaceRange,E.Context.InsertMode.isEqualTo(\"replace\"))}]})),(0,t.registerEditorCommand)(new Z({id:\"acceptAlternativeSelectedSuggestion\",precondition:v.ContextKeyExpr.and(E.Context.Visible,r.EditorContextKeys.textInputFocus,E.Context.HasFocusedSuggestion),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:1027,secondary:[1026]},handler(J){J.acceptSelectedSuggestion(!1,!0)},menuOpts:[{menuId:E.suggestWidgetStatusbarMenu,group:\"left\",order:2,when:v.ContextKeyExpr.and(E.Context.HasInsertAndReplaceRange,E.Context.InsertMode.isEqualTo(\"insert\")),title:p.localize(5,null)},{menuId:E.suggestWidgetStatusbarMenu,group:\"left\",order:2,when:v.ContextKeyExpr.and(E.Context.HasInsertAndReplaceRange,E.Context.InsertMode.isEqualTo(\"replace\")),title:p.localize(6,null)}]})),m.CommandsRegistry.registerCommandAlias(\"acceptSelectedSuggestionOnEnter\",\"acceptSelectedSuggestion\"),(0,t.registerEditorCommand)(new Z({id:\"hideSuggestWidget\",precondition:E.Context.Visible,handler:J=>J.cancelSuggestWidget(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:9,secondary:[1033]}})),(0,t.registerEditorCommand)(new Z({id:\"selectNextSuggestion\",precondition:v.ContextKeyExpr.and(E.Context.Visible,v.ContextKeyExpr.or(E.Context.MultipleSuggestions,E.Context.HasFocusedSuggestion.negate())),handler:J=>J.selectNextSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})),(0,t.registerEditorCommand)(new Z({id:\"selectNextPageSuggestion\",precondition:v.ContextKeyExpr.and(E.Context.Visible,v.ContextKeyExpr.or(E.Context.MultipleSuggestions,E.Context.HasFocusedSuggestion.negate())),handler:J=>J.selectNextPageSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:12,secondary:[2060]}})),(0,t.registerEditorCommand)(new Z({id:\"selectLastSuggestion\",precondition:v.ContextKeyExpr.and(E.Context.Visible,v.ContextKeyExpr.or(E.Context.MultipleSuggestions,E.Context.HasFocusedSuggestion.negate())),handler:J=>J.selectLastSuggestion()})),(0,t.registerEditorCommand)(new Z({id:\"selectPrevSuggestion\",precondition:v.ContextKeyExpr.and(E.Context.Visible,v.ContextKeyExpr.or(E.Context.MultipleSuggestions,E.Context.HasFocusedSuggestion.negate())),handler:J=>J.selectPrevSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})),(0,t.registerEditorCommand)(new Z({id:\"selectPrevPageSuggestion\",precondition:v.ContextKeyExpr.and(E.Context.Visible,v.ContextKeyExpr.or(E.Context.MultipleSuggestions,E.Context.HasFocusedSuggestion.negate())),handler:J=>J.selectPrevPageSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:11,secondary:[2059]}})),(0,t.registerEditorCommand)(new Z({id:\"selectFirstSuggestion\",precondition:v.ContextKeyExpr.and(E.Context.Visible,v.ContextKeyExpr.or(E.Context.MultipleSuggestions,E.Context.HasFocusedSuggestion.negate())),handler:J=>J.selectFirstSuggestion()})),(0,t.registerEditorCommand)(new Z({id:\"focusSuggestion\",precondition:v.ContextKeyExpr.and(E.Context.Visible,E.Context.HasFocusedSuggestion.negate()),handler:J=>J.focusSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}}})),(0,t.registerEditorCommand)(new Z({id:\"focusAndAcceptSuggestion\",precondition:v.ContextKeyExpr.and(E.Context.Visible,E.Context.HasFocusedSuggestion.negate()),handler:J=>{J.focusSuggestion(),J.acceptSelectedSuggestion(!0,!1)}})),(0,t.registerEditorCommand)(new Z({id:\"toggleSuggestionDetails\",precondition:v.ContextKeyExpr.and(E.Context.Visible,E.Context.HasFocusedSuggestion),handler:J=>J.toggleSuggestionDetails(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}},menuOpts:[{menuId:E.suggestWidgetStatusbarMenu,group:\"right\",order:1,when:v.ContextKeyExpr.and(E.Context.DetailsVisible,E.Context.CanResolve),title:p.localize(7,null)},{menuId:E.suggestWidgetStatusbarMenu,group:\"right\",order:1,when:v.ContextKeyExpr.and(E.Context.DetailsVisible.toNegated(),E.Context.CanResolve),title:p.localize(8,null)}]})),(0,t.registerEditorCommand)(new Z({id:\"toggleExplainMode\",precondition:E.Context.Visible,handler:J=>J.toggleExplainMode(),kbOpts:{weight:100,primary:2138}})),(0,t.registerEditorCommand)(new Z({id:\"toggleSuggestionFocus\",precondition:E.Context.Visible,handler:J=>J.toggleSuggestionFocus(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:2570,mac:{primary:778}}})),(0,t.registerEditorCommand)(new Z({id:\"insertBestCompletion\",precondition:v.ContextKeyExpr.and(r.EditorContextKeys.textInputFocus,v.ContextKeyExpr.equals(\"config.editor.tabCompletion\",\"on\"),l.WordContextKey.AtEnd,E.Context.Visible.toNegated(),I.SuggestAlternatives.OtherSuggestions.toNegated(),c.SnippetController2.InSnippetMode.toNegated()),handler:(J,X)=>{J.triggerSuggestAndAcceptBest((0,i.isObject)(X)?Object.assign({fallback:\"tab\"},X):{fallback:\"tab\"})},kbOpts:{weight:G,primary:2}})),(0,t.registerEditorCommand)(new Z({id:\"insertNextSuggestion\",precondition:v.ContextKeyExpr.and(r.EditorContextKeys.textInputFocus,v.ContextKeyExpr.equals(\"config.editor.tabCompletion\",\"on\"),I.SuggestAlternatives.OtherSuggestions,E.Context.Visible.toNegated(),c.SnippetController2.InSnippetMode.toNegated()),handler:J=>J.acceptNextSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:2}})),(0,t.registerEditorCommand)(new Z({id:\"insertPrevSuggestion\",precondition:v.ContextKeyExpr.and(r.EditorContextKeys.textInputFocus,v.ContextKeyExpr.equals(\"config.editor.tabCompletion\",\"on\"),I.SuggestAlternatives.OtherSuggestions,E.Context.Visible.toNegated(),c.SnippetController2.InSnippetMode.toNegated()),handler:J=>J.acceptPrevSuggestion(),kbOpts:{weight:G,kbExpr:r.EditorContextKeys.textInputFocus,primary:1026}})),(0,t.registerEditorAction)(class extends t.EditorAction{constructor(){super({id:\"editor.action.resetSuggestSize\",label:p.localize(9,null),alias:\"Reset Suggest Widget Size\",precondition:void 0})}run(J,X){var H;(H=j.get(X))===null||H===void 0||H.resetWidgetSize()}})}),define(ne[915],se([1,0,6,2,12,5,29,128,377,378,42,296,14]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SuggestItemInfo=e.SuggestWidgetAdaptor=void 0;class n extends k.Disposable{get selectedItem(){return this._selectedItem}constructor(h,r,c,o){super(),this.editor=h,this.suggestControllerPreselector=r,this.checkModelVersion=c,this.onWillAccept=o,this.isSuggestWidgetVisible=!1,this.isShiftKeyPressed=!1,this._isActive=!1,this._currentSuggestItemInfo=void 0,this._selectedItem=(0,C.observableValue)(\"suggestWidgetInlineCompletionProvider.selectedItem\",void 0),this._register(h.onKeyDown(l=>{l.shiftKey&&!this.isShiftKeyPressed&&(this.isShiftKeyPressed=!0,this.update(this._isActive))})),this._register(h.onKeyUp(l=>{l.shiftKey&&this.isShiftKeyPressed&&(this.isShiftKeyPressed=!1,this.update(this._isActive))}));const d=g.SuggestController.get(this.editor);if(d){this._register(d.registerSelector({priority:100,select:(m,v,b)=>{var w;(0,C.transaction)(T=>this.checkModelVersion(T));const E=this.editor.getModel();if(!E)return-1;const I=(w=this.suggestControllerPreselector())===null||w===void 0?void 0:w.removeCommonPrefix(E);if(!I)return-1;const M=y.Position.lift(v),P=b.map((T,A)=>{const F=t.fromSuggestion(d,E,M,T,this.isShiftKeyPressed).toSingleTextEdit().removeCommonPrefix(E),O=I.augments(F);return{index:A,valid:O,prefixLength:F.text.length,suggestItem:T}}).filter(T=>T&&T.valid&&T.prefixLength>0),x=(0,i.findMaxBy)(P,(0,i.compareBy)(T=>T.prefixLength,i.numberComparator));return x?x.index:-1}}));let l=!1;const p=()=>{l||(l=!0,this._register(d.widget.value.onDidShow(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})),this._register(d.widget.value.onDidHide(()=>{this.isSuggestWidgetVisible=!1,this.update(!1)})),this._register(d.widget.value.onDidFocus(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})))};this._register(L.Event.once(d.model.onDidTrigger)(m=>{p()})),this._register(d.onWillInsertSuggestItem(m=>{const v=this.editor.getPosition(),b=this.editor.getModel();if(!v||!b)return;const w=t.fromSuggestion(d,b,v,m.item,this.isShiftKeyPressed);this.onWillAccept(w)}))}this.update(this._isActive)}update(h){const r=this.getSuggestItemInfo();(this._isActive!==h||!a(this._currentSuggestItemInfo,r))&&(this._isActive=h,this._currentSuggestItemInfo=r,(0,C.transaction)(c=>{this.checkModelVersion(c),this._selectedItem.set(this._isActive?this._currentSuggestItemInfo:void 0,c)}))}getSuggestItemInfo(){const h=g.SuggestController.get(this.editor);if(!h||!this.isSuggestWidgetVisible)return;const r=h.widget.value.getFocusedItem(),c=this.editor.getPosition(),o=this.editor.getModel();if(!(!r||!c||!o))return t.fromSuggestion(h,o,c,r.item,this.isShiftKeyPressed)}stopForceRenderingAbove(){const h=g.SuggestController.get(this.editor);h?.stopForceRenderingAbove()}forceRenderingAbove(){const h=g.SuggestController.get(this.editor);h?.forceRenderingAbove()}}e.SuggestWidgetAdaptor=n;class t{static fromSuggestion(h,r,c,o,d){let{insertText:l}=o.completion,p=!1;if(o.completion.insertTextRules&4){const v=new f.SnippetParser().parse(l);v.children.length<100&&_.SnippetSession.adjustWhitespace(r,c,!0,v),l=v.toString(),p=!0}const m=h.getOverwriteInfo(o,d);return new t(D.Range.fromPositions(c.delta(0,-m.overwriteBefore),c.delta(0,Math.max(m.overwriteAfter,0))),l,o.completion.kind,p)}constructor(h,r,c,o){this.range=h,this.insertText=r,this.completionItemKind=c,this.isSnippetText=o}equals(h){return this.range.equalsRange(h.range)&&this.insertText===h.insertText&&this.completionItemKind===h.completionItemKind&&this.isSnippetText===h.isSnippetText}toSelectedSuggestionInfo(){return new S.SelectedSuggestionInfo(this.range,this.insertText,this.completionItemKind,this.isSnippetText)}toSingleTextEdit(){return new s.SingleTextEdit(this.range,this.insertText)}}e.SuggestItemInfo=t;function a(u,h){return u===h?!0:!u||!h?!1:u.equals(h)}}),define(ne[258],se([1,0,49,6,2,42,189,12,76,18,214,750,235,253,913,915,680,116,27,28,15,8,34]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l){\"use strict\";var p;Object.defineProperty(e,\"__esModule\",{value:!0}),e.InlineCompletionsController=void 0;let m=p=class extends y.Disposable{static get(b){return b.getContribution(p.ID)}constructor(b,w,E,I,M,P,x,T,A){super(),this.editor=b,this.instantiationService=w,this.contextKeyService=E,this.configurationService=I,this.commandService=M,this.debounceService=P,this.languageFeaturesService=x,this.audioCueService=T,this._keybindingService=A,this.model=(0,D.disposableObservableValue)(\"inlineCompletionModel\",void 0),this.textModelVersionId=(0,D.observableValue)(\"textModelVersionId\",-1),this.cursorPosition=(0,D.observableValue)(\"cursorPosition\",new f.Position(1,1)),this.suggestWidgetAdaptor=this._register(new a.SuggestWidgetAdaptor(this.editor,()=>{var O,W;return(W=(O=this.model.get())===null||O===void 0?void 0:O.selectedInlineCompletion.get())===null||W===void 0?void 0:W.toSingleTextEdit(void 0)},O=>this.updateObservables(O,t.VersionIdChangeReason.Other),O=>{(0,D.transaction)(W=>{var U;this.updateObservables(W,t.VersionIdChangeReason.Other),(U=this.model.get())===null||U===void 0||U.handleSuggestAccepted(O)})})),this._enabled=(0,D.observableFromEvent)(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(61).enabled),this.ghostTextWidget=this._register(this.instantiationService.createInstance(s.GhostTextWidget,this.editor,{ghostText:this.model.map((O,W)=>O?.ghostText.read(W)),minReservedLineCount:(0,D.constObservable)(0),targetTextModel:this.model.map(O=>O?.textModel)})),this._debounceValue=this.debounceService.for(this.languageFeaturesService.inlineCompletionsProvider,\"InlineCompletionsDebounce\",{min:50,max:50}),this._register(new i.InlineCompletionContextKeys(this.contextKeyService,this.model)),this._register(k.Event.runAndSubscribe(b.onDidChangeModel,()=>(0,D.transaction)(O=>{this.model.set(void 0,O),this.updateObservables(O,t.VersionIdChangeReason.Other);const W=b.getModel();if(W){const U=w.createInstance(t.InlineCompletionsModel,W,this.suggestWidgetAdaptor.selectedItem,this.cursorPosition,this.textModelVersionId,this._debounceValue,(0,D.observableFromEvent)(b.onDidChangeConfiguration,()=>b.getOption(116).preview),(0,D.observableFromEvent)(b.onDidChangeConfiguration,()=>b.getOption(116).previewMode),(0,D.observableFromEvent)(b.onDidChangeConfiguration,()=>b.getOption(61).mode),this._enabled);this.model.set(U,O)}})));const N=O=>{var W;return O.isUndoing?t.VersionIdChangeReason.Undo:O.isRedoing?t.VersionIdChangeReason.Redo:!((W=this.model.get())===null||W===void 0)&&W.isAcceptingPartially?t.VersionIdChangeReason.AcceptWord:t.VersionIdChangeReason.Other};this._register(b.onDidChangeModelContent(O=>(0,D.transaction)(W=>this.updateObservables(W,N(O))))),this._register(b.onDidChangeCursorPosition(O=>(0,D.transaction)(W=>{var U;this.updateObservables(W,t.VersionIdChangeReason.Other),(O.reason===3||O.source===\"api\")&&((U=this.model.get())===null||U===void 0||U.stop(W))}))),this._register(b.onDidType(()=>(0,D.transaction)(O=>{var W;this.updateObservables(O,t.VersionIdChangeReason.Other),this._enabled.get()&&((W=this.model.get())===null||W===void 0||W.trigger(O))}))),this._register(this.commandService.onDidExecuteCommand(O=>{new Set([S.CoreEditingCommands.Tab.id,S.CoreEditingCommands.DeleteLeft.id,S.CoreEditingCommands.DeleteRight.id,C.inlineSuggestCommitId,\"acceptSelectedSuggestion\"]).has(O.commandId)&&b.hasTextFocus()&&this._enabled.get()&&(0,D.transaction)(U=>{var j;(j=this.model.get())===null||j===void 0||j.trigger(U)})})),this._register(this.editor.onDidBlurEditorWidget(()=>{this.contextKeyService.getContextKeyValue(\"accessibleViewIsShown\")||this.configurationService.getValue(\"editor.inlineSuggest.keepOnBlur\")||b.getOption(61).keepOnBlur||n.InlineSuggestionHintsContentWidget.dropDownVisible||(0,D.transaction)(O=>{var W;(W=this.model.get())===null||W===void 0||W.stop(O)})})),this._register((0,D.autorun)(O=>{var W;const U=(W=this.model.read(O))===null||W===void 0?void 0:W.state.read(O);U?.suggestItem?U.ghostText.lineCount>=2&&this.suggestWidgetAdaptor.forceRenderingAbove():this.suggestWidgetAdaptor.stopForceRenderingAbove()})),this._register((0,y.toDisposable)(()=>{this.suggestWidgetAdaptor.stopForceRenderingAbove()}));let F;this._register((0,D.autorun)(O=>{const W=this.model.read(O),U=W?.state.read(O);if(!W||!U||!U.inlineCompletion){F=void 0;return}if(U.inlineCompletion.semanticId!==F){F=U.inlineCompletion.semanticId;const j=W.textModel.getLineContent(U.ghostText.lineNumber);this.audioCueService.playAudioCue(h.AudioCue.inlineSuggestion).then(()=>{this.editor.getOption(7)&&this.provideScreenReaderUpdate(U.ghostText.renderForScreenReader(j))})}})),this._register(new n.InlineCompletionsHintsWidget(this.editor,this.model,this.instantiationService)),this._register(this.configurationService.onDidChangeConfiguration(O=>{O.affectsConfiguration(\"accessibility.verbosity.inlineCompletions\")&&this.editor.updateOptions({inlineCompletionsAccessibilityVerbose:this.configurationService.getValue(\"accessibility.verbosity.inlineCompletions\")})})),this.editor.updateOptions({inlineCompletionsAccessibilityVerbose:this.configurationService.getValue(\"accessibility.verbosity.inlineCompletions\")})}provideScreenReaderUpdate(b){const w=this.contextKeyService.getContextKeyValue(\"accessibleViewIsShown\"),E=this._keybindingService.lookupKeybinding(\"editor.action.accessibleView\");let I;!w&&E&&this.editor.getOption(146)&&(I=(0,u.localize)(0,null,E.getAriaLabel())),I?(0,L.alert)(b+\", \"+I):(0,L.alert)(b)}updateObservables(b,w){var E,I;const M=this.editor.getModel();this.textModelVersionId.set((E=M?.getVersionId())!==null&&E!==void 0?E:-1,b,w),this.cursorPosition.set((I=this.editor.getPosition())!==null&&I!==void 0?I:new f.Position(1,1),b)}shouldShowHoverAt(b){var w;const E=(w=this.model.get())===null||w===void 0?void 0:w.ghostText.get();return E?E.parts.some(I=>b.containsPosition(new f.Position(E.lineNumber,I.column))):!1}shouldShowHoverAtViewZone(b){return this.ghostTextWidget.ownsViewZone(b)}};e.InlineCompletionsController=m,m.ID=\"editor.contrib.inlineCompletionsController\",e.InlineCompletionsController=m=p=ke([fe(1,d.IInstantiationService),fe(2,o.IContextKeyService),fe(3,c.IConfigurationService),fe(4,r.ICommandService),fe(5,_.ILanguageFeatureDebounceService),fe(6,g.ILanguageFeaturesService),fe(7,h.IAudioCueService),fe(8,l.IKeybindingService)],m)}),define(ne[916],se([1,0,42,16,21,214,235,258,135,677,30,28,15]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ToggleAlwaysShowInlineSuggestionToolbar=e.HideInlineCompletion=e.AcceptInlineCompletion=e.AcceptNextLineOfInlineCompletion=e.AcceptNextWordOfInlineCompletion=e.TriggerInlineSuggestionAction=e.ShowPreviousInlineSuggestionAction=e.ShowNextInlineSuggestionAction=void 0;class n extends k.EditorAction{constructor(){super({id:n.ID,label:g.localize(0,null),alias:\"Show Next Inline Suggestion\",precondition:i.ContextKeyExpr.and(y.EditorContextKeys.writable,S.InlineCompletionContextKeys.inlineSuggestionVisible),kbOpts:{weight:100,primary:606}})}run(l,p){var m;return we(this,void 0,void 0,function*(){const v=f.InlineCompletionsController.get(p);(m=v?.model.get())===null||m===void 0||m.next()})}}e.ShowNextInlineSuggestionAction=n,n.ID=D.showNextInlineSuggestionActionId;class t extends k.EditorAction{constructor(){super({id:t.ID,label:g.localize(1,null),alias:\"Show Previous Inline Suggestion\",precondition:i.ContextKeyExpr.and(y.EditorContextKeys.writable,S.InlineCompletionContextKeys.inlineSuggestionVisible),kbOpts:{weight:100,primary:604}})}run(l,p){var m;return we(this,void 0,void 0,function*(){const v=f.InlineCompletionsController.get(p);(m=v?.model.get())===null||m===void 0||m.previous()})}}e.ShowPreviousInlineSuggestionAction=t,t.ID=D.showPreviousInlineSuggestionActionId;class a extends k.EditorAction{constructor(){super({id:\"editor.action.inlineSuggest.trigger\",label:g.localize(2,null),alias:\"Trigger Inline Suggestion\",precondition:y.EditorContextKeys.writable})}run(l,p){var m;return we(this,void 0,void 0,function*(){const v=f.InlineCompletionsController.get(p);(m=v?.model.get())===null||m===void 0||m.triggerExplicitly()})}}e.TriggerInlineSuggestionAction=a;class u extends k.EditorAction{constructor(){super({id:\"editor.action.inlineSuggest.acceptNextWord\",label:g.localize(3,null),alias:\"Accept Next Word Of Inline Suggestion\",precondition:i.ContextKeyExpr.and(y.EditorContextKeys.writable,S.InlineCompletionContextKeys.inlineSuggestionVisible),kbOpts:{weight:100+1,primary:2065,kbExpr:i.ContextKeyExpr.and(y.EditorContextKeys.writable,S.InlineCompletionContextKeys.inlineSuggestionVisible)},menuOpts:[{menuId:C.MenuId.InlineSuggestionToolbar,title:g.localize(4,null),group:\"primary\",order:2}]})}run(l,p){var m;return we(this,void 0,void 0,function*(){const v=f.InlineCompletionsController.get(p);yield(m=v?.model.get())===null||m===void 0?void 0:m.acceptNextWord(v.editor)})}}e.AcceptNextWordOfInlineCompletion=u;class h extends k.EditorAction{constructor(){super({id:\"editor.action.inlineSuggest.acceptNextLine\",label:g.localize(5,null),alias:\"Accept Next Line Of Inline Suggestion\",precondition:i.ContextKeyExpr.and(y.EditorContextKeys.writable,S.InlineCompletionContextKeys.inlineSuggestionVisible),kbOpts:{weight:100+1},menuOpts:[{menuId:C.MenuId.InlineSuggestionToolbar,title:g.localize(6,null),group:\"secondary\",order:2}]})}run(l,p){var m;return we(this,void 0,void 0,function*(){const v=f.InlineCompletionsController.get(p);yield(m=v?.model.get())===null||m===void 0?void 0:m.acceptNextLine(v.editor)})}}e.AcceptNextLineOfInlineCompletion=h;class r extends k.EditorAction{constructor(){super({id:D.inlineSuggestCommitId,label:g.localize(7,null),alias:\"Accept Inline Suggestion\",precondition:S.InlineCompletionContextKeys.inlineSuggestionVisible,menuOpts:[{menuId:C.MenuId.InlineSuggestionToolbar,title:g.localize(8,null),group:\"primary\",order:1}],kbOpts:{primary:2,weight:200,kbExpr:i.ContextKeyExpr.and(S.InlineCompletionContextKeys.inlineSuggestionVisible,y.EditorContextKeys.tabMovesFocus.toNegated(),S.InlineCompletionContextKeys.inlineSuggestionHasIndentationLessThanTabSize,_.Context.Visible.toNegated(),y.EditorContextKeys.hoverFocused.toNegated())}})}run(l,p){var m;return we(this,void 0,void 0,function*(){const v=f.InlineCompletionsController.get(p);v&&((m=v.model.get())===null||m===void 0||m.accept(v.editor),v.editor.focus())})}}e.AcceptInlineCompletion=r;class c extends k.EditorAction{constructor(){super({id:c.ID,label:g.localize(9,null),alias:\"Hide Inline Suggestion\",precondition:S.InlineCompletionContextKeys.inlineSuggestionVisible,kbOpts:{weight:100,primary:9}})}run(l,p){return we(this,void 0,void 0,function*(){const m=f.InlineCompletionsController.get(p);(0,L.transaction)(v=>{var b;(b=m?.model.get())===null||b===void 0||b.stop(v)})})}}e.HideInlineCompletion=c,c.ID=\"editor.action.inlineSuggest.hide\";class o extends C.Action2{constructor(){super({id:o.ID,title:g.localize(10,null),f1:!1,precondition:void 0,menu:[{id:C.MenuId.InlineSuggestionToolbar,group:\"secondary\",order:10}],toggled:i.ContextKeyExpr.equals(\"config.editor.inlineSuggest.showToolbar\",\"always\")})}run(l,p){return we(this,void 0,void 0,function*(){const m=l.get(s.IConfigurationService),b=m.getValue(\"editor.inlineSuggest.showToolbar\")===\"always\"?\"onHover\":\"always\";m.updateValue(\"editor.inlineSuggest.showToolbar\",b)})}}e.ToggleAlwaysShowInlineSuggestionToolbar=o,o.ID=\"editor.action.inlineSuggest.toggleAlwaysShowToolbar\"}),define(ne[917],se([1,0,7,55,2,42,5,41,103,258,253,117,678,84,8,56,79]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InlineCompletionsHoverParticipant=e.InlineCompletionsHover=void 0;class h{constructor(o,d,l){this.owner=o,this.range=d,this.controller=l}isValidForHoverAnchor(o){return o.type===1&&this.range.startColumn<=o.range.startColumn&&this.range.endColumn>=o.range.endColumn}}e.InlineCompletionsHover=h;let r=class{constructor(o,d,l,p,m,v){this._editor=o,this._languageService=d,this._openerService=l,this.accessibilityService=p,this._instantiationService=m,this._telemetryService=v,this.hoverOrdinal=4}suggestHoverAnchor(o){const d=g.InlineCompletionsController.get(this._editor);if(!d)return null;const l=o.target;if(l.type===8){const p=l.detail;if(d.shouldShowHoverAtViewZone(p.viewZoneId))return new _.HoverForeignElementAnchor(1e3,this,S.Range.fromPositions(this._editor.getModel().validatePosition(p.positionBefore||p.position)),o.event.posx,o.event.posy,!1)}return l.type===7&&d.shouldShowHoverAt(l.range)?new _.HoverForeignElementAnchor(1e3,this,l.range,o.event.posx,o.event.posy,!1):l.type===6&&l.detail.mightBeForeignElement&&d.shouldShowHoverAt(l.range)?new _.HoverForeignElementAnchor(1e3,this,l.range,o.event.posx,o.event.posy,!1):null}computeSync(o,d){if(this._editor.getOption(61).showToolbar===\"always\")return[];const l=g.InlineCompletionsController.get(this._editor);return l&&l.shouldShowHoverAt(o.range)?[new h(this,o.range,l)]:[]}renderHoverParts(o,d){const l=new y.DisposableStore,p=d[0];this._telemetryService.publicLog2(\"inlineCompletionHover.shown\"),this.accessibilityService.isScreenReaderOptimized()&&!this._editor.getOption(7)&&this.renderScreenReaderText(o,p,l);const m=p.controller.model.get(),v=this._instantiationService.createInstance(C.InlineSuggestionHintsContentWidget,this._editor,!1,(0,D.constObservable)(null),m.selectedInlineCompletionIndex,m.inlineCompletionsCount,m.selectedInlineCompletion.map(b=>{var w;return(w=b?.inlineCompletion.source.inlineCompletions.commands)!==null&&w!==void 0?w:[]}));return o.fragment.appendChild(v.getDomNode()),m.triggerExplicitly(),l.add(v),l}renderScreenReaderText(o,d,l){const p=L.$,m=p(\"div.hover-row.markdown-hover\"),v=L.append(m,p(\"div.hover-contents\",{[\"aria-live\"]:\"assertive\"})),b=l.add(new s.MarkdownRenderer({editor:this._editor},this._languageService,this._openerService)),w=E=>{l.add(b.onDidRenderAsync(()=>{v.className=\"hover-contents code-hover-contents\",o.onContentsChanged()}));const I=i.localize(0,null),M=l.add(b.render(new k.MarkdownString().appendText(I).appendCodeblock(\"text\",E)));v.replaceChildren(M.element)};l.add((0,D.autorun)(E=>{var I;const M=(I=d.controller.model.read(E))===null||I===void 0?void 0:I.ghostText.read(E);if(M){const P=this._editor.getModel().getLineContent(M.lineNumber);w(M.renderForScreenReader(P))}else L.reset(v)})),o.fragment.appendChild(m)}};e.InlineCompletionsHoverParticipant=r,e.InlineCompletionsHoverParticipant=r=ke([fe(1,f.ILanguageService),fe(2,a.IOpenerService),fe(3,n.IAccessibilityService),fe(4,t.IInstantiationService),fe(5,u.ITelemetryService)],r)}),define(ne[918],se([1,0,16,103,916,917,258,30]),function(Q,e,L,k,y,D,S,f){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),(0,L.registerEditorContribution)(S.InlineCompletionsController.ID,S.InlineCompletionsController,3),(0,L.registerEditorAction)(y.TriggerInlineSuggestionAction),(0,L.registerEditorAction)(y.ShowNextInlineSuggestionAction),(0,L.registerEditorAction)(y.ShowPreviousInlineSuggestionAction),(0,L.registerEditorAction)(y.AcceptNextWordOfInlineCompletion),(0,L.registerEditorAction)(y.AcceptNextLineOfInlineCompletion),(0,L.registerEditorAction)(y.AcceptInlineCompletion),(0,L.registerEditorAction)(y.HideInlineCompletion),(0,f.registerAction2)(y.ToggleAlwaysShowInlineSuggestionToolbar),k.HoverParticipantRegistry.register(D.InlineCompletionsHoverParticipant)}),define(ne[379],se([1,0,8]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IWorkspaceTrustManagementService=void 0,e.IWorkspaceTrustManagementService=(0,L.createDecorator)(\"workspaceTrustManagementService\")}),define(ne[919],se([1,0,13,25,55,2,17,11,16,36,40,286,115,41,325,103,248,834,709,28,8,56,71,62,379,465]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ShowExcludeOptions=e.DisableHighlightingOfNonBasicAsciiCharactersAction=e.DisableHighlightingOfInvisibleCharactersAction=e.DisableHighlightingOfAmbiguousCharactersAction=e.DisableHighlightingInStringsAction=e.DisableHighlightingInCommentsAction=e.UnicodeHighlighterHoverParticipant=e.UnicodeHighlighter=e.warningIcon=void 0,e.warningIcon=(0,p.registerIcon)(\"extensions-warning-message\",k.Codicon.warning,r.localize(0,null));let v=class extends D.Disposable{constructor(J,X,H,B){super(),this._editor=J,this._editorWorkerService=X,this._workspaceTrustService=H,this._highlighter=null,this._bannerClosed=!1,this._updateState=V=>{if(V&&V.hasMore){if(this._bannerClosed)return;const Y=Math.max(V.ambiguousCharacterCount,V.nonBasicAsciiCharacterCount,V.invisibleCharacterCount);let ie;if(V.nonBasicAsciiCharacterCount>=Y)ie={message:r.localize(1,null),command:new U};else if(V.ambiguousCharacterCount>=Y)ie={message:r.localize(2,null),command:new O};else if(V.invisibleCharacterCount>=Y)ie={message:r.localize(3,null),command:new W};else throw new Error(\"Unreachable\");this._bannerController.show({id:\"unicodeHighlightBanner\",message:ie.message,icon:e.warningIcon,actions:[{label:ie.command.shortLabel,href:`command:${ie.command.id}`}],onClose:()=>{this._bannerClosed=!0}})}else this._bannerController.hide()},this._bannerController=this._register(B.createInstance(h.BannerController,J)),this._register(this._editor.onDidChangeModel(()=>{this._bannerClosed=!1,this._updateHighlighter()})),this._options=J.getOption(123),this._register(H.onDidChangeTrust(V=>{this._updateHighlighter()})),this._register(J.onDidChangeConfiguration(V=>{V.hasChanged(123)&&(this._options=J.getOption(123),this._updateHighlighter())})),this._updateHighlighter()}dispose(){this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),super.dispose()}_updateHighlighter(){if(this._updateState(null),this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),!this._editor.hasModel())return;const J=b(this._workspaceTrustService.isWorkspaceTrusted(),this._options);if([J.nonBasicASCII,J.ambiguousCharacters,J.invisibleCharacters].every(H=>H===!1))return;const X={nonBasicASCII:J.nonBasicASCII,ambiguousCharacters:J.ambiguousCharacters,invisibleCharacters:J.invisibleCharacters,includeComments:J.includeComments,includeStrings:J.includeStrings,allowedCodePoints:Object.keys(J.allowedCharacters).map(H=>H.codePointAt(0)),allowedLocales:Object.keys(J.allowedLocales).map(H=>H===\"_os\"?new Intl.NumberFormat().resolvedOptions().locale:H===\"_vscode\"?S.language:H)};this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)?this._highlighter=new w(this._editor,X,this._updateState,this._editorWorkerService):this._highlighter=new E(this._editor,X,this._updateState)}getDecorationInfo(J){return this._highlighter?this._highlighter.getDecorationInfo(J):null}};e.UnicodeHighlighter=v,v.ID=\"editor.contrib.unicodeHighlighter\",e.UnicodeHighlighter=v=ke([fe(1,i.IEditorWorkerService),fe(2,m.IWorkspaceTrustManagementService),fe(3,o.IInstantiationService)],v);function b(Z,J){return{nonBasicASCII:J.nonBasicASCII===g.inUntrustedWorkspace?!Z:J.nonBasicASCII,ambiguousCharacters:J.ambiguousCharacters,invisibleCharacters:J.invisibleCharacters,includeComments:J.includeComments===g.inUntrustedWorkspace?!Z:J.includeComments,includeStrings:J.includeStrings===g.inUntrustedWorkspace?!Z:J.includeStrings,allowedCharacters:J.allowedCharacters,allowedLocales:J.allowedLocales}}let w=class extends D.Disposable{constructor(J,X,H,B){super(),this._editor=J,this._options=X,this._updateState=H,this._editorWorkerService=B,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new L.RunOnceScheduler(()=>this._update(),250)),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const J=this._model.getVersionId();this._editorWorkerService.computedUnicodeHighlights(this._model.uri,this._options).then(X=>{if(this._model.isDisposed()||this._model.getVersionId()!==J)return;this._updateState(X);const H=[];if(!X.hasMore)for(const B of X.ranges)H.push({range:B,options:A.instance.getDecorationFromOptions(this._options)});this._decorations.set(H)})}getDecorationInfo(J){if(!this._decorations.has(J))return null;const X=this._editor.getModel();if(!(0,t.isModelDecorationVisible)(X,J))return null;const H=X.getValueInRange(J.range);return{reason:T(H,this._options),inComment:(0,t.isModelDecorationInComment)(X,J),inString:(0,t.isModelDecorationInString)(X,J)}}};w=ke([fe(3,i.IEditorWorkerService)],w);class E extends D.Disposable{constructor(J,X,H){super(),this._editor=J,this._options=X,this._updateState=H,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new L.RunOnceScheduler(()=>this._update(),250)),this._register(this._editor.onDidLayoutChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidScrollChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeHiddenAreas(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const J=this._editor.getVisibleRanges(),X=[],H={ranges:[],ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0,hasMore:!1};for(const B of J){const V=s.UnicodeTextModelHighlighter.computeUnicodeHighlights(this._model,this._options,B);for(const Y of V.ranges)H.ranges.push(Y);H.ambiguousCharacterCount+=H.ambiguousCharacterCount,H.invisibleCharacterCount+=H.invisibleCharacterCount,H.nonBasicAsciiCharacterCount+=H.nonBasicAsciiCharacterCount,H.hasMore=H.hasMore||V.hasMore}if(!H.hasMore)for(const B of H.ranges)X.push({range:B,options:A.instance.getDecorationFromOptions(this._options)});this._updateState(H),this._decorations.set(X)}getDecorationInfo(J){if(!this._decorations.has(J))return null;const X=this._editor.getModel(),H=X.getValueInRange(J.range);return(0,t.isModelDecorationVisible)(X,J)?{reason:T(H,this._options),inComment:(0,t.isModelDecorationInComment)(X,J),inString:(0,t.isModelDecorationInString)(X,J)}:null}}let I=class{constructor(J,X,H){this._editor=J,this._languageService=X,this._openerService=H,this.hoverOrdinal=5}computeSync(J,X){if(!this._editor.hasModel()||J.type!==1)return[];const H=this._editor.getModel(),B=this._editor.getContribution(v.ID);if(!B)return[];const V=[],Y=new Set;let ie=300;for(const ae of X){const ce=B.getDecorationInfo(ae);if(!ce)continue;const he=H.getValueInRange(ae.range).codePointAt(0),ue=P(he);let te;switch(ce.reason.kind){case 0:{(0,f.isBasicASCII)(ce.reason.confusableWith)?te=r.localize(4,null,ue,P(ce.reason.confusableWith.codePointAt(0))):te=r.localize(5,null,ue,P(ce.reason.confusableWith.codePointAt(0)));break}case 1:te=r.localize(6,null,ue);break;case 2:te=r.localize(7,null,ue);break}if(Y.has(te))continue;Y.add(te);const q={codePoint:he,reason:ce.reason,inComment:ce.inComment,inString:ce.inString},z=r.localize(8,null),ee=`command:${j.ID}?${encodeURIComponent(JSON.stringify(q))}`,$=new y.MarkdownString(\"\",!0).appendMarkdown(te).appendText(\" \").appendLink(ee,z);V.push(new u.MarkdownHover(this,ae.range,[$],!1,ie++))}return V}renderHoverParts(J,X){return(0,u.renderMarkdownHovers)(J,X,this._editor,this._languageService,this._openerService)}};e.UnicodeHighlighterHoverParticipant=I,e.UnicodeHighlighterHoverParticipant=I=ke([fe(1,n.ILanguageService),fe(2,d.IOpenerService)],I);function M(Z){return`U+${Z.toString(16).padStart(4,\"0\")}`}function P(Z){let J=`\\`${M(Z)}\\``;return f.InvisibleCharacters.isInvisibleCharacter(Z)||(J+=` \"${`${x(Z)}`}\"`),J}function x(Z){return Z===96?\"`` ` ``\":\"`\"+String.fromCodePoint(Z)+\"`\"}function T(Z,J){return s.UnicodeTextModelHighlighter.computeUnicodeHighlightReason(Z,J)}class A{constructor(){this.map=new Map}getDecorationFromOptions(J){return this.getDecoration(!J.includeComments,!J.includeStrings)}getDecoration(J,X){const H=`${J}${X}`;let B=this.map.get(H);return B||(B=C.ModelDecorationOptions.createDynamic({description:\"unicode-highlight\",stickiness:1,className:\"unicode-highlight\",showIfCollapsed:!0,overviewRuler:null,minimap:null,hideInCommentTokens:J,hideInStringTokens:X}),this.map.set(H,B)),B}}A.instance=new A;class N extends _.EditorAction{constructor(){super({id:O.ID,label:r.localize(10,null),alias:\"Disable highlighting of characters in comments\",precondition:void 0}),this.shortLabel=r.localize(9,null)}run(J,X,H){return we(this,void 0,void 0,function*(){const B=J?.get(c.IConfigurationService);B&&this.runAction(B)})}runAction(J){return we(this,void 0,void 0,function*(){yield J.updateValue(g.unicodeHighlightConfigKeys.includeComments,!1,2)})}}e.DisableHighlightingInCommentsAction=N;class F extends _.EditorAction{constructor(){super({id:O.ID,label:r.localize(12,null),alias:\"Disable highlighting of characters in strings\",precondition:void 0}),this.shortLabel=r.localize(11,null)}run(J,X,H){return we(this,void 0,void 0,function*(){const B=J?.get(c.IConfigurationService);B&&this.runAction(B)})}runAction(J){return we(this,void 0,void 0,function*(){yield J.updateValue(g.unicodeHighlightConfigKeys.includeStrings,!1,2)})}}e.DisableHighlightingInStringsAction=F;class O extends _.EditorAction{constructor(){super({id:O.ID,label:r.localize(14,null),alias:\"Disable highlighting of ambiguous characters\",precondition:void 0}),this.shortLabel=r.localize(13,null)}run(J,X,H){return we(this,void 0,void 0,function*(){const B=J?.get(c.IConfigurationService);B&&this.runAction(B)})}runAction(J){return we(this,void 0,void 0,function*(){yield J.updateValue(g.unicodeHighlightConfigKeys.ambiguousCharacters,!1,2)})}}e.DisableHighlightingOfAmbiguousCharactersAction=O,O.ID=\"editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters\";class W extends _.EditorAction{constructor(){super({id:W.ID,label:r.localize(16,null),alias:\"Disable highlighting of invisible characters\",precondition:void 0}),this.shortLabel=r.localize(15,null)}run(J,X,H){return we(this,void 0,void 0,function*(){const B=J?.get(c.IConfigurationService);B&&this.runAction(B)})}runAction(J){return we(this,void 0,void 0,function*(){yield J.updateValue(g.unicodeHighlightConfigKeys.invisibleCharacters,!1,2)})}}e.DisableHighlightingOfInvisibleCharactersAction=W,W.ID=\"editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters\";class U extends _.EditorAction{constructor(){super({id:U.ID,label:r.localize(18,null),alias:\"Disable highlighting of non basic ASCII characters\",precondition:void 0}),this.shortLabel=r.localize(17,null)}run(J,X,H){return we(this,void 0,void 0,function*(){const B=J?.get(c.IConfigurationService);B&&this.runAction(B)})}runAction(J){return we(this,void 0,void 0,function*(){yield J.updateValue(g.unicodeHighlightConfigKeys.nonBasicASCII,!1,2)})}}e.DisableHighlightingOfNonBasicAsciiCharactersAction=U,U.ID=\"editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters\";class j extends _.EditorAction{constructor(){super({id:j.ID,label:r.localize(19,null),alias:\"Show Exclude Options\",precondition:void 0})}run(J,X,H){return we(this,void 0,void 0,function*(){const{codePoint:B,reason:V,inString:Y,inComment:ie}=H,ae=String.fromCodePoint(B),ce=J.get(l.IQuickInputService),de=J.get(c.IConfigurationService);function he(q){return f.InvisibleCharacters.isInvisibleCharacter(q)?r.localize(20,null,M(q)):r.localize(21,null,`${M(q)} \"${ae}\"`)}const ue=[];if(V.kind===0)for(const q of V.notAmbiguousInLocales)ue.push({label:r.localize(22,null,q),run:()=>we(this,void 0,void 0,function*(){K(de,[q])})});if(ue.push({label:he(B),run:()=>R(de,[B])}),ie){const q=new N;ue.push({label:q.label,run:()=>we(this,void 0,void 0,function*(){return q.runAction(de)})})}else if(Y){const q=new F;ue.push({label:q.label,run:()=>we(this,void 0,void 0,function*(){return q.runAction(de)})})}if(V.kind===0){const q=new O;ue.push({label:q.label,run:()=>we(this,void 0,void 0,function*(){return q.runAction(de)})})}else if(V.kind===1){const q=new W;ue.push({label:q.label,run:()=>we(this,void 0,void 0,function*(){return q.runAction(de)})})}else if(V.kind===2){const q=new U;ue.push({label:q.label,run:()=>we(this,void 0,void 0,function*(){return q.runAction(de)})})}else G(V);const te=yield ce.pick(ue,{title:r.localize(23,null)});te&&(yield te.run())})}}e.ShowExcludeOptions=j,j.ID=\"editor.action.unicodeHighlight.showExcludeOptions\";function R(Z,J){return we(this,void 0,void 0,function*(){const X=Z.getValue(g.unicodeHighlightConfigKeys.allowedCharacters);let H;typeof X==\"object\"&&X?H=X:H={};for(const B of J)H[String.fromCodePoint(B)]=!0;yield Z.updateValue(g.unicodeHighlightConfigKeys.allowedCharacters,H,2)})}function K(Z,J){var X;return we(this,void 0,void 0,function*(){const H=(X=Z.inspect(g.unicodeHighlightConfigKeys.allowedLocales).user)===null||X===void 0?void 0:X.value;let B;typeof H==\"object\"&&H?B=Object.assign({},H):B={};for(const V of J)B[V]=!0;yield Z.updateValue(g.unicodeHighlightConfigKeys.allowedLocales,B,2)})}function G(Z){throw new Error(`Unexpected value: ${Z}`)}(0,_.registerEditorAction)(O),(0,_.registerEditorAction)(W),(0,_.registerEditorAction)(U),(0,_.registerEditorAction)(j),(0,_.registerEditorContribution)(v.ID,v,1),a.HoverParticipantRegistry.register(I)}),define(ne[920],se([1,0,189,161,254,237,794,877,795,796,797,828,879,902,886,798,909,799,880,910,911,365,255,802,803,769,918,256,257,371,369,372,805,904,887,806,807,890,891,808,896,833,858,859,860,810,194,906,378,811,812,785,919,813,897,353,814,809,94,172]),function(Q,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0})}),define(ne[259],se([1,0,11,7,44,6,119,2,17,101,22,132,241,73,12,5,51,69,187,27,28,345,15,156,8,760,34,336,118,337,761,158,43,77,79,163,134,94,45,33,70,379,57,763,778,867,50,768,115,242,41,853,233,871,869,361,133,762,84,30,791,764,96,757,232,758,157,191,97,767,56,71,87,782,116,765,149,9,239,32,360,338,908,76,854,748]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P,x,T,A,N,F,O,W,U,j,R,K,G,Z,J,X,H,B,V,Y,ie,ae,ce,de,he,ue,te,q,z,ee,$,re,oe,ge,ve,Se,Le,De,ye,Ee,Me,Pe,Fe,_e,me,le,pe,Ce){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StandaloneServices=e.updateConfigurationService=e.StandaloneConfigurationService=e.StandaloneKeybindingService=e.StandaloneCommandService=e.StandaloneNotificationService=void 0;class be{constructor(Ae){this.disposed=!1,this.model=Ae,this._onWillDispose=new D.Emitter}get textEditorModel(){return this.model}dispose(){this.disposed=!0,this._onWillDispose.fire()}}let Ie=class{constructor(Ae){this.modelService=Ae}createModelReference(Ae){const Ue=this.modelService.getModel(Ae);return Ue?Promise.resolve(new f.ImmortalReference(new be(Ue))):Promise.reject(new Error(\"Model not found\"))}};Ie=ke([fe(0,u.IModelService)],Ie);class Ne{show(){return Ne.NULL_PROGRESS_RUNNER}showWhile(Ae,Ue){return we(this,void 0,void 0,function*(){yield Ae})}}Ne.NULL_PROGRESS_RUNNER={done:()=>{},total:()=>{},worked:()=>{}};class Re{withProgress(Ae,Ue,Ke){return Ue({report:()=>{}})}}class Ve{constructor(){this.isExtensionDevelopment=!1,this.isBuilt=!1}}class ze{confirm(Ae){return we(this,void 0,void 0,function*(){return{confirmed:this.doConfirm(Ae.message,Ae.detail),checkboxChecked:!1}})}doConfirm(Ae,Ue){let Ke=Ae;return Ue&&(Ke=Ke+`\n\n`+Ue),window.confirm(Ke)}prompt(Ae){var Ue,Ke;return we(this,void 0,void 0,function*(){let $e;if(this.doConfirm(Ae.message,Ae.detail)){const tt=[...(Ue=Ae.buttons)!==null&&Ue!==void 0?Ue:[]];Ae.cancelButton&&typeof Ae.cancelButton!=\"string\"&&typeof Ae.cancelButton!=\"boolean\"&&tt.push(Ae.cancelButton),$e=yield(Ke=tt[0])===null||Ke===void 0?void 0:Ke.run({checkboxChecked:!1})}return{result:$e}})}error(Ae,Ue){return we(this,void 0,void 0,function*(){yield this.prompt({type:g.default.Error,message:Ae,detail:Ue})})}}class We{info(Ae){return this.notify({severity:g.default.Info,message:Ae})}warn(Ae){return this.notify({severity:g.default.Warning,message:Ae})}error(Ae){return this.notify({severity:g.default.Error,message:Ae})}notify(Ae){switch(Ae.severity){case g.default.Error:console.error(Ae.message);break;case g.default.Warning:console.warn(Ae.message);break;default:console.log(Ae.message);break}return We.NO_OP}prompt(Ae,Ue,Ke,$e){return We.NO_OP}status(Ae,Ue){return f.Disposable.None}}e.StandaloneNotificationService=We,We.NO_OP=new x.NoOpNotification;let qe=class{constructor(Ae){this._onWillExecuteCommand=new D.Emitter,this._onDidExecuteCommand=new D.Emitter,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this._instantiationService=Ae}executeCommand(Ae,...Ue){const Ke=c.CommandsRegistry.getCommand(Ae);if(!Ke)return Promise.reject(new Error(`command '${Ae}' not found`));try{this._onWillExecuteCommand.fire({commandId:Ae,args:Ue});const $e=this._instantiationService.invokeFunction.apply(this._instantiationService,[Ke.handler,...Ue]);return this._onDidExecuteCommand.fire({commandId:Ae,args:Ue}),Promise.resolve($e)}catch($e){return Promise.reject($e)}}};e.StandaloneCommandService=qe,e.StandaloneCommandService=qe=ke([fe(0,m.IInstantiationService)],qe);let Oe=class extends v.AbstractKeybindingService{constructor(Ae,Ue,Ke,$e,et,tt){super(Ae,Ue,Ke,$e,et),this._cachedResolver=null,this._dynamicKeybindings=[],this._domNodeListeners=[];const ut=mt=>{const wt=new f.DisposableStore;wt.add(k.addDisposableListener(mt,k.EventType.KEY_DOWN,Dt=>{const yt=new y.StandardKeyboardEvent(Dt);this._dispatch(yt,yt.target)&&(yt.preventDefault(),yt.stopPropagation())})),wt.add(k.addDisposableListener(mt,k.EventType.KEY_UP,Dt=>{const yt=new y.StandardKeyboardEvent(Dt);this._singleModifierDispatch(yt,yt.target)&&yt.preventDefault()})),this._domNodeListeners.push(new Ge(mt,wt))},it=mt=>{for(let wt=0;wt<this._domNodeListeners.length;wt++){const Dt=this._domNodeListeners[wt];Dt.domNode===mt&&(this._domNodeListeners.splice(wt,1),Dt.dispose())}},rt=mt=>{mt.getOption(60)||ut(mt.getContainerDomNode())},dt=mt=>{mt.getOption(60)||it(mt.getContainerDomNode())};this._register(tt.onCodeEditorAdd(rt)),this._register(tt.onCodeEditorRemove(dt)),tt.listCodeEditors().forEach(rt);const ft=mt=>{ut(mt.getContainerDomNode())},St=mt=>{it(mt.getContainerDomNode())};this._register(tt.onDiffEditorAdd(ft)),this._register(tt.onDiffEditorRemove(St)),tt.listDiffEditors().forEach(ft)}addDynamicKeybinding(Ae,Ue,Ke,$e){return(0,f.combinedDisposable)(c.CommandsRegistry.registerCommand(Ae,Ke),this.addDynamicKeybindings([{keybinding:Ue,command:Ae,when:$e}]))}addDynamicKeybindings(Ae){const Ue=Ae.map(Ke=>{var $e;return{keybinding:(0,S.decodeKeybinding)(Ke.keybinding,_.OS),command:($e=Ke.command)!==null&&$e!==void 0?$e:null,commandArgs:Ke.commandArgs,when:Ke.when,weight1:1e3,weight2:0,extensionId:null,isBuiltinExtension:!1}});return this._dynamicKeybindings=this._dynamicKeybindings.concat(Ue),this.updateResolver(),(0,f.toDisposable)(()=>{for(let Ke=0;Ke<this._dynamicKeybindings.length;Ke++)if(this._dynamicKeybindings[Ke]===Ue[0]){this._dynamicKeybindings.splice(Ke,Ue.length),this.updateResolver();return}})}updateResolver(){this._cachedResolver=null,this._onDidUpdateKeybindings.fire()}_getResolver(){if(!this._cachedResolver){const Ae=this._toNormalizedKeybindingItems(E.KeybindingsRegistry.getDefaultKeybindings(),!0),Ue=this._toNormalizedKeybindingItems(this._dynamicKeybindings,!1);this._cachedResolver=new w.KeybindingResolver(Ae,Ue,Ke=>this._log(Ke))}return this._cachedResolver}_documentHasFocus(){return document.hasFocus()}_toNormalizedKeybindingItems(Ae,Ue){const Ke=[];let $e=0;for(const et of Ae){const tt=et.when||void 0,ut=et.keybinding;if(!ut)Ke[$e++]=new I.ResolvedKeybindingItem(void 0,et.command,et.commandArgs,tt,Ue,null,!1);else{const it=M.USLayoutResolvedKeybinding.resolveKeybinding(ut,_.OS);for(const rt of it)Ke[$e++]=new I.ResolvedKeybindingItem(rt,et.command,et.commandArgs,tt,Ue,null,!1)}}return Ke}resolveKeyboardEvent(Ae){const Ue=new S.KeyCodeChord(Ae.ctrlKey,Ae.shiftKey,Ae.altKey,Ae.metaKey,Ae.keyCode);return new M.USLayoutResolvedKeybinding([Ue],_.OS)}};e.StandaloneKeybindingService=Oe,e.StandaloneKeybindingService=Oe=ke([fe(0,l.IContextKeyService),fe(1,c.ICommandService),fe(2,A.ITelemetryService),fe(3,x.INotificationService),fe(4,j.ILogService),fe(5,U.ICodeEditorService)],Oe);class Ge extends f.Disposable{constructor(Ae,Ue){super(),this.domNode=Ae,this._register(Ue)}}function Qe(je){return je&&typeof je==\"object\"&&(!je.overrideIdentifier||typeof je.overrideIdentifier==\"string\")&&(!je.resource||je.resource instanceof C.URI)}class st{constructor(){this._onDidChangeConfiguration=new D.Emitter,this.onDidChangeConfiguration=this._onDidChangeConfiguration.event;const Ae=new Fe.DefaultConfiguration;this._configuration=new d.Configuration(Ae.reload(),new d.ConfigurationModel,new d.ConfigurationModel,new d.ConfigurationModel),Ae.dispose()}getValue(Ae,Ue){const Ke=typeof Ae==\"string\"?Ae:void 0,$e=Qe(Ae)?Ae:Qe(Ue)?Ue:{};return this._configuration.getValue(Ke,$e,void 0)}updateValues(Ae){const Ue={data:this._configuration.toData()},Ke=[];for(const $e of Ae){const[et,tt]=$e;this.getValue(et)!==tt&&(this._configuration.updateValue(et,tt),Ke.push(et))}if(Ke.length>0){const $e=new d.ConfigurationChangeEvent({keys:Ke,overrides:[]},Ue,this._configuration);$e.source=8,$e.sourceConfig=null,this._onDidChangeConfiguration.fire($e)}return Promise.resolve()}updateValue(Ae,Ue,Ke,$e){return this.updateValues([[Ae,Ue]])}inspect(Ae,Ue={}){return this._configuration.inspect(Ae,Ue,void 0)}}e.StandaloneConfigurationService=st;let nt=class{constructor(Ae,Ue,Ke){this.configurationService=Ae,this.modelService=Ue,this.languageService=Ke,this._onDidChangeConfiguration=new D.Emitter,this.configurationService.onDidChangeConfiguration($e=>{this._onDidChangeConfiguration.fire({affectedKeys:$e.affectedKeys,affectsConfiguration:(et,tt)=>$e.affectsConfiguration(tt)})})}getValue(Ae,Ue,Ke){const $e=t.Position.isIPosition(Ue)?Ue:null,et=$e?typeof Ke==\"string\"?Ke:void 0:typeof Ue==\"string\"?Ue:void 0,tt=Ae?this.getLanguage(Ae,$e):void 0;return typeof et>\"u\"?this.configurationService.getValue({resource:Ae,overrideIdentifier:tt}):this.configurationService.getValue(et,{resource:Ae,overrideIdentifier:tt})}getLanguage(Ae,Ue){const Ke=this.modelService.getModel(Ae);return Ke?Ue?Ke.getLanguageIdAtPosition(Ue.lineNumber,Ue.column):Ke.getLanguageId():this.languageService.guessLanguageIdByFilepathOrFirstLine(Ae)}};nt=ke([fe(0,o.IConfigurationService),fe(1,u.IModelService),fe(2,Y.ILanguageService)],nt);let ot=class{constructor(Ae){this.configurationService=Ae}getEOL(Ae,Ue){const Ke=this.configurationService.getValue(\"files.eol\",{overrideIdentifier:Ue,resource:Ae});return Ke&&typeof Ke==\"string\"&&Ke!==\"auto\"?Ke:_.isLinux||_.isMacintosh?`\n`:`\\r\n`}};ot=ke([fe(0,o.IConfigurationService)],ot);class ct{publicLog2(){}}class lt{constructor(){const Ae=C.URI.from({scheme:lt.SCHEME,authority:\"model\",path:\"/\"});this.workspace={id:N.STANDALONE_EDITOR_WORKSPACE_ID,folders:[new N.WorkspaceFolder({uri:Ae,name:\"\",index:0})]}}getWorkspace(){return this.workspace}getWorkspaceFolder(Ae){return Ae&&Ae.scheme===lt.SCHEME?this.workspace.folders[0]:null}}lt.SCHEME=\"inmemory\";function gt(je,Ae,Ue){if(!Ae||!(je instanceof st))return;const Ke=[];Object.keys(Ae).forEach($e=>{(0,i.isEditorConfigurationKey)($e)&&Ke.push([`editor.${$e}`,Ae[$e]]),Ue&&(0,i.isDiffEditorConfigurationKey)($e)&&Ke.push([`diffEditor.${$e}`,Ae[$e]])}),Ke.length>0&&je.updateValues(Ke)}e.updateConfigurationService=gt;let at=class{constructor(Ae){this._modelService=Ae}hasPreviewHandler(){return!1}apply(Ae,Ue){return we(this,void 0,void 0,function*(){const Ke=Array.isArray(Ae)?Ae:s.ResourceEdit.convert(Ae),$e=new Map;for(const ut of Ke){if(!(ut instanceof s.ResourceTextEdit))throw new Error(\"bad edit - only text edits are supported\");const it=this._modelService.getModel(ut.resource);if(!it)throw new Error(\"bad edit - model not found\");if(typeof ut.versionId==\"number\"&&it.getVersionId()!==ut.versionId)throw new Error(\"bad state - model changed in the meantime\");let rt=$e.get(it);rt||(rt=[],$e.set(it,rt)),rt.push(n.EditOperation.replaceMove(a.Range.lift(ut.textEdit.range),ut.textEdit.text))}let et=0,tt=0;for(const[ut,it]of $e)ut.pushStackElement(),ut.pushEditOperations([],it,()=>[]),ut.pushStackElement(),tt+=1,et+=it.length;return{ariaSummary:L.format(O.StandaloneServicesNLS.bulkEditServiceSummary,et,tt),isApplied:et>0}})}};at=ke([fe(0,u.IModelService)],at);class ht{getUriLabel(Ae,Ue){return Ae.scheme===\"file\"?Ae.fsPath:Ae.path}getUriBasenameLabel(Ae){return(0,W.basename)(Ae)}}let Be=class extends G.ContextViewService{constructor(Ae,Ue){super(Ae),this._codeEditorService=Ue}showContextView(Ae,Ue,Ke){if(!Ue){const $e=this._codeEditorService.getFocusedCodeEditor()||this._codeEditorService.getActiveCodeEditor();$e&&(Ue=$e.getContainerDomNode())}return super.showContextView(Ae,Ue,Ke)}};Be=ke([fe(0,F.ILayoutService),fe(1,U.ICodeEditorService)],Be);class Te{constructor(){this._neverEmitter=new D.Emitter,this.onDidChangeTrust=this._neverEmitter.event}isWorkspaceTrusted(){return!0}}class xe extends Z.LanguageService{constructor(){super()}}class He extends me.LogService{constructor(){super(new j.ConsoleLogger)}}let Ye=class extends J.ContextMenuService{constructor(Ae,Ue,Ke,$e,et,tt){super(Ae,Ue,Ke,$e,et,tt),this.configure({blockMouse:!1})}};Ye=ke([fe(0,A.ITelemetryService),fe(1,x.INotificationService),fe(2,K.IContextViewService),fe(3,b.IKeybindingService),fe(4,z.IMenuService),fe(5,l.IContextKeyService)],Ye);class Ze{playAudioCue(Ae,Ue){return we(this,void 0,void 0,function*(){})}}(0,X.registerSingleton)(o.IConfigurationService,st,0),(0,X.registerSingleton)(r.ITextResourceConfigurationService,nt,0),(0,X.registerSingleton)(r.ITextResourcePropertiesService,ot,0),(0,X.registerSingleton)(N.IWorkspaceContextService,lt,0),(0,X.registerSingleton)(P.ILabelService,ht,0),(0,X.registerSingleton)(A.ITelemetryService,ct,0),(0,X.registerSingleton)(p.IDialogService,ze,0),(0,X.registerSingleton)(Ce.IEnvironmentService,Ve,0),(0,X.registerSingleton)(x.INotificationService,We,0),(0,X.registerSingleton)(De.IMarkerService,ye.MarkerService,0),(0,X.registerSingleton)(Y.ILanguageService,xe,0),(0,X.registerSingleton)(ue.IStandaloneThemeService,he.StandaloneThemeService,0),(0,X.registerSingleton)(j.ILogService,He,0),(0,X.registerSingleton)(u.IModelService,ce.ModelService,0),(0,X.registerSingleton)(ae.IMarkerDecorationsService,ie.MarkerDecorationsService,0),(0,X.registerSingleton)(l.IContextKeyService,oe.ContextKeyService,0),(0,X.registerSingleton)(T.IProgressService,Re,0),(0,X.registerSingleton)(T.IEditorProgressService,Ne,0),(0,X.registerSingleton)(Pe.IStorageService,Pe.InMemoryStorageService,0),(0,X.registerSingleton)(B.IEditorWorkerService,V.EditorWorkerService,0),(0,X.registerSingleton)(s.IBulkEditService,at,0),(0,X.registerSingleton)(R.IWorkspaceTrustManagementService,Te,0),(0,X.registerSingleton)(h.ITextModelService,Ie,0),(0,X.registerSingleton)(q.IAccessibilityService,te.AccessibilityService,0),(0,X.registerSingleton)(Le.IListService,Le.ListService,0),(0,X.registerSingleton)(c.ICommandService,qe,0),(0,X.registerSingleton)(b.IKeybindingService,Oe,0),(0,X.registerSingleton)(Me.IQuickInputService,de.StandaloneQuickInputService,0),(0,X.registerSingleton)(K.IContextViewService,Be,0),(0,X.registerSingleton)(Ee.IOpenerService,H.OpenerService,0),(0,X.registerSingleton)(re.IClipboardService,$.BrowserClipboardService,0),(0,X.registerSingleton)(K.IContextMenuService,Ye,0),(0,X.registerSingleton)(z.IMenuService,ee.MenuService,0),(0,X.registerSingleton)(_e.IAudioCueService,Ze,0);var Xe;(function(je){const Ae=new Se.ServiceCollection;for(const[it,rt]of(0,X.getSingletonServiceDescriptors)())Ae.set(it,rt);const Ue=new ve.InstantiationService(Ae,!0);Ae.set(m.IInstantiationService,Ue);function Ke(it){$e||tt({});const rt=Ae.get(it);if(!rt)throw new Error(\"Missing service \"+it);return rt instanceof ge.SyncDescriptor?Ue.invokeFunction(dt=>dt.get(it)):rt}je.get=Ke;let $e=!1;const et=new D.Emitter;function tt(it){if($e)return Ue;$e=!0;for(const[dt,ft]of(0,X.getSingletonServiceDescriptors)())Ae.get(dt)||Ae.set(dt,ft);for(const dt in it)if(it.hasOwnProperty(dt)){const ft=(0,m.createDecorator)(dt);Ae.get(ft)instanceof ge.SyncDescriptor&&Ae.set(ft,it[dt])}const rt=(0,le.getEditorFeatures)();for(const dt of rt)try{Ue.createInstance(dt)}catch(ft){(0,pe.onUnexpectedError)(ft)}return et.fire(),Ue}je.initialize=tt;function ut(it){if($e)return it();const rt=new f.DisposableStore,dt=rt.add(et.event(()=>{dt.dispose(),rt.add(it())}));return rt}je.withServices=ut})(Xe||(e.StandaloneServices=Xe={}))}),define(ne[921],se([1,0,49,2,33,161,254,277,259,133,30,27,28,15,57,8,34,43,23,84,94,96,77,51,41,360,78,32,18,876,116]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createTextModel=e.StandaloneDiffEditor2=e.StandaloneDiffEditor=e.StandaloneEditor=e.StandaloneCodeEditor=void 0;let P=0,x=!1;function T(j){if(!j){if(x)return;x=!0}L.setARIAContainer(j||document.body)}let A=class extends D.CodeEditorWidget{constructor(R,K,G,Z,J,X,H,B,V,Y,ie,ae){const ce=Object.assign({},K);ce.ariaLabel=ce.ariaLabel||o.StandaloneCodeEditorNLS.editorViewAccessibleLabel,ce.ariaLabel=ce.ariaLabel+\";\"+o.StandaloneCodeEditorNLS.accessibilityHelpMessage,super(R,ce,{},G,Z,J,X,B,V,Y,ie,ae),H instanceof _.StandaloneKeybindingService?this._standaloneKeybindingService=H:this._standaloneKeybindingService=null,T(ce.ariaContainerElement)}addCommand(R,K,G){if(!this._standaloneKeybindingService)return console.warn(\"Cannot add command because the editor is configured with an unrecognized KeybindingService\"),null;const Z=\"DYNAMIC_\"+ ++P,J=n.ContextKeyExpr.deserialize(G);return this._standaloneKeybindingService.addDynamicKeybinding(Z,R,K,J),Z}createContextKey(R,K){return this._contextKeyService.createKey(R,K)}addAction(R){if(typeof R.id!=\"string\"||typeof R.label!=\"string\"||typeof R.run!=\"function\")throw new Error(\"Invalid action descriptor, `id`, `label` and `run` are required properties!\");if(!this._standaloneKeybindingService)return console.warn(\"Cannot add keybinding because the editor is configured with an unrecognized KeybindingService\"),k.Disposable.None;const K=R.id,G=R.label,Z=n.ContextKeyExpr.and(n.ContextKeyExpr.equals(\"editorId\",this.getId()),n.ContextKeyExpr.deserialize(R.precondition)),J=R.keybindings,X=n.ContextKeyExpr.and(Z,n.ContextKeyExpr.deserialize(R.keybindingContext)),H=R.contextMenuGroupId||null,B=R.contextMenuOrder||0,V=(ce,...de)=>Promise.resolve(R.run(this,...de)),Y=new k.DisposableStore,ie=this.getId()+\":\"+K;if(Y.add(s.CommandsRegistry.registerCommand(ie,V)),H){const ce={command:{id:ie,title:G},when:Z,group:H,order:B};Y.add(C.MenuRegistry.appendMenuItem(C.MenuId.EditorContext,ce))}if(Array.isArray(J))for(const ce of J)Y.add(this._standaloneKeybindingService.addDynamicKeybinding(ie,ce,V,X));const ae=new f.InternalEditorAction(ie,G,G,Z,(...ce)=>Promise.resolve(R.run(this,...ce)),this._contextKeyService);return this._actions.set(K,ae),Y.add((0,k.toDisposable)(()=>{this._actions.delete(K)})),Y}_triggerCommand(R,K){if(this._codeEditorService instanceof v.StandaloneCodeEditorService)try{this._codeEditorService.setActiveCodeEditor(this),super._triggerCommand(R,K)}finally{this._codeEditorService.setActiveCodeEditor(null)}else super._triggerCommand(R,K)}};e.StandaloneCodeEditor=A,e.StandaloneCodeEditor=A=ke([fe(2,a.IInstantiationService),fe(3,y.ICodeEditorService),fe(4,s.ICommandService),fe(5,n.IContextKeyService),fe(6,u.IKeybindingService),fe(7,r.IThemeService),fe(8,h.INotificationService),fe(9,c.IAccessibilityService),fe(10,w.ILanguageConfigurationService),fe(11,E.ILanguageFeaturesService)],A);let N=class extends A{constructor(R,K,G,Z,J,X,H,B,V,Y,ie,ae,ce,de,he){const ue=Object.assign({},K);(0,_.updateConfigurationService)(Y,ue,!1);const te=B.registerEditorContainer(R);typeof ue.theme==\"string\"&&B.setTheme(ue.theme),typeof ue.autoDetectHighContrast<\"u\"&&B.setAutoDetectHighContrast(!!ue.autoDetectHighContrast);const q=ue.model;delete ue.model,super(R,ue,G,Z,J,X,H,B,V,ie,de,he),this._configurationService=Y,this._standaloneThemeService=B,this._register(te);let z;if(typeof q>\"u\"){const ee=ce.getLanguageIdByMimeType(ue.language)||ue.language||b.PLAINTEXT_LANGUAGE_ID;z=W(ae,ce,ue.value||\"\",ee,void 0),this._ownsModel=!0}else z=q,this._ownsModel=!1;if(this._attachModel(z),z){const ee={oldModelUrl:null,newModelUrl:z.uri};this._onDidChangeModel.fire(ee)}}dispose(){super.dispose()}updateOptions(R){(0,_.updateConfigurationService)(this._configurationService,R,!1),typeof R.theme==\"string\"&&this._standaloneThemeService.setTheme(R.theme),typeof R.autoDetectHighContrast<\"u\"&&this._standaloneThemeService.setAutoDetectHighContrast(!!R.autoDetectHighContrast),super.updateOptions(R)}_postDetachModelCleanup(R){super._postDetachModelCleanup(R),R&&this._ownsModel&&(R.dispose(),this._ownsModel=!1)}};e.StandaloneEditor=N,e.StandaloneEditor=N=ke([fe(2,a.IInstantiationService),fe(3,y.ICodeEditorService),fe(4,s.ICommandService),fe(5,n.IContextKeyService),fe(6,u.IKeybindingService),fe(7,g.IStandaloneThemeService),fe(8,h.INotificationService),fe(9,i.IConfigurationService),fe(10,c.IAccessibilityService),fe(11,p.IModelService),fe(12,m.ILanguageService),fe(13,w.ILanguageConfigurationService),fe(14,E.ILanguageFeaturesService)],N);let F=class extends S.DiffEditorWidget{constructor(R,K,G,Z,J,X,H,B,V,Y,ie){const ae=Object.assign({},K);(0,_.updateConfigurationService)(B,ae,!0);const ce=X.registerEditorContainer(R);typeof ae.theme==\"string\"&&X.setTheme(ae.theme),typeof ae.autoDetectHighContrast<\"u\"&&X.setAutoDetectHighContrast(!!ae.autoDetectHighContrast),super(R,ae,{},ie,Z,G,J,X,H,V,Y),this._configurationService=B,this._standaloneThemeService=X,this._register(ce)}dispose(){super.dispose()}updateOptions(R){(0,_.updateConfigurationService)(this._configurationService,R,!0),typeof R.theme==\"string\"&&this._standaloneThemeService.setTheme(R.theme),typeof R.autoDetectHighContrast<\"u\"&&this._standaloneThemeService.setAutoDetectHighContrast(!!R.autoDetectHighContrast),super.updateOptions(R)}_createInnerEditor(R,K,G){return R.createInstance(A,K,G)}getOriginalEditor(){return super.getOriginalEditor()}getModifiedEditor(){return super.getModifiedEditor()}addCommand(R,K,G){return this.getModifiedEditor().addCommand(R,K,G)}createContextKey(R,K){return this.getModifiedEditor().createContextKey(R,K)}addAction(R){return this.getModifiedEditor().addAction(R)}};e.StandaloneDiffEditor=F,e.StandaloneDiffEditor=F=ke([fe(2,a.IInstantiationService),fe(3,n.IContextKeyService),fe(4,y.ICodeEditorService),fe(5,g.IStandaloneThemeService),fe(6,h.INotificationService),fe(7,i.IConfigurationService),fe(8,t.IContextMenuService),fe(9,l.IEditorProgressService),fe(10,d.IClipboardService)],F);let O=class extends I.DiffEditorWidget2{constructor(R,K,G,Z,J,X,H,B,V,Y,ie,ae){const ce=Object.assign({},K);(0,_.updateConfigurationService)(B,ce,!0);const de=X.registerEditorContainer(R);typeof ce.theme==\"string\"&&X.setTheme(ce.theme),typeof ce.autoDetectHighContrast<\"u\"&&X.setAutoDetectHighContrast(!!ce.autoDetectHighContrast),super(R,ce,{},Z,G,J,ae,Y),this._configurationService=B,this._standaloneThemeService=X,this._register(de)}dispose(){super.dispose()}updateOptions(R){(0,_.updateConfigurationService)(this._configurationService,R,!0),typeof R.theme==\"string\"&&this._standaloneThemeService.setTheme(R.theme),typeof R.autoDetectHighContrast<\"u\"&&this._standaloneThemeService.setAutoDetectHighContrast(!!R.autoDetectHighContrast),super.updateOptions(R)}_createInnerEditor(R,K,G){return R.createInstance(A,K,G)}getOriginalEditor(){return super.getOriginalEditor()}getModifiedEditor(){return super.getModifiedEditor()}addCommand(R,K,G){return this.getModifiedEditor().addCommand(R,K,G)}createContextKey(R,K){return this.getModifiedEditor().createContextKey(R,K)}addAction(R){return this.getModifiedEditor().addAction(R)}};e.StandaloneDiffEditor2=O,e.StandaloneDiffEditor2=O=ke([fe(2,a.IInstantiationService),fe(3,n.IContextKeyService),fe(4,y.ICodeEditorService),fe(5,g.IStandaloneThemeService),fe(6,h.INotificationService),fe(7,i.IConfigurationService),fe(8,t.IContextMenuService),fe(9,l.IEditorProgressService),fe(10,d.IClipboardService),fe(11,M.IAudioCueService)],O);function W(j,R,K,G,Z){if(K=K||\"\",!G){const J=K.indexOf(`\n`);let X=K;return J!==-1&&(X=K.substring(0,J)),U(j,K,R.createByFilepathOrFirstLine(Z||null,X),Z)}return U(j,K,R.createById(G),Z)}e.createTextModel=W;function U(j,R,K,G){return j.createModel(R,K,G)}}),define(ne[922],se([1,0,2,11,22,324,33,237,36,231,148,48,29,32,154,41,51,773,208,752,921,259,133,27,97,34,16,30,15,78,109,66,145,56,471]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a,u,h,r,c,o,d,l,p,m,v,b,w,E,I,M,P,x,T){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createMonacoEditorAPI=e.registerEditorOpener=e.registerLinkOpener=e.registerCommand=e.remeasureFonts=e.setTheme=e.defineTheme=e.tokenize=e.colorizeModelLine=e.colorize=e.colorizeElement=e.createWebWorker=e.onDidChangeModelLanguage=e.onWillDisposeModel=e.onDidCreateModel=e.getModels=e.getModel=e.onDidChangeMarkers=e.getModelMarkers=e.removeAllMarkers=e.setModelMarkers=e.setModelLanguage=e.createModel=e.addKeybindingRules=e.addKeybindingRule=e.addEditorAction=e.addCommand=e.createDiffNavigator=e.createDiffEditor=e.getDiffEditors=e.getEditors=e.onDidCreateDiffEditor=e.onDidCreateEditor=e.create=void 0;function A(ye,Ee,Me){return d.StandaloneServices.initialize(Me||{}).createInstance(o.StandaloneEditor,ye,Ee)}e.create=A;function N(ye){return d.StandaloneServices.get(S.ICodeEditorService).onCodeEditorAdd(Me=>{ye(Me)})}e.onDidCreateEditor=N;function F(ye){return d.StandaloneServices.get(S.ICodeEditorService).onDiffEditorAdd(Me=>{ye(Me)})}e.onDidCreateDiffEditor=F;function O(){return d.StandaloneServices.get(S.ICodeEditorService).listCodeEditors()}e.getEditors=O;function W(){return d.StandaloneServices.get(S.ICodeEditorService).listDiffEditors()}e.getDiffEditors=W;function U(ye,Ee,Me){var Pe;const Fe=d.StandaloneServices.initialize(Me||{});return!((Pe=Ee?.experimental)===null||Pe===void 0)&&Pe.useVersion2?Fe.createInstance(o.StandaloneDiffEditor2,ye,Ee):Fe.createInstance(o.StandaloneDiffEditor,ye,Ee)}e.createDiffEditor=U;function j(ye,Ee){return d.StandaloneServices.initialize({}).createInstance(f.DiffNavigator,ye,Ee)}e.createDiffNavigator=j;function R(ye){if(typeof ye.id!=\"string\"||typeof ye.run!=\"function\")throw new Error(\"Invalid command descriptor, `id` and `run` are required properties!\");return p.CommandsRegistry.registerCommand(ye.id,ye.run)}e.addCommand=R;function K(ye){if(typeof ye.id!=\"string\"||typeof ye.label!=\"string\"||typeof ye.run!=\"function\")throw new Error(\"Invalid action descriptor, `id`, `label` and `run` are required properties!\");const Ee=E.ContextKeyExpr.deserialize(ye.precondition),Me=(Fe,..._e)=>b.EditorCommand.runEditorCommand(Fe,_e,Ee,(me,le,pe)=>Promise.resolve(ye.run(le,...pe))),Pe=new L.DisposableStore;if(Pe.add(p.CommandsRegistry.registerCommand(ye.id,Me)),ye.contextMenuGroupId){const Fe={command:{id:ye.id,title:ye.label},when:Ee,group:ye.contextMenuGroupId,order:ye.contextMenuOrder||0};Pe.add(w.MenuRegistry.appendMenuItem(w.MenuId.EditorContext,Fe))}if(Array.isArray(ye.keybindings)){const Fe=d.StandaloneServices.get(v.IKeybindingService);if(!(Fe instanceof d.StandaloneKeybindingService))console.warn(\"Cannot add keybinding because the editor is configured with an unrecognized KeybindingService\");else{const _e=E.ContextKeyExpr.and(Ee,E.ContextKeyExpr.deserialize(ye.keybindingContext));Pe.add(Fe.addDynamicKeybindings(ye.keybindings.map(me=>({keybinding:me,command:ye.id,when:_e}))))}}return Pe}e.addEditorAction=K;function G(ye){return Z([ye])}e.addKeybindingRule=G;function Z(ye){const Ee=d.StandaloneServices.get(v.IKeybindingService);return Ee instanceof d.StandaloneKeybindingService?Ee.addDynamicKeybindings(ye.map(Me=>({keybinding:Me.keybinding,command:Me.command,commandArgs:Me.commandArgs,when:E.ContextKeyExpr.deserialize(Me.when)}))):(console.warn(\"Cannot add keybinding because the editor is configured with an unrecognized KeybindingService\"),L.Disposable.None)}e.addKeybindingRules=Z;function J(ye,Ee,Me){const Pe=d.StandaloneServices.get(a.ILanguageService),Fe=Pe.getLanguageIdByMimeType(Ee)||Ee;return(0,o.createTextModel)(d.StandaloneServices.get(u.IModelService),Pe,ye,Fe,Me)}e.createModel=J;function X(ye,Ee){const Me=d.StandaloneServices.get(a.ILanguageService),Pe=Me.getLanguageIdByMimeType(Ee)||Ee||I.PLAINTEXT_LANGUAGE_ID;ye.setLanguage(Me.createById(Pe))}e.setModelLanguage=X;function H(ye,Ee,Me){ye&&d.StandaloneServices.get(m.IMarkerService).changeOne(Ee,ye.uri,Me)}e.setModelMarkers=H;function B(ye){d.StandaloneServices.get(m.IMarkerService).changeAll(ye,[])}e.removeAllMarkers=B;function V(ye){return d.StandaloneServices.get(m.IMarkerService).read(ye)}e.getModelMarkers=V;function Y(ye){return d.StandaloneServices.get(m.IMarkerService).onMarkerChanged(ye)}e.onDidChangeMarkers=Y;function ie(ye){return d.StandaloneServices.get(u.IModelService).getModel(ye)}e.getModel=ie;function ae(){return d.StandaloneServices.get(u.IModelService).getModels()}e.getModels=ae;function ce(ye){return d.StandaloneServices.get(u.IModelService).onModelAdded(ye)}e.onDidCreateModel=ce;function de(ye){return d.StandaloneServices.get(u.IModelService).onModelRemoved(ye)}e.onWillDisposeModel=de;function he(ye){return d.StandaloneServices.get(u.IModelService).onModelLanguageChanged(Me=>{ye({model:Me.model,oldLanguage:Me.oldLanguageId})})}e.onDidChangeModelLanguage=he;function ue(ye){return(0,h.createWebWorker)(d.StandaloneServices.get(u.IModelService),d.StandaloneServices.get(n.ILanguageConfigurationService),ye)}e.createWebWorker=ue;function te(ye,Ee){const Me=d.StandaloneServices.get(a.ILanguageService),Pe=d.StandaloneServices.get(l.IStandaloneThemeService);return c.Colorizer.colorizeElement(Pe,Me,ye,Ee).then(()=>{Pe.registerEditorContainer(ye)})}e.colorizeElement=te;function q(ye,Ee,Me){const Pe=d.StandaloneServices.get(a.ILanguageService);return d.StandaloneServices.get(l.IStandaloneThemeService).registerEditorContainer(document.body),c.Colorizer.colorize(Pe,ye,Ee,Me)}e.colorize=q;function z(ye,Ee,Me=4){return d.StandaloneServices.get(l.IStandaloneThemeService).registerEditorContainer(document.body),c.Colorizer.colorizeModelLine(ye,Ee,Me)}e.colorizeModelLine=z;function ee(ye){const Ee=i.TokenizationRegistry.get(ye);return Ee||{getInitialState:()=>t.NullState,tokenize:(Me,Pe,Fe)=>(0,t.nullTokenize)(ye,Fe)}}function $(ye,Ee){i.TokenizationRegistry.getOrCreate(Ee);const Me=ee(Ee),Pe=(0,k.splitLines)(ye),Fe=[];let _e=Me.getInitialState();for(let me=0,le=Pe.length;me<le;me++){const pe=Pe[me],Ce=Me.tokenize(pe,!0,_e);Fe[me]=Ce.tokens,_e=Ce.endState}return Fe}e.tokenize=$;function re(ye,Ee){d.StandaloneServices.get(l.IStandaloneThemeService).defineTheme(ye,Ee)}e.defineTheme=re;function oe(ye){d.StandaloneServices.get(l.IStandaloneThemeService).setTheme(ye)}e.setTheme=oe;function ge(){D.FontMeasurements.clearAllFontInfos()}e.remeasureFonts=ge;function ve(ye,Ee){return p.CommandsRegistry.registerCommand({id:ye,handler:Ee})}e.registerCommand=ve;function Se(ye){return d.StandaloneServices.get(T.IOpenerService).registerOpener({open(Me){return we(this,void 0,void 0,function*(){return typeof Me==\"string\"&&(Me=y.URI.parse(Me)),ye.open(Me)})}})}e.registerLinkOpener=Se;function Le(ye){return d.StandaloneServices.get(S.ICodeEditorService).registerCodeEditorOpenHandler((Me,Pe,Fe)=>we(this,void 0,void 0,function*(){var _e;if(!Pe)return null;const me=(_e=Me.options)===null||_e===void 0?void 0:_e.selection;let le;return me&&typeof me.endLineNumber==\"number\"&&typeof me.endColumn==\"number\"?le=me:me&&(le={lineNumber:me.startLineNumber,column:me.startColumn}),(yield ye.openCodeEditor(Pe,Me.resource,le))?Pe:null}))}e.registerEditorOpener=Le;function De(){return{create:A,getEditors:O,getDiffEditors:W,onDidCreateEditor:N,onDidCreateDiffEditor:F,createDiffEditor:U,createDiffNavigator:j,addCommand:R,addEditorAction:K,addKeybindingRule:G,addKeybindingRules:Z,createModel:J,setModelLanguage:X,setModelMarkers:H,getModelMarkers:V,removeAllMarkers:B,onDidChangeMarkers:Y,getModels:ae,getModel:ie,onDidCreateModel:ce,onWillDisposeModel:de,onDidChangeModelLanguage:he,createWebWorker:ue,colorizeElement:te,colorize:q,colorizeModelLine:z,tokenize:$,defineTheme:re,setTheme:oe,remeasureFonts:ge,registerCommand:ve,registerLinkOpener:Se,registerEditorOpener:Le,AccessibilitySupport:r.AccessibilitySupport,ContentWidgetPositionPreference:r.ContentWidgetPositionPreference,CursorChangeReason:r.CursorChangeReason,DefaultEndOfLine:r.DefaultEndOfLine,EditorAutoIndentStrategy:r.EditorAutoIndentStrategy,EditorOption:r.EditorOption,EndOfLinePreference:r.EndOfLinePreference,EndOfLineSequence:r.EndOfLineSequence,MinimapPosition:r.MinimapPosition,MouseTargetType:r.MouseTargetType,OverlayWidgetPositionPreference:r.OverlayWidgetPositionPreference,OverviewRulerLane:r.OverviewRulerLane,GlyphMarginLane:r.GlyphMarginLane,RenderLineNumbersType:r.RenderLineNumbersType,RenderMinimap:r.RenderMinimap,ScrollbarVisibility:r.ScrollbarVisibility,ScrollType:r.ScrollType,TextEditorCursorBlinkingStyle:r.TextEditorCursorBlinkingStyle,TextEditorCursorStyle:r.TextEditorCursorStyle,TrackedRangeStickiness:r.TrackedRangeStickiness,WrappingIndent:r.WrappingIndent,InjectedTextCursorStops:r.InjectedTextCursorStops,PositionAffinity:r.PositionAffinity,ConfigurationChangedEvent:_.ConfigurationChangedEvent,BareFontInfo:g.BareFontInfo,FontInfo:g.FontInfo,TextModelResolvedOptions:s.TextModelResolvedOptions,FindMatch:s.FindMatch,ApplyUpdateResult:_.ApplyUpdateResult,LineRange:P.LineRange,LineRangeMapping:M.LineRangeMapping,RangeMapping:M.RangeMapping,EditorZoom:x.EditorZoom,MovedText:M.MovedText,SimpleLineRangeMapping:M.SimpleLineRangeMapping,EditorType:C.EditorType,EditorOptions:_.EditorOptions}}e.createMonacoEditorAPI=De}),define(ne[923],se([1,0,38,5,29,32,78,41,208,259,550,334,133,97,18,28]),function(Q,e,L,k,y,D,S,f,_,g,C,s,i,n,t,a){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.createMonacoLanguagesAPI=e.registerInlayHintsProvider=e.registerInlineCompletionsProvider=e.registerDocumentRangeSemanticTokensProvider=e.registerDocumentSemanticTokensProvider=e.registerSelectionRangeProvider=e.registerDeclarationProvider=e.registerFoldingRangeProvider=e.registerColorProvider=e.registerCompletionItemProvider=e.registerLinkProvider=e.registerOnTypeFormattingEditProvider=e.registerDocumentRangeFormattingEditProvider=e.registerDocumentFormattingEditProvider=e.registerCodeActionProvider=e.registerCodeLensProvider=e.registerTypeDefinitionProvider=e.registerImplementationProvider=e.registerDefinitionProvider=e.registerLinkedEditingRangeProvider=e.registerDocumentHighlightProvider=e.registerDocumentSymbolProvider=e.registerHoverProvider=e.registerSignatureHelpProvider=e.registerRenameProvider=e.registerReferenceProvider=e.setMonarchTokensProvider=e.setTokensProvider=e.registerTokensProviderFactory=e.setColorMap=e.TokenizationSupportAdapter=e.EncodedTokenizationSupportAdapter=e.setLanguageConfiguration=e.onLanguageEncountered=e.onLanguage=e.getEncodedLanguageId=e.getLanguages=e.register=void 0;function u(q){S.ModesRegistry.registerLanguage(q)}e.register=u;function h(){let q=[];return q=q.concat(S.ModesRegistry.getLanguages()),q}e.getLanguages=h;function r(q){return g.StandaloneServices.get(f.ILanguageService).languageIdCodec.encodeLanguageId(q)}e.getEncodedLanguageId=r;function c(q,z){return g.StandaloneServices.withServices(()=>{const $=g.StandaloneServices.get(f.ILanguageService).onDidRequestRichLanguageFeatures(re=>{re===q&&($.dispose(),z())});return $})}e.onLanguage=c;function o(q,z){return g.StandaloneServices.withServices(()=>{const $=g.StandaloneServices.get(f.ILanguageService).onDidRequestBasicLanguageFeatures(re=>{re===q&&($.dispose(),z())});return $})}e.onLanguageEncountered=o;function d(q,z){if(!g.StandaloneServices.get(f.ILanguageService).isRegisteredLanguageId(q))throw new Error(`Cannot set configuration for unknown language ${q}`);return g.StandaloneServices.get(D.ILanguageConfigurationService).register(q,z,100)}e.setLanguageConfiguration=d;class l{constructor(z,ee){this._languageId=z,this._actual=ee}dispose(){}getInitialState(){return this._actual.getInitialState()}tokenize(z,ee,$){if(typeof this._actual.tokenize==\"function\")return p.adaptTokenize(this._languageId,this._actual,z,$);throw new Error(\"Not supported!\")}tokenizeEncoded(z,ee,$){const re=this._actual.tokenizeEncoded(z,$);return new y.EncodedTokenizationResult(re.tokens,re.endState)}}e.EncodedTokenizationSupportAdapter=l;class p{constructor(z,ee,$,re){this._languageId=z,this._actual=ee,this._languageService=$,this._standaloneThemeService=re}dispose(){}getInitialState(){return this._actual.getInitialState()}static _toClassicTokens(z,ee){const $=[];let re=0;for(let oe=0,ge=z.length;oe<ge;oe++){const ve=z[oe];let Se=ve.startIndex;oe===0?Se=0:Se<re&&(Se=re),$[oe]=new y.Token(Se,ve.scopes,ee),re=Se}return $}static adaptTokenize(z,ee,$,re){const oe=ee.tokenize($,re),ge=p._toClassicTokens(oe.tokens,z);let ve;return oe.endState.equals(re)?ve=re:ve=oe.endState,new y.TokenizationResult(ge,ve)}tokenize(z,ee,$){return p.adaptTokenize(this._languageId,this._actual,z,$)}_toBinaryTokens(z,ee){const $=z.encodeLanguageId(this._languageId),re=this._standaloneThemeService.getColorTheme().tokenTheme,oe=[];let ge=0,ve=0;for(let Le=0,De=ee.length;Le<De;Le++){const ye=ee[Le],Ee=re.match($,ye.scopes)|1024;if(ge>0&&oe[ge-1]===Ee)continue;let Me=ye.startIndex;Le===0?Me=0:Me<ve&&(Me=ve),oe[ge++]=Me,oe[ge++]=Ee,ve=Me}const Se=new Uint32Array(ge);for(let Le=0;Le<ge;Le++)Se[Le]=oe[Le];return Se}tokenizeEncoded(z,ee,$){const re=this._actual.tokenize(z,$),oe=this._toBinaryTokens(this._languageService.languageIdCodec,re.tokens);let ge;return re.endState.equals($)?ge=$:ge=re.endState,new y.EncodedTokenizationResult(oe,ge)}}e.TokenizationSupportAdapter=p;function m(q){return typeof q.getInitialState==\"function\"}function v(q){return\"tokenizeEncoded\"in q}function b(q){return q&&typeof q.then==\"function\"}function w(q){const z=g.StandaloneServices.get(i.IStandaloneThemeService);if(q){const ee=[null];for(let $=1,re=q.length;$<re;$++)ee[$]=L.Color.fromHex(q[$]);z.setColorMapOverride(ee)}else z.setColorMapOverride(null)}e.setColorMap=w;function E(q,z){return v(z)?new l(q,z):new p(q,z,g.StandaloneServices.get(f.ILanguageService),g.StandaloneServices.get(i.IStandaloneThemeService))}function I(q,z){const ee=new y.LazyTokenizationSupport(()=>we(this,void 0,void 0,function*(){const $=yield Promise.resolve(z.create());return $?m($)?E(q,$):new s.MonarchTokenizer(g.StandaloneServices.get(f.ILanguageService),g.StandaloneServices.get(i.IStandaloneThemeService),q,(0,C.compile)(q,$),g.StandaloneServices.get(a.IConfigurationService)):null}));return y.TokenizationRegistry.registerFactory(q,ee)}e.registerTokensProviderFactory=I;function M(q,z){if(!g.StandaloneServices.get(f.ILanguageService).isRegisteredLanguageId(q))throw new Error(`Cannot set tokens provider for unknown language ${q}`);return b(z)?I(q,{create:()=>z}):y.TokenizationRegistry.register(q,E(q,z))}e.setTokensProvider=M;function P(q,z){const ee=$=>new s.MonarchTokenizer(g.StandaloneServices.get(f.ILanguageService),g.StandaloneServices.get(i.IStandaloneThemeService),q,(0,C.compile)(q,$),g.StandaloneServices.get(a.IConfigurationService));return b(z)?I(q,{create:()=>z}):y.TokenizationRegistry.register(q,ee(z))}e.setMonarchTokensProvider=P;function x(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).referenceProvider.register(q,z)}e.registerReferenceProvider=x;function T(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).renameProvider.register(q,z)}e.registerRenameProvider=T;function A(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).signatureHelpProvider.register(q,z)}e.registerSignatureHelpProvider=A;function N(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).hoverProvider.register(q,{provideHover:($,re,oe)=>{const ge=$.getWordAtPosition(re);return Promise.resolve(z.provideHover($,re,oe)).then(ve=>{if(ve)return!ve.range&&ge&&(ve.range=new k.Range(re.lineNumber,ge.startColumn,re.lineNumber,ge.endColumn)),ve.range||(ve.range=new k.Range(re.lineNumber,re.column,re.lineNumber,re.column)),ve})}})}e.registerHoverProvider=N;function F(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).documentSymbolProvider.register(q,z)}e.registerDocumentSymbolProvider=F;function O(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).documentHighlightProvider.register(q,z)}e.registerDocumentHighlightProvider=O;function W(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).linkedEditingRangeProvider.register(q,z)}e.registerLinkedEditingRangeProvider=W;function U(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).definitionProvider.register(q,z)}e.registerDefinitionProvider=U;function j(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).implementationProvider.register(q,z)}e.registerImplementationProvider=j;function R(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).typeDefinitionProvider.register(q,z)}e.registerTypeDefinitionProvider=R;function K(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).codeLensProvider.register(q,z)}e.registerCodeLensProvider=K;function G(q,z,ee){return g.StandaloneServices.get(t.ILanguageFeaturesService).codeActionProvider.register(q,{providedCodeActionKinds:ee?.providedCodeActionKinds,documentation:ee?.documentation,provideCodeActions:(re,oe,ge,ve)=>{const Le=g.StandaloneServices.get(n.IMarkerService).read({resource:re.uri}).filter(De=>k.Range.areIntersectingOrTouching(De,oe));return z.provideCodeActions(re,oe,{markers:Le,only:ge.only,trigger:ge.trigger},ve)},resolveCodeAction:z.resolveCodeAction})}e.registerCodeActionProvider=G;function Z(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).documentFormattingEditProvider.register(q,z)}e.registerDocumentFormattingEditProvider=Z;function J(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).documentRangeFormattingEditProvider.register(q,z)}e.registerDocumentRangeFormattingEditProvider=J;function X(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).onTypeFormattingEditProvider.register(q,z)}e.registerOnTypeFormattingEditProvider=X;function H(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).linkProvider.register(q,z)}e.registerLinkProvider=H;function B(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).completionProvider.register(q,z)}e.registerCompletionItemProvider=B;function V(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).colorProvider.register(q,z)}e.registerColorProvider=V;function Y(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).foldingRangeProvider.register(q,z)}e.registerFoldingRangeProvider=Y;function ie(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).declarationProvider.register(q,z)}e.registerDeclarationProvider=ie;function ae(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).selectionRangeProvider.register(q,z)}e.registerSelectionRangeProvider=ae;function ce(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).documentSemanticTokensProvider.register(q,z)}e.registerDocumentSemanticTokensProvider=ce;function de(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).documentRangeSemanticTokensProvider.register(q,z)}e.registerDocumentRangeSemanticTokensProvider=de;function he(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).inlineCompletionsProvider.register(q,z)}e.registerInlineCompletionsProvider=he;function ue(q,z){return g.StandaloneServices.get(t.ILanguageFeaturesService).inlayHintsProvider.register(q,z)}e.registerInlayHintsProvider=ue;function te(){return{register:u,getLanguages:h,onLanguage:c,onLanguageEncountered:o,getEncodedLanguageId:r,setLanguageConfiguration:d,setColorMap:w,registerTokensProviderFactory:I,setTokensProvider:M,setMonarchTokensProvider:P,registerReferenceProvider:x,registerRenameProvider:T,registerCompletionItemProvider:B,registerSignatureHelpProvider:A,registerHoverProvider:N,registerDocumentSymbolProvider:F,registerDocumentHighlightProvider:O,registerLinkedEditingRangeProvider:W,registerDefinitionProvider:U,registerImplementationProvider:j,registerTypeDefinitionProvider:R,registerCodeLensProvider:K,registerCodeActionProvider:G,registerDocumentFormattingEditProvider:Z,registerDocumentRangeFormattingEditProvider:J,registerOnTypeFormattingEditProvider:X,registerLinkProvider:H,registerColorProvider:V,registerFoldingRangeProvider:Y,registerDeclarationProvider:ie,registerSelectionRangeProvider:ae,registerDocumentSemanticTokensProvider:ce,registerDocumentRangeSemanticTokensProvider:de,registerInlineCompletionsProvider:he,registerInlayHintsProvider:ue,DocumentHighlightKind:_.DocumentHighlightKind,CompletionItemKind:_.CompletionItemKind,CompletionItemTag:_.CompletionItemTag,CompletionItemInsertTextRule:_.CompletionItemInsertTextRule,SymbolKind:_.SymbolKind,SymbolTag:_.SymbolTag,IndentAction:_.IndentAction,CompletionTriggerKind:_.CompletionTriggerKind,SignatureHelpTriggerKind:_.SignatureHelpTriggerKind,InlayHintKind:_.InlayHintKind,InlineCompletionTriggerKind:_.InlineCompletionTriggerKind,CodeActionTriggerType:_.CodeActionTriggerType,FoldingRangeKind:y.FoldingRangeKind,SelectedSuggestionInfo:y.SelectedSuggestionInfo}}e.createMonacoLanguagesAPI=te}),define(ne[924],se([1,0,36,327,922,923,351]),function(Q,e,L,k,y,D,S){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.languages=e.editor=e.Token=e.Uri=e.MarkerTag=e.MarkerSeverity=e.SelectionDirection=e.Selection=e.Range=e.Position=e.KeyMod=e.KeyCode=e.Emitter=e.CancellationTokenSource=void 0,L.EditorOptions.wrappingIndent.defaultValue=0,L.EditorOptions.glyphMargin.defaultValue=!1,L.EditorOptions.autoIndent.defaultValue=3,L.EditorOptions.overviewRulerLanes.defaultValue=2,S.FormattingConflicts.setFormatterSelector((g,C,s)=>Promise.resolve(g[0]));const f=(0,k.createMonacoBaseAPI)();f.editor=(0,y.createMonacoEditorAPI)(),f.languages=(0,D.createMonacoLanguagesAPI)(),e.CancellationTokenSource=f.CancellationTokenSource,e.Emitter=f.Emitter,e.KeyCode=f.KeyCode,e.KeyMod=f.KeyMod,e.Position=f.Position,e.Range=f.Range,e.Selection=f.Selection,e.SelectionDirection=f.SelectionDirection,e.MarkerSeverity=f.MarkerSeverity,e.MarkerTag=f.MarkerTag,e.Uri=f.Uri,e.Token=f.Token,e.editor=f.editor,e.languages=f.languages;const _=globalThis.MonacoEnvironment;(_?.globalAPI||typeof define==\"function\"&&define.amd)&&(globalThis.monaco=f),typeof globalThis.require<\"u\"&&typeof globalThis.require.config==\"function\"&&globalThis.require.config({ignoreDuplicateModules:[\"vscode-languageserver-types\",\"vscode-languageserver-types/main\",\"vscode-languageserver-textdocument\",\"vscode-languageserver-textdocument/main\",\"vscode-nls\",\"vscode-nls/vscode-nls\",\"jsonc-parser\",\"jsonc-parser/main\",\"vscode-uri\",\"vscode-uri/index\",\"vs/basic-languages/typescript/typescript\"]})});var Ci=this&&this.__createBinding||(Object.create?function(Q,e,L,k){k===void 0&&(k=L);var y=Object.getOwnPropertyDescriptor(e,L);(!y||(\"get\"in y?!e.__esModule:y.writable||y.configurable))&&(y={enumerable:!0,get:function(){return e[L]}}),Object.defineProperty(Q,k,y)}:function(Q,e,L,k){k===void 0&&(k=L),Q[k]=e[L]}),bi=this&&this.__exportStar||function(Q,e){for(var L in Q)L!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,L)&&Ci(e,Q,L)};define(ne[926],se([1,0,924,920,815,816,787,862,863,820,907,865]),function(Q,e,L){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),bi(L,e)})}).call(this);\n\n\n\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/basic-languages/monaco.contribution\", [\"require\",\"require\",\"vs/editor/editor.api\"],(require)=>{\nvar moduleExports=(()=>{var y=Object.create;var g=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var a=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(r,s)=>(typeof require!=\"undefined\"?require:r)[s]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var D=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var m=(e,r,s,n)=>{if(r&&typeof r==\"object\"||typeof r==\"function\")for(let o of q(r))!M.call(e,o)&&o!==s&&g(e,o,{get:()=>r[o],enumerable:!(n=x(r,o))||n.enumerable});return e},p=(e,r,s)=>(m(e,r,\"default\"),s&&m(s,r,\"default\")),c=(e,r,s)=>(s=e!=null?y(A(e)):{},m(r||!e||!e.__esModule?g(s,\"default\",{value:e,enumerable:!0}):s,e));var v=D((w,d)=>{var b=c(a(\"vs/editor/editor.api\"));d.exports=b});var t={};p(t,c(v()));var f={},u={},l=class{static getOrCreate(r){return u[r]||(u[r]=new l(r)),u[r]}_languageId;_loadingTriggered;_lazyLoadPromise;_lazyLoadPromiseResolve;_lazyLoadPromiseReject;constructor(r){this._languageId=r,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise((s,n)=>{this._lazyLoadPromiseResolve=s,this._lazyLoadPromiseReject=n})}load(){return this._loadingTriggered||(this._loadingTriggered=!0,f[this._languageId].loader().then(r=>this._lazyLoadPromiseResolve(r),r=>this._lazyLoadPromiseReject(r))),this._lazyLoadPromise}};function i(e){let r=e.id;f[r]=e,t.languages.register(e);let s=l.getOrCreate(r);t.languages.registerTokensProviderFactory(r,{create:async()=>(await s.load()).language}),t.languages.onLanguageEncountered(r,async()=>{let n=await s.load();t.languages.setLanguageConfiguration(r,n.conf)})}i({id:\"abap\",extensions:[\".abap\"],aliases:[\"abap\",\"ABAP\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/abap/abap\"],e,r)})});i({id:\"apex\",extensions:[\".cls\"],aliases:[\"Apex\",\"apex\"],mimetypes:[\"text/x-apex-source\",\"text/x-apex\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/apex/apex\"],e,r)})});i({id:\"azcli\",extensions:[\".azcli\"],aliases:[\"Azure CLI\",\"azcli\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/azcli/azcli\"],e,r)})});i({id:\"bat\",extensions:[\".bat\",\".cmd\"],aliases:[\"Batch\",\"bat\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/bat/bat\"],e,r)})});i({id:\"bicep\",extensions:[\".bicep\"],aliases:[\"Bicep\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/bicep/bicep\"],e,r)})});i({id:\"cameligo\",extensions:[\".mligo\"],aliases:[\"Cameligo\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/cameligo/cameligo\"],e,r)})});i({id:\"clojure\",extensions:[\".clj\",\".cljs\",\".cljc\",\".edn\"],aliases:[\"clojure\",\"Clojure\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/clojure/clojure\"],e,r)})});i({id:\"coffeescript\",extensions:[\".coffee\"],aliases:[\"CoffeeScript\",\"coffeescript\",\"coffee\"],mimetypes:[\"text/x-coffeescript\",\"text/coffeescript\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/coffee/coffee\"],e,r)})});i({id:\"c\",extensions:[\".c\",\".h\"],aliases:[\"C\",\"c\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/cpp/cpp\"],e,r)})});i({id:\"cpp\",extensions:[\".cpp\",\".cc\",\".cxx\",\".hpp\",\".hh\",\".hxx\"],aliases:[\"C++\",\"Cpp\",\"cpp\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/cpp/cpp\"],e,r)})});i({id:\"csharp\",extensions:[\".cs\",\".csx\",\".cake\"],aliases:[\"C#\",\"csharp\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/csharp/csharp\"],e,r)})});i({id:\"csp\",extensions:[],aliases:[\"CSP\",\"csp\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/csp/csp\"],e,r)})});i({id:\"css\",extensions:[\".css\"],aliases:[\"CSS\",\"css\"],mimetypes:[\"text/css\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/css/css\"],e,r)})});i({id:\"cypher\",extensions:[\".cypher\",\".cyp\"],aliases:[\"Cypher\",\"OpenCypher\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/cypher/cypher\"],e,r)})});i({id:\"dart\",extensions:[\".dart\"],aliases:[\"Dart\",\"dart\"],mimetypes:[\"text/x-dart-source\",\"text/x-dart\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/dart/dart\"],e,r)})});i({id:\"dockerfile\",extensions:[\".dockerfile\"],filenames:[\"Dockerfile\"],aliases:[\"Dockerfile\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/dockerfile/dockerfile\"],e,r)})});i({id:\"ecl\",extensions:[\".ecl\"],aliases:[\"ECL\",\"Ecl\",\"ecl\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/ecl/ecl\"],e,r)})});i({id:\"elixir\",extensions:[\".ex\",\".exs\"],aliases:[\"Elixir\",\"elixir\",\"ex\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/elixir/elixir\"],e,r)})});i({id:\"flow9\",extensions:[\".flow\"],aliases:[\"Flow9\",\"Flow\",\"flow9\",\"flow\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/flow9/flow9\"],e,r)})});i({id:\"fsharp\",extensions:[\".fs\",\".fsi\",\".ml\",\".mli\",\".fsx\",\".fsscript\"],aliases:[\"F#\",\"FSharp\",\"fsharp\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/fsharp/fsharp\"],e,r)})});i({id:\"freemarker2\",extensions:[\".ftl\",\".ftlh\",\".ftlx\"],aliases:[\"FreeMarker2\",\"Apache FreeMarker2\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/freemarker2/freemarker2\"],e,r)}).then(e=>e.TagAngleInterpolationDollar)});i({id:\"freemarker2.tag-angle.interpolation-dollar\",aliases:[\"FreeMarker2 (Angle/Dollar)\",\"Apache FreeMarker2 (Angle/Dollar)\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/freemarker2/freemarker2\"],e,r)}).then(e=>e.TagAngleInterpolationDollar)});i({id:\"freemarker2.tag-bracket.interpolation-dollar\",aliases:[\"FreeMarker2 (Bracket/Dollar)\",\"Apache FreeMarker2 (Bracket/Dollar)\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/freemarker2/freemarker2\"],e,r)}).then(e=>e.TagBracketInterpolationDollar)});i({id:\"freemarker2.tag-angle.interpolation-bracket\",aliases:[\"FreeMarker2 (Angle/Bracket)\",\"Apache FreeMarker2 (Angle/Bracket)\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/freemarker2/freemarker2\"],e,r)}).then(e=>e.TagAngleInterpolationBracket)});i({id:\"freemarker2.tag-bracket.interpolation-bracket\",aliases:[\"FreeMarker2 (Bracket/Bracket)\",\"Apache FreeMarker2 (Bracket/Bracket)\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/freemarker2/freemarker2\"],e,r)}).then(e=>e.TagBracketInterpolationBracket)});i({id:\"freemarker2.tag-auto.interpolation-dollar\",aliases:[\"FreeMarker2 (Auto/Dollar)\",\"Apache FreeMarker2 (Auto/Dollar)\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/freemarker2/freemarker2\"],e,r)}).then(e=>e.TagAutoInterpolationDollar)});i({id:\"freemarker2.tag-auto.interpolation-bracket\",aliases:[\"FreeMarker2 (Auto/Bracket)\",\"Apache FreeMarker2 (Auto/Bracket)\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/freemarker2/freemarker2\"],e,r)}).then(e=>e.TagAutoInterpolationBracket)});i({id:\"go\",extensions:[\".go\"],aliases:[\"Go\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/go/go\"],e,r)})});i({id:\"graphql\",extensions:[\".graphql\",\".gql\"],aliases:[\"GraphQL\",\"graphql\",\"gql\"],mimetypes:[\"application/graphql\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/graphql/graphql\"],e,r)})});i({id:\"handlebars\",extensions:[\".handlebars\",\".hbs\"],aliases:[\"Handlebars\",\"handlebars\",\"hbs\"],mimetypes:[\"text/x-handlebars-template\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/handlebars/handlebars\"],e,r)})});i({id:\"hcl\",extensions:[\".tf\",\".tfvars\",\".hcl\"],aliases:[\"Terraform\",\"tf\",\"HCL\",\"hcl\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/hcl/hcl\"],e,r)})});i({id:\"html\",extensions:[\".html\",\".htm\",\".shtml\",\".xhtml\",\".mdoc\",\".jsp\",\".asp\",\".aspx\",\".jshtm\"],aliases:[\"HTML\",\"htm\",\"html\",\"xhtml\"],mimetypes:[\"text/html\",\"text/x-jshtm\",\"text/template\",\"text/ng-template\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/html/html\"],e,r)})});i({id:\"ini\",extensions:[\".ini\",\".properties\",\".gitconfig\"],filenames:[\"config\",\".gitattributes\",\".gitconfig\",\".editorconfig\"],aliases:[\"Ini\",\"ini\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/ini/ini\"],e,r)})});i({id:\"java\",extensions:[\".java\",\".jav\"],aliases:[\"Java\",\"java\"],mimetypes:[\"text/x-java-source\",\"text/x-java\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/java/java\"],e,r)})});i({id:\"javascript\",extensions:[\".js\",\".es6\",\".jsx\",\".mjs\",\".cjs\"],firstLine:\"^#!.*\\\\bnode\",filenames:[\"jakefile\"],aliases:[\"JavaScript\",\"javascript\",\"js\"],mimetypes:[\"text/javascript\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/javascript/javascript\"],e,r)})});i({id:\"julia\",extensions:[\".jl\"],aliases:[\"julia\",\"Julia\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/julia/julia\"],e,r)})});i({id:\"kotlin\",extensions:[\".kt\",\".kts\"],aliases:[\"Kotlin\",\"kotlin\"],mimetypes:[\"text/x-kotlin-source\",\"text/x-kotlin\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/kotlin/kotlin\"],e,r)})});i({id:\"less\",extensions:[\".less\"],aliases:[\"Less\",\"less\"],mimetypes:[\"text/x-less\",\"text/less\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/less/less\"],e,r)})});i({id:\"lexon\",extensions:[\".lex\"],aliases:[\"Lexon\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/lexon/lexon\"],e,r)})});i({id:\"lua\",extensions:[\".lua\"],aliases:[\"Lua\",\"lua\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/lua/lua\"],e,r)})});i({id:\"liquid\",extensions:[\".liquid\",\".html.liquid\"],aliases:[\"Liquid\",\"liquid\"],mimetypes:[\"application/liquid\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/liquid/liquid\"],e,r)})});i({id:\"m3\",extensions:[\".m3\",\".i3\",\".mg\",\".ig\"],aliases:[\"Modula-3\",\"Modula3\",\"modula3\",\"m3\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/m3/m3\"],e,r)})});i({id:\"markdown\",extensions:[\".md\",\".markdown\",\".mdown\",\".mkdn\",\".mkd\",\".mdwn\",\".mdtxt\",\".mdtext\"],aliases:[\"Markdown\",\"markdown\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/markdown/markdown\"],e,r)})});i({id:\"mdx\",extensions:[\".mdx\"],aliases:[\"MDX\",\"mdx\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/mdx/mdx\"],e,r)})});i({id:\"mips\",extensions:[\".s\"],aliases:[\"MIPS\",\"MIPS-V\"],mimetypes:[\"text/x-mips\",\"text/mips\",\"text/plaintext\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/mips/mips\"],e,r)})});i({id:\"msdax\",extensions:[\".dax\",\".msdax\"],aliases:[\"DAX\",\"MSDAX\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/msdax/msdax\"],e,r)})});i({id:\"mysql\",extensions:[],aliases:[\"MySQL\",\"mysql\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/mysql/mysql\"],e,r)})});i({id:\"objective-c\",extensions:[\".m\"],aliases:[\"Objective-C\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/objective-c/objective-c\"],e,r)})});i({id:\"pascal\",extensions:[\".pas\",\".p\",\".pp\"],aliases:[\"Pascal\",\"pas\"],mimetypes:[\"text/x-pascal-source\",\"text/x-pascal\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/pascal/pascal\"],e,r)})});i({id:\"pascaligo\",extensions:[\".ligo\"],aliases:[\"Pascaligo\",\"ligo\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/pascaligo/pascaligo\"],e,r)})});i({id:\"perl\",extensions:[\".pl\",\".pm\"],aliases:[\"Perl\",\"pl\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/perl/perl\"],e,r)})});i({id:\"pgsql\",extensions:[],aliases:[\"PostgreSQL\",\"postgres\",\"pg\",\"postgre\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/pgsql/pgsql\"],e,r)})});i({id:\"php\",extensions:[\".php\",\".php4\",\".php5\",\".phtml\",\".ctp\"],aliases:[\"PHP\",\"php\"],mimetypes:[\"application/x-php\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/php/php\"],e,r)})});i({id:\"pla\",extensions:[\".pla\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/pla/pla\"],e,r)})});i({id:\"postiats\",extensions:[\".dats\",\".sats\",\".hats\"],aliases:[\"ATS\",\"ATS/Postiats\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/postiats/postiats\"],e,r)})});i({id:\"powerquery\",extensions:[\".pq\",\".pqm\"],aliases:[\"PQ\",\"M\",\"Power Query\",\"Power Query M\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/powerquery/powerquery\"],e,r)})});i({id:\"powershell\",extensions:[\".ps1\",\".psm1\",\".psd1\"],aliases:[\"PowerShell\",\"powershell\",\"ps\",\"ps1\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/powershell/powershell\"],e,r)})});i({id:\"proto\",extensions:[\".proto\"],aliases:[\"protobuf\",\"Protocol Buffers\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/protobuf/protobuf\"],e,r)})});i({id:\"pug\",extensions:[\".jade\",\".pug\"],aliases:[\"Pug\",\"Jade\",\"jade\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/pug/pug\"],e,r)})});i({id:\"python\",extensions:[\".py\",\".rpy\",\".pyw\",\".cpy\",\".gyp\",\".gypi\"],aliases:[\"Python\",\"py\"],firstLine:\"^#!/.*\\\\bpython[0-9.-]*\\\\b\",loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/python/python\"],e,r)})});i({id:\"qsharp\",extensions:[\".qs\"],aliases:[\"Q#\",\"qsharp\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/qsharp/qsharp\"],e,r)})});i({id:\"r\",extensions:[\".r\",\".rhistory\",\".rmd\",\".rprofile\",\".rt\"],aliases:[\"R\",\"r\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/r/r\"],e,r)})});i({id:\"razor\",extensions:[\".cshtml\"],aliases:[\"Razor\",\"razor\"],mimetypes:[\"text/x-cshtml\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/razor/razor\"],e,r)})});i({id:\"redis\",extensions:[\".redis\"],aliases:[\"redis\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/redis/redis\"],e,r)})});i({id:\"redshift\",extensions:[],aliases:[\"Redshift\",\"redshift\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/redshift/redshift\"],e,r)})});i({id:\"restructuredtext\",extensions:[\".rst\"],aliases:[\"reStructuredText\",\"restructuredtext\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/restructuredtext/restructuredtext\"],e,r)})});i({id:\"ruby\",extensions:[\".rb\",\".rbx\",\".rjs\",\".gemspec\",\".pp\"],filenames:[\"rakefile\",\"Gemfile\"],aliases:[\"Ruby\",\"rb\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/ruby/ruby\"],e,r)})});i({id:\"rust\",extensions:[\".rs\",\".rlib\"],aliases:[\"Rust\",\"rust\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/rust/rust\"],e,r)})});i({id:\"sb\",extensions:[\".sb\"],aliases:[\"Small Basic\",\"sb\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/sb/sb\"],e,r)})});i({id:\"scala\",extensions:[\".scala\",\".sc\",\".sbt\"],aliases:[\"Scala\",\"scala\",\"SBT\",\"Sbt\",\"sbt\",\"Dotty\",\"dotty\"],mimetypes:[\"text/x-scala-source\",\"text/x-scala\",\"text/x-sbt\",\"text/x-dotty\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/scala/scala\"],e,r)})});i({id:\"scheme\",extensions:[\".scm\",\".ss\",\".sch\",\".rkt\"],aliases:[\"scheme\",\"Scheme\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/scheme/scheme\"],e,r)})});i({id:\"scss\",extensions:[\".scss\"],aliases:[\"Sass\",\"sass\",\"scss\"],mimetypes:[\"text/x-scss\",\"text/scss\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/scss/scss\"],e,r)})});i({id:\"shell\",extensions:[\".sh\",\".bash\"],aliases:[\"Shell\",\"sh\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/shell/shell\"],e,r)})});i({id:\"sol\",extensions:[\".sol\"],aliases:[\"sol\",\"solidity\",\"Solidity\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/solidity/solidity\"],e,r)})});i({id:\"aes\",extensions:[\".aes\"],aliases:[\"aes\",\"sophia\",\"Sophia\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/sophia/sophia\"],e,r)})});i({id:\"sparql\",extensions:[\".rq\"],aliases:[\"sparql\",\"SPARQL\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/sparql/sparql\"],e,r)})});i({id:\"sql\",extensions:[\".sql\"],aliases:[\"SQL\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/sql/sql\"],e,r)})});i({id:\"st\",extensions:[\".st\",\".iecst\",\".iecplc\",\".lc3lib\",\".TcPOU\",\".TcDUT\",\".TcGVL\",\".TcIO\"],aliases:[\"StructuredText\",\"scl\",\"stl\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/st/st\"],e,r)})});i({id:\"swift\",aliases:[\"Swift\",\"swift\"],extensions:[\".swift\"],mimetypes:[\"text/swift\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/swift/swift\"],e,r)})});i({id:\"systemverilog\",extensions:[\".sv\",\".svh\"],aliases:[\"SV\",\"sv\",\"SystemVerilog\",\"systemverilog\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/systemverilog/systemverilog\"],e,r)})});i({id:\"verilog\",extensions:[\".v\",\".vh\"],aliases:[\"V\",\"v\",\"Verilog\",\"verilog\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/systemverilog/systemverilog\"],e,r)})});i({id:\"tcl\",extensions:[\".tcl\"],aliases:[\"tcl\",\"Tcl\",\"tcltk\",\"TclTk\",\"tcl/tk\",\"Tcl/Tk\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/tcl/tcl\"],e,r)})});i({id:\"twig\",extensions:[\".twig\"],aliases:[\"Twig\",\"twig\"],mimetypes:[\"text/x-twig\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/twig/twig\"],e,r)})});i({id:\"typescript\",extensions:[\".ts\",\".tsx\",\".cts\",\".mts\"],aliases:[\"TypeScript\",\"ts\",\"typescript\"],mimetypes:[\"text/typescript\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/typescript/typescript\"],e,r)})});i({id:\"vb\",extensions:[\".vb\"],aliases:[\"Visual Basic\",\"vb\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/vb/vb\"],e,r)})});i({id:\"wgsl\",extensions:[\".wgsl\"],aliases:[\"WebGPU Shading Language\",\"WGSL\",\"wgsl\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/wgsl/wgsl\"],e,r)})});i({id:\"xml\",extensions:[\".xml\",\".xsd\",\".dtd\",\".ascx\",\".csproj\",\".config\",\".props\",\".targets\",\".wxi\",\".wxl\",\".wxs\",\".xaml\",\".svg\",\".svgz\",\".opf\",\".xslt\",\".xsl\"],firstLine:\"(\\\\<\\\\?xml.*)|(\\\\<svg)|(\\\\<\\\\!doctype\\\\s+svg)\",aliases:[\"XML\",\"xml\"],mimetypes:[\"text/xml\",\"application/xml\",\"application/xaml+xml\",\"application/xml-dtd\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/xml/xml\"],e,r)})});i({id:\"yaml\",extensions:[\".yaml\",\".yml\"],aliases:[\"YAML\",\"yaml\",\"YML\",\"yml\"],mimetypes:[\"application/x-yaml\",\"text/x-yaml\"],loader:()=>new Promise((e,r)=>{a([\"vs/basic-languages/yaml/yaml\"],e,r)})});})();\nreturn moduleExports;\n});\n\n\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/language/css/monaco.contribution\", [\"require\",\"require\",\"vs/editor/editor.api\"],(require)=>{\nvar moduleExports=(()=>{var C=Object.create;var g=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var l=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(n,r)=>(typeof require!=\"undefined\"?require:n)[r]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var I=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),M=(e,n)=>{for(var r in n)g(e,r,{get:n[r],enumerable:!0})},s=(e,n,r,a)=>{if(n&&typeof n==\"object\"||typeof n==\"function\")for(let t of b(n))!h.call(e,t)&&t!==r&&g(e,t,{get:()=>n[t],enumerable:!(a=S(n,t))||a.enumerable});return e},y=(e,n,r)=>(s(e,n,\"default\"),r&&s(r,n,\"default\")),w=(e,n,r)=>(r=e!=null?C(x(e)):{},s(n||!e||!e.__esModule?g(r,\"default\",{value:e,enumerable:!0}):r,e)),P=e=>s(g({},\"__esModule\",{value:!0}),e);var v=I((k,D)=>{var O=w(l(\"vs/editor/editor.api\"));D.exports=O});var R={};M(R,{cssDefaults:()=>p,lessDefaults:()=>f,scssDefaults:()=>c});var o={};y(o,w(v()));var i=class{_onDidChange=new o.Emitter;_options;_modeConfiguration;_languageId;constructor(n,r,a){this._languageId=n,this.setOptions(r),this.setModeConfiguration(a)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this.options}get options(){return this._options}setOptions(n){this._options=n||Object.create(null),this._onDidChange.fire(this)}setDiagnosticsOptions(n){this.setOptions(n)}setModeConfiguration(n){this._modeConfiguration=n||Object.create(null),this._onDidChange.fire(this)}},d={validate:!0,lint:{compatibleVendorPrefixes:\"ignore\",vendorPrefix:\"warning\",duplicateProperties:\"warning\",emptyRules:\"warning\",importStatement:\"ignore\",boxModel:\"ignore\",universalSelector:\"ignore\",zeroUnits:\"ignore\",fontFaceProperties:\"warning\",hexColorLength:\"error\",argumentsInColorFunction:\"error\",unknownProperties:\"warning\",ieHack:\"ignore\",unknownVendorSpecificProperties:\"ignore\",propertyIgnoredDueToDisplay:\"warning\",important:\"ignore\",float:\"ignore\",idSelector:\"ignore\"},data:{useDefaultDataProvider:!0},format:{newlineBetweenSelectors:!0,newlineBetweenRules:!0,spaceAroundSelectorSeparator:!1,braceStyle:\"collapse\",maxPreserveNewLines:void 0,preserveNewLines:!0}},u={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0,documentFormattingEdits:!0,documentRangeFormattingEdits:!0},p=new i(\"css\",d,u),c=new i(\"scss\",d,u),f=new i(\"less\",d,u);o.languages.css={cssDefaults:p,lessDefaults:f,scssDefaults:c};function m(){return new Promise((e,n)=>{l([\"vs/language/css/cssMode\"],e,n)})}o.languages.onLanguage(\"less\",()=>{m().then(e=>e.setupMode(f))});o.languages.onLanguage(\"scss\",()=>{m().then(e=>e.setupMode(c))});o.languages.onLanguage(\"css\",()=>{m().then(e=>e.setupMode(p))});return P(R);})();\nreturn moduleExports;\n});\n\n\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/language/html/monaco.contribution\", [\"require\",\"require\",\"vs/editor/editor.api\"],(require)=>{\nvar moduleExports=(()=>{var w=Object.create;var l=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var f=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(n,t)=>(typeof require!=\"undefined\"?require:n)[t]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var k=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),T=(e,n)=>{for(var t in n)l(e,t,{get:n[t],enumerable:!0})},d=(e,n,t,r)=>{if(n&&typeof n==\"object\"||typeof n==\"function\")for(let o of H(n))!_.call(e,o)&&o!==t&&l(e,o,{get:()=>n[o],enumerable:!(r=R(n,o))||r.enumerable});return e},b=(e,n,t)=>(d(e,n,\"default\"),t&&d(t,n,\"default\")),v=(e,n,t)=>(t=e!=null?w(O(e)):{},d(n||!e||!e.__esModule?l(t,\"default\",{value:e,enumerable:!0}):t,e)),A=e=>d(l({},\"__esModule\",{value:!0}),e);var C=k((z,h)=>{var E=v(f(\"vs/editor/editor.api\"));h.exports=E});var V={};T(V,{handlebarDefaults:()=>M,handlebarLanguageService:()=>m,htmlDefaults:()=>x,htmlLanguageService:()=>c,razorDefaults:()=>I,razorLanguageService:()=>y,registerHTMLLanguageService:()=>s});var a={};b(a,v(C()));var p=class{_onDidChange=new a.Emitter;_options;_modeConfiguration;_languageId;constructor(n,t,r){this._languageId=n,this.setOptions(t),this.setModeConfiguration(r)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get options(){return this._options}get modeConfiguration(){return this._modeConfiguration}setOptions(n){this._options=n||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(n){this._modeConfiguration=n||Object.create(null),this._onDidChange.fire(this)}},F={tabSize:4,insertSpaces:!1,wrapLineLength:120,unformatted:'default\": \"a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',contentUnformatted:\"pre\",indentInnerHtml:!1,preserveNewLines:!0,maxPreserveNewLines:void 0,indentHandlebars:!1,endWithNewline:!1,extraLiners:\"head, body, /html\",wrapAttributes:\"auto\"},u={format:F,suggest:{},data:{useDefaultDataProvider:!0}};function g(e){return{completionItems:!0,hovers:!0,documentSymbols:!0,links:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,selectionRanges:!0,diagnostics:e===i,documentFormattingEdits:e===i,documentRangeFormattingEdits:e===i}}var i=\"html\",D=\"handlebars\",L=\"razor\",c=s(i,u,g(i)),x=c.defaults,m=s(D,u,g(D)),M=m.defaults,y=s(L,u,g(L)),I=y.defaults;a.languages.html={htmlDefaults:x,razorDefaults:I,handlebarDefaults:M,htmlLanguageService:c,handlebarLanguageService:m,razorLanguageService:y,registerHTMLLanguageService:s};function P(){return new Promise((e,n)=>{f([\"vs/language/html/htmlMode\"],e,n)})}function s(e,n=u,t=g(e)){let r=new p(e,n,t),o,S=a.languages.onLanguage(e,async()=>{o=(await P()).setupMode(r)});return{defaults:r,dispose(){S.dispose(),o?.dispose(),o=void 0}}}return A(V);})();\nreturn moduleExports;\n});\n\n\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/language/json/monaco.contribution\", [\"require\",\"require\",\"vs/editor/editor.api\"],(require)=>{\nvar moduleExports=(()=>{var p=Object.create;var r=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var g=(o=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(o,{get:(e,n)=>(typeof require!=\"undefined\"?require:e)[n]}):o)(function(o){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+o+'\" is not supported')});var D=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),b=(o,e)=>{for(var n in e)r(o,n,{get:e[n],enumerable:!0})},s=(o,e,n,a)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of h(e))!C.call(o,i)&&i!==n&&r(o,i,{get:()=>e[i],enumerable:!(a=y(e,i))||a.enumerable});return o},u=(o,e,n)=>(s(o,e,\"default\"),n&&s(n,e,\"default\")),c=(o,e,n)=>(n=o!=null?p(v(o)):{},s(e||!o||!o.__esModule?r(n,\"default\",{value:o,enumerable:!0}):n,o)),O=o=>s(r({},\"__esModule\",{value:!0}),o);var f=D((w,m)=>{var M=c(g(\"vs/editor/editor.api\"));m.exports=M});var R={};b(R,{jsonDefaults:()=>d});var t={};u(t,c(f()));var l=class{_onDidChange=new t.Emitter;_diagnosticsOptions;_modeConfiguration;_languageId;constructor(e,n,a){this._languageId=e,this.setDiagnosticsOptions(n),this.setModeConfiguration(a)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},j={validate:!0,allowComments:!0,schemas:[],enableSchemaRequest:!1,schemaRequest:\"warning\",schemaValidation:\"warning\",comments:\"error\",trailingCommas:\"error\"},S={documentFormattingEdits:!0,documentRangeFormattingEdits:!0,completionItems:!0,hovers:!0,documentSymbols:!0,tokens:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0},d=new l(\"json\",j,S);t.languages.json={jsonDefaults:d};function _(){return new Promise((o,e)=>{g([\"vs/language/json/jsonMode\"],o,e)})}t.languages.register({id:\"json\",extensions:[\".json\",\".bowerrc\",\".jshintrc\",\".jscsrc\",\".eslintrc\",\".babelrc\",\".har\"],aliases:[\"JSON\",\"json\"],mimetypes:[\"application/json\"]});t.languages.onLanguage(\"json\",()=>{_().then(o=>o.setupMode(d))});return O(R);})();\nreturn moduleExports;\n});\n\n\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/language/typescript/monaco.contribution\", [\"require\",\"require\",\"vs/editor/editor.api\"],(require)=>{\nvar moduleExports=(()=>{var N=Object.create;var d=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var c=(n=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(n,{get:(e,t)=>(typeof require!=\"undefined\"?require:e)[t]}):n)(function(n){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+n+'\" is not supported')});var w=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),A=(n,e)=>{for(var t in e)d(n,t,{get:e[t],enumerable:!0})},g=(n,e,t,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let r of M(e))!F.call(n,r)&&r!==t&&d(n,r,{get:()=>e[r],enumerable:!(i=H(e,r))||i.enumerable});return n},D=(n,e,t)=>(g(n,e,\"default\"),t&&g(t,e,\"default\")),C=(n,e,t)=>(t=n!=null?N(R(n)):{},g(e||!n||!n.__esModule?d(t,\"default\",{value:n,enumerable:!0}):t,n)),W=n=>g(d({},\"__esModule\",{value:!0}),n);var _=w((B,E)=>{var V=C(c(\"vs/editor/editor.api\"));E.exports=V});var T={};A(T,{JsxEmit:()=>f,ModuleKind:()=>b,ModuleResolutionKind:()=>O,NewLineKind:()=>y,ScriptTarget:()=>h,getJavaScriptWorker:()=>k,getTypeScriptWorker:()=>P,javascriptDefaults:()=>v,typescriptDefaults:()=>x,typescriptVersion:()=>I});var L=\"5.0.2\";var l={};D(l,C(_()));var b=(s=>(s[s.None=0]=\"None\",s[s.CommonJS=1]=\"CommonJS\",s[s.AMD=2]=\"AMD\",s[s.UMD=3]=\"UMD\",s[s.System=4]=\"System\",s[s.ES2015=5]=\"ES2015\",s[s.ESNext=99]=\"ESNext\",s))(b||{}),f=(a=>(a[a.None=0]=\"None\",a[a.Preserve=1]=\"Preserve\",a[a.React=2]=\"React\",a[a.ReactNative=3]=\"ReactNative\",a[a.ReactJSX=4]=\"ReactJSX\",a[a.ReactJSXDev=5]=\"ReactJSXDev\",a))(f||{}),y=(t=>(t[t.CarriageReturnLineFeed=0]=\"CarriageReturnLineFeed\",t[t.LineFeed=1]=\"LineFeed\",t))(y||{}),h=(o=>(o[o.ES3=0]=\"ES3\",o[o.ES5=1]=\"ES5\",o[o.ES2015=2]=\"ES2015\",o[o.ES2016=3]=\"ES2016\",o[o.ES2017=4]=\"ES2017\",o[o.ES2018=5]=\"ES2018\",o[o.ES2019=6]=\"ES2019\",o[o.ES2020=7]=\"ES2020\",o[o.ESNext=99]=\"ESNext\",o[o.JSON=100]=\"JSON\",o[o.Latest=99]=\"Latest\",o))(h||{}),O=(t=>(t[t.Classic=1]=\"Classic\",t[t.NodeJs=2]=\"NodeJs\",t))(O||{}),m=class{_onDidChange=new l.Emitter;_onDidExtraLibsChange=new l.Emitter;_extraLibs;_removedExtraLibs;_eagerModelSync;_compilerOptions;_diagnosticsOptions;_workerOptions;_onDidExtraLibsChangeTimeout;_inlayHintsOptions;_modeConfiguration;constructor(e,t,i,r,p){this._extraLibs=Object.create(null),this._removedExtraLibs=Object.create(null),this._eagerModelSync=!1,this.setCompilerOptions(e),this.setDiagnosticsOptions(t),this.setWorkerOptions(i),this.setInlayHintsOptions(r),this.setModeConfiguration(p),this._onDidExtraLibsChangeTimeout=-1}get onDidChange(){return this._onDidChange.event}get onDidExtraLibsChange(){return this._onDidExtraLibsChange.event}get modeConfiguration(){return this._modeConfiguration}get workerOptions(){return this._workerOptions}get inlayHintsOptions(){return this._inlayHintsOptions}getExtraLibs(){return this._extraLibs}addExtraLib(e,t){let i;if(typeof t>\"u\"?i=`ts:extralib-${Math.random().toString(36).substring(2,15)}`:i=t,this._extraLibs[i]&&this._extraLibs[i].content===e)return{dispose:()=>{}};let r=1;return this._removedExtraLibs[i]&&(r=this._removedExtraLibs[i]+1),this._extraLibs[i]&&(r=this._extraLibs[i].version+1),this._extraLibs[i]={content:e,version:r},this._fireOnDidExtraLibsChangeSoon(),{dispose:()=>{let p=this._extraLibs[i];!p||p.version===r&&(delete this._extraLibs[i],this._removedExtraLibs[i]=r,this._fireOnDidExtraLibsChangeSoon())}}}setExtraLibs(e){for(let t in this._extraLibs)this._removedExtraLibs[t]=this._extraLibs[t].version;if(this._extraLibs=Object.create(null),e&&e.length>0)for(let t of e){let i=t.filePath||`ts:extralib-${Math.random().toString(36).substring(2,15)}`,r=t.content,p=1;this._removedExtraLibs[i]&&(p=this._removedExtraLibs[i]+1),this._extraLibs[i]={content:r,version:p}}this._fireOnDidExtraLibsChangeSoon()}_fireOnDidExtraLibsChangeSoon(){this._onDidExtraLibsChangeTimeout===-1&&(this._onDidExtraLibsChangeTimeout=window.setTimeout(()=>{this._onDidExtraLibsChangeTimeout=-1,this._onDidExtraLibsChange.fire(void 0)},0))}getCompilerOptions(){return this._compilerOptions}setCompilerOptions(e){this._compilerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}getDiagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setWorkerOptions(e){this._workerOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setInlayHintsOptions(e){this._inlayHintsOptions=e||Object.create(null),this._onDidChange.fire(void 0)}setMaximumWorkerIdleTime(e){}setEagerModelSync(e){this._eagerModelSync=e}getEagerModelSync(){return this._eagerModelSync}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(void 0)}},I=L,S={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,diagnostics:!0,documentRangeFormattingEdits:!0,signatureHelp:!0,onTypeFormattingEdits:!0,codeActions:!0,inlayHints:!0},x=new m({allowNonTsExtensions:!0,target:99},{noSemanticValidation:!1,noSyntaxValidation:!1,onlyVisible:!1},{},{},S),v=new m({allowNonTsExtensions:!0,allowJs:!0,target:99},{noSemanticValidation:!0,noSyntaxValidation:!1,onlyVisible:!1},{},{},S),P=()=>u().then(n=>n.getTypeScriptWorker()),k=()=>u().then(n=>n.getJavaScriptWorker());l.languages.typescript={ModuleKind:b,JsxEmit:f,NewLineKind:y,ScriptTarget:h,ModuleResolutionKind:O,typescriptVersion:I,typescriptDefaults:x,javascriptDefaults:v,getTypeScriptWorker:P,getJavaScriptWorker:k};function u(){return new Promise((n,e)=>{c([\"vs/language/typescript/tsMode\"],n,e)})}l.languages.onLanguage(\"typescript\",()=>u().then(n=>n.setupTypeScript(x)));l.languages.onLanguage(\"javascript\",()=>u().then(n=>n.setupJavaScript(v)));return W(T);})();\nreturn moduleExports;\n});\n\ndefine(\"vs/editor/editor.main\", [\"vs/editor/edcore.main\",\"vs/basic-languages/monaco.contribution\",\"vs/language/css/monaco.contribution\",\"vs/language/html/monaco.contribution\",\"vs/language/json/monaco.contribution\",\"vs/language/typescript/monaco.contribution\"], function(api) { return api; });\n//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/editor/editor.main.nls.de.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/editor/editor.main.nls.de\",{\"vs/base/browser/ui/actionbar/actionViewItems\":[\"{0} ({1})\"],\"vs/base/browser/ui/findinput/findInput\":[\"Eingabe\"],\"vs/base/browser/ui/findinput/findInputToggles\":[\"Gro\\xDF-/Kleinschreibung beachten\",\"Nur ganzes Wort suchen\",\"Regul\\xE4ren Ausdruck verwenden\"],\"vs/base/browser/ui/findinput/replaceInput\":[\"Eingabe\",\"Gro\\xDF-/Kleinschreibung beibehalten\"],\"vs/base/browser/ui/hover/hoverWidget\":[\"Inspect this in the accessible view with {0}.\",\"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\"],\"vs/base/browser/ui/iconLabel/iconLabelHover\":[\"Wird geladen...\"],\"vs/base/browser/ui/inputbox/inputBox\":[\"Fehler: {0}\",\"Warnung: {0}\",\"Info: {0}\",\"f\\xFCr Verlauf\",\"Gel\\xF6schte Eingabe\"],\"vs/base/browser/ui/keybindingLabel/keybindingLabel\":[\"Ungebunden\"],\"vs/base/browser/ui/selectBox/selectBoxCustom\":[\"Auswahlfeld\"],\"vs/base/browser/ui/toolbar/toolbar\":[\"Weitere Aktionen...\"],\"vs/base/browser/ui/tree/abstractTree\":[\"Filter\",\"Fuzzy\\xFCbereinstimmung\",\"Zum Filtern Text eingeben\",\"Zum Suchen eingeben\",\"Zum Suchen eingeben\",\"Schlie\\xDFen\",\"Kein Element gefunden.\"],\"vs/base/common/actions\":[\"(leer)\"],\"vs/base/common/errorMessage\":[\"{0}: {1}\",\"Ein Systemfehler ist aufgetreten ({0}).\",\"Ein unbekannter Fehler ist aufgetreten. Weitere Details dazu finden Sie im Protokoll.\",\"Ein unbekannter Fehler ist aufgetreten. Weitere Details dazu finden Sie im Protokoll.\",\"{0} ({1} Fehler gesamt)\",\"Ein unbekannter Fehler ist aufgetreten. Weitere Details dazu finden Sie im Protokoll.\"],\"vs/base/common/keybindingLabels\":[\"STRG\",\"UMSCHALTTASTE\",\"ALT\",\"Windows\",\"STRG\",\"UMSCHALTTASTE\",\"ALT\",\"Super\",\"Steuern\",\"UMSCHALTTASTE\",\"Option\",\"Befehl\",\"Steuern\",\"UMSCHALTTASTE\",\"ALT\",\"Windows\",\"Steuern\",\"UMSCHALTTASTE\",\"ALT\",\"Super\"],\"vs/base/common/platform\":[\"_\"],\"vs/editor/browser/controller/textAreaHandler\":[\"Editor\",\"Auf den Editor kann zurzeit nicht zugegriffen werden.\",\"{0} Um den f\\xFCr die Sprachausgabe optimierten Modus zu aktivieren, verwenden Sie {1}\",'{0} Um den f\\xFCr die Sprachausgabe optimierten Modus zu aktivieren, \\xF6ffnen Sie die Schnellauswahl mit {1}, und f\\xFChren Sie den Befehl \"Barrierefreiheitsmodus der Bildschirmsprachausgabe umschalten\" aus, der derzeit nicht \\xFCber die Tastatur ausgel\\xF6st werden kann.','{0} Weisen Sie eine Tastenzuordnung f\\xFCr den Befehl \"Barrierefreiheitsmodus der Sprachausgabe umschalten\" zu, indem Sie mit auf den Editor f\\xFCr Tastenzuordnungen zugreifen {1} und ihn ausf\\xFChren.'],\"vs/editor/browser/coreCommands\":[\"Auch bei l\\xE4ngeren Zeilen am Ende bleiben\",\"Auch bei l\\xE4ngeren Zeilen am Ende bleiben\",\"Sekund\\xE4re Cursor entfernt\"],\"vs/editor/browser/editorExtensions\":[\"&&R\\xFCckg\\xE4ngig\",\"R\\xFCckg\\xE4ngig\",\"&&Wiederholen\",\"Wiederholen\",\"&&Alles ausw\\xE4hlen\",\"Alle ausw\\xE4hlen\"],\"vs/editor/browser/widget/codeEditorWidget\":[\"Die Anzahl der Cursor wurde auf {0} beschr\\xE4nkt. Erw\\xE4gen Sie die Verwendung von [Suchen und Ersetzen](https://code.visualstudio.com/docs/editor/codebasics#_find-und-ersetzen) f\\xFCr gr\\xF6\\xDFere \\xC4nderungen, oder erh\\xF6hen Sie die Multicursorbegrenzungseinstellung des Editors.\",\"Erh\\xF6hen des Grenzwerts f\\xFCr mehrere Cursor\"],\"vs/editor/browser/widget/diffEditor.contribution\":[\"Barrierefreier Diff-Viewer\",\"Zum n\\xE4chsten Unterschied wechseln\",\"Barrierefreien Diff-Viewer \\xF6ffnen\",\"Zum vorherigen Unterschied wechseln\"],\"vs/editor/browser/widget/diffEditorWidget\":[\"Zeilenformatierung f\\xFCr Einf\\xFCgungen im Diff-Editor\",\"Zeilenformatierung f\\xFCr Entfernungen im Diff-Editor\",\" verwenden Sie UMSCHALT+F7, um durch \\xC4nderungen zu navigieren.\",\"Kann die Dateien nicht vergleichen, da eine Datei zu gro\\xDF ist.\",\"Klicken Sie, um die \\xC4nderung r\\xFCckg\\xE4ngig zu machen\"],\"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\":['Symbol f\\xFCr \"Einf\\xFCgen\" im barrierefreien Diff-Viewer.','Symbol f\\xFCr \"Entfernen\" im barrierefreien Diff-Viewer.','Symbol f\\xFCr \"Schlie\\xDFen\" im barrierefreien Diff-Viewer.',\"Schlie\\xDFen\",\"Barrierefreier Diff-Viewer. Verwenden Sie den Pfeil nach oben und unten, um zu navigieren.\",\"keine ge\\xE4nderten Zeilen\",\"1 Zeile ge\\xE4ndert\",\"{0} Zeilen ge\\xE4ndert\",\"Unterschied {0} von {1}: urspr\\xFCngliche Zeile {2}, {3}, ge\\xE4nderte Zeile {4}, {5}\",\"leer\",\"{0}: unver\\xE4nderte Zeile {1}\",\"{0} urspr\\xFCngliche Zeile {1} ge\\xE4nderte Zeile {2}\",\"+ {0} ge\\xE4nderte Zeile(n) {1}\",\"\\u2013 {0} Originalzeile {1}\"],\"vs/editor/browser/widget/diffEditorWidget2/colors\":[\"Die Rahmenfarbe f\\xFCr Text, der im Diff-Editor verschoben wurde.\",\"The active border color for text that got moved in the diff editor.\"],\"vs/editor/browser/widget/diffEditorWidget2/decorations\":[\"Zeilenformatierung f\\xFCr Einf\\xFCgungen im Diff-Editor\",\"Zeilenformatierung f\\xFCr Entfernungen im Diff-Editor\",\"Klicken Sie, um die \\xC4nderung r\\xFCckg\\xE4ngig zu machen\"],\"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\":[\" verwenden Sie {0}, um die Hilfe zur Barrierefreiheit zu \\xF6ffnen.\"],\"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\":[\"Gel\\xF6schte Zeilen kopieren\",\"Gel\\xF6schte Zeile kopieren\",\"Ge\\xE4nderte Zeilen kopieren\",\"Ge\\xE4nderte Zeile kopieren\",\"Gel\\xF6schte Zeile kopieren ({0})\",\"Ge\\xE4nderte Zeile ({0}) kopieren\",\"Diese \\xC4nderung r\\xFCckg\\xE4ngig machen\"],\"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\":[\"Code moved with changes to line {0}-{1}\",\"Code moved with changes from line {0}-{1}\",\"Code moved to line {0}-{1}\",\"Code moved from line {0}-{1}\"],\"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\":[\"Unver\\xE4nderten Bereich falten\",\"Click or drag to show more above\",\"Show all\",\"Click or drag to show more below\",\"{0} hidden lines\",\"Double click to unfold\"],\"vs/editor/browser/widget/diffReview\":['Symbol f\\xFCr \"Einf\\xFCgen\" in der Diff-\\xDCberpr\\xFCfung.','Symbol f\\xFCr \"Entfernen\" in der Diff-\\xDCberpr\\xFCfung.','Symbol f\\xFCr \"Schlie\\xDFen\" in der Diff-\\xDCberpr\\xFCfung.',\"Schlie\\xDFen\",\"keine ge\\xE4nderten Zeilen\",\"1 Zeile ge\\xE4ndert\",\"{0} Zeilen ge\\xE4ndert\",\"Unterschied {0} von {1}: urspr\\xFCngliche Zeile {2}, {3}, ge\\xE4nderte Zeile {4}, {5}\",\"leer\",\"{0}: unver\\xE4nderte Zeile {1}\",\"{0} urspr\\xFCngliche Zeile {1} ge\\xE4nderte Zeile {2}\",\"+ {0} ge\\xE4nderte Zeile(n) {1}\",\"\\u2013 {0} Originalzeile {1}\"],\"vs/editor/browser/widget/inlineDiffMargin\":[\"Gel\\xF6schte Zeilen kopieren\",\"Gel\\xF6schte Zeile kopieren\",\"Ge\\xE4nderte Zeilen kopieren\",\"Ge\\xE4nderte Zeile kopieren\",\"Gel\\xF6schte Zeile kopieren ({0})\",\"Ge\\xE4nderte Zeile ({0}) kopieren\",\"Diese \\xC4nderung r\\xFCckg\\xE4ngig machen\",\"Gel\\xF6schte Zeile kopieren ({0})\",\"Ge\\xE4nderte Zeile ({0}) kopieren\"],\"vs/editor/common/config/editorConfigurationSchema\":[\"Editor\",\"Die Anzahl der Leerzeichen, denen ein Tabstopp entspricht. Diese Einstellung wird basierend auf dem Inhalt der Datei \\xFCberschrieben, wenn {0} aktiviert ist.\",\"Die Anzahl von Leerzeichen, die f\\xFCr den Einzug oder \\u201EtabSize\\u201C verwendet werden, um den Wert aus \\u201E#editor.tabSize#\\u201C zu verwenden. Diese Einstellung wird basierend auf dem Dateiinhalt \\xFCberschrieben, wenn \\u201E#editor.detectIndentation#\\u201C aktiviert ist.\",\"F\\xFCgt beim Dr\\xFCcken der TAB-Taste Leerzeichen ein. Diese Einstellung wird basierend auf dem Inhalt der Datei \\xFCberschrieben, wenn {0} aktiviert ist.\",\"Steuert, ob {0} und {1} automatisch erkannt werden, wenn eine Datei basierend auf dem Dateiinhalt ge\\xF6ffnet wird.\",\"Nachfolgende automatisch eingef\\xFCgte Leerzeichen entfernen\",\"Spezielle Behandlung f\\xFCr gro\\xDFe Dateien zum Deaktivieren bestimmter speicherintensiver Funktionen.\",\"Steuert, ob Vervollst\\xE4ndigungen auf Grundlage der W\\xF6rter im Dokument berechnet werden sollen.\",\"Nur W\\xF6rter aus dem aktiven Dokument vorschlagen\",\"W\\xF6rter aus allen ge\\xF6ffneten Dokumenten derselben Sprache vorschlagen\",\"W\\xF6rter aus allen ge\\xF6ffneten Dokumenten vorschlagen\",\"Steuert, aus welchen Dokumenten wortbasierte Vervollst\\xE4ndigungen berechnet werden.\",\"Die semantische Hervorhebung ist f\\xFCr alle Farbdesigns aktiviert.\",\"Die semantische Hervorhebung ist f\\xFCr alle Farbdesigns deaktiviert.\",'Die semantische Hervorhebung wird durch die Einstellung \"semanticHighlighting\" des aktuellen Farbdesigns konfiguriert.',\"Steuert, ob die semantische Hervorhebung f\\xFCr die Sprachen angezeigt wird, die sie unterst\\xFCtzen.\",\"Lassen Sie Peek-Editoren ge\\xF6ffnet, auch wenn Sie auf ihren Inhalt doppelklicken oder auf die ESCAPETASTE klicken.\",\"Zeilen, die diese L\\xE4nge \\xFCberschreiten, werden aus Leistungsgr\\xFCnden nicht tokenisiert\",\"Steuert, ob die Tokenisierung asynchron auf einem Webworker erfolgen soll.\",\"Steuert, ob die asynchrone Tokenisierung protokolliert werden soll. Nur zum Debuggen.\",\"Steuert, ob die asynchrone Tokenisierung anhand der Legacy-Hintergrundtokenisierung \\xFCberpr\\xFCft werden soll. Die Tokenisierung kann verlangsamt werden. Nur zum Debuggen.\",\"Definiert die Klammersymbole, die den Einzug vergr\\xF6\\xDFern oder verkleinern.\",\"Das \\xF6ffnende Klammerzeichen oder die Zeichenfolgensequenz.\",\"Das schlie\\xDFende Klammerzeichen oder die Zeichenfolgensequenz.\",\"Definiert die Klammerpaare, die durch ihre Schachtelungsebene farbig formatiert werden, wenn die Farbgebung f\\xFCr das Klammerpaar aktiviert ist.\",\"Das \\xF6ffnende Klammerzeichen oder die Zeichenfolgensequenz.\",\"Das schlie\\xDFende Klammerzeichen oder die Zeichenfolgensequenz.\",\"Timeout in Millisekunden, nach dem die Diff-Berechnung abgebrochen wird. Bei 0 wird kein Timeout verwendet.\",\"Maximale Dateigr\\xF6\\xDFe in MB, f\\xFCr die Diffs berechnet werden sollen. Verwenden Sie 0, um keinen Grenzwert zu setzen.\",\"Steuert, ob der Diff-Editor die Unterschiede nebeneinander oder im Text anzeigt.\",\"If the diff editor width is smaller than this value, the inline view is used.\",\"If enabled and the editor width is too small, the inline view is used.\",\"Wenn diese Option aktiviert ist, zeigt der Diff-Editor Pfeile in seinem Glyphenrand an, um \\xC4nderungen r\\xFCckg\\xE4ngig zu machen.\",\"Wenn aktiviert, ignoriert der Diff-Editor \\xC4nderungen an voran- oder nachgestellten Leerzeichen.\",'Steuert, ob der Diff-Editor die Indikatoren \"+\" und \"-\" f\\xFCr hinzugef\\xFCgte/entfernte \\xC4nderungen anzeigt.',\"Steuert, ob der Editor CodeLens anzeigt.\",\"Zeilenumbr\\xFCche erfolgen nie.\",\"Der Zeilenumbruch erfolgt an der Breite des Anzeigebereichs.\",\"Zeilen werden gem\\xE4\\xDF der Einstellung \\u201E{0}\\u201C umbrochen.\",\"Verwendet den Legacyvergleichsalgorithmus.\",\"Verwendet den erweiterten Vergleichsalgorithmus.\",\"Controls whether the diff editor shows unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as a minimum for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as context when comparing unchanged regions. Only works when {0} is set.\",\"Steuert, ob der Diff-Editor erkannte Codeverschiebevorg\\xE4nge anzeigen soll. Funktioniert nur, wenn {0} festgelegt ist.\",\"Steuert, ob der Diff-Editor die neue oder die alte Implementierung verwendet.\",\"Steuert, ob der diff-Editor leere Dekorationen anzeigt, um anzuzeigen, wo Zeichen eingef\\xFCgt oder gel\\xF6scht wurden.\"],\"vs/editor/common/config/editorOptions\":[\"Plattform-APIs verwenden, um zu erkennen, wenn eine Sprachausgabe angef\\xFCgt ist\",\"F\\xFCr die Verwendung mit einer Sprachausgabe optimieren\",\"Annehmen, dass keine Sprachausgabe angef\\xFCgt ist\",\"Steuert, ob die Benutzeroberfl\\xE4che in einem Modus ausgef\\xFChrt werden soll, in dem sie f\\xFCr Sprachausgaben optimiert ist.\",\"Steuert, ob beim Kommentieren ein Leerzeichen eingef\\xFCgt wird.\",\"Steuert, ob leere Zeilen bei Umschalt-, Hinzuf\\xFCgungs- oder Entfernungsaktionen f\\xFCr Zeilenkommentare ignoriert werden sollen.\",\"Steuert, ob ein Kopiervorgang ohne Auswahl die aktuelle Zeile kopiert.\",\"Steuert, ob der Cursor bei der Suche nach \\xDCbereinstimmungen w\\xE4hrend der Eingabe springt.\",\"Suchzeichenfolge niemals aus der Editorauswahl seeden.\",\"Suchzeichenfolge immer aus der Editorauswahl seeden, einschlie\\xDFlich Wort an Cursorposition.\",\"Suchzeichenfolge nur aus der Editorauswahl seeden.\",'Steuert, ob f\\xFCr die Suchzeichenfolge im Widget \"Suche\" ein Seeding aus der Auswahl des Editors ausgef\\xFChrt wird.','\"In Auswahl suchen\" niemals automatisch aktivieren (Standard).','\"In Auswahl suchen\" immer automatisch aktivieren.','\"In Auswahl suchen\" automatisch aktivieren, wenn mehrere Inhaltszeilen ausgew\\xE4hlt sind.','Steuert die Bedingung zum automatischen Aktivieren von \"In Auswahl suchen\".','Steuert, ob das Widget \"Suche\" die freigegebene Suchzwischenablage unter macOS lesen oder bearbeiten soll.','Steuert, ob das Suchwidget zus\\xE4tzliche Zeilen im oberen Bereich des Editors hinzuf\\xFCgen soll. Wenn die Option auf \"true\" festgelegt ist, k\\xF6nnen Sie \\xFCber die erste Zeile hinaus scrollen, wenn das Suchwidget angezeigt wird.',\"Steuert, ob die Suche automatisch am Anfang (oder am Ende) neu gestartet wird, wenn keine weiteren \\xDCbereinstimmungen gefunden werden.\",'Hiermit werden Schriftligaturen (Schriftartfeatures \"calt\" und \"liga\") aktiviert/deaktiviert. \\xC4ndern Sie diesen Wert in eine Zeichenfolge, um die CSS-Eigenschaft \"font-feature-settings\" detailliert zu steuern.','Explizite CSS-Eigenschaft \"font-feature-settings\". Stattdessen kann ein boolescher Wert \\xFCbergeben werden, wenn nur Ligaturen aktiviert/deaktiviert werden m\\xFCssen.','Hiermit werden Schriftligaturen oder Schriftartfeatures konfiguriert. Hierbei kann es sich entweder um einen booleschen Wert zum Aktivieren oder Deaktivieren von Ligaturen oder um eine Zeichenfolge f\\xFCr den Wert der CSS-Eigenschaft \"font-feature-settings\" handeln.',\"Aktiviert/deaktiviert die \\xDCbersetzung von \\u201Efont-weight\\u201C in \\u201Efont-variation-settings\\u201C. \\xC4ndern Sie dies in eine Zeichenfolge f\\xFCr eine differenzierte Steuerung der CSS-Eigenschaft \\u201Efont-variation-settings\\u201C.\",\"Explizite CSS-Eigenschaft \\u201Efont-variation-settings\\u201C. Stattdessen kann ein boolescher Wert eingeben werden, wenn nur \\u201Efont-weight\\u201C in \\u201Efont-variation-settings\\u201C \\xFCbersetzt werden muss.\",\"Konfiguriert Variationen der Schriftart. Kann entweder ein boolescher Wert zum Aktivieren/Deaktivieren der \\xDCbersetzung von \\u201Efont-weight\\u201C in \\u201Efont-variation-settings\\u201C oder eine Zeichenfolge f\\xFCr den Wert der CSS-Eigenschaft \\u201Efont-variation-settings\\u201C sein.\",\"Legt die Schriftgr\\xF6\\xDFe in Pixeln fest.\",'Es sind nur die Schl\\xFCsselw\\xF6rter \"normal\" und \"bold\" sowie Zahlen zwischen 1 und 1000 zul\\xE4ssig.','Steuert die Schriftbreite. Akzeptiert die Schl\\xFCsselw\\xF6rter \"normal\" und \"bold\" sowie Zahlen zwischen 1 und 1000.',\"Vorschauansicht der Ergebnisse anzeigen (Standardeinstellung)\",\"Zum Hauptergebnis gehen und Vorschauansicht anzeigen\",\"Wechseln Sie zum prim\\xE4ren Ergebnis, und aktivieren Sie die Navigation ohne Vorschau zu anderen Ergebnissen.\",'Diese Einstellung ist veraltet. Verwenden Sie stattdessen separate Einstellungen wie \"editor.editor.gotoLocation.multipleDefinitions\" oder \"editor.editor.gotoLocation.multipleImplementations\".','Legt das Verhalten des Befehls \"Gehe zu Definition\" fest, wenn mehrere Zielpositionen vorhanden sind','Legt das Verhalten des Befehls \"Gehe zur Typdefinition\" fest, wenn mehrere Zielpositionen vorhanden sind.','Legt das Verhalten des Befehls \"Gehe zu Deklaration\" fest, wenn mehrere Zielpositionen vorhanden sind.','Legt das Verhalten des Befehls \"Gehe zu Implementierungen\", wenn mehrere Zielspeicherorte vorhanden sind','Legt das Verhalten des Befehls \"Gehe zu Verweisen\" fest, wenn mehrere Zielpositionen vorhanden sind','Die alternative Befehls-ID, die ausgef\\xFChrt wird, wenn das Ergebnis von \"Gehe zu Definition\" die aktuelle Position ist.','Die alternative Befehls-ID, die ausgef\\xFChrt wird, wenn das Ergebnis von \"Gehe zu Typdefinition\" die aktuelle Position ist.','Die alternative Befehls-ID, die ausgef\\xFChrt wird, wenn das Ergebnis von \"Gehe zu Deklaration\" der aktuelle Speicherort ist.','Die alternative Befehls-ID, die ausgef\\xFChrt wird, wenn das Ergebnis von \"Gehe zu Implementatierung\" der aktuelle Speicherort ist.','Die alternative Befehls-ID, die ausgef\\xFChrt wird, wenn das Ergebnis von \"Gehe zu Verweis\" die aktuelle Position ist.',\"Steuert, ob die Hovermarkierung angezeigt wird.\",\"Steuert die Verz\\xF6gerung in Millisekunden, nach der die Hovermarkierung angezeigt wird.\",\"Steuert, ob die Hovermarkierung sichtbar bleiben soll, wenn der Mauszeiger dar\\xFCber bewegt wird.\",\"Zeigen Sie den Mauszeiger lieber \\xFCber der Linie an, wenn Platz vorhanden ist.\",\"Es wird angenommen, dass alle Zeichen gleich breit sind. Dies ist ein schneller Algorithmus, der f\\xFCr Festbreitenschriftarten und bestimmte Alphabete (wie dem lateinischen), bei denen die Glyphen gleich breit sind, korrekt funktioniert.\",\"Delegiert die Berechnung von Umbruchpunkten an den Browser. Dies ist ein langsamer Algorithmus, der bei gro\\xDFen Dateien Code Freezes verursachen kann, aber in allen F\\xE4llen korrekt funktioniert.\",'Steuert den Algorithmus, der Umbruchpunkte berechnet. Beachten Sie, dass \"advanced\" im Barrierefreiheitsmodus f\\xFCr eine optimale Benutzererfahrung verwendet wird.',\"Aktiviert das Gl\\xFChlampensymbol f\\xFCr Codeaktionen im Editor.\",\"Zeigt die geschachtelten aktuellen Bereiche w\\xE4hrend des Bildlaufs am oberen Rand des Editors an.\",\"Definiert die maximale Anzahl fixierter Zeilen, die angezeigt werden sollen.\",\"Legt das Modell fest, das zur Bestimmung der zu fixierenden Zeilen verwendet wird. Existiert das Gliederungsmodell nicht, wird auf das Modell des Folding Providers zur\\xFCckgegriffen, der wiederum auf das Einr\\xFCckungsmodell zur\\xFCckgreift. Diese Reihenfolge wird in allen drei F\\xE4llen beachtet.\",\"Enable scrolling of the sticky scroll widget with the editor's horizontal scrollbar.\",\"Aktiviert die Inlay-Hinweise im Editor.\",\"Inlay-Hinweise sind aktiviert\",\"Inlay-Hinweise werden standardm\\xE4\\xDFig angezeigt und ausgeblendet, wenn Sie {0} gedr\\xFCckt halten\",\"Inlayhinweise sind standardm\\xE4\\xDFig ausgeblendet. Sie werden angezeigt, wenn {0} gedr\\xFCckt gehalten wird.\",\"Inlay-Hinweise sind deaktiviert\",\"Steuert den Schriftgrad von Einlapphinweisen im Editor. Standardm\\xE4\\xDFig wird die {0} verwendet, wenn der konfigurierte Wert kleiner als {1} oder gr\\xF6\\xDFer als der Schriftgrad des Editors ist.\",'Steuert die Schriftartfamilie von Einlapphinweisen im Editor. Bei Festlegung auf \"leer\" wird die {0} verwendet.',\"Aktiviert den Abstand um die Inlay-Hinweise im Editor.\",`Steuert die Zeilenh\\xF6he. \\r\n \\u2013 Verwenden Sie 0, um die Zeilenh\\xF6he automatisch anhand des Schriftgrads zu berechnen.\\r\n \\u2013 Werte zwischen 0 und 8 werden als Multiplikator mit dem Schriftgrad verwendet.\\r\n \\u2013 Werte gr\\xF6\\xDFer oder gleich 8 werden als effektive Werte verwendet.`,\"Steuert, ob die Minimap angezeigt wird.\",\"Steuert, ob die Minimap automatisch ausgeblendet wird.\",\"Die Minimap hat die gleiche Gr\\xF6\\xDFe wie der Editor-Inhalt (und kann scrollen).\",\"Die Minimap wird bei Bedarf vergr\\xF6\\xDFert oder verkleinert, um die H\\xF6he des Editors zu f\\xFCllen (kein Scrollen).\",\"Die Minimap wird bei Bedarf verkleinert, damit sie nicht gr\\xF6\\xDFer als der Editor ist (kein Scrollen).\",\"Legt die Gr\\xF6\\xDFe der Minimap fest.\",\"Steuert die Seite, wo die Minimap gerendert wird.\",\"Steuert, wann der Schieberegler f\\xFCr die Minimap angezeigt wird.\",\"Ma\\xDFstab des in der Minimap gezeichneten Inhalts: 1, 2 oder 3.\",\"Die tats\\xE4chlichen Zeichen in einer Zeile rendern im Gegensatz zu Farbbl\\xF6cken.\",\"Begrenzen Sie die Breite der Minimap, um nur eine bestimmte Anzahl von Spalten zu rendern.\",\"Steuert den Abstand zwischen dem oberen Rand des Editors und der ersten Zeile.\",\"Steuert den Abstand zwischen dem unteren Rand des Editors und der letzten Zeile.\",\"Aktiviert ein Pop-up, das Dokumentation und Typ eines Parameters anzeigt w\\xE4hrend Sie tippen.\",\"Steuert, ob das Men\\xFC mit Parameterhinweisen zyklisch ist oder sich am Ende der Liste schlie\\xDFt.\",\"Schnelle Vorschl\\xE4ge werden im Vorschlagswidget angezeigt\",\"Schnelle Vorschl\\xE4ge werden als inaktiver Text angezeigt\",\"Schnelle Vorschl\\xE4ge sind deaktiviert\",\"Schnellvorschl\\xE4ge innerhalb von Zeichenfolgen aktivieren.\",\"Schnellvorschl\\xE4ge innerhalb von Kommentaren aktivieren.\",\"Schnellvorschl\\xE4ge au\\xDFerhalb von Zeichenfolgen und Kommentaren aktivieren.\",\"Steuert, ob Vorschl\\xE4ge w\\xE4hrend des Tippens automatisch angezeigt werden sollen. Dies kann bei der Eingabe von Kommentaren, Zeichenketten und anderem Code kontrolliert werden. Schnellvorschl\\xE4ge k\\xF6nnen so konfiguriert werden, dass sie als Geistertext oder mit dem Vorschlags-Widget angezeigt werden. Beachten Sie auch die '{0}'-Einstellung, die steuert, ob Vorschl\\xE4ge durch Sonderzeichen ausgel\\xF6st werden.\",\"Zeilennummern werden nicht dargestellt.\",\"Zeilennummern werden als absolute Zahl dargestellt.\",\"Zeilennummern werden als Abstand in Zeilen an Cursorposition dargestellt.\",\"Zeilennummern werden alle 10 Zeilen dargestellt.\",\"Steuert die Anzeige von Zeilennummern.\",\"Anzahl der Zeichen aus Festbreitenschriftarten, ab der dieses Editor-Lineal gerendert wird.\",\"Farbe dieses Editor-Lineals.\",\"Vertikale Linien nach einer bestimmten Anzahl von Monospacezeichen rendern. Verwenden Sie mehrere Werte f\\xFCr mehrere Linien. Wenn das Array leer ist, werden keine Linien gerendert.\",\"Die vertikale Bildlaufleiste wird nur bei Bedarf angezeigt.\",\"Die vertikale Bildlaufleiste ist immer sichtbar.\",\"Die vertikale Bildlaufleiste wird immer ausgeblendet.\",\"Steuert die Sichtbarkeit der vertikalen Bildlaufleiste.\",\"Die horizontale Bildlaufleiste wird nur bei Bedarf angezeigt.\",\"Die horizontale Bildlaufleiste ist immer sichtbar.\",\"Die horizontale Bildlaufleiste wird immer ausgeblendet.\",\"Steuert die Sichtbarkeit der horizontalen Bildlaufleiste.\",\"Die Breite der vertikalen Bildlaufleiste.\",\"Die H\\xF6he der horizontalen Bildlaufleiste.\",\"Steuert, ob Klicks nach Seite scrollen oder zur Klickposition springen.\",\"Legt fest, ob alle nicht einfachen ASCII-Zeichen hervorgehoben werden. Nur Zeichen zwischen U+0020 und U+007E, Tabulator, Zeilenvorschub und Wagenr\\xFCcklauf gelten als einfache ASCII-Zeichen.\",\"Legt fest, ob Zeichen, die nur als Platzhalter dienen oder \\xFCberhaupt keine Breite haben, hervorgehoben werden.\",\"Legt fest, ob Zeichen hervorgehoben werden, die mit einfachen ASCII-Zeichen verwechselt werden k\\xF6nnen, mit Ausnahme derjenigen, die im aktuellen Gebietsschema des Benutzers \\xFCblich sind.\",\"Steuert, ob Zeichen in Kommentaren auch mit Unicode-Hervorhebung versehen werden sollen.\",\"Steuert, ob Zeichen in Zeichenfolgen auch mit Unicode-Hervorhebung versehen werden sollen.\",\"Definiert zul\\xE4ssige Zeichen, die nicht hervorgehoben werden.\",\"Unicodezeichen, die in zul\\xE4ssigen Gebietsschemas \\xFCblich sind, werden nicht hervorgehoben.\",\"Steuert, ob Inline-Vorschl\\xE4ge automatisch im Editor angezeigt werden.\",\"Die Symbolleiste \\u201EInline-Vorschlag\\u201C anzeigen, wenn ein Inline-Vorschlag angezeigt wird.\",\"Die Symbolleiste \\u201EInline-Vorschlag\\u201C anzeigen, wenn Sie mit dem Mauszeiger auf einen Inline-Vorschlag zeigen.\",\"Steuert, wann die Inlinevorschlagssymbolleiste angezeigt werden soll.\",\"Steuert, wie Inlinevorschl\\xE4ge mit dem Vorschlagswidget interagieren. Wenn diese Option aktiviert ist, wird das Vorschlagswidget nicht automatisch angezeigt, wenn Inlinevorschl\\xE4ge verf\\xFCgbar sind.\",\"Steuert, ob die Klammerpaar-Farbgebung aktiviert ist oder nicht. Verwenden Sie {0}, um die Hervorhebungsfarben der Klammer zu \\xFCberschreiben.\",\"Steuert, ob jeder Klammertyp \\xFCber einen eigenen unabh\\xE4ngigen Farbpool verf\\xFCgt.\",\"Aktiviert Klammernpaarf\\xFChrungslinien.\",\"Aktiviert Klammernpaarf\\xFChrungslinien nur f\\xFCr das aktive Klammerpaar.\",\"Deaktiviert Klammernpaarf\\xFChrungslinien.\",\"Steuert, ob F\\xFChrungslinien f\\xFCr Klammerpaare aktiviert sind oder nicht.\",\"Aktiviert horizontale F\\xFChrungslinien als Erg\\xE4nzung zu vertikalen Klammernpaarf\\xFChrungslinien.\",\"Aktiviert horizontale F\\xFChrungslinien nur f\\xFCr das aktive Klammerpaar.\",\"Deaktiviert horizontale F\\xFChrungslinien f\\xFCr Klammernpaare.\",\"Steuert, ob horizontale F\\xFChrungslinien f\\xFCr Klammernpaare aktiviert sind oder nicht.\",\"Steuert, ob der Editor das aktive Klammerpaar hervorheben soll.\",\"Steuert, ob der Editor Einzugsf\\xFChrungslinien rendern soll.\",\"Hebt die aktive Einzugsf\\xFChrung hervor.\",\"Hebt die aktive Einzugshilfslinie hervor, selbst wenn Klammerhilfslinien hervorgehoben sind.\",\"Heben Sie die aktive Einzugshilfslinie nicht hervor.\",\"Steuert, ob der Editor die aktive Einzugsf\\xFChrungslinie hevorheben soll.\",\"Vorschlag einf\\xFCgen, ohne den Text auf der rechten Seite des Cursors zu \\xFCberschreiben\",\"Vorschlag einf\\xFCgen und Text auf der rechten Seite des Cursors \\xFCberschreiben\",\"Legt fest, ob W\\xF6rter beim Akzeptieren von Vervollst\\xE4ndigungen \\xFCberschrieben werden. Beachten Sie, dass dies von Erweiterungen abh\\xE4ngt, die f\\xFCr dieses Features aktiviert sind.\",\"Steuert, ob Filter- und Suchvorschl\\xE4ge geringf\\xFCgige Tippfehler ber\\xFCcksichtigen.\",\"Steuert, ob bei der Sortierung W\\xF6rter priorisiert werden, die in der N\\xE4he des Cursors stehen.\",'Steuert, ob gespeicherte Vorschlagauswahlen in verschiedenen Arbeitsbereichen und Fenstern gemeinsam verwendet werden (daf\\xFCr ist \"#editor.suggestSelection#\" erforderlich).',\"W\\xE4hlen Sie immer einen Vorschlag aus, wenn IntelliSense automatisch ausgel\\xF6st wird.\",\"W\\xE4hlen Sie niemals einen Vorschlag aus, wenn IntelliSense automatisch ausgel\\xF6st wird.\",\"W\\xE4hlen Sie einen Vorschlag nur aus, wenn IntelliSense aus einem Triggerzeichen ausgel\\xF6st wird.\",\"W\\xE4hlen Sie einen Vorschlag nur aus, wenn Sie IntelliSense w\\xE4hrend der Eingabe ausl\\xF6sen.\",'Steuert, ob ein Vorschlag ausgew\\xE4hlt wird, wenn das Widget angezeigt wird. Beachten Sie, dass dies nur f\\xFCr automatisch ausgel\\xF6ste Vorschl\\xE4ge gilt (\"#editor.quickSuggestions#\" und \"#editor.suggestOnTriggerCharacters#\"), und dass ein Vorschlag immer ausgew\\xE4hlt wird, wenn er explizit aufgerufen wird, z. B. \\xFCber STRG+LEERTASTE.','Steuert, ob ein aktiver Schnipsel verhindert, dass der Bereich \"Schnelle Vorschl\\xE4ge\" angezeigt wird.',\"Steuert, ob Symbole in Vorschl\\xE4gen ein- oder ausgeblendet werden.\",\"Steuert die Sichtbarkeit der Statusleiste unten im Vorschlagswidget.\",\"Steuert, ob das Ergebnis des Vorschlags im Editor in der Vorschau angezeigt werden soll.\",\"Steuert, ob Vorschlagsdetails inline mit der Bezeichnung oder nur im Detailwidget angezeigt werden.\",\"Diese Einstellung ist veraltet. Die Gr\\xF6\\xDFe des Vorschlagswidgets kann jetzt ge\\xE4ndert werden.\",'Diese Einstellung ist veraltet. Verwenden Sie stattdessen separate Einstellungen wie \"editor.suggest.showKeywords\" oder \"editor.suggest.showSnippets\".','Wenn aktiviert, zeigt IntelliSense \"method\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"funktions\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"constructor\"-Vorschl\\xE4ge an.',\"Wenn IntelliSense aktiviert ist, werden \\u201Everaltete\\u201C Vorschl\\xE4ge angezeigt.\",\"Wenn dies aktiviert ist, erfordert die IntelliSense-Filterung, dass das erste Zeichen mit einem Wortanfang \\xFCbereinstimmt, z.\\xA0B. \\u201Ec\\u201C in \\u201EConsole\\u201C oder \\u201EWebContext\\u201C, aber _nicht_ bei \\u201Edescription\\u201C. Wenn diese Option deaktiviert ist, zeigt IntelliSense mehr Ergebnisse an, sortiert sie aber weiterhin nach der \\xDCbereinstimmungsqualit\\xE4t.\",'Wenn aktiviert, zeigt IntelliSense \"field\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"variable\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"class\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"struct\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"interface\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"module\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"property\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"event\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"operator\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"unit\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"value\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"constant\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"enum\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"enumMember\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"keyword\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"text\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"color\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"file\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"reference\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"customcolor\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"folder\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"typeParameter\"-Vorschl\\xE4ge an.','Wenn aktiviert, zeigt IntelliSense \"snippet\"-Vorschl\\xE4ge an.',\"Wenn aktiviert, zeigt IntelliSense user-Vorschl\\xE4ge an.\",\"Wenn aktiviert, zeigt IntelliSense issues-Vorschl\\xE4ge an.\",\"Gibt an, ob f\\xFChrende und nachstehende Leerzeichen immer ausgew\\xE4hlt werden sollen.\",'Gibt an, ob Unterw\\xF6rter (z.\\xA0B. \"foo\" in \"fooBar\" oder \"foo_bar\") ausgew\\xE4hlt werden sollen.',\"Kein Einzug. Umbrochene Zeilen beginnen bei Spalte 1.\",\"Umbrochene Zeilen erhalten den gleichen Einzug wie das \\xFCbergeordnete Element.\",\"Umbrochene Zeilen erhalten + 1 Einzug auf das \\xFCbergeordnete Element.\",\"Umgebrochene Zeilen werden im Vergleich zum \\xFCbergeordneten Element +2 einger\\xFCckt.\",\"Steuert die Einr\\xFCckung der umbrochenen Zeilen.\",\"Steuert, ob Sie eine Datei in einen Editor ziehen und ablegen k\\xF6nnen, indem Sie die UMSCHALTTASTE gedr\\xFCckt halten (anstatt die Datei in einem Editor zu \\xF6ffnen).\",\"Steuert, ob beim Ablegen von Dateien im Editor ein Widget angezeigt wird. Mit diesem Widget k\\xF6nnen Sie steuern, wie die Datei ablegt wird.\",\"Zeigt das Widget f\\xFCr die Dropdownauswahl an, nachdem eine Datei im Editor abgelegt wurde.\",\"Das Widget f\\xFCr die Ablageauswahl wird nie angezeigt. Stattdessen wird immer der Standardablageanbieter verwendet.\",\"Steuert, ob Sie Inhalte auf unterschiedliche Weise einf\\xFCgen k\\xF6nnen.\",\"Steuert, ob beim Einf\\xFCgen von Inhalt im Editor ein Widget angezeigt wird. Mit diesem Widget k\\xF6nnen Sie steuern, wie die Datei eingef\\xFCgt wird.\",\"Das Widget f\\xFCr die Einf\\xFCgeauswahl anzeigen, nachdem der Inhalt in den Editor eingef\\xFCgt wurde.\",\"Das Widget f\\xFCr die Einf\\xFCgeauswahl wird nie angezeigt. Stattdessen wird immer das Standardeinf\\xFCgeverhalten verwendet.\",'Steuert, ob Vorschl\\xE4ge \\xFCber Commitzeichen angenommen werden sollen. In JavaScript kann ein Semikolon (\";\") beispielsweise ein Commitzeichen sein, das einen Vorschlag annimmt und dieses Zeichen eingibt.',\"Einen Vorschlag nur mit der EINGABETASTE akzeptieren, wenn dieser eine \\xC4nderung am Text vornimmt.\",\"Steuert, ob Vorschl\\xE4ge mit der EINGABETASTE (zus\\xE4tzlich zur TAB-Taste) akzeptiert werden sollen. Vermeidet Mehrdeutigkeit zwischen dem Einf\\xFCgen neuer Zeilen oder dem Annehmen von Vorschl\\xE4gen.\",\"Steuert die Anzahl von Zeilen im Editor, die von einer Sprachausgabe in einem Arbeitsschritt gelesen werden k\\xF6nnen. Wenn eine Sprachausgabe erkannt wird, wird der Standardwert automatisch auf 500 festgelegt. Warnung: Ein Wert h\\xF6her als der Standardwert, kann sich auf die Leistung auswirken.\",\"Editor-Inhalt\",\"Steuern Sie, ob Inlinevorschl\\xE4ge von einer Sprachausgabe angek\\xFCndigt werden.\",\"Verwenden Sie Sprachkonfigurationen, um zu bestimmen, wann Klammern automatisch geschlossen werden sollen.\",\"Schlie\\xDFe Klammern nur automatisch, wenn der Cursor sich links von einem Leerzeichen befindet.\",\"Steuert, ob der Editor automatisch Klammern schlie\\xDFen soll, nachdem der Benutzer eine \\xF6ffnende Klammer hinzugef\\xFCgt hat.\",\"Angrenzende schlie\\xDFende Anf\\xFChrungszeichen oder Klammern werden nur \\xFCberschrieben, wenn sie automatisch eingef\\xFCgt wurden.\",\"Steuert, ob der Editor angrenzende schlie\\xDFende Anf\\xFChrungszeichen oder Klammern beim L\\xF6schen entfernen soll.\",\"Schlie\\xDFende Anf\\xFChrungszeichen oder Klammern werden nur \\xFCberschrieben, wenn sie automatisch eingef\\xFCgt wurden.\",\"Steuert, ob der Editor schlie\\xDFende Anf\\xFChrungszeichen oder Klammern \\xFCberschreiben soll.\",\"Verwende die Sprachkonfiguration, um zu ermitteln, wann Anf\\xFChrungsstriche automatisch geschlossen werden.\",\"Schlie\\xDFende Anf\\xFChrungszeichen nur dann automatisch erg\\xE4nzen, wenn der Cursor sich links von einem Leerzeichen befindet.\",\"Steuert, ob der Editor Anf\\xFChrungszeichen automatisch schlie\\xDFen soll, nachdem der Benutzer ein \\xF6ffnendes Anf\\xFChrungszeichen hinzugef\\xFCgt hat.\",\"Der Editor f\\xFCgt den Einzug nicht automatisch ein.\",\"Der Editor beh\\xE4lt den Einzug der aktuellen Zeile bei.\",\"Der Editor beh\\xE4lt den in der aktuellen Zeile definierten Einzug bei und beachtet f\\xFCr Sprachen definierte Klammern.\",\"Der Editor beh\\xE4lt den Einzug der aktuellen Zeile bei, beachtet von Sprachen definierte Klammern und ruft spezielle onEnterRules-Regeln auf, die von Sprachen definiert wurden.\",\"Der Editor beh\\xE4lt den Einzug der aktuellen Zeile bei, beachtet die von Sprachen definierten Klammern, ruft von Sprachen definierte spezielle onEnterRules-Regeln auf und beachtet von Sprachen definierte indentationRules-Regeln.\",\"Legt fest, ob der Editor den Einzug automatisch anpassen soll, wenn Benutzer Zeilen eingeben, einf\\xFCgen, verschieben oder einr\\xFCcken\",\"Sprachkonfigurationen verwenden, um zu bestimmen, wann eine Auswahl automatisch umschlossen werden soll.\",\"Mit Anf\\xFChrungszeichen, nicht mit Klammern umschlie\\xDFen.\",\"Mit Klammern, nicht mit Anf\\xFChrungszeichen umschlie\\xDFen.\",\"Steuert, ob der Editor die Auswahl beim Eingeben von Anf\\xFChrungszeichen oder Klammern automatisch umschlie\\xDFt.\",\"Emuliert das Auswahlverhalten von Tabstoppzeichen, wenn Leerzeichen f\\xFCr den Einzug verwendet werden. Die Auswahl wird an Tabstopps ausgerichtet.\",\"Steuert, ob der Editor CodeLens anzeigt.\",\"Steuert die Schriftfamilie f\\xFCr CodeLens.\",\"Steuert den Schriftgrad in Pixeln f\\xFCr CodeLens. Bei Festlegung auf \\u201E0, 90\\xA0% von \\u201E#editor.fontSize#\\u201C verwendet.\",\"Steuert, ob der Editor die Inline-Farbdecorators und die Farbauswahl rendern soll.\",\"Farbauswahl sowohl beim Klicken als auch beim Daraufzeigen des Farbdekorators anzeigen\",\"Farbauswahl beim Draufzeigen auf den Farbdekorator anzeigen\",\"Farbauswahl beim Klicken auf den Farbdekorator anzeigen\",\"Steuert die Bedingung, damit eine Farbauswahl aus einem Farbdekorator angezeigt wird.\",\"Steuert die maximale Anzahl von Farb-Decorators, die in einem Editor gleichzeitig gerendert werden k\\xF6nnen.\",\"Zulassen, dass die Auswahl per Maus und Tasten die Spaltenauswahl durchf\\xFChrt.\",\"Steuert, ob Syntax-Highlighting in die Zwischenablage kopiert wird.\",\"Steuert den Cursoranimationsstil.\",\"Die Smooth Caret-Animation ist deaktiviert.\",\"Die Smooth Caret-Animation ist nur aktiviert, wenn der Benutzer den Cursor mit einer expliziten Geste bewegt.\",\"Die Smooth Caret-Animation ist immer aktiviert.\",\"Steuert, ob die weiche Cursoranimation aktiviert werden soll.\",\"Steuert den Cursor-Stil.\",\"Steuert die Mindestanzahl sichtbarer f\\xFChrender Zeilen\\xA0(mindestens\\xA00) und nachfolgender Zeilen\\xA0(mindestens\\xA01) um den Cursor. Dies wird in einigen anderen Editoren als \\u201EscrollOff\\u201C oder \\u201EscrollOffset\\u201C bezeichnet.\",'\"cursorSurroundingLines\" wird nur erzwungen, wenn die Ausl\\xF6sung \\xFCber die Tastatur oder API erfolgt.','\"cursorSurroundingLines\" wird immer erzwungen.',\"Legt fest, wann cursorSurroundingLines erzwungen werden soll\",\"Steuert die Breite des Cursors, wenn `#editor.cursorStyle#` auf `line` festgelegt ist.\",\"Steuert, ob der Editor das Verschieben einer Auswahl per Drag and Drop zul\\xE4sst.\",\"Verwenden Sie eine neue Rendering-Methode mit SVGs.\",\"Verwenden Sie eine neue Rendering-Methode mit Schriftartzeichen.\",\"Verwenden Sie die stabile Rendering-Methode.\",\"Steuert, ob Leerzeichen mit einer neuen experimentellen Methode gerendert werden.\",\"Multiplikator f\\xFCr Scrollgeschwindigkeit bei Dr\\xFCcken von ALT.\",\"Steuert, ob Codefaltung im Editor aktiviert ist.\",\"Verwenden Sie eine sprachspezifische Faltstrategie, falls verf\\xFCgbar. Andernfalls wird eine einzugsbasierte verwendet.\",\"Einzugsbasierte Faltstrategie verwenden.\",\"Steuert die Strategie f\\xFCr die Berechnung von Faltbereichen.\",\"Steuert, ob der Editor eingefaltete Bereiche hervorheben soll.\",\"Steuert, ob der Editor Importbereiche automatisch reduziert.\",\"Die maximale Anzahl von faltbaren Regionen. Eine Erh\\xF6hung dieses Werts kann dazu f\\xFChren, dass der Editor weniger reaktionsf\\xE4hig wird, wenn die aktuelle Quelle eine gro\\xDFe Anzahl von faltbaren Regionen aufweist.\",\"Steuert, ob eine Zeile aufgefaltet wird, wenn nach einer gefalteten Zeile auf den leeren Inhalt geklickt wird.\",\"Steuert die Schriftfamilie.\",\"Steuert, ob der Editor den eingef\\xFCgten Inhalt automatisch formatieren soll. Es muss ein Formatierer vorhanden sein, der in der Lage ist, auch Dokumentbereiche zu formatieren.\",\"Steuert, ob der Editor die Zeile nach der Eingabe automatisch formatieren soll.\",\"Steuert, ob der Editor den vertikalen Glyphenrand rendert. Der Glyphenrand wird haupts\\xE4chlich zum Debuggen verwendet.\",\"Steuert, ob der Cursor im \\xDCbersichtslineal ausgeblendet werden soll.\",\"Legt den Abstand der Buchstaben in Pixeln fest.\",\"Steuert, ob die verkn\\xFCpfte Bearbeitung im Editor aktiviert ist. Abh\\xE4ngig von der Sprache werden zugeh\\xF6rige Symbole, z.\\xA0B. HTML-Tags, w\\xE4hrend der Bearbeitung aktualisiert.\",\"Steuert, ob der Editor Links erkennen und anklickbar machen soll.\",\"Passende Klammern hervorheben\",'Ein Multiplikator, der f\\xFCr die Mausrad-Bildlaufereignisse \"deltaX\" und \"deltaY\" verwendet werden soll.',\"Schriftart des Editors vergr\\xF6\\xDFern, wenn das Mausrad verwendet und die STRG-TASTE gedr\\xFCckt wird.\",\"Mehrere Cursor zusammenf\\xFChren, wenn sie sich \\xFCberlappen.\",\"Ist unter Windows und Linux der STRG-Taste und unter macOS der Befehlstaste zugeordnet.\",\"Ist unter Windows und Linux der ALT-Taste und unter macOS der Wahltaste zugeordnet.\",'Der Modifizierer, der zum Hinzuf\\xFCgen mehrerer Cursor mit der Maus verwendet werden soll. Die Mausgesten \"Gehe zu Definition\" und \"Link \\xF6ffnen\" werden so angepasst, dass sie nicht mit dem [Multicursormodifizierer](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-Modifizierer) in Konflikt stehen.',\"Jeder Cursor f\\xFCgt eine Textzeile ein.\",\"Jeder Cursor f\\xFCgt den vollst\\xE4ndigen Text ein.\",\"Steuert das Einf\\xFCgen, wenn die Zeilenanzahl des Einf\\xFCgetexts der Cursor-Anzahl entspricht.\",\"Steuert die maximale Anzahl von Cursorn, die sich gleichzeitig in einem aktiven Editor befindet.\",\"Steuert, ob der Editor das Vorkommen semantischer Symbole hervorheben soll.\",\"Steuert, ob um das \\xDCbersichtslineal ein Rahmen gezeichnet werden soll.\",\"Struktur beim \\xD6ffnen des Peek-Editors fokussieren\",\"Editor fokussieren, wenn Sie den Peek-Editor \\xF6ffnen\",\"Steuert, ob der Inline-Editor oder die Struktur im Peek-Widget fokussiert werden soll.\",'Steuert, ob die Mausgeste \"Gehe zu Definition\" immer das Vorschauwidget \\xF6ffnet.',\"Steuert die Verz\\xF6gerung in Millisekunden nach der Schnellvorschl\\xE4ge angezeigt werden.\",\"Steuert, ob der Editor bei Eingabe automatisch eine Umbenennung vornimmt.\",'Veraltet. Verwenden Sie stattdessen \"editor.linkedEditing\".',\"Steuert, ob der Editor Steuerzeichen rendern soll.\",\"Letzte Zeilennummer rendern, wenn die Datei mit einem Zeilenumbruch endet.\",\"Hebt den Bundsteg und die aktuelle Zeile hervor.\",\"Steuert, wie der Editor die aktuelle Zeilenhervorhebung rendern soll.\",\"Steuert, ob der Editor die aktuelle Zeilenhervorhebung nur dann rendern soll, wenn der Fokus auf dem Editor liegt.\",\"Leerraumzeichen werden gerendert mit Ausnahme der einzelnen Leerzeichen zwischen W\\xF6rtern.\",\"Hiermit werden Leerraumzeichen nur f\\xFCr ausgew\\xE4hlten Text gerendert.\",\"Nur nachstehende Leerzeichen rendern\",\"Steuert, wie der Editor Leerzeichen rendern soll.\",\"Steuert, ob eine Auswahl abgerundete Ecken aufweisen soll.\",\"Steuert die Anzahl der zus\\xE4tzlichen Zeichen, nach denen der Editor horizontal scrollt.\",\"Steuert, ob der Editor jenseits der letzten Zeile scrollen wird.\",\"Nur entlang der vorherrschenden Achse scrollen, wenn gleichzeitig vertikal und horizontal gescrollt wird. Dadurch wird ein horizontaler Versatz beim vertikalen Scrollen auf einem Trackpad verhindert.\",\"Steuert, ob die prim\\xE4re Linux-Zwischenablage unterst\\xFCtzt werden soll.\",\"Steuert, ob der Editor \\xDCbereinstimmungen hervorheben soll, die der Auswahl \\xE4hneln.\",\"Steuerelemente f\\xFCr die Codefaltung immer anzeigen.\",\"Zeigen Sie niemals die Faltungssteuerelemente an, und verringern Sie die Gr\\xF6\\xDFe des Bundstegs.\",\"Steuerelemente f\\xFCr die Codefaltung nur anzeigen, wenn sich die Maus \\xFCber dem Bundsteg befindet.\",\"Steuert, wann die Steuerungselemente f\\xFCr die Codefaltung am Bundsteg angezeigt werden.\",\"Steuert das Ausblenden von nicht verwendetem Code.\",\"Steuert durchgestrichene veraltete Variablen.\",\"Zeige Schnipselvorschl\\xE4ge \\xFCber den anderen Vorschl\\xE4gen.\",\"Schnipselvorschl\\xE4ge unter anderen Vorschl\\xE4gen anzeigen.\",\"Zeige Schnipselvorschl\\xE4ge mit anderen Vorschl\\xE4gen.\",\"Keine Schnipselvorschl\\xE4ge anzeigen.\",\"Steuert, ob Codeschnipsel mit anderen Vorschl\\xE4gen angezeigt und wie diese sortiert werden.\",\"Legt fest, ob der Editor Bildl\\xE4ufe animiert ausf\\xFChrt.\",\"Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\",\"Schriftgrad f\\xFCr das Vorschlagswidget. Bei Festlegung auf {0} wird der Wert von {1} verwendet.\",\"Zeilenh\\xF6he f\\xFCr das Vorschlagswidget. Bei Festlegung auf {0} wird der Wert von {1} verwendet. Der Mindestwert ist 8.\",\"Steuert, ob Vorschl\\xE4ge automatisch angezeigt werden sollen, wenn Triggerzeichen eingegeben werden.\",\"Immer den ersten Vorschlag ausw\\xE4hlen.\",'W\\xE4hlen Sie die aktuellsten Vorschl\\xE4ge aus, es sei denn, es wird ein Vorschlag durch eine weitere Eingabe ausgew\\xE4hlt, z.B. \"console.| -> console.log\", weil \"log\" vor Kurzem abgeschlossen wurde.','W\\xE4hlen Sie Vorschl\\xE4ge basierend auf fr\\xFCheren Pr\\xE4fixen aus, die diese Vorschl\\xE4ge abgeschlossen haben, z.B. \"co -> console\" und \"con ->\" const\".',\"Steuert, wie Vorschl\\xE4ge bei Anzeige der Vorschlagsliste vorab ausgew\\xE4hlt werden.\",\"Die Tab-Vervollst\\xE4ndigung f\\xFCgt den passendsten Vorschlag ein, wenn auf Tab gedr\\xFCckt wird.\",\"Tab-Vervollst\\xE4ndigungen deaktivieren.\",'Codeschnipsel per Tab vervollst\\xE4ndigen, wenn die Pr\\xE4fixe \\xFCbereinstimmen. Funktioniert am besten, wenn \"quickSuggestions\" deaktiviert sind.',\"Tab-Vervollst\\xE4ndigungen aktivieren.\",\"Ungew\\xF6hnliche Zeilenabschlusszeichen werden automatisch entfernt.\",\"Ungew\\xF6hnliche Zeilenabschlusszeichen werden ignoriert.\",\"Zum Entfernen ungew\\xF6hnlicher Zeilenabschlusszeichen wird eine Eingabeaufforderung angezeigt.\",\"Entfernen Sie un\\xFCbliche Zeilenabschlusszeichen, die Probleme verursachen k\\xF6nnen.\",\"Das Einf\\xFCgen und L\\xF6schen von Leerzeichen erfolgt nach Tabstopps.\",\"Verwenden Sie die Standardregel f\\xFCr Zeilenumbr\\xFCche.\",\"Trennstellen d\\xFCrfen nicht f\\xFCr Texte in Chinesisch/Japanisch/Koreanisch (CJK) verwendet werden. Das Verhalten von Nicht-CJK-Texten ist mit dem f\\xFCr normales Verhalten identisch.\",\"Steuert die Regeln f\\xFCr Trennstellen, die f\\xFCr Texte in Chinesisch/Japanisch/Koreanisch (CJK) verwendet werden.\",\"Zeichen, die als Worttrennzeichen verwendet werden, wenn wortbezogene Navigationen oder Vorg\\xE4nge ausgef\\xFChrt werden.\",\"Zeilenumbr\\xFCche erfolgen nie.\",\"Der Zeilenumbruch erfolgt an der Breite des Anzeigebereichs.\",'Der Zeilenumbruch erfolgt bei \"#editor.wordWrapColumn#\".','Der Zeilenumbruch erfolgt beim Mindestanzeigebereich und \"#editor.wordWrapColumn\".',\"Steuert, wie der Zeilenumbruch durchgef\\xFChrt werden soll.\",'Steuert die umschlie\\xDFende Spalte des Editors, wenn \"#editor.wordWrap#\" den Wert \"wordWrapColumn\" oder \"bounded\" aufweist.',\"Steuert, ob Inlinefarbdekorationen mithilfe des Standard-Dokumentfarbanbieters angezeigt werden sollen.\",\"Steuert, ob der Editor Registerkarten empf\\xE4ngt oder zur Navigation zur Workbench zur\\xFCckgibt.\"],\"vs/editor/common/core/editorColorRegistry\":[\"Hintergrundfarbe zur Hervorhebung der Zeile an der Cursorposition.\",\"Hintergrundfarbe f\\xFCr den Rahmen um die Zeile an der Cursorposition.\",\"Hintergrundfarbe der markierten Bereiche, wie z.B. Quick Open oder die Suche. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Hintergrundfarbe f\\xFCr den Rahmen um hervorgehobene Bereiche.\",'Hintergrundfarbe des hervorgehobenen Symbols, z. B. \"Gehe zu Definition\" oder \"Gehe zu n\\xE4chster/vorheriger\". Die Farbe darf nicht undurchsichtig sein, um zugrunde liegende Dekorationen nicht zu verbergen.',\"Hintergrundfarbe des Rahmens um hervorgehobene Symbole\",\"Farbe des Cursors im Editor.\",\"Hintergrundfarbe vom Editor-Cursor. Erlaubt die Anpassung der Farbe von einem Zeichen, welches von einem Block-Cursor \\xFCberdeckt wird.\",\"Farbe der Leerzeichen im Editor.\",\"Zeilennummernfarbe im Editor.\",\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im Editor.\",'\"editorIndentGuide.background\" ist veraltet. Verwenden Sie stattdessen \"editorIndentGuide.background1\".',\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im aktiven Editor.\",'\"editorIndentGuide.activeBackground\" ist veraltet. Verwenden Sie stattdessen \"editorIndentGuide.activeBackground1\".',\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im Editor (1).\",\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im Editor (2).\",\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im Editor (3).\",\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im Editor (4).\",\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im Editor (5).\",\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im Editor (6).\",\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im aktiven Editor (1).\",\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im aktiven Editor (2).\",\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im aktiven Editor (3).\",\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im aktiven Editor (4).\",\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im aktiven Editor (5).\",\"Farbe der F\\xFChrungslinien f\\xFCr Einz\\xFCge im aktiven Editor (6).\",\"Zeilennummernfarbe der aktiven Editorzeile.\",'Die ID ist veraltet. Verwenden Sie stattdessen \"editorLineNumber.activeForeground\".',\"Zeilennummernfarbe der aktiven Editorzeile.\",\"Die Farbe der letzten Editor-Zeile, wenn \\u201Eeditor.renderFinalNewline\\u201C auf \\u201Eabgeblendet\\u201C festgelegt ist.\",\"Farbe des Editor-Lineals.\",\"Vordergrundfarbe der CodeLens-Links im Editor\",\"Hintergrundfarbe f\\xFCr zusammengeh\\xF6rige Klammern\",\"Farbe f\\xFCr zusammengeh\\xF6rige Klammern\",\"Farbe des Rahmens f\\xFCr das \\xDCbersicht-Lineal.\",\"Hintergrundfarbe des Editor-\\xDCbersichtslineals.\",\"Hintergrundfarbe der Editorleiste. Die Leiste enth\\xE4lt die Glyphenr\\xE4nder und die Zeilennummern.\",\"Rahmenfarbe unn\\xF6tigen (nicht genutzten) Quellcodes im Editor.\",'Deckkraft des unn\\xF6tigen (nicht genutzten) Quellcodes im Editor. \"#000000c0\" rendert z.B. den Code mit einer Deckkraft von 75%. Verwenden Sie f\\xFCr Designs mit hohem Kontrast das Farbdesign \"editorUnnecessaryCode.border\", um unn\\xF6tigen Code zu unterstreichen statt ihn abzublenden.',\"Rahmenfarbe des Ghost-Texts im Editor.\",\"Vordergrundfarbe des Ghost-Texts im Editor.\",\"Hintergrundfarbe des Ghost-Texts im Editor.\",\"\\xDCbersichtslinealmarkerfarbe f\\xFCr das Hervorheben von Bereichen. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"\\xDCbersichtslineal-Markierungsfarbe f\\xFCr Fehler.\",\"\\xDCbersichtslineal-Markierungsfarbe f\\xFCr Warnungen.\",\"\\xDCbersichtslineal-Markierungsfarbe f\\xFCr Informationen.\",\"Vordergrundfarbe der Klammern (1). Erfordert die Aktivierung der Farbgebung des Klammerpaars.\",\"Vordergrundfarbe der Klammern (2). Erfordert die Aktivierung der Farbgebung des Klammerpaars.\",\"Vordergrundfarbe der Klammern (3). Erfordert die Aktivierung der Farbgebung des Klammerpaars.\",\"Vordergrundfarbe der Klammern (4). Erfordert die Aktivierung der Farbgebung des Klammerpaars.\",\"Vordergrundfarbe der Klammern (5). Erfordert die Aktivierung der Farbgebung des Klammerpaars.\",\"Vordergrundfarbe der Klammern (6). Erfordert die Aktivierung der Farbgebung des Klammerpaars.\",\"Vordergrundfarbe der unerwarteten Klammern.\",\"Hintergrundfarbe der inaktiven Klammerpaar-Hilfslinien (1). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.\",\"Hintergrundfarbe der inaktiven Klammerpaar-Hilfslinien (2). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.\",\"Hintergrundfarbe der inaktiven Klammerpaar-Hilfslinien (3). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.\",\"Hintergrundfarbe der inaktiven Klammerpaar-Hilfslinien (4). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.\",\"Hintergrundfarbe der inaktiven Klammerpaar-Hilfslinien (5). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.\",\"Hintergrundfarbe der inaktiven Klammerpaar-Hilfslinien (6). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.\",\"Hintergrundfarbe der aktiven Klammerpaar-Hilfslinien (1). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.\",\"Hintergrundfarbe der aktiven Klammerpaar-Hilfslinien (2). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.\",\"Hintergrundfarbe der aktiven Klammerpaar-Hilfslinien (3). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.\",\"Hintergrundfarbe der aktiven Klammerpaar-Hilfslinien (4). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.\",\"Hintergrundfarbe der aktiven Klammerpaar-Hilfslinien (5). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.\",\"Hintergrundfarbe der aktiven Klammerpaar-Hilfslinien (6). Erfordert das Aktivieren von Klammerpaar-Hilfslinien.\",\"Rahmenfarbe, die zum Hervorheben von Unicode-Zeichen verwendet wird.\",\"Hintergrundfarbe, die zum Hervorheben von Unicode-Zeichen verwendet wird.\"],\"vs/editor/common/editorContextKeys\":[\"Gibt an, ob der Editor-Text den Fokus besitzt (Cursor blinkt).\",\"Gibt an, ob der Editor oder ein Editor-Widget den Fokus besitzt (z.\\xA0B. ob der Fokus sich im Suchwidget befindet).\",\"Gibt an, ob ein Editor oder eine Rich-Text-Eingabe den Fokus besitzt (Cursor blinkt).\",\"Gibt an, ob der Editor schreibgesch\\xFCtzt ist\",\"Gibt an, ob der Kontext ein Diff-Editor ist.\",\"Gibt an, ob der Kontext ein eingebetteter Diff-Editor ist.\",\"Whether a moved code block is selected for comparison\",\"Gibt an, ob der barrierefreie Diff-Viewer sichtbar ist.\",\"Whether the diff editor render side by side inline breakpoint is reached\",'Gibt an, ob \"editor.columnSelection\" aktiviert ist.',\"Gibt an, ob im Editor Text ausgew\\xE4hlt ist.\",\"Gibt an, ob der Editor \\xFCber Mehrfachauswahl verf\\xFCgt.\",\"Gibt an, ob die TAB-TASTE den Fokus aus dem Editor verschiebt.\",\"Gibt an, ob Hover im Editor sichtbar ist.\",\"Gibt an, ob Daraufzeigen im Editor fokussiert ist.\",\"Gibt an, ob der Fokus auf dem Fixierten Bildlauf liegt.\",\"Gibt an, ob der Fixierte Bildlauf sichtbar ist.\",\"Gibt an, ob der eigenst\\xE4ndige Farbw\\xE4hler sichtbar ist.\",\"Gibt an, ob der eigenst\\xE4ndige Farbw\\xE4hler fokussiert ist.\",\"Gibt an, ob der Editor Bestandteil eines gr\\xF6\\xDFeren Editors ist (z.\\xA0B. Notebooks).\",\"Der Sprachbezeichner des Editors.\",\"Gibt an, ob der Editor \\xFCber einen Vervollst\\xE4ndigungselementanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Codeaktionsanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen CodeLens-Anbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Definitionsanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Deklarationsanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Implementierungsanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Typdefinitionsanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Hoveranbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Dokumenthervorhebungsanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Dokumentsymbolanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Verweisanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Umbenennungsanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Signaturhilfeanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Inlinehinweisanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Dokumentformatierungsanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber einen Anbieter f\\xFCr Dokumentauswahlformatierung verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber mehrere Dokumentformatierungsanbieter verf\\xFCgt.\",\"Gibt an, ob der Editor \\xFCber mehrere Anbieter f\\xFCr Dokumentauswahlformatierung verf\\xFCgt.\"],\"vs/editor/common/languages\":[\"Array\",\"Boolescher Wert\",\"Klasse\",\"Konstante\",\"Konstruktor\",\"Enumeration\",\"Enumerationsmember\",\"Ereignis\",\"Feld\",\"Datei\",\"Funktion\",\"Schnittstelle\",\"Schl\\xFCssel\",\"Methode\",\"Modul\",\"Namespace\",\"NULL\",\"Zahl\",\"Objekt\",\"Operator\",\"Paket\",\"Eigenschaft\",\"Zeichenfolge\",\"Struktur\",\"Typparameter\",\"Variable\",\"{0} ({1})\"],\"vs/editor/common/languages/modesRegistry\":[\"Nur-Text\"],\"vs/editor/common/model/editStack\":[\"Eingabe\"],\"vs/editor/common/standaloneStrings\":[\"Entwickler: Token \\xFCberpr\\xFCfen\",\"Gehe zu Zeile/Spalte...\",\"Alle Anbieter f\\xFCr den Schnellzugriff anzeigen\",\"Befehlspalette\",\"Befehle anzeigen und ausf\\xFChren\",\"Gehe zu Symbol...\",\"Gehe zu Symbol nach Kategorie...\",\"Editor-Inhalt\",\"Dr\\xFCcken Sie ALT + F1, um die Barrierefreiheitsoptionen aufzurufen.\",\"Zu Design mit hohem Kontrast umschalten\",\"{0} Bearbeitungen in {1} Dateien durchgef\\xFChrt\"],\"vs/editor/common/viewLayout/viewLineRenderer\":[\"Mehr anzeigen ({0})\",\"{0} Zeichen\"],\"vs/editor/contrib/anchorSelect/browser/anchorSelect\":[\"Auswahlanker\",'Anker festgelegt bei \"{0}:{1}\"',\"Auswahlanker festlegen\",\"Zu Auswahlanker wechseln\",\"Auswahl von Anker zu Cursor\",\"Auswahlanker abbrechen\"],\"vs/editor/contrib/bracketMatching/browser/bracketMatching\":[\"\\xDCbersichtslineal-Markierungsfarbe f\\xFCr zusammengeh\\xF6rige Klammern.\",\"Gehe zu Klammer\",\"Ausw\\xE4hlen bis Klammer\",\"Klammern entfernen\",\"Gehe zu &&Klammer\"],\"vs/editor/contrib/caretOperations/browser/caretOperations\":[\"Ausgew\\xE4hlten Text nach links verschieben\",\"Ausgew\\xE4hlten Text nach rechts verschieben\"],\"vs/editor/contrib/caretOperations/browser/transpose\":[\"Buchstaben austauschen\"],\"vs/editor/contrib/clipboard/browser/clipboard\":[\"&&Ausschneiden\",\"Ausschneiden\",\"Ausschneiden\",\"Ausschneiden\",\"&&Kopieren\",\"Kopieren\",\"Kopieren\",\"Kopieren\",\"Kopieren als\",\"Kopieren als\",\"Freigeben\",\"Freigeben\",\"Freigeben\",\"&&Einf\\xFCgen\",\"Einf\\xFCgen\",\"Einf\\xFCgen\",\"Einf\\xFCgen\",\"Mit Syntaxhervorhebung kopieren\"],\"vs/editor/contrib/codeAction/browser/codeAction\":[\"Beim Anwenden der Code-Aktion ist ein unbekannter Fehler aufgetreten\"],\"vs/editor/contrib/codeAction/browser/codeActionCommands\":[\"Art der auszuf\\xFChrenden Codeaktion\",\"Legt fest, wann die zur\\xFCckgegebenen Aktionen angewendet werden\",\"Die erste zur\\xFCckgegebene Codeaktion immer anwenden\",\"Die erste zur\\xFCckgegebene Codeaktion anwenden, wenn nur eine vorhanden ist\",\"Zur\\xFCckgegebene Codeaktionen nicht anwenden\",\"Legt fest, ob nur bevorzugte Codeaktionen zur\\xFCckgegeben werden sollen\",\"Schnelle Problembehebung ...\",\"Keine Codeaktionen verf\\xFCgbar\",'Keine bevorzugten Codeaktionen f\\xFCr \"{0}\" verf\\xFCgbar','Keine Codeaktionen f\\xFCr \"{0}\" verf\\xFCgbar',\"Keine bevorzugten Codeaktionen verf\\xFCgbar\",\"Keine Codeaktionen verf\\xFCgbar\",\"Refactoring durchf\\xFChren...\",'Keine bevorzugten Refactorings f\\xFCr \"{0}\" verf\\xFCgbar','Keine Refactorings f\\xFCr \"{0}\" verf\\xFCgbar',\"Keine bevorzugten Refactorings verf\\xFCgbar\",\"Keine Refactorings verf\\xFCgbar\",\"Quellaktion...\",'Keine bevorzugten Quellaktionen f\\xFCr \"{0}\" verf\\xFCgbar','Keine Quellaktionen f\\xFCr \"{0}\" verf\\xFCgbar',\"Keine bevorzugten Quellaktionen verf\\xFCgbar\",\"Keine Quellaktionen verf\\xFCgbar\",\"Importe organisieren\",\"Keine Aktion zum Organisieren von Importen verf\\xFCgbar\",\"Alle korrigieren\",'Aktion \"Alle korrigieren\" nicht verf\\xFCgbar',\"Automatisch korrigieren...\",\"Keine automatischen Korrekturen verf\\xFCgbar\"],\"vs/editor/contrib/codeAction/browser/codeActionContributions\":[\"Aktivieren/Deaktivieren Sie die Anzeige von Gruppenheadern im Codeaktionsmen\\xFC.\"],\"vs/editor/contrib/codeAction/browser/codeActionController\":[\"Deaktivierte Elemente ausblenden\",\"Deaktivierte Elemente anzeigen\"],\"vs/editor/contrib/codeAction/browser/codeActionMenu\":[\"Weitere Aktionen...\",\"Schnelle Problembehebung...\",\"Extrahieren...\",\"Inline...\",\"Erneut generieren...\",\"Verschieben...\",\"Umgeben mit...\",\"Quellaktion...\"],\"vs/editor/contrib/codeAction/browser/lightBulbWidget\":[\"Zeigt Codeaktionen an. Bevorzugte Schnellkorrektur verf\\xFCgbar ({0})\",\"Codeaktionen anzeigen ({0})\",\"Codeaktionen anzeigen\"],\"vs/editor/contrib/codelens/browser/codelensController\":[\"CodeLens-Befehle f\\xFCr aktuelle Zeile anzeigen\"],\"vs/editor/contrib/colorPicker/browser/colorPickerWidget\":[\"Zum Umschalten zwischen Farboptionen (rgb/hsl/hex) klicken\",\"Symbol zum Schlie\\xDFen des Farbw\\xE4hlers\"],\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\":[\"Eigenst\\xE4ndige Farbw\\xE4hler anzeigen oder konzentrieren\",\"&&Eigenst\\xE4ndige Farbw\\xE4hler anzeigen oder fokussieren\",\"Farbw\\xE4hler ausblenden\",\"Farbe mit eigenst\\xE4ndigem Farbw\\xE4hler einf\\xFCgen\"],\"vs/editor/contrib/comment/browser/comment\":[\"Zeilenkommentar umschalten\",\"Zeilenkommen&&tar umschalten\",\"Zeilenkommentar hinzuf\\xFCgen\",\"Zeilenkommentar entfernen\",\"Blockkommentar umschalten\",\"&&Blockkommentar umschalten\"],\"vs/editor/contrib/contextmenu/browser/contextmenu\":[\"Minimap\",\"Zeichen rendern\",\"Vertikale Gr\\xF6\\xDFe\",\"Proportional\",\"Ausf\\xFCllen\",\"Anpassen\",\"Schieberegler\",\"Maus \\xFCber\",\"Immer\",\"Editor-Kontextmen\\xFC anzeigen\"],\"vs/editor/contrib/cursorUndo/browser/cursorUndo\":[\"Mit Cursor r\\xFCckg\\xE4ngig machen\",\"Wiederholen mit Cursor\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\":[\"Einf\\xFCgen als...\",\"Die ID der Einf\\xFCgebearbeitung, die angewendet werden soll. Wenn keine Angabe erfolgt, zeigt der Editor eine Auswahl an.\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\":[\"Gibt an, ob das Einf\\xFCgewidget angezeigt wird.\",\"Einf\\xFCgeoptionen anzeigen...\",\"Einf\\xFCgehandler werden ausgef\\xFChrt. Klicken Sie hier, um den Vorgang abzubrechen.\",\"Einf\\xFCgeaktion ausw\\xE4hlen\",\"Einf\\xFCgehandler werden ausgef\\xFChrt\"],\"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\":[\"Integriert\",\"Nur-Text einf\\xFCgen\",\"URI einf\\xFCgen\",\"URI einf\\xFCgen\",\"Pfade einf\\xFCgen\",\"Pfad einf\\xFCgen\",\"Relative Pfade einf\\xFCgen\",\"Relativen Pfad einf\\xFCgen\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\":[\"Configures the default drop provider to use for content of a given mime type.\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\":[\"Gibt an, ob das Ablagewidget angezeigt wird.\",\"Ablageoptionen anzeigen...\",\"Drophandler werden ausgef\\xFChrt. Klicken Sie hier, um den Vorgang abzubrechen.\"],\"vs/editor/contrib/editorState/browser/keybindingCancellation\":['Gibt an, ob der Editor einen abbrechbaren Vorgang ausf\\xFChrt, z.\\xA0B. \"Verweisvorschau\".'],\"vs/editor/contrib/find/browser/findController\":[\"Suchen\",\"&&Suchen\",`\\xDCberschreibt das Flag \\u201EUse Regular Expression\\u201C.\\r\nDas Flag wird f\\xFCr die Zukunft nicht gespeichert.\\r\n0:\\xA0Nichts unternehmen\\r\n1:\\xA0TRUE\\r\n2:\\xA0FALSE`,`\\xDCberschreibt das Flag \\u201EMatch Whole Word\\u201C.\\r\nDas Flag wird f\\xFCr die Zukunft nicht gespeichert.\\r\n0:\\xA0Nichts unternehmen\\r\n1:\\xA0TRUE\\r\n2:\\xA0FALSE`,`\\xDCberschreibt das Flag \\u201EMath Case\\u201C.\\r\nDas Flag wird f\\xFCr die Zukunft nicht gespeichert.\\r\n0:\\xA0Nichts unternehmen\\r\n1:\\xA0TRUE\\r\n2:\\xA0FALSE`,`\\xDCberschreibt das Flag \\u201EPreserve Case\\u201C.\\r\nDas Flag wird f\\xFCr die Zukunft nicht gespeichert.\\r\n0:\\xA0Nichts unternehmen\\r\n1:\\xA0TRUE\\r\n2:\\xA0FALSE`,\"Mit Argumenten suchen\",\"Mit Auswahl suchen\",\"Weitersuchen\",\"Vorheriges Element suchen\",\"Zu \\xDCbereinstimmung wechseln\\xA0...\",\"Keine \\xDCbereinstimmungen. Versuchen Sie, nach etwas anderem zu suchen.\",\"Geben Sie eine Zahl ein, um zu einer bestimmten \\xDCbereinstimmung zu wechseln (zwischen\\xA01 und {0}).\",\"Zahl zwischen\\xA01 und {0} eingeben\",\"Zahl zwischen\\xA01 und {0} eingeben\",\"N\\xE4chste Auswahl suchen\",\"Vorherige Auswahl suchen\",\"Ersetzen\",\"&&Ersetzen\"],\"vs/editor/contrib/find/browser/findWidget\":['Symbol f\\xFCr \"In Auswahl suchen\" im Editor-Such-Widget.',\"Symbol f\\xFCr die Anzeige, dass das Editor-Such-Widget zugeklappt wurde.\",\"Symbol f\\xFCr die Anzeige, dass das Editor-Such-Widget aufgeklappt wurde.\",'Symbol f\\xFCr \"Ersetzen\" im Editor-Such-Widget.','Symbol f\\xFCr \"Alle ersetzen\" im Editor-Such-Widget.','Symbol f\\xFCr \"Vorheriges Element suchen\" im Editor-Such-Widget.','Symbol f\\xFCr \"N\\xE4chstes Element suchen\" im Editor-Such-Widget.',\"Suchen/Ersetzen\",\"Suchen\",\"Suchen\",\"Vorherige \\xDCbereinstimmung\",\"N\\xE4chste \\xDCbereinstimmung\",\"In Auswahl suchen\",\"Schlie\\xDFen\",\"Ersetzen\",\"Ersetzen\",\"Ersetzen\",\"Alle ersetzen\",\"Ersetzen umschalten\",\"Nur die ersten {0} Ergebnisse wurden hervorgehoben, aber alle Suchoperationen werden auf dem gesamten Text durchgef\\xFChrt.\",\"{0} von {1}\",\"Keine Ergebnisse\",\"{0} gefunden\",'{0} f\\xFCr \"{1}\" gefunden','{0} f\\xFCr \"{1}\" gefunden, bei {2}','{0} f\\xFCr \"{1}\" gefunden','STRG+EINGABE f\\xFCgt jetzt einen Zeilenumbruch ein, statt alles zu ersetzen. Sie k\\xF6nnen die Tastenzuordnung f\\xFCr \"editor.action.replaceAll\" \\xE4ndern, um dieses Verhalten au\\xDFer Kraft zu setzen.'],\"vs/editor/contrib/folding/browser/folding\":[\"Auffalten\",\"Faltung rekursiv aufheben\",\"Falten\",\"Einklappung umschalten\",\"Rekursiv falten\",\"Alle Blockkommentare falten\",\"Alle Regionen falten\",\"Alle Regionen auffalten\",\"Alle Regionen mit Ausnahme der ausgew\\xE4hlten zuklappen\",\"Alle Regionen mit Ausnahme der ausgew\\xE4hlten auffalten\",\"Alle falten\",\"Alle auffalten\",\"Zur \\xFCbergeordneten Reduzierung wechseln\",\"Zum vorherigen Faltbereich wechseln\",\"Zum n\\xE4chsten Faltbereich wechseln\",\"Faltungsbereich aus Auswahl erstellen\",\"Manuelle Faltbereiche entfernen\",\"Faltebene {0}\"],\"vs/editor/contrib/folding/browser/foldingDecorations\":[\"Hintergrundfarbe hinter gefalteten Bereichen. Die Farbe darf nicht deckend sein, sodass zugrunde liegende Dekorationen nicht ausgeblendet werden.\",\"Farbe des Faltsteuerelements im Editor-Bundsteg.\",\"Symbol f\\xFCr aufgeklappte Bereiche im Editor-Glyphenrand.\",\"Symbol f\\xFCr zugeklappte Bereiche im Editor-Glyphenrand.\",\"Symbol f\\xFCr manuell reduzierte Bereiche im Glyphenrand des Editors.\",\"Symbol f\\xFCr manuell erweiterte Bereiche im Glyphenrand des Editors.\"],\"vs/editor/contrib/fontZoom/browser/fontZoom\":[\"Editorschriftart vergr\\xF6\\xDFern\",\"Editorschriftart verkleinern\",\"Editor Schriftart Vergr\\xF6\\xDFerung zur\\xFCcksetzen\"],\"vs/editor/contrib/format/browser/format\":[\"1 Formatierung in Zeile {0} vorgenommen\",\"{0} Formatierungen in Zeile {1} vorgenommen\",\"1 Formatierung zwischen Zeilen {0} und {1} vorgenommen\",\"{0} Formatierungen zwischen Zeilen {1} und {2} vorgenommen\"],\"vs/editor/contrib/format/browser/formatActions\":[\"Dokument formatieren\",\"Auswahl formatieren\"],\"vs/editor/contrib/gotoError/browser/gotoError\":[\"Gehe zu n\\xE4chstem Problem (Fehler, Warnung, Information)\",\"Symbol f\\xFCr den Marker zum Wechseln zum n\\xE4chsten Element.\",\"Gehe zu vorigem Problem (Fehler, Warnung, Information)\",\"Symbol f\\xFCr den Marker zum Wechseln zum vorherigen Element.\",\"Gehe zu dem n\\xE4chsten Problem in den Dateien (Fehler, Warnung, Info)\",\"N\\xE4chstes &&Problem\",\"Gehe zu dem vorherigen Problem in den Dateien (Fehler, Warnung, Info)\",\"Vorheriges &&Problem\"],\"vs/editor/contrib/gotoError/browser/gotoErrorWidget\":[\"Fehler\",\"Warnung\",\"Info\",\"Hinweis\",\"{0} bei {1}. \",\"{0} von {1} Problemen\",\"{0} von {1} Problemen\",\"Editormarkierung: Farbe bei Fehler des Navigationswidgets.\",\"Hintergrund der Fehler\\xFCberschrift des Markernavigationswidgets im Editor.\",\"Editormarkierung: Farbe bei Warnung des Navigationswidgets.\",\"Hintergrund der Warnungs\\xFCberschrift des Markernavigationswidgets im Editor.\",\"Editormarkierung: Farbe bei Information des Navigationswidgets.\",\"Hintergrund der Informations\\xFCberschrift des Markernavigationswidgets im Editor.\",\"Editormarkierung: Hintergrund des Navigationswidgets.\"],\"vs/editor/contrib/gotoSymbol/browser/goToCommands\":[\"Vorschau\",\"Definitionen\",'Keine Definition gefunden f\\xFCr \"{0}\".',\"Keine Definition gefunden\",\"Gehe zu Definition\",\"Gehe &&zu Definition\",\"Definition an der Seite \\xF6ffnen\",\"Definition einsehen\",\"Deklarationen\",'Keine Deklaration f\\xFCr \"{0}\" gefunden.',\"Keine Deklaration gefunden.\",\"Zur Deklaration wechseln\",\"Gehe zu &&Deklaration\",'Keine Deklaration f\\xFCr \"{0}\" gefunden.',\"Keine Deklaration gefunden.\",\"Vorschau f\\xFCr Deklaration anzeigen\",\"Typdefinitionen\",'Keine Typendefinition gefunden f\\xFCr \"{0}\"',\"Keine Typendefinition gefunden\",\"Zur Typdefinition wechseln\",\"Zur &&Typdefinition wechseln\",\"Vorschau der Typdefinition anzeigen\",\"Implementierungen\",'Keine Implementierung gefunden f\\xFCr \"{0}\"',\"Keine Implementierung gefunden\",\"Gehe zu Implementierungen\",\"Gehe zu &&Implementierungen\",\"Vorschau f\\xFCr Implementierungen anzeigen\",'F\\xFCr \"{0}\" wurden keine Verweise gefunden.',\"Keine Referenzen gefunden\",\"Gehe zu Verweisen\",\"Gehe zu &&Verweisen\",\"Verweise\",\"Vorschau f\\xFCr Verweise anzeigen\",\"Verweise\",\"Zum beliebigem Symbol wechseln\",\"Speicherorte\",'Keine Ergebnisse f\\xFCr \"{0}\"',\"Verweise\"],\"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\":[\"Klicken Sie, um {0} Definitionen anzuzeigen.\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesController\":['Gibt an, ob die Verweisvorschau sichtbar ist, z.\\xA0B. \"Verweisvorschau\" oder \"Definition einsehen\".',\"Wird geladen...\",\"{0} ({1})\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\":[\"{0} Verweise\",\"{0} Verweis\",\"Verweise\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\":[\"Keine Vorschau verf\\xFCgbar.\",\"Keine Ergebnisse\",\"Verweise\"],\"vs/editor/contrib/gotoSymbol/browser/referencesModel\":[\"in {0} in Zeile {1} in Spalte {2}\",\"{0} in {1} in Zeile {2} in Spalte {3}\",\"1 Symbol in {0}, vollst\\xE4ndiger Pfad {1}\",\"{0} Symbole in {1}, vollst\\xE4ndiger Pfad {2}\",\"Es wurden keine Ergebnisse gefunden.\",\"1 Symbol in {0} gefunden\",\"{0} Symbole in {1} gefunden\",\"{0} Symbole in {1} Dateien gefunden\"],\"vs/editor/contrib/gotoSymbol/browser/symbolNavigation\":[\"Gibt an, ob Symbolpositionen vorliegen, bei denen die Navigation nur \\xFCber die Tastatur m\\xF6glich ist.\",\"Symbol {0} von {1}, {2} f\\xFCr n\\xE4chstes\",\"Symbol {0} von {1}\"],\"vs/editor/contrib/hover/browser/hover\":[\"Anzeigen oder Fokus beim Daraufzeigen\",\"Definitionsvorschauhover anzeigen\",\"Bildlauf nach oben beim Daraufzeigen\",\"Bildlauf nach unten beim Daraufzeigen\",\"Bildlauf nach links beim Daraufzeigen\",\"Bildlauf nach rechts beim Daraufzeigen\",\"Eine Seite nach oben beim Daraufzeigen\",\"Eine Seite nach unten beim Daraufzeigen\",\"Gehe nach oben beim Daraufzeigen\",\"Gehe nach unten beim Daraufzeigen\"],\"vs/editor/contrib/hover/browser/markdownHoverParticipant\":[\"Wird geladen...\",\"Das Rendering langer Zeilen wurde aus Leistungsgr\\xFCnden angehalten. Dies kann \\xFCber \\u201Eeditor.stopRenderingLineAfter\\u201C konfiguriert werden.\",\"Die Tokenisierung wird bei langen Zeilen aus Leistungsgr\\xFCnden \\xFCbersprungen. Dies kann \\xFCber \\u201Eeditor.maxTokenizationLineLength\\u201C konfiguriert werden.\"],\"vs/editor/contrib/hover/browser/markerHoverParticipant\":[\"Problem anzeigen\",\"Keine Schnellkorrekturen verf\\xFCgbar\",\"Es wird nach Schnellkorrekturen gesucht...\",\"Keine Schnellkorrekturen verf\\xFCgbar\",\"Schnelle Problembehebung ...\"],\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\":[\"Durch vorherigen Wert ersetzen\",\"Durch n\\xE4chsten Wert ersetzen\"],\"vs/editor/contrib/indentation/browser/indentation\":[\"Einzug in Leerzeichen konvertieren\",\"Einzug in Tabstopps konvertieren\",\"Konfigurierte Tabulatorgr\\xF6\\xDFe\",\"Standardregisterkartengr\\xF6\\xDFe\",\"Aktuelle Registerkartengr\\xF6\\xDFe\",\"Tabulatorgr\\xF6\\xDFe f\\xFCr aktuelle Datei ausw\\xE4hlen\",\"Einzug mithilfe von Tabstopps\",\"Einzug mithilfe von Leerzeichen\",\"Anzeigegr\\xF6\\xDFe der Registerkarte \\xE4ndern\",\"Einzug aus Inhalt erkennen\",\"Neuen Einzug f\\xFCr Zeilen festlegen\",\"Gew\\xE4hlte Zeilen zur\\xFCckziehen\"],\"vs/editor/contrib/inlayHints/browser/inlayHintsHover\":[\"Zum Einf\\xFCgen doppelklicken\",\"BEFEHL + Klicken\",\"STRG + Klicken\",\"OPTION + Klicken\",\"ALT + Klicken\",\"Wechseln Sie zu Definition ({0}), klicken Sie mit der rechten Maustaste, um weitere Informationen zu finden.\",\"Gehe zu Definition ({0})\",\"Befehl ausf\\xFChren\"],\"vs/editor/contrib/inlineCompletions/browser/commands\":[\"N\\xE4chsten Inline-Vorschlag anzeigen\",\"Vorherigen Inline-Vorschlag anzeigen\",\"Inline-Vorschlag ausl\\xF6sen\",\"N\\xE4chstes Wort des Inline-Vorschlags annehmen\",\"Wort annehmen\",\"N\\xE4chste Zeile des Inlinevorschlags akzeptieren\",\"Zeile annehmen\",\"Inline-Vorschlag annehmen\",\"Annehmen\",\"Inlinevorschlag ausblenden\",\"Symbolleiste immer anzeigen\"],\"vs/editor/contrib/inlineCompletions/browser/hoverParticipant\":[\"Vorschlag:\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\":[\"Gibt an, ob ein Inline-Vorschlag sichtbar ist.\",\"Gibt an, ob der Inline-Vorschlag mit Leerzeichen beginnt.\",\"Ob der Inline-Vorschlag mit Leerzeichen beginnt, das kleiner ist als das, was durch die Tabulatortaste eingef\\xFCgt werden w\\xFCrde\",\"Gibt an, ob Vorschl\\xE4ge f\\xFCr den aktuellen Vorschlag unterdr\\xFCckt werden sollen\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\":[\"Inspect this in the accessible view ({0})\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\":[\"Symbol f\\xFCr die Anzeige des n\\xE4chsten Parameterhinweises.\",\"Symbol f\\xFCr die Anzeige des vorherigen Parameterhinweises.\",\"{0} ({1})\",\"Zur\\xFCck\",\"Weiter\"],\"vs/editor/contrib/lineSelection/browser/lineSelection\":[\"Zeilenauswahl erweitern\"],\"vs/editor/contrib/linesOperations/browser/linesOperations\":[\"Zeile nach oben kopieren\",\"Zeile nach oben &&kopieren\",\"Zeile nach unten kopieren\",\"Zeile nach unten ko&&pieren\",\"Auswahl duplizieren\",\"&&Auswahl duplizieren\",\"Zeile nach oben verschieben\",\"Zeile nach oben &&verschieben\",\"Zeile nach unten verschieben\",\"Zeile nach &&unten verschieben\",\"Zeilen aufsteigend sortieren\",\"Zeilen absteigend sortieren\",\"Doppelte Zeilen l\\xF6schen\",\"Nachgestelltes Leerzeichen k\\xFCrzen\",\"Zeile l\\xF6schen\",\"Zeileneinzug\",\"Zeile ausr\\xFCcken\",\"Zeile oben einf\\xFCgen\",\"Zeile unten einf\\xFCgen\",\"Alle \\xFCbrigen l\\xF6schen\",\"Alle rechts l\\xF6schen\",\"Zeilen verkn\\xFCpfen\",\"Zeichen um den Cursor herum transponieren\",\"In Gro\\xDFbuchstaben umwandeln\",\"In Kleinbuchstaben umwandeln\",\"In gro\\xDFe Anfangsbuchstaben umwandeln\",\"In Snake Case umwandeln\",\"In Camel-Fall transformieren\",\"Verwandle dich in eine Kebab-H\\xFClle\"],\"vs/editor/contrib/linkedEditing/browser/linkedEditing\":[\"Verkn\\xFCpfte Bearbeitung starten\",\"Hintergrundfarbe, wenn der Editor automatisch nach Typ umbenennt.\"],\"vs/editor/contrib/links/browser/links\":[\"Fehler beim \\xD6ffnen dieses Links, weil er nicht wohlgeformt ist: {0}\",\"Fehler beim \\xD6ffnen dieses Links, weil das Ziel fehlt.\",\"Befehl ausf\\xFChren\",\"Link folgen\",\"BEFEHL + Klicken\",\"STRG + Klicken\",\"OPTION + Klicken\",\"alt + klicken\",'F\\xFChren Sie den Befehl \"{0}\" aus.',\"Link \\xF6ffnen\"],\"vs/editor/contrib/message/browser/messageController\":[\"Gibt an, ob der Editor zurzeit eine Inlinenachricht anzeigt.\"],\"vs/editor/contrib/multicursor/browser/multicursor\":[\"Hinzugef\\xFCgter Cursor: {0}\",\"Hinzugef\\xFCgte Cursor: {0}\",\"Cursor oberhalb hinzuf\\xFCgen\",\"Cursor oberh&&alb hinzuf\\xFCgen\",\"Cursor unterhalb hinzuf\\xFCgen\",\"Cursor unterhal&&b hinzuf\\xFCgen\",\"Cursor an Zeilenenden hinzuf\\xFCgen\",\"C&&ursor an Zeilenenden hinzuf\\xFCgen\",\"Cursor am Ende hinzuf\\xFCgen\",\"Cursor am Anfang hinzuf\\xFCgen\",\"Auswahl zur n\\xE4chsten \\xDCbereinstimmungssuche hinzuf\\xFCgen\",\"&&N\\xE4chstes Vorkommen hinzuf\\xFCgen\",\"Letzte Auswahl zu vorheriger \\xDCbereinstimmungssuche hinzuf\\xFCgen\",\"Vo&&rheriges Vorkommen hinzuf\\xFCgen\",\"Letzte Auswahl in n\\xE4chste \\xDCbereinstimmungssuche verschieben\",\"Letzte Auswahl in vorherige \\xDCbereinstimmungssuche verschieben\",\"Alle Vorkommen ausw\\xE4hlen und \\xDCbereinstimmung suchen\",\"Alle V&&orkommen ausw\\xE4hlen\",\"Alle Vorkommen \\xE4ndern\",\"Fokus auf n\\xE4chsten Cursor\",\"Fokussiert den n\\xE4chsten Cursor\",\"Fokus auf vorherigen Cursor\",\"Fokussiert den vorherigen Cursor\"],\"vs/editor/contrib/parameterHints/browser/parameterHints\":[\"Parameterhinweise ausl\\xF6sen\"],\"vs/editor/contrib/parameterHints/browser/parameterHintsWidget\":[\"Symbol f\\xFCr die Anzeige des n\\xE4chsten Parameterhinweises.\",\"Symbol f\\xFCr die Anzeige des vorherigen Parameterhinweises.\",\"{0}, Hinweis\",\"Vordergrundfarbe des aktiven Elements im Parameterhinweis.\"],\"vs/editor/contrib/peekView/browser/peekView\":[\"Gibt an, ob der aktuelle Code-Editor in der Vorschau eingebettet ist.\",\"Schlie\\xDFen\",\"Hintergrundfarbe des Titelbereichs der Peek-Ansicht.\",\"Farbe des Titels in der Peek-Ansicht.\",\"Farbe der Titelinformationen in der Peek-Ansicht.\",\"Farbe der Peek-Ansichtsr\\xE4nder und des Pfeils.\",\"Hintergrundfarbe der Ergebnisliste in der Peek-Ansicht.\",\"Vordergrundfarbe f\\xFCr Zeilenknoten in der Ergebnisliste der Peek-Ansicht.\",\"Vordergrundfarbe f\\xFCr Dateiknoten in der Ergebnisliste der Peek-Ansicht.\",\"Hintergrundfarbe des ausgew\\xE4hlten Eintrags in der Ergebnisliste der Peek-Ansicht.\",\"Vordergrundfarbe des ausgew\\xE4hlten Eintrags in der Ergebnisliste der Peek-Ansicht.\",\"Hintergrundfarbe des Peek-Editors.\",\"Hintergrundfarbe der Leiste im Peek-Editor.\",\"Die Hintergrundfarbe f\\xFCr den \\u201ESticky\\u201C-Bildlaufeffekt im Editor f\\xFCr die \\u201EPeek\\u201C-Ansicht.\",\"Farbe f\\xFCr \\xDCbereinstimmungsmarkierungen in der Ergebnisliste der Peek-Ansicht.\",\"Farbe f\\xFCr \\xDCbereinstimmungsmarkierungen im Peek-Editor.\",\"Rahmen f\\xFCr \\xDCbereinstimmungsmarkierungen im Peek-Editor.\"],\"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\":[\"\\xD6ffnen Sie zuerst einen Text-Editor, um zu einer Zeile zu wechseln.\",\"Wechseln Sie zu Zeile {0} und Zeichen {1}.\",\"Zu Zeile {0} wechseln.\",\"Aktuelle Zeile: {0}, Zeichen: {1}. Geben Sie eine Zeilennummer zwischen 1 und {2} ein, zu der Sie navigieren m\\xF6chten.\",\"Aktuelle Zeile: {0}, Zeichen: {1}. Geben Sie eine Zeilennummer ein, zu der Sie navigieren m\\xF6chten.\"],\"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\":[\"\\xD6ffnen Sie zun\\xE4chst einen Text-Editor mit Symbolinformationen, um zu einem Symbol zu navigieren.\",\"Der aktive Text-Editor stellt keine Symbolinformationen bereit.\",\"Keine \\xFCbereinstimmenden Editorsymbole.\",\"Keine Editorsymbole.\",\"An der Seite \\xF6ffnen\",\"Unten \\xF6ffnen\",\"Symbole ({0})\",\"Eigenschaften ({0})\",\"Methoden ({0})\",\"Funktionen ({0})\",\"Konstruktoren ({0})\",\"Variablen ({0})\",\"Klassen ({0})\",\"Strukturen ({0})\",\"Ereignisse ({0})\",\"Operatoren ({0})\",\"Schnittstellen ({0})\",\"Namespaces ({0})\",\"Pakete ({0})\",\"Typparameter ({0})\",\"Module ({0})\",\"Eigenschaften ({0})\",\"Enumerationen ({0})\",\"Enumerationsmember ({0})\",\"Zeichenfolgen ({0})\",\"Dateien ({0})\",\"Arrays ({0})\",\"Zahlen ({0})\",\"Boolesche Werte ({0})\",\"Objekte ({0})\",\"Schl\\xFCssel ({0})\",\"Felder ({0})\",\"Konstanten ({0})\"],\"vs/editor/contrib/readOnlyMessage/browser/contribution\":[\"Bearbeitung von schreibgesch\\xFCtzter Eingabe nicht m\\xF6glich\",\"Ein Bearbeiten ist im schreibgesch\\xFCtzten Editor nicht m\\xF6glich\"],\"vs/editor/contrib/rename/browser/rename\":[\"Kein Ergebnis.\",\"Ein unbekannter Fehler ist beim Aufl\\xF6sen der Umbenennung eines Ortes aufgetreten.\",\"'{0}' wird in '{1}' umbenannt\",\"{0} wird in {1} umbenannt.\",'\"{0}\" erfolgreich in \"{1}\" umbenannt. Zusammenfassung: {2}',\"Die rename-Funktion konnte die \\xC4nderungen nicht anwenden.\",\"Die rename-Funktion konnte die \\xC4nderungen nicht berechnen.\",\"Symbol umbenennen\",\"M\\xF6glichkeit aktivieren/deaktivieren, \\xC4nderungen vor dem Umbenennen als Vorschau anzeigen zu lassen\"],\"vs/editor/contrib/rename/browser/renameInputField\":[\"Gibt an, ob das Widget zum Umbenennen der Eingabe sichtbar ist.\",\"Benennen Sie die Eingabe um. Geben Sie einen neuen Namen ein, und dr\\xFCcken Sie die EINGABETASTE, um den Commit auszuf\\xFChren.\",\"{0} zur Umbenennung, {1} zur Vorschau\"],\"vs/editor/contrib/smartSelect/browser/smartSelect\":[\"Auswahl aufklappen\",\"Auswahl &&erweitern\",\"Markierung verkleinern\",\"Au&&swahl verkleinern\"],\"vs/editor/contrib/snippet/browser/snippetController2\":[\"Gibt an, ob der Editor sich zurzeit im Schnipselmodus befindet.\",\"Gibt an, ob ein n\\xE4chster Tabstopp im Schnipselmodus vorhanden ist.\",\"Gibt an, ob ein vorheriger Tabstopp im Schnipselmodus vorhanden ist.\",\"Zum n\\xE4chsten Platzhalter wechseln...\"],\"vs/editor/contrib/snippet/browser/snippetVariables\":[\"Sonntag\",\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\",\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\",\"Januar\",\"Februar\",\"M\\xE4rz\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\",\"Jan\",\"Feb\",\"M\\xE4r\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],\"vs/editor/contrib/stickyScroll/browser/stickyScrollActions\":[\"Fixierten Bildlauf umschalten\",\"Fixierten Bildlauf &&umschalten\",\"Fixierter Bildlauf\",\"&&Fixierter Bildlauf\",\"Fokus auf Fixierten Bildlauf\",\"&&Fokus fixierter Bildlauf\",\"N\\xE4chste fixierte Zeile ausw\\xE4hlen\",\"Zuletzt gew\\xE4hlte fixierte Zeile ausw\\xE4hlen\",\"Gehe zur fokussierten fixierten Zeile\",\"Editor ausw\\xE4hlen\"],\"vs/editor/contrib/suggest/browser/suggest\":[\"Gibt an, ob ein Vorschlag fokussiert ist\",\"Gibt an, ob Vorschlagsdetails sichtbar sind.\",\"Gibt an, ob mehrere Vorschl\\xE4ge zur Auswahl stehen.\",\"Gibt an, ob das Einf\\xFCgen des aktuellen Vorschlags zu einer \\xC4nderung f\\xFChrt oder ob bereits alles eingegeben wurde.\",\"Gibt an, ob Vorschl\\xE4ge durch Dr\\xFCcken der EINGABETASTE eingef\\xFCgt werden.\",\"Gibt an, ob der aktuelle Vorschlag Verhalten zum Einf\\xFCgen und Ersetzen aufweist.\",\"Gibt an, ob Einf\\xFCgen oder Ersetzen als Standardverhalten verwendet wird.\",\"Gibt an, ob der aktuelle Vorschlag die Aufl\\xF6sung weiterer Details unterst\\xFCtzt.\"],\"vs/editor/contrib/suggest/browser/suggestController\":['Das Akzeptieren von \"{0}\" ergab {1} zus\\xE4tzliche Bearbeitungen.',\"Vorschlag ausl\\xF6sen\",\"Einf\\xFCgen\",\"Einf\\xFCgen\",\"Ersetzen\",\"Ersetzen\",\"Einf\\xFCgen\",\"weniger anzeigen\",\"mehr anzeigen\",\"Gr\\xF6\\xDFe des Vorschlagswidgets zur\\xFCcksetzen\"],\"vs/editor/contrib/suggest/browser/suggestWidget\":[\"Hintergrundfarbe des Vorschlagswidgets.\",\"Rahmenfarbe des Vorschlagswidgets.\",\"Vordergrundfarbe des Vorschlagswidgets.\",\"Die Vordergrundfarbe des ausgew\\xE4hlten Eintrags im Vorschlagswidget.\",\"Die Vordergrundfarbe des Symbols des ausgew\\xE4hlten Eintrags im Vorschlagswidget.\",\"Hintergrundfarbe des ausgew\\xE4hlten Eintrags im Vorschlagswidget.\",\"Farbe der Trefferhervorhebung im Vorschlagswidget.\",\"Die Farbe des Treffers wird im Vorschlagswidget hervorgehoben, wenn ein Element fokussiert wird.\",\"Vordergrundfarbe des Status des Vorschlagswidgets.\",\"Wird geladen...\",\"Keine Vorschl\\xE4ge.\",\"Vorschlagen\",\"{0} {1}, {2}\",\"{0} {1}\",\"{0}, {1}\",\"{0}, Dokumente: {1}\"],\"vs/editor/contrib/suggest/browser/suggestWidgetDetails\":[\"Schlie\\xDFen\",\"Wird geladen...\"],\"vs/editor/contrib/suggest/browser/suggestWidgetRenderer\":[\"Symbol f\\xFCr weitere Informationen im Vorschlags-Widget.\",\"Weitere Informationen\"],\"vs/editor/contrib/suggest/browser/suggestWidgetStatus\":[\"{0} ({1})\"],\"vs/editor/contrib/symbolIcons/browser/symbolIcons\":[\"Die Vordergrundfarbe f\\xFCr Arraysymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr boolesche Symbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Klassensymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Farbsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr konstante Symbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Konstruktorsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Enumeratorsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Enumeratormembersymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Ereignissymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Feldsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Dateisymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Ordnersymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Funktionssymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Schnittstellensymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Schl\\xFCsselsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Schl\\xFCsselwortsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Methodensymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Modulsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Namespacesymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr NULL-Symbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Zahlensymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Objektsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Operatorsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Paketsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Eigenschaftensymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Referenzsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Codeschnipselsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Zeichenfolgensymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Struktursymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Textsymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Typparametersymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr Einheitensymbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\",\"Die Vordergrundfarbe f\\xFCr variable Symbole. Diese Symbole werden in den Widgets f\\xFCr Gliederung, Breadcrumbs und Vorschl\\xE4ge angezeigt.\"],\"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\":[\"TAB-Umschalttaste verschiebt Fokus\",\"Beim Dr\\xFCcken auf Tab wird der Fokus jetzt auf das n\\xE4chste fokussierbare Element verschoben\",\"Beim Dr\\xFCcken von Tab wird jetzt das Tabulator-Zeichen eingef\\xFCgt\"],\"vs/editor/contrib/tokenization/browser/tokenization\":[\"Entwickler: Force Retokenize\"],\"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\":[\"Symbol, das mit einer Warnmeldung im Erweiterungs-Editor angezeigt wird.\",\"Dieses Dokument enth\\xE4lt viele nicht einfache ASCII-Unicode-Zeichen.\",\"Dieses Dokument enth\\xE4lt viele mehrdeutige Unicode-Zeichen.\",\"Dieses Dokument enth\\xE4lt viele unsichtbare Unicode-Zeichen.\",\"Das Zeichen {0} kann mit dem Zeichen {1} verwechselt werden, was im Quellcode h\\xE4ufiger vorkommt.\",\"Das Zeichen {0} kann mit dem Zeichen {1} verwechselt werden, was im Quellcode h\\xE4ufiger vorkommt.\",\"Das Zeichen {0} ist nicht sichtbar.\",\"Das Zeichen {0} ist kein einfaches ASCII-Zeichen.\",\"Einstellungen anpassen\",\"Hervorhebung in Kommentaren deaktivieren\",\"Deaktivieren der Hervorhebung von Zeichen in Kommentaren\",\"Hervorhebung in Zeichenfolgen deaktivieren\",\"Deaktivieren der Hervorhebung von Zeichen in Zeichenfolgen\",\"Mehrdeutige Hervorhebung deaktivieren\",\"Deaktivieren der Hervorhebung von mehrdeutigen Zeichen\",\"Unsichtbare Hervorhebung deaktivieren\",\"Deaktivieren der Hervorhebung unsichtbarer Zeichen\",\"Nicht-ASCII-Hervorhebung deaktivieren\",\"Deaktivieren der Hervorhebung von nicht einfachen ASCII-Zeichen\",\"Ausschlussoptionen anzeigen\",\"{0} (unsichtbares Zeichen) von der Hervorhebung ausschlie\\xDFen\",\"{0} nicht hervorheben\",\"Unicodezeichen zulassen, die in der Sprache \\u201E{0}\\u201C h\\xE4ufiger vorkommen.\",\"Konfigurieren der Optionen f\\xFCr die Unicode-Hervorhebung\"],\"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\":[\"Ungew\\xF6hnliche Zeilentrennzeichen\",\"Ungew\\xF6hnliche Zeilentrennzeichen erkannt\",`Die Datei \"{0}\" enth\\xE4lt mindestens ein ungew\\xF6hnliches Zeilenabschlusszeichen, z. B. Zeilentrennzeichen (LS) oder Absatztrennzeichen (PS).\\r\n\\r\nEs wird empfohlen, sie aus der Datei zu entfernen. Dies kann \\xFCber \"editor.unusualLineTerminators\" konfiguriert werden.`,\"&&Ungew\\xF6hnliche Zeilenabschlusszeichen entfernen\",\"Ignorieren\"],\"vs/editor/contrib/wordHighlighter/browser/highlightDecorations\":[\"Hintergrundfarbe eines Symbols beim Lesezugriff, z.B. beim Lesen einer Variablen. Die Farbe darf nicht deckend sein, damit sie nicht die zugrunde liegenden Dekorationen verdeckt.\",\"Hintergrundfarbe eines Symbols bei Schreibzugriff, z.B. beim Schreiben in eine Variable. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Die Hintergrundfarbe eines Textteils f\\xFCr ein Symbol. Die Farbe darf nicht deckend sein, um zugrunde liegende Dekorationen nicht auszublenden.\",\"Randfarbe eines Symbols beim Lesezugriff, wie etwa beim Lesen einer Variablen.\",\"Randfarbe eines Symbols beim Schreibzugriff, wie etwa beim Schreiben einer Variablen.\",\"Die Rahmenfarbe eines Textteils f\\xFCr ein Symbol.\",\"\\xDCbersichtslinealmarkerfarbd f\\xFCr das Hervorheben von Symbolen. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"\\xDCbersichtslinealmarkerfarbe f\\xFCr Symbolhervorhebungen bei Schreibzugriff. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Die Markierungsfarbe des \\xDCbersichtslineals eines Textteils f\\xFCr ein Symbol. Die Farbe darf nicht deckend sein, um zugrunde liegende Dekorationen nicht auszublenden.\"],\"vs/editor/contrib/wordHighlighter/browser/wordHighlighter\":[\"Gehe zur n\\xE4chsten Symbolhervorhebungen\",\"Gehe zur vorherigen Symbolhervorhebungen\",\"Symbol-Hervorhebung ein-/ausschalten\"],\"vs/editor/contrib/wordOperations/browser/wordOperations\":[\"Wort l\\xF6schen\"],\"vs/platform/action/common/actionCommonCategories\":[\"Ansehen\",\"Hilfe\",\"Test\",\"Datei\",\"Einstellungen\",\"Entwickler\"],\"vs/platform/actionWidget/browser/actionList\":[\"{0} zum Anwenden, {1} f\\xFCr die Vorschau\",\"{0} zum Anwenden\",\"{0} deaktiviert, Grund: {1}\",\"Aktionswidget\"],\"vs/platform/actionWidget/browser/actionWidget\":[\"Background color for toggled action items in action bar.\",\"Gibt an, ob die Aktionswidgetliste sichtbar ist.\",\"Codeaktionswidget ausblenden\",\"Vorherige Aktion ausw\\xE4hlen\",\"N\\xE4chste Aktion ausw\\xE4hlen\",\"Ausgew\\xE4hlte Aktion akzeptieren\",\"Vorschau f\\xFCr ausgew\\xE4hlte Elemente anzeigen\"],\"vs/platform/actions/browser/menuEntryActionViewItem\":[\"{0} ({1})\",\"{0} ({1})\",`{0}\\r\n[{1}] {2}`],\"vs/platform/actions/browser/toolbar\":[\"Ausblenden\",\"Men\\xFC zur\\xFCcksetzen\"],\"vs/platform/actions/common/menuService\":['\"{0}\" ausblenden'],\"vs/platform/audioCues/browser/audioCueService\":[\"Fehler in der Zeile\",\"Warnung in der Zeile\",\"Gefalteter Bereich in der Zeile\",\"Haltepunkt in der Zeile\",\"Inlinevorschlag in der Zeile\",\"Terminale schnelle Problembehebung\",\"Debugger auf Haltepunkt beendet\",\"Keine Inlay-Hinweise in der Zeile\",\"Aufgabe abgeschlossen\",\"Aufgabe fehlgeschlagen\",\"Terminalbefehl fehlgeschlagen\",\"Terminalglocke\",\"Notebookzelle abgeschlossen\",\"Notebookzelle fehlgeschlagen\",\"Vergleichslinie eingef\\xFCgt\",\"Vergleichslinie gel\\xF6scht\",\"Vergleichslinie ge\\xE4ndert\",\"Chatanfrage gesendet\",\"Chatantwort empfangen\",\"Chatantwort ausstehend\"],\"vs/platform/configuration/common/configurationRegistry\":[\"Au\\xDFerkraftsetzungen f\\xFCr die Standardsprachkonfiguration\",\"Konfigurieren Sie Einstellungen, die f\\xFCr die Sprache {0} \\xFCberschrieben werden sollen.\",\"Zu \\xFCberschreibende Editor-Einstellungen f\\xFCr eine Sprache konfigurieren.\",\"Diese Einstellung unterst\\xFCtzt keine sprachspezifische Konfiguration.\",\"Zu \\xFCberschreibende Editor-Einstellungen f\\xFCr eine Sprache konfigurieren.\",\"Diese Einstellung unterst\\xFCtzt keine sprachspezifische Konfiguration.\",\"Eine leere Eigenschaft kann nicht registriert werden.\",'\"{0}\" kann nicht registriert werden. Stimmt mit dem Eigenschaftsmuster \"\\\\\\\\[.*\\\\\\\\]$\" zum Beschreiben sprachspezifischer Editor-Einstellungen \\xFCberein. Verwenden Sie den Beitrag \"configurationDefaults\".','{0}\" kann nicht registriert werden. Diese Eigenschaft ist bereits registriert.','\"{0}\" kann nicht registriert werden. Die zugeordnete Richtlinie {1} ist bereits bei {2} registriert.'],\"vs/platform/contextkey/browser/contextKeyService\":[\"Ein Befehl, der Informationen zu Kontextschl\\xFCsseln zur\\xFCckgibt\"],\"vs/platform/contextkey/common/contextkey\":[\"Leerer Kontextschl\\xFCsselausdruck\",\"Haben Sie vergessen, einen Ausdruck zu schreiben? Sie k\\xF6nnen auch \\u201Efalse\\u201C oder \\u201Etrue\\u201C festlegen, um immer auf \\u201Efalse\\u201C oder \\u201Etrue\\u201C auszuwerten.\",\"\\u201Ein\\u201C nach \\u201Enot\\u201C.\",\"schlie\\xDFende Klammer \\u201E)\\u201C\",\"Unerwartetes Token\",\"Haben Sie vergessen, && oder || vor dem Token einzuf\\xFCgen?\",\"Unerwartetes Ende des Ausdrucks.\",\"Haben Sie vergessen, einen Kontextschl\\xFCssel zu setzen?\",`Erwartet: {0}\\r\nEmpfangen: \\u201E{1}\\u201C.`],\"vs/platform/contextkey/common/contextkeys\":[\"Gibt an, ob macOS als Betriebssystem verwendet wird.\",\"Gibt an, ob Linux als Betriebssystem verwendet wird.\",\"Gibt an, ob Windows als Betriebssystem verwendet wird.\",\"Gibt an, ob es sich bei der Plattform um einen Webbrowser handelt.\",\"Gibt an, ob macOS auf einer Nicht-Browser-Plattform als Betriebssystem verwendet wird.\",\"Gibt an, ob iOS als Betriebssystem verwendet wird.\",\"Gibt an, ob es sich bei der Plattform um einen mobilen Webbrowser handelt.\",\"Qualit\\xE4tstyp des VS Codes\",\"Gibt an, ob sich der Tastaturfokus in einem Eingabefeld befindet.\"],\"vs/platform/contextkey/common/scanner\":[\"Meinten Sie {0}?\",\"Meinten Sie {0} oder {1}?\",\"Meinten Sie {0}, {1} oder {2}?\",\"Haben Sie vergessen, das Anf\\xFChrungszeichen zu \\xF6ffnen oder zu schlie\\xDFen?\",\"Haben Sie vergessen, das Zeichen \\u201E/\\u201C (Schr\\xE4gstrich) zu escapen? Setzen Sie zwei Backslashes davor, um es zu escapen, z. B. \\u201E\\\\\\\\/\\u201C.\"],\"vs/platform/history/browser/contextScopedHistoryWidget\":[\"Gibt an, ob Vorschl\\xE4ge sichtbar sind.\"],\"vs/platform/keybinding/common/abstractKeybindingService\":[\"({0}) wurde gedr\\xFCckt. Es wird auf die zweite Taste in der Kombination gewartet...\",\"({0}) wurde gedr\\xFCckt. Es wird auf die zweite Taste in der Kombination gewartet...\",\"Die Tastenkombination ({0}, {1}) ist kein Befehl.\",\"Die Tastenkombination ({0}, {1}) ist kein Befehl.\"],\"vs/platform/list/browser/listService\":[\"Workbench\",\"Ist unter Windows und Linux der STRG-Taste und unter macOS der Befehlstaste zugeordnet.\",\"Ist unter Windows und Linux der ALT-Taste und unter macOS der Wahltaste zugeordnet.\",'Der Modifizierer zum Hinzuf\\xFCgen eines Elements in B\\xE4umen und Listen zu einer Mehrfachauswahl mit der Maus (zum Beispiel im Explorer, in ge\\xF6ffneten Editoren und in der SCM-Ansicht). Die Mausbewegung \"Seitlich \\xF6ffnen\" wird \\u2013 sofern unterst\\xFCtzt \\u2013 so angepasst, dass kein Konflikt mit dem Modifizierer f\\xFCr Mehrfachauswahl entsteht.',\"Steuert, wie Elemente in Strukturen und Listen mithilfe der Maus ge\\xF6ffnet werden (sofern unterst\\xFCtzt). Bei \\xFCbergeordneten Elementen, deren untergeordnete Elemente sich in Strukturen befinden, steuert diese Einstellung, ob ein Einfachklick oder ein Doppelklick das \\xFCbergeordnete Elemente erweitert. Beachten Sie, dass einige Strukturen und Listen diese Einstellung ggf. ignorieren, wenn sie nicht zutrifft.\",\"Steuert, ob Listen und Strukturen ein horizontales Scrollen in der Workbench unterst\\xFCtzen. Warnung: Das Aktivieren dieser Einstellung kann sich auf die Leistung auswirken.\",\"Steuert, ob Klicks in der Bildlaufleiste Seite f\\xFCr Seite scrollen.\",\"Steuert den Struktureinzug in Pixeln.\",\"Steuert, ob die Struktur Einzugsf\\xFChrungslinien rendern soll.\",\"Steuert, ob Listen und Strukturen einen optimierten Bildlauf verwenden.\",'Ein Multiplikator, der f\\xFCr die Mausrad-Bildlaufereignisse \"deltaX\" und \"deltaY\" verwendet werden soll.',\"Multiplikator f\\xFCr Scrollgeschwindigkeit bei Dr\\xFCcken von ALT.\",\"Elemente beim Suchen hervorheben. Die Navigation nach oben und unten durchl\\xE4uft dann nur die markierten Elemente.\",\"Filterelemente bei der Suche.\",\"Steuert den Standardsuchmodus f\\xFCr Listen und Strukturen in der Workbench.\",\"Bei der einfachen Tastaturnavigation werden Elemente in den Fokus genommen, die mit der Tastatureingabe \\xFCbereinstimmen. Die \\xDCbereinstimmungen gelten nur f\\xFCr Pr\\xE4fixe.\",\"Hervorheben von Tastaturnavigationshervorgebungselemente, die mit der Tastatureingabe \\xFCbereinstimmen. Beim nach oben und nach unten Navigieren werden nur die hervorgehobenen Elemente durchlaufen.\",\"Durch das Filtern der Tastaturnavigation werden alle Elemente herausgefiltert und ausgeblendet, die nicht mit der Tastatureingabe \\xFCbereinstimmen.\",'Steuert die Tastaturnavigation in Listen und Strukturen in der Workbench. Kann \"simple\" (einfach), \"highlight\" (hervorheben) und \"filter\" (filtern) sein.',\"Bitte verwenden Sie stattdessen \\u201Eworkbench.list.defaultFindMode\\u201C und \\u201Eworkbench.list.typeNavigationMode\\u201C.\",\"Verwenden Sie bei der Suche eine Fuzzy\\xFCbereinstimmung.\",\"Verwenden Sie bei der Suche eine zusammenh\\xE4ngende \\xDCbereinstimmung.\",\"Steuert den Typ der \\xDCbereinstimmung, der beim Durchsuchen von Listen und Strukturen in der Workbench verwendet wird.\",\"Steuert, wie Strukturordner beim Klicken auf die Ordnernamen erweitert werden. Beachten Sie, dass einige Strukturen und Listen diese Einstellung ggf. ignorieren, wenn sie nicht zutrifft.\",\"Steuert die Funktionsweise der Typnavigation in Listen und Strukturen in der Workbench. Bei Festlegung auf \\u201Etrigger\\u201C beginnt die Typnavigation, sobald der Befehl \\u201Elist.triggerTypeNavigation\\u201C ausgef\\xFChrt wird.\"],\"vs/platform/markers/common/markers\":[\"Fehler\",\"Warnung\",\"Info\"],\"vs/platform/quickinput/browser/commandsQuickAccess\":[\"zuletzt verwendet\",\"h\\xE4ufig verwendet\",\"andere Befehle\",\"{0}, {1}\",'Der Befehl \"{0}\" hat zu einem Fehler gef\\xFChrt.'],\"vs/platform/quickinput/browser/helpQuickAccess\":[\"{0}, {1}\"],\"vs/platform/quickinput/browser/quickInput\":[\"Zur\\xFCck\",\"Dr\\xFCcken Sie die EINGABETASTE, um Ihre Eingabe zu best\\xE4tigen, oder ESC, um den Vorgang abzubrechen.\",\"{0}/{1}\",\"Nehmen Sie eine Eingabe vor, um die Ergebnisse einzugrenzen.\"],\"vs/platform/quickinput/browser/quickInputController\":[\"Toggle all checkboxes\",\"{0} Results\",\"{0} Selected\",\"OK\",\"Custom\",\"Back ({0})\",\"Back\"],\"vs/platform/quickinput/browser/quickInputList\":[\"Schnelleingabe\"],\"vs/platform/quickinput/browser/quickInputUtils\":['Klicken, um den Befehl \"{0}\" auszuf\\xFChren'],\"vs/platform/theme/common/colorRegistry\":[\"Allgemeine Vordergrundfarbe. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente \\xFCberschrieben wird.\",\"Allgemeine Vordergrundfarbe. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente \\xFCberschrieben wird.\",\"Allgemeine Vordergrundfarbe f\\xFCr Fehlermeldungen. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente \\xFCberschrieben wird.\",\"Vordergrundfarbe f\\xFCr Beschreibungstexte, die weitere Informationen anzeigen, z.B. f\\xFCr eine Beschriftung.\",\"Die f\\xFCr Symbole in der Workbench verwendete Standardfarbe.\",\"Allgemeine Rahmenfarbe f\\xFCr fokussierte Elemente. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente \\xFCberschrieben wird.\",\"Ein zus\\xE4tzlicher Rahmen um Elemente, mit dem diese von anderen getrennt werden, um einen gr\\xF6\\xDFeren Kontrast zu erreichen.\",\"Ein zus\\xE4tzlicher Rahmen um aktive Elemente, mit dem diese von anderen getrennt werden, um einen gr\\xF6\\xDFeren Kontrast zu erreichen.\",\"Hintergrundfarbe der Textauswahl in der Workbench (z.B. f\\xFCr Eingabefelder oder Textbereiche). Diese Farbe gilt nicht f\\xFCr die Auswahl im Editor.\",\"Farbe f\\xFCr Text-Trennzeichen.\",\"Vordergrundfarbe f\\xFCr Links im Text.\",\"Vordergrundfarbe f\\xFCr angeklickte Links im Text und beim Zeigen darauf mit der Maus.\",\"Vordergrundfarbe f\\xFCr vorformatierte Textsegmente.\",\"Hintergrundfarbe f\\xFCr Blockzitate im Text.\",\"Rahmenfarbe f\\xFCr blockquote-Elemente im Text.\",\"Hintergrundfarbe f\\xFCr Codebl\\xF6cke im Text.\",\"Schattenfarbe von Widgets wie zum Beispiel Suchen/Ersetzen innerhalb des Editors.\",\"Die Rahmenfarbe von Widgets, z.\\xA0B. Suchen/Ersetzen im Editor.\",\"Hintergrund f\\xFCr Eingabefeld.\",\"Vordergrund f\\xFCr Eingabefeld.\",\"Rahmen f\\xFCr Eingabefeld.\",\"Rahmenfarbe f\\xFCr aktivierte Optionen in Eingabefeldern.\",\"Hintergrundfarbe f\\xFCr aktivierte Optionen in Eingabefeldern.\",\"Hintergrundfarbe beim Daraufzeigen f\\xFCr Optionen in Eingabefeldern.\",\"Vordergrundfarbe f\\xFCr aktivierte Optionen in Eingabefeldern.\",\"Eingabefeld-Vordergrundfarbe f\\xFCr Platzhaltertext.\",\"Hintergrundfarbe bei der Eingabevalidierung f\\xFCr den Schweregrad der Information.\",\"Vordergrundfarbe bei der Eingabevalidierung f\\xFCr den Schweregrad der Information.\",\"Rahmenfarbe bei der Eingabevalidierung f\\xFCr den Schweregrad der Information.\",\"Hintergrundfarbe bei der Eingabevalidierung f\\xFCr den Schweregrad der Warnung.\",\"Vordergrundfarbe bei der Eingabevalidierung f\\xFCr den Schweregrad der Warnung.\",\"Rahmenfarbe bei der Eingabevalidierung f\\xFCr den Schweregrad der Warnung.\",\"Hintergrundfarbe bei der Eingabevalidierung f\\xFCr den Schweregrad des Fehlers.\",\"Vordergrundfarbe bei der Eingabevalidierung f\\xFCr den Schweregrad des Fehlers.\",\"Rahmenfarbe bei der Eingabevalidierung f\\xFCr den Schweregrad des Fehlers.\",\"Hintergrund f\\xFCr Dropdown.\",\"Hintergrund f\\xFCr Dropdownliste.\",\"Vordergrund f\\xFCr Dropdown.\",\"Rahmen f\\xFCr Dropdown.\",\"Vordergrundfarbe der Schaltfl\\xE4che.\",\"Farbe des Schaltfl\\xE4chentrennzeichens.\",\"Hintergrundfarbe der Schaltfl\\xE4che.\",\"Hintergrundfarbe der Schaltfl\\xE4che, wenn darauf gezeigt wird.\",\"Rahmenfarbe der Schaltfl\\xE4che.\",\"Sekund\\xE4re Vordergrundfarbe der Schaltfl\\xE4che.\",\"Hintergrundfarbe der sekund\\xE4ren Schaltfl\\xE4che.\",\"Hintergrundfarbe der sekund\\xE4ren Schaltfl\\xE4che beim Daraufzeigen.\",\"Hintergrundfarbe f\\xFCr Badge. Badges sind kurze Info-Texte, z.B. f\\xFCr Anzahl Suchergebnisse.\",\"Vordergrundfarbe f\\xFCr Badge. Badges sind kurze Info-Texte, z.B. f\\xFCr Anzahl Suchergebnisse.\",\"Schatten der Scrollleiste, um anzuzeigen, dass die Ansicht gescrollt wird.\",\"Hintergrundfarbe vom Scrollbar-Schieber\",\"Hintergrundfarbe des Schiebereglers, wenn darauf gezeigt wird.\",\"Hintergrundfarbe des Schiebereglers, wenn darauf geklickt wird.\",\"Hintergrundfarbe des Fortschrittbalkens, der f\\xFCr zeitintensive Vorg\\xE4nge angezeigt werden kann.\",\"Hintergrundfarbe f\\xFCr Fehlertext im Editor. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Vordergrundfarbe von Fehlerunterstreichungen im Editor.\",\"Wenn festgelegt, wird die Farbe doppelter Unterstreichungen f\\xFCr Fehler im Editor angezeigt.\",\"Hintergrundfarbe f\\xFCr Warnungstext im Editor. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Vordergrundfarbe von Warnungsunterstreichungen im Editor.\",\"Wenn festgelegt, wird die Farbe doppelter Unterstreichungen f\\xFCr Warnungen im Editor angezeigt.\",\"Hintergrundfarbe f\\xFCr Infotext im Editor. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Vordergrundfarbe von Informationsunterstreichungen im Editor.\",\"Wenn festgelegt, wird die Farbe doppelter Unterstreichungen f\\xFCr Infos im Editor angezeigt.\",\"Vordergrundfarbe der Hinweisunterstreichungen im Editor.\",\"Wenn festgelegt, wird die Farbe doppelter Unterstreichungen f\\xFCr Hinweise im Editor angezeigt.\",\"Rahmenfarbe aktiver Trennleisten.\",\"Hintergrundfarbe des Editors.\",\"Standardvordergrundfarbe des Editors.\",\"Einrastfunktion der Hintergrundfarbe f\\xFCr den Editor\",\"Einrastfunktion beim Daraufzeigen der Hintergrundfarbe f\\xFCr den Editor\",\"Hintergrundfarbe von Editor-Widgets wie zum Beispiel Suchen/Ersetzen.\",\"Vordergrundfarbe f\\xFCr Editorwidgets wie Suchen/Ersetzen.\",\"Rahmenfarbe von Editorwigdets. Die Farbe wird nur verwendet, wenn f\\xFCr das Widget ein Rahmen verwendet wird und die Farbe nicht von einem Widget \\xFCberschrieben wird.\",\"Rahmenfarbe der Gr\\xF6\\xDFenanpassungsleiste von Editorwigdets. Die Farbe wird nur verwendet, wenn f\\xFCr das Widget ein Gr\\xF6\\xDFenanpassungsrahmen verwendet wird und die Farbe nicht von einem Widget au\\xDFer Kraft gesetzt wird.\",\"Schnellauswahl der Hintergrundfarbe. Im Widget f\\xFCr die Schnellauswahl sind Auswahlelemente wie die Befehlspalette enthalten.\",\"Vordergrundfarbe der Schnellauswahl. Im Widget f\\xFCr die Schnellauswahl sind Auswahlelemente wie die Befehlspalette enthalten.\",\"Hintergrundfarbe f\\xFCr den Titel der Schnellauswahl. Im Widget f\\xFCr die Schnellauswahl sind Auswahlelemente wie die Befehlspalette enthalten.\",\"Schnellauswahlfarbe f\\xFCr das Gruppieren von Bezeichnungen.\",\"Schnellauswahlfarbe f\\xFCr das Gruppieren von Rahmen.\",\"Die Hintergrundfarbe der Tastenbindungsbeschriftung. Die Tastenbindungsbeschriftung wird verwendet, um eine Tastenkombination darzustellen.\",\"Die Vordergrundfarbe der Tastenbindungsbeschriftung. Die Tastenbindungsbeschriftung wird verwendet, um eine Tastenkombination darzustellen.\",\"Die Rahmenfarbe der Tastenbindungsbeschriftung. Die Tastenbindungsbeschriftung wird verwendet, um eine Tastenkombination darzustellen.\",\"Die Rahmenfarbe der Schaltfl\\xE4che der Tastenbindungsbeschriftung. Die Tastenbindungsbeschriftung wird verwendet, um eine Tastenkombination darzustellen.\",\"Farbe der Editor-Auswahl.\",\"Farbe des gew\\xE4hlten Text f\\xFCr einen hohen Kontrast\",\"Die Farbe der Auswahl befindet sich in einem inaktiven Editor. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegende Dekorationen verdeckt.\",\"Farbe f\\xFCr Bereiche mit dem gleichen Inhalt wie die Auswahl. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Randfarbe f\\xFCr Bereiche, deren Inhalt der Auswahl entspricht.\",\"Farbe des aktuellen Suchergebnisses.\",\"Farbe der anderen Suchergebnisse. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Farbe des Bereichs, der die Suche eingrenzt. Die Farbe darf nicht deckend sein, damit sie nicht die zugrunde liegenden Dekorationen verdeckt.\",\"Randfarbe des aktuellen Suchergebnisses.\",\"Randfarbe der anderen Suchtreffer.\",\"Rahmenfarbe des Bereichs, der die Suche eingrenzt. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Farbe der Abfrage\\xFCbereinstimmungen des Such-Editors\",\"Rahmenfarbe der Abfrage\\xFCbereinstimmungen des Such-Editors\",\"Farbe des Texts in der Abschlussmeldung des Such-Viewlets.\",\"Hervorhebung unterhalb des Worts, f\\xFCr das ein Hoverelement angezeigt wird. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Hintergrundfarbe des Editor-Mauszeigers.\",\"Vordergrundfarbe des Editor-Mauszeigers\",\"Rahmenfarbe des Editor-Mauszeigers.\",\"Hintergrundfarbe der Hoverstatusleiste des Editors.\",\"Farbe der aktiven Links.\",\"Vordergrundfarbe f\\xFCr Inlinehinweise\",\"Hintergrundfarbe f\\xFCr Inlinehinweise\",\"Vordergrundfarbe von Inlinehinweisen f\\xFCr Typen\",\"Hintergrundfarbe von Inlinehinweisen f\\xFCr Typen\",\"Vordergrundfarbe von Inlinehinweisen f\\xFCr Parameter\",\"Hintergrundfarbe von Inlinehinweisen f\\xFCr Parameter\",'Die f\\xFCr das Aktionssymbol \"Gl\\xFChbirne\" verwendete Farbe.','Die f\\xFCr das Aktionssymbol \"Automatische Gl\\xFChbirnenkorrektur\" verwendete Farbe.',\"Hintergrundfarbe f\\xFCr eingef\\xFCgten Text. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Hintergrundfarbe f\\xFCr Text, der entfernt wurde. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Hintergrundfarbe f\\xFCr eingef\\xFCgte Zeilen. Die Farbe darf nicht deckend sein, um zugrunde liegende Dekorationen nicht auszublenden.\",\"Hintergrundfarbe f\\xFCr Zeilen, die entfernt wurden. Die Farbe darf nicht deckend sein, um zugrunde liegende Dekorationen nicht auszublenden.\",\"Hintergrundfarbe f\\xFCr den Rand, an dem Zeilen eingef\\xFCgt wurden.\",\"Hintergrundfarbe f\\xFCr den Rand, an dem die Zeilen entfernt wurden.\",\"Vordergrund des Diff-\\xDCbersichtslineals f\\xFCr eingef\\xFCgten Inhalt.\",\"Vordergrund des Diff-\\xDCbersichtslineals f\\xFCr entfernten Inhalt.\",\"Konturfarbe f\\xFCr eingef\\xFCgten Text.\",\"Konturfarbe f\\xFCr entfernten Text.\",\"Die Rahmenfarbe zwischen zwei Text-Editoren.\",\"Farbe der diagonalen F\\xFCllung des Vergleichs-Editors. Die diagonale F\\xFCllung wird in Ansichten mit parallelem Vergleich verwendet.\",\"Die Hintergrundfarbe von unver\\xE4nderten Bl\\xF6cken im Diff-Editor.\",\"Die Vordergrundfarbe von unver\\xE4nderten Bl\\xF6cken im Diff-Editor.\",\"Die Hintergrundfarbe des unver\\xE4nderten Codes im Diff-Editor.\",\"Hintergrundfarbe der Liste/Struktur f\\xFCr das fokussierte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.\",\"Vordergrundfarbe der Liste/Struktur f\\xFCr das fokussierte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.\",\"Konturfarbe der Liste/Struktur f\\xFCr das fokussierte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.\",\"Umrissfarbe der Liste/des Baums f\\xFCr das fokussierte Element, wenn die Liste/der Baum aktiv und ausgew\\xE4hlt ist. Eine aktive Liste/Baum hat Tastaturfokus, eine inaktive nicht.\",\"Hintergrundfarbe der Liste/Struktur f\\xFCr das ausgew\\xE4hlte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.\",\"Vordergrundfarbe der Liste/Struktur f\\xFCr das ausgew\\xE4hlte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.\",\"Vordergrundfarbe des Symbols der Liste/Struktur f\\xFCr das ausgew\\xE4hlte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.\",\"Hintergrundfarbe der Liste/Struktur f\\xFCr das ausgew\\xE4hlte Element, wenn die Liste/Struktur inaktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.\",\"Vordergrundfarbe der Liste/Struktur f\\xFCr das ausgew\\xE4hlte Element, wenn die Liste/Baumstruktur inaktiv ist. Eine aktive Liste/Baumstruktur hat Tastaturfokus, eine inaktive hingegen nicht.\",\"Vordergrundfarbe des Symbols der Liste/Struktur f\\xFCr das ausgew\\xE4hlte Element, wenn die Liste/Struktur inaktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.\",\"Hintergrundfarbe der Liste/Struktur f\\xFCr das fokussierte Element, wenn die Liste/Struktur inaktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.\",\"Konturfarbe der Liste/Struktur f\\xFCr das fokussierte Element, wenn die Liste/Struktur inaktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.\",\"Hintergrund der Liste/Struktur, wenn mit der Maus auf Elemente gezeigt wird.\",\"Vordergrund der Liste/Struktur, wenn mit der Maus auf Elemente gezeigt wird.\",\"Drag & Drop-Hintergrund der Liste/Struktur, wenn Elemente mithilfe der Maus verschoben werden.\",\"Vordergrundfarbe der Liste/Struktur zur Trefferhervorhebung beim Suchen innerhalb der Liste/Struktur.\",\"Die Vordergrundfarbe der Liste/Struktur des Treffers hebt aktiv fokussierte Elemente hervor, wenn innerhalb der Liste / der Struktur gesucht wird.\",\"Vordergrundfarbe einer Liste/Struktur f\\xFCr ung\\xFCltige Elemente, z.B. ein nicht ausgel\\xF6ster Stamm im Explorer.\",\"Vordergrundfarbe f\\xFCr Listenelemente, die Fehler enthalten.\",\"Vordergrundfarbe f\\xFCr Listenelemente, die Warnungen enthalten.\",\"Hintergrundfarbe des Typfilterwidgets in Listen und Strukturen.\",\"Konturfarbe des Typfilterwidgets in Listen und Strukturen.\",\"Konturfarbe des Typfilterwidgets in Listen und Strukturen, wenn es keine \\xDCbereinstimmungen gibt.\",\"Schattenfarbe des Typfilterwidgets in Listen und Strukturen.\",\"Hintergrundfarbe der gefilterten \\xDCbereinstimmung\",\"Rahmenfarbe der gefilterten \\xDCbereinstimmung\",\"Strukturstrichfarbe f\\xFCr die Einzugsf\\xFChrungslinien.\",\"Strukturstrichfarbe f\\xFCr die Einzugslinien, die nicht aktiv sind.\",\"Tabellenrahmenfarbe zwischen Spalten.\",\"Hintergrundfarbe f\\xFCr ungerade Tabellenzeilen.\",\"Hintergrundfarbe f\\xFCr nicht hervorgehobene Listen-/Strukturelemente.\",\"Hintergrundfarbe von Kontrollk\\xE4stchenwidget.\",\"Hintergrundfarbe des Kontrollk\\xE4stchenwidgets, wenn das Element ausgew\\xE4hlt ist, in dem es sich befindet.\",\"Vordergrundfarbe von Kontrollk\\xE4stchenwidget.\",\"Rahmenfarbe von Kontrollk\\xE4stchenwidget.\",\"Rahmenfarbe des Kontrollk\\xE4stchenwidgets, wenn das Element ausgew\\xE4hlt ist, in dem es sich befindet.\",'Verwenden Sie stattdessen \"quickInputList.focusBackground\".',\"Die Hintergrundfarbe der Schnellauswahl f\\xFCr das fokussierte Element.\",\"Die Vordergrundfarbe des Symbols der Schnellauswahl f\\xFCr das fokussierte Element.\",\"Die Hintergrundfarbe der Schnellauswahl f\\xFCr das fokussierte Element.\",\"Rahmenfarbe von Men\\xFCs.\",\"Vordergrundfarbe von Men\\xFCelementen.\",\"Hintergrundfarbe von Men\\xFCelementen.\",\"Vordergrundfarbe des ausgew\\xE4hlten Men\\xFCelements im Men\\xFC.\",\"Hintergrundfarbe des ausgew\\xE4hlten Men\\xFCelements im Men\\xFC.\",\"Rahmenfarbe des ausgew\\xE4hlten Men\\xFCelements im Men\\xFC.\",\"Farbe eines Trenner-Men\\xFCelements in Men\\xFCs.\",\"Symbolleistenhintergrund beim Bewegen der Maus \\xFCber Aktionen\",\"Symbolleistengliederung beim Bewegen der Maus \\xFCber Aktionen\",\"Symbolleistenhintergrund beim Halten der Maus \\xFCber Aktionen\",\"Hervorhebungs-Hintergrundfarbe eines Codeschnipsel-Tabstopps.\",\"Hervorhebungs-Rahmenfarbe eines Codeschnipsel-Tabstopps.\",\"Hervorhebungs-Hintergrundfarbe des letzten Tabstopps eines Codeschnipsels.\",\"Rahmenfarbe zur Hervorhebung des letzten Tabstopps eines Codeschnipsels.\",\"Farbe der Breadcrumb-Elemente, die den Fokus haben.\",\"Hintergrundfarbe der Breadcrumb-Elemente.\",\"Farbe der Breadcrumb-Elemente, die den Fokus haben.\",\"Die Farbe der ausgew\\xE4hlten Breadcrumb-Elemente.\",\"Hintergrundfarbe des Breadcrumb-Auswahltools.\",\"Hintergrund des aktuellen Headers in Inlinezusammenf\\xFChrungskonflikten. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Hintergrund f\\xFCr den aktuellen Inhalt in Inlinezusammenf\\xFChrungskonflikten. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Hintergrund f\\xFCr eingehende Header in Inlinezusammenf\\xFChrungskonflikten. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Hintergrund f\\xFCr eingehenden Inhalt in Inlinezusammenf\\xFChrungskonflikten. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Headerhintergrund f\\xFCr gemeinsame Vorg\\xE4ngerelemente in Inlinezusammenf\\xFChrungskonflikten. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Hintergrund des Inhalts gemeinsamer Vorg\\xE4ngerelemente in Inlinezusammenf\\xFChrungskonflikt. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Rahmenfarbe f\\xFCr Kopfzeilen und die Aufteilung in Inline-Mergingkonflikten.\",\"Aktueller \\xDCbersichtslineal-Vordergrund f\\xFCr Inline-Mergingkonflikte.\",\"Eingehender \\xDCbersichtslineal-Vordergrund f\\xFCr Inline-Mergingkonflikte.\",\"Hintergrund des \\xDCbersichtslineals des gemeinsamen \\xFCbergeordneten Elements bei Inlinezusammenf\\xFChrungskonflikten.\",\"\\xDCbersichtslinealmarkerfarbe f\\xFCr das Suchen von \\xDCbereinstimmungen. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"\\xDCbersichtslinealmarkerfarbe f\\xFCr das Hervorheben der Auswahl. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.\",\"Minimap-Markerfarbe f\\xFCr gefundene \\xDCbereinstimmungen.\",\"Minimap-Markerfarbe f\\xFCr wiederholte Editorauswahlen.\",\"Minimap-Markerfarbe f\\xFCr die Editorauswahl.\",\"Minimapmarkerfarbe f\\xFCr Fehler\",\"Minimapmarkerfarbe f\\xFCr Warnungen\",\"Hintergrundfarbe der Minimap.\",\"Deckkraft von Vordergrundelementen, die in der Minimap gerendert werden. Beispiel: \\u201E#000000c0\\u201C wird die Elemente mit einer Deckkraft von 75 % rendern.\",\"Hintergrundfarbe des Minimap-Schiebereglers.\",\"Hintergrundfarbe des Minimap-Schiebereglers beim Daraufzeigen.\",\"Hintergrundfarbe des Minimap-Schiebereglers, wenn darauf geklickt wird.\",\"Die Farbe, die f\\xFCr das Problemfehlersymbol verwendet wird.\",\"Die Farbe, die f\\xFCr das Problemwarnsymbol verwendet wird.\",\"Die Farbe, die f\\xFCr das Probleminfosymbol verwendet wird.\",\"Die in Diagrammen verwendete Vordergrundfarbe.\",\"Die f\\xFCr horizontale Linien in Diagrammen verwendete Farbe.\",\"Die in Diagrammvisualisierungen verwendete Farbe Rot.\",\"Die in Diagrammvisualisierungen verwendete Farbe Blau.\",\"Die in Diagrammvisualisierungen verwendete Farbe Gelb.\",\"Die in Diagrammvisualisierungen verwendete Farbe Orange.\",\"Die in Diagrammvisualisierungen verwendete Farbe Gr\\xFCn.\",\"Die in Diagrammvisualisierungen verwendete Farbe Violett.\"],\"vs/platform/theme/common/iconRegistry\":[\"Die ID der zu verwendenden Schriftart. Sofern nicht festgelegt, wird die zuerst definierte Schriftart verwendet.\",\"Das der Symboldefinition zugeordnete Schriftzeichen.\",\"Symbol f\\xFCr Aktion zum Schlie\\xDFen in Widgets\",\"Symbol f\\xFCr den Wechsel zur vorherigen Editor-Position.\",\"Symbol f\\xFCr den Wechsel zur n\\xE4chsten Editor-Position.\"],\"vs/platform/undoRedo/common/undoRedoService\":[\"Die folgenden Dateien wurden geschlossen und auf dem Datentr\\xE4ger ge\\xE4ndert: {0}.\",\"Die folgenden Dateien wurden auf inkompatible Weise ge\\xE4ndert: {0}.\",'\"{0}\" konnte nicht f\\xFCr alle Dateien r\\xFCckg\\xE4ngig gemacht werden. {1}','\"{0}\" konnte nicht f\\xFCr alle Dateien r\\xFCckg\\xE4ngig gemacht werden. {1}','\"{0}\" konnte nicht f\\xFCr alle Dateien r\\xFCckg\\xE4ngig gemacht werden, da \\xC4nderungen an {1} vorgenommen wurden.','\"{0}\" konnte nicht f\\xFCr alle Dateien r\\xFCckg\\xE4ngig gemacht werden, weil bereits ein Vorgang zum R\\xFCckg\\xE4ngigmachen oder Wiederholen f\\xFCr \"{1}\" durchgef\\xFChrt wird.','\"{0}\" konnte nicht f\\xFCr alle Dateien r\\xFCckg\\xE4ngig gemacht werden, weil in der Zwischenzeit bereits ein Vorgang zum R\\xFCckg\\xE4ngigmachen oder Wiederholen durchgef\\xFChrt wurde.','M\\xF6chten Sie \"{0}\" f\\xFCr alle Dateien r\\xFCckg\\xE4ngig machen?',\"&&In {0} Dateien r\\xFCckg\\xE4ngig machen\",\"&&Datei r\\xFCckg\\xE4ngig machen\",'\"{0}\" konnte nicht r\\xFCckg\\xE4ngig gemacht werden, weil bereits ein Vorgang zum R\\xFCckg\\xE4ngigmachen oder Wiederholen durchgef\\xFChrt wird.','M\\xF6chten Sie \"{0}\" r\\xFCckg\\xE4ngig machen?',\"&&Ja\",\"Nein\",'\"{0}\" konnte nicht in allen Dateien wiederholt werden. {1}','\"{0}\" konnte nicht in allen Dateien wiederholt werden. {1}','\"{0}\" konnte nicht in allen Dateien wiederholt werden, da \\xC4nderungen an {1} vorgenommen wurden.','\"{0}\" konnte nicht f\\xFCr alle Dateien wiederholt werden, weil bereits ein Vorgang zum R\\xFCckg\\xE4ngigmachen oder Wiederholen f\\xFCr \"{1}\" durchgef\\xFChrt wird.','\"{0}\" konnte nicht f\\xFCr alle Dateien wiederholt werden, weil in der Zwischenzeit bereits ein Vorgang zum R\\xFCckg\\xE4ngigmachen oder Wiederholen durchgef\\xFChrt wurde.','\"{0}\" konnte nicht wiederholt werden, weil bereits ein Vorgang zum R\\xFCckg\\xE4ngigmachen oder Wiederholen durchgef\\xFChrt wird.'],\"vs/platform/workspace/common/workspace\":[\"Codearbeitsbereich\"]});\n\n//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.de.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/editor/editor.main.nls.es.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/editor/editor.main.nls.es\",{\"vs/base/browser/ui/actionbar/actionViewItems\":[\"{0} ({1})\"],\"vs/base/browser/ui/findinput/findInput\":[\"entrada\"],\"vs/base/browser/ui/findinput/findInputToggles\":[\"Coincidir may\\xFAsculas y min\\xFAsculas\",\"Solo palabras completas\",\"Usar expresi\\xF3n regular\"],\"vs/base/browser/ui/findinput/replaceInput\":[\"entrada\",\"Conservar may/min\"],\"vs/base/browser/ui/hover/hoverWidget\":[\"Inspect this in the accessible view with {0}.\",\"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\"],\"vs/base/browser/ui/iconLabel/iconLabelHover\":[\"Cargando...\"],\"vs/base/browser/ui/inputbox/inputBox\":[\"Error: {0}\",\"Advertencia: {0}\",\"Informaci\\xF3n: {0}\",\"para el historial\",\"Entrada borrada\"],\"vs/base/browser/ui/keybindingLabel/keybindingLabel\":[\"Sin enlazar\"],\"vs/base/browser/ui/selectBox/selectBoxCustom\":[\"Seleccionar cuadro\"],\"vs/base/browser/ui/toolbar/toolbar\":[\"M\\xE1s Acciones...\"],\"vs/base/browser/ui/tree/abstractTree\":[\"Filtrar\",\"Coincidencia aproximada\",\"Escriba texto para filtrar\",\"Escriba texto para buscar\",\"Escriba texto para buscar\",\"Cerrar\",\"No se encontraron elementos.\"],\"vs/base/common/actions\":[\"(vac\\xEDo)\"],\"vs/base/common/errorMessage\":[\"{0}: {1}\",\"Error del sistema ({0})\",\"Se ha producido un error desconocido. Consulte el registro para obtener m\\xE1s detalles.\",\"Se ha producido un error desconocido. Consulte el registro para obtener m\\xE1s detalles.\",\"{0} ({1} errores en total)\",\"Se ha producido un error desconocido. Consulte el registro para obtener m\\xE1s detalles.\"],\"vs/base/common/keybindingLabels\":[\"Ctrl\",\"May\\xFAs\",\"Alt\",\"Windows\",\"Ctrl\",\"May\\xFAs\",\"Alt\",\"Super\",\"Control\",\"May\\xFAs\",\"Opci\\xF3n\",\"Comando\",\"Control\",\"May\\xFAs\",\"Alt\",\"Windows\",\"Control\",\"May\\xFAs\",\"Alt\",\"Super\"],\"vs/base/common/platform\":[\"_\"],\"vs/editor/browser/controller/textAreaHandler\":[\"editor\",\"No se puede acceder al editor en este momento.\",\"{0} Para habilitar el modo optimizado para lectores de pantalla, use {1}\",\"{0} Para habilitar el modo optimizado para lector de pantalla, abra la selecci\\xF3n r\\xE1pida con {1} y ejecute el comando Alternar modo de accesibilidad del lector de pantalla, que actualmente no se puede desencadenar mediante el teclado.\",\"{0} Para asignar un enlace de teclado para el comando Alternar modo de accesibilidad del lector de pantalla, acceda al editor de enlaces de teclado con {1} y ejec\\xFAtelo.\"],\"vs/editor/browser/coreCommands\":[\"Anclar al final incluso cuando se vayan a l\\xEDneas m\\xE1s largas\",\"Anclar al final incluso cuando se vayan a l\\xEDneas m\\xE1s largas\",\"Cursores secundarios quitados\"],\"vs/editor/browser/editorExtensions\":[\"&&Deshacer\",\"Deshacer\",\"&&Rehacer\",\"Rehacer\",\"&&Seleccionar todo\",\"Seleccionar todo\"],\"vs/editor/browser/widget/codeEditorWidget\":[\"El n\\xFAmero de cursores se ha limitado a {0}. Considere la posibilidad de usar [buscar y reemplazar](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) para realizar cambios mayores o aumentar la configuraci\\xF3n del l\\xEDmite de varios cursores del editor.\",\"Aumentar el l\\xEDmite de varios cursores\"],\"vs/editor/browser/widget/diffEditor.contribution\":[\"Visor de diferencias accesibles\",\"Ir a la siguiente diferencia\",\"Abrir visor de diferencias accesibles\",\"Ir a la diferencia anterior\"],\"vs/editor/browser/widget/diffEditorWidget\":[\"Decoraci\\xF3n de l\\xEDnea para las inserciones en el editor de diferencias.\",\"Decoraci\\xF3n de l\\xEDnea para las eliminaciones en el editor de diferencias.\",\" usar May\\xFAs + F7 para navegar por los cambios\",\"Los archivos no se pueden comparar porque uno de ellos es demasiado grande.\",\"Haga clic para revertir el cambio\"],\"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\":['Icono de \"Insertar\" en el visor de diferencias accesible.','Icono de \"Quitar\" en el visor de diferencias accesible.','Icono de \"Cerrar\" en el visor de diferencias accesible.',\"Cerrar\",\"Visor de diferencias accesible. Utilice la flecha hacia arriba y hacia abajo para navegar.\",\"no se han cambiado l\\xEDneas\",\"1 l\\xEDnea cambiada\",\"{0} l\\xEDneas cambiadas\",\"Diferencia {0} de {1}: l\\xEDnea original {2}, {3}, l\\xEDnea modificada {4}, {5}\",\"Blanco\",\"{0} l\\xEDnea sin cambios {1}\",\"{0} l\\xEDnea original {1} l\\xEDnea modificada {2}\",\"+ {0} l\\xEDnea modificada {1}\",\"- {0} l\\xEDnea original {1}\"],\"vs/editor/browser/widget/diffEditorWidget2/colors\":[\"Color del borde del texto que se movi\\xF3 en el editor de diferencias.\",\"The active border color for text that got moved in the diff editor.\"],\"vs/editor/browser/widget/diffEditorWidget2/decorations\":[\"Decoraci\\xF3n de l\\xEDnea para las inserciones en el editor de diferencias.\",\"Decoraci\\xF3n de l\\xEDnea para las eliminaciones en el editor de diferencias.\",\"Haga clic para revertir el cambio\"],\"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\":[\" use {0} para abrir la ayuda de accesibilidad.\"],\"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\":[\"Copiar l\\xEDneas eliminadas\",\"Copiar l\\xEDnea eliminada\",\"Copiar l\\xEDneas cambiadas\",\"Copiar l\\xEDnea cambiada\",\"Copiar la l\\xEDnea eliminada ({0})\",\"Copiar l\\xEDnea cambiada ({0})\",\"Revertir este cambio\"],\"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\":[\"Code moved with changes to line {0}-{1}\",\"Code moved with changes from line {0}-{1}\",\"Code moved to line {0}-{1}\",\"Code moved from line {0}-{1}\"],\"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\":[\"Plegar la regi\\xF3n sin cambios\",\"Click or drag to show more above\",\"Show all\",\"Click or drag to show more below\",\"{0} hidden lines\",\"Double click to unfold\"],\"vs/editor/browser/widget/diffReview\":['Icono para \"Insertar\" en la revisi\\xF3n de diferencias.','Icono para \"Quitar\" en la revisi\\xF3n de diferencias.','Icono para \"Cerrar\" en la revisi\\xF3n de diferencias.',\"Cerrar\",\"no se han cambiado l\\xEDneas\",\"1 l\\xEDnea cambiada\",\"{0} l\\xEDneas cambiadas\",\"Diferencia {0} de {1}: l\\xEDnea original {2}, {3}, l\\xEDnea modificada {4}, {5}\",\"vac\\xEDo\",\"{0} l\\xEDnea sin cambios {1}\",\"{0} l\\xEDnea original {1} l\\xEDnea modificada {2}\",\"+ {0} l\\xEDnea modificada {1}\",\"- {0} l\\xEDnea original {1}\"],\"vs/editor/browser/widget/inlineDiffMargin\":[\"Copiar l\\xEDneas eliminadas\",\"Copiar l\\xEDnea eliminada\",\"Copiar l\\xEDneas cambiadas\",\"Copiar l\\xEDnea cambiada\",\"Copiar la l\\xEDnea eliminada ({0})\",\"Copiar l\\xEDnea cambiada ({0})\",\"Revertir este cambio\",\"Copiar la l\\xEDnea eliminada ({0})\",\"Copiar l\\xEDnea cambiada ({0})\"],\"vs/editor/common/config/editorConfigurationSchema\":[\"Editor\",\"El n\\xFAmero de espacios a los que equivale una tabulaci\\xF3n. Este valor se invalida en funci\\xF3n del contenido del archivo cuando {0} est\\xE1 activado.\",'N\\xFAmero de espacios usados para la sangr\\xEDa o \"tabSize\" para usar el valor de \"#editor.tabSize#\". Esta configuraci\\xF3n se invalida en funci\\xF3n del contenido del archivo cuando \"#editor.detectIndentation#\" est\\xE1 activado.','Insertar espacios al presionar \"TAB\". Este valor se invalida en funci\\xF3n del contenido del archivo cuando {0} est\\xE1 activado.',\"Controla si {0} y {1} se detectan autom\\xE1ticamente al abrir un archivo en funci\\xF3n del contenido de este.\",\"Quitar el espacio en blanco final autoinsertado.\",\"Manejo especial para archivos grandes para desactivar ciertas funciones de memoria intensiva.\",\"Habilita sugerencias basadas en palabras.\",\"Sugerir palabras solo del documento activo.\",\"Sugerir palabras de todos los documentos abiertos del mismo idioma.\",\"Sugerir palabras de todos los documentos abiertos.\",\"Controla de qu\\xE9 documentos se calculan las finalizaciones basadas en palabras.\",\"El resaltado sem\\xE1ntico est\\xE1 habilitado para todos los temas de color.\",\"El resaltado sem\\xE1ntico est\\xE1 deshabilitado para todos los temas de color.\",'El resaltado sem\\xE1ntico est\\xE1 configurado con el valor \"semanticHighlighting\" del tema de color actual.',\"Controla si se muestra semanticHighlighting para los idiomas que lo admiten.\",'Mantiene abiertos los editores interactivos, incluso al hacer doble clic en su contenido o presionar \"Escape\".',\"Las lineas por encima de esta longitud no se tokenizar\\xE1n por razones de rendimiento.\",\"Controla si la tokenizaci\\xF3n debe producirse de forma asincr\\xF3nica en un rol de trabajo.\",\"Controla si se debe registrar la tokenizaci\\xF3n asincr\\xF3nica. Solo para depuraci\\xF3n.\",\"Controla si se debe comprobar la tokenizaci\\xF3n asincr\\xF3nica con la tokenizaci\\xF3n en segundo plano heredada. Puede ralentizar la tokenizaci\\xF3n. Solo para depuraci\\xF3n.\",\"Define los corchetes que aumentan o reducen la sangr\\xEDa.\",\"Secuencia de cadena o corchete de apertura.\",\"Secuencia de cadena o corchete de cierre.\",\"Define los pares de corchetes coloreados por su nivel de anidamiento si est\\xE1 habilitada la coloraci\\xF3n de par de corchetes.\",\"Secuencia de cadena o corchete de apertura.\",\"Secuencia de cadena o corchete de cierre.\",\"Tiempo de espera en milisegundos despu\\xE9s del cual se cancela el c\\xE1lculo de diferencias. Utilice 0 para no usar tiempo de espera.\",\"Tama\\xF1o m\\xE1ximo de archivo en MB para el que calcular diferencias. Use 0 para no limitar.\",\"Controla si el editor de diferencias muestra las diferencias en paralelo o alineadas.\",\"If the diff editor width is smaller than this value, the inline view is used.\",\"If enabled and the editor width is too small, the inline view is used.\",\"Cuando est\\xE1 habilitado, el editor de diferencias muestra flechas en su margen de glifo para revertir los cambios.\",\"Cuando est\\xE1 habilitado, el editor de diferencias omite los cambios en los espacios en blanco iniciales o finales.\",\"Controla si el editor de diferencias muestra los indicadores +/- para los cambios agregados o quitados.\",\"Controla si el editor muestra CodeLens.\",\"Las l\\xEDneas no se ajustar\\xE1n nunca.\",\"Las l\\xEDneas se ajustar\\xE1n en el ancho de la ventanilla.\",\"Las l\\xEDneas se ajustar\\xE1n en funci\\xF3n de la configuraci\\xF3n de {0}.\",\"Usa el algoritmo de diferenciaci\\xF3n heredado.\",\"Usa el algoritmo de diferenciaci\\xF3n avanzada.\",\"Controls whether the diff editor shows unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as a minimum for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as context when comparing unchanged regions. Only works when {0} is set.\",\"Controlar si el editor de diferencias debe mostrar los movimientos de c\\xF3digo detectados. Solo funciona cuando {0} se establece.\",\"Controla si el editor de diferencias usa la implementaci\\xF3n nueva o la anterior.\",\"Controla si el editor de diferencias muestra decoraciones vac\\xEDas para ver d\\xF3nde se insertan o eliminan los caracteres.\"],\"vs/editor/common/config/editorOptions\":[\"Usar las API de la plataforma para detectar cu\\xE1ndo se conecta un lector de pantalla\",\"Optimizar para usar con un lector de pantalla\",\"Supongamos que no hay un lector de pantalla conectado\",\"Controla si la interfaz de usuario debe ejecutarse en un modo en el que est\\xE9 optimizada para lectores de pantalla.\",\"Controla si se inserta un car\\xE1cter de espacio al comentar.\",\"Controla si las l\\xEDneas vac\\xEDas deben ignorarse con la opci\\xF3n de alternar, agregar o quitar acciones para los comentarios de l\\xEDnea.\",\"Controla si al copiar sin selecci\\xF3n se copia la l\\xEDnea actual.\",\"Controla si el cursor debe saltar para buscar coincidencias mientras se escribe.\",\"Nunca inicializar la cadena de b\\xFAsqueda desde la selecci\\xF3n del editor.\",\"Siempre inicializar la cadena de b\\xFAsqueda desde la selecci\\xF3n del editor, incluida la palabra en la posici\\xF3n del cursor.\",\"Solo inicializar la cadena de b\\xFAsqueda desde la selecci\\xF3n del editor.\",\"Controla si la cadena de b\\xFAsqueda del widget de b\\xFAsqueda se inicializa desde la selecci\\xF3n del editor.\",\"No activar nunca Buscar en selecci\\xF3n autom\\xE1ticamente (predeterminado).\",\"Activar siempre Buscar en selecci\\xF3n autom\\xE1ticamente.\",\"Activar Buscar en la selecci\\xF3n autom\\xE1ticamente cuando se seleccionen varias l\\xEDneas de contenido.\",\"Controla la condici\\xF3n para activar la b\\xFAsqueda en la selecci\\xF3n de forma autom\\xE1tica.\",\"Controla si el widget de b\\xFAsqueda debe leer o modificar el Portapapeles de b\\xFAsqueda compartido en macOS.\",\"Controla si Encontrar widget debe agregar m\\xE1s l\\xEDneas en la parte superior del editor. Si es true, puede desplazarse m\\xE1s all\\xE1 de la primera l\\xEDnea cuando Encontrar widget est\\xE1 visible.\",\"Controla si la b\\xFAsqueda se reinicia autom\\xE1ticamente desde el principio (o el final) cuando no se encuentran m\\xE1s coincidencias.\",'Habilita o deshabilita las ligaduras tipogr\\xE1ficas (caracter\\xEDsticas de fuente \"calt\" y \"liga\"). C\\xE1mbielo a una cadena para el control espec\\xEDfico de la propiedad de CSS \"font-feature-settings\".','Propiedad de CSS \"font-feature-settings\" expl\\xEDcita. En su lugar, puede pasarse un valor booleano si solo es necesario activar o desactivar las ligaduras.','Configura las ligaduras tipogr\\xE1ficas o las caracter\\xEDsticas de fuente. Puede ser un valor booleano para habilitar o deshabilitar las ligaduras o bien una cadena para el valor de la propiedad \"font-feature-settings\" de CSS.',\"Habilita o deshabilita la traducci\\xF3n del grosor de font-weight a font-variation-settings. Cambie esto a una cadena para el control espec\\xEDfico de la propiedad CSS 'font-variation-settings'.\",\"Propiedad CSS expl\\xEDcita 'font-variation-settings'. En su lugar, se puede pasar un valor booleano si solo es necesario traducir font-weight a font-variation-settings.\",\"Configura variaciones de fuente. Puede ser un booleano para habilitar o deshabilitar la traducci\\xF3n de font-weight a font-variation-settings o una cadena para el valor de la propiedad CSS 'font-variation-settings'.\",\"Controla el tama\\xF1o de fuente en p\\xEDxeles.\",'Solo se permiten las palabras clave \"normal\" y \"negrita\" o los n\\xFAmeros entre 1 y 1000.','Controla el grosor de la fuente. Acepta las palabras clave \"normal\" y \"negrita\" o los n\\xFAmeros entre 1 y 1000.',\"Mostrar vista de inspecci\\xF3n de los resultados (predeterminado)\",\"Ir al resultado principal y mostrar una vista de inspecci\\xF3n\",\"Vaya al resultado principal y habilite la navegaci\\xF3n sin peek para otros\",'Esta configuraci\\xF3n est\\xE1 en desuso. Use configuraciones separadas como \"editor.editor.gotoLocation.multipleDefinitions\" o \"editor.editor.gotoLocation.multipleImplementations\" en su lugar.','Controla el comportamiento del comando \"Ir a definici\\xF3n\" cuando existen varias ubicaciones de destino.','Controla el comportamiento del comando \"Ir a definici\\xF3n de tipo\" cuando existen varias ubicaciones de destino.','Controla el comportamiento del comando \"Ir a declaraci\\xF3n\" cuando existen varias ubicaciones de destino.','Controla el comportamiento del comando \"Ir a implementaciones\" cuando existen varias ubicaciones de destino.','Controla el comportamiento del comando \"Ir a referencias\" cuando existen varias ubicaciones de destino.','Identificador de comando alternativo que se ejecuta cuando el resultado de \"Ir a definici\\xF3n\" es la ubicaci\\xF3n actual.','Id. de comando alternativo que se est\\xE1 ejecutando cuando el resultado de \"Ir a definici\\xF3n de tipo\" es la ubicaci\\xF3n actual.','Id. de comando alternativo que se est\\xE1 ejecutando cuando el resultado de \"Ir a declaraci\\xF3n\" es la ubicaci\\xF3n actual.','Id. de comando alternativo que se est\\xE1 ejecutando cuando el resultado de \"Ir a implementaci\\xF3n\" es la ubicaci\\xF3n actual.','Identificador de comando alternativo que se ejecuta cuando el resultado de \"Ir a referencia\" es la ubicaci\\xF3n actual.',\"Controla si se muestra la informaci\\xF3n al mantener el puntero sobre un elemento.\",\"Controla el retardo en milisegundos despu\\xE9s del cual se muestra la informaci\\xF3n al mantener el puntero sobre un elemento.\",\"Controla si la informaci\\xF3n que aparece al mantener el puntero sobre un elemento permanece visible al mover el mouse sobre este.\",\"Preferir mostrar los desplazamientos por encima de la l\\xEDnea, si hay espacio.\",\"Se supone que todos los caracteres son del mismo ancho. Este es un algoritmo r\\xE1pido que funciona correctamente para fuentes monoespaciales y ciertos scripts (como caracteres latinos) donde los glifos tienen el mismo ancho.\",\"Delega el c\\xE1lculo de puntos de ajuste en el explorador. Es un algoritmo lento, que podr\\xEDa causar bloqueos para archivos grandes, pero funciona correctamente en todos los casos.\",\"Controla el algoritmo que calcula los puntos de ajuste. Tenga en cuenta que, en el modo de accesibilidad, se usar\\xE1 el modo avanzado para obtener la mejor experiencia.\",\"Habilita la bombilla de acci\\xF3n de c\\xF3digo en el editor.\",\"Muestra los \\xE1mbitos actuales anidados durante el desplazamiento en la parte superior del editor.\",\"Define el n\\xFAmero m\\xE1ximo de l\\xEDneas r\\xE1pidas que se mostrar\\xE1n.\",\"Define el modelo que se va a usar para determinar qu\\xE9 l\\xEDneas se van a pegar. Si el modelo de esquema no existe, recurrir\\xE1 al modelo del proveedor de plegado que recurre al modelo de sangr\\xEDa. Este orden se respeta en los tres casos.\",\"Enable scrolling of the sticky scroll widget with the editor's horizontal scrollbar.\",\"Habilita las sugerencias de incrustaci\\xF3n en el editor.\",\"Las sugerencias de incrustaci\\xF3n est\\xE1n habilitadas\",\"Las sugerencias de incrustaci\\xF3n se muestran de forma predeterminada y se ocultan cuando se mantiene presionado {0}\",\"Las sugerencias de incrustaci\\xF3n est\\xE1n ocultas de forma predeterminada y se muestran al mantener presionado {0}\",\"Las sugerencias de incrustaci\\xF3n est\\xE1n deshabilitadas\",\"Controla el tama\\xF1o de fuente de las sugerencias de incrustaci\\xF3n en el editor. Como valor predeterminado, se usa {0} cuando el valor configurado es menor que {1} o mayor que el tama\\xF1o de fuente del editor.\",\"Controla la familia de fuentes de sugerencias de incrustaci\\xF3n en el editor. Cuando se establece en vac\\xEDo, se usa el {0}.\",\"Habilita el relleno alrededor de las sugerencias de incrustaci\\xF3n en el editor.\",`Controla el alto de l\\xEDnea. \\r\n - Use 0 para calcular autom\\xE1ticamente el alto de l\\xEDnea a partir del tama\\xF1o de la fuente.\\r\n - Los valores entre 0 y 8 se usar\\xE1n como multiplicador con el tama\\xF1o de fuente.\\r\n - Los valores mayores o igual que 8 se usar\\xE1n como valores efectivos.`,\"Controla si se muestra el minimapa.\",\"Controla si el minimapa se oculta autom\\xE1ticamente.\",\"El minimapa tiene el mismo tama\\xF1o que el contenido del editor (y podr\\xEDa desplazarse).\",\"El minimapa se estirar\\xE1 o reducir\\xE1 seg\\xFAn sea necesario para ocupar la altura del editor (sin desplazamiento).\",\"El minimapa se reducir\\xE1 seg\\xFAn sea necesario para no ser nunca m\\xE1s grande que el editor (sin desplazamiento).\",\"Controla el tama\\xF1o del minimapa.\",\"Controla en qu\\xE9 lado se muestra el minimapa.\",\"Controla cu\\xE1ndo se muestra el control deslizante del minimapa.\",\"Escala del contenido dibujado en el minimapa: 1, 2 o 3.\",\"Represente los caracteres reales en una l\\xEDnea, por oposici\\xF3n a los bloques de color.\",\"Limite el ancho del minimapa para representar como mucho un n\\xFAmero de columnas determinado.\",\"Controla la cantidad de espacio entre el borde superior del editor y la primera l\\xEDnea.\",\"Controla el espacio entre el borde inferior del editor y la \\xFAltima l\\xEDnea.\",\"Habilita un elemento emergente que muestra documentaci\\xF3n de los par\\xE1metros e informaci\\xF3n de los tipos mientras escribe.\",\"Controla si el men\\xFA de sugerencias de par\\xE1metros se cicla o se cierra al llegar al final de la lista.\",\"Las sugerencias r\\xE1pidas se muestran dentro del widget de sugerencias\",\"Las sugerencias r\\xE1pidas se muestran como texto fantasma\",\"Las sugerencias r\\xE1pidas est\\xE1n deshabilitadas\",\"Habilita sugerencias r\\xE1pidas en las cadenas.\",\"Habilita sugerencias r\\xE1pidas en los comentarios.\",\"Habilita sugerencias r\\xE1pidas fuera de las cadenas y los comentarios.\",\"Controla si las sugerencias deben mostrarse autom\\xE1ticamente al escribir. Puede controlarse para la escritura en comentarios, cadenas y otro c\\xF3digo. Las sugerencias r\\xE1pidas pueden configurarse para mostrarse como texto fantasma o con el widget de sugerencias. Tenga tambi\\xE9n en cuenta la configuraci\\xF3n '{0}' que controla si las sugerencias son desencadenadas por caracteres especiales.\",\"Los n\\xFAmeros de l\\xEDnea no se muestran.\",\"Los n\\xFAmeros de l\\xEDnea se muestran como un n\\xFAmero absoluto.\",\"Los n\\xFAmeros de l\\xEDnea se muestran como distancia en l\\xEDneas a la posici\\xF3n del cursor.\",\"Los n\\xFAmeros de l\\xEDnea se muestran cada 10 l\\xEDneas.\",\"Controla la visualizaci\\xF3n de los n\\xFAmeros de l\\xEDnea.\",\"N\\xFAmero de caracteres monoespaciales en los que se representar\\xE1 esta regla del editor.\",\"Color de esta regla del editor.\",\"Muestra reglas verticales despu\\xE9s de un cierto n\\xFAmero de caracteres monoespaciados. Usa m\\xFAltiples valores para mostrar m\\xFAltiples reglas. Si la matriz est\\xE1 vac\\xEDa, no se muestran reglas.\",\"La barra de desplazamiento vertical estar\\xE1 visible solo cuando sea necesario.\",\"La barra de desplazamiento vertical estar\\xE1 siempre visible.\",\"La barra de desplazamiento vertical estar\\xE1 siempre oculta.\",\"Controla la visibilidad de la barra de desplazamiento vertical.\",\"La barra de desplazamiento horizontal estar\\xE1 visible solo cuando sea necesario.\",\"La barra de desplazamiento horizontal estar\\xE1 siempre visible.\",\"La barra de desplazamiento horizontal estar\\xE1 siempre oculta.\",\"Controla la visibilidad de la barra de desplazamiento horizontal.\",\"Ancho de la barra de desplazamiento vertical.\",\"Altura de la barra de desplazamiento horizontal.\",\"Controla si al hacer clic se desplaza por p\\xE1gina o salta a la posici\\xF3n donde se hace clic.\",\"Controla si se resaltan todos los caracteres ASCII no b\\xE1sicos. Solo los caracteres entre U+0020 y U+007E, tabulaci\\xF3n, avance de l\\xEDnea y retorno de carro se consideran ASCII b\\xE1sicos.\",\"Controla si se resaltan los caracteres que solo reservan espacio o que no tienen ancho.\",\"Controla si se resaltan caracteres que se pueden confundir con caracteres ASCII b\\xE1sicos, excepto los que son comunes en la configuraci\\xF3n regional del usuario actual.\",\"Controla si los caracteres de los comentarios tambi\\xE9n deben estar sujetos al resaltado Unicode.\",\"Controla si los caracteres de las cadenas tambi\\xE9n deben estar sujetos al resaltado Unicode.\",\"Define los caracteres permitidos que no se resaltan.\",\"Los caracteres Unicode que son comunes en las configuraciones regionales permitidas no se resaltan.\",\"Controla si se deben mostrar autom\\xE1ticamente las sugerencias alineadas en el editor.\",\"Muestra la barra de herramientas de sugerencias insertadas cada vez que se muestra una sugerencia insertada.\",\"Muestra la barra de herramientas de sugerencias insertadas al mantener el puntero sobre una sugerencia insertada.\",\"Controla cu\\xE1ndo mostrar la barra de herramientas de sugerencias insertadas.\",\"Controla c\\xF3mo interact\\xFAan las sugerencias insertadas con el widget de sugerencias. Si se habilita, el widget de sugerencias no se muestra autom\\xE1ticamente cuando hay sugerencias insertadas disponibles.\",\"Controla si est\\xE1 habilitada o no la coloraci\\xF3n de pares de corchetes. Use {0} para invalidar los colores de resaltado de corchete.\",\"Controla si cada tipo de corchete tiene su propio grupo de colores independiente.\",\"Habilita gu\\xEDas de par de corchetes.\",\"Habilita gu\\xEDas de par de corchetes solo para el par de corchetes activo.\",\"Deshabilita las gu\\xEDas de par de corchetes.\",\"Controla si est\\xE1n habilitadas las gu\\xEDas de pares de corchetes.\",\"Habilita gu\\xEDas horizontales como adici\\xF3n a gu\\xEDas de par de corchetes verticales.\",\"Habilita gu\\xEDas horizontales solo para el par de corchetes activo.\",\"Deshabilita las gu\\xEDas de par de corchetes horizontales.\",\"Controla si est\\xE1n habilitadas las gu\\xEDas de pares de corchetes horizontales.\",\"Controla si el editor debe resaltar el par de corchetes activo.\",\"Controla si el editor debe representar gu\\xEDas de sangr\\xEDa.\",\"Resalta la gu\\xEDa de sangr\\xEDa activa.\",\"Resalta la gu\\xEDa de sangr\\xEDa activa incluso si se resaltan las gu\\xEDas de corchetes.\",\"No resalta la gu\\xEDa de sangr\\xEDa activa.\",\"Controla si el editor debe resaltar la gu\\xEDa de sangr\\xEDa activa.\",\"Inserte la sugerencia sin sobrescribir el texto a la derecha del cursor.\",\"Inserte la sugerencia y sobrescriba el texto a la derecha del cursor.\",\"Controla si las palabras se sobrescriben al aceptar la finalizaci\\xF3n. Tenga en cuenta que esto depende de las extensiones que participan en esta caracter\\xEDstica.\",\"Controla si el filtrado y la ordenaci\\xF3n de sugerencias se tienen en cuenta para los errores ortogr\\xE1ficos peque\\xF1os.\",\"Controla si la ordenaci\\xF3n mejora las palabras que aparecen cerca del cursor.\",'Controla si las selecciones de sugerencias recordadas se comparten entre m\\xFAltiples \\xE1reas de trabajo y ventanas (necesita \"#editor.suggestSelection#\").',\"Seleccione siempre una sugerencia cuando se desencadene IntelliSense autom\\xE1ticamente.\",\"Nunca seleccione una sugerencia cuando desencadene IntelliSense autom\\xE1ticamente.\",\"Seleccione una sugerencia solo cuando desencadene IntelliSense desde un car\\xE1cter de desencadenador.\",\"Seleccione una sugerencia solo cuando desencadene IntelliSense mientras escribe.\",\"Controla si se selecciona una sugerencia cuando se muestra el widget. Tenga en cuenta que esto solo se aplica a las sugerencias desencadenadas autom\\xE1ticamente (`#editor.quickSuggestions#` y `#editor.suggestOnTriggerCharacters#`) y que siempre se selecciona una sugerencia cuando se invoca expl\\xEDcitamente, por ejemplo, a trav\\xE9s de 'Ctrl+Espacio'.\",\"Controla si un fragmento de c\\xF3digo activo impide sugerencias r\\xE1pidas.\",\"Controla si mostrar u ocultar iconos en sugerencias.\",\"Controla la visibilidad de la barra de estado en la parte inferior del widget de sugerencias.\",\"Controla si se puede obtener una vista previa del resultado de la sugerencia en el editor.\",\"Controla si los detalles de sugerencia se muestran incorporados con la etiqueta o solo en el widget de detalles.\",\"La configuraci\\xF3n est\\xE1 en desuso. Ahora puede cambiarse el tama\\xF1o del widget de sugerencias.\",'Esta configuraci\\xF3n est\\xE1 en desuso. Use configuraciones separadas como \"editor.suggest.showKeyword\" o \"editor.suggest.showSnippets\" en su lugar.','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"method\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de \"funci\\xF3n\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"constructor\".','Cuando se activa IntelliSense muestra sugerencias \"obsoletas\".','Cuando se activa el filtro IntelliSense se requiere que el primer car\\xE1cter coincida con el inicio de una palabra. Por ejemplo, \"c\" en \"Consola\" o \"WebContext\" but _not_ on \"descripci\\xF3n\". Si se desactiva, IntelliSense mostrar\\xE1 m\\xE1s resultados, pero los ordenar\\xE1 seg\\xFAn la calidad de la coincidencia.','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"field\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"variable\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"class\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"struct\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"interface\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"module\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"property\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"event\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"operator\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"unit\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de \"value\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"constant\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"enum\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"enumMember\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"keyword\".','Si est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"text\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de \"color\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"file\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"reference\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"customcolor\".','Si est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"folder\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"typeParameter\".','Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias de tipo \"snippet\".',\"Cuando est\\xE1 habilitado, IntelliSense muestra sugerencias del usuario.\",\"Cuando est\\xE1 habilitado IntelliSense muestra sugerencias para problemas.\",\"Indica si los espacios en blanco iniciales y finales deben seleccionarse siempre.\",'Indica si se deben seleccionar las subpalabras (como \"foo\" en \"fooBar\" o \"foo_bar\").',\"No hay sangr\\xEDa. Las l\\xEDneas ajustadas comienzan en la columna 1.\",\"A las l\\xEDneas ajustadas se les aplica la misma sangr\\xEDa que al elemento primario.\",\"A las l\\xEDneas ajustadas se les aplica una sangr\\xEDa de +1 respecto al elemento primario.\",\"A las l\\xEDneas ajustadas se les aplica una sangr\\xEDa de +2 respecto al elemento primario.\",\"Controla la sangr\\xEDa de las l\\xEDneas ajustadas.\",\"Controla si puede arrastrar y colocar un archivo en un editor de texto manteniendo presionada la tecla `may\\xFAs` (en lugar de abrir el archivo en un editor).\",\"Controla si se muestra un widget al colocar archivos en el editor. Este widget le permite controlar c\\xF3mo se coloca el archivo.\",\"Muestra el widget del selector de colocaci\\xF3n despu\\xE9s de colocar un archivo en el editor.\",\"No mostrar nunca el widget del selector de colocaci\\xF3n. En su lugar, siempre se usa el proveedor de colocaci\\xF3n predeterminado.\",\"Controla si se puede pegar contenido de distintas formas.\",\"Controla si se muestra un widget al pegar contenido en el editor. Este widget le permite controlar c\\xF3mo se pega el archivo.\",\"Muestra el widget del selector de pegado despu\\xE9s de pegar contenido en el editor.\",\"No mostrar nunca el widget del selector de pegado. En su lugar, siempre se usa el comportamiento de pegado predeterminado.\",'Controla si se deben aceptar sugerencias en los caracteres de confirmaci\\xF3n. Por ejemplo, en Javascript, el punto y coma (\";\") puede ser un car\\xE1cter de confirmaci\\xF3n que acepta una sugerencia y escribe ese car\\xE1cter.','Aceptar solo una sugerencia con \"Entrar\" cuando realiza un cambio textual.','Controla si las sugerencias deben aceptarse con \"Entrar\", adem\\xE1s de \"TAB\". Ayuda a evitar la ambig\\xFCedad entre insertar nuevas l\\xEDneas o aceptar sugerencias.',\"Controla el n\\xFAmero de l\\xEDneas del editor que pueden ser le\\xEDdas por un lector de pantalla a la vez. Cuando detectamos un lector de pantalla, fijamos autom\\xE1ticamente el valor por defecto en 500. Advertencia: esto tiene una implicaci\\xF3n de rendimiento para n\\xFAmeros mayores que el predeterminado.\",\"Contenido del editor\",\"Controlar si un lector de pantalla anuncia sugerencias insertadas.\",\"Utilizar las configuraciones del lenguaje para determinar cu\\xE1ndo cerrar los corchetes autom\\xE1ticamente.\",\"Cerrar autom\\xE1ticamente los corchetes cuando el cursor est\\xE9 a la izquierda de un espacio en blanco.\",\"Controla si el editor debe cerrar autom\\xE1ticamente los corchetes despu\\xE9s de que el usuario agregue un corchete de apertura.\",\"Quite los corchetes o las comillas de cierre adyacentes solo si se insertaron autom\\xE1ticamente.\",\"Controla si el editor debe quitar los corchetes o las comillas de cierre adyacentes al eliminar.\",\"Escriba en las comillas o los corchetes solo si se insertaron autom\\xE1ticamente.\",\"Controla si el editor debe escribir entre comillas o corchetes.\",\"Utilizar las configuraciones del lenguaje para determinar cu\\xE1ndo cerrar las comillas autom\\xE1ticamente. \",\"Cerrar autom\\xE1ticamente las comillas cuando el cursor est\\xE9 a la izquierda de un espacio en blanco. \",\"Controla si el editor debe cerrar autom\\xE1ticamente las comillas despu\\xE9s de que el usuario agrega uma comilla de apertura.\",\"El editor no insertar\\xE1 la sangr\\xEDa autom\\xE1ticamente.\",\"El editor mantendr\\xE1 la sangr\\xEDa de la l\\xEDnea actual.\",\"El editor respetar\\xE1 la sangr\\xEDa de la l\\xEDnea actual y los corchetes definidos por el idioma.\",\"El editor mantendr\\xE1 la sangr\\xEDa de la l\\xEDnea actual, respetar\\xE1 los corchetes definidos por el idioma e invocar\\xE1 onEnterRules especiales definidos por idiomas.\",\"El editor respetar\\xE1 la sangr\\xEDa de la l\\xEDnea actual, los corchetes definidos por idiomas y las reglas indentationRules definidas por idiomas, adem\\xE1s de invocar reglas onEnterRules especiales.\",\"Controla si el editor debe ajustar autom\\xE1ticamente la sangr\\xEDa mientras los usuarios escriben, pegan, mueven o sangran l\\xEDneas.\",\"Use las configuraciones de idioma para determinar cu\\xE1ndo delimitar las selecciones autom\\xE1ticamente.\",\"Envolver con comillas, pero no con corchetes.\",\"Envolver con corchetes, pero no con comillas.\",\"Controla si el editor debe rodear autom\\xE1ticamente las selecciones al escribir comillas o corchetes.\",\"Emula el comportamiento de selecci\\xF3n de los caracteres de tabulaci\\xF3n al usar espacios para la sangr\\xEDa. La selecci\\xF3n se aplicar\\xE1 a las tabulaciones.\",\"Controla si el editor muestra CodeLens.\",\"Controla la familia de fuentes para CodeLens.\",'Controla el tama\\xF1o de fuente de CodeLens en p\\xEDxeles. Cuando se establece en 0, se usa el 90\\xA0% de \"#editor.fontSize#\".',\"Controla si el editor debe representar el Selector de colores y los elementos Decorator de color en l\\xEDnea.\",\"Hacer que el selector de colores aparezca tanto al hacer clic como al mantener el puntero sobre el decorador de color\",\"Hacer que el selector de colores aparezca al pasar el puntero sobre el decorador de color\",\"Hacer que el selector de colores aparezca al hacer clic en el decorador de color\",\"Controla la condici\\xF3n para que un selector de colores aparezca de un decorador de color\",\"Controla el n\\xFAmero m\\xE1ximo de decoradores de color que se pueden representar en un editor a la vez.\",\"Habilite que la selecci\\xF3n con el mouse y las teclas est\\xE9 realizando la selecci\\xF3n de columnas.\",\"Controla si el resaltado de sintaxis debe ser copiado al portapapeles.\",\"Controla el estilo de animaci\\xF3n del cursor.\",\"La animaci\\xF3n del s\\xEDmbolo de intercalaci\\xF3n suave est\\xE1 deshabilitada.\",\"La animaci\\xF3n de s\\xEDmbolo de intercalaci\\xF3n suave solo se habilita cuando el usuario mueve el cursor con un gesto expl\\xEDcito.\",\"La animaci\\xF3n de s\\xEDmbolo de intercalaci\\xF3n suave siempre est\\xE1 habilitada.\",\"Controla si la animaci\\xF3n suave del cursor debe estar habilitada.\",\"Controla el estilo del cursor.\",'Controla el n\\xFAmero m\\xEDnimo de l\\xEDneas iniciales visibles (m\\xEDnimo 0) y l\\xEDneas finales (m\\xEDnimo 1) que rodean el cursor. Se conoce como \"scrollOff\" o \"scrollOffset\" en otros editores.','Solo se aplica \"cursorSurroundingLines\" cuando se desencadena mediante el teclado o la API.','\"cursorSurroundingLines\" se aplica siempre.','Controla cuando se debe aplicar \"cursorSurroundingLines\".','Controla el ancho del cursor cuando \"#editor.cursorStyle#\" se establece en \"line\".',\"Controla si el editor debe permitir mover las selecciones mediante arrastrar y colocar.\",\"Use un nuevo m\\xE9todo de representaci\\xF3n con svgs.\",\"Use un nuevo m\\xE9todo de representaci\\xF3n con caracteres de fuente.\",\"Use el m\\xE9todo de representaci\\xF3n estable.\",\"Controla si los espacios en blanco se representan con un nuevo m\\xE9todo experimental.\",'Multiplicador de la velocidad de desplazamiento al presionar \"Alt\".',\"Controla si el editor tiene el plegado de c\\xF3digo habilitado.\",\"Utilice una estrategia de plegado espec\\xEDfica del idioma, si est\\xE1 disponible, de lo contrario la basada en sangr\\xEDa.\",\"Utilice la estrategia de plegado basada en sangr\\xEDa.\",\"Controla la estrategia para calcular rangos de plegado.\",\"Controla si el editor debe destacar los rangos plegados.\",\"Permite controlar si el editor contrae autom\\xE1ticamente los rangos de importaci\\xF3n.\",\"N\\xFAmero m\\xE1ximo de regiones plegables. Si aumenta este valor, es posible que el editor tenga menos capacidad de respuesta cuando el origen actual tiene un gran n\\xFAmero de regiones plegables.\",\"Controla si al hacer clic en el contenido vac\\xEDo despu\\xE9s de una l\\xEDnea plegada se desplegar\\xE1 la l\\xEDnea.\",\"Controla la familia de fuentes.\",\"Controla si el editor debe dar formato autom\\xE1ticamente al contenido pegado. Debe haber disponible un formateador capaz de aplicar formato a un rango dentro de un documento. \",\"Controla si el editor debe dar formato a la l\\xEDnea autom\\xE1ticamente despu\\xE9s de escribirla.\",\"Controla si el editor debe representar el margen de glifo vertical. El margen de glifo se usa, principalmente, para depuraci\\xF3n.\",\"Controla si el cursor debe ocultarse en la regla de informaci\\xF3n general.\",\"Controla el espacio entre letras en p\\xEDxeles.\",\"Controla si el editor tiene habilitada la edici\\xF3n vinculada. Dependiendo del lenguaje, los s\\xEDmbolos relacionados (por ejemplo, las etiquetas HTML) se actualizan durante la edici\\xF3n.\",\"Controla si el editor debe detectar v\\xEDnculos y hacerlos interactivos.\",\"Resaltar par\\xE9ntesis coincidentes.\",'Se usar\\xE1 un multiplicador en los eventos de desplazamiento de la rueda del mouse \"deltaX\" y \"deltaY\". ','Ampliar la fuente del editor cuando se use la rueda del mouse mientras se presiona \"Ctrl\".',\"Combinar varios cursores cuando se solapan.\",'Se asigna a \"Control\" en Windows y Linux y a \"Comando\" en macOS.','Se asigna a \"Alt\" en Windows y Linux y a \"Opci\\xF3n\" en macOS.',\"El modificador que se usar\\xE1 para agregar varios cursores con el mouse. Los gestos del mouse Ir a definici\\xF3n y Abrir v\\xEDnculo se adaptar\\xE1n de modo que no entren en conflicto con el [modificador multicursor](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).\",\"Cada cursor pega una \\xFAnica l\\xEDnea del texto.\",\"Cada cursor pega el texto completo.\",\"Controla el pegado cuando el recuento de l\\xEDneas del texto pegado coincide con el recuento de cursores.\",\"Controla el n\\xFAmero m\\xE1ximo de cursores que puede haber en un editor activo a la vez.\",\"Controla si el editor debe resaltar las apariciones de s\\xEDmbolos sem\\xE1nticos.\",\"Controla si debe dibujarse un borde alrededor de la regla de informaci\\xF3n general.\",\"Enfocar el \\xE1rbol al abrir la inspecci\\xF3n\",\"Enfocar el editor al abrir la inspecci\\xF3n\",\"Controla si se debe enfocar el editor en l\\xEDnea o el \\xE1rbol en el widget de vista.\",\"Controla si el gesto del mouse Ir a definici\\xF3n siempre abre el widget interactivo.\",\"Controla el retraso, en milisegundos, tras el cual aparecer\\xE1n sugerencias r\\xE1pidas.\",\"Controla si el editor cambia el nombre autom\\xE1ticamente en el tipo.\",'En desuso. Utilice \"editor.linkedEditing\" en su lugar.',\"Controla si el editor debe representar caracteres de control.\",\"Representar el n\\xFAmero de la \\xFAltima l\\xEDnea cuando el archivo termina con un salto de l\\xEDnea.\",\"Resalta el medianil y la l\\xEDnea actual.\",\"Controla c\\xF3mo debe representar el editor el resaltado de l\\xEDnea actual.\",\"Controla si el editor debe representar el resaltado de la l\\xEDnea actual solo cuando el editor est\\xE1 enfocado.\",\"Representa caracteres de espacio en blanco, excepto los espacios individuales entre palabras.\",\"Represente los caracteres de espacio en blanco solo en el texto seleccionado.\",\"Representa solo los caracteres de espacio en blanco al final.\",\"Controla la forma en que el editor debe representar los caracteres de espacio en blanco.\",\"Controla si las selecciones deber\\xEDan tener las esquinas redondeadas.\",\"Controla el n\\xFAmero de caracteres adicionales a partir del cual el editor se desplazar\\xE1 horizontalmente.\",\"Controla si el editor seguir\\xE1 haciendo scroll despu\\xE9s de la \\xFAltima l\\xEDnea.\",\"Despl\\xE1cese solo a lo largo del eje predominante cuando se desplace vertical y horizontalmente al mismo tiempo. Evita la deriva horizontal cuando se desplaza verticalmente en un trackpad.\",\"Controla si el portapapeles principal de Linux debe admitirse.\",\"Controla si el editor debe destacar las coincidencias similares a la selecci\\xF3n.\",\"Mostrar siempre los controles de plegado.\",\"No mostrar nunca los controles de plegado y reducir el tama\\xF1o del medianil.\",\"Mostrar solo los controles de plegado cuando el mouse est\\xE1 sobre el medianil.\",\"Controla cu\\xE1ndo se muestran los controles de plegado en el medianil.\",\"Controla el fundido de salida del c\\xF3digo no usado.\",\"Controla las variables en desuso tachadas.\",\"Mostrar sugerencias de fragmentos de c\\xF3digo por encima de otras sugerencias.\",\"Mostrar sugerencias de fragmentos de c\\xF3digo por debajo de otras sugerencias.\",\"Mostrar sugerencias de fragmentos de c\\xF3digo con otras sugerencias.\",\"No mostrar sugerencias de fragmentos de c\\xF3digo.\",\"Controla si se muestran los fragmentos de c\\xF3digo con otras sugerencias y c\\xF3mo se ordenan.\",\"Controla si el editor se desplazar\\xE1 con una animaci\\xF3n.\",\"Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\",\"Tama\\xF1o de fuente del widget de sugerencias. Cuando se establece en {0}, se usa el valor de {1}.\",\"Alto de l\\xEDnea para el widget de sugerencias. Cuando se establece en {0}, se usa el valor de {1}. El valor m\\xEDnimo es 8.\",\"Controla si deben aparecer sugerencias de forma autom\\xE1tica al escribir caracteres desencadenadores.\",\"Seleccionar siempre la primera sugerencia.\",'Seleccione sugerencias recientes a menos que al escribir m\\xE1s se seleccione una, por ejemplo, \"console.| -> console.log\" porque \"log\" se ha completado recientemente.','Seleccione sugerencias basadas en prefijos anteriores que han completado esas sugerencias, por ejemplo, \"co -> console\" y \"con -> const\".',\"Controla c\\xF3mo se preseleccionan las sugerencias cuando se muestra la lista,\",\"La pesta\\xF1a se completar\\xE1 insertando la mejor sugerencia de coincidencia encontrada al presionar la pesta\\xF1a\",\"Deshabilitar los complementos para pesta\\xF1as.\",\"La pesta\\xF1a se completa con fragmentos de c\\xF3digo cuando su prefijo coincide. Funciona mejor cuando las 'quickSuggestions' no est\\xE1n habilitadas.\",\"Habilita completar pesta\\xF1as.\",\"Los terminadores de l\\xEDnea no habituales se quitan autom\\xE1ticamente.\",\"Los terminadores de l\\xEDnea no habituales se omiten.\",\"Advertencia de terminadores de l\\xEDnea inusuales que se quitar\\xE1n.\",\"Quite los terminadores de l\\xEDnea inusuales que podr\\xEDan provocar problemas.\",\"La inserci\\xF3n y eliminaci\\xF3n del espacio en blanco sigue a las tabulaciones.\",\"Use la regla de salto de l\\xEDnea predeterminada.\",\"Los saltos de palabra no deben usarse para texto chino, japon\\xE9s o coreano (CJK). El comportamiento del texto distinto a CJK es el mismo que el normal.\",\"Controla las reglas de salto de palabra usadas para texto chino, japon\\xE9s o coreano (CJK).\",\"Caracteres que se usar\\xE1n como separadores de palabras al realizar operaciones o navegaciones relacionadas con palabras.\",\"Las l\\xEDneas no se ajustar\\xE1n nunca.\",\"Las l\\xEDneas se ajustar\\xE1n en el ancho de la ventanilla.\",'Las l\\xEDneas se ajustar\\xE1n al valor de \"#editor.wordWrapColumn#\". ','Las l\\xEDneas se ajustar\\xE1n al valor que sea inferior: el tama\\xF1o de la ventanilla o el valor de \"#editor.wordWrapColumn#\".',\"Controla c\\xF3mo deben ajustarse las l\\xEDneas.\",'Controla la columna de ajuste del editor cuando \"#editor.wordWrap#\" es \"wordWrapColumn\" o \"bounded\".',\"Controla si las decoraciones de color en l\\xEDnea deben mostrarse con el proveedor de colores del documento predeterminado.\",\"Controla si el editor recibe las pesta\\xF1as o las aplaza al \\xE1rea de trabajo para la navegaci\\xF3n.\"],\"vs/editor/common/core/editorColorRegistry\":[\"Color de fondo para la l\\xEDnea resaltada en la posici\\xF3n del cursor.\",\"Color de fondo del borde alrededor de la l\\xEDnea en la posici\\xF3n del cursor.\",\"Color de fondo de rangos resaltados, como en abrir r\\xE1pido y encontrar caracter\\xEDsticas. El color no debe ser opaco para no ocultar decoraciones subyacentes.\",\"Color de fondo del borde alrededor de los intervalos resaltados.\",\"Color de fondo del s\\xEDmbolo destacado, como Ir a definici\\xF3n o Ir al siguiente/anterior s\\xEDmbolo. El color no debe ser opaco para no ocultar la decoraci\\xF3n subyacente.\",\"Color de fondo del borde alrededor de los s\\xEDmbolos resaltados.\",\"Color del cursor del editor.\",\"Color de fondo del cursor de edici\\xF3n. Permite personalizar el color del caracter solapado por el bloque del cursor.\",\"Color de los caracteres de espacio en blanco del editor.\",\"Color de n\\xFAmeros de l\\xEDnea del editor.\",\"Color de las gu\\xEDas de sangr\\xEDa del editor.\",'\"editorIndentGuide.background\" est\\xE1 en desuso. Use \"editorIndentGuide.background1\" en su lugar.',\"Color de las gu\\xEDas de sangr\\xEDa activas del editor.\",'\"editorIndentGuide.activeBackground\" est\\xE1 en desuso. Use \"editorIndentGuide.activeBackground1\" en su lugar.',\"Color de las gu\\xEDas de sangr\\xEDa del editor (1).\",\"Color de las gu\\xEDas de sangr\\xEDa del editor (2).\",\"Color de las gu\\xEDas de sangr\\xEDa del editor (3).\",\"Color de las gu\\xEDas de sangr\\xEDa del editor (4).\",\"Color de las gu\\xEDas de sangr\\xEDa del editor (5).\",\"Color de las gu\\xEDas de sangr\\xEDa del editor (6).\",\"Color de las gu\\xEDas de sangr\\xEDa del editor activo (1).\",\"Color de las gu\\xEDas de sangr\\xEDa del editor activo (2).\",\"Color de las gu\\xEDas de sangr\\xEDa del editor activo (3).\",\"Color de las gu\\xEDas de sangr\\xEDa del editor activo (4).\",\"Color de las gu\\xEDas de sangr\\xEDa del editor activo (5).\",\"Color de las gu\\xEDas de sangr\\xEDa del editor activo (6).\",\"Color del n\\xFAmero de l\\xEDnea activa en el editor\",\"ID es obsoleto. Usar en lugar 'editorLineNumber.activeForeground'. \",\"Color del n\\xFAmero de l\\xEDnea activa en el editor\",\"Color de la l\\xEDnea final del editor cuando editor.renderFinalNewline se establece en atenuado.\",\"Color de las reglas del editor\",\"Color principal de lentes de c\\xF3digo en el editor\",\"Color de fondo tras corchetes coincidentes\",\"Color de bloques con corchetes coincidentes\",\"Color del borde de la regla de visi\\xF3n general.\",\"Color de fondo de la regla de informaci\\xF3n general del editor.\",\"Color de fondo del margen del editor. Este espacio contiene los m\\xE1rgenes de glifos y los n\\xFAmeros de l\\xEDnea.\",\"Color del borde de c\\xF3digo fuente innecesario (sin usar) en el editor.\",`Opacidad de c\\xF3digo fuente innecesario (sin usar) en el editor. Por ejemplo, \"#000000c0\" representar\\xE1 el c\\xF3digo con un 75 % de opacidad. Para temas de alto contraste, utilice el color del tema 'editorUnnecessaryCode.border' para resaltar el c\\xF3digo innecesario en vez de atenuarlo.`,\"Color del borde del texto fantasma en el editor.\",\"Color de primer plano del texto fantasma en el editor.\",\"Color de fondo del texto fantasma en el editor.\",\"Color de marcador de regla general para los destacados de rango. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color de marcador de regla de informaci\\xF3n general para errores. \",\"Color de marcador de regla de informaci\\xF3n general para advertencias.\",\"Color de marcador de regla de informaci\\xF3n general para mensajes informativos. \",\"Color de primer plano de los corchetes (1). Requiere que se habilite la coloraci\\xF3n del par de corchetes.\",\"Color de primer plano de los corchetes (2). Requiere que se habilite la coloraci\\xF3n del par de corchetes.\",\"Color de primer plano de los corchetes (3). Requiere que se habilite la coloraci\\xF3n del par de corchetes.\",\"Color de primer plano de los corchetes (4). Requiere que se habilite la coloraci\\xF3n del par de corchetes.\",\"Color de primer plano de los corchetes (5). Requiere que se habilite la coloraci\\xF3n del par de corchetes.\",\"Color de primer plano de los corchetes (6). Requiere que se habilite la coloraci\\xF3n del par de corchetes.\",\"Color de primer plano de corchetes inesperados.\",\"Color de fondo de las gu\\xEDas de par de corchetes inactivos (1). Requiere habilitar gu\\xEDas de par de corchetes.\",\"Color de fondo de las gu\\xEDas de par de corchetes inactivos (2). Requiere habilitar gu\\xEDas de par de corchetes.\",\"Color de fondo de las gu\\xEDas de par de corchetes inactivos (3). Requiere habilitar gu\\xEDas de par de corchetes.\",\"Color de fondo de las gu\\xEDas de par de corchetes inactivos (4). Requiere habilitar gu\\xEDas de par de corchetes.\",\"Color de fondo de las gu\\xEDas de par de corchetes inactivos (5). Requiere habilitar gu\\xEDas de par de corchetes.\",\"Color de fondo de las gu\\xEDas de par de corchetes inactivos (6). Requiere habilitar gu\\xEDas de par de corchetes.\",\"Color de fondo de las gu\\xEDas de pares de corchetes activos (1). Requiere habilitar gu\\xEDas de par de corchetes.\",\"Color de fondo de las gu\\xEDas de par de corchetes activos (2). Requiere habilitar gu\\xEDas de par de corchetes.\",\"Color de fondo de las gu\\xEDas de pares de corchetes activos (3). Requiere habilitar gu\\xEDas de par de corchetes.\",\"Color de fondo de las gu\\xEDas de par de corchetes activos (4). Requiere habilitar gu\\xEDas de par de corchetes.\",\"Color de fondo de las gu\\xEDas de par de corchetes activos (5). Requiere habilitar gu\\xEDas de par de corchetes.\",\"Color de fondo de las gu\\xEDas de par de corchetes activos (6). Requiere habilitar gu\\xEDas de par de corchetes.\",\"Color de borde usado para resaltar caracteres Unicode.\",\"Color de borde usado para resaltar caracteres unicode.\"],\"vs/editor/common/editorContextKeys\":[\"Si el texto del editor tiene el foco (el cursor parpadea)\",\"Si el editor o un widget del editor tiene el foco (por ejemplo, el foco est\\xE1 en el widget de b\\xFAsqueda)\",\"Si un editor o una entrada de texto enriquecido tienen el foco (el cursor parpadea)\",\"Si el editor es de solo lectura\",\"Si el contexto es un editor de diferencias\",\"Si el contexto es un editor de diferencias incrustado\",\"Whether a moved code block is selected for comparison\",\"Si el visor de diferencias accesible est\\xE1 visible\",\"Whether the diff editor render side by side inline breakpoint is reached\",'Si \"editor.columnSelection\" se ha habilitado',\"Si el editor tiene texto seleccionado\",\"Si el editor tiene varias selecciones\",'Si \"Tabulaci\\xF3n\" mover\\xE1 el foco fuera del editor',\"Si el mantenimiento del puntero del editor es visible\",\"Si se centra el desplazamiento del editor\",\"Si el desplazamiento permanente est\\xE1 centrado\",\"Si el desplazamiento permanente est\\xE1 visible\",\"Si el selector de colores independiente est\\xE1 visible\",\"Si el selector de colores independiente est\\xE1 centrado\",\"Si el editor forma parte de otro m\\xE1s grande (por ejemplo, blocs de notas)\",\"Identificador de idioma del editor\",\"Si el editor tiene un proveedor de elementos de finalizaci\\xF3n\",\"Si el editor tiene un proveedor de acciones de c\\xF3digo\",\"Si el editor tiene un proveedor de CodeLens\",\"Si el editor tiene un proveedor de definiciones\",\"Si el editor tiene un proveedor de declaraciones\",\"Si el editor tiene un proveedor de implementaci\\xF3n\",\"Si el editor tiene un proveedor de definiciones de tipo\",\"Si el editor tiene un proveedor de contenido con mantenimiento del puntero\",\"Si el editor tiene un proveedor de resaltado de documentos\",\"Si el editor tiene un proveedor de s\\xEDmbolos de documentos\",\"Si el editor tiene un proveedor de referencia\",\"Si el editor tiene un proveedor de cambio de nombre\",\"Si el editor tiene un proveedor de ayuda de signatura\",\"Si el editor tiene un proveedor de sugerencias insertadas\",\"Si el editor tiene un proveedor de formatos de documento\",\"Si el editor tiene un proveedor de formatos de selecci\\xF3n de documentos\",\"Si el editor tiene varios proveedores de formatos del documento\",\"Si el editor tiene varios proveedores de formato de la selecci\\xF3n de documentos\"],\"vs/editor/common/languages\":[\"matriz\",\"booleano\",\"clase\",\"constante\",\"constructor\",\"enumeraci\\xF3n\",\"miembro de la enumeraci\\xF3n\",\"evento\",\"campo\",\"archivo\",\"funci\\xF3n\",\"interfaz\",\"clave\",\"m\\xE9todo\",\"m\\xF3dulo\",\"espacio de nombres\",\"NULL\",\"n\\xFAmero\",\"objeto\",\"operador\",\"paquete\",\"propiedad\",\"cadena\",\"estructura\",\"par\\xE1metro de tipo\",\"variable\",\"{0} ({1})\"],\"vs/editor/common/languages/modesRegistry\":[\"Texto sin formato\"],\"vs/editor/common/model/editStack\":[\"Escribiendo\"],\"vs/editor/common/standaloneStrings\":[\"Desarrollador: inspeccionar tokens\",\"Vaya a L\\xEDnea/Columna...\",\"Mostrar todos los proveedores de acceso r\\xE1pido\",\"Paleta de comandos\",\"Mostrar y ejecutar comandos\",\"Ir a s\\xEDmbolo...\",\"Ir a s\\xEDmbolo por categor\\xEDa...\",\"Contenido del editor\",\"Presione Alt+F1 para ver las opciones de accesibilidad.\",\"Alternar tema de contraste alto\",\"{0} ediciones realizadas en {1} archivos\"],\"vs/editor/common/viewLayout/viewLineRenderer\":[\"Mostrar m\\xE1s ({0})\",\"{0} caracteres\"],\"vs/editor/contrib/anchorSelect/browser/anchorSelect\":[\"Delimitador de la selecci\\xF3n\",\"Delimitador establecido en {0}:{1}\",\"Establecer el delimitador de la selecci\\xF3n\",\"Ir al delimitador de la selecci\\xF3n\",\"Seleccionar desde el delimitador hasta el cursor\",\"Cancelar el delimitador de la selecci\\xF3n\"],\"vs/editor/contrib/bracketMatching/browser/bracketMatching\":[\"Resumen color de marcador de regla para corchetes.\",\"Ir al corchete\",\"Seleccionar para corchete\",\"Quitar corchetes\",\"Ir al &&corchete\"],\"vs/editor/contrib/caretOperations/browser/caretOperations\":[\"Mover el texto seleccionado a la izquierda\",\"Mover el texto seleccionado a la derecha\"],\"vs/editor/contrib/caretOperations/browser/transpose\":[\"Transponer letras\"],\"vs/editor/contrib/clipboard/browser/clipboard\":[\"Cor&&tar\",\"Cortar\",\"Cortar\",\"Cortar\",\"&&Copiar\",\"Copiar\",\"Copiar\",\"Copiar\",\"Copiar como\",\"Copiar como\",\"Compartir\",\"Compartir\",\"Compartir\",\"&&Pegar\",\"Pegar\",\"Pegar\",\"Pegar\",\"Copiar con resaltado de sintaxis\"],\"vs/editor/contrib/codeAction/browser/codeAction\":[\"Se ha producido un error desconocido al aplicar la acci\\xF3n de c\\xF3digo\"],\"vs/editor/contrib/codeAction/browser/codeActionCommands\":[\"Tipo de la acci\\xF3n de c\\xF3digo que se va a ejecutar.\",\"Controla cu\\xE1ndo se aplican las acciones devueltas.\",\"Aplicar siempre la primera acci\\xF3n de c\\xF3digo devuelto.\",\"Aplicar la primera acci\\xF3n de c\\xF3digo devuelta si solo hay una.\",\"No aplique las acciones de c\\xF3digo devuelto.\",\"Controla si solo se deben devolver las acciones de c\\xF3digo preferidas.\",\"Correcci\\xF3n R\\xE1pida\",\"No hay acciones de c\\xF3digo disponibles\",'No hay acciones de c\\xF3digo preferidas para \"{0}\" disponibles','No hay ninguna acci\\xF3n de c\\xF3digo para \"{0}\" disponible.',\"No hay acciones de c\\xF3digo preferidas disponibles\",\"No hay acciones de c\\xF3digo disponibles\",\"Refactorizar...\",'No hay refactorizaciones preferidas de \"{0}\" disponibles','No hay refactorizaciones de \"{0}\" disponibles',\"No hay ninguna refactorizaci\\xF3n favorita disponible.\",\"No hay refactorizaciones disponibles\",\"Acci\\xF3n de c\\xF3digo fuente...\",'No hay acciones de origen preferidas para \"{0}\" disponibles','No hay ninguna acci\\xF3n de c\\xF3digo fuente para \"{0}\" disponible.',\"No hay ninguna acci\\xF3n de c\\xF3digo fuente favorita disponible.\",\"No hay acciones de origen disponibles\",\"Organizar Importaciones\",\"No hay acciones de importaci\\xF3n disponibles\",\"Corregir todo\",\"No est\\xE1 disponible la acci\\xF3n de corregir todo\",\"Corregir autom\\xE1ticamente...\",\"No hay autocorrecciones disponibles\"],\"vs/editor/contrib/codeAction/browser/codeActionContributions\":[\"Activar/desactivar la visualizaci\\xF3n de los encabezados de los grupos en el men\\xFA de Acci\\xF3n de c\\xF3digo.\"],\"vs/editor/contrib/codeAction/browser/codeActionController\":[\"Ocultar deshabilitado\",\"Mostrar elementos deshabilitados\"],\"vs/editor/contrib/codeAction/browser/codeActionMenu\":[\"M\\xE1s Acciones...\",\"Correcci\\xF3n r\\xE1pida...\",\"Extraer...\",\"Alineado...\",\"Reescribir...\",\"Mover...\",\"Rodear con...\",\"Acci\\xF3n de origen...\"],\"vs/editor/contrib/codeAction/browser/lightBulbWidget\":[\"Mostrar acciones de c\\xF3digo. Correcci\\xF3n r\\xE1pida preferida disponible ({0})\",\"Mostrar acciones de c\\xF3digo ({0})\",\"Mostrar acciones de c\\xF3digo\"],\"vs/editor/contrib/codelens/browser/codelensController\":[\"Mostrar comandos de lente de c\\xF3digo para la l\\xEDnea actual\"],\"vs/editor/contrib/colorPicker/browser/colorPickerWidget\":[\"Haga clic para alternar las opciones de color (rgb/hsl/hex)\",\"Icono para cerrar el selector de colores\"],\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\":[\"Mostrar o centrar Selector de colores independientes\",\"&Mostrar o centrar Selector de colores independientes\",\"Ocultar la Selector de colores\",\"Insertar color con Selector de colores independiente\"],\"vs/editor/contrib/comment/browser/comment\":[\"Alternar comentario de l\\xEDnea\",\"&&Alternar comentario de l\\xEDnea\",\"Agregar comentario de l\\xEDnea\",\"Quitar comentario de l\\xEDnea\",\"Alternar comentario de bloque\",\"Alternar &&bloque de comentario\"],\"vs/editor/contrib/contextmenu/browser/contextmenu\":[\"Minimapa\",\"Representar caracteres\",\"Tama\\xF1o vertical\",\"Proporcional\",\"Relleno\",\"Ajustar\",\"Control deslizante\",\"Pasar el mouse\",\"Siempre\",\"Mostrar men\\xFA contextual del editor\"],\"vs/editor/contrib/cursorUndo/browser/cursorUndo\":[\"Cursor Deshacer\",\"Cursor Rehacer\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\":[\"Pegar como...\",\"Id. de la edici\\xF3n pegada que se intenta aplicar. Si no se proporciona, el editor mostrar\\xE1 un selector.\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\":[\"Si se muestra el widget de pegado\",\"Mostrar opciones de pegado...\",\"Ejecutando controladores de pegado. Haga clic para cancelar.\",\"Seleccionar acci\\xF3n pegar\",\"Ejecutando controladores de pegado\"],\"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\":[\"Integrado\",\"Insertar texto sin formato\",\"Insertar URIs\",\"Insertar URI\",\"Insertar rutas de acceso\",\"Insertar ruta de acceso\",\"Insertar rutas de acceso relativas\",\"Insertar ruta de acceso relativa\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\":[\"Configures the default drop provider to use for content of a given mime type.\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\":[\"Si se muestra el widget de colocaci\\xF3n\",\"Mostrar opciones de colocaci\\xF3n...\",\"Ejecutando controladores de colocaci\\xF3n. Haga clic para cancelar.\"],\"vs/editor/contrib/editorState/browser/keybindingCancellation\":['Indica si el editor ejecuta una operaci\\xF3n que se puede cancelar como, por ejemplo, \"Inspeccionar referencias\"'],\"vs/editor/contrib/find/browser/findController\":[\"Buscar\",\"&&Buscar\",`Invalida la marca \"Usar expresi\\xF3n regular\".\\r\nLa marca no se guardar\\xE1 para el futuro.\\r\n0: No hacer nada\\r\n1: True\\r\n2: False`,`Invalida la marca \"Hacer coincidir palabra completa\\u201D.\\r\nLa marca no se guardar\\xE1 para el futuro.\\r\n0: No hacer nada\\r\n1: True\\r\n2: False`,`Invalida la marca \"Caso matem\\xE1tico\".\\r\nLa marca no se guardar\\xE1 para el futuro.\\r\n0: No hacer nada\\r\n1: True\\r\n2: False`,`Invalida la marca \"Conservar may\\xFAsculas y min\\xFAsculas.\\r\nLa marca no se guardar\\xE1 para el futuro.\\r\n0: No hacer nada\\r\n1: True\\r\n2: False`,\"B\\xFAsqueda con argumentos\",\"Buscar con selecci\\xF3n\",\"Buscar siguiente\",\"Buscar anterior\",\"Ir a Coincidencia...\",\"No hay coincidencias. Intente buscar otra cosa.\",\"Escriba un n\\xFAmero para ir a una coincidencia espec\\xEDfica (entre 1 y {0})\",\"Escriba un n\\xFAmero entre 1 y {0}\",\"Escriba un n\\xFAmero entre 1 y {0}\",\"Buscar selecci\\xF3n siguiente\",\"Buscar selecci\\xF3n anterior\",\"Reemplazar\",\"&&Reemplazar\"],\"vs/editor/contrib/find/browser/findWidget\":['Icono para \"Buscar en selecci\\xF3n\" en el widget de b\\xFAsqueda del editor.',\"Icono para indicar que el widget de b\\xFAsqueda del editor est\\xE1 contra\\xEDdo.\",\"Icono para indicar que el widget de b\\xFAsqueda del editor est\\xE1 expandido.\",'Icono para \"Reemplazar\" en el widget de b\\xFAsqueda del editor.','Icono para \"Reemplazar todo\" en el widget de b\\xFAsqueda del editor.','Icono para \"Buscar anterior\" en el widget de b\\xFAsqueda del editor.','Icono para \"Buscar siguiente\" en el widget de b\\xFAsqueda del editor.',\"Buscar y reemplazar\",\"Buscar\",\"Buscar\",\"Coincidencia anterior\",\"Coincidencia siguiente\",\"Buscar en selecci\\xF3n\",\"Cerrar\",\"Reemplazar\",\"Reemplazar\",\"Reemplazar\",\"Reemplazar todo\",\"Alternar reemplazar\",\"S\\xF3lo los primeros {0} resultados son resaltados, pero todas las operaciones de b\\xFAsqueda trabajan en todo el texto.\",\"{0} de {1}\",\"No hay resultados\",\"Encontrados: {0}\",'{0} encontrado para \"{1}\"','{0} encontrado para \"{1}\", en {2}','{0} encontrado para \"{1}\"',\"Ctrl+Entrar ahora inserta un salto de l\\xEDnea en lugar de reemplazar todo. Puede modificar el enlace de claves para editor.action.replaceAll para invalidar este comportamiento.\"],\"vs/editor/contrib/folding/browser/folding\":[\"Desplegar\",\"Desplegar de forma recursiva\",\"Plegar\",\"Alternar plegado\",\"Plegar de forma recursiva\",\"Cerrar todos los comentarios de bloque\",\"Plegar todas las regiones\",\"Desplegar Todas las Regiones\",\"Plegar todas las regiones excepto las seleccionadas\",\"Desplegar todas las regiones excepto las seleccionadas\",\"Plegar todo\",\"Desplegar todo\",\"Ir al plegado primario\",\"Ir al rango de plegado anterior\",\"Ir al rango de plegado siguiente\",\"Crear rango de plegado a partir de la selecci\\xF3n\",\"Quitar rangos de plegado manuales\",\"Nivel de plegamiento {0}\"],\"vs/editor/contrib/folding/browser/foldingDecorations\":[\"Color de fondo detr\\xE1s de los rangos plegados. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color del control plegable en el medianil del editor.\",\"Icono de rangos expandidos en el margen de glifo del editor.\",\"Icono de rangos contra\\xEDdos en el margen de glifo del editor.\",\"Icono de intervalos contra\\xEDdos manualmente en el margen del glifo del editor.\",\"Icono de intervalos expandidos manualmente en el margen del glifo del editor.\"],\"vs/editor/contrib/fontZoom/browser/fontZoom\":[\"Acercarse a la tipograf\\xEDa del editor\",\"Alejarse de la tipograf\\xEDa del editor\",\"Restablecer alejamiento de la tipograf\\xEDa del editor\"],\"vs/editor/contrib/format/browser/format\":[\"1 edici\\xF3n de formato en la l\\xEDnea {0}\",\"{0} ediciones de formato en la l\\xEDnea {1}\",\"1 edici\\xF3n de formato entre las l\\xEDneas {0} y {1}\",\"{0} ediciones de formato entre las l\\xEDneas {1} y {2}\"],\"vs/editor/contrib/format/browser/formatActions\":[\"Dar formato al documento\",\"Dar formato a la selecci\\xF3n\"],\"vs/editor/contrib/gotoError/browser/gotoError\":[\"Ir al siguiente problema (Error, Advertencia, Informaci\\xF3n)\",\"Icono para ir al marcador siguiente.\",\"Ir al problema anterior (Error, Advertencia, Informaci\\xF3n)\",\"Icono para ir al marcador anterior.\",\"Ir al siguiente problema en Archivos (Error, Advertencia, Informaci\\xF3n)\",\"Siguiente &&problema\",\"Ir al problema anterior en Archivos (Error, Advertencia, Informaci\\xF3n)\",\"Anterior &&problema\"],\"vs/editor/contrib/gotoError/browser/gotoErrorWidget\":[\"Error\",\"Advertencia\",\"Informaci\\xF3n\",\"Sugerencia\",\"{0} en {1}. \",\"{0} de {1} problemas\",\"{0} de {1} problema\",\"Color de los errores del widget de navegaci\\xF3n de marcadores del editor.\",\"Fondo del encabezado del error del widget de navegaci\\xF3n del marcador de editor.\",\"Color de las advertencias del widget de navegaci\\xF3n de marcadores del editor.\",\"Fondo del encabezado de la advertencia del widget de navegaci\\xF3n del marcador de editor.\",\"Color del widget informativo marcador de navegaci\\xF3n en el editor.\",\"Fondo del encabezado de informaci\\xF3n del widget de navegaci\\xF3n del marcador de editor.\",\"Fondo del widget de navegaci\\xF3n de marcadores del editor.\"],\"vs/editor/contrib/gotoSymbol/browser/goToCommands\":[\"Ver\",\"Definiciones\",'No se encontr\\xF3 ninguna definici\\xF3n para \"{0}\"',\"No se encontr\\xF3 ninguna definici\\xF3n\",\"Ir a definici\\xF3n\",\"Ir a &&definici\\xF3n\",\"Abrir definici\\xF3n en el lateral\",\"Ver la definici\\xF3n sin salir\",\"Declaraciones\",\"No se encontr\\xF3 ninguna definici\\xF3n para '{0}'\",\"No se encontr\\xF3 ninguna declaraci\\xF3n\",\"Ir a Definici\\xF3n\",\"Ir a &&declaraci\\xF3n\",\"No se encontr\\xF3 ninguna definici\\xF3n para '{0}'\",\"No se encontr\\xF3 ninguna declaraci\\xF3n\",\"Inspeccionar Definici\\xF3n\",\"Definiciones de tipo\",'No se encontr\\xF3 ninguna definici\\xF3n de tipo para \"{0}\"',\"No se encontr\\xF3 ninguna definici\\xF3n de tipo\",\"Ir a la definici\\xF3n de tipo\",\"Ir a la definici\\xF3n de &&tipo\",\"Inspeccionar definici\\xF3n de tipo\",\"Implementaciones\",'No se encontr\\xF3 ninguna implementaci\\xF3n para \"{0}\"',\"No se encontr\\xF3 ninguna implementaci\\xF3n\",\"Ir a Implementaciones\",\"Ir a &&implementaciones\",\"Inspeccionar implementaciones\",'No se ha encontrado ninguna referencia para \"{0}\".',\"No se encontraron referencias\",\"Ir a Referencias\",\"Ir a &&referencias\",\"Referencias\",\"Inspeccionar Referencias\",\"Referencias\",\"Ir a cualquier s\\xEDmbolo\",\"Ubicaciones\",'No hay resultados para \"{0}\"',\"Referencias\"],\"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\":[\"Haga clic para mostrar {0} definiciones.\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesController\":['Indica si est\\xE1 visible la inspecci\\xF3n de referencias, como \"Inspecci\\xF3n de referencias\" o \"Ver la definici\\xF3n sin salir\".',\"Cargando...\",\"{0} ({1})\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\":[\"{0} referencias\",\"{0} referencia\",\"Referencias\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\":[\"vista previa no disponible\",\"No hay resultados\",\"Referencias\"],\"vs/editor/contrib/gotoSymbol/browser/referencesModel\":[\"en {0} en la l\\xEDnea {1} en la columna {2}\",\"{0} en {1} en la l\\xEDnea {2} en la columna {3}\",\"1 s\\xEDmbolo en {0}, ruta de acceso completa {1}\",\"{0} s\\xEDmbolos en {1}, ruta de acceso completa {2}\",\"No se encontraron resultados\",\"Encontr\\xF3 1 s\\xEDmbolo en {0}\",\"Encontr\\xF3 {0} s\\xEDmbolos en {1}\",\"Encontr\\xF3 {0} s\\xEDmbolos en {1} archivos\"],\"vs/editor/contrib/gotoSymbol/browser/symbolNavigation\":[\"Indica si hay ubicaciones de s\\xEDmbolos a las que se pueda navegar solo con el teclado.\",\"S\\xEDmbolo {0} de {1}, {2} para el siguiente\",\"S\\xEDmbolo {0} de {1}\"],\"vs/editor/contrib/hover/browser/hover\":[\"Mostrar o centrarse al mantener el puntero\",\"Mostrar vista previa de la definici\\xF3n que aparece al mover el puntero\",\"Desplazar hacia arriba al mantener el puntero\",\"Desplazar hacia abajo al mantener el puntero\",\"Desplazar al mantener el puntero a la izquierda\",\"Desplazar al mantener el puntero a la derecha\",\"Desplazamiento de p\\xE1gina hacia arriba\",\"Desplazamiento de p\\xE1gina hacia abajo\",\"Ir al puntero superior\",\"Ir a la parte inferior al mantener el puntero\"],\"vs/editor/contrib/hover/browser/markdownHoverParticipant\":[\"Cargando...\",'Representaci\\xF3n en pausa durante una l\\xEDnea larga por motivos de rendimiento. Esto se puede configurar mediante \"editor.stopRenderingLineAfter\".','Por motivos de rendimiento, la tokenizaci\\xF3n se omite con filas largas. Esta opci\\xF3n se puede configurar con \"editor.maxTokenizationLineLength\".'],\"vs/editor/contrib/hover/browser/markerHoverParticipant\":[\"Ver el problema\",\"No hay correcciones r\\xE1pidas disponibles\",\"Buscando correcciones r\\xE1pidas...\",\"No hay correcciones r\\xE1pidas disponibles\",\"Correcci\\xF3n R\\xE1pida\"],\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\":[\"Reemplazar con el valor anterior\",\"Reemplazar con el valor siguiente\"],\"vs/editor/contrib/indentation/browser/indentation\":[\"Convertir sangr\\xEDa en espacios\",\"Convertir sangr\\xEDa en tabulaciones\",\"Tama\\xF1o de tabulaci\\xF3n configurado\",\"Tama\\xF1o de tabulaci\\xF3n predeterminado\",\"Tama\\xF1o de tabulaci\\xF3n actual\",\"Seleccionar tama\\xF1o de tabulaci\\xF3n para el archivo actual\",\"Aplicar sangr\\xEDa con tabulaciones\",\"Aplicar sangr\\xEDa con espacios\",\"Cambiar tama\\xF1o de visualizaci\\xF3n de tabulaci\\xF3n\",\"Detectar sangr\\xEDa del contenido\",\"Volver a aplicar sangr\\xEDa a l\\xEDneas\",\"Volver a aplicar sangr\\xEDa a l\\xEDneas seleccionadas\"],\"vs/editor/contrib/inlayHints/browser/inlayHintsHover\":[\"Haga doble clic para insertar\",\"cmd + clic\",\"ctrl + clic\",\"opci\\xF3n + clic\",\"alt + clic\",\"Ir a Definici\\xF3n ({0}), haga clic con el bot\\xF3n derecho para obtener m\\xE1s informaci\\xF3n\",\"Ir a Definici\\xF3n ({0})\",\"Ejecutar comando\"],\"vs/editor/contrib/inlineCompletions/browser/commands\":[\"Mostrar sugerencia alineada siguiente\",\"Mostrar sugerencia alineada anterior\",\"Desencadenar sugerencia alineada\",\"Aceptar la siguiente palabra de sugerencia insertada\",\"Aceptar palabra\",\"Aceptar la siguiente l\\xEDnea de sugerencia insertada\",\"Aceptar l\\xEDnea\",\"Aceptar la sugerencia insertada\",\"Aceptar\",\"Ocultar la sugerencia insertada\",\"Mostrar siempre la barra de herramientas\"],\"vs/editor/contrib/inlineCompletions/browser/hoverParticipant\":[\"Sugerencia:\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\":[\"Si una sugerencia alineada est\\xE1 visible\",\"Si la sugerencia alineada comienza con un espacio en blanco\",\"Si la sugerencia insertada comienza con un espacio en blanco menor que lo que se insertar\\xEDa mediante tabulaci\\xF3n\",\"Si las sugerencias deben suprimirse para la sugerencia actual\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\":[\"Inspect this in the accessible view ({0})\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\":[\"Icono para mostrar la sugerencia de par\\xE1metro siguiente.\",\"Icono para mostrar la sugerencia de par\\xE1metro anterior.\",\"{0} ({1})\",\"Anterior\",\"Siguiente\"],\"vs/editor/contrib/lineSelection/browser/lineSelection\":[\"Expandir selecci\\xF3n de l\\xEDnea\"],\"vs/editor/contrib/linesOperations/browser/linesOperations\":[\"Copiar l\\xEDnea arriba\",\"&&Copiar l\\xEDnea arriba\",\"Copiar l\\xEDnea abajo\",\"Co&&piar l\\xEDnea abajo\",\"Selecci\\xF3n duplicada\",\"&&Duplicar selecci\\xF3n\",\"Mover l\\xEDnea hacia arriba\",\"Mo&&ver l\\xEDnea arriba\",\"Mover l\\xEDnea hacia abajo\",\"Mover &&l\\xEDnea abajo\",\"Ordenar l\\xEDneas en orden ascendente\",\"Ordenar l\\xEDneas en orden descendente\",\"Eliminar l\\xEDneas duplicadas\",\"Recortar espacio final\",\"Eliminar l\\xEDnea\",\"Sangr\\xEDa de l\\xEDnea\",\"Anular sangr\\xEDa de l\\xEDnea\",\"Insertar l\\xEDnea arriba\",\"Insertar l\\xEDnea debajo\",\"Eliminar todo a la izquierda\",\"Eliminar todo lo que est\\xE1 a la derecha\",\"Unir l\\xEDneas\",\"Transponer caracteres alrededor del cursor\",\"Transformar a may\\xFAsculas\",\"Transformar a min\\xFAsculas\",\"Transformar en Title Case\",\"Transformar en Snake Case\",\"Transformar a may\\xFAsculas y min\\xFAsculas Camel\",\"Transformar en caso Kebab\"],\"vs/editor/contrib/linkedEditing/browser/linkedEditing\":[\"Iniciar edici\\xF3n vinculada\",\"Color de fondo cuando el editor cambia el nombre autom\\xE1ticamente al escribir.\"],\"vs/editor/contrib/links/browser/links\":[\"No se pudo abrir este v\\xEDnculo porque no tiene un formato correcto: {0}\",\"No se pudo abrir este v\\xEDnculo porque falta el destino.\",\"Ejecutar comando\",\"Seguir v\\xEDnculo\",\"cmd + clic\",\"ctrl + clic\",\"opci\\xF3n + clic\",\"alt + clic\",\"Ejecutar el comando {0}\",\"Abrir v\\xEDnculo\"],\"vs/editor/contrib/message/browser/messageController\":[\"Indica si el editor muestra actualmente un mensaje insertado\"],\"vs/editor/contrib/multicursor/browser/multicursor\":[\"Cursor agregado: {0}\",\"Cursores agregados: {0}\",\"Agregar cursor arriba\",\"&&Agregar cursor arriba\",\"Agregar cursor debajo\",\"A&&gregar cursor abajo\",\"A\\xF1adir cursores a finales de l\\xEDnea\",\"Agregar c&&ursores a extremos de l\\xEDnea\",\"A\\xF1adir cursores a la parte inferior\",\"A\\xF1adir cursores a la parte superior\",\"Agregar selecci\\xF3n hasta la siguiente coincidencia de b\\xFAsqueda\",\"Agregar &&siguiente repetici\\xF3n\",\"Agregar selecci\\xF3n hasta la anterior coincidencia de b\\xFAsqueda\",\"Agregar r&&epetici\\xF3n anterior\",\"Mover \\xFAltima selecci\\xF3n hasta la siguiente coincidencia de b\\xFAsqueda\",\"Mover \\xFAltima selecci\\xF3n hasta la anterior coincidencia de b\\xFAsqueda\",\"Seleccionar todas las repeticiones de coincidencia de b\\xFAsqueda\",\"Seleccionar todas las &&repeticiones\",\"Cambiar todas las ocurrencias\",\"Enfocar el siguiente cursor\",\"Centra el cursor siguiente\",\"Enfocar cursor anterior\",\"Centra el cursor anterior\"],\"vs/editor/contrib/parameterHints/browser/parameterHints\":[\"Sugerencias para par\\xE1metros Trigger\"],\"vs/editor/contrib/parameterHints/browser/parameterHintsWidget\":[\"Icono para mostrar la sugerencia de par\\xE1metro siguiente.\",\"Icono para mostrar la sugerencia de par\\xE1metro anterior.\",\"{0}, sugerencia\",\"Color de primer plano del elemento activo en la sugerencia de par\\xE1metro.\"],\"vs/editor/contrib/peekView/browser/peekView\":[\"Indica si el editor de c\\xF3digo actual est\\xE1 incrustado en la inspecci\\xF3n.\",\"Cerrar\",\"Color de fondo del \\xE1rea de t\\xEDtulo de la vista de inspecci\\xF3n.\",\"Color del t\\xEDtulo de la vista de inpecci\\xF3n.\",\"Color de la informaci\\xF3n del t\\xEDtulo de la vista de inspecci\\xF3n.\",\"Color de los bordes y la flecha de la vista de inspecci\\xF3n.\",\"Color de fondo de la lista de resultados de vista de inspecci\\xF3n.\",\"Color de primer plano de los nodos de inspecci\\xF3n en la lista de resultados.\",\"Color de primer plano de los archivos de inspecci\\xF3n en la lista de resultados.\",\"Color de fondo de la entrada seleccionada en la lista de resultados de vista de inspecci\\xF3n.\",\"Color de primer plano de la entrada seleccionada en la lista de resultados de vista de inspecci\\xF3n.\",\"Color de fondo del editor de vista de inspecci\\xF3n.\",\"Color de fondo del margen en el editor de vista de inspecci\\xF3n.\",\"Color de fondo del desplazamiento permanente en el editor de vista de inspecci\\xF3n.\",\"Buscar coincidencia con el color de resaltado de la lista de resultados de vista de inspecci\\xF3n.\",\"Buscar coincidencia del color de resultado del editor de vista de inspecci\\xF3n.\",\"Hacer coincidir el borde resaltado en el editor de vista previa.\"],\"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\":[\"Abra primero un editor de texto para ir a una l\\xEDnea.\",\"Vaya a la l\\xEDnea {0} y al car\\xE1cter {1}.\",\"Ir a la l\\xEDnea {0}.\",\"L\\xEDnea actual: {0}, Car\\xE1cter: {1}. Escriba un n\\xFAmero de l\\xEDnea entre 1 y {2} a los que navegar.\",\"L\\xEDnea actual: {0}, Car\\xE1cter: {1}. Escriba un n\\xFAmero de l\\xEDnea al que navegar.\"],\"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\":[\"Para ir a un s\\xEDmbolo, primero abra un editor de texto con informaci\\xF3n de s\\xEDmbolo.\",\"El editor de texto activo no proporciona informaci\\xF3n de s\\xEDmbolos.\",\"No hay ning\\xFAn s\\xEDmbolo del editor coincidente.\",\"No hay s\\xEDmbolos del editor.\",\"Abrir en el lateral\",\"Abrir en la parte inferior\",\"s\\xEDmbolos ({0})\",\"propiedades ({0})\",\"m\\xE9todos ({0})\",\"funciones ({0})\",\"constructores ({0})\",\"variables ({0})\",\"clases ({0})\",\"estructuras ({0})\",\"eventos ({0})\",\"operadores ({0})\",\"interfaces ({0})\",\"espacios de nombres ({0})\",\"paquetes ({0})\",\"par\\xE1metros de tipo ({0})\",\"m\\xF3dulos ({0})\",\"propiedades ({0})\",\"enumeraciones ({0})\",\"miembros de enumeraci\\xF3n ({0})\",\"cadenas ({0})\",\"archivos ({0})\",\"matrices ({0})\",\"n\\xFAmeros ({0})\",\"booleanos ({0})\",\"objetos ({0})\",\"claves ({0})\",\"campos ({0})\",\"constantes ({0})\"],\"vs/editor/contrib/readOnlyMessage/browser/contribution\":[\"No se puede editar en la entrada de solo lectura\",\"No se puede editar en un editor de s\\xF3lo lectura\"],\"vs/editor/contrib/rename/browser/rename\":[\"No hay ning\\xFAn resultado.\",\"Error desconocido al resolver el cambio de nombre de la ubicaci\\xF3n\",\"Cambiando el nombre de '{0}' a '{1}'\",\"Cambiar el nombre de {0} a {1}\",\"Nombre cambiado correctamente de '{0}' a '{1}'. Resumen: {2}\",\"No se pudo cambiar el nombre a las ediciones de aplicaci\\xF3n\",\"No se pudo cambiar el nombre de las ediciones de c\\xE1lculo\",\"Cambiar el nombre del s\\xEDmbolo\",\"Activar/desactivar la capacidad de previsualizar los cambios antes de cambiar el nombre\"],\"vs/editor/contrib/rename/browser/renameInputField\":[\"Indica si el widget de cambio de nombre de entrada est\\xE1 visible.\",\"Cambie el nombre de la entrada. Escriba el nuevo nombre y presione Entrar para confirmar.\",\"{0} para cambiar de nombre, {1} para obtener una vista previa\"],\"vs/editor/contrib/smartSelect/browser/smartSelect\":[\"Expandir selecci\\xF3n\",\"&&Expandir selecci\\xF3n\",\"Reducir la selecci\\xF3n\",\"&&Reducir selecci\\xF3n\"],\"vs/editor/contrib/snippet/browser/snippetController2\":[\"Indica si el editor actual est\\xE1 en modo de fragmentos de c\\xF3digo.\",\"Indica si hay una tabulaci\\xF3n siguiente cuando se est\\xE1 en modo de fragmentos de c\\xF3digo.\",\"Si hay una tabulaci\\xF3n anterior cuando se est\\xE1 en modo de fragmentos de c\\xF3digo.\",\"Ir al marcador de posici\\xF3n siguiente...\"],\"vs/editor/contrib/snippet/browser/snippetVariables\":[\"Domingo\",\"Lunes\",\"Martes\",\"Mi\\xE9rcoles\",\"Jueves\",\"Viernes\",\"S\\xE1bado\",\"Dom\",\"Lun\",\"Mar\",\"Mi\\xE9\",\"Jue\",\"Vie\",\"S\\xE1b\",\"Enero\",\"Febrero\",\"Marzo\",\"Abril\",\"May\",\"Junio\",\"Julio\",\"Agosto\",\"Septiembre\",\"Octubre\",\"Noviembre\",\"Diciembre\",\"Ene\",\"Feb\",\"Mar\",\"Abr\",\"May\",\"Jun\",\"Jul\",\"Ago\",\"Sep\",\"Oct\",\"Nov\",\"Dic\"],\"vs/editor/contrib/stickyScroll/browser/stickyScrollActions\":[\"Alternar desplazamiento permanente\",\"&&Alternar desplazamiento permanente\",\"Desplazamiento permanente\",\"&&Desplazamiento permanente\",\"Desplazamiento permanente de foco\",\"&&Desplazamiento permanente de foco\",\"Seleccionar la siguiente l\\xEDnea de desplazamiento r\\xE1pida\",\"Seleccionar la l\\xEDnea de desplazamiento r\\xE1pida anterior\",\"Ir a la l\\xEDnea de desplazamiento r\\xE1pida con foco\",\"Seleccionar el Editor\"],\"vs/editor/contrib/suggest/browser/suggest\":[\"Si alguna sugerencia tiene el foco\",\"Indica si los detalles de las sugerencias est\\xE1n visibles.\",\"Indica si hay varias sugerencias para elegir.\",\"Indica si la inserci\\xF3n de la sugerencia actual genera un cambio o si ya se ha escrito todo.\",\"Indica si se insertan sugerencias al presionar Entrar.\",\"Indica si la sugerencia actual tiene el comportamiento de inserci\\xF3n y reemplazo.\",\"Indica si el comportamiento predeterminado es insertar o reemplazar.\",\"Indica si la sugerencia actual admite la resoluci\\xF3n de m\\xE1s detalles.\"],\"vs/editor/contrib/suggest/browser/suggestController\":['Aceptando \"{0}\" ediciones adicionales de {1} realizadas',\"Sugerencias para Trigger\",\"Insertar\",\"Insertar\",\"Reemplazar\",\"Reemplazar\",\"Insertar\",\"mostrar menos\",\"mostrar m\\xE1s\",\"Restablecer tama\\xF1o del widget de sugerencias\"],\"vs/editor/contrib/suggest/browser/suggestWidget\":[\"Color de fondo del widget sugerido.\",\"Color de borde del widget sugerido.\",\"Color de primer plano del widget sugerido.\",\"Color de primer plano de le entrada seleccionada del widget de sugerencias.\",\"Color de primer plano del icono de la entrada seleccionada en el widget de sugerencias.\",\"Color de fondo de la entrada seleccionada del widget sugerido.\",\"Color del resaltado coincidido en el widget sugerido.\",\"Color de los resaltados de coincidencia en el widget de sugerencias cuando se enfoca un elemento.\",\"Color de primer plano del estado del widget sugerido.\",\"Cargando...\",\"No hay sugerencias.\",\"Sugerir\",\"{0} {1}, {2}\",\"{0} {1}\",\"{0}, {1}\",\"{0}, documentos: {1}\"],\"vs/editor/contrib/suggest/browser/suggestWidgetDetails\":[\"Cerrar\",\"Cargando...\"],\"vs/editor/contrib/suggest/browser/suggestWidgetRenderer\":[\"Icono para obtener m\\xE1s informaci\\xF3n en el widget de sugerencias.\",\"Leer m\\xE1s\"],\"vs/editor/contrib/suggest/browser/suggestWidgetStatus\":[\"{0} ({1})\"],\"vs/editor/contrib/symbolIcons/browser/symbolIcons\":[\"Color de primer plano de los s\\xEDmbolos de matriz. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos booleanos. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de clase. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de color. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos constantes. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de constructor. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de enumerador. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de miembro del enumerador. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de evento. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de campo. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de archivo. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de carpeta. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de funci\\xF3n. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de interfaz. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de claves. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de palabra clave. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de m\\xE9todo. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de m\\xF3dulo. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de espacio de nombres. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos nulos. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano para los s\\xEDmbolos num\\xE9ricos. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de objeto. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano para los s\\xEDmbolos del operador. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de paquete. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de propiedad. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de referencia. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de fragmento de c\\xF3digo. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de cadena. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de estructura. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de texto. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano para los s\\xEDmbolos de par\\xE1metro de tipo. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos de unidad. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\",\"Color de primer plano de los s\\xEDmbolos variables. Estos s\\xEDmbolos aparecen en el contorno, la ruta de navegaci\\xF3n y el widget de sugerencias.\"],\"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\":[\"Alternar tecla de tabulaci\\xF3n para mover el punto de atenci\\xF3n\",\"Presionando la pesta\\xF1a ahora mover\\xE1 el foco al siguiente elemento enfocable.\",\"Presionando la pesta\\xF1a ahora insertar\\xE1 el car\\xE1cter de tabulaci\\xF3n\"],\"vs/editor/contrib/tokenization/browser/tokenization\":[\"Desarrollador: forzar nueva aplicaci\\xF3n de token\"],\"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\":[\"Icono que se muestra con un mensaje de advertencia en el editor de extensiones.\",\"Este documento contiene muchos caracteres Unicode ASCII no b\\xE1sicos\",\"Este documento contiene muchos caracteres Unicode ambiguos\",\"Este documento contiene muchos caracteres Unicode invisibles\",\"El car\\xE1cter {0} podr\\xEDa confundirse con el car\\xE1cter ASCII {1}, que es m\\xE1s com\\xFAn en el c\\xF3digo fuente.\",\"El car\\xE1cter {0} podr\\xEDa confundirse con el car\\xE1cter {1}, que es m\\xE1s com\\xFAn en el c\\xF3digo fuente.\",\"El car\\xE1cter {0} es invisible.\",\"El car\\xE1cter {0} no es un car\\xE1cter ASCII b\\xE1sico.\",\"Ajustar la configuraci\\xF3n\",\"Deshabilitar resaltado en comentarios\",\"Deshabilitar resaltado de caracteres en comentarios\",\"Deshabilitar resaltado en cadenas\",\"Deshabilitar resaltado de caracteres en cadenas\",\"Deshabilitar resaltado ambiguo\",\"Deshabilitar el resaltado de caracteres ambiguos\",\"Deshabilitar resaltado invisible\",\"Deshabilitar el resaltado de caracteres invisibles\",\"Deshabilitar resaltado que no es ASCII\",\"Deshabilitar el resaltado de caracteres ASCII no b\\xE1sicos\",\"Mostrar opciones de exclusi\\xF3n\",\"Excluir {0} (car\\xE1cter invisible) de que se resalte\",\"Excluir {0} de ser resaltado\",'Permite caracteres Unicode m\\xE1s comunes en el idioma \"{0}\".',\"Configurar opciones de resaltado Unicode\"],\"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\":[\"Terminadores de l\\xEDnea inusuales\",\"Se han detectado terminadores de l\\xEDnea inusuales\",`Este archivo \"{0}\" contiene uno o m\\xE1s caracteres de terminaci\\xF3n de l\\xEDnea inusuales, como el separador de l\\xEDnea (LS) o el separador de p\\xE1rrafo (PS).\\r\n\\r\nSe recomienda eliminarlos del archivo. Esto puede configurarse mediante \"editor.unusualLineTerminators\".`,\"&&Quitar terminadores de l\\xEDnea inusuales\",\"Omitir\"],\"vs/editor/contrib/wordHighlighter/browser/highlightDecorations\":[\"Color de fondo de un s\\xEDmbolo durante el acceso de lectura, como la lectura de una variable. El color no debe ser opaco para no ocultar decoraciones subyacentes.\",\"Color de fondo de un s\\xEDmbolo durante el acceso de escritura, como escribir en una variable. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color de fondo de la presencia textual para un s\\xEDmbolo. Para evitar ocultar cualquier decoraci\\xF3n subyacente, el color no debe ser opaco.\",\"Color de fondo de un s\\xEDmbolo durante el acceso de lectura; por ejemplo, cuando se lee una variable.\",\"Color de fondo de un s\\xEDmbolo durante el acceso de escritura; por ejemplo, cuando se escribe una variable.\",\"Color de borde de una repetici\\xF3n textual de un s\\xEDmbolo.\",\"Color del marcador de regla general para destacados de s\\xEDmbolos. El color no debe ser opaco para no ocultar decoraciones subyacentes.\",\"Color de marcador de regla general para destacados de s\\xEDmbolos de acceso de escritura. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color del marcador de regla de informaci\\xF3n general de una repetici\\xF3n textual de un s\\xEDmbolo. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\"],\"vs/editor/contrib/wordHighlighter/browser/wordHighlighter\":[\"Ir al siguiente s\\xEDmbolo destacado\",\"Ir al s\\xEDmbolo destacado anterior\",\"Desencadenar los s\\xEDmbolos destacados\"],\"vs/editor/contrib/wordOperations/browser/wordOperations\":[\"Eliminar palabra\"],\"vs/platform/action/common/actionCommonCategories\":[\"Ver\",\"Ayuda\",\"Probar\",\"archivo\",\"Preferencias\",\"Desarrollador\"],\"vs/platform/actionWidget/browser/actionList\":[\"{0} para aplicar, {1} para previsualizar\",\"{0} para aplicar\",\"{0}, Motivo de deshabilitaci\\xF3n: {1}\",\"Widget de acci\\xF3n\"],\"vs/platform/actionWidget/browser/actionWidget\":[\"Background color for toggled action items in action bar.\",\"Si la lista de widgets de acci\\xF3n es visible\",\"Ocultar el widget de acci\\xF3n\",\"Seleccione la acci\\xF3n anterior\",\"Seleccione la siguiente acci\\xF3n\",\"Aceptar la acci\\xF3n seleccionada\",\"Vista previa de la acci\\xF3n seleccionada\"],\"vs/platform/actions/browser/menuEntryActionViewItem\":[\"{0} ({1})\",\"{0} ({1})\",`{0}\\r\n[{1}] {2}`],\"vs/platform/actions/browser/toolbar\":[\"Ocultar\",\"Men\\xFA Restablecer\"],\"vs/platform/actions/common/menuService\":['Ocultar \"{0}\"'],\"vs/platform/audioCues/browser/audioCueService\":[\"Error en la l\\xEDnea\",\"Advertencia en la l\\xEDnea\",\"\\xC1rea doblada en la l\\xEDnea\",\"Punto de interrupci\\xF3n en la l\\xEDnea\",\"Sugerencia insertada en la l\\xEDnea\",\"Correcci\\xF3n r\\xE1pida del terminal\",\"Depurador detenido en el punto de interrupci\\xF3n\",\"No hay sugerencias de incrustaci\\xF3n en la l\\xEDnea\",\"Tarea completada.\",\"Error en la tarea\",\"Error del comando de terminal\",\"Campana de terminal\",\"Celda del bloc de notas completada\",\"Error en la celda del bloc de notas\",\"L\\xEDnea de diferencia insertada\",\"L\\xEDnea de diferencia eliminada\",\"L\\xEDnea de diferencia modificada\",\"Se envi\\xF3 una solicitud de chat\",\"Respuesta de chat recibida\",\"Respuesta de chat pendiente\"],\"vs/platform/configuration/common/configurationRegistry\":[\"La configuraci\\xF3n del lenguaje predeterminada se reemplaza\",\"Configure los valores que se invalidar\\xE1n para el idioma {0}.\",\"Establecer los valores de configuraci\\xF3n que se reemplazar\\xE1n para un lenguaje.\",\"Esta configuraci\\xF3n no admite la configuraci\\xF3n por idioma.\",\"Establecer los valores de configuraci\\xF3n que se reemplazar\\xE1n para un lenguaje.\",\"Esta configuraci\\xF3n no admite la configuraci\\xF3n por idioma.\",\"No se puede registrar una propiedad vac\\xEDa.\",`No se puede registrar \"{0}\". Coincide con el patr\\xF3n de propiedad '\\\\\\\\[.*\\\\\\\\]$' para describir la configuraci\\xF3n del editor espec\\xEDfica del lenguaje. Utilice la contribuci\\xF3n \"configurationDefaults\".`,'No se puede registrar \"{0}\". Esta propiedad ya est\\xE1 registrada.','No se puede registrar \"{0}\". La directiva asociada {1} ya est\\xE1 registrada con {2}.'],\"vs/platform/contextkey/browser/contextKeyService\":[\"Comando que devuelve informaci\\xF3n sobre las claves de contexto\"],\"vs/platform/contextkey/common/contextkey\":[\"Expresi\\xF3n de clave de contexto vac\\xEDa\",'\\xBFHa olvidado escribir una expresi\\xF3n? tambi\\xE9n puede poner \"false\" o \"true\" para evaluar siempre como false o true, respectivamente.',\"'in' despu\\xE9s de 'not'.\",\"par\\xE9ntesis de cierre ')'\",\"Token inesperado\",\"\\xBFHa olvidado poner && o || antes del token?\",\"Final de expresi\\xF3n inesperado\",\"\\xBFHa olvidado poner una clave de contexto?\",`Esperado: {0}\\r\nrecibido: '{1}'.`],\"vs/platform/contextkey/common/contextkeys\":[\"Si el sistema operativo es macOS\",\"Si el sistema operativo es Linux\",\"Si el sistema operativo es Windows\",\"Si la plataforma es un explorador web\",\"Si el sistema operativo es macOS en una plataforma que no es de explorador\",\"Si el sistema operativo es IOS\",\"Si la plataforma es un explorador web m\\xF3vil\",\"Tipo de calidad de VS Code\",\"Si el foco del teclado est\\xE1 dentro de un cuadro de entrada\"],\"vs/platform/contextkey/common/scanner\":[\"\\xBFQuiso decir {0}?\",\"\\xBFQuiso decir {0} o {1}?\",\"\\xBFQuiso decir {0}, {1} o {2}?\",\"\\xBFHa olvidado abrir o cerrar la cita?\",`\\xBFHa olvidado escapar el car\\xE1cter \"/\" (barra diagonal)?Coloque dos barras diagonales inversas antes de que escape, por ejemplo, '\\\\\\\\/'.`],\"vs/platform/history/browser/contextScopedHistoryWidget\":[\"Indica si las sugerencias est\\xE1n visibles.\"],\"vs/platform/keybinding/common/abstractKeybindingService\":[\"Se presion\\xF3 ({0}). Esperando la siguiente tecla...\",\"Se ha presionado ({0}). Esperando la siguiente tecla...\",\"La combinaci\\xF3n de claves ({0}, {1}) no es un comando.\",\"La combinaci\\xF3n de claves ({0}, {1}) no es un comando.\"],\"vs/platform/list/browser/listService\":[\"\\xC1rea de trabajo\",'Se asigna a \"Control\" en Windows y Linux y a \"Comando\" en macOS.','Se asigna a \"Alt\" en Windows y Linux y a \"Opci\\xF3n\" en macOS.',\"El modificador que se utilizar\\xE1 para agregar un elemento en los \\xE1rboles y listas para una selecci\\xF3n m\\xFAltiple con el rat\\xF3n (por ejemplo en el explorador, abiertos editores y vista de scm). Los gestos de rat\\xF3n 'Abrir hacia' - si est\\xE1n soportados - se adaptar\\xE1n de forma tal que no tenga conflicto con el modificador m\\xFAltiple.\",\"Controla c\\xF3mo abrir elementos en los \\xE1rboles y las listas mediante el mouse (si se admite). Tenga en cuenta que algunos \\xE1rboles y listas pueden optar por ignorar esta configuraci\\xF3n si no es aplicable.\",\"Controla si las listas y los \\xE1rboles admiten el desplazamiento horizontal en el \\xE1rea de trabajo. Advertencia: La activaci\\xF3n de esta configuraci\\xF3n repercute en el rendimiento.\",\"Controla si los clics en la barra de desplazamiento se desplazan p\\xE1gina por p\\xE1gina.\",\"Controla la sangr\\xEDa de \\xE1rbol en p\\xEDxeles.\",\"Controla si el \\xE1rbol debe representar gu\\xEDas de sangr\\xEDa.\",\"Controla si las listas y los \\xE1rboles tienen un desplazamiento suave.\",'Se usar\\xE1 un multiplicador en los eventos de desplazamiento de la rueda del mouse \"deltaX\" y \"deltaY\". ','Multiplicador de la velocidad de desplazamiento al presionar \"Alt\".',\"Resalta elementos al buscar. Navegar m\\xE1s arriba o abajo pasar\\xE1 solo por los elementos resaltados.\",\"Filtre elementos al buscar.\",\"Controla el modo de b\\xFAsqueda predeterminado para listas y \\xE1rboles en el \\xE1rea de trabajo.\",\"La navegaci\\xF3n simple del teclado se centra en elementos que coinciden con la entrada del teclado. El emparejamiento se hace solo en prefijos.\",\"Destacar la navegaci\\xF3n del teclado resalta los elementos que coinciden con la entrada del teclado. M\\xE1s arriba y abajo la navegaci\\xF3n atravesar\\xE1 solo los elementos destacados.\",\"La navegaci\\xF3n mediante el teclado de filtro filtrar\\xE1 y ocultar\\xE1 todos los elementos que no coincidan con la entrada del teclado.\",\"Controla el estilo de navegaci\\xF3n del teclado para listas y \\xE1rboles en el \\xE1rea de trabajo. Puede ser simple, resaltar y filtrar.\",'Use \"workbench.list.defaultFindMode\" y \"workbench.list.typeNavigationMode\" en su lugar.',\"Usar coincidencias aproximadas al buscar.\",\"Use coincidencias contiguas al buscar.\",\"Controla el tipo de coincidencia que se usa al buscar listas y \\xE1rboles en el \\xE1rea de trabajo.\",\"Controla c\\xF3mo se expanden las carpetas de \\xE1rbol al hacer clic en sus nombres. Tenga en cuenta que algunos \\xE1rboles y listas pueden optar por omitir esta configuraci\\xF3n si no es aplicable.\",'Controla el funcionamiento de la navegaci\\xF3n por tipos en listas y \\xE1rboles del \\xE1rea de trabajo. Cuando se establece en \"trigger\", la navegaci\\xF3n por tipos comienza una vez que se ejecuta el comando \"list.triggerTypeNavigation\".'],\"vs/platform/markers/common/markers\":[\"Error\",\"Advertencia\",\"Informaci\\xF3n\"],\"vs/platform/quickinput/browser/commandsQuickAccess\":[\"usado recientemente\",\"usados habitualmente\",\"otros comandos\",\"{0}, {1}\",'El comando \"{0}\" ha dado lugar a un error'],\"vs/platform/quickinput/browser/helpQuickAccess\":[\"{0}, {1}\"],\"vs/platform/quickinput/browser/quickInput\":[\"Atr\\xE1s\",'Presione \"Entrar\" para confirmar su entrada o \"Esc\" para cancelar',\"{0}/{1}\",\"Escriba para restringir los resultados.\"],\"vs/platform/quickinput/browser/quickInputController\":[\"Toggle all checkboxes\",\"{0} Results\",\"{0} Selected\",\"OK\",\"Custom\",\"Back ({0})\",\"Back\"],\"vs/platform/quickinput/browser/quickInputList\":[\"Entrada r\\xE1pida\"],\"vs/platform/quickinput/browser/quickInputUtils\":['Haga clic en para ejecutar el comando \"{0}\"'],\"vs/platform/theme/common/colorRegistry\":[\"Color de primer plano general. Este color solo se usa si un componente no lo invalida.\",\"Primer plano general de los elementos deshabilitados. Este color solo se usa si un componente no lo reemplaza.\",\"Color de primer plano general para los mensajes de erroe. Este color solo se usa si un componente no lo invalida.\",\"Color de primer plano para el texto descriptivo que proporciona informaci\\xF3n adicional, por ejemplo para una etiqueta.\",\"El color predeterminado para los iconos en el \\xE1rea de trabajo.\",\"Color de borde de los elementos con foco. Este color solo se usa si un componente no lo invalida.\",\"Un borde adicional alrededor de los elementos para separarlos unos de otros y as\\xED mejorar el contraste.\",\"Un borde adicional alrededor de los elementos activos para separarlos unos de otros y as\\xED mejorar el contraste.\",\"El color de fondo del texto seleccionado en el \\xE1rea de trabajo (por ejemplo, campos de entrada o \\xE1reas de texto). Esto no se aplica a las selecciones dentro del editor.\",\"Color para los separadores de texto.\",\"Color de primer plano para los v\\xEDnculos en el texto.\",\"Color de primer plano para los enlaces de texto, al hacer clic o pasar el mouse sobre ellos.\",\"Color de primer plano para los segmentos de texto con formato previo.\",\"Color de fondo para los bloques en texto.\",\"Color de borde para los bloques en texto.\",\"Color de fondo para los bloques de c\\xF3digo en el texto.\",\"Color de sombra de los widgets dentro del editor, como buscar/reemplazar\",\"Color de borde de los widgets dentro del editor, como buscar/reemplazar\",\"Fondo de cuadro de entrada.\",\"Primer plano de cuadro de entrada.\",\"Borde de cuadro de entrada.\",\"Color de borde de opciones activadas en campos de entrada.\",\"Color de fondo de las opciones activadas en los campos de entrada.\",\"Color de fondo al pasar por encima de las opciones en los campos de entrada.\",\"Color de primer plano de las opciones activadas en los campos de entrada.\",\"Color de primer plano para el marcador de posici\\xF3n de texto\",\"Color de fondo de validaci\\xF3n de entrada para gravedad de informaci\\xF3n.\",\"Color de primer plano de validaci\\xF3n de entrada para informaci\\xF3n de gravedad.\",\"Color de borde de validaci\\xF3n de entrada para gravedad de informaci\\xF3n.\",\"Color de fondo de validaci\\xF3n de entrada para gravedad de advertencia.\",\"Color de primer plano de validaci\\xF3n de entrada para informaci\\xF3n de advertencia.\",\"Color de borde de validaci\\xF3n de entrada para gravedad de advertencia.\",\"Color de fondo de validaci\\xF3n de entrada para gravedad de error.\",\"Color de primer plano de validaci\\xF3n de entrada para informaci\\xF3n de error.\",\"Color de borde de valdaci\\xF3n de entrada para gravedad de error.\",\"Fondo de lista desplegable.\",\"Fondo de la lista desplegable.\",\"Primer plano de lista desplegable.\",\"Borde de lista desplegable.\",\"Color de primer plano del bot\\xF3n.\",\"Color del separador de botones.\",\"Color de fondo del bot\\xF3n.\",\"Color de fondo del bot\\xF3n al mantener el puntero.\",\"Color del borde del bot\\xF3n\",\"Color de primer plano del bot\\xF3n secundario.\",\"Color de fondo del bot\\xF3n secundario.\",\"Color de fondo del bot\\xF3n secundario al mantener el mouse.\",\"Color de fondo de la insignia. Las insignias son peque\\xF1as etiquetas de informaci\\xF3n, por ejemplo los resultados de un n\\xFAmero de resultados.\",\"Color de primer plano de la insignia. Las insignias son peque\\xF1as etiquetas de informaci\\xF3n, por ejemplo los resultados de un n\\xFAmero de resultados.\",\"Sombra de la barra de desplazamiento indica que la vista se ha despazado.\",\"Color de fondo de control deslizante de barra de desplazamiento.\",\"Color de fondo de barra de desplazamiento cursor cuando se pasar sobre el control.\",\"Color de fondo de la barra de desplazamiento al hacer clic.\",\"Color de fondo para la barra de progreso que se puede mostrar para las operaciones de larga duraci\\xF3n.\",\"Color de fondo del texto de error del editor. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color de primer plano de squigglies de error en el editor.\",\"Si se establece, color de subrayados dobles para errores en el editor.\",\"Color de fondo del texto de advertencia del editor. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color de primer plano de squigglies de advertencia en el editor.\",\"Si se establece, color de subrayados dobles para advertencias en el editor.\",\"Color de fondo del texto de informaci\\xF3n del editor. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color de primer plano de los subrayados ondulados informativos en el editor.\",\"Si se establece, color de subrayados dobles para informaciones en el editor.\",\"Color de primer plano de pista squigglies en el editor.\",\"Si se establece, color de subrayados dobles para sugerencias en el editor.\",\"Color de borde de los marcos activos.\",\"Color de fondo del editor.\",\"Color de primer plano predeterminado del editor.\",\"Color de fondo de desplazamiento permanente para el editor\",\"Desplazamiento permanente al mantener el mouse sobre el color de fondo del editor\",\"Color de fondo del editor de widgets como buscar/reemplazar\",\"Color de primer plano de los widgets del editor, como buscar y reemplazar.\",\"Color de borde de los widgets del editor. El color solo se usa si el widget elige tener un borde y no invalida el color.\",\"Color del borde de la barra de cambio de tama\\xF1o de los widgets del editor. El color se utiliza solo si el widget elige tener un borde de cambio de tama\\xF1o y si un widget no invalida el color.\",\"Color de fondo del selector r\\xE1pido. El widget del selector r\\xE1pido es el contenedor para selectores como la paleta de comandos.\",\"Color de primer plano del selector r\\xE1pido. El widget del selector r\\xE1pido es el contenedor para selectores como la paleta de comandos.\",\"Color de fondo del t\\xEDtulo del selector r\\xE1pido. El widget del selector r\\xE1pido es el contenedor para selectores como la paleta de comandos.\",\"Selector de color r\\xE1pido para la agrupaci\\xF3n de etiquetas.\",\"Selector de color r\\xE1pido para la agrupaci\\xF3n de bordes.\",\"Color de fondo de etiqueta de enlace de teclado. La etiqueta enlace de teclado se usa para representar un m\\xE9todo abreviado de teclado.\",\"Color de primer plano de etiqueta de enlace de teclado. La etiqueta enlace de teclado se usa para representar un m\\xE9todo abreviado de teclado.\",\"Color del borde de la etiqueta de enlace de teclado. La etiqueta enlace de teclado se usa para representar un m\\xE9todo abreviado de teclado.\",\"Color del borde inferior de la etiqueta de enlace de teclado. La etiqueta enlace de teclado se usa para representar un m\\xE9todo abreviado de teclado.\",\"Color de la selecci\\xF3n del editor.\",\"Color del texto seleccionado para alto contraste.\",\"Color de la selecci\\xF3n en un editor inactivo. El color no debe ser opaco para no ocultar decoraciones subyacentes.\",\"Color en las regiones con el mismo contenido que la selecci\\xF3n. El color no debe ser opaco para no ocultar decoraciones subyacentes.\",\"Color de borde de las regiones con el mismo contenido que la selecci\\xF3n.\",\"Color de la coincidencia de b\\xFAsqueda actual.\",\"Color de los otros resultados de la b\\xFAsqueda. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color de la gama que limita la b\\xFAsqueda. El color no debe ser opaco para no ocultar decoraciones subyacentes.\",\"Color de borde de la coincidencia de b\\xFAsqueda actual.\",\"Color de borde de otra b\\xFAsqueda que coincide.\",\"Color del borde de la gama que limita la b\\xFAsqueda. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color de las consultas coincidentes del Editor de b\\xFAsqueda.\",\"Color de borde de las consultas coincidentes del Editor de b\\xFAsqueda.\",\"Color del texto en el mensaje de finalizaci\\xF3n del viewlet de b\\xFAsqueda.\",\"Destacar debajo de la palabra para la que se muestra un mensaje al mantener el mouse. El color no debe ser opaco para no ocultar decoraciones subyacentes.\",\"Color de fondo al mantener el puntero en el editor.\",\"Color de primer plano al mantener el puntero en el editor.\",\"Color del borde al mantener el puntero en el editor.\",\"Color de fondo de la barra de estado al mantener el puntero en el editor.\",\"Color de los v\\xEDnculos activos.\",\"Color de primer plano de las sugerencias insertadas\",\"Color de fondo de las sugerencias insertadas\",\"Color de primer plano de las sugerencias insertadas para los tipos de letra\",\"Color de fondo de las sugerencias insertadas para los tipos de letra\",\"Color de primer plano de las sugerencias insertadas para los par\\xE1metros\",\"Color de fondo de las sugerencias insertadas para los par\\xE1metros\",\"El color utilizado para el icono de bombilla de acciones.\",\"El color utilizado para el icono de la bombilla de acciones de correcci\\xF3n autom\\xE1tica.\",\"Color de fondo para el texto que se insert\\xF3. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color de fondo para el texto que se elimin\\xF3. El color no debe ser opaco para no ocultar decoraciones subyacentes.\",\"Color de fondo de las l\\xEDneas insertadas. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color de fondo de las l\\xEDneas que se quitaron. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color de fondo del margen donde se insertaron las l\\xEDneas.\",\"Color de fondo del margen donde se quitaron las l\\xEDneas.\",\"Primer plano de la regla de informaci\\xF3n general de diferencias para el contenido insertado.\",\"Primer plano de la regla de informaci\\xF3n general de diferencias para el contenido quitado.\",\"Color de contorno para el texto insertado.\",\"Color de contorno para el texto quitado.\",\"Color del borde entre ambos editores de texto.\",\"Color de relleno diagonal del editor de diferencias. El relleno diagonal se usa en las vistas de diferencias en paralelo.\",\"Color de fondo de los bloques sin modificar en el editor de diferencias.\",\"Color de primer plano de los bloques sin modificar en el editor de diferencias.\",\"Color de fondo del c\\xF3digo sin modificar en el editor de diferencias.\",\"Color de fondo de la lista o el \\xE1rbol del elemento con el foco cuando la lista o el \\xE1rbol est\\xE1n activos. Una lista o un \\xE1rbol tienen el foco del teclado cuando est\\xE1n activos, cuando est\\xE1n inactivos no.\",\"Color de primer plano de la lista o el \\xE1rbol del elemento con el foco cuando la lista o el \\xE1rbol est\\xE1n activos. Una lista o un \\xE1rbol tienen el foco del teclado cuando est\\xE1n activos, cuando est\\xE1n inactivos no.\",\"Color de contorno de la lista o el \\xE1rbol del elemento con el foco cuando la lista o el \\xE1rbol est\\xE1n activos. Una lista o un \\xE1rbol tienen el foco del teclado cuando est\\xE1n activos, pero no cuando est\\xE1n inactivos.\",\"Color de contorno de la lista o el \\xE1rbol del elemento con el foco cuando la lista o el \\xE1rbol est\\xE1n activos y seleccionados. Una lista o un \\xE1rbol tienen el foco del teclado cuando est\\xE1n activos, pero no cuando est\\xE1n inactivos.\",\"Color de fondo de la lista o el \\xE1rbol del elemento seleccionado cuando la lista o el \\xE1rbol est\\xE1n activos. Una lista o un \\xE1rbol tienen el foco del teclado cuando est\\xE1n activos, cuando est\\xE1n inactivos no.\",\"Color de primer plano de la lista o el \\xE1rbol del elemento seleccionado cuando la lista o el \\xE1rbol est\\xE1n activos. Una lista o un \\xE1rbol tienen el foco del teclado cuando est\\xE1n activos, cuando est\\xE1n inactivos no.\",\"Color de primer plano del icono de lista o \\xE1rbol del elemento seleccionado cuando la lista o el \\xE1rbol est\\xE1n activos. Una lista o un \\xE1rbol tienen el foco del teclado cuando est\\xE1n activos, cuando est\\xE1n inactivos no.\",\"Color de fondo de la lista o el \\xE1rbol del elemento seleccionado cuando la lista o el \\xE1rbol est\\xE1n inactivos. Una lista o un \\xE1rbol tienen el foco del teclado cuando est\\xE1n activos, cuando est\\xE1n inactivos no.\",\"Color de primer plano de la lista o el \\xE1rbol del elemento con el foco cuando la lista o el \\xE1rbol esta inactiva. Una lista o un \\xE1rbol tiene el foco del teclado cuando est\\xE1 activo, cuando esta inactiva no.\",\"Color de primer plano del icono de lista o \\xE1rbol del elemento seleccionado cuando la lista o el \\xE1rbol est\\xE1n inactivos. Una lista o un \\xE1rbol tienen el foco del teclado cuando est\\xE1n activos, cuando est\\xE1n inactivos no.\",\"Color de fondo de la lista o el \\xE1rbol del elemento con el foco cuando la lista o el \\xE1rbol est\\xE1n inactivos. Una lista o un \\xE1rbol tienen el foco del teclado cuando est\\xE1n activos, pero no cuando est\\xE1n inactivos.\",\"Color de contorno de la lista o el \\xE1rbol del elemento con el foco cuando la lista o el \\xE1rbol est\\xE1n inactivos. Una lista o un \\xE1rbol tienen el foco del teclado cuando est\\xE1n activos, pero no cuando est\\xE1n inactivos.\",\"Fondo de la lista o el \\xE1rbol al mantener el mouse sobre los elementos.\",\"Color de primer plano de la lista o el \\xE1rbol al pasar por encima de los elementos con el rat\\xF3n.\",\"Fondo de arrastrar y colocar la lista o el \\xE1rbol al mover los elementos con el mouse.\",\"Color de primer plano de la lista o el \\xE1rbol de las coincidencias resaltadas al buscar dentro de la lista o el \\xE1bol.\",\"Color de primer plano de la lista o \\xE1rbol de los elementos coincidentes en los elementos enfocados activamente cuando se busca dentro de la lista o \\xE1rbol.\",\"Color de primer plano de una lista o \\xE1rbol para los elementos inv\\xE1lidos, por ejemplo una raiz sin resolver en el explorador.\",\"Color del primer plano de elementos de lista que contienen errores.\",\"Color del primer plano de elementos de lista que contienen advertencias.\",\"Color de fondo del widget de filtro de tipo en listas y \\xE1rboles.\",\"Color de contorno del widget de filtro de tipo en listas y \\xE1rboles.\",\"Color de contorno del widget de filtro de tipo en listas y \\xE1rboles, cuando no hay coincidencias.\",\"Color de sombra del widget de filtrado de escritura en listas y \\xE1rboles.\",\"Color de fondo de la coincidencia filtrada.\",\"Color de borde de la coincidencia filtrada.\",\"Color de trazo de \\xE1rbol para las gu\\xEDas de sangr\\xEDa.\",\"Color de trazo de \\xE1rbol para las gu\\xEDas de sangr\\xEDa que no est\\xE1n activas.\",\"Color de borde de la tabla entre columnas.\",\"Color de fondo para las filas de tabla impares.\",\"Color de primer plano de lista/\\xE1rbol para los elementos no enfatizados.\",\"Color de fondo de la casilla de verificaci\\xF3n del widget.\",\"Color de fondo del widget de la casilla cuando se selecciona el elemento en el que se encuentra.\",\"Color de primer plano del widget de la casilla de verificaci\\xF3n.\",\"Color del borde del widget de la casilla de verificaci\\xF3n.\",\"Color de borde del widget de la casilla cuando se selecciona el elemento en el que se encuentra.\",\"Use quickInputList.focusBackground en su lugar.\",\"Selector r\\xE1pido del color de primer plano para el elemento con el foco.\",\"Color de primer plano del icono del selector r\\xE1pido para el elemento con el foco.\",\"Color de fondo del selector r\\xE1pido para el elemento con el foco.\",\"Color del borde de los men\\xFAs.\",\"Color de primer plano de los elementos de men\\xFA.\",\"Color de fondo de los elementos de men\\xFA.\",\"Color de primer plano del menu para el elemento del men\\xFA seleccionado.\",\"Color de fondo del menu para el elemento del men\\xFA seleccionado.\",\"Color del borde del elemento seleccionado en los men\\xFAs.\",\"Color del separador del menu para un elemento del men\\xFA.\",\"El fondo de la barra de herramientas se perfila al pasar por encima de las acciones con el mouse.\",\"La barra de herramientas se perfila al pasar por encima de las acciones con el mouse.\",\"Fondo de la barra de herramientas al mantener el mouse sobre las acciones\",\"Resaltado del color de fondo para una ficha de un fragmento de c\\xF3digo.\",\"Resaltado del color del borde para una ficha de un fragmento de c\\xF3digo.\",\"Resaltado del color de fondo para la \\xFAltima ficha de un fragmento de c\\xF3digo.\",\"Resaltado del color del borde para la \\xFAltima tabulaci\\xF3n de un fragmento de c\\xF3digo.\",\"Color de los elementos de ruta de navegaci\\xF3n que reciben el foco.\",\"Color de fondo de los elementos de ruta de navegaci\\xF3n\",\"Color de los elementos de ruta de navegaci\\xF3n que reciben el foco.\",\"Color de los elementos de ruta de navegaci\\xF3n seleccionados.\",\"Color de fondo del selector de elementos de ruta de navegaci\\xF3n.\",\"Fondo del encabezado actual en los conflictos de combinaci\\xF3n en l\\xEDnea. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Fondo de contenido actual en los conflictos de combinaci\\xF3n en l\\xEDnea. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Fondo de encabezado entrante en los conflictos de combinaci\\xF3n en l\\xEDnea. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Fondo de contenido entrante en los conflictos de combinaci\\xF3n en l\\xEDnea. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Fondo de cabecera de elemento antecesor com\\xFAn en conflictos de fusi\\xF3n en l\\xEDnea. El color no debe ser opaco para no ocultar decoraciones subyacentes.\",\"Fondo de contenido antecesor com\\xFAn en conflictos de combinaci\\xF3n en l\\xEDnea. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color del borde en los encabezados y el divisor en conflictos de combinaci\\xF3n alineados.\",\"Primer plano de la regla de visi\\xF3n general actual para conflictos de combinaci\\xF3n alineados.\",\"Primer plano de regla de visi\\xF3n general de entrada para conflictos de combinaci\\xF3n alineados.\",\"Primer plano de la regla de visi\\xF3n general de ancestros comunes para conflictos de combinaci\\xF3n alineados.\",\"Color del marcador de regla general para buscar actualizaciones. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color del marcador de la regla general para los destacados de la selecci\\xF3n. El color no debe ser opaco para no ocultar las decoraciones subyacentes.\",\"Color de marcador de minimapa para coincidencias de b\\xFAsqueda.\",\"Color de marcador de minimapa para las selecciones del editor que se repiten.\",\"Color del marcador de minimapa para la selecci\\xF3n del editor.\",\"Color del marcador de minimapa para errores.\",\"Color del marcador de minimapa para advertencias.\",\"Color de fondo del minimapa.\",'Opacidad de los elementos de primer plano representados en el minimapa. Por ejemplo, \"#000000c0\" representar\\xE1 los elementos con 75% de opacidad.',\"Color de fondo del deslizador del minimapa.\",\"Color de fondo del deslizador del minimapa al pasar el puntero.\",\"Color de fondo del deslizador de minimapa al hacer clic en \\xE9l.\",\"Color utilizado para el icono de error de problemas.\",\"Color utilizado para el icono de advertencia de problemas.\",\"Color utilizado para el icono de informaci\\xF3n de problemas.\",\"Color de primer plano que se usa en los gr\\xE1ficos.\",\"Color que se usa para las l\\xEDneas horizontales en los gr\\xE1ficos.\",\"Color rojo que se usa en las visualizaciones de gr\\xE1ficos.\",\"Color azul que se usa en las visualizaciones de gr\\xE1ficos.\",\"Color amarillo que se usa en las visualizaciones de gr\\xE1ficos.\",\"Color naranja que se usa en las visualizaciones de gr\\xE1ficos.\",\"Color verde que se usa en las visualizaciones de gr\\xE1ficos.\",\"Color p\\xFArpura que se usa en las visualizaciones de gr\\xE1ficos.\"],\"vs/platform/theme/common/iconRegistry\":[\"Identificador de la fuente que se va a usar. Si no se establece, se usa la fuente definida en primer lugar.\",\"Car\\xE1cter de fuente asociado a la definici\\xF3n del icono.\",\"Icono de la acci\\xF3n de cierre en los widgets.\",\"Icono para ir a la ubicaci\\xF3n del editor anterior.\",\"Icono para ir a la ubicaci\\xF3n del editor siguiente.\"],\"vs/platform/undoRedo/common/undoRedoService\":[\"Se han cerrado los siguientes archivos y se han modificado en el disco: {0}.\",\"Los siguientes archivos se han modificado de forma incompatible: {0}.\",'No se pudo deshacer \"{0}\" en todos los archivos. {1}','No se pudo deshacer \"{0}\" en todos los archivos. {1}','No se pudo deshacer \"{0}\" en todos los archivos porque se realizaron cambios en {1}','No se pudo deshacer \"{0}\" en todos los archivos porque ya hay una operaci\\xF3n de deshacer o rehacer en ejecuci\\xF3n en {1}','No se pudo deshacer \"{0}\" en todos los archivos porque se produjo una operaci\\xF3n de deshacer o rehacer mientras tanto','\\xBFDesea deshacer \"{0}\" en todos los archivos?',\"&&Deshacer en {0} archivos\",\"Deshacer este &&archivo\",'No se pudo deshacer \"{0}\" porque ya hay una operaci\\xF3n de deshacer o rehacer en ejecuci\\xF3n.','\\xBFQuiere deshacer \"{0}\"?',\"&&S\\xED\",\"No\",'No se pudo rehacer \"{0}\" en todos los archivos. {1}','No se pudo rehacer \"{0}\" en todos los archivos. {1}','No se pudo volver a hacer \"{0}\" en todos los archivos porque se realizaron cambios en {1}','No se pudo rehacer \"{0}\" en todos los archivos porque ya hay una operaci\\xF3n de deshacer o rehacer en ejecuci\\xF3n en {1}','No se pudo rehacer \"{0}\" en todos los archivos porque se produjo una operaci\\xF3n de deshacer o rehacer mientras tanto','No se pudo rehacer \"{0}\" porque ya hay una operaci\\xF3n de deshacer o rehacer en ejecuci\\xF3n.'],\"vs/platform/workspace/common/workspace\":[\"\\xC1rea de trabajo de c\\xF3digo\"]});\n\n//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.es.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/editor/editor.main.nls.fr.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/editor/editor.main.nls.fr\",{\"vs/base/browser/ui/actionbar/actionViewItems\":[\"{0} ({1})\"],\"vs/base/browser/ui/findinput/findInput\":[\"entr\\xE9e\"],\"vs/base/browser/ui/findinput/findInputToggles\":[\"Respecter la casse\",\"Mot entier\",\"Utiliser une expression r\\xE9guli\\xE8re\"],\"vs/base/browser/ui/findinput/replaceInput\":[\"entr\\xE9e\",\"Pr\\xE9server la casse\"],\"vs/base/browser/ui/hover/hoverWidget\":[\"Inspect this in the accessible view with {0}.\",\"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\"],\"vs/base/browser/ui/iconLabel/iconLabelHover\":[\"Chargement...\"],\"vs/base/browser/ui/inputbox/inputBox\":[\"Erreur\\xA0: {0}\",\"Avertissement\\xA0: {0}\",\"Info\\xA0: {0}\",\"pour l\\u2019historique\",\"Entr\\xE9e effac\\xE9e\"],\"vs/base/browser/ui/keybindingLabel/keybindingLabel\":[\"Ind\\xE9pendant\"],\"vs/base/browser/ui/selectBox/selectBoxCustom\":[\"Zone de s\\xE9lection\"],\"vs/base/browser/ui/toolbar/toolbar\":[\"Plus d'actions...\"],\"vs/base/browser/ui/tree/abstractTree\":[\"Filtrer\",\"Correspondance approximative\",\"Type \\xE0 filtrer\",\"Entrer le texte \\xE0 rechercher\",\"Entrer le texte \\xE0 rechercher\",\"Fermer\",\"Aucun \\xE9l\\xE9ment trouv\\xE9.\"],\"vs/base/common/actions\":[\"(vide)\"],\"vs/base/common/errorMessage\":[\"{0}: {1}\",\"Une erreur syst\\xE8me s'est produite ({0})\",\"Une erreur inconnue s\\u2019est produite. Veuillez consulter le journal pour plus de d\\xE9tails.\",\"Une erreur inconnue s\\u2019est produite. Veuillez consulter le journal pour plus de d\\xE9tails.\",\"{0} ({1}\\xA0erreurs au total)\",\"Une erreur inconnue s\\u2019est produite. Veuillez consulter le journal pour plus de d\\xE9tails.\"],\"vs/base/common/keybindingLabels\":[\"Ctrl\",\"Maj\",\"Alt\",\"Windows\",\"Ctrl\",\"Maj\",\"Alt\",\"Super\",\"Contr\\xF4le\",\"Maj\",\"Option\",\"Commande\",\"Contr\\xF4le\",\"Maj\",\"Alt\",\"Windows\",\"Contr\\xF4le\",\"Maj\",\"Alt\",\"Super\"],\"vs/base/common/platform\":[\"_\"],\"vs/editor/browser/controller/textAreaHandler\":[\"\\xE9diteur\",\"L\\u2019\\xE9diteur n\\u2019est pas accessible pour le moment.\",\"{0} Pour activer le mode optimis\\xE9 du lecteur d\\u2019\\xE9cran, utilisez {1}\",\"{0} Pour activer le mode optimis\\xE9 du lecteur d\\u2019\\xE9cran, ouvrez la s\\xE9lection rapide avec {1} et ex\\xE9cutez la commande Activer/D\\xE9sactiver le mode d\\u2019accessibilit\\xE9 du lecteur d\\u2019\\xE9cran, qui n\\u2019est pas d\\xE9clenchable via le clavier pour le moment.\",\"{0} Attribuez une combinaison de touches \\xE0 la commande Activer/D\\xE9sactiver le mode d\\u2019accessibilit\\xE9 du lecteur d\\u2019\\xE9cran en acc\\xE9dant \\xE0 l\\u2019\\xE9diteur de combinaisons de touches avec {1} et ex\\xE9cutez-la.\"],\"vs/editor/browser/coreCommands\":[\"Aligner par rapport \\xE0 la fin m\\xEAme en cas de passage \\xE0 des lignes plus longues\",\"Aligner par rapport \\xE0 la fin m\\xEAme en cas de passage \\xE0 des lignes plus longues\",\"Curseurs secondaires supprim\\xE9s\"],\"vs/editor/browser/editorExtensions\":[\"Ann&&uler\",\"Annuler\",\"&&R\\xE9tablir\",\"R\\xE9tablir\",\"&&S\\xE9lectionner tout\",\"Tout s\\xE9lectionner\"],\"vs/editor/browser/widget/codeEditorWidget\":[\"Le nombre de curseurs a \\xE9t\\xE9 limit\\xE9 \\xE0 {0}. Envisagez d\\u2019utiliser [rechercher et remplacer](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) pour les modifications plus importantes ou augmentez la limite du nombre de curseurs multiples du param\\xE8tre.\",\"Augmenter la limite de curseurs multiples\"],\"vs/editor/browser/widget/diffEditor.contribution\":[\"Visionneuse Diff accessible\",\"Acc\\xE9der \\xE0 la diff\\xE9rence suivante\",\"Ouvrir la visionneuse diff accessible\",\"Acc\\xE9der la diff\\xE9rence pr\\xE9c\\xE9dente\"],\"vs/editor/browser/widget/diffEditorWidget\":[\"\\xC9l\\xE9ment d\\xE9coratif de ligne pour les insertions dans l'\\xE9diteur de diff\\xE9rences.\",\"\\xC9l\\xE9ment d\\xE9coratif de ligne pour les suppressions dans l'\\xE9diteur de diff\\xE9rences.\",\" utiliser Maj + F7 pour parcourir les modifications\",\"Impossible de comparer les fichiers car l'un d'eux est trop volumineux.\",\"Cliquez pour r\\xE9tablir la modification\"],\"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\":[\"Ic\\xF4ne \\xAB Ins\\xE9rer \\xBB dans la visionneuse diff accessible.\",\"Ic\\xF4ne \\xAB Supprimer \\xBB dans la visionneuse diff accessible.\",\"Ic\\xF4ne de \\xAB Fermer \\xBB dans la visionneuse diff accessible.\",\"Fermer\",\"Visionneuse diff accessible. Utilisez les fl\\xE8ches haut et bas pour naviguer.\",\"aucune ligne chang\\xE9e\",\"1\\xA0ligne chang\\xE9e\",\"{0}\\xA0lignes chang\\xE9es\",\"Diff\\xE9rence\\xA0{0} sur\\xA0{1}\\xA0: ligne d'origine {2}, {3}, ligne modifi\\xE9e {4}, {5}\",\"vide\",\"{0} ligne inchang\\xE9e {1}\",\"{0}\\xA0ligne d'origine {1}\\xA0ligne modifi\\xE9e {2}\",\"+ {0}\\xA0ligne modifi\\xE9e {1}\",\"- {0} ligne d'origine {1}\"],\"vs/editor/browser/widget/diffEditorWidget2/colors\":[\"Couleur de bordure du texte d\\xE9plac\\xE9 dans l\\u2019\\xE9diteur de diff.\",\"The active border color for text that got moved in the diff editor.\"],\"vs/editor/browser/widget/diffEditorWidget2/decorations\":[\"\\xC9l\\xE9ment d\\xE9coratif de ligne pour les insertions dans l'\\xE9diteur de diff\\xE9rences.\",\"\\xC9l\\xE9ment d\\xE9coratif de ligne pour les suppressions dans l'\\xE9diteur de diff\\xE9rences.\",\"Cliquez pour r\\xE9tablir la modification\"],\"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\":[\" utilisez {0} pour ouvrir l\\u2019aide sur l\\u2019accessibilit\\xE9.\"],\"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\":[\"Copier les lignes supprim\\xE9es\",\"Copier la ligne supprim\\xE9e\",\"Copier les lignes modifi\\xE9es\",\"Copier la ligne modifi\\xE9e\",\"Copier la ligne supprim\\xE9e ({0})\",\"Copier la ligne modifi\\xE9e ({0})\",\"Annuler la modification\"],\"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\":[\"Code moved with changes to line {0}-{1}\",\"Code moved with changes from line {0}-{1}\",\"Code moved to line {0}-{1}\",\"Code moved from line {0}-{1}\"],\"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\":[\"Replier la r\\xE9gion inchang\\xE9e\",\"Click or drag to show more above\",\"Show all\",\"Click or drag to show more below\",\"{0} hidden lines\",\"Double click to unfold\"],\"vs/editor/browser/widget/diffReview\":[\"Ic\\xF4ne de l'option Ins\\xE9rer dans la revue des diff\\xE9rences.\",\"Ic\\xF4ne de l'option Supprimer dans la revue des diff\\xE9rences.\",\"Ic\\xF4ne de l'option Fermer dans la revue des diff\\xE9rences.\",\"Fermer\",\"aucune ligne chang\\xE9e\",\"1\\xA0ligne chang\\xE9e\",\"{0}\\xA0lignes chang\\xE9es\",\"Diff\\xE9rence\\xA0{0} sur\\xA0{1}\\xA0: ligne d'origine {2}, {3}, ligne modifi\\xE9e {4}, {5}\",\"vide\",\"{0} ligne inchang\\xE9e {1}\",\"{0}\\xA0ligne d'origine {1}\\xA0ligne modifi\\xE9e {2}\",\"+ {0}\\xA0ligne modifi\\xE9e {1}\",\"- {0} ligne d'origine {1}\"],\"vs/editor/browser/widget/inlineDiffMargin\":[\"Copier les lignes supprim\\xE9es\",\"Copier la ligne supprim\\xE9e\",\"Copier les lignes modifi\\xE9es\",\"Copier la ligne modifi\\xE9e\",\"Copier la ligne supprim\\xE9e ({0})\",\"Copier la ligne modifi\\xE9e ({0})\",\"Annuler la modification\",\"Copier la ligne supprim\\xE9e ({0})\",\"Copier la ligne modifi\\xE9e ({0})\"],\"vs/editor/common/config/editorConfigurationSchema\":[\"\\xC9diteur\",\"Le nombre d\\u2019espaces auxquels une tabulation est \\xE9gale. Ce param\\xE8tre est substitu\\xE9 bas\\xE9 sur le contenu du fichier lorsque {0} est activ\\xE9.\",'Nombre d\\u2019espaces utilis\\xE9s pour la mise en retrait ou `\"tabSize\"` pour utiliser la valeur de `#editor.tabSize#`. Ce param\\xE8tre est remplac\\xE9 en fonction du contenu du fichier quand `#editor.detectIndentation#` est activ\\xE9.',\"Espaces ins\\xE9r\\xE9s quand vous appuyez sur la touche Tab. Ce param\\xE8tre est remplac\\xE9 en fonction du contenu du fichier quand {0} est activ\\xE9.\",\"Contr\\xF4le si {0} et {1} sont automatiquement d\\xE9tect\\xE9s lors de l\\u2019ouverture d\\u2019un fichier en fonction de son contenu.\",\"Supprimer l'espace blanc de fin ins\\xE9r\\xE9 automatiquement.\",\"Traitement sp\\xE9cial des fichiers volumineux pour d\\xE9sactiver certaines fonctionnalit\\xE9s utilisant beaucoup de m\\xE9moire.\",\"Contr\\xF4le si la saisie semi-automatique doit \\xEAtre calcul\\xE9e en fonction des mots pr\\xE9sents dans le document.\",\"Sugg\\xE8re uniquement des mots dans le document actif.\",\"Sugg\\xE8re des mots dans tous les documents ouverts du m\\xEAme langage.\",\"Sugg\\xE8re des mots dans tous les documents ouverts.\",\"Contr\\xF4le la fa\\xE7on dont sont calcul\\xE9es les compl\\xE9tions bas\\xE9es sur des mots dans les documents.\",\"Coloration s\\xE9mantique activ\\xE9e pour tous les th\\xE8mes de couleur.\",\"Coloration s\\xE9mantique d\\xE9sactiv\\xE9e pour tous les th\\xE8mes de couleur.\",\"La coloration s\\xE9mantique est configur\\xE9e par le param\\xE8tre 'semanticHighlighting' du th\\xE8me de couleur actuel.\",\"Contr\\xF4le si semanticHighlighting est affich\\xE9 pour les langages qui le prennent en charge.\",\"Maintenir les \\xE9diteurs d'aper\\xE7u ouverts m\\xEAme si l'utilisateur double-clique sur son contenu ou appuie sur la touche \\xC9chap.\",\"Les lignes plus longues que cette valeur ne sont pas tokenis\\xE9es pour des raisons de performances\",\"Contr\\xF4le si la cr\\xE9ation de jetons doit se produire de mani\\xE8re asynchrone sur un worker web.\",\"Contr\\xF4le si la cr\\xE9ation de jetons asynchrones doit \\xEAtre journalis\\xE9e. Pour le d\\xE9bogage uniquement.\",\"Contr\\xF4le si la segmentation du texte en unit\\xE9s lexicales asynchrones doit \\xEAtre v\\xE9rifi\\xE9e par rapport \\xE0 la segmentation du texte en unit\\xE9s lexicales en arri\\xE8re-plan h\\xE9rit\\xE9e. Peut ralentir la segmentation du texte en unit\\xE9s lexicales. Pour le d\\xE9bogage uniquement.\",\"D\\xE9finit les symboles de type crochet qui augmentent ou diminuent le retrait.\",\"S\\xE9quence de cha\\xEEnes ou de caract\\xE8res de crochets ouvrants.\",\"S\\xE9quence de cha\\xEEnes ou de caract\\xE8res de crochets fermants.\",\"D\\xE9finit les paires de crochets qui sont coloris\\xE9es par leur niveau d\\u2019imbrication si la colorisation des paires de crochets est activ\\xE9e.\",\"S\\xE9quence de cha\\xEEnes ou de caract\\xE8res de crochets ouvrants.\",\"S\\xE9quence de cha\\xEEnes ou de caract\\xE8res de crochets fermants.\",\"D\\xE9lai d'expiration en millisecondes avant annulation du calcul de diff. Utilisez\\xA00 pour supprimer le d\\xE9lai d'expiration.\",\"Taille de fichier maximale en Mo pour laquelle calculer les diff\\xE9rences. Utilisez 0 pour ne pas avoir de limite.\",\"Contr\\xF4le si l'\\xE9diteur de diff\\xE9rences affiche les diff\\xE9rences en mode c\\xF4te \\xE0 c\\xF4te ou inline.\",\"If the diff editor width is smaller than this value, the inline view is used.\",\"If enabled and the editor width is too small, the inline view is used.\",\"Lorsqu\\u2019il est activ\\xE9, l\\u2019\\xE9diteur de diff\\xE9rences affiche des fl\\xE8ches dans sa marge de glyphe pour r\\xE9tablir les modifications.\",\"Quand il est activ\\xE9, l'\\xE9diteur de diff\\xE9rences ignore les changements d'espace blanc de d\\xE9but ou de fin.\",\"Contr\\xF4le si l'\\xE9diteur de diff\\xE9rences affiche les indicateurs +/- pour les changements ajout\\xE9s/supprim\\xE9s .\",\"Contr\\xF4le si l'\\xE9diteur affiche CodeLens.\",\"Le retour automatique \\xE0 la ligne n'est jamais effectu\\xE9.\",\"Le retour automatique \\xE0 la ligne s'effectue en fonction de la largeur de la fen\\xEAtre d'affichage.\",\"Le retour automatique \\xE0 la ligne d\\xE9pend du param\\xE8tre {0}.\",\"Utilise l\\u2019algorithme de comparaison h\\xE9rit\\xE9.\",\"Utilise l\\u2019algorithme de comparaison avanc\\xE9.\",\"Controls whether the diff editor shows unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as a minimum for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as context when comparing unchanged regions. Only works when {0} is set.\",\"Contr\\xF4le si l\\u2019\\xE9diteur de diff\\xE9rences doit afficher les d\\xE9placements de code d\\xE9tect\\xE9s. Ne fonctionne que si {0} est activ\\xE9.\",\"Contr\\xF4le si l\\u2019\\xE9diteur de diff\\xE9rences utilise la nouvelle ou l\\u2019ancienne impl\\xE9mentation.\",\"Contr\\xF4le si l\\u2019\\xE9diteur de diff\\xE9rences affiche des d\\xE9corations vides pour voir o\\xF9 les caract\\xE8res ont \\xE9t\\xE9 ins\\xE9r\\xE9s ou supprim\\xE9s.\"],\"vs/editor/common/config/editorOptions\":[\"Utiliser les API de la plateforme pour d\\xE9tecter si un lecteur d'\\xE9cran est attach\\xE9\",\"Optimiser pour l\\u2019utilisation avec un lecteur d\\u2019\\xE9cran\",\"Supposer qu\\u2019un lecteur d\\u2019\\xE9cran n\\u2019est pas attach\\xE9\",\"Contr\\xF4le si l\\u2019interface utilisateur doit s\\u2019ex\\xE9cuter dans un mode o\\xF9 elle est optimis\\xE9e pour les lecteurs d\\u2019\\xE9cran.\",\"Contr\\xF4le si un espace est ins\\xE9r\\xE9 pour les commentaires.\",\"Contr\\xF4le si les lignes vides doivent \\xEAtre ignor\\xE9es avec des actions d'activation/de d\\xE9sactivation, d'ajout ou de suppression des commentaires de ligne.\",\"Contr\\xF4le si la copie sans s\\xE9lection permet de copier la ligne actuelle.\",\"Contr\\xF4le si le curseur doit sauter pour rechercher les correspondances lors de la saisie.\",\"Ne lancez jamais la cha\\xEEne de recherche dans la s\\xE9lection de l\\u2019\\xE9diteur.\",\"Toujours amorcer la cha\\xEEne de recherche \\xE0 partir de la s\\xE9lection de l\\u2019\\xE9diteur, y compris le mot \\xE0 la position du curseur.\",\"Cha\\xEEne de recherche initiale uniquement dans la s\\xE9lection de l\\u2019\\xE9diteur.\",\"D\\xE9termine si la cha\\xEEne de recherche dans le Widget Recherche est initialis\\xE9e avec la s\\xE9lection de l\\u2019\\xE9diteur.\",\"Ne jamais activer automatiquement la recherche dans la s\\xE9lection (par d\\xE9faut).\",\"Toujours activer automatiquement la recherche dans la s\\xE9lection.\",\"Activez Rechercher automatiquement dans la s\\xE9lection quand plusieurs lignes de contenu sont s\\xE9lectionn\\xE9es.\",\"Contr\\xF4le la condition d'activation automatique de la recherche dans la s\\xE9lection.\",\"D\\xE9termine si le Widget Recherche devrait lire ou modifier le presse-papiers de recherche partag\\xE9 sur macOS.\",\"Contr\\xF4le si le widget Recherche doit ajouter des lignes suppl\\xE9mentaires en haut de l'\\xE9diteur. Quand la valeur est true, vous pouvez faire d\\xE9filer au-del\\xE0 de la premi\\xE8re ligne si le widget Recherche est visible.\",\"Contr\\xF4le si la recherche red\\xE9marre automatiquement depuis le d\\xE9but (ou la fin) quand il n'existe aucune autre correspondance.\",\"Active/d\\xE9sactive les ligatures de police (fonctionnalit\\xE9s de police 'calt' et 'liga'). Remplacez ceci par une cha\\xEEne pour contr\\xF4ler de mani\\xE8re pr\\xE9cise la propri\\xE9t\\xE9 CSS 'font-feature-settings'.\",\"Propri\\xE9t\\xE9 CSS 'font-feature-settings' explicite. Vous pouvez passer une valeur bool\\xE9enne \\xE0 la place si vous devez uniquement activer/d\\xE9sactiver les ligatures.\",\"Configure les ligatures de police ou les fonctionnalit\\xE9s de police. Il peut s'agir d'une valeur bool\\xE9enne permettant d'activer/de d\\xE9sactiver les ligatures, ou d'une cha\\xEEne correspondant \\xE0 la valeur de la propri\\xE9t\\xE9 CSS 'font-feature-settings'.\",\"Active/d\\xE9sactive la traduction de font-weight en font-variation-settings. Remplacez ce param\\xE8tre par une cha\\xEEne pour un contr\\xF4le affin\\xE9 de la propri\\xE9t\\xE9 CSS 'font-variation-settings'.\",\"Propri\\xE9t\\xE9 CSS 'font-variation-settings' explicite. Une valeur bool\\xE9enne peut \\xEAtre pass\\xE9e \\xE0 la place si une seule valeur doit traduire font-weight en font-variation-settings.\",\"Configure les variations de la police. Il peut s\\u2019agir d\\u2019une valeur bool\\xE9enne pour activer/d\\xE9sactiver la traduction de font-weight en font-variation-settings ou d\\u2019une cha\\xEEne pour la valeur de la propri\\xE9t\\xE9 CSS 'font-variation-settings'.\",\"Contr\\xF4le la taille de police en pixels.\",'Seuls les mots cl\\xE9s \"normal\" et \"bold\", ou les nombres compris entre\\xA01 et\\xA01\\xA0000 sont autoris\\xE9s.',`Contr\\xF4le l'\\xE9paisseur de police. Accepte les mots cl\\xE9s \"normal\" et \"bold\", ou les nombres compris entre\\xA01 et\\xA01\\xA0000.`,\"Montrer l\\u2019aper\\xE7u des r\\xE9sultats (par d\\xE9faut)\",\"Acc\\xE9der au r\\xE9sultat principal et montrer un aper\\xE7u\",\"Acc\\xE9der au r\\xE9sultat principal et activer l\\u2019acc\\xE8s sans aper\\xE7u pour les autres\",\"Ce param\\xE8tre est d\\xE9pr\\xE9ci\\xE9, utilisez des param\\xE8tres distincts comme 'editor.editor.gotoLocation.multipleDefinitions' ou 'editor.editor.gotoLocation.multipleImplementations' \\xE0 la place.\",\"Contr\\xF4le le comportement de la commande 'Atteindre la d\\xE9finition' quand plusieurs emplacements cibles existent.\",\"Contr\\xF4le le comportement de la commande 'Atteindre la d\\xE9finition de type' quand plusieurs emplacements cibles existent.\",\"Contr\\xF4le le comportement de la commande 'Atteindre la d\\xE9claration' quand plusieurs emplacements cibles existent.\",\"Contr\\xF4le le comportement de la commande 'Atteindre les impl\\xE9mentations' quand plusieurs emplacements cibles existent.\",\"Contr\\xF4le le comportement de la commande 'Atteindre les r\\xE9f\\xE9rences' quand plusieurs emplacements cibles existent.\",\"ID de commande alternatif ex\\xE9cut\\xE9 quand le r\\xE9sultat de 'Atteindre la d\\xE9finition' est l'emplacement actuel.\",\"ID de commande alternatif ex\\xE9cut\\xE9 quand le r\\xE9sultat de 'Atteindre la d\\xE9finition de type' est l'emplacement actuel.\",\"ID de commande alternatif ex\\xE9cut\\xE9 quand le r\\xE9sultat de 'Atteindre la d\\xE9claration' est l'emplacement actuel.\",\"ID de commande alternatif ex\\xE9cut\\xE9 quand le r\\xE9sultat de 'Atteindre l'impl\\xE9mentation' est l'emplacement actuel.\",\"ID de commande alternatif ex\\xE9cut\\xE9 quand le r\\xE9sultat de 'Atteindre la r\\xE9f\\xE9rence' est l'emplacement actuel.\",\"Contr\\xF4le si le pointage est affich\\xE9.\",\"Contr\\xF4le le d\\xE9lai en millisecondes, apr\\xE8s lequel le survol est affich\\xE9.\",\"Contr\\xF4le si le pointage doit rester visible quand la souris est d\\xE9plac\\xE9e au-dessus.\",\"Pr\\xE9f\\xE9rez afficher les points au-dessus de la ligne, s\\u2019il y a de l\\u2019espace.\",\"Suppose que tous les caract\\xE8res ont la m\\xEAme largeur. Il s'agit d'un algorithme rapide qui fonctionne correctement pour les polices \\xE0 espacement fixe et certains scripts (comme les caract\\xE8res latins) o\\xF9 les glyphes ont la m\\xEAme largeur.\",\"D\\xE9l\\xE8gue le calcul des points de wrapping au navigateur. Il s'agit d'un algorithme lent qui peut provoquer le gel des grands fichiers, mais qui fonctionne correctement dans tous les cas.\",\"Contr\\xF4le l\\u2019algorithme qui calcule les points d\\u2019habillage. Notez qu\\u2019en mode d\\u2019accessibilit\\xE9, les options avanc\\xE9es sont utilis\\xE9es pour une exp\\xE9rience optimale.\",\"Active l\\u2019ampoule d\\u2019action de code dans l\\u2019\\xE9diteur.\",\"Affiche les \\xE9tendues actives imbriqu\\xE9s pendant le d\\xE9filement en haut de l\\u2019\\xE9diteur.\",\"D\\xE9finit le nombre maximal de lignes r\\xE9manentes \\xE0 afficher.\",\"D\\xE9finit le mod\\xE8le \\xE0 utiliser pour d\\xE9terminer les lignes \\xE0 coller. Si le mod\\xE8le hi\\xE9rarchique n\\u2019existe pas, il revient au mod\\xE8le de fournisseur de pliage qui revient au mod\\xE8le de mise en retrait. Cette demande est respect\\xE9e dans les trois cas.\",\"Enable scrolling of the sticky scroll widget with the editor's horizontal scrollbar.\",\"Active les indicateurs inlay dans l\\u2019\\xE9diteur.\",\"Les indicateurs d\\u2019inlay sont activ\\xE9s.\",\"Les indicateurs d\\u2019inlay sont affich\\xE9s par d\\xE9faut et masqu\\xE9s lors de la conservation {0}\",\"Les indicateurs d\\u2019inlay sont masqu\\xE9s par d\\xE9faut et s\\u2019affichent lorsque vous maintenez {0}\",\"Les indicateurs d\\u2019inlay sont d\\xE9sactiv\\xE9s.\",\"Contr\\xF4le la taille de police des indicateurs d\\u2019inlay dans l\\u2019\\xE9diteur. Par d\\xE9faut, le {0} est utilis\\xE9 lorsque la valeur configur\\xE9e est inf\\xE9rieure \\xE0 {1} ou sup\\xE9rieure \\xE0 la taille de police de l\\u2019\\xE9diteur.\",\"Contr\\xF4le la famille de polices des indicateurs d\\u2019inlay dans l\\u2019\\xE9diteur. Lorsqu\\u2019il est d\\xE9fini sur vide, le {0} est utilis\\xE9.\",\"Active le remplissage autour des indicateurs d\\u2019inlay dans l\\u2019\\xE9diteur.\",`Contr\\xF4le la hauteur de ligne. \\r\n - Utilisez 0 pour calculer automatiquement la hauteur de ligne \\xE0 partir de la taille de police.\\r\n : les valeurs comprises entre 0 et 8 sont utilis\\xE9es comme multiplicateur avec la taille de police.\\r\n : les valeurs sup\\xE9rieures ou \\xE9gales \\xE0 8 seront utilis\\xE9es comme valeurs effectives.`,\"Contr\\xF4le si la minimap est affich\\xE9e.\",\"Contr\\xF4le si la minimap est masqu\\xE9e automatiquement.\",\"Le minimap a la m\\xEAme taille que le contenu de l'\\xE9diteur (d\\xE9filement possible).\",\"Le minimap s'agrandit ou se r\\xE9duit selon les besoins pour remplir la hauteur de l'\\xE9diteur (pas de d\\xE9filement).\",\"Le minimap est r\\xE9duit si n\\xE9cessaire pour ne jamais d\\xE9passer la taille de l'\\xE9diteur (pas de d\\xE9filement).\",\"Contr\\xF4le la taille du minimap.\",\"Contr\\xF4le le c\\xF4t\\xE9 o\\xF9 afficher la minimap.\",\"Contr\\xF4le quand afficher le curseur du minimap.\",\"\\xC9chelle du contenu dessin\\xE9 dans le minimap\\xA0: 1, 2\\xA0ou\\xA03.\",\"Afficher les caract\\xE8res r\\xE9els sur une ligne par opposition aux blocs de couleur.\",\"Limiter la largeur de la minimap pour afficher au plus un certain nombre de colonnes.\",\"Contr\\xF4le la quantit\\xE9 d\\u2019espace entre le bord sup\\xE9rieur de l\\u2019\\xE9diteur et la premi\\xE8re ligne.\",\"Contr\\xF4le la quantit\\xE9 d'espace entre le bord inf\\xE9rieur de l'\\xE9diteur et la derni\\xE8re ligne.\",\"Active une fen\\xEAtre contextuelle qui affiche de la documentation sur les param\\xE8tres et des informations sur les types \\xE0 mesure que vous tapez.\",\"D\\xE9termine si le menu de suggestions de param\\xE8tres se ferme ou reviens au d\\xE9but lorsque la fin de la liste est atteinte.\",\"Des suggestions rapides s\\u2019affichent dans le widget de suggestion\",\"Les suggestions rapides s\\u2019affichent sous forme de texte fant\\xF4me\",\"Les suggestions rapides sont d\\xE9sactiv\\xE9es\",\"Activez les suggestions rapides dans les cha\\xEEnes.\",\"Activez les suggestions rapides dans les commentaires.\",\"Activez les suggestions rapides en dehors des cha\\xEEnes et des commentaires.\",\"Contr\\xF4le si les suggestions doivent s\\u2019afficher automatiquement lors de la saisie. Cela peut \\xEAtre contr\\xF4l\\xE9 pour la saisie dans des commentaires, des cha\\xEEnes et d\\u2019autres codes. Vous pouvez configurer la suggestion rapide pour qu\\u2019elle s\\u2019affiche sous forme de texte fant\\xF4me ou avec le widget de suggestion. Tenez \\xE9galement compte du param\\xE8tre '{0}' qui contr\\xF4le si des suggestions sont d\\xE9clench\\xE9es par des caract\\xE8res sp\\xE9ciaux.\",\"Les num\\xE9ros de ligne ne sont pas affich\\xE9s.\",\"Les num\\xE9ros de ligne sont affich\\xE9s en nombre absolu.\",\"Les num\\xE9ros de ligne sont affich\\xE9s sous la forme de distance en lignes \\xE0 la position du curseur.\",\"Les num\\xE9ros de ligne sont affich\\xE9s toutes les 10 lignes.\",\"Contr\\xF4le l'affichage des num\\xE9ros de ligne.\",\"Nombre de caract\\xE8res monospace auxquels cette r\\xE8gle d'\\xE9diteur effectue le rendu.\",\"Couleur de cette r\\xE8gle d'\\xE9diteur.\",\"Rendre les r\\xE8gles verticales apr\\xE8s un certain nombre de caract\\xE8res \\xE0 espacement fixe. Utiliser plusieurs valeurs pour plusieurs r\\xE8gles. Aucune r\\xE8gle n'est dessin\\xE9e si le tableau est vide.\",\"La barre de d\\xE9filement verticale sera visible uniquement lorsque cela est n\\xE9cessaire.\",\"La barre de d\\xE9filement verticale est toujours visible.\",\"La barre de d\\xE9filement verticale est toujours masqu\\xE9e.\",\"Contr\\xF4le la visibilit\\xE9 de la barre de d\\xE9filement verticale.\",\"La barre de d\\xE9filement horizontale sera visible uniquement lorsque cela est n\\xE9cessaire.\",\"La barre de d\\xE9filement horizontale est toujours visible.\",\"La barre de d\\xE9filement horizontale est toujours masqu\\xE9e.\",\"Contr\\xF4le la visibilit\\xE9 de la barre de d\\xE9filement horizontale.\",\"Largeur de la barre de d\\xE9filement verticale.\",\"Hauteur de la barre de d\\xE9filement horizontale.\",\"Contr\\xF4le si les clics permettent de faire d\\xE9filer par page ou d\\u2019acc\\xE9der \\xE0 la position de clic.\",\"Contr\\xF4le si tous les caract\\xE8res ASCII non basiques sont mis en surbrillance. Seuls les caract\\xE8res compris entre U+0020 et U+007E, tabulation, saut de ligne et retour chariot sont consid\\xE9r\\xE9s comme des ASCII de base.\",\"Contr\\xF4le si les caract\\xE8res qui r\\xE9servent de l\\u2019espace ou qui n\\u2019ont pas de largeur sont mis en surbrillance.\",\"Contr\\xF4le si les caract\\xE8res mis en surbrillance peuvent \\xEAtre d\\xE9concert\\xE9s avec des caract\\xE8res ASCII de base, \\xE0 l\\u2019exception de ceux qui sont courants dans les param\\xE8tres r\\xE9gionaux utilisateur actuels.\",\"Contr\\xF4le si les caract\\xE8res des commentaires doivent \\xE9galement faire l\\u2019objet d\\u2019une mise en surbrillance Unicode.\",\"Contr\\xF4le si les caract\\xE8res des cha\\xEEnes de texte doivent \\xE9galement faire l\\u2019objet d\\u2019une mise en surbrillance Unicode.\",\"D\\xE9finit les caract\\xE8res autoris\\xE9s qui ne sont pas mis en surbrillance.\",\"Les caract\\xE8res Unicode communs aux param\\xE8tres r\\xE9gionaux autoris\\xE9s ne sont pas mis en surbrillance.\",\"Contr\\xF4le si les suggestions en ligne doivent \\xEAtre affich\\xE9es automatiquement dans l\\u2019\\xE9diteur.\",\"Afficher la barre d\\u2019outils de suggestion en ligne chaque fois qu\\u2019une suggestion inline est affich\\xE9e.\",\"Afficher la barre d\\u2019outils de suggestion en ligne lorsque vous pointez sur une suggestion incluse.\",\"Contr\\xF4le quand afficher la barre d\\u2019outils de suggestion incluse.\",\"Contr\\xF4le la fa\\xE7on dont les suggestions inline interagissent avec le widget de suggestion. Si cette option est activ\\xE9e, le widget de suggestion n\\u2019est pas affich\\xE9 automatiquement lorsque des suggestions inline sont disponibles.\",\"Contr\\xF4le si la colorisation des paires de crochets est activ\\xE9e ou non. Utilisez {0} pour remplacer les couleurs de surbrillance des crochets.\",\"Contr\\xF4le si chaque type de crochet poss\\xE8de son propre pool de couleurs ind\\xE9pendant.\",\"D\\xE9sactive les rep\\xE8res de paire de crochets.\",\"Active les rep\\xE8res de paire de crochets uniquement pour la paire de crochets actifs.\",\"D\\xE9sactive les rep\\xE8res de paire de crochets.\",\"Contr\\xF4le si les guides de la paire de crochets sont activ\\xE9s ou non.\",\"Active les rep\\xE8res horizontaux en plus des rep\\xE8res de paire de crochets verticaux.\",\"Active les rep\\xE8res horizontaux uniquement pour la paire de crochets actifs.\",\"D\\xE9sactive les rep\\xE8res de paire de crochets horizontaux.\",\"Contr\\xF4le si les guides de la paire de crochets horizontaux sont activ\\xE9s ou non.\",\"Contr\\xF4le si l\\u2019\\xE9diteur doit mettre en surbrillance la paire de crochets actifs.\",\"Contr\\xF4le si l\\u2019\\xE9diteur doit afficher les guides de mise en retrait.\",\"Met en surbrillance le guide de retrait actif.\",\"Met en surbrillance le rep\\xE8re de retrait actif m\\xEAme si les rep\\xE8res de crochet sont mis en surbrillance.\",\"Ne mettez pas en surbrillance le rep\\xE8re de retrait actif.\",\"Contr\\xF4le si l\\u2019\\xE9diteur doit mettre en surbrillance le guide de mise en retrait actif.\",\"Ins\\xE9rez une suggestion sans remplacer le texte \\xE0 droite du curseur.\",\"Ins\\xE9rez une suggestion et remplacez le texte \\xE0 droite du curseur.\",\"Contr\\xF4le si les mots sont remplac\\xE9s en cas d'acceptation de la saisie semi-automatique. Notez que cela d\\xE9pend des extensions adh\\xE9rant \\xE0 cette fonctionnalit\\xE9.\",\"D\\xE9termine si le filtre et le tri des suggestions doivent prendre en compte les fautes de frappes mineures.\",\"Contr\\xF4le si le tri favorise les mots qui apparaissent \\xE0 proximit\\xE9 du curseur.\",\"Contr\\xF4le si les s\\xE9lections de suggestion m\\xE9moris\\xE9es sont partag\\xE9es entre plusieurs espaces de travail et fen\\xEAtres (n\\xE9cessite '#editor.suggestSelection#').\",\"Toujours s\\xE9lectionner une suggestion lors du d\\xE9clenchement automatique d\\u2019IntelliSense.\",\"Ne jamais s\\xE9lectionner une suggestion lors du d\\xE9clenchement automatique d\\u2019IntelliSense.\",\"S\\xE9lectionnez une suggestion uniquement lors du d\\xE9clenchement d\\u2019IntelliSense \\xE0 partir d\\u2019un caract\\xE8re d\\xE9clencheur.\",\"S\\xE9lectionnez une suggestion uniquement lors du d\\xE9clenchement d\\u2019IntelliSense au cours de la frappe.\",\"Contr\\xF4le si une suggestion est s\\xE9lectionn\\xE9e lorsque le widget s\\u2019affiche. Notez que cela s\\u2019applique uniquement aux suggestions d\\xE9clench\\xE9es automatiquement ('#editor.quickSuggestions#' et '#editor.suggestOnTriggerCharacters#') et qu\\u2019une suggestion est toujours s\\xE9lectionn\\xE9e lorsqu\\u2019elle est appel\\xE9e explicitement, par exemple via 'Ctrl+Espace'.\",\"Contr\\xF4le si un extrait de code actif emp\\xEAche les suggestions rapides.\",\"Contr\\xF4le s'il faut montrer ou masquer les ic\\xF4nes dans les suggestions.\",\"Contr\\xF4le la visibilit\\xE9 de la barre d'\\xE9tat en bas du widget de suggestion.\",\"Contr\\xF4le si la sortie de la suggestion doit \\xEAtre affich\\xE9e en aper\\xE7u dans l\\u2019\\xE9diteur.\",\"D\\xE9termine si les d\\xE9tails du widget de suggestion sont inclus dans l\\u2019\\xE9tiquette ou uniquement dans le widget de d\\xE9tails.\",\"Ce param\\xE8tre est d\\xE9pr\\xE9ci\\xE9. Le widget de suggestion peut d\\xE9sormais \\xEAtre redimensionn\\xE9.\",\"Ce param\\xE8tre est d\\xE9pr\\xE9ci\\xE9, veuillez utiliser des param\\xE8tres distincts comme 'editor.suggest.showKeywords' ou 'editor.suggest.showSnippets' \\xE0 la place.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'method'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'function'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'constructor'.\",\"Si cette option est activ\\xE9e, IntelliSense montre des suggestions `d\\xE9pr\\xE9ci\\xE9es`.\",\"Quand le filtrage IntelliSense est activ\\xE9, le premier caract\\xE8re correspond \\xE0 un d\\xE9but de mot, par exemple 'c' sur 'Console' ou 'WebContext', mais _not_ sur 'description'. Si d\\xE9sactiv\\xE9, IntelliSense affiche plus de r\\xE9sultats, mais les trie toujours par qualit\\xE9 de correspondance.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'field'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'variable'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'class'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'struct'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'interface'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'module'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'property'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'event'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'operator'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'unit'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'value'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'constant'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'enum'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'enumMember'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'keyword'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'text'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'color'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'file'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'reference'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'customcolor'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'folder'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'typeParameter'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'snippet'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'utilisateur'.\",\"Si activ\\xE9, IntelliSense montre des suggestions de type 'probl\\xE8mes'.\",\"Indique si les espaces blancs de d\\xE9but et de fin doivent toujours \\xEAtre s\\xE9lectionn\\xE9s.\",\"Indique si les sous-mots (tels que \\xAB foo \\xBB dans \\xAB fooBar \\xBB ou \\xAB foo_bar \\xBB) doivent \\xEAtre s\\xE9lectionn\\xE9s.\",\"Aucune mise en retrait. Les lignes envelopp\\xE9es commencent \\xE0 la colonne 1.\",\"Les lignes envelopp\\xE9es obtiennent la m\\xEAme mise en retrait que le parent.\",\"Les lignes justifi\\xE9es obtiennent une mise en retrait +1 vers le parent.\",\"Les lignes justifi\\xE9es obtiennent une mise en retrait +2 vers le parent. \",\"Contr\\xF4le la mise en retrait des lignes justifi\\xE9es.\",\"Contr\\xF4le si vous pouvez faire glisser et d\\xE9poser un fichier dans un \\xE9diteur de texte en maintenant la touche Maj enfonc\\xE9e (au lieu d\\u2019ouvrir le fichier dans un \\xE9diteur).\",\"Contr\\xF4le si un widget est affich\\xE9 lors de l\\u2019annulation de fichiers dans l\\u2019\\xE9diteur. Ce widget vous permet de contr\\xF4ler la fa\\xE7on dont le fichier est annul\\xE9.\",\"Afficher le widget du s\\xE9lecteur de d\\xE9p\\xF4t apr\\xE8s la suppression d\\u2019un fichier dans l\\u2019\\xE9diteur.\",\"Ne jamais afficher le widget du s\\xE9lecteur de d\\xE9p\\xF4t. \\xC0 la place, le fournisseur de d\\xE9p\\xF4t par d\\xE9faut est toujours utilis\\xE9.\",\"Contr\\xF4le si vous pouvez coller le contenu de diff\\xE9rentes mani\\xE8res.\",\"Contr\\xF4le l\\u2019affichage d\\u2019un widget lors du collage de contenu dans l\\u2019\\xE9diteur. Ce widget vous permet de contr\\xF4ler la mani\\xE8re dont le fichier est coll\\xE9.\",\"Afficher le widget du s\\xE9lecteur de collage une fois le contenu coll\\xE9 dans l\\u2019\\xE9diteur.\",\"Ne jamais afficher le widget de s\\xE9lection de collage. Au lieu de cela, le comportement de collage par d\\xE9faut est toujours utilis\\xE9.\",\"Contr\\xF4le si les suggestions doivent \\xEAtre accept\\xE9es sur les caract\\xE8res de validation. Par exemple, en JavaScript, le point-virgule (`;`) peut \\xEAtre un caract\\xE8re de validation qui accepte une suggestion et tape ce caract\\xE8re.\",\"Accepter uniquement une suggestion avec 'Entr\\xE9e' quand elle effectue une modification textuelle.\",\"Contr\\xF4le si les suggestions sont accept\\xE9es apr\\xE8s appui sur 'Entr\\xE9e', en plus de 'Tab'. Permet d\\u2019\\xE9viter toute ambigu\\xEFt\\xE9 entre l\\u2019insertion de nouvelles lignes et l'acceptation de suggestions.\",\"Contr\\xF4le le nombre de lignes de l\\u2019\\xE9diteur qu\\u2019un lecteur d\\u2019\\xE9cran peut lire en une seule fois. Quand nous d\\xE9tectons un lecteur d\\u2019\\xE9cran, nous d\\xE9finissons automatiquement la valeur par d\\xE9faut \\xE0 500. Attention\\xA0: Les valeurs sup\\xE9rieures \\xE0 la valeur par d\\xE9faut peuvent avoir un impact important sur les performances.\",\"Contenu de l'\\xE9diteur\",\"Contr\\xF4lez si les suggestions incluses sont annonc\\xE9es par un lecteur d\\u2019\\xE9cran.\",\"Utilisez les configurations de langage pour d\\xE9terminer quand fermer automatiquement les parenth\\xE8ses.\",\"Fermer automatiquement les parenth\\xE8ses uniquement lorsque le curseur est \\xE0 gauche de l\\u2019espace.\",\"Contr\\xF4le si l\\u2019\\xE9diteur doit fermer automatiquement les parenth\\xE8ses quand l\\u2019utilisateur ajoute une parenth\\xE8se ouvrante.\",\"Supprimez les guillemets ou crochets fermants adjacents uniquement s'ils ont \\xE9t\\xE9 ins\\xE9r\\xE9s automatiquement.\",\"Contr\\xF4le si l'\\xE9diteur doit supprimer les guillemets ou crochets fermants adjacents au moment de la suppression.\",\"Tapez avant les guillemets ou les crochets fermants uniquement s'ils sont automatiquement ins\\xE9r\\xE9s.\",\"Contr\\xF4le si l'\\xE9diteur doit taper avant les guillemets ou crochets fermants.\",\"Utilisez les configurations de langage pour d\\xE9terminer quand fermer automatiquement les guillemets.\",\"Fermer automatiquement les guillemets uniquement lorsque le curseur est \\xE0 gauche de l\\u2019espace.\",\"Contr\\xF4le si l\\u2019\\xE9diteur doit fermer automatiquement les guillemets apr\\xE8s que l\\u2019utilisateur ajoute un guillemet ouvrant.\",\"L'\\xE9diteur n'ins\\xE8re pas de retrait automatiquement.\",\"L'\\xE9diteur conserve le retrait de la ligne actuelle.\",\"L'\\xE9diteur conserve le retrait de la ligne actuelle et honore les crochets d\\xE9finis par le langage.\",\"L'\\xE9diteur conserve le retrait de la ligne actuelle, honore les crochets d\\xE9finis par le langage et appelle des objets onEnterRules sp\\xE9ciaux d\\xE9finis par les langages.\",\"L'\\xE9diteur conserve le retrait de la ligne actuelle, honore les crochets d\\xE9finis par le langage, appelle des objets onEnterRules sp\\xE9ciaux d\\xE9finis par les langages et honore les objets indentationRules d\\xE9finis par les langages.\",\"Contr\\xF4le si l'\\xE9diteur doit ajuster automatiquement le retrait quand les utilisateurs tapent, collent, d\\xE9placent ou mettent en retrait des lignes.\",\"Utilisez les configurations de langue pour d\\xE9terminer quand entourer automatiquement les s\\xE9lections.\",\"Entourez avec des guillemets et non des crochets.\",\"Entourez avec des crochets et non des guillemets.\",\"Contr\\xF4le si l'\\xE9diteur doit automatiquement entourer les s\\xE9lections quand l'utilisateur tape des guillemets ou des crochets.\",\"\\xC9mule le comportement des tabulations pour la s\\xE9lection quand des espaces sont utilis\\xE9s \\xE0 des fins de mise en retrait. La s\\xE9lection respecte les taquets de tabulation.\",\"Contr\\xF4le si l'\\xE9diteur affiche CodeLens.\",\"Contr\\xF4le la famille de polices pour CodeLens.\",\"Contr\\xF4le la taille de police en pixels pour CodeLens. Quand la valeur est 0, 90\\xA0% de '#editor.fontSize#' est utilis\\xE9.\",\"Contr\\xF4le si l'\\xE9diteur doit afficher les \\xE9l\\xE9ments d\\xE9coratifs de couleurs inline et le s\\xE9lecteur de couleurs.\",\"Faire appara\\xEEtre le s\\xE9lecteur de couleurs au clic et au pointage de l\\u2019\\xE9l\\xE9ment d\\xE9coratif de couleurs\",\"Faire appara\\xEEtre le s\\xE9lecteur de couleurs en survolant l\\u2019\\xE9l\\xE9ment d\\xE9coratif de couleurs\",\"Faire appara\\xEEtre le s\\xE9lecteur de couleurs en cliquant sur l\\u2019\\xE9l\\xE9ment d\\xE9coratif de couleurs\",\"Contr\\xF4le la condition pour faire appara\\xEEtre un s\\xE9lecteur de couleurs \\xE0 partir d\\u2019un \\xE9l\\xE9ment d\\xE9coratif de couleurs\",\"Contr\\xF4le le nombre maximal d\\u2019\\xE9l\\xE9ments d\\xE9coratifs de couleur qui peuvent \\xEAtre rendus simultan\\xE9ment dans un \\xE9diteur.\",\"Autoriser l'utilisation de la souris et des touches pour s\\xE9lectionner des colonnes.\",\"Contr\\xF4le si la coloration syntaxique doit \\xEAtre copi\\xE9e dans le presse-papiers.\",\"Contr\\xF4ler le style d\\u2019animation du curseur.\",\"L\\u2019animation de caret fluide est d\\xE9sactiv\\xE9e.\",\"L\\u2019animation de caret fluide est activ\\xE9e uniquement lorsque l\\u2019utilisateur d\\xE9place le curseur avec un mouvement explicite.\",\"L\\u2019animation de caret fluide est toujours activ\\xE9e.\",\"Contr\\xF4le si l'animation du point d'insertion doit \\xEAtre activ\\xE9e.\",\"Contr\\xF4le le style du curseur.\",\"Contr\\xF4le le nombre minimal de lignes de d\\xE9but (0 minimum) et de fin (1 minimum) visibles autour du curseur. \\xC9galement appel\\xE9 \\xAB\\xA0scrollOff\\xA0\\xBB ou \\xAB\\xA0scrollOffset\\xA0\\xBB dans d'autres \\xE9diteurs.\",\"'cursorSurroundingLines' est appliqu\\xE9 seulement s'il est d\\xE9clench\\xE9 via le clavier ou une API.\",\"'cursorSurroundingLines' est toujours appliqu\\xE9.\",\"Contr\\xF4le quand 'cursorSurroundingLines' doit \\xEAtre appliqu\\xE9.\",\"D\\xE9termine la largeur du curseur lorsque `#editor.cursorStyle#` est \\xE0 `line`.\",\"Contr\\xF4le si l\\u2019\\xE9diteur autorise le d\\xE9placement de s\\xE9lections par glisser-d\\xE9placer.\",\"Utilisez une nouvelle m\\xE9thode de rendu avec des SVG.\",\"Utilisez une nouvelle m\\xE9thode de rendu avec des caract\\xE8res de police.\",\"Utilisez la m\\xE9thode de rendu stable.\",\"Contr\\xF4le si les espaces blancs sont rendus avec une nouvelle m\\xE9thode exp\\xE9rimentale.\",\"Multiplicateur de vitesse de d\\xE9filement quand vous appuyez sur 'Alt'.\",\"Contr\\xF4le si l'\\xE9diteur a le pliage de code activ\\xE9.\",\"Utilisez une strat\\xE9gie de pliage propre \\xE0 la langue, si disponible, sinon utilisez la strat\\xE9gie bas\\xE9e sur le retrait.\",\"Utilisez la strat\\xE9gie de pliage bas\\xE9e sur le retrait.\",\"Contr\\xF4le la strat\\xE9gie de calcul des plages de pliage.\",\"Contr\\xF4le si l'\\xE9diteur doit mettre en \\xE9vidence les plages pli\\xE9es.\",\"Contr\\xF4le si l\\u2019\\xE9diteur r\\xE9duit automatiquement les plages d\\u2019importation.\",\"Nombre maximal de r\\xE9gions pliables. L\\u2019augmentation de cette valeur peut r\\xE9duire la r\\xE9activit\\xE9 de l\\u2019\\xE9diteur lorsque la source actuelle comprend un grand nombre de r\\xE9gions pliables.\",\"Contr\\xF4le si le fait de cliquer sur le contenu vide apr\\xE8s une ligne pli\\xE9e d\\xE9plie la ligne.\",\"Contr\\xF4le la famille de polices.\",\"D\\xE9termine si l\\u2019\\xE9diteur doit automatiquement mettre en forme le contenu coll\\xE9. Un formateur doit \\xEAtre disponible et \\xEAtre capable de mettre en forme une plage dans un document.\",\"Contr\\xF4le si l\\u2019\\xE9diteur doit mettre automatiquement en forme la ligne apr\\xE8s la saisie.\",\"Contr\\xF4le si l'\\xE9diteur doit afficher la marge de glyphes verticale. La marge de glyphes sert principalement au d\\xE9bogage.\",\"Contr\\xF4le si le curseur doit \\xEAtre masqu\\xE9 dans la r\\xE8gle de la vue d\\u2019ensemble.\",\"Contr\\xF4le l'espacement des lettres en pixels.\",\"Contr\\xF4le si la modification li\\xE9e est activ\\xE9e dans l\\u2019\\xE9diteur. En fonction du langage, les symboles associ\\xE9s, par exemple les balises HTML, sont mis \\xE0 jour durant le processus de modification.\",\"Contr\\xF4le si l\\u2019\\xE9diteur doit d\\xE9tecter les liens et les rendre cliquables.\",\"Mettez en surbrillance les crochets correspondants.\",\"Un multiplicateur \\xE0 utiliser sur les `deltaX` et `deltaY` des \\xE9v\\xE9nements de d\\xE9filement de roulette de souris.\",\"Faire un zoom sur la police de l'\\xE9diteur quand l'utilisateur fait tourner la roulette de la souris tout en maintenant la touche 'Ctrl' enfonc\\xE9e.\",\"Fusionnez plusieurs curseurs quand ils se chevauchent.\",\"Mappe vers 'Contr\\xF4le' dans Windows et Linux, et vers 'Commande' dans macOS.\",\"Mappe vers 'Alt' dans Windows et Linux, et vers 'Option' dans macOS.\",\"Modificateur \\xE0 utiliser pour ajouter plusieurs curseurs avec la souris. Les mouvements de la souris Atteindre la d\\xE9finition et Ouvrir le lien s\\u2019adaptent afin qu\\u2019ils ne soient pas en conflit avec le [modificateur multicurseur](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modificateur).\",\"Chaque curseur colle une seule ligne de texte.\",\"Chaque curseur colle le texte en entier.\",\"Contr\\xF4le le collage quand le nombre de lignes du texte coll\\xE9 correspond au nombre de curseurs.\",\"Contr\\xF4le le nombre maximal de curseurs pouvant se trouver dans un \\xE9diteur actif \\xE0 la fois.\",\"Contr\\xF4le si l'\\xE9diteur doit mettre en surbrillance les occurrences de symboles s\\xE9mantiques.\",\"Contr\\xF4le si une bordure doit \\xEAtre dessin\\xE9e autour de la r\\xE8gle de la vue d'ensemble.\",\"Focus sur l'arborescence \\xE0 l'ouverture de l'aper\\xE7u\",\"Placer le focus sur l'\\xE9diteur \\xE0 l'ouverture de l'aper\\xE7u\",\"Contr\\xF4le s'il faut mettre le focus sur l'\\xE9diteur inline ou sur l'arborescence dans le widget d'aper\\xE7u.\",\"Contr\\xF4le si le geste de souris Acc\\xE9der \\xE0 la d\\xE9finition ouvre toujours le widget d'aper\\xE7u.\",\"Contr\\xF4le le d\\xE9lai en millisecondes apr\\xE8s lequel des suggestions rapides sont affich\\xE9es.\",\"Contr\\xF4le si l'\\xE9diteur renomme automatiquement selon le type.\",\"D\\xE9pr\\xE9ci\\xE9. Utilisez 'editor.linkedEditing' \\xE0 la place.\",\"Contr\\xF4le si l\\u2019\\xE9diteur doit afficher les caract\\xE8res de contr\\xF4le.\",\"Affichez le dernier num\\xE9ro de ligne quand le fichier se termine par un saut de ligne.\",\"Met en surbrillance la goutti\\xE8re et la ligne actuelle.\",\"Contr\\xF4le la fa\\xE7on dont l\\u2019\\xE9diteur doit afficher la mise en surbrillance de la ligne actuelle.\",\"Contr\\xF4le si l'\\xE9diteur doit afficher la mise en surbrillance de la ligne actuelle uniquement quand il a le focus.\",\"Affiche les espaces blancs \\xE0 l'exception des espaces uniques entre les mots.\",\"Afficher les espaces blancs uniquement sur le texte s\\xE9lectionn\\xE9.\",\"Affiche uniquement les caract\\xE8res correspondant aux espaces blancs de fin.\",\"Contr\\xF4le la fa\\xE7on dont l\\u2019\\xE9diteur doit restituer les caract\\xE8res espaces.\",\"Contr\\xF4le si les s\\xE9lections doivent avoir des angles arrondis.\",\"Contr\\xF4le le nombre de caract\\xE8res suppl\\xE9mentaires, au-del\\xE0 duquel l\\u2019\\xE9diteur d\\xE9file horizontalement.\",\"Contr\\xF4le si l\\u2019\\xE9diteur d\\xE9file au-del\\xE0 de la derni\\xE8re ligne.\",\"Faites d\\xE9filer uniquement le long de l'axe pr\\xE9dominant quand le d\\xE9filement est \\xE0 la fois vertical et horizontal. Emp\\xEAche la d\\xE9rive horizontale en cas de d\\xE9filement vertical sur un pav\\xE9 tactile.\",\"Contr\\xF4le si le presse-papiers principal Linux doit \\xEAtre pris en charge.\",\"Contr\\xF4le si l'\\xE9diteur doit mettre en surbrillance les correspondances similaires \\xE0 la s\\xE9lection.\",\"Affichez toujours les contr\\xF4les de pliage.\",\"N\\u2019affichez jamais les contr\\xF4les de pliage et r\\xE9duisez la taille de la marge.\",\"Affichez uniquement les contr\\xF4les de pliage quand la souris est au-dessus de la reliure.\",\"Contr\\xF4le quand afficher les contr\\xF4les de pliage sur la reliure.\",\"Contr\\xF4le la disparition du code inutile.\",\"Contr\\xF4le les variables d\\xE9pr\\xE9ci\\xE9es barr\\xE9es.\",\"Afficher des suggestions d\\u2019extraits au-dessus d\\u2019autres suggestions.\",\"Afficher des suggestions d\\u2019extraits en-dessous d\\u2019autres suggestions.\",\"Afficher des suggestions d\\u2019extraits avec d\\u2019autres suggestions.\",\"Ne pas afficher de suggestions d\\u2019extrait de code.\",\"Contr\\xF4le si les extraits de code s'affichent en m\\xEAme temps que d'autres suggestions, ainsi que leur mode de tri.\",\"Contr\\xF4le si l'\\xE9diteur d\\xE9file en utilisant une animation.\",\"Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\",\"Taille de police pour le widget suggest. Lorsqu\\u2019elle est d\\xE9finie sur {0}, la valeur de {1} est utilis\\xE9e.\",\"Hauteur de ligne pour le widget suggest. Lorsqu\\u2019elle est d\\xE9finie sur {0}, la valeur de {1} est utilis\\xE9e. La valeur minimale est 8.\",\"Contr\\xF4le si les suggestions devraient automatiquement s\\u2019afficher lorsque vous tapez les caract\\xE8res de d\\xE9clencheur.\",\"S\\xE9lectionnez toujours la premi\\xE8re suggestion.\",\"S\\xE9lectionnez les suggestions r\\xE9centes sauf si une entr\\xE9e ult\\xE9rieure en a s\\xE9lectionn\\xE9 une, par ex., 'console.| -> console.log', car 'log' a \\xE9t\\xE9 effectu\\xE9 r\\xE9cemment.\",\"S\\xE9lectionnez des suggestions en fonction des pr\\xE9fixes pr\\xE9c\\xE9dents qui ont compl\\xE9t\\xE9 ces suggestions, par ex., 'co -> console' et 'con -> const'.\",\"Contr\\xF4le comment les suggestions sont pr\\xE9-s\\xE9lectionn\\xE9s lors de l\\u2019affichage de la liste de suggestion.\",\"La compl\\xE9tion par tabulation ins\\xE9rera la meilleure suggestion lorsque vous appuyez sur tab.\",\"D\\xE9sactiver les compl\\xE9tions par tabulation.\",\"Compl\\xE9ter les extraits de code par tabulation lorsque leur pr\\xE9fixe correspond. Fonctionne mieux quand les 'quickSuggestions' ne sont pas activ\\xE9es.\",\"Active les compl\\xE9tions par tabulation\",\"Les marques de fin de ligne inhabituelles sont automatiquement supprim\\xE9es.\",\"Les marques de fin de ligne inhabituelles sont ignor\\xE9es.\",\"Les marques de fin de ligne inhabituelles demandent \\xE0 \\xEAtre supprim\\xE9es.\",\"Supprimez les marques de fin de ligne inhabituelles susceptibles de causer des probl\\xE8mes.\",\"L'insertion et la suppression des espaces blancs suit les taquets de tabulation.\",\"Utilisez la r\\xE8gle de saut de ligne par d\\xE9faut.\",\"Les sauts de mots ne doivent pas \\xEAtre utilis\\xE9s pour le texte chinois/japonais/cor\\xE9en (CJC). Le comportement du texte non CJC est identique \\xE0 celui du texte normal.\",\"Contr\\xF4le les r\\xE8gles de s\\xE9parateur de mots utilis\\xE9es pour le texte chinois/japonais/cor\\xE9en (CJC).\",\"Caract\\xE8res utilis\\xE9s comme s\\xE9parateurs de mots durant la navigation ou les op\\xE9rations bas\\xE9es sur les mots\",\"Le retour automatique \\xE0 la ligne n'est jamais effectu\\xE9.\",\"Le retour automatique \\xE0 la ligne s'effectue en fonction de la largeur de la fen\\xEAtre d'affichage.\",\"Les lignes seront termin\\xE9es \\xE0 `#editor.wordWrapColumn#`.\",\"Les lignes seront termin\\xE9es au minimum du viewport et `#editor.wordWrapColumn#`.\",\"Contr\\xF4le comment les lignes doivent \\xEAtre limit\\xE9es.\",\"Contr\\xF4le la colonne de terminaison de l\\u2019\\xE9diteur lorsque `#editor.wordWrap#` est \\xE0 `wordWrapColumn` ou `bounded`.\",\"Contr\\xF4le si les d\\xE9corations de couleur inline doivent \\xEAtre affich\\xE9es \\xE0 l\\u2019aide du fournisseur de couleurs de document par d\\xE9faut\",\"Contr\\xF4le si l\\u2019\\xE9diteur re\\xE7oit des onglets ou les reporte au banc d\\u2019essai pour la navigation.\"],\"vs/editor/common/core/editorColorRegistry\":[\"Couleur d'arri\\xE8re-plan de la mise en surbrillance de la ligne \\xE0 la position du curseur.\",\"Couleur d'arri\\xE8re-plan de la bordure autour de la ligne \\xE0 la position du curseur.\",\"Couleur d'arri\\xE8re-plan des plages mises en surbrillance, comme par les fonctionnalit\\xE9s de recherche et Quick Open. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur d'arri\\xE8re-plan de la bordure autour des plages mises en surbrillance.\",\"Couleur d'arri\\xE8re-plan du symbole mis en surbrillance, comme le symbole Atteindre la d\\xE9finition ou Suivant/Pr\\xE9c\\xE9dent. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les d\\xE9corations sous-jacentes.\",\"Couleur d'arri\\xE8re-plan de la bordure autour des symboles mis en surbrillance.\",\"Couleur du curseur de l'\\xE9diteur.\",\"La couleur de fond du curseur de l'\\xE9diteur. Permet de personnaliser la couleur d'un caract\\xE8re survol\\xE9 par un curseur de bloc.\",\"Couleur des espaces blancs dans l'\\xE9diteur.\",\"Couleur des num\\xE9ros de ligne de l'\\xE9diteur.\",\"Couleur des rep\\xE8res de retrait de l'\\xE9diteur.\",\"'editorIndentGuide.background' est d\\xE9conseill\\xE9. Utilisez 'editorIndentGuide.background1' \\xE0 la place.\",\"Couleur des guides d'indentation de l'\\xE9diteur actif\",\"'editorIndentGuide.activeBackground' est d\\xE9conseill\\xE9. Utilisez 'editorIndentGuide.activeBackground1' \\xE0 la place.\",\"Couleur des rep\\xE8res de retrait de l'\\xE9diteur (1).\",\"Couleur des rep\\xE8res de retrait de l'\\xE9diteur (2).\",\"Couleur des rep\\xE8res de retrait de l'\\xE9diteur (3).\",\"Couleur des rep\\xE8res de retrait de l'\\xE9diteur (4).\",\"Couleur des rep\\xE8res de retrait de l'\\xE9diteur (5).\",\"Couleur des rep\\xE8res de retrait de l'\\xE9diteur (6).\",\"Couleur des repaires de retrait de l'\\xE9diteur actifs (1).\",\"Couleur des repaires de retrait de l'\\xE9diteur actifs (2).\",\"Couleur des repaires de retrait de l'\\xE9diteur actifs (3).\",\"Couleur des repaires de retrait de l'\\xE9diteur actifs (4).\",\"Couleur des repaires de retrait de l'\\xE9diteur actifs (5).\",\"Couleur des repaires de retrait de l'\\xE9diteur actifs (6).\",\"Couleur des num\\xE9ros de lignes actives de l'\\xE9diteur\",\"L\\u2019ID est d\\xE9pr\\xE9ci\\xE9. Utilisez \\xE0 la place 'editorLineNumber.activeForeground'.\",\"Couleur des num\\xE9ros de lignes actives de l'\\xE9diteur\",\"Couleur de la ligne finale de l\\u2019\\xE9diteur lorsque editor.renderFinalNewline est d\\xE9fini sur gris\\xE9.\",\"Couleur des r\\xE8gles de l'\\xE9diteur\",\"Couleur pour les indicateurs CodeLens\",\"Couleur d'arri\\xE8re-plan pour les accolades associ\\xE9es\",\"Couleur pour le contour des accolades associ\\xE9es\",\"Couleur de la bordure de la r\\xE8gle d'aper\\xE7u.\",\"Couleur d\\u2019arri\\xE8re-plan de la r\\xE8gle de vue d\\u2019ensemble de l\\u2019\\xE9diteur.\",\"Couleur de fond pour la bordure de l'\\xE9diteur. La bordure contient les marges pour les symboles et les num\\xE9ros de ligne.\",\"Couleur de bordure du code source inutile (non utilis\\xE9) dans l'\\xE9diteur.\",\"Opacit\\xE9 du code source inutile (non utilis\\xE9) dans l'\\xE9diteur. Par exemple, '#000000c0' affiche le code avec une opacit\\xE9 de 75\\xA0%. Pour les th\\xE8mes \\xE0 fort contraste, utilisez la couleur de th\\xE8me 'editorUnnecessaryCode.border' pour souligner le code inutile au lieu d'utiliser la transparence.\",\"Couleur de bordure du texte fant\\xF4me dans l\\u2019\\xE9diteur.\",\"Couleur de premier plan du texte fant\\xF4me dans l\\u2019\\xE9diteur.\",\"Couleur de l\\u2019arri\\xE8re-plan du texte fant\\xF4me dans l\\u2019\\xE9diteur\",\"Couleur de marqueur de la r\\xE8gle d'aper\\xE7u pour la mise en surbrillance des plages. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur du marqueur de la r\\xE8gle d'aper\\xE7u pour les erreurs.\",\"Couleur du marqueur de la r\\xE8gle d'aper\\xE7u pour les avertissements.\",\"Couleur du marqueur de la r\\xE8gle d'aper\\xE7u pour les informations.\",\"Couleur de premier plan des crochets (1). N\\xE9cessite l\\u2019activation de la coloration de la paire de crochets.\",\"Couleur de premier plan des crochets (2). N\\xE9cessite l\\u2019activation de la coloration de la paire de crochets.\",\"Couleur de premier plan des crochets (3). N\\xE9cessite l\\u2019activation de la coloration de la paire de crochets.\",\"Couleur de premier plan des crochets (4). N\\xE9cessite l\\u2019activation de la coloration de la paire de crochets.\",\"Couleur de premier plan des crochets (5). N\\xE9cessite l\\u2019activation de la coloration de la paire de crochets.\",\"Couleur de premier plan des crochets (6). N\\xE9cessite l\\u2019activation de la coloration de la paire de crochets.\",\"Couleur de premier plan des parenth\\xE8ses inattendues\",\"Couleur d\\u2019arri\\xE8re-plan des rep\\xE8res de paire de crochets inactifs (1). N\\xE9cessite l\\u2019activation des rep\\xE8res de paire de crochets.\",\"Couleur d\\u2019arri\\xE8re-plan des rep\\xE8res de paire de crochets inactifs (2). N\\xE9cessite l\\u2019activation des rep\\xE8res de paire de crochets.\",\"Couleur d\\u2019arri\\xE8re-plan des rep\\xE8res de paire de crochets inactifs (3). N\\xE9cessite l\\u2019activation des rep\\xE8res de paire de crochets.\",\"Couleur d\\u2019arri\\xE8re-plan des rep\\xE8res de paire de crochets inactifs (4). N\\xE9cessite l\\u2019activation des rep\\xE8res de paire de crochets.\",\"Couleur d\\u2019arri\\xE8re-plan des rep\\xE8res de paire de crochets inactifs (5). N\\xE9cessite l\\u2019activation des rep\\xE8res de paire de crochets.\",\"Couleur d\\u2019arri\\xE8re-plan des rep\\xE8res de paire de crochets inactifs (6). N\\xE9cessite l\\u2019activation des rep\\xE8res de paire de crochets.\",\"Couleur d\\u2019arri\\xE8re-plan des rep\\xE8res de paire de crochets actifs (1). N\\xE9cessite l\\u2019activation des rep\\xE8res de paire de crochets.\",\"Couleur d\\u2019arri\\xE8re-plan des rep\\xE8res de paire de crochets actifs (2). N\\xE9cessite l\\u2019activation des rep\\xE8res de paire de crochets.\",\"Couleur d\\u2019arri\\xE8re-plan des rep\\xE8res de paire de crochets actifs (3). N\\xE9cessite l\\u2019activation des rep\\xE8res de paire de crochets.\",\"Couleur d\\u2019arri\\xE8re-plan des rep\\xE8res de paire de crochets actifs (4). N\\xE9cessite l\\u2019activation des rep\\xE8res de paire de crochets.\",\"Couleur d\\u2019arri\\xE8re-plan des rep\\xE8res de paire de crochets actifs (5). N\\xE9cessite l\\u2019activation des rep\\xE8res de paire de crochets.\",\"Couleur d\\u2019arri\\xE8re-plan des rep\\xE8res de paire de crochets actifs (6). N\\xE9cessite l\\u2019activation des rep\\xE8res de paire de crochets.\",\"Couleur de bordure utilis\\xE9e pour mettre en surbrillance les caract\\xE8res Unicode\",\"Couleur de fond utilis\\xE9e pour mettre en \\xE9vidence les caract\\xE8res unicode\"],\"vs/editor/common/editorContextKeys\":[\"Indique si le texte de l'\\xE9diteur a le focus (le curseur clignote)\",\"Indique si l'\\xE9diteur ou un widget de l'\\xE9diteur a le focus (par exemple, le focus se trouve sur le widget de recherche)\",\"Indique si un \\xE9diteur ou une entr\\xE9e de texte mis en forme a le focus (le curseur clignote)\",\"Indique si l\\u2019\\xE9diteur est en lecture seule\",\"Indique si le contexte est celui d'un \\xE9diteur de diff\\xE9rences\",\"Indique si le contexte est celui d\\u2019un \\xE9diteur de diff\\xE9rences int\\xE9gr\\xE9\",\"Whether a moved code block is selected for comparison\",\"Indique si la visionneuse diff accessible est visible\",\"Whether the diff editor render side by side inline breakpoint is reached\",\"Indique si 'editor.columnSelection' est activ\\xE9\",\"Indique si du texte est s\\xE9lectionn\\xE9 dans l'\\xE9diteur\",\"Indique si l'\\xE9diteur a plusieurs s\\xE9lections\",\"Indique si la touche Tab permet de d\\xE9placer le focus hors de l'\\xE9diteur\",\"Indique si le pointage de l'\\xE9diteur est visible\",\"Indique si le pointage de l\\u2019\\xE9diteur est cibl\\xE9\",\"Indique si le d\\xE9filement du pense-b\\xEAte a le focus\",\"Indique si le d\\xE9filement du pense-b\\xEAte est visible\",\"Indique si le s\\xE9lecteur de couleurs autonome est visible\",\"Indique si le s\\xE9lecteur de couleurs autonome est prioritaire\",\"Indique si l'\\xE9diteur fait partie d'un \\xE9diteur plus important (par exemple Notebooks)\",\"Identificateur de langage de l'\\xE9diteur\",\"Indique si l'\\xE9diteur a un fournisseur d'\\xE9l\\xE9ments de compl\\xE9tion\",\"Indique si l'\\xE9diteur a un fournisseur d'actions de code\",\"Indique si l'\\xE9diteur a un fournisseur d'informations CodeLens\",\"Indique si l'\\xE9diteur a un fournisseur de d\\xE9finitions\",\"Indique si l'\\xE9diteur a un fournisseur de d\\xE9clarations\",\"Indique si l'\\xE9diteur a un fournisseur d'impl\\xE9mentation\",\"Indique si l'\\xE9diteur a un fournisseur de d\\xE9finitions de type\",\"Indique si l'\\xE9diteur a un fournisseur de pointage\",\"Indique si l'\\xE9diteur a un fournisseur de mise en surbrillance pour les documents\",\"Indique si l'\\xE9diteur a un fournisseur de symboles pour les documents\",\"Indique si l'\\xE9diteur a un fournisseur de r\\xE9f\\xE9rence\",\"Indique si l'\\xE9diteur a un fournisseur de renommage\",\"Indique si l'\\xE9diteur a un fournisseur d'aide sur les signatures\",\"Indique si l'\\xE9diteur a un fournisseur d'indicateurs inline\",\"Indique si l'\\xE9diteur a un fournisseur de mise en forme pour les documents\",\"Indique si l'\\xE9diteur a un fournisseur de mise en forme de s\\xE9lection pour les documents\",\"Indique si l'\\xE9diteur a plusieurs fournisseurs de mise en forme pour les documents\",\"Indique si l'\\xE9diteur a plusieurs fournisseurs de mise en forme de s\\xE9lection pour les documents\"],\"vs/editor/common/languages\":[\"tableau\",\"bool\\xE9en\",\"classe\",\"constante\",\"constructeur\",\"\\xE9num\\xE9ration\",\"membre d'\\xE9num\\xE9ration\",\"\\xE9v\\xE9nement\",\"champ\",\"fichier\",\"fonction\",\"interface\",\"cl\\xE9\",\"m\\xE9thode\",\"module\",\"espace de noms\",\"NULL\",\"nombre\",\"objet\",\"op\\xE9rateur\",\"package\",\"propri\\xE9t\\xE9\",\"cha\\xEEne\",\"struct\",\"param\\xE8tre de type\",\"variable\",\"{0} ({1})\"],\"vs/editor/common/languages/modesRegistry\":[\"Texte brut\"],\"vs/editor/common/model/editStack\":[\"Frappe en cours\"],\"vs/editor/common/standaloneStrings\":[\"D\\xE9veloppeur\\xA0: Inspecter les jetons\",\"Acc\\xE9der \\xE0 la ligne/colonne...\",\"Afficher tous les fournisseurs d'acc\\xE8s rapide\",\"Palette de commandes\",\"Commandes d'affichage et d'ex\\xE9cution\",\"Acc\\xE9der au symbole...\",\"Acc\\xE9der au symbole par cat\\xE9gorie...\",\"Contenu de l'\\xE9diteur\",\"Appuyez sur Alt+F1 pour voir les options d'accessibilit\\xE9.\",\"Activer/d\\xE9sactiver le th\\xE8me \\xE0 contraste \\xE9lev\\xE9\",\"{0} modifications dans {1} fichiers\"],\"vs/editor/common/viewLayout/viewLineRenderer\":[\"Afficher plus\\xA0({0})\",\"{0}\\xA0caract\\xE8res\"],\"vs/editor/contrib/anchorSelect/browser/anchorSelect\":[\"Ancre de s\\xE9lection\",\"Ancre d\\xE9finie sur {0}:{1}\",\"D\\xE9finir l'ancre de s\\xE9lection\",\"Atteindre l'ancre de s\\xE9lection\",\"S\\xE9lectionner de l'ancre au curseur\",\"Annuler l'ancre de s\\xE9lection\"],\"vs/editor/contrib/bracketMatching/browser/bracketMatching\":[\"Couleur du marqueur de la r\\xE8gle d'aper\\xE7u pour rechercher des parenth\\xE8ses.\",\"Atteindre le crochet\",\"S\\xE9lectionner jusqu'au crochet\",\"Supprimer les crochets\",\"Acc\\xE9der au &&crochet\"],\"vs/editor/contrib/caretOperations/browser/caretOperations\":[\"D\\xE9placer le texte s\\xE9lectionn\\xE9 \\xE0 gauche\",\"D\\xE9placer le texte s\\xE9lectionn\\xE9 \\xE0 droite\"],\"vs/editor/contrib/caretOperations/browser/transpose\":[\"Transposer les lettres\"],\"vs/editor/contrib/clipboard/browser/clipboard\":[\"Co&&uper\",\"Couper\",\"Couper\",\"Couper\",\"&&Copier\",\"Copier\",\"Copier\",\"Copier\",\"Copier en tant que\",\"Copier en tant que\",\"Partager\",\"Partager\",\"Partager\",\"Co&&ller\",\"Coller\",\"Coller\",\"Coller\",\"Copier avec la coloration syntaxique\"],\"vs/editor/contrib/codeAction/browser/codeAction\":[\"Une erreur inconnue s'est produite \\xE0 l'application de l'action du code\"],\"vs/editor/contrib/codeAction/browser/codeActionCommands\":[\"Type d'action de code \\xE0 ex\\xE9cuter.\",\"Contr\\xF4le quand les actions retourn\\xE9es sont appliqu\\xE9es.\",\"Appliquez toujours la premi\\xE8re action de code retourn\\xE9e.\",\"Appliquez la premi\\xE8re action de code retourn\\xE9e si elle est la seule.\",\"N'appliquez pas les actions de code retourn\\xE9es.\",\"Contr\\xF4le si seules les actions de code par d\\xE9faut doivent \\xEAtre retourn\\xE9es.\",\"Correction rapide...\",\"Aucune action de code disponible\",\"Aucune action de code pr\\xE9f\\xE9r\\xE9e n'est disponible pour '{0}'\",\"Aucune action de code disponible pour '{0}'\",\"Aucune action de code par d\\xE9faut disponible\",\"Aucune action de code disponible\",\"Remanier...\",\"Aucune refactorisation par d\\xE9faut disponible pour '{0}'\",\"Aucune refactorisation disponible pour '{0}'\",\"Aucune refactorisation par d\\xE9faut disponible\",\"Aucune refactorisation disponible\",\"Action de la source\",\"Aucune action source par d\\xE9faut disponible pour '{0}'\",\"Aucune action source disponible pour '{0}'\",\"Aucune action source par d\\xE9faut disponible\",\"Aucune action n'est disponible\",\"Organiser les importations\",\"Aucune action organiser les imports disponible\",\"Tout corriger\",\"Aucune action Tout corriger disponible\",\"Corriger automatiquement...\",\"Aucun correctif automatique disponible\"],\"vs/editor/contrib/codeAction/browser/codeActionContributions\":[\"Activez/d\\xE9sactivez l\\u2019affichage des en-t\\xEAtes de groupe dans le menu d\\u2019action du code.\"],\"vs/editor/contrib/codeAction/browser/codeActionController\":[\"Masquer d\\xE9sactiv\\xE9\",\"Afficher les \\xE9l\\xE9ments d\\xE9sactiv\\xE9s\"],\"vs/editor/contrib/codeAction/browser/codeActionMenu\":[\"Plus d\\u2019actions...\",\"Correction rapide...\",\"Extraire...\",\"Inline...\",\"R\\xE9\\xE9crire...\",\"D\\xE9placer...\",\"Entourer de...\",\"Action de la source...\"],\"vs/editor/contrib/codeAction/browser/lightBulbWidget\":[\"Afficher les actions de code. Correctif rapide disponible par d\\xE9faut ({0})\",\"Afficher les actions de code ({0})\",\"Afficher les actions de code\"],\"vs/editor/contrib/codelens/browser/codelensController\":[\"Afficher les commandes Code Lens de la ligne actuelle\"],\"vs/editor/contrib/colorPicker/browser/colorPickerWidget\":[\"Cliquez pour activer/d\\xE9sactiver les options de couleur (rgb/hsl/hexad\\xE9cimal).\",\"Ic\\xF4ne pour fermer le s\\xE9lecteur de couleurs\"],\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\":[\"Afficher ou mettre le focus sur le s\\xE9lecteur de couleurs autonome\",\"&&Afficher ou mettre le focus sur le s\\xE9lecteur de couleurs autonome\",\"Masquer le s\\xE9lecteur de couleurs\",\"Ins\\xE9rer une couleur avec un s\\xE9lecteur de couleurs autonome\"],\"vs/editor/contrib/comment/browser/comment\":[\"Activer/d\\xE9sactiver le commentaire de ligne\",\"Afficher/masquer le commen&&taire de ligne\",\"Ajouter le commentaire de ligne\",\"Supprimer le commentaire de ligne\",\"Activer/d\\xE9sactiver le commentaire de bloc\",\"Afficher/masquer le commentaire de &&bloc\"],\"vs/editor/contrib/contextmenu/browser/contextmenu\":[\"Minimap\",\"Afficher les caract\\xE8res\",\"Taille verticale\",\"Proportionnel\",\"Remplissage\",\"Ajuster\",\"Curseur\",\"Pointer la souris\",\"Toujours\",\"Afficher le menu contextuel de l'\\xE9diteur\"],\"vs/editor/contrib/cursorUndo/browser/cursorUndo\":[\"Annulation du curseur\",\"Restauration du curseur\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\":[\"Coller en tant que...\",\"ID de la modification de collage \\xE0 appliquer. S\\u2019il n\\u2019est pas fourni, l\\u2019\\xE9diteur affiche un s\\xE9lecteur.\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\":[\"Si le widget de collage est affich\\xE9\",\"Afficher les options de collage...\",\"Ex\\xE9cution des gestionnaires de collage. Cliquez pour annuler\",\"S\\xE9lectionner l\\u2019action Coller\",\"Ex\\xE9cution des gestionnaires de collage\"],\"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\":[\"Int\\xE9gr\\xE9\",\"Ins\\xE9rer du texte brut\",\"Ins\\xE9rer des URI\",\"Ins\\xE9rer un URI\",\"Ins\\xE9rer des chemins d\\u2019acc\\xE8s\",\"Ins\\xE9rer un chemin d\\u2019acc\\xE8s\",\"Ins\\xE9rer des chemins d\\u2019acc\\xE8s relatifs\",\"Ins\\xE9rer un chemin d\\u2019acc\\xE8s relatif\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\":[\"Configures the default drop provider to use for content of a given mime type.\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\":[\"Indique si le widget de suppression s\\u2019affiche\",\"Afficher les options de suppression...\",\"Ex\\xE9cution des gestionnaires de d\\xE9p\\xF4t. Cliquez pour annuler\"],\"vs/editor/contrib/editorState/browser/keybindingCancellation\":[\"Indique si l'\\xE9diteur ex\\xE9cute une op\\xE9ration annulable, par exemple 'Avoir un aper\\xE7u des r\\xE9f\\xE9rences'\"],\"vs/editor/contrib/find/browser/findController\":[\"Rechercher\",\"&&Rechercher\",`Remplace l\\u2019indicateur \\xAB Utiliser une expression r\\xE9guli\\xE8re \\xBB.\\r\nL\\u2019indicateur ne sera pas enregistr\\xE9 \\xE0 l\\u2019avenir.\\r\n0 : Ne rien faire\\r\n1 : Vrai\\r\n2 : Faux`,`Remplace l\\u2019indicateur \\xAB Match Whole Word \\xBB.\\r\nL\\u2019indicateur ne sera pas enregistr\\xE9 \\xE0 l\\u2019avenir.\\r\n0 : Ne rien faire\\r\n1 : Vrai\\r\n2 : Faux`,`Remplace l\\u2019indicateur \\xAB Cas math\\xE9matiques \\xBB.\\r\nL\\u2019indicateur ne sera pas enregistr\\xE9 \\xE0 l\\u2019avenir.\\r\n0 : Ne rien faire\\r\n1 : Vrai\\r\n2 : Faux`,`Remplace l\\u2019indicateur \\xAB Preserve Case \\xBB.\\r\nL\\u2019indicateur ne sera pas enregistr\\xE9 \\xE0 l\\u2019avenir.\\r\n0 : Ne rien faire\\r\n1 : Vrai\\r\n2 : Faux`,\"Trouver avec des arguments\",\"Rechercher dans la s\\xE9lection\",\"Rechercher suivant\",\"Rechercher pr\\xE9c\\xE9dent\",\"Acc\\xE9der \\xE0 la correspondance...\",\"Aucune correspondance. Essayez de rechercher autre chose.\",\"Tapez un nombre pour acc\\xE9der \\xE0 une correspondance sp\\xE9cifique (entre 1 et {0})\",\"Veuillez entrer un nombre compris entre 1 et {0}\",\"Veuillez entrer un nombre compris entre 1 et {0}\",\"S\\xE9lection suivante\",\"S\\xE9lection pr\\xE9c\\xE9dente\",\"Remplacer\",\"&&Remplacer\"],\"vs/editor/contrib/find/browser/findWidget\":[\"Ic\\xF4ne de l'option Rechercher dans la s\\xE9lection dans le widget de recherche de l'\\xE9diteur.\",\"Ic\\xF4ne permettant d'indiquer que le widget de recherche de l'\\xE9diteur est r\\xE9duit.\",\"Ic\\xF4ne permettant d'indiquer que le widget de recherche de l'\\xE9diteur est d\\xE9velopp\\xE9.\",\"Ic\\xF4ne de l'option Remplacer dans le widget de recherche de l'\\xE9diteur.\",\"Ic\\xF4ne de l'option Tout remplacer dans le widget de recherche de l'\\xE9diteur.\",\"Ic\\xF4ne de l'option Rechercher pr\\xE9c\\xE9dent dans le widget de recherche de l'\\xE9diteur.\",\"Ic\\xF4ne de l'option Rechercher suivant dans le widget de recherche de l'\\xE9diteur.\",\"Rechercher/remplacer\",\"Rechercher\",\"Rechercher\",\"Correspondance pr\\xE9c\\xE9dente\",\"Correspondance suivante\",\"Rechercher dans la s\\xE9lection\",\"Fermer\",\"Remplacer\",\"Remplacer\",\"Remplacer\",\"Tout remplacer\",\"Activer/d\\xE9sactiver le remplacement\",\"Seuls les {0} premiers r\\xE9sultats sont mis en \\xE9vidence, mais toutes les op\\xE9rations de recherche fonctionnent sur l\\u2019ensemble du texte.\",\"{0} sur {1}\",\"Aucun r\\xE9sultat\",\"{0} trouv\\xE9(s)\",\"{0} trouv\\xE9 pour '{1}'\",\"{0} trouv\\xE9 pour '{1}', sur {2}\",\"{0} trouv\\xE9 pour '{1}'\",\"La combinaison Ctrl+Entr\\xE9e permet d\\xE9sormais d'ajouter un saut de ligne au lieu de tout remplacer. Vous pouvez modifier le raccourci clavier de editor.action.replaceAll pour red\\xE9finir le comportement.\"],\"vs/editor/contrib/folding/browser/folding\":[\"D\\xE9plier\",\"D\\xE9plier de mani\\xE8re r\\xE9cursive\",\"Plier\",\"Activer/d\\xE9sactiver le pliage\",\"Plier de mani\\xE8re r\\xE9cursive\",\"Replier tous les commentaires de bloc\",\"Replier toutes les r\\xE9gions\",\"D\\xE9plier toutes les r\\xE9gions\",\"Plier toutes les r\\xE9gions sauf celles s\\xE9lectionn\\xE9es\",\"D\\xE9plier toutes les r\\xE9gions sauf celles s\\xE9lectionn\\xE9es\",\"Plier tout\",\"D\\xE9plier tout\",\"Atteindre le pli parent\",\"Acc\\xE9der \\xE0 la plage de pliage pr\\xE9c\\xE9dente\",\"Acc\\xE9der \\xE0 la plage de pliage suivante\",\"Cr\\xE9er une plage de pliage \\xE0 partir de la s\\xE9lection\",\"Supprimer les plages de pliage manuelles\",\"Niveau de pliage {0}\"],\"vs/editor/contrib/folding/browser/foldingDecorations\":[\"Couleur d'arri\\xE8re-plan des gammes pli\\xE9es. La couleur ne doit pas \\xEAtre opaque pour ne pas cacher les d\\xE9corations sous-jacentes.\",\"Couleur du contr\\xF4le de pliage dans la marge de l'\\xE9diteur.\",\"Ic\\xF4ne des plages d\\xE9velopp\\xE9es dans la marge de glyphes de l'\\xE9diteur.\",\"Ic\\xF4ne des plages r\\xE9duites dans la marge de glyphes de l'\\xE9diteur.\",\"Ic\\xF4ne pour les plages r\\xE9duites manuellement dans la marge de glyphe de l\\u2019\\xE9diteur.\",\"Ic\\xF4ne pour les plages d\\xE9velopp\\xE9es manuellement dans la marge de glyphe de l\\u2019\\xE9diteur.\"],\"vs/editor/contrib/fontZoom/browser/fontZoom\":[\"Agrandissement de l'\\xE9diteur de polices de caract\\xE8res\",\"R\\xE9tr\\xE9cissement de l'\\xE9diteur de polices de caract\\xE8res\",\"Remise \\xE0 niveau du zoom de l'\\xE9diteur de polices de caract\\xE8res\"],\"vs/editor/contrib/format/browser/format\":[\"1\\xA0modification de format effectu\\xE9e \\xE0 la ligne {0}\",\"{0} modifications de format effectu\\xE9es \\xE0 la ligne {1}\",\"1\\xA0modification de format effectu\\xE9e entre les lignes {0} et {1}\",\"{0} modifications de format effectu\\xE9es entre les lignes {1} et {2}\"],\"vs/editor/contrib/format/browser/formatActions\":[\"Mettre le document en forme\",\"Mettre la s\\xE9lection en forme\"],\"vs/editor/contrib/gotoError/browser/gotoError\":[\"Aller au probl\\xE8me suivant (Erreur, Avertissement, Info)\",\"Ic\\xF4ne du prochain marqueur goto.\",\"Aller au probl\\xE8me pr\\xE9c\\xE9dent (Erreur, Avertissement, Info)\",\"Ic\\xF4ne du pr\\xE9c\\xE9dent marqueur goto.\",\"Aller au probl\\xE8me suivant dans Fichiers (Erreur, Avertissement, Info)\",\"&&Probl\\xE8me suivant\",\"Aller au probl\\xE8me pr\\xE9c\\xE9dent dans Fichiers (Erreur, Avertissement, Info)\",\"&&Probl\\xE8me pr\\xE9c\\xE9dent\"],\"vs/editor/contrib/gotoError/browser/gotoErrorWidget\":[\"Erreur\",\"Avertissement\",\"Info\",\"Conseil\",\"{0} \\xE0 {1}. \",\"{0}\\xA0probl\\xE8mes sur\\xA0{1}\",\"{0}\\xA0probl\\xE8me(s) sur {1}\",\"Couleur d'erreur du widget de navigation dans les marqueurs de l'\\xE9diteur.\",\"Arri\\xE8re-plan du titre d\\u2019erreur du widget de navigation dans les marqueurs de l\\u2019\\xE9diteur.\",\"Couleur d'avertissement du widget de navigation dans les marqueurs de l'\\xE9diteur.\",\"Arri\\xE8re-plan du titre d\\u2019erreur du widget de navigation dans les marqueurs de l\\u2019\\xE9diteur.\",\"Couleur d\\u2019information du widget de navigation du marqueur de l'\\xE9diteur.\",\"Arri\\xE8re-plan du titre des informations du widget de navigation dans les marqueurs de l\\u2019\\xE9diteur.\",\"Arri\\xE8re-plan du widget de navigation dans les marqueurs de l'\\xE9diteur.\"],\"vs/editor/contrib/gotoSymbol/browser/goToCommands\":[\"Aper\\xE7u\",\"D\\xE9finitions\",\"D\\xE9finition introuvable pour '{0}'\",\"D\\xE9finition introuvable\",\"Atteindre la d\\xE9finition\",\"Atteindre la &&d\\xE9finition\",\"Ouvrir la d\\xE9finition sur le c\\xF4t\\xE9\",\"Aper\\xE7u de la d\\xE9finition\",\"D\\xE9clarations\",\"Aucune d\\xE9claration pour '{0}'\",\"Aucune d\\xE9claration\",\"Acc\\xE9der \\xE0 la d\\xE9claration\",\"Atteindre la &&d\\xE9claration\",\"Aucune d\\xE9claration pour '{0}'\",\"Aucune d\\xE9claration\",\"Aper\\xE7u de la d\\xE9claration\",\"D\\xE9finitions de type\",\"D\\xE9finition de type introuvable pour '{0}'\",\"D\\xE9finition de type introuvable\",\"Atteindre la d\\xE9finition du type\",\"Acc\\xE9der \\xE0 la d\\xE9finition de &&type\",\"Aper\\xE7u de la d\\xE9finition du type\",\"Impl\\xE9mentations\",\"Impl\\xE9mentation introuvable pour '{0}'\",\"Impl\\xE9mentation introuvable\",\"Atteindre les impl\\xE9mentations\",\"Atteindre les &&impl\\xE9mentations\",\"Aper\\xE7u des impl\\xE9mentations\",\"Aucune r\\xE9f\\xE9rence pour '{0}'\",\"Aucune r\\xE9f\\xE9rence\",\"Atteindre les r\\xE9f\\xE9rences\",\"Atteindre les &&r\\xE9f\\xE9rences\",\"R\\xE9f\\xE9rences\",\"Aper\\xE7u des r\\xE9f\\xE9rences\",\"R\\xE9f\\xE9rences\",\"Atteindre un symbole\",\"Emplacements\",\"Aucun r\\xE9sultat pour \\xAB\\xA0{0}\\xA0\\xBB\",\"R\\xE9f\\xE9rences\"],\"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\":[\"Cliquez pour afficher {0}\\xA0d\\xE9finitions.\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesController\":[\"Indique si l'aper\\xE7u des r\\xE9f\\xE9rences est visible, par exemple via 'Avoir un aper\\xE7u des r\\xE9f\\xE9rences' ou 'Faire un peek de la d\\xE9finition'\",\"Chargement en cours...\",\"{0} ({1})\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\":[\"{0} r\\xE9f\\xE9rences\",\"{0} r\\xE9f\\xE9rence\",\"R\\xE9f\\xE9rences\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\":[\"aper\\xE7u non disponible\",\"Aucun r\\xE9sultat\",\"R\\xE9f\\xE9rences\"],\"vs/editor/contrib/gotoSymbol/browser/referencesModel\":[\"dans {0} \\xE0 la ligne {1} \\xE0 la colonne {2}\",\"{0}dans {1} \\xE0 la ligne {2} \\xE0 la colonne {3}\",\"1 symbole dans {0}, chemin complet {1}\",\"{0} symboles dans {1}, chemin complet {2}\",\"R\\xE9sultats introuvables\",\"1\\xA0symbole dans {0}\",\"{0}\\xA0symboles dans {1}\",\"{0}\\xA0symboles dans {1} fichiers\"],\"vs/editor/contrib/gotoSymbol/browser/symbolNavigation\":[\"Indique s'il existe des emplacements de symboles que vous pouvez parcourir \\xE0 l'aide du clavier uniquement.\",\"Symbole {0} sur {1}, {2} pour le suivant\",\"Symbole {0} sur {1}\"],\"vs/editor/contrib/hover/browser/hover\":[\"Afficher ou focus sur pointer\",\"Afficher le pointeur de l'aper\\xE7u de d\\xE9finition\",\"Faire d\\xE9filer le pointage vers le haut\",\"Faire d\\xE9filer le pointage vers le bas\",\"Faire d\\xE9filer vers la gauche au pointage\",\"Faire d\\xE9filer le pointage vers la droite\",\"Pointer vers le haut de la page\",\"Pointer vers le bas de la page\",\"Atteindre le pointage sup\\xE9rieur\",\"Pointer vers le bas\"],\"vs/editor/contrib/hover/browser/markdownHoverParticipant\":[\"Chargement en cours...\",\"Rendu suspendu pour une longue ligne pour des raisons de performances. Cela peut \\xEAtre configur\\xE9 via 'editor.stopRenderingLineAfter'.\",\"La tokenisation des lignes longues est ignor\\xE9e pour des raisons de performances. Cela peut \\xEAtre configur\\xE9e via 'editor.maxTokenizationLineLength'.\"],\"vs/editor/contrib/hover/browser/markerHoverParticipant\":[\"Voir le probl\\xE8me\",\"Aucune solution disponible dans l'imm\\xE9diat\",\"Recherche de correctifs rapides...\",\"Aucune solution disponible dans l'imm\\xE9diat\",\"Correction rapide...\"],\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\":[\"Remplacer par la valeur pr\\xE9c\\xE9dente\",\"Remplacer par la valeur suivante\"],\"vs/editor/contrib/indentation/browser/indentation\":[\"Convertir les retraits en espaces\",\"Convertir les retraits en tabulations\",\"Taille des tabulations configur\\xE9e\",\"Taille d\\u2019onglet par d\\xE9faut\",\"Taille actuelle de l\\u2019onglet\",\"S\\xE9lectionner la taille des tabulations pour le fichier actuel\",\"Mettre en retrait avec des tabulations\",\"Mettre en retrait avec des espaces\",\"Modifier la taille d\\u2019affichage de l\\u2019onglet\",\"D\\xE9tecter la mise en retrait \\xE0 partir du contenu\",\"Remettre en retrait les lignes\",\"R\\xE9indenter les lignes s\\xE9lectionn\\xE9es\"],\"vs/editor/contrib/inlayHints/browser/inlayHintsHover\":[\"Double-cliquer pour ins\\xE9rer\",\"cmd + clic\",\"ctrl + clic\",\"option + clic\",\"alt + clic\",\"Acc\\xE9dez \\xE0 D\\xE9finition ({0}), cliquez avec le bouton droit pour en savoir plus.\",\"Acc\\xE9der \\xE0 D\\xE9finition ({0})\",\"Ex\\xE9cuter la commande\"],\"vs/editor/contrib/inlineCompletions/browser/commands\":[\"Afficher la suggestion en ligne suivante\",\"Afficher la suggestion en ligne pr\\xE9c\\xE9dente\",\"D\\xE9clencher la suggestion en ligne\",\"Accepter le mot suivant de la suggestion inline\",\"Accepter le mot\",\"Accepter la ligne suivante d\\u2019une suggestion en ligne\",\"Accepter la ligne\",\"Accepter la suggestion inline\",\"Accepter\",\"Masquer la suggestion inlined\",\"Toujours afficher la barre d\\u2019outils\"],\"vs/editor/contrib/inlineCompletions/browser/hoverParticipant\":[\"Suggestion :\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\":[\"Indique si une suggestion en ligne est visible\",\"Indique si la suggestion en ligne commence par un espace blanc\",\"Indique si la suggestion incluse commence par un espace blanc inf\\xE9rieur \\xE0 ce qui serait ins\\xE9r\\xE9 par l\\u2019onglet.\",\"Indique si les suggestions doivent \\xEAtre supprim\\xE9es pour la suggestion actuelle\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\":[\"Inspect this in the accessible view ({0})\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\":[\"Ic\\xF4ne d'affichage du prochain conseil de param\\xE8tre.\",\"Ic\\xF4ne d'affichage du pr\\xE9c\\xE9dent conseil de param\\xE8tre.\",\"{0} ({1})\",\"Pr\\xE9c\\xE9dent\",\"Suivant\"],\"vs/editor/contrib/lineSelection/browser/lineSelection\":[\"D\\xE9velopper la s\\xE9lection de ligne\"],\"vs/editor/contrib/linesOperations/browser/linesOperations\":[\"Copier la ligne en haut\",\"&&Copier la ligne en haut\",\"Copier la ligne en bas\",\"Co&&pier la ligne en bas\",\"Dupliquer la s\\xE9lection\",\"&&Dupliquer la s\\xE9lection\",\"D\\xE9placer la ligne vers le haut\",\"D\\xE9placer la ligne &&vers le haut\",\"D\\xE9placer la ligne vers le bas\",\"D\\xE9placer la &&ligne vers le bas\",\"Trier les lignes dans l'ordre croissant\",\"Trier les lignes dans l'ordre d\\xE9croissant\",\"Supprimer les lignes dupliqu\\xE9es\",\"D\\xE9couper l'espace blanc de fin\",\"Supprimer la ligne\",\"Mettre en retrait la ligne\",\"Ajouter un retrait n\\xE9gatif \\xE0 la ligne\",\"Ins\\xE9rer une ligne au-dessus\",\"Ins\\xE9rer une ligne sous\",\"Supprimer tout ce qui est \\xE0 gauche\",\"Supprimer tout ce qui est \\xE0 droite\",\"Joindre les lignes\",\"Transposer les caract\\xE8res autour du curseur\",\"Transformer en majuscule\",\"Transformer en minuscule\",'Appliquer la casse \"1re lettre des mots en majuscule\"',\"Transformer en snake case\",\"Transformer en casse mixte\",\"Transformer en kebab case\"],\"vs/editor/contrib/linkedEditing/browser/linkedEditing\":[\"D\\xE9marrer la modification li\\xE9e\",\"Couleur d'arri\\xE8re-plan quand l'\\xE9diteur renomme automatiquement le type.\"],\"vs/editor/contrib/links/browser/links\":[\"\\xC9chec de l'ouverture de ce lien, car il n'est pas bien form\\xE9\\xA0: {0}\",\"\\xC9chec de l'ouverture de ce lien, car sa cible est manquante.\",\"Ex\\xE9cuter la commande\",\"suivre le lien\",\"cmd + clic\",\"ctrl + clic\",\"option + clic\",\"alt + clic\",\"Ex\\xE9cuter la commande {0}\",\"Ouvrir le lien\"],\"vs/editor/contrib/message/browser/messageController\":[\"Indique si l'\\xE9diteur affiche un message inline\"],\"vs/editor/contrib/multicursor/browser/multicursor\":[\"Curseur ajout\\xE9\\xA0: {0}\",\"Curseurs ajout\\xE9s\\xA0: {0}\",\"Ajouter un curseur au-dessus\",\"&&Ajouter un curseur au-dessus\",\"Ajouter un curseur en dessous\",\"Aj&&outer un curseur en dessous\",\"Ajouter des curseurs \\xE0 la fin des lignes\",\"Ajouter des c&&urseurs \\xE0 la fin des lignes\",\"Ajouter des curseurs en bas\",\"Ajouter des curseurs en haut\",\"Ajouter la s\\xE9lection \\xE0 la correspondance de recherche suivante\",\"Ajouter l'occurrence suiva&&nte\",\"Ajouter la s\\xE9lection \\xE0 la correspondance de recherche pr\\xE9c\\xE9dente\",\"Ajouter l'occurrence p&&r\\xE9c\\xE9dente\",\"D\\xE9placer la derni\\xE8re s\\xE9lection vers la correspondance de recherche suivante\",\"D\\xE9placer la derni\\xE8re s\\xE9lection \\xE0 la correspondance de recherche pr\\xE9c\\xE9dente\",\"S\\xE9lectionner toutes les occurrences des correspondances de la recherche\",\"S\\xE9lectionner toutes les &&occurrences\",\"Modifier toutes les occurrences\",\"Focus sur le curseur suivant\",\"Concentre le curseur suivant\",\"Focus sur le curseur pr\\xE9c\\xE9dent\",\"Concentre le curseur pr\\xE9c\\xE9dent\"],\"vs/editor/contrib/parameterHints/browser/parameterHints\":[\"Indicateurs des param\\xE8tres Trigger\"],\"vs/editor/contrib/parameterHints/browser/parameterHintsWidget\":[\"Ic\\xF4ne d'affichage du prochain conseil de param\\xE8tre.\",\"Ic\\xF4ne d'affichage du pr\\xE9c\\xE9dent conseil de param\\xE8tre.\",\"{0}, conseil\",\"Couleur de premier plan de l\\u2019\\xE9l\\xE9ment actif dans l\\u2019indicateur de param\\xE8tre.\"],\"vs/editor/contrib/peekView/browser/peekView\":[\"Indique si l'\\xE9diteur de code actuel est int\\xE9gr\\xE9 \\xE0 l'aper\\xE7u\",\"Fermer\",\"Couleur d'arri\\xE8re-plan de la zone de titre de l'affichage d'aper\\xE7u.\",\"Couleur du titre de l'affichage d'aper\\xE7u.\",\"Couleur des informations sur le titre de l'affichage d'aper\\xE7u.\",\"Couleur des bordures et de la fl\\xE8che de l'affichage d'aper\\xE7u.\",\"Couleur d'arri\\xE8re-plan de la liste des r\\xE9sultats de l'affichage d'aper\\xE7u.\",\"Couleur de premier plan des noeuds de lignes dans la liste des r\\xE9sultats de l'affichage d'aper\\xE7u.\",\"Couleur de premier plan des noeuds de fichiers dans la liste des r\\xE9sultats de l'affichage d'aper\\xE7u.\",\"Couleur d'arri\\xE8re-plan de l'entr\\xE9e s\\xE9lectionn\\xE9e dans la liste des r\\xE9sultats de l'affichage d'aper\\xE7u.\",\"Couleur de premier plan de l'entr\\xE9e s\\xE9lectionn\\xE9e dans la liste des r\\xE9sultats de l'affichage d'aper\\xE7u.\",\"Couleur d'arri\\xE8re-plan de l'\\xE9diteur d'affichage d'aper\\xE7u.\",\"Couleur d'arri\\xE8re-plan de la bordure de l'\\xE9diteur d'affichage d'aper\\xE7u.\",\"Couleur d\\u2019arri\\xE8re-plan du d\\xE9filement r\\xE9manent dans l\\u2019\\xE9diteur d\\u2019affichage d\\u2019aper\\xE7u.\",\"Couleur de mise en surbrillance d'une correspondance dans la liste des r\\xE9sultats de l'affichage d'aper\\xE7u.\",\"Couleur de mise en surbrillance d'une correspondance dans l'\\xE9diteur de l'affichage d'aper\\xE7u.\",\"Bordure de mise en surbrillance d'une correspondance dans l'\\xE9diteur de l'affichage d'aper\\xE7u.\"],\"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\":[\"Ouvrez d'abord un \\xE9diteur de texte pour acc\\xE9der \\xE0 une ligne.\",\"Atteindre la ligne {0} et le caract\\xE8re {1}.\",\"Acc\\xE9dez \\xE0 la ligne {0}.\",\"Ligne actuelle\\xA0: {0}, caract\\xE8re\\xA0: {1}. Tapez un num\\xE9ro de ligne entre\\xA01 et\\xA0{2} auquel acc\\xE9der.\",\"Ligne actuelle\\xA0: {0}, caract\\xE8re\\xA0: {1}. Tapez un num\\xE9ro de ligne auquel acc\\xE9der.\"],\"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\":[\"Pour acc\\xE9der \\xE0 un symbole, ouvrez d'abord un \\xE9diteur de texte avec des informations de symbole.\",\"L'\\xE9diteur de texte actif ne fournit pas les informations de symbole.\",\"Aucun symbole d'\\xE9diteur correspondant\",\"Aucun symbole d'\\xE9diteur\",\"Ouvrir sur le c\\xF4t\\xE9\",\"Ouvrir en bas\",\"symboles ({0})\",\"propri\\xE9t\\xE9s ({0})\",\"m\\xE9thodes ({0})\",\"fonctions ({0})\",\"constructeurs ({0})\",\"variables ({0})\",\"classes ({0})\",\"structs ({0})\",\"\\xE9v\\xE9nements ({0})\",\"op\\xE9rateurs ({0})\",\"interfaces ({0})\",\"espaces de noms ({0})\",\"packages ({0})\",\"param\\xE8tres de type ({0})\",\"modules ({0})\",\"propri\\xE9t\\xE9s ({0})\",\"\\xE9num\\xE9rations ({0})\",\"membres d'\\xE9num\\xE9ration ({0})\",\"cha\\xEEnes ({0})\",\"fichiers ({0})\",\"tableaux ({0})\",\"nombres ({0})\",\"bool\\xE9ens ({0})\",\"objets ({0})\",\"cl\\xE9s ({0})\",\"champs ({0})\",\"constantes ({0})\"],\"vs/editor/contrib/readOnlyMessage/browser/contribution\":[\"Impossible de modifier dans l\\u2019entr\\xE9e en lecture seule\",\"Impossible de modifier dans l\\u2019\\xE9diteur en lecture seule\"],\"vs/editor/contrib/rename/browser/rename\":[\"Aucun r\\xE9sultat.\",\"Une erreur inconnue s'est produite lors de la r\\xE9solution de l'emplacement de renommage\",\"Renommage de '{0}' en '{1}'\",\"Changement du nom de {0} en {1}\",\"'{0}' renomm\\xE9 en '{1}'. R\\xE9capitulatif : {2}\",\"Le renommage n'a pas pu appliquer les modifications\",\"Le renommage n'a pas pu calculer les modifications\",\"Renommer le symbole\",\"Activer/d\\xE9sactiver la possibilit\\xE9 d'afficher un aper\\xE7u des changements avant le renommage\"],\"vs/editor/contrib/rename/browser/renameInputField\":[\"Indique si le widget de renommage d'entr\\xE9e est visible\",\"Renommez l'entr\\xE9e. Tapez le nouveau nom et appuyez sur Entr\\xE9e pour valider.\",\"{0} pour renommer, {1} pour afficher un aper\\xE7u\"],\"vs/editor/contrib/smartSelect/browser/smartSelect\":[\"\\xC9tendre la s\\xE9lection\",\"D\\xE9v&&elopper la s\\xE9lection\",\"R\\xE9duire la s\\xE9lection\",\"&&R\\xE9duire la s\\xE9lection\"],\"vs/editor/contrib/snippet/browser/snippetController2\":[\"Indique si l'\\xE9diteur est actualis\\xE9 en mode extrait\",\"Indique s'il existe un taquet de tabulation suivant en mode extrait\",\"Indique s'il existe un taquet de tabulation pr\\xE9c\\xE9dent en mode extrait\",\"Acc\\xE9der \\xE0 l\\u2019espace r\\xE9serv\\xE9 suivant...\"],\"vs/editor/contrib/snippet/browser/snippetVariables\":[\"Dimanche\",\"Lundi\",\"Mardi\",\"Mercredi\",\"Jeudi\",\"Vendredi\",\"Samedi\",\"Dim\",\"Lun\",\"Mar\",\"Mer\",\"Jeu\",\"Ven\",\"Sam\",\"Janvier\",\"F\\xE9vrier\",\"Mars\",\"Avril\",\"Mai\",\"Juin\",\"Juillet\",\"Ao\\xFBt\",\"Septembre\",\"Octobre\",\"Novembre\",\"D\\xE9cembre\",\"Jan\",\"F\\xE9v\",\"Mar\",\"Avr\",\"Mai\",\"Juin\",\"Jul\",\"Ao\\xFB\",\"Sept\",\"Oct\",\"Nov\",\"D\\xE9c\"],\"vs/editor/contrib/stickyScroll/browser/stickyScrollActions\":[\"Activer/d\\xE9sactiver le d\\xE9filement \\xE9pingl\\xE9\",\"&&Activer/d\\xE9sactiver le d\\xE9filement \\xE9pingl\\xE9\",\"D\\xE9filement \\xE9pingl\\xE9\",\"&&D\\xE9filement \\xE9pingl\\xE9\",\"Focus sur le d\\xE9filement du pense-b\\xEAte\",\"&&Focus sur le d\\xE9filement du pense-b\\xEAte\",\"S\\xE9lectionner la ligne de d\\xE9filement du pense-b\\xEAte suivante\",\"S\\xE9lectionner la ligne de d\\xE9filement du pense-b\\xEAte pr\\xE9c\\xE9dente\",\"Atteindre la ligne de d\\xE9filement pense-b\\xEAte prioritaire\",\"S\\xE9lectionner l'\\xE9diteur\"],\"vs/editor/contrib/suggest/browser/suggest\":[\"Indique si une suggestion a le focus\",\"Indique si les d\\xE9tails des suggestions sont visibles\",\"Indique s'il existe plusieurs suggestions au choix\",\"Indique si l'insertion de la suggestion actuelle entra\\xEEne un changement ou si tout a d\\xE9j\\xE0 \\xE9t\\xE9 tap\\xE9\",\"Indique si les suggestions sont ins\\xE9r\\xE9es quand vous appuyez sur Entr\\xE9e\",\"Indique si la suggestion actuelle a un comportement d'insertion et de remplacement\",\"Indique si le comportement par d\\xE9faut consiste \\xE0 ins\\xE9rer ou \\xE0 remplacer\",\"Indique si la suggestion actuelle prend en charge la r\\xE9solution des d\\xE9tails suppl\\xE9mentaires\"],\"vs/editor/contrib/suggest/browser/suggestController\":[\"L'acceptation de '{0}' a entra\\xEEn\\xE9 {1}\\xA0modifications suppl\\xE9mentaires\",\"Suggestions pour Trigger\",\"Ins\\xE9rer\",\"Ins\\xE9rer\",\"Remplacer\",\"Remplacer\",\"Ins\\xE9rer\",\"afficher moins\",\"afficher plus\",\"R\\xE9initialiser la taille du widget de suggestion\"],\"vs/editor/contrib/suggest/browser/suggestWidget\":[\"Couleur d'arri\\xE8re-plan du widget de suggestion.\",\"Couleur de bordure du widget de suggestion.\",\"Couleur de premier plan du widget de suggestion.\",\"Couleur de premier plan de l\\u2019entr\\xE9e s\\xE9lectionn\\xE9e dans le widget de suggestion.\",\"Couleur de premier plan de l\\u2019ic\\xF4ne de l\\u2019entr\\xE9e s\\xE9lectionn\\xE9e dans le widget de suggestion.\",\"Couleur d'arri\\xE8re-plan de l'entr\\xE9e s\\xE9lectionn\\xE9e dans le widget de suggestion.\",\"Couleur de la surbrillance des correspondances dans le widget de suggestion.\",\"Couleur des mises en surbrillance dans le widget de suggestion lorsqu\\u2019un \\xE9l\\xE9ment a le focus.\",\"Couleur de premier plan du statut du widget de suggestion.\",\"Chargement en cours...\",\"Pas de suggestions.\",\"Sugg\\xE9rer\",\"{0} {1}, {2}\",\"{0} {1}\",\"{0}, {1}\",\"{0}, documents\\xA0: {1}\"],\"vs/editor/contrib/suggest/browser/suggestWidgetDetails\":[\"Fermer\",\"Chargement en cours...\"],\"vs/editor/contrib/suggest/browser/suggestWidgetRenderer\":[\"Ic\\xF4ne d'affichage d'informations suppl\\xE9mentaires dans le widget de suggestion.\",\"Lire la suite\"],\"vs/editor/contrib/suggest/browser/suggestWidgetStatus\":[\"{0} ({1})\"],\"vs/editor/contrib/symbolIcons/browser/symbolIcons\":[\"Couleur de premier plan des symboles de tableau. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles bool\\xE9ens. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de classe. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de couleur. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan pour les symboles de constante. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de constructeur. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles d'\\xE9num\\xE9rateur. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de membre d'\\xE9num\\xE9rateur. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles d'\\xE9v\\xE9nement. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de champ. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de fichier. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de dossier. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de fonction. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles d'interface. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de cl\\xE9. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de mot cl\\xE9. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de m\\xE9thode. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de module. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles d'espace de noms. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles null. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de nombre. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles d'objet. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles d'op\\xE9rateur. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de package. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de propri\\xE9t\\xE9. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de r\\xE9f\\xE9rence. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles d'extrait de code. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de cha\\xEEne. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de struct. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de texte. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de param\\xE8tre de type. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles d'unit\\xE9. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\",\"Couleur de premier plan des symboles de variable. Ces symboles apparaissent dans le plan, la barre de navigation et le widget de suggestion.\"],\"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\":[\"Activer/d\\xE9sactiver l'utilisation de la touche Tab pour d\\xE9placer le focus\",\"Appuyer sur Tab d\\xE9placera le focus vers le prochain \\xE9l\\xE9ment pouvant \\xEAtre d\\xE9sign\\xE9 comme \\xE9l\\xE9ment actif\",\"Appuyer sur Tab ins\\xE9rera le caract\\xE8re de tabulation\"],\"vs/editor/contrib/tokenization/browser/tokenization\":[\"D\\xE9veloppeur\\xA0: forcer la retokenisation\"],\"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\":[\"Ic\\xF4ne affich\\xE9e avec un message d'avertissement dans l'\\xE9diteur d'extensions.\",\"Ce document contient de nombreux caract\\xE8res Unicode ASCII non basiques.\",\"Ce document contient de nombreux caract\\xE8res Unicode ambigus.\",\"Ce document contient de nombreux caract\\xE8res Unicode invisibles.\",\"Le caract\\xE8re {0} peut \\xEAtre confondu avec le caract\\xE8re ASCII {1}, qui est plus courant dans le code source.\",\"Le caract\\xE8re {0} peut \\xEAtre confus avec le caract\\xE8re {1}, ce qui est plus courant dans le code source.\",\"Le caract\\xE8re {0} est invisible.\",\"Le caract\\xE8re {0} n\\u2019est pas un caract\\xE8re ASCII de base.\",\"Ajuster les param\\xE8tres\",\"D\\xE9sactiver la mise en surbrillance dans les commentaires\",\"D\\xE9sactiver la mise en surbrillance des caract\\xE8res dans les commentaires\",\"D\\xE9sactiver la mise en surbrillance dans les cha\\xEEnes\",\"D\\xE9sactiver la mise en surbrillance des caract\\xE8res dans les cha\\xEEnes\",\"D\\xE9sactiver la mise en surbrillance ambigu\\xEB\",\"D\\xE9sactiver la mise en surbrillance des caract\\xE8res ambigus\",\"D\\xE9sactiver le surlignage invisible\",\"D\\xE9sactiver la mise en surbrillance des caract\\xE8res invisibles\",\"D\\xE9sactiver la mise en surbrillance non ASCII\",\"D\\xE9sactiver la mise en surbrillance des caract\\xE8res ASCII non de base\",\"Afficher les options d\\u2019exclusion\",\"Exclure la mise en surbrillance des {0} (caract\\xE8re invisible)\",\"Exclure {0} de la mise en surbrillance\",'Autoriser les caract\\xE8res Unicode plus courants dans le langage \"{0}\"',\"Configurer les options de surlignage Unicode\"],\"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\":[\"Marques de fin de ligne inhabituelles\",\"Marques de fin de ligne inhabituelles d\\xE9tect\\xE9es\",\"Le fichier \\xAB\\xA0{0}\\xA0\\xBBcontient un ou plusieurs caract\\xE8res de fin de ligne inhabituels, par exemple le s\\xE9parateur de ligne (LS) ou le s\\xE9parateur de paragraphe (PS).\\r\\n\\r\\nIl est recommand\\xE9 de les supprimer du fichier. Vous pouvez configurer ce comportement par le biais de `editor.unusualLineTerminators`.\",\"&&Supprimer les marques de fin de ligne inhabituelles\",\"Ignorer\"],\"vs/editor/contrib/wordHighlighter/browser/highlightDecorations\":[\"Couleur d'arri\\xE8re-plan d'un symbole pendant l'acc\\xE8s en lecture, comme la lecture d'une variable. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur d'arri\\xE8re-plan d'un symbole pendant l'acc\\xE8s en \\xE9criture, comme l'\\xE9criture d'une variable. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur d\\u2019arri\\xE8re-plan d\\u2019une occurrence textuelle d\\u2019un symbole. La couleur ne doit pas \\xEAtre opaque afin de ne pas masquer les d\\xE9corations sous-jacentes.\",\"Couleur de bordure d'un symbole durant l'acc\\xE8s en lecture, par exemple la lecture d'une variable.\",\"Couleur de bordure d'un symbole durant l'acc\\xE8s en \\xE9criture, par exemple l'\\xE9criture dans une variable.\",\"Couleur de bordure d\\u2019une occurrence textuelle pour un symbole.\",\"Couleur de marqueur de la r\\xE8gle d'aper\\xE7u pour la mise en surbrillance des symboles. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur de marqueur de la r\\xE8gle d'aper\\xE7u pour la mise en surbrillance des symboles d'acc\\xE8s en \\xE9criture. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur de marqueur de r\\xE8gle d\\u2019aper\\xE7u d\\u2019une occurrence textuelle pour un symbole. La couleur ne doit pas \\xEAtre opaque afin de ne pas masquer les d\\xE9corations sous-jacentes.\"],\"vs/editor/contrib/wordHighlighter/browser/wordHighlighter\":[\"Aller \\xE0 la prochaine mise en \\xE9vidence de symbole\",\"Aller \\xE0 la mise en \\xE9vidence de symbole pr\\xE9c\\xE9dente\",\"D\\xE9clencher la mise en \\xE9vidence de symbole\"],\"vs/editor/contrib/wordOperations/browser/wordOperations\":[\"Supprimer le mot\"],\"vs/platform/action/common/actionCommonCategories\":[\"Afficher\",\"Aide\",\"Test\",\"fichier\",\"Pr\\xE9f\\xE9rences\",\"D\\xE9veloppeur\"],\"vs/platform/actionWidget/browser/actionList\":[\"{0} \\xE0 appliquer, {1} \\xE0 afficher un aper\\xE7u\",\"{0} pour appliquer\",\"{0}, raison d\\xE9sactiv\\xE9e : {1}\",\"Widget d\\u2019action\"],\"vs/platform/actionWidget/browser/actionWidget\":[\"Background color for toggled action items in action bar.\",\"Indique si la liste des widgets d\\u2019action est visible\",\"Masquer le widget d\\u2019action\",\"S\\xE9lectionner l\\u2019action pr\\xE9c\\xE9dente\",\"S\\xE9lectionner l\\u2019action suivante\",\"Accepter l\\u2019action s\\xE9lectionn\\xE9e\",\"Aper\\xE7u de l\\u2019action s\\xE9lectionn\\xE9e\"],\"vs/platform/actions/browser/menuEntryActionViewItem\":[\"{0} ({1})\",\"{0} ({1})\",`{0}\\r\n[{1}] {2}`],\"vs/platform/actions/browser/toolbar\":[\"Masquer\",\"R\\xE9initialiser le menu\"],\"vs/platform/actions/common/menuService\":[\"Masquer \\xAB{0}\\xBB\"],\"vs/platform/audioCues/browser/audioCueService\":[\"Erreur sur la ligne\",\"Avertissement sur la ligne\",\"Zone pli\\xE9e sur la ligne\",\"Point d\\u2019arr\\xEAt sur ligne\",\"Suggestion inline sur la ligne\",\"Correctif rapide de terminal\",\"D\\xE9bogueur arr\\xEAt\\xE9 sur le point d\\u2019arr\\xEAt\",\"Aucun indicateur d\\u2019inlay sur la ligne\",\"T\\xE2che termin\\xE9e\",\"\\xC9chec de la t\\xE2che\",\"\\xC9chec de la commande de terminal\",\"Cloche de terminal\",\"Cellule de bloc-notes termin\\xE9e\",\"\\xC9chec de la cellule de bloc-notes\",\"Ligne de diffusion ins\\xE9r\\xE9e\",\"Ligne de diffusion supprim\\xE9e\",\"Ligne diff modifi\\xE9e\",\"Demande de conversation envoy\\xE9e\",\"R\\xE9ponse de conversation re\\xE7ue\",\"R\\xE9ponse de conversation en attente\"],\"vs/platform/configuration/common/configurationRegistry\":[\"Substitutions de configuration du langage par d\\xE9faut\",\"Configurez les param\\xE8tres \\xE0 remplacer pour le langage {0}.\",\"Configurez les param\\xE8tres d'\\xE9diteur \\xE0 remplacer pour un langage.\",\"Ce param\\xE8tre ne prend pas en charge la configuration par langage.\",\"Configurez les param\\xE8tres d'\\xE9diteur \\xE0 remplacer pour un langage.\",\"Ce param\\xE8tre ne prend pas en charge la configuration par langage.\",\"Impossible d'inscrire une propri\\xE9t\\xE9 vide\",\"Impossible d'inscrire '{0}'. Ceci correspond au mod\\xE8le de propri\\xE9t\\xE9 '\\\\\\\\[.*\\\\\\\\]$' permettant de d\\xE9crire les param\\xE8tres d'\\xE9diteur sp\\xE9cifiques \\xE0 un langage. Utilisez la contribution 'configurationDefaults'.\",\"Impossible d'inscrire '{0}'. Cette propri\\xE9t\\xE9 est d\\xE9j\\xE0 inscrite.\",\"Impossible d\\u2019inscrire '{0}'. Le {1} de strat\\xE9gie associ\\xE9 est d\\xE9j\\xE0 inscrit aupr\\xE8s de {2}.\"],\"vs/platform/contextkey/browser/contextKeyService\":[\"Commande qui retourne des informations sur les cl\\xE9s de contexte\"],\"vs/platform/contextkey/common/contextkey\":[\"Expression de cl\\xE9 de contexte vide\",\"Avez-vous oubli\\xE9 d\\u2019\\xE9crire une expression ? Vous pouvez \\xE9galement placer 'false' ou 'true' pour toujours donner la valeur false ou true, respectivement.\",\"'in' apr\\xE8s 'not'.\",\"parenth\\xE8se fermante ')'\",\"Jeton inattendu\",\"Avez-vous oubli\\xE9 de placer && ou || avant le jeton ?\",\"Fin d\\u2019expression inattendue\",\"Avez-vous oubli\\xE9 de placer une cl\\xE9 de contexte ?\",`Attendu : {0}\\r\nRe\\xE7u : '{1}'.`],\"vs/platform/contextkey/common/contextkeys\":[\"Indique si le syst\\xE8me d'exploitation est macOS\",\"Indique si le syst\\xE8me d'exploitation est Linux\",\"Indique si le syst\\xE8me d'exploitation est Windows\",\"Indique si la plateforme est un navigateur web\",\"Indique si le syst\\xE8me d'exploitation est macOS sur une plateforme qui n'est pas un navigateur\",\"Indique si le syst\\xE8me d\\u2019exploitation est Linux\",\"Indique si la plateforme est un navigateur web mobile\",\"Type de qualit\\xE9 de VS Code\",\"Indique si le focus clavier se trouve dans une zone d'entr\\xE9e\"],\"vs/platform/contextkey/common/scanner\":[\"Voulez-vous dire {0}?\",\"Voulez-vous dire {0} ou {1}?\",\"Voulez-vous dire {0}, {1} ou {2}?\",\"Avez-vous oubli\\xE9 d\\u2019ouvrir ou de fermer le devis ?\",\"Avez-vous oubli\\xE9 d\\u2019\\xE9chapper le caract\\xE8re \\xAB / \\xBB (barre oblique) ? Placez deux barre obliques inverses avant d\\u2019y \\xE9chapper, par ex., \\xAB \\\\\\\\/ \\xBB.\"],\"vs/platform/history/browser/contextScopedHistoryWidget\":[\"Indique si les suggestions sont visibles\"],\"vs/platform/keybinding/common/abstractKeybindingService\":[\"Touche ({0}) utilis\\xE9e. En attente d'une seconde touche...\",\"({0}) a \\xE9t\\xE9 enfonc\\xE9. En attente de la touche suivante de la pression...\",\"La combinaison de touches ({0}, {1}) n\\u2019est pas une commande.\",\"La combinaison de touches ({0}, {1}) n\\u2019est pas une commande.\"],\"vs/platform/list/browser/listService\":[\"Banc d'essai\",\"Mappe vers 'Contr\\xF4le' dans Windows et Linux, et vers 'Commande' dans macOS.\",\"Mappe vers 'Alt' dans Windows et Linux, et vers 'Option' dans macOS.\",\"Le modificateur \\xE0 utiliser pour ajouter un \\xE9l\\xE9ment dans les arbres et listes pour une s\\xE9lection multiple avec la souris (par exemple dans l\\u2019Explorateur, les \\xE9diteurs ouverts et la vue scm). Les mouvements de la souris 'Ouvrir \\xE0 c\\xF4t\\xE9' (si pris en charge) s'adapteront tels qu\\u2019ils n'entrent pas en conflit avec le modificateur multiselect.\",\"Contr\\xF4le l'ouverture des \\xE9l\\xE9ments dans les arborescences et les listes \\xE0 l'aide de la souris (si cela est pris en charge). Notez que certaines arborescences et listes peuvent choisir d'ignorer ce param\\xE8tre, s'il est non applicable.\",\"Contr\\xF4le si les listes et les arborescences prennent en charge le d\\xE9filement horizontal dans le banc d'essai. Avertissement : L'activation de ce param\\xE8tre a un impact sur les performances.\",\"Contr\\xF4le si les clics dans la barre de d\\xE9filement page par page.\",\"Contr\\xF4le la mise en retrait de l'arborescence, en pixels.\",\"Contr\\xF4le si l'arborescence doit afficher les rep\\xE8res de mise en retrait.\",\"D\\xE9termine si les listes et les arborescences ont un d\\xE9filement fluide.\",\"Un multiplicateur \\xE0 utiliser sur les `deltaX` et `deltaY` des \\xE9v\\xE9nements de d\\xE9filement de roulette de souris.\",\"Multiplicateur de vitesse de d\\xE9filement quand vous appuyez sur 'Alt'.\",\"Mettez en surbrillance les \\xE9l\\xE9ments lors de la recherche. La navigation vers le haut et le bas traverse uniquement les \\xE9l\\xE9ments en surbrillance.\",\"Filtrez des \\xE9l\\xE9ments lors de la recherche.\",\"Contr\\xF4le le mode de recherche par d\\xE9faut pour les listes et les arborescences dans Workbench.\",\"La navigation au clavier Simple place le focus sur les \\xE9l\\xE9ments qui correspondent \\xE0 l'entr\\xE9e de clavier. La mise en correspondance est effectu\\xE9e sur les pr\\xE9fixes uniquement.\",\"La navigation de mise en surbrillance au clavier met en surbrillance les \\xE9l\\xE9ments qui correspondent \\xE0 l'entr\\xE9e de clavier. La navigation ult\\xE9rieure vers le haut ou vers le bas parcourt uniquement les \\xE9l\\xE9ments mis en surbrillance.\",\"La navigation au clavier Filtrer filtre et masque tous les \\xE9l\\xE9ments qui ne correspondent pas \\xE0 l'entr\\xE9e de clavier.\",\"Contr\\xF4le le style de navigation au clavier pour les listes et les arborescences dans le banc d'essai. Les options sont Simple, Mise en surbrillance et Filtrer.\",\"Utilisez 'workbench.list.defaultFindMode' et 'workbench.list.typeNavigationMode' \\xE0 la place.\",\"Utilisez la correspondance approximative lors de la recherche.\",\"Utilisez des correspondances contigu\\xEBs lors de la recherche.\",\"Contr\\xF4le le type de correspondance utilis\\xE9 lors de la recherche de listes et d\\u2019arborescences dans le banc d\\u2019essai.\",\"Contr\\xF4le la fa\\xE7on dont les dossiers de l'arborescence sont d\\xE9velopp\\xE9s quand vous cliquez sur les noms de dossiers. Notez que certaines arborescences et listes peuvent choisir d'ignorer ce param\\xE8tre, s'il est non applicable.\",\"Contr\\xF4le le fonctionnement de la navigation par type dans les listes et les arborescences du banc d\\u2019essai. Quand la valeur est 'trigger', la navigation de type commence une fois que la commande 'list.triggerTypeNavigation' est ex\\xE9cut\\xE9e.\"],\"vs/platform/markers/common/markers\":[\"Erreur\",\"Avertissement\",\"Info\"],\"vs/platform/quickinput/browser/commandsQuickAccess\":[\"r\\xE9cemment utilis\\xE9es\",\"utilis\\xE9s le plus souvent\",\"autres commandes\",\"{0}, {1}\",\"La commande \\xAB\\xA0{0}\\xA0\\xBB a entra\\xEEn\\xE9 une erreur\"],\"vs/platform/quickinput/browser/helpQuickAccess\":[\"{0}, {1}\"],\"vs/platform/quickinput/browser/quickInput\":[\"Pr\\xE9c\\xE9dent\",\"Appuyez sur 'Entr\\xE9e' pour confirmer votre saisie, ou sur '\\xC9chap' pour l'annuler\",\"{0}/{1}\",\"Taper pour affiner les r\\xE9sultats.\"],\"vs/platform/quickinput/browser/quickInputController\":[\"Toggle all checkboxes\",\"{0} Results\",\"{0} Selected\",\"OK\",\"Custom\",\"Back ({0})\",\"Back\"],\"vs/platform/quickinput/browser/quickInputList\":[\"Entr\\xE9e rapide\"],\"vs/platform/quickinput/browser/quickInputUtils\":[\"Cliquer pour ex\\xE9cuter la commande '{0}'\"],\"vs/platform/theme/common/colorRegistry\":[\"Couleur de premier plan globale. Cette couleur est utilis\\xE9e si elle n'est pas remplac\\xE9e par un composant.\",\"Premier plan globale pour les \\xE9l\\xE9ments d\\xE9sactiv\\xE9s. Cette couleur est utilis\\xE9e si elle n'est pas remplac\\xE9e par un composant.\",\"Couleur principale de premier plan pour les messages d'erreur. Cette couleur est utilis\\xE9e uniquement si elle n'est pas red\\xE9finie par un composant.\",\"Couleur de premier plan du texte descriptif fournissant des informations suppl\\xE9mentaires, par exemple pour un label.\",\"Couleur par d\\xE9faut des ic\\xF4nes du banc d'essai.\",\"Couleur de bordure globale des \\xE9l\\xE9ments ayant le focus. Cette couleur est utilis\\xE9e si elle n'est pas remplac\\xE9e par un composant.\",\"Bordure suppl\\xE9mentaire autour des \\xE9l\\xE9ments pour les s\\xE9parer des autres et obtenir un meilleur contraste.\",\"Bordure suppl\\xE9mentaire autour des \\xE9l\\xE9ments actifs pour les s\\xE9parer des autres et obtenir un meilleur contraste.\",\"La couleur d'arri\\xE8re-plan des s\\xE9lections de texte dans le banc d'essai (par ex., pour les champs d'entr\\xE9e ou les zones de texte). Notez que cette couleur ne s'applique pas aux s\\xE9lections dans l'\\xE9diteur et le terminal.\",\"Couleur pour les s\\xE9parateurs de texte.\",\"Couleur des liens dans le texte.\",\"Couleur de premier plan pour les liens dans le texte lorsqu'ils sont cliqu\\xE9s ou survol\\xE9s.\",\"Couleur des segments de texte pr\\xE9format\\xE9s.\",\"Couleur d'arri\\xE8re-plan des citations dans le texte.\",\"Couleur de bordure des citations dans le texte.\",\"Couleur d'arri\\xE8re-plan des blocs de code dans le texte.\",\"Couleur de l'ombre des widgets, comme rechercher/remplacer, au sein de l'\\xE9diteur.\",\"Couleur de bordure des widgets, comme rechercher/remplacer au sein de l'\\xE9diteur.\",\"Arri\\xE8re-plan de la zone d'entr\\xE9e.\",\"Premier plan de la zone d'entr\\xE9e.\",\"Bordure de la zone d'entr\\xE9e.\",\"Couleur de la bordure des options activ\\xE9es dans les champs d'entr\\xE9e.\",\"Couleur d'arri\\xE8re-plan des options activ\\xE9es dans les champs d'entr\\xE9e.\",\"Couleur de pointage d\\u2019arri\\xE8re-plan des options dans les champs d\\u2019entr\\xE9e.\",\"Couleur de premier plan des options activ\\xE9es dans les champs d'entr\\xE9e.\",\"Couleur de premier plan de la zone d'entr\\xE9e pour le texte d'espace r\\xE9serv\\xE9.\",\"Couleur d'arri\\xE8re-plan de la validation d'entr\\xE9e pour la gravit\\xE9 des informations.\",\"Couleur de premier plan de validation de saisie pour la s\\xE9v\\xE9rit\\xE9 Information.\",\"Couleur de bordure de la validation d'entr\\xE9e pour la gravit\\xE9 des informations.\",\"Couleur d'arri\\xE8re-plan de la validation d'entr\\xE9e pour la gravit\\xE9 de l'avertissement.\",\"Couleur de premier plan de la validation de la saisie pour la s\\xE9v\\xE9rit\\xE9 Avertissement.\",\"Couleur de bordure de la validation d'entr\\xE9e pour la gravit\\xE9 de l'avertissement.\",\"Couleur d'arri\\xE8re-plan de la validation d'entr\\xE9e pour la gravit\\xE9 de l'erreur.\",\"Couleur de premier plan de la validation de saisie pour la s\\xE9v\\xE9rit\\xE9 Erreur.\",\"Couleur de bordure de la validation d'entr\\xE9e pour la gravit\\xE9 de l'erreur. \",\"Arri\\xE8re-plan de la liste d\\xE9roulante.\",\"Arri\\xE8re-plan de la liste d\\xE9roulante.\",\"Premier plan de la liste d\\xE9roulante.\",\"Bordure de la liste d\\xE9roulante.\",\"Couleur de premier plan du bouton.\",\"Couleur du s\\xE9parateur de boutons.\",\"Couleur d'arri\\xE8re-plan du bouton.\",\"Couleur d'arri\\xE8re-plan du bouton pendant le pointage.\",\"Couleur de bordure du bouton.\",\"Couleur de premier plan du bouton secondaire.\",\"Couleur d'arri\\xE8re-plan du bouton secondaire.\",\"Couleur d'arri\\xE8re-plan du bouton secondaire au moment du pointage.\",\"Couleur de fond des badges. Les badges sont de courts libell\\xE9s d'information, ex. le nombre de r\\xE9sultats de recherche.\",\"Couleur des badges. Les badges sont de courts libell\\xE9s d'information, ex. le nombre de r\\xE9sultats de recherche.\",\"Ombre de la barre de d\\xE9filement pour indiquer que la vue d\\xE9file.\",\"Couleur de fond du curseur de la barre de d\\xE9filement.\",\"Couleur de fond du curseur de la barre de d\\xE9filement lors du survol.\",\"Couleur d\\u2019arri\\xE8re-plan de la barre de d\\xE9filement lorsqu'on clique dessus.\",\"Couleur de fond pour la barre de progression qui peut s'afficher lors d'op\\xE9rations longues.\",\"Couleur d'arri\\xE8re-plan du texte d'erreur dans l'\\xE9diteur. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les d\\xE9corations sous-jacentes.\",\"Couleur de premier plan de la ligne ondul\\xE9e marquant les erreurs dans l'\\xE9diteur.\",\"Si cette option est d\\xE9finie, couleur des doubles soulignements pour les erreurs dans l\\u2019\\xE9diteur.\",\"Couleur d'arri\\xE8re-plan du texte d'avertissement dans l'\\xE9diteur. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les d\\xE9corations sous-jacentes.\",\"Couleur de premier plan de la ligne ondul\\xE9e marquant les avertissements dans l'\\xE9diteur.\",\"Si cette option est d\\xE9finie, couleur des doubles soulignements pour les avertissements dans l\\u2019\\xE9diteur.\",\"Couleur d'arri\\xE8re-plan du texte d'information dans l'\\xE9diteur. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les d\\xE9corations sous-jacentes.\",\"Couleur de premier plan de la ligne ondul\\xE9e marquant les informations dans l'\\xE9diteur.\",\"Si cette option est d\\xE9finie, couleur des doubles soulignements pour les informations dans l\\u2019\\xE9diteur.\",\"Couleur de premier plan de la ligne ondul\\xE9e d'indication dans l'\\xE9diteur.\",\"Si cette option est d\\xE9finie, couleur des doubles soulignements pour les conseils dans l\\u2019\\xE9diteur.\",\"Couleur de bordure des fen\\xEAtres coulissantes.\",\"Couleur d'arri\\xE8re-plan de l'\\xE9diteur.\",\"Couleur de premier plan par d\\xE9faut de l'\\xE9diteur.\",\"Couleur d\\u2019arri\\xE8re-plan du d\\xE9filement pense-b\\xEAte pour l\\u2019\\xE9diteur\",\"Faire d\\xE9filer l\\u2019\\xE9cran sur la couleur d\\u2019arri\\xE8re-plan du pointage pour l\\u2019\\xE9diteur\",\"Couleur d'arri\\xE8re-plan des gadgets de l'\\xE9diteur tels que rechercher/remplacer.\",\"Couleur de premier plan des widgets de l'\\xE9diteur, notamment Rechercher/remplacer.\",\"Couleur de bordure des widgets de l'\\xE9diteur. La couleur est utilis\\xE9e uniquement si le widget choisit d'avoir une bordure et si la couleur n'est pas remplac\\xE9e par un widget.\",\"Couleur de bordure de la barre de redimensionnement des widgets de l'\\xE9diteur. La couleur est utilis\\xE9e uniquement si le widget choisit une bordure de redimensionnement et si la couleur n'est pas remplac\\xE9e par un widget.\",\"Couleur d'arri\\xE8re-plan du s\\xE9lecteur rapide. Le widget de s\\xE9lecteur rapide est le conteneur de s\\xE9lecteurs comme la palette de commandes.\",\"Couleur de premier plan du s\\xE9lecteur rapide. Le widget de s\\xE9lecteur rapide est le conteneur de s\\xE9lecteurs comme la palette de commandes.\",\"Couleur d'arri\\xE8re-plan du titre du s\\xE9lecteur rapide. Le widget de s\\xE9lecteur rapide est le conteneur de s\\xE9lecteurs comme la palette de commandes.\",\"Couleur du s\\xE9lecteur rapide pour les \\xE9tiquettes de regroupement.\",\"Couleur du s\\xE9lecteur rapide pour les bordures de regroupement.\",\"Couleur d\\u2019arri\\xE8re-plan d\\u2019\\xE9tiquette de combinaison de touches. L\\u2019\\xE9tiquette est utilis\\xE9e pour repr\\xE9senter un raccourci clavier.\",\"Couleur de premier plan d\\u2019\\xE9tiquette de combinaison de touches. L\\u2019\\xE9tiquette est utilis\\xE9e pour repr\\xE9senter un raccourci clavier.\",\"Couleur de bordure de la combinaison de touches. L\\u2019\\xE9tiquette est utilis\\xE9e pour repr\\xE9senter un raccourci clavier.\",\"Couleur de bordure du bas d\\u2019\\xE9tiquette de combinaison de touches. L\\u2019\\xE9tiquette est utilis\\xE9e pour repr\\xE9senter un raccourci clavier.\",\"Couleur de la s\\xE9lection de l'\\xE9diteur.\",\"Couleur du texte s\\xE9lectionn\\xE9 pour le contraste \\xE9lev\\xE9.\",\"Couleur de la s\\xE9lection dans un \\xE9diteur inactif. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur des r\\xE9gions dont le contenu est le m\\xEAme que celui de la s\\xE9lection. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur de bordure des r\\xE9gions dont le contenu est identique \\xE0 la s\\xE9lection.\",\"Couleur du r\\xE9sultat de recherche actif.\",\"Couleur des autres correspondances de recherche. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur de la plage limitant la recherche. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur de bordure du r\\xE9sultat de recherche actif.\",\"Couleur de bordure des autres r\\xE9sultats de recherche.\",\"Couleur de bordure de la plage limitant la recherche. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur des correspondances de requ\\xEAte de l'\\xE9diteur de recherche.\",\"Couleur de bordure des correspondances de requ\\xEAte de l'\\xE9diteur de recherche.\",\"Couleur du texte dans le message d\\u2019ach\\xE8vement de la viewlet de recherche.\",\"Surlignage sous le mot s\\xE9lectionn\\xE9 par pointage. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur d'arri\\xE8re-plan du pointage de l'\\xE9diteur.\",\"Couleur de premier plan du pointage de l'\\xE9diteur.\",\"Couleur de bordure du pointage de l'\\xE9diteur.\",\"Couleur d'arri\\xE8re-plan de la barre d'\\xE9tat du pointage de l'\\xE9diteur.\",\"Couleur des liens actifs.\",\"Couleur de premier plan des indicateurs inline\",\"Couleur d'arri\\xE8re-plan des indicateurs inline\",\"Couleur de premier plan des indicateurs inline pour les types\",\"Couleur d'arri\\xE8re-plan des indicateurs inline pour les types\",\"Couleur de premier plan des indicateurs inline pour les param\\xE8tres\",\"Couleur d'arri\\xE8re-plan des indicateurs inline pour les param\\xE8tres\",\"Couleur utilis\\xE9e pour l'ic\\xF4ne d'ampoule sugg\\xE9rant des actions.\",\"Couleur utilis\\xE9e pour l'ic\\xF4ne d'ampoule sugg\\xE9rant des actions de correction automatique.\",\"Couleur d'arri\\xE8re-plan du texte ins\\xE9r\\xE9. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur d'arri\\xE8re-plan du texte supprim\\xE9. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur d'arri\\xE8re-plan des lignes ins\\xE9r\\xE9es. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur d'arri\\xE8re-plan des lignes supprim\\xE9es. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur d\\u2019arri\\xE8re-plan de la marge o\\xF9 les lignes ont \\xE9t\\xE9 ins\\xE9r\\xE9es\",\"Couleur d\\u2019arri\\xE8re-plan de la marge o\\xF9 les lignes ont \\xE9t\\xE9 supprim\\xE9es\",\"Premier plan de la r\\xE8gle de vue d\\u2019ensemble des diff\\xE9rences pour le contenu ins\\xE9r\\xE9\",\"Premier plan de la r\\xE8gle de vue d\\u2019ensemble des diff\\xE9rences pour le contenu supprim\\xE9\",\"Couleur de contour du texte ins\\xE9r\\xE9.\",\"Couleur de contour du texte supprim\\xE9.\",\"Couleur de bordure entre les deux \\xE9diteurs de texte.\",\"Couleur du remplissage diagonal de l'\\xE9diteur de diff\\xE9rences. Le remplissage diagonal est utilis\\xE9 dans les vues de diff\\xE9rences c\\xF4te \\xE0 c\\xF4te.\",\"Couleur d\\u2019arri\\xE8re-plan des blocs inchang\\xE9s dans l\\u2019\\xE9diteur de diff\\xE9rences.\",\"Couleur de premier plan des blocs inchang\\xE9s dans l\\u2019\\xE9diteur de diff\\xE9rences.\",\"Couleur d\\u2019arri\\xE8re-plan du code inchang\\xE9 dans l\\u2019\\xE9diteur de diff\\xE9rences.\",\"Couleur d'arri\\xE8re-plan de la liste/l'arborescence pour l'\\xE9l\\xE9ment ayant le focus quand la liste/l'arborescence est active. Une liste/arborescence active peut \\xEAtre s\\xE9lectionn\\xE9e au clavier, elle ne l'est pas quand elle est inactive.\",\"Couleur de premier plan de la liste/l'arborescence pour l'\\xE9l\\xE9ment ayant le focus quand la liste/l'arborescence est active. Une liste/arborescence active peut \\xEAtre s\\xE9lectionn\\xE9e au clavier, elle ne l'est pas quand elle est inactive.\",\"Couleur de contour de la liste/l'arborescence pour l'\\xE9l\\xE9ment ayant le focus quand la liste/l'arborescence est active. Une liste/arborescence active a le focus clavier, contrairement \\xE0 une liste/arborescence inactive.\",\"Couleur de contour de liste/arborescence pour l\\u2019\\xE9l\\xE9ment cibl\\xE9 lorsque la liste/l\\u2019arborescence est active et s\\xE9lectionn\\xE9e. Une liste/arborescence active dispose d\\u2019un focus clavier, ce qui n\\u2019est pas le cas d\\u2019une arborescence inactive.\",\"Couleur d'arri\\xE8re-plan de la liste/l'arborescence de l'\\xE9l\\xE9ment s\\xE9lectionn\\xE9 quand la liste/l'arborescence est active. Une liste/arborescence active peut \\xEAtre s\\xE9lectionn\\xE9e au clavier, elle ne l'est pas quand elle est inactive.\",\"Couleur de premier plan de la liste/l'arborescence pour l'\\xE9l\\xE9ment s\\xE9lectionn\\xE9 quand la liste/l'arborescence est active. Une liste/arborescence active peut \\xEAtre s\\xE9lectionn\\xE9e au clavier, elle ne l'est pas quand elle est inactive.\",\"Couleur de premier plan de l\\u2019ic\\xF4ne Liste/l'arborescence pour l'\\xE9l\\xE9ment s\\xE9lectionn\\xE9 quand la liste/l'arborescence est active. Une liste/arborescence active peut \\xEAtre s\\xE9lectionn\\xE9e au clavier, elle ne l'est pas quand elle est inactive.\",\"Couleur d'arri\\xE8re-plan de la liste/l'arborescence pour l'\\xE9l\\xE9ment s\\xE9lectionn\\xE9 quand la liste/l'arborescence est inactive. Une liste/arborescence active peut \\xEAtre s\\xE9lectionn\\xE9e au clavier, elle ne l'est pas quand elle est inactive.\",\"Couleur de premier plan de la liste/l'arborescence pour l'\\xE9l\\xE9ment s\\xE9lectionn\\xE9 quand la liste/l'arborescence est inactive. Une liste/arborescence active peut \\xEAtre s\\xE9lectionn\\xE9e au clavier, elle ne l'est pas quand elle est inactive.\",\"Couleur de premier plan de l\\u2019ic\\xF4ne Liste/l'arborescence pour l'\\xE9l\\xE9ment s\\xE9lectionn\\xE9 quand la liste/l'arborescence est inactive. Une liste/arborescence active peut \\xEAtre s\\xE9lectionn\\xE9e au clavier, elle ne l'est pas quand elle est inactive.\",\"Couleur d'arri\\xE8re-plan de la liste/l'arborescence pour l'\\xE9l\\xE9ment ayant le focus quand la liste/l'arborescence est active. Une liste/arborescence active peut \\xEAtre s\\xE9lectionn\\xE9e au clavier (elle ne l'est pas quand elle est inactive).\",\"Couleur de contour de la liste/l'arborescence pour l'\\xE9l\\xE9ment ayant le focus quand la liste/l'arborescence est inactive. Une liste/arborescence active a le focus clavier, contrairement \\xE0 une liste/arborescence inactive.\",\"Arri\\xE8re-plan de la liste/l'arborescence pendant le pointage sur des \\xE9l\\xE9ments avec la souris.\",\"Premier plan de la liste/l'arborescence pendant le pointage sur des \\xE9l\\xE9ments avec la souris.\",\"Arri\\xE8re-plan de l'op\\xE9ration de glisser-d\\xE9placer dans une liste/arborescence pendant le d\\xE9placement d'\\xE9l\\xE9ments avec la souris.\",\"Couleur de premier plan dans la liste/l'arborescence pour la surbrillance des correspondances pendant la recherche dans une liste/arborescence.\",\"Couleur de premier plan de la liste ou l\\u2019arborescence pour la surbrillance des correspondances sur les \\xE9l\\xE9ments ayant le focus pendant la recherche dans une liste/arborescence.\",\"Couleur de premier plan de liste/arbre pour les \\xE9l\\xE9ments non valides, par exemple une racine non r\\xE9solue dans l\\u2019Explorateur.\",\"Couleur de premier plan des \\xE9l\\xE9ments de la liste contenant des erreurs.\",\"Couleur de premier plan des \\xE9l\\xE9ments de liste contenant des avertissements.\",\"Couleur d'arri\\xE8re-plan du widget de filtre de type dans les listes et les arborescences.\",\"Couleur de contour du widget de filtre de type dans les listes et les arborescences.\",\"Couleur de contour du widget de filtre de type dans les listes et les arborescences, en l'absence de correspondance.\",\"Appliquez une ombre \\xE0 la couleur du widget filtre de type dans les listes et les arborescences.\",\"Couleur d'arri\\xE8re-plan de la correspondance filtr\\xE9e.\",\"Couleur de bordure de la correspondance filtr\\xE9e.\",\"Couleur de trait de l'arborescence pour les rep\\xE8res de mise en retrait.\",\"Couleur de trait d\\u2019arborescence pour les rep\\xE8res de mise en retrait qui ne sont pas actifs.\",\"Couleur de la bordure du tableau entre les colonnes.\",\"Couleur d'arri\\xE8re-plan pour les lignes de tableau impaires.\",\"Couleur de premier plan de la liste/l'arborescence des \\xE9l\\xE9ments att\\xE9nu\\xE9s.\",\"Couleur de fond du widget Case \\xE0 cocher.\",\"Couleur d\\u2019arri\\xE8re-plan du widget de case \\xE0 cocher lorsque l\\u2019\\xE9l\\xE9ment dans lequel il se trouve est s\\xE9lectionn\\xE9.\",\"Couleur de premier plan du widget Case \\xE0 cocher.\",\"Couleur de bordure du widget Case \\xE0 cocher.\",\"Couleur de bordure du widget de case \\xE0 cocher lorsque l\\u2019\\xE9l\\xE9ment dans lequel il se trouve est s\\xE9lectionn\\xE9.\",\"Utilisez quickInputList.focusBackground \\xE0 la place\",\"Couleur de premier plan du s\\xE9lecteur rapide pour l\\u2019\\xE9l\\xE9ment ayant le focus.\",\"Couleur de premier plan de l\\u2019ic\\xF4ne du s\\xE9lecteur rapide pour l\\u2019\\xE9l\\xE9ment ayant le focus.\",\"Couleur d'arri\\xE8re-plan du s\\xE9lecteur rapide pour l'\\xE9l\\xE9ment ayant le focus.\",\"Couleur de bordure des menus.\",\"Couleur de premier plan des \\xE9l\\xE9ments de menu.\",\"Couleur d'arri\\xE8re-plan des \\xE9l\\xE9ments de menu.\",\"Couleur de premier plan de l'\\xE9l\\xE9ment de menu s\\xE9lectionn\\xE9 dans les menus.\",\"Couleur d'arri\\xE8re-plan de l'\\xE9l\\xE9ment de menu s\\xE9lectionn\\xE9 dans les menus.\",\"Couleur de bordure de l'\\xE9l\\xE9ment de menu s\\xE9lectionn\\xE9 dans les menus.\",\"Couleur d'un \\xE9l\\xE9ment de menu s\\xE9parateur dans les menus.\",\"Arri\\xE8re-plan de la barre d\\u2019outils lors du survol des actions \\xE0 l\\u2019aide de la souris\",\"Contour de la barre d\\u2019outils lors du survol des actions \\xE0 l\\u2019aide de la souris\",\"Arri\\xE8re-plan de la barre d\\u2019outils quand la souris est maintenue sur des actions\",\"Couleur d\\u2019arri\\xE8re-plan de mise en surbrillance d\\u2019un extrait tabstop.\",\"Couleur de bordure de mise en surbrillance d\\u2019un extrait tabstop.\",\"Couleur d\\u2019arri\\xE8re-plan de mise en surbrillance du tabstop final d\\u2019un extrait.\",\"Mettez en surbrillance la couleur de bordure du dernier taquet de tabulation d'un extrait de code.\",\"Couleur des \\xE9l\\xE9ments de navigation avec le focus.\",\"Couleur de fond des \\xE9l\\xE9ments de navigation.\",\"Couleur des \\xE9l\\xE9ments de navigation avec le focus.\",\"Couleur des \\xE9l\\xE9ments de navigation s\\xE9lectionn\\xE9s.\",\"Couleur de fond du s\\xE9lecteur d\\u2019\\xE9l\\xE9ment de navigation.\",\"Arri\\xE8re-plan d'en-t\\xEAte actuel dans les conflits de fusion inline. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Arri\\xE8re-plan de contenu actuel dans les conflits de fusion inline. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Arri\\xE8re-plan d'en-t\\xEAte entrant dans les conflits de fusion inline. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Arri\\xE8re-plan de contenu entrant dans les conflits de fusion inline. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Arri\\xE8re-plan d'en-t\\xEAte de l'anc\\xEAtre commun dans les conflits de fusion inline. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Arri\\xE8re-plan de contenu de l'anc\\xEAtre commun dans les conflits de fusion inline. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur de bordure des en-t\\xEAtes et du s\\xE9parateur dans les conflits de fusion inline.\",\"Premier plan de la r\\xE8gle d'aper\\xE7u actuelle pour les conflits de fusion inline.\",\"Premier plan de la r\\xE8gle d'aper\\xE7u entrante pour les conflits de fusion inline.\",\"Arri\\xE8re-plan de la r\\xE8gle d'aper\\xE7u de l'anc\\xEAtre commun dans les conflits de fusion inline.\",\"Couleur de marqueur de la r\\xE8gle d'aper\\xE7u pour rechercher les correspondances. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur de marqueur de la r\\xE8gle d'aper\\xE7u pour la mise en surbrillance des s\\xE9lections. La couleur ne doit pas \\xEAtre opaque pour ne pas masquer les ornements sous-jacents.\",\"Couleur de marqueur de la minimap pour les correspondances.\",\"Couleur de marqueur minimap pour les s\\xE9lections r\\xE9p\\xE9t\\xE9es de l\\u2019\\xE9diteur.\",\"Couleur de marqueur du minimap pour la s\\xE9lection de l'\\xE9diteur.\",\"Couleur de marqueur de minimap pour les erreurs.\",\"Couleur de marqueur de minimap pour les avertissements.\",\"Couleur d'arri\\xE8re-plan du minimap.\",\"Opacit\\xE9 des \\xE9l\\xE9ments de premier plan rendus dans la minimap. Par exemple, \\xAB #000000c0 \\xBB affiche les \\xE9l\\xE9ments avec une opacit\\xE9 de 75 %.\",\"Couleur d'arri\\xE8re-plan du curseur de minimap.\",\"Couleur d'arri\\xE8re-plan du curseur de minimap pendant le survol.\",\"Couleur d'arri\\xE8re-plan du curseur de minimap pendant un clic.\",\"Couleur utilis\\xE9e pour l'ic\\xF4ne d'erreur des probl\\xE8mes.\",\"Couleur utilis\\xE9e pour l'ic\\xF4ne d'avertissement des probl\\xE8mes.\",\"Couleur utilis\\xE9e pour l'ic\\xF4ne d'informations des probl\\xE8mes.\",\"Couleur de premier plan utilis\\xE9e dans les graphiques.\",\"Couleur utilis\\xE9e pour les lignes horizontales dans les graphiques.\",\"Couleur rouge utilis\\xE9e dans les visualisations de graphiques.\",\"Couleur bleue utilis\\xE9e dans les visualisations de graphiques.\",\"Couleur jaune utilis\\xE9e dans les visualisations de graphiques.\",\"Couleur orange utilis\\xE9e dans les visualisations de graphiques.\",\"Couleur verte utilis\\xE9e dans les visualisations de graphiques.\",\"Couleur violette utilis\\xE9e dans les visualisations de graphiques.\"],\"vs/platform/theme/common/iconRegistry\":[\"ID de la police \\xE0 utiliser. Si aucune valeur n'est d\\xE9finie, la police d\\xE9finie en premier est utilis\\xE9e.\",\"Caract\\xE8re de police associ\\xE9 \\xE0 la d\\xE9finition d'ic\\xF4ne.\",\"Ic\\xF4ne de l'action de fermeture dans les widgets.\",\"Ic\\xF4ne d'acc\\xE8s \\xE0 l'emplacement pr\\xE9c\\xE9dent de l'\\xE9diteur.\",\"Ic\\xF4ne d'acc\\xE8s \\xE0 l'emplacement suivant de l'\\xE9diteur.\"],\"vs/platform/undoRedo/common/undoRedoService\":[\"Les fichiers suivants ont \\xE9t\\xE9 ferm\\xE9s et modifi\\xE9s sur le disque\\xA0: {0}.\",\"Les fichiers suivants ont \\xE9t\\xE9 modifi\\xE9s de mani\\xE8re incompatible : {0}.\",\"Impossible d'annuler '{0}' dans tous les fichiers. {1}\",\"Impossible d'annuler '{0}' dans tous les fichiers. {1}\",\"Impossible d'annuler '{0}' dans tous les fichiers, car des modifications ont \\xE9t\\xE9 apport\\xE9es \\xE0 {1}\",\"Impossible d'annuler '{0}' dans tous les fichiers, car une op\\xE9ration d'annulation ou de r\\xE9tablissement est d\\xE9j\\xE0 en cours d'ex\\xE9cution sur {1}\",\"Impossible d'annuler '{0}' dans tous les fichiers, car une op\\xE9ration d'annulation ou de r\\xE9tablissement s'est produite dans l'intervalle\",\"Souhaitez-vous annuler '{0}' dans tous les fichiers\\xA0?\",\"&&Annuler dans {0} fichiers\",\"Annuler ce &&fichier\",\"Impossible d'annuler '{0}', car une op\\xE9ration d'annulation ou de r\\xE9tablissement est d\\xE9j\\xE0 en cours d'ex\\xE9cution.\",\"Voulez-vous annuler '{0}'\\xA0?\",\"&&Oui\",\"Non\",\"Impossible de r\\xE9p\\xE9ter '{0}' dans tous les fichiers. {1}\",\"Impossible de r\\xE9p\\xE9ter '{0}' dans tous les fichiers. {1}\",\"Impossible de r\\xE9p\\xE9ter '{0}' dans tous les fichiers, car des modifications ont \\xE9t\\xE9 apport\\xE9es \\xE0 {1}\",\"Impossible de r\\xE9tablir '{0}' dans tous les fichiers, car une op\\xE9ration d'annulation ou de r\\xE9tablissement est d\\xE9j\\xE0 en cours d'ex\\xE9cution pour {1}\",\"Impossible de r\\xE9tablir '{0}' dans tous les fichiers, car une op\\xE9ration d'annulation ou de r\\xE9tablissement s'est produite dans l'intervalle\",\"Impossible de r\\xE9tablir '{0}', car une op\\xE9ration d'annulation ou de r\\xE9tablissement est d\\xE9j\\xE0 en cours d'ex\\xE9cution.\"],\"vs/platform/workspace/common/workspace\":[\"Espace de travail de code\"]});\n\n//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.fr.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/editor/editor.main.nls.it.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/editor/editor.main.nls.it\",{\"vs/base/browser/ui/actionbar/actionViewItems\":[\"{0} ({1})\"],\"vs/base/browser/ui/findinput/findInput\":[\"input\"],\"vs/base/browser/ui/findinput/findInputToggles\":[\"Maiuscole/minuscole\",\"Parola intera\",\"Usa espressione regolare\"],\"vs/base/browser/ui/findinput/replaceInput\":[\"input\",\"Mantieni maiuscole/minuscole\"],\"vs/base/browser/ui/hover/hoverWidget\":[\"Inspect this in the accessible view with {0}.\",\"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\"],\"vs/base/browser/ui/iconLabel/iconLabelHover\":[\"Caricamento...\"],\"vs/base/browser/ui/inputbox/inputBox\":[\"Errore: {0}\",\"Avviso: {0}\",\"Info: {0}\",\"per la cronologia\",\"Input cancellato\"],\"vs/base/browser/ui/keybindingLabel/keybindingLabel\":[\"Non associato\"],\"vs/base/browser/ui/selectBox/selectBoxCustom\":[\"Casella di selezione\"],\"vs/base/browser/ui/toolbar/toolbar\":[\"Altre azioni...\"],\"vs/base/browser/ui/tree/abstractTree\":[\"Filtro\",\"Corrispondenza fuzzy\",\"Digitare per filtrare\",\"Digitare per la ricerca\",\"Digitare per la ricerca\",\"Chiudi\",\"Non sono stati trovati elementi.\"],\"vs/base/common/actions\":[\"(vuoto)\"],\"vs/base/common/errorMessage\":[\"{0}: {1}\",\"Si \\xE8 verificato un errore di sistema ({0})\",\"Si \\xE8 verificato un errore sconosciuto. Per altri dettagli, vedere il log.\",\"Si \\xE8 verificato un errore sconosciuto. Per altri dettagli, vedere il log.\",\"{0} ({1} errori in totale)\",\"Si \\xE8 verificato un errore sconosciuto. Per altri dettagli, vedere il log.\"],\"vs/base/common/keybindingLabels\":[\"CTRL\",\"MAIUSC\",\"ALT\",\"Windows\",\"CTRL\",\"MAIUSC\",\"ALT\",\"Super\",\"CTRL\",\"MAIUSC\",\"Opzione\",\"Comando\",\"CTRL\",\"MAIUSC\",\"ALT\",\"Windows\",\"CTRL\",\"MAIUSC\",\"ALT\",\"Super\"],\"vs/base/common/platform\":[\"_\"],\"vs/editor/browser/controller/textAreaHandler\":[\"editor\",\"L'editor non \\xE8 accessibile in questo momento.\",\"{0} Per abilitare la modalit\\xE0 ottimizzata per l'utilit\\xE0 per la lettura dello schermo usare {1}\",\"{0} Per abilitare la modalit\\xE0 ottimizzata per l'utilit\\xE0 per la lettura dello schermo, aprire la selezione rapida con {1} ed eseguire il comando Attiva/Disattiva modalit\\xE0 di accessibilit\\xE0 dell'utilit\\xE0 per la lettura dello schermo, attualmente non attivabile tramite tastiera.\",\"{0} Assegnare un tasto di scelta rapida per il comando Attiva/Disattiva modalit\\xE0 di accessibilit\\xE0 dell'utilit\\xE0 per la lettura dello schermo accedendo all'editor dei tasti di scelta rapida con {1} ed eseguirlo.\"],\"vs/editor/browser/coreCommands\":[\"Si attiene alla fine anche quando si passa a righe pi\\xF9 lunghe\",\"Si attiene alla fine anche quando si passa a righe pi\\xF9 lunghe\",\"Cursori secondari rimossi\"],\"vs/editor/browser/editorExtensions\":[\"&&Annulla\",\"Annulla azione\",\"&&Ripeti\",\"Ripeti\",\"&&Seleziona tutto\",\"Seleziona tutto\"],\"vs/editor/browser/widget/codeEditorWidget\":[\"Il numero di cursori \\xE8 stato limitato a {0}. Provare a usare [Trova e sostituisci](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) per modifiche di dimensioni maggiori o aumentare l'impostazione del limite di pi\\xF9 cursori dell'editor.\",\"Aumentare limite multi-cursore\"],\"vs/editor/browser/widget/diffEditor.contribution\":[\"Visualizzatore differenze accessibile\",\"Vai alla differenza successiva\",\"Apri Visualizzatore differenze accessibile\",\"Vai alla differenza precedente\"],\"vs/editor/browser/widget/diffEditorWidget\":[\"Effetto di riga per gli inserimenti nell'editor diff.\",\"Effetto di riga per le rimozioni nell'editor diff.\",\" usa MAIUSC +F7 per esplorare le modifiche\",\"Non \\xE8 possibile confrontare i file perch\\xE9 uno \\xE8 troppo grande.\",\"Fare clic per annullare la modifica\"],\"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\":['Icona per \"Inserisci\" nel visualizzatore differenze accessibile.','Icona per \"Rimuovi\" nel visualizzatore differenze accessibile.','Icona per \"Chiudi\" nel visualizzatore differenze accessibile.',\"Chiudi\",\"Visualizzatore differenze accessibile. Usare le frecce SU e GI\\xD9 per spostarsi.\",\"nessuna riga modificata\",\"1 riga modificata\",\"{0} righe modificate\",\"Differenza {0} di {1}: riga originale {2}, {3}, riga modificata {4}, {5}\",\"vuota\",\"{0} riga non modificata {1}\",\"{0} riga originale {1} riga modificata {2}\",\"+ {0} riga modificata {1}\",\"- {0} riga originale {1}\"],\"vs/editor/browser/widget/diffEditorWidget2/colors\":[\"Colore del bordo per il testo spostato nell'editor diff.\",\"The active border color for text that got moved in the diff editor.\"],\"vs/editor/browser/widget/diffEditorWidget2/decorations\":[\"Effetto di riga per gli inserimenti nell'editor diff.\",\"Effetto di riga per le rimozioni nell'editor diff.\",\"Fare clic per annullare la modifica\"],\"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\":[\" utilizzare {0} per aprire la Guida all'accessibilit\\xE0.\"],\"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\":[\"Copia le righe eliminate\",\"Copia la riga eliminata\",\"Copia righe modificate\",\"Copia riga modificata\",\"Copia la riga eliminata ({0})\",\"Copia riga modificata ({0})\",\"Ripristina questa modifica\"],\"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\":[\"Code moved with changes to line {0}-{1}\",\"Code moved with changes from line {0}-{1}\",\"Code moved to line {0}-{1}\",\"Code moved from line {0}-{1}\"],\"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\":[\"Ridurre area non modificata\",\"Click or drag to show more above\",\"Show all\",\"Click or drag to show more below\",\"{0} hidden lines\",\"Double click to unfold\"],\"vs/editor/browser/widget/diffReview\":[\"Icona per 'Inserisci' nella revisione diff.\",\"Icona per 'Rimuovi' nella revisione diff.\",\"Icona per 'Chiudi' nella revisione diff.\",\"Chiudi\",\"nessuna riga modificata\",\"1 riga modificata\",\"{0} righe modificate\",\"Differenza {0} di {1}: riga originale {2}, {3}, riga modificata {4}, {5}\",\"vuota\",\"{0} riga non modificata {1}\",\"{0} riga originale {1} riga modificata {2}\",\"+ {0} riga modificata {1}\",\"- {0} riga originale {1}\"],\"vs/editor/browser/widget/inlineDiffMargin\":[\"Copia le righe eliminate\",\"Copia la riga eliminata\",\"Copia righe modificate\",\"Copia riga modificata\",\"Copia la riga eliminata ({0})\",\"Copia riga modificata ({0})\",\"Ripristina questa modifica\",\"Copia la riga eliminata ({0})\",\"Copia riga modificata ({0})\"],\"vs/editor/common/config/editorConfigurationSchema\":[\"Editor\",\"Numero di spazi a cui \\xE8 uguale una scheda. Questa impostazione viene sottoposta a override in base al contenuto del file quando {0} \\xE8 attivo.\",'Numero di spazi utilizzati per il rientro o `\"tabSize\"` per usare il valore di `#editor.tabSize#`. Questa impostazione viene sostituita in base al contenuto del file quando `#editor.detectIndentation#` \\xE8 attivo.',\"Inserire spazi quando si preme 'TAB'. Questa impostazione viene sottoposta a override in base al contenuto del file quando {0} \\xE8 attivo.\",\"Controlla se {0} e {1} verranno rilevati automaticamente quando un file viene aperto in base al contenuto del file.\",\"Rimuovi gli spazi finali inseriti automaticamente.\",\"Gestione speciale dei file di grandi dimensioni per disabilitare alcune funzionalit\\xE0 che fanno un uso intensivo della memoria.\",\"Controlla se calcolare i completamenti in base alle parole presenti nel documento.\",\"Suggerisci parole solo dal documento attivo.\",\"Suggerisci parole da tutti i documenti aperti della stessa lingua.\",\"Suggerisci parole da tutti i documenti aperti.\",\"Controlla i documenti da cui vengono calcolati i completamenti basati su parole.\",\"L'evidenziazione semantica \\xE8 abilitata per tutti i temi colore.\",\"L'evidenziazione semantica \\xE8 disabilitata per tutti i temi colore.\",\"La configurazione dell'evidenziazione semantica \\xE8 gestita tramite l'impostazione `semanticHighlighting` del tema colori corrente.\",\"Controlla se l'evidenziazione semanticHighlighting \\xE8 visualizzata per i linguaggi che la supportano.\",\"Consente di mantenere aperti gli editor rapidi anche quando si fa doppio clic sul contenuto o si preme 'ESC'.\",\"Per motivi di prestazioni le righe di lunghezza superiore non verranno tokenizzate\",\"Controlla se la tokenizzazione deve essere eseguita in modo asincrono in un web worker.\",\"Controlla se deve essere registrata la tokenizzazione asincrona. Solo per il debug.\",\"Controlla se la tokenizzazione asincrona deve essere verificata rispetto alla tokenizzazione legacy in background. Potrebbe rallentare la tokenizzazione. Solo per il debug.\",\"Definisce i simboli di parentesi quadra che aumentano o riducono il rientro.\",\"Sequenza di stringa o carattere parentesi quadra di apertura.\",\"Sequenza di stringa o carattere parentesi quadra di chiusura.\",\"Definisce le coppie di bracket colorate in base al livello di annidamento se \\xE8 abilitata la colorazione delle coppie di bracket.\",\"Sequenza di stringa o carattere parentesi quadra di apertura.\",\"Sequenza di stringa o carattere parentesi quadra di chiusura.\",\"Timeout in millisecondi dopo il quale il calcolo delle differenze viene annullato. Usare 0 per indicare nessun timeout.\",\"Dimensioni massime del file in MB per cui calcolare le differenze. Usare 0 per nessun limite.\",\"Controlla se l'editor diff mostra le differenze affiancate o incorporate.\",\"If the diff editor width is smaller than this value, the inline view is used.\",\"If enabled and the editor width is too small, the inline view is used.\",\"Se questa opzione \\xE8 abilitata, l'editor diff mostra le frecce nel margine del glifo per ripristinare le modifiche.\",\"Se abilitato, l'editor differenze ignora le modifiche relative a spazi vuoti iniziali e finali.\",\"Controlla se l'editor diff mostra gli indicatori +/- per le modifiche aggiunte/rimosse.\",\"Controlla se l'editor visualizza CodeLens.\",\"Il ritorno a capo automatico delle righe non viene mai applicato.\",\"Il ritorno a capo automatico delle righe viene applicato in corrispondenza della larghezza del viewport.\",\"Le righe andranno a capo in base all'impostazione {0}.\",\"Usare l'algoritmo diffing legacy.\",\"Usare l'algoritmo diffing avanzato.\",\"Controls whether the diff editor shows unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as a minimum for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as context when comparing unchanged regions. Only works when {0} is set.\",\"Controlla se l'editor diff debba mostrare gli spostamenti di codice rilevati. Funziona solo quando \\xE8 impostato {0}.\",\"Controlla se l'editor diff usa la nuova o la precedente implementazione.\",\"Controlla se l'editor diff mostra decorazioni vuote per vedere dove sono stati inseriti o eliminati caratteri.\"],\"vs/editor/common/config/editorOptions\":[\"Usare le API della piattaforma per rilevare quando viene collegata un'utilit\\xE0 per la lettura dello schermo\",\"Ottimizzare l'utilizzo con un'utilit\\xE0 per la lettura dello schermo\",\"Si presuppone che un'utilit\\xE0 per la lettura dello schermo non sia collegata\",\"Controllare se l'interfaccia utente deve essere eseguito in una modalit\\xE0 ottimizzata per le utilit\\xE0 per la lettura dello schermo.\",\"Consente di controllare se viene inserito uno spazio quando si aggiungono commenti.\",\"Controlla se ignorare le righe vuote con le opzioni per attivare/disattivare, aggiungere o rimuovere relative ai commenti di riga.\",\"Controlla se, quando si copia senza aver effettuato una selezione, viene copiata la riga corrente.\",\"Controlla se il cursore deve passare direttamente alla ricerca delle corrispondenze durante la digitazione.\",\"Non fornire mai la stringa di ricerca dalla selezione dell'editor.\",\"Fornisci sempre la stringa di ricerca dalla selezione dell'editor, inclusa la parola alla posizione del cursore.\",\"Fornisci la stringa di ricerca solo dalla selezione dell'editor.\",\"Controlla se inizializzare la stringa di ricerca nel Widget Trova con il testo selezionato nell'editor.\",\"Non attivare mai automaticamente la funzione Trova nella selezione (impostazione predefinita).\",\"Attiva sempre automaticamente la funzione Trova nella selezione.\",\"Attiva automaticamente la funzione Trova nella selezione quando sono selezionate pi\\xF9 righe di contenuto.\",\"Controlla la condizione per attivare automaticamente la funzione Trova nella selezione.\",\"Controlla se il widget Trova deve leggere o modificare gli appunti di ricerca condivisi in macOS.\",\"Controlla se il widget Trova deve aggiungere altre righe nella parte superiore dell'editor. Quando \\xE8 true, \\xE8 possibile scorrere oltre la prima riga quando il widget Trova \\xE8 visibile.\",\"Controlla se la ricerca viene riavviata automaticamente dall'inizio o dalla fine quando non \\xE8 possibile trovare ulteriori corrispondenze.\",\"Abilita/Disabilita i caratteri legatura (funzionalit\\xE0 dei tipi di carattere 'calt' e 'liga'). Impostare su una stringa per un controllo pi\\xF9 specifico sulla propriet\\xE0 CSS 'font-feature-settings'.\",\"Propriet\\xE0 CSS 'font-feature-settings' esplicita. Se \\xE8 necessario solo attivare/disattivare le legature, \\xE8 possibile passare un valore booleano.\",\"Consente di configurare i caratteri legatura o le funzionalit\\xE0 dei tipi di carattere. Pu\\xF2 essere un valore booleano per abilitare/disabilitare le legature o una stringa per il valore della propriet\\xE0 CSS 'font-feature-settings'.\",\"Abilita/disabilita la conversione dada font-weight a font-variation-settings. Modificare questa impostazione in una stringa per il controllo con granularit\\xE0 fine della propriet\\xE0 CSS Font-variation.\",\"Propriet\\xE0 CSS esplicita 'font-variation-settings'. \\xC8 invece possibile passare un valore booleano se \\xE8 sufficiente convertire font-weight in font-variation-settings.\",\"Configura le varianti di carattere. Pu\\xF2 essere un valore booleano per abilitare/disabilitare la conversione da font-weight a font-variation-settings o una stringa per il valore della propriet\\xE0 'font-variation-settings' CSS.\",\"Controlla le dimensioni del carattere in pixel.\",'Sono consentiti solo le parole chiave \"normal\" e \"bold\" o i numeri compresi tra 1 e 1000.','Controlla lo spessore del carattere. Accetta le parole chiave \"normal\" e \"bold\" o i numeri compresi tra 1 e 1000.',\"Mostra la visualizzazione in anteprima dei risultati (impostazione predefinita)\",\"Passa al risultato principale e mostra una visualizzazione in anteprima\",\"Passa al risultato principale e abilita l'esplorazione senza anteprima per gli altri\",\"Questa impostazione \\xE8 deprecata. In alternativa, usare impostazioni diverse, come 'editor.editor.gotoLocation.multipleDefinitions' o 'editor.editor.gotoLocation.multipleImplementations'.\",\"Controlla il comportamento del comando 'Vai alla definizione' quando esistono pi\\xF9 posizioni di destinazione.\",\"Controlla il comportamento del comando 'Vai alla definizione di tipo' quando esistono pi\\xF9 posizioni di destinazione.\",\"Controlla il comportamento del comando 'Vai a dichiarazione' quando esistono pi\\xF9 posizioni di destinazione.\",\"Controlla il comportamento del comando 'Vai a implementazioni' quando esistono pi\\xF9 posizioni di destinazione.\",\"Controlla il comportamento del comando 'Vai a riferimenti' quando esistono pi\\xF9 posizioni di destinazione.\",\"ID comando alternativo eseguito quando il risultato di 'Vai alla definizione' \\xE8 la posizione corrente.\",\"ID comando alternativo eseguito quando il risultato di 'Vai alla definizione di tipo' \\xE8 la posizione corrente.\",\"ID comando alternativo eseguito quando il risultato di 'Vai a dichiarazione' \\xE8 la posizione corrente.\",\"ID comando alternativo eseguito quando il risultato di 'Vai a implementazione' \\xE8 la posizione corrente.\",\"ID comando alternativo eseguito quando il risultato di 'Vai a riferimento' \\xE8 la posizione corrente.\",\"Controlla se mostrare l'area sensibile al passaggio del mouse.\",\"Controlla il ritardo in millisecondi dopo il quale viene mostrato il passaggio del mouse.\",\"Controlla se l'area sensibile al passaggio del mouse deve rimanere visibile quando vi si passa sopra con il puntatore del mouse.\",\"Preferisci la visualizzazione al passaggio del mouse sopra la riga, se c'\\xE8 spazio.\",\"Presuppone che la larghezza sia identica per tutti caratteri. Si tratta di un algoritmo veloce che funziona correttamente per i tipi di carattere a spaziatura fissa e determinati script (come i caratteri latini) in cui i glifi hanno larghezza identica.\",\"Delega il calcolo dei punti di ritorno a capo al browser. Si tratta di un algoritmo lento che potrebbe causare blocchi con file di grandi dimensioni, ma funziona correttamente in tutti gli altri casi.\",\"Controlla l'algoritmo che calcola i punti di wrapping. Si noti che quando \\xE8 attiva la modalit\\xE0 di accessibilit\\xE0, la modalit\\xE0 avanzata verr\\xE0 usata per un'esperienza ottimale.\",\"Abilita la lampadina delle azioni codice nell'editor.\",\"Mostra gli ambiti correnti annidati durante lo scorrimento nella parte superiore dell'editor.\",\"Definisce il numero massimo di righe permanenti da mostrare.\",\"Definisce il modello da utilizzare per determinare quali linee applicare. Se il modello di struttura non esiste, verr\\xE0 eseguito il fallback sul modello del provider di riduzione che rientra nel modello di rientro. Questo ordine viene rispettato in tutti e tre i casi.\",\"Enable scrolling of the sticky scroll widget with the editor's horizontal scrollbar.\",\"Abilita i suggerimenti incorporati nell'Editor.\",\"Gli hint di inlay sono abilitati\",\"Gli hint di inlay vengono visualizzati per impostazione predefinita e vengono nascosti quando si tiene premuto {0}\",\"Gli hint di inlay sono nascosti per impostazione predefinita e vengono visualizzati solo quando si tiene premuto {0}\",\"Gli hint di inlay sono disabilitati\",\"Controlla le dimensioni del carattere dei suggerimenti di inlay nell'editor. Per impostazione predefinita, {0} viene usato quando il valore configurato \\xE8 minore di {1} o maggiore delle dimensioni del carattere dell'editor.\",\"Controlla la famiglia di caratteri dei suggerimenti inlay nell'editor. Se impostato su vuoto, viene usato {0}.\",\"Abilita il riempimento attorno ai suggerimenti incorporati nell'editor.\",`Controlla l'altezza della riga. \\r\n - Usare 0 per calcolare automaticamente l'altezza della riga dalle dimensioni del carattere.\\r\n - I valori compresi tra 0 e 8 verranno usati come moltiplicatore con le dimensioni del carattere.\\r\n - I valori maggiori o uguali a 8 verranno usati come valori effettivi.`,\"Controlla se la minimappa \\xE8 visualizzata.\",\"Controlla se la minimappa viene nascosta automaticamente.\",\"La minimappa ha le stesse dimensioni del contenuto dell'editor (e potrebbe supportare lo scorrimento).\",\"Se necessario, la minimappa si ridurr\\xE0 o si ingrandir\\xE0 in modo da adattarsi all'altezza dell'editor (nessuno scorrimento).\",\"Se necessario, la minimappa si ridurr\\xE0 in modo che la larghezza non superi mai quella dell'editor (nessuno scorrimento).\",\"Controlla le dimensioni della minimappa.\",\"Definisce il lato in cui eseguire il rendering della minimappa.\",\"Controlla se il dispositivo di scorrimento della minimappa \\xE8 visualizzato.\",\"Scala del contenuto disegnato nella minimappa: 1, 2 o 3.\",\"Esegue il rendering dei caratteri effettivi di una riga in contrapposizione ai blocchi colore.\",\"Limita la larghezza della minimappa in modo da eseguire il rendering al massimo di un certo numero di colonne.\",\"Controlla la quantit\\xE0 di spazio tra il bordo superiore dell'editor e la prima riga.\",\"Controlla la quantit\\xE0 di spazio tra il bordo inferiore dell'editor e l'ultima riga.\",\"Abilita un popup che mostra documentazione sui parametri e informazioni sui tipi mentre si digita.\",\"Controlla se il menu dei suggerimenti per i parametri esegue un ciclo o si chiude quando viene raggiunta la fine dell'elenco.\",\"I suggerimenti rapidi vengono visualizzati all'interno del widget dei suggerimenti\",\"I suggerimenti rapidi vengono visualizzati come testo fantasma\",\"I suggerimenti rapidi sono disabilitati\",\"Abilita i suggerimenti rapidi all'interno di stringhe.\",\"Abilita i suggerimenti rapidi all'interno di commenti.\",\"Abilita i suggerimenti rapidi all'esterno di stringhe e commenti.\",\"Controlla se i suggerimenti devono essere visualizzati automaticamente durante la digitazione. Pu\\xF2 essere controllato per la digitazione in commenti, stringhe e altro codice. Il suggerimento rapido pu\\xF2 essere configurato per essere visualizzato come testo fantasma o con il widget dei suggerimenti. Tenere anche conto dell'impostazione '{0}' che controlla se i suggerimenti vengono attivati dai caratteri speciali.\",\"I numeri di riga non vengono visualizzati.\",\"I numeri di riga vengono visualizzati come numeri assoluti.\",\"I numeri di riga vengono visualizzati come distanza in linee alla posizione del cursore.\",\"I numeri di riga vengono visualizzati ogni 10 righe.\",\"Controlla la visualizzazione dei numeri di riga.\",\"Numero di caratteri a spaziatura fissa in corrispondenza del quale verr\\xE0 eseguito il rendering di questo righello dell'editor.\",\"Colore di questo righello dell'editor.\",\"Esegue il rendering dei righelli verticali dopo un certo numero di caratteri a spaziatura fissa. Usare pi\\xF9 valori per pi\\xF9 righelli. Se la matrice \\xE8 vuota, non viene disegnato alcun righello.\",\"La barra di scorrimento verticale sar\\xE0 visibile solo quando necessario.\",\"La barra di scorrimento verticale sar\\xE0 sempre visibile.\",\"La barra di scorrimento verticale sar\\xE0 sempre nascosta.\",\"Controlla la visibilit\\xE0 della barra di scorrimento verticale.\",\"La barra di scorrimento orizzontale sar\\xE0 visibile solo quando necessario.\",\"La barra di scorrimento orizzontale sar\\xE0 sempre visibile.\",\"La barra di scorrimento orizzontale sar\\xE0 sempre nascosta.\",\"Controlla la visibilit\\xE0 della barra di scorrimento orizzontale.\",\"Larghezza della barra di scorrimento verticale.\",\"Altezza della barra di scorrimento orizzontale.\",\"Controlla se i clic consentono di attivare lo scorrimento per pagina o di passare direttamente alla posizione di clic.\",\"Controlla se tutti i caratteri ASCII non di base sono evidenziati. Solo i caratteri compresi tra U+0020 e U+007E, tabulazione, avanzamento riga e ritorno a capo sono considerati ASCII di base.\",\"Controlla se i caratteri che riservano spazio o non hanno larghezza sono evidenziati.\",\"Controlla se i caratteri che possono essere confusi con i caratteri ASCII di base sono evidenziati, ad eccezione di quelli comuni nelle impostazioni locali dell'utente corrente.\",\"Controlla se anche i caratteri nei commenti devono essere soggetti a evidenziazione Unicode.\",\"Controlla se anche i caratteri nelle stringhe devono essere soggetti all'evidenziazione Unicode.\",\"Definisce i caratteri consentiti che non vengono evidenziati.\",\"I caratteri Unicode comuni nelle impostazioni locali consentite non vengono evidenziati.\",\"Controlla se visualizzare automaticamente i suggerimenti inline nell'Editor.\",\"Mostra la barra degli strumenti dei suggerimenti in linea ogni volta che viene visualizzato un suggerimento in linea.\",\"Mostra la barra degli strumenti dei suggerimenti in linea quando al passaggio del mouse su un suggerimento in linea.\",\"Controlla quando mostrare la barra dei suggerimenti in linea.\",\"Controlla la modalit\\xE0 di interazione dei suggerimenti inline con il widget dei suggerimenti. Se questa opzione \\xE8 abilitata, il widget dei suggerimenti non viene visualizzato automaticamente quando sono disponibili suggerimenti inline.\",\"Controlla se la colorazione delle coppie di parentesi \\xE8 abilitata. Usare {0} per eseguire l'override dei colori di evidenziazione delle parentesi.\",\"Controlla se ogni tipo di parentesi ha un pool di colori indipendente.\",\"Abilita le guide per coppie di parentesi quadre.\",\"Abilita le guide delle coppie di parentesi solo per la coppia di parentesi attive.\",\"Disabilita le guide per coppie di parentesi quadre.\",\"Controlla se le guide delle coppie di parentesi sono abilitate o meno.\",\"Abilita le guide orizzontali come aggiunta alle guide per coppie di parentesi verticali.\",\"Abilita le guide orizzontali solo per la coppia di parentesi attive.\",\"Disabilita le guide per coppie di parentesi orizzontali.\",\"Controlla se le guide orizzontali delle coppie di parentesi sono abilitate o meno.\",\"Controlla se l'editor debba evidenziare la coppia di parentesi attive.\",\"Controlla se l'editor deve eseguire il rendering delle guide con rientro.\",\"Evidenzia la guida di rientro attiva.\",\"Evidenzia la guida di rientro attiva anche se le guide delle parentesi quadre sono evidenziate.\",\"Non evidenziare la guida di rientro attiva.\",\"Controlla se l'editor deve evidenziare la guida con rientro attiva.\",\"Inserisce il suggerimento senza sovrascrivere il testo a destra del cursore.\",\"Inserisce il suggerimento e sovrascrive il testo a destra del cursore.\",\"Controlla se le parole vengono sovrascritte quando si accettano i completamenti. Tenere presente che questa opzione dipende dalle estensioni che accettano esplicitamente questa funzionalit\\xE0.\",\"Controlla se i suggerimenti di filtro e ordinamento valgono per piccoli errori di battitura.\",\"Controlla se l'ordinamento privilegia le parole che appaiono pi\\xF9 vicine al cursore.\",\"Controlla se condividere le selezioni dei suggerimenti memorizzati tra aree di lavoro e finestre (richiede `#editor.suggestSelection#`).\",\"Selezionare sempre un suggerimento quando si attiva automaticamente IntelliSense.\",\"Non selezionare mai un suggerimento quando si attiva automaticamente IntelliSense.\",\"Selezionare un suggerimento solo quando si attiva IntelliSense da un carattere di trigger.\",\"Selezionare un suggerimento solo quando si attiva IntelliSense durante la digitazione.\",\"Controlla se viene selezionato un suggerimento quando viene visualizzato il widget. Si noti che questo si applica solo ai suggerimenti attivati automaticamente ('#editor.quickSuggestions#' e '#editor.suggestOnTriggerCharacters#') e che un suggerimento viene sempre selezionato quando viene richiamato in modo esplicito, ad esempio tramite 'CTRL+BARRA SPAZIATRICE'.\",\"Controlla se un frammento attivo impedisce i suggerimenti rapidi.\",\"Controlla se mostrare o nascondere le icone nei suggerimenti.\",\"Controlla la visibilit\\xE0 della barra di stato nella parte inferiore del widget dei suggerimenti.\",\"Controlla se visualizzare in anteprima il risultato del suggerimento nell'Editor.\",\"Controlla se i dettagli del suggerimento vengono visualizzati inline con l'etichetta o solo nel widget dei dettagli.\",\"Questa impostazione \\xE8 deprecata. Il widget dei suggerimenti pu\\xF2 ora essere ridimensionato.\",\"Questa impostazione \\xE8 deprecata. In alternativa, usare impostazioni diverse, come 'editor.suggest.showKeywords' o 'editor.suggest.showSnippets'.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `method`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `function`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `constructor`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `deprecated`.\",\"Quando \\xE8 abilitato, il filtro IntelliSense richiede che il primo carattere corrisponda all'inizio di una parola, ad esempio 'c' per 'Console' o 'WebContext' ma _non_ per 'description'. Quando \\xE8 disabilitato, IntelliSense mostra pi\\xF9 risultati, ma li ordina comunque in base alla qualit\\xE0 della corrispondenza.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `field`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `variable`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `class`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `struct`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `interface`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `module`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `property`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `event`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `operator`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `unit`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `value`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `constant`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `enum`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `enumMember`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `keyword`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `text`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `color`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `file`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `reference`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `customcolor`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `folder`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `typeParameter`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `snippet`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `user`.\",\"Se \\xE8 abilitata, IntelliSense mostra i suggerimenti relativi a `issues`.\",\"Indica se gli spazi vuoti iniziali e finali devono essere sempre selezionati.\",\"Indica se \\xE8 necessario selezionare le sottoparole ( come 'foo' in 'fooBar' o 'foo_bar').\",\"Nessun rientro. Le righe con ritorno a capo iniziano dalla colonna 1. \",\"Le righe con ritorno a capo hanno lo stesso rientro della riga padre.\",\"Le righe con ritorno a capo hanno un rientro di +1 rispetto alla riga padre.\",\"Le righe con ritorno a capo hanno un rientro di +2 rispetto alla riga padre.\",\"Controlla il rientro delle righe con ritorno a capo.\",\"Controlla se \\xE8 possibile trascinare un file in un editor di testo tenendo premuto MAIUSC (invece di aprire il file in un editor).\",\"Controlla se viene visualizzato un widget quando si rilasciano file nell'editor. Questo widget consente di controllare la modalit\\xE0 di rilascio del file.\",\"Mostra il widget del selettore di rilascio dopo il rilascio di un file nell'editor.\",\"Non visualizzare mai il widget del selettore di rilascio. Usare sempre il provider di rilascio predefinito.\",\"Controlla se \\xE8 possibile incollare il contenuto in modi diversi.\",\"Controlla se viene visualizzato un widget quando si incolla il contenuto nell'editor. Questo widget consente di controllare il modo in cui il file viene incollato.\",\"Mostra il widget del selettore dell'operazione Incolla dopo che il contenuto \\xE8 stato incollato nell'editor.\",\"Non visualizzare mai il widget del selettore dell'operazione Incolla. Usare sempre il comportamento dell'operazione Incolla predefinito.\",\"Controlla se accettare i suggerimenti con i caratteri di commit. Ad esempio, in JavaScript il punto e virgola (';') pu\\xF2 essere un carattere di commit che accetta un suggerimento e digita tale carattere.\",\"Accetta un suggerimento con 'Invio' solo quando si apporta una modifica al testo.\",\"Controlla se i suggerimenti devono essere accettati con 'INVIO' in aggiunta a 'TAB'. In questo modo \\xE8 possibile evitare ambiguit\\xE0 tra l'inserimento di nuove righe e l'accettazione di suggerimenti.\",\"Controlla il numero di righe nell'Editor che possono essere lette alla volta da un utilit\\xE0 per la lettura dello schermo. Quando viene rilevata un'utilit\\xE0 per la lettura dello schermo, questo valore viene impostato su 500 per impostazione predefinita. Avviso: questa opzione pu\\xF2 influire sulle prestazioni se il numero di righe \\xE8 superiore a quello predefinito.\",\"Contenuto editor\",\"Controllare se i suggerimenti inline vengono annunciati da un'utilit\\xE0 per la lettura dello schermo.\",\"Usa le configurazioni del linguaggio per determinare la chiusura automatica delle parentesi.\",\"Chiudi automaticamente le parentesi solo quando il cursore si trova alla sinistra di uno spazio vuoto.\",\"Controlla se l'editor deve chiudere automaticamente le parentesi quadre dopo che sono state aperte.\",\"Rimuove le virgolette o le parentesi quadre di chiusura adiacenti solo se sono state inserite automaticamente.\",\"Controlla se l'editor deve rimuovere le virgolette o le parentesi quadre di chiusura adiacenti durante l'eliminazione.\",\"Digita sopra le virgolette o le parentesi quadre di chiusura solo se sono state inserite automaticamente.\",\"Controlla se l'editor deve digitare su virgolette o parentesi quadre.\",\"Usa le configurazioni del linguaggio per determinare la chiusura automatica delle virgolette.\",\"Chiudi automaticamente le virgolette solo quando il cursore si trova alla sinistra di uno spazio vuoto.\",\"Controlla se l'editor deve chiudere automaticamente le citazioni dopo che sono state aperte.\",\"L'editor non inserir\\xE0 automaticamente il rientro.\",\"L'editor manterr\\xE0 il rientro della riga corrente.\",\"L'editor manterr\\xE0 il rientro della riga corrente e rispetter\\xE0 le parentesi definite dalla lingua.\",\"L'editor manterr\\xE0 il rientro della riga corrente, rispetter\\xE0 le parentesi definite dalla lingua e richiamer\\xE0 le regole onEnterRules speciali definite dalle lingue.\",\"L'editor manterr\\xE0 il rientro della riga corrente, rispetter\\xE0 le parentesi definite dalla lingua, richiamer\\xE0 le regole onEnterRules speciali definite dalle lingue e rispetter\\xE0 le regole indentationRules definite dalle lingue.\",\"Controlla se l'editor deve regolare automaticamente il rientro quando gli utenti digitano, incollano, spostano le righe o applicano il rientro.\",\"Usa le configurazioni del linguaggio per determinare quando racchiudere automaticamente le selezioni tra parentesi quadre o virgolette.\",\"Racchiude la selezione tra virgolette ma non tra parentesi quadre.\",\"Racchiude la selezione tra parentesi quadre ma non tra virgolette.\",\"Controlla se l'editor deve racchiudere automaticamente le selezioni quando si digitano virgolette o parentesi quadre.\",\"Emula il comportamento di selezione dei caratteri di tabulazione quando si usano gli spazi per il rientro. La selezione verr\\xE0 applicata alle tabulazioni.\",\"Controlla se l'editor visualizza CodeLens.\",\"Controlla la famiglia di caratteri per CodeLens.\",\"Controlla le dimensioni del carattere in pixel per CodeLens. Quando \\xE8 impostata su 0, viene usato il 90% del valore di '#editor.fontSize#'.\",\"Controlla se l'editor deve eseguire il rendering della selezione colori e degli elementi Decorator di tipo colore inline.\",\"Fare in modo che la selezione colori venga visualizzata sia al clic che al passaggio del mouse sull\\u2019elemento Decorator colore\",\"Fare in modo che la selezione colori venga visualizzata al passaggio del mouse sull'elemento Decorator colore\",\"Fare in modo che la selezione colori venga visualizzata quando si fa clic sull'elemento Decorator colore\",\"Controlla la condizione in modo che venga visualizzata la selezione colori da un elemento Decorator colore.\",\"Controlla il numero massimo di elementi Decorator a colori di cui \\xE8 possibile eseguire il rendering in un editor contemporaneamente.\",\"Abilita l'uso di mouse e tasti per la selezione delle colonne.\",\"Controlla se l'evidenziazione della sintassi deve essere copiata negli Appunti.\",\"Controllo dello stile di animazione del cursore.\",\"L'animazione con cursore arrotondato \\xE8 disabilitata.\",\"L'animazione con cursore uniforme \\xE8 abilitata solo quando l'utente sposta il cursore con un movimento esplicito.\",\"L'animazione con cursore uniforme \\xE8 sempre abilitata.\",\"Controlla se l'animazione del cursore con anti-aliasing deve essere abilitata.\",\"Controlla lo stile del cursore.\",\"Controllare il numero minimo di linee iniziali visibili (minimo 0) e finali (minimo 1) visibili che circondano il cursore. Noto come 'scrollOff' o 'scrollOffset' in altri editor.\",\"`cursorSurroundingLines` viene applicato solo quando \\xE8 attivato tramite la tastiera o l'API.\",\"`cursorSurroundingLines` viene sempre applicato.\",\"Controlla quando deve essere applicato `cursorSurroundingLines`.\",\"Controlla la larghezza del cursore quando `#editor.cursorStyle#` \\xE8 impostato su `line`.\",\"Controlla se l'editor deve consentire lo spostamento di selezioni tramite trascinamento della selezione.\",\"Usare un nuovo metodo di rendering con svgs.\",\"Usare un nuovo metodo di rendering con tipi di caratteri.\",\"Usare il metodo di rendering stabile.\",\"Controlla se viene eseguito il rendering degli spazi vuoti con un nuovo metodo sperimentale.\",\"Moltiplicatore della velocit\\xE0 di scorrimento quando si preme `Alt`.\",\"Controlla se per l'editor \\xE8 abilitata la riduzione del codice.\",\"Usa una strategia di riduzione specifica della lingua, se disponibile; altrimenti ne usa una basata sui rientri.\",\"Usa la strategia di riduzione basata sui rientri.\",\"Controlla la strategia per il calcolo degli intervalli di riduzione.\",\"Controlla se l'editor deve evidenziare gli intervalli con riduzione del codice.\",\"Controlla se l'editor comprime automaticamente gli intervalli di importazione.\",\"Numero massimo di aree riducibili. Se si aumenta questo valore, l'editor potrebbe diventare meno reattivo quando l'origine corrente contiene un numero elevato di aree riducibili.\",\"Controlla se, facendo clic sul contenuto vuoto dopo una riga ridotta, la riga viene espansa.\",\"Controlla la famiglia di caratteri.\",\"Controlla se l'editor deve formattare automaticamente il contenuto incollato. Deve essere disponibile un formattatore che deve essere in grado di formattare un intervallo in un documento.\",\"Controlla se l'editor deve formattare automaticamente la riga dopo la digitazione.\",\"Controlla se l'editor deve eseguire il rendering del margine verticale del glifo. Il margine del glifo viene usato principalmente per il debug.\",\"Controlla se il cursore deve essere nascosto nel righello delle annotazioni.\",\"Controlla la spaziatura tra le lettere in pixel.\",\"Controlla se la modifica collegata \\xE8 abilitata per l'editor. A seconda del linguaggio, i simboli correlati, ad esempio i tag HTML, vengono aggiornati durante la modifica.\",\"Controlla se l'editor deve individuare i collegamenti e renderli selezionabili.\",\"Evidenzia le parentesi graffe corrispondenti.\",\"Moltiplicatore da usare sui valori `deltaX` e `deltaY` degli eventi di scorrimento della rotellina del mouse.\",\"Ingrandisce il carattere dell'editor quando si usa la rotellina del mouse e si tiene premuto 'CTRL'.\",\"Unire i cursori multipli se sovrapposti.\",\"Rappresenta il tasto 'Control' in Windows e Linux e il tasto 'Comando' in macOS.\",\"Rappresenta il tasto 'Alt' in Windows e Linux e il tasto 'Opzione' in macOS.\",\"Modificatore da usare per aggiungere pi\\xF9 cursori con il mouse. I movimenti del mouse Vai alla definizione e Apri collegamento si adatteranno in modo da non entrare in conflitto con il [modificatore di selezione multipla](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).\",\"Ogni cursore incolla una singola riga del testo.\",\"Ogni cursore incolla il testo completo.\",\"Controlla l'operazione Incolla quando il conteggio delle righe del testo incollato corrisponde al conteggio dei cursori.\",\"Controlla il numero massimo di cursori che possono essere presenti in un editor attivo contemporaneamente.\",\"Controlla se l'editor deve evidenziare le occorrenze di simboli semantici.\",\"Controlla se deve essere disegnato un bordo intorno al righello delle annotazioni.\",\"Sposta lo stato attivo sull'albero quando si apre l'anteprima\",\"Sposta lo stato attivo sull'editor quando si apre l'anteprima\",\"Controlla se spostare lo stato attivo sull'editor inline o sull'albero nel widget di anteprima.\",\"Controlla se il movimento del mouse Vai alla definizione consente sempre di aprire il widget di anteprima.\",\"Controlla il ritardo in millisecondi dopo il quale verranno visualizzati i suggerimenti rapidi.\",\"Controlla se l'editor viene rinominato automaticamente in base al tipo.\",\"Deprecata. In alternativa, usare `editor.linkedEditing`.\",\"Controlla se l'editor deve eseguire il rendering dei caratteri di controllo.\",\"Esegue il rendering dell'ultimo numero di riga quando il file termina con un carattere di nuova riga.\",\"Mette in evidenza sia la barra di navigazione sia la riga corrente.\",\"Controlla in che modo l'editor deve eseguire il rendering dell'evidenziazione di riga corrente.\",\"Controlla se l'editor deve eseguire il rendering dell'evidenziazione della riga corrente solo quando l'editor ha lo stato attivo.\",\"Esegue il rendering dei caratteri di spazio vuoto ad eccezione dei singoli spazi tra le parole.\",\"Esegui il rendering dei caratteri di spazio vuoto solo nel testo selezionato.\",\"Esegui il rendering solo dei caratteri di spazio vuoto finali.\",\"Controlla in che modo l'editor deve eseguire il rendering dei caratteri di spazio vuoto.\",\"Controlla se le selezioni devono avere gli angoli arrotondati.\",\"Controlla il numero di caratteri aggiuntivi oltre i quali l'editor scorrer\\xE0 orizzontalmente.\",\"Controlla se l'editor scorrer\\xE0 oltre l'ultima riga.\",\"Scorre solo lungo l'asse predominante durante lo scorrimento verticale e orizzontale simultaneo. Impedisce la deviazione orizzontale quando si scorre in verticale su un trackpad.\",\"Controlla se gli appunti primari di Linux devono essere supportati.\",\"Controlla se l'editor deve evidenziare gli elementi corrispondenti simili alla selezione.\",\"Mostra sempre i comandi di riduzione.\",\"Non visualizzare mai i controlli di riduzione e diminuire le dimensioni della barra di navigazione.\",\"Mostra i comandi di riduzione solo quando il mouse \\xE8 posizionato sul margine della barra di scorrimento.\",\"Controlla se i controlli di riduzione sul margine della barra di scorrimento vengono visualizzati.\",\"Controllo dissolvenza del codice inutilizzato.\",\"Controlla le variabili deprecate barrate.\",\"Visualizza i suggerimenti del frammento prima degli altri suggerimenti.\",\"Visualizza i suggerimenti del frammento dopo gli altri suggerimenti.\",\"Visualizza i suggerimenti del frammento insieme agli altri suggerimenti.\",\"Non mostrare i suggerimenti del frammento.\",\"Controlla se i frammenti di codice sono visualizzati con altri suggerimenti e il modo in cui sono ordinati.\",\"Controlla se per lo scorrimento dell'editor verr\\xE0 usata un'animazione.\",\"Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\",\"Dimensioni del carattere per il widget dei suggerimenti. Se impostato su {0}, viene usato il valore di {1}.\",\"Altezza della riga per il widget dei suggerimenti. Se impostato su {0}, viene usato il valore {1}. Il valore minimo \\xE8 8.\",\"Controlla se i suggerimenti devono essere visualizzati automaticamente durante la digitazione dei caratteri trigger.\",\"Consente di selezionare sempre il primo suggerimento.\",\"Consente di selezionare suggerimenti recenti a meno che continuando a digitare non ne venga selezionato uno, ad esempio `console.| ->; console.log` perch\\xE9 `log` \\xE8 stato completato di recente.\",\"Consente di selezionare i suggerimenti in base a prefissi precedenti che hanno completato tali suggerimenti, ad esempio `co ->; console` e `con -> const`.\",\"Controlla la modalit\\xE0 di preselezione dei suggerimenti durante la visualizzazione dell'elenco dei suggerimenti.\",\"La funzionalit\\xE0 di completamento con tasto TAB inserir\\xE0 il migliore suggerimento alla pressione del tasto TAB.\",\"Disabilita le funzionalit\\xE0 di completamento con tasto TAB.\",\"Completa i frammenti con il tasto TAB quando i rispettivi prefissi corrispondono. Funziona in modo ottimale quando 'quickSuggestions' non \\xE8 abilitato.\",\"Abilit\\xE0 la funzionalit\\xE0 di completamento con tasto TAB.\",\"I caratteri di terminazione di riga insoliti vengono rimossi automaticamente.\",\"I caratteri di terminazione di riga insoliti vengono ignorati.\",\"Prompt per i caratteri di terminazione di riga insoliti da rimuovere.\",\"Rimuovi caratteri di terminazione di riga insoliti che potrebbero causare problemi.\",\"Inserimento ed eliminazione dello spazio vuoto dopo le tabulazioni.\",\"Usare la regola di interruzione di riga predefinita.\",\"Le interruzioni di parola non devono essere usate per il testo cinese/giapponese/coreano (CJK). Il comportamento del testo non CJK \\xE8 uguale a quello normale.\",\"Controlla le regole di interruzione delle parole usate per il testo cinese/giapponese/coreano (CJK).\",\"Caratteri che verranno usati come separatori di parola quando si eseguono operazioni o spostamenti correlati a parole.\",\"Il ritorno a capo automatico delle righe non viene mai applicato.\",\"Il ritorno a capo automatico delle righe viene applicato in corrispondenza della larghezza del viewport.\",\"Il ritorno a capo automatico delle righe viene applicato in corrispondenza di `#editor.wordWrapColumn#`.\",\"Il ritorno a capo automatico delle righe viene applicato in corrispondenza della larghezza minima del viewport e di `#editor.wordWrapColumn#`.\",\"Controlla il ritorno a capo automatico delle righe.\",\"Controlla la colonna per il ritorno a capo automatico dell'editor quando il valore di `#editor.wordWrap#` \\xE8 `wordWrapColumn` o `bounded`.\",\"Controllare se visualizzare le decorazioni colori incorporate usando il provider colori predefinito del documento\",\"Controlla se l'editor riceve le schede o le rinvia al workbench per lo spostamento.\"],\"vs/editor/common/core/editorColorRegistry\":[\"Colore di sfondo per l'evidenziazione della riga alla posizione del cursore.\",\"Colore di sfondo per il bordo intorno alla riga alla posizione del cursore.\",\"Colore di sfondo degli intervalli evidenziati, ad esempio dalle funzionalit\\xE0 Quick Open e Trova. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore di sfondo del bordo intorno agli intervalli selezionati.\",\"Colore di sfondo del simbolo evidenziato, ad esempio per passare alla definizione o al simbolo successivo/precedente. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore di sfondo del bordo intorno ai simboli selezionati.\",\"Colore del cursore dell'editor.\",\"Colore di sfondo del cursore editor. Permette di personalizzare il colore di un carattere quando sovrapposto da un blocco cursore.\",\"Colore dei caratteri di spazio vuoto nell'editor.\",\"Colore dei numeri di riga dell'editor.\",\"Colore delle guide per i rientri dell'editor.\",\"'editorIndentGuide.background' \\xE8 deprecato. Usare 'editorIndentGuide.background1'.\",\"Colore delle guide di indentazione dell'editor attivo\",\"'editorIndentGuide.activeBackground' \\xE8 deprecato. Usare 'editorIndentGuide.activeBackground1'.\",\"Colore delle guide per i rientri dell'editor (1).\",\"Colore delle guide per i rientri dell'editor (2).\",\"Colore delle guide per i rientri dell'editor (3).\",\"Colore delle guide per i rientri dell'editor (4).\",\"Colore delle guide per i rientri dell'editor (5).\",\"Colore delle guide per i rientri dell'editor (6).\",\"Colore delle guide di indentazione dell'editor attivo (1).\",\"Colore delle guide di indentazione dell'editor attivo (2).\",\"Colore delle guide di indentazione dell'editor attivo (3).\",\"Colore delle guide di indentazione dell'editor attivo (4).\",\"Colore delle guide di indentazione dell'editor attivo (5).\",\"Colore delle guide di indentazione dell'editor attivo (6).\",\"Colore del numero di riga attivo dell'editor\",\"Id \\xE8 deprecato. In alternativa usare 'editorLineNumber.activeForeground'.\",\"Colore del numero di riga attivo dell'editor\",\"Colore della riga dell'editor finale quando editor.renderFinalNewline \\xE8 impostato su in grigio.\",\"Colore dei righelli dell'editor.\",\"Colore primo piano delle finestre di CodeLens dell'editor\",\"Colore di sfondo delle parentesi corrispondenti\",\"Colore delle caselle di parentesi corrispondenti\",\"Colore del bordo del righello delle annotazioni.\",\"Colore di sfondo del righello delle annotazioni dell'editor.\",\"Colore di sfondo della barra di navigazione dell'editor. La barra contiene i margini di glifo e i numeri di riga.\",\"Colore del bordo del codice sorgente non necessario (non usato) nell'editor.\",`Opacit\\xE0 del codice sorgente non necessario (non usato) nell'editor. Ad esempio, con \"#000000c0\" il rendering del codice verr\\xE0 eseguito con il 75% di opacit\\xE0. Per i temi a contrasto elevato, usare il colore del tema 'editorUnnecessaryCode.border' per sottolineare il codice non necessario invece di opacizzarlo.`,\"Colore del bordo del testo fantasma nell'Editor.\",\"Colore primo piano del testo fantasma nell'Editor.\",\"Colore di sfondo del testo fantasma nell'editor.\",\"Colore del marcatore del righello delle annotazioni per le evidenziazioni degli intervalli. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore del marcatore del righello delle annotazioni per gli errori.\",\"Colore del marcatore del righello delle annotazioni per gli avvisi.\",\"Colore del marcatore del righello delle annotazioni per i messaggi di tipo informativo.\",\"Colore primo piano delle parentesi quadre (1). Richiede l'abilitazione della colorazione delle coppie di parentesi quadre.\",\"Colore primo piano delle parentesi quadre (2). Richiede l'abilitazione della colorazione delle coppie di parentesi quadre.\",\"Colore primo piano delle parentesi quadre (3). Richiede l'abilitazione della colorazione delle coppie di parentesi quadre.\",\"Colore primo piano delle parentesi quadre (4). Richiede l'abilitazione della colorazione delle coppie di parentesi quadre.\",\"Colore primo piano delle parentesi quadre (5). Richiede l'abilitazione della colorazione delle coppie di parentesi quadre.\",\"Colore primo piano delle parentesi quadre (6). Richiede l'abilitazione della colorazione delle coppie di parentesi quadre.\",\"Colore di primo piano delle parentesi impreviste.\",\"Colore di sfondo delle guide per coppie di parentesi inattive (1). Richiede l'abilitazione delle guide per coppie di parentesi.\",\"Colore di sfondo delle guide per coppie di parentesi inattive (2). Richiede l'abilitazione delle guide per coppie di parentesi.\",\"Colore di sfondo delle guide per coppie di parentesi inattive (3). Richiede l'abilitazione delle guide per coppie di parentesi.\",\"Colore di sfondo delle guide per coppie di parentesi inattive (4). Richiede l'abilitazione delle guide per coppie di parentesi.\",\"Colore di sfondo delle guide per coppie di parentesi inattive (5). Richiede l'abilitazione delle guide per coppie di parentesi.\",\"Colore di sfondo delle guide per coppie di parentesi inattive (6). Richiede l'abilitazione delle guide per coppie di parentesi.\",\"Colore di sfondo delle guide per coppie di parentesi attive (1). Richiede l'abilitazione delle guide per coppie di parentesi.\",\"Colore di sfondo delle guide per coppie di parentesi attive (2). Richiede l'abilitazione delle guide per coppie di parentesi.\",\"Colore di sfondo delle guide per coppie di parentesi attive (3). Richiede l'abilitazione delle guide per coppie di parentesi.\",\"Colore di sfondo delle guide per coppie di parentesi attive (4). Richiede l'abilitazione delle guide per coppie di parentesi.\",\"Colore di sfondo delle guide per coppie di parentesi attive (5). Richiede l'abilitazione delle guide per coppie di parentesi.\",\"Colore di sfondo delle guide per coppie di parentesi attive (6). Richiede l'abilitazione delle guide per coppie di parentesi.\",\"Colore del bordo utilizzato per evidenziare i caratteri Unicode.\",\"Colore di sfondo usato per evidenziare i caratteri Unicode.\"],\"vs/editor/common/editorContextKeys\":[\"Indica se il testo dell'editor ha lo stato attivo (il cursore lampeggia)\",\"Indica se l'editor o un widget dell'editor ha lo stato attivo (ad esempio, lo stato attivo si trova nel widget di ricerca)\",\"Indica se un editor o un input RTF ha lo stato attivo (il cursore lampeggia)\",\"Indica se l'editor \\xE8 di sola lettura\",\"Indica se il contesto \\xE8 un editor diff\",\"Indica se il contesto \\xE8 un editor diff incorporato\",\"Whether a moved code block is selected for comparison\",\"Indica se il visualizzatore differenze accessibile \\xE8 visibile\",\"Whether the diff editor render side by side inline breakpoint is reached\",\"Indica se `editor.columnSelection` \\xE8 abilitato\",\"Indica se per l'editor esiste testo selezionato\",\"Indica se per l'editor esistono pi\\xF9 selezioni\",\"Indica se premendo `TAB`, lo stato attivo verr\\xE0 spostato all'esterno dell'editor\",\"Indica se il passaggio del puntatore nell'editor \\xE8 visibile\",\"Indica se l'area sensibile al passaggio del mouse dell'edito \\xE8 attivata\",\"Indica se lo scorrimento permanente \\xE8 attivo\",\"Indica se lo scorrimento permanente \\xE8 visibile\",\"Indicare se la selezione colori autonoma \\xE8 visibile\",\"Indicare se la selezione colori autonoma \\xE8 evidenziata\",\"Indica se l'editor fa parte di un editor pi\\xF9 esteso (ad esempio notebook)\",\"Identificatore lingua dell'editor\",\"Indica se per l'editor esiste un provider di voci di completamento\",\"Indica se per l'editor esiste un provider di azioni codice\",\"Indica se per l'editor esiste un provider di CodeLens\",\"Indica se per l'editor esiste un provider di definizioni\",\"Indica se per l'editor esiste un provider di dichiarazioni\",\"Indica se per l'editor esiste un provider di implementazioni\",\"Indica se per l'editor esiste un provider di definizioni di tipo\",\"Indica se per l'editor esiste un provider di passaggi del mouse\",\"Indica se per l'editor esiste un provider di evidenziazione documenti\",\"Indica se per l'editor esiste un provider di simboli di documenti\",\"Indica se per l'editor esiste un provider di riferimenti\",\"Indica se per l'editor esiste un provider di ridenominazione\",\"Indica se per l'editor esiste un provider della guida per la firma\",\"Indica se per l'editor esiste un provider di suggerimenti inline\",\"Indica se per l'editor esiste un provider di formattazione documenti\",\"Indica se per l'editor esiste un provider di formattazione di selezioni documento\",\"Indica se per l'editor esistono pi\\xF9 provider di formattazione documenti\",\"Indica se per l'editor esistono pi\\xF9 provider di formattazione di selezioni documento\"],\"vs/editor/common/languages\":[\"matrice\",\"valore booleano\",\"classe\",\"costante\",\"costruttore\",\"enumerazione\",\"membro di enumerazione\",\"evento\",\"campo\",\"file\",\"funzione\",\"interfaccia\",\"chiave\",\"metodo\",\"modulo\",\"spazio dei nomi\",\"Null\",\"numero\",\"oggetto\",\"operatore\",\"pacchetto\",\"propriet\\xE0\",\"stringa\",\"struct\",\"parametro di tipo\",\"variabile\",\"{0} ({1})\"],\"vs/editor/common/languages/modesRegistry\":[\"Testo normale\"],\"vs/editor/common/model/editStack\":[\"Digitazione\"],\"vs/editor/common/standaloneStrings\":[\"Sviluppatore: Controlla token\",\"Vai a Riga/Colonna...\",\"Mostra tutti i provider di accesso rapido\",\"Riquadro comandi\",\"Mostra ed esegui comandi\",\"Vai al simbolo...\",\"Vai al simbolo per categoria...\",\"Contenuto editor\",\"Premere ALT+F1 per le opzioni di accessibilit\\xE0.\",\"Attiva/disattiva tema a contrasto elevato\",\"Effettuate {0} modifiche in {1} file\"],\"vs/editor/common/viewLayout/viewLineRenderer\":[\"Mostra di pi\\xF9 ({0})\",\"{0} caratteri\"],\"vs/editor/contrib/anchorSelect/browser/anchorSelect\":[\"Ancoraggio della selezione\",\"Ancoraggio impostato alla posizione {0}:{1}\",\"Imposta ancoraggio della selezione\",\"Vai ad ancoraggio della selezione\",\"Seleziona da ancoraggio a cursore\",\"Annulla ancoraggio della selezione\"],\"vs/editor/contrib/bracketMatching/browser/bracketMatching\":[\"Colore del marcatore del righello delle annotazioni per la corrispondenza delle parentesi.\",\"Vai alla parentesi quadra\",\"Seleziona fino alla parentesi\",\"Rimuovi parentesi quadre\",\"Vai alla parentesi &&quadra\"],\"vs/editor/contrib/caretOperations/browser/caretOperations\":[\"Sposta testo selezionato a sinistra\",\"Sposta testo selezionato a destra\"],\"vs/editor/contrib/caretOperations/browser/transpose\":[\"Trasponi lettere\"],\"vs/editor/contrib/clipboard/browser/clipboard\":[\"&&Taglia\",\"Taglia\",\"Taglia\",\"Taglia\",\"&&Copia\",\"Copia\",\"Copia\",\"Copia\",\"Copia con nome\",\"Copia con nome\",\"Condividi\",\"Condividi\",\"Condividi\",\"&&Incolla\",\"Incolla\",\"Incolla\",\"Incolla\",\"Copia con evidenziazione sintassi\"],\"vs/editor/contrib/codeAction/browser/codeAction\":[\"Si \\xE8 verificato un errore sconosciuto durante l'applicazione dell'azione del codice\"],\"vs/editor/contrib/codeAction/browser/codeActionCommands\":[\"Tipo dell'azione codice da eseguire.\",\"Controlla quando vengono applicate le azioni restituite.\",\"Applica sempre la prima azione codice restituita.\",\"Applica la prima azione codice restituita se \\xE8 l'unica.\",\"Non applicare le azioni codice restituite.\",\"Controlla se devono essere restituite solo le azioni codice preferite.\",\"Correzione rapida...\",\"Azioni codice non disponibili\",\"Non sono disponibili azioni codice preferite per '{0}'\",\"Non sono disponibili azioni codice per '{0}'\",\"Non sono disponibili azioni codice preferite\",\"Azioni codice non disponibili\",\"Effettua refactoring...\",\"Non sono disponibili refactoring preferiti per '{0}'\",\"Non sono disponibili refactoring per '{0}'\",\"Non sono disponibili refactoring preferiti\",\"Refactoring non disponibili\",\"Azione origine...\",\"Non sono disponibili azioni origine preferite per '{0}'\",\"Non sono disponibili azioni origine per '{0}'\",\"Non sono disponibili azioni origine preferite\",\"Azioni origine non disponibili\",\"Organizza import\",\"Azioni di organizzazione Imports non disponibili\",\"Correggi tutto\",\"Non \\xE8 disponibile alcuna azione Correggi tutto\",\"Correzione automatica...\",\"Non sono disponibili correzioni automatiche\"],\"vs/editor/contrib/codeAction/browser/codeActionContributions\":[\"Abilita/disabilita la visualizzazione delle intestazioni gruppo nel menu Azione codice.\"],\"vs/editor/contrib/codeAction/browser/codeActionController\":[\"Nascondi elementi disabilitati\",\"Mostra elementi disabilitati\"],\"vs/editor/contrib/codeAction/browser/codeActionMenu\":[\"Altre azioni...\",\"Correzione rapida...\",\"Estrai...\",\"Inline...\",\"Riscrivi...\",\"Sposta...\",\"Racchiudi con...\",\"Azione di origine...\"],\"vs/editor/contrib/codeAction/browser/lightBulbWidget\":[\"Mostra azioni codice. Correzione rapida preferita disponibile ({0})\",\"Mostra Azioni codice ({0})\",\"Mostra Azioni codice\"],\"vs/editor/contrib/codelens/browser/codelensController\":[\"Mostra comandi di CodeLens per la riga corrente\"],\"vs/editor/contrib/colorPicker/browser/colorPickerWidget\":[\"Fare clic per attivare/disattivare le opzioni di colore (rgb/hsl/hex)\",\"Icona per chiudere la selezione colori\"],\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\":[\"Mostra o sposta lo stato attivo su Selezione colori autonomo\",\"&&Mostra o sposta lo stato attivo su Selezione colori autonomo\",\"Nascondere la Selezione colori\",\"Inserire colore con Selezione colori autonomo\"],\"vs/editor/contrib/comment/browser/comment\":[\"Attiva/disattiva commento per la riga\",\"Attiva/Disattiva commento per la &&riga\",\"Aggiungi commento per la riga\",\"Rimuovi commento per la riga\",\"Attiva/Disattiva commento per il blocco\",\"Attiva/Disattiva commento per il &&blocco\"],\"vs/editor/contrib/contextmenu/browser/contextmenu\":[\"Minimappa\",\"Esegui rendering dei caratteri\",\"Dimensioni verticali\",\"Proporzionale\",\"Riempimento\",\"Adatta\",\"Dispositivo di scorrimento\",\"Passaggio del mouse\",\"Sempre\",\"Mostra il menu di scelta rapida editor\"],\"vs/editor/contrib/cursorUndo/browser/cursorUndo\":[\"Cursore - Annulla\",\"Cursore - Ripeti\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\":[\"Incolla come...\",\"ID della modifica dell'operazione Incolla da provare ad applicare. Se non viene specificato, l'editor mostrer\\xE0 un controllo di selezione.\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\":[\"Indica se il widget dell'operazione Incolla viene visualizzato\",\"Mostra opzioni operazione Incolla...\",\"Esecuzione dei gestori del comando Incolla. Fare clic per annullare\",\"Seleziona azione Incolla\",\"Esecuzione dei gestori Incolla in corso\"],\"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\":[\"Predefinita\",\"Inserire testo normale\",\"Inserire l'URL\",\"Inserire l'Uri\",\"Inserire percorsi\",\"Inserire percorso\",\"Inserire percorsi relativi\",\"Inserire percorso relativo\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\":[\"Configures the default drop provider to use for content of a given mime type.\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\":[\"Indica se il widget di rilascio viene visualizzato\",\"Mostra opzioni di rilascio...\",\"Esecuzione dei gestori di rilascio. Fare clic per annullare\"],\"vs/editor/contrib/editorState/browser/keybindingCancellation\":[\"Indica se l'editor esegue un'operazione annullabile, ad esempio 'Anteprima riferimenti'\"],\"vs/editor/contrib/find/browser/findController\":[\"Trova\",\"&&Trova\",`Esegue l'override del contrassegno \"Usa espressione regolare\".\\r\nIl contrassegno non verr\\xE0 salvato per il futuro.\\r\n0: Non eseguire alcuna operazione\\r\n1: Vero\\r\n2: Falso`,`Esegue l'override del contrassegno \"Corrispondenza parola intera\".\\r\nIl contrassegno non verr\\xE0 salvato per il futuro.\\r\n0: Non eseguire alcuna operazione\\r\n1: Vero\\r\n2: Falso`,`Esegue l'override del contrassegno \"Fai corrispondere maiuscole/minuscole\".\\r\nIl contrassegno non verr\\xE0 salvato per il futuro.\\r\n0: Non eseguire alcuna operazione\\r\n1: Vero\\r\n2: Falso`,`Esegue l'override del contrassegno \"Mantieni maiuscole/minuscole\".\\r\nIl contrassegno non verr\\xE0 salvato per il futuro.\\r\n0: Non eseguire alcuna operazione\\r\n1: Vero\\r\n2: Falso`,\"Trova con gli argomenti\",\"Trova con selezione\",\"Trova successivo\",\"Trova precedente\",\"Andare a Corrispondenza...\",\"Nessuna corrispondenza. Provare a cercare qualcos'altro.\",\"Digitare un numero per passare a una corrispondenza specifica (tra 1 e {0})\",\"Digitare un numero compreso tra 1 e {0}\",\"Digitare un numero compreso tra 1 e {0}\",\"Trova selezione successiva\",\"Trova selezione precedente\",\"Sostituisci\",\"&&Sostituisci\"],\"vs/editor/contrib/find/browser/findWidget\":[\"Icona per 'Trova nella selezione' nel widget di ricerca dell'editor.\",\"Icona per indicare che il widget di ricerca dell'editor \\xE8 compresso.\",\"Icona per indicare che il widget di ricerca dell'editor \\xE8 espanso.\",\"Icona per 'Sostituisci' nel widget di ricerca dell'editor.\",\"Icona per 'Sostituisci tutto' nel widget di ricerca dell'editor.\",\"Icona per 'Trova precedente' nel widget di ricerca dell'editor.\",\"Icona per 'Trova successivo' nel widget di ricerca dell'editor.\",\"Trova/Sostituisci\",\"Trova\",\"Trova\",\"Risultato precedente\",\"Risultato successivo\",\"Trova nella selezione\",\"Chiudi\",\"Sostituisci\",\"Sostituisci\",\"Sostituisci\",\"Sostituisci tutto\",\"Attiva/Disattiva sostituzione\",\"Solo i primi {0} risultati vengono evidenziati, ma tutte le operazioni di ricerca funzionano su tutto il testo.\",\"{0} di {1}\",\"Nessun risultato\",\"{0} trovato\",\"{0} trovati per '{1}'\",\"{0} trovati per '{1}' alla posizione {2}\",\"{0} trovati per '{1}'\",\"Il tasto di scelta rapida CTRL+INVIO ora consente di inserire l'interruzione di linea invece di sostituire tutto. Per eseguire l'override di questo comportamento, \\xE8 possibile modificare il tasto di scelta rapida per editor.action.replaceAll.\"],\"vs/editor/contrib/folding/browser/folding\":[\"Espandi\",\"Espandi in modo ricorsivo\",\"Riduci\",\"Attiva/Disattiva riduzione\",\"Riduci in modo ricorsivo\",\"Riduci tutti i blocchi commento\",\"Riduci tutte le regioni\",\"Espandi tutte le regioni\",\"Riduci tutte le regioni eccetto quelle selezionate\",\"Espandi tutte le regioni eccetto quelle selezionate\",\"Riduci tutto\",\"Espandi tutto\",\"Vai alla cartella principale\",\"Passa all'intervallo di riduzione precedente\",\"Passa all'intervallo di riduzione successivo\",\"Creare intervallo di riduzione dalla selezione\",\"Rimuovi intervalli di riduzione manuale\",\"Livello riduzione {0}\"],\"vs/editor/contrib/folding/browser/foldingDecorations\":[\"Colore di sfondo degli intervalli con riduzione. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore del controllo di riduzione nella barra di navigazione dell'editor.\",\"Icona per gli intervalli espansi nel margine del glifo dell'editor.\",\"Icona per gli intervalli compressi nel margine del glifo dell'editor.\",\"Icona per gli intervalli compressi nel margine del glifo dell'editor.\",\"Icona per gli intervalli espansi manualmente nel margine del glifo dell'editor.\"],\"vs/editor/contrib/fontZoom/browser/fontZoom\":[\"Zoom avanti tipo di carattere editor\",\"Zoom indietro tipo di carattere editor\",\"Reimpostazione zoom tipo di carattere editor\"],\"vs/editor/contrib/format/browser/format\":[\"\\xC8 stata apportata 1 modifica di formattazione a riga {0}\",\"Sono state apportate {0} modifiche di formattazione a riga {1}\",\"\\xC8 stata apportata 1 modifica di formattazione tra le righe {0} e {1}\",\"Sono state apportate {0} modifiche di formattazione tra le righe {1} e {2}\"],\"vs/editor/contrib/format/browser/formatActions\":[\"Formatta documento\",\"Formatta selezione\"],\"vs/editor/contrib/gotoError/browser/gotoError\":[\"Vai al problema successivo (Errore, Avviso, Informazioni)\",\"Icona per il marcatore Vai a successivo.\",\"Vai al problema precedente (Errore, Avviso, Informazioni)\",\"Icona per il marcatore Vai a precedente.\",\"Vai al problema successivo nei file (Errore, Avviso, Informazioni)\",\"&&Problema successivo\",\"Vai al problema precedente nei file (Errore, Avviso, Informazioni)\",\"&&Problema precedente\"],\"vs/editor/contrib/gotoError/browser/gotoErrorWidget\":[\"Errore\",\"Avviso\",\"Info\",\"Suggerimento\",\"{0} a {1}. \",\"{0} di {1} problemi\",\"{0} di {1} problema\",\"Colore per gli errori del widget di spostamento tra marcatori dell'editor.\",\"Intestazione errore per lo sfondo del widget di spostamento tra marcatori dell'editor.\",\"Colore per gli avvisi del widget di spostamento tra marcatori dell'editor.\",\"Intestazione avviso per lo sfondo del widget di spostamento tra marcatori dell'editor.\",\"Colore delle informazioni del widget di navigazione marcatori dell'editor.\",\"Intestazione informativa per lo sfondo del widget di spostamento tra marcatori dell'editor.\",\"Sfondo del widget di spostamento tra marcatori dell'editor.\"],\"vs/editor/contrib/gotoSymbol/browser/goToCommands\":[\"Anteprima\",\"Definizioni\",\"Non \\xE8 stata trovata alcuna definizione per '{0}'\",\"Non \\xE8 stata trovata alcuna definizione\",\"Vai alla definizione\",\"Vai alla &&definizione\",\"Apri definizione lateralmente\",\"Visualizza in anteprima la definizione\",\"Dichiarazioni\",\"Non \\xE8 stata trovata alcuna dichiarazione per '{0}'\",\"Dichiarazione non trovata\",\"Vai a dichiarazione\",\"Vai a &&dichiarazione\",\"Non \\xE8 stata trovata alcuna dichiarazione per '{0}'\",\"Dichiarazione non trovata\",\"Anteprima dichiarazione\",\"Definizioni di tipo\",\"Non sono state trovate definizioni di tipi per '{0}'\",\"Non sono state trovate definizioni di tipi\",\"Vai alla definizione di tipo\",\"Vai alla &&definizione di tipo\",\"Anteprima definizione di tipo\",\"Implementazioni\",\"Non sono state trovate implementazioni per '{0}'\",\"Non sono state trovate implementazioni\",\"Vai a implementazioni\",\"Vai a &&Implementazioni\",\"Visualizza implementazioni\",\"Non sono stati trovati riferimenti per '{0}'\",\"Non sono stati trovati riferimenti\",\"Vai a Riferimenti\",\"Vai a &&riferimenti\",\"Riferimenti\",\"Anteprima riferimenti\",\"Riferimenti\",\"Vai a qualsiasi simbolo\",\"Posizioni\",\"Nessun risultato per '{0}'\",\"Riferimenti\"],\"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\":[\"Fare clic per visualizzare {0} definizioni.\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesController\":[\"Indica se l'anteprima riferimenti \\xE8 visibile, come 'Visualizza in anteprima riferimenti' o 'Visualizza in anteprima la definizione'\",\"Caricamento...\",\"{0} ({1})\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\":[\"{0} riferimenti\",\"{0} riferimento\",\"Riferimenti\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\":[\"anteprima non disponibile\",\"Nessun risultato\",\"Riferimenti\"],\"vs/editor/contrib/gotoSymbol/browser/referencesModel\":[\"in {0} alla riga {1} della colonna {2}\",\"{0} in {1} alla riga {2} della colonna {3}\",\"1 simbolo in {0}, percorso completo {1}\",\"{0} simboli in {1}, percorso completo {2}\",\"Non sono stati trovati risultati\",\"Trovato 1 simbolo in {0}\",\"Trovati {0} simboli in {1}\",\"Trovati {0} simboli in {1} file\"],\"vs/editor/contrib/gotoSymbol/browser/symbolNavigation\":[\"Indica se sono presenti posizioni dei simboli a cui \\xE8 possibile passare solo tramite la tastiera.\",\"Simbolo {0} di {1}, {2} per il successivo\",\"Simbolo {0} di {1}\"],\"vs/editor/contrib/hover/browser/hover\":[\"Mostra o sposta lo stato attivo al passaggio del mouse\",\"Mostra anteprima definizione al passaggio del mouse\",\"Scorri verso l'alto al passaggio del mouse\",\"Scorri verso il basso al passaggio del mouse\",\"Scorri a sinistra al passaggio del mouse\",\"Scorri a destra al passaggio del mouse\",\"Vai alla pagina precedente al passaggio del mouse\",\"Vai alla pagina successiva al passaggio del mouse\",\"Vai in alto al passaggio del mouse\",\"Vai in basso al passaggio del mouse\"],\"vs/editor/contrib/hover/browser/markdownHoverParticipant\":[\"Caricamento...\",\"Rendering sospeso per una linea lunga per motivi di prestazioni. Pu\\xF2 essere configurato tramite 'editor.stopRenderingLineAfter'.\",\"Per motivi di prestazioni la tokenizzazione viene ignorata per le righe lunghe. \\xC8 possibile effettuare questa configurazione tramite `editor.maxTokenizationLineLength`.\"],\"vs/editor/contrib/hover/browser/markerHoverParticipant\":[\"Visualizza problema\",\"Non sono disponibili correzioni rapide\",\"Verifica disponibilit\\xE0 correzioni rapide...\",\"Non sono disponibili correzioni rapide\",\"Correzione rapida...\"],\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\":[\"Sostituisci con il valore precedente\",\"Sostituisci con il valore successivo\"],\"vs/editor/contrib/indentation/browser/indentation\":[\"Converti rientro in spazi\",\"Converti rientro in tabulazioni\",\"Dimensione tabulazione configurata\",\"Dimensioni predefinite della scheda\",\"Dimensioni della scheda corrente\",\"Seleziona dimensione tabulazione per il file corrente\",\"Imposta rientro con tabulazioni\",\"Imposta rientro con spazi\",\"Modifica dimensioni visualizzazione scheda\",\"Rileva rientro dal contenuto\",\"Imposta nuovo rientro per righe\",\"Re-Indenta le Linee Selezionate\"],\"vs/editor/contrib/inlayHints/browser/inlayHintsHover\":[\"Fare doppio clic per inserire\",\"CMD+clic\",\"CTRL+clic\",\"Opzione+clic\",\"ALT+clic\",\"Vai alla definizione ({0}), fai clic con il pulsante destro del mouse per altre informazioni\",\"Vai alla definizione ({0})\",\"Esegui il comando\"],\"vs/editor/contrib/inlineCompletions/browser/commands\":[\"Mostrare suggerimento inline successivo\",\"Mostrare suggerimento inline precedente\",\"Trigger del suggerimento inline\",\"Accettare suggerimento inline per la parola successiva\",\"Accetta parola\",\"Accetta la riga successiva del suggerimento in linea\",\"Accetta riga\",\"Accetta il suggerimento in linea\",\"Accetta\",\"Nascondi suggerimento inline\",\"Mostra sempre la barra degli strumenti\"],\"vs/editor/contrib/inlineCompletions/browser/hoverParticipant\":[\"Suggerimento:\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\":[\"Se \\xE8 visibile un suggerimento inline\",\"Se il suggerimento in linea inizia con spazi vuoti\",\"Indica se il suggerimento inline inizia con uno spazio vuoto minore di quello che verrebbe inserito dalla tabulazione\",\"Indica se i suggerimenti devono essere eliminati per il suggerimento corrente\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\":[\"Inspect this in the accessible view ({0})\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\":[\"Icona per visualizzare il suggerimento del parametro successivo.\",\"Icona per visualizzare il suggerimento del parametro precedente.\",\"{0} ({1})\",\"Indietro\",\"Avanti\"],\"vs/editor/contrib/lineSelection/browser/lineSelection\":[\"Espandere selezione riga\"],\"vs/editor/contrib/linesOperations/browser/linesOperations\":[\"Copia la riga in alto\",\"&&Copia la riga in alto\",\"Copia la riga in basso\",\"Co&&pia la riga in basso\",\"Duplica selezione\",\"&&Duplica selezione\",\"Sposta la riga in alto\",\"Sposta la riga in &&alto\",\"Sposta la riga in basso\",\"Sposta la riga in &&basso\",\"Ordinamento righe crescente\",\"Ordinamento righe decrescente\",\"Elimina righe duplicate\",\"Taglia spazio vuoto finale\",\"Elimina riga\",\"Imposta un rientro per la riga\",\"Riduci il rientro per la riga\",\"Inserisci la riga sopra\",\"Inserisci la riga sotto\",\"Elimina tutto a sinistra\",\"Elimina tutto a destra\",\"Unisci righe\",\"Trasponi caratteri intorno al cursore\",\"Converti in maiuscolo\",\"Converti in minuscolo\",\"Trasforma in Tutte Iniziali Maiuscole\",\"Trasforma in snake case\",\"Trasforma in caso Camel\",\"Trasformare in caso Kebab\"],\"vs/editor/contrib/linkedEditing/browser/linkedEditing\":[\"Avvia modifica collegata\",\"Colore di sfondo quando l'editor viene rinominato automaticamente in base al tipo.\"],\"vs/editor/contrib/links/browser/links\":[\"Non \\xE8 stato possibile aprire questo collegamento perch\\xE9 il formato non \\xE8 valido: {0}\",\"Non \\xE8 stato possibile aprire questo collegamento perch\\xE9 manca la destinazione.\",\"Esegui il comando\",\"Visita il collegamento\",\"CMD+clic\",\"CTRL+clic\",\"Opzione+clic\",\"ALT+clic\",\"Esegue il comando {0}\",\"Apri collegamento\"],\"vs/editor/contrib/message/browser/messageController\":[\"Indica se l'editor visualizza attualmente un messaggio inline\"],\"vs/editor/contrib/multicursor/browser/multicursor\":[\"Cursore aggiunto: {0}\",\"Cursori aggiunti: {0}\",\"Aggiungi cursore sopra\",\"&&Aggiungi cursore sopra\",\"Aggiungi cursore sotto\",\"A&&ggiungi cursore sotto\",\"Aggiungi cursori a fine riga\",\"Aggiungi c&&ursori a fine riga\",\"Aggiungi cursori alla fine\",\"Aggiungi cursori all'inizio\",\"Aggiungi selezione a risultato ricerca successivo\",\"Aggiungi &&occorrenza successiva\",\"Aggiungi selezione a risultato ricerca precedente\",\"Aggiungi occorrenza &&precedente\",\"Sposta ultima selezione a risultato ricerca successivo\",\"Sposta ultima selezione a risultato ricerca precedente\",\"Seleziona tutte le occorrenze del risultato ricerca\",\"Seleziona &&tutte le occorrenze\",\"Cambia tutte le occorrenze\",\"Attival cursore successivo\",\"Attiva il cursore successivo\",\"Cursore precedente stato attivo\",\"Imposta lo stato attivo sul cursore precedente\"],\"vs/editor/contrib/parameterHints/browser/parameterHints\":[\"Attiva i suggerimenti per i parametri\"],\"vs/editor/contrib/parameterHints/browser/parameterHintsWidget\":[\"Icona per visualizzare il suggerimento del parametro successivo.\",\"Icona per visualizzare il suggerimento del parametro precedente.\",\"{0}, suggerimento\",\"Colore di primo piano dell\\u2019articolo attivo nel suggerimento di parametro.\"],\"vs/editor/contrib/peekView/browser/peekView\":[\"Indica se l'editor di codice corrente \\xE8 incorporato nell'anteprima\",\"Chiudi\",\"Colore di sfondo dell'area del titolo della visualizzazione rapida.\",\"Colore del titolo della visualizzazione rapida.\",\"Colore delle informazioni del titolo della visualizzazione rapida.\",\"Colore dei bordi e della freccia della visualizzazione rapida.\",\"Colore di sfondo dell'elenco risultati della visualizzazione rapida.\",\"Colore primo piano dei nodi riga nell'elenco risultati della visualizzazione rapida.\",\"Colore primo piano dei nodi file nell'elenco risultati della visualizzazione rapida.\",\"Colore di sfondo della voce selezionata nell'elenco risultati della visualizzazione rapida.\",\"Colore primo piano della voce selezionata nell'elenco risultati della visualizzazione rapida.\",\"Colore di sfondo dell'editor di visualizzazioni rapide.\",\"Colore di sfondo della barra di navigazione nell'editor visualizzazione rapida.\",\"Colore di sfondo della barra di scorrimento permanente nell'editor visualizzazione rapida.\",\"Colore dell'evidenziazione delle corrispondenze nell'elenco risultati della visualizzazione rapida.\",\"Colore dell'evidenziazione delle corrispondenze nell'editor di visualizzazioni rapide.\",\"Bordo dell'evidenziazione delle corrispondenze nell'editor di visualizzazioni rapide.\"],\"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\":[\"Aprire prima un editor di testo per passare a una riga.\",\"Vai a riga {0} e carattere {1}.\",\"Vai alla riga {0}.\",\"Riga corrente: {0}, carattere: {1}. Digitare un numero di riga a cui passare compreso tra 1 e {2}.\",\"Riga corrente: {0}, Carattere: {1}. Digitare un numero di riga a cui passare.\"],\"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\":[\"Per passare a un simbolo, aprire prima un editor di testo con informazioni sui simboli.\",\"L'editor di testo attivo non fornisce informazioni sui simboli.\",\"Non ci sono simboli dell'editor corrispondenti\",\"Non ci sono simboli dell'editor\",\"Apri lateralmente\",\"Apri in basso\",\"simboli ({0})\",\"propriet\\xE0 ({0})\",\"metodi ({0})\",\"funzioni ({0})\",\"costruttori ({0})\",\"variabili ({0})\",\"classi ({0})\",\"struct ({0})\",\"eventi ({0})\",\"operatori ({0})\",\"interfacce ({0})\",\"spazi dei nomi ({0})\",\"pacchetti ({0})\",\"parametri di tipo ({0})\",\"moduli ({0})\",\"propriet\\xE0 ({0})\",\"enumerazioni ({0})\",\"membri di enumerazione ({0})\",\"stringhe ({0})\",\"file ({0})\",\"matrici ({0})\",\"numeri ({0})\",\"valori booleani ({0})\",\"oggetti ({0})\",\"chiavi ({0})\",\"campi ({0})\",\"costanti ({0})\"],\"vs/editor/contrib/readOnlyMessage/browser/contribution\":[\"Non \\xE8 possibile modificare nell'input di sola lettura\",\"Non \\xE8 possibile modificare nell'editor di sola lettura\"],\"vs/editor/contrib/rename/browser/rename\":[\"Nessun risultato.\",\"Si \\xE8 verificato un errore sconosciuto durante la risoluzione del percorso di ridenominazione\",\"Ridenominazione di '{0}' in '{1}'\",\"Ridenominazione di {0} in {1}\",\"Correttamente rinominato '{0}' in '{1}'. Sommario: {2}\",\"La ridenominazione non \\xE8 riuscita ad applicare le modifiche\",\"La ridenominazione non \\xE8 riuscita a calcolare le modifiche\",\"Rinomina simbolo\",\"Abilita/Disabilita l'opzione per visualizzare le modifiche in anteprima prima della ridenominazione\"],\"vs/editor/contrib/rename/browser/renameInputField\":[\"Indica se il widget di ridenominazione input \\xE8 visibile\",\"Consente di rinominare l'input. Digitare il nuovo nome e premere INVIO per eseguire il commit.\",\"{0} per rinominare, {1} per visualizzare in anteprima\"],\"vs/editor/contrib/smartSelect/browser/smartSelect\":[\"Espandi selezione\",\"Espan&&di selezione\",\"Riduci selezione\",\"&&Riduci selezione\"],\"vs/editor/contrib/snippet/browser/snippetController2\":[\"Indica se l'editor \\xE8 quello corrente nella modalit\\xE0 frammenti\",\"Indica se \\xE8 presente una tabulazione successiva in modalit\\xE0 frammenti\",\"Indica se \\xE8 presente una tabulazione precedente in modalit\\xE0 frammenti\",\"Vai al segnaposto successivo...\"],\"vs/editor/contrib/snippet/browser/snippetVariables\":[\"Domenica\",\"Luned\\xEC\",\"Marted\\xEC\",\"Mercoled\\xEC\",\"Gioved\\xEC\",\"Venerd\\xEC\",\"Sabato\",\"Dom\",\"Lun\",\"Mar\",\"Mer\",\"Gio\",\"Ven\",\"Sab\",\"Gennaio\",\"Febbraio\",\"Marzo\",\"Aprile\",\"Mag\",\"Giugno\",\"Luglio\",\"Agosto\",\"Settembre\",\"Ottobre\",\"Novembre\",\"Dicembre\",\"Gen\",\"Feb\",\"Mar\",\"Apr\",\"Mag\",\"Giu\",\"Lug\",\"Ago\",\"Set\",\"Ott\",\"Nov\",\"Dic\"],\"vs/editor/contrib/stickyScroll/browser/stickyScrollActions\":[\"Alternanza scorrimento permanente\",\"&&Alternanza scorrimento permanente\",\"Scorrimento permanente\",\"&&Scorrimento permanente\",\"Sposta stato attivo su Scorrimento permanente\",\"&&Sposta stato attivo su Scorrimento permanente\",\"Seleziona la riga di scorrimento permanente successiva\",\"Seleziona riga di scorrimento permanente precedente\",\"Vai alla linea di scorrimento permanente attiva\",\"Selezionare l'editor\"],\"vs/editor/contrib/suggest/browser/suggest\":[\"Indica se i suggerimenti sono evidenziati\",\"Indica se i dettagli dei suggerimenti sono visibili\",\"Indica se sono presenti pi\\xF9 suggerimenti da cui scegliere\",\"Indica se l'inserimento del suggerimento corrente comporta una modifica oppure se completa gi\\xE0 l'input\",\"Indica se i suggerimenti vengono inseriti quando si preme INVIO\",\"Indica se il suggerimento corrente include il comportamento di inserimento e sostituzione\",\"Indica se il comportamento predefinito \\xE8 quello di inserimento o sostituzione\",\"Indica se il suggerimento corrente supporta la risoluzione di ulteriori dettagli\"],\"vs/editor/contrib/suggest/browser/suggestController\":[\"In seguito all'accettazione di '{0}' sono state apportate altre {1} modifiche\",\"Attiva suggerimento\",\"Inserisci\",\"Inserisci\",\"Sostituisci\",\"Sostituisci\",\"Inserisci\",\"nascondi dettagli\",\"mostra dettagli\",\"Reimposta le dimensioni del widget dei suggerimenti\"],\"vs/editor/contrib/suggest/browser/suggestWidget\":[\"Colore di sfondo del widget dei suggerimenti.\",\"Colore del bordo del widget dei suggerimenti.\",\"Colore primo piano del widget dei suggerimenti.\",\"Colore primo piano della voce selezionata del widget dei suggerimenti.\",\"Colore primo piano dell\\u2019icona della voce selezionata del widget dei suggerimenti.\",\"Colore di sfondo della voce selezionata del widget dei suggerimenti.\",\"Colore delle evidenziazioni corrispondenze nel widget dei suggerimenti.\",\"Colore delle evidenziazioni corrispondenze nel widget dei suggerimenti quando lo stato attivo si trova su un elemento.\",\"Colore primo piano dello stato del widget dei suggerimenti.\",\"Caricamento...\",\"Non ci sono suggerimenti.\",\"Suggerisci\",\"{0} {1}, {2}\",\"{0} {1}\",\"{0}, {1}\",\"{0}, documenti: {1}\"],\"vs/editor/contrib/suggest/browser/suggestWidgetDetails\":[\"Chiudi\",\"Caricamento...\"],\"vs/editor/contrib/suggest/browser/suggestWidgetRenderer\":[\"Icona per visualizzare altre informazioni nel widget dei suggerimenti.\",\"Altre informazioni\"],\"vs/editor/contrib/suggest/browser/suggestWidgetStatus\":[\"{0} ({1})\"],\"vs/editor/contrib/symbolIcons/browser/symbolIcons\":[\"Colore primo piano per i simboli di matrice. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli booleani. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di classe. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di colore. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di costante. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di costruttore. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di enumeratore. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di membro di enumeratore. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di evento. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di campo. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di file. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di cartella. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di funzione. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di interfaccia. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di chiave. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di parola chiave. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di metodo. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di modulo. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di spazio dei nomi. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli Null. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli numerici. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di oggetto. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di operatore. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di pacchetto. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di propriet\\xE0. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di riferimento. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di frammento. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di stringa. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di struct. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di testo. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di parametro di tipo. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di unit\\xE0. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\",\"Colore primo piano per i simboli di variabile. Questi simboli vengono visualizzati nella struttura, nell'elemento di navigazione e nel widget dei suggerimenti.\"],\"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\":[\"Attiva/Disattiva l'uso di TAB per spostare lo stato attivo\",\"Se si preme TAB, lo stato attivo verr\\xE0 spostato sull'elemento con stato attivabile successivo.\",\"Se si preme TAB, verr\\xE0 inserito il carattere di tabulazione\"],\"vs/editor/contrib/tokenization/browser/tokenization\":[\"Sviluppatore: Forza retokenizzazione\"],\"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\":[\"Icona visualizzata con un messaggio di avviso nell'editor delle estensioni.\",\"Questo documento contiene molti caratteri Unicode ASCII non di base\",\"Il documento contiene molti caratteri Unicode ambigui\",\"Questo documento contiene molti caratteri Unicode invisibili\",\"Il carattere {0} potrebbe essere confuso con il carattere ASCII {1}, che \\xE8 pi\\xF9 comune nel codice sorgente.\",\"Il carattere {0} potrebbe essere confuso con il carattere {1}, che \\xE8 pi\\xF9 comune nel codice sorgente.\",\"Il carattere {0} \\xE8 invisibile.\",\"Il carattere {0} non \\xE8 un carattere ASCII di base.\",\"Modificare impostazioni\",\"Disabilita evidenziazione nei commenti\",\"Disabilita l'evidenziazione dei caratteri nei commenti\",\"Disabilita evidenziazione nelle stringhe\",\"Disabilita l'evidenziazione dei caratteri nelle stringhe\",\"Disabilitare evidenziazione ambigua\",\"Disabilitare l'evidenziazione dei caratteri ambigui\",\"Disabilitare evidenziazione invisibile\",\"Disabilitare l'evidenziazione dei caratteri invisibili\",\"Disabilitare evidenziazione non ASCII\",\"Disabilitare l'evidenziazione di caratteri ASCII non di base\",\"Mostrare opzioni di esclusione\",\"Escludere {0} (carattere invisibile) dall'evidenziazione\",\"Escludere {0} dall\\u2019essere evidenziata\",'Consentire i caratteri Unicode pi\\xF9 comuni nel linguaggio \"{0}\".',\"Configurare opzioni evidenziazione Unicode\"],\"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\":[\"Caratteri di terminazione di riga insoliti\",\"Sono stati rilevati caratteri di terminazione di riga insoliti\",'Il file \"\\r\\n\" contiene uno o pi\\xF9 caratteri di terminazione di riga insoliti, ad esempio separatore di riga (LS) o separatore di paragrafo (PS).{0}\\r\\n\\xC8 consigliabile rimuoverli dal file. \\xC8 possibile configurare questa opzione tramite `editor.unusualLineTerminators`.',\"&&Rimuovi i caratteri di terminazione di riga insoliti\",\"Ignora\"],\"vs/editor/contrib/wordHighlighter/browser/highlightDecorations\":[\"Colore di sfondo di un simbolo durante l'accesso in lettura, ad esempio durante la lettura di una variabile. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore di sfondo di un simbolo durante l'accesso in scrittura, ad esempio durante la scrittura in una variabile. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore di sfondo di un'occorrenza testuale per un simbolo. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore del bordo di un simbolo durante l'accesso in lettura, ad esempio durante la lettura di una variabile.\",\"Colore del bordo di un simbolo durante l'accesso in scrittura, ad esempio durante la scrittura in una variabile.\",\"Colore del bordo di un'occorrenza testuale per un simbolo.\",\"Colore del marcatore del righello delle annotazioni per le evidenziazioni dei simboli. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore del marcatore del righello delle annotazioni per le evidenziazioni dei simboli di accesso in scrittura. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore del marcatore del righello delle annotazioni di un'occorrenza testuale per un simbolo. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\"],\"vs/editor/contrib/wordHighlighter/browser/wordHighlighter\":[\"Vai al prossimo simbolo evidenziato\",\"Vai al precedente simbolo evidenziato\",\"Attiva/disattiva evidenziazione simbolo\"],\"vs/editor/contrib/wordOperations/browser/wordOperations\":[\"Elimina parola\"],\"vs/platform/action/common/actionCommonCategories\":[\"Visualizza\",\"Guida\",\"Test\",\"FILE\",\"Preferenze\",\"Sviluppatore\"],\"vs/platform/actionWidget/browser/actionList\":[\"{0} per Applica, {1} per Anteprima\",\"{0} da applicare\",\"{0}, Motivo disabilitato: {1}\",\"Widget azione\"],\"vs/platform/actionWidget/browser/actionWidget\":[\"Background color for toggled action items in action bar.\",\"Indica se l'elenco di widget azione \\xE8 visibile\",\"Nascondi widget azione\",\"Seleziona azione precedente\",\"Seleziona azione successiva\",\"Accetta l'azione selezionata\",\"Anteprima azione selezionata\"],\"vs/platform/actions/browser/menuEntryActionViewItem\":[\"{0} ({1})\",\"{0} ({1})\",`{0}\\r\n[{1}] {2}`],\"vs/platform/actions/browser/toolbar\":[\"Nascondi\",\"Reimposta menu\"],\"vs/platform/actions/common/menuService\":[\"Nascondi '{0}'\"],\"vs/platform/audioCues/browser/audioCueService\":[\"Errore sulla riga\",\"Avviso sulla riga\",\"Area piegata sulla linea\",\"Punto di interruzione sulla riga\",\"Suggerimento inline sulla riga\",\"Correzione rapida terminale\",\"Debugger arrestato sul punto di interruzione\",\"Nessun suggerimento per l'inlay nella riga\",\"Attivit\\xE0 completata\",\"Attivit\\xE0 non riuscita\",\"Comando terminale non riuscito\",\"Campanello terminale\",\"Cella del notebook completata\",\"La cella del notebook ha avuto esito negativo\",\"Riga diff inserita\",\"Riga diff eliminata\",\"Riga diff modificata\",\"Richiesta chat inviata\",\"Risposta chat ricevuta\",\"Risposta chat in sospeso\"],\"vs/platform/configuration/common/configurationRegistry\":[\"Override configurazione predefinita del linguaggio\",\"Consente di configurare le impostazioni di cui eseguire l'override per il linguaggio {0}.\",\"Consente di configurare le impostazioni dell'editor di cui eseguire l'override per un linguaggio.\",\"Questa impostazione non supporta la configurazione per lingua.\",\"Consente di configurare le impostazioni dell'editor di cui eseguire l'override per un linguaggio.\",\"Questa impostazione non supporta la configurazione per lingua.\",\"Non \\xE8 possibile registrare una propriet\\xE0 vuota\",\"Non \\xE8 possibile registrare '{0}'. Corrisponde al criterio di propriet\\xE0 '\\\\\\\\[.*\\\\\\\\]$' per la descrizione delle impostazioni dell'editor specifiche del linguaggio. Usare il contributo 'configurationDefaults'.\",\"Non \\xE8 possibile registrare '{0}'. Questa propriet\\xE0 \\xE8 gi\\xE0 registrata.\",\"Impossibile registrare '{0}'. Il {1} dei criteri associato \\xE8 gi\\xE0 registrato con {2}.\"],\"vs/platform/contextkey/browser/contextKeyService\":[\"Comando che restituisce informazioni sulle chiavi di contesto\"],\"vs/platform/contextkey/common/contextkey\":[\"Espressione chiave di contesto vuota\",\"Si \\xE8 dimenticato di scrivere un'espressione? \\xC8 anche possibile inserire 'false' o 'true' per restituire sempre rispettivamente false o true.\",\"'in' dopo 'not'.\",\"Parentesi chiusa ')'\",\"Token imprevisto\",\"Si \\xE8 dimenticato di inserire && o || prima del token?\",\"Fine imprevista dell'espressione\",\"Si \\xE8 dimenticato di inserire una chiave di contesto?\",`Previsto: {0}\\r\nRicevuto: '{1}'.`],\"vs/platform/contextkey/common/contextkeys\":[\"Indica se il sistema operativo \\xE8 macOS\",\"Indica se il sistema operativo \\xE8 Linux\",\"Indica se il sistema operativo \\xE8 Windows\",\"Indica se la piattaforma \\xE8 un Web browser\",\"Indica se il sistema operativo \\xE8 macOS in una piattaforma non basata su browser\",\"Indica se il sistema operativo \\xE8 iOS\",\"Indica se la piattaforma \\xE8 un Web browser per dispositivi mobili\",\"Tipo di qualit\\xE0 del VS Code\",\"Indica se lo stato attivo della tastiera si trova all'interno di una casella di input\"],\"vs/platform/contextkey/common/scanner\":[\"Si intendeva {0}?\",\"Si intendeva {0} o {1}?\",\"Si intendeva {0}, {1} o {2}?\",\"Si \\xE8 dimenticato di aprire o chiudere la citazione?\",\"Si \\xE8 dimenticato di eseguire il carattere di escape '/' (slash)? Inserire due barre rovesciate prima del carattere di escape, ad esempio '\\\\\\\\/'.\"],\"vs/platform/history/browser/contextScopedHistoryWidget\":[\"Indica se i suggerimenti sono visibili\"],\"vs/platform/keybinding/common/abstractKeybindingService\":[\"\\xC8 stato premuto ({0}). In attesa del secondo tasto...\",\"\\xC8 stato premuto ({0}). In attesa del prossimo tasto...\",\"La combinazione di tasti ({0}, {1}) non \\xE8 un comando.\",\"La combinazione di tasti ({0}, {1}) non \\xE8 un comando.\"],\"vs/platform/list/browser/listService\":[\"Workbench\",\"Rappresenta il tasto 'Control' in Windows e Linux e il tasto 'Comando' in macOS.\",\"Rappresenta il tasto 'Alt' in Windows e Linux e il tasto 'Opzione' in macOS.\",\"Il modificatore da utilizzare per aggiungere un elemento di alberi e liste ad una selezione multipla con il mouse (ad esempio in Esplora Risorse, apre gli editor e le viste scm). Le gesture del mouse 'Apri a lato' - se supportate - si adatteranno in modo da non creare conflitti con il modificatore di selezione multipla.\",\"Controlla l'apertura degli elementi di alberi ed elenchi tramite il mouse (se supportato). Tenere presente che alcuni alberi ed elenchi potrebbero scegliere di ignorare questa impostazione se non \\xE8 applicabile.\",\"Controlla se elenchi e alberi supportano lo scorrimento orizzontale nell'area di lavoro. Avviso: l'attivazione di questa impostazione pu\\xF2 influire sulle prestazioni.\",\"Controlla se i clic nella barra di scorrimento scorrono pagina per pagina.\",\"Controlla il rientro dell'albero in pixel.\",\"Controlla se l'albero deve eseguire il rendering delle guide per i rientri.\",\"Controlla se elenchi e alberi prevedono lo scorrimento uniforme.\",\"Moltiplicatore da usare sui valori `deltaX` e `deltaY` degli eventi di scorrimento della rotellina del mouse.\",\"Moltiplicatore della velocit\\xE0 di scorrimento quando si preme `Alt`.\",\"Evidenziare gli elementi durante la ricerca. L'ulteriore spostamento verso l'alto e verso il basso attraverser\\xE0 solo gli elementi evidenziati.\",\"Filtra gli elementi durante la ricerca.\",\"Controlla la modalit\\xE0 di ricerca predefinita per elenchi e alberi nel workbench.\",\"Con lo stile di spostamento da tastiera simple lo stato attivo si trova sugli elementi che corrispondono all'input da tastiera. L'abbinamento viene effettuato solo in base ai prefissi.\",\"Con lo stile di spostamento da tastiera highlight vengono evidenziati gli elementi corrispondenti all'input da tastiera. Spostandosi ulteriormente verso l'alto o verso il basso ci si sposter\\xE0 solo negli elementi evidenziati.\",\"Con lo stile di spostamento da tastiera filter verranno filtrati e nascosti tutti gli elementi che non corrispondono all'input da tastiera.\",\"Controlla lo stile di spostamento da tastiera per elenchi e alberi nel workbench. Le opzioni sono: simple, highlight e filter.\",\"In alternativa, usare 'workbench.list.defaultFindMode' e 'workbench.list.typeNavigationMode'.\",\"Usa la corrispondenza fuzzy durante la ricerca.\",\"Usa corrispondenza contigua durante la ricerca.\",\"Controlla il tipo di corrispondenza usato per la ricerca di elenchi e alberi nel workbench.\",\"Controlla l'espansione delle cartelle di alberi quando si fa clic sui nomi delle cartelle. Tenere presente che alcuni alberi ed elenchi potrebbero scegliere di ignorare questa impostazione se non \\xE8 applicabile.\",\"Controllare il funzionamento dello spostamento dei tipi in elenchi e alberi nel workbench. Se impostato su 'trigger', l'esplorazione del tipo inizia dopo l'esecuzione del comando 'list.triggerTypeNavigation'.\"],\"vs/platform/markers/common/markers\":[\"Errore\",\"Avviso\",\"Info\"],\"vs/platform/quickinput/browser/commandsQuickAccess\":[\"usate di recente\",\"pi\\xF9 usato\",\"altri comandi\",\"{0}, {1}\",\"Il comando '{0}' ha restituito un errore\"],\"vs/platform/quickinput/browser/helpQuickAccess\":[\"{0}, {1}\"],\"vs/platform/quickinput/browser/quickInput\":[\"Indietro\",\"Premere 'INVIO' per confermare l'input oppure 'ESC' per annullare\",\"{0}/{1}\",\"Digitare per ridurre il numero di risultati.\"],\"vs/platform/quickinput/browser/quickInputController\":[\"Toggle all checkboxes\",\"{0} Results\",\"{0} Selected\",\"OK\",\"Custom\",\"Back ({0})\",\"Back\"],\"vs/platform/quickinput/browser/quickInputList\":[\"Input rapido\"],\"vs/platform/quickinput/browser/quickInputUtils\":[\"Fare clic per eseguire il comando '{0}'\"],\"vs/platform/theme/common/colorRegistry\":[\"Colore primo piano generale. Questo colore viene usato solo se non \\xE8 sostituito da quello di un componente.\",\"Primo piano generale per gli elementi disabilitati. Questo colore viene usato solo e non \\xE8 sostituito da quello di un componente.\",\"Colore primo piano globale per i messaggi di errore. Questo colore viene usato solo se non \\xE8 sostituito da quello di un componente.\",\"Colore primo piano del testo che fornisce informazioni aggiuntive, ad esempio per un'etichetta di testo.\",\"Colore predefinito per le icone nel workbench.\",\"Colore del bordo globale per gli elementi evidenziati. Questo colore viene usato solo se non \\xE8 sostituito da quello di un componente.\",\"Un bordo supplementare attorno agli elementi per contrastarli maggiormente rispetto agli altri.\",\"Un bordo supplementare intorno agli elementi attivi per contrastarli maggiormente rispetto agli altri.\",\"Il colore di sfondo delle selezioni di testo in workbench (ad esempio per i campi di input o aree di testo). Si noti che questo non si applica alle selezioni all'interno dell'editor.\",\"Colore dei separatori di testo.\",\"Colore primo piano dei link nel testo.\",\"Colore primo piano per i collegamenti nel testo quando vengono selezionati o al passaggio del mouse.\",\"Colore primo piano dei segmenti di testo preformattato.\",\"Colore di sfondo per le citazioni nel testo.\",\"Colore del bordo per le citazioni nel testo.\",\"Colore di sfondo per i blocchi di codice nel testo.\",\"Colore ombreggiatura dei widget, ad es. Trova/Sostituisci all'interno dell'editor.\",\"Colore del bordo dei widget, ad es. Trova/Sostituisci all'interno dell'editor.\",\"Sfondo della casella di input.\",\"Primo piano della casella di input.\",\"Bordo della casella di input.\",\"Colore del bordo di opzioni attivate nei campi di input.\",\"Colore di sfondo di opzioni attivate nei campi di input.\",\"Colore di sfondo al passaggio del mouse delle opzioni nei campi di input.\",\"Colore primo piano di opzioni attivate nei campi di input.\",\"Colore primo piano di casella di input per il testo segnaposto.\",\"Colore di sfondo di convalida dell'input di tipo Informazione.\",\"Colore primo piano di convalida dell'input di tipo Informazione.\",\"Colore del bordo della convalida dell'input di tipo Informazione.\",\"Colore di sfondo di convalida dell'input di tipo Avviso.\",\"Colore primo piano di convalida dell'input di tipo Avviso.\",\"Colore del bordo della convalida dell'input di tipo Avviso.\",\"Colore di sfondo di convalida dell'input di tipo Errore.\",\"Colore primo piano di convalida dell'input di tipo Errore.\",\"Colore del bordo della convalida dell'input di tipo Errore.\",\"Sfondo dell'elenco a discesa.\",\"Sfondo dell'elenco a discesa.\",\"Primo piano dell'elenco a discesa.\",\"Bordo dell'elenco a discesa.\",\"Colore primo piano del pulsante.\",\"Colore del separatore pulsante.\",\"Colore di sfondo del pulsante.\",\"Colore di sfondo del pulsante al passaggio del mouse.\",\"Colore del bordo del pulsante.\",\"Colore primo piano secondario del pulsante.\",\"Colore di sfondo secondario del pulsante.\",\"Colore di sfondo secondario del pulsante al passaggio del mouse.\",\"Colore di sfondo del badge. I badge sono piccole etichette informative, ad esempio per mostrare il conteggio dei risultati della ricerca.\",\"Colore primo piano del badge. I badge sono piccole etichette informative, ad esempio per mostrare il conteggio dei risultati di una ricerca.\",\"Ombra della barra di scorrimento per indicare lo scorrimento della visualizzazione.\",\"Colore di sfondo del cursore della barra di scorrimento.\",\"Colore di sfondo del cursore della barra di scorrimento al passaggio del mouse.\",\"Colore di sfondo del cursore della barra di scorrimento quando si fa clic con il mouse.\",\"Colore di sfondo dell'indicatore di stato che pu\\xF2 essere mostrato per operazioni a esecuzione prolungata.\",\"Colore di sfondo del testo dell'errore nell'editor. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore primo piano degli indicatori di errore nell'editor.\",\"Se impostato, colore delle doppie sottolineature per gli errori nell'editor.\",\"Colore di sfondo del testo dell'avviso nell'editor. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore primo piano degli indicatori di avviso nell'editor.\",\"Se impostato, colore delle doppie sottolineature per gli avvisi nell'editor.\",\"Colore di sfondo del testo delle informazioni nell'editor. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore primo piano degli indicatori di informazioni nell'editor.\",\"Se impostato, colore delle doppie sottolineature per i messaggi informativi nell'editor.\",\"Colore primo piano degli indicatori di suggerimento nell'editor.\",\"Se impostato, colore delle doppie sottolineature per i suggerimenti nell'editor.\",\"Colore dei bordi di ridimensionamento attivi.\",\"Colore di sfondo dell'editor.\",\"Colore primo piano predefinito dell'editor.\",\"Colore di sfondo dello scorrimento permanente per l'editor\",\"Colore di sfondo dello scorrimento permanente al passaggio del mouse per l'editor\",\"Colore di sfondo dei widget dell'editor, ad esempio Trova/Sostituisci.\",\"Colore primo piano dei widget dell'editor, ad esempio Trova/Sostituisci.\",\"Colore del bordo dei widget dell'editor. Il colore viene usato solo se il widget sceglie di avere un bordo e se il colore non \\xE8 sottoposto a override da un widget.\",\"Colore del bordo della barra di ridimensionamento dei widget dell'editor. Il colore viene usato solo se il widget sceglie di avere un bordo di ridimensionamento e se il colore non \\xE8 sostituito da quello di un widget.\",\"Colore di sfondo di Selezione rapida. Il widget Selezione rapida \\xE8 il contenitore di selezioni quali il riquadro comandi.\",\"Colore primo piano di Selezione rapida. Il widget Selezione rapida \\xE8 il contenitore di selezioni quali il riquadro comandi.\",\"Colore di sfondo del titolo di Selezione rapida. Il widget Selezione rapida \\xE8 il contenitore di selezioni quali il riquadro comandi.\",\"Colore di selezione rapida per il raggruppamento delle etichette.\",\"Colore di selezione rapida per il raggruppamento dei bordi.\",\"Colore di sfondo dell'etichetta del tasto di scelta rapida. L'etichetta del tasto di scelta rapida viene usata per rappresentare una scelta rapida da tastiera.\",\"Colore primo piano dell'etichetta del tasto di scelta rapida. L'etichetta del tasto di scelta rapida viene usata per rappresentare una scelta rapida da tastiera.\",\"Colore del bordo dell'etichetta del tasto di scelta rapida. L'etichetta del tasto di scelta rapida viene usata per rappresentare una scelta rapida da tastiera.\",\"Colore inferiore del bordo dell'etichetta del tasto di scelta rapida. L'etichetta del tasto di scelta rapida viene usata per rappresentare una scelta rapida da tastiera.\",\"Colore della selezione dell'editor.\",\"Colore del testo selezionato per il contrasto elevato.\",\"Colore della selezione in un editor inattivo. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore delle aree con lo stesso contenuto della selezione. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore del bordo delle regioni con lo stesso contenuto della selezione.\",\"Colore della corrispondenza di ricerca corrente.\",\"Colore degli altri risultati della ricerca. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore dell'intervallo di limite della ricerca. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore del bordo della corrispondenza della ricerca corrente.\",\"Colore del bordo delle altre corrispondenze della ricerca.\",\"Colore del bordo dell'intervallo che limita la ricerca. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore delle corrispondenze query dell'editor della ricerca.\",\"Colore del bordo delle corrispondenze query dell'editor della ricerca.\",\"Colore del testo nel messaggio di completamento del viewlet di ricerca.\",\"Evidenziazione sotto la parola per cui \\xE8 visualizzata un'area sensibile al passaggio del mouse. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore di sfondo dell'area sensibile al passaggio del mouse dell'editor.\",\"Colore primo piano dell'area sensibile al passaggio del mouse dell'editor.\",\"Colore del bordo dell'area sensibile al passaggio del mouse dell'editor.\",\"Colore di sfondo della barra di stato sensibile al passaggio del mouse dell'editor.\",\"Colore dei collegamenti attivi.\",\"Colore primo piano dei suggerimenti inline\",\"Colore di sfondo dei suggerimenti inline\",\"Colore primo piano dei suggerimenti inline per i tipi\",\"Colore di sfondo dei suggerimenti inline per i tipi\",\"Colore primo piano dei suggerimenti inline per i parametri\",\"Colore di sfondo dei suggerimenti inline per i parametri\",\"Colore usato per l'icona delle azioni con lampadina.\",\"Colore usato per l'icona delle azioni di correzione automatica con lampadina.\",\"Colore di sfondo per il testo che \\xE8 stato inserito. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore di sfondo per il testo che \\xE8 stato rimosso. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore di sfondo per le righe che sono state inserite. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore di sfondo per le righe che sono state rimosse. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore di sfondo per il margine in cui sono state inserite le righe.\",\"Colore di sfondo per il margine in cui sono state rimosse le righe.\",\"Primo piano del righello delle annotazioni delle differenze per il contenuto inserito.\",\"Primo piano del righello delle annotazioni delle differenze per il contenuto rimosso.\",\"Colore del contorno del testo che \\xE8 stato inserito.\",\"Colore del contorno del testo che \\xE8 stato rimosso.\",\"Colore del bordo tra due editor di testo.\",\"Colore del riempimento diagonale dell'editor diff. Il riempimento diagonale viene usato nelle visualizzazioni diff affiancate.\",\"Colore di sfondo dei blocchi non modificati nell'editor diff.\",\"Colore di primo piano dei blocchi non modificati nell'editor diff.\",\"Colore di sfondo del codice non modificato nell'editor diff.\",\"Colore di sfondo dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero \\xE8 attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.\",\"Colore primo piano dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero \\xE8 attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.\",\"Colore del contorno dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero \\xE8 attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.\",\"Colore del contorno dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero \\xE8 attivo e selezionato. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.\",\"Colore di sfondo dell'elenco/albero per l'elemento selezionato quando l'elenco/albero \\xE8 attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.\",\"Colore primo piano dell'elenco/albero per l'elemento selezionato quando l'elenco/albero \\xE8 attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.\",\"Colore primo piano dell\\u2019icona dell'elenco/albero per l'elemento selezionato quando l'elenco/albero \\xE8 attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.\",\"Colore di sfondo dell'elenco/albero per l'elemento selezionato quando l'elenco/albero \\xE8 inattivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.\",\"Colore primo piano dell'elenco/albero per l'elemento selezionato quando l'elenco/albero \\xE8 inattivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.\",\"Colore primo piano dell\\u2019icona dell'elenco/albero per l'elemento selezionato quando l'elenco/albero \\xE8 inattivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.\",\"Colore di sfondo dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero \\xE8 inattivo. Un elenco/albero attivo ha lo stato attivo della tastiera, uno inattivo no.\",\"Colore del contorno dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero \\xE8 inattivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.\",\"Sfondo dell'elenco/albero al passaggio del mouse sugli elementi.\",\"Primo piano dell'elenco/albero al passaggio del mouse sugli elementi.\",\"Sfondo dell'elenco/albero durante il trascinamento degli elementi selezionati.\",\"Colore primo piano Elenco/Struttura ad albero delle occorrenze trovate durante la ricerca nell'Elenco/Struttura ad albero.\",\"Colore primo piano Elenco/Struttura ad albero delle occorrenze trovate in elementi con lo stato attivo durante la ricerca nell'Elenco/Struttura ad albero.\",\"Colore primo piano dell'elenco/albero delle occorrenze trovate durante la ricerca nell'elenco/albero.\",\"Colore primo piano delle voci di elenco contenenti errori.\",\"Colore primo piano delle voci di elenco contenenti avvisi.\",\"Colore di sfondo del widget del filtro per tipo in elenchi e alberi.\",\"Colore del contorno del widget del filtro per tipo in elenchi e alberi.\",\"Colore del contorno del widget del filtro per tipo in elenchi e alberi quando non sono presenti corrispondenze.\",\"Colore ombreggiatura del widget del filtro sul tipo negli elenchi e alberi.\",\"Colore di sfondo della corrispondenza filtrata.\",\"Colore del bordo della corrispondenza filtrata.\",\"Colore del tratto dell'albero per le guide per i rientri.\",\"Colore del tratto dell'albero per le guide di rientro non attive.\",\"Colore del bordo della tabella tra le colonne.\",\"Colore di sfondo per le righe di tabella dispari.\",\"Colore primo piano dell'elenco/albero per gli elementi non evidenziati.\",\"Colore di sfondo del widget della casella di controllo.\",\"Colore di sfondo del widget della casella di controllo quando \\xE8 selezionato l'elemento in cui si trova.\",\"Colore primo piano del widget della casella di controllo.\",\"Colore del bordo del widget della casella di controllo.\",\"Colore del bordo del widget della casella di controllo quando \\xE8 selezionato l'elemento in cui si trova.\",\"In alternativa, usare quickInputList.focusBackground\",\"Colore primo piano di Selezione rapida per l'elemento con lo stato attivo.\",\"Colore primo piano dell\\u2019icona di Selezione rapida per l'elemento con lo stato attivo.\",\"Colore di sfondo di Selezione rapida per l'elemento con lo stato attivo.\",\"Colore del bordo del menu.\",\"Colore primo piano delle voci di menu.\",\"Colore di sfondo delle voci di menu.\",\"Colore primo piano della voce di menu selezionata nei menu.\",\"Colore di sfondo della voce di menu selezionata nei menu.\",\"Colore del bordo della voce di menu selezionata nei menu.\",\"Colore di un elemento separatore delle voci di menu.\",\"Sfondo della barra degli strumenti al passaggio del mouse sulle azioni\",\"Contorno della barra degli strumenti al passaggio del mouse sulle azioni\",\"Sfondo della barra degli strumenti quando si tiene premuto il mouse sulle azioni\",\"Colore di sfondo dell'evidenziazione della tabulazione di un frammento.\",\"Colore del bordo dell'evidenziazione della tabulazione di un frammento.\",\"Colore di sfondo dell'evidenziazione della tabulazione finale di un frammento.\",\"Colore del bordo dell'evidenziazione della tabulazione finale di un frammento.\",\"Colore degli elementi di navigazione in evidenza.\",\"Colore di sfondo degli elementi di navigazione.\",\"Colore degli elementi di navigazione in evidenza.\",\"Colore degli elementi di navigazione selezionati.\",\"Colore di sfondo del controllo di selezione elementi di navigazione.\",\"Sfondo dell'intestazione delle modifiche correnti nei conflitti di merge inline. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Sfondo del contenuto delle modifiche correnti nei conflitti di merge inline. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Sfondo dell'intestazione delle modifiche in ingresso nei conflitti di merge inline. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Sfondo del contenuto delle modifiche in ingresso nei conflitti di merge inline. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Sfondo dell'intestazione del predecessore comune nei conflitti di merge inline. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Sfondo del contenuto del predecessore comune nei conflitti di merge inline. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore del bordo nelle intestazioni e sulla barra di divisione di conflitti di merge in linea.\",\"Colore primo piano del righello delle annotazioni delle modifiche correnti per i conflitti di merge inline.\",\"Colore primo piano del righello delle annotazioni delle modifiche in ingresso per i conflitti di merge inline.\",\"Colore primo piano del righello delle annotazioni del predecessore comune per i conflitti di merge inline.\",\"Colore del marcatore del righello delle annotazioni per la ricerca di corrispondenze. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore del marcatore del righello delle annotazioni per le evidenziazioni delle selezioni. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.\",\"Colore del marcatore della minimappa per la ricerca delle corrispondenze.\",\"Colore del marcatore della minimappa per le selezioni ripetute dell'editor.\",\"Colore del marcatore della minimappa per la selezione dell'editor.\",\"Colore del marcatore della minimappa per gli errori.\",\"Colore del marcatore della minimappa per gli avvisi.\",\"Colore di sfondo della minimappa.\",'Opacit\\xE0 degli elementi in primo piano di cui \\xE8 stato eseguito il rendering nella minimappa. Ad esempio, con \"#000000c0\" il rendering degli elementi verr\\xE0 eseguito con il 75% di opacit\\xE0.',\"Colore di sfondo del dispositivo di scorrimento della minimappa.\",\"Colore di sfondo del dispositivo di scorrimento della minimappa al passaggio del mouse.\",\"Colore di sfondo del dispositivo di scorrimento della minimappa quando si fa clic con il mouse.\",\"Colore usato per l'icona di errore dei problemi.\",\"Colore usato per l'icona di avviso dei problemi.\",\"Colore usato per l'icona informazioni dei problemi.\",\"Colore primo piano usato nei grafici.\",\"Colore usato per le linee orizzontali nei grafici.\",\"Colore rosso usato nelle visualizzazioni grafico.\",\"Colore blu usato nelle visualizzazioni grafico.\",\"Colore giallo usato nelle visualizzazioni grafico.\",\"Colore arancione usato nelle visualizzazioni grafico.\",\"Colore verde usato nelle visualizzazioni grafico.\",\"Colore viola usato nelle visualizzazioni grafico.\"],\"vs/platform/theme/common/iconRegistry\":[\"ID del tipo di carattere da usare. Se non \\xE8 impostato, viene usato il tipo di carattere definito per primo.\",\"Tipo di carattere associato alla definizione di icona.\",\"Icona dell'azione di chiusura nei widget.\",\"Icona per la posizione di Vai a editor precedente.\",\"Icona per la posizione di Vai a editor successivo.\"],\"vs/platform/undoRedo/common/undoRedoService\":[\"I file seguenti sono stati chiusi e modificati nel disco: {0}.\",\"I file seguenti sono stati modificati in modo incompatibile: {0}.\",\"Non \\xE8 stato possibile annullare '{0}' in tutti i file. {1}\",\"Non \\xE8 stato possibile annullare '{0}' in tutti i file. {1}\",\"Non \\xE8 stato possibile annullare '{0}' in tutti i file perch\\xE9 sono state apportate modifiche a {1}\",\"Non \\xE8 stato possibile annullare '{0}' su tutti i file perch\\xE9 \\xE8 gi\\xE0 in esecuzione un'operazione di annullamento o ripetizione su {1}\",\"Non \\xE8 stato possibile annullare '{0}' su tutti i file perch\\xE9 nel frattempo \\xE8 stata eseguita un'operazione di annullamento o ripetizione\",\"Annullare '{0}' in tutti i file?\",\"&&Annulla in {0} file\",\"Annulla questo &&file\",\"Non \\xE8 stato possibile annullare '{0}' perch\\xE9 \\xE8 gi\\xE0 in esecuzione un'operazione di annullamento o ripetizione.\",\"Annullare '{0}'?\",\"&&S\\xEC\",\"No\",\"Non \\xE8 stato possibile ripetere '{0}' in tutti i file. {1}\",\"Non \\xE8 stato possibile ripetere '{0}' in tutti i file. {1}\",\"Non \\xE8 stato possibile ripetere '{0}' in tutti i file perch\\xE9 sono state apportate modifiche a {1}\",\"Non \\xE8 stato possibile ripetere l'operazione '{0}' su tutti i file perch\\xE9 \\xE8 gi\\xE0 in esecuzione un'operazione di annullamento o ripetizione sull'elenco di file {1}\",\"Non \\xE8 stato possibile ripetere '{0}' su tutti i file perch\\xE9 nel frattempo \\xE8 stata eseguita un'operazione di annullamento o ripetizione\",\"Non \\xE8 stato possibile ripetere '{0}' perch\\xE9 \\xE8 gi\\xE0 in esecuzione un'operazione di annullamento o ripetizione.\"],\"vs/platform/workspace/common/workspace\":[\"Area di lavoro del codice\"]});\n\n//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.it.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/editor/editor.main.nls.ja.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/editor/editor.main.nls.ja\",{\"vs/base/browser/ui/actionbar/actionViewItems\":[\"{0} ({1})\"],\"vs/base/browser/ui/findinput/findInput\":[\"\\u5165\\u529B\"],\"vs/base/browser/ui/findinput/findInputToggles\":[\"\\u5927\\u6587\\u5B57\\u3068\\u5C0F\\u6587\\u5B57\\u3092\\u533A\\u5225\\u3059\\u308B\",\"\\u5358\\u8A9E\\u5358\\u4F4D\\u3067\\u691C\\u7D22\\u3059\\u308B\",\"\\u6B63\\u898F\\u8868\\u73FE\\u3092\\u4F7F\\u7528\\u3059\\u308B\"],\"vs/base/browser/ui/findinput/replaceInput\":[\"\\u5165\\u529B\",\"\\u4FDD\\u6301\\u3059\\u308B\"],\"vs/base/browser/ui/hover/hoverWidget\":[\"Inspect this in the accessible view with {0}.\",\"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\"],\"vs/base/browser/ui/iconLabel/iconLabelHover\":[\"\\u8AAD\\u307F\\u8FBC\\u307F\\u4E2D...\"],\"vs/base/browser/ui/inputbox/inputBox\":[\"\\u30A8\\u30E9\\u30FC: {0}\",\"\\u8B66\\u544A: {0}\",\"\\u60C5\\u5831: {0}\",\"\\u5C65\\u6B74\\u5BFE\\u8C61\",\"\\u30AF\\u30EA\\u30A2\\u3055\\u308C\\u305F\\u5165\\u529B\"],\"vs/base/browser/ui/keybindingLabel/keybindingLabel\":[\"\\u30D0\\u30A4\\u30F3\\u30C9\\u306A\\u3057\"],\"vs/base/browser/ui/selectBox/selectBoxCustom\":[\"\\u30DC\\u30C3\\u30AF\\u30B9\\u3092\\u9078\\u629E\"],\"vs/base/browser/ui/toolbar/toolbar\":[\"\\u305D\\u306E\\u4ED6\\u306E\\u64CD\\u4F5C...\"],\"vs/base/browser/ui/tree/abstractTree\":[\"\\u30D5\\u30A3\\u30EB\\u30BF\\u30FC\",\"\\u3042\\u3044\\u307E\\u3044\\u4E00\\u81F4\",\"\\u5165\\u529B\\u3057\\u3066\\u30D5\\u30A3\\u30EB\\u30BF\\u30FC\",\"\\u5165\\u529B\\u3057\\u3066\\u691C\\u7D22\",\"\\u5165\\u529B\\u3057\\u3066\\u691C\\u7D22\",\"\\u9589\\u3058\\u308B\",\"\\u8981\\u7D20\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\\u3002\"],\"vs/base/common/actions\":[\"(\\u7A7A)\"],\"vs/base/common/errorMessage\":[\"{0}: {1}\",\"\\u30B7\\u30B9\\u30C6\\u30E0 \\u30A8\\u30E9\\u30FC\\u304C\\u767A\\u751F\\u3057\\u307E\\u3057\\u305F ({0})\",\"\\u4E0D\\u660E\\u306A\\u30A8\\u30E9\\u30FC\\u304C\\u767A\\u751F\\u3057\\u307E\\u3057\\u305F\\u3002\\u30ED\\u30B0\\u3067\\u8A73\\u7D30\\u3092\\u78BA\\u8A8D\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u4E0D\\u660E\\u306A\\u30A8\\u30E9\\u30FC\\u304C\\u767A\\u751F\\u3057\\u307E\\u3057\\u305F\\u3002\\u30ED\\u30B0\\u3067\\u8A73\\u7D30\\u3092\\u78BA\\u8A8D\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"{0} (\\u5408\\u8A08 {1} \\u30A8\\u30E9\\u30FC)\",\"\\u4E0D\\u660E\\u306A\\u30A8\\u30E9\\u30FC\\u304C\\u767A\\u751F\\u3057\\u307E\\u3057\\u305F\\u3002\\u30ED\\u30B0\\u3067\\u8A73\\u7D30\\u3092\\u78BA\\u8A8D\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\"],\"vs/base/common/keybindingLabels\":[\"Ctrl\",\"Shift\",\"Alt\",\"Windows\",\"Ctrl\",\"Shift\",\"Alt\",\"Super\",\"Control\",\"Shift\",\"\\u30AA\\u30D7\\u30B7\\u30E7\\u30F3\",\"\\u30B3\\u30DE\\u30F3\\u30C9\",\"Control\",\"Shift\",\"Alt\",\"Windows\",\"Control\",\"Shift\",\"Alt\",\"Super\"],\"vs/base/common/platform\":[\"_\"],\"vs/editor/browser/controller/textAreaHandler\":[\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\",\"\\u3053\\u306E\\u6642\\u70B9\\u3067\\u306F\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30A2\\u30AF\\u30BB\\u30B9\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"{0} \\u30B9\\u30AF\\u30EA\\u30FC\\u30F3 \\u30EA\\u30FC\\u30C0\\u30FC\\u6700\\u9069\\u5316\\u30E2\\u30FC\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u306B\\u306F\\u3001{1} \\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\",\"{0} \\u30B9\\u30AF\\u30EA\\u30FC\\u30F3 \\u30EA\\u30FC\\u30C0\\u30FC\\u6700\\u9069\\u5316\\u30E2\\u30FC\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u306B\\u306F\\u3001{1} \\u3067\\u30AF\\u30A4\\u30C3\\u30AF \\u30D4\\u30C3\\u30AF\\u3092\\u958B\\u304D\\u3001[\\u30B9\\u30AF\\u30EA\\u30FC\\u30F3 \\u30EA\\u30FC\\u30C0\\u30FC \\u30A2\\u30AF\\u30BB\\u30B7\\u30D3\\u30EA\\u30C6\\u30A3 \\u30E2\\u30FC\\u30C9\\u306E\\u5207\\u308A\\u66FF\\u3048] \\u30B3\\u30DE\\u30F3\\u30C9\\u3092\\u5B9F\\u884C\\u3057\\u307E\\u3059\\u3002\\u3053\\u308C\\u306F\\u73FE\\u5728\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9\\u304B\\u3089\\u30C8\\u30EA\\u30AC\\u30FC\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"{0} {1} \\u3067\\u30AD\\u30FC\\u30D0\\u30A4\\u30F3\\u30C9 \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30A2\\u30AF\\u30BB\\u30B9\\u3057\\u3001\\u30B9\\u30AF\\u30EA\\u30FC\\u30F3 \\u30EA\\u30FC\\u30C0\\u30FC \\u30A2\\u30AF\\u30BB\\u30B7\\u30D3\\u30EA\\u30C6\\u30A3 \\u30E2\\u30FC\\u30C9\\u306E\\u5207\\u308A\\u66FF\\u3048\\u30B3\\u30DE\\u30F3\\u30C9\\u306B\\u30AD\\u30FC\\u30D0\\u30A4\\u30F3\\u30C9\\u3092\\u5272\\u308A\\u5F53\\u3066\\u3066\\u5B9F\\u884C\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\"],\"vs/editor/browser/coreCommands\":[\"\\u9577\\u3044\\u884C\\u306B\\u79FB\\u52D5\\u3057\\u3066\\u3082\\u884C\\u672B\\u306B\\u4F4D\\u7F6E\\u3057\\u307E\\u3059\",\"\\u9577\\u3044\\u884C\\u306B\\u79FB\\u52D5\\u3057\\u3066\\u3082\\u884C\\u672B\\u306B\\u4F4D\\u7F6E\\u3057\\u307E\\u3059\",\"\\u30BB\\u30AB\\u30F3\\u30C0\\u30EA \\u30AB\\u30FC\\u30BD\\u30EB\\u304C\\u524A\\u9664\\u3055\\u308C\\u307E\\u3057\\u305F\"],\"vs/editor/browser/editorExtensions\":[\"\\u5143\\u306B\\u623B\\u3059(&&U)\",\"\\u5143\\u306B\\u623B\\u3059\",\"\\u3084\\u308A\\u76F4\\u3057(&&R)\",\"\\u3084\\u308A\\u76F4\\u3057\",\"\\u3059\\u3079\\u3066\\u9078\\u629E(&&S)\",\"\\u3059\\u3079\\u3066\\u3092\\u9078\\u629E\"],\"vs/editor/browser/widget/codeEditorWidget\":[\"\\u30AB\\u30FC\\u30BD\\u30EB\\u306E\\u6570\\u306F {0} \\u306B\\u5236\\u9650\\u3055\\u308C\\u3066\\u3044\\u307E\\u3059\\u3002\\u5927\\u304D\\u306A\\u5909\\u66F4\\u3092\\u884C\\u3046\\u5834\\u5408\\u306F\\u3001[\\u691C\\u7D22\\u3068\\u7F6E\\u63DB](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) \\u3092\\u4F7F\\u7528\\u3059\\u308B\\u3053\\u3068\\u3092\\u691C\\u8A0E\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u30DE\\u30EB\\u30C1 \\u30AB\\u30FC\\u30BD\\u30EB\\u306E\\u4E0A\\u9650\\u3092\\u5897\\u3084\\u3059\"],\"vs/editor/browser/widget/diffEditor.contribution\":[\"\\u30A2\\u30AF\\u30BB\\u30B7\\u30D3\\u30EA\\u30C6\\u30A3\\u306E\\u9AD8\\u3044\\u5DEE\\u5206\\u30D3\\u30E5\\u30FC\\u30A2\\u30FC\",\"\\u6B21\\u306E\\u5DEE\\u5206\\u306B\\u79FB\\u52D5\",\"\\u30A2\\u30AF\\u30BB\\u30B7\\u30D3\\u30EA\\u30C6\\u30A3\\u306E\\u9AD8\\u3044\\u5DEE\\u5206\\u30D3\\u30E5\\u30FC\\u30A2\\u30FC\\u3092\\u958B\\u304F\",\"\\u524D\\u306E\\u5DEE\\u5206\\u306B\\u79FB\\u52D5\"],\"vs/editor/browser/widget/diffEditorWidget\":[\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u633F\\u5165\\u3092\\u793A\\u3059\\u884C\\u306E\\u88C5\\u98FE\\u3002\",\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u524A\\u9664\\u3092\\u793A\\u3059\\u884C\\u306E\\u88C5\\u98FE\\u3002\",\" Shift + F7 \\u3092\\u4F7F\\u7528\\u3057\\u3066\\u5909\\u66F4\\u3092\\u79FB\\u52D5\\u3059\\u308B\",\"\\u4E00\\u65B9\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u304C\\u5927\\u304D\\u3059\\u304E\\u308B\\u305F\\u3081\\u3001\\u30D5\\u30A1\\u30A4\\u30EB\\u3092\\u6BD4\\u8F03\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u30AF\\u30EA\\u30C3\\u30AF\\u3057\\u3066\\u5909\\u66F4\\u3092\\u5143\\u306B\\u623B\\u3059\"],\"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\":[\"\\u30A2\\u30AF\\u30BB\\u30B7\\u30D3\\u30EA\\u30C6\\u30A3\\u306E\\u9AD8\\u3044\\u5DEE\\u5206\\u30D3\\u30E5\\u30FC\\u30A2\\u30FC\\u306E [\\u633F\\u5165] \\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u30A2\\u30AF\\u30BB\\u30B7\\u30D3\\u30EA\\u30C6\\u30A3\\u306E\\u9AD8\\u3044\\u5DEE\\u5206\\u30D3\\u30E5\\u30FC\\u30A2\\u30FC\\u306E [\\u524A\\u9664] \\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u30A2\\u30AF\\u30BB\\u30B7\\u30D3\\u30EA\\u30C6\\u30A3\\u306E\\u9AD8\\u3044\\u5DEE\\u5206\\u30D3\\u30E5\\u30FC\\u30A2\\u30FC\\u306E [\\u9589\\u3058\\u308B] \\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u9589\\u3058\\u308B\",\"\\u30A2\\u30AF\\u30BB\\u30B9\\u53EF\\u80FD\\u306A Diff Viewer\\u3002\\u4E0A\\u4E0B\\u65B9\\u5411\\u30AD\\u30FC\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u79FB\\u52D5\\u3057\\u307E\\u3059\\u3002\",\"\\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\",\"1 \\u884C\\u304C\\u5909\\u66F4\\u3055\\u308C\\u307E\\u3057\\u305F\",\"{0} \\u884C\\u304C\\u5909\\u66F4\\u3055\\u308C\\u307E\\u3057\\u305F\",\"\\u76F8\\u9055 {0}/{1}: \\u5143\\u306E\\u884C {2}\\u3001{3}\\u3002\\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C {4}\\u3001{5}\",\"\\u7A7A\\u767D\",\"{0} \\u5909\\u66F4\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u884C {1}\",\"{0} \\u5143\\u306E\\u884C {1} \\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C {2}\",\"+ {0} \\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C {1}\",\"- {0} \\u5143\\u306E\\u884C {1}\"],\"vs/editor/browser/widget/diffEditorWidget2/colors\":[\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u79FB\\u52D5\\u3055\\u308C\\u305F\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"The active border color for text that got moved in the diff editor.\"],\"vs/editor/browser/widget/diffEditorWidget2/decorations\":[\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u633F\\u5165\\u3092\\u793A\\u3059\\u884C\\u306E\\u88C5\\u98FE\\u3002\",\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u524A\\u9664\\u3092\\u793A\\u3059\\u884C\\u306E\\u88C5\\u98FE\\u3002\",\"\\u30AF\\u30EA\\u30C3\\u30AF\\u3057\\u3066\\u5909\\u66F4\\u3092\\u5143\\u306B\\u623B\\u3059\"],\"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\":[\" {0}\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u3001\\u30A2\\u30AF\\u30BB\\u30B7\\u30D3\\u30EA\\u30C6\\u30A3\\u306E\\u30D8\\u30EB\\u30D7\\u3092\\u958B\\u304D\\u307E\\u3059\\u3002\"],\"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\":[\"\\u524A\\u9664\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC\",\"\\u524A\\u9664\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC\",\"\\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC\",\"\\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC\",\"\\u524A\\u9664\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC ({0})\",\"\\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC ({0})\",\"\\u3053\\u306E\\u5909\\u66F4\\u3092\\u5143\\u306B\\u623B\\u3059\"],\"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\":[\"Code moved with changes to line {0}-{1}\",\"Code moved with changes from line {0}-{1}\",\"Code moved to line {0}-{1}\",\"Code moved from line {0}-{1}\"],\"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\":[\"\\u5909\\u66F4\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u9818\\u57DF\\u3092\\u6298\\u308A\\u305F\\u305F\\u3080\",\"Click or drag to show more above\",\"Show all\",\"Click or drag to show more below\",\"{0} hidden lines\",\"Double click to unfold\"],\"vs/editor/browser/widget/diffReview\":[\"\\u5DEE\\u5206\\u30EC\\u30D3\\u30E5\\u30FC\\u3067\\u306E '\\u633F\\u5165' \\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u5DEE\\u5206\\u30EC\\u30D3\\u30E5\\u30FC\\u3067\\u306E '\\u524A\\u9664' \\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u5DEE\\u5206\\u30EC\\u30D3\\u30E5\\u30FC\\u3067\\u306E '\\u9589\\u3058\\u308B' \\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u9589\\u3058\\u308B\",\"\\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\",\"1 \\u884C\\u304C\\u5909\\u66F4\\u3055\\u308C\\u307E\\u3057\\u305F\",\"{0} \\u884C\\u304C\\u5909\\u66F4\\u3055\\u308C\\u307E\\u3057\\u305F\",\"\\u76F8\\u9055 {0}/{1}: \\u5143\\u306E\\u884C {2}\\u3001{3}\\u3002\\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C {4}\\u3001{5}\",\"\\u7A7A\\u767D\",\"{0} \\u5909\\u66F4\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u884C {1}\",\"{0} \\u5143\\u306E\\u884C {1} \\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C {2}\",\"+ {0} \\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C {1}\",\"- {0} \\u5143\\u306E\\u884C {1}\"],\"vs/editor/browser/widget/inlineDiffMargin\":[\"\\u524A\\u9664\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC\",\"\\u524A\\u9664\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC\",\"\\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC\",\"\\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC\",\"\\u524A\\u9664\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC ({0})\",\"\\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC ({0})\",\"\\u3053\\u306E\\u5909\\u66F4\\u3092\\u5143\\u306B\\u623B\\u3059\",\"\\u524A\\u9664\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC ({0})\",\"\\u5909\\u66F4\\u3055\\u308C\\u305F\\u884C\\u306E\\u30B3\\u30D4\\u30FC ({0})\"],\"vs/editor/common/config/editorConfigurationSchema\":[\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\",\"1 \\u3064\\u306E\\u30BF\\u30D6\\u306B\\u76F8\\u5F53\\u3059\\u308B\\u30B9\\u30DA\\u30FC\\u30B9\\u306E\\u6570\\u3002{0} \\u304C\\u30AA\\u30F3\\u306E\\u5834\\u5408\\u3001\\u3053\\u306E\\u8A2D\\u5B9A\\u306F\\u30D5\\u30A1\\u30A4\\u30EB \\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u306B\\u57FA\\u3065\\u3044\\u3066\\u4E0A\\u66F8\\u304D\\u3055\\u308C\\u307E\\u3059\\u3002\",'\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u307E\\u305F\\u306F `\"tabSize\"` \\u3067 `#editor.tabSize#` \\u306E\\u5024\\u3092\\u4F7F\\u7528\\u3059\\u308B\\u305F\\u3081\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u30B9\\u30DA\\u30FC\\u30B9\\u306E\\u6570\\u3002\\u3053\\u306E\\u8A2D\\u5B9A\\u306F\\u3001 `#editor.detectIndentation#` \\u304C\\u30AA\\u30F3\\u306E\\u5834\\u5408\\u3001\\u30D5\\u30A1\\u30A4\\u30EB\\u306E\\u5185\\u5BB9\\u306B\\u57FA\\u3065\\u3044\\u3066\\u30AA\\u30FC\\u30D0\\u30FC\\u30E9\\u30A4\\u30C9\\u3055\\u308C\\u307E\\u3059\\u3002',\"`Tab` \\u30AD\\u30FC\\u3092\\u62BC\\u3059\\u3068\\u30B9\\u30DA\\u30FC\\u30B9\\u304C\\u633F\\u5165\\u3055\\u308C\\u307E\\u3059\\u3002{0} \\u304C\\u30AA\\u30F3\\u306E\\u5834\\u5408\\u3001\\u3053\\u306E\\u8A2D\\u5B9A\\u306F\\u30D5\\u30A1\\u30A4\\u30EB \\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u306B\\u57FA\\u3065\\u3044\\u3066\\u4E0A\\u66F8\\u304D\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A1\\u30A4\\u30EB\\u304C\\u30D5\\u30A1\\u30A4\\u30EB\\u306E\\u5185\\u5BB9\\u306B\\u57FA\\u3065\\u3044\\u3066\\u958B\\u304B\\u308C\\u308B\\u5834\\u5408\\u3001{0} \\u3068 {1} \\u3092\\u81EA\\u52D5\\u7684\\u306B\\u691C\\u51FA\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u81EA\\u52D5\\u633F\\u5165\\u3055\\u308C\\u305F\\u672B\\u5C3E\\u306E\\u7A7A\\u767D\\u3092\\u524A\\u9664\\u3057\\u307E\\u3059\\u3002\",\"\\u5927\\u304D\\u306A\\u30D5\\u30A1\\u30A4\\u30EB\\u3067\\u30E1\\u30E2\\u30EA\\u304C\\u96C6\\u4E2D\\u3059\\u308B\\u7279\\u5B9A\\u306E\\u6A5F\\u80FD\\u3092\\u7121\\u52B9\\u306B\\u3059\\u308B\\u305F\\u3081\\u306E\\u7279\\u5225\\u306A\\u51E6\\u7406\\u3002\",\"\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u5185\\u306E\\u5358\\u8A9E\\u306B\\u57FA\\u3065\\u3044\\u3066\\u5165\\u529B\\u5019\\u88DC\\u3092\\u8A08\\u7B97\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u304B\\u3089\\u306E\\u307F\\u5358\\u8A9E\\u306E\\u5019\\u88DC\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u540C\\u3058\\u8A00\\u8A9E\\u306E\\u958B\\u3044\\u3066\\u3044\\u308B\\u3059\\u3079\\u3066\\u306E\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u304B\\u3089\\u5358\\u8A9E\\u306E\\u5019\\u88DC\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u958B\\u3044\\u3066\\u3044\\u308B\\u3059\\u3079\\u3066\\u306E\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u304B\\u3089\\u5358\\u8A9E\\u306E\\u5019\\u88DC\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u5358\\u8A9E\\u30D9\\u30FC\\u30B9\\u306E\\u5165\\u529B\\u5019\\u88DC\\u304C\\u8A08\\u7B97\\u3055\\u308C\\u308B\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30BB\\u30DE\\u30F3\\u30C6\\u30A3\\u30C3\\u30AF\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u304C\\u3059\\u3079\\u3066\\u306E\\u914D\\u8272\\u30C6\\u30FC\\u30DE\\u306B\\u3064\\u3044\\u3066\\u6709\\u52B9\\u306B\\u306A\\u308A\\u307E\\u3057\\u305F\\u3002\",\"\\u30BB\\u30DE\\u30F3\\u30C6\\u30A3\\u30C3\\u30AF\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u304C\\u3059\\u3079\\u3066\\u306E\\u914D\\u8272\\u30C6\\u30FC\\u30DE\\u306B\\u3064\\u3044\\u3066\\u7121\\u52B9\\u306B\\u306A\\u308A\\u307E\\u3057\\u305F\\u3002\",\"\\u30BB\\u30DE\\u30F3\\u30C6\\u30A3\\u30C3\\u30AF\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u306F\\u3001\\u73FE\\u5728\\u306E\\u914D\\u8272\\u30C6\\u30FC\\u30DE\\u306E 'semanticHighlighting' \\u8A2D\\u5B9A\\u306B\\u3088\\u3063\\u3066\\u69CB\\u6210\\u3055\\u308C\\u3066\\u3044\\u307E\\u3059\\u3002\",\"semanticHighlighting \\u3092\\u30B5\\u30DD\\u30FC\\u30C8\\u3055\\u308C\\u308B\\u8A00\\u8A9E\\u3067\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u3092\\u30C0\\u30D6\\u30EB\\u30AF\\u30EA\\u30C3\\u30AF\\u3059\\u308B\\u304B\\u3001`Escape` \\u30AD\\u30FC\\u3092\\u62BC\\u3057\\u3066\\u3082\\u3001\\u30D4\\u30FC\\u30AF \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3092\\u958B\\u3044\\u305F\\u307E\\u307E\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u3053\\u306E\\u9577\\u3055\\u3092\\u8D8A\\u3048\\u308B\\u884C\\u306F\\u3001\\u30D1\\u30D5\\u30A9\\u30FC\\u30DE\\u30F3\\u30B9\\u4E0A\\u306E\\u7406\\u7531\\u306B\\u3088\\u308A\\u30C8\\u30FC\\u30AF\\u30F3\\u5316\\u3055\\u308C\\u307E\\u305B\\u3093\\u3002\",\"Web \\u30EF\\u30FC\\u30AB\\u30FC\\u3067\\u30C8\\u30FC\\u30AF\\u30F3\\u5316\\u3092\\u975E\\u540C\\u671F\\u7684\\u306B\\u884C\\u3046\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u975E\\u540C\\u671F\\u30C8\\u30FC\\u30AF\\u30F3\\u5316\\u3092\\u30ED\\u30B0\\u306B\\u8A18\\u9332\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u30C7\\u30D0\\u30C3\\u30B0\\u7528\\u306E\\u307F\\u3002\",\"\\u5F93\\u6765\\u306E\\u30D0\\u30C3\\u30AF\\u30B0\\u30E9\\u30A6\\u30F3\\u30C9 \\u30C8\\u30FC\\u30AF\\u30F3\\u5316\\u306B\\u5BFE\\u3057\\u3066\\u975E\\u540C\\u671F\\u30C8\\u30FC\\u30AF\\u30F3\\u5316\\u3092\\u691C\\u8A3C\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u30C8\\u30FC\\u30AF\\u30F3\\u5316\\u304C\\u9045\\u304F\\u306A\\u308B\\u53EF\\u80FD\\u6027\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\\u30C7\\u30D0\\u30C3\\u30B0\\u5C02\\u7528\\u3067\\u3059\\u3002\",\"\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3092\\u5897\\u6E1B\\u3059\\u308B\\u89D2\\u304B\\u3063\\u3053\\u3092\\u5B9A\\u7FA9\\u3057\\u307E\\u3059\\u3002\",\"\\u5DE6\\u89D2\\u304B\\u3063\\u3053\\u307E\\u305F\\u306F\\u6587\\u5B57\\u5217\\u30B7\\u30FC\\u30B1\\u30F3\\u30B9\\u3002\",\"\\u53F3\\u89D2\\u304B\\u3063\\u3053\\u307E\\u305F\\u306F\\u6587\\u5B57\\u5217\\u30B7\\u30FC\\u30B1\\u30F3\\u30B9\\u3002\",\"\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2\\u306E\\u8272\\u4ED8\\u3051\\u304C\\u6709\\u52B9\\u306B\\u306A\\u3063\\u3066\\u3044\\u308B\\u5834\\u5408\\u3001\\u5165\\u308C\\u5B50\\u306E\\u30EC\\u30D9\\u30EB\\u306B\\u3088\\u3063\\u3066\\u8272\\u4ED8\\u3051\\u3055\\u308C\\u308B\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2\\u3092\\u5B9A\\u7FA9\\u3057\\u307E\\u3059\\u3002\",\"\\u5DE6\\u89D2\\u304B\\u3063\\u3053\\u307E\\u305F\\u306F\\u6587\\u5B57\\u5217\\u30B7\\u30FC\\u30B1\\u30F3\\u30B9\\u3002\",\"\\u53F3\\u89D2\\u304B\\u3063\\u3053\\u307E\\u305F\\u306F\\u6587\\u5B57\\u5217\\u30B7\\u30FC\\u30B1\\u30F3\\u30B9\\u3002\",\"\\u5DEE\\u5206\\u8A08\\u7B97\\u304C\\u53D6\\u308A\\u6D88\\u3055\\u308C\\u305F\\u5F8C\\u306E\\u30BF\\u30A4\\u30E0\\u30A2\\u30A6\\u30C8 (\\u30DF\\u30EA\\u79D2\\u5358\\u4F4D)\\u3002\\u30BF\\u30A4\\u30E0\\u30A2\\u30A6\\u30C8\\u306A\\u3057\\u306B\\u306F 0 \\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u5DEE\\u5206\\u3092\\u8A08\\u7B97\\u3059\\u308B\\u5834\\u5408\\u306E\\u6700\\u5927\\u30D5\\u30A1\\u30A4\\u30EB \\u30B5\\u30A4\\u30BA (MB)\\u3002\\u5236\\u9650\\u306A\\u3057\\u306E\\u5834\\u5408\\u306F 0 \\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u5DEE\\u5206\\u3092\\u6A2A\\u306B\\u4E26\\u3079\\u3066\\u8868\\u793A\\u3059\\u308B\\u304B\\u3001\\u884C\\u5185\\u306B\\u8868\\u793A\\u3059\\u308B\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"If the diff editor width is smaller than this value, the inline view is used.\",\"If enabled and the editor width is too small, the inline view is used.\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30B0\\u30EA\\u30D5\\u4F59\\u767D\\u306B\\u3001\\u5909\\u66F4\\u3092\\u5143\\u306B\\u623B\\u3059\\u305F\\u3081\\u306E\\u77E2\\u5370\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306F\\u5148\\u982D\\u307E\\u305F\\u306F\\u672B\\u5C3E\\u306E\\u7A7A\\u767D\\u6587\\u5B57\\u306E\\u5909\\u66F4\\u3092\\u7121\\u8996\\u3057\\u307E\\u3059\\u3002\",\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u8FFD\\u52A0/\\u524A\\u9664\\u3055\\u308C\\u305F\\u5909\\u66F4\\u306B +/- \\u30A4\\u30F3\\u30B8\\u30B1\\u30FC\\u30BF\\u30FC\\u3092\\u793A\\u3059\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067 CodeLens \\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u884C\\u3092\\u6298\\u308A\\u8FD4\\u3057\\u307E\\u305B\\u3093\\u3002\",\"\\u884C\\u3092\\u30D3\\u30E5\\u30FC\\u30DD\\u30FC\\u30C8\\u306E\\u5E45\\u3067\\u6298\\u308A\\u8FD4\\u3057\\u307E\\u3059\\u3002\",\"\\u884C\\u306F\\u3001{0} \\u306E\\u8A2D\\u5B9A\\u306B\\u5F93\\u3063\\u3066\\u6298\\u308A\\u8FD4\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u5F93\\u6765\\u306E\\u5DEE\\u5206\\u30A2\\u30EB\\u30B4\\u30EA\\u30BA\\u30E0\\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u9AD8\\u5EA6\\u306A\\u5DEE\\u5206\\u30A2\\u30EB\\u30B4\\u30EA\\u30BA\\u30E0\\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\",\"Controls whether the diff editor shows unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as a minimum for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as context when comparing unchanged regions. Only works when {0} is set.\",\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u691C\\u51FA\\u3055\\u308C\\u305F\\u30B3\\u30FC\\u30C9\\u306E\\u79FB\\u52D5\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002{0} \\u304C\\u8A2D\\u5B9A\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u306B\\u306E\\u307F\\u6A5F\\u80FD\\u3057\\u307E\\u3059\\u3002\",\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u65B0\\u3057\\u3044\\u5B9F\\u88C5\\u3068\\u53E4\\u3044\\u5B9F\\u88C5\\u306E\\u3069\\u3061\\u3089\\u3092\\u4F7F\\u7528\\u3059\\u308B\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u6587\\u5B57\\u304C\\u633F\\u5165\\u307E\\u305F\\u306F\\u524A\\u9664\\u3055\\u308C\\u305F\\u5834\\u6240\\u3092\\u78BA\\u8A8D\\u3059\\u308B\\u305F\\u3081\\u306B\\u3001\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u7A7A\\u306E\\u88C5\\u98FE\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\"],\"vs/editor/common/config/editorOptions\":[\"\\u30D7\\u30E9\\u30C3\\u30C8\\u30D5\\u30A9\\u30FC\\u30E0 API \\u3092\\u4F7F\\u7528\\u3057\\u3066\\u3001\\u30B9\\u30AF\\u30EA\\u30FC\\u30F3 \\u30EA\\u30FC\\u30C0\\u30FC\\u304C\\u3044\\u3064\\u63A5\\u7D9A\\u3055\\u308C\\u305F\\u304B\\u3092\\u691C\\u51FA\\u3059\\u308B\",\"\\u30B9\\u30AF\\u30EA\\u30FC\\u30F3 \\u30EA\\u30FC\\u30C0\\u30FC\\u3067\\u306E\\u4F7F\\u7528\\u306B\\u6700\\u9069\\u5316\\u3059\\u308B\",\"\\u30B9\\u30AF\\u30EA\\u30FC\\u30F3 \\u30EA\\u30FC\\u30C0\\u30FC\\u304C\\u63A5\\u7D9A\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u3068\\u4EEE\\u5B9A\\u3059\\u308B\",\"\\u3053\\u306E UI \\u3092\\u30B9\\u30AF\\u30EA\\u30FC\\u30F3 \\u30EA\\u30FC\\u30C0\\u30FC\\u306B\\u6700\\u9069\\u5316\\u3055\\u308C\\u305F\\u30E2\\u30FC\\u30C9\\u3067\\u5B9F\\u884C\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30B3\\u30E1\\u30F3\\u30C8\\u6642\\u306B\\u7A7A\\u767D\\u6587\\u5B57\\u3092\\u633F\\u5165\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u884C\\u30B3\\u30E1\\u30F3\\u30C8\\u306E\\u8FFD\\u52A0\\u307E\\u305F\\u306F\\u524A\\u9664\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306E\\u5207\\u308A\\u66FF\\u3048\\u3067\\u3001\\u7A7A\\u306E\\u884C\\u3092\\u7121\\u8996\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u3092\\u6307\\u5B9A\\u3057\\u306A\\u3044\\u3067\\u30B3\\u30D4\\u30FC\\u3059\\u308B\\u5834\\u5408\\u306B\\u73FE\\u5728\\u306E\\u884C\\u3092\\u30B3\\u30D4\\u30FC\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5165\\u529B\\u4E2D\\u306B\\u4E00\\u81F4\\u3092\\u691C\\u7D22\\u3059\\u308B\\u305F\\u3081\\u306B\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u30B8\\u30E3\\u30F3\\u30D7\\u3055\\u305B\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u9078\\u629E\\u7BC4\\u56F2\\u304B\\u3089\\u691C\\u7D22\\u6587\\u5B57\\u5217\\u3092\\u30B7\\u30FC\\u30C9\\u3057\\u307E\\u305B\\u3093\\u3002\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u4F4D\\u7F6E\\u306B\\u3042\\u308B\\u5358\\u8A9E\\u3092\\u542B\\u3081\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u9078\\u629E\\u7BC4\\u56F2\\u304B\\u3089\\u691C\\u7D22\\u6587\\u5B57\\u5217\\u3092\\u5E38\\u306B\\u30B7\\u30FC\\u30C9\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u9078\\u629E\\u7BC4\\u56F2\\u304B\\u3089\\u691C\\u7D22\\u6587\\u5B57\\u5217\\u306E\\u307F\\u3092\\u30B7\\u30FC\\u30C9\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u9078\\u629E\\u7BC4\\u56F2\\u304B\\u3089\\u691C\\u7D22\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u5185\\u306E\\u691C\\u7D22\\u6587\\u5B57\\u5217\\u3092\\u4E0E\\u3048\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"[\\u9078\\u629E\\u7BC4\\u56F2\\u3092\\u691C\\u7D22] \\u3092\\u81EA\\u52D5\\u7684\\u306B\\u30AA\\u30F3\\u306B\\u3057\\u307E\\u305B\\u3093 (\\u65E2\\u5B9A)\\u3002\",\"[\\u9078\\u629E\\u7BC4\\u56F2\\u3092\\u691C\\u7D22] \\u3092\\u5E38\\u306B\\u81EA\\u52D5\\u7684\\u306B\\u30AA\\u30F3\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u8907\\u6570\\u884C\\u306E\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u304C\\u9078\\u629E\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u306F\\u3001[\\u9078\\u629E\\u7BC4\\u56F2\\u3092\\u691C\\u7D22] \\u3092\\u81EA\\u52D5\\u7684\\u306B\\u30AA\\u30F3\\u306B\\u3057\\u307E\\u3059\\u3002\",\"[\\u9078\\u629E\\u7BC4\\u56F2\\u3092\\u691C\\u7D22] \\u3092\\u81EA\\u52D5\\u7684\\u306B\\u30AA\\u30F3\\u306B\\u3059\\u308B\\u6761\\u4EF6\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"macOS \\u3067\\u691C\\u7D22\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u304C\\u5171\\u6709\\u306E\\u691C\\u7D22\\u30AF\\u30EA\\u30C3\\u30D7\\u30DC\\u30FC\\u30C9\\u3092\\u8AAD\\u307F\\u53D6\\u308A\\u307E\\u305F\\u306F\\u5909\\u66F4\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u691C\\u7D22\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u304C\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u4E0A\\u306B\\u884C\\u3092\\u3055\\u3089\\u306B\\u8FFD\\u52A0\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002true \\u306E\\u5834\\u5408\\u3001\\u691C\\u7D22\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u304C\\u8868\\u793A\\u3055\\u308C\\u3066\\u3044\\u308B\\u3068\\u304D\\u306B\\u6700\\u521D\\u306E\\u884C\\u3092\\u8D85\\u3048\\u3066\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3067\\u304D\\u307E\\u3059\\u3002\",\"\\u4EE5\\u964D\\u3067\\u4E00\\u81F4\\u304C\\u898B\\u3064\\u304B\\u3089\\u306A\\u3044\\u5834\\u5408\\u306B\\u3001\\u691C\\u7D22\\u3092\\u5148\\u982D\\u304B\\u3089 (\\u307E\\u305F\\u306F\\u672B\\u5C3E\\u304B\\u3089) \\u81EA\\u52D5\\u7684\\u306B\\u518D\\u5B9F\\u884C\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A9\\u30F3\\u30C8\\u306E\\u5408\\u5B57 ('calt' \\u304A\\u3088\\u3073 'liga' \\u30D5\\u30A9\\u30F3\\u30C8\\u306E\\u6A5F\\u80FD) \\u3092\\u6709\\u52B9\\u307E\\u305F\\u306F\\u7121\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002'font-feature-settings' CSS \\u30D7\\u30ED\\u30D1\\u30C6\\u30A3\\u3092\\u8A73\\u7D30\\u306B\\u5236\\u5FA1\\u3059\\u308B\\u306B\\u306F\\u3001\\u3053\\u308C\\u3092\\u6587\\u5B57\\u5217\\u306B\\u5909\\u66F4\\u3057\\u307E\\u3059\\u3002\",\"\\u660E\\u793A\\u7684\\u306A 'font-feature-settings' CSS \\u30D7\\u30ED\\u30D1\\u30C6\\u30A3\\u3002\\u5408\\u5B57\\u3092\\u6709\\u52B9\\u307E\\u305F\\u306F\\u7121\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308B\\u306E\\u304C 1 \\u3064\\u3060\\u3051\\u3067\\u3042\\u308B\\u5834\\u5408\\u306F\\u3001\\u4EE3\\u308F\\u308A\\u306B\\u30D6\\u30FC\\u30EB\\u5024\\u3092\\u6E21\\u3059\\u3053\\u3068\\u304C\\u3067\\u304D\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A9\\u30F3\\u30C8\\u306E\\u5408\\u5B57\\u3084\\u30D5\\u30A9\\u30F3\\u30C8\\u306E\\u6A5F\\u80FD\\u3092\\u69CB\\u6210\\u3057\\u307E\\u3059\\u3002\\u5408\\u5B57\\u3092\\u6709\\u52B9\\u307E\\u305F\\u306F\\u7121\\u52B9\\u306B\\u3059\\u308B\\u30D6\\u30FC\\u30EB\\u5024\\u307E\\u305F\\u306F CSS 'font-feature-settings' \\u30D7\\u30ED\\u30D1\\u30C6\\u30A3\\u306E\\u5024\\u306E\\u6587\\u5B57\\u5217\\u3092\\u6307\\u5B9A\\u3067\\u304D\\u307E\\u3059\\u3002\",\"font-weight \\u304B\\u3089 font-variation-settings \\u3078\\u306E\\u5909\\u63DB\\u3092\\u6709\\u52B9/\\u7121\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002'font-variation-settings' CSS \\u30D7\\u30ED\\u30D1\\u30C6\\u30A3\\u3092\\u7D30\\u304B\\u304F\\u5236\\u5FA1\\u3059\\u308B\\u305F\\u3081\\u306B\\u3001\\u3053\\u308C\\u3092\\u6587\\u5B57\\u5217\\u306B\\u5909\\u66F4\\u3057\\u307E\\u3059\\u3002\",\"\\u660E\\u793A\\u7684\\u306A 'font-variation-settings' CSS \\u30D7\\u30ED\\u30D1\\u30C6\\u30A3\\u3002font-weight \\u3092 font-variation-settings \\u306B\\u5909\\u63DB\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308B\\u3060\\u3051\\u3067\\u3042\\u308C\\u3070\\u3001\\u4EE3\\u308F\\u308A\\u306B\\u30D6\\u30FC\\u30EB\\u5024\\u3092\\u6E21\\u3059\\u3053\\u3068\\u304C\\u3067\\u304D\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A9\\u30F3\\u30C8\\u306E\\u30D0\\u30EA\\u30A8\\u30FC\\u30B7\\u30E7\\u30F3\\u3092\\u69CB\\u6210\\u3057\\u307E\\u3059\\u3002font-weight \\u304B\\u3089 font-variation-settings \\u3078\\u306E\\u5909\\u63DB\\u3092\\u6709\\u52B9/\\u7121\\u52B9\\u306B\\u3059\\u308B\\u30D6\\u30FC\\u30EB\\u5024\\u3001\\u307E\\u305F\\u306F CSS 'font-variation-settings' \\u30D7\\u30ED\\u30D1\\u30C6\\u30A3\\u306E\\u5024\\u306E\\u6587\\u5B57\\u5217\\u306E\\u3044\\u305A\\u308C\\u304B\\u3067\\u3059\\u3002\",\"\\u30D5\\u30A9\\u30F3\\u30C8 \\u30B5\\u30A4\\u30BA (\\u30D4\\u30AF\\u30BB\\u30EB\\u5358\\u4F4D) \\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",'\\u4F7F\\u7528\\u3067\\u304D\\u308B\\u306E\\u306F \"\\u6A19\\u6E96\" \\u304A\\u3088\\u3073 \"\\u592A\\u5B57\" \\u306E\\u30AD\\u30FC\\u30EF\\u30FC\\u30C9\\u307E\\u305F\\u306F 1 \\uFF5E 1000 \\u306E\\u6570\\u5B57\\u306E\\u307F\\u3067\\u3059\\u3002','\\u30D5\\u30A9\\u30F3\\u30C8\\u306E\\u592A\\u3055\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\"\\u6A19\\u6E96\" \\u304A\\u3088\\u3073 \"\\u592A\\u5B57\" \\u306E\\u30AD\\u30FC\\u30EF\\u30FC\\u30C9\\u307E\\u305F\\u306F 1 \\uFF5E 1000 \\u306E\\u6570\\u5B57\\u3092\\u53D7\\u3051\\u5165\\u308C\\u307E\\u3059\\u3002',\"\\u7D50\\u679C\\u306E\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC\\u3092\\u8868\\u793A (\\u65E2\\u5B9A)\",\"\\u4E3B\\u306A\\u7D50\\u679C\\u306B\\u79FB\\u52D5\\u3057\\u3001\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\",\"\\u30D7\\u30E9\\u30A4\\u30DE\\u30EA\\u7D50\\u679C\\u306B\\u79FB\\u52D5\\u3057\\u3001\\u4ED6\\u306E\\u30E6\\u30FC\\u30B6\\u30FC\\u3078\\u306E\\u30D4\\u30FC\\u30AF\\u30EC\\u30B9 \\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3\\u3092\\u6709\\u52B9\\u306B\\u3057\\u307E\\u3059\",\"\\u3053\\u306E\\u8A2D\\u5B9A\\u306F\\u975E\\u63A8\\u5968\\u3067\\u3059\\u3002\\u4EE3\\u308F\\u308A\\u306B\\u3001'editor.editor.gotoLocation.multipleDefinitions' \\u3084 'editor.editor.gotoLocation.multipleImplementations' \\u306A\\u3069\\u306E\\u500B\\u5225\\u306E\\u8A2D\\u5B9A\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u8907\\u6570\\u306E\\u30BF\\u30FC\\u30B2\\u30C3\\u30C8\\u306E\\u5834\\u6240\\u304C\\u3042\\u308B\\u3068\\u304D\\u306E '\\u5B9A\\u7FA9\\u3078\\u79FB\\u52D5' \\u30B3\\u30DE\\u30F3\\u30C9\\u306E\\u52D5\\u4F5C\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u8907\\u6570\\u306E\\u30BF\\u30FC\\u30B2\\u30C3\\u30C8\\u306E\\u5834\\u6240\\u304C\\u3042\\u308B\\u3068\\u304D\\u306E '\\u578B\\u5B9A\\u7FA9\\u3078\\u79FB\\u52D5' \\u30B3\\u30DE\\u30F3\\u30C9\\u306E\\u52D5\\u4F5C\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u8907\\u6570\\u306E\\u30BF\\u30FC\\u30B2\\u30C3\\u30C8\\u306E\\u5834\\u6240\\u304C\\u3042\\u308B\\u3068\\u304D\\u306E '\\u5BA3\\u8A00\\u3078\\u79FB\\u52D5' \\u30B3\\u30DE\\u30F3\\u30C9\\u306E\\u52D5\\u4F5C\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u8907\\u6570\\u306E\\u30BF\\u30FC\\u30B2\\u30C3\\u30C8\\u306E\\u5834\\u6240\\u304C\\u3042\\u308B\\u3068\\u304D\\u306E '\\u5B9F\\u88C5\\u306B\\u79FB\\u52D5' \\u30B3\\u30DE\\u30F3\\u30C9\\u306E\\u52D5\\u4F5C\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30BF\\u30FC\\u30B2\\u30C3\\u30C8\\u306E\\u5834\\u6240\\u304C\\u8907\\u6570\\u5B58\\u5728\\u3059\\u308B\\u5834\\u5408\\u306E '\\u53C2\\u7167\\u3078\\u79FB\\u52D5' \\u30B3\\u30DE\\u30F3\\u30C9\\u306E\\u52D5\\u4F5C\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"'\\u5B9A\\u7FA9\\u3078\\u79FB\\u52D5' \\u306E\\u7D50\\u679C\\u304C\\u73FE\\u5728\\u306E\\u5834\\u6240\\u3067\\u3042\\u308B\\u5834\\u5408\\u306B\\u5B9F\\u884C\\u3055\\u308C\\u308B\\u4EE3\\u66FF\\u30B3\\u30DE\\u30F3\\u30C9 ID\\u3002\",\"'\\u578B\\u5B9A\\u7FA9\\u3078\\u79FB\\u52D5' \\u306E\\u7D50\\u679C\\u304C\\u73FE\\u5728\\u306E\\u5834\\u6240\\u3067\\u3042\\u308B\\u5834\\u5408\\u306B\\u5B9F\\u884C\\u3055\\u308C\\u308B\\u4EE3\\u66FF\\u30B3\\u30DE\\u30F3\\u30C9 ID\\u3002\",\"'\\u5BA3\\u8A00\\u3078\\u79FB\\u52D5' \\u306E\\u7D50\\u679C\\u304C\\u73FE\\u5728\\u306E\\u5834\\u6240\\u3067\\u3042\\u308B\\u5834\\u5408\\u306B\\u5B9F\\u884C\\u3055\\u308C\\u308B\\u4EE3\\u66FF\\u30B3\\u30DE\\u30F3\\u30C9 ID\\u3002\",\"'\\u5B9F\\u88C5\\u3078\\u79FB\\u52D5' \\u306E\\u7D50\\u679C\\u304C\\u73FE\\u5728\\u306E\\u5834\\u6240\\u3067\\u3042\\u308B\\u5834\\u5408\\u306B\\u5B9F\\u884C\\u3055\\u308C\\u308B\\u4EE3\\u66FF\\u30B3\\u30DE\\u30F3\\u30C9 ID\\u3002\",\"'\\u53C2\\u7167\\u3078\\u79FB\\u52D5' \\u306E\\u7D50\\u679C\\u304C\\u73FE\\u5728\\u306E\\u5834\\u6240\\u3067\\u3042\\u308B\\u5834\\u5408\\u306B\\u5B9F\\u884C\\u3055\\u308C\\u308B\\u4EE3\\u66FF\\u30B3\\u30DE\\u30F3\\u30C9 ID\\u3002\",\"\\u30DB\\u30D0\\u30FC\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30DB\\u30D0\\u30FC\\u3092\\u8868\\u793A\\u5F8C\\u306E\\u5F85\\u3061\\u6642\\u9593 (\\u30DF\\u30EA\\u79D2) \\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30DB\\u30D0\\u30FC\\u306B\\u30DE\\u30A6\\u30B9\\u3092\\u79FB\\u52D5\\u3057\\u305F\\u3068\\u304D\\u306B\\u3001\\u30DB\\u30D0\\u30FC\\u3092\\u8868\\u793A\\u3057\\u7D9A\\u3051\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30B9\\u30DA\\u30FC\\u30B9\\u304C\\u3042\\u308B\\u5834\\u5408\\u306F\\u3001\\u884C\\u306E\\u4E0A\\u306B\\u30DE\\u30A6\\u30B9 \\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u88AB\\u305B\\u3066\\u8868\\u793A\\u3059\\u308B\\u3002\",\"\\u3059\\u3079\\u3066\\u306E\\u6587\\u5B57\\u306E\\u5E45\\u304C\\u540C\\u3058\\u3067\\u3042\\u308B\\u3068\\u4EEE\\u5B9A\\u3057\\u307E\\u3059\\u3002\\u3053\\u308C\\u306F\\u3001\\u30E2\\u30CE\\u30B9\\u30DA\\u30FC\\u30B9 \\u30D5\\u30A9\\u30F3\\u30C8\\u3084\\u3001\\u30B0\\u30EA\\u30D5\\u306E\\u5E45\\u304C\\u7B49\\u3057\\u3044\\u7279\\u5B9A\\u306E\\u30B9\\u30AF\\u30EA\\u30D7\\u30C8 (\\u30E9\\u30C6\\u30F3\\u6587\\u5B57\\u306A\\u3069) \\u3067\\u6B63\\u3057\\u304F\\u52D5\\u4F5C\\u3059\\u308B\\u9AD8\\u901F\\u30A2\\u30EB\\u30B4\\u30EA\\u30BA\\u30E0\\u3067\\u3059\\u3002\",\"\\u6298\\u308A\\u8FD4\\u3057\\u30DD\\u30A4\\u30F3\\u30C8\\u306E\\u8A08\\u7B97\\u3092\\u30D6\\u30E9\\u30A6\\u30B6\\u30FC\\u306B\\u30C7\\u30EA\\u30B2\\u30FC\\u30C8\\u3057\\u307E\\u3059\\u3002\\u3053\\u308C\\u306F\\u3001\\u5927\\u304D\\u306A\\u30D5\\u30A1\\u30A4\\u30EB\\u306E\\u30D5\\u30EA\\u30FC\\u30BA\\u3092\\u5F15\\u304D\\u8D77\\u3053\\u3059\\u53EF\\u80FD\\u6027\\u304C\\u3042\\u308B\\u3082\\u306E\\u306E\\u3001\\u3059\\u3079\\u3066\\u306E\\u30B1\\u30FC\\u30B9\\u3067\\u6B63\\u3057\\u304F\\u52D5\\u4F5C\\u3059\\u308B\\u4F4E\\u901F\\u306A\\u30A2\\u30EB\\u30B4\\u30EA\\u30BA\\u30E0\\u3067\\u3059\\u3002\",\"\\u6298\\u308A\\u8FD4\\u3057\\u30DD\\u30A4\\u30F3\\u30C8\\u3092\\u8A08\\u7B97\\u3059\\u308B\\u30A2\\u30EB\\u30B4\\u30EA\\u30BA\\u30E0\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u30A2\\u30AF\\u30BB\\u30B7\\u30D3\\u30EA\\u30C6\\u30A3 \\u30E2\\u30FC\\u30C9\\u3067\\u306F\\u3001\\u6700\\u9AD8\\u306E\\u30A8\\u30AF\\u30B9\\u30DA\\u30EA\\u30A8\\u30F3\\u30B9\\u3092\\u5B9F\\u73FE\\u3059\\u308B\\u305F\\u3081\\u306B\\u8A73\\u7D30\\u8A2D\\u5B9A\\u304C\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u3053\\u3068\\u306B\\u3054\\u6CE8\\u610F\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306E\\u96FB\\u7403\\u3092\\u6709\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u4E2D\\u306B\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u4E0A\\u90E8\\u306B\\u5165\\u308C\\u5B50\\u306B\\u306A\\u3063\\u305F\\u73FE\\u5728\\u306E\\u30B9\\u30B3\\u30FC\\u30D7\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u8868\\u793A\\u3059\\u308B\\u8FFD\\u5F93\\u884C\\u306E\\u6700\\u5927\\u6570\\u3092\\u5B9A\\u7FA9\\u3057\\u307E\\u3059\\u3002\",\"\\u56FA\\u5B9A\\u3059\\u308B\\u884C\\u3092\\u6C7A\\u5B9A\\u3059\\u308B\\u305F\\u3081\\u306B\\u4F7F\\u7528\\u3059\\u308B\\u30E2\\u30C7\\u30EB\\u3092\\u5B9A\\u7FA9\\u3057\\u307E\\u3059\\u3002\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3 \\u30E2\\u30C7\\u30EB\\u304C\\u5B58\\u5728\\u3057\\u306A\\u3044\\u5834\\u5408\\u3001\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30E2\\u30C7\\u30EB\\u306B\\u30D5\\u30A9\\u30FC\\u30EB\\u30D0\\u30C3\\u30AF\\u3059\\u308B\\u6298\\u308A\\u305F\\u305F\\u307F\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC \\u30E2\\u30C7\\u30EB\\u306B\\u30D5\\u30A9\\u30FC\\u30EB\\u30D0\\u30C3\\u30AF\\u3057\\u307E\\u3059\\u3002\\u3053\\u306E\\u9806\\u5E8F\\u306F\\u30013 \\u3064\\u306E\\u30B1\\u30FC\\u30B9\\u3059\\u3079\\u3066\\u3067\\u512A\\u5148\\u3055\\u308C\\u307E\\u3059\\u3002\",\"Enable scrolling of the sticky scroll widget with the editor's horizontal scrollbar.\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30A4\\u30F3\\u30EC\\u30FC \\u30D2\\u30F3\\u30C8\\u3092\\u6709\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u30A4\\u30F3\\u30EC\\u30A4 \\u30D2\\u30F3\\u30C8\\u304C\\u6709\\u52B9\\u306B\\u306A\\u3063\\u3066\\u3044\\u307E\\u3059\",\"\\u30A4\\u30F3\\u30EC\\u30A4 \\u30D2\\u30F3\\u30C8\\u306F\\u65E2\\u5B9A\\u3067\\u8868\\u793A\\u3055\\u308C\\u3001{0} \\u3092\\u62BC\\u3057\\u305F\\u307E\\u307E\\u306B\\u3059\\u308B\\u3068\\u975E\\u8868\\u793A\\u306B\\u306A\\u308A\\u307E\\u3059\",\"\\u30A4\\u30F3\\u30EC\\u30A4 \\u30D2\\u30F3\\u30C8\\u306F\\u65E2\\u5B9A\\u3067\\u306F\\u975E\\u8868\\u793A\\u306B\\u306A\\u308A\\u3001{0} \\u3092\\u62BC\\u3057\\u305F\\u307E\\u307E\\u306B\\u3059\\u308B\\u3068\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\",\"\\u30A4\\u30F3\\u30EC\\u30A4 \\u30D2\\u30F3\\u30C8\\u304C\\u7121\\u52B9\\u306B\\u306A\\u3063\\u3066\\u3044\\u307E\\u3059\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u306E\\u89E3\\u8AAC\\u30D2\\u30F3\\u30C8\\u306E\\u30D5\\u30A9\\u30F3\\u30C8 \\u30B5\\u30A4\\u30BA\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u65E2\\u5B9A\\u3067\\u306F\\u3001{0} \\u306F\\u3001\\u69CB\\u6210\\u3055\\u308C\\u305F\\u5024\\u304C {1} \\u3088\\u308A\\u5C0F\\u3055\\u3044\\u304B\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30D5\\u30A9\\u30F3\\u30C8 \\u30B5\\u30A4\\u30BA\\u3088\\u308A\\u5927\\u304D\\u3044\\u5834\\u5408\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u89E3\\u8AAC\\u30D2\\u30F3\\u30C8\\u306E\\u30D5\\u30A9\\u30F3\\u30C8 \\u30D5\\u30A1\\u30DF\\u30EA\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u7A7A\\u306B\\u8A2D\\u5B9A\\u3059\\u308B\\u3068\\u3001 {0} \\u304C\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u306E\\u30A4\\u30F3\\u30EC\\u30A4 \\u30D2\\u30F3\\u30C8\\u306B\\u95A2\\u3059\\u308B\\u30D1\\u30C7\\u30A3\\u30F3\\u30B0\\u3092\\u6709\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",`\\u884C\\u306E\\u9AD8\\u3055\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\r\n - 0 \\u3092\\u4F7F\\u7528\\u3057\\u3066\\u30D5\\u30A9\\u30F3\\u30C8 \\u30B5\\u30A4\\u30BA\\u304B\\u3089\\u884C\\u306E\\u9AD8\\u3055\\u3092\\u81EA\\u52D5\\u7684\\u306B\\u8A08\\u7B97\\u3057\\u307E\\u3059\\u3002\\r\n - 0 \\u304B\\u3089 8 \\u307E\\u3067\\u306E\\u5024\\u306F\\u3001\\u30D5\\u30A9\\u30F3\\u30C8 \\u30B5\\u30A4\\u30BA\\u306E\\u4E57\\u6570\\u3068\\u3057\\u3066\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\\r\n - 8 \\u4EE5\\u4E0A\\u306E\\u5024\\u306F\\u6709\\u52B9\\u5024\\u3068\\u3057\\u3066\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002`,\"\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7\\u3092\\u81EA\\u52D5\\u7684\\u306B\\u975E\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7\\u306E\\u30B5\\u30A4\\u30BA\\u306F\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u3068\\u540C\\u3058\\u3067\\u3059 (\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3059\\u308B\\u5834\\u5408\\u304C\\u3042\\u308A\\u307E\\u3059)\\u3002\",\"\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7\\u306F\\u3001\\u5FC5\\u8981\\u306B\\u5FDC\\u3058\\u3066\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u9AD8\\u3055\\u3092\\u57CB\\u3081\\u308B\\u305F\\u3081\\u3001\\u62E1\\u5927\\u307E\\u305F\\u306F\\u7E2E\\u5C0F\\u3057\\u307E\\u3059 (\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3057\\u307E\\u305B\\u3093)\\u3002\",\"\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7\\u306F\\u5FC5\\u8981\\u306B\\u5FDC\\u3058\\u3066\\u7E2E\\u5C0F\\u3057\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3088\\u308A\\u5927\\u304D\\u304F\\u306A\\u308B\\u3053\\u3068\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093 (\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3057\\u307E\\u305B\\u3093)\\u3002\",\"\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7\\u306E\\u30B5\\u30A4\\u30BA\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7\\u3092\\u8868\\u793A\\u3059\\u308B\\u5834\\u6240\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7 \\u30B9\\u30E9\\u30A4\\u30C0\\u30FC\\u3092\\u8868\\u793A\\u3059\\u308B\\u30BF\\u30A4\\u30DF\\u30F3\\u30B0\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7\\u306B\\u63CF\\u753B\\u3055\\u308C\\u308B\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u306E\\u30B9\\u30B1\\u30FC\\u30EB: 1\\u30012\\u3001\\u307E\\u305F\\u306F 3\\u3002\",\"\\u884C\\u306B\\u30AB\\u30E9\\u30FC \\u30D6\\u30ED\\u30C3\\u30AF\\u3067\\u306F\\u306A\\u304F\\u5B9F\\u969B\\u306E\\u6587\\u5B57\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u8868\\u793A\\u3059\\u308B\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7\\u306E\\u6700\\u5927\\u5E45\\u3092\\u7279\\u5B9A\\u306E\\u5217\\u6570\\u306B\\u5236\\u9650\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u4E0A\\u7AEF\\u3068\\u6700\\u521D\\u306E\\u884C\\u306E\\u9593\\u306E\\u4F59\\u767D\\u306E\\u5927\\u304D\\u3055\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u4E0B\\u7AEF\\u3068\\u6700\\u5F8C\\u306E\\u884C\\u306E\\u9593\\u306E\\u4F59\\u767D\\u306E\\u5927\\u304D\\u3055\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5165\\u529B\\u6642\\u306B\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC \\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u3068\\u578B\\u60C5\\u5831\\u3092\\u8868\\u793A\\u3059\\u308B\\u30DD\\u30C3\\u30D7\\u30A2\\u30C3\\u30D7\\u3092\\u6709\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC \\u30D2\\u30F3\\u30C8 \\u30E1\\u30CB\\u30E5\\u30FC\\u3092\\u5468\\u56DE\\u3059\\u308B\\u304B\\u3001\\u30EA\\u30B9\\u30C8\\u306E\\u6700\\u5F8C\\u3067\\u9589\\u3058\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u63D0\\u6848\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u5185\\u306B\\u30AF\\u30A4\\u30C3\\u30AF\\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u308B\",\"\\u30AF\\u30A4\\u30C3\\u30AF\\u5019\\u88DC\\u304C\\u30B4\\u30FC\\u30B9\\u30C8 \\u30C6\\u30AD\\u30B9\\u30C8\\u3068\\u3057\\u3066\\u8868\\u793A\\u3055\\u308C\\u308B\",\"\\u30AF\\u30A4\\u30C3\\u30AF\\u5019\\u88DC\\u304C\\u7121\\u52B9\\u306B\\u306A\\u3063\\u3066\\u3044\\u307E\\u3059\",\"\\u6587\\u5B57\\u5217\\u5185\\u3067\\u30AF\\u30A4\\u30C3\\u30AF\\u5019\\u88DC\\u3092\\u6709\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u30B3\\u30E1\\u30F3\\u30C8\\u5185\\u3067\\u30AF\\u30A4\\u30C3\\u30AF\\u5019\\u88DC\\u3092\\u6709\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u6587\\u5B57\\u5217\\u304A\\u3088\\u3073\\u30B3\\u30E1\\u30F3\\u30C8\\u5916\\u3067\\u30AF\\u30A4\\u30C3\\u30AF\\u5019\\u88DC\\u3092\\u6709\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u5165\\u529B\\u4E2D\\u306B\\u5019\\u88DC\\u3092\\u81EA\\u52D5\\u7684\\u306B\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u3053\\u308C\\u306F\\u3001\\u30B3\\u30E1\\u30F3\\u30C8\\u3001\\u6587\\u5B57\\u5217\\u3001\\u305D\\u306E\\u4ED6\\u30B3\\u30FC\\u30C9\\u306E\\u5165\\u529B\\u7528\\u306B\\u8A2D\\u5B9A\\u3067\\u304D\\u307E\\u3059\\u3002\\u30AF\\u30A4\\u30C3\\u30AF\\u63D0\\u6848\\u306F\\u3001\\u30B4\\u30FC\\u30B9\\u30C8 \\u30C6\\u30AD\\u30B9\\u30C8\\u3068\\u3057\\u3066\\u8868\\u793A\\u3059\\u308B\\u304B\\u3001\\u63D0\\u6848\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3067\\u8868\\u793A\\u3059\\u308B\\u3088\\u3046\\u306B\\u69CB\\u6210\\u3067\\u304D\\u307E\\u3059\\u3002\\u307E\\u305F\\u3001'{0}' \\u306B\\u6CE8\\u610F\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\\u3053\\u308C\\u306F\\u3001\\u63D0\\u6848\\u304C\\u7279\\u6B8A\\u6587\\u5B57\\u306B\\u3088\\u3063\\u3066\\u30C8\\u30EA\\u30AC\\u30FC\\u3055\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3059\\u308B\\u8A2D\\u5B9A\\u3067\\u3059\\u3002\",\"\\u884C\\u756A\\u53F7\\u306F\\u8868\\u793A\\u3055\\u308C\\u307E\\u305B\\u3093\\u3002\",\"\\u884C\\u756A\\u53F7\\u306F\\u3001\\u7D76\\u5BFE\\u5024\\u3068\\u3057\\u3066\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u884C\\u756A\\u53F7\\u306F\\u3001\\u30AB\\u30FC\\u30BD\\u30EB\\u4F4D\\u7F6E\\u307E\\u3067\\u306E\\u884C\\u6570\\u3068\\u3057\\u3066\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u884C\\u756A\\u53F7\\u306F 10 \\u884C\\u3054\\u3068\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u884C\\u756A\\u53F7\\u306E\\u8868\\u793A\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u3053\\u306E\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30EB\\u30FC\\u30E9\\u30FC\\u304C\\u30EC\\u30F3\\u30C0\\u30EA\\u30F3\\u30B0\\u3059\\u308B\\u5358\\u4E00\\u9818\\u57DF\\u306E\\u6587\\u5B57\\u6570\\u3002\",\"\\u3053\\u306E\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30EB\\u30FC\\u30E9\\u30FC\\u306E\\u8272\\u3067\\u3059\\u3002\",\"\\u7279\\u5B9A\\u306E\\u7B49\\u5E45\\u6587\\u5B57\\u6570\\u306E\\u5F8C\\u306B\\u5782\\u76F4\\u30EB\\u30FC\\u30E9\\u30FC\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\\u8907\\u6570\\u306E\\u30EB\\u30FC\\u30E9\\u30FC\\u306B\\u306F\\u8907\\u6570\\u306E\\u5024\\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\\u914D\\u5217\\u304C\\u7A7A\\u306E\\u5834\\u5408\\u306F\\u30EB\\u30FC\\u30E9\\u30FC\\u3092\\u8868\\u793A\\u3057\\u307E\\u305B\\u3093\\u3002\",\"\\u5782\\u76F4\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u30D0\\u30FC\\u306F\\u3001\\u5FC5\\u8981\\u306A\\u5834\\u5408\\u306B\\u306E\\u307F\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u5782\\u76F4\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u30D0\\u30FC\\u306F\\u5E38\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u5782\\u76F4\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u30D0\\u30FC\\u306F\\u5E38\\u306B\\u975E\\u8868\\u793A\\u306B\\u306A\\u308A\\u307E\\u3059\\u3002\",\"\\u5782\\u76F4\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u30D0\\u30FC\\u306E\\u8868\\u793A\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u6C34\\u5E73\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u30D0\\u30FC\\u306F\\u3001\\u5FC5\\u8981\\u306A\\u5834\\u5408\\u306B\\u306E\\u307F\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6C34\\u5E73\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u30D0\\u30FC\\u306F\\u5E38\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6C34\\u5E73\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u30D0\\u30FC\\u306F\\u5E38\\u306B\\u975E\\u8868\\u793A\\u306B\\u306A\\u308A\\u307E\\u3059\\u3002\",\"\\u6C34\\u5E73\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u30D0\\u30FC\\u306E\\u8868\\u793A\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5782\\u76F4\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u30D0\\u30FC\\u306E\\u5E45\\u3002\",\"\\u6C34\\u5E73\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u30D0\\u30FC\\u306E\\u9AD8\\u3055\\u3002\",\"\\u30AF\\u30EA\\u30C3\\u30AF\\u3059\\u308B\\u3068\\u30DA\\u30FC\\u30B8\\u5358\\u4F4D\\u3067\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3059\\u308B\\u304B\\u3001\\u30AF\\u30EA\\u30C3\\u30AF\\u4F4D\\u7F6E\\u306B\\u30B8\\u30E3\\u30F3\\u30D7\\u3059\\u308B\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u57FA\\u672C ASCII \\u4EE5\\u5916\\u306E\\u3059\\u3079\\u3066\\u306E\\u6587\\u5B57\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002U+0020 \\u304B\\u3089 U+007E \\u306E\\u9593\\u306E\\u6587\\u5B57\\u3001\\u30BF\\u30D6\\u3001\\u6539\\u884C (LF)\\u3001\\u884C\\u982D\\u5FA9\\u5E30\\u306E\\u307F\\u304C\\u57FA\\u672C ASCII \\u3068\\u898B\\u306A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u7A7A\\u767D\\u3092\\u5360\\u3081\\u308B\\u3060\\u3051\\u306E\\u6587\\u5B57\\u3084\\u5E45\\u304C\\u307E\\u3063\\u305F\\u304F\\u306A\\u3044\\u6587\\u5B57\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u73FE\\u5728\\u306E\\u30E6\\u30FC\\u30B6\\u30FC \\u30ED\\u30B1\\u30FC\\u30EB\\u3067\\u4E00\\u822C\\u7684\\u306A\\u6587\\u5B57\\u3092\\u9664\\u304D\\u3001\\u57FA\\u672C\\u7684\\u306A ASCII \\u6587\\u5B57\\u3068\\u6DF7\\u540C\\u3055\\u308C\\u308B\\u53EF\\u80FD\\u6027\\u306E\\u3042\\u308B\\u6587\\u5B57\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30B3\\u30E1\\u30F3\\u30C8\\u5185\\u306E\\u6587\\u5B57\\u3092 Unicode \\u5F37\\u8ABF\\u8868\\u793A\\u306E\\u5BFE\\u8C61\\u306B\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u6587\\u5B57\\u5217\\u5185\\u306E\\u6587\\u5B57\\u3092 Unicode \\u5F37\\u8ABF\\u8868\\u793A\\u306E\\u5BFE\\u8C61\\u306B\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5F37\\u8ABF\\u8868\\u793A\\u305B\\u305A\\u8A31\\u53EF\\u3055\\u308C\\u308B\\u6587\\u5B57\\u3092\\u5B9A\\u7FA9\\u3057\\u307E\\u3059\\u3002\",\"\\u8A31\\u53EF\\u3055\\u308C\\u3066\\u3044\\u308B\\u30ED\\u30B1\\u30FC\\u30EB\\u3067\\u4E00\\u822C\\u7684\\u306A Unicode \\u6587\\u5B57\\u306F\\u5F37\\u8ABF\\u8868\\u793A\\u3055\\u308C\\u307E\\u305B\\u3093\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u3092\\u81EA\\u52D5\\u7684\\u306B\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u308B\\u305F\\u3073\\u306B\\u3001\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u30C4\\u30FC\\u30EB \\u30D0\\u30FC\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u306B\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u5408\\u308F\\u305B\\u308B\\u305F\\u3073\\u306B\\u3001\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u30C4\\u30FC\\u30EB \\u30D0\\u30FC\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u30C4\\u30FC\\u30EB \\u30D0\\u30FC\\u3092\\u8868\\u793A\\u3059\\u308B\\u30BF\\u30A4\\u30DF\\u30F3\\u30B0\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u63D0\\u6848\\u3068\\u63D0\\u6848\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u76F8\\u4E92\\u4F5C\\u7528\\u306E\\u65B9\\u6CD5\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u6709\\u52B9\\u3059\\u308B\\u3068\\u3001\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u304C\\u4F7F\\u7528\\u53EF\\u80FD\\u306A\\u5834\\u5408\\u306F\\u3001\\u63D0\\u6848\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u304C\\u81EA\\u52D5\\u7684\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u305B\\u3093\\u3002\",\"\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8\\u306E\\u30DA\\u30A2\\u306E\\u8272\\u4ED8\\u3051\\u304C\\u6709\\u52B9\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002 {0} \\u3092\\u4F7F\\u7528\\u3057\\u3066\\u3001\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u306E\\u8272\\u3092\\u30AA\\u30FC\\u30D0\\u30FC\\u30E9\\u30A4\\u30C9\\u3057\\u307E\\u3059\\u3002\",\"\\u62EC\\u5F27\\u306E\\u5404\\u7A2E\\u5225\\u304C\\u3001\\u500B\\u5225\\u306E\\u30AB\\u30E9\\u30FC \\u30D7\\u30FC\\u30EB\\u3092\\u4FDD\\u6301\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8 \\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8 \\u30DA\\u30A2\\u306B\\u5BFE\\u3057\\u3066\\u306E\\u307F\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8 \\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8 \\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u7121\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8 \\u30DA\\u30A2\\u306E\\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u7E26\\u306E\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8 \\u30DA\\u30A2\\u306E\\u30AC\\u30A4\\u30C9\\u306B\\u52A0\\u3048\\u3066\\u3001\\u540C\\u3058\\u304F\\u6C34\\u5E73\\u306E\\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8 \\u30DA\\u30A2\\u306B\\u5BFE\\u3057\\u3066\\u306E\\u307F\\u3001\\u6C34\\u5E73\\u306E\\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u6C34\\u5E73\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8 \\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u7121\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u6C34\\u5E73\\u65B9\\u5411\\u306E\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8 \\u30DA\\u30A2\\u306E\\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u89D2\\u304B\\u3063\\u3053\\u30AC\\u30A4\\u30C9\\u304C\\u5F37\\u8ABF\\u8868\\u793A\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u3067\\u3082\\u3001\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3057\\u306A\\u3044\\u3067\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u306E\\u30AC\\u30A4\\u30C9\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u306E\\u53F3\\u306E\\u30C6\\u30AD\\u30B9\\u30C8\\u3092\\u4E0A\\u66F8\\u304D\\u305B\\u305A\\u306B\\u5019\\u88DC\\u3092\\u633F\\u5165\\u3057\\u307E\\u3059\\u3002\",\"\\u5019\\u88DC\\u3092\\u633F\\u5165\\u3057\\u3001\\u30AB\\u30FC\\u30BD\\u30EB\\u306E\\u53F3\\u306E\\u30C6\\u30AD\\u30B9\\u30C8\\u3092\\u4E0A\\u66F8\\u304D\\u3057\\u307E\\u3059\\u3002\",\"\\u5165\\u529B\\u5019\\u88DC\\u3092\\u53D7\\u3051\\u5165\\u308C\\u308B\\u3068\\u304D\\u306B\\u5358\\u8A9E\\u3092\\u4E0A\\u66F8\\u304D\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u3053\\u308C\\u306F\\u3001\\u3053\\u306E\\u6A5F\\u80FD\\u306E\\u5229\\u7528\\u3092\\u9078\\u629E\\u3059\\u308B\\u62E1\\u5F35\\u6A5F\\u80FD\\u306B\\u4F9D\\u5B58\\u3059\\u308B\\u3053\\u3068\\u306B\\u3054\\u6CE8\\u610F\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u5019\\u88DC\\u306E\\u30D5\\u30A3\\u30EB\\u30BF\\u30FC\\u51E6\\u7406\\u3068\\u4E26\\u3073\\u66FF\\u3048\\u3067\\u3055\\u3055\\u3044\\u306A\\u5165\\u529B\\u30DF\\u30B9\\u3092\\u8003\\u616E\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u4E26\\u3079\\u66FF\\u3048\\u304C\\u30AB\\u30FC\\u30BD\\u30EB\\u4ED8\\u8FD1\\u306B\\u8868\\u793A\\u3055\\u308C\\u308B\\u5358\\u8A9E\\u3092\\u512A\\u5148\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u4FDD\\u5B58\\u3055\\u308C\\u305F\\u5019\\u88DC\\u30BB\\u30AF\\u30B7\\u30E7\\u30F3\\u3092\\u8907\\u6570\\u306E\\u30EF\\u30FC\\u30AF\\u30D7\\u30EC\\u30FC\\u30B9\\u3068\\u30A6\\u30A3\\u30F3\\u30C9\\u30A6\\u3067\\u5171\\u6709\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059 (`#editor.suggestSelection#` \\u304C\\u5FC5\\u8981)\\u3002\",\"IntelliSense \\u3092\\u81EA\\u52D5\\u3067\\u30C8\\u30EA\\u30AC\\u30FC\\u3059\\u308B\\u5834\\u5408\\u306B\\u3001\\u5E38\\u306B\\u5019\\u88DC\\u3092\\u9078\\u629E\\u3057\\u307E\\u3059\\u3002\",\"IntelliSense \\u3092\\u81EA\\u52D5\\u3067\\u30C8\\u30EA\\u30AC\\u30FC\\u3059\\u308B\\u5834\\u5408\\u306B\\u3001\\u5019\\u88DC\\u3092\\u9078\\u629E\\u3057\\u307E\\u305B\\u3093\\u3002\",\"\\u30C8\\u30EA\\u30AC\\u30FC\\u6587\\u5B57\\u304B\\u3089 IntelliSense \\u3092\\u30C8\\u30EA\\u30AC\\u30FC\\u3059\\u308B\\u5834\\u5408\\u306B\\u306E\\u307F\\u3001\\u5019\\u88DC\\u3092\\u9078\\u629E\\u3057\\u307E\\u3059\\u3002\",\"\\u5165\\u529B\\u6642\\u306B IntelliSense \\u3092\\u30C8\\u30EA\\u30AC\\u30FC\\u3059\\u308B\\u5834\\u5408\\u306B\\u306E\\u307F\\u3001\\u5019\\u88DC\\u3092\\u9078\\u629E\\u3057\\u307E\\u3059\\u3002\",\"\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3092\\u8868\\u793A\\u3059\\u308B\\u969B\\u306B\\u5019\\u88DC\\u3092\\u9078\\u629E\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u3053\\u3061\\u3089\\u306F\\u81EA\\u52D5\\u7684\\u306B\\u30C8\\u30EA\\u30AC\\u30FC\\u3055\\u308C\\u308B\\u5019\\u88DC ('#editor.quickSuggestions#' \\u3068 '#editor.suggestOnTriggerCharacters#') \\u306B\\u306E\\u307F\\u9069\\u7528\\u3055\\u308C\\u3001('Ctrl+Space' \\u306A\\u3069\\u3092\\u901A\\u3058\\u3066) \\u660E\\u793A\\u7684\\u306B\\u547C\\u3073\\u51FA\\u3055\\u308C\\u308B\\u969B\\u306B\\u306F\\u5E38\\u306B\\u5019\\u88DC\\u304C\\u9078\\u629E\\u3055\\u308C\\u308B\\u3053\\u3068\\u306B\\u3054\\u6CE8\\u610F\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6 \\u30B9\\u30CB\\u30DA\\u30C3\\u30C8\\u304C\\u30AF\\u30A4\\u30C3\\u30AF\\u5019\\u88DC\\u3092\\u9632\\u6B62\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u63D0\\u6848\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3001\\u975E\\u8868\\u793A\\u306B\\u3059\\u308B\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5019\\u88DC\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u4E0B\\u90E8\\u306B\\u3042\\u308B\\u30B9\\u30C6\\u30FC\\u30BF\\u30B9 \\u30D0\\u30FC\\u306E\\u8868\\u793A\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u63D0\\u6848\\u306E\\u7D50\\u679C\\u3092\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30D7\\u30EC\\u30D3\\u30E5\\u30FC\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5019\\u88DC\\u306E\\u8A73\\u7D30\\u3092\\u30E9\\u30D9\\u30EB\\u4ED8\\u304D\\u306E\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u3067\\u8868\\u793A\\u3059\\u308B\\u304B\\u3001\\u8A73\\u7D30\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u306E\\u307F\\u8868\\u793A\\u3059\\u308B\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u3053\\u306E\\u8A2D\\u5B9A\\u306F\\u975E\\u63A8\\u5968\\u3067\\u3059\\u3002\\u5019\\u88DC\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u30B5\\u30A4\\u30BA\\u5909\\u66F4\\u304C\\u3067\\u304D\\u308B\\u3088\\u3046\\u306B\\u306A\\u308A\\u307E\\u3057\\u305F\\u3002\",\"\\u3053\\u306E\\u8A2D\\u5B9A\\u306F\\u975E\\u63A8\\u5968\\u3067\\u3059\\u3002\\u4EE3\\u308F\\u308A\\u306B\\u3001'editor.suggest.showKeywords' \\u3084 'editor.suggest.showSnippets' \\u306A\\u3069\\u306E\\u500B\\u5225\\u306E\\u8A2D\\u5B9A\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u30E1\\u30BD\\u30C3\\u30C9` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u95A2\\u6570` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u30B3\\u30F3\\u30B9\\u30C8\\u30E9\\u30AF\\u30BF\\u30FC` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u975E\\u63A8\\u5968` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306E\\u30D5\\u30A3\\u30EB\\u30BF\\u30FC\\u51E6\\u7406\\u3067\\u306F\\u3001\\u5358\\u8A9E\\u306E\\u5148\\u982D\\u3067\\u6700\\u521D\\u306E\\u6587\\u5B57\\u304C\\u4E00\\u81F4\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\\u305F\\u3068\\u3048\\u3070\\u3001`Console` \\u3084 `WebContext` \\u306E\\u5834\\u5408\\u306F `c`\\u3001`description` \\u306E\\u5834\\u5408\\u306F _not_ \\u3067\\u3059\\u3002\\u7121\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306F\\u3088\\u308A\\u591A\\u304F\\u306E\\u7D50\\u679C\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u304C\\u3001\\u4E00\\u81F4\\u54C1\\u8CEA\\u3067\\u4E26\\u3079\\u66FF\\u3048\\u3089\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u30D5\\u30A3\\u30FC\\u30EB\\u30C9` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u5909\\u6570` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B '\\u30AF\\u30E9\\u30B9' \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u69CB\\u9020\\u4F53` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u30A4\\u30F3\\u30BF\\u30FC\\u30D5\\u30A7\\u30A4\\u30B9` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u30E2\\u30B8\\u30E5\\u30FC\\u30EB` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u30D7\\u30ED\\u30D1\\u30C6\\u30A3` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u30A4\\u30D9\\u30F3\\u30C8` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u6F14\\u7B97\\u5B50` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u30E6\\u30CB\\u30C3\\u30C8` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u5024` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u5B9A\\u6570` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u5217\\u6319\\u578B` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `enumMember` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u30AD\\u30FC\\u30EF\\u30FC\\u30C9` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B '\\u30C6\\u30AD\\u30B9\\u30C8' -\\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u8272` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B '\\u30D5\\u30A1\\u30A4\\u30EB' \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u53C2\\u7167` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `customcolor` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u30D5\\u30A9\\u30EB\\u30C0\\u30FC` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `typeParameter` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B `\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8` \\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306A\\u5834\\u5408\\u3001IntelliSense \\u306B\\u3088\\u3063\\u3066 '\\u30E6\\u30FC\\u30B6\\u30FC' \\u5019\\u88DC\\u304C\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6709\\u52B9\\u306B\\u3059\\u308B\\u3068\\u3001IntelliSense \\u306B\\u3088\\u3063\\u3066 '\\u554F\\u984C' \\u5019\\u88DC\\u304C\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u5148\\u982D\\u3068\\u672B\\u5C3E\\u306E\\u7A7A\\u767D\\u3092\\u5E38\\u306B\\u9078\\u629E\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3002\",\"\\u30B5\\u30D6\\u30EF\\u30FC\\u30C9 ('fooBar' \\u306E 'foo' \\u307E\\u305F\\u306F 'foo_bar' \\u306A\\u3069) \\u3092\\u9078\\u629E\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\\u3002\",\"\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3057\\u307E\\u305B\\u3093\\u3002 \\u6298\\u308A\\u8FD4\\u3057\\u884C\\u306F\\u5217 1 \\u304B\\u3089\\u59CB\\u307E\\u308A\\u307E\\u3059\\u3002\",\"\\u6298\\u308A\\u8FD4\\u3057\\u884C\\u306F\\u3001\\u89AA\\u3068\\u540C\\u3058\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u306B\\u306A\\u308A\\u307E\\u3059\\u3002\",\"\\u6298\\u308A\\u8FD4\\u3057\\u884C\\u306F\\u3001\\u89AA +1 \\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u306B\\u306A\\u308A\\u307E\\u3059\\u3002\",\"\\u6298\\u308A\\u8FD4\\u3057\\u884C\\u306F\\u3001\\u89AA +2 \\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u306B\\u306A\\u308A\\u307E\\u3059\\u3002\",\"\\u6298\\u308A\\u8FD4\\u3057\\u884C\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"(\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30D5\\u30A1\\u30A4\\u30EB\\u3092\\u958B\\u304F\\u4EE3\\u308F\\u308A\\u306B) 'shift' \\u3092\\u62BC\\u3057\\u306A\\u304C\\u3089\\u30C6\\u30AD\\u30B9\\u30C8 \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30D5\\u30A1\\u30A4\\u30EB\\u3092\\u30C9\\u30E9\\u30C3\\u30B0 \\u30A2\\u30F3\\u30C9 \\u30C9\\u30ED\\u30C3\\u30D7\\u3067\\u304D\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30D5\\u30A1\\u30A4\\u30EB\\u3092\\u30C9\\u30ED\\u30C3\\u30D7\\u3059\\u308B\\u3068\\u304D\\u306B\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u3053\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3067\\u306F\\u3001\\u30D5\\u30A1\\u30A4\\u30EB\\u306E\\u30C9\\u30ED\\u30C3\\u30D7\\u65B9\\u6CD5\\u3092\\u5236\\u5FA1\\u3067\\u304D\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A1\\u30A4\\u30EB\\u304C\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30C9\\u30ED\\u30C3\\u30D7\\u3055\\u308C\\u305F\\u5F8C\\u306B\\u3001\\u30C9\\u30ED\\u30C3\\u30D7 \\u30BB\\u30EC\\u30AF\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u30C9\\u30ED\\u30C3\\u30D7 \\u30BB\\u30EC\\u30AF\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3092\\u8868\\u793A\\u3057\\u307E\\u305B\\u3093\\u3002\\u4EE3\\u308F\\u308A\\u306B\\u3001\\u65E2\\u5B9A\\u306E\\u30C9\\u30ED\\u30C3\\u30D7 \\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u5E38\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u3055\\u307E\\u3056\\u307E\\u306A\\u65B9\\u6CD5\\u3067\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u3092\\u8CBC\\u308A\\u4ED8\\u3051\\u308B\\u3053\\u3068\\u304C\\u3067\\u304D\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u3092\\u8CBC\\u308A\\u4ED8\\u3051\\u308B\\u3068\\u304D\\u306B\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u3053\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3092\\u4F7F\\u7528\\u3059\\u308B\\u3068\\u3001\\u30D5\\u30A1\\u30A4\\u30EB\\u306E\\u8CBC\\u308A\\u4ED8\\u3051\\u65B9\\u6CD5\\u3092\\u5236\\u5FA1\\u3067\\u304D\\u307E\\u3059\\u3002\",\"\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u3092\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u8CBC\\u308A\\u4ED8\\u3051\\u305F\\u5F8C\\u3001\\u8CBC\\u308A\\u4ED8\\u3051\\u30BB\\u30EC\\u30AF\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u8CBC\\u308A\\u4ED8\\u3051\\u30BB\\u30EC\\u30AF\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3092\\u8868\\u793A\\u3057\\u306A\\u3044\\u3067\\u304F\\u3060\\u3055\\u3044\\u3002\\u4EE3\\u308F\\u308A\\u306B\\u3001\\u65E2\\u5B9A\\u306E\\u8CBC\\u308A\\u4ED8\\u3051\\u52D5\\u4F5C\\u304C\\u5E38\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30B3\\u30DF\\u30C3\\u30C8\\u6587\\u5B57\\u3067\\u5019\\u88DC\\u3092\\u53D7\\u3051\\u5165\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u305F\\u3068\\u3048\\u3070\\u3001JavaScript \\u3067\\u306F\\u30BB\\u30DF\\u30B3\\u30ED\\u30F3 (`;`) \\u3092\\u30B3\\u30DF\\u30C3\\u30C8\\u6587\\u5B57\\u306B\\u3057\\u3066\\u3001\\u5019\\u88DC\\u3092\\u53D7\\u3051\\u5165\\u308C\\u3066\\u305D\\u306E\\u6587\\u5B57\\u3092\\u5165\\u529B\\u3059\\u308B\\u3053\\u3068\\u304C\\u3067\\u304D\\u307E\\u3059\\u3002\",\"\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u5909\\u66F4\\u3092\\u884C\\u3046\\u3068\\u304D\\u3001`Enter` \\u3092\\u4F7F\\u7528\\u3059\\u308B\\u5834\\u5408\\u306B\\u306E\\u307F\\u5019\\u88DC\\u3092\\u53D7\\u3051\\u4ED8\\u3051\\u307E\\u3059\\u3002\",\"`Tab` \\u30AD\\u30FC\\u306B\\u52A0\\u3048\\u3066 `Enter` \\u30AD\\u30FC\\u3067\\u5019\\u88DC\\u3092\\u53D7\\u3051\\u5165\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u6539\\u884C\\u306E\\u633F\\u5165\\u3084\\u5019\\u88DC\\u306E\\u53CD\\u6620\\u306E\\u9593\\u3067\\u3042\\u3044\\u307E\\u3044\\u3055\\u3092\\u89E3\\u6D88\\u3059\\u308B\\u306E\\u306B\\u5F79\\u7ACB\\u3061\\u307E\\u3059\\u3002\",\"\\u4E00\\u5EA6\\u306B\\u30B9\\u30AF\\u30EA\\u30FC\\u30F3 \\u30EA\\u30FC\\u30C0\\u30FC\\u306B\\u3088\\u3063\\u3066\\u8AAD\\u307F\\u4E0A\\u3052\\u308B\\u3053\\u3068\\u304C\\u3067\\u304D\\u308B\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u884C\\u6570\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u30B9\\u30AF\\u30EA\\u30FC\\u30F3 \\u30EA\\u30FC\\u30C0\\u30FC\\u304C\\u691C\\u51FA\\u3055\\u308C\\u308B\\u3068\\u3001\\u65E2\\u5B9A\\u5024\\u304C 500 \\u306B\\u81EA\\u52D5\\u7684\\u306B\\u8A2D\\u5B9A\\u3055\\u308C\\u307E\\u3059\\u3002\\u8B66\\u544A: \\u65E2\\u5B9A\\u5024\\u3088\\u308A\\u5927\\u304D\\u3044\\u6570\\u5024\\u306E\\u5834\\u5408\\u306F\\u3001\\u30D1\\u30D5\\u30A9\\u30FC\\u30DE\\u30F3\\u30B9\\u306B\\u5F71\\u97FF\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\",\"\\u30B9\\u30AF\\u30EA\\u30FC\\u30F3 \\u30EA\\u30FC\\u30C0\\u30FC\\u306B\\u3088\\u3063\\u3066\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u304C\\u8AAD\\u307F\\u4E0A\\u3052\\u3089\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u8A00\\u8A9E\\u8A2D\\u5B9A\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u3001\\u3044\\u3064\\u304B\\u3063\\u3053\\u3092\\u81EA\\u52D5\\u30AF\\u30ED\\u30FC\\u30BA\\u3059\\u308B\\u304B\\u6C7A\\u5B9A\\u3057\\u307E\\u3059\\u3002\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u304C\\u7A7A\\u767D\\u6587\\u5B57\\u306E\\u5DE6\\u306B\\u3042\\u308B\\u3068\\u304D\\u3060\\u3051\\u3001\\u304B\\u3063\\u3053\\u3092\\u81EA\\u52D5\\u30AF\\u30ED\\u30FC\\u30BA\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u5DE6\\u89D2\\u304B\\u3063\\u3053\\u3092\\u8FFD\\u52A0\\u3057\\u305F\\u5F8C\\u306B\\u81EA\\u52D5\\u7684\\u306B\\u53F3\\u89D2\\u304B\\u3063\\u3053\\u3092\\u633F\\u5165\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u96A3\\u63A5\\u3059\\u308B\\u7D42\\u308F\\u308A\\u5F15\\u7528\\u7B26\\u307E\\u305F\\u306F\\u62EC\\u5F27\\u304C\\u81EA\\u52D5\\u7684\\u306B\\u633F\\u5165\\u3055\\u308C\\u305F\\u5834\\u5408\\u306B\\u306E\\u307F\\u3001\\u305D\\u308C\\u3089\\u3092\\u524A\\u9664\\u3057\\u307E\\u3059\\u3002\",\"\\u524A\\u9664\\u6642\\u306B\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u96A3\\u63A5\\u3059\\u308B\\u7D42\\u308F\\u308A\\u5F15\\u7528\\u7B26\\u307E\\u305F\\u306F\\u62EC\\u5F27\\u3092\\u524A\\u9664\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u7D42\\u308F\\u308A\\u5F15\\u7528\\u7B26\\u307E\\u305F\\u306F\\u62EC\\u5F27\\u304C\\u81EA\\u52D5\\u7684\\u306B\\u633F\\u5165\\u3055\\u308C\\u305F\\u5834\\u5408\\u306B\\u306E\\u307F\\u3001\\u305D\\u308C\\u3089\\u3092\\u4E0A\\u66F8\\u304D\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u7D42\\u308F\\u308A\\u5F15\\u7528\\u7B26\\u307E\\u305F\\u306F\\u62EC\\u5F27\\u3092\\u4E0A\\u66F8\\u304D\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u8A00\\u8A9E\\u8A2D\\u5B9A\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u3001\\u3044\\u3064\\u5F15\\u7528\\u7B26\\u3092\\u81EA\\u52D5\\u30AF\\u30ED\\u30FC\\u30BA\\u3059\\u308B\\u304B\\u6C7A\\u5B9A\\u3057\\u307E\\u3059\\u3002\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u304C\\u7A7A\\u767D\\u6587\\u5B57\\u306E\\u5DE6\\u306B\\u3042\\u308B\\u3068\\u304D\\u3060\\u3051\\u3001\\u5F15\\u7528\\u7B26\\u3092\\u81EA\\u52D5\\u30AF\\u30ED\\u30FC\\u30BA\\u3057\\u307E\\u3059\\u3002\",\"\\u30E6\\u30FC\\u30B6\\u30FC\\u304C\\u958B\\u59CB\\u5F15\\u7528\\u7B26\\u3092\\u8FFD\\u52A0\\u3057\\u305F\\u5F8C\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u81EA\\u52D5\\u7684\\u306B\\u5F15\\u7528\\u7B26\\u3092\\u9589\\u3058\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306F\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3092\\u81EA\\u52D5\\u7684\\u306B\\u633F\\u5165\\u3057\\u307E\\u305B\\u3093\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306F\\u3001\\u73FE\\u5728\\u306E\\u884C\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3092\\u4FDD\\u6301\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306F\\u3001\\u73FE\\u5728\\u306E\\u884C\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3092\\u4FDD\\u6301\\u3057\\u3001\\u8A00\\u8A9E\\u304C\\u5B9A\\u7FA9\\u3055\\u308C\\u305F\\u304B\\u3063\\u3053\\u3092\\u512A\\u5148\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306F\\u3001\\u73FE\\u5728\\u306E\\u884C\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3092\\u4FDD\\u6301\\u3057\\u3001\\u8A00\\u8A9E\\u304C\\u5B9A\\u7FA9\\u3055\\u308C\\u305F\\u304B\\u3063\\u3053\\u3092\\u512A\\u5148\\u3057\\u3001\\u8A00\\u8A9E\\u3067\\u5B9A\\u7FA9\\u3055\\u308C\\u305F\\u7279\\u5225\\u306A onEnterRules \\u3092\\u547C\\u3073\\u51FA\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306F\\u3001\\u73FE\\u5728\\u306E\\u884C\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3092\\u4FDD\\u6301\\u3057\\u3001\\u8A00\\u8A9E\\u304C\\u5B9A\\u7FA9\\u3055\\u308C\\u305F\\u304B\\u3063\\u3053\\u3092\\u512A\\u5148\\u3057\\u3001\\u8A00\\u8A9E\\u3067\\u5B9A\\u7FA9\\u3055\\u308C\\u305F\\u7279\\u5225\\u306A onEnterRules \\u3092\\u547C\\u3073\\u51FA\\u3057\\u3001\\u8A00\\u8A9E\\u3067\\u5B9A\\u7FA9\\u3055\\u308C\\u305F indentationRules \\u3092\\u512A\\u5148\\u3057\\u307E\\u3059\\u3002\",\"\\u30E6\\u30FC\\u30B6\\u30FC\\u304C\\u884C\\u3092\\u5165\\u529B\\u3001\\u8CBC\\u308A\\u4ED8\\u3051\\u3001\\u79FB\\u52D5\\u3001\\u307E\\u305F\\u306F\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3059\\u308B\\u3068\\u304D\\u306B\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3092\\u81EA\\u52D5\\u7684\\u306B\\u8ABF\\u6574\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u8A00\\u8A9E\\u69CB\\u6210\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u3001\\u9078\\u629E\\u7BC4\\u56F2\\u3092\\u3044\\u3064\\u81EA\\u52D5\\u7684\\u306B\\u56F2\\u3080\\u304B\\u3092\\u5224\\u65AD\\u3057\\u307E\\u3059\\u3002\",\"\\u89D2\\u304B\\u3063\\u3053\\u3067\\u306F\\u306A\\u304F\\u3001\\u5F15\\u7528\\u7B26\\u3067\\u56F2\\u307F\\u307E\\u3059\\u3002\",\"\\u5F15\\u7528\\u7B26\\u3067\\u306F\\u306A\\u304F\\u3001\\u89D2\\u304B\\u3063\\u3053\\u3067\\u56F2\\u307F\\u307E\\u3059\\u3002\",\"\\u5F15\\u7528\\u7B26\\u307E\\u305F\\u306F\\u89D2\\u304B\\u3063\\u3053\\u3092\\u5165\\u529B\\u3059\\u308B\\u3068\\u304D\\u306B\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u9078\\u629E\\u7BC4\\u56F2\\u3092\\u81EA\\u52D5\\u7684\\u306B\\u56F2\\u3080\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u306B\\u30B9\\u30DA\\u30FC\\u30B9\\u3092\\u4F7F\\u7528\\u3059\\u308B\\u3068\\u304D\\u306F\\u3001\\u30BF\\u30D6\\u6587\\u5B57\\u306E\\u9078\\u629E\\u52D5\\u4F5C\\u3092\\u30A8\\u30DF\\u30E5\\u30EC\\u30FC\\u30C8\\u3057\\u307E\\u3059\\u3002\\u9078\\u629E\\u7BC4\\u56F2\\u306F\\u30BF\\u30D6\\u4F4D\\u7F6E\\u306B\\u7559\\u307E\\u308A\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067 CodeLens \\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"CodeLens \\u306E\\u30D5\\u30A9\\u30F3\\u30C8 \\u30D5\\u30A1\\u30DF\\u30EA\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"CodeLens \\u306E\\u30D5\\u30A9\\u30F3\\u30C8 \\u30B5\\u30A4\\u30BA\\u3092\\u30D4\\u30AF\\u30BB\\u30EB\\u5358\\u4F4D\\u3067\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u30020 \\u306B\\u8A2D\\u5B9A\\u3059\\u308B\\u3068\\u3001`#editor.fontSize#` \\u306E 90% \\u304C\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30AB\\u30E9\\u30FC \\u30C7\\u30B3\\u30EC\\u30FC\\u30BF\\u30FC\\u3068\\u8272\\u306E\\u9078\\u629E\\u3092\\u8868\\u793A\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30AB\\u30E9\\u30FC \\u30C7\\u30B3\\u30EC\\u30FC\\u30BF\\u30FC\\u306E\\u30AF\\u30EA\\u30C3\\u30AF\\u6642\\u3068\\u30DD\\u30A4\\u30F3\\u30C8\\u6642\\u306E\\u4E21\\u65B9\\u306B\\u30AB\\u30E9\\u30FC \\u30D4\\u30C3\\u30AB\\u30FC\\u3092\\u8868\\u793A\\u3059\\u308B\",\"\\u30AB\\u30E9\\u30FC \\u30C7\\u30B3\\u30EC\\u30FC\\u30BF\\u30FC\\u306E\\u30DD\\u30A4\\u30F3\\u30C8\\u6642\\u306B\\u30AB\\u30E9\\u30FC \\u30D4\\u30C3\\u30AB\\u30FC\\u3092\\u8868\\u793A\\u3059\\u308B\",\"\\u30AB\\u30E9\\u30FC \\u30C7\\u30B3\\u30EC\\u30FC\\u30BF\\u30FC\\u306E\\u30AF\\u30EA\\u30C3\\u30AF\\u6642\\u306B\\u30AB\\u30E9\\u30FC \\u30D4\\u30C3\\u30AB\\u30FC\\u3092\\u8868\\u793A\\u3059\\u308B\",\"\\u30AB\\u30E9\\u30FC \\u30C7\\u30B3\\u30EC\\u30FC\\u30BF\\u30FC\\u304B\\u3089\\u30AB\\u30E9\\u30FC \\u30D4\\u30C3\\u30AB\\u30FC\\u3092\\u8868\\u793A\\u3059\\u308B\\u6761\\u4EF6\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u4E00\\u5EA6\\u306B\\u30EC\\u30F3\\u30C0\\u30EA\\u30F3\\u30B0\\u3067\\u304D\\u308B\\u30AB\\u30E9\\u30FC \\u30C7\\u30B3\\u30EC\\u30FC\\u30BF\\u30FC\\u306E\\u6700\\u5927\\u6570\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30DE\\u30A6\\u30B9\\u3068\\u30AD\\u30FC\\u3067\\u306E\\u9078\\u629E\\u306B\\u3088\\u308A\\u5217\\u306E\\u9078\\u629E\\u3092\\u5B9F\\u884C\\u3067\\u304D\\u308B\\u3088\\u3046\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u69CB\\u6587\\u30CF\\u30A4\\u30E9\\u30A4\\u30C8\\u3092\\u30AF\\u30EA\\u30C3\\u30D7\\u30DC\\u30FC\\u30C9\\u306B\\u30B3\\u30D4\\u30FC\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u306E\\u30A2\\u30CB\\u30E1\\u30FC\\u30B7\\u30E7\\u30F3\\u65B9\\u5F0F\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30B9\\u30E0\\u30FC\\u30BA \\u30AD\\u30E3\\u30EC\\u30C3\\u30C8 \\u30A2\\u30CB\\u30E1\\u30FC\\u30B7\\u30E7\\u30F3\\u304C\\u7121\\u52B9\\u306B\\u306A\\u3063\\u3066\\u3044\\u307E\\u3059\\u3002\",\"\\u30B9\\u30E0\\u30FC\\u30BA \\u30AD\\u30E3\\u30EC\\u30C3\\u30C8 \\u30A2\\u30CB\\u30E1\\u30FC\\u30B7\\u30E7\\u30F3\\u306F\\u3001\\u30E6\\u30FC\\u30B6\\u30FC\\u304C\\u660E\\u793A\\u7684\\u306A\\u30B8\\u30A7\\u30B9\\u30C1\\u30E3\\u3067\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u79FB\\u52D5\\u3057\\u305F\\u5834\\u5408\\u306B\\u306E\\u307F\\u6709\\u52B9\\u306B\\u306A\\u308A\\u307E\\u3059\\u3002\",\"\\u30B9\\u30E0\\u30FC\\u30BA \\u30AD\\u30E3\\u30EC\\u30C3\\u30C8 \\u30A2\\u30CB\\u30E1\\u30FC\\u30B7\\u30E7\\u30F3\\u306F\\u5E38\\u306B\\u6709\\u52B9\\u3067\\u3059\\u3002\",\"\\u6ED1\\u3089\\u304B\\u306A\\u30AD\\u30E3\\u30EC\\u30C3\\u30C8\\u30A2\\u30CB\\u30E1\\u30FC\\u30B7\\u30E7\\u30F3\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u306E\\u30B9\\u30BF\\u30A4\\u30EB\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u524D\\u5F8C\\u306E\\u8868\\u793A\\u53EF\\u80FD\\u306A\\u5148\\u982D\\u306E\\u884C (\\u6700\\u5C0F 0) \\u3068\\u672B\\u5C3E\\u306E\\u884C (\\u6700\\u5C0F 1) \\u306E\\u6700\\u5C0F\\u6570\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u4ED6\\u306E\\u4E00\\u90E8\\u306E\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u306F 'scrollOff' \\u307E\\u305F\\u306F 'scrollOffset' \\u3068\\u547C\\u3070\\u308C\\u307E\\u3059\\u3002\",\"`cursorSurroundingLines` \\u306F\\u3001\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9\\u307E\\u305F\\u306F API \\u3067\\u30C8\\u30EA\\u30AC\\u30FC\\u3055\\u308C\\u305F\\u5834\\u5408\\u306B\\u306E\\u307F\\u5F37\\u5236\\u3055\\u308C\\u307E\\u3059\\u3002\",\"`cursorSurroundingLines` \\u306F\\u5E38\\u306B\\u9069\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"'\\u30AB\\u30FC\\u30BD\\u30EB\\u306E\\u5468\\u56F2\\u306E\\u884C' \\u3092\\u9069\\u7528\\u3059\\u308B\\u30BF\\u30A4\\u30DF\\u30F3\\u30B0\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"`#editor.cursorStyle#` \\u304C `line` \\u306B\\u8A2D\\u5B9A\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u3001\\u30AB\\u30FC\\u30BD\\u30EB\\u306E\\u5E45\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30C9\\u30E9\\u30C3\\u30B0 \\u30A2\\u30F3\\u30C9 \\u30C9\\u30ED\\u30C3\\u30D7\\u306B\\u3088\\u308B\\u9078\\u629E\\u7BC4\\u56F2\\u306E\\u79FB\\u52D5\\u3092\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u8A31\\u53EF\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"SVGS \\u3067\\u65B0\\u3057\\u3044\\u30EC\\u30F3\\u30C0\\u30EA\\u30F3\\u30B0\\u65B9\\u6CD5\\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A9\\u30F3\\u30C8\\u6587\\u5B57\\u306B\\u65B0\\u3057\\u3044\\u30EC\\u30F3\\u30C0\\u30EA\\u30F3\\u30B0\\u65B9\\u6CD5\\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u5B89\\u5B9A\\u3057\\u305F\\u30EC\\u30F3\\u30C0\\u30EA\\u30F3\\u30B0\\u65B9\\u6CD5\\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u65B0\\u3057\\u3044\\u8A66\\u9A13\\u7684\\u306A\\u30E1\\u30BD\\u30C3\\u30C9\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u7A7A\\u767D\\u3092\\u30EC\\u30F3\\u30C0\\u30EA\\u30F3\\u30B0\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"`Alt` \\u3092\\u62BC\\u3059\\u3068\\u3001\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u901F\\u5EA6\\u304C\\u500D\\u5897\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30B3\\u30FC\\u30C9\\u306E\\u6298\\u308A\\u305F\\u305F\\u307F\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5229\\u7528\\u53EF\\u80FD\\u306A\\u5834\\u5408\\u306F\\u8A00\\u8A9E\\u56FA\\u6709\\u306E\\u6298\\u308A\\u305F\\u305F\\u307F\\u65B9\\u6CD5\\u3092\\u4F7F\\u7528\\u3057\\u3001\\u5229\\u7528\\u53EF\\u80FD\\u3067\\u306F\\u306A\\u3044\\u5834\\u5408\\u306F\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u30D9\\u30FC\\u30B9\\u306E\\u65B9\\u6CD5\\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u30D9\\u30FC\\u30B9\\u306E\\u6298\\u308A\\u305F\\u305F\\u307F\\u65B9\\u6CD5\\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u6298\\u308A\\u305F\\u305F\\u307F\\u7BC4\\u56F2\\u306E\\u8A08\\u7B97\\u65B9\\u6CD5\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u6298\\u308A\\u305F\\u305F\\u307E\\u308C\\u305F\\u7BC4\\u56F2\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u30B3\\u30F3\\u30C8\\u30ED\\u30FC\\u30EB\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u30A4\\u30F3\\u30DD\\u30FC\\u30C8\\u7BC4\\u56F2\\u3092\\u81EA\\u52D5\\u7684\\u306B\\u6298\\u308A\\u305F\\u305F\\u3080\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u6298\\u308A\\u305F\\u305F\\u307F\\u53EF\\u80FD\\u306A\\u9818\\u57DF\\u306E\\u6700\\u5927\\u6570\\u3067\\u3059\\u3002\\u3053\\u306E\\u5024\\u3092\\u5927\\u304D\\u304F\\u3059\\u308B\\u3068\\u3001\\u73FE\\u5728\\u306E\\u30BD\\u30FC\\u30B9\\u306B\\u591A\\u6570\\u306E\\u6298\\u308A\\u305F\\u305F\\u307F\\u53EF\\u80FD\\u306A\\u9818\\u57DF\\u304C\\u3042\\u308B\\u5834\\u5408\\u306B\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u5FDC\\u7B54\\u6027\\u304C\\u4F4E\\u4E0B\\u3059\\u308B\\u53EF\\u80FD\\u6027\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u6298\\u308A\\u305F\\u305F\\u307E\\u308C\\u305F\\u884C\\u306E\\u5F8C\\u306E\\u7A7A\\u306E\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u3092\\u30AF\\u30EA\\u30C3\\u30AF\\u3059\\u308B\\u3068\\u884C\\u304C\\u5C55\\u958B\\u3055\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A9\\u30F3\\u30C8 \\u30D5\\u30A1\\u30DF\\u30EA\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u8CBC\\u308A\\u4ED8\\u3051\\u305F\\u5185\\u5BB9\\u304C\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u3088\\u308A\\u81EA\\u52D5\\u7684\\u306B\\u30D5\\u30A9\\u30FC\\u30DE\\u30C3\\u30C8\\u3055\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u30D5\\u30A9\\u30FC\\u30DE\\u30C3\\u30BF\\u3092\\u4F7F\\u7528\\u53EF\\u80FD\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\\u307E\\u305F\\u3001\\u30D5\\u30A9\\u30FC\\u30DE\\u30C3\\u30BF\\u304C\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u5185\\u306E\\u7BC4\\u56F2\\u3092\\u30D5\\u30A9\\u30FC\\u30DE\\u30C3\\u30C8\\u3067\\u304D\\u306A\\u3051\\u308C\\u3070\\u306A\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u5165\\u529B\\u5F8C\\u306B\\u81EA\\u52D5\\u7684\\u306B\\u884C\\u306E\\u30D5\\u30A9\\u30FC\\u30DE\\u30C3\\u30C8\\u3092\\u884C\\u3046\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u7E26\\u306E\\u30B0\\u30EA\\u30D5\\u4F59\\u767D\\u304C\\u8868\\u793A\\u3055\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u307B\\u3068\\u3093\\u3069\\u306E\\u5834\\u5408\\u3001\\u30B0\\u30EA\\u30D5\\u4F59\\u767D\\u306F\\u30C7\\u30D0\\u30C3\\u30B0\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u3067\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u975E\\u8868\\u793A\\u306B\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u6587\\u5B57\\u9593\\u9694 (\\u30D4\\u30AF\\u30BB\\u30EB\\u5358\\u4F4D) \\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30EA\\u30F3\\u30AF\\u3055\\u308C\\u305F\\u7DE8\\u96C6\\u304C\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u6709\\u52B9\\u306B\\u3055\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u8A00\\u8A9E\\u306B\\u3088\\u3063\\u3066\\u306F\\u3001\\u7DE8\\u96C6\\u4E2D\\u306B HTML \\u30BF\\u30B0\\u306A\\u3069\\u306E\\u95A2\\u9023\\u3059\\u308B\\u8A18\\u53F7\\u304C\\u66F4\\u65B0\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u30EA\\u30F3\\u30AF\\u3092\\u691C\\u51FA\\u3057\\u3066\\u30AF\\u30EA\\u30C3\\u30AF\\u53EF\\u80FD\\u306A\\u72B6\\u614B\\u306B\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5BFE\\u5FDC\\u3059\\u308B\\u304B\\u3063\\u3053\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u30DE\\u30A6\\u30B9 \\u30DB\\u30A4\\u30FC\\u30EB \\u30B9\\u30AF\\u30ED\\u30FC\\u30EB \\u30A4\\u30D9\\u30F3\\u30C8\\u306E `deltaX` \\u3068 `deltaY` \\u3067\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u4E57\\u6570\\u3002\",\"`Ctrl` \\u30AD\\u30FC\\u3092\\u62BC\\u3057\\u306A\\u304C\\u3089\\u30DE\\u30A6\\u30B9 \\u30DB\\u30A4\\u30FC\\u30EB\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30D5\\u30A9\\u30F3\\u30C8\\u3092\\u30BA\\u30FC\\u30E0\\u3057\\u307E\\u3059\\u3002\",\"\\u8907\\u6570\\u306E\\u30AB\\u30FC\\u30BD\\u30EB\\u304C\\u91CD\\u306A\\u3063\\u3066\\u3044\\u308B\\u3068\\u304D\\u306F\\u3001\\u30DE\\u30FC\\u30B8\\u3057\\u307E\\u3059\\u3002\",\"Windows \\u304A\\u3088\\u3073 Linux \\u4E0A\\u306E `Control` \\u30AD\\u30FC\\u3068 macOS \\u4E0A\\u306E `Command` \\u30AD\\u30FC\\u306B\\u5272\\u308A\\u5F53\\u3066\\u307E\\u3059\\u3002\",\"Windows \\u304A\\u3088\\u3073 Linux \\u4E0A\\u306E `Alt` \\u30AD\\u30FC\\u3068 macOS \\u4E0A\\u306E `Option` \\u30AD\\u30FC\\u306B\\u5272\\u308A\\u5F53\\u3066\\u307E\\u3059\\u3002\",\"\\u30DE\\u30A6\\u30B9\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u8907\\u6570\\u306E\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u8FFD\\u52A0\\u3059\\u308B\\u305F\\u3081\\u306B\\u4F7F\\u7528\\u3059\\u308B\\u4FEE\\u98FE\\u5B50\\u3002[\\u5B9A\\u7FA9\\u306B\\u79FB\\u52D5] \\u304A\\u3088\\u3073 [\\u30EA\\u30F3\\u30AF\\u3092\\u958B\\u304F] \\u30DE\\u30A6\\u30B9 \\u30B8\\u30A7\\u30B9\\u30C1\\u30E3\\u306F\\u3001[multicursor \\u4FEE\\u98FE\\u5B50](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier) \\u3068\\u7AF6\\u5408\\u3057\\u306A\\u3044\\u3088\\u3046\\u306B\\u8ABF\\u6574\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u3054\\u3068\\u306B\\u30C6\\u30AD\\u30B9\\u30C8\\u3092 1 \\u884C\\u305A\\u3064\\u8CBC\\u308A\\u4ED8\\u3051\\u307E\\u3059\\u3002\",\"\\u5404\\u30AB\\u30FC\\u30BD\\u30EB\\u306F\\u5168\\u6587\\u3092\\u8CBC\\u308A\\u4ED8\\u3051\\u307E\\u3059\\u3002\",\"\\u8CBC\\u308A\\u4ED8\\u3051\\u305F\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u884C\\u6570\\u304C\\u30AB\\u30FC\\u30BD\\u30EB\\u6570\\u3068\\u4E00\\u81F4\\u3059\\u308B\\u5834\\u5408\\u306E\\u8CBC\\u308A\\u4ED8\\u3051\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u4E00\\u5EA6\\u306B\\u914D\\u7F6E\\u3067\\u304D\\u308B\\u30AB\\u30FC\\u30BD\\u30EB\\u306E\\u6700\\u5927\\u6570\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30BB\\u30DE\\u30F3\\u30C6\\u30A3\\u30C3\\u30AF \\u30B7\\u30F3\\u30DC\\u30EB\\u306E\\u51FA\\u73FE\\u7B87\\u6240\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u306E\\u5468\\u56F2\\u306B\\u5883\\u754C\\u7DDA\\u304C\\u63CF\\u753B\\u3055\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30D4\\u30FC\\u30AF\\u3092\\u958B\\u304F\\u3068\\u304D\\u306B\\u30C4\\u30EA\\u30FC\\u306B\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3059\\u308B\",\"\\u30D4\\u30FC\\u30AF\\u3092\\u958B\\u304F\\u3068\\u304D\\u306B\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3059\\u308B\",\"\\u30D4\\u30FC\\u30AF \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u307E\\u305F\\u306F\\u30C4\\u30EA\\u30FC\\u3092\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"[\\u5B9A\\u7FA9\\u3078\\u79FB\\u52D5] \\u30DE\\u30A6\\u30B9 \\u30B8\\u30A7\\u30B9\\u30C1\\u30E3\\u30FC\\u3067\\u3001\\u5E38\\u306B\\u30D4\\u30FC\\u30AF \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3092\\u958B\\u304F\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30AF\\u30A4\\u30C3\\u30AF\\u5019\\u88DC\\u304C\\u8868\\u793A\\u3055\\u308C\\u308B\\u307E\\u3067\\u306E\\u30DF\\u30EA\\u79D2\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u306E\\u578B\\u306E\\u81EA\\u52D5\\u540D\\u524D\\u5909\\u66F4\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u975E\\u63A8\\u5968\\u3067\\u3059\\u3002\\u4EE3\\u308F\\u308A\\u306B\\u3001`editor.linkedEditing` \\u3092\\u4F7F\\u7528\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u5236\\u5FA1\\u6587\\u5B57\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A1\\u30A4\\u30EB\\u306E\\u672B\\u5C3E\\u304C\\u6539\\u884C\\u306E\\u5834\\u5408\\u306F\\u3001\\u6700\\u5F8C\\u306E\\u884C\\u756A\\u53F7\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u4F59\\u767D\\u3068\\u73FE\\u5728\\u306E\\u884C\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u73FE\\u5728\\u306E\\u884C\\u3092\\u3069\\u306E\\u3088\\u3046\\u306B\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308B\\u5834\\u5408\\u306B\\u306E\\u307F\\u73FE\\u5728\\u306E\\u884C\\u3092\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5358\\u8A9E\\u9593\\u306E\\u5358\\u4E00\\u30B9\\u30DA\\u30FC\\u30B9\\u4EE5\\u5916\\u306E\\u7A7A\\u767D\\u6587\\u5B57\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u9078\\u629E\\u3057\\u305F\\u30C6\\u30AD\\u30B9\\u30C8\\u306B\\u306E\\u307F\\u7A7A\\u767D\\u6587\\u5B57\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u672B\\u5C3E\\u306E\\u7A7A\\u767D\\u6587\\u5B57\\u306E\\u307F\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u7A7A\\u767D\\u6587\\u5B57\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u306E\\u89D2\\u3092\\u4E38\\u304F\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u6C34\\u5E73\\u65B9\\u5411\\u306B\\u4F59\\u5206\\u306B\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3059\\u308B\\u6587\\u5B57\\u6570\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u6700\\u5F8C\\u306E\\u884C\\u3092\\u8D8A\\u3048\\u3066\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5782\\u76F4\\u304A\\u3088\\u3073\\u6C34\\u5E73\\u65B9\\u5411\\u306E\\u4E21\\u65B9\\u306B\\u540C\\u6642\\u306B\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3059\\u308B\\u5834\\u5408\\u306F\\u3001\\u4E3B\\u8981\\u306A\\u8EF8\\u306B\\u6CBF\\u3063\\u3066\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3057\\u307E\\u3059\\u3002\\u30C8\\u30E9\\u30C3\\u30AF\\u30D1\\u30C3\\u30C9\\u4E0A\\u3067\\u5782\\u76F4\\u65B9\\u5411\\u306B\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3059\\u308B\\u5834\\u5408\\u306F\\u3001\\u6C34\\u5E73\\u30C9\\u30EA\\u30D5\\u30C8\\u3092\\u9632\\u6B62\\u3057\\u307E\\u3059\\u3002\",\"Linux \\u306E PRIMARY \\u30AF\\u30EA\\u30C3\\u30D7\\u30DC\\u30FC\\u30C9\\u3092\\u30B5\\u30DD\\u30FC\\u30C8\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u9078\\u629E\\u9805\\u76EE\\u3068\\u985E\\u4F3C\\u306E\\u4E00\\u81F4\\u9805\\u76EE\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5E38\\u306B\\u6298\\u308A\\u305F\\u305F\\u307F\\u30B3\\u30F3\\u30C8\\u30ED\\u30FC\\u30EB\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u6298\\u308A\\u305F\\u305F\\u307F\\u30B3\\u30F3\\u30C8\\u30ED\\u30FC\\u30EB\\u3092\\u8868\\u793A\\u305B\\u305A\\u3001\\u4F59\\u767D\\u306E\\u30B5\\u30A4\\u30BA\\u3092\\u5C0F\\u3055\\u304F\\u3057\\u307E\\u3059\\u3002\",\"\\u30DE\\u30A6\\u30B9\\u304C\\u3068\\u3058\\u3057\\u308D\\u306E\\u4E0A\\u306B\\u3042\\u308B\\u3068\\u304D\\u306B\\u306E\\u307F\\u3001\\u6298\\u308A\\u305F\\u305F\\u307F\\u30B3\\u30F3\\u30C8\\u30ED\\u30FC\\u30EB\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u3068\\u3058\\u3057\\u308D\\u306E\\u6298\\u308A\\u305F\\u305F\\u307F\\u30B3\\u30F3\\u30C8\\u30ED\\u30FC\\u30EB\\u3092\\u8868\\u793A\\u3059\\u308B\\u30BF\\u30A4\\u30DF\\u30F3\\u30B0\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u4F7F\\u7528\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u30B3\\u30FC\\u30C9\\u306E\\u30D5\\u30A7\\u30FC\\u30C9\\u30A2\\u30A6\\u30C8\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u975E\\u63A8\\u5968\\u306E\\u5909\\u6570\\u306E\\u53D6\\u308A\\u6D88\\u3057\\u7DDA\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u4ED6\\u306E\\u5019\\u88DC\\u306E\\u4E0A\\u306B\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8\\u306E\\u5019\\u88DC\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u4ED6\\u306E\\u5019\\u88DC\\u306E\\u4E0B\\u306B\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8\\u306E\\u5019\\u88DC\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u4ED6\\u306E\\u5019\\u88DC\\u3068\\u4E00\\u7DD2\\u306B\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8\\u306E\\u5019\\u88DC\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8\\u306E\\u5019\\u88DC\\u3092\\u8868\\u793A\\u3057\\u307E\\u305B\\u3093\\u3002\",\"\\u4ED6\\u306E\\u4FEE\\u6B63\\u5019\\u88DC\\u3068\\u4E00\\u7DD2\\u306B\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3001\\u304A\\u3088\\u3073\\u305D\\u306E\\u4E26\\u3073\\u66FF\\u3048\\u306E\\u65B9\\u6CD5\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30A2\\u30CB\\u30E1\\u30FC\\u30B7\\u30E7\\u30F3\\u3067\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3092\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\",\"\\u5019\\u88DC\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u30D5\\u30A9\\u30F3\\u30C8 \\u30B5\\u30A4\\u30BA\\u3002{0} \\u306B\\u8A2D\\u5B9A\\u3059\\u308B\\u3068\\u3001\\u5024 {1} \\u304C\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u5019\\u88DC\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u884C\\u306E\\u9AD8\\u3055\\u3002{0} \\u306B\\u8A2D\\u5B9A\\u3059\\u308B\\u3068\\u3001{1} \\u306E\\u5024\\u304C\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\\u6700\\u5C0F\\u5024\\u306F 8 \\u3067\\u3059\\u3002\",\"\\u30C8\\u30EA\\u30AC\\u30FC\\u6587\\u5B57\\u306E\\u5165\\u529B\\u6642\\u306B\\u5019\\u88DC\\u304C\\u81EA\\u52D5\\u7684\\u306B\\u8868\\u793A\\u3055\\u308C\\u308B\\u3088\\u3046\\u306B\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5E38\\u306B\\u6700\\u521D\\u306E\\u5019\\u88DC\\u3092\\u9078\\u629E\\u3057\\u307E\\u3059\\u3002\",\"`console.| -> console.log` \\u306A\\u3069\\u3068\\u9078\\u629E\\u5BFE\\u8C61\\u306B\\u95A2\\u3057\\u3066\\u5165\\u529B\\u3057\\u306A\\u3044\\u9650\\u308A\\u306F\\u3001\\u6700\\u8FD1\\u306E\\u5019\\u88DC\\u3092\\u9078\\u629E\\u3057\\u307E\\u3059\\u3002`log` \\u306F\\u6700\\u8FD1\\u5B8C\\u4E86\\u3057\\u305F\\u305F\\u3081\\u3067\\u3059\\u3002\",\"\\u3053\\u308C\\u3089\\u306E\\u5019\\u88DC\\u3092\\u5B8C\\u4E86\\u3057\\u305F\\u4EE5\\u524D\\u306E\\u30D7\\u30EC\\u30D5\\u30A3\\u30C3\\u30AF\\u30B9\\u306B\\u57FA\\u3065\\u3044\\u3066\\u5019\\u88DC\\u3092\\u9078\\u629E\\u3057\\u307E\\u3059\\u3002\\u4F8B: `co -> console` \\u304A\\u3088\\u3073 `con -> const`\\u3002\",\"\\u5019\\u88DC\\u30EA\\u30B9\\u30C8\\u3092\\u8868\\u793A\\u3059\\u308B\\u3068\\u304D\\u306B\\u5019\\u88DC\\u3092\\u4E8B\\u524D\\u306B\\u9078\\u629E\\u3059\\u308B\\u65B9\\u6CD5\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30BF\\u30D6\\u88DC\\u5B8C\\u306F\\u3001tab \\u30AD\\u30FC\\u3092\\u62BC\\u3057\\u305F\\u3068\\u304D\\u306B\\u6700\\u9069\\u306A\\u5019\\u88DC\\u3092\\u633F\\u5165\\u3057\\u307E\\u3059\\u3002\",\"\\u30BF\\u30D6\\u88DC\\u5B8C\\u3092\\u7121\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u30D7\\u30EC\\u30D5\\u30A3\\u30C3\\u30AF\\u30B9\\u304C\\u4E00\\u81F4\\u3059\\u308B\\u5834\\u5408\\u306B\\u3001\\u30BF\\u30D6\\u3067\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8\\u3092\\u88DC\\u5B8C\\u3057\\u307E\\u3059\\u3002'quickSuggestions' \\u304C\\u7121\\u52B9\\u306A\\u5834\\u5408\\u306B\\u6700\\u9069\\u3067\\u3059\\u3002\",\"\\u30BF\\u30D6\\u88DC\\u5B8C\\u3092\\u6709\\u52B9\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u901A\\u5E38\\u3068\\u306F\\u7570\\u306A\\u308B\\u884C\\u306E\\u7D42\\u7AEF\\u6587\\u5B57\\u306F\\u81EA\\u52D5\\u7684\\u306B\\u524A\\u9664\\u3055\\u308C\\u308B\\u3002\",\"\\u901A\\u5E38\\u3068\\u306F\\u7570\\u306A\\u308B\\u884C\\u306E\\u7D42\\u7AEF\\u6587\\u5B57\\u306F\\u7121\\u8996\\u3055\\u308C\\u308B\\u3002\",\"\\u901A\\u5E38\\u3068\\u306F\\u7570\\u306A\\u308B\\u884C\\u306E\\u7D42\\u7AEF\\u6587\\u5B57\\u306E\\u524A\\u9664\\u30D7\\u30ED\\u30F3\\u30D7\\u30C8\\u304C\\u8868\\u793A\\u3055\\u308C\\u308B\\u3002\",\"\\u554F\\u984C\\u3092\\u8D77\\u3053\\u3059\\u53EF\\u80FD\\u6027\\u304C\\u3042\\u308B\\u3001\\u666E\\u901A\\u3067\\u306F\\u306A\\u3044\\u884C\\u7D42\\u7AEF\\u8A18\\u53F7\\u306F\\u524A\\u9664\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u7A7A\\u767D\\u306E\\u633F\\u5165\\u3084\\u524A\\u9664\\u306F\\u30BF\\u30D6\\u4F4D\\u7F6E\\u306B\\u5F93\\u3063\\u3066\\u884C\\u308F\\u308C\\u307E\\u3059\\u3002\",\"\\u65E2\\u5B9A\\u306E\\u6539\\u884C\\u30EB\\u30FC\\u30EB\\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u4E2D\\u56FD\\u8A9E/\\u65E5\\u672C\\u8A9E/\\u97D3\\u56FD\\u8A9E (CJK) \\u306E\\u30C6\\u30AD\\u30B9\\u30C8\\u306B\\u306F\\u5358\\u8A9E\\u533A\\u5207\\u308A\\u3092\\u4F7F\\u7528\\u3057\\u306A\\u3044\\u3067\\u304F\\u3060\\u3055\\u3044\\u3002CJK \\u4EE5\\u5916\\u306E\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u52D5\\u4F5C\\u306F\\u3001\\u901A\\u5E38\\u306E\\u5834\\u5408\\u3068\\u540C\\u3058\\u3067\\u3059\\u3002\",\"\\u4E2D\\u56FD\\u8A9E/\\u65E5\\u672C\\u8A9E/\\u97D3\\u56FD\\u8A9E (CJK) \\u30C6\\u30AD\\u30B9\\u30C8\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u5358\\u8A9E\\u533A\\u5207\\u308A\\u898F\\u5247\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u5358\\u8A9E\\u306B\\u95A2\\u9023\\u3057\\u305F\\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3\\u307E\\u305F\\u306F\\u64CD\\u4F5C\\u3092\\u5B9F\\u884C\\u3059\\u308B\\u3068\\u304D\\u306B\\u3001\\u5358\\u8A9E\\u306E\\u533A\\u5207\\u308A\\u6587\\u5B57\\u3068\\u3057\\u3066\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u6587\\u5B57\\u3002\",\"\\u884C\\u3092\\u6298\\u308A\\u8FD4\\u3057\\u307E\\u305B\\u3093\\u3002\",\"\\u884C\\u3092\\u30D3\\u30E5\\u30FC\\u30DD\\u30FC\\u30C8\\u306E\\u5E45\\u3067\\u6298\\u308A\\u8FD4\\u3057\\u307E\\u3059\\u3002\",\"`#editor.wordWrapColumn#` \\u3067\\u884C\\u3092\\u6298\\u308A\\u8FD4\\u3057\\u307E\\u3059\\u3002\",\"\\u30D3\\u30E5\\u30FC\\u30DD\\u30FC\\u30C8\\u3068 `#editor.wordWrapColumn#` \\u306E\\u6700\\u5C0F\\u5024\\u3067\\u884C\\u3092\\u6298\\u308A\\u8FD4\\u3057\\u307E\\u3059\\u3002\",\"\\u884C\\u306E\\u6298\\u308A\\u8FD4\\u3057\\u65B9\\u6CD5\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"`#editor.wordWrap#` \\u304C `wordWrapColumn` \\u307E\\u305F\\u306F `bounded` \\u306E\\u5834\\u5408\\u306B\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u6298\\u308A\\u8FD4\\u3057\\u6841\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u65E2\\u5B9A\\u306E\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8 \\u30AB\\u30E9\\u30FC \\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u306E\\u8272\\u306E\\u88C5\\u98FE\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u30BF\\u30D6\\u3092\\u53D7\\u3051\\u53D6\\u308B\\u304B\\u3001\\u30EF\\u30FC\\u30AF\\u30D9\\u30F3\\u30C1\\u306B\\u59D4\\u306D\\u3066\\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3\\u3059\\u308B\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\"],\"vs/editor/common/core/editorColorRegistry\":[\"\\u30AB\\u30FC\\u30BD\\u30EB\\u4F4D\\u7F6E\\u306E\\u884C\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u80CC\\u666F\\u8272\\u3002\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u4F4D\\u7F6E\\u306E\\u884C\\u306E\\u5883\\u754C\\u7DDA\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u80CC\\u666F\\u8272\\u3002\",\"(Quick Open \\u3084\\u691C\\u51FA\\u6A5F\\u80FD\\u306A\\u3069\\u306B\\u3088\\u308A) \\u5F37\\u8ABF\\u8868\\u793A\\u3055\\u308C\\u3066\\u3044\\u308B\\u7BC4\\u56F2\\u306E\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u5F37\\u8ABF\\u8868\\u793A\\u3055\\u308C\\u305F\\u7BC4\\u56F2\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u5F37\\u8ABF\\u8868\\u793A\\u3055\\u308C\\u305F\\u8A18\\u53F7\\u306E\\u80CC\\u666F\\u8272 (\\u5B9A\\u7FA9\\u3078\\u79FB\\u52D5\\u3001\\u6B21\\u307E\\u305F\\u306F\\u524D\\u306E\\u8A18\\u53F7\\u3078\\u79FB\\u52D5\\u306A\\u3069)\\u3002\\u57FA\\u306B\\u306A\\u308B\\u88C5\\u98FE\\u304C\\u8986\\u308F\\u308C\\u306A\\u3044\\u3088\\u3046\\u306B\\u3059\\u308B\\u305F\\u3081\\u3001\\u8272\\u3092\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u5F37\\u8ABF\\u8868\\u793A\\u3055\\u308C\\u305F\\u8A18\\u53F7\\u306E\\u5468\\u308A\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30AB\\u30FC\\u30BD\\u30EB\\u306E\\u8272\\u3002\",\"\\u9078\\u629E\\u3055\\u308C\\u305F\\u6587\\u5B57\\u5217\\u306E\\u80CC\\u666F\\u8272\\u3067\\u3059\\u3002\\u9078\\u629E\\u3055\\u308C\\u305F\\u6587\\u5B57\\u5217\\u306E\\u80CC\\u666F\\u8272\\u3092\\u30AB\\u30B9\\u30BF\\u30DE\\u30A4\\u30BA\\u51FA\\u6765\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30B9\\u30DA\\u30FC\\u30B9\\u6587\\u5B57\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u884C\\u756A\\u53F7\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272\\u3002\",\"'editorIndentGuide.background' \\u306F\\u975E\\u63A8\\u5968\\u3067\\u3059\\u3002\\u4EE3\\u308F\\u308A\\u306B 'editorIndentGuide.background1' \\u3092\\u4F7F\\u7528\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272\\u3002\",\"'editorIndentGuide.activeBackground' \\u306F\\u975E\\u63A8\\u5968\\u3067\\u3059\\u3002\\u4EE3\\u308F\\u308A\\u306B 'editorIndentGuide.activeBackground1' \\u3092\\u4F7F\\u7528\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272 (1)\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272 (2)\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272 (3)\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272 (4)\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272 (5)\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272 (6)\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272 (1)\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272 (2)\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272 (3)\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272 (4)\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272 (5)\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u8272 (6)\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u884C\\u756A\\u53F7\\u306E\\u8272\",\"id \\u306F\\u4F7F\\u7528\\u3057\\u306A\\u3044\\u3067\\u304F\\u3060\\u3055\\u3044\\u3002\\u4EE3\\u308F\\u308A\\u306B 'EditorLineNumber.activeForeground' \\u3092\\u4F7F\\u7528\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u884C\\u756A\\u53F7\\u306E\\u8272\",\"editor.renderFinalNewline \\u304C dimmed \\u306B\\u8A2D\\u5B9A\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u306E\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u6700\\u7D42\\u884C\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30EB\\u30FC\\u30E9\\u30FC\\u306E\\u8272\\u3002\",\"CodeLens \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u4E00\\u81F4\\u3059\\u308B\\u304B\\u3063\\u3053\\u306E\\u80CC\\u666F\\u8272\",\"\\u4E00\\u81F4\\u3059\\u308B\\u304B\\u3063\\u3053\\u5185\\u306E\\u30DC\\u30C3\\u30AF\\u30B9\\u306E\\u8272\",\"\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u306E\\u5883\\u754C\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u4F59\\u767D\\u306E\\u80CC\\u666F\\u8272\\u3002\\u4F59\\u767D\\u306B\\u306F\\u30B0\\u30EA\\u30D5 \\u30DE\\u30FC\\u30B8\\u30F3\\u3068\\u884C\\u756A\\u53F7\\u304C\\u542B\\u307E\\u308C\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u306E\\u4E0D\\u8981\\u306A (\\u672A\\u4F7F\\u7528\\u306E) \\u30BD\\u30FC\\u30B9 \\u30B3\\u30FC\\u30C9\\u306E\\u7F6B\\u7DDA\\u306E\\u8272\\u3002\",`\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u4E0D\\u8981\\u306A (\\u672A\\u4F7F\\u7528\\u306E) \\u30BD\\u30FC\\u30B9 \\u30B3\\u30FC\\u30C9\\u306E\\u4E0D\\u900F\\u660E\\u5EA6\\u3002\\u305F\\u3068\\u3048\\u3070\\u3001\"#000000c0\" \\u306F\\u4E0D\\u900F\\u660E\\u5EA6 75% \\u3067\\u30B3\\u30FC\\u30C9\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\\u30CF\\u30A4 \\u30B3\\u30F3\\u30C8\\u30E9\\u30B9\\u30C8\\u306E\\u30C6\\u30FC\\u30DE\\u306E\\u5834\\u5408\\u3001'editorUnnecessaryCode.border' \\u30C6\\u30FC\\u30DE\\u8272\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u3001\\u4E0D\\u8981\\u306A\\u30B3\\u30FC\\u30C9\\u3092\\u30D5\\u30A7\\u30FC\\u30C9\\u30A2\\u30A6\\u30C8\\u3059\\u308B\\u306E\\u3067\\u306F\\u306A\\u304F\\u4E0B\\u7DDA\\u3092\\u4ED8\\u3051\\u307E\\u3059\\u3002`,\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u900F\\u304B\\u3057\\u6587\\u5B57\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3067\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u900F\\u304B\\u3057\\u6587\\u5B57\\u306E\\u524D\\u666F\\u8272\\u3067\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30B4\\u30FC\\u30B9\\u30C8 \\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u7BC4\\u56F2\\u5F37\\u8ABF\\u8868\\u793A\\u306E\\u305F\\u3081\\u306E\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC \\u30DE\\u30FC\\u30AB\\u30FC\\u306E\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u30A8\\u30E9\\u30FC\\u3092\\u793A\\u3059\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC\\u8272\\u3002\",\"\\u8B66\\u544A\\u3092\\u793A\\u3059\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC\\u8272\\u3002\",\"\\u60C5\\u5831\\u3092\\u793A\\u3059\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC\\u8272\\u3002\",\"\\u89D2\\u304B\\u3063\\u3053 (1) \\u306E\\u524D\\u666F\\u8272\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2\\u306E\\u8272\\u4ED8\\u3051\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u89D2\\u304B\\u3063\\u3053 (2) \\u306E\\u524D\\u666F\\u8272\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2\\u306E\\u8272\\u4ED8\\u3051\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u89D2\\u304B\\u3063\\u3053 (3) \\u306E\\u524D\\u666F\\u8272\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2\\u306E\\u8272\\u4ED8\\u3051\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u89D2\\u304B\\u3063\\u3053 (4) \\u306E\\u524D\\u666F\\u8272\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2\\u306E\\u8272\\u4ED8\\u3051\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u89D2\\u304B\\u3063\\u3053 (5) \\u306E\\u524D\\u666F\\u8272\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2\\u306E\\u8272\\u4ED8\\u3051\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u89D2\\u304B\\u3063\\u3053 (6) \\u306E\\u524D\\u666F\\u8272\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2\\u306E\\u8272\\u4ED8\\u3051\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u4E88\\u671F\\u3057\\u306A\\u3044\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u306E\\u80CC\\u666F\\u8272 (1)\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u306E\\u80CC\\u666F\\u8272 (2)\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u306E\\u80CC\\u666F\\u8272 (3)\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u306E\\u80CC\\u666F\\u8272 (4)\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u306E\\u80CC\\u666F\\u8272 (5)\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u306E\\u80CC\\u666F\\u8272 (6)\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u306E\\u80CC\\u666F\\u8272 (1)\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u306E\\u80CC\\u666F\\u8272 (2)\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u306E\\u80CC\\u666F\\u8272 (3)\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u306E\\u80CC\\u666F\\u8272 (4)\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u306E\\u80CC\\u666F\\u8272 (5)\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u306E\\u80CC\\u666F\\u8272 (6)\\u3002\\u89D2\\u304B\\u3063\\u3053\\u306E\\u30DA\\u30A2 \\u30AC\\u30A4\\u30C9\\u3092\\u6709\\u52B9\\u306B\\u3059\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"Unicode \\u6587\\u5B57\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u305F\\u3081\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"Unicode \\u6587\\u5B57\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u305F\\u3081\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u80CC\\u666F\\u8272\\u3002\"],\"vs/editor/common/editorContextKeys\":[\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30C6\\u30AD\\u30B9\\u30C8\\u306B\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308B (\\u30AB\\u30FC\\u30BD\\u30EB\\u304C\\u70B9\\u6EC5\\u3057\\u3066\\u3044\\u308B) \\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u307E\\u305F\\u306F\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308B (\\u4F8B: \\u691C\\u7D22\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308B) \\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u307E\\u305F\\u306F\\u30EA\\u30C3\\u30C1 \\u30C6\\u30AD\\u30B9\\u30C8\\u5165\\u529B\\u306B\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308B (\\u30AB\\u30FC\\u30BD\\u30EB\\u304C\\u70B9\\u6EC5\\u3057\\u3066\\u3044\\u308B) \\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u8AAD\\u307F\\u53D6\\u308A\\u5C02\\u7528\\u304B\\u3069\\u3046\\u304B\",\"\\u30B3\\u30F3\\u30C6\\u30AD\\u30B9\\u30C8\\u304C\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30B3\\u30F3\\u30C6\\u30AD\\u30B9\\u30C8\\u304C\\u57CB\\u3081\\u8FBC\\u307F\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"Whether a moved code block is selected for comparison\",\"\\u30A2\\u30AF\\u30BB\\u30B7\\u30D3\\u30EA\\u30C6\\u30A3\\u306E\\u9AD8\\u3044\\u5DEE\\u5206\\u30D3\\u30E5\\u30FC\\u30A2\\u30FC\\u304C\\u8868\\u793A\\u3055\\u308C\\u3066\\u3044\\u308B\\u304B\\u3069\\u3046\\u304B\",\"Whether the diff editor render side by side inline breakpoint is reached\",\"`editor.columnSelection` \\u304C\\u6709\\u52B9\\u306B\\u306A\\u3063\\u3066\\u3044\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30C6\\u30AD\\u30B9\\u30C8\\u304C\\u9078\\u629E\\u3055\\u308C\\u3066\\u3044\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u8907\\u6570\\u306E\\u9078\\u629E\\u7BC4\\u56F2\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"`Tab` \\u306B\\u3088\\u3063\\u3066\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u5916\\u306B\\u79FB\\u52D5\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30DB\\u30D0\\u30FC\\u304C\\u8868\\u793A\\u3055\\u308C\\u3066\\u3044\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30DB\\u30D0\\u30FC\\u304C\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u3066\\u3044\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u304C\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u3066\\u3044\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u304C\\u8868\\u793A\\u3055\\u308C\\u3066\\u3044\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30B9\\u30BF\\u30F3\\u30C9\\u30A2\\u30ED\\u30F3 \\u30AB\\u30E9\\u30FC \\u30D4\\u30C3\\u30AB\\u30FC\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30B9\\u30BF\\u30F3\\u30C9\\u30A2\\u30ED\\u30F3 \\u30AB\\u30E9\\u30FC \\u30D4\\u30C3\\u30AB\\u30FC\\u304C\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u3066\\u3044\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u3088\\u308A\\u5927\\u304D\\u306A\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC (\\u4F8B: Notebooks) \\u306E\\u4E00\\u90E8\\u3067\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u8A00\\u8A9E\\u8B58\\u5225\\u5B50\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u5165\\u529B\\u5019\\u88DC\\u9805\\u76EE\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3 \\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30B3\\u30FC\\u30C9 \\u30EC\\u30F3\\u30BA \\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u5B9A\\u7FA9\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u5BA3\\u8A00\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u5B9F\\u88C5\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u578B\\u5B9A\\u7FA9\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30DB\\u30D0\\u30FC \\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u5F37\\u8ABF\\u8868\\u793A\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8 \\u30B7\\u30F3\\u30DC\\u30EB \\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u53C2\\u7167\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u540D\\u524D\\u5909\\u66F4\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30B7\\u30B0\\u30CD\\u30C1\\u30E3 \\u30D8\\u30EB\\u30D7 \\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30D2\\u30F3\\u30C8 \\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u66F8\\u5F0F\\u8A2D\\u5B9A\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u9078\\u629E\\u66F8\\u5F0F\\u8A2D\\u5B9A\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u8907\\u6570\\u306E\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u66F8\\u5F0F\\u8A2D\\u5B9A\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u8907\\u6570\\u306E\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u9078\\u629E\\u66F8\\u5F0F\\u8A2D\\u5B9A\\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\"],\"vs/editor/common/languages\":[\"\\u914D\\u5217\",\"\\u30D6\\u30FC\\u30EB\\u5024\",\"\\u30AF\\u30E9\\u30B9\",\"\\u5B9A\\u6570\",\"\\u30B3\\u30F3\\u30B9\\u30C8\\u30E9\\u30AF\\u30BF\\u30FC\",\"\\u5217\\u6319\\u578B\",\"\\u5217\\u6319\\u578B\\u30E1\\u30F3\\u30D0\\u30FC\",\"\\u30A4\\u30D9\\u30F3\\u30C8\",\"\\u30D5\\u30A3\\u30FC\\u30EB\\u30C9\",\"\\u30D5\\u30A1\\u30A4\\u30EB\",\"\\u95A2\\u6570\",\"\\u30A4\\u30F3\\u30BF\\u30FC\\u30D5\\u30A7\\u30A4\\u30B9\",\"\\u30AD\\u30FC\",\"\\u30E1\\u30BD\\u30C3\\u30C9\",\"\\u30E2\\u30B8\\u30E5\\u30FC\\u30EB\",\"\\u540D\\u524D\\u7A7A\\u9593\",\"NULL\",\"\\u6570\\u5024\",\"\\u30AA\\u30D6\\u30B8\\u30A7\\u30AF\\u30C8\",\"\\u6F14\\u7B97\\u5B50\",\"\\u30D1\\u30C3\\u30B1\\u30FC\\u30B8\",\"\\u30D7\\u30ED\\u30D1\\u30C6\\u30A3\",\"\\u6587\\u5B57\\u5217\",\"\\u69CB\\u9020\\u4F53\",\"\\u578B\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC\",\"\\u5909\\u6570\",\"{0} ({1})\"],\"vs/editor/common/languages/modesRegistry\":[\"\\u30D7\\u30EC\\u30FC\\u30F3\\u30C6\\u30AD\\u30B9\\u30C8\"],\"vs/editor/common/model/editStack\":[\"\\u5165\\u529B\\u3057\\u3066\\u3044\\u307E\\u3059\"],\"vs/editor/common/standaloneStrings\":[\"\\u958B\\u767A\\u8005: \\u30C8\\u30FC\\u30AF\\u30F3\\u306E\\u691C\\u67FB\",\"\\u884C/\\u5217\\u306B\\u79FB\\u52D5\\u3059\\u308B...\",\"\\u3059\\u3079\\u3066\\u306E\\u30AF\\u30A4\\u30C3\\u30AF \\u30A2\\u30AF\\u30BB\\u30B9 \\u30D7\\u30ED\\u30D0\\u30A4\\u30C0\\u30FC\\u3092\\u8868\\u793A\",\"\\u30B3\\u30DE\\u30F3\\u30C9 \\u30D1\\u30EC\\u30C3\\u30C8\",\"\\u30B3\\u30DE\\u30F3\\u30C9\\u306E\\u8868\\u793A\\u3068\\u5B9F\\u884C\",\"\\u30B7\\u30F3\\u30DC\\u30EB\\u306B\\u79FB\\u52D5...\",\"\\u30AB\\u30C6\\u30B4\\u30EA\\u5225\\u306E\\u30B7\\u30F3\\u30DC\\u30EB\\u3078\\u79FB\\u52D5...\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D3\\u30C6\\u30A3 \\u30AA\\u30D7\\u30B7\\u30E7\\u30F3\\u3092\\u8868\\u793A\\u3059\\u308B\\u306B\\u306F\\u3001Alt+F1 \\u30AD\\u30FC\\u3092\\u62BC\\u3057\\u307E\\u3059\\u3002\",\"\\u30CF\\u30A4 \\u30B3\\u30F3\\u30C8\\u30E9\\u30B9\\u30C8 \\u30C6\\u30FC\\u30DE\\u306E\\u5207\\u308A\\u66FF\\u3048\",\"{1} \\u500B\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u306B {0} \\u500B\\u306E\\u7DE8\\u96C6\\u304C\\u884C\\u308F\\u308C\\u307E\\u3057\\u305F\"],\"vs/editor/common/viewLayout/viewLineRenderer\":[\"\\u8868\\u793A\\u6570\\u3092\\u5897\\u3084\\u3059 ({0})\",\"{0} \\u6587\\u5B57\"],\"vs/editor/contrib/anchorSelect/browser/anchorSelect\":[\"\\u9078\\u629E\\u30A2\\u30F3\\u30AB\\u30FC\",\"\\u30A2\\u30F3\\u30AB\\u30FC\\u304C {0}:{1} \\u306B\\u8A2D\\u5B9A\\u3055\\u308C\\u307E\\u3057\\u305F\",\"\\u9078\\u629E\\u30A2\\u30F3\\u30AB\\u30FC\\u306E\\u8A2D\\u5B9A\",\"\\u9078\\u629E\\u30A2\\u30F3\\u30AB\\u30FC\\u3078\\u79FB\\u52D5\",\"\\u30A2\\u30F3\\u30AB\\u30FC\\u304B\\u3089\\u30AB\\u30FC\\u30BD\\u30EB\\u3078\\u9078\\u629E\",\"\\u9078\\u629E\\u30A2\\u30F3\\u30AB\\u30FC\\u306E\\u53D6\\u308A\\u6D88\\u3057\"],\"vs/editor/contrib/bracketMatching/browser/bracketMatching\":[\"\\u4E00\\u81F4\\u3059\\u308B\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8\\u3092\\u793A\\u3059\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC\\u8272\\u3002\",\"\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8\\u3078\\u79FB\\u52D5\",\"\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8\\u306B\\u9078\\u629E\",\"\\u304B\\u3063\\u3053\\u3092\\u5916\\u3059\",\"\\u30D6\\u30E9\\u30B1\\u30C3\\u30C8\\u306B\\u79FB\\u52D5(&&B)\"],\"vs/editor/contrib/caretOperations/browser/caretOperations\":[\"\\u9078\\u629E\\u3057\\u305F\\u30C6\\u30AD\\u30B9\\u30C8\\u3092\\u5DE6\\u306B\\u79FB\\u52D5\",\"\\u9078\\u629E\\u3057\\u305F\\u30C6\\u30AD\\u30B9\\u30C8\\u3092\\u53F3\\u306B\\u79FB\\u52D5\"],\"vs/editor/contrib/caretOperations/browser/transpose\":[\"\\u6587\\u5B57\\u306E\\u5165\\u308C\\u66FF\\u3048\"],\"vs/editor/contrib/clipboard/browser/clipboard\":[\"\\u5207\\u308A\\u53D6\\u308A(&&T)\",\"\\u5207\\u308A\\u53D6\\u308A\",\"\\u5207\\u308A\\u53D6\\u308A\",\"\\u5207\\u308A\\u53D6\\u308A\",\"\\u30B3\\u30D4\\u30FC(&&C)\",\"\\u30B3\\u30D4\\u30FC\",\"\\u30B3\\u30D4\\u30FC\",\"\\u30B3\\u30D4\\u30FC\",\"\\u5F62\\u5F0F\\u3092\\u6307\\u5B9A\\u3057\\u3066\\u30B3\\u30D4\\u30FC\",\"\\u5F62\\u5F0F\\u3092\\u6307\\u5B9A\\u3057\\u3066\\u30B3\\u30D4\\u30FC\",\"\\u5171\\u6709\",\"\\u5171\\u6709\",\"\\u5171\\u6709\",\"\\u8CBC\\u308A\\u4ED8\\u3051(&&P)\",\"\\u8CBC\\u308A\\u4ED8\\u3051\",\"\\u8CBC\\u308A\\u4ED8\\u3051\",\"\\u8CBC\\u308A\\u4ED8\\u3051\",\"\\u69CB\\u6587\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3057\\u3066\\u30B3\\u30D4\\u30FC\"],\"vs/editor/contrib/codeAction/browser/codeAction\":[\"\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306E\\u9069\\u7528\\u4E2D\\u306B\\u4E0D\\u660E\\u306A\\u30A8\\u30E9\\u30FC\\u304C\\u767A\\u751F\\u3057\\u307E\\u3057\\u305F\"],\"vs/editor/contrib/codeAction/browser/codeActionCommands\":[\"\\u5B9F\\u884C\\u3059\\u308B\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306E\\u7A2E\\u985E\\u3002\",\"\\u8FD4\\u3055\\u308C\\u305F\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u304C\\u9069\\u7528\\u3055\\u308C\\u308B\\u30BF\\u30A4\\u30DF\\u30F3\\u30B0\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u6700\\u521D\\u306B\\u8FD4\\u3055\\u308C\\u305F\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u3092\\u5E38\\u306B\\u9069\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u6700\\u521D\\u306B\\u8FD4\\u3055\\u308C\\u305F\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u4EE5\\u5916\\u306B\\u8FD4\\u3055\\u308C\\u305F\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u304C\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u305D\\u306E\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u3092\\u9069\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u8FD4\\u3055\\u308C\\u305F\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306F\\u9069\\u7528\\u3057\\u306A\\u3044\\u3067\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u512A\\u5148\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306E\\u307F\\u3092\\u8FD4\\u3059\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30AF\\u30A4\\u30C3\\u30AF \\u30D5\\u30A3\\u30C3\\u30AF\\u30B9...\",\"\\u5229\\u7528\\u53EF\\u80FD\\u306A\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\",\"'{0}' \\u306B\\u5BFE\\u3057\\u3066\\u4F7F\\u7528\\u3067\\u304D\\u308B\\u512A\\u5148\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\",\"{0}' \\u306B\\u5BFE\\u3057\\u3066\\u4F7F\\u7528\\u3067\\u304D\\u308B\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u4F7F\\u7528\\u3067\\u304D\\u308B\\u512A\\u5148\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u5229\\u7528\\u53EF\\u80FD\\u306A\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u30EA\\u30D5\\u30A1\\u30AF\\u30BF\\u30FC...\",\"'{0}' \\u306B\\u5BFE\\u3057\\u3066\\u4F7F\\u7528\\u3067\\u304D\\u308B\\u512A\\u5148\\u30EA\\u30D5\\u30A1\\u30AF\\u30BF\\u30EA\\u30F3\\u30B0\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\",\"'{0}' \\u306B\\u5BFE\\u3057\\u3066\\u4F7F\\u7528\\u3067\\u304D\\u308B\\u30EA\\u30D5\\u30A1\\u30AF\\u30BF\\u30EA\\u30F3\\u30B0\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u4F7F\\u7528\\u3067\\u304D\\u308B\\u512A\\u5148\\u30EA\\u30D5\\u30A1\\u30AF\\u30BF\\u30EA\\u30F3\\u30B0\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u5229\\u7528\\u53EF\\u80FD\\u306A\\u30EA\\u30D5\\u30A1\\u30AF\\u30BF\\u30EA\\u30F3\\u30B0\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u30BD\\u30FC\\u30B9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3...\",\"'{0}' \\u306B\\u5BFE\\u3057\\u3066\\u4F7F\\u7528\\u3067\\u304D\\u308B\\u512A\\u5148\\u30BD\\u30FC\\u30B9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\",\"'{0}' \\u306B\\u5BFE\\u3057\\u3066\\u4F7F\\u7528\\u3067\\u304D\\u308B\\u30BD\\u30FC\\u30B9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u4F7F\\u7528\\u3067\\u304D\\u308B\\u512A\\u5148\\u30BD\\u30FC\\u30B9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u5229\\u7528\\u53EF\\u80FD\\u306A\\u30BD\\u30FC\\u30B9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u30A4\\u30F3\\u30DD\\u30FC\\u30C8\\u3092\\u6574\\u7406\",\"\\u5229\\u7528\\u53EF\\u80FD\\u306A\\u30A4\\u30F3\\u30DD\\u30FC\\u30C8\\u306E\\u6574\\u7406\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u3059\\u3079\\u3066\\u4FEE\\u6B63\",\"\\u3059\\u3079\\u3066\\u3092\\u4FEE\\u6B63\\u3059\\u308B\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306F\\u5229\\u7528\\u3067\\u304D\\u307E\\u305B\\u3093\",\"\\u81EA\\u52D5\\u4FEE\\u6B63...\",\"\\u5229\\u7528\\u53EF\\u80FD\\u306A\\u81EA\\u52D5\\u4FEE\\u6B63\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\"],\"vs/editor/contrib/codeAction/browser/codeActionContributions\":[\"\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3 \\u30E1\\u30CB\\u30E5\\u30FC\\u3067\\u306E\\u30B0\\u30EB\\u30FC\\u30D7 \\u30D8\\u30C3\\u30C0\\u30FC\\u306E\\u8868\\u793A\\u306E\\u6709\\u52B9/\\u7121\\u52B9\\u3092\\u5207\\u308A\\u66FF\\u3048\\u307E\\u3059\\u3002\"],\"vs/editor/contrib/codeAction/browser/codeActionController\":[\"\\u7121\\u52B9\\u306A\\u3082\\u306E\\u3092\\u975E\\u8868\\u793A\",\"\\u7121\\u52B9\\u3092\\u8868\\u793A\"],\"vs/editor/contrib/codeAction/browser/codeActionMenu\":[\"\\u305D\\u306E\\u4ED6\\u306E\\u64CD\\u4F5C...\",\"\\u30AF\\u30A4\\u30C3\\u30AF \\u30D5\\u30A3\\u30C3\\u30AF\\u30B9...\",\"\\u62BD\\u51FA\\u3057\\u307E\\u3059...\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3...\",\"\\u518D\\u66F8\\u304D\\u8FBC\\u307F\\u3057\\u307E\\u3059...\",\"\\u79FB\\u52D5...\",\"\\u30D6\\u30ED\\u30C3\\u30AF\\u306E\\u633F\\u5165...\",\"\\u30BD\\u30FC\\u30B9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3...\"],\"vs/editor/contrib/codeAction/browser/lightBulbWidget\":[\"\\u30B3\\u30FC\\u30C9\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\\u4F7F\\u7528\\u53EF\\u80FD\\u306A\\u512A\\u5148\\u306E\\u30AF\\u30A4\\u30C3\\u30AF\\u4FEE\\u6B63 ({0})\",\"\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306E\\u8868\\u793A ({0})\",\"\\u30B3\\u30FC\\u30C9 \\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306E\\u8868\\u793A\"],\"vs/editor/contrib/codelens/browser/codelensController\":[\"\\u73FE\\u5728\\u306E\\u884C\\u306E\\u30B3\\u30FC\\u30C9 \\u30EC\\u30F3\\u30BA \\u30B3\\u30DE\\u30F3\\u30C9\\u3092\\u8868\\u793A\"],\"vs/editor/contrib/colorPicker/browser/colorPickerWidget\":[\"\\u30AF\\u30EA\\u30C3\\u30AF\\u3057\\u3066\\u8272\\u30AA\\u30D7\\u30B7\\u30E7\\u30F3\\u3092\\u5207\\u308A\\u66FF\\u3048\\u307E\\u3059 (rgb/hsl/hex)\",\"\\u30AB\\u30E9\\u30FC \\u30D4\\u30C3\\u30AB\\u30FC\\u3092\\u9589\\u3058\\u308B\\u30A2\\u30A4\\u30B3\\u30F3\"],\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\":[\"\\u30B9\\u30BF\\u30F3\\u30C9\\u30A2\\u30ED\\u30F3 \\u30AB\\u30E9\\u30FC \\u30D4\\u30C3\\u30AB\\u30FC\\u306E\\u8868\\u793A\\u307E\\u305F\\u306F\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\",\"\\u30B9\\u30BF\\u30F3\\u30C9\\u30A2\\u30ED\\u30F3 \\u30AB\\u30E9\\u30FC \\u30D4\\u30C3\\u30AB\\u30FC\\u306E\\u8868\\u793A\\u307E\\u305F\\u306F\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9(&S)\",\"\\u30AB\\u30E9\\u30FC \\u30D4\\u30C3\\u30AB\\u30FC\\u3092\\u975E\\u8868\\u793A\\u306B\\u3059\\u308B\",\"\\u30B9\\u30BF\\u30F3\\u30C9\\u30A2\\u30ED\\u30F3 \\u30AB\\u30E9\\u30FC \\u30D4\\u30C3\\u30AB\\u30FC\\u3067\\u8272\\u3092\\u633F\\u5165\"],\"vs/editor/contrib/comment/browser/comment\":[\"\\u884C\\u30B3\\u30E1\\u30F3\\u30C8\\u306E\\u5207\\u308A\\u66FF\\u3048\",\"\\u884C\\u30B3\\u30E1\\u30F3\\u30C8\\u306E\\u5207\\u308A\\u66FF\\u3048(&&T)\",\"\\u884C\\u30B3\\u30E1\\u30F3\\u30C8\\u306E\\u8FFD\\u52A0\",\"\\u884C\\u30B3\\u30E1\\u30F3\\u30C8\\u306E\\u524A\\u9664\",\"\\u30D6\\u30ED\\u30C3\\u30AF \\u30B3\\u30E1\\u30F3\\u30C8\\u306E\\u5207\\u308A\\u66FF\\u3048\",\"\\u30D6\\u30ED\\u30C3\\u30AF \\u30B3\\u30E1\\u30F3\\u30C8\\u306E\\u5207\\u308A\\u66FF\\u3048(&&B)\"],\"vs/editor/contrib/contextmenu/browser/contextmenu\":[\"\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7\",\"\\u30EC\\u30F3\\u30C0\\u30EA\\u30F3\\u30B0\\u6587\\u5B57\",\"\\u5782\\u76F4\\u65B9\\u5411\\u306E\\u30B5\\u30A4\\u30BA\",\"\\u5747\\u7B49\",\"\\u5857\\u308A\\u3064\\u3076\\u3057\",\"\\u30B5\\u30A4\\u30BA\\u306B\\u5408\\u308F\\u305B\\u3066\\u8ABF\\u6574\",\"\\u30B9\\u30E9\\u30A4\\u30C0\\u30FC\",\"\\u30DE\\u30A6\\u30B9 \\u30AA\\u30FC\\u30D0\\u30FC\",\"\\u5E38\\u306B\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30B3\\u30F3\\u30C6\\u30AD\\u30B9\\u30C8 \\u30E1\\u30CB\\u30E5\\u30FC\\u306E\\u8868\\u793A\"],\"vs/editor/contrib/cursorUndo/browser/cursorUndo\":[\"\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u5143\\u306B\\u623B\\u3059\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u306E\\u3084\\u308A\\u76F4\\u3057\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\":[\"\\u8CBC\\u308A\\u4ED8\\u3051\\u306E\\u30AA\\u30D7\\u30B7\\u30E7\\u30F3...\",\"\\u9069\\u7528\\u3057\\u3088\\u3046\\u3068\\u3059\\u308B\\u8CBC\\u308A\\u4ED8\\u3051\\u7DE8\\u96C6\\u306E ID\\u3002\\u6307\\u5B9A\\u3057\\u306A\\u3044\\u5834\\u5408\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u30D4\\u30C3\\u30AB\\u30FC\\u304C\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\":[\"\\u8CBC\\u308A\\u4ED8\\u3051\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u304C\\u8868\\u793A\\u3055\\u308C\\u3066\\u3044\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u8CBC\\u308A\\u4ED8\\u3051\\u30AA\\u30D7\\u30B7\\u30E7\\u30F3\\u3092\\u8868\\u793A...\",\"\\u8CBC\\u308A\\u4ED8\\u3051\\u30CF\\u30F3\\u30C9\\u30E9\\u30FC\\u3092\\u5B9F\\u884C\\u3057\\u3066\\u3044\\u307E\\u3059\\u3002\\u30AF\\u30EA\\u30C3\\u30AF\\u3057\\u3066\\u30AD\\u30E3\\u30F3\\u30BB\\u30EB\\u3057\\u307E\\u3059\",\"\\u8CBC\\u308A\\u4ED8\\u3051\\u64CD\\u4F5C\\u306E\\u9078\\u629E\",\"\\u8CBC\\u308A\\u4ED8\\u3051\\u30CF\\u30F3\\u30C9\\u30E9\\u30FC\\u3092\\u5B9F\\u884C\\u3057\\u3066\\u3044\\u307E\\u3059...\"],\"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\":[\"\\u30D3\\u30EB\\u30C8\\u30A4\\u30F3\",\"\\u30D7\\u30EC\\u30FC\\u30F3\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u633F\\u5165\",\"URI \\u306E\\u633F\\u5165\",\"URI \\u306E\\u633F\\u5165\",\"\\u30D1\\u30B9\\u306E\\u633F\\u5165\",\"\\u30D1\\u30B9\\u306E\\u633F\\u5165\",\"\\u76F8\\u5BFE\\u30D1\\u30B9\\u306E\\u633F\\u5165\",\"\\u76F8\\u5BFE\\u30D1\\u30B9\\u306E\\u633F\\u5165\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\":[\"Configures the default drop provider to use for content of a given mime type.\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\":[\"\\u30C9\\u30ED\\u30C3\\u30D7 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u304C\\u8868\\u793A\\u3055\\u308C\\u3066\\u3044\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30C9\\u30ED\\u30C3\\u30D7 \\u30AA\\u30D7\\u30B7\\u30E7\\u30F3\\u3092\\u8868\\u793A...\",\"\\u30C9\\u30ED\\u30C3\\u30D7 \\u30CF\\u30F3\\u30C9\\u30E9\\u30FC\\u3092\\u5B9F\\u884C\\u3057\\u3066\\u3044\\u307E\\u3059\\u3002\\u30AF\\u30EA\\u30C3\\u30AF\\u3057\\u3066\\u30AD\\u30E3\\u30F3\\u30BB\\u30EB\\u3057\\u307E\\u3059\"],\"vs/editor/contrib/editorState/browser/keybindingCancellation\":[\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u53D6\\u308A\\u6D88\\u3057\\u53EF\\u80FD\\u306A\\u64CD\\u4F5C ('\\u53C2\\u7167\\u3092\\u3053\\u3053\\u306B\\u8868\\u793A' \\u306A\\u3069) \\u3092\\u5B9F\\u884C\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\"],\"vs/editor/contrib/find/browser/findController\":[\"\\u691C\\u7D22\",\"\\u691C\\u7D22(&&F)\",`\"\\u6B63\\u898F\\u8868\\u73FE\\u3092\\u4F7F\\u7528\\u3059\\u308B\" \\u30D5\\u30E9\\u30B0\\u3092\\u30AA\\u30FC\\u30D0\\u30FC\\u30E9\\u30A4\\u30C9\\u3057\\u307E\\u3059\\u3002\\r\n\\u30D5\\u30E9\\u30B0\\u306F\\u4ECA\\u5F8C\\u4FDD\\u5B58\\u3055\\u308C\\u307E\\u305B\\u3093\\u3002\\r\n0: \\u4F55\\u3082\\u3057\\u306A\\u3044\\r\n1: True\\r\n2: False`,`\"\\u5358\\u8A9E\\u5358\\u4F4D\\u3067\\u691C\\u7D22\\u3059\\u308B\" \\u30D5\\u30E9\\u30B0\\u3092\\u30AA\\u30FC\\u30D0\\u30FC\\u30E9\\u30A4\\u30C9\\u3057\\u307E\\u3059\\u3002\\r\n\\u30D5\\u30E9\\u30B0\\u306F\\u4ECA\\u5F8C\\u4FDD\\u5B58\\u3055\\u308C\\u307E\\u305B\\u3093\\u3002\\r\n0: \\u4F55\\u3082\\u3057\\u306A\\u3044\\r\n1: True\\r\n2: False`,`\"\\u6570\\u5F0F\\u30B1\\u30FC\\u30B9\" \\u30D5\\u30E9\\u30B0\\u3092\\u30AA\\u30FC\\u30D0\\u30FC\\u30E9\\u30A4\\u30C9\\u3057\\u307E\\u3059\\u3002\\r\n\\u30D5\\u30E9\\u30B0\\u306F\\u4ECA\\u5F8C\\u4FDD\\u5B58\\u3055\\u308C\\u307E\\u305B\\u3093\\u3002\\r\n0: \\u4F55\\u3082\\u3057\\u306A\\u3044\\r\n1: True\\r\n2: False`,`\"\\u30B1\\u30FC\\u30B9\\u306E\\u4FDD\\u6301\" \\u30D5\\u30E9\\u30B0\\u3092\\u30AA\\u30FC\\u30D0\\u30FC\\u30E9\\u30A4\\u30C9\\u3057\\u307E\\u3059\\u3002\\r\n\\u30D5\\u30E9\\u30B0\\u306F\\u4ECA\\u5F8C\\u4FDD\\u5B58\\u3055\\u308C\\u307E\\u305B\\u3093\\u3002\\r\n0: \\u4F55\\u3082\\u3057\\u306A\\u3044\\r\n1: True\\r\n2: False`,\"\\u5F15\\u6570\\u3092\\u4F7F\\u7528\\u3057\\u305F\\u691C\\u7D22\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u3067\\u691C\\u7D22\",\"\\u6B21\\u3092\\u691C\\u7D22\",\"\\u524D\\u3092\\u691C\\u7D22\",\"[\\u4E00\\u81F4] \\u306B\\u79FB\\u52D5...\",\"\\u4E00\\u81F4\\u3057\\u307E\\u305B\\u3093\\u3002\\u4ED6\\u306E\\u9805\\u76EE\\u3092\\u691C\\u7D22\\u3057\\u3066\\u307F\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u7279\\u5B9A\\u306E\\u4E00\\u81F4\\u306B\\u79FB\\u52D5\\u3059\\u308B\\u6570\\u5024\\u3092\\u5165\\u529B\\u3057\\u307E\\u3059 (1 \\u304B\\u3089 {0})\",\"1 ~ {0} \\u306E\\u6570\\u3092\\u5165\\u529B\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"1 ~ {0} \\u306E\\u6570\\u3092\\u5165\\u529B\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u6B21\\u306E\\u9078\\u629E\\u9805\\u76EE\\u3092\\u691C\\u7D22\",\"\\u524D\\u306E\\u9078\\u629E\\u9805\\u76EE\\u3092\\u691C\\u7D22\",\"\\u7F6E\\u63DB\",\"\\u7F6E\\u63DB(&&R)\"],\"vs/editor/contrib/find/browser/findWidget\":[\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u691C\\u7D22\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u5185\\u306E '\\u9078\\u629E\\u7BC4\\u56F2\\u3092\\u691C\\u7D22' \\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u691C\\u7D22\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u304C\\u6298\\u308A\\u305F\\u305F\\u307E\\u308C\\u3066\\u3044\\u308B\\u3053\\u3068\\u3092\\u793A\\u3059\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u691C\\u7D22\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u304C\\u5C55\\u958B\\u3055\\u308C\\u3066\\u3044\\u308B\\u3053\\u3068\\u3092\\u793A\\u3059\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u691C\\u7D22\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u5185\\u306E '\\u7F6E\\u63DB' \\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u691C\\u7D22\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u5185\\u306E '\\u3059\\u3079\\u3066\\u7F6E\\u63DB' \\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u691C\\u7D22\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u5185\\u306E '\\u524D\\u3092\\u691C\\u7D22' \\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u691C\\u7D22\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u5185\\u306E '\\u6B21\\u3092\\u691C\\u7D22' \\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u691C\\u7D22/\\u7F6E\\u63DB\",\"\\u691C\\u7D22\",\"\\u691C\\u7D22\",\"\\u524D\\u306E\\u4E00\\u81F4\\u9805\\u76EE\",\"\\u6B21\\u306E\\u4E00\\u81F4\\u9805\\u76EE\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u3092\\u691C\\u7D22\",\"\\u9589\\u3058\\u308B\",\"\\u7F6E\\u63DB\",\"\\u7F6E\\u63DB\",\"\\u7F6E\\u63DB\",\"\\u3059\\u3079\\u3066\\u7F6E\\u63DB\",\"\\u7F6E\\u63DB\\u306E\\u5207\\u308A\\u66FF\\u3048\",\"\\u6700\\u521D\\u306E {0} \\u4EF6\\u306E\\u7D50\\u679C\\u3060\\u3051\\u304C\\u5F37\\u8ABF\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u304C\\u3001\\u3059\\u3079\\u3066\\u306E\\u691C\\u7D22\\u64CD\\u4F5C\\u306F\\u30C6\\u30AD\\u30B9\\u30C8\\u5168\\u4F53\\u3067\\u6A5F\\u80FD\\u3057\\u307E\\u3059\\u3002\",\"{0} / {1} \\u4EF6\",\"\\u7D50\\u679C\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"{0} \\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u3057\\u305F\",\"{0} \\u304C '{1}' \\u3067\\u898B\\u3064\\u304B\\u308A\\u307E\\u3057\\u305F\",\"{0} \\u306F '{1}' \\u3067 {2} \\u306B\\u898B\\u3064\\u304B\\u308A\\u307E\\u3057\\u305F\",\"{0} \\u304C '{1}' \\u3067\\u898B\\u3064\\u304B\\u308A\\u307E\\u3057\\u305F\",\"Ctrl + Enter \\u30AD\\u30FC\\u3092\\u62BC\\u3059\\u3068\\u3001\\u3059\\u3079\\u3066\\u7F6E\\u63DB\\u3059\\u308B\\u306E\\u3067\\u306F\\u306A\\u304F\\u3001\\u6539\\u884C\\u304C\\u633F\\u5165\\u3055\\u308C\\u308B\\u3088\\u3046\\u306B\\u306A\\u308A\\u307E\\u3057\\u305F\\u3002editor.action.replaceAll \\u306E\\u30AD\\u30FC\\u30D0\\u30A4\\u30F3\\u30C9\\u3092\\u5909\\u66F4\\u3057\\u3066\\u3001\\u3053\\u306E\\u52D5\\u4F5C\\u3092\\u30AA\\u30FC\\u30D0\\u30FC\\u30E9\\u30A4\\u30C9\\u3067\\u304D\\u307E\\u3059\\u3002\"],\"vs/editor/contrib/folding/browser/folding\":[\"\\u5C55\\u958B\",\"\\u518D\\u5E30\\u7684\\u306B\\u5C55\\u958B\\u3059\\u308B\",\"\\u6298\\u308A\\u305F\\u305F\\u307F\",\"\\u6298\\u308A\\u305F\\u305F\\u307F\\u306E\\u5207\\u308A\\u66FF\\u3048\",\"\\u518D\\u5E30\\u7684\\u306B\\u6298\\u308A\\u305F\\u305F\\u3080\",\"\\u3059\\u3079\\u3066\\u306E\\u30D6\\u30ED\\u30C3\\u30AF \\u30B3\\u30E1\\u30F3\\u30C8\\u306E\\u6298\\u308A\\u305F\\u305F\\u307F\",\"\\u3059\\u3079\\u3066\\u306E\\u9818\\u57DF\\u3092\\u6298\\u308A\\u305F\\u305F\\u3080\",\"\\u3059\\u3079\\u3066\\u306E\\u9818\\u57DF\\u3092\\u5C55\\u958B\",\"\\u9078\\u629E\\u3055\\u308C\\u305F\\u3082\\u306E\\u3092\\u9664\\u304F\\u3059\\u3079\\u3066\\u306E\\u9818\\u57DF\\u3092\\u6298\\u308A\\u305F\\u305F\\u3080\",\"\\u9078\\u629E\\u3055\\u308C\\u305F\\u3082\\u306E\\u3092\\u9664\\u304F\\u3059\\u3079\\u3066\\u306E\\u9818\\u57DF\\u3092\\u5C55\\u958B\\u3059\\u308B\",\"\\u3059\\u3079\\u3066\\u6298\\u308A\\u305F\\u305F\\u307F\",\"\\u3059\\u3079\\u3066\\u5C55\\u958B\",\"\\u89AA\\u30D5\\u30A9\\u30FC\\u30EB\\u30C9\\u306B\\u79FB\\u52D5\\u3059\\u308B\",\"\\u524D\\u306E\\u30D5\\u30A9\\u30FC\\u30EB\\u30C7\\u30A3\\u30F3\\u30B0\\u7BC4\\u56F2\\u306B\\u79FB\\u52D5\\u3059\\u308B\",\"\\u6B21\\u306E\\u30D5\\u30A9\\u30FC\\u30EB\\u30C7\\u30A3\\u30F3\\u30B0\\u7BC4\\u56F2\\u306B\\u79FB\\u52D5\\u3059\\u308B\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u304B\\u3089\\u6298\\u308A\\u305F\\u305F\\u307F\\u7BC4\\u56F2\\u3092\\u4F5C\\u6210\\u3059\\u308B\",\"\\u624B\\u52D5\\u6298\\u308A\\u305F\\u305F\\u307F\\u7BC4\\u56F2\\u3092\\u524A\\u9664\\u3059\\u308B\",\"\\u30EC\\u30D9\\u30EB {0} \\u3067\\u6298\\u308A\\u305F\\u305F\\u3080\"],\"vs/editor/contrib/folding/browser/foldingDecorations\":[\"\\u6298\\u308A\\u66F2\\u3052\\u308B\\u7BC4\\u56F2\\u306E\\u80CC\\u666F\\u8272\\u3002\\u57FA\\u306E\\u88C5\\u98FE\\u3092\\u96A0\\u3055\\u306A\\u3044\\u3088\\u3046\\u306B\\u3001\\u8272\\u306F\\u4E0D\\u900F\\u660E\\u3067\\u3042\\u3063\\u3066\\u306F\\u306A\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u4F59\\u767D\\u306B\\u3042\\u308B\\u6298\\u308A\\u305F\\u305F\\u307F\\u30B3\\u30F3\\u30C8\\u30ED\\u30FC\\u30EB\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30B0\\u30EA\\u30D5\\u4F59\\u767D\\u5185\\u306E\\u5C55\\u958B\\u3055\\u308C\\u305F\\u7BC4\\u56F2\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30B0\\u30EA\\u30D5\\u4F59\\u767D\\u5185\\u306E\\u6298\\u308A\\u305F\\u305F\\u307E\\u308C\\u305F\\u7BC4\\u56F2\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30B0\\u30EA\\u30D5\\u4F59\\u767D\\u5185\\u306E\\u6298\\u308A\\u305F\\u305F\\u307E\\u308C\\u305F\\u7BC4\\u56F2\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30B0\\u30EA\\u30D5\\u4F59\\u767D\\u5185\\u3067\\u624B\\u52D5\\u3067\\u5C55\\u958B\\u3055\\u308C\\u305F\\u7BC4\\u56F2\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\"],\"vs/editor/contrib/fontZoom/browser/fontZoom\":[\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30D5\\u30A9\\u30F3\\u30C8\\u3092\\u62E1\\u5927\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30D5\\u30A9\\u30F3\\u30C8\\u3092\\u7E2E\\u5C0F\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30D5\\u30A9\\u30F3\\u30C8\\u306E\\u30BA\\u30FC\\u30E0\\u3092\\u30EA\\u30BB\\u30C3\\u30C8\"],\"vs/editor/contrib/format/browser/format\":[\"\\u884C {0} \\u3067 1 \\u3064\\u306E\\u66F8\\u5F0F\\u8A2D\\u5B9A\\u3092\\u7DE8\\u96C6\",\"\\u884C {1} \\u3067 {0} \\u500B\\u306E\\u66F8\\u5F0F\\u8A2D\\u5B9A\\u3092\\u7DE8\\u96C6\",\"\\u884C {0} \\u3068 {1} \\u306E\\u9593\\u3067 1 \\u3064\\u306E\\u66F8\\u5F0F\\u8A2D\\u5B9A\\u3092\\u7DE8\\u96C6\",\"\\u884C {1} \\u3068 {2} \\u306E\\u9593\\u3067 {0} \\u500B\\u306E\\u66F8\\u5F0F\\u8A2D\\u5B9A\\u3092\\u7DE8\\u96C6\"],\"vs/editor/contrib/format/browser/formatActions\":[\"\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u306E\\u30D5\\u30A9\\u30FC\\u30DE\\u30C3\\u30C8\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u306E\\u30D5\\u30A9\\u30FC\\u30DE\\u30C3\\u30C8\"],\"vs/editor/contrib/gotoError/browser/gotoError\":[\"\\u6B21\\u306E\\u554F\\u984C (\\u30A8\\u30E9\\u30FC\\u3001\\u8B66\\u544A\\u3001\\u60C5\\u5831) \\u3078\\u79FB\\u52D5\",\"\\u6B21\\u306E\\u30DE\\u30FC\\u30AB\\u30FC\\u3078\\u79FB\\u52D5\\u3059\\u308B\\u305F\\u3081\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u524D\\u306E\\u554F\\u984C (\\u30A8\\u30E9\\u30FC\\u3001\\u8B66\\u544A\\u3001\\u60C5\\u5831) \\u3078\\u79FB\\u52D5\",\"\\u524D\\u306E\\u30DE\\u30FC\\u30AB\\u30FC\\u3078\\u79FB\\u52D5\\u3059\\u308B\\u305F\\u3081\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u30D5\\u30A1\\u30A4\\u30EB\\u5185\\u306E\\u6B21\\u306E\\u554F\\u984C (\\u30A8\\u30E9\\u30FC\\u3001\\u8B66\\u544A\\u3001\\u60C5\\u5831) \\u3078\\u79FB\\u52D5\",\"\\u6B21\\u306E\\u554F\\u984C\\u7B87\\u6240(&&P)\",\"\\u30D5\\u30A1\\u30A4\\u30EB\\u5185\\u306E\\u524D\\u306E\\u554F\\u984C (\\u30A8\\u30E9\\u30FC\\u3001\\u8B66\\u544A\\u3001\\u60C5\\u5831) \\u3078\\u79FB\\u52D5\",\"\\u524D\\u306E\\u554F\\u984C\\u7B87\\u6240(&&P)\"],\"vs/editor/contrib/gotoError/browser/gotoErrorWidget\":[\"\\u30A8\\u30E9\\u30FC\",\"\\u8B66\\u544A\",\"\\u60C5\\u5831\",\"\\u30D2\\u30F3\\u30C8\",\"{0} ({1})\\u3002\",\"{1} \\u4EF6\\u4E2D {0} \\u4EF6\\u306E\\u554F\\u984C\",\"\\u554F\\u984C {0} / {1}\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC \\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u30A8\\u30E9\\u30FC\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC \\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8 \\u30A8\\u30E9\\u30FC\\u306E\\u898B\\u51FA\\u3057\\u306E\\u80CC\\u666F\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC \\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u8B66\\u544A\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC \\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u8B66\\u544A\\u306E\\u898B\\u51FA\\u3057\\u306E\\u80CC\\u666F\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC \\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u60C5\\u5831\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC \\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u60C5\\u5831\\u306E\\u898B\\u51FA\\u3057\\u306E\\u80CC\\u666F\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC \\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u80CC\\u666F\\u3002\"],\"vs/editor/contrib/gotoSymbol/browser/goToCommands\":[\"\\u30D4\\u30FC\\u30AF\",\"\\u5B9A\\u7FA9\",\"'{0}' \\u306E\\u5B9A\\u7FA9\\u306F\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\",\"\\u5B9A\\u7FA9\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\",\"\\u5B9A\\u7FA9\\u3078\\u79FB\\u52D5\",\"\\u5B9A\\u7FA9\\u306B\\u79FB\\u52D5(&&D)\",\"\\u5B9A\\u7FA9\\u3092\\u6A2A\\u306B\\u958B\\u304F\",\"\\u5B9A\\u7FA9\\u3092\\u3053\\u3053\\u306B\\u8868\\u793A\",\"\\u5BA3\\u8A00\",\"'{0}' \\u306E\\u5BA3\\u8A00\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\",\"\\u5BA3\\u8A00\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\",\"\\u5BA3\\u8A00\\u3078\\u79FB\\u52D5\",\"\\u5BA3\\u8A00\\u3078\\u79FB\\u52D5(&&D)\",\"'{0}' \\u306E\\u5BA3\\u8A00\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\",\"\\u5BA3\\u8A00\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\",\"\\u5BA3\\u8A00\\u3092\\u3053\\u3053\\u306B\\u8868\\u793A\",\"\\u578B\\u5B9A\\u7FA9\",\"'{0}' \\u306E\\u578B\\u5B9A\\u7FA9\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\",\"\\u578B\\u5B9A\\u7FA9\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\",\"\\u578B\\u5B9A\\u7FA9\\u3078\\u79FB\\u52D5\",\"\\u578B\\u5B9A\\u7FA9\\u306B\\u79FB\\u52D5(&&T)\",\"\\u578B\\u5B9A\\u7FA9\\u3092\\u8868\\u793A\",\"\\u5B9F\\u88C5\",\"'{0}' \\u306E\\u5B9F\\u88C5\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\",\"\\u5B9F\\u88C5\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\",\"\\u5B9F\\u88C5\\u3078\\u79FB\\u52D5\",\"\\u5B9F\\u88C5\\u7B87\\u6240\\u306B\\u79FB\\u52D5(&&I)\",\"\\u5B9F\\u88C5\\u306E\\u30D4\\u30FC\\u30AF\",\"'{0}' \\u306E\\u53C2\\u7167\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\",\"\\u53C2\\u7167\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\",\"\\u53C2\\u7167\\u3078\\u79FB\\u52D5\",\"\\u53C2\\u7167\\u3078\\u79FB\\u52D5(&&R)\",\"\\u53C2\\u7167\",\"\\u53C2\\u7167\\u3092\\u3053\\u3053\\u306B\\u8868\\u793A\",\"\\u53C2\\u7167\",\"\\u4EFB\\u610F\\u306E\\u30B7\\u30F3\\u30DC\\u30EB\\u3078\\u79FB\\u52D5\",\"\\u5834\\u6240\",\"'{0}' \\u306B\\u4E00\\u81F4\\u3059\\u308B\\u7D50\\u679C\\u306F\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\",\"\\u53C2\\u7167\"],\"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\":[\"\\u30AF\\u30EA\\u30C3\\u30AF\\u3057\\u3066\\u3001{0} \\u306E\\u5B9A\\u7FA9\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesController\":[\"\\u53C2\\u7167\\u306E\\u30D7\\u30EC\\u30D3\\u30E5\\u30FC\\u304C\\u8868\\u793A\\u3055\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B ('\\u53C2\\u7167\\u306E\\u30D7\\u30EC\\u30D3\\u30E5\\u30FC' \\u307E\\u305F\\u306F '\\u5B9A\\u7FA9\\u3092\\u3053\\u3053\\u306B\\u8868\\u793A' \\u306A\\u3069)\",\"\\u8AAD\\u307F\\u8FBC\\u3093\\u3067\\u3044\\u307E\\u3059...\",\"{0} ({1})\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\":[\"{0} \\u500B\\u306E\\u53C2\\u7167\",\"{0} \\u500B\\u306E\\u53C2\\u7167\",\"\\u53C2\\u7167\\u8A2D\\u5B9A\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\":[\"\\u30D7\\u30EC\\u30D3\\u30E5\\u30FC\\u3092\\u8868\\u793A\\u3067\\u304D\\u307E\\u305B\\u3093\",\"\\u7D50\\u679C\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u53C2\\u7167\\u8A2D\\u5B9A\"],\"vs/editor/contrib/gotoSymbol/browser/referencesModel\":[\"\\u5217 {2} \\u306E\\u884C {1} \\u306E {0}\",\"\\u5217 {3} \\u306E\\u884C {2} \\u306E {1} \\u306B {0}\",\"{0} \\u306B 1 \\u500B\\u306E\\u30B7\\u30F3\\u30DC\\u30EB\\u3001\\u5B8C\\u5168\\u306A\\u30D1\\u30B9 {1}\",\"{1} \\u306B {0} \\u500B\\u306E\\u30B7\\u30F3\\u30DC\\u30EB\\u3001\\u5B8C\\u5168\\u306A\\u30D1\\u30B9 {2}\",\"\\u4E00\\u81F4\\u3059\\u308B\\u9805\\u76EE\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\",\"{0} \\u306B 1 \\u500B\\u306E\\u30B7\\u30F3\\u30DC\\u30EB\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u3057\\u305F\",\"{1} \\u306B {0} \\u500B\\u306E\\u30B7\\u30F3\\u30DC\\u30EB\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u3057\\u305F\",\"{1} \\u500B\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u306B {0} \\u500B\\u306E\\u30B7\\u30F3\\u30DC\\u30EB\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u3057\\u305F\"],\"vs/editor/contrib/gotoSymbol/browser/symbolNavigation\":[\"\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9\\u306E\\u307F\\u3067\\u79FB\\u52D5\\u3067\\u304D\\u308B\\u30B7\\u30F3\\u30DC\\u30EB\\u306E\\u5834\\u6240\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\\u3002\",\"{1} \\u306E\\u30B7\\u30F3\\u30DC\\u30EB {0}\\u3001\\u6B21\\u306B {2}\",\"\\u30B7\\u30F3\\u30DC\\u30EB {0}/{1}\"],\"vs/editor/contrib/hover/browser/hover\":[\"[\\u8868\\u793A\\u307E\\u305F\\u306F\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9] \\u30DB\\u30D0\\u30FC\",\"\\u5B9A\\u7FA9\\u30D7\\u30EC\\u30D3\\u30E5\\u30FC\\u306E\\u30DB\\u30D0\\u30FC\\u3092\\u8868\\u793A\\u3059\\u308B\",\"[\\u4E0A\\u306B\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB] \\u30DB\\u30D0\\u30FC\",\"[\\u4E0B\\u306B\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB] \\u30DB\\u30D0\\u30FC\",\"[\\u5DE6\\u306B\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB] \\u30DB\\u30D0\\u30FC\",\"[\\u53F3\\u306B\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB] \\u30DB\\u30D0\\u30FC\",\"[\\u30DA\\u30FC\\u30B8\\u3092\\u4E0A\\u306B] \\u30DB\\u30D0\\u30FC\",\"[\\u30DA\\u30FC\\u30B8\\u3092\\u4E0B\\u306B] \\u30DB\\u30D0\\u30FC\",\"[\\u4E0A\\u306B\\u79FB\\u52D5] \\u30DB\\u30D0\\u30FC\",\"[\\u4E0B\\u306B\\u79FB\\u52D5] \\u30DB\\u30D0\\u30FC\"],\"vs/editor/contrib/hover/browser/markdownHoverParticipant\":[\"\\u8AAD\\u307F\\u8FBC\\u3093\\u3067\\u3044\\u307E\\u3059...\",\"\\u30D1\\u30D5\\u30A9\\u30FC\\u30DE\\u30F3\\u30B9\\u4E0A\\u306E\\u7406\\u7531\\u304B\\u3089\\u3001\\u9577\\u3044\\u884C\\u306E\\u305F\\u3081\\u306B\\u30EC\\u30F3\\u30C0\\u30EA\\u30F3\\u30B0\\u304C\\u4E00\\u6642\\u505C\\u6B62\\u3055\\u308C\\u307E\\u3057\\u305F\\u3002\\u3053\\u308C\\u306F `editor.stopRenderingLineAfter` \\u3067\\u8A2D\\u5B9A\\u3067\\u304D\\u307E\\u3059\\u3002\",\"\\u30D1\\u30D5\\u30A9\\u30FC\\u30DE\\u30F3\\u30B9\\u4E0A\\u306E\\u7406\\u7531\\u304B\\u3089\\u30C8\\u30FC\\u30AF\\u30F3\\u5316\\u306F\\u30B9\\u30AD\\u30C3\\u30D7\\u3055\\u308C\\u307E\\u3059\\u3002\\u305D\\u306E\\u9577\\u3044\\u884C\\u306E\\u9577\\u3055\\u306F `editor.maxTokenizationLineLength` \\u3067\\u69CB\\u6210\\u3067\\u304D\\u307E\\u3059\\u3002\"],\"vs/editor/contrib/hover/browser/markerHoverParticipant\":[\"\\u554F\\u984C\\u306E\\u8868\\u793A\",\"\\u5229\\u7528\\u3067\\u304D\\u308B\\u30AF\\u30A4\\u30C3\\u30AF\\u30D5\\u30A3\\u30C3\\u30AF\\u30B9\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u30AF\\u30A4\\u30C3\\u30AF\\u30D5\\u30A3\\u30C3\\u30AF\\u30B9\\u3092\\u78BA\\u8A8D\\u3057\\u3066\\u3044\\u307E\\u3059...\",\"\\u5229\\u7528\\u3067\\u304D\\u308B\\u30AF\\u30A4\\u30C3\\u30AF\\u30D5\\u30A3\\u30C3\\u30AF\\u30B9\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u30AF\\u30A4\\u30C3\\u30AF \\u30D5\\u30A3\\u30C3\\u30AF\\u30B9...\"],\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\":[\"\\u524D\\u306E\\u5024\\u306B\\u7F6E\\u63DB\",\"\\u6B21\\u306E\\u5024\\u306B\\u7F6E\\u63DB\"],\"vs/editor/contrib/indentation/browser/indentation\":[\"\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3092\\u30B9\\u30DA\\u30FC\\u30B9\\u306B\\u5909\\u63DB\",\"\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3092\\u30BF\\u30D6\\u306B\\u5909\\u63DB\",\"\\u69CB\\u6210\\u3055\\u308C\\u305F\\u30BF\\u30D6\\u306E\\u30B5\\u30A4\\u30BA\",\"\\u65E2\\u5B9A\\u306E\\u30BF\\u30D6 \\u30B5\\u30A4\\u30BA\",\"\\u73FE\\u5728\\u306E\\u30BF\\u30D6 \\u30B5\\u30A4\\u30BA\",\"\\u73FE\\u5728\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u306E\\u30BF\\u30D6\\u306E\\u30B5\\u30A4\\u30BA\\u3092\\u9078\\u629E\",\"\\u30BF\\u30D6\\u306B\\u3088\\u308B\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\",\"\\u30B9\\u30DA\\u30FC\\u30B9\\u306B\\u3088\\u308B\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\",\"\\u30BF\\u30D6\\u306E\\u8868\\u793A\\u30B5\\u30A4\\u30BA\\u306E\\u5909\\u66F4\",\"\\u5185\\u5BB9\\u304B\\u3089\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3092\\u691C\\u51FA\",\"\\u884C\\u306E\\u518D\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\",\"\\u9078\\u629E\\u884C\\u3092\\u518D\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\"],\"vs/editor/contrib/inlayHints/browser/inlayHintsHover\":[\"\\u30C0\\u30D6\\u30EB\\u30AF\\u30EA\\u30C3\\u30AF\\u3057\\u3066\\u633F\\u5165\\u3059\\u308B\",\"cmd \\u30AD\\u30FC\\u3092\\u62BC\\u3057\\u306A\\u304C\\u3089\\u30AF\\u30EA\\u30C3\\u30AF\",\"ctrl \\u30AD\\u30FC\\u3092\\u62BC\\u3057\\u306A\\u304C\\u3089 \\u30AF\\u30EA\\u30C3\\u30AF\",\"option \\u30AD\\u30FC\\u3092\\u62BC\\u3057\\u306A\\u304C\\u3089\\u30AF\\u30EA\\u30C3\\u30AF\",\"alt \\u30AD\\u30FC\\u3092\\u62BC\\u3057\\u306A\\u304C\\u3089\\u30AF\\u30EA\\u30C3\\u30AF\",\"[\\u5B9A\\u7FA9] ({0}) \\u306B\\u79FB\\u52D5\\u3057\\u3001\\u53F3\\u30AF\\u30EA\\u30C3\\u30AF\\u3057\\u3066\\u8A73\\u7D30\\u3092\\u8868\\u793A\\u3057\\u307E\\u3059\",\"\\u5B9A\\u7FA9\\u306B\\u79FB\\u52D5 ({0})\",\"\\u30B3\\u30DE\\u30F3\\u30C9\\u306E\\u5B9F\\u884C\"],\"vs/editor/contrib/inlineCompletions/browser/commands\":[\"\\u6B21\\u306E\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u3092\\u8868\\u793A\\u3059\\u308B\",\"\\u524D\\u306E\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u3092\\u8868\\u793A\\u3059\\u308B\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u3092\\u30C8\\u30EA\\u30AC\\u30FC\\u3059\\u308B\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u63D0\\u6848\\u306E\\u6B21\\u306E\\u5358\\u8A9E\\u3092\\u627F\\u8AFE\\u3059\\u308B\",\"\\u30EF\\u30FC\\u30C9\\u3092\\u627F\\u8AFE\\u3059\\u308B\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u63D0\\u6848\\u306E\\u6B21\\u306E\\u884C\\u3092\\u627F\\u8AFE\\u3059\\u308B\",\"\\u884C\\u3092\\u627F\\u8AFE\\u3059\\u308B\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u3092\\u627F\\u8AFE\\u3059\\u308B\",\"\\u627F\\u8AFE\\u3059\\u308B\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u3092\\u975E\\u8868\\u793A\\u306B\\u3059\\u308B\",\"\\u5E38\\u306B\\u30C4\\u30FC\\u30EB \\u30D0\\u30FC\\u3092\\u8868\\u793A\\u3059\\u308B\"],\"vs/editor/contrib/inlineCompletions/browser/hoverParticipant\":[\"\\u304A\\u3059\\u3059\\u3081:\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\":[\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u304C\\u30B9\\u30DA\\u30FC\\u30B9\\u3067\\u59CB\\u307E\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\\u304C\\u3001\\u30BF\\u30D6\\u3067\\u633F\\u5165\\u3055\\u308C\\u308B\\u3082\\u306E\\u3088\\u308A\\u3082\\u5C0F\\u3055\\u3044\\u30B9\\u30DA\\u30FC\\u30B9\\u3067\\u59CB\\u307E\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u73FE\\u5728\\u306E\\u5019\\u88DC\\u306B\\u3064\\u3044\\u3066\\u5019\\u88DC\\u8868\\u793A\\u3092\\u6B62\\u3081\\u308B\\u304B\\u3069\\u3046\\u304B\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\":[\"Inspect this in the accessible view ({0})\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\":[\"\\u6B21\\u306E\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC \\u30D2\\u30F3\\u30C8\\u3092\\u8868\\u793A\\u3059\\u308B\\u305F\\u3081\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u524D\\u306E\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC \\u30D2\\u30F3\\u30C8\\u3092\\u8868\\u793A\\u3059\\u308B\\u305F\\u3081\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"{0} ({1})\",\"\\u524D\\u3078\",\"\\u6B21\\u3078\"],\"vs/editor/contrib/lineSelection/browser/lineSelection\":[\"\\u884C\\u5168\\u4F53\\u3092\\u9078\\u629E\\u3059\\u308B\"],\"vs/editor/contrib/linesOperations/browser/linesOperations\":[\"\\u884C\\u3092\\u4E0A\\u3078\\u30B3\\u30D4\\u30FC\",\"\\u884C\\u3092\\u4E0A\\u3078\\u30B3\\u30D4\\u30FC(&&C)\",\"\\u884C\\u3092\\u4E0B\\u3078\\u30B3\\u30D4\\u30FC\",\"\\u884C\\u3092\\u4E0B\\u3078\\u30B3\\u30D4\\u30FC(&&P)\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u306E\\u8907\\u88FD\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u306E\\u8907\\u88FD(&&D)\",\"\\u884C\\u3092\\u4E0A\\u3078\\u79FB\\u52D5\",\"\\u884C\\u3092\\u4E0A\\u3078\\u79FB\\u52D5(&&V)\",\"\\u884C\\u3092\\u4E0B\\u3078\\u79FB\\u52D5\",\"\\u884C\\u3092\\u4E0B\\u3078\\u79FB\\u52D5(&&L)\",\"\\u884C\\u3092\\u6607\\u9806\\u306B\\u4E26\\u3079\\u66FF\\u3048\",\"\\u884C\\u3092\\u964D\\u9806\\u306B\\u4E26\\u3079\\u66FF\\u3048\",\"\\u91CD\\u8907\\u3059\\u308B\\u884C\\u3092\\u524A\\u9664\",\"\\u672B\\u5C3E\\u306E\\u7A7A\\u767D\\u306E\\u30C8\\u30EA\\u30DF\\u30F3\\u30B0\",\"\\u884C\\u306E\\u524A\\u9664\",\"\\u884C\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\",\"\\u884C\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u89E3\\u9664\",\"\\u884C\\u3092\\u4E0A\\u306B\\u633F\\u5165\",\"\\u884C\\u3092\\u4E0B\\u306B\\u633F\\u5165\",\"\\u5DE6\\u5074\\u3092\\u3059\\u3079\\u3066\\u524A\\u9664\",\"\\u53F3\\u5074\\u3092\\u3059\\u3079\\u3066\\u524A\\u9664\",\"\\u884C\\u3092\\u3064\\u306A\\u3052\\u308B\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u306E\\u5468\\u56F2\\u306E\\u6587\\u5B57\\u3092\\u5165\\u308C\\u66FF\\u3048\\u308B\",\"\\u5927\\u6587\\u5B57\\u306B\\u5909\\u63DB\",\"\\u5C0F\\u6587\\u5B57\\u306B\\u5909\\u63DB\",\"\\u5148\\u982D\\u6587\\u5B57\\u3092\\u5927\\u6587\\u5B57\\u306B\\u5909\\u63DB\\u3059\\u308B\",\"\\u30B9\\u30CD\\u30FC\\u30AF \\u30B1\\u30FC\\u30B9\\u306B\\u5909\\u63DB\\u3059\\u308B\",\"\\u30AD\\u30E3\\u30E1\\u30EB \\u30B1\\u30FC\\u30B9\\u306B\\u5909\\u63DB\\u3059\\u308B\",\"Kebab \\u30B1\\u30FC\\u30B9\\u3078\\u306E\\u5909\\u63DB\"],\"vs/editor/contrib/linkedEditing/browser/linkedEditing\":[\"\\u30EA\\u30F3\\u30AF\\u3055\\u308C\\u305F\\u7DE8\\u96C6\\u306E\\u958B\\u59CB\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u578B\\u306E\\u540D\\u524D\\u306E\\u81EA\\u52D5\\u5909\\u66F4\\u3092\\u884C\\u3046\\u3068\\u304D\\u306E\\u80CC\\u666F\\u8272\\u3067\\u3059\\u3002\"],\"vs/editor/contrib/links/browser/links\":[\"\\u3053\\u306E\\u30EA\\u30F3\\u30AF\\u306F\\u5F62\\u5F0F\\u304C\\u6B63\\u3057\\u304F\\u306A\\u3044\\u305F\\u3081\\u958B\\u304F\\u3053\\u3068\\u304C\\u3067\\u304D\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F: {0}\",\"\\u3053\\u306E\\u30EA\\u30F3\\u30AF\\u306F\\u30BF\\u30FC\\u30B2\\u30C3\\u30C8\\u304C\\u5B58\\u5728\\u3057\\u306A\\u3044\\u305F\\u3081\\u958B\\u304F\\u3053\\u3068\\u304C\\u3067\\u304D\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\\u3002\",\"\\u30B3\\u30DE\\u30F3\\u30C9\\u306E\\u5B9F\\u884C\",\"\\u30EA\\u30F3\\u30AF\\u5148\\u3092\\u8868\\u793A\",\"cmd + \\u30AF\\u30EA\\u30C3\\u30AF\",\"ctrl + \\u30AF\\u30EA\\u30C3\\u30AF\",\"option + \\u30AF\\u30EA\\u30C3\\u30AF\",\"alt + \\u30AF\\u30EA\\u30C3\\u30AF\",\"\\u30B3\\u30DE\\u30F3\\u30C9 {0} \\u306E\\u5B9F\\u884C\",\"\\u30EA\\u30F3\\u30AF\\u3092\\u958B\\u304F\"],\"vs/editor/contrib/message/browser/messageController\":[\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306B\\u73FE\\u5728\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30E1\\u30C3\\u30BB\\u30FC\\u30B8\\u304C\\u8868\\u793A\\u3055\\u308C\\u3066\\u3044\\u308B\\u304B\\u3069\\u3046\\u304B\"],\"vs/editor/contrib/multicursor/browser/multicursor\":[\"\\u8FFD\\u52A0\\u3055\\u308C\\u305F\\u30AB\\u30FC\\u30BD\\u30EB: {0}\",\"\\u8FFD\\u52A0\\u3055\\u308C\\u305F\\u30AB\\u30FC\\u30BD\\u30EB: {0}\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u4E0A\\u306B\\u633F\\u5165\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u4E0A\\u306B\\u633F\\u5165(&&A)\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u4E0B\\u306B\\u633F\\u5165\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u4E0B\\u306B\\u633F\\u5165(&&D)\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u884C\\u672B\\u306B\\u633F\\u5165\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u884C\\u672B\\u306B\\u633F\\u5165(&&U)\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u4E0B\\u306B\\u633F\\u5165\",\"\\u30AB\\u30FC\\u30BD\\u30EB\\u3092\\u4E0A\\u306B\\u633F\\u5165\",\"\\u9078\\u629E\\u3057\\u305F\\u9805\\u76EE\\u3092\\u6B21\\u306E\\u4E00\\u81F4\\u9805\\u76EE\\u306B\\u8FFD\\u52A0\",\"\\u6B21\\u306E\\u51FA\\u73FE\\u500B\\u6240\\u3092\\u8FFD\\u52A0(&&N)\",\"\\u9078\\u629E\\u9805\\u76EE\\u3092\\u6B21\\u306E\\u4E00\\u81F4\\u9805\\u76EE\\u306B\\u8FFD\\u52A0\",\"\\u524D\\u306E\\u51FA\\u73FE\\u7B87\\u6240\\u3092\\u8FFD\\u52A0(&&R)\",\"\\u6700\\u5F8C\\u306B\\u9078\\u629E\\u3057\\u305F\\u9805\\u76EE\\u3092\\u6B21\\u306E\\u4E00\\u81F4\\u9805\\u76EE\\u306B\\u79FB\\u52D5\",\"\\u6700\\u5F8C\\u306B\\u9078\\u3093\\u3060\\u9805\\u76EE\\u3092\\u524D\\u306E\\u4E00\\u81F4\\u9805\\u76EE\\u306B\\u79FB\\u52D5\\u3059\\u308B\",\"\\u4E00\\u81F4\\u3059\\u308B\\u3059\\u3079\\u3066\\u306E\\u51FA\\u73FE\\u7B87\\u6240\\u3092\\u9078\\u629E\\u3057\\u307E\\u3059\",\"\\u3059\\u3079\\u3066\\u306E\\u51FA\\u73FE\\u7B87\\u6240\\u3092\\u9078\\u629E(&&O)\",\"\\u3059\\u3079\\u3066\\u306E\\u51FA\\u73FE\\u7B87\\u6240\\u3092\\u5909\\u66F4\",\"\\u6B21\\u306E\\u30AB\\u30FC\\u30BD\\u30EB\\u306B\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\",\"\\u6B21\\u306E\\u30AB\\u30FC\\u30BD\\u30EB\\u306B\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3092\\u5408\\u308F\\u305B\\u308B\",\"\\u524D\\u306E\\u30AB\\u30FC\\u30BD\\u30EB\\u306B\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3059\\u308B\",\"\\u524D\\u306E\\u30AB\\u30FC\\u30BD\\u30EB\\u306B\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3092\\u5408\\u308F\\u305B\\u308B\"],\"vs/editor/contrib/parameterHints/browser/parameterHints\":[\"\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC \\u30D2\\u30F3\\u30C8\\u3092\\u30C8\\u30EA\\u30AC\\u30FC\"],\"vs/editor/contrib/parameterHints/browser/parameterHintsWidget\":[\"\\u6B21\\u306E\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC \\u30D2\\u30F3\\u30C8\\u3092\\u8868\\u793A\\u3059\\u308B\\u305F\\u3081\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u524D\\u306E\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC \\u30D2\\u30F3\\u30C8\\u3092\\u8868\\u793A\\u3059\\u308B\\u305F\\u3081\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"{0}\\u3001\\u30D2\\u30F3\\u30C8\",\"\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC \\u30D2\\u30F3\\u30C8\\u5185\\u306E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u9805\\u76EE\\u306E\\u524D\\u666F\\u8272\\u3002\"],\"vs/editor/contrib/peekView/browser/peekView\":[\"\\u73FE\\u5728\\u306E\\u30B3\\u30FC\\u30C9 \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u30D7\\u30EC\\u30D3\\u30E5\\u30FC\\u5185\\u306B\\u57CB\\u3081\\u8FBC\\u307E\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u9589\\u3058\\u308B\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC\\u306E\\u30BF\\u30A4\\u30C8\\u30EB\\u9818\\u57DF\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC \\u30BF\\u30A4\\u30C8\\u30EB\\u306E\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC\\u306E\\u30BF\\u30A4\\u30C8\\u30EB\\u60C5\\u5831\\u306E\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC\\u306E\\u5883\\u754C\\u3068\\u77E2\\u5370\\u306E\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC\\u7D50\\u679C\\u30EA\\u30B9\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC\\u7D50\\u679C\\u30EA\\u30B9\\u30C8\\u306E\\u30E9\\u30A4\\u30F3 \\u30CE\\u30FC\\u30C9\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC\\u7D50\\u679C\\u30EA\\u30B9\\u30C8\\u306E\\u30D5\\u30A1\\u30A4\\u30EB \\u30CE\\u30FC\\u30C9\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC\\u7D50\\u679C\\u30EA\\u30B9\\u30C8\\u306E\\u9078\\u629E\\u6E08\\u307F\\u30A8\\u30F3\\u30C8\\u30EA\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC\\u7D50\\u679C\\u30EA\\u30B9\\u30C8\\u306E\\u9078\\u629E\\u6E08\\u307F\\u30A8\\u30F3\\u30C8\\u30EA\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u4F59\\u767D\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u306E\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC\\u7D50\\u679C\\u30EA\\u30B9\\u30C8\\u306E\\u4E00\\u81F4\\u3057\\u305F\\u5F37\\u8ABF\\u8868\\u793A\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u4E00\\u81F4\\u3057\\u305F\\u5F37\\u8ABF\\u8868\\u793A\\u8272\\u3002\",\"\\u30D4\\u30FC\\u30AF \\u30D3\\u30E5\\u30FC \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u4E00\\u81F4\\u3057\\u305F\\u5F37\\u8ABF\\u5883\\u754C\\u8272\\u3002\"],\"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\":[\"\\u6700\\u521D\\u306B\\u30C6\\u30AD\\u30B9\\u30C8 \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3092\\u958B\\u3044\\u3066\\u3001\\u884C\\u306B\\u79FB\\u52D5\\u3057\\u307E\\u3059\\u3002\",\"\\u884C {0}\\u3001\\u6587\\u5B57 {1} \\u306B\\u79FB\\u52D5\\u3057\\u307E\\u3059\\u3002\",\"{0} \\u884C\\u306B\\u79FB\\u52D5\\u3057\\u307E\\u3059\\u3002\",\"\\u73FE\\u5728\\u306E\\u884C: {0}\\u3001\\u6587\\u5B57: {1}\\u3002\\u79FB\\u52D5\\u5148\\u3068\\u306A\\u308B\\u30011 \\u304B\\u3089 {2} \\u307E\\u3067\\u306E\\u884C\\u756A\\u53F7\\u3092\\u5165\\u529B\\u3057\\u307E\\u3059\\u3002\",\"\\u73FE\\u5728\\u306E\\u884C: {0}\\u3001\\u6587\\u5B57: {1}\\u3002\\u79FB\\u52D5\\u5148\\u306E\\u884C\\u756A\\u53F7\\u3092\\u5165\\u529B\\u3057\\u307E\\u3059\\u3002\"],\"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\":[\"\\u30B7\\u30F3\\u30DC\\u30EB\\u306B\\u79FB\\u52D5\\u3059\\u308B\\u306B\\u306F\\u3001\\u307E\\u305A\\u30B7\\u30F3\\u30DC\\u30EB\\u60C5\\u5831\\u3092\\u542B\\u3080\\u30C6\\u30AD\\u30B9\\u30C8 \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3092\\u958B\\u304D\\u307E\\u3059\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30C6\\u30AD\\u30B9\\u30C8 \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u306F\\u3001\\u30B7\\u30F3\\u30DC\\u30EB\\u60C5\\u5831\\u306F\\u8868\\u793A\\u3055\\u308C\\u307E\\u305B\\u3093\\u3002\",\"\\u4E00\\u81F4\\u3059\\u308B\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30B7\\u30F3\\u30DC\\u30EB\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30B7\\u30F3\\u30DC\\u30EB\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u6A2A\\u306B\\u4E26\\u3079\\u3066\\u958B\\u304F\",\"\\u4E00\\u756A\\u4E0B\\u3067\\u958B\\u304F\",\"\\u30B7\\u30F3\\u30DC\\u30EB ({0})\",\"\\u30D7\\u30ED\\u30D1\\u30C6\\u30A3 ({0})\",\"\\u30E1\\u30BD\\u30C3\\u30C9 ({0})\",\"\\u95A2\\u6570 ({0})\",\"\\u30B3\\u30F3\\u30B9\\u30C8\\u30E9\\u30AF\\u30BF\\u30FC ({0})\",\"\\u5909\\u6570 ({0})\",\"\\u30AF\\u30E9\\u30B9 ({0})\",\"\\u69CB\\u9020\\u4F53 ({0})\",\"\\u30A4\\u30D9\\u30F3\\u30C8 ({0})\",\"\\u6F14\\u7B97\\u5B50 ({0})\",\"\\u30A4\\u30F3\\u30BF\\u30FC\\u30D5\\u30A7\\u30A4\\u30B9 ({0})\",\"\\u540D\\u524D\\u7A7A\\u9593 ({0})\",\"\\u30D1\\u30C3\\u30B1\\u30FC\\u30B8 ({0})\",\"\\u578B\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC ({0})\",\"\\u30E2\\u30B8\\u30E5\\u30FC\\u30EB ({0})\",\"\\u30D7\\u30ED\\u30D1\\u30C6\\u30A3 ({0})\",\"\\u5217\\u6319\\u578B ({0})\",\"\\u5217\\u6319\\u578B\\u30E1\\u30F3\\u30D0\\u30FC ({0})\",\"\\u6587\\u5B57\\u5217 ({0})\",\"\\u30D5\\u30A1\\u30A4\\u30EB ({0})\",\"\\u914D\\u5217 ({0})\",\"\\u6570\\u5024 ({0})\",\"\\u30D6\\u30FC\\u30EB\\u5024 ({0})\",\"\\u30AA\\u30D6\\u30B8\\u30A7\\u30AF\\u30C8 ({0})\",\"\\u30AD\\u30FC ({0})\",\"\\u30D5\\u30A3\\u30FC\\u30EB\\u30C9 ({0})\",\"\\u5B9A\\u6570 ({0})\"],\"vs/editor/contrib/readOnlyMessage/browser/contribution\":[\"\\u8AAD\\u307F\\u53D6\\u308A\\u5C02\\u7528\\u306E\\u5165\\u529B\\u3067\\u306F\\u7DE8\\u96C6\\u3067\\u304D\\u307E\\u305B\\u3093\",\"\\u8AAD\\u307F\\u53D6\\u308A\\u5C02\\u7528\\u306E\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306F\\u7DE8\\u96C6\\u3067\\u304D\\u307E\\u305B\\u3093\"],\"vs/editor/contrib/rename/browser/rename\":[\"\\u7D50\\u679C\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u540D\\u524D\\u5909\\u66F4\\u306E\\u5834\\u6240\\u3092\\u89E3\\u6C7A\\u3057\\u3088\\u3046\\u3068\\u3057\\u3066\\u4E0D\\u660E\\u306A\\u30A8\\u30E9\\u30FC\\u304C\\u767A\\u751F\\u3057\\u307E\\u3057\\u305F\",\"\\u540D\\u524D\\u3092 '{0}' \\u304B\\u3089 '{1}' \\u306B\\u5909\\u66F4\\u3057\\u3066\\u3044\\u307E\\u3059\",\"{0} \\u306E\\u540D\\u524D\\u3092 {1} \\u306B\\u5909\\u66F4\\u3057\\u3066\\u3044\\u307E\\u3059\",\"'{0}' \\u304B\\u3089 '{1}' \\u3078\\u306E\\u540D\\u524D\\u5909\\u66F4\\u304C\\u6B63\\u5E38\\u306B\\u5B8C\\u4E86\\u3057\\u307E\\u3057\\u305F\\u3002\\u6982\\u8981: {2}\",\"\\u540D\\u524D\\u306E\\u5909\\u66F4\\u3067\\u7DE8\\u96C6\\u3092\\u9069\\u7528\\u3067\\u304D\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\",\"\\u540D\\u524D\\u306E\\u5909\\u66F4\\u306B\\u3088\\u3063\\u3066\\u7DE8\\u96C6\\u306E\\u8A08\\u7B97\\u306B\\u5931\\u6557\\u3057\\u307E\\u3057\\u305F\",\"\\u30B7\\u30F3\\u30DC\\u30EB\\u306E\\u540D\\u524D\\u5909\\u66F4\",\"\\u540D\\u524D\\u3092\\u5909\\u66F4\\u3059\\u308B\\u524D\\u306B\\u5909\\u66F4\\u3092\\u30D7\\u30EC\\u30D3\\u30E5\\u30FC\\u3059\\u308B\\u6A5F\\u80FD\\u3092\\u6709\\u52B9\\u307E\\u305F\\u306F\\u7121\\u52B9\\u306B\\u3059\\u308B\"],\"vs/editor/contrib/rename/browser/renameInputField\":[\"\\u540D\\u524D\\u306E\\u5909\\u66F4\\u5165\\u529B\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u304C\\u8868\\u793A\\u3055\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u540D\\u524D\\u5909\\u66F4\\u5165\\u529B\\u3002\\u65B0\\u3057\\u3044\\u540D\\u524D\\u3092\\u5165\\u529B\\u3057\\u3001Enter \\u30AD\\u30FC\\u3092\\u62BC\\u3057\\u3066\\u30B3\\u30DF\\u30C3\\u30C8\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u540D\\u524D\\u3092\\u5909\\u66F4\\u3059\\u308B\\u306B\\u306F {0}\\u3001\\u30D7\\u30EC\\u30D3\\u30E5\\u30FC\\u3059\\u308B\\u306B\\u306F {1}\"],\"vs/editor/contrib/smartSelect/browser/smartSelect\":[\"\\u9078\\u629E\\u7BC4\\u56F2\\u3092\\u62E1\\u5F35\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u306E\\u5C55\\u958B(&&E)\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u3092\\u7E2E\\u5C0F\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u306E\\u7E2E\\u5C0F(&&S)\"],\"vs/editor/contrib/snippet/browser/snippetController2\":[\"\\u73FE\\u5728\\u306E\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u304C\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8 \\u30E2\\u30FC\\u30C9\\u3067\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8 \\u30E2\\u30FC\\u30C9\\u306E\\u3068\\u304D\\u306B\\u3001\\u6B21\\u306E\\u30BF\\u30D6\\u4F4D\\u7F6E\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8 \\u30E2\\u30FC\\u30C9\\u306E\\u3068\\u304D\\u306B\\u3001\\u524D\\u306E\\u30BF\\u30D6\\u4F4D\\u7F6E\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u6B21\\u306E\\u30D7\\u30EC\\u30FC\\u30B9\\u30DB\\u30EB\\u30C0\\u30FC\\u306B\\u79FB\\u52D5...\"],\"vs/editor/contrib/snippet/browser/snippetVariables\":[\"\\u65E5\\u66DC\\u65E5\",\"\\u6708\\u66DC\\u65E5\",\"\\u706B\\u66DC\\u65E5\",\"\\u6C34\\u66DC\\u65E5\",\"\\u6728\\u66DC\\u65E5\",\"\\u91D1\\u66DC\\u65E5\",\"\\u571F\\u66DC\\u65E5\",\"\\u65E5\",\"\\u6708\",\"\\u706B\",\"\\u6C34\",\"\\u6728\",\"\\u91D1\",\"\\u571F\",\"1 \\u6708\",\"2 \\u6708\",\"3 \\u6708\",\"4 \\u6708\",\"5 \\u6708\",\"6 \\u6708\",\"7 \\u6708\",\"8 \\u6708\",\"9 \\u6708\",\"10 \\u6708\",\"11 \\u6708\",\"12 \\u6708\",\"1 \\u6708\",\"2 \\u6708\",\"3 \\u6708\",\"4 \\u6708\",\"5 \\u6708\",\"6 \\u6708\",\"7 \\u6708\",\"8 \\u6708\",\"9 \\u6708\",\"10 \\u6708\",\"11 \\u6708\",\"12 \\u6708\"],\"vs/editor/contrib/stickyScroll/browser/stickyScrollActions\":[\"\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u306E\\u5207\\u308A\\u66FF\\u3048\",\"\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u306E\\u5207\\u308A\\u66FF\\u3048(&&T)\",\"\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\",\"\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB(&&)\",\"\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3078\\u306E\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\",\"\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3078\\u306E\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9(&F)\",\"\\u6B21\\u306E\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u884C\\u3092\\u9078\\u629E\",\"\\u524D\\u306E\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u884C\\u3092\\u9078\\u629E\",\"\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u884C\\u306B\\u79FB\\u52D5\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3092\\u9078\\u629E\"],\"vs/editor/contrib/suggest/browser/suggest\":[\"\\u5019\\u88DC\\u304C\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u3066\\u3044\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u5019\\u88DC\\u306E\\u8A73\\u7D30\\u304C\\u8868\\u793A\\u3055\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u9078\\u629E\\u3059\\u308B\\u8907\\u6570\\u306E\\u5019\\u88DC\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u73FE\\u5728\\u306E\\u5019\\u88DC\\u3092\\u633F\\u5165\\u3057\\u305F\\u3068\\u304D\\u3001\\u5909\\u66F4\\u3092\\u884C\\u3046\\u304B\\u3001\\u307E\\u305F\\u306F\\u65E2\\u306B\\u5165\\u529B\\u3057\\u305F\\u5185\\u5BB9\\u3092\\u3059\\u3079\\u3066\\u5165\\u529B\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\",\"Enter \\u30AD\\u30FC\\u3092\\u62BC\\u3057\\u305F\\u3068\\u304D\\u306B\\u5019\\u88DC\\u3092\\u633F\\u5165\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u73FE\\u5728\\u306E\\u5019\\u88DC\\u306B\\u633F\\u5165\\u3068\\u7F6E\\u63DB\\u306E\\u52D5\\u4F5C\\u304C\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u65E2\\u5B9A\\u306E\\u52D5\\u4F5C\\u304C\\u633F\\u5165\\u307E\\u305F\\u306F\\u7F6E\\u63DB\\u3067\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u73FE\\u5728\\u306E\\u5019\\u88DC\\u304B\\u3089\\u306E\\u8A73\\u7D30\\u306E\\u89E3\\u6C7A\\u3092\\u30B5\\u30DD\\u30FC\\u30C8\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\"],\"vs/editor/contrib/suggest/browser/suggestController\":[\"{1} \\u304C\\u8FFD\\u52A0\\u7DE8\\u96C6\\u3057\\u305F '{0}' \\u3092\\u53D7\\u3051\\u5165\\u308C\\u308B\",\"\\u5019\\u88DC\\u3092\\u30C8\\u30EA\\u30AC\\u30FC\",\"\\u633F\\u5165\",\"\\u633F\\u5165\",\"\\u7F6E\\u63DB\",\"\\u7F6E\\u63DB\",\"\\u633F\\u5165\",\"\\u8868\\u793A\\u3092\\u6E1B\\u3089\\u3059\",\"\\u3055\\u3089\\u306B\\u8868\\u793A\",\"\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u30B5\\u30A4\\u30BA\\u3092\\u30EA\\u30BB\\u30C3\\u30C8\"],\"vs/editor/contrib/suggest/browser/suggestWidget\":[\"\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u5019\\u88DC\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u5883\\u754C\\u7DDA\\u8272\\u3002\",\"\\u5019\\u88DC\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u5019\\u88DC\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u5185\\u3067\\u9078\\u629E\\u6E08\\u307F\\u5165\\u529B\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u5019\\u88DC\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u5185\\u3067\\u9078\\u629E\\u6E08\\u307F\\u5165\\u529B\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u524D\\u666F\\u8272\\u3002\",\"\\u5019\\u88DC\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u5185\\u3067\\u9078\\u629E\\u6E08\\u307F\\u30A8\\u30F3\\u30C8\\u30EA\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u5185\\u3067\\u4E00\\u81F4\\u3057\\u305F\\u30CF\\u30A4\\u30E9\\u30A4\\u30C8\\u306E\\u8272\\u3002\",\"\\u9805\\u76EE\\u304C\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u306B\\u3001\\u5019\\u88DC\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3067\\u306E\\u4E00\\u81F4\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u306E\\u8272\\u3067\\u3059\\u3002\",\"\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u72B6\\u614B\\u306E\\u63D0\\u6848\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u8AAD\\u307F\\u8FBC\\u3093\\u3067\\u3044\\u307E\\u3059...\",\"\\u5019\\u88DC\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u63D0\\u6848\",\"{0} {1}\\u3001{2}\",\"{0} {1}\",\"{0}\\u3001 {1}\",\"{0}\\u3001\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8: {1}\"],\"vs/editor/contrib/suggest/browser/suggestWidgetDetails\":[\"\\u9589\\u3058\\u308B\",\"\\u8AAD\\u307F\\u8FBC\\u3093\\u3067\\u3044\\u307E\\u3059...\"],\"vs/editor/contrib/suggest/browser/suggestWidgetRenderer\":[\"\\u63D0\\u6848\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u8A73\\u7D30\\u60C5\\u5831\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u8A73\\u7D30\\u3092\\u53C2\\u7167\"],\"vs/editor/contrib/suggest/browser/suggestWidgetStatus\":[\"{0} ({1})\"],\"vs/editor/contrib/symbolIcons/browser/symbolIcons\":[\"\\u914D\\u5217\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30D6\\u30FC\\u30EB\\u5024\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30AF\\u30E9\\u30B9\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u8272\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u5B9A\\u6570\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30B3\\u30F3\\u30B9\\u30C8\\u30E9\\u30AF\\u30BF\\u30FC\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u5217\\u6319\\u5B50\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u5217\\u6319\\u5B50\\u30E1\\u30F3\\u30D0\\u30FC\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30A4\\u30D9\\u30F3\\u30C8\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A3\\u30FC\\u30EB\\u30C9\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A1\\u30A4\\u30EB\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A9\\u30EB\\u30C0\\u30FC\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u95A2\\u6570\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30A4\\u30F3\\u30BF\\u30FC\\u30D5\\u30A7\\u30A4\\u30B9\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30AD\\u30FC\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30AD\\u30FC\\u30EF\\u30FC\\u30C9\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30E1\\u30BD\\u30C3\\u30C9\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30E2\\u30B8\\u30E5\\u30FC\\u30EB\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u540D\\u524D\\u7A7A\\u9593\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"Null \\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6570\\u5024\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30AA\\u30D6\\u30B8\\u30A7\\u30AF\\u30C8\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6F14\\u7B97\\u5B50\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30D1\\u30C3\\u30B1\\u30FC\\u30B8\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30D7\\u30ED\\u30D1\\u30C6\\u30A3\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u53C2\\u7167\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u6587\\u5B57\\u5217\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u69CB\\u9020\\u4F53\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30C6\\u30AD\\u30B9\\u30C8\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u5358\\u4F4D\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u5909\\u6570\\u8A18\\u53F7\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u308C\\u3089\\u306E\\u8A18\\u53F7\\u306F\\u3001\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u3001\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u3001\\u304A\\u3088\\u3073\\u5019\\u88DC\\u306E\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\"],\"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\":[\"Tab \\u30AD\\u30FC\\u3092\\u5207\\u308A\\u66FF\\u3048\\u308B\\u3068\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u79FB\\u52D5\\u3057\\u307E\\u3059\",\"Tab \\u30AD\\u30FC\\u3092\\u62BC\\u3059\\u3068\\u3001\\u6B21\\u306E\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u53EF\\u80FD\\u306A\\u8981\\u7D20\\u306B\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3092\\u79FB\\u52D5\\u3057\\u307E\\u3059\",\"Tab \\u30AD\\u30FC\\u3092\\u62BC\\u3059\\u3068\\u3001\\u30BF\\u30D6\\u6587\\u5B57\\u304C\\u633F\\u5165\\u3055\\u308C\\u307E\\u3059\"],\"vs/editor/contrib/tokenization/browser/tokenization\":[\"\\u958B\\u767A\\u8005: \\u30C8\\u30FC\\u30AF\\u30F3\\u518D\\u4F5C\\u6210\\u306E\\u5F37\\u5236\"],\"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\":[\"\\u62E1\\u5F35\\u6A5F\\u80FD\\u306E\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u8B66\\u544A\\u30E1\\u30C3\\u30BB\\u30FC\\u30B8\\u3068\\u5171\\u306B\\u8868\\u793A\\u3055\\u308C\\u308B\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u3053\\u306E\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u306B\\u306F\\u3001\\u57FA\\u672C ASCII \\u5916\\u306E Unicode \\u6587\\u5B57\\u304C\\u591A\\u6570\\u542B\\u307E\\u308C\\u3066\\u3044\\u307E\\u3059\",\"\\u3053\\u306E\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u306B\\u306F\\u307E\\u304E\\u3089\\u308F\\u3057\\u3044 Unicode \\u6587\\u5B57\\u304C\\u591A\\u6570\\u542B\\u307E\\u308C\\u3066\\u3044\\u307E\\u3059\",\"\\u3053\\u306E\\u30C9\\u30AD\\u30E5\\u30E1\\u30F3\\u30C8\\u306B\\u306F\\u4E0D\\u53EF\\u8996\\u306E Unicode \\u6587\\u5B57\\u304C\\u591A\\u6570\\u542B\\u307E\\u308C\\u3066\\u3044\\u307E\\u3059\",\"\\u6587\\u5B57 {0} \\u306F\\u3001\\u30BD\\u30FC\\u30B9 \\u30B3\\u30FC\\u30C9\\u3067\\u3088\\u308A\\u4E00\\u822C\\u7684\\u306A ASCII \\u6587\\u5B57 {1} \\u3068\\u6DF7\\u540C\\u3055\\u308C\\u308B\\u53EF\\u80FD\\u6027\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u6587\\u5B57 {0}\\u306F\\u3001\\u30BD\\u30FC\\u30B9 \\u30B3\\u30FC\\u30C9\\u3067\\u3088\\u308A\\u4E00\\u822C\\u7684\\u306A\\u6587\\u5B57{1}\\u3068\\u6DF7\\u540C\\u3055\\u308C\\u308B\\u53EF\\u80FD\\u6027\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u6587\\u5B57 {0}\\u306F\\u975E\\u8868\\u793A\\u3067\\u3059\\u3002\",\"\\u6587\\u5B57 {0} \\u306F\\u57FA\\u672C ASCII \\u6587\\u5B57\\u3067\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u8A2D\\u5B9A\\u306E\\u8ABF\\u6574\",\"\\u30B3\\u30E1\\u30F3\\u30C8\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u3092\\u7121\\u52B9\\u306B\\u3059\\u308B\",\"\\u30B3\\u30E1\\u30F3\\u30C8\\u306E\\u6587\\u5B57\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u3092\\u7121\\u52B9\\u306B\\u3059\\u308B\",\"\\u6587\\u5B57\\u5217\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u3092\\u7121\\u52B9\\u306B\\u3059\\u308B\",\"\\u6587\\u5B57\\u5217\\u306E\\u6587\\u5B57\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u3092\\u7121\\u52B9\\u306B\\u3059\\u308B\",\"\\u307E\\u304E\\u3089\\u308F\\u3057\\u3044\\u6587\\u5B57\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u3092\\u7121\\u52B9\\u306B\\u3059\\u308B\",\"\\u307E\\u304E\\u3089\\u308F\\u3057\\u3044\\u6587\\u5B57\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u3092\\u7121\\u52B9\\u306B\\u3059\\u308B\",\"\\u4E0D\\u53EF\\u8996\\u6587\\u5B57\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u3092\\u7121\\u52B9\\u306B\\u3059\\u308B\",\"\\u4E0D\\u53EF\\u8996\\u306E\\u6587\\u5B57\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u3092\\u7121\\u52B9\\u306B\\u3059\\u308B\",\"\\u975E ASCII \\u6587\\u5B57\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u3092\\u7121\\u52B9\\u306B\\u3059\\u308B\",\"\\u57FA\\u672C ASCII \\u4EE5\\u5916\\u306E\\u6587\\u5B57\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u3092\\u7121\\u52B9\\u306B\\u3059\\u308B\",\"\\u9664\\u5916\\u30AA\\u30D7\\u30B7\\u30E7\\u30F3\\u306E\\u8868\\u793A\",\"{0} (\\u4E0D\\u53EF\\u8996\\u306E\\u6587\\u5B57) \\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u304B\\u3089\\u9664\\u5916\\u3059\\u308B\",\"\\u5F37\\u8ABF\\u8868\\u793A\\u304B\\u3089 {0} \\u3092\\u9664\\u5916\\u3057\\u307E\\u3059\",'\\u8A00\\u8A9E \"{0}\" \\u3067\\u3088\\u308A\\u4E00\\u822C\\u7684\\u306A Unicode \\u6587\\u5B57\\u3092\\u8A31\\u53EF\\u3057\\u307E\\u3059\\u3002',\"Unicode \\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u30AA\\u30D7\\u30B7\\u30E7\\u30F3\\u3092\\u69CB\\u6210\\u3059\\u308B\"],\"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\":[\"\\u666E\\u901A\\u3067\\u306F\\u306A\\u3044\\u884C\\u7D42\\u7AEF\\u8A18\\u53F7\",\"\\u666E\\u901A\\u3067\\u306F\\u306A\\u3044\\u884C\\u7D42\\u7AEF\\u8A18\\u53F7\\u304C\\u691C\\u51FA\\u3055\\u308C\\u307E\\u3057\\u305F\",`\\u3053\\u306E\\u30D5\\u30A1\\u30A4\\u30EB '{0}' \\u306B\\u306F\\u3001\\u884C\\u533A\\u5207\\u308A\\u6587\\u5B57 (LS) \\u3084\\u6BB5\\u843D\\u533A\\u5207\\u308A\\u8A18\\u53F7 (PS) \\u306A\\u3069\\u306E\\u7279\\u6B8A\\u306A\\u884C\\u306E\\u7D42\\u7AEF\\u6587\\u5B57\\u304C 1 \\u3064\\u4EE5\\u4E0A\\u542B\\u307E\\u308C\\u3066\\u3044\\u307E\\u3059\\u3002\\r\n\\r\n\\u305D\\u308C\\u3089\\u3092\\u30D5\\u30A1\\u30A4\\u30EB\\u304B\\u3089\\u524A\\u9664\\u3059\\u308B\\u3053\\u3068\\u3092\\u304A\\u52E7\\u3081\\u3057\\u307E\\u3059\\u3002\\u3053\\u308C\\u306F 'editor.unusualLineTerminators' \\u3092\\u4F7F\\u7528\\u3057\\u3066\\u69CB\\u6210\\u3067\\u304D\\u307E\\u3059\\u3002`,\"\\u7279\\u6B8A\\u306A\\u884C\\u306E\\u7D42\\u7AEF\\u8A18\\u53F7\\u3092\\u524A\\u9664\\u3059\\u308B(&&R)\",\"\\u7121\\u8996\\u3059\\u308B\"],\"vs/editor/contrib/wordHighlighter/browser/highlightDecorations\":[\"\\u5909\\u6570\\u306E\\u8AAD\\u307F\\u53D6\\u308A\\u306A\\u3069\\u3001\\u8AAD\\u307F\\u53D6\\u308A\\u30A2\\u30AF\\u30BB\\u30B9\\u4E2D\\u306E\\u30B7\\u30F3\\u30DC\\u30EB\\u306E\\u80CC\\u666F\\u8272\\u3002\\u4E0B\\u306B\\u3042\\u308B\\u88C5\\u98FE\\u3092\\u96A0\\u3055\\u306A\\u3044\\u305F\\u3081\\u306B\\u3001\\u8272\\u306F\\u4E0D\\u900F\\u904E\\u3067\\u3042\\u3063\\u3066\\u306F\\u306A\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u5909\\u6570\\u3078\\u306E\\u66F8\\u304D\\u8FBC\\u307F\\u306A\\u3069\\u3001\\u66F8\\u304D\\u8FBC\\u307F\\u30A2\\u30AF\\u30BB\\u30B9\\u4E2D\\u306E\\u30B7\\u30F3\\u30DC\\u30EB\\u80CC\\u666F\\u8272\\u3002\\u4E0B\\u306B\\u3042\\u308B\\u88C5\\u98FE\\u3092\\u96A0\\u3055\\u306A\\u3044\\u305F\\u3081\\u306B\\u3001\\u8272\\u306F\\u4E0D\\u900F\\u904E\\u3067\\u3042\\u3063\\u3066\\u306F\\u306A\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u8A18\\u53F7\\u306E\\u30C6\\u30AD\\u30B9\\u30C8\\u51FA\\u73FE\\u306E\\u80CC\\u666F\\u8272\\u3002\\u57FA\\u306B\\u306A\\u308B\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u306B\\u3001\\u3053\\u306E\\u8272\\u3092\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u5909\\u6570\\u306E\\u8AAD\\u307F\\u53D6\\u308A\\u306A\\u3069\\u8AAD\\u307F\\u53D6\\u308A\\u30A2\\u30AF\\u30BB\\u30B9\\u4E2D\\u306E\\u30B7\\u30F3\\u30DC\\u30EB\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u5909\\u6570\\u3078\\u306E\\u66F8\\u304D\\u8FBC\\u307F\\u306A\\u3069\\u66F8\\u304D\\u8FBC\\u307F\\u30A2\\u30AF\\u30BB\\u30B9\\u4E2D\\u306E\\u30B7\\u30F3\\u30DC\\u30EB\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u8A18\\u53F7\\u306E\\u30C6\\u30AD\\u30B9\\u30C8\\u51FA\\u73FE\\u7B87\\u6240\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u30B7\\u30F3\\u30DC\\u30EB\\u306B\\u3088\\u3063\\u3066\\u5F37\\u8ABF\\u8868\\u793A\\u3055\\u308C\\u308B\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC\\u306E\\u8272\\u3002\\u30DE\\u30FC\\u30AB\\u30FC\\u306E\\u8272\\u306F\\u3001\\u57FA\\u306B\\u306A\\u308B\\u88C5\\u98FE\\u3092\\u96A0\\u3055\\u306A\\u3044\\u3088\\u3046\\u306B\\u4E0D\\u900F\\u660E\\u4EE5\\u5916\\u306B\\u3057\\u307E\\u3059\\u3002\",\"\\u66F8\\u304D\\u8FBC\\u307F\\u30A2\\u30AF\\u30BB\\u30B9 \\u30B7\\u30F3\\u30DC\\u30EB\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u306E\\u30DE\\u30FC\\u30AB\\u30FC\\u8272\\u3002\\u4E0B\\u306B\\u3042\\u308B\\u88C5\\u98FE\\u3092\\u96A0\\u3055\\u306A\\u3044\\u305F\\u3081\\u306B\\u3001\\u8272\\u306F\\u4E0D\\u900F\\u904E\\u3067\\u3042\\u3063\\u3066\\u306F\\u306A\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u8A18\\u53F7\\u306E\\u30C6\\u30AD\\u30B9\\u30C8\\u51FA\\u73FE\\u306E\\u6982\\u8981\\u30EB\\u30FC\\u30EB \\u30DE\\u30FC\\u30AB\\u30FC\\u306E\\u8272\\u3002\\u57FA\\u306B\\u306A\\u308B\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u306B\\u3001\\u3053\\u306E\\u8272\\u3092\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\"],\"vs/editor/contrib/wordHighlighter/browser/wordHighlighter\":[\"\\u6B21\\u306E\\u30B7\\u30F3\\u30DC\\u30EB \\u30CF\\u30A4\\u30E9\\u30A4\\u30C8\\u306B\\u79FB\\u52D5\",\"\\u524D\\u306E\\u30B7\\u30F3\\u30DC\\u30EB \\u30CF\\u30A4\\u30E9\\u30A4\\u30C8\\u306B\\u79FB\\u52D5\",\"\\u30B7\\u30F3\\u30DC\\u30EB \\u30CF\\u30A4\\u30E9\\u30A4\\u30C8\\u3092\\u30C8\\u30EA\\u30AC\\u30FC\"],\"vs/editor/contrib/wordOperations/browser/wordOperations\":[\"\\u5358\\u8A9E\\u306E\\u524A\\u9664\"],\"vs/platform/action/common/actionCommonCategories\":[\"\\u8868\\u793A\",\"\\u30D8\\u30EB\\u30D7\",\"\\u30C6\\u30B9\\u30C8\",\"\\u30D5\\u30A1\\u30A4\\u30EB\",\"\\u57FA\\u672C\\u8A2D\\u5B9A\",\"\\u958B\\u767A\\u8005\"],\"vs/platform/actionWidget/browser/actionList\":[\"{0} \\u3067\\u9069\\u7528\\u3059\\u308B\\u3001{1} \\u3067\\u30D7\\u30EC\\u30D3\\u30E5\\u30FC\\u3059\\u308B\",\"\\u9069\\u7528\\u3059\\u308B\\u306B\\u306F {0}\",\"{0}\\u3001\\u7121\\u52B9\\u306B\\u306A\\u3063\\u305F\\u7406\\u7531: {1}\",\"\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\"],\"vs/platform/actionWidget/browser/actionWidget\":[\"Background color for toggled action items in action bar.\",\"\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u4E00\\u89A7\\u304C\\u8868\\u793A\\u3055\\u308C\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u3092\\u975E\\u8868\\u793A\\u306B\\u3059\\u308B\",\"\\u524D\\u306E\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u3092\\u9078\\u629E\",\"\\u6B21\\u306E\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u3092\\u9078\\u629E\",\"\\u9078\\u629E\\u3057\\u305F\\u64CD\\u4F5C\\u3092\\u627F\\u8AFE\",\"\\u9078\\u629E\\u3057\\u305F\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306E\\u30D7\\u30EC\\u30D3\\u30E5\\u30FC\"],\"vs/platform/actions/browser/menuEntryActionViewItem\":[\"{0} ({1})\",\"{0} ({1})\",`{0}\\r\n[{1}] {2}`],\"vs/platform/actions/browser/toolbar\":[\"\\u975E\\u8868\\u793A\",\"\\u30E1\\u30CB\\u30E5\\u30FC\\u306E\\u30EA\\u30BB\\u30C3\\u30C8\"],\"vs/platform/actions/common/menuService\":[\"'{0}' \\u306E\\u975E\\u8868\\u793A\"],\"vs/platform/audioCues/browser/audioCueService\":[\"\\u884C\\u306E\\u30A8\\u30E9\\u30FC\",\"\\u884C\\u306E\\u8B66\\u544A\",\"\\u884C\\u306E\\u6298\\u308A\\u305F\\u305F\\u307E\\u308C\\u305F\\u9762\",\"\\u884C\\u306E\\u30D6\\u30EC\\u30FC\\u30AF\\u30DD\\u30A4\\u30F3\\u30C8\",\"\\u884C\\u306E\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3\\u5019\\u88DC\",\"\\u30BF\\u30FC\\u30DF\\u30CA\\u30EB \\u30AF\\u30A4\\u30C3\\u30AF\\u4FEE\\u6B63\",\"\\u30D6\\u30EC\\u30FC\\u30AF\\u30DD\\u30A4\\u30F3\\u30C8\\u3067\\u30C7\\u30D0\\u30C3\\u30AC\\u30FC\\u304C\\u505C\\u6B62\\u3057\\u307E\\u3057\\u305F\",\"\\u884C\\u306B\\u30A4\\u30F3\\u30EC\\u30A4 \\u30D2\\u30F3\\u30C8\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\",\"\\u30BF\\u30B9\\u30AF\\u304C\\u5B8C\\u4E86\\u3057\\u307E\\u3057\\u305F\",\"\\u30BF\\u30B9\\u30AF\\u304C\\u5931\\u6557\\u3057\\u307E\\u3057\\u305F\",\"\\u30BF\\u30FC\\u30DF\\u30CA\\u30EB \\u30B3\\u30DE\\u30F3\\u30C9\\u304C\\u5931\\u6557\\u3057\\u307E\\u3057\\u305F\",\"\\u30BF\\u30FC\\u30DF\\u30CA\\u30EB \\u30D9\\u30EB\",\"\\u30CE\\u30FC\\u30C8\\u30D6\\u30C3\\u30AF \\u30BB\\u30EB\\u304C\\u5B8C\\u4E86\\u3057\\u307E\\u3057\\u305F\",\"\\u30CE\\u30FC\\u30C8\\u30D6\\u30C3\\u30AF \\u30BB\\u30EB\\u304C\\u5931\\u6557\\u3057\\u307E\\u3057\\u305F\",\"\\u5DEE\\u5206\\u884C\\u304C\\u633F\\u5165\\u3055\\u308C\\u307E\\u3057\\u305F\",\"\\u5DEE\\u5206\\u884C\\u304C\\u524A\\u9664\\u3055\\u308C\\u307E\\u3057\\u305F\",\"\\u5909\\u66F4\\u3055\\u308C\\u305F\\u5DEE\\u5206\\u884C\",\"\\u30C1\\u30E3\\u30C3\\u30C8\\u8981\\u6C42\\u304C\\u9001\\u4FE1\\u3055\\u308C\\u307E\\u3057\\u305F\",\"\\u30C1\\u30E3\\u30C3\\u30C8\\u5FDC\\u7B54\\u3092\\u53D7\\u4FE1\\u3057\\u307E\\u3057\\u305F\",\"\\u30C1\\u30E3\\u30C3\\u30C8\\u306E\\u5FDC\\u7B54\\u3092\\u4FDD\\u7559\\u4E2D\"],\"vs/platform/configuration/common/configurationRegistry\":[\"\\u65E2\\u5B9A\\u306E\\u8A00\\u8A9E\\u69CB\\u6210\\u306E\\u30AA\\u30FC\\u30D0\\u30FC\\u30E9\\u30A4\\u30C9\",\"{0} \\u8A00\\u8A9E\\u304C\\u512A\\u5148\\u3055\\u308C\\u308B\\u8A2D\\u5B9A\\u3092\\u69CB\\u6210\\u3057\\u307E\\u3059\\u3002\",\"\\u8A00\\u8A9E\\u306B\\u5BFE\\u3057\\u3066\\u4E0A\\u66F8\\u304D\\u3055\\u308C\\u308B\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u8A2D\\u5B9A\\u3092\\u69CB\\u6210\\u3057\\u307E\\u3059\\u3002\",\"\\u3053\\u306E\\u8A2D\\u5B9A\\u3067\\u306F\\u3001\\u8A00\\u8A9E\\u3054\\u3068\\u306E\\u69CB\\u6210\\u306F\\u30B5\\u30DD\\u30FC\\u30C8\\u3055\\u308C\\u3066\\u3044\\u307E\\u305B\\u3093\\u3002\",\"\\u8A00\\u8A9E\\u306B\\u5BFE\\u3057\\u3066\\u4E0A\\u66F8\\u304D\\u3055\\u308C\\u308B\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u8A2D\\u5B9A\\u3092\\u69CB\\u6210\\u3057\\u307E\\u3059\\u3002\",\"\\u3053\\u306E\\u8A2D\\u5B9A\\u3067\\u306F\\u3001\\u8A00\\u8A9E\\u3054\\u3068\\u306E\\u69CB\\u6210\\u306F\\u30B5\\u30DD\\u30FC\\u30C8\\u3055\\u308C\\u3066\\u3044\\u307E\\u305B\\u3093\\u3002\",\"\\u7A7A\\u306E\\u30D7\\u30ED\\u30D1\\u30C6\\u30A3\\u306F\\u767B\\u9332\\u3067\\u304D\\u307E\\u305B\\u3093\",\"'{0}' \\u3092\\u767B\\u9332\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\\u3053\\u308C\\u306F\\u3001\\u8A00\\u8A9E\\u56FA\\u6709\\u306E\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u8A2D\\u5B9A\\u3092\\u8A18\\u8FF0\\u3059\\u308B\\u30D7\\u30ED\\u30D1\\u30C6\\u30A3 \\u30D1\\u30BF\\u30FC\\u30F3 '\\\\\\\\[.*\\\\\\\\]$' \\u306B\\u4E00\\u81F4\\u3057\\u3066\\u3044\\u307E\\u3059\\u3002'configurationDefaults' \\u30B3\\u30F3\\u30C8\\u30EA\\u30D3\\u30E5\\u30FC\\u30B7\\u30E7\\u30F3\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"'{0}' \\u3092\\u767B\\u9332\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\\u3053\\u306E\\u30D7\\u30ED\\u30D1\\u30C6\\u30A3\\u306F\\u65E2\\u306B\\u767B\\u9332\\u3055\\u308C\\u3066\\u3044\\u307E\\u3059\\u3002\",\"'{0}' \\u3092\\u767B\\u9332\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\\u95A2\\u9023\\u4ED8\\u3051\\u3089\\u308C\\u305F\\u30DD\\u30EA\\u30B7\\u30FC {1} \\u306F\\u65E2\\u306B {2} \\u306B\\u767B\\u9332\\u3055\\u308C\\u3066\\u3044\\u307E\\u3059\\u3002\"],\"vs/platform/contextkey/browser/contextKeyService\":[\"\\u30B3\\u30F3\\u30C6\\u30AD\\u30B9\\u30C8 \\u30AD\\u30FC\\u306B\\u95A2\\u3059\\u308B\\u60C5\\u5831\\u3092\\u8FD4\\u3059\\u30B3\\u30DE\\u30F3\\u30C9\"],\"vs/platform/contextkey/common/contextkey\":[\"\\u7A7A\\u306E\\u30B3\\u30F3\\u30C6\\u30AD\\u30B9\\u30C8 \\u30AD\\u30FC\\u5F0F\",\"\\u5F0F\\u3092\\u66F8\\u304D\\u5FD8\\u308C\\u307E\\u3057\\u305F\\u304B? 'false' \\u307E\\u305F\\u306F 'true' \\u3092\\u6307\\u5B9A\\u3059\\u308B\\u3068\\u3001\\u305D\\u308C\\u305E\\u308C\\u5E38\\u306B false \\u307E\\u305F\\u306F true \\u3068\\u8A55\\u4FA1\\u3067\\u304D\\u307E\\u3059\\u3002\",\"'not' \\u306E\\u5F8C\\u306B 'in' \\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u7D42\\u308F\\u308A\\u304B\\u3063\\u3053 ')'\",\"\\u4E88\\u671F\\u3057\\u306A\\u3044\\u30C8\\u30FC\\u30AF\\u30F3\",\"\\u30C8\\u30FC\\u30AF\\u30F3\\u306E\\u524D\\u306B && \\u307E\\u305F\\u306F || \\u3092\\u6307\\u5B9A\\u3057\\u5FD8\\u308C\\u307E\\u3057\\u305F\\u304B?\",\"\\u4E88\\u671F\\u3057\\u306A\\u3044\\u5F0F\\u306E\\u7D42\\u308F\\u308A\",\"\\u30B3\\u30F3\\u30C6\\u30AD\\u30B9\\u30C8 \\u30AD\\u30FC\\u3092\\u6307\\u5B9A\\u3057\\u5FD8\\u308C\\u307E\\u3057\\u305F\\u304B?\",`\\u671F\\u5F85\\u5024: {0}\\r\n\\u53D7\\u53D6\\u6E08\\u307F: '{1}'\\u3002`],\"vs/platform/contextkey/common/contextkeys\":[\"\\u30AA\\u30DA\\u30EC\\u30FC\\u30C6\\u30A3\\u30F3\\u30B0 \\u30B7\\u30B9\\u30C6\\u30E0\\u304C macOS \\u3067\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30AA\\u30DA\\u30EC\\u30FC\\u30C6\\u30A3\\u30F3\\u30B0 \\u30B7\\u30B9\\u30C6\\u30E0\\u304C Linux \\u3067\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30AA\\u30DA\\u30EC\\u30FC\\u30C6\\u30A3\\u30F3\\u30B0 \\u30B7\\u30B9\\u30C6\\u30E0\\u304C Windows \\u3067\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30D7\\u30E9\\u30C3\\u30C8\\u30D5\\u30A9\\u30FC\\u30E0\\u304C Web \\u30D6\\u30E9\\u30A6\\u30B6\\u30FC\\u3067\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30AA\\u30DA\\u30EC\\u30FC\\u30C6\\u30A3\\u30F3\\u30B0 \\u30B7\\u30B9\\u30C6\\u30E0\\u304C\\u975E\\u30D6\\u30E9\\u30A6\\u30B6\\u30FC \\u30D7\\u30E9\\u30C3\\u30C8\\u30D5\\u30A9\\u30FC\\u30E0\\u4E0A\\u306E macOS \\u3067\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30AA\\u30DA\\u30EC\\u30FC\\u30C6\\u30A3\\u30F3\\u30B0 \\u30B7\\u30B9\\u30C6\\u30E0\\u304C iOS \\u3067\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"\\u30D7\\u30E9\\u30C3\\u30C8\\u30D5\\u30A9\\u30FC\\u30E0\\u304C\\u30E2\\u30D0\\u30A4\\u30EB Web \\u30D6\\u30E9\\u30A6\\u30B6\\u30FC\\u3067\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\",\"VS Code \\u306E\\u54C1\\u8CEA\\u306E\\u7A2E\\u985E\",\"\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9\\u306E\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u5165\\u529B\\u30DC\\u30C3\\u30AF\\u30B9\\u5185\\u306B\\u3042\\u308B\\u304B\\u3069\\u3046\\u304B\"],\"vs/platform/contextkey/common/scanner\":[\"{0} \\u3092\\u610F\\u56F3\\u3057\\u3066\\u3044\\u307E\\u3057\\u305F\\u304B?\",\"{0} \\u307E\\u305F\\u306F {1} \\u3092\\u610F\\u56F3\\u3057\\u3066\\u3044\\u307E\\u3057\\u305F\\u304B?\",\"{0}\\u3001{1}\\u3001\\u307E\\u305F\\u306F {2} \\u3092\\u610F\\u56F3\\u3057\\u3066\\u3044\\u307E\\u3057\\u305F\\u304B?\",\"\\u898B\\u7A4D\\u3082\\u308A\\u3092\\u958B\\u3044\\u305F\\u308A\\u9589\\u3058\\u305F\\u308A\\u3057\\u5FD8\\u308C\\u307E\\u3057\\u305F\\u304B?\",\"'/' (\\u30B9\\u30E9\\u30C3\\u30B7\\u30E5) \\u6587\\u5B57\\u3092\\u30A8\\u30B9\\u30B1\\u30FC\\u30D7\\u3057\\u5FD8\\u308C\\u307E\\u3057\\u305F\\u304B? \\u30A8\\u30B9\\u30B1\\u30FC\\u30D7\\u3059\\u308B\\u524D\\u306B '\\\\\\\\/' \\u306A\\u3069\\u306E 2 \\u3064\\u306E\\u5186\\u8A18\\u53F7\\u3092\\u6307\\u5B9A\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\"],\"vs/platform/history/browser/contextScopedHistoryWidget\":[\"\\u5019\\u88DC\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\"],\"vs/platform/keybinding/common/abstractKeybindingService\":[\"({0}) \\u304C\\u6E21\\u3055\\u308C\\u307E\\u3057\\u305F\\u30022 \\u756A\\u76EE\\u306E\\u30AD\\u30FC\\u3092\\u5F85\\u3063\\u3066\\u3044\\u307E\\u3059...\",\"({0}) \\u304C\\u6E21\\u3055\\u308C\\u307E\\u3057\\u305F\\u3002\\u6B21\\u306E\\u30AD\\u30FC\\u3092\\u5F85\\u3063\\u3066\\u3044\\u307E\\u3059...\",\"\\u30AD\\u30FC\\u306E\\u7D44\\u307F\\u5408\\u308F\\u305B ({0}\\u3001{1}) \\u306F\\u30B3\\u30DE\\u30F3\\u30C9\\u3067\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30AD\\u30FC\\u306E\\u7D44\\u307F\\u5408\\u308F\\u305B ({0}\\u3001{1}) \\u306F\\u30B3\\u30DE\\u30F3\\u30C9\\u3067\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\"],\"vs/platform/list/browser/listService\":[\"\\u30EF\\u30FC\\u30AF\\u30D9\\u30F3\\u30C1\",\"Windows \\u304A\\u3088\\u3073 Linux \\u4E0A\\u306E `Control` \\u30AD\\u30FC\\u3068 macOS \\u4E0A\\u306E `Command` \\u30AD\\u30FC\\u306B\\u5272\\u308A\\u5F53\\u3066\\u307E\\u3059\\u3002\",\"Windows \\u304A\\u3088\\u3073 Linux \\u4E0A\\u306E `Alt` \\u30AD\\u30FC\\u3068 macOS \\u4E0A\\u306E `Option` \\u30AD\\u30FC\\u306B\\u5272\\u308A\\u5F53\\u3066\\u307E\\u3059\\u3002\",\"\\u30DE\\u30A6\\u30B9\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u9805\\u76EE\\u3092\\u8907\\u6570\\u9078\\u629E\\u3059\\u308B\\u3068\\u304D\\u306B\\u4F7F\\u7528\\u3059\\u308B\\u4FEE\\u98FE\\u30AD\\u30FC\\u3067\\u3059 (\\u305F\\u3068\\u3048\\u3070\\u3001\\u30A8\\u30AF\\u30B9\\u30D7\\u30ED\\u30FC\\u30E9\\u30FC\\u3067\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3068 scm \\u30D3\\u30E5\\u30FC\\u3092\\u958B\\u304F\\u306A\\u3069)\\u3002'\\u6A2A\\u306B\\u4E26\\u3079\\u3066\\u958B\\u304F' \\u30DE\\u30A6\\u30B9 \\u30B8\\u30A7\\u30B9\\u30C1\\u30E3\\u30FC (\\u304C\\u30B5\\u30DD\\u30FC\\u30C8\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408) \\u306F\\u3001\\u8907\\u6570\\u9078\\u629E\\u306E\\u4FEE\\u98FE\\u30AD\\u30FC\\u3068\\u7AF6\\u5408\\u3057\\u306A\\u3044\\u3088\\u3046\\u306B\\u8ABF\\u6574\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30DE\\u30A6\\u30B9\\u3092\\u4F7F\\u7528\\u3057\\u3066\\u3001\\u30C4\\u30EA\\u30FC\\u3068\\u30EA\\u30B9\\u30C8\\u5185\\u306E\\u9805\\u76EE\\u3092\\u958B\\u304F\\u65B9\\u6CD5\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059 (\\u30B5\\u30DD\\u30FC\\u30C8\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408)\\u3002\\u9069\\u7528\\u3067\\u304D\\u306A\\u3044\\u5834\\u5408\\u3001\\u4E00\\u90E8\\u306E\\u30C4\\u30EA\\u30FC\\u3084\\u30EA\\u30B9\\u30C8\\u3067\\u306F\\u3053\\u306E\\u8A2D\\u5B9A\\u304C\\u7121\\u8996\\u3055\\u308C\\u308B\\u3053\\u3068\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u30EA\\u30B9\\u30C8\\u3068\\u30C4\\u30EA\\u30FC\\u304C\\u30EF\\u30FC\\u30AF\\u30D9\\u30F3\\u30C1\\u3067\\u6C34\\u5E73\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3092\\u30B5\\u30DD\\u30FC\\u30C8\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u8B66\\u544A: \\u3053\\u306E\\u8A2D\\u5B9A\\u3092\\u30AA\\u30F3\\u306B\\u3059\\u308B\\u3068\\u3001\\u30D1\\u30D5\\u30A9\\u30FC\\u30DE\\u30F3\\u30B9\\u306B\\u5F71\\u97FF\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u30D0\\u30FC\\u306E\\u30AF\\u30EA\\u30C3\\u30AF\\u3067\\u30DA\\u30FC\\u30B8\\u3054\\u3068\\u306B\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30C4\\u30EA\\u30FC\\u306E\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u3092\\u30D4\\u30AF\\u30BB\\u30EB\\u5358\\u4F4D\\u3067\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30C4\\u30EA\\u30FC\\u3067\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8\\u306E\\u30AC\\u30A4\\u30C9\\u3092\\u8868\\u793A\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30EA\\u30B9\\u30C8\\u3068\\u30C4\\u30EA\\u30FC\\u3067\\u30B9\\u30E0\\u30FC\\u30BA \\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3092\\u4F7F\\u7528\\u3059\\u308B\\u304B\\u3069\\u3046\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30DE\\u30A6\\u30B9 \\u30DB\\u30A4\\u30FC\\u30EB \\u30B9\\u30AF\\u30ED\\u30FC\\u30EB \\u30A4\\u30D9\\u30F3\\u30C8\\u306E `deltaX` \\u3068 `deltaY` \\u3067\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u4E57\\u6570\\u3002\",\"`Alt` \\u3092\\u62BC\\u3059\\u3068\\u3001\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u901F\\u5EA6\\u304C\\u500D\\u5897\\u3057\\u307E\\u3059\\u3002\",\"\\u691C\\u7D22\\u6642\\u306B\\u8981\\u7D20\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\\u3055\\u3089\\u306B\\u4E0A\\u4E0B\\u306E\\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3\\u3067\\u306F\\u3001\\u5F37\\u8ABF\\u8868\\u793A\\u3055\\u308C\\u305F\\u8981\\u7D20\\u306E\\u307F\\u304C\\u30B9\\u30AD\\u30E3\\u30F3\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u691C\\u7D22\\u6642\\u306B\\u8981\\u7D20\\u3092\\u30D5\\u30A3\\u30EB\\u30BF\\u30FC\\u51E6\\u7406\\u3057\\u307E\\u3059\\u3002\",\"\\u30EF\\u30FC\\u30AF\\u30D9\\u30F3\\u30C1\\u306E\\u30EA\\u30B9\\u30C8\\u3068\\u30C4\\u30EA\\u30FC\\u306E\\u65E2\\u5B9A\\u306E\\u691C\\u7D22\\u30E2\\u30FC\\u30C9\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u7C21\\u5358\\u306A\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3\\u306F\\u3001\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9\\u5165\\u529B\\u306B\\u4E00\\u81F4\\u3059\\u308B\\u8981\\u7D20\\u306B\\u7126\\u70B9\\u3092\\u5F53\\u3066\\u307E\\u3059\\u3002\\u4E00\\u81F4\\u51E6\\u7406\\u306F\\u30D7\\u30EC\\u30D5\\u30A3\\u30C3\\u30AF\\u30B9\\u3067\\u306E\\u307F\\u5B9F\\u884C\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3\\u306E\\u5F37\\u8ABF\\u8868\\u793A\\u3092\\u4F7F\\u7528\\u3059\\u308B\\u3068\\u3001\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9\\u5165\\u529B\\u306B\\u4E00\\u81F4\\u3059\\u308B\\u8981\\u7D20\\u304C\\u5F37\\u8ABF\\u8868\\u793A\\u3055\\u308C\\u307E\\u3059\\u3002\\u4E0A\\u304A\\u3088\\u3073\\u4E0B\\u3078\\u306E\\u79FB\\u52D5\\u306F\\u3001\\u5F37\\u8ABF\\u8868\\u793A\\u3055\\u308C\\u3066\\u3044\\u308B\\u8981\\u7D20\\u306E\\u307F\\u3092\\u79FB\\u52D5\\u3057\\u307E\\u3059\\u3002\",\"\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3\\u306E\\u30D5\\u30A3\\u30EB\\u30BF\\u30FC\\u3067\\u306F\\u3001\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9\\u5165\\u529B\\u306B\\u4E00\\u81F4\\u3057\\u306A\\u3044\\u3059\\u3079\\u3066\\u306E\\u8981\\u7D20\\u304C\\u30D5\\u30A3\\u30EB\\u30BF\\u30FC\\u51E6\\u7406\\u3055\\u308C\\u3001\\u975E\\u8868\\u793A\\u306B\\u306A\\u308A\\u307E\\u3059\\u3002\",\"\\u30EF\\u30FC\\u30AF\\u30D9\\u30F3\\u30C1\\u306E\\u30EA\\u30B9\\u30C8\\u304A\\u3088\\u3073\\u30C4\\u30EA\\u30FC\\u306E\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3 \\u30B9\\u30BF\\u30A4\\u30EB\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u5358\\u7D14\\u3001\\u5F37\\u8ABF\\u8868\\u793A\\u3001\\u30D5\\u30A3\\u30EB\\u30BF\\u30FC\\u3092\\u6307\\u5B9A\\u3067\\u304D\\u307E\\u3059\\u3002\",\"\\u4EE3\\u308F\\u308A\\u306B 'workbench.list.defaultFindMode' \\u3068 'workbench.list.typeNavigationMode' \\u3092\\u4F7F\\u7528\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u691C\\u7D22\\u6642\\u306B\\u3042\\u3044\\u307E\\u3044\\u4E00\\u81F4\\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u691C\\u7D22\\u6642\\u306B\\u9023\\u7D9A\\u4E00\\u81F4\\u3092\\u4F7F\\u7528\\u3057\\u307E\\u3059\\u3002\",\"\\u30EF\\u30FC\\u30AF\\u30D9\\u30F3\\u30C1\\u3067\\u30EA\\u30B9\\u30C8\\u3068\\u30C4\\u30EA\\u30FC\\u3092\\u691C\\u7D22\\u3059\\u308B\\u3068\\u304D\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u4E00\\u81F4\\u306E\\u7A2E\\u985E\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A9\\u30EB\\u30C0\\u30FC\\u540D\\u3092\\u30AF\\u30EA\\u30C3\\u30AF\\u3057\\u305F\\u3068\\u304D\\u306B\\u30C4\\u30EA\\u30FC \\u30D5\\u30A9\\u30EB\\u30C0\\u30FC\\u304C\\u5C55\\u958B\\u3055\\u308C\\u308B\\u65B9\\u6CD5\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002\\u9069\\u7528\\u3067\\u304D\\u306A\\u3044\\u5834\\u5408\\u3001\\u4E00\\u90E8\\u306E\\u30C4\\u30EA\\u30FC\\u3084\\u30EA\\u30B9\\u30C8\\u3067\\u306F\\u3053\\u306E\\u8A2D\\u5B9A\\u304C\\u7121\\u8996\\u3055\\u308C\\u308B\\u3053\\u3068\\u304C\\u3042\\u308A\\u307E\\u3059\\u3002\",\"\\u30EF\\u30FC\\u30AF\\u30D9\\u30F3\\u30C1\\u306E\\u30EA\\u30B9\\u30C8\\u3068\\u30C4\\u30EA\\u30FC\\u3067\\u578B\\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3\\u304C\\u3069\\u306E\\u3088\\u3046\\u306B\\u6A5F\\u80FD\\u3059\\u308B\\u304B\\u3092\\u5236\\u5FA1\\u3057\\u307E\\u3059\\u3002'trigger' \\u306B\\u8A2D\\u5B9A\\u3059\\u308B\\u3068\\u3001'list.triggerTypeNavigation' \\u30B3\\u30DE\\u30F3\\u30C9\\u306E\\u5B9F\\u884C\\u5F8C\\u306B\\u578B\\u30CA\\u30D3\\u30B2\\u30FC\\u30B7\\u30E7\\u30F3\\u304C\\u958B\\u59CB\\u3055\\u308C\\u307E\\u3059\\u3002\"],\"vs/platform/markers/common/markers\":[\"\\u30A8\\u30E9\\u30FC\",\"\\u8B66\\u544A\",\"\\u60C5\\u5831\"],\"vs/platform/quickinput/browser/commandsQuickAccess\":[\"\\u6700\\u8FD1\\u4F7F\\u7528\\u3057\\u305F\\u3082\\u306E\",\"\\u3088\\u304F\\u4F7F\\u7528\\u3059\\u308B\\u3082\\u306E\",\"\\u305D\\u306E\\u4ED6\\u306E\\u30B3\\u30DE\\u30F3\\u30C9\",\"{0}, {1}\",\"\\u30B3\\u30DE\\u30F3\\u30C9 '{0}' \\u3067\\u30A8\\u30E9\\u30FC\\u304C\\u767A\\u751F\\u3057\\u307E\\u3057\\u305F\"],\"vs/platform/quickinput/browser/helpQuickAccess\":[\"{0}, {1}\"],\"vs/platform/quickinput/browser/quickInput\":[\"\\u623B\\u308B\",\"'Enter' \\u3092\\u62BC\\u3057\\u3066\\u5165\\u529B\\u3092\\u78BA\\u8A8D\\u3059\\u308B\\u304B 'Escape' \\u3092\\u62BC\\u3057\\u3066\\u53D6\\u308A\\u6D88\\u3057\\u307E\\u3059\",\"{0}/{1}\",\"\\u5165\\u529B\\u3059\\u308B\\u3068\\u7D50\\u679C\\u304C\\u7D5E\\u308A\\u8FBC\\u307E\\u308C\\u307E\\u3059\\u3002\"],\"vs/platform/quickinput/browser/quickInputController\":[\"Toggle all checkboxes\",\"{0} Results\",\"{0} Selected\",\"OK\",\"Custom\",\"Back ({0})\",\"Back\"],\"vs/platform/quickinput/browser/quickInputList\":[\"\\u30AF\\u30A4\\u30C3\\u30AF\\u5165\\u529B\"],\"vs/platform/quickinput/browser/quickInputUtils\":[\"\\u30AF\\u30EA\\u30C3\\u30AF\\u3057\\u3066 '{0}' \\u30B3\\u30DE\\u30F3\\u30C9\\u3092\\u5B9F\\u884C\"],\"vs/platform/theme/common/colorRegistry\":[\"\\u5168\\u4F53\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u30B3\\u30F3\\u30DD\\u30FC\\u30CD\\u30F3\\u30C8\\u306B\\u3088\\u3063\\u3066\\u30AA\\u30FC\\u30D0\\u30FC\\u30E9\\u30A4\\u30C9\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u5834\\u5408\\u306B\\u306E\\u307F\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u7121\\u52B9\\u306A\\u8981\\u7D20\\u306E\\u5168\\u4F53\\u7684\\u306A\\u524D\\u666F\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u30B3\\u30F3\\u30DD\\u30FC\\u30CD\\u30F3\\u30C8\\u306B\\u3088\\u3063\\u3066\\u30AA\\u30FC\\u30D0\\u30FC\\u30E9\\u30A4\\u30C9\\u3055\\u308C\\u306A\\u3044\\u5834\\u5408\\u306B\\u306E\\u307F\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30A8\\u30E9\\u30FC \\u30E1\\u30C3\\u30BB\\u30FC\\u30B8\\u5168\\u4F53\\u306E\\u524D\\u666F\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u30B3\\u30F3\\u30DD\\u30FC\\u30CD\\u30F3\\u30C8\\u306B\\u3088\\u3063\\u3066\\u4E0A\\u66F8\\u304D\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u5834\\u5408\\u306B\\u306E\\u307F\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u8FFD\\u52A0\\u60C5\\u5831\\u3092\\u63D0\\u4F9B\\u3059\\u308B\\u8AAC\\u660E\\u6587\\u306E\\u524D\\u666F\\u8272\\u3001\\u4F8B:\\u30E9\\u30D9\\u30EB\\u3002\",\"\\u30EF\\u30FC\\u30AF\\u30D9\\u30F3\\u30C1\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u306E\\u65E2\\u5B9A\\u306E\\u8272\\u3002\",\"\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u8981\\u7D20\\u306E\\u5883\\u754C\\u7DDA\\u5168\\u4F53\\u306E\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u30B3\\u30F3\\u30DD\\u30FC\\u30CD\\u30F3\\u30C8\\u306B\\u3088\\u3063\\u3066\\u4E0A\\u66F8\\u304D\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u5834\\u5408\\u306B\\u306E\\u307F\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30B3\\u30F3\\u30C8\\u30E9\\u30B9\\u30C8\\u3092\\u5F37\\u3081\\u308B\\u305F\\u3081\\u306B\\u3001\\u4ED6\\u306E\\u8981\\u7D20\\u3068\\u9694\\u3066\\u308B\\u8FFD\\u52A0\\u306E\\u5883\\u754C\\u7DDA\\u3002\",\"\\u30B3\\u30F3\\u30C8\\u30E9\\u30B9\\u30C8\\u3092\\u5F37\\u3081\\u308B\\u305F\\u3081\\u306B\\u3001\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u4ED6\\u8981\\u7D20\\u3068\\u9694\\u3066\\u308B\\u8FFD\\u52A0\\u306E\\u5883\\u754C\\u7DDA\\u3002\",\"\\u30EF\\u30FC\\u30AF\\u30D9\\u30F3\\u30C1\\u5185\\u306E\\u30C6\\u30AD\\u30B9\\u30C8\\u9078\\u629E\\u306E\\u80CC\\u666F\\u8272 (\\u4F8B: \\u5165\\u529B\\u30D5\\u30A3\\u30FC\\u30EB\\u30C9\\u3084\\u30C6\\u30AD\\u30B9\\u30C8\\u30A8\\u30EA\\u30A2)\\u3002\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u9078\\u629E\\u306B\\u306F\\u9069\\u7528\\u3055\\u308C\\u306A\\u3044\\u3053\\u3068\\u306B\\u6CE8\\u610F\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\",\"\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u533A\\u5207\\u308A\\u6587\\u5B57\\u306E\\u8272\\u3002\",\"\\u30C6\\u30AD\\u30B9\\u30C8\\u5185\\u306E\\u30EA\\u30F3\\u30AF\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30AF\\u30EA\\u30C3\\u30AF\\u3055\\u308C\\u305F\\u3068\\u304D\\u3068\\u30DE\\u30A6\\u30B9\\u3092\\u30DB\\u30D0\\u30FC\\u3057\\u305F\\u3068\\u304D\\u306E\\u30C6\\u30AD\\u30B9\\u30C8\\u5185\\u306E\\u30EA\\u30F3\\u30AF\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30D5\\u30A9\\u30FC\\u30DE\\u30C3\\u30C8\\u6E08\\u307F\\u30C6\\u30AD\\u30B9\\u30C8 \\u30BB\\u30B0\\u30E1\\u30F3\\u30C8\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30C6\\u30AD\\u30B9\\u30C8\\u5185\\u306E\\u30D6\\u30ED\\u30C3\\u30AF\\u5F15\\u7528\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30C6\\u30AD\\u30B9\\u30C8\\u5185\\u306E\\u30D6\\u30ED\\u30C3\\u30AF\\u5F15\\u7528\\u306E\\u5883\\u754C\\u7DDA\\u8272\\u3002\",\"\\u30C6\\u30AD\\u30B9\\u30C8\\u5185\\u306E\\u30B3\\u30FC\\u30C9 \\u30D6\\u30ED\\u30C3\\u30AF\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u691C\\u7D22/\\u7F6E\\u63DB\\u7A93\\u306A\\u3069\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u5F71\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u691C\\u7D22/\\u7F6E\\u63DB\\u7A93\\u306A\\u3069\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u5165\\u529B\\u30DC\\u30C3\\u30AF\\u30B9\\u306E\\u80CC\\u666F\\u3002\",\"\\u5165\\u529B\\u30DC\\u30C3\\u30AF\\u30B9\\u306E\\u524D\\u666F\\u3002\",\"\\u5165\\u529B\\u30DC\\u30C3\\u30AF\\u30B9\\u306E\\u5883\\u754C\\u7DDA\\u3002\",\"\\u5165\\u529B\\u30D5\\u30A3\\u30FC\\u30EB\\u30C9\\u306E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6 \\u30AA\\u30D7\\u30B7\\u30E7\\u30F3\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u5165\\u529B\\u30D5\\u30A3\\u30FC\\u30EB\\u30C9\\u3067\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u5316\\u3055\\u308C\\u305F\\u30AA\\u30D7\\u30B7\\u30E7\\u30F3\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u5165\\u529B\\u30D5\\u30A3\\u30FC\\u30EB\\u30C9\\u306E\\u30AA\\u30D7\\u30B7\\u30E7\\u30F3\\u306E\\u80CC\\u666F\\u306E\\u30DB\\u30D0\\u30FC\\u8272\\u3002\",\"\\u5165\\u529B\\u30D5\\u30A3\\u30FC\\u30EB\\u30C9\\u3067\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u5316\\u3055\\u308C\\u305F\\u30AA\\u30D7\\u30B7\\u30E7\\u30F3\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u5165\\u529B\\u30DC\\u30C3\\u30AF\\u30B9\\u306E\\u30D7\\u30EC\\u30FC\\u30B9\\u30DB\\u30EB\\u30C0\\u30FC \\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u60C5\\u5831\\u306E\\u91CD\\u5927\\u5EA6\\u3092\\u793A\\u3059\\u5165\\u529B\\u691C\\u8A3C\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u60C5\\u5831\\u306E\\u91CD\\u5927\\u5EA6\\u3092\\u793A\\u3059\\u5165\\u529B\\u691C\\u8A3C\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u60C5\\u5831\\u306E\\u91CD\\u5927\\u5EA6\\u3092\\u793A\\u3059\\u5165\\u529B\\u691C\\u8A3C\\u306E\\u5883\\u754C\\u7DDA\\u8272\\u3002\",\"\\u8B66\\u544A\\u306E\\u91CD\\u5927\\u5EA6\\u3092\\u793A\\u3059\\u5165\\u529B\\u691C\\u8A3C\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u8B66\\u544A\\u306E\\u91CD\\u5927\\u5EA6\\u3092\\u793A\\u3059\\u5165\\u529B\\u691C\\u8A3C\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u8B66\\u544A\\u306E\\u91CD\\u5927\\u5EA6\\u3092\\u793A\\u3059\\u5165\\u529B\\u691C\\u8A3C\\u306E\\u5883\\u754C\\u7DDA\\u8272\\u3002\",\"\\u30A8\\u30E9\\u30FC\\u306E\\u91CD\\u5927\\u5EA6\\u3092\\u793A\\u3059\\u5165\\u529B\\u691C\\u8A3C\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30A8\\u30E9\\u30FC\\u306E\\u91CD\\u5927\\u5EA6\\u3092\\u793A\\u3059\\u5165\\u529B\\u691C\\u8A3C\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30A8\\u30E9\\u30FC\\u306E\\u91CD\\u5927\\u5EA6\\u3092\\u793A\\u3059\\u5165\\u529B\\u691C\\u8A3C\\u306E\\u5883\\u754C\\u7DDA\\u8272\\u3002\",\"\\u30C9\\u30ED\\u30C3\\u30D7\\u30C0\\u30A6\\u30F3\\u306E\\u80CC\\u666F\\u3002\",\"\\u30C9\\u30ED\\u30C3\\u30D7\\u30C0\\u30A6\\u30F3 \\u30EA\\u30B9\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30C9\\u30ED\\u30C3\\u30D7\\u30C0\\u30A6\\u30F3\\u306E\\u524D\\u666F\\u3002\",\"\\u30C9\\u30ED\\u30C3\\u30D7\\u30C0\\u30A6\\u30F3\\u306E\\u5883\\u754C\\u7DDA\\u3002\",\"\\u30DC\\u30BF\\u30F3\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30DC\\u30BF\\u30F3\\u306E\\u533A\\u5207\\u308A\\u8A18\\u53F7\\u306E\\u8272\\u3002\",\"\\u30DC\\u30BF\\u30F3\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30DB\\u30D0\\u30FC\\u6642\\u306E\\u30DC\\u30BF\\u30F3\\u80CC\\u666F\\u8272\\u3002\",\"\\u30DC\\u30BF\\u30F3\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u30DC\\u30BF\\u30F3\\u306E 2 \\u6B21\\u7684\\u306A\\u524D\\u666F\\u8272\\u3002\",\"\\u30DC\\u30BF\\u30F3\\u306E 2 \\u6B21\\u7684\\u306A\\u80CC\\u666F\\u8272\\u3002\",\"\\u30DB\\u30D0\\u30FC\\u6642\\u306E\\u30DC\\u30BF\\u30F3\\u306E 2 \\u6B21\\u7684\\u306A\\u80CC\\u666F\\u8272\\u3002\",\"\\u30D0\\u30C3\\u30B8\\u306E\\u80CC\\u666F\\u8272\\u3002\\u30D0\\u30C3\\u30B8\\u3068\\u306F\\u5C0F\\u3055\\u306A\\u60C5\\u5831\\u30E9\\u30D9\\u30EB\\u306E\\u3053\\u3068\\u3067\\u3059\\u3002\\u4F8B:\\u691C\\u7D22\\u7D50\\u679C\\u306E\\u6570\",\"\\u30D0\\u30C3\\u30B8\\u306E\\u524D\\u666F\\u8272\\u3002\\u30D0\\u30C3\\u30B8\\u3068\\u306F\\u5C0F\\u3055\\u306A\\u60C5\\u5831\\u30E9\\u30D9\\u30EB\\u306E\\u3053\\u3068\\u3067\\u3059\\u3002\\u4F8B:\\u691C\\u7D22\\u7D50\\u679C\\u306E\\u6570\",\"\\u30D3\\u30E5\\u30FC\\u304C\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u3055\\u308C\\u305F\\u3053\\u3068\\u3092\\u793A\\u3059\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB \\u30D0\\u30FC\\u306E\\u5F71\\u3002\",\"\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB \\u30D0\\u30FC\\u306E\\u30B9\\u30E9\\u30A4\\u30C0\\u30FC\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30DB\\u30D0\\u30FC\\u6642\\u306E\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB \\u30D0\\u30FC \\u30B9\\u30E9\\u30A4\\u30C0\\u30FC\\u80CC\\u666F\\u8272\\u3002\",\"\\u30AF\\u30EA\\u30C3\\u30AF\\u6642\\u306E\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB \\u30D0\\u30FC \\u30B9\\u30E9\\u30A4\\u30C0\\u30FC\\u80CC\\u666F\\u8272\\u3002\",\"\\u6642\\u9593\\u306E\\u304B\\u304B\\u308B\\u64CD\\u4F5C\\u3067\\u8868\\u793A\\u3059\\u308B\\u30D7\\u30ED\\u30B0\\u30EC\\u30B9 \\u30D0\\u30FC\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u30A8\\u30E9\\u30FC \\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30A8\\u30E9\\u30FC\\u3092\\u793A\\u3059\\u6CE2\\u7DDA\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u8A2D\\u5B9A\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u30A8\\u30E9\\u30FC\\u306E\\u4E8C\\u91CD\\u4E0B\\u7DDA\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u8B66\\u544A\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u8B66\\u544A\\u3092\\u793A\\u3059\\u6CE2\\u7DDA\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u8A2D\\u5B9A\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u8B66\\u544A\\u306E\\u4E8C\\u91CD\\u4E0B\\u7DDA\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u60C5\\u5831\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u60C5\\u5831\\u3092\\u793A\\u3059\\u6CE2\\u7DDA\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u8A2D\\u5B9A\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u60C5\\u5831\\u306E\\u4E8C\\u91CD\\u4E0B\\u7DDA\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3067\\u30D2\\u30F3\\u30C8\\u3092\\u793A\\u3059\\u6CE2\\u7DDA\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u8A2D\\u5B9A\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u30D2\\u30F3\\u30C8\\u306E\\u4E8C\\u91CD\\u4E0B\\u7DDA\\u306E\\u8272\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u67A0\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u65E2\\u5B9A\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u306E\\u80CC\\u666F\\u8272\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u56FA\\u5B9A\\u30B9\\u30AF\\u30ED\\u30FC\\u30EB\\u306E\\u30DB\\u30D0\\u30FC\\u80CC\\u666F\\u8272\",\"\\u691C\\u7D22/\\u7F6E\\u63DB\\u7A93\\u306A\\u3069\\u3001\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u691C\\u7D22/\\u7F6E\\u63DB\\u306A\\u3069\\u3092\\u884C\\u3046\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u5883\\u754C\\u7DDA\\u8272\\u3002\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u5883\\u754C\\u7DDA\\u304C\\u3042\\u308A\\u3001\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u3088\\u3063\\u3066\\u914D\\u8272\\u3092\\u4E0A\\u66F8\\u304D\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u5834\\u5408\\u3067\\u306E\\u307F\\u3053\\u306E\\u914D\\u8272\\u306F\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u30B5\\u30A4\\u30BA\\u5909\\u66F4\\u30D0\\u30FC\\u306E\\u5883\\u754C\\u7DDA\\u8272\\u3002\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u30B5\\u30A4\\u30BA\\u5909\\u66F4\\u306E\\u5883\\u754C\\u7DDA\\u304C\\u3042\\u308A\\u3001\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u3088\\u3063\\u3066\\u914D\\u8272\\u3092\\u4E0A\\u66F8\\u304D\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u5834\\u5408\\u3067\\u306E\\u307F\\u3053\\u306E\\u914D\\u8272\\u306F\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30AF\\u30A4\\u30C3\\u30AF \\u30D4\\u30C3\\u30AB\\u30FC\\u306E\\u80CC\\u666F\\u8272\\u3002\\u30AF\\u30A4\\u30C3\\u30AF \\u30D4\\u30C3\\u30AB\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306F\\u3001\\u30B3\\u30DE\\u30F3\\u30C9 \\u30D1\\u30EC\\u30C3\\u30C8\\u306E\\u3088\\u3046\\u306A\\u30D4\\u30C3\\u30AB\\u30FC\\u306E\\u30B3\\u30F3\\u30C6\\u30CA\\u30FC\\u3067\\u3059\\u3002\",\"\\u30AF\\u30A4\\u30C3\\u30AF \\u30D4\\u30C3\\u30AB\\u30FC\\u306E\\u524D\\u666F\\u8272\\u3002\\u30AF\\u30A4\\u30C3\\u30AF \\u30D4\\u30C3\\u30AB\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306F\\u3001\\u30B3\\u30DE\\u30F3\\u30C9 \\u30D1\\u30EC\\u30C3\\u30C8\\u306E\\u3088\\u3046\\u306A\\u30D4\\u30C3\\u30AB\\u30FC\\u306E\\u30B3\\u30F3\\u30C6\\u30CA\\u30FC\\u3067\\u3059\\u3002\",\"\\u30AF\\u30A4\\u30C3\\u30AF \\u30D4\\u30C3\\u30AB\\u30FC \\u306E\\u30BF\\u30A4\\u30C8\\u30EB\\u306E\\u80CC\\u666F\\u8272\\u3002\\u30AF\\u30A4\\u30C3\\u30AF \\u30D4\\u30C3\\u30AB\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306F\\u3001\\u30B3\\u30DE\\u30F3\\u30C9 \\u30D1\\u30EC\\u30C3\\u30C8\\u306E\\u3088\\u3046\\u306A\\u30D4\\u30C3\\u30AB\\u30FC\\u306E\\u30B3\\u30F3\\u30C6\\u30CA\\u30FC\\u3067\\u3059\\u3002\",\"\\u30E9\\u30D9\\u30EB\\u3092\\u30B0\\u30EB\\u30FC\\u30D7\\u5316\\u3059\\u308B\\u305F\\u3081\\u306E\\u30AF\\u30EA\\u30C3\\u30AF\\u9078\\u629E\\u306E\\u8272\\u3002\",\"\\u5883\\u754C\\u7DDA\\u3092\\u30B0\\u30EB\\u30FC\\u30D7\\u5316\\u3059\\u308B\\u305F\\u3081\\u306E\\u30AF\\u30A4\\u30C3\\u30AF\\u9078\\u629E\\u306E\\u8272\\u3002\",\"\\u30AD\\u30FC \\u30D0\\u30A4\\u30F3\\u30C9 \\u30E9\\u30D9\\u30EB\\u306E\\u80CC\\u666F\\u8272\\u3067\\u3059\\u3002\\u30AD\\u30FC \\u30D0\\u30A4\\u30F3\\u30C9 \\u30E9\\u30D9\\u30EB\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30B7\\u30E7\\u30FC\\u30C8\\u30AB\\u30C3\\u30C8\\u3092\\u8868\\u3059\\u305F\\u3081\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30AD\\u30FC \\u30D0\\u30A4\\u30F3\\u30C9 \\u30E9\\u30D9\\u30EB\\u306E\\u524D\\u666F\\u8272\\u3067\\u3059\\u3002\\u30AD\\u30FC \\u30D0\\u30A4\\u30F3\\u30C9 \\u30E9\\u30D9\\u30EB\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30B7\\u30E7\\u30FC\\u30C8\\u30AB\\u30C3\\u30C8\\u3092\\u8868\\u3059\\u305F\\u3081\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30AD\\u30FC \\u30D0\\u30A4\\u30F3\\u30C9 \\u30E9\\u30D9\\u30EB\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3067\\u3059\\u3002\\u30AD\\u30FC \\u30D0\\u30A4\\u30F3\\u30C9 \\u30E9\\u30D9\\u30EB\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30B7\\u30E7\\u30FC\\u30C8\\u30AB\\u30C3\\u30C8\\u3092\\u8868\\u3059\\u305F\\u3081\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30AD\\u30FC \\u30D0\\u30A4\\u30F3\\u30C9 \\u30E9\\u30D9\\u30EB\\u306E\\u4E0B\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3067\\u3059\\u3002\\u30AD\\u30FC \\u30D0\\u30A4\\u30F3\\u30C9 \\u30E9\\u30D9\\u30EB\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30B7\\u30E7\\u30FC\\u30C8\\u30AB\\u30C3\\u30C8\\u3092\\u8868\\u3059\\u305F\\u3081\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u9078\\u629E\\u7BC4\\u56F2\\u306E\\u8272\\u3002\",\"\\u30CF\\u30A4 \\u30B3\\u30F3\\u30C8\\u30E9\\u30B9\\u30C8\\u306E\\u9078\\u629E\\u6E08\\u307F\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u8272\\u3002\",\"\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u9078\\u629E\\u7BC4\\u56F2\\u306E\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u306E\\u540C\\u3058\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u306E\\u9818\\u57DF\\u306E\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u3068\\u540C\\u3058\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u73FE\\u5728\\u306E\\u691C\\u7D22\\u4E00\\u81F4\\u9805\\u76EE\\u306E\\u8272\\u3002\",\"\\u305D\\u306E\\u4ED6\\u306E\\u691C\\u7D22\\u6761\\u4EF6\\u306B\\u4E00\\u81F4\\u3059\\u308B\\u9805\\u76EE\\u306E\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u691C\\u7D22\\u3092\\u5236\\u9650\\u3059\\u308B\\u7BC4\\u56F2\\u306E\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u73FE\\u5728\\u306E\\u691C\\u7D22\\u4E00\\u81F4\\u9805\\u76EE\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u4ED6\\u306E\\u691C\\u7D22\\u4E00\\u81F4\\u9805\\u76EE\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u691C\\u7D22\\u3092\\u5236\\u9650\\u3059\\u308B\\u7BC4\\u56F2\\u306E\\u5883\\u754C\\u7DDA\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u691C\\u7D22\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30AF\\u30A8\\u30EA\\u306E\\u8272\\u304C\\u4E00\\u81F4\\u3057\\u307E\\u3059\\u3002\",\"\\u691C\\u7D22\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30AF\\u30A8\\u30EA\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u304C\\u4E00\\u81F4\\u3057\\u307E\\u3059\\u3002\",\"\\u691C\\u7D22\\u30D3\\u30E5\\u30FC\\u30EC\\u30C3\\u30C8\\u306E\\u5B8C\\u4E86\\u30E1\\u30C3\\u30BB\\u30FC\\u30B8\\u5185\\u306E\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u8272\\u3002\",\"\\u30DB\\u30D0\\u30FC\\u304C\\u8868\\u793A\\u3055\\u308C\\u3066\\u3044\\u308B\\u8A9E\\u306E\\u4E0B\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30DB\\u30D0\\u30FC\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30DB\\u30D0\\u30FC\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC \\u30DB\\u30D0\\u30FC\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u30DB\\u30D0\\u30FC\\u306E\\u30B9\\u30C6\\u30FC\\u30BF\\u30B9 \\u30D0\\u30FC\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30EA\\u30F3\\u30AF\\u306E\\u8272\\u3002\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30D2\\u30F3\\u30C8\\u306E\\u524D\\u666F\\u8272\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30D2\\u30F3\\u30C8\\u306E\\u80CC\\u666F\\u8272\",\"\\u7A2E\\u985E\\u306E\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30D2\\u30F3\\u30C8\\u306E\\u524D\\u666F\\u8272\",\"\\u7A2E\\u985E\\u306E\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30D2\\u30F3\\u30C8\\u306E\\u80CC\\u666F\\u8272\",\"\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC\\u306E\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30D2\\u30F3\\u30C8\\u306E\\u524D\\u666F\\u8272\",\"\\u30D1\\u30E9\\u30E1\\u30FC\\u30BF\\u30FC\\u306E\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30D2\\u30F3\\u30C8\\u306E\\u80CC\\u666F\\u8272\",\"\\u96FB\\u7403\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3 \\u30A2\\u30A4\\u30B3\\u30F3\\u306B\\u4F7F\\u7528\\u3059\\u308B\\u8272\\u3002\",\"\\u81EA\\u52D5\\u4FEE\\u6B63\\u306E\\u96FB\\u7403\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3 \\u30A2\\u30A4\\u30B3\\u30F3\\u3068\\u3057\\u3066\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u8272\\u3002\",\"\\u633F\\u5165\\u3055\\u308C\\u305F\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u524A\\u9664\\u3057\\u305F\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u633F\\u5165\\u3055\\u308C\\u305F\\u884C\\u306E\\u80CC\\u666F\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u524A\\u9664\\u3057\\u305F\\u884C\\u306E\\u80CC\\u666F\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u633F\\u5165\\u3055\\u308C\\u305F\\u884C\\u306E\\u4F59\\u767D\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u524A\\u9664\\u3055\\u308C\\u305F\\u884C\\u306E\\u4F59\\u767D\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u633F\\u5165\\u3055\\u308C\\u305F\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u306B\\u3064\\u3044\\u3066\\u3001\\u5DEE\\u5206\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u3092\\u524D\\u9762\\u306B\\u7F6E\\u304D\\u307E\\u3059\\u3002\",\"\\u524A\\u9664\\u3055\\u308C\\u305F\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u306B\\u3064\\u3044\\u3066\\u3001\\u5DEE\\u5206\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u3092\\u524D\\u9762\\u306B\\u7F6E\\u304D\\u307E\\u3059\\u3002\",\"\\u633F\\u5165\\u3055\\u308C\\u305F\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u8F2A\\u90ED\\u306E\\u8272\\u3002\",\"\\u524A\\u9664\\u3055\\u308C\\u305F\\u30C6\\u30AD\\u30B9\\u30C8\\u306E\\u8F2A\\u90ED\\u306E\\u8272\\u3002\",\"2 \\u3064\\u306E\\u30C6\\u30AD\\u30B9\\u30C8 \\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u9593\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u5BFE\\u89D2\\u7DDA\\u306E\\u5857\\u308A\\u3064\\u3076\\u3057\\u8272\\u3002\\u5BFE\\u89D2\\u7DDA\\u306E\\u5857\\u308A\\u3064\\u3076\\u3057\\u306F\\u3001\\u6A2A\\u306B\\u4E26\\u3079\\u3066\\u6BD4\\u8F03\\u3059\\u308B\\u30D3\\u30E5\\u30FC\\u3067\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u5909\\u66F4\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u30D6\\u30ED\\u30C3\\u30AF\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u5909\\u66F4\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u30D6\\u30ED\\u30C3\\u30AF\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u5DEE\\u5206\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u5185\\u306E\\u5909\\u66F4\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u30B3\\u30FC\\u30C9\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u304C\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306E\\u3068\\u304D\\u3001\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u80CC\\u666F\\u8272\\u3002\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308A\\u3001\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u3067\\u306F\\u3053\\u308C\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u304C\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306E\\u3068\\u304D\\u3001\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u524D\\u666F\\u8272\\u3002\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308A\\u3001\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u3067\\u306F\\u3053\\u308C\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30EA\\u30B9\\u30C8\\u3084\\u30C4\\u30EA\\u30FC\\u304C\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u5834\\u5408\\u306E\\u3001\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30EA\\u30B9\\u30C8\\u3084\\u30C4\\u30EA\\u30FC\\u306E\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u8272\\u3002\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30EA\\u30B9\\u30C8\\u3084\\u30C4\\u30EA\\u30FC\\u306B\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308A\\u3001\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306B\\u306F\\u3053\\u308C\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30EA\\u30B9\\u30C8/\\u30C4\\u30EA\\u30FC\\u304C\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u3067\\u9078\\u629E\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u306E\\u3001\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u30A2\\u30A4\\u30C6\\u30E0\\u306E\\u30EA\\u30B9\\u30C8/\\u30C4\\u30EA\\u30FC \\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u306E\\u8272\\u3002\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30EA\\u30B9\\u30C8/\\u30C4\\u30EA\\u30FC\\u306B\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308A\\u3001\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u5834\\u5408\\u306F\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u304C\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306E\\u3068\\u304D\\u3001\\u9078\\u629E\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u80CC\\u666F\\u8272\\u3002\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308A\\u3001\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u3067\\u306F\\u3053\\u308C\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u304C\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306E\\u3068\\u304D\\u3001\\u9078\\u629E\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u524D\\u666F\\u8272\\u3002\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308A\\u3001\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u3067\\u306F\\u3053\\u308C\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u304C\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306E\\u3068\\u304D\\u3001\\u9078\\u629E\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u524D\\u666F\\u8272\\u3002\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308A\\u3001\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u3067\\u306F\\u3053\\u308C\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u304C\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306E\\u3068\\u304D\\u3001\\u9078\\u629E\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u80CC\\u666F\\u8272\\u3002\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308A\\u3001\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u3067\\u306F\\u3053\\u308C\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u304C\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306E\\u3068\\u304D\\u3001\\u9078\\u629E\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u524D\\u666F\\u8272\\u3002\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308A\\u3001\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u3067\\u306F\\u3053\\u308C\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u304C\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306E\\u3068\\u304D\\u3001\\u9078\\u629E\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u524D\\u666F\\u8272\\u3002\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308A\\u3001\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u3067\\u306F\\u3053\\u308C\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u304C\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306E\\u3068\\u304D\\u3001\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u80CC\\u666F\\u8272\\u3002\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308A\\u3001\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u3067\\u306F\\u3053\\u308C\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30EA\\u30B9\\u30C8\\u3084\\u30C4\\u30EA\\u30FC\\u304C\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u5834\\u5408\\u306E\\u3001\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30EA\\u30B9\\u30C8\\u3084\\u30C4\\u30EA\\u30FC\\u306E\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u8272\\u3002\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306A\\u30EA\\u30B9\\u30C8\\u3084\\u30C4\\u30EA\\u30FC\\u306B\\u306F\\u30AD\\u30FC\\u30DC\\u30FC\\u30C9 \\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u304C\\u3042\\u308A\\u3001\\u975E\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u306B\\u306F\\u3053\\u308C\\u304C\\u3042\\u308A\\u307E\\u305B\\u3093\\u3002\",\"\\u30DE\\u30A6\\u30B9\\u64CD\\u4F5C\\u3067\\u9805\\u76EE\\u3092\\u30DB\\u30D0\\u30FC\\u3059\\u308B\\u3068\\u304D\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u80CC\\u666F\\u3002\",\"\\u30DE\\u30A6\\u30B9\\u64CD\\u4F5C\\u3067\\u9805\\u76EE\\u3092\\u30DB\\u30D0\\u30FC\\u3059\\u308B\\u3068\\u304D\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u524D\\u666F\\u3002\",\"\\u30DE\\u30A6\\u30B9\\u64CD\\u4F5C\\u3067\\u9805\\u76EE\\u3092\\u79FB\\u52D5\\u3059\\u308B\\u3068\\u304D\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8 \\u30C9\\u30E9\\u30C3\\u30B0 \\u30A2\\u30F3\\u30C9 \\u30C9\\u30ED\\u30C3\\u30D7\\u306E\\u80CC\\u666F\\u3002\",\"\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u5185\\u3092\\u691C\\u7D22\\u3057\\u3066\\u3044\\u308B\\u3068\\u304D\\u3001\\u4E00\\u81F4\\u3057\\u305F\\u5F37\\u8ABF\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u524D\\u666F\\u8272\\u3002\",\"\\u30C4\\u30EA\\u30FC/\\u30EA\\u30B9\\u30C8\\u5185\\u3092\\u691C\\u7D22\\u3057\\u3066\\u3044\\u308B\\u3068\\u304D\\u3001\\u4E00\\u81F4\\u3057\\u305F\\u5F37\\u8ABF\\u306E\\u30C4\\u30EA\\u30FC/\\u30EA\\u30B9\\u30C8\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u7121\\u52B9\\u306A\\u9805\\u76EE\\u306E\\u30C4\\u30EA\\u30FC\\u30EA\\u30B9\\u30C8\\u306E\\u524D\\u666F\\u8272\\u3002\\u305F\\u3068\\u3048\\u3070\\u30A8\\u30AF\\u30B9\\u30D7\\u30ED\\u30FC\\u30E9\\u30FC\\u306E\\u672A\\u89E3\\u6C7A\\u306A\\u30EB\\u30FC\\u30C8\\u3002\",\"\\u30A8\\u30E9\\u30FC\\u3092\\u542B\\u3080\\u30EA\\u30B9\\u30C8\\u9805\\u76EE\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u8B66\\u544A\\u304C\\u542B\\u307E\\u308C\\u308B\\u30EA\\u30B9\\u30C8\\u9805\\u76EE\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30EA\\u30B9\\u30C8\\u304A\\u3088\\u3073\\u30C4\\u30EA\\u30FC\\u306E\\u578B\\u30D5\\u30A3\\u30EB\\u30BF\\u30FC \\u30A6\\u30A7\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30EA\\u30B9\\u30C8\\u304A\\u3088\\u3073\\u30C4\\u30EA\\u30FC\\u306E\\u578B\\u30D5\\u30A3\\u30EB\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u8272\\u3002\",\"\\u4E00\\u81F4\\u9805\\u76EE\\u304C\\u306A\\u3044\\u5834\\u5408\\u306E\\u3001\\u30EA\\u30B9\\u30C8\\u304A\\u3088\\u3073\\u30C4\\u30EA\\u30FC\\u306E\\u578B\\u30D5\\u30A3\\u30EB\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\\u8272\\u3002\",\"\\u30EA\\u30B9\\u30C8\\u304A\\u3088\\u3073\\u30C4\\u30EA\\u30FC\\u306E\\u578B\\u30D5\\u30A3\\u30EB\\u30BF\\u30FC \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u5F71\\u306E\\u8272\\u3002\",\"\\u30D5\\u30A3\\u30EB\\u30BF\\u30EA\\u30F3\\u30B0\\u3055\\u308C\\u305F\\u4E00\\u81F4\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30D5\\u30A3\\u30EB\\u30BF\\u30EA\\u30F3\\u30B0\\u3055\\u308C\\u305F\\u4E00\\u81F4\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u30C4\\u30EA\\u30FC \\u30B9\\u30C8\\u30ED\\u30FC\\u30AF\\u306E\\u8272\\u3002\",\"\\u30A2\\u30AF\\u30C6\\u30A3\\u30D6\\u3067\\u306A\\u3044\\u30A4\\u30F3\\u30C7\\u30F3\\u30C8 \\u30AC\\u30A4\\u30C9\\u306E\\u30C4\\u30EA\\u30FC \\u30B9\\u30C8\\u30ED\\u30FC\\u30AF\\u306E\\u8272\\u3002\",\"\\u5217\\u9593\\u306E\\u8868\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u5947\\u6570\\u30C6\\u30FC\\u30D6\\u30EB\\u884C\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u5F37\\u8ABF\\u8868\\u793A\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u9805\\u76EE\\u306E\\u30EA\\u30B9\\u30C8/\\u30C4\\u30EA\\u30FC\\u524D\\u666F\\u8272\\u3002 \",\"\\u30C1\\u30A7\\u30C3\\u30AF\\u30DC\\u30C3\\u30AF\\u30B9 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u8981\\u7D20\\u304C\\u9078\\u629E\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u306E\\u30C1\\u30A7\\u30C3\\u30AF\\u30DC\\u30C3\\u30AF\\u30B9 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30C1\\u30A7\\u30C3\\u30AF\\u30DC\\u30C3\\u30AF\\u30B9 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30C1\\u30A7\\u30C3\\u30AF\\u30DC\\u30C3\\u30AF\\u30B9 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u8981\\u7D20\\u304C\\u9078\\u629E\\u3055\\u308C\\u3066\\u3044\\u308B\\u5834\\u5408\\u306E\\u30C1\\u30A7\\u30C3\\u30AF\\u30DC\\u30C3\\u30AF\\u30B9 \\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u4EE3\\u308F\\u308A\\u306B quickInputList.focusBackground \\u3092\\u4F7F\\u7528\\u3057\\u3066\\u304F\\u3060\\u3055\\u3044\",\"\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30AF\\u30A4\\u30C3\\u30AF\\u9078\\u629E\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30AF\\u30A4\\u30C3\\u30AF\\u9078\\u629E\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u524D\\u666F\\u8272\\u3002\",\"\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u9805\\u76EE\\u306E\\u30AF\\u30A4\\u30C3\\u30AF\\u9078\\u629E\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30E1\\u30CB\\u30E5\\u30FC\\u306E\\u5883\\u754C\\u7DDA\\u8272\\u3002\",\"\\u30E1\\u30CB\\u30E5\\u30FC\\u9805\\u76EE\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30E1\\u30CB\\u30E5\\u30FC\\u9805\\u76EE\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30E1\\u30CB\\u30E5\\u30FC\\u3067\\u9078\\u629E\\u3055\\u308C\\u305F\\u30E1\\u30CB\\u30E5\\u30FC\\u9805\\u76EE\\u306E\\u524D\\u666F\\u8272\\u3002\",\"\\u30E1\\u30CB\\u30E5\\u30FC\\u3067\\u9078\\u629E\\u3055\\u308C\\u305F\\u30E1\\u30CB\\u30E5\\u30FC\\u9805\\u76EE\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30E1\\u30CB\\u30E5\\u30FC\\u3067\\u9078\\u629E\\u3055\\u308C\\u305F\\u30E1\\u30CB\\u30E5\\u30FC\\u9805\\u76EE\\u306E\\u5883\\u754C\\u7DDA\\u8272\\u3002\",\"\\u30E1\\u30CB\\u30E5\\u30FC\\u5185\\u306E\\u30E1\\u30CB\\u30E5\\u30FC\\u9805\\u76EE\\u306E\\u5883\\u754C\\u7DDA\\u8272\\u3002\",\"\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306E\\u4E0A\\u306B\\u30DE\\u30A6\\u30B9 \\u30DD\\u30A4\\u30F3\\u30BF\\u30FC\\u3092\\u5408\\u308F\\u305B\\u305F\\u3068\\u304D\\u306E\\u30C4\\u30FC\\u30EB \\u30D0\\u30FC\\u306E\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\",\"\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306E\\u4E0A\\u306B\\u30DE\\u30A6\\u30B9 \\u30DD\\u30A4\\u30F3\\u30BF\\u30FC\\u3092\\u5408\\u308F\\u305B\\u305F\\u3068\\u304D\\u306E\\u30C4\\u30FC\\u30EB \\u30D0\\u30FC\\u306E\\u30A2\\u30A6\\u30C8\\u30E9\\u30A4\\u30F3\",\"\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306E\\u4E0A\\u306B\\u30DE\\u30A6\\u30B9 \\u30DD\\u30A4\\u30F3\\u30BF\\u30FC\\u3092\\u5408\\u308F\\u305B\\u308B\\u3068\\u30C4\\u30FC\\u30EB \\u30D0\\u30FC\\u306E\\u80CC\\u666F\\u304C\\u8868\\u793A\\u3055\\u308C\\u308B\",\"\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8 tabstop \\u306E\\u80CC\\u666F\\u8272\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8 tabstop \\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8\\u306E\\u6700\\u5F8C\\u306E tabstop \\u306E\\u80CC\\u666F\\u8272\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u30B9\\u30CB\\u30DA\\u30C3\\u30C8\\u306E\\u6700\\u5F8C\\u306E\\u30BF\\u30D6\\u30B9\\u30C8\\u30C3\\u30D7\\u3067\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3057\\u307E\\u3059\\u3002\",\"\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u306E\\u9805\\u76EE\\u306E\\u8272\\u3002\",\"\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u306E\\u9805\\u76EE\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30D5\\u30A9\\u30FC\\u30AB\\u30B9\\u3055\\u308C\\u305F\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u306E\\u9805\\u76EE\\u306E\\u8272\\u3002\",\"\\u9078\\u629E\\u3055\\u308C\\u305F\\u968E\\u5C64\\u30EA\\u30F3\\u30AF\\u306E\\u9805\\u76EE\\u306E\\u8272\\u3002\",\"\\u968E\\u5C64\\u9805\\u76EE\\u30D4\\u30C3\\u30AB\\u30FC\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30DE\\u30FC\\u30B8\\u7AF6\\u5408\\u306E\\u73FE\\u5728\\u306E\\u30D8\\u30C3\\u30C0\\u30FC\\u306E\\u80CC\\u666F\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30DE\\u30FC\\u30B8\\u7AF6\\u5408\\u306E\\u73FE\\u5728\\u306E\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u80CC\\u666F\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30DE\\u30FC\\u30B8\\u7AF6\\u5408\\u306E\\u7740\\u4FE1\\u30D8\\u30C3\\u30C0\\u30FC\\u306E\\u80CC\\u666F\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30DE\\u30FC\\u30B8\\u7AF6\\u5408\\u306E\\u7740\\u4FE1\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u306E\\u80CC\\u666F\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30DE\\u30FC\\u30B8\\u7AF6\\u5408\\u306E\\u5171\\u901A\\u306E\\u5148\\u7956\\u306E\\u30D8\\u30C3\\u30C0\\u30FC\\u80CC\\u666F\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u30A4\\u30F3\\u30E9\\u30A4\\u30F3 \\u30DE\\u30FC\\u30B8\\u7AF6\\u5408\\u306E\\u5171\\u901A\\u306E\\u5148\\u7956\\u306E\\u30B3\\u30F3\\u30C6\\u30F3\\u30C4\\u80CC\\u666F\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u884C\\u5185\\u30DE\\u30FC\\u30B8\\u7AF6\\u5408\\u306E\\u30D8\\u30C3\\u30C0\\u30FC\\u3068\\u30B9\\u30D7\\u30EA\\u30C3\\u30BF\\u30FC\\u306E\\u5883\\u754C\\u7DDA\\u306E\\u8272\\u3002\",\"\\u884C\\u5185\\u30DE\\u30FC\\u30B8\\u7AF6\\u5408\\u306E\\u73FE\\u5728\\u306E\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u524D\\u666F\\u8272\\u3002\",\"\\u884C\\u5185\\u30DE\\u30FC\\u30B8\\u7AF6\\u5408\\u306E\\u5165\\u529B\\u5074\\u306E\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u524D\\u666F\\u8272\\u3002\",\"\\u884C\\u5185\\u30DE\\u30FC\\u30B8\\u7AF6\\u5408\\u306E\\u5171\\u901A\\u306E\\u7956\\u5148\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC\\u524D\\u666F\\u8272\\u3002\",\"\\u691C\\u51FA\\u3055\\u308C\\u305F\\u4E00\\u81F4\\u9805\\u76EE\\u306E\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC \\u30DE\\u30FC\\u30AB\\u30FC\\u306E\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u9078\\u629E\\u7BC4\\u56F2\\u3092\\u5F37\\u8ABF\\u8868\\u793A\\u3059\\u308B\\u305F\\u3081\\u306E\\u6982\\u8981\\u30EB\\u30FC\\u30E9\\u30FC \\u30DE\\u30FC\\u30AB\\u30FC\\u306E\\u8272\\u3002\\u3053\\u306E\\u8272\\u306F\\u3001\\u57FA\\u672C\\u88C5\\u98FE\\u304C\\u975E\\u8868\\u793A\\u306B\\u306A\\u3089\\u306A\\u3044\\u3088\\u3046\\u4E0D\\u900F\\u660E\\u306B\\u3059\\u308B\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3002\",\"\\u4E00\\u81F4\\u3092\\u691C\\u7D22\\u3059\\u308B\\u305F\\u3081\\u306E\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7 \\u30DE\\u30FC\\u30AB\\u30FC\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u3092\\u7E70\\u308A\\u8FD4\\u3057\\u9078\\u629E\\u3059\\u308B\\u7BC4\\u56F2\\u306E\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7 \\u30DE\\u30FC\\u30AB\\u30FC\\u306E\\u8272\\u3002\",\"\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u9078\\u629E\\u7BC4\\u56F2\\u306E\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7 \\u30DE\\u30FC\\u30AB\\u30FC\\u306E\\u8272\\u3002\",\"\\u30A8\\u30E9\\u30FC\\u306E\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7 \\u30DE\\u30FC\\u30AB\\u30FC\\u306E\\u8272\\u3002\",\"\\u8B66\\u544A\\u306E\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7 \\u30DE\\u30FC\\u30AB\\u30FC\\u306E\\u8272\\u3002\",\"\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7\\u306E\\u80CC\\u666F\\u8272\\u3002\",'\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7\\u306B\\u30EC\\u30F3\\u30C0\\u30EA\\u30F3\\u30B0\\u3055\\u308C\\u308B\\u524D\\u666F\\u8981\\u7D20\\u306E\\u4E0D\\u900F\\u660E\\u5EA6\\u3002\\u305F\\u3068\\u3048\\u3070\\u3001\"#000000c0\" \\u3067\\u306F\\u300175% \\u306E\\u4E0D\\u900F\\u660E\\u5EA6\\u3067\\u8981\\u7D20\\u3092\\u30EC\\u30F3\\u30C0\\u30EA\\u30F3\\u30B0\\u3057\\u307E\\u3059\\u3002',\"\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7 \\u30B9\\u30E9\\u30A4\\u30C0\\u30FC\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30DB\\u30D0\\u30FC\\u30EA\\u30F3\\u30B0\\u6642\\u306E\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7 \\u30B9\\u30E9\\u30A4\\u30C0\\u30FC\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u30AF\\u30EA\\u30C3\\u30AF\\u3057\\u305F\\u3068\\u304D\\u306E\\u30DF\\u30CB\\u30DE\\u30C3\\u30D7 \\u30B9\\u30E9\\u30A4\\u30C0\\u30FC\\u306E\\u80CC\\u666F\\u8272\\u3002\",\"\\u554F\\u984C\\u306E\\u30A8\\u30E9\\u30FC \\u30A2\\u30A4\\u30B3\\u30F3\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u8272\\u3002\",\"\\u554F\\u984C\\u306E\\u8B66\\u544A\\u30A2\\u30A4\\u30B3\\u30F3\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u8272\\u3002\",\"\\u554F\\u984C\\u60C5\\u5831\\u30A2\\u30A4\\u30B3\\u30F3\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u8272\\u3002\",\"\\u30B0\\u30E9\\u30D5\\u3067\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u524D\\u666F\\u8272\\u3002\",\"\\u30B0\\u30E9\\u30D5\\u306E\\u6C34\\u5E73\\u7DDA\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u8272\\u3002\",\"\\u30B0\\u30E9\\u30D5\\u306E\\u8996\\u899A\\u5316\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u8D64\\u8272\\u3002\",\"\\u30B0\\u30E9\\u30D5\\u306E\\u8996\\u899A\\u5316\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u9752\\u8272\\u3002\",\"\\u30B0\\u30E9\\u30D5\\u306E\\u8996\\u899A\\u5316\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u9EC4\\u8272\\u3002\",\"\\u30B0\\u30E9\\u30D5\\u306E\\u8996\\u899A\\u5316\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u30AA\\u30EC\\u30F3\\u30B8\\u8272\\u3002\",\"\\u30B0\\u30E9\\u30D5\\u306E\\u8996\\u899A\\u5316\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u7DD1\\u8272\\u3002\",\"\\u30B0\\u30E9\\u30D5\\u306E\\u8996\\u899A\\u5316\\u306B\\u4F7F\\u7528\\u3055\\u308C\\u308B\\u7D2B\\u8272\\u3002\"],\"vs/platform/theme/common/iconRegistry\":[\"\\u4F7F\\u7528\\u3059\\u308B\\u30D5\\u30A9\\u30F3\\u30C8\\u306E ID\\u3002\\u8A2D\\u5B9A\\u3055\\u308C\\u3066\\u3044\\u306A\\u3044\\u5834\\u5408\\u306F\\u3001\\u6700\\u521D\\u306B\\u5B9A\\u7FA9\\u3055\\u308C\\u3066\\u3044\\u308B\\u30D5\\u30A9\\u30F3\\u30C8\\u304C\\u4F7F\\u7528\\u3055\\u308C\\u307E\\u3059\\u3002\",\"\\u30A2\\u30A4\\u30B3\\u30F3\\u5B9A\\u7FA9\\u306B\\u95A2\\u9023\\u4ED8\\u3051\\u3089\\u308C\\u305F\\u30D5\\u30A9\\u30F3\\u30C8\\u6587\\u5B57\\u3002\",\"\\u30A6\\u30A3\\u30B8\\u30A7\\u30C3\\u30C8\\u306B\\u3042\\u308B\\u9589\\u3058\\u308B\\u30A2\\u30AF\\u30B7\\u30E7\\u30F3\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u524D\\u306E\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u5834\\u6240\\u306B\\u79FB\\u52D5\\u3059\\u308B\\u305F\\u3081\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\",\"\\u6B21\\u306E\\u30A8\\u30C7\\u30A3\\u30BF\\u30FC\\u306E\\u5834\\u6240\\u306B\\u79FB\\u52D5\\u3059\\u308B\\u305F\\u3081\\u306E\\u30A2\\u30A4\\u30B3\\u30F3\\u3002\"],\"vs/platform/undoRedo/common/undoRedoService\":[\"\\u6B21\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u304C\\u9589\\u3058\\u3089\\u308C\\u3001\\u30C7\\u30A3\\u30B9\\u30AF\\u4E0A\\u3067\\u5909\\u66F4\\u3055\\u308C\\u307E\\u3057\\u305F: {0}\\u3002\",\"\\u4EE5\\u4E0B\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u306F\\u4E92\\u63DB\\u6027\\u306E\\u306A\\u3044\\u65B9\\u6CD5\\u3067\\u5909\\u66F4\\u3055\\u308C\\u307E\\u3057\\u305F: {0}\\u3002\",\"\\u3059\\u3079\\u3066\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u3067 '{0}' \\u3092\\u5143\\u306B\\u623B\\u305B\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\\u3002{1}\",\"\\u3059\\u3079\\u3066\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u3067 '{0}' \\u3092\\u5143\\u306B\\u623B\\u305B\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\\u3002{1}\",\"{1} \\u306B\\u5909\\u66F4\\u304C\\u52A0\\u3048\\u3089\\u308C\\u305F\\u305F\\u3081\\u3001\\u3059\\u3079\\u3066\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u3067 '{0}' \\u3092\\u5143\\u306B\\u623B\\u305B\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\",\"{1} \\u3067\\u5143\\u306B\\u623B\\u3059\\u307E\\u305F\\u306F\\u3084\\u308A\\u76F4\\u3057\\u64CD\\u4F5C\\u304C\\u65E2\\u306B\\u5B9F\\u884C\\u3055\\u308C\\u3066\\u3044\\u308B\\u305F\\u3081\\u3001\\u3059\\u3079\\u3066\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u306B\\u5BFE\\u3057\\u3066 '{0}' \\u3092\\u5143\\u306B\\u623B\\u3059\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\",\"\\u5143\\u306B\\u623B\\u3059\\u307E\\u305F\\u306F\\u3084\\u308A\\u76F4\\u3057\\u64CD\\u4F5C\\u304C\\u305D\\u306E\\u671F\\u9593\\u306B\\u5B9F\\u884C\\u4E2D\\u3067\\u3042\\u3063\\u305F\\u305F\\u3081\\u3001\\u3059\\u3079\\u3066\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u306B\\u5BFE\\u3057\\u3066 '{0}' \\u3092\\u5143\\u306B\\u623B\\u3059\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\",\"\\u3059\\u3079\\u3066\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u3067 '{0}' \\u3092\\u5143\\u306B\\u623B\\u3057\\u307E\\u3059\\u304B?\",\"{0} \\u500B\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u3067\\u5143\\u306B\\u623B\\u3059(&&U)\",\"\\u3053\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u3092\\u5143\\u306B\\u623B\\u3059\",\"\\u5143\\u306B\\u623B\\u3059\\u307E\\u305F\\u306F\\u3084\\u308A\\u76F4\\u3057\\u64CD\\u4F5C\\u304C\\u65E2\\u306B\\u5B9F\\u884C\\u3055\\u308C\\u3066\\u3044\\u308B\\u305F\\u3081\\u3001'{0}' \\u3092\\u5143\\u306B\\u623B\\u3059\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\\u3002\",\"'{0}' \\u3092\\u5143\\u306B\\u623B\\u3057\\u307E\\u3059\\u304B?\",\"\\u306F\\u3044(&&Y)\",\"\\u3044\\u3044\\u3048\",\"\\u3059\\u3079\\u3066\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u3067 '{0}' \\u3092\\u3084\\u308A\\u76F4\\u3057\\u3067\\u304D\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\\u3002{1}\",\"\\u3059\\u3079\\u3066\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u3067 '{0}' \\u3092\\u3084\\u308A\\u76F4\\u3057\\u3067\\u304D\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\\u3002{1}\",\"{1} \\u306B\\u5909\\u66F4\\u304C\\u52A0\\u3048\\u3089\\u308C\\u305F\\u305F\\u3081\\u3001\\u3059\\u3079\\u3066\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u3067 '{0}' \\u3092\\u518D\\u5B9F\\u884C\\u3067\\u304D\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\",\"{1} \\u3067\\u5143\\u306B\\u623B\\u3059\\u307E\\u305F\\u306F\\u3084\\u308A\\u76F4\\u3057\\u64CD\\u4F5C\\u304C\\u65E2\\u306B\\u5B9F\\u884C\\u3055\\u308C\\u3066\\u3044\\u308B\\u305F\\u3081\\u3001\\u3059\\u3079\\u3066\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u306B\\u5BFE\\u3057\\u3066 '{0}' \\u3092\\u3084\\u308A\\u76F4\\u3059\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\",\"\\u5143\\u306B\\u623B\\u3059\\u307E\\u305F\\u306F\\u3084\\u308A\\u76F4\\u3057\\u64CD\\u4F5C\\u304C\\u305D\\u306E\\u671F\\u9593\\u306B\\u5B9F\\u884C\\u4E2D\\u3067\\u3042\\u3063\\u305F\\u305F\\u3081\\u3001\\u3059\\u3079\\u3066\\u306E\\u30D5\\u30A1\\u30A4\\u30EB\\u306B\\u5BFE\\u3057\\u3066 '{0}' \\u3092\\u3084\\u308A\\u76F4\\u3059\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\",\"\\u5143\\u306B\\u623B\\u3059\\u307E\\u305F\\u306F\\u3084\\u308A\\u76F4\\u3057\\u64CD\\u4F5C\\u304C\\u65E2\\u306B\\u5B9F\\u884C\\u3055\\u308C\\u3066\\u3044\\u308B\\u305F\\u3081\\u3001'{0}' \\u3092\\u3084\\u308A\\u76F4\\u3059\\u3053\\u3068\\u306F\\u3067\\u304D\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\\u3002\"],\"vs/platform/workspace/common/workspace\":[\"\\u30B3\\u30FC\\u30C9 \\u30EF\\u30FC\\u30AF\\u30B9\\u30DA\\u30FC\\u30B9\"]});\n\n//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.ja.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/editor/editor.main.nls.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/editor/editor.main.nls\",{\"vs/base/browser/ui/actionbar/actionViewItems\":[\"{0} ({1})\"],\"vs/base/browser/ui/findinput/findInput\":[\"input\"],\"vs/base/browser/ui/findinput/findInputToggles\":[\"Match Case\",\"Match Whole Word\",\"Use Regular Expression\"],\"vs/base/browser/ui/findinput/replaceInput\":[\"input\",\"Preserve Case\"],\"vs/base/browser/ui/hover/hoverWidget\":[\"Inspect this in the accessible view with {0}.\",\"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\"],\"vs/base/browser/ui/iconLabel/iconLabelHover\":[\"Loading...\"],\"vs/base/browser/ui/inputbox/inputBox\":[\"Error: {0}\",\"Warning: {0}\",\"Info: {0}\",\"for history\",\"Cleared Input\"],\"vs/base/browser/ui/keybindingLabel/keybindingLabel\":[\"Unbound\"],\"vs/base/browser/ui/selectBox/selectBoxCustom\":[\"Select Box\"],\"vs/base/browser/ui/toolbar/toolbar\":[\"More Actions...\"],\"vs/base/browser/ui/tree/abstractTree\":[\"Filter\",\"Fuzzy Match\",\"Type to filter\",\"Type to search\",\"Type to search\",\"Close\",\"No elements found.\"],\"vs/base/common/actions\":[\"(empty)\"],\"vs/base/common/errorMessage\":[\"{0}: {1}\",\"A system error occurred ({0})\",\"An unknown error occurred. Please consult the log for more details.\",\"An unknown error occurred. Please consult the log for more details.\",\"{0} ({1} errors in total)\",\"An unknown error occurred. Please consult the log for more details.\"],\"vs/base/common/keybindingLabels\":[\"Ctrl\",\"Shift\",\"Alt\",\"Windows\",\"Ctrl\",\"Shift\",\"Alt\",\"Super\",\"Control\",\"Shift\",\"Option\",\"Command\",\"Control\",\"Shift\",\"Alt\",\"Windows\",\"Control\",\"Shift\",\"Alt\",\"Super\"],\"vs/base/common/platform\":[\"_\"],\"vs/editor/browser/controller/textAreaHandler\":[\"editor\",\"The editor is not accessible at this time.\",\"{0} To enable screen reader optimized mode, use {1}\",\"{0} To enable screen reader optimized mode, open the quick pick with {1} and run the command Toggle Screen Reader Accessibility Mode, which is currently not triggerable via keyboard.\",\"{0} Please assign a keybinding for the command Toggle Screen Reader Accessibility Mode by accessing the keybindings editor with {1} and run it.\"],\"vs/editor/browser/coreCommands\":[\"Stick to the end even when going to longer lines\",\"Stick to the end even when going to longer lines\",\"Removed secondary cursors\"],\"vs/editor/browser/editorExtensions\":[\"&&Undo\",\"Undo\",\"&&Redo\",\"Redo\",\"&&Select All\",\"Select All\"],\"vs/editor/browser/widget/codeEditorWidget\":[\"The number of cursors has been limited to {0}. Consider using [find and replace](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) for larger changes or increase the editor multi cursor limit setting.\",\"Increase Multi Cursor Limit\"],\"vs/editor/browser/widget/diffEditor.contribution\":[\"Accessible Diff Viewer\",\"Go to Next Difference\",\"Open Accessible Diff Viewer\",\"Go to Previous Difference\"],\"vs/editor/browser/widget/diffEditorWidget\":[\"Line decoration for inserts in the diff editor.\",\"Line decoration for removals in the diff editor.\",\" use Shift + F7 to navigate changes\",\"Cannot compare files because one file is too large.\",\"Click to revert change\"],\"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\":[\"Icon for 'Insert' in accessible diff viewer.\",\"Icon for 'Remove' in accessible diff viewer.\",\"Icon for 'Close' in accessible diff viewer.\",\"Close\",\"Accessible Diff Viewer. Use arrow up and down to navigate.\",\"no lines changed\",\"1 line changed\",\"{0} lines changed\",\"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}\",\"blank\",\"{0} unchanged line {1}\",\"{0} original line {1} modified line {2}\",\"+ {0} modified line {1}\",\"- {0} original line {1}\"],\"vs/editor/browser/widget/diffEditorWidget2/colors\":[\"The border color for text that got moved in the diff editor.\",\"The active border color for text that got moved in the diff editor.\"],\"vs/editor/browser/widget/diffEditorWidget2/decorations\":[\"Line decoration for inserts in the diff editor.\",\"Line decoration for removals in the diff editor.\",\"Click to revert change\"],\"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\":[\" use {0} to open the accessibility help.\"],\"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\":[\"Copy deleted lines\",\"Copy deleted line\",\"Copy changed lines\",\"Copy changed line\",\"Copy deleted line ({0})\",\"Copy changed line ({0})\",\"Revert this change\"],\"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\":[\"Code moved with changes to line {0}-{1}\",\"Code moved with changes from line {0}-{1}\",\"Code moved to line {0}-{1}\",\"Code moved from line {0}-{1}\"],\"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\":[\"Fold Unchanged Region\",\"Click or drag to show more above\",\"Show all\",\"Click or drag to show more below\",\"{0} hidden lines\",\"Double click to unfold\"],\"vs/editor/browser/widget/diffReview\":[\"Icon for 'Insert' in diff review.\",\"Icon for 'Remove' in diff review.\",\"Icon for 'Close' in diff review.\",\"Close\",\"no lines changed\",\"1 line changed\",\"{0} lines changed\",\"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}\",\"blank\",\"{0} unchanged line {1}\",\"{0} original line {1} modified line {2}\",\"+ {0} modified line {1}\",\"- {0} original line {1}\"],\"vs/editor/browser/widget/inlineDiffMargin\":[\"Copy deleted lines\",\"Copy deleted line\",\"Copy changed lines\",\"Copy changed line\",\"Copy deleted line ({0})\",\"Copy changed line ({0})\",\"Revert this change\",\"Copy deleted line ({0})\",\"Copy changed line ({0})\"],\"vs/editor/common/config/editorConfigurationSchema\":[\"Editor\",\"The number of spaces a tab is equal to. This setting is overridden based on the file contents when {0} is on.\",'The number of spaces used for indentation or `\"tabSize\"` to use the value from `#editor.tabSize#`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.',\"Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when {0} is on.\",\"Controls whether {0} and {1} will be automatically detected when a file is opened based on the file contents.\",\"Remove trailing auto inserted whitespace.\",\"Special handling for large files to disable certain memory intensive features.\",\"Controls whether completions should be computed based on words in the document.\",\"Only suggest words from the active document.\",\"Suggest words from all open documents of the same language.\",\"Suggest words from all open documents.\",\"Controls from which documents word based completions are computed.\",\"Semantic highlighting enabled for all color themes.\",\"Semantic highlighting disabled for all color themes.\",\"Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.\",\"Controls whether the semanticHighlighting is shown for the languages that support it.\",\"Keep peek editors open even when double-clicking their content or when hitting `Escape`.\",\"Lines above this length will not be tokenized for performance reasons\",\"Controls whether the tokenization should happen asynchronously on a web worker.\",\"Controls whether async tokenization should be logged. For debugging only.\",\"Controls whether async tokenization should be verified against legacy background tokenization. Might slow down tokenization. For debugging only.\",\"Defines the bracket symbols that increase or decrease the indentation.\",\"The opening bracket character or string sequence.\",\"The closing bracket character or string sequence.\",\"Defines the bracket pairs that are colorized by their nesting level if bracket pair colorization is enabled.\",\"The opening bracket character or string sequence.\",\"The closing bracket character or string sequence.\",\"Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.\",\"Maximum file size in MB for which to compute diffs. Use 0 for no limit.\",\"Controls whether the diff editor shows the diff side by side or inline.\",\"If the diff editor width is smaller than this value, the inline view is used.\",\"If enabled and the editor width is too small, the inline view is used.\",\"When enabled, the diff editor shows arrows in its glyph margin to revert changes.\",\"When enabled, the diff editor ignores changes in leading or trailing whitespace.\",\"Controls whether the diff editor shows +/- indicators for added/removed changes.\",\"Controls whether the editor shows CodeLens.\",\"Lines will never wrap.\",\"Lines will wrap at the viewport width.\",\"Lines will wrap according to the {0} setting.\",\"Uses the legacy diffing algorithm.\",\"Uses the advanced diffing algorithm.\",\"Controls whether the diff editor shows unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as a minimum for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as context when comparing unchanged regions. Only works when {0} is set.\",\"Controls whether the diff editor should show detected code moves. Only works when {0} is set.\",\"Controls whether the diff editor uses the new or the old implementation.\",\"Controls whether the diff editor shows empty decorations to see where characters got inserted or deleted.\"],\"vs/editor/common/config/editorOptions\":[\"Use platform APIs to detect when a Screen Reader is attached\",\"Optimize for usage with a Screen Reader\",\"Assume a screen reader is not attached\",\"Controls if the UI should run in a mode where it is optimized for screen readers.\",\"Controls whether a space character is inserted when commenting.\",\"Controls if empty lines should be ignored with toggle, add or remove actions for line comments.\",\"Controls whether copying without a selection copies the current line.\",\"Controls whether the cursor should jump to find matches while typing.\",\"Never seed search string from the editor selection.\",\"Always seed search string from the editor selection, including word at cursor position.\",\"Only seed search string from the editor selection.\",\"Controls whether the search string in the Find Widget is seeded from the editor selection.\",\"Never turn on Find in Selection automatically (default).\",\"Always turn on Find in Selection automatically.\",\"Turn on Find in Selection automatically when multiple lines of content are selected.\",\"Controls the condition for turning on Find in Selection automatically.\",\"Controls whether the Find Widget should read or modify the shared find clipboard on macOS.\",\"Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.\",\"Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.\",\"Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.\",\"Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.\",\"Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property.\",\"Enables/Disables the translation from font-weight to font-variation-settings. Change this to a string for fine-grained control of the 'font-variation-settings' CSS property.\",\"Explicit 'font-variation-settings' CSS property. A boolean can be passed instead if one only needs to translate font-weight to font-variation-settings.\",\"Configures font variations. Can be either a boolean to enable/disable the translation from font-weight to font-variation-settings or a string for the value of the CSS 'font-variation-settings' property.\",\"Controls the font size in pixels.\",'Only \"normal\" and \"bold\" keywords or numbers between 1 and 1000 are allowed.','Controls the font weight. Accepts \"normal\" and \"bold\" keywords or numbers between 1 and 1000.',\"Show Peek view of the results (default)\",\"Go to the primary result and show a Peek view\",\"Go to the primary result and enable Peek-less navigation to others\",\"This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.\",\"Controls the behavior the 'Go to Definition'-command when multiple target locations exist.\",\"Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.\",\"Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.\",\"Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.\",\"Controls the behavior the 'Go to References'-command when multiple target locations exist.\",\"Alternative command id that is being executed when the result of 'Go to Definition' is the current location.\",\"Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.\",\"Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.\",\"Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.\",\"Alternative command id that is being executed when the result of 'Go to Reference' is the current location.\",\"Controls whether the hover is shown.\",\"Controls the delay in milliseconds after which the hover is shown.\",\"Controls whether the hover should remain visible when mouse is moved over it.\",\"Prefer showing hovers above the line, if there's space.\",\"Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width.\",\"Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.\",\"Controls the algorithm that computes wrapping points. Note that when in accessibility mode, advanced will be used for the best experience.\",\"Enables the Code Action lightbulb in the editor.\",\"Shows the nested current scopes during the scroll at the top of the editor.\",\"Defines the maximum number of sticky lines to show.\",\"Defines the model to use for determining which lines to stick. If the outline model does not exist, it will fall back on the folding provider model which falls back on the indentation model. This order is respected in all three cases.\",\"Enable scrolling of the sticky scroll widget with the editor's horizontal scrollbar.\",\"Enables the inlay hints in the editor.\",\"Inlay hints are enabled\",\"Inlay hints are showing by default and hide when holding {0}\",\"Inlay hints are hidden by default and show when holding {0}\",\"Inlay hints are disabled\",\"Controls font size of inlay hints in the editor. As default the {0} is used when the configured value is less than {1} or greater than the editor font size.\",\"Controls font family of inlay hints in the editor. When set to empty, the {0} is used.\",\"Enables the padding around the inlay hints in the editor.\",`Controls the line height. \n - Use 0 to automatically compute the line height from the font size.\n - Values between 0 and 8 will be used as a multiplier with the font size.\n - Values greater than or equal to 8 will be used as effective values.`,\"Controls whether the minimap is shown.\",\"Controls whether the minimap is hidden automatically.\",\"The minimap has the same size as the editor contents (and might scroll).\",\"The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling).\",\"The minimap will shrink as necessary to never be larger than the editor (no scrolling).\",\"Controls the size of the minimap.\",\"Controls the side where to render the minimap.\",\"Controls when the minimap slider is shown.\",\"Scale of content drawn in the minimap: 1, 2 or 3.\",\"Render the actual characters on a line as opposed to color blocks.\",\"Limit the width of the minimap to render at most a certain number of columns.\",\"Controls the amount of space between the top edge of the editor and the first line.\",\"Controls the amount of space between the bottom edge of the editor and the last line.\",\"Enables a pop-up that shows parameter documentation and type information as you type.\",\"Controls whether the parameter hints menu cycles or closes when reaching the end of the list.\",\"Quick suggestions show inside the suggest widget\",\"Quick suggestions show as ghost text\",\"Quick suggestions are disabled\",\"Enable quick suggestions inside strings.\",\"Enable quick suggestions inside comments.\",\"Enable quick suggestions outside of strings and comments.\",\"Controls whether suggestions should automatically show up while typing. This can be controlled for typing in comments, strings, and other code. Quick suggestion can be configured to show as ghost text or with the suggest widget. Also be aware of the '{0}'-setting which controls if suggestions are triggered by special characters.\",\"Line numbers are not rendered.\",\"Line numbers are rendered as absolute number.\",\"Line numbers are rendered as distance in lines to cursor position.\",\"Line numbers are rendered every 10 lines.\",\"Controls the display of line numbers.\",\"Number of monospace characters at which this editor ruler will render.\",\"Color of this editor ruler.\",\"Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.\",\"The vertical scrollbar will be visible only when necessary.\",\"The vertical scrollbar will always be visible.\",\"The vertical scrollbar will always be hidden.\",\"Controls the visibility of the vertical scrollbar.\",\"The horizontal scrollbar will be visible only when necessary.\",\"The horizontal scrollbar will always be visible.\",\"The horizontal scrollbar will always be hidden.\",\"Controls the visibility of the horizontal scrollbar.\",\"The width of the vertical scrollbar.\",\"The height of the horizontal scrollbar.\",\"Controls whether clicks scroll by page or jump to click position.\",\"Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.\",\"Controls whether characters that just reserve space or have no width at all are highlighted.\",\"Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.\",\"Controls whether characters in comments should also be subject to Unicode highlighting.\",\"Controls whether characters in strings should also be subject to Unicode highlighting.\",\"Defines allowed characters that are not being highlighted.\",\"Unicode characters that are common in allowed locales are not being highlighted.\",\"Controls whether to automatically show inline suggestions in the editor.\",\"Show the inline suggestion toolbar whenever an inline suggestion is shown.\",\"Show the inline suggestion toolbar when hovering over an inline suggestion.\",\"Controls when to show the inline suggestion toolbar.\",\"Controls how inline suggestions interact with the suggest widget. If enabled, the suggest widget is not shown automatically when inline suggestions are available.\",\"Controls whether bracket pair colorization is enabled or not. Use {0} to override the bracket highlight colors.\",\"Controls whether each bracket type has its own independent color pool.\",\"Enables bracket pair guides.\",\"Enables bracket pair guides only for the active bracket pair.\",\"Disables bracket pair guides.\",\"Controls whether bracket pair guides are enabled or not.\",\"Enables horizontal guides as addition to vertical bracket pair guides.\",\"Enables horizontal guides only for the active bracket pair.\",\"Disables horizontal bracket pair guides.\",\"Controls whether horizontal bracket pair guides are enabled or not.\",\"Controls whether the editor should highlight the active bracket pair.\",\"Controls whether the editor should render indent guides.\",\"Highlights the active indent guide.\",\"Highlights the active indent guide even if bracket guides are highlighted.\",\"Do not highlight the active indent guide.\",\"Controls whether the editor should highlight the active indent guide.\",\"Insert suggestion without overwriting text right of the cursor.\",\"Insert suggestion and overwrite text right of the cursor.\",\"Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.\",\"Controls whether filtering and sorting suggestions accounts for small typos.\",\"Controls whether sorting favors words that appear close to the cursor.\",\"Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).\",\"Always select a suggestion when automatically triggering IntelliSense.\",\"Never select a suggestion when automatically triggering IntelliSense.\",\"Select a suggestion only when triggering IntelliSense from a trigger character.\",\"Select a suggestion only when triggering IntelliSense as you type.\",\"Controls whether a suggestion is selected when the widget shows. Note that this only applies to automatically triggered suggestions (`#editor.quickSuggestions#` and `#editor.suggestOnTriggerCharacters#`) and that a suggestion is always selected when explicitly invoked, e.g via `Ctrl+Space`.\",\"Controls whether an active snippet prevents quick suggestions.\",\"Controls whether to show or hide icons in suggestions.\",\"Controls the visibility of the status bar at the bottom of the suggest widget.\",\"Controls whether to preview the suggestion outcome in the editor.\",\"Controls whether suggest details show inline with the label or only in the details widget.\",\"This setting is deprecated. The suggest widget can now be resized.\",\"This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.\",\"When enabled IntelliSense shows `method`-suggestions.\",\"When enabled IntelliSense shows `function`-suggestions.\",\"When enabled IntelliSense shows `constructor`-suggestions.\",\"When enabled IntelliSense shows `deprecated`-suggestions.\",\"When enabled IntelliSense filtering requires that the first character matches on a word start. For example, `c` on `Console` or `WebContext` but _not_ on `description`. When disabled IntelliSense will show more results but still sorts them by match quality.\",\"When enabled IntelliSense shows `field`-suggestions.\",\"When enabled IntelliSense shows `variable`-suggestions.\",\"When enabled IntelliSense shows `class`-suggestions.\",\"When enabled IntelliSense shows `struct`-suggestions.\",\"When enabled IntelliSense shows `interface`-suggestions.\",\"When enabled IntelliSense shows `module`-suggestions.\",\"When enabled IntelliSense shows `property`-suggestions.\",\"When enabled IntelliSense shows `event`-suggestions.\",\"When enabled IntelliSense shows `operator`-suggestions.\",\"When enabled IntelliSense shows `unit`-suggestions.\",\"When enabled IntelliSense shows `value`-suggestions.\",\"When enabled IntelliSense shows `constant`-suggestions.\",\"When enabled IntelliSense shows `enum`-suggestions.\",\"When enabled IntelliSense shows `enumMember`-suggestions.\",\"When enabled IntelliSense shows `keyword`-suggestions.\",\"When enabled IntelliSense shows `text`-suggestions.\",\"When enabled IntelliSense shows `color`-suggestions.\",\"When enabled IntelliSense shows `file`-suggestions.\",\"When enabled IntelliSense shows `reference`-suggestions.\",\"When enabled IntelliSense shows `customcolor`-suggestions.\",\"When enabled IntelliSense shows `folder`-suggestions.\",\"When enabled IntelliSense shows `typeParameter`-suggestions.\",\"When enabled IntelliSense shows `snippet`-suggestions.\",\"When enabled IntelliSense shows `user`-suggestions.\",\"When enabled IntelliSense shows `issues`-suggestions.\",\"Whether leading and trailing whitespace should always be selected.\",\"Whether subwords (like 'foo' in 'fooBar' or 'foo_bar') should be selected.\",\"No indentation. Wrapped lines begin at column 1.\",\"Wrapped lines get the same indentation as the parent.\",\"Wrapped lines get +1 indentation toward the parent.\",\"Wrapped lines get +2 indentation toward the parent.\",\"Controls the indentation of wrapped lines.\",\"Controls whether you can drag and drop a file into a text editor by holding down `shift` (instead of opening the file in an editor).\",\"Controls if a widget is shown when dropping files into the editor. This widget lets you control how the file is dropped.\",\"Show the drop selector widget after a file is dropped into the editor.\",\"Never show the drop selector widget. Instead the default drop provider is always used.\",\"Controls whether you can paste content in different ways.\",\"Controls if a widget is shown when pasting content in to the editor. This widget lets you control how the file is pasted.\",\"Show the paste selector widget after content is pasted into the editor.\",\"Never show the paste selector widget. Instead the default pasting behavior is always used.\",\"Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.\",\"Only accept a suggestion with `Enter` when it makes a textual change.\",\"Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.\",\"Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default.\",\"Editor content\",\"Control whether inline suggestions are announced by a screen reader.\",\"Use language configurations to determine when to autoclose brackets.\",\"Autoclose brackets only when the cursor is to the left of whitespace.\",\"Controls whether the editor should automatically close brackets after the user adds an opening bracket.\",\"Remove adjacent closing quotes or brackets only if they were automatically inserted.\",\"Controls whether the editor should remove adjacent closing quotes or brackets when deleting.\",\"Type over closing quotes or brackets only if they were automatically inserted.\",\"Controls whether the editor should type over closing quotes or brackets.\",\"Use language configurations to determine when to autoclose quotes.\",\"Autoclose quotes only when the cursor is to the left of whitespace.\",\"Controls whether the editor should automatically close quotes after the user adds an opening quote.\",\"The editor will not insert indentation automatically.\",\"The editor will keep the current line's indentation.\",\"The editor will keep the current line's indentation and honor language defined brackets.\",\"The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages.\",\"The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.\",\"Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.\",\"Use language configurations to determine when to automatically surround selections.\",\"Surround with quotes but not brackets.\",\"Surround with brackets but not quotes.\",\"Controls whether the editor should automatically surround selections when typing quotes or brackets.\",\"Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.\",\"Controls whether the editor shows CodeLens.\",\"Controls the font family for CodeLens.\",\"Controls the font size in pixels for CodeLens. When set to 0, 90% of `#editor.fontSize#` is used.\",\"Controls whether the editor should render the inline color decorators and color picker.\",\"Make the color picker appear both on click and hover of the color decorator\",\"Make the color picker appear on hover of the color decorator\",\"Make the color picker appear on click of the color decorator\",\"Controls the condition to make a color picker appear from a color decorator\",\"Controls the max number of color decorators that can be rendered in an editor at once.\",\"Enable that the selection with the mouse and keys is doing column selection.\",\"Controls whether syntax highlighting should be copied into the clipboard.\",\"Control the cursor animation style.\",\"Smooth caret animation is disabled.\",\"Smooth caret animation is enabled only when the user moves the cursor with an explicit gesture.\",\"Smooth caret animation is always enabled.\",\"Controls whether the smooth caret animation should be enabled.\",\"Controls the cursor style.\",\"Controls the minimal number of visible leading lines (minimum 0) and trailing lines (minimum 1) surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.\",\"`cursorSurroundingLines` is enforced only when triggered via the keyboard or API.\",\"`cursorSurroundingLines` is enforced always.\",\"Controls when `cursorSurroundingLines` should be enforced.\",\"Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.\",\"Controls whether the editor should allow moving selections via drag and drop.\",\"Use a new rendering method with svgs.\",\"Use a new rendering method with font characters.\",\"Use the stable rendering method.\",\"Controls whether whitespace is rendered with a new, experimental method.\",\"Scrolling speed multiplier when pressing `Alt`.\",\"Controls whether the editor has code folding enabled.\",\"Use a language-specific folding strategy if available, else the indentation-based one.\",\"Use the indentation-based folding strategy.\",\"Controls the strategy for computing folding ranges.\",\"Controls whether the editor should highlight folded ranges.\",\"Controls whether the editor automatically collapses import ranges.\",\"The maximum number of foldable regions. Increasing this value may result in the editor becoming less responsive when the current source has a large number of foldable regions.\",\"Controls whether clicking on the empty content after a folded line will unfold the line.\",\"Controls the font family.\",\"Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.\",\"Controls whether the editor should automatically format the line after typing.\",\"Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.\",\"Controls whether the cursor should be hidden in the overview ruler.\",\"Controls the letter spacing in pixels.\",\"Controls whether the editor has linked editing enabled. Depending on the language, related symbols such as HTML tags, are updated while editing.\",\"Controls whether the editor should detect links and make them clickable.\",\"Highlight matching brackets.\",\"A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.\",\"Zoom the font of the editor when using mouse wheel and holding `Ctrl`.\",\"Merge multiple cursors when they are overlapping.\",\"Maps to `Control` on Windows and Linux and to `Command` on macOS.\",\"Maps to `Alt` on Windows and Linux and to `Option` on macOS.\",\"The modifier to be used to add multiple cursors with the mouse. The Go to Definition and Open Link mouse gestures will adapt such that they do not conflict with the [multicursor modifier](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).\",\"Each cursor pastes a single line of the text.\",\"Each cursor pastes the full text.\",\"Controls pasting when the line count of the pasted text matches the cursor count.\",\"Controls the max number of cursors that can be in an active editor at once.\",\"Controls whether the editor should highlight semantic symbol occurrences.\",\"Controls whether a border should be drawn around the overview ruler.\",\"Focus the tree when opening peek\",\"Focus the editor when opening peek\",\"Controls whether to focus the inline editor or the tree in the peek widget.\",\"Controls whether the Go to Definition mouse gesture always opens the peek widget.\",\"Controls the delay in milliseconds after which quick suggestions will show up.\",\"Controls whether the editor auto renames on type.\",\"Deprecated, use `editor.linkedEditing` instead.\",\"Controls whether the editor should render control characters.\",\"Render last line number when the file ends with a newline.\",\"Highlights both the gutter and the current line.\",\"Controls how the editor should render the current line highlight.\",\"Controls if the editor should render the current line highlight only when the editor is focused.\",\"Render whitespace characters except for single spaces between words.\",\"Render whitespace characters only on selected text.\",\"Render only trailing whitespace characters.\",\"Controls how the editor should render whitespace characters.\",\"Controls whether selections should have rounded corners.\",\"Controls the number of extra characters beyond which the editor will scroll horizontally.\",\"Controls whether the editor will scroll beyond the last line.\",\"Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.\",\"Controls whether the Linux primary clipboard should be supported.\",\"Controls whether the editor should highlight matches similar to the selection.\",\"Always show the folding controls.\",\"Never show the folding controls and reduce the gutter size.\",\"Only show the folding controls when the mouse is over the gutter.\",\"Controls when the folding controls on the gutter are shown.\",\"Controls fading out of unused code.\",\"Controls strikethrough deprecated variables.\",\"Show snippet suggestions on top of other suggestions.\",\"Show snippet suggestions below other suggestions.\",\"Show snippets suggestions with other suggestions.\",\"Do not show snippet suggestions.\",\"Controls whether snippets are shown with other suggestions and how they are sorted.\",\"Controls whether the editor will scroll using an animation.\",\"Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\",\"Font size for the suggest widget. When set to {0}, the value of {1} is used.\",\"Line height for the suggest widget. When set to {0}, the value of {1} is used. The minimum value is 8.\",\"Controls whether suggestions should automatically show up when typing trigger characters.\",\"Always select the first suggestion.\",\"Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently.\",\"Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.\",\"Controls how suggestions are pre-selected when showing the suggest list.\",\"Tab complete will insert the best matching suggestion when pressing tab.\",\"Disable tab completions.\",\"Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.\",\"Enables tab completions.\",\"Unusual line terminators are automatically removed.\",\"Unusual line terminators are ignored.\",\"Unusual line terminators prompt to be removed.\",\"Remove unusual line terminators that might cause problems.\",\"Inserting and deleting whitespace follows tab stops.\",\"Use the default line break rule.\",\"Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.\",\"Controls the word break rules used for Chinese/Japanese/Korean (CJK) text.\",\"Characters that will be used as word separators when doing word related navigations or operations.\",\"Lines will never wrap.\",\"Lines will wrap at the viewport width.\",\"Lines will wrap at `#editor.wordWrapColumn#`.\",\"Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.\",\"Controls how lines should wrap.\",\"Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.\",\"Controls whether inline color decorations should be shown using the default document color provider\",\"Controls whether the editor receives tabs or defers them to the workbench for navigation.\"],\"vs/editor/common/core/editorColorRegistry\":[\"Background color for the highlight of line at the cursor position.\",\"Background color for the border around the line at the cursor position.\",\"Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations.\",\"Background color of the border around highlighted ranges.\",\"Background color of highlighted symbol, like for go to definition or go next/previous symbol. The color must not be opaque so as not to hide underlying decorations.\",\"Background color of the border around highlighted symbols.\",\"Color of the editor cursor.\",\"The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.\",\"Color of whitespace characters in the editor.\",\"Color of editor line numbers.\",\"Color of the editor indentation guides.\",\"'editorIndentGuide.background' is deprecated. Use 'editorIndentGuide.background1' instead.\",\"Color of the active editor indentation guides.\",\"'editorIndentGuide.activeBackground' is deprecated. Use 'editorIndentGuide.activeBackground1' instead.\",\"Color of the editor indentation guides (1).\",\"Color of the editor indentation guides (2).\",\"Color of the editor indentation guides (3).\",\"Color of the editor indentation guides (4).\",\"Color of the editor indentation guides (5).\",\"Color of the editor indentation guides (6).\",\"Color of the active editor indentation guides (1).\",\"Color of the active editor indentation guides (2).\",\"Color of the active editor indentation guides (3).\",\"Color of the active editor indentation guides (4).\",\"Color of the active editor indentation guides (5).\",\"Color of the active editor indentation guides (6).\",\"Color of editor active line number\",\"Id is deprecated. Use 'editorLineNumber.activeForeground' instead.\",\"Color of editor active line number\",\"Color of the final editor line when editor.renderFinalNewline is set to dimmed.\",\"Color of the editor rulers.\",\"Foreground color of editor CodeLens\",\"Background color behind matching brackets\",\"Color for matching brackets boxes\",\"Color of the overview ruler border.\",\"Background color of the editor overview ruler.\",\"Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.\",\"Border color of unnecessary (unused) source code in the editor.\",`Opacity of unnecessary (unused) source code in the editor. For example, \"#000000c0\" will render the code with 75% opacity. For high contrast themes, use the  'editorUnnecessaryCode.border' theme color to underline unnecessary code instead of fading it out.`,\"Border color of ghost text in the editor.\",\"Foreground color of the ghost text in the editor.\",\"Background color of the ghost text in the editor.\",\"Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations.\",\"Overview ruler marker color for errors.\",\"Overview ruler marker color for warnings.\",\"Overview ruler marker color for infos.\",\"Foreground color of brackets (1). Requires enabling bracket pair colorization.\",\"Foreground color of brackets (2). Requires enabling bracket pair colorization.\",\"Foreground color of brackets (3). Requires enabling bracket pair colorization.\",\"Foreground color of brackets (4). Requires enabling bracket pair colorization.\",\"Foreground color of brackets (5). Requires enabling bracket pair colorization.\",\"Foreground color of brackets (6). Requires enabling bracket pair colorization.\",\"Foreground color of unexpected brackets.\",\"Background color of inactive bracket pair guides (1). Requires enabling bracket pair guides.\",\"Background color of inactive bracket pair guides (2). Requires enabling bracket pair guides.\",\"Background color of inactive bracket pair guides (3). Requires enabling bracket pair guides.\",\"Background color of inactive bracket pair guides (4). Requires enabling bracket pair guides.\",\"Background color of inactive bracket pair guides (5). Requires enabling bracket pair guides.\",\"Background color of inactive bracket pair guides (6). Requires enabling bracket pair guides.\",\"Background color of active bracket pair guides (1). Requires enabling bracket pair guides.\",\"Background color of active bracket pair guides (2). Requires enabling bracket pair guides.\",\"Background color of active bracket pair guides (3). Requires enabling bracket pair guides.\",\"Background color of active bracket pair guides (4). Requires enabling bracket pair guides.\",\"Background color of active bracket pair guides (5). Requires enabling bracket pair guides.\",\"Background color of active bracket pair guides (6). Requires enabling bracket pair guides.\",\"Border color used to highlight unicode characters.\",\"Background color used to highlight unicode characters.\"],\"vs/editor/common/editorContextKeys\":[\"Whether the editor text has focus (cursor is blinking)\",\"Whether the editor or an editor widget has focus (e.g. focus is in the find widget)\",\"Whether an editor or a rich text input has focus (cursor is blinking)\",\"Whether the editor is read-only\",\"Whether the context is a diff editor\",\"Whether the context is an embedded diff editor\",\"Whether a moved code block is selected for comparison\",\"Whether the accessible diff viewer is visible\",\"Whether the diff editor render side by side inline breakpoint is reached\",\"Whether `editor.columnSelection` is enabled\",\"Whether the editor has text selected\",\"Whether the editor has multiple selections\",\"Whether `Tab` will move focus out of the editor\",\"Whether the editor hover is visible\",\"Whether the editor hover is focused\",\"Whether the sticky scroll is focused\",\"Whether the sticky scroll is visible\",\"Whether the standalone color picker is visible\",\"Whether the standalone color picker is focused\",\"Whether the editor is part of a larger editor (e.g. notebooks)\",\"The language identifier of the editor\",\"Whether the editor has a completion item provider\",\"Whether the editor has a code actions provider\",\"Whether the editor has a code lens provider\",\"Whether the editor has a definition provider\",\"Whether the editor has a declaration provider\",\"Whether the editor has an implementation provider\",\"Whether the editor has a type definition provider\",\"Whether the editor has a hover provider\",\"Whether the editor has a document highlight provider\",\"Whether the editor has a document symbol provider\",\"Whether the editor has a reference provider\",\"Whether the editor has a rename provider\",\"Whether the editor has a signature help provider\",\"Whether the editor has an inline hints provider\",\"Whether the editor has a document formatting provider\",\"Whether the editor has a document selection formatting provider\",\"Whether the editor has multiple document formatting providers\",\"Whether the editor has multiple document selection formatting providers\"],\"vs/editor/common/languages\":[\"array\",\"boolean\",\"class\",\"constant\",\"constructor\",\"enumeration\",\"enumeration member\",\"event\",\"field\",\"file\",\"function\",\"interface\",\"key\",\"method\",\"module\",\"namespace\",\"null\",\"number\",\"object\",\"operator\",\"package\",\"property\",\"string\",\"struct\",\"type parameter\",\"variable\",\"{0} ({1})\"],\"vs/editor/common/languages/modesRegistry\":[\"Plain Text\"],\"vs/editor/common/model/editStack\":[\"Typing\"],\"vs/editor/common/standaloneStrings\":[\"Developer: Inspect Tokens\",\"Go to Line/Column...\",\"Show all Quick Access Providers\",\"Command Palette\",\"Show And Run Commands\",\"Go to Symbol...\",\"Go to Symbol by Category...\",\"Editor content\",\"Press Alt+F1 for Accessibility Options.\",\"Toggle High Contrast Theme\",\"Made {0} edits in {1} files\"],\"vs/editor/common/viewLayout/viewLineRenderer\":[\"Show more ({0})\",\"{0} chars\"],\"vs/editor/contrib/anchorSelect/browser/anchorSelect\":[\"Selection Anchor\",\"Anchor set at {0}:{1}\",\"Set Selection Anchor\",\"Go to Selection Anchor\",\"Select from Anchor to Cursor\",\"Cancel Selection Anchor\"],\"vs/editor/contrib/bracketMatching/browser/bracketMatching\":[\"Overview ruler marker color for matching brackets.\",\"Go to Bracket\",\"Select to Bracket\",\"Remove Brackets\",\"Go to &&Bracket\"],\"vs/editor/contrib/caretOperations/browser/caretOperations\":[\"Move Selected Text Left\",\"Move Selected Text Right\"],\"vs/editor/contrib/caretOperations/browser/transpose\":[\"Transpose Letters\"],\"vs/editor/contrib/clipboard/browser/clipboard\":[\"Cu&&t\",\"Cut\",\"Cut\",\"Cut\",\"&&Copy\",\"Copy\",\"Copy\",\"Copy\",\"Copy As\",\"Copy As\",\"Share\",\"Share\",\"Share\",\"&&Paste\",\"Paste\",\"Paste\",\"Paste\",\"Copy With Syntax Highlighting\"],\"vs/editor/contrib/codeAction/browser/codeAction\":[\"An unknown error occurred while applying the code action\"],\"vs/editor/contrib/codeAction/browser/codeActionCommands\":[\"Kind of the code action to run.\",\"Controls when the returned actions are applied.\",\"Always apply the first returned code action.\",\"Apply the first returned code action if it is the only one.\",\"Do not apply the returned code actions.\",\"Controls if only preferred code actions should be returned.\",\"Quick Fix...\",\"No code actions available\",\"No preferred code actions for '{0}' available\",\"No code actions for '{0}' available\",\"No preferred code actions available\",\"No code actions available\",\"Refactor...\",\"No preferred refactorings for '{0}' available\",\"No refactorings for '{0}' available\",\"No preferred refactorings available\",\"No refactorings available\",\"Source Action...\",\"No preferred source actions for '{0}' available\",\"No source actions for '{0}' available\",\"No preferred source actions available\",\"No source actions available\",\"Organize Imports\",\"No organize imports action available\",\"Fix All\",\"No fix all action available\",\"Auto Fix...\",\"No auto fixes available\"],\"vs/editor/contrib/codeAction/browser/codeActionContributions\":[\"Enable/disable showing group headers in the Code Action menu.\"],\"vs/editor/contrib/codeAction/browser/codeActionController\":[\"Hide Disabled\",\"Show Disabled\"],\"vs/editor/contrib/codeAction/browser/codeActionMenu\":[\"More Actions...\",\"Quick Fix\",\"Extract\",\"Inline\",\"Rewrite\",\"Move\",\"Surround With\",\"Source Action\"],\"vs/editor/contrib/codeAction/browser/lightBulbWidget\":[\"Show Code Actions. Preferred Quick Fix Available ({0})\",\"Show Code Actions ({0})\",\"Show Code Actions\"],\"vs/editor/contrib/codelens/browser/codelensController\":[\"Show CodeLens Commands For Current Line\"],\"vs/editor/contrib/colorPicker/browser/colorPickerWidget\":[\"Click to toggle color options (rgb/hsl/hex)\",\"Icon to close the color picker\"],\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\":[\"Show or Focus Standalone Color Picker\",\"&&Show or Focus Standalone Color Picker\",\"Hide the Color Picker\",\"Insert Color with Standalone Color Picker\"],\"vs/editor/contrib/comment/browser/comment\":[\"Toggle Line Comment\",\"&&Toggle Line Comment\",\"Add Line Comment\",\"Remove Line Comment\",\"Toggle Block Comment\",\"Toggle &&Block Comment\"],\"vs/editor/contrib/contextmenu/browser/contextmenu\":[\"Minimap\",\"Render Characters\",\"Vertical size\",\"Proportional\",\"Fill\",\"Fit\",\"Slider\",\"Mouse Over\",\"Always\",\"Show Editor Context Menu\"],\"vs/editor/contrib/cursorUndo/browser/cursorUndo\":[\"Cursor Undo\",\"Cursor Redo\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\":[\"Paste As...\",\"The id of the paste edit to try applying. If not provided, the editor will show a picker.\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\":[\"Whether the paste widget is showing\",\"Show paste options...\",\"Running paste handlers. Click to cancel\",\"Select Paste Action\",\"Running paste handlers\"],\"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\":[\"Built-in\",\"Insert Plain Text\",\"Insert Uris\",\"Insert Uri\",\"Insert Paths\",\"Insert Path\",\"Insert Relative Paths\",\"Insert Relative Path\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\":[\"Configures the default drop provider to use for content of a given mime type.\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\":[\"Whether the drop widget is showing\",\"Show drop options...\",\"Running drop handlers. Click to cancel\"],\"vs/editor/contrib/editorState/browser/keybindingCancellation\":[\"Whether the editor runs a cancellable operation, e.g. like 'Peek References'\"],\"vs/editor/contrib/find/browser/findController\":[\"Find\",\"&&Find\",`Overrides \"Use Regular Expression\" flag.\nThe flag will not be saved for the future.\n0: Do Nothing\n1: True\n2: False`,`Overrides \"Match Whole Word\" flag.\nThe flag will not be saved for the future.\n0: Do Nothing\n1: True\n2: False`,`Overrides \"Math Case\" flag.\nThe flag will not be saved for the future.\n0: Do Nothing\n1: True\n2: False`,`Overrides \"Preserve Case\" flag.\nThe flag will not be saved for the future.\n0: Do Nothing\n1: True\n2: False`,\"Find With Arguments\",\"Find With Selection\",\"Find Next\",\"Find Previous\",\"Go to Match...\",\"No matches. Try searching for something else.\",\"Type a number to go to a specific match (between 1 and {0})\",\"Please type a number between 1 and {0}\",\"Please type a number between 1 and {0}\",\"Find Next Selection\",\"Find Previous Selection\",\"Replace\",\"&&Replace\"],\"vs/editor/contrib/find/browser/findWidget\":[\"Icon for 'Find in Selection' in the editor find widget.\",\"Icon to indicate that the editor find widget is collapsed.\",\"Icon to indicate that the editor find widget is expanded.\",\"Icon for 'Replace' in the editor find widget.\",\"Icon for 'Replace All' in the editor find widget.\",\"Icon for 'Find Previous' in the editor find widget.\",\"Icon for 'Find Next' in the editor find widget.\",\"Find / Replace\",\"Find\",\"Find\",\"Previous Match\",\"Next Match\",\"Find in Selection\",\"Close\",\"Replace\",\"Replace\",\"Replace\",\"Replace All\",\"Toggle Replace\",\"Only the first {0} results are highlighted, but all find operations work on the entire text.\",\"{0} of {1}\",\"No results\",\"{0} found\",\"{0} found for '{1}'\",\"{0} found for '{1}', at {2}\",\"{0} found for '{1}'\",\"Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.\"],\"vs/editor/contrib/folding/browser/folding\":[\"Unfold\",\"Unfold Recursively\",\"Fold\",\"Toggle Fold\",\"Fold Recursively\",\"Fold All Block Comments\",\"Fold All Regions\",\"Unfold All Regions\",\"Fold All Except Selected\",\"Unfold All Except Selected\",\"Fold All\",\"Unfold All\",\"Go to Parent Fold\",\"Go to Previous Folding Range\",\"Go to Next Folding Range\",\"Create Folding Range from Selection\",\"Remove Manual Folding Ranges\",\"Fold Level {0}\"],\"vs/editor/contrib/folding/browser/foldingDecorations\":[\"Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations.\",\"Color of the folding control in the editor gutter.\",\"Icon for expanded ranges in the editor glyph margin.\",\"Icon for collapsed ranges in the editor glyph margin.\",\"Icon for manually collapsed ranges in the editor glyph margin.\",\"Icon for manually expanded ranges in the editor glyph margin.\"],\"vs/editor/contrib/fontZoom/browser/fontZoom\":[\"Editor Font Zoom In\",\"Editor Font Zoom Out\",\"Editor Font Zoom Reset\"],\"vs/editor/contrib/format/browser/format\":[\"Made 1 formatting edit on line {0}\",\"Made {0} formatting edits on line {1}\",\"Made 1 formatting edit between lines {0} and {1}\",\"Made {0} formatting edits between lines {1} and {2}\"],\"vs/editor/contrib/format/browser/formatActions\":[\"Format Document\",\"Format Selection\"],\"vs/editor/contrib/gotoError/browser/gotoError\":[\"Go to Next Problem (Error, Warning, Info)\",\"Icon for goto next marker.\",\"Go to Previous Problem (Error, Warning, Info)\",\"Icon for goto previous marker.\",\"Go to Next Problem in Files (Error, Warning, Info)\",\"Next &&Problem\",\"Go to Previous Problem in Files (Error, Warning, Info)\",\"Previous &&Problem\"],\"vs/editor/contrib/gotoError/browser/gotoErrorWidget\":[\"Error\",\"Warning\",\"Info\",\"Hint\",\"{0} at {1}. \",\"{0} of {1} problems\",\"{0} of {1} problem\",\"Editor marker navigation widget error color.\",\"Editor marker navigation widget error heading background.\",\"Editor marker navigation widget warning color.\",\"Editor marker navigation widget warning heading background.\",\"Editor marker navigation widget info color.\",\"Editor marker navigation widget info heading background.\",\"Editor marker navigation widget background.\"],\"vs/editor/contrib/gotoSymbol/browser/goToCommands\":[\"Peek\",\"Definitions\",\"No definition found for '{0}'\",\"No definition found\",\"Go to Definition\",\"Go to &&Definition\",\"Open Definition to the Side\",\"Peek Definition\",\"Declarations\",\"No declaration found for '{0}'\",\"No declaration found\",\"Go to Declaration\",\"Go to &&Declaration\",\"No declaration found for '{0}'\",\"No declaration found\",\"Peek Declaration\",\"Type Definitions\",\"No type definition found for '{0}'\",\"No type definition found\",\"Go to Type Definition\",\"Go to &&Type Definition\",\"Peek Type Definition\",\"Implementations\",\"No implementation found for '{0}'\",\"No implementation found\",\"Go to Implementations\",\"Go to &&Implementations\",\"Peek Implementations\",\"No references found for '{0}'\",\"No references found\",\"Go to References\",\"Go to &&References\",\"References\",\"Peek References\",\"References\",\"Go to Any Symbol\",\"Locations\",\"No results for '{0}'\",\"References\"],\"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\":[\"Click to show {0} definitions.\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesController\":[\"Whether reference peek is visible, like 'Peek References' or 'Peek Definition'\",\"Loading...\",\"{0} ({1})\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\":[\"{0} references\",\"{0} reference\",\"References\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\":[\"no preview available\",\"No results\",\"References\"],\"vs/editor/contrib/gotoSymbol/browser/referencesModel\":[\"in {0} on line {1} at column {2}\",\"{0} in {1} on line {2} at column {3}\",\"1 symbol in {0}, full path {1}\",\"{0} symbols in {1}, full path {2}\",\"No results found\",\"Found 1 symbol in {0}\",\"Found {0} symbols in {1}\",\"Found {0} symbols in {1} files\"],\"vs/editor/contrib/gotoSymbol/browser/symbolNavigation\":[\"Whether there are symbol locations that can be navigated via keyboard-only.\",\"Symbol {0} of {1}, {2} for next\",\"Symbol {0} of {1}\"],\"vs/editor/contrib/hover/browser/hover\":[\"Show or Focus Hover\",\"Show Definition Preview Hover\",\"Scroll Up Hover\",\"Scroll Down Hover\",\"Scroll Left Hover\",\"Scroll Right Hover\",\"Page Up Hover\",\"Page Down Hover\",\"Go To Top Hover\",\"Go To Bottom Hover\"],\"vs/editor/contrib/hover/browser/markdownHoverParticipant\":[\"Loading...\",\"Rendering paused for long line for performance reasons. This can be configured via `editor.stopRenderingLineAfter`.\",\"Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`.\"],\"vs/editor/contrib/hover/browser/markerHoverParticipant\":[\"View Problem\",\"No quick fixes available\",\"Checking for quick fixes...\",\"No quick fixes available\",\"Quick Fix...\"],\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\":[\"Replace with Previous Value\",\"Replace with Next Value\"],\"vs/editor/contrib/indentation/browser/indentation\":[\"Convert Indentation to Spaces\",\"Convert Indentation to Tabs\",\"Configured Tab Size\",\"Default Tab Size\",\"Current Tab Size\",\"Select Tab Size for Current File\",\"Indent Using Tabs\",\"Indent Using Spaces\",\"Change Tab Display Size\",\"Detect Indentation from Content\",\"Reindent Lines\",\"Reindent Selected Lines\"],\"vs/editor/contrib/inlayHints/browser/inlayHintsHover\":[\"Double-click to insert\",\"cmd + click\",\"ctrl + click\",\"option + click\",\"alt + click\",\"Go to Definition ({0}), right click for more\",\"Go to Definition ({0})\",\"Execute Command\"],\"vs/editor/contrib/inlineCompletions/browser/commands\":[\"Show Next Inline Suggestion\",\"Show Previous Inline Suggestion\",\"Trigger Inline Suggestion\",\"Accept Next Word Of Inline Suggestion\",\"Accept Word\",\"Accept Next Line Of Inline Suggestion\",\"Accept Line\",\"Accept Inline Suggestion\",\"Accept\",\"Hide Inline Suggestion\",\"Always Show Toolbar\"],\"vs/editor/contrib/inlineCompletions/browser/hoverParticipant\":[\"Suggestion:\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\":[\"Whether an inline suggestion is visible\",\"Whether the inline suggestion starts with whitespace\",\"Whether the inline suggestion starts with whitespace that is less than what would be inserted by tab\",\"Whether suggestions should be suppressed for the current suggestion\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\":[\"Inspect this in the accessible view ({0})\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\":[\"Icon for show next parameter hint.\",\"Icon for show previous parameter hint.\",\"{0} ({1})\",\"Previous\",\"Next\"],\"vs/editor/contrib/lineSelection/browser/lineSelection\":[\"Expand Line Selection\"],\"vs/editor/contrib/linesOperations/browser/linesOperations\":[\"Copy Line Up\",\"&&Copy Line Up\",\"Copy Line Down\",\"Co&&py Line Down\",\"Duplicate Selection\",\"&&Duplicate Selection\",\"Move Line Up\",\"Mo&&ve Line Up\",\"Move Line Down\",\"Move &&Line Down\",\"Sort Lines Ascending\",\"Sort Lines Descending\",\"Delete Duplicate Lines\",\"Trim Trailing Whitespace\",\"Delete Line\",\"Indent Line\",\"Outdent Line\",\"Insert Line Above\",\"Insert Line Below\",\"Delete All Left\",\"Delete All Right\",\"Join Lines\",\"Transpose Characters around the Cursor\",\"Transform to Uppercase\",\"Transform to Lowercase\",\"Transform to Title Case\",\"Transform to Snake Case\",\"Transform to Camel Case\",\"Transform to Kebab Case\"],\"vs/editor/contrib/linkedEditing/browser/linkedEditing\":[\"Start Linked Editing\",\"Background color when the editor auto renames on type.\"],\"vs/editor/contrib/links/browser/links\":[\"Failed to open this link because it is not well-formed: {0}\",\"Failed to open this link because its target is missing.\",\"Execute command\",\"Follow link\",\"cmd + click\",\"ctrl + click\",\"option + click\",\"alt + click\",\"Execute command {0}\",\"Open Link\"],\"vs/editor/contrib/message/browser/messageController\":[\"Whether the editor is currently showing an inline message\"],\"vs/editor/contrib/multicursor/browser/multicursor\":[\"Cursor added: {0}\",\"Cursors added: {0}\",\"Add Cursor Above\",\"&&Add Cursor Above\",\"Add Cursor Below\",\"A&&dd Cursor Below\",\"Add Cursors to Line Ends\",\"Add C&&ursors to Line Ends\",\"Add Cursors To Bottom\",\"Add Cursors To Top\",\"Add Selection To Next Find Match\",\"Add &&Next Occurrence\",\"Add Selection To Previous Find Match\",\"Add P&&revious Occurrence\",\"Move Last Selection To Next Find Match\",\"Move Last Selection To Previous Find Match\",\"Select All Occurrences of Find Match\",\"Select All &&Occurrences\",\"Change All Occurrences\",\"Focus Next Cursor\",\"Focuses the next cursor\",\"Focus Previous Cursor\",\"Focuses the previous cursor\"],\"vs/editor/contrib/parameterHints/browser/parameterHints\":[\"Trigger Parameter Hints\"],\"vs/editor/contrib/parameterHints/browser/parameterHintsWidget\":[\"Icon for show next parameter hint.\",\"Icon for show previous parameter hint.\",\"{0}, hint\",\"Foreground color of the active item in the parameter hint.\"],\"vs/editor/contrib/peekView/browser/peekView\":[\"Whether the current code editor is embedded inside peek\",\"Close\",\"Background color of the peek view title area.\",\"Color of the peek view title.\",\"Color of the peek view title info.\",\"Color of the peek view borders and arrow.\",\"Background color of the peek view result list.\",\"Foreground color for line nodes in the peek view result list.\",\"Foreground color for file nodes in the peek view result list.\",\"Background color of the selected entry in the peek view result list.\",\"Foreground color of the selected entry in the peek view result list.\",\"Background color of the peek view editor.\",\"Background color of the gutter in the peek view editor.\",\"Background color of sticky scroll in the peek view editor.\",\"Match highlight color in the peek view result list.\",\"Match highlight color in the peek view editor.\",\"Match highlight border in the peek view editor.\"],\"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\":[\"Open a text editor first to go to a line.\",\"Go to line {0} and character {1}.\",\"Go to line {0}.\",\"Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.\",\"Current Line: {0}, Character: {1}. Type a line number to navigate to.\"],\"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\":[\"To go to a symbol, first open a text editor with symbol information.\",\"The active text editor does not provide symbol information.\",\"No matching editor symbols\",\"No editor symbols\",\"Open to the Side\",\"Open to the Bottom\",\"symbols ({0})\",\"properties ({0})\",\"methods ({0})\",\"functions ({0})\",\"constructors ({0})\",\"variables ({0})\",\"classes ({0})\",\"structs ({0})\",\"events ({0})\",\"operators ({0})\",\"interfaces ({0})\",\"namespaces ({0})\",\"packages ({0})\",\"type parameters ({0})\",\"modules ({0})\",\"properties ({0})\",\"enumerations ({0})\",\"enumeration members ({0})\",\"strings ({0})\",\"files ({0})\",\"arrays ({0})\",\"numbers ({0})\",\"booleans ({0})\",\"objects ({0})\",\"keys ({0})\",\"fields ({0})\",\"constants ({0})\"],\"vs/editor/contrib/readOnlyMessage/browser/contribution\":[\"Cannot edit in read-only input\",\"Cannot edit in read-only editor\"],\"vs/editor/contrib/rename/browser/rename\":[\"No result.\",\"An unknown error occurred while resolving rename location\",\"Renaming '{0}' to '{1}'\",\"Renaming {0} to {1}\",\"Successfully renamed '{0}' to '{1}'. Summary: {2}\",\"Rename failed to apply edits\",\"Rename failed to compute edits\",\"Rename Symbol\",\"Enable/disable the ability to preview changes before renaming\"],\"vs/editor/contrib/rename/browser/renameInputField\":[\"Whether the rename input widget is visible\",\"Rename input. Type new name and press Enter to commit.\",\"{0} to Rename, {1} to Preview\"],\"vs/editor/contrib/smartSelect/browser/smartSelect\":[\"Expand Selection\",\"&&Expand Selection\",\"Shrink Selection\",\"&&Shrink Selection\"],\"vs/editor/contrib/snippet/browser/snippetController2\":[\"Whether the editor in current in snippet mode\",\"Whether there is a next tab stop when in snippet mode\",\"Whether there is a previous tab stop when in snippet mode\",\"Go to next placeholder...\"],\"vs/editor/contrib/snippet/browser/snippetVariables\":[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\",\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\",\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],\"vs/editor/contrib/stickyScroll/browser/stickyScrollActions\":[\"Toggle Sticky Scroll\",\"&&Toggle Sticky Scroll\",\"Sticky Scroll\",\"&&Sticky Scroll\",\"Focus Sticky Scroll\",\"&&Focus Sticky Scroll\",\"Select next sticky scroll line\",\"Select previous sticky scroll line\",\"Go to focused sticky scroll line\",\"Select Editor\"],\"vs/editor/contrib/suggest/browser/suggest\":[\"Whether any suggestion is focused\",\"Whether suggestion details are visible\",\"Whether there are multiple suggestions to pick from\",\"Whether inserting the current suggestion yields in a change or has everything already been typed\",\"Whether suggestions are inserted when pressing Enter\",\"Whether the current suggestion has insert and replace behaviour\",\"Whether the default behaviour is to insert or replace\",\"Whether the current suggestion supports to resolve further details\"],\"vs/editor/contrib/suggest/browser/suggestController\":[\"Accepting '{0}' made {1} additional edits\",\"Trigger Suggest\",\"Insert\",\"Insert\",\"Replace\",\"Replace\",\"Insert\",\"show less\",\"show more\",\"Reset Suggest Widget Size\"],\"vs/editor/contrib/suggest/browser/suggestWidget\":[\"Background color of the suggest widget.\",\"Border color of the suggest widget.\",\"Foreground color of the suggest widget.\",\"Foreground color of the selected entry in the suggest widget.\",\"Icon foreground color of the selected entry in the suggest widget.\",\"Background color of the selected entry in the suggest widget.\",\"Color of the match highlights in the suggest widget.\",\"Color of the match highlights in the suggest widget when an item is focused.\",\"Foreground color of the suggest widget status.\",\"Loading...\",\"No suggestions.\",\"Suggest\",\"{0} {1}, {2}\",\"{0} {1}\",\"{0}, {1}\",\"{0}, docs: {1}\"],\"vs/editor/contrib/suggest/browser/suggestWidgetDetails\":[\"Close\",\"Loading...\"],\"vs/editor/contrib/suggest/browser/suggestWidgetRenderer\":[\"Icon for more information in the suggest widget.\",\"Read More\"],\"vs/editor/contrib/suggest/browser/suggestWidgetStatus\":[\"{0} ({1})\"],\"vs/editor/contrib/symbolIcons/browser/symbolIcons\":[\"The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\",\"The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget.\"],\"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\":[\"Toggle Tab Key Moves Focus\",\"Pressing Tab will now move focus to the next focusable element\",\"Pressing Tab will now insert the tab character\"],\"vs/editor/contrib/tokenization/browser/tokenization\":[\"Developer: Force Retokenize\"],\"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\":[\"Icon shown with a warning message in the extensions editor.\",\"This document contains many non-basic ASCII unicode characters\",\"This document contains many ambiguous unicode characters\",\"This document contains many invisible unicode characters\",\"The character {0} could be confused with the ASCII character {1}, which is more common in source code.\",\"The character {0} could be confused with the character {1}, which is more common in source code.\",\"The character {0} is invisible.\",\"The character {0} is not a basic ASCII character.\",\"Adjust settings\",\"Disable Highlight In Comments\",\"Disable highlighting of characters in comments\",\"Disable Highlight In Strings\",\"Disable highlighting of characters in strings\",\"Disable Ambiguous Highlight\",\"Disable highlighting of ambiguous characters\",\"Disable Invisible Highlight\",\"Disable highlighting of invisible characters\",\"Disable Non ASCII Highlight\",\"Disable highlighting of non basic ASCII characters\",\"Show Exclude Options\",\"Exclude {0} (invisible character) from being highlighted\",\"Exclude {0} from being highlighted\",'Allow unicode characters that are more common in the language \"{0}\".',\"Configure Unicode Highlight Options\"],\"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\":[\"Unusual Line Terminators\",\"Detected unusual line terminators\",\"The file '{0}' contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\\n\\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.\",\"&&Remove Unusual Line Terminators\",\"Ignore\"],\"vs/editor/contrib/wordHighlighter/browser/highlightDecorations\":[\"Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations.\",\"Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations.\",\"Background color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations.\",\"Border color of a symbol during read-access, like reading a variable.\",\"Border color of a symbol during write-access, like writing to a variable.\",\"Border color of a textual occurrence for a symbol.\",\"Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations.\",\"Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations.\",\"Overview ruler marker color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations.\"],\"vs/editor/contrib/wordHighlighter/browser/wordHighlighter\":[\"Go to Next Symbol Highlight\",\"Go to Previous Symbol Highlight\",\"Trigger Symbol Highlight\"],\"vs/editor/contrib/wordOperations/browser/wordOperations\":[\"Delete Word\"],\"vs/platform/action/common/actionCommonCategories\":[\"View\",\"Help\",\"Test\",\"File\",\"Preferences\",\"Developer\"],\"vs/platform/actionWidget/browser/actionList\":[\"{0} to apply, {1} to preview\",\"{0} to apply\",\"{0}, Disabled Reason: {1}\",\"Action Widget\"],\"vs/platform/actionWidget/browser/actionWidget\":[\"Background color for toggled action items in action bar.\",\"Whether the action widget list is visible\",\"Hide action widget\",\"Select previous action\",\"Select next action\",\"Accept selected action\",\"Preview selected action\"],\"vs/platform/actions/browser/menuEntryActionViewItem\":[\"{0} ({1})\",\"{0} ({1})\",`{0}\n[{1}] {2}`],\"vs/platform/actions/browser/toolbar\":[\"Hide\",\"Reset Menu\"],\"vs/platform/actions/common/menuService\":[\"Hide '{0}'\"],\"vs/platform/audioCues/browser/audioCueService\":[\"Error on Line\",\"Warning on Line\",\"Folded Area on Line\",\"Breakpoint on Line\",\"Inline Suggestion on Line\",\"Terminal Quick Fix\",\"Debugger Stopped on Breakpoint\",\"No Inlay Hints on Line\",\"Task Completed\",\"Task Failed\",\"Terminal Command Failed\",\"Terminal Bell\",\"Notebook Cell Completed\",\"Notebook Cell Failed\",\"Diff Line Inserted\",\"Diff Line Deleted\",\"Diff Line Modified\",\"Chat Request Sent\",\"Chat Response Received\",\"Chat Response Pending\"],\"vs/platform/configuration/common/configurationRegistry\":[\"Default Language Configuration Overrides\",\"Configure settings to be overridden for the {0} language.\",\"Configure editor settings to be overridden for a language.\",\"This setting does not support per-language configuration.\",\"Configure editor settings to be overridden for a language.\",\"This setting does not support per-language configuration.\",\"Cannot register an empty property\",\"Cannot register '{0}'. This matches property pattern '\\\\\\\\[.*\\\\\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.\",\"Cannot register '{0}'. This property is already registered.\",\"Cannot register '{0}'. The associated policy {1} is already registered with {2}.\"],\"vs/platform/contextkey/browser/contextKeyService\":[\"A command that returns information about context keys\"],\"vs/platform/contextkey/common/contextkey\":[\"Empty context key expression\",\"Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively.\",\"'in' after 'not'.\",\"closing parenthesis ')'\",\"Unexpected token\",\"Did you forget to put && or || before the token?\",\"Unexpected end of expression\",\"Did you forget to put a context key?\",`Expected: {0}\nReceived: '{1}'.`],\"vs/platform/contextkey/common/contextkeys\":[\"Whether the operating system is macOS\",\"Whether the operating system is Linux\",\"Whether the operating system is Windows\",\"Whether the platform is a web browser\",\"Whether the operating system is macOS on a non-browser platform\",\"Whether the operating system is iOS\",\"Whether the platform is a mobile web browser\",\"Quality type of VS Code\",\"Whether keyboard focus is inside an input box\"],\"vs/platform/contextkey/common/scanner\":[\"Did you mean {0}?\",\"Did you mean {0} or {1}?\",\"Did you mean {0}, {1} or {2}?\",\"Did you forget to open or close the quote?\",\"Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\\\\\/'.\"],\"vs/platform/history/browser/contextScopedHistoryWidget\":[\"Whether suggestion are visible\"],\"vs/platform/keybinding/common/abstractKeybindingService\":[\"({0}) was pressed. Waiting for second key of chord...\",\"({0}) was pressed. Waiting for next key of chord...\",\"The key combination ({0}, {1}) is not a command.\",\"The key combination ({0}, {1}) is not a command.\"],\"vs/platform/list/browser/listService\":[\"Workbench\",\"Maps to `Control` on Windows and Linux and to `Command` on macOS.\",\"Maps to `Alt` on Windows and Linux and to `Option` on macOS.\",\"The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.\",\"Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.\",\"Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.\",\"Controls whether clicks in the scrollbar scroll page by page.\",\"Controls tree indentation in pixels.\",\"Controls whether the tree should render indent guides.\",\"Controls whether lists and trees have smooth scrolling.\",\"A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.\",\"Scrolling speed multiplier when pressing `Alt`.\",\"Highlight elements when searching. Further up and down navigation will traverse only the highlighted elements.\",\"Filter elements when searching.\",\"Controls the default find mode for lists and trees in the workbench.\",\"Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes.\",\"Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements.\",\"Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.\",\"Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter.\",\"Please use 'workbench.list.defaultFindMode' and\t'workbench.list.typeNavigationMode' instead.\",\"Use fuzzy matching when searching.\",\"Use contiguous matching when searching.\",\"Controls the type of matching used when searching lists and trees in the workbench.\",\"Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable.\",\"Controls the how type navigation works in lists and trees in the workbench. When set to 'trigger', type navigation begins once the 'list.triggerTypeNavigation' command is run.\"],\"vs/platform/markers/common/markers\":[\"Error\",\"Warning\",\"Info\"],\"vs/platform/quickinput/browser/commandsQuickAccess\":[\"recently used\",\"commonly used\",\"other commands\",\"{0}, {1}\",\"Command '{0}' resulted in an error\"],\"vs/platform/quickinput/browser/helpQuickAccess\":[\"{0}, {1}\"],\"vs/platform/quickinput/browser/quickInput\":[\"Back\",\"Press 'Enter' to confirm your input or 'Escape' to cancel\",\"{0}/{1}\",\"Type to narrow down results.\"],\"vs/platform/quickinput/browser/quickInputController\":[\"Toggle all checkboxes\",\"{0} Results\",\"{0} Selected\",\"OK\",\"Custom\",\"Back ({0})\",\"Back\"],\"vs/platform/quickinput/browser/quickInputList\":[\"Quick Input\"],\"vs/platform/quickinput/browser/quickInputUtils\":[\"Click to execute command '{0}'\"],\"vs/platform/theme/common/colorRegistry\":[\"Overall foreground color. This color is only used if not overridden by a component.\",\"Overall foreground for disabled elements. This color is only used if not overridden by a component.\",\"Overall foreground color for error messages. This color is only used if not overridden by a component.\",\"Foreground color for description text providing additional information, for example for a label.\",\"The default color for icons in the workbench.\",\"Overall border color for focused elements. This color is only used if not overridden by a component.\",\"An extra border around elements to separate them from others for greater contrast.\",\"An extra border around active elements to separate them from others for greater contrast.\",\"The background color of text selections in the workbench (e.g. for input fields or text areas). Note that this does not apply to selections within the editor.\",\"Color for text separators.\",\"Foreground color for links in text.\",\"Foreground color for links in text when clicked on and on mouse hover.\",\"Foreground color for preformatted text segments.\",\"Background color for block quotes in text.\",\"Border color for block quotes in text.\",\"Background color for code blocks in text.\",\"Shadow color of widgets such as find/replace inside the editor.\",\"Border color of widgets such as find/replace inside the editor.\",\"Input box background.\",\"Input box foreground.\",\"Input box border.\",\"Border color of activated options in input fields.\",\"Background color of activated options in input fields.\",\"Background hover color of options in input fields.\",\"Foreground color of activated options in input fields.\",\"Input box foreground color for placeholder text.\",\"Input validation background color for information severity.\",\"Input validation foreground color for information severity.\",\"Input validation border color for information severity.\",\"Input validation background color for warning severity.\",\"Input validation foreground color for warning severity.\",\"Input validation border color for warning severity.\",\"Input validation background color for error severity.\",\"Input validation foreground color for error severity.\",\"Input validation border color for error severity.\",\"Dropdown background.\",\"Dropdown list background.\",\"Dropdown foreground.\",\"Dropdown border.\",\"Button foreground color.\",\"Button separator color.\",\"Button background color.\",\"Button background color when hovering.\",\"Button border color.\",\"Secondary button foreground color.\",\"Secondary button background color.\",\"Secondary button background color when hovering.\",\"Badge background color. Badges are small information labels, e.g. for search results count.\",\"Badge foreground color. Badges are small information labels, e.g. for search results count.\",\"Scrollbar shadow to indicate that the view is scrolled.\",\"Scrollbar slider background color.\",\"Scrollbar slider background color when hovering.\",\"Scrollbar slider background color when clicked on.\",\"Background color of the progress bar that can show for long running operations.\",\"Background color of error text in the editor. The color must not be opaque so as not to hide underlying decorations.\",\"Foreground color of error squigglies in the editor.\",\"If set, color of double underlines for errors in the editor.\",\"Background color of warning text in the editor. The color must not be opaque so as not to hide underlying decorations.\",\"Foreground color of warning squigglies in the editor.\",\"If set, color of double underlines for warnings in the editor.\",\"Background color of info text in the editor. The color must not be opaque so as not to hide underlying decorations.\",\"Foreground color of info squigglies in the editor.\",\"If set, color of double underlines for infos in the editor.\",\"Foreground color of hint squigglies in the editor.\",\"If set, color of double underlines for hints in the editor.\",\"Border color of active sashes.\",\"Editor background color.\",\"Editor default foreground color.\",\"Sticky scroll background color for the editor\",\"Sticky scroll on hover background color for the editor\",\"Background color of editor widgets, such as find/replace.\",\"Foreground color of editor widgets, such as find/replace.\",\"Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.\",\"Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.\",\"Quick picker background color. The quick picker widget is the container for pickers like the command palette.\",\"Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.\",\"Quick picker title background color. The quick picker widget is the container for pickers like the command palette.\",\"Quick picker color for grouping labels.\",\"Quick picker color for grouping borders.\",\"Keybinding label background color. The keybinding label is used to represent a keyboard shortcut.\",\"Keybinding label foreground color. The keybinding label is used to represent a keyboard shortcut.\",\"Keybinding label border color. The keybinding label is used to represent a keyboard shortcut.\",\"Keybinding label border bottom color. The keybinding label is used to represent a keyboard shortcut.\",\"Color of the editor selection.\",\"Color of the selected text for high contrast.\",\"Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations.\",\"Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations.\",\"Border color for regions with the same content as the selection.\",\"Color of the current search match.\",\"Color of the other search matches. The color must not be opaque so as not to hide underlying decorations.\",\"Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations.\",\"Border color of the current search match.\",\"Border color of the other search matches.\",\"Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations.\",\"Color of the Search Editor query matches.\",\"Border color of the Search Editor query matches.\",\"Color of the text in the search viewlet's completion message.\",\"Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations.\",\"Background color of the editor hover.\",\"Foreground color of the editor hover.\",\"Border color of the editor hover.\",\"Background color of the editor hover status bar.\",\"Color of active links.\",\"Foreground color of inline hints\",\"Background color of inline hints\",\"Foreground color of inline hints for types\",\"Background color of inline hints for types\",\"Foreground color of inline hints for parameters\",\"Background color of inline hints for parameters\",\"The color used for the lightbulb actions icon.\",\"The color used for the lightbulb auto fix actions icon.\",\"Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations.\",\"Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations.\",\"Background color for lines that got inserted. The color must not be opaque so as not to hide underlying decorations.\",\"Background color for lines that got removed. The color must not be opaque so as not to hide underlying decorations.\",\"Background color for the margin where lines got inserted.\",\"Background color for the margin where lines got removed.\",\"Diff overview ruler foreground for inserted content.\",\"Diff overview ruler foreground for removed content.\",\"Outline color for the text that got inserted.\",\"Outline color for text that got removed.\",\"Border color between the two text editors.\",\"Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views.\",\"The background color of unchanged blocks in the diff editor.\",\"The foreground color of unchanged blocks in the diff editor.\",\"The background color of unchanged code in the diff editor.\",\"List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\",\"List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\",\"List/Tree outline color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\",\"List/Tree outline color for the focused item when the list/tree is active and selected. An active list/tree has keyboard focus, an inactive does not.\",\"List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\",\"List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\",\"List/Tree icon foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\",\"List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\",\"List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\",\"List/Tree icon foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\",\"List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\",\"List/Tree outline color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\",\"List/Tree background when hovering over items using the mouse.\",\"List/Tree foreground when hovering over items using the mouse.\",\"List/Tree drag and drop background when moving items around using the mouse.\",\"List/Tree foreground color of the match highlights when searching inside the list/tree.\",\"List/Tree foreground color of the match highlights on actively focused items when searching inside the list/tree.\",\"List/Tree foreground color for invalid items, for example an unresolved root in explorer.\",\"Foreground color of list items containing errors.\",\"Foreground color of list items containing warnings.\",\"Background color of the type filter widget in lists and trees.\",\"Outline color of the type filter widget in lists and trees.\",\"Outline color of the type filter widget in lists and trees, when there are no matches.\",\"Shadow color of the type filter widget in lists and trees.\",\"Background color of the filtered match.\",\"Border color of the filtered match.\",\"Tree stroke color for the indentation guides.\",\"Tree stroke color for the indentation guides that are not active.\",\"Table border color between columns.\",\"Background color for odd table rows.\",\"List/Tree foreground color for items that are deemphasized. \",\"Background color of checkbox widget.\",\"Background color of checkbox widget when the element it's in is selected.\",\"Foreground color of checkbox widget.\",\"Border color of checkbox widget.\",\"Border color of checkbox widget when the element it's in is selected.\",\"Please use quickInputList.focusBackground instead\",\"Quick picker foreground color for the focused item.\",\"Quick picker icon foreground color for the focused item.\",\"Quick picker background color for the focused item.\",\"Border color of menus.\",\"Foreground color of menu items.\",\"Background color of menu items.\",\"Foreground color of the selected menu item in menus.\",\"Background color of the selected menu item in menus.\",\"Border color of the selected menu item in menus.\",\"Color of a separator menu item in menus.\",\"Toolbar background when hovering over actions using the mouse\",\"Toolbar outline when hovering over actions using the mouse\",\"Toolbar background when holding the mouse over actions\",\"Highlight background color of a snippet tabstop.\",\"Highlight border color of a snippet tabstop.\",\"Highlight background color of the final tabstop of a snippet.\",\"Highlight border color of the final tabstop of a snippet.\",\"Color of focused breadcrumb items.\",\"Background color of breadcrumb items.\",\"Color of focused breadcrumb items.\",\"Color of selected breadcrumb items.\",\"Background color of breadcrumb item picker.\",\"Current header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.\",\"Current content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.\",\"Incoming header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.\",\"Incoming content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.\",\"Common ancestor header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.\",\"Common ancestor content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.\",\"Border color on headers and the splitter in inline merge-conflicts.\",\"Current overview ruler foreground for inline merge-conflicts.\",\"Incoming overview ruler foreground for inline merge-conflicts.\",\"Common ancestor overview ruler foreground for inline merge-conflicts.\",\"Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations.\",\"Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations.\",\"Minimap marker color for find matches.\",\"Minimap marker color for repeating editor selections.\",\"Minimap marker color for the editor selection.\",\"Minimap marker color for errors.\",\"Minimap marker color for warnings.\",\"Minimap background color.\",'Opacity of foreground elements rendered in the minimap. For example, \"#000000c0\" will render the elements with 75% opacity.',\"Minimap slider background color.\",\"Minimap slider background color when hovering.\",\"Minimap slider background color when clicked on.\",\"The color used for the problems error icon.\",\"The color used for the problems warning icon.\",\"The color used for the problems info icon.\",\"The foreground color used in charts.\",\"The color used for horizontal lines in charts.\",\"The red color used in chart visualizations.\",\"The blue color used in chart visualizations.\",\"The yellow color used in chart visualizations.\",\"The orange color used in chart visualizations.\",\"The green color used in chart visualizations.\",\"The purple color used in chart visualizations.\"],\"vs/platform/theme/common/iconRegistry\":[\"The id of the font to use. If not set, the font that is defined first is used.\",\"The font character associated with the icon definition.\",\"Icon for the close action in widgets.\",\"Icon for goto previous editor location.\",\"Icon for goto next editor location.\"],\"vs/platform/undoRedo/common/undoRedoService\":[\"The following files have been closed and modified on disk: {0}.\",\"The following files have been modified in an incompatible way: {0}.\",\"Could not undo '{0}' across all files. {1}\",\"Could not undo '{0}' across all files. {1}\",\"Could not undo '{0}' across all files because changes were made to {1}\",\"Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}\",\"Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime\",\"Would you like to undo '{0}' across all files?\",\"&&Undo in {0} Files\",\"Undo this &&File\",\"Could not undo '{0}' because there is already an undo or redo operation running.\",\"Would you like to undo '{0}'?\",\"&&Yes\",\"No\",\"Could not redo '{0}' across all files. {1}\",\"Could not redo '{0}' across all files. {1}\",\"Could not redo '{0}' across all files because changes were made to {1}\",\"Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}\",\"Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime\",\"Could not redo '{0}' because there is already an undo or redo operation running.\"],\"vs/platform/workspace/common/workspace\":[\"Code Workspace\"]});\n\n//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/editor/editor.main.nls.ko.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/editor/editor.main.nls.ko\",{\"vs/base/browser/ui/actionbar/actionViewItems\":[\"{0}({1})\"],\"vs/base/browser/ui/findinput/findInput\":[\"\\uC785\\uB825\"],\"vs/base/browser/ui/findinput/findInputToggles\":[\"\\uB300/\\uC18C\\uBB38\\uC790 \\uAD6C\\uBD84\",\"\\uB2E8\\uC5B4 \\uB2E8\\uC704\\uB85C\",\"\\uC815\\uADDC\\uC2DD \\uC0AC\\uC6A9\"],\"vs/base/browser/ui/findinput/replaceInput\":[\"\\uC785\\uB825\",\"\\uB300/\\uC18C\\uBB38\\uC790 \\uBCF4\\uC874\"],\"vs/base/browser/ui/hover/hoverWidget\":[\"Inspect this in the accessible view with {0}.\",\"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\"],\"vs/base/browser/ui/iconLabel/iconLabelHover\":[\"\\uB85C\\uB4DC \\uC911...\"],\"vs/base/browser/ui/inputbox/inputBox\":[\"\\uC624\\uB958: {0}\",\"\\uACBD\\uACE0: {0}\",\"\\uC815\\uBCF4: {0}\",\"\\uAE30\\uB85D\\uC6A9\",\"\\uC785\\uB825\\uC774 \\uC9C0\\uC6CC\\uC9D0\"],\"vs/base/browser/ui/keybindingLabel/keybindingLabel\":[\"\\uBC14\\uC778\\uB529 \\uC548 \\uB428\"],\"vs/base/browser/ui/selectBox/selectBoxCustom\":[\"Box \\uC120\\uD0DD\"],\"vs/base/browser/ui/toolbar/toolbar\":[\"\\uAE30\\uD0C0 \\uC791\\uC5C5...\"],\"vs/base/browser/ui/tree/abstractTree\":[\"\\uD544\\uD130\",\"\\uC720\\uC0AC \\uD56D\\uBAA9 \\uC77C\\uCE58\",\"\\uD544\\uD130\\uB9C1\\uD560 \\uD615\\uC2DD\",\"\\uC785\\uB825\\uD558\\uC5EC \\uAC80\\uC0C9\",\"\\uC785\\uB825\\uD558\\uC5EC \\uAC80\\uC0C9\",\"\\uB2EB\\uAE30\",\"\\uCC3E\\uC740 \\uC694\\uC18C\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\"],\"vs/base/common/actions\":[\"(\\uBE44\\uC5B4 \\uC788\\uC74C)\"],\"vs/base/common/errorMessage\":[\"{0}: {1}\",\"\\uC2DC\\uC2A4\\uD15C \\uC624\\uB958\\uAC00 \\uBC1C\\uC0DD\\uD588\\uC2B5\\uB2C8\\uB2E4({0}).\",\"\\uC54C \\uC218 \\uC5C6\\uB294 \\uC624\\uB958\\uAC00 \\uBC1C\\uC0DD\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uC790\\uC138\\uD55C \\uB0B4\\uC6A9\\uC740 \\uB85C\\uADF8\\uB97C \\uCC38\\uC870\\uD558\\uC138\\uC694.\",\"\\uC54C \\uC218 \\uC5C6\\uB294 \\uC624\\uB958\\uAC00 \\uBC1C\\uC0DD\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uC790\\uC138\\uD55C \\uB0B4\\uC6A9\\uC740 \\uB85C\\uADF8\\uB97C \\uCC38\\uC870\\uD558\\uC138\\uC694.\",\"{0}(\\uCD1D {1}\\uAC1C\\uC758 \\uC624\\uB958)\",\"\\uC54C \\uC218 \\uC5C6\\uB294 \\uC624\\uB958\\uAC00 \\uBC1C\\uC0DD\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uC790\\uC138\\uD55C \\uB0B4\\uC6A9\\uC740 \\uB85C\\uADF8\\uB97C \\uCC38\\uC870\\uD558\\uC138\\uC694.\"],\"vs/base/common/keybindingLabels\":[\"Ctrl\",\"<Shift>\",\"<Alt>\",\"Windows\",\"Ctrl\",\"<Shift>\",\"<Alt>\",\"\\uC288\\uD37C\",\"\\uC81C\\uC5B4\",\"<Shift>\",\"\\uC635\\uC158\",\"\\uBA85\\uB839\",\"\\uC81C\\uC5B4\",\"<Shift>\",\"<Alt>\",\"Windows\",\"\\uC81C\\uC5B4\",\"<Shift>\",\"<Alt>\",\"\\uC288\\uD37C\"],\"vs/base/common/platform\":[\"_\"],\"vs/editor/browser/controller/textAreaHandler\":[\"\\uD3B8\\uC9D1\\uAE30\",\"\\uD604\\uC7AC \\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC561\\uC138\\uC2A4\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"{0} \\uD654\\uBA74 \\uC77D\\uAE30 \\uD504\\uB85C\\uADF8\\uB7A8 \\uCD5C\\uC801\\uD654 \\uBAA8\\uB4DC\\uB97C \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD558\\uB824\\uBA74 {1}\",\"{0} \\uD654\\uBA74 \\uC77D\\uAE30 \\uD504\\uB85C\\uADF8\\uB7A8 \\uCD5C\\uC801\\uD654 \\uBAA8\\uB4DC\\uB97C \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD558\\uB824\\uBA74 {1}\\uC744(\\uB97C) \\uC0AC\\uC6A9\\uD558\\uC5EC \\uBE60\\uB978 \\uC120\\uD0DD\\uC744 \\uC5F4\\uACE0 \\uD654\\uBA74 \\uC77D\\uAE30 \\uD504\\uB85C\\uADF8\\uB7A8 \\uC811\\uADFC\\uC131 \\uBAA8\\uB4DC \\uD1A0\\uAE00 \\uBA85\\uB839\\uC744 \\uC2E4\\uD589\\uD569\\uB2C8\\uB2E4(\\uC774 \\uBA85\\uB839\\uC740 \\uD604\\uC7AC \\uD0A4\\uBCF4\\uB4DC\\uB97C \\uD1B5\\uD574 \\uD2B8\\uB9AC\\uAC70\\uD560 \\uC218 \\uC5C6\\uC74C).\",\"{0} {1}\\uC744(\\uB97C) \\uC0AC\\uC6A9\\uD558\\uC5EC \\uD0A4 \\uBC14\\uC778\\uB529 \\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC561\\uC138\\uC2A4\\uD558\\uC5EC \\uD654\\uBA74 \\uC77D\\uAE30 \\uD504\\uB85C\\uADF8\\uB7A8 \\uC811\\uADFC\\uC131 \\uBAA8\\uB4DC \\uD1A0\\uAE00 \\uBA85\\uB839\\uC5D0 \\uB300\\uD55C \\uD0A4 \\uBC14\\uC778\\uB529\\uC744 \\uD560\\uB2F9\\uD558\\uACE0 \\uC2E4\\uD589\\uD558\\uC138\\uC694.\"],\"vs/editor/browser/coreCommands\":[\"\\uB354 \\uAE34 \\uC904\\uB85C \\uC774\\uB3D9\\uD558\\uB294 \\uACBD\\uC6B0\\uC5D0\\uB3C4 \\uB05D\\uC5D0 \\uACE0\\uC815\",\"\\uB354 \\uAE34 \\uC904\\uB85C \\uC774\\uB3D9\\uD558\\uB294 \\uACBD\\uC6B0\\uC5D0\\uB3C4 \\uB05D\\uC5D0 \\uACE0\\uC815\",\"\\uBCF4\\uC870 \\uCEE4\\uC11C\\uAC00 \\uC81C\\uAC70\\uB428\"],\"vs/editor/browser/editorExtensions\":[\"\\uC2E4\\uD589 \\uCDE8\\uC18C(&&U)\",\"\\uC2E4\\uD589 \\uCDE8\\uC18C\",\"\\uB2E4\\uC2DC \\uC2E4\\uD589(&&R)\",\"\\uB2E4\\uC2DC \\uC2E4\\uD589\",\"\\uBAA8\\uB450 \\uC120\\uD0DD(&&S)\",\"\\uBAA8\\uB450 \\uC120\\uD0DD\"],\"vs/editor/browser/widget/codeEditorWidget\":[\"\\uCEE4\\uC11C \\uC218\\uB97C {0}\\uAC1C\\uB85C \\uC81C\\uD55C\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uB354 \\uD070 \\uBCC0\\uACBD \\uB0B4\\uC6A9\\uC744 \\uC704\\uD574\\uC11C\\uB294 [\\uCC3E\\uC544\\uC11C \\uAD50\\uCCB4](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace)\\uB97C \\uC0AC\\uC6A9\\uD558\\uAC70\\uB098 \\uD3B8\\uC9D1\\uAE30 \\uB2E4\\uC911 \\uCEE4\\uC11C \\uC81C\\uD55C \\uC124\\uC815\\uC744 \\uB298\\uB9AC\\uB294 \\uAC83\\uC774 \\uC88B\\uC2B5\\uB2C8\\uB2E4.\",\"\\uB2E4\\uC911 \\uCEE4\\uC11C \\uC81C\\uD55C \\uB298\\uB9AC\\uAE30\"],\"vs/editor/browser/widget/diffEditor.contribution\":[\"\\uC561\\uC138\\uC2A4 \\uAC00\\uB2A5\\uD55C Diff \\uBDF0\\uC5B4\",\"\\uB2E4\\uC74C \\uB2E4\\uB978 \\uD56D\\uBAA9\\uC73C\\uB85C \\uC774\\uB3D9\",\"\\uC561\\uC138\\uC2A4 \\uAC00\\uB2A5\\uD55C Diff \\uBDF0\\uC5B4 \\uC5F4\\uAE30\",\"\\uB2E4\\uC74C \\uB2E4\\uB978 \\uD56D\\uBAA9\\uC73C\\uB85C \\uC774\\uB3D9\"],\"vs/editor/browser/widget/diffEditorWidget\":[\"diff \\uD3B8\\uC9D1\\uAE30\\uC758 \\uC0BD\\uC785\\uC5D0 \\uB300\\uD55C \\uC904 \\uB370\\uCF54\\uB808\\uC774\\uC158\\uC785\\uB2C8\\uB2E4.\",\"diff \\uD3B8\\uC9D1\\uAE30\\uC758 \\uC81C\\uAC70\\uC5D0 \\uB300\\uD55C \\uC904 \\uB370\\uCF54\\uB808\\uC774\\uC158\\uC785\\uB2C8\\uB2E4.\",\" Shift + F7\\uC744 \\uC0AC\\uC6A9\\uD558\\uC5EC \\uBCC0\\uACBD \\uB0B4\\uC6A9 \\uD0D0\\uC0C9\",\"\\uD30C\\uC77C 1\\uAC1C\\uAC00 \\uB108\\uBB34 \\uCEE4\\uC11C \\uD30C\\uC77C\\uC744 \\uBE44\\uAD50\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBCC0\\uACBD \\uB0B4\\uC6A9\\uC744 \\uB418\\uB3CC\\uB9AC\\uB824\\uBA74 \\uD074\\uB9AD\"],\"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\":[\"\\uC561\\uC138\\uC2A4 \\uAC00\\uB2A5\\uD55C Diff \\uBDF0\\uC5B4\\uC758 '\\uC0BD\\uC785' \\uC544\\uC774\\uCF58.\",\"\\uC561\\uC138\\uC2A4 \\uAC00\\uB2A5\\uD55C Diff \\uBDF0\\uC5B4\\uC758 '\\uC81C\\uAC70' \\uC544\\uC774\\uCF58.\",\"\\uC811\\uADFC \\uAC00\\uB2A5\\uD55C Diff \\uBDF0\\uC5B4\\uC758 '\\uB2EB\\uAE30' \\uC544\\uC774\\uCF58.\",\"\\uB2EB\\uAE30\",\"\\uC561\\uC138\\uC2A4 \\uAC00\\uB2A5\\uD55C Diff \\uBDF0\\uC5B4\\uC785\\uB2C8\\uB2E4. \\uD0D0\\uC0C9\\uD558\\uB824\\uBA74 \\uC704\\uCABD \\uBC0F \\uC544\\uB798\\uCABD \\uD654\\uC0B4\\uD45C\\uB97C \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uBCC0\\uACBD\\uB41C \\uC904 \\uC5C6\\uC74C\",\"\\uC120 1\\uAC1C \\uBCC0\\uACBD\\uB428\",\"\\uC904 {0}\\uAC1C \\uBCC0\\uACBD\\uB428\",\"\\uCC28\\uC774 {0}/{1}: \\uC6D0\\uB798 \\uC904 {2}, {3}, \\uC218\\uC815\\uB41C \\uC904 {4}, {5}\",\"\\uBE44\\uC5B4 \\uC788\\uC74C\",\"{0} \\uBCC0\\uACBD\\uB418\\uC9C0 \\uC54A\\uC740 \\uC904 {1}\",\"{0} \\uC6D0\\uB798 \\uC904 {1} \\uC218\\uC815\\uB41C \\uC904 {2}\",\"+ {0} \\uC218\\uC815\\uB41C \\uC904 {1}\",\"- {0} \\uC6D0\\uB798 \\uC904 {1}\"],\"vs/editor/browser/widget/diffEditorWidget2/colors\":[\"diff \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC774\\uB3D9\\uB41C \\uD14D\\uC2A4\\uD2B8\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"The active border color for text that got moved in the diff editor.\"],\"vs/editor/browser/widget/diffEditorWidget2/decorations\":[\"diff \\uD3B8\\uC9D1\\uAE30\\uC758 \\uC0BD\\uC785\\uC5D0 \\uB300\\uD55C \\uC904 \\uB370\\uCF54\\uB808\\uC774\\uC158\\uC785\\uB2C8\\uB2E4.\",\"diff \\uD3B8\\uC9D1\\uAE30\\uC758 \\uC81C\\uAC70\\uC5D0 \\uB300\\uD55C \\uC904 \\uB370\\uCF54\\uB808\\uC774\\uC158\\uC785\\uB2C8\\uB2E4.\",\"\\uBCC0\\uACBD \\uB0B4\\uC6A9\\uC744 \\uB418\\uB3CC\\uB9AC\\uB824\\uBA74 \\uD074\\uB9AD\"],\"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\":[\" {0}\\uC744(\\uB97C) \\uC0AC\\uC6A9\\uD558\\uC5EC \\uC811\\uADFC\\uC131 \\uB3C4\\uC6C0\\uB9D0\\uC744 \\uC5FD\\uB2C8\\uB2E4.\"],\"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\":[\"\\uC0AD\\uC81C\\uB41C \\uC904 \\uBCF5\\uC0AC\",\"\\uC0AD\\uC81C\\uB41C \\uC904 \\uBCF5\\uC0AC\",\"\\uBCC0\\uACBD\\uB41C \\uC904 \\uBCF5\\uC0AC\",\"\\uBCC0\\uACBD\\uB41C \\uC904 \\uBCF5\\uC0AC\",\"\\uC0AD\\uC81C\\uB41C \\uC904 \\uBCF5\\uC0AC({0})\",\"\\uBCC0\\uACBD\\uB41C \\uC904({0}) \\uBCF5\\uC0AC\",\"\\uC774 \\uBCC0\\uACBD \\uB0B4\\uC6A9 \\uB418\\uB3CC\\uB9AC\\uAE30\"],\"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\":[\"Code moved with changes to line {0}-{1}\",\"Code moved with changes from line {0}-{1}\",\"Code moved to line {0}-{1}\",\"Code moved from line {0}-{1}\"],\"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\":[\"\\uBCC0\\uACBD\\uB418\\uC9C0 \\uC54A\\uC740 \\uC601\\uC5ED \\uC811\\uAE30\",\"Click or drag to show more above\",\"Show all\",\"Click or drag to show more below\",\"{0} hidden lines\",\"Double click to unfold\"],\"vs/editor/browser/widget/diffReview\":[\"Diff \\uAC80\\uD1A0\\uC5D0\\uC11C '\\uC0BD\\uC785'\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"Diff \\uAC80\\uD1A0\\uC5D0\\uC11C '\\uC81C\\uAC70'\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"Diff \\uAC80\\uD1A0\\uC5D0\\uC11C '\\uB2EB\\uAE30'\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uB2EB\\uAE30\",\"\\uBCC0\\uACBD\\uB41C \\uC904 \\uC5C6\\uC74C\",\"\\uC120 1\\uAC1C \\uBCC0\\uACBD\\uB428\",\"\\uC904 {0}\\uAC1C \\uBCC0\\uACBD\\uB428\",\"\\uCC28\\uC774 {0}/{1}: \\uC6D0\\uB798 \\uC904 {2}, {3}, \\uC218\\uC815\\uB41C \\uC904 {4}, {5}\",\"\\uBE44\\uC5B4 \\uC788\\uC74C\",\"{0} \\uBCC0\\uACBD\\uB418\\uC9C0 \\uC54A\\uC740 \\uC904 {1}\",\"{0} \\uC6D0\\uB798 \\uC904 {1} \\uC218\\uC815\\uB41C \\uC904 {2}\",\"+ {0} \\uC218\\uC815\\uB41C \\uC904 {1}\",\"- {0} \\uC6D0\\uB798 \\uC904 {1}\"],\"vs/editor/browser/widget/inlineDiffMargin\":[\"\\uC0AD\\uC81C\\uB41C \\uC904 \\uBCF5\\uC0AC\",\"\\uC0AD\\uC81C\\uB41C \\uC904 \\uBCF5\\uC0AC\",\"\\uBCC0\\uACBD\\uB41C \\uC904 \\uBCF5\\uC0AC\",\"\\uBCC0\\uACBD\\uB41C \\uC904 \\uBCF5\\uC0AC\",\"\\uC0AD\\uC81C\\uB41C \\uC904 \\uBCF5\\uC0AC({0})\",\"\\uBCC0\\uACBD\\uB41C \\uC904({0}) \\uBCF5\\uC0AC\",\"\\uC774 \\uBCC0\\uACBD \\uB0B4\\uC6A9 \\uB418\\uB3CC\\uB9AC\\uAE30\",\"\\uC0AD\\uC81C\\uB41C \\uC904 \\uBCF5\\uC0AC({0})\",\"\\uBCC0\\uACBD\\uB41C \\uC904({0}) \\uBCF5\\uC0AC\"],\"vs/editor/common/config/editorConfigurationSchema\":[\"\\uD3B8\\uC9D1\\uAE30\",\"\\uD0ED\\uC774 \\uAC19\\uC740 \\uACF5\\uBC31\\uC758 \\uC218\\uC785\\uB2C8\\uB2E4. \\uC774 \\uC124\\uC815\\uC740 {0}\\uC774(\\uAC00) \\uCF1C\\uC838 \\uC788\\uC744 \\uB54C \\uD30C\\uC77C \\uB0B4\\uC6A9\\uC744 \\uAE30\\uBC18\\uC73C\\uB85C \\uC7AC\\uC815\\uC758\\uB429\\uB2C8\\uB2E4.\",`\\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uB610\\uB294 \\`\"tabSize\"\\uC5D0\\uC11C '#editor.tabSize#'\\uC758 \\uAC12\\uC744 \\uC0AC\\uC6A9\\uD558\\uB294 \\uB370 \\uC0AC\\uC6A9\\uB418\\uB294 \\uACF5\\uBC31 \\uC218\\uC785\\uB2C8\\uB2E4. \\uC774 \\uC124\\uC815\\uC740 '#editor.detectIndentation#'\\uC774 \\uCF1C\\uC838 \\uC788\\uB294 \\uACBD\\uC6B0 \\uD30C\\uC77C \\uB0B4\\uC6A9\\uC5D0 \\uB530\\uB77C \\uC7AC\\uC815\\uC758\\uB429\\uB2C8\\uB2E4.`,\"`Tab`\\uC744 \\uB204\\uB97C \\uB54C \\uACF5\\uBC31\\uC744 \\uC0BD\\uC785\\uD558\\uC138\\uC694. \\uC774 \\uC124\\uC815\\uC740 {0}\\uC774(\\uAC00) \\uCF1C\\uC838 \\uC788\\uC744 \\uB54C \\uD30C\\uC77C \\uB0B4\\uC6A9\\uC744 \\uAE30\\uBC18\\uC73C\\uB85C \\uC7AC\\uC815\\uC758\\uB429\\uB2C8\\uB2E4.\",\"\\uD30C\\uC77C \\uB0B4\\uC6A9\\uC744 \\uAE30\\uBC18\\uC73C\\uB85C \\uD30C\\uC77C\\uC744 \\uC5F4 \\uB54C {0} \\uBC0F {1}\\uC744(\\uB97C) \\uC790\\uB3D9\\uC73C\\uB85C \\uAC10\\uC9C0\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uB05D\\uC5D0 \\uC790\\uB3D9 \\uC0BD\\uC785\\uB41C \\uACF5\\uBC31\\uC744 \\uC81C\\uAC70\\uD569\\uB2C8\\uB2E4.\",\"\\uD070 \\uD30C\\uC77C\\uC5D0 \\uB300\\uD55C \\uD2B9\\uC218 \\uCC98\\uB9AC\\uB85C, \\uBA54\\uBAA8\\uB9AC\\uB97C \\uB9CE\\uC774 \\uC0AC\\uC6A9\\uD558\\uB294 \\uD2B9\\uC815 \\uAE30\\uB2A5\\uC744 \\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uBB38\\uC11C \\uB0B4 \\uB2E8\\uC5B4\\uB97C \\uAE30\\uBC18\\uC73C\\uB85C \\uC644\\uC131\\uC744 \\uACC4\\uC0B0\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uBB38\\uC11C\\uC5D0\\uC11C\\uB9CC \\uB2E8\\uC5B4\\uB97C \\uC81C\\uC548\\uD569\\uB2C8\\uB2E4.\",\"\\uAC19\\uC740 \\uC5B8\\uC5B4\\uC758 \\uBAA8\\uB4E0 \\uC5F4\\uB9B0 \\uBB38\\uC11C\\uC5D0\\uC11C \\uB2E8\\uC5B4\\uB97C \\uC81C\\uC548\\uD569\\uB2C8\\uB2E4.\",\"\\uBAA8\\uB4E0 \\uC5F4\\uB9B0 \\uBB38\\uC11C\\uC5D0\\uC11C \\uB2E8\\uC5B4\\uB97C \\uC81C\\uC548\\uD569\\uB2C8\\uB2E4.\",\"\\uB2E8\\uC5B4 \\uAE30\\uBC18 \\uC644\\uC131\\uC774 \\uCEF4\\uD4E8\\uD305\\uB418\\uB294 \\uBB38\\uC11C\\uC5D0\\uC11C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBAA8\\uB4E0 \\uC0C9 \\uD14C\\uB9C8\\uC5D0 \\uB300\\uD574 \\uC758\\uBBF8 \\uCCB4\\uACC4 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB97C \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uBAA8\\uB4E0 \\uC0C9 \\uD14C\\uB9C8\\uC5D0 \\uB300\\uD574 \\uC758\\uBBF8 \\uCCB4\\uACC4 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB97C \\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC758\\uBBF8 \\uCCB4\\uACC4 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB294 \\uD604\\uC7AC \\uC0C9 \\uD14C\\uB9C8\\uC758 `semanticHighlighting` \\uC124\\uC815\\uC5D0 \\uB530\\uB77C \\uAD6C\\uC131\\uB429\\uB2C8\\uB2E4.\",\"semanticHighlighting\\uC774 \\uC9C0\\uC6D0\\uD558\\uB294 \\uC5B8\\uC5B4\\uC5D0 \\uB300\\uD574 \\uD45C\\uC2DC\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD574\\uB2F9 \\uCF58\\uD150\\uCE20\\uB97C \\uB450 \\uBC88 \\uD074\\uB9AD\\uD558\\uAC70\\uB098 'Esc' \\uD0A4\\uB97C \\uB204\\uB974\\uB354\\uB77C\\uB3C4 Peek \\uD3B8\\uC9D1\\uAE30\\uB97C \\uC5F4\\uB9B0 \\uC0C1\\uD0DC\\uB85C \\uC720\\uC9C0\\uD569\\uB2C8\\uB2E4.\",\"\\uC774 \\uAE38\\uC774\\uB97C \\uCD08\\uACFC\\uD558\\uB294 \\uC904\\uC740 \\uC131\\uB2A5\\uC0C1\\uC758 \\uC774\\uC720\\uB85C \\uD1A0\\uD070\\uD654\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC6F9 \\uC791\\uC5C5\\uC790\\uC5D0\\uC11C \\uD1A0\\uD070\\uD654\\uAC00 \\uBE44\\uB3D9\\uAE30\\uC801\\uC73C\\uB85C \\uC218\\uD589\\uB418\\uC5B4\\uC57C \\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBE44\\uB3D9\\uAE30 \\uD1A0\\uD070\\uD654\\uAC00 \\uAE30\\uB85D\\uB418\\uC5B4\\uC57C \\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uB514\\uBC84\\uAE45 \\uC804\\uC6A9\\uC785\\uB2C8\\uB2E4.\",\"\\uB808\\uAC70\\uC2DC \\uBC31\\uADF8\\uB77C\\uC6B4\\uB4DC \\uD1A0\\uD070\\uD654\\uC5D0 \\uB300\\uD574 \\uBE44\\uB3D9\\uAE30 \\uD1A0\\uD070\\uD654\\uB97C \\uD655\\uC778\\uD574\\uC57C \\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uD1A0\\uD070\\uD654 \\uC18D\\uB3C4\\uAC00 \\uB290\\uB824\\uC9C8 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uB514\\uBC84\\uAE45 \\uC804\\uC6A9\\uC785\\uB2C8\\uB2E4.\",\"\\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB97C \\uB298\\uB9AC\\uAC70\\uB098 \\uC904\\uC774\\uB294 \\uB300\\uAD04\\uD638 \\uAE30\\uD638\\uB97C \\uC815\\uC758\\uD569\\uB2C8\\uB2E4.\",\"\\uC5EC\\uB294 \\uB300\\uAD04\\uD638 \\uBB38\\uC790 \\uB610\\uB294 \\uBB38\\uC790\\uC5F4 \\uC2DC\\uD000\\uC2A4\\uC785\\uB2C8\\uB2E4.\",\"\\uB2EB\\uB294 \\uB300\\uAD04\\uD638 \\uBB38\\uC790 \\uB610\\uB294 \\uBB38\\uC790\\uC5F4 \\uC2DC\\uD000\\uC2A4\\uC785\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638 \\uC30D \\uC0C9 \\uC9C0\\uC815\\uC744 \\uC0AC\\uC6A9\\uD558\\uB294 \\uACBD\\uC6B0 \\uC911\\uCCA9 \\uC218\\uC900\\uC5D0 \\uB530\\uB77C \\uC0C9\\uC774 \\uC9C0\\uC815\\uB41C \\uB300\\uAD04\\uD638 \\uC30D\\uC744 \\uC815\\uC758\\uD569\\uB2C8\\uB2E4.\",\"\\uC5EC\\uB294 \\uB300\\uAD04\\uD638 \\uBB38\\uC790 \\uB610\\uB294 \\uBB38\\uC790\\uC5F4 \\uC2DC\\uD000\\uC2A4\\uC785\\uB2C8\\uB2E4.\",\"\\uB2EB\\uB294 \\uB300\\uAD04\\uD638 \\uBB38\\uC790 \\uB610\\uB294 \\uBB38\\uC790\\uC5F4 \\uC2DC\\uD000\\uC2A4\\uC785\\uB2C8\\uB2E4.\",\"diff \\uACC4\\uC0B0\\uC774 \\uCDE8\\uC18C\\uB41C \\uD6C4 \\uBC00\\uB9AC\\uCD08 \\uB2E8\\uC704\\uB85C \\uC2DC\\uAC04\\uC744 \\uC81C\\uD55C\\uD569\\uB2C8\\uB2E4. \\uC81C\\uD55C \\uC2DC\\uAC04\\uC774 \\uC5C6\\uB294 \\uACBD\\uC6B0 0\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uCC28\\uC774\\uB97C \\uACC4\\uC0B0\\uD560 \\uCD5C\\uB300 \\uD30C\\uC77C \\uD06C\\uAE30(MB)\\uC785\\uB2C8\\uB2E4. \\uC81C\\uD55C\\uC774 \\uC5C6\\uC73C\\uBA74 0\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"diff \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C diff\\uB97C \\uB098\\uB780\\uD788 \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC778\\uB77C\\uC778\\uC73C\\uB85C \\uD45C\\uC2DC\\uD560\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"If the diff editor width is smaller than this value, the inline view is used.\",\"If enabled and the editor width is too small, the inline view is used.\",\"\\uD65C\\uC131\\uD654\\uB418\\uBA74 diff \\uD3B8\\uC9D1\\uAE30\\uB294 \\uBCC0\\uACBD \\uB0B4\\uC6A9\\uC744 \\uB418\\uB3CC\\uB9AC\\uAE30 \\uC704\\uD574 \\uAE00\\uB9AC\\uD504 \\uC5EC\\uBC31\\uC5D0 \\uD654\\uC0B4\\uD45C\\uB97C \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD558\\uBA74 Diff \\uD3B8\\uC9D1\\uAE30\\uAC00 \\uC120\\uD589 \\uB610\\uB294 \\uD6C4\\uD589 \\uACF5\\uBC31\\uC758 \\uBCC0\\uACBD \\uB0B4\\uC6A9\\uC744 \\uBB34\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"diff \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uCD94\\uAC00/\\uC81C\\uAC70\\uB41C \\uBCC0\\uACBD \\uB0B4\\uC6A9\\uC5D0 \\uB300\\uD574 +/- \\uD45C\\uC2DC\\uAE30\\uB97C \\uD45C\\uC2DC\\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C CodeLens\\uB97C \\uD45C\\uC2DC\\uD560 \\uAC83\\uC778\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC904\\uC774 \\uBC14\\uB00C\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBDF0\\uD3EC\\uD2B8 \\uB108\\uBE44\\uC5D0\\uC11C \\uC904\\uC774 \\uBC14\\uB01D\\uB2C8\\uB2E4.\",\"\\uC904\\uC740 {0} \\uC124\\uC815\\uC5D0 \\uB530\\uB77C \\uC904 \\uBC14\\uAFC8\\uB429\\uB2C8\\uB2E4.\",\"\\uB808\\uAC70\\uC2DC \\uBE44\\uAD50 \\uC54C\\uACE0\\uB9AC\\uC998\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uACE0\\uAE09 \\uBE44\\uAD50 \\uC54C\\uACE0\\uB9AC\\uC998\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"Controls whether the diff editor shows unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as a minimum for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as context when comparing unchanged regions. Only works when {0} is set.\",\"diff \\uD3B8\\uC9D1\\uAE30\\uAC00 \\uAC10\\uC9C0\\uB41C \\uCF54\\uB4DC \\uC774\\uB3D9\\uC744 \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. {0}\\uC774(\\uAC00) \\uC124\\uC815\\uB41C \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uC791\\uB3D9\\uD569\\uB2C8\\uB2E4.\",\"diff \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC0C8 \\uAD6C\\uD604\\uC744 \\uC0AC\\uC6A9\\uD558\\uB294\\uC9C0 \\uB610\\uB294 \\uC774\\uC804 \\uAD6C\\uD604\\uC744 \\uC0AC\\uC6A9\\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBB38\\uC790\\uAC00 \\uC0BD\\uC785\\uB418\\uAC70\\uB098 \\uC0AD\\uC81C\\uB41C \\uC704\\uCE58\\uB97C \\uBCFC \\uC218 \\uC788\\uB3C4\\uB85D diff \\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uBE48 \\uC7A5\\uC2DD\\uC801 \\uC694\\uC18C\\uB97C \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\"],\"vs/editor/common/config/editorOptions\":[\"\\uD50C\\uB7AB\\uD3FC API\\uB97C \\uC0AC\\uC6A9\\uD558\\uC5EC \\uD654\\uBA74 \\uC77D\\uAE30 \\uD504\\uB85C\\uADF8\\uB7A8\\uC774 \\uC5F0\\uACB0\\uB41C \\uACBD\\uC6B0 \\uAC10\\uC9C0\",\"\\uD654\\uBA74 \\uC77D\\uAE30 \\uD504\\uB85C\\uADF8\\uB7A8\\uC744 \\uC0AC\\uC6A9\\uD558\\uC5EC \\uC0AC\\uC6A9 \\uCD5C\\uC801\\uD654\",\"\\uD654\\uBA74 \\uC77D\\uAE30 \\uD504\\uB85C\\uADF8\\uB7A8\\uC774 \\uC5F0\\uACB0\\uB418\\uC5B4 \\uC788\\uC9C0 \\uC54A\\uB2E4\\uACE0 \\uAC00\\uC815\",\"\\uD654\\uBA74 \\uD310\\uB3C5\\uAE30\\uC5D0 \\uCD5C\\uC801\\uD654\\uB41C \\uBAA8\\uB4DC\\uC5D0\\uC11C UI\\uB97C \\uC2E4\\uD589\\uD574\\uC57C \\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC8FC\\uC11D\\uC744 \\uB2EC \\uB54C \\uACF5\\uBC31 \\uBB38\\uC790\\uB97C \\uC0BD\\uC785\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBE48 \\uC904\\uC744 \\uC904 \\uC8FC\\uC11D\\uC5D0 \\uB300\\uD55C \\uD1A0\\uAE00, \\uCD94\\uAC00 \\uB610\\uB294 \\uC81C\\uAC70 \\uC791\\uC5C5\\uC73C\\uB85C \\uBB34\\uC2DC\\uD574\\uC57C \\uD558\\uB294\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC120\\uD0DD \\uC601\\uC5ED \\uC5C6\\uC774 \\uD604\\uC7AC \\uC904 \\uBCF5\\uC0AC \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC785\\uB825\\uD558\\uB294 \\uB3D9\\uC548 \\uC77C\\uCE58 \\uD56D\\uBAA9\\uC744 \\uCC3E\\uAE30 \\uC704\\uD55C \\uCEE4\\uC11C \\uC774\\uB3D9 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uC120\\uD0DD \\uC601\\uC5ED\\uC5D0\\uC11C \\uAC80\\uC0C9 \\uBB38\\uC790\\uC5F4\\uC744 \\uC2DC\\uB4DC\\uD558\\uC9C0 \\uB9C8\\uC138\\uC694.\",\"\\uCEE4\\uC11C \\uC704\\uCE58\\uC758 \\uB2E8\\uC5B4\\uB97C \\uD3EC\\uD568\\uD558\\uC5EC \\uD56D\\uC0C1 \\uD3B8\\uC9D1\\uAE30 \\uC120\\uD0DD \\uC601\\uC5ED\\uC5D0\\uC11C \\uAC80\\uC0C9 \\uBB38\\uC790\\uC5F4\\uC744 \\uC2DC\\uB4DC\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uC120\\uD0DD \\uC601\\uC5ED\\uC5D0\\uC11C\\uB9CC \\uAC80\\uC0C9 \\uBB38\\uC790\\uC5F4\\uC744 \\uC2DC\\uB4DC\\uD558\\uC138\\uC694.\",\"\\uD3B8\\uC9D1\\uAE30 \\uC120\\uD0DD\\uC5D0\\uC11C Find Widget\\uC758 \\uAC80\\uC0C9 \\uBB38\\uC790\\uC5F4\\uC744 \\uC2DC\\uB529\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC120\\uD0DD \\uC601\\uC5ED\\uC5D0\\uC11C \\uCC3E\\uAE30\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uCF1C\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4(\\uAE30\\uBCF8\\uAC12).\",\"\\uC120\\uD0DD \\uC601\\uC5ED\\uC5D0\\uC11C \\uCC3E\\uAE30\\uB97C \\uD56D\\uC0C1 \\uC790\\uB3D9\\uC73C\\uB85C \\uCF2D\\uB2C8\\uB2E4.\",\"\\uC5EC\\uB7EC \\uC904\\uC758 \\uCF58\\uD150\\uCE20\\uB97C \\uC120\\uD0DD\\uD558\\uBA74 \\uC120\\uD0DD \\uD56D\\uBAA9\\uC5D0\\uC11C \\uCC3E\\uAE30\\uAC00 \\uC790\\uB3D9\\uC73C\\uB85C \\uCF1C\\uC9D1\\uB2C8\\uB2E4.\",\"\\uC120\\uD0DD \\uC601\\uC5ED\\uC5D0\\uC11C \\uCC3E\\uAE30\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uC124\\uC815\\uD558\\uB294 \\uC870\\uAC74\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"macOS\\uC5D0\\uC11C Find Widget\\uC774 \\uACF5\\uC720 \\uD074\\uB9BD\\uBCF4\\uB4DC \\uCC3E\\uAE30\\uB97C \\uC77D\\uC744\\uC9C0 \\uC218\\uC815\\uD560\\uC9C0 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC704\\uC82F \\uCC3E\\uAE30\\uC5D0\\uC11C \\uD3B8\\uC9D1\\uAE30 \\uB9E8 \\uC704\\uC5D0 \\uC904\\uC744 \\uCD94\\uAC00\\uD574\\uC57C \\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. true\\uC778 \\uACBD\\uC6B0 \\uC704\\uC82F \\uCC3E\\uAE30\\uAC00 \\uD45C\\uC2DC\\uB418\\uBA74 \\uCCAB \\uBC88\\uC9F8 \\uC904 \\uC704\\uB85C \\uC2A4\\uD06C\\uB864\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uB354 \\uC774\\uC0C1 \\uC77C\\uCE58\\uD558\\uB294 \\uD56D\\uBAA9\\uC774 \\uC5C6\\uC744 \\uB54C \\uAC80\\uC0C9\\uC744 \\uCC98\\uC74C\\uC774\\uB098 \\uB05D\\uC5D0\\uC11C \\uC790\\uB3D9\\uC73C\\uB85C \\uB2E4\\uC2DC \\uC2DC\\uC791\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uAE00\\uAF34 \\uD569\\uC790('calt' \\uBC0F 'liga' \\uAE00\\uAF34 \\uAE30\\uB2A5)\\uB97C \\uC0AC\\uC6A9\\uD558\\uAC70\\uB098 \\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4. 'font-feature-settings' CSS \\uC18D\\uC131\\uC758 \\uC138\\uBD84\\uD654\\uB41C \\uC81C\\uC5B4\\uB97C \\uC704\\uD574 \\uBB38\\uC790\\uC5F4\\uB85C \\uBCC0\\uACBD\\uD569\\uB2C8\\uB2E4.\",\"\\uBA85\\uC2DC\\uC801 'font-feature-settings' CSS \\uC18D\\uC131\\uC785\\uB2C8\\uB2E4. \\uD569\\uC790\\uB97C \\uCF1C\\uAC70\\uB098 \\uAEBC\\uC57C \\uD558\\uB294 \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uBD80\\uC6B8\\uC744 \\uB300\\uC2E0 \\uC804\\uB2EC\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uAE00\\uAF34 \\uD569\\uC790 \\uB610\\uB294 \\uAE00\\uAF34 \\uAE30\\uB2A5\\uC744 \\uAD6C\\uC131\\uD569\\uB2C8\\uB2E4. CSS 'font-feature-settings' \\uC18D\\uC131\\uC758 \\uAC12\\uC5D0 \\uB300\\uD574 \\uD569\\uC790 \\uB610\\uB294 \\uBB38\\uC790\\uC5F4\\uC744 \\uC0AC\\uC6A9\\uD558\\uAC70\\uB098 \\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC124\\uC815\\uD558\\uAE30 \\uC704\\uD55C \\uBD80\\uC6B8\\uC77C \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"font-weight\\uC5D0\\uC11C font-variation-settings\\uB85C \\uBCC0\\uD658\\uC744 \\uC0AC\\uC6A9/\\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4. 'font-variation-settings' CSS \\uC18D\\uC131\\uC758 \\uC138\\uBD84\\uD654\\uB41C \\uCEE8\\uD2B8\\uB864\\uC744 \\uC704\\uD574 \\uC774\\uB97C \\uBB38\\uC790\\uC5F4\\uB85C \\uBCC0\\uACBD\\uD569\\uB2C8\\uB2E4.\",\"\\uBA85\\uC2DC\\uC801 'font-variation-settings' CSS \\uC18D\\uC131\\uC785\\uB2C8\\uB2E4. font-weight\\uB9CC font-variation-settings\\uB85C \\uBCC0\\uD658\\uD574\\uC57C \\uD558\\uB294 \\uACBD\\uC6B0 \\uBD80\\uC6B8\\uC744 \\uB300\\uC2E0 \\uC804\\uB2EC\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uAE00\\uAF34 \\uBCC0\\uD615\\uC744 \\uAD6C\\uC131\\uD569\\uB2C8\\uB2E4. font-weight\\uC5D0\\uC11C font-variation-settings\\uB85C \\uBCC0\\uD658\\uC744 \\uC0AC\\uC6A9/\\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC124\\uC815\\uD558\\uB294 \\uBD80\\uC6B8\\uC774\\uAC70\\uB098 CSS 'font-variation-settings' \\uC18D\\uC131 \\uAC12\\uC5D0 \\uB300\\uD55C \\uBB38\\uC790\\uC5F4\\uC77C \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uAE00\\uAF34 \\uD06C\\uAE30(\\uD53D\\uC140)\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",'\"\\uD45C\\uC900\" \\uBC0F \"\\uAD75\\uAC8C\" \\uD0A4\\uC6CC\\uB4DC \\uB610\\uB294 1~1000 \\uC0AC\\uC774\\uC758 \\uC22B\\uC790\\uB9CC \\uD5C8\\uC6A9\\uB429\\uB2C8\\uB2E4.','\\uAE00\\uAF34 \\uB450\\uAED8\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \"\\uD45C\\uC900\" \\uBC0F \"\\uAD75\\uAC8C\" \\uD0A4\\uC6CC\\uB4DC \\uB610\\uB294 1~1000 \\uC0AC\\uC774\\uC758 \\uC22B\\uC790\\uB97C \\uD5C8\\uC6A9\\uD569\\uB2C8\\uB2E4.',\"\\uACB0\\uACFC\\uC758 Peek \\uBCF4\\uAE30 \\uD45C\\uC2DC(\\uAE30\\uBCF8\\uAC12)\",\"\\uAE30\\uBCF8 \\uACB0\\uACFC\\uB85C \\uC774\\uB3D9\\uD558\\uC5EC Peek \\uBCF4\\uAE30\\uB97C \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uAE30\\uBCF8 \\uACB0\\uACFC\\uB85C \\uC774\\uB3D9\\uD558\\uC5EC \\uB2E4\\uB978 \\uD56D\\uBAA9\\uC5D0 \\uB300\\uD574 Peek \\uC5C6\\uB294 \\uD0D0\\uC0C9\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uC774 \\uC124\\uC815\\uC740 \\uB354 \\uC774\\uC0C1 \\uC0AC\\uC6A9\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4. \\uB300\\uC2E0 'editor.editor.gotoLocation.multipleDefinitions' \\uB610\\uB294 'editor.editor.gotoLocation.multipleImplementations'\\uC640 \\uAC19\\uC740 \\uBCC4\\uB3C4\\uC758 \\uC124\\uC815\\uC744 \\uC0AC\\uC6A9\\uD558\\uC138\\uC694.\",\"\\uC5EC\\uB7EC \\uB300\\uC0C1 \\uC704\\uCE58\\uAC00 \\uC788\\uB294 \\uACBD\\uC6B0 '\\uC815\\uC758\\uB85C \\uC774\\uB3D9' \\uBA85\\uB839 \\uB3D9\\uC791\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC5EC\\uB7EC \\uB300\\uC0C1 \\uC704\\uCE58\\uAC00 \\uC788\\uB294 \\uACBD\\uC6B0 '\\uC720\\uD615 \\uC815\\uC758\\uB85C \\uC774\\uB3D9' \\uBA85\\uB839 \\uB3D9\\uC791\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC5EC\\uB7EC \\uB300\\uC0C1 \\uC704\\uCE58\\uAC00 \\uC788\\uB294 \\uACBD\\uC6B0 'Go to Declaration' \\uBA85\\uB839 \\uB3D9\\uC791\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC5EC\\uB7EC \\uB300\\uC0C1 \\uC704\\uCE58\\uAC00 \\uC788\\uB294 \\uACBD\\uC6B0 '\\uAD6C\\uD604\\uC73C\\uB85C \\uC774\\uB3D9' \\uBA85\\uB839 \\uB3D9\\uC791\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC5EC\\uB7EC \\uB300\\uC0C1 \\uC704\\uCE58\\uAC00 \\uC788\\uB294 \\uACBD\\uC6B0 '\\uCC38\\uC870\\uB85C \\uC774\\uB3D9' \\uBA85\\uB839 \\uB3D9\\uC791\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"'\\uC815\\uC758\\uB85C \\uC774\\uB3D9'\\uC758 \\uACB0\\uACFC\\uAC00 \\uD604\\uC7AC \\uC704\\uCE58\\uC77C \\uB54C \\uC2E4\\uD589\\uB418\\uB294 \\uB300\\uCCB4 \\uBA85\\uB839 ID\\uC785\\uB2C8\\uB2E4.\",\"'\\uD615\\uC2DD \\uC815\\uC758\\uB85C \\uC774\\uB3D9'\\uC758 \\uACB0\\uACFC\\uAC00 \\uD604\\uC7AC \\uC704\\uCE58\\uC77C \\uB54C \\uC2E4\\uD589\\uB418\\uB294 \\uB300\\uCCB4 \\uBA85\\uB839 ID\\uC785\\uB2C8\\uB2E4.\",\"'\\uC120\\uC5B8\\uC73C\\uB85C \\uC774\\uB3D9'\\uC758 \\uACB0\\uACFC\\uAC00 \\uD604\\uC7AC \\uC704\\uCE58\\uC77C \\uB54C \\uC2E4\\uD589\\uB418\\uB294 \\uB300\\uCCB4 \\uBA85\\uB839 ID\\uC785\\uB2C8\\uB2E4.\",\"'\\uAD6C\\uD604\\uC73C\\uB85C \\uC774\\uB3D9'\\uC758 \\uACB0\\uACFC\\uAC00 \\uD604\\uC7AC \\uC704\\uCE58\\uC77C \\uB54C \\uC2E4\\uD589\\uB418\\uB294 \\uB300\\uCCB4 \\uBA85\\uB839 ID\\uC785\\uB2C8\\uB2E4.\",\"'\\uCC38\\uC870\\uB85C \\uC774\\uB3D9'\\uC758 \\uACB0\\uACFC\\uAC00 \\uD604\\uC7AC \\uC704\\uCE58\\uC77C \\uB54C \\uC2E4\\uD589\\uB418\\uB294 \\uB300\\uCCB4 \\uBA85\\uB839 ID\\uC785\\uB2C8\\uB2E4.\",\"\\uD638\\uBC84 \\uD45C\\uC2DC \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD638\\uBC84\\uAC00 \\uD45C\\uC2DC\\uB418\\uAE30 \\uC804\\uAE4C\\uC9C0\\uC758 \\uC9C0\\uC5F0 \\uC2DC\\uAC04(\\uBC00\\uB9AC\\uCD08)\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4\\uB97C \\uD574\\uB2F9 \\uD56D\\uBAA9 \\uC704\\uB85C \\uC774\\uB3D9\\uD560 \\uB54C \\uD638\\uBC84\\uB97C \\uACC4\\uC18D \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uACF5\\uBC31\\uC774 \\uC788\\uB294 \\uACBD\\uC6B0 \\uC120 \\uC704\\uC5D0 \\uB9C8\\uC6B0\\uC2A4\\uB97C \\uAC00\\uC838\\uAC00\\uB294 \\uAC83\\uC744 \\uD45C\\uC2DC\\uD558\\uB294 \\uAC83\\uC744 \\uC120\\uD638\\uD569\\uB2C8\\uB2E4.\",\"\\uBAA8\\uB4E0 \\uBB38\\uC790\\uAC00 \\uB3D9\\uC77C\\uD55C \\uB108\\uBE44\\uB77C\\uACE0 \\uAC00\\uC815\\uD569\\uB2C8\\uB2E4. \\uC774 \\uC54C\\uACE0\\uB9AC\\uC998\\uC740 \\uACE0\\uC815 \\uD3ED \\uAE00\\uAF34\\uACFC \\uBB38\\uC790 \\uBAA8\\uC591\\uC758 \\uB108\\uBE44\\uAC00 \\uAC19\\uC740 \\uD2B9\\uC815 \\uC2A4\\uD06C\\uB9BD\\uD2B8(\\uC608: \\uB77C\\uD2F4 \\uBB38\\uC790)\\uC5D0 \\uC801\\uC808\\uD788 \\uC791\\uB3D9\\uD558\\uB294 \\uBE60\\uB978 \\uC54C\\uACE0\\uB9AC\\uC998\\uC785\\uB2C8\\uB2E4.\",\"\\uB798\\uD551 \\uC810 \\uACC4\\uC0B0\\uC744 \\uBE0C\\uB77C\\uC6B0\\uC800\\uC5D0 \\uC704\\uC784\\uD569\\uB2C8\\uB2E4. \\uC774 \\uC54C\\uACE0\\uB9AC\\uC998\\uC740 \\uB9E4\\uC6B0 \\uB290\\uB824\\uC11C \\uB300\\uC6A9\\uB7C9 \\uD30C\\uC77C\\uC758 \\uACBD\\uC6B0 \\uC911\\uB2E8\\uB420 \\uC218 \\uC788\\uC9C0\\uB9CC \\uBAA8\\uB4E0 \\uACBD\\uC6B0\\uC5D0 \\uC801\\uC808\\uD788 \\uC791\\uB3D9\\uD569\\uB2C8\\uB2E4.\",\"\\uB798\\uD551 \\uC9C0\\uC810\\uC744 \\uACC4\\uC0B0\\uD558\\uB294 \\uC54C\\uACE0\\uB9AC\\uC998\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uC811\\uADFC\\uC131 \\uBAA8\\uB4DC\\uC5D0\\uC11C\\uB294 \\uCD5C\\uC0C1\\uC758 \\uD658\\uACBD\\uC744 \\uC704\\uD574 \\uACE0\\uAE09 \\uAE30\\uB2A5\\uC774 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uCF54\\uB4DC \\uB3D9\\uC791 \\uC804\\uAD6C\\uB97C \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uC704\\uCABD\\uC5D0\\uC11C \\uC2A4\\uD06C\\uB864\\uD558\\uB294 \\uB3D9\\uC548 \\uC911\\uCCA9\\uB41C \\uD604\\uC7AC \\uBC94\\uC704\\uB97C \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uD45C\\uC2DC\\uD560 \\uCD5C\\uB300 \\uACE0\\uC815 \\uC120 \\uC218\\uB97C \\uC815\\uC758\\uD569\\uB2C8\\uB2E4.\",\"\\uACE0\\uC815\\uD560 \\uC904\\uC744 \\uACB0\\uC815\\uD558\\uB294 \\uB370 \\uC0AC\\uC6A9\\uD560 \\uBAA8\\uB378\\uC744 \\uC815\\uC758\\uD569\\uB2C8\\uB2E4. \\uAC1C\\uC694 \\uBAA8\\uB378\\uC774 \\uC5C6\\uC73C\\uBA74 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uBAA8\\uB378\\uC5D0 \\uD574\\uB2F9\\uD558\\uB294 \\uC811\\uAE30 \\uACF5\\uAE09\\uC790 \\uBAA8\\uB378\\uC5D0\\uC11C \\uB300\\uCCB4\\uB429\\uB2C8\\uB2E4. \\uC774 \\uC21C\\uC11C\\uB294 \\uC138 \\uAC00\\uC9C0 \\uACBD\\uC6B0 \\uBAA8\\uB450 \\uC801\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"Enable scrolling of the sticky scroll widget with the editor's horizontal scrollbar.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC778\\uB808\\uC774 \\uD78C\\uD2B8\\uB97C \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uC778\\uB808\\uC774 \\uD78C\\uD2B8\\uB97C \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC788\\uC74C\",\"\\uC778\\uB808\\uC774 \\uD78C\\uD2B8\\uB294 \\uAE30\\uBCF8\\uC801\\uC73C\\uB85C \\uD45C\\uC2DC\\uB418\\uACE0 {0}\\uC744(\\uB97C) \\uAE38\\uAC8C \\uB204\\uB97C \\uB54C \\uC228\\uACA8\\uC9D1\\uB2C8\\uB2E4.\",\"\\uC778\\uB808\\uC774 \\uD78C\\uD2B8\\uB294 \\uAE30\\uBCF8\\uAC12\\uC73C\\uB85C \\uC228\\uACA8\\uC838 \\uC788\\uC73C\\uBA70 {0}\\uC744(\\uB97C) \\uAE38\\uAC8C \\uB204\\uB974\\uBA74 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC778\\uB808\\uC774 \\uD78C\\uD2B8\\uB294 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC74C\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC778\\uB808\\uC774 \\uD78C\\uD2B8\\uC758 \\uAE00\\uAF34 \\uD06C\\uAE30\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uAE30\\uBCF8\\uC801\\uC73C\\uB85C {0}\\uC740(\\uB294) \\uAD6C\\uC131\\uB41C \\uAC12\\uC774 {1}\\uBCF4\\uB2E4 \\uC791\\uAC70\\uB098 \\uD3B8\\uC9D1\\uAE30 \\uAE00\\uAF34 \\uD06C\\uAE30\\uBCF4\\uB2E4 \\uD070 \\uACBD\\uC6B0\\uC5D0 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC778\\uB808\\uC774 \\uD78C\\uD2B8\\uC758 \\uAE00\\uAF34 \\uD328\\uBC00\\uB9AC\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uBE44\\uC6CC \\uB450\\uBA74 {0}\\uC774(\\uAC00) \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC778\\uB808\\uC774 \\uD78C\\uD2B8 \\uC8FC\\uC704\\uC758 \\uD328\\uB529\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",`\\uC120 \\uB192\\uC774\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\r\n - 0\\uC744 \\uC0AC\\uC6A9\\uD558\\uC5EC \\uAE00\\uAF34 \\uD06C\\uAE30\\uC5D0\\uC11C \\uC904 \\uB192\\uC774\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uACC4\\uC0B0\\uD569\\uB2C8\\uB2E4.\\r\n - 0\\uC5D0\\uC11C 8 \\uC0AC\\uC774\\uC758 \\uAC12\\uC740 \\uAE00\\uAF34 \\uD06C\\uAE30\\uC758 \\uC2B9\\uC218\\uB85C \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\\r\n - 8\\uBCF4\\uB2E4 \\uD06C\\uAC70\\uB098 \\uAC19\\uC740 \\uAC12\\uC774 \\uC720\\uD6A8 \\uAC12\\uC73C\\uB85C \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.`,\"\\uBBF8\\uB2C8\\uB9F5 \\uD45C\\uC2DC \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBBF8\\uB2C8\\uB9F5\\uC744 \\uC790\\uB3D9\\uC73C\\uB85C \\uC228\\uAE38\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBBF8\\uB2C8\\uB9F5\\uC758 \\uD06C\\uAE30\\uB294 \\uD3B8\\uC9D1\\uAE30 \\uB0B4\\uC6A9\\uACFC \\uB3D9\\uC77C\\uD558\\uBA70 \\uC2A4\\uD06C\\uB864\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC758 \\uB192\\uC774\\uB97C \\uB9DE\\uCD94\\uAE30 \\uC704\\uD574 \\uD544\\uC694\\uC5D0 \\uB530\\uB77C \\uBBF8\\uB2C8\\uB9F5\\uC774 \\uD655\\uC7A5\\uB418\\uAC70\\uB098 \\uCD95\\uC18C\\uB429\\uB2C8\\uB2E4(\\uC2A4\\uD06C\\uB864 \\uC5C6\\uC74C).\",\"\\uBBF8\\uB2C8\\uB9F5\\uC744 \\uD3B8\\uC9D1\\uAE30\\uBCF4\\uB2E4 \\uC791\\uAC8C \\uC720\\uC9C0\\uD560 \\uC218 \\uC788\\uB3C4\\uB85D \\uD544\\uC694\\uC5D0 \\uB530\\uB77C \\uBBF8\\uB2C8\\uB9F5\\uC774 \\uCD95\\uC18C\\uB429\\uB2C8\\uB2E4(\\uC2A4\\uD06C\\uB864 \\uC5C6\\uC74C).\",\"\\uBBF8\\uB2C8\\uB9F5\\uC758 \\uD06C\\uAE30\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBBF8\\uB2C8\\uB9F5\\uC744 \\uB80C\\uB354\\uB9C1\\uD560 \\uCE21\\uBA74\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBBF8\\uB2C8\\uB9F5 \\uC2AC\\uB77C\\uC774\\uB354\\uAC00 \\uD45C\\uC2DC\\uB418\\uB294 \\uC2DC\\uAE30\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBBF8\\uB2C8\\uB9F5\\uC5D0 \\uADF8\\uB824\\uC9C4 \\uCF58\\uD150\\uCE20\\uC758 \\uBC30\\uC728: 1, 2 \\uB610\\uB294 3.\",\"\\uC904\\uC758 \\uC2E4\\uC81C \\uBB38\\uC790(\\uC0C9 \\uBE14\\uB85D \\uC544\\uB2D8)\\uB97C \\uB80C\\uB354\\uB9C1\\uD569\\uB2C8\\uB2E4.\",\"\\uCD5C\\uB300 \\uD2B9\\uC815 \\uC218\\uC758 \\uC5F4\\uC744 \\uB80C\\uB354\\uB9C1\\uD558\\uB3C4\\uB85D \\uBBF8\\uB2C8\\uB9F5\\uC758 \\uB108\\uBE44\\uB97C \\uC81C\\uD55C\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC758 \\uC704\\uCABD \\uAC00\\uC7A5\\uC790\\uB9AC\\uC640 \\uCCAB \\uBC88\\uC9F8 \\uC904 \\uC0AC\\uC774\\uC758 \\uACF5\\uBC31\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC758 \\uC544\\uB798\\uCABD \\uAC00\\uC7A5\\uC790\\uB9AC\\uC640 \\uB9C8\\uC9C0\\uB9C9 \\uC904 \\uC0AC\\uC774\\uC758 \\uACF5\\uBC31\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC785\\uB825\\uACFC \\uB3D9\\uC2DC\\uC5D0 \\uB9E4\\uAC1C\\uBCC0\\uC218 \\uBB38\\uC11C\\uC640 \\uC720\\uD615 \\uC815\\uBCF4\\uB97C \\uD45C\\uC2DC\\uD558\\uB294 \\uD31D\\uC5C5\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uB9E4\\uAC1C\\uBCC0\\uC218 \\uD78C\\uD2B8 \\uBA54\\uB274\\uC758 \\uC8FC\\uAE30 \\uD639\\uC740 \\uBAA9\\uB85D\\uC758 \\uB05D\\uC5D0 \\uB3C4\\uB2EC\\uD558\\uC600\\uC744\\uB54C \\uC885\\uB8CC\\uD560 \\uAC83\\uC778\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uACB0\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uC81C\\uC548 \\uC704\\uC82F \\uB0B4\\uBD80\\uC5D0 \\uBE60\\uB978 \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uBE60\\uB978 \\uC81C\\uC548\\uC774 \\uC720\\uB839 \\uD14D\\uC2A4\\uD2B8\\uB85C \\uD45C\\uC2DC\\uB428\",\"\\uBE60\\uB978 \\uC81C\\uC548\\uC774 \\uC0AC\\uC6A9 \\uC911\\uC9C0\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBB38\\uC790\\uC5F4 \\uB0B4\\uC5D0\\uC11C \\uBE60\\uB978 \\uC81C\\uC548\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uC8FC\\uC11D \\uB0B4\\uC5D0\\uC11C \\uBE60\\uB978 \\uC81C\\uC548\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uBB38\\uC790\\uC5F4 \\uBC0F \\uC8FC\\uC11D \\uC678\\uBD80\\uC5D0\\uC11C \\uBE60\\uB978 \\uC81C\\uC548\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uC785\\uB825\\uD558\\uB294 \\uB3D9\\uC548 \\uC81C\\uC548\\uC744 \\uC790\\uB3D9\\uC73C\\uB85C \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uC774\\uAC83\\uC740 \\uC8FC\\uC11D, \\uBB38\\uC790\\uC5F4 \\uBC0F \\uAE30\\uD0C0 \\uCF54\\uB4DC\\uB97C \\uC785\\uB825\\uD558\\uAE30 \\uC704\\uD574 \\uC81C\\uC5B4\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uBE60\\uB978 \\uC81C\\uC548\\uC740 \\uACE0\\uC2A4\\uD2B8 \\uD14D\\uC2A4\\uD2B8 \\uB610\\uB294 \\uC81C\\uC548 \\uC704\\uC82F\\uC73C\\uB85C \\uD45C\\uC2DC\\uD558\\uB3C4\\uB85D \\uAD6C\\uC131\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4. \\uB610\\uD55C \\uC81C\\uC548\\uC774 \\uD2B9\\uC218 \\uBB38\\uC790\\uC5D0 \\uC758\\uD574 \\uC2E4\\uD589\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD558\\uB294 '{0}'-\\uC124\\uC815\\uC5D0 \\uC720\\uC758\\uD558\\uC138\\uC694.\",\"\\uC904 \\uBC88\\uD638\\uB294 \\uB80C\\uB354\\uB9C1\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC904 \\uBC88\\uD638\\uB294 \\uC808\\uB300\\uAC12\\uC73C\\uB85C \\uB80C\\uB354\\uB9C1 \\uB429\\uB2C8\\uB2E4.\",\"\\uC904 \\uBC88\\uD638\\uB294 \\uCEE4\\uC11C \\uC704\\uCE58\\uC5D0\\uC11C \\uC904 \\uAC04\\uACA9 \\uAC70\\uB9AC\\uB85C \\uB80C\\uB354\\uB9C1 \\uB429\\uB2C8\\uB2E4.\",\"\\uC904 \\uBC88\\uD638\\uB294 \\uB9E4 10 \\uC904\\uB9C8\\uB2E4 \\uB80C\\uB354\\uB9C1\\uC774 \\uC774\\uB8E8\\uC5B4\\uC9D1\\uB2C8\\uB2E4.\",\"\\uC904 \\uBC88\\uD638\\uC758 \\uD45C\\uC2DC \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC774 \\uD3B8\\uC9D1\\uAE30 \\uB208\\uAE08\\uC790\\uC5D0\\uC11C \\uB80C\\uB354\\uB9C1\\uD560 \\uACE0\\uC815 \\uD3ED \\uBB38\\uC790 \\uC218\\uC785\\uB2C8\\uB2E4.\",\"\\uC774 \\uD3B8\\uC9D1\\uAE30 \\uB208\\uAE08\\uC790\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD2B9\\uC815 \\uC218\\uC758 \\uACE0\\uC815 \\uD3ED \\uBB38\\uC790 \\uB4A4\\uC5D0 \\uC138\\uB85C \\uB208\\uAE08\\uC790\\uB97C \\uB80C\\uB354\\uB9C1\\uD569\\uB2C8\\uB2E4. \\uC5EC\\uB7EC \\uB208\\uAE08\\uC790\\uC758 \\uACBD\\uC6B0 \\uC5EC\\uB7EC \\uAC12\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4. \\uBC30\\uC5F4\\uC774 \\uBE44\\uC5B4 \\uC788\\uB294 \\uACBD\\uC6B0 \\uB208\\uAE08\\uC790\\uAC00 \\uADF8\\uB824\\uC9C0\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC138\\uB85C \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300\\uB294 \\uD544\\uC694\\uD55C \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC138\\uB85C \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300\\uAC00 \\uD56D\\uC0C1 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC138\\uB85C \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300\\uB97C \\uD56D\\uC0C1 \\uC228\\uAE41\\uB2C8\\uB2E4.\",\"\\uC138\\uB85C \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300\\uC758 \\uD45C\\uC2DC \\uC720\\uD615\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uAC00\\uB85C \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300\\uB294 \\uD544\\uC694\\uD55C \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uAC00\\uB85C \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300\\uAC00 \\uD56D\\uC0C1 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uAC00\\uB85C \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300\\uB97C \\uD56D\\uC0C1 \\uC228\\uAE41\\uB2C8\\uB2E4.\",\"\\uAC00\\uB85C \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300\\uC758 \\uD45C\\uC2DC \\uC720\\uD615\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC138\\uB85C \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300\\uC758 \\uB108\\uBE44\\uC785\\uB2C8\\uB2E4.\",\"\\uAC00\\uB85C \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300\\uC758 \\uB192\\uC774\\uC785\\uB2C8\\uB2E4.\",\"\\uD074\\uB9AD\\uC774 \\uD398\\uC774\\uC9C0\\uBCC4\\uB85C \\uC2A4\\uD06C\\uB864\\uB418\\uB294\\uC9C0 \\uB610\\uB294 \\uD074\\uB9AD \\uC704\\uCE58\\uB85C \\uC774\\uB3D9\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uAE30\\uBCF8\\uC774 \\uC544\\uB2CC \\uBAA8\\uB4E0 ASCII \\uBB38\\uC790\\uB97C \\uAC15\\uC870 \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. U+0020\\uACFC U+007E \\uC0AC\\uC774\\uC758 \\uBB38\\uC790, \\uD0ED, \\uC904 \\uBC14\\uAFC8 \\uBC0F \\uCE90\\uB9AC\\uC9C0 \\uB9AC\\uD134\\uB9CC \\uAE30\\uBCF8 ASCII\\uB85C \\uAC04\\uC8FC\\uB429\\uB2C8\\uB2E4.\",\"\\uACF5\\uBC31\\uB9CC \\uC608\\uC57D\\uD558\\uAC70\\uB098 \\uB108\\uBE44\\uAC00 \\uC804\\uD600 \\uC5C6\\uB294 \\uBB38\\uC790\\uB97C \\uAC15\\uC870 \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD604\\uC7AC \\uC0AC\\uC6A9\\uC790 \\uB85C\\uCE98\\uC5D0\\uC11C \\uACF5\\uD1B5\\uB418\\uB294 \\uBB38\\uC790\\uB97C \\uC81C\\uC678\\uD55C \\uAE30\\uBCF8 ASCII \\uBB38\\uC790\\uC640 \\uD63C\\uB3D9\\uD560 \\uC218 \\uC788\\uB294 \\uBB38\\uC790\\uB97C \\uAC15\\uC870 \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC8FC\\uC11D\\uC758 \\uBB38\\uC790\\uC5D0\\uB3C4 \\uC720\\uB2C8\\uCF54\\uB4DC \\uAC15\\uC870 \\uD45C\\uC2DC\\uB97C \\uC801\\uC6A9\\uD574\\uC57C \\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBB38\\uC790\\uC5F4\\uC758 \\uBB38\\uC790\\uC5D0\\uB3C4 \\uC720\\uB2C8\\uCF54\\uB4DC \\uAC15\\uC870 \\uD45C\\uC2DC\\uB97C \\uC801\\uC6A9\\uD574\\uC57C \\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uAC15\\uC870 \\uD45C\\uC2DC\\uB418\\uC9C0 \\uC54A\\uB294 \\uD5C8\\uC6A9\\uB41C \\uBB38\\uC790\\uB97C \\uC815\\uC758\\uD569\\uB2C8\\uB2E4.\",\"\\uD5C8\\uC6A9\\uB41C \\uB85C\\uCE98\\uC5D0\\uC11C \\uACF5\\uD1B5\\uC801\\uC778 \\uC720\\uB2C8\\uCF54\\uB4DC \\uBB38\\uC790\\uB294 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC778\\uB77C\\uC778 \\uC81C\\uC548\\uC744 \\uC790\\uB3D9\\uC73C\\uB85C \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uCD94\\uCC9C\\uC744 \\uD45C\\uC2DC\\uD790 \\uB54C\\uB9C8\\uB2E4 \\uC778\\uB77C\\uC778 \\uCD94\\uCC9C \\uB3C4\\uAD6C \\uBAA8\\uC74C\\uC744 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uCD94\\uCC9C\\uC744 \\uB9C8\\uC6B0\\uC2A4\\uB85C \\uAC00\\uB9AC\\uD0A4\\uBA74 \\uC778\\uB77C\\uC778 \\uCD94\\uCC9C \\uB3C4\\uAD6C \\uBAA8\\uC74C\\uC744 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uCD94\\uCC9C \\uB3C4\\uAD6C \\uBAA8\\uC74C\\uC744 \\uD45C\\uC2DC\\uD560 \\uC2DC\\uAE30\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uC81C\\uC548\\uC774 \\uC81C\\uC548 \\uC704\\uC82F\\uACFC \\uC0C1\\uD638 \\uC791\\uC6A9\\uD558\\uB294 \\uBC29\\uBC95\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD558\\uBA74 \\uC778\\uB77C\\uC778 \\uC81C\\uC548\\uC744 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC788\\uC744 \\uB54C \\uC81C\\uC548 \\uC704\\uC82F\\uC774 \\uC790\\uB3D9\\uC73C\\uB85C \\uD45C\\uC2DC\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638 \\uC30D \\uC0C9 \\uC9C0\\uC815\\uC744 \\uC0AC\\uC6A9\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. {0}\\uC744(\\uB97C) \\uC0AC\\uC6A9\\uD558\\uC5EC \\uB300\\uAD04\\uD638 \\uAC15\\uC870 \\uC0C9\\uC744 \\uC7AC\\uC815\\uC758\\uD569\\uB2C8\\uB2E4.\",\"\\uAC01 \\uB300\\uAD04\\uD638 \\uD615\\uC2DD\\uC5D0 \\uACE0\\uC720\\uD55C \\uB3C5\\uB9BD\\uC801\\uC778 \\uC0C9 \\uD480\\uC774 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638 \\uC30D \\uAC00\\uC774\\uB4DC\\uB97C \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D\\uC5D0 \\uB300\\uD574\\uC11C\\uB9CC \\uB300\\uAD04\\uD638 \\uC30D \\uAC00\\uC774\\uB4DC\\uB97C \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638 \\uC30D \\uAC00\\uC774\\uB4DC\\uB97C \\uBE44\\uD65C\\uC131\\uD654\\uD569\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uC0AC\\uC6A9 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC218\\uC9C1 \\uB300\\uAD04\\uD638 \\uC30D \\uAC00\\uC774\\uB4DC\\uC5D0 \\uCD94\\uAC00\\uD558\\uC5EC \\uC218\\uD3C9 \\uAC00\\uC774\\uB4DC\\uB97C \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D\\uC5D0 \\uB300\\uD574\\uC11C\\uB9CC \\uC218\\uD3C9 \\uAC00\\uC774\\uB4DC\\uB97C \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uC218\\uD3C9 \\uB300\\uAD04\\uD638 \\uC30D \\uAC00\\uC774\\uB4DC\\uB97C \\uBE44\\uD65C\\uC131\\uD654\\uD569\\uB2C8\\uB2E4.\",\"\\uAC00\\uB85C \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uC0AC\\uC6A9 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uAC00 \\uD65C\\uC131 \\uBE0C\\uB798\\uD0B7 \\uC30D\\uC744 \\uAC15\\uC870 \\uD45C\\uC2DC\\uD574\\uC57C \\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uAC00\\uC774\\uB4DC\\uB97C \\uB80C\\uB354\\uB9C1\\uD560\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120\\uC744 \\uAC15\\uC870 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uBE0C\\uB798\\uD0B7 \\uC548\\uB0B4\\uC120\\uC774 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB41C \\uACBD\\uC6B0\\uC5D0\\uB3C4 \\uD65C\\uC131 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120\\uC744 \\uAC15\\uC870 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120\\uC744 \\uAC15\\uC870 \\uD45C\\uC2DC\\uD558\\uC9C0 \\uB9C8\\uC138\\uC694.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uD65C\\uC131 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uAC00\\uC774\\uB4DC\\uB97C \\uAC15\\uC870 \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uCEE4\\uC11C\\uC758 \\uD14D\\uC2A4\\uD2B8 \\uC624\\uB978\\uCABD\\uC744 \\uB36E\\uC5B4 \\uC4F0\\uC9C0\\uC54A\\uACE0 \\uC81C\\uC548\\uC744 \\uC0BD\\uC785\\uD569\\uB2C8\\uB2E4.\",\"\\uC81C\\uC548\\uC744 \\uC0BD\\uC785\\uD558\\uACE0 \\uCEE4\\uC11C\\uC758 \\uC624\\uB978\\uCABD \\uD14D\\uC2A4\\uD2B8\\uB97C \\uB36E\\uC5B4\\uC501\\uB2C8\\uB2E4.\",\"\\uC644\\uB8CC\\uB97C \\uC218\\uB77D\\uD560 \\uB54C \\uB2E8\\uC5B4\\uB97C \\uB36E\\uC5B4\\uC4F8\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uC774\\uAC83\\uC740 \\uC774 \\uAE30\\uB2A5\\uC744 \\uC120\\uD0DD\\uD558\\uB294 \\uD655\\uC7A5\\uC5D0 \\uB530\\uB77C \\uB2E4\\uB985\\uB2C8\\uB2E4.\",\"\\uC81C\\uC548 \\uD544\\uD130\\uB9C1 \\uBC0F \\uC815\\uB82C\\uC5D0\\uC11C \\uC791\\uC740 \\uC624\\uD0C0\\uB97C \\uC124\\uBA85\\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC815\\uB82C\\uD560 \\uB54C \\uCEE4\\uC11C \\uADFC\\uCC98\\uC5D0 \\uD45C\\uC2DC\\uB418\\uB294 \\uB2E8\\uC5B4\\uB97C \\uC6B0\\uC120\\uD560\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC800\\uC7A5\\uB41C \\uC81C\\uC548 \\uC0AC\\uD56D \\uC120\\uD0DD \\uD56D\\uBAA9\\uC744 \\uC5EC\\uB7EC \\uC791\\uC5C5 \\uC601\\uC5ED \\uBC0F \\uCC3D\\uC5D0\\uC11C \\uACF5\\uC720\\uD560 \\uAC83\\uC778\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4(`#editor.suggestSelection#` \\uD544\\uC694).\",\"IntelliSense\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uD2B8\\uB9AC\\uAC70\\uD560 \\uB54C \\uD56D\\uC0C1 \\uC81C\\uC548\\uC744 \\uC120\\uD0DD\\uD569\\uB2C8\\uB2E4.\",\"IntelliSense\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uD2B8\\uB9AC\\uAC70\\uD560 \\uB54C \\uC81C\\uC548\\uC744 \\uC120\\uD0DD\\uD558\\uC9C0 \\uB9C8\\uC138\\uC694.\",\"\\uD2B8\\uB9AC\\uAC70 \\uBB38\\uC790\\uC5D0\\uC11C IntelliSense\\uB97C \\uD2B8\\uB9AC\\uAC70\\uD560 \\uB54C\\uB9CC \\uC81C\\uC548\\uC744 \\uC120\\uD0DD\\uD569\\uB2C8\\uB2E4.\",\"\\uC785\\uB825\\uD560 \\uB54C IntelliSense\\uB97C \\uD2B8\\uB9AC\\uAC70\\uD560 \\uB54C\\uB9CC \\uC81C\\uC548\\uC744 \\uC120\\uD0DD\\uD569\\uB2C8\\uB2E4.\",\"\\uC704\\uC82F\\uC774 \\uD45C\\uC2DC\\uB420 \\uB54C \\uC81C\\uC548\\uC744 \\uC120\\uD0DD\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uC774\\uB294 \\uC790\\uB3D9\\uC73C\\uB85C \\uD2B8\\uB9AC\\uAC70\\uB41C \\uC81C\\uC548('#editor.quickSuggestions#' \\uBC0F '#editor.suggestOnTriggerCharacters#')\\uC5D0\\uB9CC \\uC801\\uC6A9\\uB418\\uBA70, \\uC81C\\uC548\\uC774 \\uBA85\\uC2DC\\uC801\\uC73C\\uB85C \\uD638\\uCD9C\\uB420 \\uB54C \\uD56D\\uC0C1 \\uC120\\uD0DD\\uB429\\uB2C8\\uB2E4(\\uC608: 'Ctrl+Space'\\uB97C \\uD1B5\\uD574).\",\"\\uD65C\\uC131 \\uCF54\\uB4DC \\uC870\\uAC01\\uC774 \\uBE60\\uB978 \\uC81C\\uC548\\uC744 \\uBC29\\uC9C0\\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC81C\\uC548\\uC758 \\uC544\\uC774\\uCF58\\uC744 \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC81C\\uC548 \\uC704\\uC82F \\uD558\\uB2E8\\uC758 \\uC0C1\\uD0DC \\uD45C\\uC2DC\\uC904 \\uAC00\\uC2DC\\uC131\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC81C\\uC548 \\uACB0\\uACFC\\uB97C \\uBBF8\\uB9AC\\uBCFC\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC81C\\uC548 \\uC138\\uBD80 \\uC815\\uBCF4\\uAC00 \\uB808\\uC774\\uBE14\\uACFC \\uD568\\uAED8 \\uC778\\uB77C\\uC778\\uC5D0 \\uD45C\\uC2DC\\uB418\\uB294\\uC9C0 \\uC544\\uB2C8\\uBA74 \\uC138\\uBD80 \\uC815\\uBCF4 \\uC704\\uC82F\\uC5D0\\uB9CC \\uD45C\\uC2DC\\uB418\\uB294\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC774 \\uC124\\uC815\\uC740 \\uB354 \\uC774\\uC0C1 \\uC0AC\\uC6A9\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4. \\uC774\\uC81C \\uC81C\\uC548 \\uC704\\uC82F\\uC758 \\uD06C\\uAE30\\uB97C \\uC870\\uC815\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC774 \\uC124\\uC815\\uC740 \\uB354 \\uC774\\uC0C1 \\uC0AC\\uC6A9\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4. \\uB300\\uC2E0 'editor.suggest.showKeywords'\\uB610\\uB294 'editor.suggest.showSnippets'\\uC640 \\uAC19\\uC740 \\uBCC4\\uB3C4\\uC758 \\uC124\\uC815\\uC744 \\uC0AC\\uC6A9\\uD558\\uC138\\uC694.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 `\\uBA54\\uC11C\\uB4DC` \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uD568\\uC218' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uC0DD\\uC131\\uC790' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uC0AC\\uC6A9\\uB418\\uC9C0 \\uC54A\\uC74C' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"IntelliSense \\uD544\\uD130\\uB9C1\\uC744 \\uD65C\\uC131\\uD654\\uD558\\uBA74 \\uCCAB \\uBC88\\uC9F8 \\uBB38\\uC790\\uAC00 \\uB2E8\\uC5B4 \\uC2DC\\uC791 \\uBD80\\uBD84\\uACFC \\uC77C\\uCE58\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4(\\uC608: `c`\\uC758 \\uACBD\\uC6B0 `Console` \\uB610\\uB294 `WebContext`\\uAC00 \\uB420 \\uC218 \\uC788\\uC73C\\uBA70 `description`\\uC740 _\\uC548 \\uB428_). \\uBE44\\uD65C\\uC131\\uD654\\uD558\\uBA74 IntelliSense\\uAC00 \\uB354 \\uB9CE\\uC740 \\uACB0\\uACFC\\uB97C \\uD45C\\uC2DC\\uD558\\uC9C0\\uB9CC \\uC5EC\\uC804\\uD788 \\uC77C\\uCE58 \\uD488\\uC9C8\\uC744 \\uAE30\\uC900\\uC73C\\uB85C \\uC815\\uB82C\\uD569\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uD544\\uB4DC' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uBCC0\\uC218' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uD074\\uB798\\uC2A4' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uAD6C\\uC870' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uC778\\uD130\\uD398\\uC774\\uC2A4' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uBAA8\\uB4C8' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uC18D\\uC131' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uC774\\uBCA4\\uD2B8' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 `\\uC5F0\\uC0B0\\uC790` \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uB2E8\\uC704' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uAC12' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uC0C1\\uC218' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uC5F4\\uAC70\\uD615' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 `enumMember` \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uD0A4\\uC6CC\\uB4DC' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uD14D\\uC2A4\\uD2B8' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uC0C9' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 `\\uD30C\\uC77C` \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uCC38\\uC870' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uC0AC\\uC6A9\\uC790 \\uC9C0\\uC815 \\uC0C9' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uD3F4\\uB354' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB41C \\uACBD\\uC6B0 IntelliSense\\uC5D0 'typeParameter' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uBA74 IntelliSense\\uC5D0 '\\uCF54\\uB4DC \\uC870\\uAC01' \\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"IntelliSense\\uB97C \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD558\\uBA74 `user`-\\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"IntelliSense\\uB97C \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD55C \\uACBD\\uC6B0 `issues`-\\uC81C\\uC548\\uC744 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uC120\\uD589 \\uBC0F \\uD6C4\\uD589 \\uACF5\\uBC31\\uC744 \\uD56D\\uC0C1 \\uC120\\uD0DD\\uD574\\uC57C \\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uC785\\uB2C8\\uB2E4.\",\"\\uD558\\uC704 \\uB2E8\\uC5B4(\\uC608: 'fooBar'\\uC758 'foo' \\uB610\\uB294 'foo_bar')\\uB97C \\uC120\\uD0DD\\uD574\\uC57C \\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uC785\\uB2C8\\uB2E4.\",\"\\uB4E4\\uC5EC\\uC4F0\\uAE30\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uC904 \\uBC14\\uAFC8 \\uD589\\uC774 \\uC5F4 1\\uC5D0\\uC11C \\uC2DC\\uC791\\uB429\\uB2C8\\uB2E4.\",\"\\uC904 \\uBC14\\uAFC8 \\uD589\\uC758 \\uB4E4\\uC5EC\\uC4F0\\uAE30\\uAC00 \\uBD80\\uBAA8\\uC640 \\uB3D9\\uC77C\\uD569\\uB2C8\\uB2E4.\",\"\\uC904 \\uBC14\\uAFC8 \\uD589\\uC774 \\uBD80\\uBAA8 \\uCABD\\uC73C\\uB85C +1\\uB9CC\\uD07C \\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB429\\uB2C8\\uB2E4.\",\"\\uC904 \\uBC14\\uAFC8 \\uD589\\uC774 \\uBD80\\uBAA8 \\uCABD\\uC73C\\uB85C +2\\uB9CC\\uD07C \\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB429\\uB2C8\\uB2E4.\",\"\\uC904 \\uBC14\\uAFC8 \\uD589\\uC758 \\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uD30C\\uC77C\\uC744 \\uC5EC\\uB294 \\uB300\\uC2E0 `shift`\\uB97C \\uB204\\uB978 \\uCC44 \\uD30C\\uC77C\\uC744 \\uD14D\\uC2A4\\uD2B8 \\uD3B8\\uC9D1\\uAE30\\uB85C \\uB04C\\uC5B4\\uC11C \\uB193\\uC744 \\uC218 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uD30C\\uC77C\\uC744 \\uB04C\\uC5B4 \\uB193\\uC744 \\uB54C \\uC704\\uC82F\\uC744 \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uC774 \\uC704\\uC82F\\uC744 \\uC0AC\\uC6A9\\uD558\\uBA74 \\uD30C\\uC77C\\uC744 \\uB4DC\\uB86D\\uD558\\uB294 \\uBC29\\uBC95\\uC744 \\uC81C\\uC5B4\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uD30C\\uC77C\\uC774 \\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uB4DC\\uB86D\\uB41C \\uD6C4 \\uB4DC\\uB86D \\uC120\\uD0DD\\uAE30 \\uC704\\uC82F\\uC744 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uB4DC\\uB86D \\uC120\\uD0DD\\uAE30 \\uC704\\uC82F\\uC744 \\uD45C\\uC2DC\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4. \\uB300\\uC2E0 \\uAE30\\uBCF8 \\uB4DC\\uB86D \\uACF5\\uAE09\\uC790\\uAC00 \\uD56D\\uC0C1 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uCF58\\uD150\\uCE20\\uB97C \\uB2E4\\uB978 \\uBC29\\uBC95\\uC73C\\uB85C \\uBD99\\uC5EC\\uB123\\uC744 \\uC218 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uCF58\\uD150\\uCE20\\uB97C \\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uBD99\\uC5EC\\uB123\\uC744 \\uB54C \\uC704\\uC82F\\uC744 \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uC774 \\uC704\\uC82F\\uC744 \\uC0AC\\uC6A9\\uD558\\uC5EC \\uD30C\\uC77C\\uC744 \\uBD99\\uC5EC\\uB123\\uB294 \\uBC29\\uBC95\\uC744 \\uC81C\\uC5B4\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uCF58\\uD150\\uCE20\\uB97C \\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uBD99\\uC5EC\\uB123\\uC740 \\uD6C4 \\uBD99\\uC5EC\\uB123\\uAE30 \\uC120\\uD0DD\\uAE30 \\uC704\\uC82F\\uC744 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uBD99\\uC5EC\\uB123\\uAE30 \\uC120\\uD0DD\\uAE30 \\uC704\\uC82F\\uC744 \\uD45C\\uC2DC\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4. \\uB300\\uC2E0 \\uAE30\\uBCF8 \\uBD99\\uC5EC\\uB123\\uAE30 \\uB3D9\\uC791\\uC774 \\uD56D\\uC0C1 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uCEE4\\uBC0B \\uBB38\\uC790\\uC5D0 \\uB300\\uD55C \\uC81C\\uC548\\uC744 \\uD5C8\\uC6A9\\uD560\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uC608\\uB97C \\uB4E4\\uC5B4 JavaScript\\uC5D0\\uC11C\\uB294 \\uC138\\uBBF8\\uCF5C\\uB860(';')\\uC774 \\uC81C\\uC548\\uC744 \\uD5C8\\uC6A9\\uD558\\uACE0 \\uD574\\uB2F9 \\uBB38\\uC790\\uB97C \\uC785\\uB825\\uD558\\uB294 \\uCEE4\\uBC0B \\uBB38\\uC790\\uC77C \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uD14D\\uC2A4\\uD2B8\\uB97C \\uBCC0\\uACBD\\uD560 \\uB54C `Enter` \\uD0A4\\uB97C \\uC0AC\\uC6A9\\uD55C \\uC81C\\uC548\\uB9CC \\uD5C8\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"'Tab' \\uD0A4 \\uC678\\uC5D0 'Enter' \\uD0A4\\uC5D0 \\uB300\\uD55C \\uC81C\\uC548\\uB3C4 \\uD5C8\\uC6A9\\uD560\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uC0C8 \\uC904\\uC744 \\uC0BD\\uC785\\uD558\\uB294 \\uB3D9\\uC791\\uACFC \\uC81C\\uC548\\uC744 \\uD5C8\\uC6A9\\uD558\\uB294 \\uB3D9\\uC791 \\uAC04\\uC758 \\uBAA8\\uD638\\uD568\\uC744 \\uC5C6\\uC568 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uD654\\uBA74 \\uC77D\\uAE30 \\uD504\\uB85C\\uADF8\\uB7A8\\uC5D0\\uC11C \\uD55C \\uBC88\\uC5D0 \\uC77D\\uC744 \\uC218 \\uC788\\uB294 \\uD3B8\\uC9D1\\uAE30 \\uC904 \\uC218\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uD654\\uBA74 \\uC77D\\uAE30 \\uD504\\uB85C\\uADF8\\uB7A8\\uC744 \\uAC80\\uC0C9\\uD558\\uBA74 \\uAE30\\uBCF8\\uAC12\\uC774 500\\uC73C\\uB85C \\uC790\\uB3D9 \\uC124\\uC815\\uB429\\uB2C8\\uB2E4. \\uACBD\\uACE0: \\uAE30\\uBCF8\\uAC12\\uBCF4\\uB2E4 \\uD070 \\uC218\\uC758 \\uACBD\\uC6B0 \\uC131\\uB2A5\\uC5D0 \\uC601\\uD5A5\\uC744 \\uBBF8\\uCE69\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uCF58\\uD150\\uCE20\",\"\\uD654\\uBA74 \\uC77D\\uAE30 \\uD504\\uB85C\\uADF8\\uB7A8\\uC5D0\\uC11C \\uC778\\uB77C\\uC778 \\uC81C\\uC548\\uC744 \\uBC1C\\uD45C\\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC5B8\\uC5B4 \\uAD6C\\uC131\\uC744 \\uC0AC\\uC6A9\\uD558\\uC5EC \\uB300\\uAD04\\uD638\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uB2EB\\uC744 \\uACBD\\uC6B0\\uB97C \\uACB0\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uCEE4\\uC11C\\uAC00 \\uACF5\\uBC31\\uC758 \\uC67C\\uCABD\\uC5D0 \\uC788\\uB294 \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uB300\\uAD04\\uD638\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uB2EB\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uC790\\uAC00 \\uC5EC\\uB294 \\uAD04\\uD638\\uB97C \\uCD94\\uAC00\\uD55C \\uD6C4 \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uAD04\\uD638\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uB2EB\\uC744\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC778\\uC811\\uD55C \\uB2EB\\uB294 \\uB530\\uC634\\uD45C \\uB610\\uB294 \\uB300\\uAD04\\uD638\\uAC00 \\uC790\\uB3D9\\uC73C\\uB85C \\uC0BD\\uC785\\uB41C \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uC81C\\uAC70\\uD569\\uB2C8\\uB2E4.\",\"\\uC0AD\\uC81C\\uD560 \\uB54C \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC778\\uC811\\uD55C \\uB2EB\\uB294 \\uB530\\uC634\\uD45C \\uB610\\uB294 \\uB300\\uAD04\\uD638\\uB97C \\uC81C\\uAC70\\uD574\\uC57C \\uD560\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uB2EB\\uAE30 \\uB530\\uC634\\uD45C \\uB610\\uB294 \\uB300\\uAD04\\uD638\\uAC00 \\uC790\\uB3D9\\uC73C\\uB85C \\uC0BD\\uC785\\uB41C \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uD574\\uB2F9 \\uD56D\\uBAA9 \\uC704\\uC5D0 \\uC785\\uB825\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uC790\\uAC00 \\uB2EB\\uB294 \\uB530\\uC634\\uD45C \\uB610\\uB294 \\uB300\\uAD04\\uD638 \\uC704\\uC5D0 \\uC785\\uB825\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC5B8\\uC5B4 \\uAD6C\\uC131\\uC744 \\uC0AC\\uC6A9\\uD558\\uC5EC \\uB530\\uC634\\uD45C\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uB2EB\\uC744 \\uACBD\\uC6B0\\uB97C \\uACB0\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uCEE4\\uC11C\\uAC00 \\uACF5\\uBC31\\uC758 \\uC67C\\uCABD\\uC5D0 \\uC788\\uB294 \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uB530\\uC634\\uD45C\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uB2EB\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uC790\\uAC00 \\uC5EC\\uB294 \\uB530\\uC634\\uD45C\\uB97C \\uCD94\\uAC00\\uD55C \\uD6C4 \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uB530\\uC634\\uD45C\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uB2EB\\uC744\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uB294 \\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uC0BD\\uC785\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uB294 \\uD604\\uC7AC \\uC904\\uC758 \\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB97C \\uC720\\uC9C0\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uB294 \\uD604\\uC7AC \\uC904\\uC758 \\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB97C \\uC720\\uC9C0\\uD558\\uACE0 \\uC5B8\\uC5B4 \\uC815\\uC758 \\uB300\\uAD04\\uD638\\uB97C \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uB294 \\uD604\\uC7AC \\uC904\\uC758 \\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB97C \\uC720\\uC9C0\\uD558\\uACE0 \\uC5B8\\uC5B4 \\uC815\\uC758 \\uB300\\uAD04\\uD638\\uB97C \\uC874\\uC911\\uD558\\uBA70 \\uC5B8\\uC5B4\\uBCC4\\uB85C \\uC815\\uC758\\uB41C \\uD2B9\\uBCC4 EnterRules\\uB97C \\uD638\\uCD9C\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uB294 \\uD604\\uC7AC \\uC904\\uC758 \\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB97C \\uC720\\uC9C0\\uD558\\uACE0, \\uC5B8\\uC5B4 \\uC815\\uC758 \\uB300\\uAD04\\uD638\\uB97C \\uC874\\uC911\\uD558\\uACE0, \\uC5B8\\uC5B4\\uC5D0 \\uC758\\uD574 \\uC815\\uC758\\uB41C \\uD2B9\\uBCC4 EnterRules\\uB97C \\uD638\\uCD9C\\uD558\\uACE0, \\uC5B8\\uC5B4\\uC5D0 \\uC758\\uD574 \\uC815\\uC758\\uB41C \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uADDC\\uCE59\\uC744 \\uC874\\uC911\\uD569\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uC790\\uAC00 \\uC904\\uC744 \\uC785\\uB825, \\uBD99\\uC5EC\\uB123\\uAE30, \\uC774\\uB3D9 \\uB610\\uB294 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uD560 \\uB54C \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uC870\\uC815\\uD558\\uB3C4\\uB85D \\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC5B8\\uC5B4 \\uAD6C\\uC131\\uC744 \\uC0AC\\uC6A9\\uD558\\uC5EC \\uC120\\uD0DD \\uD56D\\uBAA9\\uC744 \\uC790\\uB3D9\\uC73C\\uB85C \\uB458\\uB7EC\\uC300 \\uACBD\\uC6B0\\uB97C \\uACB0\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638\\uAC00 \\uC544\\uB2CC \\uB530\\uC634\\uD45C\\uB85C \\uB458\\uB7EC\\uC309\\uB2C8\\uB2E4.\",\"\\uB530\\uC634\\uD45C\\uAC00 \\uC544\\uB2CC \\uB300\\uAD04\\uD638\\uB85C \\uB458\\uB7EC\\uC309\\uB2C8\\uB2E4.\",\"\\uB530\\uC634\\uD45C \\uB610\\uB294 \\uB300\\uAD04\\uD638 \\uC785\\uB825 \\uC2DC \\uD3B8\\uC9D1\\uAE30\\uAC00 \\uC790\\uB3D9\\uC73C\\uB85C \\uC120\\uD0DD \\uC601\\uC5ED\\uC744 \\uB458\\uB7EC\\uC300\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uB4E4\\uC5EC\\uC4F0\\uAE30\\uC5D0 \\uACF5\\uBC31\\uC744 \\uC0AC\\uC6A9\\uD560 \\uB54C \\uD0ED \\uBB38\\uC790\\uC758 \\uC120\\uD0DD \\uB3D9\\uC791\\uC744 \\uC5D0\\uBBAC\\uB808\\uC774\\uD2B8\\uD569\\uB2C8\\uB2E4. \\uC120\\uD0DD \\uC601\\uC5ED\\uC774 \\uD0ED \\uC815\\uC9C0\\uC5D0 \\uACE0\\uC815\\uB429\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C CodeLens\\uB97C \\uD45C\\uC2DC\\uD560 \\uAC83\\uC778\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"CodeLens\\uC758 \\uAE00\\uAF34 \\uD328\\uBC00\\uB9AC\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"CodeLens\\uC758 \\uAE00\\uAF34 \\uD06C\\uAE30(\\uD53D\\uC140)\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. 0\\uC73C\\uB85C \\uC124\\uC815\\uD558\\uBA74 `#editor.fontSize#`\\uC758 90%\\uAC00 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC778\\uB77C\\uC778 \\uC0C9 \\uB370\\uCF54\\uB808\\uC774\\uD130 \\uBC0F \\uC0C9 \\uC120\\uD0DD\\uC744 \\uB80C\\uB354\\uB9C1\\uD560\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC0C9 \\uB370\\uCF54\\uB808\\uC774\\uD130\\uB97C \\uD074\\uB9AD\\uD558\\uACE0 \\uB9C8\\uC6B0\\uC2A4\\uB85C \\uAC00\\uB9AC\\uD0AC \\uB54C \\uC0C9 \\uC120\\uD0DD\\uAE30\\uB97C \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uC0C9 \\uB370\\uCF54\\uB808\\uC774\\uD130\\uB97C \\uB9C8\\uC6B0\\uC2A4\\uB85C \\uAC00\\uB9AC\\uD0A4\\uBA74 \\uC0C9 \\uC120\\uD0DD\\uAE30\\uAC00 \\uD45C\\uC2DC\\uB418\\uB3C4\\uB85D \\uC124\\uC815\",\"\\uC0C9 \\uB370\\uCF54\\uB808\\uC774\\uD130\\uB97C \\uD074\\uB9AD\\uD560 \\uB54C \\uC0C9 \\uC120\\uD0DD\\uAE30\\uB97C \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uC0C9 \\uB370\\uCF54\\uB808\\uC774\\uD130\\uC5D0\\uC11C \\uC0C9 \\uC120\\uD0DD\\uAE30\\uB97C \\uD45C\\uC2DC\\uD558\\uB3C4\\uB85D \\uC870\\uAC74\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uD55C \\uBC88\\uC5D0 \\uB80C\\uB354\\uB9C1\\uD560 \\uC218 \\uC788\\uB294 \\uCD5C\\uB300 \\uC0C9 \\uB370\\uCF54\\uB808\\uC774\\uD130 \\uC218\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4\\uC640 \\uD0A4\\uB85C \\uC120\\uD0DD\\uD55C \\uC601\\uC5ED\\uC5D0\\uC11C \\uC5F4\\uC744 \\uC120\\uD0DD\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uAD6C\\uBB38 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB97C \\uD074\\uB9BD\\uBCF4\\uB4DC\\uB85C \\uBCF5\\uC0AC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uCEE4\\uC11C \\uC560\\uB2C8\\uBA54\\uC774\\uC158 \\uC2A4\\uD0C0\\uC77C\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBD80\\uB4DC\\uB7EC\\uC6B4 \\uCE90\\uB7FF \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC744 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBD80\\uB4DC\\uB7EC\\uC6B4 \\uCE90\\uB7FF \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC740 \\uC0AC\\uC6A9\\uC790\\uAC00 \\uBA85\\uC2DC\\uC801 \\uC81C\\uC2A4\\uCC98\\uB97C \\uC0AC\\uC6A9\\uD558\\uC5EC \\uCEE4\\uC11C\\uB97C \\uC774\\uB3D9\\uD560 \\uB54C\\uB9CC \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uBD80\\uB4DC\\uB7EC\\uC6B4 \\uCE90\\uB7FF \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC740 \\uD56D\\uC0C1 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uB9E4\\uB044\\uB7EC\\uC6B4 \\uCE90\\uB7FF \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC758 \\uC0AC\\uC6A9 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uCEE4\\uC11C \\uC2A4\\uD0C0\\uC77C\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uCEE4\\uC11C \\uC8FC\\uBCC0\\uC5D0 \\uD45C\\uC2DC\\uB418\\uB294 \\uC120\\uD589 \\uC904(\\uCD5C\\uC18C 0)\\uACFC \\uD6C4\\uD589 \\uC904(\\uCD5C\\uC18C 1)\\uC758 \\uCD5C\\uC18C \\uC218\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uC77C\\uBD80 \\uB2E4\\uB978 \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C\\uB294 'scrollOff' \\uB610\\uB294 'scrollOffset'\\uC73C\\uB85C \\uC54C\\uB824\\uC838 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"'cursorSurroundingLines'\\uB294 \\uD0A4\\uBCF4\\uB4DC \\uB098 API\\uB97C \\uD1B5\\uD574 \\uD2B8\\uB9AC\\uAC70\\uB420 \\uB54C\\uB9CC \\uC801\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"`cursorSurroundingLines`\\uB294 \\uD56D\\uC0C1 \\uC801\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"'cursorSurroundingLines'\\uB97C \\uC801\\uC6A9\\uD574\\uC57C \\uD558\\uB294 \\uACBD\\uC6B0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"`#editor.cursorStyle#` \\uC124\\uC815\\uC774 'line'\\uC73C\\uB85C \\uC124\\uC815\\uB418\\uC5B4 \\uC788\\uC744 \\uB54C \\uCEE4\\uC11C\\uC758 \\uB113\\uC774\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uB04C\\uC5B4\\uC11C \\uB193\\uAE30\\uB85C \\uC120\\uD0DD \\uC601\\uC5ED\\uC744 \\uC774\\uB3D9\\uD560 \\uC218 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"svgs\\uC640 \\uD568\\uAED8 \\uC0C8 \\uB80C\\uB354\\uB9C1 \\uBA54\\uC11C\\uB4DC\\uB97C \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uAE00\\uAF34 \\uBB38\\uC790\\uC640 \\uD568\\uAED8 \\uC0C8 \\uB80C\\uB354\\uB9C1 \\uBC29\\uBC95\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uC548\\uC815\\uC801\\uC778 \\uB80C\\uB354\\uB9C1 \\uBC29\\uBC95\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uACF5\\uBC31\\uC774 \\uC0C8\\uB85C\\uC6B4 \\uC2E4\\uD5D8\\uC801 \\uBA54\\uC11C\\uB4DC\\uB85C \\uB80C\\uB354\\uB9C1\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"'Alt' \\uD0A4\\uB97C \\uB204\\uB97C \\uB54C \\uC2A4\\uD06C\\uB864 \\uC18D\\uB3C4 \\uC2B9\\uC218\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uCF54\\uB4DC \\uC811\\uAE30\\uAC00 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uACBD\\uC6B0 \\uC5B8\\uC5B4\\uBCC4 \\uC811\\uAE30 \\uC804\\uB7B5\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4. \\uADF8\\uB807\\uC9C0 \\uC54A\\uC740 \\uACBD\\uC6B0 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uAE30\\uBC18 \\uC804\\uB7B5\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uAE30\\uBC18 \\uC811\\uAE30 \\uC804\\uB7B5\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uC811\\uAE30 \\uBC94\\uC704\\uB97C \\uACC4\\uC0B0\\uD558\\uAE30 \\uC704\\uD55C \\uC804\\uB7B5\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC811\\uD78C \\uBC94\\uC704\\uB97C \\uAC15\\uC870 \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uAC00\\uC838\\uC624\\uAE30 \\uBC94\\uC704\\uB97C \\uC790\\uB3D9\\uC73C\\uB85C \\uCD95\\uC18C\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3F4\\uB354\\uBE14 \\uC601\\uC5ED\\uC758 \\uCD5C\\uB300 \\uC218\\uC785\\uB2C8\\uB2E4. \\uD604\\uC7AC \\uC6D0\\uBCF8\\uC5D0 \\uD3F4\\uB354\\uBE14 \\uC601\\uC5ED\\uC774 \\uB9CE\\uC744 \\uB54C \\uC774 \\uAC12\\uC744 \\uB298\\uB9AC\\uBA74 \\uD3B8\\uC9D1\\uAE30\\uC758 \\uBC18\\uC751\\uC774 \\uB5A8\\uC5B4\\uC9C8 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC811\\uD78C \\uC904\\uC774 \\uC904\\uC744 \\uD3BC\\uCE5C \\uD6C4 \\uBE48 \\uCF58\\uD150\\uCE20\\uB97C \\uD074\\uB9AD\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uAE00\\uAF34 \\uD328\\uBC00\\uB9AC\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBD99\\uC5EC\\uB123\\uC740 \\uCF58\\uD150\\uCE20\\uC758 \\uC11C\\uC2DD\\uC744 \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC790\\uB3D9\\uC73C\\uB85C \\uC9C0\\uC815\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uD3EC\\uB9F7\\uD130\\uB97C \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC788\\uC5B4\\uC57C \\uD558\\uBA70 \\uD3EC\\uB9F7\\uD130\\uAC00 \\uBB38\\uC11C\\uC5D0\\uC11C \\uBC94\\uC704\\uC758 \\uC11C\\uC2DD\\uC744 \\uC9C0\\uC815\\uD560 \\uC218 \\uC788\\uC5B4\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC785\\uB825 \\uD6C4 \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC790\\uB3D9\\uC73C\\uB85C \\uC904\\uC758 \\uC11C\\uC2DD\\uC744 \\uC9C0\\uC815\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC138\\uB85C \\uBB38\\uC790 \\uBAA8\\uC591 \\uC5EC\\uBC31\\uC744 \\uB80C\\uB354\\uB9C1\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uBB38\\uC790 \\uBAA8\\uC591 \\uC5EC\\uBC31\\uC740 \\uC8FC\\uB85C \\uB514\\uBC84\\uAE45\\uC5D0 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uCEE4\\uC11C\\uAC00 \\uAC1C\\uC694 \\uB208\\uAE08\\uC790\\uC5D0\\uC11C \\uAC00\\uB824\\uC838\\uC57C \\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBB38\\uC790 \\uAC04\\uACA9(\\uD53D\\uC140)\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC5F0\\uACB0\\uB41C \\uD3B8\\uC9D1\\uC774 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uC5C8\\uB294\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uC5B8\\uC5B4\\uC5D0 \\uB530\\uB77C \\uAD00\\uB828 \\uAE30\\uD638(\\uC608: HTML \\uD0DC\\uADF8)\\uAC00 \\uD3B8\\uC9D1 \\uC911\\uC5D0 \\uC5C5\\uB370\\uC774\\uD2B8\\uB429\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uB9C1\\uD06C\\uB97C \\uAC10\\uC9C0\\uD558\\uACE0 \\uD074\\uB9AD\\uD560 \\uC218 \\uC788\\uAC8C \\uB9CC\\uB4E4\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC77C\\uCE58\\uD558\\uB294 \\uB300\\uAD04\\uD638\\uB97C \\uAC15\\uC870 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4 \\uD720 \\uC2A4\\uD06C\\uB864 \\uC774\\uBCA4\\uD2B8\\uC758 `deltaX` \\uBC0F `deltaY`\\uC5D0\\uC11C \\uC0AC\\uC6A9\\uD560 \\uC2B9\\uC218\\uC785\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4 \\uD720\\uC744 \\uC0AC\\uC6A9\\uD560 \\uB54C 'Ctrl' \\uD0A4\\uB97C \\uB204\\uB974\\uACE0 \\uC788\\uC73C\\uBA74 \\uD3B8\\uC9D1\\uAE30\\uC758 \\uAE00\\uAF34\\uC744 \\uD655\\uB300/\\uCD95\\uC18C\\uD569\\uB2C8\\uB2E4.\",\"\\uC5EC\\uB7EC \\uCEE4\\uC11C\\uAC00 \\uACB9\\uCE58\\uB294 \\uACBD\\uC6B0 \\uCEE4\\uC11C\\uB97C \\uBCD1\\uD569\\uD569\\uB2C8\\uB2E4.\",\"Windows\\uC640 Linux\\uC758 'Control'\\uC744 macOS\\uC758 'Command'\\uB85C \\uB9E4\\uD551\\uD569\\uB2C8\\uB2E4.\",\"Windows\\uC640 Linux\\uC758 'Alt'\\uB97C macOS\\uC758 'Option'\\uC73C\\uB85C \\uB9E4\\uD551\\uD569\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4\\uB85C \\uC5EC\\uB7EC \\uCEE4\\uC11C\\uB97C \\uCD94\\uAC00\\uD560 \\uB54C \\uC0AC\\uC6A9\\uD560 \\uC218\\uC815\\uC790\\uC785\\uB2C8\\uB2E4. [\\uC815\\uC758\\uB85C \\uC774\\uB3D9] \\uBC0F [\\uB9C1\\uD06C \\uC5F4\\uAE30] \\uB9C8\\uC6B0\\uC2A4 \\uC81C\\uC2A4\\uCC98\\uAC00 [\\uBA40\\uD2F0\\uCEE4\\uC11C \\uC218\\uC815\\uC790\\uC640](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier) \\uCDA9\\uB3CC\\uD558\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC870\\uC815\\uB429\\uB2C8\\uB2E4.\",\"\\uAC01 \\uCEE4\\uC11C\\uB294 \\uD14D\\uC2A4\\uD2B8 \\uD55C \\uC904\\uC744 \\uBD99\\uC5EC\\uB123\\uC2B5\\uB2C8\\uB2E4.\",\"\\uAC01 \\uCEE4\\uC11C\\uB294 \\uC804\\uCCB4 \\uD14D\\uC2A4\\uD2B8\\uB97C \\uBD99\\uC5EC\\uB123\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBD99\\uC5EC\\uB123\\uC740 \\uD14D\\uC2A4\\uD2B8\\uC758 \\uC904 \\uC218\\uAC00 \\uCEE4\\uC11C \\uC218\\uC640 \\uC77C\\uCE58\\uD558\\uB294 \\uACBD\\uC6B0 \\uBD99\\uC5EC\\uB123\\uAE30\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD55C \\uBC88\\uC5D0 \\uD65C\\uC131 \\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC788\\uC744 \\uC218 \\uC788\\uB294 \\uCD5C\\uB300 \\uCEE4\\uC11C \\uC218\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC758\\uBBF8 \\uCCB4\\uACC4 \\uAE30\\uD638 \\uD56D\\uBAA9\\uC744 \\uAC15\\uC870 \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uAC1C\\uC694 \\uB208\\uAE08\\uC790 \\uC8FC\\uC704\\uC5D0 \\uD14C\\uB450\\uB9AC\\uB97C \\uADF8\\uB9B4\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"Peek\\uB97C \\uC5EC\\uB294 \\uB3D9\\uC548 \\uD2B8\\uB9AC\\uC5D0 \\uD3EC\\uCEE4\\uC2A4\",\"\\uBBF8\\uB9AC \\uBCF4\\uAE30\\uB97C \\uC5F4 \\uB54C \\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uD3EC\\uCEE4\\uC2A4\",\"\\uBBF8\\uB9AC \\uBCF4\\uAE30 \\uC704\\uC82F\\uC5D0\\uC11C \\uC778\\uB77C\\uC778 \\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uB458\\uC9C0 \\uB610\\uB294 \\uD2B8\\uB9AC\\uC5D0 \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uB458\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC774\\uB3D9 \\uC815\\uC758 \\uB9C8\\uC6B0\\uC2A4 \\uC81C\\uC2A4\\uCC98\\uAC00 \\uD56D\\uC0C1 \\uBBF8\\uB9AC \\uBCF4\\uAE30 \\uC704\\uC82F\\uC744 \\uC5F4\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBE60\\uB978 \\uC81C\\uC548\\uC744 \\uD45C\\uC2DC\\uD558\\uAE30 \\uC804\\uAE4C\\uC9C0\\uC758 \\uC9C0\\uC5F0 \\uC2DC\\uAC04(\\uBC00\\uB9AC\\uCD08)\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uAC00 \\uC720\\uD615\\uC5D0 \\uB530\\uB77C \\uC790\\uB3D9\\uC73C\\uB85C \\uC774\\uB984\\uC744 \\uBC14\\uAFC0\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4. \\uB300\\uC2E0 `editor.linkedEditing`\\uC744 \\uC0AC\\uC6A9\\uD558\\uC138\\uC694.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC81C\\uC5B4 \\uBB38\\uC790\\uB97C \\uB80C\\uB354\\uB9C1\\uD560\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD30C\\uC77C\\uC774 \\uC904 \\uBC14\\uAFC8\\uC73C\\uB85C \\uB05D\\uB098\\uBA74 \\uB9C8\\uC9C0\\uB9C9 \\uC904 \\uBC88\\uD638\\uB97C \\uB80C\\uB354\\uB9C1\\uD569\\uB2C8\\uB2E4.\",\"\\uC81C\\uBCF8\\uC6A9 \\uC5EC\\uBC31\\uACFC \\uD604\\uC7AC \\uC904\\uC744 \\uBAA8\\uB450 \\uAC15\\uC870 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uAC00 \\uD604\\uC7AC \\uC904 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB97C \\uB80C\\uB354\\uB9C1\\uD558\\uB294 \\uBC29\\uC2DD\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uD604\\uC7AC \\uC904 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB97C \\uB80C\\uB354\\uB9C1\\uD574\\uC57C \\uD558\\uB294\\uC9C0 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uB2E8\\uC5B4 \\uC0AC\\uC774\\uC758 \\uACF5\\uBC31 \\uD558\\uB098\\uB97C \\uC81C\\uC678\\uD55C \\uACF5\\uBC31 \\uBB38\\uC790\\uB97C \\uB80C\\uB354\\uB9C1\\uD569\\uB2C8\\uB2E4.\",\"\\uC120\\uD0DD\\uD55C \\uD14D\\uC2A4\\uD2B8\\uC5D0\\uC11C\\uB9CC \\uACF5\\uBC31 \\uBB38\\uC790\\uB97C \\uB80C\\uB354\\uB9C1\\uD569\\uB2C8\\uB2E4.\",\"\\uD6C4\\uD589 \\uACF5\\uBC31 \\uBB38\\uC790\\uB9CC \\uB80C\\uB354\\uB9C1\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uACF5\\uBC31 \\uBB38\\uC790\\uB97C \\uB80C\\uB354\\uB9C1\\uD560 \\uBC29\\uBC95\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC120\\uD0DD \\uD56D\\uBAA9\\uC758 \\uBAA8\\uC11C\\uB9AC\\uB97C \\uB465\\uAE00\\uAC8C \\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uAC00\\uB85C\\uB85C \\uC2A4\\uD06C\\uB864\\uB418\\uB294 \\uBC94\\uC704\\uB97C \\uBC97\\uC5B4\\uB098\\uB294 \\uCD94\\uAC00 \\uBB38\\uC790\\uC758 \\uC218\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uB9C8\\uC9C0\\uB9C9 \\uC904 \\uC774\\uD6C4\\uB85C \\uC2A4\\uD06C\\uB864\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC138\\uB85C\\uC640 \\uAC00\\uB85C\\uB85C \\uB3D9\\uC2DC\\uC5D0 \\uC2A4\\uD06C\\uB864\\uD560 \\uB54C\\uC5D0\\uB9CC \\uC8FC\\uCD95\\uC744 \\uB530\\uB77C\\uC11C \\uC2A4\\uD06C\\uB864\\uD569\\uB2C8\\uB2E4. \\uD2B8\\uB799\\uD328\\uB4DC\\uC5D0\\uC11C \\uC138\\uB85C\\uB85C \\uC2A4\\uD06C\\uB864\\uD560 \\uB54C \\uAC00\\uB85C \\uB4DC\\uB9AC\\uD504\\uD2B8\\uB97C \\uBC29\\uC9C0\\uD569\\uB2C8\\uB2E4.\",\"Linux \\uC8FC \\uD074\\uB9BD\\uBCF4\\uB4DC\\uC758 \\uC9C0\\uC6D0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uAC00 \\uC120\\uD0DD \\uD56D\\uBAA9\\uACFC \\uC720\\uC0AC\\uD55C \\uC77C\\uCE58 \\uD56D\\uBAA9\\uC744 \\uAC15\\uC870 \\uD45C\\uC2DC\\uD574\\uC57C\\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC811\\uAE30 \\uCEE8\\uD2B8\\uB864\\uC744 \\uD56D\\uC0C1 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uC811\\uAE30 \\uCEE8\\uD2B8\\uB864\\uC744 \\uD45C\\uC2DC\\uD558\\uC9C0 \\uC54A\\uACE0 \\uC5EC\\uBC31 \\uD06C\\uAE30\\uB97C \\uC904\\uC774\\uC138\\uC694.\",\"\\uB9C8\\uC6B0\\uC2A4\\uAC00 \\uC5EC\\uBC31 \\uC704\\uC5D0 \\uC788\\uC744 \\uB54C\\uC5D0\\uB9CC \\uC811\\uAE30 \\uCEE8\\uD2B8\\uB864\\uC744 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uC5EC\\uBC31\\uC758 \\uC811\\uAE30 \\uCEE8\\uD2B8\\uB864\\uC774 \\uD45C\\uC2DC\\uB418\\uB294 \\uC2DC\\uAE30\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uB294 \\uCF54\\uB4DC\\uC758 \\uD398\\uC774\\uB4DC \\uC544\\uC6C3\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uCDE8\\uC18C\\uC120 \\uC0AC\\uC6A9\\uB418\\uC9C0 \\uC54A\\uB294 \\uBCC0\\uC218\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uB2E4\\uB978 \\uC81C\\uC548 \\uC704\\uC5D0 \\uC870\\uAC01 \\uC81C\\uC548\\uC744 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uB2E4\\uB978 \\uC81C\\uC548 \\uC544\\uB798\\uC5D0 \\uC870\\uAC01 \\uC81C\\uC548\\uC744 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uB2E4\\uB978 \\uC81C\\uC548\\uACFC \\uD568\\uAED8 \\uC870\\uAC01 \\uC81C\\uC548\\uC744 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uCF54\\uB4DC \\uC870\\uAC01 \\uC81C\\uC548\\uC744 \\uD45C\\uC2DC\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uCF54\\uB4DC \\uC870\\uAC01\\uC774 \\uB2E4\\uB978 \\uCD94\\uCC9C\\uACFC \\uD568\\uAED8 \\uD45C\\uC2DC\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80 \\uBC0F \\uC815\\uB82C \\uBC29\\uBC95\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC560\\uB2C8\\uBA54\\uC774\\uC158\\uC744 \\uC0AC\\uC6A9\\uD558\\uC5EC \\uC2A4\\uD06C\\uB864\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\",\"\\uC81C\\uC548 \\uC704\\uC82F\\uC758 \\uAE00\\uAF34 \\uD06C\\uAE30\\uC785\\uB2C8\\uB2E4. {0}(\\uC73C)\\uB85C \\uC124\\uC815\\uD558\\uBA74 {1} \\uAC12\\uC774 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uC81C\\uC548 \\uC704\\uC82F\\uC758 \\uC904 \\uB192\\uC774\\uC785\\uB2C8\\uB2E4. {0}(\\uC73C)\\uB85C \\uC124\\uC815\\uD558\\uBA74 {1} \\uAC12\\uC774 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4. \\uCD5C\\uC18C\\uAC12\\uC740 8\\uC785\\uB2C8\\uB2E4.\",\"\\uD2B8\\uB9AC\\uAC70 \\uBB38\\uC790\\uB97C \\uC785\\uB825\\uD560 \\uB54C \\uC81C\\uC548\\uC744 \\uC790\\uB3D9\\uC73C\\uB85C \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD56D\\uC0C1 \\uCCAB \\uBC88\\uC9F8 \\uC81C\\uC548\\uC744 \\uC120\\uD0DD\\uD569\\uB2C8\\uB2E4.\",\"`log`\\uAC00 \\uCD5C\\uADFC\\uC5D0 \\uC644\\uB8CC\\uB418\\uC5C8\\uC73C\\uBBC0\\uB85C \\uCD94\\uAC00 \\uC785\\uB825\\uC5D0\\uC11C \\uC81C\\uC548\\uC744 \\uC120\\uD0DD\\uD558\\uC9C0 \\uC54A\\uC740 \\uACBD\\uC6B0 \\uCD5C\\uADFC \\uC81C\\uC548\\uC744 \\uC120\\uD0DD\\uD558\\uC138\\uC694(\\uC608: `console.| -> console.log`).\",\"\\uD574\\uB2F9 \\uC81C\\uC548\\uC744 \\uC644\\uB8CC\\uD55C \\uC774\\uC804 \\uC811\\uB450\\uC0AC\\uC5D0 \\uB530\\uB77C \\uC81C\\uC548\\uC744 \\uC120\\uD0DD\\uD569\\uB2C8\\uB2E4(\\uC608: `co -> console` \\uBC0F `con -> const`).\",\"\\uC81C\\uC548 \\uBAA9\\uB85D\\uC744 \\uD45C\\uC2DC\\uD560 \\uB54C \\uC81C\\uD55C\\uC774 \\uBBF8\\uB9AC \\uC120\\uD0DD\\uB418\\uB294 \\uBC29\\uC2DD\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD0ED \\uC644\\uB8CC\\uB294 \\uD0ED\\uC744 \\uB204\\uB97C \\uB54C \\uAC00\\uC7A5 \\uC77C\\uCE58\\uD558\\uB294 \\uC81C\\uC548\\uC744 \\uC0BD\\uC785\\uD569\\uB2C8\\uB2E4.\",\"\\uD0ED \\uC644\\uC131\\uC744 \\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uC811\\uB450\\uC0AC\\uAC00 \\uC77C\\uCE58\\uD558\\uB294 \\uACBD\\uC6B0 \\uCF54\\uB4DC \\uC870\\uAC01\\uC744 \\uD0ED \\uC644\\uB8CC\\uD569\\uB2C8\\uB2E4. 'quickSuggestions'\\uB97C \\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uC744 \\uB54C \\uAC00\\uC7A5 \\uC798 \\uC791\\uB3D9\\uD569\\uB2C8\\uB2E4.\",\"\\uD0ED \\uC644\\uC131\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD569\\uB2C8\\uB2E4.\",\"\\uBE44\\uC815\\uC0C1\\uC801\\uC778 \\uC904 \\uC885\\uACB0\\uC790\\uAC00 \\uC790\\uB3D9\\uC73C\\uB85C \\uC81C\\uAC70\\uB429\\uB2C8\\uB2E4.\",\"\\uBE44\\uC815\\uC0C1\\uC801\\uC778 \\uC904 \\uC885\\uACB0\\uC790\\uAC00 \\uBB34\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC81C\\uAC70\\uD560 \\uBE44\\uC815\\uC0C1\\uC801\\uC778 \\uC904 \\uC885\\uACB0\\uC790 \\uD504\\uB86C\\uD504\\uD2B8\\uC785\\uB2C8\\uB2E4.\",\"\\uBB38\\uC81C\\uB97C \\uC77C\\uC73C\\uD0AC \\uC218 \\uC788\\uB294 \\uBE44\\uC815\\uC0C1\\uC801\\uC778 \\uC904 \\uC885\\uACB0\\uC790\\uB97C \\uC81C\\uAC70\\uD569\\uB2C8\\uB2E4.\",\"\\uD0ED \\uC815\\uC9C0 \\uB4A4\\uC5D0 \\uACF5\\uBC31\\uC744 \\uC0BD\\uC785 \\uBC0F \\uC0AD\\uC81C\\uD569\\uB2C8\\uB2E4.\",\"\\uAE30\\uBCF8 \\uC904 \\uBC14\\uAFC8 \\uADDC\\uCE59\\uC744 \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uB2E8\\uC5B4 \\uBD84\\uB9AC\\uB294 \\uC911\\uAD6D\\uC5B4/\\uC77C\\uBCF8\\uC5B4/\\uD55C\\uAD6D\\uC5B4(CJK) \\uD14D\\uC2A4\\uD2B8\\uC5D0 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. CJK\\uAC00 \\uC544\\uB2CC \\uD14D\\uC2A4\\uD2B8 \\uB3D9\\uC791\\uC740 \\uC77C\\uBC18 \\uD14D\\uC2A4\\uD2B8 \\uB3D9\\uC791\\uACFC \\uAC19\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC911\\uAD6D\\uC5B4/\\uC77C\\uBCF8\\uC5B4/\\uD55C\\uAD6D\\uC5B4(CJK) \\uD14D\\uC2A4\\uD2B8\\uC5D0 \\uC0AC\\uC6A9\\uB418\\uB294 \\uB2E8\\uC5B4 \\uBD84\\uB9AC \\uADDC\\uCE59\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uB2E8\\uC5B4 \\uAD00\\uB828 \\uD0D0\\uC0C9 \\uB610\\uB294 \\uC791\\uC5C5\\uC744 \\uC218\\uD589\\uD560 \\uB54C \\uB2E8\\uC5B4 \\uAD6C\\uBD84 \\uAE30\\uD638\\uB85C \\uC0AC\\uC6A9\\uD560 \\uBB38\\uC790\\uC785\\uB2C8\\uB2E4.\",\"\\uC904\\uC774 \\uBC14\\uB00C\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBDF0\\uD3EC\\uD2B8 \\uB108\\uBE44\\uC5D0\\uC11C \\uC904\\uC774 \\uBC14\\uB01D\\uB2C8\\uB2E4.\",\"`#editor.wordWrapColumn#`\\uC5D0\\uC11C \\uC904\\uC774 \\uBC14\\uB01D\\uB2C8\\uB2E4.\",\"\\uBDF0\\uD3EC\\uD2B8\\uC758 \\uCD5C\\uC18C\\uAC12 \\uBC0F `#editor.wordWrapColumn#`\\uC5D0\\uC11C \\uC904\\uC774 \\uBC14\\uB01D\\uB2C8\\uB2E4.\",\"\\uC904 \\uBC14\\uAFC8 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"`#editor.wordWrap#`\\uC774 `wordWrapColumn` \\uB610\\uB294 'bounded'\\uC778 \\uACBD\\uC6B0 \\uD3B8\\uC9D1\\uAE30\\uC758 \\uC5F4 \\uC904 \\uBC14\\uAFC8\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uAE30\\uBCF8 \\uBB38\\uC11C \\uC0C9 \\uACF5\\uAE09\\uC790\\uB97C \\uC0AC\\uC6A9\\uD558\\uC5EC \\uC778\\uB77C\\uC778 \\uC0C9 \\uC7A5\\uC2DD\\uC744 \\uD45C\\uC2DC\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uD0ED\\uC744 \\uBC1B\\uC744\\uC9C0 \\uB610\\uB294 \\uD0D0\\uC0C9\\uC744 \\uC704\\uD574 \\uC6CC\\uD06C\\uBCA4\\uCE58\\uB85C \\uBBF8\\uB8F0\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\"],\"vs/editor/common/core/editorColorRegistry\":[\"\\uCEE4\\uC11C \\uC704\\uCE58\\uC758 \\uC904 \\uAC15\\uC870 \\uD45C\\uC2DC\\uC5D0 \\uB300\\uD55C \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCEE4\\uC11C \\uC704\\uCE58\\uC758 \\uC904 \\uD14C\\uB450\\uB9AC\\uC5D0 \\uB300\\uD55C \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBE60\\uB978 \\uC5F4\\uAE30 \\uBC0F \\uCC3E\\uAE30 \\uAE30\\uB2A5 \\uB4F1\\uC744 \\uD1B5\\uD574 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB41C \\uC601\\uC5ED\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uAC15\\uC870 \\uC601\\uC5ED \\uC8FC\\uBCC0\\uC758 \\uD14C\\uB450\\uB9AC\\uC5D0 \\uB300\\uD55C \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4\",\"\\uAC15\\uC870 \\uD45C\\uC2DC\\uB41C \\uAE30\\uD638(\\uC608: \\uC815\\uC758\\uB85C \\uC774\\uB3D9 \\uB610\\uB294 \\uB2E4\\uC74C/\\uC774\\uC804 \\uAE30\\uD638\\uB85C \\uC774\\uB3D9)\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774 \\uC0C9\\uC0C1\\uC740 \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uAC15\\uC870 \\uD45C\\uC2DC\\uB41C \\uAE30\\uD638 \\uC8FC\\uC704\\uC758 \\uD14C\\uB450\\uB9AC \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uCEE4\\uC11C \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uCEE4\\uC11C\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBE14\\uB85D \\uCEE4\\uC11C\\uC640 \\uACB9\\uCE58\\uB294 \\uAE00\\uC790\\uC758 \\uC0C9\\uC0C1\\uC744 \\uC0AC\\uC6A9\\uC790 \\uC815\\uC758\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC758 \\uACF5\\uBC31 \\uBB38\\uC790 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uC904 \\uBC88\\uD638 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"'editorIndentGuide.background'\\uB294 \\uB354 \\uC774\\uC0C1 \\uC0AC\\uC6A9\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4. \\uB300\\uC2E0 'editorIndentGuide.background1'\\uC744 \\uC0AC\\uC6A9\\uD558\\uC138\\uC694.\",\"\\uD65C\\uC131 \\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"'editorIndentGuide.activeBackground'\\uB294 \\uB354 \\uC774\\uC0C1 \\uC0AC\\uC6A9\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4. \\uB300\\uC2E0 'editorIndentGuide.activeBackground1'\\uC744 \\uC0AC\\uC6A9\\uD558\\uC138\\uC694.\",\"\\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9(1).\",\"\\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9(2).\",\"\\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9(3).\",\"\\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9(4).\",\"\\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9(5).\",\"\\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9(6).\",\"\\uD65C\\uC131 \\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9(1).\",\"\\uD65C\\uC131 \\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9(2).\",\"\\uD65C\\uC131 \\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9(3).\",\"\\uD65C\\uC131 \\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9(4).\",\"\\uD65C\\uC131 \\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9(5).\",\"\\uD65C\\uC131 \\uD3B8\\uC9D1\\uAE30 \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120 \\uC0C9(6).\",\"\\uD3B8\\uC9D1\\uAE30 \\uD65C\\uC131 \\uC601\\uC5ED \\uC904\\uBC88\\uD638 \\uC0C9\\uC0C1\",\"ID\\uB294 \\uC0AC\\uC6A9\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4. \\uB300\\uC2E0 'editorLineNumber.activeForeground'\\uB97C \\uC0AC\\uC6A9\\uD558\\uC138\\uC694.\",\"\\uD3B8\\uC9D1\\uAE30 \\uD65C\\uC131 \\uC601\\uC5ED \\uC904\\uBC88\\uD638 \\uC0C9\\uC0C1\",\"editor.renderFinalNewline\\uC774 \\uD750\\uB9AC\\uAC8C \\uC124\\uC815\\uB41C \\uACBD\\uC6B0 \\uCD5C\\uC885 \\uD3B8\\uC9D1\\uAE30 \\uC904\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uB208\\uAE08\\uC758 \\uC0C9\\uC0C1\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uCF54\\uB4DC \\uB80C\\uC988\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC77C\\uCE58\\uD558\\uB294 \\uAD04\\uD638 \\uB4A4\\uC758 \\uBC30\\uACBD\\uC0C9\",\"\\uC77C\\uCE58\\uD558\\uB294 \\uBE0C\\uB798\\uD0B7 \\uBC15\\uC2A4\\uC758 \\uC0C9\\uC0C1\",\"\\uAC1C\\uC694 \\uB208\\uAE08 \\uACBD\\uACC4\\uC758 \\uC0C9\\uC0C1\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uAC1C\\uC694 \\uB208\\uAE08\\uC790\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uAC70\\uD130\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAC70\\uD130\\uC5D0\\uB294 \\uAE00\\uB9AC\\uD504 \\uC5EC\\uBC31\\uACFC \\uD589 \\uC218\\uAC00 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC758 \\uBD88\\uD544\\uC694\\uD55C(\\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uB294) \\uC18C\\uC2A4 \\uCF54\\uB4DC \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",`\\uD3B8\\uC9D1\\uAE30\\uC758 \\uBD88\\uD544\\uC694\\uD55C(\\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uB294) \\uC18C\\uC2A4 \\uCF54\\uB4DC \\uBD88\\uD22C\\uBA85\\uB3C4\\uC785\\uB2C8\\uB2E4. \\uC608\\uB97C \\uB4E4\\uC5B4 \"#000000c0\"\\uC740 75% \\uBD88\\uD22C\\uBA85\\uB3C4\\uB85C \\uCF54\\uB4DC\\uB97C \\uB80C\\uB354\\uB9C1\\uD569\\uB2C8\\uB2E4. \\uACE0\\uB300\\uBE44 \\uD14C\\uB9C8\\uC758 \\uACBD\\uC6B0 \\uD398\\uC774\\uB4DC \\uC544\\uC6C3\\uD558\\uC9C0 \\uC54A\\uACE0 'editorUnnecessaryCode.border' \\uD14C\\uB9C8 \\uC0C9\\uC744 \\uC0AC\\uC6A9\\uD558\\uC5EC \\uBD88\\uD544\\uC694\\uD55C \\uCF54\\uB4DC\\uC5D0 \\uBC11\\uC904\\uC744 \\uADF8\\uC73C\\uC138\\uC694.`,\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uACE0\\uC2A4\\uD2B8 \\uD14D\\uC2A4\\uD2B8\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uACE0\\uC2A4\\uD2B8 \\uD14D\\uC2A4\\uD2B8\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uACE0\\uC2A4\\uD2B8 \\uD14D\\uC2A4\\uD2B8\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBC94\\uC704\\uC758 \\uAC1C\\uC694 \\uB208\\uAE08\\uC790 \\uD45C\\uC2DD \\uC0C9\\uC774 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC624\\uB958\\uC758 \\uAC1C\\uC694 \\uB208\\uAE08\\uC790 \\uB9C8\\uCEE4 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uACBD\\uACE0\\uC758 \\uAC1C\\uC694 \\uB208\\uAE08\\uC790 \\uB9C8\\uCEE4 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC815\\uBCF4\\uC758 \\uAC1C\\uC694 \\uB208\\uAE08\\uC790 \\uB9C8\\uCEE4 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638\\uC758 \\uC804\\uACBD\\uC0C9(1)\\uC785\\uB2C8\\uB2E4. \\uB300\\uAD04\\uD638 \\uC30D \\uC0C9 \\uC9C0\\uC815\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638\\uC758 \\uC804\\uACBD\\uC0C9(2)\\uC785\\uB2C8\\uB2E4. \\uB300\\uAD04\\uD638 \\uC30D \\uC0C9 \\uC9C0\\uC815\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638\\uC758 \\uC804\\uACBD\\uC0C9(3)\\uC785\\uB2C8\\uB2E4. \\uB300\\uAD04\\uD638 \\uC30D \\uC0C9 \\uC9C0\\uC815\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638\\uC758 \\uC804\\uACBD\\uC0C9(4)\\uC785\\uB2C8\\uB2E4. \\uB300\\uAD04\\uD638 \\uC30D \\uC0C9 \\uC9C0\\uC815\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638\\uC758 \\uC804\\uACBD\\uC0C9(5)\\uC785\\uB2C8\\uB2E4. \\uB300\\uAD04\\uD638 \\uC30D \\uC0C9 \\uC9C0\\uC815\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638\\uC758 \\uC804\\uACBD\\uC0C9(6)\\uC785\\uB2C8\\uB2E4. \\uB300\\uAD04\\uD638 \\uC30D \\uC0C9 \\uC9C0\\uC815\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC608\\uAE30\\uCE58 \\uC54A\\uC740 \\uB300\\uAD04\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBE44\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4(1). \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uBE44\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4(2). \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uBE44\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4(3). \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uBE44\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4(4). \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uBE44\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4(5). \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uBE44\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4(6). \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4(1). \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4(2). \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4(3). \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4(4). \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4(5). \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4(6). \\uB300\\uAD04\\uD638 \\uC30D \\uC548\\uB0B4\\uC120\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uD574\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC720\\uB2C8\\uCF54\\uB4DC \\uBB38\\uC790\\uB97C \\uAC15\\uC870 \\uD45C\\uC2DC\\uD558\\uB294 \\uB370 \\uC0AC\\uC6A9\\uB418\\uB294 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC720\\uB2C8\\uCF54\\uB4DC \\uBB38\\uC790\\uB97C \\uAC15\\uC870 \\uD45C\\uC2DC\\uD558\\uB294 \\uB370 \\uC0AC\\uC6A9\\uB418\\uB294 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\"],\"vs/editor/common/editorContextKeys\":[\"\\uD3B8\\uC9D1\\uAE30 \\uD14D\\uC2A4\\uD2B8\\uC5D0 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80(\\uCEE4\\uC11C\\uAC00 \\uAE5C\\uBC15\\uC784)\",\"\\uD3B8\\uC9D1\\uAE30 \\uB610\\uB294 \\uD3B8\\uC9D1\\uAE30 \\uC704\\uC82F\\uC5D0 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80(\\uC608: \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uCC3E\\uAE30 \\uC704\\uC82F\\uC5D0 \\uC788\\uC74C)\",\"\\uD3B8\\uC9D1\\uAE30 \\uB610\\uB294 \\uC11C\\uC2DD \\uC788\\uB294 \\uD14D\\uC2A4\\uD2B8 \\uC785\\uB825\\uC5D0 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80(\\uCEE4\\uC11C\\uAC00 \\uAE5C\\uBC15\\uC784)\",\"\\uD3B8\\uC9D1\\uAE30\\uAC00 \\uC77D\\uAE30 \\uC804\\uC6A9\\uC778\\uC9C0 \\uC5EC\\uBD80\",\"\\uCEE8\\uD14D\\uC2A4\\uD2B8\\uAC00 diff \\uD3B8\\uC9D1\\uAE30\\uC778\\uC9C0 \\uC5EC\\uBD80\",\"\\uCEE8\\uD14D\\uC2A4\\uD2B8\\uAC00 \\uD3EC\\uD568\\uB41C diff \\uD3B8\\uC9D1\\uAE30\\uC778\\uC9C0 \\uC5EC\\uBD80\",\"Whether a moved code block is selected for comparison\",\"\\uC561\\uC138\\uC2A4 \\uAC00\\uB2A5\\uD55C Diff \\uBDF0\\uC5B4 \\uD45C\\uC2DC \\uC5EC\\uBD80\",\"Whether the diff editor render side by side inline breakpoint is reached\",\"'editor.columnSelection'\\uC744 \\uC0AC\\uC6A9\\uD558\\uB3C4\\uB85D \\uC124\\uC815\\uB418\\uC5B4 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC120\\uD0DD\\uB41C \\uD14D\\uC2A4\\uD2B8\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC5EC\\uB7EC \\uAC1C\\uC758 \\uC120\\uD0DD \\uD56D\\uBAA9\\uC774 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"'Tab' \\uD0A4\\uB97C \\uB204\\uB974\\uBA74 \\uD3B8\\uC9D1\\uAE30 \\uBC16\\uC73C\\uB85C \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC774\\uB3D9\\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30 \\uD638\\uBC84\\uAC00 \\uD45C\\uC2DC\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30 \\uAC00\\uB9AC\\uD0A4\\uAE30\\uC5D0 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uC2A4\\uD2F0\\uD0A4 \\uC2A4\\uD06C\\uB864\\uC758 \\uD3EC\\uCEE4\\uC2A4 \\uC5EC\\uBD80\",\"\\uC2A4\\uD2F0\\uD0A4 \\uC2A4\\uD06C\\uB864\\uC758 \\uAC00\\uC2DC\\uC131 \\uC5EC\\uBD80\",\"\\uB3C5\\uB9BD \\uC2E4\\uD589\\uD615 \\uC0C9 \\uD3B8\\uC9D1\\uAE30\\uAC00 \\uD45C\\uC2DC\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uB3C5\\uB9BD \\uC2E4\\uD589\\uD615 \\uC0C9 \\uD3B8\\uC9D1\\uAE30\\uAC00 \\uD3EC\\uCEE4\\uC2A4\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uAC00 \\uB354 \\uD070 \\uD3B8\\uC9D1\\uAE30(\\uC608: \\uC804\\uC790 \\uD544\\uAE30\\uC7A5)\\uC5D0 \\uC18D\\uD574 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC758 \\uC5B8\\uC5B4 \\uC2DD\\uBCC4\\uC790\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC644\\uC131 \\uD56D\\uBAA9 \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uCF54\\uB4DC \\uC791\\uC5C5 \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 CodeLens \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC815\\uC758 \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC120\\uC5B8 \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uAD6C\\uD604 \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uD615\\uC2DD \\uC815\\uC758 \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uD638\\uBC84 \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uBB38\\uC11C \\uAC15\\uC870 \\uD45C\\uC2DC \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uBB38\\uC11C \\uAE30\\uD638 \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uCC38\\uC870 \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC774\\uB984 \\uBC14\\uAFB8\\uAE30 \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC2DC\\uADF8\\uB2C8\\uCC98 \\uB3C4\\uC6C0\\uB9D0 \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC778\\uB77C\\uC778 \\uD78C\\uD2B8 \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uBB38\\uC11C \\uC11C\\uC2DD \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uBB38\\uC11C \\uC120\\uD0DD \\uC11C\\uC2DD \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC5EC\\uB7EC \\uAC1C\\uC758 \\uBB38\\uC11C \\uC11C\\uC2DD \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC5EC\\uB7EC \\uAC1C\\uC758 \\uBB38\\uC11C \\uC120\\uD0DD \\uC11C\\uC2DD \\uACF5\\uAE09\\uC790\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\"],\"vs/editor/common/languages\":[\"\\uBC30\\uC5F4\",\"\\uBD80\\uC6B8\",\"\\uD074\\uB798\\uC2A4\",\"\\uC0C1\\uC218\",\"\\uC0DD\\uC131\\uC790\",\"\\uC5F4\\uAC70\\uD615\",\"\\uC5F4\\uAC70\\uD615 \\uBA64\\uBC84\",\"\\uC774\\uBCA4\\uD2B8\",\"\\uD544\\uB4DC\",\"\\uD30C\\uC77C\",\"\\uD568\\uC218\",\"\\uC778\\uD130\\uD398\\uC774\\uC2A4\",\"\\uD0A4\",\"\\uBA54\\uC11C\\uB4DC\",\"\\uBAA8\\uB4C8\",\"\\uB124\\uC784\\uC2A4\\uD398\\uC774\\uC2A4\",\"Null\",\"\\uC22B\\uC790\",\"\\uAC1C\\uCCB4\",\"\\uC5F0\\uC0B0\\uC790\",\"\\uD328\\uD0A4\\uC9C0\",\"\\uC18D\\uC131\",\"\\uBB38\\uC790\\uC5F4\",\"\\uAD6C\\uC870\\uCCB4\",\"\\uD615\\uC2DD \\uB9E4\\uAC1C \\uBCC0\\uC218\",\"\\uBCC0\\uC218\",\"{0}({1})\"],\"vs/editor/common/languages/modesRegistry\":[\"\\uC77C\\uBC18 \\uD14D\\uC2A4\\uD2B8\"],\"vs/editor/common/model/editStack\":[\"\\uC785\\uB825\\uD558\\uB294 \\uC911\"],\"vs/editor/common/standaloneStrings\":[\"\\uAC1C\\uBC1C\\uC790: \\uAC80\\uC0AC \\uD1A0\\uD070\",\"\\uC904/\\uC5F4\\uB85C \\uC774\\uB3D9...\",\"\\uBE60\\uB978 \\uC561\\uC138\\uC2A4 \\uACF5\\uAE09\\uC790 \\uBAA8\\uB450 \\uD45C\\uC2DC\",\"\\uBA85\\uB839 \\uD314\\uB808\\uD2B8\",\"\\uBA85\\uB839 \\uD45C\\uC2DC \\uBC0F \\uC2E4\\uD589\",\"\\uAE30\\uD638\\uB85C \\uAC00\\uC11C...\",\"\\uBC94\\uC8FC\\uBCC4 \\uAE30\\uD638\\uB85C \\uC774\\uB3D9...\",\"\\uD3B8\\uC9D1\\uAE30 \\uCF58\\uD150\\uCE20\",\"\\uC811\\uADFC\\uC131 \\uC635\\uC158\\uC740 Alt+F1\\uC744 \\uB20C\\uB7EC\\uC5EC \\uD569\\uB2C8\\uB2E4.\",\"\\uACE0\\uB300\\uBE44 \\uD14C\\uB9C8\\uB85C \\uC804\\uD658\",\"{1} \\uD30C\\uC77C\\uC5D0\\uC11C \\uD3B8\\uC9D1\\uC744 {0}\\uAC1C \\uD588\\uC2B5\\uB2C8\\uB2E4.\"],\"vs/editor/common/viewLayout/viewLineRenderer\":[\"\\uC790\\uC138\\uD788 \\uD45C\\uC2DC({0})\",\"{0}\\uC790\"],\"vs/editor/contrib/anchorSelect/browser/anchorSelect\":[\"\\uC120\\uD0DD \\uC575\\uCEE4 \\uC9C0\\uC810\",\"{0}\\uC5D0 \\uC124\\uC815\\uB41C \\uC575\\uCEE4: {1}\",\"\\uC120\\uD0DD \\uC575\\uCEE4 \\uC9C0\\uC810 \\uC124\\uC815\",\"\\uC120\\uD0DD \\uC575\\uCEE4 \\uC9C0\\uC810\\uC73C\\uB85C \\uC774\\uB3D9\",\"\\uC575\\uCEE4\\uC5D0\\uC11C \\uCEE4\\uC11C\\uB85C \\uC120\\uD0DD\",\"\\uC120\\uD0DD \\uC575\\uCEE4 \\uC9C0\\uC810 \\uCDE8\\uC18C\"],\"vs/editor/contrib/bracketMatching/browser/bracketMatching\":[\"\\uAD04\\uD638\\uC5D0 \\uD574\\uB2F9\\uD558\\uB294 \\uC601\\uC5ED\\uC744 \\uD45C\\uC2DC\\uC790\\uC5D0 \\uCC44\\uC0C9\\uD558\\uC5EC \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uB300\\uAD04\\uD638\\uB85C \\uC774\\uB3D9\",\"\\uAD04\\uD638\\uAE4C\\uC9C0 \\uC120\\uD0DD\",\"\\uB300\\uAD04\\uD638 \\uC81C\\uAC70\",\"\\uB300\\uAD04\\uD638\\uB85C \\uC774\\uB3D9(&&B)\"],\"vs/editor/contrib/caretOperations/browser/caretOperations\":[\"\\uC120\\uD0DD\\uD55C \\uD14D\\uC2A4\\uD2B8\\uB97C \\uC67C\\uCABD\\uC73C\\uB85C \\uC774\\uB3D9\",\"\\uC120\\uD0DD\\uD55C \\uD14D\\uC2A4\\uD2B8\\uB97C \\uC624\\uB978\\uCABD\\uC73C\\uB85C \\uC774\\uB3D9\"],\"vs/editor/contrib/caretOperations/browser/transpose\":[\"\\uBB38\\uC790 \\uBC14\\uAFB8\\uAE30\"],\"vs/editor/contrib/clipboard/browser/clipboard\":[\"\\uC798\\uB77C\\uB0B4\\uAE30(&&T)\",\"\\uC798\\uB77C\\uB0B4\\uAE30\",\"\\uC798\\uB77C\\uB0B4\\uAE30\",\"\\uC798\\uB77C\\uB0B4\\uAE30\",\"\\uBCF5\\uC0AC(&&C)\",\"\\uBCF5\\uC0AC\",\"\\uBCF5\\uC0AC\",\"\\uBCF5\\uC0AC\",\"\\uB2E4\\uC74C\\uC73C\\uB85C \\uBCF5\\uC0AC\",\"\\uB2E4\\uC74C\\uC73C\\uB85C \\uBCF5\\uC0AC\",\"\\uACF5\\uC720\",\"\\uACF5\\uC720\",\"\\uACF5\\uC720\",\"\\uBD99\\uC5EC\\uB123\\uAE30(&&P)\",\"\\uBD99\\uC5EC\\uB123\\uAE30\",\"\\uBD99\\uC5EC\\uB123\\uAE30\",\"\\uBD99\\uC5EC\\uB123\\uAE30\",\"\\uAD6C\\uBB38\\uC744 \\uAC15\\uC870 \\uD45C\\uC2DC\\uD558\\uC5EC \\uBCF5\\uC0AC\"],\"vs/editor/contrib/codeAction/browser/codeAction\":[\"\\uCF54\\uB4DC \\uC791\\uC5C5\\uC744 \\uC801\\uC6A9\\uD558\\uB294 \\uC911 \\uC54C \\uC218 \\uC5C6\\uB294 \\uC624\\uB958\\uAC00 \\uBC1C\\uC0DD\\uD588\\uC2B5\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/codeAction/browser/codeActionCommands\":[\"\\uC2E4\\uD589\\uD560 \\uCF54\\uB4DC \\uC791\\uC5C5\\uC758 \\uC885\\uB958\\uC785\\uB2C8\\uB2E4.\",\"\\uBC18\\uD658\\uB41C \\uC791\\uC5C5\\uC774 \\uC801\\uC6A9\\uB418\\uB294 \\uACBD\\uC6B0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD56D\\uC0C1 \\uBC18\\uD658\\uB41C \\uCCAB \\uBC88\\uC9F8 \\uCF54\\uB4DC \\uC791\\uC5C5\\uC744 \\uC801\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uCCAB \\uBC88\\uC9F8 \\uBC18\\uD658\\uB41C \\uCF54\\uB4DC \\uC791\\uC5C5\\uC744 \\uC801\\uC6A9\\uD569\\uB2C8\\uB2E4(\\uC774 \\uC791\\uC5C5\\uB9CC \\uC788\\uB294 \\uACBD\\uC6B0).\",\"\\uBC18\\uD658\\uB41C \\uCF54\\uB4DC \\uC791\\uC5C5\\uC744 \\uC801\\uC6A9\\uD558\\uC9C0 \\uB9C8\\uC138\\uC694.\",\"\\uAE30\\uBCF8 \\uCF54\\uB4DC \\uC791\\uC5C5\\uB9CC \\uBC18\\uD658\\uB418\\uB3C4\\uB85D \\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBE60\\uB978 \\uC218\\uC815...\",\"\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uCF54\\uB4DC \\uB3D9\\uC791\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uAE30\\uBCF8 \\uCF54\\uB4DC \\uC791\\uC5C5\\uC744 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC74C\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uCF54\\uB4DC \\uC791\\uC5C5\\uC744 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC74C\",\"\\uC0AC\\uC6A9\\uD560 \\uC218 \\uC788\\uB294 \\uAE30\\uBCF8 \\uCF54\\uB4DC \\uC791\\uC5C5 \\uC5C6\\uC74C\",\"\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uCF54\\uB4DC \\uB3D9\\uC791\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uB9AC\\uD329\\uD130\\uB9C1...\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uAE30\\uBCF8 \\uB9AC\\uD329\\uD130\\uB9C1 \\uC5C6\\uC74C\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uB9AC\\uD329\\uD130\\uB9C1 \\uC5C6\\uC74C\",\"\\uAE30\\uBCF8 \\uC124\\uC815 \\uB9AC\\uD329\\uD130\\uB9C1\\uC744 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC74C\",\"\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uB9AC\\uD399\\uD130\\uB9C1\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC18C\\uC2A4 \\uC791\\uC5C5...\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uAE30\\uBCF8 \\uC18C\\uC2A4 \\uC791\\uC5C5\\uC744 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC74C\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uC18C\\uC2A4 \\uC791\\uC5C5\\uC744 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC74C\",\"\\uC0AC\\uC6A9\\uD560 \\uC218 \\uC788\\uB294 \\uAE30\\uBCF8 \\uC6D0\\uBCF8 \\uC791\\uC5C5 \\uC5C6\\uC74C\",\"\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uC18C\\uC2A4 \\uC791\\uC5C5\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uAC00\\uC838\\uC624\\uAE30 \\uAD6C\\uC131\",\"\\uC0AC\\uC6A9 \\uAC00\\uB2A5\\uD55C \\uAC00\\uC838\\uC624\\uAE30 \\uAD6C\\uC131 \\uC791\\uC5C5\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA8\\uB450 \\uC218\\uC815\",\"\\uBAA8\\uB4E0 \\uC791\\uC5C5 \\uC218\\uC815 \\uC0AC\\uC6A9 \\uBD88\\uAC00\",\"\\uC790\\uB3D9 \\uC218\\uC815...\",\"\\uC0AC\\uC6A9\\uD560 \\uC218 \\uC788\\uB294 \\uC790\\uB3D9 \\uC218\\uC815 \\uC5C6\\uC74C\"],\"vs/editor/contrib/codeAction/browser/codeActionContributions\":[\"\\uCF54\\uB4DC \\uC791\\uC5C5 \\uBA54\\uB274\\uC5D0 \\uADF8\\uB8F9 \\uD5E4\\uB354 \\uD45C\\uC2DC\\uB97C \\uD65C\\uC131\\uD654/\\uBE44\\uD65C\\uC131\\uD654\\uD569\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/codeAction/browser/codeActionController\":[\"\\uC0AC\\uC6A9\\uD558\\uC9C0 \\uC54A\\uB294 \\uD56D\\uBAA9 \\uC228\\uAE30\\uAE30\",\"\\uBE44\\uD65C\\uC131\\uD654\\uB41C \\uD56D\\uBAA9 \\uD45C\\uC2DC\"],\"vs/editor/contrib/codeAction/browser/codeActionMenu\":[\"\\uCD94\\uAC00 \\uC791\\uC5C5...\",\"\\uBE60\\uB978 \\uC218\\uC815...\",\"\\uCD94\\uCD9C...\",\"\\uC778\\uB77C\\uC778...\",\"\\uB2E4\\uC2DC \\uC4F0\\uAE30\",\"\\uC774\\uB3D9...\",\"\\uCF54\\uB4DC \\uAC10\\uC2F8\\uAE30...\",\"\\uC18C\\uC2A4 \\uC791\\uC5C5...\"],\"vs/editor/contrib/codeAction/browser/lightBulbWidget\":[\"\\uCF54\\uB4DC \\uC791\\uC5C5 \\uD45C\\uC2DC. \\uAE30\\uBCF8 \\uC124\\uC815 \\uBE60\\uB978 \\uC218\\uC815 \\uC0AC\\uC6A9 \\uAC00\\uB2A5({0})\",\"\\uCF54\\uB4DC \\uC791\\uC5C5 \\uD45C\\uC2DC({0})\",\"\\uCF54\\uB4DC \\uC791\\uC5C5 \\uD45C\\uC2DC\"],\"vs/editor/contrib/codelens/browser/codelensController\":[\"\\uD604\\uC7AC \\uC904\\uC5D0 \\uB300\\uD55C \\uCF54\\uB4DC \\uB80C\\uC988 \\uBA85\\uB839 \\uD45C\\uC2DC\"],\"vs/editor/contrib/colorPicker/browser/colorPickerWidget\":[\"\\uC0C9 \\uC635\\uC158\\uC744 \\uD1A0\\uAE00\\uD558\\uB824\\uBA74 \\uD074\\uB9AD\\uD558\\uC138\\uC694(rgb/hsl/hex).\",\"\\uC0C9 \\uD3B8\\uC9D1\\uAE30\\uB97C \\uB2EB\\uB294 \\uC544\\uC774\\uCF58\"],\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\":[\"\\uB3C5\\uB9BD \\uC2E4\\uD589\\uD615 \\uC0C9 \\uD3B8\\uC9D1\\uAE30 \\uD45C\\uC2DC \\uB610\\uB294 \\uD3EC\\uCEE4\\uC2A4\",\"\\uB3C5\\uB9BD \\uC2E4\\uD589\\uD615 \\uC0C9 \\uD3B8\\uC9D1\\uAE30 \\uD45C\\uC2DC \\uB610\\uB294 \\uD3EC\\uCEE4\\uC2A4(&&S)\",\"\\uC0C9 \\uD3B8\\uC9D1\\uAE30 \\uC228\\uAE30\\uAE30\",\"\\uB3C5\\uB9BD \\uC2E4\\uD589\\uD615 \\uC0C9 \\uD3B8\\uC9D1\\uAE30\\uB85C \\uC0C9 \\uC0BD\\uC785\"],\"vs/editor/contrib/comment/browser/comment\":[\"\\uC904 \\uC8FC\\uC11D \\uC124\\uC815/\\uD574\\uC81C\",\"\\uC904 \\uC8FC\\uC11D \\uC124\\uC815/\\uD574\\uC81C(&&T)\",\"\\uC904 \\uC8FC\\uC11D \\uCD94\\uAC00\",\"\\uC904 \\uC8FC\\uC11D \\uC81C\\uAC70\",\"\\uBE14\\uB85D \\uC8FC\\uC11D \\uC124\\uC815/\\uD574\\uC81C\",\"\\uBE14\\uB85D \\uC8FC\\uC11D \\uC124\\uC815/\\uD574\\uC81C(&&B)\"],\"vs/editor/contrib/contextmenu/browser/contextmenu\":[\"\\uBBF8\\uB2C8\\uB9F5\",\"\\uBB38\\uC790 \\uB80C\\uB354\\uB9C1\",\"\\uC138\\uB85C \\uD06C\\uAE30\",\"\\uBE44\\uB840\",\"\\uCC44\\uC6B0\\uAE30\",\"\\uB9DE\\uCDA4\",\"\\uC2AC\\uB77C\\uC774\\uB354\",\"\\uB9C8\\uC6B0\\uC2A4 \\uC704\\uB85C\",\"\\uD56D\\uC0C1\",\"\\uD3B8\\uC9D1\\uAE30 \\uC0C1\\uD669\\uC5D0 \\uB9DE\\uB294 \\uBA54\\uB274 \\uD45C\\uC2DC\"],\"vs/editor/contrib/cursorUndo/browser/cursorUndo\":[\"\\uCEE4\\uC11C \\uC2E4\\uD589 \\uCDE8\\uC18C\",\"\\uCEE4\\uC11C \\uB2E4\\uC2DC \\uC2E4\\uD589\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\":[\"\\uB2E4\\uB978 \\uC774\\uB984\\uC73C\\uB85C \\uBD99\\uC5EC\\uB123\\uAE30...\",\"\\uC801\\uC6A9\\uD560 \\uBD99\\uC5EC\\uB123\\uAE30 \\uD3B8\\uC9D1\\uC758 ID\\uC785\\uB2C8\\uB2E4. \\uC81C\\uACF5\\uD558\\uC9C0 \\uC54A\\uC73C\\uBA74 \\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uC120\\uD0DD\\uAE30\\uAC00 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\":[\"\\uBD99\\uC5EC\\uB123\\uAE30 \\uC704\\uC82F\\uC774 \\uD45C\\uC2DC\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uBD99\\uC5EC\\uB123\\uAE30 \\uC635\\uC158 \\uD45C\\uC2DC...\",\"\\uBD99\\uC5EC\\uB123\\uAE30 \\uCC98\\uB9AC\\uAE30\\uB97C \\uC2E4\\uD589\\uD558\\uB294 \\uC911\\uC785\\uB2C8\\uB2E4. \\uCDE8\\uC18C\\uD558\\uB824\\uBA74 \\uD074\\uB9AD\\uD558\\uC138\\uC694.\",\"\\uBD99\\uC5EC\\uB123\\uAE30 \\uC791\\uC5C5 \\uC120\\uD0DD\",\"\\uBD99\\uC5EC\\uB123\\uAE30 \\uCC98\\uB9AC\\uAE30\\uB97C \\uC2E4\\uD589\\uD558\\uB294 \\uC911\"],\"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\":[\"\\uAE30\\uBCF8 \\uC81C\\uACF5\",\"\\uC77C\\uBC18 \\uD14D\\uC2A4\\uD2B8 \\uC0BD\\uC785\",\"URI \\uC0BD\\uC785\",\"URI \\uC0BD\\uC785\",\"\\uACBD\\uB85C \\uC0BD\\uC785\",\"\\uACBD\\uB85C \\uC0BD\\uC785\",\"\\uC0C1\\uB300 \\uACBD\\uB85C \\uC0BD\\uC785\",\"\\uC0C1\\uB300 \\uACBD\\uB85C \\uC0BD\\uC785\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\":[\"Configures the default drop provider to use for content of a given mime type.\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\":[\"\\uB4DC\\uB86D \\uC704\\uC82F\\uC774 \\uD45C\\uC2DC\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uB4DC\\uB86D \\uC635\\uC158 \\uD45C\\uC2DC...\",\"\\uB4DC\\uB86D \\uCC98\\uB9AC\\uAE30\\uB97C \\uC2E4\\uD589\\uD558\\uB294 \\uC911\\uC785\\uB2C8\\uB2E4. \\uCDE8\\uC18C\\uD558\\uB824\\uBA74 \\uD074\\uB9AD\\uD558\\uC138\\uC694.\"],\"vs/editor/contrib/editorState/browser/keybindingCancellation\":[\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uCDE8\\uC18C \\uAC00\\uB2A5\\uD55C \\uC791\\uC5C5(\\uC608: '\\uCC38\\uC870 \\uD53C\\uD0B9')\\uC744 \\uC2E4\\uD589\\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\"],\"vs/editor/contrib/find/browser/findController\":[\"\\uCC3E\\uAE30\",\"\\uCC3E\\uAE30(&&F)\",`\"\\uC815\\uADDC\\uC2DD \\uC0AC\\uC6A9\" \\uD50C\\uB798\\uADF8\\uB97C \\uC7AC\\uC815\\uC758\\uD569\\uB2C8\\uB2E4.\\r\n\\uD50C\\uB798\\uADF8\\uB294 \\uBBF8\\uB798\\uB97C \\uC704\\uD574 \\uC800\\uC7A5\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\\r\n0: \\uC544\\uBB34\\uAC83\\uB3C4 \\uD558\\uC9C0 \\uC54A\\uC74C\\r\n1: True\\r\n2: False`,`\"\\uC804\\uCCB4 \\uB2E8\\uC5B4 \\uC77C\\uCE58\" \\uD50C\\uB798\\uADF8\\uB97C \\uC7AC\\uC815\\uC758\\uD569\\uB2C8\\uB2E4.\\r\n\\uD50C\\uB798\\uADF8\\uB294 \\uBBF8\\uB798\\uB97C \\uC704\\uD574 \\uC800\\uC7A5\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\\r\n0: \\uC544\\uBB34\\uAC83\\uB3C4 \\uD558\\uC9C0 \\uC54A\\uC74C\\r\n1: True\\r\n2: False`,`\"Math Case\" \\uD50C\\uB798\\uADF8\\uB97C \\uC7AC\\uC815\\uC758\\uD569\\uB2C8\\uB2E4.\\r\n\\uD50C\\uB798\\uADF8\\uB294 \\uBBF8\\uB798\\uB97C \\uC704\\uD574 \\uC800\\uC7A5\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\\r\n0: \\uC544\\uBB34\\uAC83\\uB3C4 \\uD558\\uC9C0 \\uC54A\\uC74C\\r\n1: True\\r\n2: False`,`\"\\uCF00\\uC774\\uC2A4 \\uBCF4\\uC874\" \\uD50C\\uB798\\uADF8\\uB97C \\uC7AC\\uC815\\uC758\\uD569\\uB2C8\\uB2E4.\\r\n\\uD50C\\uB798\\uADF8\\uB294 \\uBBF8\\uB798\\uB97C \\uC704\\uD574 \\uC800\\uC7A5\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\\r\n0: \\uC544\\uBB34\\uAC83\\uB3C4 \\uD558\\uC9C0 \\uC54A\\uC74C\\r\n1: True\\r\n2: False`,\"\\uC778\\uC218\\uB85C \\uCC3E\\uAE30\",\"\\uC120\\uD0DD \\uC601\\uC5ED\\uC5D0\\uC11C \\uCC3E\\uAE30\",\"\\uB2E4\\uC74C \\uCC3E\\uAE30\",\"\\uC774\\uC804 \\uCC3E\\uAE30\",\"\\uC77C\\uCE58 \\uD56D\\uBAA9\\uC73C\\uB85C \\uC774\\uB3D9...\",\"\\uC77C\\uCE58\\uD558\\uB294 \\uD56D\\uBAA9\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uB2E4\\uB978 \\uB0B4\\uC6A9\\uC73C\\uB85C \\uAC80\\uC0C9\\uD574 \\uBCF4\\uC138\\uC694.\",\"\\uD2B9\\uC815 \\uC77C\\uCE58 \\uD56D\\uBAA9\\uC73C\\uB85C \\uC774\\uB3D9\\uD558\\uB824\\uBA74 \\uC22B\\uC790\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694(1~{0} \\uC0AC\\uC774).\",\"1\\uC5D0\\uC11C {0} \\uC0AC\\uC774\\uC758 \\uC22B\\uC790\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\"1\\uC5D0\\uC11C {0} \\uC0AC\\uC774\\uC758 \\uC22B\\uC790\\uB97C \\uC785\\uB825\\uD558\\uC138\\uC694\",\"\\uB2E4\\uC74C \\uC120\\uD0DD \\uCC3E\\uAE30\",\"\\uC774\\uC804 \\uC120\\uD0DD \\uCC3E\\uAE30\",\"\\uBC14\\uAFB8\\uAE30\",\"\\uBC14\\uAFB8\\uAE30(&&R)\"],\"vs/editor/contrib/find/browser/findWidget\":[\"\\uD3B8\\uC9D1\\uAE30 \\uCC3E\\uAE30 \\uC704\\uC82F\\uC5D0\\uC11C '\\uC120\\uD0DD \\uC601\\uC5ED\\uC5D0\\uC11C \\uCC3E\\uAE30'\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uCC3E\\uAE30 \\uC704\\uC82F\\uC774 \\uCD95\\uC18C\\uB418\\uC5C8\\uC74C\\uC744 \\uB098\\uD0C0\\uB0B4\\uB294 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uCC3E\\uAE30 \\uC704\\uC82F\\uC774 \\uD655\\uC7A5\\uB418\\uC5C8\\uC74C\\uC744 \\uB098\\uD0C0\\uB0B4\\uB294 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uCC3E\\uAE30 \\uC704\\uC82F\\uC5D0\\uC11C '\\uBC14\\uAFB8\\uAE30'\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uCC3E\\uAE30 \\uC704\\uC82F\\uC5D0\\uC11C '\\uBAA8\\uB450 \\uBC14\\uAFB8\\uAE30'\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uCC3E\\uAE30 \\uC704\\uC82F\\uC5D0\\uC11C '\\uC774\\uC804 \\uCC3E\\uAE30'\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uCC3E\\uAE30 \\uC704\\uC82F\\uC5D0\\uC11C '\\uB2E4\\uC74C \\uCC3E\\uAE30'\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uCC3E\\uAE30/\\uBC14\\uAFB8\\uAE30\",\"\\uCC3E\\uAE30\",\"\\uCC3E\\uAE30\",\"\\uC774\\uC804 \\uAC80\\uC0C9 \\uACB0\\uACFC\",\"\\uB2E4\\uC74C \\uAC80\\uC0C9 \\uACB0\\uACFC\",\"\\uC120\\uD0DD \\uD56D\\uBAA9\\uC5D0\\uC11C \\uCC3E\\uAE30\",\"\\uB2EB\\uAE30\",\"\\uBC14\\uAFB8\\uAE30\",\"\\uBC14\\uAFB8\\uAE30\",\"\\uBC14\\uAFB8\\uAE30\",\"\\uBAA8\\uB450 \\uBC14\\uAFB8\\uAE30\",\"\\uBC14\\uAFB8\\uAE30 \\uC124\\uC815/\\uD574\\uC81C\",\"\\uCC98\\uC74C {0}\\uAC1C\\uC758 \\uACB0\\uACFC\\uAC00 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB418\\uC9C0\\uB9CC \\uBAA8\\uB4E0 \\uCC3E\\uAE30 \\uC791\\uC5C5\\uC740 \\uC804\\uCCB4 \\uD14D\\uC2A4\\uD2B8\\uC5D0 \\uB300\\uD574 \\uC218\\uD589\\uB429\\uB2C8\\uB2E4.\",\"{1}\\uC758 {0}\",\"\\uACB0\\uACFC \\uC5C6\\uC74C\",\"{0}\\uAC1C \\uCC3E\\uC74C\",\"'{1}'\\uC5D0 \\uB300\\uD55C {0}\\uC744(\\uB97C) \\uCC3E\\uC74C\",\"{2}\\uC5D0\\uC11C '{1}'\\uC5D0 \\uB300\\uD55C {0}\\uC744(\\uB97C) \\uCC3E\\uC74C\",\"'{1}'\\uC5D0 \\uB300\\uD55C {0}\\uC744(\\uB97C) \\uCC3E\\uC74C\",\"Ctrl+Enter\\uB97C \\uB204\\uB974\\uBA74 \\uC774\\uC81C \\uBAA8\\uB4E0 \\uD56D\\uBAA9\\uC744 \\uBC14\\uAFB8\\uC9C0 \\uC54A\\uACE0 \\uC904 \\uBC14\\uAFC8\\uC744 \\uC0BD\\uC785\\uD569\\uB2C8\\uB2E4. editor.action.replaceAll\\uC758 \\uD0A4 \\uBC14\\uC778\\uB529\\uC744 \\uC218\\uC815\\uD558\\uC5EC \\uC774 \\uB3D9\\uC791\\uC744 \\uC7AC\\uC815\\uC758\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/folding/browser/folding\":[\"\\uD3BC\\uCE58\\uAE30\",\"\\uC7AC\\uADC0\\uC801\\uC73C\\uB85C \\uD3BC\\uCE58\\uAE30\",\"\\uC811\\uAE30\",\"\\uC811\\uAE30 \\uC804\\uD658\",\"\\uC7AC\\uADC0\\uC801\\uC73C\\uB85C \\uC811\\uAE30\",\"\\uBAA8\\uB4E0 \\uBE14\\uB85D \\uCF54\\uBA58\\uD2B8\\uB97C \\uC811\\uAE30\",\"\\uBAA8\\uB4E0 \\uC601\\uC5ED \\uC811\\uAE30\",\"\\uBAA8\\uB4E0 \\uC601\\uC5ED \\uD3BC\\uCE58\\uAE30\",\"\\uC120\\uD0DD\\uD55C \\uC601\\uC5ED\\uC744 \\uC81C\\uC678\\uD55C \\uBAA8\\uB4E0 \\uC601\\uC5ED \\uC811\\uAE30\",\"\\uC120\\uD0DD\\uD55C \\uC601\\uC5ED\\uC744 \\uC81C\\uC678\\uD55C \\uBAA8\\uB4E0 \\uC601\\uC5ED \\uD3BC\\uCE58\\uAE30\",\"\\uBAA8\\uB450 \\uC811\\uAE30\",\"\\uBAA8\\uB450 \\uD3BC\\uCE58\\uAE30\",\"\\uBD80\\uBAA8 \\uD3F4\\uB529\\uC73C\\uB85C \\uC774\\uB3D9\",\"\\uC774\\uC804 \\uC811\\uAE30 \\uBC94\\uC704\\uB85C \\uC774\\uB3D9\",\"\\uB2E4\\uC74C \\uC811\\uAE30 \\uBC94\\uC704\\uB85C \\uC774\\uB3D9\",\"\\uC120\\uD0DD \\uC601\\uC5ED\\uC5D0\\uC11C \\uC811\\uAE30 \\uBC94\\uC704 \\uB9CC\\uB4E4\\uAE30\",\"\\uC218\\uB3D9 \\uD3F4\\uB529 \\uBC94\\uC704 \\uC81C\\uAC70\",\"\\uC218\\uC900 {0} \\uC811\\uAE30\"],\"vs/editor/contrib/folding/browser/foldingDecorations\":[\"\\uC811\\uD78C \\uBC94\\uC704\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC0C9\\uC740 \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uAE30 \\uC704\\uD574 \\uBD88\\uD22C\\uBA85\\uD574\\uC11C\\uB294 \\uC548 \\uB429\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uC5EC\\uBC31\\uC758 \\uC811\\uAE30 \\uCEE8\\uD2B8\\uB864 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uBB38\\uC790 \\uBAA8\\uC591 \\uC5EC\\uBC31\\uC5D0\\uC11C \\uD655\\uC7A5\\uB41C \\uBC94\\uC704\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uBB38\\uC790 \\uBAA8\\uC591 \\uC5EC\\uBC31\\uC5D0\\uC11C \\uCD95\\uC18C\\uB41C \\uBC94\\uC704\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uBB38\\uC790 \\uBAA8\\uC591 \\uC5EC\\uBC31\\uC5D0\\uC11C \\uC218\\uB3D9\\uC73C\\uB85C \\uCD95\\uC18C\\uB41C \\uBC94\\uC704\\uC5D0 \\uB300\\uD55C \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uBB38\\uC790 \\uBAA8\\uC591 \\uC5EC\\uBC31\\uC5D0\\uC11C \\uC218\\uB3D9\\uC73C\\uB85C \\uD655\\uC7A5\\uB41C \\uBC94\\uC704\\uC5D0 \\uB300\\uD55C \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/fontZoom/browser/fontZoom\":[\"\\uD3B8\\uC9D1\\uAE30 \\uAE00\\uAF34 \\uD655\\uB300\",\"\\uD3B8\\uC9D1\\uAE30 \\uAE00\\uAF34 \\uCD95\\uC18C\",\"\\uD3B8\\uC9D1\\uAE30 \\uAE00\\uAF34 \\uD655\\uB300/\\uCD95\\uC18C \\uB2E4\\uC2DC \\uC124\\uC815\"],\"vs/editor/contrib/format/browser/format\":[\"\\uC904 {0}\\uC5D0\\uC11C 1\\uAC1C \\uC11C\\uC2DD \\uD3B8\\uC9D1\\uC744 \\uC218\\uD589\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC904 {1}\\uC5D0\\uC11C {0}\\uAC1C \\uC11C\\uC2DD \\uD3B8\\uC9D1\\uC744 \\uC218\\uD589\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC904 {0}\\uACFC(\\uC640) {1} \\uC0AC\\uC774\\uC5D0\\uC11C 1\\uAC1C \\uC11C\\uC2DD \\uD3B8\\uC9D1\\uC744 \\uC218\\uD589\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC904 {1}\\uACFC(\\uC640) {2} \\uC0AC\\uC774\\uC5D0\\uC11C {0}\\uAC1C \\uC11C\\uC2DD \\uD3B8\\uC9D1\\uC744 \\uC218\\uD589\\uD588\\uC2B5\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/format/browser/formatActions\":[\"\\uBB38\\uC11C \\uC11C\\uC2DD\",\"\\uC120\\uD0DD \\uC601\\uC5ED \\uC11C\\uC2DD\"],\"vs/editor/contrib/gotoError/browser/gotoError\":[\"\\uB2E4\\uC74C \\uBB38\\uC81C\\uB85C \\uC774\\uB3D9 (\\uC624\\uB958, \\uACBD\\uACE0, \\uC815\\uBCF4)\",\"\\uB2E4\\uC74C \\uB9C8\\uCEE4\\uB85C \\uC774\\uB3D9\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uC774\\uC804 \\uBB38\\uC81C\\uB85C \\uC774\\uB3D9 (\\uC624\\uB958, \\uACBD\\uACE0, \\uC815\\uBCF4)\",\"\\uC774\\uC804 \\uB9C8\\uCEE4\\uB85C \\uC774\\uB3D9\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uD30C\\uC77C\\uC758 \\uB2E4\\uC74C \\uBB38\\uC81C\\uB85C \\uC774\\uB3D9 (\\uC624\\uB958, \\uACBD\\uACE0, \\uC815\\uBCF4)\",\"\\uB2E4\\uC74C \\uBB38\\uC81C(&&P)\",\"\\uD30C\\uC77C\\uC758 \\uC774\\uC804 \\uBB38\\uC81C\\uB85C \\uC774\\uB3D9 (\\uC624\\uB958, \\uACBD\\uACE0, \\uC815\\uBCF4)\",\"\\uC774\\uC804 \\uBB38\\uC81C(&&P)\"],\"vs/editor/contrib/gotoError/browser/gotoErrorWidget\":[\"\\uC624\\uB958\",\"\\uACBD\\uACE0\",\"\\uC815\\uBCF4\",\"\\uD78C\\uD2B8\",\"{1}\\uC758 {0}\\uC785\\uB2C8\\uB2E4. \",\"\\uBB38\\uC81C {1}\\uAC1C \\uC911 {0}\\uAC1C\",\"\\uBB38\\uC81C {1}\\uAC1C \\uC911 {0}\\uAC1C\",\"\\uD3B8\\uC9D1\\uAE30 \\uD45C\\uC2DD \\uD0D0\\uC0C9 \\uC704\\uC82F \\uC624\\uB958 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uB9C8\\uCEE4 \\uD0D0\\uC0C9 \\uC704\\uC82F \\uC624\\uB958 \\uC81C\\uBAA9 \\uBC30\\uACBD.\",\"\\uD3B8\\uC9D1\\uAE30 \\uD45C\\uC2DD \\uD0D0\\uC0C9 \\uC704\\uC82F \\uACBD\\uACE0 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uB9C8\\uCEE4 \\uD0D0\\uC0C9 \\uC704\\uC82F \\uACBD\\uACE0 \\uC81C\\uBAA9 \\uBC30\\uACBD.\",\"\\uD3B8\\uC9D1\\uAE30 \\uD45C\\uC2DD \\uD0D0\\uC0C9 \\uC704\\uC82F \\uC815\\uBCF4 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uB9C8\\uCEE4 \\uD0D0\\uC0C9 \\uC704\\uC82F \\uC815\\uBCF4 \\uC81C\\uBAA9 \\uBC30\\uACBD.\",\"\\uD3B8\\uC9D1\\uAE30 \\uD45C\\uC2DD \\uD0D0\\uC0C9 \\uC704\\uC82F \\uBC30\\uACBD\\uC785\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/gotoSymbol/browser/goToCommands\":[\"\\uD53C\\uD0B9\",\"\\uC815\\uC758\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uC815\\uC758\\uB97C \\uCC3E\\uC744 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC815\\uC758\\uB97C \\uCC3E\\uC744 \\uC218 \\uC5C6\\uC74C\",\"\\uC815\\uC758\\uB85C \\uC774\\uB3D9\",\"\\uC815\\uC758\\uB85C \\uC774\\uB3D9(&&D)\",\"\\uCE21\\uBA74\\uC5D0\\uC11C \\uC815\\uC758 \\uC5F4\\uAE30\",\"\\uC815\\uC758 \\uD53C\\uD0B9\",\"\\uC120\\uC5B8\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uC120\\uC5B8\\uC744 \\uCC3E\\uC744 \\uC218 \\uC5C6\\uC74C\",\"\\uC120\\uC5B8\\uC744 \\uCC3E\\uC744 \\uC218 \\uC5C6\\uC74C\",\"\\uC120\\uC5B8\\uC73C\\uB85C \\uC774\\uB3D9\",\"\\uC120\\uC5B8\\uC73C\\uB85C \\uC774\\uB3D9(&&D)\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uC120\\uC5B8\\uC744 \\uCC3E\\uC744 \\uC218 \\uC5C6\\uC74C\",\"\\uC120\\uC5B8\\uC744 \\uCC3E\\uC744 \\uC218 \\uC5C6\\uC74C\",\"\\uC120\\uC5B8 \\uBBF8\\uB9AC \\uBCF4\\uAE30\",\"\\uD615\\uC2DD \\uC815\\uC758\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uD615\\uC2DD \\uC815\\uC758\\uB97C \\uCC3E\\uC744 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uD615\\uC2DD \\uC815\\uC758\\uB97C \\uCC3E\\uC744 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uD615\\uC2DD \\uC815\\uC758\\uB85C \\uC774\\uB3D9\",\"\\uD615\\uC2DD \\uC815\\uC758\\uB85C \\uC774\\uB3D9(&&T)\",\"\\uD615\\uC2DD \\uC815\\uC758 \\uBBF8\\uB9AC \\uBCF4\\uAE30\",\"\\uAD6C\\uD604\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uAD6C\\uD604\\uC744 \\uCC3E\\uC744 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uAD6C\\uD604\\uC744 \\uCC3E\\uC744 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uAD6C\\uD604\\uC73C\\uB85C \\uC774\\uB3D9\",\"\\uAD6C\\uD604\\uC73C\\uB85C \\uC774\\uB3D9(&&I)\",\"\\uD53C\\uD0B9 \\uAD6C\\uD604\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uCC38\\uC870\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uCC38\\uC870\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uCC38\\uC870\\uB85C \\uC774\\uB3D9\",\"\\uCC38\\uC870\\uB85C \\uC774\\uB3D9(&&R)\",\"\\uCC38\\uC870\",\"\\uCC38\\uC870 \\uBBF8\\uB9AC \\uBCF4\\uAE30\",\"\\uCC38\\uC870\",\"\\uC784\\uC758\\uC758 \\uAE30\\uD638\\uB85C \\uC774\\uB3D9\",\"\\uC704\\uCE58\",\"'{0}'\\uC5D0 \\uB300\\uD55C \\uAC80\\uC0C9 \\uACB0\\uACFC\\uAC00 \\uC5C6\\uC74C\",\"\\uCC38\\uC870\"],\"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\":[\"{0}\\uAC1C \\uC815\\uC758\\uB97C \\uD45C\\uC2DC\\uD558\\uB824\\uBA74 \\uD074\\uB9AD\\uD558\\uC138\\uC694.\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesController\":[\"'\\uCC38\\uC870 \\uD53C\\uD0B9' \\uB610\\uB294 '\\uC815\\uC758 \\uD53C\\uD0B9'\\uACFC \\uAC19\\uC774 \\uCC38\\uC870 \\uD53C\\uD0B9\\uC774 \\uD45C\\uC2DC\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uB85C\\uB4DC \\uC911...\",\"{0}({1})\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\":[\"\\uCC38\\uC870 {0}\\uAC1C\",\"\\uCC38\\uC870 {0}\\uAC1C\",\"\\uCC38\\uC870\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\":[\"\\uBBF8\\uB9AC \\uBCF4\\uAE30\\uB97C \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC74C\",\"\\uACB0\\uACFC \\uC5C6\\uC74C\",\"\\uCC38\\uC870\"],\"vs/editor/contrib/gotoSymbol/browser/referencesModel\":[\"{2} \\uC5F4\\uC5D0 \\uC788\\uB294 {1} \\uD589\\uC758 {0}\\uC5D0\",\"{3} \\uC5F4\\uC5D0\\uC11C {2} \\uD589\\uC758 {1}\\uC5D0 {0}\",\"{0}\\uC758 \\uAE30\\uD638 1\\uAC1C, \\uC804\\uCCB4 \\uACBD\\uB85C {1}\",\"{1}\\uC758 \\uAE30\\uD638 {0}\\uAC1C, \\uC804\\uCCB4 \\uACBD\\uB85C {2}\",\"\\uACB0\\uACFC \\uC5C6\\uC74C\",\"{0}\\uC5D0\\uC11C \\uAE30\\uD638 1\\uAC1C\\uB97C \\uCC3E\\uC558\\uC2B5\\uB2C8\\uB2E4.\",\"{1}\\uC5D0\\uC11C \\uAE30\\uD638 {0}\\uAC1C\\uB97C \\uCC3E\\uC558\\uC2B5\\uB2C8\\uB2E4.\",\"{1}\\uAC1C \\uD30C\\uC77C\\uC5D0\\uC11C \\uAE30\\uD638 {0}\\uAC1C\\uB97C \\uCC3E\\uC558\\uC2B5\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/gotoSymbol/browser/symbolNavigation\":[\"\\uD0A4\\uBCF4\\uB4DC\\uB9CC\\uC73C\\uB85C \\uD0D0\\uC0C9\\uD560 \\uC218 \\uC788\\uB294 \\uAE30\\uD638 \\uC704\\uCE58\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"{1}\\uC758 {0} \\uAE30\\uD638, \\uB2E4\\uC74C\\uC758 \\uACBD\\uC6B0 {2}\",\"{1}\\uC758 \\uAE30\\uD638 {0}\"],\"vs/editor/contrib/hover/browser/hover\":[\"\\uAC00\\uB9AC\\uD0A4\\uAE30 \\uB610\\uB294 \\uD3EC\\uCEE4\\uC2A4 \\uD45C\\uC2DC\",\"\\uC815\\uC758 \\uBBF8\\uB9AC \\uBCF4\\uAE30 \\uAC00\\uB9AC\\uD0A8 \\uD56D\\uBAA9 \\uD45C\\uC2DC\",\"\\uC704\\uB85C \\uC2A4\\uD06C\\uB864 \\uAC00\\uB9AC\\uD0A4\\uAE30\",\"\\uC544\\uB798\\uB85C \\uC2A4\\uD06C\\uB864 \\uAC00\\uB9AC\\uD0A4\\uAE30\",\"\\uC67C\\uCABD\\uC73C\\uB85C \\uC2A4\\uD06C\\uB864 \\uAC00\\uB9AC\\uD0A4\\uAE30\",\"\\uC624\\uB978\\uCABD\\uC73C\\uB85C \\uC2A4\\uD06C\\uB864 \\uAC00\\uB9AC\\uD0A4\\uAE30\",\"\\uD398\\uC774\\uC9C0 \\uC704\\uB85C \\uAC00\\uB9AC\\uD0A4\\uAE30\",\"\\uD398\\uC774\\uC9C0 \\uC544\\uB798\\uCABD \\uAC00\\uB9AC\\uD0A4\\uAE30\",\"\\uC704\\uCABD \\uAC00\\uB9AC\\uD0A4\\uAE30\\uB85C \\uC774\\uB3D9\",\"\\uC544\\uB798\\uCABD \\uAC00\\uB9AC\\uD0A4\\uAE30\\uB85C \\uC774\\uB3D9\"],\"vs/editor/contrib/hover/browser/markdownHoverParticipant\":[\"\\uB85C\\uB4DC \\uC911...\",\"\\uC131\\uB2A5\\uC0C1\\uC758 \\uC774\\uC720\\uB85C \\uAE34 \\uC904\\uB85C \\uC778\\uD574 \\uB80C\\uB354\\uB9C1\\uC774 \\uC77C\\uC2DC \\uC911\\uC9C0\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4. `editor.stopRenderingLineAfter`\\uB97C \\uD1B5\\uD574 \\uAD6C\\uC131\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC131\\uB2A5\\uC0C1\\uC758 \\uC774\\uC720\\uB85C \\uAE34 \\uC904\\uC758 \\uACBD\\uC6B0 \\uD1A0\\uD070\\uD654\\uB97C \\uAC74\\uB108\\uB701\\uB2C8\\uB2E4. \\uC774 \\uD56D\\uBAA9\\uC740 'editor.maxTokenizationLineLength'\\uB97C \\uD1B5\\uD574 \\uAD6C\\uC131\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/hover/browser/markerHoverParticipant\":[\"\\uBB38\\uC81C \\uBCF4\\uAE30\",\"\\uBE60\\uB978 \\uC218\\uC815\\uC744 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC74C\",\"\\uBE60\\uB978 \\uC218\\uC815\\uC744 \\uD655\\uC778\\uD558\\uB294 \\uC911...\",\"\\uBE60\\uB978 \\uC218\\uC815\\uC744 \\uC0AC\\uC6A9\\uD560 \\uC218 \\uC5C6\\uC74C\",\"\\uBE60\\uB978 \\uC218\\uC815...\"],\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\":[\"\\uC774\\uC804 \\uAC12\\uC73C\\uB85C \\uBC14\\uAFB8\\uAE30\",\"\\uB2E4\\uC74C \\uAC12\\uC73C\\uB85C \\uBC14\\uAFB8\\uAE30\"],\"vs/editor/contrib/indentation/browser/indentation\":[\"\\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB97C \\uACF5\\uBC31\\uC73C\\uB85C \\uBCC0\\uD658\",\"\\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB97C \\uD0ED\\uC73C\\uB85C \\uBCC0\\uD658\",\"\\uAD6C\\uC131\\uB41C \\uD0ED \\uD06C\\uAE30\",\"\\uAE30\\uBCF8 \\uD0ED \\uD06C\\uAE30\",\"\\uD604\\uC7AC \\uD0ED \\uD06C\\uAE30\",\"\\uD604\\uC7AC \\uD30C\\uC77C\\uC758 \\uD0ED \\uD06C\\uAE30 \\uC120\\uD0DD\",\"\\uD0ED\\uC744 \\uC0AC\\uC6A9\\uD55C \\uB4E4\\uC5EC\\uC4F0\\uAE30\",\"\\uACF5\\uBC31\\uC744 \\uC0AC\\uC6A9\\uD55C \\uB4E4\\uC5EC\\uC4F0\\uAE30\",\"\\uD0ED \\uD45C\\uC2DC \\uD06C\\uAE30 \\uBCC0\\uACBD\",\"\\uCF58\\uD150\\uCE20\\uC5D0\\uC11C \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uAC10\\uC9C0\",\"\\uC904 \\uB2E4\\uC2DC \\uB4E4\\uC5EC\\uC4F0\\uAE30\",\"\\uC120\\uD0DD\\uD55C \\uC904 \\uB2E4\\uC2DC \\uB4E4\\uC5EC\\uC4F0\\uAE30\"],\"vs/editor/contrib/inlayHints/browser/inlayHintsHover\":[\"\\uC0BD\\uC785\\uD558\\uB824\\uBA74 \\uB450 \\uBC88 \\uD074\\uB9AD\",\"Cmd+\\uD074\\uB9AD\",\"Ctrl+\\uD074\\uB9AD\",\"Option+\\uD074\\uB9AD\",\"Alt+\\uD074\\uB9AD\",\"\\uC815\\uC758({0})\\uB85C \\uC774\\uB3D9\\uD558\\uC5EC \\uC790\\uC138\\uD788 \\uC54C\\uC544\\uBCF4\\uB824\\uBA74 \\uB9C8\\uC6B0\\uC2A4 \\uC624\\uB978\\uCABD \\uB2E8\\uCD94\\uB97C \\uD074\\uB9AD\\uD569\\uB2C8\\uB2E4.\",\"\\uC815\\uC758\\uB85C \\uC774\\uB3D9({0})\",\"\\uBA85\\uB839 \\uC2E4\\uD589\"],\"vs/editor/contrib/inlineCompletions/browser/commands\":[\"\\uB2E4\\uC74C \\uC778\\uB77C\\uC778 \\uC81C\\uC548 \\uD45C\\uC2DC\",\"\\uC774\\uC804 \\uC778\\uB77C\\uC778 \\uC81C\\uC548 \\uD45C\\uC2DC\",\"\\uC778\\uB77C\\uC778 \\uC81C\\uC548 \\uD2B8\\uB9AC\\uAC70\",\"\\uC778\\uB77C\\uC778 \\uC81C\\uC548\\uC758 \\uB2E4\\uC74C \\uB2E8\\uC5B4 \\uC218\\uB77D\",\"\\uB2E8\\uC5B4 \\uC218\\uB77D\",\"\\uC778\\uB77C\\uC778 \\uC81C\\uC548\\uC758 \\uB2E4\\uC74C \\uC904 \\uC218\\uB77D\",\"\\uC904 \\uC218\\uB77D\",\"\\uC778\\uB77C\\uC778 \\uCD94\\uCC9C \\uC218\\uB77D\",\"\\uC218\\uB77D\",\"\\uC778\\uB77C\\uC778 \\uC81C\\uC548 \\uC228\\uAE30\\uAE30\",\"\\uD56D\\uC0C1 \\uB3C4\\uAD6C \\uBAA8\\uC74C \\uD45C\\uC2DC\"],\"vs/editor/contrib/inlineCompletions/browser/hoverParticipant\":[\"\\uC81C\\uC548:\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\":[\"\\uC778\\uB77C\\uC778 \\uC81C\\uC548 \\uD45C\\uC2DC \\uC5EC\\uBD80\",\"\\uC778\\uB77C\\uC778 \\uC81C\\uC548\\uC774 \\uACF5\\uBC31\\uC73C\\uB85C \\uC2DC\\uC791\\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uC778\\uB77C\\uC778 \\uC81C\\uC548\\uC774 \\uD0ED\\uC5D0 \\uC758\\uD574 \\uC0BD\\uC785\\uB418\\uB294 \\uAC83\\uBCF4\\uB2E4 \\uC791\\uC740 \\uACF5\\uBC31\\uC73C\\uB85C \\uC2DC\\uC791\\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD604\\uC7AC \\uC81C\\uC548\\uC5D0 \\uB300\\uD55C \\uC81C\\uC548 \\uD45C\\uC2DC \\uC5EC\\uBD80\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\":[\"Inspect this in the accessible view ({0})\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\":[\"\\uB2E4\\uC74C \\uB9E4\\uAC1C \\uBCC0\\uC218 \\uD78C\\uD2B8 \\uD45C\\uC2DC\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uC774\\uC804 \\uB9E4\\uAC1C \\uBCC0\\uC218 \\uD78C\\uD2B8 \\uD45C\\uC2DC\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"{0}({1})\",\"\\uC774\\uC804\",\"\\uB2E4\\uC74C\"],\"vs/editor/contrib/lineSelection/browser/lineSelection\":[\"\\uC120 \\uC120\\uD0DD \\uC601\\uC5ED \\uD655\\uC7A5\"],\"vs/editor/contrib/linesOperations/browser/linesOperations\":[\"\\uC704\\uC5D0 \\uC904 \\uBCF5\\uC0AC\",\"\\uC704\\uC5D0 \\uC904 \\uBCF5\\uC0AC(&&C)\",\"\\uC544\\uB798\\uC5D0 \\uC904 \\uBCF5\\uC0AC\",\"\\uC544\\uB798\\uC5D0 \\uC904 \\uBCF5\\uC0AC(&&P)\",\"\\uC911\\uBCF5\\uB41C \\uC120\\uD0DD \\uC601\\uC5ED\",\"\\uC911\\uBCF5\\uB41C \\uC120\\uD0DD \\uC601\\uC5ED(&&D)\",\"\\uC904 \\uC704\\uB85C \\uC774\\uB3D9\",\"\\uC904 \\uC704\\uB85C \\uC774\\uB3D9(&&V)\",\"\\uC904 \\uC544\\uB798\\uB85C \\uC774\\uB3D9\",\"\\uC904 \\uC544\\uB798\\uB85C \\uC774\\uB3D9(&&L)\",\"\\uC904\\uC744 \\uC624\\uB984\\uCC28\\uC21C \\uC815\\uB82C\",\"\\uC904\\uC744 \\uB0B4\\uB9BC\\uCC28\\uC21C\\uC73C\\uB85C \\uC815\\uB82C\",\"\\uC911\\uBCF5 \\uB77C\\uC778 \\uC0AD\\uC81C\",\"\\uD6C4\\uD589 \\uACF5\\uBC31 \\uC790\\uB974\\uAE30\",\"\\uC904 \\uC0AD\\uC81C\",\"\\uC904 \\uB4E4\\uC5EC\\uC4F0\\uAE30\",\"\\uC904 \\uB0B4\\uC5B4\\uC4F0\\uAE30\",\"\\uC704\\uC5D0 \\uC904 \\uC0BD\\uC785\",\"\\uC544\\uB798\\uC5D0 \\uC904 \\uC0BD\\uC785\",\"\\uC67C\\uCABD \\uBAA8\\uB450 \\uC0AD\\uC81C\",\"\\uC6B0\\uCE21\\uC5D0 \\uC788\\uB294 \\uD56D\\uBAA9 \\uC0AD\\uC81C\",\"\\uC904 \\uC5F0\\uACB0\",\"\\uCEE4\\uC11C \\uC8FC\\uC704 \\uBB38\\uC790 \\uBC14\\uAFB8\\uAE30\",\"\\uB300\\uBB38\\uC790\\uB85C \\uBCC0\\uD658\",\"\\uC18C\\uBB38\\uC790\\uB85C \\uBCC0\\uD658\",\"\\uB2E8\\uC5B4\\uC758 \\uCCAB \\uAE00\\uC790\\uB97C \\uB300\\uBB38\\uC790\\uB85C \\uBCC0\\uD658\",\"\\uC2A4\\uB124\\uC774\\uD06C \\uD45C\\uAE30\\uBC95\\uC73C\\uB85C \\uBCC0\\uD658\",\"Camel Case\\uB85C \\uBCC0\\uD658\",\"Kebab \\uC0AC\\uB840\\uB85C \\uBCC0\\uD658\"],\"vs/editor/contrib/linkedEditing/browser/linkedEditing\":[\"\\uC5F0\\uACB0\\uB41C \\uD3B8\\uC9D1 \\uC2DC\\uC791\",\"\\uD615\\uC2DD\\uC758 \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC790\\uB3D9\\uC73C\\uB85C \\uC774\\uB984\\uC744 \\uBC14\\uAFC0 \\uB54C\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/links/browser/links\":[\"{0} \\uD615\\uC2DD\\uC774 \\uC62C\\uBC14\\uB974\\uC9C0 \\uC54A\\uC73C\\uBBC0\\uB85C \\uC774 \\uB9C1\\uD06C\\uB97C \\uC5F4\\uC9C0 \\uBABB\\uD588\\uC2B5\\uB2C8\\uB2E4\",\"\\uB300\\uC0C1\\uC774 \\uC5C6\\uC73C\\uBBC0\\uB85C \\uC774 \\uB9C1\\uD06C\\uB97C \\uC5F4\\uC9C0 \\uBABB\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBA85\\uB839 \\uC2E4\\uD589\",\"\\uB9C1\\uD06C\\uB85C \\uC774\\uB3D9\",\"Cmd+\\uD074\\uB9AD\",\"Ctrl+\\uD074\\uB9AD\",\"Option+\\uD074\\uB9AD\",\"Alt+\\uD074\\uB9AD\",\"\\uBA85\\uB839 {0} \\uC2E4\\uD589\",\"\\uB9C1\\uD06C \\uC5F4\\uAE30\"],\"vs/editor/contrib/message/browser/messageController\":[\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uD604\\uC7AC \\uC778\\uB77C\\uC778 \\uBA54\\uC2DC\\uC9C0\\uB97C \\uD45C\\uC2DC\\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\"],\"vs/editor/contrib/multicursor/browser/multicursor\":[\"\\uCEE4\\uC11C\\uAC00 \\uCD94\\uAC00\\uB428: {0}\",\"\\uCEE4\\uC11C\\uAC00 \\uCD94\\uAC00\\uB428: {0}\",\"\\uC704\\uC5D0 \\uCEE4\\uC11C \\uCD94\\uAC00\",\"\\uC704\\uC5D0 \\uCEE4\\uC11C \\uCD94\\uAC00(&&A)\",\"\\uC544\\uB798\\uC5D0 \\uCEE4\\uC11C \\uCD94\\uAC00\",\"\\uC544\\uB798\\uC5D0 \\uCEE4\\uC11C \\uCD94\\uAC00(&&D)\",\"\\uC904 \\uB05D\\uC5D0 \\uCEE4\\uC11C \\uCD94\\uAC00\",\"\\uC904 \\uB05D\\uC5D0 \\uCEE4\\uC11C \\uCD94\\uAC00(&&U)\",\"\\uB9E8 \\uC544\\uB798\\uC5D0 \\uCEE4\\uC11C \\uCD94\\uAC00\",\"\\uB9E8 \\uC704\\uC5D0 \\uCEE4\\uC11C \\uCD94\\uAC00\",\"\\uB2E4\\uC74C \\uC77C\\uCE58 \\uD56D\\uBAA9 \\uCC3E\\uAE30\\uC5D0 \\uC120\\uD0DD \\uD56D\\uBAA9 \\uCD94\\uAC00\",\"\\uB2E4\\uC74C \\uD56D\\uBAA9 \\uCD94\\uAC00(&&N)\",\"\\uC774\\uC804 \\uC77C\\uCE58 \\uD56D\\uBAA9 \\uCC3E\\uAE30\\uC5D0 \\uC120\\uD0DD \\uD56D\\uBAA9 \\uCD94\\uAC00\",\"\\uC774\\uC804 \\uD56D\\uBAA9 \\uCD94\\uAC00(&&R)\",\"\\uB2E4\\uC74C \\uC77C\\uCE58 \\uD56D\\uBAA9 \\uCC3E\\uAE30\\uB85C \\uB9C8\\uC9C0\\uB9C9 \\uC120\\uD0DD \\uD56D\\uBAA9 \\uC774\\uB3D9\",\"\\uB9C8\\uC9C0\\uB9C9 \\uC120\\uD0DD \\uD56D\\uBAA9\\uC744 \\uC774\\uC804 \\uC77C\\uCE58 \\uD56D\\uBAA9 \\uCC3E\\uAE30\\uB85C \\uC774\\uB3D9\",\"\\uC77C\\uCE58 \\uD56D\\uBAA9 \\uCC3E\\uAE30\\uC758 \\uBAA8\\uB4E0 \\uD56D\\uBAA9 \\uC120\\uD0DD\",\"\\uBAA8\\uB4E0 \\uD56D\\uBAA9 \\uC120\\uD0DD(&&O)\",\"\\uBAA8\\uB4E0 \\uD56D\\uBAA9 \\uBCC0\\uACBD\",\"\\uB2E4\\uC74C \\uCEE4\\uC11C \\uD3EC\\uCEE4\\uC2A4\",\"\\uB2E4\\uC74C \\uCEE4\\uC11C\\uC5D0 \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uB9DE\\uCDA5\\uB2C8\\uB2E4.\",\"\\uC774\\uC804 \\uCEE4\\uC11C \\uD3EC\\uCEE4\\uC2A4\",\"\\uC774\\uC804 \\uCEE4\\uC11C\\uC5D0 \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uB9DE\\uCDA5\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/parameterHints/browser/parameterHints\":[\"\\uB9E4\\uAC1C \\uBCC0\\uC218 \\uD78C\\uD2B8 \\uD2B8\\uB9AC\\uAC70\"],\"vs/editor/contrib/parameterHints/browser/parameterHintsWidget\":[\"\\uB2E4\\uC74C \\uB9E4\\uAC1C \\uBCC0\\uC218 \\uD78C\\uD2B8 \\uD45C\\uC2DC\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uC774\\uC804 \\uB9E4\\uAC1C \\uBCC0\\uC218 \\uD78C\\uD2B8 \\uD45C\\uC2DC\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"{0}, \\uD78C\\uD2B8\",\"\\uB9E4\\uAC1C \\uBCC0\\uC218 \\uD78C\\uD2B8\\uC5D0 \\uC788\\uB294 \\uD65C\\uC131 \\uD56D\\uBAA9\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/peekView/browser/peekView\":[\"\\uD604\\uC7AC \\uCF54\\uB4DC \\uD3B8\\uC9D1\\uAE30\\uAC00 \\uD53C\\uD0B9 \\uB0B4\\uBD80\\uC5D0 \\uD3EC\\uD568\\uB418\\uC5C8\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uB2EB\\uAE30\",\"Peek \\uBDF0 \\uC81C\\uBAA9 \\uC601\\uC5ED\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uC81C\\uBAA9 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uC81C\\uBAA9 \\uC815\\uBCF4 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uD14C\\uB450\\uB9AC \\uBC0F \\uD654\\uC0B4\\uD45C \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uACB0\\uACFC \\uBAA9\\uB85D\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uACB0\\uACFC \\uBAA9\\uB85D\\uC5D0\\uC11C \\uB77C\\uC778 \\uB178\\uB4DC\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uACB0\\uACFC \\uBAA9\\uB85D\\uC5D0\\uC11C \\uD30C\\uC77C \\uB178\\uB4DC\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uACB0\\uACFC \\uBAA9\\uB85D\\uC5D0\\uC11C \\uC120\\uD0DD\\uB41C \\uD56D\\uBAA9\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uACB0\\uACFC \\uBAA9\\uB85D\\uC5D0\\uC11C \\uC120\\uD0DD\\uB41C \\uD56D\\uBAA9\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uD3B8\\uC9D1\\uAE30\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uD3B8\\uC9D1\\uAE30\\uC758 \\uAC70\\uD130 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD53C\\uD0B9 \\uBDF0 \\uD3B8\\uC9D1\\uAE30\\uC758 \\uACE0\\uC815 \\uC2A4\\uD06C\\uB864 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uACB0\\uACFC \\uBAA9\\uB85D\\uC758 \\uC77C\\uCE58 \\uD56D\\uBAA9 \\uAC15\\uC870 \\uD45C\\uC2DC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uD3B8\\uC9D1\\uAE30\\uC758 \\uC77C\\uCE58 \\uD56D\\uBAA9 \\uAC15\\uC870 \\uD45C\\uC2DC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"Peek \\uBDF0 \\uD3B8\\uC9D1\\uAE30\\uC758 \\uC77C\\uCE58 \\uD56D\\uBAA9 \\uAC15\\uC870 \\uD45C\\uC2DC \\uD14C\\uB450\\uB9AC\\uC785\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\":[\"\\uC6B0\\uC120 \\uD14D\\uC2A4\\uD2B8 \\uD3B8\\uC9D1\\uAE30\\uB97C \\uC5F4\\uACE0 \\uC904\\uB85C \\uC774\\uB3D9\\uD569\\uB2C8\\uB2E4.\",\"\\uC904 {0} \\uBC0F \\uBB38\\uC790 {1}(\\uC73C)\\uB85C \\uC774\\uB3D9\\uD569\\uB2C8\\uB2E4.\",\"{0} \\uC904\\uB85C \\uC774\\uB3D9\\uD569\\uB2C8\\uB2E4.\",\"\\uD604\\uC7AC \\uC904: {0}, \\uBB38\\uC790: {1} \\uC774\\uB3D9\\uD560 \\uC904 1~{2} \\uC0AC\\uC774\\uC758 \\uBC88\\uD638\\uB97C \\uC785\\uB825\\uD569\\uB2C8\\uB2E4.\",\"\\uD604\\uC7AC \\uC904: {0}, \\uBB38\\uC790: {1}. \\uC774\\uB3D9\\uD560 \\uC904 \\uBC88\\uD638\\uB97C \\uC785\\uB825\\uD569\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\":[\"\\uAE30\\uD638\\uB85C \\uC774\\uB3D9\\uD558\\uB824\\uBA74 \\uBA3C\\uC800 \\uAE30\\uD638 \\uC815\\uBCF4\\uAC00 \\uC788\\uB294 \\uD14D\\uC2A4\\uD2B8 \\uD3B8\\uC9D1\\uAE30\\uB97C \\uC5FD\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC758 \\uD14D\\uC2A4\\uD2B8 \\uD3B8\\uC9D1\\uAE30\\uB294 \\uAE30\\uD638 \\uC815\\uBCF4\\uB97C \\uC81C\\uACF5\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC77C\\uCE58\\uD558\\uB294 \\uD3B8\\uC9D1\\uAE30 \\uAE30\\uD638 \\uC5C6\\uC74C\",\"\\uD3B8\\uC9D1\\uAE30 \\uAE30\\uD638 \\uC5C6\\uC74C\",\"\\uCE21\\uBA74\\uC5D0\\uC11C \\uC5F4\\uAE30\",\"\\uD558\\uB2E8\\uC5D0 \\uC5F4\\uAE30\",\"\\uAE30\\uD638({0})\",\"\\uC18D\\uC131({0})\",\"\\uBA54\\uC11C\\uB4DC({0})\",\"\\uD568\\uC218({0})\",\"\\uC0DD\\uC131\\uC790({0})\",\"\\uBCC0\\uC218({0})\",\"\\uD074\\uB798\\uC2A4({0})\",\"\\uAD6C\\uC870\\uCCB4({0})\",\"\\uC774\\uBCA4\\uD2B8({0})\",\"\\uC5F0\\uC0B0\\uC790({0})\",\"\\uC778\\uD130\\uD398\\uC774\\uC2A4({0})\",\"\\uB124\\uC784\\uC2A4\\uD398\\uC774\\uC2A4({0})\",\"\\uD328\\uD0A4\\uC9C0({0})\",\"\\uD615\\uC2DD \\uB9E4\\uAC1C \\uBCC0\\uC218({0})\",\"\\uBAA8\\uB4C8({0})\",\"\\uC18D\\uC131({0})\",\"\\uC5F4\\uAC70\\uD615({0})\",\"\\uC5F4\\uAC70\\uD615 \\uBA64\\uBC84({0})\",\"\\uBB38\\uC790\\uC5F4({0})\",\"\\uD30C\\uC77C({0})\",\"\\uBC30\\uC5F4({0})\",\"\\uC22B\\uC790({0})\",\"\\uBD80\\uC6B8({0})\",\"\\uAC1C\\uCCB4({0})\",\"\\uD0A4({0})\",\"\\uD544\\uB4DC({0})\",\"\\uC0C1\\uC218({0})\"],\"vs/editor/contrib/readOnlyMessage/browser/contribution\":[\"\\uC77D\\uAE30 \\uC804\\uC6A9 \\uC785\\uB825\\uC5D0\\uC11C\\uB294 \\uD3B8\\uC9D1\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC77D\\uAE30 \\uC804\\uC6A9 \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C\\uB294 \\uD3B8\\uC9D1\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/rename/browser/rename\":[\"\\uACB0\\uACFC\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC704\\uCE58 \\uC774\\uB984\\uC744 \\uBC14\\uAFB8\\uB294 \\uC911 \\uC54C \\uC218 \\uC5C6\\uB294 \\uC624\\uB958\\uAC00 \\uBC1C\\uC0DD\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\"'{0}'\\uC5D0\\uC11C '{1}'(\\uC73C)\\uB85C \\uC774\\uB984\\uC744 \\uBC14\\uAFB8\\uB294 \\uC911\",\"{1}\\uC5D0 {0} \\uC774\\uB984 \\uBC14\\uAFB8\\uAE30\",\"'{0}'\\uC744(\\uB97C) '{1}'(\\uC73C)\\uB85C \\uC774\\uB984\\uC744 \\uBCC0\\uACBD\\uD588\\uC2B5\\uB2C8\\uB2E4. \\uC694\\uC57D: {2}\",\"\\uC774\\uB984 \\uBC14\\uAFB8\\uAE30\\uB97C \\uD1B5\\uD574 \\uD3B8\\uC9D1 \\uB0B4\\uC6A9\\uC744 \\uC801\\uC6A9\\uD558\\uC9C0 \\uBABB\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC774\\uB984 \\uBC14\\uAFB8\\uAE30\\uB97C \\uD1B5\\uD574 \\uD3B8\\uC9D1 \\uB0B4\\uC6A9\\uC744 \\uACC4\\uC0B0\\uD558\\uC9C0 \\uBABB\\uD588\\uC2B5\\uB2C8\\uB2E4.\",\"\\uAE30\\uD638 \\uC774\\uB984 \\uBC14\\uAFB8\\uAE30\",\"\\uC774\\uB984\\uC744 \\uBC14\\uAFB8\\uAE30 \\uC804\\uC5D0 \\uBCC0\\uACBD \\uB0B4\\uC6A9\\uC744 \\uBBF8\\uB9AC \\uBCFC \\uC218 \\uC788\\uB294 \\uAE30\\uB2A5 \\uC0AC\\uC6A9/\\uC0AC\\uC6A9 \\uC548 \\uD568\"],\"vs/editor/contrib/rename/browser/renameInputField\":[\"\\uC785\\uB825 \\uC774\\uB984 \\uBC14\\uAFB8\\uAE30 \\uC704\\uC82F\\uC774 \\uD45C\\uC2DC\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uC785\\uB825 \\uC774\\uB984\\uC744 \\uBC14\\uAFB8\\uC138\\uC694. \\uC0C8 \\uC774\\uB984\\uC744 \\uC785\\uB825\\uD55C \\uB2E4\\uC74C [Enter] \\uD0A4\\uB97C \\uB20C\\uB7EC \\uCEE4\\uBC0B\\uD558\\uC138\\uC694.\",\"\\uC774\\uB984 \\uBC14\\uAFB8\\uAE30 {0}, \\uBBF8\\uB9AC \\uBCF4\\uAE30 {1}\"],\"vs/editor/contrib/smartSelect/browser/smartSelect\":[\"\\uC120\\uD0DD \\uC601\\uC5ED \\uD655\\uC7A5\",\"\\uC120\\uD0DD \\uC601\\uC5ED \\uD655\\uC7A5(&&E)\",\"\\uC120\\uD0DD \\uC601\\uC5ED \\uCD95\\uC18C\",\"\\uC120\\uD0DD \\uC601\\uC5ED \\uCD95\\uC18C(&&S)\"],\"vs/editor/contrib/snippet/browser/snippetController2\":[\"\\uD604\\uC7AC \\uD3B8\\uC9D1\\uAE30\\uAC00 \\uCF54\\uB4DC \\uC870\\uAC01 \\uBAA8\\uB4DC\\uC778\\uC9C0 \\uC5EC\\uBD80\",\"\\uCF54\\uB4DC \\uC870\\uAC01 \\uBAA8\\uB4DC\\uC77C \\uB54C \\uB2E4\\uC74C \\uD0ED \\uC815\\uC9C0\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uCF54\\uB4DC \\uC870\\uAC01 \\uBAA8\\uB4DC\\uC77C \\uB54C \\uC774\\uC804 \\uD0ED \\uC815\\uC9C0\\uAC00 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uB2E4\\uC74C \\uC790\\uB9AC \\uD45C\\uC2DC\\uC790\\uB85C \\uC774\\uB3D9...\"],\"vs/editor/contrib/snippet/browser/snippetVariables\":[\"\\uC77C\\uC694\\uC77C\",\"\\uC6D4\\uC694\\uC77C\",\"\\uD654\\uC694\\uC77C\",\"\\uC218\\uC694\\uC77C\",\"\\uBAA9\\uC694\\uC77C\",\"\\uAE08\\uC694\\uC77C\",\"\\uD1A0\\uC694\\uC77C\",\"\\uC77C\",\"\\uC6D4\",\"\\uD654\",\"\\uC218\",\"\\uBAA9\",\"\\uAE08\",\"\\uD1A0\",\"1\\uC6D4\",\"2\\uC6D4\",\"3\\uC6D4\",\"4\\uC6D4\",\"5\\uC6D4\",\"6\\uC6D4\",\"7\\uC6D4\",\"8\\uC6D4\",\"9\\uC6D4\",\"10\\uC6D4\",\"11\\uC6D4\",\"12\\uC6D4\",\"1\\uC6D4\",\"2\\uC6D4\",\"3\\uC6D4\",\"4\\uC6D4\",\"5\\uC6D4\",\"6\\uC6D4\",\"7\\uC6D4\",\"8\\uC6D4\",\"9\\uC6D4\",\"10\\uC6D4\",\"11\\uC6D4\",\"12\\uC6D4\"],\"vs/editor/contrib/stickyScroll/browser/stickyScrollActions\":[\"\\uACE0\\uC815 \\uC2A4\\uD06C\\uB864 \\uD1A0\\uAE00\",\"\\uACE0\\uC815 \\uC2A4\\uD06C\\uB864 \\uD1A0\\uAE00(&&T)\",\"\\uACE0\\uC815 \\uC2A4\\uD06C\\uB864\",\"\\uACE0\\uC815 \\uC2A4\\uD06C\\uB864(&&S)\",\"\\uACE0\\uC815 \\uC2A4\\uD06C\\uB864 \\uD3EC\\uCEE4\\uC2A4\",\"\\uACE0\\uC815 \\uC2A4\\uD06C\\uB864 \\uD3EC\\uCEE4\\uC2A4(&&F)\",\"\\uB2E4\\uC74C \\uACE0\\uC815 \\uC2A4\\uD06C\\uB864 \\uC120 \\uC120\\uD0DD\",\"\\uC774\\uC804 \\uACE0\\uC815 \\uC2A4\\uD06C\\uB864 \\uC120 \\uC120\\uD0DD\",\"\\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uACE0\\uC815 \\uC2A4\\uD06C\\uB864 \\uC120\\uC73C\\uB85C \\uC774\\uB3D9\",\"\\uD3B8\\uC9D1\\uAE30 \\uC120\\uD0DD\"],\"vs/editor/contrib/suggest/browser/suggest\":[\"\\uC81C\\uC548\\uC5D0 \\uCD08\\uC810\\uC744 \\uB9DE\\uCD94\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uC81C\\uC548 \\uC138\\uBD80 \\uC815\\uBCF4\\uAC00 \\uD45C\\uC2DC\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uC120\\uD0DD\\uD560 \\uC218 \\uC788\\uB294 \\uC5EC\\uB7EC \\uC81C\\uC548\\uC774 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD604\\uC7AC \\uC81C\\uC548\\uC744 \\uC0BD\\uC785\\uD558\\uBA74 \\uBCC0\\uACBD \\uB0B4\\uC6A9\\uC774 \\uC0DD\\uC131\\uB418\\uB294\\uC9C0 \\uB610\\uB294 \\uBAA8\\uB4E0 \\uD56D\\uBAA9\\uC774 \\uC774\\uBBF8 \\uC785\\uB825\\uB418\\uC5C8\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"<Enter> \\uD0A4\\uB97C \\uB204\\uB97C \\uB54C \\uC81C\\uC548\\uC774 \\uC0BD\\uC785\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uD604\\uC7AC \\uC81C\\uC548\\uC5D0 \\uC0BD\\uC785 \\uBC0F \\uBC14\\uAFB8\\uAE30 \\uB3D9\\uC791\\uC774 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\",\"\\uAE30\\uBCF8 \\uB3D9\\uC791\\uC774 \\uC0BD\\uC785\\uC778\\uC9C0 \\uB610\\uB294 \\uBC14\\uAFB8\\uAE30\\uC778\\uC9C0 \\uC5EC\\uBD80\",\"\\uD604\\uC7AC \\uC81C\\uC548\\uC5D0\\uC11C \\uCD94\\uAC00 \\uC138\\uBD80 \\uC815\\uBCF4\\uB97C \\uD655\\uC778\\uD558\\uB3C4\\uB85D \\uC9C0\\uC6D0\\uD558\\uB294\\uC9C0 \\uC5EC\\uBD80\"],\"vs/editor/contrib/suggest/browser/suggestController\":[\"{0}\\uC758 {1}\\uAC1C\\uC758 \\uC218\\uC815\\uC0AC\\uD56D\\uC744 \\uC218\\uB77D\\uD558\\uB294 \\uC911\",\"\\uC81C\\uC548 \\uD56D\\uBAA9 \\uD2B8\\uB9AC\\uAC70\",\"\\uC0BD\\uC785\",\"\\uC0BD\\uC785\",\"\\uBC14\\uAFB8\\uAE30\",\"\\uBC14\\uAFB8\\uAE30\",\"\\uC0BD\\uC785\",\"\\uAC04\\uB2E8\\uD788 \\uD45C\\uC2DC\",\"\\uB354 \\uBCF4\\uAE30\",\"\\uC81C\\uC548 \\uC704\\uC82F \\uD06C\\uAE30 \\uB2E4\\uC2DC \\uC124\\uC815\"],\"vs/editor/contrib/suggest/browser/suggestWidget\":[\"\\uC81C\\uC548 \\uC704\\uC82F\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC81C\\uC548 \\uC704\\uC82F\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC81C\\uC548 \\uC704\\uC82F\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC81C\\uD55C \\uC704\\uC82F\\uC5D0\\uC11C \\uC120\\uD0DD\\uB41C \\uD56D\\uBAA9\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC81C\\uD55C \\uC704\\uC82F\\uC5D0\\uC11C \\uC120\\uD0DD\\uB41C \\uD56D\\uBAA9\\uC758 \\uC544\\uC774\\uCF58 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC81C\\uD55C \\uC704\\uC82F\\uC5D0\\uC11C \\uC120\\uD0DD\\uB41C \\uD56D\\uBAA9\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC81C\\uC548 \\uC704\\uC82F\\uC758 \\uC77C\\uCE58 \\uD56D\\uBAA9 \\uAC15\\uC870 \\uD45C\\uC2DC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD56D\\uBAA9\\uC5D0 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uC744 \\uB54C \\uCD94\\uCC9C \\uC704\\uC82F\\uC5D0\\uC11C \\uC77C\\uCE58\\uD558\\uB294 \\uD56D\\uBAA9\\uC758 \\uC0C9\\uC774 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC81C\\uC548 \\uC704\\uC82F \\uC0C1\\uD0DC\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB85C\\uB4DC \\uC911...\",\"\\uC81C\\uC548 \\uD56D\\uBAA9\\uC774 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC81C\\uC548\",\"{0} {1}, {2}\",\"{0} {1}\",\"{0}, {1}\",\"{0}, \\uBB38\\uC11C: {1}\"],\"vs/editor/contrib/suggest/browser/suggestWidgetDetails\":[\"\\uB2EB\\uAE30\",\"\\uB85C\\uB4DC \\uC911...\"],\"vs/editor/contrib/suggest/browser/suggestWidgetRenderer\":[\"\\uC81C\\uC548 \\uC704\\uC82F\\uC5D0\\uC11C \\uC790\\uC138\\uD55C \\uC815\\uBCF4\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uC790\\uC138\\uD55C \\uC815\\uBCF4\"],\"vs/editor/contrib/suggest/browser/suggestWidgetStatus\":[\"{0}({1})\"],\"vs/editor/contrib/symbolIcons/browser/symbolIcons\":[\"\\uBC30\\uC5F4 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uBD80\\uC6B8 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uD074\\uB798\\uC2A4 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uC0C9 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC0C1\\uC218 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uC0DD\\uC131\\uC790 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC5F4\\uAC70\\uC790 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uC5F4\\uAC70\\uC790 \\uBA64\\uBC84 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uC774\\uBCA4\\uD2B8 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uD544\\uB4DC \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uD30C\\uC77C \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uD3F4\\uB354 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uD568\\uC218 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uC778\\uD130\\uD398\\uC774\\uC2A4 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uD0A4 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uD0A4\\uC6CC\\uB4DC \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uBA54\\uC11C\\uB4DC \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uBAA8\\uB4C8 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uB124\\uC784\\uC2A4\\uD398\\uC774\\uC2A4 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"null \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uC22B\\uC790 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uAC1C\\uCCB4 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uC5F0\\uC0B0\\uC790 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uD328\\uD0A4\\uC9C0 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uC18D\\uC131 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uCC38\\uC870 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uCF54\\uB4DC \\uC870\\uAC01 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uBB38\\uC790\\uC5F4 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uAD6C\\uC870 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uD14D\\uC2A4\\uD2B8 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uB098\\uD0C0\\uB0A9\\uB2C8\\uB2E4.\",\"\\uD615\\uC2DD \\uB9E4\\uAC1C\\uBCC0\\uC218 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uB2E8\\uC704 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\",\"\\uBCC0\\uC218 \\uAE30\\uD638\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774\\uB7EC\\uD55C \\uAE30\\uD638\\uB294 \\uAC1C\\uC694, \\uC774\\uB3D9 \\uACBD\\uB85C \\uBC0F \\uC81C\\uC548 \\uC704\\uC82F\\uC5D0 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\":[\"<Tab> \\uD0A4\\uB85C \\uD3EC\\uCEE4\\uC2A4 \\uC774\\uB3D9 \\uC124\\uC815/\\uD574\\uC81C\",\"\\uC774\\uC81C <Tab> \\uD0A4\\uB97C \\uB204\\uB974\\uBA74 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uB2E4\\uC74C \\uD3EC\\uCEE4\\uC2A4 \\uAC00\\uB2A5\\uD55C \\uC694\\uC18C\\uB85C \\uC774\\uB3D9\\uD569\\uB2C8\\uB2E4.\",\"\\uC774\\uC81C <Tab> \\uD0A4\\uB97C \\uB204\\uB974\\uBA74 \\uD0ED \\uBB38\\uC790\\uAC00 \\uC0BD\\uC785\\uB429\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/tokenization/browser/tokenization\":[\"\\uAC1C\\uBC1C\\uC790: \\uAC15\\uC81C\\uB85C \\uB2E4\\uC2DC \\uD1A0\\uD070\\uD654\"],\"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\":[\"\\uD655\\uC7A5 \\uD3B8\\uC9D1\\uAE30\\uC5D0 \\uACBD\\uACE0 \\uBA54\\uC2DC\\uC9C0\\uC640 \\uD568\\uAED8 \\uD45C\\uC2DC\\uB418\\uB294 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uC774 \\uBB38\\uC11C\\uC5D0\\uB294 \\uAE30\\uBCF8 ASCII \\uC720\\uB2C8\\uCF54\\uB4DC \\uBB38\\uC790\\uAC00 \\uC544\\uB2CC \\uBB38\\uC790\\uAC00 \\uB9CE\\uC774 \\uD3EC\\uD568\\uB418\\uC5B4 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC774 \\uBB38\\uC11C\\uC5D0\\uB294 \\uBAA8\\uD638\\uD55C \\uC720\\uB2C8\\uCF54\\uB4DC \\uBB38\\uC790\\uAC00 \\uB9CE\\uC774 \\uD3EC\\uD568\\uB418\\uC5B4 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC774 \\uBB38\\uC11C\\uC5D0\\uB294 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uB294 \\uC720\\uB2C8\\uCF54\\uB4DC \\uBB38\\uC790\\uAC00 \\uB9CE\\uC774 \\uD3EC\\uD568\\uB418\\uC5B4 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBB38\\uC790 {0}\\uC740(\\uB294) \\uC18C\\uC2A4 \\uCF54\\uB4DC\\uC5D0\\uC11C \\uB354 \\uC77C\\uBC18\\uC801\\uC778 ASCII \\uBB38\\uC790 {1}\\uACFC(\\uC640) \\uD63C\\uB3D9\\uB420 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"{0} \\uBB38\\uC790\\uB294 \\uC18C\\uC2A4 \\uCF54\\uB4DC\\uC5D0\\uC11C \\uB354 \\uC77C\\uBC18\\uC801\\uC778 {1} \\uBB38\\uC790\\uC640 \\uD63C\\uB3D9\\uB420 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"{0} \\uBB38\\uC790\\uAC00 \\uBCF4\\uC774\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"{0} \\uBB38\\uC790\\uB294 \\uAE30\\uBCF8 ASCII \\uBB38\\uC790\\uAC00 \\uC544\\uB2D9\\uB2C8\\uB2E4.\",\"\\uC124\\uC815 \\uC870\\uC815\",\"\\uBA54\\uBAA8\\uC5D0\\uC11C \\uAC15\\uC870 \\uD45C\\uC2DC \\uC0AC\\uC6A9 \\uC548 \\uD568\",\"\\uBA54\\uBAA8\\uC5D0\\uC11C \\uBB38\\uC790 \\uAC15\\uC870 \\uD45C\\uC2DC \\uC0AC\\uC6A9 \\uC548 \\uD568\",\"\\uBB38\\uC790\\uC5F4\\uC5D0\\uC11C \\uAC15\\uC870 \\uD45C\\uC2DC \\uC0AC\\uC6A9 \\uC548 \\uD568\",\"\\uBB38\\uC790\\uC5F4\\uC5D0\\uC11C \\uBB38\\uC790 \\uAC15\\uC870 \\uD45C\\uC2DC \\uC0AC\\uC6A9 \\uC548 \\uD568\",\"\\uBAA8\\uD638\\uD55C \\uAC15\\uC870 \\uC0AC\\uC6A9 \\uC548 \\uD568\",\"\\uBAA8\\uD638\\uD55C \\uBB38\\uC790 \\uAC15\\uC870 \\uD45C\\uC2DC \\uC0AC\\uC6A9 \\uC548 \\uD568\",\"\\uBCF4\\uC774\\uC9C0 \\uC54A\\uB294 \\uAC15\\uC870 \\uC0AC\\uC6A9 \\uC548 \\uD568\",\"\\uBCF4\\uC774\\uC9C0 \\uC54A\\uB294 \\uBB38\\uC790 \\uAC15\\uC870 \\uD45C\\uC2DC \\uC0AC\\uC6A9 \\uC548 \\uD568\",\"ASCII\\uAC00 \\uBB38\\uC790\\uAC00 \\uC544\\uB2CC \\uAC15\\uC870 \\uC0AC\\uC6A9 \\uC548 \\uD568\",\"\\uAE30\\uBCF8\\uC774 \\uC544\\uB2CC ASCII \\uBB38\\uC790 \\uAC15\\uC870 \\uD45C\\uC2DC \\uC0AC\\uC6A9 \\uC548 \\uD568\",\"\\uC81C\\uC678 \\uC635\\uC158 \\uD45C\\uC2DC\",\"{0}(\\uBCF4\\uC774\\uC9C0 \\uC54A\\uB294 \\uBB38\\uC790)\\uC774(\\uAC00) \\uAC15\\uC870 \\uD45C\\uC2DC\\uB418\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC81C\\uC678\",\"\\uAC15\\uC870 \\uD45C\\uC2DC\\uC5D0\\uC11C {0} \\uC81C\\uC678\",'\\uC5B8\\uC5B4 \"{0}\"\\uC5D0\\uC11C \\uB354 \\uC77C\\uBC18\\uC801\\uC778 \\uC720\\uB2C8\\uCF54\\uB4DC \\uBB38\\uC790\\uB97C \\uD5C8\\uC6A9\\uD569\\uB2C8\\uB2E4.',\"\\uC720\\uB2C8\\uCF54\\uB4DC \\uAC15\\uC870 \\uD45C\\uC2DC \\uC635\\uC158 \\uAD6C\\uC131\"],\"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\":[\"\\uBE44\\uC815\\uC0C1\\uC801\\uC778 \\uC904 \\uC885\\uACB0\\uC790\",\"\\uBE44\\uC815\\uC0C1\\uC801\\uC778 \\uC904 \\uC885\\uACB0\\uC790\\uAC00 \\uAC80\\uC0C9\\uB428\",\"\\uC774 \\uD30C\\uC77C \\u2018\\r\\n\\u2019\\uC5D0 LS(\\uC904 \\uAD6C\\uBD84 \\uAE30\\uD638) \\uB610\\uB294 PS(\\uB2E8\\uB77D \\uAD6C\\uBD84 \\uAE30\\uD638) \\uAC19\\uC740 \\uD558\\uB098 \\uC774\\uC0C1\\uC758 \\uBE44\\uC815\\uC0C1\\uC801\\uC778 \\uC904 \\uC885\\uACB0\\uC790 \\uBB38\\uC790\\uAC00 \\uD3EC\\uD568\\uB418\\uC5B4 \\uC788\\uC2B5\\uB2C8\\uB2E4.{0}\\r\\n\\uD30C\\uC77C\\uC5D0\\uC11C \\uC81C\\uAC70\\uD558\\uB294 \\uAC83\\uC774 \\uC88B\\uC2B5\\uB2C8\\uB2E4. `editor.unusualLineTerminators`\\uB97C \\uD1B5\\uD574 \\uAD6C\\uC131\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBE44\\uC815\\uC0C1\\uC801\\uC778 \\uC904 \\uC885\\uACB0\\uC790 \\uC81C\\uAC70(&&R)\",\"\\uBB34\\uC2DC\"],\"vs/editor/contrib/wordHighlighter/browser/highlightDecorations\":[\"\\uBCC0\\uC218 \\uC77D\\uAE30\\uC640 \\uAC19\\uC740 \\uC77D\\uAE30 \\uC561\\uC138\\uC2A4 \\uC911 \\uAE30\\uD638\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uBCC0\\uC218\\uC5D0 \\uC4F0\\uAE30\\uC640 \\uAC19\\uC740 \\uC4F0\\uAE30 \\uC561\\uC138\\uC2A4 \\uC911 \\uAE30\\uD638\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uAE30\\uD638\\uC5D0 \\uB300\\uD55C \\uD14D\\uC2A4\\uD2B8 \\uD56D\\uBAA9\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uBCC0\\uC218 \\uC77D\\uAE30\\uC640 \\uAC19\\uC740 \\uC77D\\uAE30 \\uC561\\uC138\\uC2A4 \\uC911 \\uAE30\\uD638\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBCC0\\uC218\\uC5D0 \\uC4F0\\uAE30\\uC640 \\uAC19\\uC740 \\uC4F0\\uAE30 \\uC561\\uC138\\uC2A4 \\uC911 \\uAE30\\uD638\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uAE30\\uD638\\uC5D0 \\uB300\\uD55C \\uD14D\\uC2A4\\uD2B8 \\uD56D\\uBAA9\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uAE30\\uD638 \\uAC15\\uC870 \\uD45C\\uC2DC\\uC758 \\uAC1C\\uC694 \\uB208\\uAE08\\uC790 \\uD45C\\uC2DD \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC4F0\\uAE30 \\uC561\\uC138\\uC2A4 \\uAE30\\uD638\\uC5D0 \\uB300\\uD55C \\uAC1C\\uC694 \\uB208\\uAE08\\uC790 \\uD45C\\uC2DD \\uC0C9\\uC774 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uAE30\\uD638\\uC5D0 \\uB300\\uD55C \\uD14D\\uC2A4\\uD2B8 \\uD56D\\uBAA9\\uC758 \\uAC1C\\uC694 \\uB208\\uAE08\\uC790 \\uB9C8\\uCEE4 \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\"],\"vs/editor/contrib/wordHighlighter/browser/wordHighlighter\":[\"\\uB2E4\\uC74C \\uAC15\\uC870 \\uAE30\\uD638\\uB85C \\uC774\\uB3D9\",\"\\uC774\\uC804 \\uAC15\\uC870 \\uAE30\\uD638\\uB85C \\uC774\\uB3D9\",\"\\uAE30\\uD638 \\uAC15\\uC870 \\uD45C\\uC2DC \\uD2B8\\uB9AC\\uAC70\"],\"vs/editor/contrib/wordOperations/browser/wordOperations\":[\"\\uB2E8\\uC5B4 \\uC0AD\\uC81C\"],\"vs/platform/action/common/actionCommonCategories\":[\"\\uBCF4\\uAE30\",\"\\uB3C4\\uC6C0\\uB9D0\",\"\\uD14C\\uC2A4\\uD2B8\",\"\\uD30C\\uC77C\",\"\\uAE30\\uBCF8 \\uC124\\uC815\",\"\\uAC1C\\uBC1C\\uC790\"],\"vs/platform/actionWidget/browser/actionList\":[\"\\uC801\\uC6A9\\uD558\\uB824\\uBA74 {0}, \\uBBF8\\uB9AC \\uBCF4\\uAE30\\uB97C \\uBCF4\\uB824\\uBA74 {1}\",\"\\uC2E0\\uCCAD\\uD558\\uB824\\uBA74 {0}\",\"{0}, \\uC0AC\\uC6A9 \\uC548 \\uD568 \\uC774\\uC720: {1}\",\"\\uC791\\uC5C5 \\uC704\\uC82F\"],\"vs/platform/actionWidget/browser/actionWidget\":[\"Background color for toggled action items in action bar.\",\"\\uC791\\uC5C5 \\uC704\\uC82F \\uBAA9\\uB85D \\uD45C\\uC2DC \\uC5EC\\uBD80\",\"\\uC791\\uC5C5 \\uC704\\uC82F \\uC228\\uAE30\\uAE30\",\"\\uC774\\uC804 \\uC791\\uC5C5 \\uC120\\uD0DD\",\"\\uB2E4\\uC74C \\uC791\\uC5C5 \\uC120\\uD0DD\",\"\\uC120\\uD0DD\\uD55C \\uC791\\uC5C5 \\uC218\\uB77D\",\"\\uC120\\uD0DD\\uD55C \\uC791\\uC5C5 \\uBBF8\\uB9AC \\uBCF4\\uAE30\"],\"vs/platform/actions/browser/menuEntryActionViewItem\":[\"{0}({1})\",\"{0}({1})\",`{0}\\r\n[{1}] {2}`],\"vs/platform/actions/browser/toolbar\":[\"\\uC228\\uAE30\\uAE30\",\"\\uBA54\\uB274 \\uB2E4\\uC2DC \\uC124\\uC815\"],\"vs/platform/actions/common/menuService\":[\"'{0}' \\uC228\\uAE30\\uAE30\"],\"vs/platform/audioCues/browser/audioCueService\":[\"\\uC904\\uC5D0 \\uB300\\uD55C \\uC624\\uB958\",\"\\uC904\\uC5D0 \\uB300\\uD55C \\uACBD\\uACE0\",\"\\uC904\\uC758 \\uC811\\uD78C \\uBD80\\uBD84\",\"\\uC904\\uC758 \\uC911\\uB2E8\\uC810\",\"\\uC904\\uC758 \\uC778\\uB77C\\uC778 \\uC81C\\uC548\",\"\\uD130\\uBBF8\\uB110 \\uBE60\\uB978 \\uC218\\uC815\",\"\\uC911\\uB2E8\\uC810\\uC5D0\\uC11C \\uC911\\uC9C0\\uB41C \\uB514\\uBC84\\uAC70\",\"\\uC904\\uC758 \\uC778\\uB808\\uC774 \\uD78C\\uD2B8 \\uC5C6\\uC74C\",\"\\uC644\\uB8CC\\uB41C \\uC791\\uC5C5\",\"\\uC791\\uC5C5 \\uC2E4\\uD328\",\"\\uD130\\uBBF8\\uB110 \\uBA85\\uB839 \\uC2E4\\uD328\",\"\\uD130\\uBBF8\\uB110 \\uBCA8\",\"Notebook \\uC140 \\uC644\\uB8CC\\uB428\",\"Notebook \\uC140 \\uC2E4\\uD328\",\"Diff \\uC904 \\uC0BD\\uC785\\uB428\",\"Diff \\uC904 \\uC0AD\\uC81C\\uB428\",\"Diff \\uC904 \\uC218\\uC815\\uB428\",\"\\uCC44\\uD305 \\uC694\\uCCAD \\uC804\\uC1A1\\uB428\",\"\\uCC44\\uD305 \\uC751\\uB2F5 \\uC218\\uC2E0\\uB428\",\"\\uCC44\\uD305 \\uC751\\uB2F5 \\uB300\\uAE30 \\uC911\"],\"vs/platform/configuration/common/configurationRegistry\":[\"\\uAE30\\uBCF8 \\uC5B8\\uC5B4 \\uAD6C\\uC131 \\uC7AC\\uC815\\uC758\",\"{0}\\uC5D0\\uC11C \\uC7AC\\uC815\\uC758\\uD560 \\uC124\\uC815\\uC744 \\uAD6C\\uC131\\uD569\\uB2C8\\uB2E4.\",\"\\uC5B8\\uC5B4\\uC5D0 \\uB300\\uD574 \\uC7AC\\uC815\\uC758\\uD560 \\uD3B8\\uC9D1\\uAE30 \\uC124\\uC815\\uC744 \\uAD6C\\uC131\\uD569\\uB2C8\\uB2E4.\",\"\\uC774 \\uC124\\uC815\\uC740 \\uC5B8\\uC5B4\\uBCC4 \\uAD6C\\uC131\\uC744 \\uC9C0\\uC6D0\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC5B8\\uC5B4\\uC5D0 \\uB300\\uD574 \\uC7AC\\uC815\\uC758\\uD560 \\uD3B8\\uC9D1\\uAE30 \\uC124\\uC815\\uC744 \\uAD6C\\uC131\\uD569\\uB2C8\\uB2E4.\",\"\\uC774 \\uC124\\uC815\\uC740 \\uC5B8\\uC5B4\\uBCC4 \\uAD6C\\uC131\\uC744 \\uC9C0\\uC6D0\\uD558\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBE48 \\uC18D\\uC131\\uC744 \\uB4F1\\uB85D\\uD560 \\uC218 \\uC5C6\\uC74C\",\"'{0}'\\uC744(\\uB97C) \\uB4F1\\uB85D\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uC774\\uB294 \\uC5B8\\uC5B4\\uBCC4 \\uD3B8\\uC9D1\\uAE30 \\uC124\\uC815\\uC744 \\uC124\\uBA85\\uD558\\uB294 \\uC18D\\uC131 \\uD328\\uD134\\uC778 '\\\\\\\\[.*\\\\\\\\]$'\\uACFC(\\uC640) \\uC77C\\uCE58\\uD569\\uB2C8\\uB2E4. 'configurationDefaults' \\uAE30\\uC5EC\\uB97C \\uC0AC\\uC6A9\\uD558\\uC138\\uC694.\",\"'{0}'\\uC744(\\uB97C) \\uB4F1\\uB85D\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uC774 \\uC18D\\uC131\\uC740 \\uC774\\uBBF8 \\uB4F1\\uB85D\\uB418\\uC5B4 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"'{0}'\\uC744(\\uB97C) \\uB4F1\\uB85D\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. \\uC5F0\\uACB0\\uB41C \\uC815\\uCC45 {1}\\uC774(\\uAC00) \\uC774\\uBBF8 {2}\\uC5D0 \\uB4F1\\uB85D\\uB418\\uC5B4 \\uC788\\uC2B5\\uB2C8\\uB2E4.\"],\"vs/platform/contextkey/browser/contextKeyService\":[\"\\uCEE8\\uD14D\\uC2A4\\uD2B8 \\uD0A4\\uC5D0 \\uB300\\uD55C \\uC815\\uBCF4\\uB97C \\uBC18\\uD658\\uD558\\uB294 \\uBA85\\uB839\"],\"vs/platform/contextkey/common/contextkey\":[\"\\uBE48 \\uCEE8\\uD14D\\uC2A4\\uD2B8 \\uD0A4 \\uC2DD\",\"\\uC2DD \\uC4F0\\uB294 \\uAC83\\uC744 \\uC78A\\uC73C\\uC168\\uB098\\uC694? \\uD56D\\uC0C1 'false' \\uB610\\uB294 'true'\\uB97C \\uB123\\uC5B4 \\uAC01\\uAC01 false \\uB610\\uB294 true\\uB85C \\uD3C9\\uAC00\\uD560 \\uC218\\uB3C4 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"'not' \\uB4A4\\uC5D0 'in'\\uC774 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uB2EB\\uB294 \\uAD04\\uD638 ')'\",\"\\uC608\\uAE30\\uCE58 \\uC54A\\uC740 \\uD1A0\\uD070\",\"\\uD1A0\\uD070 \\uC55E\\uC5D0 && \\uB610\\uB294 ||\\uB97C \\uC785\\uB825\\uD558\\uB294 \\uAC83\\uC744 \\uC78A\\uC73C\\uC168\\uB098\\uC694?\",\"\\uD544\\uC694\\uD558\\uC9C0 \\uC54A\\uC740 \\uC2DD\\uC758 \\uB05D\",\"\\uCEE8\\uD14D\\uC2A4\\uD2B8 \\uD0A4\\uB97C \\uC785\\uB825\\uD558\\uB294 \\uAC83\\uC744 \\uC78A\\uC73C\\uC168\\uB098\\uC694?\",`\\uC608\\uC0C1: {0}\\r\n\\uC218\\uC2E0\\uB428: '{1}'.`],\"vs/platform/contextkey/common/contextkeys\":[\"\\uC6B4\\uC601 \\uCCB4\\uC81C\\uAC00 macOS\\uC778\\uC9C0 \\uC5EC\\uBD80\",\"\\uC6B4\\uC601 \\uCCB4\\uC81C\\uAC00 Linux\\uC778\\uC9C0 \\uC5EC\\uBD80\",\"\\uC6B4\\uC601 \\uCCB4\\uC81C\\uAC00 Windows\\uC778\\uC9C0 \\uC5EC\\uBD80\",\"\\uD50C\\uB7AB\\uD3FC\\uC774 \\uC6F9 \\uBE0C\\uB77C\\uC6B0\\uC800\\uC778\\uC9C0 \\uC5EC\\uBD80\",\"\\uBE0C\\uB77C\\uC6B0\\uC800 \\uAE30\\uBC18\\uC774 \\uC544\\uB2CC \\uD50C\\uB7AB\\uD3FC\\uC5D0\\uC11C \\uC6B4\\uC601 \\uCCB4\\uC81C\\uAC00 macOS\\uC778\\uC9C0 \\uC5EC\\uBD80\",\"\\uC6B4\\uC601 \\uCCB4\\uC81C\\uAC00 iOS\\uC778\\uC9C0 \\uC5EC\\uBD80\",\"\\uD50C\\uB7AB\\uD3FC\\uC774 \\uBAA8\\uBC14\\uC77C \\uC6F9 \\uBE0C\\uB77C\\uC6B0\\uC800\\uC778\\uC9C0 \\uC5EC\\uBD80\",\"VS \\uCF54\\uB4DC\\uC758 \\uD488\\uC9C8 \\uC720\\uD615\",\"\\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC785\\uB825 \\uC0C1\\uC790 \\uB0B4\\uC5D0 \\uC788\\uB294\\uC9C0 \\uC5EC\\uBD80\"],\"vs/platform/contextkey/common/scanner\":[\"{0}\\uC744(\\uB97C) \\uC0AC\\uC6A9\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\"{0} \\uB610\\uB294 {1}\\uC744(\\uB97C) \\uC0AC\\uC6A9\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\"{0}, {1} \\uB610\\uB294 {2}\\uC744(\\uB97C) \\uC0AC\\uC6A9\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\"\\uACAC\\uC801\\uC744 \\uC5F4\\uAC70\\uB098 \\uB2EB\\uB294 \\uAC83\\uC744 \\uC78A\\uC73C\\uC168\\uB098\\uC694?\",\"'/'(\\uC2AC\\uB798\\uC2DC) \\uBB38\\uC790\\uB97C \\uC774\\uC2A4\\uCF00\\uC774\\uD504\\uD558\\uB294 \\uAC83\\uC744 \\uC78A\\uC73C\\uC168\\uB098\\uC694? \\uC774\\uC2A4\\uCF00\\uC774\\uD504\\uD558\\uB824\\uBA74 \\uC55E\\uC5D0 \\uBC31\\uC2AC\\uB77C\\uC2DC \\uB450 \\uAC1C(\\uC608: '\\\\\\\\/')\\uB97C \\uB123\\uC2B5\\uB2C8\\uB2E4.\"],\"vs/platform/history/browser/contextScopedHistoryWidget\":[\"\\uC81C\\uC548\\uC774 \\uD45C\\uC2DC\\uB418\\uB294\\uC9C0 \\uC5EC\\uBD80\"],\"vs/platform/keybinding/common/abstractKeybindingService\":[\"({0})\\uC744(\\uB97C) \\uB20C\\uB800\\uC2B5\\uB2C8\\uB2E4. \\uB458\\uC9F8 \\uD0A4\\uB294 \\uC7A0\\uC2DC \\uAE30\\uB2E4\\uB838\\uB2E4\\uAC00 \\uB204\\uB974\\uC2ED\\uC2DC\\uC624...\",\"({0})\\uC744(\\uB97C) \\uB20C\\uB800\\uC2B5\\uB2C8\\uB2E4. \\uCF54\\uB4DC\\uC758 \\uB2E4\\uC74C \\uD0A4\\uB97C \\uAE30\\uB2E4\\uB9AC\\uB294 \\uC911...\",\"\\uD0A4 \\uC870\\uD569({0}, {1})\\uC740 \\uBA85\\uB839\\uC774 \\uC544\\uB2D9\\uB2C8\\uB2E4.\",\"\\uD0A4 \\uC870\\uD569({0}, {1})\\uC740 \\uBA85\\uB839\\uC774 \\uC544\\uB2D9\\uB2C8\\uB2E4.\"],\"vs/platform/list/browser/listService\":[\"\\uC6CC\\uD06C\\uBCA4\\uCE58\",\"Windows\\uC640 Linux\\uC758 'Control'\\uC744 macOS\\uC758 'Command'\\uB85C \\uB9E4\\uD551\\uD569\\uB2C8\\uB2E4.\",\"Windows\\uC640 Linux\\uC758 'Alt'\\uB97C macOS\\uC758 'Option'\\uC73C\\uB85C \\uB9E4\\uD551\\uD569\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4\\uB85C \\uD2B8\\uB9AC\\uC640 \\uBAA9\\uB85D\\uC758 \\uD56D\\uBAA9\\uC744 \\uB2E4\\uC911 \\uC120\\uD0DD\\uC5D0 \\uCD94\\uAC00\\uD560 \\uB54C \\uC0AC\\uC6A9\\uD560 \\uD55C\\uC815\\uC790\\uC785\\uB2C8\\uB2E4(\\uC608\\uB97C \\uB4E4\\uC5B4 \\uD0D0\\uC0C9\\uAE30\\uC5D0\\uC11C \\uD3B8\\uC9D1\\uAE30\\uC640 SCM \\uBCF4\\uAE30\\uB97C \\uC5EC\\uB294 \\uACBD\\uC6B0). '\\uC606\\uC5D0\\uC11C \\uC5F4\\uAE30' \\uB9C8\\uC6B0\\uC2A4 \\uC81C\\uC2A4\\uCC98(\\uC9C0\\uC6D0\\uB418\\uB294 \\uACBD\\uC6B0)\\uB294 \\uB2E4\\uC911 \\uC120\\uD0DD \\uD55C\\uC815\\uC790\\uC640 \\uCDA9\\uB3CC\\uD558\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC870\\uC815\\uB429\\uB2C8\\uB2E4.\",\"\\uD2B8\\uB9AC\\uC640 \\uBAA9\\uB85D\\uC5D0\\uC11C \\uB9C8\\uC6B0\\uC2A4\\uB97C \\uC0AC\\uC6A9\\uD558\\uC5EC \\uD56D\\uBAA9\\uC744 \\uC5EC\\uB294 \\uBC29\\uBC95\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4(\\uC9C0\\uC6D0\\uB418\\uB294 \\uACBD\\uC6B0). \\uC77C\\uBD80 \\uD2B8\\uB9AC\\uC640 \\uBAA9\\uB85D\\uC5D0\\uC11C\\uB294 \\uC774 \\uC124\\uC815\\uC744 \\uC801\\uC6A9\\uD560 \\uC218 \\uC5C6\\uB294 \\uACBD\\uC6B0 \\uBB34\\uC2DC\\uD558\\uB3C4\\uB85D \\uC120\\uD0DD\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC6CC\\uD06C\\uBCA4\\uCE58\\uC5D0\\uC11C \\uBAA9\\uB85D \\uBC0F \\uD2B8\\uB9AC\\uC758 \\uAC00\\uB85C \\uC2A4\\uD06C\\uB864 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uACBD\\uACE0: \\uC774 \\uC124\\uC815\\uC744 \\uCF1C\\uBA74 \\uC131\\uB2A5\\uC5D0 \\uC601\\uD5A5\\uC744 \\uBBF8\\uCE69\\uB2C8\\uB2E4.\",\"\\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300 \\uC2A4\\uD06C\\uB864 \\uD398\\uC774\\uC9C0\\uC758 \\uD398\\uC774\\uC9C0\\uBCC4 \\uD074\\uB9AD \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD2B8\\uB9AC \\uB4E4\\uC5EC\\uC4F0\\uAE30\\uB97C \\uD53D\\uC140 \\uB2E8\\uC704\\uB85C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD2B8\\uB9AC\\uC5D0\\uC11C \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uAC00\\uC774\\uB4DC\\uB97C \\uB80C\\uB354\\uB9C1\\uD560\\uC9C0 \\uC5EC\\uBD80\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D\\uACFC \\uD2B8\\uB9AC\\uC5D0 \\uBD80\\uB4DC\\uB7EC\\uC6B4 \\uD654\\uBA74 \\uC774\\uB3D9 \\uAE30\\uB2A5\\uC774 \\uC788\\uB294\\uC9C0\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4 \\uD720 \\uC2A4\\uD06C\\uB864 \\uC774\\uBCA4\\uD2B8\\uC758 `deltaX` \\uBC0F `deltaY`\\uC5D0\\uC11C \\uC0AC\\uC6A9\\uD560 \\uC2B9\\uC218\\uC785\\uB2C8\\uB2E4.\",\"'Alt' \\uD0A4\\uB97C \\uB204\\uB97C \\uB54C \\uC2A4\\uD06C\\uB864 \\uC18D\\uB3C4 \\uC2B9\\uC218\\uC785\\uB2C8\\uB2E4.\",\"\\uAC80\\uC0C9\\uD560 \\uB54C \\uC694\\uC18C\\uB97C \\uAC15\\uC870 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4. \\uCD94\\uAC00 \\uC704\\uC544\\uB798 \\uD0D0\\uC0C9\\uC740 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB41C \\uC694\\uC18C\\uB9CC \\uD0D0\\uC0C9\\uD569\\uB2C8\\uB2E4.\",\"\\uAC80\\uC0C9\\uD560 \\uB54C \\uC694\\uC18C\\uB97C \\uD544\\uD130\\uB9C1\\uD569\\uB2C8\\uB2E4.\",\"\\uC6CC\\uD06C\\uBCA4\\uCE58\\uC5D0\\uC11C \\uBAA9\\uB85D \\uBC0F \\uD2B8\\uB9AC\\uC758 \\uAE30\\uBCF8 \\uCC3E\\uAE30 \\uBAA8\\uB4DC\\uB97C \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uAC04\\uB2E8\\uD55C \\uD0A4\\uBCF4\\uB4DC \\uD0D0\\uC0C9\\uC5D0\\uC11C\\uB294 \\uD0A4\\uBCF4\\uB4DC \\uC785\\uB825\\uACFC \\uC77C\\uCE58\\uD558\\uB294 \\uC694\\uC18C\\uC5D0 \\uC9D1\\uC911\\uD569\\uB2C8\\uB2E4. \\uC77C\\uCE58\\uB294 \\uC811\\uB450\\uC0AC\\uC5D0\\uC11C\\uB9CC \\uC218\\uD589\\uB429\\uB2C8\\uB2E4.\",\"\\uD0A4\\uBCF4\\uB4DC \\uD0D0\\uC0C9 \\uAC15\\uC870 \\uD45C\\uC2DC\\uC5D0\\uC11C\\uB294 \\uD0A4\\uBCF4\\uB4DC \\uC785\\uB825\\uACFC \\uC77C\\uCE58\\uD558\\uB294 \\uC694\\uC18C\\uB97C \\uAC15\\uC870 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4. \\uC774\\uD6C4\\uB85C \\uD0D0\\uC0C9\\uC5D0\\uC11C \\uC704 \\uBC0F \\uC544\\uB798\\uB85C \\uC774\\uB3D9\\uD558\\uB294 \\uACBD\\uC6B0 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB41C \\uC694\\uC18C\\uB9CC \\uD2B8\\uB798\\uBC84\\uC2A4\\uD569\\uB2C8\\uB2E4.\",\"\\uD0A4\\uBCF4\\uB4DC \\uD0D0\\uC0C9 \\uD544\\uD130\\uB9C1\\uC5D0\\uC11C\\uB294 \\uD0A4\\uBCF4\\uB4DC \\uC785\\uB825\\uACFC \\uC77C\\uCE58\\uD558\\uC9C0 \\uC54A\\uB294 \\uC694\\uC18C\\uB97C \\uBAA8\\uB450 \\uD544\\uD130\\uB9C1\\uD558\\uC5EC \\uC228\\uAE41\\uB2C8\\uB2E4.\",\"\\uC6CC\\uD06C\\uBCA4\\uCE58\\uC758 \\uBAA9\\uB85D \\uBC0F \\uD2B8\\uB9AC \\uD0A4\\uBCF4\\uB4DC \\uD0D0\\uC0C9 \\uC2A4\\uD0C0\\uC77C\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uAC04\\uC18C\\uD654\\uD558\\uACE0, \\uAC15\\uC870 \\uD45C\\uC2DC\\uD558\\uACE0, \\uD544\\uD130\\uB9C1\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uB300\\uC2E0 'workbench.list.defaultFindMode' \\uBC0F 'workbench.list.typeNavigationMode'\\uB97C \\uC0AC\\uC6A9\\uD558\\uC138\\uC694.\",\"\\uAC80\\uC0C9\\uD560 \\uB54C \\uC720\\uC0AC \\uD56D\\uBAA9 \\uC77C\\uCE58\\uB97C \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uAC80\\uC0C9\\uD560 \\uB54C \\uC5F0\\uC18D \\uC77C\\uCE58\\uB97C \\uC0AC\\uC6A9\\uD569\\uB2C8\\uB2E4.\",\"\\uC6CC\\uD06C\\uBCA4\\uCE58\\uC5D0\\uC11C \\uBAA9\\uB85D \\uBC0F \\uD2B8\\uB9AC\\uB97C \\uAC80\\uC0C9\\uD560 \\uB54C \\uC0AC\\uC6A9\\uD558\\uB294 \\uC77C\\uCE58 \\uC720\\uD615\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4.\",\"\\uD3F4\\uB354 \\uC774\\uB984\\uC744 \\uD074\\uB9AD\\uD560 \\uB54C \\uD2B8\\uB9AC \\uD3F4\\uB354\\uAC00 \\uD655\\uC7A5\\uB418\\uB294 \\uBC29\\uBC95\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. \\uC77C\\uBD80 \\uD2B8\\uB9AC\\uC640 \\uBAA9\\uB85D\\uC5D0\\uC11C\\uB294 \\uC774 \\uC124\\uC815\\uC744 \\uC801\\uC6A9\\uD560 \\uC218 \\uC5C6\\uB294 \\uACBD\\uC6B0 \\uBB34\\uC2DC\\uD558\\uB3C4\\uB85D \\uC120\\uD0DD\\uD560 \\uC218 \\uC788\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC6CC\\uD06C\\uBCA4\\uCE58\\uC758 \\uBAA9\\uB85D \\uBC0F \\uD2B8\\uB9AC\\uC5D0\\uC11C \\uD615\\uC2DD \\uD0D0\\uC0C9\\uC774 \\uC791\\uB3D9\\uD558\\uB294 \\uBC29\\uC2DD\\uC744 \\uC81C\\uC5B4\\uD569\\uB2C8\\uB2E4. 'trigger'\\uB85C \\uC124\\uC815 \\uC2DC 'list.triggerTypeNavigation' \\uBA85\\uB839\\uC774 \\uC2E4\\uD589\\uB418\\uBA74 \\uD615\\uC2DD \\uD0D0\\uC0C9\\uC774 \\uC2DC\\uC791\\uB429\\uB2C8\\uB2E4.\"],\"vs/platform/markers/common/markers\":[\"\\uC624\\uB958\",\"\\uACBD\\uACE0\",\"\\uC815\\uBCF4\"],\"vs/platform/quickinput/browser/commandsQuickAccess\":[\"\\uCD5C\\uADFC\\uC5D0 \\uC0AC\\uC6A9\\uD55C \\uD56D\\uBAA9\",\"\\uC77C\\uBC18\\uC801\\uC73C\\uB85C \\uC0AC\\uC6A9\\uB428\",\"\\uAE30\\uD0C0 \\uBA85\\uB839\",\"{0}, {1}\",\"'{0}' \\uBA85\\uB839\\uC5D0\\uC11C \\uC624\\uB958\\uAC00 \\uBC1C\\uC0DD\\uD588\\uC2B5\\uB2C8\\uB2E4.\"],\"vs/platform/quickinput/browser/helpQuickAccess\":[\"{0}, {1}\"],\"vs/platform/quickinput/browser/quickInput\":[\"\\uB4A4\\uB85C\",\"\\uC785\\uB825\\uC744 \\uD655\\uC778\\uD558\\uB824\\uBA74 'Enter' \\uD0A4\\uB97C \\uB204\\uB974\\uACE0, \\uCDE8\\uC18C\\uD558\\uB824\\uBA74 'Esc' \\uD0A4\\uB97C \\uB204\\uB974\\uC138\\uC694.\",\"{0} / {1}\",\"\\uACB0\\uACFC\\uC758 \\uBC94\\uC704\\uB97C \\uCD95\\uC18C\\uD558\\uB824\\uBA74 \\uC785\\uB825\\uD558\\uC138\\uC694.\"],\"vs/platform/quickinput/browser/quickInputController\":[\"Toggle all checkboxes\",\"{0} Results\",\"{0} Selected\",\"OK\",\"Custom\",\"Back ({0})\",\"Back\"],\"vs/platform/quickinput/browser/quickInputList\":[\"\\uBE60\\uB978 \\uC785\\uB825\"],\"vs/platform/quickinput/browser/quickInputUtils\":[\"'{0}' \\uBA85\\uB839\\uC744 \\uC2E4\\uD589\\uD558\\uB824\\uBA74 \\uD074\\uB9AD\"],\"vs/platform/theme/common/colorRegistry\":[\"\\uC804\\uCCB4 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774 \\uC0C9\\uC740 \\uAD6C\\uC131 \\uC694\\uC18C\\uC5D0\\uC11C \\uC7AC\\uC815\\uC758\\uD558\\uC9C0 \\uC54A\\uC740 \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uBE44\\uD65C\\uC131\\uD654\\uB41C \\uC694\\uC18C\\uC758 \\uC804\\uCCB4 \\uC804\\uACBD\\uC785\\uB2C8\\uB2E4. \\uC774 \\uC0C9\\uC740 \\uAD6C\\uC131 \\uC694\\uC18C\\uC5D0\\uC11C \\uC7AC\\uC815\\uC758\\uD558\\uC9C0 \\uC54A\\uB294 \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uC624\\uB958 \\uBA54\\uC2DC\\uC9C0\\uC5D0 \\uB300\\uD55C \\uC804\\uCCB4 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774 \\uC0C9\\uC740 \\uAD6C\\uC131 \\uC694\\uC18C\\uC5D0\\uC11C \\uC7AC\\uC815\\uC758\\uD558\\uC9C0 \\uC54A\\uC740 \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uB808\\uC774\\uBE14\\uACFC \\uAC19\\uC774 \\uCD94\\uAC00 \\uC815\\uBCF4\\uB97C \\uC81C\\uACF5\\uD558\\uB294 \\uC124\\uBA85 \\uD14D\\uC2A4\\uD2B8\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC6CC\\uD06C\\uBCA4\\uCE58 \\uC544\\uC774\\uCF58\\uC758 \\uAE30\\uBCF8 \\uC0C9\\uC0C1\\uC785\\uB2C8\\uB2E4.\",\"\\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uC694\\uC18C\\uC758 \\uC804\\uCCB4 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774 \\uC0C9\\uC740 \\uAD6C\\uC131 \\uC694\\uC18C\\uC5D0\\uC11C \\uC7AC\\uC815\\uC758\\uD558\\uC9C0 \\uC54A\\uC740 \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uB354 \\uB69C\\uB837\\uC774 \\uB300\\uBE44\\uB418\\uB3C4\\uB85D \\uC694\\uC18C\\uB97C \\uB2E4\\uB978 \\uC694\\uC18C\\uC640 \\uAD6C\\uBD84\\uD558\\uB294 \\uC694\\uC18C \\uC8FC\\uC704\\uC758 \\uCD94\\uAC00 \\uD14C\\uB450\\uB9AC\\uC785\\uB2C8\\uB2E4.\",\"\\uB354 \\uB69C\\uB837\\uC774 \\uB300\\uBE44\\uB418\\uB3C4\\uB85D \\uC694\\uC18C\\uB97C \\uB2E4\\uB978 \\uC694\\uC18C\\uC640 \\uAD6C\\uBD84\\uD558\\uB294 \\uD65C\\uC131 \\uC694\\uC18C \\uC8FC\\uC704\\uC758 \\uCD94\\uAC00 \\uD14C\\uB450\\uB9AC\\uC785\\uB2C8\\uB2E4.\",\"\\uC6CC\\uD06C\\uBCA4\\uCE58\\uC758 \\uD14D\\uC2A4\\uD2B8 \\uC120\\uD0DD(\\uC608: \\uC785\\uB825 \\uD544\\uB4DC \\uB610\\uB294 \\uD14D\\uC2A4\\uD2B8 \\uC601\\uC5ED) \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uD3B8\\uC9D1\\uAE30 \\uB0B4\\uC758 \\uC120\\uD0DD\\uC5D0\\uB294 \\uC801\\uC6A9\\uB418\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uD14D\\uC2A4\\uD2B8 \\uAD6C\\uBD84\\uC790 \\uC0C9\\uC0C1\\uC785\\uB2C8\\uB2E4.\",\"\\uD14D\\uC2A4\\uD2B8 \\uB0B4 \\uB9C1\\uD06C\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD074\\uB9AD\\uD558\\uACE0 \\uB9C8\\uC6B0\\uC2A4\\uAC00 \\uC62C\\uB77C\\uAC04 \\uC0C1\\uD0DC\\uC758 \\uD14D\\uC2A4\\uD2B8 \\uB0B4 \\uB9C1\\uD06C\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBBF8\\uB9AC \\uC11C\\uC2DD\\uC774 \\uC9C0\\uC815\\uB41C \\uD14D\\uC2A4\\uD2B8 \\uC138\\uADF8\\uBA3C\\uD2B8\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD14D\\uC2A4\\uD2B8 \\uB0B4 \\uBE14\\uB85D \\uC778\\uC6A9\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD14D\\uC2A4\\uD2B8 \\uB0B4 \\uBE14\\uB85D \\uC778\\uC6A9\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD14D\\uC2A4\\uD2B8 \\uB0B4 \\uCF54\\uB4DC \\uBE14\\uB85D\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uB0B4\\uC5D0\\uC11C \\uCC3E\\uAE30/\\uBC14\\uAFB8\\uAE30 \\uAC19\\uC740 \\uC704\\uC82F\\uC758 \\uADF8\\uB9BC\\uC790 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uB0B4\\uC5D0\\uC11C \\uCC3E\\uAE30/\\uBC14\\uAFB8\\uAE30\\uC640 \\uAC19\\uC740 \\uC704\\uC82F\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC785\\uB825 \\uC0C1\\uC790 \\uBC30\\uACBD\\uC785\\uB2C8\\uB2E4.\",\"\\uC785\\uB825 \\uC0C1\\uC790 \\uC804\\uACBD\\uC785\\uB2C8\\uB2E4.\",\"\\uC785\\uB825 \\uC0C1\\uC790 \\uD14C\\uB450\\uB9AC\\uC785\\uB2C8\\uB2E4.\",\"\\uC785\\uB825 \\uD544\\uB4DC\\uC5D0\\uC11C \\uD65C\\uC131\\uD654\\uB41C \\uC635\\uC158\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC785\\uB825 \\uD544\\uB4DC\\uC5D0\\uC11C \\uD65C\\uC131\\uD654\\uB41C \\uC635\\uC158\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC785\\uB825 \\uD544\\uB4DC\\uC5D0 \\uC788\\uB294 \\uC635\\uC158\\uC758 \\uBC30\\uACBD \\uAC00\\uB9AC\\uD0A4\\uAE30 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC785\\uB825 \\uD544\\uB4DC\\uC5D0\\uC11C \\uD65C\\uC131\\uD654\\uB41C \\uC635\\uC158\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC704\\uCE58 \\uD45C\\uC2DC\\uC790 \\uD14D\\uC2A4\\uD2B8\\uC5D0 \\uB300\\uD55C \\uC785\\uB825 \\uC0C1\\uC790 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC815\\uBCF4 \\uC2EC\\uAC01\\uB3C4\\uC758 \\uC785\\uB825 \\uC720\\uD6A8\\uC131 \\uAC80\\uC0AC \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC815\\uBCF4 \\uC2EC\\uAC01\\uB3C4\\uC758 \\uC785\\uB825 \\uC720\\uD6A8\\uC131 \\uAC80\\uC0AC \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC815\\uBCF4 \\uC2EC\\uAC01\\uB3C4\\uC758 \\uC785\\uB825 \\uC720\\uD6A8\\uC131 \\uAC80\\uC0AC \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uACBD\\uACE0 \\uC2EC\\uAC01\\uB3C4\\uC758 \\uC785\\uB825 \\uC720\\uD6A8\\uC131 \\uAC80\\uC0AC \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uACBD\\uACE0 \\uC2EC\\uAC01\\uB3C4\\uC758 \\uC785\\uB825 \\uC720\\uD6A8\\uC131 \\uAC80\\uC0AC \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uACBD\\uACE0 \\uC2EC\\uAC01\\uB3C4\\uC758 \\uC785\\uB825 \\uC720\\uD6A8\\uC131 \\uAC80\\uC0AC \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC624\\uB958 \\uC2EC\\uAC01\\uB3C4\\uC758 \\uC785\\uB825 \\uC720\\uD6A8\\uC131 \\uAC80\\uC0AC \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC624\\uB958 \\uC2EC\\uAC01\\uB3C4\\uC758 \\uC785\\uB825 \\uC720\\uD6A8\\uC131 \\uAC80\\uC0AC \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC624\\uB958 \\uC2EC\\uAC01\\uB3C4\\uC758 \\uC785\\uB825 \\uC720\\uD6A8\\uC131 \\uAC80\\uC0AC \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB4DC\\uB86D\\uB2E4\\uC6B4 \\uBC30\\uACBD\\uC785\\uB2C8\\uB2E4.\",\"\\uB4DC\\uB86D\\uB2E4\\uC6B4 \\uBAA9\\uB85D \\uBC30\\uACBD\\uC785\\uB2C8\\uB2E4.\",\"\\uB4DC\\uB86D\\uB2E4\\uC6B4 \\uC804\\uACBD\\uC785\\uB2C8\\uB2E4.\",\"\\uB4DC\\uB86D\\uB2E4\\uC6B4 \\uD14C\\uB450\\uB9AC\\uC785\\uB2C8\\uB2E4.\",\"\\uB2E8\\uCD94 \\uAE30\\uBCF8 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB2E8\\uCD94 \\uAD6C\\uBD84 \\uAE30\\uD638 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB2E8\\uCD94 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4\\uB85C \\uAC00\\uB9AC\\uD0AC \\uB54C \\uB2E8\\uCD94 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBC84\\uD2BC \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBCF4\\uC870 \\uB2E8\\uCD94 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBCF4\\uC870 \\uB2E8\\uCD94 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4\\uB85C \\uAC00\\uB9AC\\uD0AC \\uB54C \\uBCF4\\uC870 \\uB2E8\\uCD94 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBC30\\uC9C0 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBC30\\uC9C0\\uB294 \\uAC80\\uC0C9 \\uACB0\\uACFC \\uC218\\uC640 \\uAC19\\uC740 \\uC18C\\uB7C9\\uC758 \\uC815\\uBCF4 \\uB808\\uC774\\uBE14\\uC785\\uB2C8\\uB2E4.\",\"\\uBC30\\uC9C0 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBC30\\uC9C0\\uB294 \\uAC80\\uC0C9 \\uACB0\\uACFC \\uC218\\uC640 \\uAC19\\uC740 \\uC18C\\uB7C9\\uC758 \\uC815\\uBCF4 \\uB808\\uC774\\uBE14\\uC785\\uB2C8\\uB2E4.\",\"\\uC2A4\\uD06C\\uB864\\uB418\\uB294 \\uBCF4\\uAE30\\uB97C \\uB098\\uD0C0\\uB0B4\\uB294 \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300 \\uADF8\\uB9BC\\uC790\\uC785\\uB2C8\\uB2E4.\",\"\\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300 \\uC2AC\\uB77C\\uC774\\uBC84 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4\\uB85C \\uAC00\\uB9AC\\uD0AC \\uB54C \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300 \\uC2AC\\uB77C\\uC774\\uB354 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD074\\uB9AD\\uB41C \\uC0C1\\uD0DC\\uC77C \\uB54C \\uC2A4\\uD06C\\uB864 \\uB9C9\\uB300 \\uC2AC\\uB77C\\uC774\\uB354 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC7A5\\uAE30 \\uC791\\uC5C5\\uC744 \\uB300\\uC0C1\\uC73C\\uB85C \\uD45C\\uC2DC\\uB420 \\uC218 \\uC788\\uB294 \\uC9C4\\uD589\\uB960 \\uD45C\\uC2DC\\uC904\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC624\\uB958 \\uD14D\\uC2A4\\uD2B8\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uB0B4 \\uC624\\uB958 \\uD45C\\uC2DC\\uC120\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC124\\uC815\\uB41C \\uACBD\\uC6B0 \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC624\\uB958\\uB97C \\uB098\\uD0C0\\uB0B4\\uB294 \\uC774\\uC911 \\uBC11\\uC904\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uACBD\\uACE0 \\uD14D\\uC2A4\\uD2B8\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uB0B4 \\uACBD\\uACE0 \\uD45C\\uC2DC\\uC120\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC124\\uC815\\uB41C \\uACBD\\uC6B0 \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uACBD\\uACE0\\uB97C \\uB098\\uD0C0\\uB0B4\\uB294 \\uC774\\uC911 \\uBC11\\uC904\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC815\\uBCF4 \\uD14D\\uC2A4\\uD2B8\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uB0B4 \\uC815\\uBCF4 \\uD45C\\uC2DC\\uC120\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC124\\uC815\\uB41C \\uACBD\\uC6B0 \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uC815\\uBCF4\\uB97C \\uB098\\uD0C0\\uB0B4\\uB294 \\uC774\\uC911 \\uBC11\\uC904 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uD78C\\uD2B8 \\uD45C\\uC2DC\\uC120\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC124\\uC815\\uB41C \\uACBD\\uC6B0 \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uD78C\\uD2B8\\uB97C \\uB098\\uD0C0\\uB0B4\\uB294 \\uC774\\uC911 \\uBC11\\uC904 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uC100\\uC2DC\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uAE30\\uBCF8 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30\\uC758 \\uACE0\\uC815 \\uC2A4\\uD06C\\uB864 \\uBC30\\uACBD\\uC0C9\",\"\\uD3B8\\uC9D1\\uAE30\\uC758 \\uAC00\\uB9AC\\uD0A8 \\uD56D\\uBAA9 \\uBC30\\uACBD\\uC0C9\\uC5D0 \\uACE0\\uC815 \\uC2A4\\uD06C\\uB864\",\"\\uCC3E\\uAE30/\\uBC14\\uAFB8\\uAE30 \\uAC19\\uC740 \\uD3B8\\uC9D1\\uAE30 \\uC704\\uC82F\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCC3E\\uAE30/\\uBC14\\uAFB8\\uAE30\\uC640 \\uAC19\\uC740 \\uD3B8\\uC9D1\\uAE30 \\uC704\\uC82F\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uC704\\uC82F\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC704\\uC82F\\uC5D0 \\uD14C\\uB450\\uB9AC\\uAC00 \\uC788\\uACE0 \\uC704\\uC82F\\uC774 \\uC0C9\\uC0C1\\uC744 \\uBB34\\uC2DC\\uD558\\uC9C0 \\uC54A\\uC744 \\uB54C\\uB9CC \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uC704\\uC82F \\uD06C\\uAE30 \\uC870\\uC815 \\uB9C9\\uB300\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC774 \\uC0C9\\uC740 \\uC704\\uC82F\\uC5D0\\uC11C \\uD06C\\uAE30 \\uC870\\uC815 \\uB9C9\\uB300\\uB97C \\uD45C\\uC2DC\\uD558\\uB3C4\\uB85D \\uC120\\uD0DD\\uD558\\uACE0 \\uC704\\uC82F\\uC5D0\\uC11C \\uC0C9\\uC744 \\uC7AC\\uC9C0\\uC815\\uD558\\uC9C0 \\uC54A\\uB294 \\uACBD\\uC6B0\\uC5D0\\uB9CC \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uBE60\\uB978 \\uC120\\uD0DD\\uAE30 \\uBC30\\uACBD\\uC0C9. \\uBE60\\uB978 \\uC120\\uD0DD\\uAE30 \\uC704\\uC82F\\uC740 \\uBA85\\uB839 \\uD314\\uB808\\uD2B8\\uC640 \\uAC19\\uC740 \\uC120\\uD0DD\\uAE30\\uB97C \\uC704\\uD55C \\uCEE8\\uD14C\\uC774\\uB108\\uC785\\uB2C8\\uB2E4.\",\"\\uBE60\\uB978 \\uC120\\uD0DD\\uAE30 \\uC804\\uACBD\\uC0C9. \\uC774 \\uBE60\\uB978 \\uC120\\uD0DD\\uAE30 \\uC704\\uC82F\\uC740 \\uBA85\\uB839 \\uD314\\uB808\\uD2B8\\uC640 \\uAC19\\uC740 \\uC120\\uD0DD\\uAE30\\uB97C \\uC704\\uD55C \\uCEE8\\uD14C\\uC774\\uB108\\uC785\\uB2C8\\uB2E4.\",\"\\uBE60\\uB978 \\uC120\\uD0DD\\uAE30 \\uC81C\\uBAA9 \\uBC30\\uACBD\\uC0C9. \\uC774 \\uBE60\\uB978 \\uC120\\uD0DD\\uAE30 \\uC704\\uC82F\\uC740 \\uBA85\\uB839 \\uD314\\uB808\\uD2B8\\uC640 \\uAC19\\uC740 \\uC120\\uD0DD\\uAE30\\uB97C \\uC704\\uD55C \\uCEE8\\uD14C\\uC774\\uB108\\uC785\\uB2C8\\uB2E4.\",\"\\uADF8\\uB8F9\\uD654 \\uB808\\uC774\\uBE14\\uC5D0 \\uB300\\uD55C \\uBE60\\uB978 \\uC120\\uD0DD\\uAE30 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uADF8\\uB8F9\\uD654 \\uD14C\\uB450\\uB9AC\\uC5D0 \\uB300\\uD55C \\uBE60\\uB978 \\uC120\\uD0DD\\uAE30 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD0A4 \\uBC14\\uC778\\uB529 \\uB808\\uC774\\uBE14 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uD0A4 \\uBC14\\uC778\\uB529 \\uB808\\uC774\\uBE14\\uC740 \\uBC14\\uB85C \\uAC00\\uAE30 \\uD0A4\\uB97C \\uB098\\uD0C0\\uB0B4\\uB294 \\uB370 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uD0A4 \\uBC14\\uC778\\uB529 \\uB808\\uC774\\uBE14 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uD0A4 \\uBC14\\uC778\\uB529 \\uB808\\uC774\\uBE14\\uC740 \\uBC14\\uB85C \\uAC00\\uAE30 \\uD0A4\\uB97C \\uB098\\uD0C0\\uB0B4\\uB294 \\uB370 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uD0A4 \\uBC14\\uC778\\uB529 \\uB808\\uC774\\uBE14 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uD0A4 \\uBC14\\uC778\\uB529 \\uB808\\uC774\\uBE14\\uC740 \\uBC14\\uB85C \\uAC00\\uAE30 \\uD0A4\\uB97C \\uB098\\uD0C0\\uB0B4\\uB294 \\uB370 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uD0A4 \\uBC14\\uC778\\uB529 \\uB808\\uC774\\uBE14 \\uD14C\\uB450\\uB9AC \\uC544\\uB798\\uCABD \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uD0A4 \\uBC14\\uC778\\uB529 \\uB808\\uC774\\uBE14\\uC740 \\uBC14\\uB85C \\uAC00\\uAE30 \\uD0A4\\uB97C \\uB098\\uD0C0\\uB0B4\\uB294 \\uB370 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uC120\\uD0DD \\uC601\\uC5ED\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uACE0\\uB300\\uBE44\\uB97C \\uC704\\uD55C \\uC120\\uD0DD \\uD14D\\uC2A4\\uD2B8\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBE44\\uD65C\\uC131 \\uD3B8\\uC9D1\\uAE30\\uC758 \\uC120\\uD0DD \\uD56D\\uBAA9 \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC120\\uD0DD \\uC601\\uC5ED\\uACFC \\uB3D9\\uC77C\\uD55C \\uCF58\\uD150\\uCE20\\uAC00 \\uC788\\uB294 \\uC601\\uC5ED\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC120\\uD0DD \\uC601\\uC5ED\\uACFC \\uB3D9\\uC77C\\uD55C \\uCF58\\uD150\\uCE20\\uAC00 \\uC788\\uB294 \\uC601\\uC5ED\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD604\\uC7AC \\uAC80\\uC0C9 \\uC77C\\uCE58 \\uD56D\\uBAA9\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uAE30\\uD0C0 \\uAC80\\uC0C9 \\uC77C\\uCE58 \\uD56D\\uBAA9\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uAC80\\uC0C9\\uC744 \\uC81C\\uD55C\\uD558\\uB294 \\uBC94\\uC704\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uD604\\uC7AC \\uAC80\\uC0C9\\uACFC \\uC77C\\uCE58\\uD558\\uB294 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB2E4\\uB978 \\uAC80\\uC0C9\\uACFC \\uC77C\\uCE58\\uD558\\uB294 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uAC80\\uC0C9\\uC744 \\uC81C\\uD55C\\uD558\\uB294 \\uBC94\\uC704\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uAC80\\uC0C9 \\uD3B8\\uC9D1\\uAE30 \\uCFFC\\uB9AC\\uC758 \\uC0C9\\uC0C1\\uC774 \\uC77C\\uCE58\\uD569\\uB2C8\\uB2E4.\",\"\\uAC80\\uC0C9 \\uD3B8\\uC9D1\\uAE30 \\uCFFC\\uB9AC\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC0C1\\uC774 \\uC77C\\uCE58\\uD569\\uB2C8\\uB2E4.\",\"\\uAC80\\uC0C9 \\uBDF0\\uB81B \\uC644\\uB8CC \\uBA54\\uC2DC\\uC9C0\\uC758 \\uD14D\\uC2A4\\uD2B8 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD638\\uBC84\\uAC00 \\uD45C\\uC2DC\\uB41C \\uB2E8\\uC5B4 \\uC544\\uB798\\uB97C \\uAC15\\uC870 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uD638\\uBC84\\uC758 \\uBC30\\uACBD\\uC0C9.\",\"\\uD3B8\\uC9D1\\uAE30 \\uD638\\uBC84\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uD638\\uBC84\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uD638\\uBC84 \\uC0C1\\uD0DC \\uD45C\\uC2DC\\uC904\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uB9C1\\uD06C\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uD78C\\uD2B8\\uC758 \\uC804\\uACBD\\uC0C9\",\"\\uC778\\uB77C\\uC778 \\uD78C\\uD2B8\\uC758 \\uBC30\\uACBD\\uC0C9\",\"\\uD615\\uC2DD\\uC5D0 \\uB300\\uD55C \\uC778\\uB77C\\uC778 \\uD78C\\uD2B8\\uC758 \\uC804\\uACBD\\uC0C9\",\"\\uD615\\uC2DD\\uC5D0 \\uB300\\uD55C \\uC778\\uB77C\\uC778 \\uD78C\\uD2B8\\uC758 \\uBC30\\uACBD\\uC0C9\",\"\\uB9E4\\uAC1C \\uBCC0\\uC218\\uC5D0 \\uB300\\uD55C \\uC778\\uB77C\\uC778 \\uD78C\\uD2B8\\uC758 \\uC804\\uACBD\\uC0C9\",\"\\uB9E4\\uAC1C \\uBCC0\\uC218\\uC5D0 \\uB300\\uD55C \\uC778\\uB77C\\uC778 \\uD78C\\uD2B8\\uC758 \\uBC30\\uACBD\\uC0C9\",\"\\uC804\\uAD6C \\uC791\\uC5C5 \\uC544\\uC774\\uCF58\\uC5D0 \\uC0AC\\uC6A9\\uB418\\uB294 \\uC0C9\\uC0C1\\uC785\\uB2C8\\uB2E4.\",\"\\uC804\\uAD6C \\uC790\\uB3D9 \\uC218\\uC815 \\uC791\\uC5C5 \\uC544\\uC774\\uCF58\\uC5D0 \\uC0AC\\uC6A9\\uB418\\uB294 \\uC0C9\\uC0C1\\uC785\\uB2C8\\uB2E4.\",\"\\uC0BD\\uC785\\uB41C \\uD14D\\uC2A4\\uD2B8\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC81C\\uAC70\\uB41C \\uD14D\\uC2A4\\uD2B8 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC0BD\\uC785\\uB41C \\uC904\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC81C\\uAC70\\uB41C \\uC904\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uC0C9\\uC0C1\\uC740 \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC904\\uC774 \\uC0BD\\uC785\\uB41C \\uC5EC\\uBC31\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC904\\uC774 \\uC81C\\uAC70\\uB41C \\uC5EC\\uBC31\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC0BD\\uC785\\uB41C \\uCF58\\uD150\\uCE20\\uC5D0 \\uB300\\uD55C \\uCC28\\uB4F1 \\uAC1C\\uC694 \\uB208\\uAE08\\uC790 \\uC804\\uACBD\\uC785\\uB2C8\\uB2E4.\",\"\\uC81C\\uAC70\\uB41C \\uCF58\\uD150\\uCE20\\uC5D0 \\uB300\\uD55C \\uCC28\\uB4F1 \\uAC1C\\uC694 \\uB208\\uAE08\\uC790 \\uC804\\uACBD\\uC785\\uB2C8\\uB2E4.\",\"\\uC0BD\\uC785\\uB41C \\uD14D\\uC2A4\\uD2B8\\uC758 \\uC724\\uACFD\\uC120 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC81C\\uAC70\\uB41C \\uD14D\\uC2A4\\uD2B8\\uC758 \\uC724\\uACFD\\uC120 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB450 \\uD14D\\uC2A4\\uD2B8 \\uD3B8\\uC9D1\\uAE30 \\uC0AC\\uC774\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"diff \\uD3B8\\uC9D1\\uAE30\\uC758 \\uB300\\uAC01\\uC120 \\uCC44\\uC6B0\\uAE30 \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uB300\\uAC01\\uC120 \\uCC44\\uC6B0\\uAE30\\uB294 diff \\uB098\\uB780\\uD788 \\uBCF4\\uAE30\\uC5D0\\uC11C \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"diff \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uBCC0\\uACBD\\uB418\\uC9C0 \\uC54A\\uC740 \\uBE14\\uB85D\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"diff \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uBCC0\\uACBD\\uB418\\uC9C0 \\uC54A\\uC740 \\uBE14\\uB85D\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"diff \\uD3B8\\uC9D1\\uAE30\\uC5D0\\uC11C \\uBCC0\\uACBD\\uB418\\uC9C0 \\uC54A\\uC740 \\uCF54\\uB4DC\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC778 \\uACBD\\uC6B0 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uAC00\\uC9C0\\uBA70, \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC778 \\uACBD\\uC6B0 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uAC00\\uC9C0\\uBA70, \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC778 \\uACBD\\uC6B0 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC724\\uACFD\\uC120 \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uAC00\\uC9C0\\uBA70, \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131\\uD654\\uB418\\uACE0 \\uC120\\uD0DD\\uB418\\uC5C8\\uC744 \\uB54C \\uCD08\\uC810\\uC774 \\uB9DE\\uCDB0\\uC9C4 \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC724\\uACFD\\uC120 \\uC0C9\\uC0C1\\uC785\\uB2C8\\uB2E4. \\uD65C\\uC131 \\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uC5D0\\uB294 \\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uACE0 \\uBE44\\uD65C\\uC131\\uC5D0\\uB294 \\uADF8\\uB807\\uC9C0 \\uC54A\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC778 \\uACBD\\uC6B0 \\uC120\\uD0DD\\uD55C \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uAC00\\uC9C0\\uBA70, \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC778 \\uACBD\\uC6B0 \\uC120\\uD0DD\\uD55C \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uAC00\\uC9C0\\uBA70, \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC778 \\uACBD\\uC6B0 \\uC120\\uD0DD\\uD55C \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC544\\uC774\\uCF58 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uAC00\\uC9C0\\uBA70, \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC778 \\uACBD\\uC6B0 \\uC120\\uD0DD\\uD55C \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uAC00\\uC9C0\\uBA70, \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC778 \\uACBD\\uC6B0 \\uC120\\uD0DD\\uD55C \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uAC00\\uC9C0\\uBA70, \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC778 \\uACBD\\uC6B0 \\uC120\\uD0DD\\uD55C \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC544\\uC774\\uCF58 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uAC00\\uC9C0\\uBA70, \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC778 \\uACBD\\uC6B0 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uAC00\\uC9C0\\uBA70, \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC778 \\uACBD\\uC6B0 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC724\\uACFD\\uC120 \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uBAA9\\uB85D/\\uD2B8\\uB9AC\\uAC00 \\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD0A4\\uBCF4\\uB4DC \\uD3EC\\uCEE4\\uC2A4\\uB97C \\uAC00\\uC9C0\\uBA70, \\uBE44\\uD65C\\uC131 \\uC0C1\\uD0DC\\uC774\\uBA74 \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4\\uB85C \\uD56D\\uBAA9\\uC744 \\uAC00\\uB9AC\\uD0AC \\uB54C \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uBC30\\uACBD\\uC785\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4\\uB85C \\uD56D\\uBAA9\\uC744 \\uAC00\\uB9AC\\uD0AC \\uB54C \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC804\\uACBD\\uC785\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4\\uB85C \\uD56D\\uBAA9\\uC744 \\uC774\\uB3D9\\uD560 \\uB54C \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uB04C\\uC5B4\\uC11C \\uB193\\uAE30 \\uBC30\\uACBD\\uC785\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uB0B4\\uC5D0\\uC11C \\uAC80\\uC0C9\\uD560 \\uB54C \\uC77C\\uCE58 \\uD56D\\uBAA9 \\uAC15\\uC870 \\uD45C\\uC2DC\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uB0B4\\uC5D0\\uC11C \\uAC80\\uC0C9\\uD560 \\uB54C \\uC77C\\uCE58 \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC804\\uACBD\\uC0C9\\uC774 \\uB2A5\\uB3D9\\uC801\\uC73C\\uB85C \\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uD56D\\uBAA9\\uC744 \\uAC15\\uC870 \\uD45C\\uC2DC\\uD569\\uB2C8\\uB2E4.\",\"\\uC798\\uBABB\\uB41C \\uD56D\\uBAA9\\uC5D0 \\uB300\\uD55C \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC804\\uACBD \\uC0C9(\\uC608: \\uD0D0\\uC0C9\\uAE30\\uC758 \\uD655\\uC778\\uD560 \\uC218 \\uC5C6\\uB294 \\uB8E8\\uD2B8).\",\"\\uC624\\uB958\\uB97C \\uD3EC\\uD568\\uD558\\uB294 \\uBAA9\\uB85D \\uD56D\\uBAA9\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uACBD\\uACE0\\uB97C \\uD3EC\\uD568\\uD558\\uB294 \\uBAA9\\uB85D \\uD56D\\uBAA9\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D \\uBC0F \\uD2B8\\uB9AC\\uC5D0\\uC11C \\uD615\\uC2DD \\uD544\\uD130 \\uC704\\uC82F\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D \\uBC0F \\uD2B8\\uB9AC\\uC5D0\\uC11C \\uD615\\uC2DD \\uD544\\uD130 \\uC704\\uC82F\\uC758 \\uC724\\uACFD\\uC120 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC77C\\uCE58\\uD558\\uB294 \\uD56D\\uBAA9\\uC774 \\uC5C6\\uC744 \\uB54C \\uBAA9\\uB85D \\uBC0F \\uD2B8\\uB9AC\\uC5D0\\uC11C \\uD45C\\uC2DC\\uB418\\uB294 \\uD615\\uC2DD \\uD544\\uD130 \\uC704\\uC82F\\uC758 \\uC724\\uACFD\\uC120 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBAA9\\uB85D \\uBC0F \\uD2B8\\uB9AC\\uC5D0\\uC11C \\uC720\\uD615 \\uD544\\uD130 \\uC704\\uC82F\\uC758 \\uADF8\\uB9BC\\uC790 \\uC0C9\\uC0C1\\uC785\\uB2C8\\uB2E4.\",\"\\uD544\\uD130\\uB9C1\\uB41C \\uC77C\\uCE58 \\uD56D\\uBAA9\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD544\\uD130\\uB9C1\\uB41C \\uC77C\\uCE58 \\uD56D\\uBAA9\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uAC00\\uC774\\uB4DC\\uC758 \\uD2B8\\uB9AC \\uC2A4\\uD2B8\\uB85C\\uD06C \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD65C\\uC131 \\uC0C1\\uD0DC\\uAC00 \\uC544\\uB2CC \\uB4E4\\uC5EC\\uC4F0\\uAE30 \\uC548\\uB0B4\\uC120\\uC758 \\uD2B8\\uB9AC \\uC2A4\\uD2B8\\uB85C\\uD06C \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC5F4 \\uC0AC\\uC774\\uC758 \\uD45C \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD640\\uC218 \\uD14C\\uC774\\uBE14 \\uD589\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uAC15\\uC870\\uB418\\uC9C0 \\uC54A\\uC740 \\uD56D\\uBAA9\\uC758 \\uBAA9\\uB85D/\\uD2B8\\uB9AC \\uC804\\uACBD\\uC0C9. \",\"\\uD655\\uC778\\uB780 \\uC704\\uC82F\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD655\\uC778\\uB780 \\uC704\\uC82F\\uC774 \\uD3EC\\uD568\\uB41C \\uC694\\uC18C\\uAC00 \\uC120\\uD0DD\\uB41C \\uACBD\\uC6B0\\uC758 \\uD655\\uC778\\uB780 \\uC704\\uC82F \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD655\\uC778\\uB780 \\uC704\\uC82F\\uC758 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD655\\uC778\\uB780 \\uC704\\uC82F\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD655\\uC778\\uB780 \\uC704\\uC82F\\uC774 \\uD3EC\\uD568\\uB41C \\uC694\\uC18C\\uAC00 \\uC120\\uD0DD\\uB41C \\uACBD\\uC6B0\\uC758 \\uD655\\uC778\\uB780 \\uC704\\uC82F \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB300\\uC2E0 quickInputList.focusBackground\\uB97C \\uC0AC\\uC6A9\\uD558\\uC138\\uC694.\",\"\\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uD56D\\uBAA9\\uC758 \\uBE60\\uB978 \\uC120\\uD0DD\\uAE30 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uD56D\\uBAA9\\uC758 \\uBE60\\uB978 \\uC120\\uD0DD\\uAE30 \\uC544\\uC774\\uCF58 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uD56D\\uBAA9\\uC758 \\uBE60\\uB978 \\uC120\\uD0DD\\uAE30 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBA54\\uB274 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBA54\\uB274 \\uD56D\\uBAA9 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBA54\\uB274 \\uD56D\\uBAA9 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBA54\\uB274\\uC758 \\uC120\\uD0DD\\uB41C \\uBA54\\uB274 \\uD56D\\uBAA9 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBA54\\uB274\\uC758 \\uC120\\uD0DD\\uB41C \\uBA54\\uB274 \\uD56D\\uBAA9 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBA54\\uB274\\uC758 \\uC120\\uD0DD\\uB41C \\uBA54\\uB274 \\uD56D\\uBAA9 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBA54\\uB274\\uC5D0\\uC11C \\uAD6C\\uBD84 \\uAE30\\uD638 \\uBA54\\uB274 \\uD56D\\uBAA9\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4\\uB97C \\uC0AC\\uC6A9\\uD558\\uC5EC \\uC791\\uC5C5 \\uC704\\uB85C \\uB9C8\\uC6B0\\uC2A4\\uB97C \\uAC00\\uC838\\uAC00\\uB294 \\uACBD\\uC6B0 \\uB3C4\\uAD6C \\uBAA8\\uC74C \\uBC30\\uACBD\",\"\\uB9C8\\uC6B0\\uC2A4\\uB97C \\uC0AC\\uC6A9\\uD558\\uC5EC \\uC791\\uC5C5 \\uC704\\uB85C \\uB9C8\\uC6B0\\uC2A4\\uB97C \\uAC00\\uC838\\uAC00\\uB294 \\uACBD\\uC6B0 \\uB3C4\\uAD6C \\uBAA8\\uC74C \\uC724\\uACFD\\uC120\",\"\\uC791\\uC5C5 \\uC704\\uC5D0 \\uB9C8\\uC6B0\\uC2A4\\uB97C \\uB193\\uC558\\uC744 \\uB54C \\uB3C4\\uAD6C \\uBAA8\\uC74C \\uBC30\\uACBD\",\"\\uCF54\\uB4DC \\uC870\\uAC01 \\uD0ED \\uC815\\uC9C0\\uC758 \\uAC15\\uC870 \\uD45C\\uC2DC \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCF54\\uB4DC \\uC870\\uAC01 \\uD0ED \\uC815\\uC9C0\\uC758 \\uAC15\\uC870 \\uD45C\\uC2DC \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCF54\\uB4DC \\uC870\\uAC01 \\uB9C8\\uC9C0\\uB9C9 \\uD0ED \\uC815\\uC9C0\\uC758 \\uAC15\\uC870 \\uD45C\\uC2DC \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCF54\\uB4DC \\uC870\\uAC01 \\uB9C8\\uC9C0\\uB9C9 \\uD0ED \\uC815\\uC9C0\\uC758 \\uAC15\\uC870 \\uD45C\\uC2DC \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uC774\\uB3D9 \\uACBD\\uB85C \\uD56D\\uBAA9\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC774\\uB3D9 \\uACBD\\uB85C \\uD56D\\uBAA9\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3EC\\uCEE4\\uC2A4\\uAC00 \\uC788\\uB294 \\uC774\\uB3D9 \\uACBD\\uB85C \\uD56D\\uBAA9\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC120\\uD0DD\\uD55C \\uC774\\uB3D9 \\uACBD\\uB85C \\uD56D\\uBAA9\\uC758 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC774\\uB3D9 \\uACBD\\uB85C \\uD56D\\uBAA9 \\uC120\\uD0DD\\uAE30\\uC758 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uBCD1\\uD569 \\uCDA9\\uB3CC\\uC758 \\uD604\\uC7AC \\uD5E4\\uB354 \\uBC30\\uACBD\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uBCD1\\uD569 \\uCDA9\\uB3CC\\uC758 \\uD604\\uC7AC \\uCF58\\uD150\\uCE20 \\uBC30\\uACBD\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uBCD1\\uD569 \\uCDA9\\uB3CC\\uC758 \\uB4E4\\uC5B4\\uC624\\uB294 \\uD5E4\\uB354 \\uBC30\\uACBD\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uBCD1\\uD569 \\uCDA9\\uB3CC\\uC758 \\uB4E4\\uC5B4\\uC624\\uB294 \\uCF58\\uD150\\uCE20 \\uBC30\\uACBD\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uBCD1\\uD569 \\uCDA9\\uB3CC\\uC758 \\uACF5\\uD1B5 \\uC0C1\\uC704 \\uD5E4\\uB354 \\uBC30\\uACBD\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uBCD1\\uD569 \\uCDA9\\uB3CC\\uC758 \\uACF5\\uD1B5 \\uC0C1\\uC704 \\uCF58\\uD150\\uCE20 \\uBC30\\uACBD\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uBCD1\\uD569 \\uCDA9\\uB3CC\\uC5D0\\uC11C \\uD5E4\\uB354 \\uBC0F \\uC2A4\\uD50C\\uB9AC\\uD130\\uC758 \\uD14C\\uB450\\uB9AC \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uBCD1\\uD569 \\uCDA9\\uB3CC\\uC5D0\\uC11C \\uD604\\uC7AC \\uAC1C\\uC694 \\uB208\\uAE08 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uBCD1\\uD569 \\uCDA9\\uB3CC\\uC5D0\\uC11C \\uC218\\uC2E0 \\uAC1C\\uC694 \\uB208\\uAE08 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC778\\uB77C\\uC778 \\uBCD1\\uD569 \\uCDA9\\uB3CC\\uC5D0\\uC11C \\uACF5\\uD1B5 \\uACFC\\uAC70 \\uAC1C\\uC694 \\uB208\\uAE08 \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC77C\\uCE58 \\uD56D\\uBAA9 \\uCC3E\\uAE30\\uC758 \\uAC1C\\uC694 \\uB208\\uAE08\\uC790 \\uD45C\\uC2DD \\uC0C9\\uC785\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC120\\uD0DD \\uD56D\\uBAA9\\uC758 \\uAC1C\\uC694 \\uB208\\uAE08\\uC790 \\uD45C\\uC2DD \\uC0C9\\uC774 \\uAC15\\uC870 \\uD45C\\uC2DC\\uB429\\uB2C8\\uB2E4. \\uAE30\\uBCF8 \\uC7A5\\uC2DD\\uC744 \\uC228\\uAE30\\uC9C0 \\uC54A\\uB3C4\\uB85D \\uC0C9\\uC740 \\uBD88\\uD22C\\uBA85\\uD558\\uC9C0 \\uC54A\\uC544\\uC57C \\uD569\\uB2C8\\uB2E4.\",\"\\uC77C\\uCE58\\uD558\\uB294 \\uD56D\\uBAA9\\uC744 \\uCC3E\\uAE30 \\uC704\\uD55C \\uBBF8\\uB2C8\\uB9F5 \\uD45C\\uC2DD \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uC120\\uD0DD\\uC744 \\uBC18\\uBCF5\\uD558\\uAE30 \\uC704\\uD55C \\uBBF8\\uB2C8\\uB9F5 \\uD45C\\uC2DD \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD3B8\\uC9D1\\uAE30 \\uC120\\uD0DD \\uC791\\uC5C5\\uC744 \\uC704\\uD55C \\uBBF8\\uB2C8\\uB9F5 \\uB9C8\\uCEE4 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uC624\\uB958\\uC5D0 \\uB300\\uD55C \\uBBF8\\uB2C8\\uB9F5 \\uB9C8\\uCEE4 \\uC0C9\\uC0C1\\uC785\\uB2C8\\uB2E4.\",\"\\uACBD\\uACE0\\uC758 \\uBBF8\\uB2C8\\uB9F5 \\uB9C8\\uCEE4 \\uC0C9\\uC0C1\\uC785\\uB2C8\\uB2E4.\",\"\\uBBF8\\uB2C8\\uB9F5 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",'\\uBBF8\\uB2C8\\uB9F5\\uC5D0\\uC11C \\uB80C\\uB354\\uB9C1\\uB41C \\uC804\\uACBD \\uC694\\uC18C\\uC758 \\uBD88\\uD22C\\uBA85\\uB3C4\\uC785\\uB2C8\\uB2E4. \\uC608\\uB97C \\uB4E4\\uC5B4, \"#000000c0\"\\uC740 \\uBD88\\uD22C\\uBA85\\uB3C4 75%\\uB85C \\uC694\\uC18C\\uB97C \\uB80C\\uB354\\uB9C1\\uD569\\uB2C8\\uB2E4.',\"\\uBBF8\\uB2C8\\uB9F5 \\uC2AC\\uB77C\\uC774\\uB354 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uB9C8\\uC6B0\\uC2A4\\uB85C \\uAC00\\uB9AC\\uD0AC \\uB54C \\uBBF8\\uB2C8\\uB9F5 \\uC2AC\\uB77C\\uC774\\uB354 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uD074\\uB9AD\\uD588\\uC744 \\uB54C \\uBBF8\\uB2C8\\uB9F5 \\uC2AC\\uB77C\\uC774\\uB354 \\uBC30\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBB38\\uC81C \\uC624\\uB958 \\uC544\\uC774\\uCF58\\uC5D0 \\uC0AC\\uC6A9\\uB418\\uB294 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBB38\\uC81C \\uACBD\\uACE0 \\uC544\\uC774\\uCF58\\uC5D0 \\uC0AC\\uC6A9\\uB418\\uB294 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uBB38\\uC81C \\uC815\\uBCF4 \\uC544\\uC774\\uCF58\\uC5D0 \\uC0AC\\uC6A9\\uB418\\uB294 \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCC28\\uD2B8\\uC5D0 \\uC0AC\\uC6A9\\uB41C \\uC804\\uACBD\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCC28\\uD2B8 \\uAC00\\uB85C\\uC904\\uC5D0 \\uC0AC\\uC6A9\\uB41C \\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCC28\\uD2B8 \\uC2DC\\uAC01\\uD654\\uC5D0 \\uC0AC\\uC6A9\\uB418\\uB294 \\uBE68\\uAC04\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCC28\\uD2B8 \\uC2DC\\uAC01\\uD654\\uC5D0 \\uC0AC\\uC6A9\\uB418\\uB294 \\uD30C\\uB780\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCC28\\uD2B8 \\uC2DC\\uAC01\\uD654\\uC5D0 \\uC0AC\\uC6A9\\uB418\\uB294 \\uB178\\uB780\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCC28\\uD2B8 \\uC2DC\\uAC01\\uD654\\uC5D0 \\uC0AC\\uC6A9\\uB418\\uB294 \\uC8FC\\uD669\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCC28\\uD2B8 \\uC2DC\\uAC01\\uD654\\uC5D0 \\uC0AC\\uC6A9\\uB418\\uB294 \\uB179\\uC0C9\\uC785\\uB2C8\\uB2E4.\",\"\\uCC28\\uD2B8 \\uC2DC\\uAC01\\uD654\\uC5D0 \\uC0AC\\uC6A9\\uB418\\uB294 \\uC790\\uC8FC\\uC0C9\\uC785\\uB2C8\\uB2E4.\"],\"vs/platform/theme/common/iconRegistry\":[\"\\uC0AC\\uC6A9\\uD560 \\uAE00\\uAF34\\uC758 ID\\uC785\\uB2C8\\uB2E4. \\uC124\\uC815\\uD558\\uC9C0 \\uC54A\\uC73C\\uBA74 \\uCCAB \\uBC88\\uC9F8\\uB85C \\uC815\\uC758\\uD55C \\uAE00\\uAF34\\uC774 \\uC0AC\\uC6A9\\uB429\\uB2C8\\uB2E4.\",\"\\uC544\\uC774\\uCF58 \\uC815\\uC758\\uC640 \\uC5F0\\uACB0\\uB41C \\uAE00\\uAF34 \\uBB38\\uC790\\uC785\\uB2C8\\uB2E4.\",\"\\uC704\\uC82F\\uC5D0\\uC11C \\uB2EB\\uAE30 \\uC791\\uC5C5\\uC758 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uC774\\uC804 \\uD3B8\\uC9D1\\uAE30 \\uC704\\uCE58\\uB85C \\uC774\\uB3D9 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\",\"\\uB2E4\\uC74C \\uD3B8\\uC9D1\\uAE30 \\uC704\\uCE58\\uB85C \\uC774\\uB3D9 \\uC544\\uC774\\uCF58\\uC785\\uB2C8\\uB2E4.\"],\"vs/platform/undoRedo/common/undoRedoService\":[\"{0} \\uD30C\\uC77C\\uC774 \\uB2EB\\uD788\\uACE0 \\uB514\\uC2A4\\uD06C\\uC5D0\\uC11C \\uC218\\uC815\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\"{0} \\uD30C\\uC77C\\uC740 \\uD638\\uD658\\uB418\\uC9C0 \\uC54A\\uB294 \\uBC29\\uC2DD\\uC73C\\uB85C \\uC218\\uC815\\uB418\\uC5C8\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA8\\uB4E0 \\uD30C\\uC77C\\uC5D0\\uC11C '{0}'\\uC744(\\uB97C) \\uC2E4\\uD589 \\uCDE8\\uC18C\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. {1}\",\"\\uBAA8\\uB4E0 \\uD30C\\uC77C\\uC5D0\\uC11C '{0}'\\uC744(\\uB97C) \\uC2E4\\uD589 \\uCDE8\\uC18C\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. {1}\",\"{1}\\uC5D0 \\uBCC0\\uACBD \\uB0B4\\uC6A9\\uC774 \\uC801\\uC6A9\\uB418\\uC5C8\\uC73C\\uBBC0\\uB85C \\uBAA8\\uB4E0 \\uD30C\\uC77C\\uC5D0\\uC11C '{0}'\\uC744(\\uB97C) \\uC2E4\\uD589 \\uCDE8\\uC18C\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"{1}\\uC5D0\\uC11C \\uC2E4\\uD589 \\uCDE8\\uC18C \\uB610\\uB294 \\uB2E4\\uC2DC \\uC2E4\\uD589 \\uC791\\uC5C5\\uC774 \\uC774\\uBBF8 \\uC2E4\\uD589 \\uC911\\uC774\\uBBC0\\uB85C \\uBAA8\\uB4E0 \\uD30C\\uC77C\\uC5D0\\uC11C '{0}'\\uC744(\\uB97C) \\uC2E4\\uD589 \\uCDE8\\uC18C\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uADF8\\uB3D9\\uC548 \\uC2E4\\uD589 \\uCDE8\\uC18C \\uB610\\uB294 \\uB2E4\\uC2DC \\uC2E4\\uD589 \\uC791\\uC5C5\\uC774 \\uBC1C\\uC0DD\\uD588\\uAE30 \\uB54C\\uBB38\\uC5D0 \\uBAA8\\uB4E0 \\uD30C\\uC77C\\uC5D0\\uC11C '{0}'\\uC744(\\uB97C) \\uC2E4\\uD589 \\uCDE8\\uC18C\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uBAA8\\uB4E0 \\uD30C\\uC77C\\uC5D0\\uC11C '{0}'\\uC744(\\uB97C) \\uC2E4\\uD589 \\uCDE8\\uC18C\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\"\\uD30C\\uC77C {0}\\uAC1C\\uC5D0\\uC11C \\uC2E4\\uD589 \\uCDE8\\uC18C(&&U)\",\"\\uC774 \\uD30C\\uC77C \\uC2E4\\uD589 \\uCDE8\\uC18C(&&F)\",\"\\uC2E4\\uD589 \\uCDE8\\uC18C \\uB610\\uB294 \\uB2E4\\uC2DC \\uC2E4\\uD589 \\uC791\\uC5C5\\uC774 \\uC774\\uBBF8 \\uC2E4\\uD589 \\uC911\\uC774\\uBBC0\\uB85C '{0}'\\uC744(\\uB97C) \\uC2E4\\uD589 \\uCDE8\\uC18C\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"'{0}'\\uC744(\\uB97C) \\uC2E4\\uD589 \\uCDE8\\uC18C\\uD558\\uC2DC\\uACA0\\uC2B5\\uB2C8\\uAE4C?\",\"\\uC608(&&Y)\",\"\\uC544\\uB2C8\\uC694\",\"\\uBAA8\\uB4E0 \\uD30C\\uC77C\\uC5D0\\uC11C '{0}'\\uC744(\\uB97C) \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. {1}\",\"\\uBAA8\\uB4E0 \\uD30C\\uC77C\\uC5D0\\uC11C '{0}'\\uC744(\\uB97C) \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4. {1}\",\"{1}\\uC5D0 \\uBCC0\\uACBD \\uB0B4\\uC6A9\\uC774 \\uC801\\uC6A9\\uB418\\uC5C8\\uC73C\\uBBC0\\uB85C \\uBAA8\\uB4E0 \\uD30C\\uC77C\\uC5D0\\uC11C '{0}'\\uC744(\\uB97C) \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"{1}\\uC5D0\\uC11C \\uC2E4\\uD589 \\uCDE8\\uC18C \\uB610\\uB294 \\uB2E4\\uC2DC \\uC2E4\\uD589 \\uC791\\uC5C5\\uC774 \\uC774\\uBBF8 \\uC2E4\\uD589 \\uC911\\uC774\\uBBC0\\uB85C \\uBAA8\\uB4E0 \\uD30C\\uC77C\\uC5D0\\uC11C '{0}'\\uC744(\\uB97C) \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uADF8\\uB3D9\\uC548 \\uC2E4\\uD589 \\uCDE8\\uC18C \\uB610\\uB294 \\uB2E4\\uC2DC \\uC2E4\\uD589 \\uC791\\uC5C5\\uC774 \\uBC1C\\uC0DD\\uD588\\uAE30 \\uB54C\\uBB38\\uC5D0 \\uBAA8\\uB4E0 \\uD30C\\uC77C\\uC5D0\\uC11C '{0}'\\uC744(\\uB97C) \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\",\"\\uC2E4\\uD589 \\uCDE8\\uC18C \\uB610\\uB294 \\uB2E4\\uC2DC \\uC2E4\\uD589 \\uC791\\uC5C5\\uC774 \\uC774\\uBBF8 \\uC2E4\\uD589 \\uC911\\uC774\\uBBC0\\uB85C '{0}'\\uC744(\\uB97C) \\uB2E4\\uC2DC \\uC2E4\\uD589\\uD560 \\uC218 \\uC5C6\\uC2B5\\uB2C8\\uB2E4.\"],\"vs/platform/workspace/common/workspace\":[\"\\uCF54\\uB4DC \\uC791\\uC5C5 \\uC601\\uC5ED\"]});\n\n//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.ko.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/editor/editor.main.nls.ru.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/editor/editor.main.nls.ru\",{\"vs/base/browser/ui/actionbar/actionViewItems\":[\"{0} ({1})\"],\"vs/base/browser/ui/findinput/findInput\":[\"\\u0432\\u0445\\u043E\\u0434\\u043D\\u044B\\u0435 \\u0434\\u0430\\u043D\\u043D\\u044B\\u0435\"],\"vs/base/browser/ui/findinput/findInputToggles\":[\"\\u0421 \\u0443\\u0447\\u0435\\u0442\\u043E\\u043C \\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0430\",\"\\u0421\\u043B\\u043E\\u0432\\u043E \\u0446\\u0435\\u043B\\u0438\\u043A\\u043E\\u043C\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u0440\\u0435\\u0433\\u0443\\u043B\\u044F\\u0440\\u043D\\u043E\\u0435 \\u0432\\u044B\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0435\"],\"vs/base/browser/ui/findinput/replaceInput\":[\"\\u0432\\u0445\\u043E\\u0434\\u043D\\u044B\\u0435 \\u0434\\u0430\\u043D\\u043D\\u044B\\u0435\",\"\\u0421\\u043E\\u0445\\u0440\\u0430\\u043D\\u0438\\u0442\\u044C \\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\"],\"vs/base/browser/ui/hover/hoverWidget\":[\"Inspect this in the accessible view with {0}.\",\"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\"],\"vs/base/browser/ui/iconLabel/iconLabelHover\":[\"\\u0417\\u0430\\u0433\\u0440\\u0443\\u0437\\u043A\\u0430\\u2026\"],\"vs/base/browser/ui/inputbox/inputBox\":[\"\\u041E\\u0448\\u0438\\u0431\\u043A\\u0430: {0}\",\"\\u041F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435: {0}\",\"\\u0418\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u044F: {0}\",\"\\u0434\\u043B\\u044F \\u0436\\u0443\\u0440\\u043D\\u0430\\u043B\\u0430\",\"\\u041E\\u0447\\u0438\\u0449\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0432\\u0445\\u043E\\u0434\\u043D\\u044B\\u0435 \\u0434\\u0430\\u043D\\u043D\\u044B\\u0435\"],\"vs/base/browser/ui/keybindingLabel/keybindingLabel\":[\"\\u0441\\u0432\\u043E\\u0431\\u043E\\u0434\\u043D\\u044B\\u0439\"],\"vs/base/browser/ui/selectBox/selectBoxCustom\":[\"\\u041F\\u043E\\u043B\\u0435 \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430\"],\"vs/base/browser/ui/toolbar/toolbar\":[\"\\u0414\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F...\"],\"vs/base/browser/ui/tree/abstractTree\":[\"\\u0424\\u0438\\u043B\\u044C\\u0442\\u0440\",\"\\u041D\\u0435\\u0447\\u0435\\u0442\\u043A\\u043E\\u0435 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0435\",\"\\u0412\\u0432\\u0435\\u0434\\u0438\\u0442\\u0435 \\u0442\\u0435\\u043A\\u0441\\u0442 \\u0434\\u043B\\u044F \\u0444\\u0438\\u043B\\u044C\\u0442\\u0440\\u0430\",\"\\u0412\\u0432\\u043E\\u0434 \\u0434\\u043B\\u044F \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430\",\"\\u0412\\u0432\\u043E\\u0434 \\u0434\\u043B\\u044F \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430\",\"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\",\"\\u042D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u044B.\"],\"vs/base/common/actions\":[\"(\\u043F\\u0443\\u0441\\u0442\\u043E)\"],\"vs/base/common/errorMessage\":[\"{0}: {1}\",\"\\u041F\\u0440\\u043E\\u0438\\u0437\\u043E\\u0448\\u043B\\u0430 \\u0441\\u0438\\u0441\\u0442\\u0435\\u043C\\u043D\\u0430\\u044F \\u043E\\u0448\\u0438\\u0431\\u043A\\u0430 ({0})\",\"\\u041F\\u0440\\u043E\\u0438\\u0437\\u043E\\u0448\\u043B\\u0430 \\u043D\\u0435\\u0438\\u0437\\u0432\\u0435\\u0441\\u0442\\u043D\\u0430\\u044F \\u043E\\u0448\\u0438\\u0431\\u043A\\u0430. \\u041F\\u043E\\u0434\\u0440\\u043E\\u0431\\u043D\\u044B\\u0435 \\u0441\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F \\u0441\\u043C. \\u0432 \\u0436\\u0443\\u0440\\u043D\\u0430\\u043B\\u0435.\",\"\\u041F\\u0440\\u043E\\u0438\\u0437\\u043E\\u0448\\u043B\\u0430 \\u043D\\u0435\\u0438\\u0437\\u0432\\u0435\\u0441\\u0442\\u043D\\u0430\\u044F \\u043E\\u0448\\u0438\\u0431\\u043A\\u0430. \\u041F\\u043E\\u0434\\u0440\\u043E\\u0431\\u043D\\u044B\\u0435 \\u0441\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F \\u0441\\u043C. \\u0432 \\u0436\\u0443\\u0440\\u043D\\u0430\\u043B\\u0435.\",\"{0} (\\u0432\\u0441\\u0435\\u0433\\u043E \\u043E\\u0448\\u0438\\u0431\\u043E\\u043A: {1})\",\"\\u041F\\u0440\\u043E\\u0438\\u0437\\u043E\\u0448\\u043B\\u0430 \\u043D\\u0435\\u0438\\u0437\\u0432\\u0435\\u0441\\u0442\\u043D\\u0430\\u044F \\u043E\\u0448\\u0438\\u0431\\u043A\\u0430. \\u041F\\u043E\\u0434\\u0440\\u043E\\u0431\\u043D\\u044B\\u0435 \\u0441\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F \\u0441\\u043C. \\u0432 \\u0436\\u0443\\u0440\\u043D\\u0430\\u043B\\u0435.\"],\"vs/base/common/keybindingLabels\":[\"CTRL\",\"SHIFT\",\"ALT\",\"Windows\",\"CTRL\",\"SHIFT\",\"ALT\",\"Super\",\"CTRL\",\"SHIFT\",\"\\u041F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\",\"\\u041A\\u043E\\u043C\\u0430\\u043D\\u0434\\u0430\",\"CTRL\",\"SHIFT\",\"ALT\",\"Windows\",\"CTRL\",\"SHIFT\",\"ALT\",\"Super\"],\"vs/base/common/platform\":[\"_\"],\"vs/editor/browser/controller/textAreaHandler\":[\"\\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\",\"\\u0421\\u0435\\u0439\\u0447\\u0430\\u0441 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043D\\u0435\\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u0435\\u043D.\",\"{0} \\u0427\\u0442\\u043E\\u0431\\u044B \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043E\\u043F\\u0442\\u0438\\u043C\\u0438\\u0437\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u043D\\u044B\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043C \\u0447\\u0438\\u0442\\u0430\\u0442\\u0435\\u043B\\u044F, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 {1}\",'{0} \\u0427\\u0442\\u043E\\u0431\\u044B \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043E\\u043F\\u0442\\u0438\\u043C\\u0438\\u0437\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u043D\\u044B\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043C \\u0447\\u0438\\u0442\\u0430\\u0442\\u0435\\u043B\\u044F, \\u043E\\u0442\\u043A\\u0440\\u043E\\u0439\\u0442\\u0435 \\u0431\\u044B\\u0441\\u0442\\u0440\\u044B\\u0439 \\u0432\\u044B\\u0431\\u043E\\u0440 \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E {1} \\u0438 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u0443 \"\\u0410\\u043A\\u0442\\u0438\\u0432\\u0430\\u0446\\u0438\\u044F \\u0440\\u0435\\u0436\\u0438\\u043C\\u0430 \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\\u0441\\u0442\\u0435\\u0439 \\u0434\\u043B\\u044F \\u0447\\u0438\\u0442\\u0430\\u0442\\u0435\\u043B\\u044F\", \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0439 \\u0441\\u0435\\u0439\\u0447\\u0430\\u0441 \\u043D\\u0435 \\u043C\\u043E\\u0436\\u0435\\u0442 \\u0431\\u044B\\u0442\\u044C \\u0430\\u043A\\u0442\\u0438\\u0432\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B.','{0} \\u041D\\u0430\\u0437\\u043D\\u0430\\u0447\\u044C\\u0442\\u0435 \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u0435 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448 \\u0434\\u043B\\u044F \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B \"\\u0410\\u043A\\u0442\\u0438\\u0432\\u0430\\u0446\\u0438\\u044F \\u0440\\u0435\\u0436\\u0438\\u043C\\u0430 \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\\u0441\\u0442\\u0435\\u0439 \\u0434\\u043B\\u044F \\u0447\\u0438\\u0442\\u0430\\u0442\\u0435\\u043B\\u044F\", \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u044F \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0435\\u043C\\u044B\\u0445 \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u0439 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448 \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E {1} \\u0438 \\u0437\\u0430\\u043F\\u0443\\u0441\\u0442\\u0438\\u0442\\u0435 \\u0435\\u0433\\u043E.'],\"vs/editor/browser/coreCommands\":[\"\\u0420\\u0430\\u0437\\u043C\\u0435\\u0449\\u0430\\u0442\\u044C \\u043D\\u0430 \\u043A\\u043E\\u043D\\u0446\\u0435 \\u0434\\u0430\\u0436\\u0435 \\u0434\\u043B\\u044F \\u0431\\u043E\\u043B\\u0435\\u0435 \\u0434\\u043B\\u0438\\u043D\\u043D\\u044B\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A\",\"\\u0420\\u0430\\u0437\\u043C\\u0435\\u0449\\u0430\\u0442\\u044C \\u043D\\u0430 \\u043A\\u043E\\u043D\\u0446\\u0435 \\u0434\\u0430\\u0436\\u0435 \\u0434\\u043B\\u044F \\u0431\\u043E\\u043B\\u0435\\u0435 \\u0434\\u043B\\u0438\\u043D\\u043D\\u044B\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A\",\"\\u0414\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0435 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u044B \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u044B.\"],\"vs/editor/browser/editorExtensions\":[\"&&\\u041E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\",\"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\",\"&&\\u041F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0438\\u0442\\u044C\",\"\\u0412\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C\",\"&&\\u0412\\u044B\\u0434\\u0435\\u043B\\u0438\\u0442\\u044C \\u0432\\u0441\\u0435\",\"\\u0412\\u044B\\u0431\\u0440\\u0430\\u0442\\u044C \\u0432\\u0441\\u0435\"],\"vs/editor/browser/widget/codeEditorWidget\":[\"\\u0427\\u0438\\u0441\\u043B\\u043E \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u043E\\u0432 \\u043E\\u0433\\u0440\\u0430\\u043D\\u0438\\u0447\\u0435\\u043D\\u043E {0}. \\u0414\\u043B\\u044F \\u043F\\u0440\\u043E\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F \\u043A\\u0440\\u0443\\u043F\\u043D\\u044B\\u0445 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0439 \\u0440\\u0435\\u043A\\u043E\\u043C\\u0435\\u043D\\u0434\\u0443\\u0435\\u0442\\u0441\\u044F \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C [\\u043F\\u043E\\u0438\\u0441\\u043A \\u0438 \\u0437\\u0430\\u043C\\u0435\\u043D\\u0443](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) \\u0438\\u043B\\u0438 \\u0443\\u0432\\u0435\\u043B\\u0438\\u0447\\u0438\\u0442\\u044C \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430 \\u043E\\u0433\\u0440\\u0430\\u043D\\u0438\\u0447\\u0435\\u043D\\u0438\\u044F \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u0438\\u0445 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u043E\\u0432 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0423\\u0432\\u0435\\u043B\\u0438\\u0447\\u0438\\u0442\\u044C \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 \\u043E\\u0433\\u0440\\u0430\\u043D\\u0438\\u0447\\u0435\\u043D\\u0438\\u044F \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u0438\\u0445 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u043E\\u0432\"],\"vs/editor/browser/widget/diffEditor.contribution\":[\"\\u0414\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u043E\\u0435 \\u043F\\u0440\\u0435\\u0434\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0440\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u0439\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u043C\\u0443 \\u0440\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u044E\",\"\\u041E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044C \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u043E \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0441 \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u043A\\u043E\\u0439 \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\\u0441\\u0442\\u0435\\u0439 \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u0430 \\u0441\\u0440\\u0430\\u0432\\u043D\\u0435\\u043D\\u0438\\u0439\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u043C\\u0443 \\u0440\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u044E\"],\"vs/editor/browser/widget/diffEditorWidget\":[\"\\u041E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0434\\u043B\\u044F \\u0432\\u0441\\u0442\\u0430\\u0432\\u043E\\u043A \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u041E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0434\\u043B\\u044F \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.\",\" \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 SHIFT + F7 \\u0434\\u043B\\u044F \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u043F\\u043E \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u044F\\u043C\",\"\\u041D\\u0435\\u043B\\u044C\\u0437\\u044F \\u0441\\u0440\\u0430\\u0432\\u043D\\u0438\\u0442\\u044C \\u0444\\u0430\\u0439\\u043B\\u044B, \\u043F\\u043E\\u0442\\u043E\\u043C\\u0443 \\u0447\\u0442\\u043E \\u043E\\u0434\\u0438\\u043D \\u0438\\u0437 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432 \\u0441\\u043B\\u0438\\u0448\\u043A\\u043E\\u043C \\u0431\\u043E\\u043B\\u044C\\u0448\\u043E\\u0439.\",\"\\u0412\\u044B\\u0431\\u0435\\u0440\\u0438\\u0442\\u0435, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0435\"],\"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\":['\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C\" \\u0432 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0435 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0441 \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u043A\\u043E\\u0439 \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\\u0441\\u0442\\u0435\\u0439 \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u0430 \\u0441\\u0440\\u0430\\u0432\\u043D\\u0435\\u043D\\u0438\\u0439','\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C\" \\u0432 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0435 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0441 \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u043A\\u043E\\u0439 \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\\u0441\\u0442\\u0435\\u0439 \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u0430 \\u0441\\u0440\\u0430\\u0432\\u043D\\u0435\\u043D\\u0438\\u0439','\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\" \\u0432 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0435 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0441 \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u043A\\u043E\\u0439 \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\\u0441\\u0442\\u0435\\u0439 \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u0430 \\u0441\\u0440\\u0430\\u0432\\u043D\\u0435\\u043D\\u0438\\u0439',\"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\",\"\\u0414\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u043E\\u0435 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u043E \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u0430 \\u0441\\u0440\\u0430\\u0432\\u043D\\u0435\\u043D\\u0438\\u044F. \\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 \\u0421\\u0422\\u0420\\u0415\\u041B\\u041A\\u0410 \\u0412\\u0412\\u0415\\u0420\\u0425 \\u0438 \\u0421\\u0422\\u0420\\u0415\\u041B\\u041A\\u0410 \\u0412\\u041D\\u0418\\u0417 \\u0434\\u043B\\u044F \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0449\\u0435\\u043D\\u0438\\u044F.\",\"\\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u043D\\u0435 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u044B\",\"1 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0430\",\"{0} \\u0441\\u0442\\u0440\\u043E\\u043A \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043E\",\"\\u0420\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u0435 {0} \\u0438\\u0437 {1}: \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {2}, {3}, \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {4}, {5}\",\"\\u043F\\u0443\\u0441\\u0442\\u043E\\u0439\",\"{0} \\u043D\\u0435\\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {1}\",\"{0} \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {1} \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {2}\",\"+ {0} \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {1}\",\"- {0} \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {1}\"],\"vs/editor/browser/widget/diffEditorWidget2/colors\":[\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0434\\u043B\\u044F \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430, \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0449\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"The active border color for text that got moved in the diff editor.\"],\"vs/editor/browser/widget/diffEditorWidget2/decorations\":[\"\\u041E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0434\\u043B\\u044F \\u0432\\u0441\\u0442\\u0430\\u0432\\u043E\\u043A \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u041E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0434\\u043B\\u044F \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u0412\\u044B\\u0431\\u0435\\u0440\\u0438\\u0442\\u0435, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0435\"],\"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\":[\" \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 {0}, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044C \\u0441\\u043F\\u0440\\u0430\\u0432\\u043A\\u0443 \\u043F\\u043E \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u043C \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\\u0441\\u0442\\u044F\\u043C.\"],\"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\":[\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u043D\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u043D\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 ({0})\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 ({0})\",\"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u044D\\u0442\\u043E \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0435\"],\"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\":[\"Code moved with changes to line {0}-{1}\",\"Code moved with changes from line {0}-{1}\",\"Code moved to line {0}-{1}\",\"Code moved from line {0}-{1}\"],\"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\":[\"\\u0421\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u043D\\u0435\\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0443\\u044E \\u043E\\u0431\\u043B\\u0430\\u0441\\u0442\\u044C\",\"Click or drag to show more above\",\"Show all\",\"Click or drag to show more below\",\"{0} hidden lines\",\"Double click to unfold\"],\"vs/editor/browser/widget/diffReview\":['\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438 \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C\" \\u0432 \\u043E\\u043A\\u043D\\u0435 \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0438 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.','\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438 \"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C\" \\u0432 \\u043E\\u043A\\u043D\\u0435 \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0438 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.','\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438 \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\" \\u0432 \\u043E\\u043A\\u043D\\u0435 \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0438 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.',\"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\",\"\\u043D\\u0435\\u0442 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A\",\"1 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0430\",\"\\u0421\\u0442\\u0440\\u043E\\u043A \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043E: {0}\",\"\\u0420\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u0435 {0} \\u0438\\u0437 {1}: \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {2}, {3}, \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {4}, {5}\",\"\\u043F\\u0443\\u0441\\u0442\\u043E\\u0439\",\"{0} \\u043D\\u0435\\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {1}\",\"{0} \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {1} \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {2}\",\"+ {0} \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {1}\",\"- {0} \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 {1}\"],\"vs/editor/browser/widget/inlineDiffMargin\":[\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u043D\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u043D\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 ({0})\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 ({0})\",\"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u044D\\u0442\\u043E \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0435\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u043D\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 ({0})\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 ({0})\"],\"vs/editor/common/config/editorConfigurationSchema\":[\"\\u0420\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\",\"\\u0427\\u0438\\u0441\\u043B\\u043E \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u043E\\u0432, \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0449\\u0435\\u0435 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438. \\u042D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043D\\u0430 \\u043E\\u0441\\u043D\\u043E\\u0432\\u0435 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E \\u0444\\u0430\\u0439\\u043B\\u0430, \\u0435\\u0441\\u043B\\u0438 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 {0}.\",'\\u0427\\u0438\\u0441\\u043B\\u043E \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u043E\\u0432, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430, \\u043B\\u0438\\u0431\\u043E `\"tabSize\"` \\u0434\\u043B\\u044F \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F \\u0438\\u0437 \"#editor.tabSize#\". \\u042D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043D\\u0430 \\u043E\\u0441\\u043D\\u043E\\u0432\\u0435 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E \\u0444\\u0430\\u0439\\u043B\\u0430, \\u0435\\u0441\\u043B\\u0438 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \"#editor.detectIndentation#\".',\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u044B \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 TAB. \\u042D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043D\\u0430 \\u043E\\u0441\\u043D\\u043E\\u0432\\u0435 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E \\u0444\\u0430\\u0439\\u043B\\u0430, \\u0435\\u0441\\u043B\\u0438 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 {0}.\",\"\\u041D\\u0430 \\u043E\\u0441\\u043D\\u043E\\u0432\\u0435 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E \\u0444\\u0430\\u0439\\u043B\\u0430 \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0431\\u0443\\u0434\\u0443\\u0442 \\u043B\\u0438 {0} \\u0438 {1} \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u043E\\u0431\\u043D\\u0430\\u0440\\u0443\\u0436\\u0435\\u043D\\u044B \\u043F\\u0440\\u0438 \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u0438\\u0438 \\u0444\\u0430\\u0439\\u043B\\u0430.\",\"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0435\\u043C\\u044B\\u0439 \\u043A\\u043E\\u043D\\u0435\\u0447\\u043D\\u044B\\u0439 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B.\",\"\\u0421\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u0430\\u044F \\u043E\\u0431\\u0440\\u0430\\u0431\\u043E\\u0442\\u043A\\u0430 \\u0434\\u043B\\u044F \\u0431\\u043E\\u043B\\u044C\\u0448\\u0438\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432 \\u0441 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0435\\u043C \\u043D\\u0435\\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0445 \\u0444\\u0443\\u043D\\u043A\\u0446\\u0438\\u0439, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0435 \\u0438\\u043D\\u0442\\u0435\\u043D\\u0441\\u0438\\u0432\\u043D\\u043E \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u044E\\u0442 \\u043F\\u0430\\u043C\\u044F\\u0442\\u044C.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u043E\\u0446\\u0435\\u043D\\u0438\\u0432\\u0430\\u0442\\u044C \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F \\u043D\\u0430 \\u043E\\u0441\\u043D\\u043E\\u0432\\u0435 \\u0441\\u043B\\u043E\\u0432 \\u0432 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u0435.\",\"\\u041F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0441\\u043B\\u043E\\u0432 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0438\\u0437 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u0433\\u043E \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u0430.\",\"\\u041F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0441\\u043B\\u043E\\u0432 \\u0438\\u0437 \\u0432\\u0441\\u0435\\u0445 \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044B\\u0445 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043D\\u0430 \\u043E\\u0434\\u043D\\u043E\\u043C \\u044F\\u0437\\u044B\\u043A\\u0435.\",\"\\u041F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0441\\u043B\\u043E\\u0432 \\u0438\\u0437 \\u0432\\u0441\\u0435\\u0445 \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044B\\u0445 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0438\\u0437 \\u043A\\u0430\\u043A\\u0438\\u0445 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u0432\\u044B\\u0447\\u0438\\u0441\\u043B\\u044F\\u0442\\u044C\\u0441\\u044F \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F \\u043D\\u0430 \\u043E\\u0441\\u043D\\u043E\\u0432\\u0435 \\u0441\\u043B\\u043E\\u0432.\",\"\\u0421\\u0435\\u043C\\u0430\\u043D\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u043E \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0446\\u0432\\u0435\\u0442\\u043E\\u0432\\u044B\\u0445 \\u0442\\u0435\\u043C.\",\"\\u0421\\u0435\\u043C\\u0430\\u043D\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u043E \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0446\\u0432\\u0435\\u0442\\u043E\\u0432\\u044B\\u0445 \\u0442\\u0435\\u043C.\",'\\u0421\\u0435\\u043C\\u0430\\u043D\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0435\\u0442\\u0441\\u044F \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430 \"semanticHighlighting\" \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0439 \\u0446\\u0432\\u0435\\u0442\\u043E\\u0432\\u043E\\u0439 \\u0442\\u0435\\u043C\\u044B.',\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u043F\\u043E\\u043A\\u0430\\u0437 \\u0441\\u0435\\u043C\\u0430\\u043D\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0439 \\u043F\\u043E\\u0434\\u0441\\u0432\\u0435\\u0442\\u043A\\u0438 \\u0434\\u043B\\u044F \\u044F\\u0437\\u044B\\u043A\\u043E\\u0432, \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u044E\\u0449\\u0438\\u0445 \\u0435\\u0435.\",\"\\u041E\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u0431\\u044B\\u0441\\u0442\\u0440\\u044B\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044B\\u043C \\u0434\\u0430\\u0436\\u0435 \\u043F\\u0440\\u0438 \\u0434\\u0432\\u043E\\u0439\\u043D\\u043E\\u043C \\u0449\\u0435\\u043B\\u0447\\u043A\\u0435 \\u043F\\u043E \\u0435\\u0433\\u043E \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u043C\\u0443 \\u0438 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 ESC.\",\"\\u0421\\u0442\\u0440\\u043E\\u043A\\u0438, \\u0434\\u043B\\u0438\\u043D\\u0430 \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0445 \\u043F\\u0440\\u0435\\u0432\\u044B\\u0448\\u0430\\u0435\\u0442 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u043D\\u043E\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435, \\u043D\\u0435 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0447\\u0435\\u043D\\u044B \\u0438\\u0437 \\u0441\\u043E\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0439 \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u043E\\u0434\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0441\\u0442\\u0438\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u0430 \\u043B\\u0438 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0442\\u043A\\u0430 \\u043F\\u0440\\u043E\\u0438\\u0441\\u0445\\u043E\\u0434\\u0438\\u0442\\u044C \\u0430\\u0441\\u0438\\u043D\\u0445\\u0440\\u043E\\u043D\\u043D\\u043E \\u0432 \\u0440\\u0430\\u0431\\u043E\\u0447\\u0435\\u0439 \\u0440\\u043E\\u043B\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0430\\u0441\\u0438\\u043D\\u0445\\u0440\\u043E\\u043D\\u043D\\u0443\\u044E \\u0440\\u0430\\u0437\\u043C\\u0435\\u0442\\u043A\\u0443. \\u0422\\u043E\\u043B\\u044C\\u043A\\u043E \\u0434\\u043B\\u044F \\u043E\\u0442\\u043B\\u0430\\u0434\\u043A\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u0430 \\u043B\\u0438 \\u0430\\u0441\\u0438\\u043D\\u0445\\u0440\\u043E\\u043D\\u043D\\u0430\\u044F \\u0440\\u0430\\u0437\\u043C\\u0435\\u0442\\u043A\\u0430 \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u044F\\u0442\\u044C\\u0441\\u044F \\u043F\\u043E \\u043E\\u0442\\u043D\\u043E\\u0448\\u0435\\u043D\\u0438\\u044E \\u043A \\u0443\\u0441\\u0442\\u0430\\u0440\\u0435\\u0432\\u0448\\u0435\\u0439 \\u0444\\u043E\\u043D\\u043E\\u0432\\u043E\\u0439 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0442\\u043A\\u0435. \\u041C\\u043E\\u0436\\u0435\\u0442 \\u0437\\u0430\\u043C\\u0435\\u0434\\u043B\\u0438\\u0442\\u044C \\u0440\\u0430\\u0437\\u043C\\u0435\\u0442\\u043A\\u0443. \\u0422\\u043E\\u043B\\u044C\\u043A\\u043E \\u0434\\u043B\\u044F \\u043E\\u0442\\u043B\\u0430\\u0434\\u043A\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A, \\u0443\\u0432\\u0435\\u043B\\u0438\\u0447\\u0438\\u0432\\u0430\\u044E\\u0449\\u0438\\u0435 \\u0438\\u043B\\u0438 \\u0443\\u043C\\u0435\\u043D\\u044C\\u0448\\u0430\\u044E\\u0449\\u0438\\u0435 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F.\",\"\\u041E\\u0442\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0438\\u0439 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438 \\u0438\\u043B\\u0438 \\u0441\\u0442\\u0440\\u043E\\u043A\\u043E\\u0432\\u0430\\u044F \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0441\\u0442\\u044C.\",\"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0438\\u0439 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438 \\u0438\\u043B\\u0438 \\u0441\\u0442\\u0440\\u043E\\u043A\\u043E\\u0432\\u0430\\u044F \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0441\\u0442\\u044C.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u043F\\u0430\\u0440\\u044B \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A, \\u0446\\u0432\\u0435\\u0442 \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0445 \\u0437\\u0430\\u0432\\u0438\\u0441\\u0438\\u0442 \\u043E\\u0442 \\u0438\\u0445 \\u0443\\u0440\\u043E\\u0432\\u043D\\u044F \\u0432\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F, \\u0435\\u0441\\u043B\\u0438 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0430 \\u043E\\u043F\\u0446\\u0438\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0446\\u0432\\u0435\\u0442\\u043E\\u043C.\",\"\\u041E\\u0442\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0438\\u0439 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438 \\u0438\\u043B\\u0438 \\u0441\\u0442\\u0440\\u043E\\u043A\\u043E\\u0432\\u0430\\u044F \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0441\\u0442\\u044C.\",\"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0438\\u0439 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438 \\u0438\\u043B\\u0438 \\u0441\\u0442\\u0440\\u043E\\u043A\\u043E\\u0432\\u0430\\u044F \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0441\\u0442\\u044C.\",\"\\u0412\\u0440\\u0435\\u043C\\u044F \\u043E\\u0436\\u0438\\u0434\\u0430\\u043D\\u0438\\u044F \\u0432 \\u043C\\u0438\\u043B\\u043B\\u0438\\u0441\\u0435\\u043A\\u0443\\u043D\\u0434\\u0430\\u0445, \\u043F\\u043E \\u0438\\u0441\\u0442\\u0435\\u0447\\u0435\\u043D\\u0438\\u0438 \\u043A\\u043E\\u0442\\u043E\\u0440\\u043E\\u0433\\u043E \\u0432\\u044B\\u0447\\u0438\\u0441\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 \\u043E\\u0442\\u043C\\u0435\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F. \\u0423\\u043A\\u0430\\u0436\\u0438\\u0442\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 0, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432\\u0440\\u0435\\u043C\\u044F \\u043E\\u0436\\u0438\\u0434\\u0430\\u043D\\u0438\\u044F.\",\"\\u041C\\u0430\\u043A\\u0441\\u0438\\u043C\\u0430\\u043B\\u044C\\u043D\\u044B\\u0439 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440 \\u0444\\u0430\\u0439\\u043B\\u0430 \\u0432 \\u041C\\u0411 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0447\\u0438\\u0441\\u043B\\u0435\\u043D\\u0438\\u044F \\u0440\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u0439. \\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 0 \\u0431\\u0435\\u0437 \\u043E\\u0433\\u0440\\u0430\\u043D\\u0438\\u0447\\u0435\\u043D\\u0438\\u0439.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043A\\u0430\\u043A \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442 \\u043E\\u0442\\u043B\\u0438\\u0447\\u0438\\u044F: \\u0440\\u044F\\u0434\\u043E\\u043C \\u0438\\u043B\\u0438 \\u0432 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0435.\",\"If the diff editor width is smaller than this value, the inline view is used.\",\"If enabled and the editor width is too small, the inline view is used.\",\"\\u0415\\u0441\\u043B\\u0438 \\u044D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 \\u043D\\u0430 \\u043F\\u043E\\u043B\\u0435 \\u0433\\u043B\\u0438\\u0444\\u0430 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0441\\u0442\\u0440\\u0435\\u043B\\u043A\\u0438 \\u0434\\u043B\\u044F \\u043E\\u0442\\u043C\\u0435\\u043D\\u044B \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0439.\",\"\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 \\u0438\\u0433\\u043D\\u043E\\u0440\\u0438\\u0440\\u0443\\u0435\\u0442 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u044F \\u043D\\u0430\\u0447\\u0430\\u043B\\u044C\\u043D\\u043E\\u0433\\u043E \\u0438\\u043B\\u0438 \\u043A\\u043E\\u043D\\u0435\\u0447\\u043D\\u043E\\u0433\\u043E \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u0438\\u043D\\u0434\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440\\u044B +/- \\u0434\\u043B\\u044F \\u0434\\u043E\\u0431\\u0430\\u0432\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0438\\u043B\\u0438 \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0439.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 CodeLens \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0421\\u0442\\u0440\\u043E\\u043A\\u0438 \\u043D\\u0435 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u043F\\u0435\\u0440\\u0435\\u043D\\u043E\\u0441\\u0438\\u0442\\u044C\\u0441\\u044F \\u043D\\u0438\\u043A\\u043E\\u0433\\u0434\\u0430.\",\"\\u0421\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u043F\\u0435\\u0440\\u0435\\u043D\\u043E\\u0441\\u0438\\u0442\\u044C\\u0441\\u044F \\u043F\\u043E \\u0448\\u0438\\u0440\\u0438\\u043D\\u0435 \\u043E\\u043A\\u043D\\u0430 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430.\",\"\\u0421\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u043F\\u0435\\u0440\\u0435\\u043D\\u043E\\u0441\\u0438\\u0442\\u044C\\u0441\\u044F \\u0432 \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0438\\u0438 \\u0441 \\u043D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u043E\\u0439 {0}.\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442 \\u0443\\u0441\\u0442\\u0430\\u0440\\u0435\\u0432\\u0448\\u0438\\u0439 \\u0430\\u043B\\u0433\\u043E\\u0440\\u0438\\u0442\\u043C \\u0441\\u0440\\u0430\\u0432\\u043D\\u0435\\u043D\\u0438\\u044F.\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442 \\u0440\\u0430\\u0441\\u0448\\u0438\\u0440\\u0435\\u043D\\u043D\\u044B\\u0439 \\u0430\\u043B\\u0433\\u043E\\u0440\\u0438\\u0442\\u043C \\u0441\\u0440\\u0430\\u0432\\u043D\\u0435\\u043D\\u0438\\u044F.\",\"Controls whether the diff editor shows unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as a minimum for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as context when comparing unchanged regions. Only works when {0} is set.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 \\u043F\\u043E\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u043E\\u0431\\u043D\\u0430\\u0440\\u0443\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0449\\u0435\\u043D\\u0438\\u044F \\u043A\\u043E\\u0434\\u0430. \\u0420\\u0430\\u0431\\u043E\\u0442\\u0430\\u0435\\u0442 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0435 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430 {0}.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0440\\u0435\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044E, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u0443\\u044E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u043E\\u043C \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 (\\u043D\\u043E\\u0432\\u0430\\u044F \\u0438\\u043B\\u0438 \\u0441\\u0442\\u0430\\u0440\\u0430\\u044F \\u0440\\u0435\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F).\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442 \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 \\u043F\\u0443\\u0441\\u0442\\u044B\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0443\\u0432\\u0438\\u0434\\u0435\\u0442\\u044C, \\u0433\\u0434\\u0435 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u044B \\u0438\\u043B\\u0438 \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u044B \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B.\"],\"vs/editor/common/config/editorOptions\":[\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C API-\\u0438\\u043D\\u0442\\u0435\\u0440\\u0444\\u0435\\u0439\\u0441\\u044B \\u043F\\u043B\\u0430\\u0442\\u0444\\u043E\\u0440\\u043C\\u044B, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C, \\u043F\\u043E\\u0434\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u043E \\u043B\\u0438 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u043E \\u0447\\u0442\\u0435\\u043D\\u0438\\u044F \\u0441 \\u044D\\u043A\\u0440\\u0430\\u043D\\u0430\",\"\\u041E\\u043F\\u0442\\u0438\\u043C\\u0438\\u0437\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0434\\u043B\\u044F \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u0441\\u043E \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u043E\\u043C \\u0447\\u0442\\u0435\\u043D\\u0438\\u044F \\u0441 \\u044D\\u043A\\u0440\\u0430\\u043D\\u0430\",\"\\u041F\\u0440\\u0435\\u0434\\u043F\\u043E\\u043B\\u0430\\u0433\\u0430\\u0442\\u044C, \\u0447\\u0442\\u043E \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u043E \\u0447\\u0442\\u0435\\u043D\\u0438\\u044F \\u0441 \\u044D\\u043A\\u0440\\u0430\\u043D\\u0430 \\u043D\\u0435 \\u043F\\u043E\\u0434\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u043E\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u0437\\u0430\\u043F\\u0443\\u0441\\u0442\\u0438\\u0442\\u044C \\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u044C\\u0441\\u043A\\u0438\\u0439 \\u0438\\u043D\\u0442\\u0435\\u0440\\u0444\\u0435\\u0439\\u0441 \\u0432 \\u0440\\u0435\\u0436\\u0438\\u043C\\u0435 \\u043E\\u043F\\u0442\\u0438\\u043C\\u0438\\u0437\\u0430\\u0446\\u0438\\u0438 \\u0434\\u043B\\u044F \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0430 \\u0447\\u0442\\u0435\\u043D\\u0438\\u044F \\u0441 \\u044D\\u043A\\u0440\\u0430\\u043D\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B \\u043F\\u0440\\u0438 \\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u043F\\u0443\\u0441\\u0442\\u044B\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0438\\u0433\\u043D\\u043E\\u0440\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0439 \\u043F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u044F, \\u0434\\u043E\\u0431\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u0438\\u043B\\u0438 \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u044F \\u0434\\u043B\\u044F \\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0430\\u0440\\u0438\\u0435\\u0432 \\u043A \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430\\u043C.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043C, \\u043A\\u043E\\u043F\\u0438\\u0440\\u0443\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 \\u043F\\u0440\\u0438 \\u043A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u0438 \\u0431\\u0435\\u0437 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440 \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0449\\u0430\\u0442\\u044C\\u0441\\u044F \\u0434\\u043B\\u044F \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 \\u043F\\u0440\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0435.\",\"\\u041D\\u0438\\u043A\\u043E\\u0433\\u0434\\u0430 \\u043D\\u0435 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u043D\\u0430\\u0447\\u0430\\u043B\\u044C\\u043D\\u044B\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0438\\u0437 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0412\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u043D\\u0430\\u0447\\u0430\\u043B\\u044C\\u043D\\u044B\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0438\\u0437 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430, \\u0432\\u043A\\u043B\\u044E\\u0447\\u0430\\u044F \\u0441\\u043B\\u043E\\u0432\\u0430 \\u0432 \\u043F\\u043E\\u0437\\u0438\\u0446\\u0438\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430.\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u043D\\u0430\\u0447\\u0430\\u043B\\u044C\\u043D\\u044B\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0438\\u0437 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043C\\u043E\\u0436\\u043D\\u043E \\u043B\\u0438 \\u043F\\u0435\\u0440\\u0435\\u0434\\u0430\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0438\\u0437 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430, \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u041D\\u0438\\u043A\\u043E\\u0433\\u0434\\u0430 \\u043D\\u0435 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0430\\u0442\\u044C \\u0444\\u0443\\u043D\\u043A\\u0446\\u0438\\u044E \\xAB\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0432 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0438\\xBB \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 (\\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E).\",\"\\u0412\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0430\\u0442\\u044C \\u0444\\u0443\\u043D\\u043A\\u0446\\u0438\\u044E \\xAB\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0432 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0438\\xBB \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438.\",\"\\u0410\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0435 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0435 \\u0444\\u0443\\u043D\\u043A\\u0446\\u0438\\u0438 \\xAB\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0432 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0438\\xBB \\u043F\\u0440\\u0438 \\u0432\\u044B\\u0431\\u043E\\u0440\\u0435 \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u0438\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0443\\u0441\\u043B\\u043E\\u0432\\u0438\\u0435\\u043C \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0433\\u043E \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u044F \\u0444\\u0443\\u043D\\u043A\\u0446\\u0438\\u0438 \\xAB\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0432 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0438\\xBB.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u043E \\u043B\\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0441\\u0447\\u0438\\u0442\\u044B\\u0432\\u0430\\u0442\\u044C \\u0438\\u043B\\u0438 \\u0438\\u0437\\u043C\\u0435\\u043D\\u044F\\u0442\\u044C \\u043E\\u0431\\u0449\\u0438\\u0439 \\u0431\\u0443\\u0444\\u0435\\u0440 \\u043E\\u0431\\u043C\\u0435\\u043D\\u0430 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0432 macOS.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u043E \\u043B\\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0434\\u043E\\u0431\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0432 \\u043D\\u0430\\u0447\\u0430\\u043B\\u0435 \\u043E\\u043A\\u043D\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430. \\u0415\\u0441\\u043B\\u0438 \\u0437\\u0430\\u0434\\u0430\\u043D\\u043E \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 true, \\u0432\\u044B \\u043C\\u043E\\u0436\\u0435\\u0442\\u0435 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u0438\\u0442\\u044C \\u043F\\u0435\\u0440\\u0432\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u043F\\u0440\\u0438 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u043C\\u043E\\u043C \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0431\\u0443\\u0434\\u0435\\u0442 \\u043B\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u043F\\u0435\\u0440\\u0435\\u0437\\u0430\\u043F\\u0443\\u0441\\u043A\\u0430\\u0442\\u044C\\u0441\\u044F \\u0441 \\u043D\\u0430\\u0447\\u0430\\u043B\\u0430 (\\u0438\\u043B\\u0438 \\u0441 \\u043A\\u043E\\u043D\\u0446\\u0430), \\u0435\\u0441\\u043B\\u0438 \\u043D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043E \\u043D\\u0438\\u043A\\u0430\\u043A\\u0438\\u0445 \\u0434\\u0440\\u0443\\u0433\\u0438\\u0445 \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0438\\u0439.\",'\\u0412\\u043A\\u043B\\u044E\\u0447\\u0430\\u0435\\u0442 \\u0438\\u043B\\u0438 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0430\\u0435\\u0442 \\u043B\\u0438\\u0433\\u0430\\u0442\\u0443\\u0440\\u044B \\u0448\\u0440\\u0438\\u0444\\u0442\\u043E\\u0432 (\\u0445\\u0430\\u0440\\u0430\\u043A\\u0442\\u0435\\u0440\\u0438\\u0441\\u0442\\u0438\\u043A\\u0438 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430 \"calt\" \\u0438 \"liga\"). \\u0418\\u0437\\u043C\\u0435\\u043D\\u0438\\u0442\\u0435 \\u044D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043D\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0434\\u043B\\u044F \\u0434\\u0435\\u0442\\u0430\\u043B\\u044C\\u043D\\u043E\\u0433\\u043E \\u0443\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u043E\\u043C CSS \"font-feature-settings\".','\\u042F\\u0432\\u043D\\u043E\\u0435 \\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u043E CSS \"font-feature-settings\". \\u0415\\u0441\\u043B\\u0438 \\u043D\\u0435\\u043E\\u0431\\u0445\\u043E\\u0434\\u0438\\u043C\\u043E \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0438\\u043B\\u0438 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043B\\u0438\\u0433\\u0430\\u0442\\u0443\\u0440\\u044B, \\u0432\\u043C\\u0435\\u0441\\u0442\\u043E \\u043D\\u0435\\u0433\\u043E \\u043C\\u043E\\u0436\\u043D\\u043E \\u043F\\u0435\\u0440\\u0435\\u0434\\u0430\\u0442\\u044C \\u043B\\u043E\\u0433\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435.','\\u041D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0435\\u0442 \\u043B\\u0438\\u0433\\u0430\\u0442\\u0443\\u0440\\u044B \\u0438\\u043B\\u0438 \\u0445\\u0430\\u0440\\u0430\\u043A\\u0442\\u0435\\u0440\\u0438\\u0441\\u0442\\u0438\\u043A\\u0438 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430. \\u041C\\u043E\\u0436\\u043D\\u043E \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043B\\u043E\\u0433\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0438\\u043B\\u0438 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043B\\u0438\\u0433\\u0430\\u0442\\u0443\\u0440\\u044B, \\u0438\\u043B\\u0438 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0434\\u043B\\u044F \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F \\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u0430 CSS \"font-feature-settings\".',\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0430\\u0435\\u0442 \\u0438\\u043B\\u0438 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0430\\u0435\\u0442 \\u043F\\u0440\\u0435\\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435 \\u0438\\u0437 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430 font-weight \\u0432 font-variation-settings. \\u0418\\u0437\\u043C\\u0435\\u043D\\u0438\\u0442\\u0435 \\u044D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043D\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0434\\u043B\\u044F \\u0434\\u0435\\u0442\\u0430\\u043B\\u044C\\u043D\\u043E\\u0433\\u043E \\u0443\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u043E\\u043C CSS font-variation-settings.\",\"\\u042F\\u0432\\u043D\\u043E\\u0435 \\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u043E CSS font-variation-settings. \\u0415\\u0441\\u043B\\u0438 \\u043D\\u0435\\u043E\\u0431\\u0445\\u043E\\u0434\\u0438\\u043C\\u043E \\u043B\\u0438\\u0448\\u044C \\u043F\\u0440\\u0435\\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 font-weight \\u0432 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 font-variation-settings, \\u0432\\u043C\\u0435\\u0441\\u0442\\u043E \\u044D\\u0442\\u043E\\u0433\\u043E \\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u0430 \\u043C\\u043E\\u0436\\u043D\\u043E \\u043F\\u0435\\u0440\\u0435\\u0434\\u0430\\u0442\\u044C \\u043B\\u043E\\u0433\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435.\",\"\\u041D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0435\\u0442 \\u0432\\u0430\\u0440\\u0438\\u0430\\u043D\\u0442\\u044B \\u0448\\u0440\\u0438\\u0444\\u0442\\u043E\\u0432. \\u041C\\u043E\\u0436\\u0435\\u0442 \\u043F\\u0440\\u0435\\u0434\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u0441\\u043E\\u0431\\u043E\\u0439 \\u043B\\u043E\\u0433\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 \\u0434\\u043B\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u044F \\u0438\\u043B\\u0438 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u044F \\u043F\\u0440\\u0435\\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u0438\\u0437 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430 font-weight \\u0432 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 font-variation-settings \\u0438\\u043B\\u0438 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443, \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0430\\u0449\\u0443\\u044E \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u0430 CSS font-variation-settings.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430 \\u0432 \\u043F\\u0438\\u043A\\u0441\\u0435\\u043B\\u044F\\u0445.\",'\\u0414\\u043E\\u043F\\u0443\\u0441\\u043A\\u0430\\u044E\\u0442\\u0441\\u044F \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043A\\u043B\\u044E\\u0447\\u0435\\u0432\\u044B\\u0435 \\u0441\\u043B\\u043E\\u0432\\u0430 \"normal\" \\u0438\\u043B\\u0438 \"bold\" \\u0438 \\u0447\\u0438\\u0441\\u043B\\u0430 \\u0432 \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u0435 \\u043E\\u0442 1 \\u0434\\u043E 1000.','\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043D\\u0430\\u0441\\u044B\\u0449\\u0435\\u043D\\u043D\\u043E\\u0441\\u0442\\u044C\\u044E \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430. \\u0414\\u043E\\u043F\\u0443\\u0441\\u0442\\u0438\\u043C\\u044B\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F: \\u043A\\u043B\\u044E\\u0447\\u0435\\u0432\\u044B\\u0435 \\u0441\\u043B\\u043E\\u0432\\u0430 \"normal\" \\u0438\\u043B\\u0438 \"bold\", \\u0430 \\u0442\\u0430\\u043A\\u0436\\u0435 \\u0447\\u0438\\u0441\\u043B\\u0430 \\u0432 \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u0435 \\u043E\\u0442 1 \\u0434\\u043E 1000.',\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u0432\\u0430\\u0440\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0435 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u044B (\\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E)\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u0441\\u043D\\u043E\\u0432\\u043D\\u043E\\u043C\\u0443 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u0443 \\u0438 \\u043F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0431\\u044B\\u0441\\u0442\\u0440\\u044B\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u0441\\u043D\\u043E\\u0432\\u043D\\u043E\\u043C\\u0443 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u0443 \\u0438 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0431\\u044B\\u0441\\u0442\\u0440\\u0443\\u044E \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u044E \\u0434\\u043B\\u044F \\u043E\\u0441\\u0442\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445\",\"\\u042D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0443\\u0441\\u0442\\u0430\\u0440\\u0435\\u043B. \\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \\u0432\\u043C\\u0435\\u0441\\u0442\\u043E \\u043D\\u0435\\u0433\\u043E \\u043E\\u0442\\u0434\\u0435\\u043B\\u044C\\u043D\\u044B\\u0435 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u044B, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, 'editor.editor.gotoLocation.multipleDefinitions' \\u0438\\u043B\\u0438 'editor.editor.gotoLocation.multipleImplementations'.\",'\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043F\\u043E\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435\\u043C \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E\" \\u043F\\u0440\\u0438 \\u043D\\u0430\\u043B\\u0438\\u0447\\u0438\\u0438 \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u0438\\u0445 \\u0446\\u0435\\u043B\\u0435\\u0432\\u044B\\u0445 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.','\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043F\\u043E\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435\\u043C \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E \\u0442\\u0438\\u043F\\u0430\" \\u043F\\u0440\\u0438 \\u043D\\u0430\\u043B\\u0438\\u0447\\u0438\\u0438 \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u0438\\u0445 \\u0446\\u0435\\u043B\\u0435\\u0432\\u044B\\u0445 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.','\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043F\\u043E\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435\\u043C \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u0431\\u044A\\u044F\\u0432\\u043B\\u0435\\u043D\\u0438\\u044E\" \\u043F\\u0440\\u0438 \\u043D\\u0430\\u043B\\u0438\\u0447\\u0438\\u0438 \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u0438\\u0445 \\u0446\\u0435\\u043B\\u0435\\u0432\\u044B\\u0445 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.','\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043F\\u043E\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435\\u043C \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0440\\u0435\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F\\u043C\" \\u043F\\u0440\\u0438 \\u043D\\u0430\\u043B\\u0438\\u0447\\u0438\\u0438 \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u0438\\u0445 \\u0446\\u0435\\u043B\\u0435\\u0432\\u044B\\u0445 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.','\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043F\\u043E\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435\\u043C \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u0441\\u044B\\u043B\\u043A\\u0430\\u043C\" \\u043F\\u0440\\u0438 \\u043D\\u0430\\u043B\\u0438\\u0447\\u0438\\u0438 \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u0438\\u0445 \\u0446\\u0435\\u043B\\u0435\\u0432\\u044B\\u0445 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.','\\u0418\\u0434\\u0435\\u043D\\u0442\\u0438\\u0444\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440 \\u0430\\u043B\\u044C\\u0442\\u0435\\u0440\\u043D\\u0430\\u0442\\u0438\\u0432\\u043D\\u043E\\u0439 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B, \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u0435\\u043C\\u043E\\u0439 \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u043C \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438 \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E\" \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0435 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435.','\\u0418\\u0434\\u0435\\u043D\\u0442\\u0438\\u0444\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440 \\u0430\\u043B\\u044C\\u0442\\u0435\\u0440\\u043D\\u0430\\u0442\\u0438\\u0432\\u043D\\u043E\\u0439 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B, \\u043A\\u043E\\u0442\\u043E\\u0440\\u0430\\u044F \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u0435\\u0441\\u043B\\u0438 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u043C \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438 \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E \\u0442\\u0438\\u043F\\u0430\" \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0435 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435.','\\u0418\\u0434\\u0435\\u043D\\u0442\\u0438\\u0444\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440 \\u0430\\u043B\\u044C\\u0442\\u0435\\u0440\\u043D\\u0430\\u0442\\u0438\\u0432\\u043D\\u044B\\u0439 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B, \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u0435\\u043C\\u043E\\u0439 \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u043C \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438 \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u0431\\u044A\\u044F\\u0432\\u043B\\u0435\\u043D\\u0438\\u044E\" \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0435 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435.','\\u0418\\u0434\\u0435\\u043D\\u0442\\u0438\\u0444\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440 \\u0430\\u043B\\u044C\\u0442\\u0435\\u0440\\u043D\\u0430\\u0442\\u0438\\u0432\\u043D\\u044B\\u0439 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B, \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u0435\\u043C\\u043E\\u0439, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u043C \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0440\\u0435\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u0438\" \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0435 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435.','\\u0418\\u0434\\u0435\\u043D\\u0442\\u0438\\u0444\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440 \\u0430\\u043B\\u044C\\u0442\\u0435\\u0440\\u043D\\u0430\\u0442\\u0438\\u0432\\u043D\\u043E\\u0439 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B, \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u0435\\u043C\\u043E\\u0439 \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u043C \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u0435\\u043D\\u0438\\u044F \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438 \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u0441\\u044B\\u043B\\u043A\\u0435\" \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0435 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435.',\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043C, \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0432\\u0440\\u0435\\u043C\\u044F \\u0437\\u0430\\u0434\\u0435\\u0440\\u0436\\u043A\\u0438 \\u0432 \\u043C\\u0438\\u043B\\u043B\\u0438\\u0441\\u0435\\u043A\\u0443\\u043D\\u0434\\u0430\\u0445 \\u043F\\u0435\\u0440\\u0435\\u0434 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0435\\u043C \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043C, \\u0434\\u043E\\u043B\\u0436\\u043D\\u043E \\u043B\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u043E\\u0441\\u0442\\u0430\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u0432\\u0438\\u0434\\u0438\\u043C\\u044B\\u043C \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u043D\\u0430 \\u043D\\u0435\\u0433\\u043E \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u043C\\u044B\\u0448\\u0438.\",\"\\u041F\\u0440\\u0435\\u0434\\u043F\\u043E\\u0447\\u0438\\u0442\\u0430\\u0442\\u044C \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0430\\u0434 \\u0441\\u0442\\u0440\\u043E\\u043A\\u043E\\u0439, \\u0435\\u0441\\u043B\\u0438 \\u0435\\u0441\\u0442\\u044C \\u043C\\u0435\\u0441\\u0442\\u043E.\",\"\\u041F\\u0440\\u0435\\u0434\\u043F\\u043E\\u043B\\u0430\\u0433\\u0430\\u0435\\u0442, \\u0447\\u0442\\u043E \\u0432\\u0441\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u0438\\u043C\\u0435\\u044E\\u0442 \\u043E\\u0434\\u0438\\u043D\\u0430\\u043A\\u043E\\u0432\\u0443\\u044E \\u0448\\u0438\\u0440\\u0438\\u043D\\u0443. \\u042D\\u0442\\u043E \\u0431\\u044B\\u0441\\u0442\\u0440\\u044B\\u0439 \\u0430\\u043B\\u0433\\u043E\\u0440\\u0438\\u0442\\u043C, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0439 \\u0440\\u0430\\u0431\\u043E\\u0442\\u0430\\u0435\\u0442 \\u043F\\u0440\\u0430\\u0432\\u0438\\u043B\\u044C\\u043D\\u043E \\u0434\\u043B\\u044F \\u043C\\u043E\\u043D\\u043E\\u0448\\u0438\\u0440\\u0438\\u043D\\u043D\\u044B\\u0445 \\u0448\\u0440\\u0438\\u0444\\u0442\\u043E\\u0432 \\u0438 \\u043D\\u0435\\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0445 \\u0441\\u043A\\u0440\\u0438\\u043F\\u0442\\u043E\\u0432 (\\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u043B\\u0430\\u0442\\u0438\\u043D\\u0441\\u043A\\u0438\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432), \\u0433\\u0434\\u0435 \\u0433\\u043B\\u0438\\u0444\\u044B \\u0438\\u043C\\u0435\\u044E\\u0442 \\u043E\\u0434\\u0438\\u043D\\u0430\\u043A\\u043E\\u0432\\u0443\\u044E \\u0448\\u0438\\u0440\\u0438\\u043D\\u0443.\",\"\\u0414\\u0435\\u043B\\u0435\\u0433\\u0438\\u0440\\u0443\\u0435\\u0442 \\u0432\\u044B\\u0447\\u0438\\u0441\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0442\\u043E\\u0447\\u0435\\u043A \\u043F\\u0435\\u0440\\u0435\\u043D\\u043E\\u0441\\u0430 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0443. \\u042D\\u0442\\u043E \\u043C\\u0435\\u0434\\u043B\\u0435\\u043D\\u043D\\u044B\\u0439 \\u0430\\u043B\\u0433\\u043E\\u0440\\u0438\\u0442\\u043C, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0439 \\u043C\\u043E\\u0436\\u0435\\u0442 \\u043F\\u0440\\u0438\\u0432\\u0435\\u0441\\u0442\\u0438 \\u043A \\u0437\\u0430\\u0432\\u0438\\u0441\\u0430\\u043D\\u0438\\u044F\\u043C \\u043F\\u0440\\u0438 \\u043E\\u0431\\u0440\\u0430\\u0431\\u043E\\u0442\\u043A\\u0435 \\u0431\\u043E\\u043B\\u044C\\u0448\\u0438\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432, \\u043D\\u043E \\u0440\\u0430\\u0431\\u043E\\u0442\\u0430\\u0435\\u0442 \\u043F\\u0440\\u0430\\u0432\\u0438\\u043B\\u044C\\u043D\\u043E \\u0432\\u043E \\u0432\\u0441\\u0435\\u0445 \\u0441\\u043B\\u0443\\u0447\\u0430\\u044F\\u0445.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0430\\u043B\\u0433\\u043E\\u0440\\u0438\\u0442\\u043C\\u043E\\u043C, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0439 \\u0432\\u044B\\u0447\\u0438\\u0441\\u043B\\u044F\\u0435\\u0442 \\u0442\\u043E\\u0447\\u043A\\u0438 \\u043F\\u0435\\u0440\\u0435\\u043D\\u043E\\u0441\\u0430. \\u041E\\u0431\\u0440\\u0430\\u0442\\u0438\\u0442\\u0435 \\u0432\\u043D\\u0438\\u043C\\u0430\\u043D\\u0438\\u0435, \\u0447\\u0442\\u043E \\u0432 \\u0440\\u0435\\u0436\\u0438\\u043C\\u0435 \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\\u0441\\u0442\\u0435\\u0439 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D \\u0440\\u0430\\u0441\\u0448\\u0438\\u0440\\u0435\\u043D\\u043D\\u044B\\u0439 \\u0430\\u043B\\u0433\\u043E\\u0440\\u0438\\u0442\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043E\\u0431\\u0435\\u0441\\u043F\\u0435\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u0438\\u0431\\u043E\\u043B\\u044C\\u0448\\u0435\\u0435 \\u0443\\u0434\\u043E\\u0431\\u0441\\u0442\\u0432\\u043E \\u0440\\u0430\\u0431\\u043E\\u0442\\u044B.\",\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0430\\u0435\\u0442 \\u0437\\u043D\\u0430\\u0447\\u043E\\u043A \\u043B\\u0430\\u043C\\u043F\\u043E\\u0447\\u043A\\u0438 \\u0434\\u043B\\u044F \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043A\\u043E\\u0434\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442 \\u0432\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0438\\u0435 \\u043E\\u0431\\u043B\\u0430\\u0441\\u0442\\u0438 \\u0432\\u043E \\u0432\\u0440\\u0435\\u043C\\u044F \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u0432 \\u0432\\u0435\\u0440\\u0445\\u043D\\u0435\\u0439 \\u0447\\u0430\\u0441\\u0442\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u043C\\u0430\\u043A\\u0441\\u0438\\u043C\\u0430\\u043B\\u044C\\u043D\\u043E\\u0435 \\u0447\\u0438\\u0441\\u043B\\u043E \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u044E\\u0449\\u0438\\u0445 \\u043B\\u0438\\u043D\\u0438\\u0439 \\u0434\\u043B\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u043C\\u043E\\u0434\\u0435\\u043B\\u044C, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u0443\\u044E \\u0434\\u043B\\u044F \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u044F. \\u0415\\u0441\\u043B\\u0438 \\u043C\\u043E\\u0434\\u0435\\u043B\\u044C \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u044B \\u043D\\u0435 \\u0441\\u0443\\u0449\\u0435\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442, \\u043E\\u043D\\u0430 \\u043E\\u0442\\u043A\\u0430\\u0442\\u0438\\u0442\\u0441\\u044F \\u043A \\u043C\\u043E\\u0434\\u0435\\u043B\\u0438 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A\\u0430 \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u044F, \\u043A\\u043E\\u0442\\u043E\\u0440\\u0430\\u044F \\u043E\\u0442\\u043A\\u0430\\u0442\\u044B\\u0432\\u0430\\u0435\\u0442\\u0441\\u044F \\u043A \\u043C\\u043E\\u0434\\u0435\\u043B\\u0438 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432. \\u042D\\u0442\\u043E\\u0442 \\u043F\\u043E\\u0440\\u044F\\u0434\\u043E\\u043A \\u0441\\u043E\\u0431\\u043B\\u044E\\u0434\\u0430\\u0435\\u0442\\u0441\\u044F \\u0432\\u043E \\u0432\\u0441\\u0435\\u0445 \\u0442\\u0440\\u0435\\u0445 \\u0441\\u043B\\u0443\\u0447\\u0430\\u044F\\u0445.\",\"Enable scrolling of the sticky scroll widget with the editor's horizontal scrollbar.\",\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0430\\u0435\\u0442 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u044F \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0412\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043A\\u0438 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u044B.\",\"\\u0412\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043A\\u0438 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E \\u0438 \\u0441\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0442\\u0441\\u044F \\u0443\\u0434\\u0435\\u0440\\u0436\\u0430\\u043D\\u0438\\u0435\\u043C \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448 {0}.\",\"\\u0412\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043A\\u0438 \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E \\u0441\\u043A\\u0440\\u044B\\u0442\\u044B \\u0438 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0438 \\u0443\\u0434\\u0435\\u0440\\u0436\\u0430\\u043D\\u0438\\u0438 {0}.\",\"\\u0412\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043A\\u0438 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u044B.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440\\u043E\\u043C \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430 \\u0432\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0445 \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043E\\u043A \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435. \\u041F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E {0} \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0441\\u043A\\u043E\\u043D\\u0444\\u0438\\u0433\\u0443\\u0440\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u043D\\u043E\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 \\u043C\\u0435\\u043D\\u044C\\u0448\\u0435 {1} \\u0438\\u043B\\u0438 \\u0431\\u043E\\u043B\\u044C\\u0448\\u0435 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440\\u0430 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0441\\u0435\\u043C\\u0435\\u0439\\u0441\\u0442\\u0432\\u043E\\u043C \\u0448\\u0440\\u0438\\u0444\\u0442\\u043E\\u0432 \\u0434\\u043B\\u044F \\u0432\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0445 \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043E\\u043A \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435. \\u0415\\u0441\\u043B\\u0438 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0435 \\u0437\\u0430\\u0434\\u0430\\u043D\\u043E, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F {0}.\",\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0430\\u0435\\u0442 \\u043F\\u043E\\u043B\\u044F \\u0432\\u043E\\u043A\\u0440\\u0443\\u0433 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u0439 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",`\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0432\\u044B\\u0441\\u043E\\u0442\\u0443 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438. \\r\n\\u2013 \\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 0, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0432\\u044B\\u0447\\u0438\\u0441\\u043B\\u0438\\u0442\\u044C \\u0432\\u044B\\u0441\\u043E\\u0442\\u0443 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u043D\\u0430 \\u043E\\u0441\\u043D\\u043E\\u0432\\u0435 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440\\u0430 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430.\\r\n\\u2013 \\u0417\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F \\u043E\\u0442 0 \\u0434\\u043E 8 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u0432 \\u043A\\u0430\\u0447\\u0435\\u0441\\u0442\\u0432\\u0435 \\u043C\\u043D\\u043E\\u0436\\u0438\\u0442\\u0435\\u043B\\u044F \\u0434\\u043B\\u044F \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440\\u0430 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430.\\r\n\\u2013 \\u0417\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F \\u0431\\u043E\\u043B\\u044C\\u0448\\u0435 \\u0438\\u043B\\u0438 \\u0440\\u0430\\u0432\\u043D\\u044B\\u0435 8 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u0432 \\u043A\\u0430\\u0447\\u0435\\u0441\\u0442\\u0432\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0443\\u044E\\u0449\\u0438\\u0445 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0439.`,\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0441\\u043A\\u0440\\u044B\\u0442\\u0430 \\u043B\\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u0430 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438.\",\"\\u041C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u0430 \\u0438\\u043C\\u0435\\u0435\\u0442 \\u0442\\u0430\\u043A\\u043E\\u0439 \\u0436\\u0435 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440, \\u0447\\u0442\\u043E \\u0438 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0435 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (\\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u0430 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0430).\",\"\\u041C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u0430 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0440\\u0430\\u0441\\u0442\\u044F\\u0433\\u0438\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u0438\\u043B\\u0438 \\u0441\\u0436\\u0438\\u043C\\u0430\\u0442\\u044C\\u0441\\u044F \\u043F\\u043E \\u043C\\u0435\\u0440\\u0435 \\u043D\\u0435\\u043E\\u0431\\u0445\\u043E\\u0434\\u0438\\u043C\\u043E\\u0441\\u0442\\u0438, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0437\\u0430\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u044C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043F\\u043E \\u0432\\u044B\\u0441\\u043E\\u0442\\u0435 (\\u0431\\u0435\\u0437 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438).\",\"\\u041C\\u0438\\u043D\\u0438\\u043A\\u0430\\u0440\\u0442\\u0430 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0443\\u043C\\u0435\\u043D\\u044C\\u0448\\u0430\\u0442\\u044C\\u0441\\u044F \\u043F\\u043E \\u043C\\u0435\\u0440\\u0435 \\u043D\\u0435\\u043E\\u0431\\u0445\\u043E\\u0434\\u0438\\u043C\\u043E\\u0441\\u0442\\u0438, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0438\\u043A\\u043E\\u0433\\u0434\\u0430 \\u043D\\u0435 \\u0431\\u044B\\u0442\\u044C \\u0431\\u043E\\u043B\\u044C\\u0448\\u0435, \\u0447\\u0435\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 (\\u0431\\u0435\\u0437 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438).\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440\\u043E\\u043C \\u043C\\u0438\\u043D\\u0438\\u043A\\u0430\\u0440\\u0442\\u044B.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0441 \\u043A\\u0430\\u043A\\u043E\\u0439 \\u0441\\u0442\\u043E\\u0440\\u043E\\u043D\\u044B \\u0431\\u0443\\u0434\\u0435\\u0442 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043F\\u043E\\u043B\\u0437\\u0443\\u043D\\u043E\\u043A \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u044B.\",\"\\u041C\\u0430\\u0441\\u0448\\u0442\\u0430\\u0431 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E, \\u043D\\u0430\\u0440\\u0438\\u0441\\u043E\\u0432\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u043D\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u0435: 1, 2 \\u0438\\u043B\\u0438 3.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442 \\u0444\\u0430\\u043A\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435 \\u0432\\u043C\\u0435\\u0441\\u0442\\u043E \\u0446\\u0432\\u0435\\u0442\\u043D\\u044B\\u0445 \\u0431\\u043B\\u043E\\u043A\\u043E\\u0432.\",\"\\u041E\\u0433\\u0440\\u0430\\u043D\\u0438\\u0447\\u0438\\u0432\\u0430\\u0435\\u0442 \\u0448\\u0438\\u0440\\u0438\\u043D\\u0443 \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u044B, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043A\\u043E\\u043B\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043E \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u043C\\u044B\\u0445 \\u0441\\u0442\\u043E\\u043B\\u0431\\u0446\\u043E\\u0432 \\u043D\\u0435 \\u043F\\u0440\\u0435\\u0432\\u044B\\u0448\\u0430\\u043B\\u043E \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u0435 \\u043A\\u043E\\u043B\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043E.\",\"\\u0417\\u0430\\u0434\\u0430\\u0435\\u0442 \\u043F\\u0440\\u043E\\u0441\\u0442\\u0440\\u0430\\u043D\\u0441\\u0442\\u0432\\u043E \\u043C\\u0435\\u0436\\u0434\\u0443 \\u0432\\u0435\\u0440\\u0445\\u043D\\u0438\\u043C \\u043A\\u0440\\u0430\\u0435\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 \\u0438 \\u043F\\u0435\\u0440\\u0432\\u043E\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u043E\\u0439.\",\"\\u0417\\u0430\\u0434\\u0430\\u0435\\u0442 \\u043F\\u0440\\u043E\\u0441\\u0442\\u0440\\u0430\\u043D\\u0441\\u0442\\u0432\\u043E \\u043C\\u0435\\u0436\\u0434\\u0443 \\u043D\\u0438\\u0436\\u043D\\u0438\\u043C \\u043A\\u0440\\u0430\\u0435\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 \\u0438 \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u043D\\u0435\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u043E\\u0439.\",\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0430\\u0435\\u0442 \\u0432\\u0441\\u043F\\u043B\\u044B\\u0432\\u0430\\u044E\\u0449\\u0435\\u0435 \\u043E\\u043A\\u043D\\u043E \\u0441 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u0430\\u0446\\u0438\\u0435\\u0439 \\u043F\\u043E \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0443 \\u0438 \\u0441\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F\\u043C\\u0438 \\u043E \\u0442\\u0438\\u043F\\u0435, \\u043A\\u043E\\u0442\\u043E\\u0440\\u043E\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0432\\u043E \\u0432\\u0440\\u0435\\u043C\\u044F \\u043D\\u0430\\u0431\\u043E\\u0440\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043C\\u0435\\u043D\\u044E \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043E\\u043A \\u043E\\u0441\\u0442\\u0430\\u0435\\u0442\\u0441\\u044F \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044B\\u043C \\u0438\\u043B\\u0438 \\u0437\\u0430\\u043A\\u0440\\u043E\\u0435\\u0442\\u0441\\u044F \\u043F\\u0440\\u0438 \\u0434\\u043E\\u0441\\u0442\\u0438\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043A\\u043E\\u043D\\u0446\\u0430 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430.\",\"\\u042D\\u043A\\u0441\\u043F\\u0440\\u0435\\u0441\\u0441-\\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u0440\\u0435\\u043A\\u043E\\u043C\\u0435\\u043D\\u0434\\u0430\\u0446\\u0438\\u0439\",\"\\u042D\\u043A\\u0441\\u043F\\u0440\\u0435\\u0441\\u0441-\\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043A\\u0430\\u043A \\u0435\\u0434\\u0432\\u0430 \\u0440\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u043C\\u044B\\u0439 \\u0442\\u0435\\u043A\\u0441\\u0442\",\"\\u042D\\u043A\\u0441\\u043F\\u0440\\u0435\\u0441\\u0441-\\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u044B\",\"\\u0420\\u0430\\u0437\\u0440\\u0435\\u0448\\u0435\\u043D\\u0438\\u0435 \\u043A\\u0440\\u0430\\u0442\\u043A\\u0438\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430\\u0445.\",\"\\u0420\\u0430\\u0437\\u0440\\u0435\\u0448\\u0435\\u043D\\u0438\\u0435 \\u043A\\u0440\\u0430\\u0442\\u043A\\u0438\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0430\\u0440\\u0438\\u044F\\u0445.\",\"\\u0420\\u0430\\u0437\\u0440\\u0435\\u0448\\u0435\\u043D\\u0438\\u0435 \\u043A\\u0440\\u0430\\u0442\\u043A\\u0438\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0432\\u043D\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A \\u0438 \\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0430\\u0440\\u0438\\u0435\\u0432.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u043F\\u0440\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0435. \\u042D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043C\\u043E\\u0436\\u043D\\u043E \\u0432\\u044B\\u0431\\u0440\\u0430\\u0442\\u044C \\u043F\\u0440\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0435 \\u043F\\u0440\\u0438\\u043C\\u0435\\u0447\\u0430\\u043D\\u0438\\u0439, \\u0441\\u0442\\u0440\\u043E\\u043A \\u0438 \\u0434\\u0440\\u0443\\u0433\\u043E\\u0433\\u043E \\u043A\\u043E\\u0434\\u0430. \\u0411\\u044B\\u0441\\u0442\\u0440\\u044B\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043C\\u043E\\u0436\\u043D\\u043E \\u043D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0438\\u0442\\u044C \\u0434\\u043B\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F \\u0432 \\u0432\\u0438\\u0434\\u0435 \\u0444\\u0430\\u043D\\u0442\\u043E\\u043C\\u043D\\u043E\\u0433\\u043E \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0438\\u043B\\u0438 \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439. \\u041D\\u0435\\u043E\\u0431\\u0445\\u043E\\u0434\\u0438\\u043C\\u043E \\u0442\\u0430\\u043A\\u0436\\u0435 \\u043F\\u043E\\u043C\\u043D\\u0438\\u0442\\u044C \\u043E \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0435 {0}, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0439 \\u0443\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0430\\u043A\\u0442\\u0438\\u0432\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\\u043C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u043C\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430\\u043C\\u0438.\",\"\\u041D\\u043E\\u043C\\u0435\\u0440\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A \\u043D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0430\\u0431\\u0441\\u043E\\u043B\\u044E\\u0442\\u043D\\u044B\\u0435 \\u043D\\u043E\\u043C\\u0435\\u0440\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u043C\\u044B\\u0435 \\u043D\\u043E\\u043C\\u0435\\u0440\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A \\u0432\\u044B\\u0447\\u0438\\u0441\\u043B\\u044F\\u044E\\u0442\\u0441\\u044F \\u043A\\u0430\\u043A \\u0440\\u0430\\u0441\\u0441\\u0442\\u043E\\u044F\\u043D\\u0438\\u0435 \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430\\u0445 \\u0434\\u043E \\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430.\",\"\\u041D\\u043E\\u043C\\u0435\\u0440\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043A\\u0430\\u0436\\u0434\\u044B\\u0435 10 \\u0441\\u0442\\u0440\\u043E\\u043A.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0435\\u043C \\u043D\\u043E\\u043C\\u0435\\u0440\\u043E\\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A.\",\"\\u0427\\u0438\\u0441\\u043B\\u043E \\u043C\\u043E\\u043D\\u043E\\u0448\\u0438\\u0440\\u0438\\u043D\\u043D\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432, \\u043F\\u0440\\u0438 \\u043A\\u043E\\u0442\\u043E\\u0440\\u043E\\u043C \\u0431\\u0443\\u0434\\u0435\\u0442 \\u043E\\u0442\\u0440\\u0438\\u0441\\u043E\\u0432\\u044B\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0430 \\u044D\\u0442\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u044D\\u0442\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u0432\\u0435\\u0440\\u0442\\u0438\\u043A\\u0430\\u043B\\u044C\\u043D\\u044B\\u0435 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u043F\\u043E\\u0441\\u043B\\u0435 \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0447\\u0438\\u0441\\u043B\\u0430 \\u043C\\u043E\\u043D\\u043E\\u0448\\u0438\\u0440\\u0438\\u043D\\u043D\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432. \\u0414\\u043B\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u0438\\u0445 \\u043B\\u0438\\u043D\\u0435\\u0435\\u043A \\u0443\\u043A\\u0430\\u0436\\u0438\\u0442\\u0435 \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u043E \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0439. \\u0415\\u0441\\u043B\\u0438 \\u043D\\u0435 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u043E \\u043D\\u0438 \\u043E\\u0434\\u043D\\u043E\\u0433\\u043E \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F, \\u0432\\u0435\\u0440\\u0442\\u0438\\u043A\\u0430\\u043B\\u044C\\u043D\\u044B\\u0435 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u043D\\u0435 \\u0431\\u0443\\u0434\\u0443\\u0442.\",\"\\u0412\\u0435\\u0440\\u0442\\u0438\\u043A\\u0430\\u043B\\u044C\\u043D\\u0430\\u044F \\u043F\\u043E\\u043B\\u043E\\u0441\\u0430 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0432\\u0438\\u0434\\u043D\\u0430 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043F\\u0440\\u0438 \\u043D\\u0435\\u043E\\u0431\\u0445\\u043E\\u0434\\u0438\\u043C\\u043E\\u0441\\u0442\\u0438.\",\"\\u0412\\u0435\\u0440\\u0442\\u0438\\u043A\\u0430\\u043B\\u044C\\u043D\\u0430\\u044F \\u043F\\u043E\\u043B\\u043E\\u0441\\u0430 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u0432\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0432\\u0438\\u0434\\u043D\\u0430.\",\"\\u0412\\u0435\\u0440\\u0442\\u0438\\u043A\\u0430\\u043B\\u044C\\u043D\\u0430\\u044F \\u043F\\u043E\\u043B\\u043E\\u0441\\u0430 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u0432\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0441\\u043A\\u0440\\u044B\\u0442\\u0430.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0432\\u0438\\u0434\\u0438\\u043C\\u043E\\u0441\\u0442\\u044C\\u044E \\u0432\\u0435\\u0440\\u0442\\u0438\\u043A\\u0430\\u043B\\u044C\\u043D\\u043E\\u0439 \\u043F\\u043E\\u043B\\u043E\\u0441\\u044B \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438.\",\"\\u0413\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u044C\\u043D\\u0430\\u044F \\u043F\\u043E\\u043B\\u043E\\u0441\\u0430 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0432\\u0438\\u0434\\u043D\\u0430 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043F\\u0440\\u0438 \\u043D\\u0435\\u043E\\u0431\\u0445\\u043E\\u0434\\u0438\\u043C\\u043E\\u0441\\u0442\\u0438.\",\"\\u0413\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u044C\\u043D\\u0430\\u044F \\u043F\\u043E\\u043B\\u043E\\u0441\\u0430 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u0432\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0432\\u0438\\u0434\\u043D\\u0430.\",\"\\u0413\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u044C\\u043D\\u0430\\u044F \\u043F\\u043E\\u043B\\u043E\\u0441\\u0430 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u0432\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0441\\u043A\\u0440\\u044B\\u0442\\u0430.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0432\\u0438\\u0434\\u0438\\u043C\\u043E\\u0441\\u0442\\u044C\\u044E \\u0433\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u044C\\u043D\\u043E\\u0439 \\u043F\\u043E\\u043B\\u043E\\u0441\\u044B \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438.\",\"\\u0428\\u0438\\u0440\\u0438\\u043D\\u0430 \\u0432\\u0435\\u0440\\u0442\\u0438\\u043A\\u0430\\u043B\\u044C\\u043D\\u043E\\u0439 \\u043F\\u043E\\u043B\\u043E\\u0441\\u044B \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438.\",\"\\u0412\\u044B\\u0441\\u043E\\u0442\\u0430 \\u0433\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u044C\\u043D\\u043E\\u0439 \\u043F\\u043E\\u043B\\u043E\\u0441\\u044B \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u043E\\u0439 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0438\\u043B\\u0438 \\u043F\\u0435\\u0440\\u0435\\u0445\\u043E\\u0434\\u043E\\u043C \\u043A \\u043F\\u043E\\u0437\\u0438\\u0446\\u0438\\u0438 \\u0449\\u0435\\u043B\\u0447\\u043A\\u0430.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\\u043C \\u0432\\u0441\\u0435\\u0445 \\u043D\\u0435\\u0441\\u0442\\u0430\\u043D\\u0434\\u0430\\u0440\\u0442\\u043D\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 ASCII. \\u0411\\u0430\\u0437\\u043E\\u0432\\u044B\\u043C\\u0438 ASCII \\u0441\\u0447\\u0438\\u0442\\u0430\\u044E\\u0442\\u0441\\u044F \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043C\\u0435\\u0436\\u0434\\u0443 U+0020 \\u0438 U+007E, \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u044F, \\u043F\\u0435\\u0440\\u0435\\u0432\\u043E\\u0434 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0438 \\u0432\\u043E\\u0437\\u0432\\u0440\\u0430\\u0442 \\u043A\\u0430\\u0440\\u0435\\u0442\\u043A\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u044E\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0435 \\u043F\\u0440\\u043E\\u0441\\u0442\\u043E \\u0440\\u0435\\u0437\\u0435\\u0440\\u0432\\u0438\\u0440\\u0443\\u044E\\u0442 \\u043F\\u0440\\u043E\\u0441\\u0442\\u0440\\u0430\\u043D\\u0441\\u0442\\u0432\\u043E \\u0438\\u043B\\u0438 \\u0432\\u043E\\u043E\\u0431\\u0449\\u0435 \\u043D\\u0435 \\u0438\\u043C\\u0435\\u044E\\u0442 \\u0448\\u0438\\u0440\\u0438\\u043D\\u044B.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\\u043C \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0435 \\u043C\\u043E\\u0436\\u043D\\u043E \\u0441\\u043F\\u0443\\u0442\\u0430\\u0442\\u044C \\u0441 \\u043E\\u0441\\u043D\\u043E\\u0432\\u043D\\u044B\\u043C\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430\\u043C\\u0438 ASCII, \\u043A\\u0440\\u043E\\u043C\\u0435 \\u0442\\u0435\\u0445, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0435 \\u044F\\u0432\\u043B\\u044F\\u044E\\u0442\\u0441\\u044F \\u043E\\u0431\\u0449\\u0438\\u043C\\u0438 \\u0432 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u043C \\u044F\\u0437\\u044B\\u043A\\u043E\\u0432\\u043E\\u043C \\u0441\\u0442\\u0430\\u043D\\u0434\\u0430\\u0440\\u0442\\u0435 \\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u044F.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u0432 \\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0430\\u0440\\u0438\\u044F\\u0445 \\u0442\\u0430\\u043A\\u0436\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C\\u0441\\u044F \\u0432 \\u042E\\u043D\\u0438\\u043A\\u043E\\u0434\\u0435.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430\\u0445 \\u0442\\u0430\\u043A\\u0436\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C\\u0441\\u044F \\u0432 \\u042E\\u043D\\u0438\\u043A\\u043E\\u0434\\u0435.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0440\\u0430\\u0437\\u0440\\u0435\\u0448\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0435 \\u043D\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u044E\\u0442\\u0441\\u044F.\",\"\\u0421\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u042E\\u043D\\u0438\\u043A\\u043E\\u0434\\u0430, \\u0440\\u0430\\u0441\\u043F\\u0440\\u043E\\u0441\\u0442\\u0440\\u0430\\u043D\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0432 \\u0440\\u0430\\u0437\\u0440\\u0435\\u0448\\u0435\\u043D\\u043D\\u044B\\u0445 \\u044F\\u0437\\u044B\\u043A\\u0430\\u0445, \\u043D\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u044E\\u0442\\u0441\\u044F.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u043F\\u043E\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043F\\u0430\\u043D\\u0435\\u043B\\u044C \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u0440\\u0438 \\u043A\\u0430\\u0436\\u0434\\u043E\\u043C \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0438 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043F\\u0430\\u043D\\u0435\\u043B\\u044C \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044F \\u043C\\u044B\\u0448\\u0438 \\u043D\\u0430 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u0443\\u044E \\u043F\\u0430\\u043D\\u0435\\u043B\\u044C \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0432\\u0437\\u0430\\u0438\\u043C\\u043E\\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435\\u043C \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0441 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435\\u043C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439. \\u0415\\u0441\\u043B\\u0438 \\u044D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u043D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0430 \\u043B\\u0438 \\u0440\\u0430\\u0441\\u043A\\u0440\\u0430\\u0441\\u043A\\u0430 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A. \\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 {0} \\u0434\\u043B\\u044F \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0446\\u0432\\u0435\\u0442\\u043E\\u0432 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0438\\u043C\\u0435\\u0435\\u0442 \\u043B\\u0438 \\u043A\\u0430\\u0436\\u0434\\u044B\\u0439 \\u0442\\u0438\\u043F \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A \\u0441\\u043E\\u0431\\u0441\\u0442\\u0432\\u0435\\u043D\\u043D\\u044B\\u0439 \\u043D\\u0435\\u0437\\u0430\\u0432\\u0438\\u0441\\u0438\\u043C\\u044B\\u0439 \\u043F\\u0443\\u043B \\u0446\\u0432\\u0435\\u0442\\u043E\\u0432.\",\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0434\\u043B\\u044F \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u0439 \\u043F\\u0430\\u0440\\u044B \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u044B \\u043B\\u0438 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0435 \\u0433\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0432 \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0435\\u043D\\u0438\\u0435 \\u043A \\u0432\\u0435\\u0440\\u0442\\u0438\\u043A\\u0430\\u043B\\u044C\\u043D\\u044B\\u043C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u043C \\u0434\\u043B\\u044F \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0435 \\u0433\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0434\\u043B\\u044F \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u0439 \\u043F\\u0430\\u0440\\u044B \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0435 \\u0433\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u044B \\u043B\\u0438 \\u0433\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u044C\\u043D\\u044B\\u0435 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u0434\\u043B\\u044F \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043C, \\u0434\\u043E\\u043B\\u0436\\u043D\\u0430 \\u043B\\u0438 \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C\\u0441\\u044F \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u0430\\u044F \\u043F\\u0430\\u0440\\u0430 \\u043A\\u0432\\u0430\\u0434\\u0440\\u0430\\u0442\\u043D\\u044B\\u0445 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430.\",\"\\u0412\\u044B\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u0443\\u044E \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0443\\u044E \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430.\",\"\\u0412\\u044B\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u0443\\u044E \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0443\\u044E \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430, \\u0434\\u0430\\u0436\\u0435 \\u0435\\u0441\\u043B\\u0438 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u044B \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u041D\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u0443\\u044E \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0443\\u044E \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043C, \\u0434\\u043E\\u043B\\u0436\\u043D\\u0430 \\u043B\\u0438 \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C\\u0441\\u044F \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u0430\\u044F \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0430\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0431\\u0435\\u0437 \\u043F\\u0435\\u0440\\u0435\\u0437\\u0430\\u043F\\u0438\\u0441\\u0438 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0441\\u043F\\u0440\\u0430\\u0432\\u0430 \\u043E\\u0442 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430.\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0438 \\u043F\\u0435\\u0440\\u0435\\u0437\\u0430\\u043F\\u0438\\u0441\\u0430\\u0442\\u044C \\u0442\\u0435\\u043A\\u0441\\u0442 \\u0441\\u043F\\u0440\\u0430\\u0432\\u0430 \\u043E\\u0442 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0431\\u0443\\u0434\\u0443\\u0442 \\u043B\\u0438 \\u043F\\u0435\\u0440\\u0435\\u0437\\u0430\\u043F\\u0438\\u0441\\u044B\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u0441\\u043B\\u043E\\u0432\\u0430 \\u043F\\u0440\\u0438 \\u043F\\u0440\\u0438\\u043D\\u044F\\u0442\\u0438\\u0438 \\u0432\\u0430\\u0440\\u0438\\u0430\\u043D\\u0442\\u043E\\u0432 \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F. \\u041E\\u0431\\u0440\\u0430\\u0442\\u0438\\u0442\\u0435 \\u0432\\u043D\\u0438\\u043C\\u0430\\u043D\\u0438\\u0435, \\u0447\\u0442\\u043E \\u044D\\u0442\\u043E \\u0437\\u0430\\u0432\\u0438\\u0441\\u0438\\u0442 \\u043E\\u0442 \\u0440\\u0430\\u0441\\u0448\\u0438\\u0440\\u0435\\u043D\\u0438\\u0439, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u044E\\u0449\\u0438\\u0445 \\u044D\\u0442\\u0443 \\u0444\\u0443\\u043D\\u043A\\u0446\\u0438\\u044E.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043C, \\u0434\\u043E\\u043F\\u0443\\u0441\\u043A\\u0430\\u044E\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043D\\u0435\\u0431\\u043E\\u043B\\u044C\\u0448\\u0438\\u0435 \\u043E\\u043F\\u0435\\u0447\\u0430\\u0442\\u043A\\u0438 \\u0432 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\\u0445 \\u0444\\u0438\\u043B\\u044C\\u0442\\u0440\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u0441\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u043A\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u0443\\u0447\\u0438\\u0442\\u044B\\u0432\\u0430\\u0442\\u044C \\u043F\\u0440\\u0438 \\u0441\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u043A\\u0435 \\u0441\\u043B\\u043E\\u0432\\u0430, \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0440\\u044F\\u0434\\u043E\\u043C \\u0441 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u043E\\u043C.\",'\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u044E\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0441\\u043E\\u0445\\u0440\\u0430\\u043D\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0432\\u0430\\u0440\\u0438\\u0430\\u043D\\u0442\\u044B \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0441\\u043E\\u0432\\u043C\\u0435\\u0441\\u0442\\u043D\\u043E \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u0438\\u043C\\u0438 \\u0440\\u0430\\u0431\\u043E\\u0447\\u0438\\u043C\\u0438 \\u043E\\u0431\\u043B\\u0430\\u0441\\u0442\\u044F\\u043C\\u0438 \\u0438 \\u043E\\u043A\\u043D\\u0430\\u043C\\u0438 (\\u0442\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \"#editor.suggestSelection#\").',\"\\u0412\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0432\\u044B\\u0431\\u0438\\u0440\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u0438 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0439 \\u0430\\u043A\\u0442\\u0438\\u0432\\u0430\\u0446\\u0438\\u0438 IntelliSense.\",\"\\u041D\\u0438\\u043A\\u043E\\u0433\\u0434\\u0430 \\u043D\\u0435 \\u0432\\u044B\\u0431\\u0438\\u0440\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u0438 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0439 \\u0430\\u043A\\u0442\\u0438\\u0432\\u0430\\u0446\\u0438\\u0438 IntelliSense.\",\"\\u0412\\u044B\\u0431\\u0438\\u0440\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043F\\u0440\\u0438 \\u0430\\u043A\\u0442\\u0438\\u0432\\u0430\\u0446\\u0438\\u0438 IntelliSense \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u0442\\u0440\\u0438\\u0433\\u0433\\u0435\\u0440\\u043D\\u043E\\u0433\\u043E \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430.\",\"\\u0412\\u044B\\u0431\\u0438\\u0440\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043F\\u0440\\u0438 \\u0430\\u043A\\u0442\\u0438\\u0432\\u0430\\u0446\\u0438\\u0438 IntelliSense \\u043F\\u043E \\u043C\\u0435\\u0440\\u0435 \\u0432\\u0432\\u043E\\u0434\\u0430.\",'\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0432\\u044B\\u0431\\u0438\\u0440\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u0438 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F. \\u041E\\u0431\\u0440\\u0430\\u0442\\u0438\\u0442\\u0435 \\u0432\\u043D\\u0438\\u043C\\u0430\\u043D\\u0438\\u0435, \\u0447\\u0442\\u043E \\u044D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043A \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0430\\u043A\\u0442\\u0438\\u0432\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u043D\\u044B\\u043C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\\u043C (\"#editor.quickSuggestions#\" \\u0438 \"#editor.suggestOnTriggerCharacters#\"), \\u0438 \\u0447\\u0442\\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0432\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0432\\u044B\\u0431\\u0438\\u0440\\u0430\\u0435\\u0442\\u0441\\u044F \\u043F\\u0440\\u0438 \\u044F\\u0432\\u043D\\u043E\\u043C \\u0432\\u044B\\u0437\\u043E\\u0432\\u0435, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440 \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448 \"CTRL+\\u041F\\u0420\\u041E\\u0411\\u0415\\u041B\".',\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0437\\u0430\\u043F\\u0440\\u0435\\u0449\\u0430\\u0435\\u0442 \\u043B\\u0438 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0439 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442 \\u043A\\u043E\\u0434\\u0430 \\u044D\\u043A\\u0441\\u043F\\u0440\\u0435\\u0441\\u0441-\\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F.\",\"\\u0423\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0435\\u0442, \\u043D\\u0443\\u0436\\u043D\\u043E \\u043B\\u0438 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u0437\\u043D\\u0430\\u0447\\u043A\\u0438 \\u0432 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\\u0445.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0432\\u0438\\u0434\\u0438\\u043C\\u043E\\u0441\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0441\\u043E\\u0441\\u0442\\u043E\\u044F\\u043D\\u0438\\u044F \\u0432 \\u043D\\u0438\\u0436\\u043D\\u0435\\u0439 \\u0447\\u0430\\u0441\\u0442\\u0438 \\u0432\\u0438\\u0434\\u0436\\u0435\\u0442\\u0430 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u043F\\u0440\\u043E\\u0441\\u043C\\u0430\\u0442\\u0440\\u0438\\u0432\\u0430\\u0442\\u044C \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0441\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F \\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435 \\u0432\\u043C\\u0435\\u0441\\u0442\\u0435 \\u0441 \\u043C\\u0435\\u0442\\u043A\\u043E\\u0439 \\u0438\\u043B\\u0438 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u0441\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u042D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043D\\u0435\\u0440\\u0435\\u043A\\u043E\\u043C\\u0435\\u043D\\u0434\\u0443\\u0435\\u043C\\u044B\\u043C. \\u0422\\u0435\\u043F\\u0435\\u0440\\u044C \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u043C\\u043E\\u0436\\u043D\\u043E \\u0438\\u0437\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C.\",\"\\u042D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0443\\u0441\\u0442\\u0430\\u0440\\u0435\\u043B. \\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \\u0432\\u043C\\u0435\\u0441\\u0442\\u043E \\u043D\\u0435\\u0433\\u043E \\u043E\\u0442\\u0434\\u0435\\u043B\\u044C\\u043D\\u044B\\u0435 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u044B, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, 'editor.suggest.showKeywords' \\u0438\\u043B\\u0438 'editor.suggest.showSnippets'.\",'\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"method\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"function\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"constructor\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"deprecated\".','\\u041F\\u0440\\u0438 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0438 \\u0444\\u0438\\u043B\\u044C\\u0442\\u0440\\u0430\\u0446\\u0438\\u0438 IntelliSense \\u043D\\u0435\\u043E\\u0431\\u0445\\u043E\\u0434\\u0438\\u043C\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043F\\u0435\\u0440\\u0432\\u044B\\u0439 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0430\\u043B \\u0432 \\u043D\\u0430\\u0447\\u0430\\u043B\\u0435 \\u0441\\u043B\\u043E\\u0432\\u0430, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440 \"c\" \\u0432 \"Console\" \\u0438\\u043B\\u0438 \"WebContext\", \\u043D\\u043E _\\u043D\\u0435_ \\u0432 \"description\". \\u0415\\u0441\\u043B\\u0438 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442 \\u0431\\u043E\\u043B\\u044C\\u0448\\u0435 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432, \\u043D\\u043E \\u043F\\u043E-\\u043F\\u0440\\u0435\\u0436\\u043D\\u0435\\u043C\\u0443 \\u0441\\u043E\\u0440\\u0442\\u0438\\u0440\\u0443\\u0435\\u0442 \\u0438\\u0445 \\u043F\\u043E \\u043A\\u0430\\u0447\\u0435\\u0441\\u0442\\u0432\\u0443 \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0438\\u044F.','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"field\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"variable\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"class\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"struct\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"interface\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"module\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"property\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"event\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"operator\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"unit\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"value\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"constant\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"enum\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"enumMember\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"keyword\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"text\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"color\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"file\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"reference\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"customcolor\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"folder\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"typeParameter\".','\\u041A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D, \\u0432 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \"snippet\".','\\u0412\\u043E \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u043D\\u043E\\u043C \\u0441\\u043E\\u0441\\u0442\\u043E\\u044F\\u043D\\u0438\\u0438 IntelliSense \\u043F\\u043E\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0435\\u0442 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0442\\u0438\\u043F\\u0430 \"\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u0438\".','\\u0412\\u043E \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u043D\\u043E\\u043C \\u0441\\u043E\\u0441\\u0442\\u043E\\u044F\\u043D\\u0438\\u0438 IntelliSense \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0442\\u0438\\u043F\\u0430 \"\\u043F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C\\u044B\".',\"\\u0414\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u0432\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0431\\u044B\\u0442\\u044C \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u044B \\u043D\\u0430\\u0447\\u0430\\u043B\\u044C\\u043D\\u044B\\u0439 \\u0438 \\u043A\\u043E\\u043D\\u0435\\u0447\\u043D\\u044B\\u0439 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u044B.\",'\\u0421\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u0432\\u044B\\u0431\\u0438\\u0440\\u0430\\u0442\\u044C \\u0432\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0441\\u043B\\u043E\\u0432\\u0430 (\\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \"foo\" \\u0432 \"fooBar\" \\u0438\\u043B\\u0438 \"foo_bar\").',\"\\u0411\\u0435\\u0437 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430. \\u041F\\u0435\\u0440\\u0435\\u043D\\u043E\\u0441 \\u0441\\u0442\\u0440\\u043E\\u043A \\u043D\\u0430\\u0447\\u0438\\u043D\\u0430\\u0435\\u0442\\u0441\\u044F \\u0441\\u043E \\u0441\\u0442\\u043E\\u043B\\u0431\\u0446\\u0430 1.\",\"\\u041F\\u0435\\u0440\\u0435\\u043D\\u0435\\u0441\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u043F\\u043E\\u043B\\u0443\\u0447\\u0430\\u0442 \\u0442\\u043E\\u0442 \\u0436\\u0435 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F, \\u0447\\u0442\\u043E \\u0438 \\u0440\\u043E\\u0434\\u0438\\u0442\\u0435\\u043B\\u044C\\u0441\\u043A\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430.\",\"\\u041F\\u0435\\u0440\\u0435\\u043D\\u0435\\u0441\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u043F\\u043E\\u043B\\u0443\\u0447\\u0430\\u0442 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F, \\u0443\\u0432\\u0435\\u043B\\u0438\\u0447\\u0435\\u043D\\u043D\\u044B\\u0439 \\u043D\\u0430 \\u0435\\u0434\\u0438\\u043D\\u0438\\u0446\\u0443 \\u043F\\u043E \\u0441\\u0440\\u0430\\u0432\\u043D\\u0435\\u043D\\u0438\\u044E \\u0441 \\u0440\\u043E\\u0434\\u0438\\u0442\\u0435\\u043B\\u044C\\u0441\\u043A\\u043E\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u043E\\u0439. \",\"\\u041F\\u0435\\u0440\\u0435\\u043D\\u0435\\u0441\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u043F\\u043E\\u043B\\u0443\\u0447\\u0430\\u0442 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F, \\u0443\\u0432\\u0435\\u043B\\u0438\\u0447\\u0435\\u043D\\u043D\\u044B\\u0439 \\u043D\\u0430 \\u0434\\u0432\\u0430 \\u043F\\u043E \\u0441\\u0440\\u0430\\u0432\\u043D\\u0435\\u043D\\u0438\\u044E \\u0441 \\u0440\\u043E\\u0434\\u0438\\u0442\\u0435\\u043B\\u044C\\u0441\\u043A\\u043E\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u043E\\u0439.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u043C \\u0441\\u0442\\u0440\\u043E\\u043A \\u0441 \\u043F\\u0435\\u0440\\u0435\\u043D\\u043E\\u0441\\u043E\\u043C \\u043F\\u043E \\u0441\\u043B\\u043E\\u0432\\u0430\\u043C.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043C\\u043E\\u0436\\u043D\\u043E \\u043B\\u0438 \\u043F\\u0435\\u0440\\u0435\\u0442\\u0430\\u0441\\u043A\\u0438\\u0432\\u0430\\u0442\\u044C \\u0444\\u0430\\u0439\\u043B \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440, \\u0443\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u044F \\u043D\\u0430\\u0436\\u0430\\u0442\\u043E\\u0439 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0443 SHIFT (\\u0432\\u043C\\u0435\\u0441\\u0442\\u043E \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u0438\\u044F \\u0444\\u0430\\u0439\\u043B\\u0430 \\u0432 \\u0441\\u0430\\u043C\\u043E\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435).\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u0438 \\u0441\\u0431\\u0440\\u043E\\u0441\\u0435 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440. \\u042D\\u0442\\u043E \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E\\u0437\\u0432\\u043E\\u043B\\u044F\\u0435\\u0442 \\u0443\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u0442\\u0435\\u043C, \\u043A\\u0430\\u043A \\u0441\\u0431\\u0440\\u0430\\u0441\\u044B\\u0432\\u0430\\u0435\\u0442\\u0441\\u044F \\u0444\\u0430\\u0439\\u043B.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u0441\\u0431\\u0440\\u043E\\u0441\\u0430 \\u043F\\u043E\\u0441\\u043B\\u0435 \\u0441\\u0431\\u0440\\u043E\\u0441\\u0430 \\u0444\\u0430\\u0439\\u043B\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440.\",\"\\u041D\\u0438\\u043A\\u043E\\u0433\\u0434\\u0430 \\u043D\\u0435 \\u043F\\u043E\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u0441\\u0431\\u0440\\u043E\\u0441\\u0430. \\u0412\\u043C\\u0435\\u0441\\u0442\\u043E \\u044D\\u0442\\u043E\\u0433\\u043E \\u0432\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u0441\\u0431\\u0440\\u043E\\u0441\\u0430 \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043C\\u043E\\u0436\\u043D\\u043E \\u043B\\u0438 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0435 \\u0440\\u0430\\u0437\\u043B\\u0438\\u0447\\u043D\\u044B\\u043C\\u0438 \\u0441\\u043F\\u043E\\u0441\\u043E\\u0431\\u0430\\u043C\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u0438 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0435 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440. \\u042D\\u0442\\u043E \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E\\u0437\\u0432\\u043E\\u043B\\u044F\\u0435\\u0442 \\u0443\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u0442\\u0435\\u043C, \\u043A\\u0430\\u043A \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u0444\\u0430\\u0439\\u043B.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0438 \\u043F\\u043E\\u0441\\u043B\\u0435 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0438 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440.\",\"\\u041D\\u0438\\u043A\\u043E\\u0433\\u0434\\u0430 \\u043D\\u0435 \\u043F\\u043E\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0438. \\u0412\\u043C\\u0435\\u0441\\u0442\\u043E \\u044D\\u0442\\u043E\\u0433\\u043E \\u0432\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0438 \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E.\",'\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0431\\u0443\\u0434\\u0443\\u0442 \\u043B\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u0440\\u0438\\u043D\\u0438\\u043C\\u0430\\u0442\\u044C\\u0441\\u044F \\u043F\\u0440\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0444\\u0438\\u043A\\u0441\\u0430\\u0446\\u0438\\u0438. \\u041D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u0432 JavaScript \\u0442\\u043E\\u0447\\u043A\\u0430 \\u0441 \\u0437\\u0430\\u043F\\u044F\\u0442\\u043E\\u0439 (\";\") \\u043C\\u043E\\u0436\\u0435\\u0442 \\u0431\\u044B\\u0442\\u044C \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u043C \\u0444\\u0438\\u043A\\u0441\\u0430\\u0446\\u0438\\u0438, \\u043F\\u0440\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0435 \\u043A\\u043E\\u0442\\u043E\\u0440\\u043E\\u0433\\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u0438\\u043D\\u0438\\u043C\\u0430\\u0435\\u0442\\u0441\\u044F.',\"\\u041F\\u0440\\u0438\\u043D\\u0438\\u043C\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 \\u0412\\u0412\\u041E\\u0414 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u0435\\u0441\\u043B\\u0438 \\u043E\\u043D\\u043E \\u0438\\u0437\\u043C\\u0435\\u043D\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043A\\u0441\\u0442.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0431\\u0443\\u0434\\u0443\\u0442 \\u043B\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u0440\\u0438\\u043D\\u0438\\u043C\\u0430\\u0442\\u044C\\u0441\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0435\\u0439 \\u0412\\u0412\\u041E\\u0414 \\u0432 \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0435\\u043D\\u0438\\u0435 \\u043A \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0435 TAB. \\u042D\\u0442\\u043E \\u043F\\u043E\\u043C\\u043E\\u0433\\u0430\\u0435\\u0442 \\u0438\\u0437\\u0431\\u0435\\u0436\\u0430\\u0442\\u044C \\u043D\\u0435\\u043E\\u0434\\u043D\\u043E\\u0437\\u043D\\u0430\\u0447\\u043D\\u043E\\u0441\\u0442\\u0438 \\u043C\\u0435\\u0436\\u0434\\u0443 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u043E\\u0439 \\u043D\\u043E\\u0432\\u044B\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A \\u0438 \\u043F\\u0440\\u0438\\u043D\\u044F\\u0442\\u0438\\u0435\\u043C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0447\\u0438\\u0441\\u043B\\u043E\\u043C \\u0441\\u0442\\u0440\\u043E\\u043A \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0435 \\u043C\\u043E\\u0433\\u0443\\u0442 \\u0431\\u044B\\u0442\\u044C \\u043F\\u0440\\u043E\\u0447\\u0438\\u0442\\u0430\\u043D\\u044B \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u043E\\u043C \\u0447\\u0442\\u0435\\u043D\\u0438\\u044F \\u0441 \\u044D\\u043A\\u0440\\u0430\\u043D\\u0430 \\u0437\\u0430 \\u043E\\u0434\\u0438\\u043D \\u0440\\u0430\\u0437. \\u041F\\u0440\\u0438 \\u043E\\u0431\\u043D\\u0430\\u0440\\u0443\\u0436\\u0435\\u043D\\u0438\\u0438 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0430 \\u0447\\u0442\\u0435\\u043D\\u0438\\u044F \\u0441 \\u044D\\u043A\\u0440\\u0430\\u043D\\u0430 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0443\\u0441\\u0442\\u0430\\u043D\\u0430\\u0432\\u043B\\u0438\\u0432\\u0430\\u0435\\u0442\\u0441\\u044F \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E 500. \\u0412\\u043D\\u0438\\u043C\\u0430\\u043D\\u0438\\u0435! \\u041F\\u0440\\u0438 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u0438 \\u0447\\u0438\\u0441\\u043B\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A, \\u043F\\u0440\\u0435\\u0432\\u044B\\u0448\\u0430\\u044E\\u0449\\u0435\\u0433\\u043E \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E, \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E \\u0441\\u043D\\u0438\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u043E\\u0434\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0441\\u0442\\u0438.\",\"\\u0421\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0435 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0439\\u0442\\u0435 \\u0442\\u0435\\u043C, \\u043E\\u0431\\u044A\\u044F\\u0432\\u043B\\u044F\\u044E\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u043E\\u043C \\u0447\\u0442\\u0435\\u043D\\u0438\\u044F \\u044D\\u043A\\u0440\\u0430\\u043D\\u0430.\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u043A\\u043E\\u043D\\u0444\\u0438\\u0433\\u0443\\u0440\\u0430\\u0446\\u0438\\u0438 \\u044F\\u0437\\u044B\\u043A\\u0430 \\u0434\\u043B\\u044F \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0433\\u043E \\u0437\\u0430\\u043A\\u0440\\u044B\\u0442\\u0438\\u044F \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0410\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0437\\u0430\\u043A\\u0440\\u044B\\u0432\\u0430\\u0442\\u044C \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u0435\\u0441\\u043B\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440 \\u043D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u0441\\u043B\\u0435\\u0432\\u0430 \\u043E\\u0442 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0434\\u043E\\u0431\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u0437\\u0430\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0443\\u044E \\u0441\\u043A\\u043E\\u0431\\u043A\\u0443 \\u043F\\u0440\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0435 \\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u0435\\u043C \\u043E\\u0442\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0435\\u0439 \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438.\",\"\\u0423\\u0434\\u0430\\u043B\\u044F\\u0442\\u044C \\u0441\\u043E\\u0441\\u0435\\u0434\\u043D\\u0438\\u0435 \\u0437\\u0430\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0438\\u0435 \\u043A\\u0430\\u0432\\u044B\\u0447\\u043A\\u0438 \\u0438 \\u043A\\u0432\\u0430\\u0434\\u0440\\u0430\\u0442\\u043D\\u044B\\u0435 \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u0435\\u0441\\u043B\\u0438 \\u043E\\u043D\\u0438 \\u0431\\u044B\\u043B\\u0438 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u044B \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0443\\u0434\\u0430\\u043B\\u044F\\u0442\\u044C \\u0441\\u043E\\u0441\\u0435\\u0434\\u043D\\u0438\\u0435 \\u0437\\u0430\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0438\\u0435 \\u043A\\u0430\\u0432\\u044B\\u0447\\u043A\\u0438 \\u0438\\u043B\\u0438 \\u043A\\u0432\\u0430\\u0434\\u0440\\u0430\\u0442\\u043D\\u044B\\u0435 \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438 \\u043F\\u0440\\u0438 \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0438.\",\"\\u0417\\u0430\\u043C\\u0435\\u043D\\u044F\\u0442\\u044C \\u0437\\u0430\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0438\\u0435 \\u043A\\u0430\\u0432\\u044B\\u0447\\u043A\\u0438 \\u0438 \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438 \\u043F\\u0440\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0435 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u0435\\u0441\\u043B\\u0438 \\u043A\\u0430\\u0432\\u044B\\u0447\\u043A\\u0438 \\u0438\\u043B\\u0438 \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438 \\u0431\\u044B\\u043B\\u0438 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u044B \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u0437\\u0430\\u043C\\u0435\\u043D\\u044F\\u0442\\u044C\\u0441\\u044F \\u0437\\u0430\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0438\\u0435 \\u043A\\u0430\\u0432\\u044B\\u0447\\u043A\\u0438 \\u0438\\u043B\\u0438 \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438 \\u043F\\u0440\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0435.\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u043A\\u043E\\u043D\\u0444\\u0438\\u0433\\u0443\\u0440\\u0430\\u0446\\u0438\\u0438 \\u044F\\u0437\\u044B\\u043A\\u0430 \\u0434\\u043B\\u044F \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0433\\u043E \\u0437\\u0430\\u043A\\u0440\\u044B\\u0442\\u0438\\u044F \\u043A\\u0430\\u0432\\u044B\\u0447\\u0435\\u043A.\",\"\\u0410\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0437\\u0430\\u043A\\u0440\\u044B\\u0432\\u0430\\u0442\\u044C \\u043A\\u0430\\u0432\\u044B\\u0447\\u043A\\u0438 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u0435\\u0441\\u043B\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440 \\u043D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u0441\\u043B\\u0435\\u0432\\u0430 \\u043E\\u0442 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0437\\u0430\\u043A\\u0440\\u044B\\u0432\\u0430\\u0442\\u044C \\u043A\\u0430\\u0432\\u044B\\u0447\\u043A\\u0438, \\u0435\\u0441\\u043B\\u0438 \\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u044C \\u0434\\u043E\\u0431\\u0430\\u0432\\u0438\\u043B \\u043E\\u0442\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0443\\u044E \\u043A\\u0430\\u0432\\u044B\\u0447\\u043A\\u0443.\",\"\\u0420\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043D\\u0435 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u044B \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438.\",\"\\u0420\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0441\\u043E\\u0445\\u0440\\u0430\\u043D\\u044F\\u0442\\u044C \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438.\",\"\\u0420\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0441\\u043E\\u0445\\u0440\\u0430\\u043D\\u044F\\u0442\\u044C \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u044B \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0438 \\u0443\\u0447\\u0438\\u0442\\u044B\\u0432\\u0430\\u0442\\u044C \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438 \\u0432 \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0438\\u0438 \\u0441 \\u0441\\u0438\\u043D\\u0442\\u0430\\u043A\\u0441\\u0438\\u0441\\u043E\\u043C \\u044F\\u0437\\u044B\\u043A\\u0430.\",\"\\u0420\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0441\\u043E\\u0445\\u0440\\u0430\\u043D\\u044F\\u0442\\u044C \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438, \\u0443\\u0447\\u0438\\u0442\\u044B\\u0432\\u0430\\u0442\\u044C \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0435 \\u044F\\u0437\\u044B\\u043A\\u043E\\u043C \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438 \\u0438 \\u0432\\u044B\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u0435 \\u043F\\u0440\\u0430\\u0432\\u0438\\u043B\\u0430 onEnterRules, \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u043C\\u044B\\u0435 \\u044F\\u0437\\u044B\\u043A\\u0430\\u043C\\u0438.\",\"\\u0420\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0441\\u043E\\u0445\\u0440\\u0430\\u043D\\u044F\\u0442\\u044C \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438, \\u0443\\u0447\\u0438\\u0442\\u044B\\u0432\\u0430\\u0442\\u044C \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0435 \\u044F\\u0437\\u044B\\u043A\\u043E\\u043C \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438, \\u0432\\u044B\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u0435 \\u043F\\u0440\\u0430\\u0432\\u0438\\u043B\\u0430 onEnterRules, \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u043C\\u044B\\u0435 \\u044F\\u0437\\u044B\\u043A\\u0430\\u043C\\u0438 \\u0438 \\u0443\\u0447\\u0438\\u0442\\u044B\\u0432\\u0430\\u0442\\u044C \\u043F\\u0440\\u0430\\u0432\\u0438\\u043B\\u0430 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430 indentationRules, \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u043C\\u044B\\u0435 \\u044F\\u0437\\u044B\\u043A\\u0430\\u043C\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0438\\u0437\\u043C\\u0435\\u043D\\u044F\\u0442\\u044C \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u044B, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u0438 \\u0432\\u0432\\u043E\\u0434\\u044F\\u0442, \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u044E\\u0442 \\u0438\\u043B\\u0438 \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0449\\u0430\\u044E\\u0442 \\u0442\\u0435\\u043A\\u0441\\u0442 \\u0438\\u043B\\u0438 \\u0438\\u0437\\u043C\\u0435\\u043D\\u044F\\u044E\\u0442 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u044B \\u0441\\u0442\\u0440\\u043E\\u043A.\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u043A\\u043E\\u043D\\u0444\\u0438\\u0433\\u0443\\u0440\\u0430\\u0446\\u0438\\u0438 \\u044F\\u0437\\u044B\\u043A\\u0430 \\u0434\\u043B\\u044F \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0433\\u043E \\u043E\\u0431\\u0440\\u0430\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0439.\",\"\\u041E\\u0431\\u0440\\u0430\\u043C\\u043B\\u044F\\u0442\\u044C \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043A\\u0430\\u0432\\u044B\\u0447\\u0435\\u043A, \\u0430 \\u043D\\u0435 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u041E\\u0431\\u0440\\u0430\\u043C\\u043B\\u044F\\u0442\\u044C \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A, \\u0430 \\u043D\\u0435 \\u043A\\u0430\\u0432\\u044B\\u0447\\u0435\\u043A.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u043E\\u0431\\u0440\\u0430\\u043C\\u043B\\u044F\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u043F\\u0440\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0435 \\u043A\\u0430\\u0432\\u044B\\u0447\\u0435\\u043A \\u0438\\u043B\\u0438 \\u043A\\u0432\\u0430\\u0434\\u0440\\u0430\\u0442\\u043D\\u044B\\u0445 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u042D\\u043C\\u0443\\u043B\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u043F\\u043E\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438 \\u043F\\u0440\\u0438 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D\\u0438\\u0438 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u043E\\u0432 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430. \\u0412\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0435\\u043D\\u043E \\u043A \\u043F\\u043E\\u0437\\u0438\\u0446\\u0438\\u044F\\u043C \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 CodeLens \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0441\\u0435\\u043C\\u0435\\u0439\\u0441\\u0442\\u0432\\u043E\\u043C \\u0448\\u0440\\u0438\\u0444\\u0442\\u043E\\u0432 \\u0434\\u043B\\u044F CodeLens.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430 \\u0432 \\u043F\\u0438\\u043A\\u0441\\u0435\\u043B\\u044F\\u0445 \\u0434\\u043B\\u044F CodeLens. \\u0415\\u0441\\u043B\\u0438 \\u0437\\u0430\\u0434\\u0430\\u043D\\u043E \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 0, \\u0442\\u043E \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F 90% \\u043E\\u0442 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440\\u0430 #editor.fontSize#.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0438\\u0435 \\u0434\\u0435\\u043A\\u043E\\u0440\\u0430\\u0442\\u043E\\u0440\\u044B \\u0446\\u0432\\u0435\\u0442\\u0430 \\u0438 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u0446\\u0432\\u0435\\u0442\\u0430.\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u043F\\u0430\\u043B\\u0438\\u0442\\u0440\\u0443 \\u043F\\u0440\\u0438 \\u0449\\u0435\\u043B\\u0447\\u043A\\u0435 \\u0438 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044F \\u043D\\u0430 \\u0434\\u0435\\u043A\\u043E\\u0440\\u0430\\u0442\\u043E\\u0440 \\u0446\\u0432\\u0435\\u0442\\u0430\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u043F\\u0430\\u043B\\u0438\\u0442\\u0440\\u0443 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044F \\u043D\\u0430 \\u0434\\u0435\\u043A\\u043E\\u0440\\u0430\\u0442\\u043E\\u0440 \\u0446\\u0432\\u0435\\u0442\\u0430\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u043F\\u0430\\u043B\\u0438\\u0442\\u0440\\u0443 \\u043F\\u0440\\u0438 \\u0449\\u0435\\u043B\\u0447\\u043A\\u0435 \\u0434\\u0435\\u043A\\u043E\\u0440\\u0430\\u0442\\u043E\\u0440\\u0430 \\u0446\\u0432\\u0435\\u0442\\u0430\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0443\\u0441\\u043B\\u043E\\u0432\\u0438\\u0435\\u043C \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u0430\\u043B\\u0438\\u0442\\u0440\\u044B \\u0432 \\u0434\\u0435\\u043A\\u043E\\u0440\\u0430\\u0442\\u043E\\u0440\\u0435 \\u0446\\u0432\\u0435\\u0442\\u0430\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043C\\u0430\\u043A\\u0441\\u0438\\u043C\\u0430\\u043B\\u044C\\u043D\\u044B\\u043C \\u043A\\u043E\\u043B\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043E\\u043C \\u0446\\u0432\\u0435\\u0442\\u043E\\u0432\\u044B\\u0445 \\u0434\\u0435\\u043A\\u043E\\u0440\\u0430\\u0442\\u043E\\u0440\\u043E\\u0432, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0435 \\u043C\\u043E\\u0436\\u043D\\u043E \\u043E\\u0442\\u0440\\u0438\\u0441\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043E\\u0434\\u043D\\u043E\\u0432\\u0440\\u0435\\u043C\\u0435\\u043D\\u043D\\u043E.\",\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0435 \\u0442\\u043E\\u0433\\u043E, \\u0447\\u0442\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440 \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B \\u0438 \\u043C\\u044B\\u0448\\u0438 \\u043F\\u0440\\u0438\\u0432\\u043E\\u0434\\u0438\\u0442 \\u043A \\u0432\\u044B\\u0431\\u043E\\u0440\\u0443 \\u0441\\u0442\\u043E\\u043B\\u0431\\u0446\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0431\\u0443\\u0434\\u0435\\u0442 \\u043B\\u0438 \\u0442\\u0435\\u043A\\u0441\\u0442 \\u0441\\u043A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D \\u0432 \\u0431\\u0443\\u0444\\u0435\\u0440 \\u043E\\u0431\\u043C\\u0435\\u043D\\u0430 \\u0441 \\u043F\\u043E\\u0434\\u0441\\u0432\\u0435\\u0442\\u043A\\u043E\\u0439 \\u0441\\u0438\\u043D\\u0442\\u0430\\u043A\\u0441\\u0438\\u0441\\u0430.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0441\\u0442\\u0438\\u043B\\u0435\\u043C \\u0430\\u043D\\u0438\\u043C\\u0430\\u0446\\u0438\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430.\",\"\\u041F\\u043B\\u0430\\u0432\\u043D\\u0430\\u044F \\u0430\\u043D\\u0438\\u043C\\u0430\\u0446\\u0438\\u044F \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0430.\",\"\\u041F\\u043B\\u0430\\u0432\\u043D\\u0430\\u044F \\u0430\\u043D\\u0438\\u043C\\u0430\\u0446\\u0438\\u044F \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0430, \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0435\\u0441\\u043B\\u0438 \\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u044C \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0449\\u0430\\u0435\\u0442 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440 \\u044F\\u0432\\u043D\\u044B\\u043C \\u0436\\u0435\\u0441\\u0442\\u043E\\u043C.\",\"\\u041F\\u043B\\u0430\\u0432\\u043D\\u0430\\u044F \\u0430\\u043D\\u0438\\u043C\\u0430\\u0446\\u0438\\u044F \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u0432\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0430.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043C, \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043F\\u043B\\u0430\\u0432\\u043D\\u0443\\u044E \\u0430\\u043D\\u0438\\u043C\\u0430\\u0446\\u0438\\u044E \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0441\\u0442\\u0438\\u043B\\u0435\\u043C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430.\",'\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u043C\\u0438\\u043D\\u0438\\u043C\\u0430\\u043B\\u044C\\u043D\\u043E\\u0435 \\u0447\\u0438\\u0441\\u043B\\u043E \\u0432\\u0438\\u0434\\u0438\\u043C\\u044B\\u0445 \\u043D\\u0430\\u0447\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u043B\\u0438\\u043D\\u0438\\u0439 (\\u043C\\u0438\\u043D\\u0438\\u043C\\u0443\\u043C 0) \\u0438 \\u043A\\u043E\\u043D\\u0435\\u0447\\u043D\\u044B\\u0445 \\u043B\\u0438\\u043D\\u0438\\u0439 (\\u043C\\u0438\\u043D\\u0438\\u043C\\u0443\\u043C 1), \\u043E\\u043A\\u0440\\u0443\\u0436\\u0430\\u044E\\u0449\\u0438\\u0445 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440. \\u042D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0438\\u043C\\u0435\\u0435\\u0442 \\u043D\\u0430\\u0437\\u0432\\u0430\\u043D\\u0438\\u0435 \"scrollOff\" \\u0438\\u043B\\u0438 \"scrollOffset\" \\u0432 \\u043D\\u0435\\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0445 \\u0434\\u0440\\u0443\\u0433\\u0438\\u0445 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\\u0445.','\"cursorSurroundingLines\" \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043F\\u0440\\u0438 \\u0437\\u0430\\u043F\\u0443\\u0441\\u043A\\u0435 \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B \\u0438\\u043B\\u0438 API.','\"cursorSurroundingLines\" \\u043F\\u0440\\u0438\\u043D\\u0443\\u0434\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u0432\\u043E \\u0432\\u0441\\u0435\\u0445 \\u0441\\u043B\\u0443\\u0447\\u0430\\u044F\\u0445.','\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u043D\\u0435\\u043E\\u0431\\u0445\\u043E\\u0434\\u0438\\u043C\\u043E \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u044F\\u0442\\u044C \"cursorSurroundingLines\".',`\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0448\\u0438\\u0440\\u0438\\u043D\\u043E\\u0439 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0434\\u043B\\u044F \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430 \"#editor.cursorStyle#\" \\u0443\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u043B\\u0435\\u043D\\u043E \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 'line'`,\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0443 \\u0440\\u0430\\u0437\\u0440\\u0435\\u0448\\u0438\\u0442\\u044C \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0449\\u0435\\u043D\\u0438\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043F\\u0435\\u0440\\u0435\\u0442\\u0430\\u0441\\u043A\\u0438\\u0432\\u0430\\u043D\\u0438\\u044F.\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u043D\\u043E\\u0432\\u044B\\u0439 \\u043C\\u0435\\u0442\\u043E\\u0434 \\u043E\\u0442\\u0440\\u0438\\u0441\\u043E\\u0432\\u043A\\u0438 \\u0441 SVG.\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u043D\\u043E\\u0432\\u044B\\u0439 \\u043C\\u0435\\u0442\\u043E\\u0434 \\u043E\\u0442\\u0440\\u0438\\u0441\\u043E\\u0432\\u043A\\u0438 \\u0441 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430\\u043C\\u0438 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430.\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u0441\\u0442\\u0430\\u0431\\u0438\\u043B\\u044C\\u043D\\u044B\\u0439 \\u043C\\u0435\\u0442\\u043E\\u0434 \\u043E\\u0442\\u0440\\u0438\\u0441\\u043E\\u0432\\u043A\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043E\\u0442\\u0440\\u0438\\u0441\\u043E\\u0432\\u044B\\u0432\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B \\u0441 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\\u043C \\u043D\\u043E\\u0432\\u043E\\u0433\\u043E \\u044D\\u043A\\u0441\\u043F\\u0435\\u0440\\u0438\\u043C\\u0435\\u043D\\u0442\\u0430\\u043B\\u044C\\u043D\\u043E\\u0433\\u043E \\u043C\\u0435\\u0442\\u043E\\u0434\\u0430.\",\"\\u041A\\u043E\\u044D\\u0444\\u0444\\u0438\\u0446\\u0438\\u0435\\u043D\\u0442 \\u0443\\u0432\\u0435\\u043B\\u0438\\u0447\\u0435\\u043D\\u0438\\u044F \\u0441\\u043A\\u043E\\u0440\\u043E\\u0441\\u0442\\u0438 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 ALT.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u043E \\u043B\\u0438 \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u0435 \\u043A\\u043E\\u0434\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \\u0441\\u0442\\u0440\\u0430\\u0442\\u0435\\u0433\\u0438\\u044E \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u044F \\u0434\\u043B\\u044F \\u043A\\u043E\\u043D\\u043A\\u0440\\u0435\\u0442\\u043D\\u043E\\u0433\\u043E \\u044F\\u0437\\u044B\\u043A\\u0430, \\u0435\\u0441\\u043B\\u0438 \\u043E\\u043D\\u0430 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u0430, \\u0432 \\u043F\\u0440\\u043E\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \\u0441\\u0442\\u0440\\u0430\\u0442\\u0435\\u0433\\u0438\\u044E \\u043D\\u0430 \\u043E\\u0441\\u043D\\u043E\\u0432\\u0435 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432.\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \\u0441\\u0442\\u0440\\u0430\\u0442\\u0435\\u0433\\u0438\\u044E \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u044F \\u043D\\u0430 \\u043E\\u0441\\u043D\\u043E\\u0432\\u0435 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0441\\u0442\\u0440\\u0430\\u0442\\u0435\\u0433\\u0438\\u0435\\u0439 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0447\\u0438\\u0441\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u0435\\u043C\\u044B\\u0445 \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u043E\\u0432.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C \\u0441\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u044B.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0431\\u0443\\u0434\\u0435\\u0442 \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0441\\u0432\\u043E\\u0440\\u0430\\u0447\\u0438\\u0432\\u0430\\u0442\\u044C \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u044B \\u0438\\u043C\\u043F\\u043E\\u0440\\u0442\\u0430.\",\"\\u041C\\u0430\\u043A\\u0441\\u0438\\u043C\\u0430\\u043B\\u044C\\u043D\\u043E\\u0435 \\u043A\\u043E\\u043B\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043E \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u0435\\u043C\\u044B\\u0445 \\u0440\\u0435\\u0433\\u0438\\u043E\\u043D\\u043E\\u0432. \\u0423\\u0432\\u0435\\u043B\\u0438\\u0447\\u0435\\u043D\\u0438\\u0435 \\u044D\\u0442\\u043E\\u0433\\u043E \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F \\u043C\\u043E\\u0436\\u0435\\u0442 \\u043F\\u0440\\u0438\\u0432\\u0435\\u0441\\u0442\\u0438 \\u043A \\u0441\\u043D\\u0438\\u0436\\u0435\\u043D\\u0438\\u044E \\u0441\\u043A\\u043E\\u0440\\u043E\\u0441\\u0442\\u0438 \\u043E\\u0442\\u043A\\u043B\\u0438\\u043A\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430, \\u0435\\u0441\\u043B\\u0438 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0438\\u0439 \\u0438\\u0441\\u0442\\u043E\\u0447\\u043D\\u0438\\u043A \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u0442 \\u0431\\u043E\\u043B\\u044C\\u0448\\u043E\\u0435 \\u043A\\u043E\\u043B\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043E \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u0435\\u043C\\u044B\\u0445 \\u0440\\u0435\\u0433\\u0438\\u043E\\u043D\\u043E\\u0432.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0431\\u0443\\u0434\\u0435\\u0442 \\u043B\\u0438 \\u0449\\u0435\\u043B\\u0447\\u043E\\u043A \\u043F\\u0443\\u0441\\u0442\\u043E\\u0433\\u043E \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E \\u043F\\u043E\\u0441\\u043B\\u0435 \\u0441\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u043E\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0440\\u0430\\u0437\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u0442\\u044C \\u0435\\u0435.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0441\\u0435\\u043C\\u0435\\u0439\\u0441\\u0442\\u0432\\u043E \\u0448\\u0440\\u0438\\u0444\\u0442\\u043E\\u0432.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0431\\u0443\\u0434\\u0435\\u0442 \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u043D\\u043E\\u0435 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0435. \\u041C\\u043E\\u0434\\u0443\\u043B\\u044C \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u0435\\u043D \\u0438 \\u0438\\u043C\\u0435\\u0442\\u044C \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\\u0441\\u0442\\u044C \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D \\u0432 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u0435.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u043C, \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u044E\\u0449\\u0438\\u043C, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u043F\\u043E\\u0441\\u043B\\u0435 \\u0432\\u0432\\u043E\\u0434\\u0430.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0435\\u043C \\u0432\\u0435\\u0440\\u0442\\u0438\\u043A\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u043F\\u043E\\u043B\\u0435\\u0439 \\u0433\\u043B\\u0438\\u0444\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435. \\u041F\\u043E\\u043B\\u044F \\u0433\\u043B\\u0438\\u0444\\u0430 \\u0432 \\u043E\\u0441\\u043D\\u043E\\u0432\\u043D\\u043E\\u043C \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u044E\\u0442\\u0441\\u044F \\u0434\\u043B\\u044F \\u043E\\u0442\\u043B\\u0430\\u0434\\u043A\\u0438.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0441\\u043A\\u0440\\u044B\\u0442\\u0438\\u0435\\u043C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u0432 \\u043E\\u0431\\u0437\\u043E\\u0440\\u043D\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0435.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0438\\u043D\\u0442\\u0435\\u0440\\u0432\\u0430\\u043B\\u043E\\u043C \\u043C\\u0435\\u0436\\u0434\\u0443 \\u0431\\u0443\\u043A\\u0432\\u0430\\u043C\\u0438 \\u0432 \\u043F\\u0438\\u043A\\u0441\\u0435\\u043B\\u044F\\u0445.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0432\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0430 \\u043B\\u0438 \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u043A\\u0430 \\u0441\\u0432\\u044F\\u0437\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435. \\u0412 \\u0437\\u0430\\u0432\\u0438\\u0441\\u0438\\u043C\\u043E\\u0441\\u0442\\u0438 \\u043E\\u0442 \\u044F\\u0437\\u044B\\u043A\\u0430, \\u0441\\u0432\\u044F\\u0437\\u0430\\u043D\\u043D\\u044B\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440 \\u0442\\u0435\\u0433\\u0438 HTML, \\u043E\\u0431\\u043D\\u043E\\u0432\\u043B\\u044F\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C \\u0441\\u0441\\u044B\\u043B\\u043A\\u0438 \\u0438 \\u0434\\u0435\\u043B\\u0430\\u0442\\u044C \\u0438\\u0445 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u043C\\u0438 \\u0434\\u043B\\u044F \\u0449\\u0435\\u043B\\u0447\\u043A\\u0430.\",\"\\u0412\\u044B\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0449\\u0438\\u0435 \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438.\",\"\\u041C\\u043D\\u043E\\u0436\\u0438\\u0442\\u0435\\u043B\\u044C, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0434\\u043B\\u044F \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432 deltaX \\u0438 deltaY \\u0441\\u043E\\u0431\\u044B\\u0442\\u0438\\u0439 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u043A\\u043E\\u043B\\u0435\\u0441\\u0438\\u043A\\u0430 \\u043C\\u044B\\u0448\\u0438.\",\"\\u0418\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0435 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440\\u0430 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u043E\\u0439 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0435 CTRL \\u0438 \\u0434\\u0432\\u0438\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043A\\u043E\\u043B\\u0435\\u0441\\u0438\\u043A\\u0430 \\u043C\\u044B\\u0448\\u0438.\",\"\\u041E\\u0431\\u044A\\u0435\\u0434\\u0438\\u043D\\u0438\\u0442\\u044C \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u043E \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u043E\\u0432, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u043E\\u043D\\u0438 \\u043F\\u0435\\u0440\\u0435\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0442\\u0441\\u044F.\",\"\\u0421\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0435 CTRL \\u0432 Windows \\u0438 Linux \\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0435 COMMAND \\u0432 macOS.\",\"\\u0421\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0435 ALT \\u0432 Windows \\u0438 Linux \\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0435 OPTION \\u0432 macOS.\",'\\u041C\\u043E\\u0434\\u0438\\u0444\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0439 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u0434\\u043B\\u044F \\u0434\\u043E\\u0431\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u0438\\u0445 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u043E\\u0432 \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043C\\u044B\\u0448\\u0438. \\u0416\\u0435\\u0441\\u0442\\u044B \\u043C\\u044B\\u0448\\u0438 \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E\" \\u0438 \"\\u041E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044C \\u0441\\u0441\\u044B\\u043B\\u043A\\u0443\" \\u0431\\u0443\\u0434\\u0443\\u0442 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u044B \\u0442\\u0430\\u043A, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043E\\u043D\\u0438 \\u043D\\u0435 \\u043A\\u043E\\u043D\\u0444\\u043B\\u0438\\u043A\\u0442\\u043E\\u0432\\u0430\\u043B\\u0438 c [multicursor modifier](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).',\"\\u041A\\u0430\\u0436\\u0434\\u044B\\u0439 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043E\\u0434\\u043D\\u0443 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430.\",\"\\u041A\\u0430\\u0436\\u0434\\u044B\\u0439 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043F\\u043E\\u043B\\u043D\\u044B\\u0439 \\u0442\\u0435\\u043A\\u0441\\u0442.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u043E\\u0439, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0447\\u0438\\u0441\\u043B\\u043E \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0435\\u043C\\u044B\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u0447\\u0438\\u0441\\u043B\\u0443 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u043E\\u0432.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043C\\u0430\\u043A\\u0441\\u0438\\u043C\\u0430\\u043B\\u044C\\u043D\\u044B\\u043C \\u0447\\u0438\\u0441\\u043B\\u043E\\u043C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u043E\\u0432, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0435 \\u043C\\u043E\\u0433\\u0443\\u0442 \\u043E\\u0434\\u043D\\u043E\\u0432\\u0440\\u0435\\u043C\\u0435\\u043D\\u043D\\u043E \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u0432 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C \\u044D\\u043A\\u0437\\u0435\\u043C\\u043F\\u043B\\u044F\\u0440\\u044B \\u0441\\u0435\\u043C\\u0430\\u043D\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u0430 \\u043B\\u0438 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 \\u043D\\u0430 \\u043E\\u0431\\u0437\\u043E\\u0440\\u043D\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0435.\",\"\\u0424\\u043E\\u043A\\u0443\\u0441\\u0438\\u0440\\u043E\\u0432\\u043A\\u0430 \\u043D\\u0430 \\u0434\\u0435\\u0440\\u0435\\u0432\\u0435 \\u043F\\u0440\\u0438 \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u0438\\u0438 \\u043E\\u0431\\u0437\\u043E\\u0440\\u0430\",\"\\u0424\\u043E\\u043A\\u0443\\u0441\\u0438\\u0440\\u043E\\u0432\\u043A\\u0430 \\u043D\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u0440\\u0438 \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u0438\\u0438 \\u043E\\u0431\\u0437\\u043E\\u0440\\u0430\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u043F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043D\\u0430 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0438\\u043B\\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u043E \\u0432 \\u0432\\u0438\\u0434\\u0436\\u0435\\u0442\\u0435 \\u043E\\u0431\\u0437\\u043E\\u0440\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0432\\u0441\\u0435\\u0433\\u0434\\u0430 \\u043B\\u0438 \\u0436\\u0435\\u0441\\u0442 \\u043C\\u044B\\u0448\\u044C\\u044E \\u0434\\u043B\\u044F \\u043F\\u0435\\u0440\\u0435\\u0445\\u043E\\u0434\\u0430 \\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E \\u043E\\u0442\\u043A\\u0440\\u044B\\u0432\\u0430\\u0435\\u0442 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0434\\u043B\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0441\\u0442\\u044C\\u044E \\u0437\\u0430\\u0434\\u0435\\u0440\\u0436\\u043A\\u0438 (\\u0432 \\u043C\\u0441) \\u043F\\u0435\\u0440\\u0435\\u0434 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0435\\u043C \\u043A\\u0440\\u0430\\u0442\\u043A\\u0438\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u0435\\u0442 \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0435 \\u043F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435 \\u043F\\u043E \\u0442\\u0438\\u043F\\u0443.\",'\\u041D\\u0435 \\u0440\\u0435\\u043A\\u043E\\u043C\\u0435\\u043D\\u0434\\u0443\\u0435\\u0442\\u0441\\u044F; \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \\u0432\\u043C\\u0435\\u0441\\u0442\\u043E \\u044D\\u0442\\u043E\\u0433\\u043E \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \"editor.linkedEditing\".',\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u0443\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043D\\u043E\\u043C\\u0435\\u0440\\u0430 \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u043D\\u0435\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0444\\u0430\\u0439\\u043B \\u0437\\u0430\\u043A\\u0430\\u043D\\u0447\\u0438\\u0432\\u0430\\u0435\\u0442\\u0441\\u044F \\u043D\\u043E\\u0432\\u043E\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u043E\\u0439.\",\"\\u0412\\u044B\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u043F\\u043E\\u043B\\u0435 \\u0438 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C \\u0442\\u0435\\u043A\\u0443\\u0449\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043E\\u0442\\u0440\\u0438\\u0441\\u043E\\u0432\\u044B\\u0432\\u0430\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438, \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043A\\u043E\\u0433\\u0434\\u0430 \\u043E\\u043D \\u043D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435.\",\"\\u041E\\u0442\\u0440\\u0438\\u0441\\u043E\\u0432\\u043A\\u0430 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u043E\\u0432, \\u043A\\u0440\\u043E\\u043C\\u0435 \\u043E\\u0434\\u0438\\u043D\\u043E\\u0447\\u043D\\u044B\\u0445 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u043E\\u0432 \\u043C\\u0435\\u0436\\u0434\\u0443 \\u0441\\u043B\\u043E\\u0432\\u0430\\u043C\\u0438.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u044B \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u043C \\u0442\\u0435\\u043A\\u0441\\u0442\\u0435.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043A\\u043E\\u043D\\u0435\\u0447\\u043D\\u044B\\u0435 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u044B.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u044B.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043C, \\u043D\\u0435\\u043E\\u0431\\u0445\\u043E\\u0434\\u0438\\u043C\\u043E \\u043B\\u0438 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u0441\\u043A\\u0440\\u0443\\u0433\\u043B\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0443\\u0433\\u043B\\u044B \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043A\\u043E\\u043B\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043E\\u043C \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432, \\u043D\\u0430 \\u043A\\u043E\\u0442\\u043E\\u0440\\u043E\\u0435 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0435 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0447\\u0438\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u043F\\u043E \\u0433\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u0438.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0431\\u0443\\u0434\\u0435\\u0442 \\u043B\\u0438 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0435 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0447\\u0438\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u0437\\u0430 \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u043D\\u044E\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443.\",\"\\u041F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0430 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432\\u0434\\u043E\\u043B\\u044C \\u043E\\u0441\\u043D\\u043E\\u0432\\u043D\\u043E\\u0439 \\u043E\\u0441\\u0438 \\u043F\\u0440\\u0438 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0435 \\u043F\\u043E \\u0432\\u0435\\u0440\\u0442\\u0438\\u043A\\u0430\\u043B\\u0438 \\u0438 \\u0433\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u0438 \\u043E\\u0434\\u043D\\u043E\\u0432\\u0440\\u0435\\u043C\\u0435\\u043D\\u043D\\u043E. \\u041F\\u0440\\u0435\\u0434\\u043E\\u0442\\u0432\\u0440\\u0430\\u0449\\u0430\\u0435\\u0442 \\u0441\\u043C\\u0435\\u0449\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E \\u0433\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u0438 \\u043F\\u0440\\u0438 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0435 \\u043F\\u043E \\u0432\\u0435\\u0440\\u0442\\u0438\\u043A\\u0430\\u043B\\u0438 \\u043D\\u0430 \\u0442\\u0440\\u0435\\u043A\\u043F\\u0430\\u0434\\u0435.\",\"\\u041A\\u043E\\u043D\\u0442\\u0440\\u043E\\u043B\\u0438\\u0440\\u0443\\u0435\\u0442, \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0442\\u044C \\u043F\\u0435\\u0440\\u0432\\u0438\\u0447\\u043D\\u044B\\u0439 \\u0431\\u0443\\u0444\\u0435\\u0440 \\u043E\\u0431\\u043C\\u0435\\u043D\\u0430 Linux.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u044F, \\u0430\\u043D\\u0430\\u043B\\u043E\\u0433\\u0438\\u0447\\u043D\\u044B\\u0435 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u043C\\u0443 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0443.\",\"\\u0412\\u0441\\u0435\\u0433\\u0434\\u0430 \\u043F\\u043E\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u0435\\u043C\\u044B\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u0443\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u041D\\u0438\\u043A\\u043E\\u0433\\u0434\\u0430 \\u043D\\u0435 \\u043F\\u043E\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u0443\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u0435\\u043C \\u0438 \\u0443\\u043C\\u0435\\u043D\\u044C\\u0448\\u0430\\u0442\\u044C \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440 \\u043F\\u0435\\u0440\\u0435\\u043F\\u043B\\u0435\\u0442\\u0430.\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u0443\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u044F, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044C \\u043C\\u044B\\u0448\\u0438 \\u043D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u043D\\u0430\\u0434 \\u043F\\u0435\\u0440\\u0435\\u043F\\u043B\\u0435\\u0442\\u043E\\u043C.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u0443\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043D\\u0430 \\u043F\\u0435\\u0440\\u0435\\u043F\\u043B\\u0435\\u0442\\u0435.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0441\\u043A\\u0440\\u044B\\u0442\\u0438\\u0435\\u043C \\u043D\\u0435\\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u043E\\u0433\\u043E \\u043A\\u043E\\u0434\\u0430.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0447\\u0435\\u0440\\u043A\\u0438\\u0432\\u0430\\u043D\\u0438\\u0435\\u043C \\u0443\\u0441\\u0442\\u0430\\u0440\\u0435\\u0432\\u0448\\u0438\\u0445 \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u043D\\u043D\\u044B\\u0445.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043F\\u043E\\u0432\\u0435\\u0440\\u0445 \\u0434\\u0440\\u0443\\u0433\\u0438\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043F\\u043E\\u0434 \\u0434\\u0440\\u0443\\u0433\\u0438\\u043C\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\\u043C\\u0438.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u0440\\u044F\\u0434\\u043E\\u043C \\u0441 \\u0434\\u0440\\u0443\\u0433\\u0438\\u043C\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\\u043C\\u0438.\",\"\\u041D\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0435\\u043C \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u0432\\u043C\\u0435\\u0441\\u0442\\u0435 \\u0441 \\u0434\\u0440\\u0443\\u0433\\u0438\\u043C\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\\u043C\\u0438 \\u0438 \\u0438\\u0445 \\u0441\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u043A\\u043E\\u0439.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0431\\u0443\\u0434\\u0435\\u0442 \\u043B\\u0438 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u0430\\u043D\\u0438\\u043C\\u0430\\u0446\\u0438\\u044F \\u043F\\u0440\\u0438 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0435 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\",\"Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\",\"\\u0420\\u0430\\u0437\\u043C\\u0435\\u0440 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430 \\u0434\\u043B\\u044F \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439. \\u0415\\u0441\\u043B\\u0438 \\u0443\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u043B\\u0435\\u043D\\u043E {0}, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 {1}.\",\"\\u0412\\u044B\\u0441\\u043E\\u0442\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0434\\u043B\\u044F \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439. \\u0415\\u0441\\u043B\\u0438 \\u0443\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u043B\\u0435\\u043D\\u043E {0}, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 {1}. \\u041C\\u0438\\u043D\\u0438\\u043C\\u0430\\u043B\\u044C\\u043D\\u043E\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 \\u2014 8.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u043F\\u0440\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0435 \\u0442\\u0440\\u0438\\u0433\\u0433\\u0435\\u0440\\u043D\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F.\",\"\\u0412\\u0441\\u0435\\u0433\\u0434\\u0430 \\u0432\\u044B\\u0431\\u0438\\u0440\\u0430\\u0442\\u044C \\u043F\\u0435\\u0440\\u0432\\u043E\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435.\",'\\u0412\\u044B\\u0431\\u043E\\u0440 \\u043D\\u0435\\u0434\\u0430\\u0432\\u043D\\u0438\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439, \\u0435\\u0441\\u043B\\u0438 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0434\\u0430\\u043B\\u044C\\u043D\\u0435\\u0439\\u0448\\u0438\\u0439 \\u0432\\u0432\\u043E\\u0434 \\u043D\\u0435 \\u043F\\u0440\\u0438\\u0432\\u043E\\u0434\\u0438\\u0442 \\u043A \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D\\u0438\\u044E \\u043E\\u0434\\u043D\\u043E\\u0433\\u043E \\u0438\\u0437 \\u043D\\u0438\\u0445, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440 \"console.| -> console.log\", \\u0442\\u0430\\u043A \\u043A\\u0430\\u043A \"log\" \\u043D\\u0435\\u0434\\u0430\\u0432\\u043D\\u043E \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043B\\u0441\\u044F \\u0434\\u043B\\u044F \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F.','\\u0412\\u044B\\u0431\\u043E\\u0440 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0441 \\u0443\\u0447\\u0435\\u0442\\u043E\\u043C \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0438\\u0445 \\u043F\\u0440\\u0435\\u0444\\u0438\\u043A\\u0441\\u043E\\u0432, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D\\u043D\\u044B\\u0445 \\u0434\\u043B\\u044F \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F \\u044D\\u0442\\u0438\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440 \"co -> console\" \\u0438 \"con -> const\".',\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043F\\u0440\\u0435\\u0434\\u0432\\u0430\\u0440\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u043C \\u0432\\u044B\\u0431\\u043E\\u0440\\u043E\\u043C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u043F\\u0440\\u0438 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0438 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u041F\\u0440\\u0438 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D\\u0438\\u0438 \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0435\\u043D\\u0438\\u044F \\u043F\\u043E TAB \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0434\\u043E\\u0431\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C\\u0441\\u044F \\u043D\\u0430\\u0438\\u043B\\u0443\\u0447\\u0448\\u0435\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 TAB.\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E TAB.\",'\\u0412\\u0441\\u0442\\u0430\\u0432\\u043A\\u0430 \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0435\\u043D\\u0438\\u0439 \\u043F\\u043E TAB \\u043F\\u0440\\u0438 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0438 \\u0438\\u0445 \\u043F\\u0440\\u0435\\u0444\\u0438\\u043A\\u0441\\u043E\\u0432. \\u0424\\u0443\\u043D\\u043A\\u0446\\u0438\\u044F \\u0440\\u0430\\u0431\\u043E\\u0442\\u0430\\u0435\\u0442 \\u043E\\u043F\\u0442\\u0438\\u043C\\u0430\\u043B\\u044C\\u043D\\u043E, \\u0435\\u0441\\u043B\\u0438 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \"quickSuggestions\" \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D.',\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0430\\u0435\\u0442 \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0435\\u043D\\u0438\\u044F \\u043F\\u043E TAB.\",\"\\u041D\\u0435\\u043E\\u0431\\u044B\\u0447\\u043D\\u044B\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438 \\u0443\\u0434\\u0430\\u043B\\u044F\\u044E\\u0442\\u0441\\u044F.\",\"\\u041D\\u0435\\u043E\\u0431\\u044B\\u0447\\u043D\\u044B\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0438\\u0433\\u043D\\u043E\\u0440\\u0438\\u0440\\u0443\\u044E\\u0442\\u0441\\u044F.\",\"\\u0414\\u043B\\u044F \\u043D\\u0435\\u043E\\u0431\\u044B\\u0447\\u043D\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0437\\u0430\\u043F\\u0440\\u0430\\u0448\\u0438\\u0432\\u0430\\u0435\\u0442\\u0441\\u044F \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0435.\",\"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u0435 \\u043D\\u0435\\u043E\\u0431\\u044B\\u0447\\u043D\\u044B\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0435 \\u043C\\u043E\\u0433\\u0443\\u0442 \\u0432\\u044B\\u0437\\u0432\\u0430\\u0442\\u044C \\u043F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C\\u044B.\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u043A\\u0430 \\u0438 \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u043E\\u0432 \\u043F\\u043E\\u0441\\u043B\\u0435 \\u043F\\u043E\\u0437\\u0438\\u0446\\u0438\\u0438 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u043F\\u0440\\u0430\\u0432\\u0438\\u043B\\u043E \\u0440\\u0430\\u0437\\u0440\\u044B\\u0432\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E.\",\"\\u041D\\u0435 \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u0440\\u0430\\u0437\\u0440\\u044B\\u0432\\u044B \\u0441\\u043B\\u043E\\u0432 \\u0434\\u043B\\u044F \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u043D\\u0430 \\u043A\\u0438\\u0442\\u0430\\u0439\\u0441\\u043A\\u043E\\u043C, \\u044F\\u043F\\u043E\\u043D\\u0441\\u043A\\u043E\\u043C \\u0438\\u043B\\u0438 \\u043A\\u043E\\u0440\\u0435\\u0439\\u0441\\u043A\\u043E\\u043C \\u044F\\u0437\\u044B\\u043A\\u0435 (CJK). \\u0414\\u043B\\u044F \\u0434\\u0440\\u0443\\u0433\\u0438\\u0445 \\u0442\\u0435\\u043A\\u0441\\u0442\\u043E\\u0432 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u043E\\u0431\\u044B\\u0447\\u043D\\u043E\\u0435 \\u043F\\u043E\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043F\\u0440\\u0430\\u0432\\u0438\\u043B\\u0430\\u043C\\u0438 \\u0440\\u0430\\u0437\\u0431\\u0438\\u0435\\u043D\\u0438\\u044F \\u043F\\u043E \\u0441\\u043B\\u043E\\u0432\\u0430\\u043C, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u043C\\u0438 \\u0434\\u043B\\u044F \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u043D\\u0430 \\u043A\\u0438\\u0442\\u0430\\u0439\\u0441\\u043A\\u043E\\u043C,\\u044F\\u043F\\u043E\\u043D\\u0441\\u043A\\u043E\\u043C \\u0438 \\u043A\\u043E\\u0440\\u0435\\u0439\\u0441\\u043A\\u043E\\u043C \\u044F\\u0437\\u044B\\u043A\\u0435 (CJK).\",\"\\u0421\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0435 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u043A\\u0430\\u043A \\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0438\\u0442\\u0435\\u043B\\u0438 \\u0441\\u043B\\u043E\\u0432 \\u043F\\u0440\\u0438 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u0435\\u043D\\u0438\\u0438 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438\\u043B\\u0438 \\u0434\\u0440\\u0443\\u0433\\u0438\\u0445 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0439, \\u0441\\u0432\\u044F\\u0437\\u0430\\u043D\\u043D\\u044B\\u0445 \\u0441\\u043E \\u0441\\u043B\\u043E\\u0432\\u0430\\u043C\\u0438.\",\"\\u0421\\u0442\\u0440\\u043E\\u043A\\u0438 \\u043D\\u0435 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u043F\\u0435\\u0440\\u0435\\u043D\\u043E\\u0441\\u0438\\u0442\\u044C\\u0441\\u044F \\u043D\\u0438\\u043A\\u043E\\u0433\\u0434\\u0430.\",\"\\u0421\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u043F\\u0435\\u0440\\u0435\\u043D\\u043E\\u0441\\u0438\\u0442\\u044C\\u0441\\u044F \\u043F\\u043E \\u0448\\u0438\\u0440\\u0438\\u043D\\u0435 \\u043E\\u043A\\u043D\\u0430 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430.\",'\\u0421\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u043F\\u0435\\u0440\\u0435\\u043D\\u043E\\u0441\\u0438\\u0442\\u044C\\u0441\\u044F \\u043F\\u043E \"#editor.wordWrapColumn#\".','\\u0421\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u043F\\u0435\\u0440\\u0435\\u043D\\u0435\\u0441\\u0435\\u043D\\u044B \\u043F\\u043E \\u043C\\u0438\\u043D\\u0438\\u043C\\u0430\\u043B\\u044C\\u043D\\u043E\\u043C\\u0443 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044E \\u0438\\u0437 \\u0434\\u0432\\u0443\\u0445: \\u0448\\u0438\\u0440\\u0438\\u043D\\u0430 \\u043E\\u043A\\u043D\\u0430 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0438 \"#editor.wordWrapColumn#\".',\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043C, \\u043A\\u0430\\u043A \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u043D\\u043E\\u0441\\u0438\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438.\",'\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0441\\u0442\\u043E\\u043B\\u0431\\u0435\\u0446 \\u043F\\u0435\\u0440\\u0435\\u043D\\u043E\\u0441\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430, \\u0435\\u0441\\u043B\\u0438 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 \"#editor.wordWrap#\" \\u2014 \"wordWrapColumn\" \\u0438\\u043B\\u0438 \"bounded\".',\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0434\\u043E\\u043B\\u0436\\u043D\\u044B \\u043B\\u0438 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0446\\u0432\\u0435\\u0442\\u043E\\u0432\\u044B\\u0435 \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\\u043C \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A\\u0430 \\u0446\\u0432\\u0435\\u0442\\u0430 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u0430 \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043F\\u043E\\u043B\\u0443\\u0447\\u0430\\u0435\\u0442 \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0432\\u043A\\u043B\\u0430\\u0434\\u043A\\u0438 \\u0438\\u043B\\u0438 \\u043E\\u0442\\u043A\\u043B\\u0430\\u0434\\u044B\\u0432\\u0430\\u0435\\u0442 \\u043B\\u0438 \\u0438\\u0445 \\u0432 \\u0440\\u0430\\u0431\\u043E\\u0447\\u0443\\u044E \\u0441\\u0440\\u0435\\u0434\\u0443 \\u0434\\u043B\\u044F \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438.\"],\"vs/editor/common/core/editorColorRegistry\":[\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0432 \\u043F\\u043E\\u0437\\u0438\\u0446\\u0438\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446 \\u0432\\u043E\\u043A\\u0440\\u0443\\u0433 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0432 \\u043F\\u043E\\u0437\\u0438\\u0446\\u0438\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u043E\\u0432, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440 \\u043F\\u0440\\u0438 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D\\u0438\\u0438 \\u0444\\u0443\\u043D\\u043A\\u0446\\u0438\\u0439 Quick Open \\u0438\\u043B\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043E\\u0431\\u0432\\u043E\\u0434\\u043A\\u0438 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F.\",'\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u0432 \\u0444\\u0443\\u043D\\u043A\\u0446\\u0438\\u044F\\u0445 \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E\" \\u0438\\u043B\\u0438 \"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u043C\\u0443/\\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u043C\\u0443 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0443\". \\u0426\\u0432\\u0435\\u0442 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0432\\u0430\\u0442\\u044C \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u043F\\u043E\\u0434 \\u043D\\u0438\\u043C.',\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0432\\u043E\\u043A\\u0440\\u0443\\u0433 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430. \\u041F\\u043E\\u0437\\u0432\\u043E\\u043B\\u044F\\u0435\\u0442 \\u043D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0442\\u044C \\u0446\\u0432\\u0435\\u0442 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430, \\u043F\\u0435\\u0440\\u0435\\u043A\\u0440\\u044B\\u0432\\u0430\\u0435\\u043C\\u043E\\u0433\\u043E \\u043F\\u0440\\u044F\\u043C\\u043E\\u0443\\u0433\\u043E\\u043B\\u044C\\u043D\\u044B\\u043C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u043E\\u043C.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u043E\\u0432 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043D\\u043E\\u043C\\u0435\\u0440\\u043E\\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",'\\u0421\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u043E \"editorIndentGuide.background\" \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043D\\u0435\\u0440\\u0435\\u043A\\u043E\\u043C\\u0435\\u043D\\u0434\\u0443\\u0435\\u043C\\u044B\\u043C. \\u0412\\u043C\\u0435\\u0441\\u0442\\u043E \\u044D\\u0442\\u043E\\u0433\\u043E \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \"editorIndentGuide.background1\".',\"\\u0426\\u0432\\u0435\\u0442 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",'\\u0421\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u043E \"editorIndentGuide.activeBackground\" \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043D\\u0435\\u0440\\u0435\\u043A\\u043E\\u043C\\u0435\\u043D\\u0434\\u0443\\u0435\\u043C\\u044B\\u043C. \\u0412\\u043C\\u0435\\u0441\\u0442\\u043E \\u044D\\u0442\\u043E\\u0433\\u043E \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \"editorIndentGuide.activeBackground1\".',\"\\u0426\\u0432\\u0435\\u0442 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (1).\",\"\\u0426\\u0432\\u0435\\u0442 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (2).\",\"\\u0426\\u0432\\u0435\\u0442 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (3).\",\"\\u0426\\u0432\\u0435\\u0442 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (4).\",\"\\u0426\\u0432\\u0435\\u0442 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (5).\",\"\\u0426\\u0432\\u0435\\u0442 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (6).\",\"\\u0426\\u0432\\u0435\\u0442 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (1).\",\"\\u0426\\u0432\\u0435\\u0442 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (2).\",\"\\u0426\\u0432\\u0435\\u0442 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (3).\",\"\\u0426\\u0432\\u0435\\u0442 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (4).\",\"\\u0426\\u0432\\u0435\\u0442 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (5).\",\"\\u0426\\u0432\\u0435\\u0442 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (6).\",\"\\u0426\\u0432\\u0435\\u0442 \\u043D\\u043E\\u043C\\u0435\\u0440\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\",\"\\u041F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 'Id' \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u0443\\u0441\\u0442\\u0430\\u0440\\u0435\\u0432\\u0448\\u0438\\u043C. \\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \\u0432\\u043C\\u0435\\u0441\\u0442\\u043E \\u043D\\u0435\\u0433\\u043E \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 'editorLineNumber.activeForeground'.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043D\\u043E\\u043C\\u0435\\u0440\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u043D\\u0435\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430, \\u043A\\u043E\\u0433\\u0434\\u0430 editor.renderFinalNewline \\u0438\\u043C\\u0435\\u0435\\u0442 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 dimmed.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 CodeLens \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043F\\u0430\\u0440\\u043D\\u044B\\u0445 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0440\\u044F\\u043C\\u043E\\u0443\\u0433\\u043E\\u043B\\u044C\\u043D\\u0438\\u043A\\u043E\\u0432 \\u043F\\u0430\\u0440\\u043D\\u044B\\u0445 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0434\\u043B\\u044F \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0432 \\u043E\\u043A\\u043D\\u0435 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043E\\u0431\\u0437\\u043E\\u0440\\u043D\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043F\\u043E\\u043B\\u044F \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435. \\u0412 \\u043F\\u043E\\u043B\\u0435 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0449\\u0430\\u044E\\u0442\\u0441\\u044F \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u044B \\u0433\\u043B\\u0438\\u0444\\u043E\\u0432 \\u0438 \\u043D\\u043E\\u043C\\u0435\\u0440\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0434\\u043B\\u044F \\u043D\\u0435\\u043D\\u0443\\u0436\\u043D\\u043E\\u0433\\u043E (\\u043D\\u0435\\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u043E\\u0433\\u043E) \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u043E\\u0433\\u043E \\u043A\\u043E\\u0434\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",'\\u041D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u043E\\u0441\\u0442\\u044C \\u043D\\u0435\\u043D\\u0443\\u0436\\u043D\\u043E\\u0433\\u043E (\\u043D\\u0435\\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u043E\\u0433\\u043E) \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u043E\\u0433\\u043E \\u043A\\u043E\\u0434\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435. \\u041D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \"#000000c0\" \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442 \\u043A\\u043E\\u0434 \\u0441 \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u043E\\u0441\\u0442\\u044C\\u044E 75 %. \\u0412 \\u0432\\u044B\\u0441\\u043E\\u043A\\u043E\\u043A\\u043E\\u043D\\u0442\\u0440\\u0430\\u0441\\u0442\\u043D\\u044B\\u0445 \\u0442\\u0435\\u043C\\u0430\\u0445 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u043D\\u0435\\u043D\\u0443\\u0436\\u043D\\u043E\\u0433\\u043E \\u043A\\u043E\\u0434\\u0430 \\u0432\\u043C\\u0435\\u0441\\u0442\\u043E \\u0437\\u0430\\u0442\\u0435\\u043D\\u0435\\u043D\\u0438\\u044F \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \\u0446\\u0432\\u0435\\u0442 \\u0442\\u0435\\u043C\\u044B \"editorUnnecessaryCode.border\".',\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0434\\u043B\\u044F \\u0435\\u0434\\u0432\\u0430 \\u0440\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u043C\\u043E\\u0433\\u043E \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0435\\u0434\\u0432\\u0430 \\u0440\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u043C\\u043E\\u0433\\u043E \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0435\\u0434\\u0432\\u0430 \\u0440\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u043C\\u043E\\u0433\\u043E \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u0430 \\u043E\\u0431\\u0437\\u043E\\u0440\\u043D\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u043E\\u0432. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0435\\u0442\\u043A\\u0438 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0432 \\u043E\\u043A\\u043D\\u0435 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0434\\u043B\\u044F \\u043E\\u0448\\u0438\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0435\\u0442\\u043A\\u0438 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0432 \\u043E\\u043A\\u043D\\u0435 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0434\\u043B\\u044F \\u043F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0435\\u0442\\u043A\\u0438 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0432 \\u043E\\u043A\\u043D\\u0435 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0434\\u043B\\u044F \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u044B\\u0445 \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (1). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0440\\u0430\\u0441\\u043A\\u0440\\u0430\\u0441\\u043A\\u0443 \\u043F\\u0430\\u0440\\u043D\\u044B\\u0445 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (2). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0440\\u0430\\u0441\\u043A\\u0440\\u0430\\u0441\\u043A\\u0443 \\u043F\\u0430\\u0440\\u043D\\u044B\\u0445 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (3). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0440\\u0430\\u0441\\u043A\\u0440\\u0430\\u0441\\u043A\\u0443 \\u043F\\u0430\\u0440\\u043D\\u044B\\u0445 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (4). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0440\\u0430\\u0441\\u043A\\u0440\\u0430\\u0441\\u043A\\u0443 \\u043F\\u0430\\u0440\\u043D\\u044B\\u0445 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (5). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0440\\u0430\\u0441\\u043A\\u0440\\u0430\\u0441\\u043A\\u0443 \\u043F\\u0430\\u0440\\u043D\\u044B\\u0445 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (6). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0440\\u0430\\u0441\\u043A\\u0440\\u0430\\u0441\\u043A\\u0443 \\u043F\\u0430\\u0440\\u043D\\u044B\\u0445 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043D\\u0435\\u043F\\u0440\\u0435\\u0434\\u0432\\u0438\\u0434\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (1). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (2). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (3). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (4). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (5). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (6). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (1). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (2). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (3). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (4). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (5). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A (6). \\u0422\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u042E\\u043D\\u0438\\u043A\\u043E\\u0434\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u042E\\u043D\\u0438\\u043A\\u043E\\u0434\\u0430.\"],\"vs/editor/common/editorContextKeys\":[\"\\u041D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043D\\u0430 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0435 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 (\\u043A\\u0443\\u0440\\u0441\\u043E\\u0440 \\u043C\\u0438\\u0433\\u0430\\u0435\\u0442)\",\"\\u041D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043D\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u0438\\u043B\\u0438 \\u043D\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (\\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u043D\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430)\",\"\\u041D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043D\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u0438\\u043B\\u0438 \\u043D\\u0430 \\u043F\\u043E\\u043B\\u0435 \\u0432\\u0432\\u043E\\u0434\\u0430 \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 (\\u043A\\u0443\\u0440\\u0441\\u043E\\u0440 \\u043C\\u0438\\u0433\\u0430\\u0435\\u0442)\",\"\\u042F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u043C \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0434\\u043B\\u044F \\u0447\\u0442\\u0435\\u043D\\u0438\\u044F\",\"\\u042F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043A\\u043E\\u043D\\u0442\\u0435\\u043A\\u0441\\u0442 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u043E\\u043C \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439\",\"\\u042F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043A\\u043E\\u043D\\u0442\\u0435\\u043A\\u0441\\u0442 \\u0432\\u043D\\u0435\\u0434\\u0440\\u0435\\u043D\\u043D\\u044B\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u043E\\u043C \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439\",\"Whether a moved code block is selected for comparison\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u043E \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0441 \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u043A\\u043E\\u0439 \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\\u0441\\u0442\\u0435\\u0439 \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u0430 \\u0441\\u0440\\u0430\\u0432\\u043D\\u0435\\u043D\\u0438\\u0439\",\"Whether the diff editor render side by side inline breakpoint is reached\",'\\u0412\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D \\u043B\\u0438 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \"editor.columnSelection\"',\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u044B\\u0439 \\u0442\\u0435\\u043A\\u0441\\u0442\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043C\\u043D\\u043E\\u0436\\u0435\\u0441\\u0442\\u0432\\u0435\\u043D\\u043D\\u044B\\u0439 \\u0432\\u044B\\u0431\\u043E\\u0440\",\"\\u041F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0449\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0444\\u043E\\u043A\\u0443\\u0441 \\u0441 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 TAB\",\"\\u042F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u0432\\u0438\\u0434\\u0438\\u043C\\u044B\\u043C\",\"\\u041D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435\",\"\\u041D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u0435 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u0435 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438\",\"\\u0412\\u0438\\u0434\\u043D\\u0430 \\u043B\\u0438 \\u0430\\u0432\\u0442\\u043E\\u043D\\u043E\\u043C\\u043D\\u0430\\u044F \\u043F\\u0430\\u043B\\u0438\\u0442\\u0440\\u0430 \\u0446\\u0432\\u0435\\u0442\\u043E\\u0432\",\"\\u0421\\u0444\\u043E\\u043A\\u0443\\u0441\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0430 \\u043B\\u0438 \\u0430\\u0432\\u0442\\u043E\\u043D\\u043E\\u043C\\u043D\\u0430\\u044F \\u043F\\u0430\\u043B\\u0438\\u0442\\u0440\\u0430 \\u0446\\u0432\\u0435\\u0442\\u043E\\u0432\",\"\\u042F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0447\\u0430\\u0441\\u0442\\u044C\\u044E \\u0431\\u043E\\u043B\\u044C\\u0448\\u0435\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 (\\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u0437\\u0430\\u043F\\u0438\\u0441\\u043D\\u044B\\u0445 \\u043A\\u043D\\u0438\\u0436\\u0435\\u043A)\",\"\\u0418\\u0434\\u0435\\u043D\\u0442\\u0438\\u0444\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440 \\u044F\\u0437\\u044B\\u043A\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0439 \\u0441 \\u043A\\u043E\\u0434\\u043E\\u043C\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A CodeLens\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0439\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u043E\\u0431\\u044A\\u044F\\u0432\\u043B\\u0435\\u043D\\u0438\\u0439\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u0440\\u0435\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u0438\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0439 \\u0442\\u0438\\u043F\\u043E\\u0432\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u0430\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u0441\\u0441\\u044B\\u043B\\u043E\\u043A\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u043F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u0441\\u043F\\u0440\\u0430\\u0432\\u043A\\u0438 \\u043F\\u043E \\u0441\\u0438\\u0433\\u043D\\u0430\\u0442\\u0443\\u0440\\u0430\\u043C\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0445 \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043E\\u043A\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u043E \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A\\u043E\\u0432 \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432\",\"\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u043E \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A\\u043E\\u0432 \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432\"],\"vs/editor/common/languages\":[\"\\u043C\\u0430\\u0441\\u0441\\u0438\\u0432\",\"\\u043B\\u043E\\u0433\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435\",\"\\u043A\\u043B\\u0430\\u0441\\u0441\",\"\\u043A\\u043E\\u043D\\u0441\\u0442\\u0430\\u043D\\u0442\\u0430\",\"\\u043A\\u043E\\u043D\\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u043E\\u0440\",\"\\u043F\\u0435\\u0440\\u0435\\u0447\\u0438\\u0441\\u043B\\u0435\\u043D\\u0438\\u0435\",\"\\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0447\\u0438\\u0441\\u043B\\u0435\\u043D\\u0438\\u044F\",\"\\u0441\\u043E\\u0431\\u044B\\u0442\\u0438\\u0435\",\"\\u043F\\u043E\\u043B\\u0435\",\"\\u0444\\u0430\\u0439\\u043B\",\"\\u0444\\u0443\\u043D\\u043A\\u0446\\u0438\\u044F\",\"\\u0438\\u043D\\u0442\\u0435\\u0440\\u0444\\u0435\\u0439\\u0441\",\"\\u043A\\u043B\\u044E\\u0447\",\"\\u043C\\u0435\\u0442\\u043E\\u0434\",\"\\u043C\\u043E\\u0434\\u0443\\u043B\\u044C\",\"\\u043F\\u0440\\u043E\\u0441\\u0442\\u0440\\u0430\\u043D\\u0441\\u0442\\u0432\\u043E \\u0438\\u043C\\u0435\\u043D\",\"NULL\",\"\\u0447\\u0438\\u0441\\u043B\\u043E\",\"\\u043E\\u0431\\u044A\\u0435\\u043A\\u0442\",\"\\u043E\\u043F\\u0435\\u0440\\u0430\\u0442\\u043E\\u0440\",\"\\u043F\\u0430\\u043A\\u0435\\u0442\",\"\\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u043E\",\"\\u0441\\u0442\\u0440\\u043E\\u043A\\u0430\",\"\\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0430\",\"\\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u0442\\u0438\\u043F\\u0430\",\"\\u041F\\u0435\\u0440\\u0435\\u043C\\u0435\\u043D\\u043D\\u0430\\u044F\",\"{0} ({1})\"],\"vs/editor/common/languages/modesRegistry\":[\"\\u041F\\u0440\\u043E\\u0441\\u0442\\u043E\\u0439 \\u0442\\u0435\\u043A\\u0441\\u0442\"],\"vs/editor/common/model/editStack\":[\"\\u0412\\u0432\\u043E\\u0434\"],\"vs/editor/common/standaloneStrings\":[\"\\u0420\\u0430\\u0437\\u0440\\u0430\\u0431\\u043E\\u0442\\u0447\\u0438\\u043A: \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u0438\\u0442\\u044C \\u0442\\u043E\\u043A\\u0435\\u043D\\u044B\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435/\\u0441\\u0442\\u043E\\u043B\\u0431\\u0446\\u0443...\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0432\\u0441\\u0435\\u0445 \\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u0449\\u0438\\u043A\\u043E\\u0432 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u0430\",\"\\u041F\\u0430\\u043B\\u0438\\u0442\\u0440\\u0430 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0438 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u044C \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0443...\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0443 \\u043F\\u043E \\u043A\\u0430\\u0442\\u0435\\u0433\\u043E\\u0440\\u0438\\u044F\\u043C...\",\"\\u0421\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0435 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\",\"\\u041D\\u0430\\u0436\\u043C\\u0438\\u0442\\u0435 ALT+F1 \\u0434\\u043B\\u044F \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u0430 \\u043A \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430\\u043C \\u0441\\u043F\\u0435\\u0446\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\\u0441\\u0442\\u0435\\u0439.\",\"\\u041F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432\\u044B\\u0441\\u043E\\u043A\\u043E\\u043A\\u043E\\u043D\\u0442\\u0440\\u0430\\u0441\\u0442\\u043D\\u0443\\u044E \\u0442\\u0435\\u043C\\u0443\",\"\\u0412\\u043D\\u0435\\u0441\\u0435\\u043D\\u043E \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u0444\\u0430\\u0439\\u043B\\u0430\\u0445 ({1}): {0}.\"],\"vs/editor/common/viewLayout/viewLineRenderer\":[\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0431\\u043E\\u043B\\u044C\\u0448\\u0435 ({0})\",\"\\u0421\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B: {0}\"],\"vs/editor/contrib/anchorSelect/browser/anchorSelect\":[\"\\u041D\\u0430\\u0447\\u0430\\u043B\\u044C\\u043D\\u0430\\u044F \\u0442\\u043E\\u0447\\u043A\\u0430 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F\",\"\\u041D\\u0430\\u0447\\u0430\\u043B\\u044C\\u043D\\u0430\\u044F \\u0442\\u043E\\u0447\\u043A\\u0430 \\u0443\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u043B\\u0435\\u043D\\u0430 \\u0432 {0}:{1}\",\"\\u0423\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u0438\\u0442\\u044C \\u043D\\u0430\\u0447\\u0430\\u043B\\u044C\\u043D\\u0443\\u044E \\u0442\\u043E\\u0447\\u043A\\u0443 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043D\\u0430\\u0447\\u0430\\u043B\\u044C\\u043D\\u043E\\u0439 \\u0442\\u043E\\u0447\\u043A\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F\",\"\\u0412\\u044B\\u0434\\u0435\\u043B\\u0438\\u0442\\u044C \\u0442\\u0435\\u043A\\u0441\\u0442 \\u043E\\u0442 \\u043D\\u0430\\u0447\\u0430\\u043B\\u044C\\u043D\\u043E\\u0439 \\u0442\\u043E\\u0447\\u043A\\u0438 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0434\\u043E \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430\",\"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u043D\\u0430\\u0447\\u0430\\u043B\\u044C\\u043D\\u0443\\u044E \\u0442\\u043E\\u0447\\u043A\\u0443 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F\"],\"vs/editor/contrib/bracketMatching/browser/bracketMatching\":[\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0435\\u0442\\u043A\\u0438 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0432 \\u043E\\u043A\\u043D\\u0435 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0434\\u043B\\u044F \\u043F\\u0430\\u0440 \\u0441\\u043A\\u043E\\u0431\\u043E\\u043A.\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u043A\\u043E\\u0431\\u043A\\u0435\",\"\\u0412\\u044B\\u0431\\u0440\\u0430\\u0442\\u044C \\u0441\\u043A\\u043E\\u0431\\u043A\\u0443\",\"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0441\\u043A\\u043E\\u0431\\u043A\\u0438\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A &&\\u0441\\u043A\\u043E\\u0431\\u043A\\u0435\"],\"vs/editor/contrib/caretOperations/browser/caretOperations\":[\"\\u041F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0439 \\u0442\\u0435\\u043A\\u0441\\u0442 \\u0432\\u043B\\u0435\\u0432\\u043E\",\"\\u041F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0439 \\u0442\\u0435\\u043A\\u0441\\u0442 \\u0432\\u043F\\u0440\\u0430\\u0432\\u043E\"],\"vs/editor/contrib/caretOperations/browser/transpose\":[\"\\u0422\\u0440\\u0430\\u043D\\u0441\\u043F\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0431\\u0443\\u043A\\u0432\\u044B\"],\"vs/editor/contrib/clipboard/browser/clipboard\":[\"&&\\u0412\\u044B\\u0440\\u0435\\u0437\\u0430\\u0442\\u044C\",\"\\u0412\\u044B\\u0440\\u0435\\u0437\\u0430\\u0442\\u044C\",\"\\u0412\\u044B\\u0440\\u0435\\u0437\\u0430\\u0442\\u044C\",\"\\u0412\\u044B\\u0440\\u0435\\u0437\\u0430\\u0442\\u044C\",\"&&\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u043A\\u0430\\u043A\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u043A\\u0430\\u043A\",\"\\u041F\\u043E\\u0434\\u0435\\u043B\\u0438\\u0442\\u044C\\u0441\\u044F\",\"\\u041F\\u043E\\u0434\\u0435\\u043B\\u0438\\u0442\\u044C\\u0441\\u044F\",\"\\u041F\\u043E\\u0434\\u0435\\u043B\\u0438\\u0442\\u044C\\u0441\\u044F\",\"&&\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0441 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\\u043C \\u0441\\u0438\\u043D\\u0442\\u0430\\u043A\\u0441\\u0438\\u0441\\u0430\"],\"vs/editor/contrib/codeAction/browser/codeAction\":[\"\\u041F\\u0440\\u0438 \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0438 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043A\\u043E\\u0434\\u0430 \\u043F\\u0440\\u043E\\u0438\\u0437\\u043E\\u0448\\u043B\\u0430 \\u043D\\u0435\\u0438\\u0437\\u0432\\u0435\\u0441\\u0442\\u043D\\u0430\\u044F \\u043E\\u0448\\u0438\\u0431\\u043A\\u0430\"],\"vs/editor/contrib/codeAction/browser/codeActionCommands\":[\"\\u0422\\u0438\\u043F \\u0437\\u0430\\u043F\\u0443\\u0441\\u043A\\u0430\\u0435\\u043C\\u043E\\u0433\\u043E \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043A\\u043E\\u0434\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u044F\\u044E\\u0442\\u0441\\u044F \\u0432\\u043E\\u0437\\u0432\\u0440\\u0430\\u0449\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F.\",\"\\u0412\\u0441\\u0435\\u0433\\u0434\\u0430 \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u044F\\u0442\\u044C \\u043F\\u0435\\u0440\\u0432\\u043E\\u0435 \\u0432\\u043E\\u0437\\u0432\\u0440\\u0430\\u0449\\u0435\\u043D\\u043D\\u043E\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \\u043A\\u043E\\u0434\\u0430.\",\"\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u043F\\u0435\\u0440\\u0432\\u043E\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \\u0432\\u043E\\u0437\\u0432\\u0440\\u0430\\u0449\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u043A\\u043E\\u0434\\u0430, \\u0435\\u0441\\u043B\\u0438 \\u043E\\u043D\\u043E \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u0435\\u0434\\u0438\\u043D\\u0441\\u0442\\u0432\\u0435\\u043D\\u043D\\u044B\\u043C.\",\"\\u041D\\u0435 \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u044F\\u0442\\u044C \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u0432\\u043E\\u0437\\u0432\\u0440\\u0430\\u0449\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u043A\\u043E\\u0434\\u0430.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u0432\\u043E\\u0437\\u0432\\u0440\\u0430\\u0449\\u0430\\u0442\\u044C \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043F\\u0440\\u0435\\u0434\\u043F\\u043E\\u0447\\u0442\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043A\\u043E\\u0434\\u0430.\",\"\\u0411\\u044B\\u0441\\u0442\\u0440\\u043E\\u0435 \\u0438\\u0441\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435...\",\"\\u0414\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043A\\u043E\\u0434\\u0430 \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0442\",'\\u041D\\u0435\\u0442 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043F\\u043E\\u0447\\u0442\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0439 \\u043A\\u043E\\u0434\\u0430 \\u0434\\u043B\\u044F \"{0}\".','\\u0414\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043A\\u043E\\u0434\\u0430 \\u0434\\u043B\\u044F \"{0}\" \\u043D\\u0435\\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B',\"\\u041D\\u0435\\u0442 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043F\\u043E\\u0447\\u0442\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0439 \\u043A\\u043E\\u0434\\u0430\",\"\\u0414\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043A\\u043E\\u0434\\u0430 \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0442\",\"\\u0420\\u0435\\u0444\\u0430\\u043A\\u0442\\u043E\\u0440\\u0438\\u043D\\u0433...\",'\\u041D\\u0435\\u0442 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043F\\u043E\\u0447\\u0442\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0440\\u0435\\u0444\\u0430\\u043A\\u0442\\u043E\\u0440\\u0438\\u043D\\u0433\\u043E\\u0432 \\u0434\\u043B\\u044F \"{0}\"','\\u041D\\u0435\\u0442 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u043E\\u0433\\u043E \\u0440\\u0435\\u0444\\u0430\\u043A\\u0442\\u043E\\u0440\\u0438\\u043D\\u0433\\u0430 \\u0434\\u043B\\u044F \"{0}\"',\"\\u041D\\u0435\\u0442 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043F\\u043E\\u0447\\u0442\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0440\\u0435\\u0444\\u0430\\u043A\\u0442\\u043E\\u0440\\u0438\\u043D\\u0433\\u043E\\u0432\",\"\\u0414\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u0435 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438 \\u0440\\u0435\\u0444\\u0430\\u043A\\u0442\\u043E\\u0440\\u0438\\u043D\\u0433\\u0430 \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0442\",\"\\u0414\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \\u0441 \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u044B\\u043C \\u043A\\u043E\\u0434\\u043E\\u043C...\",\"\\u041D\\u0435\\u0442 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043F\\u043E\\u0447\\u0442\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0439 \\u0438\\u0441\\u0442\\u043E\\u0447\\u043D\\u0438\\u043A\\u0430 \\u0434\\u043B\\u044F '{0}'\",'\\u041D\\u0435\\u0442 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u0445 \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u044B\\u0445 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0439 \\u0434\\u043B\\u044F \"{0}\"',\"\\u041F\\u0440\\u0435\\u0434\\u043F\\u043E\\u0447\\u0442\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u0438\\u0441\\u0442\\u043E\\u0447\\u043D\\u0438\\u043A\\u0430 \\u043D\\u0435\\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\",\"\\u0414\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u0435 \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u044B\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0442\",\"\\u041E\\u0440\\u0433\\u0430\\u043D\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F \\u0438\\u043C\\u043F\\u043E\\u0440\\u0442\\u043E\\u0432\",\"\\u0414\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \\u0434\\u043B\\u044F \\u0443\\u043F\\u043E\\u0440\\u044F\\u0434\\u043E\\u0447\\u0435\\u043D\\u0438\\u044F \\u0438\\u043C\\u043F\\u043E\\u0440\\u0442\\u043E\\u0432 \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442\",\"\\u0418\\u0441\\u043F\\u0440\\u0430\\u0432\\u0438\\u0442\\u044C \\u0432\\u0441\\u0435\",\"\\u041D\\u0435\\u0442 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u043E\\u0433\\u043E \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043F\\u043E \\u043E\\u0431\\u0449\\u0435\\u043C\\u0443 \\u0438\\u0441\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044E\",\"\\u0410\\u0432\\u0442\\u043E\\u0438\\u0441\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435...\",\"\\u041D\\u0435\\u0442 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\\u0445 \\u0430\\u0432\\u0442\\u043E\\u0438\\u0441\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0439\"],\"vs/editor/contrib/codeAction/browser/codeActionContributions\":[\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0438\\u043B\\u0438 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0437\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043A\\u043E\\u0432 \\u0433\\u0440\\u0443\\u043F\\u043F \\u0432 \\u043C\\u0435\\u043D\\u044E \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0439 \\u043A\\u043E\\u0434\\u0430.\"],\"vs/editor/contrib/codeAction/browser/codeActionController\":[\"\\u0421\\u043A\\u0440\\u044B\\u0442\\u044C \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u043D\\u044B\\u0435\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u043D\\u044B\\u0435\"],\"vs/editor/contrib/codeAction/browser/codeActionMenu\":[\"\\u0414\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F...\",\"\\u0411\\u044B\\u0441\\u0442\\u0440\\u043E\\u0435 \\u0438\\u0441\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435...\",\"\\u0418\\u0437\\u0432\\u043B\\u0435\\u0447\\u044C...\",\"\\u0412\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u0430\\u044F...\",\"\\u041F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0441\\u043E\\u0437\\u0434\\u0430\\u0442\\u044C...\",\"\\u041F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C\\u2026\",\"\\u0420\\u0430\\u0437\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C \\u0432\\u043E \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0435...\",\"\\u0414\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \\u0441 \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u044B\\u043C \\u043A\\u043E\\u0434\\u043E\\u043C...\"],\"vs/editor/contrib/codeAction/browser/lightBulbWidget\":[\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043A\\u043E\\u0434\\u0430. \\u0414\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u043E \\u043F\\u0440\\u0435\\u0434\\u043F\\u043E\\u0447\\u0442\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0435 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0435 \\u0438\\u0441\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435 ({0})\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043A\\u043E\\u0434\\u0430 ({0})\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043A\\u043E\\u0434\\u0430\"],\"vs/editor/contrib/codelens/browser/codelensController\":[\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B CodeLens \\u0434\\u043B\\u044F \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438\"],\"vs/editor/contrib/colorPicker/browser/colorPickerWidget\":[\"\\u0429\\u0435\\u043B\\u043A\\u043D\\u0438\\u0442\\u0435, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u044B \\u0446\\u0432\\u0435\\u0442\\u0430 (RGB/HSL/HEX)\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u0437\\u0430\\u043A\\u0440\\u044B\\u0442\\u0438\\u044F \\u043F\\u0430\\u043B\\u0438\\u0442\\u0440\\u044B\"],\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\":[\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0438\\u043B\\u0438 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0438\\u0442\\u044C \\u0430\\u0432\\u0442\\u043E\\u043D\\u043E\\u043C\\u043D\\u044B\\u0439 \\u0432\\u044B\\u0431\\u043E\\u0440 \\u0446\\u0432\\u0435\\u0442\\u0430\",\"&&\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0438\\u043B\\u0438 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0438\\u0442\\u044C \\u0430\\u0432\\u0442\\u043E\\u043D\\u043E\\u043C\\u043D\\u044B\\u0439 \\u0432\\u044B\\u0431\\u043E\\u0440 \\u0446\\u0432\\u0435\\u0442\\u0430\",\"\\u0421\\u043A\\u0440\\u044B\\u0442\\u044C \\u043F\\u0430\\u043B\\u0438\\u0442\\u0440\\u0443 \\u0446\\u0432\\u0435\\u0442\\u043E\\u0432\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u043A\\u0430 \\u0446\\u0432\\u0435\\u0442\\u0430 \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u0430\\u0432\\u0442\\u043E\\u043D\\u043E\\u043C\\u043D\\u043E\\u0439 \\u043F\\u0430\\u043B\\u0438\\u0442\\u0440\\u044B \\u0446\\u0432\\u0435\\u0442\\u043E\\u0432\"],\"vs/editor/contrib/comment/browser/comment\":[\"\\u0417\\u0430\\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0438\\u043B\\u0438 \\u0440\\u0430\\u0441\\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443\",\"\\u041F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0430\\u0440\\u0438\\u0439 &&\\u0441\\u0442\\u0440\\u043E\\u043A\\u0438\",\"\\u0417\\u0430\\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443\",\"\\u0420\\u0430\\u0441\\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443\",\"\\u0417\\u0430\\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0438\\u043B\\u0438 \\u0440\\u0430\\u0441\\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0431\\u043B\\u043E\\u043A\",\"\\u041F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0430\\u0440\\u0438\\u0439 &&\\u0431\\u043B\\u043E\\u043A\\u0430\"],\"vs/editor/contrib/contextmenu/browser/contextmenu\":[\"\\u041C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u0430\",\"\\u041E\\u0442\\u0440\\u0438\\u0441\\u043E\\u0432\\u043A\\u0430 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432\",\"\\u0420\\u0430\\u0437\\u043C\\u0435\\u0440 \\u043F\\u043E \\u0432\\u0435\\u0440\\u0442\\u0438\\u043A\\u0430\\u043B\\u0438\",\"\\u041F\\u0440\\u043E\\u043F\\u043E\\u0440\\u0446\\u0438\\u043E\\u043D\\u0430\\u043B\\u044C\\u043D\\u043E\",\"\\u0417\\u0430\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u044C\",\"\\u041F\\u043E\\u0434\\u043E\\u0433\\u043D\\u0430\\u0442\\u044C\",\"\\u041F\\u043E\\u043B\\u0437\\u0443\\u043D\\u043E\\u043A\",\"\\u041D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044F \\u043C\\u044B\\u0448\\u0438\",\"\\u0412\\u0441\\u0435\\u0433\\u0434\\u0430\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043A\\u043E\\u043D\\u0442\\u0435\\u043A\\u0441\\u0442\\u043D\\u043E\\u0435 \\u043C\\u0435\\u043D\\u044E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\"],\"vs/editor/contrib/cursorUndo/browser/cursorUndo\":[\"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0430 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430\",\"\\u041F\\u043E\\u0432\\u0442\\u043E\\u0440 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\":[\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C \\u043A\\u0430\\u043A...\",\"\\u0418\\u0434\\u0435\\u043D\\u0442\\u0438\\u0444\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u044F \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0438 \\u0434\\u043B\\u044F \\u043F\\u043E\\u043F\\u044B\\u0442\\u043A\\u0438 \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u044F. \\u0415\\u0441\\u043B\\u0438 \\u044D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043D\\u0435 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D, \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430.\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\":[\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0438\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u044B \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0438...\",\"\\u0417\\u0430\\u043F\\u0443\\u0441\\u043A\\u0430\\u044E\\u0442\\u0441\\u044F \\u043E\\u0431\\u0440\\u0430\\u0431\\u043E\\u0442\\u0447\\u0438\\u043A\\u0438 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0438. \\u0429\\u0435\\u043B\\u043A\\u043D\\u0438\\u0442\\u0435 \\u0434\\u043B\\u044F \\u043E\\u0442\\u043C\\u0435\\u043D\\u044B\",\"\\u0412\\u044B\\u0431\\u0435\\u0440\\u0438\\u0442\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0438\",\"\\u0417\\u0430\\u043F\\u0443\\u0441\\u043A \\u043E\\u0431\\u0440\\u0430\\u0431\\u043E\\u0442\\u0447\\u0438\\u043A\\u043E\\u0432 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0438\"],\"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\":[\"\\u0412\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043E\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C \\u043E\\u0431\\u044B\\u0447\\u043D\\u044B\\u0439 \\u0442\\u0435\\u043A\\u0441\\u0442\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C URI\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C URI\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C \\u043F\\u0443\\u0442\\u0438\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C \\u043F\\u0443\\u0442\\u044C\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C \\u043E\\u0442\\u043D\\u043E\\u0441\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0435 \\u043F\\u0443\\u0442\\u0438\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C \\u043E\\u0442\\u043D\\u043E\\u0441\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0439 \\u043F\\u0443\\u0442\\u044C\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\":[\"Configures the default drop provider to use for content of a given mime type.\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\":[\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0431\\u0440\\u043E\\u0441\\u0430\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u044B \\u0441\\u0431\\u0440\\u043E\\u0441\\u0430...\",\"\\u0417\\u0430\\u043F\\u0443\\u0441\\u043A\\u0430\\u044E\\u0442\\u0441\\u044F \\u043E\\u0431\\u0440\\u0430\\u0431\\u043E\\u0442\\u0447\\u0438\\u043A\\u0438 \\u0441\\u0431\\u0440\\u043E\\u0441\\u0430. \\u0429\\u0435\\u043B\\u043A\\u043D\\u0438\\u0442\\u0435 \\u0434\\u043B\\u044F \\u043E\\u0442\\u043C\\u0435\\u043D\\u044B\"],\"vs/editor/contrib/editorState/browser/keybindingCancellation\":['\\u0412\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u044E\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438, \\u0434\\u043E\\u043F\\u0443\\u0441\\u043A\\u0430\\u044E\\u0449\\u0438\\u0435 \\u043E\\u0442\\u043C\\u0435\\u043D\\u0443, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0441\\u0441\\u044B\\u043B\\u043A\\u0438\"'],\"vs/editor/contrib/find/browser/findController\":[\"\\u041D\\u0430\\u0439\\u0442\\u0438\",\"&&\\u041D\\u0430\\u0439\\u0442\\u0438\",`\\u041F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0444\\u043B\\u0430\\u0433 \"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u0440\\u0435\\u0433\\u0443\\u043B\\u044F\\u0440\\u043D\\u043E\\u0435 \\u0432\\u044B\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0435\".\\r\n\\u042D\\u0442\\u043E\\u0442 \\u0444\\u043B\\u0430\\u0433 \\u043D\\u0435 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0441\\u043E\\u0445\\u0440\\u0430\\u043D\\u0435\\u043D \\u043D\\u0430 \\u0431\\u0443\\u0434\\u0443\\u0449\\u0435\\u0435.\\r\n0: \\u0431\\u0435\\u0437\\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435\\r\n1: true\\r\n2: false`,`\\u041F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0444\\u043B\\u0430\\u0433 \"\\u0421\\u043B\\u043E\\u0432\\u043E \\u0446\\u0435\\u043B\\u0438\\u043A\\u043E\\u043C\".\\r\n\\u042D\\u0442\\u043E\\u0442 \\u0444\\u043B\\u0430\\u0433 \\u043D\\u0435 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0441\\u043E\\u0445\\u0440\\u0430\\u043D\\u0435\\u043D \\u043D\\u0430 \\u0431\\u0443\\u0434\\u0443\\u0449\\u0435\\u0435.\\r\n0: \\u0431\\u0435\\u0437\\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435\\r\n1: true\\r\n2: false`,`\\u041F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0444\\u043B\\u0430\\u0433 \"\\u0423\\u0447\\u0438\\u0442\\u044B\\u0432\\u0430\\u0442\\u044C \\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\".\\r\n\\u042D\\u0442\\u043E\\u0442 \\u0444\\u043B\\u0430\\u0433 \\u043D\\u0435 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0441\\u043E\\u0445\\u0440\\u0430\\u043D\\u0435\\u043D \\u043D\\u0430 \\u0431\\u0443\\u0434\\u0443\\u0449\\u0435\\u0435.\\r\n0: \\u0431\\u0435\\u0437\\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435\\r\n1: true\\r\n2: false`,`\\u041F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0444\\u043B\\u0430\\u0433 \"\\u0421\\u043E\\u0445\\u0440\\u0430\\u043D\\u0438\\u0442\\u044C \\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\".\\r\n\\u042D\\u0442\\u043E\\u0442 \\u0444\\u043B\\u0430\\u0433 \\u043D\\u0435 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0441\\u043E\\u0445\\u0440\\u0430\\u043D\\u0435\\u043D \\u043D\\u0430 \\u0431\\u0443\\u0434\\u0443\\u0449\\u0435\\u0435.\\r\n0: \\u0431\\u0435\\u0437\\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435\\r\n1: true\\r\n2: false`,\"\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0441 \\u0430\\u0440\\u0433\\u0443\\u043C\\u0435\\u043D\\u0442\\u0430\\u043C\\u0438\",\"\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0432 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u043C\",\"\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0434\\u0430\\u043B\\u0435\\u0435\",\"\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0440\\u0430\\u043D\\u0435\\u0435\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u044E...\",\"\\u041D\\u0435\\u0442 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439. \\u041F\\u043E\\u043F\\u0440\\u043E\\u0431\\u0443\\u0439\\u0442\\u0435 \\u043D\\u0430\\u0439\\u0442\\u0438 \\u0447\\u0442\\u043E-\\u043D\\u0438\\u0431\\u0443\\u0434\\u044C \\u0434\\u0440\\u0443\\u0433\\u043E\\u0435.\",\"\\u0412\\u0432\\u0435\\u0434\\u0438\\u0442\\u0435 \\u0447\\u0438\\u0441\\u043B\\u043E, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u043C\\u0443 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u044E (\\u043E\\u0442 1 \\u0434\\u043E {0})\",\"\\u0412\\u0432\\u0435\\u0434\\u0438\\u0442\\u0435 \\u0447\\u0438\\u0441\\u043B\\u043E \\u043E\\u0442 1 \\u0434\\u043E {0}\",\"\\u0412\\u0432\\u0435\\u0434\\u0438\\u0442\\u0435 \\u0447\\u0438\\u0441\\u043B\\u043E \\u043E\\u0442 1 \\u0434\\u043E {0}\",\"\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\",\"\\u041D\\u0430\\u0439\\u0442\\u0438 \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\",\"\\u0417\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\",\"&&\\u0417\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\"],\"vs/editor/contrib/find/browser/findWidget\":['\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438 \"\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0432 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u043C\" \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.',\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A, \\u0443\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u044E\\u0449\\u0438\\u0439, \\u0447\\u0442\\u043E \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u0441\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u043E.\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A, \\u0443\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u044E\\u0449\\u0438\\u0439, \\u0447\\u0442\\u043E \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u0440\\u0430\\u0437\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u043E.\",'\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438 \"\\u0417\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\" \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.','\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438 \"\\u0417\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u0432\\u0441\\u0435\" \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.','\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438 \"\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0440\\u0430\\u043D\\u0435\\u0435\" \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.','\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438 \"\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0434\\u0430\\u043B\\u0435\\u0435\" \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.',\"\\u041F\\u043E\\u0438\\u0441\\u043A \\u0438 \\u0437\\u0430\\u043C\\u0435\\u043D\\u0430\",\"\\u041D\\u0430\\u0439\\u0442\\u0438\",\"\\u041D\\u0430\\u0439\\u0442\\u0438\",\"\\u041F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u0435 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0435\",\"\\u0421\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0435 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0435\",\"\\u041D\\u0430\\u0439\\u0442\\u0438 \\u0432 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0438\",\"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\",\"\\u0417\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\",\"\\u0417\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\",\"\\u0417\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\",\"\\u0417\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u0432\\u0441\\u0435\",\"\\u041F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0435 \\u0437\\u0430\\u043C\\u0435\\u043D\\u044B\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043F\\u0435\\u0440\\u0432\\u044B\\u0435 {0} \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432, \\u043D\\u043E \\u0432\\u0441\\u0435 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u044E\\u0442\\u0441\\u044F \\u0441\\u043E \\u0432\\u0441\\u0435\\u043C \\u0442\\u0435\\u043A\\u0441\\u0442\\u043E\\u043C.\",\"{0} \\u0438\\u0437 {1}\",\"\\u0420\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u044B \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0442\",\"{0} \\u043E\\u0431\\u043D\\u0430\\u0440\\u0443\\u0436\\u0435\\u043D\\u043E\",'{0} \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D \\u0434\\u043B\\u044F \"{1}\"','{0} \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D \\u0434\\u043B\\u044F \"{1}\", \\u0432 {2}','{0} \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D \\u0434\\u043B\\u044F \"{1}\"',\"\\u0422\\u0435\\u043F\\u0435\\u0440\\u044C \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448 CTRL+\\u0412\\u0412\\u041E\\u0414 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B \\u043F\\u0435\\u0440\\u0435\\u0445\\u043E\\u0434\\u0430 \\u043D\\u0430 \\u043D\\u043E\\u0432\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0432\\u043C\\u0435\\u0441\\u0442\\u043E \\u0437\\u0430\\u043C\\u0435\\u043D\\u044B \\u0432\\u0441\\u0435\\u0433\\u043E \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430. \\u0412\\u044B \\u043C\\u043E\\u0436\\u0435\\u0442\\u0435 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u0435 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448 editor.action.replaceAll, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0438\\u0442\\u044C \\u044D\\u0442\\u043E \\u043F\\u043E\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435.\"],\"vs/editor/contrib/folding/browser/folding\":[\"\\u0420\\u0430\\u0437\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C\",\"\\u0420\\u0430\\u0437\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u0440\\u0435\\u043A\\u0443\\u0440\\u0441\\u0438\\u0432\\u043D\\u043E\",\"\\u0421\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C\",\"\\u041F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u0435\",\"\\u0421\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u0440\\u0435\\u043A\\u0443\\u0440\\u0441\\u0438\\u0432\\u043D\\u043E\",\"\\u0421\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u0432\\u0441\\u0435 \\u0431\\u043B\\u043E\\u043A\\u0438 \\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0430\\u0440\\u0438\\u0435\\u0432\",\"\\u0421\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u0432\\u0441\\u0435 \\u0440\\u0435\\u0433\\u0438\\u043E\\u043D\\u044B\",\"\\u0420\\u0430\\u0437\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u0432\\u0441\\u0435 \\u0440\\u0435\\u0433\\u0438\\u043E\\u043D\\u044B\",\"\\u0421\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u0432\\u0441\\u0435 \\u0440\\u0435\\u0433\\u0438\\u043E\\u043D\\u044B, \\u043A\\u0440\\u043E\\u043C\\u0435 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u044B\\u0445\",\"\\u0420\\u0430\\u0437\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u0432\\u0441\\u0435 \\u0440\\u0435\\u0433\\u0438\\u043E\\u043D\\u044B, \\u043A\\u0440\\u043E\\u043C\\u0435 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u044B\\u0445\",\"\\u0421\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u0432\\u0441\\u0435\",\"\\u0420\\u0430\\u0437\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u0432\\u0441\\u0435\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0440\\u043E\\u0434\\u0438\\u0442\\u0435\\u043B\\u044C\\u0441\\u043A\\u043E\\u043C\\u0443 \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u044E\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u043C\\u0443 \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u0443 \\u0441\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0434\\u0430\\u043D\\u043D\\u044B\\u0445\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u043C\\u0443 \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u0443 \\u0441\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0434\\u0430\\u043D\\u043D\\u044B\\u0445\",\"\\u0421\\u043E\\u0437\\u0434\\u0430\\u0442\\u044C \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u044F \\u0438\\u0437 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0430\",\"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u044B \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u044F \\u0432\\u0440\\u0443\\u0447\\u043D\\u0443\\u044E\",\"\\u0423\\u0440\\u043E\\u0432\\u0435\\u043D\\u044C \\u043F\\u0430\\u043F\\u043A\\u0438 {0}\"],\"vs/editor/contrib/folding/browser/foldingDecorations\":[\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0437\\u0430 \\u0441\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044B\\u043C\\u0438 \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u0430\\u043C\\u0438. \\u042D\\u0442\\u043E\\u0442 \\u0446\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0432\\u0430\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u0434\\u0435\\u043A\\u043E\\u0440\\u0430\\u0442\\u0438\\u0432\\u043D\\u044B\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B.\",\"\\u0426\\u0432\\u0435\\u0442 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 \\u0443\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0432\\u0435\\u0440\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u0435\\u043C \\u0432\\u043E \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0435\\u043C \\u043F\\u043E\\u043B\\u0435 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u0440\\u0430\\u0437\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044B\\u0445 \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u043E\\u0432 \\u043D\\u0430 \\u043F\\u043E\\u043B\\u0435 \\u0433\\u043B\\u0438\\u0444\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u0441\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044B\\u0445 \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u043E\\u0432 \\u043D\\u0430 \\u043F\\u043E\\u043B\\u0435 \\u0433\\u043B\\u0438\\u0444\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u0441\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044B\\u0445 \\u0432\\u0440\\u0443\\u0447\\u043D\\u0443\\u044E \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u043E\\u0432 \\u043D\\u0430 \\u043F\\u043E\\u043B\\u044F\\u0445 \\u0433\\u043B\\u0438\\u0444\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u0440\\u0430\\u0437\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044B\\u0445 \\u0432\\u0440\\u0443\\u0447\\u043D\\u0443\\u044E \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u043E\\u0432 \\u043D\\u0430 \\u043F\\u043E\\u043B\\u044F\\u0445 \\u0433\\u043B\\u0438\\u0444\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\"],\"vs/editor/contrib/fontZoom/browser/fontZoom\":[\"\\u0423\\u0432\\u0435\\u043B\\u0438\\u0447\\u0438\\u0442\\u044C \\u0448\\u0440\\u0438\\u0444\\u0442 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\",\"\\u0423\\u043C\\u0435\\u043D\\u044C\\u0448\\u0438\\u0442\\u044C \\u0448\\u0440\\u0438\\u0444\\u0442 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\",\"\\u0421\\u0431\\u0440\\u043E\\u0441\\u0438\\u0442\\u044C \\u043C\\u0430\\u0441\\u0448\\u0442\\u0430\\u0431 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\"],\"vs/editor/contrib/format/browser/format\":[\"\\u0412\\u043D\\u0435\\u0441\\u0435\\u043D\\u0430 \\u043E\\u0434\\u043D\\u0430 \\u043F\\u0440\\u0430\\u0432\\u043A\\u0430 \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435 {0}.\",\"\\u0412\\u043D\\u0435\\u0441\\u0435\\u043D\\u044B \\u043F\\u0440\\u0430\\u0432\\u043A\\u0438 \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F ({0}) \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435 {1}.\",\"\\u0412\\u043D\\u0435\\u0441\\u0435\\u043D\\u0430 \\u043E\\u0434\\u043D\\u0430 \\u043F\\u0440\\u0430\\u0432\\u043A\\u0430 \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u043C\\u0435\\u0436\\u0434\\u0443 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430\\u043C\\u0438 {0} \\u0438 {1}.\",\"\\u0412\\u043D\\u0435\\u0441\\u0435\\u043D\\u044B \\u043F\\u0440\\u0430\\u0432\\u043A\\u0438 \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F ({0}) \\u043C\\u0435\\u0436\\u0434\\u0443 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430\\u043C\\u0438 {1} \\u0438 {2}.\"],\"vs/editor/contrib/format/browser/formatActions\":[\"\\u0424\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\",\"\\u0424\\u043E\\u0440\\u043C\\u0430\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0439 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\"],\"vs/editor/contrib/gotoError/browser/gotoError\":[\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0421\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0439 \\u041F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C\\u0435 (\\u041E\\u0448\\u0438\\u0431\\u043A\\u0435, \\u041F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u044E, \\u0418\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u0438)\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043F\\u0435\\u0440\\u0435\\u0445\\u043E\\u0434\\u0430 \\u043A \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u043C\\u0443 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u0443.\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u041F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u0439 \\u041F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C\\u0435 (\\u041E\\u0448\\u0438\\u0431\\u043A\\u0435, \\u041F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u044E, \\u0418\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u0438)\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043F\\u0435\\u0440\\u0435\\u0445\\u043E\\u0434\\u0430 \\u043A \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u043C\\u0443 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u0443.\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0439 \\u043F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C\\u0435 \\u0432 \\u0444\\u0430\\u0439\\u043B\\u0430\\u0445 (\\u043E\\u0448\\u0438\\u0431\\u043A\\u0438, \\u043F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F, \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u044B\\u0435 \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u044F)\",\"\\u0421\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0430\\u044F &&\\u043F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C\\u0430\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u0439 \\u043F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C\\u0435 \\u0432 \\u0444\\u0430\\u0439\\u043B\\u0430\\u0445 (\\u043E\\u0448\\u0438\\u0431\\u043A\\u0438, \\u043F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F, \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u044B\\u0435 \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u044F)\",\"\\u041F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0430\\u044F &&\\u043F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C\\u0430\"],\"vs/editor/contrib/gotoError/browser/gotoErrorWidget\":[\"\\u041E\\u0448\\u0438\\u0431\\u043A\\u0430\",\"\\u041F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435\",\"\\u0418\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u044F\",\"\\u0423\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u0435\",\"{0} \\u0432 {1}. \",\"\\u041F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C\\u044B: {0} \\u0438\\u0437 {1}\",\"\\u041F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C\\u044B: {0} \\u0438\\u0437 {1}\",\"\\u0426\\u0432\\u0435\\u0442 \\u043E\\u0448\\u0438\\u0431\\u043A\\u0438 \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u043F\\u043E \\u043C\\u0435\\u0442\\u043A\\u0430\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0424\\u043E\\u043D \\u0437\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043A\\u0430 \\u043E\\u0448\\u0438\\u0431\\u043A\\u0438 \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u043F\\u043E \\u043C\\u0435\\u0442\\u043A\\u0430\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u043F\\u043E \\u043C\\u0435\\u0442\\u043A\\u0430\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0424\\u043E\\u043D \\u0437\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043A\\u0430 \\u043F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u043F\\u043E \\u043C\\u0435\\u0442\\u043A\\u0430\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u043E\\u0433\\u043E \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u044F \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u043F\\u043E \\u043C\\u0435\\u0442\\u043A\\u0430\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0424\\u043E\\u043D \\u0437\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043A\\u0430 \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u043E\\u0433\\u043E \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u044F \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u043F\\u043E \\u043C\\u0435\\u0442\\u043A\\u0430\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0424\\u043E\\u043D \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u043F\\u043E \\u043C\\u0435\\u0442\\u043A\\u0430\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\"],\"vs/editor/contrib/gotoSymbol/browser/goToCommands\":[\"\\u041E\\u0431\\u0437\\u043E\\u0440\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F\",'\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0434\\u043B\\u044F \"{0}\" \\u043D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043E.',\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u043D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u044B.\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A &&\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E\",\"\\u041E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044C \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0431\\u043E\\u043A\\u0443\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\",\"\\u041E\\u0431\\u044A\\u044F\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F\",'\\u041E\\u0431\\u044A\\u044F\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0434\\u043B\\u044F \"{0}\" \\u043D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043E.',\"\\u041E\\u0431\\u044A\\u044F\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043E\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u0431\\u044A\\u044F\\u0432\\u043B\\u0435\\u043D\\u0438\\u044E\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A &&\\u043E\\u0431\\u044A\\u044F\\u0432\\u043B\\u0435\\u043D\\u0438\\u044E\",'\\u041E\\u0431\\u044A\\u044F\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0434\\u043B\\u044F \"{0}\" \\u043D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043E.',\"\\u041E\\u0431\\u044A\\u044F\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043E\",\"\\u041F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0435\\u0442\\u044C \\u043E\\u0431\\u044A\\u044F\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0442\\u0438\\u043F\\u043E\\u0432\",'\\u041D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043E \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0442\\u0438\\u043F\\u0430 \\u0434\\u043B\\u044F \"{0}\".',\"\\u041D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043E \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0442\\u0438\\u043F\\u0430.\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E \\u0442\\u0438\\u043F\\u0430\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A &&\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E \\u0442\\u0438\\u043F\\u0430\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0442\\u0438\\u043F\\u0430\",\"\\u0420\\u0435\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u0438\",'\\u041D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u0430 \\u0440\\u0435\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F \\u0434\\u043B\\u044F \"{0}\".',\"\\u041D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u0430 \\u0440\\u0435\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F.\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0440\\u0435\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F\\u043C\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A &&\\u0440\\u0435\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F\\u043C\",\"\\u041F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0435\\u0442\\u044C \\u0440\\u0435\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u0438\",'\\u0421\\u0441\\u044B\\u043B\\u043A\\u0438 \\u0434\\u043B\\u044F \"{0}\" \\u043D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u044B',\"\\u0421\\u0441\\u044B\\u043B\\u043A\\u0438 \\u043D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u044B\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u0441\\u044B\\u043B\\u043A\\u0430\\u043C\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A &&\\u0441\\u0441\\u044B\\u043B\\u043A\\u0430\\u043C\",\"\\u0421\\u0441\\u044B\\u043B\\u043A\\u0438\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0441\\u0441\\u044B\\u043B\\u043A\\u0438\",\"\\u0421\\u0441\\u044B\\u043B\\u043A\\u0438\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043B\\u044E\\u0431\\u043E\\u043C\\u0443 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0443\",\"\\u0420\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\",'\\u041D\\u0435\\u0442 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432 \\u0434\\u043B\\u044F \"{0}\"',\"\\u0421\\u0441\\u044B\\u043B\\u043A\\u0438\"],\"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\":[\"\\u0429\\u0435\\u043B\\u043A\\u043D\\u0438\\u0442\\u0435, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0437\\u0438\\u0442\\u044C \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F ({0}).\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesController\":['\\u041E\\u0442\\u043A\\u0440\\u044B\\u0442\\u043E \\u043B\\u0438 \\u043E\\u043A\\u043D\\u043E \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0441\\u0441\\u044B\\u043B\\u043E\\u043A, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \"\\u0421\\u0441\\u044B\\u043B\\u043A\\u0438 \\u0434\\u043B\\u044F \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430\" \\u0438\\u043B\\u0438 \"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430\"',\"\\u0417\\u0430\\u0433\\u0440\\u0443\\u0437\\u043A\\u0430...\",\"{0} ({1})\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\":[\"\\u0421\\u0441\\u044B\\u043B\\u043E\\u043A: {0}\",\"{0} \\u0441\\u0441\\u044B\\u043B\\u043A\\u0430\",\"\\u0421\\u0441\\u044B\\u043B\\u043A\\u0438\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\":[\"\\u043F\\u0440\\u0435\\u0434\\u0432\\u0430\\u0440\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0439 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440 \\u043D\\u0435\\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u0435\\u043D\",\"\\u0420\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u044B \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0442\",\"\\u0421\\u0441\\u044B\\u043B\\u043A\\u0438\"],\"vs/editor/contrib/gotoSymbol/browser/referencesModel\":[\"\\u0432 {0} \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435 {1} \\u0432 \\u0441\\u0442\\u043E\\u043B\\u0431\\u0446\\u0435 {2}\",\"{0} \\u0432 {1} \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435 {2} \\u0432 \\u0441\\u0442\\u043E\\u043B\\u0431\\u0446\\u0435 {3}\",\"1 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B \\u0432 {0}, \\u043F\\u043E\\u043B\\u043D\\u044B\\u0439 \\u043F\\u0443\\u0442\\u044C: {1}\",\"{0} \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0432 {1}, \\u043F\\u043E\\u043B\\u043D\\u044B\\u0439 \\u043F\\u0443\\u0442\\u044C: {2} \",\"\\u0420\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u044B \\u043D\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u044B\",\"\\u041E\\u0431\\u043D\\u0430\\u0440\\u0443\\u0436\\u0435\\u043D 1 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B \\u0432 {0}\",\"\\u041E\\u0431\\u043D\\u0430\\u0440\\u0443\\u0436\\u0435\\u043D\\u043E {0} \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0432 {1}\",\"\\u041E\\u0431\\u043D\\u0430\\u0440\\u0443\\u0436\\u0435\\u043D\\u043E {0} \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0432 {1} \\u0444\\u0430\\u0439\\u043B\\u0430\\u0445\"],\"vs/editor/contrib/gotoSymbol/browser/symbolNavigation\":[\"\\u0421\\u0443\\u0449\\u0435\\u0441\\u0442\\u0432\\u0443\\u044E\\u0442 \\u043B\\u0438 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432, \\u043A \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u043C \\u043C\\u043E\\u0436\\u043D\\u043E \\u043F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B\",\"\\u0421\\u0438\\u043C\\u0432\\u043E\\u043B {0} \\u0438\\u0437 {1}, {2} \\u0434\\u043B\\u044F \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0433\\u043E\",\"\\u0421\\u0438\\u043C\\u0432\\u043E\\u043B {0} \\u0438\\u0437 {1}\"],\"vs/editor/contrib/hover/browser/hover\":[\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0438\\u043B\\u0438 \\u043F\\u0435\\u0440\\u0435\\u0432\\u0435\\u0441\\u0442\\u0438 \\u043D\\u0430 \\u043D\\u0435\\u0433\\u043E \\u0444\\u043E\\u043A\\u0443\\u0441\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u0432\\u0430\\u0440\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0439 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440 \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u043C\\u044B\\u0448\\u0438\",\"\\u041F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u0438\\u0442\\u044C \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0432\\u0432\\u0435\\u0440\\u0445\",\"\\u041F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u0438\\u0442\\u044C \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0432\\u043D\\u0438\\u0437\",\"\\u041F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u0438\\u0442\\u044C \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0432\\u043B\\u0435\\u0432\\u043E\",\"\\u041F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u0438\\u0442\\u044C \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0432\\u043F\\u0440\\u0430\\u0432\\u043E\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043D\\u0430 \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0443 \\u0432\\u0432\\u0435\\u0440\\u0445 \\u0432 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043D\\u0430 \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0443 \\u0432\\u043D\\u0438\\u0437 \\u0432 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0432\\u0435\\u0440\\u0445\\u043D\\u0435\\u043C\\u0443 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044E\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043D\\u0438\\u0436\\u043D\\u0435\\u043C\\u0443 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044E\"],\"vs/editor/contrib/hover/browser/markdownHoverParticipant\":[\"\\u0417\\u0430\\u0433\\u0440\\u0443\\u0437\\u043A\\u0430...\",\"\\u041E\\u0442\\u0440\\u0438\\u0441\\u043E\\u0432\\u043A\\u0430 \\u043F\\u0440\\u0438\\u043E\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u043B\\u0435\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0434\\u043B\\u0438\\u043D\\u043D\\u043E\\u0439 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0438\\u0437 \\u0441\\u043E\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0439 \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u043E\\u0434\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0441\\u0442\\u0438. \\u042D\\u0442\\u043E \\u043C\\u043E\\u0436\\u043D\\u043E \\u043D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0438\\u0442\\u044C \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430 editor.stopRenderingLineAfter.\",'\\u0420\\u0430\\u0437\\u043C\\u0435\\u0442\\u043A\\u0430 \\u043F\\u0440\\u043E\\u043F\\u0443\\u0441\\u043A\\u0430\\u0435\\u0442\\u0441\\u044F \\u0434\\u043B\\u044F \\u0434\\u043B\\u0438\\u043D\\u043D\\u044B\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A \\u0438\\u0437 \\u0441\\u043E\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0439 \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u043E\\u0434\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0441\\u0442\\u0438. \\u042D\\u0442\\u043E \\u043C\\u043E\\u0436\\u043D\\u043E \\u043D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0438\\u0442\\u044C \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \"editor.maxTokenizationLineLength\".'],\"vs/editor/contrib/hover/browser/markerHoverParticipant\":[\"\\u041F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0435\\u0442\\u044C \\u043F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C\\u0443\",\"\\u0418\\u0441\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u043D\\u0435\\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\",\"\\u041F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0430 \\u043D\\u0430\\u043B\\u0438\\u0447\\u0438\\u044F \\u0438\\u0441\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0439...\",\"\\u0418\\u0441\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u043D\\u0435\\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u044B\",\"\\u0411\\u044B\\u0441\\u0442\\u0440\\u043E\\u0435 \\u0438\\u0441\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435...\"],\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\":[\"\\u0417\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0438\\u043C \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435\\u043C\",\"\\u0417\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0438\\u043C \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435\\u043C\"],\"vs/editor/contrib/indentation/browser/indentation\":[\"\\u041F\\u0440\\u0435\\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F \\u0432 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u044B\",\"\\u041F\\u0440\\u0435\\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F \\u0432 \\u0448\\u0430\\u0433\\u0438 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438\",\"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0439 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440 \\u0448\\u0430\\u0433\\u0430 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438\",\"\\u0420\\u0430\\u0437\\u043C\\u0435\\u0440 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438 \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E\",\"\\u0422\\u0435\\u043A\\u0443\\u0449\\u0438\\u0439 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438\",\"\\u0412\\u044B\\u0431\\u0440\\u0430\\u0442\\u044C \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440 \\u0448\\u0430\\u0433\\u0430 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438 \\u0434\\u043B\\u044F \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0433\\u043E \\u0444\\u0430\\u0439\\u043B\\u0430\",\"\\u041E\\u0442\\u0441\\u0442\\u0443\\u043F \\u0441 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\\u043C \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438\",\"\\u041E\\u0442\\u0441\\u0442\\u0443\\u043F \\u0441 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\\u043C \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u043E\\u0432\",\"\\u0418\\u0437\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u043C\\u044B\\u0439 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430 \\u043E\\u0442 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E\",\"\\u041F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0440\\u0430\\u0441\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u044B \\u0441\\u0442\\u0440\\u043E\\u043A\",\"\\u041F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u043E \\u0440\\u0430\\u0441\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u044B \\u0434\\u043B\\u044F \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u044B\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A\"],\"vs/editor/contrib/inlayHints/browser/inlayHintsHover\":[\"\\u0414\\u0432\\u0430\\u0436\\u0434\\u044B \\u0449\\u0435\\u043B\\u043A\\u043D\\u0438\\u0442\\u0435, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0432\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C\",\"CMD + \\u0449\\u0435\\u043B\\u0447\\u043E\\u043A\",\"CTRL + \\u0449\\u0435\\u043B\\u0447\\u043E\\u043A\",\"OPTION + \\u0449\\u0435\\u043B\\u0447\\u043E\\u043A\",\"ALT + \\u0449\\u0435\\u043B\\u0447\\u043E\\u043A\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E ({0}), \\u0449\\u0435\\u043B\\u043A\\u043D\\u0438\\u0442\\u0435 \\u043F\\u0440\\u0430\\u0432\\u043E\\u0439 \\u043A\\u043D\\u043E\\u043F\\u043A\\u043E\\u0439 \\u043C\\u044B\\u0448\\u0438 \\u0434\\u043B\\u044F \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0441\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0439\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E ({0})\",\"\\u0412\\u044B\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u044C \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u0443\"],\"vs/editor/contrib/inlineCompletions/browser/commands\":[\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0442\\u044C \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0435 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u0435 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435\",\"\\u0410\\u043A\\u0442\\u0438\\u0432\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435\",\"\\u041F\\u0440\\u0438\\u043D\\u044F\\u0442\\u044C \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0435 \\u0441\\u043B\\u043E\\u0432\\u043E \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\",\"\\u041F\\u0440\\u0438\\u043D\\u044F\\u0442\\u044C Word\",\"\\u041F\\u0440\\u0438\\u043D\\u044F\\u0442\\u044C \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\",\"\\u041F\\u0440\\u0438\\u043D\\u044F\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443\",\"\\u041F\\u0440\\u0438\\u043D\\u044F\\u0442\\u044C \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435\",\"\\u041F\\u0440\\u0438\\u043D\\u044F\\u0442\\u044C\",\"\\u0421\\u043A\\u0440\\u044B\\u0442\\u044C \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435\",\"\\u0412\\u0441\\u0435\\u0433\\u0434\\u0430 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043F\\u0430\\u043D\\u0435\\u043B\\u044C \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432\"],\"vs/editor/contrib/inlineCompletions/browser/hoverParticipant\":[\"\\u041F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435:\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\":[\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435\",\"\\u041D\\u0430\\u0447\\u0438\\u043D\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0441 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B\\u0430\",\"\\u041F\\u0440\\u043E\\u0432\\u0435\\u0440\\u044F\\u0435\\u0442, \\u043D\\u0435 \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043F\\u0440\\u043E\\u0431\\u0435\\u043B \\u043F\\u0435\\u0440\\u0435\\u0434 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0439 \\u0440\\u0435\\u043A\\u043E\\u043C\\u0435\\u043D\\u0434\\u0430\\u0446\\u0438\\u0435\\u0439 \\u043A\\u043E\\u0440\\u043E\\u0447\\u0435, \\u0447\\u0435\\u043C \\u0442\\u0435\\u043A\\u0441\\u0442, \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0435\\u043C\\u044B\\u0439 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0435\\u0439 TAB\",\"\\u0421\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u043F\\u043E\\u0434\\u0430\\u0432\\u043B\\u044F\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0434\\u043B\\u044F \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0433\\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\":[\"Inspect this in the accessible view ({0})\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\":[\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043A\\u0438 \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0433\\u043E \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430.\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043A\\u0438 \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u0433\\u043E \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430.\",\"{0} ({1})\",\"\\u041D\\u0430\\u0437\\u0430\\u0434\",\"\\u0414\\u0430\\u043B\\u0435\\u0435\"],\"vs/editor/contrib/lineSelection/browser/lineSelection\":[\"\\u0420\\u0430\\u0437\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438\"],\"vs/editor/contrib/linesOperations/browser/linesOperations\":[\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0441\\u0432\\u0435\\u0440\\u0445\\u0443\",\"&&\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u043D\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0432\\u044B\\u0448\\u0435\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0441\\u043D\\u0438\\u0437\\u0443\",\"\\u041A\\u043E\\u043F\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u043D\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 &&\\u043D\\u0438\\u0436\\u0435\",\"\\u0414\\u0443\\u0431\\u043B\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0435\",\"&&\\u0414\\u0443\\u0431\\u043B\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0435\",\"\\u041F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0432\\u0432\\u0435\\u0440\\u0445\",\"\\u041F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C \\u043D\\u0430 \\u0441&&\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0432\\u044B\\u0448\\u0435\",\"\\u041F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0432\\u043D\\u0438\\u0437\",\"&&\\u041F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C \\u043D\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u043D\\u0438\\u0436\\u0435\",\"\\u0421\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u043A\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A \\u043F\\u043E \\u0432\\u043E\\u0437\\u0440\\u0430\\u0441\\u0442\\u0430\\u043D\\u0438\\u044E\",\"\\u0421\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u043A\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A \\u043F\\u043E \\u0443\\u0431\\u044B\\u0432\\u0430\\u043D\\u0438\\u044E\",\"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0434\\u0443\\u0431\\u043B\\u0438\\u0440\\u0443\\u044E\\u0449\\u0438\\u0435\\u0441\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438\",\"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u043A\\u043E\\u043D\\u0435\\u0447\\u043D\\u044B\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B-\\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0438\\u0442\\u0435\\u043B\\u0438\",\"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443\",\"\\u0423\\u0432\\u0435\\u043B\\u0438\\u0447\\u0438\\u0442\\u044C \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\",\"\\u0423\\u043C\\u0435\\u043D\\u044C\\u0448\\u0438\\u0442\\u044C \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0432\\u044B\\u0448\\u0435\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u043D\\u0438\\u0436\\u0435\",\"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0432\\u0441\\u0435 \\u0441\\u043B\\u0435\\u0432\\u0430\",\"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0432\\u0441\\u0435 \\u0441\\u043F\\u0440\\u0430\\u0432\\u0430\",\"_\\u041E\\u0431\\u044A\\u0435\\u0434\\u0438\\u043D\\u0438\\u0442\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438\",\"\\u0422\\u0440\\u0430\\u043D\\u0441\\u043F\\u043E\\u043D\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u0432\\u043E\\u043A\\u0440\\u0443\\u0433 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430\",\"\\u041F\\u0440\\u0435\\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432 \\u0432\\u0435\\u0440\\u0445\\u043D\\u0438\\u0439 \\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\",\"\\u041F\\u0440\\u0435\\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432 \\u043D\\u0438\\u0436\\u043D\\u0438\\u0439 \\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\",\"\\u041F\\u0440\\u0435\\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432 \\u0437\\u0430\\u0433\\u043B\\u0430\\u0432\\u043D\\u044B\\u0435 \\u0431\\u0443\\u043A\\u0432\\u044B\",\"\\u041F\\u0440\\u0435\\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432 \\u043D\\u0430\\u043F\\u0438\\u0441\\u0430\\u043D\\u0438\\u0435 \\u0441 \\u043F\\u043E\\u0434\\u0447\\u0435\\u0440\\u043A\\u0438\\u0432\\u0430\\u043D\\u0438\\u044F\\u043C\\u0438\",'\\u041F\\u0440\\u0435\\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432 \"\\u0432\\u0435\\u0440\\u0431\\u043B\\u044E\\u0436\\u0438\\u0439\" \\u0441\\u0442\\u0438\\u043B\\u044C',\"\\u041F\\u0440\\u0435\\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u0432 \\u043A\\u0435\\u0431\\u0430\\u0431-\\u043A\\u0435\\u0439\\u0441\"],\"vs/editor/contrib/linkedEditing/browser/linkedEditing\":[\"\\u0417\\u0430\\u043F\\u0443\\u0441\\u0442\\u0438\\u0442\\u044C \\u0441\\u0432\\u044F\\u0437\\u0430\\u043D\\u043D\\u043E\\u0435 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043F\\u0440\\u0438 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u043C \\u043F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u0438 \\u0442\\u0438\\u043F\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u043E\\u043C.\"],\"vs/editor/contrib/links/browser/links\":[\"\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044C \\u0441\\u0441\\u044B\\u043B\\u043A\\u0443, \\u0442\\u0430\\u043A \\u043A\\u0430\\u043A \\u043E\\u043D\\u0430 \\u0438\\u043C\\u0435\\u0435\\u0442 \\u043D\\u0435\\u043F\\u0440\\u0430\\u0432\\u0438\\u043B\\u044C\\u043D\\u044B\\u0439 \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442: {0}\",\"\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044C \\u0441\\u0441\\u044B\\u043B\\u043A\\u0443, \\u0443 \\u043D\\u0435\\u0435 \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u0446\\u0435\\u043B\\u0435\\u0432\\u043E\\u0439 \\u043E\\u0431\\u044A\\u0435\\u043A\\u0442.\",\"\\u0412\\u044B\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u044C \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u0443\",\"\\u043F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043F\\u043E \\u0441\\u0441\\u044B\\u043B\\u043A\\u0435\",\"\\u041A\\u043D\\u043E\\u043F\\u043A\\u0430 CMD \\u0438 \\u0449\\u0435\\u043B\\u0447\\u043E\\u043A \\u043B\\u0435\\u0432\\u043E\\u0439 \\u043A\\u043D\\u043E\\u043F\\u043A\\u043E\\u0439 \\u043C\\u044B\\u0448\\u0438\",\"\\u041A\\u043D\\u043E\\u043F\\u043A\\u0430 CTRL \\u0438 \\u0449\\u0435\\u043B\\u0447\\u043E\\u043A \\u043B\\u0435\\u0432\\u043E\\u0439 \\u043A\\u043D\\u043E\\u043F\\u043A\\u043E\\u0439 \\u043C\\u044B\\u0448\\u0438\",\"\\u041A\\u043D\\u043E\\u043F\\u043A\\u0430 OPTION \\u0438 \\u0449\\u0435\\u043B\\u0447\\u043E\\u043A \\u043B\\u0435\\u0432\\u043E\\u0439 \\u043A\\u043D\\u043E\\u043F\\u043A\\u043E\\u0439 \\u043C\\u044B\\u0448\\u0438\",\"\\u041A\\u043D\\u043E\\u043F\\u043A\\u0430 ALT \\u0438 \\u0449\\u0435\\u043B\\u0447\\u043E\\u043A \\u043B\\u0435\\u0432\\u043E\\u0439 \\u043A\\u043D\\u043E\\u043F\\u043A\\u043E\\u0439 \\u043C\\u044B\\u0448\\u0438\",\"\\u0412\\u044B\\u043F\\u043E\\u043B\\u043D\\u0435\\u043D\\u0438\\u0435 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B {0}\",\"\\u041E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044C \\u0441\\u0441\\u044B\\u043B\\u043A\\u0443\"],\"vs/editor/contrib/message/browser/messageController\":[\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0441\\u0435\\u0439\\u0447\\u0430\\u0441 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0435\\u0435 \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u0435\"],\"vs/editor/contrib/multicursor/browser/multicursor\":[\"\\u041A\\u0443\\u0440\\u0441\\u043E\\u0440 \\u0434\\u043E\\u0431\\u0430\\u0432\\u043B\\u0435\\u043D: {0}\",\"\\u041A\\u0443\\u0440\\u0441\\u043E\\u0440\\u044B \\u0434\\u043E\\u0431\\u0430\\u0432\\u043B\\u0435\\u043D\\u044B: {0}\",\"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440 \\u0432\\u044B\\u0448\\u0435\",\"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440 &&\\u0432\\u044B\\u0448\\u0435\",\"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440 \\u043D\\u0438\\u0436\\u0435\",\"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440 &&\\u043D\\u0438\\u0436\\u0435\",\"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u044B \\u043A \\u043E\\u043A\\u043E\\u043D\\u0447\\u0430\\u043D\\u0438\\u044F\\u043C \\u0441\\u0442\\u0440\\u043E\\u043A\",\"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u044B \\u0432 &&\\u043E\\u043A\\u043E\\u043D\\u0447\\u0430\\u043D\\u0438\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\",\"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u044B \\u043D\\u0438\\u0436\\u0435\",\"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u044B \\u0432\\u044B\\u0448\\u0435\",\"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0432 \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043D\\u043E\\u0435 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0435\",\"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C &&\\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0435 \\u0432\\u0445\\u043E\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435\",\"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0439 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442 \\u0432 \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043D\\u043E\\u0435 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0435\",\"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C &&\\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u0435 \\u0432\\u0445\\u043E\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435\",\"\\u041F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u043D\\u0435\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0432 \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043D\\u043E\\u0435 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0435\",\"\\u041F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u043D\\u0438\\u0439 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0439 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442 \\u0432 \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u0435 \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043D\\u043E\\u0435 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0435\",\"\\u0412\\u044B\\u0431\\u0440\\u0430\\u0442\\u044C \\u0432\\u0441\\u0435 \\u0432\\u0445\\u043E\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F \\u043D\\u0430\\u0439\\u0434\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439\",\"\\u0412\\u044B\\u0431\\u0440\\u0430\\u0442\\u044C \\u0432\\u0441\\u0435 &&\\u0432\\u0445\\u043E\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F\",\"\\u0418\\u0437\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u0432\\u0441\\u0435 \\u0432\\u0445\\u043E\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F\",\"\\u0424\\u043E\\u043A\\u0443\\u0441\\u0438\\u0440\\u043E\\u0432\\u043A\\u0430 \\u043D\\u0430 \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u043C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0435\",\"\\u0424\\u043E\\u043A\\u0443\\u0441\\u0438\\u0440\\u0443\\u0435\\u0442\\u0441\\u044F \\u043D\\u0430 \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u043C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0435\",\"\\u0424\\u043E\\u043A\\u0443\\u0441\\u0438\\u0440\\u043E\\u0432\\u043A\\u0430 \\u043D\\u0430 \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u043C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0435\",\"\\u0424\\u043E\\u043A\\u0443\\u0441\\u0438\\u0440\\u0443\\u0435\\u0442\\u0441\\u044F \\u043D\\u0430 \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u043C \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0435\"],\"vs/editor/contrib/parameterHints/browser/parameterHints\":[\"\\u041F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043A\\u0438 \\u043A \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430\\u043C\"],\"vs/editor/contrib/parameterHints/browser/parameterHintsWidget\":[\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043A\\u0438 \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0433\\u043E \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430.\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043A\\u0438 \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u0433\\u043E \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430.\",\"{0}, \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u0435\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u0433\\u043E \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 \\u0432 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u0438 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430.\"],\"vs/editor/contrib/peekView/browser/peekView\":[\"\\u0412\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D \\u043B\\u0438 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0438\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043A\\u043E\\u0434\\u0430 \\u0432 \\u043E\\u043A\\u043D\\u043E \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430\",\"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043E\\u0431\\u043B\\u0430\\u0441\\u0442\\u0438 \\u0437\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043A\\u0430 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0437\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043A\\u0430 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0441\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0439 \\u043E \\u0437\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043A\\u0435 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 \\u0438 \\u043C\\u0430\\u0441\\u0441\\u0438\\u0432\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0435 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432 \\u043F\\u0440\\u0435\\u0434\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0443\\u0437\\u043B\\u043E\\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0435 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0443\\u0437\\u043B\\u043E\\u0432 \\u0444\\u0430\\u0439\\u043B\\u0430 \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0435 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0439 \\u0437\\u0430\\u043F\\u0438\\u0441\\u0438 \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0435 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0439 \\u0437\\u0430\\u043F\\u0438\\u0441\\u0438 \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0435 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043F\\u043E\\u043B\\u044F \\u0432 \\u043E\\u043A\\u043D\\u0435 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u044F \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u0432 \\u043E\\u043A\\u043D\\u0435 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0435 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0413\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\"],\"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\":[\"\\u0427\\u0442\\u043E\\u0431\\u044B \\u043F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435, \\u0441\\u043D\\u0430\\u0447\\u0430\\u043B\\u0430 \\u043E\\u0442\\u043A\\u0440\\u043E\\u0439\\u0442\\u0435 \\u0442\\u0435\\u043A\\u0441\\u0442\\u043E\\u0432\\u044B\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440.\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0434\\u0438\\u0442\\u0435 \\u043A \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435 {0} \\u0438 \\u0441\\u0442\\u043E\\u043B\\u0431\\u0446\\u0443 {1}.\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435 {0}.\",\"\\u0422\\u0435\\u043A\\u0443\\u0449\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430: {0}, \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B: {1}. \\u0412\\u0432\\u0435\\u0434\\u0438\\u0442\\u0435 \\u043D\\u043E\\u043C\\u0435\\u0440 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u043C\\u0435\\u0436\\u0434\\u0443 1 \\u0438 {2} \\u0434\\u043B\\u044F \\u043F\\u0435\\u0440\\u0435\\u0445\\u043E\\u0434\\u0430.\",\"\\u0422\\u0435\\u043A\\u0443\\u0449\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430: {0}, \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B: {1}. \\u0412\\u0432\\u0435\\u0434\\u0438\\u0442\\u0435 \\u043D\\u043E\\u043C\\u0435\\u0440 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0434\\u043B\\u044F \\u043F\\u0435\\u0440\\u0435\\u0445\\u043E\\u0434\\u0430.\"],\"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\":[\"\\u0427\\u0442\\u043E\\u0431\\u044B \\u043F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0443, \\u0441\\u043D\\u0430\\u0447\\u0430\\u043B\\u0430 \\u043E\\u0442\\u043A\\u0440\\u043E\\u0439\\u0442\\u0435 \\u0442\\u0435\\u043A\\u0441\\u0442\\u043E\\u0432\\u044B\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0441 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044C\\u043D\\u043E\\u0439 \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u0435\\u0439.\",\"\\u0410\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0439 \\u0442\\u0435\\u043A\\u0441\\u0442\\u043E\\u0432\\u044B\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u043D\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043E\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044C\\u043D\\u0443\\u044E \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u044E.\",\"\\u041D\\u0435\\u0442 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0430\\u044E\\u0449\\u0438\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\",\"\\u041D\\u0435\\u0442 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\",\"\\u041E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044C \\u0441\\u0431\\u043E\\u043A\\u0443\",\"\\u041E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044C \\u0432\\u043D\\u0438\\u0437\\u0443\",\"\\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B ({0})\",\"\\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u0430 ({0})\",\"\\u043C\\u0435\\u0442\\u043E\\u0434\\u044B ({0})\",\"\\u0444\\u0443\\u043D\\u043A\\u0446\\u0438\\u0438 ({0})\",\"\\u043A\\u043E\\u043D\\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u043E\\u0440\\u044B ({0})\",\"\\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u043D\\u043D\\u044B\\u0435 ({0})\",\"\\u043A\\u043B\\u0430\\u0441\\u0441\\u044B ({0})\",\"\\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u044B ({0})\",\"\\u0441\\u043E\\u0431\\u044B\\u0442\\u0438\\u044F ({0})\",\"\\u043E\\u043F\\u0435\\u0440\\u0430\\u0442\\u043E\\u0440\\u044B ({0})\",\"\\u0438\\u043D\\u0442\\u0435\\u0440\\u0444\\u0435\\u0439\\u0441\\u044B ({0})\",\"\\u043F\\u0440\\u043E\\u0441\\u0442\\u0440\\u0430\\u043D\\u0441\\u0442\\u0432\\u0430 \\u0438\\u043C\\u0435\\u043D ({0})\",\"\\u043F\\u0430\\u043A\\u0435\\u0442\\u044B ({0})\",\"\\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u044B \\u0442\\u0438\\u043F\\u0430 ({0})\",\"\\u043C\\u043E\\u0434\\u0443\\u043B\\u0438 ({0})\",\"\\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u0430 ({0})\",\"\\u043F\\u0435\\u0440\\u0435\\u0447\\u0438\\u0441\\u043B\\u0435\\u043D\\u0438\\u044F ({0})\",\"\\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 \\u043F\\u0435\\u0440\\u0435\\u0447\\u0438\\u0441\\u043B\\u0435\\u043D\\u0438\\u044F ({0})\",\"\\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 ({0})\",\"\\u0444\\u0430\\u0439\\u043B\\u044B ({0})\",\"\\u043C\\u0430\\u0441\\u0441\\u0438\\u0432\\u044B ({0})\",\"\\u0447\\u0438\\u0441\\u043B\\u0430 ({0})\",\"\\u043B\\u043E\\u0433\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F ({0})\",\"\\u043E\\u0431\\u044A\\u0435\\u043A\\u0442\\u044B ({0})\",\"\\u043A\\u043B\\u044E\\u0447\\u0438 ({0})\",\"\\u043F\\u043E\\u043B\\u044F ({0})\",\"\\u043A\\u043E\\u043D\\u0441\\u0442\\u0430\\u043D\\u0442\\u044B ({0})\"],\"vs/editor/contrib/readOnlyMessage/browser/contribution\":[\"\\u041D\\u0435 \\u0443\\u0434\\u0430\\u0435\\u0442\\u0441\\u044F \\u0432\\u043D\\u0435\\u0441\\u0442\\u0438 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u044F \\u0432\\u043E \\u0432\\u0445\\u043E\\u0434\\u043D\\u044B\\u0435 \\u0434\\u0430\\u043D\\u043D\\u044B\\u0435 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0434\\u043B\\u044F \\u0447\\u0442\\u0435\\u043D\\u0438\\u044F\",\"\\u041D\\u0435 \\u0443\\u0434\\u0430\\u0435\\u0442\\u0441\\u044F \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u044C \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0435 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0434\\u043B\\u044F \\u0447\\u0442\\u0435\\u043D\\u0438\\u044F\"],\"vs/editor/contrib/rename/browser/rename\":[\"\\u0420\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u044B \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0442.\",\"\\u041F\\u0440\\u043E\\u0438\\u0437\\u043E\\u0448\\u043B\\u0430 \\u043D\\u0435\\u0438\\u0437\\u0432\\u0435\\u0441\\u0442\\u043D\\u0430\\u044F \\u043E\\u0448\\u0438\\u0431\\u043A\\u0430 \\u043F\\u0440\\u0438 \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0438 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u043E\\u0441\\u043B\\u0435 \\u043F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F\",'\\u041F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435 \"{0}\" \\u0432 \"{1}\"',\"\\u041F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435 {0} \\u0432 {1}\",\"\\xAB{0}\\xBB \\u0443\\u0441\\u043F\\u0435\\u0448\\u043D\\u043E \\u043F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D \\u0432 \\xAB{1}\\xBB. \\u0421\\u0432\\u043E\\u0434\\u043A\\u0430: {2}\",\"\\u041E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438 \\u043F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u043D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u043F\\u0440\\u0430\\u0432\\u043A\\u0438\",\"\\u041E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438 \\u043F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u043D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u0432\\u044B\\u0447\\u0438\\u0441\\u043B\\u0438\\u0442\\u044C \\u043F\\u0440\\u0430\\u0432\\u043A\\u0438\",\"\\u041F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u0442\\u044C \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\",\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C/\\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\\u0441\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u0432\\u0430\\u0440\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0433\\u043E \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0439 \\u043F\\u0435\\u0440\\u0435\\u0434 \\u043F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\\u043C\"],\"vs/editor/contrib/rename/browser/renameInputField\":[\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u0432\\u0445\\u043E\\u0434\\u043D\\u044B\\u0445 \\u0434\\u0430\\u043D\\u043D\\u044B\\u0445\",\"\\u0412\\u0432\\u0435\\u0434\\u0438\\u0442\\u0435 \\u043D\\u043E\\u0432\\u043E\\u0435 \\u0438\\u043C\\u044F \\u0434\\u043B\\u044F \\u0432\\u0445\\u043E\\u0434\\u043D\\u044B\\u0445 \\u0434\\u0430\\u043D\\u043D\\u044B\\u0445 \\u0438 \\u043D\\u0430\\u0436\\u043C\\u0438\\u0442\\u0435 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0443 \\u0412\\u0412\\u041E\\u0414 \\u0434\\u043B\\u044F \\u043F\\u043E\\u0434\\u0442\\u0432\\u0435\\u0440\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F.\",\"\\u041D\\u0430\\u0436\\u043C\\u0438\\u0442\\u0435 {0} \\u0434\\u043B\\u044F \\u043F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F, {1} \\u0434\\u043B\\u044F \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430.\"],\"vs/editor/contrib/smartSelect/browser/smartSelect\":[\"\\u0420\\u0430\\u0437\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u044B\\u0439 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\",\"&&\\u0420\\u0430\\u0437\\u0432\\u0435\\u0440\\u043D\\u0443\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\",\"\\u0423\\u043C\\u0435\\u043D\\u044C\\u0448\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0439 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\",\"&&\\u0421\\u0436\\u0430\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\"],\"vs/editor/contrib/snippet/browser/snippetController2\":[\"\\u041D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0438\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440 \\u0432 \\u0440\\u0435\\u0436\\u0438\\u043C\\u0435 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432\",\"\\u0423\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0435\\u0442, \\u0441\\u0443\\u0449\\u0435\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0430\\u044F \\u043F\\u043E\\u0437\\u0438\\u0446\\u0438\\u044F \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438 \\u0432 \\u0440\\u0435\\u0436\\u0438\\u043C\\u0435 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432\",\"\\u0423\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u0435\\u0442, \\u0441\\u0443\\u0449\\u0435\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0430\\u044F \\u043F\\u043E\\u0437\\u0438\\u0446\\u0438\\u044F \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438 \\u0432 \\u0440\\u0435\\u0436\\u0438\\u043C\\u0435 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u043C\\u0443 \\u0437\\u0430\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044E...\"],\"vs/editor/contrib/snippet/browser/snippetVariables\":[\"\\u0432\\u043E\\u0441\\u043A\\u0440\\u0435\\u0441\\u0435\\u043D\\u044C\\u0435\",\"\\u043F\\u043E\\u043D\\u0435\\u0434\\u0435\\u043B\\u044C\\u043D\\u0438\\u043A\",\"\\u0432\\u0442\\u043E\\u0440\\u043D\\u0438\\u043A\",\"\\u0441\\u0440\\u0435\\u0434\\u0430\",\"\\u0447\\u0435\\u0442\\u0432\\u0435\\u0440\\u0433\",\"\\u043F\\u044F\\u0442\\u043D\\u0438\\u0446\\u0430\",\"\\u0441\\u0443\\u0431\\u0431\\u043E\\u0442\\u0430\",\"\\u0412\\u0441\",\"\\u041F\\u043D\",\"\\u0412\\u0442\",\"\\u0421\\u0440\",\"\\u0427\\u0442\",\"\\u041F\\u0442\",\"\\u0421\\u0431\",\"\\u042F\\u043D\\u0432\\u0430\\u0440\\u044C\",\"\\u0424\\u0435\\u0432\\u0440\\u0430\\u043B\\u044C\",\"\\u041C\\u0430\\u0440\\u0442\",\"\\u0410\\u043F\\u0440\\u0435\\u043B\\u044C\",\"\\u041C\\u0430\\u0439\",\"\\u0418\\u044E\\u043D\\u044C\",\"\\u0418\\u044E\\u043B\\u044C\",\"\\u0410\\u0432\\u0433\\u0443\\u0441\\u0442\",\"\\u0421\\u0435\\u043D\\u0442\\u044F\\u0431\\u0440\\u044C\",\"\\u041E\\u043A\\u0442\\u044F\\u0431\\u0440\\u044C\",\"\\u041D\\u043E\\u044F\\u0431\\u0440\\u044C\",\"\\u0414\\u0435\\u043A\\u0430\\u0431\\u0440\\u044C\",\"\\u042F\\u043D\\u0432\",\"\\u0424\\u0435\\u0432\",\"\\u041C\\u0430\\u0440\",\"\\u0410\\u043F\\u0440\",\"\\u041C\\u0430\\u0439\",\"\\u0418\\u044E\\u043D\",\"\\u0418\\u044E\\u043B\",\"\\u0410\\u0432\\u0433\",\"\\u0421\\u0435\\u043D\",\"\\u041E\\u043A\\u0442\",\"\\u041D\\u043E\\u044F\",\"\\u0414\\u0435\\u043A\"],\"vs/editor/contrib/stickyScroll/browser/stickyScrollActions\":[\"\\u041F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u0435 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438\",\"&&\\u041F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u0435 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438\",\"\\u0417\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u0435 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438\",\"&&\\u0417\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u0435 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438\",\"\\u0424\\u043E\\u043A\\u0443\\u0441 \\u043D\\u0430 \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u0438 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438\",\"&&\\u0424\\u043E\\u043A\\u0443\\u0441 \\u043D\\u0430 \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u0438 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438\",\"\\u0412\\u044B\\u0431\\u0440\\u0430\\u0442\\u044C \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u044F \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438\",\"\\u0412\\u044B\\u0431\\u0440\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0443\\u044E \\u0441\\u0442\\u0440\\u043E\\u043A\\u0443 \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u044F \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435 \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u044F \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438, \\u043A\\u043E\\u0442\\u043E\\u0440\\u0430\\u044F \\u043D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435\",\"\\u0412\\u044B\\u0431\\u0435\\u0440\\u0438\\u0442\\u0435 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\"],\"vs/editor/contrib/suggest/browser/suggest\":[\"\\u041D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043A\\u0430\\u043A\\u043E\\u0435-\\u043B\\u0438\\u0431\\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0441\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F \\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\\u0445\",\"\\u0421\\u0443\\u0449\\u0435\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430\",\"\\u041F\\u0440\\u0438\\u0432\\u043E\\u0434\\u0438\\u0442 \\u043B\\u0438 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0430 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0433\\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043A \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u044E \\u0438\\u043B\\u0438 \\u0432\\u0441\\u0435 \\u0443\\u0436\\u0435 \\u0431\\u044B\\u043B\\u043E \\u0432\\u0432\\u0435\\u0434\\u0435\\u043D\\u043E\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u043B\\u044F\\u044E\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 \\u0412\\u0412\\u041E\\u0414\",'\\u0415\\u0441\\u0442\\u044C \\u043B\\u0438 \\u0443 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0433\\u043E \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0432\\u0430\\u0440\\u0438\\u0430\\u043D\\u0442\\u044B \\u043F\\u043E\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F \"\\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0430\" \\u0438 \"\\u0437\\u0430\\u043C\\u0435\\u043D\\u0430\"','\\u042F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0435 \\u043F\\u043E\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435\\u043C \"\\u0432\\u0441\\u0442\\u0430\\u0432\\u043A\\u0430\" \\u0438\\u043B\\u0438 \"\\u0437\\u0430\\u043C\\u0435\\u043D\\u0430\"',\"\\u041F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0435\\u0442 \\u043B\\u0438 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0435 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0440\\u0430\\u0437\\u0440\\u0435\\u0448\\u0435\\u043D\\u0438\\u0435 \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0441\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0439\"],\"vs/editor/contrib/suggest/browser/suggestController\":['\\u041F\\u0440\\u0438\\u043D\\u044F\\u0442\\u0438\\u0435 \"{0}\" \\u043F\\u0440\\u0438\\u0432\\u0435\\u043B\\u043E \\u043A \\u0432\\u043D\\u0435\\u0441\\u0435\\u043D\\u0438\\u044E \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u043F\\u0440\\u0430\\u0432\\u043E\\u043A ({1})',\"\\u041F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C\",\"\\u0417\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\",\"\\u0417\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044C\",\"\\u043F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043C\\u0435\\u043D\\u044C\\u0448\\u0435\",\"\\u043F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u0431\\u043E\\u043B\\u044C\\u0448\\u0435\",\"\\u0421\\u0431\\u0440\\u043E\\u0441 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\"],\"vs/editor/contrib/suggest/browser/suggestWidget\":[\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u0438\\u0434\\u0436\\u0435\\u0442\\u0430 \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446 \\u0432\\u0438\\u0434\\u0436\\u0435\\u0442\\u0430 \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0439 \\u0437\\u0430\\u043F\\u0438\\u0441\\u0438 \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0437\\u043D\\u0430\\u0447\\u043A\\u0430 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0439 \\u0437\\u0430\\u043F\\u0438\\u0441\\u0438 \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0424\\u043E\\u043D\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0439 \\u0437\\u0430\\u043F\\u0438\\u0441\\u0438 \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0438\\u044F \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\\u0445 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 \\u043D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u043E\\u0441\\u0442\\u043E\\u044F\\u043D\\u0438\\u044F \\u0440\\u0435\\u043A\\u043E\\u043C\\u0435\\u043D\\u0434\\u0430\\u0446\\u0438\\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F.\",\"\\u0417\\u0430\\u0433\\u0440\\u0443\\u0437\\u043A\\u0430...\",\"\\u041F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0442.\",\"\\u041F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0438\\u0442\\u044C\",\"{0} {1}, {2}\",\"{0} {1}\",\"{0}, {1}\",\"{0}, \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u044B: {1}\"],\"vs/editor/contrib/suggest/browser/suggestWidgetDetails\":[\"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\",\"\\u0417\\u0430\\u0433\\u0440\\u0443\\u0437\\u043A\\u0430...\"],\"vs/editor/contrib/suggest/browser/suggestWidgetRenderer\":[\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043F\\u043E\\u043B\\u0443\\u0447\\u0435\\u043D\\u0438\\u044F \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0441\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u041F\\u043E\\u0434\\u0440\\u043E\\u0431\\u043D\\u0435\\u0435\"],\"vs/editor/contrib/suggest/browser/suggestWidgetStatus\":[\"{0} ({1})\"],\"vs/editor/contrib/symbolIcons/browser/symbolIcons\":[\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043C\\u0430\\u0441\\u0441\\u0438\\u0432\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043B\\u043E\\u0433\\u0438\\u0447\\u0435\\u0441\\u043A\\u0438\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043A\\u043B\\u0430\\u0441\\u0441\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0446\\u0432\\u0435\\u0442\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043A\\u043E\\u043D\\u0441\\u0442\\u0430\\u043D\\u0442\\u044B. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043A\\u043E\\u043D\\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u043E\\u0440\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043F\\u0435\\u0440\\u0435\\u0447\\u0438\\u0441\\u043B\\u0438\\u0442\\u0435\\u043B\\u044F. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0447\\u043B\\u0435\\u043D\\u0430 \\u043F\\u0435\\u0440\\u0435\\u0447\\u0438\\u0441\\u043B\\u0438\\u0442\\u0435\\u043B\\u044F. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0441\\u043E\\u0431\\u044B\\u0442\\u0438\\u044F. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043F\\u043E\\u043B\\u044F. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0444\\u0430\\u0439\\u043B\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043F\\u0430\\u043F\\u043A\\u0438. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0444\\u0443\\u043D\\u043A\\u0446\\u0438\\u0438. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0438\\u043D\\u0442\\u0435\\u0440\\u0444\\u0435\\u0439\\u0441\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043A\\u043B\\u044E\\u0447\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043A\\u043B\\u044E\\u0447\\u0435\\u0432\\u043E\\u0433\\u043E \\u0441\\u043B\\u043E\\u0432\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043C\\u0435\\u0442\\u043E\\u0434\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043C\\u043E\\u0434\\u0443\\u043B\\u044F. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043F\\u0440\\u043E\\u0441\\u0442\\u0440\\u0430\\u043D\\u0441\\u0442\\u0432\\u0430 \\u0438\\u043C\\u0435\\u043D. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 NULL. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0447\\u0438\\u0441\\u043B\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043E\\u0431\\u044A\\u0435\\u043A\\u0442\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0442\\u043E\\u0440\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043F\\u0430\\u043A\\u0435\\u0442\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0441\\u0441\\u044B\\u043B\\u043A\\u0438. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0430 \\u043A\\u043E\\u0434\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u044B. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0442\\u0438\\u043F\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0435\\u0434\\u0438\\u043D\\u0438\\u0446. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u043D\\u043D\\u043E\\u0439. \\u042D\\u0442\\u0438 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u0432 \\u0441\\u0442\\u0440\\u0443\\u043A\\u0442\\u0443\\u0440\\u0435, \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439.\"],\"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\":[\"\\u041F\\u0435\\u0440\\u0435\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0435 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 TAB \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0449\\u0430\\u0435\\u0442 \\u0444\\u043E\\u043A\\u0443\\u0441.\",\"\\u041F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 TAB \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043F\\u0435\\u0440\\u0435\\u0439\\u0434\\u0435\\u0442 \\u043D\\u0430 \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0438\\u0439 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0439 \\u043C\\u043E\\u0436\\u0435\\u0442 \\u043F\\u043E\\u043B\\u0443\\u0447\\u0438\\u0442\\u044C \\u0444\\u043E\\u043A\\u0443\\u0441\",\"\\u0422\\u0435\\u043F\\u0435\\u0440\\u044C \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 TAB \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438\"],\"vs/editor/contrib/tokenization/browser/tokenization\":[\"\\u0420\\u0430\\u0437\\u0440\\u0430\\u0431\\u043E\\u0442\\u0447\\u0438\\u043A: \\u043F\\u0440\\u0438\\u043D\\u0443\\u0434\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u0430\\u044F \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u043D\\u0430\\u044F \\u0443\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u043A\\u0430 \\u0442\\u043E\\u043A\\u0435\\u043D\\u043E\\u0432\"],\"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\":[\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A, \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u043C\\u044B\\u0439 \\u0441 \\u043F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435\\u043C \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u0440\\u0430\\u0441\\u0448\\u0438\\u0440\\u0435\\u043D\\u0438\\u0439.\",\"\\u042D\\u0442\\u043E\\u0442 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u0442 \\u043C\\u043D\\u043E\\u0433\\u043E \\u043D\\u0435\\u0441\\u0442\\u0430\\u043D\\u0434\\u0430\\u0440\\u0442\\u043D\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u042E\\u043D\\u0438\\u043A\\u043E\\u0434\\u0430 ASCII\",\"\\u042D\\u0442\\u043E\\u0442 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u0442 \\u043C\\u043D\\u043E\\u0433\\u043E \\u043D\\u0435\\u043E\\u0434\\u043D\\u043E\\u0437\\u043D\\u0430\\u0447\\u043D\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u042E\\u043D\\u0438\\u043A\\u043E\\u0434\\u0430\",\"\\u042D\\u0442\\u043E\\u0442 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u0442 \\u043C\\u043D\\u043E\\u0433\\u043E \\u043D\\u0435\\u0432\\u0438\\u0434\\u0438\\u043C\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u042E\\u043D\\u0438\\u043A\\u043E\\u0434\\u0430\",\"\\u0421\\u0438\\u043C\\u0432\\u043E\\u043B {0} \\u043C\\u043E\\u0436\\u043D\\u043E \\u0441\\u043F\\u0443\\u0442\\u0430\\u0442\\u044C \\u0441 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u043C ASCII {1}, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0439 \\u0447\\u0430\\u0449\\u0435 \\u0432\\u0441\\u0442\\u0440\\u0435\\u0447\\u0430\\u0435\\u0442\\u0441\\u044F \\u0432 \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u043E\\u043C \\u043A\\u043E\\u0434\\u0435.\",\"\\u0421\\u0438\\u043C\\u0432\\u043E\\u043B {0} \\u043C\\u043E\\u0436\\u043D\\u043E \\u0441\\u043F\\u0443\\u0442\\u0430\\u0442\\u044C \\u0441 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u043C {1}, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0439 \\u0447\\u0430\\u0449\\u0435 \\u0432\\u0441\\u0442\\u0440\\u0435\\u0447\\u0430\\u0435\\u0442\\u0441\\u044F \\u0432 \\u0438\\u0441\\u0445\\u043E\\u0434\\u043D\\u043E\\u043C \\u043A\\u043E\\u0434\\u0435.\",\"\\u0421\\u0438\\u043C\\u0432\\u043E\\u043B {0} \\u043D\\u0435\\u0432\\u0438\\u0434\\u0438\\u043C.\",\"\\u0421\\u0438\\u043C\\u0432\\u043E\\u043B {0} \\u043D\\u0435 \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u0431\\u0430\\u0437\\u043E\\u0432\\u044B\\u043C \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u043C ASCII.\",\"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0432 \\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0430\\u0440\\u0438\\u044F\\u0445\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0432 \\u043A\\u043E\\u043C\\u043C\\u0435\\u043D\\u0442\\u0430\\u0440\\u0438\\u044F\\u0445\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430\\u0445\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430\\u0445\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0435\\u043E\\u0434\\u043D\\u043E\\u0437\\u043D\\u0430\\u0447\\u043D\\u043E\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0435\\u043E\\u0434\\u043D\\u043E\\u0437\\u043D\\u0430\\u0447\\u043D\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u043D\\u0435\\u0432\\u0438\\u0434\\u0438\\u043C\\u043E\\u0435 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0435\\u0432\\u0438\\u0434\\u0438\\u043C\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435, \\u043E\\u0442\\u043B\\u0438\\u0447\\u043D\\u043E\\u0435 \\u043E\\u0442 ASCII\",\"\\u041E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0435\\u0441\\u0442\\u0430\\u043D\\u0434\\u0430\\u0440\\u0442\\u043D\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 ASCII\",\"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u044C \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u044B \\u0438\\u0441\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u044F\",\"\\u0418\\u0441\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C {0} (\\u043D\\u0435\\u0432\\u0438\\u0434\\u0438\\u043C\\u044B\\u0439 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B) \\u0438\\u0437 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F\",\"\\u0418\\u0441\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C {0} \\u0438\\u0437 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F\",'\\u0420\\u0430\\u0437\\u0440\\u0435\\u0448\\u0438\\u0442\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u042E\\u043D\\u0438\\u043A\\u043E\\u0434\\u0430, \\u0431\\u043E\\u043B\\u0435\\u0435 \\u0440\\u0430\\u0441\\u043F\\u0440\\u043E\\u0441\\u0442\\u0440\\u0430\\u043D\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0432 \\u044F\\u0437\\u044B\\u043A\\u0435 \"{0}\".',\"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u042E\\u043D\\u0438\\u043A\\u043E\\u0434\\u0430\"],\"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\":[\"\\u041D\\u0435\\u043E\\u0431\\u044B\\u0447\\u043D\\u044B\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438\",\"\\u041E\\u0431\\u043D\\u0430\\u0440\\u0443\\u0436\\u0435\\u043D\\u044B \\u043D\\u0435\\u043E\\u0431\\u044B\\u0447\\u043D\\u044B\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438\",`\\u0424\\u0430\\u0439\\u043B \"{0}\" \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u0442 \\u043E\\u0434\\u0438\\u043D \\u0438\\u043B\\u0438 \\u043D\\u0435\\u0441\\u043A\\u043E\\u043B\\u044C\\u043A\\u043E \\u043D\\u0435\\u043E\\u0431\\u044B\\u0447\\u043D\\u044B\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438, \\u0442\\u0430\\u043A\\u0438\\u0445 \\u043A\\u0430\\u043A \\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0438\\u0442\\u0435\\u043B\\u044C \\u0441\\u0442\\u0440\\u043E\\u043A (LS) \\u0438\\u043B\\u0438 \\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0438\\u0442\\u0435\\u043B\\u044C \\u0430\\u0431\\u0437\\u0430\\u0446\\u0435\\u0432 (PS).\\r\n\\r\n\\u0420\\u0435\\u043A\\u043E\\u043C\\u0435\\u043D\\u0434\\u0443\\u0435\\u0442\\u0441\\u044F \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0438\\u0445 \\u0438\\u0437 \\u0444\\u0430\\u0439\\u043B\\u0430. \\u0423\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0435 \\u044D\\u0442\\u0438\\u0445 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u043C\\u043E\\u0436\\u043D\\u043E \\u043D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0438\\u0442\\u044C \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430 \"editor.unusualLineTerminators\".`,\"&&\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u043D\\u0435\\u043E\\u0431\\u044B\\u0447\\u043D\\u044B\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u044B \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438\",\"\\u041F\\u0440\\u043E\\u043F\\u0443\\u0441\\u0442\\u0438\\u0442\\u044C\"],\"vs/editor/contrib/wordHighlighter/browser/highlightDecorations\":[\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430 \\u043F\\u0440\\u0438 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u0435 \\u043D\\u0430 \\u0447\\u0442\\u0435\\u043D\\u0438\\u0435, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u043F\\u0440\\u0438 \\u0447\\u0442\\u0435\\u043D\\u0438\\u0438 \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u043D\\u043D\\u043E\\u0439. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430 \\u0432\\u043E \\u0432\\u0440\\u0435\\u043C\\u044F \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u0430 \\u043D\\u0430 \\u0437\\u0430\\u043F\\u0438\\u0441\\u044C, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440 \\u043F\\u0440\\u0438 \\u0437\\u0430\\u043F\\u0438\\u0441\\u0438 \\u0432 \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u043D\\u043D\\u0443\\u044E. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0442\\u0435\\u043A\\u0441\\u0442\\u043E\\u0432\\u043E\\u0433\\u043E \\u0432\\u0445\\u043E\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430. \\u042D\\u0442\\u043E\\u0442 \\u0446\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0432\\u0430\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430 \\u043F\\u0440\\u0438 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u0435 \\u043D\\u0430 \\u0447\\u0442\\u0435\\u043D\\u0438\\u0435, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u043F\\u0440\\u0438 \\u0441\\u0447\\u0438\\u0442\\u044B\\u0432\\u0430\\u043D\\u0438\\u0438 \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u043D\\u043D\\u043E\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430 \\u043F\\u0440\\u0438 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u0435 \\u043D\\u0430 \\u0437\\u0430\\u043F\\u0438\\u0441\\u044C, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u043F\\u0440\\u0438 \\u0437\\u0430\\u043F\\u0438\\u0441\\u0438 \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u043D\\u043D\\u043E\\u0439. \",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0442\\u0435\\u043A\\u0441\\u0442\\u043E\\u0432\\u043E\\u0433\\u043E \\u0432\\u0445\\u043E\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u0430 \\u043E\\u0431\\u0437\\u043E\\u0440\\u043D\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432. \\u042D\\u0442\\u043E\\u0442 \\u0446\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0432\\u0430\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u0430 \\u043E\\u0431\\u0437\\u043E\\u0440\\u043D\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432 \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u0430 \\u043D\\u0430 \\u0437\\u0430\\u043F\\u0438\\u0441\\u044C. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u0430 \\u043E\\u0431\\u0437\\u043E\\u0440\\u043D\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0442\\u0435\\u043A\\u0441\\u0442\\u043E\\u0432\\u043E\\u0433\\u043E \\u0432\\u0445\\u043E\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u0430. \\u042D\\u0442\\u043E\\u0442 \\u0446\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0432\\u0430\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\"],\"vs/editor/contrib/wordHighlighter/browser/wordHighlighter\":[\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u043C\\u0443 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432\",\"\\u041F\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043A \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u043C\\u0443 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044E \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432\",\"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0438\\u043B\\u0438 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u0432\"],\"vs/editor/contrib/wordOperations/browser/wordOperations\":[\"\\u0423\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0441\\u043B\\u043E\\u0432\\u043E\"],\"vs/platform/action/common/actionCommonCategories\":[\"\\u041F\\u0440\\u0435\\u0434\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435\",\"\\u0421\\u043F\\u0440\\u0430\\u0432\\u043A\\u0430\",\"\\u0422\\u0435\\u0441\\u0442\",\"\\u0424\\u0430\\u0439\\u043B\",\"\\u041F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u044B\",\"\\u0420\\u0430\\u0437\\u0440\\u0430\\u0431\\u043E\\u0442\\u0447\\u0438\\u043A\"],\"vs/platform/actionWidget/browser/actionList\":[\"{0}, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C, {1} \\u0434\\u043B\\u044F \\u043F\\u0440\\u0435\\u0434\\u0432\\u0430\\u0440\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0433\\u043E \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440\\u0430\",\"{0}, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\",\"{0}, \\u043F\\u0440\\u0438\\u0447\\u0438\\u043D\\u0430 \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u044F: {1}\",\"\\u041C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0439\"],\"vs/platform/actionWidget/browser/actionWidget\":[\"Background color for toggled action items in action bar.\",\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0441\\u043F\\u0438\\u0441\\u043E\\u043A \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0439\",\"\\u0421\\u043A\\u0440\\u044B\\u0442\\u044C \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F\",\"\\u0412\\u044B\\u0431\\u0440\\u0430\\u0442\\u044C \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435\",\"\\u0412\\u044B\\u0431\\u0440\\u0430\\u0442\\u044C \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435\",\"\\u041F\\u0440\\u0438\\u043D\\u044F\\u0442\\u044C \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0435 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435\",\"\\u041F\\u0440\\u0435\\u0434\\u0432\\u0430\\u0440\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0439 \\u043F\\u0440\\u043E\\u0441\\u043C\\u043E\\u0442\\u0440 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F\"],\"vs/platform/actions/browser/menuEntryActionViewItem\":[\"{0} ({1})\",\"{0} ({1})\",`{0}\\r\n[{1}] {2}`],\"vs/platform/actions/browser/toolbar\":[\"\\u0421\\u043A\\u0440\\u044B\\u0442\\u044C\",\"\\u0421\\u0431\\u0440\\u043E\\u0441\\u0438\\u0442\\u044C \\u043C\\u0435\\u043D\\u044E\"],\"vs/platform/actions/common/menuService\":['\\u0421\\u043A\\u0440\\u044B\\u0442\\u044C \"{0}\"'],\"vs/platform/audioCues/browser/audioCueService\":[\"\\u041E\\u0448\\u0438\\u0431\\u043A\\u0430 \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435\",\"\\u041F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435\",\"\\u0421\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u0430\\u044F \\u043E\\u0431\\u043B\\u0430\\u0441\\u0442\\u044C \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435\",\"\\u0422\\u043E\\u0447\\u043A\\u0430 \\u043E\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u0430 \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435\",\"\\u0412\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u0430\\u044F \\u0440\\u0435\\u043A\\u043E\\u043C\\u0435\\u043D\\u0434\\u0430\\u0446\\u0438\\u044F \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435\",\"\\u0411\\u044B\\u0441\\u0442\\u0440\\u043E\\u0435 \\u0438\\u0441\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0442\\u0435\\u0440\\u043C\\u0438\\u043D\\u0430\\u043B\\u0430\",\"\\u041E\\u0442\\u043B\\u0430\\u0434\\u0447\\u0438\\u043A \\u043E\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u043B\\u0435\\u043D \\u0432 \\u0442\\u043E\\u0447\\u043A\\u0435 \\u043E\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u0430\",\"\\u041E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0438\\u0435 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0445 \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043E\\u043A \\u0432 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0435\",\"\\u0417\\u0430\\u0434\\u0430\\u0447\\u0430 \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0430\",\"\\u0421\\u0431\\u043E\\u0439 \\u0437\\u0430\\u0434\\u0430\\u0447\\u0438\",\"\\u0421\\u0431\\u043E\\u0439 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B \\u0442\\u0435\\u0440\\u043C\\u0438\\u043D\\u0430\\u043B\\u0430\",\"\\u0417\\u0432\\u043E\\u043D\\u043E\\u043A \\u0442\\u0435\\u0440\\u043C\\u0438\\u043D\\u0430\\u043B\\u0430\",\"\\u042F\\u0447\\u0435\\u0439\\u043A\\u0430 \\u0437\\u0430\\u043F\\u0438\\u0441\\u043D\\u043E\\u0439 \\u043A\\u043D\\u0438\\u0436\\u043A\\u0438 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u0435\\u043D\\u0430\",\"\\u0421\\u0431\\u043E\\u0439 \\u044F\\u0447\\u0435\\u0439\\u043A\\u0438 \\u0437\\u0430\\u043F\\u0438\\u0441\\u043D\\u043E\\u0439 \\u043A\\u043D\\u0438\\u0436\\u043A\\u0438\",\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u0430 \\u0440\\u0430\\u0437\\u043D\\u043E\\u0441\\u0442\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430\",\"\\u0423\\u0434\\u0430\\u043B\\u0435\\u043D\\u0430 \\u0440\\u0430\\u0437\\u043D\\u043E\\u0441\\u0442\\u043D\\u0430\\u044F \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430\",\"\\u0418\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0430 \\u0440\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u0439\",\"\\u041E\\u0442\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D \\u0437\\u0430\\u043F\\u0440\\u043E\\u0441 \\u043D\\u0430 \\u0447\\u0430\\u0442\",\"\\u041F\\u043E\\u043B\\u0443\\u0447\\u0435\\u043D \\u043E\\u0442\\u0432\\u0435\\u0442 \\u0447\\u0430\\u0442\\u0430\",\"\\u041E\\u0436\\u0438\\u0434\\u0430\\u043D\\u0438\\u0435 \\u043E\\u0442\\u0432\\u0435\\u0442\\u0430 \\u0447\\u0430\\u0442\\u0430\"],\"vs/platform/configuration/common/configurationRegistry\":[\"\\u041F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u043A\\u043E\\u043D\\u0444\\u0438\\u0433\\u0443\\u0440\\u0430\\u0446\\u0438\\u0438 \\u044F\\u0437\\u044B\\u043A\\u0430 \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E\",\"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0430 \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u043C\\u044B\\u0445 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432 \\u0434\\u043B\\u044F \\u044F\\u0437\\u044B\\u043A\\u0430 {0}.\",\"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430, \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u043C\\u044B\\u0445 \\u0434\\u043B\\u044F \\u044F\\u0437\\u044B\\u043A\\u0430.\",\"\\u042D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043D\\u0435 \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0435\\u0442 \\u043D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0443 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0434\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u044F\\u0437\\u044B\\u043A\\u043E\\u0432.\",\"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0430 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430, \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u043C\\u044B\\u0445 \\u0434\\u043B\\u044F \\u044F\\u0437\\u044B\\u043A\\u0430.\",\"\\u042D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043D\\u0435 \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0435\\u0442 \\u043D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0443 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0434\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u044F\\u0437\\u044B\\u043A\\u043E\\u0432.\",\"\\u041D\\u0435 \\u0443\\u0434\\u0430\\u0435\\u0442\\u0441\\u044F \\u0437\\u0430\\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u043F\\u0443\\u0441\\u0442\\u043E\\u0435 \\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u043E\",`\\u041D\\u0435\\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E \\u0437\\u0430\\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \"{0}\". \\u041E\\u043D\\u043E \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u0448\\u0430\\u0431\\u043B\\u043E\\u043D\\u0443 \\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u0430 '\\\\\\\\[.*\\\\\\\\]$' \\u0434\\u043B\\u044F \\u043E\\u043F\\u0438\\u0441\\u0430\\u043D\\u0438\\u044F \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430, \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u043C\\u044B\\u0445 \\u044F\\u0437\\u044B\\u043A\\u043E\\u043C. \\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \\u0443\\u0447\\u0430\\u0441\\u0442\\u0438\\u0435 configurationDefaults.`,'\\u041D\\u0435\\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E \\u0437\\u0430\\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \"{0}\". \\u042D\\u0442\\u043E \\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u043E \\u0443\\u0436\\u0435 \\u0437\\u0430\\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u043E.','\\u041D\\u0435\\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E \\u0437\\u0430\\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \"{0}\". \\u0423\\u0436\\u0435 \\u0438\\u043C\\u0435\\u0435\\u0442\\u0441\\u044F \\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0430\\u0446\\u0438\\u044F {2} \\u0434\\u043B\\u044F \\u0441\\u0432\\u044F\\u0437\\u0430\\u043D\\u043D\\u043E\\u0439 \\u043F\\u043E\\u043B\\u0438\\u0442\\u0438\\u043A\\u0438 {1}.'],\"vs/platform/contextkey/browser/contextKeyService\":[\"\\u041A\\u043E\\u043C\\u0430\\u043D\\u0434\\u0430, \\u0432\\u043E\\u0437\\u0432\\u0440\\u0430\\u0449\\u0430\\u044E\\u0449\\u0430\\u044F \\u0441\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F \\u043E \\u043A\\u043B\\u044E\\u0447\\u0430\\u0445 \\u043A\\u043E\\u043D\\u0442\\u0435\\u043A\\u0441\\u0442\\u0430\"],\"vs/platform/contextkey/common/contextkey\":[\"\\u041F\\u0443\\u0441\\u0442\\u043E\\u0435 \\u0432\\u044B\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0435 \\u043A\\u043B\\u044E\\u0447\\u0430 \\u043A\\u043E\\u043D\\u0442\\u0435\\u043A\\u0441\\u0442\\u0430\",'\\u0412\\u044B \\u0437\\u0430\\u0431\\u044B\\u043B\\u0438 \\u0437\\u0430\\u043F\\u0438\\u0441\\u0430\\u0442\\u044C \\u0432\\u044B\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u0435? \\u0412\\u044B \\u0442\\u0430\\u043A\\u0436\\u0435 \\u043C\\u043E\\u0436\\u0435\\u0442\\u0435 \\u043F\\u043E\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C \"false\" \\u0438\\u043B\\u0438 \"true\", \\u0447\\u0442\\u043E\\u0431\\u044B \\u0432\\u0441\\u0435\\u0433\\u0434\\u0430 \\u043E\\u0446\\u0435\\u043D\\u0438\\u0432\\u0430\\u0442\\u044C \\u043F\\u043E \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044E false \\u0438\\u043B\\u0438 true \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0435\\u043D\\u043D\\u043E.','\"in\" \\u043F\\u043E\\u0441\\u043B\\u0435 \"not\".','\\u0437\\u0430\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0430\\u044F \\u043A\\u0440\\u0443\\u0433\\u043B\\u0430\\u044F \\u0441\\u043A\\u043E\\u0431\\u043A\\u0430 \")\"',\"\\u041D\\u0435\\u043F\\u0440\\u0435\\u0434\\u0432\\u0438\\u0434\\u0435\\u043D\\u043D\\u044B\\u0439 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\",\"\\u0412\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E, \\u0432\\u044B \\u0437\\u0430\\u0431\\u044B\\u043B\\u0438 \\u043F\\u043E\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C && \\u0438\\u043B\\u0438 || \\u043F\\u0435\\u0440\\u0435\\u0434 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u043E\\u043C?\",\"\\u041D\\u0435\\u043E\\u0436\\u0438\\u0434\\u0430\\u043D\\u043D\\u044B\\u0439 \\u043A\\u043E\\u043D\\u0435\\u0446 \\u0432\\u044B\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F\",\"\\u0412\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E, \\u0432\\u044B \\u0437\\u0430\\u0431\\u044B\\u043B\\u0438 \\u043F\\u043E\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u044C \\u043A\\u043B\\u044E\\u0447 \\u043A\\u043E\\u043D\\u0442\\u0435\\u043A\\u0441\\u0442\\u0430?\",`\\u041E\\u0436\\u0438\\u0434\\u0430\\u0435\\u0442\\u0441\\u044F: {0}\\r\n\\u041F\\u043E\\u043B\\u0443\\u0447\\u0435\\u043D\\u043E: \"{1}\".`],\"vs/platform/contextkey/common/contextkeys\":[\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u0430\\u044F \\u0441\\u0438\\u0441\\u0442\\u0435\\u043C\\u0430 macOS\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u0430\\u044F \\u0441\\u0438\\u0441\\u0442\\u0435\\u043C\\u0430 Linux\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u0430\\u044F \\u0441\\u0438\\u0441\\u0442\\u0435\\u043C\\u0430 Windows\",\"\\u042F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043F\\u043B\\u0430\\u0442\\u0444\\u043E\\u0440\\u043C\\u0430 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u043D\\u043E\\u0439\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u0430\\u044F \\u0441\\u0438\\u0441\\u0442\\u0435\\u043C\\u0430 macOS \\u043D\\u0430 \\u043F\\u043B\\u0430\\u0442\\u0444\\u043E\\u0440\\u043C\\u0435, \\u043E\\u0442\\u043B\\u0438\\u0447\\u043D\\u043E\\u0439 \\u043E\\u0442 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u043D\\u043E\\u0439\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u0430\\u044F \\u0441\\u0438\\u0441\\u0442\\u0435\\u043C\\u0430 IOS\",\"\\u042F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043F\\u043B\\u0430\\u0442\\u0444\\u043E\\u0440\\u043C\\u0430 \\u043C\\u043E\\u0431\\u0438\\u043B\\u044C\\u043D\\u044B\\u043C \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u043E\\u043C\",\"\\u0422\\u0438\\u043F \\u043A\\u0430\\u0447\\u0435\\u0441\\u0442\\u0432\\u0430 VS Code\",\"\\u041D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u043B\\u0438 \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B \\u0432 \\u043F\\u043E\\u043B\\u0435 \\u0432\\u0432\\u043E\\u0434\\u0430\"],\"vs/platform/contextkey/common/scanner\":[\"\\u0412\\u044B \\u0438\\u043C\\u0435\\u043B\\u0438 \\u0432 \\u0432\\u0438\\u0434\\u0443 {0}?\",\"\\u0412\\u044B \\u0438\\u043C\\u0435\\u043B\\u0438 \\u0432 \\u0432\\u0438\\u0434\\u0443 {0} \\u0438\\u043B\\u0438 {1}?\",\"\\u0412\\u044B \\u0438\\u043C\\u0435\\u043B\\u0438 \\u0432 \\u0432\\u0438\\u0434\\u0443 {0}, {1} \\u0438\\u043B\\u0438 {2}?\",\"\\u0412\\u044B \\u0437\\u0430\\u0431\\u044B\\u043B\\u0438 \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044C \\u0438\\u043B\\u0438 \\u0437\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C \\u0446\\u0438\\u0442\\u0430\\u0442\\u0443?\",'\\u0412\\u044B \\u0437\\u0430\\u0431\\u044B\\u043B\\u0438 \\u044D\\u043A\\u0440\\u0430\\u043D\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B \"/\" (\\u043A\\u043E\\u0441\\u0430\\u044F \\u0447\\u0435\\u0440\\u0442\\u0430)? \\u0427\\u0442\\u043E\\u0431\\u044B \\u044D\\u043A\\u0440\\u0430\\u043D\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C, \\u043F\\u043E\\u043C\\u0435\\u0441\\u0442\\u0438\\u0442\\u0435 \\u043F\\u0435\\u0440\\u0435\\u0434 \\u0441\\u0438\\u043C\\u0432\\u043E\\u043B\\u043E\\u043C \\u0434\\u0432\\u0435 \\u043E\\u0431\\u0440\\u0430\\u0442\\u043D\\u044B\\u0435 \\u043A\\u043E\\u0441\\u044B\\u0435 \\u0447\\u0435\\u0440\\u0442\\u044B, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440 \"\\\\\\\\/\".'],\"vs/platform/history/browser/contextScopedHistoryWidget\":[\"\\u041E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043F\\u0440\\u0435\\u0434\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\"],\"vs/platform/keybinding/common/abstractKeybindingService\":[\"\\u0411\\u044B\\u043B\\u0430 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0430 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0430 {0}. \\u041E\\u0436\\u0438\\u0434\\u0430\\u043D\\u0438\\u0435 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u044F \\u0432\\u0442\\u043E\\u0440\\u043E\\u0439 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F...\",\"\\u0411\\u044B\\u043B\\u0430 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0430 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0430 ({0}). \\u041E\\u0436\\u0438\\u0434\\u0430\\u043D\\u0438\\u0435 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u044F \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u0439 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F...\",\"\\u0421\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u0435 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448 ({0} \\u0438 {1}) \\u043D\\u0435 \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u043E\\u0439.\",\"\\u0421\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u0435 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448 ({0} \\u0438 {1}) \\u043D\\u0435 \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u043E\\u0439.\"],\"vs/platform/list/browser/listService\":[\"\\u0420\\u0430\\u0431\\u043E\\u0447\\u0435\\u0435 \\u043C\\u0435\\u0441\\u0442\\u043E\",\"\\u0421\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0435 CTRL \\u0432 Windows \\u0438 Linux \\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0435 COMMAND \\u0432 macOS.\",\"\\u0421\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0435 ALT \\u0432 Windows \\u0438 Linux \\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0435 OPTION \\u0432 macOS.\",'\\u041C\\u043E\\u0434\\u0438\\u0444\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0439 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u0434\\u043B\\u044F \\u0434\\u043E\\u0431\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u0432 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u044F\\u0445 \\u0438 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430\\u0445 \\u0432 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 \\u043C\\u043D\\u043E\\u0436\\u0435\\u0441\\u0442\\u0432\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043C\\u044B\\u0448\\u0438 (\\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u0432 \\u043F\\u0440\\u043E\\u0432\\u043E\\u0434\\u043D\\u0438\\u043A\\u0435, \\u0432 \\u043E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044B\\u0445 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\\u0445 \\u0438 \\u0432 \\u043F\\u0440\\u0435\\u0434\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0438 scm). \\u0416\\u0435\\u0441\\u0442\\u044B \\u043C\\u044B\\u0448\\u0438 \"\\u041E\\u0442\\u043A\\u0440\\u044B\\u0442\\u044C \\u0441\\u0431\\u043E\\u043A\\u0443\" (\\u0435\\u0441\\u043B\\u0438 \\u043E\\u043D\\u0438 \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u044E\\u0442\\u0441\\u044F) \\u0431\\u0443\\u0434\\u0443\\u0442 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u044B \\u0442\\u0430\\u043A\\u0438\\u043C \\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043E\\u043D\\u0438 \\u043D\\u0435 \\u043A\\u043E\\u043D\\u0444\\u043B\\u0438\\u043A\\u0442\\u043E\\u0432\\u0430\\u043B\\u0438 \\u0441 \\u043C\\u043E\\u0434\\u0438\\u0444\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440\\u043E\\u043C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 \\u043C\\u043D\\u043E\\u0436\\u0435\\u0441\\u0442\\u0432\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430.',\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043C, \\u043A\\u0430\\u043A \\u043E\\u0442\\u043A\\u0440\\u044B\\u0432\\u0430\\u0442\\u044C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u0432 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u044F\\u0445 \\u0438 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430\\u0445 \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043C\\u044B\\u0448\\u0438 (\\u0435\\u0441\\u043B\\u0438 \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0435\\u0442\\u0441\\u044F). \\u041E\\u0431\\u0440\\u0430\\u0442\\u0438\\u0442\\u0435 \\u0432\\u043D\\u0438\\u043C\\u0430\\u043D\\u0438\\u0435, \\u0447\\u0442\\u043E \\u044D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043C\\u043E\\u0436\\u0435\\u0442 \\u0438\\u0433\\u043D\\u043E\\u0440\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u0432 \\u043D\\u0435\\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0445 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u044F\\u0445 \\u0438 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430\\u0445, \\u0435\\u0441\\u043B\\u0438 \\u043E\\u043D \\u043D\\u0435 \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u043A \\u043D\\u0438\\u043C.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u044E\\u0442 \\u043B\\u0438 \\u0433\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u044C\\u043D\\u0443\\u044E \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0443 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0438 \\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u044F \\u043D\\u0430 \\u0440\\u0430\\u0431\\u043E\\u0447\\u0435\\u043C \\u043C\\u0435\\u0441\\u0442\\u0435. \\u041F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435! \\u0412\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u0438\\u0435 \\u044D\\u0442\\u043E\\u0433\\u043E \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u0430 \\u043C\\u043E\\u0436\\u0435\\u0442 \\u043F\\u043E\\u0432\\u043B\\u0438\\u044F\\u0442\\u044C \\u043D\\u0430 \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u043E\\u0434\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0441\\u0442\\u044C.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u0441\\u043B\\u0435\\u0434\\u0443\\u0435\\u0442 \\u043B\\u0438 \\u0449\\u0435\\u043B\\u043A\\u0430\\u0442\\u044C \\u043F\\u043E\\u043B\\u043E\\u0441\\u0443 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u043F\\u043E\\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0447\\u043D\\u043E.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F \\u0434\\u043B\\u044F \\u0434\\u0435\\u0440\\u0435\\u0432\\u0430 \\u0432 \\u043F\\u0438\\u043A\\u0441\\u0435\\u043B\\u044F\\u0445.\",\"\\u041E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442, \\u043D\\u0443\\u0436\\u043D\\u043E \\u043B\\u0438 \\u0432 \\u0434\\u0435\\u0440\\u0435\\u0432\\u0435 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0435 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043C, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u043B\\u0438 \\u043F\\u043B\\u0430\\u0432\\u043D\\u0430\\u044F \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0430 \\u0434\\u043B\\u044F \\u0441\\u043F\\u0438\\u0441\\u043A\\u043E\\u0432 \\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u0435\\u0432.\",\"\\u041C\\u043D\\u043E\\u0436\\u0438\\u0442\\u0435\\u043B\\u044C, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0434\\u043B\\u044F \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432 deltaX \\u0438 deltaY \\u0441\\u043E\\u0431\\u044B\\u0442\\u0438\\u0439 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u043A\\u043E\\u043B\\u0435\\u0441\\u0438\\u043A\\u0430 \\u043C\\u044B\\u0448\\u0438.\",\"\\u041A\\u043E\\u044D\\u0444\\u0444\\u0438\\u0446\\u0438\\u0435\\u043D\\u0442 \\u0443\\u0432\\u0435\\u043B\\u0438\\u0447\\u0435\\u043D\\u0438\\u044F \\u0441\\u043A\\u043E\\u0440\\u043E\\u0441\\u0442\\u0438 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0438 ALT.\",\"\\u041F\\u0440\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0435 \\u043D\\u0435\\u043E\\u0431\\u0445\\u043E\\u0434\\u0438\\u043C\\u043E \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u0442\\u044C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B. \\u041F\\u0440\\u0438 \\u0434\\u0430\\u043B\\u044C\\u043D\\u0435\\u0439\\u0448\\u0435\\u0439 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0432\\u0432\\u0435\\u0440\\u0445 \\u0438 \\u0432\\u043D\\u0438\\u0437 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u043E\\u0431\\u0445\\u043E\\u0434 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432.\",\"\\u0424\\u0438\\u043B\\u044C\\u0442\\u0440\\u0443\\u0439\\u0442\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043F\\u0440\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0435.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0440\\u0435\\u0436\\u0438\\u043C\\u043E\\u043C \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E \\u0434\\u043B\\u044F \\u0441\\u043F\\u0438\\u0441\\u043A\\u043E\\u0432 \\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u0435\\u0432 \\u0432 Workbench.\",\"\\u041F\\u0440\\u043E \\u043F\\u0440\\u043E\\u0441\\u0442\\u043E\\u0439 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B \\u0432\\u044B\\u0431\\u0438\\u0440\\u0430\\u044E\\u0442\\u0441\\u044F \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B, \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0449\\u0438\\u0435 \\u0432\\u0432\\u043E\\u0434\\u0438\\u043C\\u044B\\u043C \\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B \\u0434\\u0430\\u043D\\u043D\\u044B\\u043C. \\u0421\\u043E\\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043E\\u0441\\u0443\\u0449\\u0435\\u0441\\u0442\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u043F\\u043E \\u043F\\u0440\\u0435\\u0444\\u0438\\u043A\\u0441\\u0430\\u043C.\",\"\\u0424\\u0443\\u043D\\u043A\\u0446\\u0438\\u044F \\u043F\\u043E\\u0434\\u0441\\u0432\\u0435\\u0442\\u043A\\u0438 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B \\u0432\\u044B\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B, \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0449\\u0438\\u0435 \\u0432\\u0432\\u043E\\u0434\\u0438\\u043C\\u044B\\u043C \\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B \\u0434\\u0430\\u043D\\u043D\\u044B\\u043C. \\u041F\\u0440\\u0438 \\u0434\\u0430\\u043B\\u044C\\u043D\\u0435\\u0439\\u0448\\u0435\\u0439 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0432\\u0432\\u0435\\u0440\\u0445 \\u0438 \\u0432\\u043D\\u0438\\u0437 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u043E\\u0431\\u0445\\u043E\\u0434 \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432.\",\"\\u0424\\u0438\\u043B\\u044C\\u0442\\u0440 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B \\u043F\\u043E\\u0437\\u0432\\u043E\\u043B\\u044F\\u0435\\u0442 \\u043E\\u0442\\u0444\\u0438\\u043B\\u044C\\u0442\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C \\u0438 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0432\\u0441\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B, \\u043D\\u0435 \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0449\\u0438\\u0435 \\u0432\\u0432\\u043E\\u0434\\u0438\\u043C\\u044B\\u043C \\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B \\u0434\\u0430\\u043D\\u043D\\u044B\\u043C.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0441\\u0442\\u0438\\u043B\\u0435\\u043C \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438 \\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B \\u0434\\u043B\\u044F \\u0441\\u043F\\u0438\\u0441\\u043A\\u043E\\u0432 \\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u0435\\u0432 \\u0432 Workbench. \\u0414\\u043E\\u0441\\u0442\\u0443\\u043F\\u0435\\u043D \\u043F\\u0440\\u043E\\u0441\\u0442\\u043E\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043C, \\u0440\\u0435\\u0436\\u0438\\u043C \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0438 \\u0440\\u0435\\u0436\\u0438\\u043C \\u0444\\u0438\\u043B\\u044C\\u0442\\u0440\\u0430\\u0446\\u0438\\u0438.\",'\\u0412\\u043C\\u0435\\u0441\\u0442\\u043E \\u044D\\u0442\\u043E\\u0433\\u043E \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0439\\u0442\\u0435 \"workbench.list.defaultFindMode\" \\u0438 \"workbench.list.typeNavigationMode\".',\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u043D\\u0435\\u0447\\u0435\\u0442\\u043A\\u043E\\u0435 \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0438\\u0435 \\u043F\\u0440\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0435.\",\"\\u0418\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u0435\\u0440\\u044B\\u0432\\u043D\\u043E\\u0435 \\u0441\\u043E\\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043F\\u0440\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0435.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0438\\u043F\\u043E\\u043C \\u0441\\u043E\\u043F\\u043E\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u043C \\u043F\\u0440\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0435 \\u0441\\u043F\\u0438\\u0441\\u043A\\u043E\\u0432 \\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u0435\\u0432 \\u0432 Workbench.\",\"\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u0442\\u0435\\u043C, \\u043A\\u0430\\u043A \\u043F\\u0430\\u043F\\u043A\\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u0430 \\u0440\\u0430\\u0437\\u0432\\u043E\\u0440\\u0430\\u0447\\u0438\\u0432\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0436\\u0430\\u0442\\u0438\\u0438 \\u043D\\u0430 \\u0438\\u043C\\u0435\\u043D\\u0430 \\u043F\\u0430\\u043F\\u043E\\u043A. \\u041E\\u0431\\u0440\\u0430\\u0442\\u0438\\u0442\\u0435 \\u0432\\u043D\\u0438\\u043C\\u0430\\u043D\\u0438\\u0435, \\u0447\\u0442\\u043E \\u044D\\u0442\\u043E\\u0442 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043C\\u043E\\u0436\\u0435\\u0442 \\u0438\\u0433\\u043D\\u043E\\u0440\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C\\u0441\\u044F \\u0432 \\u043D\\u0435\\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0445 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u044F\\u0445 \\u0438 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430\\u0445, \\u0435\\u0441\\u043B\\u0438 \\u043E\\u043D \\u043D\\u0435 \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u043A \\u043D\\u0438\\u043C.\",'\\u0423\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u0435\\u0442 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0435\\u0439 \\u043F\\u043E \\u0442\\u0438\\u043F\\u0430\\u043C \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430\\u0445 \\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u044F\\u0445 \\u0432 \\u0440\\u0430\\u0431\\u043E\\u0447\\u0435\\u0439 \\u0441\\u0440\\u0435\\u0434\\u0435. \\u0415\\u0441\\u043B\\u0438 \\u0443\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u043B\\u0435\\u043D\\u043E \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435 \"\\u0442\\u0440\\u0438\\u0433\\u0433\\u0435\\u0440\", \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u044F \\u043F\\u043E \\u0442\\u0438\\u043F\\u0443 \\u043D\\u0430\\u0447\\u0438\\u043D\\u0430\\u0435\\u0442\\u0441\\u044F \\u043F\\u043E\\u0441\\u043B\\u0435 \\u0437\\u0430\\u043F\\u0443\\u0441\\u043A\\u0430 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B \"list.triggerTypeNavigation\".'],\"vs/platform/markers/common/markers\":[\"\\u041E\\u0448\\u0438\\u0431\\u043A\\u0430\",\"\\u041F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435\",\"\\u0418\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u044F\"],\"vs/platform/quickinput/browser/commandsQuickAccess\":[\"\\u043D\\u0435\\u0434\\u0430\\u0432\\u043D\\u043E \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u043D\\u043D\\u044B\\u0435\",\"\\u0447\\u0430\\u0441\\u0442\\u043E \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0435\",\"\\u0434\\u0440\\u0443\\u0433\\u0438\\u0435 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u044B\",\"{0}, {1}\",'\\u041A\\u043E\\u043C\\u0430\\u043D\\u0434\\u0430 \"{0}\" \\u043F\\u0440\\u0438\\u0432\\u0435\\u043B\\u0430 \\u043A \\u043E\\u0448\\u0438\\u0431\\u043A\\u0435'],\"vs/platform/quickinput/browser/helpQuickAccess\":[\"{0}, {1}\"],\"vs/platform/quickinput/browser/quickInput\":[\"\\u041D\\u0430\\u0437\\u0430\\u0434\",\"\\u041D\\u0430\\u0436\\u043C\\u0438\\u0442\\u0435 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448\\u0443 \\u0412\\u0412\\u041E\\u0414, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043F\\u043E\\u0434\\u0442\\u0432\\u0435\\u0440\\u0434\\u0438\\u0442\\u044C \\u0432\\u0432\\u0435\\u0434\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0434\\u0430\\u043D\\u043D\\u044B\\u0435, \\u0438\\u043B\\u0438 ESCAPE \\u0434\\u043B\\u044F \\u043E\\u0442\\u043C\\u0435\\u043D\\u044B\",\"{0} / {1}\",\"\\u0412\\u0432\\u0435\\u0434\\u0438\\u0442\\u0435 \\u0442\\u0435\\u043A\\u0441\\u0442, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0443\\u043C\\u0435\\u043D\\u044C\\u0448\\u0438\\u0442\\u044C \\u0447\\u0438\\u0441\\u043B\\u043E \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432.\"],\"vs/platform/quickinput/browser/quickInputController\":[\"Toggle all checkboxes\",\"{0} Results\",\"{0} Selected\",\"OK\",\"Custom\",\"Back ({0})\",\"Back\"],\"vs/platform/quickinput/browser/quickInputList\":[\"\\u0411\\u044B\\u0441\\u0442\\u0440\\u044B\\u0439 \\u0432\\u0432\\u043E\\u0434\"],\"vs/platform/quickinput/browser/quickInputUtils\":['\\u0429\\u0435\\u043B\\u043A\\u043D\\u0438\\u0442\\u0435, \\u0447\\u0442\\u043E\\u0431\\u044B \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u044C \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434\\u0443 \"{0}\"'],\"vs/platform/theme/common/colorRegistry\":[\"\\u041E\\u0431\\u0449\\u0438\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430. \\u042D\\u0442\\u043E\\u0442 \\u0446\\u0432\\u0435\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F, \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0435\\u0441\\u043B\\u0438 \\u0435\\u0433\\u043E \\u043D\\u0435 \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0438\\u0442 \\u043A\\u043E\\u043C\\u043F\\u043E\\u043D\\u0435\\u043D\\u0442.\",\"\\u041E\\u0431\\u0449\\u0438\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043E\\u0442\\u043A\\u043B\\u044E\\u0447\\u0435\\u043D\\u043D\\u044B\\u0445 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432. \\u042D\\u0442\\u043E\\u0442 \\u0446\\u0432\\u0435\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u0435\\u0441\\u043B\\u0438 \\u043E\\u043D \\u043D\\u0435 \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D \\u043A\\u043E\\u043C\\u043F\\u043E\\u043D\\u0435\\u043D\\u0442\\u043E\\u043C.\",\"\\u041E\\u0431\\u0449\\u0438\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u0439 \\u043E\\u0431 \\u043E\\u0448\\u0438\\u0431\\u043A\\u0430\\u0445. \\u042D\\u0442\\u043E\\u0442 \\u0446\\u0432\\u0435\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0435\\u0441\\u043B\\u0438 \\u0435\\u0433\\u043E \\u043D\\u0435 \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u043A\\u043E\\u043C\\u043F\\u043E\\u043D\\u0435\\u043D\\u0442.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430, \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0430\\u0449\\u0435\\u0433\\u043E \\u043F\\u043E\\u044F\\u0441\\u043D\\u0435\\u043D\\u0438\\u044F, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u0434\\u043B\\u044F \\u043C\\u0435\\u0442\\u043A\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E \\u0434\\u043B\\u044F \\u0437\\u043D\\u0430\\u0447\\u043A\\u043E\\u0432 \\u043D\\u0430 \\u0440\\u0430\\u0431\\u043E\\u0447\\u0435\\u043C \\u043C\\u0435\\u0441\\u0442\\u0435.\",\"\\u041E\\u0431\\u0449\\u0438\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446 \\u0434\\u043B\\u044F \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u0441 \\u0444\\u043E\\u043A\\u0443\\u0441\\u043E\\u043C. \\u042D\\u0442\\u043E\\u0442 \\u0446\\u0432\\u0435\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u0435\\u0441\\u043B\\u0438 \\u043D\\u0435 \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D \\u0432 \\u043A\\u043E\\u043C\\u043F\\u043E\\u043D\\u0435\\u043D\\u0442\\u0435.\",\"\\u0414\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u0430\\u044F \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 \\u0432\\u043E\\u043A\\u0440\\u0443\\u0433 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432, \\u043A\\u043E\\u0442\\u043E\\u0440\\u0430\\u044F \\u043E\\u0442\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0438\\u0445 \\u043E\\u0442 \\u0434\\u0440\\u0443\\u0433\\u0438\\u0445 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u0434\\u043B\\u044F \\u0443\\u043B\\u0443\\u0447\\u0448\\u0435\\u043D\\u0438\\u044F \\u043A\\u043E\\u043D\\u0442\\u0440\\u0430\\u0441\\u0442\\u0430.\",\"\\u0414\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u0430\\u044F \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 \\u0432\\u043E\\u043A\\u0440\\u0443\\u0433 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432, \\u043A\\u043E\\u0442\\u043E\\u0440\\u0430\\u044F \\u043E\\u0442\\u0434\\u0435\\u043B\\u044F\\u0435\\u0442 \\u0438\\u0445 \\u043E\\u0442 \\u0434\\u0440\\u0443\\u0433\\u0438\\u0445 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u0434\\u043B\\u044F \\u0443\\u043B\\u0443\\u0447\\u0448\\u0435\\u043D\\u0438\\u044F \\u043A\\u043E\\u043D\\u0442\\u0440\\u0430\\u0441\\u0442\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0432 \\u0440\\u0430\\u0431\\u043E\\u0447\\u0435\\u0439 \\u043E\\u0431\\u043B\\u0430\\u0441\\u0442\\u0438 (\\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u0432 \\u043F\\u043E\\u043B\\u044F\\u0445 \\u0432\\u0432\\u043E\\u0434\\u0430 \\u0438\\u043B\\u0438 \\u0432 \\u0442\\u0435\\u043A\\u0441\\u0442\\u043E\\u0432\\u044B\\u0445 \\u043F\\u043E\\u043B\\u044F\\u0445). \\u041D\\u0435 \\u043F\\u0440\\u0438\\u043C\\u0435\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u043A \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u043C\\u0443 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0443 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0434\\u043B\\u044F \\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0438\\u0442\\u0435\\u043B\\u0435\\u0439 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0441\\u044B\\u043B\\u043E\\u043A \\u0432 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0441\\u044B\\u043B\\u043E\\u043A \\u0432 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0435 \\u043F\\u0440\\u0438 \\u0449\\u0435\\u043B\\u0447\\u043A\\u0435 \\u0438 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u043C\\u044B\\u0448\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0444\\u0438\\u043A\\u0441\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u0444\\u043E\\u0440\\u043C\\u0430\\u0442\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0431\\u043B\\u043E\\u043A\\u043E\\u0432 \\u0441 \\u0446\\u0438\\u0442\\u0430\\u0442\\u0430\\u043C\\u0438 \\u0432 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446 \\u0434\\u043B\\u044F \\u0431\\u043B\\u043E\\u043A\\u043E\\u0432 \\u0441 \\u0446\\u0438\\u0442\\u0430\\u0442\\u0430\\u043C\\u0438 \\u0432 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043F\\u0440\\u043E\\u0433\\u0440\\u0430\\u043C\\u043C\\u043D\\u043E\\u0433\\u043E \\u043A\\u043E\\u0434\\u0430 \\u0432 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0435.\",'\\u0426\\u0432\\u0435\\u0442 \\u0442\\u0435\\u043D\\u0438 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430, \\u0442\\u0430\\u043A\\u0438\\u0445 \\u043A\\u0430\\u043A \"\\u041D\\u0430\\u0439\\u0442\\u0438/\\u0437\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\".','\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430, \\u0442\\u0430\\u043A\\u0438\\u0445 \\u043A\\u0430\\u043A \"\\u041D\\u0430\\u0439\\u0442\\u0438/\\u0437\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\".',\"\\u0424\\u043E\\u043D \\u043F\\u043E\\u043B\\u044F \\u0432\\u0432\\u043E\\u0434\\u0430.\",\"\\u041F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0438\\u0439 \\u043F\\u043B\\u0430\\u043D \\u043F\\u043E\\u043B\\u044F \\u0432\\u0432\\u043E\\u0434\\u0430.\",\"\\u0413\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 \\u043F\\u043E\\u043B\\u044F \\u0432\\u0432\\u043E\\u0434\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446 \\u0430\\u043A\\u0442\\u0438\\u0432\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u043D\\u044B\\u0445 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432 \\u0432 \\u043F\\u043E\\u043B\\u044F\\u0445 \\u0432\\u0432\\u043E\\u0434\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u043D\\u044B\\u0445 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432 \\u0432 \\u043F\\u043E\\u043B\\u044F\\u0445 \\u0432\\u0432\\u043E\\u0434\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u043E\\u0432\\u043E\\u0433\\u043E \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432 \\u0432 \\u043F\\u043E\\u043B\\u044F\\u0445 \\u0432\\u0432\\u043E\\u0434\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u043D\\u044B\\u0445 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432 \\u0432 \\u043F\\u043E\\u043B\\u044F\\u0445 \\u0432\\u0432\\u043E\\u0434\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043F\\u043E\\u044F\\u0441\\u043D\\u044F\\u044E\\u0449\\u0435\\u0433\\u043E \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0432 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 \\u0432\\u0432\\u043E\\u0434\\u0430.\",'\\u0424\\u043E\\u043D\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0430 \\u0434\\u043B\\u044F \\u0443\\u0440\\u043E\\u0432\\u043D\\u044F \\u0441\\u0435\\u0440\\u044C\\u0435\\u0437\\u043D\\u043E\\u0441\\u0442\\u0438 \"\\u0421\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F\".','\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043E\\u0431\\u043B\\u0430\\u0441\\u0442\\u0438 \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0430 \\u0434\\u043B\\u044F \\u0443\\u0440\\u043E\\u0432\\u043D\\u044F \\u0441\\u0435\\u0440\\u044C\\u0435\\u0437\\u043D\\u043E\\u0441\\u0442\\u0438 \"\\u0421\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F\".','\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0430 \\u0434\\u043B\\u044F \\u0443\\u0440\\u043E\\u0432\\u043D\\u044F \\u0441\\u0435\\u0440\\u044C\\u0435\\u0437\\u043D\\u043E\\u0441\\u0442\\u0438 \"\\u0421\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F\".','\\u0424\\u043E\\u043D\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0430 \\u0434\\u043B\\u044F \\u0443\\u0440\\u043E\\u0432\\u043D\\u044F \\u0441\\u0435\\u0440\\u044C\\u0435\\u0437\\u043D\\u043E\\u0441\\u0442\\u0438 \"\\u041F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435\".','\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043E\\u0431\\u043B\\u0430\\u0441\\u0442\\u0438 \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0430 \\u0434\\u043B\\u044F \\u0443\\u0440\\u043E\\u0432\\u043D\\u044F \\u0441\\u0435\\u0440\\u044C\\u0435\\u0437\\u043D\\u043E\\u0441\\u0442\\u0438 \"\\u041F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435\".','\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0430 \\u0434\\u043B\\u044F \\u0443\\u0440\\u043E\\u0432\\u043D\\u044F \\u0441\\u0435\\u0440\\u044C\\u0435\\u0437\\u043D\\u043E\\u0441\\u0442\\u0438 \"\\u041F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435\".','\\u0424\\u043E\\u043D\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0430 \\u0434\\u043B\\u044F \\u0443\\u0440\\u043E\\u0432\\u043D\\u044F \\u0441\\u0435\\u0440\\u044C\\u0435\\u0437\\u043D\\u043E\\u0441\\u0442\\u0438 \"\\u041E\\u0448\\u0438\\u0431\\u043A\\u0430\".','\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043E\\u0431\\u043B\\u0430\\u0441\\u0442\\u0438 \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0430 \\u0434\\u043B\\u044F \\u0443\\u0440\\u043E\\u0432\\u043D\\u044F \\u0441\\u0435\\u0440\\u044C\\u0435\\u0437\\u043D\\u043E\\u0441\\u0442\\u0438 \"\\u041E\\u0448\\u0438\\u0431\\u043A\\u0430\".','\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u043F\\u0440\\u043E\\u0432\\u0435\\u0440\\u043A\\u0438 \\u0432\\u0432\\u043E\\u0434\\u0430 \\u0434\\u043B\\u044F \\u0443\\u0440\\u043E\\u0432\\u043D\\u044F \\u0441\\u0435\\u0440\\u044C\\u0435\\u0437\\u043D\\u043E\\u0441\\u0442\\u0438 \"\\u041E\\u0448\\u0438\\u0431\\u043A\\u0430\".',\"\\u0424\\u043E\\u043D \\u0440\\u0430\\u0441\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0435\\u0433\\u043E\\u0441\\u044F \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0440\\u0430\\u0441\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0435\\u0433\\u043E\\u0441\\u044F \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430.\",\"\\u041F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0438\\u0439 \\u043F\\u043B\\u0430\\u043D \\u0440\\u0430\\u0441\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0435\\u0433\\u043E\\u0441\\u044F \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430.\",\"\\u0413\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 \\u0440\\u0430\\u0441\\u043A\\u0440\\u044B\\u0432\\u0430\\u044E\\u0449\\u0435\\u0433\\u043E\\u0441\\u044F \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0438\\u0442\\u0435\\u043B\\u044F \\u043A\\u043D\\u043E\\u043F\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0432\\u0442\\u043E\\u0440\\u0438\\u0447\\u043D\\u043E\\u0439 \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u0442\\u043E\\u0440\\u0438\\u0447\\u043D\\u043E\\u0439 \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u0442\\u043E\\u0440\\u0438\\u0447\\u043D\\u043E\\u0439 \\u043A\\u043D\\u043E\\u043F\\u043A\\u0438 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u043C\\u044B\\u0448\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0431\\u044D\\u0434\\u0436\\u0430. \\u0411\\u044D\\u0434\\u0436\\u0438 - \\u043D\\u0435\\u0431\\u043E\\u043B\\u044C\\u0448\\u0438\\u0435 \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u044B\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B, \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0449\\u0438\\u0435 \\u043A\\u043E\\u043B\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043E, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0431\\u044D\\u0434\\u0436\\u0430. \\u0411\\u044D\\u0434\\u0436\\u0438 - \\u043D\\u0435\\u0431\\u043E\\u043B\\u044C\\u0448\\u0438\\u0435 \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u044B\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B, \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u044E\\u0449\\u0438\\u0435 \\u043A\\u043E\\u043B\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043E, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0442\\u0435\\u043D\\u0438 \\u043F\\u043E\\u043B\\u043E\\u0441\\u044B \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438, \\u043A\\u043E\\u0442\\u043E\\u0440\\u0430\\u044F \\u0441\\u0432\\u0438\\u0434\\u0435\\u0442\\u0435\\u043B\\u044C\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u043E \\u0442\\u043E\\u043C, \\u0447\\u0442\\u043E \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0435 \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0447\\u0438\\u0432\\u0430\\u0435\\u0442\\u0441\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043F\\u043E\\u043B\\u0437\\u0443\\u043D\\u043A\\u0430 \\u043F\\u043E\\u043B\\u043E\\u0441\\u044B \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043F\\u043E\\u043B\\u0437\\u0443\\u043D\\u043A\\u0430 \\u043F\\u043E\\u043B\\u043E\\u0441\\u044B \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043F\\u043E\\u043B\\u0437\\u0443\\u043D\\u043A\\u0430 \\u043F\\u043E\\u043B\\u043E\\u0441\\u044B \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u043F\\u0440\\u0438 \\u0449\\u0435\\u043B\\u0447\\u043A\\u0435 \\u043F\\u043E \\u043D\\u0435\\u043C\\u0443.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0438\\u043D\\u0434\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440\\u0430 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u0435\\u043D\\u0438\\u044F, \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0439 \\u043C\\u043E\\u0436\\u0435\\u0442 \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0442\\u044C\\u0441\\u044F \\u0434\\u043B\\u044F \\u0434\\u043B\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u043E\\u0448\\u0438\\u0431\\u043A\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0432\\u043E\\u043B\\u043D\\u0438\\u0441\\u0442\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0438\\u0438 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u043E\\u0448\\u0438\\u0431\\u043E\\u043A \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0415\\u0441\\u043B\\u0438 \\u0437\\u0430\\u0434\\u0430\\u043D\\u043E, \\u0446\\u0432\\u0435\\u0442 \\u0434\\u0432\\u043E\\u0439\\u043D\\u043E\\u0433\\u043E \\u043F\\u043E\\u0434\\u0447\\u0435\\u0440\\u043A\\u0438\\u0432\\u0430\\u043D\\u0438\\u044F \\u043E\\u0448\\u0438\\u0431\\u043E\\u043A \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u043F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0432\\u043E\\u043B\\u043D\\u0438\\u0441\\u0442\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0438\\u0438 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u043F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0415\\u0441\\u043B\\u0438 \\u0437\\u0430\\u0434\\u0430\\u043D\\u043E, \\u0446\\u0432\\u0435\\u0442 \\u0434\\u0432\\u043E\\u0439\\u043D\\u043E\\u0433\\u043E \\u043F\\u043E\\u0434\\u0447\\u0435\\u0440\\u043A\\u0438\\u0432\\u0430\\u043D\\u0438\\u044F \\u043F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u043E\\u0433\\u043E \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u044F \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0432\\u043E\\u043B\\u043D\\u0438\\u0441\\u0442\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0438\\u0438 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u044B\\u0445 \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0415\\u0441\\u043B\\u0438 \\u0437\\u0430\\u0434\\u0430\\u043D\\u043E, \\u0446\\u0432\\u0435\\u0442 \\u0434\\u0432\\u043E\\u0439\\u043D\\u043E\\u0433\\u043E \\u043F\\u043E\\u0434\\u0447\\u0435\\u0440\\u043A\\u0438\\u0432\\u0430\\u043D\\u0438\\u044F \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u044B\\u0445 \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u0439 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0432\\u043E\\u043B\\u043D\\u0438\\u0441\\u0442\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0438\\u0438 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u043F\\u043E\\u0434\\u0441\\u043A\\u0430\\u0437\\u043E\\u043A \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0415\\u0441\\u043B\\u0438 \\u0437\\u0430\\u0434\\u0430\\u043D\\u043E, \\u0446\\u0432\\u0435\\u0442 \\u0434\\u0432\\u043E\\u0439\\u043D\\u043E\\u0433\\u043E \\u043F\\u043E\\u0434\\u0447\\u0435\\u0440\\u043A\\u0438\\u0432\\u0430\\u043D\\u0438\\u044F \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u0439 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043B\\u0435\\u043D\\u0442.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 \\u043F\\u043E \\u0443\\u043C\\u043E\\u043B\\u0447\\u0430\\u043D\\u0438\\u044E.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u0441 \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u0435\\u043C \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043F\\u0440\\u043E\\u043A\\u0440\\u0443\\u0442\\u043A\\u0438 \\u0441 \\u0437\\u0430\\u043B\\u0438\\u043F\\u0430\\u043D\\u0438\\u0435\\u043C \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u0438\\u0434\\u0436\\u0435\\u0442\\u043E\\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430, \\u0442\\u0430\\u043A\\u0438\\u0445 \\u043A\\u0430\\u043A \\u043D\\u0430\\u0439\\u0442\\u0438/\\u0437\\u0430\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C.\",'\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430, \\u0442\\u0430\\u043A\\u0438\\u0445 \\u043A\\u0430\\u043A \"\\u041F\\u043E\\u0438\\u0441\\u043A/\\u0437\\u0430\\u043C\\u0435\\u043D\\u0430\".',\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430. \\u042D\\u0442\\u043E\\u0442 \\u0446\\u0432\\u0435\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u0435\\u0441\\u043B\\u0438 \\u0443 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0435\\u0441\\u0442\\u044C \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 \\u0438 \\u0435\\u0441\\u043B\\u0438 \\u044D\\u0442\\u043E\\u0442 \\u0446\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435\\u043C.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u043F\\u0430\\u043D\\u0435\\u043B\\u0438 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u044F \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430. \\u042D\\u0442\\u043E\\u0442 \\u0446\\u0432\\u0435\\u0442 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0442\\u043E\\u043B\\u044C\\u043A\\u043E \\u0432 \\u0442\\u043E\\u043C \\u0441\\u043B\\u0443\\u0447\\u0430\\u0435, \\u0435\\u0441\\u043B\\u0438 \\u0443 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0435\\u0441\\u0442\\u044C \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430 \\u0434\\u043B\\u044F \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u044F \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440\\u0430 \\u0438 \\u0435\\u0441\\u043B\\u0438 \\u044D\\u0442\\u043E\\u0442 \\u0446\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u043F\\u0435\\u0440\\u0435\\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435\\u043C.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0430 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430. \\u041C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043A\\u043E\\u043D\\u0442\\u0435\\u0439\\u043D\\u0435\\u0440\\u043E\\u043C \\u0434\\u043B\\u044F \\u0442\\u0430\\u043A\\u0438\\u0445 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432 \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430, \\u043A\\u0430\\u043A \\u043F\\u0430\\u043B\\u0438\\u0442\\u0440\\u0430 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0430 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430. \\u041C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043A\\u043E\\u043D\\u0442\\u0435\\u0439\\u043D\\u0435\\u0440\\u043E\\u043C \\u0434\\u043B\\u044F \\u0442\\u0430\\u043A\\u0438\\u0445 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432 \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430, \\u043A\\u0430\\u043A \\u043F\\u0430\\u043B\\u0438\\u0442\\u0440\\u0430 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0437\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043A\\u0430 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0430 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430. \\u041C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u0435 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u044F\\u0432\\u043B\\u044F\\u0435\\u0442\\u0441\\u044F \\u043A\\u043E\\u043D\\u0442\\u0435\\u0439\\u043D\\u0435\\u0440\\u043E\\u043C \\u0434\\u043B\\u044F \\u0442\\u0430\\u043A\\u0438\\u0445 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432 \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430, \\u043A\\u0430\\u043A \\u043F\\u0430\\u043B\\u0438\\u0442\\u0440\\u0430 \\u043A\\u043E\\u043C\\u0430\\u043D\\u0434.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0430 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u0434\\u043B\\u044F \\u0433\\u0440\\u0443\\u043F\\u043F\\u0438\\u0440\\u043E\\u0432\\u043A\\u0438 \\u043C\\u0435\\u0442\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0430 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u0434\\u043B\\u044F \\u0433\\u0440\\u0443\\u043F\\u043F\\u0438\\u0440\\u043E\\u0432\\u043A\\u0438 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043C\\u0435\\u0442\\u043A\\u0438 \\u043D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0435\\u043C\\u043E\\u0433\\u043E \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448. \\u041C\\u0435\\u0442\\u043A\\u0430 \\u043D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0435\\u043C\\u043E\\u0433\\u043E \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0434\\u043B\\u044F \\u043E\\u0431\\u043E\\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043C\\u0435\\u0442\\u043A\\u0438 \\u043D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0435\\u043C\\u043E\\u0433\\u043E \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448. \\u041C\\u0435\\u0442\\u043A\\u0430 \\u043D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0435\\u043C\\u043E\\u0433\\u043E \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0434\\u043B\\u044F \\u043E\\u0431\\u043E\\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u043C\\u0435\\u0442\\u043A\\u0438 \\u043D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0435\\u043C\\u043E\\u0433\\u043E \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448. \\u041C\\u0435\\u0442\\u043A\\u0430 \\u043D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0435\\u043C\\u043E\\u0433\\u043E \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0434\\u043B\\u044F \\u043E\\u0431\\u043E\\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043D\\u0438\\u0436\\u043D\\u0435\\u0439 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u043C\\u0435\\u0442\\u043A\\u0438 \\u043D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0435\\u043C\\u043E\\u0433\\u043E \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448. \\u041C\\u0435\\u0442\\u043A\\u0430 \\u043D\\u0430\\u0441\\u0442\\u0440\\u0430\\u0438\\u0432\\u0430\\u0435\\u043C\\u043E\\u0433\\u043E \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0434\\u043B\\u044F \\u043E\\u0431\\u043E\\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u044F \\u0441\\u043E\\u0447\\u0435\\u0442\\u0430\\u043D\\u0438\\u044F \\u043A\\u043B\\u0430\\u0432\\u0438\\u0448.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0432 \\u0440\\u0435\\u0436\\u0438\\u043C\\u0435 \\u0432\\u044B\\u0441\\u043E\\u043A\\u043E\\u0433\\u043E \\u043A\\u043E\\u043D\\u0442\\u0440\\u0430\\u0441\\u0442\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0432 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0434\\u043B\\u044F \\u043E\\u0431\\u043B\\u0430\\u0441\\u0442\\u0435\\u0439, \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0435 \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0445 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0430\\u0435\\u0442 \\u0441 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u044B\\u043C \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u043E\\u043C. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0440\\u0435\\u0433\\u0438\\u043E\\u043D\\u043E\\u0432 \\u0441 \\u0442\\u0435\\u043C \\u0436\\u0435 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u044B\\u043C, \\u0447\\u0442\\u043E \\u0438 \\u0432 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0433\\u043E \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0434\\u0440\\u0443\\u0433\\u0438\\u0445 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 \\u043F\\u0440\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0435. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u0430, \\u043E\\u0433\\u0440\\u0430\\u043D\\u0438\\u0447\\u0438\\u0432\\u0430\\u044E\\u0449\\u0435\\u0433\\u043E \\u043F\\u043E\\u0438\\u0441\\u043A. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0433\\u043E \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u0430 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0434\\u0440\\u0443\\u0433\\u0438\\u0445 \\u0440\\u0435\\u0437\\u0443\\u043B\\u044C\\u0442\\u0430\\u0442\\u043E\\u0432 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0434\\u043B\\u044F \\u0434\\u0438\\u0430\\u043F\\u0430\\u0437\\u043E\\u043D\\u0430, \\u043E\\u0433\\u0440\\u0430\\u043D\\u0438\\u0447\\u0438\\u0432\\u0430\\u044E\\u0449\\u0435\\u0433\\u043E \\u043F\\u043E\\u0438\\u0441\\u043A. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0438\\u0439 \\u0434\\u043B\\u044F \\u0437\\u0430\\u043F\\u0440\\u043E\\u0441\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0434\\u043B\\u044F \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0449\\u0438\\u0445 \\u0437\\u0430\\u043F\\u0440\\u043E\\u0441\\u043E\\u0432 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0432 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0435 \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u044F \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043D\\u0438\\u044F \\u0432\\u044C\\u044E\\u043B\\u0435\\u0442\\u0430.\",\"\\u0412\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043F\\u043E\\u0434 \\u0441\\u043B\\u043E\\u0432\\u043E\\u043C, \\u0434\\u043B\\u044F \\u043A\\u043E\\u0442\\u043E\\u0440\\u043E\\u0433\\u043E \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044F \\u043C\\u0435\\u043D\\u044E \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044F \\u043D\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044F \\u043D\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044F \\u043D\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438 \\u0441\\u043E\\u0441\\u0442\\u043E\\u044F\\u043D\\u0438\\u044F \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u0441\\u0441\\u044B\\u043B\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u0439\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u0439\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u0439 \\u0434\\u043B\\u044F \\u0448\\u0440\\u0438\\u0444\\u0442\\u043E\\u0432\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u0439 \\u0434\\u043B\\u044F \\u0448\\u0440\\u0438\\u0444\\u0442\\u043E\\u0432\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u0439 \\u0434\\u043B\\u044F \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0443\\u043A\\u0430\\u0437\\u0430\\u043D\\u0438\\u0439 \\u0434\\u043B\\u044F \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440\\u043E\\u0432\",\"\\u0426\\u0432\\u0435\\u0442, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0434\\u043B\\u044F \\u0437\\u043D\\u0430\\u0447\\u043A\\u0430 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0439 \\u0432 \\u043C\\u0435\\u043D\\u044E \\u043B\\u0430\\u043C\\u043F\\u043E\\u0447\\u043A\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0434\\u043B\\u044F \\u0437\\u043D\\u0430\\u0447\\u043A\\u0430 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0439 \\u0430\\u0432\\u0442\\u043E\\u043C\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0433\\u043E \\u0438\\u0441\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F \\u0432 \\u043C\\u0435\\u043D\\u044E \\u043B\\u0430\\u043C\\u043F\\u043E\\u0447\\u043A\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043F\\u043E\\u043B\\u044F, \\u0433\\u0434\\u0435 \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u044B \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043F\\u043E\\u043B\\u044F, \\u0433\\u0434\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u044B \\u0441\\u0442\\u0440\\u043E\\u043A\\u0438.\",\"\\u041F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0438\\u0439 \\u043F\\u043B\\u0430\\u043D \\u043E\\u0431\\u0437\\u043E\\u0440\\u043D\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0440\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u0439 \\u0434\\u043B\\u044F \\u0432\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E.\",\"\\u041F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0438\\u0439 \\u043F\\u043B\\u0430\\u043D \\u043E\\u0431\\u0437\\u043E\\u0440\\u043D\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0440\\u0430\\u0437\\u043B\\u0438\\u0447\\u0438\\u0439 \\u0434\\u043B\\u044F \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043A\\u043E\\u043D\\u0442\\u0443\\u0440\\u0430 \\u0434\\u043B\\u044F \\u0434\\u043E\\u0431\\u0430\\u0432\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043A\\u043E\\u043D\\u0442\\u0443\\u0440\\u0430 \\u0434\\u043B\\u044F \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u043C\\u0435\\u0436\\u0434\\u0443 \\u0434\\u0432\\u0443\\u043C\\u044F \\u0442\\u0435\\u043A\\u0441\\u0442\\u043E\\u0432\\u044B\\u043C\\u0438 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430\\u043C\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0434\\u0438\\u0430\\u0433\\u043E\\u043D\\u0430\\u043B\\u044C\\u043D\\u043E\\u0439 \\u0437\\u0430\\u043B\\u0438\\u0432\\u043A\\u0438 \\u0434\\u043B\\u044F \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439. \\u0414\\u0438\\u0430\\u0433\\u043E\\u043D\\u0430\\u043B\\u044C\\u043D\\u0430\\u044F \\u0437\\u0430\\u043B\\u0438\\u0432\\u043A\\u0430 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0432 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0449\\u0430\\u0435\\u043C\\u044B\\u0445 \\u0440\\u044F\\u0434\\u043E\\u043C \\u043F\\u0440\\u0435\\u0434\\u0441\\u0442\\u0430\\u0432\\u043B\\u0435\\u043D\\u0438\\u044F\\u0445 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043D\\u0435\\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0431\\u043B\\u043E\\u043A\\u043E\\u0432 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043D\\u0435\\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u044B\\u0445 \\u0431\\u043B\\u043E\\u043A\\u043E\\u0432 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043D\\u0435\\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u043A\\u043E\\u0434\\u0430 \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435 \\u043D\\u0435\\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u0424\\u043E\\u043D\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u043D\\u0430\\u0445\\u043E\\u0434\\u044F\\u0449\\u0435\\u0433\\u043E\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 List/Tree, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 List/Tree \\u0430\\u043A\\u0442\\u0438\\u0432\\u0435\\u043D. \\u041D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 List/Tree \\u0435\\u0441\\u0442\\u044C \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B, \\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u2014 \\u043D\\u0435\\u0442.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043D\\u0430\\u0445\\u043E\\u0434\\u044F\\u0449\\u0435\\u0433\\u043E\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 List/Tree, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 List/Tree \\u0430\\u043A\\u0442\\u0438\\u0432\\u0435\\u043D. \\u041D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 List/Tree \\u0435\\u0441\\u0442\\u044C \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B, \\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u2014 \\u043D\\u0435\\u0442.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043A\\u043E\\u043D\\u0442\\u0443\\u0440\\u0430 \\u043D\\u0430\\u0445\\u043E\\u0434\\u044F\\u0449\\u0435\\u0433\\u043E\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 List/Tree, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 List/Tree \\u0430\\u043A\\u0442\\u0438\\u0432\\u0435\\u043D. \\u041D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 List/Tree \\u0435\\u0441\\u0442\\u044C \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B, \\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C\\xA0\\u2014 \\u043D\\u0435\\u0442.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043A\\u043E\\u043D\\u0442\\u0443\\u0440\\u0430 \\u043D\\u0430\\u0445\\u043E\\u0434\\u044F\\u0449\\u0435\\u0433\\u043E\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 List/Tree, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 List/Tree \\u0430\\u043A\\u0442\\u0438\\u0432\\u0435\\u043D \\u0438 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D. \\u041D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 List/Tree \\u0435\\u0441\\u0442\\u044C \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B, \\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u2014 \\u043D\\u0435\\u0442.\",\"\\u0424\\u043E\\u043D\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 List/Tree, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 List/Tree \\u0430\\u043A\\u0442\\u0438\\u0432\\u0435\\u043D. \\u041D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 List/Tree \\u0435\\u0441\\u0442\\u044C \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B, \\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u2014 \\u043D\\u0435\\u0442.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 List/Tree, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 List/Tree \\u0430\\u043A\\u0442\\u0438\\u0432\\u0435\\u043D. \\u041D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 List/Tree \\u0435\\u0441\\u0442\\u044C \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B, \\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u2014 \\u043D\\u0435\\u0442.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0437\\u043D\\u0430\\u0447\\u043A\\u0430 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430 \\u0438\\u043B\\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u0430 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0441\\u043F\\u0438\\u0441\\u043E\\u043A \\u0438\\u043B\\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u043E \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B. \\u0410\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0439 \\u0441\\u043F\\u0438\\u0441\\u043E\\u043A \\u0438\\u043B\\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u043E \\u043D\\u0430\\u0445\\u043E\\u0434\\u044F\\u0442\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B, \\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0439 \\u2014 \\u043D\\u0435\\u0442.\",\"\\u0424\\u043E\\u043D\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 List/Tree, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 List/Tree \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u0435\\u043D. \\u041D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 List/Tree \\u0435\\u0441\\u0442\\u044C \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B, \\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u2014 \\u043D\\u0435\\u0442.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0442\\u0435\\u043A\\u0441\\u0442\\u0430 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 List/Tree, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 List/Tree \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u0435\\u043D. \\u041D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 List/Tree \\u0435\\u0441\\u0442\\u044C \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B, \\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u2014 \\u043D\\u0435\\u0442.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0437\\u043D\\u0430\\u0447\\u043A\\u0430 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430 \\u0438\\u043B\\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u0430 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0441\\u043F\\u0438\\u0441\\u043E\\u043A \\u0438\\u043B\\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u043E \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B. \\u0410\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0439 \\u0441\\u043F\\u0438\\u0441\\u043E\\u043A \\u0438\\u043B\\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u043E \\u043D\\u0430\\u0445\\u043E\\u0434\\u044F\\u0442\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B, \\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0439 \\u2014 \\u043D\\u0435\\u0442.\",\"\\u0424\\u043E\\u043D\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u043D\\u0430\\u0445\\u043E\\u0434\\u044F\\u0449\\u0435\\u0433\\u043E\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 List/Tree, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 List/Tree \\u043D\\u0435 \\u0430\\u043A\\u0442\\u0438\\u0432\\u0435\\u043D. \\u041D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 List/Tree \\u0435\\u0441\\u0442\\u044C \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B, \\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u2014 \\u043D\\u0435\\u0442.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043A\\u043E\\u043D\\u0442\\u0443\\u0440\\u0430 \\u043D\\u0430\\u0445\\u043E\\u0434\\u044F\\u0449\\u0435\\u0433\\u043E\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430 List/Tree, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442 List/Tree \\u043D\\u0435 \\u0430\\u043A\\u0442\\u0438\\u0432\\u0435\\u043D. \\u041D\\u0430 \\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0435 List/Tree \\u0435\\u0441\\u0442\\u044C \\u0444\\u043E\\u043A\\u0443\\u0441 \\u043A\\u043B\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044B, \\u043D\\u0430 \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u043E\\u043C\\xA0\\u2014 \\u043D\\u0435\\u0442.\",\"\\u0424\\u043E\\u043D\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 List/Tree \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u043C\\u044B\\u0448\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 List/Tree \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u043A\\u0443\\u0440\\u0441\\u043E\\u0440\\u0430 \\u043C\\u044B\\u0448\\u0438.\",\"\\u0424\\u043E\\u043D\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 List/Tree \\u043F\\u0440\\u0438 \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0449\\u0435\\u043D\\u0438\\u0438 \\u0441 \\u043F\\u043E\\u043C\\u043E\\u0449\\u044C\\u044E \\u043C\\u044B\\u0448\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0438\\u044F \\u043F\\u0440\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0435 \\u043F\\u043E \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0443 List/Tree.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0441\\u043E\\u043E\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0438\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043F\\u0440\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0435 \\u043F\\u043E \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0443 List/Tree.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430/\\u0434\\u0435\\u0440\\u0435\\u0432\\u0430 \\u0434\\u043B\\u044F \\u043D\\u0435\\u0434\\u043E\\u043F\\u0443\\u0441\\u0442\\u0438\\u043C\\u044B\\u0445 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432, \\u043D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \\u0434\\u043B\\u044F \\u043D\\u0435\\u0440\\u0430\\u0437\\u0440\\u0435\\u0448\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u043A\\u043E\\u0440\\u043D\\u0435\\u0432\\u043E\\u0433\\u043E \\u0443\\u0437\\u043B\\u0430 \\u0432 \\u043F\\u0440\\u043E\\u0432\\u043E\\u0434\\u043D\\u0438\\u043A\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430, \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0430\\u0449\\u0438\\u0445 \\u043E\\u0448\\u0438\\u0431\\u043A\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430, \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0430\\u0449\\u0438\\u0445 \\u043F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0444\\u0438\\u043B\\u044C\\u0442\\u0440\\u0430 \\u0442\\u0438\\u043F\\u043E\\u0432 \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430\\u0445 \\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u044F\\u0445.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043A\\u043E\\u043D\\u0442\\u0443\\u0440\\u0430 \\u0434\\u043B\\u044F \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0444\\u0438\\u043B\\u044C\\u0442\\u0440\\u0430 \\u0442\\u0438\\u043F\\u043E\\u0432 \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430\\u0445 \\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u044F\\u0445.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043A\\u043E\\u043D\\u0442\\u0443\\u0440\\u0430 \\u0434\\u043B\\u044F \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0444\\u0438\\u043B\\u044C\\u0442\\u0440\\u0430 \\u0442\\u0438\\u043F\\u043E\\u0432 \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430\\u0445 \\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u044F\\u0445 \\u043F\\u0440\\u0438 \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0438\\u0438 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0442\\u0435\\u043D\\u0438 \\u0434\\u043B\\u044F \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0444\\u0438\\u043B\\u044C\\u0442\\u0440\\u0430 \\u0442\\u0438\\u043F\\u043E\\u0432 \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0430\\u0445 \\u0438 \\u0434\\u0435\\u0440\\u0435\\u0432\\u044C\\u044F\\u0445.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043E\\u0442\\u0444\\u0438\\u043B\\u044C\\u0442\\u0440\\u043E\\u0432\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0434\\u043B\\u044F \\u043E\\u0442\\u0444\\u0438\\u043B\\u044C\\u0442\\u0440\\u043E\\u0432\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0448\\u0442\\u0440\\u0438\\u0445\\u0430 \\u0434\\u0435\\u0440\\u0435\\u0432\\u0430 \\u0434\\u043B\\u044F \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0448\\u0442\\u0440\\u0438\\u0445\\u0430 \\u0434\\u0435\\u0440\\u0435\\u0432\\u0430 \\u0434\\u043B\\u044F \\u043D\\u0435\\u0430\\u043A\\u0442\\u0438\\u0432\\u043D\\u044B\\u0445 \\u043D\\u0430\\u043F\\u0440\\u0430\\u0432\\u043B\\u044F\\u044E\\u0449\\u0438\\u0445 \\u043E\\u0442\\u0441\\u0442\\u0443\\u043F\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0442\\u0430\\u0431\\u043B\\u0438\\u0446\\u044B \\u043C\\u0435\\u0436\\u0434\\u0443 \\u0441\\u0442\\u043E\\u043B\\u0431\\u0446\\u0430\\u043C\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043D\\u0435\\u0447\\u0435\\u0442\\u043D\\u044B\\u0445 \\u0441\\u0442\\u0440\\u043E\\u043A \\u0442\\u0430\\u0431\\u043B\\u0438\\u0446\\u044B.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043A\\u0435/\\u0434\\u0435\\u0440\\u0435\\u0432\\u0435 \\u0434\\u043B\\u044F \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432, \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043A\\u043E\\u0442\\u043E\\u0440\\u044B\\u0445 \\u043E\\u0442\\u043C\\u0435\\u043D\\u0435\\u043D\\u043E.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0444\\u043B\\u0430\\u0436\\u043A\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u0438\\u0434\\u0436\\u0435\\u0442\\u0430 \\u0444\\u043B\\u0430\\u0436\\u043A\\u0430 \\u043F\\u0440\\u0438 \\u0432\\u044B\\u0431\\u043E\\u0440\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430, \\u0432 \\u043A\\u043E\\u0442\\u043E\\u0440\\u043E\\u043C \\u043E\\u043D \\u043D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0444\\u043B\\u0430\\u0436\\u043A\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F \\u0444\\u043B\\u0430\\u0436\\u043A\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0432\\u0438\\u0434\\u0436\\u0435\\u0442\\u0430 \\u0444\\u043B\\u0430\\u0436\\u043A\\u0430, \\u043A\\u043E\\u0433\\u0434\\u0430 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442, \\u0432 \\u043A\\u043E\\u0442\\u043E\\u0440\\u043E\\u043C \\u043E\\u043D \\u043D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F.\",\"\\u0420\\u0435\\u043A\\u043E\\u043C\\u0435\\u043D\\u0434\\u0443\\u0435\\u0442\\u0441\\u044F \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u044C quickInputList.focusBackground.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0430 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u0434\\u043B\\u044F \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430, \\u043D\\u0430 \\u043A\\u043E\\u0442\\u043E\\u0440\\u043E\\u043C \\u043D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u0444\\u043E\\u043A\\u0443\\u0441.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0437\\u043D\\u0430\\u0447\\u043A\\u0430 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0430 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u0434\\u043B\\u044F \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430, \\u043D\\u0430 \\u043A\\u043E\\u0442\\u043E\\u0440\\u043E\\u043C \\u043D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u0444\\u043E\\u043A\\u0443\\u0441.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0430 \\u0431\\u044B\\u0441\\u0442\\u0440\\u043E\\u0433\\u043E \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u0434\\u043B\\u044F \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u0430, \\u043D\\u0430 \\u043A\\u043E\\u0442\\u043E\\u0440\\u043E\\u043C \\u043D\\u0430\\u0445\\u043E\\u0434\\u0438\\u0442\\u0441\\u044F \\u0444\\u043E\\u043A\\u0443\\u0441.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446 \\u043C\\u0435\\u043D\\u044E.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043F\\u0443\\u043D\\u043A\\u0442\\u043E\\u0432 \\u043C\\u0435\\u043D\\u044E.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043F\\u0443\\u043D\\u043A\\u0442\\u043E\\u0432 \\u043C\\u0435\\u043D\\u044E.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u043F\\u0443\\u043D\\u043A\\u0442\\u0430 \\u043C\\u0435\\u043D\\u044E \\u0432 \\u043C\\u0435\\u043D\\u044E.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u043F\\u0443\\u043D\\u043A\\u0442\\u0430 \\u0432 \\u043C\\u0435\\u043D\\u044E.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0434\\u043B\\u044F \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u043F\\u0443\\u043D\\u043A\\u0442\\u0430 \\u0432 \\u043C\\u0435\\u043D\\u044E.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0438\\u0442\\u0435\\u043B\\u044F \\u043C\\u0435\\u043D\\u044E \\u0432 \\u043C\\u0435\\u043D\\u044E.\",\"\\u0424\\u043E\\u043D \\u043F\\u0430\\u043D\\u0435\\u043B\\u0438 \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044F \\u043C\\u044B\\u0448\\u0438 \\u043D\\u0430 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F\",\"\\u041A\\u043E\\u043D\\u0442\\u0443\\u0440 \\u043F\\u0430\\u043D\\u0435\\u043B\\u0438 \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044F \\u043C\\u044B\\u0448\\u0438 \\u043D\\u0430 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F\",\"\\u0424\\u043E\\u043D \\u043F\\u0430\\u043D\\u0435\\u043B\\u0438 \\u0438\\u043D\\u0441\\u0442\\u0440\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043F\\u0440\\u0438 \\u0443\\u0434\\u0435\\u0440\\u0436\\u0430\\u043D\\u0438\\u0438 \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044F \\u043C\\u044B\\u0448\\u0438 \\u043D\\u0430\\u0434 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F\\u043C\\u0438\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0432 \\u043F\\u043E\\u0437\\u0438\\u0446\\u0438\\u0438 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0432 \\u043F\\u043E\\u0437\\u0438\\u0446\\u0438\\u0438 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0432 \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u043D\\u0435\\u0439 \\u043F\\u043E\\u0437\\u0438\\u0446\\u0438\\u0438 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0430.\",\"\\u0412\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0446\\u0432\\u0435\\u0442\\u043E\\u043C \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0432 \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u043D\\u0435\\u0439 \\u043F\\u043E\\u0437\\u0438\\u0446\\u0438\\u0438 \\u0442\\u0430\\u0431\\u0443\\u043B\\u044F\\u0446\\u0438\\u0438 \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438, \\u043D\\u0430\\u0445\\u043E\\u0434\\u044F\\u0449\\u0438\\u0445\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435.\",\"\\u0424\\u043E\\u043D\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438.\",\"\\u0426\\u0432\\u0435\\u0442 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438, \\u043D\\u0430\\u0445\\u043E\\u0434\\u044F\\u0449\\u0438\\u0445\\u0441\\u044F \\u0432 \\u0444\\u043E\\u043A\\u0443\\u0441\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0445 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438.\",\"\\u0424\\u043E\\u043D\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432\\u0430 \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043D\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u0438.\",\"\\u0422\\u0435\\u043A\\u0443\\u0449\\u0438\\u0439 \\u0446\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u0437\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043A\\u0430 \\u043F\\u0440\\u0438 \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0438\\u0445 \\u043A\\u043E\\u043D\\u0444\\u043B\\u0438\\u043A\\u0442\\u0430\\u0445 \\u0441\\u043B\\u0438\\u044F\\u043D\\u0438\\u044F. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0424\\u043E\\u043D \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0433\\u043E \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E \\u043F\\u0440\\u0438 \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0438\\u0445 \\u043A\\u043E\\u043D\\u0444\\u043B\\u0438\\u043A\\u0442\\u0430\\u0445 \\u0441\\u043B\\u0438\\u044F\\u043D\\u0438\\u044F. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0424\\u043E\\u043D \\u0432\\u0445\\u043E\\u0434\\u044F\\u0449\\u0435\\u0433\\u043E \\u0437\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043A\\u0430 \\u043F\\u0440\\u0438 \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0438\\u0445 \\u043A\\u043E\\u043D\\u0444\\u043B\\u0438\\u043A\\u0442\\u0430\\u0445 \\u043E\\u0431\\u044A\\u0435\\u0434\\u0438\\u043D\\u0435\\u043D\\u0438\\u044F. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0424\\u043E\\u043D \\u0432\\u0445\\u043E\\u0434\\u044F\\u0449\\u0435\\u0433\\u043E \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E \\u043F\\u0440\\u0438 \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0438\\u0445 \\u043A\\u043E\\u043D\\u0444\\u043B\\u0438\\u043A\\u0442\\u0430\\u0445 \\u0441\\u043B\\u0438\\u044F\\u043D\\u0438\\u044F. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0424\\u043E\\u043D \\u0437\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043A\\u0430 \\u043E\\u0431\\u0449\\u0435\\u0433\\u043E \\u043F\\u0440\\u0435\\u0434\\u043A\\u0430 \\u0432\\u043E \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0438\\u0445 \\u043A\\u043E\\u043D\\u0444\\u043B\\u0438\\u043A\\u0442\\u0430\\u0445 \\u0441\\u043B\\u0438\\u044F\\u043D\\u0438\\u044F. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0424\\u043E\\u043D \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0438\\u043C\\u043E\\u0433\\u043E \\u043E\\u0431\\u0449\\u0435\\u0433\\u043E \\u043F\\u0440\\u0435\\u0434\\u043A\\u0430 \\u0432\\u043E \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0438\\u0445 \\u043A\\u043E\\u043D\\u0444\\u043B\\u0438\\u043A\\u0442\\u0430\\u0445 \\u0441\\u043B\\u0438\\u044F\\u043D\\u0438\\u044F. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u0440\\u0430\\u043D\\u0438\\u0446\\u044B \\u0437\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043A\\u043E\\u0432 \\u0438 \\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0438\\u0442\\u0435\\u043B\\u044F \\u0432\\u043E \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0438\\u0445 \\u043A\\u043E\\u043D\\u0444\\u043B\\u0438\\u043A\\u0442\\u0430\\u0445 \\u0441\\u043B\\u0438\\u044F\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0442\\u0435\\u043A\\u0443\\u0449\\u0435\\u0433\\u043E \\u043E\\u043A\\u043D\\u0430 \\u0432\\u043E \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0438\\u0445 \\u043A\\u043E\\u043D\\u0444\\u043B\\u0438\\u043A\\u0442\\u0430\\u0445 \\u0441\\u043B\\u0438\\u044F\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0432\\u0445\\u043E\\u0434\\u044F\\u0449\\u0435\\u0433\\u043E \\u043E\\u043A\\u043D\\u0430 \\u0432\\u043E \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0438\\u0445 \\u043A\\u043E\\u043D\\u0444\\u043B\\u0438\\u043A\\u0442\\u0430\\u0445 \\u0441\\u043B\\u0438\\u044F\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u0434\\u043B\\u044F \\u043E\\u0431\\u0437\\u043E\\u0440\\u043D\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0434\\u043B\\u044F \\u043E\\u0431\\u0449\\u0435\\u0433\\u043E \\u043F\\u0440\\u0435\\u0434\\u043A\\u0430 \\u0432\\u043E \\u0432\\u043D\\u0443\\u0442\\u0440\\u0435\\u043D\\u043D\\u0438\\u0445 \\u043A\\u043E\\u043D\\u0444\\u043B\\u0438\\u043A\\u0442\\u0430\\u0445 \\u0441\\u043B\\u0438\\u044F\\u043D\\u0438\\u044F. \",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u0430 \\u043E\\u0431\\u0437\\u043E\\u0440\\u043D\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0434\\u043B\\u044F \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439 \\u043F\\u0440\\u0438 \\u043F\\u043E\\u0438\\u0441\\u043A\\u0435. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u041C\\u0430\\u0440\\u043A\\u0435\\u0440 \\u043E\\u0431\\u0437\\u043E\\u0440\\u043D\\u043E\\u0439 \\u043B\\u0438\\u043D\\u0435\\u0439\\u043A\\u0438 \\u0434\\u043B\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u044F \\u0432\\u044B\\u0431\\u0440\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0430. \\u0426\\u0432\\u0435\\u0442 \\u043D\\u0435 \\u0434\\u043E\\u043B\\u0436\\u0435\\u043D \\u0431\\u044B\\u0442\\u044C \\u043D\\u0435\\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u044B\\u043C, \\u0447\\u0442\\u043E\\u0431\\u044B \\u043D\\u0435 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044C \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043D\\u0438\\u0436\\u0435 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u043E\\u0444\\u043E\\u0440\\u043C\\u043B\\u0435\\u043D\\u0438\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u044B \\u0434\\u043B\\u044F \\u043F\\u043E\\u0438\\u0441\\u043A\\u0430 \\u0441\\u043E\\u0432\\u043F\\u0430\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u044B \\u0434\\u043B\\u044F \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u044F\\u044E\\u0449\\u0438\\u0445\\u0441\\u044F \\u0432\\u044B\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0439 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u044B \\u0434\\u043B\\u044F \\u0432\\u044B\\u0431\\u043E\\u0440\\u0430 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0430.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u0430 \\u043C\\u0438\\u043D\\u0438\\u043A\\u0430\\u0440\\u0442\\u044B \\u0434\\u043B\\u044F \\u043E\\u0448\\u0438\\u0431\\u043E\\u043A.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043C\\u0430\\u0440\\u043A\\u0435\\u0440\\u0430 \\u043C\\u0438\\u043D\\u0438\\u043A\\u0430\\u0440\\u0442\\u044B \\u0434\\u043B\\u044F \\u043F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0435\\u043D\\u0438\\u0439.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u044B.\",'\\u041F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u043E\\u0441\\u0442\\u044C \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430, \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u043C\\u0430\\u044F \\u0433\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u0435. \\u041D\\u0430\\u043F\\u0440\\u0438\\u043C\\u0435\\u0440, \"#000000c0\" \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442 \\u044D\\u043B\\u0435\\u043C\\u0435\\u043D\\u0442\\u044B \\u0441 \\u043F\\u0440\\u043E\\u0437\\u0440\\u0430\\u0447\\u043D\\u043E\\u0441\\u0442\\u044C\\u044E 75%.',\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043F\\u043E\\u043B\\u0437\\u0443\\u043D\\u043A\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u044B.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043F\\u043E\\u043B\\u0437\\u0443\\u043D\\u043A\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u044B \\u043F\\u0440\\u0438 \\u043D\\u0430\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u043D\\u0430 \\u043D\\u0435\\u0433\\u043E \\u0443\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044F.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043E\\u043D\\u0430 \\u043F\\u043E\\u043B\\u0437\\u0443\\u043D\\u043A\\u0430 \\u043C\\u0438\\u043D\\u0438-\\u043A\\u0430\\u0440\\u0442\\u044B \\u043F\\u0440\\u0438 \\u0435\\u0433\\u043E \\u0449\\u0435\\u043B\\u0447\\u043A\\u0435.\",\"\\u0426\\u0432\\u0435\\u0442, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0434\\u043B\\u044F \\u0437\\u043D\\u0430\\u0447\\u043A\\u0430 \\u043E\\u0448\\u0438\\u0431\\u043A\\u0438, \\u0443\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u044E\\u0449\\u0435\\u0433\\u043E \\u043D\\u0430 \\u043D\\u0430\\u043B\\u0438\\u0447\\u0438\\u0435 \\u043F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C.\",\"\\u0426\\u0432\\u0435\\u0442, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0434\\u043B\\u044F \\u043F\\u0440\\u0435\\u0434\\u0443\\u043F\\u0440\\u0435\\u0436\\u0434\\u0430\\u044E\\u0449\\u0435\\u0433\\u043E \\u0437\\u043D\\u0430\\u0447\\u043A\\u0430, \\u0443\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u044E\\u0449\\u0435\\u0433\\u043E \\u043D\\u0430 \\u043D\\u0430\\u043B\\u0438\\u0447\\u0438\\u0435 \\u043F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C.\",\"\\u0426\\u0432\\u0435\\u0442, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0434\\u043B\\u044F \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u043E\\u043D\\u043D\\u043E\\u0433\\u043E \\u0437\\u043D\\u0430\\u0447\\u043A\\u0430, \\u0443\\u043A\\u0430\\u0437\\u044B\\u0432\\u0430\\u044E\\u0449\\u0435\\u0433\\u043E \\u043D\\u0430 \\u043D\\u0430\\u043B\\u0438\\u0447\\u0438\\u0435 \\u043F\\u0440\\u043E\\u0431\\u043B\\u0435\\u043C.\",\"\\u0426\\u0432\\u0435\\u0442 \\u043F\\u0435\\u0440\\u0435\\u0434\\u043D\\u0435\\u0433\\u043E \\u043F\\u043B\\u0430\\u043D\\u0430 \\u043D\\u0430 \\u0434\\u0438\\u0430\\u0433\\u0440\\u0430\\u043C\\u043C\\u0430\\u0445.\",\"\\u0426\\u0432\\u0435\\u0442 \\u0433\\u043E\\u0440\\u0438\\u0437\\u043E\\u043D\\u0442\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u043B\\u0438\\u043D\\u0438\\u0439 \\u043D\\u0430 \\u0434\\u0438\\u0430\\u0433\\u0440\\u0430\\u043C\\u043C\\u0430\\u0445.\",\"\\u041A\\u0440\\u0430\\u0441\\u043D\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0432 \\u0432\\u0438\\u0437\\u0443\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F\\u0445 \\u0434\\u0438\\u0430\\u0433\\u0440\\u0430\\u043C\\u043C.\",\"\\u0421\\u0438\\u043D\\u0438\\u0439 \\u0446\\u0432\\u0435\\u0442, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0432 \\u0432\\u0438\\u0437\\u0443\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F\\u0445 \\u0434\\u0438\\u0430\\u0433\\u0440\\u0430\\u043C\\u043C.\",\"\\u0416\\u0435\\u043B\\u0442\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0432 \\u0432\\u0438\\u0437\\u0443\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F\\u0445 \\u0434\\u0438\\u0430\\u0433\\u0440\\u0430\\u043C\\u043C.\",\"\\u041E\\u0440\\u0430\\u043D\\u0436\\u0435\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0432 \\u0432\\u0438\\u0437\\u0443\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F\\u0445 \\u0434\\u0438\\u0430\\u0433\\u0440\\u0430\\u043C\\u043C.\",\"\\u0417\\u0435\\u043B\\u0435\\u043D\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0432 \\u0432\\u0438\\u0437\\u0443\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F\\u0445 \\u0434\\u0438\\u0430\\u0433\\u0440\\u0430\\u043C\\u043C.\",\"\\u041B\\u0438\\u043B\\u043E\\u0432\\u044B\\u0439 \\u0446\\u0432\\u0435\\u0442, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u044B\\u0439 \\u0432 \\u0432\\u0438\\u0437\\u0443\\u0430\\u043B\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F\\u0445 \\u0434\\u0438\\u0430\\u0433\\u0440\\u0430\\u043C\\u043C.\"],\"vs/platform/theme/common/iconRegistry\":[\"\\u0418\\u0434\\u0435\\u043D\\u0442\\u0438\\u0444\\u0438\\u043A\\u0430\\u0442\\u043E\\u0440 \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u043C\\u043E\\u0433\\u043E \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430. \\u0415\\u0441\\u043B\\u0438 \\u043F\\u0430\\u0440\\u0430\\u043C\\u0435\\u0442\\u0440 \\u043D\\u0435 \\u0437\\u0430\\u0434\\u0430\\u043D, \\u0438\\u0441\\u043F\\u043E\\u043B\\u044C\\u0437\\u0443\\u0435\\u0442\\u0441\\u044F \\u0448\\u0440\\u0438\\u0444\\u0442, \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u043D\\u044B\\u0439 \\u043F\\u0435\\u0440\\u0432\\u044B\\u043C.\",\"\\u0421\\u0438\\u043C\\u0432\\u043E\\u043B \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430, \\u0441\\u0432\\u044F\\u0437\\u0430\\u043D\\u043D\\u044B\\u0439 \\u0441 \\u043E\\u043F\\u0440\\u0435\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\\u043C \\u0437\\u043D\\u0430\\u0447\\u043A\\u0430.\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F \\u0437\\u0430\\u043A\\u0440\\u044B\\u0442\\u0438\\u044F \\u0432 \\u043C\\u0438\\u043D\\u0438-\\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F\\u0445.\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043F\\u0435\\u0440\\u0435\\u0445\\u043E\\u0434\\u0430 \\u043A \\u043F\\u0440\\u0435\\u0434\\u044B\\u0434\\u0443\\u0449\\u0435\\u043C\\u0443 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044E \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\",\"\\u0417\\u043D\\u0430\\u0447\\u043E\\u043A \\u0434\\u043B\\u044F \\u043F\\u0435\\u0440\\u0435\\u0445\\u043E\\u0434\\u0430 \\u043A \\u0441\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0435\\u043C\\u0443 \\u0440\\u0430\\u0441\\u043F\\u043E\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044E \\u0432 \\u0440\\u0435\\u0434\\u0430\\u043A\\u0442\\u043E\\u0440\\u0435.\"],\"vs/platform/undoRedo/common/undoRedoService\":[\"\\u0421\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0438\\u0435 \\u0444\\u0430\\u0439\\u043B\\u044B \\u0431\\u044B\\u043B\\u0438 \\u0437\\u0430\\u043A\\u0440\\u044B\\u0442\\u044B \\u0438 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u044B \\u043D\\u0430 \\u0434\\u0438\\u0441\\u043A\\u0435: {0}.\",\"\\u0421\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0438\\u0435 \\u0444\\u0430\\u0439\\u043B\\u044B \\u0431\\u044B\\u043B\\u0438 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u044B \\u043D\\u0435\\u0441\\u043E\\u0432\\u043C\\u0435\\u0441\\u0442\\u0438\\u043C\\u044B\\u043C \\u043E\\u0431\\u0440\\u0430\\u0437\\u043E\\u043C: {0}.\",'\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \"{0}\" \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432. {1}','\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \"{0}\" \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432. {1}','\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u044E \"{0}\" \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432, \\u0442\\u0430\\u043A \\u043A\\u0430\\u043A \\u0431\\u044B\\u043B\\u0438 \\u0432\\u043D\\u0435\\u0441\\u0435\\u043D\\u044B \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u044F \\u0432 {1}','\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \"{0}\" \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432, \\u0442\\u0430\\u043A \\u043A\\u0430\\u043A \\u0432 {1} \\u0443\\u0436\\u0435 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u044F \\u043E\\u0442\\u043C\\u0435\\u043D\\u044B \\u0438\\u043B\\u0438 \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0430 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F','\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \"{0}\" \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432, \\u0442\\u0430\\u043A \\u043A\\u0430\\u043A \\u0443\\u0436\\u0435 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u043B\\u0430\\u0441\\u044C \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u044F \\u043E\\u0442\\u043C\\u0435\\u043D\\u044B \\u0438\\u043B\\u0438 \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0430 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F','\\u0412\\u044B \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u043E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \"{0}\" \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432?',\"&&\\u041E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \\u0432 \\u0444\\u0430\\u0439\\u043B\\u0430\\u0445 {0}\",\"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u044D\\u0442\\u043E\\u0442 &&\\u0444\\u0430\\u0439\\u043B\",'\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \"{0}\", \\u0442\\u0430\\u043A \\u043A\\u0430\\u043A \\u0443\\u0436\\u0435 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u044F \\u043E\\u0442\\u043C\\u0435\\u043D\\u044B \\u0438\\u043B\\u0438 \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0430 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F','\\u0412\\u044B \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u043E\\u0442\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \"{0}\"?',\"&&\\u0414\\u0430\",\"\\u041D\\u0435\\u0442\",'\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0438\\u0442\\u044C \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u044E \"{0}\" \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432. {1}','\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0438\\u0442\\u044C \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u044E \"{0}\" \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432. {1}','\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0438\\u0442\\u044C \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u044E \"{0}\" \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432, \\u0442\\u0430\\u043A \\u043A\\u0430\\u043A \\u0431\\u044B\\u043B\\u0438 \\u0432\\u043D\\u0435\\u0441\\u0435\\u043D\\u044B \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u044F \\u0432 {1}','\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0438\\u0442\\u044C \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \"{0}\" \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432, \\u0442\\u0430\\u043A \\u043A\\u0430\\u043A \\u0434\\u043B\\u044F {1} \\u0443\\u0436\\u0435 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u044F \\u043E\\u0442\\u043C\\u0435\\u043D\\u044B \\u0438\\u043B\\u0438 \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0430 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F.','\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0438\\u0442\\u044C \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \"{0}\" \\u0434\\u043B\\u044F \\u0432\\u0441\\u0435\\u0445 \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432, \\u0442\\u0430\\u043A \\u043A\\u0430\\u043A \\u0443\\u0436\\u0435 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u043B\\u0430\\u0441\\u044C \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u044F \\u043E\\u0442\\u043C\\u0435\\u043D\\u044B \\u0438\\u043B\\u0438 \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0430 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F','\\u041D\\u0435 \\u0443\\u0434\\u0430\\u043B\\u043E\\u0441\\u044C \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0438\\u0442\\u044C \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435 \"{0}\", \\u0442\\u0430\\u043A \\u043A\\u0430\\u043A \\u0443\\u0436\\u0435 \\u0432\\u044B\\u043F\\u043E\\u043B\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u044F \\u043E\\u0442\\u043C\\u0435\\u043D\\u044B \\u0438\\u043B\\u0438 \\u043F\\u043E\\u0432\\u0442\\u043E\\u0440\\u0430 \\u0434\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u044F'],\"vs/platform/workspace/common/workspace\":[\"\\u0420\\u0430\\u0431\\u043E\\u0447\\u0430\\u044F \\u043E\\u0431\\u043B\\u0430\\u0441\\u0442\\u044C \\u043A\\u043E\\u0434\\u0430\"]});\n\n//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.ru.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/editor/editor.main.nls.zh-cn.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/editor/editor.main.nls.zh-cn\",{\"vs/base/browser/ui/actionbar/actionViewItems\":[\"{0} ({1})\"],\"vs/base/browser/ui/findinput/findInput\":[\"\\u8F93\\u5165\"],\"vs/base/browser/ui/findinput/findInputToggles\":[\"\\u533A\\u5206\\u5927\\u5C0F\\u5199\",\"\\u5168\\u5B57\\u5339\\u914D\",\"\\u4F7F\\u7528\\u6B63\\u5219\\u8868\\u8FBE\\u5F0F\"],\"vs/base/browser/ui/findinput/replaceInput\":[\"\\u8F93\\u5165\",\"\\u4FDD\\u7559\\u5927\\u5C0F\\u5199\"],\"vs/base/browser/ui/hover/hoverWidget\":[\"Inspect this in the accessible view with {0}.\",\"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\"],\"vs/base/browser/ui/iconLabel/iconLabelHover\":[\"\\u6B63\\u5728\\u52A0\\u8F7D\\u2026\"],\"vs/base/browser/ui/inputbox/inputBox\":[\"\\u9519\\u8BEF: {0}\",\"\\u8B66\\u544A: {0}\",\"\\u4FE1\\u606F: {0}\",\"\\u5BF9\\u4E8E\\u5386\\u53F2\\u8BB0\\u5F55\",\"\\u6E05\\u9664\\u7684\\u8F93\\u5165\"],\"vs/base/browser/ui/keybindingLabel/keybindingLabel\":[\"\\u672A\\u7ED1\\u5B9A\"],\"vs/base/browser/ui/selectBox/selectBoxCustom\":[\"\\u9009\\u62E9\\u6846\"],\"vs/base/browser/ui/toolbar/toolbar\":[\"\\u66F4\\u591A\\u64CD\\u4F5C...\"],\"vs/base/browser/ui/tree/abstractTree\":[\"\\u7B5B\\u9009\\u5668\",\"\\u6A21\\u7CCA\\u5339\\u914D\",\"\\u8981\\u7B5B\\u9009\\u7684\\u7C7B\\u578B\",\"\\u8981\\u641C\\u7D22\\u7684\\u7C7B\\u578B\",\"\\u8981\\u641C\\u7D22\\u7684\\u7C7B\\u578B\",\"\\u5173\\u95ED\",\"\\u672A\\u627E\\u5230\\u5143\\u7D20\\u3002\"],\"vs/base/common/actions\":[\"(\\u7A7A)\"],\"vs/base/common/errorMessage\":[\"{0}: {1}\",\"\\u53D1\\u751F\\u4E86\\u7CFB\\u7EDF\\u9519\\u8BEF ({0})\",\"\\u51FA\\u73B0\\u672A\\u77E5\\u9519\\u8BEF\\u3002\\u6709\\u5173\\u8BE6\\u7EC6\\u4FE1\\u606F\\uFF0C\\u8BF7\\u53C2\\u9605\\u65E5\\u5FD7\\u3002\",\"\\u51FA\\u73B0\\u672A\\u77E5\\u9519\\u8BEF\\u3002\\u6709\\u5173\\u8BE6\\u7EC6\\u4FE1\\u606F\\uFF0C\\u8BF7\\u53C2\\u9605\\u65E5\\u5FD7\\u3002\",\"{0} \\u4E2A(\\u5171 {1} \\u4E2A\\u9519\\u8BEF)\",\"\\u51FA\\u73B0\\u672A\\u77E5\\u9519\\u8BEF\\u3002\\u6709\\u5173\\u8BE6\\u7EC6\\u4FE1\\u606F\\uFF0C\\u8BF7\\u53C2\\u9605\\u65E5\\u5FD7\\u3002\"],\"vs/base/common/keybindingLabels\":[\"Ctrl\",\"Shift\",\"Alt\",\"Windows\",\"Ctrl\",\"Shift\",\"Alt\",\"\\u8D85\\u952E\",\"Control\",\"Shift\",\"\\u9009\\u9879\",\"Command\",\"Control\",\"Shift\",\"Alt\",\"Windows\",\"Control\",\"Shift\",\"Alt\",\"\\u8D85\\u952E\"],\"vs/base/common/platform\":[\"_\"],\"vs/editor/browser/controller/textAreaHandler\":[\"\\u7F16\\u8F91\\u5668\",\"\\u73B0\\u5728\\u65E0\\u6CD5\\u8BBF\\u95EE\\u7F16\\u8F91\\u5668\\u3002\",\"{0} \\u82E5\\u8981\\u542F\\u7528\\u5C4F\\u5E55\\u9605\\u8BFB\\u5668\\u4F18\\u5316\\u6A21\\u5F0F\\uFF0C\\u8BF7\\u4F7F\\u7528 {1}\",\"{0} \\u82E5\\u8981\\u542F\\u7528\\u5C4F\\u5E55\\u9605\\u8BFB\\u5668\\u4F18\\u5316\\u6A21\\u5F0F\\uFF0C\\u8BF7\\u4F7F\\u7528 {1} \\u6253\\u5F00\\u5FEB\\u901F\\u9009\\u53D6\\uFF0C\\u7136\\u540E\\u8FD0\\u884C\\u201C\\u5207\\u6362\\u5C4F\\u5E55\\u9605\\u8BFB\\u5668\\u8F85\\u52A9\\u529F\\u80FD\\u6A21\\u5F0F\\u201D\\u547D\\u4EE4\\uFF1B\\u5F53\\u524D\\u65E0\\u6CD5\\u901A\\u8FC7\\u952E\\u76D8\\u89E6\\u53D1\\u6B64\\u547D\\u4EE4\\u3002\",\"{0} \\u8BF7\\u901A\\u8FC7\\u4F7F\\u7528 {1} \\u8BBF\\u95EE\\u952E\\u7ED1\\u5B9A\\u7F16\\u8F91\\u5668\\u5E76\\u8FD0\\u884C\\u5B83\\uFF0C\\u4E3A\\u201C\\u5207\\u6362\\u5C4F\\u5E55\\u9605\\u8BFB\\u5668\\u8F85\\u52A9\\u529F\\u80FD\\u6A21\\u5F0F\\u201D\\u547D\\u4EE4\\u5206\\u914D\\u952E\\u7ED1\\u5B9A\\u3002\"],\"vs/editor/browser/coreCommands\":[\"\\u5373\\u4F7F\\u8F6C\\u5230\\u8F83\\u957F\\u7684\\u884C\\uFF0C\\u4E5F\\u4E00\\u76F4\\u5230\\u672B\\u5C3E\",\"\\u5373\\u4F7F\\u8F6C\\u5230\\u8F83\\u957F\\u7684\\u884C\\uFF0C\\u4E5F\\u4E00\\u76F4\\u5230\\u672B\\u5C3E\",\"\\u5DF2\\u5220\\u9664\\u8F85\\u52A9\\u6E38\\u6807\"],\"vs/editor/browser/editorExtensions\":[\"\\u64A4\\u6D88(&&U)\",\"\\u64A4\\u6D88\",\"\\u6062\\u590D(&&R)\",\"\\u6062\\u590D\",\"\\u5168\\u9009(&&S)\",\"\\u9009\\u62E9\\u5168\\u90E8\"],\"vs/editor/browser/widget/codeEditorWidget\":[\"\\u5DF2\\u5C06\\u5149\\u6807\\u6570\\u9650\\u5236\\u4E3A {0}\\u3002\\u8BF7\\u8003\\u8651\\u4F7F\\u7528 [\\u67E5\\u627E\\u548C\\u66FF\\u6362](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace)\\u8FDB\\u884C\\u8F83\\u5927\\u7684\\u66F4\\u6539\\u6216\\u589E\\u52A0\\u7F16\\u8F91\\u5668\\u591A\\u5149\\u6807\\u9650\\u5236\\u8BBE\\u7F6E\\u3002\",\"\\u589E\\u52A0\\u591A\\u5149\\u6807\\u9650\\u5236\"],\"vs/editor/browser/widget/diffEditor.contribution\":[\"\\u53EF\\u8BBF\\u95EE\\u7684\\u5DEE\\u5F02\\u67E5\\u770B\\u5668\",\"\\u8F6C\\u81F3\\u4E0B\\u4E00\\u4E2A\\u5DEE\\u5F02\",\"\\u6253\\u5F00\\u53EF\\u8BBF\\u95EE\\u5DEE\\u5F02\\u67E5\\u770B\\u5668\",\"\\u8F6C\\u81F3\\u4E0A\\u4E00\\u4E2A\\u5DEE\\u5F02\"],\"vs/editor/browser/widget/diffEditorWidget\":[\"\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u4E2D\\u63D2\\u5165\\u9879\\u7684\\u7EBF\\u6761\\u4FEE\\u9970\\u3002\",\"\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u4E2D\\u5220\\u9664\\u9879\\u7684\\u7EBF\\u6761\\u4FEE\\u9970\\u3002\",\" \\u4F7F\\u7528 Shift + F7 \\u5BFC\\u822A\\u66F4\\u6539\",\"\\u6587\\u4EF6\\u8FC7\\u5927\\uFF0C\\u65E0\\u6CD5\\u6BD4\\u8F83\\u3002\",\"\\u5355\\u51FB\\u4EE5\\u8FD8\\u539F\\u66F4\\u6539\"],\"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\":[\"\\u53EF\\u8BBF\\u95EE\\u5DEE\\u5F02\\u67E5\\u770B\\u5668\\u4E2D\\u201C\\u63D2\\u5165\\u201D\\u7684\\u56FE\\u6807\\u3002\",\"\\u53EF\\u8BBF\\u95EE\\u5DEE\\u5F02\\u67E5\\u770B\\u5668\\u4E2D\\u201C\\u5220\\u9664\\u201D\\u7684\\u56FE\\u6807\\u3002\",\"\\u53EF\\u8BBF\\u95EE\\u5DEE\\u5F02\\u67E5\\u770B\\u5668\\u4E2D\\u201C\\u5173\\u95ED\\u201D\\u7684\\u56FE\\u6807\\u3002\",\"\\u5173\\u95ED\",\"\\u53EF\\u8BBF\\u95EE\\u7684\\u5DEE\\u5F02\\u67E5\\u770B\\u5668\\u3002\\u4F7F\\u7528\\u5411\\u4E0A\\u548C\\u5411\\u4E0B\\u7BAD\\u5934\\u5BFC\\u822A\\u3002\",\"\\u672A\\u66F4\\u6539\\u884C\",\"\\u66F4\\u6539\\u4E86 1 \\u884C\",\"\\u66F4\\u6539\\u4E86 {0} \\u884C\",\"\\u5DEE\\u5F02 {0}/ {1}: \\u539F\\u59CB\\u884C {2}\\uFF0C{3}\\uFF0C\\u4FEE\\u6539\\u540E\\u7684\\u884C {4}\\uFF0C{5}\",\"\\u7A7A\\u767D\",\"{0} \\u672A\\u66F4\\u6539\\u7684\\u884C {1}\",\"{0}\\u539F\\u59CB\\u884C{1}\\u4FEE\\u6539\\u7684\\u884C{2}\",\"+ {0}\\u4FEE\\u6539\\u7684\\u884C{1}\",\"- {0}\\u539F\\u59CB\\u884C{1}\"],\"vs/editor/browser/widget/diffEditorWidget2/colors\":[\"\\u5728\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u4E2D\\u79FB\\u52A8\\u7684\\u6587\\u672C\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"The active border color for text that got moved in the diff editor.\"],\"vs/editor/browser/widget/diffEditorWidget2/decorations\":[\"\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u4E2D\\u63D2\\u5165\\u9879\\u7684\\u7EBF\\u6761\\u4FEE\\u9970\\u3002\",\"\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u4E2D\\u5220\\u9664\\u9879\\u7684\\u7EBF\\u6761\\u4FEE\\u9970\\u3002\",\"\\u5355\\u51FB\\u4EE5\\u8FD8\\u539F\\u66F4\\u6539\"],\"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\":[\" \\u4F7F\\u7528 {0} \\u6253\\u5F00\\u8F85\\u52A9\\u529F\\u80FD\\u5E2E\\u52A9\\u3002\"],\"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\":[\"\\u590D\\u5236\\u5DF2\\u5220\\u9664\\u7684\\u884C\",\"\\u590D\\u5236\\u5DF2\\u5220\\u9664\\u7684\\u884C\",\"\\u590D\\u5236\\u66F4\\u6539\\u7684\\u884C\",\"\\u590D\\u5236\\u66F4\\u6539\\u7684\\u884C\",\"\\u590D\\u5236\\u5DF2\\u5220\\u9664\\u7684\\u884C({0})\",\"\\u590D\\u5236\\u66F4\\u6539\\u7684\\u884C({0})\",\"\\u8FD8\\u539F\\u6B64\\u66F4\\u6539\"],\"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\":[\"Code moved with changes to line {0}-{1}\",\"Code moved with changes from line {0}-{1}\",\"Code moved to line {0}-{1}\",\"Code moved from line {0}-{1}\"],\"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\":[\"\\u6298\\u53E0\\u672A\\u66F4\\u6539\\u7684\\u533A\\u57DF\",\"Click or drag to show more above\",\"Show all\",\"Click or drag to show more below\",\"{0} hidden lines\",\"Double click to unfold\"],\"vs/editor/browser/widget/diffReview\":[\"\\u5DEE\\u5F02\\u8BC4\\u5BA1\\u4E2D\\u7684\\u201C\\u63D2\\u5165\\u201D\\u56FE\\u6807\\u3002\",\"\\u5DEE\\u5F02\\u8BC4\\u5BA1\\u4E2D\\u7684\\u201C\\u5220\\u9664\\u201D\\u56FE\\u6807\\u3002\",\"\\u5DEE\\u5F02\\u8BC4\\u5BA1\\u4E2D\\u7684\\u201C\\u5173\\u95ED\\u201D\\u56FE\\u6807\\u3002\",\"\\u5173\\u95ED\",\"\\u672A\\u66F4\\u6539\\u884C\",\"\\u66F4\\u6539\\u4E86 1 \\u884C\",\"\\u66F4\\u6539\\u4E86 {0} \\u884C\",\"\\u5DEE\\u5F02 {0}/ {1}: \\u539F\\u59CB\\u884C {2}\\uFF0C{3}\\uFF0C\\u4FEE\\u6539\\u540E\\u7684\\u884C {4}\\uFF0C{5}\",\"\\u7A7A\\u767D\",\"{0} \\u672A\\u66F4\\u6539\\u7684\\u884C {1}\",\"{0}\\u539F\\u59CB\\u884C{1}\\u4FEE\\u6539\\u7684\\u884C{2}\",\"+ {0}\\u4FEE\\u6539\\u7684\\u884C{1}\",\"- {0}\\u539F\\u59CB\\u884C{1}\"],\"vs/editor/browser/widget/inlineDiffMargin\":[\"\\u590D\\u5236\\u5DF2\\u5220\\u9664\\u7684\\u884C\",\"\\u590D\\u5236\\u5DF2\\u5220\\u9664\\u7684\\u884C\",\"\\u590D\\u5236\\u66F4\\u6539\\u7684\\u884C\",\"\\u590D\\u5236\\u66F4\\u6539\\u7684\\u884C\",\"\\u590D\\u5236\\u5DF2\\u5220\\u9664\\u7684\\u884C({0})\",\"\\u590D\\u5236\\u66F4\\u6539\\u7684\\u884C({0})\",\"\\u8FD8\\u539F\\u6B64\\u66F4\\u6539\",\"\\u590D\\u5236\\u5DF2\\u5220\\u9664\\u7684\\u884C({0})\",\"\\u590D\\u5236\\u66F4\\u6539\\u7684\\u884C({0})\"],\"vs/editor/common/config/editorConfigurationSchema\":[\"\\u7F16\\u8F91\\u5668\",\"\\u4E00\\u4E2A\\u5236\\u8868\\u7B26\\u7B49\\u4E8E\\u7684\\u7A7A\\u683C\\u6570\\u3002\\u5F53 {0} \\u6253\\u5F00\\u65F6\\uFF0C\\u5C06\\u6839\\u636E\\u6587\\u4EF6\\u5185\\u5BB9\\u66FF\\u4EE3\\u6B64\\u8BBE\\u7F6E\\u3002\",'\\u7528\\u4E8E\\u7F29\\u8FDB\\u6216 `\"tabSize\"` \\u7684\\u7A7A\\u683C\\u6570\\uFF0C\\u53EF\\u4F7F\\u7528 `#editor.tabSize#` \\u4E2D\\u7684\\u503C\\u3002\\u5F53 `#editor.detectIndentation#` \\u5904\\u4E8E\\u6253\\u5F00\\u72B6\\u6001\\u65F6\\uFF0C\\u5C06\\u6839\\u636E\\u6587\\u4EF6\\u5185\\u5BB9\\u66FF\\u4EE3\\u6B64\\u8BBE\\u7F6E\\u3002',\"\\u6309 `Tab` \\u65F6\\u63D2\\u5165\\u7A7A\\u683C\\u3002\\u5F53 {0} \\u6253\\u5F00\\u65F6\\uFF0C\\u5C06\\u6839\\u636E\\u6587\\u4EF6\\u5185\\u5BB9\\u66FF\\u4EE3\\u6B64\\u8BBE\\u7F6E\\u3002\",\"\\u63A7\\u5236\\u5728\\u57FA\\u4E8E\\u6587\\u4EF6\\u5185\\u5BB9\\u6253\\u5F00\\u6587\\u4EF6\\u65F6\\u662F\\u5426\\u81EA\\u52A8\\u68C0\\u6D4B {0} \\u548C {1}\\u3002\",\"\\u5220\\u9664\\u81EA\\u52A8\\u63D2\\u5165\\u7684\\u5C3E\\u968F\\u7A7A\\u767D\\u7B26\\u53F7\\u3002\",\"\\u5BF9\\u5927\\u578B\\u6587\\u4EF6\\u8FDB\\u884C\\u7279\\u6B8A\\u5904\\u7406\\uFF0C\\u7981\\u7528\\u67D0\\u4E9B\\u5185\\u5B58\\u5BC6\\u96C6\\u578B\\u529F\\u80FD\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u6839\\u636E\\u6587\\u6863\\u4E2D\\u7684\\u5B57\\u8BCD\\u8BA1\\u7B97\\u81EA\\u52A8\\u8865\\u5168\\u5217\\u8868\\u3002\",\"\\u4EC5\\u5EFA\\u8BAE\\u6D3B\\u52A8\\u6587\\u6863\\u4E2D\\u7684\\u5B57\\u8BCD\\u3002\",\"\\u5EFA\\u8BAE\\u4F7F\\u7528\\u540C\\u4E00\\u8BED\\u8A00\\u7684\\u6240\\u6709\\u6253\\u5F00\\u7684\\u6587\\u6863\\u4E2D\\u7684\\u5B57\\u8BCD\\u3002\",\"\\u5EFA\\u8BAE\\u6240\\u6709\\u6253\\u5F00\\u7684\\u6587\\u6863\\u4E2D\\u7684\\u5B57\\u8BCD\\u3002\",\"\\u63A7\\u5236\\u901A\\u8FC7\\u54EA\\u4E9B\\u6587\\u6863\\u8BA1\\u7B97\\u57FA\\u4E8E\\u5B57\\u8BCD\\u7684\\u8865\\u5168\\u3002\",\"\\u5BF9\\u6240\\u6709\\u989C\\u8272\\u4E3B\\u9898\\u542F\\u7528\\u8BED\\u4E49\\u7A81\\u51FA\\u663E\\u793A\\u3002\",\"\\u5BF9\\u6240\\u6709\\u989C\\u8272\\u4E3B\\u9898\\u7981\\u7528\\u8BED\\u4E49\\u7A81\\u51FA\\u663E\\u793A\\u3002\",'\\u8BED\\u4E49\\u7A81\\u51FA\\u663E\\u793A\\u662F\\u7531\\u5F53\\u524D\\u989C\\u8272\\u4E3B\\u9898\\u7684 \"semanticHighlighting\" \\u8BBE\\u7F6E\\u914D\\u7F6E\\u7684\\u3002',\"\\u63A7\\u5236\\u662F\\u5426\\u4E3A\\u652F\\u6301\\u5B83\\u7684\\u8BED\\u8A00\\u663E\\u793A\\u8BED\\u4E49\\u7A81\\u51FA\\u663E\\u793A\\u3002\",\"\\u4FDD\\u6301\\u901F\\u89C8\\u7F16\\u8F91\\u5668\\u5904\\u4E8E\\u6253\\u5F00\\u72B6\\u6001\\uFF0C\\u5373\\u4F7F\\u53CC\\u51FB\\u5176\\u4E2D\\u7684\\u5185\\u5BB9\\u6216\\u8005\\u70B9\\u51FB `Escape` \\u952E\\u4E5F\\u662F\\u5982\\u6B64\\u3002\",\"\\u7531\\u4E8E\\u6027\\u80FD\\u539F\\u56E0\\uFF0C\\u8D85\\u8FC7\\u8FD9\\u4E2A\\u957F\\u5EA6\\u7684\\u884C\\u5C06\\u4E0D\\u4F1A\\u88AB\\u6807\\u8BB0\",\"\\u63A7\\u5236\\u662F\\u5426\\u5E94\\u5728 Web \\u8F85\\u52A9\\u8FDB\\u7A0B\\u4E0A\\u5F02\\u6B65\\u8FDB\\u884C\\u6807\\u8BB0\\u5316\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5E94\\u8BB0\\u5F55\\u5F02\\u6B65\\u8BCD\\u6C47\\u5207\\u5206\\u3002\\u4EC5\\u7528\\u4E8E\\u8C03\\u8BD5\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5E94\\u5BF9\\u65E7\\u7248\\u540E\\u53F0\\u4EE4\\u724C\\u5316\\u9A8C\\u8BC1\\u5F02\\u6B65\\u4EE4\\u724C\\u5316\\u3002\\u53EF\\u80FD\\u4F1A\\u51CF\\u6162\\u4EE4\\u724C\\u5316\\u901F\\u5EA6\\u3002\\u4EC5\\u7528\\u4E8E\\u8C03\\u8BD5\\u3002\",\"\\u5B9A\\u4E49\\u589E\\u52A0\\u548C\\u51CF\\u5C11\\u7F29\\u8FDB\\u7684\\u62EC\\u53F7\\u3002\",\"\\u5DE6\\u65B9\\u62EC\\u53F7\\u5B57\\u7B26\\u6216\\u5B57\\u7B26\\u4E32\\u5E8F\\u5217\\u3002\",\"\\u53F3\\u65B9\\u62EC\\u53F7\\u5B57\\u7B26\\u6216\\u5B57\\u7B26\\u4E32\\u5E8F\\u5217\\u3002\",\"\\u5982\\u679C\\u542F\\u7528\\u65B9\\u62EC\\u53F7\\u5BF9\\u7740\\u8272\\uFF0C\\u5219\\u6309\\u7167\\u5176\\u5D4C\\u5957\\u7EA7\\u522B\\u5B9A\\u4E49\\u5DF2\\u7740\\u8272\\u7684\\u65B9\\u62EC\\u53F7\\u5BF9\\u3002\",\"\\u5DE6\\u65B9\\u62EC\\u53F7\\u5B57\\u7B26\\u6216\\u5B57\\u7B26\\u4E32\\u5E8F\\u5217\\u3002\",\"\\u53F3\\u65B9\\u62EC\\u53F7\\u5B57\\u7B26\\u6216\\u5B57\\u7B26\\u4E32\\u5E8F\\u5217\\u3002\",\"\\u8D85\\u65F6(\\u4EE5\\u6BEB\\u79D2\\u4E3A\\u5355\\u4F4D)\\uFF0C\\u4E4B\\u540E\\u5C06\\u53D6\\u6D88\\u5DEE\\u5F02\\u8BA1\\u7B97\\u3002\\u4F7F\\u75280\\u8868\\u793A\\u6CA1\\u6709\\u8D85\\u65F6\\u3002\",\"\\u8981\\u4E3A\\u5176\\u8BA1\\u7B97\\u5DEE\\u5F02\\u7684\\u6700\\u5927\\u6587\\u4EF6\\u5927\\u5C0F(MB)\\u3002\\u4F7F\\u7528 0 \\u8868\\u793A\\u65E0\\u9650\\u5236\\u3002\",\"\\u63A7\\u5236\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u7684\\u663E\\u793A\\u65B9\\u5F0F\\u662F\\u5E76\\u6392\\u8FD8\\u662F\\u5185\\u8054\\u3002\",\"If the diff editor width is smaller than this value, the inline view is used.\",\"If enabled and the editor width is too small, the inline view is used.\",\"\\u542F\\u7528\\u540E\\uFF0C\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u4F1A\\u5728\\u5176\\u5B57\\u5F62\\u8FB9\\u8DDD\\u4E2D\\u663E\\u793A\\u7BAD\\u5934\\u4EE5\\u8FD8\\u539F\\u66F4\\u6539\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0C\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u5C06\\u5FFD\\u7565\\u524D\\u5BFC\\u7A7A\\u683C\\u6216\\u5C3E\\u968F\\u7A7A\\u683C\\u4E2D\\u7684\\u66F4\\u6539\\u3002\",\"\\u63A7\\u5236\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u4E3A\\u6DFB\\u52A0/\\u5220\\u9664\\u7684\\u66F4\\u6539\\u663E\\u793A +/- \\u6307\\u793A\\u7B26\\u53F7\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u663E\\u793A CodeLens\\u3002\",\"\\u6C38\\u4E0D\\u6362\\u884C\\u3002\",\"\\u5C06\\u5728\\u89C6\\u533A\\u5BBD\\u5EA6\\u5904\\u6362\\u884C\\u3002\",\"\\u884C\\u5C06\\u6839\\u636E {0} \\u8BBE\\u7F6E\\u8FDB\\u884C\\u6362\\u884C\\u3002\",\"\\u4F7F\\u7528\\u65E7\\u5DEE\\u5F02\\u7B97\\u6CD5\\u3002\",\"\\u4F7F\\u7528\\u9AD8\\u7EA7\\u5DEE\\u5F02\\u7B97\\u6CD5\\u3002\",\"Controls whether the diff editor shows unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as a minimum for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as context when comparing unchanged regions. Only works when {0} is set.\",\"\\u63A7\\u5236\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5E94\\u663E\\u793A\\u68C0\\u6D4B\\u5230\\u7684\\u4EE3\\u7801\\u79FB\\u52A8\\u60C5\\u51B5\\u3002\\u4EC5\\u5F53\\u8BBE\\u7F6E\\u4E86 {0} \\u65F6\\u624D\\u6709\\u6548\\u3002\",\"\\u63A7\\u5236\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u662F\\u4F7F\\u7528\\u65B0\\u5B9E\\u73B0\\u8FD8\\u662F\\u65E7\\u5B9E\\u73B0\\u3002\",\"\\u63A7\\u5236\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u663E\\u793A\\u7A7A\\u4FEE\\u9970\\uFF0C\\u4EE5\\u67E5\\u770B\\u63D2\\u5165\\u6216\\u5220\\u9664\\u5B57\\u7B26\\u7684\\u4F4D\\u7F6E\\u3002\"],\"vs/editor/common/config/editorOptions\":[\"\\u8FDE\\u63A5\\u5C4F\\u5E55\\u9605\\u8BFB\\u5668\\u540E\\u4F7F\\u7528\\u5E73\\u53F0 API \\u8FDB\\u884C\\u68C0\\u6D4B\",\"\\u9488\\u5BF9\\u5C4F\\u5E55\\u9605\\u8BFB\\u5668\\u7684\\u4F7F\\u7528\\u8FDB\\u884C\\u4F18\\u5316\",\"\\u5047\\u5B9A\\u672A\\u8FDE\\u63A5\\u5C4F\\u5E55\\u9605\\u8BFB\\u5668\",\"\\u63A7\\u5236 UI \\u662F\\u5426\\u5E94\\u5728\\u5DF2\\u9488\\u5BF9\\u5C4F\\u5E55\\u9605\\u8BFB\\u5668\\u8FDB\\u884C\\u4F18\\u5316\\u7684\\u6A21\\u5F0F\\u4E0B\\u8FD0\\u884C\\u3002\",\"\\u63A7\\u5236\\u5728\\u6CE8\\u91CA\\u65F6\\u662F\\u5426\\u63D2\\u5165\\u7A7A\\u683C\\u5B57\\u7B26\\u3002\",\"\\u63A7\\u5236\\u5728\\u5BF9\\u884C\\u6CE8\\u91CA\\u6267\\u884C\\u5207\\u6362\\u3001\\u6DFB\\u52A0\\u6216\\u5220\\u9664\\u64CD\\u4F5C\\u65F6\\uFF0C\\u662F\\u5426\\u5E94\\u5FFD\\u7565\\u7A7A\\u884C\\u3002\",\"\\u63A7\\u5236\\u5728\\u6CA1\\u6709\\u9009\\u62E9\\u5185\\u5BB9\\u65F6\\u8FDB\\u884C\\u590D\\u5236\\u662F\\u5426\\u590D\\u5236\\u5F53\\u524D\\u884C\\u3002\",\"\\u63A7\\u5236\\u5728\\u952E\\u5165\\u65F6\\u5149\\u6807\\u662F\\u5426\\u5E94\\u8DF3\\u8F6C\\u4EE5\\u67E5\\u627E\\u5339\\u914D\\u9879\\u3002\",\"\\u5207\\u52FF\\u4E3A\\u7F16\\u8F91\\u5668\\u9009\\u62E9\\u4E2D\\u7684\\u641C\\u7D22\\u5B57\\u7B26\\u4E32\\u8BBE\\u5B9A\\u79CD\\u5B50\\u3002\",\"\\u59CB\\u7EC8\\u4E3A\\u7F16\\u8F91\\u5668\\u9009\\u62E9\\u4E2D\\u7684\\u641C\\u7D22\\u5B57\\u7B26\\u4E32\\u8BBE\\u5B9A\\u79CD\\u5B50\\uFF0C\\u5305\\u62EC\\u5149\\u6807\\u4F4D\\u7F6E\\u7684\\u5B57\\u8BCD\\u3002\",\"\\u4EC5\\u4E3A\\u7F16\\u8F91\\u5668\\u9009\\u62E9\\u4E2D\\u7684\\u641C\\u7D22\\u5B57\\u7B26\\u4E32\\u8BBE\\u5B9A\\u79CD\\u5B50\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5C06\\u7F16\\u8F91\\u5668\\u9009\\u4E2D\\u5185\\u5BB9\\u4F5C\\u4E3A\\u641C\\u7D22\\u8BCD\\u586B\\u5165\\u5230\\u67E5\\u627E\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u3002\",\"\\u4ECE\\u4E0D\\u81EA\\u52A8\\u6253\\u5F00\\u201C\\u5728\\u9009\\u5B9A\\u5185\\u5BB9\\u4E2D\\u67E5\\u627E\\u201D(\\u9ED8\\u8BA4)\\u3002\",\"\\u59CB\\u7EC8\\u81EA\\u52A8\\u6253\\u5F00\\u201C\\u5728\\u9009\\u5B9A\\u5185\\u5BB9\\u4E2D\\u67E5\\u627E\\u201D\\u3002\",\"\\u9009\\u62E9\\u591A\\u884C\\u5185\\u5BB9\\u65F6\\uFF0C\\u81EA\\u52A8\\u6253\\u5F00\\u201C\\u5728\\u9009\\u5B9A\\u5185\\u5BB9\\u4E2D\\u67E5\\u627E\\u201D\\u3002\",\"\\u63A7\\u5236\\u81EA\\u52A8\\u6253\\u5F00\\u201C\\u5728\\u9009\\u5B9A\\u5185\\u5BB9\\u4E2D\\u67E5\\u627E\\u201D\\u7684\\u6761\\u4EF6\\u3002\",\"\\u63A7\\u5236\\u201C\\u67E5\\u627E\\u201D\\u5C0F\\u7EC4\\u4EF6\\u662F\\u5426\\u8BFB\\u53D6\\u6216\\u4FEE\\u6539 macOS \\u7684\\u5171\\u4EAB\\u67E5\\u627E\\u526A\\u8D34\\u677F\\u3002\",'\\u63A7\\u5236 \"\\u67E5\\u627E\\u5C0F\\u90E8\\u4EF6\" \\u662F\\u5426\\u5E94\\u5728\\u7F16\\u8F91\\u5668\\u9876\\u90E8\\u6DFB\\u52A0\\u989D\\u5916\\u7684\\u884C\\u3002\\u5982\\u679C\\u4E3A true, \\u5219\\u53EF\\u4EE5\\u5728 \"\\u67E5\\u627E\\u5C0F\\u5DE5\\u5177\" \\u53EF\\u89C1\\u65F6\\u6EDA\\u52A8\\u5230\\u7B2C\\u4E00\\u884C\\u4E4B\\u5916\\u3002',\"\\u63A7\\u5236\\u5728\\u627E\\u4E0D\\u5230\\u5176\\u4ED6\\u5339\\u914D\\u9879\\u65F6\\uFF0C\\u662F\\u5426\\u81EA\\u52A8\\u4ECE\\u5F00\\u5934(\\u6216\\u7ED3\\u5C3E)\\u91CD\\u65B0\\u5F00\\u59CB\\u641C\\u7D22\\u3002\",'\\u542F\\u7528/\\u7981\\u7528\\u5B57\\u4F53\\u8FDE\\u5B57(\"calt\" \\u548C \"liga\" \\u5B57\\u4F53\\u7279\\u6027)\\u3002\\u5C06\\u6B64\\u66F4\\u6539\\u4E3A\\u5B57\\u7B26\\u4E32\\uFF0C\\u53EF\\u5BF9 \"font-feature-settings\" CSS \\u5C5E\\u6027\\u8FDB\\u884C\\u7CBE\\u7EC6\\u63A7\\u5236\\u3002','\\u663E\\u5F0F \"font-feature-settings\" CSS \\u5C5E\\u6027\\u3002\\u5982\\u679C\\u53EA\\u9700\\u6253\\u5F00/\\u5173\\u95ED\\u8FDE\\u5B57\\uFF0C\\u53EF\\u4EE5\\u6539\\u4E3A\\u4F20\\u9012\\u5E03\\u5C14\\u503C\\u3002','\\u914D\\u7F6E\\u5B57\\u4F53\\u8FDE\\u5B57\\u6216\\u5B57\\u4F53\\u7279\\u6027\\u3002\\u53EF\\u4EE5\\u662F\\u7528\\u4E8E\\u542F\\u7528/\\u7981\\u7528\\u8FDE\\u5B57\\u7684\\u5E03\\u5C14\\u503C\\uFF0C\\u6216\\u7528\\u4E8E\\u8BBE\\u7F6E CSS \"font-feature-settings\" \\u5C5E\\u6027\\u503C\\u7684\\u5B57\\u7B26\\u4E32\\u3002',\"\\u542F\\u7528/\\u7981\\u7528\\u4ECE font-weight \\u5230 font-variation-settings \\u7684\\u8F6C\\u6362\\u3002\\u5C06\\u6B64\\u9879\\u66F4\\u6539\\u4E3A\\u5B57\\u7B26\\u4E32\\uFF0C\\u4EE5\\u4FBF\\u5BF9\\u201Cfont-variation-settings\\u201DCSS \\u5C5E\\u6027\\u8FDB\\u884C\\u7EC6\\u5316\\u63A7\\u5236\\u3002\",\"\\u663E\\u5F0F\\u201Cfont-variation-settings\\u201DCSS \\u5C5E\\u6027\\u3002\\u5982\\u679C\\u53EA\\u9700\\u5C06 font-weight \\u8F6C\\u6362\\u4E3A font-variation-settings\\uFF0C\\u5219\\u53EF\\u4EE5\\u6539\\u4E3A\\u4F20\\u9012\\u5E03\\u5C14\\u503C\\u3002\",\"\\u914D\\u7F6E\\u5B57\\u4F53\\u53D8\\u4F53\\u3002\\u53EF\\u4EE5\\u662F\\u7528\\u4E8E\\u542F\\u7528/\\u7981\\u7528\\u4ECE font-weight \\u5230 font-variation-settings \\u7684\\u8F6C\\u6362\\u7684\\u5E03\\u5C14\\u503C\\uFF0C\\u4E5F\\u53EF\\u4EE5\\u662F CSS\\u201Cfont-variation-settings\\u201D\\u5C5E\\u6027\\u503C\\u7684\\u5B57\\u7B26\\u4E32\\u3002\",\"\\u63A7\\u5236\\u5B57\\u4F53\\u5927\\u5C0F(\\u50CF\\u7D20)\\u3002\",\"\\u4EC5\\u5141\\u8BB8\\u4F7F\\u7528\\u5173\\u952E\\u5B57\\u201C\\u6B63\\u5E38\\u201D\\u548C\\u201C\\u52A0\\u7C97\\u201D\\uFF0C\\u6216\\u4F7F\\u7528\\u4ECB\\u4E8E 1 \\u81F3 1000 \\u4E4B\\u95F4\\u7684\\u6570\\u5B57\\u3002\",\"\\u63A7\\u5236\\u5B57\\u4F53\\u7C97\\u7EC6\\u3002\\u63A5\\u53D7\\u5173\\u952E\\u5B57\\u201C\\u6B63\\u5E38\\u201D\\u548C\\u201C\\u52A0\\u7C97\\u201D\\uFF0C\\u6216\\u8005\\u63A5\\u53D7\\u4ECB\\u4E8E 1 \\u81F3 1000 \\u4E4B\\u95F4\\u7684\\u6570\\u5B57\\u3002\",\"\\u663E\\u793A\\u7ED3\\u679C\\u7684\\u901F\\u89C8\\u89C6\\u56FE(\\u9ED8\\u8BA4)\",\"\\u8F6C\\u5230\\u4E3B\\u7ED3\\u679C\\u5E76\\u663E\\u793A\\u901F\\u89C8\\u89C6\\u56FE\",\"\\u8F6C\\u5230\\u4E3B\\u7ED3\\u679C\\uFF0C\\u5E76\\u5BF9\\u5176\\u4ED6\\u7ED3\\u679C\\u542F\\u7528\\u65E0\\u901F\\u89C8\\u5BFC\\u822A\",'\\u6B64\\u8BBE\\u7F6E\\u5DF2\\u5F03\\u7528\\uFF0C\\u8BF7\\u6539\\u7528\\u5355\\u72EC\\u7684\\u8BBE\\u7F6E\\uFF0C\\u5982\"editor.editor.gotoLocation.multipleDefinitions\"\\u6216\"editor.editor.gotoLocation.multipleImplementations\"\\u3002','\\u63A7\\u5236\\u5B58\\u5728\\u591A\\u4E2A\\u76EE\\u6807\\u4F4D\\u7F6E\\u65F6\"\\u8F6C\\u5230\\u5B9A\\u4E49\"\\u547D\\u4EE4\\u7684\\u884C\\u4E3A\\u3002','\\u63A7\\u5236\\u5B58\\u5728\\u591A\\u4E2A\\u76EE\\u6807\\u4F4D\\u7F6E\\u65F6\"\\u8F6C\\u5230\\u7C7B\\u578B\\u5B9A\\u4E49\"\\u547D\\u4EE4\\u7684\\u884C\\u4E3A\\u3002','\\u63A7\\u5236\\u5B58\\u5728\\u591A\\u4E2A\\u76EE\\u6807\\u4F4D\\u7F6E\\u65F6\"\\u8F6C\\u5230\\u58F0\\u660E\"\\u547D\\u4EE4\\u7684\\u884C\\u4E3A\\u3002','\\u63A7\\u5236\\u5B58\\u5728\\u591A\\u4E2A\\u76EE\\u6807\\u4F4D\\u7F6E\\u65F6\"\\u8F6C\\u5230\\u5B9E\\u73B0\"\\u547D\\u4EE4\\u7684\\u884C\\u4E3A\\u3002','\\u63A7\\u5236\\u5B58\\u5728\\u591A\\u4E2A\\u76EE\\u6807\\u4F4D\\u7F6E\\u65F6\"\\u8F6C\\u5230\\u5F15\\u7528\"\\u547D\\u4EE4\\u7684\\u884C\\u4E3A\\u3002','\\u5F53\"\\u8F6C\\u5230\\u5B9A\\u4E49\"\\u7684\\u7ED3\\u679C\\u4E3A\\u5F53\\u524D\\u4F4D\\u7F6E\\u65F6\\u5C06\\u8981\\u6267\\u884C\\u7684\\u66FF\\u4EE3\\u547D\\u4EE4\\u7684 ID\\u3002','\\u5F53\"\\u8F6C\\u5230\\u7C7B\\u578B\\u5B9A\\u4E49\"\\u7684\\u7ED3\\u679C\\u662F\\u5F53\\u524D\\u4F4D\\u7F6E\\u65F6\\u6B63\\u5728\\u6267\\u884C\\u7684\\u5907\\u7528\\u547D\\u4EE4 ID\\u3002','\\u5F53\"\\u8F6C\\u5230\\u58F0\\u660E\"\\u7684\\u7ED3\\u679C\\u4E3A\\u5F53\\u524D\\u4F4D\\u7F6E\\u65F6\\u5C06\\u8981\\u6267\\u884C\\u7684\\u66FF\\u4EE3\\u547D\\u4EE4\\u7684 ID\\u3002','\\u5F53\"\\u8F6C\\u5230\\u5B9E\\u73B0\"\\u7684\\u7ED3\\u679C\\u4E3A\\u5F53\\u524D\\u4F4D\\u7F6E\\u65F6\\u5C06\\u8981\\u6267\\u884C\\u7684\\u66FF\\u4EE3\\u547D\\u4EE4\\u7684 ID\\u3002','\\u5F53\"\\u8F6C\\u5230\\u5F15\\u7528\"\\u7684\\u7ED3\\u679C\\u662F\\u5F53\\u524D\\u4F4D\\u7F6E\\u65F6\\u6B63\\u5728\\u6267\\u884C\\u7684\\u66FF\\u4EE3\\u547D\\u4EE4 ID\\u3002',\"\\u63A7\\u5236\\u662F\\u5426\\u663E\\u793A\\u60AC\\u505C\\u63D0\\u793A\\u3002\",\"\\u63A7\\u5236\\u663E\\u793A\\u60AC\\u505C\\u63D0\\u793A\\u524D\\u7684\\u7B49\\u5F85\\u65F6\\u95F4 (\\u6BEB\\u79D2)\\u3002\",\"\\u63A7\\u5236\\u5F53\\u9F20\\u6807\\u79FB\\u52A8\\u5230\\u60AC\\u505C\\u63D0\\u793A\\u4E0A\\u65F6\\uFF0C\\u5176\\u662F\\u5426\\u4FDD\\u6301\\u53EF\\u89C1\\u3002\",\"\\u5982\\u679C\\u6709\\u7A7A\\u95F4\\uFF0C\\u9996\\u9009\\u5728\\u7EBF\\u6761\\u4E0A\\u65B9\\u663E\\u793A\\u60AC\\u505C\\u3002\",\"\\u5047\\u5B9A\\u6240\\u6709\\u5B57\\u7B26\\u7684\\u5BBD\\u5EA6\\u76F8\\u540C\\u3002\\u8FD9\\u662F\\u4E00\\u79CD\\u5FEB\\u901F\\u7B97\\u6CD5\\uFF0C\\u9002\\u7528\\u4E8E\\u7B49\\u5BBD\\u5B57\\u4F53\\u548C\\u67D0\\u4E9B\\u5B57\\u5F62\\u5BBD\\u5EA6\\u76F8\\u7B49\\u7684\\u6587\\u5B57(\\u5982\\u62C9\\u4E01\\u5B57\\u7B26)\\u3002\",\"\\u5C06\\u5305\\u88C5\\u70B9\\u8BA1\\u7B97\\u59D4\\u6258\\u7ED9\\u6D4F\\u89C8\\u5668\\u3002\\u8FD9\\u662F\\u4E00\\u4E2A\\u7F13\\u6162\\u7B97\\u6CD5\\uFF0C\\u53EF\\u80FD\\u4F1A\\u5BFC\\u81F4\\u5927\\u578B\\u6587\\u4EF6\\u88AB\\u51BB\\u7ED3\\uFF0C\\u4F46\\u5B83\\u5728\\u6240\\u6709\\u60C5\\u51B5\\u4E0B\\u90FD\\u6B63\\u5E38\\u5DE5\\u4F5C\\u3002\",\"\\u63A7\\u5236\\u8BA1\\u7B97\\u5305\\u88C5\\u70B9\\u7684\\u7B97\\u6CD5\\u3002\\u8BF7\\u6CE8\\u610F\\uFF0C\\u5728\\u8F85\\u52A9\\u529F\\u80FD\\u6A21\\u5F0F\\u4E0B\\uFF0C\\u9AD8\\u7EA7\\u7248\\u5C06\\u7528\\u4E8E\\u63D0\\u4F9B\\u6700\\u4F73\\u4F53\\u9A8C\\u3002\",\"\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u542F\\u7528\\u4EE3\\u7801\\u64CD\\u4F5C\\u5C0F\\u706F\\u6CE1\\u63D0\\u793A\\u3002\",\"\\u5728\\u7F16\\u8F91\\u5668\\u9876\\u90E8\\u7684\\u6EDA\\u52A8\\u8FC7\\u7A0B\\u4E2D\\u663E\\u793A\\u5D4C\\u5957\\u7684\\u5F53\\u524D\\u4F5C\\u7528\\u57DF\\u3002\",\"\\u5B9A\\u4E49\\u8981\\u663E\\u793A\\u7684\\u6700\\u5927\\u7C98\\u6EDE\\u884C\\u6570\\u3002\",\"\\u5B9A\\u4E49\\u7528\\u4E8E\\u786E\\u5B9A\\u8981\\u7C98\\u8D34\\u7684\\u884C\\u7684\\u6A21\\u578B\\u3002\\u5982\\u679C\\u5927\\u7EB2\\u6A21\\u578B\\u4E0D\\u5B58\\u5728\\uFF0C\\u5B83\\u5C06\\u56DE\\u9000\\u5230\\u56DE\\u9000\\u5230\\u7F29\\u8FDB\\u6A21\\u578B\\u7684\\u6298\\u53E0\\u63D0\\u4F9B\\u7A0B\\u5E8F\\u6A21\\u578B\\u4E0A\\u3002\\u5728\\u6240\\u6709\\u4E09\\u79CD\\u60C5\\u51B5\\u4E0B\\u90FD\\u9075\\u5FAA\\u6B64\\u987A\\u5E8F\\u3002\",\"Enable scrolling of the sticky scroll widget with the editor's horizontal scrollbar.\",\"\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u542F\\u7528\\u5185\\u8054\\u63D0\\u793A\\u3002\",\"\\u5DF2\\u542F\\u7528\\u5185\\u5D4C\\u63D0\\u793A\",\"\\u9ED8\\u8BA4\\u60C5\\u51B5\\u4E0B\\u663E\\u793A\\u5185\\u5D4C\\u63D0\\u793A\\uFF0C\\u5E76\\u5728\\u6309\\u4F4F {0} \\u65F6\\u9690\\u85CF\",\"\\u9ED8\\u8BA4\\u60C5\\u51B5\\u4E0B\\u9690\\u85CF\\u5185\\u5D4C\\u63D0\\u793A\\uFF0C\\u5E76\\u5728\\u6309\\u4F4F {0} \\u65F6\\u663E\\u793A\",\"\\u5DF2\\u7981\\u7528\\u5185\\u5D4C\\u63D0\\u793A\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u4E2D\\u5D4C\\u5165\\u63D0\\u793A\\u7684\\u5B57\\u53F7\\u3002\\u9ED8\\u8BA4\\u60C5\\u51B5\\u4E0B\\uFF0C\\u5F53\\u914D\\u7F6E\\u7684\\u503C\\u5C0F\\u4E8E {1} \\u6216\\u5927\\u4E8E\\u7F16\\u8F91\\u5668\\u5B57\\u53F7\\u65F6\\uFF0C\\u5C06\\u4F7F\\u7528 {0}\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u4E2D\\u5D4C\\u5165\\u63D0\\u793A\\u7684\\u5B57\\u4F53\\u7CFB\\u5217\\u3002\\u8BBE\\u7F6E\\u4E3A\\u7A7A\\u65F6\\uFF0C\\u5C06\\u4F7F\\u7528 {0}\\u3002\",\"\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u542F\\u7528\\u53E0\\u52A0\\u63D0\\u793A\\u5468\\u56F4\\u7684\\u586B\\u5145\\u3002\",`\\u63A7\\u5236\\u884C\\u9AD8\\u3002\\r\n - \\u4F7F\\u7528 0 \\u6839\\u636E\\u5B57\\u53F7\\u81EA\\u52A8\\u8BA1\\u7B97\\u884C\\u9AD8\\u3002\\r\n - \\u4ECB\\u4E8E 0 \\u548C 8 \\u4E4B\\u95F4\\u7684\\u503C\\u5C06\\u7528\\u4F5C\\u5B57\\u53F7\\u7684\\u4E58\\u6570\\u3002\\r\n - \\u5927\\u4E8E\\u6216\\u7B49\\u4E8E 8 \\u7684\\u503C\\u5C06\\u7528\\u4F5C\\u6709\\u6548\\u503C\\u3002`,\"\\u63A7\\u5236\\u662F\\u5426\\u663E\\u793A\\u7F29\\u7565\\u56FE\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u81EA\\u52A8\\u9690\\u85CF\\u7F29\\u7565\\u56FE\\u3002\",\"\\u8FF7\\u4F60\\u5730\\u56FE\\u7684\\u5927\\u5C0F\\u4E0E\\u7F16\\u8F91\\u5668\\u5185\\u5BB9\\u76F8\\u540C(\\u5E76\\u4E14\\u53EF\\u80FD\\u6EDA\\u52A8)\\u3002\",\"\\u8FF7\\u4F60\\u5730\\u56FE\\u5C06\\u6839\\u636E\\u9700\\u8981\\u62C9\\u4F38\\u6216\\u7F29\\u5C0F\\u4EE5\\u586B\\u5145\\u7F16\\u8F91\\u5668\\u7684\\u9AD8\\u5EA6(\\u4E0D\\u6EDA\\u52A8)\\u3002\",\"\\u8FF7\\u4F60\\u5730\\u56FE\\u5C06\\u6839\\u636E\\u9700\\u8981\\u7F29\\u5C0F\\uFF0C\\u6C38\\u8FDC\\u4E0D\\u4F1A\\u5927\\u4E8E\\u7F16\\u8F91\\u5668(\\u4E0D\\u6EDA\\u52A8)\\u3002\",\"\\u63A7\\u5236\\u8FF7\\u4F60\\u5730\\u56FE\\u7684\\u5927\\u5C0F\\u3002\",\"\\u63A7\\u5236\\u5728\\u54EA\\u4E00\\u4FA7\\u663E\\u793A\\u7F29\\u7565\\u56FE\\u3002\",\"\\u63A7\\u5236\\u4F55\\u65F6\\u663E\\u793A\\u8FF7\\u4F60\\u5730\\u56FE\\u6ED1\\u5757\\u3002\",\"\\u5728\\u8FF7\\u4F60\\u5730\\u56FE\\u4E2D\\u7ED8\\u5236\\u7684\\u5185\\u5BB9\\u6BD4\\u4F8B: 1\\u30012 \\u6216 3\\u3002\",\"\\u6E32\\u67D3\\u6BCF\\u884C\\u7684\\u5B9E\\u9645\\u5B57\\u7B26\\uFF0C\\u800C\\u4E0D\\u662F\\u8272\\u5757\\u3002\",\"\\u9650\\u5236\\u7F29\\u7565\\u56FE\\u7684\\u5BBD\\u5EA6\\uFF0C\\u63A7\\u5236\\u5176\\u6700\\u591A\\u663E\\u793A\\u7684\\u5217\\u6570\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u7684\\u9876\\u8FB9\\u548C\\u7B2C\\u4E00\\u884C\\u4E4B\\u95F4\\u7684\\u95F4\\u8DDD\\u91CF\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u7684\\u5E95\\u8FB9\\u548C\\u6700\\u540E\\u4E00\\u884C\\u4E4B\\u95F4\\u7684\\u95F4\\u8DDD\\u91CF\\u3002\",\"\\u5728\\u8F93\\u5165\\u65F6\\u663E\\u793A\\u542B\\u6709\\u53C2\\u6570\\u6587\\u6863\\u548C\\u7C7B\\u578B\\u4FE1\\u606F\\u7684\\u5C0F\\u9762\\u677F\\u3002\",\"\\u63A7\\u5236\\u53C2\\u6570\\u63D0\\u793A\\u83DC\\u5355\\u5728\\u5230\\u8FBE\\u5217\\u8868\\u672B\\u5C3E\\u65F6\\u8FDB\\u884C\\u5FAA\\u73AF\\u8FD8\\u662F\\u5173\\u95ED\\u3002\",\"\\u5FEB\\u901F\\u5EFA\\u8BAE\\u663E\\u793A\\u5728\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u5185\",\"\\u5FEB\\u901F\\u5EFA\\u8BAE\\u663E\\u793A\\u4E3A\\u865A\\u5F71\\u6587\\u672C\",\"\\u5DF2\\u7981\\u7528\\u5FEB\\u901F\\u5EFA\\u8BAE\",\"\\u5728\\u5B57\\u7B26\\u4E32\\u5185\\u542F\\u7528\\u5FEB\\u901F\\u5EFA\\u8BAE\\u3002\",\"\\u5728\\u6CE8\\u91CA\\u5185\\u542F\\u7528\\u5FEB\\u901F\\u5EFA\\u8BAE\\u3002\",\"\\u5728\\u5B57\\u7B26\\u4E32\\u548C\\u6CE8\\u91CA\\u5916\\u542F\\u7528\\u5FEB\\u901F\\u5EFA\\u8BAE\\u3002\",\"\\u63A7\\u5236\\u952E\\u5165\\u65F6\\u662F\\u5426\\u5E94\\u81EA\\u52A8\\u663E\\u793A\\u5EFA\\u8BAE\\u3002\\u8FD9\\u53EF\\u4EE5\\u7528\\u4E8E\\u5728\\u6CE8\\u91CA\\u3001\\u5B57\\u7B26\\u4E32\\u548C\\u5176\\u4ED6\\u4EE3\\u7801\\u4E2D\\u952E\\u5165\\u65F6\\u8FDB\\u884C\\u63A7\\u5236\\u3002\\u53EF\\u914D\\u7F6E\\u5FEB\\u901F\\u5EFA\\u8BAE\\u4EE5\\u663E\\u793A\\u4E3A\\u865A\\u5F71\\u6587\\u672C\\u6216\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u3002\\u53E6\\u8BF7\\u6CE8\\u610F\\u63A7\\u5236\\u5EFA\\u8BAE\\u662F\\u5426\\u7531\\u7279\\u6B8A\\u5B57\\u7B26\\u89E6\\u53D1\\u7684\\u201C{0}\\u201D\\u8BBE\\u7F6E\\u3002\",\"\\u4E0D\\u663E\\u793A\\u884C\\u53F7\\u3002\",\"\\u5C06\\u884C\\u53F7\\u663E\\u793A\\u4E3A\\u7EDD\\u5BF9\\u884C\\u6570\\u3002\",\"\\u5C06\\u884C\\u53F7\\u663E\\u793A\\u4E3A\\u4E0E\\u5149\\u6807\\u76F8\\u9694\\u7684\\u884C\\u6570\\u3002\",\"\\u6BCF 10 \\u884C\\u663E\\u793A\\u4E00\\u6B21\\u884C\\u53F7\\u3002\",\"\\u63A7\\u5236\\u884C\\u53F7\\u7684\\u663E\\u793A\\u3002\",\"\\u6B64\\u7F16\\u8F91\\u5668\\u6807\\u5C3A\\u5C06\\u6E32\\u67D3\\u7684\\u7B49\\u5BBD\\u5B57\\u7B26\\u6570\\u3002\",\"\\u6B64\\u7F16\\u8F91\\u5668\\u6807\\u5C3A\\u7684\\u989C\\u8272\\u3002\",\"\\u5728\\u4E00\\u5B9A\\u6570\\u91CF\\u7684\\u7B49\\u5BBD\\u5B57\\u7B26\\u540E\\u663E\\u793A\\u5782\\u76F4\\u6807\\u5C3A\\u3002\\u8F93\\u5165\\u591A\\u4E2A\\u503C\\uFF0C\\u663E\\u793A\\u591A\\u4E2A\\u6807\\u5C3A\\u3002\\u82E5\\u6570\\u7EC4\\u4E3A\\u7A7A\\uFF0C\\u5219\\u4E0D\\u7ED8\\u5236\\u6807\\u5C3A\\u3002\",\"\\u5782\\u76F4\\u6EDA\\u52A8\\u6761\\u4EC5\\u5728\\u5FC5\\u8981\\u65F6\\u53EF\\u89C1\\u3002\",\"\\u5782\\u76F4\\u6EDA\\u52A8\\u6761\\u5C06\\u59CB\\u7EC8\\u53EF\\u89C1\\u3002\",\"\\u5782\\u76F4\\u6EDA\\u52A8\\u6761\\u5C06\\u59CB\\u7EC8\\u9690\\u85CF\\u3002\",\"\\u63A7\\u5236\\u5782\\u76F4\\u6EDA\\u52A8\\u6761\\u7684\\u53EF\\u89C1\\u6027\\u3002\",\"\\u6C34\\u5E73\\u6EDA\\u52A8\\u6761\\u4EC5\\u5728\\u5FC5\\u8981\\u65F6\\u53EF\\u89C1\\u3002\",\"\\u6C34\\u5E73\\u6EDA\\u52A8\\u6761\\u5C06\\u59CB\\u7EC8\\u53EF\\u89C1\\u3002\",\"\\u6C34\\u5E73\\u6EDA\\u52A8\\u6761\\u5C06\\u59CB\\u7EC8\\u9690\\u85CF\\u3002\",\"\\u63A7\\u5236\\u6C34\\u5E73\\u6EDA\\u52A8\\u6761\\u7684\\u53EF\\u89C1\\u6027\\u3002\",\"\\u5782\\u76F4\\u6EDA\\u52A8\\u6761\\u7684\\u5BBD\\u5EA6\\u3002\",\"\\u6C34\\u5E73\\u6EDA\\u52A8\\u6761\\u7684\\u9AD8\\u5EA6\\u3002\",\"\\u63A7\\u5236\\u5355\\u51FB\\u6309\\u9875\\u6EDA\\u52A8\\u8FD8\\u662F\\u8DF3\\u8F6C\\u5230\\u5355\\u51FB\\u4F4D\\u7F6E\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u7A81\\u51FA\\u663E\\u793A\\u6240\\u6709\\u975E\\u57FA\\u672C ASCII \\u5B57\\u7B26\\u3002\\u53EA\\u6709\\u4ECB\\u4E8E U+0020 \\u5230 U+007E \\u4E4B\\u95F4\\u7684\\u5B57\\u7B26\\u3001\\u5236\\u8868\\u7B26\\u3001\\u6362\\u884C\\u7B26\\u548C\\u56DE\\u8F66\\u7B26\\u624D\\u88AB\\u89C6\\u4E3A\\u57FA\\u672C ASCII\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u7A81\\u51FA\\u663E\\u793A\\u4EC5\\u4FDD\\u7559\\u7A7A\\u683C\\u6216\\u5B8C\\u5168\\u6CA1\\u6709\\u5BBD\\u5EA6\\u7684\\u5B57\\u7B26\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u7A81\\u51FA\\u663E\\u793A\\u53EF\\u80FD\\u4E0E\\u57FA\\u672C ASCII \\u5B57\\u7B26\\u6DF7\\u6DC6\\u7684\\u5B57\\u7B26\\uFF0C\\u4F46\\u5F53\\u524D\\u7528\\u6237\\u533A\\u57DF\\u8BBE\\u7F6E\\u4E2D\\u5E38\\u89C1\\u7684\\u5B57\\u7B26\\u9664\\u5916\\u3002\",\"\\u63A7\\u5236\\u6CE8\\u91CA\\u4E2D\\u7684\\u5B57\\u7B26\\u662F\\u5426\\u4E5F\\u5E94\\u8FDB\\u884C Unicode \\u7A81\\u51FA\\u663E\\u793A\\u3002\",\"\\u63A7\\u5236\\u5B57\\u7B26\\u4E32\\u4E2D\\u7684\\u5B57\\u7B26\\u662F\\u5426\\u4E5F\\u5E94\\u8FDB\\u884C Unicode \\u7A81\\u51FA\\u663E\\u793A\\u3002\",\"\\u5B9A\\u4E49\\u672A\\u7A81\\u51FA\\u663E\\u793A\\u7684\\u5141\\u8BB8\\u5B57\\u7B26\\u3002\",\"\\u672A\\u7A81\\u51FA\\u663E\\u793A\\u5728\\u5141\\u8BB8\\u533A\\u57DF\\u8BBE\\u7F6E\\u4E2D\\u5E38\\u89C1\\u7684 Unicode \\u5B57\\u7B26\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u81EA\\u52A8\\u663E\\u793A\\u5185\\u8054\\u5EFA\\u8BAE\\u3002\",\"\\u6BCF\\u5F53\\u663E\\u793A\\u5185\\u8054\\u5EFA\\u8BAE\\u65F6\\uFF0C\\u663E\\u793A\\u5185\\u8054\\u5EFA\\u8BAE\\u5DE5\\u5177\\u680F\\u3002\",\"\\u5C06\\u9F20\\u6807\\u60AC\\u505C\\u5728\\u5185\\u8054\\u5EFA\\u8BAE\\u4E0A\\u65F6\\u663E\\u793A\\u5185\\u8054\\u5EFA\\u8BAE\\u5DE5\\u5177\\u680F\\u3002\",\"\\u63A7\\u5236\\u4F55\\u65F6\\u663E\\u793A\\u5185\\u8054\\u5EFA\\u8BAE\\u5DE5\\u5177\\u680F\\u3002\",\"\\u63A7\\u5236\\u5185\\u8054\\u5EFA\\u8BAE\\u5982\\u4F55\\u4E0E\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u4EA4\\u4E92\\u3002\\u5982\\u679C\\u542F\\u7528\\uFF0C\\u5F53\\u5185\\u8054\\u5EFA\\u8BAE\\u53EF\\u7528\\u65F6\\uFF0C\\u4E0D\\u4F1A\\u81EA\\u52A8\\u663E\\u793A\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u7740\\u8272\\u3002\\u8BF7\\u4F7F\\u7528 {0} \\u91CD\\u5199\\u62EC\\u53F7\\u7A81\\u51FA\\u663E\\u793A\\u989C\\u8272\\u3002\",\"\\u63A7\\u5236\\u6BCF\\u4E2A\\u65B9\\u62EC\\u53F7\\u7C7B\\u578B\\u662F\\u5426\\u5177\\u6709\\u81EA\\u5DF1\\u7684\\u72EC\\u7ACB\\u989C\\u8272\\u6C60\\u3002\",\"\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u53C2\\u8003\\u7EBF\\u3002\",\"\\u4EC5\\u4E3A\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u53C2\\u8003\\u7EBF\\u3002\",\"\\u7981\\u7528\\u62EC\\u53F7\\u5BF9\\u53C2\\u8003\\u7EBF\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u542F\\u7528\\u6C34\\u5E73\\u53C2\\u8003\\u7EBF\\u4F5C\\u4E3A\\u5782\\u76F4\\u62EC\\u53F7\\u5BF9\\u53C2\\u8003\\u7EBF\\u7684\\u6DFB\\u52A0\\u9879\\u3002\",\"\\u4EC5\\u4E3A\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u542F\\u7528\\u6C34\\u5E73\\u53C2\\u8003\\u7EBF\\u3002\",\"\\u7981\\u7528\\u6C34\\u5E73\\u62EC\\u53F7\\u5BF9\\u53C2\\u8003\\u7EBF\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u542F\\u7528\\u6C34\\u5E73\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5E94\\u7A81\\u51FA\\u663E\\u793A\\u6D3B\\u52A8\\u7684\\u62EC\\u53F7\\u5BF9\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u663E\\u793A\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF\\u3002\",\"\\u7A81\\u51FA\\u663E\\u793A\\u6D3B\\u52A8\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF\\u3002\",\"\\u7A81\\u51FA\\u663E\\u793A\\u6D3B\\u52A8\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF\\uFF0C\\u5373\\u4F7F\\u7A81\\u51FA\\u663E\\u793A\\u4E86\\u62EC\\u53F7\\u53C2\\u8003\\u7EBF\\u3002\",\"\\u4E0D\\u8981\\u7A81\\u51FA\\u663E\\u793A\\u6D3B\\u52A8\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u7A81\\u51FA\\u663E\\u793A\\u7F16\\u8F91\\u5668\\u4E2D\\u6D3B\\u52A8\\u7684\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF\\u3002\",\"\\u63D2\\u5165\\u5EFA\\u8BAE\\u800C\\u4E0D\\u8986\\u76D6\\u5149\\u6807\\u53F3\\u4FA7\\u7684\\u6587\\u672C\\u3002\",\"\\u63D2\\u5165\\u5EFA\\u8BAE\\u5E76\\u8986\\u76D6\\u5149\\u6807\\u53F3\\u4FA7\\u7684\\u6587\\u672C\\u3002\",\"\\u63A7\\u5236\\u63A5\\u53D7\\u8865\\u5168\\u65F6\\u662F\\u5426\\u8986\\u76D6\\u5355\\u8BCD\\u3002\\u8BF7\\u6CE8\\u610F\\uFF0C\\u8FD9\\u53D6\\u51B3\\u4E8E\\u6269\\u5C55\\u9009\\u62E9\\u4F7F\\u7528\\u6B64\\u529F\\u80FD\\u3002\",\"\\u63A7\\u5236\\u5BF9\\u5EFA\\u8BAE\\u7684\\u7B5B\\u9009\\u548C\\u6392\\u5E8F\\u662F\\u5426\\u8003\\u8651\\u5C0F\\u7684\\u62FC\\u5199\\u9519\\u8BEF\\u3002\",\"\\u63A7\\u5236\\u6392\\u5E8F\\u65F6\\u662F\\u5426\\u9996\\u9009\\u5149\\u6807\\u9644\\u8FD1\\u7684\\u5B57\\u8BCD\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5728\\u591A\\u4E2A\\u5DE5\\u4F5C\\u533A\\u548C\\u7A97\\u53E3\\u95F4\\u5171\\u4EAB\\u8BB0\\u5FC6\\u7684\\u5EFA\\u8BAE\\u9009\\u9879(\\u9700\\u8981 `#editor.suggestSelection#`)\\u3002\",\"\\u81EA\\u52A8\\u89E6\\u53D1 IntelliSense \\u65F6\\u59CB\\u7EC8\\u9009\\u62E9\\u5EFA\\u8BAE\\u3002\",\"\\u81EA\\u52A8\\u89E6\\u53D1 IntelliSense \\u65F6\\uFF0C\\u5207\\u52FF\\u9009\\u62E9\\u5EFA\\u8BAE\\u3002\",\"\\u4EC5\\u5F53\\u4ECE\\u89E6\\u53D1\\u5668\\u5B57\\u7B26\\u89E6\\u53D1 IntelliSense \\u65F6\\uFF0C\\u624D\\u9009\\u62E9\\u5EFA\\u8BAE\\u3002\",\"\\u4EC5\\u5728\\u952E\\u5165\\u65F6\\u89E6\\u53D1 IntelliSense \\u65F6\\u624D\\u9009\\u62E9\\u5EFA\\u8BAE\\u3002\",\"\\u63A7\\u5236\\u5728\\u663E\\u793A\\u5C0F\\u7EC4\\u4EF6\\u65F6\\u662F\\u5426\\u9009\\u62E9\\u5EFA\\u8BAE\\u3002\\u8BF7\\u6CE8\\u610F\\uFF0C\\u8FD9\\u4EC5\\u9002\\u7528\\u4E8E(\\u201C#editor.quickSuggestions#\\u201D\\u548C\\u201C#editor.suggestOnTriggerCharacters#\\u201D)\\u81EA\\u52A8\\u89E6\\u53D1\\u7684\\u5EFA\\u8BAE\\uFF0C\\u5E76\\u4E14\\u59CB\\u7EC8\\u5728\\u663E\\u5F0F\\u8C03\\u7528\\u65F6\\u9009\\u62E9\\u5EFA\\u8BAE\\uFF0C\\u4F8B\\u5982\\u901A\\u8FC7\\u201CCtrl+Space\\u201D\\u3002\",\"\\u63A7\\u5236\\u6D3B\\u52A8\\u4EE3\\u7801\\u6BB5\\u662F\\u5426\\u963B\\u6B62\\u5FEB\\u901F\\u5EFA\\u8BAE\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5728\\u5EFA\\u8BAE\\u4E2D\\u663E\\u793A\\u6216\\u9690\\u85CF\\u56FE\\u6807\\u3002\",\"\\u63A7\\u5236\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u5E95\\u90E8\\u7684\\u72B6\\u6001\\u680F\\u7684\\u53EF\\u89C1\\u6027\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u9884\\u89C8\\u5EFA\\u8BAE\\u7ED3\\u679C\\u3002\",\"\\u63A7\\u5236\\u5EFA\\u8BAE\\u8BE6\\u7EC6\\u4FE1\\u606F\\u662F\\u968F\\u6807\\u7B7E\\u5185\\u8054\\u663E\\u793A\\u8FD8\\u662F\\u4EC5\\u663E\\u793A\\u5728\\u8BE6\\u7EC6\\u4FE1\\u606F\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u3002\",\"\\u6B64\\u8BBE\\u7F6E\\u5DF2\\u5F03\\u7528\\u3002\\u73B0\\u5728\\u53EF\\u4EE5\\u8C03\\u6574\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u7684\\u5927\\u5C0F\\u3002\",'\\u6B64\\u8BBE\\u7F6E\\u5DF2\\u5F03\\u7528\\uFF0C\\u8BF7\\u6539\\u7528\\u5355\\u72EC\\u7684\\u8BBE\\u7F6E\\uFF0C\\u5982\"editor.suggest.showKeywords\"\\u6216\"editor.suggest.showSnippets\"\\u3002',\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u65B9\\u6CD5\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u51FD\\u6570\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u6784\\u9020\\u51FD\\u6570\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A`\\u5DF2\\u5F03\\u7528`\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u7B5B\\u9009\\u8981\\u6C42\\u7B2C\\u4E00\\u4E2A\\u5B57\\u7B26\\u5728\\u5355\\u8BCD\\u5F00\\u5934\\u5339\\u914D\\uFF0C\\u4F8B\\u5982 \\u201CConsole\\u201D \\u6216 \\u201CWebContext\\u201D \\u4E0A\\u7684 \\u201Cc\\u201D\\uFF0C\\u4F46 \\u201Cdescription\\u201D \\u4E0A\\u7684 _not_\\u3002\\u7981\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u66F4\\u591A\\u7ED3\\u679C\\uFF0C\\u4F46\\u4ECD\\u6309\\u5339\\u914D\\u8D28\\u91CF\\u5BF9\\u5176\\u8FDB\\u884C\\u6392\\u5E8F\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u5B57\\u6BB5\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u53D8\\u91CF\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u7C7B\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u7ED3\\u6784\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u63A5\\u53E3\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u6A21\\u5757\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u5C5E\\u6027\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u4E8B\\u4EF6\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u64CD\\u4F5C\\u7B26\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u5355\\u4F4D\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u503C\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u5E38\\u91CF\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u679A\\u4E3E\\u201D\\u5EFA\\u8BAE\\u3002\",'\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A \"enumMember\" \\u5EFA\\u8BAE\\u3002',\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u5173\\u952E\\u5B57\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u6587\\u672C\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u989C\\u8272\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u6587\\u4EF6\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u53C2\\u8003\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u81EA\\u5B9A\\u4E49\\u989C\\u8272\\u201D\\u5EFA\\u8BAE\\u3002\",\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u6587\\u4EF6\\u5939\\u201D\\u5EFA\\u8BAE\\u3002\",'\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A \"typeParameter\" \\u5EFA\\u8BAE\\u3002',\"\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\\u201C\\u7247\\u6BB5\\u201D\\u5EFA\\u8BAE\\u3002\",'\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\"\\u7528\\u6237\"\\u5EFA\\u8BAE\\u3002','\\u542F\\u7528\\u540E\\uFF0CIntelliSense \\u5C06\\u663E\\u793A\"\\u95EE\\u9898\"\\u5EFA\\u8BAE\\u3002',\"\\u662F\\u5426\\u5E94\\u59CB\\u7EC8\\u9009\\u62E9\\u524D\\u5BFC\\u548C\\u5C3E\\u968F\\u7A7A\\u683C\\u3002\",\"\\u662F\\u5426\\u5E94\\u9009\\u62E9\\u5B50\\u5B57(\\u5982\\u201CfooBar\\u201D\\u6216\\u201Cfoo_bar\\u201D\\u4E2D\\u7684\\u201Cfoo\\u201D)\\u3002\",\"\\u6CA1\\u6709\\u7F29\\u8FDB\\u3002\\u6298\\u884C\\u4ECE\\u7B2C 1 \\u5217\\u5F00\\u59CB\\u3002\",\"\\u6298\\u884C\\u7684\\u7F29\\u8FDB\\u91CF\\u4E0E\\u5176\\u7236\\u7EA7\\u76F8\\u540C\\u3002\",\"\\u6298\\u884C\\u7684\\u7F29\\u8FDB\\u91CF\\u6BD4\\u5176\\u7236\\u7EA7\\u591A 1\\u3002\",\"\\u6298\\u884C\\u7684\\u7F29\\u8FDB\\u91CF\\u6BD4\\u5176\\u7236\\u7EA7\\u591A 2\\u3002\",\"\\u63A7\\u5236\\u6298\\u884C\\u7684\\u7F29\\u8FDB\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u53EF\\u4EE5\\u901A\\u8FC7\\u6309\\u4F4F `Shift` (\\u800C\\u4E0D\\u662F\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u6253\\u5F00\\u6587\\u4EF6)\\u5C06\\u6587\\u4EF6\\u62D6\\u653E\\u5230\\u7F16\\u8F91\\u5668\\u4E2D\\u3002\",\"\\u63A7\\u5236\\u5C06\\u6587\\u4EF6\\u653E\\u5165\\u7F16\\u8F91\\u5668\\u65F6\\u662F\\u5426\\u663E\\u793A\\u5C0F\\u7EC4\\u4EF6\\u3002\\u4F7F\\u7528\\u6B64\\u5C0F\\u7EC4\\u4EF6\\u53EF\\u4EE5\\u63A7\\u5236\\u6587\\u4EF6\\u7684\\u5220\\u9664\\u65B9\\u5F0F\\u3002\",\"\\u5C06\\u6587\\u4EF6\\u653E\\u5165\\u7F16\\u8F91\\u5668\\u540E\\u663E\\u793A\\u653E\\u7F6E\\u9009\\u62E9\\u5668\\u5C0F\\u7EC4\\u4EF6\\u3002\",\"\\u5207\\u52FF\\u663E\\u793A\\u653E\\u7F6E\\u9009\\u62E9\\u5668\\u5C0F\\u7EC4\\u4EF6\\u3002\\u800C\\u662F\\u59CB\\u7EC8\\u4F7F\\u7528\\u9ED8\\u8BA4\\u5220\\u9664\\u63D0\\u4F9B\\u7A0B\\u5E8F\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u53EF\\u4EE5\\u4EE5\\u4E0D\\u540C\\u7684\\u65B9\\u5F0F\\u7C98\\u8D34\\u5185\\u5BB9\\u3002\",\"\\u63A7\\u5236\\u5C06\\u5185\\u5BB9\\u7C98\\u8D34\\u5230\\u7F16\\u8F91\\u5668\\u65F6\\u662F\\u5426\\u663E\\u793A\\u5C0F\\u7EC4\\u4EF6\\u3002\\u4F7F\\u7528\\u6B64\\u5C0F\\u7EC4\\u4EF6\\u53EF\\u4EE5\\u63A7\\u5236\\u6587\\u4EF6\\u7684\\u7C98\\u8D34\\u65B9\\u5F0F\\u3002\",\"\\u5C06\\u5185\\u5BB9\\u7C98\\u8D34\\u5230\\u7F16\\u8F91\\u5668\\u540E\\u663E\\u793A\\u7C98\\u8D34\\u9009\\u62E9\\u5668\\u5C0F\\u7EC4\\u4EF6\\u3002\",\"\\u5207\\u52FF\\u663E\\u793A\\u7C98\\u8D34\\u9009\\u62E9\\u5668\\u5C0F\\u7EC4\\u4EF6\\u3002\\u800C\\u662F\\u59CB\\u7EC8\\u4F7F\\u7528\\u9ED8\\u8BA4\\u7C98\\u8D34\\u884C\\u4E3A\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5E94\\u5728\\u9047\\u5230\\u63D0\\u4EA4\\u5B57\\u7B26\\u65F6\\u63A5\\u53D7\\u5EFA\\u8BAE\\u3002\\u4F8B\\u5982\\uFF0C\\u5728 JavaScript \\u4E2D\\uFF0C\\u534A\\u89D2\\u5206\\u53F7 (`;`) \\u53EF\\u4EE5\\u4E3A\\u63D0\\u4EA4\\u5B57\\u7B26\\uFF0C\\u80FD\\u591F\\u5728\\u63A5\\u53D7\\u5EFA\\u8BAE\\u7684\\u540C\\u65F6\\u952E\\u5165\\u8BE5\\u5B57\\u7B26\\u3002\",\"\\u4EC5\\u5F53\\u5EFA\\u8BAE\\u5305\\u542B\\u6587\\u672C\\u6539\\u52A8\\u65F6\\u624D\\u53EF\\u4F7F\\u7528 `Enter` \\u952E\\u8FDB\\u884C\\u63A5\\u53D7\\u3002\",\"\\u63A7\\u5236\\u9664\\u4E86 `Tab` \\u952E\\u4EE5\\u5916\\uFF0C `Enter` \\u952E\\u662F\\u5426\\u540C\\u6837\\u53EF\\u4EE5\\u63A5\\u53D7\\u5EFA\\u8BAE\\u3002\\u8FD9\\u80FD\\u51CF\\u5C11\\u201C\\u63D2\\u5165\\u65B0\\u884C\\u201D\\u548C\\u201C\\u63A5\\u53D7\\u5EFA\\u8BAE\\u201D\\u547D\\u4EE4\\u4E4B\\u95F4\\u7684\\u6B67\\u4E49\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u4E2D\\u53EF\\u7531\\u5C4F\\u5E55\\u9605\\u8BFB\\u5668\\u4E00\\u6B21\\u8BFB\\u51FA\\u7684\\u884C\\u6570\\u3002\\u6211\\u4EEC\\u68C0\\u6D4B\\u5230\\u5C4F\\u5E55\\u9605\\u8BFB\\u5668\\u65F6\\uFF0C\\u4F1A\\u81EA\\u52A8\\u5C06\\u9ED8\\u8BA4\\u503C\\u8BBE\\u7F6E\\u4E3A 500\\u3002\\u8B66\\u544A: \\u5982\\u679C\\u884C\\u6570\\u5927\\u4E8E\\u9ED8\\u8BA4\\u503C\\uFF0C\\u53EF\\u80FD\\u4F1A\\u5F71\\u54CD\\u6027\\u80FD\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5185\\u5BB9\",\"\\u63A7\\u5236\\u5185\\u8054\\u5EFA\\u8BAE\\u662F\\u5426\\u7531\\u5C4F\\u5E55\\u9605\\u8BFB\\u5668\\u516C\\u5E03\\u3002\",\"\\u4F7F\\u7528\\u8BED\\u8A00\\u914D\\u7F6E\\u786E\\u5B9A\\u4F55\\u65F6\\u81EA\\u52A8\\u95ED\\u5408\\u62EC\\u53F7\\u3002\",\"\\u4EC5\\u5F53\\u5149\\u6807\\u4F4D\\u4E8E\\u7A7A\\u767D\\u5B57\\u7B26\\u5DE6\\u4FA7\\u65F6\\uFF0C\\u624D\\u81EA\\u52A8\\u95ED\\u5408\\u62EC\\u53F7\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5728\\u5DE6\\u62EC\\u53F7\\u540E\\u81EA\\u52A8\\u63D2\\u5165\\u53F3\\u62EC\\u53F7\\u3002\",\"\\u4EC5\\u5728\\u81EA\\u52A8\\u63D2\\u5165\\u65F6\\u624D\\u5220\\u9664\\u76F8\\u90BB\\u7684\\u53F3\\u5F15\\u53F7\\u6216\\u53F3\\u62EC\\u53F7\\u3002\",\"\\u63A7\\u5236\\u5728\\u5220\\u9664\\u65F6\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5E94\\u5220\\u9664\\u76F8\\u90BB\\u7684\\u53F3\\u5F15\\u53F7\\u6216\\u53F3\\u65B9\\u62EC\\u53F7\\u3002\",\"\\u4EC5\\u5728\\u81EA\\u52A8\\u63D2\\u5165\\u65F6\\u624D\\u6539\\u5199\\u53F3\\u5F15\\u53F7\\u6216\\u53F3\\u62EC\\u53F7\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5E94\\u6539\\u5199\\u53F3\\u5F15\\u53F7\\u6216\\u53F3\\u62EC\\u53F7\\u3002\",\"\\u4F7F\\u7528\\u8BED\\u8A00\\u914D\\u7F6E\\u786E\\u5B9A\\u4F55\\u65F6\\u81EA\\u52A8\\u95ED\\u5408\\u5F15\\u53F7\\u3002\",\"\\u4EC5\\u5F53\\u5149\\u6807\\u4F4D\\u4E8E\\u7A7A\\u767D\\u5B57\\u7B26\\u5DE6\\u4FA7\\u65F6\\uFF0C\\u624D\\u81EA\\u52A8\\u95ED\\u5408\\u5F15\\u53F7\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5728\\u5DE6\\u5F15\\u53F7\\u540E\\u81EA\\u52A8\\u63D2\\u5165\\u53F3\\u5F15\\u53F7\\u3002\",\"\\u7F16\\u8F91\\u5668\\u4E0D\\u4F1A\\u81EA\\u52A8\\u63D2\\u5165\\u7F29\\u8FDB\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5C06\\u4FDD\\u7559\\u5F53\\u524D\\u884C\\u7684\\u7F29\\u8FDB\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5C06\\u4FDD\\u7559\\u5F53\\u524D\\u884C\\u7684\\u7F29\\u8FDB\\u5E76\\u9075\\u5FAA\\u8BED\\u8A00\\u5B9A\\u4E49\\u7684\\u62EC\\u53F7\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5C06\\u4FDD\\u7559\\u5F53\\u524D\\u884C\\u7684\\u7F29\\u8FDB\\u3001\\u4F7F\\u7528\\u8BED\\u8A00\\u5B9A\\u4E49\\u7684\\u62EC\\u53F7\\u5E76\\u8C03\\u7528\\u8BED\\u8A00\\u5B9A\\u4E49\\u7684\\u7279\\u5B9A onEnterRules\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5C06\\u4FDD\\u7559\\u5F53\\u524D\\u884C\\u7684\\u7F29\\u8FDB\\uFF0C\\u4F7F\\u7528\\u8BED\\u8A00\\u5B9A\\u4E49\\u7684\\u62EC\\u53F7\\uFF0C\\u8C03\\u7528\\u7531\\u8BED\\u8A00\\u5B9A\\u4E49\\u7684\\u7279\\u6B8A\\u8F93\\u5165\\u89C4\\u5219\\uFF0C\\u5E76\\u9075\\u5FAA\\u7531\\u8BED\\u8A00\\u5B9A\\u4E49\\u7684\\u7F29\\u8FDB\\u89C4\\u5219\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5E94\\u5728\\u7528\\u6237\\u952E\\u5165\\u3001\\u7C98\\u8D34\\u3001\\u79FB\\u52A8\\u6216\\u7F29\\u8FDB\\u884C\\u65F6\\u81EA\\u52A8\\u8C03\\u6574\\u7F29\\u8FDB\\u3002\",\"\\u4F7F\\u7528\\u8BED\\u8A00\\u914D\\u7F6E\\u786E\\u5B9A\\u4F55\\u65F6\\u81EA\\u52A8\\u5305\\u4F4F\\u6240\\u9009\\u5185\\u5BB9\\u3002\",\"\\u4F7F\\u7528\\u5F15\\u53F7\\u800C\\u975E\\u62EC\\u53F7\\u6765\\u5305\\u4F4F\\u6240\\u9009\\u5185\\u5BB9\\u3002\",\"\\u4F7F\\u7528\\u62EC\\u53F7\\u800C\\u975E\\u5F15\\u53F7\\u6765\\u5305\\u4F4F\\u6240\\u9009\\u5185\\u5BB9\\u3002\",\"\\u63A7\\u5236\\u5728\\u952E\\u5165\\u5F15\\u53F7\\u6216\\u65B9\\u62EC\\u53F7\\u65F6\\uFF0C\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5E94\\u81EA\\u52A8\\u5C06\\u6240\\u9009\\u5185\\u5BB9\\u62EC\\u8D77\\u6765\\u3002\",\"\\u5728\\u4F7F\\u7528\\u7A7A\\u683C\\u8FDB\\u884C\\u7F29\\u8FDB\\u65F6\\u6A21\\u62DF\\u5236\\u8868\\u7B26\\u7684\\u9009\\u62E9\\u884C\\u4E3A\\u3002\\u6240\\u9009\\u5185\\u5BB9\\u5C06\\u59CB\\u7EC8\\u4F7F\\u7528\\u5236\\u8868\\u7B26\\u505C\\u6B62\\u4F4D\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u663E\\u793A CodeLens\\u3002\",\"\\u63A7\\u5236 CodeLens \\u7684\\u5B57\\u4F53\\u7CFB\\u5217\\u3002\",\"\\u63A7\\u5236 CodeLens \\u7684\\u5B57\\u53F7(\\u4EE5\\u50CF\\u7D20\\u4E3A\\u5355\\u4F4D)\\u3002\\u8BBE\\u7F6E\\u4E3A 0 \\u65F6\\uFF0C\\u5C06\\u4F7F\\u7528 90% \\u7684 `#editor.fontSize#`\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u663E\\u793A\\u5185\\u8054\\u989C\\u8272\\u4FEE\\u9970\\u5668\\u548C\\u989C\\u8272\\u9009\\u53D6\\u5668\\u3002\",\"\\u5728\\u989C\\u8272\\u4FEE\\u9970\\u5668\\u5355\\u51FB\\u548C\\u60AC\\u505C\\u65F6\\u4F7F\\u989C\\u8272\\u9009\\u53D6\\u5668\\u540C\\u65F6\\u663E\\u793A\",\"\\u4F7F\\u989C\\u8272\\u9009\\u53D6\\u5668\\u5728\\u989C\\u8272\\u4FEE\\u9970\\u5668\\u60AC\\u505C\\u65F6\\u663E\\u793A\",\"\\u5355\\u51FB\\u989C\\u8272\\u4FEE\\u9970\\u5668\\u65F6\\u663E\\u793A\\u989C\\u8272\\u9009\\u53D6\\u5668\",\"\\u63A7\\u5236\\u4ECE\\u989C\\u8272\\u4FEE\\u9970\\u5668\\u663E\\u793A\\u989C\\u8272\\u9009\\u53D6\\u5668\\u7684\\u6761\\u4EF6\",\"\\u63A7\\u5236\\u53EF\\u4E00\\u6B21\\u6027\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u5448\\u73B0\\u7684\\u6700\\u5927\\u989C\\u8272\\u4FEE\\u9970\\u5668\\u6570\\u3002\",\"\\u542F\\u7528\\u4F7F\\u7528\\u9F20\\u6807\\u548C\\u952E\\u8FDB\\u884C\\u5217\\u9009\\u62E9\\u3002\",\"\\u63A7\\u5236\\u5728\\u590D\\u5236\\u65F6\\u662F\\u5426\\u540C\\u65F6\\u590D\\u5236\\u8BED\\u6CD5\\u9AD8\\u4EAE\\u3002\",\"\\u63A7\\u5236\\u5149\\u6807\\u7684\\u52A8\\u753B\\u6837\\u5F0F\\u3002\",\"\\u5DF2\\u7981\\u7528\\u5E73\\u6ED1\\u8131\\u5B57\\u53F7\\u52A8\\u753B\\u3002\",\"\\u4EC5\\u5F53\\u7528\\u6237\\u4F7F\\u7528\\u663E\\u5F0F\\u624B\\u52BF\\u79FB\\u52A8\\u5149\\u6807\\u65F6\\uFF0C\\u624D\\u542F\\u7528\\u5E73\\u6ED1\\u8131\\u5B57\\u53F7\\u52A8\\u753B\\u3002\",\"\\u59CB\\u7EC8\\u542F\\u7528\\u5E73\\u6ED1\\u8131\\u5B57\\u53F7\\u52A8\\u753B\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u542F\\u7528\\u5E73\\u6ED1\\u63D2\\u5165\\u52A8\\u753B\\u3002\",\"\\u63A7\\u5236\\u5149\\u6807\\u6837\\u5F0F\\u3002\",\"\\u63A7\\u5236\\u5149\\u6807\\u5468\\u56F4\\u53EF\\u89C1\\u7684\\u524D\\u7F6E\\u884C(\\u6700\\u5C0F\\u503C\\u4E3A 0)\\u548C\\u5C3E\\u968F\\u884C(\\u6700\\u5C0F\\u503C\\u4E3A 1)\\u7684\\u6700\\u5C0F\\u6570\\u76EE\\u3002\\u5728\\u5176\\u4ED6\\u4E00\\u4E9B\\u7F16\\u8F91\\u5668\\u4E2D\\u79F0\\u4E3A \\u201CscrollOff\\u201D \\u6216 \\u201CscrollOffset\\u201D\\u3002\",'\\u4EC5\\u5F53\\u901A\\u8FC7\\u952E\\u76D8\\u6216 API \\u89E6\\u53D1\\u65F6\\uFF0C\\u624D\\u4F1A\\u5F3A\\u5236\\u6267\\u884C\"\\u5149\\u6807\\u73AF\\u7ED5\\u884C\"\\u3002','\\u59CB\\u7EC8\\u5F3A\\u5236\\u6267\\u884C \"cursorSurroundingLines\"','\\u63A7\\u5236\\u4F55\\u65F6\\u5E94\\u5F3A\\u5236\\u6267\\u884C\"\\u5149\\u6807\\u73AF\\u7ED5\\u884C\"\\u3002',\"\\u5F53 `#editor.cursorStyle#` \\u8BBE\\u7F6E\\u4E3A `line` \\u65F6\\uFF0C\\u63A7\\u5236\\u5149\\u6807\\u7684\\u5BBD\\u5EA6\\u3002\",\"\\u63A7\\u5236\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u662F\\u5426\\u5141\\u8BB8\\u901A\\u8FC7\\u62D6\\u653E\\u6765\\u79FB\\u52A8\\u9009\\u4E2D\\u5185\\u5BB9\\u3002\",\"\\u5C06\\u65B0\\u7684\\u5448\\u73B0\\u65B9\\u6CD5\\u4E0E svg \\u914D\\u5408\\u4F7F\\u7528\\u3002\",\"\\u4F7F\\u7528\\u5305\\u542B\\u5B57\\u4F53\\u5B57\\u7B26\\u7684\\u65B0\\u5448\\u73B0\\u65B9\\u6CD5\\u3002\",\"\\u4F7F\\u7528\\u7A33\\u5B9A\\u5448\\u73B0\\u65B9\\u6CD5\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u4F7F\\u7528\\u65B0\\u7684\\u5B9E\\u9A8C\\u6027\\u65B9\\u6CD5\\u5448\\u73B0\\u7A7A\\u683C\\u3002\",'\\u6309\\u4E0B\"Alt\"\\u65F6\\u6EDA\\u52A8\\u901F\\u5EA6\\u500D\\u589E\\u3002',\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u542F\\u7528\\u4E86\\u4EE3\\u7801\\u6298\\u53E0\\u3002\",\"\\u4F7F\\u7528\\u7279\\u5B9A\\u4E8E\\u8BED\\u8A00\\u7684\\u6298\\u53E0\\u7B56\\u7565(\\u5982\\u679C\\u53EF\\u7528)\\uFF0C\\u5426\\u5219\\u4F7F\\u7528\\u57FA\\u4E8E\\u7F29\\u8FDB\\u7684\\u7B56\\u7565\\u3002\",\"\\u4F7F\\u7528\\u57FA\\u4E8E\\u7F29\\u8FDB\\u7684\\u6298\\u53E0\\u7B56\\u7565\\u3002\",\"\\u63A7\\u5236\\u8BA1\\u7B97\\u6298\\u53E0\\u8303\\u56F4\\u7684\\u7B56\\u7565\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5E94\\u7A81\\u51FA\\u663E\\u793A\\u6298\\u53E0\\u8303\\u56F4\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u81EA\\u52A8\\u6298\\u53E0\\u5BFC\\u5165\\u8303\\u56F4\\u3002\",\"\\u53EF\\u6298\\u53E0\\u533A\\u57DF\\u7684\\u6700\\u5927\\u6570\\u91CF\\u3002\\u5982\\u679C\\u5F53\\u524D\\u6E90\\u5177\\u6709\\u5927\\u91CF\\u53EF\\u6298\\u53E0\\u533A\\u57DF\\uFF0C\\u90A3\\u4E48\\u589E\\u52A0\\u6B64\\u503C\\u53EF\\u80FD\\u4F1A\\u5BFC\\u81F4\\u7F16\\u8F91\\u5668\\u7684\\u54CD\\u5E94\\u901F\\u5EA6\\u53D8\\u6162\\u3002\",\"\\u63A7\\u5236\\u5355\\u51FB\\u5DF2\\u6298\\u53E0\\u7684\\u884C\\u540E\\u9762\\u7684\\u7A7A\\u5185\\u5BB9\\u662F\\u5426\\u4F1A\\u5C55\\u5F00\\u8BE5\\u884C\\u3002\",\"\\u63A7\\u5236\\u5B57\\u4F53\\u7CFB\\u5217\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u81EA\\u52A8\\u683C\\u5F0F\\u5316\\u7C98\\u8D34\\u7684\\u5185\\u5BB9\\u3002\\u683C\\u5F0F\\u5316\\u7A0B\\u5E8F\\u5FC5\\u987B\\u53EF\\u7528\\uFF0C\\u5E76\\u4E14\\u80FD\\u9488\\u5BF9\\u6587\\u6863\\u4E2D\\u7684\\u67D0\\u4E00\\u8303\\u56F4\\u8FDB\\u884C\\u683C\\u5F0F\\u5316\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u5728\\u952E\\u5165\\u4E00\\u884C\\u540E\\u662F\\u5426\\u81EA\\u52A8\\u683C\\u5F0F\\u5316\\u8BE5\\u884C\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5E94\\u5448\\u73B0\\u5782\\u76F4\\u5B57\\u5F62\\u8FB9\\u8DDD\\u3002\\u5B57\\u5F62\\u8FB9\\u8DDD\\u6700\\u5E38\\u7528\\u4E8E\\u8C03\\u8BD5\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5728\\u6982\\u89C8\\u6807\\u5C3A\\u4E2D\\u9690\\u85CF\\u5149\\u6807\\u3002\",\"\\u63A7\\u5236\\u5B57\\u6BCD\\u95F4\\u8DDD(\\u50CF\\u7D20)\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5DF2\\u542F\\u7528\\u94FE\\u63A5\\u7F16\\u8F91\\u3002\\u76F8\\u5173\\u7B26\\u53F7(\\u5982 HTML \\u6807\\u8BB0)\\u5C06\\u5728\\u7F16\\u8F91\\u65F6\\u8FDB\\u884C\\u66F4\\u65B0\\uFF0C\\u5177\\u4F53\\u53D6\\u51B3\\u4E8E\\u8BED\\u8A00\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u68C0\\u6D4B\\u94FE\\u63A5\\u5E76\\u4F7F\\u5176\\u53EF\\u88AB\\u70B9\\u51FB\\u3002\",\"\\u7A81\\u51FA\\u663E\\u793A\\u5339\\u914D\\u7684\\u62EC\\u53F7\\u3002\",\"\\u5BF9\\u9F20\\u6807\\u6EDA\\u8F6E\\u6EDA\\u52A8\\u4E8B\\u4EF6\\u7684 `deltaX` \\u548C `deltaY` \\u4E58\\u4E0A\\u7684\\u7CFB\\u6570\\u3002\",\"\\u6309\\u4F4F `Ctrl` \\u952E\\u5E76\\u6EDA\\u52A8\\u9F20\\u6807\\u6EDA\\u8F6E\\u65F6\\u5BF9\\u7F16\\u8F91\\u5668\\u5B57\\u4F53\\u5927\\u5C0F\\u8FDB\\u884C\\u7F29\\u653E\\u3002\",\"\\u5F53\\u591A\\u4E2A\\u5149\\u6807\\u91CD\\u53E0\\u65F6\\u8FDB\\u884C\\u5408\\u5E76\\u3002\",\"\\u6620\\u5C04\\u4E3A `Ctrl` (Windows \\u548C Linux) \\u6216 `Command` (macOS)\\u3002\",\"\\u6620\\u5C04\\u4E3A `Alt` (Windows \\u548C Linux) \\u6216 `Option` (macOS)\\u3002\",\"\\u7528\\u4E8E\\u4F7F\\u7528\\u9F20\\u6807\\u6DFB\\u52A0\\u591A\\u4E2A\\u6E38\\u6807\\u7684\\u4FEE\\u9970\\u7B26\\u3002\\u201C\\u8F6C\\u5230\\u5B9A\\u4E49\\u201D\\u548C\\u201C\\u6253\\u5F00\\u94FE\\u63A5\\u201D\\u9F20\\u6807\\u624B\\u52BF\\u5C06\\u8FDB\\u884C\\u8C03\\u6574\\uFF0C\\u4F7F\\u5176\\u4E0D\\u4E0E [\\u591A\\u5149\\u6807\\u4FEE\\u9970\\u7B26](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier)\\u51B2\\u7A81\\u3002\",\"\\u6BCF\\u4E2A\\u5149\\u6807\\u7C98\\u8D34\\u4E00\\u884C\\u6587\\u672C\\u3002\",\"\\u6BCF\\u4E2A\\u5149\\u6807\\u7C98\\u8D34\\u5168\\u6587\\u3002\",\"\\u63A7\\u5236\\u7C98\\u8D34\\u65F6\\u7C98\\u8D34\\u6587\\u672C\\u7684\\u884C\\u8BA1\\u6570\\u4E0E\\u5149\\u6807\\u8BA1\\u6570\\u76F8\\u5339\\u914D\\u3002\",\"\\u63A7\\u5236\\u4E00\\u6B21\\u53EF\\u4EE5\\u5728\\u6D3B\\u52A8\\u7F16\\u8F91\\u5668\\u4E2D\\u663E\\u793A\\u7684\\u6700\\u5927\\u6E38\\u6807\\u6570\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u7A81\\u51FA\\u663E\\u793A\\u8BED\\u4E49\\u7B26\\u53F7\\u7684\\u5339\\u914D\\u9879\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5728\\u6982\\u89C8\\u6807\\u5C3A\\u5468\\u56F4\\u7ED8\\u5236\\u8FB9\\u6846\\u3002\",\"\\u6253\\u5F00\\u901F\\u89C8\\u65F6\\u805A\\u7126\\u6811\",\"\\u6253\\u5F00\\u9884\\u89C8\\u65F6\\u5C06\\u7126\\u70B9\\u653E\\u5728\\u7F16\\u8F91\\u5668\\u4E0A\",\"\\u63A7\\u5236\\u662F\\u5C06\\u7126\\u70B9\\u653E\\u5728\\u5185\\u8054\\u7F16\\u8F91\\u5668\\u4E0A\\u8FD8\\u662F\\u653E\\u5728\\u9884\\u89C8\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u7684\\u6811\\u4E0A\\u3002\",'\\u63A7\\u5236\"\\u8F6C\\u5230\\u5B9A\\u4E49\"\\u9F20\\u6807\\u624B\\u52BF\\u662F\\u5426\\u59CB\\u7EC8\\u6253\\u5F00\\u9884\\u89C8\\u5C0F\\u90E8\\u4EF6\\u3002',\"\\u63A7\\u5236\\u663E\\u793A\\u5FEB\\u901F\\u5EFA\\u8BAE\\u524D\\u7684\\u7B49\\u5F85\\u65F6\\u95F4 (\\u6BEB\\u79D2)\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u8F93\\u5165\\u65F6\\u81EA\\u52A8\\u91CD\\u547D\\u540D\\u3002\",'\\u5DF2\\u5F03\\u7528\\uFF0C\\u8BF7\\u6539\\u7528 \"editor.linkedEditing\"\\u3002',\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u663E\\u793A\\u63A7\\u5236\\u5B57\\u7B26\\u3002\",\"\\u5F53\\u6587\\u4EF6\\u4EE5\\u6362\\u884C\\u7B26\\u7ED3\\u675F\\u65F6, \\u5448\\u73B0\\u6700\\u540E\\u4E00\\u884C\\u7684\\u884C\\u53F7\\u3002\",\"\\u540C\\u65F6\\u7A81\\u51FA\\u663E\\u793A\\u5BFC\\u822A\\u7EBF\\u548C\\u5F53\\u524D\\u884C\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u7684\\u5F53\\u524D\\u884C\\u8FDB\\u884C\\u9AD8\\u4EAE\\u663E\\u793A\\u7684\\u65B9\\u5F0F\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u4EC5\\u5728\\u7126\\u70B9\\u5728\\u7F16\\u8F91\\u5668\\u65F6\\u7A81\\u51FA\\u663E\\u793A\\u5F53\\u524D\\u884C\\u3002\",\"\\u5448\\u73B0\\u7A7A\\u683C\\u5B57\\u7B26(\\u5B57\\u8BCD\\u4E4B\\u95F4\\u7684\\u5355\\u4E2A\\u7A7A\\u683C\\u9664\\u5916)\\u3002\",\"\\u4EC5\\u5728\\u9009\\u5B9A\\u6587\\u672C\\u4E0A\\u5448\\u73B0\\u7A7A\\u767D\\u5B57\\u7B26\\u3002\",\"\\u4EC5\\u5448\\u73B0\\u5C3E\\u968F\\u7A7A\\u683C\\u5B57\\u7B26\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u5728\\u7A7A\\u767D\\u5B57\\u7B26\\u4E0A\\u663E\\u793A\\u7B26\\u53F7\\u7684\\u65B9\\u5F0F\\u3002\",\"\\u63A7\\u5236\\u9009\\u533A\\u662F\\u5426\\u6709\\u5706\\u89D2\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u6C34\\u5E73\\u6EDA\\u52A8\\u65F6\\u53EF\\u4EE5\\u8D85\\u8FC7\\u8303\\u56F4\\u7684\\u5B57\\u7B26\\u6570\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u53EF\\u4EE5\\u6EDA\\u52A8\\u5230\\u6700\\u540E\\u4E00\\u884C\\u4E4B\\u540E\\u3002\",\"\\u540C\\u65F6\\u5782\\u76F4\\u548C\\u6C34\\u5E73\\u6EDA\\u52A8\\u65F6\\uFF0C\\u4EC5\\u6CBF\\u4E3B\\u8F74\\u6EDA\\u52A8\\u3002\\u5728\\u89E6\\u63A7\\u677F\\u4E0A\\u5782\\u76F4\\u6EDA\\u52A8\\u65F6\\uFF0C\\u53EF\\u9632\\u6B62\\u6C34\\u5E73\\u6F02\\u79FB\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u652F\\u6301 Linux \\u4E3B\\u526A\\u8D34\\u677F\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5E94\\u7A81\\u51FA\\u663E\\u793A\\u4E0E\\u6240\\u9009\\u5185\\u5BB9\\u7C7B\\u4F3C\\u7684\\u5339\\u914D\\u9879\\u3002\",\"\\u59CB\\u7EC8\\u663E\\u793A\\u6298\\u53E0\\u63A7\\u4EF6\\u3002\",\"\\u5207\\u52FF\\u663E\\u793A\\u6298\\u53E0\\u63A7\\u4EF6\\u5E76\\u51CF\\u5C0F\\u88C5\\u8BA2\\u7EBF\\u5927\\u5C0F\\u3002\",\"\\u4EC5\\u5728\\u9F20\\u6807\\u4F4D\\u4E8E\\u88C5\\u8BA2\\u7EBF\\u4E0A\\u65B9\\u65F6\\u663E\\u793A\\u6298\\u53E0\\u63A7\\u4EF6\\u3002\",\"\\u63A7\\u5236\\u4F55\\u65F6\\u663E\\u793A\\u884C\\u53F7\\u69FD\\u4E0A\\u7684\\u6298\\u53E0\\u63A7\\u4EF6\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u6DE1\\u5316\\u672A\\u4F7F\\u7528\\u7684\\u4EE3\\u7801\\u3002\",\"\\u63A7\\u5236\\u52A0\\u5220\\u9664\\u7EBF\\u88AB\\u5F03\\u7528\\u7684\\u53D8\\u91CF\\u3002\",\"\\u5728\\u5176\\u4ED6\\u5EFA\\u8BAE\\u4E0A\\u65B9\\u663E\\u793A\\u4EE3\\u7801\\u7247\\u6BB5\\u5EFA\\u8BAE\\u3002\",\"\\u5728\\u5176\\u4ED6\\u5EFA\\u8BAE\\u4E0B\\u65B9\\u663E\\u793A\\u4EE3\\u7801\\u7247\\u6BB5\\u5EFA\\u8BAE\\u3002\",\"\\u5728\\u5176\\u4ED6\\u5EFA\\u8BAE\\u4E2D\\u7A7F\\u63D2\\u663E\\u793A\\u4EE3\\u7801\\u7247\\u6BB5\\u5EFA\\u8BAE\\u3002\",\"\\u4E0D\\u663E\\u793A\\u4EE3\\u7801\\u7247\\u6BB5\\u5EFA\\u8BAE\\u3002\",\"\\u63A7\\u5236\\u4EE3\\u7801\\u7247\\u6BB5\\u662F\\u5426\\u4E0E\\u5176\\u4ED6\\u5EFA\\u8BAE\\u4E00\\u8D77\\u663E\\u793A\\u53CA\\u5176\\u6392\\u5217\\u7684\\u4F4D\\u7F6E\\u3002\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u4F7F\\u7528\\u52A8\\u753B\\u6EDA\\u52A8\\u3002\",\"Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\",\"\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u7684\\u5B57\\u53F7\\u3002\\u8BBE\\u7F6E\\u4E3A {0} \\u65F6\\uFF0C\\u5C06\\u4F7F\\u7528 {1} \\u7684\\u503C\\u3002\",\"\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u7684\\u884C\\u9AD8\\u3002\\u8BBE\\u7F6E\\u4E3A {0} \\u65F6\\uFF0C\\u5C06\\u4F7F\\u7528 {1} \\u7684\\u503C\\u3002\\u6700\\u5C0F\\u503C\\u4E3A 8\\u3002\",\"\\u63A7\\u5236\\u5728\\u952E\\u5165\\u89E6\\u53D1\\u5B57\\u7B26\\u540E\\u662F\\u5426\\u81EA\\u52A8\\u663E\\u793A\\u5EFA\\u8BAE\\u3002\",\"\\u59CB\\u7EC8\\u9009\\u62E9\\u7B2C\\u4E00\\u4E2A\\u5EFA\\u8BAE\\u3002\",\"\\u9009\\u62E9\\u6700\\u8FD1\\u7684\\u5EFA\\u8BAE\\uFF0C\\u9664\\u975E\\u8FDB\\u4E00\\u6B65\\u952E\\u5165\\u9009\\u62E9\\u5176\\u4ED6\\u9879\\u3002\\u4F8B\\u5982 `console. -> console.log`\\uFF0C\\u56E0\\u4E3A\\u6700\\u8FD1\\u8865\\u5168\\u8FC7 `log`\\u3002\",\"\\u6839\\u636E\\u4E4B\\u524D\\u8865\\u5168\\u8FC7\\u7684\\u5EFA\\u8BAE\\u7684\\u524D\\u7F00\\u6765\\u8FDB\\u884C\\u9009\\u62E9\\u3002\\u4F8B\\u5982\\uFF0C`co -> console`\\u3001`con -> const`\\u3002\",\"\\u63A7\\u5236\\u5728\\u5EFA\\u8BAE\\u5217\\u8868\\u4E2D\\u5982\\u4F55\\u9884\\u5148\\u9009\\u62E9\\u5EFA\\u8BAE\\u3002\",\"\\u5728\\u6309\\u4E0B Tab \\u952E\\u65F6\\u8FDB\\u884C Tab \\u8865\\u5168\\uFF0C\\u5C06\\u63D2\\u5165\\u6700\\u4F73\\u5339\\u914D\\u5EFA\\u8BAE\\u3002\",\"\\u7981\\u7528 Tab \\u8865\\u5168\\u3002\",'\\u5728\\u524D\\u7F00\\u5339\\u914D\\u65F6\\u8FDB\\u884C Tab \\u8865\\u5168\\u3002\\u5728 \"quickSuggestions\" \\u672A\\u542F\\u7528\\u65F6\\u4F53\\u9A8C\\u6700\\u597D\\u3002',\"\\u542F\\u7528 Tab \\u8865\\u5168\\u3002\",\"\\u81EA\\u52A8\\u5220\\u9664\\u5F02\\u5E38\\u7684\\u884C\\u7EC8\\u6B62\\u7B26\\u3002\",\"\\u5FFD\\u7565\\u5F02\\u5E38\\u7684\\u884C\\u7EC8\\u6B62\\u7B26\\u3002\",\"\\u63D0\\u793A\\u5220\\u9664\\u5F02\\u5E38\\u7684\\u884C\\u7EC8\\u6B62\\u7B26\\u3002\",\"\\u5220\\u9664\\u53EF\\u80FD\\u5BFC\\u81F4\\u95EE\\u9898\\u7684\\u5F02\\u5E38\\u884C\\u7EC8\\u6B62\\u7B26\\u3002\",\"\\u6839\\u636E\\u5236\\u8868\\u4F4D\\u63D2\\u5165\\u548C\\u5220\\u9664\\u7A7A\\u683C\\u3002\",\"\\u4F7F\\u7528\\u9ED8\\u8BA4\\u6362\\u884C\\u89C4\\u5219\\u3002\",\"\\u4E2D\\u6587/\\u65E5\\u8BED/\\u97E9\\u8BED(CJK)\\u6587\\u672C\\u4E0D\\u5E94\\u4F7F\\u7528\\u65AD\\u5B57\\u529F\\u80FD\\u3002\\u975E CJK \\u6587\\u672C\\u884C\\u4E3A\\u4E0E\\u666E\\u901A\\u6587\\u672C\\u884C\\u4E3A\\u76F8\\u540C\\u3002\",\"\\u63A7\\u5236\\u4E2D\\u6587/\\u65E5\\u8BED/\\u97E9\\u8BED(CJK)\\u6587\\u672C\\u4F7F\\u7528\\u7684\\u65AD\\u5B57\\u89C4\\u5219\\u3002\",\"\\u6267\\u884C\\u5355\\u8BCD\\u76F8\\u5173\\u7684\\u5BFC\\u822A\\u6216\\u64CD\\u4F5C\\u65F6\\u4F5C\\u4E3A\\u5355\\u8BCD\\u5206\\u9694\\u7B26\\u7684\\u5B57\\u7B26\\u3002\",\"\\u6C38\\u4E0D\\u6362\\u884C\\u3002\",\"\\u5C06\\u5728\\u89C6\\u533A\\u5BBD\\u5EA6\\u5904\\u6362\\u884C\\u3002\",\"\\u5728 `#editor.wordWrapColumn#` \\u5904\\u6298\\u884C\\u3002\",\"\\u5728\\u89C6\\u533A\\u5BBD\\u5EA6\\u548C `#editor.wordWrapColumn#` \\u4E2D\\u7684\\u8F83\\u5C0F\\u503C\\u5904\\u6298\\u884C\\u3002\",\"\\u63A7\\u5236\\u6298\\u884C\\u7684\\u65B9\\u5F0F\\u3002\",\"\\u5728 `#editor.wordWrap#` \\u4E3A `wordWrapColumn` \\u6216 `bounded` \\u65F6\\uFF0C\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u7684\\u6298\\u884C\\u5217\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u5E94\\u4F7F\\u7528\\u9ED8\\u8BA4\\u6587\\u6863\\u989C\\u8272\\u63D0\\u4F9B\\u7A0B\\u5E8F\\u663E\\u793A\\u5185\\u8054\\u989C\\u8272\\u4FEE\\u9970\",\"\\u63A7\\u5236\\u7F16\\u8F91\\u5668\\u662F\\u63A5\\u6536\\u9009\\u9879\\u5361\\u8FD8\\u662F\\u5C06\\u5176\\u5EF6\\u8FDF\\u5230\\u5DE5\\u4F5C\\u53F0\\u8FDB\\u884C\\u5BFC\\u822A\\u3002\"],\"vs/editor/common/core/editorColorRegistry\":[\"\\u5149\\u6807\\u6240\\u5728\\u884C\\u9AD8\\u4EAE\\u5185\\u5BB9\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u5149\\u6807\\u6240\\u5728\\u884C\\u56DB\\u5468\\u8FB9\\u6846\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u80CC\\u666F\\u989C\\u8272\\u7684\\u9AD8\\u4EAE\\u8303\\u56F4\\uFF0C\\u559C\\u6B22\\u901A\\u8FC7\\u5FEB\\u901F\\u6253\\u5F00\\u548C\\u67E5\\u627E\\u529F\\u80FD\\u3002\\u989C\\u8272\\u4E0D\\u80FD\\u4E0D\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u5E95\\u5C42\\u88C5\\u9970\\u3002\",\"\\u9AD8\\u4EAE\\u533A\\u57DF\\u8FB9\\u6846\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u9AD8\\u4EAE\\u663E\\u793A\\u7B26\\u53F7\\u7684\\u80CC\\u666F\\u989C\\u8272\\uFF0C\\u4F8B\\u5982\\u8F6C\\u5230\\u5B9A\\u4E49\\u6216\\u8F6C\\u5230\\u4E0B\\u4E00\\u4E2A/\\u4E0A\\u4E00\\u4E2A\\u7B26\\u53F7\\u3002\\u989C\\u8272\\u4E0D\\u80FD\\u662F\\u4E0D\\u900F\\u660E\\u7684\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u5E95\\u5C42\\u88C5\\u9970\\u3002\",\"\\u9AD8\\u4EAE\\u663E\\u793A\\u7B26\\u53F7\\u5468\\u56F4\\u7684\\u8FB9\\u6846\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5149\\u6807\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5149\\u6807\\u7684\\u80CC\\u666F\\u8272\\u3002\\u53EF\\u4EE5\\u81EA\\u5B9A\\u4E49\\u5757\\u578B\\u5149\\u6807\\u8986\\u76D6\\u5B57\\u7B26\\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u4E2D\\u7A7A\\u767D\\u5B57\\u7B26\\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u884C\\u53F7\\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF\\u7684\\u989C\\u8272\\u3002\",\"\\u201CeditorIndentGuide.background\\u201D \\u5DF2\\u5F03\\u7528\\u3002\\u8BF7\\u6539\\u7528 \\u201CeditorIndentGuide.background1\\u201D\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6D3B\\u52A8\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF\\u7684\\u989C\\u8272\\u3002\",\"\\u201CeditorIndentGuide.activeBackground\\u201D \\u5DF2\\u5F03\\u7528\\u3002\\u8BF7\\u6539\\u7528 \\u201CeditorIndentGuide.activeBackground1\\u201D\\u3002\",\"\\u7F16\\u8F91\\u5668\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF (1) \\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF (2) \\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF (3) \\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF (4) \\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF (5) \\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF (6) \\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6D3B\\u52A8\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF (1) \\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6D3B\\u52A8\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF (2) \\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6D3B\\u52A8\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF (3) \\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6D3B\\u52A8\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF (4) \\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6D3B\\u52A8\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF (5) \\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6D3B\\u52A8\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF (6) \\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6D3B\\u52A8\\u884C\\u53F7\\u7684\\u989C\\u8272\",'\"Id\" \\u5DF2\\u88AB\\u5F03\\u7528\\uFF0C\\u8BF7\\u6539\\u7528 \"editorLineNumber.activeForeground\"\\u3002',\"\\u7F16\\u8F91\\u5668\\u6D3B\\u52A8\\u884C\\u53F7\\u7684\\u989C\\u8272\",\"\\u5C06 editor.renderFinalNewline \\u8BBE\\u7F6E\\u4E3A\\u7070\\u8272\\u65F6\\u6700\\u7EC8\\u7F16\\u8F91\\u5668\\u884C\\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6807\\u5C3A\\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668 CodeLens \\u7684\\u524D\\u666F\\u8272\",\"\\u5339\\u914D\\u62EC\\u53F7\\u7684\\u80CC\\u666F\\u8272\",\"\\u5339\\u914D\\u62EC\\u53F7\\u5916\\u6846\\u7684\\u989C\\u8272\",\"\\u6982\\u89C8\\u6807\\u5C3A\\u8FB9\\u6846\\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6982\\u8FF0\\u6807\\u5C3A\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5BFC\\u822A\\u7EBF\\u7684\\u80CC\\u666F\\u8272\\u3002\\u5BFC\\u822A\\u7EBF\\u5305\\u62EC\\u8FB9\\u7F18\\u7B26\\u53F7\\u548C\\u884C\\u53F7\\u3002\",\"\\u7F16\\u8F91\\u5668\\u4E2D\\u4E0D\\u5FC5\\u8981(\\u672A\\u4F7F\\u7528)\\u7684\\u6E90\\u4EE3\\u7801\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",'\\u975E\\u5FC5\\u987B(\\u672A\\u4F7F\\u7528)\\u4EE3\\u7801\\u7684\\u5728\\u7F16\\u8F91\\u5668\\u4E2D\\u663E\\u793A\\u7684\\u4E0D\\u900F\\u660E\\u5EA6\\u3002\\u4F8B\\u5982\\uFF0C\"#000000c0\" \\u5C06\\u4EE5 75% \\u7684\\u4E0D\\u900F\\u660E\\u5EA6\\u663E\\u793A\\u4EE3\\u7801\\u3002\\u5BF9\\u4E8E\\u9AD8\\u5BF9\\u6BD4\\u5EA6\\u4E3B\\u9898\\uFF0C\\u8BF7\\u4F7F\\u7528 \\u201DeditorUnnecessaryCode.border\\u201C \\u4E3B\\u9898\\u6765\\u4E3A\\u975E\\u5FC5\\u987B\\u4EE3\\u7801\\u6DFB\\u52A0\\u4E0B\\u5212\\u7EBF\\uFF0C\\u4EE5\\u907F\\u514D\\u989C\\u8272\\u6DE1\\u5316\\u3002',\"\\u7F16\\u8F91\\u5668\\u4E2D\\u865A\\u5F71\\u6587\\u672C\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u4E2D\\u865A\\u5F71\\u6587\\u672C\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u4E2D\\u865A\\u5F71\\u6587\\u672C\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u7528\\u4E8E\\u7A81\\u51FA\\u663E\\u793A\\u8303\\u56F4\\u7684\\u6982\\u8FF0\\u6807\\u5C3A\\u6807\\u8BB0\\u989C\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u6982\\u89C8\\u6807\\u5C3A\\u4E2D\\u9519\\u8BEF\\u6807\\u8BB0\\u7684\\u989C\\u8272\\u3002\",\"\\u6982\\u89C8\\u6807\\u5C3A\\u4E2D\\u8B66\\u544A\\u6807\\u8BB0\\u7684\\u989C\\u8272\\u3002\",\"\\u6982\\u89C8\\u6807\\u5C3A\\u4E2D\\u4FE1\\u606F\\u6807\\u8BB0\\u7684\\u989C\\u8272\\u3002\",\"\\u62EC\\u53F7\\u7684\\u524D\\u666F\\u8272(1)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u7740\\u8272\\u3002\",\"\\u62EC\\u53F7\\u7684\\u524D\\u666F\\u8272(2)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u7740\\u8272\\u3002\",\"\\u62EC\\u53F7\\u7684\\u524D\\u666F\\u8272(3)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u7740\\u8272\\u3002\",\"\\u62EC\\u53F7\\u7684\\u524D\\u666F\\u8272(4)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u7740\\u8272\\u3002\",\"\\u62EC\\u53F7\\u7684\\u524D\\u666F\\u8272(5)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u7740\\u8272\\u3002\",\"\\u62EC\\u53F7\\u7684\\u524D\\u666F\\u8272(6)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u7740\\u8272\\u3002\",\"\\u65B9\\u62EC\\u53F7\\u51FA\\u73B0\\u610F\\u5916\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u975E\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u7684\\u80CC\\u666F\\u8272(1)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u975E\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u7684\\u80CC\\u666F\\u8272(2)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u975E\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u7684\\u80CC\\u666F\\u8272(3)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u975E\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u7684\\u80CC\\u666F\\u8272(4)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u975E\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u7684\\u80CC\\u666F\\u8272(5)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u975E\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u7684\\u80CC\\u666F\\u8272(6)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u7684\\u80CC\\u666F\\u8272(1)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u7684\\u80CC\\u666F\\u8272(2)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u7684\\u80CC\\u666F\\u8272(3)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u7684\\u80CC\\u666F\\u8272(4)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u7684\\u80CC\\u666F\\u8272(5)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u6D3B\\u52A8\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u7684\\u80CC\\u666F\\u8272(6)\\u3002\\u9700\\u8981\\u542F\\u7528\\u62EC\\u53F7\\u5BF9\\u6307\\u5357\\u3002\",\"\\u7528\\u4E8E\\u7A81\\u51FA\\u663E\\u793A Unicode \\u5B57\\u7B26\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u7528\\u4E8E\\u7A81\\u51FA\\u663E\\u793A Unicode \\u5B57\\u7B26\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\"],\"vs/editor/common/editorContextKeys\":[\"\\u7F16\\u8F91\\u5668\\u6587\\u672C\\u662F\\u5426\\u5177\\u6709\\u7126\\u70B9(\\u5149\\u6807\\u662F\\u5426\\u95EA\\u70C1)\",\"\\u7F16\\u8F91\\u5668\\u6216\\u7F16\\u8F91\\u5668\\u5C0F\\u7EC4\\u4EF6\\u662F\\u5426\\u5177\\u6709\\u7126\\u70B9(\\u4F8B\\u5982\\u7126\\u70B9\\u5728\\u201C\\u67E5\\u627E\\u201D\\u5C0F\\u7EC4\\u4EF6\\u4E2D)\",\"\\u7F16\\u8F91\\u5668\\u6216 RTF \\u8F93\\u5165\\u662F\\u5426\\u6709\\u7126\\u70B9(\\u5149\\u6807\\u662F\\u5426\\u95EA\\u70C1)\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u4E3A\\u53EA\\u8BFB\",\"\\u4E0A\\u4E0B\\u6587\\u662F\\u5426\\u4E3A\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\",\"\\u4E0A\\u4E0B\\u6587\\u662F\\u5426\\u4E3A\\u5D4C\\u5165\\u5F0F\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\",\"Whether a moved code block is selected for comparison\",\"\\u53EF\\u8BBF\\u95EE\\u5DEE\\u5F02\\u67E5\\u770B\\u5668\\u662F\\u5426\\u53EF\\u89C1\",\"Whether the diff editor render side by side inline breakpoint is reached\",'\\u662F\\u5426\\u5DF2\\u542F\\u7528 \"editor.columnSelection\"',\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5DF2\\u9009\\u5B9A\\u6587\\u672C\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u6709\\u591A\\u4E2A\\u9009\\u62E9\",'\"Tab\" \\u662F\\u5426\\u5C06\\u7126\\u70B9\\u79FB\\u51FA\\u7F16\\u8F91\\u5668',\"\\u7F16\\u8F91\\u5668\\u8F6F\\u952E\\u76D8\\u662F\\u5426\\u53EF\\u89C1\",\"\\u662F\\u5426\\u805A\\u7126\\u7F16\\u8F91\\u5668\\u60AC\\u505C\",\"\\u662F\\u5426\\u805A\\u7126\\u7C98\\u6027\\u6EDA\\u52A8\",\"\\u7C98\\u6027\\u6EDA\\u52A8\\u662F\\u5426\\u53EF\\u89C1\",\"\\u72EC\\u7ACB\\u989C\\u8272\\u9009\\u53D6\\u5668\\u662F\\u5426\\u53EF\\u89C1\",\"\\u72EC\\u7ACB\\u989C\\u8272\\u9009\\u53D6\\u5668\\u662F\\u5426\\u805A\\u7126\",\"\\u8BE5\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u662F\\u66F4\\u5927\\u7684\\u7F16\\u8F91\\u5668(\\u4F8B\\u5982\\u7B14\\u8BB0\\u672C)\\u7684\\u4E00\\u90E8\\u5206\",\"\\u7F16\\u8F91\\u5668\\u7684\\u8BED\\u8A00\\u6807\\u8BC6\\u7B26\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u8865\\u5168\\u9879\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u4EE3\\u7801\\u64CD\\u4F5C\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709 CodeLens \\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u5B9A\\u4E49\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u58F0\\u660E\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u5B9E\\u73B0\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u7C7B\\u578B\\u5B9A\\u4E49\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u60AC\\u505C\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u6587\\u6863\\u7A81\\u51FA\\u663E\\u793A\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u6587\\u6863\\u7B26\\u53F7\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u5F15\\u7528\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u91CD\\u547D\\u540D\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u7B7E\\u540D\\u5E2E\\u52A9\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u5185\\u8054\\u63D0\\u793A\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u6587\\u6863\\u683C\\u5F0F\\u8BBE\\u7F6E\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u6587\\u6863\\u9009\\u62E9\\u683C\\u5F0F\\u8BBE\\u7F6E\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u5177\\u6709\\u591A\\u4E2A\\u6587\\u6863\\u683C\\u5F0F\\u8BBE\\u7F6E\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u6709\\u591A\\u4E2A\\u6587\\u6863\\u9009\\u62E9\\u683C\\u5F0F\\u8BBE\\u7F6E\\u63D0\\u4F9B\\u7A0B\\u5E8F\"],\"vs/editor/common/languages\":[\"\\u6570\\u7EC4\",\"\\u5E03\\u5C14\\u503C\",\"\\u7C7B\",\"\\u5E38\\u6570\",\"\\u6784\\u9020\\u51FD\\u6570\",\"\\u679A\\u4E3E\",\"\\u679A\\u4E3E\\u6210\\u5458\",\"\\u4E8B\\u4EF6\",\"\\u5B57\\u6BB5\",\"\\u6587\\u4EF6\",\"\\u51FD\\u6570\",\"\\u63A5\\u53E3\",\"\\u952E\",\"\\u65B9\\u6CD5\",\"\\u6A21\\u5757\",\"\\u547D\\u540D\\u7A7A\\u95F4\",\"Null\",\"\\u6570\\u5B57\",\"\\u5BF9\\u8C61\",\"\\u8FD0\\u7B97\\u7B26\",\"\\u5305\",\"\\u5C5E\\u6027\",\"\\u5B57\\u7B26\\u4E32\",\"\\u7ED3\\u6784\",\"\\u7C7B\\u578B\\u53C2\\u6570\",\"\\u53D8\\u91CF\",\"{0} ({1})\"],\"vs/editor/common/languages/modesRegistry\":[\"\\u7EAF\\u6587\\u672C\"],\"vs/editor/common/model/editStack\":[\"\\u8F93\\u5165\"],\"vs/editor/common/standaloneStrings\":[\"\\u5F00\\u53D1\\u4EBA\\u5458: \\u68C0\\u67E5\\u4EE4\\u724C\",\"\\u8F6C\\u5230\\u884C/\\u5217...\",\"\\u663E\\u793A\\u6240\\u6709\\u5FEB\\u901F\\u8BBF\\u95EE\\u63D0\\u4F9B\\u7A0B\\u5E8F\",\"\\u547D\\u4EE4\\u9762\\u677F\",\"\\u663E\\u793A\\u5E76\\u8FD0\\u884C\\u547D\\u4EE4\",\"\\u8F6C\\u5230\\u7B26\\u53F7...\",\"\\u6309\\u7C7B\\u522B\\u8F6C\\u5230\\u7B26\\u53F7...\",\"\\u7F16\\u8F91\\u5668\\u5185\\u5BB9\",\"\\u6309 Alt+F1 \\u53EF\\u6253\\u5F00\\u8F85\\u52A9\\u529F\\u80FD\\u9009\\u9879\\u3002\",\"\\u5207\\u6362\\u9AD8\\u5BF9\\u6BD4\\u5EA6\\u4E3B\\u9898\",\"\\u5728 {1} \\u4E2A\\u6587\\u4EF6\\u4E2D\\u8FDB\\u884C\\u4E86 {0} \\u6B21\\u7F16\\u8F91\"],\"vs/editor/common/viewLayout/viewLineRenderer\":[\"\\u663E\\u793A\\u66F4\\u591A({0})\",\"{0} \\u5B57\\u7B26\"],\"vs/editor/contrib/anchorSelect/browser/anchorSelect\":[\"\\u9009\\u62E9\\u5B9A\\u4F4D\\u70B9\",\"\\u5B9A\\u4F4D\\u70B9\\u8BBE\\u7F6E\\u4E3A {0}:{1}\",\"\\u8BBE\\u7F6E\\u9009\\u62E9\\u5B9A\\u4F4D\\u70B9\",\"\\u8F6C\\u5230\\u9009\\u62E9\\u5B9A\\u4F4D\\u70B9\",\"\\u9009\\u62E9\\u4ECE\\u5B9A\\u4F4D\\u70B9\\u5230\\u5149\\u6807\",\"\\u53D6\\u6D88\\u9009\\u62E9\\u5B9A\\u4F4D\\u70B9\"],\"vs/editor/contrib/bracketMatching/browser/bracketMatching\":[\"\\u6982\\u89C8\\u6807\\u5C3A\\u4E0A\\u8868\\u793A\\u5339\\u914D\\u62EC\\u53F7\\u7684\\u6807\\u8BB0\\u989C\\u8272\\u3002\",\"\\u8F6C\\u5230\\u62EC\\u53F7\",\"\\u9009\\u62E9\\u62EC\\u53F7\\u6240\\u6709\\u5185\\u5BB9\",\"\\u5220\\u9664\\u62EC\\u53F7\",\"\\u8F6C\\u5230\\u62EC\\u53F7(&&B)\"],\"vs/editor/contrib/caretOperations/browser/caretOperations\":[\"\\u5411\\u5DE6\\u79FB\\u52A8\\u6240\\u9009\\u6587\\u672C\",\"\\u5411\\u53F3\\u79FB\\u52A8\\u6240\\u9009\\u6587\\u672C\"],\"vs/editor/contrib/caretOperations/browser/transpose\":[\"\\u8F6C\\u7F6E\\u5B57\\u6BCD\"],\"vs/editor/contrib/clipboard/browser/clipboard\":[\"\\u526A\\u5207(&&T)\",\"\\u526A\\u5207\",\"\\u526A\\u5207\",\"\\u526A\\u5207\",\"\\u590D\\u5236(&&C)\",\"\\u590D\\u5236\",\"\\u590D\\u5236\",\"\\u590D\\u5236\",\"\\u590D\\u5236\\u4E3A\",\"\\u590D\\u5236\\u4E3A\",\"\\u5171\\u4EAB\",\"\\u5171\\u4EAB\",\"\\u5171\\u4EAB\",\"\\u7C98\\u8D34(&&P)\",\"\\u7C98\\u8D34\",\"\\u7C98\\u8D34\",\"\\u7C98\\u8D34\",\"\\u590D\\u5236\\u5E76\\u7A81\\u51FA\\u663E\\u793A\\u8BED\\u6CD5\"],\"vs/editor/contrib/codeAction/browser/codeAction\":[\"\\u5E94\\u7528\\u4EE3\\u7801\\u64CD\\u4F5C\\u65F6\\u53D1\\u751F\\u672A\\u77E5\\u9519\\u8BEF\"],\"vs/editor/contrib/codeAction/browser/codeActionCommands\":[\"\\u8981\\u8FD0\\u884C\\u7684\\u4EE3\\u7801\\u64CD\\u4F5C\\u7684\\u79CD\\u7C7B\\u3002\",\"\\u63A7\\u5236\\u4F55\\u65F6\\u5E94\\u7528\\u8FD4\\u56DE\\u7684\\u64CD\\u4F5C\\u3002\",\"\\u59CB\\u7EC8\\u5E94\\u7528\\u7B2C\\u4E00\\u4E2A\\u8FD4\\u56DE\\u7684\\u4EE3\\u7801\\u64CD\\u4F5C\\u3002\",\"\\u5982\\u679C\\u4EC5\\u8FD4\\u56DE\\u7684\\u7B2C\\u4E00\\u4E2A\\u4EE3\\u7801\\u64CD\\u4F5C\\uFF0C\\u5219\\u5E94\\u7528\\u8BE5\\u64CD\\u4F5C\\u3002\",\"\\u4E0D\\u8981\\u5E94\\u7528\\u8FD4\\u56DE\\u7684\\u4EE3\\u7801\\u64CD\\u4F5C\\u3002\",\"\\u5982\\u679C\\u53EA\\u5E94\\u8FD4\\u56DE\\u9996\\u9009\\u4EE3\\u7801\\u64CD\\u4F5C\\uFF0C\\u5219\\u5E94\\u8FD4\\u56DE\\u63A7\\u4EF6\\u3002\",\"\\u5FEB\\u901F\\u4FEE\\u590D...\",\"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u4EE3\\u7801\\u64CD\\u4F5C\",'\\u6CA1\\u6709\\u9002\\u7528\\u4E8E\"{0}\"\\u7684\\u9996\\u9009\\u4EE3\\u7801\\u64CD\\u4F5C','\\u6CA1\\u6709\\u9002\\u7528\\u4E8E\"{0}\"\\u7684\\u4EE3\\u7801\\u64CD\\u4F5C',\"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u9996\\u9009\\u4EE3\\u7801\\u64CD\\u4F5C\",\"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u4EE3\\u7801\\u64CD\\u4F5C\",\"\\u91CD\\u6784...\",'\\u6CA1\\u6709\\u9002\\u7528\\u4E8E\"{0}\"\\u7684\\u9996\\u9009\\u91CD\\u6784','\\u6CA1\\u6709\\u53EF\\u7528\\u7684\"{0}\"\\u91CD\\u6784',\"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u9996\\u9009\\u91CD\\u6784\",\"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u91CD\\u6784\\u64CD\\u4F5C\",\"\\u6E90\\u4EE3\\u7801\\u64CD\\u4F5C...\",'\\u6CA1\\u6709\\u9002\\u7528\\u4E8E\"{0}\"\\u7684\\u9996\\u9009\\u6E90\\u64CD\\u4F5C',\"\\u6CA1\\u6709\\u9002\\u7528\\u4E8E\\u201C {0}\\u201D\\u7684\\u6E90\\u64CD\\u4F5C\",\"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u9996\\u9009\\u6E90\\u64CD\\u4F5C\",\"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u6E90\\u4EE3\\u7801\\u64CD\\u4F5C\",\"\\u6574\\u7406 import \\u8BED\\u53E5\",\"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u6574\\u7406 import \\u8BED\\u53E5\\u64CD\\u4F5C\",\"\\u5168\\u90E8\\u4FEE\\u590D\",\"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u201C\\u5168\\u90E8\\u4FEE\\u590D\\u201D\\u64CD\\u4F5C\",\"\\u81EA\\u52A8\\u4FEE\\u590D...\",\"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u81EA\\u52A8\\u4FEE\\u590D\\u7A0B\\u5E8F\"],\"vs/editor/contrib/codeAction/browser/codeActionContributions\":[\"\\u542F\\u7528/\\u7981\\u7528\\u5728\\u4EE3\\u7801\\u64CD\\u4F5C\\u83DC\\u5355\\u4E2D\\u663E\\u793A\\u7EC4\\u6807\\u5934\\u3002\"],\"vs/editor/contrib/codeAction/browser/codeActionController\":[\"\\u9690\\u85CF\\u5DF2\\u7981\\u7528\\u9879\",\"\\u663E\\u793A\\u5DF2\\u7981\\u7528\\u9879\"],\"vs/editor/contrib/codeAction/browser/codeActionMenu\":[\"\\u66F4\\u591A\\u64CD\\u4F5C...\",\"\\u5FEB\\u901F\\u4FEE\\u590D...\",\"\\u63D0\\u53D6...\",\"\\u5185\\u8054...\",\"\\u91CD\\u5199...\",\"\\u79FB\\u52A8...\",\"\\u73AF\\u7ED5\\u65B9\\u5F0F...\",\"\\u6E90\\u4EE3\\u7801\\u64CD\\u4F5C...\"],\"vs/editor/contrib/codeAction/browser/lightBulbWidget\":[\"\\u663E\\u793A\\u4EE3\\u7801\\u64CD\\u4F5C\\u3002\\u9996\\u9009\\u53EF\\u7528\\u7684\\u5FEB\\u901F\\u4FEE\\u590D({0})\",\"\\u663E\\u793A\\u4EE3\\u7801\\u64CD\\u4F5C({0})\",\"\\u663E\\u793A\\u4EE3\\u7801\\u64CD\\u4F5C\"],\"vs/editor/contrib/codelens/browser/codelensController\":[\"\\u663E\\u793A\\u5F53\\u524D\\u884C\\u7684 Code Lens \\u547D\\u4EE4\"],\"vs/editor/contrib/colorPicker/browser/colorPickerWidget\":[\"\\u5355\\u51FB\\u4EE5\\u5207\\u6362\\u989C\\u8272\\u9009\\u9879 (rgb/hsl/hex)\",\"\\u7528\\u4E8E\\u5173\\u95ED\\u989C\\u8272\\u9009\\u53D6\\u5668\\u7684\\u56FE\\u6807\"],\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\":[\"\\u663E\\u793A\\u6216\\u805A\\u7126\\u72EC\\u7ACB\\u989C\\u8272\\u9009\\u53D6\\u5668\",\"&&\\u663E\\u793A\\u6216\\u805A\\u7126\\u72EC\\u7ACB\\u989C\\u8272\\u9009\\u53D6\\u5668\",\"\\u9690\\u85CF\\u989C\\u8272\\u9009\\u53D6\\u5668\",\"\\u4F7F\\u7528\\u72EC\\u7ACB\\u989C\\u8272\\u9009\\u53D6\\u5668\\u63D2\\u5165\\u989C\\u8272\"],\"vs/editor/contrib/comment/browser/comment\":[\"\\u5207\\u6362\\u884C\\u6CE8\\u91CA\",\"\\u5207\\u6362\\u884C\\u6CE8\\u91CA(&&T)\",\"\\u6DFB\\u52A0\\u884C\\u6CE8\\u91CA\",\"\\u5220\\u9664\\u884C\\u6CE8\\u91CA\",\"\\u5207\\u6362\\u5757\\u6CE8\\u91CA\",\"\\u5207\\u6362\\u5757\\u6CE8\\u91CA(&&B)\"],\"vs/editor/contrib/contextmenu/browser/contextmenu\":[\"\\u7F29\\u7565\\u56FE\",\"\\u5448\\u73B0\\u5B57\\u7B26\",\"\\u5782\\u76F4\\u5927\\u5C0F\",\"\\u6210\\u6BD4\\u4F8B\",\"\\u586B\\u5145\",\"\\u9002\\u5E94\",\"\\u6ED1\\u5757\",\"\\u9F20\\u6807\\u60AC\\u505C\",\"\\u59CB\\u7EC8\",\"\\u663E\\u793A\\u7F16\\u8F91\\u5668\\u4E0A\\u4E0B\\u6587\\u83DC\\u5355\"],\"vs/editor/contrib/cursorUndo/browser/cursorUndo\":[\"\\u5149\\u6807\\u64A4\\u6D88\",\"\\u5149\\u6807\\u91CD\\u505A\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\":[\"\\u7C98\\u8D34\\u4E3A...\",\"\\u8981\\u5C1D\\u8BD5\\u5E94\\u7528\\u7684\\u7C98\\u8D34\\u7F16\\u8F91\\u7684 ID\\u3002\\u5982\\u679C\\u672A\\u63D0\\u4F9B\\uFF0C\\u7F16\\u8F91\\u5668\\u5C06\\u663E\\u793A\\u9009\\u53D6\\u5668\\u3002\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\":[\"\\u662F\\u5426\\u663E\\u793A\\u7C98\\u8D34\\u5C0F\\u7EC4\\u4EF6\",\"\\u663E\\u793A\\u7C98\\u8D34\\u9009\\u9879...\",\"\\u6B63\\u5728\\u8FD0\\u884C\\u7C98\\u8D34\\u5904\\u7406\\u7A0B\\u5E8F\\u3002\\u5355\\u51FB\\u4EE5\\u53D6\\u6D88\",\"\\u9009\\u62E9\\u7C98\\u8D34\\u64CD\\u4F5C\",\"\\u6B63\\u5728\\u8FD0\\u884C\\u7C98\\u8D34\\u5904\\u7406\\u7A0B\\u5E8F\"],\"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\":[\"\\u5185\\u7F6E\",\"\\u63D2\\u5165\\u7EAF\\u6587\\u672C\",\"\\u63D2\\u5165 URI\",\"\\u63D2\\u5165 URI\",\"\\u63D2\\u5165\\u8DEF\\u5F84\",\"\\u63D2\\u5165\\u8DEF\\u5F84\",\"\\u63D2\\u5165\\u76F8\\u5BF9\\u8DEF\\u5F84\",\"\\u63D2\\u5165\\u76F8\\u5BF9\\u8DEF\\u5F84\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\":[\"Configures the default drop provider to use for content of a given mime type.\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\":[\"\\u662F\\u5426\\u663E\\u793A\\u653E\\u7F6E\\u5C0F\\u7EC4\\u4EF6\",\"\\u663E\\u793A\\u653E\\u7F6E\\u9009\\u9879...\",\"\\u6B63\\u5728\\u8FD0\\u884C\\u653E\\u7F6E\\u5904\\u7406\\u7A0B\\u5E8F\\u3002\\u5355\\u51FB\\u4EE5\\u53D6\\u6D88\"],\"vs/editor/contrib/editorState/browser/keybindingCancellation\":[\"\\u7F16\\u8F91\\u5668\\u662F\\u5426\\u8FD0\\u884C\\u53EF\\u53D6\\u6D88\\u7684\\u64CD\\u4F5C\\uFF0C\\u4F8B\\u5982\\u201C\\u9884\\u89C8\\u5F15\\u7528\\u201D\"],\"vs/editor/contrib/find/browser/findController\":[\"\\u67E5\\u627E\",\"\\u67E5\\u627E(&&F)\",`\\u91CD\\u5199\\u201C\\u4F7F\\u7528\\u6B63\\u5219\\u8868\\u8FBE\\u5F0F\\u201D\\u6807\\u8BB0\\u3002\\r\n\\u5C06\\u4E0D\\u4F1A\\u4FDD\\u7559\\u8BE5\\u6807\\u8BB0\\u4F9B\\u5C06\\u6765\\u4F7F\\u7528\\u3002\\r\n0: \\u4E0D\\u6267\\u884C\\u4EFB\\u4F55\\u64CD\\u4F5C\\r\n1: True\\r\n2: False`,`\\u91CD\\u5199\\u201C\\u5339\\u914D\\u6574\\u4E2A\\u5B57\\u8BCD\\u201D\\u6807\\u8BB0\\u3002\\r\n\\u5C06\\u4E0D\\u4F1A\\u4FDD\\u7559\\u8BE5\\u6807\\u8BB0\\u4F9B\\u5C06\\u6765\\u4F7F\\u7528\\u3002\\r\n0: \\u4E0D\\u6267\\u884C\\u4EFB\\u4F55\\u64CD\\u4F5C\\r\n1: True\\r\n2: False`,`\\u91CD\\u5199\\u201C\\u6570\\u5B66\\u6848\\u4F8B\\u201D\\u6807\\u8BB0\\u3002\\r\n\\u5C06\\u4E0D\\u4F1A\\u4FDD\\u7559\\u8BE5\\u6807\\u8BB0\\u4F9B\\u5C06\\u6765\\u4F7F\\u7528\\u3002\\r\n0: \\u4E0D\\u6267\\u884C\\u4EFB\\u4F55\\u64CD\\u4F5C\\r\n1: True\\r\n2: False`,`\\u91CD\\u5199\\u201C\\u4FDD\\u7559\\u670D\\u52A1\\u6848\\u4F8B\\u201D\\u6807\\u8BB0\\u3002\\r\n\\u5C06\\u4E0D\\u4F1A\\u4FDD\\u7559\\u8BE5\\u6807\\u8BB0\\u4F9B\\u5C06\\u6765\\u4F7F\\u7528\\u3002\\r\n0: \\u4E0D\\u6267\\u884C\\u4EFB\\u4F55\\u64CD\\u4F5C\\r\n1: True\\r\n2: False`,\"\\u4F7F\\u7528\\u53C2\\u6570\\u67E5\\u627E\",\"\\u67E5\\u627E\\u9009\\u5B9A\\u5185\\u5BB9\",\"\\u67E5\\u627E\\u4E0B\\u4E00\\u4E2A\",\"\\u67E5\\u627E\\u4E0A\\u4E00\\u4E2A\",\"\\u8F6C\\u5230\\u201C\\u5339\\u914D\\u201D...\",\"\\u65E0\\u5339\\u914D\\u9879\\u3002\\u8BF7\\u5C1D\\u8BD5\\u641C\\u7D22\\u5176\\u4ED6\\u5185\\u5BB9\\u3002\",\"\\u952E\\u5165\\u6570\\u5B57\\u4EE5\\u8F6C\\u5230\\u7279\\u5B9A\\u5339\\u914D\\u9879(\\u4ECB\\u4E8E 1 \\u548C {0} \\u4E4B\\u95F4)\",\"\\u8BF7\\u952E\\u5165\\u4ECB\\u4E8E 1 \\u548C {0} \\u4E4B\\u95F4\\u7684\\u6570\\u5B57\",\"\\u8BF7\\u952E\\u5165\\u4ECB\\u4E8E 1 \\u548C {0} \\u4E4B\\u95F4\\u7684\\u6570\\u5B57\",\"\\u67E5\\u627E\\u4E0B\\u4E00\\u4E2A\\u9009\\u62E9\",\"\\u67E5\\u627E\\u4E0A\\u4E00\\u4E2A\\u9009\\u62E9\",\"\\u66FF\\u6362\",\"\\u66FF\\u6362(&&R)\"],\"vs/editor/contrib/find/browser/findWidget\":[\"\\u7F16\\u8F91\\u5668\\u67E5\\u627E\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u7684\\u201C\\u5728\\u9009\\u5B9A\\u5185\\u5BB9\\u4E2D\\u67E5\\u627E\\u201D\\u56FE\\u6807\\u3002\",\"\\u7528\\u4E8E\\u6307\\u793A\\u7F16\\u8F91\\u5668\\u67E5\\u627E\\u5C0F\\u7EC4\\u4EF6\\u5DF2\\u6298\\u53E0\\u7684\\u56FE\\u6807\\u3002\",\"\\u7528\\u4E8E\\u6307\\u793A\\u7F16\\u8F91\\u5668\\u67E5\\u627E\\u5C0F\\u7EC4\\u4EF6\\u5DF2\\u5C55\\u5F00\\u7684\\u56FE\\u6807\\u3002\",\"\\u7F16\\u8F91\\u5668\\u67E5\\u627E\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u7684\\u201C\\u66FF\\u6362\\u201D\\u56FE\\u6807\\u3002\",\"\\u7F16\\u8F91\\u5668\\u67E5\\u627E\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u7684\\u201C\\u5168\\u90E8\\u66FF\\u6362\\u201D\\u56FE\\u6807\\u3002\",\"\\u7F16\\u8F91\\u5668\\u67E5\\u627E\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u7684\\u201C\\u67E5\\u627E\\u4E0A\\u4E00\\u4E2A\\u201D\\u56FE\\u6807\\u3002\",\"\\u7F16\\u8F91\\u5668\\u67E5\\u627E\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u7684\\u201C\\u67E5\\u627E\\u4E0B\\u4E00\\u4E2A\\u201D\\u56FE\\u6807\\u3002\",\"\\u67E5\\u627E/\\u66FF\\u6362\",\"\\u67E5\\u627E\",\"\\u67E5\\u627E\",\"\\u4E0A\\u4E00\\u4E2A\\u5339\\u914D\\u9879\",\"\\u4E0B\\u4E00\\u4E2A\\u5339\\u914D\\u9879\",\"\\u5728\\u9009\\u5B9A\\u5185\\u5BB9\\u4E2D\\u67E5\\u627E\",\"\\u5173\\u95ED\",\"\\u66FF\\u6362\",\"\\u66FF\\u6362\",\"\\u66FF\\u6362\",\"\\u5168\\u90E8\\u66FF\\u6362\",\"\\u5207\\u6362\\u66FF\\u6362\",\"\\u4EC5\\u9AD8\\u4EAE\\u4E86\\u524D {0} \\u4E2A\\u7ED3\\u679C\\uFF0C\\u4F46\\u6240\\u6709\\u67E5\\u627E\\u64CD\\u4F5C\\u5747\\u9488\\u5BF9\\u5168\\u6587\\u3002\",\"\\u7B2C {0} \\u9879\\uFF0C\\u5171 {1} \\u9879\",\"\\u65E0\\u7ED3\\u679C\",\"\\u627E\\u5230 {0}\",\"\\u4E3A\\u201C{1}\\u201D\\u627E\\u5230 {0}\",\"\\u5728 {2} \\u5904\\u627E\\u5230\\u201C{1}\\u201D\\u7684 {0}\",\"\\u4E3A\\u201C{1}\\u201D\\u627E\\u5230 {0}\",\"Ctrl+Enter \\u73B0\\u5728\\u7531\\u5168\\u90E8\\u66FF\\u6362\\u6539\\u4E3A\\u63D2\\u5165\\u6362\\u884C\\u3002\\u4F60\\u53EF\\u4EE5\\u4FEE\\u6539editor.action.replaceAll \\u7684\\u6309\\u952E\\u7ED1\\u5B9A\\u4EE5\\u8986\\u76D6\\u6B64\\u884C\\u4E3A\\u3002\"],\"vs/editor/contrib/folding/browser/folding\":[\"\\u5C55\\u5F00\",\"\\u4EE5\\u9012\\u5F52\\u65B9\\u5F0F\\u5C55\\u5F00\",\"\\u6298\\u53E0\",\"\\u5207\\u6362\\u6298\\u53E0\",\"\\u4EE5\\u9012\\u5F52\\u65B9\\u5F0F\\u6298\\u53E0\",\"\\u6298\\u53E0\\u6240\\u6709\\u5757\\u6CE8\\u91CA\",\"\\u6298\\u53E0\\u6240\\u6709\\u533A\\u57DF\",\"\\u5C55\\u5F00\\u6240\\u6709\\u533A\\u57DF\",\"\\u6298\\u53E0\\u9664\\u6240\\u9009\\u533A\\u57DF\\u4E4B\\u5916\\u7684\\u6240\\u6709\\u533A\\u57DF\",\"\\u5C55\\u5F00\\u9664\\u6240\\u9009\\u533A\\u57DF\\u4E4B\\u5916\\u7684\\u6240\\u6709\\u533A\\u57DF\",\"\\u5168\\u90E8\\u6298\\u53E0\",\"\\u5168\\u90E8\\u5C55\\u5F00\",\"\\u8DF3\\u8F6C\\u5230\\u7236\\u7EA7\\u6298\\u53E0\",\"\\u8F6C\\u5230\\u4E0A\\u4E00\\u4E2A\\u6298\\u53E0\\u8303\\u56F4\",\"\\u8F6C\\u5230\\u4E0B\\u4E00\\u4E2A\\u6298\\u53E0\\u8303\\u56F4\",\"\\u6839\\u636E\\u6240\\u9009\\u5185\\u5BB9\\u521B\\u5EFA\\u6298\\u53E0\\u8303\\u56F4\",\"\\u5220\\u9664\\u624B\\u52A8\\u6298\\u53E0\\u8303\\u56F4\",\"\\u6298\\u53E0\\u7EA7\\u522B {0}\"],\"vs/editor/contrib/folding/browser/foldingDecorations\":[\"\\u6298\\u53E0\\u8303\\u56F4\\u540E\\u9762\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u8BBE\\u4E3A\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u5E95\\u5C42\\u88C5\\u9970\\u3002\",\"\\u7F16\\u8F91\\u5668\\u88C5\\u8BA2\\u7EBF\\u4E2D\\u6298\\u53E0\\u63A7\\u4EF6\\u7684\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5B57\\u5F62\\u8FB9\\u8DDD\\u4E2D\\u5DF2\\u5C55\\u5F00\\u7684\\u8303\\u56F4\\u7684\\u56FE\\u6807\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5B57\\u5F62\\u8FB9\\u8DDD\\u4E2D\\u5DF2\\u6298\\u53E0\\u7684\\u8303\\u56F4\\u7684\\u56FE\\u6807\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5B57\\u5F62\\u8FB9\\u8DDD\\u4E2D\\u624B\\u52A8\\u6298\\u53E0\\u7684\\u8303\\u56F4\\u7684\\u56FE\\u6807\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5B57\\u5F62\\u8FB9\\u8DDD\\u4E2D\\u624B\\u52A8\\u5C55\\u5F00\\u7684\\u8303\\u56F4\\u7684\\u56FE\\u6807\\u3002\"],\"vs/editor/contrib/fontZoom/browser/fontZoom\":[\"\\u653E\\u5927\\u7F16\\u8F91\\u5668\\u5B57\\u4F53\",\"\\u7F29\\u5C0F\\u7F16\\u8F91\\u5668\\u5B57\\u4F53\",\"\\u91CD\\u7F6E\\u7F16\\u8F91\\u5668\\u5B57\\u4F53\\u5927\\u5C0F\"],\"vs/editor/contrib/format/browser/format\":[\"\\u5728\\u7B2C {0} \\u884C\\u8FDB\\u884C\\u4E86 1 \\u6B21\\u683C\\u5F0F\\u7F16\\u8F91\",\"\\u5728\\u7B2C {1} \\u884C\\u8FDB\\u884C\\u4E86 {0} \\u6B21\\u683C\\u5F0F\\u7F16\\u8F91\",\"\\u7B2C {0} \\u884C\\u5230\\u7B2C {1} \\u884C\\u95F4\\u8FDB\\u884C\\u4E86 1 \\u6B21\\u683C\\u5F0F\\u7F16\\u8F91\",\"\\u7B2C {1} \\u884C\\u5230\\u7B2C {2} \\u884C\\u95F4\\u8FDB\\u884C\\u4E86 {0} \\u6B21\\u683C\\u5F0F\\u7F16\\u8F91\"],\"vs/editor/contrib/format/browser/formatActions\":[\"\\u683C\\u5F0F\\u5316\\u6587\\u6863\",\"\\u683C\\u5F0F\\u5316\\u9009\\u5B9A\\u5185\\u5BB9\"],\"vs/editor/contrib/gotoError/browser/gotoError\":[\"\\u8F6C\\u5230\\u4E0B\\u4E00\\u4E2A\\u95EE\\u9898 (\\u9519\\u8BEF\\u3001\\u8B66\\u544A\\u3001\\u4FE1\\u606F)\",\"\\u201C\\u8F6C\\u5230\\u4E0B\\u4E00\\u4E2A\\u201D\\u6807\\u8BB0\\u7684\\u56FE\\u6807\\u3002\",\"\\u8F6C\\u5230\\u4E0A\\u4E00\\u4E2A\\u95EE\\u9898 (\\u9519\\u8BEF\\u3001\\u8B66\\u544A\\u3001\\u4FE1\\u606F)\",\"\\u201C\\u8F6C\\u5230\\u4E0A\\u4E00\\u4E2A\\u201D\\u6807\\u8BB0\\u7684\\u56FE\\u6807\\u3002\",\"\\u8F6C\\u5230\\u6587\\u4EF6\\u4E2D\\u7684\\u4E0B\\u4E00\\u4E2A\\u95EE\\u9898 (\\u9519\\u8BEF\\u3001\\u8B66\\u544A\\u3001\\u4FE1\\u606F)\",\"\\u4E0B\\u4E00\\u4E2A\\u95EE\\u9898(&&P)\",\"\\u8F6C\\u5230\\u6587\\u4EF6\\u4E2D\\u7684\\u4E0A\\u4E00\\u4E2A\\u95EE\\u9898 (\\u9519\\u8BEF\\u3001\\u8B66\\u544A\\u3001\\u4FE1\\u606F)\",\"\\u4E0A\\u4E00\\u4E2A\\u95EE\\u9898(&&P)\"],\"vs/editor/contrib/gotoError/browser/gotoErrorWidget\":[\"\\u9519\\u8BEF\",\"\\u8B66\\u544A\",\"\\u4FE1\\u606F\",\"\\u63D0\\u793A\",\"{1} \\u4E2D\\u7684 {0}\",\"{0} \\u4E2A\\u95EE\\u9898(\\u5171 {1} \\u4E2A)\",\"{0} \\u4E2A\\u95EE\\u9898(\\u5171 {1} \\u4E2A)\",\"\\u7F16\\u8F91\\u5668\\u6807\\u8BB0\\u5BFC\\u822A\\u5C0F\\u7EC4\\u4EF6\\u9519\\u8BEF\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6807\\u8BB0\\u5BFC\\u822A\\u5C0F\\u7EC4\\u4EF6\\u9519\\u8BEF\\u6807\\u9898\\u80CC\\u666F\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6807\\u8BB0\\u5BFC\\u822A\\u5C0F\\u7EC4\\u4EF6\\u8B66\\u544A\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6807\\u8BB0\\u5BFC\\u822A\\u5C0F\\u7EC4\\u4EF6\\u8B66\\u544A\\u6807\\u9898\\u80CC\\u666F\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6807\\u8BB0\\u5BFC\\u822A\\u5C0F\\u7EC4\\u4EF6\\u4FE1\\u606F\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6807\\u8BB0\\u5BFC\\u822A\\u5C0F\\u7EC4\\u4EF6\\u4FE1\\u606F\\u6807\\u9898\\u80CC\\u666F\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6807\\u8BB0\\u5BFC\\u822A\\u5C0F\\u7EC4\\u4EF6\\u80CC\\u666F\\u8272\\u3002\"],\"vs/editor/contrib/gotoSymbol/browser/goToCommands\":[\"\\u5FEB\\u901F\\u67E5\\u770B\",\"\\u5B9A\\u4E49\",\"\\u672A\\u627E\\u5230\\u201C{0}\\u201D\\u7684\\u4EFB\\u4F55\\u5B9A\\u4E49\",\"\\u627E\\u4E0D\\u5230\\u5B9A\\u4E49\",\"\\u8F6C\\u5230\\u5B9A\\u4E49\",\"\\u8F6C\\u5230\\u5B9A\\u4E49(&&D)\",\"\\u6253\\u5F00\\u4FA7\\u8FB9\\u7684\\u5B9A\\u4E49\",\"\\u901F\\u89C8\\u5B9A\\u4E49\",\"\\u58F0\\u660E\",\"\\u672A\\u627E\\u5230\\u201C{0}\\u201D\\u7684\\u58F0\\u660E\",\"\\u672A\\u627E\\u5230\\u58F0\\u660E\",\"\\u8F6C\\u5230\\u58F0\\u660E\",\"\\u8F6C\\u5230\\u58F0\\u660E(&&D)\",\"\\u672A\\u627E\\u5230\\u201C{0}\\u201D\\u7684\\u58F0\\u660E\",\"\\u672A\\u627E\\u5230\\u58F0\\u660E\",\"\\u67E5\\u770B\\u58F0\\u660E\",\"\\u7C7B\\u578B\\u5B9A\\u4E49\",\"\\u672A\\u627E\\u5230\\u201C{0}\\u201D\\u7684\\u7C7B\\u578B\\u5B9A\\u4E49\",\"\\u672A\\u627E\\u5230\\u7C7B\\u578B\\u5B9A\\u4E49\",\"\\u8F6C\\u5230\\u7C7B\\u578B\\u5B9A\\u4E49\",\"\\u8F6C\\u5230\\u7C7B\\u578B\\u5B9A\\u4E49(&&T)\",\"\\u5FEB\\u901F\\u67E5\\u770B\\u7C7B\\u578B\\u5B9A\\u4E49\",\"\\u5B9E\\u73B0\",\"\\u672A\\u627E\\u5230\\u201C{0}\\u201D\\u7684\\u5B9E\\u73B0\",\"\\u672A\\u627E\\u5230\\u5B9E\\u73B0\",\"\\u8F6C\\u5230\\u5B9E\\u73B0\",\"\\u8F6C\\u5230\\u5B9E\\u73B0(&&I)\",\"\\u67E5\\u770B\\u5B9E\\u73B0\",'\\u672A\\u627E\\u5230\"{0}\"\\u7684\\u5F15\\u7528',\"\\u672A\\u627E\\u5230\\u5F15\\u7528\",\"\\u8F6C\\u5230\\u5F15\\u7528\",\"\\u8F6C\\u5230\\u5F15\\u7528(&&R)\",\"\\u5F15\\u7528\",\"\\u67E5\\u770B\\u5F15\\u7528\",\"\\u5F15\\u7528\",\"\\u8F6C\\u5230\\u4EFB\\u4F55\\u7B26\\u53F7\",\"\\u4F4D\\u7F6E\",\"\\u65E0\\u201C{0}\\u201D\\u7684\\u7ED3\\u679C\",\"\\u5F15\\u7528\"],\"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\":[\"\\u5355\\u51FB\\u663E\\u793A {0} \\u4E2A\\u5B9A\\u4E49\\u3002\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesController\":[\"\\u5F15\\u7528\\u901F\\u89C8\\u662F\\u5426\\u53EF\\u89C1\\uFF0C\\u4F8B\\u5982\\u201C\\u901F\\u89C8\\u5F15\\u7528\\u201D\\u6216\\u201C\\u901F\\u89C8\\u5B9A\\u4E49\\u201D\",\"\\u6B63\\u5728\\u52A0\\u8F7D...\",\"{0} ({1})\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\":[\"{0} \\u4E2A\\u5F15\\u7528\",\"{0} \\u4E2A\\u5F15\\u7528\",\"\\u5F15\\u7528\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\":[\"\\u65E0\\u53EF\\u7528\\u9884\\u89C8\",\"\\u65E0\\u7ED3\\u679C\",\"\\u5F15\\u7528\"],\"vs/editor/contrib/gotoSymbol/browser/referencesModel\":[\"\\u5728\\u5217 {2} \\u884C {1} \\u7684 {0} \\u4E2D\",\"\\u5728\\u5217 {3} \\u884C {2} \\u7684 {1} \\u4E2D\\u7684 {0}\",\"{0} \\u4E2D\\u6709 1 \\u4E2A\\u7B26\\u53F7\\uFF0C\\u5B8C\\u6574\\u8DEF\\u5F84: {1}\",\"{1} \\u4E2D\\u6709 {0} \\u4E2A\\u7B26\\u53F7\\uFF0C\\u5B8C\\u6574\\u8DEF\\u5F84: {2}\",\"\\u672A\\u627E\\u5230\\u7ED3\\u679C\",\"\\u5728 {0} \\u4E2D\\u627E\\u5230 1 \\u4E2A\\u7B26\\u53F7\",\"\\u5728 {1} \\u4E2D\\u627E\\u5230 {0} \\u4E2A\\u7B26\\u53F7\",\"\\u5728 {1} \\u4E2A\\u6587\\u4EF6\\u4E2D\\u627E\\u5230 {0} \\u4E2A\\u7B26\\u53F7\"],\"vs/editor/contrib/gotoSymbol/browser/symbolNavigation\":[\"\\u662F\\u5426\\u5B58\\u5728\\u53EA\\u80FD\\u901A\\u8FC7\\u952E\\u76D8\\u5BFC\\u822A\\u7684\\u7B26\\u53F7\\u4F4D\\u7F6E\\u3002\",\"{1} \\u7684\\u7B26\\u53F7 {0}\\uFF0C\\u4E0B\\u4E00\\u4E2A\\u4F7F\\u7528 {2}\",\"{1} \\u7684\\u7B26\\u53F7 {0}\"],\"vs/editor/contrib/hover/browser/hover\":[\"\\u663E\\u793A\\u6216\\u805A\\u7126\\u60AC\\u505C\",\"\\u663E\\u793A\\u5B9A\\u4E49\\u9884\\u89C8\\u60AC\\u505C\",\"\\u5411\\u4E0A\\u6EDA\\u52A8\\u60AC\\u505C\",\"\\u5411\\u4E0B\\u6EDA\\u52A8\\u60AC\\u505C\",\"\\u5411\\u5DE6\\u6EDA\\u52A8\\u60AC\\u505C\",\"\\u5411\\u53F3\\u6EDA\\u52A8\\u60AC\\u505C\",\"\\u5411\\u4E0A\\u7FFB\\u9875\\u60AC\\u505C\",\"\\u5411\\u4E0B\\u7FFB\\u9875\\u60AC\\u505C\",\"\\u8F6C\\u5230\\u9876\\u90E8\\u60AC\\u505C\",\"\\u8F6C\\u5230\\u5E95\\u90E8\\u60AC\\u505C\"],\"vs/editor/contrib/hover/browser/markdownHoverParticipant\":[\"\\u6B63\\u5728\\u52A0\\u8F7D...\",\"\\u7531\\u4E8E\\u6027\\u80FD\\u539F\\u56E0\\uFF0C\\u957F\\u7EBF\\u7684\\u5448\\u73B0\\u5DF2\\u6682\\u505C\\u3002\\u53EF\\u901A\\u8FC7`editor.stopRenderingLineAfter`\\u914D\\u7F6E\\u6B64\\u8BBE\\u7F6E\\u3002\",\"\\u51FA\\u4E8E\\u6027\\u80FD\\u539F\\u56E0\\uFF0C\\u672A\\u5BF9\\u957F\\u884C\\u8FDB\\u884C\\u89E3\\u6790\\u3002\\u89E3\\u6790\\u957F\\u5EA6\\u9608\\u503C\\u53EF\\u901A\\u8FC7\\u201Ceditor.maxTokenizationLineLength\\u201D\\u8FDB\\u884C\\u914D\\u7F6E\\u3002\"],\"vs/editor/contrib/hover/browser/markerHoverParticipant\":[\"\\u67E5\\u770B\\u95EE\\u9898\",\"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u5FEB\\u901F\\u4FEE\\u590D\",\"\\u6B63\\u5728\\u68C0\\u67E5\\u5FEB\\u901F\\u4FEE\\u590D...\",\"\\u6CA1\\u6709\\u53EF\\u7528\\u7684\\u5FEB\\u901F\\u4FEE\\u590D\",\"\\u5FEB\\u901F\\u4FEE\\u590D...\"],\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\":[\"\\u66FF\\u6362\\u4E3A\\u4E0A\\u4E00\\u4E2A\\u503C\",\"\\u66FF\\u6362\\u4E3A\\u4E0B\\u4E00\\u4E2A\\u503C\"],\"vs/editor/contrib/indentation/browser/indentation\":[\"\\u5C06\\u7F29\\u8FDB\\u8F6C\\u6362\\u4E3A\\u7A7A\\u683C\",\"\\u5C06\\u7F29\\u8FDB\\u8F6C\\u6362\\u4E3A\\u5236\\u8868\\u7B26\",\"\\u5DF2\\u914D\\u7F6E\\u5236\\u8868\\u7B26\\u5927\\u5C0F\",\"\\u9ED8\\u8BA4\\u9009\\u9879\\u5361\\u5927\\u5C0F\",\"\\u5F53\\u524D\\u9009\\u9879\\u5361\\u5927\\u5C0F\",\"\\u9009\\u62E9\\u5F53\\u524D\\u6587\\u4EF6\\u7684\\u5236\\u8868\\u7B26\\u5927\\u5C0F\",\"\\u4F7F\\u7528\\u5236\\u8868\\u7B26\\u7F29\\u8FDB\",\"\\u4F7F\\u7528\\u7A7A\\u683C\\u7F29\\u8FDB\",\"\\u66F4\\u6539\\u5236\\u8868\\u7B26\\u663E\\u793A\\u5927\\u5C0F\",\"\\u4ECE\\u5185\\u5BB9\\u4E2D\\u68C0\\u6D4B\\u7F29\\u8FDB\\u65B9\\u5F0F\",\"\\u91CD\\u65B0\\u7F29\\u8FDB\\u884C\",\"\\u91CD\\u65B0\\u7F29\\u8FDB\\u6240\\u9009\\u884C\"],\"vs/editor/contrib/inlayHints/browser/inlayHintsHover\":[\"\\u53CC\\u51FB\\u4EE5\\u63D2\\u5165\",\"cmd + \\u70B9\\u51FB\",\"ctrl + \\u70B9\\u51FB\",\"option + \\u70B9\\u51FB\",\"alt + \\u70B9\\u51FB\",\"\\u8F6C\\u5230\\u5B9A\\u4E49 ({0})\\uFF0C\\u70B9\\u51FB\\u53F3\\u952E\\u4EE5\\u67E5\\u770B\\u8BE6\\u7EC6\\u4FE1\\u606F\",\"\\u8F6C\\u5230\\u5B9A\\u4E49\\uFF08{0}\\uFF09\",\"\\u6267\\u884C\\u547D\\u4EE4\"],\"vs/editor/contrib/inlineCompletions/browser/commands\":[\"\\u663E\\u793A\\u4E0B\\u4E00\\u4E2A\\u5185\\u8054\\u5EFA\\u8BAE\",\"\\u663E\\u793A\\u4E0A\\u4E00\\u4E2A\\u5185\\u8054\\u5EFA\\u8BAE\",\"\\u89E6\\u53D1\\u5185\\u8054\\u5EFA\\u8BAE\",\"\\u63A5\\u53D7\\u5185\\u8054\\u5EFA\\u8BAE\\u7684\\u4E0B\\u4E00\\u4E2A\\u5B57\",\"\\u63A5\\u53D7 Word\",\"\\u63A5\\u53D7\\u5185\\u8054\\u5EFA\\u8BAE\\u7684\\u4E0B\\u4E00\\u884C\",\"\\u63A5\\u53D7\\u884C\",\"\\u63A5\\u53D7\\u5185\\u8054\\u5EFA\\u8BAE\",\"\\u63A5\\u53D7\",\"\\u9690\\u85CF\\u5185\\u8054\\u5EFA\\u8BAE\",\"\\u59CB\\u7EC8\\u663E\\u793A\\u5DE5\\u5177\\u680F\"],\"vs/editor/contrib/inlineCompletions/browser/hoverParticipant\":[\"\\u5EFA\\u8BAE:\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\":[\"\\u5185\\u8054\\u5EFA\\u8BAE\\u662F\\u5426\\u53EF\\u89C1\",\"\\u5185\\u8054\\u5EFA\\u8BAE\\u662F\\u5426\\u4EE5\\u7A7A\\u767D\\u5F00\\u5934\",\"\\u5185\\u8054\\u5EFA\\u8BAE\\u662F\\u5426\\u4EE5\\u5C0F\\u4E8E\\u9009\\u9879\\u5361\\u63D2\\u5165\\u5185\\u5BB9\\u7684\\u7A7A\\u683C\\u5F00\\u5934\",\"\\u662F\\u5426\\u5E94\\u6291\\u5236\\u5F53\\u524D\\u5EFA\\u8BAE\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\":[\"Inspect this in the accessible view ({0})\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\":[\"\\u201C\\u663E\\u793A\\u4E0B\\u4E00\\u4E2A\\u53C2\\u6570\\u201D\\u63D0\\u793A\\u7684\\u56FE\\u6807\\u3002\",\"\\u201C\\u663E\\u793A\\u4E0A\\u4E00\\u4E2A\\u53C2\\u6570\\u201D\\u63D0\\u793A\\u7684\\u56FE\\u6807\\u3002\",\"{0} ({1})\",\"\\u4E0A\\u4E00\\u4E2A\",\"\\u4E0B\\u4E00\\u4E2A\"],\"vs/editor/contrib/lineSelection/browser/lineSelection\":[\"\\u5C55\\u5F00\\u884C\\u9009\\u62E9\"],\"vs/editor/contrib/linesOperations/browser/linesOperations\":[\"\\u5411\\u4E0A\\u590D\\u5236\\u884C\",\"\\u5411\\u4E0A\\u590D\\u5236\\u4E00\\u884C(&&C)\",\"\\u5411\\u4E0B\\u590D\\u5236\\u884C\",\"\\u5411\\u4E0B\\u590D\\u5236\\u4E00\\u884C(&&P)\",\"\\u91CD\\u590D\\u9009\\u62E9\",\"\\u91CD\\u590D\\u9009\\u62E9(&&D)\",\"\\u5411\\u4E0A\\u79FB\\u52A8\\u884C\",\"\\u5411\\u4E0A\\u79FB\\u52A8\\u4E00\\u884C(&&V)\",\"\\u5411\\u4E0B\\u79FB\\u52A8\\u884C\",\"\\u5411\\u4E0B\\u79FB\\u52A8\\u4E00\\u884C(&&L)\",\"\\u6309\\u5347\\u5E8F\\u6392\\u5217\\u884C\",\"\\u6309\\u964D\\u5E8F\\u6392\\u5217\\u884C\",\"\\u5220\\u9664\\u91CD\\u590D\\u884C\",\"\\u88C1\\u526A\\u5C3E\\u968F\\u7A7A\\u683C\",\"\\u5220\\u9664\\u884C\",\"\\u884C\\u7F29\\u8FDB\",\"\\u884C\\u51CF\\u5C11\\u7F29\\u8FDB\",\"\\u5728\\u4E0A\\u9762\\u63D2\\u5165\\u884C\",\"\\u5728\\u4E0B\\u9762\\u63D2\\u5165\\u884C\",\"\\u5220\\u9664\\u5DE6\\u4FA7\\u6240\\u6709\\u5185\\u5BB9\",\"\\u5220\\u9664\\u53F3\\u4FA7\\u6240\\u6709\\u5185\\u5BB9\",\"\\u5408\\u5E76\\u884C\",\"\\u8F6C\\u7F6E\\u5149\\u6807\\u5904\\u7684\\u5B57\\u7B26\",\"\\u8F6C\\u6362\\u4E3A\\u5927\\u5199\",\"\\u8F6C\\u6362\\u4E3A\\u5C0F\\u5199\",\"\\u8F6C\\u6362\\u4E3A\\u8BCD\\u9996\\u5B57\\u6BCD\\u5927\\u5199\",\"\\u8F6C\\u6362\\u4E3A\\u86C7\\u5F62\\u547D\\u540D\\u6CD5\",\"\\u8F6C\\u6362\\u4E3A\\u9A7C\\u5CF0\\u5F0F\\u5927\\u5C0F\\u5199\",\"\\u8F6C\\u6362\\u4E3A Kebab \\u6848\\u4F8B\"],\"vs/editor/contrib/linkedEditing/browser/linkedEditing\":[\"\\u542F\\u52A8\\u94FE\\u63A5\\u7F16\\u8F91\",\"\\u7F16\\u8F91\\u5668\\u6839\\u636E\\u7C7B\\u578B\\u81EA\\u52A8\\u91CD\\u547D\\u540D\\u65F6\\u7684\\u80CC\\u666F\\u8272\\u3002\"],\"vs/editor/contrib/links/browser/links\":[\"\\u6B64\\u94FE\\u63A5\\u683C\\u5F0F\\u4E0D\\u6B63\\u786E\\uFF0C\\u65E0\\u6CD5\\u6253\\u5F00: {0}\",\"\\u6B64\\u94FE\\u63A5\\u76EE\\u6807\\u5DF2\\u4E22\\u5931\\uFF0C\\u65E0\\u6CD5\\u6253\\u5F00\\u3002\",\"\\u6267\\u884C\\u547D\\u4EE4\",\"\\u6253\\u5F00\\u94FE\\u63A5\",\"cmd + \\u5355\\u51FB\",\"ctrl + \\u5355\\u51FB\",\"option + \\u5355\\u51FB\",\"alt + \\u5355\\u51FB\",\"\\u6267\\u884C\\u547D\\u4EE4 {0}\",\"\\u6253\\u5F00\\u94FE\\u63A5\"],\"vs/editor/contrib/message/browser/messageController\":[\"\\u7F16\\u8F91\\u5668\\u5F53\\u524D\\u662F\\u5426\\u6B63\\u5728\\u663E\\u793A\\u5185\\u8054\\u6D88\\u606F\"],\"vs/editor/contrib/multicursor/browser/multicursor\":[\"\\u6DFB\\u52A0\\u7684\\u5149\\u6807: {0}\",\"\\u6DFB\\u52A0\\u7684\\u6E38\\u6807: {0}\",\"\\u5728\\u4E0A\\u9762\\u6DFB\\u52A0\\u5149\\u6807\",\"\\u5728\\u4E0A\\u9762\\u6DFB\\u52A0\\u5149\\u6807(&&A)\",\"\\u5728\\u4E0B\\u9762\\u6DFB\\u52A0\\u5149\\u6807\",\"\\u5728\\u4E0B\\u9762\\u6DFB\\u52A0\\u5149\\u6807(&&D)\",\"\\u5728\\u884C\\u5C3E\\u6DFB\\u52A0\\u5149\\u6807\",\"\\u5728\\u884C\\u5C3E\\u6DFB\\u52A0\\u5149\\u6807(&&U)\",\"\\u5728\\u5E95\\u90E8\\u6DFB\\u52A0\\u5149\\u6807\",\"\\u5728\\u9876\\u90E8\\u6DFB\\u52A0\\u5149\\u6807\",\"\\u5C06\\u4E0B\\u4E00\\u4E2A\\u67E5\\u627E\\u5339\\u914D\\u9879\\u6DFB\\u52A0\\u5230\\u9009\\u62E9\",\"\\u6DFB\\u52A0\\u4E0B\\u4E00\\u4E2A\\u5339\\u914D\\u9879(&&N)\",\"\\u5C06\\u9009\\u62E9\\u5185\\u5BB9\\u6DFB\\u52A0\\u5230\\u4E0A\\u4E00\\u67E5\\u627E\\u5339\\u914D\\u9879\",\"\\u6DFB\\u52A0\\u4E0A\\u4E00\\u4E2A\\u5339\\u914D\\u9879(&&R)\",\"\\u5C06\\u4E0A\\u6B21\\u9009\\u62E9\\u79FB\\u52A8\\u5230\\u4E0B\\u4E00\\u4E2A\\u67E5\\u627E\\u5339\\u914D\\u9879\",\"\\u5C06\\u4E0A\\u4E2A\\u9009\\u62E9\\u5185\\u5BB9\\u79FB\\u52A8\\u5230\\u4E0A\\u4E00\\u67E5\\u627E\\u5339\\u914D\\u9879\",\"\\u9009\\u62E9\\u6240\\u6709\\u627E\\u5230\\u7684\\u67E5\\u627E\\u5339\\u914D\\u9879\",\"\\u9009\\u62E9\\u6240\\u6709\\u5339\\u914D\\u9879(&&O)\",\"\\u66F4\\u6539\\u6240\\u6709\\u5339\\u914D\\u9879\",\"\\u805A\\u7126\\u4E0B\\u4E00\\u4E2A\\u5149\\u6807\",\"\\u805A\\u7126\\u4E0B\\u4E00\\u4E2A\\u5149\\u6807\",\"\\u805A\\u7126\\u4E0A\\u4E00\\u4E2A\\u5149\\u6807\",\"\\u805A\\u7126\\u4E0A\\u4E00\\u4E2A\\u5149\\u6807\"],\"vs/editor/contrib/parameterHints/browser/parameterHints\":[\"\\u89E6\\u53D1\\u53C2\\u6570\\u63D0\\u793A\"],\"vs/editor/contrib/parameterHints/browser/parameterHintsWidget\":[\"\\u201C\\u663E\\u793A\\u4E0B\\u4E00\\u4E2A\\u53C2\\u6570\\u201D\\u63D0\\u793A\\u7684\\u56FE\\u6807\\u3002\",\"\\u201C\\u663E\\u793A\\u4E0A\\u4E00\\u4E2A\\u53C2\\u6570\\u201D\\u63D0\\u793A\\u7684\\u56FE\\u6807\\u3002\",\"{0}\\uFF0C\\u63D0\\u793A\",\"\\u53C2\\u6570\\u63D0\\u793A\\u4E2D\\u6D3B\\u52A8\\u9879\\u7684\\u524D\\u666F\\u8272\\u3002\"],\"vs/editor/contrib/peekView/browser/peekView\":[\"\\u901F\\u89C8\\u4E2D\\u662F\\u5426\\u5D4C\\u5165\\u4E86\\u5F53\\u524D\\u4EE3\\u7801\\u7F16\\u8F91\\u5668\",\"\\u5173\\u95ED\",\"\\u901F\\u89C8\\u89C6\\u56FE\\u6807\\u9898\\u533A\\u57DF\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u901F\\u89C8\\u89C6\\u56FE\\u6807\\u9898\\u989C\\u8272\\u3002\",\"\\u901F\\u89C8\\u89C6\\u56FE\\u6807\\u9898\\u4FE1\\u606F\\u989C\\u8272\\u3002\",\"\\u901F\\u89C8\\u89C6\\u56FE\\u8FB9\\u6846\\u548C\\u7BAD\\u5934\\u989C\\u8272\\u3002\",\"\\u901F\\u89C8\\u89C6\\u56FE\\u7ED3\\u679C\\u5217\\u8868\\u80CC\\u666F\\u8272\\u3002\",\"\\u901F\\u89C8\\u89C6\\u56FE\\u7ED3\\u679C\\u5217\\u8868\\u4E2D\\u884C\\u8282\\u70B9\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u901F\\u89C8\\u89C6\\u56FE\\u7ED3\\u679C\\u5217\\u8868\\u4E2D\\u6587\\u4EF6\\u8282\\u70B9\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u901F\\u89C8\\u89C6\\u56FE\\u7ED3\\u679C\\u5217\\u8868\\u4E2D\\u6240\\u9009\\u6761\\u76EE\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u901F\\u89C8\\u89C6\\u56FE\\u7ED3\\u679C\\u5217\\u8868\\u4E2D\\u6240\\u9009\\u6761\\u76EE\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u901F\\u89C8\\u89C6\\u56FE\\u7F16\\u8F91\\u5668\\u80CC\\u666F\\u8272\\u3002\",\"\\u901F\\u89C8\\u89C6\\u56FE\\u7F16\\u8F91\\u5668\\u4E2D\\u88C5\\u8BA2\\u7EBF\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u901F\\u89C8\\u89C6\\u56FE\\u7F16\\u8F91\\u5668\\u4E2D\\u7C98\\u6EDE\\u6EDA\\u52A8\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u5728\\u901F\\u89C8\\u89C6\\u56FE\\u7ED3\\u679C\\u5217\\u8868\\u4E2D\\u5339\\u914D\\u7A81\\u51FA\\u663E\\u793A\\u989C\\u8272\\u3002\",\"\\u5728\\u901F\\u89C8\\u89C6\\u56FE\\u7F16\\u8F91\\u5668\\u4E2D\\u5339\\u914D\\u7A81\\u51FA\\u663E\\u793A\\u989C\\u8272\\u3002\",\"\\u5728\\u901F\\u89C8\\u89C6\\u56FE\\u7F16\\u8F91\\u5668\\u4E2D\\u5339\\u914D\\u9879\\u7684\\u7A81\\u51FA\\u663E\\u793A\\u8FB9\\u6846\\u3002\"],\"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\":[\"\\u5148\\u6253\\u5F00\\u6587\\u672C\\u7F16\\u8F91\\u5668\\u7136\\u540E\\u8DF3\\u8F6C\\u5230\\u884C\\u3002\",\"\\u8F6C\\u5230\\u7B2C {0} \\u884C\\u7B2C {1} \\u4E2A\\u5B57\\u7B26\\u3002\",\"\\u8F6C\\u5230\\u884C {0}\\u3002\",\"\\u5F53\\u524D\\u884C: {0}\\uFF0C\\u5B57\\u7B26: {1}\\u3002\\u952E\\u5165\\u8981\\u5BFC\\u822A\\u5230\\u7684\\u884C\\u53F7(\\u4ECB\\u4E8E 1 \\u81F3 {2} \\u4E4B\\u95F4)\\u3002\",\"\\u5F53\\u524D\\u884C: {0}\\uFF0C\\u5B57\\u7B26: {1}\\u3002 \\u952E\\u5165\\u8981\\u5BFC\\u822A\\u5230\\u7684\\u884C\\u53F7\\u3002\"],\"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\":[\"\\u8981\\u8F6C\\u5230\\u7B26\\u53F7\\uFF0C\\u9996\\u5148\\u6253\\u5F00\\u5177\\u6709\\u7B26\\u53F7\\u4FE1\\u606F\\u7684\\u6587\\u672C\\u7F16\\u8F91\\u5668\\u3002\",\"\\u6D3B\\u52A8\\u6587\\u672C\\u7F16\\u8F91\\u5668\\u4E0D\\u63D0\\u4F9B\\u7B26\\u53F7\\u4FE1\\u606F\\u3002\",\"\\u6CA1\\u6709\\u5339\\u914D\\u7684\\u7F16\\u8F91\\u5668\\u7B26\\u53F7\",\"\\u6CA1\\u6709\\u7F16\\u8F91\\u5668\\u7B26\\u53F7\",\"\\u5728\\u4FA7\\u8FB9\\u6253\\u5F00\",\"\\u5728\\u5E95\\u90E8\\u6253\\u5F00\",\"\\u7B26\\u53F7({0})\",\"\\u5C5E\\u6027({0})\",\"\\u65B9\\u6CD5({0})\",\"\\u51FD\\u6570({0})\",\"\\u6784\\u9020\\u51FD\\u6570 ({0})\",\"\\u53D8\\u91CF({0})\",\"\\u7C7B({0})\",\"\\u7ED3\\u6784({0})\",\"\\u4E8B\\u4EF6({0})\",\"\\u8FD0\\u7B97\\u7B26({0})\",\"\\u63A5\\u53E3({0})\",\"\\u547D\\u540D\\u7A7A\\u95F4({0})\",\"\\u5305({0})\",\"\\u7C7B\\u578B\\u53C2\\u6570({0})\",\"\\u6A21\\u5757({0})\",\"\\u5C5E\\u6027({0})\",\"\\u679A\\u4E3E({0})\",\"\\u679A\\u4E3E\\u6210\\u5458({0})\",\"\\u5B57\\u7B26\\u4E32({0})\",\"\\u6587\\u4EF6({0})\",\"\\u6570\\u7EC4({0})\",\"\\u6570\\u5B57({0})\",\"\\u5E03\\u5C14\\u503C({0})\",\"\\u5BF9\\u8C61({0})\",\"\\u952E({0})\",\"\\u5B57\\u6BB5({0})\",\"\\u5E38\\u91CF({0})\"],\"vs/editor/contrib/readOnlyMessage/browser/contribution\":[\"\\u65E0\\u6CD5\\u5728\\u53EA\\u8BFB\\u8F93\\u5165\\u4E2D\\u7F16\\u8F91\",\"\\u65E0\\u6CD5\\u5728\\u53EA\\u8BFB\\u7F16\\u8F91\\u5668\\u4E2D\\u7F16\\u8F91\"],\"vs/editor/contrib/rename/browser/rename\":[\"\\u65E0\\u7ED3\\u679C\\u3002\",\"\\u89E3\\u6790\\u91CD\\u547D\\u540D\\u4F4D\\u7F6E\\u65F6\\u53D1\\u751F\\u672A\\u77E5\\u9519\\u8BEF\",\"\\u6B63\\u5728\\u5C06\\u201C{0}\\u201D\\u91CD\\u547D\\u540D\\u4E3A\\u201C{1}\\u201D\",\"\\u5C06 {0} \\u91CD\\u547D\\u540D\\u4E3A {1}\",\"\\u6210\\u529F\\u5C06\\u201C{0}\\u201D\\u91CD\\u547D\\u540D\\u4E3A\\u201C{1}\\u201D\\u3002\\u6458\\u8981: {2}\",\"\\u91CD\\u547D\\u540D\\u65E0\\u6CD5\\u5E94\\u7528\\u4FEE\\u6539\",\"\\u91CD\\u547D\\u540D\\u65E0\\u6CD5\\u8BA1\\u7B97\\u4FEE\\u6539\",\"\\u91CD\\u547D\\u540D\\u7B26\\u53F7\",\"\\u542F\\u7528/\\u7981\\u7528\\u91CD\\u547D\\u540D\\u4E4B\\u524D\\u9884\\u89C8\\u66F4\\u6539\\u7684\\u529F\\u80FD\"],\"vs/editor/contrib/rename/browser/renameInputField\":[\"\\u91CD\\u547D\\u540D\\u8F93\\u5165\\u5C0F\\u7EC4\\u4EF6\\u662F\\u5426\\u53EF\\u89C1\",'\\u91CD\\u547D\\u540D\\u8F93\\u5165\\u3002\\u952E\\u5165\\u65B0\\u540D\\u79F0\\u5E76\\u6309 \"Enter\" \\u63D0\\u4EA4\\u3002',\"\\u6309 {0} \\u8FDB\\u884C\\u91CD\\u547D\\u540D\\uFF0C\\u6309 {1} \\u8FDB\\u884C\\u9884\\u89C8\"],\"vs/editor/contrib/smartSelect/browser/smartSelect\":[\"\\u5C55\\u5F00\\u9009\\u62E9\",\"\\u6269\\u5927\\u9009\\u533A(&&E)\",\"\\u6536\\u8D77\\u9009\\u62E9\",\"\\u7F29\\u5C0F\\u9009\\u533A(&&S)\"],\"vs/editor/contrib/snippet/browser/snippetController2\":[\"\\u7F16\\u8F91\\u5668\\u76EE\\u524D\\u662F\\u5426\\u5728\\u4EE3\\u7801\\u7247\\u6BB5\\u6A21\\u5F0F\\u4E0B\",\"\\u5728\\u4EE3\\u7801\\u7247\\u6BB5\\u6A21\\u5F0F\\u4E0B\\u65F6\\u662F\\u5426\\u5B58\\u5728\\u4E0B\\u4E00\\u5236\\u8868\\u4F4D\",\"\\u5728\\u4EE3\\u7801\\u7247\\u6BB5\\u6A21\\u5F0F\\u4E0B\\u65F6\\u662F\\u5426\\u5B58\\u5728\\u4E0A\\u4E00\\u5236\\u8868\\u4F4D\",\"\\u8F6C\\u5230\\u4E0B\\u4E00\\u4E2A\\u5360\\u4F4D\\u7B26...\"],\"vs/editor/contrib/snippet/browser/snippetVariables\":[\"\\u661F\\u671F\\u5929\",\"\\u661F\\u671F\\u4E00\",\"\\u661F\\u671F\\u4E8C\",\"\\u661F\\u671F\\u4E09\",\"\\u661F\\u671F\\u56DB\",\"\\u661F\\u671F\\u4E94\",\"\\u661F\\u671F\\u516D\",\"\\u5468\\u65E5\",\"\\u5468\\u4E00\",\"\\u5468\\u4E8C\",\"\\u5468\\u4E09\",\"\\u5468\\u56DB\",\"\\u5468\\u4E94\",\"\\u5468\\u516D\",\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"5\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\\u6708\",\"\\u5341\\u4E8C\\u6708\",\"1\\u6708\",\"2\\u6708\",\"3\\u6708\",\"4\\u6708\",\"5\\u6708\",\"6\\u6708\",\"7\\u6708\",\"8\\u6708\",\"9\\u6708\",\"10\\u6708\",\"11 \\u6708\",\"12\\u6708\"],\"vs/editor/contrib/stickyScroll/browser/stickyScrollActions\":[\"\\u5207\\u6362\\u7C98\\u6EDE\\u6EDA\\u52A8\",\"\\u5207\\u6362\\u7C98\\u6EDE\\u6EDA\\u52A8(&&T)\",\"\\u7C98\\u6EDE\\u6EDA\\u52A8\",\"\\u7C98\\u6EDE\\u6EDA\\u52A8(&&S)\",\"\\u805A\\u7126\\u7C98\\u6027\\u6EDA\\u52A8\",\"\\u805A\\u7126\\u7C98\\u6027\\u6EDA\\u52A8(&&F)\",\"\\u9009\\u62E9\\u4E0B\\u4E00\\u4E2A\\u7C98\\u6027\\u6EDA\\u52A8\\u884C\",\"\\u9009\\u62E9\\u4E0A\\u4E00\\u4E2A\\u7C98\\u6027\\u6EDA\\u52A8\\u884C\",\"\\u8F6C\\u5230\\u805A\\u7126\\u7684\\u7C98\\u6027\\u6EDA\\u52A8\\u884C\",\"\\u9009\\u62E9\\u7F16\\u8F91\\u5668\"],\"vs/editor/contrib/suggest/browser/suggest\":[\"\\u662F\\u5426\\u4EE5\\u4EFB\\u4F55\\u5EFA\\u8BAE\\u4E3A\\u4E2D\\u5FC3\",\"\\u5EFA\\u8BAE\\u8BE6\\u7EC6\\u4FE1\\u606F\\u662F\\u5426\\u53EF\\u89C1\",\"\\u662F\\u5426\\u5B58\\u5728\\u591A\\u6761\\u5EFA\\u8BAE\\u53EF\\u4F9B\\u9009\\u62E9\",\"\\u63D2\\u5165\\u5F53\\u524D\\u5EFA\\u8BAE\\u662F\\u5426\\u4F1A\\u5BFC\\u81F4\\u66F4\\u6539\\u6216\\u5BFC\\u81F4\\u5DF2\\u952E\\u5165\\u6240\\u6709\\u5185\\u5BB9\",\"\\u6309 Enter \\u65F6\\u662F\\u5426\\u4F1A\\u63D2\\u5165\\u5EFA\\u8BAE\",\"\\u5F53\\u524D\\u5EFA\\u8BAE\\u662F\\u5426\\u5177\\u6709\\u63D2\\u5165\\u548C\\u66FF\\u6362\\u884C\\u4E3A\",\"\\u9ED8\\u8BA4\\u884C\\u4E3A\\u662F\\u5426\\u662F\\u63D2\\u5165\\u6216\\u66FF\\u6362\",\"\\u5F53\\u524D\\u5EFA\\u8BAE\\u662F\\u5426\\u652F\\u6301\\u89E3\\u6790\\u66F4\\u591A\\u8BE6\\u7EC6\\u4FE1\\u606F\"],\"vs/editor/contrib/suggest/browser/suggestController\":[\"\\u9009\\u62E9\\u201C{0}\\u201D\\u540E\\u8FDB\\u884C\\u4E86\\u5176\\u4ED6 {1} \\u6B21\\u7F16\\u8F91\",\"\\u89E6\\u53D1\\u5EFA\\u8BAE\",\"\\u63D2\\u5165\",\"\\u63D2\\u5165\",\"\\u66FF\\u6362\",\"\\u66FF\\u6362\",\"\\u63D2\\u5165\",\"\\u663E\\u793A\\u66F4\\u5C11\",\"\\u663E\\u793A\\u66F4\\u591A\",\"\\u91CD\\u7F6E\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u5927\\u5C0F\"],\"vs/editor/contrib/suggest/browser/suggestWidget\":[\"\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u6240\\u9009\\u6761\\u76EE\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u6240\\u9009\\u6761\\u76EE\\u7684\\u56FE\\u6807\\u524D\\u666F\\u8272\\u3002\",\"\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u6240\\u9009\\u6761\\u76EE\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u5339\\u914D\\u5185\\u5BB9\\u7684\\u9AD8\\u4EAE\\u989C\\u8272\\u3002\",\"\\u5F53\\u67D0\\u9879\\u83B7\\u5F97\\u7126\\u70B9\\u65F6\\uFF0C\\u5728\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u7A81\\u51FA\\u663E\\u793A\\u7684\\u5339\\u914D\\u9879\\u7684\\u989C\\u8272\\u3002\",\"\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u72B6\\u6001\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u6B63\\u5728\\u52A0\\u8F7D...\",\"\\u65E0\\u5EFA\\u8BAE\\u3002\",\"\\u5EFA\\u8BAE\",\"{0} {1}\\uFF0C{2}\",\"{0} {1}\",\"{0}\\uFF0C{1}\",\"{0}\\uFF0C\\u6587\\u6863: {1}\"],\"vs/editor/contrib/suggest/browser/suggestWidgetDetails\":[\"\\u5173\\u95ED\",\"\\u6B63\\u5728\\u52A0\\u8F7D\\u2026\"],\"vs/editor/contrib/suggest/browser/suggestWidgetRenderer\":[\"\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u7684\\u8BE6\\u7EC6\\u4FE1\\u606F\\u7684\\u56FE\\u6807\\u3002\",\"\\u4E86\\u89E3\\u8BE6\\u7EC6\\u4FE1\\u606F\"],\"vs/editor/contrib/suggest/browser/suggestWidgetStatus\":[\"{0} ({1})\"],\"vs/editor/contrib/symbolIcons/browser/symbolIcons\":[\"\\u6570\\u7EC4\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u5C06\\u663E\\u793A\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u3002\",\"\\u5E03\\u5C14\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u7C7B\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u989C\\u8272\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u5E38\\u91CF\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u6784\\u9020\\u51FD\\u6570\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u679A\\u4E3E\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u679A\\u4E3E\\u5668\\u6210\\u5458\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u4E8B\\u4EF6\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u5B57\\u6BB5\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u6587\\u4EF6\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u6587\\u4EF6\\u5939\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u51FD\\u6570\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u63A5\\u53E3\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u5C06\\u663E\\u793A\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u3002\",\"\\u952E\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u5173\\u952E\\u5B57\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u65B9\\u6CD5\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u6A21\\u5757\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u547D\\u540D\\u7A7A\\u95F4\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u8F6E\\u5ED3\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u7A7A\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u6570\\u5B57\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u5BF9\\u8C61\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u8FD0\\u7B97\\u7B26\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u5305\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u5C5E\\u6027\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u3002\",\"\\u53C2\\u8003\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u7247\\u6BB5\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u5B57\\u7B26\\u4E32\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u8F6E\\u5ED3\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u7ED3\\u6784\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u6587\\u672C\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u7C7B\\u578B\\u53C2\\u6570\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u5355\\u4F4D\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\",\"\\u53D8\\u91CF\\u7B26\\u53F7\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u8FD9\\u4E9B\\u7B26\\u53F7\\u51FA\\u73B0\\u5728\\u5927\\u7EB2\\u3001\\u75D5\\u8FF9\\u5BFC\\u822A\\u680F\\u548C\\u5EFA\\u8BAE\\u5C0F\\u90E8\\u4EF6\\u4E2D\\u3002\"],\"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\":[\"\\u5207\\u6362 Tab \\u952E\\u79FB\\u52A8\\u7126\\u70B9\",\"Tab \\u952E\\u5C06\\u79FB\\u52A8\\u5230\\u4E0B\\u4E00\\u53EF\\u805A\\u7126\\u7684\\u5143\\u7D20\",\"Tab \\u952E\\u5C06\\u63D2\\u5165\\u5236\\u8868\\u7B26\"],\"vs/editor/contrib/tokenization/browser/tokenization\":[\"\\u5F00\\u53D1\\u4EBA\\u5458: \\u5F3A\\u5236\\u91CD\\u65B0\\u8FDB\\u884C\\u6807\\u8BB0\"],\"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\":[\"\\u6269\\u5C55\\u7F16\\u8F91\\u5668\\u4E2D\\u968F\\u8B66\\u544A\\u6D88\\u606F\\u4E00\\u540C\\u663E\\u793A\\u7684\\u56FE\\u6807\\u3002\",\"\\u672C\\u6587\\u6863\\u5305\\u542B\\u8BB8\\u591A\\u975E\\u57FA\\u672C ASCII unicode \\u5B57\\u7B26\",\"\\u672C\\u6587\\u6863\\u5305\\u542B\\u8BB8\\u591A\\u4E0D\\u660E\\u786E\\u7684 unicode \\u5B57\\u7B26\",\"\\u672C\\u6587\\u6863\\u5305\\u542B\\u8BB8\\u591A\\u4E0D\\u53EF\\u89C1\\u7684 unicode \\u5B57\\u7B26\",\"\\u5B57\\u7B26 {0} \\u53EF\\u80FD\\u4F1A\\u4E0E ASCII \\u5B57\\u7B26 {1} \\u6DF7\\u6DC6\\uFF0C\\u540E\\u8005\\u5728\\u6E90\\u4EE3\\u7801\\u4E2D\\u66F4\\u4E3A\\u5E38\\u89C1\\u3002\",\"\\u5B57\\u7B26 {0} \\u53EF\\u80FD\\u4F1A\\u4E0E\\u5B57\\u7B26 {1} \\u6DF7\\u6DC6\\uFF0C\\u540E\\u8005\\u5728\\u6E90\\u4EE3\\u7801\\u4E2D\\u66F4\\u4E3A\\u5E38\\u89C1\\u3002\",\"\\u5B57\\u7B26 {0} \\u4E0D\\u53EF\\u89C1\\u3002\",\"\\u5B57\\u7B26 {0} \\u4E0D\\u662F\\u57FA\\u672C ASCII \\u5B57\\u7B26\\u3002\",\"\\u8C03\\u6574\\u8BBE\\u7F6E\",\"\\u7981\\u7528\\u6279\\u6CE8\\u4E2D\\u7684\\u7A81\\u51FA\\u663E\\u793A\",\"\\u7981\\u7528\\u6279\\u6CE8\\u4E2D\\u5B57\\u7B26\\u7684\\u7A81\\u51FA\\u663E\\u793A\",\"\\u7981\\u7528\\u5B57\\u7B26\\u4E32\\u4E2D\\u7684\\u7A81\\u51FA\\u663E\\u793A\",\"\\u7981\\u7528\\u5B57\\u7B26\\u4E32\\u4E2D\\u5B57\\u7B26\\u7684\\u7A81\\u51FA\\u663E\\u793A\",\"\\u7981\\u7528\\u4E0D\\u660E\\u786E\\u7684\\u7A81\\u51FA\\u663E\\u793A\",\"\\u7981\\u6B62\\u7A81\\u51FA\\u663E\\u793A\\u6B67\\u4E49\\u5B57\\u7B26\",\"\\u7981\\u7528\\u4E0D\\u53EF\\u89C1\\u7A81\\u51FA\\u663E\\u793A\",\"\\u7981\\u6B62\\u7A81\\u51FA\\u663E\\u793A\\u4E0D\\u53EF\\u89C1\\u5B57\\u7B26\",\"\\u7981\\u7528\\u975E ASCII \\u7A81\\u51FA\\u663E\\u793A\",\"\\u7981\\u6B62\\u7A81\\u51FA\\u663E\\u793A\\u975E\\u57FA\\u672C ASCII \\u5B57\\u7B26\",\"\\u663E\\u793A\\u6392\\u9664\\u9009\\u9879\",\"\\u4E0D\\u7A81\\u51FA\\u663E\\u793A {0} (\\u4E0D\\u53EF\\u89C1\\u5B57\\u7B26)\",\"\\u5728\\u7A81\\u51FA\\u663E\\u793A\\u5185\\u5BB9\\u4E2D\\u6392\\u9664{0}\",\"\\u5141\\u8BB8\\u8BED\\u8A00\\u201C{0}\\u201D\\u4E2D\\u66F4\\u5E38\\u89C1\\u7684 unicode \\u5B57\\u7B26\\u3002\",\"\\u914D\\u7F6E Unicode \\u7A81\\u51FA\\u663E\\u793A\\u9009\\u9879\"],\"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\":[\"\\u5F02\\u5E38\\u884C\\u7EC8\\u6B62\\u7B26\",\"\\u68C0\\u6D4B\\u5230\\u5F02\\u5E38\\u884C\\u7EC8\\u6B62\\u7B26\",`\\u6587\\u4EF6\\u201C{0}\\u201D\\u5305\\u542B\\u4E00\\u4E2A\\u6216\\u591A\\u4E2A\\u5F02\\u5E38\\u7684\\u884C\\u7EC8\\u6B62\\u7B26\\uFF0C\\u4F8B\\u5982\\u884C\\u5206\\u9694\\u7B26(LS)\\u6216\\u6BB5\\u843D\\u5206\\u9694\\u7B26(PS)\\u3002\\r\n\\r\n\\u5EFA\\u8BAE\\u4ECE\\u6587\\u4EF6\\u4E2D\\u5220\\u9664\\u5B83\\u4EEC\\u3002\\u53EF\\u901A\\u8FC7\\u201Ceditor.unusualLineTerminators\\u201D\\u8FDB\\u884C\\u914D\\u7F6E\\u3002`,\"\\u5220\\u9664\\u5F02\\u5E38\\u884C\\u7EC8\\u6B62\\u7B26(&&R)\",\"\\u5FFD\\u7565\"],\"vs/editor/contrib/wordHighlighter/browser/highlightDecorations\":[\"\\u8BFB\\u53D6\\u8BBF\\u95EE\\u671F\\u95F4\\u7B26\\u53F7\\u7684\\u80CC\\u666F\\u8272\\uFF0C\\u4F8B\\u5982\\u8BFB\\u53D6\\u53D8\\u91CF\\u65F6\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u5199\\u5165\\u8BBF\\u95EE\\u8FC7\\u7A0B\\u4E2D\\u7B26\\u53F7\\u7684\\u80CC\\u666F\\u8272\\uFF0C\\u4F8B\\u5982\\u5199\\u5165\\u53D8\\u91CF\\u65F6\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u7B26\\u53F7\\u5728\\u6587\\u672C\\u4E2D\\u51FA\\u73B0\\u65F6\\u7684\\u80CC\\u666F\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u5C42\\u7684\\u4FEE\\u9970\\u3002\",\"\\u7B26\\u53F7\\u5728\\u8FDB\\u884C\\u8BFB\\u53D6\\u8BBF\\u95EE\\u64CD\\u4F5C\\u65F6\\u7684\\u8FB9\\u6846\\u989C\\u8272\\uFF0C\\u4F8B\\u5982\\u8BFB\\u53D6\\u53D8\\u91CF\\u3002\",\"\\u7B26\\u53F7\\u5728\\u8FDB\\u884C\\u5199\\u5165\\u8BBF\\u95EE\\u64CD\\u4F5C\\u65F6\\u7684\\u8FB9\\u6846\\u989C\\u8272\\uFF0C\\u4F8B\\u5982\\u5199\\u5165\\u53D8\\u91CF\\u3002\",\"\\u7B26\\u53F7\\u5728\\u6587\\u672C\\u4E2D\\u51FA\\u73B0\\u65F6\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u7528\\u4E8E\\u7A81\\u51FA\\u663E\\u793A\\u7B26\\u53F7\\u7684\\u6982\\u8FF0\\u6807\\u5C3A\\u6807\\u8BB0\\u989C\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u7528\\u4E8E\\u7A81\\u51FA\\u663E\\u793A\\u5199\\u6743\\u9650\\u7B26\\u53F7\\u7684\\u6982\\u8FF0\\u6807\\u5C3A\\u6807\\u8BB0\\u989C\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u7B26\\u53F7\\u5728\\u6587\\u672C\\u4E2D\\u51FA\\u73B0\\u65F6\\u7684\\u6982\\u8FF0\\u6807\\u5C3A\\u6807\\u8BB0\\u989C\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u5C42\\u7684\\u4FEE\\u9970\\u3002\"],\"vs/editor/contrib/wordHighlighter/browser/wordHighlighter\":[\"\\u8F6C\\u5230\\u4E0B\\u4E00\\u4E2A\\u7A81\\u51FA\\u663E\\u793A\\u7684\\u7B26\\u53F7\",\"\\u8F6C\\u5230\\u4E0A\\u4E00\\u4E2A\\u7A81\\u51FA\\u663E\\u793A\\u7684\\u7B26\\u53F7\",\"\\u89E6\\u53D1\\u7B26\\u53F7\\u9AD8\\u4EAE\"],\"vs/editor/contrib/wordOperations/browser/wordOperations\":[\"\\u5220\\u9664 Word\"],\"vs/platform/action/common/actionCommonCategories\":[\"\\u67E5\\u770B\",\"\\u5E2E\\u52A9\",\"\\u6D4B\\u8BD5\",\"\\u6587\\u4EF6\",\"\\u9996\\u9009\\u9879\",\"\\u5F00\\u53D1\\u4EBA\\u5458\"],\"vs/platform/actionWidget/browser/actionList\":[\"\\u6309 {0} \\u4EE5\\u5E94\\u7528\\uFF0C\\u6309 {1} \\u4EE5\\u9884\\u89C8\",\"\\u6309 {0} \\u4EE5\\u5E94\\u7528\",\"{0}\\uFF0C\\u7981\\u7528\\u539F\\u56E0: {1}\",\"\\u64CD\\u4F5C\\u5C0F\\u7EC4\\u4EF6\"],\"vs/platform/actionWidget/browser/actionWidget\":[\"Background color for toggled action items in action bar.\",\"\\u64CD\\u4F5C\\u5C0F\\u7EC4\\u4EF6\\u5217\\u8868\\u662F\\u5426\\u53EF\\u89C1\",\"\\u9690\\u85CF\\u64CD\\u4F5C\\u5C0F\\u7EC4\\u4EF6\",\"\\u9009\\u62E9\\u4E0A\\u4E00\\u4E2A\\u64CD\\u4F5C\",\"\\u9009\\u62E9\\u4E0B\\u4E00\\u4E2A\\u64CD\\u4F5C\",\"\\u63A5\\u53D7\\u6240\\u9009\\u64CD\\u4F5C\",\"\\u9884\\u89C8\\u6240\\u9009\\u64CD\\u4F5C\"],\"vs/platform/actions/browser/menuEntryActionViewItem\":[\"{0} ({1})\",\"{0} ({1})\",`{0}\\r\n[{1}] {2}`],\"vs/platform/actions/browser/toolbar\":[\"\\u9690\\u85CF\",\"\\u91CD\\u7F6E\\u83DC\\u5355\"],\"vs/platform/actions/common/menuService\":[\"\\u9690\\u85CF\\u201C{0}\\u201D\"],\"vs/platform/audioCues/browser/audioCueService\":[\"\\u884C\\u4E0A\\u7684\\u9519\\u8BEF\",\"\\u884C\\u4E0A\\u7684\\u8B66\\u544A\",\"\\u884C\\u4E0A\\u7684\\u6298\\u53E0\\u533A\\u57DF\",\"\\u884C\\u4E0A\\u7684\\u65AD\\u70B9\",\"\\u884C\\u4E0A\\u7684\\u5185\\u8054\\u5EFA\\u8BAE\",\"\\u7EC8\\u7AEF\\u5FEB\\u901F\\u4FEE\\u590D\",\"\\u8C03\\u8BD5\\u7A0B\\u5E8F\\u5DF2\\u5728\\u65AD\\u70B9\\u5904\\u505C\\u6B62\",\"\\u884C\\u4E0A\\u65E0\\u5D4C\\u5165\\u63D0\\u793A\",\"\\u4EFB\\u52A1\\u5DF2\\u5B8C\\u6210\",\"\\u4EFB\\u52A1\\u5931\\u8D25\",\"\\u7EC8\\u7AEF\\u547D\\u4EE4\\u5931\\u8D25\",\"\\u7EC8\\u7AEF\\u949F\",\"\\u7B14\\u8BB0\\u672C\\u5355\\u5143\\u683C\\u5DF2\\u5B8C\\u6210\",\"\\u7B14\\u8BB0\\u672C\\u5355\\u5143\\u683C\\u5931\\u8D25\",\"\\u5DF2\\u63D2\\u5165\\u5DEE\\u5F02\\u7EBF\",\"\\u5DF2\\u5220\\u9664\\u5DEE\\u5F02\\u884C\",\"\\u5DEE\\u5F02\\u884C\\u5DF2\\u4FEE\\u6539\",\"\\u5DF2\\u53D1\\u9001\\u804A\\u5929\\u8BF7\\u6C42\",\"\\u5DF2\\u6536\\u5230\\u804A\\u5929\\u54CD\\u5E94\",\"\\u804A\\u5929\\u54CD\\u5E94\\u6302\\u8D77\"],\"vs/platform/configuration/common/configurationRegistry\":[\"\\u9ED8\\u8BA4\\u8BED\\u8A00\\u914D\\u7F6E\\u66FF\\u4EE3\",\"\\u914D\\u7F6E\\u8981\\u4E3A {0} \\u8BED\\u8A00\\u66FF\\u4EE3\\u7684\\u8BBE\\u7F6E\\u3002\",\"\\u9488\\u5BF9\\u67D0\\u79CD\\u8BED\\u8A00\\uFF0C\\u914D\\u7F6E\\u66FF\\u4EE3\\u7F16\\u8F91\\u5668\\u8BBE\\u7F6E\\u3002\",\"\\u6B64\\u8BBE\\u7F6E\\u4E0D\\u652F\\u6301\\u6309\\u8BED\\u8A00\\u914D\\u7F6E\\u3002\",\"\\u9488\\u5BF9\\u67D0\\u79CD\\u8BED\\u8A00\\uFF0C\\u914D\\u7F6E\\u66FF\\u4EE3\\u7F16\\u8F91\\u5668\\u8BBE\\u7F6E\\u3002\",\"\\u6B64\\u8BBE\\u7F6E\\u4E0D\\u652F\\u6301\\u6309\\u8BED\\u8A00\\u914D\\u7F6E\\u3002\",\"\\u65E0\\u6CD5\\u6CE8\\u518C\\u7A7A\\u5C5E\\u6027\",'\\u65E0\\u6CD5\\u6CE8\\u518C\\u201C{0}\\u201D\\u3002\\u5176\\u7B26\\u5408\\u63CF\\u8FF0\\u7279\\u5B9A\\u8BED\\u8A00\\u7F16\\u8F91\\u5668\\u8BBE\\u7F6E\\u7684\\u8868\\u8FBE\\u5F0F \"\\\\\\\\[.*\\\\\\\\]$\"\\u3002\\u8BF7\\u4F7F\\u7528 \"configurationDefaults\"\\u3002',\"\\u65E0\\u6CD5\\u6CE8\\u518C\\u201C{0}\\u201D\\u3002\\u6B64\\u5C5E\\u6027\\u5DF2\\u6CE8\\u518C\\u3002\",'\\u65E0\\u6CD5\\u6CE8\\u518C \"{0}\"\\u3002\\u5173\\u8054\\u7684\\u7B56\\u7565 {1} \\u5DF2\\u5411 {2} \\u6CE8\\u518C\\u3002'],\"vs/platform/contextkey/browser/contextKeyService\":[\"\\u7528\\u4E8E\\u8FD4\\u56DE\\u4E0A\\u4E0B\\u6587\\u952E\\u7684\\u76F8\\u5173\\u4FE1\\u606F\\u7684\\u547D\\u4EE4\"],\"vs/platform/contextkey/common/contextkey\":[\"\\u4E0A\\u4E0B\\u6587\\u952E\\u8868\\u8FBE\\u5F0F\\u4E3A\\u7A7A\",'\\u5FD8\\u8BB0\\u5199\\u5165\\u8868\\u8FBE\\u5F0F\\u4E86\\u5417? \\u8FD8\\u53EF\\u4EE5\\u653E\\u7F6E \"false\" \\u6216 \"true\" \\u4EE5\\u59CB\\u7EC8\\u5206\\u522B\\u8BC4\\u4F30\\u4E3A false \\u6216 true\\u3002','\"not\" \\u540E\\u9762\\u7684 \"in\"\\u3002','\\u53F3\\u62EC\\u53F7 \")\"',\"\\u610F\\u5916\\u7684\\u4EE4\\u724C\",\"\\u5FD8\\u8BB0\\u5728\\u4EE4\\u724C\\u4E4B\\u524D\\u653E\\u7F6E && \\u6216 || \\u4E86\\u5417?\",\"\\u610F\\u5916\\u7684\\u8868\\u8FBE\\u5F0F\\u7ED3\\u5C3E\",\"\\u5FD8\\u8BB0\\u653E\\u7F6E\\u4E0A\\u4E0B\\u6587\\u952E\\u4E86\\u5417?\",`\\u5E94\\u4E3A: {0}\\r\n\\u6536\\u5230\\u7684: \"{1}\"\\u3002`],\"vs/platform/contextkey/common/contextkeys\":[\"\\u64CD\\u4F5C\\u7CFB\\u7EDF\\u662F\\u5426 macOS\",\"\\u64CD\\u4F5C\\u7CFB\\u7EDF\\u662F\\u5426\\u4E3A Linux\",\"\\u64CD\\u4F5C\\u7CFB\\u7EDF\\u662F\\u5426\\u4E3A Windows\",\"\\u5E73\\u53F0\\u662F\\u5426\\u4E3A Web \\u6D4F\\u89C8\\u5668\",\"\\u64CD\\u4F5C\\u7CFB\\u7EDF\\u662F\\u5426\\u662F\\u975E\\u6D4F\\u89C8\\u5668\\u5E73\\u53F0\\u4E0A\\u7684 macOS\",\"\\u64CD\\u4F5C\\u7CFB\\u7EDF\\u662F\\u5426\\u4E3A iOS\",\"\\u5E73\\u53F0\\u662F\\u5426\\u4E3A Web \\u6D4F\\u89C8\\u5668\",\"VS Code \\u7684\\u8D28\\u91CF\\u7C7B\\u578B\",\"\\u952E\\u76D8\\u7126\\u70B9\\u662F\\u5426\\u5728\\u8F93\\u5165\\u6846\\u4E2D\"],\"vs/platform/contextkey/common/scanner\":[\"\\u4F60\\u6307\\u7684\\u662F {0} \\u5417?\",\"\\u4F60\\u6307\\u7684\\u662F {0} \\u8FD8\\u662F {1}?\",\"\\u4F60\\u6307\\u7684\\u662F {0}\\u3001{1} \\u8FD8\\u662F {2}?\",\"\\u5FD8\\u8BB0\\u5DE6\\u5F15\\u53F7\\u6216\\u53F3\\u5F15\\u53F7\\u4E86\\u5417?\",'\\u5FD8\\u8BB0\\u8F6C\\u4E49 \"/\"(\\u659C\\u6760)\\u5B57\\u7B26\\u4E86\\u5417? \\u5728\\u8BE5\\u5B57\\u7B26\\u524D\\u653E\\u7F6E\\u4E24\\u4E2A\\u53CD\\u659C\\u6760\\u4EE5\\u8FDB\\u884C\\u8F6C\\u4E49\\uFF0C\\u4F8B\\u5982 \"\\\\\\\\/\"\\u3002'],\"vs/platform/history/browser/contextScopedHistoryWidget\":[\"\\u5EFA\\u8BAE\\u662F\\u5426\\u53EF\\u89C1\"],\"vs/platform/keybinding/common/abstractKeybindingService\":[\"({0})\\u5DF2\\u6309\\u4E0B\\u3002\\u6B63\\u5728\\u7B49\\u5F85\\u6309\\u4E0B\\u7B2C\\u4E8C\\u4E2A\\u952E...\",\"\\u5DF2\\u6309\\u4E0B({0})\\u3002\\u6B63\\u5728\\u7B49\\u5F85\\u7B2C\\u4E8C\\u4E2A\\u952E...\",\"\\u7EC4\\u5408\\u952E({0}\\uFF0C{1})\\u4E0D\\u662F\\u547D\\u4EE4\\u3002\",\"\\u7EC4\\u5408\\u952E({0}\\uFF0C{1})\\u4E0D\\u662F\\u547D\\u4EE4\\u3002\"],\"vs/platform/list/browser/listService\":[\"\\u5DE5\\u4F5C\\u53F0\",\"\\u6620\\u5C04\\u4E3A `Ctrl` (Windows \\u548C Linux) \\u6216 `Command` (macOS)\\u3002\",\"\\u6620\\u5C04\\u4E3A `Alt` (Windows \\u548C Linux) \\u6216 `Option` (macOS)\\u3002\",\"\\u5728\\u901A\\u8FC7\\u9F20\\u6807\\u591A\\u9009\\u6811\\u548C\\u5217\\u8868\\u6761\\u76EE\\u65F6\\u4F7F\\u7528\\u7684\\u4FEE\\u6539\\u952E (\\u4F8B\\u5982\\u201C\\u8D44\\u6E90\\u7BA1\\u7406\\u5668\\u201D\\u3001\\u201C\\u6253\\u5F00\\u7684\\u7F16\\u8F91\\u5668\\u201D\\u548C\\u201C\\u6E90\\u4EE3\\u7801\\u7BA1\\u7406\\u201D\\u89C6\\u56FE)\\u3002\\u201C\\u5728\\u4FA7\\u8FB9\\u6253\\u5F00\\u201D\\u529F\\u80FD\\u6240\\u9700\\u7684\\u9F20\\u6807\\u52A8\\u4F5C (\\u82E5\\u53EF\\u7528) \\u5C06\\u4F1A\\u76F8\\u5E94\\u8C03\\u6574\\uFF0C\\u4E0D\\u4E0E\\u591A\\u9009\\u4FEE\\u6539\\u952E\\u51B2\\u7A81\\u3002\",\"\\u63A7\\u5236\\u5982\\u4F55\\u4F7F\\u7528\\u9F20\\u6807\\u6253\\u5F00\\u6811\\u548C\\u5217\\u8868\\u4E2D\\u7684\\u9879(\\u82E5\\u652F\\u6301)\\u3002\\u8BF7\\u6CE8\\u610F\\uFF0C\\u5982\\u679C\\u6B64\\u8BBE\\u7F6E\\u4E0D\\u9002\\u7528\\uFF0C\\u67D0\\u4E9B\\u6811\\u548C\\u5217\\u8868\\u53EF\\u80FD\\u4F1A\\u9009\\u62E9\\u5FFD\\u7565\\u5B83\\u3002\",\"\\u63A7\\u5236\\u5DE5\\u4F5C\\u53F0\\u4E0A\\u7684\\u5217\\u8868\\u548C\\u6811\\u662F\\u5426\\u652F\\u6301\\u6C34\\u5E73\\u6EDA\\u52A8\\u3002\\u8B66\\u544A: \\u6253\\u5F00\\u6B64\\u8BBE\\u7F6E\\u4F1A\\u5F71\\u54CD\\u6027\\u80FD\\u3002\",\"\\u63A7\\u5236\\u5728\\u6EDA\\u52A8\\u6761\\u4E2D\\u5355\\u51FB\\u65F6\\u662F\\u5426\\u9010\\u9875\\u5355\\u51FB\\u3002\",\"\\u63A7\\u5236\\u6811\\u7F29\\u8FDB(\\u4EE5\\u50CF\\u7D20\\u4E3A\\u5355\\u4F4D)\\u3002\",\"\\u63A7\\u5236\\u6811\\u662F\\u5426\\u5E94\\u5448\\u73B0\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF\\u3002\",\"\\u63A7\\u5236\\u5217\\u8868\\u548C\\u6811\\u662F\\u5426\\u5177\\u6709\\u5E73\\u6ED1\\u6EDA\\u52A8\\u6548\\u679C\\u3002\",\"\\u5BF9\\u9F20\\u6807\\u6EDA\\u8F6E\\u6EDA\\u52A8\\u4E8B\\u4EF6\\u7684 `deltaX` \\u548C `deltaY` \\u4E58\\u4E0A\\u7684\\u7CFB\\u6570\\u3002\",'\\u6309\\u4E0B\"Alt\"\\u65F6\\u6EDA\\u52A8\\u901F\\u5EA6\\u500D\\u589E\\u3002',\"\\u641C\\u7D22\\u65F6\\u7A81\\u51FA\\u663E\\u793A\\u5143\\u7D20\\u3002\\u8FDB\\u4E00\\u6B65\\u5411\\u4E0A\\u548C\\u5411\\u4E0B\\u5BFC\\u822A\\u5C06\\u4EC5\\u904D\\u5386\\u7A81\\u51FA\\u663E\\u793A\\u7684\\u5143\\u7D20\\u3002\",\"\\u641C\\u7D22\\u65F6\\u7B5B\\u9009\\u5143\\u7D20\\u3002\",\"\\u63A7\\u5236\\u5DE5\\u4F5C\\u53F0\\u4E2D\\u5217\\u8868\\u548C\\u6811\\u7684\\u9ED8\\u8BA4\\u67E5\\u627E\\u6A21\\u5F0F\\u3002\",\"\\u7B80\\u5355\\u952E\\u76D8\\u5BFC\\u822A\\u805A\\u7126\\u4E0E\\u952E\\u76D8\\u8F93\\u5165\\u76F8\\u5339\\u914D\\u7684\\u5143\\u7D20\\u3002\\u4EC5\\u5BF9\\u524D\\u7F00\\u8FDB\\u884C\\u5339\\u914D\\u3002\",\"\\u9AD8\\u4EAE\\u952E\\u76D8\\u5BFC\\u822A\\u4F1A\\u7A81\\u51FA\\u663E\\u793A\\u4E0E\\u952E\\u76D8\\u8F93\\u5165\\u76F8\\u5339\\u914D\\u7684\\u5143\\u7D20\\u3002\\u8FDB\\u4E00\\u6B65\\u5411\\u4E0A\\u548C\\u5411\\u4E0B\\u5BFC\\u822A\\u5C06\\u4EC5\\u904D\\u5386\\u7A81\\u51FA\\u663E\\u793A\\u7684\\u5143\\u7D20\\u3002\",\"\\u7B5B\\u9009\\u5668\\u952E\\u76D8\\u5BFC\\u822A\\u5C06\\u7B5B\\u9009\\u51FA\\u5E76\\u9690\\u85CF\\u4E0E\\u952E\\u76D8\\u8F93\\u5165\\u4E0D\\u5339\\u914D\\u7684\\u6240\\u6709\\u5143\\u7D20\\u3002\",\"\\u63A7\\u5236\\u5DE5\\u4F5C\\u53F0\\u4E2D\\u7684\\u5217\\u8868\\u548C\\u6811\\u7684\\u952E\\u76D8\\u5BFC\\u822A\\u6837\\u5F0F\\u3002\\u5B83\\u53EF\\u4E3A\\u201C\\u7B80\\u5355\\u201D\\u3001\\u201C\\u7A81\\u51FA\\u663E\\u793A\\u201D\\u6216\\u201C\\u7B5B\\u9009\\u201D\\u3002\",'\\u8BF7\\u6539\\u7528 \"workbench.list.defaultFindMode\" \\u548C \"workbench.list.typeNavigationMode\"\\u3002',\"\\u5728\\u641C\\u7D22\\u65F6\\u4F7F\\u7528\\u6A21\\u7CCA\\u5339\\u914D\\u3002\",\"\\u5728\\u641C\\u7D22\\u65F6\\u4F7F\\u7528\\u8FDE\\u7EED\\u5339\\u914D\\u3002\",\"\\u63A7\\u5236\\u5728\\u5DE5\\u4F5C\\u53F0\\u4E2D\\u641C\\u7D22\\u5217\\u8868\\u548C\\u6811\\u65F6\\u4F7F\\u7528\\u7684\\u5339\\u914D\\u7C7B\\u578B\\u3002\",\"\\u63A7\\u5236\\u5728\\u5355\\u51FB\\u6587\\u4EF6\\u5939\\u540D\\u79F0\\u65F6\\u5982\\u4F55\\u6269\\u5C55\\u6811\\u6587\\u4EF6\\u5939\\u3002\\u8BF7\\u6CE8\\u610F\\uFF0C\\u5982\\u679C\\u4E0D\\u9002\\u7528\\uFF0C\\u67D0\\u4E9B\\u6811\\u548C\\u5217\\u8868\\u53EF\\u80FD\\u4F1A\\u9009\\u62E9\\u5FFD\\u7565\\u6B64\\u8BBE\\u7F6E\\u3002\",'\\u63A7\\u5236\\u7C7B\\u578B\\u5BFC\\u822A\\u5728\\u5DE5\\u4F5C\\u53F0\\u7684\\u5217\\u8868\\u548C\\u6811\\u4E2D\\u7684\\u5DE5\\u4F5C\\u65B9\\u5F0F\\u3002\\u5982\\u679C\\u8BBE\\u7F6E\\u4E3A \"trigger\"\\uFF0C\\u5219\\u5728\\u8FD0\\u884C \"list.triggerTypeNavigation\" \\u547D\\u4EE4\\u540E\\uFF0C\\u7C7B\\u578B\\u5BFC\\u822A\\u5C06\\u5F00\\u59CB\\u3002'],\"vs/platform/markers/common/markers\":[\"\\u9519\\u8BEF\",\"\\u8B66\\u544A\",\"\\u4FE1\\u606F\"],\"vs/platform/quickinput/browser/commandsQuickAccess\":[\"\\u6700\\u8FD1\\u4F7F\\u7528\",\"\\u5E38\\u7528\",\"\\u5176\\u4ED6\\u547D\\u4EE4\",\"{0}, {1}\",'\\u547D\\u4EE4 \"{0}\" \\u5BFC\\u81F4\\u9519\\u8BEF'],\"vs/platform/quickinput/browser/helpQuickAccess\":[\"{0}, {1}\"],\"vs/platform/quickinput/browser/quickInput\":[\"\\u4E0A\\u4E00\\u6B65\",'\\u6309 \"Enter\" \\u4EE5\\u786E\\u8BA4\\u6216\\u6309 \"Esc\" \\u4EE5\\u53D6\\u6D88',\"{0}/{1}\",\"\\u5728\\u6B64\\u8F93\\u5165\\u53EF\\u7F29\\u5C0F\\u7ED3\\u679C\\u8303\\u56F4\\u3002\"],\"vs/platform/quickinput/browser/quickInputController\":[\"Toggle all checkboxes\",\"{0} Results\",\"{0} Selected\",\"OK\",\"Custom\",\"Back ({0})\",\"Back\"],\"vs/platform/quickinput/browser/quickInputList\":[\"\\u5FEB\\u901F\\u8F93\\u5165\"],\"vs/platform/quickinput/browser/quickInputUtils\":['\\u5355\\u51FB\\u4EE5\\u6267\\u884C\\u547D\\u4EE4 \"{0}\"'],\"vs/platform/theme/common/colorRegistry\":[\"\\u6574\\u4F53\\u524D\\u666F\\u8272\\u3002\\u6B64\\u989C\\u8272\\u4EC5\\u5728\\u4E0D\\u88AB\\u7EC4\\u4EF6\\u8986\\u76D6\\u65F6\\u9002\\u7528\\u3002\",\"\\u5DF2\\u7981\\u7528\\u5143\\u7D20\\u7684\\u6574\\u4F53\\u524D\\u666F\\u8272\\u3002\\u4EC5\\u5728\\u672A\\u7531\\u7EC4\\u4EF6\\u66FF\\u4EE3\\u65F6\\u624D\\u80FD\\u4F7F\\u7528\\u6B64\\u989C\\u8272\\u3002\",\"\\u9519\\u8BEF\\u4FE1\\u606F\\u7684\\u6574\\u4F53\\u524D\\u666F\\u8272\\u3002\\u6B64\\u989C\\u8272\\u4EC5\\u5728\\u4E0D\\u88AB\\u7EC4\\u4EF6\\u8986\\u76D6\\u65F6\\u9002\\u7528\\u3002\",\"\\u63D0\\u4F9B\\u5176\\u4ED6\\u4FE1\\u606F\\u7684\\u8BF4\\u660E\\u6587\\u672C\\u7684\\u524D\\u666F\\u8272\\uFF0C\\u4F8B\\u5982\\u6807\\u7B7E\\u6587\\u672C\\u3002\",\"\\u5DE5\\u4F5C\\u53F0\\u4E2D\\u56FE\\u6807\\u7684\\u9ED8\\u8BA4\\u989C\\u8272\\u3002\",\"\\u7126\\u70B9\\u5143\\u7D20\\u7684\\u6574\\u4F53\\u8FB9\\u6846\\u989C\\u8272\\u3002\\u6B64\\u989C\\u8272\\u4EC5\\u5728\\u4E0D\\u88AB\\u5176\\u4ED6\\u7EC4\\u4EF6\\u8986\\u76D6\\u65F6\\u9002\\u7528\\u3002\",\"\\u5728\\u5143\\u7D20\\u5468\\u56F4\\u989D\\u5916\\u7684\\u4E00\\u5C42\\u8FB9\\u6846\\uFF0C\\u7528\\u6765\\u63D0\\u9AD8\\u5BF9\\u6BD4\\u5EA6\\u4ECE\\u800C\\u533A\\u522B\\u5176\\u4ED6\\u5143\\u7D20\\u3002\",\"\\u5728\\u6D3B\\u52A8\\u5143\\u7D20\\u5468\\u56F4\\u989D\\u5916\\u7684\\u4E00\\u5C42\\u8FB9\\u6846\\uFF0C\\u7528\\u6765\\u63D0\\u9AD8\\u5BF9\\u6BD4\\u5EA6\\u4ECE\\u800C\\u533A\\u522B\\u5176\\u4ED6\\u5143\\u7D20\\u3002\",\"\\u5DE5\\u4F5C\\u53F0\\u6240\\u9009\\u6587\\u672C\\u7684\\u80CC\\u666F\\u989C\\u8272(\\u4F8B\\u5982\\u8F93\\u5165\\u5B57\\u6BB5\\u6216\\u6587\\u672C\\u533A\\u57DF)\\u3002\\u6CE8\\u610F\\uFF0C\\u672C\\u8BBE\\u7F6E\\u4E0D\\u9002\\u7528\\u4E8E\\u7F16\\u8F91\\u5668\\u3002\",\"\\u6587\\u5B57\\u5206\\u9694\\u7B26\\u7684\\u989C\\u8272\\u3002\",\"\\u6587\\u672C\\u4E2D\\u94FE\\u63A5\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u6587\\u672C\\u4E2D\\u94FE\\u63A5\\u5728\\u70B9\\u51FB\\u6216\\u9F20\\u6807\\u60AC\\u505C\\u65F6\\u7684\\u524D\\u666F\\u8272 \\u3002\",\"\\u9884\\u683C\\u5F0F\\u5316\\u6587\\u672C\\u6BB5\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u6587\\u672C\\u4E2D\\u5757\\u5F15\\u7528\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u6587\\u672C\\u4E2D\\u5757\\u5F15\\u7528\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u6587\\u672C\\u4E2D\\u4EE3\\u7801\\u5757\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5185\\u5C0F\\u7EC4\\u4EF6(\\u5982\\u67E5\\u627E/\\u66FF\\u6362)\\u7684\\u9634\\u5F71\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5185\\u5C0F\\u7EC4\\u4EF6(\\u5982\\u67E5\\u627E/\\u66FF\\u6362)\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u8F93\\u5165\\u6846\\u80CC\\u666F\\u8272\\u3002\",\"\\u8F93\\u5165\\u6846\\u524D\\u666F\\u8272\\u3002\",\"\\u8F93\\u5165\\u6846\\u8FB9\\u6846\\u3002\",\"\\u8F93\\u5165\\u5B57\\u6BB5\\u4E2D\\u5DF2\\u6FC0\\u6D3B\\u9009\\u9879\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u8F93\\u5165\\u5B57\\u6BB5\\u4E2D\\u6FC0\\u6D3B\\u9009\\u9879\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u8F93\\u5165\\u5B57\\u6BB5\\u4E2D\\u9009\\u9879\\u7684\\u80CC\\u666F\\u60AC\\u505C\\u989C\\u8272\\u3002\",\"\\u8F93\\u5165\\u5B57\\u6BB5\\u4E2D\\u5DF2\\u6FC0\\u6D3B\\u7684\\u9009\\u9879\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u8F93\\u5165\\u6846\\u4E2D\\u5360\\u4F4D\\u7B26\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u8F93\\u5165\\u9A8C\\u8BC1\\u7ED3\\u679C\\u4E3A\\u4FE1\\u606F\\u7EA7\\u522B\\u65F6\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u8F93\\u5165\\u9A8C\\u8BC1\\u7ED3\\u679C\\u4E3A\\u4FE1\\u606F\\u7EA7\\u522B\\u65F6\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u4E25\\u91CD\\u6027\\u4E3A\\u4FE1\\u606F\\u65F6\\u8F93\\u5165\\u9A8C\\u8BC1\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u4E25\\u91CD\\u6027\\u4E3A\\u8B66\\u544A\\u65F6\\u8F93\\u5165\\u9A8C\\u8BC1\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u8F93\\u5165\\u9A8C\\u8BC1\\u7ED3\\u679C\\u4E3A\\u8B66\\u544A\\u7EA7\\u522B\\u65F6\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u4E25\\u91CD\\u6027\\u4E3A\\u8B66\\u544A\\u65F6\\u8F93\\u5165\\u9A8C\\u8BC1\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u8F93\\u5165\\u9A8C\\u8BC1\\u7ED3\\u679C\\u4E3A\\u9519\\u8BEF\\u7EA7\\u522B\\u65F6\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u8F93\\u5165\\u9A8C\\u8BC1\\u7ED3\\u679C\\u4E3A\\u9519\\u8BEF\\u7EA7\\u522B\\u65F6\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u4E25\\u91CD\\u6027\\u4E3A\\u9519\\u8BEF\\u65F6\\u8F93\\u5165\\u9A8C\\u8BC1\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u4E0B\\u62C9\\u5217\\u8868\\u80CC\\u666F\\u8272\\u3002\",\"\\u4E0B\\u62C9\\u5217\\u8868\\u80CC\\u666F\\u8272\\u3002\",\"\\u4E0B\\u62C9\\u5217\\u8868\\u524D\\u666F\\u8272\\u3002\",\"\\u4E0B\\u62C9\\u5217\\u8868\\u8FB9\\u6846\\u3002\",\"\\u6309\\u94AE\\u524D\\u666F\\u8272\\u3002\",\"\\u6309\\u94AE\\u5206\\u9694\\u7B26\\u989C\\u8272\\u3002\",\"\\u6309\\u94AE\\u80CC\\u666F\\u8272\\u3002\",\"\\u6309\\u94AE\\u5728\\u60AC\\u505C\\u65F6\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u6309\\u94AE\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u8F85\\u52A9\\u6309\\u94AE\\u524D\\u666F\\u8272\\u3002\",\"\\u8F85\\u52A9\\u6309\\u94AE\\u80CC\\u666F\\u8272\\u3002\",\"\\u60AC\\u505C\\u65F6\\u7684\\u8F85\\u52A9\\u6309\\u94AE\\u80CC\\u666F\\u8272\\u3002\",\"Badge \\u80CC\\u666F\\u8272\\u3002Badge \\u662F\\u5C0F\\u578B\\u7684\\u4FE1\\u606F\\u6807\\u7B7E\\uFF0C\\u5982\\u8868\\u793A\\u641C\\u7D22\\u7ED3\\u679C\\u6570\\u91CF\\u7684\\u6807\\u7B7E\\u3002\",\"Badge \\u524D\\u666F\\u8272\\u3002Badge \\u662F\\u5C0F\\u578B\\u7684\\u4FE1\\u606F\\u6807\\u7B7E\\uFF0C\\u5982\\u8868\\u793A\\u641C\\u7D22\\u7ED3\\u679C\\u6570\\u91CF\\u7684\\u6807\\u7B7E\\u3002\",\"\\u8868\\u793A\\u89C6\\u56FE\\u88AB\\u6EDA\\u52A8\\u7684\\u6EDA\\u52A8\\u6761\\u9634\\u5F71\\u3002\",\"\\u6EDA\\u52A8\\u6761\\u6ED1\\u5757\\u80CC\\u666F\\u8272\",\"\\u6EDA\\u52A8\\u6761\\u6ED1\\u5757\\u5728\\u60AC\\u505C\\u65F6\\u7684\\u80CC\\u666F\\u8272\",\"\\u6EDA\\u52A8\\u6761\\u6ED1\\u5757\\u5728\\u88AB\\u70B9\\u51FB\\u65F6\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u8868\\u793A\\u957F\\u65F6\\u95F4\\u64CD\\u4F5C\\u7684\\u8FDB\\u5EA6\\u6761\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u4E2D\\u9519\\u8BEF\\u6587\\u672C\\u7684\\u80CC\\u666F\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u7F16\\u8F91\\u5668\\u4E2D\\u9519\\u8BEF\\u6CE2\\u6D6A\\u7EBF\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u5982\\u679C\\u8BBE\\u7F6E\\uFF0C\\u7F16\\u8F91\\u5668\\u4E2D\\u9519\\u8BEF\\u7684\\u53CC\\u4E0B\\u5212\\u7EBF\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u4E2D\\u8B66\\u544A\\u6587\\u672C\\u7684\\u80CC\\u666F\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u7F16\\u8F91\\u5668\\u4E2D\\u8B66\\u544A\\u6CE2\\u6D6A\\u7EBF\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u5982\\u679C\\u8BBE\\u7F6E\\uFF0C\\u7F16\\u8F91\\u5668\\u4E2D\\u8B66\\u544A\\u7684\\u53CC\\u4E0B\\u5212\\u7EBF\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u4E2D\\u4FE1\\u606F\\u6587\\u672C\\u7684\\u80CC\\u666F\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u7F16\\u8F91\\u5668\\u4E2D\\u4FE1\\u606F\\u6CE2\\u6D6A\\u7EBF\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u5982\\u679C\\u8BBE\\u7F6E\\uFF0C\\u7F16\\u8F91\\u5668\\u4E2D\\u4FE1\\u606F\\u7684\\u53CC\\u4E0B\\u5212\\u7EBF\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u4E2D\\u63D0\\u793A\\u6CE2\\u6D6A\\u7EBF\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u5982\\u679C\\u8BBE\\u7F6E\\uFF0C\\u7F16\\u8F91\\u5668\\u4E2D\\u63D0\\u793A\\u7684\\u53CC\\u4E0B\\u5212\\u7EBF\\u989C\\u8272\\u3002\",\"\\u6D3B\\u52A8\\u6846\\u683C\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u80CC\\u666F\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u9ED8\\u8BA4\\u524D\\u666F\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u7684\\u7C98\\u6EDE\\u6EDA\\u52A8\\u80CC\\u666F\\u8272\",\"\\u7F16\\u8F91\\u5668\\u60AC\\u505C\\u80CC\\u666F\\u8272\\u4E0A\\u7684\\u7C98\\u6EDE\\u6EDA\\u52A8\",\"\\u7F16\\u8F91\\u5668\\u7EC4\\u4EF6(\\u5982\\u67E5\\u627E/\\u66FF\\u6362)\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5C0F\\u90E8\\u4EF6\\u7684\\u524D\\u666F\\u8272\\uFF0C\\u5982\\u67E5\\u627E/\\u66FF\\u6362\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5C0F\\u90E8\\u4EF6\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\\u6B64\\u989C\\u8272\\u4EC5\\u5728\\u5C0F\\u90E8\\u4EF6\\u6709\\u8FB9\\u6846\\u4E14\\u4E0D\\u88AB\\u5C0F\\u90E8\\u4EF6\\u91CD\\u5199\\u65F6\\u9002\\u7528\\u3002\",\"\\u7F16\\u8F91\\u5668\\u5C0F\\u90E8\\u4EF6\\u5927\\u5C0F\\u8C03\\u6574\\u6761\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\\u6B64\\u989C\\u8272\\u4EC5\\u5728\\u5C0F\\u90E8\\u4EF6\\u6709\\u8C03\\u6574\\u8FB9\\u6846\\u4E14\\u4E0D\\u88AB\\u5C0F\\u90E8\\u4EF6\\u989C\\u8272\\u8986\\u76D6\\u65F6\\u4F7F\\u7528\\u3002\",\"\\u80CC\\u666F\\u989C\\u8272\\u5FEB\\u901F\\u9009\\u53D6\\u5668\\u3002\\u5FEB\\u901F\\u9009\\u53D6\\u5668\\u5C0F\\u90E8\\u4EF6\\u662F\\u9009\\u53D6\\u5668(\\u5982\\u547D\\u4EE4\\u8C03\\u8272\\u677F)\\u7684\\u5BB9\\u5668\\u3002\",\"\\u524D\\u666F\\u989C\\u8272\\u5FEB\\u901F\\u9009\\u53D6\\u5668\\u3002\\u5FEB\\u901F\\u9009\\u53D6\\u5668\\u5C0F\\u90E8\\u4EF6\\u662F\\u547D\\u4EE4\\u8C03\\u8272\\u677F\\u7B49\\u9009\\u53D6\\u5668\\u7684\\u5BB9\\u5668\\u3002\",\"\\u6807\\u9898\\u80CC\\u666F\\u989C\\u8272\\u5FEB\\u901F\\u9009\\u53D6\\u5668\\u3002\\u5FEB\\u901F\\u9009\\u53D6\\u5668\\u5C0F\\u90E8\\u4EF6\\u662F\\u547D\\u4EE4\\u8C03\\u8272\\u677F\\u7B49\\u9009\\u53D6\\u5668\\u7684\\u5BB9\\u5668\\u3002\",\"\\u5FEB\\u901F\\u9009\\u53D6\\u5668\\u5206\\u7EC4\\u6807\\u7B7E\\u7684\\u989C\\u8272\\u3002\",\"\\u5FEB\\u901F\\u9009\\u53D6\\u5668\\u5206\\u7EC4\\u8FB9\\u6846\\u7684\\u989C\\u8272\\u3002\",\"\\u952E\\u7ED1\\u5B9A\\u6807\\u7B7E\\u80CC\\u666F\\u8272\\u3002\\u952E\\u7ED1\\u5B9A\\u6807\\u7B7E\\u7528\\u4E8E\\u8868\\u793A\\u952E\\u76D8\\u5FEB\\u6377\\u65B9\\u5F0F\\u3002\",\"\\u952E\\u7ED1\\u5B9A\\u6807\\u7B7E\\u524D\\u666F\\u8272\\u3002\\u952E\\u7ED1\\u5B9A\\u6807\\u7B7E\\u7528\\u4E8E\\u8868\\u793A\\u952E\\u76D8\\u5FEB\\u6377\\u65B9\\u5F0F\\u3002\",\"\\u952E\\u7ED1\\u5B9A\\u6807\\u7B7E\\u8FB9\\u6846\\u8272\\u3002\\u952E\\u7ED1\\u5B9A\\u6807\\u7B7E\\u7528\\u4E8E\\u8868\\u793A\\u952E\\u76D8\\u5FEB\\u6377\\u65B9\\u5F0F\\u3002\",\"\\u952E\\u7ED1\\u5B9A\\u6807\\u7B7E\\u8FB9\\u6846\\u5E95\\u90E8\\u8272\\u3002\\u952E\\u7ED1\\u5B9A\\u6807\\u7B7E\\u7528\\u4E8E\\u8868\\u793A\\u952E\\u76D8\\u5FEB\\u6377\\u65B9\\u5F0F\\u3002\",\"\\u7F16\\u8F91\\u5668\\u6240\\u9009\\u5185\\u5BB9\\u7684\\u989C\\u8272\\u3002\",\"\\u7528\\u4EE5\\u5F70\\u663E\\u9AD8\\u5BF9\\u6BD4\\u5EA6\\u7684\\u6240\\u9009\\u6587\\u672C\\u7684\\u989C\\u8272\\u3002\",\"\\u975E\\u6D3B\\u52A8\\u7F16\\u8F91\\u5668\\u4E2D\\u6240\\u9009\\u5185\\u5BB9\\u7684\\u989C\\u8272\\uFF0C\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u88C5\\u9970\\u6548\\u679C\\u3002\",\"\\u5177\\u6709\\u4E0E\\u6240\\u9009\\u9879\\u76F8\\u5173\\u5185\\u5BB9\\u7684\\u533A\\u57DF\\u7684\\u989C\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u4E0E\\u6240\\u9009\\u9879\\u5185\\u5BB9\\u76F8\\u540C\\u7684\\u533A\\u57DF\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u5F53\\u524D\\u641C\\u7D22\\u5339\\u914D\\u9879\\u7684\\u989C\\u8272\\u3002\",\"\\u5176\\u4ED6\\u641C\\u7D22\\u5339\\u914D\\u9879\\u7684\\u989C\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u9650\\u5236\\u641C\\u7D22\\u8303\\u56F4\\u7684\\u989C\\u8272\\u3002\\u989C\\u8272\\u4E0D\\u80FD\\u4E0D\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u5E95\\u5C42\\u88C5\\u9970\\u3002\",\"\\u5F53\\u524D\\u641C\\u7D22\\u5339\\u914D\\u9879\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u5176\\u4ED6\\u641C\\u7D22\\u5339\\u914D\\u9879\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u9650\\u5236\\u641C\\u7D22\\u7684\\u8303\\u56F4\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u641C\\u7D22\\u7F16\\u8F91\\u5668\\u67E5\\u8BE2\\u5339\\u914D\\u7684\\u989C\\u8272\\u3002\",\"\\u641C\\u7D22\\u7F16\\u8F91\\u5668\\u67E5\\u8BE2\\u5339\\u914D\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u641C\\u7D22 Viewlet \\u5B8C\\u6210\\u6D88\\u606F\\u4E2D\\u6587\\u672C\\u7684\\u989C\\u8272\\u3002\",\"\\u5728\\u4E0B\\u9762\\u7A81\\u51FA\\u663E\\u793A\\u60AC\\u505C\\u7684\\u5B57\\u8BCD\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u7F16\\u8F91\\u5668\\u60AC\\u505C\\u63D0\\u793A\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u60AC\\u505C\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\",\"\\u5149\\u6807\\u60AC\\u505C\\u65F6\\u7F16\\u8F91\\u5668\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u60AC\\u505C\\u72B6\\u6001\\u680F\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u6D3B\\u52A8\\u94FE\\u63A5\\u989C\\u8272\\u3002\",\"\\u5185\\u8054\\u63D0\\u793A\\u7684\\u524D\\u666F\\u8272\",\"\\u5185\\u8054\\u63D0\\u793A\\u7684\\u80CC\\u666F\\u8272\",\"\\u7C7B\\u578B\\u5185\\u8054\\u63D0\\u793A\\u7684\\u524D\\u666F\\u8272\",\"\\u7C7B\\u578B\\u5185\\u8054\\u63D0\\u793A\\u7684\\u80CC\\u666F\\u8272\",\"\\u53C2\\u6570\\u5185\\u8054\\u63D0\\u793A\\u7684\\u524D\\u666F\\u8272\",\"\\u53C2\\u6570\\u5185\\u8054\\u63D0\\u793A\\u7684\\u80CC\\u666F\\u8272\",\"\\u7528\\u4E8E\\u706F\\u6CE1\\u64CD\\u4F5C\\u56FE\\u6807\\u7684\\u989C\\u8272\\u3002\",\"\\u7528\\u4E8E\\u706F\\u6CE1\\u81EA\\u52A8\\u4FEE\\u590D\\u64CD\\u4F5C\\u56FE\\u6807\\u7684\\u989C\\u8272\\u3002\",\"\\u5DF2\\u63D2\\u5165\\u7684\\u6587\\u672C\\u7684\\u80CC\\u666F\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u5DF2\\u5220\\u9664\\u7684\\u6587\\u672C\\u7684\\u80CC\\u666F\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u5DF2\\u63D2\\u5165\\u7684\\u884C\\u7684\\u80CC\\u666F\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u5DF2\\u5220\\u9664\\u7684\\u884C\\u7684\\u80CC\\u666F\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u63D2\\u5165\\u884C\\u7684\\u8FB9\\u8DDD\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u5220\\u9664\\u884C\\u7684\\u8FB9\\u8DDD\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u63D2\\u5165\\u5185\\u5BB9\\u7684\\u5DEE\\u5F02\\u6982\\u8FF0\\u6807\\u5C3A\\u524D\\u666F\\u3002\",\"\\u5220\\u9664\\u5185\\u5BB9\\u7684\\u5DEE\\u5F02\\u6982\\u8FF0\\u6807\\u5C3A\\u524D\\u666F\\u3002\",\"\\u63D2\\u5165\\u7684\\u6587\\u672C\\u7684\\u8F6E\\u5ED3\\u989C\\u8272\\u3002\",\"\\u88AB\\u5220\\u9664\\u6587\\u672C\\u7684\\u8F6E\\u5ED3\\u989C\\u8272\\u3002\",\"\\u4E24\\u4E2A\\u6587\\u672C\\u7F16\\u8F91\\u5668\\u4E4B\\u95F4\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u7684\\u5BF9\\u89D2\\u7EBF\\u586B\\u5145\\u989C\\u8272\\u3002\\u5BF9\\u89D2\\u7EBF\\u586B\\u5145\\u7528\\u4E8E\\u5E76\\u6392\\u5DEE\\u5F02\\u89C6\\u56FE\\u3002\",\"\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u4E2D\\u672A\\u66F4\\u6539\\u5757\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u4E2D\\u672A\\u66F4\\u6539\\u5757\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u5DEE\\u5F02\\u7F16\\u8F91\\u5668\\u4E2D\\u672A\\u66F4\\u6539\\u4EE3\\u7801\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u7126\\u70B9\\u9879\\u5728\\u5217\\u8868\\u6216\\u6811\\u6D3B\\u52A8\\u65F6\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\\u6D3B\\u52A8\\u7684\\u5217\\u8868\\u6216\\u6811\\u5177\\u6709\\u952E\\u76D8\\u7126\\u70B9\\uFF0C\\u975E\\u6D3B\\u52A8\\u7684\\u6CA1\\u6709\\u3002\",\"\\u7126\\u70B9\\u9879\\u5728\\u5217\\u8868\\u6216\\u6811\\u6D3B\\u52A8\\u65F6\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u6D3B\\u52A8\\u7684\\u5217\\u8868\\u6216\\u6811\\u5177\\u6709\\u952E\\u76D8\\u7126\\u70B9\\uFF0C\\u975E\\u6D3B\\u52A8\\u7684\\u6CA1\\u6709\\u3002\",\"\\u5217\\u8868/\\u6811\\u6D3B\\u52A8\\u65F6\\uFF0C\\u7126\\u70B9\\u9879\\u76EE\\u7684\\u5217\\u8868/\\u6811\\u8FB9\\u6846\\u8272\\u3002\\u6D3B\\u52A8\\u7684\\u5217\\u8868/\\u6811\\u5177\\u6709\\u952E\\u76D8\\u7126\\u70B9\\uFF0C\\u975E\\u6D3B\\u52A8\\u7684\\u6CA1\\u6709\\u3002\",\"\\u5F53\\u5217\\u8868/\\u6811\\u5904\\u4E8E\\u6D3B\\u52A8\\u72B6\\u6001\\u4E14\\u5DF2\\u9009\\u62E9\\u65F6\\uFF0C\\u91CD\\u70B9\\u9879\\u7684\\u5217\\u8868/\\u6811\\u8FB9\\u6846\\u989C\\u8272\\u3002\\u6D3B\\u52A8\\u7684\\u5217\\u8868/\\u6811\\u5177\\u6709\\u952E\\u76D8\\u7126\\u70B9\\uFF0C\\u4F46\\u975E\\u6D3B\\u52A8\\u7684\\u5219\\u6CA1\\u6709\\u3002\",\"\\u5DF2\\u9009\\u9879\\u5728\\u5217\\u8868\\u6216\\u6811\\u6D3B\\u52A8\\u65F6\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\\u6D3B\\u52A8\\u7684\\u5217\\u8868\\u6216\\u6811\\u5177\\u6709\\u952E\\u76D8\\u7126\\u70B9\\uFF0C\\u975E\\u6D3B\\u52A8\\u7684\\u6CA1\\u6709\\u3002\",\"\\u5DF2\\u9009\\u9879\\u5728\\u5217\\u8868\\u6216\\u6811\\u6D3B\\u52A8\\u65F6\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u6D3B\\u52A8\\u7684\\u5217\\u8868\\u6216\\u6811\\u5177\\u6709\\u952E\\u76D8\\u7126\\u70B9\\uFF0C\\u975E\\u6D3B\\u52A8\\u7684\\u6CA1\\u6709\\u3002\",\"\\u5DF2\\u9009\\u9879\\u5728\\u5217\\u8868/\\u6811\\u6D3B\\u52A8\\u65F6\\u7684\\u5217\\u8868/\\u6811\\u56FE\\u6807\\u524D\\u666F\\u989C\\u8272\\u3002\\u6D3B\\u52A8\\u7684\\u5217\\u8868/\\u6811\\u5177\\u6709\\u952E\\u76D8\\u7126\\u70B9\\uFF0C\\u975E\\u6D3B\\u52A8\\u7684\\u5219\\u6CA1\\u6709\\u3002\",\"\\u5DF2\\u9009\\u9879\\u5728\\u5217\\u8868\\u6216\\u6811\\u975E\\u6D3B\\u52A8\\u65F6\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\\u6D3B\\u52A8\\u7684\\u5217\\u8868\\u6216\\u6811\\u5177\\u6709\\u952E\\u76D8\\u7126\\u70B9\\uFF0C\\u975E\\u6D3B\\u52A8\\u7684\\u6CA1\\u6709\\u3002\",\"\\u5DF2\\u9009\\u9879\\u5728\\u5217\\u8868\\u6216\\u6811\\u975E\\u6D3B\\u52A8\\u65F6\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\\u6D3B\\u52A8\\u7684\\u5217\\u8868\\u6216\\u6811\\u5177\\u6709\\u952E\\u76D8\\u7126\\u70B9\\uFF0C\\u975E\\u6D3B\\u52A8\\u7684\\u6CA1\\u6709\\u3002\",\"\\u5DF2\\u9009\\u9879\\u5728\\u5217\\u8868/\\u6811\\u975E\\u6D3B\\u52A8\\u65F6\\u7684\\u56FE\\u6807\\u524D\\u666F\\u989C\\u8272\\u3002\\u6D3B\\u52A8\\u7684\\u5217\\u8868/\\u6811\\u5177\\u6709\\u952E\\u76D8\\u7126\\u70B9\\uFF0C\\u975E\\u6D3B\\u52A8\\u7684\\u5219\\u6CA1\\u6709\\u3002\",\"\\u975E\\u6D3B\\u52A8\\u7684\\u5217\\u8868\\u6216\\u6811\\u63A7\\u4EF6\\u4E2D\\u7126\\u70B9\\u9879\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\\u6D3B\\u52A8\\u7684\\u5217\\u8868\\u6216\\u6811\\u5177\\u6709\\u952E\\u76D8\\u7126\\u70B9\\uFF0C\\u975E\\u6D3B\\u52A8\\u7684\\u6CA1\\u6709\\u3002\",\"\\u5217\\u8868/\\u6570\\u975E\\u6D3B\\u52A8\\u65F6\\uFF0C\\u7126\\u70B9\\u9879\\u76EE\\u7684\\u5217\\u8868/\\u6811\\u8FB9\\u6846\\u8272\\u3002\\u6D3B\\u52A8\\u7684\\u5217\\u8868/\\u6811\\u5177\\u6709\\u952E\\u76D8\\u7126\\u70B9\\uFF0C\\u975E\\u6D3B\\u52A8\\u7684\\u6CA1\\u6709\\u3002\",\"\\u4F7F\\u7528\\u9F20\\u6807\\u79FB\\u52A8\\u9879\\u76EE\\u65F6\\uFF0C\\u5217\\u8868\\u6216\\u6811\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u9F20\\u6807\\u5728\\u9879\\u76EE\\u4E0A\\u60AC\\u505C\\u65F6\\uFF0C\\u5217\\u8868\\u6216\\u6811\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\",\"\\u4F7F\\u7528\\u9F20\\u6807\\u79FB\\u52A8\\u9879\\u76EE\\u65F6\\uFF0C\\u5217\\u8868\\u6216\\u6811\\u8FDB\\u884C\\u62D6\\u653E\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u5728\\u5217\\u8868\\u6216\\u6811\\u4E2D\\u641C\\u7D22\\u65F6\\uFF0C\\u5176\\u4E2D\\u5339\\u914D\\u5185\\u5BB9\\u7684\\u9AD8\\u4EAE\\u989C\\u8272\\u3002\",\"\\u5728\\u5217\\u8868\\u6216\\u6811\\u4E2D\\u641C\\u7D22\\u65F6\\uFF0C\\u5339\\u914D\\u6D3B\\u52A8\\u805A\\u7126\\u9879\\u7684\\u7A81\\u51FA\\u663E\\u793A\\u5185\\u5BB9\\u7684\\u5217\\u8868/\\u6811\\u524D\\u666F\\u8272\\u3002\",\"\\u5217\\u8868\\u6216\\u6811\\u4E2D\\u65E0\\u6548\\u9879\\u7684\\u524D\\u666F\\u8272\\uFF0C\\u4F8B\\u5982\\u8D44\\u6E90\\u7BA1\\u7406\\u5668\\u4E2D\\u6CA1\\u6709\\u89E3\\u6790\\u7684\\u6839\\u76EE\\u5F55\\u3002\",\"\\u5305\\u542B\\u9519\\u8BEF\\u7684\\u5217\\u8868\\u9879\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\",\"\\u5305\\u542B\\u8B66\\u544A\\u7684\\u5217\\u8868\\u9879\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\",\"\\u5217\\u8868\\u548C\\u6811\\u4E2D\\u7C7B\\u578B\\u7B5B\\u9009\\u5668\\u5C0F\\u7EC4\\u4EF6\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u5217\\u8868\\u548C\\u6811\\u4E2D\\u7C7B\\u578B\\u7B5B\\u9009\\u5668\\u5C0F\\u7EC4\\u4EF6\\u7684\\u8F6E\\u5ED3\\u989C\\u8272\\u3002\",\"\\u5F53\\u6CA1\\u6709\\u5339\\u914D\\u9879\\u65F6\\uFF0C\\u5217\\u8868\\u548C\\u6811\\u4E2D\\u7C7B\\u578B\\u7B5B\\u9009\\u5668\\u5C0F\\u7EC4\\u4EF6\\u7684\\u8F6E\\u5ED3\\u989C\\u8272\\u3002\",\"\\u5217\\u8868\\u548C\\u6811\\u4E2D\\u7C7B\\u578B\\u7B5B\\u9009\\u5668\\u5C0F\\u7EC4\\u4EF6\\u7684\\u9634\\u5F71\\u989C\\u8272\\u3002\",\"\\u7B5B\\u9009\\u540E\\u7684\\u5339\\u914D\\u9879\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u7B5B\\u9009\\u540E\\u7684\\u5339\\u914D\\u9879\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF\\u7684\\u6811\\u63CF\\u8FB9\\u989C\\u8272\\u3002\",\"\\u975E\\u6D3B\\u52A8\\u7F29\\u8FDB\\u53C2\\u8003\\u7EBF\\u7684\\u6811\\u63CF\\u8FB9\\u989C\\u8272\\u3002\",\"\\u5217\\u4E4B\\u95F4\\u7684\\u8868\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u5947\\u6570\\u8868\\u884C\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u53D6\\u6D88\\u5F3A\\u8C03\\u7684\\u9879\\u76EE\\u7684\\u5217\\u8868/\\u6811\\u524D\\u666F\\u989C\\u8272\\u3002\",\"\\u590D\\u9009\\u6846\\u5C0F\\u90E8\\u4EF6\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u9009\\u62E9\\u590D\\u9009\\u6846\\u5C0F\\u7EC4\\u4EF6\\u6240\\u5728\\u7684\\u5143\\u7D20\\u65F6\\u8BE5\\u5C0F\\u7EC4\\u4EF6\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u590D\\u9009\\u6846\\u5C0F\\u90E8\\u4EF6\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u590D\\u9009\\u6846\\u5C0F\\u90E8\\u4EF6\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u9009\\u62E9\\u590D\\u9009\\u6846\\u5C0F\\u7EC4\\u4EF6\\u6240\\u5728\\u7684\\u5143\\u7D20\\u65F6\\u8BE5\\u5C0F\\u7EC4\\u4EF6\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u8BF7\\u6539\\u7528 quickInputList.focusBackground\",\"\\u7126\\u70B9\\u9879\\u76EE\\u7684\\u5FEB\\u901F\\u9009\\u62E9\\u5668\\u524D\\u666F\\u8272\\u3002\",\"\\u7126\\u70B9\\u9879\\u76EE\\u7684\\u5FEB\\u901F\\u9009\\u53D6\\u5668\\u56FE\\u6807\\u524D\\u666F\\u8272\\u3002\",\"\\u7126\\u70B9\\u9879\\u76EE\\u7684\\u5FEB\\u901F\\u9009\\u62E9\\u5668\\u80CC\\u666F\\u8272\\u3002\",\"\\u83DC\\u5355\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u83DC\\u5355\\u9879\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\",\"\\u83DC\\u5355\\u9879\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u83DC\\u5355\\u4E2D\\u9009\\u5B9A\\u83DC\\u5355\\u9879\\u7684\\u524D\\u666F\\u8272\\u3002\",\"\\u83DC\\u5355\\u4E2D\\u6240\\u9009\\u83DC\\u5355\\u9879\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u83DC\\u5355\\u4E2D\\u6240\\u9009\\u83DC\\u5355\\u9879\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u83DC\\u5355\\u4E2D\\u5206\\u9694\\u7EBF\\u7684\\u989C\\u8272\\u3002\",\"\\u4F7F\\u7528\\u9F20\\u6807\\u60AC\\u505C\\u5728\\u64CD\\u4F5C\\u4E0A\\u65F6\\u663E\\u793A\\u5DE5\\u5177\\u680F\\u80CC\\u666F\",\"\\u4F7F\\u7528\\u9F20\\u6807\\u60AC\\u505C\\u5728\\u64CD\\u4F5C\\u4E0A\\u65F6\\u663E\\u793A\\u5DE5\\u5177\\u680F\\u8F6E\\u5ED3\",\"\\u5C06\\u9F20\\u6807\\u60AC\\u505C\\u5728\\u64CD\\u4F5C\\u4E0A\\u65F6\\u7684\\u5DE5\\u5177\\u680F\\u80CC\\u666F\",\"\\u4EE3\\u7801\\u7247\\u6BB5 Tab \\u4F4D\\u7684\\u9AD8\\u4EAE\\u80CC\\u666F\\u8272\\u3002\",\"\\u4EE3\\u7801\\u7247\\u6BB5 Tab \\u4F4D\\u7684\\u9AD8\\u4EAE\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u4EE3\\u7801\\u7247\\u6BB5\\u4E2D\\u6700\\u540E\\u7684 Tab \\u4F4D\\u7684\\u9AD8\\u4EAE\\u80CC\\u666F\\u8272\\u3002\",\"\\u4EE3\\u7801\\u7247\\u6BB5\\u4E2D\\u6700\\u540E\\u7684\\u5236\\u8868\\u4F4D\\u7684\\u9AD8\\u4EAE\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u7126\\u70B9\\u5BFC\\u822A\\u8DEF\\u5F84\\u7684\\u989C\\u8272\",\"\\u5BFC\\u822A\\u8DEF\\u5F84\\u9879\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u7126\\u70B9\\u5BFC\\u822A\\u8DEF\\u5F84\\u7684\\u989C\\u8272\",\"\\u5DF2\\u9009\\u5BFC\\u822A\\u8DEF\\u5F84\\u9879\\u7684\\u989C\\u8272\\u3002\",\"\\u5BFC\\u822A\\u8DEF\\u5F84\\u9879\\u9009\\u62E9\\u5668\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u5F53\\u524D\\u6807\\u9898\\u80CC\\u666F\\u7684\\u5185\\u8054\\u5408\\u5E76\\u51B2\\u7A81\\u3002\\u989C\\u8272\\u4E0D\\u80FD\\u4E0D\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u5E95\\u5C42\\u88C5\\u9970\\u3002\",\"\\u5185\\u8054\\u5408\\u5E76\\u51B2\\u7A81\\u4E2D\\u7684\\u5F53\\u524D\\u5185\\u5BB9\\u80CC\\u666F\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u5185\\u8054\\u5408\\u5E76\\u51B2\\u7A81\\u4E2D\\u7684\\u4F20\\u5165\\u6807\\u9898\\u80CC\\u666F\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u5185\\u8054\\u5408\\u5E76\\u51B2\\u7A81\\u4E2D\\u7684\\u4F20\\u5165\\u5185\\u5BB9\\u80CC\\u666F\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u5185\\u8054\\u5408\\u5E76\\u51B2\\u7A81\\u4E2D\\u7684\\u5E38\\u89C1\\u7956\\u5148\\u6807\\u5934\\u80CC\\u666F\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u5185\\u8054\\u5408\\u5E76\\u51B2\\u7A81\\u4E2D\\u7684\\u5E38\\u89C1\\u7956\\u5148\\u5185\\u5BB9\\u80CC\\u666F\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u5185\\u8054\\u5408\\u5E76\\u51B2\\u7A81\\u4E2D\\u6807\\u5934\\u548C\\u5206\\u5272\\u7EBF\\u7684\\u8FB9\\u6846\\u989C\\u8272\\u3002\",\"\\u5185\\u8054\\u5408\\u5E76\\u51B2\\u7A81\\u4E2D\\u5F53\\u524D\\u7248\\u672C\\u533A\\u57DF\\u7684\\u6982\\u89C8\\u6807\\u5C3A\\u524D\\u666F\\u8272\\u3002\",\"\\u5185\\u8054\\u5408\\u5E76\\u51B2\\u7A81\\u4E2D\\u4F20\\u5165\\u7684\\u7248\\u672C\\u533A\\u57DF\\u7684\\u6982\\u89C8\\u6807\\u5C3A\\u524D\\u666F\\u8272\\u3002\",\"\\u5185\\u8054\\u5408\\u5E76\\u51B2\\u7A81\\u4E2D\\u5171\\u540C\\u7956\\u5148\\u533A\\u57DF\\u7684\\u6982\\u89C8\\u6807\\u5C3A\\u524D\\u666F\\u8272\\u3002\",\"\\u7528\\u4E8E\\u67E5\\u627E\\u5339\\u914D\\u9879\\u7684\\u6982\\u8FF0\\u6807\\u5C3A\\u6807\\u8BB0\\u989C\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u7528\\u4E8E\\u7A81\\u51FA\\u663E\\u793A\\u6240\\u9009\\u5185\\u5BB9\\u7684\\u6982\\u8FF0\\u6807\\u5C3A\\u6807\\u8BB0\\u989C\\u8272\\u3002\\u989C\\u8272\\u5FC5\\u987B\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u9690\\u85CF\\u4E0B\\u9762\\u7684\\u4FEE\\u9970\\u6548\\u679C\\u3002\",\"\\u7528\\u4E8E\\u67E5\\u627E\\u5339\\u914D\\u9879\\u7684\\u8FF7\\u4F60\\u5730\\u56FE\\u6807\\u8BB0\\u989C\\u8272\\u3002\",\"\\u7528\\u4E8E\\u91CD\\u590D\\u7F16\\u8F91\\u5668\\u9009\\u62E9\\u7684\\u7F29\\u7565\\u56FE\\u6807\\u8BB0\\u989C\\u8272\\u3002\",\"\\u7F16\\u8F91\\u5668\\u9009\\u533A\\u5728\\u8FF7\\u4F60\\u5730\\u56FE\\u4E2D\\u5BF9\\u5E94\\u7684\\u6807\\u8BB0\\u989C\\u8272\\u3002\",\"\\u7528\\u4E8E\\u9519\\u8BEF\\u7684\\u8FF7\\u4F60\\u5730\\u56FE\\u6807\\u8BB0\\u989C\\u8272\\u3002\",\"\\u7528\\u4E8E\\u8B66\\u544A\\u7684\\u8FF7\\u4F60\\u5730\\u56FE\\u6807\\u8BB0\\u989C\\u8272\\u3002\",\"\\u8FF7\\u4F60\\u5730\\u56FE\\u80CC\\u666F\\u989C\\u8272\\u3002\",'\\u5728\\u7F29\\u7565\\u56FE\\u4E2D\\u5448\\u73B0\\u7684\\u524D\\u666F\\u5143\\u7D20\\u7684\\u4E0D\\u900F\\u660E\\u5EA6\\u3002\\u4F8B\\u5982\\uFF0C\"#000000c0\" \\u5C06\\u5448\\u73B0\\u4E0D\\u900F\\u660E\\u5EA6\\u4E3A 75% \\u7684\\u5143\\u7D20\\u3002',\"\\u8FF7\\u4F60\\u5730\\u56FE\\u6ED1\\u5757\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u60AC\\u505C\\u65F6\\uFF0C\\u8FF7\\u4F60\\u5730\\u56FE\\u6ED1\\u5757\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u5355\\u51FB\\u65F6\\uFF0C\\u8FF7\\u4F60\\u5730\\u56FE\\u6ED1\\u5757\\u7684\\u80CC\\u666F\\u989C\\u8272\\u3002\",\"\\u7528\\u4E8E\\u95EE\\u9898\\u9519\\u8BEF\\u56FE\\u6807\\u7684\\u989C\\u8272\\u3002\",\"\\u7528\\u4E8E\\u95EE\\u9898\\u8B66\\u544A\\u56FE\\u6807\\u7684\\u989C\\u8272\\u3002\",\"\\u7528\\u4E8E\\u95EE\\u9898\\u4FE1\\u606F\\u56FE\\u6807\\u7684\\u989C\\u8272\\u3002\",\"\\u56FE\\u8868\\u4E2D\\u4F7F\\u7528\\u7684\\u524D\\u666F\\u989C\\u8272\\u3002\",\"\\u7528\\u4E8E\\u56FE\\u8868\\u4E2D\\u7684\\u6C34\\u5E73\\u7EBF\\u6761\\u7684\\u989C\\u8272\\u3002\",\"\\u56FE\\u8868\\u53EF\\u89C6\\u5316\\u6548\\u679C\\u4E2D\\u4F7F\\u7528\\u7684\\u7EA2\\u8272\\u3002\",\"\\u56FE\\u8868\\u53EF\\u89C6\\u5316\\u6548\\u679C\\u4E2D\\u4F7F\\u7528\\u7684\\u84DD\\u8272\\u3002\",\"\\u56FE\\u8868\\u53EF\\u89C6\\u5316\\u6548\\u679C\\u4E2D\\u4F7F\\u7528\\u7684\\u9EC4\\u8272\\u3002\",\"\\u56FE\\u8868\\u53EF\\u89C6\\u5316\\u6548\\u679C\\u4E2D\\u4F7F\\u7528\\u7684\\u6A59\\u8272\\u3002\",\"\\u56FE\\u8868\\u53EF\\u89C6\\u5316\\u6548\\u679C\\u4E2D\\u4F7F\\u7528\\u7684\\u7EFF\\u8272\\u3002\",\"\\u56FE\\u8868\\u53EF\\u89C6\\u5316\\u6548\\u679C\\u4E2D\\u4F7F\\u7528\\u7684\\u7D2B\\u8272\\u3002\"],\"vs/platform/theme/common/iconRegistry\":[\"\\u8981\\u4F7F\\u7528\\u7684\\u5B57\\u4F53\\u7684 ID\\u3002\\u5982\\u679C\\u672A\\u8BBE\\u7F6E\\uFF0C\\u5219\\u4F7F\\u7528\\u6700\\u5148\\u5B9A\\u4E49\\u7684\\u5B57\\u4F53\\u3002\",\"\\u4E0E\\u56FE\\u6807\\u5B9A\\u4E49\\u5173\\u8054\\u7684\\u5B57\\u4F53\\u5B57\\u7B26\\u3002\",\"\\u5C0F\\u7EC4\\u4EF6\\u4E2D\\u201C\\u5173\\u95ED\\u201D\\u64CD\\u4F5C\\u7684\\u56FE\\u6807\\u3002\",\"\\u201C\\u8F6C\\u5230\\u4E0A\\u4E00\\u4E2A\\u7F16\\u8F91\\u5668\\u4F4D\\u7F6E\\u201D\\u56FE\\u6807\\u3002\",\"\\u201C\\u8F6C\\u5230\\u4E0B\\u4E00\\u4E2A\\u7F16\\u8F91\\u5668\\u4F4D\\u7F6E\\u201D\\u56FE\\u6807\\u3002\"],\"vs/platform/undoRedo/common/undoRedoService\":[\"\\u4EE5\\u4E0B\\u6587\\u4EF6\\u5DF2\\u5173\\u95ED\\u5E76\\u4E14\\u5DF2\\u5728\\u78C1\\u76D8\\u4E0A\\u4FEE\\u6539: {0}\\u3002\",\"\\u4EE5\\u4E0B\\u6587\\u4EF6\\u5DF2\\u4EE5\\u4E0D\\u517C\\u5BB9\\u7684\\u65B9\\u5F0F\\u4FEE\\u6539: {0}\\u3002\",\"\\u65E0\\u6CD5\\u5728\\u6240\\u6709\\u6587\\u4EF6\\u4E2D\\u64A4\\u6D88\\u201C{0}\\u201D\\u3002{1}\",\"\\u65E0\\u6CD5\\u5728\\u6240\\u6709\\u6587\\u4EF6\\u4E2D\\u64A4\\u6D88\\u201C{0}\\u201D\\u3002{1}\",\"\\u65E0\\u6CD5\\u64A4\\u6D88\\u6240\\u6709\\u6587\\u4EF6\\u7684\\u201C{0}\\u201D\\uFF0C\\u56E0\\u4E3A\\u5DF2\\u66F4\\u6539 {1}\",\"\\u65E0\\u6CD5\\u8DE8\\u6240\\u6709\\u6587\\u4EF6\\u64A4\\u9500\\u201C{0}\\u201D\\uFF0C\\u56E0\\u4E3A {1} \\u4E0A\\u5DF2\\u6709\\u4E00\\u9879\\u64A4\\u6D88\\u6216\\u91CD\\u505A\\u64CD\\u4F5C\\u6B63\\u5728\\u8FD0\\u884C\",\"\\u65E0\\u6CD5\\u8DE8\\u6240\\u6709\\u6587\\u4EF6\\u64A4\\u9500\\u201C{0}\\u201D\\uFF0C\\u56E0\\u4E3A\\u540C\\u65F6\\u53D1\\u751F\\u4E86\\u4E00\\u9879\\u64A4\\u6D88\\u6216\\u91CD\\u505A\\u64CD\\u4F5C\",\"\\u662F\\u5426\\u8981\\u5728\\u6240\\u6709\\u6587\\u4EF6\\u4E2D\\u64A4\\u6D88\\u201C{0}\\u201D?\",\"\\u5728 {0} \\u4E2A\\u6587\\u4EF6\\u4E2D\\u64A4\\u6D88(&&U)\",\"\\u64A4\\u6D88\\u6B64\\u6587\\u4EF6(&&F)\",\"\\u65E0\\u6CD5\\u64A4\\u9500\\u201C{0}\\u201D\\uFF0C\\u56E0\\u4E3A\\u5DF2\\u6709\\u4E00\\u9879\\u64A4\\u6D88\\u6216\\u91CD\\u505A\\u64CD\\u4F5C\\u6B63\\u5728\\u8FD0\\u884C\\u3002\",\"\\u662F\\u5426\\u8981\\u64A4\\u6D88\\u201C{0}\\u201D?\",\"\\u662F(&&Y)\",\"\\u5426\",\"\\u65E0\\u6CD5\\u5728\\u6240\\u6709\\u6587\\u4EF6\\u4E2D\\u91CD\\u505A\\u201C{0}\\u201D\\u3002{1}\",\"\\u65E0\\u6CD5\\u5728\\u6240\\u6709\\u6587\\u4EF6\\u4E2D\\u91CD\\u505A\\u201C{0}\\u201D\\u3002{1}\",\"\\u65E0\\u6CD5\\u5BF9\\u6240\\u6709\\u6587\\u4EF6\\u91CD\\u505A\\u201C{0}\\u201D\\uFF0C\\u56E0\\u4E3A\\u5DF2\\u66F4\\u6539 {1}\",\"\\u65E0\\u6CD5\\u8DE8\\u6240\\u6709\\u6587\\u4EF6\\u91CD\\u505A\\u201C{0}\\u201D\\uFF0C\\u56E0\\u4E3A {1} \\u4E0A\\u5DF2\\u6709\\u4E00\\u9879\\u64A4\\u6D88\\u6216\\u91CD\\u505A\\u64CD\\u4F5C\\u6B63\\u5728\\u8FD0\\u884C\",\"\\u65E0\\u6CD5\\u8DE8\\u6240\\u6709\\u6587\\u4EF6\\u91CD\\u505A\\u201C{0}\\u201D\\uFF0C\\u56E0\\u4E3A\\u540C\\u65F6\\u53D1\\u751F\\u4E86\\u4E00\\u9879\\u64A4\\u6D88\\u6216\\u91CD\\u505A\\u64CD\\u4F5C\",\"\\u65E0\\u6CD5\\u91CD\\u505A\\u201C{0}\\u201D\\uFF0C\\u56E0\\u4E3A\\u5DF2\\u6709\\u4E00\\u9879\\u64A4\\u6D88\\u6216\\u91CD\\u505A\\u64CD\\u4F5C\\u6B63\\u5728\\u8FD0\\u884C\\u3002\"],\"vs/platform/workspace/common/workspace\":[\"Code \\u5DE5\\u4F5C\\u533A\"]});\n\n//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.zh-cn.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/editor/editor.main.nls.zh-tw.js",
    "content": "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/define(\"vs/editor/editor.main.nls.zh-tw\",{\"vs/base/browser/ui/actionbar/actionViewItems\":[\"{0} ({1})\"],\"vs/base/browser/ui/findinput/findInput\":[\"\\u8F38\\u5165\"],\"vs/base/browser/ui/findinput/findInputToggles\":[\"\\u5927\\u5C0F\\u5BEB\\u9808\\u76F8\\u7B26\",\"\\u5168\\u5B57\\u62FC\\u5BEB\\u9808\\u76F8\\u7B26\",\"\\u4F7F\\u7528\\u898F\\u5247\\u904B\\u7B97\\u5F0F\"],\"vs/base/browser/ui/findinput/replaceInput\":[\"\\u8F38\\u5165\",\"\\u4FDD\\u7559\\u6848\\u4F8B\"],\"vs/base/browser/ui/hover/hoverWidget\":[\"Inspect this in the accessible view with {0}.\",\"Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding.\"],\"vs/base/browser/ui/iconLabel/iconLabelHover\":[\"\\u6B63\\u5728\\u8F09\\u5165...\"],\"vs/base/browser/ui/inputbox/inputBox\":[\"\\u932F\\u8AA4: {0}\",\"\\u8B66\\u544A: {0}\",\"\\u8CC7\\u8A0A: {0}\",\"\\u6B77\\u7A0B\\u8A18\\u9304\",\"\\u5DF2\\u6E05\\u9664\\u8F38\\u5165\"],\"vs/base/browser/ui/keybindingLabel/keybindingLabel\":[\"\\u672A\\u7E6B\\u7D50\"],\"vs/base/browser/ui/selectBox/selectBoxCustom\":[\"\\u9078\\u53D6\\u65B9\\u584A\"],\"vs/base/browser/ui/toolbar/toolbar\":[\"\\u66F4\\u591A\\u64CD\\u4F5C\"],\"vs/base/browser/ui/tree/abstractTree\":[\"\\u7BE9\\u9078\",\"\\u6A21\\u7CCA\\u6BD4\\u5C0D\",\"\\u8981\\u7BE9\\u9078\\u7684\\u985E\\u578B\",\"\\u8981\\u641C\\u5C0B\\u7684\\u985E\\u578B\",\"\\u8981\\u641C\\u5C0B\\u7684\\u985E\\u578B\",\"\\u95DC\\u9589\",\"\\u627E\\u4E0D\\u5230\\u4EFB\\u4F55\\u5143\\u7D20\\u3002\"],\"vs/base/common/actions\":[\"(\\u7A7A\\u7684)\"],\"vs/base/common/errorMessage\":[\"{0}: {1}\",\"\\u767C\\u751F\\u7CFB\\u7D71\\u932F\\u8AA4 ({0})\",\"\\u767C\\u751F\\u672A\\u77E5\\u7684\\u932F\\u8AA4\\u3002\\u5982\\u9700\\u8A73\\u7D30\\u8CC7\\u8A0A\\uFF0C\\u8ACB\\u53C3\\u95B1\\u8A18\\u9304\\u6A94\\u3002\",\"\\u767C\\u751F\\u672A\\u77E5\\u7684\\u932F\\u8AA4\\u3002\\u5982\\u9700\\u8A73\\u7D30\\u8CC7\\u8A0A\\uFF0C\\u8ACB\\u53C3\\u95B1\\u8A18\\u9304\\u6A94\\u3002\",\"{0} (\\u7E3D\\u8A08 {1} \\u500B\\u932F\\u8AA4)\",\"\\u767C\\u751F\\u672A\\u77E5\\u7684\\u932F\\u8AA4\\u3002\\u5982\\u9700\\u8A73\\u7D30\\u8CC7\\u8A0A\\uFF0C\\u8ACB\\u53C3\\u95B1\\u8A18\\u9304\\u6A94\\u3002\"],\"vs/base/common/keybindingLabels\":[\"Ctrl\",\"Shift\",\"Alt\",\"Windows\",\"Ctrl\",\"Shift\",\"Alt\",\"\\u8D85\\u7D1A\\u9375\",\"Control\",\"Shift\",\"\\u9078\\u9805\",\"\\u547D\\u4EE4\",\"Control\",\"Shift\",\"Alt\",\"Windows\",\"Control\",\"Shift\",\"Alt\",\"\\u8D85\\u7D1A\\u9375\"],\"vs/base/common/platform\":[\"_\"],\"vs/editor/browser/controller/textAreaHandler\":[\"\\u7DE8\\u8F2F\\u5668\",\"\\u76EE\\u524D\\u7121\\u6CD5\\u5B58\\u53D6\\u6B64\\u7DE8\\u8F2F\\u5668\\u3002\",\"{0} \\u82E5\\u8981\\u555F\\u7528\\u87A2\\u5E55\\u52A9\\u8B80\\u7A0B\\u5F0F\\u6700\\u4F73\\u5316\\u6A21\\u5F0F\\uFF0C\\u8ACB\\u4F7F\\u7528 {1}\",\"{0} \\u82E5\\u8981\\u555F\\u7528\\u87A2\\u5E55\\u52A9\\u8B80\\u7A0B\\u5F0F\\u6700\\u4F73\\u5316\\u6A21\\u5F0F\\uFF0C\\uFF0C\\u8ACB\\u4F7F\\u7528 {1} \\u958B\\u555F\\u5FEB\\u901F\\u6311\\u9078\\uFF0C\\u7136\\u5F8C\\u57F7\\u884C [\\u5207\\u63DB\\u87A2\\u5E55\\u52A9\\u8B80\\u7A0B\\u5F0F\\u5354\\u52A9\\u5DE5\\u5177\\u6A21\\u5F0F] \\u547D\\u4EE4\\uFF0C\\u8A72\\u6A21\\u5F0F\\u76EE\\u524D\\u7121\\u6CD5\\u900F\\u904E\\u9375\\u76E4\\u89F8\\u767C\\u3002\",\"{0} \\u8ACB\\u4F7F\\u7528 {1} \\u5B58\\u53D6\\u6309\\u9375\\u7E6B\\u7D50\\u95DC\\u4FC2\\u7DE8\\u8F2F\\u5668\\u4E26\\u52A0\\u4EE5\\u57F7\\u884C\\uFF0C\\u4EE5\\u70BA [\\u5207\\u63DB\\u87A2\\u5E55\\u52A9\\u8B80\\u7A0B\\u5F0F\\u5354\\u52A9\\u5DE5\\u5177\\u6A21\\u5F0F] \\u547D\\u4EE4\\u6307\\u6D3E\\u6309\\u9375\\u7E6B\\u7D50\\u95DC\\u4FC2\\u3002\"],\"vs/editor/browser/coreCommands\":[\"\\u5373\\u4F7F\\u884C\\u7684\\u9577\\u5EA6\\u904E\\u9577\\uFF0C\\u4ECD\\u8981\\u5805\\u6301\\u81F3\\u7D50\\u5C3E\",\"\\u5373\\u4F7F\\u884C\\u7684\\u9577\\u5EA6\\u904E\\u9577\\uFF0C\\u4ECD\\u8981\\u5805\\u6301\\u81F3\\u7D50\\u5C3E\",\"\\u5DF2\\u79FB\\u9664\\u6B21\\u8981\\u8CC7\\u6599\\u6307\\u6A19\"],\"vs/editor/browser/editorExtensions\":[\"\\u5FA9\\u539F(&&U)\",\"\\u5FA9\\u539F\",\"\\u53D6\\u6D88\\u5FA9\\u539F(&&R)\",\"\\u91CD\\u505A\",\"\\u5168\\u9078(&&S)\",\"\\u5168\\u9078\"],\"vs/editor/browser/widget/codeEditorWidget\":[\"\\u6E38\\u6A19\\u6578\\u76EE\\u5DF2\\u9650\\u5236\\u70BA {0}\\u3002\\u8ACB\\u8003\\u616E\\u4F7F\\u7528 [\\u5C0B\\u627E\\u548C\\u53D6\\u4EE3](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) \\u9032\\u884C\\u8F03\\u5927\\u578B\\u7684\\u8B8A\\u66F4\\uFF0C\\u6216\\u589E\\u52A0\\u7DE8\\u8F2F\\u5668\\u7684\\u591A\\u91CD\\u6E38\\u6A19\\u9650\\u5236\\u8A2D\\u5B9A\\u3002\",\"\\u589E\\u52A0\\u591A\\u91CD\\u6E38\\u6A19\\u9650\\u5236\"],\"vs/editor/browser/widget/diffEditor.contribution\":[\"\\u53EF\\u5B58\\u53D6\\u7684 Diff \\u6AA2\\u8996\\u5668\",\"\\u79FB\\u81F3\\u4E0B\\u4E00\\u500B\\u5DEE\\u7570\",\"\\u958B\\u555F\\u6613\\u5B58\\u53D6\\u5DEE\\u7570\\u6AA2\\u8996\\u5668\",\"\\u79FB\\u81F3\\u4E0A\\u4E00\\u500B\\u5DEE\\u7570\"],\"vs/editor/browser/widget/diffEditorWidget\":[\"Diff \\u7DE8\\u8F2F\\u5668\\u4E2D\\u7528\\u65BC\\u63D2\\u5165\\u7684\\u7DDA\\u689D\\u88DD\\u98FE\\u3002\",\"Diff \\u7DE8\\u8F2F\\u5668\\u4E2D\\u7528\\u65BC\\u79FB\\u9664\\u7684\\u7DDA\\u689D\\u88DD\\u98FE\\u3002\",\" \\u4F7F\\u7528 Shift + F7 \\u700F\\u89BD\\u8B8A\\u66F4\",\"\\u56E0\\u5176\\u4E2D\\u4E00\\u500B\\u6A94\\u6848\\u904E\\u5927\\u800C\\u7121\\u6CD5\\u6BD4\\u8F03\\u3002\",\"\\u6309\\u4E00\\u4E0B\\u4EE5\\u9084\\u539F\\u8B8A\\u66F4\"],\"vs/editor/browser/widget/diffEditorWidget2/accessibleDiffViewer\":[\"\\u6613\\u5B58\\u53D6\\u5DEE\\u7570\\u6AA2\\u8996\\u5668\\u4E2D\\u7684 [\\u63D2\\u5165] \\u5716\\u793A\\u3002\",\"\\u6613\\u5B58\\u53D6\\u5DEE\\u7570\\u6AA2\\u8996\\u5668\\u4E2D\\u7684 [\\u79FB\\u9664] \\u5716\\u793A\\u3002\",\"\\u6613\\u5B58\\u53D6\\u5DEE\\u7570\\u6AA2\\u8996\\u5668\\u4E2D\\u7684 [\\u95DC\\u9589] \\u5716\\u793A\\u3002\",\"\\u95DC\\u9589\",\"\\u53EF\\u5B58\\u53D6\\u7684 Diff \\u6AA2\\u8996\\u5668\\u3002\\u4F7F\\u7528\\u5411\\u4E0A\\u548C\\u5411\\u4E0B\\u7BAD\\u982D\\u4F86\\u700F\\u89BD\\u3002\",\"\\u672A\\u8B8A\\u66F4\\u4EFB\\u4E00\\u884C\",\"\\u5DF2\\u8B8A\\u66F4 1 \\u884C\",\"\\u5DF2\\u8B8A\\u66F4 {0} \\u884C\",\"{1} \\u9805\\u5DEE\\u7570\\u4E2D\\u7684\\u7B2C {0} \\u9805: \\u539F\\u59CB\\u884C {2}\\u3001{3}\\uFF0C\\u4FEE\\u6539\\u884C {4}\\u3001{5}\",\"\\u7A7A\\u767D\",\"{0} \\u672A\\u8B8A\\u66F4\\u884C {1}\",\"{0} \\u539F\\u59CB\\u884C {1} \\u4FEE\\u6539\\u7684\\u884C {2}\",\"+ {0} \\u4FEE\\u6539\\u884C {1}\",\"- {0} \\u539F\\u59CB\\u884C {1}\"],\"vs/editor/browser/widget/diffEditorWidget2/colors\":[\"\\u5728 Diff \\u7DE8\\u8F2F\\u5668\\u4E2D\\u79FB\\u52D5\\u7684\\u6587\\u5B57\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"The active border color for text that got moved in the diff editor.\"],\"vs/editor/browser/widget/diffEditorWidget2/decorations\":[\"Diff \\u7DE8\\u8F2F\\u5668\\u4E2D\\u7528\\u65BC\\u63D2\\u5165\\u7684\\u7DDA\\u689D\\u88DD\\u98FE\\u3002\",\"Diff \\u7DE8\\u8F2F\\u5668\\u4E2D\\u7528\\u65BC\\u79FB\\u9664\\u7684\\u7DDA\\u689D\\u88DD\\u98FE\\u3002\",\"\\u6309\\u4E00\\u4E0B\\u4EE5\\u9084\\u539F\\u8B8A\\u66F4\"],\"vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors\":[\" \\u4F7F\\u7528 {0} \\u4EE5\\u958B\\u555F\\u5354\\u52A9\\u5DE5\\u5177\\u8AAA\\u660E\\u3002\"],\"vs/editor/browser/widget/diffEditorWidget2/inlineDiffDeletedCodeMargin\":[\"\\u8907\\u88FD\\u522A\\u9664\\u7684\\u884C\",\"\\u8907\\u88FD\\u522A\\u9664\\u7684\\u884C\",\"\\u8907\\u88FD\\u8B8A\\u66F4\\u7684\\u884C\",\"\\u8907\\u88FD\\u8B8A\\u66F4\\u7684\\u884C\",\"\\u8907\\u88FD\\u522A\\u9664\\u7684\\u884C ({0})\",\"\\u8907\\u88FD\\u8B8A\\u66F4\\u7684\\u884C ({0})\",\"\\u9084\\u539F\\u6B64\\u8B8A\\u66F4\"],\"vs/editor/browser/widget/diffEditorWidget2/movedBlocksLines\":[\"Code moved with changes to line {0}-{1}\",\"Code moved with changes from line {0}-{1}\",\"Code moved to line {0}-{1}\",\"Code moved from line {0}-{1}\"],\"vs/editor/browser/widget/diffEditorWidget2/unchangedRanges\":[\"\\u647A\\u758A\\u672A\\u8B8A\\u66F4\\u7684\\u5340\\u57DF\",\"Click or drag to show more above\",\"Show all\",\"Click or drag to show more below\",\"{0} hidden lines\",\"Double click to unfold\"],\"vs/editor/browser/widget/diffReview\":[\"Diff \\u6AA2\\u95B1\\u4E2D [\\u63D2\\u5165] \\u7684\\u5716\\u793A\\u3002\",\"Diff \\u6AA2\\u95B1\\u4E2D [\\u79FB\\u9664] \\u7684\\u5716\\u793A\\u3002\",\"Diff \\u6AA2\\u95B1\\u4E2D [\\u95DC\\u9589] \\u7684\\u5716\\u793A\\u3002\",\"\\u95DC\\u9589\",\"\\u672A\\u8B8A\\u66F4\\u4EFB\\u4E00\\u884C\",\"\\u5DF2\\u8B8A\\u66F4 1 \\u884C\",\"\\u5DF2\\u8B8A\\u66F4 {0} \\u884C\",\"{1} \\u9805\\u5DEE\\u7570\\u4E2D\\u7684\\u7B2C {0} \\u9805: \\u539F\\u59CB\\u884C {2}\\u3001{3}\\uFF0C\\u4FEE\\u6539\\u884C {4}\\u3001{5}\",\"\\u7A7A\\u767D\",\"{0} \\u672A\\u8B8A\\u66F4\\u884C {1}\",\"{0} \\u539F\\u59CB\\u884C {1} \\u4FEE\\u6539\\u7684\\u884C {2}\",\"+ {0} \\u4FEE\\u6539\\u884C {1}\",\"- {0} \\u539F\\u59CB\\u884C {1}\"],\"vs/editor/browser/widget/inlineDiffMargin\":[\"\\u8907\\u88FD\\u5DF2\\u522A\\u9664\\u7684\\u884C\",\"\\u8907\\u88FD\\u5DF2\\u522A\\u9664\\u7684\\u884C\",\"\\u8907\\u88FD\\u8B8A\\u66F4\\u7684\\u884C\",\"\\u8907\\u88FD\\u8B8A\\u66F4\\u7684\\u884C\",\"\\u8907\\u88FD\\u5DF2\\u522A\\u9664\\u7684\\u884C \\uFF08{0}\\uFF09\",\"\\u8907\\u88FD\\u8B8A\\u66F4\\u7684\\u884C ({0})\",\"\\u9084\\u539F\\u6B64\\u8B8A\\u66F4\",\"\\u8907\\u88FD\\u5DF2\\u522A\\u9664\\u7684\\u884C \\uFF08{0}\\uFF09\",\"\\u8907\\u88FD\\u8B8A\\u66F4\\u7684\\u884C ({0})\"],\"vs/editor/common/config/editorConfigurationSchema\":[\"\\u7DE8\\u8F2F\\u5668\",\"\\u8207 Tab \\u76F8\\u7B49\\u7684\\u7A7A\\u683C\\u6578\\u91CF\\u3002\\u7576 {0} \\u5DF2\\u958B\\u555F\\u6642\\uFF0C\\u6703\\u6839\\u64DA\\u6A94\\u6848\\u5167\\u5BB9\\u8986\\u5BEB\\u6B64\\u8A2D\\u5B9A\\u3002\",\"\\u7528\\u65BC\\u7E2E\\u6392\\u6216 'tabSize' \\u4F7F\\u7528 `\\\"editor.tabSize\\\"` \\u503C\\u7684\\u7A7A\\u683C\\u6578\\u76EE\\u3002\\u7576 '#editor.detectIndentation#' \\u958B\\u555F\\u6642\\uFF0C\\u6703\\u6839\\u64DA\\u6A94\\u6848\\u5167\\u5BB9\\u8986\\u5BEB\\u9019\\u500B\\u8A2D\\u5B9A\\u3002\",\"\\u5728\\u6309 `Tab` \\u6642\\u63D2\\u5165\\u7A7A\\u683C\\u3002\\u7576 {0} \\u958B\\u555F\\u6642\\uFF0C\\u6703\\u6839\\u64DA\\u6A94\\u6848\\u5167\\u5BB9\\u8986\\u5BEB\\u6B64\\u8A2D\\u5B9A\\u3002\",\"\\u6839\\u64DA\\u6A94\\u6848\\u5167\\u5BB9\\uFF0C\\u63A7\\u5236\\u7576\\u6A94\\u6848\\u958B\\u555F\\u6642\\uFF0C\\u662F\\u5426\\u81EA\\u52D5\\u5075\\u6E2C {0} \\u548C {1}\\u3002\",\"\\u79FB\\u9664\\u5C3E\\u7AEF\\u81EA\\u52D5\\u63D2\\u5165\\u7684\\u7A7A\\u767D\\u5B57\\u5143\\u3002\",\"\\u91DD\\u5C0D\\u5927\\u578B\\u6A94\\u6848\\u505C\\u7528\\u90E8\\u5206\\u9AD8\\u8A18\\u61B6\\u9AD4\\u9700\\u6C42\\u529F\\u80FD\\u7684\\u7279\\u6B8A\\u8655\\u7406\\u65B9\\u5F0F\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u61C9\\u6839\\u64DA\\u6587\\u4EF6\\u4E2D\\u7684\\u55AE\\u5B57\\u8A08\\u7B97\\u81EA\\u52D5\\u5B8C\\u6210\\u3002\",\"\\u50C5\\u5EFA\\u8B70\\u4F86\\u81EA\\u4F7F\\u7528\\u4E2D\\u6587\\u4EF6\\u4E2D\\u7684\\u5B57\\u7D44\\u3002\",\"\\u5EFA\\u8B70\\u4F86\\u81EA\\u6240\\u6709\\u5DF2\\u958B\\u555F\\u6587\\u4EF6\\u4E2D\\uFF0C\\u8A9E\\u8A00\\u76F8\\u540C\\u7684\\u5B57\\u7D44\\u3002\",\"\\u5EFA\\u8B70\\u4F86\\u81EA\\u6240\\u6709\\u5DF2\\u958B\\u555F\\u6587\\u4EF6\\u4E2D\\u7684\\u5B57\\u7D44\\u3002\",\"\\u63A7\\u5236\\u8981\\u5F9E\\u54EA\\u4E9B\\u6587\\u4EF6\\u8A08\\u7B97\\u4EE5\\u5B57\\u7D44\\u70BA\\u57FA\\u790E\\u7684\\u5B8C\\u6210\\u4F5C\\u696D\\u3002\",\"\\u6240\\u6709\\u5F69\\u8272\\u4E3B\\u984C\\u7686\\u5DF2\\u555F\\u7528\\u8A9E\\u610F\\u9192\\u76EE\\u63D0\\u793A\\u3002\",\"\\u6240\\u6709\\u5F69\\u8272\\u4E3B\\u984C\\u7686\\u5DF2\\u505C\\u7528\\u8A9E\\u610F\\u9192\\u76EE\\u63D0\\u793A\\u3002\",\"\\u8A9E\\u610F\\u9192\\u76EE\\u63D0\\u793A\\u7531\\u76EE\\u524D\\u4E4B\\u5F69\\u8272\\u4F48\\u666F\\u4E3B\\u984C\\u7684 'semanticHighlighting' \\u8A2D\\u5B9A\\u6240\\u8A2D\\u5B9A\\u3002\",\"\\u63A7\\u5236 semanticHighlighting \\u662F\\u5426\\u6703\\u70BA\\u652F\\u63F4\\u7684\\u8A9E\\u8A00\\u986F\\u793A\\u3002\",\"\\u5373\\u4F7F\\u6309\\u5169\\u4E0B\\u5167\\u5BB9\\u6216\\u6309 `Escape`\\uFF0C\\u4ECD\\u4FDD\\u6301\\u7784\\u5B54\\u7DE8\\u8F2F\\u5668\\u958B\\u555F\\u3002\",\"\\u56E0\\u6548\\u80FD\\u7684\\u7DE3\\u6545\\uFF0C\\u4E0D\\u6703\\u5C07\\u8D85\\u904E\\u6B64\\u9AD8\\u5EA6\\u7684\\u884C Token \\u5316\",\"\\u63A7\\u5236\\u6B0A\\u6756\\u5316\\u662F\\u5426\\u61C9\\u8A72\\u5728 Web \\u5DE5\\u4F5C\\u8005\\u4E0A\\u975E\\u540C\\u6B65\\u9032\\u884C\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u61C9\\u8A72\\u8A18\\u9304\\u975E\\u540C\\u6B65\\u6B0A\\u6756\\u5316\\u3002\\u50C5\\u9069\\u7528\\u5075\\u932F\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u61C9\\u4F7F\\u7528\\u820A\\u7248\\u80CC\\u666F Token \\u5316\\u4F86\\u9A57\\u8B49\\u975E\\u540C\\u6B65 Token \\u5316\\u3002\\u53EF\\u80FD\\u6703\\u6E1B\\u6162 Token \\u5316\\u7684\\u901F\\u5EA6\\u3002\\u50C5\\u7528\\u65BC\\u5075\\u932F\\u3002\",\"\\u5B9A\\u7FA9\\u589E\\u52A0\\u6216\\u6E1B\\u5C11\\u7E2E\\u6392\\u7684\\u62EC\\u5F27\\u7B26\\u865F\\u3002\",\"\\u5DE6\\u62EC\\u5F27\\u5B57\\u5143\\u6216\\u5B57\\u4E32\\u9806\\u5E8F\\u3002\",\"\\u53F3\\u62EC\\u5F27\\u5B57\\u5143\\u6216\\u5B57\\u4E32\\u9806\\u5E8F\\u3002\",\"\\u5B9A\\u7FA9\\u7576\\u62EC\\u5F27\\u914D\\u5C0D\\u8457\\u8272\\u5DF2\\u555F\\u7528\\u6642\\uFF0C\\u7531\\u5176\\u5DE2\\u72C0\\u5C64\\u7D1A\\u8457\\u8272\\u7684\\u62EC\\u5F27\\u914D\\u5C0D\\u3002\",\"\\u5DE6\\u62EC\\u5F27\\u5B57\\u5143\\u6216\\u5B57\\u4E32\\u9806\\u5E8F\\u3002\",\"\\u53F3\\u62EC\\u5F27\\u5B57\\u5143\\u6216\\u5B57\\u4E32\\u9806\\u5E8F\\u3002\",\"\\u53D6\\u6D88 Diff \\u8A08\\u7B97\\u524D\\u7684\\u903E\\u6642\\u9650\\u5236 (\\u6BEB\\u79D2)\\u3002\\u82E5\\u7121\\u903E\\u6642\\uFF0C\\u8ACB\\u4F7F\\u7528 0\\u3002\",\"\\u8981\\u8A08\\u7B97\\u5DEE\\u7570\\u7684\\u6A94\\u6848\\u5927\\u5C0F\\u4E0A\\u9650 (MB)\\u3002\\u4F7F\\u7528 0 \\u8868\\u793A\\u7121\\u9650\\u5236\\u3002\",\"\\u63A7\\u5236 Diff \\u7DE8\\u8F2F\\u5668\\u8981\\u4E26\\u6392\\u6216\\u5167\\u5D4C\\u986F\\u793A Diff\\u3002\",\"If the diff editor width is smaller than this value, the inline view is used.\",\"If enabled and the editor width is too small, the inline view is used.\",\"\\u555F\\u7528\\u6642\\uFF0CDiff \\u7DE8\\u8F2F\\u5668\\u6703\\u5728\\u5176\\u5B57\\u5143\\u908A\\u7DE3\\u986F\\u793A\\u7BAD\\u982D\\uFF0C\\u4EE5\\u9084\\u539F\\u8B8A\\u66F4\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CDiff \\u7DE8\\u8F2F\\u5668\\u6703\\u5FFD\\u7565\\u524D\\u7F6E\\u6216\\u5F8C\\u7F6E\\u7A7A\\u683C\\u7684\\u8B8A\\u66F4\\u3002\",\"\\u63A7\\u5236 Diff \\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u8981\\u70BA\\u65B0\\u589E/\\u79FB\\u9664\\u7684\\u8B8A\\u66F4\\u986F\\u793A +/- \\u6A19\\u8A18\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u986F\\u793A codelens\\u3002\",\"\\u4E00\\u5F8B\\u4E0D\\u63DB\\u884C\\u3002\",\"\\u4F9D\\u6AA2\\u8996\\u5340\\u5BEC\\u5EA6\\u63DB\\u884C\\u3002\",\"\\u5C07\\u4F9D\\u64DA {0} \\u8A2D\\u5B9A\\u81EA\\u52D5\\u63DB\\u884C\\u3002\",\"\\u4F7F\\u7528\\u820A\\u7248\\u5DEE\\u7570\\u6F14\\u7B97\\u6CD5\\u3002\",\"\\u4F7F\\u7528\\u9032\\u968E\\u7248\\u5DEE\\u7570\\u6F14\\u7B97\\u6CD5\\u3002\",\"Controls whether the diff editor shows unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as a minimum for unchanged regions. Only works when {0} is set.\",\"Controls how many lines are used as context when comparing unchanged regions. Only works when {0} is set.\",\"\\u63A7\\u5236\\u5DEE\\u7570\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u8A72\\u986F\\u793A\\u5075\\u6E2C\\u5230\\u7684\\u7A0B\\u5F0F\\u78BC\\u79FB\\u52D5\\u3002\\u53EA\\u6709\\u5728\\u8A2D\\u5B9A\\u4E86 {0} \\u6642\\u624D\\u6709\\u4F5C\\u7528\\u3002\",\"\\u63A7\\u5236 Diff \\u7DE8\\u8F2F\\u5668\\u4F7F\\u7528\\u65B0\\u7684\\u6216\\u820A\\u7684\\u5BE6\\u4F5C\\u3002\",\"\\u63A7\\u5236\\u5DEE\\u7570\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u986F\\u793A\\u7A7A\\u767D\\u88DD\\u98FE\\u9805\\u76EE\\uFF0C\\u4EE5\\u67E5\\u770B\\u63D2\\u5165\\u6216\\u522A\\u9664\\u5B57\\u5143\\u7684\\u4F4D\\u7F6E\\u3002\"],\"vs/editor/common/config/editorOptions\":[\"\\u4F7F\\u7528\\u5E73\\u53F0 API \\u4EE5\\u5075\\u6E2C\\u87A2\\u5E55\\u52A9\\u8B80\\u7A0B\\u5F0F\\u9644\\u52A0\",\"\\u4F7F\\u7528\\u87A2\\u5E55\\u52A9\\u8B80\\u7A0B\\u5F0F\\u6700\\u4F73\\u5316\\u4F7F\\u7528\\u65B9\\u5F0F\",\"\\u5047\\u8A2D\\u672A\\u9644\\u52A0\\u87A2\\u5E55\\u52A9\\u8B80\\u7A0B\\u5F0F\",\"\\u63A7\\u5236 UI \\u662F\\u5426\\u61C9\\u65BC\\u5DF2\\u70BA\\u87A2\\u5E55\\u52A9\\u8B80\\u7A0B\\u5F0F\\u6700\\u4F73\\u5316\\u7684\\u6A21\\u5F0F\\u4E2D\\u57F7\\u884C\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u8981\\u5728\\u8A3B\\u89E3\\u6642\\u63D2\\u5165\\u7A7A\\u767D\\u5B57\\u5143\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u61C9\\u4EE5\\u884C\\u8A3B\\u89E3\\u7684\\u5207\\u63DB\\u3001\\u65B0\\u589E\\u6216\\u79FB\\u9664\\u52D5\\u4F5C\\uFF0C\\u5FFD\\u7565\\u7A7A\\u767D\\u7684\\u884C\\u3002\",\"\\u63A7\\u5236\\u8907\\u88FD\\u6642\\u4E0D\\u9078\\u53D6\\u4EFB\\u4F55\\u9805\\u76EE\\u662F\\u5426\\u6703\\u8907\\u88FD\\u76EE\\u524D\\u7A0B\\u5F0F\\u884C\\u3002\",\"\\u63A7\\u5236\\u5728\\u8F38\\u5165\\u671F\\u9593\\u662F\\u5426\\u8981\\u8DF3\\u904E\\u6E38\\u6A19\\u4F86\\u5C0B\\u627E\\u76F8\\u7B26\\u7684\\u9805\\u76EE\\u3002\",\"\\u6C38\\u4E0D\\u5F9E\\u7DE8\\u8F2F\\u5668\\u9078\\u53D6\\u7BC4\\u570D\\u4E2D\\u690D\\u5165\\u641C\\u5C0B\\u5B57\\u4E32\\u3002\",\"\\u4E00\\u5F8B\\u5F9E\\u7DE8\\u8F2F\\u5668\\u9078\\u53D6\\u7BC4\\u570D\\u4E2D\\u690D\\u5165\\u641C\\u5C0B\\u5B57\\u4E32\\uFF0C\\u5305\\u62EC\\u6E38\\u6A19\\u4F4D\\u7F6E\\u7684\\u5B57\\u3002\",\"\\u53EA\\u6709\\u4F86\\u81EA\\u7DE8\\u8F2F\\u5668\\u9078\\u53D6\\u7BC4\\u570D\\u4E2D\\u7684\\u690D\\u5165\\u641C\\u5C0B\\u5B57\\u4E32\\u3002\",\"\\u63A7\\u5236 [\\u5C0B\\u627E\\u5C0F\\u5DE5\\u5177] \\u4E2D\\u7684\\u641C\\u5C0B\\u5B57\\u4E32\\u662F\\u5426\\u4F86\\u81EA\\u7DE8\\u8F2F\\u5668\\u9078\\u53D6\\u9805\\u76EE\\u3002\",\"\\u6C38\\u4E0D\\u81EA\\u52D5\\u958B\\u555F [\\u5728\\u9078\\u53D6\\u7BC4\\u570D\\u4E2D\\u5C0B\\u627E] (\\u9810\\u8A2D)\\u3002\",\"\\u4E00\\u5F8B\\u81EA\\u52D5\\u958B\\u555F [\\u5728\\u9078\\u53D6\\u7BC4\\u570D\\u4E2D\\u5C0B\\u627E]\\u3002\",\"\\u9078\\u53D6\\u591A\\u884C\\u5167\\u5BB9\\u6642\\uFF0C\\u81EA\\u52D5\\u958B\\u555F [\\u5728\\u9078\\u53D6\\u7BC4\\u570D\\u4E2D\\u5C0B\\u627E]\\u3002\",\"\\u63A7\\u5236\\u81EA\\u52D5\\u958B\\u555F [\\u5728\\u9078\\u53D6\\u7BC4\\u570D\\u4E2D\\u5C0B\\u627E] \\u7684\\u689D\\u4EF6\\u3002\",\"\\u63A7\\u5236\\u5C0B\\u627E\\u5C0F\\u5DE5\\u5177\\u662F\\u5426\\u5728 macOS \\u4E0A\\u8B80\\u53D6\\u6216\\u4FEE\\u6539\\u5171\\u7528\\u5C0B\\u627E\\u526A\\u8CBC\\u7C3F\\u3002\",\"\\u63A7\\u5236\\u5C0B\\u627E\\u5C0F\\u5DE5\\u5177\\u662F\\u5426\\u61C9\\u5728\\u7DE8\\u8F2F\\u5668\\u9802\\u7AEF\\u984D\\u5916\\u65B0\\u589E\\u884C\\u3002\\u82E5\\u70BA true\\uFF0C\\u7576\\u60A8\\u53EF\\u770B\\u5230\\u5C0B\\u627E\\u5C0F\\u5DE5\\u5177\\u6642\\uFF0C\\u60A8\\u7684\\u6372\\u52D5\\u7BC4\\u570D\\u6703\\u8D85\\u904E\\u7B2C\\u4E00\\u884C\\u3002\",\"\\u7576\\u518D\\u4E5F\\u627E\\u4E0D\\u5230\\u5176\\u4ED6\\u76F8\\u7B26\\u9805\\u76EE\\u6642\\uFF0C\\u63A7\\u5236\\u662F\\u5426\\u81EA\\u52D5\\u5F9E\\u958B\\u982D (\\u6216\\u7D50\\u5C3E) \\u91CD\\u65B0\\u958B\\u59CB\\u641C\\u5C0B\\u3002\",\"\\u555F\\u7528/\\u505C\\u7528\\u9023\\u5B57\\u5B57\\u578B ('calt' \\u548C 'liga' \\u5B57\\u578B\\u529F\\u80FD)\\u3002\\u5C07\\u6B64\\u9805\\u8B8A\\u66F4\\u70BA\\u5B57\\u4E32\\uFF0C\\u4EE5\\u7CBE\\u78BA\\u63A7\\u5236 'font-feature-settings' CSS \\u5C6C\\u6027\\u3002\",\"\\u660E\\u78BA\\u7684 'font-feature-settings' CSS \\u5C6C\\u6027\\u3002\\u5982\\u679C\\u53EA\\u9700\\u8981\\u958B\\u555F/\\u95DC\\u9589\\u9023\\u5B57\\uFF0C\\u53EF\\u4EE5\\u6539\\u70BA\\u50B3\\u905E\\u5E03\\u6797\\u503C\\u3002\",\"\\u8A2D\\u5B9A\\u9023\\u5B57\\u5B57\\u578B\\u6216\\u5B57\\u578B\\u529F\\u80FD\\u3002\\u53EF\\u4EE5\\u662F\\u5E03\\u6797\\u503C\\u4EE5\\u555F\\u7528/\\u505C\\u7528\\u9023\\u5B57\\uFF0C\\u6216\\u4EE3\\u8868 CSS 'font-feature-settings' \\u5C6C\\u6027\\u7684\\u5B57\\u4E32\\u3002\",\"\\u555F\\u7528/\\u505C\\u7528\\u5F9E font-weight \\u5230 font-variation-settings \\u7684\\u8F49\\u63DB\\u3002\\u5C07\\u6B64\\u8A2D\\u5B9A\\u8B8A\\u66F4\\u70BA\\u5B57\\u4E32\\uFF0C\\u4EE5\\u66F4\\u7CBE\\u7D30\\u5730\\u63A7\\u5236 'font-variation-settings' CSS \\u5C6C\\u6027\\u3002\",\"\\u660E\\u78BA\\u7684 'font-variation-settings' CSS \\u5C6C\\u6027\\u3002\\u5982\\u679C\\u53EA\\u9700\\u8981\\u5C07 font-weight \\u8F49\\u63DB\\u70BA font-variation-settings\\uFF0C\\u53EF\\u4EE5\\u6539\\u70BA\\u50B3\\u905E\\u5E03\\u6797\\u503C\\u3002\",\"\\u8A2D\\u5B9A\\u5B57\\u578B\\u8B8A\\u5316\\u3002\\u53EF\\u4EE5\\u662F\\u5E03\\u6797\\u503C\\uFF0C\\u4EE5\\u555F\\u7528/\\u505C\\u7528\\u5F9E font-weight \\u5230 font-variation-settings \\u7684\\u8F49\\u63DB\\uFF0C\\u6216\\u662F\\u5B57\\u4E32\\uFF0C\\u505A\\u70BA CSS 'font-variation-settings' \\u5C6C\\u6027\\u7684\\u503C\\u3002\",\"\\u63A7\\u5236\\u5B57\\u578B\\u5927\\u5C0F (\\u50CF\\u7D20)\\u3002\",\"\\u53EA\\u5141\\u8A31\\u300C\\u4E00\\u822C\\u300D\\u53CA\\u300C\\u7C97\\u9AD4\\u300D\\u95DC\\u9375\\u5B57\\uFF0C\\u6216\\u4ECB\\u65BC 1 \\u5230 1000 \\u4E4B\\u9593\\u7684\\u6578\\u503C\\u3002\",\"\\u63A7\\u5236\\u5B57\\u578B\\u7C97\\u7D30\\u3002\\u63A5\\u53D7\\u300C\\u4E00\\u822C\\u300D\\u53CA\\u300C\\u7C97\\u9AD4\\u300D\\u95DC\\u9375\\u5B57\\uFF0C\\u6216\\u4ECB\\u65BC 1 \\u5230 1000 \\u4E4B\\u9593\\u7684\\u6578\\u503C\\u3002\",\"\\u986F\\u793A\\u7D50\\u679C\\u7684\\u9810\\u89BD\\u6AA2\\u8996 (\\u9810\\u8A2D)\",\"\\u79FB\\u81F3\\u4E3B\\u8981\\u7D50\\u679C\\u4E26\\u986F\\u793A\\u9810\\u89BD\\u6AA2\\u8996\",\"\\u524D\\u5F80\\u4E3B\\u8981\\u7D50\\u679C\\uFF0C\\u4E26\\u5C0D\\u5176\\u4ED6\\u4EBA\\u555F\\u7528\\u7121\\u9810\\u89BD\\u700F\\u89BD\",\"\\u6B64\\u8A2D\\u5B9A\\u5DF2\\u6DD8\\u6C70\\uFF0C\\u8ACB\\u6539\\u7528 'editor.editor.gotoLocation.multipleDefinitions' \\u6216 'editor.editor.gotoLocation.multipleImplementations' \\u7B49\\u55AE\\u7368\\u8A2D\\u5B9A\\u3002\",\"\\u63A7\\u5236 'Go to Definition' \\u547D\\u4EE4\\u5728\\u6709\\u591A\\u500B\\u76EE\\u6A19\\u4F4D\\u7F6E\\u5B58\\u5728\\u6642\\u7684\\u884C\\u70BA\\u3002\",\"\\u63A7\\u5236 'Go to Type Definition' \\u547D\\u4EE4\\u5728\\u6709\\u591A\\u500B\\u76EE\\u6A19\\u4F4D\\u7F6E\\u5B58\\u5728\\u6642\\u7684\\u884C\\u70BA\\u3002\",\"\\u63A7\\u5236 'Go to Declaration' \\u547D\\u4EE4\\u5728\\u6709\\u591A\\u500B\\u76EE\\u6A19\\u4F4D\\u7F6E\\u5B58\\u5728\\u6642\\u7684\\u884C\\u70BA\\u3002\",\"\\u63A7\\u5236 'Go to Implementations' \\u547D\\u4EE4\\u5728\\u6709\\u591A\\u500B\\u76EE\\u6A19\\u4F4D\\u7F6E\\u5B58\\u5728\\u6642\\u7684\\u884C\\u70BA\\u3002\",\"\\u63A7\\u5236 'Go to References' \\u547D\\u4EE4\\u5728\\u6709\\u591A\\u500B\\u76EE\\u6A19\\u4F4D\\u7F6E\\u5B58\\u5728\\u6642\\u7684\\u884C\\u70BA\\u3002\",\"\\u7576 'Go to Definition' \\u7684\\u7D50\\u679C\\u70BA\\u76EE\\u524D\\u4F4D\\u7F6E\\u6642\\uFF0C\\u6B63\\u5728\\u57F7\\u884C\\u7684\\u66FF\\u4EE3\\u547D\\u4EE4\\u8B58\\u5225\\u78BC\\u3002\",\"\\u7576 'Go to Type Definition' \\u7684\\u7D50\\u679C\\u70BA\\u76EE\\u524D\\u4F4D\\u7F6E\\u6642\\uFF0C\\u6B63\\u5728\\u57F7\\u884C\\u7684\\u66FF\\u4EE3\\u547D\\u4EE4\\u8B58\\u5225\\u78BC\\u3002\",\"\\u7576 'Go to Declaration' \\u7684\\u7D50\\u679C\\u70BA\\u76EE\\u524D\\u4F4D\\u7F6E\\u6642\\uFF0C\\u6B63\\u5728\\u57F7\\u884C\\u7684\\u66FF\\u4EE3\\u547D\\u4EE4\\u8B58\\u5225\\u78BC\\u3002\",\"\\u7576 'Go to Implementation' \\u7684\\u7D50\\u679C\\u70BA\\u76EE\\u524D\\u4F4D\\u7F6E\\u6642\\uFF0C\\u6B63\\u5728\\u57F7\\u884C\\u7684\\u66FF\\u4EE3\\u547D\\u4EE4\\u8B58\\u5225\\u78BC\\u3002\",\"\\u7576 'Go to Reference' \\u7684\\u7D50\\u679C\\u70BA\\u76EE\\u524D\\u4F4D\\u7F6E\\u6642\\uFF0C\\u6B63\\u5728\\u57F7\\u884C\\u7684\\u66FF\\u4EE3\\u547D\\u4EE4\\u8B58\\u5225\\u78BC\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u986F\\u793A\\u66AB\\u7559\\u3002\",\"\\u63A7\\u5236\\u66AB\\u7559\\u986F\\u793A\\u7684\\u5EF6\\u9072\\u6642\\u9593 (\\u4EE5\\u6BEB\\u79D2\\u70BA\\u55AE\\u4F4D)\\u3002\",\"\\u63A7\\u5236\\u7576\\u6ED1\\u9F20\\u79FB\\u904E\\u6642\\uFF0C\\u662F\\u5426\\u61C9\\u4FDD\\u6301\\u986F\\u793A\\u66AB\\u7559\\u3002\",\"\\u5982\\u679C\\u6709\\u7A7A\\u9593\\uFF0C\\u5247\\u504F\\u597D\\u5728\\u884C\\u4E0A\\u65B9\\u986F\\u793A\\u6E38\\u6A19\\u3002\",\"\\u5047\\u8A2D\\u6240\\u6709\\u5B57\\u5143\\u7684\\u5BEC\\u5EA6\\u5747\\u76F8\\u540C\\u3002\\u9019\\u662F\\u4E00\\u7A2E\\u5FEB\\u901F\\u7684\\u6F14\\u7B97\\u6CD5\\uFF0C\\u9069\\u7528\\u65BC\\u7B49\\u5BEC\\u5B57\\u578B\\uFF0C\\u4EE5\\u53CA\\u5B57\\u7B26\\u5BEC\\u5EA6\\u76F8\\u540C\\u7684\\u90E8\\u5206\\u6307\\u4EE4\\u78BC (\\u4F8B\\u5982\\u62C9\\u4E01\\u6587\\u5B57\\u5143)\\u3002\",\"\\u5C07\\u5916\\u570D\\u9EDE\\u8A08\\u7B97\\u59D4\\u6D3E\\u7D66\\u700F\\u89BD\\u5668\\u3002\\u9019\\u662F\\u7DE9\\u6162\\u7684\\u6F14\\u7B97\\u6CD5\\uFF0C\\u5982\\u679C\\u6A94\\u6848\\u8F03\\u5927\\u53EF\\u80FD\\u6703\\u5C0E\\u81F4\\u51CD\\u7D50\\uFF0C\\u4F46\\u5728\\u6240\\u6709\\u60C5\\u6CC1\\u4E0B\\u90FD\\u6B63\\u5E38\\u904B\\u4F5C\\u3002\",\"\\u63A7\\u5236\\u8A08\\u7B97\\u5916\\u570D\\u9EDE\\u7684\\u6F14\\u7B97\\u6CD5\\u3002\\u8ACB\\u6CE8\\u610F\\uFF0C\\u5728\\u5354\\u52A9\\u5DE5\\u5177\\u6A21\\u5F0F\\u4E2D\\uFF0C\\u6703\\u4F7F\\u7528\\u9032\\u968E\\u4F86\\u7372\\u5F97\\u6700\\u4F73\\u9AD4\\u9A57\\u3002\",\"\\u5728\\u7DE8\\u8F2F\\u5668\\u4E2D\\u555F\\u7528\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C\\u71C8\\u6CE1\\u3002\",\"\\u5728\\u7DE8\\u8F2F\\u5668\\u9802\\u7AEF\\u6372\\u52D5\\u671F\\u9593\\u986F\\u793A\\u5DE2\\u72C0\\u7684\\u76EE\\u524D\\u7BC4\\u570D\\u3002\",\"\\u5B9A\\u7FA9\\u8981\\u986F\\u793A\\u7684\\u81EA\\u9ECF\\u7DDA\\u6578\\u76EE\\u4E0A\\u9650\\u3002\",\"\\u5B9A\\u7FA9\\u8981\\u7528\\u65BC\\u5224\\u65B7\\u8981\\u9ECF\\u4F4F\\u7684\\u7DDA\\u689D\\u7684\\u6A21\\u578B\\u3002\\u5982\\u679C\\u5927\\u7DB1\\u6A21\\u578B\\u4E0D\\u5B58\\u5728\\uFF0C\\u5247\\u6703\\u56DE\\u5230\\u647A\\u758A\\u63D0\\u4F9B\\u8005\\u6A21\\u578B\\uFF0C\\u5176\\u6703\\u56DE\\u5230\\u7E2E\\u6392\\u6A21\\u578B\\u3002\\u9019\\u4E09\\u7A2E\\u60C5\\u6CC1\\u4E2D\\u6703\\u9075\\u5B88\\u6B64\\u9806\\u5E8F\\u3002\",\"Enable scrolling of the sticky scroll widget with the editor's horizontal scrollbar.\",\"\\u555F\\u7528\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7684\\u5167\\u5D4C\\u63D0\\u793A\\u3002\",\"\\u5DF2\\u555F\\u7528\\u5167\\u5D4C\\u63D0\\u793A\",\"\\u9810\\u8A2D\\u6703\\u986F\\u793A\\u5167\\u5D4C\\u63D0\\u793A\\uFF0C\\u4E26\\u5728\\u6309\\u4F4F {0} \\u6642\\u96B1\\u85CF\",\"\\u9810\\u8A2D\\u6703\\u96B1\\u85CF\\u5167\\u5D4C\\u63D0\\u793A\\uFF0C\\u4E26\\u5728\\u6309\\u4F4F {0} \\u6642\\u986F\\u793A\",\"\\u5DF2\\u505C\\u7528\\u5167\\u5D4C\\u63D0\\u793A\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u4E2D\\u5167\\u5D4C\\u63D0\\u793A\\u7684\\u5B57\\u578B\\u5927\\u5C0F\\u3002\\u7576\\u8A2D\\u5B9A\\u7684\\u503C\\u5C0F\\u65BC {1} \\u6216\\u5927\\u65BC\\u7DE8\\u8F2F\\u5668\\u5B57\\u578B\\u5927\\u5C0F\\u6642\\uFF0C\\u5247\\u6703\\u4F7F\\u7528{0} \\u9810\\u8A2D\\u503C\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u4E2D\\uFF0C\\u5167\\u5D4C\\u63D0\\u793A\\u7684\\u5B57\\u578B\\u5BB6\\u65CF\\u3002\\u8A2D\\u5B9A\\u70BA\\u7A7A\\u767D\\u6642\\uFF0C\\u5247\\u6703\\u4F7F\\u7528 {0}\\u3002\",\"\\u5728\\u7DE8\\u8F2F\\u5668\\u4E2D\\u555F\\u7528\\u7684\\u5167\\u5D4C\\u63D0\\u793A\\u5468\\u570D\\u7684\\u586B\\u88DC\\u3002\",`\\u63A7\\u5236\\u884C\\u9AD8\\u3002\\r\n - \\u4F7F\\u7528 0 \\u5F9E\\u5B57\\u578B\\u5927\\u5C0F\\u81EA\\u52D5\\u8A08\\u7B97\\u884C\\u9AD8\\u3002\\r\n - \\u4F7F\\u7528\\u4ECB\\u65BC 0 \\u548C 8 \\u4E4B\\u9593\\u7684\\u503C\\u4F5C\\u70BA\\u5B57\\u578B\\u5927\\u5C0F\\u7684\\u4E58\\u6578\\u3002\\r\n - \\u5927\\u65BC\\u6216\\u7B49\\u65BC 8 \\u7684\\u503C\\u5C07\\u7528\\u4F86\\u4F5C\\u70BA\\u6709\\u6548\\u503C\\u3002`,\"\\u63A7\\u5236\\u662F\\u5426\\u6703\\u986F\\u793A\\u7E2E\\u5716\",\"\\u63A7\\u5236\\u662F\\u5426\\u6703\\u81EA\\u52D5\\u96B1\\u85CF\\u7E2E\\u5716\\u3002\",\"\\u7E2E\\u5716\\u5927\\u5C0F\\u8207\\u7DE8\\u8F2F\\u5668\\u5167\\u5BB9\\u76F8\\u540C (\\u4E14\\u53EF\\u80FD\\u6703\\u6372\\u52D5)\\u3002\",\"\\u7E2E\\u5716\\u6703\\u8996\\u9700\\u8981\\u4F38\\u7E2E\\uFF0C\\u4EE5\\u586B\\u6EFF\\u8A72\\u7DE8\\u8F2F\\u5668\\u7684\\u9AD8\\u5EA6 (\\u7121\\u6372\\u52D5)\\u3002\",\"\\u7E2E\\u5716\\u5C07\\u8996\\u9700\\u8981\\u7E2E\\u5C0F\\uFF0C\\u4E00\\u5F8B\\u4E0D\\u6703\\u5927\\u65BC\\u8A72\\u7DE8\\u8F2F\\u5668 (\\u7121\\u6372\\u52D5)\\u3002\",\"\\u63A7\\u5236\\u7E2E\\u5716\\u7684\\u5927\\u5C0F\\u3002\",\"\\u63A7\\u5236\\u8981\\u5728\\u54EA\\u7AEF\\u5448\\u73FE\\u7E2E\\u5716\\u3002\",\"\\u63A7\\u5236\\u4F55\\u6642\\u986F\\u793A\\u8FF7\\u4F60\\u5730\\u5716\\u6ED1\\u687F\\u3002\",\"\\u7E2E\\u5716\\u5167\\u6240\\u7E6A\\u88FD\\u7684\\u5167\\u5BB9\\u5927\\u5C0F: 1\\u30012 \\u6216 3\\u3002\",\"\\u986F\\u793A\\u884C\\u4E2D\\u7684\\u5BE6\\u969B\\u5B57\\u5143\\uFF0C\\u800C\\u4E0D\\u662F\\u8272\\u5F69\\u5340\\u584A\\u3002\",\"\\u9650\\u5236\\u7E2E\\u5716\\u7684\\u5BEC\\u5EA6\\uFF0C\\u6700\\u591A\\u986F\\u793A\\u67D0\\u500B\\u6578\\u76EE\\u7684\\u5217\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u4E0A\\u908A\\u7DE3\\u8207\\u7B2C\\u4E00\\u884C\\u4E4B\\u9593\\u7684\\u7A7A\\u683C\\u6578\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u4E0B\\u908A\\u7DE3\\u8207\\u6700\\u5F8C\\u4E00\\u884C\\u4E4B\\u9593\\u7684\\u7A7A\\u683C\\u6578\\u3002\",\"\\u555F\\u7528\\u5FEB\\u986F\\uFF0C\\u5728\\u60A8\\u9375\\u5165\\u7684\\u540C\\u6642\\u986F\\u793A\\u53C3\\u6578\\u6587\\u4EF6\\u548C\\u985E\\u578B\\u8CC7\\u8A0A\\u3002\",\"\\u63A7\\u5236\\u63D0\\u793A\\u529F\\u80FD\\u8868\\u662F\\u5426\\u5728\\u6E05\\u55AE\\u7D50\\u5C3E\\u6642\\u5FAA\\u74B0\\u6216\\u95DC\\u9589\\u3002\",\"\\u5FEB\\u901F\\u5EFA\\u8B70\\u6703\\u986F\\u793A\\u5728\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u5167\",\"\\u5FEB\\u901F\\u5EFA\\u8B70\\u6703\\u986F\\u793A\\u70BA\\u6D6E\\u6C34\\u5370\\u6587\\u5B57\",\"\\u5DF2\\u505C\\u7528\\u5FEB\\u901F\\u5EFA\\u8B70\",\"\\u5141\\u8A31\\u5728\\u5B57\\u4E32\\u5167\\u986F\\u793A\\u5373\\u6642\\u5EFA\\u8B70\\u3002\",\"\\u5141\\u8A31\\u5728\\u8A3B\\u89E3\\u4E2D\\u986F\\u793A\\u5373\\u6642\\u5EFA\\u8B70\\u3002\",\"\\u5141\\u8A31\\u5728\\u5B57\\u4E32\\u8207\\u8A3B\\u89E3\\u4EE5\\u5916\\u4E4B\\u8655\\u986F\\u793A\\u5373\\u6642\\u5EFA\\u8B70\\u3002\",\"\\u63A7\\u5236\\u8F38\\u5165\\u6642\\u662F\\u5426\\u61C9\\u81EA\\u52D5\\u986F\\u793A\\u5EFA\\u8B70\\u3002\\u9019\\u53EF\\u63A7\\u5236\\u5728\\u8A3B\\u89E3\\u3001\\u5B57\\u4E32\\u53CA\\u5176\\u4ED6\\u7A0B\\u5F0F\\u78BC\\u4E2D\\u7684\\u8F38\\u5165\\u3002\\u53EF\\u8A2D\\u5B9A\\u5FEB\\u901F\\u5EFA\\u8B70\\u4EE5\\u96B1\\u5F62\\u6D6E\\u51FA\\u6587\\u5B57\\u6216\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u986F\\u793A\\u3002\\u53E6\\u5916\\u4E5F\\u8ACB\\u6CE8\\u610F '{0}'-\\u8A2D\\u5B9A\\uFF0C\\u5176\\u6703\\u63A7\\u5236\\u5EFA\\u8B70\\u662F\\u5426\\u7531\\u7279\\u6B8A\\u5B57\\u5143\\u6240\\u89F8\\u767C\\u3002\",\"\\u4E0D\\u986F\\u793A\\u884C\\u865F\\u3002\",\"\\u884C\\u865F\\u4EE5\\u7D55\\u5C0D\\u503C\\u986F\\u793A\\u3002\",\"\\u884C\\u865F\\u4EE5\\u76EE\\u524D\\u6E38\\u6A19\\u7684\\u76F8\\u5C0D\\u503C\\u986F\\u793A\\u3002\",\"\\u6BCF 10 \\u884C\\u986F\\u793A\\u884C\\u865F\\u3002\",\"\\u63A7\\u5236\\u884C\\u865F\\u7684\\u986F\\u793A\\u3002\",\"\\u9019\\u500B\\u7DE8\\u8F2F\\u5668\\u5C3A\\u898F\\u6703\\u8F49\\u8B6F\\u7684\\u7B49\\u5BEC\\u5B57\\u5143\\u6578\\u3002\",\"\\u6B64\\u7DE8\\u8F2F\\u5668\\u5C3A\\u898F\\u7684\\u8272\\u5F69\\u3002\",\"\\u5728\\u67D0\\u500B\\u6578\\u76EE\\u7684\\u7B49\\u5BEC\\u5B57\\u5143\\u4E4B\\u5F8C\\u986F\\u793A\\u5782\\u76F4\\u5C3A\\u898F\\u3002\\u5982\\u6709\\u591A\\u500B\\u5C3A\\u898F\\uFF0C\\u5C31\\u6703\\u4F7F\\u7528\\u591A\\u500B\\u503C\\u3002\\u82E5\\u9663\\u5217\\u7A7A\\u767D\\uFF0C\\u5C31\\u4E0D\\u6703\\u7E6A\\u88FD\\u4EFB\\u4F55\\u5C3A\\u898F\\u3002\",\"\\u5782\\u76F4\\u6372\\u8EF8\\u53EA\\u6709\\u5728\\u5FC5\\u8981\\u6642\\u624D\\u53EF\\u898B\\u3002\",\"\\u5782\\u76F4\\u6372\\u8EF8\\u6C38\\u9060\\u53EF\\u898B\\u3002\",\"\\u5782\\u76F4\\u6372\\u8EF8\\u6C38\\u9060\\u96B1\\u85CF\\u3002\",\"\\u63A7\\u5236\\u9805\\u5782\\u76F4\\u6372\\u8EF8\\u7684\\u53EF\\u898B\\u5EA6\\u3002\",\"\\u6C34\\u5E73\\u6372\\u8EF8\\u53EA\\u6709\\u5728\\u5FC5\\u8981\\u6642\\u624D\\u53EF\\u898B\\u3002\",\"\\u6C34\\u5E73\\u6372\\u8EF8\\u6C38\\u9060\\u53EF\\u898B\\u3002\",\"\\u6C34\\u5E73\\u6372\\u8EF8\\u6C38\\u9060\\u96B1\\u85CF\\u3002\",\"\\u63A7\\u5236\\u9805\\u6C34\\u5E73\\u6372\\u8EF8\\u7684\\u53EF\\u898B\\u5EA6\\u3002\",\"\\u5782\\u76F4\\u6372\\u8EF8\\u7684\\u5BEC\\u5EA6\\u3002\",\"\\u6C34\\u5E73\\u6372\\u8EF8\\u7684\\u9AD8\\u5EA6\\u3002\",\"\\u63A7\\u5236\\u9805\\u6309\\u4E00\\u4E0B\\u662F\\u5426\\u6309\\u9801\\u9762\\u6EFE\\u52D5\\u6216\\u8DF3\\u5230\\u6309\\u4E00\\u4E0B\\u4F4D\\u7F6E\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u9192\\u76EE\\u63D0\\u793A\\u6240\\u6709\\u975E\\u57FA\\u672C\\u7684 ASCII \\u5B57\\u5143\\u3002\\u53EA\\u6709\\u4ECB\\u65BC U+0020\\u548C U+007E\\u3001tab\\u3001\\u63DB\\u884C\\u548C\\u6B78\\u4F4D\\u5B57\\u5143\\u4E4B\\u9593\\u7684\\u5B57\\u5143\\u6703\\u8996\\u70BA\\u57FA\\u672C ASCII\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u53EA\\u4FDD\\u7559\\u7A7A\\u683C\\u6216\\u5B8C\\u5168\\u6C92\\u6709\\u5BEC\\u5EA6\\u4E4B\\u5B57\\u5143\\u7684\\u9192\\u76EE\\u63D0\\u793A\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u9192\\u76EE\\u63D0\\u793A\\u8207\\u57FA\\u672C ASCII \\u5B57\\u5143\\u6DF7\\u6DC6\\u7684\\u5B57\\u5143\\uFF0C\\u4F46\\u76EE\\u524D\\u4F7F\\u7528\\u8005\\u5730\\u5340\\u8A2D\\u5B9A\\u4E2D\\u901A\\u7528\\u7684\\u5B57\\u5143\\u9664\\u5916\\u3002\",\"\\u63A7\\u5236\\u8A3B\\u89E3\\u4E2D\\u7684\\u5B57\\u5143\\u662F\\u5426\\u4E5F\\u61C9\\u53D7\\u5230 Unicode \\u9192\\u76EE\\u63D0\\u793A\\u3002\",\"\\u63A7\\u5236\\u5B57\\u4E32\\u4E2D\\u7684\\u5B57\\u5143\\u662F\\u5426\\u4E5F\\u61C9\\u53D7\\u5230 Unicode \\u9192\\u76EE\\u63D0\\u793A\\u3002\",\"\\u5B9A\\u7FA9\\u672A\\u9192\\u76EE\\u63D0\\u793A\\u7684\\u5141\\u8A31\\u5B57\\u5143\\u3002\",\"\\u4E0D\\u6703\\u5C07\\u5141\\u8A31\\u5730\\u5340\\u8A2D\\u7F6E\\u4E2D\\u5E38\\u898B\\u7684 Unicode \\u5B57\\u5143\\u5F37\\u8ABF\\u986F\\u793A\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u8981\\u5728\\u7DE8\\u8F2F\\u5668\\u4E2D\\u81EA\\u52D5\\u986F\\u793A\\u5167\\u5D4C\\u5EFA\\u8B70\\u3002\",\"\\u6BCF\\u7576\\u986F\\u793A\\u5167\\u5D4C\\u5EFA\\u8B70\\u6642\\uFF0C\\u986F\\u793A\\u5167\\u5D4C\\u5EFA\\u8B70\\u5DE5\\u5177\\u5217\\u3002\",\"\\u6BCF\\u7576\\u6E38\\u6A19\\u505C\\u7559\\u5728\\u5167\\u5D4C\\u5EFA\\u8B70\\u4E0A\\u65B9\\u6642\\uFF0C\\u986F\\u793A\\u5167\\u5D4C\\u5EFA\\u8B70\\u5DE5\\u5177\\u5217\\u3002\",\"\\u63A7\\u5236\\u4F55\\u6642\\u986F\\u793A\\u5167\\u5D4C\\u5EFA\\u8B70\\u5DE5\\u5177\\u5217\\u3002\",\"\\u63A7\\u5236\\u5167\\u5D4C\\u5EFA\\u8B70\\u5982\\u4F55\\u8207\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E92\\u52D5\\u3002\\u5982\\u679C\\u555F\\u7528\\uFF0C\\u6709\\u53EF\\u7528\\u7684\\u5167\\u5D4C\\u5EFA\\u8B70\\u6642\\uFF0C\\u4E0D\\u6703\\u81EA\\u52D5\\u986F\\u793A\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u555F\\u7528\\u6210\\u5C0D\\u65B9\\u62EC\\u5F27\\u8457\\u8272\\u3002\\u4F7F\\u7528 {0} \\u8986\\u5BEB\\u62EC\\u5F27\\u4EAE\\u986F\\u984F\\u8272\\u3002\",\"\\u63A7\\u5236\\u6BCF\\u500B\\u62EC\\u5F27\\u985E\\u578B\\u662F\\u5426\\u6709\\u81EA\\u5DF1\\u7684\\u7368\\u7ACB\\u8272\\u5F69\\u96C6\\u5340\\u3002\",\"\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u53EA\\u555F\\u7528\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u7D44\\u7684\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u505C\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u555F\\u7528\\u6210\\u5C0D\\u65B9\\u62EC\\u5F27\\u6307\\u5357\\u3002\",\"\\u555F\\u7528\\u6C34\\u5E73\\u8F14\\u52A9\\u7DDA\\u4F5C\\u70BA\\u5782\\u76F4\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u7684\\u65B0\\u589E\\u529F\\u80FD\\u3002\",\"\\u53EA\\u555F\\u7528\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u7684\\u6C34\\u5E73\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u505C\\u7528\\u6C34\\u5E73\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u555F\\u7528\\u6C34\\u5E73\\u6210\\u5C0D\\u65B9\\u62EC\\u5F27\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u9192\\u76EE\\u63D0\\u793A\\u4F7F\\u7528\\u4E2D\\u7684\\u6210\\u5C0D\\u62EC\\u5F27\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u986F\\u793A\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u9192\\u76EE\\u63D0\\u793A\\u4F7F\\u7528\\u4E2D\\u7684\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u5373\\u4F7F\\u9192\\u76EE\\u63D0\\u793A\\u62EC\\u5F27\\u8F14\\u52A9\\u7DDA\\uFF0C\\u4ECD\\u9192\\u76EE\\u63D0\\u793A\\u4F7F\\u7528\\u4E2D\\u7684\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u4E0D\\u8981\\u9192\\u76EE\\u63D0\\u793A\\u4F7F\\u7528\\u4E2D\\u7684\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u9192\\u76EE\\u63D0\\u793A\\u4F7F\\u7528\\u4E2D\\u7684\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u63D2\\u5165\\u5EFA\\u8B70\\u800C\\u4E0D\\u8986\\u5BEB\\u6E38\\u6A19\\u65C1\\u7684\\u6587\\u5B57\\u3002\",\"\\u63D2\\u5165\\u5EFA\\u8B70\\u4E26\\u8986\\u5BEB\\u6E38\\u6A19\\u65C1\\u7684\\u6587\\u5B57\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u8981\\u5728\\u63A5\\u53D7\\u5B8C\\u6210\\u6642\\u8986\\u5BEB\\u5B57\\u7D44\\u3002\\u8ACB\\u6CE8\\u610F\\uFF0C\\u9019\\u53D6\\u6C7A\\u65BC\\u52A0\\u5165\\u6B64\\u529F\\u80FD\\u7684\\u5EF6\\u4F38\\u6A21\\u7D44\\u3002\",\"\\u63A7\\u5236\\u5C0D\\u65BC\\u62DA\\u932F\\u5B57\\u662F\\u5426\\u9032\\u884C\\u7BE9\\u9078\\u548C\\u6392\\u5E8F\\u5176\\u5EFA\\u8B70\",\"\\u63A7\\u5236\\u6392\\u5E8F\\u662F\\u5426\\u504F\\u597D\\u6E38\\u6A19\\u9644\\u8FD1\\u7684\\u5B57\\u7D44\\u3002\",\"\\u63A7\\u5236\\u8A18\\u9304\\u7684\\u5EFA\\u8B70\\u9078\\u53D6\\u9805\\u76EE\\u662F\\u5426\\u5728\\u591A\\u500B\\u5DE5\\u4F5C\\u5340\\u548C\\u8996\\u7A97\\u9593\\u5171\\u7528 (\\u9700\\u8981 `#editor.suggestSelection#`)\\u3002\",\"\\u81EA\\u52D5\\u89F8\\u767C IntelliSense \\u6642\\u4E00\\u5F8B\\u9078\\u53D6\\u5EFA\\u8B70\\u3002\",\"\\u81EA\\u52D5\\u89F8\\u767C IntelliSense \\u6642\\u6C38\\u4E0D\\u9078\\u53D6\\u5EFA\\u8B70\\u3002\",\"\\u53EA\\u6709\\u5728\\u5F9E\\u89F8\\u767C\\u5B57\\u5143\\u89F8\\u767C IntelliSense \\u6642\\uFF0C\\u624D\\u9078\\u53D6\\u5EFA\\u8B70\\u3002\",\"\\u53EA\\u6709\\u5728\\u60A8\\u8F38\\u5165\\u6642\\u89F8\\u767C IntelliSense \\u6642\\uFF0C\\u624D\\u9078\\u53D6\\u5EFA\\u8B70\\u3002\",\"\\u63A7\\u5236\\u5C0F\\u5DE5\\u5177\\u986F\\u793A\\u6642\\u662F\\u5426\\u9078\\u53D6\\u5EFA\\u8B70\\u3002\\u8ACB\\u6CE8\\u610F\\uFF0C\\u9019\\u53EA\\u9069\\u7528\\u65BC('#editor.quickSuggestions#' \\u548C '#editor.suggestOnTriggerCharacters#') \\u81EA\\u52D5\\u89F8\\u767C\\u7684\\u5EFA\\u8B70\\uFF0C\\u800C\\u4E14\\u4E00\\u5F8B\\u6703\\u5728\\u660E\\u78BA\\u53EB\\u7528\\u6642\\u9078\\u53D6\\u5EFA\\u8B70\\uFF0C\\u4F8B\\u5982\\u900F\\u904E 'Ctrl+Space'\\u3002\",\"\\u63A7\\u5236\\u6B63\\u5728\\u4F7F\\u7528\\u7684\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u662F\\u5426\\u6703\\u907F\\u514D\\u5FEB\\u901F\\u5EFA\\u8B70\\u3002\",\"\\u63A7\\u5236\\u8981\\u5728\\u5EFA\\u8B70\\u4E2D\\u986F\\u793A\\u6216\\u96B1\\u85CF\\u5716\\u793A\\u3002\",\"\\u63A7\\u5236\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u5E95\\u4E0B\\u7684\\u72C0\\u614B\\u5217\\u53EF\\u898B\\u5EA6\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u8981\\u5728\\u7DE8\\u8F2F\\u5668\\u4E2D\\u9810\\u89BD\\u5EFA\\u8B70\\u7D50\\u679C\\u3002\",\"\\u63A7\\u5236\\u5EFA\\u8B70\\u8A73\\u7D30\\u8CC7\\u6599\\u662F\\u4EE5\\u5167\\u5D4C\\u65BC\\u6A19\\u7C64\\u7684\\u65B9\\u5F0F\\u986F\\u793A\\uFF0C\\u9084\\u662F\\u53EA\\u5728\\u8A73\\u7D30\\u8CC7\\u6599\\u5C0F\\u5DE5\\u5177\\u4E2D\\u986F\\u793A\\u3002\",\"\\u6B64\\u8A2D\\u5B9A\\u5DF2\\u6DD8\\u6C70\\u3002\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u73FE\\u53EF\\u8ABF\\u6574\\u5927\\u5C0F\\u3002\",\"\\u6B64\\u8A2D\\u5B9A\\u5DF2\\u6DD8\\u6C70\\uFF0C\\u8ACB\\u6539\\u7528 'editor.suggest.showKeywords' \\u6216 'editor.suggest.showSnippets' \\u7B49\\u55AE\\u7368\\u8A2D\\u5B9A\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u65B9\\u6CD5\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u51FD\\u5F0F\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u5EFA\\u69CB\\u51FD\\u5F0F\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u5DF2\\u53D6\\u4EE3\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u7BE9\\u9078\\u6703\\u8981\\u6C42\\u7B2C\\u4E00\\u500B\\u5B57\\u5143\\u7B26\\u5408\\u6587\\u5B57\\u958B\\u982D\\uFF0C\\u4F8B\\u5982 `Console` \\u6216 `WebCoNtext` \\u4E0A\\u7684 `c`\\uFF0C\\u4F46\\u4E0D\\u662F `description` \\u4E0A\\u7684 _not_\\u3002\\u505C\\u7528\\u6642\\uFF0CIntelliSense \\u6703\\u986F\\u793A\\u66F4\\u591A\\u7D50\\u679C\\uFF0C\\u4F46\\u4ECD\\u6703\\u4F9D\\u76F8\\u7B26\\u54C1\\u8CEA\\u6392\\u5E8F\\u7D50\\u679C\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u6B04\\u4F4D\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u8B8A\\u6578\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u985E\\u5225\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u7D50\\u69CB\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u4ECB\\u9762\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u6A21\\u7D44\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u5C6C\\u6027\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u4E8B\\u4EF6\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u904B\\u7B97\\u5B50\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u55AE\\u4F4D\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u503C\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u5E38\\u6578\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u5217\\u8209\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300CenumMember\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u95DC\\u9375\\u5B57\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u6587\\u5B57\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u8272\\u5F69\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u6A94\\u6848\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u53C3\\u8003\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300Ccustomcolor\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u8CC7\\u6599\\u593E\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300CtypeParameter\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u986F\\u793A\\u300C\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u300D\\u5EFA\\u8B70\\u3002\",\"\\u555F\\u7528\\u4E4B\\u5F8C\\uFF0CIntelliSense \\u6703\\u986F\\u793A `user`-suggestions\\u3002\",\"\\u555F\\u7528\\u6642\\uFF0CIntelliSense \\u6703\\u986F\\u793A `issues`-suggestions\\u3002\",\"\\u662F\\u5426\\u61C9\\u4E00\\u5F8B\\u9078\\u53D6\\u524D\\u7F6E\\u548C\\u5F8C\\u7F6E\\u7684\\u7A7A\\u767D\\u5B57\\u5143\\u3002\",\"\\u662F\\u5426\\u61C9\\u8A72\\u9078\\u53D6\\u5B50\\u8A5E (\\u4F8B\\u5982 'fooBar' \\u6216 'foo_bar' \\u4E2D\\u7684 'foo')\\u3002\",\"\\u7121\\u7E2E\\u6392\\u3002\\u63DB\\u884C\\u5F9E\\u7B2C 1 \\u5217\\u958B\\u59CB\\u3002\",\"\\u63DB\\u884C\\u7684\\u7E2E\\u6392\\u6703\\u8207\\u7236\\u884C\\u76F8\\u540C\\u3002\",\"\\u63DB\\u884C\\u7684\\u7E2E\\u6392\\u70BA\\u7236\\u884C +1\\u3002\",\"\\u63DB\\u884C\\u7E2E\\u6392\\u70BA\\u7236\\u884C +2\\u3002\",\"\\u63A7\\u5236\\u63DB\\u884C\\u7684\\u7E2E\\u6392\\u3002\",\"\\u63A7\\u5236\\u60A8\\u662F\\u5426\\u53EF\\u4EE5\\u6309\\u4F4F `shift` \\u9375 (\\u800C\\u975E\\u5728\\u7DE8\\u8F2F\\u5668\\u4E2D\\u958B\\u555F\\u6A94\\u6848)\\uFF0C\\u5C07\\u6A94\\u6848\\u62D6\\u653E\\u5230\\u6587\\u5B57\\u7DE8\\u8F2F\\u5668\\u4E2D\\u3002\",\"\\u63A7\\u5236\\u5C07\\u6A94\\u6848\\u653E\\u5165\\u7DE8\\u8F2F\\u5668\\u6642\\u662F\\u5426\\u986F\\u793A\\u5C0F\\u5DE5\\u5177\\u3002\\u6B64\\u5C0F\\u5DE5\\u5177\\u53EF\\u8B93\\u60A8\\u63A7\\u5236\\u6A94\\u6848\\u7684\\u7F6E\\u653E\\u65B9\\u5F0F\\u3002\",\"\\u5C07\\u6A94\\u6848\\u653E\\u5165\\u7DE8\\u8F2F\\u5668\\u5F8C\\u986F\\u793A\\u7F6E\\u653E\\u9078\\u53D6\\u5668\\u5C0F\\u5DE5\\u5177\\u3002\",\"\\u6C38\\u4E0D\\u986F\\u793A\\u7F6E\\u653E\\u9078\\u53D6\\u5668\\u5C0F\\u5DE5\\u5177\\u3002\\u6539\\u70BA\\u4E00\\u5F8B\\u4F7F\\u7528\\u9810\\u8A2D\\u7F6E\\u653E\\u63D0\\u4F9B\\u8005\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u53EF\\u4EE5\\u4EE5\\u4E0D\\u540C\\u65B9\\u5F0F\\u8CBC\\u4E0A\\u5167\\u5BB9\\u3002\",\"\\u63A7\\u5236\\u5C07\\u5167\\u5BB9\\u8CBC\\u4E0A\\u81F3\\u7DE8\\u8F2F\\u5668\\u6642\\u662F\\u5426\\u986F\\u793A\\u5C0F\\u5DE5\\u5177\\u3002\\u6B64\\u5C0F\\u5DE5\\u5177\\u53EF\\u8B93\\u60A8\\u63A7\\u5236\\u6A94\\u6848\\u7684\\u8CBC\\u4E0A\\u65B9\\u5F0F\\u3002\",\"\\u5C07\\u5167\\u5BB9\\u8CBC\\u4E0A\\u7DE8\\u8F2F\\u5668\\u5F8C\\u986F\\u793A\\u8CBC\\u4E0A\\u9078\\u53D6\\u5668\\u5C0F\\u5DE5\\u5177\\u3002\",\"\\u6C38\\u4E0D\\u986F\\u793A\\u8CBC\\u4E0A\\u9078\\u53D6\\u5668\\u5C0F\\u5DE5\\u5177\\u3002\\u800C\\u662F\\u4E00\\u5F8B\\u4F7F\\u7528\\u9810\\u8A2D\\u7684\\u8CBC\\u4E0A\\u884C\\u70BA\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u900F\\u904E\\u63D0\\u4EA4\\u5B57\\u5143\\u63A5\\u53D7\\u5EFA\\u8B70\\u3002\\u4F8B\\u5982\\u5728 JavaScript \\u4E2D\\uFF0C\\u5206\\u865F (';') \\u53EF\\u4EE5\\u662F\\u63A5\\u53D7\\u5EFA\\u8B70\\u4E26\\u9375\\u5165\\u8A72\\u5B57\\u5143\\u7684\\u63D0\\u4EA4\\u5B57\\u5143\\u3002\",\"\\u5728\\u5EFA\\u8B70\\u9032\\u884C\\u6587\\u5B57\\u8B8A\\u66F4\\u6642\\uFF0C\\u50C5\\u900F\\u904E `Enter` \\u63A5\\u53D7\\u5EFA\\u8B70\\u3002\",\"\\u63A7\\u5236\\u9664\\u4E86 'Tab' \\u5916\\uFF0C\\u662F\\u5426\\u4E5F\\u900F\\u904E 'Enter' \\u63A5\\u53D7\\u5EFA\\u8B70\\u3002\\u9019\\u6709\\u52A9\\u65BC\\u907F\\u514D\\u6DF7\\u6DC6\\u8981\\u63D2\\u5165\\u65B0\\u884C\\u6216\\u63A5\\u53D7\\u5EFA\\u8B70\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u4E2D\\u53EF\\u4E00\\u6B21\\u7531\\u87A2\\u5E55\\u52A9\\u8B80\\u7A0B\\u5F0F\\u8B80\\u51FA\\u7684\\u884C\\u6578\\u3002\\u5075\\u6E2C\\u5230\\u87A2\\u5E55\\u52A9\\u8B80\\u7A0B\\u5F0F\\u6642\\u6703\\u81EA\\u52D5\\u9810\\u8A2D\\u70BA 500\\u3002\\u8B66\\u544A: \\u82E5\\u6578\\u5B57\\u8D85\\u904E\\u9810\\u8A2D\\uFF0C\\u53EF\\u80FD\\u6703\\u5C0D\\u6548\\u80FD\\u6709\\u6240\\u5F71\\u97FF\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5167\\u5BB9\",\"\\u63A7\\u5236\\u87A2\\u5E55\\u52A9\\u8B80\\u7A0B\\u5F0F\\u662F\\u5426\\u5BA3\\u544A\\u5167\\u5D4C\\u5EFA\\u8B70\\u3002\",\"\\u4F7F\\u7528\\u8A9E\\u8A00\\u914D\\u7F6E\\u78BA\\u5B9A\\u4F55\\u6642\\u81EA\\u52D5\\u95DC\\u9589\\u62EC\\u865F\\u3002\",\"\\u50C5\\u7576\\u6E38\\u6A19\\u4F4D\\u65BC\\u7A7A\\u767D\\u7684\\u5DE6\\u5074\\u6642\\u81EA\\u52D5\\u95DC\\u9589\\u62EC\\u865F\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u5728\\u4F7F\\u7528\\u8005\\u65B0\\u589E\\u5DE6\\u62EC\\u5F27\\u5F8C\\uFF0C\\u81EA\\u52D5\\u52A0\\u4E0A\\u53F3\\u62EC\\u5F27\\u3002\",\"\\u50C5\\u5728\\u81EA\\u52D5\\u63D2\\u5165\\u76F8\\u9130\\u7684\\u53F3\\u5F15\\u865F\\u6216\\u62EC\\u5F27\\u6642\\uFF0C\\u624D\\u5C07\\u5176\\u79FB\\u9664\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u5728\\u522A\\u9664\\u6642\\u79FB\\u9664\\u76F8\\u9130\\u7684\\u53F3\\u5F15\\u865F\\u6216\\u62EC\\u5F27\\u3002\",\"\\u50C5\\u5728\\u81EA\\u52D5\\u63D2\\u5165\\u53F3\\u5F15\\u865F\\u6216\\u62EC\\u865F\\u6642\\uFF0C\\u624D\\u5728\\u5176\\u4E0A\\u65B9\\u9375\\u5165\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u5728\\u53F3\\u5F15\\u865F\\u6216\\u62EC\\u865F\\u4E0A\\u9375\\u5165\\u3002\",\"\\u4F7F\\u7528\\u8A9E\\u8A00\\u914D\\u7F6E\\u78BA\\u5B9A\\u4F55\\u6642\\u81EA\\u52D5\\u95DC\\u9589\\u5F15\\u865F\\u3002\",\"\\u50C5\\u7576\\u6E38\\u6A19\\u4F4D\\u65BC\\u7A7A\\u767D\\u7684\\u5DE6\\u5074\\u6642\\u81EA\\u52D5\\u95DC\\u9589\\u5F15\\u865F\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u5728\\u4F7F\\u7528\\u8005\\u65B0\\u589E\\u958B\\u59CB\\u5F15\\u865F\\u5F8C\\uFF0C\\u81EA\\u52D5\\u52A0\\u4E0A\\u95DC\\u9589\\u5F15\\u865F\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u4E0D\\u6703\\u81EA\\u52D5\\u63D2\\u5165\\u7E2E\\u6392\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u6703\\u4FDD\\u7559\\u76EE\\u524D\\u884C\\u7684\\u7E2E\\u6392\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u6703\\u4FDD\\u7559\\u76EE\\u524D\\u884C\\u7684\\u7E2E\\u6392\\u4E26\\u63A5\\u53D7\\u8A9E\\u8A00\\u5B9A\\u7FA9\\u7684\\u62EC\\u865F\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u6703\\u76EE\\u524D\\u884C\\u7684\\u7E2E\\u6392\\u3001\\u63A5\\u53D7\\u8A9E\\u8A00\\u5B9A\\u7FA9\\u7684\\u62EC\\u865F\\u4E26\\u53EB\\u7528\\u8A9E\\u8A00\\u5B9A\\u7FA9\\u7684\\u7279\\u6B8A onEnterRules\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u6703\\u4FDD\\u7559\\u76EE\\u524D\\u884C\\u7684\\u7E2E\\u6392\\u3001\\u63A5\\u53D7\\u8A9E\\u8A00\\u5B9A\\u7FA9\\u7684\\u62EC\\u865F\\u4E26\\u53EB\\u7528\\u8A9E\\u8A00\\u5B9A\\u7FA9\\u7684\\u7279\\u6B8A onEnterRules \\u4E26\\u63A5\\u53D7\\u8A9E\\u8A00\\u5B9A\\u7FA9\\u7684 indentationRules\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u5728\\u4F7F\\u7528\\u8005\\u9375\\u5165\\u3001\\u8CBC\\u4E0A\\u3001\\u79FB\\u52D5\\u6216\\u7E2E\\u6392\\u884C\\u6642\\u81EA\\u52D5\\u8ABF\\u6574\\u7E2E\\u6392\\u3002\",\"\\u4F7F\\u7528\\u8A9E\\u8A00\\u7D44\\u614B\\u4F86\\u6C7A\\u5B9A\\u4F55\\u6642\\u81EA\\u52D5\\u74B0\\u7E5E\\u9078\\u53D6\\u9805\\u76EE\\u3002\",\"\\u7528\\u5F15\\u865F\\u62EC\\u4F4F\\uFF0C\\u800C\\u975E\\u4F7F\\u7528\\u62EC\\u5F27\\u3002\",\"\\u7528\\u62EC\\u5F27\\u62EC\\u4F4F\\uFF0C\\u800C\\u975E\\u4F7F\\u7528\\u5F15\\u865F\\u3002 \",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u5728\\u9375\\u5165\\u5F15\\u865F\\u6216\\u62EC\\u5F27\\u6642\\u81EA\\u52D5\\u5305\\u570D\\u9078\\u53D6\\u7BC4\\u570D\\u3002\",\"\\u7576\\u4F7F\\u7528\\u7A7A\\u683C\\u9032\\u884C\\u7E2E\\u6392\\u6642\\uFF0C\\u6703\\u6A21\\u64EC\\u5B9A\\u4F4D\\u5B57\\u5143\\u7684\\u9078\\u53D6\\u8868\\u73FE\\u65B9\\u5F0F\\u3002\\u9078\\u53D6\\u7BC4\\u570D\\u6703\\u4F9D\\u5FAA\\u5B9A\\u4F4D\\u505C\\u99D0\\u9EDE\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u986F\\u793A codelens\\u3002\",\"\\u63A7\\u5236 CodeLens \\u7684\\u5B57\\u578B\\u5BB6\\u65CF\\u3002\",\"\\u63A7\\u5236 CodeLens \\u7684\\u5B57\\u578B\\u5927\\u5C0F (\\u50CF\\u7D20)\\u3002\\u8A2D\\u5B9A\\u70BA 0 \\u6642\\uFF0C\\u6703\\u4F7F\\u7528 90% \\u7684 `#editor.fontSize#`\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u8F49\\u8B6F\\u5167\\u5D4C\\u8272\\u5F69\\u88DD\\u98FE\\u9805\\u76EE\\u8207\\u8272\\u5F69\\u9078\\u64C7\\u5668\\u3002\",\"\\u8B93\\u8272\\u5F69\\u9078\\u64C7\\u5668\\u5728\\u6309\\u4E00\\u4E0B\\u548C\\u505C\\u99D0\\u8272\\u5F69\\u5728\\u88DD\\u98FE\\u9805\\u76EE\\u4E0A\\u6642\\u51FA\\u73FE\",\"\\u8B93\\u8272\\u5F69\\u9078\\u64C7\\u5668\\u5728\\u505C\\u99D0\\u8272\\u5F69\\u88DD\\u98FE\\u9805\\u76EE\\u6642\\u51FA\\u73FE\",\"\\u8B93\\u8272\\u5F69\\u9078\\u64C7\\u5668\\u5728\\u6309\\u4E00\\u4E0B\\u8272\\u5F69\\u88DD\\u98FE\\u9805\\u76EE\\u6642\\u51FA\\u73FE\",\"\\u63A7\\u5236\\u689D\\u4EF6\\uFF0C\\u8B93\\u8272\\u5F69\\u9078\\u64C7\\u5668\\u5F9E\\u8272\\u5F69\\u88DD\\u98FE\\u9805\\u76EE\\u51FA\\u73FE\",\"\\u63A7\\u5236\\u4E00\\u6B21\\u53EF\\u5728\\u7DE8\\u8F2F\\u5668\\u4E2D\\u5448\\u73FE\\u7684\\u8272\\u5F69\\u88DD\\u98FE\\u9805\\u76EE\\u6700\\u5927\\u6578\\u76EE\\u3002\",\"\\u555F\\u7528\\u5373\\u53EF\\u4EE5\\u6ED1\\u9F20\\u8207\\u6309\\u9375\\u9078\\u53D6\\u9032\\u884C\\u8CC7\\u6599\\u884C\\u9078\\u53D6\\u3002\",\"\\u63A7\\u5236\\u8A9E\\u6CD5\\u9192\\u76EE\\u63D0\\u793A\\u662F\\u5426\\u61C9\\u8907\\u88FD\\u5230\\u526A\\u8CBC\\u7C3F\\u3002\",\"\\u63A7\\u5236\\u8CC7\\u6599\\u6307\\u6A19\\u52D5\\u756B\\u6A23\\u5F0F\\u3002\",\"\\u5E73\\u6ED1\\u63D2\\u5165\\u865F\\u52D5\\u756B\\u5DF2\\u505C\\u7528\\u3002\",\"\\u53EA\\u6709\\u7576\\u4F7F\\u7528\\u8005\\u4F7F\\u7528\\u660E\\u78BA\\u624B\\u52E2\\u79FB\\u52D5\\u6E38\\u6A19\\u6642\\uFF0C\\u624D\\u6703\\u555F\\u7528\\u5E73\\u6ED1\\u63D2\\u5165\\u865F\\u52D5\\u756B\\u3002\",\"\\u6C38\\u9060\\u555F\\u7528\\u5E73\\u6ED1\\u63D2\\u5165\\u865F\\u52D5\\u756B\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u61C9\\u555F\\u7528\\u5E73\\u6ED1\\u63D2\\u5165\\u9EDE\\u52D5\\u756B\\u3002 \",\"\\u63A7\\u5236\\u8CC7\\u6599\\u6307\\u6A19\\u6A23\\u5F0F\\u3002\",\"\\u63A7\\u5236\\u6E38\\u6A19\\u4E0A\\u4E0B\\u5468\\u570D\\u53EF\\u986F\\u793A\\u7684\\u524D\\u7F6E\\u7DDA (\\u6700\\u5C0F\\u70BA 0) \\u548C\\u5F8C\\u7F6E\\u7DDA (\\u6700\\u5C0F\\u70BA 1) \\u7684\\u6700\\u5C0F\\u6578\\u76EE\\u3002\\u5728\\u67D0\\u4E9B\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7A31\\u70BA 'scrollOff' \\u6216 'scrollOffset'\\u3002\",\"\\u53EA\\u6709\\u901A\\u904E\\u9375\\u76E4\\u6216 API \\u89F8\\u767C\\u6642\\uFF0C\\u624D\\u6703\\u65BD\\u884C `cursorSurroundingLines`\\u3002\",\"\\u4E00\\u5F8B\\u5F37\\u5236\\u57F7\\u884C `cursorSurroundingLines`\",\"\\u63A7\\u5236\\u61C9\\u65BD\\u884C `cursorSurroundingLines` \\u7684\\u6642\\u6A5F\\u3002\",\"\\u63A7\\u5236\\u6E38\\u6A19\\u5BEC\\u5EA6\\uFF0C\\u7576 `#editor.cursorStyle#` \\u8A2D\\u5B9A\\u70BA `line` \\u6642\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u5141\\u8A31\\u900F\\u904E\\u62D6\\u653E\\u4F86\\u79FB\\u52D5\\u9078\\u53D6\\u9805\\u76EE\\u3002\",\"\\u4F7F\\u7528\\u65B0\\u7684 svg \\u8F49\\u8B6F\\u65B9\\u6CD5\\u3002\",\"\\u4F7F\\u7528\\u5177\\u6709\\u5B57\\u578B\\u5B57\\u5143\\u7684\\u65B0\\u8F49\\u8B6F\\u65B9\\u6CD5\\u3002\",\"\\u4F7F\\u7528\\u7A69\\u5B9A\\u8F49\\u8B6F\\u65B9\\u6CD5\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u4F7F\\u7528\\u65B0\\u7684\\u5BE6\\u9A57\\u6027\\u65B9\\u6CD5\\u4F86\\u5448\\u73FE\\u7A7A\\u767D\\u5B57\\u5143\\u3002\",\"\\u6309\\u4E0B `Alt` \\u6642\\u7684\\u6372\\u52D5\\u901F\\u5EA6\\u4E58\\u6578\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u555F\\u7528\\u7A0B\\u5F0F\\u78BC\\u647A\\u758A\\u529F\\u80FD\\u3002\",\"\\u4F7F\\u7528\\u8A9E\\u8A00\\u7279\\u5B9A\\u647A\\u758A\\u7B56\\u7565 (\\u5982\\u679C\\u53EF\\u7528)\\uFF0C\\u5426\\u5247\\u4F7F\\u7528\\u7E2E\\u6392\\u5F0F\\u7B56\\u7565\\u3002\",\"\\u4F7F\\u7528\\u7E2E\\u6392\\u5F0F\\u647A\\u758A\\u7B56\\u7565\\u3002\",\"\\u63A7\\u5236\\u8A08\\u7B97\\u8CC7\\u6599\\u593E\\u7BC4\\u570D\\u7684\\u7B56\\u7565\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u5C07\\u6298\\u758A\\u7684\\u7BC4\\u570D\\u9192\\u76EE\\u63D0\\u793A\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6703\\u81EA\\u52D5\\u647A\\u758A\\u532F\\u5165\\u7BC4\\u570D\\u3002\",\"\\u53EF\\u647A\\u758A\\u5340\\u57DF\\u7684\\u6578\\u76EE\\u4E0A\\u9650\\u3002\\u589E\\u52A0\\u6B64\\u503C\\u53EF\\u80FD\\u6703\\u9020\\u6210\\u7576\\u76EE\\u524D\\u7684\\u4F86\\u6E90\\u6709\\u5927\\u91CF\\u53EF\\u647A\\u758A\\u5340\\u57DF\\u6642\\uFF0C\\u7DE8\\u8F2F\\u5668\\u7684\\u56DE\\u61C9\\u901F\\u5EA6\\u8B8A\\u6162\\u3002\",\"\\u63A7\\u5236\\u6309\\u4E00\\u4E0B\\u5DF2\\u6298\\u758A\\u884C\\u5F8C\\u65B9\\u7684\\u7A7A\\u767D\\u5167\\u5BB9\\u662F\\u5426\\u6703\\u5C55\\u958B\\u884C\\u3002\",\"\\u63A7\\u5236\\u5B57\\u578B\\u5BB6\\u65CF\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u81EA\\u52D5\\u70BA\\u8CBC\\u4E0A\\u7684\\u5167\\u5BB9\\u8A2D\\u5B9A\\u683C\\u5F0F\\u3002\\u5FC5\\u9808\\u6709\\u53EF\\u7528\\u7684\\u683C\\u5F0F\\u5668\\uFF0C\\u800C\\u4E14\\u683C\\u5F0F\\u5668\\u61C9\\u80FD\\u5920\\u70BA\\u6587\\u4EF6\\u4E2D\\u7684\\u4E00\\u500B\\u7BC4\\u570D\\u8A2D\\u5B9A\\u683C\\u5F0F\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u81EA\\u52D5\\u5728\\u9375\\u5165\\u5F8C\\u8A2D\\u5B9A\\u884C\\u7684\\u683C\\u5F0F\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u8F49\\u8B6F\\u5782\\u76F4\\u5B57\\u7B26\\u908A\\u754C\\u3002\\u5B57\\u7B26\\u908A\\u754C\\u6700\\u5E38\\u7528\\u4F86\\u9032\\u884C\\u5075\\u932F\\u3002\",\"\\u63A7\\u5236\\u6E38\\u6A19\\u662F\\u5426\\u61C9\\u96B1\\u85CF\\u5728\\u6982\\u89C0\\u5C3A\\u898F\\u4E2D\\u3002\",\"\\u63A7\\u5236\\u5B57\\u6BCD\\u9593\\u8DDD (\\u50CF\\u7D20)\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u5DF2\\u555F\\u7528\\u9023\\u7D50\\u7DE8\\u8F2F\\u3002\\u76F8\\u95DC\\u7B26\\u865F (\\u4F8B\\u5982 HTML \\u6A19\\u7C64) \\u6703\\u6839\\u64DA\\u8A9E\\u8A00\\u5728\\u7DE8\\u8F2F\\u6642\\u66F4\\u65B0\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u5075\\u6E2C\\u9023\\u7D50\\u4E26\\u4F7F\\u5176\\u53EF\\u4F9B\\u9EDE\\u9078\\u3002\",\"\\u5C07\\u7B26\\u5408\\u7684\\u62EC\\u865F\\u9192\\u76EE\\u63D0\\u793A\\u3002\",\"\\u8981\\u7528\\u65BC\\u6ED1\\u9F20\\u6EFE\\u8F2A\\u6372\\u52D5\\u4E8B\\u4EF6 `deltaX` \\u548C `deltaY` \\u7684\\u4E58\\u6578\\u3002\",\"\\u4F7F\\u7528\\u6ED1\\u9F20\\u6EFE\\u8F2A\\u4E26\\u6309\\u4F4F `Ctrl` \\u6642\\uFF0C\\u7E2E\\u653E\\u7DE8\\u8F2F\\u5668\\u7684\\u5B57\\u578B\",\"\\u5728\\u591A\\u500B\\u6E38\\u6A19\\u91CD\\u758A\\u6642\\u5C07\\u5176\\u5408\\u4F75\\u3002\",\"\\u5C0D\\u61C9Windows\\u548CLinux\\u7684'Control'\\u8207\\u5C0D\\u61C9 macOS \\u7684'Command'\\u3002\",\"\\u5C0D\\u61C9Windows\\u548CLinux\\u7684'Alt'\\u8207\\u5C0D\\u61C9macOS\\u7684'Option'\\u3002\",\"\\u7528\\u65BC\\u5728\\u6ED1\\u9F20\\u65B0\\u589E\\u591A\\u500B\\u6E38\\u6A19\\u7684\\u4FEE\\u98FE\\u5143\\u3002[\\u79FB\\u81F3\\u5B9A\\u7FA9] \\u548C [\\u958B\\u555F\\u9023\\u7D50] \\u6ED1\\u9F20\\u624B\\u52E2\\u6703\\u52A0\\u4EE5\\u9069\\u61C9\\uFF0C\\u4EE5\\u907F\\u514D\\u8207 [\\u591A\\u500B\\u6E38\\u6A19\\u7684\\u4FEE\\u98FE\\u5143](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier) \\u76F8\\u885D\\u7A81\\u3002\",\"\\u6BCF\\u500B\\u6E38\\u6A19\\u90FD\\u6703\\u8CBC\\u4E0A\\u4E00\\u884C\\u6587\\u5B57\\u3002\",\"\\u6BCF\\u500B\\u6E38\\u6A19\\u90FD\\u6703\\u8CBC\\u4E0A\\u5168\\u6587\\u3002\",\"\\u7576\\u5DF2\\u8CBC\\u4E0A\\u6587\\u5B57\\u7684\\u884C\\u6578\\u8207\\u6E38\\u6A19\\u6578\\u76F8\\u7B26\\u6642\\u63A7\\u5236\\u8CBC\\u4E0A\\u529F\\u80FD\\u3002\",\"\\u63A7\\u5236\\u4E00\\u6B21\\u53EF\\u5728\\u4F5C\\u7528\\u4E2D\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7684\\u6E38\\u6A19\\u6578\\u76EE\\u4E0A\\u9650\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u9192\\u76EE\\u986F\\u793A\\u51FA\\u73FE\\u7684\\u8A9E\\u610F\\u7B26\\u865F\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u61C9\\u5728\\u6982\\u89C0\\u5C3A\\u898F\\u5468\\u570D\\u7E6A\\u88FD\\u6846\\u7DDA\\u3002\",\"\\u958B\\u555F\\u9810\\u89BD\\u6642\\u7126\\u9EDE\\u6A39\\u72C0\",\"\\u958B\\u555F\\u6642\\u805A\\u7126\\u7DE8\\u8F2F\\u5668\",\"\\u63A7\\u5236\\u8981\\u805A\\u7126\\u5167\\u5D4C\\u7DE8\\u8F2F\\u5668\\u6216\\u9810\\u89BD\\u5C0F\\u5DE5\\u5177\\u4E2D\\u7684\\u6A39\\u7CFB\\u3002\",\"\\u63A7\\u5236\\u300C\\u524D\\u5F80\\u5B9A\\u7FA9\\u300D\\u6ED1\\u9F20\\u624B\\u52E2\\uFF0C\\u662F\\u5426\\u4E00\\u5F8B\\u958B\\u555F\\u7784\\u6838\\u5C0F\\u5DE5\\u5177\\u3002\",\"\\u63A7\\u5236\\u5728\\u5FEB\\u901F\\u5EFA\\u8B70\\u986F\\u793A\\u5F8C\\u7684\\u5EF6\\u9072 (\\u4EE5\\u6BEB\\u79D2\\u70BA\\u55AE\\u4F4D)\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6703\\u81EA\\u52D5\\u4F9D\\u985E\\u578B\\u91CD\\u65B0\\u547D\\u540D\\u3002\",\"\\u5DF2\\u6DD8\\u6C70\\uFF0C\\u8ACB\\u6539\\u7528 `editor.linkedEditing`\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u986F\\u793A\\u63A7\\u5236\\u5B57\\u5143\\u3002\",\"\\u5728\\u6A94\\u6848\\u7D50\\u5C3E\\u70BA\\u65B0\\u884C\\u6642\\uFF0C\\u5448\\u73FE\\u6700\\u5F8C\\u4E00\\u884C\\u7684\\u865F\\u78BC\\u3002\",\"\\u9192\\u76EE\\u63D0\\u793A\\u88DD\\u8A02\\u908A\\u548C\\u76EE\\u524D\\u7684\\u884C\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u5982\\u4F55\\u986F\\u793A\\u76EE\\u524D\\u884C\\u7684\\u9192\\u76EE\\u63D0\\u793A\\u3002\",\"\\u63A7\\u5236\\u7576\\u805A\\u7126\\u65BC\\u7DE8\\u8F2F\\u5668\\u6642\\uFF0C\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u50C5\\u8F49\\u8B6F\\u76EE\\u524D\\u884C\\u7684\\u9192\\u76EE\\u63D0\\u793A\\u3002\",\"\\u8F49\\u8B6F\\u7A7A\\u767D\\u5B57\\u5143\\uFF0C\\u4F46\\u6587\\u5B57\\u4E4B\\u9593\\u7684\\u55AE\\u4E00\\u7A7A\\u683C\\u9664\\u5916\\u3002\",\"\\u53EA\\u8F49\\u8B6F\\u6240\\u9078\\u6587\\u5B57\\u7684\\u7A7A\\u767D\\u5B57\\u5143\\u3002\",\"\\u53EA\\u8F49\\u8B6F\\u7D50\\u5C3E\\u7A7A\\u767D\\u5B57\\u5143\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u61C9\\u5982\\u4F55\\u8F49\\u8B6F\\u7A7A\\u767D\\u5B57\\u5143\\u3002\",\"\\u63A7\\u5236\\u9078\\u53D6\\u7BC4\\u570D\\u662F\\u5426\\u6709\\u5713\\u89D2\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u6C34\\u5E73\\u6372\\u52D5\\u7684\\u984D\\u5916\\u5B57\\u5143\\u6578\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6372\\u52D5\\u5230\\u6700\\u5F8C\\u4E00\\u884C\\u4E4B\\u5916\\u3002\",\"\\u540C\\u6642\\u9032\\u884C\\u5782\\u76F4\\u8207\\u6C34\\u5E73\\u6372\\u52D5\\u6642\\uFF0C\\u50C5\\u6CBF\\u4E3B\\u8EF8\\u6372\\u52D5\\u3002\\u907F\\u514D\\u5728\\u8ECC\\u8DE1\\u677F\\u4E0A\\u9032\\u884C\\u5782\\u76F4\\u6372\\u52D5\\u6642\\u767C\\u751F\\u6C34\\u5E73\\u6F02\\u79FB\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u652F\\u63F4 Linux \\u4E3B\\u8981\\u526A\\u8CBC\\u7C3F\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u61C9\\u9192\\u76EE\\u63D0\\u793A\\u8207\\u9078\\u53D6\\u9805\\u76EE\\u985E\\u4F3C\\u7684\\u76F8\\u7B26\\u9805\\u76EE\\u3002\",\"\\u4E00\\u5F8B\\u986F\\u793A\\u647A\\u758A\\u63A7\\u5236\\u9805\\u3002\",\"\\u6C38\\u4E0D\\u986F\\u793A\\u647A\\u758A\\u63A7\\u5236\\u9805\\u8207\\u6E1B\\u5C11\\u88DD\\u8A02\\u908A\\u5927\\u5C0F\\u3002\",\"\\u50C5\\u7576\\u6ED1\\u9F20\\u61F8\\u505C\\u5728\\u6D3B\\u52D5\\u5217\\u4E0A\\u6642\\uFF0C\\u624D\\u986F\\u793A\\u6298\\u758A\\u529F\\u80FD\\u3002\",\"\\u63A7\\u5236\\u647A\\u758A\\u63A7\\u5236\\u9805\\u5728\\u88DD\\u8A02\\u908A\\u4E0A\\u7684\\u986F\\u793A\\u6642\\u6A5F\\u3002\",\"\\u63A7\\u5236\\u672A\\u4F7F\\u7528\\u7A0B\\u5F0F\\u78BC\\u7684\\u6DE1\\u51FA\\u3002\",\"\\u63A7\\u5236\\u5DF2\\u522A\\u9664\\u7684\\u6DD8\\u6C70\\u8B8A\\u6578\\u3002\",\"\\u5C07\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u5EFA\\u8B70\\u986F\\u793A\\u65BC\\u5176\\u4ED6\\u5EFA\\u8B70\\u7684\\u9802\\u7AEF\\u3002\",\"\\u5C07\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u5EFA\\u8B70\\u986F\\u793A\\u65BC\\u5176\\u4ED6\\u5EFA\\u8B70\\u7684\\u4E0B\\u65B9\\u3002\",\"\\u5C07\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u5EFA\\u8B70\\u8207\\u5176\\u4ED6\\u5EFA\\u8B70\\u4E00\\u540C\\u986F\\u793A\\u3002\",\"\\u4E0D\\u986F\\u793A\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u5EFA\\u8B70\\u3002\",\"\\u63A7\\u5236\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u662F\\u5426\\u96A8\\u5176\\u4ED6\\u5EFA\\u8B70\\u986F\\u793A\\uFF0C\\u4EE5\\u53CA\\u5176\\u6392\\u5E8F\\u65B9\\u5F0F\\u3002\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6703\\u4F7F\\u7528\\u52D5\\u756B\\u6372\\u52D5\",\"Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.\",\"\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u7684\\u5B57\\u578B\\u5927\\u5C0F\\u3002\\u7576\\u8A2D\\u5B9A\\u70BA {0} \\u6642\\uFF0C\\u5247\\u6703\\u4F7F\\u7528 {1} \\u7684\\u503C\\u3002\",\"\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u7684\\u884C\\u9AD8\\u3002\\u7576\\u8A2D\\u5B9A\\u70BA {0} \\u6642\\uFF0C\\u5247\\u6703\\u4F7F\\u7528 {1} \\u7684\\u503C\\u3002\\u6700\\u5C0F\\u503C\\u70BA 8\\u3002\",\"\\u63A7\\u5236\\u5EFA\\u8B70\\u662F\\u5426\\u61C9\\u5728\\u9375\\u5165\\u89F8\\u767C\\u5B57\\u5143\\u6642\\u81EA\\u52D5\\u986F\\u793A\\u3002\",\"\\u4E00\\u5F8B\\u9078\\u53D6\\u7B2C\\u4E00\\u500B\\u5EFA\\u8B70\\u3002\",\"\\u9664\\u975E\\u9032\\u4E00\\u6B65\\u9375\\u5165\\u9078\\u53D6\\u4E86\\u5EFA\\u8B70\\uFF0C\\u5426\\u5247\\u9078\\u53D6\\u6700\\u8FD1\\u7684\\u5EFA\\u8B70\\uFF0C\\u4F8B\\u5982 `console.| -> console.log`\\uFF0C\\u539F\\u56E0\\u662F\\u6700\\u8FD1\\u5B8C\\u6210\\u4E86 `log`\\u3002\",\"\\u6839\\u64DA\\u5148\\u524D\\u5DF2\\u5B8C\\u6210\\u8A72\\u5EFA\\u8B70\\u7684\\u524D\\u7F6E\\u8A5E\\u9078\\u53D6\\u5EFA\\u8B70\\uFF0C\\u4F8B\\u5982 `co -> console` \\u548C `con -> const`\\u3002\",\"\\u63A7\\u5236\\u5728\\u986F\\u793A\\u5EFA\\u8B70\\u6E05\\u55AE\\u6642\\u5982\\u4F55\\u9810\\u5148\\u9078\\u53D6\\u5EFA\\u8B70\\u3002\",\"\\u6309 Tab \\u6642\\uFF0CTab \\u5B8C\\u6210\\u6703\\u63D2\\u5165\\u6700\\u7B26\\u5408\\u7684\\u5EFA\\u8B70\\u3002\",\"\\u505C\\u7528 tab \\u9375\\u81EA\\u52D5\\u5B8C\\u6210\\u3002\",\"\\u5728\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u7684\\u9996\\u78BC\\u76F8\\u7B26\\u6642\\u4F7F\\u7528 Tab \\u5B8C\\u6210\\u3002\\u672A\\u555F\\u7528 'quickSuggestions' \\u6642\\u6548\\u679C\\u6700\\u4F73\\u3002\",\"\\u555F\\u7528 tab \\u9375\\u81EA\\u52D5\\u5B8C\\u6210\\u3002\",\"\\u81EA\\u52D5\\u79FB\\u9664\\u7570\\u5E38\\u7684\\u884C\\u7D50\\u675F\\u5B57\\u5143\\u3002\",\"\\u5FFD\\u7565\\u7570\\u5E38\\u7684\\u884C\\u7D50\\u675F\\u5B57\\u5143\\u3002\",\"\\u8981\\u79FB\\u9664\\u4E4B\\u7570\\u5E38\\u7684\\u884C\\u7D50\\u675F\\u5B57\\u5143\\u63D0\\u793A\\u3002\",\"\\u79FB\\u9664\\u53EF\\u80FD\\u5C0E\\u81F4\\u554F\\u984C\\u7684\\u7570\\u5E38\\u884C\\u7D50\\u675F\\u5B57\\u5143\\u3002\",\"\\u63D2\\u5165\\u548C\\u522A\\u9664\\u63A5\\u5728\\u5B9A\\u4F4D\\u505C\\u99D0\\u9EDE\\u5F8C\\u7684\\u7A7A\\u767D\\u5B57\\u5143\\u3002\",\"\\u4F7F\\u7528\\u9810\\u8A2D\\u7684\\u5206\\u884C\\u7B26\\u865F\\u898F\\u5247\\u3002\",\"\\u4E2D\\u6587/\\u65E5\\u6587/\\u97D3\\u6587 (CJK) \\u6587\\u5B57\\u4E0D\\u61C9\\u8A72\\u4F7F\\u7528\\u65B7\\u5B57\\u3002\\u975E\\u4E2D\\u65E5\\u97D3\\u7684\\u6587\\u5B57\\u884C\\u70BA\\u8207\\u4E00\\u822C\\u6587\\u5B57\\u76F8\\u540C\\u3002\",\"\\u63A7\\u5236\\u7528\\u65BC\\u4E2D\\u6587/\\u65E5\\u6587/\\u97D3\\u6587 (CJK) \\u6587\\u5B57\\u7684\\u65B7\\u5B57\\u898F\\u5247\\u3002\",\"\\u5728\\u57F7\\u884C\\u6587\\u5B57\\u76F8\\u95DC\\u5C0E\\u89BD\\u6216\\u4F5C\\u696D\\u6642\\u8981\\u7528\\u4F5C\\u6587\\u5B57\\u5206\\u9694\\u7B26\\u865F\\u7684\\u5B57\\u5143\",\"\\u4E00\\u5F8B\\u4E0D\\u63DB\\u884C\\u3002\",\"\\u4F9D\\u6AA2\\u8996\\u5340\\u5BEC\\u5EA6\\u63DB\\u884C\\u3002\",\"\\u65BC '#editor.wordWrapColumn#' \\u63DB\\u884C\\u3002\",\"\\u7576\\u6AA2\\u8996\\u5340\\u7E2E\\u81F3\\u6700\\u5C0F\\u4E26\\u8A2D\\u5B9A '#editor.wordWrapColumn#' \\u6642\\u63DB\\u884C\\u3002\",\"\\u63A7\\u5236\\u5982\\u4F55\\u63DB\\u884C\\u3002\",\"\\u7576 `#editor.wordWrap#` \\u70BA `wordWrapColumn` \\u6216 `bounded` \\u6642\\uFF0C\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7684\\u8CC7\\u6599\\u884C\\u63DB\\u884C\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u61C9\\u4F7F\\u7528\\u9810\\u8A2D\\u7684\\u6587\\u4EF6\\u8272\\u5F69\\u63D0\\u4F9B\\u8005\\u986F\\u793A\\u5167\\u5D4C\\u8272\\u5F69\\u88DD\\u98FE\",\"\\u63A7\\u5236\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u63A5\\u6536\\u7D22\\u5F15\\u6A19\\u7C64\\uFF0C\\u6216\\u5C07\\u5176\\u5EF6\\u9072\\u81F3\\u5DE5\\u4F5C\\u53F0\\u9032\\u884C\\u6D41\\u89BD\\u3002\"],\"vs/editor/common/core/editorColorRegistry\":[\"\\u76EE\\u524D\\u6E38\\u6A19\\u4F4D\\u7F6E\\u884C\\u7684\\u53CD\\u767D\\u986F\\u793A\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u76EE\\u524D\\u6E38\\u6A19\\u4F4D\\u7F6E\\u884C\\u4E4B\\u5468\\u570D\\u6846\\u7DDA\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u9192\\u76EE\\u63D0\\u793A\\u7BC4\\u570D\\u7684\\u80CC\\u666F\\u8272\\u5F69\\uFF0C\\u4F8B\\u5982\\u5FEB\\u901F\\u958B\\u555F\\u4E26\\u5C0B\\u627E\\u529F\\u80FD\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u53CD\\u767D\\u986F\\u793A\\u7BC4\\u570D\\u5468\\u570D\\u908A\\u6846\\u7684\\u80CC\\u666F\\u984F\\u8272\\u3002\",\"\\u9192\\u76EE\\u63D0\\u793A\\u7B26\\u865F\\u7684\\u80CC\\u666F\\u8272\\u5F69\\uFF0C\\u76F8\\u4F3C\\u65BC\\u524D\\u5F80\\u4E0B\\u4E00\\u500B\\u5B9A\\u7FA9\\u6216\\u524D\\u5F80\\u4E0B\\u4E00\\u500B/\\u4E0A\\u4E00\\u500B\\u7B26\\u865F\\u3002\\u8272\\u5F69\\u5FC5\\u9808\\u900F\\u660E\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u9192\\u76EE\\u63D0\\u793A\\u5468\\u570D\\u7684\\u908A\\u754C\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u6E38\\u6A19\\u7684\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u6E38\\u6A19\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u5141\\u8A31\\u81EA\\u8A02\\u5340\\u584A\\u6E38\\u6A19\\u91CD\\u758A\\u7684\\u5B57\\u5143\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7A7A\\u767D\\u5B57\\u5143\\u7684\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u884C\\u865F\\u7684\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69\\u3002\",\"'editorIndentGuide.background' \\u5DF2\\u88AB\\u53D6\\u4EE3\\u3002\\u8ACB\\u6539\\u7528 'editorIndentGuide.background1'\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69\\u3002\",\"'editorIndentGuide.activeBackground' \\u5DF2\\u88AB\\u53D6\\u4EE3\\u3002\\u8ACB\\u6539\\u7528 'editorIndentGuide.activeBackground1'\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69 (1)\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69 (2)\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69 (3)\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69 (4)\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69 (5)\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69 (6)\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69 (1)\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69 (2)\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69 (3)\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69 (4)\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69 (5)\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u7DE8\\u8F2F\\u5668\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u8272\\u5F69 (6)\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u4F7F\\u7528\\u4E2D\\u884C\\u865F\\u7684\\u8272\\u5F69\",\"Id \\u5DF2\\u53D6\\u4EE3\\u3002\\u8ACB\\u6539\\u7528 'editorLineNumber.activeForeground' \\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u4F7F\\u7528\\u4E2D\\u884C\\u865F\\u7684\\u8272\\u5F69\",\"editor.renderFinalNewline \\u8A2D\\u5B9A\\u70BA\\u6697\\u7070\\u8272\\u6642\\uFF0C\\u6700\\u7D42\\u7DE8\\u8F2F\\u5668\\u7DDA\\u689D\\u7684\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5C3A\\u898F\\u7684\\u8272\\u5F69\",\"\\u7DE8\\u8F2F\\u5668\\u7A0B\\u5F0F\\u78BC\\u6FFE\\u93E1\\u7684\\u524D\\u666F\\u8272\\u5F69\",\"\\u6210\\u5C0D\\u62EC\\u865F\\u80CC\\u666F\\u8272\\u5F69\",\"\\u6210\\u5C0D\\u62EC\\u865F\\u908A\\u6846\\u8272\\u5F69\",\"\\u9810\\u89BD\\u6AA2\\u8996\\u7DE8\\u8F2F\\u5668\\u5C3A\\u898F\\u7684\\u908A\\u6846\\u8272\\u5F69.\",\"\\u7DE8\\u8F2F\\u5668\\u6982\\u89C0\\u5C3A\\u898F\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u908A\\u6846\\u7684\\u80CC\\u666F\\u984F\\u8272,\\u5305\\u542B\\u884C\\u865F\\u8207\\u5B57\\u5F62\\u5716\\u793A\\u7684\\u908A\\u6846.\",\"\\u7DE8\\u8F2F\\u5668\\u4E2D\\u4E0D\\u5FC5\\u8981 (\\u672A\\u4F7F\\u7528) \\u539F\\u59CB\\u7A0B\\u5F0F\\u78BC\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",`\\u7DE8\\u8F2F\\u5668\\u4E2D\\u4E0D\\u5FC5\\u8981 (\\u672A\\u4F7F\\u7528) \\u539F\\u59CB\\u7A0B\\u5F0F\\u78BC\\u7684\\u4E0D\\u900F\\u660E\\u5EA6\\u3002\\u4F8B\\u5982 \"#000000c0\\u201D \\u6703\\u4EE5 75% \\u7684\\u4E0D\\u900F\\u660E\\u5EA6\\u8F49\\u8B6F\\u7A0B\\u5F0F\\u78BC\\u3002\\u91DD\\u5C0D\\u9AD8\\u5C0D\\u6BD4\\u4E3B\\u984C\\uFF0C\\u4F7F\\u7528 'editorUnnecessaryCode.border' \\u4E3B\\u984C\\u8272\\u5F69\\u53EF\\u70BA\\u4E0D\\u5FC5\\u8981\\u7684\\u7A0B\\u5F0F\\u78BC\\u52A0\\u4E0A\\u5E95\\u7DDA\\uFF0C\\u800C\\u4E0D\\u662F\\u5C07\\u5176\\u8B8A\\u6DE1\\u3002`,\"\\u7DE8\\u8F2F\\u5668\\u4E2D\\u6D6E\\u6C34\\u5370\\u6587\\u5B57\\u7684\\u908A\\u6846\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u4E2D\\u6D6E\\u6C34\\u5370\\u6587\\u5B57\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u4E2D\\u6D6E\\u6C34\\u5370\\u6587\\u5B57\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u7BC4\\u570D\\u9192\\u76EE\\u63D0\\u793A\\u7684\\u6982\\u89C0\\u5C3A\\u898F\\u6A19\\u8A18\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u932F\\u8AA4\\u7684\\u6982\\u89C0\\u5C3A\\u898F\\u6A19\\u8A18\\u8272\\u5F69\\u3002\",\"\\u8B66\\u793A\\u7684\\u6982\\u89C0\\u5C3A\\u898F\\u6A19\\u8A18\\u8272\\u5F69\\u3002\",\"\\u8CC7\\u8A0A\\u7684\\u6982\\u89C0\\u5C3A\\u898F\\u6A19\\u8A18\\u8272\\u5F69\\u3002\",\"\\u62EC\\u5F27 (1) \\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u6210\\u5C0D\\u65B9\\u62EC\\u5F27\\u8457\\u8272\\u3002\",\"\\u62EC\\u5F27 (2) \\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u6210\\u5C0D\\u65B9\\u62EC\\u5F27\\u8457\\u8272\\u3002\",\"\\u62EC\\u5F27 (3) \\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u6210\\u5C0D\\u65B9\\u62EC\\u5F27\\u8457\\u8272\\u3002\",\"\\u62EC\\u5F27 (4) \\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u6210\\u5C0D\\u65B9\\u62EC\\u5F27\\u8457\\u8272\\u3002\",\"\\u62EC\\u5F27 (5) \\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u6210\\u5C0D\\u65B9\\u62EC\\u5F27\\u8457\\u8272\\u3002\",\"\\u62EC\\u5F27 (6) \\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u6210\\u5C0D\\u65B9\\u62EC\\u5F27\\u8457\\u8272\\u3002\",\"\\u672A\\u9810\\u671F\\u62EC\\u5F27\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u975E\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA (1) \\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u975E\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA (2) \\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u975E\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA (3) \\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u975E\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA (4) \\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u975E\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA (5) \\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u975E\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA (6) \\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA (1) \\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA (2) \\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA (3) \\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA (4) \\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA (5) \\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA (6) \\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u9700\\u8981\\u555F\\u7528\\u62EC\\u5F27\\u914D\\u5C0D\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u7528\\u4F86\\u9192\\u76EE\\u63D0\\u793A Unicode \\u5B57\\u5143\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u7528\\u4F86\\u9192\\u76EE\\u63D0\\u793A Unicode \\u5B57\\u5143\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\"],\"vs/editor/common/editorContextKeys\":[\"\\u7DE8\\u8F2F\\u5668\\u6587\\u5B57\\u662F\\u5426\\u6709\\u7126\\u9EDE (\\u6E38\\u6A19\\u9583\\u720D)\",\"\\u7DE8\\u8F2F\\u5668\\u6216\\u7DE8\\u8F2F\\u5668\\u5C0F\\u5DE5\\u5177\\u662F\\u5426\\u6709\\u7126\\u9EDE (\\u4F8B\\u5982\\u7126\\u9EDE\\u4F4D\\u65BC [\\u5C0B\\u627E] \\u5C0F\\u5DE5\\u5177\\u4E2D)\",\"\\u7DE8\\u8F2F\\u5668\\u6216 RTF \\u8F38\\u5165\\u662F\\u5426\\u6709\\u7126\\u9EDE (\\u6E38\\u6A19\\u9583\\u720D)\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u70BA\\u552F\\u8B80\",\"\\u5167\\u5BB9\\u662F\\u5426\\u70BA Diff \\u7DE8\\u8F2F\\u5668\",\"\\u5167\\u5BB9\\u662F\\u5426\\u70BA\\u5167\\u5D4C Diff \\u7DE8\\u8F2F\\u5668\",\"Whether a moved code block is selected for comparison\",\"\\u662F\\u5426\\u986F\\u793A\\u6613\\u5B58\\u53D6\\u5DEE\\u7570\\u6AA2\\u8996\\u5668\",\"Whether the diff editor render side by side inline breakpoint is reached\",\"'editor.columnSelection' \\u662F\\u5426\\u5DF2\\u555F\\u7528\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u9078\\u53D6\\u6587\\u5B57\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u591A\\u500B\\u9078\\u53D6\\u9805\\u76EE\",\"'Tab' \\u662F\\u5426\\u6703\\u5C07\\u7126\\u9EDE\\u79FB\\u51FA\\u7DE8\\u8F2F\\u5668\",\"\\u7DE8\\u8F2F\\u5668\\u66AB\\u7559\\u662F\\u5426\\u986F\\u793A\",\"\\u7DE8\\u8F2F\\u5668\\u66AB\\u7559\\u662F\\u5426\\u805A\\u7126\",\"\\u81EA\\u9ECF\\u6372\\u52D5\\u662F\\u5426\\u805A\\u7126\",\"\\u81EA\\u9ECF\\u6372\\u52D5\\u662F\\u5426\\u986F\\u793A\",\"\\u662F\\u5426\\u986F\\u793A\\u7368\\u7ACB\\u7684\\u984F\\u8272\\u9078\\u64C7\\u5668\",\"\\u7368\\u7ACB\\u7684\\u984F\\u8272\\u9078\\u64C7\\u5668\\u662F\\u5426\\u805A\\u7126\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u70BA\\u8F03\\u5927\\u7DE8\\u8F2F\\u5668\\u7684\\u4E00\\u90E8\\u5206 (\\u4F8B\\u5982\\u7B46\\u8A18\\u672C)\",\"\\u7DE8\\u8F2F\\u5668\\u7684\\u8A9E\\u8A00\\u8B58\\u5225\\u78BC\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u5B8C\\u6210\\u9805\\u76EE\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709 CodeLens \\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u5B9A\\u7FA9\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u5BA3\\u544A\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u5BE6\\u4F5C\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u578B\\u5225\\u5B9A\\u7FA9\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u66AB\\u7559\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u6587\\u4EF6\\u9192\\u76EE\\u63D0\\u793A\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u6587\\u4EF6\\u7B26\\u865F\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u53C3\\u8003\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u91CD\\u65B0\\u547D\\u540D\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u7C3D\\u7AE0\\u8AAA\\u660E\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u5167\\u5D4C\\u63D0\\u793A\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u6587\\u4EF6\\u683C\\u5F0F\\u5316\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u6587\\u4EF6\\u9078\\u53D6\\u9805\\u76EE\\u683C\\u5F0F\\u5316\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u591A\\u500B\\u6587\\u4EF6\\u683C\\u5F0F\\u5316\\u63D0\\u4F9B\\u8005\",\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u6709\\u591A\\u500B\\u6587\\u4EF6\\u9078\\u53D6\\u9805\\u76EE\\u683C\\u5F0F\\u5316\\u63D0\\u4F9B\\u8005\"],\"vs/editor/common/languages\":[\"\\u9663\\u5217\",\"\\u5E03\\u6797\\u503C\",\"\\u985E\\u5225\",\"\\u5E38\\u6578\",\"\\u5EFA\\u69CB\\u51FD\\u5F0F\",\"\\u5217\\u8209\",\"\\u5217\\u8209\\u6210\\u54E1\",\"\\u4E8B\\u4EF6\",\"\\u6B04\\u4F4D\",\"\\u6A94\\u6848\",\"\\u51FD\\u5F0F\",\"\\u4ECB\\u9762\",\"\\u7D22\\u5F15\\u9375\",\"\\u65B9\\u6CD5\",\"\\u6A21\\u7D44\",\"\\u547D\\u540D\\u7A7A\\u9593\",\"null\",\"\\u6578\\u5B57\",\"\\u7269\\u4EF6\",\"\\u904B\\u7B97\\u5B50\",\"\\u5957\\u4EF6\",\"\\u5C6C\\u6027\",\"\\u5B57\\u4E32\",\"\\u7D50\\u69CB\",\"\\u578B\\u5225\\u53C3\\u6578\",\"\\u8B8A\\u6578\",\"{0} ({1})\"],\"vs/editor/common/languages/modesRegistry\":[\"\\u7D14\\u6587\\u5B57\"],\"vs/editor/common/model/editStack\":[\"\\u6B63\\u5728\\u9375\\u5165\"],\"vs/editor/common/standaloneStrings\":[\"\\u958B\\u767C\\u4EBA\\u54E1: \\u6AA2\\u67E5\\u6B0A\\u6756\",\"\\u524D\\u5F80\\u884C/\\u6B04...\",\"\\u986F\\u793A\\u6240\\u6709\\u5FEB\\u901F\\u5B58\\u53D6\\u63D0\\u4F9B\\u8005\",\"\\u547D\\u4EE4\\u9078\\u64C7\\u5340\",\"\\u986F\\u793A\\u4E26\\u57F7\\u884C\\u547D\\u4EE4\",\"\\u79FB\\u81F3\\u7B26\\u865F...\",\"\\u524D\\u5F80\\u7B26\\u865F (\\u4F9D\\u985E\\u5225)...\",\"\\u7DE8\\u8F2F\\u5668\\u5167\\u5BB9\",\"\\u6309 Alt+F1 \\u53EF\\u53D6\\u5F97\\u5354\\u52A9\\u5DE5\\u5177\\u9078\\u9805\\u3002\",\"\\u5207\\u63DB\\u9AD8\\u5C0D\\u6BD4\\u4F48\\u666F\\u4E3B\\u984C\",\"\\u5DF2\\u5728 {1} \\u6A94\\u6848\\u4E2D\\u9032\\u884C {0} \\u9805\\u7DE8\\u8F2F\"],\"vs/editor/common/viewLayout/viewLineRenderer\":[\"\\u986F\\u793A\\u66F4\\u591A ({0})\",\"{0} chars\"],\"vs/editor/contrib/anchorSelect/browser/anchorSelect\":[\"\\u9078\\u53D6\\u7BC4\\u570D\\u9328\\u9EDE\",\"\\u8A2D\\u5B9A\\u9328\\u9EDE\\u70BA {0}:{1}\",\"\\u8A2D\\u5B9A\\u9078\\u53D6\\u7BC4\\u570D\\u9328\\u9EDE\",\"\\u524D\\u5F80\\u9078\\u53D6\\u7BC4\\u570D\\u9328\\u9EDE\",\"\\u9078\\u53D6\\u5F9E\\u9328\\u9EDE\\u5230\\u6E38\\u6A19\\u4E4B\\u9593\\u7684\\u7BC4\\u570D\",\"\\u53D6\\u6D88\\u9078\\u53D6\\u7BC4\\u570D\\u9328\\u9EDE\"],\"vs/editor/contrib/bracketMatching/browser/bracketMatching\":[\"\\u6210\\u5C0D\\u62EC\\u5F27\\u7684\\u6982\\u89C0\\u5C3A\\u898F\\u6A19\\u8A18\\u8272\\u5F69\\u3002\",\"\\u79FB\\u81F3\\u65B9\\u62EC\\u5F27\",\"\\u9078\\u53D6\\u81F3\\u62EC\\u5F27\",\"\\u79FB\\u9664\\u62EC\\u5F27\",\"\\u524D\\u5F80\\u62EC\\u5F27(&&B)\"],\"vs/editor/contrib/caretOperations/browser/caretOperations\":[\"\\u5C07\\u6240\\u9078\\u6587\\u5B57\\u5411\\u5DE6\\u79FB\\u52D5\",\"\\u5C07\\u6240\\u9078\\u6587\\u5B57\\u5411\\u53F3\\u79FB\\u52D5\"],\"vs/editor/contrib/caretOperations/browser/transpose\":[\"\\u8ABF\\u63DB\\u5B57\\u6BCD\"],\"vs/editor/contrib/clipboard/browser/clipboard\":[\"\\u526A\\u4E0B(&&T)\",\"\\u526A\\u4E0B\",\"\\u526A\\u4E0B\",\"\\u526A\\u4E0B\",\"\\u8907\\u88FD(&&C)\",\"\\u8907\\u88FD\",\"\\u8907\\u88FD\",\"\\u8907\\u88FD\",\"\\u8907\\u88FD\\u70BA\",\"\\u8907\\u88FD\\u70BA\",\"\\u5171\\u7528\",\"\\u5171\\u7528\",\"\\u5171\\u7528\",\"\\u8CBC\\u4E0A(&&P)\",\"\\u8CBC\\u4E0A\",\"\\u8CBC\\u4E0A\",\"\\u8CBC\\u4E0A\",\"\\u96A8\\u8A9E\\u6CD5\\u9192\\u76EE\\u63D0\\u793A\\u8907\\u88FD\"],\"vs/editor/contrib/codeAction/browser/codeAction\":[\"\\u5957\\u7528\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C\\u6642\\u767C\\u751F\\u672A\\u77E5\\u7684\\u932F\\u8AA4\"],\"vs/editor/contrib/codeAction/browser/codeActionCommands\":[\"\\u8981\\u57F7\\u884C\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C\\u7684\\u7A2E\\u985E\\u3002\",\"\\u63A7\\u5236\\u8981\\u5957\\u7528\\u50B3\\u56DE\\u52D5\\u4F5C\\u7684\\u6642\\u6A5F\\u3002\",\"\\u4E00\\u5F8B\\u5957\\u7528\\u7B2C\\u4E00\\u500B\\u50B3\\u56DE\\u7684\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C\\u3002\",\"\\u5982\\u679C\\u50B3\\u56DE\\u7684\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C\\u662F\\u552F\\u4E00\\u52D5\\u4F5C\\uFF0C\\u5247\\u52A0\\u4EE5\\u5957\\u7528\\u3002\",\"\\u4E0D\\u8981\\u5957\\u7528\\u50B3\\u56DE\\u7684\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C\\u3002\",\"\\u63A7\\u5236\\u662F\\u5426\\u50C5\\u61C9\\u50B3\\u56DE\\u504F\\u597D\\u7684\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C\\u3002\",\"\\u5FEB\\u901F\\u4FEE\\u5FA9...\",\"\\u6C92\\u6709\\u53EF\\u7528\\u7684\\u7A0B\\u5F0F\\u78BC\\u64CD\\u4F5C\",'\\u6C92\\u6709 \"{0}\" \\u7684\\u504F\\u597D\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C','\\u6C92\\u6709 \"{0}\" \\u53EF\\u7528\\u7684\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C',\"\\u6C92\\u6709\\u53EF\\u7528\\u7684\\u504F\\u597D\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C\",\"\\u6C92\\u6709\\u53EF\\u7528\\u7684\\u7A0B\\u5F0F\\u78BC\\u64CD\\u4F5C\",\"\\u91CD\\u69CB...\",\"\\u6C92\\u6709\\u9069\\u7528\\u65BC '{0}' \\u7684\\u504F\\u597D\\u91CD\\u69CB\\u3002\",'\\u6C92\\u6709\\u53EF\\u7528\\u7684 \"{0}\" \\u91CD\\u69CB',\"\\u6C92\\u6709\\u53EF\\u7528\\u7684\\u504F\\u597D\\u91CD\\u69CB\",\"\\u6C92\\u6709\\u53EF\\u7528\\u7684\\u91CD\\u69CB\",\"\\u4F86\\u6E90\\u52D5\\u4F5C...\",\"\\u6C92\\u6709\\u9069\\u7528\\u65BC '{0}' \\u7684\\u504F\\u597D\\u4F86\\u6E90\\u52D5\\u4F5C\",'\\u6C92\\u6709 \"{0}\" \\u53EF\\u7528\\u7684\\u4F86\\u6E90\\u52D5\\u4F5C',\"\\u6C92\\u6709\\u53EF\\u7528\\u7684\\u504F\\u597D\\u4F86\\u6E90\\u52D5\\u4F5C\",\"\\u6C92\\u6709\\u53EF\\u7528\\u7684\\u4F86\\u6E90\\u52D5\\u4F5C\",\"\\u7D44\\u7E54\\u532F\\u5165\",\"\\u6C92\\u6709\\u4EFB\\u4F55\\u53EF\\u7528\\u7684\\u7D44\\u7E54\\u532F\\u5165\\u52D5\\u4F5C\",\"\\u5168\\u90E8\\u4FEE\\u6B63\",\"\\u6C92\\u6709\\u5168\\u90E8\\u4FEE\\u6B63\\u52D5\\u4F5C\\u53EF\\u7528\",\"\\u81EA\\u52D5\\u4FEE\\u6B63...\",\"\\u6C92\\u6709\\u53EF\\u7528\\u7684\\u81EA\\u52D5\\u4FEE\\u6B63\"],\"vs/editor/contrib/codeAction/browser/codeActionContributions\":[\"\\u555F\\u7528/\\u505C\\u7528\\u5728 [\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C] \\u529F\\u80FD\\u8868\\u4E2D\\u986F\\u793A\\u7FA4\\u7D44\\u6A19\\u982D\\u3002\"],\"vs/editor/contrib/codeAction/browser/codeActionController\":[\"\\u96B1\\u85CF\\u5DF2\\u505C\\u7528\\u9805\\u76EE\",\"\\u986F\\u793A\\u5DF2\\u505C\\u7528\\u9805\\u76EE\"],\"vs/editor/contrib/codeAction/browser/codeActionMenu\":[\"\\u66F4\\u591A\\u52D5\\u4F5C...\",\"\\u5FEB\\u901F\\u4FEE\\u6B63...\",\"\\u64F7\\u53D6...\",\"\\u5167\\u5D4C...\",\"\\u91CD\\u5BEB...\",\"\\u79FB\\u52D5...\",\"\\u7BC4\\u570D\\u9673\\u8FF0\\u5F0F...\",\"\\u4F86\\u6E90\\u52D5\\u4F5C...\"],\"vs/editor/contrib/codeAction/browser/lightBulbWidget\":[\"\\u986F\\u793A\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C\\u3002\\u504F\\u597D\\u7684\\u5FEB\\u901F\\u4FEE\\u6B63\\u53EF\\u7528 ({0})\",\"\\u986F\\u793A\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C ({0})\",\"\\u986F\\u793A\\u7A0B\\u5F0F\\u78BC\\u52D5\\u4F5C\"],\"vs/editor/contrib/codelens/browser/codelensController\":[\"\\u986F\\u793A\\u76EE\\u524D\\u884C\\u7684 Code Lens \\u547D\\u4EE4\"],\"vs/editor/contrib/colorPicker/browser/colorPickerWidget\":[\"\\u6309\\u4E00\\u4E0B\\u4EE5\\u5207\\u63DB\\u8272\\u5F69\\u9078\\u9805 (rgb/hsl/hex)\",\"\\u8981\\u95DC\\u9589\\u984F\\u8272\\u9078\\u64C7\\u5668\\u7684\\u5716\\u793A\"],\"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions\":[\"\\u986F\\u793A\\u6216\\u805A\\u7126\\u7368\\u7ACB\\u7684\\u984F\\u8272\\u9078\\u64C7\\u5668\",\"&&\\u986F\\u793A\\u6216\\u805A\\u7126\\u7368\\u7ACB\\u7684\\u984F\\u8272\\u9078\\u64C7\\u5668\",\"\\u96B1\\u85CF\\u984F\\u8272\\u9078\\u64C7\\u5668\",\"\\u4F7F\\u7528\\u7368\\u7ACB\\u7684\\u984F\\u8272\\u9078\\u64C7\\u5668\\u63D2\\u5165\\u984F\\u8272\"],\"vs/editor/contrib/comment/browser/comment\":[\"\\u5207\\u63DB\\u884C\\u8A3B\\u89E3\",\"\\u5207\\u63DB\\u884C\\u8A3B\\u89E3(&&T)\",\"\\u52A0\\u5165\\u884C\\u8A3B\\u89E3\",\"\\u79FB\\u9664\\u884C\\u8A3B\\u89E3\",\"\\u5207\\u63DB\\u5340\\u584A\\u8A3B\\u89E3\",\"\\u5207\\u63DB\\u5340\\u584A\\u8A3B\\u89E3(&&B)\"],\"vs/editor/contrib/contextmenu/browser/contextmenu\":[\"\\u7E2E\\u5716\",\"\\u8F49\\u8B6F\\u5B57\\u5143\",\"\\u5782\\u76F4\\u5927\\u5C0F\",\"\\u6309\\u6BD4\\u4F8B\",\"\\u586B\\u6EFF\",\"\\u6700\\u9069\\u5927\\u5C0F\",\"\\u6ED1\\u687F\",\"\\u6ED1\\u9F20\\u79FB\\u81F3\\u4E0A\\u65B9\",\"\\u4E00\\u5F8B\",\"\\u986F\\u793A\\u7DE8\\u8F2F\\u5668\\u5167\\u5BB9\\u529F\\u80FD\\u8868\"],\"vs/editor/contrib/cursorUndo/browser/cursorUndo\":[\"\\u6E38\\u6A19\\u5FA9\\u539F\",\"\\u6E38\\u6A19\\u91CD\\u505A\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution\":[\"\\u8CBC\\u4E0A\\u70BA...\",\"\\u8981\\u5617\\u8A66\\u5957\\u7528\\u7684\\u8CBC\\u4E0A\\u7DE8\\u8F2F\\u7684\\u8B58\\u5225\\u78BC\\u3002\\u5982\\u679C\\u672A\\u63D0\\u4F9B\\uFF0C\\u7DE8\\u8F2F\\u5668\\u5C07\\u986F\\u793A\\u9078\\u64C7\\u5668\\u3002\"],\"vs/editor/contrib/dropOrPasteInto/browser/copyPasteController\":[\"\\u662F\\u5426\\u986F\\u793A\\u8CBC\\u4E0A\\u5C0F\\u5DE5\\u5177\",\"\\u986F\\u793A\\u8CBC\\u4E0A\\u9078\\u9805...\",\"\\u6B63\\u5728\\u57F7\\u884C\\u8CBC\\u4E0A\\u8655\\u7406\\u5E38\\u5F0F\\u3002\\u6309\\u4E00\\u4E0B\\u4EE5\\u53D6\\u6D88\",\"\\u9078\\u53D6\\u8CBC\\u4E0A\\u52D5\\u4F5C\",\"\\u57F7\\u884C\\u8CBC\\u4E0A\\u8655\\u7406\\u5E38\\u5F0F\"],\"vs/editor/contrib/dropOrPasteInto/browser/defaultProviders\":[\"\\u5167\\u5EFA\",\"\\u63D2\\u5165\\u7D14\\u6587\\u5B57\",\"\\u63D2\\u5165 URI\",\"\\u63D2\\u5165 URI\",\"\\u63D2\\u5165\\u8DEF\\u5F91\",\"\\u63D2\\u5165\\u8DEF\\u5F91\",\"\\u63D2\\u5165\\u76F8\\u5C0D\\u8DEF\\u5F91\",\"\\u63D2\\u5165\\u76F8\\u5C0D\\u8DEF\\u5F91\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution\":[\"Configures the default drop provider to use for content of a given mime type.\"],\"vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController\":[\"\\u662F\\u5426\\u986F\\u793A\\u5378\\u9664\\u5C0F\\u5DE5\\u5177\",\"\\u986F\\u793A\\u5378\\u9664\\u9078\\u9805...\",\"\\u6B63\\u5728\\u57F7\\u884C\\u7F6E\\u653E\\u8655\\u7406\\u5E38\\u5F0F\\u3002\\u6309\\u4E00\\u4E0B\\u4EE5\\u53D6\\u6D88\"],\"vs/editor/contrib/editorState/browser/keybindingCancellation\":[\"\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u57F7\\u884C\\u53EF\\u53D6\\u6D88\\u7684\\u4F5C\\u696D\\uFF0C\\u4F8B\\u5982\\u300C\\u9810\\u89BD\\u53C3\\u8003\\u300D\"],\"vs/editor/contrib/find/browser/findController\":[\"\\u5C0B\\u627E\",\"\\u5C0B\\u627E(&&F)\",`\\u8986\\u5BEB \"Use Regular Expression\" \\u65D7\\u6A19\\u3002\\r\n\\u65E5\\u5F8C\\u5C07\\u4E0D\\u6703\\u5132\\u5B58\\u6B64\\u65D7\\u6A19\\u3002\\r\n0: \\u4E0D\\u57F7\\u884C\\u4EFB\\u4F55\\u52D5\\u4F5C\\r\n1: True\\r\n2: False`,`\\u8986\\u5BEB \"Match Whole Word\" \\u65D7\\u6A19\\u3002\\r\n\\u65E5\\u5F8C\\u5C07\\u4E0D\\u6703\\u5132\\u5B58\\u6B64\\u65D7\\u6A19\\u3002\\r\n0: \\u4E0D\\u57F7\\u884C\\u4EFB\\u4F55\\u52D5\\u4F5C\\r\n1: True\\r\n2: False`,`\\u8986\\u5BEB \"Math Case\" \\u65D7\\u6A19\\u3002\\r\n\\u65E5\\u5F8C\\u5C07\\u4E0D\\u6703\\u5132\\u5B58\\u6B64\\u65D7\\u6A19\\u3002\\r\n0: \\u4E0D\\u57F7\\u884C\\u4EFB\\u4F55\\u52D5\\u4F5C\\r\n1: True\\r\n2: False`,`\\u8986\\u5BEB \"Preserve Case\" \\u65D7\\u6A19\\u3002\\r\n\\u65E5\\u5F8C\\u5C07\\u4E0D\\u6703\\u5132\\u5B58\\u6B64\\u65D7\\u6A19\\u3002\\r\n0: \\u4E0D\\u57F7\\u884C\\u4EFB\\u4F55\\u52D5\\u4F5C\\r\n1: True\\r\n2: False`,\"\\u4F7F\\u7528\\u5F15\\u6578\\u5C0B\\u627E\",\"\\u5C0B\\u627E\\u9078\\u53D6\\u9805\\u76EE\",\"\\u5C0B\\u627E\\u4E0B\\u4E00\\u500B\",\"\\u5C0B\\u627E\\u4E0A\\u4E00\\u500B\",\"\\u79FB\\u81F3\\u76F8\\u7B26\\u9805\\u76EE...\",\"\\u6C92\\u6709\\u76F8\\u7B26\\u9805\\u76EE\\u3002\\u5617\\u8A66\\u641C\\u5C0B\\u5176\\u4ED6\\u9805\\u76EE\\u3002\",\"\\u8F38\\u5165\\u6578\\u5B57\\u4EE5\\u524D\\u5F80\\u7279\\u5B9A\\u76F8\\u7B26\\u9805\\u76EE (\\u4ECB\\u65BC 1 \\u5230 {0})\",\"\\u8ACB\\u8F38\\u5165\\u4ECB\\u65BC 1 \\u548C {0} \\u4E4B\\u9593\\u7684\\u6578\\u5B57\\u3002\",\"\\u8ACB\\u8F38\\u5165\\u4ECB\\u65BC 1 \\u548C {0} \\u4E4B\\u9593\\u7684\\u6578\\u5B57\\u3002\",\"\\u5C0B\\u627E\\u4E0B\\u4E00\\u500B\\u9078\\u53D6\\u9805\\u76EE\",\"\\u5C0B\\u627E\\u4E0A\\u4E00\\u500B\\u9078\\u53D6\\u9805\\u76EE\",\"\\u53D6\\u4EE3\",\"\\u53D6\\u4EE3(&&R)\"],\"vs/editor/contrib/find/browser/findWidget\":[\"\\u7DE8\\u8F2F\\u5668\\u5C0B\\u627E\\u5C0F\\u5DE5\\u5177\\u4E2D [\\u5728\\u9078\\u53D6\\u7BC4\\u570D\\u4E2D\\u5C0B\\u627E] \\u7684\\u5716\\u793A\\u3002\",\"\\u8868\\u793A\\u7DE8\\u8F2F\\u5668\\u5C0B\\u627E\\u5C0F\\u5DE5\\u5177\\u5DF2\\u647A\\u758A\\u7684\\u5716\\u793A\\u3002\",\"\\u8868\\u793A\\u7DE8\\u8F2F\\u5668\\u5C0B\\u627E\\u5C0F\\u5DE5\\u5177\\u5DF2\\u5C55\\u958B\\u7684\\u5716\\u793A\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5C0B\\u627E\\u5C0F\\u5DE5\\u5177\\u4E2D [\\u53D6\\u4EE3] \\u7684\\u5716\\u793A\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5C0B\\u627E\\u5C0F\\u5DE5\\u5177\\u4E2D [\\u5168\\u90E8\\u53D6\\u4EE3] \\u7684\\u5716\\u793A\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5C0B\\u627E\\u5C0F\\u5DE5\\u5177\\u4E2D [\\u5C0B\\u627E\\u4E0A\\u4E00\\u500B] \\u7684\\u5716\\u793A\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5C0B\\u627E\\u5C0F\\u5DE5\\u5177\\u4E2D [\\u5C0B\\u627E\\u4E0B\\u4E00\\u500B] \\u7684\\u5716\\u793A\\u3002\",\"\\u5C0B\\u627E/\\u53D6\\u4EE3\",\"\\u5C0B\\u627E\",\"\\u5C0B\\u627E\",\"\\u4E0A\\u4E00\\u500B\\u76F8\\u7B26\\u9805\\u76EE\",\"\\u4E0B\\u4E00\\u500B\\u76F8\\u7B26\\u9805\\u76EE\",\"\\u5728\\u9078\\u53D6\\u7BC4\\u570D\\u4E2D\\u5C0B\\u627E\",\"\\u95DC\\u9589\",\"\\u53D6\\u4EE3\",\"\\u53D6\\u4EE3\",\"\\u53D6\\u4EE3\",\"\\u5168\\u90E8\\u53D6\\u4EE3\",\"\\u5207\\u63DB\\u53D6\\u4EE3\",\"\\u50C5\\u53CD\\u767D\\u986F\\u793A\\u524D {0} \\u7B46\\u7D50\\u679C\\uFF0C\\u4F46\\u6240\\u6709\\u5C0B\\u627E\\u4F5C\\u696D\\u6703\\u5728\\u5B8C\\u6574\\u6587\\u5B57\\u4E0A\\u57F7\\u884C\\u3002\",\"{1} \\u7684 {0}\",\"\\u67E5\\u7121\\u7D50\\u679C\",\"\\u627E\\u5230 {0}\",\"\\u4EE5 '{1}' \\u627E\\u5230 {0}\",\"\\u4EE5 '{1}' \\u627E\\u5230 {0}\\uFF0C\\u4F4D\\u65BC {2}\",\"\\u5DF2\\u4EE5 '{1}' \\u627E\\u5230 {0}\",\"Ctrl+Enter \\u73FE\\u5728\\u6703\\u63D2\\u5165\\u5206\\u884C\\u7B26\\u865F\\uFF0C\\u800C\\u4E0D\\u6703\\u5168\\u90E8\\u53D6\\u4EE3\\u3002\\u60A8\\u53EF\\u4EE5\\u4FEE\\u6539 editor.action.replaceAll \\u7684\\u6309\\u9375\\u7E6B\\u7D50\\u95DC\\u4FC2\\uFF0C\\u4EE5\\u8986\\u5BEB\\u6B64\\u884C\\u70BA\\u3002\"],\"vs/editor/contrib/folding/browser/folding\":[\"\\u5C55\\u958B\",\"\\u4EE5\\u905E\\u8FF4\\u65B9\\u5F0F\\u5C55\\u958B\",\"\\u647A\\u758A\",\"\\u5207\\u63DB\\u647A\\u758A\",\"\\u4EE5\\u905E\\u8FF4\\u65B9\\u5F0F\\u647A\\u758A\",\"\\u647A\\u758A\\u5168\\u90E8\\u5340\\u584A\\u8A3B\\u89E3\",\"\\u647A\\u758A\\u6240\\u6709\\u5340\\u57DF\",\"\\u5C55\\u958B\\u6240\\u6709\\u5340\\u57DF\",\"\\u6298\\u758A\\u6240\\u9078\\u5340\\u57DF\\u4EE5\\u5916\\u7684\\u6240\\u6709\\u5340\\u57DF\",\"\\u5C55\\u958B\\u6240\\u9078\\u5340\\u57DF\\u4EE5\\u5916\\u7684\\u6240\\u6709\\u5340\\u57DF\",\"\\u5168\\u90E8\\u647A\\u758A\",\"\\u5168\\u90E8\\u5C55\\u958B\",\"\\u79FB\\u81F3\\u7236\\u4EE3\\u647A\\u758A\",\"\\u79FB\\u81F3\\u4E0A\\u4E00\\u500B\\u647A\\u758A\\u7BC4\\u570D\",\"\\u79FB\\u81F3\\u4E0B\\u4E00\\u500B\\u647A\\u758A\\u7BC4\\u570D\",\"\\u5F9E\\u9078\\u53D6\\u7BC4\\u570D\\u5EFA\\u7ACB\\u647A\\u758A\\u7BC4\\u570D\",\"\\u79FB\\u9664\\u624B\\u52D5\\u6298\\u758A\\u7BC4\\u570D\",\"\\u647A\\u758A\\u5C64\\u7D1A {0}\"],\"vs/editor/contrib/folding/browser/foldingDecorations\":[\"\\u5DF2\\u647A\\u758A\\u7BC4\\u570D\\u5F8C\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u8272\\u5F69\\u4E0D\\u5F97\\u8655\\u65BC\\u4E0D\\u900F\\u660E\\u72C0\\u614B\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u88DD\\u8A02\\u908A\\u7684\\u647A\\u758A\\u63A7\\u5236\\u9805\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5B57\\u7B26\\u908A\\u754C\\u4E2D [\\u5C55\\u958B\\u7684\\u7BC4\\u570D] \\u7684\\u5716\\u793A\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5B57\\u7B26\\u908A\\u754C\\u4E2D [\\u647A\\u758A\\u7684\\u7BC4\\u570D] \\u7684\\u5716\\u793A\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5B57\\u7B26\\u908A\\u754C\\u4E2D\\u624B\\u52D5\\u647A\\u758A\\u7BC4\\u570D\\u7684\\u5716\\u793A\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5B57\\u7B26\\u908A\\u754C\\u4E2D\\u624B\\u52D5\\u5C55\\u958B\\u7BC4\\u570D\\u7684\\u5716\\u793A\\u3002\"],\"vs/editor/contrib/fontZoom/browser/fontZoom\":[\"\\u7DE8\\u8F2F\\u5668\\u5B57\\u9AD4\\u653E\\u5927\",\"\\u7DE8\\u8F2F\\u5668\\u5B57\\u578B\\u7E2E\\u5C0F\",\"\\u7DE8\\u8F2F\\u5668\\u5B57\\u9AD4\\u91CD\\u8A2D\\u7E2E\\u653E\"],\"vs/editor/contrib/format/browser/format\":[\"\\u5728\\u884C {0} \\u7DE8\\u8F2F\\u4E86 1 \\u9805\\u683C\\u5F0F\",\"\\u5728\\u884C {1} \\u7DE8\\u8F2F\\u4E86 {0} \\u9805\\u683C\\u5F0F\",\"\\u5728\\u884C {0} \\u8207\\u884C {1} \\u4E4B\\u9593\\u7DE8\\u8F2F\\u4E86 1 \\u9805\\u683C\\u5F0F\",\"\\u5728\\u884C {1} \\u8207\\u884C {2} \\u4E4B\\u9593\\u7DE8\\u8F2F\\u4E86 {0} \\u9805\\u683C\\u5F0F\"],\"vs/editor/contrib/format/browser/formatActions\":[\"\\u683C\\u5F0F\\u5316\\u6587\\u4EF6\",\"\\u683C\\u5F0F\\u5316\\u9078\\u53D6\\u7BC4\\u570D\"],\"vs/editor/contrib/gotoError/browser/gotoError\":[\"\\u79FB\\u81F3\\u4E0B\\u4E00\\u500B\\u554F\\u984C (\\u932F\\u8AA4, \\u8B66\\u544A, \\u8CC7\\u8A0A)\",\"[\\u524D\\u5F80\\u4E0B\\u4E00\\u500B\\u6A19\\u8A18] \\u7684\\u5716\\u793A\\u3002\",\"\\u79FB\\u81F3\\u4E0A\\u4E00\\u500B\\u554F\\u984C (\\u932F\\u8AA4, \\u8B66\\u544A, \\u8CC7\\u8A0A)\",\"[\\u524D\\u5F80\\u4E0A\\u4E00\\u500B\\u6A19\\u8A18] \\u7684\\u5716\\u793A\\u3002\",\"\\u79FB\\u81F3\\u6A94\\u6848\\u88E1\\u9762\\u7684\\u4E0B\\u4E00\\u500B\\u554F\\u984C (\\u932F\\u8AA4, \\u8B66\\u544A, \\u8CC7\\u8A0A)\",\"\\u4E0B\\u4E00\\u500B\\u554F\\u984C(&&P)\",\"\\u79FB\\u81F3\\u6A94\\u6848\\u88E1\\u9762\\u7684\\u4E0A\\u4E00\\u500B\\u554F\\u984C (\\u932F\\u8AA4, \\u8B66\\u544A, \\u8CC7\\u8A0A)\",\"\\u524D\\u4E00\\u500B\\u554F\\u984C(&&P)\"],\"vs/editor/contrib/gotoError/browser/gotoErrorWidget\":[\"\\u932F\\u8AA4\",\"\\u8B66\\u544A\",\"\\u8CC7\\u8A0A\",\"\\u63D0\\u793A\",\"{0} \\u65BC {1}\\u3002\",\"{0} \\u500B\\u554F\\u984C (\\u5171 {1} \\u500B)\",\"{0} \\u500B\\u554F\\u984C (\\u5171 {1} \\u500B)\",\"\\u7DE8\\u8F2F\\u5668\\u6A19\\u8A18\\u5C0E\\u89BD\\u5C0F\\u5DE5\\u5177\\u932F\\u8AA4\\u7684\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u6A19\\u8A18\\u5C0E\\u89BD\\u5C0F\\u5DE5\\u5177\\u932F\\u8AA4\\u6A19\\u984C\\u80CC\\u666F\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u6A19\\u8A18\\u5C0E\\u89BD\\u5C0F\\u5DE5\\u5177\\u8B66\\u544A\\u7684\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u6A19\\u8A18\\u5C0E\\u89BD\\u5C0F\\u5DE5\\u5177\\u8B66\\u544A\\u6A19\\u984C\\u80CC\\u666F\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u6A19\\u8A18\\u5C0E\\u89BD\\u5C0F\\u5DE5\\u5177\\u8CC7\\u8A0A\\u7684\\u8272\\u5F69\",\"\\u7DE8\\u8F2F\\u5668\\u6A19\\u8A18\\u5C0E\\u89BD\\u5C0F\\u5DE5\\u5177\\u8CC7\\u8A0A\\u6A19\\u984C\\u80CC\\u666F\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u6A19\\u8A18\\u5C0E\\u89BD\\u5C0F\\u5DE5\\u5177\\u7684\\u80CC\\u666F\\u3002\"],\"vs/editor/contrib/gotoSymbol/browser/goToCommands\":[\"\\u67E5\\u770B\",\"\\u5B9A\\u7FA9\",\"\\u627E\\u4E0D\\u5230 '{0}' \\u7684\\u5B9A\\u7FA9\",\"\\u627E\\u4E0D\\u5230\\u4EFB\\u4F55\\u5B9A\\u7FA9\",\"\\u79FB\\u81F3\\u5B9A\\u7FA9\",\"\\u79FB\\u81F3\\u5B9A\\u7FA9(&&D)\",\"\\u5728\\u4E00\\u5074\\u958B\\u555F\\u5B9A\\u7FA9\",\"\\u7784\\u6838\\u5B9A\\u7FA9\",\"\\u5BA3\\u544A\",\"\\u627E\\u4E0D\\u5230 '{0}' \\u7684\\u5BA3\\u544A \",\"\\u627E\\u4E0D\\u5230\\u4EFB\\u4F55\\u5BA3\\u544A\",\"\\u79FB\\u81F3\\u5BA3\\u544A\",\"\\u524D\\u5F80\\u5BA3\\u544A(&&D)\",\"\\u627E\\u4E0D\\u5230 '{0}' \\u7684\\u5BA3\\u544A \",\"\\u627E\\u4E0D\\u5230\\u4EFB\\u4F55\\u5BA3\\u544A\",\"\\u9810\\u89BD\\u5BA3\\u544A\",\"\\u985E\\u578B\\u5B9A\\u7FA9\",\"\\u627E\\u4E0D\\u5230 '{0}' \\u7684\\u4EFB\\u4F55\\u985E\\u578B\\u5B9A\\u7FA9\",\"\\u627E\\u4E0D\\u5230\\u4EFB\\u4F55\\u985E\\u578B\\u5B9A\\u7FA9\",\"\\u79FB\\u81F3\\u985E\\u578B\\u5B9A\\u7FA9\",\"\\u524D\\u5F80\\u985E\\u578B\\u5B9A\\u7FA9(&&T)\",\"\\u9810\\u89BD\\u985E\\u578B\\u5B9A\\u7FA9\",\"\\u5BE6\\u4F5C\",\"\\u627E\\u4E0D\\u5230 '{0}' \\u7684\\u4EFB\\u4F55\\u5BE6\\u4F5C\",\"\\u627E\\u4E0D\\u5230\\u4EFB\\u4F55\\u5BE6\\u4F5C\",\"\\u524D\\u5F80\\u5BE6\\u4F5C\",\"\\u524D\\u5F80\\u5BE6\\u4F5C(&&I)\",\"\\u67E5\\u770B\\u5BE6\\u4F5C\",'\\u672A\\u627E\\u5230 \"{0}\" \\u7684\\u53C3\\u8003',\"\\u672A\\u627E\\u5230\\u53C3\\u8003\",\"\\u524D\\u5F80\\u53C3\\u8003\",\"\\u524D\\u5F80\\u53C3\\u8003(&&R)\",\"\\u53C3\\u8003\",\"\\u9810\\u89BD\\u53C3\\u8003\",\"\\u53C3\\u8003\",\"\\u524D\\u5F80\\u4EFB\\u4F55\\u7B26\\u865F\",\"\\u4F4D\\u7F6E\",\"'{0}' \\u6C92\\u6709\\u7D50\\u679C\",\"\\u53C3\\u8003\"],\"vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition\":[\"\\u6309\\u4E00\\u4E0B\\u4EE5\\u986F\\u793A {0} \\u9805\\u5B9A\\u7FA9\\u3002\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesController\":[\"\\u662F\\u5426\\u986F\\u793A\\u53C3\\u8003\\u7784\\u6838\\uFF0C\\u4F8B\\u5982\\u300C\\u7784\\u6838\\u53C3\\u8003\\u300D\\u6216\\u300C\\u7784\\u6838\\u5B9A\\u7FA9\\u300D\",\"\\u6B63\\u5728\\u8F09\\u5165...\",\"{0} ({1})\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesTree\":[\"{0} \\u500B\\u53C3\\u8003\",\"{0} \\u500B\\u53C3\\u8003\",\"\\u53C3\\u8003\"],\"vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget\":[\"\\u7121\\u6CD5\\u9810\\u89BD\",\"\\u67E5\\u7121\\u7D50\\u679C\",\"\\u53C3\\u8003\"],\"vs/editor/contrib/gotoSymbol/browser/referencesModel\":[\"\\u5728\\u8CC7\\u6599\\u884C {2} \\u884C {1} \\u7684 {0} \\u4E2D\",\"\\u5728\\u8CC7\\u6599\\u884C {3} \\u884C {2} \\u7684 {1} \\u7684 {0} \\u4E2D\",\"1 \\u500B\\u7B26\\u865F\\u4F4D\\u65BC {0}, \\u5B8C\\u6574\\u8DEF\\u5F91 {1}\",\"{0} \\u500B\\u7B26\\u865F\\u4F4D\\u65BC {1}, \\u5B8C\\u6574\\u8DEF\\u5F91 {2}\",\"\\u627E\\u4E0D\\u5230\\u7D50\\u679C\",\"\\u5728 {0} \\u4E2D\\u627E\\u5230 1 \\u500B\\u7B26\\u865F\",\"\\u5728 {1} \\u4E2D\\u627E\\u5230 {0} \\u500B\\u7B26\\u865F\",\"\\u5728 {1} \\u500B\\u6A94\\u6848\\u4E2D\\u627E\\u5230 {0} \\u500B\\u7B26\\u865F\"],\"vs/editor/contrib/gotoSymbol/browser/symbolNavigation\":[\"\\u662F\\u5426\\u6709\\u53EA\\u80FD\\u900F\\u904E\\u9375\\u76E4\\u700F\\u89BD\\u7684\\u7B26\\u865F\\u4F4D\\u7F6E\\u3002\",\"{1} \\u7684\\u7B26\\u865F {0}\\uFF0C{2} \\u70BA\\u4E0B\\u4E00\\u500B\",\"{1} \\u7684\\u7B26\\u865F {0}\"],\"vs/editor/contrib/hover/browser/hover\":[\"\\u986F\\u793A\\u6216\\u805A\\u7126\\u66AB\\u7559\",\"\\u986F\\u793A\\u5B9A\\u7FA9\\u9810\\u89BD\\u61F8\\u505C\",\"\\u5411\\u4E0A\\u6372\\u52D5\\u66AB\\u7559\",\"\\u5411\\u4E0B\\u6372\\u52D5\\u66AB\\u7559\",\"\\u5411\\u5DE6\\u6372\\u52D5\\u66AB\\u7559\",\"\\u5411\\u53F3\\u6372\\u52D5\\u66AB\\u7559\",\"\\u4E0A\\u4E00\\u9801\\u66AB\\u7559\",\"\\u4E0B\\u4E00\\u9801\\u66AB\\u7559\",\"\\u79FB\\u81F3\\u4E0A\\u65B9\\u66AB\\u7559\",\"\\u79FB\\u81F3\\u4E0B\\u65B9\\u66AB\\u7559\"],\"vs/editor/contrib/hover/browser/markdownHoverParticipant\":[\"\\u6B63\\u5728\\u8F09\\u5165...\",\"\\u7531\\u65BC\\u6548\\u80FD\\u539F\\u56E0\\uFF0C\\u5DF2\\u66AB\\u505C\\u8F49\\u8B6F\\u3002\\u9019\\u53EF\\u900F\\u904E `editor.stopRenderingLineAfter` \\u9032\\u884C\\u8A2D\\u5B9A\\u3002\",\"\\u56E0\\u6548\\u80FD\\u7684\\u7DE3\\u6545\\uFF0C\\u5DF2\\u8DF3\\u904E\\u5C07\\u9577\\u7684\\u884C Token \\u5316\\u3002\\u60A8\\u53EF\\u900F\\u904E `editor.maxTokenizationLineLength` \\u8A2D\\u5B9A\\u3002\"],\"vs/editor/contrib/hover/browser/markerHoverParticipant\":[\"\\u6AA2\\u8996\\u554F\\u984C\",\"\\u6C92\\u6709\\u53EF\\u7528\\u7684\\u5FEB\\u901F\\u4FEE\\u6B63\",\"\\u6B63\\u5728\\u6AA2\\u67E5\\u5FEB\\u901F\\u4FEE\\u6B63...\",\"\\u6C92\\u6709\\u53EF\\u7528\\u7684\\u5FEB\\u901F\\u4FEE\\u6B63\",\"\\u5FEB\\u901F\\u4FEE\\u5FA9...\"],\"vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace\":[\"\\u4EE5\\u4E0A\\u4E00\\u500B\\u503C\\u53D6\\u4EE3\",\"\\u4EE5\\u4E0B\\u4E00\\u500B\\u503C\\u53D6\\u4EE3\"],\"vs/editor/contrib/indentation/browser/indentation\":[\"\\u5C07\\u7E2E\\u6392\\u8F49\\u63DB\\u6210\\u7A7A\\u683C\",\"\\u5C07\\u7E2E\\u6392\\u8F49\\u63DB\\u6210\\u5B9A\\u4F4D\\u9EDE\",\"\\u5DF2\\u8A2D\\u5B9A\\u7684\\u5B9A\\u4F4D\\u9EDE\\u5927\\u5C0F\",\"\\u9810\\u8A2D\\u7D22\\u5F15\\u6A19\\u7C64\\u5927\\u5C0F\",\"\\u76EE\\u524D\\u7684\\u7D22\\u5F15\\u6A19\\u7C64\\u5927\\u5C0F\",\"\\u9078\\u53D6\\u76EE\\u524D\\u6A94\\u6848\\u7684\\u5B9A\\u4F4D\\u9EDE\\u5927\\u5C0F\",\"\\u4F7F\\u7528 Tab \\u9032\\u884C\\u7E2E\\u6392\",\"\\u4F7F\\u7528\\u7A7A\\u683C\\u9375\\u9032\\u884C\\u7E2E\\u6392\",\"\\u8B8A\\u66F4\\u7D22\\u5F15\\u6A19\\u7C64\\u986F\\u793A\\u5927\\u5C0F\",\"\\u5075\\u6E2C\\u5167\\u5BB9\\u4E2D\\u7684\\u7E2E\\u6392\",\"\\u91CD\\u65B0\\u5C07\\u884C\\u7E2E\\u6392\",\"\\u91CD\\u65B0\\u5C07\\u9078\\u53D6\\u7684\\u884C\\u7E2E\\u6392\"],\"vs/editor/contrib/inlayHints/browser/inlayHintsHover\":[\"\\u6309\\u5169\\u4E0B\\u4EE5\\u63D2\\u5165\",\"cmd + \\u6309\\u4E00\\u4E0B\",\"ctrl + \\u6309\\u4E00\\u4E0B\",\"\\u9078\\u9805 + \\u6309\\u4E00\\u4E0B\",\"alt + \\u6309\\u4E00\\u4E0B\",\"\\u524D\\u5F80 [\\u5B9A\\u7FA9] ({0})\\uFF0C\\u6309\\u4E00\\u4E0B\\u6ED1\\u9F20\\u53F3\\u9375\\u4EE5\\u4E86\\u89E3\\u66F4\\u591A\",\"\\u79FB\\u81F3\\u5B9A\\u7FA9 ({0})\",\"\\u57F7\\u884C\\u547D\\u4EE4\"],\"vs/editor/contrib/inlineCompletions/browser/commands\":[\"\\u986F\\u793A\\u4E0B\\u4E00\\u500B\\u5167\\u5D4C\\u5EFA\\u8B70\",\"\\u986F\\u793A\\u4E0A\\u4E00\\u500B\\u5167\\u5D4C\\u5EFA\\u8B70\",\"\\u89F8\\u767C\\u5167\\u5D4C\\u5EFA\\u8B70\",\"\\u63A5\\u53D7\\u4E0B\\u4E00\\u500B\\u5167\\u5D4C\\u5EFA\\u8B70\\u5B57\\u7D44\",\"\\u63A5\\u53D7\\u5B57\\u7D44\",\"\\u63A5\\u53D7\\u4E0B\\u4E00\\u500B\\u5167\\u5D4C\\u5EFA\\u8B70\\u884C\",\"\\u63A5\\u53D7\\u884C\",\"\\u63A5\\u53D7\\u5167\\u5D4C\\u5EFA\\u8B70\",\"\\u63A5\\u53D7\",\"\\u96B1\\u85CF\\u5167\\u5D4C\\u5EFA\\u8B70\",\"\\u6C38\\u9060\\u986F\\u793A\\u5DE5\\u5177\\u5217\"],\"vs/editor/contrib/inlineCompletions/browser/hoverParticipant\":[\"\\u5EFA\\u8B70:\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys\":[\"\\u662F\\u5426\\u986F\\u793A\\u5167\\u5D4C\\u5EFA\\u8B70\",\"\\u5167\\u5D4C\\u5EFA\\u8B70\\u662F\\u5426\\u4EE5\\u7A7A\\u767D\\u5B57\\u5143\\u958B\\u982D\",\"\\u5167\\u5D4C\\u5EFA\\u8B70\\u7684\\u958B\\u982D\\u662F\\u5426\\u70BA\\u7A7A\\u767D\\uFF0C\\u4E14\\u6BD4 Tab \\u80FD\\u63D2\\u5165\\u7684\\u5B57\\u5143\\u8981\\u5C0F\",\"\\u662F\\u5426\\u61C9\\u96B1\\u85CF\\u76EE\\u524D\\u5EFA\\u8B70\\u7684\\u5176\\u4ED6\\u5EFA\\u8B70\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController\":[\"Inspect this in the accessible view ({0})\"],\"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget\":[\"[\\u986F\\u793A\\u4E0B\\u4E00\\u500B\\u53C3\\u6578\\u63D0\\u793A] \\u7684\\u5716\\u793A\\u3002\",\"[\\u986F\\u793A\\u4E0A\\u4E00\\u500B\\u53C3\\u6578\\u63D0\\u793A] \\u7684\\u5716\\u793A\\u3002\",\"{0} ({1})\",\"\\u4E0A\\u4E00\\u6B65\",\"\\u4E0B\\u4E00\\u6B65\"],\"vs/editor/contrib/lineSelection/browser/lineSelection\":[\"\\u5C55\\u958B\\u7DDA\\u689D\\u9078\\u53D6\\u7BC4\\u570D\"],\"vs/editor/contrib/linesOperations/browser/linesOperations\":[\"\\u5C07\\u884C\\u5411\\u4E0A\\u8907\\u88FD\",\"\\u5C07\\u884C\\u5411\\u4E0A\\u8907\\u88FD(&&C)\",\"\\u5C07\\u884C\\u5411\\u4E0B\\u8907\\u88FD\",\"\\u5C07\\u884C\\u5411\\u4E0B\\u8907\\u88FD(&&P)\",\"\\u91CD\\u8907\\u9078\\u53D6\\u9805\\u76EE\",\"\\u91CD\\u8907\\u9078\\u53D6\\u9805\\u76EE(&&D)\",\"\\u4E0A\\u79FB\\u4E00\\u884C\",\"\\u4E0A\\u79FB\\u4E00\\u884C(&&V)\",\"\\u4E0B\\u79FB\\u4E00\\u884C\",\"\\u4E0B\\u79FB\\u4E00\\u884C(&&L)\",\"\\u905E\\u589E\\u6392\\u5E8F\\u884C\",\"\\u905E\\u6E1B\\u6392\\u5E8F\\u884C\",\"\\u522A\\u9664\\u91CD\\u8907\\u7684\\u884C\",\"\\u4FEE\\u526A\\u5C3E\\u7AEF\\u7A7A\\u767D\",\"\\u522A\\u9664\\u884C\",\"\\u7E2E\\u6392\\u884C\",\"\\u51F8\\u6392\\u884C\",\"\\u5728\\u4E0A\\u65B9\\u63D2\\u5165\\u884C\",\"\\u5728\\u4E0B\\u65B9\\u63D2\\u5165\\u884C\",\"\\u5DE6\\u908A\\u5168\\u90E8\\u522A\\u9664\",\"\\u522A\\u9664\\u6240\\u6709\\u53F3\\u65B9\\u9805\\u76EE\",\"\\u9023\\u63A5\\u7DDA\",\"\\u8F49\\u7F6E\\u6E38\\u6A19\\u5468\\u570D\\u7684\\u5B57\\u5143\\u6578\",\"\\u8F49\\u63DB\\u5230\\u5927\\u5BEB\",\"\\u8F49\\u63DB\\u5230\\u5C0F\\u5BEB\",\"\\u8F49\\u63DB\\u70BA\\u5B57\\u9996\\u5927\\u5BEB\",\"\\u8F49\\u63DB\\u70BA\\u5E95\\u7DDA\\u9023\\u63A5\\u5B57\",\"\\u8F49\\u63DB\\u70BA Camel \\u6848\\u4F8B\",\"\\u8F49\\u63DB\\u6210 Kebab Case\"],\"vs/editor/contrib/linkedEditing/browser/linkedEditing\":[\"\\u958B\\u59CB\\u9023\\u7D50\\u7684\\u7DE8\\u8F2F\",\"\\u7576\\u7DE8\\u8F2F\\u5668\\u81EA\\u52D5\\u91CD\\u65B0\\u547D\\u540D\\u985E\\u578B\\u6642\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\"],\"vs/editor/contrib/links/browser/links\":[\"\\u56E0\\u70BA\\u6B64\\u9023\\u7D50\\u7684\\u683C\\u5F0F\\u4E0D\\u6B63\\u78BA\\uFF0C\\u6240\\u4EE5\\u7121\\u6CD5\\u958B\\u555F: {0}\",\"\\u56E0\\u70BA\\u6B64\\u9023\\u7D50\\u76EE\\u6A19\\u907A\\u5931\\uFF0C\\u6240\\u4EE5\\u7121\\u6CD5\\u958B\\u555F\\u3002\",\"\\u57F7\\u884C\\u547D\\u4EE4\",\"\\u8FFD\\u8E64\\u9023\\u7D50\",\"cmd + \\u6309\\u4E00\\u4E0B\",\"ctrl + \\u6309\\u4E00\\u4E0B\",\"\\u9078\\u9805 + \\u6309\\u4E00\\u4E0B\",\"alt + \\u6309\\u4E00\\u4E0B\",\"\\u57F7\\u884C\\u547D\\u4EE4 {0}\",\"\\u958B\\u555F\\u9023\\u7D50\"],\"vs/editor/contrib/message/browser/messageController\":[\"\\u7DE8\\u8F2F\\u5668\\u76EE\\u524D\\u662F\\u5426\\u6B63\\u5728\\u986F\\u793A\\u5167\\u5D4C\\u8A0A\\u606F\"],\"vs/editor/contrib/multicursor/browser/multicursor\":[\"\\u65B0\\u589E\\u7684\\u8CC7\\u6599\\u6307\\u6A19: {0}\",\"\\u65B0\\u589E\\u7684\\u8CC7\\u6599\\u6307\\u6A19: {0}\",\"\\u5728\\u4E0A\\u65B9\\u52A0\\u5165\\u6E38\\u6A19\",\"\\u5728\\u4E0A\\u65B9\\u65B0\\u589E\\u6E38\\u6A19(&&A)\",\"\\u5728\\u4E0B\\u65B9\\u52A0\\u5165\\u6E38\\u6A19\",\"\\u5728\\u4E0B\\u65B9\\u65B0\\u589E\\u6E38\\u6A19(&&D)\",\"\\u5728\\u884C\\u5C3E\\u65B0\\u589E\\u6E38\\u6A19\",\"\\u5728\\u884C\\u5C3E\\u65B0\\u589E\\u6E38\\u6A19(&&U)\",\"\\u5C07\\u6E38\\u6A19\\u65B0\\u589E\\u5230\\u5E95\\u90E8 \",\"\\u5C07\\u6E38\\u6A19\\u65B0\\u589E\\u5230\\u9802\\u90E8\",\"\\u5C07\\u9078\\u53D6\\u9805\\u76EE\\u52A0\\u5165\\u4E0B\\u4E00\\u500B\\u627E\\u5230\\u7684\\u76F8\\u7B26\\u9805\",\"\\u65B0\\u589E\\u4E0B\\u4E00\\u500B\\u9805\\u76EE(&&N)\",\"\\u5C07\\u9078\\u53D6\\u9805\\u76EE\\u52A0\\u5165\\u524D\\u4E00\\u500B\\u627E\\u5230\\u7684\\u76F8\\u7B26\\u9805\\u4E2D\",\"\\u65B0\\u589E\\u4E0A\\u4E00\\u500B\\u9805\\u76EE(&&R)\",\"\\u5C07\\u6700\\u5F8C\\u4E00\\u500B\\u9078\\u64C7\\u9805\\u76EE\\u79FB\\u81F3\\u4E0B\\u4E00\\u500B\\u627E\\u5230\\u7684\\u76F8\\u7B26\\u9805\",\"\\u5C07\\u6700\\u5F8C\\u4E00\\u500B\\u9078\\u64C7\\u9805\\u76EE\\u79FB\\u81F3\\u524D\\u4E00\\u500B\\u627E\\u5230\\u7684\\u76F8\\u7B26\\u9805\",\"\\u9078\\u53D6\\u6240\\u6709\\u627E\\u5230\\u7684\\u76F8\\u7B26\\u9805\\u76EE\",\"\\u9078\\u53D6\\u6240\\u6709\\u9805\\u76EE(&&O)\",\"\\u8B8A\\u66F4\\u6240\\u6709\\u767C\\u751F\\u6B21\\u6578\",\"\\u805A\\u7126\\u4E0B\\u4E00\\u500B\\u6E38\\u6A19\",\"\\u805A\\u7126\\u4E0B\\u4E00\\u500B\\u6E38\\u6A19\",\"\\u805A\\u7126\\u4E0A\\u4E00\\u500B\\u6E38\\u6A19\",\"\\u805A\\u7126\\u524D\\u4E00\\u500B\\u6E38\\u6A19\"],\"vs/editor/contrib/parameterHints/browser/parameterHints\":[\"\\u89F8\\u767C\\u53C3\\u6578\\u63D0\\u793A\"],\"vs/editor/contrib/parameterHints/browser/parameterHintsWidget\":[\"[\\u986F\\u793A\\u4E0B\\u4E00\\u500B\\u53C3\\u6578\\u63D0\\u793A] \\u7684\\u5716\\u793A\\u3002\",\"[\\u986F\\u793A\\u4E0A\\u4E00\\u500B\\u53C3\\u6578\\u63D0\\u793A] \\u7684\\u5716\\u793A\\u3002\",\"{0}\\uFF0C\\u63D0\\u793A\",\"\\u53C3\\u6578\\u63D0\\u793A\\u4E2D\\u4F7F\\u7528\\u4E2D\\u9805\\u76EE\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\"],\"vs/editor/contrib/peekView/browser/peekView\":[\"\\u76EE\\u524D\\u7684\\u7A0B\\u5F0F\\u78BC\\u7DE8\\u8F2F\\u5668\\u662F\\u5426\\u5167\\u5D4C\\u65BC\\u7784\\u6838\\u5167\",\"\\u95DC\\u9589\",\"\\u9810\\u89BD\\u6AA2\\u8996\\u6A19\\u984C\\u5340\\u57DF\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u9810\\u89BD\\u6AA2\\u8996\\u6A19\\u984C\\u7684\\u8272\\u5F69\\u3002\",\"\\u9810\\u89BD\\u6AA2\\u8996\\u6A19\\u984C\\u8CC7\\u8A0A\\u7684\\u8272\\u5F69\\u3002\",\"\\u9810\\u89BD\\u6AA2\\u8996\\u4E4B\\u6846\\u7DDA\\u8207\\u7BAD\\u982D\\u7684\\u8272\\u5F69\\u3002\",\"\\u9810\\u89BD\\u6AA2\\u8996\\u4E2D\\u7D50\\u679C\\u6E05\\u55AE\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u9810\\u89BD\\u6AA2\\u8996\\u7D50\\u679C\\u5217\\u8868\\u4E2D\\u884C\\u7BC0\\u9EDE\\u7684\\u524D\\u666F\\u8272\\u5F69\",\"\\u9810\\u89BD\\u6AA2\\u8996\\u7D50\\u679C\\u5217\\u8868\\u4E2D\\u6A94\\u6848\\u7BC0\\u9EDE\\u7684\\u524D\\u666F\\u8272\\u5F69\",\"\\u5728\\u9810\\u89BD\\u6AA2\\u8996\\u4E4B\\u7D50\\u679C\\u6E05\\u55AE\\u4E2D\\u9078\\u53D6\\u9805\\u76EE\\u6642\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u5728\\u9810\\u89BD\\u6AA2\\u8996\\u4E4B\\u7D50\\u679C\\u6E05\\u55AE\\u4E2D\\u9078\\u53D6\\u9805\\u76EE\\u6642\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u9810\\u89BD\\u6AA2\\u8996\\u7DE8\\u8F2F\\u5668\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u9810\\u89BD\\u6AA2\\u8996\\u7DE8\\u8F2F\\u5668\\u908A\\u6846(\\u542B\\u884C\\u865F\\u6216\\u5B57\\u5F62\\u5716\\u793A)\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u9810\\u89BD\\u6AA2\\u8996\\u7DE8\\u8F2F\\u5668\\u4E2D\\u9ECF\\u6027\\u6EFE\\u52D5\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u5728\\u9810\\u89BD\\u6AA2\\u8996\\u7DE8\\u8F2F\\u5668\\u4E2D\\u6BD4\\u5C0D\\u6642\\u7684\\u53CD\\u767D\\u986F\\u793A\\u8272\\u5F69\\u3002\",\"\\u9810\\u89BD\\u6AA2\\u8996\\u7DE8\\u8F2F\\u5668\\u4E2D\\u6BD4\\u5C0D\\u6642\\u7684\\u53CD\\u767D\\u986F\\u793A\\u8272\\u5F69\\u3002\",\"\\u5728\\u9810\\u89BD\\u6AA2\\u8996\\u7DE8\\u8F2F\\u5668\\u4E2D\\u6BD4\\u5C0D\\u6642\\u7684\\u53CD\\u767D\\u986F\\u793A\\u908A\\u754C\\u3002\"],\"vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess\":[\"\\u5148\\u958B\\u555F\\u6587\\u5B57\\u7DE8\\u8F2F\\u5668\\uFF0C\\u524D\\u5F80\\u67D0\\u4E00\\u884C\\u3002\",\"\\u524D\\u5F80\\u7B2C {0} \\u884C\\u7684\\u7B2C {1} \\u500B\\u5B57\\u5143\\u3002\",\"\\u524D\\u5F80\\u7B2C {0} \\u884C\\u3002\",\"\\u76EE\\u524D\\u884C: {0}\\uFF0C\\u5B57\\u5143: {1}\\u3002\\u8ACB\\u9375\\u5165\\u4ECB\\u65BC 1 \\u5230 {2} \\u4E4B\\u9593\\u884C\\u865F\\uFF0C\\u5C0E\\u89BD\\u81F3\\u8A72\\u884C\\u3002\",\"\\u76EE\\u524D\\u884C: {0}\\uFF0C\\u5B57\\u5143: {1}\\u3002\\u8ACB\\u9375\\u5165\\u8981\\u5C0E\\u89BD\\u81F3\\u7684\\u884C\\u865F\\u3002\"],\"vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess\":[\"\\u82E5\\u8981\\u524D\\u5F80\\u7B26\\u865F\\uFF0C\\u8ACB\\u5148\\u958B\\u555F\\u5305\\u542B\\u7B26\\u865F\\u8CC7\\u8A0A\\u7684\\u6587\\u5B57\\u7DE8\\u8F2F\\u5668\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u7684\\u6587\\u5B57\\u7DE8\\u8F2F\\u5668\\u4E0D\\u63D0\\u4F9B\\u7B26\\u865F\\u8CC7\\u8A0A\\u3002\",\"\\u6C92\\u6709\\u76F8\\u7B26\\u7684\\u7DE8\\u8F2F\\u5668\\u7B26\\u865F\",\"\\u6C92\\u6709\\u7DE8\\u8F2F\\u5668\\u7B26\\u865F\",\"\\u958B\\u81F3\\u5074\\u908A\",\"\\u958B\\u555F\\u5230\\u5E95\\u90E8\",\"\\u7B26\\u865F ({0})\",\"\\u5C6C\\u6027 ({0})\",\"\\u65B9\\u6CD5 ({0})\",\"\\u51FD\\u5F0F ({0})\",\"\\u5EFA\\u69CB\\u51FD\\u5F0F ({0})\",\"\\u8B8A\\u6578 ({0})\",\"\\u985E\\u5225 ({0})\",\"\\u7D50\\u69CB ({0})\",\"\\u4E8B\\u4EF6 ({0})\",\"\\u904B\\u7B97\\u5B50 ({0})\",\"\\u4ECB\\u9762 ({0})\",\"\\u547D\\u540D\\u7A7A\\u9593 ({0})\",\"\\u5957\\u4EF6 ({0})\",\"\\u578B\\u5225\\u53C3\\u6578 ({0})\",\"\\u6A21\\u7D44 ({0})\",\"\\u5C6C\\u6027 ({0})\",\"\\u5217\\u8209 ({0})\",\"\\u5217\\u8209\\u6210\\u54E1 ({0})\",\"\\u5B57\\u4E32 ({0})\",\"\\u6A94\\u6848 ({0})\",\"\\u9663\\u5217 ({0})\",\"\\u6578\\u5B57 ({0})\",\"\\u5E03\\u6797\\u503C ({0})\",\"\\u7269\\u4EF6 ({0})\",\"\\u7D22\\u5F15\\u9375 ({0})\",\"\\u6B04\\u4F4D ({0})\",\"\\u5E38\\u6578 ({0})\"],\"vs/editor/contrib/readOnlyMessage/browser/contribution\":[\"\\u7121\\u6CD5\\u5728\\u552F\\u8B80\\u8F38\\u5165\\u4E2D\\u7DE8\\u8F2F\",\"\\u7121\\u6CD5\\u5728\\u552F\\u8B80\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7DE8\\u8F2F\"],\"vs/editor/contrib/rename/browser/rename\":[\"\\u6C92\\u6709\\u7D50\\u679C\\u3002\",\"\\u89E3\\u6790\\u91CD\\u65B0\\u547D\\u540D\\u4F4D\\u7F6E\\u6642\\u767C\\u751F\\u672A\\u77E5\\u7684\\u932F\\u8AA4\",\"\\u6B63\\u5728\\u5C07 '{0}' \\u91CD\\u65B0\\u547D\\u540D\\u70BA '{1}'\",\"\\u6B63\\u5728\\u5C07 {0} \\u91CD\\u65B0\\u547D\\u540D\\u70BA {1}\",\"\\u5DF2\\u6210\\u529F\\u5C07 '{0}' \\u91CD\\u65B0\\u547D\\u540D\\u70BA '{1}'\\u3002\\u6458\\u8981: {2}\",\"\\u91CD\\u547D\\u540D\\u7121\\u6CD5\\u5957\\u7528\\u7DE8\\u8F2F\",\"\\u91CD\\u65B0\\u547D\\u540D\\u7121\\u6CD5\\u8A08\\u7B97\\u7DE8\\u8F2F\",\"\\u91CD\\u65B0\\u547D\\u540D\\u7B26\\u865F\",\"\\u555F\\u7528/\\u505C\\u7528\\u91CD\\u65B0\\u547D\\u540D\\u524D\\u5148\\u9810\\u89BD\\u8B8A\\u66F4\\u7684\\u529F\\u80FD\"],\"vs/editor/contrib/rename/browser/renameInputField\":[\"\\u662F\\u5426\\u986F\\u793A\\u91CD\\u65B0\\u547D\\u540D\\u8F38\\u5165\\u5C0F\\u5DE5\\u5177\",\"\\u70BA\\u8F38\\u5165\\u91CD\\u65B0\\u547D\\u540D\\u3002\\u8ACB\\u9375\\u5165\\u65B0\\u540D\\u7A31\\uFF0C\\u7136\\u5F8C\\u6309 Enter \\u4EE5\\u63D0\\u4EA4\\u3002\",\"\\u6309 {0} \\u9032\\u884C\\u91CD\\u65B0\\u547D\\u540D\\uFF0C\\u6309 {1} \\u9032\\u884C\\u9810\\u89BD\"],\"vs/editor/contrib/smartSelect/browser/smartSelect\":[\"\\u5C55\\u958B\\u9078\\u53D6\\u9805\\u76EE\",\"\\u5C55\\u958B\\u9078\\u53D6\\u7BC4\\u570D(&&E)\",\"\\u7E2E\\u5C0F\\u9078\\u53D6\\u9805\\u76EE\",\"\\u58D3\\u7E2E\\u9078\\u53D6\\u7BC4\\u570D(&&S)\"],\"vs/editor/contrib/snippet/browser/snippetController2\":[\"\\u7DE8\\u8F2F\\u5668\\u76EE\\u524D\\u662F\\u5426\\u5728\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u6A21\\u5F0F\\u4E2D\",\"\\u5728\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u6A21\\u5F0F\\u4E2D\\u662F\\u5426\\u6709\\u4E0B\\u4E00\\u500B\\u5B9A\\u4F4D\\u505C\\u99D0\\u9EDE\",\"\\u5728\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u6A21\\u5F0F\\u4E2D\\u662F\\u5426\\u6709\\u4E0A\\u4E00\\u500B\\u5B9A\\u4F4D\\u505C\\u99D0\\u9EDE\",\"\\u79FB\\u81F3\\u4E0B\\u4E00\\u500B\\u9810\\u7559\\u4F4D\\u7F6E...\"],\"vs/editor/contrib/snippet/browser/snippetVariables\":[\"\\u661F\\u671F\\u5929\",\"\\u661F\\u671F\\u4E00\",\"\\u661F\\u671F\\u4E8C\",\"\\u661F\\u671F\\u4E09\",\"\\u661F\\u671F\\u56DB\",\"\\u661F\\u671F\\u4E94\",\"\\u661F\\u671F\\u516D\",\"\\u9031\\u65E5\",\"\\u9031\\u4E00\",\"\\u9031\\u4E8C\",\"\\u9031\\u4E09\",\"\\u9031\\u56DB\",\"\\u9031\\u4E94\",\"\\u9031\\u516D\",\"\\u4E00\\u6708\",\"\\u4E8C\\u6708\",\"\\u4E09\\u6708\",\"\\u56DB\\u6708\",\"\\u4E94\\u6708\",\"\\u516D\\u6708\",\"\\u4E03\\u6708\",\"\\u516B\\u6708\",\"\\u4E5D\\u6708\",\"\\u5341\\u6708\",\"\\u5341\\u4E00\\u6708\",\"\\u5341\\u4E8C\\u6708\",\"1\\u6708\",\"2\\u6708\",\"3 \\u6708\",\"4\\u6708\",\"\\u4E94\\u6708\",\"6\\u6708\",\"7 \\u6708\",\"8 \\u6708\",\"9 \\u6708\",\"10 \\u6708\",\"11 \\u6708\",\"12 \\u6708\"],\"vs/editor/contrib/stickyScroll/browser/stickyScrollActions\":[\"\\u5207\\u63DB\\u81EA\\u9ECF\\u6372\\u52D5\",\"\\u5207\\u63DB\\u81EA\\u9ECF\\u6372\\u52D5(&&T)\",\"\\u81EA\\u9ECF\\u6372\\u52D5\",\"\\u81EA\\u9ECF\\u6372\\u52D5(&&S)\",\"\\u805A\\u7126\\u81EA\\u9ECF\\u6372\\u52D5\",\"\\u7126\\u9EDE\\u81EA\\u9ECF\\u6372\\u52D5(&&F)\",\"\\u9078\\u53D6\\u4E0B\\u4E00\\u500B\\u81EA\\u9ECF\\u6372\\u52D5\\u884C\",\"\\u9078\\u53D6\\u4E0A\\u4E00\\u500B\\u81EA\\u9ECF\\u6372\\u52D5\\u884C\",\"\\u79FB\\u81F3\\u805A\\u7126\\u7684\\u81EA\\u9ECF\\u6372\\u52D5\\u884C\",\"\\u9078\\u53D6\\u7DE8\\u8F2F\\u5668\"],\"vs/editor/contrib/suggest/browser/suggest\":[\"\\u662F\\u5426\\u805A\\u7126\\u4EFB\\u4F55\\u5EFA\\u8B70\",\"\\u662F\\u5426\\u986F\\u793A\\u5EFA\\u8B70\\u8A73\\u7D30\\u8CC7\\u6599\",\"\\u662F\\u5426\\u6709\\u591A\\u500B\\u5EFA\\u8B70\\u53EF\\u4EE5\\u6311\\u9078\",\"\\u63D2\\u5165\\u76EE\\u524D\\u7684\\u5EFA\\u8B70\\u6703\\u7522\\u751F\\u8B8A\\u66F4\\uFF0C\\u6216\\u5DF2\\u9375\\u5165\\u6240\\u6709\\u9805\\u76EE\",\"\\u662F\\u5426\\u5728\\u6309\\u4E0B Enter \\u6642\\u63D2\\u5165\\u5EFA\\u8B70\",\"\\u76EE\\u524D\\u7684\\u5EFA\\u8B70\\u662F\\u5426\\u6709\\u63D2\\u5165\\u548C\\u53D6\\u4EE3\\u884C\\u70BA\",\"\\u9810\\u8A2D\\u884C\\u70BA\\u662F\\u63D2\\u5165\\u6216\\u53D6\\u4EE3\",\"\\u76EE\\u524D\\u7684\\u5EFA\\u8B70\\u662F\\u5426\\u652F\\u63F4\\u89E3\\u6C7A\\u66F4\\u591A\\u8A73\\u7D30\\u8CC7\\u6599\"],\"vs/editor/contrib/suggest/browser/suggestController\":[\"\\u63A5\\u53D7 \\u2018{0}\\u2019 \\u9032\\u884C\\u4E86\\u5176\\u4ED6 {1} \\u9805\\u7DE8\\u8F2F\",\"\\u89F8\\u767C\\u5EFA\\u8B70\",\"\\u63D2\\u5165\",\"\\u63D2\\u5165\",\"\\u53D6\\u4EE3\",\"\\u53D6\\u4EE3\",\"\\u63D2\\u5165\",\"\\u986F\\u793A\\u66F4\\u5C11\",\"\\u986F\\u793A\\u66F4\\u591A\",\"\\u91CD\\u8A2D\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u5927\\u5C0F\"],\"vs/editor/contrib/suggest/browser/suggestWidget\":[\"\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u7684\\u908A\\u754C\\u8272\\u5F69\\u3002\",\"\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u6240\\u9078\\u9805\\u76EE\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u6240\\u9078\\u9805\\u76EE\\u7684\\u5716\\u793A\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u6240\\u9078\\u9805\\u76EE\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u76F8\\u7B26\\u9192\\u76EE\\u63D0\\u793A\\u7684\\u8272\\u5F69\\u3002\",\"\\u7576\\u9805\\u76EE\\u6210\\u70BA\\u7126\\u9EDE\\u6642\\uFF0C\\u76F8\\u7B26\\u9805\\u76EE\\u7684\\u8272\\u5F69\\u5728\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u6703\\u9192\\u76EE\\u986F\\u793A\\u3002\",\"\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u72C0\\u614B\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u6B63\\u5728\\u8F09\\u5165...\",\"\\u7121\\u5EFA\\u8B70\\u3002\",\"\\u5EFA\\u8B70\",\"{0} {1}\\uFF0C{2}\",\"{0} {1}\",\"{0}\\uFF0C{1}\",\"{0}\\uFF0C\\u6587\\u4EF6: {1}\"],\"vs/editor/contrib/suggest/browser/suggestWidgetDetails\":[\"\\u95DC\\u9589\",\"\\u6B63\\u5728\\u8F09\\u5165...\"],\"vs/editor/contrib/suggest/browser/suggestWidgetRenderer\":[\"\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D [\\u66F4\\u591A\\u8A73\\u7D30\\u8CC7\\u8A0A] \\u7684\\u5716\\u793A\\u3002\",\"\\u95B1\\u8B80\\u66F4\\u591A\"],\"vs/editor/contrib/suggest/browser/suggestWidgetStatus\":[\"{0} ({1})\"],\"vs/editor/contrib/symbolIcons/browser/symbolIcons\":[\"\\u9663\\u5217\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u5E03\\u6797\\u503C\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u985E\\u5225\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u8272\\u5F69\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u5E38\\u6578\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u5EFA\\u69CB\\u51FD\\u5F0F\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u5217\\u8209\\u503C\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u5217\\u8209\\u503C\\u6210\\u54E1\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u4E8B\\u4EF6\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u6B04\\u4F4D\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u6A94\\u6848\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u8CC7\\u6599\\u593E\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u51FD\\u5F0F\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u4ECB\\u9762\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u7D22\\u5F15\\u9375\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u95DC\\u9375\\u5B57\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u65B9\\u6CD5\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u6A21\\u7D44\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u547D\\u540D\\u7A7A\\u9593\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"Null \\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u6578\\u5B57\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u7269\\u4EF6\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u904B\\u7B97\\u5B50\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u5957\\u4EF6\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u5C6C\\u6027\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u53C3\\u8003\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u5B57\\u4E32\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u7D50\\u69CB\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u6587\\u5B57\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u578B\\u5225\\u53C3\\u6578\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u55AE\\u4F4D\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\",\"\\u8B8A\\u6578\\u7B26\\u865F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u9019\\u4E9B\\u7B26\\u865F\\u6703\\u51FA\\u73FE\\u5728\\u5927\\u7DB1\\u3001\\u968E\\u5C64\\u9023\\u7D50\\u548C\\u5EFA\\u8B70\\u5C0F\\u5DE5\\u5177\\u4E2D\\u3002\"],\"vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode\":[\"\\u5207\\u63DB TAB \\u9375\\u79FB\\u52D5\\u7126\\u9EDE\",\"\\u6309 Tab \\u73FE\\u5728\\u6703\\u5C07\\u7126\\u9EDE\\u79FB\\u81F3\\u4E0B\\u4E00\\u500B\\u53EF\\u8A2D\\u5B9A\\u7126\\u9EDE\\u7684\\u5143\\u7D20\\u3002\",\"\\u6309 Tab \\u73FE\\u5728\\u6703\\u63D2\\u5165\\u5B9A\\u4F4D\\u5B57\\u5143\\u3002\"],\"vs/editor/contrib/tokenization/browser/tokenization\":[\"\\u958B\\u767C\\u4EBA\\u54E1: \\u5F37\\u5236\\u91CD\\u65B0\\u7F6E\\u653E\"],\"vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter\":[\"\\u5EF6\\u4F38\\u6A21\\u7D44\\u7DE8\\u8F2F\\u5668\\u4E2D\\u986F\\u793A\\u542B\\u6709\\u8B66\\u544A\\u8A0A\\u606F\\u7684\\u5716\\u793A\\u3002\",\"\\u6B64\\u6587\\u4EF6\\u5305\\u542B\\u8A31\\u591A\\u975E\\u57FA\\u672C ASCII Unicode \\u5B57\\u5143\",\"\\u6B64\\u6587\\u4EF6\\u5305\\u542B\\u8A31\\u591A\\u4E0D\\u660E\\u78BA\\u7684 Unicode \\u5B57\\u5143\",\"\\u6B64\\u6587\\u4EF6\\u5305\\u542B\\u8A31\\u591A\\u96B1\\u85CF\\u7684 Unicode \\u5B57\\u5143\",\"\\u5B57\\u5143 {0} \\u53EF\\u80FD\\u8207 ASCII \\u5B57\\u5143 {1} \\u6DF7\\u6DC6\\uFF0C\\u9019\\u5728\\u539F\\u59CB\\u7A0B\\u5F0F\\u78BC\\u4E2D\\u6BD4\\u8F03\\u5E38\\u898B\\u3002\",\"\\u5B57\\u5143 {0} \\u53EF\\u80FD\\u8207\\u5B57\\u5143 {1} \\u6DF7\\u6DC6\\uFF0C\\u9019\\u5728\\u539F\\u59CB\\u7A0B\\u5F0F\\u78BC\\u4E2D\\u6BD4\\u8F03\\u5E38\\u898B\\u3002\",\"\\u5B57\\u5143 {0} \\u96B1\\u85CF\\u3002\",\"\\u5B57\\u5143 {0} \\u4E0D\\u662F\\u57FA\\u672C\\u7684 ASCII \\u5B57\\u5143\\u3002\",\"\\u8ABF\\u6574\\u8A2D\\u5B9A\",\"\\u505C\\u7528\\u8A3B\\u89E3\\u4E2D\\u7684\\u9192\\u76EE\\u63D0\\u793A\",\"\\u505C\\u7528\\u8A3B\\u89E3\\u4E2D\\u5B57\\u5143\\u7684\\u9192\\u76EE\\u63D0\\u793A\",\"\\u505C\\u7528\\u5B57\\u4E32\\u4E2D\\u7684\\u9192\\u76EE\\u63D0\\u793A\",\"\\u505C\\u7528\\u5B57\\u4E32\\u4E2D\\u5B57\\u5143\\u7684\\u9192\\u76EE\\u63D0\\u793A\",\"\\u505C\\u7528\\u4E0D\\u660E\\u78BA\\u7684\\u9192\\u76EE\\u63D0\\u793A\",\"\\u505C\\u7528\\u4E0D\\u660E\\u78BA\\u5B57\\u5143\\u7684\\u9192\\u76EE\\u63D0\\u793A\",\"\\u505C\\u7528\\u96B1\\u85CF\\u9192\\u76EE\\u63D0\\u793A\",\"\\u505C\\u7528\\u96B1\\u85CF\\u5B57\\u5143\\u7684\\u9192\\u76EE\\u63D0\\u793A\",\"\\u505C\\u7528\\u975E ASCII \\u9192\\u76EE\\u63D0\\u793A\",\"\\u505C\\u7528\\u975E\\u57FA\\u672C ASCII \\u5B57\\u5143\\u7684\\u9192\\u76EE\\u63D0\\u793A\",\"\\u986F\\u793A\\u6392\\u9664\\u9078\\u9805\",\"\\u6392\\u9664 {0} (\\u96B1\\u85CF\\u5B57\\u5143) \\u7684\\u53CD\\u767D\\u986F\\u793A\",\"\\u5C07 {0} \\u6392\\u9664\\u5728\\u5DF2\\u9192\\u76EE\\u63D0\\u793A\",\"\\u5141\\u8A31\\u5728\\u8A9E\\u8A00\\u300C{0}\\u300D\\u4E2D\\u8F03\\u5E38\\u7528\\u7684 Unicode \\u5B57\\u5143\\u3002\",\"\\u8A2D\\u5B9A Unicode \\u9192\\u76EE\\u63D0\\u793A\\u9078\\u9805\"],\"vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators\":[\"\\u7570\\u5E38\\u7684\\u884C\\u7D50\\u675F\\u5B57\\u5143\",\"\\u5075\\u6E2C\\u5230\\u7570\\u5E38\\u7684\\u884C\\u7D50\\u675F\\u5B57\\u5143\",\"\\u6A94\\u6848 '{0}' \\u5305\\u542B\\u4E00\\u6216\\u591A\\u500B\\u7570\\u5E38\\u7684\\u884C\\u7D50\\u675F\\u5B57\\u5143\\uFF0C\\u4F8B\\u5982\\u884C\\u5206\\u9694\\u7B26\\u865F (LS) \\u6216\\u6BB5\\u843D\\u5206\\u9694\\u7B26\\u865F (PS)\\u3002\\r\\n\\r\\n\\u5EFA\\u8B70\\u60A8\\u5C07\\u5176\\u5F9E\\u6A94\\u6848\\u4E2D\\u79FB\\u9664\\u3002\\u9019\\u53EF\\u4EE5\\u900F\\u904E `editor.unusualLineTerminators` \\u9032\\u884C\\u8A2D\\u5B9A\\u3002\",\"\\u79FB\\u9664\\u7570\\u5E38\\u7684\\u884C\\u7D50\\u675F\\u5B57\\u5143(&&R)\",\"\\u5FFD\\u7565\"],\"vs/editor/contrib/wordHighlighter/browser/highlightDecorations\":[\"\\u8B80\\u53D6\\u6B0A\\u9650\\u671F\\u9593 (\\u5982\\u8B80\\u53D6\\u8B8A\\u6578) \\u7B26\\u865F\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u5BEB\\u5165\\u6B0A\\u9650\\u671F\\u9593 (\\u5982\\u5BEB\\u5165\\u8B8A\\u6578) \\u7B26\\u865F\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u7B26\\u865F\\u6587\\u5B57\\u51FA\\u73FE\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u8B80\\u53D6\\u5B58\\u53D6\\u671F\\u9593 (\\u4F8B\\u5982\\u8B80\\u53D6\\u8B8A\\u6578\\u6642) \\u7B26\\u865F\\u7684\\u908A\\u6846\\u984F\\u8272\\u3002\",\"\\u5BEB\\u5165\\u5B58\\u53D6\\u671F\\u9593 (\\u4F8B\\u5982\\u5BEB\\u5165\\u8B8A\\u6578\\u6642) \\u7B26\\u865F\\u7684\\u908A\\u6846\\u984F\\u8272\\u3002 \",\"\\u7B26\\u865F\\u6587\\u5B57\\u51FA\\u73FE\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u7B26\\u865F\\u9192\\u76EE\\u63D0\\u793A\\u7684\\u6982\\u89C0\\u5C3A\\u898F\\u6A19\\u8A18\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u5BEB\\u5165\\u6B0A\\u9650\\u7B26\\u865F\\u9192\\u76EE\\u63D0\\u793A\\u7684\\u6982\\u89C0\\u5C3A\\u898F\\u6A19\\u8A18\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u7B26\\u865F\\u6587\\u5B57\\u51FA\\u73FE\\u7684\\u6982\\u89C0\\u5C3A\\u898F\\u6A19\\u8A18\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\"],\"vs/editor/contrib/wordHighlighter/browser/wordHighlighter\":[\"\\u79FB\\u81F3\\u4E0B\\u4E00\\u500B\\u53CD\\u767D\\u7B26\\u865F\",\"\\u79FB\\u81F3\\u4E0A\\u4E00\\u500B\\u53CD\\u767D\\u7B26\\u865F\",\"\\u89F8\\u767C\\u7B26\\u865F\\u53CD\\u767D\\u986F\\u793A\"],\"vs/editor/contrib/wordOperations/browser/wordOperations\":[\"\\u522A\\u9664\\u5B57\\u7D44\"],\"vs/platform/action/common/actionCommonCategories\":[\"\\u6AA2\\u8996\",\"\\u8AAA\\u660E\",\"\\u6E2C\\u8A66\",\"\\u6A94\\u6848\",\"\\u559C\\u597D\\u8A2D\\u5B9A\",\"\\u958B\\u767C\\u4EBA\\u54E1\"],\"vs/platform/actionWidget/browser/actionList\":[\"{0} \\u4EE5\\u5957\\u7528\\uFF0C{1} \\u4EE5\\u9810\\u89BD\",\"{0} \\u4EE5\\u7533\\u8ACB\",\"{0}\\uFF0C\\u505C\\u7528\\u539F\\u56E0: {1}\",\"\\u52D5\\u4F5C\\u5C0F\\u5DE5\\u5177\"],\"vs/platform/actionWidget/browser/actionWidget\":[\"Background color for toggled action items in action bar.\",\"\\u662F\\u5426\\u986F\\u793A\\u52D5\\u4F5C\\u5C0F\\u5DE5\\u5177\\u6E05\\u55AE\",\"\\u96B1\\u85CF\\u52D5\\u4F5C\\u5C0F\\u5DE5\\u5177\",\"\\u9078\\u53D6\\u4E0A\\u4E00\\u500B\\u52D5\\u4F5C\",\"\\u9078\\u53D6\\u4E0B\\u4E00\\u500B\\u52D5\\u4F5C\",\"\\u63A5\\u53D7\\u9078\\u53D6\\u7684\\u52D5\\u4F5C\",\"\\u9810\\u89BD\\u9078\\u53D6\\u7684\\u52D5\\u4F5C\"],\"vs/platform/actions/browser/menuEntryActionViewItem\":[\"{0} ({1})\",\"{0} ({1})\",`{0}\\r\n[{1}] {2}`],\"vs/platform/actions/browser/toolbar\":[\"\\u96B1\\u85CF\",\"\\u91CD\\u8A2D\\u529F\\u80FD\\u8868\"],\"vs/platform/actions/common/menuService\":[\"\\u96B1\\u85CF '{0}'\"],\"vs/platform/audioCues/browser/audioCueService\":[\"\\u884C\\u4E0A\\u767C\\u751F\\u932F\\u8AA4\",\"\\u884C\\u4E0A\\u7684\\u8B66\\u544A\",\"\\u884C\\u4E0A\\u7684\\u647A\\u758A\\u5340\\u57DF\",\"\\u884C\\u4E0A\\u7684\\u4E2D\\u65B7\\u9EDE\",\"\\u884C\\u4E0A\\u7684\\u5167\\u5D4C\\u5EFA\\u8B70\",\"\\u7D42\\u7AEF\\u6A5F\\u5FEB\\u901F\\u4FEE\\u6B63\",\"\\u5728\\u4E2D\\u65B7\\u9EDE\\u505C\\u6B62\\u5075\\u932F\\u5DE5\\u5177\",\"\\u884C\\u4E0A\\u6C92\\u6709\\u5D4C\\u5165\\u63D0\\u793A\",\"\\u5DE5\\u4F5C\\u5B8C\\u6210\",\"\\u5DE5\\u4F5C\\u5931\\u6557\",\"\\u7D42\\u7AEF\\u6A5F\\u547D\\u4EE4\\u5931\\u6557\",\"\\u7D42\\u7AEF\\u9234\",\"Notebook \\u5132\\u5B58\\u683C\\u5DF2\\u5B8C\\u6210\",\"Notebook \\u5132\\u5B58\\u683C\\u5931\\u6557\",\"\\u5DEE\\u7570\\u884C\\u5DF2\\u63D2\\u5165\",\"\\u5DEE\\u7570\\u884C\\u5DF2\\u522A\\u9664\",\"\\u5DEE\\u7570\\u884C\\u5DF2\\u4FEE\\u6539\",\"\\u804A\\u5929\\u8981\\u6C42\\u5DF2\\u50B3\\u9001\",\"\\u804A\\u5929\\u56DE\\u61C9\\u5DF2\\u63A5\\u6536\",\"\\u804A\\u5929\\u56DE\\u61C9\\u64F1\\u7F6E\\u4E2D\"],\"vs/platform/configuration/common/configurationRegistry\":[\"\\u9810\\u8A2D\\u8A9E\\u8A00\\u7D44\\u614B\\u8986\\u5BEB\",\"\\u8A2D\\u5B9A\\u8981\\u91DD\\u5C0D {0} \\u8A9E\\u8A00\\u8986\\u5BEB\\u7684\\u8A2D\\u5B9A\\u3002\",\"\\u8A2D\\u5B9A\\u8981\\u91DD\\u5C0D\\u8A9E\\u8A00\\u8986\\u5BEB\\u7684\\u7DE8\\u8F2F\\u5668\\u8A2D\\u5B9A\\u3002\",\"\\u9019\\u500B\\u8A2D\\u5B9A\\u4E0D\\u652F\\u63F4\\u4EE5\\u8A9E\\u8A00\\u70BA\\u6839\\u64DA\\u7684\\u7D44\\u614B\\u3002\",\"\\u8A2D\\u5B9A\\u8981\\u91DD\\u5C0D\\u8A9E\\u8A00\\u8986\\u5BEB\\u7684\\u7DE8\\u8F2F\\u5668\\u8A2D\\u5B9A\\u3002\",\"\\u9019\\u500B\\u8A2D\\u5B9A\\u4E0D\\u652F\\u63F4\\u4EE5\\u8A9E\\u8A00\\u70BA\\u6839\\u64DA\\u7684\\u7D44\\u614B\\u3002\",\"\\u7121\\u6CD5\\u8A3B\\u518A\\u7A7A\\u767D\\u5C6C\\u6027\",\"\\u7121\\u6CD5\\u8A3B\\u518A '{0}'\\u3002\\u9019\\u7B26\\u5408\\u7528\\u65BC\\u63CF\\u8FF0\\u8A9E\\u8A00\\u5C08\\u7528\\u7DE8\\u8F2F\\u5668\\u8A2D\\u5B9A\\u7684\\u5C6C\\u6027\\u6A21\\u5F0F '\\\\\\\\[.*\\\\\\\\]$'\\u3002\\u8ACB\\u4F7F\\u7528 'configurationDefaults' \\u8CA2\\u737B\\u3002\",\"\\u7121\\u6CD5\\u8A3B\\u518A '{0}'\\u3002\\u6B64\\u5C6C\\u6027\\u5DF2\\u7D93\\u8A3B\\u518A\\u3002\",\"\\u7121\\u6CD5\\u8A3B\\u518A '{0}'\\u3002\\u5DF2\\u5411 {2} \\u8A3B\\u518A\\u95DC\\u806F\\u7684\\u539F\\u5247 {1}\\u3002\"],\"vs/platform/contextkey/browser/contextKeyService\":[\"\\u50B3\\u56DE\\u6709\\u95DC\\u5167\\u5BB9\\u7D22\\u5F15\\u9375\\u8CC7\\u8A0A\\u7684\\u547D\\u4EE4\"],\"vs/platform/contextkey/common/contextkey\":[\"\\u7A7A\\u7684\\u5167\\u5BB9\\u7D22\\u5F15\\u9375\\u904B\\u7B97\\u5F0F\",\"\\u60A8\\u662F\\u5426\\u5FD8\\u8A18\\u64B0\\u5BEB\\u904B\\u7B97\\u5F0F? \\u60A8\\u4E5F\\u53EF\\u4EE5\\u5206\\u5225\\u653E\\u7F6E 'false' \\u6216 'true'\\uFF0C\\u4EE5\\u4E00\\u5F8B\\u8A55\\u4F30\\u70BA False \\u6216 True\\u3002\",\"'not' \\u5F8C\\u70BA 'in'\\u3002\",\"\\u53F3\\u62EC\\u5F27 ')'\",\"\\u672A\\u9810\\u671F\\u7684\\u6B0A\\u6756\",\"\\u60A8\\u662F\\u5426\\u5FD8\\u8A18\\u5728\\u6B0A\\u6756\\u4E4B\\u524D\\u653E\\u7F6E && \\u6216 ||?\",\"\\u904B\\u7B97\\u5F0F\\u672A\\u9810\\u671F\\u7684\\u7D50\\u5C3E\",\"\\u60A8\\u662F\\u5426\\u5FD8\\u8A18\\u653E\\u7F6E\\u5167\\u5BB9\\u91D1\\u9470?\",`\\u9810\\u671F: {0}\\r\n\\u6536\\u5230: '{1}'\\u3002`],\"vs/platform/contextkey/common/contextkeys\":[\"\\u4F5C\\u696D\\u7CFB\\u7D71\\u662F\\u5426\\u70BA macOS\",\"\\u4F5C\\u696D\\u7CFB\\u7D71\\u662F\\u5426\\u70BA Linux\",\"\\u4F5C\\u696D\\u7CFB\\u7D71\\u662F\\u5426\\u70BA Windows\",\"\\u5E73\\u53F0\\u662F\\u5426\\u70BA\\u7DB2\\u9801\\u700F\\u89BD\\u5668\",\"\\u975E\\u700F\\u89BD\\u5668\\u5E73\\u53F0\\u4E0A\\u7684\\u4F5C\\u696D\\u7CFB\\u7D71\\u662F\\u5426\\u70BA macOS\",\"\\u4F5C\\u696D\\u7CFB\\u7D71\\u662F\\u5426\\u70BA iOS\",\"\\u5E73\\u81FA\\u662F\\u5426\\u70BA\\u884C\\u52D5\\u7DB2\\u9801\\u700F\\u89BD\\u5668\",\"VS Code \\u7684\\u54C1\\u8CEA\\u985E\\u578B\",\"\\u9375\\u76E4\\u7126\\u9EDE\\u662F\\u5426\\u4F4D\\u65BC\\u8F38\\u5165\\u65B9\\u584A\\u5167\"],\"vs/platform/contextkey/common/scanner\":[\"\\u60A8\\u662F\\u6307 '{0}'?\",\"\\u60A8\\u662F\\u6307 {0} \\u6216 {1}?\",\"\\u60A8\\u662F\\u6307 {0}\\u3001{1} \\u6216 {2}?\",\"\\u60A8\\u662F\\u5426\\u5FD8\\u8A18\\u5DE6\\u62EC\\u5F27\\u6216\\u53F3\\u62EC\\u5F27?\",\"\\u60A8\\u662F\\u5426\\u5FD8\\u8A18\\u9038\\u51FA '/' (\\u659C\\u7DDA) \\u5B57\\u5143? \\u5728\\u53CD\\u659C\\u7DDA\\u524D\\u653E\\u5169\\u500B\\u53CD\\u659C\\u7DDA\\u4EE5\\u9038\\u51FA\\uFF0C\\u4F8B\\u5982 '\\\\\\\\/'\\u3002\"],\"vs/platform/history/browser/contextScopedHistoryWidget\":[\"\\u662F\\u5426\\u986F\\u793A\\u5EFA\\u8B70\"],\"vs/platform/keybinding/common/abstractKeybindingService\":[\"\\u5DF2\\u6309\\u4E0B ({0})\\u3002\\u7B49\\u5F85\\u7B2C\\u4E8C\\u500B\\u5957\\u7D22\\u9375...\",\"({0}) \\u5DF2\\u6309\\u4E0B\\u3002\\u6B63\\u5728\\u7B49\\u5F85\\u4E0B\\u4E00\\u500B\\u5957\\u7D22\\u9375...\",\"\\u6309\\u9375\\u7D44\\u5408 ({0}, {1}) \\u4E0D\\u662F\\u547D\\u4EE4\\u3002\",\"\\u6309\\u9375\\u7D44\\u5408 ({0}, {1}) \\u4E0D\\u662F\\u547D\\u4EE4\\u3002\"],\"vs/platform/list/browser/listService\":[\"\\u5DE5\\u4F5C\\u53F0\",\"\\u5C0D\\u61C9Windows\\u548CLinux\\u7684'Control'\\u8207\\u5C0D\\u61C9 macOS \\u7684'Command'\\u3002\",\"\\u5C0D\\u61C9Windows\\u548CLinux\\u7684'Alt'\\u8207\\u5C0D\\u61C9macOS\\u7684'Option'\\u3002\",\"\\u900F\\u904E\\u6ED1\\u9F20\\u591A\\u9078\\uFF0C\\u7528\\u65BC\\u5728\\u6A39\\u72C0\\u76EE\\u9304\\u8207\\u6E05\\u55AE\\u4E2D\\u65B0\\u589E\\u9805\\u76EE\\u7684\\u8F14\\u52A9\\u6309\\u9375 (\\u4F8B\\u5982\\u5728\\u7E3D\\u7BA1\\u4E2D\\u958B\\u555F\\u7DE8\\u8F2F\\u5668 \\u53CA SCM \\u6AA2\\u8996)\\u3002'\\u5728\\u5074\\u908A\\u958B\\u555F' \\u6ED1\\u9F20\\u624B\\u52E2 (\\u82E5\\u652F\\u63F4) \\u5C07\\u6703\\u9069\\u61C9\\u4EE5\\u907F\\u514D\\u548C\\u591A\\u9078\\u8F14\\u52A9\\u6309\\u9375\\u885D\\u7A81\\u3002\",\"\\u63A7\\u5236\\u5982\\u4F55\\u4F7F\\u7528\\u6ED1\\u9F20 (\\u5982\\u652F\\u63F4\\u6B64\\u7528\\u6CD5) \\u958B\\u555F\\u6A39\\u72C0\\u76EE\\u9304\\u8207\\u6E05\\u55AE\\u4E2D\\u7684\\u9805\\u76EE\\u3002\\u82E5\\u4E0D\\u9069\\u7528\\uFF0C\\u67D0\\u4E9B\\u6A39\\u72C0\\u76EE\\u9304\\u8207\\u6E05\\u55AE\\u53EF\\u80FD\\u6703\\u9078\\u64C7\\u5FFD\\u7565\\u6B64\\u8A2D\\u5B9A\\u3002\",\"\\u63A7\\u5236\\u5728\\u5DE5\\u4F5C\\u53F0\\u4E2D\\uFF0C\\u6E05\\u55AE\\u8207\\u6A39\\u72C0\\u7D50\\u69CB\\u662F\\u5426\\u652F\\u63F4\\u6C34\\u5E73\\u6372\\u52D5\\u3002\\u8B66\\u544A: \\u958B\\u555F\\u6B64\\u8A2D\\u5B9A\\u5C07\\u6703\\u5F71\\u97FF\\u6548\\u80FD\\u3002\",\"\\u63A7\\u5236\\u6309\\u4E00\\u4E0B\\u6372\\u8EF8\\u662F\\u5426\\u9010\\u9801\\u6372\\u52D5\\u3002\",\"\\u63A7\\u5236\\u6A39\\u72C0\\u7D50\\u69CB\\u7E2E\\u6392 (\\u50CF\\u7D20)\\u3002\",\"\\u63A7\\u5236\\u6A39\\u7CFB\\u662F\\u5426\\u61C9\\u8F49\\u8B6F\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u3002\",\"\\u63A7\\u5236\\u6E05\\u55AE\\u548C\\u6A39\\u72C0\\u7D50\\u69CB\\u662F\\u5426\\u5177\\u6709\\u5E73\\u6ED1\\u6372\\u52D5\\u3002\",\"\\u8981\\u7528\\u65BC\\u6ED1\\u9F20\\u6EFE\\u8F2A\\u6372\\u52D5\\u4E8B\\u4EF6 `deltaX` \\u548C `deltaY` \\u7684\\u4E58\\u6578\\u3002\",\"\\u6309\\u4E0B `Alt` \\u6642\\u7684\\u6372\\u52D5\\u901F\\u5EA6\\u4E58\\u6578\\u3002\",\"\\u641C\\u5C0B\\u6642\\u6703\\u9192\\u76EE\\u63D0\\u793A\\u5143\\u7D20\\u3002\\u9032\\u4E00\\u6B65\\u7684\\u5411\\u4E0A\\u548C\\u5411\\u4E0B\\u700F\\u89BD\\u53EA\\u6703\\u5468\\u904A\\u5DF2\\u9192\\u76EE\\u63D0\\u793A\\u7684\\u5143\\u7D20\\u3002\",\"\\u641C\\u5C0B\\u6642\\u7BE9\\u9078\\u5143\\u7D20\\u3002\",\"\\u63A7\\u5236 Workbench \\u4E2D\\u6E05\\u55AE\\u548C\\u6A39\\u72C0\\u7D50\\u69CB\\u7684\\u9810\\u8A2D\\u5C0B\\u627E\\u6A21\\u5F0F\\u3002\",\"\\u6BD4\\u5C0D\\u6309\\u9375\\u8F38\\u5165\\u7684\\u7C21\\u6613\\u6309\\u9375\\u700F\\u89BD\\u7126\\u9EDE\\u5143\\u7D20\\u3002\\u50C5\\u6BD4\\u5C0D\\u524D\\u7F6E\\u8A5E\\u3002\",\"\\u9192\\u76EE\\u63D0\\u793A\\u9375\\u76E4\\u700F\\u89BD\\u6703\\u9192\\u76EE\\u63D0\\u793A\\u7B26\\u5408\\u9375\\u76E4\\u8F38\\u5165\\u7684\\u5143\\u7D20\\u3002\\u9032\\u4E00\\u6B65\\u5411\\u4E0A\\u6216\\u5411\\u4E0B\\u700F\\u89BD\\u53EA\\u6703\\u5468\\u904A\\u9192\\u76EE\\u63D0\\u793A\\u7684\\u5143\\u7D20\\u3002\",\"\\u7BE9\\u9078\\u9375\\u76E4\\u700F\\u89BD\\u6703\\u7BE9\\u6389\\u4E26\\u96B1\\u85CF\\u4E0D\\u7B26\\u5408\\u9375\\u76E4\\u8F38\\u5165\\u7684\\u6240\\u6709\\u5143\\u7D20\\u3002\",\"\\u63A7\\u5236 Workbench \\u4E2D\\u6E05\\u55AE\\u548C\\u6A39\\u72C0\\u7D50\\u69CB\\u7684\\u9375\\u76E4\\u700F\\u89BD\\u6A23\\u5F0F\\u3002\\u53EF\\u4EE5\\u662F\\u7C21\\u6613\\u7684\\u3001\\u9192\\u76EE\\u63D0\\u793A\\u548C\\u7BE9\\u9078\\u3002\",\"\\u8ACB\\u6539\\u70BA\\u4F7F\\u7528 'workbench.list.defaultFindMode' \\u548C 'workbench.list.typeNavigationMode'\\u3002\",\"\\u641C\\u5C0B\\u6642\\u4F7F\\u7528\\u6A21\\u7CCA\\u6BD4\\u5C0D\\u3002\",\"\\u641C\\u5C0B\\u6642\\u4F7F\\u7528\\u9023\\u7E8C\\u6BD4\\u5C0D\\u3002\",\"\\u63A7\\u5236\\u5728\\u5DE5\\u4F5C\\u53F0\\u4E2D\\u641C\\u5C0B\\u6E05\\u55AE\\u548C\\u6A39\\u72C0\\u7D50\\u69CB\\u6642\\u6240\\u4F7F\\u7528\\u7684\\u6BD4\\u5C0D\\u985E\\u578B\\u3002\",\"\\u63A7\\u5236\\u7576\\u6309\\u4E0B\\u8CC7\\u6599\\u593E\\u540D\\u7A31\\u6642\\uFF0C\\u6A39\\u72C0\\u76EE\\u9304\\u8CC7\\u6599\\u593E\\u7684\\u5C55\\u958B\\u65B9\\u5F0F\\u3002\\u8ACB\\u6CE8\\u610F\\uFF0C\\u82E5\\u4E0D\\u9069\\u7528\\uFF0C\\u67D0\\u4E9B\\u6A39\\u72C0\\u76EE\\u9304\\u548C\\u6E05\\u55AE\\u53EF\\u80FD\\u6703\\u9078\\u64C7\\u5FFD\\u7565\\u6B64\\u8A2D\\u5B9A\\u3002\",\"\\u63A7\\u5236\\u5DE5\\u4F5C\\u53F0\\u4E2D\\u6E05\\u55AE\\u548C\\u6A39\\u72C0\\u76EE\\u9304\\u7684\\u985E\\u578B\\u700F\\u89BD\\u904B\\u4F5C\\u65B9\\u5F0F\\u3002\\u8A2D\\u5B9A\\u70BA 'trigger' \\u6642\\uFF0C\\u985E\\u578B\\u700F\\u89BD\\u6703\\u5728\\u57F7\\u884C 'list.triggerTypeNavigation' \\u547D\\u4EE4\\u6642\\u96A8\\u5373\\u958B\\u59CB\\u3002\"],\"vs/platform/markers/common/markers\":[\"\\u932F\\u8AA4\",\"\\u8B66\\u544A\",\"\\u8CC7\\u8A0A\"],\"vs/platform/quickinput/browser/commandsQuickAccess\":[\"\\u6700\\u8FD1\\u4F7F\\u7528\\u7684\",\"\\u7D93\\u5E38\\u4F7F\\u7528\",\"\\u5176\\u4ED6\\u547D\\u4EE4\",\"{0}, {1}\",\"\\u547D\\u4EE4 '{0}' \\u9020\\u6210\\u932F\\u8AA4\"],\"vs/platform/quickinput/browser/helpQuickAccess\":[\"{0}, {1}\"],\"vs/platform/quickinput/browser/quickInput\":[\"\\u4E0A\\u4E00\\u9801\",\"\\u6309 'Enter' \\u9375\\u78BA\\u8A8D\\u60A8\\u7684\\u8F38\\u5165\\u6216\\u6309 'Esc' \\u9375\\u53D6\\u6D88\",\"{0}/{1}\",\"\\u8F38\\u5165\\u4EE5\\u7E2E\\u5C0F\\u7D50\\u679C\\u7BC4\\u570D\\u3002\"],\"vs/platform/quickinput/browser/quickInputController\":[\"Toggle all checkboxes\",\"{0} Results\",\"{0} Selected\",\"OK\",\"Custom\",\"Back ({0})\",\"Back\"],\"vs/platform/quickinput/browser/quickInputList\":[\"\\u5FEB\\u901F\\u8F38\\u5165\"],\"vs/platform/quickinput/browser/quickInputUtils\":[\"\\u6309\\u4E00\\u4E0B\\u4EE5\\u57F7\\u884C\\u547D\\u4EE4 \\u2018{0}\\u2019\"],\"vs/platform/theme/common/colorRegistry\":[\"\\u6574\\u9AD4\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u50C5\\u7576\\u672A\\u88AB\\u4EFB\\u4F55\\u5143\\u4EF6\\u8986\\u758A\\u6642\\uFF0C\\u624D\\u6703\\u4F7F\\u7528\\u6B64\\u8272\\u5F69\\u3002\",\"\\u5DF2\\u505C\\u7528\\u5143\\u7D20\\u7684\\u6574\\u9AD4\\u524D\\u666F\\u3002\\u53EA\\u6709\\u5728\\u5143\\u4EF6\\u672A\\u8986\\u84CB\\u6642\\uFF0C\\u624D\\u80FD\\u4F7F\\u7528\\u9019\\u500B\\u8272\\u5F69\\u3002\",\"\\u6574\\u9AD4\\u932F\\u8AA4\\u8A0A\\u606F\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\\u50C5\\u7576\\u672A\\u88AB\\u4EFB\\u4F55\\u5143\\u4EF6\\u8986\\u84CB\\u6642\\uFF0C\\u624D\\u6703\\u4F7F\\u7528\\u6B64\\u8272\\u5F69\\u3002\",\"\\u63D0\\u4F9B\\u9644\\u52A0\\u8A0A\\u606F\\u7684\\u524D\\u666F\\u984F\\u8272,\\u4F8B\\u5982\\u6A19\\u7C64\",\"\\u5DE5\\u4F5C\\u53F0\\u4E2D\\u5716\\u793A\\u7684\\u9810\\u8A2D\\u8272\\u5F69\\u3002\",\"\\u7126\\u9EDE\\u9805\\u76EE\\u7684\\u6574\\u9AD4\\u6846\\u7DDA\\u8272\\u5F69\\u3002\\u53EA\\u5728\\u6C92\\u6709\\u4EFB\\u4F55\\u5143\\u4EF6\\u8986\\u5BEB\\u6B64\\u8272\\u5F69\\u6642\\uFF0C\\u624D\\u6703\\u52A0\\u4EE5\\u4F7F\\u7528\\u3002\",\"\\u9805\\u76EE\\u5468\\u570D\\u7684\\u984D\\u5916\\u6846\\u7DDA\\uFF0C\\u53EF\\u5C07\\u9805\\u76EE\\u5F9E\\u5176\\u4ED6\\u9805\\u76EE\\u4E2D\\u5340\\u9694\\u51FA\\u4F86\\u4EE5\\u63D0\\u9AD8\\u5C0D\\u6BD4\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u9805\\u76EE\\u5468\\u570D\\u7684\\u984D\\u5916\\u908A\\u754C\\uFF0C\\u53EF\\u5C07\\u9805\\u76EE\\u5F9E\\u5176\\u4ED6\\u9805\\u76EE\\u4E2D\\u5340\\u9694\\u51FA\\u4F86\\u4EE5\\u63D0\\u9AD8\\u5C0D\\u6BD4\\u3002\",\"\\u4F5C\\u696D\\u5340\\u57DF\\u9078\\u53D6\\u7684\\u80CC\\u666F\\u984F\\u8272(\\u4F8B\\u5982\\u8F38\\u5165\\u6216\\u6587\\u5B57\\u5340\\u57DF)\\u3002\\u8ACB\\u6CE8\\u610F\\uFF0C\\u9019\\u4E0D\\u9069\\u7528\\u65BC\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7684\\u9078\\u53D6\\u3002\",\"\\u6587\\u5B57\\u5206\\u9694\\u7B26\\u865F\\u7684\\u984F\\u8272\\u3002\",\"\\u5167\\u6587\\u9023\\u7D50\\u7684\\u524D\\u666F\\u8272\\u5F69\",\"\\u7576\\u6ED1\\u9F20\\u9EDE\\u64CA\\u6216\\u61F8\\u505C\\u6642\\uFF0C\\u6587\\u5B57\\u4E2D\\u9023\\u7D50\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u63D0\\u793A\\u53CA\\u5EFA\\u8B70\\u6587\\u5B57\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u6587\\u5167\\u5F15\\u7528\\u5340\\u584A\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u5F15\\u7528\\u6587\\u5B57\\u7684\\u6846\\u7DDA\\u984F\\u8272\\u3002\",\"\\u6587\\u5B57\\u5340\\u584A\\u7684\\u80CC\\u666F\\u984F\\u8272\\u3002\",\"\\u5C0F\\u5DE5\\u5177\\u7684\\u9670\\u5F71\\u8272\\u5F69\\uFF0C\\u4F8B\\u5982\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7684\\u5C0B\\u627E/\\u53D6\\u4EE3\\u3002\",\"\\u5C0F\\u5DE5\\u5177\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\uFF0C\\u4F8B\\u5982\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7684\\u5C0B\\u627E/\\u53D6\\u4EE3\\u3002\",\"\\u8F38\\u5165\\u65B9\\u584A\\u7684\\u80CC\\u666F\\u3002\",\"\\u8F38\\u5165\\u65B9\\u584A\\u7684\\u524D\\u666F\\u3002\",\"\\u8F38\\u5165\\u65B9\\u584A\\u7684\\u6846\\u7DDA\\u3002\",\"\\u8F38\\u5165\\u6B04\\u4F4D\\u4E2D\\u53EF\\u4F7F\\u7528\\u4E4B\\u9805\\u76EE\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u5728\\u8F38\\u5165\\u6B04\\u4F4D\\u4E2D\\u6240\\u555F\\u52D5\\u9078\\u9805\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u8F38\\u5165\\u6B04\\u4F4D\\u4E2D\\u9078\\u9805\\u7684\\u80CC\\u666F\\u66AB\\u7559\\u8272\\u5F69\\u3002\",\"\\u5728\\u8F38\\u5165\\u6B04\\u4F4D\\u4E2D\\u6240\\u555F\\u52D5\\u9078\\u9805\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u6587\\u5B57\\u8F38\\u5165\\u66FF\\u4EE3\\u5B57\\u7B26\\u7684\\u524D\\u666F\\u984F\\u8272\\u3002\",\"\\u8CC7\\u8A0A\\u56B4\\u91CD\\u6027\\u7684\\u8F38\\u5165\\u9A57\\u8B49\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u8CC7\\u8A0A\\u56B4\\u91CD\\u6027\\u7684\\u8F38\\u5165\\u9A57\\u8B49\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u8CC7\\u8A0A\\u56B4\\u91CD\\u6027\\u7684\\u8F38\\u5165\\u9A57\\u8B49\\u908A\\u754C\\u8272\\u5F69\\u3002\",\"\\u8B66\\u544A\\u56B4\\u91CD\\u6027\\u7684\\u8F38\\u5165\\u9A57\\u8B49\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u8B66\\u544A\\u56B4\\u91CD\\u6027\\u7684\\u8F38\\u5165\\u9A57\\u8B49\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u8B66\\u544A\\u56B4\\u91CD\\u6027\\u7684\\u8F38\\u5165\\u9A57\\u8B49\\u908A\\u754C\\u8272\\u5F69\\u3002\",\"\\u932F\\u8AA4\\u56B4\\u91CD\\u6027\\u7684\\u8F38\\u5165\\u9A57\\u8B49\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u932F\\u8AA4\\u56B4\\u91CD\\u6027\\u7684\\u8F38\\u5165\\u9A57\\u8B49\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u932F\\u8AA4\\u56B4\\u91CD\\u6027\\u7684\\u8F38\\u5165\\u9A57\\u8B49\\u908A\\u754C\\u8272\\u5F69\\u3002\",\"\\u4E0B\\u62C9\\u5F0F\\u6E05\\u55AE\\u7684\\u80CC\\u666F\\u3002\",\"\\u4E0B\\u62C9\\u5F0F\\u6E05\\u55AE\\u7684\\u80CC\\u666F\\u3002\",\"\\u4E0B\\u62C9\\u5F0F\\u6E05\\u55AE\\u7684\\u524D\\u666F\\u3002\",\"\\u4E0B\\u62C9\\u5F0F\\u6E05\\u55AE\\u7684\\u6846\\u7DDA\\u3002\",\"\\u6309\\u9215\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u5206\\u9694\\u7DDA\\u8272\\u5F69\\u6309\\u9215\\u3002\",\"\\u6309\\u9215\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u66AB\\u7559\\u6642\\u7684\\u6309\\u9215\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u6309\\u9215\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u6B21\\u8981\\u6309\\u9215\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u6B21\\u8981\\u6309\\u9215\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u6ED1\\u9F20\\u66AB\\u7559\\u6642\\u7684\\u6B21\\u8981\\u6309\\u9215\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u6A19\\u8A18\\u7684\\u80CC\\u666F\\u984F\\u8272\\u3002\\u6A19\\u8A18\\u70BA\\u5C0F\\u578B\\u7684\\u8A0A\\u606F\\u6A19\\u7C64,\\u4F8B\\u5982\\u641C\\u5C0B\\u7D50\\u679C\\u7684\\u6578\\u91CF\\u3002\",\"\\u6A19\\u8A18\\u7684\\u524D\\u666F\\u984F\\u8272\\u3002\\u6A19\\u8A18\\u70BA\\u5C0F\\u578B\\u7684\\u8A0A\\u606F\\u6A19\\u7C64,\\u4F8B\\u5982\\u641C\\u5C0B\\u7D50\\u679C\\u7684\\u6578\\u91CF\\u3002\",\"\\u6307\\u51FA\\u5728\\u6372\\u52D5\\u8A72\\u6AA2\\u8996\\u7684\\u6372\\u8EF8\\u9670\\u5F71\\u3002\",\"\\u6372\\u8EF8\\u6ED1\\u687F\\u7684\\u80CC\\u666F\\u984F\\u8272\\u3002\",\"\\u52D5\\u614B\\u986F\\u793A\\u6642\\u6372\\u8EF8\\u6ED1\\u687F\\u7684\\u80CC\\u666F\\u984F\\u8272\\u3002\",\"\\u7576\\u9EDE\\u64CA\\u6642\\u6372\\u8EF8\\u6ED1\\u687F\\u7684\\u80CC\\u666F\\u984F\\u8272\\u3002\",\"\\u9577\\u6642\\u9593\\u904B\\u884C\\u9032\\u5EA6\\u689D\\u7684\\u80CC\\u666F\\u8272\\u5F69.\",\"\\u7DE8\\u8F2F\\u5668\\u4E2D\\u932F\\u8AA4\\u6587\\u5B57\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5167\\u932F\\u8AA4\\u63D0\\u793A\\u7DDA\\u7684\\u524D\\u666F\\u8272\\u5F69.\",\"\\u5982\\u679C\\u8A2D\\u5B9A\\uFF0C\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7684\\u932F\\u8AA4\\u6703\\u986F\\u793A\\u96D9\\u5E95\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u4E2D\\u8B66\\u544A\\u6587\\u5B57\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5167\\u8B66\\u544A\\u63D0\\u793A\\u7DDA\\u7684\\u524D\\u666F\\u8272\\u5F69.\",\"\\u5982\\u679C\\u8A2D\\u5B9A\\uFF0C\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7684\\u8B66\\u544A\\u6703\\u986F\\u793A\\u96D9\\u5E95\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u4E2D\\u8CC7\\u8A0A\\u6587\\u5B57\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5167\\u8CC7\\u8A0A\\u63D0\\u793A\\u7DDA\\u7684\\u524D\\u666F\\u8272\\u5F69\",\"\\u5982\\u679C\\u8A2D\\u5B9A\\uFF0C\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7684\\u63D0\\u793A\\u6703\\u986F\\u793A\\u96D9\\u5E95\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5167\\u63D0\\u793A\\u8A0A\\u606F\\u7684\\u63D0\\u793A\\u7DDA\\u524D\\u666F\\u8272\\u5F69\",\"\\u5982\\u679C\\u8A2D\\u5B9A\\uFF0C\\u7DE8\\u8F2F\\u5668\\u4E2D\\u7684\\u63D0\\u793A\\u6703\\u986F\\u793A\\u96D9\\u5E95\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u98FE\\u5E36\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u7684\\u9810\\u8A2D\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u7684\\u9ECF\\u6EEF\\u5377\\u8EF8\\u80CC\\u666F\\u8272\\u5F69\",\"\\u7DE8\\u8F2F\\u5668\\u7684\\u6E38\\u6A19\\u80CC\\u666F\\u8272\\u5F69\\u4E0A\\u7684\\u9ECF\\u6EEF\\u5377\\u8EF8\",\"\\u7DE8\\u8F2F\\u5668\\u5C0F\\u5DE5\\u5177\\u7684\\u80CC\\u666F\\u8272\\u5F69\\uFF0C\\u4F8B\\u5982\\u5C0B\\u627E/\\u53D6\\u4EE3\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5C0F\\u5DE5\\u5177 (\\u4F8B\\u5982\\u5C0B\\u627E/\\u53D6\\u4EE3) \\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5C0F\\u5DE5\\u5177\\u7684\\u908A\\u754C\\u8272\\u5F69\\u3002\\u5C0F\\u5DE5\\u5177\\u9078\\u64C7\\u64C1\\u6709\\u908A\\u754C\\u6216\\u8272\\u5F69\\u672A\\u88AB\\u5C0F\\u5DE5\\u5177\\u8986\\u5BEB\\u6642\\uFF0C\\u624D\\u6703\\u4F7F\\u7528\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u5C0F\\u5DE5\\u5177\\u4E4B\\u8ABF\\u6574\\u5927\\u5C0F\\u5217\\u7684\\u908A\\u754C\\u8272\\u5F69\\u3002\\u53EA\\u5728\\u5C0F\\u5DE5\\u5177\\u9078\\u64C7\\u5177\\u6709\\u8ABF\\u6574\\u5927\\u5C0F\\u908A\\u754C\\u4E14\\u672A\\u8986\\u5BEB\\u8A72\\u8272\\u5F69\\u6642\\uFF0C\\u624D\\u4F7F\\u7528\\u8A72\\u8272\\u5F69\\u3002\",\"\\u5FEB\\u901F\\u9078\\u64C7\\u5668\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u8A72\\u5FEB\\u901F\\u9078\\u64C7\\u5668\\u5C0F\\u5DE5\\u5177\\u662F\\u985E\\u4F3C\\u547D\\u4EE4\\u9078\\u64C7\\u5340\\u7684\\u9078\\u64C7\\u5668\\u5BB9\\u5668\\u3002\",\"\\u5FEB\\u901F\\u9078\\u64C7\\u5668\\u524D\\u666F\\u8272\\u5F69\\u3002\\u5FEB\\u901F\\u9078\\u64C7\\u5668\\u5C0F\\u5DE5\\u5177\\u662F\\u985E\\u4F3C\\u547D\\u4EE4\\u9078\\u64C7\\u5340\\u7B49\\u9078\\u64C7\\u5668\\u7684\\u5BB9\\u5668\\u3002\",\"\\u5FEB\\u901F\\u9078\\u64C7\\u5668\\u6A19\\u984C\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u5FEB\\u901F\\u9078\\u64C7\\u5668\\u5C0F\\u5DE5\\u5177\\u662F\\u985E\\u4F3C\\u547D\\u4EE4\\u9078\\u64C7\\u5340\\u7684\\u9078\\u64C7\\u5668\\u5BB9\\u5668\\u3002\",\"\\u5206\\u7D44\\u6A19\\u7C64\\u7684\\u5FEB\\u901F\\u9078\\u64C7\\u5668\\u8272\\u5F69\\u3002\",\"\\u5206\\u7D44\\u908A\\u754C\\u7684\\u5FEB\\u901F\\u9078\\u64C7\\u5668\\u8272\\u5F69\\u3002\",\"\\u91D1\\u9470\\u7D81\\u5B9A\\u6A19\\u7C64\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u6309\\u9375\\u7D81\\u5B9A\\u6A19\\u7C64\\u7528\\u4F86\\u4EE3\\u8868\\u9375\\u76E4\\u5FEB\\u901F\\u9375\\u3002\",\"\\u91D1\\u9470\\u7D81\\u5B9A\\u6A19\\u7C64\\u524D\\u666F\\u8272\\u5F69\\u3002\\u6309\\u9375\\u7D81\\u5B9A\\u6A19\\u7C64\\u7528\\u4F86\\u4EE3\\u8868\\u9375\\u76E4\\u5FEB\\u901F\\u9375\\u3002\",\"\\u91D1\\u9470\\u7D81\\u5B9A\\u6A19\\u7C64\\u908A\\u6846\\u8272\\u5F69\\u3002\\u6309\\u9375\\u7D81\\u5B9A\\u6A19\\u7C64\\u7528\\u4F86\\u4EE3\\u8868\\u9375\\u76E4\\u5FEB\\u901F\\u9375\\u3002\",\"\\u91D1\\u9470\\u7D81\\u5B9A\\u6A19\\u7C64\\u908A\\u6846\\u5E95\\u90E8\\u8272\\u5F69\\u3002\\u6309\\u9375\\u7D81\\u5B9A\\u6A19\\u7C64\\u7528\\u4F86\\u4EE3\\u8868\\u9375\\u76E4\\u5FEB\\u901F\\u9375\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u9078\\u53D6\\u7BC4\\u570D\\u7684\\u8272\\u5F69\\u3002\",\"\\u70BA\\u9078\\u53D6\\u7684\\u6587\\u5B57\\u984F\\u8272\\u9AD8\\u5C0D\\u6BD4\\u5316\",\"\\u975E\\u4F7F\\u7528\\u4E2D\\u7DE8\\u8F2F\\u5668\\u5167\\u7684\\u9078\\u53D6\\u9805\\u76EE\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u8207\\u9078\\u53D6\\u9805\\u76EE\\u5167\\u5BB9\\u76F8\\u540C\\u4E4B\\u5340\\u57DF\\u7684\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u9078\\u53D6\\u6642\\uFF0C\\u5167\\u5BB9\\u76F8\\u540C\\u4E4B\\u5340\\u57DF\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u7B26\\u5408\\u76EE\\u524D\\u641C\\u5C0B\\u7684\\u8272\\u5F69\\u3002\",\"\\u5176\\u4ED6\\u641C\\u5C0B\\u76F8\\u7B26\\u9805\\u76EE\\u7684\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u9650\\u5236\\u641C\\u5C0B\\u4E4B\\u7BC4\\u570D\\u7684\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u7B26\\u5408\\u76EE\\u524D\\u641C\\u5C0B\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u7B26\\u5408\\u5176\\u4ED6\\u641C\\u5C0B\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u9650\\u5236\\u641C\\u5C0B\\u4E4B\\u7BC4\\u570D\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u641C\\u5C0B\\u7DE8\\u8F2F\\u5668\\u67E5\\u8A62\\u7B26\\u5408\\u7684\\u8272\\u5F69\\u3002\",\"\\u641C\\u7D22\\u7DE8\\u8F2F\\u5668\\u67E5\\u8A62\\u7B26\\u5408\\u7684\\u908A\\u6846\\u8272\\u5F69\\u3002\",\"\\u641C\\u5C0B Viewlet \\u5B8C\\u6210\\u8A0A\\u606F\\u4E2D\\u6587\\u5B57\\u7684\\u8272\\u5F69\\u3002\",\"\\u5728\\u986F\\u793A\\u52D5\\u614B\\u986F\\u793A\\u7684\\u6587\\u5B57\\u4E0B\\u9192\\u76EE\\u63D0\\u793A\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u52D5\\u614B\\u986F\\u793A\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u52D5\\u614B\\u986F\\u793A\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u52D5\\u614B\\u986F\\u793A\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u66AB\\u7559\\u72C0\\u614B\\u5217\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u4F7F\\u7528\\u4E2D\\u4E4B\\u9023\\u7D50\\u7684\\u8272\\u5F69\\u3002\",\"\\u5167\\u5D4C\\u63D0\\u793A\\u7684\\u524D\\u666F\\u8272\\u5F69\",\"\\u5167\\u5D4C\\u63D0\\u793A\\u7684\\u80CC\\u666F\\u8272\\u5F69\",\"\\u985E\\u578B\\u5167\\u5D4C\\u63D0\\u793A\\u7684\\u524D\\u666F\\u8272\\u5F69\",\"\\u985E\\u578B\\u5167\\u5D4C\\u63D0\\u793A\\u7684\\u80CC\\u666F\\u8272\\u5F69\",\"\\u53C3\\u6578\\u5167\\u5D4C\\u63D0\\u793A\\u7684\\u524D\\u666F\\u8272\\u5F69\",\"\\u53C3\\u6578\\u5167\\u5D4C\\u63D0\\u793A\\u7684\\u80CC\\u666F\\u8272\\u5F69\",\"\\u7528\\u65BC\\u71C8\\u6CE1\\u52D5\\u4F5C\\u5716\\u793A\\u7684\\u8272\\u5F69\\u3002\",\"\\u7528\\u65BC\\u71C8\\u6CE1\\u81EA\\u52D5\\u4FEE\\u6B63\\u52D5\\u4F5C\\u5716\\u793A\\u7684\\u8272\\u5F69\\u3002\",\"\\u5DF2\\u63D2\\u5165\\u6587\\u5B57\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u5DF2\\u79FB\\u9664\\u6587\\u5B57\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u5DF2\\u63D2\\u5165\\u7A0B\\u5F0F\\u884C\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u5DF2\\u79FB\\u9664\\u7A0B\\u5F0F\\u884C\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u63D2\\u5165\\u7A0B\\u5F0F\\u884C\\u6240\\u5728\\u908A\\u754C\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u79FB\\u9664\\u7A0B\\u5F0F\\u884C\\u6240\\u5728\\u908A\\u754C\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u63D2\\u5165\\u5167\\u5BB9\\u7684\\u5DEE\\u7570\\u6982\\u89C0\\u5C3A\\u898F\\u524D\\u666F\\u3002\",\"\\u79FB\\u9664\\u5167\\u5BB9\\u7684\\u5DEE\\u7570\\u6982\\u89C0\\u5C3A\\u898F\\u524D\\u666F\\u3002\",\"\\u63D2\\u5165\\u7684\\u6587\\u5B57\\u5916\\u6846\\u8272\\u5F69\\u3002\",\"\\u79FB\\u9664\\u7684\\u6587\\u5B57\\u5916\\u6846\\u8272\\u5F69\\u3002\",\"\\u5169\\u500B\\u6587\\u5B57\\u7DE8\\u8F2F\\u5668\\u4E4B\\u9593\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"Diff \\u7DE8\\u8F2F\\u5668\\u7684\\u659C\\u7D0B\\u586B\\u6EFF\\u8272\\u5F69\\u3002\\u659C\\u7D0B\\u586B\\u6EFF\\u7528\\u65BC\\u4E26\\u6392 Diff \\u6AA2\\u8996\\u3002\",\"Diff \\u7DE8\\u8F2F\\u5668\\u4E2D\\u672A\\u8B8A\\u66F4\\u5340\\u584A\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"Diff \\u7DE8\\u8F2F\\u5668\\u4E2D\\u672A\\u8B8A\\u66F4\\u5340\\u584A\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"Diff \\u7DE8\\u8F2F\\u5668\\u4E2D\\u672A\\u8B8A\\u66F4\\u7A0B\\u5F0F\\u78BC\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u7576\\u6E05\\u55AE/\\u6A39\\u72C0\\u70BA\\u4F7F\\u7528\\u4E2D\\u72C0\\u614B\\u6642\\uFF0C\\u7126\\u9EDE\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u4F7F\\u7528\\u4E2D\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u6709\\u9375\\u76E4\\u7126\\u9EDE\\uFF0C\\u975E\\u4F7F\\u7528\\u4E2D\\u8005\\u5247\\u6C92\\u6709\\u3002\",\"\\u7576\\u6E05\\u55AE/\\u6A39\\u72C0\\u70BA\\u4F7F\\u7528\\u4E2D\\u72C0\\u614B\\u6642\\uFF0C\\u7126\\u9EDE\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u524D\\u666F\\u8272\\u5F69\\u3002\\u4F7F\\u7528\\u4E2D\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u6709\\u9375\\u76E4\\u7126\\u9EDE\\uFF0C\\u975E\\u4F7F\\u7528\\u4E2D\\u8005\\u5247\\u6C92\\u6709\\u3002\",\"\\u7576\\u6E05\\u55AE/\\u6A39\\u72C0\\u76EE\\u9304\\u70BA\\u4F7F\\u7528\\u4E2D\\u72C0\\u614B\\u6642\\uFF0C\\u7126\\u9EDE\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u76EE\\u9304\\u5916\\u6846\\u8272\\u5F69\\u3002\\u4F7F\\u7528\\u4E2D\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u76EE\\u9304\\u6709\\u9375\\u76E4\\u7126\\u9EDE\\uFF0C\\u975E\\u4F7F\\u7528\\u4E2D\\u8005\\u5247\\u6C92\\u6709\\u3002\",\"\\u7576\\u6E05\\u55AE/\\u6A39\\u72C0\\u76EE\\u9304\\u70BA\\u4F7F\\u7528\\u4E2D\\u72C0\\u614B\\u4E26\\u5DF2\\u9078\\u53D6\\u6642\\uFF0C\\u7126\\u9EDE\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u76EE\\u9304\\u5916\\u6846\\u8272\\u5F69\\u3002\\u4F7F\\u7528\\u4E2D\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u76EE\\u9304\\u5177\\u6709\\u9375\\u76E4\\u7126\\u9EDE\\uFF0C\\u975E\\u4F7F\\u7528\\u4E2D\\u8005\\u5247\\u6C92\\u6709\\u3002\",\"\\u7576\\u6E05\\u55AE/\\u6A39\\u72C0\\u70BA\\u4F7F\\u7528\\u4E2D\\u72C0\\u614B\\u6642\\uFF0C\\u6240\\u9078\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u4F7F\\u7528\\u4E2D\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u6709\\u9375\\u76E4\\u7126\\u9EDE\\uFF0C\\u975E\\u4F7F\\u7528\\u4E2D\\u8005\\u5247\\u6C92\\u6709\\u3002\",\"\\u7576\\u6E05\\u55AE/\\u6A39\\u72C0\\u70BA\\u4F7F\\u7528\\u4E2D\\u72C0\\u614B\\u6642\\uFF0C\\u6240\\u9078\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u524D\\u666F\\u8272\\u5F69\\u3002\\u4F7F\\u7528\\u4E2D\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u6709\\u9375\\u76E4\\u7126\\u9EDE\\uFF0C\\u975E\\u4F7F\\u7528\\u4E2D\\u8005\\u5247\\u6C92\\u6709\\u3002\",\"\\u7576\\u6E05\\u55AE/\\u6A39\\u72C0\\u70BA\\u4F7F\\u7528\\u4E2D\\u72C0\\u614B\\u6642\\uFF0C\\u6240\\u9078\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u5716\\u793A\\u524D\\u666F\\u8272\\u5F69\\u3002\\u4F7F\\u7528\\u4E2D\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u6709\\u9375\\u76E4\\u7126\\u9EDE\\uFF0C\\u975E\\u4F7F\\u7528\\u4E2D\\u8005\\u5247\\u6C92\\u6709\\u3002\",\"\\u7576\\u6E05\\u55AE/\\u6A39\\u72C0\\u70BA\\u975E\\u4F7F\\u7528\\u4E2D\\u72C0\\u614B\\u6642\\uFF0C\\u6240\\u9078\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u4F7F\\u7528\\u4E2D\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u6709\\u9375\\u76E4\\u7126\\u9EDE\\uFF0C\\u975E\\u4F7F\\u7528\\u4E2D\\u8005\\u5247\\u6C92\\u6709\\u3002\",\"\\u7576\\u6E05\\u55AE/\\u6A39\\u72C0\\u70BA\\u4F7F\\u7528\\u4E2D\\u72C0\\u614B\\u6642\\uFF0C\\u6240\\u9078\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u524D\\u666F\\u8272\\u5F69\\u3002\\u4F7F\\u7528\\u4E2D\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u6709\\u9375\\u76E4\\u7126\\u9EDE\\uFF0C\\u975E\\u4F7F\\u7528\\u4E2D\\u5247\\u6C92\\u6709\\u3002\",\"\\u7576\\u6E05\\u55AE/\\u6A39\\u72C0\\u70BA\\u975E\\u4F7F\\u7528\\u4E2D\\u72C0\\u614B\\u6642\\uFF0C\\u6240\\u9078\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u5716\\u793A\\u524D\\u666F\\u8272\\u5F69\\u3002\\u4F7F\\u7528\\u4E2D\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u6709\\u9375\\u76E4\\u7126\\u9EDE\\uFF0C\\u975E\\u4F7F\\u7528\\u4E2D\\u8005\\u5247\\u6C92\\u6709\\u3002\",\"\\u7576\\u6E05\\u55AE/\\u6A39\\u72C0\\u70BA\\u975E\\u4F7F\\u7528\\u4E2D\\u72C0\\u614B\\u6642\\uFF0C\\u7126\\u9EDE\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u80CC\\u666F\\u8272\\u5F69\\u3002\\u4F7F\\u7528\\u4E2D\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u6709\\u9375\\u76E4\\u7126\\u9EDE\\uFF0C\\u975E\\u4F7F\\u7528\\u4E2D\\u8005\\u5247\\u6C92\\u6709\\u3002\",\"\\u7576\\u6E05\\u55AE/\\u6A39\\u72C0\\u76EE\\u9304\\u70BA\\u975E\\u4F7F\\u7528\\u4E2D\\u72C0\\u614B\\u6642\\uFF0C\\u7126\\u9EDE\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u76EE\\u9304\\u5916\\u6846\\u8272\\u5F69\\u3002\\u4F7F\\u7528\\u4E2D\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u76EE\\u9304\\u6709\\u9375\\u76E4\\u7126\\u9EDE\\uFF0C\\u975E\\u4F7F\\u7528\\u4E2D\\u8005\\u5247\\u6C92\\u6709\\u3002\",\"\\u4F7F\\u7528\\u6ED1\\u9F20\\u66AB\\u7559\\u5728\\u9805\\u76EE\\u6642\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u80CC\\u666F\\u3002\",\"\\u6ED1\\u9F20\\u66AB\\u7559\\u5728\\u9805\\u76EE\\u6642\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u524D\\u666F\\u3002\",\"\\u4F7F\\u7528\\u6ED1\\u9F20\\u56DB\\u8655\\u79FB\\u52D5\\u9805\\u76EE\\u6642\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u62D6\\u653E\\u80CC\\u666F\\u3002\",\"\\u5728\\u6E05\\u55AE/\\u6A39\\u72C0\\u5167\\u641C\\u5C0B\\u6642\\uFF0C\\u76F8\\u7B26\\u9192\\u76EE\\u63D0\\u793A\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u5728\\u6E05\\u55AE/\\u6A39\\u72C0\\u5167\\u641C\\u5C0B\\u6642\\uFF0C\\u76F8\\u7B26\\u9805\\u76EE\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u7D50\\u69CB\\u524D\\u666F\\u8272\\u5F69\\u6703\\u91DD\\u5C0D\\u4E3B\\u52D5\\u7126\\u9EDE\\u9805\\u76EE\\u9032\\u884C\\u5F37\\u8ABF\\u986F\\u793A\\u3002\",\"\\u5217\\u8868/\\u6A39\\u72C0 \\u7121\\u6548\\u9805\\u76EE\\u7684\\u524D\\u666F\\u8272\\u5F69\\uFF0C\\u4F8B\\u5982\\u5728\\u700F\\u89BD\\u8996\\u7A97\\u7121\\u6CD5\\u89E3\\u6790\\u7684\\u6839\\u76EE\\u9304\",\"\\u5305\\u542B\\u932F\\u8AA4\\u6E05\\u55AE\\u9805\\u76EE\\u7684\\u524D\\u666F\\u8272\\u5F69\",\"\\u5305\\u542B\\u8B66\\u544A\\u6E05\\u55AE\\u9805\\u76EE\\u7684\\u524D\\u666F\\u8272\\u5F69\",\"\\u6E05\\u55AE\\u548C\\u6A39\\u72C0\\u7D50\\u69CB\\u4E2D\\u985E\\u578B\\u7BE9\\u9078\\u5C0F\\u5DE5\\u5177\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u6E05\\u55AE\\u548C\\u6A39\\u72C0\\u7D50\\u69CB\\u4E2D\\u985E\\u578B\\u7BE9\\u9078\\u5C0F\\u5DE5\\u5177\\u7684\\u5927\\u7DB1\\u8272\\u5F69\\u3002\",\"\\u5728\\u6C92\\u6709\\u76F8\\u7B26\\u9805\\u76EE\\u6642\\uFF0C\\u6E05\\u55AE\\u548C\\u6A39\\u72C0\\u7D50\\u69CB\\u4E2D\\u985E\\u578B\\u7BE9\\u9078\\u5C0F\\u5DE5\\u5177\\u7684\\u5927\\u7DB1\\u8272\\u5F69\\u3002\",\"\\u6E05\\u55AE\\u548C\\u6A39\\u72C0\\u7D50\\u69CB\\u4E2D\\u985E\\u578B\\u7BE9\\u9078\\u5C0F\\u5DE5\\u5177\\u7684\\u9670\\u5F71\\u8272\\u5F69\\u3002\",\"\\u5DF2\\u7BE9\\u9078\\u76F8\\u7B26\\u9805\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u5DF2\\u7BE9\\u9078\\u76F8\\u7B26\\u9805\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u6A39\\u72C0\\u7B46\\u89F8\\u8272\\u5F69\\u3002\",\"\\u975E\\u4F7F\\u7528\\u4E2D\\u7E2E\\u6392\\u8F14\\u52A9\\u7DDA\\u7684\\u6A39\\u72C0\\u7B46\\u89F8\\u8272\\u5F69\\u3002\",\"\\u8CC7\\u6599\\u884C\\u4E4B\\u9593\\u7684\\u8CC7\\u6599\\u8868\\u908A\\u754C\\u8272\\u5F69\\u3002\",\"\\u5947\\u6578\\u8CC7\\u6599\\u8868\\u8CC7\\u6599\\u5217\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u5DF2\\u53D6\\u6D88\\u5F37\\u8ABF\\u7684\\u6E05\\u55AE/\\u6A39\\u72C0\\u7D50\\u69CB\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u6838\\u53D6\\u65B9\\u584A\\u5C0F\\u5DE5\\u5177\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u9078\\u53D6\\u5176\\u6240\\u8655\\u5143\\u7D20\\u6642\\uFF0C\\u6838\\u53D6\\u65B9\\u584A\\u5C0F\\u5DE5\\u5177\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u6838\\u53D6\\u65B9\\u584A\\u5C0F\\u5DE5\\u5177\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u6838\\u53D6\\u65B9\\u584A\\u5C0F\\u5DE5\\u5177\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u9078\\u53D6\\u5176\\u6240\\u8655\\u5143\\u7D20\\u6642\\uFF0C\\u6838\\u53D6\\u65B9\\u584A\\u5C0F\\u5DE5\\u5177\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u8ACB\\u6539\\u7528 quickInputList.focusBackground\",\"\\u7126\\u9EDE\\u9805\\u76EE\\u7684\\u5FEB\\u901F\\u9078\\u64C7\\u5668\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u7126\\u9EDE\\u9805\\u76EE\\u7684\\u5FEB\\u901F\\u9078\\u64C7\\u5668\\u5716\\u793A\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u7126\\u9EDE\\u9805\\u76EE\\u7684\\u5FEB\\u901F\\u9078\\u64C7\\u5668\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u529F\\u80FD\\u8868\\u7684\\u908A\\u6846\\u8272\\u5F69\\u3002\",\"\\u529F\\u80FD\\u8868\\u9805\\u76EE\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u529F\\u80FD\\u8868\\u9805\\u76EE\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u529F\\u80FD\\u8868\\u4E2D\\u6240\\u9078\\u529F\\u80FD\\u8868\\u9805\\u76EE\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u529F\\u80FD\\u8868\\u4E2D\\u6240\\u9078\\u529F\\u80FD\\u8868\\u9805\\u76EE\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u529F\\u80FD\\u8868\\u4E2D\\u6240\\u9078\\u529F\\u80FD\\u8868\\u9805\\u76EE\\u7684\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u529F\\u80FD\\u8868\\u4E2D\\u5206\\u9694\\u7DDA\\u529F\\u80FD\\u8868\\u9805\\u76EE\\u7684\\u8272\\u5F69\\u3002\",\"\\u4F7F\\u7528\\u6ED1\\u9F20\\u5C07\\u6E38\\u6A19\\u505C\\u7559\\u5728\\u52D5\\u4F5C\\u4E0A\\u65B9\\u6642\\u7684\\u5DE5\\u5177\\u5217\\u80CC\\u666F\",\"\\u4F7F\\u7528\\u6ED1\\u9F20\\u5C07\\u6E38\\u6A19\\u505C\\u7559\\u5728\\u52D5\\u4F5C\\u4E0A\\u65B9\\u6642\\u7684\\u5DE5\\u5177\\u5217\\u5916\\u6846\",\"\\u5C07\\u6ED1\\u9F20\\u79FB\\u5230\\u52D5\\u4F5C\\u4E0A\\u65B9\\u6642\\u7684\\u5DE5\\u5177\\u5217\\u80CC\\u666F\",\"\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u5B9A\\u4F4D\\u505C\\u99D0\\u9EDE\\u7684\\u53CD\\u767D\\u986F\\u793A\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u5B9A\\u4F4D\\u505C\\u99D0\\u9EDE\\u7684\\u53CD\\u767D\\u986F\\u793A\\u908A\\u754C\\u8272\\u5F69\\u3002\",\"\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u6700\\u7D42\\u5B9A\\u4F4D\\u505C\\u99D0\\u9EDE\\u7684\\u53CD\\u767D\\u986F\\u793A\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u7A0B\\u5F0F\\u78BC\\u7247\\u6BB5\\u6700\\u7D42\\u5B9A\\u4F4D\\u505C\\u99D0\\u9EDE\\u7684\\u9192\\u76EE\\u63D0\\u793A\\u6846\\u7DDA\\u8272\\u5F69\\u3002\",\"\\u7126\\u9EDE\\u968E\\u5C64\\u9023\\u7D50\\u9805\\u76EE\\u7684\\u8272\\u5F69\\u3002\",\"\\u968E\\u5C64\\u9023\\u7D50\\u7684\\u80CC\\u666F\\u8272\\u3002\",\"\\u7126\\u9EDE\\u968E\\u5C64\\u9023\\u7D50\\u9805\\u76EE\\u7684\\u8272\\u5F69\\u3002\",\"\\u6240\\u9078\\u968E\\u5C64\\u9023\\u7D50\\u9805\\u76EE\\u7684\\u8272\\u5F69\\u3002\",\"\\u968E\\u5C64\\u9023\\u7D50\\u9805\\u76EE\\u9078\\u64C7\\u5668\\u7684\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u5167\\u5D4C\\u5408\\u4F75\\u885D\\u7A81\\u4E2D\\u76EE\\u524D\\u7684\\u6A19\\u982D\\u80CC\\u666F\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u5167\\u5D4C\\u5408\\u4F75\\u885D\\u7A81\\u4E2D\\u7684\\u76EE\\u524D\\u5167\\u5BB9\\u80CC\\u666F\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u5167\\u5D4C\\u5408\\u4F75\\u885D\\u7A81\\u4E2D\\u7684\\u50B3\\u5165\\u6A19\\u982D\\u80CC\\u666F\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u5167\\u5D4C\\u5408\\u4F75\\u885D\\u7A81\\u4E2D\\u7684\\u50B3\\u5165\\u5167\\u5BB9\\u80CC\\u666F\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u5167\\u5D4C\\u5408\\u4F75\\u885D\\u7A81\\u4E2D\\u7684\\u4E00\\u822C\\u4E0A\\u968E\\u6A19\\u982D\\u80CC\\u666F\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u5167\\u5D4C\\u5408\\u4F75\\u885D\\u7A81\\u4E2D\\u7684\\u4E00\\u822C\\u4E0A\\u968E\\u5167\\u5BB9\\u80CC\\u666F\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u5167\\u5D4C\\u5408\\u4F75\\u885D\\u7A81\\u4E2D\\u6A19\\u982D\\u53CA\\u5206\\u9694\\u5668\\u7684\\u908A\\u754C\\u8272\\u5F69\\u3002\",\"\\u76EE\\u524D\\u5167\\u5D4C\\u5408\\u4F75\\u885D\\u7A81\\u7684\\u6982\\u89C0\\u5C3A\\u898F\\u524D\\u666F\\u3002\",\"\\u50B3\\u5165\\u5167\\u5D4C\\u5408\\u4F75\\u885D\\u7A81\\u7684\\u6982\\u89C0\\u5C3A\\u898F\\u524D\\u666F\\u3002\",\"\\u5167\\u5D4C\\u5408\\u4F75\\u885D\\u7A81\\u4E2D\\u7684\\u5171\\u540C\\u4E0A\\u968E\\u6982\\u89C0\\u5C3A\\u898F\\u524D\\u666F\\u3002\",\"\\u5C0B\\u627E\\u76F8\\u7B26\\u9805\\u76EE\\u7684\\u6982\\u89C0\\u5C3A\\u898F\\u6A19\\u8A18\\u8272\\u5F69\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u9078\\u53D6\\u9805\\u76EE\\u9192\\u76EE\\u63D0\\u793A\\u7684\\u6982\\u89C0\\u5C3A\\u898F\\u6A19\\u8A18\\u3002\\u5176\\u4E0D\\u5F97\\u70BA\\u4E0D\\u900F\\u660E\\u8272\\u5F69\\uFF0C\\u4EE5\\u514D\\u96B1\\u85CF\\u5E95\\u5C64\\u88DD\\u98FE\\u3002\",\"\\u7528\\u65BC\\u5C0B\\u627E\\u76F8\\u7B26\\u9805\\u76EE\\u7684\\u7E2E\\u5716\\u6A19\\u8A18\\u8272\\u5F69\\u3002\",\"\\u91CD\\u8907\\u7DE8\\u8F2F\\u5668\\u9078\\u53D6\\u9805\\u76EE\\u7684\\u7E2E\\u5716\\u6A19\\u8A18\\u8272\\u5F69\\u3002\",\"\\u7DE8\\u8F2F\\u5668\\u9078\\u53D6\\u7BC4\\u570D\\u7684\\u8FF7\\u4F60\\u5730\\u5716\\u6A19\\u8A18\\u8272\\u5F69\\u3002\",\"\\u932F\\u8AA4\\u7684\\u7E2E\\u5716\\u6A19\\u8A18\\u8272\\u5F69\\u3002\",\"\\u8B66\\u544A\\u7684\\u7E2E\\u5716\\u6A19\\u8A18\\u8272\\u5F69\\u3002\",\"\\u7E2E\\u5716\\u80CC\\u666F\\u8272\\u5F69\\u3002\",'\\u5728\\u7E2E\\u5716\\u4E2D\\u5448\\u73FE\\u7684\\u524D\\u666F\\u5143\\u7D20\\u4E0D\\u900F\\u660E\\u5EA6\\u3002\\u4F8B\\u5982\\uFF0C\"#000000c0\" \\u6703\\u4EE5\\u4E0D\\u900F\\u660E\\u5EA6 75% \\u8F49\\u8B6F\\u5143\\u7D20\\u3002',\"\\u7E2E\\u5716\\u6ED1\\u687F\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u66AB\\u7559\\u6642\\u7684\\u7E2E\\u5716\\u6ED1\\u687F\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u6309\\u4E00\\u4E0B\\u6642\\u7684\\u7E2E\\u5716\\u6ED1\\u687F\\u80CC\\u666F\\u8272\\u5F69\\u3002\",\"\\u7528\\u65BC\\u554F\\u984C\\u932F\\u8AA4\\u5716\\u793A\\u7684\\u8272\\u5F69\\u3002\",\"\\u7528\\u65BC\\u554F\\u984C\\u8B66\\u544A\\u5716\\u793A\\u7684\\u8272\\u5F69\\u3002\",\"\\u7528\\u65BC\\u554F\\u984C\\u8CC7\\u8A0A\\u5716\\u793A\\u7684\\u8272\\u5F69\\u3002\",\"\\u5716\\u8868\\u4E2D\\u4F7F\\u7528\\u7684\\u524D\\u666F\\u8272\\u5F69\\u3002\",\"\\u7528\\u65BC\\u5716\\u8868\\u4E2D\\u6C34\\u5E73\\u7DDA\\u7684\\u8272\\u5F69\\u3002\",\"\\u5716\\u8868\\u8996\\u89BA\\u6548\\u679C\\u4E2D\\u6240\\u4F7F\\u7528\\u7684\\u7D05\\u8272\\u3002\",\"\\u5716\\u8868\\u8996\\u89BA\\u6548\\u679C\\u4E2D\\u6240\\u4F7F\\u7528\\u7684\\u85CD\\u8272\\u3002\",\"\\u5716\\u8868\\u8996\\u89BA\\u6548\\u679C\\u4E2D\\u6240\\u4F7F\\u7528\\u7684\\u9EC3\\u8272\\u3002\",\"\\u5716\\u8868\\u8996\\u89BA\\u6548\\u679C\\u4E2D\\u6240\\u4F7F\\u7528\\u7684\\u6A59\\u8272\\u3002\",\"\\u5716\\u8868\\u8996\\u89BA\\u6548\\u679C\\u4E2D\\u6240\\u4F7F\\u7528\\u7684\\u7DA0\\u8272\\u3002\",\"\\u5716\\u8868\\u8996\\u89BA\\u6548\\u679C\\u4E2D\\u6240\\u4F7F\\u7528\\u7684\\u7D2B\\u8272\\u3002\"],\"vs/platform/theme/common/iconRegistry\":[\"\\u8981\\u4F7F\\u7528\\u7684\\u5B57\\u578B\\u8B58\\u5225\\u78BC\\u3002\\u5982\\u672A\\u8A2D\\u5B9A\\uFF0C\\u5C31\\u6703\\u4F7F\\u7528\\u6700\\u5148\\u5B9A\\u7FA9\\u7684\\u5B57\\u578B\\u3002\",\"\\u8207\\u5716\\u793A\\u5B9A\\u7FA9\\u5EFA\\u7ACB\\u95DC\\u806F\\u7684\\u5B57\\u578B\\u5B57\\u5143\\u3002\",\"\\u5C0F\\u5DE5\\u5177\\u4E2D\\u95DC\\u9589\\u52D5\\u4F5C\\u7684\\u5716\\u793A\\u3002\",\"\\u79FB\\u81F3\\u4E0A\\u4E00\\u500B\\u7DE8\\u8F2F\\u5668\\u4F4D\\u7F6E\\u7684\\u5716\\u793A\\u3002\",\"\\u79FB\\u81F3\\u4E0B\\u4E00\\u500B\\u7DE8\\u8F2F\\u5668\\u4F4D\\u7F6E\\u7684\\u5716\\u793A\\u3002\"],\"vs/platform/undoRedo/common/undoRedoService\":[\"\\u5DF2\\u5728\\u78C1\\u789F\\u4E0A\\u95DC\\u9589\\u4E26\\u4FEE\\u6539\\u4EE5\\u4E0B\\u6A94\\u6848: {0}\\u3002\",\"\\u4E0B\\u5217\\u6A94\\u6848\\u5DF2\\u4F7F\\u7528\\u4E0D\\u76F8\\u5BB9\\u7684\\u65B9\\u5F0F\\u4FEE\\u6539: {0}\\u3002\",\"\\u7121\\u6CD5\\u5FA9\\u539F\\u6240\\u6709\\u6A94\\u6848\\u7684 '{0}'\\u3002{1}\",\"\\u7121\\u6CD5\\u5FA9\\u539F\\u6240\\u6709\\u6A94\\u6848\\u7684 '{0}'\\u3002{1}\",\"\\u56E0\\u70BA\\u5DF2\\u5C0D {1} \\u9032\\u884C\\u8B8A\\u66F4\\uFF0C\\u6240\\u4EE5\\u7121\\u6CD5\\u5FA9\\u539F\\u6240\\u6709\\u6A94\\u6848\\u7684 '{0}'\",\"\\u56E0\\u70BA {1} \\u4E2D\\u5DF2\\u7D93\\u6709\\u6B63\\u5728\\u57F7\\u884C\\u7684\\u5FA9\\u539F\\u6216\\u91CD\\u505A\\u4F5C\\u696D\\uFF0C\\u6240\\u4EE5\\u7121\\u6CD5\\u70BA\\u6240\\u6709\\u6A94\\u6848\\u5FA9\\u539F '{0}'\",\"\\u56E0\\u70BA\\u540C\\u6642\\u767C\\u751F\\u5176\\u4ED6\\u5FA9\\u539F\\u6216\\u91CD\\u505A\\u4F5C\\u696D\\uFF0C\\u6240\\u4EE5\\u7121\\u6CD5\\u70BA\\u6240\\u6709\\u6A94\\u6848\\u5FA9\\u539F '{0}'\",\"\\u8981\\u5FA9\\u539F\\u6240\\u6709\\u6A94\\u6848\\u7684 '{0}' \\u55CE?\",\"\\u5728 {0} \\u500B\\u6A94\\u6848\\u4E2D\\u5FA9\\u539F(&&U)\",\"\\u5FA9\\u539F\\u6B64\\u6A94\\u6848(&&F)\",\"\\u56E0\\u70BA\\u5DF2\\u7D93\\u6709\\u6B63\\u5728\\u57F7\\u884C\\u7684\\u5FA9\\u539F\\u6216\\u91CD\\u505A\\u4F5C\\u696D\\uFF0C\\u6240\\u4EE5\\u7121\\u6CD5\\u5FA9\\u539F '{0}'\\u3002\",\"\\u8981\\u5FA9\\u539F '{0}' \\u55CE?\",\"\\u662F(&&Y)\",\"\\u5426\",\"\\u7121\\u6CD5\\u5FA9\\u539F\\u6240\\u6709\\u6A94\\u6848\\u7684 '{0}'\\u3002{1}\",\"\\u7121\\u6CD5\\u5FA9\\u539F\\u6240\\u6709\\u6A94\\u6848\\u7684 '{0}'\\u3002{1}\",\"\\u56E0\\u70BA\\u5DF2\\u5C0D {1} \\u9032\\u884C\\u8B8A\\u66F4\\uFF0C\\u6240\\u4EE5\\u7121\\u6CD5\\u5FA9\\u539F\\u6240\\u6709\\u6A94\\u6848\\u7684 '{0}'\",\"\\u56E0\\u70BA {1} \\u4E2D\\u5DF2\\u7D93\\u6709\\u6B63\\u5728\\u57F7\\u884C\\u7684\\u5FA9\\u539F\\u6216\\u91CD\\u505A\\u4F5C\\u696D\\uFF0C\\u6240\\u4EE5\\u7121\\u6CD5\\u70BA\\u6240\\u6709\\u6A94\\u6848\\u91CD\\u505A '{0}'\",\"\\u56E0\\u70BA\\u540C\\u6642\\u767C\\u751F\\u5176\\u4ED6\\u5FA9\\u539F\\u6216\\u91CD\\u505A\\u4F5C\\u696D\\uFF0C\\u6240\\u4EE5\\u7121\\u6CD5\\u70BA\\u6240\\u6709\\u6A94\\u6848\\u91CD\\u505A '{0}'\",\"\\u56E0\\u70BA\\u5DF2\\u7D93\\u6709\\u6B63\\u5728\\u57F7\\u884C\\u7684\\u5FA9\\u539F\\u6216\\u91CD\\u505A\\u4F5C\\u696D\\uFF0C\\u6240\\u4EE5\\u7121\\u6CD5\\u91CD\\u505A '{0}'\\u3002\"],\"vs/platform/workspace/common/workspace\":[\"Code \\u5DE5\\u4F5C\\u5340\"]});\n\n//# sourceMappingURL=../../../min-maps/vs/editor/editor.main.nls.zh-tw.js.map"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/language/css/cssMode.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/language/css/cssMode\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var en=Object.create;var Y=Object.defineProperty;var nn=Object.getOwnPropertyDescriptor;var tn=Object.getOwnPropertyNames;var rn=Object.getPrototypeOf,on=Object.prototype.hasOwnProperty;var sn=(n=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(n,{get:(t,i)=>(typeof require!=\"undefined\"?require:t)[i]}):n)(function(n){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+n+'\" is not supported')});var an=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),un=(n,t)=>{for(var i in t)Y(n,i,{get:t[i],enumerable:!0})},J=(n,t,i,r)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let e of tn(t))!on.call(n,e)&&e!==i&&Y(n,e,{get:()=>t[e],enumerable:!(r=nn(t,e))||r.enumerable});return n},pe=(n,t,i)=>(J(n,t,\"default\"),i&&J(i,t,\"default\")),he=(n,t,i)=>(i=n!=null?en(rn(n)):{},J(t||!n||!n.__esModule?Y(i,\"default\",{value:n,enumerable:!0}):i,n)),dn=n=>J(Y({},\"__esModule\",{value:!0}),n);var ve=an((Pn,me)=>{var cn=he(sn(\"vs/editor/editor.api\"));me.exports=cn});var En={};un(En,{CompletionAdapter:()=>H,DefinitionAdapter:()=>O,DiagnosticsAdapter:()=>K,DocumentColorAdapter:()=>$,DocumentFormattingEditProvider:()=>X,DocumentHighlightAdapter:()=>j,DocumentLinkAdapter:()=>le,DocumentRangeFormattingEditProvider:()=>B,DocumentSymbolAdapter:()=>z,FoldingRangeAdapter:()=>q,HoverAdapter:()=>U,ReferenceAdapter:()=>N,RenameAdapter:()=>V,SelectionRangeAdapter:()=>Q,WorkerManager:()=>E,fromPosition:()=>_,fromRange:()=>ge,setupMode:()=>wn,toRange:()=>T,toTextEdit:()=>W});var d={};pe(d,he(ve()));var ln=2*60*1e3,E=class{_defaults;_idleCheckInterval;_lastUsedTime;_configChangeListener;_worker;_client;constructor(t){this._defaults=t,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),30*1e3),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){if(!this._worker)return;Date.now()-this._lastUsedTime>ln&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||(this._worker=d.editor.createWebWorker({moduleId:\"vs/language/css/cssWorker\",label:this._defaults.languageId,createData:{options:this._defaults.options,languageId:this._defaults.languageId}}),this._client=this._worker.getProxy()),this._client}getLanguageServiceWorker(...t){let i;return this._getClient().then(r=>{i=r}).then(r=>{if(this._worker)return this._worker.withSyncedResources(t)}).then(r=>i)}};var ye;(function(n){n.MIN_VALUE=-2147483648,n.MAX_VALUE=2147483647})(ye||(ye={}));var ee;(function(n){n.MIN_VALUE=0,n.MAX_VALUE=2147483647})(ee||(ee={}));var x;(function(n){function t(r,e){return r===Number.MAX_VALUE&&(r=ee.MAX_VALUE),e===Number.MAX_VALUE&&(e=ee.MAX_VALUE),{line:r,character:e}}n.create=t;function i(r){var e=r;return a.objectLiteral(e)&&a.uinteger(e.line)&&a.uinteger(e.character)}n.is=i})(x||(x={}));var v;(function(n){function t(r,e,o,s){if(a.uinteger(r)&&a.uinteger(e)&&a.uinteger(o)&&a.uinteger(s))return{start:x.create(r,e),end:x.create(o,s)};if(x.is(r)&&x.is(e))return{start:r,end:e};throw new Error(\"Range#create called with invalid arguments[\"+r+\", \"+e+\", \"+o+\", \"+s+\"]\")}n.create=t;function i(r){var e=r;return a.objectLiteral(e)&&x.is(e.start)&&x.is(e.end)}n.is=i})(v||(v={}));var se;(function(n){function t(r,e){return{uri:r,range:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&v.is(e.range)&&(a.string(e.uri)||a.undefined(e.uri))}n.is=i})(se||(se={}));var Te;(function(n){function t(r,e,o,s){return{targetUri:r,targetRange:e,targetSelectionRange:o,originSelectionRange:s}}n.create=t;function i(r){var e=r;return a.defined(e)&&v.is(e.targetRange)&&a.string(e.targetUri)&&(v.is(e.targetSelectionRange)||a.undefined(e.targetSelectionRange))&&(v.is(e.originSelectionRange)||a.undefined(e.originSelectionRange))}n.is=i})(Te||(Te={}));var ae;(function(n){function t(r,e,o,s){return{red:r,green:e,blue:o,alpha:s}}n.create=t;function i(r){var e=r;return a.numberRange(e.red,0,1)&&a.numberRange(e.green,0,1)&&a.numberRange(e.blue,0,1)&&a.numberRange(e.alpha,0,1)}n.is=i})(ae||(ae={}));var xe;(function(n){function t(r,e){return{range:r,color:e}}n.create=t;function i(r){var e=r;return v.is(e.range)&&ae.is(e.color)}n.is=i})(xe||(xe={}));var ke;(function(n){function t(r,e,o){return{label:r,textEdit:e,additionalTextEdits:o}}n.create=t;function i(r){var e=r;return a.string(e.label)&&(a.undefined(e.textEdit)||C.is(e))&&(a.undefined(e.additionalTextEdits)||a.typedArray(e.additionalTextEdits,C.is))}n.is=i})(ke||(ke={}));var P;(function(n){n.Comment=\"comment\",n.Imports=\"imports\",n.Region=\"region\"})(P||(P={}));var Ie;(function(n){function t(r,e,o,s,u){var l={startLine:r,endLine:e};return a.defined(o)&&(l.startCharacter=o),a.defined(s)&&(l.endCharacter=s),a.defined(u)&&(l.kind=u),l}n.create=t;function i(r){var e=r;return a.uinteger(e.startLine)&&a.uinteger(e.startLine)&&(a.undefined(e.startCharacter)||a.uinteger(e.startCharacter))&&(a.undefined(e.endCharacter)||a.uinteger(e.endCharacter))&&(a.undefined(e.kind)||a.string(e.kind))}n.is=i})(Ie||(Ie={}));var ue;(function(n){function t(r,e){return{location:r,message:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&se.is(e.location)&&a.string(e.message)}n.is=i})(ue||(ue={}));var b;(function(n){n.Error=1,n.Warning=2,n.Information=3,n.Hint=4})(b||(b={}));var Ce;(function(n){n.Unnecessary=1,n.Deprecated=2})(Ce||(Ce={}));var _e;(function(n){function t(i){var r=i;return r!=null&&a.string(r.href)}n.is=t})(_e||(_e={}));var ne;(function(n){function t(r,e,o,s,u,l){var f={range:r,message:e};return a.defined(o)&&(f.severity=o),a.defined(s)&&(f.code=s),a.defined(u)&&(f.source=u),a.defined(l)&&(f.relatedInformation=l),f}n.create=t;function i(r){var e,o=r;return a.defined(o)&&v.is(o.range)&&a.string(o.message)&&(a.number(o.severity)||a.undefined(o.severity))&&(a.integer(o.code)||a.string(o.code)||a.undefined(o.code))&&(a.undefined(o.codeDescription)||a.string((e=o.codeDescription)===null||e===void 0?void 0:e.href))&&(a.string(o.source)||a.undefined(o.source))&&(a.undefined(o.relatedInformation)||a.typedArray(o.relatedInformation,ue.is))}n.is=i})(ne||(ne={}));var D;(function(n){function t(r,e){for(var o=[],s=2;s<arguments.length;s++)o[s-2]=arguments[s];var u={title:r,command:e};return a.defined(o)&&o.length>0&&(u.arguments=o),u}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.title)&&a.string(e.command)}n.is=i})(D||(D={}));var C;(function(n){function t(o,s){return{range:o,newText:s}}n.replace=t;function i(o,s){return{range:{start:o,end:o},newText:s}}n.insert=i;function r(o){return{range:o,newText:\"\"}}n.del=r;function e(o){var s=o;return a.objectLiteral(s)&&a.string(s.newText)&&v.is(s.range)}n.is=e})(C||(C={}));var R;(function(n){function t(r,e,o){var s={label:r};return e!==void 0&&(s.needsConfirmation=e),o!==void 0&&(s.description=o),s}n.create=t;function i(r){var e=r;return e!==void 0&&a.objectLiteral(e)&&a.string(e.label)&&(a.boolean(e.needsConfirmation)||e.needsConfirmation===void 0)&&(a.string(e.description)||e.description===void 0)}n.is=i})(R||(R={}));var y;(function(n){function t(i){var r=i;return typeof r==\"string\"}n.is=t})(y||(y={}));var I;(function(n){function t(o,s,u){return{range:o,newText:s,annotationId:u}}n.replace=t;function i(o,s,u){return{range:{start:o,end:o},newText:s,annotationId:u}}n.insert=i;function r(o,s){return{range:o,newText:\"\",annotationId:s}}n.del=r;function e(o){var s=o;return C.is(s)&&(R.is(s.annotationId)||y.is(s.annotationId))}n.is=e})(I||(I={}));var te;(function(n){function t(r,e){return{textDocument:r,edits:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&re.is(e.textDocument)&&Array.isArray(e.edits)}n.is=i})(te||(te={}));var L;(function(n){function t(r,e,o){var s={kind:\"create\",uri:r};return e!==void 0&&(e.overwrite!==void 0||e.ignoreIfExists!==void 0)&&(s.options=e),o!==void 0&&(s.annotationId=o),s}n.create=t;function i(r){var e=r;return e&&e.kind===\"create\"&&a.string(e.uri)&&(e.options===void 0||(e.options.overwrite===void 0||a.boolean(e.options.overwrite))&&(e.options.ignoreIfExists===void 0||a.boolean(e.options.ignoreIfExists)))&&(e.annotationId===void 0||y.is(e.annotationId))}n.is=i})(L||(L={}));var F;(function(n){function t(r,e,o,s){var u={kind:\"rename\",oldUri:r,newUri:e};return o!==void 0&&(o.overwrite!==void 0||o.ignoreIfExists!==void 0)&&(u.options=o),s!==void 0&&(u.annotationId=s),u}n.create=t;function i(r){var e=r;return e&&e.kind===\"rename\"&&a.string(e.oldUri)&&a.string(e.newUri)&&(e.options===void 0||(e.options.overwrite===void 0||a.boolean(e.options.overwrite))&&(e.options.ignoreIfExists===void 0||a.boolean(e.options.ignoreIfExists)))&&(e.annotationId===void 0||y.is(e.annotationId))}n.is=i})(F||(F={}));var M;(function(n){function t(r,e,o){var s={kind:\"delete\",uri:r};return e!==void 0&&(e.recursive!==void 0||e.ignoreIfNotExists!==void 0)&&(s.options=e),o!==void 0&&(s.annotationId=o),s}n.create=t;function i(r){var e=r;return e&&e.kind===\"delete\"&&a.string(e.uri)&&(e.options===void 0||(e.options.recursive===void 0||a.boolean(e.options.recursive))&&(e.options.ignoreIfNotExists===void 0||a.boolean(e.options.ignoreIfNotExists)))&&(e.annotationId===void 0||y.is(e.annotationId))}n.is=i})(M||(M={}));var de;(function(n){function t(i){var r=i;return r&&(r.changes!==void 0||r.documentChanges!==void 0)&&(r.documentChanges===void 0||r.documentChanges.every(function(e){return a.string(e.kind)?L.is(e)||F.is(e)||M.is(e):te.is(e)}))}n.is=t})(de||(de={}));var Z=function(){function n(t,i){this.edits=t,this.changeAnnotations=i}return n.prototype.insert=function(t,i,r){var e,o;if(r===void 0?e=C.insert(t,i):y.is(r)?(o=r,e=I.insert(t,i,r)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(r),e=I.insert(t,i,o)),this.edits.push(e),o!==void 0)return o},n.prototype.replace=function(t,i,r){var e,o;if(r===void 0?e=C.replace(t,i):y.is(r)?(o=r,e=I.replace(t,i,r)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(r),e=I.replace(t,i,o)),this.edits.push(e),o!==void 0)return o},n.prototype.delete=function(t,i){var r,e;if(i===void 0?r=C.del(t):y.is(i)?(e=i,r=I.del(t,i)):(this.assertChangeAnnotations(this.changeAnnotations),e=this.changeAnnotations.manage(i),r=I.del(t,e)),this.edits.push(r),e!==void 0)return e},n.prototype.add=function(t){this.edits.push(t)},n.prototype.all=function(){return this.edits},n.prototype.clear=function(){this.edits.splice(0,this.edits.length)},n.prototype.assertChangeAnnotations=function(t){if(t===void 0)throw new Error(\"Text edit change is not configured to manage change annotations.\")},n}(),be=function(){function n(t){this._annotations=t===void 0?Object.create(null):t,this._counter=0,this._size=0}return n.prototype.all=function(){return this._annotations},Object.defineProperty(n.prototype,\"size\",{get:function(){return this._size},enumerable:!1,configurable:!0}),n.prototype.manage=function(t,i){var r;if(y.is(t)?r=t:(r=this.nextId(),i=t),this._annotations[r]!==void 0)throw new Error(\"Id \"+r+\" is already in use.\");if(i===void 0)throw new Error(\"No annotation provided for id \"+r);return this._annotations[r]=i,this._size++,r},n.prototype.nextId=function(){return this._counter++,this._counter.toString()},n}(),Mn=function(){function n(t){var i=this;this._textEditChanges=Object.create(null),t!==void 0?(this._workspaceEdit=t,t.documentChanges?(this._changeAnnotations=new be(t.changeAnnotations),t.changeAnnotations=this._changeAnnotations.all(),t.documentChanges.forEach(function(r){if(te.is(r)){var e=new Z(r.edits,i._changeAnnotations);i._textEditChanges[r.textDocument.uri]=e}})):t.changes&&Object.keys(t.changes).forEach(function(r){var e=new Z(t.changes[r]);i._textEditChanges[r]=e})):this._workspaceEdit={}}return Object.defineProperty(n.prototype,\"edit\",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),n.prototype.getTextEditChange=function(t){if(re.is(t)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var i={uri:t.uri,version:t.version},r=this._textEditChanges[i.uri];if(!r){var e=[],o={textDocument:i,edits:e};this._workspaceEdit.documentChanges.push(o),r=new Z(e,this._changeAnnotations),this._textEditChanges[i.uri]=r}return r}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error(\"Workspace edit is not configured for normal text edit changes.\");var r=this._textEditChanges[t];if(!r){var e=[];this._workspaceEdit.changes[t]=e,r=new Z(e),this._textEditChanges[t]=r}return r}},n.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new be,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},n.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},n.prototype.createFile=function(t,i,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var e;R.is(i)||y.is(i)?e=i:r=i;var o,s;if(e===void 0?o=L.create(t,r):(s=y.is(e)?e:this._changeAnnotations.manage(e),o=L.create(t,r,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},n.prototype.renameFile=function(t,i,r,e){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var o;R.is(r)||y.is(r)?o=r:e=r;var s,u;if(o===void 0?s=F.create(t,i,e):(u=y.is(o)?o:this._changeAnnotations.manage(o),s=F.create(t,i,e,u)),this._workspaceEdit.documentChanges.push(s),u!==void 0)return u},n.prototype.deleteFile=function(t,i,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var e;R.is(i)||y.is(i)?e=i:r=i;var o,s;if(e===void 0?o=M.create(t,r):(s=y.is(e)?e:this._changeAnnotations.manage(e),o=M.create(t,r,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},n}();var we;(function(n){function t(r){return{uri:r}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.uri)}n.is=i})(we||(we={}));var Ee;(function(n){function t(r,e){return{uri:r,version:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.uri)&&a.integer(e.version)}n.is=i})(Ee||(Ee={}));var re;(function(n){function t(r,e){return{uri:r,version:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.uri)&&(e.version===null||a.integer(e.version))}n.is=i})(re||(re={}));var Re;(function(n){function t(r,e,o,s){return{uri:r,languageId:e,version:o,text:s}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.uri)&&a.string(e.languageId)&&a.integer(e.version)&&a.string(e.text)}n.is=i})(Re||(Re={}));var A;(function(n){n.PlainText=\"plaintext\",n.Markdown=\"markdown\"})(A||(A={}));(function(n){function t(i){var r=i;return r===n.PlainText||r===n.Markdown}n.is=t})(A||(A={}));var ce;(function(n){function t(i){var r=i;return a.objectLiteral(i)&&A.is(r.kind)&&a.string(r.value)}n.is=t})(ce||(ce={}));var p;(function(n){n.Text=1,n.Method=2,n.Function=3,n.Constructor=4,n.Field=5,n.Variable=6,n.Class=7,n.Interface=8,n.Module=9,n.Property=10,n.Unit=11,n.Value=12,n.Enum=13,n.Keyword=14,n.Snippet=15,n.Color=16,n.File=17,n.Reference=18,n.Folder=19,n.EnumMember=20,n.Constant=21,n.Struct=22,n.Event=23,n.Operator=24,n.TypeParameter=25})(p||(p={}));var ie;(function(n){n.PlainText=1,n.Snippet=2})(ie||(ie={}));var Pe;(function(n){n.Deprecated=1})(Pe||(Pe={}));var Se;(function(n){function t(r,e,o){return{newText:r,insert:e,replace:o}}n.create=t;function i(r){var e=r;return e&&a.string(e.newText)&&v.is(e.insert)&&v.is(e.replace)}n.is=i})(Se||(Se={}));var We;(function(n){n.asIs=1,n.adjustIndentation=2})(We||(We={}));var De;(function(n){function t(i){return{label:i}}n.create=t})(De||(De={}));var Le;(function(n){function t(i,r){return{items:i||[],isIncomplete:!!r}}n.create=t})(Le||(Le={}));var oe;(function(n){function t(r){return r.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g,\"\\\\$&\")}n.fromPlainText=t;function i(r){var e=r;return a.string(e)||a.objectLiteral(e)&&a.string(e.language)&&a.string(e.value)}n.is=i})(oe||(oe={}));var Fe;(function(n){function t(i){var r=i;return!!r&&a.objectLiteral(r)&&(ce.is(r.contents)||oe.is(r.contents)||a.typedArray(r.contents,oe.is))&&(i.range===void 0||v.is(i.range))}n.is=t})(Fe||(Fe={}));var Me;(function(n){function t(i,r){return r?{label:i,documentation:r}:{label:i}}n.create=t})(Me||(Me={}));var Ae;(function(n){function t(i,r){for(var e=[],o=2;o<arguments.length;o++)e[o-2]=arguments[o];var s={label:i};return a.defined(r)&&(s.documentation=r),a.defined(e)?s.parameters=e:s.parameters=[],s}n.create=t})(Ae||(Ae={}));var S;(function(n){n.Text=1,n.Read=2,n.Write=3})(S||(S={}));var Ke;(function(n){function t(i,r){var e={range:i};return a.number(r)&&(e.kind=r),e}n.create=t})(Ke||(Ke={}));var h;(function(n){n.File=1,n.Module=2,n.Namespace=3,n.Package=4,n.Class=5,n.Method=6,n.Property=7,n.Field=8,n.Constructor=9,n.Enum=10,n.Interface=11,n.Function=12,n.Variable=13,n.Constant=14,n.String=15,n.Number=16,n.Boolean=17,n.Array=18,n.Object=19,n.Key=20,n.Null=21,n.EnumMember=22,n.Struct=23,n.Event=24,n.Operator=25,n.TypeParameter=26})(h||(h={}));var He;(function(n){n.Deprecated=1})(He||(He={}));var Ue;(function(n){function t(i,r,e,o,s){var u={name:i,kind:r,location:{uri:o,range:e}};return s&&(u.containerName=s),u}n.create=t})(Ue||(Ue={}));var je;(function(n){function t(r,e,o,s,u,l){var f={name:r,detail:e,kind:o,range:s,selectionRange:u};return l!==void 0&&(f.children=l),f}n.create=t;function i(r){var e=r;return e&&a.string(e.name)&&a.number(e.kind)&&v.is(e.range)&&v.is(e.selectionRange)&&(e.detail===void 0||a.string(e.detail))&&(e.deprecated===void 0||a.boolean(e.deprecated))&&(e.children===void 0||Array.isArray(e.children))&&(e.tags===void 0||Array.isArray(e.tags))}n.is=i})(je||(je={}));var Oe;(function(n){n.Empty=\"\",n.QuickFix=\"quickfix\",n.Refactor=\"refactor\",n.RefactorExtract=\"refactor.extract\",n.RefactorInline=\"refactor.inline\",n.RefactorRewrite=\"refactor.rewrite\",n.Source=\"source\",n.SourceOrganizeImports=\"source.organizeImports\",n.SourceFixAll=\"source.fixAll\"})(Oe||(Oe={}));var Ne;(function(n){function t(r,e){var o={diagnostics:r};return e!=null&&(o.only=e),o}n.create=t;function i(r){var e=r;return a.defined(e)&&a.typedArray(e.diagnostics,ne.is)&&(e.only===void 0||a.typedArray(e.only,a.string))}n.is=i})(Ne||(Ne={}));var Ve;(function(n){function t(r,e,o){var s={title:r},u=!0;return typeof e==\"string\"?(u=!1,s.kind=e):D.is(e)?s.command=e:s.edit=e,u&&o!==void 0&&(s.kind=o),s}n.create=t;function i(r){var e=r;return e&&a.string(e.title)&&(e.diagnostics===void 0||a.typedArray(e.diagnostics,ne.is))&&(e.kind===void 0||a.string(e.kind))&&(e.edit!==void 0||e.command!==void 0)&&(e.command===void 0||D.is(e.command))&&(e.isPreferred===void 0||a.boolean(e.isPreferred))&&(e.edit===void 0||de.is(e.edit))}n.is=i})(Ve||(Ve={}));var ze;(function(n){function t(r,e){var o={range:r};return a.defined(e)&&(o.data=e),o}n.create=t;function i(r){var e=r;return a.defined(e)&&v.is(e.range)&&(a.undefined(e.command)||D.is(e.command))}n.is=i})(ze||(ze={}));var Xe;(function(n){function t(r,e){return{tabSize:r,insertSpaces:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.uinteger(e.tabSize)&&a.boolean(e.insertSpaces)}n.is=i})(Xe||(Xe={}));var Be;(function(n){function t(r,e,o){return{range:r,target:e,data:o}}n.create=t;function i(r){var e=r;return a.defined(e)&&v.is(e.range)&&(a.undefined(e.target)||a.string(e.target))}n.is=i})(Be||(Be={}));var $e;(function(n){function t(r,e){return{range:r,parent:e}}n.create=t;function i(r){var e=r;return e!==void 0&&v.is(e.range)&&(e.parent===void 0||n.is(e.parent))}n.is=i})($e||($e={}));var qe;(function(n){function t(o,s,u,l){return new gn(o,s,u,l)}n.create=t;function i(o){var s=o;return!!(a.defined(s)&&a.string(s.uri)&&(a.undefined(s.languageId)||a.string(s.languageId))&&a.uinteger(s.lineCount)&&a.func(s.getText)&&a.func(s.positionAt)&&a.func(s.offsetAt))}n.is=i;function r(o,s){for(var u=o.getText(),l=e(s,function(w,G){var fe=w.range.start.line-G.range.start.line;return fe===0?w.range.start.character-G.range.start.character:fe}),f=u.length,g=l.length-1;g>=0;g--){var m=l[g],k=o.offsetAt(m.range.start),c=o.offsetAt(m.range.end);if(c<=f)u=u.substring(0,k)+m.newText+u.substring(c,u.length);else throw new Error(\"Overlapping edit\");f=k}return u}n.applyEdits=r;function e(o,s){if(o.length<=1)return o;var u=o.length/2|0,l=o.slice(0,u),f=o.slice(u);e(l,s),e(f,s);for(var g=0,m=0,k=0;g<l.length&&m<f.length;){var c=s(l[g],f[m]);c<=0?o[k++]=l[g++]:o[k++]=f[m++]}for(;g<l.length;)o[k++]=l[g++];for(;m<f.length;)o[k++]=f[m++];return o}})(qe||(qe={}));var gn=function(){function n(t,i,r,e){this._uri=t,this._languageId=i,this._version=r,this._content=e,this._lineOffsets=void 0}return Object.defineProperty(n.prototype,\"uri\",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"languageId\",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"version\",{get:function(){return this._version},enumerable:!1,configurable:!0}),n.prototype.getText=function(t){if(t){var i=this.offsetAt(t.start),r=this.offsetAt(t.end);return this._content.substring(i,r)}return this._content},n.prototype.update=function(t,i){this._content=t.text,this._version=i,this._lineOffsets=void 0},n.prototype.getLineOffsets=function(){if(this._lineOffsets===void 0){for(var t=[],i=this._content,r=!0,e=0;e<i.length;e++){r&&(t.push(e),r=!1);var o=i.charAt(e);r=o===\"\\r\"||o===`\n`,o===\"\\r\"&&e+1<i.length&&i.charAt(e+1)===`\n`&&e++}r&&i.length>0&&t.push(i.length),this._lineOffsets=t}return this._lineOffsets},n.prototype.positionAt=function(t){t=Math.max(Math.min(t,this._content.length),0);var i=this.getLineOffsets(),r=0,e=i.length;if(e===0)return x.create(0,t);for(;r<e;){var o=Math.floor((r+e)/2);i[o]>t?e=o:r=o+1}var s=r-1;return x.create(s,t-i[s])},n.prototype.offsetAt=function(t){var i=this.getLineOffsets();if(t.line>=i.length)return this._content.length;if(t.line<0)return 0;var r=i[t.line],e=t.line+1<i.length?i[t.line+1]:this._content.length;return Math.max(Math.min(r+t.character,e),r)},Object.defineProperty(n.prototype,\"lineCount\",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),n}(),a;(function(n){var t=Object.prototype.toString;function i(c){return typeof c<\"u\"}n.defined=i;function r(c){return typeof c>\"u\"}n.undefined=r;function e(c){return c===!0||c===!1}n.boolean=e;function o(c){return t.call(c)===\"[object String]\"}n.string=o;function s(c){return t.call(c)===\"[object Number]\"}n.number=s;function u(c,w,G){return t.call(c)===\"[object Number]\"&&w<=c&&c<=G}n.numberRange=u;function l(c){return t.call(c)===\"[object Number]\"&&-2147483648<=c&&c<=2147483647}n.integer=l;function f(c){return t.call(c)===\"[object Number]\"&&0<=c&&c<=2147483647}n.uinteger=f;function g(c){return t.call(c)===\"[object Function]\"}n.func=g;function m(c){return c!==null&&typeof c==\"object\"}n.objectLiteral=m;function k(c,w){return Array.isArray(c)&&c.every(w)}n.typedArray=k})(a||(a={}));var K=class{constructor(t,i,r){this._languageId=t;this._worker=i;let e=s=>{let u=s.getLanguageId();if(u!==this._languageId)return;let l;this._listener[s.uri.toString()]=s.onDidChangeContent(()=>{window.clearTimeout(l),l=window.setTimeout(()=>this._doValidate(s.uri,u),500)}),this._doValidate(s.uri,u)},o=s=>{d.editor.setModelMarkers(s,this._languageId,[]);let u=s.uri.toString(),l=this._listener[u];l&&(l.dispose(),delete this._listener[u])};this._disposables.push(d.editor.onDidCreateModel(e)),this._disposables.push(d.editor.onWillDisposeModel(o)),this._disposables.push(d.editor.onDidChangeModelLanguage(s=>{o(s.model),e(s.model)})),this._disposables.push(r(s=>{d.editor.getModels().forEach(u=>{u.getLanguageId()===this._languageId&&(o(u),e(u))})})),this._disposables.push({dispose:()=>{d.editor.getModels().forEach(o);for(let s in this._listener)this._listener[s].dispose()}}),d.editor.getModels().forEach(e)}_disposables=[];_listener=Object.create(null);dispose(){this._disposables.forEach(t=>t&&t.dispose()),this._disposables.length=0}_doValidate(t,i){this._worker(t).then(r=>r.doValidation(t.toString())).then(r=>{let e=r.map(s=>hn(t,s)),o=d.editor.getModel(t);o&&o.getLanguageId()===i&&d.editor.setModelMarkers(o,i,e)}).then(void 0,r=>{console.error(r)})}};function pn(n){switch(n){case b.Error:return d.MarkerSeverity.Error;case b.Warning:return d.MarkerSeverity.Warning;case b.Information:return d.MarkerSeverity.Info;case b.Hint:return d.MarkerSeverity.Hint;default:return d.MarkerSeverity.Info}}function hn(n,t){let i=typeof t.code==\"number\"?String(t.code):t.code;return{severity:pn(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:i,source:t.source}}var H=class{constructor(t,i){this._worker=t;this._triggerCharacters=i}get triggerCharacters(){return this._triggerCharacters}provideCompletionItems(t,i,r,e){let o=t.uri;return this._worker(o).then(s=>s.doComplete(o.toString(),_(i))).then(s=>{if(!s)return;let u=t.getWordUntilPosition(i),l=new d.Range(i.lineNumber,u.startColumn,i.lineNumber,u.endColumn),f=s.items.map(g=>{let m={label:g.label,insertText:g.insertText||g.label,sortText:g.sortText,filterText:g.filterText,documentation:g.documentation,detail:g.detail,command:yn(g.command),range:l,kind:vn(g.kind)};return g.textEdit&&(mn(g.textEdit)?m.range={insert:T(g.textEdit.insert),replace:T(g.textEdit.replace)}:m.range=T(g.textEdit.range),m.insertText=g.textEdit.newText),g.additionalTextEdits&&(m.additionalTextEdits=g.additionalTextEdits.map(W)),g.insertTextFormat===ie.Snippet&&(m.insertTextRules=d.languages.CompletionItemInsertTextRule.InsertAsSnippet),m});return{isIncomplete:s.isIncomplete,suggestions:f}})}};function _(n){if(!!n)return{character:n.column-1,line:n.lineNumber-1}}function ge(n){if(!!n)return{start:{line:n.startLineNumber-1,character:n.startColumn-1},end:{line:n.endLineNumber-1,character:n.endColumn-1}}}function T(n){if(!!n)return new d.Range(n.start.line+1,n.start.character+1,n.end.line+1,n.end.character+1)}function mn(n){return typeof n.insert<\"u\"&&typeof n.replace<\"u\"}function vn(n){let t=d.languages.CompletionItemKind;switch(n){case p.Text:return t.Text;case p.Method:return t.Method;case p.Function:return t.Function;case p.Constructor:return t.Constructor;case p.Field:return t.Field;case p.Variable:return t.Variable;case p.Class:return t.Class;case p.Interface:return t.Interface;case p.Module:return t.Module;case p.Property:return t.Property;case p.Unit:return t.Unit;case p.Value:return t.Value;case p.Enum:return t.Enum;case p.Keyword:return t.Keyword;case p.Snippet:return t.Snippet;case p.Color:return t.Color;case p.File:return t.File;case p.Reference:return t.Reference}return t.Property}function W(n){if(!!n)return{range:T(n.range),text:n.newText}}function yn(n){return n&&n.command===\"editor.action.triggerSuggest\"?{id:n.command,title:n.title,arguments:n.arguments}:void 0}var U=class{constructor(t){this._worker=t}provideHover(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.doHover(e.toString(),_(i))).then(o=>{if(!!o)return{range:T(o.range),contents:xn(o.contents)}})}};function Tn(n){return n&&typeof n==\"object\"&&typeof n.kind==\"string\"}function Qe(n){return typeof n==\"string\"?{value:n}:Tn(n)?n.kind===\"plaintext\"?{value:n.value.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g,\"\\\\$&\")}:{value:n.value}:{value:\"```\"+n.language+`\n`+n.value+\"\\n```\\n\"}}function xn(n){if(!!n)return Array.isArray(n)?n.map(Qe):[Qe(n)]}var j=class{constructor(t){this._worker=t}provideDocumentHighlights(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.findDocumentHighlights(e.toString(),_(i))).then(o=>{if(!!o)return o.map(s=>({range:T(s.range),kind:kn(s.kind)}))})}};function kn(n){switch(n){case S.Read:return d.languages.DocumentHighlightKind.Read;case S.Write:return d.languages.DocumentHighlightKind.Write;case S.Text:return d.languages.DocumentHighlightKind.Text}return d.languages.DocumentHighlightKind.Text}var O=class{constructor(t){this._worker=t}provideDefinition(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.findDefinition(e.toString(),_(i))).then(o=>{if(!!o)return[Ge(o)]})}};function Ge(n){return{uri:d.Uri.parse(n.uri),range:T(n.range)}}var N=class{constructor(t){this._worker=t}provideReferences(t,i,r,e){let o=t.uri;return this._worker(o).then(s=>s.findReferences(o.toString(),_(i))).then(s=>{if(!!s)return s.map(Ge)})}},V=class{constructor(t){this._worker=t}provideRenameEdits(t,i,r,e){let o=t.uri;return this._worker(o).then(s=>s.doRename(o.toString(),_(i),r)).then(s=>In(s))}};function In(n){if(!n||!n.changes)return;let t=[];for(let i in n.changes){let r=d.Uri.parse(i);for(let e of n.changes[i])t.push({resource:r,versionId:void 0,textEdit:{range:T(e.range),text:e.newText}})}return{edits:t}}var z=class{constructor(t){this._worker=t}provideDocumentSymbols(t,i){let r=t.uri;return this._worker(r).then(e=>e.findDocumentSymbols(r.toString())).then(e=>{if(!!e)return e.map(o=>({name:o.name,detail:\"\",containerName:o.containerName,kind:Cn(o.kind),range:T(o.location.range),selectionRange:T(o.location.range),tags:[]}))})}};function Cn(n){let t=d.languages.SymbolKind;switch(n){case h.File:return t.Array;case h.Module:return t.Module;case h.Namespace:return t.Namespace;case h.Package:return t.Package;case h.Class:return t.Class;case h.Method:return t.Method;case h.Property:return t.Property;case h.Field:return t.Field;case h.Constructor:return t.Constructor;case h.Enum:return t.Enum;case h.Interface:return t.Interface;case h.Function:return t.Function;case h.Variable:return t.Variable;case h.Constant:return t.Constant;case h.String:return t.String;case h.Number:return t.Number;case h.Boolean:return t.Boolean;case h.Array:return t.Array}return t.Function}var le=class{constructor(t){this._worker=t}provideLinks(t,i){let r=t.uri;return this._worker(r).then(e=>e.findDocumentLinks(r.toString())).then(e=>{if(!!e)return{links:e.map(o=>({range:T(o.range),url:o.target}))}})}},X=class{constructor(t){this._worker=t}provideDocumentFormattingEdits(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.format(e.toString(),null,Je(i)).then(s=>{if(!(!s||s.length===0))return s.map(W)}))}},B=class{constructor(t){this._worker=t}canFormatMultipleRanges=!1;provideDocumentRangeFormattingEdits(t,i,r,e){let o=t.uri;return this._worker(o).then(s=>s.format(o.toString(),ge(i),Je(r)).then(u=>{if(!(!u||u.length===0))return u.map(W)}))}};function Je(n){return{tabSize:n.tabSize,insertSpaces:n.insertSpaces}}var $=class{constructor(t){this._worker=t}provideDocumentColors(t,i){let r=t.uri;return this._worker(r).then(e=>e.findDocumentColors(r.toString())).then(e=>{if(!!e)return e.map(o=>({color:o.color,range:T(o.range)}))})}provideColorPresentations(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.getColorPresentations(e.toString(),i.color,ge(i.range))).then(o=>{if(!!o)return o.map(s=>{let u={label:s.label};return s.textEdit&&(u.textEdit=W(s.textEdit)),s.additionalTextEdits&&(u.additionalTextEdits=s.additionalTextEdits.map(W)),u})})}},q=class{constructor(t){this._worker=t}provideFoldingRanges(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.getFoldingRanges(e.toString(),i)).then(o=>{if(!!o)return o.map(s=>{let u={start:s.startLine+1,end:s.endLine+1};return typeof s.kind<\"u\"&&(u.kind=_n(s.kind)),u})})}};function _n(n){switch(n){case P.Comment:return d.languages.FoldingRangeKind.Comment;case P.Imports:return d.languages.FoldingRangeKind.Imports;case P.Region:return d.languages.FoldingRangeKind.Region}}var Q=class{constructor(t){this._worker=t}provideSelectionRanges(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.getSelectionRanges(e.toString(),i.map(_))).then(o=>{if(!!o)return o.map(s=>{let u=[];for(;s;)u.push({range:T(s.range)}),s=s.parent;return u})})}};function wn(n){let t=[],i=[],r=new E(n);t.push(r);let e=(...s)=>r.getLanguageServiceWorker(...s);function o(){let{languageId:s,modeConfiguration:u}=n;Ze(i),u.completionItems&&i.push(d.languages.registerCompletionItemProvider(s,new H(e,[\"/\",\"-\",\":\"]))),u.hovers&&i.push(d.languages.registerHoverProvider(s,new U(e))),u.documentHighlights&&i.push(d.languages.registerDocumentHighlightProvider(s,new j(e))),u.definitions&&i.push(d.languages.registerDefinitionProvider(s,new O(e))),u.references&&i.push(d.languages.registerReferenceProvider(s,new N(e))),u.documentSymbols&&i.push(d.languages.registerDocumentSymbolProvider(s,new z(e))),u.rename&&i.push(d.languages.registerRenameProvider(s,new V(e))),u.colors&&i.push(d.languages.registerColorProvider(s,new $(e))),u.foldingRanges&&i.push(d.languages.registerFoldingRangeProvider(s,new q(e))),u.diagnostics&&i.push(new K(s,e,n.onDidChange)),u.selectionRanges&&i.push(d.languages.registerSelectionRangeProvider(s,new Q(e))),u.documentFormattingEdits&&i.push(d.languages.registerDocumentFormattingEditProvider(s,new X(e))),u.documentRangeFormattingEdits&&i.push(d.languages.registerDocumentRangeFormattingEditProvider(s,new B(e)))}return o(),t.push(Ye(i)),Ye(t)}function Ye(n){return{dispose:()=>Ze(n)}}function Ze(n){for(;n.length;)n.pop().dispose()}return dn(En);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/language/css/cssWorker.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/language/css/cssWorker\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var $n=Object.defineProperty;var ds=Object.getOwnPropertyDescriptor;var hs=Object.getOwnPropertyNames;var ps=Object.prototype.hasOwnProperty;var us=(n,e)=>{for(var t in e)$n(n,t,{get:e[t],enumerable:!0})},ms=(n,e,t,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of hs(e))!ps.call(n,i)&&i!==t&&$n(n,i,{get:()=>e[i],enumerable:!(r=ds(e,i))||r.enumerable});return n};var fs=n=>ms($n({},\"__esModule\",{value:!0}),n);var sl={};us(sl,{CSSWorker:()=>Vn,create:()=>ol});var d;(function(n){n[n.Ident=0]=\"Ident\",n[n.AtKeyword=1]=\"AtKeyword\",n[n.String=2]=\"String\",n[n.BadString=3]=\"BadString\",n[n.UnquotedString=4]=\"UnquotedString\",n[n.Hash=5]=\"Hash\",n[n.Num=6]=\"Num\",n[n.Percentage=7]=\"Percentage\",n[n.Dimension=8]=\"Dimension\",n[n.UnicodeRange=9]=\"UnicodeRange\",n[n.CDO=10]=\"CDO\",n[n.CDC=11]=\"CDC\",n[n.Colon=12]=\"Colon\",n[n.SemiColon=13]=\"SemiColon\",n[n.CurlyL=14]=\"CurlyL\",n[n.CurlyR=15]=\"CurlyR\",n[n.ParenthesisL=16]=\"ParenthesisL\",n[n.ParenthesisR=17]=\"ParenthesisR\",n[n.BracketL=18]=\"BracketL\",n[n.BracketR=19]=\"BracketR\",n[n.Whitespace=20]=\"Whitespace\",n[n.Includes=21]=\"Includes\",n[n.Dashmatch=22]=\"Dashmatch\",n[n.SubstringOperator=23]=\"SubstringOperator\",n[n.PrefixOperator=24]=\"PrefixOperator\",n[n.SuffixOperator=25]=\"SuffixOperator\",n[n.Delim=26]=\"Delim\",n[n.EMS=27]=\"EMS\",n[n.EXS=28]=\"EXS\",n[n.Length=29]=\"Length\",n[n.Angle=30]=\"Angle\",n[n.Time=31]=\"Time\",n[n.Freq=32]=\"Freq\",n[n.Exclamation=33]=\"Exclamation\",n[n.Resolution=34]=\"Resolution\",n[n.Comma=35]=\"Comma\",n[n.Charset=36]=\"Charset\",n[n.EscapedJavaScript=37]=\"EscapedJavaScript\",n[n.BadEscapedJavaScript=38]=\"BadEscapedJavaScript\",n[n.Comment=39]=\"Comment\",n[n.SingleLineComment=40]=\"SingleLineComment\",n[n.EOF=41]=\"EOF\",n[n.CustomToken=42]=\"CustomToken\"})(d||(d={}));var Kr=function(){function n(e){this.source=e,this.len=e.length,this.position=0}return n.prototype.substring=function(e,t){return t===void 0&&(t=this.position),this.source.substring(e,t)},n.prototype.eos=function(){return this.len<=this.position},n.prototype.pos=function(){return this.position},n.prototype.goBackTo=function(e){this.position=e},n.prototype.goBack=function(e){this.position-=e},n.prototype.advance=function(e){this.position+=e},n.prototype.nextChar=function(){return this.source.charCodeAt(this.position++)||0},n.prototype.peekChar=function(e){return e===void 0&&(e=0),this.source.charCodeAt(this.position+e)||0},n.prototype.lookbackChar=function(e){return e===void 0&&(e=0),this.source.charCodeAt(this.position-e)||0},n.prototype.advanceIfChar=function(e){return e===this.source.charCodeAt(this.position)?(this.position++,!0):!1},n.prototype.advanceIfChars=function(e){if(this.position+e.length>this.source.length)return!1;for(var t=0;t<e.length;t++)if(this.source.charCodeAt(this.position+t)!==e[t])return!1;return this.advance(t),!0},n.prototype.advanceWhileChar=function(e){for(var t=this.position;this.position<this.len&&e(this.source.charCodeAt(this.position));)this.position++;return this.position-t},n}();var nn=\"a\".charCodeAt(0),Gr=\"f\".charCodeAt(0),Hr=\"z\".charCodeAt(0),ll=\"u\".charCodeAt(0),rn=\"A\".charCodeAt(0),Jr=\"F\".charCodeAt(0),Xr=\"Z\".charCodeAt(0),kt=\"0\".charCodeAt(0),Ct=\"9\".charCodeAt(0),gs=\"~\".charCodeAt(0),bs=\"^\".charCodeAt(0),_t=\"=\".charCodeAt(0),vs=\"|\".charCodeAt(0),Ye=\"-\".charCodeAt(0),Yr=\"_\".charCodeAt(0),ys=\"%\".charCodeAt(0),qn=\"*\".charCodeAt(0),ri=\"(\".charCodeAt(0),ii=\")\".charCodeAt(0),ws=\"<\".charCodeAt(0),xs=\">\".charCodeAt(0),Ss=\"@\".charCodeAt(0),ks=\"#\".charCodeAt(0),Cs=\"$\".charCodeAt(0),Kn=\"\\\\\".charCodeAt(0),Qr=\"/\".charCodeAt(0),at=`\n`.charCodeAt(0),lt=\"\\r\".charCodeAt(0),Ft=\"\\f\".charCodeAt(0),Zr='\"'.charCodeAt(0),ei=\"'\".charCodeAt(0),Gn=\" \".charCodeAt(0),Hn=\"\t\".charCodeAt(0),_s=\";\".charCodeAt(0),Fs=\":\".charCodeAt(0),Es=\"{\".charCodeAt(0),Ds=\"}\".charCodeAt(0),zs=\"[\".charCodeAt(0),Rs=\"]\".charCodeAt(0),Is=\",\".charCodeAt(0),ti=\".\".charCodeAt(0),ni=\"!\".charCodeAt(0),Ms=\"?\".charCodeAt(0),Ts=\"+\".charCodeAt(0),_e={};_e[_s]=d.SemiColon;_e[Fs]=d.Colon;_e[Es]=d.CurlyL;_e[Ds]=d.CurlyR;_e[Rs]=d.BracketR;_e[zs]=d.BracketL;_e[ri]=d.ParenthesisL;_e[ii]=d.ParenthesisR;_e[Is]=d.Comma;var X={};X.em=d.EMS;X.ex=d.EXS;X.px=d.Length;X.cm=d.Length;X.mm=d.Length;X.in=d.Length;X.pt=d.Length;X.pc=d.Length;X.deg=d.Angle;X.rad=d.Angle;X.grad=d.Angle;X.ms=d.Time;X.s=d.Time;X.hz=d.Freq;X.khz=d.Freq;X[\"%\"]=d.Percentage;X.fr=d.Percentage;X.dpi=d.Resolution;X.dpcm=d.Resolution;var Fe=function(){function n(){this.stream=new Kr(\"\"),this.ignoreComment=!0,this.ignoreWhitespace=!0,this.inURL=!1}return n.prototype.setSource=function(e){this.stream=new Kr(e)},n.prototype.finishToken=function(e,t,r){return{offset:e,len:this.stream.pos()-e,type:t,text:r||this.stream.substring(e)}},n.prototype.substring=function(e,t){return this.stream.substring(e,e+t)},n.prototype.pos=function(){return this.stream.pos()},n.prototype.goBackTo=function(e){this.stream.goBackTo(e)},n.prototype.scanUnquotedString=function(){var e=this.stream.pos(),t=[];return this._unquotedString(t)?this.finishToken(e,d.UnquotedString,t.join(\"\")):null},n.prototype.scan=function(){var e=this.trivia();if(e!==null)return e;var t=this.stream.pos();return this.stream.eos()?this.finishToken(t,d.EOF):this.scanNext(t)},n.prototype.tryScanUnicode=function(){var e=this.stream.pos();if(!this.stream.eos()&&this._unicodeRange())return this.finishToken(e,d.UnicodeRange);this.stream.goBackTo(e)},n.prototype.scanNext=function(e){if(this.stream.advanceIfChars([ws,ni,Ye,Ye]))return this.finishToken(e,d.CDO);if(this.stream.advanceIfChars([Ye,Ye,xs]))return this.finishToken(e,d.CDC);var t=[];if(this.ident(t))return this.finishToken(e,d.Ident,t.join(\"\"));if(this.stream.advanceIfChar(Ss))if(t=[\"@\"],this._name(t)){var r=t.join(\"\");return r===\"@charset\"?this.finishToken(e,d.Charset,r):this.finishToken(e,d.AtKeyword,r)}else return this.finishToken(e,d.Delim);if(this.stream.advanceIfChar(ks))return t=[\"#\"],this._name(t)?this.finishToken(e,d.Hash,t.join(\"\")):this.finishToken(e,d.Delim);if(this.stream.advanceIfChar(ni))return this.finishToken(e,d.Exclamation);if(this._number()){var i=this.stream.pos();if(t=[this.stream.substring(e,i)],this.stream.advanceIfChar(ys))return this.finishToken(e,d.Percentage);if(this.ident(t)){var o=this.stream.substring(i).toLowerCase(),s=X[o];return typeof s<\"u\"?this.finishToken(e,s,t.join(\"\")):this.finishToken(e,d.Dimension,t.join(\"\"))}return this.finishToken(e,d.Num)}t=[];var a=this._string(t);return a!==null?this.finishToken(e,a,t.join(\"\")):(a=_e[this.stream.peekChar()],typeof a<\"u\"?(this.stream.advance(1),this.finishToken(e,a)):this.stream.peekChar(0)===gs&&this.stream.peekChar(1)===_t?(this.stream.advance(2),this.finishToken(e,d.Includes)):this.stream.peekChar(0)===vs&&this.stream.peekChar(1)===_t?(this.stream.advance(2),this.finishToken(e,d.Dashmatch)):this.stream.peekChar(0)===qn&&this.stream.peekChar(1)===_t?(this.stream.advance(2),this.finishToken(e,d.SubstringOperator)):this.stream.peekChar(0)===bs&&this.stream.peekChar(1)===_t?(this.stream.advance(2),this.finishToken(e,d.PrefixOperator)):this.stream.peekChar(0)===Cs&&this.stream.peekChar(1)===_t?(this.stream.advance(2),this.finishToken(e,d.SuffixOperator)):(this.stream.nextChar(),this.finishToken(e,d.Delim)))},n.prototype.trivia=function(){for(;;){var e=this.stream.pos();if(this._whitespace()){if(!this.ignoreWhitespace)return this.finishToken(e,d.Whitespace)}else if(this.comment()){if(!this.ignoreComment)return this.finishToken(e,d.Comment)}else return null}},n.prototype.comment=function(){if(this.stream.advanceIfChars([Qr,qn])){var e=!1,t=!1;return this.stream.advanceWhileChar(function(r){return t&&r===Qr?(e=!0,!1):(t=r===qn,!0)}),e&&this.stream.advance(1),!0}return!1},n.prototype._number=function(){var e=0,t;return this.stream.peekChar()===ti&&(e=1),t=this.stream.peekChar(e),t>=kt&&t<=Ct?(this.stream.advance(e+1),this.stream.advanceWhileChar(function(r){return r>=kt&&r<=Ct||e===0&&r===ti}),!0):!1},n.prototype._newline=function(e){var t=this.stream.peekChar();switch(t){case lt:case Ft:case at:return this.stream.advance(1),e.push(String.fromCharCode(t)),t===lt&&this.stream.advanceIfChar(at)&&e.push(`\n`),!0}return!1},n.prototype._escape=function(e,t){var r=this.stream.peekChar();if(r===Kn){this.stream.advance(1),r=this.stream.peekChar();for(var i=0;i<6&&(r>=kt&&r<=Ct||r>=nn&&r<=Gr||r>=rn&&r<=Jr);)this.stream.advance(1),r=this.stream.peekChar(),i++;if(i>0){try{var o=parseInt(this.stream.substring(this.stream.pos()-i),16);o&&e.push(String.fromCharCode(o))}catch{}return r===Gn||r===Hn?this.stream.advance(1):this._newline([]),!0}if(r!==lt&&r!==Ft&&r!==at)return this.stream.advance(1),e.push(String.fromCharCode(r)),!0;if(t)return this._newline(e)}return!1},n.prototype._stringChar=function(e,t){var r=this.stream.peekChar();return r!==0&&r!==e&&r!==Kn&&r!==lt&&r!==Ft&&r!==at?(this.stream.advance(1),t.push(String.fromCharCode(r)),!0):!1},n.prototype._string=function(e){if(this.stream.peekChar()===ei||this.stream.peekChar()===Zr){var t=this.stream.nextChar();for(e.push(String.fromCharCode(t));this._stringChar(t,e)||this._escape(e,!0););return this.stream.peekChar()===t?(this.stream.nextChar(),e.push(String.fromCharCode(t)),d.String):d.BadString}return null},n.prototype._unquotedChar=function(e){var t=this.stream.peekChar();return t!==0&&t!==Kn&&t!==ei&&t!==Zr&&t!==ri&&t!==ii&&t!==Gn&&t!==Hn&&t!==at&&t!==Ft&&t!==lt?(this.stream.advance(1),e.push(String.fromCharCode(t)),!0):!1},n.prototype._unquotedString=function(e){for(var t=!1;this._unquotedChar(e)||this._escape(e);)t=!0;return t},n.prototype._whitespace=function(){var e=this.stream.advanceWhileChar(function(t){return t===Gn||t===Hn||t===at||t===Ft||t===lt});return e>0},n.prototype._name=function(e){for(var t=!1;this._identChar(e)||this._escape(e);)t=!0;return t},n.prototype.ident=function(e){var t=this.stream.pos(),r=this._minus(e);if(r){if(this._minus(e)||this._identFirstChar(e)||this._escape(e)){for(;this._identChar(e)||this._escape(e););return!0}}else if(this._identFirstChar(e)||this._escape(e)){for(;this._identChar(e)||this._escape(e););return!0}return this.stream.goBackTo(t),!1},n.prototype._identFirstChar=function(e){var t=this.stream.peekChar();return t===Yr||t>=nn&&t<=Hr||t>=rn&&t<=Xr||t>=128&&t<=65535?(this.stream.advance(1),e.push(String.fromCharCode(t)),!0):!1},n.prototype._minus=function(e){var t=this.stream.peekChar();return t===Ye?(this.stream.advance(1),e.push(String.fromCharCode(t)),!0):!1},n.prototype._identChar=function(e){var t=this.stream.peekChar();return t===Yr||t===Ye||t>=nn&&t<=Hr||t>=rn&&t<=Xr||t>=kt&&t<=Ct||t>=128&&t<=65535?(this.stream.advance(1),e.push(String.fromCharCode(t)),!0):!1},n.prototype._unicodeRange=function(){if(this.stream.advanceIfChar(Ts)){var e=function(i){return i>=kt&&i<=Ct||i>=nn&&i<=Gr||i>=rn&&i<=Jr},t=this.stream.advanceWhileChar(e)+this.stream.advanceWhileChar(function(i){return i===Ms});if(t>=1&&t<=6)if(this.stream.advanceIfChar(Ye)){var r=this.stream.advanceWhileChar(e);if(r>=1&&r<=6)return!0}else return!0}return!1},n}();function q(n,e){if(n.length<e.length)return!1;for(var t=0;t<e.length;t++)if(n[t]!==e[t])return!1;return!0}function on(n,e){var t=n.length-e.length;return t>0?n.lastIndexOf(e)===t:t===0?n===e:!1}function oi(n,e,t){t===void 0&&(t=4);var r=Math.abs(n.length-e.length);if(r>t)return 0;var i=[],o=[],s,a;for(s=0;s<e.length+1;++s)o.push(0);for(s=0;s<n.length+1;++s)i.push(o);for(s=1;s<n.length+1;++s)for(a=1;a<e.length+1;++a)n[s-1]===e[a-1]?i[s][a]=i[s-1][a-1]+1:i[s][a]=Math.max(i[s-1][a],i[s][a-1]);return i[n.length][e.length]-Math.sqrt(r)}function Jn(n,e){return e===void 0&&(e=!0),n?n.length<140?n:n.slice(0,140)+(e?\"\\u2026\":\"\"):\"\"}function si(n,e){var t=e.exec(n);return t&&t[0].length?n.substr(0,n.length-t[0].length):n}function Xn(n,e){for(var t=\"\";e>0;)(e&1)===1&&(t+=n),n+=n,e=e>>>1;return t}var E=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!=\"function\"&&t!==null)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),u;(function(n){n[n.Undefined=0]=\"Undefined\",n[n.Identifier=1]=\"Identifier\",n[n.Stylesheet=2]=\"Stylesheet\",n[n.Ruleset=3]=\"Ruleset\",n[n.Selector=4]=\"Selector\",n[n.SimpleSelector=5]=\"SimpleSelector\",n[n.SelectorInterpolation=6]=\"SelectorInterpolation\",n[n.SelectorCombinator=7]=\"SelectorCombinator\",n[n.SelectorCombinatorParent=8]=\"SelectorCombinatorParent\",n[n.SelectorCombinatorSibling=9]=\"SelectorCombinatorSibling\",n[n.SelectorCombinatorAllSiblings=10]=\"SelectorCombinatorAllSiblings\",n[n.SelectorCombinatorShadowPiercingDescendant=11]=\"SelectorCombinatorShadowPiercingDescendant\",n[n.Page=12]=\"Page\",n[n.PageBoxMarginBox=13]=\"PageBoxMarginBox\",n[n.ClassSelector=14]=\"ClassSelector\",n[n.IdentifierSelector=15]=\"IdentifierSelector\",n[n.ElementNameSelector=16]=\"ElementNameSelector\",n[n.PseudoSelector=17]=\"PseudoSelector\",n[n.AttributeSelector=18]=\"AttributeSelector\",n[n.Declaration=19]=\"Declaration\",n[n.Declarations=20]=\"Declarations\",n[n.Property=21]=\"Property\",n[n.Expression=22]=\"Expression\",n[n.BinaryExpression=23]=\"BinaryExpression\",n[n.Term=24]=\"Term\",n[n.Operator=25]=\"Operator\",n[n.Value=26]=\"Value\",n[n.StringLiteral=27]=\"StringLiteral\",n[n.URILiteral=28]=\"URILiteral\",n[n.EscapedValue=29]=\"EscapedValue\",n[n.Function=30]=\"Function\",n[n.NumericValue=31]=\"NumericValue\",n[n.HexColorValue=32]=\"HexColorValue\",n[n.RatioValue=33]=\"RatioValue\",n[n.MixinDeclaration=34]=\"MixinDeclaration\",n[n.MixinReference=35]=\"MixinReference\",n[n.VariableName=36]=\"VariableName\",n[n.VariableDeclaration=37]=\"VariableDeclaration\",n[n.Prio=38]=\"Prio\",n[n.Interpolation=39]=\"Interpolation\",n[n.NestedProperties=40]=\"NestedProperties\",n[n.ExtendsReference=41]=\"ExtendsReference\",n[n.SelectorPlaceholder=42]=\"SelectorPlaceholder\",n[n.Debug=43]=\"Debug\",n[n.If=44]=\"If\",n[n.Else=45]=\"Else\",n[n.For=46]=\"For\",n[n.Each=47]=\"Each\",n[n.While=48]=\"While\",n[n.MixinContentReference=49]=\"MixinContentReference\",n[n.MixinContentDeclaration=50]=\"MixinContentDeclaration\",n[n.Media=51]=\"Media\",n[n.Keyframe=52]=\"Keyframe\",n[n.FontFace=53]=\"FontFace\",n[n.Import=54]=\"Import\",n[n.Namespace=55]=\"Namespace\",n[n.Invocation=56]=\"Invocation\",n[n.FunctionDeclaration=57]=\"FunctionDeclaration\",n[n.ReturnStatement=58]=\"ReturnStatement\",n[n.MediaQuery=59]=\"MediaQuery\",n[n.MediaCondition=60]=\"MediaCondition\",n[n.MediaFeature=61]=\"MediaFeature\",n[n.FunctionParameter=62]=\"FunctionParameter\",n[n.FunctionArgument=63]=\"FunctionArgument\",n[n.KeyframeSelector=64]=\"KeyframeSelector\",n[n.ViewPort=65]=\"ViewPort\",n[n.Document=66]=\"Document\",n[n.AtApplyRule=67]=\"AtApplyRule\",n[n.CustomPropertyDeclaration=68]=\"CustomPropertyDeclaration\",n[n.CustomPropertySet=69]=\"CustomPropertySet\",n[n.ListEntry=70]=\"ListEntry\",n[n.Supports=71]=\"Supports\",n[n.SupportsCondition=72]=\"SupportsCondition\",n[n.NamespacePrefix=73]=\"NamespacePrefix\",n[n.GridLine=74]=\"GridLine\",n[n.Plugin=75]=\"Plugin\",n[n.UnknownAtRule=76]=\"UnknownAtRule\",n[n.Use=77]=\"Use\",n[n.ModuleConfiguration=78]=\"ModuleConfiguration\",n[n.Forward=79]=\"Forward\",n[n.ForwardVisibility=80]=\"ForwardVisibility\",n[n.Module=81]=\"Module\",n[n.UnicodeRange=82]=\"UnicodeRange\"})(u||(u={}));var A;(function(n){n[n.Mixin=0]=\"Mixin\",n[n.Rule=1]=\"Rule\",n[n.Variable=2]=\"Variable\",n[n.Function=3]=\"Function\",n[n.Keyframe=4]=\"Keyframe\",n[n.Unknown=5]=\"Unknown\",n[n.Module=6]=\"Module\",n[n.Forward=7]=\"Forward\",n[n.ForwardVisibility=8]=\"ForwardVisibility\"})(A||(A={}));function sn(n,e){var t=null;return!n||e<n.offset||e>n.end?null:(n.accept(function(r){return r.offset===-1&&r.length===-1?!0:r.offset<=e&&r.end>=e?(t?r.length<=t.length&&(t=r):t=r,!0):!1}),t)}function ct(n,e){for(var t=sn(n,e),r=[];t;)r.unshift(t),t=t.parent;return r}function ai(n){var e=n.findParent(u.Declaration),t=e&&e.getValue();return t&&t.encloses(n)?e:null}var F=function(){function n(e,t,r){e===void 0&&(e=-1),t===void 0&&(t=-1),this.parent=null,this.offset=e,this.length=t,r&&(this.nodeType=r)}return Object.defineProperty(n.prototype,\"end\",{get:function(){return this.offset+this.length},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"type\",{get:function(){return this.nodeType||u.Undefined},set:function(e){this.nodeType=e},enumerable:!1,configurable:!0}),n.prototype.getTextProvider=function(){for(var e=this;e&&!e.textProvider;)e=e.parent;return e?e.textProvider:function(){return\"unknown\"}},n.prototype.getText=function(){return this.getTextProvider()(this.offset,this.length)},n.prototype.matches=function(e){return this.length===e.length&&this.getTextProvider()(this.offset,this.length)===e},n.prototype.startsWith=function(e){return this.length>=e.length&&this.getTextProvider()(this.offset,e.length)===e},n.prototype.endsWith=function(e){return this.length>=e.length&&this.getTextProvider()(this.end-e.length,e.length)===e},n.prototype.accept=function(e){if(e(this)&&this.children)for(var t=0,r=this.children;t<r.length;t++){var i=r[t];i.accept(e)}},n.prototype.acceptVisitor=function(e){this.accept(e.visitNode.bind(e))},n.prototype.adoptChild=function(e,t){if(t===void 0&&(t=-1),e.parent&&e.parent.children){var r=e.parent.children.indexOf(e);r>=0&&e.parent.children.splice(r,1)}e.parent=this;var i=this.children;return i||(i=this.children=[]),t!==-1?i.splice(t,0,e):i.push(e),e},n.prototype.attachTo=function(e,t){return t===void 0&&(t=-1),e&&e.adoptChild(this,t),this},n.prototype.collectIssues=function(e){this.issues&&e.push.apply(e,this.issues)},n.prototype.addIssue=function(e){this.issues||(this.issues=[]),this.issues.push(e)},n.prototype.hasIssue=function(e){return Array.isArray(this.issues)&&this.issues.some(function(t){return t.getRule()===e})},n.prototype.isErroneous=function(e){return e===void 0&&(e=!1),this.issues&&this.issues.length>0?!0:e&&Array.isArray(this.children)&&this.children.some(function(t){return t.isErroneous(!0)})},n.prototype.setNode=function(e,t,r){return r===void 0&&(r=-1),t?(t.attachTo(this,r),this[e]=t,!0):!1},n.prototype.addChild=function(e){return e?(this.children||(this.children=[]),e.attachTo(this),this.updateOffsetAndLength(e),!0):!1},n.prototype.updateOffsetAndLength=function(e){(e.offset<this.offset||this.offset===-1)&&(this.offset=e.offset);var t=e.end;(t>this.end||this.length===-1)&&(this.length=t-this.offset)},n.prototype.hasChildren=function(){return!!this.children&&this.children.length>0},n.prototype.getChildren=function(){return this.children?this.children.slice(0):[]},n.prototype.getChild=function(e){return this.children&&e<this.children.length?this.children[e]:null},n.prototype.addChildren=function(e){for(var t=0,r=e;t<r.length;t++){var i=r[t];this.addChild(i)}},n.prototype.findFirstChildBeforeOffset=function(e){if(this.children){for(var t=null,r=this.children.length-1;r>=0;r--)if(t=this.children[r],t.offset<=e)return t}return null},n.prototype.findChildAtOffset=function(e,t){var r=this.findFirstChildBeforeOffset(e);return r&&r.end>=e?t&&r.findChildAtOffset(e,!0)||r:null},n.prototype.encloses=function(e){return this.offset<=e.offset&&this.offset+this.length>=e.offset+e.length},n.prototype.getParent=function(){for(var e=this.parent;e instanceof ee;)e=e.parent;return e},n.prototype.findParent=function(e){for(var t=this;t&&t.type!==e;)t=t.parent;return t},n.prototype.findAParent=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var r=this;r&&!e.some(function(i){return r.type===i});)r=r.parent;return r},n.prototype.setData=function(e,t){this.options||(this.options={}),this.options[e]=t},n.prototype.getData=function(e){return!this.options||!this.options.hasOwnProperty(e)?null:this.options[e]},n}();var ee=function(n){E(e,n);function e(t,r){r===void 0&&(r=-1);var i=n.call(this,-1,-1)||this;return i.attachTo(t,r),i.offset=-1,i.length=-1,i}return e}(F);var li=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.UnicodeRange},enumerable:!1,configurable:!0}),e.prototype.setRangeStart=function(t){return this.setNode(\"rangeStart\",t)},e.prototype.getRangeStart=function(){return this.rangeStart},e.prototype.setRangeEnd=function(t){return this.setNode(\"rangeEnd\",t)},e.prototype.getRangeEnd=function(){return this.rangeEnd},e}(F);var te=function(n){E(e,n);function e(t,r){var i=n.call(this,t,r)||this;return i.isCustomProperty=!1,i}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Identifier},enumerable:!1,configurable:!0}),e.prototype.containsInterpolation=function(){return this.hasChildren()},e}(F);var ci=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Stylesheet},enumerable:!1,configurable:!0}),e}(F);var Et=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Declarations},enumerable:!1,configurable:!0}),e}(F);var K=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return e.prototype.getDeclarations=function(){return this.declarations},e.prototype.setDeclarations=function(t){return this.setNode(\"declarations\",t)},e}(F);var Te=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Ruleset},enumerable:!1,configurable:!0}),e.prototype.getSelectors=function(){return this.selectors||(this.selectors=new ee(this)),this.selectors},e.prototype.isNested=function(){return!!this.parent&&this.parent.findParent(u.Declarations)!==null},e}(K);var Ee=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Selector},enumerable:!1,configurable:!0}),e}(F);var De=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.SimpleSelector},enumerable:!1,configurable:!0}),e}(F);var dl=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.AtApplyRule},enumerable:!1,configurable:!0}),e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e.prototype.getName=function(){return this.identifier?this.identifier.getText():\"\"},e}(F);var an=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return e}(F);var di=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.CustomPropertySet},enumerable:!1,configurable:!0}),e}(K);var ae=function(n){E(e,n);function e(t,r){var i=n.call(this,t,r)||this;return i.property=null,i}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Declaration},enumerable:!1,configurable:!0}),e.prototype.setProperty=function(t){return this.setNode(\"property\",t)},e.prototype.getProperty=function(){return this.property},e.prototype.getFullPropertyName=function(){var t=this.property?this.property.getName():\"unknown\";if(this.parent instanceof Et&&this.parent.getParent()instanceof Yn){var r=this.parent.getParent().getParent();if(r instanceof e)return r.getFullPropertyName()+t}return t},e.prototype.getNonPrefixedPropertyName=function(){var t=this.getFullPropertyName();if(t&&t.charAt(0)===\"-\"){var r=t.indexOf(\"-\",1);if(r!==-1)return t.substring(r+1)}return t},e.prototype.setValue=function(t){return this.setNode(\"value\",t)},e.prototype.getValue=function(){return this.value},e.prototype.setNestedProperties=function(t){return this.setNode(\"nestedProperties\",t)},e.prototype.getNestedProperties=function(){return this.nestedProperties},e}(an);var hi=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.CustomPropertyDeclaration},enumerable:!1,configurable:!0}),e.prototype.setPropertySet=function(t){return this.setNode(\"propertySet\",t)},e.prototype.getPropertySet=function(){return this.propertySet},e}(ae);var dt=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Property},enumerable:!1,configurable:!0}),e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t)},e.prototype.getIdentifier=function(){return this.identifier},e.prototype.getName=function(){return si(this.getText(),/[_\\+]+$/)},e.prototype.isCustomProperty=function(){return!!this.identifier&&this.identifier.isCustomProperty},e}(F);var Ns=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Invocation},enumerable:!1,configurable:!0}),e.prototype.getArguments=function(){return this.arguments||(this.arguments=new ee(this)),this.arguments},e}(F);var Pe=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Function},enumerable:!1,configurable:!0}),e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e.prototype.getName=function(){return this.identifier?this.identifier.getText():\"\"},e}(Ns);var Be=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.FunctionParameter},enumerable:!1,configurable:!0}),e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e.prototype.getName=function(){return this.identifier?this.identifier.getText():\"\"},e.prototype.setDefaultValue=function(t){return this.setNode(\"defaultValue\",t,0)},e.prototype.getDefaultValue=function(){return this.defaultValue},e}(F);var we=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.FunctionArgument},enumerable:!1,configurable:!0}),e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e.prototype.getName=function(){return this.identifier?this.identifier.getText():\"\"},e.prototype.setValue=function(t){return this.setNode(\"value\",t,0)},e.prototype.getValue=function(){return this.value},e}(F);var pi=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.If},enumerable:!1,configurable:!0}),e.prototype.setExpression=function(t){return this.setNode(\"expression\",t,0)},e.prototype.setElseClause=function(t){return this.setNode(\"elseClause\",t)},e}(K);var ui=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.For},enumerable:!1,configurable:!0}),e.prototype.setVariable=function(t){return this.setNode(\"variable\",t,0)},e}(K);var mi=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Each},enumerable:!1,configurable:!0}),e.prototype.getVariables=function(){return this.variables||(this.variables=new ee(this)),this.variables},e}(K);var fi=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.While},enumerable:!1,configurable:!0}),e}(K);var gi=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Else},enumerable:!1,configurable:!0}),e}(K);var Qe=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.FunctionDeclaration},enumerable:!1,configurable:!0}),e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e.prototype.getName=function(){return this.identifier?this.identifier.getText():\"\"},e.prototype.getParameters=function(){return this.parameters||(this.parameters=new ee(this)),this.parameters},e}(K);var bi=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.ViewPort},enumerable:!1,configurable:!0}),e}(K);var ln=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.FontFace},enumerable:!1,configurable:!0}),e}(K);var Yn=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.NestedProperties},enumerable:!1,configurable:!0}),e}(K);var cn=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Keyframe},enumerable:!1,configurable:!0}),e.prototype.setKeyword=function(t){return this.setNode(\"keyword\",t,0)},e.prototype.getKeyword=function(){return this.keyword},e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e.prototype.getName=function(){return this.identifier?this.identifier.getText():\"\"},e}(K);var Qn=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.KeyframeSelector},enumerable:!1,configurable:!0}),e}(K);var ht=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Import},enumerable:!1,configurable:!0}),e.prototype.setMedialist=function(t){return t?(t.attachTo(this),!0):!1},e}(F);var vi=function(n){E(e,n);function e(){return n!==null&&n.apply(this,arguments)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Use},enumerable:!1,configurable:!0}),e.prototype.getParameters=function(){return this.parameters||(this.parameters=new ee(this)),this.parameters},e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e}(F);var yi=function(n){E(e,n);function e(){return n!==null&&n.apply(this,arguments)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.ModuleConfiguration},enumerable:!1,configurable:!0}),e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e.prototype.getName=function(){return this.identifier?this.identifier.getText():\"\"},e.prototype.setValue=function(t){return this.setNode(\"value\",t,0)},e.prototype.getValue=function(){return this.value},e}(F);var wi=function(n){E(e,n);function e(){return n!==null&&n.apply(this,arguments)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Forward},enumerable:!1,configurable:!0}),e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e.prototype.getMembers=function(){return this.members||(this.members=new ee(this)),this.members},e.prototype.getParameters=function(){return this.parameters||(this.parameters=new ee(this)),this.parameters},e}(F);var xi=function(n){E(e,n);function e(){return n!==null&&n.apply(this,arguments)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.ForwardVisibility},enumerable:!1,configurable:!0}),e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e}(F);var Si=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Namespace},enumerable:!1,configurable:!0}),e}(F);var dn=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Media},enumerable:!1,configurable:!0}),e}(K);var Dt=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Supports},enumerable:!1,configurable:!0}),e}(K);var ki=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Document},enumerable:!1,configurable:!0}),e}(K);var hn=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return e.prototype.getMediums=function(){return this.mediums||(this.mediums=new ee(this)),this.mediums},e}(F);var pn=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.MediaQuery},enumerable:!1,configurable:!0}),e}(F);var Ci=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.MediaCondition},enumerable:!1,configurable:!0}),e}(F);var _i=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.MediaFeature},enumerable:!1,configurable:!0}),e}(F);var Ze=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.SupportsCondition},enumerable:!1,configurable:!0}),e}(F);var Fi=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Page},enumerable:!1,configurable:!0}),e}(K);var Ei=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.PageBoxMarginBox},enumerable:!1,configurable:!0}),e}(K);var un=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Expression},enumerable:!1,configurable:!0}),e}(F);var pt=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.BinaryExpression},enumerable:!1,configurable:!0}),e.prototype.setLeft=function(t){return this.setNode(\"left\",t)},e.prototype.getLeft=function(){return this.left},e.prototype.setRight=function(t){return this.setNode(\"right\",t)},e.prototype.getRight=function(){return this.right},e.prototype.setOperator=function(t){return this.setNode(\"operator\",t)},e.prototype.getOperator=function(){return this.operator},e}(F);var Di=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Term},enumerable:!1,configurable:!0}),e.prototype.setOperator=function(t){return this.setNode(\"operator\",t)},e.prototype.getOperator=function(){return this.operator},e.prototype.setExpression=function(t){return this.setNode(\"expression\",t)},e.prototype.getExpression=function(){return this.expression},e}(F);var zi=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.AttributeSelector},enumerable:!1,configurable:!0}),e.prototype.setNamespacePrefix=function(t){return this.setNode(\"namespacePrefix\",t)},e.prototype.getNamespacePrefix=function(){return this.namespacePrefix},e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t)},e.prototype.getIdentifier=function(){return this.identifier},e.prototype.setOperator=function(t){return this.setNode(\"operator\",t)},e.prototype.getOperator=function(){return this.operator},e.prototype.setValue=function(t){return this.setNode(\"value\",t)},e.prototype.getValue=function(){return this.value},e}(F);var hl=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Operator},enumerable:!1,configurable:!0}),e}(F);var zt=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.HexColorValue},enumerable:!1,configurable:!0}),e}(F);var Ri=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.RatioValue},enumerable:!1,configurable:!0}),e}(F);var Os=\".\".charCodeAt(0),Ws=\"0\".charCodeAt(0),Ls=\"9\".charCodeAt(0),Rt=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.NumericValue},enumerable:!1,configurable:!0}),e.prototype.getValue=function(){for(var t=this.getText(),r=0,i,o=0,s=t.length;o<s&&(i=t.charCodeAt(o),Ws<=i&&i<=Ls||i===Os);o++)r+=1;return{value:t.substring(0,r),unit:r<t.length?t.substring(r):void 0}},e}(F);var $e=function(n){E(e,n);function e(t,r){var i=n.call(this,t,r)||this;return i.variable=null,i.value=null,i.needsSemicolon=!0,i}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.VariableDeclaration},enumerable:!1,configurable:!0}),e.prototype.setVariable=function(t){return t?(t.attachTo(this),this.variable=t,!0):!1},e.prototype.getVariable=function(){return this.variable},e.prototype.getName=function(){return this.variable?this.variable.getName():\"\"},e.prototype.setValue=function(t){return t?(t.attachTo(this),this.value=t,!0):!1},e.prototype.getValue=function(){return this.value},e}(an);var It=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Interpolation},enumerable:!1,configurable:!0}),e}(F);var ut=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.VariableName},enumerable:!1,configurable:!0}),e.prototype.getName=function(){return this.getText()},e}(F);var qe=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.ExtendsReference},enumerable:!1,configurable:!0}),e.prototype.getSelectors=function(){return this.selectors||(this.selectors=new ee(this)),this.selectors},e}(F);var Ii=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.MixinContentReference},enumerable:!1,configurable:!0}),e.prototype.getArguments=function(){return this.arguments||(this.arguments=new ee(this)),this.arguments},e}(F);var Mi=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.MixinContentReference},enumerable:!1,configurable:!0}),e.prototype.getParameters=function(){return this.parameters||(this.parameters=new ee(this)),this.parameters},e}(K);var et=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.MixinReference},enumerable:!1,configurable:!0}),e.prototype.getNamespaces=function(){return this.namespaces||(this.namespaces=new ee(this)),this.namespaces},e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e.prototype.getName=function(){return this.identifier?this.identifier.getText():\"\"},e.prototype.getArguments=function(){return this.arguments||(this.arguments=new ee(this)),this.arguments},e.prototype.setContent=function(t){return this.setNode(\"content\",t)},e.prototype.getContent=function(){return this.content},e}(F);var Ae=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.MixinDeclaration},enumerable:!1,configurable:!0}),e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e.prototype.getName=function(){return this.identifier?this.identifier.getText():\"\"},e.prototype.getParameters=function(){return this.parameters||(this.parameters=new ee(this)),this.parameters},e.prototype.setGuard=function(t){return t&&(t.attachTo(this),this.guard=t),!1},e}(K);var mn=function(n){E(e,n);function e(t,r){return n.call(this,t,r)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.UnknownAtRule},enumerable:!1,configurable:!0}),e.prototype.setAtRuleName=function(t){this.atRuleName=t},e.prototype.getAtRuleName=function(){return this.atRuleName},e}(K);var Ti=function(n){E(e,n);function e(){return n!==null&&n.apply(this,arguments)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.ListEntry},enumerable:!1,configurable:!0}),e.prototype.setKey=function(t){return this.setNode(\"key\",t,0)},e.prototype.setValue=function(t){return this.setNode(\"value\",t,1)},e}(F);var Pi=function(n){E(e,n);function e(){return n!==null&&n.apply(this,arguments)||this}return e.prototype.getConditions=function(){return this.conditions||(this.conditions=new ee(this)),this.conditions},e}(F);var Ai=function(n){E(e,n);function e(){return n!==null&&n.apply(this,arguments)||this}return e.prototype.setVariable=function(t){return this.setNode(\"variable\",t)},e}(F);var Zn=function(n){E(e,n);function e(){return n!==null&&n.apply(this,arguments)||this}return Object.defineProperty(e.prototype,\"type\",{get:function(){return u.Module},enumerable:!1,configurable:!0}),e.prototype.setIdentifier=function(t){return this.setNode(\"identifier\",t,0)},e.prototype.getIdentifier=function(){return this.identifier},e}(F);var ne;(function(n){n[n.Ignore=1]=\"Ignore\",n[n.Warning=2]=\"Warning\",n[n.Error=4]=\"Error\"})(ne||(ne={}));var fn=function(){function n(e,t,r,i,o,s){o===void 0&&(o=e.offset),s===void 0&&(s=e.length),this.node=e,this.rule=t,this.level=r,this.message=i||t.message,this.offset=o,this.length=s}return n.prototype.getRule=function(){return this.rule},n.prototype.getLevel=function(){return this.level},n.prototype.getOffset=function(){return this.offset},n.prototype.getLength=function(){return this.length},n.prototype.getNode=function(){return this.node},n.prototype.getMessage=function(){return this.message},n}();var Ni=function(){function n(){this.entries=[]}return n.entries=function(e){var t=new n;return e.acceptVisitor(t),t.entries},n.prototype.visitNode=function(e){return e.isErroneous()&&e.collectIssues(this.entries),!0},n}();function Us(n,e){let t;return e.length===0?t=n:t=n.replace(/\\{(\\d+)\\}/g,(r,i)=>{let o=i[0];return typeof e[o]<\"u\"?e[o]:r}),t}function js(n,e,...t){return Us(e,t)}function H(n){return js}var U=H(),j=function(){function n(e,t){this.id=e,this.message=t}return n}();var f={NumberExpected:new j(\"css-numberexpected\",U(\"expected.number\",\"number expected\")),ConditionExpected:new j(\"css-conditionexpected\",U(\"expected.condt\",\"condition expected\")),RuleOrSelectorExpected:new j(\"css-ruleorselectorexpected\",U(\"expected.ruleorselector\",\"at-rule or selector expected\")),DotExpected:new j(\"css-dotexpected\",U(\"expected.dot\",\"dot expected\")),ColonExpected:new j(\"css-colonexpected\",U(\"expected.colon\",\"colon expected\")),SemiColonExpected:new j(\"css-semicolonexpected\",U(\"expected.semicolon\",\"semi-colon expected\")),TermExpected:new j(\"css-termexpected\",U(\"expected.term\",\"term expected\")),ExpressionExpected:new j(\"css-expressionexpected\",U(\"expected.expression\",\"expression expected\")),OperatorExpected:new j(\"css-operatorexpected\",U(\"expected.operator\",\"operator expected\")),IdentifierExpected:new j(\"css-identifierexpected\",U(\"expected.ident\",\"identifier expected\")),PercentageExpected:new j(\"css-percentageexpected\",U(\"expected.percentage\",\"percentage expected\")),URIOrStringExpected:new j(\"css-uriorstringexpected\",U(\"expected.uriorstring\",\"uri or string expected\")),URIExpected:new j(\"css-uriexpected\",U(\"expected.uri\",\"URI expected\")),VariableNameExpected:new j(\"css-varnameexpected\",U(\"expected.varname\",\"variable name expected\")),VariableValueExpected:new j(\"css-varvalueexpected\",U(\"expected.varvalue\",\"variable value expected\")),PropertyValueExpected:new j(\"css-propertyvalueexpected\",U(\"expected.propvalue\",\"property value expected\")),LeftCurlyExpected:new j(\"css-lcurlyexpected\",U(\"expected.lcurly\",\"{ expected\")),RightCurlyExpected:new j(\"css-rcurlyexpected\",U(\"expected.rcurly\",\"} expected\")),LeftSquareBracketExpected:new j(\"css-rbracketexpected\",U(\"expected.lsquare\",\"[ expected\")),RightSquareBracketExpected:new j(\"css-lbracketexpected\",U(\"expected.rsquare\",\"] expected\")),LeftParenthesisExpected:new j(\"css-lparentexpected\",U(\"expected.lparen\",\"( expected\")),RightParenthesisExpected:new j(\"css-rparentexpected\",U(\"expected.rparent\",\") expected\")),CommaExpected:new j(\"css-commaexpected\",U(\"expected.comma\",\"comma expected\")),PageDirectiveOrDeclarationExpected:new j(\"css-pagedirordeclexpected\",U(\"expected.pagedirordecl\",\"page directive or declaraton expected\")),UnknownAtRule:new j(\"css-unknownatrule\",U(\"unknown.atrule\",\"at-rule unknown\")),UnknownKeyword:new j(\"css-unknownkeyword\",U(\"unknown.keyword\",\"unknown keyword\")),SelectorExpected:new j(\"css-selectorexpected\",U(\"expected.selector\",\"selector expected\")),StringLiteralExpected:new j(\"css-stringliteralexpected\",U(\"expected.stringliteral\",\"string literal expected\")),WhitespaceExpected:new j(\"css-whitespaceexpected\",U(\"expected.whitespace\",\"whitespace expected\")),MediaQueryExpected:new j(\"css-mediaqueryexpected\",U(\"expected.mediaquery\",\"media query expected\")),IdentifierOrWildcardExpected:new j(\"css-idorwildcardexpected\",U(\"expected.idorwildcard\",\"identifier or wildcard expected\")),WildcardExpected:new j(\"css-wildcardexpected\",U(\"expected.wildcard\",\"wildcard expected\")),IdentifierOrVariableExpected:new j(\"css-idorvarexpected\",U(\"expected.idorvar\",\"identifier or variable expected\"))};var Oi;(function(n){n.MIN_VALUE=-2147483648,n.MAX_VALUE=2147483647})(Oi||(Oi={}));var bn;(function(n){n.MIN_VALUE=0,n.MAX_VALUE=2147483647})(bn||(bn={}));var Q;(function(n){function e(r,i){return r===Number.MAX_VALUE&&(r=bn.MAX_VALUE),i===Number.MAX_VALUE&&(i=bn.MAX_VALUE),{line:r,character:i}}n.create=e;function t(r){var i=r;return v.objectLiteral(i)&&v.uinteger(i.line)&&v.uinteger(i.character)}n.is=t})(Q||(Q={}));var W;(function(n){function e(r,i,o,s){if(v.uinteger(r)&&v.uinteger(i)&&v.uinteger(o)&&v.uinteger(s))return{start:Q.create(r,i),end:Q.create(o,s)};if(Q.is(r)&&Q.is(i))return{start:r,end:i};throw new Error(\"Range#create called with invalid arguments[\"+r+\", \"+i+\", \"+o+\", \"+s+\"]\")}n.create=e;function t(r){var i=r;return v.objectLiteral(i)&&Q.is(i.start)&&Q.is(i.end)}n.is=t})(W||(W={}));var tt;(function(n){function e(r,i){return{uri:r,range:i}}n.create=e;function t(r){var i=r;return v.defined(i)&&W.is(i.range)&&(v.string(i.uri)||v.undefined(i.uri))}n.is=t})(tt||(tt={}));var Wi;(function(n){function e(r,i,o,s){return{targetUri:r,targetRange:i,targetSelectionRange:o,originSelectionRange:s}}n.create=e;function t(r){var i=r;return v.defined(i)&&W.is(i.targetRange)&&v.string(i.targetUri)&&(W.is(i.targetSelectionRange)||v.undefined(i.targetSelectionRange))&&(W.is(i.originSelectionRange)||v.undefined(i.originSelectionRange))}n.is=t})(Wi||(Wi={}));var vn;(function(n){function e(r,i,o,s){return{red:r,green:i,blue:o,alpha:s}}n.create=e;function t(r){var i=r;return v.numberRange(i.red,0,1)&&v.numberRange(i.green,0,1)&&v.numberRange(i.blue,0,1)&&v.numberRange(i.alpha,0,1)}n.is=t})(vn||(vn={}));var er;(function(n){function e(r,i){return{range:r,color:i}}n.create=e;function t(r){var i=r;return W.is(i.range)&&vn.is(i.color)}n.is=t})(er||(er={}));var tr;(function(n){function e(r,i,o){return{label:r,textEdit:i,additionalTextEdits:o}}n.create=e;function t(r){var i=r;return v.string(i.label)&&(v.undefined(i.textEdit)||T.is(i))&&(v.undefined(i.additionalTextEdits)||v.typedArray(i.additionalTextEdits,T.is))}n.is=t})(tr||(tr={}));var nr;(function(n){n.Comment=\"comment\",n.Imports=\"imports\",n.Region=\"region\"})(nr||(nr={}));var rr;(function(n){function e(r,i,o,s,a){var l={startLine:r,endLine:i};return v.defined(o)&&(l.startCharacter=o),v.defined(s)&&(l.endCharacter=s),v.defined(a)&&(l.kind=a),l}n.create=e;function t(r){var i=r;return v.uinteger(i.startLine)&&v.uinteger(i.startLine)&&(v.undefined(i.startCharacter)||v.uinteger(i.startCharacter))&&(v.undefined(i.endCharacter)||v.uinteger(i.endCharacter))&&(v.undefined(i.kind)||v.string(i.kind))}n.is=t})(rr||(rr={}));var ir;(function(n){function e(r,i){return{location:r,message:i}}n.create=e;function t(r){var i=r;return v.defined(i)&&tt.is(i.location)&&v.string(i.message)}n.is=t})(ir||(ir={}));var ft;(function(n){n.Error=1,n.Warning=2,n.Information=3,n.Hint=4})(ft||(ft={}));var Li;(function(n){n.Unnecessary=1,n.Deprecated=2})(Li||(Li={}));var Ui;(function(n){function e(t){var r=t;return r!=null&&v.string(r.href)}n.is=e})(Ui||(Ui={}));var Mt;(function(n){function e(r,i,o,s,a,l){var c={range:r,message:i};return v.defined(o)&&(c.severity=o),v.defined(s)&&(c.code=s),v.defined(a)&&(c.source=a),v.defined(l)&&(c.relatedInformation=l),c}n.create=e;function t(r){var i,o=r;return v.defined(o)&&W.is(o.range)&&v.string(o.message)&&(v.number(o.severity)||v.undefined(o.severity))&&(v.integer(o.code)||v.string(o.code)||v.undefined(o.code))&&(v.undefined(o.codeDescription)||v.string((i=o.codeDescription)===null||i===void 0?void 0:i.href))&&(v.string(o.source)||v.undefined(o.source))&&(v.undefined(o.relatedInformation)||v.typedArray(o.relatedInformation,ir.is))}n.is=t})(Mt||(Mt={}));var Ge;(function(n){function e(r,i){for(var o=[],s=2;s<arguments.length;s++)o[s-2]=arguments[s];var a={title:r,command:i};return v.defined(o)&&o.length>0&&(a.arguments=o),a}n.create=e;function t(r){var i=r;return v.defined(i)&&v.string(i.title)&&v.string(i.command)}n.is=t})(Ge||(Ge={}));var T;(function(n){function e(o,s){return{range:o,newText:s}}n.replace=e;function t(o,s){return{range:{start:o,end:o},newText:s}}n.insert=t;function r(o){return{range:o,newText:\"\"}}n.del=r;function i(o){var s=o;return v.objectLiteral(s)&&v.string(s.newText)&&W.is(s.range)}n.is=i})(T||(T={}));var mt;(function(n){function e(r,i,o){var s={label:r};return i!==void 0&&(s.needsConfirmation=i),o!==void 0&&(s.description=o),s}n.create=e;function t(r){var i=r;return i!==void 0&&v.objectLiteral(i)&&v.string(i.label)&&(v.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(v.string(i.description)||i.description===void 0)}n.is=t})(mt||(mt={}));var le;(function(n){function e(t){var r=t;return typeof r==\"string\"}n.is=e})(le||(le={}));var Ke;(function(n){function e(o,s,a){return{range:o,newText:s,annotationId:a}}n.replace=e;function t(o,s,a){return{range:{start:o,end:o},newText:s,annotationId:a}}n.insert=t;function r(o,s){return{range:o,newText:\"\",annotationId:s}}n.del=r;function i(o){var s=o;return T.is(s)&&(mt.is(s.annotationId)||le.is(s.annotationId))}n.is=i})(Ke||(Ke={}));var nt;(function(n){function e(r,i){return{textDocument:r,edits:i}}n.create=e;function t(r){var i=r;return v.defined(i)&&wn.is(i.textDocument)&&Array.isArray(i.edits)}n.is=t})(nt||(nt={}));var Tt;(function(n){function e(r,i,o){var s={kind:\"create\",uri:r};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),o!==void 0&&(s.annotationId=o),s}n.create=e;function t(r){var i=r;return i&&i.kind===\"create\"&&v.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||v.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||v.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||le.is(i.annotationId))}n.is=t})(Tt||(Tt={}));var Pt;(function(n){function e(r,i,o,s){var a={kind:\"rename\",oldUri:r,newUri:i};return o!==void 0&&(o.overwrite!==void 0||o.ignoreIfExists!==void 0)&&(a.options=o),s!==void 0&&(a.annotationId=s),a}n.create=e;function t(r){var i=r;return i&&i.kind===\"rename\"&&v.string(i.oldUri)&&v.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||v.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||v.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||le.is(i.annotationId))}n.is=t})(Pt||(Pt={}));var At;(function(n){function e(r,i,o){var s={kind:\"delete\",uri:r};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),o!==void 0&&(s.annotationId=o),s}n.create=e;function t(r){var i=r;return i&&i.kind===\"delete\"&&v.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||v.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||v.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||le.is(i.annotationId))}n.is=t})(At||(At={}));var yn;(function(n){function e(t){var r=t;return r&&(r.changes!==void 0||r.documentChanges!==void 0)&&(r.documentChanges===void 0||r.documentChanges.every(function(i){return v.string(i.kind)?Tt.is(i)||Pt.is(i)||At.is(i):nt.is(i)}))}n.is=e})(yn||(yn={}));var gn=function(){function n(e,t){this.edits=e,this.changeAnnotations=t}return n.prototype.insert=function(e,t,r){var i,o;if(r===void 0?i=T.insert(e,t):le.is(r)?(o=r,i=Ke.insert(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(r),i=Ke.insert(e,t,o)),this.edits.push(i),o!==void 0)return o},n.prototype.replace=function(e,t,r){var i,o;if(r===void 0?i=T.replace(e,t):le.is(r)?(o=r,i=Ke.replace(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(r),i=Ke.replace(e,t,o)),this.edits.push(i),o!==void 0)return o},n.prototype.delete=function(e,t){var r,i;if(t===void 0?r=T.del(e):le.is(t)?(i=t,r=Ke.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(t),r=Ke.del(e,i)),this.edits.push(r),i!==void 0)return i},n.prototype.add=function(e){this.edits.push(e)},n.prototype.all=function(){return this.edits},n.prototype.clear=function(){this.edits.splice(0,this.edits.length)},n.prototype.assertChangeAnnotations=function(e){if(e===void 0)throw new Error(\"Text edit change is not configured to manage change annotations.\")},n}(),ji=function(){function n(e){this._annotations=e===void 0?Object.create(null):e,this._counter=0,this._size=0}return n.prototype.all=function(){return this._annotations},Object.defineProperty(n.prototype,\"size\",{get:function(){return this._size},enumerable:!1,configurable:!0}),n.prototype.manage=function(e,t){var r;if(le.is(e)?r=e:(r=this.nextId(),t=e),this._annotations[r]!==void 0)throw new Error(\"Id \"+r+\" is already in use.\");if(t===void 0)throw new Error(\"No annotation provided for id \"+r);return this._annotations[r]=t,this._size++,r},n.prototype.nextId=function(){return this._counter++,this._counter.toString()},n}(),ul=function(){function n(e){var t=this;this._textEditChanges=Object.create(null),e!==void 0?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new ji(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach(function(r){if(nt.is(r)){var i=new gn(r.edits,t._changeAnnotations);t._textEditChanges[r.textDocument.uri]=i}})):e.changes&&Object.keys(e.changes).forEach(function(r){var i=new gn(e.changes[r]);t._textEditChanges[r]=i})):this._workspaceEdit={}}return Object.defineProperty(n.prototype,\"edit\",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),n.prototype.getTextEditChange=function(e){if(wn.is(e)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var t={uri:e.uri,version:e.version},r=this._textEditChanges[t.uri];if(!r){var i=[],o={textDocument:t,edits:i};this._workspaceEdit.documentChanges.push(o),r=new gn(i,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error(\"Workspace edit is not configured for normal text edit changes.\");var r=this._textEditChanges[e];if(!r){var i=[];this._workspaceEdit.changes[e]=i,r=new gn(i),this._textEditChanges[e]=r}return r}},n.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new ji,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},n.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},n.prototype.createFile=function(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var i;mt.is(t)||le.is(t)?i=t:r=t;var o,s;if(i===void 0?o=Tt.create(e,r):(s=le.is(i)?i:this._changeAnnotations.manage(i),o=Tt.create(e,r,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},n.prototype.renameFile=function(e,t,r,i){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var o;mt.is(r)||le.is(r)?o=r:i=r;var s,a;if(o===void 0?s=Pt.create(e,t,i):(a=le.is(o)?o:this._changeAnnotations.manage(o),s=Pt.create(e,t,i,a)),this._workspaceEdit.documentChanges.push(s),a!==void 0)return a},n.prototype.deleteFile=function(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var i;mt.is(t)||le.is(t)?i=t:r=t;var o,s;if(i===void 0?o=At.create(e,r):(s=le.is(i)?i:this._changeAnnotations.manage(i),o=At.create(e,r,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},n}();var Vi;(function(n){function e(r){return{uri:r}}n.create=e;function t(r){var i=r;return v.defined(i)&&v.string(i.uri)}n.is=t})(Vi||(Vi={}));var Nt;(function(n){function e(r,i){return{uri:r,version:i}}n.create=e;function t(r){var i=r;return v.defined(i)&&v.string(i.uri)&&v.integer(i.version)}n.is=t})(Nt||(Nt={}));var wn;(function(n){function e(r,i){return{uri:r,version:i}}n.create=e;function t(r){var i=r;return v.defined(i)&&v.string(i.uri)&&(i.version===null||v.integer(i.version))}n.is=t})(wn||(wn={}));var Bi;(function(n){function e(r,i,o,s){return{uri:r,languageId:i,version:o,text:s}}n.create=e;function t(r){var i=r;return v.defined(i)&&v.string(i.uri)&&v.string(i.languageId)&&v.integer(i.version)&&v.string(i.text)}n.is=t})(Bi||(Bi={}));var ce;(function(n){n.PlainText=\"plaintext\",n.Markdown=\"markdown\"})(ce||(ce={}));(function(n){function e(t){var r=t;return r===n.PlainText||r===n.Markdown}n.is=e})(ce||(ce={}));var xn;(function(n){function e(t){var r=t;return v.objectLiteral(t)&&ce.is(r.kind)&&v.string(r.value)}n.is=e})(xn||(xn={}));var R;(function(n){n.Text=1,n.Method=2,n.Function=3,n.Constructor=4,n.Field=5,n.Variable=6,n.Class=7,n.Interface=8,n.Module=9,n.Property=10,n.Unit=11,n.Value=12,n.Enum=13,n.Keyword=14,n.Snippet=15,n.Color=16,n.File=17,n.Reference=18,n.Folder=19,n.EnumMember=20,n.Constant=21,n.Struct=22,n.Event=23,n.Operator=24,n.TypeParameter=25})(R||(R={}));var re;(function(n){n.PlainText=1,n.Snippet=2})(re||(re={}));var Ne;(function(n){n.Deprecated=1})(Ne||(Ne={}));var $i;(function(n){function e(r,i,o){return{newText:r,insert:i,replace:o}}n.create=e;function t(r){var i=r;return i&&v.string(i.newText)&&W.is(i.insert)&&W.is(i.replace)}n.is=t})($i||($i={}));var qi;(function(n){n.asIs=1,n.adjustIndentation=2})(qi||(qi={}));var or;(function(n){function e(t){return{label:t}}n.create=e})(or||(or={}));var sr;(function(n){function e(t,r){return{items:t||[],isIncomplete:!!r}}n.create=e})(sr||(sr={}));var Ot;(function(n){function e(r){return r.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g,\"\\\\$&\")}n.fromPlainText=e;function t(r){var i=r;return v.string(i)||v.objectLiteral(i)&&v.string(i.language)&&v.string(i.value)}n.is=t})(Ot||(Ot={}));var ar;(function(n){function e(t){var r=t;return!!r&&v.objectLiteral(r)&&(xn.is(r.contents)||Ot.is(r.contents)||v.typedArray(r.contents,Ot.is))&&(t.range===void 0||W.is(t.range))}n.is=e})(ar||(ar={}));var Ki;(function(n){function e(t,r){return r?{label:t,documentation:r}:{label:t}}n.create=e})(Ki||(Ki={}));var Gi;(function(n){function e(t,r){for(var i=[],o=2;o<arguments.length;o++)i[o-2]=arguments[o];var s={label:t};return v.defined(r)&&(s.documentation=r),v.defined(i)?s.parameters=i:s.parameters=[],s}n.create=e})(Gi||(Gi={}));var He;(function(n){n.Text=1,n.Read=2,n.Write=3})(He||(He={}));var lr;(function(n){function e(t,r){var i={range:t};return v.number(r)&&(i.kind=r),i}n.create=e})(lr||(lr={}));var Oe;(function(n){n.File=1,n.Module=2,n.Namespace=3,n.Package=4,n.Class=5,n.Method=6,n.Property=7,n.Field=8,n.Constructor=9,n.Enum=10,n.Interface=11,n.Function=12,n.Variable=13,n.Constant=14,n.String=15,n.Number=16,n.Boolean=17,n.Array=18,n.Object=19,n.Key=20,n.Null=21,n.EnumMember=22,n.Struct=23,n.Event=24,n.Operator=25,n.TypeParameter=26})(Oe||(Oe={}));var Hi;(function(n){n.Deprecated=1})(Hi||(Hi={}));var cr;(function(n){function e(t,r,i,o,s){var a={name:t,kind:r,location:{uri:o,range:i}};return s&&(a.containerName=s),a}n.create=e})(cr||(cr={}));var dr;(function(n){function e(r,i,o,s,a,l){var c={name:r,detail:i,kind:o,range:s,selectionRange:a};return l!==void 0&&(c.children=l),c}n.create=e;function t(r){var i=r;return i&&v.string(i.name)&&v.number(i.kind)&&W.is(i.range)&&W.is(i.selectionRange)&&(i.detail===void 0||v.string(i.detail))&&(i.deprecated===void 0||v.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}n.is=t})(dr||(dr={}));var Wt;(function(n){n.Empty=\"\",n.QuickFix=\"quickfix\",n.Refactor=\"refactor\",n.RefactorExtract=\"refactor.extract\",n.RefactorInline=\"refactor.inline\",n.RefactorRewrite=\"refactor.rewrite\",n.Source=\"source\",n.SourceOrganizeImports=\"source.organizeImports\",n.SourceFixAll=\"source.fixAll\"})(Wt||(Wt={}));var hr;(function(n){function e(r,i){var o={diagnostics:r};return i!=null&&(o.only=i),o}n.create=e;function t(r){var i=r;return v.defined(i)&&v.typedArray(i.diagnostics,Mt.is)&&(i.only===void 0||v.typedArray(i.only,v.string))}n.is=t})(hr||(hr={}));var Lt;(function(n){function e(r,i,o){var s={title:r},a=!0;return typeof i==\"string\"?(a=!1,s.kind=i):Ge.is(i)?s.command=i:s.edit=i,a&&o!==void 0&&(s.kind=o),s}n.create=e;function t(r){var i=r;return i&&v.string(i.title)&&(i.diagnostics===void 0||v.typedArray(i.diagnostics,Mt.is))&&(i.kind===void 0||v.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||Ge.is(i.command))&&(i.isPreferred===void 0||v.boolean(i.isPreferred))&&(i.edit===void 0||yn.is(i.edit))}n.is=t})(Lt||(Lt={}));var Ji;(function(n){function e(r,i){var o={range:r};return v.defined(i)&&(o.data=i),o}n.create=e;function t(r){var i=r;return v.defined(i)&&W.is(i.range)&&(v.undefined(i.command)||Ge.is(i.command))}n.is=t})(Ji||(Ji={}));var Xi;(function(n){function e(r,i){return{tabSize:r,insertSpaces:i}}n.create=e;function t(r){var i=r;return v.defined(i)&&v.uinteger(i.tabSize)&&v.boolean(i.insertSpaces)}n.is=t})(Xi||(Xi={}));var pr;(function(n){function e(r,i,o){return{range:r,target:i,data:o}}n.create=e;function t(r){var i=r;return v.defined(i)&&W.is(i.range)&&(v.undefined(i.target)||v.string(i.target))}n.is=t})(pr||(pr={}));var gt;(function(n){function e(r,i){return{range:r,parent:i}}n.create=e;function t(r){var i=r;return i!==void 0&&W.is(i.range)&&(i.parent===void 0||n.is(i.parent))}n.is=t})(gt||(gt={}));var Yi;(function(n){function e(o,s,a,l){return new Vs(o,s,a,l)}n.create=e;function t(o){var s=o;return!!(v.defined(s)&&v.string(s.uri)&&(v.undefined(s.languageId)||v.string(s.languageId))&&v.uinteger(s.lineCount)&&v.func(s.getText)&&v.func(s.positionAt)&&v.func(s.offsetAt))}n.is=t;function r(o,s){for(var a=o.getText(),l=i(s,function(w,x){var y=w.range.start.line-x.range.start.line;return y===0?w.range.start.character-x.range.start.character:y}),c=a.length,h=l.length-1;h>=0;h--){var p=l[h],m=o.offsetAt(p.range.start),g=o.offsetAt(p.range.end);if(g<=c)a=a.substring(0,m)+p.newText+a.substring(g,a.length);else throw new Error(\"Overlapping edit\");c=m}return a}n.applyEdits=r;function i(o,s){if(o.length<=1)return o;var a=o.length/2|0,l=o.slice(0,a),c=o.slice(a);i(l,s),i(c,s);for(var h=0,p=0,m=0;h<l.length&&p<c.length;){var g=s(l[h],c[p]);g<=0?o[m++]=l[h++]:o[m++]=c[p++]}for(;h<l.length;)o[m++]=l[h++];for(;p<c.length;)o[m++]=c[p++];return o}})(Yi||(Yi={}));var Vs=function(){function n(e,t,r,i){this._uri=e,this._languageId=t,this._version=r,this._content=i,this._lineOffsets=void 0}return Object.defineProperty(n.prototype,\"uri\",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"languageId\",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"version\",{get:function(){return this._version},enumerable:!1,configurable:!0}),n.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),r=this.offsetAt(e.end);return this._content.substring(t,r)}return this._content},n.prototype.update=function(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0},n.prototype.getLineOffsets=function(){if(this._lineOffsets===void 0){for(var e=[],t=this._content,r=!0,i=0;i<t.length;i++){r&&(e.push(i),r=!1);var o=t.charAt(i);r=o===\"\\r\"||o===`\n`,o===\"\\r\"&&i+1<t.length&&t.charAt(i+1)===`\n`&&i++}r&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},n.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),r=0,i=t.length;if(i===0)return Q.create(0,e);for(;r<i;){var o=Math.floor((r+i)/2);t[o]>e?i=o:r=o+1}var s=r-1;return Q.create(s,e-t[s])},n.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var r=t[e.line],i=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(r+e.character,i),r)},Object.defineProperty(n.prototype,\"lineCount\",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),n}(),v;(function(n){var e=Object.prototype.toString;function t(g){return typeof g<\"u\"}n.defined=t;function r(g){return typeof g>\"u\"}n.undefined=r;function i(g){return g===!0||g===!1}n.boolean=i;function o(g){return e.call(g)===\"[object String]\"}n.string=o;function s(g){return e.call(g)===\"[object Number]\"}n.number=s;function a(g,w,x){return e.call(g)===\"[object Number]\"&&w<=g&&g<=x}n.numberRange=a;function l(g){return e.call(g)===\"[object Number]\"&&-2147483648<=g&&g<=2147483647}n.integer=l;function c(g){return e.call(g)===\"[object Number]\"&&0<=g&&g<=2147483647}n.uinteger=c;function h(g){return e.call(g)===\"[object Function]\"}n.func=h;function p(g){return g!==null&&typeof g==\"object\"}n.objectLiteral=p;function m(g,w){return Array.isArray(g)&&g.every(w)}n.typedArray=m})(v||(v={}));var rt=class{constructor(e,t,r,i){this._uri=e,this._languageId=t,this._version=r,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),r=this.offsetAt(e.end);return this._content.substring(t,r)}return this._content}update(e,t){for(let r of e)if(rt.isIncremental(r)){let i=Zi(r.range),o=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,o)+r.text+this._content.substring(s,this._content.length);let a=Math.max(i.start.line,0),l=Math.max(i.end.line,0),c=this._lineOffsets,h=Qi(r.text,!1,o);if(l-a===h.length)for(let m=0,g=h.length;m<g;m++)c[m+a+1]=h[m];else h.length<1e4?c.splice(a+1,l-a,...h):this._lineOffsets=c=c.slice(0,a+1).concat(h,c.slice(l+1));let p=r.text.length-(s-o);if(p!==0)for(let m=a+1+h.length,g=c.length;m<g;m++)c[m]=c[m]+p}else if(rt.isFull(r))this._content=r.text,this._lineOffsets=void 0;else throw new Error(\"Unknown change event received\");this._version=t}getLineOffsets(){return this._lineOffsets===void 0&&(this._lineOffsets=Qi(this._content,!0)),this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),r=0,i=t.length;if(i===0)return{line:0,character:e};for(;r<i;){let s=Math.floor((r+i)/2);t[s]>e?i=s:r=s+1}let o=r-1;return{line:o,character:e-t[o]}}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let r=t[e.line],i=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(r+e.character,i),r)}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){let t=e;return t!=null&&typeof t.text==\"string\"&&t.range!==void 0&&(t.rangeLength===void 0||typeof t.rangeLength==\"number\")}static isFull(e){let t=e;return t!=null&&typeof t.text==\"string\"&&t.range===void 0&&t.rangeLength===void 0}},Ut;(function(n){function e(i,o,s,a){return new rt(i,o,s,a)}n.create=e;function t(i,o,s){if(i instanceof rt)return i.update(o,s),i;throw new Error(\"TextDocument.update: document must be created by TextDocument.create\")}n.update=t;function r(i,o){let s=i.getText(),a=ur(o.map(Bs),(h,p)=>{let m=h.range.start.line-p.range.start.line;return m===0?h.range.start.character-p.range.start.character:m}),l=0,c=[];for(let h of a){let p=i.offsetAt(h.range.start);if(p<l)throw new Error(\"Overlapping edit\");p>l&&c.push(s.substring(l,p)),h.newText.length&&c.push(h.newText),l=i.offsetAt(h.range.end)}return c.push(s.substr(l)),c.join(\"\")}n.applyEdits=r})(Ut||(Ut={}));function ur(n,e){if(n.length<=1)return n;let t=n.length/2|0,r=n.slice(0,t),i=n.slice(t);ur(r,e),ur(i,e);let o=0,s=0,a=0;for(;o<r.length&&s<i.length;)e(r[o],i[s])<=0?n[a++]=r[o++]:n[a++]=i[s++];for(;o<r.length;)n[a++]=r[o++];for(;s<i.length;)n[a++]=i[s++];return n}function Qi(n,e,t=0){let r=e?[t]:[];for(let i=0;i<n.length;i++){let o=n.charCodeAt(i);(o===13||o===10)&&(o===13&&i+1<n.length&&n.charCodeAt(i+1)===10&&i++,r.push(t+i+1))}return r}function Zi(n){let e=n.start,t=n.end;return e.line>t.line||e.line===t.line&&e.character>t.character?{start:t,end:e}:n}function Bs(n){let e=Zi(n.range);return e!==n.range?{newText:n.newText,range:e}:n}var eo;(function(n){n.LATEST={textDocument:{completion:{completionItem:{documentationFormat:[ce.Markdown,ce.PlainText]}},hover:{contentFormat:[ce.Markdown,ce.PlainText]}}}})(eo||(eo={}));var it;(function(n){n[n.Unknown=0]=\"Unknown\",n[n.File=1]=\"File\",n[n.Directory=2]=\"Directory\",n[n.SymbolicLink=64]=\"SymbolicLink\"})(it||(it={}));var to={E:\"Edge\",FF:\"Firefox\",S:\"Safari\",C:\"Chrome\",IE:\"IE\",O:\"Opera\"};function no(n){switch(n){case\"experimental\":return`\\u26A0\\uFE0F Property is experimental. Be cautious when using it.\\uFE0F\n\n`;case\"nonstandard\":return`\\u{1F6A8}\\uFE0F Property is nonstandard. Avoid using it.\n\n`;case\"obsolete\":return`\\u{1F6A8}\\uFE0F\\uFE0F\\uFE0F Property is obsolete. Avoid using it.\n\n`;default:return\"\"}}function ze(n,e,t){var r;if(e?r={kind:\"markdown\",value:qs(n,t)}:r={kind:\"plaintext\",value:$s(n,t)},r.value!==\"\")return r}function Sn(n){return n=n.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g,\"\\\\$&\"),n.replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")}function $s(n,e){if(!n.description||n.description===\"\")return\"\";if(typeof n.description!=\"string\")return n.description.value;var t=\"\";if(e?.documentation!==!1){n.status&&(t+=no(n.status)),t+=n.description;var r=ro(n.browsers);r&&(t+=`\n(`+r+\")\"),\"syntax\"in n&&(t+=`\n\nSyntax: `.concat(n.syntax))}return n.references&&n.references.length>0&&e?.references!==!1&&(t.length>0&&(t+=`\n\n`),t+=n.references.map(function(i){return\"\".concat(i.name,\": \").concat(i.url)}).join(\" | \")),t}function qs(n,e){if(!n.description||n.description===\"\")return\"\";var t=\"\";if(e?.documentation!==!1){n.status&&(t+=no(n.status)),typeof n.description==\"string\"?t+=Sn(n.description):t+=n.description.kind===ce.Markdown?n.description.value:Sn(n.description.value);var r=ro(n.browsers);r&&(t+=`\n\n(`+Sn(r)+\")\"),\"syntax\"in n&&n.syntax&&(t+=`\n\nSyntax: `.concat(Sn(n.syntax)))}return n.references&&n.references.length>0&&e?.references!==!1&&(t.length>0&&(t+=`\n\n`),t+=n.references.map(function(i){return\"[\".concat(i.name,\"](\").concat(i.url,\")\")}).join(\" | \")),t}function ro(n){return n===void 0&&(n=[]),n.length===0?null:n.map(function(e){var t=\"\",r=e.match(/([A-Z]+)(\\d+)?/),i=r[1],o=r[2];return i in to&&(t+=to[i]),o&&(t+=\" \"+o),t}).join(\", \")}var jt=H(),ao=[{func:\"rgb($red, $green, $blue)\",desc:jt(\"css.builtin.rgb\",\"Creates a Color from red, green, and blue values.\")},{func:\"rgba($red, $green, $blue, $alpha)\",desc:jt(\"css.builtin.rgba\",\"Creates a Color from red, green, blue, and alpha values.\")},{func:\"hsl($hue, $saturation, $lightness)\",desc:jt(\"css.builtin.hsl\",\"Creates a Color from hue, saturation, and lightness values.\")},{func:\"hsla($hue, $saturation, $lightness, $alpha)\",desc:jt(\"css.builtin.hsla\",\"Creates a Color from hue, saturation, lightness, and alpha values.\")},{func:\"hwb($hue $white $black)\",desc:jt(\"css.builtin.hwb\",\"Creates a Color from hue, white and black.\")}],Vt={aliceblue:\"#f0f8ff\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",aquamarine:\"#7fffd4\",azure:\"#f0ffff\",beige:\"#f5f5dc\",bisque:\"#ffe4c4\",black:\"#000000\",blanchedalmond:\"#ffebcd\",blue:\"#0000ff\",blueviolet:\"#8a2be2\",brown:\"#a52a2a\",burlywood:\"#deb887\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",cornflowerblue:\"#6495ed\",cornsilk:\"#fff8dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkgray:\"#a9a9a9\",darkgrey:\"#a9a9a9\",darkgreen:\"#006400\",darkkhaki:\"#bdb76b\",darkmagenta:\"#8b008b\",darkolivegreen:\"#556b2f\",darkorange:\"#ff8c00\",darkorchid:\"#9932cc\",darkred:\"#8b0000\",darksalmon:\"#e9967a\",darkseagreen:\"#8fbc8f\",darkslateblue:\"#483d8b\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",darkturquoise:\"#00ced1\",darkviolet:\"#9400d3\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",dimgray:\"#696969\",dimgrey:\"#696969\",dodgerblue:\"#1e90ff\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",forestgreen:\"#228b22\",fuchsia:\"#ff00ff\",gainsboro:\"#dcdcdc\",ghostwhite:\"#f8f8ff\",gold:\"#ffd700\",goldenrod:\"#daa520\",gray:\"#808080\",grey:\"#808080\",green:\"#008000\",greenyellow:\"#adff2f\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",ivory:\"#fffff0\",khaki:\"#f0e68c\",lavender:\"#e6e6fa\",lavenderblush:\"#fff0f5\",lawngreen:\"#7cfc00\",lemonchiffon:\"#fffacd\",lightblue:\"#add8e6\",lightcoral:\"#f08080\",lightcyan:\"#e0ffff\",lightgoldenrodyellow:\"#fafad2\",lightgray:\"#d3d3d3\",lightgrey:\"#d3d3d3\",lightgreen:\"#90ee90\",lightpink:\"#ffb6c1\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",lightskyblue:\"#87cefa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",lightsteelblue:\"#b0c4de\",lightyellow:\"#ffffe0\",lime:\"#00ff00\",limegreen:\"#32cd32\",linen:\"#faf0e6\",magenta:\"#ff00ff\",maroon:\"#800000\",mediumaquamarine:\"#66cdaa\",mediumblue:\"#0000cd\",mediumorchid:\"#ba55d3\",mediumpurple:\"#9370d8\",mediumseagreen:\"#3cb371\",mediumslateblue:\"#7b68ee\",mediumspringgreen:\"#00fa9a\",mediumturquoise:\"#48d1cc\",mediumvioletred:\"#c71585\",midnightblue:\"#191970\",mintcream:\"#f5fffa\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",navajowhite:\"#ffdead\",navy:\"#000080\",oldlace:\"#fdf5e6\",olive:\"#808000\",olivedrab:\"#6b8e23\",orange:\"#ffa500\",orangered:\"#ff4500\",orchid:\"#da70d6\",palegoldenrod:\"#eee8aa\",palegreen:\"#98fb98\",paleturquoise:\"#afeeee\",palevioletred:\"#d87093\",papayawhip:\"#ffefd5\",peachpuff:\"#ffdab9\",peru:\"#cd853f\",pink:\"#ffc0cb\",plum:\"#dda0dd\",powderblue:\"#b0e0e6\",purple:\"#800080\",red:\"#ff0000\",rebeccapurple:\"#663399\",rosybrown:\"#bc8f8f\",royalblue:\"#4169e1\",saddlebrown:\"#8b4513\",salmon:\"#fa8072\",sandybrown:\"#f4a460\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",sienna:\"#a0522d\",silver:\"#c0c0c0\",skyblue:\"#87ceeb\",slateblue:\"#6a5acd\",slategray:\"#708090\",slategrey:\"#708090\",snow:\"#fffafa\",springgreen:\"#00ff7f\",steelblue:\"#4682b4\",tan:\"#d2b48c\",teal:\"#008080\",thistle:\"#d8bfd8\",tomato:\"#ff6347\",turquoise:\"#40e0d0\",violet:\"#ee82ee\",wheat:\"#f5deb3\",white:\"#ffffff\",whitesmoke:\"#f5f5f5\",yellow:\"#ffff00\",yellowgreen:\"#9acd32\"},mr={currentColor:\"The value of the 'color' property. The computed value of the 'currentColor' keyword is the computed value of the 'color' property. If the 'currentColor' keyword is set on the 'color' property itself, it is treated as 'color:inherit' at parse time.\",transparent:\"Fully transparent. This keyword can be considered a shorthand for rgba(0,0,0,0) which is its computed value.\"};function Je(n,e){var t=n.getText(),r=t.match(/^([-+]?[0-9]*\\.?[0-9]+)(%?)$/);if(r){r[2]&&(e=100);var i=parseFloat(r[1])/e;if(i>=0&&i<=1)return i}throw new Error}function io(n){var e=n.getText(),t=e.match(/^([-+]?[0-9]*\\.?[0-9]+)(deg|rad|grad|turn)?$/);if(t)switch(t[2]){case\"deg\":return parseFloat(e)%360;case\"rad\":return parseFloat(e)*180/Math.PI%360;case\"grad\":return parseFloat(e)*.9%360;case\"turn\":return parseFloat(e)*360%360;default:if(typeof t[2]>\"u\")return parseFloat(e)%360}throw new Error}function lo(n){var e=n.getName();return e?/^(rgb|rgba|hsl|hsla|hwb)$/gi.test(e):!1}var oo=48,Ks=57,Gs=65;var kn=97,Hs=102;function J(n){return n<oo?0:n<=Ks?n-oo:(n<kn&&(n+=kn-Gs),n>=kn&&n<=Hs?n-kn+10:0)}function so(n){if(n[0]!==\"#\")return null;switch(n.length){case 4:return{red:J(n.charCodeAt(1))*17/255,green:J(n.charCodeAt(2))*17/255,blue:J(n.charCodeAt(3))*17/255,alpha:1};case 5:return{red:J(n.charCodeAt(1))*17/255,green:J(n.charCodeAt(2))*17/255,blue:J(n.charCodeAt(3))*17/255,alpha:J(n.charCodeAt(4))*17/255};case 7:return{red:(J(n.charCodeAt(1))*16+J(n.charCodeAt(2)))/255,green:(J(n.charCodeAt(3))*16+J(n.charCodeAt(4)))/255,blue:(J(n.charCodeAt(5))*16+J(n.charCodeAt(6)))/255,alpha:1};case 9:return{red:(J(n.charCodeAt(1))*16+J(n.charCodeAt(2)))/255,green:(J(n.charCodeAt(3))*16+J(n.charCodeAt(4)))/255,blue:(J(n.charCodeAt(5))*16+J(n.charCodeAt(6)))/255,alpha:(J(n.charCodeAt(7))*16+J(n.charCodeAt(8)))/255}}return null}function co(n,e,t,r){if(r===void 0&&(r=1),n=n/60,e===0)return{red:t,green:t,blue:t,alpha:r};var i=function(a,l,c){for(;c<0;)c+=6;for(;c>=6;)c-=6;return c<1?(l-a)*c+a:c<3?l:c<4?(l-a)*(4-c)+a:a},o=t<=.5?t*(e+1):t+e-t*e,s=t*2-o;return{red:i(s,o,n+2),green:i(s,o,n),blue:i(s,o,n-2),alpha:r}}function fr(n){var e=n.red,t=n.green,r=n.blue,i=n.alpha,o=Math.max(e,t,r),s=Math.min(e,t,r),a=0,l=0,c=(s+o)/2,h=o-s;if(h>0){switch(l=Math.min(c<=.5?h/(2*c):h/(2-2*c),1),o){case e:a=(t-r)/h+(t<r?6:0);break;case t:a=(r-e)/h+2;break;case r:a=(e-t)/h+4;break}a*=60,a=Math.round(a)}return{h:a,s:l,l:c,a:i}}function Js(n,e,t,r){if(r===void 0&&(r=1),e+t>=1){var i=e/(e+t);return{red:i,green:i,blue:i,alpha:r}}var o=co(n,1,.5,r),s=o.red;s*=1-e-t,s+=e;var a=o.green;a*=1-e-t,a+=e;var l=o.blue;return l*=1-e-t,l+=e,{red:s,green:a,blue:l,alpha:r}}function ho(n){var e=fr(n),t=Math.min(n.red,n.green,n.blue),r=1-Math.max(n.red,n.green,n.blue);return{h:e.h,w:t,b:r,a:e.a}}function po(n){if(n.type===u.HexColorValue){var e=n.getText();return so(e)}else if(n.type===u.Function){var t=n,r=t.getName(),i=t.getArguments().getChildren();if(i.length===1){var o=i[0].getChildren();if(o.length===1&&o[0].type===u.Expression&&(i=o[0].getChildren(),i.length===3)){var s=i[2];if(s instanceof pt){var a=s.getLeft(),l=s.getRight(),c=s.getOperator();a&&l&&c&&c.matches(\"/\")&&(i=[i[0],i[1],a,l])}}}if(!r||i.length<3||i.length>4)return null;try{var h=i.length===4?Je(i[3],1):1;if(r===\"rgb\"||r===\"rgba\")return{red:Je(i[0],255),green:Je(i[1],255),blue:Je(i[2],255),alpha:h};if(r===\"hsl\"||r===\"hsla\"){var p=io(i[0]),m=Je(i[1],100),g=Je(i[2],100);return co(p,m,g,h)}else if(r===\"hwb\"){var p=io(i[0]),w=Je(i[1],100),x=Je(i[2],100);return Js(p,w,x,h)}}catch{return null}}else if(n.type===u.Identifier){if(n.parent&&n.parent.type!==u.Term)return null;var y=n.parent;if(y&&y.parent&&y.parent.type===u.BinaryExpression){var D=y.parent;if(D.parent&&D.parent.type===u.ListEntry&&D.parent.key===D)return null}var M=n.getText().toLowerCase();if(M===\"none\")return null;var z=Vt[M];if(z)return so(z)}return null}var gr={bottom:\"Computes to \\u2018100%\\u2019 for the vertical position if one or two values are given, otherwise specifies the bottom edge as the origin for the next offset.\",center:\"Computes to \\u201850%\\u2019 (\\u2018left 50%\\u2019) for the horizontal position if the horizontal position is not otherwise specified, or \\u201850%\\u2019 (\\u2018top 50%\\u2019) for the vertical position if it is.\",left:\"Computes to \\u20180%\\u2019 for the horizontal position if one or two values are given, otherwise specifies the left edge as the origin for the next offset.\",right:\"Computes to \\u2018100%\\u2019 for the horizontal position if one or two values are given, otherwise specifies the right edge as the origin for the next offset.\",top:\"Computes to \\u20180%\\u2019 for the vertical position if one or two values are given, otherwise specifies the top edge as the origin for the next offset.\"},br={\"no-repeat\":\"Placed once and not repeated in this direction.\",repeat:\"Repeated in this direction as often as needed to cover the background painting area.\",\"repeat-x\":\"Computes to \\u2018repeat no-repeat\\u2019.\",\"repeat-y\":\"Computes to \\u2018no-repeat repeat\\u2019.\",round:\"Repeated as often as will fit within the background positioning area. If it doesn\\u2019t fit a whole number of times, it is rescaled so that it does.\",space:\"Repeated as often as will fit within the background positioning area without being clipped and then the images are spaced out to fill the area.\"},vr={dashed:\"A series of square-ended dashes.\",dotted:\"A series of round dots.\",double:\"Two parallel solid lines with some space between them.\",groove:\"Looks as if it were carved in the canvas.\",hidden:\"Same as \\u2018none\\u2019, but has different behavior in the border conflict resolution rules for border-collapsed tables.\",inset:\"Looks as if the content on the inside of the border is sunken into the canvas.\",none:\"No border. Color and width are ignored.\",outset:\"Looks as if the content on the inside of the border is coming out of the canvas.\",ridge:\"Looks as if it were coming out of the canvas.\",solid:\"A single line segment.\"},uo=[\"medium\",\"thick\",\"thin\"],yr={\"border-box\":\"The background is painted within (clipped to) the border box.\",\"content-box\":\"The background is painted within (clipped to) the content box.\",\"padding-box\":\"The background is painted within (clipped to) the padding box.\"},wr={\"margin-box\":\"Uses the margin box as reference box.\",\"fill-box\":\"Uses the object bounding box as reference box.\",\"stroke-box\":\"Uses the stroke bounding box as reference box.\",\"view-box\":\"Uses the nearest SVG viewport as reference box.\"},xr={initial:\"Represents the value specified as the property\\u2019s initial value.\",inherit:\"Represents the computed value of the property on the element\\u2019s parent.\",unset:\"Acts as either `inherit` or `initial`, depending on whether the property is inherited or not.\"},Sr={\"var()\":\"Evaluates the value of a custom variable.\",\"calc()\":\"Evaluates an mathematical expression. The following operators can be used: + - * /.\"},kr={\"url()\":\"Reference an image file by URL\",\"image()\":\"Provide image fallbacks and annotations.\",\"-webkit-image-set()\":\"Provide multiple resolutions. Remember to use unprefixed image-set() in addition.\",\"image-set()\":\"Provide multiple resolutions of an image and const the UA decide which is most appropriate in a given situation.\",\"-moz-element()\":\"Use an element in the document as an image. Remember to use unprefixed element() in addition.\",\"element()\":\"Use an element in the document as an image.\",\"cross-fade()\":\"Indicates the two images to be combined and how far along in the transition the combination is.\",\"-webkit-gradient()\":\"Deprecated. Use modern linear-gradient() or radial-gradient() instead.\",\"-webkit-linear-gradient()\":\"Linear gradient. Remember to use unprefixed version in addition.\",\"-moz-linear-gradient()\":\"Linear gradient. Remember to use unprefixed version in addition.\",\"-o-linear-gradient()\":\"Linear gradient. Remember to use unprefixed version in addition.\",\"linear-gradient()\":\"A linear gradient is created by specifying a straight gradient line, and then several colors placed along that line.\",\"-webkit-repeating-linear-gradient()\":\"Repeating Linear gradient. Remember to use unprefixed version in addition.\",\"-moz-repeating-linear-gradient()\":\"Repeating Linear gradient. Remember to use unprefixed version in addition.\",\"-o-repeating-linear-gradient()\":\"Repeating Linear gradient. Remember to use unprefixed version in addition.\",\"repeating-linear-gradient()\":\"Same as linear-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop\\u2019s position and the first specified color-stop\\u2019s position.\",\"-webkit-radial-gradient()\":\"Radial gradient. Remember to use unprefixed version in addition.\",\"-moz-radial-gradient()\":\"Radial gradient. Remember to use unprefixed version in addition.\",\"radial-gradient()\":\"Colors emerge from a single point and smoothly spread outward in a circular or elliptical shape.\",\"-webkit-repeating-radial-gradient()\":\"Repeating radial gradient. Remember to use unprefixed version in addition.\",\"-moz-repeating-radial-gradient()\":\"Repeating radial gradient. Remember to use unprefixed version in addition.\",\"repeating-radial-gradient()\":\"Same as radial-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop\\u2019s position and the first specified color-stop\\u2019s position.\"},Cr={ease:\"Equivalent to cubic-bezier(0.25, 0.1, 0.25, 1.0).\",\"ease-in\":\"Equivalent to cubic-bezier(0.42, 0, 1.0, 1.0).\",\"ease-in-out\":\"Equivalent to cubic-bezier(0.42, 0, 0.58, 1.0).\",\"ease-out\":\"Equivalent to cubic-bezier(0, 0, 0.58, 1.0).\",linear:\"Equivalent to cubic-bezier(0.0, 0.0, 1.0, 1.0).\",\"step-end\":\"Equivalent to steps(1, end).\",\"step-start\":\"Equivalent to steps(1, start).\",\"steps()\":\"The first parameter specifies the number of intervals in the function. The second parameter, which is optional, is either the value \\u201Cstart\\u201D or \\u201Cend\\u201D.\",\"cubic-bezier()\":\"Specifies a cubic-bezier curve. The four values specify points P1 and P2  of the curve as (x1, y1, x2, y2).\",\"cubic-bezier(0.6, -0.28, 0.735, 0.045)\":\"Ease-in Back. Overshoots.\",\"cubic-bezier(0.68, -0.55, 0.265, 1.55)\":\"Ease-in-out Back. Overshoots.\",\"cubic-bezier(0.175, 0.885, 0.32, 1.275)\":\"Ease-out Back. Overshoots.\",\"cubic-bezier(0.6, 0.04, 0.98, 0.335)\":\"Ease-in Circular. Based on half circle.\",\"cubic-bezier(0.785, 0.135, 0.15, 0.86)\":\"Ease-in-out Circular. Based on half circle.\",\"cubic-bezier(0.075, 0.82, 0.165, 1)\":\"Ease-out Circular. Based on half circle.\",\"cubic-bezier(0.55, 0.055, 0.675, 0.19)\":\"Ease-in Cubic. Based on power of three.\",\"cubic-bezier(0.645, 0.045, 0.355, 1)\":\"Ease-in-out Cubic. Based on power of three.\",\"cubic-bezier(0.215, 0.610, 0.355, 1)\":\"Ease-out Cubic. Based on power of three.\",\"cubic-bezier(0.95, 0.05, 0.795, 0.035)\":\"Ease-in Exponential. Based on two to the power ten.\",\"cubic-bezier(1, 0, 0, 1)\":\"Ease-in-out Exponential. Based on two to the power ten.\",\"cubic-bezier(0.19, 1, 0.22, 1)\":\"Ease-out Exponential. Based on two to the power ten.\",\"cubic-bezier(0.47, 0, 0.745, 0.715)\":\"Ease-in Sine.\",\"cubic-bezier(0.445, 0.05, 0.55, 0.95)\":\"Ease-in-out Sine.\",\"cubic-bezier(0.39, 0.575, 0.565, 1)\":\"Ease-out Sine.\",\"cubic-bezier(0.55, 0.085, 0.68, 0.53)\":\"Ease-in Quadratic. Based on power of two.\",\"cubic-bezier(0.455, 0.03, 0.515, 0.955)\":\"Ease-in-out Quadratic. Based on power of two.\",\"cubic-bezier(0.25, 0.46, 0.45, 0.94)\":\"Ease-out Quadratic. Based on power of two.\",\"cubic-bezier(0.895, 0.03, 0.685, 0.22)\":\"Ease-in Quartic. Based on power of four.\",\"cubic-bezier(0.77, 0, 0.175, 1)\":\"Ease-in-out Quartic. Based on power of four.\",\"cubic-bezier(0.165, 0.84, 0.44, 1)\":\"Ease-out Quartic. Based on power of four.\",\"cubic-bezier(0.755, 0.05, 0.855, 0.06)\":\"Ease-in Quintic. Based on power of five.\",\"cubic-bezier(0.86, 0, 0.07, 1)\":\"Ease-in-out Quintic. Based on power of five.\",\"cubic-bezier(0.23, 1, 0.320, 1)\":\"Ease-out Quintic. Based on power of five.\"},_r={\"circle()\":\"Defines a circle.\",\"ellipse()\":\"Defines an ellipse.\",\"inset()\":\"Defines an inset rectangle.\",\"polygon()\":\"Defines a polygon.\"},Cn={length:[\"em\",\"rem\",\"ex\",\"px\",\"cm\",\"mm\",\"in\",\"pt\",\"pc\",\"ch\",\"vw\",\"vh\",\"vmin\",\"vmax\"],angle:[\"deg\",\"rad\",\"grad\",\"turn\"],time:[\"ms\",\"s\"],frequency:[\"Hz\",\"kHz\"],resolution:[\"dpi\",\"dpcm\",\"dppx\"],percentage:[\"%\",\"fr\"]},mo=[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"bdi\",\"bdo\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"picture\",\"pre\",\"progress\",\"q\",\"rb\",\"rp\",\"rt\",\"rtc\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\",\"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"template\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"title\",\"tr\",\"track\",\"u\",\"ul\",\"const\",\"video\",\"wbr\"],fo=[\"circle\",\"clipPath\",\"cursor\",\"defs\",\"desc\",\"ellipse\",\"feBlend\",\"feColorMatrix\",\"feComponentTransfer\",\"feComposite\",\"feConvolveMatrix\",\"feDiffuseLighting\",\"feDisplacementMap\",\"feDistantLight\",\"feDropShadow\",\"feFlood\",\"feFuncA\",\"feFuncB\",\"feFuncG\",\"feFuncR\",\"feGaussianBlur\",\"feImage\",\"feMerge\",\"feMergeNode\",\"feMorphology\",\"feOffset\",\"fePointLight\",\"feSpecularLighting\",\"feSpotLight\",\"feTile\",\"feTurbulence\",\"filter\",\"foreignObject\",\"g\",\"hatch\",\"hatchpath\",\"image\",\"line\",\"linearGradient\",\"marker\",\"mask\",\"mesh\",\"meshpatch\",\"meshrow\",\"metadata\",\"mpath\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialGradient\",\"rect\",\"set\",\"solidcolor\",\"stop\",\"svg\",\"switch\",\"symbol\",\"text\",\"textPath\",\"tspan\",\"use\",\"view\"],go=[\"@bottom-center\",\"@bottom-left\",\"@bottom-left-corner\",\"@bottom-right\",\"@bottom-right-corner\",\"@left-bottom\",\"@left-middle\",\"@left-top\",\"@right-bottom\",\"@right-middle\",\"@right-top\",\"@top-center\",\"@top-left\",\"@top-left-corner\",\"@top-right\",\"@top-right-corner\"];function Bt(n){return Object.keys(n).map(function(e){return n[e]})}function he(n){return typeof n<\"u\"}var bo=function(n,e,t){if(t||arguments.length===2)for(var r=0,i=e.length,o;r<i;r++)(o||!(r in e))&&(o||(o=Array.prototype.slice.call(e,0,r)),o[r]=e[r]);return n.concat(o||Array.prototype.slice.call(e))},bt=function(){function n(e){e===void 0&&(e=new Fe),this.keyframeRegex=/^@(\\-(webkit|ms|moz|o)\\-)?keyframes$/i,this.scanner=e,this.token={type:d.EOF,offset:-1,len:0,text:\"\"},this.prevToken=void 0}return n.prototype.peekIdent=function(e){return d.Ident===this.token.type&&e.length===this.token.text.length&&e===this.token.text.toLowerCase()},n.prototype.peekKeyword=function(e){return d.AtKeyword===this.token.type&&e.length===this.token.text.length&&e===this.token.text.toLowerCase()},n.prototype.peekDelim=function(e){return d.Delim===this.token.type&&e===this.token.text},n.prototype.peek=function(e){return e===this.token.type},n.prototype.peekOne=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return e.indexOf(this.token.type)!==-1},n.prototype.peekRegExp=function(e,t){return e!==this.token.type?!1:t.test(this.token.text)},n.prototype.hasWhitespace=function(){return!!this.prevToken&&this.prevToken.offset+this.prevToken.len!==this.token.offset},n.prototype.consumeToken=function(){this.prevToken=this.token,this.token=this.scanner.scan()},n.prototype.acceptUnicodeRange=function(){var e=this.scanner.tryScanUnicode();return e?(this.prevToken=e,this.token=this.scanner.scan(),!0):!1},n.prototype.mark=function(){return{prev:this.prevToken,curr:this.token,pos:this.scanner.pos()}},n.prototype.restoreAtMark=function(e){this.prevToken=e.prev,this.token=e.curr,this.scanner.goBackTo(e.pos)},n.prototype.try=function(e){var t=this.mark(),r=e();return r||(this.restoreAtMark(t),null)},n.prototype.acceptOneKeyword=function(e){if(d.AtKeyword===this.token.type)for(var t=0,r=e;t<r.length;t++){var i=r[t];if(i.length===this.token.text.length&&i===this.token.text.toLowerCase())return this.consumeToken(),!0}return!1},n.prototype.accept=function(e){return e===this.token.type?(this.consumeToken(),!0):!1},n.prototype.acceptIdent=function(e){return this.peekIdent(e)?(this.consumeToken(),!0):!1},n.prototype.acceptKeyword=function(e){return this.peekKeyword(e)?(this.consumeToken(),!0):!1},n.prototype.acceptDelim=function(e){return this.peekDelim(e)?(this.consumeToken(),!0):!1},n.prototype.acceptRegexp=function(e){return e.test(this.token.text)?(this.consumeToken(),!0):!1},n.prototype._parseRegexp=function(e){var t=this.createNode(u.Identifier);do;while(this.acceptRegexp(e));return this.finish(t)},n.prototype.acceptUnquotedString=function(){var e=this.scanner.pos();this.scanner.goBackTo(this.token.offset);var t=this.scanner.scanUnquotedString();return t?(this.token=t,this.consumeToken(),!0):(this.scanner.goBackTo(e),!1)},n.prototype.resync=function(e,t){for(;;){if(e&&e.indexOf(this.token.type)!==-1)return this.consumeToken(),!0;if(t&&t.indexOf(this.token.type)!==-1)return!0;if(this.token.type===d.EOF)return!1;this.token=this.scanner.scan()}},n.prototype.createNode=function(e){return new F(this.token.offset,this.token.len,e)},n.prototype.create=function(e){return new e(this.token.offset,this.token.len)},n.prototype.finish=function(e,t,r,i){if(!(e instanceof ee)&&(t&&this.markError(e,t,r,i),this.prevToken)){var o=this.prevToken.offset+this.prevToken.len;e.length=o>e.offset?o-e.offset:0}return e},n.prototype.markError=function(e,t,r,i){this.token!==this.lastErrorToken&&(e.addIssue(new fn(e,t,ne.Error,void 0,this.token.offset,this.token.len)),this.lastErrorToken=this.token),(r||i)&&this.resync(r,i)},n.prototype.parseStylesheet=function(e){var t=e.version,r=e.getText(),i=function(o,s){if(e.version!==t)throw new Error(\"Underlying model has changed, AST is no longer valid\");return r.substr(o,s)};return this.internalParse(r,this._parseStylesheet,i)},n.prototype.internalParse=function(e,t,r){this.scanner.setSource(e),this.token=this.scanner.scan();var i=t.bind(this)();return i&&(r?i.textProvider=r:i.textProvider=function(o,s){return e.substr(o,s)}),i},n.prototype._parseStylesheet=function(){for(var e=this.create(ci);e.addChild(this._parseStylesheetStart()););var t=!1;do{var r=!1;do{r=!1;var i=this._parseStylesheetStatement();for(i&&(e.addChild(i),r=!0,t=!1,!this.peek(d.EOF)&&this._needsSemicolonAfter(i)&&!this.accept(d.SemiColon)&&this.markError(e,f.SemiColonExpected));this.accept(d.SemiColon)||this.accept(d.CDO)||this.accept(d.CDC);)r=!0,t=!1}while(r);if(this.peek(d.EOF))break;t||(this.peek(d.AtKeyword)?this.markError(e,f.UnknownAtRule):this.markError(e,f.RuleOrSelectorExpected),t=!0),this.consumeToken()}while(!this.peek(d.EOF));return this.finish(e)},n.prototype._parseStylesheetStart=function(){return this._parseCharset()},n.prototype._parseStylesheetStatement=function(e){return e===void 0&&(e=!1),this.peek(d.AtKeyword)?this._parseStylesheetAtStatement(e):this._parseRuleset(e)},n.prototype._parseStylesheetAtStatement=function(e){return e===void 0&&(e=!1),this._parseImport()||this._parseMedia(e)||this._parsePage()||this._parseFontFace()||this._parseKeyframe()||this._parseSupports(e)||this._parseViewPort()||this._parseNamespace()||this._parseDocument()||this._parseUnknownAtRule()},n.prototype._tryParseRuleset=function(e){var t=this.mark();if(this._parseSelector(e)){for(;this.accept(d.Comma)&&this._parseSelector(e););if(this.accept(d.CurlyL))return this.restoreAtMark(t),this._parseRuleset(e)}return this.restoreAtMark(t),null},n.prototype._parseRuleset=function(e){e===void 0&&(e=!1);var t=this.create(Te),r=t.getSelectors();if(!r.addChild(this._parseSelector(e)))return null;for(;this.accept(d.Comma);)if(!r.addChild(this._parseSelector(e)))return this.finish(t,f.SelectorExpected);return this._parseBody(t,this._parseRuleSetDeclaration.bind(this))},n.prototype._parseRuleSetDeclarationAtStatement=function(){return this._parseUnknownAtRule()},n.prototype._parseRuleSetDeclaration=function(){return this.peek(d.AtKeyword)?this._parseRuleSetDeclarationAtStatement():this._parseDeclaration()},n.prototype._needsSemicolonAfter=function(e){switch(e.type){case u.Keyframe:case u.ViewPort:case u.Media:case u.Ruleset:case u.Namespace:case u.If:case u.For:case u.Each:case u.While:case u.MixinDeclaration:case u.FunctionDeclaration:case u.MixinContentDeclaration:return!1;case u.ExtendsReference:case u.MixinContentReference:case u.ReturnStatement:case u.MediaQuery:case u.Debug:case u.Import:case u.AtApplyRule:case u.CustomPropertyDeclaration:return!0;case u.VariableDeclaration:return e.needsSemicolon;case u.MixinReference:return!e.getContent();case u.Declaration:return!e.getNestedProperties()}return!1},n.prototype._parseDeclarations=function(e){var t=this.create(Et);if(!this.accept(d.CurlyL))return null;for(var r=e();t.addChild(r)&&!this.peek(d.CurlyR);){if(this._needsSemicolonAfter(r)&&!this.accept(d.SemiColon))return this.finish(t,f.SemiColonExpected,[d.SemiColon,d.CurlyR]);for(r&&this.prevToken&&this.prevToken.type===d.SemiColon&&(r.semicolonPosition=this.prevToken.offset);this.accept(d.SemiColon););r=e()}return this.accept(d.CurlyR)?this.finish(t):this.finish(t,f.RightCurlyExpected,[d.CurlyR,d.SemiColon])},n.prototype._parseBody=function(e,t){return e.setDeclarations(this._parseDeclarations(t))?this.finish(e):this.finish(e,f.LeftCurlyExpected,[d.CurlyR,d.SemiColon])},n.prototype._parseSelector=function(e){var t=this.create(Ee),r=!1;for(e&&(r=t.addChild(this._parseCombinator()));t.addChild(this._parseSimpleSelector());)r=!0,t.addChild(this._parseCombinator());return r?this.finish(t):null},n.prototype._parseDeclaration=function(e){var t=this._tryParseCustomPropertyDeclaration(e);if(t)return t;var r=this.create(ae);return r.setProperty(this._parseProperty())?this.accept(d.Colon)?(this.prevToken&&(r.colonPosition=this.prevToken.offset),r.setValue(this._parseExpr())?(r.addChild(this._parsePrio()),this.peek(d.SemiColon)&&(r.semicolonPosition=this.token.offset),this.finish(r)):this.finish(r,f.PropertyValueExpected)):this.finish(r,f.ColonExpected,[d.Colon],e||[d.SemiColon]):null},n.prototype._tryParseCustomPropertyDeclaration=function(e){if(!this.peekRegExp(d.Ident,/^--/))return null;var t=this.create(hi);if(!t.setProperty(this._parseProperty()))return null;if(!this.accept(d.Colon))return this.finish(t,f.ColonExpected,[d.Colon]);this.prevToken&&(t.colonPosition=this.prevToken.offset);var r=this.mark();if(this.peek(d.CurlyL)){var i=this.create(di),o=this._parseDeclarations(this._parseRuleSetDeclaration.bind(this));if(i.setDeclarations(o)&&!o.isErroneous(!0)&&(i.addChild(this._parsePrio()),this.peek(d.SemiColon)))return this.finish(i),t.setPropertySet(i),t.semicolonPosition=this.token.offset,this.finish(t);this.restoreAtMark(r)}var s=this._parseExpr();return s&&!s.isErroneous(!0)&&(this._parsePrio(),this.peekOne.apply(this,bo(bo([],e||[],!1),[d.SemiColon,d.EOF],!1)))?(t.setValue(s),this.peek(d.SemiColon)&&(t.semicolonPosition=this.token.offset),this.finish(t)):(this.restoreAtMark(r),t.addChild(this._parseCustomPropertyValue(e)),t.addChild(this._parsePrio()),he(t.colonPosition)&&this.token.offset===t.colonPosition+1?this.finish(t,f.PropertyValueExpected):this.finish(t))},n.prototype._parseCustomPropertyValue=function(e){var t=this;e===void 0&&(e=[d.CurlyR]);var r=this.create(F),i=function(){return s===0&&a===0&&l===0},o=function(){return e.indexOf(t.token.type)!==-1},s=0,a=0,l=0;e:for(;;){switch(this.token.type){case d.SemiColon:if(i())break e;break;case d.Exclamation:if(i())break e;break;case d.CurlyL:s++;break;case d.CurlyR:if(s--,s<0){if(o()&&a===0&&l===0)break e;return this.finish(r,f.LeftCurlyExpected)}break;case d.ParenthesisL:a++;break;case d.ParenthesisR:if(a--,a<0){if(o()&&l===0&&s===0)break e;return this.finish(r,f.LeftParenthesisExpected)}break;case d.BracketL:l++;break;case d.BracketR:if(l--,l<0)return this.finish(r,f.LeftSquareBracketExpected);break;case d.BadString:break e;case d.EOF:var c=f.RightCurlyExpected;return l>0?c=f.RightSquareBracketExpected:a>0&&(c=f.RightParenthesisExpected),this.finish(r,c)}this.consumeToken()}return this.finish(r)},n.prototype._tryToParseDeclaration=function(e){var t=this.mark();return this._parseProperty()&&this.accept(d.Colon)?(this.restoreAtMark(t),this._parseDeclaration(e)):(this.restoreAtMark(t),null)},n.prototype._parseProperty=function(){var e=this.create(dt),t=this.mark();return(this.acceptDelim(\"*\")||this.acceptDelim(\"_\"))&&this.hasWhitespace()?(this.restoreAtMark(t),null):e.setIdentifier(this._parsePropertyIdentifier())?this.finish(e):null},n.prototype._parsePropertyIdentifier=function(){return this._parseIdent()},n.prototype._parseCharset=function(){if(!this.peek(d.Charset))return null;var e=this.create(F);return this.consumeToken(),this.accept(d.String)?this.accept(d.SemiColon)?this.finish(e):this.finish(e,f.SemiColonExpected):this.finish(e,f.IdentifierExpected)},n.prototype._parseImport=function(){if(!this.peekKeyword(\"@import\"))return null;var e=this.create(ht);return this.consumeToken(),!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral())?this.finish(e,f.URIOrStringExpected):(!this.peek(d.SemiColon)&&!this.peek(d.EOF)&&e.setMedialist(this._parseMediaQueryList()),this.finish(e))},n.prototype._parseNamespace=function(){if(!this.peekKeyword(\"@namespace\"))return null;var e=this.create(Si);return this.consumeToken(),!e.addChild(this._parseURILiteral())&&(e.addChild(this._parseIdent()),!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral()))?this.finish(e,f.URIExpected,[d.SemiColon]):this.accept(d.SemiColon)?this.finish(e):this.finish(e,f.SemiColonExpected)},n.prototype._parseFontFace=function(){if(!this.peekKeyword(\"@font-face\"))return null;var e=this.create(ln);return this.consumeToken(),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},n.prototype._parseViewPort=function(){if(!this.peekKeyword(\"@-ms-viewport\")&&!this.peekKeyword(\"@-o-viewport\")&&!this.peekKeyword(\"@viewport\"))return null;var e=this.create(bi);return this.consumeToken(),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},n.prototype._parseKeyframe=function(){if(!this.peekRegExp(d.AtKeyword,this.keyframeRegex))return null;var e=this.create(cn),t=this.create(F);return this.consumeToken(),e.setKeyword(this.finish(t)),t.matches(\"@-ms-keyframes\")&&this.markError(t,f.UnknownKeyword),e.setIdentifier(this._parseKeyframeIdent())?this._parseBody(e,this._parseKeyframeSelector.bind(this)):this.finish(e,f.IdentifierExpected,[d.CurlyR])},n.prototype._parseKeyframeIdent=function(){return this._parseIdent([A.Keyframe])},n.prototype._parseKeyframeSelector=function(){var e=this.create(Qn);if(!e.addChild(this._parseIdent())&&!this.accept(d.Percentage))return null;for(;this.accept(d.Comma);)if(!e.addChild(this._parseIdent())&&!this.accept(d.Percentage))return this.finish(e,f.PercentageExpected);return this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},n.prototype._tryParseKeyframeSelector=function(){var e=this.create(Qn),t=this.mark();if(!e.addChild(this._parseIdent())&&!this.accept(d.Percentage))return null;for(;this.accept(d.Comma);)if(!e.addChild(this._parseIdent())&&!this.accept(d.Percentage))return this.restoreAtMark(t),null;return this.peek(d.CurlyL)?this._parseBody(e,this._parseRuleSetDeclaration.bind(this)):(this.restoreAtMark(t),null)},n.prototype._parseSupports=function(e){if(e===void 0&&(e=!1),!this.peekKeyword(\"@supports\"))return null;var t=this.create(Dt);return this.consumeToken(),t.addChild(this._parseSupportsCondition()),this._parseBody(t,this._parseSupportsDeclaration.bind(this,e))},n.prototype._parseSupportsDeclaration=function(e){return e===void 0&&(e=!1),e?this._tryParseRuleset(!0)||this._tryToParseDeclaration()||this._parseStylesheetStatement(!0):this._parseStylesheetStatement(!1)},n.prototype._parseSupportsCondition=function(){var e=this.create(Ze);if(this.acceptIdent(\"not\"))e.addChild(this._parseSupportsConditionInParens());else if(e.addChild(this._parseSupportsConditionInParens()),this.peekRegExp(d.Ident,/^(and|or)$/i))for(var t=this.token.text.toLowerCase();this.acceptIdent(t);)e.addChild(this._parseSupportsConditionInParens());return this.finish(e)},n.prototype._parseSupportsConditionInParens=function(){var e=this.create(Ze);if(this.accept(d.ParenthesisL))return this.prevToken&&(e.lParent=this.prevToken.offset),!e.addChild(this._tryToParseDeclaration([d.ParenthesisR]))&&!this._parseSupportsCondition()?this.finish(e,f.ConditionExpected):this.accept(d.ParenthesisR)?(this.prevToken&&(e.rParent=this.prevToken.offset),this.finish(e)):this.finish(e,f.RightParenthesisExpected,[d.ParenthesisR],[]);if(this.peek(d.Ident)){var t=this.mark();if(this.consumeToken(),!this.hasWhitespace()&&this.accept(d.ParenthesisL)){for(var r=1;this.token.type!==d.EOF&&r!==0;)this.token.type===d.ParenthesisL?r++:this.token.type===d.ParenthesisR&&r--,this.consumeToken();return this.finish(e)}else this.restoreAtMark(t)}return this.finish(e,f.LeftParenthesisExpected,[],[d.ParenthesisL])},n.prototype._parseMediaDeclaration=function(e){return e===void 0&&(e=!1),e?this._tryParseRuleset(!0)||this._tryToParseDeclaration()||this._parseStylesheetStatement(!0):this._parseStylesheetStatement(!1)},n.prototype._parseMedia=function(e){if(e===void 0&&(e=!1),!this.peekKeyword(\"@media\"))return null;var t=this.create(dn);return this.consumeToken(),t.addChild(this._parseMediaQueryList())?this._parseBody(t,this._parseMediaDeclaration.bind(this,e)):this.finish(t,f.MediaQueryExpected)},n.prototype._parseMediaQueryList=function(){var e=this.create(hn);if(!e.addChild(this._parseMediaQuery()))return this.finish(e,f.MediaQueryExpected);for(;this.accept(d.Comma);)if(!e.addChild(this._parseMediaQuery()))return this.finish(e,f.MediaQueryExpected);return this.finish(e)},n.prototype._parseMediaQuery=function(){var e=this.create(pn),t=this.mark();if(this.acceptIdent(\"not\"),this.peek(d.ParenthesisL))this.restoreAtMark(t),e.addChild(this._parseMediaCondition());else{if(this.acceptIdent(\"only\"),!e.addChild(this._parseIdent()))return null;this.acceptIdent(\"and\")&&e.addChild(this._parseMediaCondition())}return this.finish(e)},n.prototype._parseRatio=function(){var e=this.mark(),t=this.create(Ri);return this._parseNumeric()?this.acceptDelim(\"/\")?this._parseNumeric()?this.finish(t):this.finish(t,f.NumberExpected):(this.restoreAtMark(e),null):null},n.prototype._parseMediaCondition=function(){var e=this.create(Ci);this.acceptIdent(\"not\");for(var t=!0;t;){if(!this.accept(d.ParenthesisL))return this.finish(e,f.LeftParenthesisExpected,[],[d.CurlyL]);if(this.peek(d.ParenthesisL)||this.peekIdent(\"not\")?e.addChild(this._parseMediaCondition()):e.addChild(this._parseMediaFeature()),!this.accept(d.ParenthesisR))return this.finish(e,f.RightParenthesisExpected,[],[d.CurlyL]);t=this.acceptIdent(\"and\")||this.acceptIdent(\"or\")}return this.finish(e)},n.prototype._parseMediaFeature=function(){var e=this,t=[d.ParenthesisR],r=this.create(_i),i=function(){return e.acceptDelim(\"<\")||e.acceptDelim(\">\")?(e.hasWhitespace()||e.acceptDelim(\"=\"),!0):!!e.acceptDelim(\"=\")};if(r.addChild(this._parseMediaFeatureName())){if(this.accept(d.Colon)){if(!r.addChild(this._parseMediaFeatureValue()))return this.finish(r,f.TermExpected,[],t)}else if(i()){if(!r.addChild(this._parseMediaFeatureValue()))return this.finish(r,f.TermExpected,[],t);if(i()&&!r.addChild(this._parseMediaFeatureValue()))return this.finish(r,f.TermExpected,[],t)}}else if(r.addChild(this._parseMediaFeatureValue())){if(!i())return this.finish(r,f.OperatorExpected,[],t);if(!r.addChild(this._parseMediaFeatureName()))return this.finish(r,f.IdentifierExpected,[],t);if(i()&&!r.addChild(this._parseMediaFeatureValue()))return this.finish(r,f.TermExpected,[],t)}else return this.finish(r,f.IdentifierExpected,[],t);return this.finish(r)},n.prototype._parseMediaFeatureName=function(){return this._parseIdent()},n.prototype._parseMediaFeatureValue=function(){return this._parseRatio()||this._parseTermExpression()},n.prototype._parseMedium=function(){var e=this.create(F);return e.addChild(this._parseIdent())?this.finish(e):null},n.prototype._parsePageDeclaration=function(){return this._parsePageMarginBox()||this._parseRuleSetDeclaration()},n.prototype._parsePage=function(){if(!this.peekKeyword(\"@page\"))return null;var e=this.create(Fi);if(this.consumeToken(),e.addChild(this._parsePageSelector())){for(;this.accept(d.Comma);)if(!e.addChild(this._parsePageSelector()))return this.finish(e,f.IdentifierExpected)}return this._parseBody(e,this._parsePageDeclaration.bind(this))},n.prototype._parsePageMarginBox=function(){if(!this.peek(d.AtKeyword))return null;var e=this.create(Ei);return this.acceptOneKeyword(go)||this.markError(e,f.UnknownAtRule,[],[d.CurlyL]),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},n.prototype._parsePageSelector=function(){if(!this.peek(d.Ident)&&!this.peek(d.Colon))return null;var e=this.create(F);return e.addChild(this._parseIdent()),this.accept(d.Colon)&&!e.addChild(this._parseIdent())?this.finish(e,f.IdentifierExpected):this.finish(e)},n.prototype._parseDocument=function(){if(!this.peekKeyword(\"@-moz-document\"))return null;var e=this.create(ki);return this.consumeToken(),this.resync([],[d.CurlyL]),this._parseBody(e,this._parseStylesheetStatement.bind(this))},n.prototype._parseUnknownAtRule=function(){if(!this.peek(d.AtKeyword))return null;var e=this.create(mn);e.addChild(this._parseUnknownAtRuleName());var t=function(){return i===0&&o===0&&s===0},r=0,i=0,o=0,s=0;e:for(;;){switch(this.token.type){case d.SemiColon:if(t())break e;break;case d.EOF:return i>0?this.finish(e,f.RightCurlyExpected):s>0?this.finish(e,f.RightSquareBracketExpected):o>0?this.finish(e,f.RightParenthesisExpected):this.finish(e);case d.CurlyL:r++,i++;break;case d.CurlyR:if(i--,r>0&&i===0){if(this.consumeToken(),s>0)return this.finish(e,f.RightSquareBracketExpected);if(o>0)return this.finish(e,f.RightParenthesisExpected);break e}if(i<0){if(o===0&&s===0)break e;return this.finish(e,f.LeftCurlyExpected)}break;case d.ParenthesisL:o++;break;case d.ParenthesisR:if(o--,o<0)return this.finish(e,f.LeftParenthesisExpected);break;case d.BracketL:s++;break;case d.BracketR:if(s--,s<0)return this.finish(e,f.LeftSquareBracketExpected);break}this.consumeToken()}return e},n.prototype._parseUnknownAtRuleName=function(){var e=this.create(F);return this.accept(d.AtKeyword)?this.finish(e):e},n.prototype._parseOperator=function(){if(this.peekDelim(\"/\")||this.peekDelim(\"*\")||this.peekDelim(\"+\")||this.peekDelim(\"-\")||this.peek(d.Dashmatch)||this.peek(d.Includes)||this.peek(d.SubstringOperator)||this.peek(d.PrefixOperator)||this.peek(d.SuffixOperator)||this.peekDelim(\"=\")){var e=this.createNode(u.Operator);return this.consumeToken(),this.finish(e)}else return null},n.prototype._parseUnaryOperator=function(){if(!this.peekDelim(\"+\")&&!this.peekDelim(\"-\"))return null;var e=this.create(F);return this.consumeToken(),this.finish(e)},n.prototype._parseCombinator=function(){if(this.peekDelim(\">\")){var e=this.create(F);this.consumeToken();var t=this.mark();if(!this.hasWhitespace()&&this.acceptDelim(\">\")){if(!this.hasWhitespace()&&this.acceptDelim(\">\"))return e.type=u.SelectorCombinatorShadowPiercingDescendant,this.finish(e);this.restoreAtMark(t)}return e.type=u.SelectorCombinatorParent,this.finish(e)}else if(this.peekDelim(\"+\")){var e=this.create(F);return this.consumeToken(),e.type=u.SelectorCombinatorSibling,this.finish(e)}else if(this.peekDelim(\"~\")){var e=this.create(F);return this.consumeToken(),e.type=u.SelectorCombinatorAllSiblings,this.finish(e)}else if(this.peekDelim(\"/\")){var e=this.create(F);this.consumeToken();var t=this.mark();if(!this.hasWhitespace()&&this.acceptIdent(\"deep\")&&!this.hasWhitespace()&&this.acceptDelim(\"/\"))return e.type=u.SelectorCombinatorShadowPiercingDescendant,this.finish(e);this.restoreAtMark(t)}return null},n.prototype._parseSimpleSelector=function(){var e=this.create(De),t=0;for(e.addChild(this._parseElementName())&&t++;(t===0||!this.hasWhitespace())&&e.addChild(this._parseSimpleSelectorBody());)t++;return t>0?this.finish(e):null},n.prototype._parseSimpleSelectorBody=function(){return this._parsePseudo()||this._parseHash()||this._parseClass()||this._parseAttrib()},n.prototype._parseSelectorIdent=function(){return this._parseIdent()},n.prototype._parseHash=function(){if(!this.peek(d.Hash)&&!this.peekDelim(\"#\"))return null;var e=this.createNode(u.IdentifierSelector);if(this.acceptDelim(\"#\")){if(this.hasWhitespace()||!e.addChild(this._parseSelectorIdent()))return this.finish(e,f.IdentifierExpected)}else this.consumeToken();return this.finish(e)},n.prototype._parseClass=function(){if(!this.peekDelim(\".\"))return null;var e=this.createNode(u.ClassSelector);return this.consumeToken(),this.hasWhitespace()||!e.addChild(this._parseSelectorIdent())?this.finish(e,f.IdentifierExpected):this.finish(e)},n.prototype._parseElementName=function(){var e=this.mark(),t=this.createNode(u.ElementNameSelector);return t.addChild(this._parseNamespacePrefix()),!t.addChild(this._parseSelectorIdent())&&!this.acceptDelim(\"*\")?(this.restoreAtMark(e),null):this.finish(t)},n.prototype._parseNamespacePrefix=function(){var e=this.mark(),t=this.createNode(u.NamespacePrefix);return!t.addChild(this._parseIdent())&&this.acceptDelim(\"*\"),this.acceptDelim(\"|\")?this.finish(t):(this.restoreAtMark(e),null)},n.prototype._parseAttrib=function(){if(!this.peek(d.BracketL))return null;var e=this.create(zi);return this.consumeToken(),e.setNamespacePrefix(this._parseNamespacePrefix()),e.setIdentifier(this._parseIdent())?(e.setOperator(this._parseOperator())&&(e.setValue(this._parseBinaryExpr()),this.acceptIdent(\"i\"),this.acceptIdent(\"s\")),this.accept(d.BracketR)?this.finish(e):this.finish(e,f.RightSquareBracketExpected)):this.finish(e,f.IdentifierExpected)},n.prototype._parsePseudo=function(){var e=this,t=this._tryParsePseudoIdentifier();if(t){if(!this.hasWhitespace()&&this.accept(d.ParenthesisL)){var r=function(){var i=e.create(F);if(!i.addChild(e._parseSelector(!1)))return null;for(;e.accept(d.Comma)&&i.addChild(e._parseSelector(!1)););return e.peek(d.ParenthesisR)?e.finish(i):null};if(t.addChild(this.try(r)||this._parseBinaryExpr()),!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected)}return this.finish(t)}return null},n.prototype._tryParsePseudoIdentifier=function(){if(!this.peek(d.Colon))return null;var e=this.mark(),t=this.createNode(u.PseudoSelector);return this.consumeToken(),this.hasWhitespace()?(this.restoreAtMark(e),null):(this.accept(d.Colon),this.hasWhitespace()||!t.addChild(this._parseIdent())?this.finish(t,f.IdentifierExpected):this.finish(t))},n.prototype._tryParsePrio=function(){var e=this.mark(),t=this._parsePrio();return t||(this.restoreAtMark(e),null)},n.prototype._parsePrio=function(){if(!this.peek(d.Exclamation))return null;var e=this.createNode(u.Prio);return this.accept(d.Exclamation)&&this.acceptIdent(\"important\")?this.finish(e):null},n.prototype._parseExpr=function(e){e===void 0&&(e=!1);var t=this.create(un);if(!t.addChild(this._parseBinaryExpr()))return null;for(;;){if(this.peek(d.Comma)){if(e)return this.finish(t);this.consumeToken()}else if(!this.hasWhitespace())break;if(!t.addChild(this._parseBinaryExpr()))break}return this.finish(t)},n.prototype._parseUnicodeRange=function(){if(!this.peekIdent(\"u\"))return null;var e=this.create(li);return this.acceptUnicodeRange()?this.finish(e):null},n.prototype._parseNamedLine=function(){if(!this.peek(d.BracketL))return null;var e=this.createNode(u.GridLine);for(this.consumeToken();e.addChild(this._parseIdent()););return this.accept(d.BracketR)?this.finish(e):this.finish(e,f.RightSquareBracketExpected)},n.prototype._parseBinaryExpr=function(e,t){var r=this.create(pt);if(!r.setLeft(e||this._parseTerm()))return null;if(!r.setOperator(t||this._parseOperator()))return this.finish(r);if(!r.setRight(this._parseTerm()))return this.finish(r,f.TermExpected);r=this.finish(r);var i=this._parseOperator();return i&&(r=this._parseBinaryExpr(r,i)),this.finish(r)},n.prototype._parseTerm=function(){var e=this.create(Di);return e.setOperator(this._parseUnaryOperator()),e.setExpression(this._parseTermExpression())?this.finish(e):null},n.prototype._parseTermExpression=function(){return this._parseURILiteral()||this._parseUnicodeRange()||this._parseFunction()||this._parseIdent()||this._parseStringLiteral()||this._parseNumeric()||this._parseHexColor()||this._parseOperation()||this._parseNamedLine()},n.prototype._parseOperation=function(){if(!this.peek(d.ParenthesisL))return null;var e=this.create(F);return this.consumeToken(),e.addChild(this._parseExpr()),this.accept(d.ParenthesisR)?this.finish(e):this.finish(e,f.RightParenthesisExpected)},n.prototype._parseNumeric=function(){if(this.peek(d.Num)||this.peek(d.Percentage)||this.peek(d.Resolution)||this.peek(d.Length)||this.peek(d.EMS)||this.peek(d.EXS)||this.peek(d.Angle)||this.peek(d.Time)||this.peek(d.Dimension)||this.peek(d.Freq)){var e=this.create(Rt);return this.consumeToken(),this.finish(e)}return null},n.prototype._parseStringLiteral=function(){if(!this.peek(d.String)&&!this.peek(d.BadString))return null;var e=this.createNode(u.StringLiteral);return this.consumeToken(),this.finish(e)},n.prototype._parseURILiteral=function(){if(!this.peekRegExp(d.Ident,/^url(-prefix)?$/i))return null;var e=this.mark(),t=this.createNode(u.URILiteral);return this.accept(d.Ident),this.hasWhitespace()||!this.peek(d.ParenthesisL)?(this.restoreAtMark(e),null):(this.scanner.inURL=!0,this.consumeToken(),t.addChild(this._parseURLArgument()),this.scanner.inURL=!1,this.accept(d.ParenthesisR)?this.finish(t):this.finish(t,f.RightParenthesisExpected))},n.prototype._parseURLArgument=function(){var e=this.create(F);return!this.accept(d.String)&&!this.accept(d.BadString)&&!this.acceptUnquotedString()?null:this.finish(e)},n.prototype._parseIdent=function(e){if(!this.peek(d.Ident))return null;var t=this.create(te);return e&&(t.referenceTypes=e),t.isCustomProperty=this.peekRegExp(d.Ident,/^--/),this.consumeToken(),this.finish(t)},n.prototype._parseFunction=function(){var e=this.mark(),t=this.create(Pe);if(!t.setIdentifier(this._parseFunctionIdentifier()))return null;if(this.hasWhitespace()||!this.accept(d.ParenthesisL))return this.restoreAtMark(e),null;if(t.getArguments().addChild(this._parseFunctionArgument()))for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)t.getArguments().addChild(this._parseFunctionArgument())||this.markError(t,f.ExpressionExpected);return this.accept(d.ParenthesisR)?this.finish(t):this.finish(t,f.RightParenthesisExpected)},n.prototype._parseFunctionIdentifier=function(){if(!this.peek(d.Ident))return null;var e=this.create(te);if(e.referenceTypes=[A.Function],this.acceptIdent(\"progid\")){if(this.accept(d.Colon))for(;this.accept(d.Ident)&&this.acceptDelim(\".\"););return this.finish(e)}return this.consumeToken(),this.finish(e)},n.prototype._parseFunctionArgument=function(){var e=this.create(we);return e.setValue(this._parseExpr(!0))?this.finish(e):null},n.prototype._parseHexColor=function(){if(this.peekRegExp(d.Hash,/^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$/g)){var e=this.create(zt);return this.consumeToken(),this.finish(e)}else return null},n}();function yo(n,e){var t=0,r=n.length;if(r===0)return 0;for(;t<r;){var i=Math.floor((t+r)/2);e(n[i])?r=i:t=i+1}return t}function Fr(n,e){return n.indexOf(e)!==-1}function $t(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];for(var t=[],r=0,i=n;r<i.length;r++)for(var o=i[r],s=0,a=o;s<a.length;s++){var l=a[s];Fr(t,l)||t.push(l)}return t}var Ys=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!=\"function\"&&t!==null)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),wo=function(){function n(e,t){this.offset=e,this.length=t,this.symbols=[],this.parent=null,this.children=[]}return n.prototype.addChild=function(e){this.children.push(e),e.setParent(this)},n.prototype.setParent=function(e){this.parent=e},n.prototype.findScope=function(e,t){return t===void 0&&(t=0),this.offset<=e&&this.offset+this.length>e+t||this.offset===e&&this.length===t?this.findInScope(e,t):null},n.prototype.findInScope=function(e,t){t===void 0&&(t=0);var r=e+t,i=yo(this.children,function(s){return s.offset>r});if(i===0)return this;var o=this.children[i-1];return o.offset<=e&&o.offset+o.length>=e+t?o.findInScope(e,t):this},n.prototype.addSymbol=function(e){this.symbols.push(e)},n.prototype.getSymbol=function(e,t){for(var r=0;r<this.symbols.length;r++){var i=this.symbols[r];if(i.name===e&&i.type===t)return i}return null},n.prototype.getSymbols=function(){return this.symbols},n}();var Qs=function(n){Ys(e,n);function e(){return n.call(this,0,Number.MAX_VALUE)||this}return e}(wo);var Fn=function(){function n(e,t,r,i){this.name=e,this.value=t,this.node=r,this.type=i}return n}();var Zs=function(){function n(e){this.scope=e}return n.prototype.addSymbol=function(e,t,r,i){if(e.offset!==-1){var o=this.scope.findScope(e.offset,e.length);o&&o.addSymbol(new Fn(t,r,e,i))}},n.prototype.addScope=function(e){if(e.offset!==-1){var t=this.scope.findScope(e.offset,e.length);if(t&&(t.offset!==e.offset||t.length!==e.length)){var r=new wo(e.offset,e.length);return t.addChild(r),r}return t}return null},n.prototype.addSymbolToChildScope=function(e,t,r,i,o){if(e&&e.offset!==-1){var s=this.addScope(e);s&&s.addSymbol(new Fn(r,i,t,o))}},n.prototype.visitNode=function(e){switch(e.type){case u.Keyframe:return this.addSymbol(e,e.getName(),void 0,A.Keyframe),!0;case u.CustomPropertyDeclaration:return this.visitCustomPropertyDeclarationNode(e);case u.VariableDeclaration:return this.visitVariableDeclarationNode(e);case u.Ruleset:return this.visitRuleSet(e);case u.MixinDeclaration:return this.addSymbol(e,e.getName(),void 0,A.Mixin),!0;case u.FunctionDeclaration:return this.addSymbol(e,e.getName(),void 0,A.Function),!0;case u.FunctionParameter:return this.visitFunctionParameterNode(e);case u.Declarations:return this.addScope(e),!0;case u.For:var t=e,r=t.getDeclarations();return r&&t.variable&&this.addSymbolToChildScope(r,t.variable,t.variable.getName(),void 0,A.Variable),!0;case u.Each:{var i=e,o=i.getDeclarations();if(o)for(var s=i.getVariables().getChildren(),a=0,l=s;a<l.length;a++){var c=l[a];this.addSymbolToChildScope(o,c,c.getName(),void 0,A.Variable)}return!0}}return!0},n.prototype.visitRuleSet=function(e){var t=this.scope.findScope(e.offset,e.length);if(t)for(var r=0,i=e.getSelectors().getChildren();r<i.length;r++){var o=i[r];o instanceof Ee&&o.getChildren().length===1&&t.addSymbol(new Fn(o.getChild(0).getText(),void 0,o,A.Rule))}return!0},n.prototype.visitVariableDeclarationNode=function(e){var t=e.getValue()?e.getValue().getText():void 0;return this.addSymbol(e,e.getName(),t,A.Variable),!0},n.prototype.visitFunctionParameterNode=function(e){var t=e.getParent().getDeclarations();if(t){var r=e.getDefaultValue(),i=r?r.getText():void 0;this.addSymbolToChildScope(t,e,e.getName(),i,A.Variable)}return!0},n.prototype.visitCustomPropertyDeclarationNode=function(e){var t=e.getValue()?e.getValue().getText():\"\";return this.addCSSVariable(e.getProperty(),e.getProperty().getName(),t,A.Variable),!0},n.prototype.addCSSVariable=function(e,t,r,i){e.offset!==-1&&this.scope.addSymbol(new Fn(t,r,e,i))},n}();var qt=function(){function n(e){this.global=new Qs,e.acceptVisitor(new Zs(this.global))}return n.prototype.findSymbolsAtOffset=function(e,t){for(var r=this.global.findScope(e,0),i=[],o={};r;){for(var s=r.getSymbols(),a=0;a<s.length;a++){var l=s[a];l.type===t&&!o[l.name]&&(i.push(l),o[l.name]=!0)}r=r.parent}return i},n.prototype.internalFindSymbol=function(e,t){var r=e;if(e.parent instanceof Be&&e.parent.getParent()instanceof K&&(r=e.parent.getParent().getDeclarations()),e.parent instanceof we&&e.parent.getParent()instanceof Pe){var i=e.parent.getParent().getIdentifier();if(i){var o=this.internalFindSymbol(i,[A.Function]);o&&(r=o.node.getDeclarations())}}if(!r)return null;for(var s=e.getText(),a=this.global.findScope(r.offset,r.length);a;){for(var l=0;l<t.length;l++){var c=t[l],h=a.getSymbol(s,c);if(h)return h}a=a.parent}return null},n.prototype.evaluateReferenceTypes=function(e){if(e instanceof te){var t=e.referenceTypes;if(t)return t;if(e.isCustomProperty)return[A.Variable];var r=ai(e);if(r){var i=r.getNonPrefixedPropertyName();if((i===\"animation\"||i===\"animation-name\")&&r.getValue()&&r.getValue().offset===e.offset)return[A.Keyframe]}}else if(e instanceof ut)return[A.Variable];var o=e.findAParent(u.Selector,u.ExtendsReference);return o?[A.Rule]:null},n.prototype.findSymbolFromNode=function(e){if(!e)return null;for(;e.type===u.Interpolation;)e=e.getParent();var t=this.evaluateReferenceTypes(e);return t?this.internalFindSymbol(e,t):null},n.prototype.matchesSymbol=function(e,t){if(!e)return!1;for(;e.type===u.Interpolation;)e=e.getParent();if(!e.matches(t.name))return!1;var r=this.evaluateReferenceTypes(e);if(!r||r.indexOf(t.type)===-1)return!1;var i=this.internalFindSymbol(e,r);return i===t},n.prototype.findSymbol=function(e,t,r){for(var i=this.global.findScope(r);i;){var o=i.getSymbol(e,t);if(o)return o;i=i.parent}return null},n}();var xo;xo=(()=>{\"use strict\";var n={470:r=>{function i(a){if(typeof a!=\"string\")throw new TypeError(\"Path must be a string. Received \"+JSON.stringify(a))}function o(a,l){for(var c,h=\"\",p=0,m=-1,g=0,w=0;w<=a.length;++w){if(w<a.length)c=a.charCodeAt(w);else{if(c===47)break;c=47}if(c===47){if(!(m===w-1||g===1))if(m!==w-1&&g===2){if(h.length<2||p!==2||h.charCodeAt(h.length-1)!==46||h.charCodeAt(h.length-2)!==46){if(h.length>2){var x=h.lastIndexOf(\"/\");if(x!==h.length-1){x===-1?(h=\"\",p=0):p=(h=h.slice(0,x)).length-1-h.lastIndexOf(\"/\"),m=w,g=0;continue}}else if(h.length===2||h.length===1){h=\"\",p=0,m=w,g=0;continue}}l&&(h.length>0?h+=\"/..\":h=\"..\",p=2)}else h.length>0?h+=\"/\"+a.slice(m+1,w):h=a.slice(m+1,w),p=w-m-1;m=w,g=0}else c===46&&g!==-1?++g:g=-1}return h}var s={resolve:function(){for(var a,l=\"\",c=!1,h=arguments.length-1;h>=-1&&!c;h--){var p;h>=0?p=arguments[h]:(a===void 0&&(a=process.cwd()),p=a),i(p),p.length!==0&&(l=p+\"/\"+l,c=p.charCodeAt(0)===47)}return l=o(l,!c),c?l.length>0?\"/\"+l:\"/\":l.length>0?l:\".\"},normalize:function(a){if(i(a),a.length===0)return\".\";var l=a.charCodeAt(0)===47,c=a.charCodeAt(a.length-1)===47;return(a=o(a,!l)).length!==0||l||(a=\".\"),a.length>0&&c&&(a+=\"/\"),l?\"/\"+a:a},isAbsolute:function(a){return i(a),a.length>0&&a.charCodeAt(0)===47},join:function(){if(arguments.length===0)return\".\";for(var a,l=0;l<arguments.length;++l){var c=arguments[l];i(c),c.length>0&&(a===void 0?a=c:a+=\"/\"+c)}return a===void 0?\".\":s.normalize(a)},relative:function(a,l){if(i(a),i(l),a===l||(a=s.resolve(a))===(l=s.resolve(l)))return\"\";for(var c=1;c<a.length&&a.charCodeAt(c)===47;++c);for(var h=a.length,p=h-c,m=1;m<l.length&&l.charCodeAt(m)===47;++m);for(var g=l.length-m,w=p<g?p:g,x=-1,y=0;y<=w;++y){if(y===w){if(g>w){if(l.charCodeAt(m+y)===47)return l.slice(m+y+1);if(y===0)return l.slice(m+y)}else p>w&&(a.charCodeAt(c+y)===47?x=y:y===0&&(x=0));break}var D=a.charCodeAt(c+y);if(D!==l.charCodeAt(m+y))break;D===47&&(x=y)}var M=\"\";for(y=c+x+1;y<=h;++y)y!==h&&a.charCodeAt(y)!==47||(M.length===0?M+=\"..\":M+=\"/..\");return M.length>0?M+l.slice(m+x):(m+=x,l.charCodeAt(m)===47&&++m,l.slice(m))},_makeLong:function(a){return a},dirname:function(a){if(i(a),a.length===0)return\".\";for(var l=a.charCodeAt(0),c=l===47,h=-1,p=!0,m=a.length-1;m>=1;--m)if((l=a.charCodeAt(m))===47){if(!p){h=m;break}}else p=!1;return h===-1?c?\"/\":\".\":c&&h===1?\"//\":a.slice(0,h)},basename:function(a,l){if(l!==void 0&&typeof l!=\"string\")throw new TypeError('\"ext\" argument must be a string');i(a);var c,h=0,p=-1,m=!0;if(l!==void 0&&l.length>0&&l.length<=a.length){if(l.length===a.length&&l===a)return\"\";var g=l.length-1,w=-1;for(c=a.length-1;c>=0;--c){var x=a.charCodeAt(c);if(x===47){if(!m){h=c+1;break}}else w===-1&&(m=!1,w=c+1),g>=0&&(x===l.charCodeAt(g)?--g==-1&&(p=c):(g=-1,p=w))}return h===p?p=w:p===-1&&(p=a.length),a.slice(h,p)}for(c=a.length-1;c>=0;--c)if(a.charCodeAt(c)===47){if(!m){h=c+1;break}}else p===-1&&(m=!1,p=c+1);return p===-1?\"\":a.slice(h,p)},extname:function(a){i(a);for(var l=-1,c=0,h=-1,p=!0,m=0,g=a.length-1;g>=0;--g){var w=a.charCodeAt(g);if(w!==47)h===-1&&(p=!1,h=g+1),w===46?l===-1?l=g:m!==1&&(m=1):l!==-1&&(m=-1);else if(!p){c=g+1;break}}return l===-1||h===-1||m===0||m===1&&l===h-1&&l===c+1?\"\":a.slice(l,h)},format:function(a){if(a===null||typeof a!=\"object\")throw new TypeError('The \"pathObject\" argument must be of type Object. Received type '+typeof a);return function(l,c){var h=c.dir||c.root,p=c.base||(c.name||\"\")+(c.ext||\"\");return h?h===c.root?h+p:h+\"/\"+p:p}(0,a)},parse:function(a){i(a);var l={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(a.length===0)return l;var c,h=a.charCodeAt(0),p=h===47;p?(l.root=\"/\",c=1):c=0;for(var m=-1,g=0,w=-1,x=!0,y=a.length-1,D=0;y>=c;--y)if((h=a.charCodeAt(y))!==47)w===-1&&(x=!1,w=y+1),h===46?m===-1?m=y:D!==1&&(D=1):m!==-1&&(D=-1);else if(!x){g=y+1;break}return m===-1||w===-1||D===0||D===1&&m===w-1&&m===g+1?w!==-1&&(l.base=l.name=g===0&&p?a.slice(1,w):a.slice(g,w)):(g===0&&p?(l.name=a.slice(1,m),l.base=a.slice(1,w)):(l.name=a.slice(g,m),l.base=a.slice(g,w)),l.ext=a.slice(m,w)),g>0?l.dir=a.slice(0,g-1):p&&(l.dir=\"/\"),l},sep:\"/\",delimiter:\":\",win32:null,posix:null};s.posix=s,r.exports=s},447:(r,i,o)=>{var s;if(o.r(i),o.d(i,{URI:()=>M,Utils:()=>pe}),typeof process==\"object\")s=process.platform===\"win32\";else if(typeof navigator==\"object\"){var a=navigator.userAgent;s=a.indexOf(\"Windows\")>=0}var l,c,h=(l=function(C,b){return(l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(k,_){k.__proto__=_}||function(k,_){for(var N in _)Object.prototype.hasOwnProperty.call(_,N)&&(k[N]=_[N])})(C,b)},function(C,b){if(typeof b!=\"function\"&&b!==null)throw new TypeError(\"Class extends value \"+String(b)+\" is not a constructor or null\");function k(){this.constructor=C}l(C,b),C.prototype=b===null?Object.create(b):(k.prototype=b.prototype,new k)}),p=/^\\w[\\w\\d+.-]*$/,m=/^\\//,g=/^\\/\\//;function w(C,b){if(!C.scheme&&b)throw new Error('[UriError]: Scheme is missing: {scheme: \"\", authority: \"'.concat(C.authority,'\", path: \"').concat(C.path,'\", query: \"').concat(C.query,'\", fragment: \"').concat(C.fragment,'\"}'));if(C.scheme&&!p.test(C.scheme))throw new Error(\"[UriError]: Scheme contains illegal characters.\");if(C.path){if(C.authority){if(!m.test(C.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character')}else if(g.test(C.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")')}}var x=\"\",y=\"/\",D=/^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/,M=function(){function C(b,k,_,N,O,B){B===void 0&&(B=!1),typeof b==\"object\"?(this.scheme=b.scheme||x,this.authority=b.authority||x,this.path=b.path||x,this.query=b.query||x,this.fragment=b.fragment||x):(this.scheme=function(Ce,se){return Ce||se?Ce:\"file\"}(b,B),this.authority=k||x,this.path=function(Ce,se){switch(Ce){case\"https\":case\"http\":case\"file\":se?se[0]!==y&&(se=y+se):se=y}return se}(this.scheme,_||x),this.query=N||x,this.fragment=O||x,w(this,B))}return C.isUri=function(b){return b instanceof C||!!b&&typeof b.authority==\"string\"&&typeof b.fragment==\"string\"&&typeof b.path==\"string\"&&typeof b.query==\"string\"&&typeof b.scheme==\"string\"&&typeof b.fsPath==\"string\"&&typeof b.with==\"function\"&&typeof b.toString==\"function\"},Object.defineProperty(C.prototype,\"fsPath\",{get:function(){return oe(this,!1)},enumerable:!1,configurable:!0}),C.prototype.with=function(b){if(!b)return this;var k=b.scheme,_=b.authority,N=b.path,O=b.query,B=b.fragment;return k===void 0?k=this.scheme:k===null&&(k=x),_===void 0?_=this.authority:_===null&&(_=x),N===void 0?N=this.path:N===null&&(N=x),O===void 0?O=this.query:O===null&&(O=x),B===void 0?B=this.fragment:B===null&&(B=x),k===this.scheme&&_===this.authority&&N===this.path&&O===this.query&&B===this.fragment?this:new P(k,_,N,O,B)},C.parse=function(b,k){k===void 0&&(k=!1);var _=D.exec(b);return _?new P(_[2]||x,ke(_[4]||x),ke(_[5]||x),ke(_[7]||x),ke(_[9]||x),k):new P(x,x,x,x,x)},C.file=function(b){var k=x;if(s&&(b=b.replace(/\\\\/g,y)),b[0]===y&&b[1]===y){var _=b.indexOf(y,2);_===-1?(k=b.substring(2),b=y):(k=b.substring(2,_),b=b.substring(_)||y)}return new P(\"file\",k,b,x,x)},C.from=function(b){var k=new P(b.scheme,b.authority,b.path,b.query,b.fragment);return w(k,!0),k},C.prototype.toString=function(b){return b===void 0&&(b=!1),me(this,b)},C.prototype.toJSON=function(){return this},C.revive=function(b){if(b){if(b instanceof C)return b;var k=new P(b);return k._formatted=b.external,k._fsPath=b._sep===z?b.fsPath:null,k}return b},C}(),z=s?1:void 0,P=function(C){function b(){var k=C!==null&&C.apply(this,arguments)||this;return k._formatted=null,k._fsPath=null,k}return h(b,C),Object.defineProperty(b.prototype,\"fsPath\",{get:function(){return this._fsPath||(this._fsPath=oe(this,!1)),this._fsPath},enumerable:!1,configurable:!0}),b.prototype.toString=function(k){return k===void 0&&(k=!1),k?me(this,!0):(this._formatted||(this._formatted=me(this,!1)),this._formatted)},b.prototype.toJSON=function(){var k={$mid:1};return this._fsPath&&(k.fsPath=this._fsPath,k._sep=z),this._formatted&&(k.external=this._formatted),this.path&&(k.path=this.path),this.scheme&&(k.scheme=this.scheme),this.authority&&(k.authority=this.authority),this.query&&(k.query=this.query),this.fragment&&(k.fragment=this.fragment),k},b}(M),L=((c={})[58]=\"%3A\",c[47]=\"%2F\",c[63]=\"%3F\",c[35]=\"%23\",c[91]=\"%5B\",c[93]=\"%5D\",c[64]=\"%40\",c[33]=\"%21\",c[36]=\"%24\",c[38]=\"%26\",c[39]=\"%27\",c[40]=\"%28\",c[41]=\"%29\",c[42]=\"%2A\",c[43]=\"%2B\",c[44]=\"%2C\",c[59]=\"%3B\",c[61]=\"%3D\",c[32]=\"%20\",c);function $(C,b){for(var k=void 0,_=-1,N=0;N<C.length;N++){var O=C.charCodeAt(N);if(O>=97&&O<=122||O>=65&&O<=90||O>=48&&O<=57||O===45||O===46||O===95||O===126||b&&O===47)_!==-1&&(k+=encodeURIComponent(C.substring(_,N)),_=-1),k!==void 0&&(k+=C.charAt(N));else{k===void 0&&(k=C.substr(0,N));var B=L[O];B!==void 0?(_!==-1&&(k+=encodeURIComponent(C.substring(_,N)),_=-1),k+=B):_===-1&&(_=N)}}return _!==-1&&(k+=encodeURIComponent(C.substring(_))),k!==void 0?k:C}function ue(C){for(var b=void 0,k=0;k<C.length;k++){var _=C.charCodeAt(k);_===35||_===63?(b===void 0&&(b=C.substr(0,k)),b+=L[_]):b!==void 0&&(b+=C[k])}return b!==void 0?b:C}function oe(C,b){var k;return k=C.authority&&C.path.length>1&&C.scheme===\"file\"?\"//\".concat(C.authority).concat(C.path):C.path.charCodeAt(0)===47&&(C.path.charCodeAt(1)>=65&&C.path.charCodeAt(1)<=90||C.path.charCodeAt(1)>=97&&C.path.charCodeAt(1)<=122)&&C.path.charCodeAt(2)===58?b?C.path.substr(1):C.path[1].toLowerCase()+C.path.substr(2):C.path,s&&(k=k.replace(/\\//g,\"\\\\\")),k}function me(C,b){var k=b?ue:$,_=\"\",N=C.scheme,O=C.authority,B=C.path,Ce=C.query,se=C.fragment;if(N&&(_+=N,_+=\":\"),(O||N===\"file\")&&(_+=y,_+=y),O){var ge=O.indexOf(\"@\");if(ge!==-1){var Xe=O.substr(0,ge);O=O.substr(ge+1),(ge=Xe.indexOf(\":\"))===-1?_+=k(Xe,!1):(_+=k(Xe.substr(0,ge),!1),_+=\":\",_+=k(Xe.substr(ge+1),!1)),_+=\"@\"}(ge=(O=O.toLowerCase()).indexOf(\":\"))===-1?_+=k(O,!1):(_+=k(O.substr(0,ge),!1),_+=O.substr(ge))}if(B){if(B.length>=3&&B.charCodeAt(0)===47&&B.charCodeAt(2)===58)(Me=B.charCodeAt(1))>=65&&Me<=90&&(B=\"/\".concat(String.fromCharCode(Me+32),\":\").concat(B.substr(3)));else if(B.length>=2&&B.charCodeAt(1)===58){var Me;(Me=B.charCodeAt(0))>=65&&Me<=90&&(B=\"\".concat(String.fromCharCode(Me+32),\":\").concat(B.substr(2)))}_+=k(B,!0)}return Ce&&(_+=\"?\",_+=k(Ce,!1)),se&&(_+=\"#\",_+=b?se:$(se,!1)),_}function ve(C){try{return decodeURIComponent(C)}catch{return C.length>3?C.substr(0,3)+ve(C.substr(3)):C}}var ye=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function ke(C){return C.match(ye)?C.replace(ye,function(b){return ve(b)}):C}var pe,G=o(470),Ie=function(C,b,k){if(k||arguments.length===2)for(var _,N=0,O=b.length;N<O;N++)!_&&N in b||(_||(_=Array.prototype.slice.call(b,0,N)),_[N]=b[N]);return C.concat(_||Array.prototype.slice.call(b))},fe=G.posix||G;(function(C){C.joinPath=function(b){for(var k=[],_=1;_<arguments.length;_++)k[_-1]=arguments[_];return b.with({path:fe.join.apply(fe,Ie([b.path],k,!1))})},C.resolvePath=function(b){for(var k=[],_=1;_<arguments.length;_++)k[_-1]=arguments[_];var N=b.path||\"/\";return b.with({path:fe.resolve.apply(fe,Ie([N],k,!1))})},C.dirname=function(b){var k=fe.dirname(b.path);return k.length===1&&k.charCodeAt(0)===46?b:b.with({path:k})},C.basename=function(b){return fe.basename(b.path)},C.extname=function(b){return fe.extname(b.path)}})(pe||(pe={}))}},e={};function t(r){if(e[r])return e[r].exports;var i=e[r]={exports:{}};return n[r](i,i.exports,t),i.exports}return t.d=(r,i)=>{for(var o in i)t.o(i,o)&&!t.o(r,o)&&Object.defineProperty(r,o,{enumerable:!0,get:i[o]})},t.o=(r,i)=>Object.prototype.hasOwnProperty.call(r,i),t.r=r=>{typeof Symbol<\"u\"&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(r,\"__esModule\",{value:!0})},t(447)})();var{URI:Kt,Utils:En}=xo;var ea=function(n,e,t){if(t||arguments.length===2)for(var r=0,i=e.length,o;r<i;r++)(o||!(r in e))&&(o||(o=Array.prototype.slice.call(e,0,r)),o[r]=e[r]);return n.concat(o||Array.prototype.slice.call(e))};function Dn(n){return En.dirname(Kt.parse(n)).toString()}function Gt(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return En.joinPath.apply(En,ea([Kt.parse(n)],e,!1)).toString()}var So=function(n,e,t,r){function i(o){return o instanceof t?o:new t(function(s){s(o)})}return new(t||(t=Promise))(function(o,s){function a(h){try{c(r.next(h))}catch(p){s(p)}}function l(h){try{c(r.throw(h))}catch(p){s(p)}}function c(h){h.done?o(h.value):i(h.value).then(a,l)}c((r=r.apply(n,e||[])).next())})},ko=function(n,e){var t={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol==\"function\"&&(s[Symbol.iterator]=function(){return this}),s;function a(c){return function(h){return l([c,h])}}function l(c){if(r)throw new TypeError(\"Generator is already executing.\");for(;t;)try{if(r=1,i&&(o=c[0]&2?i.return:c[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,c[1])).done)return o;switch(i=0,o&&(c=[c[0]&2,o.value]),c[0]){case 0:case 1:o=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,i=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(o=t.trys,!(o=o.length>0&&o[o.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]<o[3])){t.label=c[1];break}if(c[0]===6&&t.label<o[1]){t.label=o[1],o=c;break}if(o&&t.label<o[2]){t.label=o[2],t.ops.push(c);break}o[2]&&t.ops.pop(),t.trys.pop();continue}c=e.call(n,t)}catch(h){c=[6,h],i=0}finally{r=o=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}},Co=function(){function n(e){this.readDirectory=e,this.literalCompletions=[],this.importCompletions=[]}return n.prototype.onCssURILiteralValue=function(e){this.literalCompletions.push(e)},n.prototype.onCssImportPath=function(e){this.importCompletions.push(e)},n.prototype.computeCompletions=function(e,t){return So(this,void 0,void 0,function(){var r,i,o,s,a,x,l,c,h,z,p,m,g,w,x,y,D,M,z;return ko(this,function(P){switch(P.label){case 0:r={items:[],isIncomplete:!1},i=0,o=this.literalCompletions,P.label=1;case 1:return i<o.length?(s=o[i],a=s.uriValue,x=Er(a),x===\".\"||x===\"..\"?(r.isIncomplete=!0,[3,4]):[3,2]):[3,5];case 2:return[4,this.providePathSuggestions(a,s.position,s.range,e,t)];case 3:for(l=P.sent(),c=0,h=l;c<h.length;c++)z=h[c],r.items.push(z);P.label=4;case 4:return i++,[3,1];case 5:p=0,m=this.importCompletions,P.label=6;case 6:return p<m.length?(g=m[p],w=g.pathValue,x=Er(w),x===\".\"||x===\"..\"?(r.isIncomplete=!0,[3,9]):[3,7]):[3,10];case 7:return[4,this.providePathSuggestions(w,g.position,g.range,e,t)];case 8:for(y=P.sent(),e.languageId===\"scss\"&&y.forEach(function(L){q(L.label,\"_\")&&on(L.label,\".scss\")&&(L.textEdit?L.textEdit.newText=L.label.slice(1,-5):L.label=L.label.slice(1,-5))}),D=0,M=y;D<M.length;D++)z=M[D],r.items.push(z);P.label=9;case 9:return p++,[3,6];case 10:return[2,r]}})})},n.prototype.providePathSuggestions=function(e,t,r,i,o){return So(this,void 0,void 0,function(){var s,a,l,c,h,p,m,g,w,x,y,D,M,z,P,L;return ko(this,function($){switch($.label){case 0:if(s=Er(e),a=q(e,\"'\")||q(e,'\"'),l=a?s.slice(0,t.character-(r.start.character+1)):s.slice(0,t.character-r.start.character),c=i.uri,h=a?ia(r,1,-1):r,p=na(l,s,h),m=l.substring(0,l.lastIndexOf(\"/\")+1),g=o.resolveReference(m||\".\",c),!g)return[3,4];$.label=1;case 1:return $.trys.push([1,3,,4]),w=[],[4,this.readDirectory(g)];case 2:for(x=$.sent(),y=0,D=x;y<D.length;y++)M=D[y],z=M[0],P=M[1],z.charCodeAt(0)!==ta&&(P===it.Directory||Gt(g,z)!==c)&&w.push(ra(z,P===it.Directory,p));return[2,w];case 3:return L=$.sent(),[3,4];case 4:return[2,[]]}})})},n}();var ta=\".\".charCodeAt(0);function Er(n){return q(n,\"'\")||q(n,'\"')?n.slice(1,-1):n}function na(n,e,t){var r,i=n.lastIndexOf(\"/\");if(i===-1)r=t;else{var o=e.slice(i+1),s=Rn(t.end,-o.length),a=o.indexOf(\" \"),l=void 0;a!==-1?l=Rn(s,a):l=t.end,r=W.create(s,l)}return r}function ra(n,e,t){return e?(n=n+\"/\",{label:zn(n),kind:R.Folder,textEdit:T.replace(t,zn(n)),command:{title:\"Suggest\",command:\"editor.action.triggerSuggest\"}}):{label:zn(n),kind:R.File,textEdit:T.replace(t,zn(n))}}function zn(n){return n.replace(/(\\s|\\(|\\)|,|\"|')/g,\"\\\\$1\")}function Rn(n,e){return Q.create(n.line,n.character+e)}function ia(n,e,t){var r=Rn(n.start,e),i=Rn(n.end,t);return W.create(r,i)}var oa=function(n,e,t,r){function i(o){return o instanceof t?o:new t(function(s){s(o)})}return new(t||(t=Promise))(function(o,s){function a(h){try{c(r.next(h))}catch(p){s(p)}}function l(h){try{c(r.throw(h))}catch(p){s(p)}}function c(h){h.done?o(h.value):i(h.value).then(a,l)}c((r=r.apply(n,e||[])).next())})},sa=function(n,e){var t={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol==\"function\"&&(s[Symbol.iterator]=function(){return this}),s;function a(c){return function(h){return l([c,h])}}function l(c){if(r)throw new TypeError(\"Generator is already executing.\");for(;t;)try{if(r=1,i&&(o=c[0]&2?i.return:c[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,c[1])).done)return o;switch(i=0,o&&(c=[c[0]&2,o.value]),c[0]){case 0:case 1:o=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,i=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(o=t.trys,!(o=o.length>0&&o[o.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]<o[3])){t.label=c[1];break}if(c[0]===6&&t.label<o[1]){t.label=o[1],o=c;break}if(o&&t.label<o[2]){t.label=o[2],t.ops.push(c);break}o[2]&&t.ops.pop(),t.trys.pop();continue}c=e.call(n,t)}catch(h){c=[6,h],i=0}finally{r=o=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}},aa=H(),We=re.Snippet,_o={title:\"Suggest\",command:\"editor.action.triggerSuggest\"},Re;(function(n){n.Enums=\" \",n.Normal=\"d\",n.VendorPrefixed=\"x\",n.Term=\"y\",n.Variable=\"z\"})(Re||(Re={}));var yt=function(){function n(e,t,r){e===void 0&&(e=null),this.variablePrefix=e,this.lsOptions=t,this.cssDataManager=r,this.completionParticipants=[]}return n.prototype.configure=function(e){this.defaultSettings=e},n.prototype.getSymbolContext=function(){return this.symbolContext||(this.symbolContext=new qt(this.styleSheet)),this.symbolContext},n.prototype.setCompletionParticipants=function(e){this.completionParticipants=e||[]},n.prototype.doComplete2=function(e,t,r,i,o){return o===void 0&&(o=this.defaultSettings),oa(this,void 0,void 0,function(){var s,a,l,c;return sa(this,function(h){switch(h.label){case 0:if(!this.lsOptions.fileSystemProvider||!this.lsOptions.fileSystemProvider.readDirectory)return[2,this.doComplete(e,t,r,o)];s=new Co(this.lsOptions.fileSystemProvider.readDirectory),a=this.completionParticipants,this.completionParticipants=[s].concat(a),l=this.doComplete(e,t,r,o),h.label=1;case 1:return h.trys.push([1,,3,4]),[4,s.computeCompletions(e,i)];case 2:return c=h.sent(),[2,{isIncomplete:l.isIncomplete||c.isIncomplete,items:c.items.concat(l.items)}];case 3:return this.completionParticipants=a,[7];case 4:return[2]}})})},n.prototype.doComplete=function(e,t,r,i){this.offset=e.offsetAt(t),this.position=t,this.currentWord=ha(e,this.offset),this.defaultReplaceRange=W.create(Q.create(this.position.line,this.position.character-this.currentWord.length),this.position),this.textDocument=e,this.styleSheet=r,this.documentSettings=i;try{var o={isIncomplete:!1,items:[]};this.nodePath=ct(this.styleSheet,this.offset);for(var s=this.nodePath.length-1;s>=0;s--){var a=this.nodePath[s];if(a instanceof dt)this.getCompletionsForDeclarationProperty(a.getParent(),o);else if(a instanceof un)a.parent instanceof It?this.getVariableProposals(null,o):this.getCompletionsForExpression(a,o);else if(a instanceof De){var l=a.findAParent(u.ExtendsReference,u.Ruleset);if(l)if(l.type===u.ExtendsReference)this.getCompletionsForExtendsReference(l,a,o);else{var c=l;this.getCompletionsForSelector(c,c&&c.isNested(),o)}}else if(a instanceof we)this.getCompletionsForFunctionArgument(a,a.getParent(),o);else if(a instanceof Et)this.getCompletionsForDeclarations(a,o);else if(a instanceof $e)this.getCompletionsForVariableDeclaration(a,o);else if(a instanceof Te)this.getCompletionsForRuleSet(a,o);else if(a instanceof It)this.getCompletionsForInterpolation(a,o);else if(a instanceof Qe)this.getCompletionsForFunctionDeclaration(a,o);else if(a instanceof et)this.getCompletionsForMixinReference(a,o);else if(a instanceof Pe)this.getCompletionsForFunctionArgument(null,a,o);else if(a instanceof Dt)this.getCompletionsForSupports(a,o);else if(a instanceof Ze)this.getCompletionsForSupportsCondition(a,o);else if(a instanceof qe)this.getCompletionsForExtendsReference(a,null,o);else if(a.type===u.URILiteral)this.getCompletionForUriLiteralValue(a,o);else if(a.parent===null)this.getCompletionForTopLevel(o);else if(a.type===u.StringLiteral&&this.isImportPathParent(a.parent.type))this.getCompletionForImportPath(a,o);else continue;if(o.items.length>0||this.offset>a.offset)return this.finalize(o)}return this.getCompletionsForStylesheet(o),o.items.length===0&&this.variablePrefix&&this.currentWord.indexOf(this.variablePrefix)===0&&this.getVariableProposals(null,o),this.finalize(o)}finally{this.position=null,this.currentWord=null,this.textDocument=null,this.styleSheet=null,this.symbolContext=null,this.defaultReplaceRange=null,this.nodePath=null}},n.prototype.isImportPathParent=function(e){return e===u.Import},n.prototype.finalize=function(e){return e},n.prototype.findInNodePath=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var r=this.nodePath.length-1;r>=0;r--){var i=this.nodePath[r];if(e.indexOf(i.type)!==-1)return i}return null},n.prototype.getCompletionsForDeclarationProperty=function(e,t){return this.getPropertyProposals(e,t)},n.prototype.getPropertyProposals=function(e,t){var r=this,i=this.isTriggerPropertyValueCompletionEnabled,o=this.isCompletePropertyWithSemicolonEnabled,s=this.cssDataManager.getProperties();return s.forEach(function(a){var l,c,h=!1;e?(l=r.getCompletionRange(e.getProperty()),c=a.name,he(e.colonPosition)||(c+=\": \",h=!0)):(l=r.getCompletionRange(null),c=a.name+\": \",h=!0),!e&&o&&(c+=\"$0;\"),e&&!e.semicolonPosition&&o&&r.offset>=r.textDocument.offsetAt(l.end)&&(c+=\"$0;\");var p={label:a.name,documentation:ze(a,r.doesSupportMarkdown()),tags:Ht(a)?[Ne.Deprecated]:[],textEdit:T.replace(l,c),insertTextFormat:re.Snippet,kind:R.Property};a.restrictions||(h=!1),i&&h&&(p.command=_o);var m=typeof a.relevance==\"number\"?Math.min(Math.max(a.relevance,0),99):50,g=(255-m).toString(16),w=q(a.name,\"-\")?Re.VendorPrefixed:Re.Normal;p.sortText=w+\"_\"+g,t.items.push(p)}),this.completionParticipants.forEach(function(a){a.onCssProperty&&a.onCssProperty({propertyName:r.currentWord,range:r.defaultReplaceRange})}),t},Object.defineProperty(n.prototype,\"isTriggerPropertyValueCompletionEnabled\",{get:function(){var e,t;return(t=(e=this.documentSettings)===null||e===void 0?void 0:e.triggerPropertyValueCompletion)!==null&&t!==void 0?t:!0},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"isCompletePropertyWithSemicolonEnabled\",{get:function(){var e,t;return(t=(e=this.documentSettings)===null||e===void 0?void 0:e.completePropertyWithSemicolon)!==null&&t!==void 0?t:!0},enumerable:!1,configurable:!0}),n.prototype.getCompletionsForDeclarationValue=function(e,t){for(var r=this,i=e.getFullPropertyName(),o=this.cssDataManager.getProperty(i),s=e.getValue()||null;s&&s.hasChildren();)s=s.findChildAtOffset(this.offset,!1);if(this.completionParticipants.forEach(function(w){w.onCssPropertyValue&&w.onCssPropertyValue({propertyName:i,propertyValue:r.currentWord,range:r.getCompletionRange(s)})}),o){if(o.restrictions)for(var a=0,l=o.restrictions;a<l.length;a++){var c=l[a];switch(c){case\"color\":this.getColorProposals(o,s,t);break;case\"position\":this.getPositionProposals(o,s,t);break;case\"repeat\":this.getRepeatStyleProposals(o,s,t);break;case\"line-style\":this.getLineStyleProposals(o,s,t);break;case\"line-width\":this.getLineWidthProposals(o,s,t);break;case\"geometry-box\":this.getGeometryBoxProposals(o,s,t);break;case\"box\":this.getBoxProposals(o,s,t);break;case\"image\":this.getImageProposals(o,s,t);break;case\"timing-function\":this.getTimingFunctionProposals(o,s,t);break;case\"shape\":this.getBasicShapeProposals(o,s,t);break}}this.getValueEnumProposals(o,s,t),this.getCSSWideKeywordProposals(o,s,t),this.getUnitProposals(o,s,t)}else for(var h=la(this.styleSheet,e),p=0,m=h.getEntries();p<m.length;p++){var g=m[p];t.items.push({label:g,textEdit:T.replace(this.getCompletionRange(s),g),kind:R.Value})}return this.getVariableProposals(s,t),this.getTermProposals(o,s,t),t},n.prototype.getValueEnumProposals=function(e,t,r){if(e.values)for(var i=0,o=e.values;i<o.length;i++){var s=o[i],a=s.name,l=void 0;if(on(a,\")\")){var c=a.lastIndexOf(\"(\");c!==-1&&(a=a.substr(0,c)+\"($1)\",l=We)}var h=Re.Enums;q(s.name,\"-\")&&(h+=Re.VendorPrefixed);var p={label:s.name,documentation:ze(s,this.doesSupportMarkdown()),tags:Ht(e)?[Ne.Deprecated]:[],textEdit:T.replace(this.getCompletionRange(t),a),sortText:h,kind:R.Value,insertTextFormat:l};r.items.push(p)}return r},n.prototype.getCSSWideKeywordProposals=function(e,t,r){for(var i in xr)r.items.push({label:i,documentation:xr[i],textEdit:T.replace(this.getCompletionRange(t),i),kind:R.Value});for(var o in Sr){var s=vt(o);r.items.push({label:o,documentation:Sr[o],textEdit:T.replace(this.getCompletionRange(t),s),kind:R.Function,insertTextFormat:We,command:q(o,\"var\")?_o:void 0})}return r},n.prototype.getCompletionsForInterpolation=function(e,t){return this.offset>=e.offset+2&&this.getVariableProposals(null,t),t},n.prototype.getVariableProposals=function(e,t){for(var r=this.getSymbolContext().findSymbolsAtOffset(this.offset,A.Variable),i=0,o=r;i<o.length;i++){var s=o[i],a=q(s.name,\"--\")?\"var(\".concat(s.name,\")\"):s.name,l={label:s.name,documentation:s.value?Jn(s.value):s.value,textEdit:T.replace(this.getCompletionRange(e),a),kind:R.Variable,sortText:Re.Variable};if(typeof l.documentation==\"string\"&&Fo(l.documentation)&&(l.kind=R.Color),s.node.type===u.FunctionParameter){var c=s.node.getParent();c.type===u.MixinDeclaration&&(l.detail=aa(\"completion.argument\",\"argument from '{0}'\",c.getName()))}t.items.push(l)}return t},n.prototype.getVariableProposalsForCSSVarFunction=function(e){var t=new Dr;this.styleSheet.acceptVisitor(new da(t,this.offset));for(var r=this.getSymbolContext().findSymbolsAtOffset(this.offset,A.Variable),i=0,o=r;i<o.length;i++){var s=o[i];if(q(s.name,\"--\")){var a={label:s.name,documentation:s.value?Jn(s.value):s.value,textEdit:T.replace(this.getCompletionRange(null),s.name),kind:R.Variable};typeof a.documentation==\"string\"&&Fo(a.documentation)&&(a.kind=R.Color),e.items.push(a)}t.remove(s.name)}for(var l=0,c=t.getEntries();l<c.length;l++){var h=c[l];if(q(h,\"--\")){var a={label:h,textEdit:T.replace(this.getCompletionRange(null),h),kind:R.Variable};e.items.push(a)}}return e},n.prototype.getUnitProposals=function(e,t,r){var i=\"0\";if(this.currentWord.length>0){var o=this.currentWord.match(/^-?\\d[\\.\\d+]*/);o&&(i=o[0],r.isIncomplete=i.length===this.currentWord.length)}else this.currentWord.length===0&&(r.isIncomplete=!0);if(t&&t.parent&&t.parent.type===u.Term&&(t=t.getParent()),e.restrictions)for(var s=0,a=e.restrictions;s<a.length;s++){var l=a[s],c=Cn[l];if(c)for(var h=0,p=c;h<p.length;h++){var m=p[h],g=i+m;r.items.push({label:g,textEdit:T.replace(this.getCompletionRange(t),g),kind:R.Unit})}}return r},n.prototype.getCompletionRange=function(e){if(e&&e.offset<=this.offset&&this.offset<=e.end){var t=e.end!==-1?this.textDocument.positionAt(e.end):this.position,r=this.textDocument.positionAt(e.offset);if(r.line===t.line)return W.create(r,t)}return this.defaultReplaceRange},n.prototype.getColorProposals=function(e,t,r){for(var i in Vt)r.items.push({label:i,documentation:Vt[i],textEdit:T.replace(this.getCompletionRange(t),i),kind:R.Color});for(var i in mr)r.items.push({label:i,documentation:mr[i],textEdit:T.replace(this.getCompletionRange(t),i),kind:R.Value});var o=new Dr;this.styleSheet.acceptVisitor(new ca(o,this.offset));for(var s=0,a=o.getEntries();s<a.length;s++){var i=a[s];r.items.push({label:i,textEdit:T.replace(this.getCompletionRange(t),i),kind:R.Color})}for(var l=function(g){var w=1,x=function(D,M){return\"${\"+w+++\":\"+M+\"}\"},y=g.func.replace(/\\[?\\$(\\w+)\\]?/g,x);r.items.push({label:g.func.substr(0,g.func.indexOf(\"(\")),detail:g.func,documentation:g.desc,textEdit:T.replace(c.getCompletionRange(t),y),insertTextFormat:We,kind:R.Function})},c=this,h=0,p=ao;h<p.length;h++){var m=p[h];l(m)}return r},n.prototype.getPositionProposals=function(e,t,r){for(var i in gr)r.items.push({label:i,documentation:gr[i],textEdit:T.replace(this.getCompletionRange(t),i),kind:R.Value});return r},n.prototype.getRepeatStyleProposals=function(e,t,r){for(var i in br)r.items.push({label:i,documentation:br[i],textEdit:T.replace(this.getCompletionRange(t),i),kind:R.Value});return r},n.prototype.getLineStyleProposals=function(e,t,r){for(var i in vr)r.items.push({label:i,documentation:vr[i],textEdit:T.replace(this.getCompletionRange(t),i),kind:R.Value});return r},n.prototype.getLineWidthProposals=function(e,t,r){for(var i=0,o=uo;i<o.length;i++){var s=o[i];r.items.push({label:s,textEdit:T.replace(this.getCompletionRange(t),s),kind:R.Value})}return r},n.prototype.getGeometryBoxProposals=function(e,t,r){for(var i in wr)r.items.push({label:i,documentation:wr[i],textEdit:T.replace(this.getCompletionRange(t),i),kind:R.Value});return r},n.prototype.getBoxProposals=function(e,t,r){for(var i in yr)r.items.push({label:i,documentation:yr[i],textEdit:T.replace(this.getCompletionRange(t),i),kind:R.Value});return r},n.prototype.getImageProposals=function(e,t,r){for(var i in kr){var o=vt(i);r.items.push({label:i,documentation:kr[i],textEdit:T.replace(this.getCompletionRange(t),o),kind:R.Function,insertTextFormat:i!==o?We:void 0})}return r},n.prototype.getTimingFunctionProposals=function(e,t,r){for(var i in Cr){var o=vt(i);r.items.push({label:i,documentation:Cr[i],textEdit:T.replace(this.getCompletionRange(t),o),kind:R.Function,insertTextFormat:i!==o?We:void 0})}return r},n.prototype.getBasicShapeProposals=function(e,t,r){for(var i in _r){var o=vt(i);r.items.push({label:i,documentation:_r[i],textEdit:T.replace(this.getCompletionRange(t),o),kind:R.Function,insertTextFormat:i!==o?We:void 0})}return r},n.prototype.getCompletionsForStylesheet=function(e){var t=this.styleSheet.findFirstChildBeforeOffset(this.offset);return t?t instanceof Te?this.getCompletionsForRuleSet(t,e):t instanceof Dt?this.getCompletionsForSupports(t,e):e:this.getCompletionForTopLevel(e)},n.prototype.getCompletionForTopLevel=function(e){var t=this;return this.cssDataManager.getAtDirectives().forEach(function(r){e.items.push({label:r.name,textEdit:T.replace(t.getCompletionRange(null),r.name),documentation:ze(r,t.doesSupportMarkdown()),tags:Ht(r)?[Ne.Deprecated]:[],kind:R.Keyword})}),this.getCompletionsForSelector(null,!1,e),e},n.prototype.getCompletionsForRuleSet=function(e,t){var r=e.getDeclarations(),i=r&&r.endsWith(\"}\")&&this.offset>=r.end;if(i)return this.getCompletionForTopLevel(t);var o=!r||this.offset<=r.offset;return o?this.getCompletionsForSelector(e,e.isNested(),t):this.getCompletionsForDeclarations(e.getDeclarations(),t)},n.prototype.getCompletionsForSelector=function(e,t,r){var i=this,o=this.findInNodePath(u.PseudoSelector,u.IdentifierSelector,u.ClassSelector,u.ElementNameSelector);!o&&this.hasCharacterAtPosition(this.offset-this.currentWord.length-1,\":\")&&(this.currentWord=\":\"+this.currentWord,this.hasCharacterAtPosition(this.offset-this.currentWord.length-1,\":\")&&(this.currentWord=\":\"+this.currentWord),this.defaultReplaceRange=W.create(Q.create(this.position.line,this.position.character-this.currentWord.length),this.position));var s=this.cssDataManager.getPseudoClasses();s.forEach(function(y){var D=vt(y.name),M={label:y.name,textEdit:T.replace(i.getCompletionRange(o),D),documentation:ze(y,i.doesSupportMarkdown()),tags:Ht(y)?[Ne.Deprecated]:[],kind:R.Function,insertTextFormat:y.name!==D?We:void 0};q(y.name,\":-\")&&(M.sortText=Re.VendorPrefixed),r.items.push(M)});var a=this.cssDataManager.getPseudoElements();if(a.forEach(function(y){var D=vt(y.name),M={label:y.name,textEdit:T.replace(i.getCompletionRange(o),D),documentation:ze(y,i.doesSupportMarkdown()),tags:Ht(y)?[Ne.Deprecated]:[],kind:R.Function,insertTextFormat:y.name!==D?We:void 0};q(y.name,\"::-\")&&(M.sortText=Re.VendorPrefixed),r.items.push(M)}),!t){for(var l=0,c=mo;l<c.length;l++){var h=c[l];r.items.push({label:h,textEdit:T.replace(this.getCompletionRange(o),h),kind:R.Keyword})}for(var p=0,m=fo;p<m.length;p++){var h=m[p];r.items.push({label:h,textEdit:T.replace(this.getCompletionRange(o),h),kind:R.Keyword})}}var g={};g[this.currentWord]=!0;var w=this.textDocument.getText();if(this.styleSheet.accept(function(y){if(y.type===u.SimpleSelector&&y.length>0){var D=w.substr(y.offset,y.length);return D.charAt(0)===\".\"&&!g[D]&&(g[D]=!0,r.items.push({label:D,textEdit:T.replace(i.getCompletionRange(o),D),kind:R.Keyword})),!1}return!0}),e&&e.isNested()){var x=e.getSelectors().findFirstChildBeforeOffset(this.offset);x&&e.getSelectors().getChildren().indexOf(x)===0&&this.getPropertyProposals(null,r)}return r},n.prototype.getCompletionsForDeclarations=function(e,t){if(!e||this.offset===e.offset)return t;var r=e.findFirstChildBeforeOffset(this.offset);if(!r)return this.getCompletionsForDeclarationProperty(null,t);if(r instanceof an){var i=r;if(!he(i.colonPosition)||this.offset<=i.colonPosition)return this.getCompletionsForDeclarationProperty(i,t);if(he(i.semicolonPosition)&&i.semicolonPosition<this.offset)return this.offset===i.semicolonPosition+1?t:this.getCompletionsForDeclarationProperty(null,t);if(i instanceof ae)return this.getCompletionsForDeclarationValue(i,t)}else r instanceof qe?this.getCompletionsForExtendsReference(r,null,t):this.currentWord&&this.currentWord[0]===\"@\"?this.getCompletionsForDeclarationProperty(null,t):r instanceof Te&&this.getCompletionsForDeclarationProperty(null,t);return t},n.prototype.getCompletionsForVariableDeclaration=function(e,t){return this.offset&&he(e.colonPosition)&&this.offset>e.colonPosition&&this.getVariableProposals(e.getValue(),t),t},n.prototype.getCompletionsForExpression=function(e,t){var r=e.getParent();if(r instanceof we)return this.getCompletionsForFunctionArgument(r,r.getParent(),t),t;var i=e.findParent(u.Declaration);if(!i)return this.getTermProposals(void 0,null,t),t;var o=e.findChildAtOffset(this.offset,!0);return o?o instanceof Rt||o instanceof te?this.getCompletionsForDeclarationValue(i,t):t:this.getCompletionsForDeclarationValue(i,t)},n.prototype.getCompletionsForFunctionArgument=function(e,t,r){var i=t.getIdentifier();return i&&i.matches(\"var\")&&(!t.getArguments().hasChildren()||t.getArguments().getChild(0)===e)&&this.getVariableProposalsForCSSVarFunction(r),r},n.prototype.getCompletionsForFunctionDeclaration=function(e,t){var r=e.getDeclarations();return r&&this.offset>r.offset&&this.offset<r.end&&this.getTermProposals(void 0,null,t),t},n.prototype.getCompletionsForMixinReference=function(e,t){for(var r=this,i=this.getSymbolContext().findSymbolsAtOffset(this.offset,A.Mixin),o=0,s=i;o<s.length;o++){var a=s[o];a.node instanceof Ae&&t.items.push(this.makeTermProposal(a,a.node.getParameters(),null))}var l=e.getIdentifier()||null;return this.completionParticipants.forEach(function(c){c.onCssMixinReference&&c.onCssMixinReference({mixinName:r.currentWord,range:r.getCompletionRange(l)})}),t},n.prototype.getTermProposals=function(e,t,r){for(var i=this.getSymbolContext().findSymbolsAtOffset(this.offset,A.Function),o=0,s=i;o<s.length;o++){var a=s[o];a.node instanceof Qe&&r.items.push(this.makeTermProposal(a,a.node.getParameters(),t))}return r},n.prototype.makeTermProposal=function(e,t,r){var i=e.node,o=t.getChildren().map(function(a){return a instanceof Be?a.getName():a.getText()}),s=e.name+\"(\"+o.map(function(a,l){return\"${\"+(l+1)+\":\"+a+\"}\"}).join(\", \")+\")\";return{label:e.name,detail:e.name+\"(\"+o.join(\", \")+\")\",textEdit:T.replace(this.getCompletionRange(r),s),insertTextFormat:We,kind:R.Function,sortText:Re.Term}},n.prototype.getCompletionsForSupportsCondition=function(e,t){var r=e.findFirstChildBeforeOffset(this.offset);if(r){if(r instanceof ae)return!he(r.colonPosition)||this.offset<=r.colonPosition?this.getCompletionsForDeclarationProperty(r,t):this.getCompletionsForDeclarationValue(r,t);if(r instanceof Ze)return this.getCompletionsForSupportsCondition(r,t)}return he(e.lParent)&&this.offset>e.lParent&&(!he(e.rParent)||this.offset<=e.rParent)?this.getCompletionsForDeclarationProperty(null,t):t},n.prototype.getCompletionsForSupports=function(e,t){var r=e.getDeclarations(),i=!r||this.offset<=r.offset;if(i){var o=e.findFirstChildBeforeOffset(this.offset);return o instanceof Ze?this.getCompletionsForSupportsCondition(o,t):t}return this.getCompletionForTopLevel(t)},n.prototype.getCompletionsForExtendsReference=function(e,t,r){return r},n.prototype.getCompletionForUriLiteralValue=function(e,t){var r,i,o;if(e.hasChildren()){var a=e.getChild(0);r=a.getText(),i=this.position,o=this.getCompletionRange(a)}else{r=\"\",i=this.position;var s=this.textDocument.positionAt(e.offset+4);o=W.create(s,s)}return this.completionParticipants.forEach(function(l){l.onCssURILiteralValue&&l.onCssURILiteralValue({uriValue:r,position:i,range:o})}),t},n.prototype.getCompletionForImportPath=function(e,t){var r=this;return this.completionParticipants.forEach(function(i){i.onCssImportPath&&i.onCssImportPath({pathValue:e.getText(),position:r.position,range:r.getCompletionRange(e)})}),t},n.prototype.hasCharacterAtPosition=function(e,t){var r=this.textDocument.getText();return e>=0&&e<r.length&&r.charAt(e)===t},n.prototype.doesSupportMarkdown=function(){var e,t,r;if(!he(this.supportsMarkdown)){if(!he(this.lsOptions.clientCapabilities))return this.supportsMarkdown=!0,this.supportsMarkdown;var i=(r=(t=(e=this.lsOptions.clientCapabilities.textDocument)===null||e===void 0?void 0:e.completion)===null||t===void 0?void 0:t.completionItem)===null||r===void 0?void 0:r.documentationFormat;this.supportsMarkdown=Array.isArray(i)&&i.indexOf(ce.Markdown)!==-1}return this.supportsMarkdown},n}();function Ht(n){return!!(n.status&&(n.status===\"nonstandard\"||n.status===\"obsolete\"))}var Dr=function(){function n(){this.entries={}}return n.prototype.add=function(e){this.entries[e]=!0},n.prototype.remove=function(e){delete this.entries[e]},n.prototype.getEntries=function(){return Object.keys(this.entries)},n}();function vt(n){return n.replace(/\\(\\)$/,\"($1)\")}function la(n,e){var t=e.getFullPropertyName(),r=new Dr;function i(a){return(a instanceof te||a instanceof Rt||a instanceof zt)&&r.add(a.getText()),!0}function o(a){var l=a.getFullPropertyName();return t===l}function s(a){if(a instanceof ae&&a!==e&&o(a)){var l=a.getValue();l&&l.accept(i)}return!0}return n.accept(s),r}var ca=function(){function n(e,t){this.entries=e,this.currentOffset=t}return n.prototype.visitNode=function(e){return(e instanceof zt||e instanceof Pe&&lo(e))&&(this.currentOffset<e.offset||e.end<this.currentOffset)&&this.entries.add(e.getText()),!0},n}(),da=function(){function n(e,t){this.entries=e,this.currentOffset=t}return n.prototype.visitNode=function(e){return e instanceof te&&e.isCustomProperty&&(this.currentOffset<e.offset||e.end<this.currentOffset)&&this.entries.add(e.getText()),!0},n}();function ha(n,e){for(var t=e-1,r=n.getText();t>=0&&` \t\n\\r\":{[()]},*>+`.indexOf(r.charAt(t))===-1;)t--;return r.substring(t+1,e)}function Fo(n){return n.toLowerCase()in Vt||/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(n)}var zo=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!=\"function\"&&t!==null)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),pa=H(),Rr=function(){function n(){this.parent=null,this.children=null,this.attributes=null}return n.prototype.findAttribute=function(e){if(this.attributes)for(var t=0,r=this.attributes;t<r.length;t++){var i=r[t];if(i.name===e)return i.value}return null},n.prototype.addChild=function(e){e instanceof n&&(e.parent=this),this.children||(this.children=[]),this.children.push(e)},n.prototype.append=function(e){if(this.attributes){var t=this.attributes[this.attributes.length-1];t.value=t.value+e}},n.prototype.prepend=function(e){if(this.attributes){var t=this.attributes[0];t.value=e+t.value}},n.prototype.findRoot=function(){for(var e=this;e.parent&&!(e.parent instanceof wt);)e=e.parent;return e},n.prototype.removeChild=function(e){if(this.children){var t=this.children.indexOf(e);if(t!==-1)return this.children.splice(t,1),!0}return!1},n.prototype.addAttr=function(e,t){this.attributes||(this.attributes=[]);for(var r=0,i=this.attributes;r<i.length;r++){var o=i[r];if(o.name===e){o.value+=\" \"+t;return}}this.attributes.push({name:e,value:t})},n.prototype.clone=function(e){e===void 0&&(e=!0);var t=new n;if(this.attributes){t.attributes=[];for(var r=0,i=this.attributes;r<i.length;r++){var o=i[r];t.addAttr(o.name,o.value)}}if(e&&this.children){t.children=[];for(var s=0;s<this.children.length;s++)t.addChild(this.children[s].clone())}return t},n.prototype.cloneWithParent=function(){var e=this.clone(!1);if(this.parent&&!(this.parent instanceof wt)){var t=this.parent.cloneWithParent();t.addChild(e)}return e},n}();var wt=function(n){zo(e,n);function e(){return n!==null&&n.apply(this,arguments)||this}return e}(Rr);var zr=function(n){zo(e,n);function e(t){var r=n.call(this)||this;return r.addAttr(\"name\",t),r}return e}(Rr);var Eo=function(){function n(e){this.quote=e,this.result=[]}return n.prototype.print=function(e){this.result=[],e instanceof wt?e.children&&this.doPrint(e.children,0):this.doPrint([e],0);var t=this.result.join(`\n`);return[{language:\"html\",value:t}]},n.prototype.doPrint=function(e,t){for(var r=0,i=e;r<i.length;r++){var o=i[r];this.doPrintElement(o,t),o.children&&this.doPrint(o.children,t+1)}},n.prototype.writeLine=function(e,t){var r=new Array(e+1).join(\"  \");this.result.push(r+t)},n.prototype.doPrintElement=function(e,t){var r=e.findAttribute(\"name\");if(e instanceof zr||r===\"\\u2026\"){this.writeLine(t,r);return}var i=[\"<\"];if(r?i.push(r):i.push(\"element\"),e.attributes)for(var o=0,s=e.attributes;o<s.length;o++){var a=s[o];if(a.name!==\"name\"){i.push(\" \"),i.push(a.name);var l=a.value;l&&(i.push(\"=\"),i.push(Le.ensure(l,this.quote)))}}i.push(\">\"),this.writeLine(t,i.join(\"\"))},n}(),Le;(function(n){function e(r,i){return i+t(r)+i}n.ensure=e;function t(r){var i=r.match(/^['\"](.*)[\"']$/);return i?i[1]:r}n.remove=t})(Le||(Le={}));var Do=function(){function n(){this.id=0,this.attr=0,this.tag=0}return n}();function Ro(n,e){for(var t=new Rr,r=0,i=n.getChildren();r<i.length;r++){var o=i[r];switch(o.type){case u.SelectorCombinator:if(e){var s=o.getText().split(\"&\");if(s.length===1){t.addAttr(\"name\",s[0]);break}if(t=e.cloneWithParent(),s[0]){var a=t.findRoot();a.prepend(s[0])}for(var l=1;l<s.length;l++){if(l>1){var c=e.cloneWithParent();t.addChild(c.findRoot()),t=c}t.append(s[l])}}break;case u.SelectorPlaceholder:if(o.matches(\"@at-root\"))return t;case u.ElementNameSelector:var h=o.getText();t.addAttr(\"name\",h===\"*\"?\"element\":be(h));break;case u.ClassSelector:t.addAttr(\"class\",be(o.getText().substring(1)));break;case u.IdentifierSelector:t.addAttr(\"id\",be(o.getText().substring(1)));break;case u.MixinDeclaration:t.addAttr(\"class\",o.getName());break;case u.PseudoSelector:t.addAttr(be(o.getText()),\"\");break;case u.AttributeSelector:var p=o,m=p.getIdentifier();if(m){var g=p.getValue(),w=p.getOperator(),x=void 0;if(g&&w)switch(be(w.getText())){case\"|=\":x=\"\".concat(Le.remove(be(g.getText())),\"-\\u2026\");break;case\"^=\":x=\"\".concat(Le.remove(be(g.getText())),\"\\u2026\");break;case\"$=\":x=\"\\u2026\".concat(Le.remove(be(g.getText())));break;case\"~=\":x=\" \\u2026 \".concat(Le.remove(be(g.getText())),\" \\u2026 \");break;case\"*=\":x=\"\\u2026\".concat(Le.remove(be(g.getText())),\"\\u2026\");break;default:x=Le.remove(be(g.getText()));break}t.addAttr(be(m.getText()),x)}break}}return t}function be(n){var e=new Fe;e.setSource(n);var t=e.scanUnquotedString();return t?t.text:n}var Io=function(){function n(e){this.cssDataManager=e}return n.prototype.selectorToMarkedString=function(e){var t=fa(e);if(t){var r=new Eo('\"').print(t);return r.push(this.selectorToSpecificityMarkedString(e)),r}else return[]},n.prototype.simpleSelectorToMarkedString=function(e){var t=Ro(e),r=new Eo('\"').print(t);return r.push(this.selectorToSpecificityMarkedString(e)),r},n.prototype.isPseudoElementIdentifier=function(e){var t=e.match(/^::?([\\w-]+)/);return t?!!this.cssDataManager.getPseudoElement(\"::\"+t[1]):!1},n.prototype.selectorToSpecificityMarkedString=function(e){var t=this,r=function(o){var s=new Do;e:for(var a=0,l=o.getChildren();a<l.length;a++){var c=l[a];switch(c.type){case u.IdentifierSelector:s.id++;break;case u.ClassSelector:case u.AttributeSelector:s.attr++;break;case u.ElementNameSelector:if(c.matches(\"*\"))break;s.tag++;break;case u.PseudoSelector:var h=c.getText();if(t.isPseudoElementIdentifier(h)){s.tag++;break}if(h.match(/^:where/i))continue e;if(h.match(/^:(not|has|is)/i)&&c.getChildren().length>0){for(var p=new Do,m=0,g=c.getChildren();m<g.length;m++){var w=g[m],x=void 0;w.type===u.Undefined?x=w.getChildren():x=[w];for(var y=0,D=w.getChildren();y<D.length;y++){var M=D[y],z=r(M);if(z.id>p.id){p=z;continue}else if(z.id<p.id)continue;if(z.attr>p.attr){p=z;continue}else if(z.attr<p.attr)continue;if(z.tag>p.tag){p=z;continue}}}s.id+=p.id,s.attr+=p.attr,s.tag+=p.tag;continue e}s.attr++;break}if(c.getChildren().length>0){var z=r(c);s.id+=z.id,s.attr+=z.attr,s.tag+=z.tag}}return s},i=r(e);return pa(\"specificity\",\"[Selector Specificity](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity): ({0}, {1}, {2})\",i.id,i.attr,i.tag)},n}();var ua=function(){function n(e){this.prev=null,this.element=e}return n.prototype.processSelector=function(e){var t=null;if(!(this.element instanceof wt)&&e.getChildren().some(function(h){return h.hasChildren()&&h.getChild(0).type===u.SelectorCombinator})){var r=this.element.findRoot();r.parent instanceof wt&&(t=this.element,this.element=r.parent,this.element.removeChild(r),this.prev=null)}for(var i=0,o=e.getChildren();i<o.length;i++){var s=o[i];if(s instanceof De){if(this.prev instanceof De){var a=new zr(\"\\u2026\");this.element.addChild(a),this.element=a}else this.prev&&(this.prev.matches(\"+\")||this.prev.matches(\"~\"))&&this.element.parent&&(this.element=this.element.parent);this.prev&&this.prev.matches(\"~\")&&this.element.addChild(new zr(\"\\u22EE\"));var l=Ro(s,t),c=l.findRoot();this.element.addChild(c),this.element=l}(s instanceof De||s.type===u.SelectorCombinatorParent||s.type===u.SelectorCombinatorShadowPiercingDescendant||s.type===u.SelectorCombinatorSibling||s.type===u.SelectorCombinatorAllSiblings)&&(this.prev=s)}},n}();function ma(n){switch(n.type){case u.MixinDeclaration:case u.Stylesheet:return!0}return!1}function fa(n){if(n.matches(\"@at-root\"))return null;var e=new wt,t=[],r=n.getParent();if(r instanceof Te)for(var i=r.getParent();i&&!ma(i);){if(i instanceof Te){if(i.getSelectors().matches(\"@at-root\"))break;t.push(i)}i=i.getParent()}for(var o=new ua(e),s=t.length-1;s>=0;s--){var a=t[s].getSelectors().getChild(0);a&&o.processSelector(a)}return o.processSelector(n),e}var In=function(){function n(e,t){this.clientCapabilities=e,this.cssDataManager=t,this.selectorPrinting=new Io(t)}return n.prototype.configure=function(e){this.defaultSettings=e},n.prototype.doHover=function(e,t,r,i){i===void 0&&(i=this.defaultSettings);function o(y){return W.create(e.positionAt(y.offset),e.positionAt(y.end))}for(var s=e.offsetAt(t),a=ct(r,s),l=null,c=0;c<a.length;c++){var h=a[c];if(h instanceof Ee){l={contents:this.selectorPrinting.selectorToMarkedString(h),range:o(h)};break}if(h instanceof De){q(h.getText(),\"@\")||(l={contents:this.selectorPrinting.simpleSelectorToMarkedString(h),range:o(h)});break}if(h instanceof ae){var p=h.getFullPropertyName(),m=this.cssDataManager.getProperty(p);if(m){var g=ze(m,this.doesSupportMarkdown(),i);g?l={contents:g,range:o(h)}:l=null}continue}if(h instanceof mn){var w=h.getText(),m=this.cssDataManager.getAtDirective(w);if(m){var g=ze(m,this.doesSupportMarkdown(),i);g?l={contents:g,range:o(h)}:l=null}continue}if(h instanceof F&&h.type===u.PseudoSelector){var x=h.getText(),m=x.slice(0,2)===\"::\"?this.cssDataManager.getPseudoElement(x):this.cssDataManager.getPseudoClass(x);if(m){var g=ze(m,this.doesSupportMarkdown(),i);g?l={contents:g,range:o(h)}:l=null}continue}}return l&&(l.contents=this.convertContents(l.contents)),l},n.prototype.convertContents=function(e){return this.doesSupportMarkdown()||typeof e==\"string\"?e:\"kind\"in e?{kind:\"plaintext\",value:e.value}:Array.isArray(e)?e.map(function(t){return typeof t==\"string\"?t:t.value}):e.value},n.prototype.doesSupportMarkdown=function(){if(!he(this.supportsMarkdown)){if(!he(this.clientCapabilities))return this.supportsMarkdown=!0,this.supportsMarkdown;var e=this.clientCapabilities.textDocument&&this.clientCapabilities.textDocument.hover;this.supportsMarkdown=e&&e.contentFormat&&Array.isArray(e.contentFormat)&&e.contentFormat.indexOf(ce.Markdown)!==-1}return this.supportsMarkdown},n}();var Jt=function(n,e,t,r){function i(o){return o instanceof t?o:new t(function(s){s(o)})}return new(t||(t=Promise))(function(o,s){function a(h){try{c(r.next(h))}catch(p){s(p)}}function l(h){try{c(r.throw(h))}catch(p){s(p)}}function c(h){h.done?o(h.value):i(h.value).then(a,l)}c((r=r.apply(n,e||[])).next())})},Xt=function(n,e){var t={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol==\"function\"&&(s[Symbol.iterator]=function(){return this}),s;function a(c){return function(h){return l([c,h])}}function l(c){if(r)throw new TypeError(\"Generator is already executing.\");for(;t;)try{if(r=1,i&&(o=c[0]&2?i.return:c[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,c[1])).done)return o;switch(i=0,o&&(c=[c[0]&2,o.value]),c[0]){case 0:case 1:o=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,i=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(o=t.trys,!(o=o.length>0&&o[o.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]<o[3])){t.label=c[1];break}if(c[0]===6&&t.label<o[1]){t.label=o[1],o=c;break}if(o&&t.label<o[2]){t.label=o[2],t.ops.push(c);break}o[2]&&t.ops.pop(),t.trys.pop();continue}c=e.call(n,t)}catch(h){c=[6,h],i=0}finally{r=o=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}},Mo=H(),To=/^\\w+:\\/\\//,Po=/^data:/,Yt=function(){function n(e,t){this.fileSystemProvider=e,this.resolveModuleReferences=t}return n.prototype.findDefinition=function(e,t,r){var i=new qt(r),o=e.offsetAt(t),s=sn(r,o);if(!s)return null;var a=i.findSymbolFromNode(s);return a?{uri:e.uri,range:st(a.node,e)}:null},n.prototype.findReferences=function(e,t,r){var i=this.findDocumentHighlights(e,t,r);return i.map(function(o){return{uri:e.uri,range:o.range}})},n.prototype.findDocumentHighlights=function(e,t,r){var i=[],o=e.offsetAt(t),s=sn(r,o);if(!s||s.type===u.Stylesheet||s.type===u.Declarations)return i;s.type===u.Identifier&&s.parent&&s.parent.type===u.ClassSelector&&(s=s.parent);var a=new qt(r),l=a.findSymbolFromNode(s),c=s.getText();return r.accept(function(h){if(l){if(a.matchesSymbol(h,l))return i.push({kind:Ao(h),range:st(h,e)}),!1}else s&&s.type===h.type&&h.matches(c)&&i.push({kind:Ao(h),range:st(h,e)});return!0}),i},n.prototype.isRawStringDocumentLinkNode=function(e){return e.type===u.Import},n.prototype.findDocumentLinks=function(e,t,r){for(var i=this.findUnresolvedLinks(e,t),o=[],s=0,a=i;s<a.length;s++){var l=a[s],c=l.link,h=c.target;if(!(!h||Po.test(h)))if(To.test(h))o.push(c);else{var p=r.resolveReference(h,e.uri);p&&(c.target=p),o.push(c)}}return o},n.prototype.findDocumentLinks2=function(e,t,r){return Jt(this,void 0,void 0,function(){var i,o,s,a,l,c,h,p;return Xt(this,function(m){switch(m.label){case 0:i=this.findUnresolvedLinks(e,t),o=[],s=0,a=i,m.label=1;case 1:return s<a.length?(l=a[s],c=l.link,h=c.target,!h||Po.test(h)?[3,5]:[3,2]):[3,6];case 2:return To.test(h)?(o.push(c),[3,5]):[3,3];case 3:return[4,this.resolveRelativeReference(h,e.uri,r,l.isRawLink)];case 4:p=m.sent(),p!==void 0&&(c.target=p,o.push(c)),m.label=5;case 5:return s++,[3,1];case 6:return[2,o]}})})},n.prototype.findUnresolvedLinks=function(e,t){var r=this,i=[],o=function(s){var a=s.getText(),l=st(s,e);if(!(l.start.line===l.end.line&&l.start.character===l.end.character)){(q(a,\"'\")||q(a,'\"'))&&(a=a.slice(1,-1));var c=s.parent?r.isRawStringDocumentLinkNode(s.parent):!1;i.push({link:{target:a,range:l},isRawLink:c})}};return t.accept(function(s){if(s.type===u.URILiteral){var a=s.getChild(0);return a&&o(a),!1}if(s.parent&&r.isRawStringDocumentLinkNode(s.parent)){var l=s.getText();return(q(l,\"'\")||q(l,'\"'))&&o(s),!1}return!0}),i},n.prototype.findDocumentSymbols=function(e,t){var r=[];return t.accept(function(i){var o={name:null,kind:Oe.Class,location:null},s=i;if(i instanceof Ee)return o.name=i.getText(),s=i.findAParent(u.Ruleset,u.ExtendsReference),s&&(o.location=tt.create(e.uri,st(s,e)),r.push(o)),!1;if(i instanceof $e)o.name=i.getName(),o.kind=Oe.Variable;else if(i instanceof Ae)o.name=i.getName(),o.kind=Oe.Method;else if(i instanceof Qe)o.name=i.getName(),o.kind=Oe.Function;else if(i instanceof cn)o.name=Mo(\"literal.keyframes\",\"@keyframes {0}\",i.getName());else if(i instanceof ln)o.name=Mo(\"literal.fontface\",\"@font-face\");else if(i instanceof dn){var a=i.getChild(0);a instanceof hn&&(o.name=\"@media \"+a.getText(),o.kind=Oe.Module)}return o.name&&(o.location=tt.create(e.uri,st(s,e)),r.push(o)),!0}),r},n.prototype.findDocumentColors=function(e,t){var r=[];return t.accept(function(i){var o=ga(i,e);return o&&r.push(o),!0}),r},n.prototype.getColorPresentations=function(e,t,r,i){var o=[],s=Math.round(r.red*255),a=Math.round(r.green*255),l=Math.round(r.blue*255),c;r.alpha===1?c=\"rgb(\".concat(s,\", \").concat(a,\", \").concat(l,\")\"):c=\"rgba(\".concat(s,\", \").concat(a,\", \").concat(l,\", \").concat(r.alpha,\")\"),o.push({label:c,textEdit:T.replace(i,c)}),r.alpha===1?c=\"#\".concat(ot(s)).concat(ot(a)).concat(ot(l)):c=\"#\".concat(ot(s)).concat(ot(a)).concat(ot(l)).concat(ot(Math.round(r.alpha*255))),o.push({label:c,textEdit:T.replace(i,c)});var h=fr(r);h.a===1?c=\"hsl(\".concat(h.h,\", \").concat(Math.round(h.s*100),\"%, \").concat(Math.round(h.l*100),\"%)\"):c=\"hsla(\".concat(h.h,\", \").concat(Math.round(h.s*100),\"%, \").concat(Math.round(h.l*100),\"%, \").concat(h.a,\")\"),o.push({label:c,textEdit:T.replace(i,c)});var p=ho(r);return p.a===1?c=\"hwb(\".concat(p.h,\" \").concat(Math.round(p.w*100),\"% \").concat(Math.round(p.b*100),\"%)\"):c=\"hwb(\".concat(p.h,\" \").concat(Math.round(p.w*100),\"% \").concat(Math.round(p.b*100),\"% / \").concat(p.a,\")\"),o.push({label:c,textEdit:T.replace(i,c)}),o},n.prototype.doRename=function(e,t,r,i){var o,s=this.findDocumentHighlights(e,t,i),a=s.map(function(l){return T.replace(l.range,r)});return{changes:(o={},o[e.uri]=a,o)}},n.prototype.resolveModuleReference=function(e,t,r){return Jt(this,void 0,void 0,function(){var i,o,s,a,l;return Xt(this,function(c){switch(c.label){case 0:return q(t,\"file://\")?(i=ba(e),o=r.resolveReference(\"/\",t),s=Dn(t),[4,this.resolvePathToModule(i,s,o)]):[3,2];case 1:if(a=c.sent(),a)return l=e.substring(i.length+1),[2,Gt(a,l)];c.label=2;case 2:return[2,void 0]}})})},n.prototype.resolveRelativeReference=function(e,t,r,i){return Jt(this,void 0,void 0,function(){var o,s;return Xt(this,function(a){switch(a.label){case 0:return o=r.resolveReference(e,t),e[0]===\"~\"&&e[1]!==\"/\"&&this.fileSystemProvider?(e=e.substring(1),[4,this.resolveModuleReference(e,t,r)]):[3,2];case 1:return[2,a.sent()||o];case 2:return this.resolveModuleReferences?(s=o,s?[4,this.fileExists(o)]:[3,4]):[3,7];case 3:s=a.sent(),a.label=4;case 4:return s?[2,o]:[3,5];case 5:return[4,this.resolveModuleReference(e,t,r)];case 6:return[2,a.sent()||o];case 7:return[2,o]}})})},n.prototype.resolvePathToModule=function(e,t,r){return Jt(this,void 0,void 0,function(){var i;return Xt(this,function(o){switch(o.label){case 0:return i=Gt(t,\"node_modules\",e,\"package.json\"),[4,this.fileExists(i)];case 1:return o.sent()?[2,Dn(i)]:r&&t.startsWith(r)&&t.length!==r.length?[2,this.resolvePathToModule(e,Dn(t),r)]:[2,void 0]}})})},n.prototype.fileExists=function(e){return Jt(this,void 0,void 0,function(){var t,r;return Xt(this,function(i){switch(i.label){case 0:if(!this.fileSystemProvider)return[2,!1];i.label=1;case 1:return i.trys.push([1,3,,4]),[4,this.fileSystemProvider.stat(e)];case 2:return t=i.sent(),t.type===it.Unknown&&t.size===-1?[2,!1]:[2,!0];case 3:return r=i.sent(),[2,!1];case 4:return[2]}})})},n}();function ga(n,e){var t=po(n);if(t){var r=st(n,e);return{color:t,range:r}}return null}function st(n,e){return W.create(e.positionAt(n.offset),e.positionAt(n.end))}function Ao(n){if(n.type===u.Selector)return He.Write;if(n instanceof te&&n.parent&&n.parent instanceof dt&&n.isCustomProperty)return He.Write;if(n.parent)switch(n.parent.type){case u.FunctionDeclaration:case u.MixinDeclaration:case u.Keyframe:case u.VariableDeclaration:case u.FunctionParameter:return He.Write}return He.Read}function ot(n){var e=n.toString(16);return e.length!==2?\"0\"+e:e}function ba(n){return n[0]===\"@\"?n.substring(0,n.indexOf(\"/\",n.indexOf(\"/\")+1)):n.substring(0,n.indexOf(\"/\"))}var Y=H(),xt=ne.Warning,No=ne.Error,Se=ne.Ignore,Z=function(){function n(e,t,r){this.id=e,this.message=t,this.defaultValue=r}return n}();var va=function(){function n(e,t,r){this.id=e,this.message=t,this.defaultValue=r}return n}();var V={AllVendorPrefixes:new Z(\"compatibleVendorPrefixes\",Y(\"rule.vendorprefixes.all\",\"When using a vendor-specific prefix make sure to also include all other vendor-specific properties\"),Se),IncludeStandardPropertyWhenUsingVendorPrefix:new Z(\"vendorPrefix\",Y(\"rule.standardvendorprefix.all\",\"When using a vendor-specific prefix also include the standard property\"),xt),DuplicateDeclarations:new Z(\"duplicateProperties\",Y(\"rule.duplicateDeclarations\",\"Do not use duplicate style definitions\"),Se),EmptyRuleSet:new Z(\"emptyRules\",Y(\"rule.emptyRuleSets\",\"Do not use empty rulesets\"),xt),ImportStatemement:new Z(\"importStatement\",Y(\"rule.importDirective\",\"Import statements do not load in parallel\"),Se),BewareOfBoxModelSize:new Z(\"boxModel\",Y(\"rule.bewareOfBoxModelSize\",\"Do not use width or height when using padding or border\"),Se),UniversalSelector:new Z(\"universalSelector\",Y(\"rule.universalSelector\",\"The universal selector (*) is known to be slow\"),Se),ZeroWithUnit:new Z(\"zeroUnits\",Y(\"rule.zeroWidthUnit\",\"No unit for zero needed\"),Se),RequiredPropertiesForFontFace:new Z(\"fontFaceProperties\",Y(\"rule.fontFaceProperties\",\"@font-face rule must define 'src' and 'font-family' properties\"),xt),HexColorLength:new Z(\"hexColorLength\",Y(\"rule.hexColor\",\"Hex colors must consist of three, four, six or eight hex numbers\"),No),ArgsInColorFunction:new Z(\"argumentsInColorFunction\",Y(\"rule.colorFunction\",\"Invalid number of parameters\"),No),UnknownProperty:new Z(\"unknownProperties\",Y(\"rule.unknownProperty\",\"Unknown property.\"),xt),UnknownAtRules:new Z(\"unknownAtRules\",Y(\"rule.unknownAtRules\",\"Unknown at-rule.\"),xt),IEStarHack:new Z(\"ieHack\",Y(\"rule.ieHack\",\"IE hacks are only necessary when supporting IE7 and older\"),Se),UnknownVendorSpecificProperty:new Z(\"unknownVendorSpecificProperties\",Y(\"rule.unknownVendorSpecificProperty\",\"Unknown vendor specific property.\"),Se),PropertyIgnoredDueToDisplay:new Z(\"propertyIgnoredDueToDisplay\",Y(\"rule.propertyIgnoredDueToDisplay\",\"Property is ignored due to the display.\"),xt),AvoidImportant:new Z(\"important\",Y(\"rule.avoidImportant\",\"Avoid using !important. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored.\"),Se),AvoidFloat:new Z(\"float\",Y(\"rule.avoidFloat\",\"Avoid using 'float'. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes.\"),Se),AvoidIdSelector:new Z(\"idSelector\",Y(\"rule.avoidIdSelector\",\"Selectors should not contain IDs because these rules are too tightly coupled with the HTML.\"),Se)},Oo={ValidProperties:new va(\"validProperties\",Y(\"rule.validProperties\",\"A list of properties that are not validated against the `unknownProperties` rule.\"),[])},Wo=function(){function n(e){e===void 0&&(e={}),this.conf=e}return n.prototype.getRule=function(e){if(this.conf.hasOwnProperty(e.id)){var t=ya(this.conf[e.id]);if(t)return t}return e.defaultValue},n.prototype.getSetting=function(e){return this.conf[e.id]},n}();function ya(n){switch(n){case\"ignore\":return ne.Ignore;case\"warning\":return ne.Warning;case\"error\":return ne.Error}return null}var wa=H(),Mn=function(){function n(e){this.cssDataManager=e}return n.prototype.doCodeActions=function(e,t,r,i){return this.doCodeActions2(e,t,r,i).map(function(o){var s=o.edit&&o.edit.documentChanges&&o.edit.documentChanges[0];return Ge.create(o.title,\"_css.applyCodeAction\",e.uri,e.version,s&&s.edits)})},n.prototype.doCodeActions2=function(e,t,r,i){var o=[];if(r.diagnostics)for(var s=0,a=r.diagnostics;s<a.length;s++){var l=a[s];this.appendFixesForMarker(e,i,l,o)}return o},n.prototype.getFixesForUnknownProperty=function(e,t,r,i){var o=t.getName(),s=[];this.cssDataManager.getProperties().forEach(function(D){var M=oi(o,D.name);M>=o.length/2&&s.push({property:D.name,score:M})}),s.sort(function(D,M){return M.score-D.score||D.property.localeCompare(M.property)});for(var a=3,l=0,c=s;l<c.length;l++){var h=c[l],p=h.property,m=wa(\"css.codeaction.rename\",\"Rename to '{0}'\",p),g=T.replace(r.range,p),w=Nt.create(e.uri,e.version),x={documentChanges:[nt.create(w,[g])]},y=Lt.create(m,x,Wt.QuickFix);if(y.diagnostics=[r],i.push(y),--a<=0)return}},n.prototype.appendFixesForMarker=function(e,t,r,i){if(r.code===V.UnknownProperty.id)for(var o=e.offsetAt(r.range.start),s=e.offsetAt(r.range.end),a=ct(t,o),l=a.length-1;l>=0;l--){var c=a[l];if(c instanceof ae){var h=c.getProperty();if(h&&h.offset===o&&h.end===s){this.getFixesForUnknownProperty(e,h,r,i);return}}}},n}();var Uo=function(){function n(e){this.fullPropertyName=e.getFullPropertyName().toLowerCase(),this.node=e}return n}();function Qt(n,e,t,r){var i=n[e];i.value=t,t&&(Fr(i.properties,r)||i.properties.push(r))}function xa(n,e,t){Qt(n,\"top\",e,t),Qt(n,\"right\",e,t),Qt(n,\"bottom\",e,t),Qt(n,\"left\",e,t)}function ie(n,e,t,r){e===\"top\"||e===\"right\"||e===\"bottom\"||e===\"left\"?Qt(n,e,t,r):xa(n,t,r)}function Ir(n,e,t){switch(e.length){case 1:ie(n,void 0,e[0],t);break;case 2:ie(n,\"top\",e[0],t),ie(n,\"bottom\",e[0],t),ie(n,\"right\",e[1],t),ie(n,\"left\",e[1],t);break;case 3:ie(n,\"top\",e[0],t),ie(n,\"right\",e[1],t),ie(n,\"left\",e[1],t),ie(n,\"bottom\",e[2],t);break;case 4:ie(n,\"top\",e[0],t),ie(n,\"right\",e[1],t),ie(n,\"bottom\",e[2],t),ie(n,\"left\",e[3],t);break}}function Mr(n,e){for(var t=0,r=e;t<r.length;t++){var i=r[t];if(n.matches(i))return!0}return!1}function Zt(n,e){return e===void 0&&(e=!0),e&&Mr(n,[\"initial\",\"unset\"])?!1:parseFloat(n.getText())!==0}function Lo(n,e){return e===void 0&&(e=!0),n.map(function(t){return Zt(t,e)})}function Tn(n,e){return e===void 0&&(e=!0),!(Mr(n,[\"none\",\"hidden\"])||e&&Mr(n,[\"initial\",\"unset\"]))}function Sa(n,e){return e===void 0&&(e=!0),n.map(function(t){return Tn(t,e)})}function ka(n){var e=n.getChildren();if(e.length===1){var t=e[0];return Zt(t)&&Tn(t)}for(var r=0,i=e;r<i.length;r++){var o=i[r],t=o;if(!Zt(t,!1)||!Tn(t,!1))return!1}return!0}function Tr(n){for(var e={top:{value:!1,properties:[]},right:{value:!1,properties:[]},bottom:{value:!1,properties:[]},left:{value:!1,properties:[]}},t=0,r=n;t<r.length;t++){var i=r[t],o=i.node.value;if(!(typeof o>\"u\"))switch(i.fullPropertyName){case\"box-sizing\":return{top:{value:!1,properties:[]},right:{value:!1,properties:[]},bottom:{value:!1,properties:[]},left:{value:!1,properties:[]}};case\"width\":e.width=i;break;case\"height\":e.height=i;break;default:var s=i.fullPropertyName.split(\"-\");switch(s[0]){case\"border\":switch(s[1]){case void 0:case\"top\":case\"right\":case\"bottom\":case\"left\":switch(s[2]){case void 0:ie(e,s[1],ka(o),i);break;case\"width\":ie(e,s[1],Zt(o,!1),i);break;case\"style\":ie(e,s[1],Tn(o,!0),i);break}break;case\"width\":Ir(e,Lo(o.getChildren(),!1),i);break;case\"style\":Ir(e,Sa(o.getChildren(),!0),i);break}break;case\"padding\":s.length===1?Ir(e,Lo(o.getChildren(),!0),i):ie(e,s[1],Zt(o,!0),i);break}break}}return e}var Ue=H(),jo=function(){function n(){this.data={}}return n.prototype.add=function(e,t,r){var i=this.data[e];i||(i={nodes:[],names:[]},this.data[e]=i),i.names.push(t),r&&i.nodes.push(r)},n}(),Vo=function(){function n(e,t,r){var i=this;this.cssDataManager=r,this.warnings=[],this.settings=t,this.documentText=e.getText(),this.keyframes=new jo,this.validProperties={};var o=t.getSetting(Oo.ValidProperties);Array.isArray(o)&&o.forEach(function(s){if(typeof s==\"string\"){var a=s.trim().toLowerCase();a.length&&(i.validProperties[a]=!0)}})}return n.entries=function(e,t,r,i,o){var s=new n(t,r,i);return e.acceptVisitor(s),s.completeValidations(),s.getEntries(o)},n.prototype.isValidPropertyDeclaration=function(e){var t=e.fullPropertyName;return this.validProperties[t]},n.prototype.fetch=function(e,t){for(var r=[],i=0,o=e;i<o.length;i++){var s=o[i];s.fullPropertyName===t&&r.push(s)}return r},n.prototype.fetchWithValue=function(e,t,r){for(var i=[],o=0,s=e;o<s.length;o++){var a=s[o];if(a.fullPropertyName===t){var l=a.node.getValue();l&&this.findValueInExpression(l,r)&&i.push(a)}}return i},n.prototype.findValueInExpression=function(e,t){var r=!1;return e.accept(function(i){return i.type===u.Identifier&&i.matches(t)&&(r=!0),!r}),r},n.prototype.getEntries=function(e){return e===void 0&&(e=ne.Warning|ne.Error),this.warnings.filter(function(t){return(t.getLevel()&e)!==0})},n.prototype.addEntry=function(e,t,r){var i=new fn(e,t,this.settings.getRule(t),r);this.warnings.push(i)},n.prototype.getMissingNames=function(e,t){for(var r=e.slice(0),i=0;i<t.length;i++){var o=r.indexOf(t[i]);o!==-1&&(r[o]=null)}for(var s=null,i=0;i<r.length;i++){var a=r[i];a&&(s===null?s=Ue(\"namelist.single\",\"'{0}'\",a):s=Ue(\"namelist.concatenated\",\"{0}, '{1}'\",s,a))}return s},n.prototype.visitNode=function(e){switch(e.type){case u.UnknownAtRule:return this.visitUnknownAtRule(e);case u.Keyframe:return this.visitKeyframe(e);case u.FontFace:return this.visitFontFace(e);case u.Ruleset:return this.visitRuleSet(e);case u.SimpleSelector:return this.visitSimpleSelector(e);case u.Function:return this.visitFunction(e);case u.NumericValue:return this.visitNumericValue(e);case u.Import:return this.visitImport(e);case u.HexColorValue:return this.visitHexColorValue(e);case u.Prio:return this.visitPrio(e);case u.IdentifierSelector:return this.visitIdentifierSelector(e)}return!0},n.prototype.completeValidations=function(){this.validateKeyframes()},n.prototype.visitUnknownAtRule=function(e){var t=e.getChild(0);if(!t)return!1;var r=this.cssDataManager.getAtDirective(t.getText());return r?!1:(this.addEntry(t,V.UnknownAtRules,\"Unknown at rule \".concat(t.getText())),!0)},n.prototype.visitKeyframe=function(e){var t=e.getKeyword();if(!t)return!1;var r=t.getText();return this.keyframes.add(e.getName(),r,r!==\"@keyframes\"?t:null),!0},n.prototype.validateKeyframes=function(){var e=[\"@-webkit-keyframes\",\"@-moz-keyframes\",\"@-o-keyframes\"];for(var t in this.keyframes.data){var r=this.keyframes.data[t].names,i=r.indexOf(\"@keyframes\")===-1;if(!(!i&&r.length===1)){var o=this.getMissingNames(e,r);if(o||i)for(var s=0,a=this.keyframes.data[t].nodes;s<a.length;s++){var l=a[s];if(i){var c=Ue(\"keyframes.standardrule.missing\",\"Always define standard rule '@keyframes' when defining keyframes.\");this.addEntry(l,V.IncludeStandardPropertyWhenUsingVendorPrefix,c)}if(o){var c=Ue(\"keyframes.vendorspecific.missing\",\"Always include all vendor specific rules: Missing: {0}\",o);this.addEntry(l,V.AllVendorPrefixes,c)}}}}return!0},n.prototype.visitSimpleSelector=function(e){var t=this.documentText.charAt(e.offset);return e.length===1&&t===\"*\"&&this.addEntry(e,V.UniversalSelector),!0},n.prototype.visitIdentifierSelector=function(e){return this.addEntry(e,V.AvoidIdSelector),!0},n.prototype.visitImport=function(e){return this.addEntry(e,V.ImportStatemement),!0},n.prototype.visitRuleSet=function(e){var t=e.getDeclarations();if(!t)return!1;t.hasChildren()||this.addEntry(e.getSelectors(),V.EmptyRuleSet);for(var r=[],i=0,o=t.getChildren();i<o.length;i++){var s=o[i];s instanceof ae&&r.push(new Uo(s))}var a=Tr(r);if(a.width){var l=[];if(a.right.value&&(l=$t(l,a.right.properties)),a.left.value&&(l=$t(l,a.left.properties)),l.length!==0){for(var c=0,h=l;c<h.length;c++){var p=h[c];this.addEntry(p.node,V.BewareOfBoxModelSize)}this.addEntry(a.width.node,V.BewareOfBoxModelSize)}}if(a.height){var l=[];if(a.top.value&&(l=$t(l,a.top.properties)),a.bottom.value&&(l=$t(l,a.bottom.properties)),l.length!==0){for(var m=0,g=l;m<g.length;m++){var p=g[m];this.addEntry(p.node,V.BewareOfBoxModelSize)}this.addEntry(a.height.node,V.BewareOfBoxModelSize)}}var w=this.fetchWithValue(r,\"display\",\"inline-block\");if(w.length>0)for(var x=this.fetch(r,\"float\"),y=0;y<x.length;y++){var D=x[y].node,M=D.getValue();M&&!M.matches(\"none\")&&this.addEntry(D,V.PropertyIgnoredDueToDisplay,Ue(\"rule.propertyIgnoredDueToDisplayInlineBlock\",\"inline-block is ignored due to the float. If 'float' has a value other than 'none', the box is floated and 'display' is treated as 'block'\"))}if(w=this.fetchWithValue(r,\"display\",\"block\"),w.length>0)for(var x=this.fetch(r,\"vertical-align\"),y=0;y<x.length;y++)this.addEntry(x[y].node,V.PropertyIgnoredDueToDisplay,Ue(\"rule.propertyIgnoredDueToDisplayBlock\",\"Property is ignored due to the display. With 'display: block', vertical-align should not be used.\"));for(var z=this.fetch(r,\"float\"),y=0;y<z.length;y++){var s=z[y];this.isValidPropertyDeclaration(s)||this.addEntry(s.node,V.AvoidFloat)}for(var P=0;P<r.length;P++){var s=r[P];if(s.fullPropertyName!==\"background\"&&!this.validProperties[s.fullPropertyName]){var M=s.node.getValue();if(M&&this.documentText.charAt(M.offset)!==\"-\"){var L=this.fetch(r,s.fullPropertyName);if(L.length>1)for(var $=0;$<L.length;$++){var ue=L[$].node.getValue();ue&&this.documentText.charAt(ue.offset)!==\"-\"&&L[$]!==s&&this.addEntry(s.node,V.DuplicateDeclarations)}}}}var oe=e.getSelectors().matches(\":export\");if(!oe){for(var me=new jo,ve=!1,ye=0,ke=r;ye<ke.length;ye++){var s=ke[ye],pe=s.node;if(this.isCSSDeclaration(pe)){var G=s.fullPropertyName,Ie=G.charAt(0);if(Ie===\"-\"){if(G.charAt(1)!==\"-\"){!this.cssDataManager.isKnownProperty(G)&&!this.validProperties[G]&&this.addEntry(pe.getProperty(),V.UnknownVendorSpecificProperty);var fe=pe.getNonPrefixedPropertyName();me.add(fe,G,pe.getProperty())}}else{var C=G;(Ie===\"*\"||Ie===\"_\")&&(this.addEntry(pe.getProperty(),V.IEStarHack),G=G.substr(1)),!this.cssDataManager.isKnownProperty(C)&&!this.cssDataManager.isKnownProperty(G)&&(this.validProperties[G]||this.addEntry(pe.getProperty(),V.UnknownProperty,Ue(\"property.unknownproperty.detailed\",\"Unknown property: '{0}'\",pe.getFullPropertyName()))),me.add(G,G,null)}}else ve=!0}if(!ve)for(var b in me.data){var k=me.data[b],_=k.names,N=this.cssDataManager.isStandardProperty(b)&&_.indexOf(b)===-1;if(!(!N&&_.length===1)){for(var O=[],P=0,B=n.prefixes.length;P<B;P++){var Ce=n.prefixes[P];this.cssDataManager.isStandardProperty(Ce+b)&&O.push(Ce+b)}var se=this.getMissingNames(O,_);if(se||N)for(var ge=0,Xe=k.nodes;ge<Xe.length;ge++){var Me=Xe[ge];if(N){var Bn=Ue(\"property.standard.missing\",\"Also define the standard property '{0}' for compatibility\",b);this.addEntry(Me,V.IncludeStandardPropertyWhenUsingVendorPrefix,Bn)}if(se){var Bn=Ue(\"property.vendorspecific.missing\",\"Always include all vendor specific properties: Missing: {0}\",se);this.addEntry(Me,V.AllVendorPrefixes,Bn)}}}}}return!0},n.prototype.visitPrio=function(e){return this.addEntry(e,V.AvoidImportant),!0},n.prototype.visitNumericValue=function(e){var t=e.findParent(u.Function);if(t&&t.getName()===\"calc\")return!0;var r=e.findParent(u.Declaration);if(r){var i=r.getValue();if(i){var o=e.getValue();if(!o.unit||Cn.length.indexOf(o.unit.toLowerCase())===-1)return!0;parseFloat(o.value)===0&&!!o.unit&&!this.validProperties[r.getFullPropertyName()]&&this.addEntry(e,V.ZeroWithUnit)}}return!0},n.prototype.visitFontFace=function(e){var t=e.getDeclarations();if(!t)return!1;for(var r=!1,i=!1,o=!1,s=0,a=t.getChildren();s<a.length;s++){var l=a[s];if(this.isCSSDeclaration(l)){var c=l.getProperty().getName().toLowerCase();c===\"src\"&&(r=!0),c===\"font-family\"&&(i=!0)}else o=!0}return!o&&(!r||!i)&&this.addEntry(e,V.RequiredPropertiesForFontFace),!0},n.prototype.isCSSDeclaration=function(e){if(e instanceof ae){if(!e.getValue())return!1;var t=e.getProperty();if(!t)return!1;var r=t.getIdentifier();return!(!r||r.containsInterpolation())}return!1},n.prototype.visitHexColorValue=function(e){var t=e.length;return t!==9&&t!==7&&t!==5&&t!==4&&this.addEntry(e,V.HexColorLength),!1},n.prototype.visitFunction=function(e){var t=e.getName().toLowerCase(),r=-1,i=0;switch(t){case\"rgb(\":case\"hsl(\":r=3;break;case\"rgba(\":case\"hsla(\":r=4;break}return r!==-1&&(e.getArguments().accept(function(o){return o instanceof pt?(i+=1,!1):!0}),i!==r&&this.addEntry(e,V.ArgsInColorFunction)),!0},n.prefixes=[\"-ms-\",\"-moz-\",\"-o-\",\"-webkit-\"],n}();var Pn=function(){function n(e){this.cssDataManager=e}return n.prototype.configure=function(e){this.settings=e},n.prototype.doValidation=function(e,t,r){if(r===void 0&&(r=this.settings),r&&r.validate===!1)return[];var i=[];i.push.apply(i,Ni.entries(t)),i.push.apply(i,Vo.entries(t,e,new Wo(r&&r.lint),this.cssDataManager));var o=[];for(var s in V)o.push(V[s].id);function a(l){var c=W.create(e.positionAt(l.getOffset()),e.positionAt(l.getOffset()+l.getLength())),h=e.languageId;return{code:l.getRule().id,source:h,message:l.getMessage(),severity:l.getLevel()===ne.Warning?ft.Warning:ft.Error,range:c}}return i.filter(function(l){return l.getLevel()!==ne.Ignore}).map(a)},n}();var Ca=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!=\"function\"&&t!==null)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),Bo=\"/\".charCodeAt(0),_a=`\n`.charCodeAt(0),Fa=\"\\r\".charCodeAt(0),Ea=\"\\f\".charCodeAt(0),Da=\"$\".charCodeAt(0),za=\"#\".charCodeAt(0),Ra=\"{\".charCodeAt(0),en=\"=\".charCodeAt(0),Ia=\"!\".charCodeAt(0),Ma=\"<\".charCodeAt(0),Ta=\">\".charCodeAt(0),Pr=\".\".charCodeAt(0),yc=\"@\".charCodeAt(0),je=d.CustomToken,An=je++,St=je++,wc=je++,Ar=je++,Nr=je++,Or=je++,Wr=je++,tn=je++,xc=je++,Nn=function(n){Ca(e,n);function e(){return n!==null&&n.apply(this,arguments)||this}return e.prototype.scanNext=function(t){if(this.stream.advanceIfChar(Da)){var r=[\"$\"];if(this.ident(r))return this.finishToken(t,An,r.join(\"\"));this.stream.goBackTo(t)}return this.stream.advanceIfChars([za,Ra])?this.finishToken(t,St):this.stream.advanceIfChars([en,en])?this.finishToken(t,Ar):this.stream.advanceIfChars([Ia,en])?this.finishToken(t,Nr):this.stream.advanceIfChar(Ma)?this.stream.advanceIfChar(en)?this.finishToken(t,Wr):this.finishToken(t,d.Delim):this.stream.advanceIfChar(Ta)?this.stream.advanceIfChar(en)?this.finishToken(t,Or):this.finishToken(t,d.Delim):this.stream.advanceIfChars([Pr,Pr,Pr])?this.finishToken(t,tn):n.prototype.scanNext.call(this,t)},e.prototype.comment=function(){return n.prototype.comment.call(this)?!0:!this.inURL&&this.stream.advanceIfChars([Bo,Bo])?(this.stream.advanceWhileChar(function(t){switch(t){case _a:case Fa:case Ea:return!1;default:return!0}}),!0):!1},e}(Fe);var Lr=H(),Ur=function(){function n(e,t){this.id=e,this.message=t}return n}();var On={FromExpected:new Ur(\"scss-fromexpected\",Lr(\"expected.from\",\"'from' expected\")),ThroughOrToExpected:new Ur(\"scss-throughexpected\",Lr(\"expected.through\",\"'through' or 'to' expected\")),InExpected:new Ur(\"scss-fromexpected\",Lr(\"expected.in\",\"'in' expected\"))};var Aa=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!=\"function\"&&t!==null)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),$o=function(n){Aa(e,n);function e(){return n.call(this,new Nn)||this}return e.prototype._parseStylesheetStatement=function(t){return t===void 0&&(t=!1),this.peek(d.AtKeyword)?this._parseWarnAndDebug()||this._parseControlStatement()||this._parseMixinDeclaration()||this._parseMixinContent()||this._parseMixinReference()||this._parseFunctionDeclaration()||this._parseForward()||this._parseUse()||this._parseRuleset(t)||n.prototype._parseStylesheetAtStatement.call(this,t):this._parseRuleset(!0)||this._parseVariableDeclaration()},e.prototype._parseImport=function(){if(!this.peekKeyword(\"@import\"))return null;var t=this.create(ht);if(this.consumeToken(),!t.addChild(this._parseURILiteral())&&!t.addChild(this._parseStringLiteral()))return this.finish(t,f.URIOrStringExpected);for(;this.accept(d.Comma);)if(!t.addChild(this._parseURILiteral())&&!t.addChild(this._parseStringLiteral()))return this.finish(t,f.URIOrStringExpected);return!this.peek(d.SemiColon)&&!this.peek(d.EOF)&&t.setMedialist(this._parseMediaQueryList()),this.finish(t)},e.prototype._parseVariableDeclaration=function(t){if(t===void 0&&(t=[]),!this.peek(An))return null;var r=this.create($e);if(!r.setVariable(this._parseVariable()))return null;if(!this.accept(d.Colon))return this.finish(r,f.ColonExpected);if(this.prevToken&&(r.colonPosition=this.prevToken.offset),!r.setValue(this._parseExpr()))return this.finish(r,f.VariableValueExpected,[],t);for(;this.peek(d.Exclamation);)if(!r.addChild(this._tryParsePrio())){if(this.consumeToken(),!this.peekRegExp(d.Ident,/^(default|global)$/))return this.finish(r,f.UnknownKeyword);this.consumeToken()}return this.peek(d.SemiColon)&&(r.semicolonPosition=this.token.offset),this.finish(r)},e.prototype._parseMediaCondition=function(){return this._parseInterpolation()||n.prototype._parseMediaCondition.call(this)},e.prototype._parseMediaFeatureName=function(){return this._parseModuleMember()||this._parseFunction()||this._parseIdent()||this._parseVariable()},e.prototype._parseKeyframeSelector=function(){return this._tryParseKeyframeSelector()||this._parseControlStatement(this._parseKeyframeSelector.bind(this))||this._parseVariableDeclaration()||this._parseMixinContent()},e.prototype._parseVariable=function(){if(!this.peek(An))return null;var t=this.create(ut);return this.consumeToken(),t},e.prototype._parseModuleMember=function(){var t=this.mark(),r=this.create(Zn);return r.setIdentifier(this._parseIdent([A.Module]))?this.hasWhitespace()||!this.acceptDelim(\".\")||this.hasWhitespace()?(this.restoreAtMark(t),null):r.addChild(this._parseVariable()||this._parseFunction())?r:this.finish(r,f.IdentifierOrVariableExpected):null},e.prototype._parseIdent=function(t){var r=this;if(!this.peek(d.Ident)&&!this.peek(St)&&!this.peekDelim(\"-\"))return null;var i=this.create(te);i.referenceTypes=t,i.isCustomProperty=this.peekRegExp(d.Ident,/^--/);for(var o=!1,s=function(){var a=r.mark();return r.acceptDelim(\"-\")&&(r.hasWhitespace()||r.acceptDelim(\"-\"),r.hasWhitespace())?(r.restoreAtMark(a),null):r._parseInterpolation()};(this.accept(d.Ident)||i.addChild(s())||o&&this.acceptRegexp(/^[\\w-]/))&&(o=!0,!this.hasWhitespace()););return o?this.finish(i):null},e.prototype._parseTermExpression=function(){return this._parseModuleMember()||this._parseVariable()||this._parseSelectorCombinator()||n.prototype._parseTermExpression.call(this)},e.prototype._parseInterpolation=function(){if(this.peek(St)){var t=this.create(It);return this.consumeToken(),!t.addChild(this._parseExpr())&&!this._parseSelectorCombinator()?this.accept(d.CurlyR)?this.finish(t):this.finish(t,f.ExpressionExpected):this.accept(d.CurlyR)?this.finish(t):this.finish(t,f.RightCurlyExpected)}return null},e.prototype._parseOperator=function(){if(this.peek(Ar)||this.peek(Nr)||this.peek(Or)||this.peek(Wr)||this.peekDelim(\">\")||this.peekDelim(\"<\")||this.peekIdent(\"and\")||this.peekIdent(\"or\")||this.peekDelim(\"%\")){var t=this.createNode(u.Operator);return this.consumeToken(),this.finish(t)}return n.prototype._parseOperator.call(this)},e.prototype._parseUnaryOperator=function(){if(this.peekIdent(\"not\")){var t=this.create(F);return this.consumeToken(),this.finish(t)}return n.prototype._parseUnaryOperator.call(this)},e.prototype._parseRuleSetDeclaration=function(){return this.peek(d.AtKeyword)?this._parseKeyframe()||this._parseImport()||this._parseMedia(!0)||this._parseFontFace()||this._parseWarnAndDebug()||this._parseControlStatement()||this._parseFunctionDeclaration()||this._parseExtends()||this._parseMixinReference()||this._parseMixinContent()||this._parseMixinDeclaration()||this._parseRuleset(!0)||this._parseSupports(!0)||n.prototype._parseRuleSetDeclarationAtStatement.call(this):this._parseVariableDeclaration()||this._tryParseRuleset(!0)||n.prototype._parseRuleSetDeclaration.call(this)},e.prototype._parseDeclaration=function(t){var r=this._tryParseCustomPropertyDeclaration(t);if(r)return r;var i=this.create(ae);if(!i.setProperty(this._parseProperty()))return null;if(!this.accept(d.Colon))return this.finish(i,f.ColonExpected,[d.Colon],t||[d.SemiColon]);this.prevToken&&(i.colonPosition=this.prevToken.offset);var o=!1;if(i.setValue(this._parseExpr())&&(o=!0,i.addChild(this._parsePrio())),this.peek(d.CurlyL))i.setNestedProperties(this._parseNestedProperties());else if(!o)return this.finish(i,f.PropertyValueExpected);return this.peek(d.SemiColon)&&(i.semicolonPosition=this.token.offset),this.finish(i)},e.prototype._parseNestedProperties=function(){var t=this.create(Yn);return this._parseBody(t,this._parseDeclaration.bind(this))},e.prototype._parseExtends=function(){if(this.peekKeyword(\"@extend\")){var t=this.create(qe);if(this.consumeToken(),!t.getSelectors().addChild(this._parseSimpleSelector()))return this.finish(t,f.SelectorExpected);for(;this.accept(d.Comma);)t.getSelectors().addChild(this._parseSimpleSelector());return this.accept(d.Exclamation)&&!this.acceptIdent(\"optional\")?this.finish(t,f.UnknownKeyword):this.finish(t)}return null},e.prototype._parseSimpleSelectorBody=function(){return this._parseSelectorCombinator()||this._parseSelectorPlaceholder()||n.prototype._parseSimpleSelectorBody.call(this)},e.prototype._parseSelectorCombinator=function(){if(this.peekDelim(\"&\")){var t=this.createNode(u.SelectorCombinator);for(this.consumeToken();!this.hasWhitespace()&&(this.acceptDelim(\"-\")||this.accept(d.Num)||this.accept(d.Dimension)||t.addChild(this._parseIdent())||this.acceptDelim(\"&\")););return this.finish(t)}return null},e.prototype._parseSelectorPlaceholder=function(){if(this.peekDelim(\"%\")){var t=this.createNode(u.SelectorPlaceholder);return this.consumeToken(),this._parseIdent(),this.finish(t)}else if(this.peekKeyword(\"@at-root\")){var t=this.createNode(u.SelectorPlaceholder);return this.consumeToken(),this.finish(t)}return null},e.prototype._parseElementName=function(){var t=this.mark(),r=n.prototype._parseElementName.call(this);return r&&!this.hasWhitespace()&&this.peek(d.ParenthesisL)?(this.restoreAtMark(t),null):r},e.prototype._tryParsePseudoIdentifier=function(){return this._parseInterpolation()||n.prototype._tryParsePseudoIdentifier.call(this)},e.prototype._parseWarnAndDebug=function(){if(!this.peekKeyword(\"@debug\")&&!this.peekKeyword(\"@warn\")&&!this.peekKeyword(\"@error\"))return null;var t=this.createNode(u.Debug);return this.consumeToken(),t.addChild(this._parseExpr()),this.finish(t)},e.prototype._parseControlStatement=function(t){return t===void 0&&(t=this._parseRuleSetDeclaration.bind(this)),this.peek(d.AtKeyword)?this._parseIfStatement(t)||this._parseForStatement(t)||this._parseEachStatement(t)||this._parseWhileStatement(t):null},e.prototype._parseIfStatement=function(t){return this.peekKeyword(\"@if\")?this._internalParseIfStatement(t):null},e.prototype._internalParseIfStatement=function(t){var r=this.create(pi);if(this.consumeToken(),!r.setExpression(this._parseExpr(!0)))return this.finish(r,f.ExpressionExpected);if(this._parseBody(r,t),this.acceptKeyword(\"@else\")){if(this.peekIdent(\"if\"))r.setElseClause(this._internalParseIfStatement(t));else if(this.peek(d.CurlyL)){var i=this.create(gi);this._parseBody(i,t),r.setElseClause(i)}}return this.finish(r)},e.prototype._parseForStatement=function(t){if(!this.peekKeyword(\"@for\"))return null;var r=this.create(ui);return this.consumeToken(),r.setVariable(this._parseVariable())?this.acceptIdent(\"from\")?r.addChild(this._parseBinaryExpr())?!this.acceptIdent(\"to\")&&!this.acceptIdent(\"through\")?this.finish(r,On.ThroughOrToExpected,[d.CurlyR]):r.addChild(this._parseBinaryExpr())?this._parseBody(r,t):this.finish(r,f.ExpressionExpected,[d.CurlyR]):this.finish(r,f.ExpressionExpected,[d.CurlyR]):this.finish(r,On.FromExpected,[d.CurlyR]):this.finish(r,f.VariableNameExpected,[d.CurlyR])},e.prototype._parseEachStatement=function(t){if(!this.peekKeyword(\"@each\"))return null;var r=this.create(mi);this.consumeToken();var i=r.getVariables();if(!i.addChild(this._parseVariable()))return this.finish(r,f.VariableNameExpected,[d.CurlyR]);for(;this.accept(d.Comma);)if(!i.addChild(this._parseVariable()))return this.finish(r,f.VariableNameExpected,[d.CurlyR]);return this.finish(i),this.acceptIdent(\"in\")?r.addChild(this._parseExpr())?this._parseBody(r,t):this.finish(r,f.ExpressionExpected,[d.CurlyR]):this.finish(r,On.InExpected,[d.CurlyR])},e.prototype._parseWhileStatement=function(t){if(!this.peekKeyword(\"@while\"))return null;var r=this.create(fi);return this.consumeToken(),r.addChild(this._parseBinaryExpr())?this._parseBody(r,t):this.finish(r,f.ExpressionExpected,[d.CurlyR])},e.prototype._parseFunctionBodyDeclaration=function(){return this._parseVariableDeclaration()||this._parseReturnStatement()||this._parseWarnAndDebug()||this._parseControlStatement(this._parseFunctionBodyDeclaration.bind(this))},e.prototype._parseFunctionDeclaration=function(){if(!this.peekKeyword(\"@function\"))return null;var t=this.create(Qe);if(this.consumeToken(),!t.setIdentifier(this._parseIdent([A.Function])))return this.finish(t,f.IdentifierExpected,[d.CurlyR]);if(!this.accept(d.ParenthesisL))return this.finish(t,f.LeftParenthesisExpected,[d.CurlyR]);if(t.getParameters().addChild(this._parseParameterDeclaration())){for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(t,f.VariableNameExpected)}return this.accept(d.ParenthesisR)?this._parseBody(t,this._parseFunctionBodyDeclaration.bind(this)):this.finish(t,f.RightParenthesisExpected,[d.CurlyR])},e.prototype._parseReturnStatement=function(){if(!this.peekKeyword(\"@return\"))return null;var t=this.createNode(u.ReturnStatement);return this.consumeToken(),t.addChild(this._parseExpr())?this.finish(t):this.finish(t,f.ExpressionExpected)},e.prototype._parseMixinDeclaration=function(){if(!this.peekKeyword(\"@mixin\"))return null;var t=this.create(Ae);if(this.consumeToken(),!t.setIdentifier(this._parseIdent([A.Mixin])))return this.finish(t,f.IdentifierExpected,[d.CurlyR]);if(this.accept(d.ParenthesisL)){if(t.getParameters().addChild(this._parseParameterDeclaration())){for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(t,f.VariableNameExpected)}if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected,[d.CurlyR])}return this._parseBody(t,this._parseRuleSetDeclaration.bind(this))},e.prototype._parseParameterDeclaration=function(){var t=this.create(Be);return t.setIdentifier(this._parseVariable())?(this.accept(tn),this.accept(d.Colon)&&!t.setDefaultValue(this._parseExpr(!0))?this.finish(t,f.VariableValueExpected,[],[d.Comma,d.ParenthesisR]):this.finish(t)):null},e.prototype._parseMixinContent=function(){if(!this.peekKeyword(\"@content\"))return null;var t=this.create(Ii);if(this.consumeToken(),this.accept(d.ParenthesisL)){if(t.getArguments().addChild(this._parseFunctionArgument())){for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getArguments().addChild(this._parseFunctionArgument()))return this.finish(t,f.ExpressionExpected)}if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected)}return this.finish(t)},e.prototype._parseMixinReference=function(){if(!this.peekKeyword(\"@include\"))return null;var t=this.create(et);this.consumeToken();var r=this._parseIdent([A.Mixin]);if(!t.setIdentifier(r))return this.finish(t,f.IdentifierExpected,[d.CurlyR]);if(!this.hasWhitespace()&&this.acceptDelim(\".\")&&!this.hasWhitespace()){var i=this._parseIdent([A.Mixin]);if(!i)return this.finish(t,f.IdentifierExpected,[d.CurlyR]);var o=this.create(Zn);r.referenceTypes=[A.Module],o.setIdentifier(r),t.setIdentifier(i),t.addChild(o)}if(this.accept(d.ParenthesisL)){if(t.getArguments().addChild(this._parseFunctionArgument())){for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getArguments().addChild(this._parseFunctionArgument()))return this.finish(t,f.ExpressionExpected)}if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected)}return(this.peekIdent(\"using\")||this.peek(d.CurlyL))&&t.setContent(this._parseMixinContentDeclaration()),this.finish(t)},e.prototype._parseMixinContentDeclaration=function(){var t=this.create(Mi);if(this.acceptIdent(\"using\")){if(!this.accept(d.ParenthesisL))return this.finish(t,f.LeftParenthesisExpected,[d.CurlyL]);if(t.getParameters().addChild(this._parseParameterDeclaration())){for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(t,f.VariableNameExpected)}if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected,[d.CurlyL])}return this.peek(d.CurlyL)&&this._parseBody(t,this._parseMixinReferenceBodyStatement.bind(this)),this.finish(t)},e.prototype._parseMixinReferenceBodyStatement=function(){return this._tryParseKeyframeSelector()||this._parseRuleSetDeclaration()},e.prototype._parseFunctionArgument=function(){var t=this.create(we),r=this.mark(),i=this._parseVariable();if(i)if(this.accept(d.Colon))t.setIdentifier(i);else{if(this.accept(tn))return t.setValue(i),this.finish(t);this.restoreAtMark(r)}return t.setValue(this._parseExpr(!0))?(this.accept(tn),t.addChild(this._parsePrio()),this.finish(t)):t.setValue(this._tryParsePrio())?this.finish(t):null},e.prototype._parseURLArgument=function(){var t=this.mark(),r=n.prototype._parseURLArgument.call(this);if(!r||!this.peek(d.ParenthesisR)){this.restoreAtMark(t);var i=this.create(F);return i.addChild(this._parseBinaryExpr()),this.finish(i)}return r},e.prototype._parseOperation=function(){if(!this.peek(d.ParenthesisL))return null;var t=this.create(F);for(this.consumeToken();t.addChild(this._parseListElement());)this.accept(d.Comma);return this.accept(d.ParenthesisR)?this.finish(t):this.finish(t,f.RightParenthesisExpected)},e.prototype._parseListElement=function(){var t=this.create(Ti),r=this._parseBinaryExpr();if(!r)return null;if(this.accept(d.Colon)){if(t.setKey(r),!t.setValue(this._parseBinaryExpr()))return this.finish(t,f.ExpressionExpected)}else t.setValue(r);return this.finish(t)},e.prototype._parseUse=function(){if(!this.peekKeyword(\"@use\"))return null;var t=this.create(vi);if(this.consumeToken(),!t.addChild(this._parseStringLiteral()))return this.finish(t,f.StringLiteralExpected);if(!this.peek(d.SemiColon)&&!this.peek(d.EOF)){if(!this.peekRegExp(d.Ident,/as|with/))return this.finish(t,f.UnknownKeyword);if(this.acceptIdent(\"as\")&&!t.setIdentifier(this._parseIdent([A.Module]))&&!this.acceptDelim(\"*\"))return this.finish(t,f.IdentifierOrWildcardExpected);if(this.acceptIdent(\"with\")){if(!this.accept(d.ParenthesisL))return this.finish(t,f.LeftParenthesisExpected,[d.ParenthesisR]);if(!t.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(t,f.VariableNameExpected);for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(t,f.VariableNameExpected);if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected)}}return!this.accept(d.SemiColon)&&!this.accept(d.EOF)?this.finish(t,f.SemiColonExpected):this.finish(t)},e.prototype._parseModuleConfigDeclaration=function(){var t=this.create(yi);return t.setIdentifier(this._parseVariable())?!this.accept(d.Colon)||!t.setValue(this._parseExpr(!0))?this.finish(t,f.VariableValueExpected,[],[d.Comma,d.ParenthesisR]):this.accept(d.Exclamation)&&(this.hasWhitespace()||!this.acceptIdent(\"default\"))?this.finish(t,f.UnknownKeyword):this.finish(t):null},e.prototype._parseForward=function(){if(!this.peekKeyword(\"@forward\"))return null;var t=this.create(wi);if(this.consumeToken(),!t.addChild(this._parseStringLiteral()))return this.finish(t,f.StringLiteralExpected);if(this.acceptIdent(\"with\")){if(!this.accept(d.ParenthesisL))return this.finish(t,f.LeftParenthesisExpected,[d.ParenthesisR]);if(!t.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(t,f.VariableNameExpected);for(;this.accept(d.Comma)&&!this.peek(d.ParenthesisR);)if(!t.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(t,f.VariableNameExpected);if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected)}if(!this.peek(d.SemiColon)&&!this.peek(d.EOF)){if(!this.peekRegExp(d.Ident,/as|hide|show/))return this.finish(t,f.UnknownKeyword);if(this.acceptIdent(\"as\")){var r=this._parseIdent([A.Forward]);if(!t.setIdentifier(r))return this.finish(t,f.IdentifierExpected);if(this.hasWhitespace()||!this.acceptDelim(\"*\"))return this.finish(t,f.WildcardExpected)}if((this.peekIdent(\"hide\")||this.peekIdent(\"show\"))&&!t.addChild(this._parseForwardVisibility()))return this.finish(t,f.IdentifierOrVariableExpected)}return!this.accept(d.SemiColon)&&!this.accept(d.EOF)?this.finish(t,f.SemiColonExpected):this.finish(t)},e.prototype._parseForwardVisibility=function(){var t=this.create(xi);for(t.setIdentifier(this._parseIdent());t.addChild(this._parseVariable()||this._parseIdent());)this.accept(d.Comma);return t.getChildren().length>1?t:null},e.prototype._parseSupportsCondition=function(){return this._parseInterpolation()||n.prototype._parseSupportsCondition.call(this)},e}(bt);var Na=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!=\"function\"&&t!==null)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),S=H(),Ko=function(n){Na(e,n);function e(t,r){var i=n.call(this,\"$\",t,r)||this;return qo(e.scssModuleLoaders),qo(e.scssModuleBuiltIns),i}return e.prototype.isImportPathParent=function(t){return t===u.Forward||t===u.Use||n.prototype.isImportPathParent.call(this,t)},e.prototype.getCompletionForImportPath=function(t,r){var i=t.getParent().type;if(i===u.Forward||i===u.Use)for(var o=0,s=e.scssModuleBuiltIns;o<s.length;o++){var a=s[o],l={label:a.label,documentation:a.documentation,textEdit:T.replace(this.getCompletionRange(t),\"'\".concat(a.label,\"'\")),kind:R.Module};r.items.push(l)}return n.prototype.getCompletionForImportPath.call(this,t,r)},e.prototype.createReplaceFunction=function(){var t=1;return function(r,i){return\"\\\\\"+i+\": ${\"+t+++\":\"+(e.variableDefaults[i]||\"\")+\"}\"}},e.prototype.createFunctionProposals=function(t,r,i,o){for(var s=0,a=t;s<a.length;s++){var l=a[s],c=l.func.replace(/\\[?(\\$\\w+)\\]?/g,this.createReplaceFunction()),h=l.func.substr(0,l.func.indexOf(\"(\")),p={label:h,detail:l.func,documentation:l.desc,textEdit:T.replace(this.getCompletionRange(r),c),insertTextFormat:re.Snippet,kind:R.Function};i&&(p.sortText=\"z\"),o.items.push(p)}return o},e.prototype.getCompletionsForSelector=function(t,r,i){return this.createFunctionProposals(e.selectorFuncs,null,!0,i),n.prototype.getCompletionsForSelector.call(this,t,r,i)},e.prototype.getTermProposals=function(t,r,i){var o=e.builtInFuncs;return t&&(o=o.filter(function(s){return!s.type||!t.restrictions||t.restrictions.indexOf(s.type)!==-1})),this.createFunctionProposals(o,r,!0,i),n.prototype.getTermProposals.call(this,t,r,i)},e.prototype.getColorProposals=function(t,r,i){return this.createFunctionProposals(e.colorProposals,r,!1,i),n.prototype.getColorProposals.call(this,t,r,i)},e.prototype.getCompletionsForDeclarationProperty=function(t,r){return this.getCompletionForAtDirectives(r),this.getCompletionsForSelector(null,!0,r),n.prototype.getCompletionsForDeclarationProperty.call(this,t,r)},e.prototype.getCompletionsForExtendsReference=function(t,r,i){for(var o=this.getSymbolContext().findSymbolsAtOffset(this.offset,A.Rule),s=0,a=o;s<a.length;s++){var l=a[s],c={label:l.name,textEdit:T.replace(this.getCompletionRange(r),l.name),kind:R.Function};i.items.push(c)}return i},e.prototype.getCompletionForAtDirectives=function(t){var r;return(r=t.items).push.apply(r,e.scssAtDirectives),t},e.prototype.getCompletionForTopLevel=function(t){return this.getCompletionForAtDirectives(t),this.getCompletionForModuleLoaders(t),n.prototype.getCompletionForTopLevel.call(this,t),t},e.prototype.getCompletionForModuleLoaders=function(t){var r;return(r=t.items).push.apply(r,e.scssModuleLoaders),t},e.variableDefaults={$red:\"1\",$green:\"2\",$blue:\"3\",$alpha:\"1.0\",$color:\"#000000\",$weight:\"0.5\",$hue:\"0\",$saturation:\"0%\",$lightness:\"0%\",$degrees:\"0\",$amount:\"0\",$string:'\"\"',$substring:'\"s\"',$number:\"0\",$limit:\"1\"},e.colorProposals=[{func:\"red($color)\",desc:S(\"scss.builtin.red\",\"Gets the red component of a color.\")},{func:\"green($color)\",desc:S(\"scss.builtin.green\",\"Gets the green component of a color.\")},{func:\"blue($color)\",desc:S(\"scss.builtin.blue\",\"Gets the blue component of a color.\")},{func:\"mix($color, $color, [$weight])\",desc:S(\"scss.builtin.mix\",\"Mixes two colors together.\")},{func:\"hue($color)\",desc:S(\"scss.builtin.hue\",\"Gets the hue component of a color.\")},{func:\"saturation($color)\",desc:S(\"scss.builtin.saturation\",\"Gets the saturation component of a color.\")},{func:\"lightness($color)\",desc:S(\"scss.builtin.lightness\",\"Gets the lightness component of a color.\")},{func:\"adjust-hue($color, $degrees)\",desc:S(\"scss.builtin.adjust-hue\",\"Changes the hue of a color.\")},{func:\"lighten($color, $amount)\",desc:S(\"scss.builtin.lighten\",\"Makes a color lighter.\")},{func:\"darken($color, $amount)\",desc:S(\"scss.builtin.darken\",\"Makes a color darker.\")},{func:\"saturate($color, $amount)\",desc:S(\"scss.builtin.saturate\",\"Makes a color more saturated.\")},{func:\"desaturate($color, $amount)\",desc:S(\"scss.builtin.desaturate\",\"Makes a color less saturated.\")},{func:\"grayscale($color)\",desc:S(\"scss.builtin.grayscale\",\"Converts a color to grayscale.\")},{func:\"complement($color)\",desc:S(\"scss.builtin.complement\",\"Returns the complement of a color.\")},{func:\"invert($color)\",desc:S(\"scss.builtin.invert\",\"Returns the inverse of a color.\")},{func:\"alpha($color)\",desc:S(\"scss.builtin.alpha\",\"Gets the opacity component of a color.\")},{func:\"opacity($color)\",desc:\"Gets the alpha component (opacity) of a color.\"},{func:\"rgba($color, $alpha)\",desc:S(\"scss.builtin.rgba\",\"Changes the alpha component for a color.\")},{func:\"opacify($color, $amount)\",desc:S(\"scss.builtin.opacify\",\"Makes a color more opaque.\")},{func:\"fade-in($color, $amount)\",desc:S(\"scss.builtin.fade-in\",\"Makes a color more opaque.\")},{func:\"transparentize($color, $amount)\",desc:S(\"scss.builtin.transparentize\",\"Makes a color more transparent.\")},{func:\"fade-out($color, $amount)\",desc:S(\"scss.builtin.fade-out\",\"Makes a color more transparent.\")},{func:\"adjust-color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])\",desc:S(\"scss.builtin.adjust-color\",\"Increases or decreases one or more components of a color.\")},{func:\"scale-color($color, [$red], [$green], [$blue], [$saturation], [$lightness], [$alpha])\",desc:S(\"scss.builtin.scale-color\",\"Fluidly scales one or more properties of a color.\")},{func:\"change-color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])\",desc:S(\"scss.builtin.change-color\",\"Changes one or more properties of a color.\")},{func:\"ie-hex-str($color)\",desc:S(\"scss.builtin.ie-hex-str\",\"Converts a color into the format understood by IE filters.\")}],e.selectorFuncs=[{func:\"selector-nest($selectors\\u2026)\",desc:S(\"scss.builtin.selector-nest\",\"Nests selector beneath one another like they would be nested in the stylesheet.\")},{func:\"selector-append($selectors\\u2026)\",desc:S(\"scss.builtin.selector-append\",\"Appends selectors to one another without spaces in between.\")},{func:\"selector-extend($selector, $extendee, $extender)\",desc:S(\"scss.builtin.selector-extend\",\"Extends $extendee with $extender within $selector.\")},{func:\"selector-replace($selector, $original, $replacement)\",desc:S(\"scss.builtin.selector-replace\",\"Replaces $original with $replacement within $selector.\")},{func:\"selector-unify($selector1, $selector2)\",desc:S(\"scss.builtin.selector-unify\",\"Unifies two selectors to produce a selector that matches elements matched by both.\")},{func:\"is-superselector($super, $sub)\",desc:S(\"scss.builtin.is-superselector\",\"Returns whether $super matches all the elements $sub does, and possibly more.\")},{func:\"simple-selectors($selector)\",desc:S(\"scss.builtin.simple-selectors\",\"Returns the simple selectors that comprise a compound selector.\")},{func:\"selector-parse($selector)\",desc:S(\"scss.builtin.selector-parse\",\"Parses a selector into the format returned by &.\")}],e.builtInFuncs=[{func:\"unquote($string)\",desc:S(\"scss.builtin.unquote\",\"Removes quotes from a string.\")},{func:\"quote($string)\",desc:S(\"scss.builtin.quote\",\"Adds quotes to a string.\")},{func:\"str-length($string)\",desc:S(\"scss.builtin.str-length\",\"Returns the number of characters in a string.\")},{func:\"str-insert($string, $insert, $index)\",desc:S(\"scss.builtin.str-insert\",\"Inserts $insert into $string at $index.\")},{func:\"str-index($string, $substring)\",desc:S(\"scss.builtin.str-index\",\"Returns the index of the first occurance of $substring in $string.\")},{func:\"str-slice($string, $start-at, [$end-at])\",desc:S(\"scss.builtin.str-slice\",\"Extracts a substring from $string.\")},{func:\"to-upper-case($string)\",desc:S(\"scss.builtin.to-upper-case\",\"Converts a string to upper case.\")},{func:\"to-lower-case($string)\",desc:S(\"scss.builtin.to-lower-case\",\"Converts a string to lower case.\")},{func:\"percentage($number)\",desc:S(\"scss.builtin.percentage\",\"Converts a unitless number to a percentage.\"),type:\"percentage\"},{func:\"round($number)\",desc:S(\"scss.builtin.round\",\"Rounds a number to the nearest whole number.\")},{func:\"ceil($number)\",desc:S(\"scss.builtin.ceil\",\"Rounds a number up to the next whole number.\")},{func:\"floor($number)\",desc:S(\"scss.builtin.floor\",\"Rounds a number down to the previous whole number.\")},{func:\"abs($number)\",desc:S(\"scss.builtin.abs\",\"Returns the absolute value of a number.\")},{func:\"min($numbers)\",desc:S(\"scss.builtin.min\",\"Finds the minimum of several numbers.\")},{func:\"max($numbers)\",desc:S(\"scss.builtin.max\",\"Finds the maximum of several numbers.\")},{func:\"random([$limit])\",desc:S(\"scss.builtin.random\",\"Returns a random number.\")},{func:\"length($list)\",desc:S(\"scss.builtin.length\",\"Returns the length of a list.\")},{func:\"nth($list, $n)\",desc:S(\"scss.builtin.nth\",\"Returns a specific item in a list.\")},{func:\"set-nth($list, $n, $value)\",desc:S(\"scss.builtin.set-nth\",\"Replaces the nth item in a list.\")},{func:\"join($list1, $list2, [$separator])\",desc:S(\"scss.builtin.join\",\"Joins together two lists into one.\")},{func:\"append($list1, $val, [$separator])\",desc:S(\"scss.builtin.append\",\"Appends a single value onto the end of a list.\")},{func:\"zip($lists)\",desc:S(\"scss.builtin.zip\",\"Combines several lists into a single multidimensional list.\")},{func:\"index($list, $value)\",desc:S(\"scss.builtin.index\",\"Returns the position of a value within a list.\")},{func:\"list-separator(#list)\",desc:S(\"scss.builtin.list-separator\",\"Returns the separator of a list.\")},{func:\"map-get($map, $key)\",desc:S(\"scss.builtin.map-get\",\"Returns the value in a map associated with a given key.\")},{func:\"map-merge($map1, $map2)\",desc:S(\"scss.builtin.map-merge\",\"Merges two maps together into a new map.\")},{func:\"map-remove($map, $keys)\",desc:S(\"scss.builtin.map-remove\",\"Returns a new map with keys removed.\")},{func:\"map-keys($map)\",desc:S(\"scss.builtin.map-keys\",\"Returns a list of all keys in a map.\")},{func:\"map-values($map)\",desc:S(\"scss.builtin.map-values\",\"Returns a list of all values in a map.\")},{func:\"map-has-key($map, $key)\",desc:S(\"scss.builtin.map-has-key\",\"Returns whether a map has a value associated with a given key.\")},{func:\"keywords($args)\",desc:S(\"scss.builtin.keywords\",\"Returns the keywords passed to a function that takes variable arguments.\")},{func:\"feature-exists($feature)\",desc:S(\"scss.builtin.feature-exists\",\"Returns whether a feature exists in the current Sass runtime.\")},{func:\"variable-exists($name)\",desc:S(\"scss.builtin.variable-exists\",\"Returns whether a variable with the given name exists in the current scope.\")},{func:\"global-variable-exists($name)\",desc:S(\"scss.builtin.global-variable-exists\",\"Returns whether a variable with the given name exists in the global scope.\")},{func:\"function-exists($name)\",desc:S(\"scss.builtin.function-exists\",\"Returns whether a function with the given name exists.\")},{func:\"mixin-exists($name)\",desc:S(\"scss.builtin.mixin-exists\",\"Returns whether a mixin with the given name exists.\")},{func:\"inspect($value)\",desc:S(\"scss.builtin.inspect\",\"Returns the string representation of a value as it would be represented in Sass.\")},{func:\"type-of($value)\",desc:S(\"scss.builtin.type-of\",\"Returns the type of a value.\")},{func:\"unit($number)\",desc:S(\"scss.builtin.unit\",\"Returns the unit(s) associated with a number.\")},{func:\"unitless($number)\",desc:S(\"scss.builtin.unitless\",\"Returns whether a number has units.\")},{func:\"comparable($number1, $number2)\",desc:S(\"scss.builtin.comparable\",\"Returns whether two numbers can be added, subtracted, or compared.\")},{func:\"call($name, $args\\u2026)\",desc:S(\"scss.builtin.call\",\"Dynamically calls a Sass function.\")}],e.scssAtDirectives=[{label:\"@extend\",documentation:S(\"scss.builtin.@extend\",\"Inherits the styles of another selector.\"),kind:R.Keyword},{label:\"@at-root\",documentation:S(\"scss.builtin.@at-root\",\"Causes one or more rules to be emitted at the root of the document.\"),kind:R.Keyword},{label:\"@debug\",documentation:S(\"scss.builtin.@debug\",\"Prints the value of an expression to the standard error output stream. Useful for debugging complicated Sass files.\"),kind:R.Keyword},{label:\"@warn\",documentation:S(\"scss.builtin.@warn\",\"Prints the value of an expression to the standard error output stream. Useful for libraries that need to warn users of deprecations or recovering from minor mixin usage mistakes. Warnings can be turned off with the `--quiet` command-line option or the `:quiet` Sass option.\"),kind:R.Keyword},{label:\"@error\",documentation:S(\"scss.builtin.@error\",\"Throws the value of an expression as a fatal error with stack trace. Useful for validating arguments to mixins and functions.\"),kind:R.Keyword},{label:\"@if\",documentation:S(\"scss.builtin.@if\",\"Includes the body if the expression does not evaluate to `false` or `null`.\"),insertText:`@if \\${1:expr} {\n\t$0\n}`,insertTextFormat:re.Snippet,kind:R.Keyword},{label:\"@for\",documentation:S(\"scss.builtin.@for\",\"For loop that repeatedly outputs a set of styles for each `$var` in the `from/through` or `from/to` clause.\"),insertText:\"@for \\\\$${1:var} from ${2:start} ${3|to,through|} ${4:end} {\\n\t$0\\n}\",insertTextFormat:re.Snippet,kind:R.Keyword},{label:\"@each\",documentation:S(\"scss.builtin.@each\",\"Each loop that sets `$var` to each item in the list or map, then outputs the styles it contains using that value of `$var`.\"),insertText:\"@each \\\\$${1:var} in ${2:list} {\\n\t$0\\n}\",insertTextFormat:re.Snippet,kind:R.Keyword},{label:\"@while\",documentation:S(\"scss.builtin.@while\",\"While loop that takes an expression and repeatedly outputs the nested styles until the statement evaluates to `false`.\"),insertText:`@while \\${1:condition} {\n\t$0\n}`,insertTextFormat:re.Snippet,kind:R.Keyword},{label:\"@mixin\",documentation:S(\"scss.builtin.@mixin\",\"Defines styles that can be re-used throughout the stylesheet with `@include`.\"),insertText:`@mixin \\${1:name} {\n\t$0\n}`,insertTextFormat:re.Snippet,kind:R.Keyword},{label:\"@include\",documentation:S(\"scss.builtin.@include\",\"Includes the styles defined by another mixin into the current rule.\"),kind:R.Keyword},{label:\"@function\",documentation:S(\"scss.builtin.@function\",\"Defines complex operations that can be re-used throughout stylesheets.\"),kind:R.Keyword}],e.scssModuleLoaders=[{label:\"@use\",documentation:S(\"scss.builtin.@use\",\"Loads mixins, functions, and variables from other Sass stylesheets as 'modules', and combines CSS from multiple stylesheets together.\"),references:[{name:\"Sass documentation\",url:\"https://sass-lang.com/documentation/at-rules/use\"}],insertText:\"@use $0;\",insertTextFormat:re.Snippet,kind:R.Keyword},{label:\"@forward\",documentation:S(\"scss.builtin.@forward\",\"Loads a Sass stylesheet and makes its mixins, functions, and variables available when this stylesheet is loaded with the @use rule.\"),references:[{name:\"Sass documentation\",url:\"https://sass-lang.com/documentation/at-rules/forward\"}],insertText:\"@forward $0;\",insertTextFormat:re.Snippet,kind:R.Keyword}],e.scssModuleBuiltIns=[{label:\"sass:math\",documentation:S(\"scss.builtin.sass:math\",\"Provides functions that operate on numbers.\"),references:[{name:\"Sass documentation\",url:\"https://sass-lang.com/documentation/modules/math\"}]},{label:\"sass:string\",documentation:S(\"scss.builtin.sass:string\",\"Makes it easy to combine, search, or split apart strings.\"),references:[{name:\"Sass documentation\",url:\"https://sass-lang.com/documentation/modules/string\"}]},{label:\"sass:color\",documentation:S(\"scss.builtin.sass:color\",\"Generates new colors based on existing ones, making it easy to build color themes.\"),references:[{name:\"Sass documentation\",url:\"https://sass-lang.com/documentation/modules/color\"}]},{label:\"sass:list\",documentation:S(\"scss.builtin.sass:list\",\"Lets you access and modify values in lists.\"),references:[{name:\"Sass documentation\",url:\"https://sass-lang.com/documentation/modules/list\"}]},{label:\"sass:map\",documentation:S(\"scss.builtin.sass:map\",\"Makes it possible to look up the value associated with a key in a map, and much more.\"),references:[{name:\"Sass documentation\",url:\"https://sass-lang.com/documentation/modules/map\"}]},{label:\"sass:selector\",documentation:S(\"scss.builtin.sass:selector\",\"Provides access to Sass\\u2019s powerful selector engine.\"),references:[{name:\"Sass documentation\",url:\"https://sass-lang.com/documentation/modules/selector\"}]},{label:\"sass:meta\",documentation:S(\"scss.builtin.sass:meta\",\"Exposes the details of Sass\\u2019s inner workings.\"),references:[{name:\"Sass documentation\",url:\"https://sass-lang.com/documentation/modules/meta\"}]}],e}(yt);function qo(n){n.forEach(function(e){if(e.documentation&&e.references&&e.references.length>0){var t=typeof e.documentation==\"string\"?{kind:\"markdown\",value:e.documentation}:{kind:\"markdown\",value:e.documentation.value};t.value+=`\n\n`,t.value+=e.references.map(function(r){return\"[\".concat(r.name,\"](\").concat(r.url,\")\")}).join(\" | \"),e.documentation=t}})}var Oa=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!=\"function\"&&t!==null)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),Go=\"/\".charCodeAt(0),Wa=`\n`.charCodeAt(0),La=\"\\r\".charCodeAt(0),Ua=\"\\f\".charCodeAt(0),jr=\"`\".charCodeAt(0),Vr=\".\".charCodeAt(0),ja=d.CustomToken,Wn=ja++,Ln=function(n){Oa(e,n);function e(){return n!==null&&n.apply(this,arguments)||this}return e.prototype.scanNext=function(t){var r=this.escapedJavaScript();return r!==null?this.finishToken(t,r):this.stream.advanceIfChars([Vr,Vr,Vr])?this.finishToken(t,Wn):n.prototype.scanNext.call(this,t)},e.prototype.comment=function(){return n.prototype.comment.call(this)?!0:!this.inURL&&this.stream.advanceIfChars([Go,Go])?(this.stream.advanceWhileChar(function(t){switch(t){case Wa:case La:case Ua:return!1;default:return!0}}),!0):!1},e.prototype.escapedJavaScript=function(){var t=this.stream.peekChar();return t===jr?(this.stream.advance(1),this.stream.advanceWhileChar(function(r){return r!==jr}),this.stream.advanceIfChar(jr)?d.EscapedJavaScript:d.BadEscapedJavaScript):null},e}(Fe);var Ba=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!=\"function\"&&t!==null)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),Ho=function(n){Ba(e,n);function e(){return n.call(this,new Ln)||this}return e.prototype._parseStylesheetStatement=function(t){return t===void 0&&(t=!1),this.peek(d.AtKeyword)?this._parseVariableDeclaration()||this._parsePlugin()||n.prototype._parseStylesheetAtStatement.call(this,t):this._tryParseMixinDeclaration()||this._tryParseMixinReference()||this._parseFunction()||this._parseRuleset(!0)},e.prototype._parseImport=function(){if(!this.peekKeyword(\"@import\")&&!this.peekKeyword(\"@import-once\"))return null;var t=this.create(ht);if(this.consumeToken(),this.accept(d.ParenthesisL)){if(!this.accept(d.Ident))return this.finish(t,f.IdentifierExpected,[d.SemiColon]);do if(!this.accept(d.Comma))break;while(this.accept(d.Ident));if(!this.accept(d.ParenthesisR))return this.finish(t,f.RightParenthesisExpected,[d.SemiColon])}return!t.addChild(this._parseURILiteral())&&!t.addChild(this._parseStringLiteral())?this.finish(t,f.URIOrStringExpected,[d.SemiColon]):(!this.peek(d.SemiColon)&&!this.peek(d.EOF)&&t.setMedialist(this._parseMediaQueryList()),this.finish(t))},e.prototype._parsePlugin=function(){if(!this.peekKeyword(\"@plugin\"))return null;var t=this.createNode(u.Plugin);return this.consumeToken(),t.addChild(this._parseStringLiteral())?this.accept(d.SemiColon)?this.finish(t):this.finish(t,f.SemiColonExpected):this.finish(t,f.StringLiteralExpected)},e.prototype._parseMediaQuery=function(){var t=n.prototype._parseMediaQuery.call(this);if(!t){var r=this.create(pn);return r.addChild(this._parseVariable())?this.finish(r):null}return t},e.prototype._parseMediaDeclaration=function(t){return t===void 0&&(t=!1),this._tryParseRuleset(t)||this._tryToParseDeclaration()||this._tryParseMixinDeclaration()||this._tryParseMixinReference()||this._parseDetachedRuleSetMixin()||this._parseStylesheetStatement(t)},e.prototype._parseMediaFeatureName=function(){return this._parseIdent()||this._parseVariable()},e.prototype._parseVariableDeclaration=function(t){t===void 0&&(t=[]);var r=this.create($e),i=this.mark();if(!r.setVariable(this._parseVariable(!0)))return null;if(this.accept(d.Colon)){if(this.prevToken&&(r.colonPosition=this.prevToken.offset),r.setValue(this._parseDetachedRuleSet()))r.needsSemicolon=!1;else if(!r.setValue(this._parseExpr()))return this.finish(r,f.VariableValueExpected,[],t);r.addChild(this._parsePrio())}else return this.restoreAtMark(i),null;return this.peek(d.SemiColon)&&(r.semicolonPosition=this.token.offset),this.finish(r)},e.prototype._parseDetachedRuleSet=function(){var t=this.mark();if(this.peekDelim(\"#\")||this.peekDelim(\".\"))if(this.consumeToken(),!this.hasWhitespace()&&this.accept(d.ParenthesisL)){var r=this.create(Ae);if(r.getParameters().addChild(this._parseMixinParameter()))for(;(this.accept(d.Comma)||this.accept(d.SemiColon))&&!this.peek(d.ParenthesisR);)r.getParameters().addChild(this._parseMixinParameter())||this.markError(r,f.IdentifierExpected,[],[d.ParenthesisR]);if(!this.accept(d.ParenthesisR))return this.restoreAtMark(t),null}else return this.restoreAtMark(t),null;if(!this.peek(d.CurlyL))return null;var i=this.create(K);return this._parseBody(i,this._parseDetachedRuleSetBody.bind(this)),this.finish(i)},e.prototype._parseDetachedRuleSetBody=function(){return this._tryParseKeyframeSelector()||this._parseRuleSetDeclaration()},e.prototype._addLookupChildren=function(t){if(!t.addChild(this._parseLookupValue()))return!1;for(var r=!1;this.peek(d.BracketL)&&(r=!0),!!t.addChild(this._parseLookupValue());)r=!1;return!r},e.prototype._parseLookupValue=function(){var t=this.create(F),r=this.mark();return this.accept(d.BracketL)?(t.addChild(this._parseVariable(!1,!0))||t.addChild(this._parsePropertyIdentifier()))&&this.accept(d.BracketR)||this.accept(d.BracketR)?t:(this.restoreAtMark(r),null):(this.restoreAtMark(r),null)},e.prototype._parseVariable=function(t,r){t===void 0&&(t=!1),r===void 0&&(r=!1);var i=!t&&this.peekDelim(\"$\");if(!this.peekDelim(\"@\")&&!i&&!this.peek(d.AtKeyword))return null;for(var o=this.create(ut),s=this.mark();this.acceptDelim(\"@\")||!t&&this.acceptDelim(\"$\");)if(this.hasWhitespace())return this.restoreAtMark(s),null;return!this.accept(d.AtKeyword)&&!this.accept(d.Ident)?(this.restoreAtMark(s),null):!r&&this.peek(d.BracketL)&&!this._addLookupChildren(o)?(this.restoreAtMark(s),null):o},e.prototype._parseTermExpression=function(){return this._parseVariable()||this._parseEscaped()||n.prototype._parseTermExpression.call(this)||this._tryParseMixinReference(!1)},e.prototype._parseEscaped=function(){if(this.peek(d.EscapedJavaScript)||this.peek(d.BadEscapedJavaScript)){var t=this.createNode(u.EscapedValue);return this.consumeToken(),this.finish(t)}if(this.peekDelim(\"~\")){var t=this.createNode(u.EscapedValue);return this.consumeToken(),this.accept(d.String)||this.accept(d.EscapedJavaScript)?this.finish(t):this.finish(t,f.TermExpected)}return null},e.prototype._parseOperator=function(){var t=this._parseGuardOperator();return t||n.prototype._parseOperator.call(this)},e.prototype._parseGuardOperator=function(){if(this.peekDelim(\">\")){var t=this.createNode(u.Operator);return this.consumeToken(),this.acceptDelim(\"=\"),t}else if(this.peekDelim(\"=\")){var t=this.createNode(u.Operator);return this.consumeToken(),this.acceptDelim(\"<\"),t}else if(this.peekDelim(\"<\")){var t=this.createNode(u.Operator);return this.consumeToken(),this.acceptDelim(\"=\"),t}return null},e.prototype._parseRuleSetDeclaration=function(){return this.peek(d.AtKeyword)?this._parseKeyframe()||this._parseMedia(!0)||this._parseImport()||this._parseSupports(!0)||this._parseDetachedRuleSetMixin()||this._parseVariableDeclaration()||n.prototype._parseRuleSetDeclarationAtStatement.call(this):this._tryParseMixinDeclaration()||this._tryParseRuleset(!0)||this._tryParseMixinReference()||this._parseFunction()||this._parseExtend()||n.prototype._parseRuleSetDeclaration.call(this)},e.prototype._parseKeyframeIdent=function(){return this._parseIdent([A.Keyframe])||this._parseVariable()},e.prototype._parseKeyframeSelector=function(){return this._parseDetachedRuleSetMixin()||n.prototype._parseKeyframeSelector.call(this)},e.prototype._parseSimpleSelectorBody=function(){return this._parseSelectorCombinator()||n.prototype._parseSimpleSelectorBody.call(this)},e.prototype._parseSelector=function(t){var r=this.create(Ee),i=!1;for(t&&(i=r.addChild(this._parseCombinator()));r.addChild(this._parseSimpleSelector());){i=!0;var o=this.mark();if(r.addChild(this._parseGuard())&&this.peek(d.CurlyL))break;this.restoreAtMark(o),r.addChild(this._parseCombinator())}return i?this.finish(r):null},e.prototype._parseSelectorCombinator=function(){if(this.peekDelim(\"&\")){var t=this.createNode(u.SelectorCombinator);for(this.consumeToken();!this.hasWhitespace()&&(this.acceptDelim(\"-\")||this.accept(d.Num)||this.accept(d.Dimension)||t.addChild(this._parseIdent())||this.acceptDelim(\"&\")););return this.finish(t)}return null},e.prototype._parseSelectorIdent=function(){if(!this.peekInterpolatedIdent())return null;var t=this.createNode(u.SelectorInterpolation),r=this._acceptInterpolatedIdent(t);return r?this.finish(t):null},e.prototype._parsePropertyIdentifier=function(t){t===void 0&&(t=!1);var r=/^[\\w-]+/;if(!this.peekInterpolatedIdent()&&!this.peekRegExp(this.token.type,r))return null;var i=this.mark(),o=this.create(te);o.isCustomProperty=this.acceptDelim(\"-\")&&this.acceptDelim(\"-\");var s=!1;return t?o.isCustomProperty?s=o.addChild(this._parseIdent()):s=o.addChild(this._parseRegexp(r)):o.isCustomProperty?s=this._acceptInterpolatedIdent(o):s=this._acceptInterpolatedIdent(o,r),s?(!t&&!this.hasWhitespace()&&(this.acceptDelim(\"+\"),this.hasWhitespace()||this.acceptIdent(\"_\")),this.finish(o)):(this.restoreAtMark(i),null)},e.prototype.peekInterpolatedIdent=function(){return this.peek(d.Ident)||this.peekDelim(\"@\")||this.peekDelim(\"$\")||this.peekDelim(\"-\")},e.prototype._acceptInterpolatedIdent=function(t,r){for(var i=this,o=!1,s=function(){var l=i.mark();return i.acceptDelim(\"-\")&&(i.hasWhitespace()||i.acceptDelim(\"-\"),i.hasWhitespace())?(i.restoreAtMark(l),null):i._parseInterpolation()},a=r?function(){return i.acceptRegexp(r)}:function(){return i.accept(d.Ident)};(a()||t.addChild(this._parseInterpolation()||this.try(s)))&&(o=!0,!this.hasWhitespace()););return o},e.prototype._parseInterpolation=function(){var t=this.mark();if(this.peekDelim(\"@\")||this.peekDelim(\"$\")){var r=this.createNode(u.Interpolation);return this.consumeToken(),this.hasWhitespace()||!this.accept(d.CurlyL)?(this.restoreAtMark(t),null):r.addChild(this._parseIdent())?this.accept(d.CurlyR)?this.finish(r):this.finish(r,f.RightCurlyExpected):this.finish(r,f.IdentifierExpected)}return null},e.prototype._tryParseMixinDeclaration=function(){var t=this.mark(),r=this.create(Ae);if(!r.setIdentifier(this._parseMixinDeclarationIdentifier())||!this.accept(d.ParenthesisL))return this.restoreAtMark(t),null;if(r.getParameters().addChild(this._parseMixinParameter()))for(;(this.accept(d.Comma)||this.accept(d.SemiColon))&&!this.peek(d.ParenthesisR);)r.getParameters().addChild(this._parseMixinParameter())||this.markError(r,f.IdentifierExpected,[],[d.ParenthesisR]);return this.accept(d.ParenthesisR)?(r.setGuard(this._parseGuard()),this.peek(d.CurlyL)?this._parseBody(r,this._parseMixInBodyDeclaration.bind(this)):(this.restoreAtMark(t),null)):(this.restoreAtMark(t),null)},e.prototype._parseMixInBodyDeclaration=function(){return this._parseFontFace()||this._parseRuleSetDeclaration()},e.prototype._parseMixinDeclarationIdentifier=function(){var t;if(this.peekDelim(\"#\")||this.peekDelim(\".\")){if(t=this.create(te),this.consumeToken(),this.hasWhitespace()||!t.addChild(this._parseIdent()))return null}else if(this.peek(d.Hash))t=this.create(te),this.consumeToken();else return null;return t.referenceTypes=[A.Mixin],this.finish(t)},e.prototype._parsePseudo=function(){if(!this.peek(d.Colon))return null;var t=this.mark(),r=this.create(qe);return this.consumeToken(),this.acceptIdent(\"extend\")?this._completeExtends(r):(this.restoreAtMark(t),n.prototype._parsePseudo.call(this))},e.prototype._parseExtend=function(){if(!this.peekDelim(\"&\"))return null;var t=this.mark(),r=this.create(qe);return this.consumeToken(),this.hasWhitespace()||!this.accept(d.Colon)||!this.acceptIdent(\"extend\")?(this.restoreAtMark(t),null):this._completeExtends(r)},e.prototype._completeExtends=function(t){if(!this.accept(d.ParenthesisL))return this.finish(t,f.LeftParenthesisExpected);var r=t.getSelectors();if(!r.addChild(this._parseSelector(!0)))return this.finish(t,f.SelectorExpected);for(;this.accept(d.Comma);)if(!r.addChild(this._parseSelector(!0)))return this.finish(t,f.SelectorExpected);return this.accept(d.ParenthesisR)?this.finish(t):this.finish(t,f.RightParenthesisExpected)},e.prototype._parseDetachedRuleSetMixin=function(){if(!this.peek(d.AtKeyword))return null;var t=this.mark(),r=this.create(et);return r.addChild(this._parseVariable(!0))&&(this.hasWhitespace()||!this.accept(d.ParenthesisL))?(this.restoreAtMark(t),null):this.accept(d.ParenthesisR)?this.finish(r):this.finish(r,f.RightParenthesisExpected)},e.prototype._tryParseMixinReference=function(t){t===void 0&&(t=!0);for(var r=this.mark(),i=this.create(et),o=this._parseMixinDeclarationIdentifier();o;){this.acceptDelim(\">\");var s=this._parseMixinDeclarationIdentifier();if(s)i.getNamespaces().addChild(o),o=s;else break}if(!i.setIdentifier(o))return this.restoreAtMark(r),null;var a=!1;if(this.accept(d.ParenthesisL)){if(a=!0,i.getArguments().addChild(this._parseMixinArgument())){for(;(this.accept(d.Comma)||this.accept(d.SemiColon))&&!this.peek(d.ParenthesisR);)if(!i.getArguments().addChild(this._parseMixinArgument()))return this.finish(i,f.ExpressionExpected)}if(!this.accept(d.ParenthesisR))return this.finish(i,f.RightParenthesisExpected);o.referenceTypes=[A.Mixin]}else o.referenceTypes=[A.Mixin,A.Rule];return this.peek(d.BracketL)?t||this._addLookupChildren(i):i.addChild(this._parsePrio()),!a&&!this.peek(d.SemiColon)&&!this.peek(d.CurlyR)&&!this.peek(d.EOF)?(this.restoreAtMark(r),null):this.finish(i)},e.prototype._parseMixinArgument=function(){var t=this.create(we),r=this.mark(),i=this._parseVariable();return i&&(this.accept(d.Colon)?t.setIdentifier(i):this.restoreAtMark(r)),t.setValue(this._parseDetachedRuleSet()||this._parseExpr(!0))?this.finish(t):(this.restoreAtMark(r),null)},e.prototype._parseMixinParameter=function(){var t=this.create(Be);if(this.peekKeyword(\"@rest\")){var r=this.create(F);return this.consumeToken(),this.accept(Wn)?(t.setIdentifier(this.finish(r)),this.finish(t)):this.finish(t,f.DotExpected,[],[d.Comma,d.ParenthesisR])}if(this.peek(Wn)){var i=this.create(F);return this.consumeToken(),t.setIdentifier(this.finish(i)),this.finish(t)}var o=!1;return t.setIdentifier(this._parseVariable())&&(this.accept(d.Colon),o=!0),!t.setDefaultValue(this._parseDetachedRuleSet()||this._parseExpr(!0))&&!o?null:this.finish(t)},e.prototype._parseGuard=function(){if(!this.peekIdent(\"when\"))return null;var t=this.create(Pi);if(this.consumeToken(),t.isNegated=this.acceptIdent(\"not\"),!t.getConditions().addChild(this._parseGuardCondition()))return this.finish(t,f.ConditionExpected);for(;this.acceptIdent(\"and\")||this.accept(d.Comma);)if(!t.getConditions().addChild(this._parseGuardCondition()))return this.finish(t,f.ConditionExpected);return this.finish(t)},e.prototype._parseGuardCondition=function(){if(!this.peek(d.ParenthesisL))return null;var t=this.create(Ai);return this.consumeToken(),t.addChild(this._parseExpr()),this.accept(d.ParenthesisR)?this.finish(t):this.finish(t,f.RightParenthesisExpected)},e.prototype._parseFunction=function(){var t=this.mark(),r=this.create(Pe);if(!r.setIdentifier(this._parseFunctionIdentifier()))return null;if(this.hasWhitespace()||!this.accept(d.ParenthesisL))return this.restoreAtMark(t),null;if(r.getArguments().addChild(this._parseMixinArgument())){for(;(this.accept(d.Comma)||this.accept(d.SemiColon))&&!this.peek(d.ParenthesisR);)if(!r.getArguments().addChild(this._parseMixinArgument()))return this.finish(r,f.ExpressionExpected)}return this.accept(d.ParenthesisR)?this.finish(r):this.finish(r,f.RightParenthesisExpected)},e.prototype._parseFunctionIdentifier=function(){if(this.peekDelim(\"%\")){var t=this.create(te);return t.referenceTypes=[A.Function],this.consumeToken(),this.finish(t)}return n.prototype._parseFunctionIdentifier.call(this)},e.prototype._parseURLArgument=function(){var t=this.mark(),r=n.prototype._parseURLArgument.call(this);if(!r||!this.peek(d.ParenthesisR)){this.restoreAtMark(t);var i=this.create(F);return i.addChild(this._parseBinaryExpr()),this.finish(i)}return r},e}(bt);var $a=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!=\"function\"&&t!==null)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),I=H(),Jo=function(n){$a(e,n);function e(t,r){return n.call(this,\"@\",t,r)||this}return e.prototype.createFunctionProposals=function(t,r,i,o){for(var s=0,a=t;s<a.length;s++){var l=a[s],c={label:l.name,detail:l.example,documentation:l.description,textEdit:T.replace(this.getCompletionRange(r),l.name+\"($0)\"),insertTextFormat:re.Snippet,kind:R.Function};i&&(c.sortText=\"z\"),o.items.push(c)}return o},e.prototype.getTermProposals=function(t,r,i){var o=e.builtInProposals;return t&&(o=o.filter(function(s){return!s.type||!t.restrictions||t.restrictions.indexOf(s.type)!==-1})),this.createFunctionProposals(o,r,!0,i),n.prototype.getTermProposals.call(this,t,r,i)},e.prototype.getColorProposals=function(t,r,i){return this.createFunctionProposals(e.colorProposals,r,!1,i),n.prototype.getColorProposals.call(this,t,r,i)},e.prototype.getCompletionsForDeclarationProperty=function(t,r){return this.getCompletionsForSelector(null,!0,r),n.prototype.getCompletionsForDeclarationProperty.call(this,t,r)},e.builtInProposals=[{name:\"if\",example:\"if(condition, trueValue [, falseValue]);\",description:I(\"less.builtin.if\",\"returns one of two values depending on a condition.\")},{name:\"boolean\",example:\"boolean(condition);\",description:I(\"less.builtin.boolean\",'\"store\" a boolean test for later evaluation in a guard or if().')},{name:\"length\",example:\"length(@list);\",description:I(\"less.builtin.length\",\"returns the number of elements in a value list\")},{name:\"extract\",example:\"extract(@list, index);\",description:I(\"less.builtin.extract\",\"returns a value at the specified position in the list\")},{name:\"range\",example:\"range([start, ] end [, step]);\",description:I(\"less.builtin.range\",\"generate a list spanning a range of values\")},{name:\"each\",example:\"each(@list, ruleset);\",description:I(\"less.builtin.each\",\"bind the evaluation of a ruleset to each member of a list.\")},{name:\"escape\",example:\"escape(@string);\",description:I(\"less.builtin.escape\",\"URL encodes a string\")},{name:\"e\",example:\"e(@string);\",description:I(\"less.builtin.e\",\"escape string content\")},{name:\"replace\",example:\"replace(@string, @pattern, @replacement[, @flags]);\",description:I(\"less.builtin.replace\",\"string replace\")},{name:\"unit\",example:\"unit(@dimension, [@unit: '']);\",description:I(\"less.builtin.unit\",\"remove or change the unit of a dimension\")},{name:\"color\",example:\"color(@string);\",description:I(\"less.builtin.color\",\"parses a string to a color\"),type:\"color\"},{name:\"convert\",example:\"convert(@value, unit);\",description:I(\"less.builtin.convert\",\"converts numbers from one type into another\")},{name:\"data-uri\",example:\"data-uri([mimetype,] url);\",description:I(\"less.builtin.data-uri\",\"inlines a resource and falls back to `url()`\"),type:\"url\"},{name:\"abs\",description:I(\"less.builtin.abs\",\"absolute value of a number\"),example:\"abs(number);\"},{name:\"acos\",description:I(\"less.builtin.acos\",\"arccosine - inverse of cosine function\"),example:\"acos(number);\"},{name:\"asin\",description:I(\"less.builtin.asin\",\"arcsine - inverse of sine function\"),example:\"asin(number);\"},{name:\"ceil\",example:\"ceil(@number);\",description:I(\"less.builtin.ceil\",\"rounds up to an integer\")},{name:\"cos\",description:I(\"less.builtin.cos\",\"cosine function\"),example:\"cos(number);\"},{name:\"floor\",description:I(\"less.builtin.floor\",\"rounds down to an integer\"),example:\"floor(@number);\"},{name:\"percentage\",description:I(\"less.builtin.percentage\",\"converts to a %, e.g. 0.5 > 50%\"),example:\"percentage(@number);\",type:\"percentage\"},{name:\"round\",description:I(\"less.builtin.round\",\"rounds a number to a number of places\"),example:\"round(number, [places: 0]);\"},{name:\"sqrt\",description:I(\"less.builtin.sqrt\",\"calculates square root of a number\"),example:\"sqrt(number);\"},{name:\"sin\",description:I(\"less.builtin.sin\",\"sine function\"),example:\"sin(number);\"},{name:\"tan\",description:I(\"less.builtin.tan\",\"tangent function\"),example:\"tan(number);\"},{name:\"atan\",description:I(\"less.builtin.atan\",\"arctangent - inverse of tangent function\"),example:\"atan(number);\"},{name:\"pi\",description:I(\"less.builtin.pi\",\"returns pi\"),example:\"pi();\"},{name:\"pow\",description:I(\"less.builtin.pow\",\"first argument raised to the power of the second argument\"),example:\"pow(@base, @exponent);\"},{name:\"mod\",description:I(\"less.builtin.mod\",\"first argument modulus second argument\"),example:\"mod(number, number);\"},{name:\"min\",description:I(\"less.builtin.min\",\"returns the lowest of one or more values\"),example:\"min(@x, @y);\"},{name:\"max\",description:I(\"less.builtin.max\",\"returns the lowest of one or more values\"),example:\"max(@x, @y);\"}],e.colorProposals=[{name:\"argb\",example:\"argb(@color);\",description:I(\"less.builtin.argb\",\"creates a #AARRGGBB\")},{name:\"hsl\",example:\"hsl(@hue, @saturation, @lightness);\",description:I(\"less.builtin.hsl\",\"creates a color\")},{name:\"hsla\",example:\"hsla(@hue, @saturation, @lightness, @alpha);\",description:I(\"less.builtin.hsla\",\"creates a color\")},{name:\"hsv\",example:\"hsv(@hue, @saturation, @value);\",description:I(\"less.builtin.hsv\",\"creates a color\")},{name:\"hsva\",example:\"hsva(@hue, @saturation, @value, @alpha);\",description:I(\"less.builtin.hsva\",\"creates a color\")},{name:\"hue\",example:\"hue(@color);\",description:I(\"less.builtin.hue\",\"returns the `hue` channel of `@color` in the HSL space\")},{name:\"saturation\",example:\"saturation(@color);\",description:I(\"less.builtin.saturation\",\"returns the `saturation` channel of `@color` in the HSL space\")},{name:\"lightness\",example:\"lightness(@color);\",description:I(\"less.builtin.lightness\",\"returns the `lightness` channel of `@color` in the HSL space\")},{name:\"hsvhue\",example:\"hsvhue(@color);\",description:I(\"less.builtin.hsvhue\",\"returns the `hue` channel of `@color` in the HSV space\")},{name:\"hsvsaturation\",example:\"hsvsaturation(@color);\",description:I(\"less.builtin.hsvsaturation\",\"returns the `saturation` channel of `@color` in the HSV space\")},{name:\"hsvvalue\",example:\"hsvvalue(@color);\",description:I(\"less.builtin.hsvvalue\",\"returns the `value` channel of `@color` in the HSV space\")},{name:\"red\",example:\"red(@color);\",description:I(\"less.builtin.red\",\"returns the `red` channel of `@color`\")},{name:\"green\",example:\"green(@color);\",description:I(\"less.builtin.green\",\"returns the `green` channel of `@color`\")},{name:\"blue\",example:\"blue(@color);\",description:I(\"less.builtin.blue\",\"returns the `blue` channel of `@color`\")},{name:\"alpha\",example:\"alpha(@color);\",description:I(\"less.builtin.alpha\",\"returns the `alpha` channel of `@color`\")},{name:\"luma\",example:\"luma(@color);\",description:I(\"less.builtin.luma\",\"returns the `luma` value (perceptual brightness) of `@color`\")},{name:\"saturate\",example:\"saturate(@color, 10%);\",description:I(\"less.builtin.saturate\",\"return `@color` 10% points more saturated\")},{name:\"desaturate\",example:\"desaturate(@color, 10%);\",description:I(\"less.builtin.desaturate\",\"return `@color` 10% points less saturated\")},{name:\"lighten\",example:\"lighten(@color, 10%);\",description:I(\"less.builtin.lighten\",\"return `@color` 10% points lighter\")},{name:\"darken\",example:\"darken(@color, 10%);\",description:I(\"less.builtin.darken\",\"return `@color` 10% points darker\")},{name:\"fadein\",example:\"fadein(@color, 10%);\",description:I(\"less.builtin.fadein\",\"return `@color` 10% points less transparent\")},{name:\"fadeout\",example:\"fadeout(@color, 10%);\",description:I(\"less.builtin.fadeout\",\"return `@color` 10% points more transparent\")},{name:\"fade\",example:\"fade(@color, 50%);\",description:I(\"less.builtin.fade\",\"return `@color` with 50% transparency\")},{name:\"spin\",example:\"spin(@color, 10);\",description:I(\"less.builtin.spin\",\"return `@color` with a 10 degree larger in hue\")},{name:\"mix\",example:\"mix(@color1, @color2, [@weight: 50%]);\",description:I(\"less.builtin.mix\",\"return a mix of `@color1` and `@color2`\")},{name:\"greyscale\",example:\"greyscale(@color);\",description:I(\"less.builtin.greyscale\",\"returns a grey, 100% desaturated color\")},{name:\"contrast\",example:\"contrast(@color1, [@darkcolor: black], [@lightcolor: white], [@threshold: 43%]);\",description:I(\"less.builtin.contrast\",\"return `@darkcolor` if `@color1 is> 43% luma` otherwise return `@lightcolor`, see notes\")},{name:\"multiply\",example:\"multiply(@color1, @color2);\"},{name:\"screen\",example:\"screen(@color1, @color2);\"},{name:\"overlay\",example:\"overlay(@color1, @color2);\"},{name:\"softlight\",example:\"softlight(@color1, @color2);\"},{name:\"hardlight\",example:\"hardlight(@color1, @color2);\"},{name:\"difference\",example:\"difference(@color1, @color2);\"},{name:\"exclusion\",example:\"exclusion(@color1, @color2);\"},{name:\"average\",example:\"average(@color1, @color2);\"},{name:\"negation\",example:\"negation(@color1, @color2);\"}],e}(yt);function Yo(n,e){var t=qa(n);return Ka(t,e)}function qa(n){function e(p){return n.positionAt(p.offset).line}function t(p){return n.positionAt(p.offset+p.len).line}function r(){switch(n.languageId){case\"scss\":return new Nn;case\"less\":return new Ln;default:return new Fe}}function i(p,m){var g=e(p),w=t(p);return g!==w?{startLine:g,endLine:w,kind:m}:null}var o=[],s=[],a=r();a.ignoreComment=!1,a.setSource(n.getText());for(var l=a.scan(),c=null,h=function(){switch(l.type){case d.CurlyL:case St:{s.push({line:e(l),type:\"brace\",isStart:!0});break}case d.CurlyR:{if(s.length!==0){var p=Xo(s,\"brace\");if(!p)break;var m=t(l);p.type===\"brace\"&&(c&&t(c)!==m&&m--,p.line!==m&&o.push({startLine:p.line,endLine:m,kind:void 0}))}break}case d.Comment:{var g=function(D){return D===\"#region\"?{line:e(l),type:\"comment\",isStart:!0}:{line:t(l),type:\"comment\",isStart:!1}},w=function(D){var M=D.text.match(/^\\s*\\/\\*\\s*(#region|#endregion)\\b\\s*(.*?)\\s*\\*\\//);if(M)return g(M[1]);if(n.languageId===\"scss\"||n.languageId===\"less\"){var z=D.text.match(/^\\s*\\/\\/\\s*(#region|#endregion)\\b\\s*(.*?)\\s*/);if(z)return g(z[1])}return null},x=w(l);if(x)if(x.isStart)s.push(x);else{var p=Xo(s,\"comment\");if(!p)break;p.type===\"comment\"&&p.line!==x.line&&o.push({startLine:p.line,endLine:x.line,kind:\"region\"})}else{var y=i(l,\"comment\");y&&o.push(y)}break}}c=l,l=a.scan()};l.type!==d.EOF;)h();return o}function Xo(n,e){if(n.length===0)return null;for(var t=n.length-1;t>=0;t--)if(n[t].type===e&&n[t].isStart)return n.splice(t,1)[0];return null}function Ka(n,e){var t=e&&e.rangeLimit||Number.MAX_VALUE,r=n.sort(function(s,a){var l=s.startLine-a.startLine;return l===0&&(l=s.endLine-a.endLine),l}),i=[],o=-1;return r.forEach(function(s){s.startLine<o&&o<s.endLine||(i.push(s),o=s.endLine)}),i.length<t?i:i.slice(0,t)}var Qo;(function(){\"use strict\";var n=[,,function(i){function o(l){this.__parent=l,this.__character_count=0,this.__indent_count=-1,this.__alignment_count=0,this.__wrap_point_index=0,this.__wrap_point_character_count=0,this.__wrap_point_indent_count=-1,this.__wrap_point_alignment_count=0,this.__items=[]}o.prototype.clone_empty=function(){var l=new o(this.__parent);return l.set_indent(this.__indent_count,this.__alignment_count),l},o.prototype.item=function(l){return l<0?this.__items[this.__items.length+l]:this.__items[l]},o.prototype.has_match=function(l){for(var c=this.__items.length-1;c>=0;c--)if(this.__items[c].match(l))return!0;return!1},o.prototype.set_indent=function(l,c){this.is_empty()&&(this.__indent_count=l||0,this.__alignment_count=c||0,this.__character_count=this.__parent.get_indent_size(this.__indent_count,this.__alignment_count))},o.prototype._set_wrap_point=function(){this.__parent.wrap_line_length&&(this.__wrap_point_index=this.__items.length,this.__wrap_point_character_count=this.__character_count,this.__wrap_point_indent_count=this.__parent.next_line.__indent_count,this.__wrap_point_alignment_count=this.__parent.next_line.__alignment_count)},o.prototype._should_wrap=function(){return this.__wrap_point_index&&this.__character_count>this.__parent.wrap_line_length&&this.__wrap_point_character_count>this.__parent.next_line.__character_count},o.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var l=this.__parent.current_line;return l.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),l.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),l.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count,l.__items[0]===\" \"&&(l.__items.splice(0,1),l.__character_count-=1),!0}return!1},o.prototype.is_empty=function(){return this.__items.length===0},o.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},o.prototype.push=function(l){this.__items.push(l);var c=l.lastIndexOf(`\n`);c!==-1?this.__character_count=l.length-c:this.__character_count+=l.length},o.prototype.pop=function(){var l=null;return this.is_empty()||(l=this.__items.pop(),this.__character_count-=l.length),l},o.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},o.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},o.prototype.trim=function(){for(;this.last()===\" \";)this.__items.pop(),this.__character_count-=1},o.prototype.toString=function(){var l=\"\";return this.is_empty()?this.__parent.indent_empty_lines&&(l=this.__parent.get_indent_string(this.__indent_count)):(l=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),l+=this.__items.join(\"\")),l};function s(l,c){this.__cache=[\"\"],this.__indent_size=l.indent_size,this.__indent_string=l.indent_char,l.indent_with_tabs||(this.__indent_string=new Array(l.indent_size+1).join(l.indent_char)),c=c||\"\",l.indent_level>0&&(c=new Array(l.indent_level+1).join(this.__indent_string)),this.__base_string=c,this.__base_string_length=c.length}s.prototype.get_indent_size=function(l,c){var h=this.__base_string_length;return c=c||0,l<0&&(h=0),h+=l*this.__indent_size,h+=c,h},s.prototype.get_indent_string=function(l,c){var h=this.__base_string;return c=c||0,l<0&&(l=0,h=\"\"),c+=l*this.__indent_size,this.__ensure_cache(c),h+=this.__cache[c],h},s.prototype.__ensure_cache=function(l){for(;l>=this.__cache.length;)this.__add_column()},s.prototype.__add_column=function(){var l=this.__cache.length,c=0,h=\"\";this.__indent_size&&l>=this.__indent_size&&(c=Math.floor(l/this.__indent_size),l-=c*this.__indent_size,h=new Array(c+1).join(this.__indent_string)),l&&(h+=new Array(l+1).join(\" \")),this.__cache.push(h)};function a(l,c){this.__indent_cache=new s(l,c),this.raw=!1,this._end_with_newline=l.end_with_newline,this.indent_size=l.indent_size,this.wrap_line_length=l.wrap_line_length,this.indent_empty_lines=l.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new o(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}a.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},a.prototype.get_line_number=function(){return this.__lines.length},a.prototype.get_indent_string=function(l,c){return this.__indent_cache.get_indent_string(l,c)},a.prototype.get_indent_size=function(l,c){return this.__indent_cache.get_indent_size(l,c)},a.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},a.prototype.add_new_line=function(l){return this.is_empty()||!l&&this.just_added_newline()?!1:(this.raw||this.__add_outputline(),!0)},a.prototype.get_code=function(l){this.trim(!0);var c=this.current_line.pop();c&&(c[c.length-1]===`\n`&&(c=c.replace(/\\n+$/g,\"\")),this.current_line.push(c)),this._end_with_newline&&this.__add_outputline();var h=this.__lines.join(`\n`);return l!==`\n`&&(h=h.replace(/[\\n]/g,l)),h},a.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},a.prototype.set_indent=function(l,c){return l=l||0,c=c||0,this.next_line.set_indent(l,c),this.__lines.length>1?(this.current_line.set_indent(l,c),!0):(this.current_line.set_indent(),!1)},a.prototype.add_raw_token=function(l){for(var c=0;c<l.newlines;c++)this.__add_outputline();this.current_line.set_indent(-1),this.current_line.push(l.whitespace_before),this.current_line.push(l.text),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1},a.prototype.add_token=function(l){this.__add_space_before_token(),this.current_line.push(l),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=this.current_line._allow_wrap()},a.prototype.__add_space_before_token=function(){this.space_before_token&&!this.just_added_newline()&&(this.non_breaking_space||this.set_wrap_point(),this.current_line.push(\" \"))},a.prototype.remove_indent=function(l){for(var c=this.__lines.length;l<c;)this.__lines[l]._remove_indent(),l++;this.current_line._remove_wrap_indent()},a.prototype.trim=function(l){for(l=l===void 0?!1:l,this.current_line.trim();l&&this.__lines.length>1&&this.current_line.is_empty();)this.__lines.pop(),this.current_line=this.__lines[this.__lines.length-1],this.current_line.trim();this.previous_line=this.__lines.length>1?this.__lines[this.__lines.length-2]:null},a.prototype.just_added_newline=function(){return this.current_line.is_empty()},a.prototype.just_added_blankline=function(){return this.is_empty()||this.current_line.is_empty()&&this.previous_line.is_empty()},a.prototype.ensure_empty_line_above=function(l,c){for(var h=this.__lines.length-2;h>=0;){var p=this.__lines[h];if(p.is_empty())break;if(p.item(0).indexOf(l)!==0&&p.item(-1)!==c){this.__lines.splice(h+1,0,new o(this)),this.previous_line=this.__lines[this.__lines.length-2];break}h--}},i.exports.Output=a},,,,function(i){function o(l,c){this.raw_options=s(l,c),this.disabled=this._get_boolean(\"disabled\"),this.eol=this._get_characters(\"eol\",\"auto\"),this.end_with_newline=this._get_boolean(\"end_with_newline\"),this.indent_size=this._get_number(\"indent_size\",4),this.indent_char=this._get_characters(\"indent_char\",\" \"),this.indent_level=this._get_number(\"indent_level\"),this.preserve_newlines=this._get_boolean(\"preserve_newlines\",!0),this.max_preserve_newlines=this._get_number(\"max_preserve_newlines\",32786),this.preserve_newlines||(this.max_preserve_newlines=0),this.indent_with_tabs=this._get_boolean(\"indent_with_tabs\",this.indent_char===\"\t\"),this.indent_with_tabs&&(this.indent_char=\"\t\",this.indent_size===1&&(this.indent_size=4)),this.wrap_line_length=this._get_number(\"wrap_line_length\",this._get_number(\"max_char\")),this.indent_empty_lines=this._get_boolean(\"indent_empty_lines\"),this.templating=this._get_selection_list(\"templating\",[\"auto\",\"none\",\"django\",\"erb\",\"handlebars\",\"php\",\"smarty\"],[\"auto\"])}o.prototype._get_array=function(l,c){var h=this.raw_options[l],p=c||[];return typeof h==\"object\"?h!==null&&typeof h.concat==\"function\"&&(p=h.concat()):typeof h==\"string\"&&(p=h.split(/[^a-zA-Z0-9_\\/\\-]+/)),p},o.prototype._get_boolean=function(l,c){var h=this.raw_options[l],p=h===void 0?!!c:!!h;return p},o.prototype._get_characters=function(l,c){var h=this.raw_options[l],p=c||\"\";return typeof h==\"string\"&&(p=h.replace(/\\\\r/,\"\\r\").replace(/\\\\n/,`\n`).replace(/\\\\t/,\"\t\")),p},o.prototype._get_number=function(l,c){var h=this.raw_options[l];c=parseInt(c,10),isNaN(c)&&(c=0);var p=parseInt(h,10);return isNaN(p)&&(p=c),p},o.prototype._get_selection=function(l,c,h){var p=this._get_selection_list(l,c,h);if(p.length!==1)throw new Error(\"Invalid Option Value: The option '\"+l+`' can only be one of the following values:\n`+c+`\nYou passed in: '`+this.raw_options[l]+\"'\");return p[0]},o.prototype._get_selection_list=function(l,c,h){if(!c||c.length===0)throw new Error(\"Selection list cannot be empty.\");if(h=h||[c[0]],!this._is_valid_selection(h,c))throw new Error(\"Invalid Default Value!\");var p=this._get_array(l,h);if(!this._is_valid_selection(p,c))throw new Error(\"Invalid Option Value: The option '\"+l+`' can contain only the following values:\n`+c+`\nYou passed in: '`+this.raw_options[l]+\"'\");return p},o.prototype._is_valid_selection=function(l,c){return l.length&&c.length&&!l.some(function(h){return c.indexOf(h)===-1})};function s(l,c){var h={};l=a(l);var p;for(p in l)p!==c&&(h[p]=l[p]);if(c&&l[c])for(p in l[c])h[p]=l[c][p];return h}function a(l){var c={},h;for(h in l){var p=h.replace(/-/g,\"_\");c[p]=l[h]}return c}i.exports.Options=o,i.exports.normalizeOpts=a,i.exports.mergeOpts=s},,function(i){var o=RegExp.prototype.hasOwnProperty(\"sticky\");function s(a){this.__input=a||\"\",this.__input_length=this.__input.length,this.__position=0}s.prototype.restart=function(){this.__position=0},s.prototype.back=function(){this.__position>0&&(this.__position-=1)},s.prototype.hasNext=function(){return this.__position<this.__input_length},s.prototype.next=function(){var a=null;return this.hasNext()&&(a=this.__input.charAt(this.__position),this.__position+=1),a},s.prototype.peek=function(a){var l=null;return a=a||0,a+=this.__position,a>=0&&a<this.__input_length&&(l=this.__input.charAt(a)),l},s.prototype.__match=function(a,l){a.lastIndex=l;var c=a.exec(this.__input);return c&&!(o&&a.sticky)&&c.index!==l&&(c=null),c},s.prototype.test=function(a,l){return l=l||0,l+=this.__position,l>=0&&l<this.__input_length?!!this.__match(a,l):!1},s.prototype.testChar=function(a,l){var c=this.peek(l);return a.lastIndex=0,c!==null&&a.test(c)},s.prototype.match=function(a){var l=this.__match(a,this.__position);return l?this.__position+=l[0].length:l=null,l},s.prototype.read=function(a,l,c){var h=\"\",p;return a&&(p=this.match(a),p&&(h+=p[0])),l&&(p||!a)&&(h+=this.readUntil(l,c)),h},s.prototype.readUntil=function(a,l){var c=\"\",h=this.__position;a.lastIndex=this.__position;var p=a.exec(this.__input);return p?(h=p.index,l&&(h+=p[0].length)):h=this.__input_length,c=this.__input.substring(this.__position,h),this.__position=h,c},s.prototype.readUntilAfter=function(a){return this.readUntil(a,!0)},s.prototype.get_regexp=function(a,l){var c=null,h=\"g\";return l&&o&&(h=\"y\"),typeof a==\"string\"&&a!==\"\"?c=new RegExp(a,h):a&&(c=new RegExp(a.source,h)),c},s.prototype.get_literal_regexp=function(a){return RegExp(a.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\"))},s.prototype.peekUntilAfter=function(a){var l=this.__position,c=this.readUntilAfter(a);return this.__position=l,c},s.prototype.lookBack=function(a){var l=this.__position-1;return l>=a.length&&this.__input.substring(l-a.length,l).toLowerCase()===a},i.exports.InputScanner=s},,,,,function(i){function o(s,a){s=typeof s==\"string\"?s:s.source,a=typeof a==\"string\"?a:a.source,this.__directives_block_pattern=new RegExp(s+/ beautify( \\w+[:]\\w+)+ /.source+a,\"g\"),this.__directive_pattern=/ (\\w+)[:](\\w+)/g,this.__directives_end_ignore_pattern=new RegExp(s+/\\sbeautify\\signore:end\\s/.source+a,\"g\")}o.prototype.get_directives=function(s){if(!s.match(this.__directives_block_pattern))return null;var a={};this.__directive_pattern.lastIndex=0;for(var l=this.__directive_pattern.exec(s);l;)a[l[1]]=l[2],l=this.__directive_pattern.exec(s);return a},o.prototype.readIgnored=function(s){return s.readUntilAfter(this.__directives_end_ignore_pattern)},i.exports.Directives=o},,function(i,o,s){var a=s(16).Beautifier,l=s(17).Options;function c(h,p){var m=new a(h,p);return m.beautify()}i.exports=c,i.exports.defaultOptions=function(){return new l}},function(i,o,s){var a=s(17).Options,l=s(2).Output,c=s(8).InputScanner,h=s(13).Directives,p=new h(/\\/\\*/,/\\*\\//),m=/\\r\\n|[\\r\\n]/,g=/\\r\\n|[\\r\\n]/g,w=/\\s/,x=/(?:\\s|\\n)+/g,y=/\\/\\*(?:[\\s\\S]*?)((?:\\*\\/)|$)/g,D=/\\/\\/(?:[^\\n\\r\\u2028\\u2029]*)/g;function M(z,P){this._source_text=z||\"\",this._options=new a(P),this._ch=null,this._input=null,this.NESTED_AT_RULE={\"@page\":!0,\"@font-face\":!0,\"@keyframes\":!0,\"@media\":!0,\"@supports\":!0,\"@document\":!0},this.CONDITIONAL_GROUP_RULE={\"@media\":!0,\"@supports\":!0,\"@document\":!0}}M.prototype.eatString=function(z){var P=\"\";for(this._ch=this._input.next();this._ch;){if(P+=this._ch,this._ch===\"\\\\\")P+=this._input.next();else if(z.indexOf(this._ch)!==-1||this._ch===`\n`)break;this._ch=this._input.next()}return P},M.prototype.eatWhitespace=function(z){for(var P=w.test(this._input.peek()),L=0;w.test(this._input.peek());)this._ch=this._input.next(),z&&this._ch===`\n`&&(L===0||L<this._options.max_preserve_newlines)&&(L++,this._output.add_new_line(!0));return P},M.prototype.foundNestedPseudoClass=function(){for(var z=0,P=1,L=this._input.peek(P);L;){if(L===\"{\")return!0;if(L===\"(\")z+=1;else if(L===\")\"){if(z===0)return!1;z-=1}else if(L===\";\"||L===\"}\")return!1;P++,L=this._input.peek(P)}return!1},M.prototype.print_string=function(z){this._output.set_indent(this._indentLevel),this._output.non_breaking_space=!0,this._output.add_token(z)},M.prototype.preserveSingleSpace=function(z){z&&(this._output.space_before_token=!0)},M.prototype.indent=function(){this._indentLevel++},M.prototype.outdent=function(){this._indentLevel>0&&this._indentLevel--},M.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var z=this._source_text,P=this._options.eol;P===\"auto\"&&(P=`\n`,z&&m.test(z||\"\")&&(P=z.match(m)[0])),z=z.replace(g,`\n`);var L=z.match(/^[\\t ]*/)[0];this._output=new l(this._options,L),this._input=new c(z),this._indentLevel=0,this._nestedLevel=0,this._ch=null;for(var $=0,ue=!1,oe=!1,me=!1,ve=!1,ye=!1,ke=this._ch,pe,G,Ie;pe=this._input.read(x),G=pe!==\"\",Ie=ke,this._ch=this._input.next(),this._ch===\"\\\\\"&&this._input.hasNext()&&(this._ch+=this._input.next()),ke=this._ch,this._ch;)if(this._ch===\"/\"&&this._input.peek()===\"*\"){this._output.add_new_line(),this._input.back();var fe=this._input.read(y),C=p.get_directives(fe);C&&C.ignore===\"start\"&&(fe+=p.readIgnored(this._input)),this.print_string(fe),this.eatWhitespace(!0),this._output.add_new_line()}else if(this._ch===\"/\"&&this._input.peek()===\"/\")this._output.space_before_token=!0,this._input.back(),this.print_string(this._input.read(D)),this.eatWhitespace(!0);else if(this._ch===\"@\")if(this.preserveSingleSpace(G),this._input.peek()===\"{\")this.print_string(this._ch+this.eatString(\"}\"));else{this.print_string(this._ch);var b=this._input.peekUntilAfter(/[: ,;{}()[\\]\\/='\"]/g);b.match(/[ :]$/)&&(b=this.eatString(\": \").replace(/\\s$/,\"\"),this.print_string(b),this._output.space_before_token=!0),b=b.replace(/\\s$/,\"\"),b===\"extend\"?ve=!0:b===\"import\"&&(ye=!0),b in this.NESTED_AT_RULE?(this._nestedLevel+=1,b in this.CONDITIONAL_GROUP_RULE&&(me=!0)):!ue&&$===0&&b.indexOf(\":\")!==-1&&(oe=!0,this.indent())}else this._ch===\"#\"&&this._input.peek()===\"{\"?(this.preserveSingleSpace(G),this.print_string(this._ch+this.eatString(\"}\"))):this._ch===\"{\"?(oe&&(oe=!1,this.outdent()),me?(me=!1,ue=this._indentLevel>=this._nestedLevel):ue=this._indentLevel>=this._nestedLevel-1,this._options.newline_between_rules&&ue&&this._output.previous_line&&this._output.previous_line.item(-1)!==\"{\"&&this._output.ensure_empty_line_above(\"/\",\",\"),this._output.space_before_token=!0,this._options.brace_style===\"expand\"?(this._output.add_new_line(),this.print_string(this._ch),this.indent(),this._output.set_indent(this._indentLevel)):(this.indent(),this.print_string(this._ch)),this.eatWhitespace(!0),this._output.add_new_line()):this._ch===\"}\"?(this.outdent(),this._output.add_new_line(),Ie===\"{\"&&this._output.trim(!0),ye=!1,ve=!1,oe&&(this.outdent(),oe=!1),this.print_string(this._ch),ue=!1,this._nestedLevel&&this._nestedLevel--,this.eatWhitespace(!0),this._output.add_new_line(),this._options.newline_between_rules&&!this._output.just_added_blankline()&&this._input.peek()!==\"}\"&&this._output.add_new_line(!0)):this._ch===\":\"?(ue||me)&&!(this._input.lookBack(\"&\")||this.foundNestedPseudoClass())&&!this._input.lookBack(\"(\")&&!ve&&$===0?(this.print_string(\":\"),oe||(oe=!0,this._output.space_before_token=!0,this.eatWhitespace(!0),this.indent())):(this._input.lookBack(\" \")&&(this._output.space_before_token=!0),this._input.peek()===\":\"?(this._ch=this._input.next(),this.print_string(\"::\")):this.print_string(\":\")):this._ch==='\"'||this._ch===\"'\"?(this.preserveSingleSpace(G),this.print_string(this._ch+this.eatString(this._ch)),this.eatWhitespace(!0)):this._ch===\";\"?$===0?(oe&&(this.outdent(),oe=!1),ve=!1,ye=!1,this.print_string(this._ch),this.eatWhitespace(!0),this._input.peek()!==\"/\"&&this._output.add_new_line()):(this.print_string(this._ch),this.eatWhitespace(!0),this._output.space_before_token=!0):this._ch===\"(\"?this._input.lookBack(\"url\")?(this.print_string(this._ch),this.eatWhitespace(),$++,this.indent(),this._ch=this._input.next(),this._ch===\")\"||this._ch==='\"'||this._ch===\"'\"?this._input.back():this._ch&&(this.print_string(this._ch+this.eatString(\")\")),$&&($--,this.outdent()))):(this.preserveSingleSpace(G),this.print_string(this._ch),this.eatWhitespace(),$++,this.indent()):this._ch===\")\"?($&&($--,this.outdent()),this.print_string(this._ch)):this._ch===\",\"?(this.print_string(this._ch),this.eatWhitespace(!0),this._options.selector_separator_newline&&!oe&&$===0&&!ye&&!ve?this._output.add_new_line():this._output.space_before_token=!0):(this._ch===\">\"||this._ch===\"+\"||this._ch===\"~\")&&!oe&&$===0?this._options.space_around_combinator?(this._output.space_before_token=!0,this.print_string(this._ch),this._output.space_before_token=!0):(this.print_string(this._ch),this.eatWhitespace(),this._ch&&w.test(this._ch)&&(this._ch=\"\")):this._ch===\"]\"?this.print_string(this._ch):this._ch===\"[\"?(this.preserveSingleSpace(G),this.print_string(this._ch)):this._ch===\"=\"?(this.eatWhitespace(),this.print_string(\"=\"),w.test(this._ch)&&(this._ch=\"\")):this._ch===\"!\"&&!this._input.lookBack(\"\\\\\")?(this.print_string(\" \"),this.print_string(this._ch)):(this.preserveSingleSpace(G),this.print_string(this._ch));var k=this._output.get_code(P);return k},i.exports.Beautifier=M},function(i,o,s){var a=s(6).Options;function l(c){a.call(this,c,\"css\"),this.selector_separator_newline=this._get_boolean(\"selector_separator_newline\",!0),this.newline_between_rules=this._get_boolean(\"newline_between_rules\",!0);var h=this._get_boolean(\"space_around_selector_separator\");this.space_around_combinator=this._get_boolean(\"space_around_combinator\")||h;var p=this._get_selection_list(\"brace_style\",[\"collapse\",\"expand\",\"end-expand\",\"none\",\"preserve-inline\"]);this.brace_style=\"collapse\";for(var m=0;m<p.length;m++)p[m]!==\"expand\"?this.brace_style=\"collapse\":this.brace_style=p[m]}l.prototype=new a,i.exports.Options=l}],e={};function t(i){var o=e[i];if(o!==void 0)return o.exports;var s=e[i]={exports:{}};return n[i](s,s.exports,t),s.exports}var r=t(15);Qo=r})();var Zo=Qo;function rs(n,e,t){var r=n.getText(),i=!0,o=0,s=!1,a=t.tabSize||4;if(e){for(var l=n.offsetAt(e.start),c=l;c>0&&ns(r,c-1);)c--;c===0||ts(r,c-1)?l=c:c<l&&(l=c+1);for(var h=n.offsetAt(e.end),p=h;p<r.length&&ns(r,p);)p++;if((p===r.length||ts(r,p))&&(h=p),e=W.create(n.positionAt(l),n.positionAt(h)),s=Ja(r,l),i=h===r.length,r=r.substring(l,h),l!==0){var m=n.offsetAt(Q.create(e.start.line,0));o=Xa(n.getText(),m,t)}s&&(r=`{\n`.concat(es(r)))}else e=W.create(Q.create(0,0),n.positionAt(r.length));var g={indent_size:a,indent_char:t.insertSpaces?\" \":\"\t\",end_with_newline:i&&Ve(t,\"insertFinalNewline\",!1),selector_separator_newline:Ve(t,\"newlineBetweenSelectors\",!0),newline_between_rules:Ve(t,\"newlineBetweenRules\",!0),space_around_selector_separator:Ve(t,\"spaceAroundSelectorSeparator\",!1),brace_style:Ve(t,\"braceStyle\",\"collapse\"),indent_empty_lines:Ve(t,\"indentEmptyLines\",!1),max_preserve_newlines:Ve(t,\"maxPreserveNewLines\",void 0),preserve_newlines:Ve(t,\"preserveNewLines\",!0),wrap_line_length:Ve(t,\"wrapLineLength\",void 0),eol:`\n`},w=Zo(r,g);if(s&&(w=es(w.substring(2))),o>0){var x=t.insertSpaces?Xn(\" \",a*o):Xn(\"\t\",o);w=w.split(`\n`).join(`\n`+x),e.start.character===0&&(w=x+w)}return[{range:e,newText:w}]}function es(n){return n.replace(/^\\s+/,\"\")}var Ga=\"{\".charCodeAt(0),Ha=\"}\".charCodeAt(0);function Ja(n,e){for(;e>=0;){var t=n.charCodeAt(e);if(t===Ga)return!0;if(t===Ha)return!1;e--}return!1}function Ve(n,e,t){if(n&&n.hasOwnProperty(e)){var r=n[e];if(r!==null)return r}return t}function Xa(n,e,t){for(var r=e,i=0,o=t.tabSize||4;r<n.length;){var s=n.charAt(r);if(s===\" \")i++;else if(s===\"\t\")i+=o;else break;r++}return Math.floor(i/o)}function ts(n,e){return`\\r\n`.indexOf(n.charAt(e))!==-1}function ns(n,e){return\" \t\".indexOf(n.charAt(e))!==-1}var Br={version:1.1,properties:[{name:\"additive-symbols\",browsers:[\"FF33\"],syntax:\"[ <integer> && <symbol> ]#\",relevance:50,description:\"@counter-style descriptor. Specifies the symbols used by the marker-construction algorithm specified by the system descriptor. Needs to be specified if the counter system is 'additive'.\",restrictions:[\"integer\",\"string\",\"image\",\"identifier\"]},{name:\"align-content\",values:[{name:\"center\",description:\"Lines are packed toward the center of the flex container.\"},{name:\"flex-end\",description:\"Lines are packed toward the end of the flex container.\"},{name:\"flex-start\",description:\"Lines are packed toward the start of the flex container.\"},{name:\"space-around\",description:\"Lines are evenly distributed in the flex container, with half-size spaces on either end.\"},{name:\"space-between\",description:\"Lines are evenly distributed in the flex container.\"},{name:\"stretch\",description:\"Lines stretch to take up the remaining space.\"}],syntax:\"normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>\",relevance:62,description:\"Aligns a flex container\\u2019s lines within the flex container when there is extra space in the cross-axis, similar to how 'justify-content' aligns individual items within the main-axis.\",restrictions:[\"enum\"]},{name:\"align-items\",values:[{name:\"baseline\",description:\"If the flex item\\u2019s inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment.\"},{name:\"center\",description:\"The flex item\\u2019s margin box is centered in the cross axis within the line.\"},{name:\"flex-end\",description:\"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line.\"},{name:\"flex-start\",description:\"The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line.\"},{name:\"stretch\",description:\"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched.\"}],syntax:\"normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]\",relevance:85,description:\"Aligns flex items along the cross axis of the current line of the flex container.\",restrictions:[\"enum\"]},{name:\"justify-items\",values:[{name:\"auto\"},{name:\"normal\"},{name:\"end\"},{name:\"start\"},{name:\"flex-end\",description:'\"Flex items are packed toward the end of the line.\"'},{name:\"flex-start\",description:'\"Flex items are packed toward the start of the line.\"'},{name:\"self-end\",description:\"The item is packed flush to the edge of the alignment container of the end side of the item, in the appropriate axis.\"},{name:\"self-start\",description:\"The item is packed flush to the edge of the alignment container of the start side of the item, in the appropriate axis..\"},{name:\"center\",description:\"The items are packed flush to each other toward the center of the of the alignment container.\"},{name:\"left\"},{name:\"right\"},{name:\"baseline\"},{name:\"first baseline\"},{name:\"last baseline\"},{name:\"stretch\",description:\"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched.\"},{name:\"save\"},{name:\"unsave\"},{name:\"legacy\"}],syntax:\"normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ]\",relevance:53,description:\"Defines the default justify-self for all items of the box, giving them the default way of justifying each box along the appropriate axis\",restrictions:[\"enum\"]},{name:\"justify-self\",values:[{name:\"auto\"},{name:\"normal\"},{name:\"end\"},{name:\"start\"},{name:\"flex-end\",description:'\"Flex items are packed toward the end of the line.\"'},{name:\"flex-start\",description:'\"Flex items are packed toward the start of the line.\"'},{name:\"self-end\",description:\"The item is packed flush to the edge of the alignment container of the end side of the item, in the appropriate axis.\"},{name:\"self-start\",description:\"The item is packed flush to the edge of the alignment container of the start side of the item, in the appropriate axis..\"},{name:\"center\",description:\"The items are packed flush to each other toward the center of the of the alignment container.\"},{name:\"left\"},{name:\"right\"},{name:\"baseline\"},{name:\"first baseline\"},{name:\"last baseline\"},{name:\"stretch\",description:\"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched.\"},{name:\"save\"},{name:\"unsave\"}],syntax:\"auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ]\",relevance:53,description:\"Defines the way of justifying a box inside its container along the appropriate axis.\",restrictions:[\"enum\"]},{name:\"align-self\",values:[{name:\"auto\",description:\"Computes to the value of 'align-items' on the element\\u2019s parent, or 'stretch' if the element has no parent. On absolutely positioned elements, it computes to itself.\"},{name:\"baseline\",description:\"If the flex item\\u2019s inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment.\"},{name:\"center\",description:\"The flex item\\u2019s margin box is centered in the cross axis within the line.\"},{name:\"flex-end\",description:\"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line.\"},{name:\"flex-start\",description:\"The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line.\"},{name:\"stretch\",description:\"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched.\"}],syntax:\"auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>\",relevance:72,description:\"Allows the default alignment along the cross axis to be overridden for individual flex items.\",restrictions:[\"enum\"]},{name:\"all\",browsers:[\"E79\",\"FF27\",\"S9.1\",\"C37\",\"O24\"],values:[],syntax:\"initial | inherit | unset | revert\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/all\"}],description:\"Shorthand that resets all properties except 'direction' and 'unicode-bidi'.\",restrictions:[\"enum\"]},{name:\"alt\",browsers:[\"S9\"],values:[],relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/alt\"}],description:\"Provides alternative text for assistive technology to replace the generated content of a ::before or ::after element.\",restrictions:[\"string\",\"enum\"]},{name:\"animation\",values:[{name:\"alternate\",description:\"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction.\"},{name:\"alternate-reverse\",description:\"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction.\"},{name:\"backwards\",description:\"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'.\"},{name:\"both\",description:\"Both forwards and backwards fill modes are applied.\"},{name:\"forwards\",description:\"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes.\"},{name:\"infinite\",description:\"Causes the animation to repeat forever.\"},{name:\"none\",description:\"No animation is performed\"},{name:\"normal\",description:\"Normal playback.\"},{name:\"reverse\",description:\"All iterations of the animation are played in the reverse direction from the way they were specified.\"}],syntax:\"<single-animation>#\",relevance:82,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/animation\"}],description:\"Shorthand property combines six of the animation properties into a single property.\",restrictions:[\"time\",\"timing-function\",\"enum\",\"identifier\",\"number\"]},{name:\"animation-delay\",syntax:\"<time>#\",relevance:64,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/animation-delay\"}],description:\"Defines when the animation will start.\",restrictions:[\"time\"]},{name:\"animation-direction\",values:[{name:\"alternate\",description:\"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction.\"},{name:\"alternate-reverse\",description:\"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction.\"},{name:\"normal\",description:\"Normal playback.\"},{name:\"reverse\",description:\"All iterations of the animation are played in the reverse direction from the way they were specified.\"}],syntax:\"<single-animation-direction>#\",relevance:57,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/animation-direction\"}],description:\"Defines whether or not the animation should play in reverse on alternate cycles.\",restrictions:[\"enum\"]},{name:\"animation-duration\",syntax:\"<time>#\",relevance:68,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/animation-duration\"}],description:\"Defines the length of time that an animation takes to complete one cycle.\",restrictions:[\"time\"]},{name:\"animation-fill-mode\",values:[{name:\"backwards\",description:\"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'.\"},{name:\"both\",description:\"Both forwards and backwards fill modes are applied.\"},{name:\"forwards\",description:\"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes.\"},{name:\"none\",description:\"There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes.\"}],syntax:\"<single-animation-fill-mode>#\",relevance:63,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode\"}],description:\"Defines what values are applied by the animation outside the time it is executing.\",restrictions:[\"enum\"]},{name:\"animation-iteration-count\",values:[{name:\"infinite\",description:\"Causes the animation to repeat forever.\"}],syntax:\"<single-animation-iteration-count>#\",relevance:60,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count\"}],description:\"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.\",restrictions:[\"number\",\"enum\"]},{name:\"animation-name\",values:[{name:\"none\",description:\"No animation is performed\"}],syntax:\"[ none | <keyframes-name> ]#\",relevance:68,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/animation-name\"}],description:\"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.\",restrictions:[\"identifier\",\"enum\"]},{name:\"animation-play-state\",values:[{name:\"paused\",description:\"A running animation will be paused.\"},{name:\"running\",description:\"Resume playback of a paused animation.\"}],syntax:\"<single-animation-play-state>#\",relevance:54,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/animation-play-state\"}],description:\"Defines whether the animation is running or paused.\",restrictions:[\"enum\"]},{name:\"animation-timing-function\",syntax:\"<easing-function>#\",relevance:71,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/animation-timing-function\"}],description:\"Describes how the animation will progress over one cycle of its duration.\",restrictions:[\"timing-function\"]},{name:\"backface-visibility\",values:[{name:\"hidden\",description:\"Back side is hidden.\"},{name:\"visible\",description:\"Back side is visible.\"}],syntax:\"visible | hidden\",relevance:59,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/backface-visibility\"}],description:\"Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.\",restrictions:[\"enum\"]},{name:\"background\",values:[{name:\"fixed\",description:\"The background is fixed with regard to the viewport. In paged media where there is no viewport, a 'fixed' background is fixed with respect to the page box and therefore replicated on every page.\"},{name:\"local\",description:\"The background is fixed with regard to the element's contents: if the element has a scrolling mechanism, the background scrolls with the element's contents.\"},{name:\"none\",description:\"A value of 'none' counts as an image layer but draws nothing.\"},{name:\"scroll\",description:\"The background is fixed with regard to the element itself and does not scroll with its contents. (It is effectively attached to the element's border.)\"}],syntax:\"[ <bg-layer> , ]* <final-bg-layer>\",relevance:93,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/background\"}],description:\"Shorthand property for setting most background properties at the same place in the style sheet.\",restrictions:[\"enum\",\"image\",\"color\",\"position\",\"length\",\"repeat\",\"percentage\",\"box\"]},{name:\"background-attachment\",values:[{name:\"fixed\",description:\"The background is fixed with regard to the viewport. In paged media where there is no viewport, a 'fixed' background is fixed with respect to the page box and therefore replicated on every page.\"},{name:\"local\",description:\"The background is fixed with regard to the element\\u2019s contents: if the element has a scrolling mechanism, the background scrolls with the element\\u2019s contents.\"},{name:\"scroll\",description:\"The background is fixed with regard to the element itself and does not scroll with its contents. (It is effectively attached to the element\\u2019s border.)\"}],syntax:\"<attachment>#\",relevance:54,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/background-attachment\"}],description:\"Specifies whether the background images are fixed with regard to the viewport ('fixed') or scroll along with the element ('scroll') or its contents ('local').\",restrictions:[\"enum\"]},{name:\"background-blend-mode\",browsers:[\"E79\",\"FF30\",\"S8\",\"C35\",\"O22\"],values:[{name:\"normal\",description:\"Default attribute which specifies no blending\"},{name:\"multiply\",description:\"The source color is multiplied by the destination color and replaces the destination.\"},{name:\"screen\",description:\"Multiplies the complements of the backdrop and source color values, then complements the result.\"},{name:\"overlay\",description:\"Multiplies or screens the colors, depending on the backdrop color value.\"},{name:\"darken\",description:\"Selects the darker of the backdrop and source colors.\"},{name:\"lighten\",description:\"Selects the lighter of the backdrop and source colors.\"},{name:\"color-dodge\",description:\"Brightens the backdrop color to reflect the source color.\"},{name:\"color-burn\",description:\"Darkens the backdrop color to reflect the source color.\"},{name:\"hard-light\",description:\"Multiplies or screens the colors, depending on the source color value.\"},{name:\"soft-light\",description:\"Darkens or lightens the colors, depending on the source color value.\"},{name:\"difference\",description:\"Subtracts the darker of the two constituent colors from the lighter color..\"},{name:\"exclusion\",description:\"Produces an effect similar to that of the Difference mode but lower in contrast.\"},{name:\"hue\",browsers:[\"E79\",\"FF30\",\"S8\",\"C35\",\"O22\"],description:\"Creates a color with the hue of the source color and the saturation and luminosity of the backdrop color.\"},{name:\"saturation\",browsers:[\"E79\",\"FF30\",\"S8\",\"C35\",\"O22\"],description:\"Creates a color with the saturation of the source color and the hue and luminosity of the backdrop color.\"},{name:\"color\",browsers:[\"E79\",\"FF30\",\"S8\",\"C35\",\"O22\"],description:\"Creates a color with the hue and saturation of the source color and the luminosity of the backdrop color.\"},{name:\"luminosity\",browsers:[\"E79\",\"FF30\",\"S8\",\"C35\",\"O22\"],description:\"Creates a color with the luminosity of the source color and the hue and saturation of the backdrop color.\"}],syntax:\"<blend-mode>#\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/background-blend-mode\"}],description:\"Defines the blending mode of each background layer.\",restrictions:[\"enum\"]},{name:\"background-clip\",syntax:\"<box>#\",relevance:69,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/background-clip\"}],description:\"Determines the background painting area.\",restrictions:[\"box\"]},{name:\"background-color\",syntax:\"<color>\",relevance:95,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/background-color\"}],description:\"Sets the background color of an element.\",restrictions:[\"color\"]},{name:\"background-image\",values:[{name:\"none\",description:\"Counts as an image layer but draws nothing.\"}],syntax:\"<bg-image>#\",relevance:89,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/background-image\"}],description:\"Sets the background image(s) of an element.\",restrictions:[\"image\",\"enum\"]},{name:\"background-origin\",syntax:\"<box>#\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/background-origin\"}],description:\"For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).\",restrictions:[\"box\"]},{name:\"background-position\",syntax:\"<bg-position>#\",relevance:88,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/background-position\"}],description:\"Specifies the initial position of the background image(s) (after any resizing) within their corresponding background positioning area.\",restrictions:[\"position\",\"length\",\"percentage\"]},{name:\"background-position-x\",values:[{name:\"center\",description:\"Equivalent to '50%' ('left 50%') for the horizontal position if the horizontal position is not otherwise specified, or '50%' ('top 50%') for the vertical position if it is.\"},{name:\"left\",description:\"Equivalent to '0%' for the horizontal position if one or two values are given, otherwise specifies the left edge as the origin for the next offset.\"},{name:\"right\",description:\"Equivalent to '100%' for the horizontal position if one or two values are given, otherwise specifies the right edge as the origin for the next offset.\"}],status:\"experimental\",syntax:\"[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#\",relevance:54,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/background-position-x\"}],description:\"If background images have been specified, this property specifies their initial position (after any resizing) within their corresponding background positioning area.\",restrictions:[\"length\",\"percentage\"]},{name:\"background-position-y\",values:[{name:\"bottom\",description:\"Equivalent to '100%' for the vertical position if one or two values are given, otherwise specifies the bottom edge as the origin for the next offset.\"},{name:\"center\",description:\"Equivalent to '50%' ('left 50%') for the horizontal position if the horizontal position is not otherwise specified, or '50%' ('top 50%') for the vertical position if it is.\"},{name:\"top\",description:\"Equivalent to '0%' for the vertical position if one or two values are given, otherwise specifies the top edge as the origin for the next offset.\"}],status:\"experimental\",syntax:\"[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/background-position-y\"}],description:\"If background images have been specified, this property specifies their initial position (after any resizing) within their corresponding background positioning area.\",restrictions:[\"length\",\"percentage\"]},{name:\"background-repeat\",values:[],syntax:\"<repeat-style>#\",relevance:85,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/background-repeat\"}],description:\"Specifies how background images are tiled after they have been sized and positioned.\",restrictions:[\"repeat\"]},{name:\"background-size\",values:[{name:\"auto\",description:\"Resolved by using the image\\u2019s intrinsic ratio and the size of the other dimension, or failing that, using the image\\u2019s intrinsic size, or failing that, treating it as 100%.\"},{name:\"contain\",description:\"Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area.\"},{name:\"cover\",description:\"Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area.\"}],syntax:\"<bg-size>#\",relevance:85,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/background-size\"}],description:\"Specifies the size of the background images.\",restrictions:[\"length\",\"percentage\"]},{name:\"behavior\",browsers:[\"IE6\"],relevance:50,description:\"IE only. Used to extend behaviors of the browser.\",restrictions:[\"url\"]},{name:\"block-size\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C57\",\"O44\"],values:[{name:\"auto\",description:\"Depends on the values of other properties.\"}],syntax:\"<'width'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/block-size\"}],description:\"Size of an element in the direction opposite that of the direction specified by 'writing-mode'.\",restrictions:[\"length\",\"percentage\"]},{name:\"border\",syntax:\"<line-width> || <line-style> || <color>\",relevance:96,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border\"}],description:\"Shorthand property for setting border width, style, and color.\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\"]},{name:\"border-block-end\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-width'> || <'border-top-style'> || <color>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-block-end\"}],description:\"Logical 'border-bottom'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\"]},{name:\"border-block-start\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-width'> || <'border-top-style'> || <color>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-block-start\"}],description:\"Logical 'border-top'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\"]},{name:\"border-block-end-color\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-color'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-block-end-color\"}],description:\"Logical 'border-bottom-color'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"color\"]},{name:\"border-block-start-color\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-color'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-block-start-color\"}],description:\"Logical 'border-top-color'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"color\"]},{name:\"border-block-end-style\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-style'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-block-end-style\"}],description:\"Logical 'border-bottom-style'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"line-style\"]},{name:\"border-block-start-style\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-style'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-block-start-style\"}],description:\"Logical 'border-top-style'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"line-style\"]},{name:\"border-block-end-width\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-width'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-block-end-width\"}],description:\"Logical 'border-bottom-width'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"line-width\"]},{name:\"border-block-start-width\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-width'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-block-start-width\"}],description:\"Logical 'border-top-width'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"line-width\"]},{name:\"border-bottom\",syntax:\"<line-width> || <line-style> || <color>\",relevance:89,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-bottom\"}],description:\"Shorthand property for setting border width, style and color.\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\"]},{name:\"border-bottom-color\",syntax:\"<'border-top-color'>\",relevance:72,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-bottom-color\"}],description:\"Sets the color of the bottom border.\",restrictions:[\"color\"]},{name:\"border-bottom-left-radius\",syntax:\"<length-percentage>{1,2}\",relevance:75,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius\"}],description:\"Defines the radii of the bottom left outer border edge.\",restrictions:[\"length\",\"percentage\"]},{name:\"border-bottom-right-radius\",syntax:\"<length-percentage>{1,2}\",relevance:75,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius\"}],description:\"Defines the radii of the bottom right outer border edge.\",restrictions:[\"length\",\"percentage\"]},{name:\"border-bottom-style\",syntax:\"<line-style>\",relevance:59,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-bottom-style\"}],description:\"Sets the style of the bottom border.\",restrictions:[\"line-style\"]},{name:\"border-bottom-width\",syntax:\"<line-width>\",relevance:63,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-bottom-width\"}],description:\"Sets the thickness of the bottom border.\",restrictions:[\"length\",\"line-width\"]},{name:\"border-collapse\",values:[{name:\"collapse\",description:\"Selects the collapsing borders model.\"},{name:\"separate\",description:\"Selects the separated borders border model.\"}],syntax:\"collapse | separate\",relevance:75,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-collapse\"}],description:\"Selects a table's border model.\",restrictions:[\"enum\"]},{name:\"border-color\",values:[],syntax:\"<color>{1,4}\",relevance:87,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-color\"}],description:\"The color of the border around all four edges of an element.\",restrictions:[\"color\"]},{name:\"border-image\",values:[{name:\"auto\",description:\"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead.\"},{name:\"fill\",description:\"Causes the middle part of the border-image to be preserved.\"},{name:\"none\",description:\"Use the border styles.\"},{name:\"repeat\",description:\"The image is tiled (repeated) to fill the area.\"},{name:\"round\",description:\"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does.\"},{name:\"space\",description:\"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles.\"},{name:\"stretch\",description:\"The image is stretched to fill the area.\"},{name:\"url()\"}],syntax:\"<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-image\"}],description:\"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.\",restrictions:[\"length\",\"percentage\",\"number\",\"url\",\"enum\"]},{name:\"border-image-outset\",syntax:\"[ <length> | <number> ]{1,4}\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-image-outset\"}],description:\"The values specify the amount by which the border image area extends beyond the border box on the top, right, bottom, and left sides respectively. If the fourth value is absent, it is the same as the second. If the third one is also absent, it is the same as the first. If the second one is also absent, it is the same as the first. Numbers represent multiples of the corresponding border-width.\",restrictions:[\"length\",\"number\"]},{name:\"border-image-repeat\",values:[{name:\"repeat\",description:\"The image is tiled (repeated) to fill the area.\"},{name:\"round\",description:\"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does.\"},{name:\"space\",description:\"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles.\"},{name:\"stretch\",description:\"The image is stretched to fill the area.\"}],syntax:\"[ stretch | repeat | round | space ]{1,2}\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-image-repeat\"}],description:\"Specifies how the images for the sides and the middle part of the border image are scaled and tiled. If the second keyword is absent, it is assumed to be the same as the first.\",restrictions:[\"enum\"]},{name:\"border-image-slice\",values:[{name:\"fill\",description:\"Causes the middle part of the border-image to be preserved.\"}],syntax:\"<number-percentage>{1,4} && fill?\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-image-slice\"}],description:\"Specifies inward offsets from the top, right, bottom, and left edges of the image, dividing it into nine regions: four corners, four edges and a middle.\",restrictions:[\"number\",\"percentage\"]},{name:\"border-image-source\",values:[{name:\"none\",description:\"Use the border styles.\"}],syntax:\"none | <image>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-image-source\"}],description:\"Specifies an image to use instead of the border styles given by the 'border-style' properties and as an additional background layer for the element. If the value is 'none' or if the image cannot be displayed, the border styles will be used.\",restrictions:[\"image\"]},{name:\"border-image-width\",values:[{name:\"auto\",description:\"The border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead.\"}],syntax:\"[ <length-percentage> | <number> | auto ]{1,4}\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-image-width\"}],description:\"The four values of 'border-image-width' specify offsets that are used to divide the border image area into nine parts. They represent inward distances from the top, right, bottom, and left sides of the area, respectively.\",restrictions:[\"length\",\"percentage\",\"number\"]},{name:\"border-inline-end\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-width'> || <'border-top-style'> || <color>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-inline-end\"}],description:\"Logical 'border-right'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\"]},{name:\"border-inline-start\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-width'> || <'border-top-style'> || <color>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-inline-start\"}],description:\"Logical 'border-left'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\"]},{name:\"border-inline-end-color\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-color'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-inline-end-color\"}],description:\"Logical 'border-right-color'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"color\"]},{name:\"border-inline-start-color\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-color'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-inline-start-color\"}],description:\"Logical 'border-left-color'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"color\"]},{name:\"border-inline-end-style\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-style'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-inline-end-style\"}],description:\"Logical 'border-right-style'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"line-style\"]},{name:\"border-inline-start-style\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-style'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-inline-start-style\"}],description:\"Logical 'border-left-style'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"line-style\"]},{name:\"border-inline-end-width\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-width'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-inline-end-width\"}],description:\"Logical 'border-right-width'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"line-width\"]},{name:\"border-inline-start-width\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'border-top-width'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-inline-start-width\"}],description:\"Logical 'border-left-width'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"line-width\"]},{name:\"border-left\",syntax:\"<line-width> || <line-style> || <color>\",relevance:83,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-left\"}],description:\"Shorthand property for setting border width, style and color\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\"]},{name:\"border-left-color\",syntax:\"<color>\",relevance:65,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-left-color\"}],description:\"Sets the color of the left border.\",restrictions:[\"color\"]},{name:\"border-left-style\",syntax:\"<line-style>\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-left-style\"}],description:\"Sets the style of the left border.\",restrictions:[\"line-style\"]},{name:\"border-left-width\",syntax:\"<line-width>\",relevance:59,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-left-width\"}],description:\"Sets the thickness of the left border.\",restrictions:[\"length\",\"line-width\"]},{name:\"border-radius\",syntax:\"<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?\",relevance:92,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-radius\"}],description:\"Defines the radii of the outer border edge.\",restrictions:[\"length\",\"percentage\"]},{name:\"border-right\",syntax:\"<line-width> || <line-style> || <color>\",relevance:82,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-right\"}],description:\"Shorthand property for setting border width, style and color\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\"]},{name:\"border-right-color\",syntax:\"<color>\",relevance:65,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-right-color\"}],description:\"Sets the color of the right border.\",restrictions:[\"color\"]},{name:\"border-right-style\",syntax:\"<line-style>\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-right-style\"}],description:\"Sets the style of the right border.\",restrictions:[\"line-style\"]},{name:\"border-right-width\",syntax:\"<line-width>\",relevance:59,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-right-width\"}],description:\"Sets the thickness of the right border.\",restrictions:[\"length\",\"line-width\"]},{name:\"border-spacing\",syntax:\"<length> <length>?\",relevance:68,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-spacing\"}],description:\"The lengths specify the distance that separates adjoining cell borders. If one length is specified, it gives both the horizontal and vertical spacing. If two are specified, the first gives the horizontal spacing and the second the vertical spacing. Lengths may not be negative.\",restrictions:[\"length\"]},{name:\"border-style\",values:[],syntax:\"<line-style>{1,4}\",relevance:81,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-style\"}],description:\"The style of the border around edges of an element.\",restrictions:[\"line-style\"]},{name:\"border-top\",syntax:\"<line-width> || <line-style> || <color>\",relevance:88,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-top\"}],description:\"Shorthand property for setting border width, style and color\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\"]},{name:\"border-top-color\",syntax:\"<color>\",relevance:72,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-top-color\"}],description:\"Sets the color of the top border.\",restrictions:[\"color\"]},{name:\"border-top-left-radius\",syntax:\"<length-percentage>{1,2}\",relevance:76,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius\"}],description:\"Defines the radii of the top left outer border edge.\",restrictions:[\"length\",\"percentage\"]},{name:\"border-top-right-radius\",syntax:\"<length-percentage>{1,2}\",relevance:75,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius\"}],description:\"Defines the radii of the top right outer border edge.\",restrictions:[\"length\",\"percentage\"]},{name:\"border-top-style\",syntax:\"<line-style>\",relevance:57,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-top-style\"}],description:\"Sets the style of the top border.\",restrictions:[\"line-style\"]},{name:\"border-top-width\",syntax:\"<line-width>\",relevance:61,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-top-width\"}],description:\"Sets the thickness of the top border.\",restrictions:[\"length\",\"line-width\"]},{name:\"border-width\",values:[],syntax:\"<line-width>{1,4}\",relevance:82,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-width\"}],description:\"Shorthand that sets the four 'border-*-width' properties. If it has four values, they set top, right, bottom and left in that order. If left is missing, it is the same as right; if bottom is missing, it is the same as top; if right is missing, it is the same as top.\",restrictions:[\"length\",\"line-width\"]},{name:\"bottom\",values:[{name:\"auto\",description:\"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well\"}],syntax:\"<length> | <percentage> | auto\",relevance:90,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/bottom\"}],description:\"Specifies how far an absolutely positioned box's bottom margin edge is offset above the bottom edge of the box's 'containing block'.\",restrictions:[\"length\",\"percentage\"]},{name:\"box-decoration-break\",browsers:[\"E79\",\"FF32\",\"S7\",\"C22\",\"O15\"],values:[{name:\"clone\",description:\"Each box is independently wrapped with the border and padding.\"},{name:\"slice\",description:\"The effect is as though the element were rendered with no breaks present, and then sliced by the breaks afterward.\"}],syntax:\"slice | clone\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/box-decoration-break\"}],description:\"Specifies whether individual boxes are treated as broken pieces of one continuous box, or whether each box is individually wrapped with the border and padding.\",restrictions:[\"enum\"]},{name:\"box-shadow\",values:[{name:\"inset\",description:\"Changes the drop shadow from an outer shadow (one that shadows the box onto the canvas, as if it were lifted above the canvas) to an inner shadow (one that shadows the canvas onto the box, as if the box were cut out of the canvas and shifted behind it).\"},{name:\"none\",description:\"No shadow.\"}],syntax:\"none | <shadow>#\",relevance:90,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/box-shadow\"}],description:\"Attaches one or more drop-shadows to the box. The property is a comma-separated list of shadows, each specified by 2-4 length values, an optional color, and an optional 'inset' keyword. Omitted lengths are 0; omitted colors are a user agent chosen color.\",restrictions:[\"length\",\"color\",\"enum\"]},{name:\"box-sizing\",values:[{name:\"border-box\",description:\"The specified width and height (and respective min/max properties) on this element determine the border box of the element.\"},{name:\"content-box\",description:\"Behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element.\"}],syntax:\"content-box | border-box\",relevance:93,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/box-sizing\"}],description:\"Specifies the behavior of the 'width' and 'height' properties.\",restrictions:[\"enum\"]},{name:\"break-after\",values:[{name:\"always\",description:\"Always force a page break before/after the generated box.\"},{name:\"auto\",description:\"Neither force nor forbid a page/column break before/after the principal box.\"},{name:\"avoid\",description:\"Avoid a break before/after the principal box.\"},{name:\"avoid-column\",description:\"Avoid a column break before/after the principal box.\"},{name:\"avoid-page\",description:\"Avoid a page break before/after the principal box.\"},{name:\"column\",description:\"Always force a column break before/after the principal box.\"},{name:\"left\",description:\"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page.\"},{name:\"page\",description:\"Always force a page break before/after the principal box.\"},{name:\"right\",description:\"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page.\"}],syntax:\"auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region\",relevance:50,description:\"Describes the page/column/region break behavior after the generated box.\",restrictions:[\"enum\"]},{name:\"break-before\",values:[{name:\"always\",description:\"Always force a page break before/after the generated box.\"},{name:\"auto\",description:\"Neither force nor forbid a page/column break before/after the principal box.\"},{name:\"avoid\",description:\"Avoid a break before/after the principal box.\"},{name:\"avoid-column\",description:\"Avoid a column break before/after the principal box.\"},{name:\"avoid-page\",description:\"Avoid a page break before/after the principal box.\"},{name:\"column\",description:\"Always force a column break before/after the principal box.\"},{name:\"left\",description:\"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page.\"},{name:\"page\",description:\"Always force a page break before/after the principal box.\"},{name:\"right\",description:\"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page.\"}],syntax:\"auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region\",relevance:50,description:\"Describes the page/column/region break behavior before the generated box.\",restrictions:[\"enum\"]},{name:\"break-inside\",values:[{name:\"auto\",description:\"Impose no additional breaking constraints within the box.\"},{name:\"avoid\",description:\"Avoid breaks within the box.\"},{name:\"avoid-column\",description:\"Avoid a column break within the box.\"},{name:\"avoid-page\",description:\"Avoid a page break within the box.\"}],syntax:\"auto | avoid | avoid-page | avoid-column | avoid-region\",relevance:51,description:\"Describes the page/column/region break behavior inside the principal box.\",restrictions:[\"enum\"]},{name:\"caption-side\",values:[{name:\"bottom\",description:\"Positions the caption box below the table box.\"},{name:\"top\",description:\"Positions the caption box above the table box.\"}],syntax:\"top | bottom | block-start | block-end | inline-start | inline-end\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/caption-side\"}],description:\"Specifies the position of the caption box with respect to the table box.\",restrictions:[\"enum\"]},{name:\"caret-color\",browsers:[\"E79\",\"FF53\",\"S11.1\",\"C57\",\"O44\"],values:[{name:\"auto\",description:\"The user agent selects an appropriate color for the caret. This is generally currentcolor, but the user agent may choose a different color to ensure good visibility and contrast with the surrounding content, taking into account the value of currentcolor, the background, shadows, and other factors.\"}],syntax:\"auto | <color>\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/caret-color\"}],description:\"Controls the color of the text insertion indicator.\",restrictions:[\"color\",\"enum\"]},{name:\"clear\",values:[{name:\"both\",description:\"The clearance of the generated box is set to the amount necessary to place the top border edge below the bottom outer edge of any right-floating and left-floating boxes that resulted from elements earlier in the source document.\"},{name:\"left\",description:\"The clearance of the generated box is set to the amount necessary to place the top border edge below the bottom outer edge of any left-floating boxes that resulted from elements earlier in the source document.\"},{name:\"none\",description:\"No constraint on the box's position with respect to floats.\"},{name:\"right\",description:\"The clearance of the generated box is set to the amount necessary to place the top border edge below the bottom outer edge of any right-floating boxes that resulted from elements earlier in the source document.\"}],syntax:\"none | left | right | both | inline-start | inline-end\",relevance:85,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/clear\"}],description:\"Indicates which sides of an element's box(es) may not be adjacent to an earlier floating box. The 'clear' property does not consider floats inside the element itself or in other block formatting contexts.\",restrictions:[\"enum\"]},{name:\"clip\",values:[{name:\"auto\",description:\"The element does not clip.\"},{name:\"rect()\",description:\"Specifies offsets from the edges of the border box.\"}],syntax:\"<shape> | auto\",relevance:75,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/clip\"}],description:\"Deprecated. Use the 'clip-path' property when support allows. Defines the visible portion of an element\\u2019s box.\",restrictions:[\"enum\"]},{name:\"clip-path\",values:[{name:\"none\",description:\"No clipping path gets created.\"},{name:\"url()\",description:\"References a <clipPath> element to create a clipping path.\"}],syntax:\"<clip-source> | [ <basic-shape> || <geometry-box> ] | none\",relevance:62,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/clip-path\"}],description:\"Specifies a clipping path where everything inside the path is visible and everything outside is clipped out.\",restrictions:[\"url\",\"shape\",\"geometry-box\",\"enum\"]},{name:\"clip-rule\",browsers:[\"E\",\"C5\",\"FF3\",\"IE10\",\"O9\",\"S6\"],values:[{name:\"evenodd\",description:\"Determines the \\u2018insideness\\u2019 of a point on the canvas by drawing a ray from that point to infinity in any direction and counting the number of path segments from the given shape that the ray crosses.\"},{name:\"nonzero\",description:\"Determines the \\u2018insideness\\u2019 of a point on the canvas by drawing a ray from that point to infinity in any direction and then examining the places where a segment of the shape crosses the ray.\"}],relevance:50,description:\"Indicates the algorithm which is to be used to determine what parts of the canvas are included inside the shape.\",restrictions:[\"enum\"]},{name:\"color\",syntax:\"<color>\",relevance:95,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/color\"}],description:\"Sets the color of an element's text\",restrictions:[\"color\"]},{name:\"color-interpolation-filters\",browsers:[\"E\",\"C5\",\"FF3\",\"IE10\",\"O9\",\"S6\"],values:[{name:\"auto\",description:\"Color operations are not required to occur in a particular color space.\"},{name:\"linearRGB\",description:\"Color operations should occur in the linearized RGB color space.\"},{name:\"sRGB\",description:\"Color operations should occur in the sRGB color space.\"}],relevance:50,description:\"Specifies the color space for imaging operations performed via filter effects.\",restrictions:[\"enum\"]},{name:\"column-count\",values:[{name:\"auto\",description:\"Determines the number of columns by the 'column-width' property and the element width.\"}],syntax:\"<integer> | auto\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/column-count\"}],description:\"Describes the optimal number of columns into which the content of the element will be flowed.\",restrictions:[\"integer\",\"enum\"]},{name:\"column-fill\",values:[{name:\"auto\",description:\"Fills columns sequentially.\"},{name:\"balance\",description:\"Balance content equally between columns, if possible.\"}],syntax:\"auto | balance | balance-all\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/column-fill\"}],description:\"In continuous media, this property will only be consulted if the length of columns has been constrained. Otherwise, columns will automatically be balanced.\",restrictions:[\"enum\"]},{name:\"column-gap\",values:[{name:\"normal\",description:\"User agent specific and typically equivalent to 1em.\"}],syntax:\"normal | <length-percentage>\",relevance:54,description:\"Sets the gap between columns. If there is a column rule between columns, it will appear in the middle of the gap.\",restrictions:[\"length\",\"enum\"]},{name:\"column-rule\",syntax:\"<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/column-rule\"}],description:\"Shorthand for setting 'column-rule-width', 'column-rule-style', and 'column-rule-color' at the same place in the style sheet. Omitted values are set to their initial values.\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\"]},{name:\"column-rule-color\",syntax:\"<color>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/column-rule-color\"}],description:\"Sets the color of the column rule\",restrictions:[\"color\"]},{name:\"column-rule-style\",syntax:\"<'border-style'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/column-rule-style\"}],description:\"Sets the style of the rule between columns of an element.\",restrictions:[\"line-style\"]},{name:\"column-rule-width\",syntax:\"<'border-width'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/column-rule-width\"}],description:\"Sets the width of the rule between columns. Negative values are not allowed.\",restrictions:[\"length\",\"line-width\"]},{name:\"columns\",values:[{name:\"auto\",description:\"The width depends on the values of other properties.\"}],syntax:\"<'column-width'> || <'column-count'>\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/columns\"}],description:\"A shorthand property which sets both 'column-width' and 'column-count'.\",restrictions:[\"length\",\"integer\",\"enum\"]},{name:\"column-span\",values:[{name:\"all\",description:\"The element spans across all columns. Content in the normal flow that appears before the element is automatically balanced across all columns before the element appear.\"},{name:\"none\",description:\"The element does not span multiple columns.\"}],syntax:\"none | all\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/column-span\"}],description:\"Describes the page/column break behavior after the generated box.\",restrictions:[\"enum\"]},{name:\"column-width\",values:[{name:\"auto\",description:\"The width depends on the values of other properties.\"}],syntax:\"<length> | auto\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/column-width\"}],description:\"Describes the width of columns in multicol elements.\",restrictions:[\"length\",\"enum\"]},{name:\"contain\",browsers:[\"E79\",\"FF69\",\"S15.4\",\"C52\",\"O40\"],values:[{name:\"none\",description:\"Indicates that the property has no effect.\"},{name:\"strict\",description:\"Turns on all forms of containment for the element.\"},{name:\"content\",description:\"All containment rules except size are applied to the element.\"},{name:\"size\",description:\"For properties that can have effects on more than just an element and its descendants, those effects don't escape the containing element.\"},{name:\"layout\",description:\"Turns on layout containment for the element.\"},{name:\"style\",description:\"Turns on style containment for the element.\"},{name:\"paint\",description:\"Turns on paint containment for the element.\"}],syntax:\"none | strict | content | [ size || layout || style || paint ]\",relevance:59,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/contain\"}],description:\"Indicates that an element and its contents are, as much as possible, independent of the rest of the document tree.\",restrictions:[\"enum\"]},{name:\"content\",values:[{name:\"attr()\",description:\"The attr(n) function returns as a string the value of attribute n for the subject of the selector.\"},{name:\"counter(name)\",description:\"Counters are denoted by identifiers (see the 'counter-increment' and 'counter-reset' properties).\"},{name:\"icon\",description:\"The (pseudo-)element is replaced in its entirety by the resource referenced by its 'icon' property, and treated as a replaced element.\"},{name:\"none\",description:\"On elements, this inhibits the children of the element from being rendered as children of this element, as if the element was empty. On pseudo-elements it causes the pseudo-element to have no content.\"},{name:\"normal\",description:\"See http://www.w3.org/TR/css3-content/#content for computation rules.\"},{name:\"url()\"}],syntax:\"normal | none | [ <content-replacement> | <content-list> ] [/ [ <string> | <counter> ]+ ]?\",relevance:90,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/content\"}],description:\"Determines which page-based occurrence of a given element is applied to a counter or string value.\",restrictions:[\"string\",\"url\"]},{name:\"counter-increment\",values:[{name:\"none\",description:\"This element does not alter the value of any counters.\"}],syntax:\"[ <counter-name> <integer>? ]+ | none\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/counter-increment\"}],description:\"Manipulate the value of existing counters.\",restrictions:[\"identifier\",\"integer\"]},{name:\"counter-reset\",values:[{name:\"none\",description:\"The counter is not modified.\"}],syntax:\"[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/counter-reset\"}],description:\"Property accepts one or more names of counters (identifiers), each one optionally followed by an integer. The integer gives the value that the counter is set to on each occurrence of the element.\",restrictions:[\"identifier\",\"integer\"]},{name:\"cursor\",values:[{name:\"alias\",description:\"Indicates an alias of/shortcut to something is to be created. Often rendered as an arrow with a small curved arrow next to it.\"},{name:\"all-scroll\",description:\"Indicates that the something can be scrolled in any direction. Often rendered as arrows pointing up, down, left, and right with a dot in the middle.\"},{name:\"auto\",description:\"The UA determines the cursor to display based on the current context.\"},{name:\"cell\",description:\"Indicates that a cell or set of cells may be selected. Often rendered as a thick plus-sign with a dot in the middle.\"},{name:\"col-resize\",description:\"Indicates that the item/column can be resized horizontally. Often rendered as arrows pointing left and right with a vertical bar separating them.\"},{name:\"context-menu\",description:\"A context menu is available for the object under the cursor. Often rendered as an arrow with a small menu-like graphic next to it.\"},{name:\"copy\",description:\"Indicates something is to be copied. Often rendered as an arrow with a small plus sign next to it.\"},{name:\"crosshair\",description:\"A simple crosshair (e.g., short line segments resembling a '+' sign). Often used to indicate a two dimensional bitmap selection mode.\"},{name:\"default\",description:\"The platform-dependent default cursor. Often rendered as an arrow.\"},{name:\"e-resize\",description:\"Indicates that east edge is to be moved.\"},{name:\"ew-resize\",description:\"Indicates a bidirectional east-west resize cursor.\"},{name:\"grab\",description:\"Indicates that something can be grabbed.\"},{name:\"grabbing\",description:\"Indicates that something is being grabbed.\"},{name:\"help\",description:\"Help is available for the object under the cursor. Often rendered as a question mark or a balloon.\"},{name:\"move\",description:\"Indicates something is to be moved.\"},{name:\"-moz-grab\",description:\"Indicates that something can be grabbed.\"},{name:\"-moz-grabbing\",description:\"Indicates that something is being grabbed.\"},{name:\"-moz-zoom-in\",description:\"Indicates that something can be zoomed (magnified) in.\"},{name:\"-moz-zoom-out\",description:\"Indicates that something can be zoomed (magnified) out.\"},{name:\"ne-resize\",description:\"Indicates that movement starts from north-east corner.\"},{name:\"nesw-resize\",description:\"Indicates a bidirectional north-east/south-west cursor.\"},{name:\"no-drop\",description:\"Indicates that the dragged item cannot be dropped at the current cursor location. Often rendered as a hand or pointer with a small circle with a line through it.\"},{name:\"none\",description:\"No cursor is rendered for the element.\"},{name:\"not-allowed\",description:\"Indicates that the requested action will not be carried out. Often rendered as a circle with a line through it.\"},{name:\"n-resize\",description:\"Indicates that north edge is to be moved.\"},{name:\"ns-resize\",description:\"Indicates a bidirectional north-south cursor.\"},{name:\"nw-resize\",description:\"Indicates that movement starts from north-west corner.\"},{name:\"nwse-resize\",description:\"Indicates a bidirectional north-west/south-east cursor.\"},{name:\"pointer\",description:\"The cursor is a pointer that indicates a link.\"},{name:\"progress\",description:\"A progress indicator. The program is performing some processing, but is different from 'wait' in that the user may still interact with the program. Often rendered as a spinning beach ball, or an arrow with a watch or hourglass.\"},{name:\"row-resize\",description:\"Indicates that the item/row can be resized vertically. Often rendered as arrows pointing up and down with a horizontal bar separating them.\"},{name:\"se-resize\",description:\"Indicates that movement starts from south-east corner.\"},{name:\"s-resize\",description:\"Indicates that south edge is to be moved.\"},{name:\"sw-resize\",description:\"Indicates that movement starts from south-west corner.\"},{name:\"text\",description:\"Indicates text that may be selected. Often rendered as a vertical I-beam.\"},{name:\"vertical-text\",description:\"Indicates vertical-text that may be selected. Often rendered as a horizontal I-beam.\"},{name:\"wait\",description:\"Indicates that the program is busy and the user should wait. Often rendered as a watch or hourglass.\"},{name:\"-webkit-grab\",description:\"Indicates that something can be grabbed.\"},{name:\"-webkit-grabbing\",description:\"Indicates that something is being grabbed.\"},{name:\"-webkit-zoom-in\",description:\"Indicates that something can be zoomed (magnified) in.\"},{name:\"-webkit-zoom-out\",description:\"Indicates that something can be zoomed (magnified) out.\"},{name:\"w-resize\",description:\"Indicates that west edge is to be moved.\"},{name:\"zoom-in\",description:\"Indicates that something can be zoomed (magnified) in.\"},{name:\"zoom-out\",description:\"Indicates that something can be zoomed (magnified) out.\"}],syntax:\"[ [ <url> [ <x> <y> ]? , ]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out | grab | grabbing ] ]\",relevance:92,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/cursor\"}],description:\"Allows control over cursor appearance in an element\",restrictions:[\"url\",\"number\",\"enum\"]},{name:\"direction\",values:[{name:\"ltr\",description:\"Left-to-right direction.\"},{name:\"rtl\",description:\"Right-to-left direction.\"}],syntax:\"ltr | rtl\",relevance:69,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/direction\"}],description:\"Specifies the inline base direction or directionality of any bidi paragraph, embedding, isolate, or override established by the box. Note: for HTML content use the 'dir' attribute and 'bdo' element rather than this property.\",restrictions:[\"enum\"]},{name:\"display\",values:[{name:\"block\",description:\"The element generates a block-level box\"},{name:\"contents\",description:\"The element itself does not generate any boxes, but its children and pseudo-elements still generate boxes as normal.\"},{name:\"flex\",description:\"The element generates a principal flex container box and establishes a flex formatting context.\"},{name:\"flexbox\",description:\"The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'.\"},{name:\"flow-root\",description:\"The element generates a block container box, and lays out its contents using flow layout.\"},{name:\"grid\",description:\"The element generates a principal grid container box, and establishes a grid formatting context.\"},{name:\"inline\",description:\"The element generates an inline-level box.\"},{name:\"inline-block\",description:\"A block box, which itself is flowed as a single inline box, similar to a replaced element. The inside of an inline-block is formatted as a block box, and the box itself is formatted as an inline box.\"},{name:\"inline-flex\",description:\"Inline-level flex container.\"},{name:\"inline-flexbox\",description:\"Inline-level flex container. Standardized as 'inline-flex'\"},{name:\"inline-table\",description:\"Inline-level table wrapper box containing table box.\"},{name:\"list-item\",description:\"One or more block boxes and one marker box.\"},{name:\"-moz-box\",description:\"The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'.\"},{name:\"-moz-deck\"},{name:\"-moz-grid\"},{name:\"-moz-grid-group\"},{name:\"-moz-grid-line\"},{name:\"-moz-groupbox\"},{name:\"-moz-inline-box\",description:\"Inline-level flex container. Standardized as 'inline-flex'\"},{name:\"-moz-inline-grid\"},{name:\"-moz-inline-stack\"},{name:\"-moz-marker\"},{name:\"-moz-popup\"},{name:\"-moz-stack\"},{name:\"-ms-flexbox\",description:\"The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'.\"},{name:\"-ms-grid\",description:\"The element generates a principal grid container box, and establishes a grid formatting context.\"},{name:\"-ms-inline-flexbox\",description:\"Inline-level flex container. Standardized as 'inline-flex'\"},{name:\"-ms-inline-grid\",description:\"Inline-level grid container.\"},{name:\"none\",description:\"The element and its descendants generates no boxes.\"},{name:\"ruby\",description:\"The element generates a principal ruby container box, and establishes a ruby formatting context.\"},{name:\"ruby-base\"},{name:\"ruby-base-container\"},{name:\"ruby-text\"},{name:\"ruby-text-container\"},{name:\"run-in\",description:\"The element generates a run-in box. Run-in elements act like inlines or blocks, depending on the surrounding elements.\"},{name:\"table\",description:\"The element generates a principal table wrapper box containing an additionally-generated table box, and establishes a table formatting context.\"},{name:\"table-caption\"},{name:\"table-cell\"},{name:\"table-column\"},{name:\"table-column-group\"},{name:\"table-footer-group\"},{name:\"table-header-group\"},{name:\"table-row\"},{name:\"table-row-group\"},{name:\"-webkit-box\",description:\"The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'.\"},{name:\"-webkit-flex\",description:\"The element lays out its contents using flow layout (block-and-inline layout).\"},{name:\"-webkit-inline-box\",description:\"Inline-level flex container. Standardized as 'inline-flex'\"},{name:\"-webkit-inline-flex\",description:\"Inline-level flex container.\"}],syntax:\"[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>\",relevance:96,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/display\"}],description:\"In combination with 'float' and 'position', determines the type of box or boxes that are generated for an element.\",restrictions:[\"enum\"]},{name:\"empty-cells\",values:[{name:\"hide\",description:\"No borders or backgrounds are drawn around/behind empty cells.\"},{name:\"-moz-show-background\"},{name:\"show\",description:\"Borders and backgrounds are drawn around/behind empty cells (like normal cells).\"}],syntax:\"show | hide\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/empty-cells\"}],description:\"In the separated borders model, this property controls the rendering of borders and backgrounds around cells that have no visible content.\",restrictions:[\"enum\"]},{name:\"enable-background\",values:[{name:\"accumulate\",description:\"If the ancestor container element has a property of new, then all graphics elements within the current container are rendered both on the parent's background image and onto the target.\"},{name:\"new\",description:\"Create a new background image canvas. All children of the current container element can access the background, and they will be rendered onto both the parent's background image canvas in addition to the target device.\"}],relevance:50,description:\"Deprecated. Use 'isolation' property instead when support allows. Specifies how the accumulation of the background image is managed.\",restrictions:[\"integer\",\"length\",\"percentage\",\"enum\"]},{name:\"fallback\",browsers:[\"FF33\"],syntax:\"<counter-style-name>\",relevance:50,description:\"@counter-style descriptor. Specifies a fallback counter style to be used when the current counter style can\\u2019t create a representation for a given counter value.\",restrictions:[\"identifier\"]},{name:\"fill\",values:[{name:\"url()\",description:\"A URL reference to a paint server element, which is an element that defines a paint server: \\u2018hatch\\u2019, \\u2018linearGradient\\u2019, \\u2018mesh\\u2019, \\u2018pattern\\u2019, \\u2018radialGradient\\u2019 and \\u2018solidcolor\\u2019.\"},{name:\"none\",description:\"No paint is applied in this layer.\"}],relevance:77,description:\"Paints the interior of the given graphical element.\",restrictions:[\"color\",\"enum\",\"url\"]},{name:\"fill-opacity\",relevance:52,description:\"Specifies the opacity of the painting operation used to paint the interior the current object.\",restrictions:[\"number(0-1)\"]},{name:\"fill-rule\",values:[{name:\"evenodd\",description:\"Determines the \\u2018insideness\\u2019 of a point on the canvas by drawing a ray from that point to infinity in any direction and counting the number of path segments from the given shape that the ray crosses.\"},{name:\"nonzero\",description:\"Determines the \\u2018insideness\\u2019 of a point on the canvas by drawing a ray from that point to infinity in any direction and then examining the places where a segment of the shape crosses the ray.\"}],relevance:50,description:\"Indicates the algorithm (or winding rule) which is to be used to determine what parts of the canvas are included inside the shape.\",restrictions:[\"enum\"]},{name:\"filter\",browsers:[\"E12\",\"FF35\",\"S9.1\",\"C53\",\"O40\"],values:[{name:\"none\",description:\"No filter effects are applied.\"},{name:\"blur()\",description:\"Applies a Gaussian blur to the input image.\"},{name:\"brightness()\",description:\"Applies a linear multiplier to input image, making it appear more or less bright.\"},{name:\"contrast()\",description:\"Adjusts the contrast of the input.\"},{name:\"drop-shadow()\",description:\"Applies a drop shadow effect to the input image.\"},{name:\"grayscale()\",description:\"Converts the input image to grayscale.\"},{name:\"hue-rotate()\",description:\"Applies a hue rotation on the input image. \"},{name:\"invert()\",description:\"Inverts the samples in the input image.\"},{name:\"opacity()\",description:\"Applies transparency to the samples in the input image.\"},{name:\"saturate()\",description:\"Saturates the input image.\"},{name:\"sepia()\",description:\"Converts the input image to sepia.\"},{name:\"url()\",browsers:[\"E12\",\"FF35\",\"S9.1\",\"C53\",\"O40\"],description:\"A filter reference to a <filter> element.\"}],syntax:\"none | <filter-function-list>\",relevance:66,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/filter\"}],description:\"Processes an element\\u2019s rendering before it is displayed in the document, by applying one or more filter effects.\",restrictions:[\"enum\",\"url\"]},{name:\"flex\",values:[{name:\"auto\",description:\"Retrieves the value of the main size property as the used 'flex-basis'.\"},{name:\"content\",description:\"Indicates automatic sizing, based on the flex item\\u2019s content.\"},{name:\"none\",description:\"Expands to '0 0 auto'.\"}],syntax:\"none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]\",relevance:80,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/flex\"}],description:\"Specifies the components of a flexible length: the flex grow factor and flex shrink factor, and the flex basis.\",restrictions:[\"length\",\"number\",\"percentage\"]},{name:\"flex-basis\",values:[{name:\"auto\",description:\"Retrieves the value of the main size property as the used 'flex-basis'.\"},{name:\"content\",description:\"Indicates automatic sizing, based on the flex item\\u2019s content.\"}],syntax:\"content | <'width'>\",relevance:65,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/flex-basis\"}],description:\"Sets the flex basis.\",restrictions:[\"length\",\"number\",\"percentage\"]},{name:\"flex-direction\",values:[{name:\"column\",description:\"The flex container\\u2019s main axis has the same orientation as the block axis of the current writing mode.\"},{name:\"column-reverse\",description:\"Same as 'column', except the main-start and main-end directions are swapped.\"},{name:\"row\",description:\"The flex container\\u2019s main axis has the same orientation as the inline axis of the current writing mode.\"},{name:\"row-reverse\",description:\"Same as 'row', except the main-start and main-end directions are swapped.\"}],syntax:\"row | row-reverse | column | column-reverse\",relevance:83,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/flex-direction\"}],description:\"Specifies how flex items are placed in the flex container, by setting the direction of the flex container\\u2019s main axis.\",restrictions:[\"enum\"]},{name:\"flex-flow\",values:[{name:\"column\",description:\"The flex container\\u2019s main axis has the same orientation as the block axis of the current writing mode.\"},{name:\"column-reverse\",description:\"Same as 'column', except the main-start and main-end directions are swapped.\"},{name:\"nowrap\",description:\"The flex container is single-line.\"},{name:\"row\",description:\"The flex container\\u2019s main axis has the same orientation as the inline axis of the current writing mode.\"},{name:\"row-reverse\",description:\"Same as 'row', except the main-start and main-end directions are swapped.\"},{name:\"wrap\",description:\"The flexbox is multi-line.\"},{name:\"wrap-reverse\",description:\"Same as 'wrap', except the cross-start and cross-end directions are swapped.\"}],syntax:\"<'flex-direction'> || <'flex-wrap'>\",relevance:61,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/flex-flow\"}],description:\"Specifies how flexbox items are placed in the flexbox.\",restrictions:[\"enum\"]},{name:\"flex-grow\",syntax:\"<number>\",relevance:75,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/flex-grow\"}],description:\"Sets the flex grow factor. Negative numbers are invalid.\",restrictions:[\"number\"]},{name:\"flex-shrink\",syntax:\"<number>\",relevance:74,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/flex-shrink\"}],description:\"Sets the flex shrink factor. Negative numbers are invalid.\",restrictions:[\"number\"]},{name:\"flex-wrap\",values:[{name:\"nowrap\",description:\"The flex container is single-line.\"},{name:\"wrap\",description:\"The flexbox is multi-line.\"},{name:\"wrap-reverse\",description:\"Same as 'wrap', except the cross-start and cross-end directions are swapped.\"}],syntax:\"nowrap | wrap | wrap-reverse\",relevance:79,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/flex-wrap\"}],description:\"Controls whether the flex container is single-line or multi-line, and the direction of the cross-axis, which determines the direction new lines are stacked in.\",restrictions:[\"enum\"]},{name:\"float\",values:[{name:\"inline-end\",description:\"A keyword indicating that the element must float on the end side of its containing block. That is the right side with ltr scripts, and the left side with rtl scripts.\"},{name:\"inline-start\",description:\"A keyword indicating that the element must float on the start side of its containing block. That is the left side with ltr scripts, and the right side with rtl scripts.\"},{name:\"left\",description:\"The element generates a block box that is floated to the left. Content flows on the right side of the box, starting at the top (subject to the 'clear' property).\"},{name:\"none\",description:\"The box is not floated.\"},{name:\"right\",description:\"Similar to 'left', except the box is floated to the right, and content flows on the left side of the box, starting at the top.\"}],syntax:\"left | right | none | inline-start | inline-end\",relevance:91,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/float\"}],description:\"Specifies how a box should be floated. It may be set for any element, but only applies to elements that generate boxes that are not absolutely positioned.\",restrictions:[\"enum\"]},{name:\"flood-color\",browsers:[\"E\",\"C5\",\"FF3\",\"IE10\",\"O9\",\"S6\"],relevance:50,description:\"Indicates what color to use to flood the current filter primitive subregion.\",restrictions:[\"color\"]},{name:\"flood-opacity\",browsers:[\"E\",\"C5\",\"FF3\",\"IE10\",\"O9\",\"S6\"],relevance:50,description:\"Indicates what opacity to use to flood the current filter primitive subregion.\",restrictions:[\"number(0-1)\",\"percentage\"]},{name:\"font\",values:[{name:\"100\",description:\"Thin\"},{name:\"200\",description:\"Extra Light (Ultra Light)\"},{name:\"300\",description:\"Light\"},{name:\"400\",description:\"Normal\"},{name:\"500\",description:\"Medium\"},{name:\"600\",description:\"Semi Bold (Demi Bold)\"},{name:\"700\",description:\"Bold\"},{name:\"800\",description:\"Extra Bold (Ultra Bold)\"},{name:\"900\",description:\"Black (Heavy)\"},{name:\"bold\",description:\"Same as 700\"},{name:\"bolder\",description:\"Specifies the weight of the face bolder than the inherited value.\"},{name:\"caption\",description:\"The font used for captioned controls (e.g., buttons, drop-downs, etc.).\"},{name:\"icon\",description:\"The font used to label icons.\"},{name:\"italic\",description:\"Selects a font that is labeled 'italic', or, if that is not available, one labeled 'oblique'.\"},{name:\"large\"},{name:\"larger\"},{name:\"lighter\",description:\"Specifies the weight of the face lighter than the inherited value.\"},{name:\"medium\"},{name:\"menu\",description:\"The font used in menus (e.g., dropdown menus and menu lists).\"},{name:\"message-box\",description:\"The font used in dialog boxes.\"},{name:\"normal\",description:\"Specifies a face that is not labeled as a small-caps font.\"},{name:\"oblique\",description:\"Selects a font that is labeled 'oblique'.\"},{name:\"small\"},{name:\"small-caps\",description:\"Specifies a font that is labeled as a small-caps font. If a genuine small-caps font is not available, user agents should simulate a small-caps font.\"},{name:\"small-caption\",description:\"The font used for labeling small controls.\"},{name:\"smaller\"},{name:\"status-bar\",description:\"The font used in window status bars.\"},{name:\"x-large\"},{name:\"x-small\"},{name:\"xx-large\"},{name:\"xx-small\"}],syntax:\"[ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar\",relevance:84,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font\"}],description:\"Shorthand property for setting 'font-style', 'font-variant', 'font-weight', 'font-size', 'line-height', and 'font-family', at the same place in the style sheet. The syntax of this property is based on a traditional typographical shorthand notation to set multiple properties related to fonts.\",restrictions:[\"font\"]},{name:\"font-family\",values:[{name:\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif\"},{name:\"Arial, Helvetica, sans-serif\"},{name:\"Cambria, Cochin, Georgia, Times, 'Times New Roman', serif\"},{name:\"'Courier New', Courier, monospace\"},{name:\"cursive\"},{name:\"fantasy\"},{name:\"'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif\"},{name:\"Georgia, 'Times New Roman', Times, serif\"},{name:\"'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif\"},{name:\"Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif\"},{name:\"'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif\"},{name:\"monospace\"},{name:\"sans-serif\"},{name:\"'Segoe UI', Tahoma, Geneva, Verdana, sans-serif\"},{name:\"serif\"},{name:\"'Times New Roman', Times, serif\"},{name:\"'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif\"},{name:\"Verdana, Geneva, Tahoma, sans-serif\"}],syntax:\"<family-name>\",relevance:94,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-family\"}],description:\"Specifies a prioritized list of font family names or generic family names. A user agent iterates through the list of family names until it matches an available font that contains a glyph for the character to be rendered.\",restrictions:[\"font\"]},{name:\"font-feature-settings\",values:[{name:'\"aalt\"',description:\"Access All Alternates.\"},{name:'\"abvf\"',description:\"Above-base Forms. Required in Khmer script.\"},{name:'\"abvm\"',description:\"Above-base Mark Positioning. Required in Indic scripts.\"},{name:'\"abvs\"',description:\"Above-base Substitutions. Required in Indic scripts.\"},{name:'\"afrc\"',description:\"Alternative Fractions.\"},{name:'\"akhn\"',description:\"Akhand. Required in most Indic scripts.\"},{name:'\"blwf\"',description:\"Below-base Form. Required in a number of Indic scripts.\"},{name:'\"blwm\"',description:\"Below-base Mark Positioning. Required in Indic scripts.\"},{name:'\"blws\"',description:\"Below-base Substitutions. Required in Indic scripts.\"},{name:'\"calt\"',description:\"Contextual Alternates.\"},{name:'\"case\"',description:\"Case-Sensitive Forms. Applies only to European scripts; particularly prominent in Spanish-language setting.\"},{name:'\"ccmp\"',description:\"Glyph Composition/Decomposition.\"},{name:'\"cfar\"',description:\"Conjunct Form After Ro. Required in Khmer scripts.\"},{name:'\"cjct\"',description:\"Conjunct Forms. Required in Indic scripts that show similarity to Devanagari.\"},{name:'\"clig\"',description:\"Contextual Ligatures.\"},{name:'\"cpct\"',description:\"Centered CJK Punctuation. Used primarily in Chinese fonts.\"},{name:'\"cpsp\"',description:\"Capital Spacing. Should not be used in connecting scripts (e.g. most Arabic).\"},{name:'\"cswh\"',description:\"Contextual Swash.\"},{name:'\"curs\"',description:\"Cursive Positioning. Can be used in any cursive script.\"},{name:'\"c2pc\"',description:\"Petite Capitals From Capitals. Applies only to bicameral scripts.\"},{name:'\"c2sc\"',description:\"Small Capitals From Capitals. Applies only to bicameral scripts.\"},{name:'\"dist\"',description:\"Distances. Required in Indic scripts.\"},{name:'\"dlig\"',description:\"Discretionary ligatures.\"},{name:'\"dnom\"',description:\"Denominators.\"},{name:'\"dtls\"',description:\"Dotless Forms. Applied to math formula layout.\"},{name:'\"expt\"',description:\"Expert Forms. Applies only to Japanese.\"},{name:'\"falt\"',description:\"Final Glyph on Line Alternates. Can be used in any cursive script.\"},{name:'\"fin2\"',description:\"Terminal Form #2. Used only with the Syriac script.\"},{name:'\"fin3\"',description:\"Terminal Form #3. Used only with the Syriac script.\"},{name:'\"fina\"',description:\"Terminal Forms. Can be used in any alphabetic script.\"},{name:'\"flac\"',description:\"Flattened ascent forms. Applied to math formula layout.\"},{name:'\"frac\"',description:\"Fractions.\"},{name:'\"fwid\"',description:\"Full Widths. Applies to any script which can use monospaced forms.\"},{name:'\"half\"',description:\"Half Forms. Required in Indic scripts that show similarity to Devanagari.\"},{name:'\"haln\"',description:\"Halant Forms. Required in Indic scripts.\"},{name:'\"halt\"',description:\"Alternate Half Widths. Used only in CJKV fonts.\"},{name:'\"hist\"',description:\"Historical Forms.\"},{name:'\"hkna\"',description:\"Horizontal Kana Alternates. Applies only to fonts that support kana (hiragana and katakana).\"},{name:'\"hlig\"',description:\"Historical Ligatures.\"},{name:'\"hngl\"',description:\"Hangul. Korean only.\"},{name:'\"hojo\"',description:\"Hojo Kanji Forms (JIS X 0212-1990 Kanji Forms). Used only with Kanji script.\"},{name:'\"hwid\"',description:\"Half Widths. Generally used only in CJKV fonts.\"},{name:'\"init\"',description:\"Initial Forms. Can be used in any alphabetic script.\"},{name:'\"isol\"',description:\"Isolated Forms. Can be used in any cursive script.\"},{name:'\"ital\"',description:\"Italics. Applies mostly to Latin; note that many non-Latin fonts contain Latin as well.\"},{name:'\"jalt\"',description:\"Justification Alternates. Can be used in any cursive script.\"},{name:'\"jp78\"',description:\"JIS78 Forms. Applies only to Japanese.\"},{name:'\"jp83\"',description:\"JIS83 Forms. Applies only to Japanese.\"},{name:'\"jp90\"',description:\"JIS90 Forms. Applies only to Japanese.\"},{name:'\"jp04\"',description:\"JIS2004 Forms. Applies only to Japanese.\"},{name:'\"kern\"',description:\"Kerning.\"},{name:'\"lfbd\"',description:\"Left Bounds.\"},{name:'\"liga\"',description:\"Standard Ligatures.\"},{name:'\"ljmo\"',description:\"Leading Jamo Forms. Required for Hangul script when Ancient Hangul writing system is supported.\"},{name:'\"lnum\"',description:\"Lining Figures.\"},{name:'\"locl\"',description:\"Localized Forms.\"},{name:'\"ltra\"',description:\"Left-to-right glyph alternates.\"},{name:'\"ltrm\"',description:\"Left-to-right mirrored forms.\"},{name:'\"mark\"',description:\"Mark Positioning.\"},{name:'\"med2\"',description:\"Medial Form #2. Used only with the Syriac script.\"},{name:'\"medi\"',description:\"Medial Forms.\"},{name:'\"mgrk\"',description:\"Mathematical Greek.\"},{name:'\"mkmk\"',description:\"Mark to Mark Positioning.\"},{name:'\"nalt\"',description:\"Alternate Annotation Forms.\"},{name:'\"nlck\"',description:\"NLC Kanji Forms. Used only with Kanji script.\"},{name:'\"nukt\"',description:\"Nukta Forms. Required in Indic scripts..\"},{name:'\"numr\"',description:\"Numerators.\"},{name:'\"onum\"',description:\"Oldstyle Figures.\"},{name:'\"opbd\"',description:\"Optical Bounds.\"},{name:'\"ordn\"',description:\"Ordinals. Applies mostly to Latin script.\"},{name:'\"ornm\"',description:\"Ornaments.\"},{name:'\"palt\"',description:\"Proportional Alternate Widths. Used mostly in CJKV fonts.\"},{name:'\"pcap\"',description:\"Petite Capitals.\"},{name:'\"pkna\"',description:\"Proportional Kana. Generally used only in Japanese fonts.\"},{name:'\"pnum\"',description:\"Proportional Figures.\"},{name:'\"pref\"',description:\"Pre-base Forms. Required in Khmer and Myanmar (Burmese) scripts and southern Indic scripts that may display a pre-base form of Ra.\"},{name:'\"pres\"',description:\"Pre-base Substitutions. Required in Indic scripts.\"},{name:'\"pstf\"',description:\"Post-base Forms. Required in scripts of south and southeast Asia that have post-base forms for consonants eg: Gurmukhi, Malayalam, Khmer.\"},{name:'\"psts\"',description:\"Post-base Substitutions.\"},{name:'\"pwid\"',description:\"Proportional Widths.\"},{name:'\"qwid\"',description:\"Quarter Widths. Generally used only in CJKV fonts.\"},{name:'\"rand\"',description:\"Randomize.\"},{name:'\"rclt\"',description:\"Required Contextual Alternates. May apply to any script, but is especially important for many styles of Arabic.\"},{name:'\"rlig\"',description:\"Required Ligatures. Applies to Arabic and Syriac. May apply to some other scripts.\"},{name:'\"rkrf\"',description:\"Rakar Forms. Required in Devanagari and Gujarati scripts.\"},{name:'\"rphf\"',description:\"Reph Form. Required in Indic scripts. E.g. Devanagari, Kannada.\"},{name:'\"rtbd\"',description:\"Right Bounds.\"},{name:'\"rtla\"',description:\"Right-to-left alternates.\"},{name:'\"rtlm\"',description:\"Right-to-left mirrored forms.\"},{name:'\"ruby\"',description:\"Ruby Notation Forms. Applies only to Japanese.\"},{name:'\"salt\"',description:\"Stylistic Alternates.\"},{name:'\"sinf\"',description:\"Scientific Inferiors.\"},{name:'\"size\"',description:\"Optical size.\"},{name:'\"smcp\"',description:\"Small Capitals. Applies only to bicameral scripts.\"},{name:'\"smpl\"',description:\"Simplified Forms. Applies only to Chinese and Japanese.\"},{name:'\"ssty\"',description:\"Math script style alternates.\"},{name:'\"stch\"',description:\"Stretching Glyph Decomposition.\"},{name:'\"subs\"',description:\"Subscript.\"},{name:'\"sups\"',description:\"Superscript.\"},{name:'\"swsh\"',description:\"Swash. Does not apply to ideographic scripts.\"},{name:'\"titl\"',description:\"Titling.\"},{name:'\"tjmo\"',description:\"Trailing Jamo Forms. Required for Hangul script when Ancient Hangul writing system is supported.\"},{name:'\"tnam\"',description:\"Traditional Name Forms. Applies only to Japanese.\"},{name:'\"tnum\"',description:\"Tabular Figures.\"},{name:'\"trad\"',description:\"Traditional Forms. Applies only to Chinese and Japanese.\"},{name:'\"twid\"',description:\"Third Widths. Generally used only in CJKV fonts.\"},{name:'\"unic\"',description:\"Unicase.\"},{name:'\"valt\"',description:\"Alternate Vertical Metrics. Applies only to scripts with vertical writing modes.\"},{name:'\"vatu\"',description:\"Vattu Variants. Used for Indic scripts. E.g. Devanagari.\"},{name:'\"vert\"',description:\"Vertical Alternates. Applies only to scripts with vertical writing modes.\"},{name:'\"vhal\"',description:\"Alternate Vertical Half Metrics. Used only in CJKV fonts.\"},{name:'\"vjmo\"',description:\"Vowel Jamo Forms. Required for Hangul script when Ancient Hangul writing system is supported.\"},{name:'\"vkna\"',description:\"Vertical Kana Alternates. Applies only to fonts that support kana (hiragana and katakana).\"},{name:'\"vkrn\"',description:\"Vertical Kerning.\"},{name:'\"vpal\"',description:\"Proportional Alternate Vertical Metrics. Used mostly in CJKV fonts.\"},{name:'\"vrt2\"',description:\"Vertical Alternates and Rotation. Applies only to scripts with vertical writing modes.\"},{name:'\"zero\"',description:\"Slashed Zero.\"},{name:\"normal\",description:\"No change in glyph substitution or positioning occurs.\"},{name:\"off\",description:\"Disable feature.\"},{name:\"on\",description:\"Enable feature.\"}],syntax:\"normal | <feature-tag-value>#\",relevance:57,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-feature-settings\"}],description:\"Provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.\",restrictions:[\"string\",\"integer\"]},{name:\"font-kerning\",browsers:[\"E79\",\"FF32\",\"S9\",\"C33\",\"O20\"],values:[{name:\"auto\",description:\"Specifies that kerning is applied at the discretion of the user agent.\"},{name:\"none\",description:\"Specifies that kerning is not applied.\"},{name:\"normal\",description:\"Specifies that kerning is applied.\"}],syntax:\"auto | normal | none\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-kerning\"}],description:\"Kerning is the contextual adjustment of inter-glyph spacing. This property controls metric kerning, kerning that utilizes adjustment data contained in the font.\",restrictions:[\"enum\"]},{name:\"font-language-override\",browsers:[\"FF34\"],values:[{name:\"normal\",description:\"Implies that when rendering with OpenType fonts the language of the document is used to infer the OpenType language system, used to select language specific features when rendering.\"}],syntax:\"normal | <string>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-language-override\"}],description:\"The value of 'normal' implies that when rendering with OpenType fonts the language of the document is used to infer the OpenType language system, used to select language specific features when rendering.\",restrictions:[\"string\"]},{name:\"font-size\",values:[{name:\"large\"},{name:\"larger\"},{name:\"medium\"},{name:\"small\"},{name:\"smaller\"},{name:\"x-large\"},{name:\"x-small\"},{name:\"xx-large\"},{name:\"xx-small\"}],syntax:\"<absolute-size> | <relative-size> | <length-percentage>\",relevance:95,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-size\"}],description:\"Indicates the desired height of glyphs from the font. For scalable fonts, the font-size is a scale factor applied to the EM unit of the font. (Note that certain glyphs may bleed outside their EM box.) For non-scalable fonts, the font-size is converted into absolute units and matched against the declared font-size of the font, using the same absolute coordinate space for both of the matched values.\",restrictions:[\"length\",\"percentage\"]},{name:\"font-size-adjust\",browsers:[\"E79\",\"FF40\",\"C43\",\"O30\"],values:[{name:\"none\",description:\"Do not preserve the font\\u2019s x-height.\"}],syntax:\"none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number> ]\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-size-adjust\"}],description:\"Preserves the readability of text when font fallback occurs by adjusting the font-size so that the x-height is the same regardless of the font used.\",restrictions:[\"number\"]},{name:\"font-stretch\",values:[{name:\"condensed\"},{name:\"expanded\"},{name:\"extra-condensed\"},{name:\"extra-expanded\"},{name:\"narrower\",description:\"Indicates a narrower value relative to the width of the parent element.\"},{name:\"normal\"},{name:\"semi-condensed\"},{name:\"semi-expanded\"},{name:\"ultra-condensed\"},{name:\"ultra-expanded\"},{name:\"wider\",description:\"Indicates a wider value relative to the width of the parent element.\"}],syntax:\"<font-stretch-absolute>{1,2}\",relevance:56,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-stretch\"}],description:\"Selects a normal, condensed, or expanded face from a font family.\",restrictions:[\"enum\"]},{name:\"font-style\",values:[{name:\"italic\",description:\"Selects a font that is labeled as an 'italic' face, or an 'oblique' face if one is not\"},{name:\"normal\",description:\"Selects a face that is classified as 'normal'.\"},{name:\"oblique\",description:\"Selects a font that is labeled as an 'oblique' face, or an 'italic' face if one is not.\"}],syntax:\"normal | italic | oblique <angle>{0,2}\",relevance:90,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-style\"}],description:\"Allows italic or oblique faces to be selected. Italic forms are generally cursive in nature while oblique faces are typically sloped versions of the regular face.\",restrictions:[\"enum\"]},{name:\"font-synthesis\",browsers:[\"E97\",\"FF34\",\"S9\",\"C97\",\"O83\"],values:[{name:\"none\",description:\"Disallow all synthetic faces.\"},{name:\"style\",description:\"Allow synthetic italic faces.\"},{name:\"weight\",description:\"Allow synthetic bold faces.\"}],syntax:\"none | [ weight || style || small-caps ]\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-synthesis\"}],description:\"Controls whether user agents are allowed to synthesize bold or oblique font faces when a font family lacks bold or italic faces.\",restrictions:[\"enum\"]},{name:\"font-variant\",values:[{name:\"normal\",description:\"Specifies a face that is not labeled as a small-caps font.\"},{name:\"small-caps\",description:\"Specifies a font that is labeled as a small-caps font. If a genuine small-caps font is not available, user agents should simulate a small-caps font.\"}],syntax:\"normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> || stylistic(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<feature-value-name>) || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero || <east-asian-variant-values> || <east-asian-width-values> || ruby ]\",relevance:64,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-variant\"}],description:\"Specifies variant representations of the font\",restrictions:[\"enum\"]},{name:\"font-variant-alternates\",browsers:[\"FF34\",\"S9.1\"],values:[{name:\"annotation()\",description:\"Enables display of alternate annotation forms.\"},{name:\"character-variant()\",description:\"Enables display of specific character variants.\"},{name:\"historical-forms\",description:\"Enables display of historical forms.\"},{name:\"normal\",description:\"None of the features are enabled.\"},{name:\"ornaments()\",description:\"Enables replacement of default glyphs with ornaments, if provided in the font.\"},{name:\"styleset()\",description:\"Enables display with stylistic sets.\"},{name:\"stylistic()\",description:\"Enables display of stylistic alternates.\"},{name:\"swash()\",description:\"Enables display of swash glyphs.\"}],syntax:\"normal | [ stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) ]\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-variant-alternates\"}],description:\"For any given character, fonts can provide a variety of alternate glyphs in addition to the default glyph for that character. This property provides control over the selection of these alternate glyphs.\",restrictions:[\"enum\"]},{name:\"font-variant-caps\",browsers:[\"E79\",\"FF34\",\"S9.1\",\"C52\",\"O39\"],values:[{name:\"all-petite-caps\",description:\"Enables display of petite capitals for both upper and lowercase letters.\"},{name:\"all-small-caps\",description:\"Enables display of small capitals for both upper and lowercase letters.\"},{name:\"normal\",description:\"None of the features are enabled.\"},{name:\"petite-caps\",description:\"Enables display of petite capitals.\"},{name:\"small-caps\",description:\"Enables display of small capitals. Small-caps glyphs typically use the form of uppercase letters but are reduced to the size of lowercase letters.\"},{name:\"titling-caps\",description:\"Enables display of titling capitals.\"},{name:\"unicase\",description:\"Enables display of mixture of small capitals for uppercase letters with normal lowercase letters.\"}],syntax:\"normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-variant-caps\"}],description:\"Specifies control over capitalized forms.\",restrictions:[\"enum\"]},{name:\"font-variant-east-asian\",browsers:[\"E79\",\"FF34\",\"S9.1\",\"C63\",\"O50\"],values:[{name:\"full-width\",description:\"Enables rendering of full-width variants.\"},{name:\"jis04\",description:\"Enables rendering of JIS04 forms.\"},{name:\"jis78\",description:\"Enables rendering of JIS78 forms.\"},{name:\"jis83\",description:\"Enables rendering of JIS83 forms.\"},{name:\"jis90\",description:\"Enables rendering of JIS90 forms.\"},{name:\"normal\",description:\"None of the features are enabled.\"},{name:\"proportional-width\",description:\"Enables rendering of proportionally-spaced variants.\"},{name:\"ruby\",description:\"Enables display of ruby variant glyphs.\"},{name:\"simplified\",description:\"Enables rendering of simplified forms.\"},{name:\"traditional\",description:\"Enables rendering of traditional forms.\"}],syntax:\"normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-variant-east-asian\"}],description:\"Allows control of glyph substitute and positioning in East Asian text.\",restrictions:[\"enum\"]},{name:\"font-variant-ligatures\",browsers:[\"E79\",\"FF34\",\"S9.1\",\"C34\",\"O21\"],values:[{name:\"additional-ligatures\",description:\"Enables display of additional ligatures.\"},{name:\"common-ligatures\",description:\"Enables display of common ligatures.\"},{name:\"contextual\",browsers:[\"E79\",\"FF34\",\"S9.1\",\"C34\",\"O21\"],description:\"Enables display of contextual alternates.\"},{name:\"discretionary-ligatures\",description:\"Enables display of discretionary ligatures.\"},{name:\"historical-ligatures\",description:\"Enables display of historical ligatures.\"},{name:\"no-additional-ligatures\",description:\"Disables display of additional ligatures.\"},{name:\"no-common-ligatures\",description:\"Disables display of common ligatures.\"},{name:\"no-contextual\",browsers:[\"E79\",\"FF34\",\"S9.1\",\"C34\",\"O21\"],description:\"Disables display of contextual alternates.\"},{name:\"no-discretionary-ligatures\",description:\"Disables display of discretionary ligatures.\"},{name:\"no-historical-ligatures\",description:\"Disables display of historical ligatures.\"},{name:\"none\",browsers:[\"E79\",\"FF34\",\"S9.1\",\"C34\",\"O21\"],description:\"Disables all ligatures.\"},{name:\"normal\",description:\"Implies that the defaults set by the font are used.\"}],syntax:\"normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-variant-ligatures\"}],description:\"Specifies control over which ligatures are enabled or disabled. A value of \\u2018normal\\u2019 implies that the defaults set by the font are used.\",restrictions:[\"enum\"]},{name:\"font-variant-numeric\",browsers:[\"E79\",\"FF34\",\"S9.1\",\"C52\",\"O39\"],values:[{name:\"diagonal-fractions\",description:\"Enables display of lining diagonal fractions.\"},{name:\"lining-nums\",description:\"Enables display of lining numerals.\"},{name:\"normal\",description:\"None of the features are enabled.\"},{name:\"oldstyle-nums\",description:\"Enables display of old-style numerals.\"},{name:\"ordinal\",description:\"Enables display of letter forms used with ordinal numbers.\"},{name:\"proportional-nums\",description:\"Enables display of proportional numerals.\"},{name:\"slashed-zero\",description:\"Enables display of slashed zeros.\"},{name:\"stacked-fractions\",description:\"Enables display of lining stacked fractions.\"},{name:\"tabular-nums\",description:\"Enables display of tabular numerals.\"}],syntax:\"normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-variant-numeric\"}],description:\"Specifies control over numerical forms.\",restrictions:[\"enum\"]},{name:\"font-variant-position\",browsers:[\"FF34\",\"S9.1\"],values:[{name:\"normal\",description:\"None of the features are enabled.\"},{name:\"sub\",description:\"Enables display of subscript variants (OpenType feature: subs).\"},{name:\"super\",description:\"Enables display of superscript variants (OpenType feature: sups).\"}],syntax:\"normal | sub | super\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-variant-position\"}],description:\"Specifies the vertical position\",restrictions:[\"enum\"]},{name:\"font-weight\",values:[{name:\"100\",description:\"Thin\"},{name:\"200\",description:\"Extra Light (Ultra Light)\"},{name:\"300\",description:\"Light\"},{name:\"400\",description:\"Normal\"},{name:\"500\",description:\"Medium\"},{name:\"600\",description:\"Semi Bold (Demi Bold)\"},{name:\"700\",description:\"Bold\"},{name:\"800\",description:\"Extra Bold (Ultra Bold)\"},{name:\"900\",description:\"Black (Heavy)\"},{name:\"bold\",description:\"Same as 700\"},{name:\"bolder\",description:\"Specifies the weight of the face bolder than the inherited value.\"},{name:\"lighter\",description:\"Specifies the weight of the face lighter than the inherited value.\"},{name:\"normal\",description:\"Same as 400\"}],syntax:\"<font-weight-absolute>{1,2}\",relevance:94,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-weight\"}],description:\"Specifies weight of glyphs in the font, their degree of blackness or stroke thickness.\",restrictions:[\"enum\"]},{name:\"glyph-orientation-horizontal\",relevance:50,description:\"Controls glyph orientation when the inline-progression-direction is horizontal.\",restrictions:[\"angle\",\"number\"]},{name:\"glyph-orientation-vertical\",values:[{name:\"auto\",description:\"Sets the orientation based on the fullwidth or non-fullwidth characters and the most common orientation.\"}],relevance:50,description:\"Controls glyph orientation when the inline-progression-direction is vertical.\",restrictions:[\"angle\",\"number\",\"enum\"]},{name:\"grid-area\",browsers:[\"E16\",\"FF52\",\"S10.1\",\"C57\",\"O44\"],values:[{name:\"auto\",description:\"The property contributes nothing to the grid item\\u2019s placement, indicating auto-placement, an automatic span, or a default span of one.\"},{name:\"span\",description:\"Contributes a grid span to the grid item\\u2019s placement such that the corresponding edge of the grid item\\u2019s grid area is N lines from its opposite edge.\"}],syntax:\"<grid-line> [ / <grid-line> ]{0,3}\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-area\"}],description:\"Determine a grid item\\u2019s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement. Shorthand for 'grid-row-start', 'grid-column-start', 'grid-row-end', and 'grid-column-end'.\",restrictions:[\"identifier\",\"integer\"]},{name:\"grid\",browsers:[\"E16\",\"FF52\",\"S10.1\",\"C57\",\"O44\"],syntax:\"<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid\"}],description:\"The grid CSS property is a shorthand property that sets all of the explicit grid properties ('grid-template-rows', 'grid-template-columns', and 'grid-template-areas'), and all the implicit grid properties ('grid-auto-rows', 'grid-auto-columns', and 'grid-auto-flow'), in a single declaration.\",restrictions:[\"identifier\",\"length\",\"percentage\",\"string\",\"enum\"]},{name:\"grid-auto-columns\",values:[{name:\"min-content\",description:\"Represents the largest min-content contribution of the grid items occupying the grid track.\"},{name:\"max-content\",description:\"Represents the largest max-content contribution of the grid items occupying the grid track.\"},{name:\"auto\",description:\"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track.\"},{name:\"minmax()\",description:\"Defines a size range greater than or equal to min and less than or equal to max.\"}],syntax:\"<track-size>+\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-auto-columns\"}],description:\"Specifies the size of implicitly created columns.\",restrictions:[\"length\",\"percentage\"]},{name:\"grid-auto-flow\",browsers:[\"E16\",\"FF52\",\"S10.1\",\"C57\",\"O44\"],values:[{name:\"row\",description:\"The auto-placement algorithm places items by filling each row in turn, adding new rows as necessary.\"},{name:\"column\",description:\"The auto-placement algorithm places items by filling each column in turn, adding new columns as necessary.\"},{name:\"dense\",description:\"If specified, the auto-placement algorithm uses a \\u201Cdense\\u201D packing algorithm, which attempts to fill in holes earlier in the grid if smaller items come up later.\"}],syntax:\"[ row | column ] || dense\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-auto-flow\"}],description:\"Controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid.\",restrictions:[\"enum\"]},{name:\"grid-auto-rows\",values:[{name:\"min-content\",description:\"Represents the largest min-content contribution of the grid items occupying the grid track.\"},{name:\"max-content\",description:\"Represents the largest max-content contribution of the grid items occupying the grid track.\"},{name:\"auto\",description:\"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track.\"},{name:\"minmax()\",description:\"Defines a size range greater than or equal to min and less than or equal to max.\"}],syntax:\"<track-size>+\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-auto-rows\"}],description:\"Specifies the size of implicitly created rows.\",restrictions:[\"length\",\"percentage\"]},{name:\"grid-column\",browsers:[\"E16\",\"FF52\",\"S10.1\",\"C57\",\"O44\"],values:[{name:\"auto\",description:\"The property contributes nothing to the grid item\\u2019s placement, indicating auto-placement, an automatic span, or a default span of one.\"},{name:\"span\",description:\"Contributes a grid span to the grid item\\u2019s placement such that the corresponding edge of the grid item\\u2019s grid area is N lines from its opposite edge.\"}],syntax:\"<grid-line> [ / <grid-line> ]?\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-column\"}],description:\"Shorthand for 'grid-column-start' and 'grid-column-end'.\",restrictions:[\"identifier\",\"integer\",\"enum\"]},{name:\"grid-column-end\",browsers:[\"E16\",\"FF52\",\"S10.1\",\"C57\",\"O44\"],values:[{name:\"auto\",description:\"The property contributes nothing to the grid item\\u2019s placement, indicating auto-placement, an automatic span, or a default span of one.\"},{name:\"span\",description:\"Contributes a grid span to the grid item\\u2019s placement such that the corresponding edge of the grid item\\u2019s grid area is N lines from its opposite edge.\"}],syntax:\"<grid-line>\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-column-end\"}],description:\"Determine a grid item\\u2019s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.\",restrictions:[\"identifier\",\"integer\",\"enum\"]},{name:\"grid-column-gap\",browsers:[\"FF52\",\"C57\",\"S10.1\",\"O44\"],status:\"obsolete\",syntax:\"<length-percentage>\",relevance:2,description:\"Specifies the gutters between grid columns. Replaced by 'column-gap' property.\",restrictions:[\"length\"]},{name:\"grid-column-start\",browsers:[\"E16\",\"FF52\",\"S10.1\",\"C57\",\"O44\"],values:[{name:\"auto\",description:\"The property contributes nothing to the grid item\\u2019s placement, indicating auto-placement, an automatic span, or a default span of one.\"},{name:\"span\",description:\"Contributes a grid span to the grid item\\u2019s placement such that the corresponding edge of the grid item\\u2019s grid area is N lines from its opposite edge.\"}],syntax:\"<grid-line>\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-column-start\"}],description:\"Determine a grid item\\u2019s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.\",restrictions:[\"identifier\",\"integer\",\"enum\"]},{name:\"grid-gap\",browsers:[\"FF52\",\"C57\",\"S10.1\",\"O44\"],status:\"obsolete\",syntax:\"<'grid-row-gap'> <'grid-column-gap'>?\",relevance:3,description:\"Shorthand that specifies the gutters between grid columns and grid rows in one declaration. Replaced by 'gap' property.\",restrictions:[\"length\"]},{name:\"grid-row\",browsers:[\"E16\",\"FF52\",\"S10.1\",\"C57\",\"O44\"],values:[{name:\"auto\",description:\"The property contributes nothing to the grid item\\u2019s placement, indicating auto-placement, an automatic span, or a default span of one.\"},{name:\"span\",description:\"Contributes a grid span to the grid item\\u2019s placement such that the corresponding edge of the grid item\\u2019s grid area is N lines from its opposite edge.\"}],syntax:\"<grid-line> [ / <grid-line> ]?\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-row\"}],description:\"Shorthand for 'grid-row-start' and 'grid-row-end'.\",restrictions:[\"identifier\",\"integer\",\"enum\"]},{name:\"grid-row-end\",browsers:[\"E16\",\"FF52\",\"S10.1\",\"C57\",\"O44\"],values:[{name:\"auto\",description:\"The property contributes nothing to the grid item\\u2019s placement, indicating auto-placement, an automatic span, or a default span of one.\"},{name:\"span\",description:\"Contributes a grid span to the grid item\\u2019s placement such that the corresponding edge of the grid item\\u2019s grid area is N lines from its opposite edge.\"}],syntax:\"<grid-line>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-row-end\"}],description:\"Determine a grid item\\u2019s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.\",restrictions:[\"identifier\",\"integer\",\"enum\"]},{name:\"grid-row-gap\",browsers:[\"FF52\",\"C57\",\"S10.1\",\"O44\"],status:\"obsolete\",syntax:\"<length-percentage>\",relevance:1,description:\"Specifies the gutters between grid rows. Replaced by 'row-gap' property.\",restrictions:[\"length\"]},{name:\"grid-row-start\",browsers:[\"E16\",\"FF52\",\"S10.1\",\"C57\",\"O44\"],values:[{name:\"auto\",description:\"The property contributes nothing to the grid item\\u2019s placement, indicating auto-placement, an automatic span, or a default span of one.\"},{name:\"span\",description:\"Contributes a grid span to the grid item\\u2019s placement such that the corresponding edge of the grid item\\u2019s grid area is N lines from its opposite edge.\"}],syntax:\"<grid-line>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-row-start\"}],description:\"Determine a grid item\\u2019s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.\",restrictions:[\"identifier\",\"integer\",\"enum\"]},{name:\"grid-template\",browsers:[\"E16\",\"FF52\",\"S10.1\",\"C57\",\"O44\"],values:[{name:\"none\",description:\"Sets all three properties to their initial values.\"},{name:\"min-content\",description:\"Represents the largest min-content contribution of the grid items occupying the grid track.\"},{name:\"max-content\",description:\"Represents the largest max-content contribution of the grid items occupying the grid track.\"},{name:\"auto\",description:\"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track.\"},{name:\"subgrid\",description:\"Sets 'grid-template-rows' and 'grid-template-columns' to 'subgrid', and 'grid-template-areas' to its initial value.\"},{name:\"minmax()\",description:\"Defines a size range greater than or equal to min and less than or equal to max.\"},{name:\"repeat()\",description:\"Represents a repeated fragment of the track list, allowing a large number of columns or rows that exhibit a recurring pattern to be written in a more compact form.\"}],syntax:\"none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-template\"}],description:\"Shorthand for setting grid-template-columns, grid-template-rows, and grid-template-areas in a single declaration.\",restrictions:[\"identifier\",\"length\",\"percentage\",\"string\",\"enum\"]},{name:\"grid-template-areas\",browsers:[\"E16\",\"FF52\",\"S10.1\",\"C57\",\"O44\"],values:[{name:\"none\",description:\"The grid container doesn\\u2019t define any named grid areas.\"}],syntax:\"none | <string>+\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-template-areas\"}],description:\"Specifies named grid areas, which are not associated with any particular grid item, but can be referenced from the grid-placement properties.\",restrictions:[\"string\"]},{name:\"grid-template-columns\",values:[{name:\"none\",description:\"There is no explicit grid; any rows/columns will be implicitly generated.\"},{name:\"min-content\",description:\"Represents the largest min-content contribution of the grid items occupying the grid track.\"},{name:\"max-content\",description:\"Represents the largest max-content contribution of the grid items occupying the grid track.\"},{name:\"auto\",description:\"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track.\"},{name:\"subgrid\",description:\"Indicates that the grid will align to its parent grid in that axis.\"},{name:\"minmax()\",description:\"Defines a size range greater than or equal to min and less than or equal to max.\"},{name:\"repeat()\",description:\"Represents a repeated fragment of the track list, allowing a large number of columns or rows that exhibit a recurring pattern to be written in a more compact form.\"}],syntax:\"none | <track-list> | <auto-track-list> | subgrid <line-name-list>?\",relevance:58,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-template-columns\"}],description:\"specifies, as a space-separated track list, the line names and track sizing functions of the grid.\",restrictions:[\"identifier\",\"length\",\"percentage\",\"enum\"]},{name:\"grid-template-rows\",values:[{name:\"none\",description:\"There is no explicit grid; any rows/columns will be implicitly generated.\"},{name:\"min-content\",description:\"Represents the largest min-content contribution of the grid items occupying the grid track.\"},{name:\"max-content\",description:\"Represents the largest max-content contribution of the grid items occupying the grid track.\"},{name:\"auto\",description:\"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track.\"},{name:\"subgrid\",description:\"Indicates that the grid will align to its parent grid in that axis.\"},{name:\"minmax()\",description:\"Defines a size range greater than or equal to min and less than or equal to max.\"},{name:\"repeat()\",description:\"Represents a repeated fragment of the track list, allowing a large number of columns or rows that exhibit a recurring pattern to be written in a more compact form.\"}],syntax:\"none | <track-list> | <auto-track-list> | subgrid <line-name-list>?\",relevance:54,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/grid-template-rows\"}],description:\"specifies, as a space-separated track list, the line names and track sizing functions of the grid.\",restrictions:[\"identifier\",\"length\",\"percentage\",\"string\",\"enum\"]},{name:\"height\",values:[{name:\"auto\",description:\"The height depends on the values of other properties.\"},{name:\"fit-content\",description:\"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode.\"},{name:\"max-content\",description:\"Use the max-content inline size or max-content block size, as appropriate to the writing mode.\"},{name:\"min-content\",description:\"Use the min-content inline size or min-content block size, as appropriate to the writing mode.\"}],syntax:\"<viewport-length>{1,2}\",relevance:96,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/height\"}],description:\"Specifies the height of the content area, padding area or border area (depending on 'box-sizing') of certain boxes.\",restrictions:[\"length\",\"percentage\"]},{name:\"hyphens\",values:[{name:\"auto\",description:\"Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word.\"},{name:\"manual\",description:\"Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities\"},{name:\"none\",description:\"Words are not broken at line breaks, even if characters inside the word suggest line break points.\"}],syntax:\"none | manual | auto\",relevance:55,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/hyphens\"}],description:\"Controls whether hyphenation is allowed to create more break opportunities within a line of text.\",restrictions:[\"enum\"]},{name:\"image-orientation\",browsers:[\"E81\",\"FF26\",\"S13.1\",\"C81\",\"O67\"],values:[{name:\"flip\",description:\"After rotating by the precededing angle, the image is flipped horizontally. Defaults to 0deg if the angle is ommitted.\"},{name:\"from-image\",description:\"If the image has an orientation specified in its metadata, such as EXIF, this value computes to the angle that the metadata specifies is necessary to correctly orient the image.\"}],syntax:\"from-image | <angle> | [ <angle>? flip ]\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/image-orientation\"}],description:\"Specifies an orthogonal rotation to be applied to an image before it is laid out.\",restrictions:[\"angle\"]},{name:\"image-rendering\",browsers:[\"E79\",\"FF3.6\",\"S6\",\"C13\",\"O15\"],values:[{name:\"auto\",description:\"The image should be scaled with an algorithm that maximizes the appearance of the image.\"},{name:\"crisp-edges\",description:\"The image must be scaled with an algorithm that preserves contrast and edges in the image, and which does not smooth colors or introduce blur to the image in the process.\"},{name:\"-moz-crisp-edges\",browsers:[\"E79\",\"FF3.6\",\"S6\",\"C13\",\"O15\"]},{name:\"optimizeQuality\",description:\"Deprecated.\"},{name:\"optimizeSpeed\",description:\"Deprecated.\"},{name:\"pixelated\",description:\"When scaling the image up, the 'nearest neighbor' or similar algorithm must be used, so that the image appears to be simply composed of very large pixels.\"}],syntax:\"auto | crisp-edges | pixelated\",relevance:54,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/image-rendering\"}],description:\"Provides a hint to the user-agent about what aspects of an image are most important to preserve when the image is scaled, to aid the user-agent in the choice of an appropriate scaling algorithm.\",restrictions:[\"enum\"]},{name:\"ime-mode\",browsers:[\"E12\",\"FF3\",\"IE5\"],values:[{name:\"active\",description:\"The input method editor is initially active; text entry is performed using it unless the user specifically dismisses it.\"},{name:\"auto\",description:\"No change is made to the current input method editor state. This is the default.\"},{name:\"disabled\",description:\"The input method editor is disabled and may not be activated by the user.\"},{name:\"inactive\",description:\"The input method editor is initially inactive, but the user may activate it if they wish.\"},{name:\"normal\",description:\"The IME state should be normal; this value can be used in a user style sheet to override the page setting.\"}],status:\"obsolete\",syntax:\"auto | normal | active | inactive | disabled\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/ime-mode\"}],description:\"Controls the state of the input method editor for text fields.\",restrictions:[\"enum\"]},{name:\"inline-size\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C57\",\"O44\"],values:[{name:\"auto\",description:\"Depends on the values of other properties.\"}],syntax:\"<'width'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/inline-size\"}],description:\"Size of an element in the direction specified by 'writing-mode'.\",restrictions:[\"length\",\"percentage\"]},{name:\"isolation\",browsers:[\"E79\",\"FF36\",\"S8\",\"C41\",\"O30\"],values:[{name:\"auto\",description:\"Elements are not isolated unless an operation is applied that causes the creation of a stacking context.\"},{name:\"isolate\",description:\"In CSS will turn the element into a stacking context.\"}],syntax:\"auto | isolate\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/isolation\"}],description:\"In CSS setting to 'isolate' will turn the element into a stacking context. In SVG, it defines whether an element is isolated or not.\",restrictions:[\"enum\"]},{name:\"justify-content\",values:[{name:\"center\",description:\"Flex items are packed toward the center of the line.\"},{name:\"start\",description:\"The items are packed flush to each other toward the start edge of the alignment container in the main axis.\"},{name:\"end\",description:\"The items are packed flush to each other toward the end edge of the alignment container in the main axis.\"},{name:\"left\",description:\"The items are packed flush to each other toward the left edge of the alignment container in the main axis.\"},{name:\"right\",description:\"The items are packed flush to each other toward the right edge of the alignment container in the main axis.\"},{name:\"safe\",description:\"If the size of the item overflows the alignment container, the item is instead aligned as if the alignment mode were start.\"},{name:\"unsafe\",description:\"Regardless of the relative sizes of the item and alignment container, the given alignment value is honored.\"},{name:\"stretch\",description:\"If the combined size of the alignment subjects is less than the size of the alignment container, any auto-sized alignment subjects have their size increased equally (not proportionally), while still respecting the constraints imposed by max-height/max-width (or equivalent functionality), so that the combined size exactly fills the alignment container.\"},{name:\"space-evenly\",description:\"The items are evenly distributed within the alignment container along the main axis.\"},{name:\"flex-end\",description:\"Flex items are packed toward the end of the line.\"},{name:\"flex-start\",description:\"Flex items are packed toward the start of the line.\"},{name:\"space-around\",description:\"Flex items are evenly distributed in the line, with half-size spaces on either end.\"},{name:\"space-between\",description:\"Flex items are evenly distributed in the line.\"},{name:\"baseline\",description:\"Specifies participation in first-baseline alignment.\"},{name:\"first baseline\",description:\"Specifies participation in first-baseline alignment.\"},{name:\"last baseline\",description:\"Specifies participation in last-baseline alignment.\"}],syntax:\"normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]\",relevance:85,description:\"Aligns flex items along the main axis of the current line of the flex container.\",restrictions:[\"enum\"]},{name:\"kerning\",values:[{name:\"auto\",description:\"Indicates that the user agent should adjust inter-glyph spacing based on kerning tables that are included in the font that will be used.\"}],relevance:50,description:\"Indicates whether the user agent should adjust inter-glyph spacing based on kerning tables that are included in the relevant font or instead disable auto-kerning and set inter-character spacing to a specific length.\",restrictions:[\"length\",\"enum\"]},{name:\"left\",values:[{name:\"auto\",description:\"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well\"}],syntax:\"<length> | <percentage> | auto\",relevance:95,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/left\"}],description:\"Specifies how far an absolutely positioned box's left margin edge is offset to the right of the left edge of the box's 'containing block'.\",restrictions:[\"length\",\"percentage\"]},{name:\"letter-spacing\",values:[{name:\"normal\",description:\"The spacing is the normal spacing for the current font. It is typically zero-length.\"}],syntax:\"normal | <length>\",relevance:81,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/letter-spacing\"}],description:\"Specifies the minimum, maximum, and optimal spacing between grapheme clusters.\",restrictions:[\"length\"]},{name:\"lighting-color\",browsers:[\"E\",\"C5\",\"FF3\",\"IE10\",\"O9\",\"S6\"],relevance:50,description:\"Defines the color of the light source for filter primitives 'feDiffuseLighting' and 'feSpecularLighting'.\",restrictions:[\"color\"]},{name:\"line-break\",values:[{name:\"auto\",description:\"The UA determines the set of line-breaking restrictions to use for CJK scripts, and it may vary the restrictions based on the length of the line; e.g., use a less restrictive set of line-break rules for short lines.\"},{name:\"loose\",description:\"Breaks text using the least restrictive set of line-breaking rules. Typically used for short lines, such as in newspapers.\"},{name:\"normal\",description:\"Breaks text using the most common set of line-breaking rules.\"},{name:\"strict\",description:\"Breaks CJK scripts using a more restrictive set of line-breaking rules than 'normal'.\"}],syntax:\"auto | loose | normal | strict | anywhere\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/line-break\"}],description:\"Specifies what set of line breaking restrictions are in effect within the element.\",restrictions:[\"enum\"]},{name:\"line-height\",values:[{name:\"normal\",description:\"Tells user agents to set the computed value to a 'reasonable' value based on the font size of the element.\"}],syntax:\"normal | <number> | <length> | <percentage>\",relevance:93,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/line-height\"}],description:\"Determines the block-progression dimension of the text content area of an inline box.\",restrictions:[\"number\",\"length\",\"percentage\"]},{name:\"list-style\",values:[{name:\"armenian\"},{name:\"circle\",description:\"A hollow circle.\"},{name:\"decimal\"},{name:\"decimal-leading-zero\"},{name:\"disc\",description:\"A filled circle.\"},{name:\"georgian\"},{name:\"inside\",description:\"The marker box is outside the principal block box, as described in the section on the ::marker pseudo-element below.\"},{name:\"lower-alpha\"},{name:\"lower-greek\"},{name:\"lower-latin\"},{name:\"lower-roman\"},{name:\"none\"},{name:\"outside\",description:\"The ::marker pseudo-element is an inline element placed immediately before all ::before pseudo-elements in the principal block box, after which the element's content flows.\"},{name:\"square\",description:\"A filled square.\"},{name:\"symbols()\",description:\"Allows a counter style to be defined inline.\"},{name:\"upper-alpha\"},{name:\"upper-latin\"},{name:\"upper-roman\"},{name:\"url()\"}],syntax:\"<'list-style-type'> || <'list-style-position'> || <'list-style-image'>\",relevance:85,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/list-style\"}],description:\"Shorthand for setting 'list-style-type', 'list-style-position' and 'list-style-image'\",restrictions:[\"image\",\"enum\",\"url\"]},{name:\"list-style-image\",values:[{name:\"none\",description:\"The default contents of the of the list item\\u2019s marker are given by 'list-style-type' instead.\"}],syntax:\"<image> | none\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/list-style-image\"}],description:\"Sets the image that will be used as the list item marker. When the image is available, it will replace the marker set with the 'list-style-type' marker.\",restrictions:[\"image\"]},{name:\"list-style-position\",values:[{name:\"inside\",description:\"The marker box is outside the principal block box, as described in the section on the ::marker pseudo-element below.\"},{name:\"outside\",description:\"The ::marker pseudo-element is an inline element placed immediately before all ::before pseudo-elements in the principal block box, after which the element's content flows.\"}],syntax:\"inside | outside\",relevance:55,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/list-style-position\"}],description:\"Specifies the position of the '::marker' pseudo-element's box in the list item.\",restrictions:[\"enum\"]},{name:\"list-style-type\",values:[{name:\"armenian\",description:\"Traditional uppercase Armenian numbering.\"},{name:\"circle\",description:\"A hollow circle.\"},{name:\"decimal\",description:\"Western decimal numbers.\"},{name:\"decimal-leading-zero\",description:\"Decimal numbers padded by initial zeros.\"},{name:\"disc\",description:\"A filled circle.\"},{name:\"georgian\",description:\"Traditional Georgian numbering.\"},{name:\"lower-alpha\",description:\"Lowercase ASCII letters.\"},{name:\"lower-greek\",description:\"Lowercase classical Greek.\"},{name:\"lower-latin\",description:\"Lowercase ASCII letters.\"},{name:\"lower-roman\",description:\"Lowercase ASCII Roman numerals.\"},{name:\"none\",description:\"No marker\"},{name:\"square\",description:\"A filled square.\"},{name:\"symbols()\",description:\"Allows a counter style to be defined inline.\"},{name:\"upper-alpha\",description:\"Uppercase ASCII letters.\"},{name:\"upper-latin\",description:\"Uppercase ASCII letters.\"},{name:\"upper-roman\",description:\"Uppercase ASCII Roman numerals.\"}],syntax:\"<counter-style> | <string> | none\",relevance:75,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/list-style-type\"}],description:\"Used to construct the default contents of a list item\\u2019s marker\",restrictions:[\"enum\",\"string\"]},{name:\"margin\",values:[{name:\"auto\"}],syntax:\"[ <length> | <percentage> | auto ]{1,4}\",relevance:96,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/margin\"}],description:\"Shorthand property to set values for the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits.\",restrictions:[\"length\",\"percentage\"]},{name:\"margin-block-end\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],values:[{name:\"auto\"}],syntax:\"<'margin-left'>\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/margin-block-end\"}],description:\"Logical 'margin-bottom'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"percentage\"]},{name:\"margin-block-start\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],values:[{name:\"auto\"}],syntax:\"<'margin-left'>\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/margin-block-start\"}],description:\"Logical 'margin-top'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"percentage\"]},{name:\"margin-bottom\",values:[{name:\"auto\"}],syntax:\"<length> | <percentage> | auto\",relevance:92,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/margin-bottom\"}],description:\"Shorthand property to set values for the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..\",restrictions:[\"length\",\"percentage\"]},{name:\"margin-inline-end\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],values:[{name:\"auto\"}],syntax:\"<'margin-left'>\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/margin-inline-end\"}],description:\"Logical 'margin-right'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"percentage\"]},{name:\"margin-inline-start\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],values:[{name:\"auto\"}],syntax:\"<'margin-left'>\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/margin-inline-start\"}],description:\"Logical 'margin-left'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"percentage\"]},{name:\"margin-left\",values:[{name:\"auto\"}],syntax:\"<length> | <percentage> | auto\",relevance:92,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/margin-left\"}],description:\"Shorthand property to set values for the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..\",restrictions:[\"length\",\"percentage\"]},{name:\"margin-right\",values:[{name:\"auto\"}],syntax:\"<length> | <percentage> | auto\",relevance:91,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/margin-right\"}],description:\"Shorthand property to set values for the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..\",restrictions:[\"length\",\"percentage\"]},{name:\"margin-top\",values:[{name:\"auto\"}],syntax:\"<length> | <percentage> | auto\",relevance:95,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/margin-top\"}],description:\"Shorthand property to set values for the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..\",restrictions:[\"length\",\"percentage\"]},{name:\"marker\",values:[{name:\"none\",description:\"Indicates that no marker symbol will be drawn at the given vertex or vertices.\"},{name:\"url()\",description:\"Indicates that the <marker> element referenced will be used.\"}],relevance:50,description:\"Specifies the marker symbol that shall be used for all points on the sets the value for all vertices on the given \\u2018path\\u2019 element or basic shape.\",restrictions:[\"url\"]},{name:\"marker-end\",values:[{name:\"none\",description:\"Indicates that no marker symbol will be drawn at the given vertex or vertices.\"},{name:\"url()\",description:\"Indicates that the <marker> element referenced will be used.\"}],relevance:50,description:\"Specifies the marker that will be drawn at the last vertices of the given markable element.\",restrictions:[\"url\"]},{name:\"marker-mid\",values:[{name:\"none\",description:\"Indicates that no marker symbol will be drawn at the given vertex or vertices.\"},{name:\"url()\",description:\"Indicates that the <marker> element referenced will be used.\"}],relevance:50,description:\"Specifies the marker that will be drawn at all vertices except the first and last.\",restrictions:[\"url\"]},{name:\"marker-start\",values:[{name:\"none\",description:\"Indicates that no marker symbol will be drawn at the given vertex or vertices.\"},{name:\"url()\",description:\"Indicates that the <marker> element referenced will be used.\"}],relevance:50,description:\"Specifies the marker that will be drawn at the first vertices of the given markable element.\",restrictions:[\"url\"]},{name:\"mask-image\",browsers:[\"E79\",\"FF53\",\"S15.4\",\"C1\",\"O15\"],values:[{name:\"none\",description:\"Counts as a transparent black image layer.\"},{name:\"url()\",description:\"Reference to a <mask element or to a CSS image.\"}],syntax:\"<mask-reference>#\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-image\"}],description:\"Sets the mask layer image of an element.\",restrictions:[\"url\",\"image\",\"enum\"]},{name:\"mask-mode\",browsers:[\"FF53\",\"S15.4\"],values:[{name:\"alpha\",description:\"Alpha values of the mask layer image should be used as the mask values.\"},{name:\"auto\",description:\"Use alpha values if 'mask-image' is an image, luminance if a <mask> element or a CSS image.\"},{name:\"luminance\",description:\"Luminance values of the mask layer image should be used as the mask values.\"}],syntax:\"<masking-mode>#\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-mode\"}],description:\"Indicates whether the mask layer image is treated as luminance mask or alpha mask.\",restrictions:[\"url\",\"image\",\"enum\"]},{name:\"mask-origin\",browsers:[\"E79\",\"FF53\",\"S15.4\",\"C1\",\"O15\"],syntax:\"<geometry-box>#\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-origin\"}],description:\"Specifies the mask positioning area.\",restrictions:[\"geometry-box\",\"enum\"]},{name:\"mask-position\",browsers:[\"E79\",\"FF53\",\"S15.4\",\"C1\",\"O15\"],syntax:\"<position>#\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-position\"}],description:\"Specifies how mask layer images are positioned.\",restrictions:[\"position\",\"length\",\"percentage\"]},{name:\"mask-repeat\",browsers:[\"E79\",\"FF53\",\"S15.4\",\"C1\",\"O15\"],syntax:\"<repeat-style>#\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-repeat\"}],description:\"Specifies how mask layer images are tiled after they have been sized and positioned.\",restrictions:[\"repeat\"]},{name:\"mask-size\",browsers:[\"E79\",\"FF53\",\"S15.4\",\"C4\",\"O15\"],values:[{name:\"auto\",description:\"Resolved by using the image\\u2019s intrinsic ratio and the size of the other dimension, or failing that, using the image\\u2019s intrinsic size, or failing that, treating it as 100%.\"},{name:\"contain\",description:\"Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area.\"},{name:\"cover\",description:\"Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area.\"}],syntax:\"<bg-size>#\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-size\"}],description:\"Specifies the size of the mask layer images.\",restrictions:[\"length\",\"percentage\",\"enum\"]},{name:\"mask-type\",browsers:[\"E79\",\"FF35\",\"S7\",\"C24\",\"O15\"],values:[{name:\"alpha\",description:\"Indicates that the alpha values of the mask should be used.\"},{name:\"luminance\",description:\"Indicates that the luminance values of the mask should be used.\"}],syntax:\"luminance | alpha\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-type\"}],description:\"Defines whether the content of the <mask> element is treated as as luminance mask or alpha mask.\",restrictions:[\"enum\"]},{name:\"max-block-size\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C57\",\"O44\"],values:[{name:\"none\",description:\"No limit on the width of the box.\"}],syntax:\"<'max-width'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/max-block-size\"}],description:\"Maximum size of an element in the direction opposite that of the direction specified by 'writing-mode'.\",restrictions:[\"length\",\"percentage\"]},{name:\"max-height\",values:[{name:\"none\",description:\"No limit on the height of the box.\"},{name:\"fit-content\",description:\"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode.\"},{name:\"max-content\",description:\"Use the max-content inline size or max-content block size, as appropriate to the writing mode.\"},{name:\"min-content\",description:\"Use the min-content inline size or min-content block size, as appropriate to the writing mode.\"}],syntax:\"<viewport-length>\",relevance:85,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/max-height\"}],description:\"Allows authors to constrain content height to a certain range.\",restrictions:[\"length\",\"percentage\"]},{name:\"max-inline-size\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C57\",\"O44\"],values:[{name:\"none\",description:\"No limit on the height of the box.\"}],syntax:\"<'max-width'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/max-inline-size\"}],description:\"Maximum size of an element in the direction specified by 'writing-mode'.\",restrictions:[\"length\",\"percentage\"]},{name:\"max-width\",values:[{name:\"none\",description:\"No limit on the width of the box.\"},{name:\"fit-content\",description:\"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode.\"},{name:\"max-content\",description:\"Use the max-content inline size or max-content block size, as appropriate to the writing mode.\"},{name:\"min-content\",description:\"Use the min-content inline size or min-content block size, as appropriate to the writing mode.\"}],syntax:\"<viewport-length>\",relevance:91,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/max-width\"}],description:\"Allows authors to constrain content width to a certain range.\",restrictions:[\"length\",\"percentage\"]},{name:\"min-block-size\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C57\",\"O44\"],syntax:\"<'min-width'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/min-block-size\"}],description:\"Minimal size of an element in the direction opposite that of the direction specified by 'writing-mode'.\",restrictions:[\"length\",\"percentage\"]},{name:\"min-height\",values:[{name:\"auto\"},{name:\"fit-content\",description:\"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode.\"},{name:\"max-content\",description:\"Use the max-content inline size or max-content block size, as appropriate to the writing mode.\"},{name:\"min-content\",description:\"Use the min-content inline size or min-content block size, as appropriate to the writing mode.\"}],syntax:\"<viewport-length>\",relevance:90,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/min-height\"}],description:\"Allows authors to constrain content height to a certain range.\",restrictions:[\"length\",\"percentage\"]},{name:\"min-inline-size\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C57\",\"O44\"],syntax:\"<'min-width'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/min-inline-size\"}],description:\"Minimal size of an element in the direction specified by 'writing-mode'.\",restrictions:[\"length\",\"percentage\"]},{name:\"min-width\",values:[{name:\"auto\"},{name:\"fit-content\",description:\"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode.\"},{name:\"max-content\",description:\"Use the max-content inline size or max-content block size, as appropriate to the writing mode.\"},{name:\"min-content\",description:\"Use the min-content inline size or min-content block size, as appropriate to the writing mode.\"}],syntax:\"<viewport-length>\",relevance:88,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/min-width\"}],description:\"Allows authors to constrain content width to a certain range.\",restrictions:[\"length\",\"percentage\"]},{name:\"mix-blend-mode\",browsers:[\"E79\",\"FF32\",\"S8\",\"C41\",\"O28\"],values:[{name:\"normal\",description:\"Default attribute which specifies no blending\"},{name:\"multiply\",description:\"The source color is multiplied by the destination color and replaces the destination.\"},{name:\"screen\",description:\"Multiplies the complements of the backdrop and source color values, then complements the result.\"},{name:\"overlay\",description:\"Multiplies or screens the colors, depending on the backdrop color value.\"},{name:\"darken\",description:\"Selects the darker of the backdrop and source colors.\"},{name:\"lighten\",description:\"Selects the lighter of the backdrop and source colors.\"},{name:\"color-dodge\",description:\"Brightens the backdrop color to reflect the source color.\"},{name:\"color-burn\",description:\"Darkens the backdrop color to reflect the source color.\"},{name:\"hard-light\",description:\"Multiplies or screens the colors, depending on the source color value.\"},{name:\"soft-light\",description:\"Darkens or lightens the colors, depending on the source color value.\"},{name:\"difference\",description:\"Subtracts the darker of the two constituent colors from the lighter color..\"},{name:\"exclusion\",description:\"Produces an effect similar to that of the Difference mode but lower in contrast.\"},{name:\"hue\",browsers:[\"E79\",\"FF32\",\"S8\",\"C41\",\"O28\"],description:\"Creates a color with the hue of the source color and the saturation and luminosity of the backdrop color.\"},{name:\"saturation\",browsers:[\"E79\",\"FF32\",\"S8\",\"C41\",\"O28\"],description:\"Creates a color with the saturation of the source color and the hue and luminosity of the backdrop color.\"},{name:\"color\",browsers:[\"E79\",\"FF32\",\"S8\",\"C41\",\"O28\"],description:\"Creates a color with the hue and saturation of the source color and the luminosity of the backdrop color.\"},{name:\"luminosity\",browsers:[\"E79\",\"FF32\",\"S8\",\"C41\",\"O28\"],description:\"Creates a color with the luminosity of the source color and the hue and saturation of the backdrop color.\"}],syntax:\"<blend-mode>\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mix-blend-mode\"}],description:\"Defines the formula that must be used to mix the colors with the backdrop.\",restrictions:[\"enum\"]},{name:\"motion\",browsers:[\"C46\",\"O33\"],values:[{name:\"none\",description:\"No motion path gets created.\"},{name:\"path()\",description:\"Defines an SVG path as a string, with optional 'fill-rule' as the first argument.\"},{name:\"auto\",description:\"Indicates that the object is rotated by the angle of the direction of the motion path.\"},{name:\"reverse\",description:\"Indicates that the object is rotated by the angle of the direction of the motion path plus 180 degrees.\"}],relevance:50,description:\"Shorthand property for setting 'motion-path', 'motion-offset' and 'motion-rotation'.\",restrictions:[\"url\",\"length\",\"percentage\",\"angle\",\"shape\",\"geometry-box\",\"enum\"]},{name:\"motion-offset\",browsers:[\"C46\",\"O33\"],relevance:50,description:\"A distance that describes the position along the specified motion path.\",restrictions:[\"length\",\"percentage\"]},{name:\"motion-path\",browsers:[\"C46\",\"O33\"],values:[{name:\"none\",description:\"No motion path gets created.\"},{name:\"path()\",description:\"Defines an SVG path as a string, with optional 'fill-rule' as the first argument.\"}],relevance:50,description:\"Specifies the motion path the element gets positioned at.\",restrictions:[\"url\",\"shape\",\"geometry-box\",\"enum\"]},{name:\"motion-rotation\",browsers:[\"C46\",\"O33\"],values:[{name:\"auto\",description:\"Indicates that the object is rotated by the angle of the direction of the motion path.\"},{name:\"reverse\",description:\"Indicates that the object is rotated by the angle of the direction of the motion path plus 180 degrees.\"}],relevance:50,description:\"Defines the direction of the element while positioning along the motion path.\",restrictions:[\"angle\"]},{name:\"-moz-animation\",browsers:[\"FF9\"],values:[{name:\"alternate\",description:\"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction.\"},{name:\"alternate-reverse\",description:\"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction.\"},{name:\"backwards\",description:\"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'.\"},{name:\"both\",description:\"Both forwards and backwards fill modes are applied.\"},{name:\"forwards\",description:\"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes.\"},{name:\"infinite\",description:\"Causes the animation to repeat forever.\"},{name:\"none\",description:\"No animation is performed\"},{name:\"normal\",description:\"Normal playback.\"},{name:\"reverse\",description:\"All iterations of the animation are played in the reverse direction from the way they were specified.\"}],relevance:50,description:\"Shorthand property combines six of the animation properties into a single property.\",restrictions:[\"time\",\"enum\",\"timing-function\",\"identifier\",\"number\"]},{name:\"-moz-animation-delay\",browsers:[\"FF9\"],relevance:50,description:\"Defines when the animation will start.\",restrictions:[\"time\"]},{name:\"-moz-animation-direction\",browsers:[\"FF9\"],values:[{name:\"alternate\",description:\"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction.\"},{name:\"alternate-reverse\",description:\"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction.\"},{name:\"normal\",description:\"Normal playback.\"},{name:\"reverse\",description:\"All iterations of the animation are played in the reverse direction from the way they were specified.\"}],relevance:50,description:\"Defines whether or not the animation should play in reverse on alternate cycles.\",restrictions:[\"enum\"]},{name:\"-moz-animation-duration\",browsers:[\"FF9\"],relevance:50,description:\"Defines the length of time that an animation takes to complete one cycle.\",restrictions:[\"time\"]},{name:\"-moz-animation-iteration-count\",browsers:[\"FF9\"],values:[{name:\"infinite\",description:\"Causes the animation to repeat forever.\"}],relevance:50,description:\"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.\",restrictions:[\"number\",\"enum\"]},{name:\"-moz-animation-name\",browsers:[\"FF9\"],values:[{name:\"none\",description:\"No animation is performed\"}],relevance:50,description:\"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.\",restrictions:[\"identifier\",\"enum\"]},{name:\"-moz-animation-play-state\",browsers:[\"FF9\"],values:[{name:\"paused\",description:\"A running animation will be paused.\"},{name:\"running\",description:\"Resume playback of a paused animation.\"}],relevance:50,description:\"Defines whether the animation is running or paused.\",restrictions:[\"enum\"]},{name:\"-moz-animation-timing-function\",browsers:[\"FF9\"],relevance:50,description:\"Describes how the animation will progress over one cycle of its duration. See the 'transition-timing-function'.\",restrictions:[\"timing-function\"]},{name:\"-moz-appearance\",browsers:[\"FF1\"],values:[{name:\"button\"},{name:\"button-arrow-down\"},{name:\"button-arrow-next\"},{name:\"button-arrow-previous\"},{name:\"button-arrow-up\"},{name:\"button-bevel\"},{name:\"checkbox\"},{name:\"checkbox-container\"},{name:\"checkbox-label\"},{name:\"dialog\"},{name:\"groupbox\"},{name:\"listbox\"},{name:\"menuarrow\"},{name:\"menuimage\"},{name:\"menuitem\"},{name:\"menuitemtext\"},{name:\"menulist\"},{name:\"menulist-button\"},{name:\"menulist-text\"},{name:\"menulist-textfield\"},{name:\"menupopup\"},{name:\"menuradio\"},{name:\"menuseparator\"},{name:\"-moz-mac-unified-toolbar\"},{name:\"-moz-win-borderless-glass\"},{name:\"-moz-win-browsertabbar-toolbox\"},{name:\"-moz-win-communications-toolbox\"},{name:\"-moz-win-glass\"},{name:\"-moz-win-media-toolbox\"},{name:\"none\"},{name:\"progressbar\"},{name:\"progresschunk\"},{name:\"radio\"},{name:\"radio-container\"},{name:\"radio-label\"},{name:\"radiomenuitem\"},{name:\"resizer\"},{name:\"resizerpanel\"},{name:\"scrollbarbutton-down\"},{name:\"scrollbarbutton-left\"},{name:\"scrollbarbutton-right\"},{name:\"scrollbarbutton-up\"},{name:\"scrollbar-small\"},{name:\"scrollbartrack-horizontal\"},{name:\"scrollbartrack-vertical\"},{name:\"separator\"},{name:\"spinner\"},{name:\"spinner-downbutton\"},{name:\"spinner-textfield\"},{name:\"spinner-upbutton\"},{name:\"statusbar\"},{name:\"statusbarpanel\"},{name:\"tab\"},{name:\"tabpanels\"},{name:\"tab-scroll-arrow-back\"},{name:\"tab-scroll-arrow-forward\"},{name:\"textfield\"},{name:\"textfield-multiline\"},{name:\"toolbar\"},{name:\"toolbox\"},{name:\"tooltip\"},{name:\"treeheadercell\"},{name:\"treeheadersortarrow\"},{name:\"treeitem\"},{name:\"treetwistyopen\"},{name:\"treeview\"},{name:\"treewisty\"},{name:\"window\"}],status:\"nonstandard\",syntax:\"none | button | button-arrow-down | button-arrow-next | button-arrow-previous | button-arrow-up | button-bevel | button-focus | caret | checkbox | checkbox-container | checkbox-label | checkmenuitem | dualbutton | groupbox | listbox | listitem | menuarrow | menubar | menucheckbox | menuimage | menuitem | menuitemtext | menulist | menulist-button | menulist-text | menulist-textfield | menupopup | menuradio | menuseparator | meterbar | meterchunk | progressbar | progressbar-vertical | progresschunk | progresschunk-vertical | radio | radio-container | radio-label | radiomenuitem | range | range-thumb | resizer | resizerpanel | scale-horizontal | scalethumbend | scalethumb-horizontal | scalethumbstart | scalethumbtick | scalethumb-vertical | scale-vertical | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | separator | sheet | spinner | spinner-downbutton | spinner-textfield | spinner-upbutton | splitter | statusbar | statusbarpanel | tab | tabpanel | tabpanels | tab-scroll-arrow-back | tab-scroll-arrow-forward | textfield | textfield-multiline | toolbar | toolbarbutton | toolbarbutton-dropdown | toolbargripper | toolbox | tooltip | treeheader | treeheadercell | treeheadersortarrow | treeitem | treeline | treetwisty | treetwistyopen | treeview | -moz-mac-unified-toolbar | -moz-win-borderless-glass | -moz-win-browsertabbar-toolbox | -moz-win-communicationstext | -moz-win-communications-toolbox | -moz-win-exclude-glass | -moz-win-glass | -moz-win-mediatext | -moz-win-media-toolbox | -moz-window-button-box | -moz-window-button-box-maximized | -moz-window-button-close | -moz-window-button-maximize | -moz-window-button-minimize | -moz-window-button-restore | -moz-window-frame-bottom | -moz-window-frame-left | -moz-window-frame-right | -moz-window-titlebar | -moz-window-titlebar-maximized\",relevance:0,description:\"Used in Gecko (Firefox) to display an element using a platform-native styling based on the operating system's theme.\",restrictions:[\"enum\"]},{name:\"-moz-backface-visibility\",browsers:[\"FF10\"],values:[{name:\"hidden\"},{name:\"visible\"}],relevance:50,description:\"Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.\",restrictions:[\"enum\"]},{name:\"-moz-background-clip\",browsers:[\"FF1-3.6\"],values:[{name:\"padding\"}],relevance:50,description:\"Determines the background painting area.\",restrictions:[\"box\",\"enum\"]},{name:\"-moz-background-inline-policy\",browsers:[\"FF1\"],values:[{name:\"bounding-box\"},{name:\"continuous\"},{name:\"each-box\"}],relevance:50,description:\"In Gecko-based applications like Firefox, the -moz-background-inline-policy CSS property specifies how the background image of an inline element is determined when the content of the inline element wraps onto multiple lines. The choice of position has significant effects on repetition.\",restrictions:[\"enum\"]},{name:\"-moz-background-origin\",browsers:[\"FF1\"],relevance:50,description:\"For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).\",restrictions:[\"box\"]},{name:\"-moz-border-bottom-colors\",browsers:[\"FF1\"],status:\"nonstandard\",syntax:\"<color>+ | none\",relevance:0,description:\"Sets a list of colors for the bottom border.\",restrictions:[\"color\"]},{name:\"-moz-border-image\",browsers:[\"FF3.6\"],values:[{name:\"auto\",description:\"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead.\"},{name:\"fill\",description:\"Causes the middle part of the border-image to be preserved.\"},{name:\"none\"},{name:\"repeat\",description:\"The image is tiled (repeated) to fill the area.\"},{name:\"round\",description:\"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does.\"},{name:\"space\",description:\"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles.\"},{name:\"stretch\",description:\"The image is stretched to fill the area.\"},{name:\"url()\"}],relevance:50,description:\"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.\",restrictions:[\"length\",\"percentage\",\"number\",\"url\",\"enum\"]},{name:\"-moz-border-left-colors\",browsers:[\"FF1\"],status:\"nonstandard\",syntax:\"<color>+ | none\",relevance:0,description:\"Sets a list of colors for the bottom border.\",restrictions:[\"color\"]},{name:\"-moz-border-right-colors\",browsers:[\"FF1\"],status:\"nonstandard\",syntax:\"<color>+ | none\",relevance:0,description:\"Sets a list of colors for the bottom border.\",restrictions:[\"color\"]},{name:\"-moz-border-top-colors\",browsers:[\"FF1\"],status:\"nonstandard\",syntax:\"<color>+ | none\",relevance:0,description:\"Ske Firefox, -moz-border-bottom-colors sets a list of colors for the bottom border.\",restrictions:[\"color\"]},{name:\"-moz-box-align\",browsers:[\"FF1\"],values:[{name:\"baseline\",description:\"If this box orientation is inline-axis or horizontal, all children are placed with their baselines aligned, and extra space placed before or after as necessary. For block flows, the baseline of the first non-empty line box located within the element is used. For tables, the baseline of the first cell is used.\"},{name:\"center\",description:\"Any extra space is divided evenly, with half placed above the child and the other half placed after the child.\"},{name:\"end\",description:\"For normal direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element. For reverse direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element.\"},{name:\"start\",description:\"For normal direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element. For reverse direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element.\"},{name:\"stretch\",description:\"The height of each child is adjusted to that of the containing block.\"}],relevance:50,description:\"Specifies how a XUL box aligns its contents across (perpendicular to) the direction of its layout. The effect of this is only visible if there is extra space in the box.\",restrictions:[\"enum\"]},{name:\"-moz-box-direction\",browsers:[\"FF1\"],values:[{name:\"normal\",description:\"A box with a computed value of horizontal for box-orient displays its children from left to right. A box with a computed value of vertical displays its children from top to bottom.\"},{name:\"reverse\",description:\"A box with a computed value of horizontal for box-orient displays its children from right to left. A box with a computed value of vertical displays its children from bottom to top.\"}],relevance:50,description:\"Specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).\",restrictions:[\"enum\"]},{name:\"-moz-box-flex\",browsers:[\"FF1\"],relevance:50,description:\"Specifies how a box grows to fill the box that contains it, in the direction of the containing box's layout.\",restrictions:[\"number\"]},{name:\"-moz-box-flexgroup\",browsers:[\"FF1\"],relevance:50,description:\"Flexible elements can be assigned to flex groups using the 'box-flex-group' property.\",restrictions:[\"integer\"]},{name:\"-moz-box-ordinal-group\",browsers:[\"FF1\"],relevance:50,description:\"Indicates the ordinal group the element belongs to. Elements with a lower ordinal group are displayed before those with a higher ordinal group.\",restrictions:[\"integer\"]},{name:\"-moz-box-orient\",browsers:[\"FF1\"],values:[{name:\"block-axis\",description:\"Elements are oriented along the box's axis.\"},{name:\"horizontal\",description:\"The box displays its children from left to right in a horizontal line.\"},{name:\"inline-axis\",description:\"Elements are oriented vertically.\"},{name:\"vertical\",description:\"The box displays its children from stacked from top to bottom vertically.\"}],relevance:50,description:\"In Mozilla applications, -moz-box-orient specifies whether a box lays out its contents horizontally or vertically.\",restrictions:[\"enum\"]},{name:\"-moz-box-pack\",browsers:[\"FF1\"],values:[{name:\"center\",description:\"The extra space is divided evenly, with half placed before the first child and the other half placed after the last child.\"},{name:\"end\",description:\"For normal direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child. For reverse direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child.\"},{name:\"justify\",description:\"The space is divided evenly in-between each child, with none of the extra space placed before the first child or after the last child. If there is only one child, treat the pack value as if it were start.\"},{name:\"start\",description:\"For normal direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child. For reverse direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child.\"}],relevance:50,description:\"Specifies how a box packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.\",restrictions:[\"enum\"]},{name:\"-moz-box-sizing\",browsers:[\"FF1\"],values:[{name:\"border-box\",description:\"The specified width and height (and respective min/max properties) on this element determine the border box of the element.\"},{name:\"content-box\",description:\"Behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element.\"},{name:\"padding-box\",description:\"The specified width and height (and respective min/max properties) on this element determine the padding box of the element.\"}],relevance:50,description:\"Box Model addition in CSS3.\",restrictions:[\"enum\"]},{name:\"-moz-column-count\",browsers:[\"FF3.5\"],values:[{name:\"auto\",description:\"Determines the number of columns by the 'column-width' property and the element width.\"}],relevance:50,description:\"Describes the optimal number of columns into which the content of the element will be flowed.\",restrictions:[\"integer\"]},{name:\"-moz-column-gap\",browsers:[\"FF3.5\"],values:[{name:\"normal\",description:\"User agent specific and typically equivalent to 1em.\"}],relevance:50,description:\"Sets the gap between columns. If there is a column rule between columns, it will appear in the middle of the gap.\",restrictions:[\"length\"]},{name:\"-moz-column-rule\",browsers:[\"FF3.5\"],relevance:50,description:\"Shorthand for setting 'column-rule-width', 'column-rule-style', and 'column-rule-color' at the same place in the style sheet. Omitted values are set to their initial values.\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\"]},{name:\"-moz-column-rule-color\",browsers:[\"FF3.5\"],relevance:50,description:\"Sets the color of the column rule\",restrictions:[\"color\"]},{name:\"-moz-column-rule-style\",browsers:[\"FF3.5\"],relevance:50,description:\"Sets the style of the rule between columns of an element.\",restrictions:[\"line-style\"]},{name:\"-moz-column-rule-width\",browsers:[\"FF3.5\"],relevance:50,description:\"Sets the width of the rule between columns. Negative values are not allowed.\",restrictions:[\"length\",\"line-width\"]},{name:\"-moz-columns\",browsers:[\"FF9\"],values:[{name:\"auto\",description:\"The width depends on the values of other properties.\"}],relevance:50,description:\"A shorthand property which sets both 'column-width' and 'column-count'.\",restrictions:[\"length\",\"integer\"]},{name:\"-moz-column-width\",browsers:[\"FF3.5\"],values:[{name:\"auto\",description:\"The width depends on the values of other properties.\"}],relevance:50,description:\"This property describes the width of columns in multicol elements.\",restrictions:[\"length\"]},{name:\"-moz-font-feature-settings\",browsers:[\"FF4\"],values:[{name:'\"c2cs\"'},{name:'\"dlig\"'},{name:'\"kern\"'},{name:'\"liga\"'},{name:'\"lnum\"'},{name:'\"onum\"'},{name:'\"smcp\"'},{name:'\"swsh\"'},{name:'\"tnum\"'},{name:\"normal\",description:\"No change in glyph substitution or positioning occurs.\"},{name:\"off\",browsers:[\"FF4\"]},{name:\"on\",browsers:[\"FF4\"]}],relevance:50,description:\"Provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.\",restrictions:[\"string\",\"integer\"]},{name:\"-moz-hyphens\",browsers:[\"FF9\"],values:[{name:\"auto\",description:\"Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word.\"},{name:\"manual\",description:\"Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities\"},{name:\"none\",description:\"Words are not broken at line breaks, even if characters inside the word suggest line break points.\"}],relevance:50,description:\"Controls whether hyphenation is allowed to create more break opportunities within a line of text.\",restrictions:[\"enum\"]},{name:\"-moz-perspective\",browsers:[\"FF10\"],values:[{name:\"none\",description:\"No perspective transform is applied.\"}],relevance:50,description:\"Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.\",restrictions:[\"length\"]},{name:\"-moz-perspective-origin\",browsers:[\"FF10\"],relevance:50,description:\"Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.\",restrictions:[\"position\",\"percentage\",\"length\"]},{name:\"-moz-text-align-last\",browsers:[\"FF12\"],values:[{name:\"auto\"},{name:\"center\",description:\"The inline contents are centered within the line box.\"},{name:\"justify\",description:\"The text is justified according to the method specified by the 'text-justify' property.\"},{name:\"left\",description:\"The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text.\"},{name:\"right\",description:\"The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text.\"}],relevance:50,description:\"Describes how the last line of a block or a line right before a forced line break is aligned when 'text-align' is set to 'justify'.\",restrictions:[\"enum\"]},{name:\"-moz-text-decoration-color\",browsers:[\"FF6\"],relevance:50,description:\"Specifies the color of text decoration (underlines overlines, and line-throughs) set on the element with text-decoration-line.\",restrictions:[\"color\"]},{name:\"-moz-text-decoration-line\",browsers:[\"FF6\"],values:[{name:\"line-through\",description:\"Each line of text has a line through the middle.\"},{name:\"none\",description:\"Neither produces nor inhibits text decoration.\"},{name:\"overline\",description:\"Each line of text has a line above it.\"},{name:\"underline\",description:\"Each line of text is underlined.\"}],relevance:50,description:\"Specifies what line decorations, if any, are added to the element.\",restrictions:[\"enum\"]},{name:\"-moz-text-decoration-style\",browsers:[\"FF6\"],values:[{name:\"dashed\",description:\"Produces a dashed line style.\"},{name:\"dotted\",description:\"Produces a dotted line.\"},{name:\"double\",description:\"Produces a double line.\"},{name:\"none\",description:\"Produces no line.\"},{name:\"solid\",description:\"Produces a solid line.\"},{name:\"wavy\",description:\"Produces a wavy line.\"}],relevance:50,description:\"Specifies the line style for underline, line-through and overline text decoration.\",restrictions:[\"enum\"]},{name:\"-moz-text-size-adjust\",browsers:[\"FF\"],values:[{name:\"auto\",description:\"Renderers must use the default size adjustment when displaying on a small device.\"},{name:\"none\",description:\"Renderers must not do size adjustment when displaying on a small device.\"}],relevance:50,description:\"Specifies a size adjustment for displaying text content in mobile browsers.\",restrictions:[\"enum\",\"percentage\"]},{name:\"-moz-transform\",browsers:[\"FF3.5\"],values:[{name:\"matrix()\",description:\"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]\"},{name:\"matrix3d()\",description:\"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order.\"},{name:\"none\"},{name:\"perspective\",description:\"Specifies a perspective projection matrix.\"},{name:\"rotate()\",description:\"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property.\"},{name:\"rotate3d()\",description:\"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters.\"},{name:\"rotateX('angle')\",description:\"Specifies a clockwise rotation by the given angle about the X axis.\"},{name:\"rotateY('angle')\",description:\"Specifies a clockwise rotation by the given angle about the Y axis.\"},{name:\"rotateZ('angle')\",description:\"Specifies a clockwise rotation by the given angle about the Z axis.\"},{name:\"scale()\",description:\"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first.\"},{name:\"scale3d()\",description:\"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters.\"},{name:\"scaleX()\",description:\"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter.\"},{name:\"scaleY()\",description:\"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter.\"},{name:\"scaleZ()\",description:\"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter.\"},{name:\"skew()\",description:\"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis).\"},{name:\"skewX()\",description:\"Specifies a skew transformation along the X axis by the given angle.\"},{name:\"skewY()\",description:\"Specifies a skew transformation along the Y axis by the given angle.\"},{name:\"translate()\",description:\"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter.\"},{name:\"translate3d()\",description:\"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively.\"},{name:\"translateX()\",description:\"Specifies a translation by the given amount in the X direction.\"},{name:\"translateY()\",description:\"Specifies a translation by the given amount in the Y direction.\"},{name:\"translateZ()\",description:\"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0.\"}],relevance:50,description:\"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.\",restrictions:[\"enum\"]},{name:\"-moz-transform-origin\",browsers:[\"FF3.5\"],relevance:50,description:\"Establishes the origin of transformation for an element.\",restrictions:[\"position\",\"length\",\"percentage\"]},{name:\"-moz-transition\",browsers:[\"FF4\"],values:[{name:\"all\",description:\"Every property that is able to undergo a transition will do so.\"},{name:\"none\",description:\"No property will transition.\"}],relevance:50,description:\"Shorthand property combines four of the transition properties into a single property.\",restrictions:[\"time\",\"property\",\"timing-function\",\"enum\"]},{name:\"-moz-transition-delay\",browsers:[\"FF4\"],relevance:50,description:\"Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.\",restrictions:[\"time\"]},{name:\"-moz-transition-duration\",browsers:[\"FF4\"],relevance:50,description:\"Specifies how long the transition from the old value to the new value should take.\",restrictions:[\"time\"]},{name:\"-moz-transition-property\",browsers:[\"FF4\"],values:[{name:\"all\",description:\"Every property that is able to undergo a transition will do so.\"},{name:\"none\",description:\"No property will transition.\"}],relevance:50,description:\"Specifies the name of the CSS property to which the transition is applied.\",restrictions:[\"property\"]},{name:\"-moz-transition-timing-function\",browsers:[\"FF4\"],relevance:50,description:\"Describes how the intermediate values used during a transition will be calculated.\",restrictions:[\"timing-function\"]},{name:\"-moz-user-focus\",browsers:[\"FF1\"],values:[{name:\"ignore\"},{name:\"normal\"}],status:\"nonstandard\",syntax:\"ignore | normal | select-after | select-before | select-menu | select-same | select-all | none\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-user-focus\"}],description:\"Used to indicate whether the element can have focus.\"},{name:\"-moz-user-select\",browsers:[\"FF1.5\"],values:[{name:\"all\"},{name:\"element\"},{name:\"elements\"},{name:\"-moz-all\"},{name:\"-moz-none\"},{name:\"none\"},{name:\"text\"},{name:\"toggle\"}],relevance:50,description:\"Controls the appearance of selection.\",restrictions:[\"enum\"]},{name:\"-ms-accelerator\",browsers:[\"E\",\"IE10\"],values:[{name:\"false\",description:\"The element does not contain an accelerator key sequence.\"},{name:\"true\",description:\"The element contains an accelerator key sequence.\"}],status:\"nonstandard\",syntax:\"false | true\",relevance:0,description:\"IE only. Has the ability to turn off its system underlines for accelerator keys until the ALT key is pressed\",restrictions:[\"enum\"]},{name:\"-ms-behavior\",browsers:[\"IE8\"],relevance:50,description:\"IE only. Used to extend behaviors of the browser\",restrictions:[\"url\"]},{name:\"-ms-block-progression\",browsers:[\"IE8\"],values:[{name:\"bt\",description:\"Bottom-to-top block flow. Layout is horizontal.\"},{name:\"lr\",description:\"Left-to-right direction. The flow orientation is vertical.\"},{name:\"rl\",description:\"Right-to-left direction. The flow orientation is vertical.\"},{name:\"tb\",description:\"Top-to-bottom direction. The flow orientation is horizontal.\"}],status:\"nonstandard\",syntax:\"tb | rl | bt | lr\",relevance:0,description:\"Sets the block-progression value and the flow orientation\",restrictions:[\"enum\"]},{name:\"-ms-content-zoom-chaining\",browsers:[\"E\",\"IE10\"],values:[{name:\"chained\",description:\"The nearest zoomable parent element begins zooming when the user hits a zoom limit during a manipulation. No bounce effect is shown.\"},{name:\"none\",description:\"A bounce effect is shown when the user hits a zoom limit during a manipulation.\"}],status:\"nonstandard\",syntax:\"none | chained\",relevance:0,description:\"Specifies the zoom behavior that occurs when a user hits the zoom limit during a manipulation.\"},{name:\"-ms-content-zooming\",browsers:[\"E\",\"IE10\"],values:[{name:\"none\",description:\"The element is not zoomable.\"},{name:\"zoom\",description:\"The element is zoomable.\"}],status:\"nonstandard\",syntax:\"none | zoom\",relevance:0,description:\"Specifies whether zooming is enabled.\",restrictions:[\"enum\"]},{name:\"-ms-content-zoom-limit\",browsers:[\"E\",\"IE10\"],status:\"nonstandard\",syntax:\"<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>\",relevance:0,description:\"Shorthand property for the -ms-content-zoom-limit-min and -ms-content-zoom-limit-max properties.\",restrictions:[\"percentage\"]},{name:\"-ms-content-zoom-limit-max\",browsers:[\"E\",\"IE10\"],status:\"nonstandard\",syntax:\"<percentage>\",relevance:0,description:\"Specifies the maximum zoom factor.\",restrictions:[\"percentage\"]},{name:\"-ms-content-zoom-limit-min\",browsers:[\"E\",\"IE10\"],status:\"nonstandard\",syntax:\"<percentage>\",relevance:0,description:\"Specifies the minimum zoom factor.\",restrictions:[\"percentage\"]},{name:\"-ms-content-zoom-snap\",browsers:[\"E\",\"IE10\"],values:[{name:\"mandatory\",description:\"Indicates that the motion of the content after the contact is picked up is always adjusted so that it lands on a snap-point.\"},{name:\"none\",description:\"Indicates that zooming is unaffected by any defined snap-points.\"},{name:\"proximity\",description:'Indicates that the motion of the content after the contact is picked up may be adjusted if the content would normally stop \"close enough\" to a snap-point.'},{name:\"snapInterval(100%, 100%)\",description:\"Specifies where the snap-points will be placed.\"},{name:\"snapList()\",description:\"Specifies the position of individual snap-points as a comma-separated list of zoom factors.\"}],status:\"nonstandard\",syntax:\"<'-ms-content-zoom-snap-type'> || <'-ms-content-zoom-snap-points'>\",relevance:0,description:\"Shorthand property for the -ms-content-zoom-snap-type and -ms-content-zoom-snap-points properties.\"},{name:\"-ms-content-zoom-snap-points\",browsers:[\"E\",\"IE10\"],values:[{name:\"snapInterval(100%, 100%)\",description:\"Specifies where the snap-points will be placed.\"},{name:\"snapList()\",description:\"Specifies the position of individual snap-points as a comma-separated list of zoom factors.\"}],status:\"nonstandard\",syntax:\"snapInterval( <percentage>, <percentage> ) | snapList( <percentage># )\",relevance:0,description:\"Defines where zoom snap-points are located.\"},{name:\"-ms-content-zoom-snap-type\",browsers:[\"E\",\"IE10\"],values:[{name:\"mandatory\",description:\"Indicates that the motion of the content after the contact is picked up is always adjusted so that it lands on a snap-point.\"},{name:\"none\",description:\"Indicates that zooming is unaffected by any defined snap-points.\"},{name:\"proximity\",description:'Indicates that the motion of the content after the contact is picked up may be adjusted if the content would normally stop \"close enough\" to a snap-point.'}],status:\"nonstandard\",syntax:\"none | proximity | mandatory\",relevance:0,description:\"Specifies how zooming is affected by defined snap-points.\",restrictions:[\"enum\"]},{name:\"-ms-filter\",browsers:[\"IE8-9\"],status:\"nonstandard\",syntax:\"<string>\",relevance:0,description:\"IE only. Used to produce visual effects.\",restrictions:[\"string\"]},{name:\"-ms-flex\",browsers:[\"IE10\"],values:[{name:\"auto\",description:\"Retrieves the value of the main size property as the used 'flex-basis'.\"},{name:\"none\",description:\"Expands to '0 0 auto'.\"}],relevance:50,description:\"specifies the parameters of a flexible length: the positive and negative flexibility, and the preferred size.\",restrictions:[\"length\",\"number\",\"percentage\"]},{name:\"-ms-flex-align\",browsers:[\"IE10\"],values:[{name:\"baseline\",description:\"If the flex item\\u2019s inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment.\"},{name:\"center\",description:\"The flex item\\u2019s margin box is centered in the cross axis within the line.\"},{name:\"end\",description:\"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line.\"},{name:\"start\",description:\"The cross-start margin edge of the flexbox item is placed flush with the cross-start edge of the line.\"},{name:\"stretch\",description:\"If the cross size property of the flexbox item is anything other than 'auto', this value is identical to 'start'.\"}],relevance:50,description:\"Aligns flex items along the cross axis of the current line of the flex container.\",restrictions:[\"enum\"]},{name:\"-ms-flex-direction\",browsers:[\"IE10\"],values:[{name:\"column\",description:\"The flex container\\u2019s main axis has the same orientation as the block axis of the current writing mode.\"},{name:\"column-reverse\",description:\"Same as 'column', except the main-start and main-end directions are swapped.\"},{name:\"row\",description:\"The flex container\\u2019s main axis has the same orientation as the inline axis of the current writing mode.\"},{name:\"row-reverse\",description:\"Same as 'row', except the main-start and main-end directions are swapped.\"}],relevance:50,description:\"Specifies how flex items are placed in the flex container, by setting the direction of the flex container\\u2019s main axis.\",restrictions:[\"enum\"]},{name:\"-ms-flex-flow\",browsers:[\"IE10\"],values:[{name:\"column\",description:\"The flex container\\u2019s main axis has the same orientation as the block axis of the current writing mode.\"},{name:\"column-reverse\",description:\"Same as 'column', except the main-start and main-end directions are swapped.\"},{name:\"nowrap\",description:\"The flex container is single-line.\"},{name:\"row\",description:\"The flex container\\u2019s main axis has the same orientation as the inline axis of the current writing mode.\"},{name:\"wrap\",description:\"The flexbox is multi-line.\"},{name:\"wrap-reverse\",description:\"Same as 'wrap', except the cross-start and cross-end directions are swapped.\"}],relevance:50,description:\"Specifies how flexbox items are placed in the flexbox.\",restrictions:[\"enum\"]},{name:\"-ms-flex-item-align\",browsers:[\"IE10\"],values:[{name:\"auto\",description:\"Computes to the value of 'align-items' on the element\\u2019s parent, or 'stretch' if the element has no parent. On absolutely positioned elements, it computes to itself.\"},{name:\"baseline\",description:\"If the flex item\\u2019s inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment.\"},{name:\"center\",description:\"The flex item\\u2019s margin box is centered in the cross axis within the line.\"},{name:\"end\",description:\"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line.\"},{name:\"start\",description:\"The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line.\"},{name:\"stretch\",description:\"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched.\"}],relevance:50,description:\"Allows the default alignment along the cross axis to be overridden for individual flex items.\",restrictions:[\"enum\"]},{name:\"-ms-flex-line-pack\",browsers:[\"IE10\"],values:[{name:\"center\",description:\"Lines are packed toward the center of the flex container.\"},{name:\"distribute\",description:\"Lines are evenly distributed in the flex container, with half-size spaces on either end.\"},{name:\"end\",description:\"Lines are packed toward the end of the flex container.\"},{name:\"justify\",description:\"Lines are evenly distributed in the flex container.\"},{name:\"start\",description:\"Lines are packed toward the start of the flex container.\"},{name:\"stretch\",description:\"Lines stretch to take up the remaining space.\"}],relevance:50,description:\"Aligns a flex container\\u2019s lines within the flex container when there is extra space in the cross-axis, similar to how 'justify-content' aligns individual items within the main-axis.\",restrictions:[\"enum\"]},{name:\"-ms-flex-order\",browsers:[\"IE10\"],relevance:50,description:\"Controls the order in which children of a flex container appear within the flex container, by assigning them to ordinal groups.\",restrictions:[\"integer\"]},{name:\"-ms-flex-pack\",browsers:[\"IE10\"],values:[{name:\"center\",description:\"Flex items are packed toward the center of the line.\"},{name:\"distribute\",description:\"Flex items are evenly distributed in the line, with half-size spaces on either end.\"},{name:\"end\",description:\"Flex items are packed toward the end of the line.\"},{name:\"justify\",description:\"Flex items are evenly distributed in the line.\"},{name:\"start\",description:\"Flex items are packed toward the start of the line.\"}],relevance:50,description:\"Aligns flex items along the main axis of the current line of the flex container.\",restrictions:[\"enum\"]},{name:\"-ms-flex-wrap\",browsers:[\"IE10\"],values:[{name:\"nowrap\",description:\"The flex container is single-line.\"},{name:\"wrap\",description:\"The flexbox is multi-line.\"},{name:\"wrap-reverse\",description:\"Same as 'wrap', except the cross-start and cross-end directions are swapped.\"}],relevance:50,description:\"Controls whether the flex container is single-line or multi-line, and the direction of the cross-axis, which determines the direction new lines are stacked in.\",restrictions:[\"enum\"]},{name:\"-ms-flow-from\",browsers:[\"E\",\"IE10\"],values:[{name:\"none\",description:\"The block container is not a CSS Region.\"}],status:\"nonstandard\",syntax:\"[ none | <custom-ident> ]#\",relevance:0,description:\"Makes a block container a region and associates it with a named flow.\",restrictions:[\"identifier\"]},{name:\"-ms-flow-into\",browsers:[\"E\",\"IE10\"],values:[{name:\"none\",description:\"The element is not moved to a named flow and normal CSS processing takes place.\"}],status:\"nonstandard\",syntax:\"[ none | <custom-ident> ]#\",relevance:0,description:\"Places an element or its contents into a named flow.\",restrictions:[\"identifier\"]},{name:\"-ms-grid-column\",browsers:[\"E12\",\"IE10\"],values:[{name:\"auto\"},{name:\"end\"},{name:\"start\"}],relevance:50,description:\"Used to place grid items and explicitly defined grid cells in the Grid.\",restrictions:[\"integer\",\"string\",\"enum\"]},{name:\"-ms-grid-column-align\",browsers:[\"E12\",\"IE10\"],values:[{name:\"center\",description:\"Places the center of the Grid Item's margin box at the center of the Grid Item's column.\"},{name:\"end\",description:\"Aligns the end edge of the Grid Item's margin box to the end edge of the Grid Item's column.\"},{name:\"start\",description:\"Aligns the starting edge of the Grid Item's margin box to the starting edge of the Grid Item's column.\"},{name:\"stretch\",description:\"Ensures that the Grid Item's margin box is equal to the size of the Grid Item's column.\"}],relevance:50,description:\"Aligns the columns in a grid.\",restrictions:[\"enum\"]},{name:\"-ms-grid-columns\",browsers:[\"E\",\"IE10\"],status:\"nonstandard\",syntax:\"none | <track-list> | <auto-track-list>\",relevance:0,description:\"Lays out the columns of the grid.\"},{name:\"-ms-grid-column-span\",browsers:[\"E12\",\"IE10\"],relevance:50,description:\"Specifies the number of columns to span.\",restrictions:[\"integer\"]},{name:\"-ms-grid-layer\",browsers:[\"E\",\"IE10\"],relevance:50,description:\"Grid-layer is similar in concept to z-index, but avoids overloading the meaning of the z-index property, which is applicable only to positioned elements.\",restrictions:[\"integer\"]},{name:\"-ms-grid-row\",browsers:[\"E12\",\"IE10\"],values:[{name:\"auto\"},{name:\"end\"},{name:\"start\"}],relevance:50,description:\"grid-row is used to place grid items and explicitly defined grid cells in the Grid.\",restrictions:[\"integer\",\"string\",\"enum\"]},{name:\"-ms-grid-row-align\",browsers:[\"E12\",\"IE10\"],values:[{name:\"center\",description:\"Places the center of the Grid Item's margin box at the center of the Grid Item's row.\"},{name:\"end\",description:\"Aligns the end edge of the Grid Item's margin box to the end edge of the Grid Item's row.\"},{name:\"start\",description:\"Aligns the starting edge of the Grid Item's margin box to the starting edge of the Grid Item's row.\"},{name:\"stretch\",description:\"Ensures that the Grid Item's margin box is equal to the size of the Grid Item's row.\"}],relevance:50,description:\"Aligns the rows in a grid.\",restrictions:[\"enum\"]},{name:\"-ms-grid-rows\",browsers:[\"E\",\"IE10\"],status:\"nonstandard\",syntax:\"none | <track-list> | <auto-track-list>\",relevance:0,description:\"Lays out the columns of the grid.\"},{name:\"-ms-grid-row-span\",browsers:[\"E12\",\"IE10\"],relevance:50,description:\"Specifies the number of rows to span.\",restrictions:[\"integer\"]},{name:\"-ms-high-contrast-adjust\",browsers:[\"E\",\"IE10\"],values:[{name:\"auto\",description:\"Properties will be adjusted as applicable.\"},{name:\"none\",description:\"No adjustments will be applied.\"}],status:\"nonstandard\",syntax:\"auto | none\",relevance:0,description:\"Specifies if properties should be adjusted in high contrast mode.\",restrictions:[\"enum\"]},{name:\"-ms-hyphenate-limit-chars\",browsers:[\"E\",\"IE10\"],values:[{name:\"auto\",description:\"The user agent chooses a value that adapts to the current layout.\"}],status:\"nonstandard\",syntax:\"auto | <integer>{1,3}\",relevance:0,description:\"Specifies the minimum number of characters in a hyphenated word.\",restrictions:[\"integer\"]},{name:\"-ms-hyphenate-limit-lines\",browsers:[\"E\",\"IE10\"],values:[{name:\"no-limit\",description:\"There is no limit.\"}],status:\"nonstandard\",syntax:\"no-limit | <integer>\",relevance:0,description:\"Indicates the maximum number of successive hyphenated lines in an element.\",restrictions:[\"integer\"]},{name:\"-ms-hyphenate-limit-zone\",browsers:[\"E\",\"IE10\"],status:\"nonstandard\",syntax:\"<percentage> | <length>\",relevance:0,description:\"Specifies the maximum amount of unfilled space (before justification) that may be left in the line box before hyphenation is triggered to pull part of a word from the next line back up into the current line.\",restrictions:[\"percentage\",\"length\"]},{name:\"-ms-hyphens\",browsers:[\"E\",\"IE10\"],values:[{name:\"auto\",description:\"Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word.\"},{name:\"manual\",description:\"Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities\"},{name:\"none\",description:\"Words are not broken at line breaks, even if characters inside the word suggest line break points.\"}],relevance:50,description:\"Controls whether hyphenation is allowed to create more break opportunities within a line of text.\",restrictions:[\"enum\"]},{name:\"-ms-ime-mode\",browsers:[\"IE10\"],values:[{name:\"active\",description:\"The input method editor is initially active; text entry is performed using it unless the user specifically dismisses it.\"},{name:\"auto\",description:\"No change is made to the current input method editor state. This is the default.\"},{name:\"disabled\",description:\"The input method editor is disabled and may not be activated by the user.\"},{name:\"inactive\",description:\"The input method editor is initially inactive, but the user may activate it if they wish.\"},{name:\"normal\",description:\"The IME state should be normal; this value can be used in a user style sheet to override the page setting.\"}],relevance:50,description:\"Controls the state of the input method editor for text fields.\",restrictions:[\"enum\"]},{name:\"-ms-interpolation-mode\",browsers:[\"IE7\"],values:[{name:\"bicubic\"},{name:\"nearest-neighbor\"}],relevance:50,description:\"Gets or sets the interpolation (resampling) method used to stretch images.\",restrictions:[\"enum\"]},{name:\"-ms-layout-grid\",browsers:[\"E\",\"IE10\"],values:[{name:\"char\",description:\"Any of the range of character values available to the -ms-layout-grid-char property.\"},{name:\"line\",description:\"Any of the range of line values available to the -ms-layout-grid-line property.\"},{name:\"mode\",description:\"Any of the range of mode values available to the -ms-layout-grid-mode property.\"},{name:\"type\",description:\"Any of the range of type values available to the -ms-layout-grid-type property.\"}],relevance:50,description:\"Sets or retrieves the composite document grid properties that specify the layout of text characters.\"},{name:\"-ms-layout-grid-char\",browsers:[\"E\",\"IE10\"],values:[{name:\"auto\",description:\"Largest character in the font of the element is used to set the character grid.\"},{name:\"none\",description:\"Default. No character grid is set.\"}],relevance:50,description:\"Sets or retrieves the size of the character grid used for rendering the text content of an element.\",restrictions:[\"enum\",\"length\",\"percentage\"]},{name:\"-ms-layout-grid-line\",browsers:[\"E\",\"IE10\"],values:[{name:\"auto\",description:\"Largest character in the font of the element is used to set the character grid.\"},{name:\"none\",description:\"Default. No grid line is set.\"}],relevance:50,description:\"Sets or retrieves the gridline value used for rendering the text content of an element.\",restrictions:[\"length\"]},{name:\"-ms-layout-grid-mode\",browsers:[\"E\",\"IE10\"],values:[{name:\"both\",description:\"Default. Both the char and line grid modes are enabled. This setting is necessary to fully enable the layout grid on an element.\"},{name:\"char\",description:\"Only a character grid is used. This is recommended for use with block-level elements, such as a blockquote, where the line grid is intended to be disabled.\"},{name:\"line\",description:\"Only a line grid is used. This is recommended for use with inline elements, such as a span, to disable the horizontal grid on runs of text that act as a single entity in the grid layout.\"},{name:\"none\",description:\"No grid is used.\"}],relevance:50,description:\"Gets or sets whether the text layout grid uses two dimensions.\",restrictions:[\"enum\"]},{name:\"-ms-layout-grid-type\",browsers:[\"E\",\"IE10\"],values:[{name:\"fixed\",description:\"Grid used for monospaced layout. All noncursive characters are treated as equal; every character is centered within a single grid space by default.\"},{name:\"loose\",description:\"Default. Grid used for Japanese and Korean characters.\"},{name:\"strict\",description:\"Grid used for Chinese, as well as Japanese (Genko) and Korean characters. Only the ideographs, kanas, and wide characters are snapped to the grid.\"}],relevance:50,description:\"Sets or retrieves the type of grid used for rendering the text content of an element.\",restrictions:[\"enum\"]},{name:\"-ms-line-break\",browsers:[\"E\",\"IE10\"],values:[{name:\"auto\",description:\"The UA determines the set of line-breaking restrictions to use for CJK scripts, and it may vary the restrictions based on the length of the line; e.g., use a less restrictive set of line-break rules for short lines.\"},{name:\"keep-all\",description:\"Sequences of CJK characters can no longer break on implied break points. This option should only be used where the presence of word separator characters still creates line-breaking opportunities, as in Korean.\"},{name:\"newspaper\",description:\"Breaks CJK scripts using the least restrictive set of line-breaking rules. Typically used for short lines, such as in newspapers.\"},{name:\"normal\",description:\"Breaks CJK scripts using a normal set of line-breaking rules.\"},{name:\"strict\",description:\"Breaks CJK scripts using a more restrictive set of line-breaking rules than 'normal'.\"}],relevance:50,description:\"Specifies what set of line breaking restrictions are in effect within the element.\",restrictions:[\"enum\"]},{name:\"-ms-overflow-style\",browsers:[\"E\",\"IE10\"],values:[{name:\"auto\",description:\"No preference, UA should use the first scrolling method in the list that it supports.\"},{name:\"-ms-autohiding-scrollbar\",description:\"Indicates the element displays auto-hiding scrollbars during mouse interactions and panning indicators during touch and keyboard interactions.\"},{name:\"none\",description:\"Indicates the element does not display scrollbars or panning indicators, even when its content overflows.\"},{name:\"scrollbar\",description:'Scrollbars are typically narrow strips inserted on one or two edges of an element and which often have arrows to click on and a \"thumb\" to drag up and down (or left and right) to move the contents of the element.'}],status:\"nonstandard\",syntax:\"auto | none | scrollbar | -ms-autohiding-scrollbar\",relevance:0,description:\"Specify whether content is clipped when it overflows the element's content area.\",restrictions:[\"enum\"]},{name:\"-ms-perspective\",browsers:[\"IE10\"],values:[{name:\"none\",description:\"No perspective transform is applied.\"}],relevance:50,description:\"Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.\",restrictions:[\"length\"]},{name:\"-ms-perspective-origin\",browsers:[\"IE10\"],relevance:50,description:\"Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.\",restrictions:[\"position\",\"percentage\",\"length\"]},{name:\"-ms-perspective-origin-x\",browsers:[\"IE10\"],relevance:50,description:\"Establishes the origin for the perspective property. It effectively sets the X  position at which the viewer appears to be looking at the children of the element.\",restrictions:[\"position\",\"percentage\",\"length\"]},{name:\"-ms-perspective-origin-y\",browsers:[\"IE10\"],relevance:50,description:\"Establishes the origin for the perspective property. It effectively sets the Y position at which the viewer appears to be looking at the children of the element.\",restrictions:[\"position\",\"percentage\",\"length\"]},{name:\"-ms-progress-appearance\",browsers:[\"IE10\"],values:[{name:\"bar\"},{name:\"ring\"}],relevance:50,description:\"Gets or sets a value that specifies whether a progress control displays as a bar or a ring.\",restrictions:[\"enum\"]},{name:\"-ms-scrollbar-3dlight-color\",browsers:[\"IE8\"],status:\"nonstandard\",syntax:\"<color>\",relevance:0,description:\"Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.\",restrictions:[\"color\"]},{name:\"-ms-scrollbar-arrow-color\",browsers:[\"IE8\"],status:\"nonstandard\",syntax:\"<color>\",relevance:0,description:\"Determines the color of the arrow elements of a scroll arrow.\",restrictions:[\"color\"]},{name:\"-ms-scrollbar-base-color\",browsers:[\"IE8\"],status:\"nonstandard\",syntax:\"<color>\",relevance:0,description:\"Determines the color of the main elements of a scroll bar, which include the scroll box, track, and scroll arrows.\",restrictions:[\"color\"]},{name:\"-ms-scrollbar-darkshadow-color\",browsers:[\"IE8\"],status:\"nonstandard\",syntax:\"<color>\",relevance:0,description:\"Determines the color of the gutter of a scroll bar.\",restrictions:[\"color\"]},{name:\"-ms-scrollbar-face-color\",browsers:[\"IE8\"],status:\"nonstandard\",syntax:\"<color>\",relevance:0,description:\"Determines the color of the scroll box and scroll arrows of a scroll bar.\",restrictions:[\"color\"]},{name:\"-ms-scrollbar-highlight-color\",browsers:[\"IE8\"],status:\"nonstandard\",syntax:\"<color>\",relevance:0,description:\"Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.\",restrictions:[\"color\"]},{name:\"-ms-scrollbar-shadow-color\",browsers:[\"IE8\"],status:\"nonstandard\",syntax:\"<color>\",relevance:0,description:\"Determines the color of the bottom and right edges of the scroll box and scroll arrows of a scroll bar.\",restrictions:[\"color\"]},{name:\"-ms-scrollbar-track-color\",browsers:[\"IE5\"],status:\"nonstandard\",syntax:\"<color>\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-track-color\"}],description:\"Determines the color of the track element of a scroll bar.\",restrictions:[\"color\"]},{name:\"-ms-scroll-chaining\",browsers:[\"E\",\"IE10\"],values:[{name:\"chained\"},{name:\"none\"}],status:\"nonstandard\",syntax:\"chained | none\",relevance:0,description:\"Gets or sets a value that indicates the scrolling behavior that occurs when a user hits the content boundary during a manipulation.\",restrictions:[\"enum\",\"length\"]},{name:\"-ms-scroll-limit\",browsers:[\"E\",\"IE10\"],values:[{name:\"auto\"}],status:\"nonstandard\",syntax:\"<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>\",relevance:0,description:\"Gets or sets a shorthand value that sets values for the -ms-scroll-limit-x-min, -ms-scroll-limit-y-min, -ms-scroll-limit-x-max, and -ms-scroll-limit-y-max properties.\",restrictions:[\"length\"]},{name:\"-ms-scroll-limit-x-max\",browsers:[\"E\",\"IE10\"],values:[{name:\"auto\"}],status:\"nonstandard\",syntax:\"auto | <length>\",relevance:0,description:\"Gets or sets a value that specifies the maximum value for the scrollLeft property.\",restrictions:[\"length\"]},{name:\"-ms-scroll-limit-x-min\",browsers:[\"E\",\"IE10\"],status:\"nonstandard\",syntax:\"<length>\",relevance:0,description:\"Gets or sets a value that specifies the minimum value for the scrollLeft property.\",restrictions:[\"length\"]},{name:\"-ms-scroll-limit-y-max\",browsers:[\"E\",\"IE10\"],values:[{name:\"auto\"}],status:\"nonstandard\",syntax:\"auto | <length>\",relevance:0,description:\"Gets or sets a value that specifies the maximum value for the scrollTop property.\",restrictions:[\"length\"]},{name:\"-ms-scroll-limit-y-min\",browsers:[\"E\",\"IE10\"],status:\"nonstandard\",syntax:\"<length>\",relevance:0,description:\"Gets or sets a value that specifies the minimum value for the scrollTop property.\",restrictions:[\"length\"]},{name:\"-ms-scroll-rails\",browsers:[\"E\",\"IE10\"],values:[{name:\"none\"},{name:\"railed\"}],status:\"nonstandard\",syntax:\"none | railed\",relevance:0,description:\"Gets or sets a value that indicates whether or not small motions perpendicular to the primary axis of motion will result in either changes to both the scrollTop and scrollLeft properties or a change to the primary axis (for instance, either the scrollTop or scrollLeft properties will change, but not both).\",restrictions:[\"enum\",\"length\"]},{name:\"-ms-scroll-snap-points-x\",browsers:[\"E\",\"IE10\"],values:[{name:\"snapInterval(100%, 100%)\"},{name:\"snapList()\"}],status:\"nonstandard\",syntax:\"snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )\",relevance:0,description:\"Gets or sets a value that defines where snap-points will be located along the x-axis.\",restrictions:[\"enum\"]},{name:\"-ms-scroll-snap-points-y\",browsers:[\"E\",\"IE10\"],values:[{name:\"snapInterval(100%, 100%)\"},{name:\"snapList()\"}],status:\"nonstandard\",syntax:\"snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )\",relevance:0,description:\"Gets or sets a value that defines where snap-points will be located along the y-axis.\",restrictions:[\"enum\"]},{name:\"-ms-scroll-snap-type\",browsers:[\"E\",\"IE10\"],values:[{name:\"none\",description:\"The visual viewport of this scroll container must ignore snap points, if any, when scrolled.\"},{name:\"mandatory\",description:\"The visual viewport of this scroll container is guaranteed to rest on a snap point when there are no active scrolling operations.\"},{name:\"proximity\",description:\"The visual viewport of this scroll container may come to rest on a snap point at the termination of a scroll at the discretion of the UA given the parameters of the scroll.\"}],status:\"nonstandard\",syntax:\"none | proximity | mandatory\",relevance:0,description:\"Gets or sets a value that defines what type of snap-point should be used for the current element. There are two type of snap-points, with the primary difference being whether or not the user is guaranteed to always stop on a snap-point.\",restrictions:[\"enum\"]},{name:\"-ms-scroll-snap-x\",browsers:[\"E\",\"IE10\"],values:[{name:\"mandatory\"},{name:\"none\"},{name:\"proximity\"},{name:\"snapInterval(100%, 100%)\"},{name:\"snapList()\"}],status:\"nonstandard\",syntax:\"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>\",relevance:0,description:\"Gets or sets a shorthand value that sets values for the -ms-scroll-snap-type and -ms-scroll-snap-points-x properties.\",restrictions:[\"enum\"]},{name:\"-ms-scroll-snap-y\",browsers:[\"E\",\"IE10\"],values:[{name:\"mandatory\"},{name:\"none\"},{name:\"proximity\"},{name:\"snapInterval(100%, 100%)\"},{name:\"snapList()\"}],status:\"nonstandard\",syntax:\"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>\",relevance:0,description:\"Gets or sets a shorthand value that sets values for the -ms-scroll-snap-type and -ms-scroll-snap-points-y properties.\",restrictions:[\"enum\"]},{name:\"-ms-scroll-translation\",browsers:[\"E\",\"IE10\"],values:[{name:\"none\"},{name:\"vertical-to-horizontal\"}],status:\"nonstandard\",syntax:\"none | vertical-to-horizontal\",relevance:0,description:\"Gets or sets a value that specifies whether vertical-to-horizontal scroll wheel translation occurs on the specified element.\",restrictions:[\"enum\"]},{name:\"-ms-text-align-last\",browsers:[\"E\",\"IE8\"],values:[{name:\"auto\"},{name:\"center\",description:\"The inline contents are centered within the line box.\"},{name:\"justify\",description:\"The text is justified according to the method specified by the 'text-justify' property.\"},{name:\"left\",description:\"The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text.\"},{name:\"right\",description:\"The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text.\"}],relevance:50,description:\"Describes how the last line of a block or a line right before a forced line break is aligned when 'text-align' is set to 'justify'.\",restrictions:[\"enum\"]},{name:\"-ms-text-autospace\",browsers:[\"E\",\"IE8\"],values:[{name:\"ideograph-alpha\",description:\"Creates 1/4em extra spacing between runs of ideographic letters and non-ideographic letters, such as Latin-based, Cyrillic, Greek, Arabic or Hebrew.\"},{name:\"ideograph-numeric\",description:\"Creates 1/4em extra spacing between runs of ideographic letters and numeric glyphs.\"},{name:\"ideograph-parenthesis\",description:\"Creates extra spacing between normal (non wide) parenthesis and ideographs.\"},{name:\"ideograph-space\",description:\"Extends the width of the space character while surrounded by ideographs.\"},{name:\"none\",description:\"No extra space is created.\"},{name:\"punctuation\",description:\"Creates extra non-breaking spacing around punctuation as required by language-specific typographic conventions.\"}],status:\"nonstandard\",syntax:\"none | ideograph-alpha | ideograph-numeric | ideograph-parenthesis | ideograph-space\",relevance:0,description:\"Determines whether or not a full-width punctuation mark character should be trimmed if it appears at the beginning of a line, so that its 'ink' lines up with the first glyph in the line above and below.\",restrictions:[\"enum\"]},{name:\"-ms-text-combine-horizontal\",browsers:[\"E\",\"IE11\"],values:[{name:\"all\",description:\"Attempt to typeset horizontally all consecutive characters within the box such that they take up the space of a single character within the vertical line box.\"},{name:\"digits\",description:\"Attempt to typeset horizontally each maximal sequence of consecutive ASCII digits (U+0030\\u2013U+0039) that has as many or fewer characters than the specified integer such that it takes up the space of a single character within the vertical line box.\"},{name:\"none\",description:\"No special processing.\"}],relevance:50,description:\"This property specifies the combination of multiple characters into the space of a single character.\",restrictions:[\"enum\",\"integer\"]},{name:\"-ms-text-justify\",browsers:[\"E\",\"IE8\"],values:[{name:\"auto\",description:\"The UA determines the justification algorithm to follow, based on a balance between performance and adequate presentation quality.\"},{name:\"distribute\",description:\"Justification primarily changes spacing both at word separators and at grapheme cluster boundaries in all scripts except those in the connected and cursive groups. This value is sometimes used in e.g. Japanese, often with the 'text-align-last' property.\"},{name:\"inter-cluster\",description:\"Justification primarily changes spacing at word separators and at grapheme cluster boundaries in clustered scripts. This value is typically used for Southeast Asian scripts such as Thai.\"},{name:\"inter-ideograph\",description:\"Justification primarily changes spacing at word separators and at inter-graphemic boundaries in scripts that use no word spaces. This value is typically used for CJK languages.\"},{name:\"inter-word\",description:\"Justification primarily changes spacing at word separators. This value is typically used for languages that separate words using spaces, like English or (sometimes) Korean.\"},{name:\"kashida\",description:\"Justification primarily stretches Arabic and related scripts through the use of kashida or other calligraphic elongation.\"}],relevance:50,description:\"Selects the justification algorithm used when 'text-align' is set to 'justify'. The property applies to block containers, but the UA may (but is not required to) also support it on inline elements.\",restrictions:[\"enum\"]},{name:\"-ms-text-kashida-space\",browsers:[\"E\",\"IE10\"],relevance:50,description:\"Sets or retrieves the ratio of kashida expansion to white space expansion when justifying lines of text in the object.\",restrictions:[\"percentage\"]},{name:\"-ms-text-overflow\",browsers:[\"IE10\"],values:[{name:\"clip\",description:\"Clip inline content that overflows. Characters may be only partially rendered.\"},{name:\"ellipsis\",description:\"Render an ellipsis character (U+2026) to represent clipped inline content.\"}],relevance:50,description:\"Text can overflow for example when it is prevented from wrapping\",restrictions:[\"enum\"]},{name:\"-ms-text-size-adjust\",browsers:[\"E\",\"IE10\"],values:[{name:\"auto\",description:\"Renderers must use the default size adjustment when displaying on a small device.\"},{name:\"none\",description:\"Renderers must not do size adjustment when displaying on a small device.\"}],relevance:50,description:\"Specifies a size adjustment for displaying text content in mobile browsers.\",restrictions:[\"enum\",\"percentage\"]},{name:\"-ms-text-underline-position\",browsers:[\"E\",\"IE10\"],values:[{name:\"alphabetic\",description:\"The underline is aligned with the alphabetic baseline. In this case the underline is likely to cross some descenders.\"},{name:\"auto\",description:\"The user agent may use any algorithm to determine the underline's position. In horizontal line layout, the underline should be aligned as for alphabetic. In vertical line layout, if the language is set to Japanese or Korean, the underline should be aligned as for over.\"},{name:\"over\",description:\"The underline is aligned with the 'top' (right in vertical writing) edge of the element's em-box. In this mode, an overline also switches sides.\"},{name:\"under\",description:\"The underline is aligned with the 'bottom' (left in vertical writing) edge of the element's em-box. In this case the underline usually does not cross the descenders. This is sometimes called 'accounting' underline.\"}],relevance:50,description:\"Sets the position of an underline specified on the same element: it does not affect underlines specified by ancestor elements.This property is typically used in vertical writing contexts such as in Japanese documents where it often desired to have the underline appear 'over' (to the right of) the affected run of text\",restrictions:[\"enum\"]},{name:\"-ms-touch-action\",browsers:[\"IE10\"],values:[{name:\"auto\",description:\"The element is a passive element, with several exceptions.\"},{name:\"double-tap-zoom\",description:\"The element will zoom on double-tap.\"},{name:\"manipulation\",description:\"The element is a manipulation-causing element.\"},{name:\"none\",description:\"The element is a manipulation-blocking element.\"},{name:\"pan-x\",description:\"The element permits touch-driven panning on the horizontal axis. The touch pan is performed on the nearest ancestor with horizontally scrollable content.\"},{name:\"pan-y\",description:\"The element permits touch-driven panning on the vertical axis. The touch pan is performed on the nearest ancestor with vertically scrollable content.\"},{name:\"pinch-zoom\",description:\"The element permits pinch-zooming. The pinch-zoom is performed on the nearest ancestor with zoomable content.\"}],relevance:50,description:\"Gets or sets a value that indicates whether and how a given region can be manipulated by the user.\",restrictions:[\"enum\"]},{name:\"-ms-touch-select\",browsers:[\"E\",\"IE10\"],values:[{name:\"grippers\",description:\"Grippers are always on.\"},{name:\"none\",description:\"Grippers are always off.\"}],status:\"nonstandard\",syntax:\"grippers | none\",relevance:0,description:\"Gets or sets a value that toggles the 'gripper' visual elements that enable touch text selection.\",restrictions:[\"enum\"]},{name:\"-ms-transform\",browsers:[\"IE9-9\"],values:[{name:\"matrix()\",description:\"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]\"},{name:\"matrix3d()\",description:\"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order.\"},{name:\"none\"},{name:\"rotate()\",description:\"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property.\"},{name:\"rotate3d()\",description:\"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters.\"},{name:\"rotateX('angle')\",description:\"Specifies a clockwise rotation by the given angle about the X axis.\"},{name:\"rotateY('angle')\",description:\"Specifies a clockwise rotation by the given angle about the Y axis.\"},{name:\"rotateZ('angle')\",description:\"Specifies a clockwise rotation by the given angle about the Z axis.\"},{name:\"scale()\",description:\"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first.\"},{name:\"scale3d()\",description:\"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters.\"},{name:\"scaleX()\",description:\"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter.\"},{name:\"scaleY()\",description:\"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter.\"},{name:\"scaleZ()\",description:\"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter.\"},{name:\"skew()\",description:\"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis).\"},{name:\"skewX()\",description:\"Specifies a skew transformation along the X axis by the given angle.\"},{name:\"skewY()\",description:\"Specifies a skew transformation along the Y axis by the given angle.\"},{name:\"translate()\",description:\"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter.\"},{name:\"translate3d()\",description:\"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively.\"},{name:\"translateX()\",description:\"Specifies a translation by the given amount in the X direction.\"},{name:\"translateY()\",description:\"Specifies a translation by the given amount in the Y direction.\"},{name:\"translateZ()\",description:\"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0.\"}],relevance:50,description:\"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.\",restrictions:[\"enum\"]},{name:\"-ms-transform-origin\",browsers:[\"IE9-9\"],relevance:50,description:\"Establishes the origin of transformation for an element.\",restrictions:[\"position\",\"length\",\"percentage\"]},{name:\"-ms-transform-origin-x\",browsers:[\"IE10\"],relevance:50,description:\"The x coordinate of the origin for transforms applied to an element with respect to its border box.\",restrictions:[\"length\",\"percentage\"]},{name:\"-ms-transform-origin-y\",browsers:[\"IE10\"],relevance:50,description:\"The y coordinate of the origin for transforms applied to an element with respect to its border box.\",restrictions:[\"length\",\"percentage\"]},{name:\"-ms-transform-origin-z\",browsers:[\"IE10\"],relevance:50,description:\"The z coordinate of the origin for transforms applied to an element with respect to its border box.\",restrictions:[\"length\",\"percentage\"]},{name:\"-ms-user-select\",browsers:[\"E\",\"IE10\"],values:[{name:\"element\"},{name:\"none\"},{name:\"text\"}],status:\"nonstandard\",syntax:\"none | element | text\",relevance:0,description:\"Controls the appearance of selection.\",restrictions:[\"enum\"]},{name:\"-ms-word-break\",browsers:[\"IE8\"],values:[{name:\"break-all\",description:\"Lines may break between any two grapheme clusters for non-CJK scripts.\"},{name:\"keep-all\",description:\"Block characters can no longer create implied break points.\"},{name:\"normal\",description:\"Breaks non-CJK scripts according to their own rules.\"}],relevance:50,description:\"Specifies line break opportunities for non-CJK scripts.\",restrictions:[\"enum\"]},{name:\"-ms-word-wrap\",browsers:[\"IE8\"],values:[{name:\"break-word\",description:\"An unbreakable 'word' may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line.\"},{name:\"normal\",description:\"Lines may break only at allowed break points.\"}],relevance:50,description:\"Specifies whether the UA may break within a word to prevent overflow when an otherwise-unbreakable string is too long to fit.\",restrictions:[\"enum\"]},{name:\"-ms-wrap-flow\",browsers:[\"E\",\"IE10\"],values:[{name:\"auto\",description:\"For floats an exclusion is created, for all other elements an exclusion is not created.\"},{name:\"both\",description:\"Inline flow content can flow on all sides of the exclusion.\"},{name:\"clear\",description:\"Inline flow content can only wrap on top and bottom of the exclusion and must leave the areas to the start and end edges of the exclusion box empty.\"},{name:\"end\",description:\"Inline flow content can wrap on the end side of the exclusion area but must leave the area to the start edge of the exclusion area empty.\"},{name:\"maximum\",description:\"Inline flow content can wrap on the side of the exclusion with the largest available space for the given line, and must leave the other side of the exclusion empty.\"},{name:\"minimum\",description:\"Inline flow content can flow around the edge of the exclusion with the smallest available space within the flow content\\u2019s containing block, and must leave the other edge of the exclusion empty.\"},{name:\"start\",description:\"Inline flow content can wrap on the start edge of the exclusion area but must leave the area to end edge of the exclusion area empty.\"}],status:\"nonstandard\",syntax:\"auto | both | start | end | maximum | clear\",relevance:0,description:\"An element becomes an exclusion when its 'wrap-flow' property has a computed value other than 'auto'.\",restrictions:[\"enum\"]},{name:\"-ms-wrap-margin\",browsers:[\"E\",\"IE10\"],status:\"nonstandard\",syntax:\"<length>\",relevance:0,description:\"Gets or sets a value that is used to offset the inner wrap shape from other shapes.\",restrictions:[\"length\",\"percentage\"]},{name:\"-ms-wrap-through\",browsers:[\"E\",\"IE10\"],values:[{name:\"none\",description:\"The exclusion element does not inherit its parent node's wrapping context. Its descendants are only subject to exclusion shapes defined inside the element.\"},{name:\"wrap\",description:\"The exclusion element inherits its parent node's wrapping context. Its descendant inline content wraps around exclusions defined outside the element.\"}],status:\"nonstandard\",syntax:\"wrap | none\",relevance:0,description:\"Specifies if an element inherits its parent wrapping context. In other words if it is subject to the exclusions defined outside the element.\",restrictions:[\"enum\"]},{name:\"-ms-writing-mode\",browsers:[\"IE8\"],values:[{name:\"bt-lr\"},{name:\"bt-rl\"},{name:\"lr-bt\"},{name:\"lr-tb\"},{name:\"rl-bt\"},{name:\"rl-tb\"},{name:\"tb-lr\"},{name:\"tb-rl\"}],relevance:50,description:\"Shorthand property for both 'direction' and 'block-progression'.\",restrictions:[\"enum\"]},{name:\"-ms-zoom\",browsers:[\"IE8\"],values:[{name:\"normal\"}],relevance:50,description:\"Sets or retrieves the magnification scale of the object.\",restrictions:[\"enum\",\"integer\",\"number\",\"percentage\"]},{name:\"-ms-zoom-animation\",browsers:[\"IE10\"],values:[{name:\"default\"},{name:\"none\"}],relevance:50,description:\"Gets or sets a value that indicates whether an animation is used when zooming.\",restrictions:[\"enum\"]},{name:\"nav-down\",browsers:[\"O9.5\"],values:[{name:\"auto\",description:\"The user agent automatically determines which element to navigate the focus to in response to directional navigational input.\"},{name:\"current\",description:\"Indicates that the user agent should target the frame that the element is in.\"},{name:\"root\",description:\"Indicates that the user agent should target the full window.\"}],relevance:50,description:\"Provides an way to control directional focus navigation.\",restrictions:[\"enum\",\"identifier\",\"string\"]},{name:\"nav-index\",browsers:[\"O9.5\"],values:[{name:\"auto\",description:\"The element's sequential navigation order is assigned automatically by the user agent.\"}],relevance:50,description:\"Provides an input-method-neutral way of specifying the sequential navigation order (also known as 'tabbing order').\",restrictions:[\"number\"]},{name:\"nav-left\",browsers:[\"O9.5\"],values:[{name:\"auto\",description:\"The user agent automatically determines which element to navigate the focus to in response to directional navigational input.\"},{name:\"current\",description:\"Indicates that the user agent should target the frame that the element is in.\"},{name:\"root\",description:\"Indicates that the user agent should target the full window.\"}],relevance:50,description:\"Provides an way to control directional focus navigation.\",restrictions:[\"enum\",\"identifier\",\"string\"]},{name:\"nav-right\",browsers:[\"O9.5\"],values:[{name:\"auto\",description:\"The user agent automatically determines which element to navigate the focus to in response to directional navigational input.\"},{name:\"current\",description:\"Indicates that the user agent should target the frame that the element is in.\"},{name:\"root\",description:\"Indicates that the user agent should target the full window.\"}],relevance:50,description:\"Provides an way to control directional focus navigation.\",restrictions:[\"enum\",\"identifier\",\"string\"]},{name:\"nav-up\",browsers:[\"O9.5\"],values:[{name:\"auto\",description:\"The user agent automatically determines which element to navigate the focus to in response to directional navigational input.\"},{name:\"current\",description:\"Indicates that the user agent should target the frame that the element is in.\"},{name:\"root\",description:\"Indicates that the user agent should target the full window.\"}],relevance:50,description:\"Provides an way to control directional focus navigation.\",restrictions:[\"enum\",\"identifier\",\"string\"]},{name:\"negative\",browsers:[\"FF33\"],syntax:\"<symbol> <symbol>?\",relevance:50,description:\"@counter-style descriptor. Defines how to alter the representation when the counter value is negative.\",restrictions:[\"image\",\"identifier\",\"string\"]},{name:\"-o-animation\",browsers:[\"O12\"],values:[{name:\"alternate\",description:\"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction.\"},{name:\"alternate-reverse\",description:\"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction.\"},{name:\"backwards\",description:\"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'.\"},{name:\"both\",description:\"Both forwards and backwards fill modes are applied.\"},{name:\"forwards\",description:\"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes.\"},{name:\"infinite\",description:\"Causes the animation to repeat forever.\"},{name:\"none\",description:\"No animation is performed\"},{name:\"normal\",description:\"Normal playback.\"},{name:\"reverse\",description:\"All iterations of the animation are played in the reverse direction from the way they were specified.\"}],relevance:50,description:\"Shorthand property combines six of the animation properties into a single property.\",restrictions:[\"time\",\"enum\",\"timing-function\",\"identifier\",\"number\"]},{name:\"-o-animation-delay\",browsers:[\"O12\"],relevance:50,description:\"Defines when the animation will start.\",restrictions:[\"time\"]},{name:\"-o-animation-direction\",browsers:[\"O12\"],values:[{name:\"alternate\",description:\"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction.\"},{name:\"alternate-reverse\",description:\"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction.\"},{name:\"normal\",description:\"Normal playback.\"},{name:\"reverse\",description:\"All iterations of the animation are played in the reverse direction from the way they were specified.\"}],relevance:50,description:\"Defines whether or not the animation should play in reverse on alternate cycles.\",restrictions:[\"enum\"]},{name:\"-o-animation-duration\",browsers:[\"O12\"],relevance:50,description:\"Defines the length of time that an animation takes to complete one cycle.\",restrictions:[\"time\"]},{name:\"-o-animation-fill-mode\",browsers:[\"O12\"],values:[{name:\"backwards\",description:\"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'.\"},{name:\"both\",description:\"Both forwards and backwards fill modes are applied.\"},{name:\"forwards\",description:\"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes.\"},{name:\"none\",description:\"There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes.\"}],relevance:50,description:\"Defines what values are applied by the animation outside the time it is executing.\",restrictions:[\"enum\"]},{name:\"-o-animation-iteration-count\",browsers:[\"O12\"],values:[{name:\"infinite\",description:\"Causes the animation to repeat forever.\"}],relevance:50,description:\"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.\",restrictions:[\"number\",\"enum\"]},{name:\"-o-animation-name\",browsers:[\"O12\"],values:[{name:\"none\",description:\"No animation is performed\"}],relevance:50,description:\"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.\",restrictions:[\"identifier\",\"enum\"]},{name:\"-o-animation-play-state\",browsers:[\"O12\"],values:[{name:\"paused\",description:\"A running animation will be paused.\"},{name:\"running\",description:\"Resume playback of a paused animation.\"}],relevance:50,description:\"Defines whether the animation is running or paused.\",restrictions:[\"enum\"]},{name:\"-o-animation-timing-function\",browsers:[\"O12\"],relevance:50,description:\"Describes how the animation will progress over one cycle of its duration. See the 'transition-timing-function'.\",restrictions:[\"timing-function\"]},{name:\"object-fit\",browsers:[\"E79\",\"FF36\",\"S10\",\"C32\",\"O19\"],values:[{name:\"contain\",description:\"The replaced content is sized to maintain its aspect ratio while fitting within the element\\u2019s content box: its concrete object size is resolved as a contain constraint against the element's used width and height.\"},{name:\"cover\",description:\"The replaced content is sized to maintain its aspect ratio while filling the element's entire content box: its concrete object size is resolved as a cover constraint against the element\\u2019s used width and height.\"},{name:\"fill\",description:\"The replaced content is sized to fill the element\\u2019s content box: the object's concrete object size is the element's used width and height.\"},{name:\"none\",description:\"The replaced content is not resized to fit inside the element's content box\"},{name:\"scale-down\",description:\"Size the content as if \\u2018none\\u2019 or \\u2018contain\\u2019 were specified, whichever would result in a smaller concrete object size.\"}],syntax:\"fill | contain | cover | none | scale-down\",relevance:68,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/object-fit\"}],description:\"Specifies how the contents of a replaced element should be scaled relative to the box established by its used height and width.\",restrictions:[\"enum\"]},{name:\"object-position\",browsers:[\"E79\",\"FF36\",\"S10\",\"C32\",\"O19\"],syntax:\"<position>\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/object-position\"}],description:\"Determines the alignment of the replaced element inside its box.\",restrictions:[\"position\",\"length\",\"percentage\"]},{name:\"-o-border-image\",browsers:[\"O11.6\"],values:[{name:\"auto\",description:\"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead.\"},{name:\"fill\",description:\"Causes the middle part of the border-image to be preserved.\"},{name:\"none\"},{name:\"repeat\",description:\"The image is tiled (repeated) to fill the area.\"},{name:\"round\",description:\"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does.\"},{name:\"space\",description:\"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles.\"},{name:\"stretch\",description:\"The image is stretched to fill the area.\"}],relevance:50,description:\"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.\",restrictions:[\"length\",\"percentage\",\"number\",\"image\",\"enum\"]},{name:\"-o-object-fit\",browsers:[\"O10.6\"],values:[{name:\"contain\",description:\"The replaced content is sized to maintain its aspect ratio while fitting within the element\\u2019s content box: its concrete object size is resolved as a contain constraint against the element's used width and height.\"},{name:\"cover\",description:\"The replaced content is sized to maintain its aspect ratio while filling the element's entire content box: its concrete object size is resolved as a cover constraint against the element\\u2019s used width and height.\"},{name:\"fill\",description:\"The replaced content is sized to fill the element\\u2019s content box: the object's concrete object size is the element's used width and height.\"},{name:\"none\",description:\"The replaced content is not resized to fit inside the element's content box\"},{name:\"scale-down\",description:\"Size the content as if \\u2018none\\u2019 or \\u2018contain\\u2019 were specified, whichever would result in a smaller concrete object size.\"}],relevance:50,description:\"Specifies how the contents of a replaced element should be scaled relative to the box established by its used height and width.\",restrictions:[\"enum\"]},{name:\"-o-object-position\",browsers:[\"O10.6\"],relevance:50,description:\"Determines the alignment of the replaced element inside its box.\",restrictions:[\"position\",\"length\",\"percentage\"]},{name:\"opacity\",syntax:\"<alpha-value>\",relevance:93,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/opacity\"}],description:\"Opacity of an element's text, where 1 is opaque and 0 is entirely transparent.\",restrictions:[\"number(0-1)\"]},{name:\"order\",syntax:\"<integer>\",relevance:63,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/order\"}],description:\"Controls the order in which children of a flex container appear within the flex container, by assigning them to ordinal groups.\",restrictions:[\"integer\"]},{name:\"orphans\",browsers:[\"E12\",\"S1.3\",\"C25\",\"IE8\",\"O9.2\"],syntax:\"<integer>\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/orphans\"}],description:\"Specifies the minimum number of line boxes in a block container that must be left in a fragment before a fragmentation break.\",restrictions:[\"integer\"]},{name:\"-o-table-baseline\",browsers:[\"O9.6\"],relevance:50,description:\"Determines which row of a inline-table should be used as baseline of inline-table.\",restrictions:[\"integer\"]},{name:\"-o-tab-size\",browsers:[\"O10.6\"],relevance:50,description:\"This property determines the width of the tab character (U+0009), in space characters (U+0020), when rendered.\",restrictions:[\"integer\",\"length\"]},{name:\"-o-text-overflow\",browsers:[\"O10\"],values:[{name:\"clip\",description:\"Clip inline content that overflows. Characters may be only partially rendered.\"},{name:\"ellipsis\",description:\"Render an ellipsis character (U+2026) to represent clipped inline content.\"}],relevance:50,description:\"Text can overflow for example when it is prevented from wrapping\",restrictions:[\"enum\"]},{name:\"-o-transform\",browsers:[\"O10.5\"],values:[{name:\"matrix()\",description:\"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]\"},{name:\"matrix3d()\",description:\"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order.\"},{name:\"none\"},{name:\"rotate()\",description:\"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property.\"},{name:\"rotate3d()\",description:\"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters.\"},{name:\"rotateX('angle')\",description:\"Specifies a clockwise rotation by the given angle about the X axis.\"},{name:\"rotateY('angle')\",description:\"Specifies a clockwise rotation by the given angle about the Y axis.\"},{name:\"rotateZ('angle')\",description:\"Specifies a clockwise rotation by the given angle about the Z axis.\"},{name:\"scale()\",description:\"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first.\"},{name:\"scale3d()\",description:\"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters.\"},{name:\"scaleX()\",description:\"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter.\"},{name:\"scaleY()\",description:\"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter.\"},{name:\"scaleZ()\",description:\"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter.\"},{name:\"skew()\",description:\"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis).\"},{name:\"skewX()\",description:\"Specifies a skew transformation along the X axis by the given angle.\"},{name:\"skewY()\",description:\"Specifies a skew transformation along the Y axis by the given angle.\"},{name:\"translate()\",description:\"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter.\"},{name:\"translate3d()\",description:\"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively.\"},{name:\"translateX()\",description:\"Specifies a translation by the given amount in the X direction.\"},{name:\"translateY()\",description:\"Specifies a translation by the given amount in the Y direction.\"},{name:\"translateZ()\",description:\"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0.\"}],relevance:50,description:\"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.\",restrictions:[\"enum\"]},{name:\"-o-transform-origin\",browsers:[\"O10.5\"],relevance:50,description:\"Establishes the origin of transformation for an element.\",restrictions:[\"positon\",\"length\",\"percentage\"]},{name:\"-o-transition\",browsers:[\"O11.5\"],values:[{name:\"all\",description:\"Every property that is able to undergo a transition will do so.\"},{name:\"none\",description:\"No property will transition.\"}],relevance:50,description:\"Shorthand property combines four of the transition properties into a single property.\",restrictions:[\"time\",\"property\",\"timing-function\",\"enum\"]},{name:\"-o-transition-delay\",browsers:[\"O11.5\"],relevance:50,description:\"Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.\",restrictions:[\"time\"]},{name:\"-o-transition-duration\",browsers:[\"O11.5\"],relevance:50,description:\"Specifies how long the transition from the old value to the new value should take.\",restrictions:[\"time\"]},{name:\"-o-transition-property\",browsers:[\"O11.5\"],values:[{name:\"all\",description:\"Every property that is able to undergo a transition will do so.\"},{name:\"none\",description:\"No property will transition.\"}],relevance:50,description:\"Specifies the name of the CSS property to which the transition is applied.\",restrictions:[\"property\"]},{name:\"-o-transition-timing-function\",browsers:[\"O11.5\"],relevance:50,description:\"Describes how the intermediate values used during a transition will be calculated.\",restrictions:[\"timing-function\"]},{name:\"offset-block-end\",browsers:[\"FF41\"],values:[{name:\"auto\",description:\"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well.\"}],relevance:50,description:\"Logical 'bottom'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"percentage\"]},{name:\"offset-block-start\",browsers:[\"FF41\"],values:[{name:\"auto\",description:\"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well.\"}],relevance:50,description:\"Logical 'top'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"percentage\"]},{name:\"offset-inline-end\",browsers:[\"FF41\"],values:[{name:\"auto\",description:\"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well.\"}],relevance:50,description:\"Logical 'right'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"percentage\"]},{name:\"offset-inline-start\",browsers:[\"FF41\"],values:[{name:\"auto\",description:\"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well.\"}],relevance:50,description:\"Logical 'left'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"percentage\"]},{name:\"outline\",values:[{name:\"auto\",description:\"Permits the user agent to render a custom outline style, typically the default platform style.\"},{name:\"invert\",description:\"Performs a color inversion on the pixels on the screen.\"}],syntax:\"[ <'outline-color'> || <'outline-style'> || <'outline-width'> ]\",relevance:88,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/outline\"}],description:\"Shorthand property for 'outline-style', 'outline-width', and 'outline-color'.\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\",\"enum\"]},{name:\"outline-color\",values:[{name:\"invert\",description:\"Performs a color inversion on the pixels on the screen.\"}],syntax:\"<color> | invert\",relevance:55,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/outline-color\"}],description:\"The color of the outline.\",restrictions:[\"enum\",\"color\"]},{name:\"outline-offset\",browsers:[\"E15\",\"FF1.5\",\"S1.2\",\"C1\",\"O9.5\"],syntax:\"<length>\",relevance:69,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/outline-offset\"}],description:\"Offset the outline and draw it beyond the border edge.\",restrictions:[\"length\"]},{name:\"outline-style\",values:[{name:\"auto\",description:\"Permits the user agent to render a custom outline style, typically the default platform style.\"}],syntax:\"auto | <'border-style'>\",relevance:61,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/outline-style\"}],description:\"Style of the outline.\",restrictions:[\"line-style\",\"enum\"]},{name:\"outline-width\",syntax:\"<line-width>\",relevance:61,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/outline-width\"}],description:\"Width of the outline.\",restrictions:[\"length\",\"line-width\"]},{name:\"overflow\",values:[{name:\"auto\",description:\"The behavior of the 'auto' value is UA-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes.\"},{name:\"hidden\",description:\"Content is clipped and no scrolling mechanism should be provided to view the content outside the clipping region.\"},{name:\"-moz-hidden-unscrollable\",description:\"Same as the standardized 'clip', except doesn\\u2019t establish a block formatting context.\"},{name:\"scroll\",description:\"Content is clipped and if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped.\"},{name:\"visible\",description:\"Content is not clipped, i.e., it may be rendered outside the content box.\"}],syntax:\"[ visible | hidden | clip | scroll | auto ]{1,2}\",relevance:93,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overflow\"}],description:\"Shorthand for setting 'overflow-x' and 'overflow-y'.\",restrictions:[\"enum\"]},{name:\"overflow-wrap\",values:[{name:\"break-word\",description:\"An otherwise unbreakable sequence of characters may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line.\"},{name:\"normal\",description:\"Lines may break only at allowed break points.\"}],syntax:\"normal | break-word | anywhere\",relevance:66,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overflow-wrap\"}],description:\"Specifies whether the UA may break within a word to prevent overflow when an otherwise-unbreakable string is too long to fit within the line box.\",restrictions:[\"enum\"]},{name:\"overflow-x\",values:[{name:\"auto\",description:\"The behavior of the 'auto' value is UA-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes.\"},{name:\"hidden\",description:\"Content is clipped and no scrolling mechanism should be provided to view the content outside the clipping region.\"},{name:\"scroll\",description:\"Content is clipped and if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped.\"},{name:\"visible\",description:\"Content is not clipped, i.e., it may be rendered outside the content box.\"}],syntax:\"visible | hidden | clip | scroll | auto\",relevance:81,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overflow-x\"}],description:\"Specifies the handling of overflow in the horizontal direction.\",restrictions:[\"enum\"]},{name:\"overflow-y\",values:[{name:\"auto\",description:\"The behavior of the 'auto' value is UA-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes.\"},{name:\"hidden\",description:\"Content is clipped and no scrolling mechanism should be provided to view the content outside the clipping region.\"},{name:\"scroll\",description:\"Content is clipped and if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped.\"},{name:\"visible\",description:\"Content is not clipped, i.e., it may be rendered outside the content box.\"}],syntax:\"visible | hidden | clip | scroll | auto\",relevance:83,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overflow-y\"}],description:\"Specifies the handling of overflow in the vertical direction.\",restrictions:[\"enum\"]},{name:\"pad\",browsers:[\"FF33\"],syntax:\"<integer> && <symbol>\",relevance:50,description:\"@counter-style descriptor. Specifies a \\u201Cfixed-width\\u201D counter style, where representations shorter than the pad value are padded with a particular <symbol>\",restrictions:[\"integer\",\"image\",\"string\",\"identifier\"]},{name:\"padding\",values:[],syntax:\"[ <length> | <percentage> ]{1,4}\",relevance:96,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/padding\"}],description:\"Shorthand property to set values for the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.\",restrictions:[\"length\",\"percentage\"]},{name:\"padding-bottom\",syntax:\"<length> | <percentage>\",relevance:89,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/padding-bottom\"}],description:\"Shorthand property to set values for the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.\",restrictions:[\"length\",\"percentage\"]},{name:\"padding-block-end\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'padding-left'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/padding-block-end\"}],description:\"Logical 'padding-bottom'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"percentage\"]},{name:\"padding-block-start\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'padding-left'>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/padding-block-start\"}],description:\"Logical 'padding-top'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"percentage\"]},{name:\"padding-inline-end\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'padding-left'>\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/padding-inline-end\"}],description:\"Logical 'padding-right'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"percentage\"]},{name:\"padding-inline-start\",browsers:[\"E79\",\"FF41\",\"S12.1\",\"C69\",\"O56\"],syntax:\"<'padding-left'>\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/padding-inline-start\"}],description:\"Logical 'padding-left'. Mapping depends on the parent element\\u2019s 'writing-mode', 'direction', and 'text-orientation'.\",restrictions:[\"length\",\"percentage\"]},{name:\"padding-left\",syntax:\"<length> | <percentage>\",relevance:91,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/padding-left\"}],description:\"Shorthand property to set values for the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.\",restrictions:[\"length\",\"percentage\"]},{name:\"padding-right\",syntax:\"<length> | <percentage>\",relevance:90,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/padding-right\"}],description:\"Shorthand property to set values for the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.\",restrictions:[\"length\",\"percentage\"]},{name:\"padding-top\",syntax:\"<length> | <percentage>\",relevance:90,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/padding-top\"}],description:\"Shorthand property to set values for the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.\",restrictions:[\"length\",\"percentage\"]},{name:\"page-break-after\",values:[{name:\"always\",description:\"Always force a page break after the generated box.\"},{name:\"auto\",description:\"Neither force nor forbid a page break after generated box.\"},{name:\"avoid\",description:\"Avoid a page break after the generated box.\"},{name:\"left\",description:\"Force one or two page breaks after the generated box so that the next page is formatted as a left page.\"},{name:\"right\",description:\"Force one or two page breaks after the generated box so that the next page is formatted as a right page.\"}],syntax:\"auto | always | avoid | left | right | recto | verso\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/page-break-after\"}],description:\"Defines rules for page breaks after an element.\",restrictions:[\"enum\"]},{name:\"page-break-before\",values:[{name:\"always\",description:\"Always force a page break before the generated box.\"},{name:\"auto\",description:\"Neither force nor forbid a page break before the generated box.\"},{name:\"avoid\",description:\"Avoid a page break before the generated box.\"},{name:\"left\",description:\"Force one or two page breaks before the generated box so that the next page is formatted as a left page.\"},{name:\"right\",description:\"Force one or two page breaks before the generated box so that the next page is formatted as a right page.\"}],syntax:\"auto | always | avoid | left | right | recto | verso\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/page-break-before\"}],description:\"Defines rules for page breaks before an element.\",restrictions:[\"enum\"]},{name:\"page-break-inside\",values:[{name:\"auto\",description:\"Neither force nor forbid a page break inside the generated box.\"},{name:\"avoid\",description:\"Avoid a page break inside the generated box.\"}],syntax:\"auto | avoid\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/page-break-inside\"}],description:\"Defines rules for page breaks inside an element.\",restrictions:[\"enum\"]},{name:\"paint-order\",browsers:[\"E17\",\"FF60\",\"S8\",\"C35\",\"O22\"],values:[{name:\"fill\"},{name:\"markers\"},{name:\"normal\",description:\"The element is painted with the standard order of painting operations: the 'fill' is painted first, then its 'stroke' and finally its markers.\"},{name:\"stroke\"}],syntax:\"normal | [ fill || stroke || markers ]\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/paint-order\"}],description:\"Controls the order that the three paint operations that shapes and text are rendered with: their fill, their stroke and any markers they might have.\",restrictions:[\"enum\"]},{name:\"perspective\",values:[{name:\"none\",description:\"No perspective transform is applied.\"}],syntax:\"none | <length>\",relevance:55,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/perspective\"}],description:\"Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.\",restrictions:[\"length\",\"enum\"]},{name:\"perspective-origin\",syntax:\"<position>\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/perspective-origin\"}],description:\"Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.\",restrictions:[\"position\",\"percentage\",\"length\"]},{name:\"pointer-events\",values:[{name:\"all\",description:\"The given element can be the target element for pointer events whenever the pointer is over either the interior or the perimeter of the element.\"},{name:\"fill\",description:\"The given element can be the target element for pointer events whenever the pointer is over the interior of the element.\"},{name:\"none\",description:\"The given element does not receive pointer events.\"},{name:\"painted\",description:'The given element can be the target element for pointer events when the pointer is over a \"painted\" area. '},{name:\"stroke\",description:\"The given element can be the target element for pointer events whenever the pointer is over the perimeter of the element.\"},{name:\"visible\",description:\"The given element can be the target element for pointer events when the \\u2018visibility\\u2019 property is set to visible and the pointer is over either the interior or the perimeter of the element.\"},{name:\"visibleFill\",description:\"The given element can be the target element for pointer events when the \\u2018visibility\\u2019 property is set to visible and when the pointer is over the interior of the element.\"},{name:\"visiblePainted\",description:\"The given element can be the target element for pointer events when the \\u2018visibility\\u2019 property is set to visible and when the pointer is over a \\u2018painted\\u2019 area.\"},{name:\"visibleStroke\",description:\"The given element can be the target element for pointer events when the \\u2018visibility\\u2019 property is set to visible and when the pointer is over the perimeter of the element.\"}],syntax:\"auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit\",relevance:82,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/pointer-events\"}],description:\"Specifies under what circumstances a given element can be the target element for a pointer event.\",restrictions:[\"enum\"]},{name:\"position\",values:[{name:\"absolute\",description:\"The box's position (and possibly size) is specified with the 'top', 'right', 'bottom', and 'left' properties. These properties specify offsets with respect to the box's 'containing block'.\"},{name:\"fixed\",description:\"The box's position is calculated according to the 'absolute' model, but in addition, the box is fixed with respect to some reference. As with the 'absolute' model, the box's margins do not collapse with any other margins.\"},{name:\"-ms-page\",description:\"The box's position is calculated according to the 'absolute' model.\"},{name:\"relative\",description:\"The box's position is calculated according to the normal flow (this is called the position in normal flow). Then the box is offset relative to its normal position.\"},{name:\"static\",description:\"The box is a normal box, laid out according to the normal flow. The 'top', 'right', 'bottom', and 'left' properties do not apply.\"},{name:\"sticky\",description:\"The box's position is calculated according to the normal flow. Then the box is offset relative to its flow root and containing block and in all cases, including table elements, does not affect the position of any following boxes.\"},{name:\"-webkit-sticky\",description:\"The box's position is calculated according to the normal flow. Then the box is offset relative to its flow root and containing block and in all cases, including table elements, does not affect the position of any following boxes.\"}],syntax:\"static | relative | absolute | sticky | fixed\",relevance:96,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/position\"}],description:\"The position CSS property sets how an element is positioned in a document. The top, right, bottom, and left properties determine the final location of positioned elements.\",restrictions:[\"enum\"]},{name:\"prefix\",browsers:[\"FF33\"],syntax:\"<symbol>\",relevance:50,description:\"@counter-style descriptor. Specifies a <symbol> that is prepended to the marker representation.\",restrictions:[\"image\",\"string\",\"identifier\"]},{name:\"quotes\",values:[{name:\"none\",description:\"The 'open-quote' and 'close-quote' values of the 'content' property produce no quotations marks, as if they were 'no-open-quote' and 'no-close-quote' respectively.\"}],syntax:\"none | auto | [ <string> <string> ]+\",relevance:53,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/quotes\"}],description:\"Specifies quotation marks for any number of embedded quotations.\",restrictions:[\"string\"]},{name:\"range\",browsers:[\"FF33\"],values:[{name:\"auto\",description:\"The range depends on the counter system.\"},{name:\"infinite\",description:\"If used as the first value in a range, it represents negative infinity; if used as the second value, it represents positive infinity.\"}],syntax:\"[ [ <integer> | infinite ]{2} ]# | auto\",relevance:50,description:\"@counter-style descriptor. Defines the ranges over which the counter style is defined.\",restrictions:[\"integer\",\"enum\"]},{name:\"resize\",browsers:[\"E79\",\"FF4\",\"S3\",\"C1\",\"O12.1\"],values:[{name:\"both\",description:\"The UA presents a bidirectional resizing mechanism to allow the user to adjust both the height and the width of the element.\"},{name:\"horizontal\",description:\"The UA presents a unidirectional horizontal resizing mechanism to allow the user to adjust only the width of the element.\"},{name:\"none\",description:\"The UA does not present a resizing mechanism on the element, and the user is given no direct manipulation mechanism to resize the element.\"},{name:\"vertical\",description:\"The UA presents a unidirectional vertical resizing mechanism to allow the user to adjust only the height of the element.\"}],syntax:\"none | both | horizontal | vertical | block | inline\",relevance:61,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/resize\"}],description:\"Specifies whether or not an element is resizable by the user, and if so, along which axis/axes.\",restrictions:[\"enum\"]},{name:\"right\",values:[{name:\"auto\",description:\"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well\"}],syntax:\"<length> | <percentage> | auto\",relevance:91,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/right\"}],description:\"Specifies how far an absolutely positioned box's right margin edge is offset to the left of the right edge of the box's 'containing block'.\",restrictions:[\"length\",\"percentage\"]},{name:\"ruby-align\",browsers:[\"FF38\"],values:[{name:\"auto\",browsers:[\"FF38\"],description:\"The user agent determines how the ruby contents are aligned. This is the initial value.\"},{name:\"center\",description:\"The ruby content is centered within its box.\"},{name:\"distribute-letter\",browsers:[\"FF38\"],description:\"If the width of the ruby text is smaller than that of the base, then the ruby text contents are evenly distributed across the width of the base, with the first and last ruby text glyphs lining up with the corresponding first and last base glyphs. If the width of the ruby text is at least the width of the base, then the letters of the base are evenly distributed across the width of the ruby text.\"},{name:\"distribute-space\",browsers:[\"FF38\"],description:\"If the width of the ruby text is smaller than that of the base, then the ruby text contents are evenly distributed across the width of the base, with a certain amount of white space preceding the first and following the last character in the ruby text. That amount of white space is normally equal to half the amount of inter-character space of the ruby text.\"},{name:\"left\",description:\"The ruby text content is aligned with the start edge of the base.\"},{name:\"line-edge\",browsers:[\"FF38\"],description:\"If the ruby text is not adjacent to a line edge, it is aligned as in 'auto'. If it is adjacent to a line edge, then it is still aligned as in auto, but the side of the ruby text that touches the end of the line is lined up with the corresponding edge of the base.\"},{name:\"right\",browsers:[\"FF38\"],description:\"The ruby text content is aligned with the end edge of the base.\"},{name:\"start\",browsers:[\"FF38\"],description:\"The ruby text content is aligned with the start edge of the base.\"},{name:\"space-between\",browsers:[\"FF38\"],description:\"The ruby content expands as defined for normal text justification (as defined by 'text-justify'),\"},{name:\"space-around\",browsers:[\"FF38\"],description:\"As for 'space-between' except that there exists an extra justification opportunities whose space is distributed half before and half after the ruby content.\"}],status:\"experimental\",syntax:\"start | center | space-between | space-around\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/ruby-align\"}],description:\"Specifies how text is distributed within the various ruby boxes when their contents do not exactly fill their respective boxes.\",restrictions:[\"enum\"]},{name:\"ruby-overhang\",browsers:[\"FF10\",\"IE5\"],values:[{name:\"auto\",description:\"The ruby text can overhang text adjacent to the base on either side. This is the initial value.\"},{name:\"end\",description:\"The ruby text can overhang the text that follows it.\"},{name:\"none\",description:\"The ruby text cannot overhang any text adjacent to its base, only its own base.\"},{name:\"start\",description:\"The ruby text can overhang the text that precedes it.\"}],relevance:50,description:\"Determines whether, and on which side, ruby text is allowed to partially overhang any adjacent text in addition to its own base, when the ruby text is wider than the ruby base.\",restrictions:[\"enum\"]},{name:\"ruby-position\",browsers:[\"E84\",\"FF38\",\"S7\",\"C84\",\"O70\"],values:[{name:\"after\",description:\"The ruby text appears after the base. This is a relatively rare setting used in ideographic East Asian writing systems, most easily found in educational text.\"},{name:\"before\",description:\"The ruby text appears before the base. This is the most common setting used in ideographic East Asian writing systems.\"},{name:\"inline\"},{name:\"right\",description:\"The ruby text appears on the right of the base. Unlike 'before' and 'after', this value is not relative to the text flow direction.\"}],status:\"experimental\",syntax:\"[ alternate || [ over | under ] ] | inter-character\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/ruby-position\"}],description:\"Used by the parent of elements with display: ruby-text to control the position of the ruby text with respect to its base.\",restrictions:[\"enum\"]},{name:\"ruby-span\",browsers:[\"FF10\"],values:[{name:\"attr(x)\",description:\"The value of attribute 'x' is a string value. The string value is evaluated as a <number> to determine the number of ruby base elements to be spanned by the annotation element.\"},{name:\"none\",description:\"No spanning. The computed value is '1'.\"}],relevance:50,description:\"Determines whether, and on which side, ruby text is allowed to partially overhang any adjacent text in addition to its own base, when the ruby text is wider than the ruby base.\",restrictions:[\"enum\"]},{name:\"scrollbar-3dlight-color\",browsers:[\"IE5\"],relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scrollbar-3dlight-color\"}],description:\"Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.\",restrictions:[\"color\"]},{name:\"scrollbar-arrow-color\",browsers:[\"IE5\"],relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scrollbar-arrow-color\"}],description:\"Determines the color of the arrow elements of a scroll arrow.\",restrictions:[\"color\"]},{name:\"scrollbar-base-color\",browsers:[\"IE5\"],relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scrollbar-base-color\"}],description:\"Determines the color of the main elements of a scroll bar, which include the scroll box, track, and scroll arrows.\",restrictions:[\"color\"]},{name:\"scrollbar-darkshadow-color\",browsers:[\"IE5\"],relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scrollbar-darkshadow-color\"}],description:\"Determines the color of the gutter of a scroll bar.\",restrictions:[\"color\"]},{name:\"scrollbar-face-color\",browsers:[\"IE5\"],relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scrollbar-face-color\"}],description:\"Determines the color of the scroll box and scroll arrows of a scroll bar.\",restrictions:[\"color\"]},{name:\"scrollbar-highlight-color\",browsers:[\"IE5\"],relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scrollbar-highlight-color\"}],description:\"Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.\",restrictions:[\"color\"]},{name:\"scrollbar-shadow-color\",browsers:[\"IE5\"],relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scrollbar-shadow-color\"}],description:\"Determines the color of the bottom and right edges of the scroll box and scroll arrows of a scroll bar.\",restrictions:[\"color\"]},{name:\"scrollbar-track-color\",browsers:[\"IE6\"],relevance:50,description:\"Determines the color of the track element of a scroll bar.\",restrictions:[\"color\"]},{name:\"scroll-behavior\",browsers:[\"E79\",\"FF36\",\"S15.4\",\"C61\",\"O48\"],values:[{name:\"auto\",description:\"Scrolls in an instant fashion.\"},{name:\"smooth\",description:\"Scrolls in a smooth fashion using a user-agent-defined timing function and time period.\"}],syntax:\"auto | smooth\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-behavior\"}],description:\"Specifies the scrolling behavior for a scrolling box, when scrolling happens due to navigation or CSSOM scrolling APIs.\",restrictions:[\"enum\"]},{name:\"scroll-snap-coordinate\",browsers:[\"FF39\"],values:[{name:\"none\",description:\"Specifies that this element does not contribute a snap point.\"}],status:\"obsolete\",syntax:\"none | <position>#\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-coordinate\"}],description:\"Defines the x and y coordinate within the element which will align with the nearest ancestor scroll container\\u2019s snap-destination for the respective axis.\",restrictions:[\"position\",\"length\",\"percentage\",\"enum\"]},{name:\"scroll-snap-destination\",browsers:[\"FF39\"],status:\"obsolete\",syntax:\"<position>\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-destination\"}],description:\"Define the x and y coordinate within the scroll container\\u2019s visual viewport which element snap points will align with.\",restrictions:[\"position\",\"length\",\"percentage\"]},{name:\"scroll-snap-points-x\",browsers:[\"FF39\",\"S9\"],values:[{name:\"none\",description:\"No snap points are defined by this scroll container.\"},{name:\"repeat()\",description:\"Defines an interval at which snap points are defined, starting from the container\\u2019s relevant start edge.\"}],status:\"obsolete\",syntax:\"none | repeat( <length-percentage> )\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-points-x\"}],description:\"Defines the positioning of snap points along the x axis of the scroll container it is applied to.\",restrictions:[\"enum\"]},{name:\"scroll-snap-points-y\",browsers:[\"FF39\",\"S9\"],values:[{name:\"none\",description:\"No snap points are defined by this scroll container.\"},{name:\"repeat()\",description:\"Defines an interval at which snap points are defined, starting from the container\\u2019s relevant start edge.\"}],status:\"obsolete\",syntax:\"none | repeat( <length-percentage> )\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-points-y\"}],description:\"Defines the positioning of snap points along the y axis of the scroll container it is applied to.\",restrictions:[\"enum\"]},{name:\"scroll-snap-type\",values:[{name:\"none\",description:\"The visual viewport of this scroll container must ignore snap points, if any, when scrolled.\"},{name:\"mandatory\",description:\"The visual viewport of this scroll container is guaranteed to rest on a snap point when there are no active scrolling operations.\"},{name:\"proximity\",description:\"The visual viewport of this scroll container may come to rest on a snap point at the termination of a scroll at the discretion of the UA given the parameters of the scroll.\"}],syntax:\"none | [ x | y | block | inline | both ] [ mandatory | proximity ]?\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type\"}],description:\"Defines how strictly snap points are enforced on the scroll container.\",restrictions:[\"enum\"]},{name:\"shape-image-threshold\",browsers:[\"E79\",\"FF62\",\"S10.1\",\"C37\",\"O24\"],syntax:\"<alpha-value>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/shape-image-threshold\"}],description:\"Defines the alpha channel threshold used to extract the shape using an image. A value of 0.5 means that the shape will enclose all the pixels that are more than 50% opaque.\",restrictions:[\"number\"]},{name:\"shape-margin\",browsers:[\"E79\",\"FF62\",\"S10.1\",\"C37\",\"O24\"],syntax:\"<length-percentage>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/shape-margin\"}],description:\"Adds a margin to a 'shape-outside'. This defines a new shape that is the smallest contour that includes all the points that are the 'shape-margin' distance outward in the perpendicular direction from a point on the underlying shape.\",restrictions:[\"url\",\"length\",\"percentage\"]},{name:\"shape-outside\",browsers:[\"E79\",\"FF62\",\"S10.1\",\"C37\",\"O24\"],values:[{name:\"margin-box\",description:\"The background is painted within (clipped to) the margin box.\"},{name:\"none\",description:\"The float area is unaffected.\"}],syntax:\"none | [ <shape-box> || <basic-shape> ] | <image>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/shape-outside\"}],description:\"Specifies an orthogonal rotation to be applied to an image before it is laid out.\",restrictions:[\"image\",\"box\",\"shape\",\"enum\"]},{name:\"shape-rendering\",values:[{name:\"auto\",description:\"Suppresses aural rendering.\"},{name:\"crispEdges\",description:\"Emphasize the contrast between clean edges of artwork over rendering speed and geometric precision.\"},{name:\"geometricPrecision\",description:\"Emphasize geometric precision over speed and crisp edges.\"},{name:\"optimizeSpeed\",description:\"Emphasize rendering speed over geometric precision and crisp edges.\"}],relevance:50,description:\"Provides hints about what tradeoffs to make as it renders vector graphics elements such as <path> elements and basic shapes such as circles and rectangles.\",restrictions:[\"enum\"]},{name:\"size\",browsers:[\"C\",\"O8\"],syntax:\"<length>{1,2} | auto | [ <page-size> || [ portrait | landscape ] ]\",relevance:53,description:\"The size CSS at-rule descriptor, used with the @page at-rule, defines the size and orientation of the box which is used to represent a page. Most of the time, this size corresponds to the target size of the printed page if applicable.\",restrictions:[\"length\"]},{name:\"src\",values:[{name:\"url()\",description:\"Reference font by URL\"},{name:\"format()\",description:\"Optional hint describing the format of the font resource.\"},{name:\"local()\",description:\"Format-specific string that identifies a locally available copy of a given font.\"}],syntax:\"[ <url> [ format( <string># ) ]? | local( <family-name> ) ]#\",relevance:87,description:\"@font-face descriptor. Specifies the resource containing font data. It is required, whether the font is downloadable or locally installed.\",restrictions:[\"enum\",\"url\",\"identifier\"]},{name:\"stop-color\",relevance:51,description:\"Indicates what color to use at that gradient stop.\",restrictions:[\"color\"]},{name:\"stop-opacity\",relevance:50,description:\"Defines the opacity of a given gradient stop.\",restrictions:[\"number(0-1)\"]},{name:\"stroke\",values:[{name:\"url()\",description:\"A URL reference to a paint server element, which is an element that defines a paint server: \\u2018hatch\\u2019, \\u2018linearGradient\\u2019, \\u2018mesh\\u2019, \\u2018pattern\\u2019, \\u2018radialGradient\\u2019 and \\u2018solidcolor\\u2019.\"},{name:\"none\",description:\"No paint is applied in this layer.\"}],relevance:65,description:\"Paints along the outline of the given graphical element.\",restrictions:[\"color\",\"enum\",\"url\"]},{name:\"stroke-dasharray\",values:[{name:\"none\",description:\"Indicates that no dashing is used.\"}],relevance:58,description:\"Controls the pattern of dashes and gaps used to stroke paths.\",restrictions:[\"length\",\"percentage\",\"number\",\"enum\"]},{name:\"stroke-dashoffset\",relevance:59,description:\"Specifies the distance into the dash pattern to start the dash.\",restrictions:[\"percentage\",\"length\"]},{name:\"stroke-linecap\",values:[{name:\"butt\",description:\"Indicates that the stroke for each subpath does not extend beyond its two endpoints.\"},{name:\"round\",description:\"Indicates that at each end of each subpath, the shape representing the stroke will be extended by a half circle with a radius equal to the stroke width.\"},{name:\"square\",description:\"Indicates that at the end of each subpath, the shape representing the stroke will be extended by a rectangle with the same width as the stroke width and whose length is half of the stroke width.\"}],relevance:53,description:\"Specifies the shape to be used at the end of open subpaths when they are stroked.\",restrictions:[\"enum\"]},{name:\"stroke-linejoin\",values:[{name:\"bevel\",description:\"Indicates that a bevelled corner is to be used to join path segments.\"},{name:\"miter\",description:\"Indicates that a sharp corner is to be used to join path segments.\"},{name:\"round\",description:\"Indicates that a round corner is to be used to join path segments.\"}],relevance:50,description:\"Specifies the shape to be used at the corners of paths or basic shapes when they are stroked.\",restrictions:[\"enum\"]},{name:\"stroke-miterlimit\",relevance:51,description:\"When two line segments meet at a sharp angle and miter joins have been specified for 'stroke-linejoin', it is possible for the miter to extend far beyond the thickness of the line stroking the path.\",restrictions:[\"number\"]},{name:\"stroke-opacity\",relevance:52,description:\"Specifies the opacity of the painting operation used to stroke the current object.\",restrictions:[\"number(0-1)\"]},{name:\"stroke-width\",relevance:61,description:\"Specifies the width of the stroke on the current object.\",restrictions:[\"percentage\",\"length\"]},{name:\"suffix\",browsers:[\"FF33\"],syntax:\"<symbol>\",relevance:50,description:\"@counter-style descriptor. Specifies a <symbol> that is appended to the marker representation.\",restrictions:[\"image\",\"string\",\"identifier\"]},{name:\"system\",browsers:[\"FF33\"],values:[{name:\"additive\",description:\"Represents \\u201Csign-value\\u201D numbering systems, which, rather than using reusing digits in different positions to change their value, define additional digits with much larger values, so that the value of the number can be obtained by adding all the digits together.\"},{name:\"alphabetic\",description:'Interprets the list of counter symbols as digits to an alphabetic numbering system, similar to the default lower-alpha counter style, which wraps from \"a\", \"b\", \"c\", to \"aa\", \"ab\", \"ac\".'},{name:\"cyclic\",description:\"Cycles repeatedly through its provided symbols, looping back to the beginning when it reaches the end of the list.\"},{name:\"extends\",description:\"Use the algorithm of another counter style, but alter other aspects.\"},{name:\"fixed\",description:\"Runs through its list of counter symbols once, then falls back.\"},{name:\"numeric\",description:`interprets the list of counter symbols as digits to a \"place-value\" numbering system, similar to the default 'decimal' counter style.`},{name:\"symbolic\",description:\"Cycles repeatedly through its provided symbols, doubling, tripling, etc. the symbols on each successive pass through the list.\"}],syntax:\"cyclic | numeric | alphabetic | symbolic | additive | [ fixed <integer>? ] | [ extends <counter-style-name> ]\",relevance:50,description:\"@counter-style descriptor. Specifies which algorithm will be used to construct the counter\\u2019s representation based on the counter value.\",restrictions:[\"enum\",\"integer\"]},{name:\"symbols\",browsers:[\"FF33\"],syntax:\"<symbol>+\",relevance:50,description:\"@counter-style descriptor. Specifies the symbols used by the marker-construction algorithm specified by the system descriptor.\",restrictions:[\"image\",\"string\",\"identifier\"]},{name:\"table-layout\",values:[{name:\"auto\",description:\"Use any automatic table layout algorithm.\"},{name:\"fixed\",description:\"Use the fixed table layout algorithm.\"}],syntax:\"auto | fixed\",relevance:60,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/table-layout\"}],description:\"Controls the algorithm used to lay out the table cells, rows, and columns.\",restrictions:[\"enum\"]},{name:\"tab-size\",browsers:[\"E79\",\"FF91\",\"S7\",\"C21\",\"O15\"],syntax:\"<integer> | <length>\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/tab-size\"}],description:\"Determines the width of the tab character (U+0009), in space characters (U+0020), when rendered.\",restrictions:[\"integer\",\"length\"]},{name:\"text-align\",values:[{name:\"center\",description:\"The inline contents are centered within the line box.\"},{name:\"end\",description:\"The inline contents are aligned to the end edge of the line box.\"},{name:\"justify\",description:\"The text is justified according to the method specified by the 'text-justify' property.\"},{name:\"left\",description:\"The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text.\"},{name:\"right\",description:\"The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text.\"},{name:\"start\",description:\"The inline contents are aligned to the start edge of the line box.\"}],syntax:\"start | end | left | right | center | justify | match-parent\",relevance:94,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-align\"}],description:\"Describes how inline contents of a block are horizontally aligned if the contents do not completely fill the line box.\",restrictions:[\"string\"]},{name:\"text-align-last\",browsers:[\"E12\",\"FF49\",\"C47\",\"IE5.5\",\"O34\"],values:[{name:\"auto\",description:\"Content on the affected line is aligned per 'text-align' unless 'text-align' is set to 'justify', in which case it is 'start-aligned'.\"},{name:\"center\",description:\"The inline contents are centered within the line box.\"},{name:\"justify\",description:\"The text is justified according to the method specified by the 'text-justify' property.\"},{name:\"left\",description:\"The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text.\"},{name:\"right\",description:\"The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text.\"}],syntax:\"auto | start | end | left | right | center | justify\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-align-last\"}],description:\"Describes how the last line of a block or a line right before a forced line break is aligned when 'text-align' is set to 'justify'.\",restrictions:[\"enum\"]},{name:\"text-anchor\",values:[{name:\"end\",description:\"The rendered characters are aligned such that the end of the resulting rendered text is at the initial current text position.\"},{name:\"middle\",description:\"The rendered characters are aligned such that the geometric middle of the resulting rendered text is at the initial current text position.\"},{name:\"start\",description:\"The rendered characters are aligned such that the start of the resulting rendered text is at the initial current text position.\"}],relevance:50,description:\"Used to align (start-, middle- or end-alignment) a string of text relative to a given point.\",restrictions:[\"enum\"]},{name:\"text-decoration\",values:[{name:\"dashed\",description:\"Produces a dashed line style.\"},{name:\"dotted\",description:\"Produces a dotted line.\"},{name:\"double\",description:\"Produces a double line.\"},{name:\"line-through\",description:\"Each line of text has a line through the middle.\"},{name:\"none\",description:\"Produces no line.\"},{name:\"overline\",description:\"Each line of text has a line above it.\"},{name:\"solid\",description:\"Produces a solid line.\"},{name:\"underline\",description:\"Each line of text is underlined.\"},{name:\"wavy\",description:\"Produces a wavy line.\"}],syntax:\"<'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>\",relevance:92,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-decoration\"}],description:\"Decorations applied to font used for an element's text.\",restrictions:[\"enum\",\"color\"]},{name:\"text-decoration-color\",browsers:[\"E79\",\"FF36\",\"S12.1\",\"C57\",\"O44\"],syntax:\"<color>\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-decoration-color\"}],description:\"Specifies the color of text decoration (underlines overlines, and line-throughs) set on the element with text-decoration-line.\",restrictions:[\"color\"]},{name:\"text-decoration-line\",browsers:[\"E79\",\"FF36\",\"S12.1\",\"C57\",\"O44\"],values:[{name:\"line-through\",description:\"Each line of text has a line through the middle.\"},{name:\"none\",description:\"Neither produces nor inhibits text decoration.\"},{name:\"overline\",description:\"Each line of text has a line above it.\"},{name:\"underline\",description:\"Each line of text is underlined.\"}],syntax:\"none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error\",relevance:52,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-decoration-line\"}],description:\"Specifies what line decorations, if any, are added to the element.\",restrictions:[\"enum\"]},{name:\"text-decoration-style\",browsers:[\"E79\",\"FF36\",\"S12.1\",\"C57\",\"O44\"],values:[{name:\"dashed\",description:\"Produces a dashed line style.\"},{name:\"dotted\",description:\"Produces a dotted line.\"},{name:\"double\",description:\"Produces a double line.\"},{name:\"none\",description:\"Produces no line.\"},{name:\"solid\",description:\"Produces a solid line.\"},{name:\"wavy\",description:\"Produces a wavy line.\"}],syntax:\"solid | double | dotted | dashed | wavy\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-decoration-style\"}],description:\"Specifies the line style for underline, line-through and overline text decoration.\",restrictions:[\"enum\"]},{name:\"text-indent\",values:[],syntax:\"<length-percentage> && hanging? && each-line?\",relevance:68,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-indent\"}],description:\"Specifies the indentation applied to lines of inline content in a block. The indentation only affects the first line of inline content in the block unless the 'hanging' keyword is specified, in which case it affects all lines except the first.\",restrictions:[\"percentage\",\"length\"]},{name:\"text-justify\",browsers:[\"E12\",\"FF55\",\"C32\",\"IE11\",\"O19\"],values:[{name:\"auto\",description:\"The UA determines the justification algorithm to follow, based on a balance between performance and adequate presentation quality.\"},{name:\"distribute\",description:\"Justification primarily changes spacing both at word separators and at grapheme cluster boundaries in all scripts except those in the connected and cursive groups. This value is sometimes used in e.g. Japanese, often with the 'text-align-last' property.\"},{name:\"distribute-all-lines\"},{name:\"inter-cluster\",description:\"Justification primarily changes spacing at word separators and at grapheme cluster boundaries in clustered scripts. This value is typically used for Southeast Asian scripts such as Thai.\"},{name:\"inter-ideograph\",description:\"Justification primarily changes spacing at word separators and at inter-graphemic boundaries in scripts that use no word spaces. This value is typically used for CJK languages.\"},{name:\"inter-word\",description:\"Justification primarily changes spacing at word separators. This value is typically used for languages that separate words using spaces, like English or (sometimes) Korean.\"},{name:\"kashida\",description:\"Justification primarily stretches Arabic and related scripts through the use of kashida or other calligraphic elongation.\"},{name:\"newspaper\"}],syntax:\"auto | inter-character | inter-word | none\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-justify\"}],description:\"Selects the justification algorithm used when 'text-align' is set to 'justify'. The property applies to block containers, but the UA may (but is not required to) also support it on inline elements.\",restrictions:[\"enum\"]},{name:\"text-orientation\",browsers:[\"E79\",\"FF41\",\"S14\",\"C48\",\"O35\"],values:[{name:\"sideways\",browsers:[\"E79\",\"FF41\",\"S14\",\"C48\",\"O35\"],description:\"This value is equivalent to 'sideways-right' in 'vertical-rl' writing mode and equivalent to 'sideways-left' in 'vertical-lr' writing mode.\"},{name:\"sideways-right\",browsers:[\"E79\",\"FF41\",\"S14\",\"C48\",\"O35\"],description:\"In vertical writing modes, this causes text to be set as if in a horizontal layout, but rotated 90\\xB0 clockwise.\"},{name:\"upright\",description:\"In vertical writing modes, characters from horizontal-only scripts are rendered upright, i.e. in their standard horizontal orientation.\"}],syntax:\"mixed | upright | sideways\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-orientation\"}],description:\"Specifies the orientation of text within a line.\",restrictions:[\"enum\"]},{name:\"text-overflow\",values:[{name:\"clip\",description:\"Clip inline content that overflows. Characters may be only partially rendered.\"},{name:\"ellipsis\",description:\"Render an ellipsis character (U+2026) to represent clipped inline content.\"}],syntax:\"[ clip | ellipsis | <string> ]{1,2}\",relevance:82,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-overflow\"}],description:\"Text can overflow for example when it is prevented from wrapping.\",restrictions:[\"enum\",\"string\"]},{name:\"text-rendering\",browsers:[\"E79\",\"FF1\",\"S5\",\"C4\",\"O15\"],values:[{name:\"auto\"},{name:\"geometricPrecision\",description:\"Indicates that the user agent shall emphasize geometric precision over legibility and rendering speed.\"},{name:\"optimizeLegibility\",description:\"Indicates that the user agent shall emphasize legibility over rendering speed and geometric precision.\"},{name:\"optimizeSpeed\",description:\"Indicates that the user agent shall emphasize rendering speed over legibility and geometric precision.\"}],syntax:\"auto | optimizeSpeed | optimizeLegibility | geometricPrecision\",relevance:70,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-rendering\"}],description:\"The creator of SVG content might want to provide a hint to the implementation about what tradeoffs to make as it renders text. The \\u2018text-rendering\\u2019 property provides these hints.\",restrictions:[\"enum\"]},{name:\"text-shadow\",values:[{name:\"none\",description:\"No shadow.\"}],syntax:\"none | <shadow-t>#\",relevance:74,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-shadow\"}],description:\"Enables shadow effects to be applied to the text of the element.\",restrictions:[\"length\",\"color\"]},{name:\"text-transform\",values:[{name:\"capitalize\",description:\"Puts the first typographic letter unit of each word in titlecase.\"},{name:\"lowercase\",description:\"Puts all letters in lowercase.\"},{name:\"none\",description:\"No effects.\"},{name:\"uppercase\",description:\"Puts all letters in uppercase.\"}],syntax:\"none | capitalize | uppercase | lowercase | full-width | full-size-kana\",relevance:86,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-transform\"}],description:\"Controls capitalization effects of an element\\u2019s text.\",restrictions:[\"enum\"]},{name:\"text-underline-position\",values:[{name:\"above\"},{name:\"auto\",description:\"The user agent may use any algorithm to determine the underline\\u2019s position. In horizontal line layout, the underline should be aligned as for alphabetic. In vertical line layout, if the language is set to Japanese or Korean, the underline should be aligned as for over.\"},{name:\"below\",description:\"The underline is aligned with the under edge of the element\\u2019s content box.\"}],syntax:\"auto | from-font | [ under || [ left | right ] ]\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-underline-position\"}],description:\"Sets the position of an underline specified on the same element: it does not affect underlines specified by ancestor elements. This property is typically used in vertical writing contexts such as in Japanese documents where it often desired to have the underline appear 'over' (to the right of) the affected run of text\",restrictions:[\"enum\"]},{name:\"top\",values:[{name:\"auto\",description:\"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well\"}],syntax:\"<length> | <percentage> | auto\",relevance:95,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/top\"}],description:\"Specifies how far an absolutely positioned box's top margin edge is offset below the top edge of the box's 'containing block'.\",restrictions:[\"length\",\"percentage\"]},{name:\"touch-action\",values:[{name:\"auto\",description:\"The user agent may determine any permitted touch behaviors for touches that begin on the element.\"},{name:\"cross-slide-x\"},{name:\"cross-slide-y\"},{name:\"double-tap-zoom\"},{name:\"manipulation\",description:\"The user agent may consider touches that begin on the element only for the purposes of scrolling and continuous zooming.\"},{name:\"none\",description:\"Touches that begin on the element must not trigger default touch behaviors.\"},{name:\"pan-x\",description:\"The user agent may consider touches that begin on the element only for the purposes of horizontally scrolling the element\\u2019s nearest ancestor with horizontally scrollable content.\"},{name:\"pan-y\",description:\"The user agent may consider touches that begin on the element only for the purposes of vertically scrolling the element\\u2019s nearest ancestor with vertically scrollable content.\"},{name:\"pinch-zoom\"}],syntax:\"auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation\",relevance:67,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/touch-action\"}],description:\"Determines whether touch input may trigger default behavior supplied by user agent.\",restrictions:[\"enum\"]},{name:\"transform\",values:[{name:\"matrix()\",description:\"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]\"},{name:\"matrix3d()\",description:\"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order.\"},{name:\"none\"},{name:\"perspective()\",description:\"Specifies a perspective projection matrix.\"},{name:\"rotate()\",description:\"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property.\"},{name:\"rotate3d()\",description:\"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters.\"},{name:\"rotateX('angle')\",description:\"Specifies a clockwise rotation by the given angle about the X axis.\"},{name:\"rotateY('angle')\",description:\"Specifies a clockwise rotation by the given angle about the Y axis.\"},{name:\"rotateZ('angle')\",description:\"Specifies a clockwise rotation by the given angle about the Z axis.\"},{name:\"scale()\",description:\"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first.\"},{name:\"scale3d()\",description:\"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters.\"},{name:\"scaleX()\",description:\"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter.\"},{name:\"scaleY()\",description:\"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter.\"},{name:\"scaleZ()\",description:\"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter.\"},{name:\"skew()\",description:\"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis).\"},{name:\"skewX()\",description:\"Specifies a skew transformation along the X axis by the given angle.\"},{name:\"skewY()\",description:\"Specifies a skew transformation along the Y axis by the given angle.\"},{name:\"translate()\",description:\"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter.\"},{name:\"translate3d()\",description:\"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively.\"},{name:\"translateX()\",description:\"Specifies a translation by the given amount in the X direction.\"},{name:\"translateY()\",description:\"Specifies a translation by the given amount in the Y direction.\"},{name:\"translateZ()\",description:\"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0.\"}],syntax:\"none | <transform-list>\",relevance:90,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/transform\"}],description:\"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.\",restrictions:[\"enum\"]},{name:\"transform-origin\",syntax:\"[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?\",relevance:77,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/transform-origin\"}],description:\"Establishes the origin of transformation for an element.\",restrictions:[\"position\",\"length\",\"percentage\"]},{name:\"transform-style\",browsers:[\"E12\",\"FF16\",\"S9\",\"C36\",\"O23\"],values:[{name:\"flat\",description:\"All children of this element are rendered flattened into the 2D plane of the element.\"},{name:\"preserve-3d\",browsers:[\"E12\",\"FF16\",\"S9\",\"C36\",\"O23\"],description:\"Flattening is not performed, so children maintain their position in 3D space.\"}],syntax:\"flat | preserve-3d\",relevance:55,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/transform-style\"}],description:\"Defines how nested elements are rendered in 3D space.\",restrictions:[\"enum\"]},{name:\"transition\",values:[{name:\"all\",description:\"Every property that is able to undergo a transition will do so.\"},{name:\"none\",description:\"No property will transition.\"}],syntax:\"<single-transition>#\",relevance:88,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/transition\"}],description:\"Shorthand property combines four of the transition properties into a single property.\",restrictions:[\"time\",\"property\",\"timing-function\",\"enum\"]},{name:\"transition-delay\",syntax:\"<time>#\",relevance:64,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/transition-delay\"}],description:\"Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.\",restrictions:[\"time\"]},{name:\"transition-duration\",syntax:\"<time>#\",relevance:64,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/transition-duration\"}],description:\"Specifies how long the transition from the old value to the new value should take.\",restrictions:[\"time\"]},{name:\"transition-property\",values:[{name:\"all\",description:\"Every property that is able to undergo a transition will do so.\"},{name:\"none\",description:\"No property will transition.\"}],syntax:\"none | <single-transition-property>#\",relevance:64,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/transition-property\"}],description:\"Specifies the name of the CSS property to which the transition is applied.\",restrictions:[\"property\"]},{name:\"transition-timing-function\",syntax:\"<easing-function>#\",relevance:64,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/transition-timing-function\"}],description:\"Describes how the intermediate values used during a transition will be calculated.\",restrictions:[\"timing-function\"]},{name:\"unicode-bidi\",values:[{name:\"bidi-override\",description:\"Inside the element, reordering is strictly in sequence according to the 'direction' property; the implicit part of the bidirectional algorithm is ignored.\"},{name:\"embed\",description:\"If the element is inline-level, this value opens an additional level of embedding with respect to the bidirectional algorithm. The direction of this embedding level is given by the 'direction' property.\"},{name:\"isolate\",description:\"The contents of the element are considered to be inside a separate, independent paragraph.\"},{name:\"isolate-override\",description:\"This combines the isolation behavior of 'isolate' with the directional override behavior of 'bidi-override'\"},{name:\"normal\",description:\"The element does not open an additional level of embedding with respect to the bidirectional algorithm. For inline-level elements, implicit reordering works across element boundaries.\"},{name:\"plaintext\",description:\"For the purposes of the Unicode bidirectional algorithm, the base directionality of each bidi paragraph for which the element forms the containing block is determined not by the element's computed 'direction'.\"}],syntax:\"normal | embed | isolate | bidi-override | isolate-override | plaintext\",relevance:57,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/unicode-bidi\"}],description:\"The level of embedding with respect to the bidirectional algorithm.\",restrictions:[\"enum\"]},{name:\"unicode-range\",values:[{name:\"U+26\",description:\"Ampersand.\"},{name:\"U+20-24F, U+2B0-2FF, U+370-4FF, U+1E00-1EFF, U+2000-20CF, U+2100-23FF, U+2500-26FF, U+E000-F8FF, U+FB00\\u2013FB4F\",description:\"WGL4 character set (Pan-European).\"},{name:\"U+20-17F, U+2B0-2FF, U+2000-206F, U+20A0-20CF, U+2100-21FF, U+2600-26FF\",description:\"The Multilingual European Subset No. 1. Latin. Covers ~44 languages.\"},{name:\"U+20-2FF, U+370-4FF, U+1E00-20CF, U+2100-23FF, U+2500-26FF, U+FB00-FB4F, U+FFF0-FFFD\",description:\"The Multilingual European Subset No. 2. Latin, Greek, and Cyrillic. Covers ~128 language.\"},{name:\"U+20-4FF, U+530-58F, U+10D0-10FF, U+1E00-23FF, U+2440-245F, U+2500-26FF, U+FB00-FB4F, U+FE20-FE2F, U+FFF0-FFFD\",description:\"The Multilingual European Subset No. 3. Covers all characters belonging to European scripts.\"},{name:\"U+00-7F\",description:\"Basic Latin (ASCII).\"},{name:\"U+80-FF\",description:\"Latin-1 Supplement. Accented characters for Western European languages, common punctuation characters, multiplication and division signs.\"},{name:\"U+100-17F\",description:\"Latin Extended-A. Accented characters for for Czech, Dutch, Polish, and Turkish.\"},{name:\"U+180-24F\",description:\"Latin Extended-B. Croatian, Slovenian, Romanian, Non-European and historic latin, Khoisan, Pinyin, Livonian, Sinology.\"},{name:\"U+1E00-1EFF\",description:\"Latin Extended Additional. Vietnamese, German captial sharp s, Medievalist, Latin general use.\"},{name:\"U+250-2AF\",description:\"International Phonetic Alphabet Extensions.\"},{name:\"U+370-3FF\",description:\"Greek and Coptic.\"},{name:\"U+1F00-1FFF\",description:\"Greek Extended. Accented characters for polytonic Greek.\"},{name:\"U+400-4FF\",description:\"Cyrillic.\"},{name:\"U+500-52F\",description:\"Cyrillic Supplement. Extra letters for Komi, Khanty, Chukchi, Mordvin, Kurdish, Aleut, Chuvash, Abkhaz, Azerbaijani, and Orok.\"},{name:\"U+00-52F, U+1E00-1FFF, U+2200\\u201322FF\",description:\"Latin, Greek, Cyrillic, some punctuation and symbols.\"},{name:\"U+530\\u201358F\",description:\"Armenian.\"},{name:\"U+590\\u20135FF\",description:\"Hebrew.\"},{name:\"U+600\\u20136FF\",description:\"Arabic.\"},{name:\"U+750\\u201377F\",description:\"Arabic Supplement. Additional letters for African languages, Khowar, Torwali, Burushaski, and early Persian.\"},{name:\"U+8A0\\u20138FF\",description:\"Arabic Extended-A. Additional letters for African languages, European and Central Asian languages, Rohingya, Tamazight, Arwi, and Koranic annotation signs.\"},{name:\"U+700\\u201374F\",description:\"Syriac.\"},{name:\"U+900\\u201397F\",description:\"Devanagari.\"},{name:\"U+980\\u20139FF\",description:\"Bengali.\"},{name:\"U+A00\\u2013A7F\",description:\"Gurmukhi.\"},{name:\"U+A80\\u2013AFF\",description:\"Gujarati.\"},{name:\"U+B00\\u2013B7F\",description:\"Oriya.\"},{name:\"U+B80\\u2013BFF\",description:\"Tamil.\"},{name:\"U+C00\\u2013C7F\",description:\"Telugu.\"},{name:\"U+C80\\u2013CFF\",description:\"Kannada.\"},{name:\"U+D00\\u2013D7F\",description:\"Malayalam.\"},{name:\"U+D80\\u2013DFF\",description:\"Sinhala.\"},{name:\"U+118A0\\u2013118FF\",description:\"Warang Citi.\"},{name:\"U+E00\\u2013E7F\",description:\"Thai.\"},{name:\"U+1A20\\u20131AAF\",description:\"Tai Tham.\"},{name:\"U+AA80\\u2013AADF\",description:\"Tai Viet.\"},{name:\"U+E80\\u2013EFF\",description:\"Lao.\"},{name:\"U+F00\\u2013FFF\",description:\"Tibetan.\"},{name:\"U+1000\\u2013109F\",description:\"Myanmar (Burmese).\"},{name:\"U+10A0\\u201310FF\",description:\"Georgian.\"},{name:\"U+1200\\u2013137F\",description:\"Ethiopic.\"},{name:\"U+1380\\u2013139F\",description:\"Ethiopic Supplement. Extra Syllables for Sebatbeit, and Tonal marks\"},{name:\"U+2D80\\u20132DDF\",description:\"Ethiopic Extended. Extra Syllables for Me'en, Blin, and Sebatbeit.\"},{name:\"U+AB00\\u2013AB2F\",description:\"Ethiopic Extended-A. Extra characters for Gamo-Gofa-Dawro, Basketo, and Gumuz.\"},{name:\"U+1780\\u201317FF\",description:\"Khmer.\"},{name:\"U+1800\\u201318AF\",description:\"Mongolian.\"},{name:\"U+1B80\\u20131BBF\",description:\"Sundanese.\"},{name:\"U+1CC0\\u20131CCF\",description:\"Sundanese Supplement. Punctuation.\"},{name:\"U+4E00\\u20139FD5\",description:\"CJK (Chinese, Japanese, Korean) Unified Ideographs. Most common ideographs for modern Chinese and Japanese.\"},{name:\"U+3400\\u20134DB5\",description:\"CJK Unified Ideographs Extension A. Rare ideographs.\"},{name:\"U+2F00\\u20132FDF\",description:\"Kangxi Radicals.\"},{name:\"U+2E80\\u20132EFF\",description:\"CJK Radicals Supplement. Alternative forms of Kangxi Radicals.\"},{name:\"U+1100\\u201311FF\",description:\"Hangul Jamo.\"},{name:\"U+AC00\\u2013D7AF\",description:\"Hangul Syllables.\"},{name:\"U+3040\\u2013309F\",description:\"Hiragana.\"},{name:\"U+30A0\\u201330FF\",description:\"Katakana.\"},{name:\"U+A5, U+4E00-9FFF, U+30??, U+FF00-FF9F\",description:\"Japanese Kanji, Hiragana and Katakana characters plus Yen/Yuan symbol.\"},{name:\"U+A4D0\\u2013A4FF\",description:\"Lisu.\"},{name:\"U+A000\\u2013A48F\",description:\"Yi Syllables.\"},{name:\"U+A490\\u2013A4CF\",description:\"Yi Radicals.\"},{name:\"U+2000-206F\",description:\"General Punctuation.\"},{name:\"U+3000\\u2013303F\",description:\"CJK Symbols and Punctuation.\"},{name:\"U+2070\\u2013209F\",description:\"Superscripts and Subscripts.\"},{name:\"U+20A0\\u201320CF\",description:\"Currency Symbols.\"},{name:\"U+2100\\u2013214F\",description:\"Letterlike Symbols.\"},{name:\"U+2150\\u2013218F\",description:\"Number Forms.\"},{name:\"U+2190\\u201321FF\",description:\"Arrows.\"},{name:\"U+2200\\u201322FF\",description:\"Mathematical Operators.\"},{name:\"U+2300\\u201323FF\",description:\"Miscellaneous Technical.\"},{name:\"U+E000-F8FF\",description:\"Private Use Area.\"},{name:\"U+FB00\\u2013FB4F\",description:\"Alphabetic Presentation Forms. Ligatures for latin, Armenian, and Hebrew.\"},{name:\"U+FB50\\u2013FDFF\",description:\"Arabic Presentation Forms-A. Contextual forms / ligatures for Persian, Urdu, Sindhi, Central Asian languages, etc, Arabic pedagogical symbols, word ligatures.\"},{name:\"U+1F600\\u20131F64F\",description:\"Emoji: Emoticons.\"},{name:\"U+2600\\u201326FF\",description:\"Emoji: Miscellaneous Symbols.\"},{name:\"U+1F300\\u20131F5FF\",description:\"Emoji: Miscellaneous Symbols and Pictographs.\"},{name:\"U+1F900\\u20131F9FF\",description:\"Emoji: Supplemental Symbols and Pictographs.\"},{name:\"U+1F680\\u20131F6FF\",description:\"Emoji: Transport and Map Symbols.\"}],syntax:\"<unicode-range>#\",relevance:73,description:\"@font-face descriptor. Defines the set of Unicode codepoints that may be supported by the font face for which it is declared.\",restrictions:[\"unicode-range\"]},{name:\"user-select\",values:[{name:\"all\",description:\"The content of the element must be selected atomically\"},{name:\"auto\"},{name:\"contain\",description:\"UAs must not allow a selection which is started in this element to be extended outside of this element.\"},{name:\"none\",description:\"The UA must not allow selections to be started in this element.\"},{name:\"text\",description:\"The element imposes no constraint on the selection.\"}],syntax:\"auto | text | none | contain | all\",relevance:78,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/user-select\"}],description:\"Controls the appearance of selection.\",restrictions:[\"enum\"]},{name:\"vertical-align\",values:[{name:\"auto\",description:\"Align the dominant baseline of the parent box with the equivalent, or heuristically reconstructed, baseline of the element inline box.\"},{name:\"baseline\",description:\"Align the 'alphabetic' baseline of the element with the 'alphabetic' baseline of the parent element.\"},{name:\"bottom\",description:\"Align the after edge of the extended inline box with the after-edge of the line box.\"},{name:\"middle\",description:\"Align the 'middle' baseline of the inline element with the middle baseline of the parent.\"},{name:\"sub\",description:\"Lower the baseline of the box to the proper position for subscripts of the parent's box. (This value has no effect on the font size of the element's text.)\"},{name:\"super\",description:\"Raise the baseline of the box to the proper position for superscripts of the parent's box. (This value has no effect on the font size of the element's text.)\"},{name:\"text-bottom\",description:\"Align the bottom of the box with the after-edge of the parent element's font.\"},{name:\"text-top\",description:\"Align the top of the box with the before-edge of the parent element's font.\"},{name:\"top\",description:\"Align the before edge of the extended inline box with the before-edge of the line box.\"},{name:\"-webkit-baseline-middle\"}],syntax:\"baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>\",relevance:92,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/vertical-align\"}],description:\"Affects the vertical positioning of the inline boxes generated by an inline-level element inside a line box.\",restrictions:[\"percentage\",\"length\"]},{name:\"visibility\",values:[{name:\"collapse\",description:\"Table-specific. If used on elements other than rows, row groups, columns, or column groups, 'collapse' has the same meaning as 'hidden'.\"},{name:\"hidden\",description:\"The generated box is invisible (fully transparent, nothing is drawn), but still affects layout.\"},{name:\"visible\",description:\"The generated box is visible.\"}],syntax:\"visible | hidden | collapse\",relevance:88,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/visibility\"}],description:\"Specifies whether the boxes generated by an element are rendered. Invisible boxes still affect layout (set the \\u2018display\\u2019 property to \\u2018none\\u2019 to suppress box generation altogether).\",restrictions:[\"enum\"]},{name:\"-webkit-animation\",browsers:[\"C\",\"S5\"],values:[{name:\"alternate\",description:\"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction.\"},{name:\"alternate-reverse\",description:\"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction.\"},{name:\"backwards\",description:\"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'.\"},{name:\"both\",description:\"Both forwards and backwards fill modes are applied.\"},{name:\"forwards\",description:\"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes.\"},{name:\"infinite\",description:\"Causes the animation to repeat forever.\"},{name:\"none\",description:\"No animation is performed\"},{name:\"normal\",description:\"Normal playback.\"},{name:\"reverse\",description:\"All iterations of the animation are played in the reverse direction from the way they were specified.\"}],relevance:50,description:\"Shorthand property combines six of the animation properties into a single property.\",restrictions:[\"time\",\"enum\",\"timing-function\",\"identifier\",\"number\"]},{name:\"-webkit-animation-delay\",browsers:[\"C\",\"S5\"],relevance:50,description:\"Defines when the animation will start.\",restrictions:[\"time\"]},{name:\"-webkit-animation-direction\",browsers:[\"C\",\"S5\"],values:[{name:\"alternate\",description:\"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction.\"},{name:\"alternate-reverse\",description:\"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction.\"},{name:\"normal\",description:\"Normal playback.\"},{name:\"reverse\",description:\"All iterations of the animation are played in the reverse direction from the way they were specified.\"}],relevance:50,description:\"Defines whether or not the animation should play in reverse on alternate cycles.\",restrictions:[\"enum\"]},{name:\"-webkit-animation-duration\",browsers:[\"C\",\"S5\"],relevance:50,description:\"Defines the length of time that an animation takes to complete one cycle.\",restrictions:[\"time\"]},{name:\"-webkit-animation-fill-mode\",browsers:[\"C\",\"S5\"],values:[{name:\"backwards\",description:\"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'.\"},{name:\"both\",description:\"Both forwards and backwards fill modes are applied.\"},{name:\"forwards\",description:\"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes.\"},{name:\"none\",description:\"There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes.\"}],relevance:50,description:\"Defines what values are applied by the animation outside the time it is executing.\",restrictions:[\"enum\"]},{name:\"-webkit-animation-iteration-count\",browsers:[\"C\",\"S5\"],values:[{name:\"infinite\",description:\"Causes the animation to repeat forever.\"}],relevance:50,description:\"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.\",restrictions:[\"number\",\"enum\"]},{name:\"-webkit-animation-name\",browsers:[\"C\",\"S5\"],values:[{name:\"none\",description:\"No animation is performed\"}],relevance:50,description:\"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.\",restrictions:[\"identifier\",\"enum\"]},{name:\"-webkit-animation-play-state\",browsers:[\"C\",\"S5\"],values:[{name:\"paused\",description:\"A running animation will be paused.\"},{name:\"running\",description:\"Resume playback of a paused animation.\"}],relevance:50,description:\"Defines whether the animation is running or paused.\",restrictions:[\"enum\"]},{name:\"-webkit-animation-timing-function\",browsers:[\"C\",\"S5\"],relevance:50,description:\"Describes how the animation will progress over one cycle of its duration. See the 'transition-timing-function'.\",restrictions:[\"timing-function\"]},{name:\"-webkit-appearance\",browsers:[\"C\",\"S3\"],values:[{name:\"button\"},{name:\"button-bevel\"},{name:\"caps-lock-indicator\"},{name:\"caret\"},{name:\"checkbox\"},{name:\"default-button\"},{name:\"listbox\"},{name:\"listitem\"},{name:\"media-fullscreen-button\"},{name:\"media-mute-button\"},{name:\"media-play-button\"},{name:\"media-seek-back-button\"},{name:\"media-seek-forward-button\"},{name:\"media-slider\"},{name:\"media-sliderthumb\"},{name:\"menulist\"},{name:\"menulist-button\"},{name:\"menulist-text\"},{name:\"menulist-textfield\"},{name:\"none\"},{name:\"push-button\"},{name:\"radio\"},{name:\"scrollbarbutton-down\"},{name:\"scrollbarbutton-left\"},{name:\"scrollbarbutton-right\"},{name:\"scrollbarbutton-up\"},{name:\"scrollbargripper-horizontal\"},{name:\"scrollbargripper-vertical\"},{name:\"scrollbarthumb-horizontal\"},{name:\"scrollbarthumb-vertical\"},{name:\"scrollbartrack-horizontal\"},{name:\"scrollbartrack-vertical\"},{name:\"searchfield\"},{name:\"searchfield-cancel-button\"},{name:\"searchfield-decoration\"},{name:\"searchfield-results-button\"},{name:\"searchfield-results-decoration\"},{name:\"slider-horizontal\"},{name:\"sliderthumb-horizontal\"},{name:\"sliderthumb-vertical\"},{name:\"slider-vertical\"},{name:\"square-button\"},{name:\"textarea\"},{name:\"textfield\"}],status:\"nonstandard\",syntax:\"none | button | button-bevel | caret | checkbox | default-button | inner-spin-button | listbox | listitem | media-controls-background | media-controls-fullscreen-background | media-current-time-display | media-enter-fullscreen-button | media-exit-fullscreen-button | media-fullscreen-button | media-mute-button | media-overlay-play-button | media-play-button | media-seek-back-button | media-seek-forward-button | media-slider | media-sliderthumb | media-time-remaining-display | media-toggle-closed-captions-button | media-volume-slider | media-volume-slider-container | media-volume-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | meter | progress-bar | progress-bar-value | push-button | radio | searchfield | searchfield-cancel-button | searchfield-decoration | searchfield-results-button | searchfield-results-decoration | slider-horizontal | slider-vertical | sliderthumb-horizontal | sliderthumb-vertical | square-button | textarea | textfield | -apple-pay-button\",relevance:0,description:\"Changes the appearance of buttons and other controls to resemble native controls.\",restrictions:[\"enum\"]},{name:\"-webkit-backdrop-filter\",browsers:[\"S9\"],values:[{name:\"none\",description:\"No filter effects are applied.\"},{name:\"blur()\",description:\"Applies a Gaussian blur to the input image.\"},{name:\"brightness()\",description:\"Applies a linear multiplier to input image, making it appear more or less bright.\"},{name:\"contrast()\",description:\"Adjusts the contrast of the input.\"},{name:\"drop-shadow()\",description:\"Applies a drop shadow effect to the input image.\"},{name:\"grayscale()\",description:\"Converts the input image to grayscale.\"},{name:\"hue-rotate()\",description:\"Applies a hue rotation on the input image. \"},{name:\"invert()\",description:\"Inverts the samples in the input image.\"},{name:\"opacity()\",description:\"Applies transparency to the samples in the input image.\"},{name:\"saturate()\",description:\"Saturates the input image.\"},{name:\"sepia()\",description:\"Converts the input image to sepia.\"},{name:\"url()\",description:\"A filter reference to a <filter> element.\"}],relevance:50,description:\"Applies a filter effect where the first filter in the list takes the element's background image as the input image.\",restrictions:[\"enum\",\"url\"]},{name:\"-webkit-backface-visibility\",browsers:[\"C\",\"S5\"],values:[{name:\"hidden\"},{name:\"visible\"}],relevance:50,description:\"Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.\",restrictions:[\"enum\"]},{name:\"-webkit-background-clip\",browsers:[\"C\",\"S3\"],relevance:50,description:\"Determines the background painting area.\",restrictions:[\"box\"]},{name:\"-webkit-background-composite\",browsers:[\"C\",\"S3\"],values:[{name:\"border\"},{name:\"padding\"}],relevance:50,restrictions:[\"enum\"]},{name:\"-webkit-background-origin\",browsers:[\"C\",\"S3\"],relevance:50,description:\"For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).\",restrictions:[\"box\"]},{name:\"-webkit-border-image\",browsers:[\"C\",\"S5\"],values:[{name:\"auto\",description:\"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead.\"},{name:\"fill\",description:\"Causes the middle part of the border-image to be preserved.\"},{name:\"none\"},{name:\"repeat\",description:\"The image is tiled (repeated) to fill the area.\"},{name:\"round\",description:\"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does.\"},{name:\"space\",description:\"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles.\"},{name:\"stretch\",description:\"The image is stretched to fill the area.\"},{name:\"url()\"}],relevance:50,description:\"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.\",restrictions:[\"length\",\"percentage\",\"number\",\"url\",\"enum\"]},{name:\"-webkit-box-align\",browsers:[\"C\",\"S3\"],values:[{name:\"baseline\",description:\"If this box orientation is inline-axis or horizontal, all children are placed with their baselines aligned, and extra space placed before or after as necessary. For block flows, the baseline of the first non-empty line box located within the element is used. For tables, the baseline of the first cell is used.\"},{name:\"center\",description:\"Any extra space is divided evenly, with half placed above the child and the other half placed after the child.\"},{name:\"end\",description:\"For normal direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element. For reverse direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element.\"},{name:\"start\",description:\"For normal direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element. For reverse direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element.\"},{name:\"stretch\",description:\"The height of each child is adjusted to that of the containing block.\"}],relevance:50,description:\"Specifies the alignment of nested elements within an outer flexible box element.\",restrictions:[\"enum\"]},{name:\"-webkit-box-direction\",browsers:[\"C\",\"S3\"],values:[{name:\"normal\",description:\"A box with a computed value of horizontal for box-orient displays its children from left to right. A box with a computed value of vertical displays its children from top to bottom.\"},{name:\"reverse\",description:\"A box with a computed value of horizontal for box-orient displays its children from right to left. A box with a computed value of vertical displays its children from bottom to top.\"}],relevance:50,description:\"In webkit applications, -webkit-box-direction specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).\",restrictions:[\"enum\"]},{name:\"-webkit-box-flex\",browsers:[\"C\",\"S3\"],relevance:50,description:\"Specifies an element's flexibility.\",restrictions:[\"number\"]},{name:\"-webkit-box-flex-group\",browsers:[\"C\",\"S3\"],relevance:50,description:\"Flexible elements can be assigned to flex groups using the 'box-flex-group' property.\",restrictions:[\"integer\"]},{name:\"-webkit-box-ordinal-group\",browsers:[\"C\",\"S3\"],relevance:50,description:\"Indicates the ordinal group the element belongs to. Elements with a lower ordinal group are displayed before those with a higher ordinal group.\",restrictions:[\"integer\"]},{name:\"-webkit-box-orient\",browsers:[\"C\",\"S3\"],values:[{name:\"block-axis\",description:\"Elements are oriented along the box's axis.\"},{name:\"horizontal\",description:\"The box displays its children from left to right in a horizontal line.\"},{name:\"inline-axis\",description:\"Elements are oriented vertically.\"},{name:\"vertical\",description:\"The box displays its children from stacked from top to bottom vertically.\"}],relevance:50,description:\"In webkit applications, -webkit-box-orient specifies whether a box lays out its contents horizontally or vertically.\",restrictions:[\"enum\"]},{name:\"-webkit-box-pack\",browsers:[\"C\",\"S3\"],values:[{name:\"center\",description:\"The extra space is divided evenly, with half placed before the first child and the other half placed after the last child.\"},{name:\"end\",description:\"For normal direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child. For reverse direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child.\"},{name:\"justify\",description:\"The space is divided evenly in-between each child, with none of the extra space placed before the first child or after the last child. If there is only one child, treat the pack value as if it were start.\"},{name:\"start\",description:\"For normal direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child. For reverse direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child.\"}],relevance:50,description:\"Specifies alignment of child elements within the current element in the direction of orientation.\",restrictions:[\"enum\"]},{name:\"-webkit-box-reflect\",browsers:[\"E79\",\"S4\",\"C4\",\"O15\"],values:[{name:\"above\",description:\"The reflection appears above the border box.\"},{name:\"below\",description:\"The reflection appears below the border box.\"},{name:\"left\",description:\"The reflection appears to the left of the border box.\"},{name:\"right\",description:\"The reflection appears to the right of the border box.\"}],status:\"nonstandard\",syntax:\"[ above | below | right | left ]? <length>? <image>?\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-box-reflect\"}],description:\"Defines a reflection of a border box.\"},{name:\"-webkit-box-sizing\",browsers:[\"C\",\"S3\"],values:[{name:\"border-box\",description:\"The specified width and height (and respective min/max properties) on this element determine the border box of the element.\"},{name:\"content-box\",description:\"Behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element.\"}],relevance:50,description:\"Box Model addition in CSS3.\",restrictions:[\"enum\"]},{name:\"-webkit-break-after\",browsers:[\"S7\"],values:[{name:\"always\",description:\"Always force a page break before/after the generated box.\"},{name:\"auto\",description:\"Neither force nor forbid a page/column break before/after the generated box.\"},{name:\"avoid\",description:\"Avoid a page/column break before/after the generated box.\"},{name:\"avoid-column\",description:\"Avoid a column break before/after the generated box.\"},{name:\"avoid-page\",description:\"Avoid a page break before/after the generated box.\"},{name:\"avoid-region\"},{name:\"column\",description:\"Always force a column break before/after the generated box.\"},{name:\"left\",description:\"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page.\"},{name:\"page\",description:\"Always force a page break before/after the generated box.\"},{name:\"region\"},{name:\"right\",description:\"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page.\"}],relevance:50,description:\"Describes the page/column break behavior before the generated box.\",restrictions:[\"enum\"]},{name:\"-webkit-break-before\",browsers:[\"S7\"],values:[{name:\"always\",description:\"Always force a page break before/after the generated box.\"},{name:\"auto\",description:\"Neither force nor forbid a page/column break before/after the generated box.\"},{name:\"avoid\",description:\"Avoid a page/column break before/after the generated box.\"},{name:\"avoid-column\",description:\"Avoid a column break before/after the generated box.\"},{name:\"avoid-page\",description:\"Avoid a page break before/after the generated box.\"},{name:\"avoid-region\"},{name:\"column\",description:\"Always force a column break before/after the generated box.\"},{name:\"left\",description:\"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page.\"},{name:\"page\",description:\"Always force a page break before/after the generated box.\"},{name:\"region\"},{name:\"right\",description:\"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page.\"}],relevance:50,description:\"Describes the page/column break behavior before the generated box.\",restrictions:[\"enum\"]},{name:\"-webkit-break-inside\",browsers:[\"S7\"],values:[{name:\"auto\",description:\"Neither force nor forbid a page/column break inside the generated box.\"},{name:\"avoid\",description:\"Avoid a page/column break inside the generated box.\"},{name:\"avoid-column\",description:\"Avoid a column break inside the generated box.\"},{name:\"avoid-page\",description:\"Avoid a page break inside the generated box.\"},{name:\"avoid-region\"}],relevance:50,description:\"Describes the page/column break behavior inside the generated box.\",restrictions:[\"enum\"]},{name:\"-webkit-column-break-after\",browsers:[\"C\",\"S3\"],values:[{name:\"always\",description:\"Always force a page break before/after the generated box.\"},{name:\"auto\",description:\"Neither force nor forbid a page/column break before/after the generated box.\"},{name:\"avoid\",description:\"Avoid a page/column break before/after the generated box.\"},{name:\"avoid-column\",description:\"Avoid a column break before/after the generated box.\"},{name:\"avoid-page\",description:\"Avoid a page break before/after the generated box.\"},{name:\"avoid-region\"},{name:\"column\",description:\"Always force a column break before/after the generated box.\"},{name:\"left\",description:\"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page.\"},{name:\"page\",description:\"Always force a page break before/after the generated box.\"},{name:\"region\"},{name:\"right\",description:\"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page.\"}],relevance:50,description:\"Describes the page/column break behavior before the generated box.\",restrictions:[\"enum\"]},{name:\"-webkit-column-break-before\",browsers:[\"C\",\"S3\"],values:[{name:\"always\",description:\"Always force a page break before/after the generated box.\"},{name:\"auto\",description:\"Neither force nor forbid a page/column break before/after the generated box.\"},{name:\"avoid\",description:\"Avoid a page/column break before/after the generated box.\"},{name:\"avoid-column\",description:\"Avoid a column break before/after the generated box.\"},{name:\"avoid-page\",description:\"Avoid a page break before/after the generated box.\"},{name:\"avoid-region\"},{name:\"column\",description:\"Always force a column break before/after the generated box.\"},{name:\"left\",description:\"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page.\"},{name:\"page\",description:\"Always force a page break before/after the generated box.\"},{name:\"region\"},{name:\"right\",description:\"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page.\"}],relevance:50,description:\"Describes the page/column break behavior before the generated box.\",restrictions:[\"enum\"]},{name:\"-webkit-column-break-inside\",browsers:[\"C\",\"S3\"],values:[{name:\"auto\",description:\"Neither force nor forbid a page/column break inside the generated box.\"},{name:\"avoid\",description:\"Avoid a page/column break inside the generated box.\"},{name:\"avoid-column\",description:\"Avoid a column break inside the generated box.\"},{name:\"avoid-page\",description:\"Avoid a page break inside the generated box.\"},{name:\"avoid-region\"}],relevance:50,description:\"Describes the page/column break behavior inside the generated box.\",restrictions:[\"enum\"]},{name:\"-webkit-column-count\",browsers:[\"C\",\"S3\"],values:[{name:\"auto\",description:\"Determines the number of columns by the 'column-width' property and the element width.\"}],relevance:50,description:\"Describes the optimal number of columns into which the content of the element will be flowed.\",restrictions:[\"integer\"]},{name:\"-webkit-column-gap\",browsers:[\"C\",\"S3\"],values:[{name:\"normal\",description:\"User agent specific and typically equivalent to 1em.\"}],relevance:50,description:\"Sets the gap between columns. If there is a column rule between columns, it will appear in the middle of the gap.\",restrictions:[\"length\"]},{name:\"-webkit-column-rule\",browsers:[\"C\",\"S3\"],relevance:50,description:\"This property is a shorthand for setting 'column-rule-width', 'column-rule-style', and 'column-rule-color' at the same place in the style sheet. Omitted values are set to their initial values.\",restrictions:[\"length\",\"line-width\",\"line-style\",\"color\"]},{name:\"-webkit-column-rule-color\",browsers:[\"C\",\"S3\"],relevance:50,description:\"Sets the color of the column rule\",restrictions:[\"color\"]},{name:\"-webkit-column-rule-style\",browsers:[\"C\",\"S3\"],relevance:50,description:\"Sets the style of the rule between columns of an element.\",restrictions:[\"line-style\"]},{name:\"-webkit-column-rule-width\",browsers:[\"C\",\"S3\"],relevance:50,description:\"Sets the width of the rule between columns. Negative values are not allowed.\",restrictions:[\"length\",\"line-width\"]},{name:\"-webkit-columns\",browsers:[\"C\",\"S3\"],values:[{name:\"auto\",description:\"The width depends on the values of other properties.\"}],relevance:50,description:\"A shorthand property which sets both 'column-width' and 'column-count'.\",restrictions:[\"length\",\"integer\"]},{name:\"-webkit-column-span\",browsers:[\"C\",\"S3\"],values:[{name:\"all\",description:\"The element spans across all columns. Content in the normal flow that appears before the element is automatically balanced across all columns before the element appear.\"},{name:\"none\",description:\"The element does not span multiple columns.\"}],relevance:50,description:\"Describes the page/column break behavior after the generated box.\",restrictions:[\"enum\"]},{name:\"-webkit-column-width\",browsers:[\"C\",\"S3\"],values:[{name:\"auto\",description:\"The width depends on the values of other properties.\"}],relevance:50,description:\"This property describes the width of columns in multicol elements.\",restrictions:[\"length\"]},{name:\"-webkit-filter\",browsers:[\"C18\",\"O15\",\"S6\"],values:[{name:\"none\",description:\"No filter effects are applied.\"},{name:\"blur()\",description:\"Applies a Gaussian blur to the input image.\"},{name:\"brightness()\",description:\"Applies a linear multiplier to input image, making it appear more or less bright.\"},{name:\"contrast()\",description:\"Adjusts the contrast of the input.\"},{name:\"drop-shadow()\",description:\"Applies a drop shadow effect to the input image.\"},{name:\"grayscale()\",description:\"Converts the input image to grayscale.\"},{name:\"hue-rotate()\",description:\"Applies a hue rotation on the input image. \"},{name:\"invert()\",description:\"Inverts the samples in the input image.\"},{name:\"opacity()\",description:\"Applies transparency to the samples in the input image.\"},{name:\"saturate()\",description:\"Saturates the input image.\"},{name:\"sepia()\",description:\"Converts the input image to sepia.\"},{name:\"url()\",description:\"A filter reference to a <filter> element.\"}],relevance:50,description:\"Processes an element\\u2019s rendering before it is displayed in the document, by applying one or more filter effects.\",restrictions:[\"enum\",\"url\"]},{name:\"-webkit-flow-from\",browsers:[\"S6.1\"],values:[{name:\"none\",description:\"The block container is not a CSS Region.\"}],relevance:50,description:\"Makes a block container a region and associates it with a named flow.\",restrictions:[\"identifier\"]},{name:\"-webkit-flow-into\",browsers:[\"S6.1\"],values:[{name:\"none\",description:\"The element is not moved to a named flow and normal CSS processing takes place.\"}],relevance:50,description:\"Places an element or its contents into a named flow.\",restrictions:[\"identifier\"]},{name:\"-webkit-font-feature-settings\",browsers:[\"C16\"],values:[{name:'\"c2cs\"'},{name:'\"dlig\"'},{name:'\"kern\"'},{name:'\"liga\"'},{name:'\"lnum\"'},{name:'\"onum\"'},{name:'\"smcp\"'},{name:'\"swsh\"'},{name:'\"tnum\"'},{name:\"normal\",description:\"No change in glyph substitution or positioning occurs.\"},{name:\"off\"},{name:\"on\"}],relevance:50,description:\"This property provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.\",restrictions:[\"string\",\"integer\"]},{name:\"-webkit-hyphens\",browsers:[\"S5.1\"],values:[{name:\"auto\",description:\"Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word.\"},{name:\"manual\",description:\"Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities\"},{name:\"none\",description:\"Words are not broken at line breaks, even if characters inside the word suggest line break points.\"}],relevance:50,description:\"Controls whether hyphenation is allowed to create more break opportunities within a line of text.\",restrictions:[\"enum\"]},{name:\"-webkit-line-break\",browsers:[\"C\",\"S3\"],values:[{name:\"after-white-space\"},{name:\"normal\"}],relevance:50,description:\"Specifies line-breaking rules for CJK (Chinese, Japanese, and Korean) text.\"},{name:\"-webkit-margin-bottom-collapse\",browsers:[\"C\",\"S3\"],values:[{name:\"collapse\"},{name:\"discard\"},{name:\"separate\"}],relevance:50,restrictions:[\"enum\"]},{name:\"-webkit-margin-collapse\",browsers:[\"C\",\"S3\"],values:[{name:\"collapse\"},{name:\"discard\"},{name:\"separate\"}],relevance:50,restrictions:[\"enum\"]},{name:\"-webkit-margin-start\",browsers:[\"C\",\"S3\"],values:[{name:\"auto\"}],relevance:50,restrictions:[\"percentage\",\"length\"]},{name:\"-webkit-margin-top-collapse\",browsers:[\"C\",\"S3\"],values:[{name:\"collapse\"},{name:\"discard\"},{name:\"separate\"}],relevance:50,restrictions:[\"enum\"]},{name:\"-webkit-mask-clip\",browsers:[\"C\",\"O15\",\"S4\"],status:\"nonstandard\",syntax:\"[ <box> | border | padding | content | text ]#\",relevance:0,description:\"Determines the mask painting area, which determines the area that is affected by the mask.\",restrictions:[\"box\"]},{name:\"-webkit-mask-image\",browsers:[\"C\",\"O15\",\"S4\"],values:[{name:\"none\",description:\"Counts as a transparent black image layer.\"},{name:\"url()\",description:\"Reference to a <mask element or to a CSS image.\"}],status:\"nonstandard\",syntax:\"<mask-reference>#\",relevance:0,description:\"Sets the mask layer image of an element.\",restrictions:[\"url\",\"image\",\"enum\"]},{name:\"-webkit-mask-origin\",browsers:[\"C\",\"O15\",\"S4\"],status:\"nonstandard\",syntax:\"[ <box> | border | padding | content ]#\",relevance:0,description:\"Specifies the mask positioning area.\",restrictions:[\"box\"]},{name:\"-webkit-mask-repeat\",browsers:[\"C\",\"O15\",\"S4\"],status:\"nonstandard\",syntax:\"<repeat-style>#\",relevance:0,description:\"Specifies how mask layer images are tiled after they have been sized and positioned.\",restrictions:[\"repeat\"]},{name:\"-webkit-mask-size\",browsers:[\"C\",\"O15\",\"S4\"],values:[{name:\"auto\",description:\"Resolved by using the image\\u2019s intrinsic ratio and the size of the other dimension, or failing that, using the image\\u2019s intrinsic size, or failing that, treating it as 100%.\"},{name:\"contain\",description:\"Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area.\"},{name:\"cover\",description:\"Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area.\"}],status:\"nonstandard\",syntax:\"<bg-size>#\",relevance:0,description:\"Specifies the size of the mask layer images.\",restrictions:[\"length\",\"percentage\",\"enum\"]},{name:\"-webkit-nbsp-mode\",browsers:[\"C\",\"S3\"],values:[{name:\"normal\"},{name:\"space\"}],relevance:50,description:\"Defines the behavior of nonbreaking spaces within text.\"},{name:\"-webkit-overflow-scrolling\",browsers:[\"C\",\"S5\"],values:[{name:\"auto\"},{name:\"touch\"}],status:\"nonstandard\",syntax:\"auto | touch\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-overflow-scrolling\"}],description:\"Specifies whether to use native-style scrolling in an overflow:scroll element.\"},{name:\"-webkit-padding-start\",browsers:[\"C\",\"S3\"],relevance:50,restrictions:[\"percentage\",\"length\"]},{name:\"-webkit-perspective\",browsers:[\"C\",\"S4\"],values:[{name:\"none\",description:\"No perspective transform is applied.\"}],relevance:50,description:\"Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.\",restrictions:[\"length\"]},{name:\"-webkit-perspective-origin\",browsers:[\"C\",\"S4\"],relevance:50,description:\"Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.\",restrictions:[\"position\",\"percentage\",\"length\"]},{name:\"-webkit-region-fragment\",browsers:[\"S7\"],values:[{name:\"auto\",description:\"Content flows as it would in a regular content box.\"},{name:\"break\",description:\"If the content fits within the CSS Region, then this property has no effect.\"}],relevance:50,description:\"The 'region-fragment' property controls the behavior of the last region associated with a named flow.\",restrictions:[\"enum\"]},{name:\"-webkit-tap-highlight-color\",browsers:[\"E12\",\"C16\",\"O15\"],status:\"nonstandard\",syntax:\"<color>\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-tap-highlight-color\"}],restrictions:[\"color\"]},{name:\"-webkit-text-fill-color\",browsers:[\"E12\",\"FF49\",\"S3\",\"C1\",\"O15\"],status:\"nonstandard\",syntax:\"<color>\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-text-fill-color\"}],restrictions:[\"color\"]},{name:\"-webkit-text-size-adjust\",browsers:[\"E\",\"C\",\"S3\"],values:[{name:\"auto\",description:\"Renderers must use the default size adjustment when displaying on a small device.\"},{name:\"none\",description:\"Renderers must not do size adjustment when displaying on a small device.\"}],relevance:50,description:\"Specifies a size adjustment for displaying text content in mobile browsers.\",restrictions:[\"percentage\"]},{name:\"-webkit-text-stroke\",browsers:[\"E15\",\"FF49\",\"S3\",\"C4\",\"O15\"],status:\"nonstandard\",syntax:\"<length> || <color>\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke\"}],restrictions:[\"length\",\"line-width\",\"color\",\"percentage\"]},{name:\"-webkit-text-stroke-color\",browsers:[\"E15\",\"FF49\",\"S3\",\"C1\",\"O15\"],status:\"nonstandard\",syntax:\"<color>\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-color\"}],restrictions:[\"color\"]},{name:\"-webkit-text-stroke-width\",browsers:[\"E15\",\"FF49\",\"S3\",\"C1\",\"O15\"],status:\"nonstandard\",syntax:\"<length>\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-width\"}],restrictions:[\"length\",\"line-width\",\"percentage\"]},{name:\"-webkit-touch-callout\",browsers:[\"S3\"],values:[{name:\"none\"}],status:\"nonstandard\",syntax:\"default | none\",relevance:0,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-touch-callout\"}],restrictions:[\"enum\"]},{name:\"-webkit-transform\",browsers:[\"C\",\"O12\",\"S3.1\"],values:[{name:\"matrix()\",description:\"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]\"},{name:\"matrix3d()\",description:\"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order.\"},{name:\"none\"},{name:\"perspective()\",description:\"Specifies a perspective projection matrix.\"},{name:\"rotate()\",description:\"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property.\"},{name:\"rotate3d()\",description:\"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters.\"},{name:\"rotateX('angle')\",description:\"Specifies a clockwise rotation by the given angle about the X axis.\"},{name:\"rotateY('angle')\",description:\"Specifies a clockwise rotation by the given angle about the Y axis.\"},{name:\"rotateZ('angle')\",description:\"Specifies a clockwise rotation by the given angle about the Z axis.\"},{name:\"scale()\",description:\"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first.\"},{name:\"scale3d()\",description:\"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters.\"},{name:\"scaleX()\",description:\"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter.\"},{name:\"scaleY()\",description:\"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter.\"},{name:\"scaleZ()\",description:\"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter.\"},{name:\"skew()\",description:\"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis).\"},{name:\"skewX()\",description:\"Specifies a skew transformation along the X axis by the given angle.\"},{name:\"skewY()\",description:\"Specifies a skew transformation along the Y axis by the given angle.\"},{name:\"translate()\",description:\"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter.\"},{name:\"translate3d()\",description:\"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively.\"},{name:\"translateX()\",description:\"Specifies a translation by the given amount in the X direction.\"},{name:\"translateY()\",description:\"Specifies a translation by the given amount in the Y direction.\"},{name:\"translateZ()\",description:\"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0.\"}],relevance:50,description:\"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.\",restrictions:[\"enum\"]},{name:\"-webkit-transform-origin\",browsers:[\"C\",\"O15\",\"S3.1\"],relevance:50,description:\"Establishes the origin of transformation for an element.\",restrictions:[\"position\",\"length\",\"percentage\"]},{name:\"-webkit-transform-origin-x\",browsers:[\"C\",\"S3.1\"],relevance:50,description:\"The x coordinate of the origin for transforms applied to an element with respect to its border box.\",restrictions:[\"length\",\"percentage\"]},{name:\"-webkit-transform-origin-y\",browsers:[\"C\",\"S3.1\"],relevance:50,description:\"The y coordinate of the origin for transforms applied to an element with respect to its border box.\",restrictions:[\"length\",\"percentage\"]},{name:\"-webkit-transform-origin-z\",browsers:[\"C\",\"S4\"],relevance:50,description:\"The z coordinate of the origin for transforms applied to an element with respect to its border box.\",restrictions:[\"length\",\"percentage\"]},{name:\"-webkit-transform-style\",browsers:[\"C\",\"S4\"],values:[{name:\"flat\",description:\"All children of this element are rendered flattened into the 2D plane of the element.\"}],relevance:50,description:\"Defines how nested elements are rendered in 3D space.\",restrictions:[\"enum\"]},{name:\"-webkit-transition\",browsers:[\"C\",\"O12\",\"S5\"],values:[{name:\"all\",description:\"Every property that is able to undergo a transition will do so.\"},{name:\"none\",description:\"No property will transition.\"}],relevance:50,description:\"Shorthand property combines four of the transition properties into a single property.\",restrictions:[\"time\",\"property\",\"timing-function\",\"enum\"]},{name:\"-webkit-transition-delay\",browsers:[\"C\",\"O12\",\"S5\"],relevance:50,description:\"Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.\",restrictions:[\"time\"]},{name:\"-webkit-transition-duration\",browsers:[\"C\",\"O12\",\"S5\"],relevance:50,description:\"Specifies how long the transition from the old value to the new value should take.\",restrictions:[\"time\"]},{name:\"-webkit-transition-property\",browsers:[\"C\",\"O12\",\"S5\"],values:[{name:\"all\",description:\"Every property that is able to undergo a transition will do so.\"},{name:\"none\",description:\"No property will transition.\"}],relevance:50,description:\"Specifies the name of the CSS property to which the transition is applied.\",restrictions:[\"property\"]},{name:\"-webkit-transition-timing-function\",browsers:[\"C\",\"O12\",\"S5\"],relevance:50,description:\"Describes how the intermediate values used during a transition will be calculated.\",restrictions:[\"timing-function\"]},{name:\"-webkit-user-drag\",browsers:[\"S3\"],values:[{name:\"auto\"},{name:\"element\"},{name:\"none\"}],relevance:50,restrictions:[\"enum\"]},{name:\"-webkit-user-modify\",browsers:[\"C\",\"S3\"],values:[{name:\"read-only\"},{name:\"read-write\"},{name:\"read-write-plaintext-only\"}],status:\"nonstandard\",syntax:\"read-only | read-write | read-write-plaintext-only\",relevance:0,description:\"Determines whether a user can edit the content of an element.\",restrictions:[\"enum\"]},{name:\"-webkit-user-select\",browsers:[\"C\",\"S3\"],values:[{name:\"auto\"},{name:\"none\"},{name:\"text\"}],relevance:50,description:\"Controls the appearance of selection.\",restrictions:[\"enum\"]},{name:\"widows\",browsers:[\"E12\",\"S1.3\",\"C25\",\"IE8\",\"O9.2\"],syntax:\"<integer>\",relevance:51,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/widows\"}],description:\"Specifies the minimum number of line boxes of a block container that must be left in a fragment after a break.\",restrictions:[\"integer\"]},{name:\"width\",values:[{name:\"auto\",description:\"The width depends on the values of other properties.\"},{name:\"fit-content\",description:\"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode.\"},{name:\"max-content\",description:\"Use the max-content inline size or max-content block size, as appropriate to the writing mode.\"},{name:\"min-content\",description:\"Use the min-content inline size or min-content block size, as appropriate to the writing mode.\"}],syntax:\"<viewport-length>{1,2}\",relevance:96,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/width\"}],description:\"Specifies the width of the content area, padding area or border area (depending on 'box-sizing') of certain boxes.\",restrictions:[\"length\",\"percentage\"]},{name:\"will-change\",browsers:[\"E79\",\"FF36\",\"S9.1\",\"C36\",\"O24\"],values:[{name:\"auto\",description:\"Expresses no particular intent.\"},{name:\"contents\",description:\"Indicates that the author expects to animate or change something about the element\\u2019s contents in the near future.\"},{name:\"scroll-position\",description:\"Indicates that the author expects to animate or change the scroll position of the element in the near future.\"}],syntax:\"auto | <animateable-feature>#\",relevance:63,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/will-change\"}],description:\"Provides a rendering hint to the user agent, stating what kinds of changes the author expects to perform on the element.\",restrictions:[\"enum\",\"identifier\"]},{name:\"word-break\",values:[{name:\"break-all\",description:\"Lines may break between any two grapheme clusters for non-CJK scripts.\"},{name:\"keep-all\",description:\"Block characters can no longer create implied break points.\"},{name:\"normal\",description:\"Breaks non-CJK scripts according to their own rules.\"}],syntax:\"normal | break-all | keep-all | break-word\",relevance:75,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/word-break\"}],description:\"Specifies line break opportunities for non-CJK scripts.\",restrictions:[\"enum\"]},{name:\"word-spacing\",values:[{name:\"normal\",description:\"No additional spacing is applied. Computes to zero.\"}],syntax:\"normal | <length>\",relevance:57,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/word-spacing\"}],description:\"Specifies additional spacing between \\u201Cwords\\u201D.\",restrictions:[\"length\",\"percentage\"]},{name:\"word-wrap\",values:[{name:\"break-word\",description:\"An otherwise unbreakable sequence of characters may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line.\"},{name:\"normal\",description:\"Lines may break only at allowed break points.\"}],syntax:\"normal | break-word\",relevance:78,description:\"Specifies whether the UA may break within a word to prevent overflow when an otherwise-unbreakable string is too long to fit.\",restrictions:[\"enum\"]},{name:\"writing-mode\",values:[{name:\"horizontal-tb\",description:\"Top-to-bottom block flow direction. The writing mode is horizontal.\"},{name:\"sideways-lr\",description:\"Left-to-right block flow direction. The writing mode is vertical, while the typographic mode is horizontal.\"},{name:\"sideways-rl\",description:\"Right-to-left block flow direction. The writing mode is vertical, while the typographic mode is horizontal.\"},{name:\"vertical-lr\",description:\"Left-to-right block flow direction. The writing mode is vertical.\"},{name:\"vertical-rl\",description:\"Right-to-left block flow direction. The writing mode is vertical.\"}],syntax:\"horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/writing-mode\"}],description:\"This is a shorthand property for both 'direction' and 'block-progression'.\",restrictions:[\"enum\"]},{name:\"z-index\",values:[{name:\"auto\",description:\"The stack level of the generated box in the current stacking context is 0. The box does not establish a new stacking context unless it is the root element.\"}],syntax:\"auto | <integer>\",relevance:92,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/z-index\"}],description:\"For a positioned box, the 'z-index' property specifies the stack level of the box in the current stacking context and whether the box establishes a local stacking context.\",restrictions:[\"integer\"]},{name:\"zoom\",browsers:[\"E12\",\"S3.1\",\"C1\",\"IE5.5\",\"O15\"],values:[{name:\"normal\"}],syntax:\"auto | <number> | <percentage>\",relevance:67,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/zoom\"}],description:\"Non-standard. Specifies the magnification scale of the object. See 'transform: scale()' for a standards-based alternative.\",restrictions:[\"enum\",\"integer\",\"number\",\"percentage\"]},{name:\"-ms-ime-align\",status:\"nonstandard\",syntax:\"auto | after\",relevance:0,description:\"Aligns the Input Method Editor (IME) candidate window box relative to the element on which the IME composition is active.\"},{name:\"-moz-binding\",status:\"nonstandard\",syntax:\"<url> | none\",relevance:0,browsers:[\"FF1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-binding\"}],description:\"The -moz-binding CSS property is used by Mozilla-based applications to attach an XBL binding to a DOM element.\"},{name:\"-moz-context-properties\",status:\"nonstandard\",syntax:\"none | [ fill | fill-opacity | stroke | stroke-opacity ]#\",relevance:0,browsers:[\"FF55\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-context-properties\"}],description:`If you reference an SVG image in a webpage (such as with the <img> element or as a background image), the SVG image can coordinate with the embedding element (its context) to have the image adopt property values set on the embedding element. To do this the embedding element needs to list the properties that are to be made available to the image by listing them as values of the -moz-context-properties property, and the image needs to opt in to using those properties by using values such as the context-fill value.\n\nThis feature is available since Firefox 55, but is only currently supported with SVG images loaded via chrome:// or resource:// URLs. To experiment with the feature in SVG on the Web it is necessary to set the svg.context-properties.content.enabled pref to true.`},{name:\"-moz-float-edge\",status:\"nonstandard\",syntax:\"border-box | content-box | margin-box | padding-box\",relevance:0,browsers:[\"FF1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-float-edge\"}],description:\"The non-standard -moz-float-edge CSS property specifies whether the height and width properties of the element include the margin, border, or padding thickness.\"},{name:\"-moz-force-broken-image-icon\",status:\"nonstandard\",syntax:\"0 | 1\",relevance:0,browsers:[\"FF1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-force-broken-image-icon\"}],description:\"The -moz-force-broken-image-icon extended CSS property can be used to force the broken image icon to be shown even when a broken image has an alt attribute.\"},{name:\"-moz-image-region\",status:\"nonstandard\",syntax:\"<shape> | auto\",relevance:0,browsers:[\"FF1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-image-region\"}],description:\"For certain XUL elements and pseudo-elements that use an image from the list-style-image property, this property specifies a region of the image that is used in place of the whole image. This allows elements to use different pieces of the same image to improve performance.\"},{name:\"-moz-orient\",status:\"nonstandard\",syntax:\"inline | block | horizontal | vertical\",relevance:0,browsers:[\"FF6\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-orient\"}],description:\"The -moz-orient CSS property specifies the orientation of the element to which it's applied.\"},{name:\"-moz-outline-radius\",status:\"nonstandard\",syntax:\"<outline-radius>{1,4} [ / <outline-radius>{1,4} ]?\",relevance:0,browsers:[\"FF1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius\"}],description:\"In Mozilla applications like Firefox, the -moz-outline-radius CSS property can be used to give an element's outline rounded corners.\"},{name:\"-moz-outline-radius-bottomleft\",status:\"nonstandard\",syntax:\"<outline-radius>\",relevance:0,browsers:[\"FF1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomleft\"}],description:\"In Mozilla applications, the -moz-outline-radius-bottomleft CSS property can be used to round the bottom-left corner of an element's outline.\"},{name:\"-moz-outline-radius-bottomright\",status:\"nonstandard\",syntax:\"<outline-radius>\",relevance:0,browsers:[\"FF1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomright\"}],description:\"In Mozilla applications, the -moz-outline-radius-bottomright CSS property can be used to round the bottom-right corner of an element's outline.\"},{name:\"-moz-outline-radius-topleft\",status:\"nonstandard\",syntax:\"<outline-radius>\",relevance:0,browsers:[\"FF1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topleft\"}],description:\"In Mozilla applications, the -moz-outline-radius-topleft CSS property can be used to round the top-left corner of an element's outline.\"},{name:\"-moz-outline-radius-topright\",status:\"nonstandard\",syntax:\"<outline-radius>\",relevance:0,browsers:[\"FF1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topright\"}],description:\"In Mozilla applications, the -moz-outline-radius-topright CSS property can be used to round the top-right corner of an element's outline.\"},{name:\"-moz-stack-sizing\",status:\"nonstandard\",syntax:\"ignore | stretch-to-fit\",relevance:0,description:\"-moz-stack-sizing is an extended CSS property. Normally, a stack will change its size so that all of its child elements are completely visible. For example, moving a child of the stack far to the right will widen the stack so the child remains visible.\"},{name:\"-moz-text-blink\",status:\"nonstandard\",syntax:\"none | blink\",relevance:0,description:\"The -moz-text-blink non-standard Mozilla CSS extension specifies the blink mode.\"},{name:\"-moz-user-input\",status:\"nonstandard\",syntax:\"auto | none | enabled | disabled\",relevance:0,browsers:[\"FF1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-moz-user-input\"}],description:\"In Mozilla applications, -moz-user-input determines if an element will accept user input.\"},{name:\"-moz-user-modify\",status:\"nonstandard\",syntax:\"read-only | read-write | write-only\",relevance:0,description:\"The -moz-user-modify property has no effect. It was originally planned to determine whether or not the content of an element can be edited by a user.\"},{name:\"-moz-window-dragging\",status:\"nonstandard\",syntax:\"drag | no-drag\",relevance:0,description:\"The -moz-window-dragging CSS property specifies whether a window is draggable or not. It only works in Chrome code, and only on Mac OS X.\"},{name:\"-moz-window-shadow\",status:\"nonstandard\",syntax:\"default | menu | tooltip | sheet | none\",relevance:0,description:\"The -moz-window-shadow CSS property specifies whether a window will have a shadow. It only works on Mac OS X.\"},{name:\"-webkit-border-before\",status:\"nonstandard\",syntax:\"<'border-width'> || <'border-style'> || <color>\",relevance:0,browsers:[\"E79\",\"S5.1\",\"C8\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-border-before\"}],description:\"The -webkit-border-before CSS property is a shorthand property for setting the individual logical block start border property values in a single place in the style sheet.\"},{name:\"-webkit-border-before-color\",status:\"nonstandard\",syntax:\"<color>\",relevance:0,description:\"The -webkit-border-before-color CSS property sets the color of the individual logical block start border in a single place in the style sheet.\"},{name:\"-webkit-border-before-style\",status:\"nonstandard\",syntax:\"<'border-style'>\",relevance:0,description:\"The -webkit-border-before-style CSS property sets the style of the individual logical block start border in a single place in the style sheet.\"},{name:\"-webkit-border-before-width\",status:\"nonstandard\",syntax:\"<'border-width'>\",relevance:0,description:\"The -webkit-border-before-width CSS property sets the width of the individual logical block start border in a single place in the style sheet.\"},{name:\"-webkit-line-clamp\",syntax:\"none | <integer>\",relevance:50,browsers:[\"E17\",\"FF68\",\"S5\",\"C6\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-line-clamp\"}],description:\"The -webkit-line-clamp CSS property allows limiting of the contents of a block container to the specified number of lines.\"},{name:\"-webkit-mask\",status:\"nonstandard\",syntax:\"[ <mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || [ <box> | border | padding | content | text ] || [ <box> | border | padding | content ] ]#\",relevance:0,description:\"The mask CSS property alters the visibility of an element by either partially or fully hiding it. This is accomplished by either masking or clipping the image at specific points.\"},{name:\"-webkit-mask-attachment\",status:\"nonstandard\",syntax:\"<attachment>#\",relevance:0,browsers:[\"S4\",\"C1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-attachment\"}],description:\"If a -webkit-mask-image is specified, -webkit-mask-attachment determines whether the mask image's position is fixed within the viewport, or scrolls along with its containing block.\"},{name:\"-webkit-mask-composite\",status:\"nonstandard\",syntax:\"<composite-style>#\",relevance:0,browsers:[\"E18\",\"FF53\",\"S3.1\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-composite\"}],description:\"The -webkit-mask-composite property specifies the manner in which multiple mask images applied to the same element are composited with one another. Mask images are composited in the opposite order that they are declared with the -webkit-mask-image property.\"},{name:\"-webkit-mask-position\",status:\"nonstandard\",syntax:\"<position>#\",relevance:0,description:\"The mask-position CSS property sets the initial position, relative to the mask position layer defined by mask-origin, for each defined mask image.\"},{name:\"-webkit-mask-position-x\",status:\"nonstandard\",syntax:\"[ <length-percentage> | left | center | right ]#\",relevance:0,browsers:[\"E18\",\"FF49\",\"S3.1\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-x\"}],description:\"The -webkit-mask-position-x CSS property sets the initial horizontal position of a mask image.\"},{name:\"-webkit-mask-position-y\",status:\"nonstandard\",syntax:\"[ <length-percentage> | top | center | bottom ]#\",relevance:0,browsers:[\"E18\",\"FF49\",\"S3.1\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-y\"}],description:\"The -webkit-mask-position-y CSS property sets the initial vertical position of a mask image.\"},{name:\"-webkit-mask-repeat-x\",status:\"nonstandard\",syntax:\"repeat | no-repeat | space | round\",relevance:0,browsers:[\"E18\",\"S5\",\"C3\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-x\"}],description:\"The -webkit-mask-repeat-x property specifies whether and how a mask image is repeated (tiled) horizontally.\"},{name:\"-webkit-mask-repeat-y\",status:\"nonstandard\",syntax:\"repeat | no-repeat | space | round\",relevance:0,browsers:[\"E18\",\"S5\",\"C3\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-y\"}],description:\"The -webkit-mask-repeat-y property specifies whether and how a mask image is repeated (tiled) vertically.\"},{name:\"accent-color\",syntax:\"auto | <color>\",relevance:50,browsers:[\"E93\",\"FF92\",\"S15.4\",\"C93\",\"O79\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/accent-color\"}],description:\"Sets the color of the elements accent\"},{name:\"align-tracks\",status:\"experimental\",syntax:\"[ normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position> ]#\",relevance:50,browsers:[\"FF77\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/align-tracks\"}],description:\"The align-tracks CSS property sets the alignment in the masonry axis for grid containers that have masonry in their block axis.\"},{name:\"animation-timeline\",syntax:\"<single-animation-timeline>#\",relevance:50,browsers:[\"FF97\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/animation-timeline\"}],description:\"Specifies the names of one or more @scroll-timeline at-rules to describe the element's scroll animations.\"},{name:\"appearance\",status:\"experimental\",syntax:\"none | auto | textfield | menulist-button | <compat-auto>\",relevance:62,browsers:[\"E84\",\"FF80\",\"S15.4\",\"C84\",\"O70\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/appearance\"}],description:\"Changes the appearance of buttons and other controls to resemble native controls.\"},{name:\"aspect-ratio\",status:\"experimental\",syntax:\"auto | <ratio>\",relevance:52,browsers:[\"E88\",\"FF89\",\"S15\",\"C88\",\"O74\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/aspect-ratio\"}],description:\"The aspect-ratio   CSS property sets a preferred aspect ratio for the box, which will be used in the calculation of auto sizes and some other layout functions.\"},{name:\"azimuth\",status:\"obsolete\",syntax:\"<angle> | [ [ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards\",relevance:0,description:\"In combination with elevation, the azimuth CSS property enables different audio sources to be positioned spatially for aural presentation. This is important in that it provides a natural way to tell several voices apart, as each can be positioned to originate at a different location on the sound stage. Stereo output produce a lateral sound stage, while binaural headphones and multi-speaker setups allow for a fully three-dimensional stage.\"},{name:\"backdrop-filter\",syntax:\"none | <filter-function-list>\",relevance:53,browsers:[\"E17\",\"FF70\",\"S9\",\"C76\",\"O63\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/backdrop-filter\"}],description:\"The backdrop-filter CSS property lets you apply graphical effects such as blurring or color shifting to the area behind an element. Because it applies to everything behind the element, to see the effect you must make the element or its background at least partially transparent.\"},{name:\"border-block\",syntax:\"<'border-top-width'> || <'border-top-style'> || <color>\",relevance:50,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-block\"}],description:\"The border-block CSS property is a shorthand property for setting the individual logical block border property values in a single place in the style sheet.\"},{name:\"border-block-color\",syntax:\"<'border-top-color'>{1,2}\",relevance:50,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-block-color\"}],description:\"The border-block-color CSS property defines the color of the logical block borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color and border-bottom-color, or border-right-color and border-left-color property depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"border-block-style\",syntax:\"<'border-top-style'>\",relevance:50,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-block-style\"}],description:\"The border-block-style CSS property defines the style of the logical block borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style and border-bottom-style, or border-left-style and border-right-style properties depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"border-block-width\",syntax:\"<'border-top-width'>\",relevance:50,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-block-width\"}],description:\"The border-block-width CSS property defines the width of the logical block borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width and border-bottom-width, or border-left-width, and border-right-width property depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"border-end-end-radius\",syntax:\"<length-percentage>{1,2}\",relevance:50,browsers:[\"E89\",\"FF66\",\"S15\",\"C89\",\"O75\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-end-end-radius\"}],description:\"The border-end-end-radius CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on on the element's writing-mode, direction, and text-orientation.\"},{name:\"border-end-start-radius\",syntax:\"<length-percentage>{1,2}\",relevance:50,browsers:[\"E89\",\"FF66\",\"S15\",\"C89\",\"O75\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-end-start-radius\"}],description:\"The border-end-start-radius CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's writing-mode, direction, and text-orientation.\"},{name:\"border-inline\",syntax:\"<'border-top-width'> || <'border-top-style'> || <color>\",relevance:50,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-inline\"}],description:\"The border-inline CSS property is a shorthand property for setting the individual logical inline border property values in a single place in the style sheet.\"},{name:\"border-inline-color\",syntax:\"<'border-top-color'>{1,2}\",relevance:50,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-inline-color\"}],description:\"The border-inline-color CSS property defines the color of the logical inline borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color and border-bottom-color, or border-right-color and border-left-color property depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"border-inline-style\",syntax:\"<'border-top-style'>\",relevance:50,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-inline-style\"}],description:\"The border-inline-style CSS property defines the style of the logical inline borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style and border-bottom-style, or border-left-style and border-right-style properties depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"border-inline-width\",syntax:\"<'border-top-width'>\",relevance:50,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-inline-width\"}],description:\"The border-inline-width CSS property defines the width of the logical inline borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width and border-bottom-width, or border-left-width, and border-right-width property depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"border-start-end-radius\",syntax:\"<length-percentage>{1,2}\",relevance:50,browsers:[\"E89\",\"FF66\",\"S15\",\"C89\",\"O75\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-start-end-radius\"}],description:\"The border-start-end-radius CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's writing-mode, direction, and text-orientation.\"},{name:\"border-start-start-radius\",syntax:\"<length-percentage>{1,2}\",relevance:50,browsers:[\"E89\",\"FF66\",\"S15\",\"C89\",\"O75\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/border-start-start-radius\"}],description:\"The border-start-start-radius CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on the element's writing-mode, direction, and text-orientation.\"},{name:\"box-align\",status:\"nonstandard\",syntax:\"start | center | end | baseline | stretch\",relevance:0,browsers:[\"E12\",\"FF1\",\"S3\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/box-align\"}],description:\"The box-align CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box.\"},{name:\"box-direction\",status:\"nonstandard\",syntax:\"normal | reverse | inherit\",relevance:0,browsers:[\"E12\",\"FF1\",\"S3\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/box-direction\"}],description:\"The box-direction CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).\"},{name:\"box-flex\",status:\"nonstandard\",syntax:\"<number>\",relevance:0,browsers:[\"E12\",\"FF1\",\"S3\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/box-flex\"}],description:\"The -moz-box-flex and -webkit-box-flex CSS properties specify how a -moz-box or -webkit-box grows to fill the box that contains it, in the direction of the containing box's layout.\"},{name:\"box-flex-group\",status:\"nonstandard\",syntax:\"<integer>\",relevance:0,browsers:[\"S3\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/box-flex-group\"}],description:\"The box-flex-group CSS property assigns the flexbox's child elements to a flex group.\"},{name:\"box-lines\",status:\"nonstandard\",syntax:\"single | multiple\",relevance:0,browsers:[\"S3\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/box-lines\"}],description:\"The box-lines CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes).\"},{name:\"box-ordinal-group\",status:\"nonstandard\",syntax:\"<integer>\",relevance:0,browsers:[\"E12\",\"FF1\",\"S3\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/box-ordinal-group\"}],description:\"The box-ordinal-group CSS property assigns the flexbox's child elements to an ordinal group.\"},{name:\"box-orient\",status:\"nonstandard\",syntax:\"horizontal | vertical | inline-axis | block-axis | inherit\",relevance:0,browsers:[\"E12\",\"FF1\",\"S3\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/box-orient\"}],description:\"The box-orient CSS property specifies whether an element lays out its contents horizontally or vertically.\"},{name:\"box-pack\",status:\"nonstandard\",syntax:\"start | center | end | justify\",relevance:0,browsers:[\"E12\",\"FF1\",\"S3\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/box-pack\"}],description:\"The -moz-box-pack and -webkit-box-pack CSS properties specify how a -moz-box or -webkit-box packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.\"},{name:\"print-color-adjust\",syntax:\"economy | exact\",relevance:50,browsers:[\"E79\",\"FF97\",\"S15.4\",\"C17\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/print-color-adjust\"}],description:\"Defines what optimization the user agent is allowed to do when adjusting the appearance for an output device.\"},{name:\"color-scheme\",syntax:\"normal | [ light | dark | <custom-ident> ]+ && only?\",relevance:52,browsers:[\"E81\",\"FF96\",\"S13\",\"C81\",\"O68\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/color-scheme\"}],description:\"The color-scheme CSS property allows an element to indicate which color schemes it can comfortably be rendered in.\"},{name:\"content-visibility\",syntax:\"visible | auto | hidden\",relevance:51,browsers:[\"E85\",\"S15.4\",\"C85\",\"O71\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/content-visibility\"}],description:\"Controls whether or not an element renders its contents at all, along with forcing a strong set of containments, allowing user agents to potentially omit large swathes of layout and rendering work until it becomes needed.\"},{name:\"counter-set\",syntax:\"[ <counter-name> <integer>? ]+ | none\",relevance:50,browsers:[\"E85\",\"FF68\",\"C85\",\"O71\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/counter-set\"}],description:\"The counter-set CSS property sets a CSS counter to a given value. It manipulates the value of existing counters, and will only create new counters if there isn't already a counter of the given name on the element.\"},{name:\"font-optical-sizing\",syntax:\"auto | none\",relevance:50,browsers:[\"E17\",\"FF62\",\"S11\",\"C79\",\"O66\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-optical-sizing\"}],description:\"The font-optical-sizing CSS property allows developers to control whether browsers render text with slightly differing visual representations to optimize viewing at different sizes, or not. This only works for fonts that have an optical size variation axis.\"},{name:\"font-variation-settings\",syntax:\"normal | [ <string> <number> ]#\",relevance:50,browsers:[\"E17\",\"FF62\",\"S11\",\"C62\",\"O49\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-variation-settings\"}],description:\"The font-variation-settings CSS property provides low-level control over OpenType or TrueType font variations, by specifying the four letter axis names of the features you want to vary, along with their variation values.\"},{name:\"font-smooth\",status:\"nonstandard\",syntax:\"auto | never | always | <absolute-size> | <length>\",relevance:0,browsers:[\"E79\",\"FF25\",\"S4\",\"C5\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/font-smooth\"}],description:\"The font-smooth CSS property controls the application of anti-aliasing when fonts are rendered.\"},{name:\"forced-color-adjust\",status:\"experimental\",syntax:\"auto | none\",relevance:52,browsers:[\"E79\",\"C89\",\"IE10\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/forced-color-adjust\"}],description:\"Allows authors to opt certain elements out of forced colors mode. This then restores the control of those values to CSS\"},{name:\"gap\",syntax:\"<'row-gap'> <'column-gap'>?\",relevance:55,browsers:[\"E84\",\"FF63\",\"S14.1\",\"C84\",\"O70\"],description:\"The gap CSS property is a shorthand property for row-gap and column-gap specifying the gutters between grid rows and columns.\"},{name:\"hanging-punctuation\",syntax:\"none | [ first || [ force-end | allow-end ] || last ]\",relevance:50,browsers:[\"S10\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/hanging-punctuation\"}],description:\"The hanging-punctuation CSS property specifies whether a punctuation mark should hang at the start or end of a line of text. Hanging punctuation may be placed outside the line box.\"},{name:\"hyphenate-character\",syntax:\"auto | <string>\",relevance:50,browsers:[\"E79\",\"FF98\",\"S5.1\",\"C6\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/hyphenate-character\"}],description:\"A hyphenate character used at the end of a line.\"},{name:\"image-resolution\",status:\"experimental\",syntax:\"[ from-image || <resolution> ] && snap?\",relevance:50,description:\"The image-resolution property specifies the intrinsic resolution of all raster images used in or on the element. It affects both content images (e.g. replaced elements and generated content) and decorative images (such as background-image). The intrinsic resolution of an image is used to determine the image\\u2019s intrinsic dimensions.\"},{name:\"initial-letter\",status:\"experimental\",syntax:\"normal | [ <number> <integer>? ]\",relevance:50,browsers:[\"S9\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/initial-letter\"}],description:\"The initial-letter CSS property specifies styling for dropped, raised, and sunken initial letters.\"},{name:\"initial-letter-align\",status:\"experimental\",syntax:\"[ auto | alphabetic | hanging | ideographic ]\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/initial-letter-align\"}],description:\"The initial-letter-align CSS property specifies the alignment of initial letters within a paragraph.\"},{name:\"input-security\",syntax:\"auto | none\",relevance:50,description:\"Enables or disables the obscuring a sensitive test input.\"},{name:\"inset\",syntax:\"<'top'>{1,4}\",relevance:51,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/inset\"}],description:\"The inset CSS property defines the logical block and inline start and end offsets of an element, which map to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"inset-block\",syntax:\"<'top'>{1,2}\",relevance:50,browsers:[\"E87\",\"FF63\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/inset-block\"}],description:\"The inset-block CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"inset-block-end\",syntax:\"<'top'>\",relevance:50,browsers:[\"E87\",\"FF63\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/inset-block-end\"}],description:\"The inset-block-end CSS property defines the logical block end offset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"inset-block-start\",syntax:\"<'top'>\",relevance:50,browsers:[\"E87\",\"FF63\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/inset-block-start\"}],description:\"The inset-block-start CSS property defines the logical block start offset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"inset-inline\",syntax:\"<'top'>{1,2}\",relevance:50,browsers:[\"E87\",\"FF63\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/inset-inline\"}],description:\"The inset-inline CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"inset-inline-end\",syntax:\"<'top'>\",relevance:50,browsers:[\"E87\",\"FF63\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/inset-inline-end\"}],description:\"The inset-inline-end CSS property defines the logical inline end inset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"inset-inline-start\",syntax:\"<'top'>\",relevance:50,browsers:[\"E87\",\"FF63\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/inset-inline-start\"}],description:\"The inset-inline-start CSS property defines the logical inline start inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation.\"},{name:\"justify-tracks\",status:\"experimental\",syntax:\"[ normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ] ]#\",relevance:50,browsers:[\"FF77\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/justify-tracks\"}],description:\"The justify-tracks CSS property sets the alignment in the masonry axis for grid containers that have masonry in their inline axis\"},{name:\"line-clamp\",status:\"experimental\",syntax:\"none | <integer>\",relevance:50,description:\"The line-clamp property allows limiting the contents of a block container to the specified number of lines; remaining content is fragmented away and neither rendered nor measured. Optionally, it also allows inserting content into the last line box to indicate the continuity of truncated/interrupted content.\"},{name:\"line-height-step\",status:\"experimental\",syntax:\"<length>\",relevance:50,browsers:[\"E79\",\"C60\",\"O47\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/line-height-step\"}],description:\"The line-height-step CSS property defines the step units for line box heights. When the step unit is positive, line box heights are rounded up to the closest multiple of the unit. Negative values are invalid.\"},{name:\"margin-block\",syntax:\"<'margin-left'>{1,2}\",relevance:50,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/margin-block\"}],description:\"The margin-block CSS property defines the logical block start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation.\"},{name:\"margin-inline\",syntax:\"<'margin-left'>{1,2}\",relevance:50,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/margin-inline\"}],description:\"The margin-inline CSS property defines the logical inline start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation.\"},{name:\"margin-trim\",status:\"experimental\",syntax:\"none | in-flow | all\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/margin-trim\"}],description:\"The margin-trim property allows the container to trim the margins of its children where they adjoin the container\\u2019s edges.\"},{name:\"mask\",syntax:\"<mask-layer>#\",relevance:50,browsers:[\"E79\",\"FF2\",\"S3.1\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask\"}],description:\"The mask CSS property alters the visibility of an element by either partially or fully hiding it. This is accomplished by either masking or clipping the image at specific points.\"},{name:\"mask-border\",syntax:\"<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>\",relevance:50,browsers:[\"E79\",\"S3.1\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-border\"}],description:`The mask-border CSS property lets you create a mask along the edge of an element's border.\n\nThis property is a shorthand for mask-border-source, mask-border-slice, mask-border-width, mask-border-outset, mask-border-repeat, and mask-border-mode. As with all shorthand properties, any omitted sub-values will be set to their initial value.`},{name:\"mask-border-mode\",syntax:\"luminance | alpha\",relevance:50,description:\"The mask-border-mode CSS property specifies the blending mode used in a mask border.\"},{name:\"mask-border-outset\",syntax:\"[ <length> | <number> ]{1,4}\",relevance:50,browsers:[\"E79\",\"S3.1\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-border-outset\"}],description:\"The mask-border-outset CSS property specifies the distance by which an element's mask border is set out from its border box.\"},{name:\"mask-border-repeat\",syntax:\"[ stretch | repeat | round | space ]{1,2}\",relevance:50,browsers:[\"E79\",\"S3.1\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-border-repeat\"}],description:\"The mask-border-repeat CSS property defines how the edge regions of a source image are adjusted to fit the dimensions of an element's mask border.\"},{name:\"mask-border-slice\",syntax:\"<number-percentage>{1,4} fill?\",relevance:50,browsers:[\"E79\",\"S3.1\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-border-slice\"}],description:\"The mask-border-slice CSS property divides the image specified by mask-border-source into regions. These regions are used to form the components of an element's mask border.\"},{name:\"mask-border-source\",syntax:\"none | <image>\",relevance:50,browsers:[\"E79\",\"S3.1\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-border-source\"}],description:`The mask-border-source CSS property specifies the source image used to create an element's mask border.\n\nThe mask-border-slice property is used to divide the source image into regions, which are then dynamically applied to the final mask border.`},{name:\"mask-border-width\",syntax:\"[ <length-percentage> | <number> | auto ]{1,4}\",relevance:50,browsers:[\"E79\",\"S3.1\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-border-width\"}],description:\"The mask-border-width CSS property specifies the width of an element's mask border.\"},{name:\"mask-clip\",syntax:\"[ <geometry-box> | no-clip ]#\",relevance:50,browsers:[\"E79\",\"FF53\",\"S15.4\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-clip\"}],description:\"The mask-clip CSS property determines the area, which is affected by a mask. The painted content of an element must be restricted to this area.\"},{name:\"mask-composite\",syntax:\"<compositing-operator>#\",relevance:50,browsers:[\"E18\",\"FF53\",\"S15.4\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/mask-composite\"}],description:\"The mask-composite CSS property represents a compositing operation used on the current mask layer with the mask layers below it.\"},{name:\"masonry-auto-flow\",status:\"experimental\",syntax:\"[ pack | next ] || [ definite-first | ordered ]\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/masonry-auto-flow\"}],description:\"The masonry-auto-flow CSS property modifies how items are placed when using masonry in CSS Grid Layout.\"},{name:\"math-style\",syntax:\"normal | compact\",relevance:50,browsers:[\"FF83\",\"S14.1\",\"C83\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/math-style\"}],description:\"The math-style property indicates whether MathML equations should render with normal or compact height.\"},{name:\"max-lines\",status:\"experimental\",syntax:\"none | <integer>\",relevance:50,description:\"The max-liens property forces a break after a set number of lines\"},{name:\"offset\",syntax:\"[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?\",relevance:50,browsers:[\"E79\",\"FF72\",\"C55\",\"O42\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/offset\"}],description:\"The offset CSS property is a shorthand property for animating an element along a defined path.\"},{name:\"offset-anchor\",syntax:\"auto | <position>\",relevance:50,browsers:[\"FF72\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/offset-anchor\"}],description:\"Defines an anchor point of the box positioned along the path. The anchor point specifies the point of the box which is to be considered as the point that is moved along the path.\"},{name:\"offset-distance\",syntax:\"<length-percentage>\",relevance:50,browsers:[\"E79\",\"FF72\",\"C55\",\"O42\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/offset-distance\"}],description:\"The offset-distance CSS property specifies a position along an offset-path.\"},{name:\"offset-path\",syntax:\"none | ray( [ <angle> && <size> && contain? ] ) | <path()> | <url> | [ <basic-shape> || <geometry-box> ]\",relevance:50,browsers:[\"E79\",\"FF72\",\"C55\",\"O45\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/offset-path\"}],description:`The offset-path CSS property specifies the offset path where the element gets positioned. The exact element\\u2019s position on the offset path is determined by the offset-distance property. An offset path is either a specified path with one or multiple sub-paths or the geometry of a not-styled basic shape. Each shape or path must define an initial position for the computed value of \"0\" for offset-distance and an initial direction which specifies the rotation of the object to the initial position.\n\nIn this specification, a direction (or rotation) of 0 degrees is equivalent to the direction of the positive x-axis in the object\\u2019s local coordinate system. In other words, a rotation of 0 degree points to the right side of the UA if the object and its ancestors have no transformation applied.`},{name:\"offset-position\",status:\"experimental\",syntax:\"auto | <position>\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/offset-position\"}],description:\"Specifies the initial position of the offset path. If position is specified with static, offset-position would be ignored.\"},{name:\"offset-rotate\",syntax:\"[ auto | reverse ] || <angle>\",relevance:50,browsers:[\"E79\",\"FF72\",\"C56\",\"O43\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/offset-rotate\"}],description:\"The offset-rotate CSS property defines the direction of the element while positioning along the offset path.\"},{name:\"overflow-anchor\",syntax:\"auto | none\",relevance:52,browsers:[\"E79\",\"FF66\",\"C56\",\"O43\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overflow-anchor\"}],description:\"The overflow-anchor CSS property provides a way to opt out browser scroll anchoring behavior which adjusts scroll position to minimize content shifts.\"},{name:\"overflow-block\",syntax:\"visible | hidden | clip | scroll | auto\",relevance:50,browsers:[\"FF69\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overflow-block\"}],description:\"The overflow-block CSS media feature can be used to test how the output device handles content that overflows the initial containing block along the block axis.\"},{name:\"overflow-clip-box\",status:\"nonstandard\",syntax:\"padding-box | content-box\",relevance:0,browsers:[\"FF29\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Mozilla/Gecko/Chrome/CSS/overflow-clip-box\"}],description:\"The overflow-clip-box CSS property specifies relative to which box the clipping happens when there is an overflow. It is short hand for the overflow-clip-box-inline and overflow-clip-box-block properties.\"},{name:\"overflow-clip-margin\",syntax:\"<visual-box> || <length [0,\\u221E]>\",relevance:50,browsers:[\"E90\",\"C90\",\"O76\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overflow-clip-margin\"}],description:\"The overflow-clip-margin CSS property determines how far outside its bounds an element with overflow: clip may be painted before being clipped.\"},{name:\"overflow-inline\",syntax:\"visible | hidden | clip | scroll | auto\",relevance:50,browsers:[\"FF69\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overflow-inline\"}],description:\"The overflow-inline CSS media feature can be used to test how the output device handles content that overflows the initial containing block along the inline axis.\"},{name:\"overscroll-behavior\",syntax:\"[ contain | none | auto ]{1,2}\",relevance:50,browsers:[\"E18\",\"FF59\",\"C63\",\"O50\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior\"}],description:\"The overscroll-behavior CSS property is shorthand for the overscroll-behavior-x and overscroll-behavior-y properties, which allow you to control the browser's scroll overflow behavior \\u2014 what happens when the boundary of a scrolling area is reached.\"},{name:\"overscroll-behavior-block\",syntax:\"contain | none | auto\",relevance:50,browsers:[\"E79\",\"FF73\",\"C77\",\"O64\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-block\"}],description:\"The overscroll-behavior-block CSS property sets the browser's behavior when the block direction boundary of a scrolling area is reached.\"},{name:\"overscroll-behavior-inline\",syntax:\"contain | none | auto\",relevance:50,browsers:[\"E79\",\"FF73\",\"C77\",\"O64\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-inline\"}],description:\"The overscroll-behavior-inline CSS property sets the browser's behavior when the inline direction boundary of a scrolling area is reached.\"},{name:\"overscroll-behavior-x\",syntax:\"contain | none | auto\",relevance:50,browsers:[\"E18\",\"FF59\",\"C63\",\"O50\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-x\"}],description:\"The overscroll-behavior-x CSS property is allows you to control the browser's scroll overflow behavior \\u2014 what happens when the boundary of a scrolling area is reached \\u2014 in the x axis direction.\"},{name:\"overscroll-behavior-y\",syntax:\"contain | none | auto\",relevance:50,browsers:[\"E18\",\"FF59\",\"C63\",\"O50\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-y\"}],description:\"The overscroll-behavior-y CSS property is allows you to control the browser's scroll overflow behavior \\u2014 what happens when the boundary of a scrolling area is reached \\u2014 in the y axis direction.\"},{name:\"padding-block\",syntax:\"<'padding-left'>{1,2}\",relevance:50,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/padding-block\"}],description:\"The padding-block CSS property defines the logical block start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation.\"},{name:\"padding-inline\",syntax:\"<'padding-left'>{1,2}\",relevance:50,browsers:[\"E87\",\"FF66\",\"S14.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/padding-inline\"}],description:\"The padding-inline CSS property defines the logical inline start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation.\"},{name:\"place-content\",syntax:\"<'align-content'> <'justify-content'>?\",relevance:50,browsers:[\"E79\",\"FF45\",\"S9\",\"C59\",\"O46\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/place-content\"}],description:\"The place-content CSS shorthand property sets both the align-content and justify-content properties.\"},{name:\"place-items\",syntax:\"<'align-items'> <'justify-items'>?\",relevance:50,browsers:[\"E79\",\"FF45\",\"S11\",\"C59\",\"O46\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/place-items\"}],description:\"The CSS place-items shorthand property sets both the align-items and justify-items properties. The first value is the align-items property value, the second the justify-items one. If the second value is not present, the first value is also used for it.\"},{name:\"place-self\",syntax:\"<'align-self'> <'justify-self'>?\",relevance:50,browsers:[\"E79\",\"FF45\",\"S11\",\"C59\",\"O46\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/place-self\"}],description:\"The place-self CSS property is a shorthand property sets both the align-self and justify-self properties. The first value is the align-self property value, the second the justify-self one. If the second value is not present, the first value is also used for it.\"},{name:\"rotate\",syntax:\"none | <angle> | [ x | y | z | <number>{3} ] && <angle>\",relevance:50,browsers:[\"FF72\",\"S14.1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/rotate\"}],description:\"The rotate CSS property allows you to specify rotation transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value.\"},{name:\"row-gap\",syntax:\"normal | <length-percentage>\",relevance:51,browsers:[\"E84\",\"FF63\",\"S14.1\",\"C84\",\"O70\"],description:\"The row-gap CSS property specifies the gutter between grid rows.\"},{name:\"ruby-merge\",status:\"experimental\",syntax:\"separate | collapse | auto\",relevance:50,description:\"This property controls how ruby annotation boxes should be rendered when there are more than one in a ruby container box: whether each pair should be kept separate, the annotations should be collapsed and rendered as a group, or the separation should be determined based on the space available.\"},{name:\"scale\",syntax:\"none | <number>{1,3}\",relevance:50,browsers:[\"FF72\",\"S14.1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scale\"}],description:\"The scale CSS property allows you to specify scale transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value.\"},{name:\"scrollbar-color\",syntax:\"auto | <color>{2}\",relevance:50,browsers:[\"FF64\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scrollbar-color\"}],description:\"The scrollbar-color CSS property sets the color of the scrollbar track and thumb.\"},{name:\"scrollbar-gutter\",syntax:\"auto | stable && both-edges?\",relevance:50,browsers:[\"E94\",\"FF97\",\"C94\",\"O80\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scrollbar-gutter\"}],description:\"The scrollbar-gutter CSS property allows authors to reserve space for the scrollbar, preventing unwanted layout changes as the content grows while also avoiding unnecessary visuals when scrolling isn't needed.\"},{name:\"scrollbar-width\",syntax:\"auto | thin | none\",relevance:50,browsers:[\"FF64\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scrollbar-width\"}],description:\"The scrollbar-width property allows the author to set the maximum thickness of an element\\u2019s scrollbars when they are shown. \"},{name:\"scroll-margin\",syntax:\"<length>{1,4}\",relevance:50,browsers:[\"E79\",\"FF90\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-margin\"}],description:\"The scroll-margin property is a shorthand property which sets all of the scroll-margin longhands, assigning values much like the margin property does for the margin-* longhands.\"},{name:\"scroll-margin-block\",syntax:\"<length>{1,2}\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block\"}],description:\"The scroll-margin-block property is a shorthand property which sets the scroll-margin longhands in the block dimension.\"},{name:\"scroll-margin-block-start\",syntax:\"<length>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-start\"}],description:\"The scroll-margin-block-start property defines the margin of the scroll snap area at the start of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\\u2019s coordinate space), then adding the specified outsets.\"},{name:\"scroll-margin-block-end\",syntax:\"<length>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-end\"}],description:\"The scroll-margin-block-end property defines the margin of the scroll snap area at the end of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\\u2019s coordinate space), then adding the specified outsets.\"},{name:\"scroll-margin-bottom\",syntax:\"<length>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-bottom\"}],description:\"The scroll-margin-bottom property defines the bottom margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\\u2019s coordinate space), then adding the specified outsets.\"},{name:\"scroll-margin-inline\",syntax:\"<length>{1,2}\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline\"}],description:\"The scroll-margin-inline property is a shorthand property which sets the scroll-margin longhands in the inline dimension.\"},{name:\"scroll-margin-inline-start\",syntax:\"<length>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-start\"}],description:\"The scroll-margin-inline-start property defines the margin of the scroll snap area at the start of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\\u2019s coordinate space), then adding the specified outsets.\"},{name:\"scroll-margin-inline-end\",syntax:\"<length>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-end\"}],description:\"The scroll-margin-inline-end property defines the margin of the scroll snap area at the end of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\\u2019s coordinate space), then adding the specified outsets.\"},{name:\"scroll-margin-left\",syntax:\"<length>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-left\"}],description:\"The scroll-margin-left property defines the left margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\\u2019s coordinate space), then adding the specified outsets.\"},{name:\"scroll-margin-right\",syntax:\"<length>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-right\"}],description:\"The scroll-margin-right property defines the right margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\\u2019s coordinate space), then adding the specified outsets.\"},{name:\"scroll-margin-top\",syntax:\"<length>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-top\"}],description:\"The scroll-margin-top property defines the top margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container\\u2019s coordinate space), then adding the specified outsets.\"},{name:\"scroll-padding\",syntax:\"[ auto | <length-percentage> ]{1,4}\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-padding\"}],description:\"The scroll-padding property is a shorthand property which sets all of the scroll-padding longhands, assigning values much like the padding property does for the padding-* longhands.\"},{name:\"scroll-padding-block\",syntax:\"[ auto | <length-percentage> ]{1,2}\",relevance:50,browsers:[\"E79\",\"FF68\",\"S15\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block\"}],description:\"The scroll-padding-block property is a shorthand property which sets the scroll-padding longhands for the block dimension.\"},{name:\"scroll-padding-block-start\",syntax:\"auto | <length-percentage>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S15\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-start\"}],description:\"The scroll-padding-block-start property defines offsets for the start edge in the block dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport.\"},{name:\"scroll-padding-block-end\",syntax:\"auto | <length-percentage>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S15\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-end\"}],description:\"The scroll-padding-block-end property defines offsets for the end edge in the block dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport.\"},{name:\"scroll-padding-bottom\",syntax:\"auto | <length-percentage>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-bottom\"}],description:\"The scroll-padding-bottom property defines offsets for the bottom of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport.\"},{name:\"scroll-padding-inline\",syntax:\"[ auto | <length-percentage> ]{1,2}\",relevance:50,browsers:[\"E79\",\"FF68\",\"S15\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline\"}],description:\"The scroll-padding-inline property is a shorthand property which sets the scroll-padding longhands for the inline dimension.\"},{name:\"scroll-padding-inline-start\",syntax:\"auto | <length-percentage>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S15\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-start\"}],description:\"The scroll-padding-inline-start property defines offsets for the start edge in the inline dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport.\"},{name:\"scroll-padding-inline-end\",syntax:\"auto | <length-percentage>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S15\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-end\"}],description:\"The scroll-padding-inline-end property defines offsets for the end edge in the inline dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport.\"},{name:\"scroll-padding-left\",syntax:\"auto | <length-percentage>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-left\"}],description:\"The scroll-padding-left property defines offsets for the left of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport.\"},{name:\"scroll-padding-right\",syntax:\"auto | <length-percentage>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-right\"}],description:\"The scroll-padding-right property defines offsets for the right of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport.\"},{name:\"scroll-padding-top\",syntax:\"auto | <length-percentage>\",relevance:50,browsers:[\"E79\",\"FF68\",\"S14.1\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-top\"}],description:\"The scroll-padding-top property defines offsets for the top of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport.\"},{name:\"scroll-snap-align\",syntax:\"[ none | start | end | center ]{1,2}\",relevance:52,browsers:[\"E79\",\"FF68\",\"S11\",\"C69\",\"O56\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-align\"}],description:\"The scroll-snap-align property specifies the box\\u2019s snap position as an alignment of its snap area (as the alignment subject) within its snap container\\u2019s snapport (as the alignment container). The two values specify the snapping alignment in the block axis and inline axis, respectively. If only one value is specified, the second value defaults to the same value.\"},{name:\"scroll-snap-stop\",syntax:\"normal | always\",relevance:50,browsers:[\"E79\",\"S15\",\"C75\",\"O62\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-stop\"}],description:'The scroll-snap-stop CSS property defines whether the scroll container is allowed to \"pass over\" possible snap positions.'},{name:\"scroll-snap-type-x\",status:\"obsolete\",syntax:\"none | mandatory | proximity\",relevance:0,browsers:[\"FF39\",\"S9\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type-x\"}],description:`The scroll-snap-type-x CSS property defines how strictly snap points are enforced on the horizontal axis of the scroll container in case there is one.\n\nSpecifying any precise animations or physics used to enforce those snap points is not covered by this property but instead left up to the user agent.`},{name:\"scroll-snap-type-y\",status:\"obsolete\",syntax:\"none | mandatory | proximity\",relevance:0,browsers:[\"FF39\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type-y\"}],description:`The scroll-snap-type-y CSS property defines how strictly snap points are enforced on the vertical axis of the scroll container in case there is one.\n\nSpecifying any precise animations or physics used to enforce those snap points is not covered by this property but instead left up to the user agent.`},{name:\"text-combine-upright\",syntax:\"none | all | [ digits <integer>? ]\",relevance:50,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-combine-upright\"}],description:`The text-combine-upright CSS property specifies the combination of multiple characters into the space of a single character. If the combined text is wider than 1em, the user agent must fit the contents within 1em. The resulting composition is treated as a single upright glyph for layout and decoration. This property only has an effect in vertical writing modes.\n\nThis is used to produce an effect that is known as tate-ch\\u016B-yoko (\\u7E26\\u4E2D\\u6A2A) in Japanese, or as \\u76F4\\u66F8\\u6A6B\\u5411 in Chinese.`},{name:\"text-decoration-skip\",status:\"experimental\",syntax:\"none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]\",relevance:52,browsers:[\"S12.1\",\"C57\",\"O44\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip\"}],description:\"The text-decoration-skip CSS property specifies what parts of the element\\u2019s content any text decoration affecting the element must skip over. It controls all text decoration lines drawn by the element and also any text decoration lines drawn by its ancestors.\"},{name:\"text-decoration-skip-ink\",syntax:\"auto | all | none\",relevance:50,browsers:[\"E79\",\"FF70\",\"S15.4\",\"C64\",\"O50\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip-ink\"}],description:\"The text-decoration-skip-ink CSS property specifies how overlines and underlines are drawn when they pass over glyph ascenders and descenders.\"},{name:\"text-decoration-thickness\",syntax:\"auto | from-font | <length> | <percentage> \",relevance:50,browsers:[\"E89\",\"FF70\",\"S12.1\",\"C89\",\"O75\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-decoration-thickness\"}],description:\"The text-decoration-thickness CSS property sets the thickness, or width, of the decoration line that is used on text in an element, such as a line-through, underline, or overline.\"},{name:\"text-emphasis\",syntax:\"<'text-emphasis-style'> || <'text-emphasis-color'>\",relevance:50,browsers:[\"E79\",\"FF46\",\"S7\",\"C25\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-emphasis\"}],description:\"The text-emphasis CSS property is a shorthand property for setting text-emphasis-style and text-emphasis-color in one declaration. This property will apply the specified emphasis mark to each character of the element's text, except separator characters, like spaces,  and control characters.\"},{name:\"text-emphasis-color\",syntax:\"<color>\",relevance:50,browsers:[\"E79\",\"FF46\",\"S7\",\"C25\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-emphasis-color\"}],description:\"The text-emphasis-color CSS property defines the color used to draw emphasis marks on text being rendered in the HTML document. This value can also be set and reset using the text-emphasis shorthand.\"},{name:\"text-emphasis-position\",syntax:\"[ over | under ] && [ right | left ]\",relevance:50,browsers:[\"E79\",\"FF46\",\"S7\",\"C25\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-emphasis-position\"}],description:\"The text-emphasis-position CSS property describes where emphasis marks are drawn at. The effect of emphasis marks on the line height is the same as for ruby text: if there isn't enough place, the line height is increased.\"},{name:\"text-emphasis-style\",syntax:\"none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>\",relevance:50,browsers:[\"E79\",\"FF46\",\"S7\",\"C25\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-emphasis-style\"}],description:\"The text-emphasis-style CSS property defines the type of emphasis used. It can also be set, and reset, using the text-emphasis shorthand.\"},{name:\"text-size-adjust\",status:\"experimental\",syntax:\"none | auto | <percentage>\",relevance:57,browsers:[\"E79\",\"C54\",\"O41\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-size-adjust\"}],description:\"The text-size-adjust CSS property controls the text inflation algorithm used on some smartphones and tablets. Other browsers will ignore this property.\"},{name:\"text-underline-offset\",syntax:\"auto | <length> | <percentage> \",relevance:50,browsers:[\"E87\",\"FF70\",\"S12.1\",\"C87\",\"O73\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/text-underline-offset\"}],description:\"The text-underline-offset CSS property sets the offset distance of an underline text decoration line (applied using text-decoration) from its original position.\"},{name:\"transform-box\",syntax:\"content-box | border-box | fill-box | stroke-box | view-box\",relevance:50,browsers:[\"E79\",\"FF55\",\"S11\",\"C64\",\"O51\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/transform-box\"}],description:\"The transform-box CSS property defines the layout box to which the transform and transform-origin properties relate.\"},{name:\"translate\",syntax:\"none | <length-percentage> [ <length-percentage> <length>? ]?\",relevance:50,browsers:[\"FF72\",\"S14.1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/translate\"}],description:\"The translate CSS property allows you to specify translation transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value.\"},{name:\"white-space\",syntax:\"normal | pre | nowrap | pre-wrap | pre-line | break-spaces\",relevance:90,references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/white-space\"}],description:\"Specifies how whitespace is handled in an element.\"},{name:\"speak-as\",syntax:\"auto | bullets | numbers | words | spell-out | <counter-style-name>\",relevance:50,description:\"The speak-as descriptor specifies how a counter symbol constructed with a given @counter-style will be represented in the spoken form. For example, an author can specify a counter symbol to be either spoken as its numerical value or just represented with an audio cue.\"},{name:\"ascent-override\",status:\"experimental\",syntax:\"normal | <percentage>\",relevance:50,description:\"Describes the ascent metric of a font.\"},{name:\"descent-override\",status:\"experimental\",syntax:\"normal | <percentage>\",relevance:50,description:\"Describes the descent metric of a font.\"},{name:\"font-display\",status:\"experimental\",syntax:\"[ auto | block | swap | fallback | optional ]\",relevance:70,description:\"The font-display descriptor determines how a font face is displayed based on whether and when it is downloaded and ready to use.\"},{name:\"line-gap-override\",status:\"experimental\",syntax:\"normal | <percentage>\",relevance:50,description:\"Describes the line-gap metric of a font.\"},{name:\"size-adjust\",status:\"experimental\",syntax:\"<percentage>\",relevance:50,description:\"A multiplier for glyph outlines and metrics of a font.\"},{name:\"bleed\",syntax:\"auto | <length>\",relevance:50,description:\"The bleed CSS at-rule descriptor, used with the @page at-rule, specifies the extent of the page bleed area outside the page box. This property only has effect if crop marks are enabled using the marks property.\"},{name:\"marks\",syntax:\"none | [ crop || cross ]\",relevance:50,description:\"The marks CSS at-rule descriptor, used with the @page at-rule, adds crop and/or cross marks to the presentation of the document. Crop marks indicate where the page should be cut. Cross marks are used to align sheets.\"},{name:\"syntax\",status:\"experimental\",syntax:\"<string>\",relevance:50,description:\"Specifies the syntax of the custom property registration represented by the @property rule, controlling how the property\\u2019s value is parsed at computed value time.\"},{name:\"inherits\",status:\"experimental\",syntax:\"true | false\",relevance:50,description:\"Specifies the inherit flag of the custom property registration represented by the @property rule, controlling whether or not the property inherits by default.\"},{name:\"initial-value\",status:\"experimental\",syntax:\"<string>\",relevance:50,description:\"Specifies the initial value of the custom property registration represented by the @property rule, controlling the property\\u2019s initial value.\"},{name:\"max-zoom\",syntax:\"auto | <number> | <percentage>\",relevance:50,description:`The max-zoom CSS descriptor sets the maximum zoom factor of a document defined by the @viewport at-rule. The browser will not zoom in any further than this, whether automatically or at the user's request.\n\nA zoom factor of 1.0 or 100% corresponds to no zooming. Larger values are zoomed in. Smaller values are zoomed out.`},{name:\"min-zoom\",syntax:\"auto | <number> | <percentage>\",relevance:50,description:`The min-zoom CSS descriptor sets the minimum zoom factor of a document defined by the @viewport at-rule. The browser will not zoom out any further than this, whether automatically or at the user's request.\n\nA zoom factor of 1.0 or 100% corresponds to no zooming. Larger values are zoomed in. Smaller values are zoomed out.`},{name:\"orientation\",syntax:\"auto | portrait | landscape\",relevance:50,description:\"The orientation CSS @media media feature can be used to apply styles based on the orientation of the viewport (or the page box, for paged media).\"},{name:\"user-zoom\",syntax:\"zoom | fixed\",relevance:50,description:\"The user-zoom CSS descriptor controls whether or not the user can change the zoom factor of a document defined by @viewport.\"},{name:\"viewport-fit\",syntax:\"auto | contain | cover\",relevance:50,description:\"The border-block-style CSS property defines the style of the logical block borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation.\"}],atDirectives:[{name:\"@charset\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/@charset\"}],description:\"Defines character set of the document.\"},{name:\"@counter-style\",browsers:[\"E91\",\"FF33\",\"C91\",\"O77\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/@counter-style\"}],description:\"Defines a custom counter style.\"},{name:\"@font-face\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/@font-face\"}],description:\"Allows for linking to fonts that are automatically activated when needed. This permits authors to work around the limitation of 'web-safe' fonts, allowing for consistent rendering independent of the fonts available in a given user's environment.\"},{name:\"@font-feature-values\",browsers:[\"FF34\",\"S9.1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/@font-feature-values\"}],description:\"Defines named values for the indices used to select alternate glyphs for a given font family.\"},{name:\"@import\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/@import\"}],description:\"Includes content of another file.\"},{name:\"@keyframes\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/@keyframes\"}],description:\"Defines set of animation key frames.\"},{name:\"@media\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/@media\"}],description:\"Defines a stylesheet for a particular media type.\"},{name:\"@-moz-document\",browsers:[\"FF1.8\"],description:\"Gecko-specific at-rule that restricts the style rules contained within it based on the URL of the document.\"},{name:\"@-moz-keyframes\",browsers:[\"FF5\"],description:\"Defines set of animation key frames.\"},{name:\"@-ms-viewport\",browsers:[\"E\",\"IE10\"],description:\"Specifies the size, zoom factor, and orientation of the viewport.\"},{name:\"@namespace\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/@namespace\"}],description:\"Declares a prefix and associates it with a namespace name.\"},{name:\"@-o-keyframes\",browsers:[\"O12\"],description:\"Defines set of animation key frames.\"},{name:\"@-o-viewport\",browsers:[\"O11\"],description:\"Specifies the size, zoom factor, and orientation of the viewport.\"},{name:\"@page\",browsers:[\"E12\",\"FF19\",\"C2\",\"IE8\",\"O6\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/@page\"}],description:\"Directive defines various page parameters.\"},{name:\"@supports\",browsers:[\"E12\",\"FF22\",\"S9\",\"C28\",\"O12.1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/@supports\"}],description:\"A conditional group rule whose condition tests whether the user agent supports CSS property:value pairs.\"},{name:\"@-webkit-keyframes\",browsers:[\"C\",\"S4\"],description:\"Defines set of animation key frames.\"}],pseudoClasses:[{name:\":active\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:active\"}],description:\"Applies while an element is being activated by the user. For example, between the times the user presses the mouse button and releases it.\"},{name:\":any-link\",browsers:[\"E79\",\"FF50\",\"S9\",\"C65\",\"O52\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:any-link\"}],description:\"Represents an element that acts as the source anchor of a hyperlink. Applies to both visited and unvisited links.\"},{name:\":checked\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:checked\"}],description:\"Radio and checkbox elements can be toggled by the user. Some menu items are 'checked' when the user selects them. When such elements are toggled 'on' the :checked pseudo-class applies.\"},{name:\":corner-present\",browsers:[\"C\",\"S5\"],description:\"Non-standard. Indicates whether or not a scrollbar corner is present.\"},{name:\":decrement\",browsers:[\"C\",\"S5\"],description:\"Non-standard. Applies to buttons and track pieces. Indicates whether or not the button or track piece will decrement the view\\u2019s position when used.\"},{name:\":default\",browsers:[\"E79\",\"FF4\",\"S5\",\"C10\",\"O10\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:default\"}],description:\"Applies to the one or more UI elements that are the default among a set of similar elements. Typically applies to context menu items, buttons, and select lists/menus.\"},{name:\":disabled\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:disabled\"}],description:\"Represents user interface elements that are in a disabled state; such elements have a corresponding enabled state.\"},{name:\":double-button\",browsers:[\"C\",\"S5\"],description:\"Non-standard. Applies to buttons and track pieces. Applies when both buttons are displayed together at the same end of the scrollbar.\"},{name:\":empty\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:empty\"}],description:\"Represents an element that has no children at all.\"},{name:\":enabled\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:enabled\"}],description:\"Represents user interface elements that are in an enabled state; such elements have a corresponding disabled state.\"},{name:\":end\",browsers:[\"C\",\"S5\"],description:\"Non-standard. Applies to buttons and track pieces. Indicates whether the object is placed after the thumb.\"},{name:\":first\",browsers:[\"E12\",\"S6\",\"C18\",\"IE8\",\"O9.2\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:first\"}],description:\"When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the  page context.\"},{name:\":first-child\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:first-child\"}],description:\"Same as :nth-child(1). Represents an element that is the first child of some other element.\"},{name:\":first-of-type\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:first-of-type\"}],description:\"Same as :nth-of-type(1). Represents an element that is the first sibling of its type in the list of children of its parent element.\"},{name:\":focus\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:focus\"}],description:\"Applies while an element has the focus (accepts keyboard or mouse events, or other forms of input).\"},{name:\":fullscreen\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:fullscreen\"}],description:\"Matches any element that has its fullscreen flag set.\"},{name:\":future\",browsers:[\"S7\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:future\"}],description:\"Represents any element that is defined to occur entirely after a :current element.\"},{name:\":horizontal\",browsers:[\"C\",\"S5\"],description:\"Non-standard. Applies to any scrollbar pieces that have a horizontal orientation.\"},{name:\":host\",browsers:[\"E79\",\"FF63\",\"S10\",\"C54\",\"O41\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:host\"}],description:\"When evaluated in the context of a shadow tree, matches the shadow tree\\u2019s host element.\"},{name:\":host()\",browsers:[\"C35\",\"O22\"],description:\"When evaluated in the context of a shadow tree, it matches the shadow tree\\u2019s host element if the host element, in its normal context, matches the selector argument.\"},{name:\":host-context()\",browsers:[\"C35\",\"O22\"],description:\"Tests whether there is an ancestor, outside the shadow tree, which matches a particular selector.\"},{name:\":hover\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:hover\"}],description:\"Applies while the user designates an element with a pointing device, but does not necessarily activate it. For example, a visual user agent could apply this pseudo-class when the cursor (mouse pointer) hovers over a box generated by the element.\"},{name:\":increment\",browsers:[\"C\",\"S5\"],description:\"Non-standard. Applies to buttons and track pieces. Indicates whether or not the button or track piece will increment the view\\u2019s position when used.\"},{name:\":indeterminate\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:indeterminate\"}],description:\"Applies to UI elements whose value is in an indeterminate state.\"},{name:\":in-range\",browsers:[\"E13\",\"FF29\",\"S5.1\",\"C10\",\"O11\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:in-range\"}],description:\"Used in conjunction with the min and max attributes, whether on a range input, a number field, or any other types that accept those attributes.\"},{name:\":invalid\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:invalid\"}],description:\"An element is :valid or :invalid when it is, respectively, valid or invalid with respect to data validity semantics defined by a different specification.\"},{name:\":lang()\",browsers:[\"E\",\"C\",\"FF1\",\"IE8\",\"O8\",\"S3\"],description:\"Represents an element that is in language specified.\"},{name:\":last-child\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:last-child\"}],description:\"Same as :nth-last-child(1). Represents an element that is the last child of some other element.\"},{name:\":last-of-type\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:last-of-type\"}],description:\"Same as :nth-last-of-type(1). Represents an element that is the last sibling of its type in the list of children of its parent element.\"},{name:\":left\",browsers:[\"E12\",\"S5.1\",\"C6\",\"IE8\",\"O9.2\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:left\"}],description:\"When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the  page context.\"},{name:\":link\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:link\"}],description:\"Applies to links that have not yet been visited.\"},{name:\":matches()\",browsers:[\"S9\"],description:\"Takes a selector list as its argument. It represents an element that is represented by its argument.\"},{name:\":-moz-any()\",browsers:[\"FF4\"],description:\"Represents an element that is represented by the selector list passed as its argument. Standardized as :matches().\"},{name:\":-moz-any-link\",browsers:[\"FF1\"],description:\"Represents an element that acts as the source anchor of a hyperlink. Applies to both visited and unvisited links.\"},{name:\":-moz-broken\",browsers:[\"FF3\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:-moz-broken\"}],description:\"Non-standard. Matches elements representing broken images.\"},{name:\":-moz-drag-over\",browsers:[\"FF1\"],description:\"Non-standard. Matches elements when a drag-over event applies to it.\"},{name:\":-moz-first-node\",browsers:[\"FF1\"],description:\"Non-standard. Represents an element that is the first child node of some other element.\"},{name:\":-moz-focusring\",browsers:[\"FF4\"],description:\"Non-standard. Matches an element that has focus and focus ring drawing is enabled in the browser.\"},{name:\":-moz-full-screen\",browsers:[\"FF9\"],description:\"Matches any element that has its fullscreen flag set. Standardized as :fullscreen.\"},{name:\":-moz-last-node\",browsers:[\"FF1\"],description:\"Non-standard. Represents an element that is the last child node of some other element.\"},{name:\":-moz-loading\",browsers:[\"FF3\"],description:\"Non-standard. Matches elements, such as images, that haven\\u2019t started loading yet.\"},{name:\":-moz-only-whitespace\",browsers:[\"FF1\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:-moz-only-whitespace\"}],description:\"The same as :empty, except that it additionally matches elements that only contain code points affected by whitespace processing. Standardized as :blank.\"},{name:\":-moz-placeholder\",browsers:[\"FF4\"],description:\"Deprecated. Represents placeholder text in an input field. Use ::-moz-placeholder for Firefox 19+.\"},{name:\":-moz-submit-invalid\",browsers:[\"FF88\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:-moz-submit-invalid\"}],description:\"Non-standard. Represents any submit button when the contents of the associated form are not valid.\"},{name:\":-moz-suppressed\",browsers:[\"FF3\"],description:\"Non-standard. Matches elements representing images that have been blocked from loading.\"},{name:\":-moz-ui-invalid\",browsers:[\"FF4\"],description:\"Non-standard. Represents any validated form element whose value isn't valid \"},{name:\":-moz-ui-valid\",browsers:[\"FF4\"],description:\"Non-standard. Represents any validated form element whose value is valid \"},{name:\":-moz-user-disabled\",browsers:[\"FF3\"],description:\"Non-standard. Matches elements representing images that have been disabled due to the user\\u2019s preferences.\"},{name:\":-moz-window-inactive\",browsers:[\"FF4\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:-moz-window-inactive\"}],description:\"Non-standard. Matches elements in an inactive window.\"},{name:\":-ms-fullscreen\",browsers:[\"IE11\"],description:\"Matches any element that has its fullscreen flag set.\"},{name:\":-ms-input-placeholder\",browsers:[\"IE10\"],description:\"Represents placeholder text in an input field. Note: for Edge use the pseudo-element ::-ms-input-placeholder. Standardized as ::placeholder.\"},{name:\":-ms-keyboard-active\",browsers:[\"IE10\"],description:\"Windows Store apps only. Applies one or more styles to an element when it has focus and the user presses the space bar.\"},{name:\":-ms-lang()\",browsers:[\"E\",\"IE10\"],description:\"Represents an element that is in the language specified. Accepts a comma separated list of language tokens.\"},{name:\":no-button\",browsers:[\"C\",\"S5\"],description:\"Non-standard. Applies to track pieces. Applies when there is no button at that end of the track.\"},{name:\":not()\",browsers:[\"E\",\"C\",\"FF1\",\"IE9\",\"O9.5\",\"S2\"],description:\"The negation pseudo-class, :not(X), is a functional notation taking a simple selector (excluding the negation pseudo-class itself) as an argument. It represents an element that is not represented by its argument.\"},{name:\":nth-child()\",browsers:[\"E\",\"C\",\"FF3.5\",\"IE9\",\"O9.5\",\"S3.1\"],description:\"Represents an element that has an+b-1 siblings before it in the document tree, for any positive integer or zero value of n, and has a parent element.\"},{name:\":nth-last-child()\",browsers:[\"E\",\"C\",\"FF3.5\",\"IE9\",\"O9.5\",\"S3.1\"],description:\"Represents an element that has an+b-1 siblings after it in the document tree, for any positive integer or zero value of n, and has a parent element.\"},{name:\":nth-last-of-type()\",browsers:[\"E\",\"C\",\"FF3.5\",\"IE9\",\"O9.5\",\"S3.1\"],description:\"Represents an element that has an+b-1 siblings with the same expanded element name after it in the document tree, for any zero or positive integer value of n, and has a parent element.\"},{name:\":nth-of-type()\",browsers:[\"E\",\"C\",\"FF3.5\",\"IE9\",\"O9.5\",\"S3.1\"],description:\"Represents an element that has an+b-1 siblings with the same expanded element name before it in the document tree, for any zero or positive integer value of n, and has a parent element.\"},{name:\":only-child\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:only-child\"}],description:\"Represents an element that has a parent element and whose parent element has no other element children. Same as :first-child:last-child or :nth-child(1):nth-last-child(1), but with a lower specificity.\"},{name:\":only-of-type\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:only-of-type\"}],description:\"Matches every element that is the only child of its type, of its parent. Same as :first-of-type:last-of-type or :nth-of-type(1):nth-last-of-type(1), but with a lower specificity.\"},{name:\":optional\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:optional\"}],description:\"A form element is :required or :optional if a value for it is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional.\"},{name:\":out-of-range\",browsers:[\"E13\",\"FF29\",\"S5.1\",\"C10\",\"O11\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:out-of-range\"}],description:\"Used in conjunction with the min and max attributes, whether on a range input, a number field, or any other types that accept those attributes.\"},{name:\":past\",browsers:[\"S7\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:past\"}],description:\"Represents any element that is defined to occur entirely prior to a :current element.\"},{name:\":read-only\",browsers:[\"E13\",\"FF78\",\"S4\",\"C1\",\"O9\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:read-only\"}],description:\"An element whose contents are not user-alterable is :read-only. However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents, most elements are :read-only.\"},{name:\":read-write\",browsers:[\"E13\",\"FF78\",\"S4\",\"C1\",\"O9\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:read-write\"}],description:\"An element whose contents are not user-alterable is :read-only. However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents, most elements are :read-only.\"},{name:\":required\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:required\"}],description:\"A form element is :required or :optional if a value for it is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional.\"},{name:\":right\",browsers:[\"E12\",\"S5.1\",\"C6\",\"IE8\",\"O9.2\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:right\"}],description:\"When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the  page context.\"},{name:\":root\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:root\"}],description:\"Represents an element that is the root of the document. In HTML 4, this is always the HTML element.\"},{name:\":scope\",browsers:[\"E79\",\"FF32\",\"S7\",\"C27\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:scope\"}],description:\"Represents any element that is in the contextual reference element set.\"},{name:\":single-button\",browsers:[\"C\",\"S5\"],description:\"Non-standard. Applies to buttons and track pieces. Applies when both buttons are displayed separately at either end of the scrollbar.\"},{name:\":start\",browsers:[\"C\",\"S5\"],description:\"Non-standard. Applies to buttons and track pieces. Indicates whether the object is placed before the thumb.\"},{name:\":target\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:target\"}],description:\"Some URIs refer to a location within a resource. This kind of URI ends with a 'number sign' (#) followed by an anchor identifier (called the fragment identifier).\"},{name:\":valid\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:valid\"}],description:\"An element is :valid or :invalid when it is, respectively, valid or invalid with respect to data validity semantics defined by a different specification.\"},{name:\":vertical\",browsers:[\"C\",\"S5\"],description:\"Non-standard. Applies to any scrollbar pieces that have a vertical orientation.\"},{name:\":visited\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:visited\"}],description:\"Applies once the link has been visited by the user.\"},{name:\":-webkit-any()\",browsers:[\"C\",\"S5\"],description:\"Represents an element that is represented by the selector list passed as its argument. Standardized as :matches().\"},{name:\":-webkit-full-screen\",browsers:[\"C\",\"S6\"],description:\"Matches any element that has its fullscreen flag set. Standardized as :fullscreen.\"},{name:\":window-inactive\",browsers:[\"C\",\"S3\"],description:\"Non-standard. Applies to all scrollbar pieces. Indicates whether or not the window containing the scrollbar is currently active.\"},{name:\":current\",status:\"experimental\",description:\"The :current CSS pseudo-class selector is a time-dimensional pseudo-class that represents the element, or an ancestor of the element, that is currently being displayed\"},{name:\":blank\",status:\"experimental\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:blank\"}],description:\"The :blank CSS pseudo-class selects empty user input elements (eg. <input> or <textarea>).\"},{name:\":defined\",status:\"experimental\",browsers:[\"E79\",\"FF63\",\"S10\",\"C54\",\"O41\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:defined\"}],description:\"The :defined CSS pseudo-class represents any element that has been defined. This includes any standard element built in to the browser, and custom elements that have been successfully defined (i.e. with the CustomElementRegistry.define() method).\"},{name:\":dir\",browsers:[\"FF49\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:dir\"}],description:\"The :dir() CSS pseudo-class matches elements based on the directionality of the text contained in them.\"},{name:\":focus-visible\",browsers:[\"E86\",\"FF85\",\"S15.4\",\"C86\",\"O72\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:focus-visible\"}],description:\"The :focus-visible pseudo-class applies while an element matches the :focus pseudo-class and the UA determines via heuristics that the focus should be made evident on the element.\"},{name:\":focus-within\",browsers:[\"E79\",\"FF52\",\"S10.1\",\"C60\",\"O47\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:focus-within\"}],description:\"The :focus-within pseudo-class applies to any element for which the :focus pseudo class applies as well as to an element whose descendant in the flat tree (including non-element nodes, such as text nodes) matches the conditions for matching :focus.\"},{name:\":has\",status:\"experimental\",browsers:[\"S15.4\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:has\"}],description:\":The :has() CSS pseudo-class represents an element if any of the selectors passed as parameters (relative to the :scope of the given element), match at least one element.\"},{name:\":is\",status:\"experimental\",browsers:[\"E88\",\"FF78\",\"S14\",\"C88\",\"O74\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:is\"}],description:\"The :is() CSS pseudo-class function takes a selector list as its argument, and selects any element that can be selected by one of the selectors in that list. This is useful for writing large selectors in a more compact form.\"},{name:\":local-link\",status:\"experimental\",description:\"The :local-link CSS pseudo-class represents an link to the same document\"},{name:\":nth-col\",status:\"experimental\",description:\"The :nth-col() CSS pseudo-class is designed for tables and grids. It accepts the An+B notation such as used with the :nth-child selector, using this to target every nth column. \"},{name:\":nth-last-col\",status:\"experimental\",description:\"The :nth-last-col() CSS pseudo-class is designed for tables and grids. It accepts the An+B notation such as used with the :nth-child selector, using this to target every nth column before it, therefore counting back from the end of the set of columns.\"},{name:\":paused\",status:\"experimental\",description:\"The :paused CSS pseudo-class selector is a resource state pseudo-class that will match an audio, video, or similar resource that is capable of being \\u201Cplayed\\u201D or \\u201Cpaused\\u201D, when that element is \\u201Cpaused\\u201D.\"},{name:\":placeholder-shown\",status:\"experimental\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:placeholder-shown\"}],description:\"The :placeholder-shown CSS pseudo-class represents any <input> or <textarea> element that is currently displaying placeholder text.\"},{name:\":playing\",status:\"experimental\",description:\"The :playing CSS pseudo-class selector is a resource state pseudo-class that will match an audio, video, or similar resource that is capable of being \\u201Cplayed\\u201D or \\u201Cpaused\\u201D, when that element is \\u201Cplaying\\u201D. \"},{name:\":target-within\",status:\"experimental\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:target-within\"}],description:\"The :target-within CSS pseudo-class represents an element that is a target element or contains an element that is a target. A target element is a unique element with an id matching the URL's fragment.\"},{name:\":user-invalid\",status:\"experimental\",browsers:[\"FF88\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:user-invalid\"}],description:\"The :user-invalid CSS pseudo-class represents any validated form element whose value isn't valid based on their validation constraints, after the user has interacted with it.\"},{name:\":user-valid\",status:\"experimental\",browsers:[\"FF88\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:user-valid\"}],description:\"The :user-valid CSS pseudo-class represents any validated form element whose value validates correctly based on its validation constraints. However, unlike :valid it only matches once the user has interacted with it.\"},{name:\":where\",status:\"experimental\",browsers:[\"E88\",\"FF78\",\"S14\",\"C88\",\"O74\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/:where\"}],description:\"The :where() CSS pseudo-class function takes a selector list as its argument, and selects any element that can be selected by one of the selectors in that list.\"},{name:\":picture-in-picture\",status:\"experimental\",description:\"The :picture-in-picture CSS pseudo-class matches the element which is currently in picture-in-picture mode.\"}],pseudoElements:[{name:\"::after\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::after\"}],description:\"Represents a styleable child pseudo-element immediately after the originating element\\u2019s actual content.\"},{name:\"::backdrop\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::backdrop\"}],description:\"Used to create a backdrop that hides the underlying document for an element in a top layer (such as an element that is displayed fullscreen).\"},{name:\"::before\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::before\"}],description:\"Represents a styleable child pseudo-element immediately before the originating element\\u2019s actual content.\"},{name:\"::content\",browsers:[\"C35\",\"O22\"],description:\"Deprecated. Matches the distribution list itself, on elements that have one. Use ::slotted for forward compatibility.\"},{name:\"::cue\",browsers:[\"E79\",\"FF55\",\"S7\",\"C26\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::cue\"}]},{name:\"::cue()\",browsers:[\"C\",\"O16\",\"S6\"]},{name:\"::cue-region\",browsers:[\"C\",\"O16\",\"S6\"]},{name:\"::cue-region()\",browsers:[\"C\",\"O16\",\"S6\"]},{name:\"::first-letter\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::first-letter\"}],description:\"Represents the first letter of an element, if it is not preceded by any other content (such as images or inline tables) on its line.\"},{name:\"::first-line\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::first-line\"}],description:\"Describes the contents of the first formatted line of its originating element.\"},{name:\"::-moz-focus-inner\",browsers:[\"FF4\"]},{name:\"::-moz-focus-outer\",browsers:[\"FF4\"]},{name:\"::-moz-list-bullet\",browsers:[\"FF1\"],description:\"Used to style the bullet of a list element. Similar to the standardized ::marker.\"},{name:\"::-moz-list-number\",browsers:[\"FF1\"],description:\"Used to style the numbers of a list element. Similar to the standardized ::marker.\"},{name:\"::-moz-placeholder\",browsers:[\"FF19\"],description:\"Represents placeholder text in an input field\"},{name:\"::-moz-progress-bar\",browsers:[\"FF9\"],description:\"Represents the bar portion of a progress bar.\"},{name:\"::-moz-selection\",browsers:[\"FF1\"],description:\"Represents the portion of a document that has been highlighted by the user.\"},{name:\"::-ms-backdrop\",browsers:[\"IE11\"],description:\"Used to create a backdrop that hides the underlying document for an element in a top layer (such as an element that is displayed fullscreen).\"},{name:\"::-ms-browse\",browsers:[\"E\",\"IE10\"],description:\"Represents the browse button of an input type=file control.\"},{name:\"::-ms-check\",browsers:[\"E\",\"IE10\"],description:\"Represents the check of a checkbox or radio button input control.\"},{name:\"::-ms-clear\",browsers:[\"E\",\"IE10\"],description:\"Represents the clear button of a text input control\"},{name:\"::-ms-expand\",browsers:[\"E\",\"IE10\"],description:\"Represents the drop-down button of a select control.\"},{name:\"::-ms-fill\",browsers:[\"E\",\"IE10\"],description:\"Represents the bar portion of a progress bar.\"},{name:\"::-ms-fill-lower\",browsers:[\"E\",\"IE10\"],description:\"Represents the portion of the slider track from its smallest value up to the value currently selected by the thumb. In a left-to-right layout, this is the portion of the slider track to the left of the thumb.\"},{name:\"::-ms-fill-upper\",browsers:[\"E\",\"IE10\"],description:\"Represents the portion of the slider track from the value currently selected by the thumb up to the slider's largest value. In a left-to-right layout, this is the portion of the slider track to the right of the thumb.\"},{name:\"::-ms-reveal\",browsers:[\"E\",\"IE10\"],description:\"Represents the password reveal button of an input type=password control.\"},{name:\"::-ms-thumb\",browsers:[\"E\",\"IE10\"],description:\"Represents the portion of range input control (also known as a slider control) that the user drags.\"},{name:\"::-ms-ticks-after\",browsers:[\"E\",\"IE10\"],description:\"Represents the tick marks of a slider that begin just after the thumb and continue up to the slider's largest value. In a left-to-right layout, these are the ticks to the right of the thumb.\"},{name:\"::-ms-ticks-before\",browsers:[\"E\",\"IE10\"],description:\"Represents the tick marks of a slider that represent its smallest values up to the value currently selected by the thumb. In a left-to-right layout, these are the ticks to the left of the thumb.\"},{name:\"::-ms-tooltip\",browsers:[\"E\",\"IE10\"],description:\"Represents the tooltip of a slider (input type=range).\"},{name:\"::-ms-track\",browsers:[\"E\",\"IE10\"],description:\"Represents the track of a slider.\"},{name:\"::-ms-value\",browsers:[\"E\",\"IE10\"],description:\"Represents the content of a text or password input control, or a select control.\"},{name:\"::selection\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::selection\"}],description:\"Represents the portion of a document that has been highlighted by the user.\"},{name:\"::shadow\",browsers:[\"C35\",\"O22\"],description:\"Matches the shadow root if an element has a shadow tree.\"},{name:\"::-webkit-file-upload-button\",browsers:[\"C\",\"O\",\"S6\"]},{name:\"::-webkit-inner-spin-button\",browsers:[\"E79\",\"S5\",\"C6\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-inner-spin-button\"}]},{name:\"::-webkit-input-placeholder\",browsers:[\"C\",\"S4\"]},{name:\"::-webkit-keygen-select\",browsers:[\"C\",\"O\",\"S6\"]},{name:\"::-webkit-meter-bar\",browsers:[\"E79\",\"S5.1\",\"C12\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-bar\"}]},{name:\"::-webkit-meter-even-less-good-value\",browsers:[\"E79\",\"S5.1\",\"C12\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-even-less-good-value\"}]},{name:\"::-webkit-meter-optimum-value\",browsers:[\"E79\",\"S5.1\",\"C12\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-optimum-value\"}]},{name:\"::-webkit-meter-suboptimum-value\",browsers:[\"E79\",\"S5.1\",\"C12\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-suboptimum-value\"}]},{name:\"::-webkit-outer-spin-button\",browsers:[\"S5\",\"C6\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-outer-spin-button\"}]},{name:\"::-webkit-progress-bar\",browsers:[\"E79\",\"S7\",\"C25\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-bar\"}]},{name:\"::-webkit-progress-inner-element\",browsers:[\"E79\",\"S7\",\"C23\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-inner-element\"}]},{name:\"::-webkit-progress-value\",browsers:[\"E79\",\"S7\",\"C25\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-value\"}]},{name:\"::-webkit-resizer\",browsers:[\"E79\",\"S4\",\"C2\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar\"}]},{name:\"::-webkit-scrollbar\",browsers:[\"E79\",\"S4\",\"C2\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar\"}]},{name:\"::-webkit-scrollbar-button\",browsers:[\"E79\",\"S4\",\"C2\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar\"}]},{name:\"::-webkit-scrollbar-corner\",browsers:[\"E79\",\"S4\",\"C2\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar\"}]},{name:\"::-webkit-scrollbar-thumb\",browsers:[\"E79\",\"S4\",\"C2\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar\"}]},{name:\"::-webkit-scrollbar-track\",browsers:[\"E79\",\"S4\",\"C2\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar\"}]},{name:\"::-webkit-scrollbar-track-piece\",browsers:[\"E79\",\"S4\",\"C2\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar\"}]},{name:\"::-webkit-search-cancel-button\",browsers:[\"E79\",\"S3\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-search-cancel-button\"}]},{name:\"::-webkit-search-decoration\",browsers:[\"C\",\"S4\"]},{name:\"::-webkit-search-results-button\",browsers:[\"E79\",\"S3\",\"C1\",\"O15\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-webkit-search-results-button\"}]},{name:\"::-webkit-search-results-decoration\",browsers:[\"C\",\"S4\"]},{name:\"::-webkit-slider-runnable-track\",browsers:[\"C\",\"O\",\"S6\"]},{name:\"::-webkit-slider-thumb\",browsers:[\"C\",\"O\",\"S6\"]},{name:\"::-webkit-textfield-decoration-container\",browsers:[\"C\",\"O\",\"S6\"]},{name:\"::-webkit-validation-bubble\",browsers:[\"C\",\"O\",\"S6\"]},{name:\"::-webkit-validation-bubble-arrow\",browsers:[\"C\",\"O\",\"S6\"]},{name:\"::-webkit-validation-bubble-arrow-clipper\",browsers:[\"C\",\"O\",\"S6\"]},{name:\"::-webkit-validation-bubble-heading\",browsers:[\"C\",\"O\",\"S6\"]},{name:\"::-webkit-validation-bubble-message\",browsers:[\"C\",\"O\",\"S6\"]},{name:\"::-webkit-validation-bubble-text-block\",browsers:[\"C\",\"O\",\"S6\"]},{name:\"::target-text\",status:\"experimental\",browsers:[\"E89\",\"C89\",\"O75\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::target-text\"}],description:\"The ::target-text CSS pseudo-element represents the text that has been scrolled to if the browser supports scroll-to-text fragments. It allows authors to choose how to highlight that section of text.\"},{name:\"::-moz-range-progress\",status:\"nonstandard\",browsers:[\"FF22\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-moz-range-progress\"}],description:'The ::-moz-range-progress CSS pseudo-element is a Mozilla extension that represents the lower portion of the track (i.e., groove) in which the indicator slides in an <input> of type=\"range\". This portion corresponds to values lower than the value currently selected by the thumb (i.e., virtual knob).'},{name:\"::-moz-range-thumb\",status:\"nonstandard\",browsers:[\"FF21\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-moz-range-thumb\"}],description:`The ::-moz-range-thumb CSS pseudo-element is a Mozilla extension that represents the thumb (i.e., virtual knob) of an <input> of type=\"range\". The user can move the thumb along the input's track to alter its numerical value.`},{name:\"::-moz-range-track\",status:\"nonstandard\",browsers:[\"FF21\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::-moz-range-track\"}],description:'The ::-moz-range-track CSS pseudo-element is a Mozilla extension that represents the track (i.e., groove) in which the indicator slides in an <input> of type=\"range\".'},{name:\"::-webkit-progress-inner-value\",status:\"nonstandard\",description:`The ::-webkit-progress-value CSS pseudo-element represents the filled-in portion of the bar of a <progress> element. It is a child of the ::-webkit-progress-bar pseudo-element.\n\nIn order to let ::-webkit-progress-value take effect, -webkit-appearance needs to be set to none on the <progress> element.`},{name:\"::grammar-error\",status:\"experimental\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::grammar-error\"}],description:\"The ::grammar-error CSS pseudo-element represents a text segment which the user agent has flagged as grammatically incorrect.\"},{name:\"::marker\",browsers:[\"E86\",\"FF68\",\"S11.1\",\"C86\",\"O72\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::marker\"}],description:\"The ::marker CSS pseudo-element selects the marker box of a list item, which typically contains a bullet or number. It works on any element or pseudo-element set to display: list-item, such as the <li> and <summary> elements.\"},{name:\"::part\",status:\"experimental\",browsers:[\"E79\",\"FF72\",\"S13.1\",\"C73\",\"O60\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::part\"}],description:\"The ::part CSS pseudo-element represents any element within a shadow tree that has a matching part attribute.\"},{name:\"::placeholder\",browsers:[\"E79\",\"FF51\",\"S10.1\",\"C57\",\"O44\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::placeholder\"}],description:\"The ::placeholder CSS pseudo-element represents the placeholder text of a form element.\"},{name:\"::slotted\",browsers:[\"E79\",\"FF63\",\"S10\",\"C50\",\"O37\"],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::slotted\"}],description:\"The :slotted() CSS pseudo-element represents any element that has been placed into a slot inside an HTML template.\"},{name:\"::spelling-error\",status:\"experimental\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/CSS/::spelling-error\"}],description:\"The ::spelling-error CSS pseudo-element represents a text segment which the user agent has flagged as incorrectly spelled.\"}]};var Un=function(){function n(e){this._properties=[],this._atDirectives=[],this._pseudoClasses=[],this._pseudoElements=[],this.addData(e)}return n.prototype.provideProperties=function(){return this._properties},n.prototype.provideAtDirectives=function(){return this._atDirectives},n.prototype.providePseudoClasses=function(){return this._pseudoClasses},n.prototype.providePseudoElements=function(){return this._pseudoElements},n.prototype.addData=function(e){if(Array.isArray(e.properties))for(var t=0,r=e.properties;t<r.length;t++){var i=r[t];Ya(i)&&this._properties.push(i)}if(Array.isArray(e.atDirectives))for(var o=0,s=e.atDirectives;o<s.length;o++){var i=s[o];Qa(i)&&this._atDirectives.push(i)}if(Array.isArray(e.pseudoClasses))for(var a=0,l=e.pseudoClasses;a<l.length;a++){var i=l[a];Za(i)&&this._pseudoClasses.push(i)}if(Array.isArray(e.pseudoElements))for(var c=0,h=e.pseudoElements;c<h.length;c++){var i=h[c];el(i)&&this._pseudoElements.push(i)}},n}();function Ya(n){return typeof n.name==\"string\"}function Qa(n){return typeof n.name==\"string\"}function Za(n){return typeof n.name==\"string\"}function el(n){return typeof n.name==\"string\"}var jn=function(){function n(e){this.dataProviders=[],this._propertySet={},this._atDirectiveSet={},this._pseudoClassSet={},this._pseudoElementSet={},this._properties=[],this._atDirectives=[],this._pseudoClasses=[],this._pseudoElements=[],this.setDataProviders(e?.useDefaultDataProvider!==!1,e?.customDataProviders||[])}return n.prototype.setDataProviders=function(e,t){var r;this.dataProviders=[],e&&this.dataProviders.push(new Un(Br)),(r=this.dataProviders).push.apply(r,t),this.collectData()},n.prototype.collectData=function(){var e=this;this._propertySet={},this._atDirectiveSet={},this._pseudoClassSet={},this._pseudoElementSet={},this.dataProviders.forEach(function(t){t.provideProperties().forEach(function(r){e._propertySet[r.name]||(e._propertySet[r.name]=r)}),t.provideAtDirectives().forEach(function(r){e._atDirectiveSet[r.name]||(e._atDirectiveSet[r.name]=r)}),t.providePseudoClasses().forEach(function(r){e._pseudoClassSet[r.name]||(e._pseudoClassSet[r.name]=r)}),t.providePseudoElements().forEach(function(r){e._pseudoElementSet[r.name]||(e._pseudoElementSet[r.name]=r)})}),this._properties=Bt(this._propertySet),this._atDirectives=Bt(this._atDirectiveSet),this._pseudoClasses=Bt(this._pseudoClassSet),this._pseudoElements=Bt(this._pseudoElementSet)},n.prototype.getProperty=function(e){return this._propertySet[e]},n.prototype.getAtDirective=function(e){return this._atDirectiveSet[e]},n.prototype.getPseudoClass=function(e){return this._pseudoClassSet[e]},n.prototype.getPseudoElement=function(e){return this._pseudoElementSet[e]},n.prototype.getProperties=function(){return this._properties},n.prototype.getAtDirectives=function(){return this._atDirectives},n.prototype.getPseudoClasses=function(){return this._pseudoClasses},n.prototype.getPseudoElements=function(){return this._pseudoElements},n.prototype.isKnownProperty=function(e){return e.toLowerCase()in this._propertySet},n.prototype.isStandardProperty=function(e){return this.isKnownProperty(e)&&(!this._propertySet[e.toLowerCase()].status||this._propertySet[e.toLowerCase()].status===\"standard\")},n}();function is(n,e,t){function r(o){for(var s=i(o),a=void 0,l=s.length-1;l>=0;l--)a=gt.create(W.create(n.positionAt(s[l][0]),n.positionAt(s[l][1])),a);return a||(a=gt.create(W.create(o,o))),a}return e.map(r);function i(o){var s=n.offsetAt(o),a=t.findChildAtOffset(s,!0);if(!a)return[];for(var l=[];a;){if(a.parent&&a.offset===a.parent.offset&&a.end===a.parent.end){a=a.parent;continue}a.type===u.Declarations&&s>a.offset&&s<a.end&&l.push([a.offset+1,a.end-1]),l.push([a.offset,a.end]),a=a.parent}return l}}var tl=function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},n(e,t)};return function(e,t){if(typeof t!=\"function\"&&t!==null)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}(),nl=function(n,e,t,r){function i(o){return o instanceof t?o:new t(function(s){s(o)})}return new(t||(t=Promise))(function(o,s){function a(h){try{c(r.next(h))}catch(p){s(p)}}function l(h){try{c(r.throw(h))}catch(p){s(p)}}function c(h){h.done?o(h.value):i(h.value).then(a,l)}c((r=r.apply(n,e||[])).next())})},rl=function(n,e){var t={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol==\"function\"&&(s[Symbol.iterator]=function(){return this}),s;function a(c){return function(h){return l([c,h])}}function l(c){if(r)throw new TypeError(\"Generator is already executing.\");for(;t;)try{if(r=1,i&&(o=c[0]&2?i.return:c[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,c[1])).done)return o;switch(i=0,o&&(c=[c[0]&2,o.value]),c[0]){case 0:case 1:o=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,i=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(o=t.trys,!(o=o.length>0&&o[o.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]<o[3])){t.label=c[1];break}if(c[0]===6&&t.label<o[1]){t.label=o[1],o=c;break}if(o&&t.label<o[2]){t.label=o[2],t.ops.push(c);break}o[2]&&t.ops.pop(),t.trys.pop();continue}c=e.call(n,t)}catch(h){c=[6,h],i=0}finally{r=o=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}},os=function(n){tl(e,n);function e(t){return n.call(this,t,!0)||this}return e.prototype.isRawStringDocumentLinkNode=function(t){return n.prototype.isRawStringDocumentLinkNode.call(this,t)||t.type===u.Use||t.type===u.Forward},e.prototype.resolveRelativeReference=function(t,r,i,o){return nl(this,void 0,void 0,function(){function s(m){if(m.path!==\"\"&&!(m.path.endsWith(\".scss\")||m.path.endsWith(\".css\"))){if(m.path.endsWith(\"/\"))return[m.with({path:m.path+\"index.scss\"}).toString(),m.with({path:m.path+\"_index.scss\"}).toString()];var g=m.path.split(\"/\"),w=g[g.length-1],x=m.path.slice(0,-w.length);if(w.startsWith(\"_\"))return m.path.endsWith(\".scss\")?void 0:[m.with({path:m.path+\".scss\"}).toString()];var y=w+\".scss\",D=function(ue){return m.with({path:x+ue}).toString()},M=D(y),z=D(\"_\"+y),P=D(y.slice(0,-5)+\"/index.scss\"),L=D(y.slice(0,-5)+\"/_index.scss\"),$=D(y.slice(0,-5)+\".css\");return[M,z,P,L,$]}}var a,l,c,h,p;return rl(this,function(m){switch(m.label){case 0:return q(t,\"sass:\")?[2,void 0]:[4,n.prototype.resolveRelativeReference.call(this,t,r,i,o)];case 1:if(a=m.sent(),!(this.fileSystemProvider&&a&&o))return[3,8];l=Kt.parse(a),m.label=2;case 2:if(m.trys.push([2,7,,8]),c=s(l),!c)return[3,6];h=0,m.label=3;case 3:return h<c.length?[4,this.fileExists(c[h])]:[3,6];case 4:if(m.sent())return[2,c[h]];m.label=5;case 5:return h++,[3,3];case 6:return[3,8];case 7:return p=m.sent(),[3,8];case 8:return[2,a]}})})},e}(Yt);function ss(n){return new Un(n)}function $r(n,e,t,r,i,o,s){return{configure:function(a){o.configure(a),e.configure(a?.completion),t.configure(a?.hover)},setDataProviders:s.setDataProviders.bind(s),doValidation:o.doValidation.bind(o),parseStylesheet:n.parseStylesheet.bind(n),doComplete:e.doComplete.bind(e),doComplete2:e.doComplete2.bind(e),setCompletionParticipants:e.setCompletionParticipants.bind(e),doHover:t.doHover.bind(t),format:rs,findDefinition:r.findDefinition.bind(r),findReferences:r.findReferences.bind(r),findDocumentHighlights:r.findDocumentHighlights.bind(r),findDocumentLinks:r.findDocumentLinks.bind(r),findDocumentLinks2:r.findDocumentLinks2.bind(r),findDocumentSymbols:r.findDocumentSymbols.bind(r),doCodeActions:i.doCodeActions.bind(i),doCodeActions2:i.doCodeActions2.bind(i),findDocumentColors:r.findDocumentColors.bind(r),getColorPresentations:r.getColorPresentations.bind(r),doRename:r.doRename.bind(r),getFoldingRanges:Yo,getSelectionRanges:is}}var qr={};function as(n){n===void 0&&(n=qr);var e=new jn(n);return $r(new bt,new yt(null,n,e),new In(n&&n.clientCapabilities,e),new Yt(n&&n.fileSystemProvider,!1),new Mn(e),new Pn(e),e)}function ls(n){n===void 0&&(n=qr);var e=new jn(n);return $r(new $o,new Ko(n,e),new In(n&&n.clientCapabilities,e),new os(n&&n.fileSystemProvider),new Mn(e),new Pn(e),e)}function cs(n){n===void 0&&(n=qr);var e=new jn(n);return $r(new Ho,new Jo(n,e),new In(n&&n.clientCapabilities,e),new Yt(n&&n.fileSystemProvider,!0),new Mn(e),new Pn(e),e)}var Vn=class{_ctx;_languageService;_languageSettings;_languageId;constructor(e,t){this._ctx=e,this._languageSettings=t.options,this._languageId=t.languageId;let r=t.options.data,i=r?.useDefaultDataProvider,o=[];if(r?.dataProviders)for(let a in r.dataProviders)o.push(ss(r.dataProviders[a]));let s={customDataProviders:o,useDefaultDataProvider:i};switch(this._languageId){case\"css\":this._languageService=as(s);break;case\"less\":this._languageService=cs(s);break;case\"scss\":this._languageService=ls(s);break;default:throw new Error(\"Invalid language id: \"+this._languageId)}this._languageService.configure(this._languageSettings)}async doValidation(e){let t=this._getTextDocument(e);if(t){let r=this._languageService.parseStylesheet(t),i=this._languageService.doValidation(t,r);return Promise.resolve(i)}return Promise.resolve([])}async doComplete(e,t){let r=this._getTextDocument(e);if(!r)return null;let i=this._languageService.parseStylesheet(r),o=this._languageService.doComplete(r,t,i);return Promise.resolve(o)}async doHover(e,t){let r=this._getTextDocument(e);if(!r)return null;let i=this._languageService.parseStylesheet(r),o=this._languageService.doHover(r,t,i);return Promise.resolve(o)}async findDefinition(e,t){let r=this._getTextDocument(e);if(!r)return null;let i=this._languageService.parseStylesheet(r),o=this._languageService.findDefinition(r,t,i);return Promise.resolve(o)}async findReferences(e,t){let r=this._getTextDocument(e);if(!r)return[];let i=this._languageService.parseStylesheet(r),o=this._languageService.findReferences(r,t,i);return Promise.resolve(o)}async findDocumentHighlights(e,t){let r=this._getTextDocument(e);if(!r)return[];let i=this._languageService.parseStylesheet(r),o=this._languageService.findDocumentHighlights(r,t,i);return Promise.resolve(o)}async findDocumentSymbols(e){let t=this._getTextDocument(e);if(!t)return[];let r=this._languageService.parseStylesheet(t),i=this._languageService.findDocumentSymbols(t,r);return Promise.resolve(i)}async doCodeActions(e,t,r){let i=this._getTextDocument(e);if(!i)return[];let o=this._languageService.parseStylesheet(i),s=this._languageService.doCodeActions(i,t,r,o);return Promise.resolve(s)}async findDocumentColors(e){let t=this._getTextDocument(e);if(!t)return[];let r=this._languageService.parseStylesheet(t),i=this._languageService.findDocumentColors(t,r);return Promise.resolve(i)}async getColorPresentations(e,t,r){let i=this._getTextDocument(e);if(!i)return[];let o=this._languageService.parseStylesheet(i),s=this._languageService.getColorPresentations(i,o,t,r);return Promise.resolve(s)}async getFoldingRanges(e,t){let r=this._getTextDocument(e);if(!r)return[];let i=this._languageService.getFoldingRanges(r,t);return Promise.resolve(i)}async getSelectionRanges(e,t){let r=this._getTextDocument(e);if(!r)return[];let i=this._languageService.parseStylesheet(r),o=this._languageService.getSelectionRanges(r,t,i);return Promise.resolve(o)}async doRename(e,t,r){let i=this._getTextDocument(e);if(!i)return null;let o=this._languageService.parseStylesheet(i),s=this._languageService.doRename(i,t,r,o);return Promise.resolve(s)}async format(e,t,r){let i=this._getTextDocument(e);if(!i)return[];let o={...this._languageSettings.format,...r},s=this._languageService.format(i,t,o);return Promise.resolve(s)}_getTextDocument(e){let t=this._ctx.getMirrorModels();for(let r of t)if(r.uri.toString()===e)return Ut.create(e,this._languageId,r.version,r.getValue());return null}};function ol(n,e){return new Vn(n,e)}return fs(sl);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/language/html/htmlMode.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/language/html/htmlMode\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var nn=Object.create;var Q=Object.defineProperty;var tn=Object.getOwnPropertyDescriptor;var rn=Object.getOwnPropertyNames;var on=Object.getPrototypeOf,sn=Object.prototype.hasOwnProperty;var an=(n=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(n,{get:(t,i)=>(typeof require!=\"undefined\"?require:t)[i]}):n)(function(n){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+n+'\" is not supported')});var un=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),dn=(n,t)=>{for(var i in t)Q(n,i,{get:t[i],enumerable:!0})},q=(n,t,i,r)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let e of rn(t))!sn.call(n,e)&&e!==i&&Q(n,e,{get:()=>t[e],enumerable:!(r=tn(t,e))||r.enumerable});return n},he=(n,t,i)=>(q(n,t,\"default\"),i&&q(i,t,\"default\")),me=(n,t,i)=>(i=n!=null?nn(on(n)):{},q(t||!n||!n.__esModule?Q(i,\"default\",{value:n,enumerable:!0}):i,n)),cn=n=>q(Q({},\"__esModule\",{value:!0}),n);var Te=un((Ln,ve)=>{var ln=me(an(\"vs/editor/editor.api\"));ve.exports=ln});var Rn={};dn(Rn,{CompletionAdapter:()=>B,DefinitionAdapter:()=>ce,DiagnosticsAdapter:()=>de,DocumentColorAdapter:()=>ge,DocumentFormattingEditProvider:()=>H,DocumentHighlightAdapter:()=>S,DocumentLinkAdapter:()=>A,DocumentRangeFormattingEditProvider:()=>K,DocumentSymbolAdapter:()=>M,FoldingRangeAdapter:()=>U,HoverAdapter:()=>D,ReferenceAdapter:()=>le,RenameAdapter:()=>F,SelectionRangeAdapter:()=>j,WorkerManager:()=>b,fromPosition:()=>C,fromRange:()=>fe,setupMode:()=>Pn,setupMode1:()=>En,toRange:()=>y,toTextEdit:()=>L});var d={};he(d,me(Te()));var gn=2*60*1e3,b=class{_defaults;_idleCheckInterval;_lastUsedTime;_configChangeListener;_worker;_client;constructor(t){this._defaults=t,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),30*1e3),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){if(!this._worker)return;Date.now()-this._lastUsedTime>gn&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||(this._worker=d.editor.createWebWorker({moduleId:\"vs/language/html/htmlWorker\",createData:{languageSettings:this._defaults.options,languageId:this._defaults.languageId},label:this._defaults.languageId}),this._client=this._worker.getProxy()),this._client}getLanguageServiceWorker(...t){let i;return this._getClient().then(r=>{i=r}).then(r=>{if(this._worker)return this._worker.withSyncedResources(t)}).then(r=>i)}};var ye;(function(n){n.MIN_VALUE=-2147483648,n.MAX_VALUE=2147483647})(ye||(ye={}));var J;(function(n){n.MIN_VALUE=0,n.MAX_VALUE=2147483647})(J||(J={}));var x;(function(n){function t(r,e){return r===Number.MAX_VALUE&&(r=J.MAX_VALUE),e===Number.MAX_VALUE&&(e=J.MAX_VALUE),{line:r,character:e}}n.create=t;function i(r){var e=r;return a.objectLiteral(e)&&a.uinteger(e.line)&&a.uinteger(e.character)}n.is=i})(x||(x={}));var v;(function(n){function t(r,e,o,s){if(a.uinteger(r)&&a.uinteger(e)&&a.uinteger(o)&&a.uinteger(s))return{start:x.create(r,e),end:x.create(o,s)};if(x.is(r)&&x.is(e))return{start:r,end:e};throw new Error(\"Range#create called with invalid arguments[\"+r+\", \"+e+\", \"+o+\", \"+s+\"]\")}n.create=t;function i(r){var e=r;return a.objectLiteral(e)&&x.is(e.start)&&x.is(e.end)}n.is=i})(v||(v={}));var ie;(function(n){function t(r,e){return{uri:r,range:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&v.is(e.range)&&(a.string(e.uri)||a.undefined(e.uri))}n.is=i})(ie||(ie={}));var xe;(function(n){function t(r,e,o,s){return{targetUri:r,targetRange:e,targetSelectionRange:o,originSelectionRange:s}}n.create=t;function i(r){var e=r;return a.defined(e)&&v.is(e.targetRange)&&a.string(e.targetUri)&&(v.is(e.targetSelectionRange)||a.undefined(e.targetSelectionRange))&&(v.is(e.originSelectionRange)||a.undefined(e.originSelectionRange))}n.is=i})(xe||(xe={}));var oe;(function(n){function t(r,e,o,s){return{red:r,green:e,blue:o,alpha:s}}n.create=t;function i(r){var e=r;return a.numberRange(e.red,0,1)&&a.numberRange(e.green,0,1)&&a.numberRange(e.blue,0,1)&&a.numberRange(e.alpha,0,1)}n.is=i})(oe||(oe={}));var ke;(function(n){function t(r,e){return{range:r,color:e}}n.create=t;function i(r){var e=r;return v.is(e.range)&&oe.is(e.color)}n.is=i})(ke||(ke={}));var Ie;(function(n){function t(r,e,o){return{label:r,textEdit:e,additionalTextEdits:o}}n.create=t;function i(r){var e=r;return a.string(e.label)&&(a.undefined(e.textEdit)||_.is(e))&&(a.undefined(e.additionalTextEdits)||a.typedArray(e.additionalTextEdits,_.is))}n.is=i})(Ie||(Ie={}));var R;(function(n){n.Comment=\"comment\",n.Imports=\"imports\",n.Region=\"region\"})(R||(R={}));var _e;(function(n){function t(r,e,o,s,u){var l={startLine:r,endLine:e};return a.defined(o)&&(l.startCharacter=o),a.defined(s)&&(l.endCharacter=s),a.defined(u)&&(l.kind=u),l}n.create=t;function i(r){var e=r;return a.uinteger(e.startLine)&&a.uinteger(e.startLine)&&(a.undefined(e.startCharacter)||a.uinteger(e.startCharacter))&&(a.undefined(e.endCharacter)||a.uinteger(e.endCharacter))&&(a.undefined(e.kind)||a.string(e.kind))}n.is=i})(_e||(_e={}));var se;(function(n){function t(r,e){return{location:r,message:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&ie.is(e.location)&&a.string(e.message)}n.is=i})(se||(se={}));var w;(function(n){n.Error=1,n.Warning=2,n.Information=3,n.Hint=4})(w||(w={}));var Ce;(function(n){n.Unnecessary=1,n.Deprecated=2})(Ce||(Ce={}));var be;(function(n){function t(i){var r=i;return r!=null&&a.string(r.href)}n.is=t})(be||(be={}));var Y;(function(n){function t(r,e,o,s,u,l){var f={range:r,message:e};return a.defined(o)&&(f.severity=o),a.defined(s)&&(f.code=s),a.defined(u)&&(f.source=u),a.defined(l)&&(f.relatedInformation=l),f}n.create=t;function i(r){var e,o=r;return a.defined(o)&&v.is(o.range)&&a.string(o.message)&&(a.number(o.severity)||a.undefined(o.severity))&&(a.integer(o.code)||a.string(o.code)||a.undefined(o.code))&&(a.undefined(o.codeDescription)||a.string((e=o.codeDescription)===null||e===void 0?void 0:e.href))&&(a.string(o.source)||a.undefined(o.source))&&(a.undefined(o.relatedInformation)||a.typedArray(o.relatedInformation,se.is))}n.is=i})(Y||(Y={}));var O;(function(n){function t(r,e){for(var o=[],s=2;s<arguments.length;s++)o[s-2]=arguments[s];var u={title:r,command:e};return a.defined(o)&&o.length>0&&(u.arguments=o),u}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.title)&&a.string(e.command)}n.is=i})(O||(O={}));var _;(function(n){function t(o,s){return{range:o,newText:s}}n.replace=t;function i(o,s){return{range:{start:o,end:o},newText:s}}n.insert=i;function r(o){return{range:o,newText:\"\"}}n.del=r;function e(o){var s=o;return a.objectLiteral(s)&&a.string(s.newText)&&v.is(s.range)}n.is=e})(_||(_={}));var P;(function(n){function t(r,e,o){var s={label:r};return e!==void 0&&(s.needsConfirmation=e),o!==void 0&&(s.description=o),s}n.create=t;function i(r){var e=r;return e!==void 0&&a.objectLiteral(e)&&a.string(e.label)&&(a.boolean(e.needsConfirmation)||e.needsConfirmation===void 0)&&(a.string(e.description)||e.description===void 0)}n.is=i})(P||(P={}));var T;(function(n){function t(i){var r=i;return typeof r==\"string\"}n.is=t})(T||(T={}));var I;(function(n){function t(o,s,u){return{range:o,newText:s,annotationId:u}}n.replace=t;function i(o,s,u){return{range:{start:o,end:o},newText:s,annotationId:u}}n.insert=i;function r(o,s){return{range:o,newText:\"\",annotationId:s}}n.del=r;function e(o){var s=o;return _.is(s)&&(P.is(s.annotationId)||T.is(s.annotationId))}n.is=e})(I||(I={}));var Z;(function(n){function t(r,e){return{textDocument:r,edits:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&ee.is(e.textDocument)&&Array.isArray(e.edits)}n.is=i})(Z||(Z={}));var N;(function(n){function t(r,e,o){var s={kind:\"create\",uri:r};return e!==void 0&&(e.overwrite!==void 0||e.ignoreIfExists!==void 0)&&(s.options=e),o!==void 0&&(s.annotationId=o),s}n.create=t;function i(r){var e=r;return e&&e.kind===\"create\"&&a.string(e.uri)&&(e.options===void 0||(e.options.overwrite===void 0||a.boolean(e.options.overwrite))&&(e.options.ignoreIfExists===void 0||a.boolean(e.options.ignoreIfExists)))&&(e.annotationId===void 0||T.is(e.annotationId))}n.is=i})(N||(N={}));var V;(function(n){function t(r,e,o,s){var u={kind:\"rename\",oldUri:r,newUri:e};return o!==void 0&&(o.overwrite!==void 0||o.ignoreIfExists!==void 0)&&(u.options=o),s!==void 0&&(u.annotationId=s),u}n.create=t;function i(r){var e=r;return e&&e.kind===\"rename\"&&a.string(e.oldUri)&&a.string(e.newUri)&&(e.options===void 0||(e.options.overwrite===void 0||a.boolean(e.options.overwrite))&&(e.options.ignoreIfExists===void 0||a.boolean(e.options.ignoreIfExists)))&&(e.annotationId===void 0||T.is(e.annotationId))}n.is=i})(V||(V={}));var z;(function(n){function t(r,e,o){var s={kind:\"delete\",uri:r};return e!==void 0&&(e.recursive!==void 0||e.ignoreIfNotExists!==void 0)&&(s.options=e),o!==void 0&&(s.annotationId=o),s}n.create=t;function i(r){var e=r;return e&&e.kind===\"delete\"&&a.string(e.uri)&&(e.options===void 0||(e.options.recursive===void 0||a.boolean(e.options.recursive))&&(e.options.ignoreIfNotExists===void 0||a.boolean(e.options.ignoreIfNotExists)))&&(e.annotationId===void 0||T.is(e.annotationId))}n.is=i})(z||(z={}));var ae;(function(n){function t(i){var r=i;return r&&(r.changes!==void 0||r.documentChanges!==void 0)&&(r.documentChanges===void 0||r.documentChanges.every(function(e){return a.string(e.kind)?N.is(e)||V.is(e)||z.is(e):Z.is(e)}))}n.is=t})(ae||(ae={}));var G=function(){function n(t,i){this.edits=t,this.changeAnnotations=i}return n.prototype.insert=function(t,i,r){var e,o;if(r===void 0?e=_.insert(t,i):T.is(r)?(o=r,e=I.insert(t,i,r)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(r),e=I.insert(t,i,o)),this.edits.push(e),o!==void 0)return o},n.prototype.replace=function(t,i,r){var e,o;if(r===void 0?e=_.replace(t,i):T.is(r)?(o=r,e=I.replace(t,i,r)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(r),e=I.replace(t,i,o)),this.edits.push(e),o!==void 0)return o},n.prototype.delete=function(t,i){var r,e;if(i===void 0?r=_.del(t):T.is(i)?(e=i,r=I.del(t,i)):(this.assertChangeAnnotations(this.changeAnnotations),e=this.changeAnnotations.manage(i),r=I.del(t,e)),this.edits.push(r),e!==void 0)return e},n.prototype.add=function(t){this.edits.push(t)},n.prototype.all=function(){return this.edits},n.prototype.clear=function(){this.edits.splice(0,this.edits.length)},n.prototype.assertChangeAnnotations=function(t){if(t===void 0)throw new Error(\"Text edit change is not configured to manage change annotations.\")},n}(),we=function(){function n(t){this._annotations=t===void 0?Object.create(null):t,this._counter=0,this._size=0}return n.prototype.all=function(){return this._annotations},Object.defineProperty(n.prototype,\"size\",{get:function(){return this._size},enumerable:!1,configurable:!0}),n.prototype.manage=function(t,i){var r;if(T.is(t)?r=t:(r=this.nextId(),i=t),this._annotations[r]!==void 0)throw new Error(\"Id \"+r+\" is already in use.\");if(i===void 0)throw new Error(\"No annotation provided for id \"+r);return this._annotations[r]=i,this._size++,r},n.prototype.nextId=function(){return this._counter++,this._counter.toString()},n}(),Hn=function(){function n(t){var i=this;this._textEditChanges=Object.create(null),t!==void 0?(this._workspaceEdit=t,t.documentChanges?(this._changeAnnotations=new we(t.changeAnnotations),t.changeAnnotations=this._changeAnnotations.all(),t.documentChanges.forEach(function(r){if(Z.is(r)){var e=new G(r.edits,i._changeAnnotations);i._textEditChanges[r.textDocument.uri]=e}})):t.changes&&Object.keys(t.changes).forEach(function(r){var e=new G(t.changes[r]);i._textEditChanges[r]=e})):this._workspaceEdit={}}return Object.defineProperty(n.prototype,\"edit\",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),n.prototype.getTextEditChange=function(t){if(ee.is(t)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var i={uri:t.uri,version:t.version},r=this._textEditChanges[i.uri];if(!r){var e=[],o={textDocument:i,edits:e};this._workspaceEdit.documentChanges.push(o),r=new G(e,this._changeAnnotations),this._textEditChanges[i.uri]=r}return r}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error(\"Workspace edit is not configured for normal text edit changes.\");var r=this._textEditChanges[t];if(!r){var e=[];this._workspaceEdit.changes[t]=e,r=new G(e),this._textEditChanges[t]=r}return r}},n.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new we,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},n.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},n.prototype.createFile=function(t,i,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var e;P.is(i)||T.is(i)?e=i:r=i;var o,s;if(e===void 0?o=N.create(t,r):(s=T.is(e)?e:this._changeAnnotations.manage(e),o=N.create(t,r,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},n.prototype.renameFile=function(t,i,r,e){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var o;P.is(r)||T.is(r)?o=r:e=r;var s,u;if(o===void 0?s=V.create(t,i,e):(u=T.is(o)?o:this._changeAnnotations.manage(o),s=V.create(t,i,e,u)),this._workspaceEdit.documentChanges.push(s),u!==void 0)return u},n.prototype.deleteFile=function(t,i,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var e;P.is(i)||T.is(i)?e=i:r=i;var o,s;if(e===void 0?o=z.create(t,r):(s=T.is(e)?e:this._changeAnnotations.manage(e),o=z.create(t,r,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},n}();var Ee;(function(n){function t(r){return{uri:r}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.uri)}n.is=i})(Ee||(Ee={}));var Pe;(function(n){function t(r,e){return{uri:r,version:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.uri)&&a.integer(e.version)}n.is=i})(Pe||(Pe={}));var ee;(function(n){function t(r,e){return{uri:r,version:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.uri)&&(e.version===null||a.integer(e.version))}n.is=i})(ee||(ee={}));var Re;(function(n){function t(r,e,o,s){return{uri:r,languageId:e,version:o,text:s}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.string(e.uri)&&a.string(e.languageId)&&a.integer(e.version)&&a.string(e.text)}n.is=i})(Re||(Re={}));var X;(function(n){n.PlainText=\"plaintext\",n.Markdown=\"markdown\"})(X||(X={}));(function(n){function t(i){var r=i;return r===n.PlainText||r===n.Markdown}n.is=t})(X||(X={}));var ue;(function(n){function t(i){var r=i;return a.objectLiteral(i)&&X.is(r.kind)&&a.string(r.value)}n.is=t})(ue||(ue={}));var p;(function(n){n.Text=1,n.Method=2,n.Function=3,n.Constructor=4,n.Field=5,n.Variable=6,n.Class=7,n.Interface=8,n.Module=9,n.Property=10,n.Unit=11,n.Value=12,n.Enum=13,n.Keyword=14,n.Snippet=15,n.Color=16,n.File=17,n.Reference=18,n.Folder=19,n.EnumMember=20,n.Constant=21,n.Struct=22,n.Event=23,n.Operator=24,n.TypeParameter=25})(p||(p={}));var ne;(function(n){n.PlainText=1,n.Snippet=2})(ne||(ne={}));var We;(function(n){n.Deprecated=1})(We||(We={}));var Le;(function(n){function t(r,e,o){return{newText:r,insert:e,replace:o}}n.create=t;function i(r){var e=r;return e&&a.string(e.newText)&&v.is(e.insert)&&v.is(e.replace)}n.is=i})(Le||(Le={}));var De;(function(n){n.asIs=1,n.adjustIndentation=2})(De||(De={}));var Se;(function(n){function t(i){return{label:i}}n.create=t})(Se||(Se={}));var Fe;(function(n){function t(i,r){return{items:i||[],isIncomplete:!!r}}n.create=t})(Fe||(Fe={}));var te;(function(n){function t(r){return r.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g,\"\\\\$&\")}n.fromPlainText=t;function i(r){var e=r;return a.string(e)||a.objectLiteral(e)&&a.string(e.language)&&a.string(e.value)}n.is=i})(te||(te={}));var Me;(function(n){function t(i){var r=i;return!!r&&a.objectLiteral(r)&&(ue.is(r.contents)||te.is(r.contents)||a.typedArray(r.contents,te.is))&&(i.range===void 0||v.is(i.range))}n.is=t})(Me||(Me={}));var Ae;(function(n){function t(i,r){return r?{label:i,documentation:r}:{label:i}}n.create=t})(Ae||(Ae={}));var He;(function(n){function t(i,r){for(var e=[],o=2;o<arguments.length;o++)e[o-2]=arguments[o];var s={label:i};return a.defined(r)&&(s.documentation=r),a.defined(e)?s.parameters=e:s.parameters=[],s}n.create=t})(He||(He={}));var W;(function(n){n.Text=1,n.Read=2,n.Write=3})(W||(W={}));var Ke;(function(n){function t(i,r){var e={range:i};return a.number(r)&&(e.kind=r),e}n.create=t})(Ke||(Ke={}));var h;(function(n){n.File=1,n.Module=2,n.Namespace=3,n.Package=4,n.Class=5,n.Method=6,n.Property=7,n.Field=8,n.Constructor=9,n.Enum=10,n.Interface=11,n.Function=12,n.Variable=13,n.Constant=14,n.String=15,n.Number=16,n.Boolean=17,n.Array=18,n.Object=19,n.Key=20,n.Null=21,n.EnumMember=22,n.Struct=23,n.Event=24,n.Operator=25,n.TypeParameter=26})(h||(h={}));var Ue;(function(n){n.Deprecated=1})(Ue||(Ue={}));var je;(function(n){function t(i,r,e,o,s){var u={name:i,kind:r,location:{uri:o,range:e}};return s&&(u.containerName=s),u}n.create=t})(je||(je={}));var Oe;(function(n){function t(r,e,o,s,u,l){var f={name:r,detail:e,kind:o,range:s,selectionRange:u};return l!==void 0&&(f.children=l),f}n.create=t;function i(r){var e=r;return e&&a.string(e.name)&&a.number(e.kind)&&v.is(e.range)&&v.is(e.selectionRange)&&(e.detail===void 0||a.string(e.detail))&&(e.deprecated===void 0||a.boolean(e.deprecated))&&(e.children===void 0||Array.isArray(e.children))&&(e.tags===void 0||Array.isArray(e.tags))}n.is=i})(Oe||(Oe={}));var Ne;(function(n){n.Empty=\"\",n.QuickFix=\"quickfix\",n.Refactor=\"refactor\",n.RefactorExtract=\"refactor.extract\",n.RefactorInline=\"refactor.inline\",n.RefactorRewrite=\"refactor.rewrite\",n.Source=\"source\",n.SourceOrganizeImports=\"source.organizeImports\",n.SourceFixAll=\"source.fixAll\"})(Ne||(Ne={}));var Ve;(function(n){function t(r,e){var o={diagnostics:r};return e!=null&&(o.only=e),o}n.create=t;function i(r){var e=r;return a.defined(e)&&a.typedArray(e.diagnostics,Y.is)&&(e.only===void 0||a.typedArray(e.only,a.string))}n.is=i})(Ve||(Ve={}));var ze;(function(n){function t(r,e,o){var s={title:r},u=!0;return typeof e==\"string\"?(u=!1,s.kind=e):O.is(e)?s.command=e:s.edit=e,u&&o!==void 0&&(s.kind=o),s}n.create=t;function i(r){var e=r;return e&&a.string(e.title)&&(e.diagnostics===void 0||a.typedArray(e.diagnostics,Y.is))&&(e.kind===void 0||a.string(e.kind))&&(e.edit!==void 0||e.command!==void 0)&&(e.command===void 0||O.is(e.command))&&(e.isPreferred===void 0||a.boolean(e.isPreferred))&&(e.edit===void 0||ae.is(e.edit))}n.is=i})(ze||(ze={}));var Xe;(function(n){function t(r,e){var o={range:r};return a.defined(e)&&(o.data=e),o}n.create=t;function i(r){var e=r;return a.defined(e)&&v.is(e.range)&&(a.undefined(e.command)||O.is(e.command))}n.is=i})(Xe||(Xe={}));var Be;(function(n){function t(r,e){return{tabSize:r,insertSpaces:e}}n.create=t;function i(r){var e=r;return a.defined(e)&&a.uinteger(e.tabSize)&&a.boolean(e.insertSpaces)}n.is=i})(Be||(Be={}));var $e;(function(n){function t(r,e,o){return{range:r,target:e,data:o}}n.create=t;function i(r){var e=r;return a.defined(e)&&v.is(e.range)&&(a.undefined(e.target)||a.string(e.target))}n.is=i})($e||($e={}));var qe;(function(n){function t(r,e){return{range:r,parent:e}}n.create=t;function i(r){var e=r;return e!==void 0&&v.is(e.range)&&(e.parent===void 0||n.is(e.parent))}n.is=i})(qe||(qe={}));var Qe;(function(n){function t(o,s,u,l){return new fn(o,s,u,l)}n.create=t;function i(o){var s=o;return!!(a.defined(s)&&a.string(s.uri)&&(a.undefined(s.languageId)||a.string(s.languageId))&&a.uinteger(s.lineCount)&&a.func(s.getText)&&a.func(s.positionAt)&&a.func(s.offsetAt))}n.is=i;function r(o,s){for(var u=o.getText(),l=e(s,function(E,$){var pe=E.range.start.line-$.range.start.line;return pe===0?E.range.start.character-$.range.start.character:pe}),f=u.length,g=l.length-1;g>=0;g--){var m=l[g],k=o.offsetAt(m.range.start),c=o.offsetAt(m.range.end);if(c<=f)u=u.substring(0,k)+m.newText+u.substring(c,u.length);else throw new Error(\"Overlapping edit\");f=k}return u}n.applyEdits=r;function e(o,s){if(o.length<=1)return o;var u=o.length/2|0,l=o.slice(0,u),f=o.slice(u);e(l,s),e(f,s);for(var g=0,m=0,k=0;g<l.length&&m<f.length;){var c=s(l[g],f[m]);c<=0?o[k++]=l[g++]:o[k++]=f[m++]}for(;g<l.length;)o[k++]=l[g++];for(;m<f.length;)o[k++]=f[m++];return o}})(Qe||(Qe={}));var fn=function(){function n(t,i,r,e){this._uri=t,this._languageId=i,this._version=r,this._content=e,this._lineOffsets=void 0}return Object.defineProperty(n.prototype,\"uri\",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"languageId\",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"version\",{get:function(){return this._version},enumerable:!1,configurable:!0}),n.prototype.getText=function(t){if(t){var i=this.offsetAt(t.start),r=this.offsetAt(t.end);return this._content.substring(i,r)}return this._content},n.prototype.update=function(t,i){this._content=t.text,this._version=i,this._lineOffsets=void 0},n.prototype.getLineOffsets=function(){if(this._lineOffsets===void 0){for(var t=[],i=this._content,r=!0,e=0;e<i.length;e++){r&&(t.push(e),r=!1);var o=i.charAt(e);r=o===\"\\r\"||o===`\n`,o===\"\\r\"&&e+1<i.length&&i.charAt(e+1)===`\n`&&e++}r&&i.length>0&&t.push(i.length),this._lineOffsets=t}return this._lineOffsets},n.prototype.positionAt=function(t){t=Math.max(Math.min(t,this._content.length),0);var i=this.getLineOffsets(),r=0,e=i.length;if(e===0)return x.create(0,t);for(;r<e;){var o=Math.floor((r+e)/2);i[o]>t?e=o:r=o+1}var s=r-1;return x.create(s,t-i[s])},n.prototype.offsetAt=function(t){var i=this.getLineOffsets();if(t.line>=i.length)return this._content.length;if(t.line<0)return 0;var r=i[t.line],e=t.line+1<i.length?i[t.line+1]:this._content.length;return Math.max(Math.min(r+t.character,e),r)},Object.defineProperty(n.prototype,\"lineCount\",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),n}(),a;(function(n){var t=Object.prototype.toString;function i(c){return typeof c<\"u\"}n.defined=i;function r(c){return typeof c>\"u\"}n.undefined=r;function e(c){return c===!0||c===!1}n.boolean=e;function o(c){return t.call(c)===\"[object String]\"}n.string=o;function s(c){return t.call(c)===\"[object Number]\"}n.number=s;function u(c,E,$){return t.call(c)===\"[object Number]\"&&E<=c&&c<=$}n.numberRange=u;function l(c){return t.call(c)===\"[object Number]\"&&-2147483648<=c&&c<=2147483647}n.integer=l;function f(c){return t.call(c)===\"[object Number]\"&&0<=c&&c<=2147483647}n.uinteger=f;function g(c){return t.call(c)===\"[object Function]\"}n.func=g;function m(c){return c!==null&&typeof c==\"object\"}n.objectLiteral=m;function k(c,E){return Array.isArray(c)&&c.every(E)}n.typedArray=k})(a||(a={}));var de=class{constructor(t,i,r){this._languageId=t;this._worker=i;let e=s=>{let u=s.getLanguageId();if(u!==this._languageId)return;let l;this._listener[s.uri.toString()]=s.onDidChangeContent(()=>{window.clearTimeout(l),l=window.setTimeout(()=>this._doValidate(s.uri,u),500)}),this._doValidate(s.uri,u)},o=s=>{d.editor.setModelMarkers(s,this._languageId,[]);let u=s.uri.toString(),l=this._listener[u];l&&(l.dispose(),delete this._listener[u])};this._disposables.push(d.editor.onDidCreateModel(e)),this._disposables.push(d.editor.onWillDisposeModel(o)),this._disposables.push(d.editor.onDidChangeModelLanguage(s=>{o(s.model),e(s.model)})),this._disposables.push(r(s=>{d.editor.getModels().forEach(u=>{u.getLanguageId()===this._languageId&&(o(u),e(u))})})),this._disposables.push({dispose:()=>{d.editor.getModels().forEach(o);for(let s in this._listener)this._listener[s].dispose()}}),d.editor.getModels().forEach(e)}_disposables=[];_listener=Object.create(null);dispose(){this._disposables.forEach(t=>t&&t.dispose()),this._disposables.length=0}_doValidate(t,i){this._worker(t).then(r=>r.doValidation(t.toString())).then(r=>{let e=r.map(s=>mn(t,s)),o=d.editor.getModel(t);o&&o.getLanguageId()===i&&d.editor.setModelMarkers(o,i,e)}).then(void 0,r=>{console.error(r)})}};function hn(n){switch(n){case w.Error:return d.MarkerSeverity.Error;case w.Warning:return d.MarkerSeverity.Warning;case w.Information:return d.MarkerSeverity.Info;case w.Hint:return d.MarkerSeverity.Hint;default:return d.MarkerSeverity.Info}}function mn(n,t){let i=typeof t.code==\"number\"?String(t.code):t.code;return{severity:hn(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:i,source:t.source}}var B=class{constructor(t,i){this._worker=t;this._triggerCharacters=i}get triggerCharacters(){return this._triggerCharacters}provideCompletionItems(t,i,r,e){let o=t.uri;return this._worker(o).then(s=>s.doComplete(o.toString(),C(i))).then(s=>{if(!s)return;let u=t.getWordUntilPosition(i),l=new d.Range(i.lineNumber,u.startColumn,i.lineNumber,u.endColumn),f=s.items.map(g=>{let m={label:g.label,insertText:g.insertText||g.label,sortText:g.sortText,filterText:g.filterText,documentation:g.documentation,detail:g.detail,command:yn(g.command),range:l,kind:Tn(g.kind)};return g.textEdit&&(vn(g.textEdit)?m.range={insert:y(g.textEdit.insert),replace:y(g.textEdit.replace)}:m.range=y(g.textEdit.range),m.insertText=g.textEdit.newText),g.additionalTextEdits&&(m.additionalTextEdits=g.additionalTextEdits.map(L)),g.insertTextFormat===ne.Snippet&&(m.insertTextRules=d.languages.CompletionItemInsertTextRule.InsertAsSnippet),m});return{isIncomplete:s.isIncomplete,suggestions:f}})}};function C(n){if(!!n)return{character:n.column-1,line:n.lineNumber-1}}function fe(n){if(!!n)return{start:{line:n.startLineNumber-1,character:n.startColumn-1},end:{line:n.endLineNumber-1,character:n.endColumn-1}}}function y(n){if(!!n)return new d.Range(n.start.line+1,n.start.character+1,n.end.line+1,n.end.character+1)}function vn(n){return typeof n.insert<\"u\"&&typeof n.replace<\"u\"}function Tn(n){let t=d.languages.CompletionItemKind;switch(n){case p.Text:return t.Text;case p.Method:return t.Method;case p.Function:return t.Function;case p.Constructor:return t.Constructor;case p.Field:return t.Field;case p.Variable:return t.Variable;case p.Class:return t.Class;case p.Interface:return t.Interface;case p.Module:return t.Module;case p.Property:return t.Property;case p.Unit:return t.Unit;case p.Value:return t.Value;case p.Enum:return t.Enum;case p.Keyword:return t.Keyword;case p.Snippet:return t.Snippet;case p.Color:return t.Color;case p.File:return t.File;case p.Reference:return t.Reference}return t.Property}function L(n){if(!!n)return{range:y(n.range),text:n.newText}}function yn(n){return n&&n.command===\"editor.action.triggerSuggest\"?{id:n.command,title:n.title,arguments:n.arguments}:void 0}var D=class{constructor(t){this._worker=t}provideHover(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.doHover(e.toString(),C(i))).then(o=>{if(!!o)return{range:y(o.range),contents:kn(o.contents)}})}};function xn(n){return n&&typeof n==\"object\"&&typeof n.kind==\"string\"}function Ge(n){return typeof n==\"string\"?{value:n}:xn(n)?n.kind===\"plaintext\"?{value:n.value.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g,\"\\\\$&\")}:{value:n.value}:{value:\"```\"+n.language+`\n`+n.value+\"\\n```\\n\"}}function kn(n){if(!!n)return Array.isArray(n)?n.map(Ge):[Ge(n)]}var S=class{constructor(t){this._worker=t}provideDocumentHighlights(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.findDocumentHighlights(e.toString(),C(i))).then(o=>{if(!!o)return o.map(s=>({range:y(s.range),kind:In(s.kind)}))})}};function In(n){switch(n){case W.Read:return d.languages.DocumentHighlightKind.Read;case W.Write:return d.languages.DocumentHighlightKind.Write;case W.Text:return d.languages.DocumentHighlightKind.Text}return d.languages.DocumentHighlightKind.Text}var ce=class{constructor(t){this._worker=t}provideDefinition(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.findDefinition(e.toString(),C(i))).then(o=>{if(!!o)return[Je(o)]})}};function Je(n){return{uri:d.Uri.parse(n.uri),range:y(n.range)}}var le=class{constructor(t){this._worker=t}provideReferences(t,i,r,e){let o=t.uri;return this._worker(o).then(s=>s.findReferences(o.toString(),C(i))).then(s=>{if(!!s)return s.map(Je)})}},F=class{constructor(t){this._worker=t}provideRenameEdits(t,i,r,e){let o=t.uri;return this._worker(o).then(s=>s.doRename(o.toString(),C(i),r)).then(s=>_n(s))}};function _n(n){if(!n||!n.changes)return;let t=[];for(let i in n.changes){let r=d.Uri.parse(i);for(let e of n.changes[i])t.push({resource:r,versionId:void 0,textEdit:{range:y(e.range),text:e.newText}})}return{edits:t}}var M=class{constructor(t){this._worker=t}provideDocumentSymbols(t,i){let r=t.uri;return this._worker(r).then(e=>e.findDocumentSymbols(r.toString())).then(e=>{if(!!e)return e.map(o=>({name:o.name,detail:\"\",containerName:o.containerName,kind:Cn(o.kind),range:y(o.location.range),selectionRange:y(o.location.range),tags:[]}))})}};function Cn(n){let t=d.languages.SymbolKind;switch(n){case h.File:return t.Array;case h.Module:return t.Module;case h.Namespace:return t.Namespace;case h.Package:return t.Package;case h.Class:return t.Class;case h.Method:return t.Method;case h.Property:return t.Property;case h.Field:return t.Field;case h.Constructor:return t.Constructor;case h.Enum:return t.Enum;case h.Interface:return t.Interface;case h.Function:return t.Function;case h.Variable:return t.Variable;case h.Constant:return t.Constant;case h.String:return t.String;case h.Number:return t.Number;case h.Boolean:return t.Boolean;case h.Array:return t.Array}return t.Function}var A=class{constructor(t){this._worker=t}provideLinks(t,i){let r=t.uri;return this._worker(r).then(e=>e.findDocumentLinks(r.toString())).then(e=>{if(!!e)return{links:e.map(o=>({range:y(o.range),url:o.target}))}})}},H=class{constructor(t){this._worker=t}provideDocumentFormattingEdits(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.format(e.toString(),null,Ye(i)).then(s=>{if(!(!s||s.length===0))return s.map(L)}))}},K=class{constructor(t){this._worker=t}canFormatMultipleRanges=!1;provideDocumentRangeFormattingEdits(t,i,r,e){let o=t.uri;return this._worker(o).then(s=>s.format(o.toString(),fe(i),Ye(r)).then(u=>{if(!(!u||u.length===0))return u.map(L)}))}};function Ye(n){return{tabSize:n.tabSize,insertSpaces:n.insertSpaces}}var ge=class{constructor(t){this._worker=t}provideDocumentColors(t,i){let r=t.uri;return this._worker(r).then(e=>e.findDocumentColors(r.toString())).then(e=>{if(!!e)return e.map(o=>({color:o.color,range:y(o.range)}))})}provideColorPresentations(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.getColorPresentations(e.toString(),i.color,fe(i.range))).then(o=>{if(!!o)return o.map(s=>{let u={label:s.label};return s.textEdit&&(u.textEdit=L(s.textEdit)),s.additionalTextEdits&&(u.additionalTextEdits=s.additionalTextEdits.map(L)),u})})}},U=class{constructor(t){this._worker=t}provideFoldingRanges(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.getFoldingRanges(e.toString(),i)).then(o=>{if(!!o)return o.map(s=>{let u={start:s.startLine+1,end:s.endLine+1};return typeof s.kind<\"u\"&&(u.kind=bn(s.kind)),u})})}};function bn(n){switch(n){case R.Comment:return d.languages.FoldingRangeKind.Comment;case R.Imports:return d.languages.FoldingRangeKind.Imports;case R.Region:return d.languages.FoldingRangeKind.Region}}var j=class{constructor(t){this._worker=t}provideSelectionRanges(t,i,r){let e=t.uri;return this._worker(e).then(o=>o.getSelectionRanges(e.toString(),i.map(C))).then(o=>{if(!!o)return o.map(s=>{let u=[];for(;s;)u.push({range:y(s.range)}),s=s.parent;return u})})}};var re=class extends B{constructor(t){super(t,[\".\",\":\",\"<\",'\"',\"=\",\"/\"])}};function En(n){let t=new b(n),i=(...e)=>t.getLanguageServiceWorker(...e),r=n.languageId;d.languages.registerCompletionItemProvider(r,new re(i)),d.languages.registerHoverProvider(r,new D(i)),d.languages.registerDocumentHighlightProvider(r,new S(i)),d.languages.registerLinkProvider(r,new A(i)),d.languages.registerFoldingRangeProvider(r,new U(i)),d.languages.registerDocumentSymbolProvider(r,new M(i)),d.languages.registerSelectionRangeProvider(r,new j(i)),d.languages.registerRenameProvider(r,new F(i)),r===\"html\"&&(d.languages.registerDocumentFormattingEditProvider(r,new H(i)),d.languages.registerDocumentRangeFormattingEditProvider(r,new K(i)))}function Pn(n){let t=[],i=[],r=new b(n);t.push(r);let e=(...s)=>r.getLanguageServiceWorker(...s);function o(){let{languageId:s,modeConfiguration:u}=n;en(i),u.completionItems&&i.push(d.languages.registerCompletionItemProvider(s,new re(e))),u.hovers&&i.push(d.languages.registerHoverProvider(s,new D(e))),u.documentHighlights&&i.push(d.languages.registerDocumentHighlightProvider(s,new S(e))),u.links&&i.push(d.languages.registerLinkProvider(s,new A(e))),u.documentSymbols&&i.push(d.languages.registerDocumentSymbolProvider(s,new M(e))),u.rename&&i.push(d.languages.registerRenameProvider(s,new F(e))),u.foldingRanges&&i.push(d.languages.registerFoldingRangeProvider(s,new U(e))),u.selectionRanges&&i.push(d.languages.registerSelectionRangeProvider(s,new j(e))),u.documentFormattingEdits&&i.push(d.languages.registerDocumentFormattingEditProvider(s,new H(e))),u.documentRangeFormattingEdits&&i.push(d.languages.registerDocumentRangeFormattingEditProvider(s,new K(e)))}return o(),t.push(Ze(i)),Ze(t)}function Ze(n){return{dispose:()=>en(n)}}function en(n){for(;n.length;)n.pop().dispose()}return cn(Rn);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/language/html/htmlWorker.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/language/html/htmlWorker\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var Xe=Object.defineProperty;var xn=Object.getOwnPropertyDescriptor;var Dn=Object.getOwnPropertyNames;var En=Object.prototype.hasOwnProperty;var Cn=(t,i)=>{for(var o in i)Xe(t,o,{get:i[o],enumerable:!0})},Ln=(t,i,o,n)=>{if(i&&typeof i==\"object\"||typeof i==\"function\")for(let e of Dn(i))!En.call(t,e)&&e!==o&&Xe(t,e,{get:()=>i[e],enumerable:!(n=xn(i,e))||n.enumerable});return t};var Mn=t=>Ln(Xe({},\"__esModule\",{value:!0}),t);var Ri={};Cn(Ri,{HTMLWorker:()=>Je,create:()=>Mi});function Rn(t,i){let o;return i.length===0?o=t:o=t.replace(/\\{(\\d+)\\}/g,(n,e)=>{let a=e[0];return typeof i[a]<\"u\"?i[a]:n}),o}function zn(t,i,...o){return Rn(i,o)}function be(t){return zn}var yt;(function(t){t.MIN_VALUE=-2147483648,t.MAX_VALUE=2147483647})(yt||(yt={}));var Ue;(function(t){t.MIN_VALUE=0,t.MAX_VALUE=2147483647})(Ue||(Ue={}));var X;(function(t){function i(n,e){return n===Number.MAX_VALUE&&(n=Ue.MAX_VALUE),e===Number.MAX_VALUE&&(e=Ue.MAX_VALUE),{line:n,character:e}}t.create=i;function o(n){var e=n;return _.objectLiteral(e)&&_.uinteger(e.line)&&_.uinteger(e.character)}t.is=o})(X||(X={}));var P;(function(t){function i(n,e,a,c){if(_.uinteger(n)&&_.uinteger(e)&&_.uinteger(a)&&_.uinteger(c))return{start:X.create(n,e),end:X.create(a,c)};if(X.is(n)&&X.is(e))return{start:n,end:e};throw new Error(\"Range#create called with invalid arguments[\"+n+\", \"+e+\", \"+a+\", \"+c+\"]\")}t.create=i;function o(n){var e=n;return _.objectLiteral(e)&&X.is(e.start)&&X.is(e.end)}t.is=o})(P||(P={}));var we;(function(t){function i(n,e){return{uri:n,range:e}}t.create=i;function o(n){var e=n;return _.defined(e)&&P.is(e.range)&&(_.string(e.uri)||_.undefined(e.uri))}t.is=o})(we||(we={}));var Tt;(function(t){function i(n,e,a,c){return{targetUri:n,targetRange:e,targetSelectionRange:a,originSelectionRange:c}}t.create=i;function o(n){var e=n;return _.defined(e)&&P.is(e.targetRange)&&_.string(e.targetUri)&&(P.is(e.targetSelectionRange)||_.undefined(e.targetSelectionRange))&&(P.is(e.originSelectionRange)||_.undefined(e.originSelectionRange))}t.is=o})(Tt||(Tt={}));var We;(function(t){function i(n,e,a,c){return{red:n,green:e,blue:a,alpha:c}}t.create=i;function o(n){var e=n;return _.numberRange(e.red,0,1)&&_.numberRange(e.green,0,1)&&_.numberRange(e.blue,0,1)&&_.numberRange(e.alpha,0,1)}t.is=o})(We||(We={}));var $e;(function(t){function i(n,e){return{range:n,color:e}}t.create=i;function o(n){var e=n;return P.is(e.range)&&We.is(e.color)}t.is=o})($e||($e={}));var Qe;(function(t){function i(n,e,a){return{label:n,textEdit:e,additionalTextEdits:a}}t.create=i;function o(n){var e=n;return _.string(e.label)&&(_.undefined(e.textEdit)||Y.is(e))&&(_.undefined(e.additionalTextEdits)||_.typedArray(e.additionalTextEdits,Y.is))}t.is=o})(Qe||(Qe={}));var _e;(function(t){t.Comment=\"comment\",t.Imports=\"imports\",t.Region=\"region\"})(_e||(_e={}));var Ze;(function(t){function i(n,e,a,c,l){var r={startLine:n,endLine:e};return _.defined(a)&&(r.startCharacter=a),_.defined(c)&&(r.endCharacter=c),_.defined(l)&&(r.kind=l),r}t.create=i;function o(n){var e=n;return _.uinteger(e.startLine)&&_.uinteger(e.startLine)&&(_.undefined(e.startCharacter)||_.uinteger(e.startCharacter))&&(_.undefined(e.endCharacter)||_.uinteger(e.endCharacter))&&(_.undefined(e.kind)||_.string(e.kind))}t.is=o})(Ze||(Ze={}));var Ke;(function(t){function i(n,e){return{location:n,message:e}}t.create=i;function o(n){var e=n;return _.defined(e)&&we.is(e.location)&&_.string(e.message)}t.is=o})(Ke||(Ke={}));var kt;(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(kt||(kt={}));var St;(function(t){t.Unnecessary=1,t.Deprecated=2})(St||(St={}));var At;(function(t){function i(o){var n=o;return n!=null&&_.string(n.href)}t.is=i})(At||(At={}));var xe;(function(t){function i(n,e,a,c,l,r){var s={range:n,message:e};return _.defined(a)&&(s.severity=a),_.defined(c)&&(s.code=c),_.defined(l)&&(s.source=l),_.defined(r)&&(s.relatedInformation=r),s}t.create=i;function o(n){var e,a=n;return _.defined(a)&&P.is(a.range)&&_.string(a.message)&&(_.number(a.severity)||_.undefined(a.severity))&&(_.integer(a.code)||_.string(a.code)||_.undefined(a.code))&&(_.undefined(a.codeDescription)||_.string((e=a.codeDescription)===null||e===void 0?void 0:e.href))&&(_.string(a.source)||_.undefined(a.source))&&(_.undefined(a.relatedInformation)||_.typedArray(a.relatedInformation,Ke.is))}t.is=o})(xe||(xe={}));var ye;(function(t){function i(n,e){for(var a=[],c=2;c<arguments.length;c++)a[c-2]=arguments[c];var l={title:n,command:e};return _.defined(a)&&a.length>0&&(l.arguments=a),l}t.create=i;function o(n){var e=n;return _.defined(e)&&_.string(e.title)&&_.string(e.command)}t.is=o})(ye||(ye={}));var Y;(function(t){function i(a,c){return{range:a,newText:c}}t.replace=i;function o(a,c){return{range:{start:a,end:a},newText:c}}t.insert=o;function n(a){return{range:a,newText:\"\"}}t.del=n;function e(a){var c=a;return _.objectLiteral(c)&&_.string(c.newText)&&P.is(c.range)}t.is=e})(Y||(Y={}));var ve;(function(t){function i(n,e,a){var c={label:n};return e!==void 0&&(c.needsConfirmation=e),a!==void 0&&(c.description=a),c}t.create=i;function o(n){var e=n;return e!==void 0&&_.objectLiteral(e)&&_.string(e.label)&&(_.boolean(e.needsConfirmation)||e.needsConfirmation===void 0)&&(_.string(e.description)||e.description===void 0)}t.is=o})(ve||(ve={}));var Z;(function(t){function i(o){var n=o;return typeof n==\"string\"}t.is=i})(Z||(Z={}));var ce;(function(t){function i(a,c,l){return{range:a,newText:c,annotationId:l}}t.replace=i;function o(a,c,l){return{range:{start:a,end:a},newText:c,annotationId:l}}t.insert=o;function n(a,c){return{range:a,newText:\"\",annotationId:c}}t.del=n;function e(a){var c=a;return Y.is(c)&&(ve.is(c.annotationId)||Z.is(c.annotationId))}t.is=e})(ce||(ce={}));var Be;(function(t){function i(n,e){return{textDocument:n,edits:e}}t.create=i;function o(n){var e=n;return _.defined(e)&&Pe.is(e.textDocument)&&Array.isArray(e.edits)}t.is=o})(Be||(Be={}));var De;(function(t){function i(n,e,a){var c={kind:\"create\",uri:n};return e!==void 0&&(e.overwrite!==void 0||e.ignoreIfExists!==void 0)&&(c.options=e),a!==void 0&&(c.annotationId=a),c}t.create=i;function o(n){var e=n;return e&&e.kind===\"create\"&&_.string(e.uri)&&(e.options===void 0||(e.options.overwrite===void 0||_.boolean(e.options.overwrite))&&(e.options.ignoreIfExists===void 0||_.boolean(e.options.ignoreIfExists)))&&(e.annotationId===void 0||Z.is(e.annotationId))}t.is=o})(De||(De={}));var Ee;(function(t){function i(n,e,a,c){var l={kind:\"rename\",oldUri:n,newUri:e};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),c!==void 0&&(l.annotationId=c),l}t.create=i;function o(n){var e=n;return e&&e.kind===\"rename\"&&_.string(e.oldUri)&&_.string(e.newUri)&&(e.options===void 0||(e.options.overwrite===void 0||_.boolean(e.options.overwrite))&&(e.options.ignoreIfExists===void 0||_.boolean(e.options.ignoreIfExists)))&&(e.annotationId===void 0||Z.is(e.annotationId))}t.is=o})(Ee||(Ee={}));var Ce;(function(t){function i(n,e,a){var c={kind:\"delete\",uri:n};return e!==void 0&&(e.recursive!==void 0||e.ignoreIfNotExists!==void 0)&&(c.options=e),a!==void 0&&(c.annotationId=a),c}t.create=i;function o(n){var e=n;return e&&e.kind===\"delete\"&&_.string(e.uri)&&(e.options===void 0||(e.options.recursive===void 0||_.boolean(e.options.recursive))&&(e.options.ignoreIfNotExists===void 0||_.boolean(e.options.ignoreIfNotExists)))&&(e.annotationId===void 0||Z.is(e.annotationId))}t.is=o})(Ce||(Ce={}));var Fe;(function(t){function i(o){var n=o;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(function(e){return _.string(e.kind)?De.is(e)||Ee.is(e)||Ce.is(e):Be.is(e)}))}t.is=i})(Fe||(Fe={}));var Ie=function(){function t(i,o){this.edits=i,this.changeAnnotations=o}return t.prototype.insert=function(i,o,n){var e,a;if(n===void 0?e=Y.insert(i,o):Z.is(n)?(a=n,e=ce.insert(i,o,n)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(n),e=ce.insert(i,o,a)),this.edits.push(e),a!==void 0)return a},t.prototype.replace=function(i,o,n){var e,a;if(n===void 0?e=Y.replace(i,o):Z.is(n)?(a=n,e=ce.replace(i,o,n)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(n),e=ce.replace(i,o,a)),this.edits.push(e),a!==void 0)return a},t.prototype.delete=function(i,o){var n,e;if(o===void 0?n=Y.del(i):Z.is(o)?(e=o,n=ce.del(i,o)):(this.assertChangeAnnotations(this.changeAnnotations),e=this.changeAnnotations.manage(o),n=ce.del(i,e)),this.edits.push(n),e!==void 0)return e},t.prototype.add=function(i){this.edits.push(i)},t.prototype.all=function(){return this.edits},t.prototype.clear=function(){this.edits.splice(0,this.edits.length)},t.prototype.assertChangeAnnotations=function(i){if(i===void 0)throw new Error(\"Text edit change is not configured to manage change annotations.\")},t}(),xt=function(){function t(i){this._annotations=i===void 0?Object.create(null):i,this._counter=0,this._size=0}return t.prototype.all=function(){return this._annotations},Object.defineProperty(t.prototype,\"size\",{get:function(){return this._size},enumerable:!1,configurable:!0}),t.prototype.manage=function(i,o){var n;if(Z.is(i)?n=i:(n=this.nextId(),o=i),this._annotations[n]!==void 0)throw new Error(\"Id \"+n+\" is already in use.\");if(o===void 0)throw new Error(\"No annotation provided for id \"+n);return this._annotations[n]=o,this._size++,n},t.prototype.nextId=function(){return this._counter++,this._counter.toString()},t}(),Hi=function(){function t(i){var o=this;this._textEditChanges=Object.create(null),i!==void 0?(this._workspaceEdit=i,i.documentChanges?(this._changeAnnotations=new xt(i.changeAnnotations),i.changeAnnotations=this._changeAnnotations.all(),i.documentChanges.forEach(function(n){if(Be.is(n)){var e=new Ie(n.edits,o._changeAnnotations);o._textEditChanges[n.textDocument.uri]=e}})):i.changes&&Object.keys(i.changes).forEach(function(n){var e=new Ie(i.changes[n]);o._textEditChanges[n]=e})):this._workspaceEdit={}}return Object.defineProperty(t.prototype,\"edit\",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),t.prototype.getTextEditChange=function(i){if(Pe.is(i)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var o={uri:i.uri,version:i.version},n=this._textEditChanges[o.uri];if(!n){var e=[],a={textDocument:o,edits:e};this._workspaceEdit.documentChanges.push(a),n=new Ie(e,this._changeAnnotations),this._textEditChanges[o.uri]=n}return n}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error(\"Workspace edit is not configured for normal text edit changes.\");var n=this._textEditChanges[i];if(!n){var e=[];this._workspaceEdit.changes[i]=e,n=new Ie(e),this._textEditChanges[i]=n}return n}},t.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new xt,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},t.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},t.prototype.createFile=function(i,o,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var e;ve.is(o)||Z.is(o)?e=o:n=o;var a,c;if(e===void 0?a=De.create(i,n):(c=Z.is(e)?e:this._changeAnnotations.manage(e),a=De.create(i,n,c)),this._workspaceEdit.documentChanges.push(a),c!==void 0)return c},t.prototype.renameFile=function(i,o,n,e){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var a;ve.is(n)||Z.is(n)?a=n:e=n;var c,l;if(a===void 0?c=Ee.create(i,o,e):(l=Z.is(a)?a:this._changeAnnotations.manage(a),c=Ee.create(i,o,e,l)),this._workspaceEdit.documentChanges.push(c),l!==void 0)return l},t.prototype.deleteFile=function(i,o,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var e;ve.is(o)||Z.is(o)?e=o:n=o;var a,c;if(e===void 0?a=Ce.create(i,n):(c=Z.is(e)?e:this._changeAnnotations.manage(e),a=Ce.create(i,n,c)),this._workspaceEdit.documentChanges.push(a),c!==void 0)return c},t}();var Dt;(function(t){function i(n){return{uri:n}}t.create=i;function o(n){var e=n;return _.defined(e)&&_.string(e.uri)}t.is=o})(Dt||(Dt={}));var Et;(function(t){function i(n,e){return{uri:n,version:e}}t.create=i;function o(n){var e=n;return _.defined(e)&&_.string(e.uri)&&_.integer(e.version)}t.is=o})(Et||(Et={}));var Pe;(function(t){function i(n,e){return{uri:n,version:e}}t.create=i;function o(n){var e=n;return _.defined(e)&&_.string(e.uri)&&(e.version===null||_.integer(e.version))}t.is=o})(Pe||(Pe={}));var Ct;(function(t){function i(n,e,a,c){return{uri:n,languageId:e,version:a,text:c}}t.create=i;function o(n){var e=n;return _.defined(e)&&_.string(e.uri)&&_.string(e.languageId)&&_.integer(e.version)&&_.string(e.text)}t.is=o})(Ct||(Ct={}));var ee;(function(t){t.PlainText=\"plaintext\",t.Markdown=\"markdown\"})(ee||(ee={}));(function(t){function i(o){var n=o;return n===t.PlainText||n===t.Markdown}t.is=i})(ee||(ee={}));var Ne;(function(t){function i(o){var n=o;return _.objectLiteral(o)&&ee.is(n.kind)&&_.string(n.value)}t.is=i})(Ne||(Ne={}));var Q;(function(t){t.Text=1,t.Method=2,t.Function=3,t.Constructor=4,t.Field=5,t.Variable=6,t.Class=7,t.Interface=8,t.Module=9,t.Property=10,t.Unit=11,t.Value=12,t.Enum=13,t.Keyword=14,t.Snippet=15,t.Color=16,t.File=17,t.Reference=18,t.Folder=19,t.EnumMember=20,t.Constant=21,t.Struct=22,t.Event=23,t.Operator=24,t.TypeParameter=25})(Q||(Q={}));var ne;(function(t){t.PlainText=1,t.Snippet=2})(ne||(ne={}));var et;(function(t){t.Deprecated=1})(et||(et={}));var tt;(function(t){function i(n,e,a){return{newText:n,insert:e,replace:a}}t.create=i;function o(n){var e=n;return e&&_.string(e.newText)&&P.is(e.insert)&&P.is(e.replace)}t.is=o})(tt||(tt={}));var nt;(function(t){t.asIs=1,t.adjustIndentation=2})(nt||(nt={}));var it;(function(t){function i(o){return{label:o}}t.create=i})(it||(it={}));var rt;(function(t){function i(o,n){return{items:o||[],isIncomplete:!!n}}t.create=i})(rt||(rt={}));var Le;(function(t){function i(n){return n.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g,\"\\\\$&\")}t.fromPlainText=i;function o(n){var e=n;return _.string(e)||_.objectLiteral(e)&&_.string(e.language)&&_.string(e.value)}t.is=o})(Le||(Le={}));var at;(function(t){function i(o){var n=o;return!!n&&_.objectLiteral(n)&&(Ne.is(n.contents)||Le.is(n.contents)||_.typedArray(n.contents,Le.is))&&(o.range===void 0||P.is(o.range))}t.is=i})(at||(at={}));var Lt;(function(t){function i(o,n){return n?{label:o,documentation:n}:{label:o}}t.create=i})(Lt||(Lt={}));var Mt;(function(t){function i(o,n){for(var e=[],a=2;a<arguments.length;a++)e[a-2]=arguments[a];var c={label:o};return _.defined(n)&&(c.documentation=n),_.defined(e)?c.parameters=e:c.parameters=[],c}t.create=i})(Mt||(Mt={}));var Te;(function(t){t.Text=1,t.Read=2,t.Write=3})(Te||(Te={}));var ot;(function(t){function i(o,n){var e={range:o};return _.number(n)&&(e.kind=n),e}t.create=i})(ot||(ot={}));var Me;(function(t){t.File=1,t.Module=2,t.Namespace=3,t.Package=4,t.Class=5,t.Method=6,t.Property=7,t.Field=8,t.Constructor=9,t.Enum=10,t.Interface=11,t.Function=12,t.Variable=13,t.Constant=14,t.String=15,t.Number=16,t.Boolean=17,t.Array=18,t.Object=19,t.Key=20,t.Null=21,t.EnumMember=22,t.Struct=23,t.Event=24,t.Operator=25,t.TypeParameter=26})(Me||(Me={}));var Rt;(function(t){t.Deprecated=1})(Rt||(Rt={}));var st;(function(t){function i(o,n,e,a,c){var l={name:o,kind:n,location:{uri:a,range:e}};return c&&(l.containerName=c),l}t.create=i})(st||(st={}));var zt;(function(t){function i(n,e,a,c,l,r){var s={name:n,detail:e,kind:a,range:c,selectionRange:l};return r!==void 0&&(s.children=r),s}t.create=i;function o(n){var e=n;return e&&_.string(e.name)&&_.number(e.kind)&&P.is(e.range)&&P.is(e.selectionRange)&&(e.detail===void 0||_.string(e.detail))&&(e.deprecated===void 0||_.boolean(e.deprecated))&&(e.children===void 0||Array.isArray(e.children))&&(e.tags===void 0||Array.isArray(e.tags))}t.is=o})(zt||(zt={}));var Ht;(function(t){t.Empty=\"\",t.QuickFix=\"quickfix\",t.Refactor=\"refactor\",t.RefactorExtract=\"refactor.extract\",t.RefactorInline=\"refactor.inline\",t.RefactorRewrite=\"refactor.rewrite\",t.Source=\"source\",t.SourceOrganizeImports=\"source.organizeImports\",t.SourceFixAll=\"source.fixAll\"})(Ht||(Ht={}));var It;(function(t){function i(n,e){var a={diagnostics:n};return e!=null&&(a.only=e),a}t.create=i;function o(n){var e=n;return _.defined(e)&&_.typedArray(e.diagnostics,xe.is)&&(e.only===void 0||_.typedArray(e.only,_.string))}t.is=o})(It||(It={}));var Ut;(function(t){function i(n,e,a){var c={title:n},l=!0;return typeof e==\"string\"?(l=!1,c.kind=e):ye.is(e)?c.command=e:c.edit=e,l&&a!==void 0&&(c.kind=a),c}t.create=i;function o(n){var e=n;return e&&_.string(e.title)&&(e.diagnostics===void 0||_.typedArray(e.diagnostics,xe.is))&&(e.kind===void 0||_.string(e.kind))&&(e.edit!==void 0||e.command!==void 0)&&(e.command===void 0||ye.is(e.command))&&(e.isPreferred===void 0||_.boolean(e.isPreferred))&&(e.edit===void 0||Fe.is(e.edit))}t.is=o})(Ut||(Ut={}));var Wt;(function(t){function i(n,e){var a={range:n};return _.defined(e)&&(a.data=e),a}t.create=i;function o(n){var e=n;return _.defined(e)&&P.is(e.range)&&(_.undefined(e.command)||ye.is(e.command))}t.is=o})(Wt||(Wt={}));var lt;(function(t){function i(n,e){return{tabSize:n,insertSpaces:e}}t.create=i;function o(n){var e=n;return _.defined(e)&&_.uinteger(e.tabSize)&&_.boolean(e.insertSpaces)}t.is=o})(lt||(lt={}));var ut;(function(t){function i(n,e,a){return{range:n,target:e,data:a}}t.create=i;function o(n){var e=n;return _.defined(e)&&P.is(e.range)&&(_.undefined(e.target)||_.string(e.target))}t.is=o})(ut||(ut={}));var ke;(function(t){function i(n,e){return{range:n,parent:e}}t.create=i;function o(n){var e=n;return e!==void 0&&P.is(e.range)&&(e.parent===void 0||t.is(e.parent))}t.is=o})(ke||(ke={}));var Bt;(function(t){function i(a,c,l,r){return new Hn(a,c,l,r)}t.create=i;function o(a){var c=a;return!!(_.defined(c)&&_.string(c.uri)&&(_.undefined(c.languageId)||_.string(c.languageId))&&_.uinteger(c.lineCount)&&_.func(c.getText)&&_.func(c.positionAt)&&_.func(c.offsetAt))}t.is=o;function n(a,c){for(var l=a.getText(),r=e(c,function(y,m){var A=y.range.start.line-m.range.start.line;return A===0?y.range.start.character-m.range.start.character:A}),s=l.length,u=r.length-1;u>=0;u--){var h=r[u],d=a.offsetAt(h.range.start),g=a.offsetAt(h.range.end);if(g<=s)l=l.substring(0,d)+h.newText+l.substring(g,l.length);else throw new Error(\"Overlapping edit\");s=d}return l}t.applyEdits=n;function e(a,c){if(a.length<=1)return a;var l=a.length/2|0,r=a.slice(0,l),s=a.slice(l);e(r,c),e(s,c);for(var u=0,h=0,d=0;u<r.length&&h<s.length;){var g=c(r[u],s[h]);g<=0?a[d++]=r[u++]:a[d++]=s[h++]}for(;u<r.length;)a[d++]=r[u++];for(;h<s.length;)a[d++]=s[h++];return a}})(Bt||(Bt={}));var Hn=function(){function t(i,o,n,e){this._uri=i,this._languageId=o,this._version=n,this._content=e,this._lineOffsets=void 0}return Object.defineProperty(t.prototype,\"uri\",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"languageId\",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"version\",{get:function(){return this._version},enumerable:!1,configurable:!0}),t.prototype.getText=function(i){if(i){var o=this.offsetAt(i.start),n=this.offsetAt(i.end);return this._content.substring(o,n)}return this._content},t.prototype.update=function(i,o){this._content=i.text,this._version=o,this._lineOffsets=void 0},t.prototype.getLineOffsets=function(){if(this._lineOffsets===void 0){for(var i=[],o=this._content,n=!0,e=0;e<o.length;e++){n&&(i.push(e),n=!1);var a=o.charAt(e);n=a===\"\\r\"||a===`\n`,a===\"\\r\"&&e+1<o.length&&o.charAt(e+1)===`\n`&&e++}n&&o.length>0&&i.push(o.length),this._lineOffsets=i}return this._lineOffsets},t.prototype.positionAt=function(i){i=Math.max(Math.min(i,this._content.length),0);var o=this.getLineOffsets(),n=0,e=o.length;if(e===0)return X.create(0,i);for(;n<e;){var a=Math.floor((n+e)/2);o[a]>i?e=a:n=a+1}var c=n-1;return X.create(c,i-o[c])},t.prototype.offsetAt=function(i){var o=this.getLineOffsets();if(i.line>=o.length)return this._content.length;if(i.line<0)return 0;var n=o[i.line],e=i.line+1<o.length?o[i.line+1]:this._content.length;return Math.max(Math.min(n+i.character,e),n)},Object.defineProperty(t.prototype,\"lineCount\",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),t}(),_;(function(t){var i=Object.prototype.toString;function o(g){return typeof g<\"u\"}t.defined=o;function n(g){return typeof g>\"u\"}t.undefined=n;function e(g){return g===!0||g===!1}t.boolean=e;function a(g){return i.call(g)===\"[object String]\"}t.string=a;function c(g){return i.call(g)===\"[object Number]\"}t.number=c;function l(g,y,m){return i.call(g)===\"[object Number]\"&&y<=g&&g<=m}t.numberRange=l;function r(g){return i.call(g)===\"[object Number]\"&&-2147483648<=g&&g<=2147483647}t.integer=r;function s(g){return i.call(g)===\"[object Number]\"&&0<=g&&g<=2147483647}t.uinteger=s;function u(g){return i.call(g)===\"[object Function]\"}t.func=u;function h(g){return g!==null&&typeof g==\"object\"}t.objectLiteral=h;function d(g,y){return Array.isArray(g)&&g.every(y)}t.typedArray=d})(_||(_={}));var pe=class{constructor(i,o,n,e){this._uri=i,this._languageId=o,this._version=n,this._content=e,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(i){if(i){let o=this.offsetAt(i.start),n=this.offsetAt(i.end);return this._content.substring(o,n)}return this._content}update(i,o){for(let n of i)if(pe.isIncremental(n)){let e=Pt(n.range),a=this.offsetAt(e.start),c=this.offsetAt(e.end);this._content=this._content.substring(0,a)+n.text+this._content.substring(c,this._content.length);let l=Math.max(e.start.line,0),r=Math.max(e.end.line,0),s=this._lineOffsets,u=Ft(n.text,!1,a);if(r-l===u.length)for(let d=0,g=u.length;d<g;d++)s[d+l+1]=u[d];else u.length<1e4?s.splice(l+1,r-l,...u):this._lineOffsets=s=s.slice(0,l+1).concat(u,s.slice(r+1));let h=n.text.length-(c-a);if(h!==0)for(let d=l+1+u.length,g=s.length;d<g;d++)s[d]=s[d]+h}else if(pe.isFull(n))this._content=n.text,this._lineOffsets=void 0;else throw new Error(\"Unknown change event received\");this._version=o}getLineOffsets(){return this._lineOffsets===void 0&&(this._lineOffsets=Ft(this._content,!0)),this._lineOffsets}positionAt(i){i=Math.max(Math.min(i,this._content.length),0);let o=this.getLineOffsets(),n=0,e=o.length;if(e===0)return{line:0,character:i};for(;n<e;){let c=Math.floor((n+e)/2);o[c]>i?e=c:n=c+1}let a=n-1;return{line:a,character:i-o[a]}}offsetAt(i){let o=this.getLineOffsets();if(i.line>=o.length)return this._content.length;if(i.line<0)return 0;let n=o[i.line],e=i.line+1<o.length?o[i.line+1]:this._content.length;return Math.max(Math.min(n+i.character,e),n)}get lineCount(){return this.getLineOffsets().length}static isIncremental(i){let o=i;return o!=null&&typeof o.text==\"string\"&&o.range!==void 0&&(o.rangeLength===void 0||typeof o.rangeLength==\"number\")}static isFull(i){let o=i;return o!=null&&typeof o.text==\"string\"&&o.range===void 0&&o.rangeLength===void 0}},Re;(function(t){function i(e,a,c,l){return new pe(e,a,c,l)}t.create=i;function o(e,a,c){if(e instanceof pe)return e.update(a,c),e;throw new Error(\"TextDocument.update: document must be created by TextDocument.create\")}t.update=o;function n(e,a){let c=e.getText(),l=ct(a.map(In),(u,h)=>{let d=u.range.start.line-h.range.start.line;return d===0?u.range.start.character-h.range.start.character:d}),r=0,s=[];for(let u of l){let h=e.offsetAt(u.range.start);if(h<r)throw new Error(\"Overlapping edit\");h>r&&s.push(c.substring(r,h)),u.newText.length&&s.push(u.newText),r=e.offsetAt(u.range.end)}return s.push(c.substr(r)),s.join(\"\")}t.applyEdits=n})(Re||(Re={}));function ct(t,i){if(t.length<=1)return t;let o=t.length/2|0,n=t.slice(0,o),e=t.slice(o);ct(n,i),ct(e,i);let a=0,c=0,l=0;for(;a<n.length&&c<e.length;)i(n[a],e[c])<=0?t[l++]=n[a++]:t[l++]=e[c++];for(;a<n.length;)t[l++]=n[a++];for(;c<e.length;)t[l++]=e[c++];return t}function Ft(t,i,o=0){let n=i?[o]:[];for(let e=0;e<t.length;e++){let a=t.charCodeAt(e);(a===13||a===10)&&(a===13&&e+1<t.length&&t.charCodeAt(e+1)===10&&e++,n.push(o+e+1))}return n}function Pt(t){let i=t.start,o=t.end;return i.line>o.line||i.line===o.line&&i.character>o.character?{start:o,end:i}:t}function In(t){let i=Pt(t.range);return i!==t.range?{newText:t.newText,range:i}:t}var S;(function(t){t[t.StartCommentTag=0]=\"StartCommentTag\",t[t.Comment=1]=\"Comment\",t[t.EndCommentTag=2]=\"EndCommentTag\",t[t.StartTagOpen=3]=\"StartTagOpen\",t[t.StartTagClose=4]=\"StartTagClose\",t[t.StartTagSelfClose=5]=\"StartTagSelfClose\",t[t.StartTag=6]=\"StartTag\",t[t.EndTagOpen=7]=\"EndTagOpen\",t[t.EndTagClose=8]=\"EndTagClose\",t[t.EndTag=9]=\"EndTag\",t[t.DelimiterAssign=10]=\"DelimiterAssign\",t[t.AttributeName=11]=\"AttributeName\",t[t.AttributeValue=12]=\"AttributeValue\",t[t.StartDoctypeTag=13]=\"StartDoctypeTag\",t[t.Doctype=14]=\"Doctype\",t[t.EndDoctypeTag=15]=\"EndDoctypeTag\",t[t.Content=16]=\"Content\",t[t.Whitespace=17]=\"Whitespace\",t[t.Unknown=18]=\"Unknown\",t[t.Script=19]=\"Script\",t[t.Styles=20]=\"Styles\",t[t.EOS=21]=\"EOS\"})(S||(S={}));var W;(function(t){t[t.WithinContent=0]=\"WithinContent\",t[t.AfterOpeningStartTag=1]=\"AfterOpeningStartTag\",t[t.AfterOpeningEndTag=2]=\"AfterOpeningEndTag\",t[t.WithinDoctype=3]=\"WithinDoctype\",t[t.WithinTag=4]=\"WithinTag\",t[t.WithinEndTag=5]=\"WithinEndTag\",t[t.WithinComment=6]=\"WithinComment\",t[t.WithinScriptContent=7]=\"WithinScriptContent\",t[t.WithinStyleContent=8]=\"WithinStyleContent\",t[t.AfterAttributeName=9]=\"AfterAttributeName\",t[t.BeforeAttributeValue=10]=\"BeforeAttributeValue\"})(W||(W={}));var Nt;(function(t){t.LATEST={textDocument:{completion:{completionItem:{documentationFormat:[ee.Markdown,ee.PlainText]}},hover:{contentFormat:[ee.Markdown,ee.PlainText]}}}})(Nt||(Nt={}));var Oe;(function(t){t[t.Unknown=0]=\"Unknown\",t[t.File=1]=\"File\",t[t.Directory=2]=\"Directory\",t[t.SymbolicLink=64]=\"SymbolicLink\"})(Oe||(Oe={}));var he=be(),Un=function(){function t(i,o){this.source=i,this.len=i.length,this.position=o}return t.prototype.eos=function(){return this.len<=this.position},t.prototype.getSource=function(){return this.source},t.prototype.pos=function(){return this.position},t.prototype.goBackTo=function(i){this.position=i},t.prototype.goBack=function(i){this.position-=i},t.prototype.advance=function(i){this.position+=i},t.prototype.goToEnd=function(){this.position=this.source.length},t.prototype.nextChar=function(){return this.source.charCodeAt(this.position++)||0},t.prototype.peekChar=function(i){return i===void 0&&(i=0),this.source.charCodeAt(this.position+i)||0},t.prototype.advanceIfChar=function(i){return i===this.source.charCodeAt(this.position)?(this.position++,!0):!1},t.prototype.advanceIfChars=function(i){var o;if(this.position+i.length>this.source.length)return!1;for(o=0;o<i.length;o++)if(this.source.charCodeAt(this.position+o)!==i[o])return!1;return this.advance(o),!0},t.prototype.advanceIfRegExp=function(i){var o=this.source.substr(this.position),n=o.match(i);return n?(this.position=this.position+n.index+n[0].length,n[0]):\"\"},t.prototype.advanceUntilRegExp=function(i){var o=this.source.substr(this.position),n=o.match(i);return n?(this.position=this.position+n.index,n[0]):(this.goToEnd(),\"\")},t.prototype.advanceUntilChar=function(i){for(;this.position<this.source.length;){if(this.source.charCodeAt(this.position)===i)return!0;this.advance(1)}return!1},t.prototype.advanceUntilChars=function(i){for(;this.position+i.length<=this.source.length;){for(var o=0;o<i.length&&this.source.charCodeAt(this.position+o)===i[o];o++);if(o===i.length)return!0;this.advance(1)}return this.goToEnd(),!1},t.prototype.skipWhitespace=function(){var i=this.advanceWhileChar(function(o){return o===qn||o===jn||o===Pn||o===On||o===Nn});return i>0},t.prototype.advanceWhileChar=function(i){for(var o=this.position;this.position<this.len&&i(this.source.charCodeAt(this.position));)this.position++;return this.position-o},t}(),Ot=\"!\".charCodeAt(0),Se=\"-\".charCodeAt(0),qe=\"<\".charCodeAt(0),se=\">\".charCodeAt(0),ht=\"/\".charCodeAt(0),Wn=\"=\".charCodeAt(0),Bn='\"'.charCodeAt(0),Fn=\"'\".charCodeAt(0),Pn=`\n`.charCodeAt(0),Nn=\"\\r\".charCodeAt(0),On=\"\\f\".charCodeAt(0),qn=\" \".charCodeAt(0),jn=\"\t\".charCodeAt(0),Gn={\"text/x-handlebars-template\":!0,\"text/html\":!0};function $(t,i,o,n){i===void 0&&(i=0),o===void 0&&(o=W.WithinContent),n===void 0&&(n=!1);var e=new Un(t,i),a=o,c=0,l=S.Unknown,r,s,u,h,d;function g(){return e.advanceIfRegExp(/^[_:\\w][_:\\w-.\\d]*/).toLowerCase()}function y(){return e.advanceIfRegExp(/^[^\\s\"'></=\\x00-\\x0F\\x7F\\x80-\\x9F]*/).toLowerCase()}function m(w,M,B){return l=M,c=w,r=B,M}function A(){var w=e.pos(),M=a,B=E();return B!==S.EOS&&w===e.pos()&&!(n&&(B===S.StartTagClose||B===S.EndTagClose))?(console.log(\"Scanner.scan has not advanced at offset \"+w+\", state before: \"+M+\" after: \"+a),e.advance(1),m(w,S.Unknown)):B}function E(){var w=e.pos();if(e.eos())return m(w,S.EOS);var M;switch(a){case W.WithinComment:return e.advanceIfChars([Se,Se,se])?(a=W.WithinContent,m(w,S.EndCommentTag)):(e.advanceUntilChars([Se,Se,se]),m(w,S.Comment));case W.WithinDoctype:return e.advanceIfChar(se)?(a=W.WithinContent,m(w,S.EndDoctypeTag)):(e.advanceUntilChar(se),m(w,S.Doctype));case W.WithinContent:if(e.advanceIfChar(qe)){if(!e.eos()&&e.peekChar()===Ot){if(e.advanceIfChars([Ot,Se,Se]))return a=W.WithinComment,m(w,S.StartCommentTag);if(e.advanceIfRegExp(/^!doctype/i))return a=W.WithinDoctype,m(w,S.StartDoctypeTag)}return e.advanceIfChar(ht)?(a=W.AfterOpeningEndTag,m(w,S.EndTagOpen)):(a=W.AfterOpeningStartTag,m(w,S.StartTagOpen))}return e.advanceUntilChar(qe),m(w,S.Content);case W.AfterOpeningEndTag:var B=g();return B.length>0?(a=W.WithinEndTag,m(w,S.EndTag)):e.skipWhitespace()?m(w,S.Whitespace,he(\"error.unexpectedWhitespace\",\"Tag name must directly follow the open bracket.\")):(a=W.WithinEndTag,e.advanceUntilChar(se),w<e.pos()?m(w,S.Unknown,he(\"error.endTagNameExpected\",\"End tag name expected.\")):E());case W.WithinEndTag:if(e.skipWhitespace())return m(w,S.Whitespace);if(e.advanceIfChar(se))return a=W.WithinContent,m(w,S.EndTagClose);if(n&&e.peekChar()===qe)return a=W.WithinContent,m(w,S.EndTagClose,he(\"error.closingBracketMissing\",\"Closing bracket missing.\"));M=he(\"error.closingBracketExpected\",\"Closing bracket expected.\");break;case W.AfterOpeningStartTag:return u=g(),d=void 0,h=void 0,u.length>0?(s=!1,a=W.WithinTag,m(w,S.StartTag)):e.skipWhitespace()?m(w,S.Whitespace,he(\"error.unexpectedWhitespace\",\"Tag name must directly follow the open bracket.\")):(a=W.WithinTag,e.advanceUntilChar(se),w<e.pos()?m(w,S.Unknown,he(\"error.startTagNameExpected\",\"Start tag name expected.\")):E());case W.WithinTag:return e.skipWhitespace()?(s=!0,m(w,S.Whitespace)):s&&(h=y(),h.length>0)?(a=W.AfterAttributeName,s=!1,m(w,S.AttributeName)):e.advanceIfChars([ht,se])?(a=W.WithinContent,m(w,S.StartTagSelfClose)):e.advanceIfChar(se)?(u===\"script\"?d&&Gn[d]?a=W.WithinContent:a=W.WithinScriptContent:u===\"style\"?a=W.WithinStyleContent:a=W.WithinContent,m(w,S.StartTagClose)):n&&e.peekChar()===qe?(a=W.WithinContent,m(w,S.StartTagClose,he(\"error.closingBracketMissing\",\"Closing bracket missing.\"))):(e.advance(1),m(w,S.Unknown,he(\"error.unexpectedCharacterInTag\",\"Unexpected character in tag.\")));case W.AfterAttributeName:return e.skipWhitespace()?(s=!0,m(w,S.Whitespace)):e.advanceIfChar(Wn)?(a=W.BeforeAttributeValue,m(w,S.DelimiterAssign)):(a=W.WithinTag,E());case W.BeforeAttributeValue:if(e.skipWhitespace())return m(w,S.Whitespace);var G=e.advanceIfRegExp(/^[^\\s\"'`=<>]+/);if(G.length>0)return e.peekChar()===se&&e.peekChar(-1)===ht&&(e.goBack(1),G=G.substr(0,G.length-1)),h===\"type\"&&(d=G),a=W.WithinTag,s=!1,m(w,S.AttributeValue);var J=e.peekChar();return J===Fn||J===Bn?(e.advance(1),e.advanceUntilChar(J)&&e.advance(1),h===\"type\"&&(d=e.getSource().substring(w+1,e.pos()-1)),a=W.WithinTag,s=!1,m(w,S.AttributeValue)):(a=W.WithinTag,s=!1,E());case W.WithinScriptContent:for(var f=1;!e.eos();){var p=e.advanceIfRegExp(/<!--|-->|<\\/?script\\s*\\/?>?/i);if(p.length===0)return e.goToEnd(),m(w,S.Script);if(p===\"<!--\")f===1&&(f=2);else if(p===\"-->\")f=1;else if(p[1]!==\"/\")f===2&&(f=3);else if(f===3)f=2;else{e.goBack(p.length);break}}return a=W.WithinContent,w<e.pos()?m(w,S.Script):E();case W.WithinStyleContent:return e.advanceUntilRegExp(/<\\/style/i),a=W.WithinContent,w<e.pos()?m(w,S.Styles):E()}return e.advance(1),a=W.WithinContent,m(w,S.Unknown,M)}return{scan:A,getTokenType:function(){return l},getTokenOffset:function(){return c},getTokenLength:function(){return e.pos()-c},getTokenEnd:function(){return e.pos()},getTokenText:function(){return e.getSource().substring(c,e.pos())},getScannerState:function(){return a},getTokenError:function(){return r}}}function dt(t,i){var o=0,n=t.length;if(n===0)return 0;for(;o<n;){var e=Math.floor((o+n)/2);i(t[e])?n=e:o=e+1}return o}function qt(t,i,o){for(var n=0,e=t.length-1;n<=e;){var a=(n+e)/2|0,c=o(t[a],i);if(c<0)n=a+1;else if(c>0)e=a-1;else return a}return-(n+1)}var Jn=[\"area\",\"base\",\"br\",\"col\",\"embed\",\"hr\",\"img\",\"input\",\"keygen\",\"link\",\"menuitem\",\"meta\",\"param\",\"source\",\"track\",\"wbr\"];function me(t){return!!t&&qt(Jn,t.toLowerCase(),function(i,o){return i.localeCompare(o)})>=0}var jt=function(){function t(i,o,n,e){this.start=i,this.end=o,this.children=n,this.parent=e,this.closed=!1}return Object.defineProperty(t.prototype,\"attributeNames\",{get:function(){return this.attributes?Object.keys(this.attributes):[]},enumerable:!1,configurable:!0}),t.prototype.isSameTag=function(i){return this.tag===void 0?i===void 0:i!==void 0&&this.tag.length===i.length&&this.tag.toLowerCase()===i},Object.defineProperty(t.prototype,\"firstChild\",{get:function(){return this.children[0]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"lastChild\",{get:function(){return this.children.length?this.children[this.children.length-1]:void 0},enumerable:!1,configurable:!0}),t.prototype.findNodeBefore=function(i){var o=dt(this.children,function(a){return i<=a.start})-1;if(o>=0){var n=this.children[o];if(i>n.start){if(i<n.end)return n.findNodeBefore(i);var e=n.lastChild;return e&&e.end===n.end?n.findNodeBefore(i):n}}return this},t.prototype.findNodeAt=function(i){var o=dt(this.children,function(e){return i<=e.start})-1;if(o>=0){var n=this.children[o];if(i>n.start&&i<=n.end)return n.findNodeAt(i)}return this},t}();function je(t){for(var i=$(t,void 0,void 0,!0),o=new jt(0,t.length,[],void 0),n=o,e=-1,a=void 0,c=null,l=i.scan();l!==S.EOS;){switch(l){case S.StartTagOpen:var r=new jt(i.getTokenOffset(),t.length,[],n);n.children.push(r),n=r;break;case S.StartTag:n.tag=i.getTokenText();break;case S.StartTagClose:n.parent&&(n.end=i.getTokenEnd(),i.getTokenLength()?(n.startTagEnd=i.getTokenEnd(),n.tag&&me(n.tag)&&(n.closed=!0,n=n.parent)):n=n.parent);break;case S.StartTagSelfClose:n.parent&&(n.closed=!0,n.end=i.getTokenEnd(),n.startTagEnd=i.getTokenEnd(),n=n.parent);break;case S.EndTagOpen:e=i.getTokenOffset(),a=void 0;break;case S.EndTag:a=i.getTokenText().toLowerCase();break;case S.EndTagClose:for(var s=n;!s.isSameTag(a)&&s.parent;)s=s.parent;if(s.parent){for(;n!==s;)n.end=e,n.closed=!1,n=n.parent;n.closed=!0,n.endTagStart=e,n.end=i.getTokenEnd(),n=n.parent}break;case S.AttributeName:{c=i.getTokenText();var u=n.attributes;u||(n.attributes=u={}),u[c]=null;break}case S.AttributeValue:{var h=i.getTokenText(),u=n.attributes;u&&c&&(u[c]=h,c=null);break}}l=i.scan()}for(;n.parent;)n.end=t.length,n.closed=!1,n=n.parent;return{roots:o.children,findNodeBefore:o.findNodeBefore.bind(o),findNodeAt:o.findNodeAt.bind(o)}}var fe={\"Aacute;\":\"\\xC1\",Aacute:\"\\xC1\",\"aacute;\":\"\\xE1\",aacute:\"\\xE1\",\"Abreve;\":\"\\u0102\",\"abreve;\":\"\\u0103\",\"ac;\":\"\\u223E\",\"acd;\":\"\\u223F\",\"acE;\":\"\\u223E\\u0333\",\"Acirc;\":\"\\xC2\",Acirc:\"\\xC2\",\"acirc;\":\"\\xE2\",acirc:\"\\xE2\",\"acute;\":\"\\xB4\",acute:\"\\xB4\",\"Acy;\":\"\\u0410\",\"acy;\":\"\\u0430\",\"AElig;\":\"\\xC6\",AElig:\"\\xC6\",\"aelig;\":\"\\xE6\",aelig:\"\\xE6\",\"af;\":\"\\u2061\",\"Afr;\":\"\\u{1D504}\",\"afr;\":\"\\u{1D51E}\",\"Agrave;\":\"\\xC0\",Agrave:\"\\xC0\",\"agrave;\":\"\\xE0\",agrave:\"\\xE0\",\"alefsym;\":\"\\u2135\",\"aleph;\":\"\\u2135\",\"Alpha;\":\"\\u0391\",\"alpha;\":\"\\u03B1\",\"Amacr;\":\"\\u0100\",\"amacr;\":\"\\u0101\",\"amalg;\":\"\\u2A3F\",\"AMP;\":\"&\",AMP:\"&\",\"amp;\":\"&\",amp:\"&\",\"And;\":\"\\u2A53\",\"and;\":\"\\u2227\",\"andand;\":\"\\u2A55\",\"andd;\":\"\\u2A5C\",\"andslope;\":\"\\u2A58\",\"andv;\":\"\\u2A5A\",\"ang;\":\"\\u2220\",\"ange;\":\"\\u29A4\",\"angle;\":\"\\u2220\",\"angmsd;\":\"\\u2221\",\"angmsdaa;\":\"\\u29A8\",\"angmsdab;\":\"\\u29A9\",\"angmsdac;\":\"\\u29AA\",\"angmsdad;\":\"\\u29AB\",\"angmsdae;\":\"\\u29AC\",\"angmsdaf;\":\"\\u29AD\",\"angmsdag;\":\"\\u29AE\",\"angmsdah;\":\"\\u29AF\",\"angrt;\":\"\\u221F\",\"angrtvb;\":\"\\u22BE\",\"angrtvbd;\":\"\\u299D\",\"angsph;\":\"\\u2222\",\"angst;\":\"\\xC5\",\"angzarr;\":\"\\u237C\",\"Aogon;\":\"\\u0104\",\"aogon;\":\"\\u0105\",\"Aopf;\":\"\\u{1D538}\",\"aopf;\":\"\\u{1D552}\",\"ap;\":\"\\u2248\",\"apacir;\":\"\\u2A6F\",\"apE;\":\"\\u2A70\",\"ape;\":\"\\u224A\",\"apid;\":\"\\u224B\",\"apos;\":\"'\",\"ApplyFunction;\":\"\\u2061\",\"approx;\":\"\\u2248\",\"approxeq;\":\"\\u224A\",\"Aring;\":\"\\xC5\",Aring:\"\\xC5\",\"aring;\":\"\\xE5\",aring:\"\\xE5\",\"Ascr;\":\"\\u{1D49C}\",\"ascr;\":\"\\u{1D4B6}\",\"Assign;\":\"\\u2254\",\"ast;\":\"*\",\"asymp;\":\"\\u2248\",\"asympeq;\":\"\\u224D\",\"Atilde;\":\"\\xC3\",Atilde:\"\\xC3\",\"atilde;\":\"\\xE3\",atilde:\"\\xE3\",\"Auml;\":\"\\xC4\",Auml:\"\\xC4\",\"auml;\":\"\\xE4\",auml:\"\\xE4\",\"awconint;\":\"\\u2233\",\"awint;\":\"\\u2A11\",\"backcong;\":\"\\u224C\",\"backepsilon;\":\"\\u03F6\",\"backprime;\":\"\\u2035\",\"backsim;\":\"\\u223D\",\"backsimeq;\":\"\\u22CD\",\"Backslash;\":\"\\u2216\",\"Barv;\":\"\\u2AE7\",\"barvee;\":\"\\u22BD\",\"Barwed;\":\"\\u2306\",\"barwed;\":\"\\u2305\",\"barwedge;\":\"\\u2305\",\"bbrk;\":\"\\u23B5\",\"bbrktbrk;\":\"\\u23B6\",\"bcong;\":\"\\u224C\",\"Bcy;\":\"\\u0411\",\"bcy;\":\"\\u0431\",\"bdquo;\":\"\\u201E\",\"becaus;\":\"\\u2235\",\"Because;\":\"\\u2235\",\"because;\":\"\\u2235\",\"bemptyv;\":\"\\u29B0\",\"bepsi;\":\"\\u03F6\",\"bernou;\":\"\\u212C\",\"Bernoullis;\":\"\\u212C\",\"Beta;\":\"\\u0392\",\"beta;\":\"\\u03B2\",\"beth;\":\"\\u2136\",\"between;\":\"\\u226C\",\"Bfr;\":\"\\u{1D505}\",\"bfr;\":\"\\u{1D51F}\",\"bigcap;\":\"\\u22C2\",\"bigcirc;\":\"\\u25EF\",\"bigcup;\":\"\\u22C3\",\"bigodot;\":\"\\u2A00\",\"bigoplus;\":\"\\u2A01\",\"bigotimes;\":\"\\u2A02\",\"bigsqcup;\":\"\\u2A06\",\"bigstar;\":\"\\u2605\",\"bigtriangledown;\":\"\\u25BD\",\"bigtriangleup;\":\"\\u25B3\",\"biguplus;\":\"\\u2A04\",\"bigvee;\":\"\\u22C1\",\"bigwedge;\":\"\\u22C0\",\"bkarow;\":\"\\u290D\",\"blacklozenge;\":\"\\u29EB\",\"blacksquare;\":\"\\u25AA\",\"blacktriangle;\":\"\\u25B4\",\"blacktriangledown;\":\"\\u25BE\",\"blacktriangleleft;\":\"\\u25C2\",\"blacktriangleright;\":\"\\u25B8\",\"blank;\":\"\\u2423\",\"blk12;\":\"\\u2592\",\"blk14;\":\"\\u2591\",\"blk34;\":\"\\u2593\",\"block;\":\"\\u2588\",\"bne;\":\"=\\u20E5\",\"bnequiv;\":\"\\u2261\\u20E5\",\"bNot;\":\"\\u2AED\",\"bnot;\":\"\\u2310\",\"Bopf;\":\"\\u{1D539}\",\"bopf;\":\"\\u{1D553}\",\"bot;\":\"\\u22A5\",\"bottom;\":\"\\u22A5\",\"bowtie;\":\"\\u22C8\",\"boxbox;\":\"\\u29C9\",\"boxDL;\":\"\\u2557\",\"boxDl;\":\"\\u2556\",\"boxdL;\":\"\\u2555\",\"boxdl;\":\"\\u2510\",\"boxDR;\":\"\\u2554\",\"boxDr;\":\"\\u2553\",\"boxdR;\":\"\\u2552\",\"boxdr;\":\"\\u250C\",\"boxH;\":\"\\u2550\",\"boxh;\":\"\\u2500\",\"boxHD;\":\"\\u2566\",\"boxHd;\":\"\\u2564\",\"boxhD;\":\"\\u2565\",\"boxhd;\":\"\\u252C\",\"boxHU;\":\"\\u2569\",\"boxHu;\":\"\\u2567\",\"boxhU;\":\"\\u2568\",\"boxhu;\":\"\\u2534\",\"boxminus;\":\"\\u229F\",\"boxplus;\":\"\\u229E\",\"boxtimes;\":\"\\u22A0\",\"boxUL;\":\"\\u255D\",\"boxUl;\":\"\\u255C\",\"boxuL;\":\"\\u255B\",\"boxul;\":\"\\u2518\",\"boxUR;\":\"\\u255A\",\"boxUr;\":\"\\u2559\",\"boxuR;\":\"\\u2558\",\"boxur;\":\"\\u2514\",\"boxV;\":\"\\u2551\",\"boxv;\":\"\\u2502\",\"boxVH;\":\"\\u256C\",\"boxVh;\":\"\\u256B\",\"boxvH;\":\"\\u256A\",\"boxvh;\":\"\\u253C\",\"boxVL;\":\"\\u2563\",\"boxVl;\":\"\\u2562\",\"boxvL;\":\"\\u2561\",\"boxvl;\":\"\\u2524\",\"boxVR;\":\"\\u2560\",\"boxVr;\":\"\\u255F\",\"boxvR;\":\"\\u255E\",\"boxvr;\":\"\\u251C\",\"bprime;\":\"\\u2035\",\"Breve;\":\"\\u02D8\",\"breve;\":\"\\u02D8\",\"brvbar;\":\"\\xA6\",brvbar:\"\\xA6\",\"Bscr;\":\"\\u212C\",\"bscr;\":\"\\u{1D4B7}\",\"bsemi;\":\"\\u204F\",\"bsim;\":\"\\u223D\",\"bsime;\":\"\\u22CD\",\"bsol;\":\"\\\\\",\"bsolb;\":\"\\u29C5\",\"bsolhsub;\":\"\\u27C8\",\"bull;\":\"\\u2022\",\"bullet;\":\"\\u2022\",\"bump;\":\"\\u224E\",\"bumpE;\":\"\\u2AAE\",\"bumpe;\":\"\\u224F\",\"Bumpeq;\":\"\\u224E\",\"bumpeq;\":\"\\u224F\",\"Cacute;\":\"\\u0106\",\"cacute;\":\"\\u0107\",\"Cap;\":\"\\u22D2\",\"cap;\":\"\\u2229\",\"capand;\":\"\\u2A44\",\"capbrcup;\":\"\\u2A49\",\"capcap;\":\"\\u2A4B\",\"capcup;\":\"\\u2A47\",\"capdot;\":\"\\u2A40\",\"CapitalDifferentialD;\":\"\\u2145\",\"caps;\":\"\\u2229\\uFE00\",\"caret;\":\"\\u2041\",\"caron;\":\"\\u02C7\",\"Cayleys;\":\"\\u212D\",\"ccaps;\":\"\\u2A4D\",\"Ccaron;\":\"\\u010C\",\"ccaron;\":\"\\u010D\",\"Ccedil;\":\"\\xC7\",Ccedil:\"\\xC7\",\"ccedil;\":\"\\xE7\",ccedil:\"\\xE7\",\"Ccirc;\":\"\\u0108\",\"ccirc;\":\"\\u0109\",\"Cconint;\":\"\\u2230\",\"ccups;\":\"\\u2A4C\",\"ccupssm;\":\"\\u2A50\",\"Cdot;\":\"\\u010A\",\"cdot;\":\"\\u010B\",\"cedil;\":\"\\xB8\",cedil:\"\\xB8\",\"Cedilla;\":\"\\xB8\",\"cemptyv;\":\"\\u29B2\",\"cent;\":\"\\xA2\",cent:\"\\xA2\",\"CenterDot;\":\"\\xB7\",\"centerdot;\":\"\\xB7\",\"Cfr;\":\"\\u212D\",\"cfr;\":\"\\u{1D520}\",\"CHcy;\":\"\\u0427\",\"chcy;\":\"\\u0447\",\"check;\":\"\\u2713\",\"checkmark;\":\"\\u2713\",\"Chi;\":\"\\u03A7\",\"chi;\":\"\\u03C7\",\"cir;\":\"\\u25CB\",\"circ;\":\"\\u02C6\",\"circeq;\":\"\\u2257\",\"circlearrowleft;\":\"\\u21BA\",\"circlearrowright;\":\"\\u21BB\",\"circledast;\":\"\\u229B\",\"circledcirc;\":\"\\u229A\",\"circleddash;\":\"\\u229D\",\"CircleDot;\":\"\\u2299\",\"circledR;\":\"\\xAE\",\"circledS;\":\"\\u24C8\",\"CircleMinus;\":\"\\u2296\",\"CirclePlus;\":\"\\u2295\",\"CircleTimes;\":\"\\u2297\",\"cirE;\":\"\\u29C3\",\"cire;\":\"\\u2257\",\"cirfnint;\":\"\\u2A10\",\"cirmid;\":\"\\u2AEF\",\"cirscir;\":\"\\u29C2\",\"ClockwiseContourIntegral;\":\"\\u2232\",\"CloseCurlyDoubleQuote;\":\"\\u201D\",\"CloseCurlyQuote;\":\"\\u2019\",\"clubs;\":\"\\u2663\",\"clubsuit;\":\"\\u2663\",\"Colon;\":\"\\u2237\",\"colon;\":\":\",\"Colone;\":\"\\u2A74\",\"colone;\":\"\\u2254\",\"coloneq;\":\"\\u2254\",\"comma;\":\",\",\"commat;\":\"@\",\"comp;\":\"\\u2201\",\"compfn;\":\"\\u2218\",\"complement;\":\"\\u2201\",\"complexes;\":\"\\u2102\",\"cong;\":\"\\u2245\",\"congdot;\":\"\\u2A6D\",\"Congruent;\":\"\\u2261\",\"Conint;\":\"\\u222F\",\"conint;\":\"\\u222E\",\"ContourIntegral;\":\"\\u222E\",\"Copf;\":\"\\u2102\",\"copf;\":\"\\u{1D554}\",\"coprod;\":\"\\u2210\",\"Coproduct;\":\"\\u2210\",\"COPY;\":\"\\xA9\",COPY:\"\\xA9\",\"copy;\":\"\\xA9\",copy:\"\\xA9\",\"copysr;\":\"\\u2117\",\"CounterClockwiseContourIntegral;\":\"\\u2233\",\"crarr;\":\"\\u21B5\",\"Cross;\":\"\\u2A2F\",\"cross;\":\"\\u2717\",\"Cscr;\":\"\\u{1D49E}\",\"cscr;\":\"\\u{1D4B8}\",\"csub;\":\"\\u2ACF\",\"csube;\":\"\\u2AD1\",\"csup;\":\"\\u2AD0\",\"csupe;\":\"\\u2AD2\",\"ctdot;\":\"\\u22EF\",\"cudarrl;\":\"\\u2938\",\"cudarrr;\":\"\\u2935\",\"cuepr;\":\"\\u22DE\",\"cuesc;\":\"\\u22DF\",\"cularr;\":\"\\u21B6\",\"cularrp;\":\"\\u293D\",\"Cup;\":\"\\u22D3\",\"cup;\":\"\\u222A\",\"cupbrcap;\":\"\\u2A48\",\"CupCap;\":\"\\u224D\",\"cupcap;\":\"\\u2A46\",\"cupcup;\":\"\\u2A4A\",\"cupdot;\":\"\\u228D\",\"cupor;\":\"\\u2A45\",\"cups;\":\"\\u222A\\uFE00\",\"curarr;\":\"\\u21B7\",\"curarrm;\":\"\\u293C\",\"curlyeqprec;\":\"\\u22DE\",\"curlyeqsucc;\":\"\\u22DF\",\"curlyvee;\":\"\\u22CE\",\"curlywedge;\":\"\\u22CF\",\"curren;\":\"\\xA4\",curren:\"\\xA4\",\"curvearrowleft;\":\"\\u21B6\",\"curvearrowright;\":\"\\u21B7\",\"cuvee;\":\"\\u22CE\",\"cuwed;\":\"\\u22CF\",\"cwconint;\":\"\\u2232\",\"cwint;\":\"\\u2231\",\"cylcty;\":\"\\u232D\",\"Dagger;\":\"\\u2021\",\"dagger;\":\"\\u2020\",\"daleth;\":\"\\u2138\",\"Darr;\":\"\\u21A1\",\"dArr;\":\"\\u21D3\",\"darr;\":\"\\u2193\",\"dash;\":\"\\u2010\",\"Dashv;\":\"\\u2AE4\",\"dashv;\":\"\\u22A3\",\"dbkarow;\":\"\\u290F\",\"dblac;\":\"\\u02DD\",\"Dcaron;\":\"\\u010E\",\"dcaron;\":\"\\u010F\",\"Dcy;\":\"\\u0414\",\"dcy;\":\"\\u0434\",\"DD;\":\"\\u2145\",\"dd;\":\"\\u2146\",\"ddagger;\":\"\\u2021\",\"ddarr;\":\"\\u21CA\",\"DDotrahd;\":\"\\u2911\",\"ddotseq;\":\"\\u2A77\",\"deg;\":\"\\xB0\",deg:\"\\xB0\",\"Del;\":\"\\u2207\",\"Delta;\":\"\\u0394\",\"delta;\":\"\\u03B4\",\"demptyv;\":\"\\u29B1\",\"dfisht;\":\"\\u297F\",\"Dfr;\":\"\\u{1D507}\",\"dfr;\":\"\\u{1D521}\",\"dHar;\":\"\\u2965\",\"dharl;\":\"\\u21C3\",\"dharr;\":\"\\u21C2\",\"DiacriticalAcute;\":\"\\xB4\",\"DiacriticalDot;\":\"\\u02D9\",\"DiacriticalDoubleAcute;\":\"\\u02DD\",\"DiacriticalGrave;\":\"`\",\"DiacriticalTilde;\":\"\\u02DC\",\"diam;\":\"\\u22C4\",\"Diamond;\":\"\\u22C4\",\"diamond;\":\"\\u22C4\",\"diamondsuit;\":\"\\u2666\",\"diams;\":\"\\u2666\",\"die;\":\"\\xA8\",\"DifferentialD;\":\"\\u2146\",\"digamma;\":\"\\u03DD\",\"disin;\":\"\\u22F2\",\"div;\":\"\\xF7\",\"divide;\":\"\\xF7\",divide:\"\\xF7\",\"divideontimes;\":\"\\u22C7\",\"divonx;\":\"\\u22C7\",\"DJcy;\":\"\\u0402\",\"djcy;\":\"\\u0452\",\"dlcorn;\":\"\\u231E\",\"dlcrop;\":\"\\u230D\",\"dollar;\":\"$\",\"Dopf;\":\"\\u{1D53B}\",\"dopf;\":\"\\u{1D555}\",\"Dot;\":\"\\xA8\",\"dot;\":\"\\u02D9\",\"DotDot;\":\"\\u20DC\",\"doteq;\":\"\\u2250\",\"doteqdot;\":\"\\u2251\",\"DotEqual;\":\"\\u2250\",\"dotminus;\":\"\\u2238\",\"dotplus;\":\"\\u2214\",\"dotsquare;\":\"\\u22A1\",\"doublebarwedge;\":\"\\u2306\",\"DoubleContourIntegral;\":\"\\u222F\",\"DoubleDot;\":\"\\xA8\",\"DoubleDownArrow;\":\"\\u21D3\",\"DoubleLeftArrow;\":\"\\u21D0\",\"DoubleLeftRightArrow;\":\"\\u21D4\",\"DoubleLeftTee;\":\"\\u2AE4\",\"DoubleLongLeftArrow;\":\"\\u27F8\",\"DoubleLongLeftRightArrow;\":\"\\u27FA\",\"DoubleLongRightArrow;\":\"\\u27F9\",\"DoubleRightArrow;\":\"\\u21D2\",\"DoubleRightTee;\":\"\\u22A8\",\"DoubleUpArrow;\":\"\\u21D1\",\"DoubleUpDownArrow;\":\"\\u21D5\",\"DoubleVerticalBar;\":\"\\u2225\",\"DownArrow;\":\"\\u2193\",\"Downarrow;\":\"\\u21D3\",\"downarrow;\":\"\\u2193\",\"DownArrowBar;\":\"\\u2913\",\"DownArrowUpArrow;\":\"\\u21F5\",\"DownBreve;\":\"\\u0311\",\"downdownarrows;\":\"\\u21CA\",\"downharpoonleft;\":\"\\u21C3\",\"downharpoonright;\":\"\\u21C2\",\"DownLeftRightVector;\":\"\\u2950\",\"DownLeftTeeVector;\":\"\\u295E\",\"DownLeftVector;\":\"\\u21BD\",\"DownLeftVectorBar;\":\"\\u2956\",\"DownRightTeeVector;\":\"\\u295F\",\"DownRightVector;\":\"\\u21C1\",\"DownRightVectorBar;\":\"\\u2957\",\"DownTee;\":\"\\u22A4\",\"DownTeeArrow;\":\"\\u21A7\",\"drbkarow;\":\"\\u2910\",\"drcorn;\":\"\\u231F\",\"drcrop;\":\"\\u230C\",\"Dscr;\":\"\\u{1D49F}\",\"dscr;\":\"\\u{1D4B9}\",\"DScy;\":\"\\u0405\",\"dscy;\":\"\\u0455\",\"dsol;\":\"\\u29F6\",\"Dstrok;\":\"\\u0110\",\"dstrok;\":\"\\u0111\",\"dtdot;\":\"\\u22F1\",\"dtri;\":\"\\u25BF\",\"dtrif;\":\"\\u25BE\",\"duarr;\":\"\\u21F5\",\"duhar;\":\"\\u296F\",\"dwangle;\":\"\\u29A6\",\"DZcy;\":\"\\u040F\",\"dzcy;\":\"\\u045F\",\"dzigrarr;\":\"\\u27FF\",\"Eacute;\":\"\\xC9\",Eacute:\"\\xC9\",\"eacute;\":\"\\xE9\",eacute:\"\\xE9\",\"easter;\":\"\\u2A6E\",\"Ecaron;\":\"\\u011A\",\"ecaron;\":\"\\u011B\",\"ecir;\":\"\\u2256\",\"Ecirc;\":\"\\xCA\",Ecirc:\"\\xCA\",\"ecirc;\":\"\\xEA\",ecirc:\"\\xEA\",\"ecolon;\":\"\\u2255\",\"Ecy;\":\"\\u042D\",\"ecy;\":\"\\u044D\",\"eDDot;\":\"\\u2A77\",\"Edot;\":\"\\u0116\",\"eDot;\":\"\\u2251\",\"edot;\":\"\\u0117\",\"ee;\":\"\\u2147\",\"efDot;\":\"\\u2252\",\"Efr;\":\"\\u{1D508}\",\"efr;\":\"\\u{1D522}\",\"eg;\":\"\\u2A9A\",\"Egrave;\":\"\\xC8\",Egrave:\"\\xC8\",\"egrave;\":\"\\xE8\",egrave:\"\\xE8\",\"egs;\":\"\\u2A96\",\"egsdot;\":\"\\u2A98\",\"el;\":\"\\u2A99\",\"Element;\":\"\\u2208\",\"elinters;\":\"\\u23E7\",\"ell;\":\"\\u2113\",\"els;\":\"\\u2A95\",\"elsdot;\":\"\\u2A97\",\"Emacr;\":\"\\u0112\",\"emacr;\":\"\\u0113\",\"empty;\":\"\\u2205\",\"emptyset;\":\"\\u2205\",\"EmptySmallSquare;\":\"\\u25FB\",\"emptyv;\":\"\\u2205\",\"EmptyVerySmallSquare;\":\"\\u25AB\",\"emsp;\":\"\\u2003\",\"emsp13;\":\"\\u2004\",\"emsp14;\":\"\\u2005\",\"ENG;\":\"\\u014A\",\"eng;\":\"\\u014B\",\"ensp;\":\"\\u2002\",\"Eogon;\":\"\\u0118\",\"eogon;\":\"\\u0119\",\"Eopf;\":\"\\u{1D53C}\",\"eopf;\":\"\\u{1D556}\",\"epar;\":\"\\u22D5\",\"eparsl;\":\"\\u29E3\",\"eplus;\":\"\\u2A71\",\"epsi;\":\"\\u03B5\",\"Epsilon;\":\"\\u0395\",\"epsilon;\":\"\\u03B5\",\"epsiv;\":\"\\u03F5\",\"eqcirc;\":\"\\u2256\",\"eqcolon;\":\"\\u2255\",\"eqsim;\":\"\\u2242\",\"eqslantgtr;\":\"\\u2A96\",\"eqslantless;\":\"\\u2A95\",\"Equal;\":\"\\u2A75\",\"equals;\":\"=\",\"EqualTilde;\":\"\\u2242\",\"equest;\":\"\\u225F\",\"Equilibrium;\":\"\\u21CC\",\"equiv;\":\"\\u2261\",\"equivDD;\":\"\\u2A78\",\"eqvparsl;\":\"\\u29E5\",\"erarr;\":\"\\u2971\",\"erDot;\":\"\\u2253\",\"Escr;\":\"\\u2130\",\"escr;\":\"\\u212F\",\"esdot;\":\"\\u2250\",\"Esim;\":\"\\u2A73\",\"esim;\":\"\\u2242\",\"Eta;\":\"\\u0397\",\"eta;\":\"\\u03B7\",\"ETH;\":\"\\xD0\",ETH:\"\\xD0\",\"eth;\":\"\\xF0\",eth:\"\\xF0\",\"Euml;\":\"\\xCB\",Euml:\"\\xCB\",\"euml;\":\"\\xEB\",euml:\"\\xEB\",\"euro;\":\"\\u20AC\",\"excl;\":\"!\",\"exist;\":\"\\u2203\",\"Exists;\":\"\\u2203\",\"expectation;\":\"\\u2130\",\"ExponentialE;\":\"\\u2147\",\"exponentiale;\":\"\\u2147\",\"fallingdotseq;\":\"\\u2252\",\"Fcy;\":\"\\u0424\",\"fcy;\":\"\\u0444\",\"female;\":\"\\u2640\",\"ffilig;\":\"\\uFB03\",\"fflig;\":\"\\uFB00\",\"ffllig;\":\"\\uFB04\",\"Ffr;\":\"\\u{1D509}\",\"ffr;\":\"\\u{1D523}\",\"filig;\":\"\\uFB01\",\"FilledSmallSquare;\":\"\\u25FC\",\"FilledVerySmallSquare;\":\"\\u25AA\",\"fjlig;\":\"fj\",\"flat;\":\"\\u266D\",\"fllig;\":\"\\uFB02\",\"fltns;\":\"\\u25B1\",\"fnof;\":\"\\u0192\",\"Fopf;\":\"\\u{1D53D}\",\"fopf;\":\"\\u{1D557}\",\"ForAll;\":\"\\u2200\",\"forall;\":\"\\u2200\",\"fork;\":\"\\u22D4\",\"forkv;\":\"\\u2AD9\",\"Fouriertrf;\":\"\\u2131\",\"fpartint;\":\"\\u2A0D\",\"frac12;\":\"\\xBD\",frac12:\"\\xBD\",\"frac13;\":\"\\u2153\",\"frac14;\":\"\\xBC\",frac14:\"\\xBC\",\"frac15;\":\"\\u2155\",\"frac16;\":\"\\u2159\",\"frac18;\":\"\\u215B\",\"frac23;\":\"\\u2154\",\"frac25;\":\"\\u2156\",\"frac34;\":\"\\xBE\",frac34:\"\\xBE\",\"frac35;\":\"\\u2157\",\"frac38;\":\"\\u215C\",\"frac45;\":\"\\u2158\",\"frac56;\":\"\\u215A\",\"frac58;\":\"\\u215D\",\"frac78;\":\"\\u215E\",\"frasl;\":\"\\u2044\",\"frown;\":\"\\u2322\",\"Fscr;\":\"\\u2131\",\"fscr;\":\"\\u{1D4BB}\",\"gacute;\":\"\\u01F5\",\"Gamma;\":\"\\u0393\",\"gamma;\":\"\\u03B3\",\"Gammad;\":\"\\u03DC\",\"gammad;\":\"\\u03DD\",\"gap;\":\"\\u2A86\",\"Gbreve;\":\"\\u011E\",\"gbreve;\":\"\\u011F\",\"Gcedil;\":\"\\u0122\",\"Gcirc;\":\"\\u011C\",\"gcirc;\":\"\\u011D\",\"Gcy;\":\"\\u0413\",\"gcy;\":\"\\u0433\",\"Gdot;\":\"\\u0120\",\"gdot;\":\"\\u0121\",\"gE;\":\"\\u2267\",\"ge;\":\"\\u2265\",\"gEl;\":\"\\u2A8C\",\"gel;\":\"\\u22DB\",\"geq;\":\"\\u2265\",\"geqq;\":\"\\u2267\",\"geqslant;\":\"\\u2A7E\",\"ges;\":\"\\u2A7E\",\"gescc;\":\"\\u2AA9\",\"gesdot;\":\"\\u2A80\",\"gesdoto;\":\"\\u2A82\",\"gesdotol;\":\"\\u2A84\",\"gesl;\":\"\\u22DB\\uFE00\",\"gesles;\":\"\\u2A94\",\"Gfr;\":\"\\u{1D50A}\",\"gfr;\":\"\\u{1D524}\",\"Gg;\":\"\\u22D9\",\"gg;\":\"\\u226B\",\"ggg;\":\"\\u22D9\",\"gimel;\":\"\\u2137\",\"GJcy;\":\"\\u0403\",\"gjcy;\":\"\\u0453\",\"gl;\":\"\\u2277\",\"gla;\":\"\\u2AA5\",\"glE;\":\"\\u2A92\",\"glj;\":\"\\u2AA4\",\"gnap;\":\"\\u2A8A\",\"gnapprox;\":\"\\u2A8A\",\"gnE;\":\"\\u2269\",\"gne;\":\"\\u2A88\",\"gneq;\":\"\\u2A88\",\"gneqq;\":\"\\u2269\",\"gnsim;\":\"\\u22E7\",\"Gopf;\":\"\\u{1D53E}\",\"gopf;\":\"\\u{1D558}\",\"grave;\":\"`\",\"GreaterEqual;\":\"\\u2265\",\"GreaterEqualLess;\":\"\\u22DB\",\"GreaterFullEqual;\":\"\\u2267\",\"GreaterGreater;\":\"\\u2AA2\",\"GreaterLess;\":\"\\u2277\",\"GreaterSlantEqual;\":\"\\u2A7E\",\"GreaterTilde;\":\"\\u2273\",\"Gscr;\":\"\\u{1D4A2}\",\"gscr;\":\"\\u210A\",\"gsim;\":\"\\u2273\",\"gsime;\":\"\\u2A8E\",\"gsiml;\":\"\\u2A90\",\"GT;\":\">\",GT:\">\",\"Gt;\":\"\\u226B\",\"gt;\":\">\",gt:\">\",\"gtcc;\":\"\\u2AA7\",\"gtcir;\":\"\\u2A7A\",\"gtdot;\":\"\\u22D7\",\"gtlPar;\":\"\\u2995\",\"gtquest;\":\"\\u2A7C\",\"gtrapprox;\":\"\\u2A86\",\"gtrarr;\":\"\\u2978\",\"gtrdot;\":\"\\u22D7\",\"gtreqless;\":\"\\u22DB\",\"gtreqqless;\":\"\\u2A8C\",\"gtrless;\":\"\\u2277\",\"gtrsim;\":\"\\u2273\",\"gvertneqq;\":\"\\u2269\\uFE00\",\"gvnE;\":\"\\u2269\\uFE00\",\"Hacek;\":\"\\u02C7\",\"hairsp;\":\"\\u200A\",\"half;\":\"\\xBD\",\"hamilt;\":\"\\u210B\",\"HARDcy;\":\"\\u042A\",\"hardcy;\":\"\\u044A\",\"hArr;\":\"\\u21D4\",\"harr;\":\"\\u2194\",\"harrcir;\":\"\\u2948\",\"harrw;\":\"\\u21AD\",\"Hat;\":\"^\",\"hbar;\":\"\\u210F\",\"Hcirc;\":\"\\u0124\",\"hcirc;\":\"\\u0125\",\"hearts;\":\"\\u2665\",\"heartsuit;\":\"\\u2665\",\"hellip;\":\"\\u2026\",\"hercon;\":\"\\u22B9\",\"Hfr;\":\"\\u210C\",\"hfr;\":\"\\u{1D525}\",\"HilbertSpace;\":\"\\u210B\",\"hksearow;\":\"\\u2925\",\"hkswarow;\":\"\\u2926\",\"hoarr;\":\"\\u21FF\",\"homtht;\":\"\\u223B\",\"hookleftarrow;\":\"\\u21A9\",\"hookrightarrow;\":\"\\u21AA\",\"Hopf;\":\"\\u210D\",\"hopf;\":\"\\u{1D559}\",\"horbar;\":\"\\u2015\",\"HorizontalLine;\":\"\\u2500\",\"Hscr;\":\"\\u210B\",\"hscr;\":\"\\u{1D4BD}\",\"hslash;\":\"\\u210F\",\"Hstrok;\":\"\\u0126\",\"hstrok;\":\"\\u0127\",\"HumpDownHump;\":\"\\u224E\",\"HumpEqual;\":\"\\u224F\",\"hybull;\":\"\\u2043\",\"hyphen;\":\"\\u2010\",\"Iacute;\":\"\\xCD\",Iacute:\"\\xCD\",\"iacute;\":\"\\xED\",iacute:\"\\xED\",\"ic;\":\"\\u2063\",\"Icirc;\":\"\\xCE\",Icirc:\"\\xCE\",\"icirc;\":\"\\xEE\",icirc:\"\\xEE\",\"Icy;\":\"\\u0418\",\"icy;\":\"\\u0438\",\"Idot;\":\"\\u0130\",\"IEcy;\":\"\\u0415\",\"iecy;\":\"\\u0435\",\"iexcl;\":\"\\xA1\",iexcl:\"\\xA1\",\"iff;\":\"\\u21D4\",\"Ifr;\":\"\\u2111\",\"ifr;\":\"\\u{1D526}\",\"Igrave;\":\"\\xCC\",Igrave:\"\\xCC\",\"igrave;\":\"\\xEC\",igrave:\"\\xEC\",\"ii;\":\"\\u2148\",\"iiiint;\":\"\\u2A0C\",\"iiint;\":\"\\u222D\",\"iinfin;\":\"\\u29DC\",\"iiota;\":\"\\u2129\",\"IJlig;\":\"\\u0132\",\"ijlig;\":\"\\u0133\",\"Im;\":\"\\u2111\",\"Imacr;\":\"\\u012A\",\"imacr;\":\"\\u012B\",\"image;\":\"\\u2111\",\"ImaginaryI;\":\"\\u2148\",\"imagline;\":\"\\u2110\",\"imagpart;\":\"\\u2111\",\"imath;\":\"\\u0131\",\"imof;\":\"\\u22B7\",\"imped;\":\"\\u01B5\",\"Implies;\":\"\\u21D2\",\"in;\":\"\\u2208\",\"incare;\":\"\\u2105\",\"infin;\":\"\\u221E\",\"infintie;\":\"\\u29DD\",\"inodot;\":\"\\u0131\",\"Int;\":\"\\u222C\",\"int;\":\"\\u222B\",\"intcal;\":\"\\u22BA\",\"integers;\":\"\\u2124\",\"Integral;\":\"\\u222B\",\"intercal;\":\"\\u22BA\",\"Intersection;\":\"\\u22C2\",\"intlarhk;\":\"\\u2A17\",\"intprod;\":\"\\u2A3C\",\"InvisibleComma;\":\"\\u2063\",\"InvisibleTimes;\":\"\\u2062\",\"IOcy;\":\"\\u0401\",\"iocy;\":\"\\u0451\",\"Iogon;\":\"\\u012E\",\"iogon;\":\"\\u012F\",\"Iopf;\":\"\\u{1D540}\",\"iopf;\":\"\\u{1D55A}\",\"Iota;\":\"\\u0399\",\"iota;\":\"\\u03B9\",\"iprod;\":\"\\u2A3C\",\"iquest;\":\"\\xBF\",iquest:\"\\xBF\",\"Iscr;\":\"\\u2110\",\"iscr;\":\"\\u{1D4BE}\",\"isin;\":\"\\u2208\",\"isindot;\":\"\\u22F5\",\"isinE;\":\"\\u22F9\",\"isins;\":\"\\u22F4\",\"isinsv;\":\"\\u22F3\",\"isinv;\":\"\\u2208\",\"it;\":\"\\u2062\",\"Itilde;\":\"\\u0128\",\"itilde;\":\"\\u0129\",\"Iukcy;\":\"\\u0406\",\"iukcy;\":\"\\u0456\",\"Iuml;\":\"\\xCF\",Iuml:\"\\xCF\",\"iuml;\":\"\\xEF\",iuml:\"\\xEF\",\"Jcirc;\":\"\\u0134\",\"jcirc;\":\"\\u0135\",\"Jcy;\":\"\\u0419\",\"jcy;\":\"\\u0439\",\"Jfr;\":\"\\u{1D50D}\",\"jfr;\":\"\\u{1D527}\",\"jmath;\":\"\\u0237\",\"Jopf;\":\"\\u{1D541}\",\"jopf;\":\"\\u{1D55B}\",\"Jscr;\":\"\\u{1D4A5}\",\"jscr;\":\"\\u{1D4BF}\",\"Jsercy;\":\"\\u0408\",\"jsercy;\":\"\\u0458\",\"Jukcy;\":\"\\u0404\",\"jukcy;\":\"\\u0454\",\"Kappa;\":\"\\u039A\",\"kappa;\":\"\\u03BA\",\"kappav;\":\"\\u03F0\",\"Kcedil;\":\"\\u0136\",\"kcedil;\":\"\\u0137\",\"Kcy;\":\"\\u041A\",\"kcy;\":\"\\u043A\",\"Kfr;\":\"\\u{1D50E}\",\"kfr;\":\"\\u{1D528}\",\"kgreen;\":\"\\u0138\",\"KHcy;\":\"\\u0425\",\"khcy;\":\"\\u0445\",\"KJcy;\":\"\\u040C\",\"kjcy;\":\"\\u045C\",\"Kopf;\":\"\\u{1D542}\",\"kopf;\":\"\\u{1D55C}\",\"Kscr;\":\"\\u{1D4A6}\",\"kscr;\":\"\\u{1D4C0}\",\"lAarr;\":\"\\u21DA\",\"Lacute;\":\"\\u0139\",\"lacute;\":\"\\u013A\",\"laemptyv;\":\"\\u29B4\",\"lagran;\":\"\\u2112\",\"Lambda;\":\"\\u039B\",\"lambda;\":\"\\u03BB\",\"Lang;\":\"\\u27EA\",\"lang;\":\"\\u27E8\",\"langd;\":\"\\u2991\",\"langle;\":\"\\u27E8\",\"lap;\":\"\\u2A85\",\"Laplacetrf;\":\"\\u2112\",\"laquo;\":\"\\xAB\",laquo:\"\\xAB\",\"Larr;\":\"\\u219E\",\"lArr;\":\"\\u21D0\",\"larr;\":\"\\u2190\",\"larrb;\":\"\\u21E4\",\"larrbfs;\":\"\\u291F\",\"larrfs;\":\"\\u291D\",\"larrhk;\":\"\\u21A9\",\"larrlp;\":\"\\u21AB\",\"larrpl;\":\"\\u2939\",\"larrsim;\":\"\\u2973\",\"larrtl;\":\"\\u21A2\",\"lat;\":\"\\u2AAB\",\"lAtail;\":\"\\u291B\",\"latail;\":\"\\u2919\",\"late;\":\"\\u2AAD\",\"lates;\":\"\\u2AAD\\uFE00\",\"lBarr;\":\"\\u290E\",\"lbarr;\":\"\\u290C\",\"lbbrk;\":\"\\u2772\",\"lbrace;\":\"{\",\"lbrack;\":\"[\",\"lbrke;\":\"\\u298B\",\"lbrksld;\":\"\\u298F\",\"lbrkslu;\":\"\\u298D\",\"Lcaron;\":\"\\u013D\",\"lcaron;\":\"\\u013E\",\"Lcedil;\":\"\\u013B\",\"lcedil;\":\"\\u013C\",\"lceil;\":\"\\u2308\",\"lcub;\":\"{\",\"Lcy;\":\"\\u041B\",\"lcy;\":\"\\u043B\",\"ldca;\":\"\\u2936\",\"ldquo;\":\"\\u201C\",\"ldquor;\":\"\\u201E\",\"ldrdhar;\":\"\\u2967\",\"ldrushar;\":\"\\u294B\",\"ldsh;\":\"\\u21B2\",\"lE;\":\"\\u2266\",\"le;\":\"\\u2264\",\"LeftAngleBracket;\":\"\\u27E8\",\"LeftArrow;\":\"\\u2190\",\"Leftarrow;\":\"\\u21D0\",\"leftarrow;\":\"\\u2190\",\"LeftArrowBar;\":\"\\u21E4\",\"LeftArrowRightArrow;\":\"\\u21C6\",\"leftarrowtail;\":\"\\u21A2\",\"LeftCeiling;\":\"\\u2308\",\"LeftDoubleBracket;\":\"\\u27E6\",\"LeftDownTeeVector;\":\"\\u2961\",\"LeftDownVector;\":\"\\u21C3\",\"LeftDownVectorBar;\":\"\\u2959\",\"LeftFloor;\":\"\\u230A\",\"leftharpoondown;\":\"\\u21BD\",\"leftharpoonup;\":\"\\u21BC\",\"leftleftarrows;\":\"\\u21C7\",\"LeftRightArrow;\":\"\\u2194\",\"Leftrightarrow;\":\"\\u21D4\",\"leftrightarrow;\":\"\\u2194\",\"leftrightarrows;\":\"\\u21C6\",\"leftrightharpoons;\":\"\\u21CB\",\"leftrightsquigarrow;\":\"\\u21AD\",\"LeftRightVector;\":\"\\u294E\",\"LeftTee;\":\"\\u22A3\",\"LeftTeeArrow;\":\"\\u21A4\",\"LeftTeeVector;\":\"\\u295A\",\"leftthreetimes;\":\"\\u22CB\",\"LeftTriangle;\":\"\\u22B2\",\"LeftTriangleBar;\":\"\\u29CF\",\"LeftTriangleEqual;\":\"\\u22B4\",\"LeftUpDownVector;\":\"\\u2951\",\"LeftUpTeeVector;\":\"\\u2960\",\"LeftUpVector;\":\"\\u21BF\",\"LeftUpVectorBar;\":\"\\u2958\",\"LeftVector;\":\"\\u21BC\",\"LeftVectorBar;\":\"\\u2952\",\"lEg;\":\"\\u2A8B\",\"leg;\":\"\\u22DA\",\"leq;\":\"\\u2264\",\"leqq;\":\"\\u2266\",\"leqslant;\":\"\\u2A7D\",\"les;\":\"\\u2A7D\",\"lescc;\":\"\\u2AA8\",\"lesdot;\":\"\\u2A7F\",\"lesdoto;\":\"\\u2A81\",\"lesdotor;\":\"\\u2A83\",\"lesg;\":\"\\u22DA\\uFE00\",\"lesges;\":\"\\u2A93\",\"lessapprox;\":\"\\u2A85\",\"lessdot;\":\"\\u22D6\",\"lesseqgtr;\":\"\\u22DA\",\"lesseqqgtr;\":\"\\u2A8B\",\"LessEqualGreater;\":\"\\u22DA\",\"LessFullEqual;\":\"\\u2266\",\"LessGreater;\":\"\\u2276\",\"lessgtr;\":\"\\u2276\",\"LessLess;\":\"\\u2AA1\",\"lesssim;\":\"\\u2272\",\"LessSlantEqual;\":\"\\u2A7D\",\"LessTilde;\":\"\\u2272\",\"lfisht;\":\"\\u297C\",\"lfloor;\":\"\\u230A\",\"Lfr;\":\"\\u{1D50F}\",\"lfr;\":\"\\u{1D529}\",\"lg;\":\"\\u2276\",\"lgE;\":\"\\u2A91\",\"lHar;\":\"\\u2962\",\"lhard;\":\"\\u21BD\",\"lharu;\":\"\\u21BC\",\"lharul;\":\"\\u296A\",\"lhblk;\":\"\\u2584\",\"LJcy;\":\"\\u0409\",\"ljcy;\":\"\\u0459\",\"Ll;\":\"\\u22D8\",\"ll;\":\"\\u226A\",\"llarr;\":\"\\u21C7\",\"llcorner;\":\"\\u231E\",\"Lleftarrow;\":\"\\u21DA\",\"llhard;\":\"\\u296B\",\"lltri;\":\"\\u25FA\",\"Lmidot;\":\"\\u013F\",\"lmidot;\":\"\\u0140\",\"lmoust;\":\"\\u23B0\",\"lmoustache;\":\"\\u23B0\",\"lnap;\":\"\\u2A89\",\"lnapprox;\":\"\\u2A89\",\"lnE;\":\"\\u2268\",\"lne;\":\"\\u2A87\",\"lneq;\":\"\\u2A87\",\"lneqq;\":\"\\u2268\",\"lnsim;\":\"\\u22E6\",\"loang;\":\"\\u27EC\",\"loarr;\":\"\\u21FD\",\"lobrk;\":\"\\u27E6\",\"LongLeftArrow;\":\"\\u27F5\",\"Longleftarrow;\":\"\\u27F8\",\"longleftarrow;\":\"\\u27F5\",\"LongLeftRightArrow;\":\"\\u27F7\",\"Longleftrightarrow;\":\"\\u27FA\",\"longleftrightarrow;\":\"\\u27F7\",\"longmapsto;\":\"\\u27FC\",\"LongRightArrow;\":\"\\u27F6\",\"Longrightarrow;\":\"\\u27F9\",\"longrightarrow;\":\"\\u27F6\",\"looparrowleft;\":\"\\u21AB\",\"looparrowright;\":\"\\u21AC\",\"lopar;\":\"\\u2985\",\"Lopf;\":\"\\u{1D543}\",\"lopf;\":\"\\u{1D55D}\",\"loplus;\":\"\\u2A2D\",\"lotimes;\":\"\\u2A34\",\"lowast;\":\"\\u2217\",\"lowbar;\":\"_\",\"LowerLeftArrow;\":\"\\u2199\",\"LowerRightArrow;\":\"\\u2198\",\"loz;\":\"\\u25CA\",\"lozenge;\":\"\\u25CA\",\"lozf;\":\"\\u29EB\",\"lpar;\":\"(\",\"lparlt;\":\"\\u2993\",\"lrarr;\":\"\\u21C6\",\"lrcorner;\":\"\\u231F\",\"lrhar;\":\"\\u21CB\",\"lrhard;\":\"\\u296D\",\"lrm;\":\"\\u200E\",\"lrtri;\":\"\\u22BF\",\"lsaquo;\":\"\\u2039\",\"Lscr;\":\"\\u2112\",\"lscr;\":\"\\u{1D4C1}\",\"Lsh;\":\"\\u21B0\",\"lsh;\":\"\\u21B0\",\"lsim;\":\"\\u2272\",\"lsime;\":\"\\u2A8D\",\"lsimg;\":\"\\u2A8F\",\"lsqb;\":\"[\",\"lsquo;\":\"\\u2018\",\"lsquor;\":\"\\u201A\",\"Lstrok;\":\"\\u0141\",\"lstrok;\":\"\\u0142\",\"LT;\":\"<\",LT:\"<\",\"Lt;\":\"\\u226A\",\"lt;\":\"<\",lt:\"<\",\"ltcc;\":\"\\u2AA6\",\"ltcir;\":\"\\u2A79\",\"ltdot;\":\"\\u22D6\",\"lthree;\":\"\\u22CB\",\"ltimes;\":\"\\u22C9\",\"ltlarr;\":\"\\u2976\",\"ltquest;\":\"\\u2A7B\",\"ltri;\":\"\\u25C3\",\"ltrie;\":\"\\u22B4\",\"ltrif;\":\"\\u25C2\",\"ltrPar;\":\"\\u2996\",\"lurdshar;\":\"\\u294A\",\"luruhar;\":\"\\u2966\",\"lvertneqq;\":\"\\u2268\\uFE00\",\"lvnE;\":\"\\u2268\\uFE00\",\"macr;\":\"\\xAF\",macr:\"\\xAF\",\"male;\":\"\\u2642\",\"malt;\":\"\\u2720\",\"maltese;\":\"\\u2720\",\"Map;\":\"\\u2905\",\"map;\":\"\\u21A6\",\"mapsto;\":\"\\u21A6\",\"mapstodown;\":\"\\u21A7\",\"mapstoleft;\":\"\\u21A4\",\"mapstoup;\":\"\\u21A5\",\"marker;\":\"\\u25AE\",\"mcomma;\":\"\\u2A29\",\"Mcy;\":\"\\u041C\",\"mcy;\":\"\\u043C\",\"mdash;\":\"\\u2014\",\"mDDot;\":\"\\u223A\",\"measuredangle;\":\"\\u2221\",\"MediumSpace;\":\"\\u205F\",\"Mellintrf;\":\"\\u2133\",\"Mfr;\":\"\\u{1D510}\",\"mfr;\":\"\\u{1D52A}\",\"mho;\":\"\\u2127\",\"micro;\":\"\\xB5\",micro:\"\\xB5\",\"mid;\":\"\\u2223\",\"midast;\":\"*\",\"midcir;\":\"\\u2AF0\",\"middot;\":\"\\xB7\",middot:\"\\xB7\",\"minus;\":\"\\u2212\",\"minusb;\":\"\\u229F\",\"minusd;\":\"\\u2238\",\"minusdu;\":\"\\u2A2A\",\"MinusPlus;\":\"\\u2213\",\"mlcp;\":\"\\u2ADB\",\"mldr;\":\"\\u2026\",\"mnplus;\":\"\\u2213\",\"models;\":\"\\u22A7\",\"Mopf;\":\"\\u{1D544}\",\"mopf;\":\"\\u{1D55E}\",\"mp;\":\"\\u2213\",\"Mscr;\":\"\\u2133\",\"mscr;\":\"\\u{1D4C2}\",\"mstpos;\":\"\\u223E\",\"Mu;\":\"\\u039C\",\"mu;\":\"\\u03BC\",\"multimap;\":\"\\u22B8\",\"mumap;\":\"\\u22B8\",\"nabla;\":\"\\u2207\",\"Nacute;\":\"\\u0143\",\"nacute;\":\"\\u0144\",\"nang;\":\"\\u2220\\u20D2\",\"nap;\":\"\\u2249\",\"napE;\":\"\\u2A70\\u0338\",\"napid;\":\"\\u224B\\u0338\",\"napos;\":\"\\u0149\",\"napprox;\":\"\\u2249\",\"natur;\":\"\\u266E\",\"natural;\":\"\\u266E\",\"naturals;\":\"\\u2115\",\"nbsp;\":\"\\xA0\",nbsp:\"\\xA0\",\"nbump;\":\"\\u224E\\u0338\",\"nbumpe;\":\"\\u224F\\u0338\",\"ncap;\":\"\\u2A43\",\"Ncaron;\":\"\\u0147\",\"ncaron;\":\"\\u0148\",\"Ncedil;\":\"\\u0145\",\"ncedil;\":\"\\u0146\",\"ncong;\":\"\\u2247\",\"ncongdot;\":\"\\u2A6D\\u0338\",\"ncup;\":\"\\u2A42\",\"Ncy;\":\"\\u041D\",\"ncy;\":\"\\u043D\",\"ndash;\":\"\\u2013\",\"ne;\":\"\\u2260\",\"nearhk;\":\"\\u2924\",\"neArr;\":\"\\u21D7\",\"nearr;\":\"\\u2197\",\"nearrow;\":\"\\u2197\",\"nedot;\":\"\\u2250\\u0338\",\"NegativeMediumSpace;\":\"\\u200B\",\"NegativeThickSpace;\":\"\\u200B\",\"NegativeThinSpace;\":\"\\u200B\",\"NegativeVeryThinSpace;\":\"\\u200B\",\"nequiv;\":\"\\u2262\",\"nesear;\":\"\\u2928\",\"nesim;\":\"\\u2242\\u0338\",\"NestedGreaterGreater;\":\"\\u226B\",\"NestedLessLess;\":\"\\u226A\",\"NewLine;\":`\n`,\"nexist;\":\"\\u2204\",\"nexists;\":\"\\u2204\",\"Nfr;\":\"\\u{1D511}\",\"nfr;\":\"\\u{1D52B}\",\"ngE;\":\"\\u2267\\u0338\",\"nge;\":\"\\u2271\",\"ngeq;\":\"\\u2271\",\"ngeqq;\":\"\\u2267\\u0338\",\"ngeqslant;\":\"\\u2A7E\\u0338\",\"nges;\":\"\\u2A7E\\u0338\",\"nGg;\":\"\\u22D9\\u0338\",\"ngsim;\":\"\\u2275\",\"nGt;\":\"\\u226B\\u20D2\",\"ngt;\":\"\\u226F\",\"ngtr;\":\"\\u226F\",\"nGtv;\":\"\\u226B\\u0338\",\"nhArr;\":\"\\u21CE\",\"nharr;\":\"\\u21AE\",\"nhpar;\":\"\\u2AF2\",\"ni;\":\"\\u220B\",\"nis;\":\"\\u22FC\",\"nisd;\":\"\\u22FA\",\"niv;\":\"\\u220B\",\"NJcy;\":\"\\u040A\",\"njcy;\":\"\\u045A\",\"nlArr;\":\"\\u21CD\",\"nlarr;\":\"\\u219A\",\"nldr;\":\"\\u2025\",\"nlE;\":\"\\u2266\\u0338\",\"nle;\":\"\\u2270\",\"nLeftarrow;\":\"\\u21CD\",\"nleftarrow;\":\"\\u219A\",\"nLeftrightarrow;\":\"\\u21CE\",\"nleftrightarrow;\":\"\\u21AE\",\"nleq;\":\"\\u2270\",\"nleqq;\":\"\\u2266\\u0338\",\"nleqslant;\":\"\\u2A7D\\u0338\",\"nles;\":\"\\u2A7D\\u0338\",\"nless;\":\"\\u226E\",\"nLl;\":\"\\u22D8\\u0338\",\"nlsim;\":\"\\u2274\",\"nLt;\":\"\\u226A\\u20D2\",\"nlt;\":\"\\u226E\",\"nltri;\":\"\\u22EA\",\"nltrie;\":\"\\u22EC\",\"nLtv;\":\"\\u226A\\u0338\",\"nmid;\":\"\\u2224\",\"NoBreak;\":\"\\u2060\",\"NonBreakingSpace;\":\"\\xA0\",\"Nopf;\":\"\\u2115\",\"nopf;\":\"\\u{1D55F}\",\"Not;\":\"\\u2AEC\",\"not;\":\"\\xAC\",not:\"\\xAC\",\"NotCongruent;\":\"\\u2262\",\"NotCupCap;\":\"\\u226D\",\"NotDoubleVerticalBar;\":\"\\u2226\",\"NotElement;\":\"\\u2209\",\"NotEqual;\":\"\\u2260\",\"NotEqualTilde;\":\"\\u2242\\u0338\",\"NotExists;\":\"\\u2204\",\"NotGreater;\":\"\\u226F\",\"NotGreaterEqual;\":\"\\u2271\",\"NotGreaterFullEqual;\":\"\\u2267\\u0338\",\"NotGreaterGreater;\":\"\\u226B\\u0338\",\"NotGreaterLess;\":\"\\u2279\",\"NotGreaterSlantEqual;\":\"\\u2A7E\\u0338\",\"NotGreaterTilde;\":\"\\u2275\",\"NotHumpDownHump;\":\"\\u224E\\u0338\",\"NotHumpEqual;\":\"\\u224F\\u0338\",\"notin;\":\"\\u2209\",\"notindot;\":\"\\u22F5\\u0338\",\"notinE;\":\"\\u22F9\\u0338\",\"notinva;\":\"\\u2209\",\"notinvb;\":\"\\u22F7\",\"notinvc;\":\"\\u22F6\",\"NotLeftTriangle;\":\"\\u22EA\",\"NotLeftTriangleBar;\":\"\\u29CF\\u0338\",\"NotLeftTriangleEqual;\":\"\\u22EC\",\"NotLess;\":\"\\u226E\",\"NotLessEqual;\":\"\\u2270\",\"NotLessGreater;\":\"\\u2278\",\"NotLessLess;\":\"\\u226A\\u0338\",\"NotLessSlantEqual;\":\"\\u2A7D\\u0338\",\"NotLessTilde;\":\"\\u2274\",\"NotNestedGreaterGreater;\":\"\\u2AA2\\u0338\",\"NotNestedLessLess;\":\"\\u2AA1\\u0338\",\"notni;\":\"\\u220C\",\"notniva;\":\"\\u220C\",\"notnivb;\":\"\\u22FE\",\"notnivc;\":\"\\u22FD\",\"NotPrecedes;\":\"\\u2280\",\"NotPrecedesEqual;\":\"\\u2AAF\\u0338\",\"NotPrecedesSlantEqual;\":\"\\u22E0\",\"NotReverseElement;\":\"\\u220C\",\"NotRightTriangle;\":\"\\u22EB\",\"NotRightTriangleBar;\":\"\\u29D0\\u0338\",\"NotRightTriangleEqual;\":\"\\u22ED\",\"NotSquareSubset;\":\"\\u228F\\u0338\",\"NotSquareSubsetEqual;\":\"\\u22E2\",\"NotSquareSuperset;\":\"\\u2290\\u0338\",\"NotSquareSupersetEqual;\":\"\\u22E3\",\"NotSubset;\":\"\\u2282\\u20D2\",\"NotSubsetEqual;\":\"\\u2288\",\"NotSucceeds;\":\"\\u2281\",\"NotSucceedsEqual;\":\"\\u2AB0\\u0338\",\"NotSucceedsSlantEqual;\":\"\\u22E1\",\"NotSucceedsTilde;\":\"\\u227F\\u0338\",\"NotSuperset;\":\"\\u2283\\u20D2\",\"NotSupersetEqual;\":\"\\u2289\",\"NotTilde;\":\"\\u2241\",\"NotTildeEqual;\":\"\\u2244\",\"NotTildeFullEqual;\":\"\\u2247\",\"NotTildeTilde;\":\"\\u2249\",\"NotVerticalBar;\":\"\\u2224\",\"npar;\":\"\\u2226\",\"nparallel;\":\"\\u2226\",\"nparsl;\":\"\\u2AFD\\u20E5\",\"npart;\":\"\\u2202\\u0338\",\"npolint;\":\"\\u2A14\",\"npr;\":\"\\u2280\",\"nprcue;\":\"\\u22E0\",\"npre;\":\"\\u2AAF\\u0338\",\"nprec;\":\"\\u2280\",\"npreceq;\":\"\\u2AAF\\u0338\",\"nrArr;\":\"\\u21CF\",\"nrarr;\":\"\\u219B\",\"nrarrc;\":\"\\u2933\\u0338\",\"nrarrw;\":\"\\u219D\\u0338\",\"nRightarrow;\":\"\\u21CF\",\"nrightarrow;\":\"\\u219B\",\"nrtri;\":\"\\u22EB\",\"nrtrie;\":\"\\u22ED\",\"nsc;\":\"\\u2281\",\"nsccue;\":\"\\u22E1\",\"nsce;\":\"\\u2AB0\\u0338\",\"Nscr;\":\"\\u{1D4A9}\",\"nscr;\":\"\\u{1D4C3}\",\"nshortmid;\":\"\\u2224\",\"nshortparallel;\":\"\\u2226\",\"nsim;\":\"\\u2241\",\"nsime;\":\"\\u2244\",\"nsimeq;\":\"\\u2244\",\"nsmid;\":\"\\u2224\",\"nspar;\":\"\\u2226\",\"nsqsube;\":\"\\u22E2\",\"nsqsupe;\":\"\\u22E3\",\"nsub;\":\"\\u2284\",\"nsubE;\":\"\\u2AC5\\u0338\",\"nsube;\":\"\\u2288\",\"nsubset;\":\"\\u2282\\u20D2\",\"nsubseteq;\":\"\\u2288\",\"nsubseteqq;\":\"\\u2AC5\\u0338\",\"nsucc;\":\"\\u2281\",\"nsucceq;\":\"\\u2AB0\\u0338\",\"nsup;\":\"\\u2285\",\"nsupE;\":\"\\u2AC6\\u0338\",\"nsupe;\":\"\\u2289\",\"nsupset;\":\"\\u2283\\u20D2\",\"nsupseteq;\":\"\\u2289\",\"nsupseteqq;\":\"\\u2AC6\\u0338\",\"ntgl;\":\"\\u2279\",\"Ntilde;\":\"\\xD1\",Ntilde:\"\\xD1\",\"ntilde;\":\"\\xF1\",ntilde:\"\\xF1\",\"ntlg;\":\"\\u2278\",\"ntriangleleft;\":\"\\u22EA\",\"ntrianglelefteq;\":\"\\u22EC\",\"ntriangleright;\":\"\\u22EB\",\"ntrianglerighteq;\":\"\\u22ED\",\"Nu;\":\"\\u039D\",\"nu;\":\"\\u03BD\",\"num;\":\"#\",\"numero;\":\"\\u2116\",\"numsp;\":\"\\u2007\",\"nvap;\":\"\\u224D\\u20D2\",\"nVDash;\":\"\\u22AF\",\"nVdash;\":\"\\u22AE\",\"nvDash;\":\"\\u22AD\",\"nvdash;\":\"\\u22AC\",\"nvge;\":\"\\u2265\\u20D2\",\"nvgt;\":\">\\u20D2\",\"nvHarr;\":\"\\u2904\",\"nvinfin;\":\"\\u29DE\",\"nvlArr;\":\"\\u2902\",\"nvle;\":\"\\u2264\\u20D2\",\"nvlt;\":\"<\\u20D2\",\"nvltrie;\":\"\\u22B4\\u20D2\",\"nvrArr;\":\"\\u2903\",\"nvrtrie;\":\"\\u22B5\\u20D2\",\"nvsim;\":\"\\u223C\\u20D2\",\"nwarhk;\":\"\\u2923\",\"nwArr;\":\"\\u21D6\",\"nwarr;\":\"\\u2196\",\"nwarrow;\":\"\\u2196\",\"nwnear;\":\"\\u2927\",\"Oacute;\":\"\\xD3\",Oacute:\"\\xD3\",\"oacute;\":\"\\xF3\",oacute:\"\\xF3\",\"oast;\":\"\\u229B\",\"ocir;\":\"\\u229A\",\"Ocirc;\":\"\\xD4\",Ocirc:\"\\xD4\",\"ocirc;\":\"\\xF4\",ocirc:\"\\xF4\",\"Ocy;\":\"\\u041E\",\"ocy;\":\"\\u043E\",\"odash;\":\"\\u229D\",\"Odblac;\":\"\\u0150\",\"odblac;\":\"\\u0151\",\"odiv;\":\"\\u2A38\",\"odot;\":\"\\u2299\",\"odsold;\":\"\\u29BC\",\"OElig;\":\"\\u0152\",\"oelig;\":\"\\u0153\",\"ofcir;\":\"\\u29BF\",\"Ofr;\":\"\\u{1D512}\",\"ofr;\":\"\\u{1D52C}\",\"ogon;\":\"\\u02DB\",\"Ograve;\":\"\\xD2\",Ograve:\"\\xD2\",\"ograve;\":\"\\xF2\",ograve:\"\\xF2\",\"ogt;\":\"\\u29C1\",\"ohbar;\":\"\\u29B5\",\"ohm;\":\"\\u03A9\",\"oint;\":\"\\u222E\",\"olarr;\":\"\\u21BA\",\"olcir;\":\"\\u29BE\",\"olcross;\":\"\\u29BB\",\"oline;\":\"\\u203E\",\"olt;\":\"\\u29C0\",\"Omacr;\":\"\\u014C\",\"omacr;\":\"\\u014D\",\"Omega;\":\"\\u03A9\",\"omega;\":\"\\u03C9\",\"Omicron;\":\"\\u039F\",\"omicron;\":\"\\u03BF\",\"omid;\":\"\\u29B6\",\"ominus;\":\"\\u2296\",\"Oopf;\":\"\\u{1D546}\",\"oopf;\":\"\\u{1D560}\",\"opar;\":\"\\u29B7\",\"OpenCurlyDoubleQuote;\":\"\\u201C\",\"OpenCurlyQuote;\":\"\\u2018\",\"operp;\":\"\\u29B9\",\"oplus;\":\"\\u2295\",\"Or;\":\"\\u2A54\",\"or;\":\"\\u2228\",\"orarr;\":\"\\u21BB\",\"ord;\":\"\\u2A5D\",\"order;\":\"\\u2134\",\"orderof;\":\"\\u2134\",\"ordf;\":\"\\xAA\",ordf:\"\\xAA\",\"ordm;\":\"\\xBA\",ordm:\"\\xBA\",\"origof;\":\"\\u22B6\",\"oror;\":\"\\u2A56\",\"orslope;\":\"\\u2A57\",\"orv;\":\"\\u2A5B\",\"oS;\":\"\\u24C8\",\"Oscr;\":\"\\u{1D4AA}\",\"oscr;\":\"\\u2134\",\"Oslash;\":\"\\xD8\",Oslash:\"\\xD8\",\"oslash;\":\"\\xF8\",oslash:\"\\xF8\",\"osol;\":\"\\u2298\",\"Otilde;\":\"\\xD5\",Otilde:\"\\xD5\",\"otilde;\":\"\\xF5\",otilde:\"\\xF5\",\"Otimes;\":\"\\u2A37\",\"otimes;\":\"\\u2297\",\"otimesas;\":\"\\u2A36\",\"Ouml;\":\"\\xD6\",Ouml:\"\\xD6\",\"ouml;\":\"\\xF6\",ouml:\"\\xF6\",\"ovbar;\":\"\\u233D\",\"OverBar;\":\"\\u203E\",\"OverBrace;\":\"\\u23DE\",\"OverBracket;\":\"\\u23B4\",\"OverParenthesis;\":\"\\u23DC\",\"par;\":\"\\u2225\",\"para;\":\"\\xB6\",para:\"\\xB6\",\"parallel;\":\"\\u2225\",\"parsim;\":\"\\u2AF3\",\"parsl;\":\"\\u2AFD\",\"part;\":\"\\u2202\",\"PartialD;\":\"\\u2202\",\"Pcy;\":\"\\u041F\",\"pcy;\":\"\\u043F\",\"percnt;\":\"%\",\"period;\":\".\",\"permil;\":\"\\u2030\",\"perp;\":\"\\u22A5\",\"pertenk;\":\"\\u2031\",\"Pfr;\":\"\\u{1D513}\",\"pfr;\":\"\\u{1D52D}\",\"Phi;\":\"\\u03A6\",\"phi;\":\"\\u03C6\",\"phiv;\":\"\\u03D5\",\"phmmat;\":\"\\u2133\",\"phone;\":\"\\u260E\",\"Pi;\":\"\\u03A0\",\"pi;\":\"\\u03C0\",\"pitchfork;\":\"\\u22D4\",\"piv;\":\"\\u03D6\",\"planck;\":\"\\u210F\",\"planckh;\":\"\\u210E\",\"plankv;\":\"\\u210F\",\"plus;\":\"+\",\"plusacir;\":\"\\u2A23\",\"plusb;\":\"\\u229E\",\"pluscir;\":\"\\u2A22\",\"plusdo;\":\"\\u2214\",\"plusdu;\":\"\\u2A25\",\"pluse;\":\"\\u2A72\",\"PlusMinus;\":\"\\xB1\",\"plusmn;\":\"\\xB1\",plusmn:\"\\xB1\",\"plussim;\":\"\\u2A26\",\"plustwo;\":\"\\u2A27\",\"pm;\":\"\\xB1\",\"Poincareplane;\":\"\\u210C\",\"pointint;\":\"\\u2A15\",\"Popf;\":\"\\u2119\",\"popf;\":\"\\u{1D561}\",\"pound;\":\"\\xA3\",pound:\"\\xA3\",\"Pr;\":\"\\u2ABB\",\"pr;\":\"\\u227A\",\"prap;\":\"\\u2AB7\",\"prcue;\":\"\\u227C\",\"prE;\":\"\\u2AB3\",\"pre;\":\"\\u2AAF\",\"prec;\":\"\\u227A\",\"precapprox;\":\"\\u2AB7\",\"preccurlyeq;\":\"\\u227C\",\"Precedes;\":\"\\u227A\",\"PrecedesEqual;\":\"\\u2AAF\",\"PrecedesSlantEqual;\":\"\\u227C\",\"PrecedesTilde;\":\"\\u227E\",\"preceq;\":\"\\u2AAF\",\"precnapprox;\":\"\\u2AB9\",\"precneqq;\":\"\\u2AB5\",\"precnsim;\":\"\\u22E8\",\"precsim;\":\"\\u227E\",\"Prime;\":\"\\u2033\",\"prime;\":\"\\u2032\",\"primes;\":\"\\u2119\",\"prnap;\":\"\\u2AB9\",\"prnE;\":\"\\u2AB5\",\"prnsim;\":\"\\u22E8\",\"prod;\":\"\\u220F\",\"Product;\":\"\\u220F\",\"profalar;\":\"\\u232E\",\"profline;\":\"\\u2312\",\"profsurf;\":\"\\u2313\",\"prop;\":\"\\u221D\",\"Proportion;\":\"\\u2237\",\"Proportional;\":\"\\u221D\",\"propto;\":\"\\u221D\",\"prsim;\":\"\\u227E\",\"prurel;\":\"\\u22B0\",\"Pscr;\":\"\\u{1D4AB}\",\"pscr;\":\"\\u{1D4C5}\",\"Psi;\":\"\\u03A8\",\"psi;\":\"\\u03C8\",\"puncsp;\":\"\\u2008\",\"Qfr;\":\"\\u{1D514}\",\"qfr;\":\"\\u{1D52E}\",\"qint;\":\"\\u2A0C\",\"Qopf;\":\"\\u211A\",\"qopf;\":\"\\u{1D562}\",\"qprime;\":\"\\u2057\",\"Qscr;\":\"\\u{1D4AC}\",\"qscr;\":\"\\u{1D4C6}\",\"quaternions;\":\"\\u210D\",\"quatint;\":\"\\u2A16\",\"quest;\":\"?\",\"questeq;\":\"\\u225F\",\"QUOT;\":'\"',QUOT:'\"',\"quot;\":'\"',quot:'\"',\"rAarr;\":\"\\u21DB\",\"race;\":\"\\u223D\\u0331\",\"Racute;\":\"\\u0154\",\"racute;\":\"\\u0155\",\"radic;\":\"\\u221A\",\"raemptyv;\":\"\\u29B3\",\"Rang;\":\"\\u27EB\",\"rang;\":\"\\u27E9\",\"rangd;\":\"\\u2992\",\"range;\":\"\\u29A5\",\"rangle;\":\"\\u27E9\",\"raquo;\":\"\\xBB\",raquo:\"\\xBB\",\"Rarr;\":\"\\u21A0\",\"rArr;\":\"\\u21D2\",\"rarr;\":\"\\u2192\",\"rarrap;\":\"\\u2975\",\"rarrb;\":\"\\u21E5\",\"rarrbfs;\":\"\\u2920\",\"rarrc;\":\"\\u2933\",\"rarrfs;\":\"\\u291E\",\"rarrhk;\":\"\\u21AA\",\"rarrlp;\":\"\\u21AC\",\"rarrpl;\":\"\\u2945\",\"rarrsim;\":\"\\u2974\",\"Rarrtl;\":\"\\u2916\",\"rarrtl;\":\"\\u21A3\",\"rarrw;\":\"\\u219D\",\"rAtail;\":\"\\u291C\",\"ratail;\":\"\\u291A\",\"ratio;\":\"\\u2236\",\"rationals;\":\"\\u211A\",\"RBarr;\":\"\\u2910\",\"rBarr;\":\"\\u290F\",\"rbarr;\":\"\\u290D\",\"rbbrk;\":\"\\u2773\",\"rbrace;\":\"}\",\"rbrack;\":\"]\",\"rbrke;\":\"\\u298C\",\"rbrksld;\":\"\\u298E\",\"rbrkslu;\":\"\\u2990\",\"Rcaron;\":\"\\u0158\",\"rcaron;\":\"\\u0159\",\"Rcedil;\":\"\\u0156\",\"rcedil;\":\"\\u0157\",\"rceil;\":\"\\u2309\",\"rcub;\":\"}\",\"Rcy;\":\"\\u0420\",\"rcy;\":\"\\u0440\",\"rdca;\":\"\\u2937\",\"rdldhar;\":\"\\u2969\",\"rdquo;\":\"\\u201D\",\"rdquor;\":\"\\u201D\",\"rdsh;\":\"\\u21B3\",\"Re;\":\"\\u211C\",\"real;\":\"\\u211C\",\"realine;\":\"\\u211B\",\"realpart;\":\"\\u211C\",\"reals;\":\"\\u211D\",\"rect;\":\"\\u25AD\",\"REG;\":\"\\xAE\",REG:\"\\xAE\",\"reg;\":\"\\xAE\",reg:\"\\xAE\",\"ReverseElement;\":\"\\u220B\",\"ReverseEquilibrium;\":\"\\u21CB\",\"ReverseUpEquilibrium;\":\"\\u296F\",\"rfisht;\":\"\\u297D\",\"rfloor;\":\"\\u230B\",\"Rfr;\":\"\\u211C\",\"rfr;\":\"\\u{1D52F}\",\"rHar;\":\"\\u2964\",\"rhard;\":\"\\u21C1\",\"rharu;\":\"\\u21C0\",\"rharul;\":\"\\u296C\",\"Rho;\":\"\\u03A1\",\"rho;\":\"\\u03C1\",\"rhov;\":\"\\u03F1\",\"RightAngleBracket;\":\"\\u27E9\",\"RightArrow;\":\"\\u2192\",\"Rightarrow;\":\"\\u21D2\",\"rightarrow;\":\"\\u2192\",\"RightArrowBar;\":\"\\u21E5\",\"RightArrowLeftArrow;\":\"\\u21C4\",\"rightarrowtail;\":\"\\u21A3\",\"RightCeiling;\":\"\\u2309\",\"RightDoubleBracket;\":\"\\u27E7\",\"RightDownTeeVector;\":\"\\u295D\",\"RightDownVector;\":\"\\u21C2\",\"RightDownVectorBar;\":\"\\u2955\",\"RightFloor;\":\"\\u230B\",\"rightharpoondown;\":\"\\u21C1\",\"rightharpoonup;\":\"\\u21C0\",\"rightleftarrows;\":\"\\u21C4\",\"rightleftharpoons;\":\"\\u21CC\",\"rightrightarrows;\":\"\\u21C9\",\"rightsquigarrow;\":\"\\u219D\",\"RightTee;\":\"\\u22A2\",\"RightTeeArrow;\":\"\\u21A6\",\"RightTeeVector;\":\"\\u295B\",\"rightthreetimes;\":\"\\u22CC\",\"RightTriangle;\":\"\\u22B3\",\"RightTriangleBar;\":\"\\u29D0\",\"RightTriangleEqual;\":\"\\u22B5\",\"RightUpDownVector;\":\"\\u294F\",\"RightUpTeeVector;\":\"\\u295C\",\"RightUpVector;\":\"\\u21BE\",\"RightUpVectorBar;\":\"\\u2954\",\"RightVector;\":\"\\u21C0\",\"RightVectorBar;\":\"\\u2953\",\"ring;\":\"\\u02DA\",\"risingdotseq;\":\"\\u2253\",\"rlarr;\":\"\\u21C4\",\"rlhar;\":\"\\u21CC\",\"rlm;\":\"\\u200F\",\"rmoust;\":\"\\u23B1\",\"rmoustache;\":\"\\u23B1\",\"rnmid;\":\"\\u2AEE\",\"roang;\":\"\\u27ED\",\"roarr;\":\"\\u21FE\",\"robrk;\":\"\\u27E7\",\"ropar;\":\"\\u2986\",\"Ropf;\":\"\\u211D\",\"ropf;\":\"\\u{1D563}\",\"roplus;\":\"\\u2A2E\",\"rotimes;\":\"\\u2A35\",\"RoundImplies;\":\"\\u2970\",\"rpar;\":\")\",\"rpargt;\":\"\\u2994\",\"rppolint;\":\"\\u2A12\",\"rrarr;\":\"\\u21C9\",\"Rrightarrow;\":\"\\u21DB\",\"rsaquo;\":\"\\u203A\",\"Rscr;\":\"\\u211B\",\"rscr;\":\"\\u{1D4C7}\",\"Rsh;\":\"\\u21B1\",\"rsh;\":\"\\u21B1\",\"rsqb;\":\"]\",\"rsquo;\":\"\\u2019\",\"rsquor;\":\"\\u2019\",\"rthree;\":\"\\u22CC\",\"rtimes;\":\"\\u22CA\",\"rtri;\":\"\\u25B9\",\"rtrie;\":\"\\u22B5\",\"rtrif;\":\"\\u25B8\",\"rtriltri;\":\"\\u29CE\",\"RuleDelayed;\":\"\\u29F4\",\"ruluhar;\":\"\\u2968\",\"rx;\":\"\\u211E\",\"Sacute;\":\"\\u015A\",\"sacute;\":\"\\u015B\",\"sbquo;\":\"\\u201A\",\"Sc;\":\"\\u2ABC\",\"sc;\":\"\\u227B\",\"scap;\":\"\\u2AB8\",\"Scaron;\":\"\\u0160\",\"scaron;\":\"\\u0161\",\"sccue;\":\"\\u227D\",\"scE;\":\"\\u2AB4\",\"sce;\":\"\\u2AB0\",\"Scedil;\":\"\\u015E\",\"scedil;\":\"\\u015F\",\"Scirc;\":\"\\u015C\",\"scirc;\":\"\\u015D\",\"scnap;\":\"\\u2ABA\",\"scnE;\":\"\\u2AB6\",\"scnsim;\":\"\\u22E9\",\"scpolint;\":\"\\u2A13\",\"scsim;\":\"\\u227F\",\"Scy;\":\"\\u0421\",\"scy;\":\"\\u0441\",\"sdot;\":\"\\u22C5\",\"sdotb;\":\"\\u22A1\",\"sdote;\":\"\\u2A66\",\"searhk;\":\"\\u2925\",\"seArr;\":\"\\u21D8\",\"searr;\":\"\\u2198\",\"searrow;\":\"\\u2198\",\"sect;\":\"\\xA7\",sect:\"\\xA7\",\"semi;\":\";\",\"seswar;\":\"\\u2929\",\"setminus;\":\"\\u2216\",\"setmn;\":\"\\u2216\",\"sext;\":\"\\u2736\",\"Sfr;\":\"\\u{1D516}\",\"sfr;\":\"\\u{1D530}\",\"sfrown;\":\"\\u2322\",\"sharp;\":\"\\u266F\",\"SHCHcy;\":\"\\u0429\",\"shchcy;\":\"\\u0449\",\"SHcy;\":\"\\u0428\",\"shcy;\":\"\\u0448\",\"ShortDownArrow;\":\"\\u2193\",\"ShortLeftArrow;\":\"\\u2190\",\"shortmid;\":\"\\u2223\",\"shortparallel;\":\"\\u2225\",\"ShortRightArrow;\":\"\\u2192\",\"ShortUpArrow;\":\"\\u2191\",\"shy;\":\"\\xAD\",shy:\"\\xAD\",\"Sigma;\":\"\\u03A3\",\"sigma;\":\"\\u03C3\",\"sigmaf;\":\"\\u03C2\",\"sigmav;\":\"\\u03C2\",\"sim;\":\"\\u223C\",\"simdot;\":\"\\u2A6A\",\"sime;\":\"\\u2243\",\"simeq;\":\"\\u2243\",\"simg;\":\"\\u2A9E\",\"simgE;\":\"\\u2AA0\",\"siml;\":\"\\u2A9D\",\"simlE;\":\"\\u2A9F\",\"simne;\":\"\\u2246\",\"simplus;\":\"\\u2A24\",\"simrarr;\":\"\\u2972\",\"slarr;\":\"\\u2190\",\"SmallCircle;\":\"\\u2218\",\"smallsetminus;\":\"\\u2216\",\"smashp;\":\"\\u2A33\",\"smeparsl;\":\"\\u29E4\",\"smid;\":\"\\u2223\",\"smile;\":\"\\u2323\",\"smt;\":\"\\u2AAA\",\"smte;\":\"\\u2AAC\",\"smtes;\":\"\\u2AAC\\uFE00\",\"SOFTcy;\":\"\\u042C\",\"softcy;\":\"\\u044C\",\"sol;\":\"/\",\"solb;\":\"\\u29C4\",\"solbar;\":\"\\u233F\",\"Sopf;\":\"\\u{1D54A}\",\"sopf;\":\"\\u{1D564}\",\"spades;\":\"\\u2660\",\"spadesuit;\":\"\\u2660\",\"spar;\":\"\\u2225\",\"sqcap;\":\"\\u2293\",\"sqcaps;\":\"\\u2293\\uFE00\",\"sqcup;\":\"\\u2294\",\"sqcups;\":\"\\u2294\\uFE00\",\"Sqrt;\":\"\\u221A\",\"sqsub;\":\"\\u228F\",\"sqsube;\":\"\\u2291\",\"sqsubset;\":\"\\u228F\",\"sqsubseteq;\":\"\\u2291\",\"sqsup;\":\"\\u2290\",\"sqsupe;\":\"\\u2292\",\"sqsupset;\":\"\\u2290\",\"sqsupseteq;\":\"\\u2292\",\"squ;\":\"\\u25A1\",\"Square;\":\"\\u25A1\",\"square;\":\"\\u25A1\",\"SquareIntersection;\":\"\\u2293\",\"SquareSubset;\":\"\\u228F\",\"SquareSubsetEqual;\":\"\\u2291\",\"SquareSuperset;\":\"\\u2290\",\"SquareSupersetEqual;\":\"\\u2292\",\"SquareUnion;\":\"\\u2294\",\"squarf;\":\"\\u25AA\",\"squf;\":\"\\u25AA\",\"srarr;\":\"\\u2192\",\"Sscr;\":\"\\u{1D4AE}\",\"sscr;\":\"\\u{1D4C8}\",\"ssetmn;\":\"\\u2216\",\"ssmile;\":\"\\u2323\",\"sstarf;\":\"\\u22C6\",\"Star;\":\"\\u22C6\",\"star;\":\"\\u2606\",\"starf;\":\"\\u2605\",\"straightepsilon;\":\"\\u03F5\",\"straightphi;\":\"\\u03D5\",\"strns;\":\"\\xAF\",\"Sub;\":\"\\u22D0\",\"sub;\":\"\\u2282\",\"subdot;\":\"\\u2ABD\",\"subE;\":\"\\u2AC5\",\"sube;\":\"\\u2286\",\"subedot;\":\"\\u2AC3\",\"submult;\":\"\\u2AC1\",\"subnE;\":\"\\u2ACB\",\"subne;\":\"\\u228A\",\"subplus;\":\"\\u2ABF\",\"subrarr;\":\"\\u2979\",\"Subset;\":\"\\u22D0\",\"subset;\":\"\\u2282\",\"subseteq;\":\"\\u2286\",\"subseteqq;\":\"\\u2AC5\",\"SubsetEqual;\":\"\\u2286\",\"subsetneq;\":\"\\u228A\",\"subsetneqq;\":\"\\u2ACB\",\"subsim;\":\"\\u2AC7\",\"subsub;\":\"\\u2AD5\",\"subsup;\":\"\\u2AD3\",\"succ;\":\"\\u227B\",\"succapprox;\":\"\\u2AB8\",\"succcurlyeq;\":\"\\u227D\",\"Succeeds;\":\"\\u227B\",\"SucceedsEqual;\":\"\\u2AB0\",\"SucceedsSlantEqual;\":\"\\u227D\",\"SucceedsTilde;\":\"\\u227F\",\"succeq;\":\"\\u2AB0\",\"succnapprox;\":\"\\u2ABA\",\"succneqq;\":\"\\u2AB6\",\"succnsim;\":\"\\u22E9\",\"succsim;\":\"\\u227F\",\"SuchThat;\":\"\\u220B\",\"Sum;\":\"\\u2211\",\"sum;\":\"\\u2211\",\"sung;\":\"\\u266A\",\"Sup;\":\"\\u22D1\",\"sup;\":\"\\u2283\",\"sup1;\":\"\\xB9\",sup1:\"\\xB9\",\"sup2;\":\"\\xB2\",sup2:\"\\xB2\",\"sup3;\":\"\\xB3\",sup3:\"\\xB3\",\"supdot;\":\"\\u2ABE\",\"supdsub;\":\"\\u2AD8\",\"supE;\":\"\\u2AC6\",\"supe;\":\"\\u2287\",\"supedot;\":\"\\u2AC4\",\"Superset;\":\"\\u2283\",\"SupersetEqual;\":\"\\u2287\",\"suphsol;\":\"\\u27C9\",\"suphsub;\":\"\\u2AD7\",\"suplarr;\":\"\\u297B\",\"supmult;\":\"\\u2AC2\",\"supnE;\":\"\\u2ACC\",\"supne;\":\"\\u228B\",\"supplus;\":\"\\u2AC0\",\"Supset;\":\"\\u22D1\",\"supset;\":\"\\u2283\",\"supseteq;\":\"\\u2287\",\"supseteqq;\":\"\\u2AC6\",\"supsetneq;\":\"\\u228B\",\"supsetneqq;\":\"\\u2ACC\",\"supsim;\":\"\\u2AC8\",\"supsub;\":\"\\u2AD4\",\"supsup;\":\"\\u2AD6\",\"swarhk;\":\"\\u2926\",\"swArr;\":\"\\u21D9\",\"swarr;\":\"\\u2199\",\"swarrow;\":\"\\u2199\",\"swnwar;\":\"\\u292A\",\"szlig;\":\"\\xDF\",szlig:\"\\xDF\",\"Tab;\":\"\t\",\"target;\":\"\\u2316\",\"Tau;\":\"\\u03A4\",\"tau;\":\"\\u03C4\",\"tbrk;\":\"\\u23B4\",\"Tcaron;\":\"\\u0164\",\"tcaron;\":\"\\u0165\",\"Tcedil;\":\"\\u0162\",\"tcedil;\":\"\\u0163\",\"Tcy;\":\"\\u0422\",\"tcy;\":\"\\u0442\",\"tdot;\":\"\\u20DB\",\"telrec;\":\"\\u2315\",\"Tfr;\":\"\\u{1D517}\",\"tfr;\":\"\\u{1D531}\",\"there4;\":\"\\u2234\",\"Therefore;\":\"\\u2234\",\"therefore;\":\"\\u2234\",\"Theta;\":\"\\u0398\",\"theta;\":\"\\u03B8\",\"thetasym;\":\"\\u03D1\",\"thetav;\":\"\\u03D1\",\"thickapprox;\":\"\\u2248\",\"thicksim;\":\"\\u223C\",\"ThickSpace;\":\"\\u205F\\u200A\",\"thinsp;\":\"\\u2009\",\"ThinSpace;\":\"\\u2009\",\"thkap;\":\"\\u2248\",\"thksim;\":\"\\u223C\",\"THORN;\":\"\\xDE\",THORN:\"\\xDE\",\"thorn;\":\"\\xFE\",thorn:\"\\xFE\",\"Tilde;\":\"\\u223C\",\"tilde;\":\"\\u02DC\",\"TildeEqual;\":\"\\u2243\",\"TildeFullEqual;\":\"\\u2245\",\"TildeTilde;\":\"\\u2248\",\"times;\":\"\\xD7\",times:\"\\xD7\",\"timesb;\":\"\\u22A0\",\"timesbar;\":\"\\u2A31\",\"timesd;\":\"\\u2A30\",\"tint;\":\"\\u222D\",\"toea;\":\"\\u2928\",\"top;\":\"\\u22A4\",\"topbot;\":\"\\u2336\",\"topcir;\":\"\\u2AF1\",\"Topf;\":\"\\u{1D54B}\",\"topf;\":\"\\u{1D565}\",\"topfork;\":\"\\u2ADA\",\"tosa;\":\"\\u2929\",\"tprime;\":\"\\u2034\",\"TRADE;\":\"\\u2122\",\"trade;\":\"\\u2122\",\"triangle;\":\"\\u25B5\",\"triangledown;\":\"\\u25BF\",\"triangleleft;\":\"\\u25C3\",\"trianglelefteq;\":\"\\u22B4\",\"triangleq;\":\"\\u225C\",\"triangleright;\":\"\\u25B9\",\"trianglerighteq;\":\"\\u22B5\",\"tridot;\":\"\\u25EC\",\"trie;\":\"\\u225C\",\"triminus;\":\"\\u2A3A\",\"TripleDot;\":\"\\u20DB\",\"triplus;\":\"\\u2A39\",\"trisb;\":\"\\u29CD\",\"tritime;\":\"\\u2A3B\",\"trpezium;\":\"\\u23E2\",\"Tscr;\":\"\\u{1D4AF}\",\"tscr;\":\"\\u{1D4C9}\",\"TScy;\":\"\\u0426\",\"tscy;\":\"\\u0446\",\"TSHcy;\":\"\\u040B\",\"tshcy;\":\"\\u045B\",\"Tstrok;\":\"\\u0166\",\"tstrok;\":\"\\u0167\",\"twixt;\":\"\\u226C\",\"twoheadleftarrow;\":\"\\u219E\",\"twoheadrightarrow;\":\"\\u21A0\",\"Uacute;\":\"\\xDA\",Uacute:\"\\xDA\",\"uacute;\":\"\\xFA\",uacute:\"\\xFA\",\"Uarr;\":\"\\u219F\",\"uArr;\":\"\\u21D1\",\"uarr;\":\"\\u2191\",\"Uarrocir;\":\"\\u2949\",\"Ubrcy;\":\"\\u040E\",\"ubrcy;\":\"\\u045E\",\"Ubreve;\":\"\\u016C\",\"ubreve;\":\"\\u016D\",\"Ucirc;\":\"\\xDB\",Ucirc:\"\\xDB\",\"ucirc;\":\"\\xFB\",ucirc:\"\\xFB\",\"Ucy;\":\"\\u0423\",\"ucy;\":\"\\u0443\",\"udarr;\":\"\\u21C5\",\"Udblac;\":\"\\u0170\",\"udblac;\":\"\\u0171\",\"udhar;\":\"\\u296E\",\"ufisht;\":\"\\u297E\",\"Ufr;\":\"\\u{1D518}\",\"ufr;\":\"\\u{1D532}\",\"Ugrave;\":\"\\xD9\",Ugrave:\"\\xD9\",\"ugrave;\":\"\\xF9\",ugrave:\"\\xF9\",\"uHar;\":\"\\u2963\",\"uharl;\":\"\\u21BF\",\"uharr;\":\"\\u21BE\",\"uhblk;\":\"\\u2580\",\"ulcorn;\":\"\\u231C\",\"ulcorner;\":\"\\u231C\",\"ulcrop;\":\"\\u230F\",\"ultri;\":\"\\u25F8\",\"Umacr;\":\"\\u016A\",\"umacr;\":\"\\u016B\",\"uml;\":\"\\xA8\",uml:\"\\xA8\",\"UnderBar;\":\"_\",\"UnderBrace;\":\"\\u23DF\",\"UnderBracket;\":\"\\u23B5\",\"UnderParenthesis;\":\"\\u23DD\",\"Union;\":\"\\u22C3\",\"UnionPlus;\":\"\\u228E\",\"Uogon;\":\"\\u0172\",\"uogon;\":\"\\u0173\",\"Uopf;\":\"\\u{1D54C}\",\"uopf;\":\"\\u{1D566}\",\"UpArrow;\":\"\\u2191\",\"Uparrow;\":\"\\u21D1\",\"uparrow;\":\"\\u2191\",\"UpArrowBar;\":\"\\u2912\",\"UpArrowDownArrow;\":\"\\u21C5\",\"UpDownArrow;\":\"\\u2195\",\"Updownarrow;\":\"\\u21D5\",\"updownarrow;\":\"\\u2195\",\"UpEquilibrium;\":\"\\u296E\",\"upharpoonleft;\":\"\\u21BF\",\"upharpoonright;\":\"\\u21BE\",\"uplus;\":\"\\u228E\",\"UpperLeftArrow;\":\"\\u2196\",\"UpperRightArrow;\":\"\\u2197\",\"Upsi;\":\"\\u03D2\",\"upsi;\":\"\\u03C5\",\"upsih;\":\"\\u03D2\",\"Upsilon;\":\"\\u03A5\",\"upsilon;\":\"\\u03C5\",\"UpTee;\":\"\\u22A5\",\"UpTeeArrow;\":\"\\u21A5\",\"upuparrows;\":\"\\u21C8\",\"urcorn;\":\"\\u231D\",\"urcorner;\":\"\\u231D\",\"urcrop;\":\"\\u230E\",\"Uring;\":\"\\u016E\",\"uring;\":\"\\u016F\",\"urtri;\":\"\\u25F9\",\"Uscr;\":\"\\u{1D4B0}\",\"uscr;\":\"\\u{1D4CA}\",\"utdot;\":\"\\u22F0\",\"Utilde;\":\"\\u0168\",\"utilde;\":\"\\u0169\",\"utri;\":\"\\u25B5\",\"utrif;\":\"\\u25B4\",\"uuarr;\":\"\\u21C8\",\"Uuml;\":\"\\xDC\",Uuml:\"\\xDC\",\"uuml;\":\"\\xFC\",uuml:\"\\xFC\",\"uwangle;\":\"\\u29A7\",\"vangrt;\":\"\\u299C\",\"varepsilon;\":\"\\u03F5\",\"varkappa;\":\"\\u03F0\",\"varnothing;\":\"\\u2205\",\"varphi;\":\"\\u03D5\",\"varpi;\":\"\\u03D6\",\"varpropto;\":\"\\u221D\",\"vArr;\":\"\\u21D5\",\"varr;\":\"\\u2195\",\"varrho;\":\"\\u03F1\",\"varsigma;\":\"\\u03C2\",\"varsubsetneq;\":\"\\u228A\\uFE00\",\"varsubsetneqq;\":\"\\u2ACB\\uFE00\",\"varsupsetneq;\":\"\\u228B\\uFE00\",\"varsupsetneqq;\":\"\\u2ACC\\uFE00\",\"vartheta;\":\"\\u03D1\",\"vartriangleleft;\":\"\\u22B2\",\"vartriangleright;\":\"\\u22B3\",\"Vbar;\":\"\\u2AEB\",\"vBar;\":\"\\u2AE8\",\"vBarv;\":\"\\u2AE9\",\"Vcy;\":\"\\u0412\",\"vcy;\":\"\\u0432\",\"VDash;\":\"\\u22AB\",\"Vdash;\":\"\\u22A9\",\"vDash;\":\"\\u22A8\",\"vdash;\":\"\\u22A2\",\"Vdashl;\":\"\\u2AE6\",\"Vee;\":\"\\u22C1\",\"vee;\":\"\\u2228\",\"veebar;\":\"\\u22BB\",\"veeeq;\":\"\\u225A\",\"vellip;\":\"\\u22EE\",\"Verbar;\":\"\\u2016\",\"verbar;\":\"|\",\"Vert;\":\"\\u2016\",\"vert;\":\"|\",\"VerticalBar;\":\"\\u2223\",\"VerticalLine;\":\"|\",\"VerticalSeparator;\":\"\\u2758\",\"VerticalTilde;\":\"\\u2240\",\"VeryThinSpace;\":\"\\u200A\",\"Vfr;\":\"\\u{1D519}\",\"vfr;\":\"\\u{1D533}\",\"vltri;\":\"\\u22B2\",\"vnsub;\":\"\\u2282\\u20D2\",\"vnsup;\":\"\\u2283\\u20D2\",\"Vopf;\":\"\\u{1D54D}\",\"vopf;\":\"\\u{1D567}\",\"vprop;\":\"\\u221D\",\"vrtri;\":\"\\u22B3\",\"Vscr;\":\"\\u{1D4B1}\",\"vscr;\":\"\\u{1D4CB}\",\"vsubnE;\":\"\\u2ACB\\uFE00\",\"vsubne;\":\"\\u228A\\uFE00\",\"vsupnE;\":\"\\u2ACC\\uFE00\",\"vsupne;\":\"\\u228B\\uFE00\",\"Vvdash;\":\"\\u22AA\",\"vzigzag;\":\"\\u299A\",\"Wcirc;\":\"\\u0174\",\"wcirc;\":\"\\u0175\",\"wedbar;\":\"\\u2A5F\",\"Wedge;\":\"\\u22C0\",\"wedge;\":\"\\u2227\",\"wedgeq;\":\"\\u2259\",\"weierp;\":\"\\u2118\",\"Wfr;\":\"\\u{1D51A}\",\"wfr;\":\"\\u{1D534}\",\"Wopf;\":\"\\u{1D54E}\",\"wopf;\":\"\\u{1D568}\",\"wp;\":\"\\u2118\",\"wr;\":\"\\u2240\",\"wreath;\":\"\\u2240\",\"Wscr;\":\"\\u{1D4B2}\",\"wscr;\":\"\\u{1D4CC}\",\"xcap;\":\"\\u22C2\",\"xcirc;\":\"\\u25EF\",\"xcup;\":\"\\u22C3\",\"xdtri;\":\"\\u25BD\",\"Xfr;\":\"\\u{1D51B}\",\"xfr;\":\"\\u{1D535}\",\"xhArr;\":\"\\u27FA\",\"xharr;\":\"\\u27F7\",\"Xi;\":\"\\u039E\",\"xi;\":\"\\u03BE\",\"xlArr;\":\"\\u27F8\",\"xlarr;\":\"\\u27F5\",\"xmap;\":\"\\u27FC\",\"xnis;\":\"\\u22FB\",\"xodot;\":\"\\u2A00\",\"Xopf;\":\"\\u{1D54F}\",\"xopf;\":\"\\u{1D569}\",\"xoplus;\":\"\\u2A01\",\"xotime;\":\"\\u2A02\",\"xrArr;\":\"\\u27F9\",\"xrarr;\":\"\\u27F6\",\"Xscr;\":\"\\u{1D4B3}\",\"xscr;\":\"\\u{1D4CD}\",\"xsqcup;\":\"\\u2A06\",\"xuplus;\":\"\\u2A04\",\"xutri;\":\"\\u25B3\",\"xvee;\":\"\\u22C1\",\"xwedge;\":\"\\u22C0\",\"Yacute;\":\"\\xDD\",Yacute:\"\\xDD\",\"yacute;\":\"\\xFD\",yacute:\"\\xFD\",\"YAcy;\":\"\\u042F\",\"yacy;\":\"\\u044F\",\"Ycirc;\":\"\\u0176\",\"ycirc;\":\"\\u0177\",\"Ycy;\":\"\\u042B\",\"ycy;\":\"\\u044B\",\"yen;\":\"\\xA5\",yen:\"\\xA5\",\"Yfr;\":\"\\u{1D51C}\",\"yfr;\":\"\\u{1D536}\",\"YIcy;\":\"\\u0407\",\"yicy;\":\"\\u0457\",\"Yopf;\":\"\\u{1D550}\",\"yopf;\":\"\\u{1D56A}\",\"Yscr;\":\"\\u{1D4B4}\",\"yscr;\":\"\\u{1D4CE}\",\"YUcy;\":\"\\u042E\",\"yucy;\":\"\\u044E\",\"Yuml;\":\"\\u0178\",\"yuml;\":\"\\xFF\",yuml:\"\\xFF\",\"Zacute;\":\"\\u0179\",\"zacute;\":\"\\u017A\",\"Zcaron;\":\"\\u017D\",\"zcaron;\":\"\\u017E\",\"Zcy;\":\"\\u0417\",\"zcy;\":\"\\u0437\",\"Zdot;\":\"\\u017B\",\"zdot;\":\"\\u017C\",\"zeetrf;\":\"\\u2128\",\"ZeroWidthSpace;\":\"\\u200B\",\"Zeta;\":\"\\u0396\",\"zeta;\":\"\\u03B6\",\"Zfr;\":\"\\u2128\",\"zfr;\":\"\\u{1D537}\",\"ZHcy;\":\"\\u0416\",\"zhcy;\":\"\\u0436\",\"zigrarr;\":\"\\u21DD\",\"Zopf;\":\"\\u2124\",\"zopf;\":\"\\u{1D56B}\",\"Zscr;\":\"\\u{1D4B5}\",\"zscr;\":\"\\u{1D4CF}\",\"zwj;\":\"\\u200D\",\"zwnj;\":\"\\u200C\"};function ae(t,i){if(t.length<i.length)return!1;for(var o=0;o<i.length;o++)if(t[o]!==i[o])return!1;return!0}function Gt(t,i){var o=t.length-i.length;return o>0?t.lastIndexOf(i)===o:o===0?t===i:!1}function pt(t,i){for(var o=\"\";i>0;)(i&1)===1&&(o+=t),t+=t,i=i>>>1;return o}var Xn=\"a\".charCodeAt(0),Yn=\"z\".charCodeAt(0),$n=\"A\".charCodeAt(0),Qn=\"Z\".charCodeAt(0),Zn=\"0\".charCodeAt(0),Kn=\"9\".charCodeAt(0);function ge(t,i){var o=t.charCodeAt(i);return Xn<=o&&o<=Yn||$n<=o&&o<=Qn||Zn<=o&&o<=Kn}function Ae(t){return typeof t<\"u\"}function Vt(t){if(!!t)return typeof t==\"string\"?{kind:\"markdown\",value:t}:{kind:\"markdown\",value:t.value}}var Ge=function(){function t(i,o){var n=this;this.id=i,this._tags=[],this._tagMap={},this._valueSetMap={},this._tags=o.tags||[],this._globalAttributes=o.globalAttributes||[],this._tags.forEach(function(e){n._tagMap[e.name.toLowerCase()]=e}),o.valueSets&&o.valueSets.forEach(function(e){n._valueSetMap[e.name]=e.values})}return t.prototype.isApplicable=function(){return!0},t.prototype.getId=function(){return this.id},t.prototype.provideTags=function(){return this._tags},t.prototype.provideAttributes=function(i){var o=[],n=function(a){o.push(a)},e=this._tagMap[i.toLowerCase()];return e&&e.attributes.forEach(n),this._globalAttributes.forEach(n),o},t.prototype.provideValues=function(i,o){var n=this,e=[];o=o.toLowerCase();var a=function(l){l.forEach(function(r){r.name.toLowerCase()===o&&(r.values&&r.values.forEach(function(s){e.push(s)}),r.valueSet&&n._valueSetMap[r.valueSet]&&n._valueSetMap[r.valueSet].forEach(function(s){e.push(s)}))})},c=this._tagMap[i.toLowerCase()];return c&&a(c.attributes),a(this._globalAttributes),e},t}();function le(t,i,o){i===void 0&&(i={});var n={kind:o?\"markdown\":\"plaintext\",value:\"\"};if(t.description&&i.documentation!==!1){var e=Vt(t.description);e&&(n.value+=e.value)}if(t.references&&t.references.length>0&&i.references!==!1&&(n.value.length&&(n.value+=`\n\n`),o?n.value+=t.references.map(function(a){return\"[\".concat(a.name,\"](\").concat(a.url,\")\")}).join(\" | \"):n.value+=t.references.map(function(a){return\"\".concat(a.name,\": \").concat(a.url)}).join(`\n`)),n.value!==\"\")return n}var Jt=function(t,i,o,n){function e(a){return a instanceof o?a:new o(function(c){c(a)})}return new(o||(o=Promise))(function(a,c){function l(u){try{s(n.next(u))}catch(h){c(h)}}function r(u){try{s(n.throw(u))}catch(h){c(h)}}function s(u){u.done?a(u.value):e(u.value).then(l,r)}s((n=n.apply(t,i||[])).next())})},Xt=function(t,i){var o={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,e,a,c;return c={next:l(0),throw:l(1),return:l(2)},typeof Symbol==\"function\"&&(c[Symbol.iterator]=function(){return this}),c;function l(s){return function(u){return r([s,u])}}function r(s){if(n)throw new TypeError(\"Generator is already executing.\");for(;o;)try{if(n=1,e&&(a=s[0]&2?e.return:s[0]?e.throw||((a=e.return)&&a.call(e),0):e.next)&&!(a=a.call(e,s[1])).done)return a;switch(e=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,e=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(a=o.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){o=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]<a[3])){o.label=s[1];break}if(s[0]===6&&o.label<a[1]){o.label=a[1],a=s;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(s);break}a[2]&&o.ops.pop(),o.trys.pop();continue}s=i.call(t,o)}catch(u){s=[6,u],e=0}finally{n=a=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}},Yt=function(){function t(i){this.readDirectory=i,this.atributeCompletions=[]}return t.prototype.onHtmlAttributeValue=function(i){ri(i.tag,i.attribute)&&this.atributeCompletions.push(i)},t.prototype.computeCompletions=function(i,o){return Jt(this,void 0,void 0,function(){var n,e,a,c,l,r,s,u,h,d;return Xt(this,function(g){switch(g.label){case 0:n={items:[],isIncomplete:!1},e=0,a=this.atributeCompletions,g.label=1;case 1:return e<a.length?(c=a[e],l=ni(i.getText(c.range)),ii(l)?l===\".\"||l===\"..\"?(n.isIncomplete=!0,[3,4]):[3,2]:[3,4]):[3,5];case 2:return r=ai(c.value,l,c.range),[4,this.providePathSuggestions(c.value,r,i,o)];case 3:for(s=g.sent(),u=0,h=s;u<h.length;u++)d=h[u],n.items.push(d);g.label=4;case 4:return e++,[3,1];case 5:return[2,n]}})})},t.prototype.providePathSuggestions=function(i,o,n,e){return Jt(this,void 0,void 0,function(){var a,c,l,r,s,u,h,d,g,y;return Xt(this,function(m){switch(m.label){case 0:if(a=i.substring(0,i.lastIndexOf(\"/\")+1),c=e.resolveReference(a||\".\",n.uri),!c)return[3,4];m.label=1;case 1:return m.trys.push([1,3,,4]),l=[],[4,this.readDirectory(c)];case 2:for(r=m.sent(),s=0,u=r;s<u.length;s++)h=u[s],d=h[0],g=h[1],d.charCodeAt(0)!==ti&&l.push(oi(d,g===Oe.Directory,o));return[2,l];case 3:return y=m.sent(),[3,4];case 4:return[2,[]]}})})},t}();var ti=\".\".charCodeAt(0);function ni(t){return ae(t,\"'\")||ae(t,'\"')?t.slice(1,-1):t}function ii(t){return!(ae(t,\"http\")||ae(t,\"https\")||ae(t,\"//\"))}function ri(t,i){if(i===\"src\"||i===\"href\")return!0;var o=li[t];return o?typeof o==\"string\"?o===i:o.indexOf(i)!==-1:!1}function ai(t,i,o){var n,e=t.lastIndexOf(\"/\");if(e===-1)n=si(o,1,-1);else{var a=i.slice(e+1),c=ze(o.end,-1-a.length),l=a.indexOf(\" \"),r=void 0;l!==-1?r=ze(c,l):r=ze(o.end,-1),n=P.create(c,r)}return n}function oi(t,i,o){return i?(t=t+\"/\",{label:t,kind:Q.Folder,textEdit:Y.replace(o,t),command:{title:\"Suggest\",command:\"editor.action.triggerSuggest\"}}):{label:t,kind:Q.File,textEdit:Y.replace(o,t)}}function ze(t,i){return X.create(t.line,t.character+i)}function si(t,i,o){var n=ze(t.start,i),e=ze(t.end,o);return P.create(n,e)}var li={a:\"href\",area:\"href\",body:\"background\",del:\"cite\",form:\"action\",frame:[\"src\",\"longdesc\"],img:[\"src\",\"longdesc\"],ins:\"cite\",link:\"href\",object:\"data\",q:\"cite\",script:\"src\",audio:\"src\",button:\"formaction\",command:\"icon\",embed:\"src\",html:\"manifest\",input:[\"src\",\"formaction\"],source:\"src\",track:\"src\",video:[\"src\",\"poster\"]};var ui=function(t,i,o,n){function e(a){return a instanceof o?a:new o(function(c){c(a)})}return new(o||(o=Promise))(function(a,c){function l(u){try{s(n.next(u))}catch(h){c(h)}}function r(u){try{s(n.throw(u))}catch(h){c(h)}}function s(u){u.done?a(u.value):e(u.value).then(l,r)}s((n=n.apply(t,i||[])).next())})},ci=function(t,i){var o={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,e,a,c;return c={next:l(0),throw:l(1),return:l(2)},typeof Symbol==\"function\"&&(c[Symbol.iterator]=function(){return this}),c;function l(s){return function(u){return r([s,u])}}function r(s){if(n)throw new TypeError(\"Generator is already executing.\");for(;o;)try{if(n=1,e&&(a=s[0]&2?e.return:s[0]?e.throw||((a=e.return)&&a.call(e),0):e.next)&&!(a=a.call(e,s[1])).done)return a;switch(e=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,e=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(a=o.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){o=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]<a[3])){o.label=s[1];break}if(s[0]===6&&o.label<a[1]){o.label=a[1],a=s;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(s);break}a[2]&&o.ops.pop(),o.trys.pop();continue}s=i.call(t,o)}catch(u){s=[6,u],e=0}finally{n=a=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}},hi=be(),Qt=function(){function t(i,o){this.lsOptions=i,this.dataManager=o,this.completionParticipants=[]}return t.prototype.setCompletionParticipants=function(i){this.completionParticipants=i||[]},t.prototype.doComplete2=function(i,o,n,e,a){return ui(this,void 0,void 0,function(){var c,l,r,s;return ci(this,function(u){switch(u.label){case 0:if(!this.lsOptions.fileSystemProvider||!this.lsOptions.fileSystemProvider.readDirectory)return[2,this.doComplete(i,o,n,a)];c=new Yt(this.lsOptions.fileSystemProvider.readDirectory),l=this.completionParticipants,this.completionParticipants=[c].concat(l),r=this.doComplete(i,o,n,a),u.label=1;case 1:return u.trys.push([1,,3,4]),[4,c.computeCompletions(i,e)];case 2:return s=u.sent(),[2,{isIncomplete:r.isIncomplete||s.isIncomplete,items:s.items.concat(r.items)}];case 3:return this.completionParticipants=l,[7];case 4:return[2]}})})},t.prototype.doComplete=function(i,o,n,e){var a=this._doComplete(i,o,n,e);return this.convertCompletionList(a)},t.prototype._doComplete=function(i,o,n,e){var a={isIncomplete:!1,items:[]},c=this.completionParticipants,l=this.dataManager.getDataProviders().filter(function(x){return x.isApplicable(i.languageId)&&(!e||e[x.getId()]!==!1)}),r=this.doesSupportMarkdown(),s=i.getText(),u=i.offsetAt(o),h=n.findNodeBefore(u);if(!h)return a;var d=$(s,h.start),g=\"\",y;function m(x,D){return D===void 0&&(D=u),x>u&&(x=u),{start:i.positionAt(x),end:i.positionAt(D)}}function A(x,D){var L=m(x,D);return l.forEach(function(q){q.provideTags().forEach(function(j){a.items.push({label:j.name,kind:Q.Property,documentation:le(j,void 0,r),textEdit:Y.replace(L,j.name),insertTextFormat:ne.PlainText})})}),a}function E(x){for(var D=x;D>0;){var L=s.charAt(D-1);if(`\n\\r`.indexOf(L)>=0)return s.substring(D,x);if(!Ve(L))return null;D--}return s.substring(0,x)}function w(x,D,L){L===void 0&&(L=u);var q=m(x,L),j=$t(s,L,W.WithinEndTag,S.EndTagClose)?\"\":\">\",O=h;for(D&&(O=O.parent);O;){var V=O.tag;if(V&&(!O.closed||O.endTagStart&&O.endTagStart>u)){var K={label:\"/\"+V,kind:Q.Property,filterText:\"/\"+V,textEdit:Y.replace(q,\"/\"+V+j),insertTextFormat:ne.PlainText},oe=E(O.start),ue=E(x-1);if(oe!==null&&ue!==null&&oe!==ue){var te=oe+\"</\"+V+j;K.textEdit=Y.replace(m(x-1-ue.length),te),K.filterText=ue+\"</\"+V}return a.items.push(K),a}O=O.parent}return D||l.forEach(function(de){de.provideTags().forEach(function(re){a.items.push({label:\"/\"+re.name,kind:Q.Property,documentation:le(re,void 0,r),filterText:\"/\"+re.name+j,textEdit:Y.replace(q,\"/\"+re.name+j),insertTextFormat:ne.PlainText})})}),a}function M(x,D){if(e&&e.hideAutoCompleteProposals)return a;if(!me(D)){var L=i.positionAt(x);a.items.push({label:\"</\"+D+\">\",kind:Q.Property,filterText:\"</\"+D+\">\",textEdit:Y.insert(L,\"$0</\"+D+\">\"),insertTextFormat:ne.Snippet})}return a}function B(x,D){return A(x,D),w(x,!0,D),a}function G(){var x=Object.create(null);return h.attributeNames.forEach(function(D){x[D]=!0}),x}function J(x,D){var L;D===void 0&&(D=u);for(var q=u;q<D&&s[q]!==\"<\";)q++;var j=s.substring(x,D),O=m(x,q),V=\"\";if(!$t(s,D,W.AfterAttributeName,S.DelimiterAssign)){var K=(L=e?.attributeDefaultValue)!==null&&L!==void 0?L:\"doublequotes\";K===\"empty\"?V=\"=$1\":K===\"singlequotes\"?V=\"='$1'\":V='=\"$1\"'}var oe=G();return oe[j]=!1,l.forEach(function(ue){ue.provideAttributes(g).forEach(function(te){if(!oe[te.name]){oe[te.name]=!0;var de=te.name,re;te.valueSet!==\"v\"&&V.length&&(de=de+V,(te.valueSet||te.name===\"style\")&&(re={title:\"Suggest\",command:\"editor.action.triggerSuggest\"})),a.items.push({label:te.name,kind:te.valueSet===\"handler\"?Q.Function:Q.Value,documentation:le(te,void 0,r),textEdit:Y.replace(O,de),insertTextFormat:ne.Snippet,command:re})}})}),f(O,oe),a}function f(x,D){var L=\"data-\",q={};q[L]=\"\".concat(L,'$1=\"$2\"');function j(O){O.attributeNames.forEach(function(V){ae(V,L)&&!q[V]&&!D[V]&&(q[V]=V+'=\"$1\"')}),O.children.forEach(function(V){return j(V)})}n&&n.roots.forEach(function(O){return j(O)}),Object.keys(q).forEach(function(O){return a.items.push({label:O,kind:Q.Value,textEdit:Y.replace(x,q[O]),insertTextFormat:ne.Snippet})})}function p(x,D){D===void 0&&(D=u);var L,q,j;if(u>x&&u<=D&&di(s[x])){var O=x+1,V=D;D>x&&s[D-1]===s[x]&&V--;var K=pi(s,u,O),oe=mi(s,u,V);L=m(K,oe),j=u>=O&&u<=V?s.substring(O,u):\"\",q=!1}else L=m(x,D),j=s.substring(x,u),q=!0;if(c.length>0)for(var ue=g.toLowerCase(),te=y.toLowerCase(),de=m(x,D),re=0,vt=c;re<vt.length;re++){var wt=vt[re];wt.onHtmlAttributeValue&&wt.onHtmlAttributeValue({document:i,position:o,tag:ue,attribute:te,value:j,range:de})}return l.forEach(function(An){An.provideValues(g,y).forEach(function(He){var _t=q?'\"'+He.name+'\"':He.name;a.items.push({label:He.name,filterText:_t,kind:Q.Unit,documentation:le(He,void 0,r),textEdit:Y.replace(L,_t),insertTextFormat:ne.PlainText})})}),R(),a}function b(x){return u===d.getTokenEnd()&&(H=d.scan(),H===x&&d.getTokenOffset()===u)?d.getTokenEnd():u}function N(){for(var x=0,D=c;x<D.length;x++){var L=D[x];L.onHtmlContent&&L.onHtmlContent({document:i,position:o})}return R()}function R(){for(var x=u-1,D=o.character;x>=0&&ge(s,x);)x--,D--;if(x>=0&&s[x]===\"&\"){var L=P.create(X.create(o.line,D-1),o);for(var q in fe)if(Gt(q,\";\")){var j=\"&\"+q;a.items.push({label:j,kind:Q.Keyword,documentation:hi(\"entity.propose\",\"Character entity representing '\".concat(fe[q],\"'\")),textEdit:Y.replace(L,j),insertTextFormat:ne.PlainText})}}return a}function U(x,D){var L=m(x,D);a.items.push({label:\"!DOCTYPE\",kind:Q.Property,documentation:\"A preamble for an HTML document.\",textEdit:Y.replace(L,\"!DOCTYPE html>\"),insertTextFormat:ne.PlainText})}for(var H=d.scan();H!==S.EOS&&d.getTokenOffset()<=u;){switch(H){case S.StartTagOpen:if(d.getTokenEnd()===u){var z=b(S.StartTag);return o.line===0&&U(u,z),B(u,z)}break;case S.StartTag:if(d.getTokenOffset()<=u&&u<=d.getTokenEnd())return A(d.getTokenOffset(),d.getTokenEnd());g=d.getTokenText();break;case S.AttributeName:if(d.getTokenOffset()<=u&&u<=d.getTokenEnd())return J(d.getTokenOffset(),d.getTokenEnd());y=d.getTokenText();break;case S.DelimiterAssign:if(d.getTokenEnd()===u){var z=b(S.AttributeValue);return p(u,z)}break;case S.AttributeValue:if(d.getTokenOffset()<=u&&u<=d.getTokenEnd())return p(d.getTokenOffset(),d.getTokenEnd());break;case S.Whitespace:if(u<=d.getTokenEnd())switch(d.getScannerState()){case W.AfterOpeningStartTag:var I=d.getTokenOffset(),F=b(S.StartTag);return B(I,F);case W.WithinTag:case W.AfterAttributeName:return J(d.getTokenEnd());case W.BeforeAttributeValue:return p(d.getTokenEnd());case W.AfterOpeningEndTag:return w(d.getTokenOffset()-1,!1);case W.WithinContent:return N()}break;case S.EndTagOpen:if(u<=d.getTokenEnd()){var T=d.getTokenOffset()+1,v=b(S.EndTag);return w(T,!1,v)}break;case S.EndTag:if(u<=d.getTokenEnd())for(var k=d.getTokenOffset()-1;k>=0;){var C=s.charAt(k);if(C===\"/\")return w(k,!1,d.getTokenEnd());if(!Ve(C))break;k--}break;case S.StartTagClose:if(u<=d.getTokenEnd()&&g)return M(d.getTokenEnd(),g);break;case S.Content:if(u<=d.getTokenEnd())return N();break;default:if(u<=d.getTokenEnd())return a;break}H=d.scan()}return a},t.prototype.doQuoteComplete=function(i,o,n,e){var a,c=i.offsetAt(o);if(c<=0)return null;var l=(a=e?.attributeDefaultValue)!==null&&a!==void 0?a:\"doublequotes\";if(l===\"empty\")return null;var r=i.getText().charAt(c-1);if(r!==\"=\")return null;var s=l===\"doublequotes\"?'\"$1\"':\"'$1'\",u=n.findNodeBefore(c);if(u&&u.attributes&&u.start<c&&(!u.endTagStart||u.endTagStart>c))for(var h=$(i.getText(),u.start),d=h.scan();d!==S.EOS&&h.getTokenEnd()<=c;){if(d===S.AttributeName&&h.getTokenEnd()===c-1)return d=h.scan(),d!==S.DelimiterAssign||(d=h.scan(),d===S.Unknown||d===S.AttributeValue)?null:s;d=h.scan()}return null},t.prototype.doTagComplete=function(i,o,n){var e=i.offsetAt(o);if(e<=0)return null;var a=i.getText().charAt(e-1);if(a===\">\"){var c=n.findNodeBefore(e);if(c&&c.tag&&!me(c.tag)&&c.start<e&&(!c.endTagStart||c.endTagStart>e))for(var l=$(i.getText(),c.start),r=l.scan();r!==S.EOS&&l.getTokenEnd()<=e;){if(r===S.StartTagClose&&l.getTokenEnd()===e)return\"$0</\".concat(c.tag,\">\");r=l.scan()}}else if(a===\"/\"){for(var c=n.findNodeBefore(e);c&&c.closed&&!(c.endTagStart&&c.endTagStart>e);)c=c.parent;if(c&&c.tag)for(var l=$(i.getText(),c.start),r=l.scan();r!==S.EOS&&l.getTokenEnd()<=e;){if(r===S.EndTagOpen&&l.getTokenEnd()===e)return\"\".concat(c.tag,\">\");r=l.scan()}}return null},t.prototype.convertCompletionList=function(i){return this.doesSupportMarkdown()||i.items.forEach(function(o){o.documentation&&typeof o.documentation!=\"string\"&&(o.documentation={kind:\"plaintext\",value:o.documentation.value})}),i},t.prototype.doesSupportMarkdown=function(){var i,o,n;if(!Ae(this.supportsMarkdown)){if(!Ae(this.lsOptions.clientCapabilities))return this.supportsMarkdown=!0,this.supportsMarkdown;var e=(n=(o=(i=this.lsOptions.clientCapabilities.textDocument)===null||i===void 0?void 0:i.completion)===null||o===void 0?void 0:o.completionItem)===null||n===void 0?void 0:n.documentationFormat;this.supportsMarkdown=Array.isArray(e)&&e.indexOf(ee.Markdown)!==-1}return this.supportsMarkdown},t}();function di(t){return/^[\"']*$/.test(t)}function Ve(t){return/^\\s*$/.test(t)}function $t(t,i,o,n){for(var e=$(t,i,o),a=e.scan();a===S.Whitespace;)a=e.scan();return a===n}function pi(t,i,o){for(;i>o&&!Ve(t[i-1]);)i--;return i}function mi(t,i,o){for(;i<o&&!Ve(t[i]);)i++;return i}var fi=be(),Zt=function(){function t(i,o){this.lsOptions=i,this.dataManager=o}return t.prototype.doHover=function(i,o,n,e){var a=this.convertContents.bind(this),c=this.doesSupportMarkdown(),l=i.offsetAt(o),r=n.findNodeAt(l),s=i.getText();if(!r||!r.tag)return null;var u=this.dataManager.getDataProviders().filter(function(U){return U.isApplicable(i.languageId)});function h(U,H,z){for(var I=function(C){var x=null;if(C.provideTags().forEach(function(D){if(D.name.toLowerCase()===U.toLowerCase()){var L=le(D,e,c);L||(L={kind:c?\"markdown\":\"plaintext\",value:\"\"}),x={contents:L,range:H}}}),x)return x.contents=a(x.contents),{value:x}},F=0,T=u;F<T.length;F++){var v=T[F],k=I(v);if(typeof k==\"object\")return k.value}return null}function d(U,H,z){for(var I=function(C){var x=null;if(C.provideAttributes(U).forEach(function(D){if(H===D.name&&D.description){var L=le(D,e,c);L?x={contents:L,range:z}:x=null}}),x)return x.contents=a(x.contents),{value:x}},F=0,T=u;F<T.length;F++){var v=T[F],k=I(v);if(typeof k==\"object\")return k.value}return null}function g(U,H,z,I){for(var F=function(x){var D=null;if(x.provideValues(U,H).forEach(function(L){if(z===L.name&&L.description){var q=le(L,e,c);q?D={contents:q,range:I}:D=null}}),D)return D.contents=a(D.contents),{value:D}},T=0,v=u;T<v.length;T++){var k=v[T],C=F(k);if(typeof C==\"object\")return C.value}return null}function y(U,H){var z=E(U);for(var I in fe){var F=null,T=\"&\"+I;if(z===T){var v=fe[I].charCodeAt(0).toString(16).toUpperCase(),k=\"U+\";if(v.length<4)for(var C=4-v.length,x=0;x<C;)k+=\"0\",x+=1;k+=v;var D=fi(\"entity.propose\",\"Character entity representing '\".concat(fe[I],\"', unicode equivalent '\").concat(k,\"'\"));D?F={contents:D,range:H}:F=null}if(F)return F.contents=a(F.contents),F}return null}function m(U,H){for(var z=$(i.getText(),H),I=z.scan();I!==S.EOS&&(z.getTokenEnd()<l||z.getTokenEnd()===l&&I!==U);)I=z.scan();return I===U&&l<=z.getTokenEnd()?{start:i.positionAt(z.getTokenOffset()),end:i.positionAt(z.getTokenEnd())}:null}function A(){for(var U=l-1,H=o.character;U>=0&&ge(s,U);)U--,H--;for(var z=U+1,I=H;ge(s,z);)z++,I++;if(U>=0&&s[U]===\"&\"){var F=null;return s[z]===\";\"?F=P.create(X.create(o.line,H),X.create(o.line,I+1)):F=P.create(X.create(o.line,H),X.create(o.line,I)),F}return null}function E(U){for(var H=l-1,z=\"&\";H>=0&&ge(U,H);)H--;for(H=H+1;ge(U,H);)z+=U[H],H+=1;return z+=\";\",z}if(r.endTagStart&&l>=r.endTagStart){var w=m(S.EndTag,r.endTagStart);return w?h(r.tag,w,!1):null}var M=m(S.StartTag,r.start);if(M)return h(r.tag,M,!0);var B=m(S.AttributeName,r.start);if(B){var G=r.tag,J=i.getText(B);return d(G,J,B)}var f=A();if(f)return y(s,f);function p(U,H){for(var z=$(i.getText(),U),I=z.scan(),F=void 0;I!==S.EOS&&z.getTokenEnd()<=H;)I=z.scan(),I===S.AttributeName&&(F=z.getTokenText());return F}var b=m(S.AttributeValue,r.start);if(b){var G=r.tag,N=gi(i.getText(b)),R=p(r.start,i.offsetAt(b.start));if(R)return g(G,R,N,b)}return null},t.prototype.convertContents=function(i){if(!this.doesSupportMarkdown()){if(typeof i==\"string\")return i;if(\"kind\"in i)return{kind:\"plaintext\",value:i.value};if(Array.isArray(i))i.map(function(o){return typeof o==\"string\"?o:o.value});else return i.value}return i},t.prototype.doesSupportMarkdown=function(){var i,o,n;if(!Ae(this.supportsMarkdown)){if(!Ae(this.lsOptions.clientCapabilities))return this.supportsMarkdown=!0,this.supportsMarkdown;var e=(n=(o=(i=this.lsOptions.clientCapabilities)===null||i===void 0?void 0:i.textDocument)===null||o===void 0?void 0:o.hover)===null||n===void 0?void 0:n.contentFormat;this.supportsMarkdown=Array.isArray(e)&&e.indexOf(ee.Markdown)!==-1}return this.supportsMarkdown},t}();function gi(t){return t.length<=1?t.replace(/['\"]/,\"\"):((t[0]===\"'\"||t[0]==='\"')&&(t=t.slice(1)),(t[t.length-1]===\"'\"||t[t.length-1]==='\"')&&(t=t.slice(0,-1)),t)}function Kt(t,i){return t}var en;(function(){\"use strict\";var t=[,,function(e){function a(r){this.__parent=r,this.__character_count=0,this.__indent_count=-1,this.__alignment_count=0,this.__wrap_point_index=0,this.__wrap_point_character_count=0,this.__wrap_point_indent_count=-1,this.__wrap_point_alignment_count=0,this.__items=[]}a.prototype.clone_empty=function(){var r=new a(this.__parent);return r.set_indent(this.__indent_count,this.__alignment_count),r},a.prototype.item=function(r){return r<0?this.__items[this.__items.length+r]:this.__items[r]},a.prototype.has_match=function(r){for(var s=this.__items.length-1;s>=0;s--)if(this.__items[s].match(r))return!0;return!1},a.prototype.set_indent=function(r,s){this.is_empty()&&(this.__indent_count=r||0,this.__alignment_count=s||0,this.__character_count=this.__parent.get_indent_size(this.__indent_count,this.__alignment_count))},a.prototype._set_wrap_point=function(){this.__parent.wrap_line_length&&(this.__wrap_point_index=this.__items.length,this.__wrap_point_character_count=this.__character_count,this.__wrap_point_indent_count=this.__parent.next_line.__indent_count,this.__wrap_point_alignment_count=this.__parent.next_line.__alignment_count)},a.prototype._should_wrap=function(){return this.__wrap_point_index&&this.__character_count>this.__parent.wrap_line_length&&this.__wrap_point_character_count>this.__parent.next_line.__character_count},a.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var r=this.__parent.current_line;return r.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),r.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),r.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count,r.__items[0]===\" \"&&(r.__items.splice(0,1),r.__character_count-=1),!0}return!1},a.prototype.is_empty=function(){return this.__items.length===0},a.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},a.prototype.push=function(r){this.__items.push(r);var s=r.lastIndexOf(`\n`);s!==-1?this.__character_count=r.length-s:this.__character_count+=r.length},a.prototype.pop=function(){var r=null;return this.is_empty()||(r=this.__items.pop(),this.__character_count-=r.length),r},a.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},a.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},a.prototype.trim=function(){for(;this.last()===\" \";)this.__items.pop(),this.__character_count-=1},a.prototype.toString=function(){var r=\"\";return this.is_empty()?this.__parent.indent_empty_lines&&(r=this.__parent.get_indent_string(this.__indent_count)):(r=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),r+=this.__items.join(\"\")),r};function c(r,s){this.__cache=[\"\"],this.__indent_size=r.indent_size,this.__indent_string=r.indent_char,r.indent_with_tabs||(this.__indent_string=new Array(r.indent_size+1).join(r.indent_char)),s=s||\"\",r.indent_level>0&&(s=new Array(r.indent_level+1).join(this.__indent_string)),this.__base_string=s,this.__base_string_length=s.length}c.prototype.get_indent_size=function(r,s){var u=this.__base_string_length;return s=s||0,r<0&&(u=0),u+=r*this.__indent_size,u+=s,u},c.prototype.get_indent_string=function(r,s){var u=this.__base_string;return s=s||0,r<0&&(r=0,u=\"\"),s+=r*this.__indent_size,this.__ensure_cache(s),u+=this.__cache[s],u},c.prototype.__ensure_cache=function(r){for(;r>=this.__cache.length;)this.__add_column()},c.prototype.__add_column=function(){var r=this.__cache.length,s=0,u=\"\";this.__indent_size&&r>=this.__indent_size&&(s=Math.floor(r/this.__indent_size),r-=s*this.__indent_size,u=new Array(s+1).join(this.__indent_string)),r&&(u+=new Array(r+1).join(\" \")),this.__cache.push(u)};function l(r,s){this.__indent_cache=new c(r,s),this.raw=!1,this._end_with_newline=r.end_with_newline,this.indent_size=r.indent_size,this.wrap_line_length=r.wrap_line_length,this.indent_empty_lines=r.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new a(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}l.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},l.prototype.get_line_number=function(){return this.__lines.length},l.prototype.get_indent_string=function(r,s){return this.__indent_cache.get_indent_string(r,s)},l.prototype.get_indent_size=function(r,s){return this.__indent_cache.get_indent_size(r,s)},l.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},l.prototype.add_new_line=function(r){return this.is_empty()||!r&&this.just_added_newline()?!1:(this.raw||this.__add_outputline(),!0)},l.prototype.get_code=function(r){this.trim(!0);var s=this.current_line.pop();s&&(s[s.length-1]===`\n`&&(s=s.replace(/\\n+$/g,\"\")),this.current_line.push(s)),this._end_with_newline&&this.__add_outputline();var u=this.__lines.join(`\n`);return r!==`\n`&&(u=u.replace(/[\\n]/g,r)),u},l.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},l.prototype.set_indent=function(r,s){return r=r||0,s=s||0,this.next_line.set_indent(r,s),this.__lines.length>1?(this.current_line.set_indent(r,s),!0):(this.current_line.set_indent(),!1)},l.prototype.add_raw_token=function(r){for(var s=0;s<r.newlines;s++)this.__add_outputline();this.current_line.set_indent(-1),this.current_line.push(r.whitespace_before),this.current_line.push(r.text),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1},l.prototype.add_token=function(r){this.__add_space_before_token(),this.current_line.push(r),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=this.current_line._allow_wrap()},l.prototype.__add_space_before_token=function(){this.space_before_token&&!this.just_added_newline()&&(this.non_breaking_space||this.set_wrap_point(),this.current_line.push(\" \"))},l.prototype.remove_indent=function(r){for(var s=this.__lines.length;r<s;)this.__lines[r]._remove_indent(),r++;this.current_line._remove_wrap_indent()},l.prototype.trim=function(r){for(r=r===void 0?!1:r,this.current_line.trim();r&&this.__lines.length>1&&this.current_line.is_empty();)this.__lines.pop(),this.current_line=this.__lines[this.__lines.length-1],this.current_line.trim();this.previous_line=this.__lines.length>1?this.__lines[this.__lines.length-2]:null},l.prototype.just_added_newline=function(){return this.current_line.is_empty()},l.prototype.just_added_blankline=function(){return this.is_empty()||this.current_line.is_empty()&&this.previous_line.is_empty()},l.prototype.ensure_empty_line_above=function(r,s){for(var u=this.__lines.length-2;u>=0;){var h=this.__lines[u];if(h.is_empty())break;if(h.item(0).indexOf(r)!==0&&h.item(-1)!==s){this.__lines.splice(u+1,0,new a(this)),this.previous_line=this.__lines[this.__lines.length-2];break}u--}},e.exports.Output=l},,,,function(e){function a(r,s){this.raw_options=c(r,s),this.disabled=this._get_boolean(\"disabled\"),this.eol=this._get_characters(\"eol\",\"auto\"),this.end_with_newline=this._get_boolean(\"end_with_newline\"),this.indent_size=this._get_number(\"indent_size\",4),this.indent_char=this._get_characters(\"indent_char\",\" \"),this.indent_level=this._get_number(\"indent_level\"),this.preserve_newlines=this._get_boolean(\"preserve_newlines\",!0),this.max_preserve_newlines=this._get_number(\"max_preserve_newlines\",32786),this.preserve_newlines||(this.max_preserve_newlines=0),this.indent_with_tabs=this._get_boolean(\"indent_with_tabs\",this.indent_char===\"\t\"),this.indent_with_tabs&&(this.indent_char=\"\t\",this.indent_size===1&&(this.indent_size=4)),this.wrap_line_length=this._get_number(\"wrap_line_length\",this._get_number(\"max_char\")),this.indent_empty_lines=this._get_boolean(\"indent_empty_lines\"),this.templating=this._get_selection_list(\"templating\",[\"auto\",\"none\",\"django\",\"erb\",\"handlebars\",\"php\",\"smarty\"],[\"auto\"])}a.prototype._get_array=function(r,s){var u=this.raw_options[r],h=s||[];return typeof u==\"object\"?u!==null&&typeof u.concat==\"function\"&&(h=u.concat()):typeof u==\"string\"&&(h=u.split(/[^a-zA-Z0-9_\\/\\-]+/)),h},a.prototype._get_boolean=function(r,s){var u=this.raw_options[r],h=u===void 0?!!s:!!u;return h},a.prototype._get_characters=function(r,s){var u=this.raw_options[r],h=s||\"\";return typeof u==\"string\"&&(h=u.replace(/\\\\r/,\"\\r\").replace(/\\\\n/,`\n`).replace(/\\\\t/,\"\t\")),h},a.prototype._get_number=function(r,s){var u=this.raw_options[r];s=parseInt(s,10),isNaN(s)&&(s=0);var h=parseInt(u,10);return isNaN(h)&&(h=s),h},a.prototype._get_selection=function(r,s,u){var h=this._get_selection_list(r,s,u);if(h.length!==1)throw new Error(\"Invalid Option Value: The option '\"+r+`' can only be one of the following values:\n`+s+`\nYou passed in: '`+this.raw_options[r]+\"'\");return h[0]},a.prototype._get_selection_list=function(r,s,u){if(!s||s.length===0)throw new Error(\"Selection list cannot be empty.\");if(u=u||[s[0]],!this._is_valid_selection(u,s))throw new Error(\"Invalid Default Value!\");var h=this._get_array(r,u);if(!this._is_valid_selection(h,s))throw new Error(\"Invalid Option Value: The option '\"+r+`' can contain only the following values:\n`+s+`\nYou passed in: '`+this.raw_options[r]+\"'\");return h},a.prototype._is_valid_selection=function(r,s){return r.length&&s.length&&!r.some(function(u){return s.indexOf(u)===-1})};function c(r,s){var u={};r=l(r);var h;for(h in r)h!==s&&(u[h]=r[h]);if(s&&r[s])for(h in r[s])u[h]=r[s][h];return u}function l(r){var s={},u;for(u in r){var h=u.replace(/-/g,\"_\");s[h]=r[u]}return s}e.exports.Options=a,e.exports.normalizeOpts=l,e.exports.mergeOpts=c},,function(e){var a=RegExp.prototype.hasOwnProperty(\"sticky\");function c(l){this.__input=l||\"\",this.__input_length=this.__input.length,this.__position=0}c.prototype.restart=function(){this.__position=0},c.prototype.back=function(){this.__position>0&&(this.__position-=1)},c.prototype.hasNext=function(){return this.__position<this.__input_length},c.prototype.next=function(){var l=null;return this.hasNext()&&(l=this.__input.charAt(this.__position),this.__position+=1),l},c.prototype.peek=function(l){var r=null;return l=l||0,l+=this.__position,l>=0&&l<this.__input_length&&(r=this.__input.charAt(l)),r},c.prototype.__match=function(l,r){l.lastIndex=r;var s=l.exec(this.__input);return s&&!(a&&l.sticky)&&s.index!==r&&(s=null),s},c.prototype.test=function(l,r){return r=r||0,r+=this.__position,r>=0&&r<this.__input_length?!!this.__match(l,r):!1},c.prototype.testChar=function(l,r){var s=this.peek(r);return l.lastIndex=0,s!==null&&l.test(s)},c.prototype.match=function(l){var r=this.__match(l,this.__position);return r?this.__position+=r[0].length:r=null,r},c.prototype.read=function(l,r,s){var u=\"\",h;return l&&(h=this.match(l),h&&(u+=h[0])),r&&(h||!l)&&(u+=this.readUntil(r,s)),u},c.prototype.readUntil=function(l,r){var s=\"\",u=this.__position;l.lastIndex=this.__position;var h=l.exec(this.__input);return h?(u=h.index,r&&(u+=h[0].length)):u=this.__input_length,s=this.__input.substring(this.__position,u),this.__position=u,s},c.prototype.readUntilAfter=function(l){return this.readUntil(l,!0)},c.prototype.get_regexp=function(l,r){var s=null,u=\"g\";return r&&a&&(u=\"y\"),typeof l==\"string\"&&l!==\"\"?s=new RegExp(l,u):l&&(s=new RegExp(l.source,u)),s},c.prototype.get_literal_regexp=function(l){return RegExp(l.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\"))},c.prototype.peekUntilAfter=function(l){var r=this.__position,s=this.readUntilAfter(l);return this.__position=r,s},c.prototype.lookBack=function(l){var r=this.__position-1;return r>=l.length&&this.__input.substring(r-l.length,r).toLowerCase()===l},e.exports.InputScanner=c},,,,,function(e){function a(c,l){c=typeof c==\"string\"?c:c.source,l=typeof l==\"string\"?l:l.source,this.__directives_block_pattern=new RegExp(c+/ beautify( \\w+[:]\\w+)+ /.source+l,\"g\"),this.__directive_pattern=/ (\\w+)[:](\\w+)/g,this.__directives_end_ignore_pattern=new RegExp(c+/\\sbeautify\\signore:end\\s/.source+l,\"g\")}a.prototype.get_directives=function(c){if(!c.match(this.__directives_block_pattern))return null;var l={};this.__directive_pattern.lastIndex=0;for(var r=this.__directive_pattern.exec(c);r;)l[r[1]]=r[2],r=this.__directive_pattern.exec(c);return l},a.prototype.readIgnored=function(c){return c.readUntilAfter(this.__directives_end_ignore_pattern)},e.exports.Directives=a},,function(e,a,c){var l=c(16).Beautifier,r=c(17).Options;function s(u,h){var d=new l(u,h);return d.beautify()}e.exports=s,e.exports.defaultOptions=function(){return new r}},function(e,a,c){var l=c(17).Options,r=c(2).Output,s=c(8).InputScanner,u=c(13).Directives,h=new u(/\\/\\*/,/\\*\\//),d=/\\r\\n|[\\r\\n]/,g=/\\r\\n|[\\r\\n]/g,y=/\\s/,m=/(?:\\s|\\n)+/g,A=/\\/\\*(?:[\\s\\S]*?)((?:\\*\\/)|$)/g,E=/\\/\\/(?:[^\\n\\r\\u2028\\u2029]*)/g;function w(M,B){this._source_text=M||\"\",this._options=new l(B),this._ch=null,this._input=null,this.NESTED_AT_RULE={\"@page\":!0,\"@font-face\":!0,\"@keyframes\":!0,\"@media\":!0,\"@supports\":!0,\"@document\":!0},this.CONDITIONAL_GROUP_RULE={\"@media\":!0,\"@supports\":!0,\"@document\":!0}}w.prototype.eatString=function(M){var B=\"\";for(this._ch=this._input.next();this._ch;){if(B+=this._ch,this._ch===\"\\\\\")B+=this._input.next();else if(M.indexOf(this._ch)!==-1||this._ch===`\n`)break;this._ch=this._input.next()}return B},w.prototype.eatWhitespace=function(M){for(var B=y.test(this._input.peek()),G=0;y.test(this._input.peek());)this._ch=this._input.next(),M&&this._ch===`\n`&&(G===0||G<this._options.max_preserve_newlines)&&(G++,this._output.add_new_line(!0));return B},w.prototype.foundNestedPseudoClass=function(){for(var M=0,B=1,G=this._input.peek(B);G;){if(G===\"{\")return!0;if(G===\"(\")M+=1;else if(G===\")\"){if(M===0)return!1;M-=1}else if(G===\";\"||G===\"}\")return!1;B++,G=this._input.peek(B)}return!1},w.prototype.print_string=function(M){this._output.set_indent(this._indentLevel),this._output.non_breaking_space=!0,this._output.add_token(M)},w.prototype.preserveSingleSpace=function(M){M&&(this._output.space_before_token=!0)},w.prototype.indent=function(){this._indentLevel++},w.prototype.outdent=function(){this._indentLevel>0&&this._indentLevel--},w.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var M=this._source_text,B=this._options.eol;B===\"auto\"&&(B=`\n`,M&&d.test(M||\"\")&&(B=M.match(d)[0])),M=M.replace(g,`\n`);var G=M.match(/^[\\t ]*/)[0];this._output=new r(this._options,G),this._input=new s(M),this._indentLevel=0,this._nestedLevel=0,this._ch=null;for(var J=0,f=!1,p=!1,b=!1,N=!1,R=!1,U=this._ch,H,z,I;H=this._input.read(m),z=H!==\"\",I=U,this._ch=this._input.next(),this._ch===\"\\\\\"&&this._input.hasNext()&&(this._ch+=this._input.next()),U=this._ch,this._ch;)if(this._ch===\"/\"&&this._input.peek()===\"*\"){this._output.add_new_line(),this._input.back();var F=this._input.read(A),T=h.get_directives(F);T&&T.ignore===\"start\"&&(F+=h.readIgnored(this._input)),this.print_string(F),this.eatWhitespace(!0),this._output.add_new_line()}else if(this._ch===\"/\"&&this._input.peek()===\"/\")this._output.space_before_token=!0,this._input.back(),this.print_string(this._input.read(E)),this.eatWhitespace(!0);else if(this._ch===\"@\")if(this.preserveSingleSpace(z),this._input.peek()===\"{\")this.print_string(this._ch+this.eatString(\"}\"));else{this.print_string(this._ch);var v=this._input.peekUntilAfter(/[: ,;{}()[\\]\\/='\"]/g);v.match(/[ :]$/)&&(v=this.eatString(\": \").replace(/\\s$/,\"\"),this.print_string(v),this._output.space_before_token=!0),v=v.replace(/\\s$/,\"\"),v===\"extend\"?N=!0:v===\"import\"&&(R=!0),v in this.NESTED_AT_RULE?(this._nestedLevel+=1,v in this.CONDITIONAL_GROUP_RULE&&(b=!0)):!f&&J===0&&v.indexOf(\":\")!==-1&&(p=!0,this.indent())}else this._ch===\"#\"&&this._input.peek()===\"{\"?(this.preserveSingleSpace(z),this.print_string(this._ch+this.eatString(\"}\"))):this._ch===\"{\"?(p&&(p=!1,this.outdent()),b?(b=!1,f=this._indentLevel>=this._nestedLevel):f=this._indentLevel>=this._nestedLevel-1,this._options.newline_between_rules&&f&&this._output.previous_line&&this._output.previous_line.item(-1)!==\"{\"&&this._output.ensure_empty_line_above(\"/\",\",\"),this._output.space_before_token=!0,this._options.brace_style===\"expand\"?(this._output.add_new_line(),this.print_string(this._ch),this.indent(),this._output.set_indent(this._indentLevel)):(this.indent(),this.print_string(this._ch)),this.eatWhitespace(!0),this._output.add_new_line()):this._ch===\"}\"?(this.outdent(),this._output.add_new_line(),I===\"{\"&&this._output.trim(!0),R=!1,N=!1,p&&(this.outdent(),p=!1),this.print_string(this._ch),f=!1,this._nestedLevel&&this._nestedLevel--,this.eatWhitespace(!0),this._output.add_new_line(),this._options.newline_between_rules&&!this._output.just_added_blankline()&&this._input.peek()!==\"}\"&&this._output.add_new_line(!0)):this._ch===\":\"?(f||b)&&!(this._input.lookBack(\"&\")||this.foundNestedPseudoClass())&&!this._input.lookBack(\"(\")&&!N&&J===0?(this.print_string(\":\"),p||(p=!0,this._output.space_before_token=!0,this.eatWhitespace(!0),this.indent())):(this._input.lookBack(\" \")&&(this._output.space_before_token=!0),this._input.peek()===\":\"?(this._ch=this._input.next(),this.print_string(\"::\")):this.print_string(\":\")):this._ch==='\"'||this._ch===\"'\"?(this.preserveSingleSpace(z),this.print_string(this._ch+this.eatString(this._ch)),this.eatWhitespace(!0)):this._ch===\";\"?J===0?(p&&(this.outdent(),p=!1),N=!1,R=!1,this.print_string(this._ch),this.eatWhitespace(!0),this._input.peek()!==\"/\"&&this._output.add_new_line()):(this.print_string(this._ch),this.eatWhitespace(!0),this._output.space_before_token=!0):this._ch===\"(\"?this._input.lookBack(\"url\")?(this.print_string(this._ch),this.eatWhitespace(),J++,this.indent(),this._ch=this._input.next(),this._ch===\")\"||this._ch==='\"'||this._ch===\"'\"?this._input.back():this._ch&&(this.print_string(this._ch+this.eatString(\")\")),J&&(J--,this.outdent()))):(this.preserveSingleSpace(z),this.print_string(this._ch),this.eatWhitespace(),J++,this.indent()):this._ch===\")\"?(J&&(J--,this.outdent()),this.print_string(this._ch)):this._ch===\",\"?(this.print_string(this._ch),this.eatWhitespace(!0),this._options.selector_separator_newline&&!p&&J===0&&!R&&!N?this._output.add_new_line():this._output.space_before_token=!0):(this._ch===\">\"||this._ch===\"+\"||this._ch===\"~\")&&!p&&J===0?this._options.space_around_combinator?(this._output.space_before_token=!0,this.print_string(this._ch),this._output.space_before_token=!0):(this.print_string(this._ch),this.eatWhitespace(),this._ch&&y.test(this._ch)&&(this._ch=\"\")):this._ch===\"]\"?this.print_string(this._ch):this._ch===\"[\"?(this.preserveSingleSpace(z),this.print_string(this._ch)):this._ch===\"=\"?(this.eatWhitespace(),this.print_string(\"=\"),y.test(this._ch)&&(this._ch=\"\")):this._ch===\"!\"&&!this._input.lookBack(\"\\\\\")?(this.print_string(\" \"),this.print_string(this._ch)):(this.preserveSingleSpace(z),this.print_string(this._ch));var k=this._output.get_code(B);return k},e.exports.Beautifier=w},function(e,a,c){var l=c(6).Options;function r(s){l.call(this,s,\"css\"),this.selector_separator_newline=this._get_boolean(\"selector_separator_newline\",!0),this.newline_between_rules=this._get_boolean(\"newline_between_rules\",!0);var u=this._get_boolean(\"space_around_selector_separator\");this.space_around_combinator=this._get_boolean(\"space_around_combinator\")||u;var h=this._get_selection_list(\"brace_style\",[\"collapse\",\"expand\",\"end-expand\",\"none\",\"preserve-inline\"]);this.brace_style=\"collapse\";for(var d=0;d<h.length;d++)h[d]!==\"expand\"?this.brace_style=\"collapse\":this.brace_style=h[d]}r.prototype=new l,e.exports.Options=r}],i={};function o(e){var a=i[e];if(a!==void 0)return a.exports;var c=i[e]={exports:{}};return t[e](c,c.exports,o),c.exports}var n=o(15);en=n})();var tn=en;var nn;(function(){\"use strict\";var t=[,,function(e){function a(r){this.__parent=r,this.__character_count=0,this.__indent_count=-1,this.__alignment_count=0,this.__wrap_point_index=0,this.__wrap_point_character_count=0,this.__wrap_point_indent_count=-1,this.__wrap_point_alignment_count=0,this.__items=[]}a.prototype.clone_empty=function(){var r=new a(this.__parent);return r.set_indent(this.__indent_count,this.__alignment_count),r},a.prototype.item=function(r){return r<0?this.__items[this.__items.length+r]:this.__items[r]},a.prototype.has_match=function(r){for(var s=this.__items.length-1;s>=0;s--)if(this.__items[s].match(r))return!0;return!1},a.prototype.set_indent=function(r,s){this.is_empty()&&(this.__indent_count=r||0,this.__alignment_count=s||0,this.__character_count=this.__parent.get_indent_size(this.__indent_count,this.__alignment_count))},a.prototype._set_wrap_point=function(){this.__parent.wrap_line_length&&(this.__wrap_point_index=this.__items.length,this.__wrap_point_character_count=this.__character_count,this.__wrap_point_indent_count=this.__parent.next_line.__indent_count,this.__wrap_point_alignment_count=this.__parent.next_line.__alignment_count)},a.prototype._should_wrap=function(){return this.__wrap_point_index&&this.__character_count>this.__parent.wrap_line_length&&this.__wrap_point_character_count>this.__parent.next_line.__character_count},a.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var r=this.__parent.current_line;return r.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),r.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),r.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count,r.__items[0]===\" \"&&(r.__items.splice(0,1),r.__character_count-=1),!0}return!1},a.prototype.is_empty=function(){return this.__items.length===0},a.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},a.prototype.push=function(r){this.__items.push(r);var s=r.lastIndexOf(`\n`);s!==-1?this.__character_count=r.length-s:this.__character_count+=r.length},a.prototype.pop=function(){var r=null;return this.is_empty()||(r=this.__items.pop(),this.__character_count-=r.length),r},a.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},a.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},a.prototype.trim=function(){for(;this.last()===\" \";)this.__items.pop(),this.__character_count-=1},a.prototype.toString=function(){var r=\"\";return this.is_empty()?this.__parent.indent_empty_lines&&(r=this.__parent.get_indent_string(this.__indent_count)):(r=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),r+=this.__items.join(\"\")),r};function c(r,s){this.__cache=[\"\"],this.__indent_size=r.indent_size,this.__indent_string=r.indent_char,r.indent_with_tabs||(this.__indent_string=new Array(r.indent_size+1).join(r.indent_char)),s=s||\"\",r.indent_level>0&&(s=new Array(r.indent_level+1).join(this.__indent_string)),this.__base_string=s,this.__base_string_length=s.length}c.prototype.get_indent_size=function(r,s){var u=this.__base_string_length;return s=s||0,r<0&&(u=0),u+=r*this.__indent_size,u+=s,u},c.prototype.get_indent_string=function(r,s){var u=this.__base_string;return s=s||0,r<0&&(r=0,u=\"\"),s+=r*this.__indent_size,this.__ensure_cache(s),u+=this.__cache[s],u},c.prototype.__ensure_cache=function(r){for(;r>=this.__cache.length;)this.__add_column()},c.prototype.__add_column=function(){var r=this.__cache.length,s=0,u=\"\";this.__indent_size&&r>=this.__indent_size&&(s=Math.floor(r/this.__indent_size),r-=s*this.__indent_size,u=new Array(s+1).join(this.__indent_string)),r&&(u+=new Array(r+1).join(\" \")),this.__cache.push(u)};function l(r,s){this.__indent_cache=new c(r,s),this.raw=!1,this._end_with_newline=r.end_with_newline,this.indent_size=r.indent_size,this.wrap_line_length=r.wrap_line_length,this.indent_empty_lines=r.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new a(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}l.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},l.prototype.get_line_number=function(){return this.__lines.length},l.prototype.get_indent_string=function(r,s){return this.__indent_cache.get_indent_string(r,s)},l.prototype.get_indent_size=function(r,s){return this.__indent_cache.get_indent_size(r,s)},l.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},l.prototype.add_new_line=function(r){return this.is_empty()||!r&&this.just_added_newline()?!1:(this.raw||this.__add_outputline(),!0)},l.prototype.get_code=function(r){this.trim(!0);var s=this.current_line.pop();s&&(s[s.length-1]===`\n`&&(s=s.replace(/\\n+$/g,\"\")),this.current_line.push(s)),this._end_with_newline&&this.__add_outputline();var u=this.__lines.join(`\n`);return r!==`\n`&&(u=u.replace(/[\\n]/g,r)),u},l.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},l.prototype.set_indent=function(r,s){return r=r||0,s=s||0,this.next_line.set_indent(r,s),this.__lines.length>1?(this.current_line.set_indent(r,s),!0):(this.current_line.set_indent(),!1)},l.prototype.add_raw_token=function(r){for(var s=0;s<r.newlines;s++)this.__add_outputline();this.current_line.set_indent(-1),this.current_line.push(r.whitespace_before),this.current_line.push(r.text),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1},l.prototype.add_token=function(r){this.__add_space_before_token(),this.current_line.push(r),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=this.current_line._allow_wrap()},l.prototype.__add_space_before_token=function(){this.space_before_token&&!this.just_added_newline()&&(this.non_breaking_space||this.set_wrap_point(),this.current_line.push(\" \"))},l.prototype.remove_indent=function(r){for(var s=this.__lines.length;r<s;)this.__lines[r]._remove_indent(),r++;this.current_line._remove_wrap_indent()},l.prototype.trim=function(r){for(r=r===void 0?!1:r,this.current_line.trim();r&&this.__lines.length>1&&this.current_line.is_empty();)this.__lines.pop(),this.current_line=this.__lines[this.__lines.length-1],this.current_line.trim();this.previous_line=this.__lines.length>1?this.__lines[this.__lines.length-2]:null},l.prototype.just_added_newline=function(){return this.current_line.is_empty()},l.prototype.just_added_blankline=function(){return this.is_empty()||this.current_line.is_empty()&&this.previous_line.is_empty()},l.prototype.ensure_empty_line_above=function(r,s){for(var u=this.__lines.length-2;u>=0;){var h=this.__lines[u];if(h.is_empty())break;if(h.item(0).indexOf(r)!==0&&h.item(-1)!==s){this.__lines.splice(u+1,0,new a(this)),this.previous_line=this.__lines[this.__lines.length-2];break}u--}},e.exports.Output=l},function(e){function a(c,l,r,s){this.type=c,this.text=l,this.comments_before=null,this.newlines=r||0,this.whitespace_before=s||\"\",this.parent=null,this.next=null,this.previous=null,this.opened=null,this.closed=null,this.directives=null}e.exports.Token=a},,,function(e){function a(r,s){this.raw_options=c(r,s),this.disabled=this._get_boolean(\"disabled\"),this.eol=this._get_characters(\"eol\",\"auto\"),this.end_with_newline=this._get_boolean(\"end_with_newline\"),this.indent_size=this._get_number(\"indent_size\",4),this.indent_char=this._get_characters(\"indent_char\",\" \"),this.indent_level=this._get_number(\"indent_level\"),this.preserve_newlines=this._get_boolean(\"preserve_newlines\",!0),this.max_preserve_newlines=this._get_number(\"max_preserve_newlines\",32786),this.preserve_newlines||(this.max_preserve_newlines=0),this.indent_with_tabs=this._get_boolean(\"indent_with_tabs\",this.indent_char===\"\t\"),this.indent_with_tabs&&(this.indent_char=\"\t\",this.indent_size===1&&(this.indent_size=4)),this.wrap_line_length=this._get_number(\"wrap_line_length\",this._get_number(\"max_char\")),this.indent_empty_lines=this._get_boolean(\"indent_empty_lines\"),this.templating=this._get_selection_list(\"templating\",[\"auto\",\"none\",\"django\",\"erb\",\"handlebars\",\"php\",\"smarty\"],[\"auto\"])}a.prototype._get_array=function(r,s){var u=this.raw_options[r],h=s||[];return typeof u==\"object\"?u!==null&&typeof u.concat==\"function\"&&(h=u.concat()):typeof u==\"string\"&&(h=u.split(/[^a-zA-Z0-9_\\/\\-]+/)),h},a.prototype._get_boolean=function(r,s){var u=this.raw_options[r],h=u===void 0?!!s:!!u;return h},a.prototype._get_characters=function(r,s){var u=this.raw_options[r],h=s||\"\";return typeof u==\"string\"&&(h=u.replace(/\\\\r/,\"\\r\").replace(/\\\\n/,`\n`).replace(/\\\\t/,\"\t\")),h},a.prototype._get_number=function(r,s){var u=this.raw_options[r];s=parseInt(s,10),isNaN(s)&&(s=0);var h=parseInt(u,10);return isNaN(h)&&(h=s),h},a.prototype._get_selection=function(r,s,u){var h=this._get_selection_list(r,s,u);if(h.length!==1)throw new Error(\"Invalid Option Value: The option '\"+r+`' can only be one of the following values:\n`+s+`\nYou passed in: '`+this.raw_options[r]+\"'\");return h[0]},a.prototype._get_selection_list=function(r,s,u){if(!s||s.length===0)throw new Error(\"Selection list cannot be empty.\");if(u=u||[s[0]],!this._is_valid_selection(u,s))throw new Error(\"Invalid Default Value!\");var h=this._get_array(r,u);if(!this._is_valid_selection(h,s))throw new Error(\"Invalid Option Value: The option '\"+r+`' can contain only the following values:\n`+s+`\nYou passed in: '`+this.raw_options[r]+\"'\");return h},a.prototype._is_valid_selection=function(r,s){return r.length&&s.length&&!r.some(function(u){return s.indexOf(u)===-1})};function c(r,s){var u={};r=l(r);var h;for(h in r)h!==s&&(u[h]=r[h]);if(s&&r[s])for(h in r[s])u[h]=r[s][h];return u}function l(r){var s={},u;for(u in r){var h=u.replace(/-/g,\"_\");s[h]=r[u]}return s}e.exports.Options=a,e.exports.normalizeOpts=l,e.exports.mergeOpts=c},,function(e){var a=RegExp.prototype.hasOwnProperty(\"sticky\");function c(l){this.__input=l||\"\",this.__input_length=this.__input.length,this.__position=0}c.prototype.restart=function(){this.__position=0},c.prototype.back=function(){this.__position>0&&(this.__position-=1)},c.prototype.hasNext=function(){return this.__position<this.__input_length},c.prototype.next=function(){var l=null;return this.hasNext()&&(l=this.__input.charAt(this.__position),this.__position+=1),l},c.prototype.peek=function(l){var r=null;return l=l||0,l+=this.__position,l>=0&&l<this.__input_length&&(r=this.__input.charAt(l)),r},c.prototype.__match=function(l,r){l.lastIndex=r;var s=l.exec(this.__input);return s&&!(a&&l.sticky)&&s.index!==r&&(s=null),s},c.prototype.test=function(l,r){return r=r||0,r+=this.__position,r>=0&&r<this.__input_length?!!this.__match(l,r):!1},c.prototype.testChar=function(l,r){var s=this.peek(r);return l.lastIndex=0,s!==null&&l.test(s)},c.prototype.match=function(l){var r=this.__match(l,this.__position);return r?this.__position+=r[0].length:r=null,r},c.prototype.read=function(l,r,s){var u=\"\",h;return l&&(h=this.match(l),h&&(u+=h[0])),r&&(h||!l)&&(u+=this.readUntil(r,s)),u},c.prototype.readUntil=function(l,r){var s=\"\",u=this.__position;l.lastIndex=this.__position;var h=l.exec(this.__input);return h?(u=h.index,r&&(u+=h[0].length)):u=this.__input_length,s=this.__input.substring(this.__position,u),this.__position=u,s},c.prototype.readUntilAfter=function(l){return this.readUntil(l,!0)},c.prototype.get_regexp=function(l,r){var s=null,u=\"g\";return r&&a&&(u=\"y\"),typeof l==\"string\"&&l!==\"\"?s=new RegExp(l,u):l&&(s=new RegExp(l.source,u)),s},c.prototype.get_literal_regexp=function(l){return RegExp(l.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\"))},c.prototype.peekUntilAfter=function(l){var r=this.__position,s=this.readUntilAfter(l);return this.__position=r,s},c.prototype.lookBack=function(l){var r=this.__position-1;return r>=l.length&&this.__input.substring(r-l.length,r).toLowerCase()===l},e.exports.InputScanner=c},function(e,a,c){var l=c(8).InputScanner,r=c(3).Token,s=c(10).TokenStream,u=c(11).WhitespacePattern,h={START:\"TK_START\",RAW:\"TK_RAW\",EOF:\"TK_EOF\"},d=function(g,y){this._input=new l(g),this._options=y||{},this.__tokens=null,this._patterns={},this._patterns.whitespace=new u(this._input)};d.prototype.tokenize=function(){this._input.restart(),this.__tokens=new s,this._reset();for(var g,y=new r(h.START,\"\"),m=null,A=[],E=new s;y.type!==h.EOF;){for(g=this._get_next_token(y,m);this._is_comment(g);)E.add(g),g=this._get_next_token(y,m);E.isEmpty()||(g.comments_before=E,E=new s),g.parent=m,this._is_opening(g)?(A.push(m),m=g):m&&this._is_closing(g,m)&&(g.opened=m,m.closed=g,m=A.pop(),g.parent=m),g.previous=y,y.next=g,this.__tokens.add(g),y=g}return this.__tokens},d.prototype._is_first_token=function(){return this.__tokens.isEmpty()},d.prototype._reset=function(){},d.prototype._get_next_token=function(g,y){this._readWhitespace();var m=this._input.read(/.+/g);return m?this._create_token(h.RAW,m):this._create_token(h.EOF,\"\")},d.prototype._is_comment=function(g){return!1},d.prototype._is_opening=function(g){return!1},d.prototype._is_closing=function(g,y){return!1},d.prototype._create_token=function(g,y){var m=new r(g,y,this._patterns.whitespace.newline_count,this._patterns.whitespace.whitespace_before_token);return m},d.prototype._readWhitespace=function(){return this._patterns.whitespace.read()},e.exports.Tokenizer=d,e.exports.TOKEN=h},function(e){function a(c){this.__tokens=[],this.__tokens_length=this.__tokens.length,this.__position=0,this.__parent_token=c}a.prototype.restart=function(){this.__position=0},a.prototype.isEmpty=function(){return this.__tokens_length===0},a.prototype.hasNext=function(){return this.__position<this.__tokens_length},a.prototype.next=function(){var c=null;return this.hasNext()&&(c=this.__tokens[this.__position],this.__position+=1),c},a.prototype.peek=function(c){var l=null;return c=c||0,c+=this.__position,c>=0&&c<this.__tokens_length&&(l=this.__tokens[c]),l},a.prototype.add=function(c){this.__parent_token&&(c.parent=this.__parent_token),this.__tokens.push(c),this.__tokens_length+=1},e.exports.TokenStream=a},function(e,a,c){var l=c(12).Pattern;function r(s,u){l.call(this,s,u),u?this._line_regexp=this._input.get_regexp(u._line_regexp):this.__set_whitespace_patterns(\"\",\"\"),this.newline_count=0,this.whitespace_before_token=\"\"}r.prototype=new l,r.prototype.__set_whitespace_patterns=function(s,u){s+=\"\\\\t \",u+=\"\\\\n\\\\r\",this._match_pattern=this._input.get_regexp(\"[\"+s+u+\"]+\",!0),this._newline_regexp=this._input.get_regexp(\"\\\\r\\\\n|[\"+u+\"]\")},r.prototype.read=function(){this.newline_count=0,this.whitespace_before_token=\"\";var s=this._input.read(this._match_pattern);if(s===\" \")this.whitespace_before_token=\" \";else if(s){var u=this.__split(this._newline_regexp,s);this.newline_count=u.length-1,this.whitespace_before_token=u[this.newline_count]}return s},r.prototype.matching=function(s,u){var h=this._create();return h.__set_whitespace_patterns(s,u),h._update(),h},r.prototype._create=function(){return new r(this._input,this)},r.prototype.__split=function(s,u){s.lastIndex=0;for(var h=0,d=[],g=s.exec(u);g;)d.push(u.substring(h,g.index)),h=g.index+g[0].length,g=s.exec(u);return h<u.length?d.push(u.substring(h,u.length)):d.push(\"\"),d},e.exports.WhitespacePattern=r},function(e){function a(c,l){this._input=c,this._starting_pattern=null,this._match_pattern=null,this._until_pattern=null,this._until_after=!1,l&&(this._starting_pattern=this._input.get_regexp(l._starting_pattern,!0),this._match_pattern=this._input.get_regexp(l._match_pattern,!0),this._until_pattern=this._input.get_regexp(l._until_pattern),this._until_after=l._until_after)}a.prototype.read=function(){var c=this._input.read(this._starting_pattern);return(!this._starting_pattern||c)&&(c+=this._input.read(this._match_pattern,this._until_pattern,this._until_after)),c},a.prototype.read_match=function(){return this._input.match(this._match_pattern)},a.prototype.until_after=function(c){var l=this._create();return l._until_after=!0,l._until_pattern=this._input.get_regexp(c),l._update(),l},a.prototype.until=function(c){var l=this._create();return l._until_after=!1,l._until_pattern=this._input.get_regexp(c),l._update(),l},a.prototype.starting_with=function(c){var l=this._create();return l._starting_pattern=this._input.get_regexp(c,!0),l._update(),l},a.prototype.matching=function(c){var l=this._create();return l._match_pattern=this._input.get_regexp(c,!0),l._update(),l},a.prototype._create=function(){return new a(this._input,this)},a.prototype._update=function(){},e.exports.Pattern=a},function(e){function a(c,l){c=typeof c==\"string\"?c:c.source,l=typeof l==\"string\"?l:l.source,this.__directives_block_pattern=new RegExp(c+/ beautify( \\w+[:]\\w+)+ /.source+l,\"g\"),this.__directive_pattern=/ (\\w+)[:](\\w+)/g,this.__directives_end_ignore_pattern=new RegExp(c+/\\sbeautify\\signore:end\\s/.source+l,\"g\")}a.prototype.get_directives=function(c){if(!c.match(this.__directives_block_pattern))return null;var l={};this.__directive_pattern.lastIndex=0;for(var r=this.__directive_pattern.exec(c);r;)l[r[1]]=r[2],r=this.__directive_pattern.exec(c);return l},a.prototype.readIgnored=function(c){return c.readUntilAfter(this.__directives_end_ignore_pattern)},e.exports.Directives=a},function(e,a,c){var l=c(12).Pattern,r={django:!1,erb:!1,handlebars:!1,php:!1,smarty:!1};function s(u,h){l.call(this,u,h),this.__template_pattern=null,this._disabled=Object.assign({},r),this._excluded=Object.assign({},r),h&&(this.__template_pattern=this._input.get_regexp(h.__template_pattern),this._excluded=Object.assign(this._excluded,h._excluded),this._disabled=Object.assign(this._disabled,h._disabled));var d=new l(u);this.__patterns={handlebars_comment:d.starting_with(/{{!--/).until_after(/--}}/),handlebars_unescaped:d.starting_with(/{{{/).until_after(/}}}/),handlebars:d.starting_with(/{{/).until_after(/}}/),php:d.starting_with(/<\\?(?:[= ]|php)/).until_after(/\\?>/),erb:d.starting_with(/<%[^%]/).until_after(/[^%]%>/),django:d.starting_with(/{%/).until_after(/%}/),django_value:d.starting_with(/{{/).until_after(/}}/),django_comment:d.starting_with(/{#/).until_after(/#}/),smarty:d.starting_with(/{(?=[^}{\\s\\n])/).until_after(/[^\\s\\n]}/),smarty_comment:d.starting_with(/{\\*/).until_after(/\\*}/),smarty_literal:d.starting_with(/{literal}/).until_after(/{\\/literal}/)}}s.prototype=new l,s.prototype._create=function(){return new s(this._input,this)},s.prototype._update=function(){this.__set_templated_pattern()},s.prototype.disable=function(u){var h=this._create();return h._disabled[u]=!0,h._update(),h},s.prototype.read_options=function(u){var h=this._create();for(var d in r)h._disabled[d]=u.templating.indexOf(d)===-1;return h._update(),h},s.prototype.exclude=function(u){var h=this._create();return h._excluded[u]=!0,h._update(),h},s.prototype.read=function(){var u=\"\";this._match_pattern?u=this._input.read(this._starting_pattern):u=this._input.read(this._starting_pattern,this.__template_pattern);for(var h=this._read_template();h;)this._match_pattern?h+=this._input.read(this._match_pattern):h+=this._input.readUntil(this.__template_pattern),u+=h,h=this._read_template();return this._until_after&&(u+=this._input.readUntilAfter(this._until_pattern)),u},s.prototype.__set_templated_pattern=function(){var u=[];this._disabled.php||u.push(this.__patterns.php._starting_pattern.source),this._disabled.handlebars||u.push(this.__patterns.handlebars._starting_pattern.source),this._disabled.erb||u.push(this.__patterns.erb._starting_pattern.source),this._disabled.django||(u.push(this.__patterns.django._starting_pattern.source),u.push(this.__patterns.django_value._starting_pattern.source),u.push(this.__patterns.django_comment._starting_pattern.source)),this._disabled.smarty||u.push(this.__patterns.smarty._starting_pattern.source),this._until_pattern&&u.push(this._until_pattern.source),this.__template_pattern=this._input.get_regexp(\"(?:\"+u.join(\"|\")+\")\")},s.prototype._read_template=function(){var u=\"\",h=this._input.peek();if(h===\"<\"){var d=this._input.peek(1);!this._disabled.php&&!this._excluded.php&&d===\"?\"&&(u=u||this.__patterns.php.read()),!this._disabled.erb&&!this._excluded.erb&&d===\"%\"&&(u=u||this.__patterns.erb.read())}else h===\"{\"&&(!this._disabled.handlebars&&!this._excluded.handlebars&&(u=u||this.__patterns.handlebars_comment.read(),u=u||this.__patterns.handlebars_unescaped.read(),u=u||this.__patterns.handlebars.read()),this._disabled.django||(!this._excluded.django&&!this._excluded.handlebars&&(u=u||this.__patterns.django_value.read()),this._excluded.django||(u=u||this.__patterns.django_comment.read(),u=u||this.__patterns.django.read())),this._disabled.smarty||this._disabled.django&&this._disabled.handlebars&&(u=u||this.__patterns.smarty_comment.read(),u=u||this.__patterns.smarty_literal.read(),u=u||this.__patterns.smarty.read()));return u},e.exports.TemplatablePattern=s},,,,function(e,a,c){var l=c(19).Beautifier,r=c(20).Options;function s(u,h,d,g){var y=new l(u,h,d,g);return y.beautify()}e.exports=s,e.exports.defaultOptions=function(){return new r}},function(e,a,c){var l=c(20).Options,r=c(2).Output,s=c(21).Tokenizer,u=c(21).TOKEN,h=/\\r\\n|[\\r\\n]/,d=/\\r\\n|[\\r\\n]/g,g=function(f,p){this.indent_level=0,this.alignment_size=0,this.max_preserve_newlines=f.max_preserve_newlines,this.preserve_newlines=f.preserve_newlines,this._output=new r(f,p)};g.prototype.current_line_has_match=function(f){return this._output.current_line.has_match(f)},g.prototype.set_space_before_token=function(f,p){this._output.space_before_token=f,this._output.non_breaking_space=p},g.prototype.set_wrap_point=function(){this._output.set_indent(this.indent_level,this.alignment_size),this._output.set_wrap_point()},g.prototype.add_raw_token=function(f){this._output.add_raw_token(f)},g.prototype.print_preserved_newlines=function(f){var p=0;f.type!==u.TEXT&&f.previous.type!==u.TEXT&&(p=f.newlines?1:0),this.preserve_newlines&&(p=f.newlines<this.max_preserve_newlines+1?f.newlines:this.max_preserve_newlines+1);for(var b=0;b<p;b++)this.print_newline(b>0);return p!==0},g.prototype.traverse_whitespace=function(f){return f.whitespace_before||f.newlines?(this.print_preserved_newlines(f)||(this._output.space_before_token=!0),!0):!1},g.prototype.previous_token_wrapped=function(){return this._output.previous_token_wrapped},g.prototype.print_newline=function(f){this._output.add_new_line(f)},g.prototype.print_token=function(f){f.text&&(this._output.set_indent(this.indent_level,this.alignment_size),this._output.add_token(f.text))},g.prototype.indent=function(){this.indent_level++},g.prototype.get_full_indent=function(f){return f=this.indent_level+(f||0),f<1?\"\":this._output.get_indent_string(f)};var y=function(f){for(var p=null,b=f.next;b.type!==u.EOF&&f.closed!==b;){if(b.type===u.ATTRIBUTE&&b.text===\"type\"){b.next&&b.next.type===u.EQUALS&&b.next.next&&b.next.next.type===u.VALUE&&(p=b.next.next.text);break}b=b.next}return p},m=function(f,p){var b=null,N=null;return p.closed?(f===\"script\"?b=\"text/javascript\":f===\"style\"&&(b=\"text/css\"),b=y(p)||b,b.search(\"text/css\")>-1?N=\"css\":b.search(/module|((text|application|dojo)\\/(x-)?(javascript|ecmascript|jscript|livescript|(ld\\+)?json|method|aspect))/)>-1?N=\"javascript\":b.search(/(text|application|dojo)\\/(x-)?(html)/)>-1?N=\"html\":b.search(/test\\/null/)>-1&&(N=\"null\"),N):null};function A(f,p){return p.indexOf(f)!==-1}function E(f,p,b){this.parent=f||null,this.tag=p?p.tag_name:\"\",this.indent_level=b||0,this.parser_token=p||null}function w(f){this._printer=f,this._current_frame=null}w.prototype.get_parser_token=function(){return this._current_frame?this._current_frame.parser_token:null},w.prototype.record_tag=function(f){var p=new E(this._current_frame,f,this._printer.indent_level);this._current_frame=p},w.prototype._try_pop_frame=function(f){var p=null;return f&&(p=f.parser_token,this._printer.indent_level=f.indent_level,this._current_frame=f.parent),p},w.prototype._get_frame=function(f,p){for(var b=this._current_frame;b&&f.indexOf(b.tag)===-1;){if(p&&p.indexOf(b.tag)!==-1){b=null;break}b=b.parent}return b},w.prototype.try_pop=function(f,p){var b=this._get_frame([f],p);return this._try_pop_frame(b)},w.prototype.indent_to_tag=function(f){var p=this._get_frame(f);p&&(this._printer.indent_level=p.indent_level)};function M(f,p,b,N){this._source_text=f||\"\",p=p||{},this._js_beautify=b,this._css_beautify=N,this._tag_stack=null;var R=new l(p,\"html\");this._options=R,this._is_wrap_attributes_force=this._options.wrap_attributes.substr(0,5)===\"force\",this._is_wrap_attributes_force_expand_multiline=this._options.wrap_attributes===\"force-expand-multiline\",this._is_wrap_attributes_force_aligned=this._options.wrap_attributes===\"force-aligned\",this._is_wrap_attributes_aligned_multiple=this._options.wrap_attributes===\"aligned-multiple\",this._is_wrap_attributes_preserve=this._options.wrap_attributes.substr(0,8)===\"preserve\",this._is_wrap_attributes_preserve_aligned=this._options.wrap_attributes===\"preserve-aligned\"}M.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var f=this._source_text,p=this._options.eol;this._options.eol===\"auto\"&&(p=`\n`,f&&h.test(f)&&(p=f.match(h)[0])),f=f.replace(d,`\n`);var b=f.match(/^[\\t ]*/)[0],N={text:\"\",type:\"\"},R=new B,U=new g(this._options,b),H=new s(f,this._options).tokenize();this._tag_stack=new w(U);for(var z=null,I=H.next();I.type!==u.EOF;)I.type===u.TAG_OPEN||I.type===u.COMMENT?(z=this._handle_tag_open(U,I,R,N),R=z):I.type===u.ATTRIBUTE||I.type===u.EQUALS||I.type===u.VALUE||I.type===u.TEXT&&!R.tag_complete?z=this._handle_inside_tag(U,I,R,H):I.type===u.TAG_CLOSE?z=this._handle_tag_close(U,I,R):I.type===u.TEXT?z=this._handle_text(U,I,R):U.add_raw_token(I),N=z,I=H.next();var F=U._output.get_code(p);return F},M.prototype._handle_tag_close=function(f,p,b){var N={text:p.text,type:p.type};return f.alignment_size=0,b.tag_complete=!0,f.set_space_before_token(p.newlines||p.whitespace_before!==\"\",!0),b.is_unformatted?f.add_raw_token(p):(b.tag_start_char===\"<\"&&(f.set_space_before_token(p.text[0]===\"/\",!0),this._is_wrap_attributes_force_expand_multiline&&b.has_wrapped_attrs&&f.print_newline(!1)),f.print_token(p)),b.indent_content&&!(b.is_unformatted||b.is_content_unformatted)&&(f.indent(),b.indent_content=!1),!b.is_inline_element&&!(b.is_unformatted||b.is_content_unformatted)&&f.set_wrap_point(),N},M.prototype._handle_inside_tag=function(f,p,b,N){var R=b.has_wrapped_attrs,U={text:p.text,type:p.type};if(f.set_space_before_token(p.newlines||p.whitespace_before!==\"\",!0),b.is_unformatted)f.add_raw_token(p);else if(b.tag_start_char===\"{\"&&p.type===u.TEXT)f.print_preserved_newlines(p)?(p.newlines=0,f.add_raw_token(p)):f.print_token(p);else{if(p.type===u.ATTRIBUTE?(f.set_space_before_token(!0),b.attr_count+=1):(p.type===u.EQUALS||p.type===u.VALUE&&p.previous.type===u.EQUALS)&&f.set_space_before_token(!1),p.type===u.ATTRIBUTE&&b.tag_start_char===\"<\"&&((this._is_wrap_attributes_preserve||this._is_wrap_attributes_preserve_aligned)&&(f.traverse_whitespace(p),R=R||p.newlines!==0),this._is_wrap_attributes_force)){var H=b.attr_count>1;if(this._is_wrap_attributes_force_expand_multiline&&b.attr_count===1){var z=!0,I=0,F;do{if(F=N.peek(I),F.type===u.ATTRIBUTE){z=!1;break}I+=1}while(I<4&&F.type!==u.EOF&&F.type!==u.TAG_CLOSE);H=!z}H&&(f.print_newline(!1),R=!0)}f.print_token(p),R=R||f.previous_token_wrapped(),b.has_wrapped_attrs=R}return U},M.prototype._handle_text=function(f,p,b){var N={text:p.text,type:\"TK_CONTENT\"};return b.custom_beautifier_name?this._print_custom_beatifier_text(f,p,b):b.is_unformatted||b.is_content_unformatted?f.add_raw_token(p):(f.traverse_whitespace(p),f.print_token(p)),N},M.prototype._print_custom_beatifier_text=function(f,p,b){var N=this;if(p.text!==\"\"){var R=p.text,U,H=1,z=\"\",I=\"\";b.custom_beautifier_name===\"javascript\"&&typeof this._js_beautify==\"function\"?U=this._js_beautify:b.custom_beautifier_name===\"css\"&&typeof this._css_beautify==\"function\"?U=this._css_beautify:b.custom_beautifier_name===\"html\"&&(U=function(x,D){var L=new M(x,D,N._js_beautify,N._css_beautify);return L.beautify()}),this._options.indent_scripts===\"keep\"?H=0:this._options.indent_scripts===\"separate\"&&(H=-f.indent_level);var F=f.get_full_indent(H);if(R=R.replace(/\\n[ \\t]*$/,\"\"),b.custom_beautifier_name!==\"html\"&&R[0]===\"<\"&&R.match(/^(<!--|<!\\[CDATA\\[)/)){var T=/^(<!--[^\\n]*|<!\\[CDATA\\[)(\\n?)([ \\t\\n]*)([\\s\\S]*)(-->|]]>)$/.exec(R);if(!T){f.add_raw_token(p);return}z=F+T[1]+`\n`,R=T[4],T[5]&&(I=F+T[5]),R=R.replace(/\\n[ \\t]*$/,\"\"),(T[2]||T[3].indexOf(`\n`)!==-1)&&(T=T[3].match(/[ \\t]+$/),T&&(p.whitespace_before=T[0]))}if(R)if(U){var v=function(){this.eol=`\n`};v.prototype=this._options.raw_options;var k=new v;R=U(F+R,k)}else{var C=p.whitespace_before;C&&(R=R.replace(new RegExp(`\n(`+C+\")?\",\"g\"),`\n`)),R=F+R.replace(/\\n/g,`\n`+F)}z&&(R?R=z+R+`\n`+I:R=z+I),f.print_newline(!1),R&&(p.text=R,p.whitespace_before=\"\",p.newlines=0,f.add_raw_token(p),f.print_newline(!0))}},M.prototype._handle_tag_open=function(f,p,b,N){var R=this._get_tag_open_token(p);return(b.is_unformatted||b.is_content_unformatted)&&!b.is_empty_element&&p.type===u.TAG_OPEN&&p.text.indexOf(\"</\")===0?(f.add_raw_token(p),R.start_tag_token=this._tag_stack.try_pop(R.tag_name)):(f.traverse_whitespace(p),this._set_tag_position(f,p,R,b,N),R.is_inline_element||f.set_wrap_point(),f.print_token(p)),(this._is_wrap_attributes_force_aligned||this._is_wrap_attributes_aligned_multiple||this._is_wrap_attributes_preserve_aligned)&&(R.alignment_size=p.text.length+1),!R.tag_complete&&!R.is_unformatted&&(f.alignment_size=R.alignment_size),R};var B=function(f,p){if(this.parent=f||null,this.text=\"\",this.type=\"TK_TAG_OPEN\",this.tag_name=\"\",this.is_inline_element=!1,this.is_unformatted=!1,this.is_content_unformatted=!1,this.is_empty_element=!1,this.is_start_tag=!1,this.is_end_tag=!1,this.indent_content=!1,this.multiline_content=!1,this.custom_beautifier_name=null,this.start_tag_token=null,this.attr_count=0,this.has_wrapped_attrs=!1,this.alignment_size=0,this.tag_complete=!1,this.tag_start_char=\"\",this.tag_check=\"\",!p)this.tag_complete=!0;else{var b;this.tag_start_char=p.text[0],this.text=p.text,this.tag_start_char===\"<\"?(b=p.text.match(/^<([^\\s>]*)/),this.tag_check=b?b[1]:\"\"):(b=p.text.match(/^{{(?:[\\^]|#\\*?)?([^\\s}]+)/),this.tag_check=b?b[1]:\"\",p.text===\"{{#>\"&&this.tag_check===\">\"&&p.next!==null&&(this.tag_check=p.next.text)),this.tag_check=this.tag_check.toLowerCase(),p.type===u.COMMENT&&(this.tag_complete=!0),this.is_start_tag=this.tag_check.charAt(0)!==\"/\",this.tag_name=this.is_start_tag?this.tag_check:this.tag_check.substr(1),this.is_end_tag=!this.is_start_tag||p.closed&&p.closed.text===\"/>\",this.is_end_tag=this.is_end_tag||this.tag_start_char===\"{\"&&(this.text.length<3||/[^#\\^]/.test(this.text.charAt(2)))}};M.prototype._get_tag_open_token=function(f){var p=new B(this._tag_stack.get_parser_token(),f);return p.alignment_size=this._options.wrap_attributes_indent_size,p.is_end_tag=p.is_end_tag||A(p.tag_check,this._options.void_elements),p.is_empty_element=p.tag_complete||p.is_start_tag&&p.is_end_tag,p.is_unformatted=!p.tag_complete&&A(p.tag_check,this._options.unformatted),p.is_content_unformatted=!p.is_empty_element&&A(p.tag_check,this._options.content_unformatted),p.is_inline_element=A(p.tag_name,this._options.inline)||p.tag_start_char===\"{\",p},M.prototype._set_tag_position=function(f,p,b,N,R){if(b.is_empty_element||(b.is_end_tag?b.start_tag_token=this._tag_stack.try_pop(b.tag_name):(this._do_optional_end_element(b)&&(b.is_inline_element||f.print_newline(!1)),this._tag_stack.record_tag(b),(b.tag_name===\"script\"||b.tag_name===\"style\")&&!(b.is_unformatted||b.is_content_unformatted)&&(b.custom_beautifier_name=m(b.tag_check,p)))),A(b.tag_check,this._options.extra_liners)&&(f.print_newline(!1),f._output.just_added_blankline()||f.print_newline(!0)),b.is_empty_element){if(b.tag_start_char===\"{\"&&b.tag_check===\"else\"){this._tag_stack.indent_to_tag([\"if\",\"unless\",\"each\"]),b.indent_content=!0;var U=f.current_line_has_match(/{{#if/);U||f.print_newline(!1)}b.tag_name===\"!--\"&&R.type===u.TAG_CLOSE&&N.is_end_tag&&b.text.indexOf(`\n`)===-1||(b.is_inline_element||b.is_unformatted||f.print_newline(!1),this._calcluate_parent_multiline(f,b))}else if(b.is_end_tag){var H=!1;H=b.start_tag_token&&b.start_tag_token.multiline_content,H=H||!b.is_inline_element&&!(N.is_inline_element||N.is_unformatted)&&!(R.type===u.TAG_CLOSE&&b.start_tag_token===N)&&R.type!==\"TK_CONTENT\",(b.is_content_unformatted||b.is_unformatted)&&(H=!1),H&&f.print_newline(!1)}else b.indent_content=!b.custom_beautifier_name,b.tag_start_char===\"<\"&&(b.tag_name===\"html\"?b.indent_content=this._options.indent_inner_html:b.tag_name===\"head\"?b.indent_content=this._options.indent_head_inner_html:b.tag_name===\"body\"&&(b.indent_content=this._options.indent_body_inner_html)),!(b.is_inline_element||b.is_unformatted)&&(R.type!==\"TK_CONTENT\"||b.is_content_unformatted)&&f.print_newline(!1),this._calcluate_parent_multiline(f,b)},M.prototype._calcluate_parent_multiline=function(f,p){p.parent&&f._output.just_added_newline()&&!((p.is_inline_element||p.is_unformatted)&&p.parent.is_inline_element)&&(p.parent.multiline_content=!0)};var G=[\"address\",\"article\",\"aside\",\"blockquote\",\"details\",\"div\",\"dl\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hr\",\"main\",\"nav\",\"ol\",\"p\",\"pre\",\"section\",\"table\",\"ul\"],J=[\"a\",\"audio\",\"del\",\"ins\",\"map\",\"noscript\",\"video\"];M.prototype._do_optional_end_element=function(f){var p=null;if(!(f.is_empty_element||!f.is_start_tag||!f.parent)){if(f.tag_name===\"body\")p=p||this._tag_stack.try_pop(\"head\");else if(f.tag_name===\"li\")p=p||this._tag_stack.try_pop(\"li\",[\"ol\",\"ul\"]);else if(f.tag_name===\"dd\"||f.tag_name===\"dt\")p=p||this._tag_stack.try_pop(\"dt\",[\"dl\"]),p=p||this._tag_stack.try_pop(\"dd\",[\"dl\"]);else if(f.parent.tag_name===\"p\"&&G.indexOf(f.tag_name)!==-1){var b=f.parent.parent;(!b||J.indexOf(b.tag_name)===-1)&&(p=p||this._tag_stack.try_pop(\"p\"))}else f.tag_name===\"rp\"||f.tag_name===\"rt\"?(p=p||this._tag_stack.try_pop(\"rt\",[\"ruby\",\"rtc\"]),p=p||this._tag_stack.try_pop(\"rp\",[\"ruby\",\"rtc\"])):f.tag_name===\"optgroup\"?p=p||this._tag_stack.try_pop(\"optgroup\",[\"select\"]):f.tag_name===\"option\"?p=p||this._tag_stack.try_pop(\"option\",[\"select\",\"datalist\",\"optgroup\"]):f.tag_name===\"colgroup\"?p=p||this._tag_stack.try_pop(\"caption\",[\"table\"]):f.tag_name===\"thead\"?(p=p||this._tag_stack.try_pop(\"caption\",[\"table\"]),p=p||this._tag_stack.try_pop(\"colgroup\",[\"table\"])):f.tag_name===\"tbody\"||f.tag_name===\"tfoot\"?(p=p||this._tag_stack.try_pop(\"caption\",[\"table\"]),p=p||this._tag_stack.try_pop(\"colgroup\",[\"table\"]),p=p||this._tag_stack.try_pop(\"thead\",[\"table\"]),p=p||this._tag_stack.try_pop(\"tbody\",[\"table\"])):f.tag_name===\"tr\"?(p=p||this._tag_stack.try_pop(\"caption\",[\"table\"]),p=p||this._tag_stack.try_pop(\"colgroup\",[\"table\"]),p=p||this._tag_stack.try_pop(\"tr\",[\"table\",\"thead\",\"tbody\",\"tfoot\"])):(f.tag_name===\"th\"||f.tag_name===\"td\")&&(p=p||this._tag_stack.try_pop(\"td\",[\"table\",\"thead\",\"tbody\",\"tfoot\",\"tr\"]),p=p||this._tag_stack.try_pop(\"th\",[\"table\",\"thead\",\"tbody\",\"tfoot\",\"tr\"]));return f.parent=this._tag_stack.get_parser_token(),p}},e.exports.Beautifier=M},function(e,a,c){var l=c(6).Options;function r(s){l.call(this,s,\"html\"),this.templating.length===1&&this.templating[0]===\"auto\"&&(this.templating=[\"django\",\"erb\",\"handlebars\",\"php\"]),this.indent_inner_html=this._get_boolean(\"indent_inner_html\"),this.indent_body_inner_html=this._get_boolean(\"indent_body_inner_html\",!0),this.indent_head_inner_html=this._get_boolean(\"indent_head_inner_html\",!0),this.indent_handlebars=this._get_boolean(\"indent_handlebars\",!0),this.wrap_attributes=this._get_selection(\"wrap_attributes\",[\"auto\",\"force\",\"force-aligned\",\"force-expand-multiline\",\"aligned-multiple\",\"preserve\",\"preserve-aligned\"]),this.wrap_attributes_indent_size=this._get_number(\"wrap_attributes_indent_size\",this.indent_size),this.extra_liners=this._get_array(\"extra_liners\",[\"head\",\"body\",\"/html\"]),this.inline=this._get_array(\"inline\",[\"a\",\"abbr\",\"area\",\"audio\",\"b\",\"bdi\",\"bdo\",\"br\",\"button\",\"canvas\",\"cite\",\"code\",\"data\",\"datalist\",\"del\",\"dfn\",\"em\",\"embed\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"map\",\"mark\",\"math\",\"meter\",\"noscript\",\"object\",\"output\",\"progress\",\"q\",\"ruby\",\"s\",\"samp\",\"select\",\"small\",\"span\",\"strong\",\"sub\",\"sup\",\"svg\",\"template\",\"textarea\",\"time\",\"u\",\"var\",\"video\",\"wbr\",\"text\",\"acronym\",\"big\",\"strike\",\"tt\"]),this.void_elements=this._get_array(\"void_elements\",[\"area\",\"base\",\"br\",\"col\",\"embed\",\"hr\",\"img\",\"input\",\"keygen\",\"link\",\"menuitem\",\"meta\",\"param\",\"source\",\"track\",\"wbr\",\"!doctype\",\"?xml\",\"basefont\",\"isindex\"]),this.unformatted=this._get_array(\"unformatted\",[]),this.content_unformatted=this._get_array(\"content_unformatted\",[\"pre\",\"textarea\"]),this.unformatted_content_delimiter=this._get_characters(\"unformatted_content_delimiter\"),this.indent_scripts=this._get_selection(\"indent_scripts\",[\"normal\",\"keep\",\"separate\"])}r.prototype=new l,e.exports.Options=r},function(e,a,c){var l=c(9).Tokenizer,r=c(9).TOKEN,s=c(13).Directives,u=c(14).TemplatablePattern,h=c(12).Pattern,d={TAG_OPEN:\"TK_TAG_OPEN\",TAG_CLOSE:\"TK_TAG_CLOSE\",ATTRIBUTE:\"TK_ATTRIBUTE\",EQUALS:\"TK_EQUALS\",VALUE:\"TK_VALUE\",COMMENT:\"TK_COMMENT\",TEXT:\"TK_TEXT\",UNKNOWN:\"TK_UNKNOWN\",START:r.START,RAW:r.RAW,EOF:r.EOF},g=new s(/<\\!--/,/-->/),y=function(m,A){l.call(this,m,A),this._current_tag_name=\"\";var E=new u(this._input).read_options(this._options),w=new h(this._input);if(this.__patterns={word:E.until(/[\\n\\r\\t <]/),single_quote:E.until_after(/'/),double_quote:E.until_after(/\"/),attribute:E.until(/[\\n\\r\\t =>]|\\/>/),element_name:E.until(/[\\n\\r\\t >\\/]/),handlebars_comment:w.starting_with(/{{!--/).until_after(/--}}/),handlebars:w.starting_with(/{{/).until_after(/}}/),handlebars_open:w.until(/[\\n\\r\\t }]/),handlebars_raw_close:w.until(/}}/),comment:w.starting_with(/<!--/).until_after(/-->/),cdata:w.starting_with(/<!\\[CDATA\\[/).until_after(/]]>/),conditional_comment:w.starting_with(/<!\\[/).until_after(/]>/),processing:w.starting_with(/<\\?/).until_after(/\\?>/)},this._options.indent_handlebars&&(this.__patterns.word=this.__patterns.word.exclude(\"handlebars\")),this._unformatted_content_delimiter=null,this._options.unformatted_content_delimiter){var M=this._input.get_literal_regexp(this._options.unformatted_content_delimiter);this.__patterns.unformatted_content_delimiter=w.matching(M).until_after(M)}};y.prototype=new l,y.prototype._is_comment=function(m){return!1},y.prototype._is_opening=function(m){return m.type===d.TAG_OPEN},y.prototype._is_closing=function(m,A){return m.type===d.TAG_CLOSE&&A&&((m.text===\">\"||m.text===\"/>\")&&A.text[0]===\"<\"||m.text===\"}}\"&&A.text[0]===\"{\"&&A.text[1]===\"{\")},y.prototype._reset=function(){this._current_tag_name=\"\"},y.prototype._get_next_token=function(m,A){var E=null;this._readWhitespace();var w=this._input.peek();return w===null?this._create_token(d.EOF,\"\"):(E=E||this._read_open_handlebars(w,A),E=E||this._read_attribute(w,m,A),E=E||this._read_close(w,A),E=E||this._read_raw_content(w,m,A),E=E||this._read_content_word(w),E=E||this._read_comment_or_cdata(w),E=E||this._read_processing(w),E=E||this._read_open(w,A),E=E||this._create_token(d.UNKNOWN,this._input.next()),E)},y.prototype._read_comment_or_cdata=function(m){var A=null,E=null,w=null;if(m===\"<\"){var M=this._input.peek(1);M===\"!\"&&(E=this.__patterns.comment.read(),E?(w=g.get_directives(E),w&&w.ignore===\"start\"&&(E+=g.readIgnored(this._input))):E=this.__patterns.cdata.read()),E&&(A=this._create_token(d.COMMENT,E),A.directives=w)}return A},y.prototype._read_processing=function(m){var A=null,E=null,w=null;if(m===\"<\"){var M=this._input.peek(1);(M===\"!\"||M===\"?\")&&(E=this.__patterns.conditional_comment.read(),E=E||this.__patterns.processing.read()),E&&(A=this._create_token(d.COMMENT,E),A.directives=w)}return A},y.prototype._read_open=function(m,A){var E=null,w=null;return A||m===\"<\"&&(E=this._input.next(),this._input.peek()===\"/\"&&(E+=this._input.next()),E+=this.__patterns.element_name.read(),w=this._create_token(d.TAG_OPEN,E)),w},y.prototype._read_open_handlebars=function(m,A){var E=null,w=null;return A||this._options.indent_handlebars&&m===\"{\"&&this._input.peek(1)===\"{\"&&(this._input.peek(2)===\"!\"?(E=this.__patterns.handlebars_comment.read(),E=E||this.__patterns.handlebars.read(),w=this._create_token(d.COMMENT,E)):(E=this.__patterns.handlebars_open.read(),w=this._create_token(d.TAG_OPEN,E))),w},y.prototype._read_close=function(m,A){var E=null,w=null;return A&&(A.text[0]===\"<\"&&(m===\">\"||m===\"/\"&&this._input.peek(1)===\">\")?(E=this._input.next(),m===\"/\"&&(E+=this._input.next()),w=this._create_token(d.TAG_CLOSE,E)):A.text[0]===\"{\"&&m===\"}\"&&this._input.peek(1)===\"}\"&&(this._input.next(),this._input.next(),w=this._create_token(d.TAG_CLOSE,\"}}\"))),w},y.prototype._read_attribute=function(m,A,E){var w=null,M=\"\";if(E&&E.text[0]===\"<\")if(m===\"=\")w=this._create_token(d.EQUALS,this._input.next());else if(m==='\"'||m===\"'\"){var B=this._input.next();m==='\"'?B+=this.__patterns.double_quote.read():B+=this.__patterns.single_quote.read(),w=this._create_token(d.VALUE,B)}else M=this.__patterns.attribute.read(),M&&(A.type===d.EQUALS?w=this._create_token(d.VALUE,M):w=this._create_token(d.ATTRIBUTE,M));return w},y.prototype._is_content_unformatted=function(m){return this._options.void_elements.indexOf(m)===-1&&(this._options.content_unformatted.indexOf(m)!==-1||this._options.unformatted.indexOf(m)!==-1)},y.prototype._read_raw_content=function(m,A,E){var w=\"\";if(E&&E.text[0]===\"{\")w=this.__patterns.handlebars_raw_close.read();else if(A.type===d.TAG_CLOSE&&A.opened.text[0]===\"<\"&&A.text[0]!==\"/\"){var M=A.opened.text.substr(1).toLowerCase();if(M===\"script\"||M===\"style\"){var B=this._read_comment_or_cdata(m);if(B)return B.type=d.TEXT,B;w=this._input.readUntil(new RegExp(\"</\"+M+\"[\\\\n\\\\r\\\\t ]*?>\",\"ig\"))}else this._is_content_unformatted(M)&&(w=this._input.readUntil(new RegExp(\"</\"+M+\"[\\\\n\\\\r\\\\t ]*?>\",\"ig\")))}return w?this._create_token(d.TEXT,w):null},y.prototype._read_content_word=function(m){var A=\"\";if(this._options.unformatted_content_delimiter&&m===this._options.unformatted_content_delimiter[0]&&(A=this.__patterns.unformatted_content_delimiter.read()),A||(A=this.__patterns.word.read()),A)return this._create_token(d.TEXT,A)},e.exports.Tokenizer=y,e.exports.TOKEN=d}],i={};function o(e){var a=i[e];if(a!==void 0)return a.exports;var c=i[e]={exports:{}};return t[e](c,c.exports,o),c.exports}var n=o(18);nn=n})();function rn(t,i){return nn(t,i,Kt,tn)}function sn(t,i,o){var n=t.getText(),e=!0,a=0,c=o.tabSize||4;if(i){for(var l=t.offsetAt(i.start),r=l;r>0&&on(n,r-1);)r--;r===0||an(n,r-1)?l=r:r<l&&(l=r+1);for(var s=t.offsetAt(i.end),u=s;u<n.length&&on(n,u);)u++;(u===n.length||an(n,u))&&(s=u),i=P.create(t.positionAt(l),t.positionAt(s));var h=n.substring(0,l);if(new RegExp(/.*[<][^>]*$/).test(h))return n=n.substring(l,s),[{range:i,newText:n}];if(e=s===n.length,n=n.substring(l,s),l!==0){var d=t.offsetAt(X.create(i.start.line,0));a=wi(t.getText(),d,o)}}else i=P.create(X.create(0,0),t.positionAt(n.length));var g={indent_size:c,indent_char:o.insertSpaces?\" \":\"\t\",indent_empty_lines:ie(o,\"indentEmptyLines\",!1),wrap_line_length:ie(o,\"wrapLineLength\",120),unformatted:mt(o,\"unformatted\",void 0),content_unformatted:mt(o,\"contentUnformatted\",void 0),indent_inner_html:ie(o,\"indentInnerHtml\",!1),preserve_newlines:ie(o,\"preserveNewLines\",!0),max_preserve_newlines:ie(o,\"maxPreserveNewLines\",32786),indent_handlebars:ie(o,\"indentHandlebars\",!1),end_with_newline:e&&ie(o,\"endWithNewline\",!1),extra_liners:mt(o,\"extraLiners\",void 0),wrap_attributes:ie(o,\"wrapAttributes\",\"auto\"),wrap_attributes_indent_size:ie(o,\"wrapAttributesIndentSize\",void 0),eol:`\n`,indent_scripts:ie(o,\"indentScripts\",\"normal\"),templating:vi(o,\"all\"),unformatted_content_delimiter:ie(o,\"unformattedContentDelimiter\",\"\")},y=rn(bi(n),g);if(a>0){var m=o.insertSpaces?pt(\" \",c*a):pt(\"\t\",a);y=y.split(`\n`).join(`\n`+m),i.start.character===0&&(y=m+y)}return[{range:i,newText:y}]}function bi(t){return t.replace(/^\\s+/,\"\")}function ie(t,i,o){if(t&&t.hasOwnProperty(i)){var n=t[i];if(n!==null)return n}return o}function mt(t,i,o){var n=ie(t,i,null);return typeof n==\"string\"?n.length>0?n.split(\",\").map(function(e){return e.trim().toLowerCase()}):[]:o}function vi(t,i){var o=ie(t,\"templating\",i);return o===!0?[\"auto\"]:[\"none\"]}function wi(t,i,o){for(var n=i,e=0,a=o.tabSize||4;n<t.length;){var c=t.charAt(n);if(c===\" \")e++;else if(c===\"\t\")e+=a;else break;n++}return Math.floor(e/a)}function an(t,i){return`\\r\n`.indexOf(t.charAt(i))!==-1}function on(t,i){return\" \t\".indexOf(t.charAt(i))!==-1}var ln;ln=(()=>{\"use strict\";var t={470:n=>{function e(l){if(typeof l!=\"string\")throw new TypeError(\"Path must be a string. Received \"+JSON.stringify(l))}function a(l,r){for(var s,u=\"\",h=0,d=-1,g=0,y=0;y<=l.length;++y){if(y<l.length)s=l.charCodeAt(y);else{if(s===47)break;s=47}if(s===47){if(!(d===y-1||g===1))if(d!==y-1&&g===2){if(u.length<2||h!==2||u.charCodeAt(u.length-1)!==46||u.charCodeAt(u.length-2)!==46){if(u.length>2){var m=u.lastIndexOf(\"/\");if(m!==u.length-1){m===-1?(u=\"\",h=0):h=(u=u.slice(0,m)).length-1-u.lastIndexOf(\"/\"),d=y,g=0;continue}}else if(u.length===2||u.length===1){u=\"\",h=0,d=y,g=0;continue}}r&&(u.length>0?u+=\"/..\":u=\"..\",h=2)}else u.length>0?u+=\"/\"+l.slice(d+1,y):u=l.slice(d+1,y),h=y-d-1;d=y,g=0}else s===46&&g!==-1?++g:g=-1}return u}var c={resolve:function(){for(var l,r=\"\",s=!1,u=arguments.length-1;u>=-1&&!s;u--){var h;u>=0?h=arguments[u]:(l===void 0&&(l=process.cwd()),h=l),e(h),h.length!==0&&(r=h+\"/\"+r,s=h.charCodeAt(0)===47)}return r=a(r,!s),s?r.length>0?\"/\"+r:\"/\":r.length>0?r:\".\"},normalize:function(l){if(e(l),l.length===0)return\".\";var r=l.charCodeAt(0)===47,s=l.charCodeAt(l.length-1)===47;return(l=a(l,!r)).length!==0||r||(l=\".\"),l.length>0&&s&&(l+=\"/\"),r?\"/\"+l:l},isAbsolute:function(l){return e(l),l.length>0&&l.charCodeAt(0)===47},join:function(){if(arguments.length===0)return\".\";for(var l,r=0;r<arguments.length;++r){var s=arguments[r];e(s),s.length>0&&(l===void 0?l=s:l+=\"/\"+s)}return l===void 0?\".\":c.normalize(l)},relative:function(l,r){if(e(l),e(r),l===r||(l=c.resolve(l))===(r=c.resolve(r)))return\"\";for(var s=1;s<l.length&&l.charCodeAt(s)===47;++s);for(var u=l.length,h=u-s,d=1;d<r.length&&r.charCodeAt(d)===47;++d);for(var g=r.length-d,y=h<g?h:g,m=-1,A=0;A<=y;++A){if(A===y){if(g>y){if(r.charCodeAt(d+A)===47)return r.slice(d+A+1);if(A===0)return r.slice(d+A)}else h>y&&(l.charCodeAt(s+A)===47?m=A:A===0&&(m=0));break}var E=l.charCodeAt(s+A);if(E!==r.charCodeAt(d+A))break;E===47&&(m=A)}var w=\"\";for(A=s+m+1;A<=u;++A)A!==u&&l.charCodeAt(A)!==47||(w.length===0?w+=\"..\":w+=\"/..\");return w.length>0?w+r.slice(d+m):(d+=m,r.charCodeAt(d)===47&&++d,r.slice(d))},_makeLong:function(l){return l},dirname:function(l){if(e(l),l.length===0)return\".\";for(var r=l.charCodeAt(0),s=r===47,u=-1,h=!0,d=l.length-1;d>=1;--d)if((r=l.charCodeAt(d))===47){if(!h){u=d;break}}else h=!1;return u===-1?s?\"/\":\".\":s&&u===1?\"//\":l.slice(0,u)},basename:function(l,r){if(r!==void 0&&typeof r!=\"string\")throw new TypeError('\"ext\" argument must be a string');e(l);var s,u=0,h=-1,d=!0;if(r!==void 0&&r.length>0&&r.length<=l.length){if(r.length===l.length&&r===l)return\"\";var g=r.length-1,y=-1;for(s=l.length-1;s>=0;--s){var m=l.charCodeAt(s);if(m===47){if(!d){u=s+1;break}}else y===-1&&(d=!1,y=s+1),g>=0&&(m===r.charCodeAt(g)?--g==-1&&(h=s):(g=-1,h=y))}return u===h?h=y:h===-1&&(h=l.length),l.slice(u,h)}for(s=l.length-1;s>=0;--s)if(l.charCodeAt(s)===47){if(!d){u=s+1;break}}else h===-1&&(d=!1,h=s+1);return h===-1?\"\":l.slice(u,h)},extname:function(l){e(l);for(var r=-1,s=0,u=-1,h=!0,d=0,g=l.length-1;g>=0;--g){var y=l.charCodeAt(g);if(y!==47)u===-1&&(h=!1,u=g+1),y===46?r===-1?r=g:d!==1&&(d=1):r!==-1&&(d=-1);else if(!h){s=g+1;break}}return r===-1||u===-1||d===0||d===1&&r===u-1&&r===s+1?\"\":l.slice(r,u)},format:function(l){if(l===null||typeof l!=\"object\")throw new TypeError('The \"pathObject\" argument must be of type Object. Received type '+typeof l);return function(r,s){var u=s.dir||s.root,h=s.base||(s.name||\"\")+(s.ext||\"\");return u?u===s.root?u+h:u+\"/\"+h:h}(0,l)},parse:function(l){e(l);var r={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(l.length===0)return r;var s,u=l.charCodeAt(0),h=u===47;h?(r.root=\"/\",s=1):s=0;for(var d=-1,g=0,y=-1,m=!0,A=l.length-1,E=0;A>=s;--A)if((u=l.charCodeAt(A))!==47)y===-1&&(m=!1,y=A+1),u===46?d===-1?d=A:E!==1&&(E=1):d!==-1&&(E=-1);else if(!m){g=A+1;break}return d===-1||y===-1||E===0||E===1&&d===y-1&&d===g+1?y!==-1&&(r.base=r.name=g===0&&h?l.slice(1,y):l.slice(g,y)):(g===0&&h?(r.name=l.slice(1,d),r.base=l.slice(1,y)):(r.name=l.slice(g,d),r.base=l.slice(g,y)),r.ext=l.slice(d,y)),g>0?r.dir=l.slice(0,g-1):h&&(r.dir=\"/\"),r},sep:\"/\",delimiter:\":\",win32:null,posix:null};c.posix=c,n.exports=c},447:(n,e,a)=>{var c;if(a.r(e),a.d(e,{URI:()=>w,Utils:()=>H}),typeof process==\"object\")c=process.platform===\"win32\";else if(typeof navigator==\"object\"){var l=navigator.userAgent;c=l.indexOf(\"Windows\")>=0}var r,s,u=(r=function(T,v){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(k,C){k.__proto__=C}||function(k,C){for(var x in C)Object.prototype.hasOwnProperty.call(C,x)&&(k[x]=C[x])})(T,v)},function(T,v){if(typeof v!=\"function\"&&v!==null)throw new TypeError(\"Class extends value \"+String(v)+\" is not a constructor or null\");function k(){this.constructor=T}r(T,v),T.prototype=v===null?Object.create(v):(k.prototype=v.prototype,new k)}),h=/^\\w[\\w\\d+.-]*$/,d=/^\\//,g=/^\\/\\//;function y(T,v){if(!T.scheme&&v)throw new Error('[UriError]: Scheme is missing: {scheme: \"\", authority: \"'.concat(T.authority,'\", path: \"').concat(T.path,'\", query: \"').concat(T.query,'\", fragment: \"').concat(T.fragment,'\"}'));if(T.scheme&&!h.test(T.scheme))throw new Error(\"[UriError]: Scheme contains illegal characters.\");if(T.path){if(T.authority){if(!d.test(T.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character')}else if(g.test(T.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")')}}var m=\"\",A=\"/\",E=/^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/,w=function(){function T(v,k,C,x,D,L){L===void 0&&(L=!1),typeof v==\"object\"?(this.scheme=v.scheme||m,this.authority=v.authority||m,this.path=v.path||m,this.query=v.query||m,this.fragment=v.fragment||m):(this.scheme=function(q,j){return q||j?q:\"file\"}(v,L),this.authority=k||m,this.path=function(q,j){switch(q){case\"https\":case\"http\":case\"file\":j?j[0]!==A&&(j=A+j):j=A}return j}(this.scheme,C||m),this.query=x||m,this.fragment=D||m,y(this,L))}return T.isUri=function(v){return v instanceof T||!!v&&typeof v.authority==\"string\"&&typeof v.fragment==\"string\"&&typeof v.path==\"string\"&&typeof v.query==\"string\"&&typeof v.scheme==\"string\"&&typeof v.fsPath==\"string\"&&typeof v.with==\"function\"&&typeof v.toString==\"function\"},Object.defineProperty(T.prototype,\"fsPath\",{get:function(){return p(this,!1)},enumerable:!1,configurable:!0}),T.prototype.with=function(v){if(!v)return this;var k=v.scheme,C=v.authority,x=v.path,D=v.query,L=v.fragment;return k===void 0?k=this.scheme:k===null&&(k=m),C===void 0?C=this.authority:C===null&&(C=m),x===void 0?x=this.path:x===null&&(x=m),D===void 0?D=this.query:D===null&&(D=m),L===void 0?L=this.fragment:L===null&&(L=m),k===this.scheme&&C===this.authority&&x===this.path&&D===this.query&&L===this.fragment?this:new B(k,C,x,D,L)},T.parse=function(v,k){k===void 0&&(k=!1);var C=E.exec(v);return C?new B(C[2]||m,U(C[4]||m),U(C[5]||m),U(C[7]||m),U(C[9]||m),k):new B(m,m,m,m,m)},T.file=function(v){var k=m;if(c&&(v=v.replace(/\\\\/g,A)),v[0]===A&&v[1]===A){var C=v.indexOf(A,2);C===-1?(k=v.substring(2),v=A):(k=v.substring(2,C),v=v.substring(C)||A)}return new B(\"file\",k,v,m,m)},T.from=function(v){var k=new B(v.scheme,v.authority,v.path,v.query,v.fragment);return y(k,!0),k},T.prototype.toString=function(v){return v===void 0&&(v=!1),b(this,v)},T.prototype.toJSON=function(){return this},T.revive=function(v){if(v){if(v instanceof T)return v;var k=new B(v);return k._formatted=v.external,k._fsPath=v._sep===M?v.fsPath:null,k}return v},T}(),M=c?1:void 0,B=function(T){function v(){var k=T!==null&&T.apply(this,arguments)||this;return k._formatted=null,k._fsPath=null,k}return u(v,T),Object.defineProperty(v.prototype,\"fsPath\",{get:function(){return this._fsPath||(this._fsPath=p(this,!1)),this._fsPath},enumerable:!1,configurable:!0}),v.prototype.toString=function(k){return k===void 0&&(k=!1),k?b(this,!0):(this._formatted||(this._formatted=b(this,!1)),this._formatted)},v.prototype.toJSON=function(){var k={$mid:1};return this._fsPath&&(k.fsPath=this._fsPath,k._sep=M),this._formatted&&(k.external=this._formatted),this.path&&(k.path=this.path),this.scheme&&(k.scheme=this.scheme),this.authority&&(k.authority=this.authority),this.query&&(k.query=this.query),this.fragment&&(k.fragment=this.fragment),k},v}(w),G=((s={})[58]=\"%3A\",s[47]=\"%2F\",s[63]=\"%3F\",s[35]=\"%23\",s[91]=\"%5B\",s[93]=\"%5D\",s[64]=\"%40\",s[33]=\"%21\",s[36]=\"%24\",s[38]=\"%26\",s[39]=\"%27\",s[40]=\"%28\",s[41]=\"%29\",s[42]=\"%2A\",s[43]=\"%2B\",s[44]=\"%2C\",s[59]=\"%3B\",s[61]=\"%3D\",s[32]=\"%20\",s);function J(T,v){for(var k=void 0,C=-1,x=0;x<T.length;x++){var D=T.charCodeAt(x);if(D>=97&&D<=122||D>=65&&D<=90||D>=48&&D<=57||D===45||D===46||D===95||D===126||v&&D===47)C!==-1&&(k+=encodeURIComponent(T.substring(C,x)),C=-1),k!==void 0&&(k+=T.charAt(x));else{k===void 0&&(k=T.substr(0,x));var L=G[D];L!==void 0?(C!==-1&&(k+=encodeURIComponent(T.substring(C,x)),C=-1),k+=L):C===-1&&(C=x)}}return C!==-1&&(k+=encodeURIComponent(T.substring(C))),k!==void 0?k:T}function f(T){for(var v=void 0,k=0;k<T.length;k++){var C=T.charCodeAt(k);C===35||C===63?(v===void 0&&(v=T.substr(0,k)),v+=G[C]):v!==void 0&&(v+=T[k])}return v!==void 0?v:T}function p(T,v){var k;return k=T.authority&&T.path.length>1&&T.scheme===\"file\"?\"//\".concat(T.authority).concat(T.path):T.path.charCodeAt(0)===47&&(T.path.charCodeAt(1)>=65&&T.path.charCodeAt(1)<=90||T.path.charCodeAt(1)>=97&&T.path.charCodeAt(1)<=122)&&T.path.charCodeAt(2)===58?v?T.path.substr(1):T.path[1].toLowerCase()+T.path.substr(2):T.path,c&&(k=k.replace(/\\//g,\"\\\\\")),k}function b(T,v){var k=v?f:J,C=\"\",x=T.scheme,D=T.authority,L=T.path,q=T.query,j=T.fragment;if(x&&(C+=x,C+=\":\"),(D||x===\"file\")&&(C+=A,C+=A),D){var O=D.indexOf(\"@\");if(O!==-1){var V=D.substr(0,O);D=D.substr(O+1),(O=V.indexOf(\":\"))===-1?C+=k(V,!1):(C+=k(V.substr(0,O),!1),C+=\":\",C+=k(V.substr(O+1),!1)),C+=\"@\"}(O=(D=D.toLowerCase()).indexOf(\":\"))===-1?C+=k(D,!1):(C+=k(D.substr(0,O),!1),C+=D.substr(O))}if(L){if(L.length>=3&&L.charCodeAt(0)===47&&L.charCodeAt(2)===58)(K=L.charCodeAt(1))>=65&&K<=90&&(L=\"/\".concat(String.fromCharCode(K+32),\":\").concat(L.substr(3)));else if(L.length>=2&&L.charCodeAt(1)===58){var K;(K=L.charCodeAt(0))>=65&&K<=90&&(L=\"\".concat(String.fromCharCode(K+32),\":\").concat(L.substr(2)))}C+=k(L,!0)}return q&&(C+=\"?\",C+=k(q,!1)),j&&(C+=\"#\",C+=v?j:J(j,!1)),C}function N(T){try{return decodeURIComponent(T)}catch{return T.length>3?T.substr(0,3)+N(T.substr(3)):T}}var R=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function U(T){return T.match(R)?T.replace(R,function(v){return N(v)}):T}var H,z=a(470),I=function(T,v,k){if(k||arguments.length===2)for(var C,x=0,D=v.length;x<D;x++)!C&&x in v||(C||(C=Array.prototype.slice.call(v,0,x)),C[x]=v[x]);return T.concat(C||Array.prototype.slice.call(v))},F=z.posix||z;(function(T){T.joinPath=function(v){for(var k=[],C=1;C<arguments.length;C++)k[C-1]=arguments[C];return v.with({path:F.join.apply(F,I([v.path],k,!1))})},T.resolvePath=function(v){for(var k=[],C=1;C<arguments.length;C++)k[C-1]=arguments[C];var x=v.path||\"/\";return v.with({path:F.resolve.apply(F,I([x],k,!1))})},T.dirname=function(v){var k=F.dirname(v.path);return k.length===1&&k.charCodeAt(0)===46?v:v.with({path:k})},T.basename=function(v){return F.basename(v.path)},T.extname=function(v){return F.extname(v.path)}})(H||(H={}))}},i={};function o(n){if(i[n])return i[n].exports;var e=i[n]={exports:{}};return t[n](e,e.exports,o),e.exports}return o.d=(n,e)=>{for(var a in e)o.o(e,a)&&!o.o(n,a)&&Object.defineProperty(n,a,{enumerable:!0,get:e[a]})},o.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),o.r=n=>{typeof Symbol<\"u\"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(n,\"__esModule\",{value:!0})},o(447)})();var{URI:un,Utils:Dr}=ln;function ft(t){var i=t[0],o=t[t.length-1];return i===o&&(i===\"'\"||i==='\"')&&(t=t.substr(1,t.length-2)),t}function _i(t,i){return!t.length||i===\"handlebars\"&&/{{|}}/.test(t)?!1:/\\b(w[\\w\\d+.-]*:\\/\\/)?[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|\\/?))/.test(t)}function yi(t,i,o,n){if(!(/^\\s*javascript\\:/i.test(i)||/[\\n\\r]/.test(i))){if(i=i.replace(/^\\s*/g,\"\"),/^https?:\\/\\//i.test(i)||/^file:\\/\\//i.test(i))return i;if(/^\\#/i.test(i))return t+i;if(/^\\/\\//i.test(i)){var e=ae(t,\"https://\")?\"https\":\"http\";return e+\":\"+i.replace(/^\\s*/g,\"\")}return o?o.resolveReference(i,n||t):i}}function Ti(t,i,o,n,e,a){var c=ft(o);if(!!_i(c,t.languageId)){c.length<o.length&&(n++,e--);var l=yi(t.uri,c,i,a);if(!(!l||!ki(l)))return{range:P.create(t.positionAt(n),t.positionAt(e)),target:l}}}function ki(t){try{return un.parse(t),!0}catch{return!1}}function cn(t,i){for(var o=[],n=$(t.getText(),0),e=n.scan(),a=void 0,c=!1,l=void 0,r={};e!==S.EOS;){switch(e){case S.StartTag:if(!l){var s=n.getTokenText().toLowerCase();c=s===\"base\"}break;case S.AttributeName:a=n.getTokenText().toLowerCase();break;case S.AttributeValue:if(a===\"src\"||a===\"href\"){var u=n.getTokenText();if(!c){var h=Ti(t,i,u,n.getTokenOffset(),n.getTokenEnd(),l);h&&o.push(h)}c&&typeof l>\"u\"&&(l=ft(u),l&&i&&(l=i.resolveReference(l,t.uri))),c=!1,a=void 0}else if(a===\"id\"){var d=ft(n.getTokenText());r[d]=n.getTokenOffset()}break}e=n.scan()}for(var g=0,y=o;g<y.length;g++){var h=y[g],m=t.uri+\"#\";if(h.target&&ae(h.target,m)){var A=h.target.substr(m.length),E=r[A];if(E!==void 0){var w=t.positionAt(E);h.target=\"\".concat(m).concat(w.line+1,\",\").concat(w.character+1)}}}return o}function mn(t,i,o){var n=t.offsetAt(i),e=o.findNodeAt(n);if(!e.tag)return[];var a=[],c=pn(S.StartTag,t,e.start),l=typeof e.endTagStart==\"number\"&&pn(S.EndTag,t,e.endTagStart);return(c&&dn(c,i)||l&&dn(l,i))&&(c&&a.push({kind:Te.Read,range:c}),l&&a.push({kind:Te.Read,range:l})),a}function hn(t,i){return t.line<i.line||t.line===i.line&&t.character<=i.character}function dn(t,i){return hn(t.start,i)&&hn(i,t.end)}function pn(t,i,o){for(var n=$(i.getText(),o),e=n.scan();e!==S.EOS&&e!==t;)e=n.scan();return e!==S.EOS?{start:i.positionAt(n.getTokenOffset()),end:i.positionAt(n.getTokenEnd())}:null}function fn(t,i){var o=[];return i.roots.forEach(function(n){gn(t,n,\"\",o)}),o}function gn(t,i,o,n){var e=Si(i),a=we.create(t.uri,P.create(t.positionAt(i.start),t.positionAt(i.end))),c={name:e,location:a,containerName:o,kind:Me.Field};n.push(c),i.children.forEach(function(l){gn(t,l,e,n)})}function Si(t){var i=t.tag;if(t.attributes){var o=t.attributes.id,n=t.attributes.class;o&&(i+=\"#\".concat(o.replace(/[\\\"\\']/g,\"\"))),n&&(i+=n.replace(/[\\\"\\']/g,\"\").split(/\\s+/).map(function(e){return\".\".concat(e)}).join(\"\"))}return i||\"?\"}function bn(t,i,o,n){var e,a=t.offsetAt(i),c=n.findNodeAt(a);if(!c.tag||!Ai(c,a,c.tag))return null;var l=[],r={start:t.positionAt(c.start+1),end:t.positionAt(c.start+1+c.tag.length)};if(l.push({range:r,newText:o}),c.endTagStart){var s={start:t.positionAt(c.endTagStart+2),end:t.positionAt(c.endTagStart+2+c.tag.length)};l.push({range:s,newText:o})}var u=(e={},e[t.uri.toString()]=l,e);return{changes:u}}function Ai(t,i,o){return t.endTagStart&&t.endTagStart+2<=i&&i<=t.endTagStart+2+o.length?!0:t.start+1<=i&&i<=t.start+1+o.length}function vn(t,i,o){var n=t.offsetAt(i),e=o.findNodeAt(n);if(!e.tag||!e.endTagStart)return null;if(e.start+1<=n&&n<=e.start+1+e.tag.length){var a=n-1-e.start+e.endTagStart+2;return t.positionAt(a)}if(e.endTagStart+2<=n&&n<=e.endTagStart+2+e.tag.length){var a=n-2-e.endTagStart+e.start+1;return t.positionAt(a)}return null}function gt(t,i,o){var n=t.offsetAt(i),e=o.findNodeAt(n),a=e.tag?e.tag.length:0;return e.endTagStart&&(e.start+1<=n&&n<=e.start+1+a||e.endTagStart+2<=n&&n<=e.endTagStart+2+a)?[P.create(t.positionAt(e.start+1),t.positionAt(e.start+1+a)),P.create(t.positionAt(e.endTagStart+2),t.positionAt(e.endTagStart+2+a))]:null}function xi(t,i){t=t.sort(function(y,m){var A=y.startLine-m.startLine;return A===0&&(A=y.endLine-m.endLine),A});for(var o=void 0,n=[],e=[],a=[],c=function(y,m){e[y]=m,m<30&&(a[m]=(a[m]||0)+1)},l=0;l<t.length;l++){var r=t[l];if(!o)o=r,c(l,0);else if(r.startLine>o.startLine){if(r.endLine<=o.endLine)n.push(o),o=r,c(l,n.length);else if(r.startLine>o.endLine){do o=n.pop();while(o&&r.startLine>o.endLine);o&&n.push(o),o=r,c(l,n.length)}}}for(var s=0,u=0,l=0;l<a.length;l++){var h=a[l];if(h){if(h+s>i){u=l;break}s+=h}}for(var d=[],l=0;l<t.length;l++){var g=e[l];typeof g==\"number\"&&(g<u||g===u&&s++<i)&&d.push(t[l])}return d}function wn(t,i){var o=$(t.getText()),n=o.scan(),e=[],a=[],c=null,l=-1;function r(w){e.push(w),l=w.startLine}for(;n!==S.EOS;){switch(n){case S.StartTag:{var s=o.getTokenText(),u=t.positionAt(o.getTokenOffset()).line;a.push({startLine:u,tagName:s}),c=s;break}case S.EndTag:{c=o.getTokenText();break}case S.StartTagClose:if(!c||!me(c))break;case S.EndTagClose:case S.StartTagSelfClose:{for(var h=a.length-1;h>=0&&a[h].tagName!==c;)h--;if(h>=0){var d=a[h];a.length=h;var g=t.positionAt(o.getTokenOffset()).line,u=d.startLine,y=g-1;y>u&&l!==u&&r({startLine:u,endLine:y})}break}case S.Comment:{var u=t.positionAt(o.getTokenOffset()).line,m=o.getTokenText(),A=m.match(/^\\s*#(region\\b)|(endregion\\b)/);if(A)if(A[1])a.push({startLine:u,tagName:\"\"});else{for(var h=a.length-1;h>=0&&a[h].tagName.length;)h--;if(h>=0){var d=a[h];a.length=h;var y=u;u=d.startLine,y>u&&l!==u&&r({startLine:u,endLine:y,kind:_e.Region})}}else{var y=t.positionAt(o.getTokenOffset()+o.getTokenLength()).line;u<y&&r({startLine:u,endLine:y,kind:_e.Comment})}break}}n=o.scan()}var E=i&&i.rangeLimit||Number.MAX_VALUE;return e.length>E?xi(e,E):e}function yn(t,i){function o(n){for(var e=Di(t,n),a=void 0,c=void 0,l=e.length-1;l>=0;l--){var r=e[l];(!a||r[0]!==a[0]||r[1]!==a[1])&&(c=ke.create(P.create(t.positionAt(e[l][0]),t.positionAt(e[l][1])),c)),a=r}return c||(c=ke.create(P.create(n,n))),c}return i.map(o)}function Di(t,i){var o=je(t.getText()),n=t.offsetAt(i),e=o.findNodeAt(n),a=Ei(e);if(e.startTagEnd&&!e.endTagStart){if(e.startTagEnd!==e.end)return[[e.start,e.end]];var c=P.create(t.positionAt(e.startTagEnd-2),t.positionAt(e.startTagEnd)),l=t.getText(c);l===\"/>\"?a.unshift([e.start+1,e.startTagEnd-2]):a.unshift([e.start+1,e.startTagEnd-1]);var r=_n(t,e,n);return a=r.concat(a),a}if(!e.startTagEnd||!e.endTagStart)return a;if(a.unshift([e.start,e.end]),e.start<n&&n<e.startTagEnd){a.unshift([e.start+1,e.startTagEnd-1]);var r=_n(t,e,n);return a=r.concat(a),a}else return e.startTagEnd<=n&&n<=e.endTagStart?(a.unshift([e.startTagEnd,e.endTagStart]),a):(n>=e.endTagStart+2&&a.unshift([e.endTagStart+2,e.end-1]),a)}function Ei(t){for(var i=t,o=function(e){return e.startTagEnd&&e.endTagStart&&e.startTagEnd<e.endTagStart?[[e.startTagEnd,e.endTagStart],[e.start,e.end]]:[[e.start,e.end]]},n=[];i.parent;)i=i.parent,o(i).forEach(function(e){return n.push(e)});return n}function _n(t,i,o){for(var n=P.create(t.positionAt(i.start),t.positionAt(i.end)),e=t.getText(n),a=o-i.start,c=$(e),l=c.scan(),r=i.start,s=[],u=!1,h=-1;l!==S.EOS;){switch(l){case S.AttributeName:{if(a<c.getTokenOffset()){u=!1;break}a<=c.getTokenEnd()&&s.unshift([c.getTokenOffset(),c.getTokenEnd()]),u=!0,h=c.getTokenOffset();break}case S.AttributeValue:{if(!u)break;var d=c.getTokenText();if(a<c.getTokenOffset()){s.push([h,c.getTokenEnd()]);break}a>=c.getTokenOffset()&&a<=c.getTokenEnd()&&(s.unshift([c.getTokenOffset(),c.getTokenEnd()]),(d[0]==='\"'&&d[d.length-1]==='\"'||d[0]===\"'\"&&d[d.length-1]===\"'\")&&a>=c.getTokenOffset()+1&&a<=c.getTokenEnd()-1&&s.unshift([c.getTokenOffset()+1,c.getTokenEnd()-1]),s.push([h,c.getTokenEnd()]));break}}l=c.scan()}return s.map(function(g){return[g[0]+r,g[1]+r]})}var bt={version:1.1,tags:[{name:\"html\",description:{kind:\"markdown\",value:\"The html element represents the root of an HTML document.\"},attributes:[{name:\"manifest\",description:{kind:\"markdown\",value:\"Specifies the URI of a resource manifest indicating resources that should be cached locally. See [Using the application cache](https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache) for details.\"}},{name:\"version\",description:'Specifies the version of the HTML [Document Type Definition](https://developer.mozilla.org/en-US/docs/Glossary/DTD \"Document Type Definition: In HTML, the doctype is the required \"<!DOCTYPE html>\" preamble found at the top of all documents. Its sole purpose is to prevent a browser from switching into so-called \\u201Cquirks mode\\u201D when rendering a document; that is, the \"<!DOCTYPE html>\" doctype ensures that the browser makes a best-effort attempt at following the relevant specifications, rather than using a different rendering mode that is incompatible with some specifications.\") that governs the current document. This attribute is not needed, because it is redundant with the version information in the document type declaration.'},{name:\"xmlns\",description:'Specifies the XML Namespace of the document. Default value is `\"http://www.w3.org/1999/xhtml\"`. This is required in documents parsed with XML parsers, and optional in text/html documents.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/html\"}]},{name:\"head\",description:{kind:\"markdown\",value:\"The head element represents a collection of metadata for the Document.\"},attributes:[{name:\"profile\",description:\"The URIs of one or more metadata profiles, separated by white space.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/head\"}]},{name:\"title\",description:{kind:\"markdown\",value:\"The title element represents the document's title or name. Authors should use titles that identify their documents even when they are used out of context, for example in a user's history or bookmarks, or in search results. The document's title is often different from its first heading, since the first heading does not have to stand alone when taken out of context.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/title\"}]},{name:\"base\",description:{kind:\"markdown\",value:\"The base element allows authors to specify the document base URL for the purposes of resolving relative URLs, and the name of the default browsing context for the purposes of following hyperlinks. The element does not represent any content beyond this information.\"},attributes:[{name:\"href\",description:{kind:\"markdown\",value:\"The base URL to be used throughout the document for relative URL addresses. If this attribute is specified, this element must come before any other elements with attributes whose values are URLs. Absolute and relative URLs are allowed.\"}},{name:\"target\",description:{kind:\"markdown\",value:\"A name or keyword indicating the default location to display the result when hyperlinks or forms cause navigation, for elements that do not have an explicit target reference. It is a name of, or keyword for, a _browsing context_ (for example: tab, window, or inline frame). The following keywords have special meanings:\\n\\n*   `_self`: Load the result into the same browsing context as the current one. This value is the default if the attribute is not specified.\\n*   `_blank`: Load the result into a new unnamed browsing context.\\n*   `_parent`: Load the result into the parent browsing context of the current one. If there is no parent, this option behaves the same way as `_self`.\\n*   `_top`: Load the result into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as `_self`.\\n\\nIf this attribute is specified, this element must come before any other elements with attributes whose values are URLs.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/base\"}]},{name:\"link\",description:{kind:\"markdown\",value:\"The link element allows authors to link their document to other resources.\"},attributes:[{name:\"href\",description:{kind:\"markdown\",value:'This attribute specifies the [URL](https://developer.mozilla.org/en-US/docs/Glossary/URL \"URL: Uniform Resource Locator (URL) is a text string specifying where a resource can be found on the Internet.\") of the linked resource. A URL can be absolute or relative.'}},{name:\"crossorigin\",valueSet:\"xo\",description:{kind:\"markdown\",value:'This enumerated attribute indicates whether [CORS](https://developer.mozilla.org/en-US/docs/Glossary/CORS \"CORS: CORS (Cross-Origin Resource Sharing) is a system, consisting of transmitting HTTP headers, that determines whether browsers block frontend JavaScript code from accessing responses for cross-origin requests.\") must be used when fetching the resource. [CORS-enabled images](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_Enabled_Image) can be reused in the [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas \"Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.\") element without being _tainted_. The allowed values are:\\n\\n`anonymous`\\n\\nA cross-origin request (i.e. with an [`Origin`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin \"The Origin request header indicates where a fetch originates from. It doesn\\'t include any path information, but only the server name. It is sent with CORS requests, as well as with POST requests. It is similar to the Referer header, but, unlike this header, it doesn\\'t disclose the whole path.\") HTTP header) is performed, but no credential is sent (i.e. no cookie, X.509 certificate, or HTTP Basic authentication). If the server does not give credentials to the origin site (by not setting the [`Access-Control-Allow-Origin`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin \"The Access-Control-Allow-Origin response header indicates whether the response can be shared with requesting code from the given origin.\") HTTP header) the image will be tainted and its usage restricted.\\n\\n`use-credentials`\\n\\nA cross-origin request (i.e. with an `Origin` HTTP header) is performed along with a credential sent (i.e. a cookie, certificate, and/or HTTP Basic authentication is performed). If the server does not give credentials to the origin site (through [`Access-Control-Allow-Credentials`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials \"The Access-Control-Allow-Credentials response header tells browsers whether to expose the response to frontend JavaScript code when the request\\'s credentials mode (Request.credentials) is \"include\".\") HTTP header), the resource will be _tainted_ and its usage restricted.\\n\\nIf the attribute is not present, the resource is fetched without a [CORS](https://developer.mozilla.org/en-US/docs/Glossary/CORS \"CORS: CORS (Cross-Origin Resource Sharing) is a system, consisting of transmitting HTTP headers, that determines whether browsers block frontend JavaScript code from accessing responses for cross-origin requests.\") request (i.e. without sending the `Origin` HTTP header), preventing its non-tainted usage. If invalid, it is handled as if the enumerated keyword **anonymous** was used. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for additional information.'}},{name:\"rel\",description:{kind:\"markdown\",value:\"This attribute names a relationship of the linked document to the current document. The attribute must be a space-separated list of the [link types values](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).\"}},{name:\"media\",description:{kind:\"markdown\",value:\"This attribute specifies the media that the linked resource applies to. Its value must be a media type / [media query](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_queries). This attribute is mainly useful when linking to external stylesheets \\u2014 it allows the user agent to pick the best adapted one for the device it runs on.\\n\\n**Notes:**\\n\\n*   In HTML 4, this can only be a simple white-space-separated list of media description literals, i.e., [media types and groups](https://developer.mozilla.org/en-US/docs/Web/CSS/@media), where defined and allowed as values for this attribute, such as `print`, `screen`, `aural`, `braille`. HTML5 extended this to any kind of [media queries](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_queries), which are a superset of the allowed values of HTML 4.\\n*   Browsers not supporting [CSS3 Media Queries](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_queries) won't necessarily recognize the adequate link; do not forget to set fallback links, the restricted set of media queries defined in HTML 4.\"}},{name:\"hreflang\",description:{kind:\"markdown\",value:\"This attribute indicates the language of the linked resource. It is purely advisory. Allowed values are determined by [BCP47](https://www.ietf.org/rfc/bcp/bcp47.txt). Use this attribute only if the [`href`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href) attribute is present.\"}},{name:\"type\",description:{kind:\"markdown\",value:'This attribute is used to define the type of the content linked to. The value of the attribute should be a MIME type such as **text/html**, **text/css**, and so on. The common use of this attribute is to define the type of stylesheet being referenced (such as **text/css**), but given that CSS is the only stylesheet language used on the web, not only is it possible to omit the `type` attribute, but is actually now recommended practice. It is also used on `rel=\"preload\"` link types, to make sure the browser only downloads file types that it supports.'}},{name:\"sizes\",description:{kind:\"markdown\",value:\"This attribute defines the sizes of the icons for visual media contained in the resource. It must be present only if the [`rel`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#attr-rel) contains a value of `icon` or a non-standard type such as Apple's `apple-touch-icon`. It may have the following values:\\n\\n*   `any`, meaning that the icon can be scaled to any size as it is in a vector format, like `image/svg+xml`.\\n*   a white-space separated list of sizes, each in the format `_<width in pixels>_x_<height in pixels>_` or `_<width in pixels>_X_<height in pixels>_`. Each of these sizes must be contained in the resource.\\n\\n**Note:** Most icon formats are only able to store one single icon; therefore most of the time the [`sizes`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-sizes) contains only one entry. MS's ICO format does, as well as Apple's ICNS. ICO is more ubiquitous; you should definitely use it.\"}},{name:\"as\",description:'This attribute is only used when `rel=\"preload\"` or `rel=\"prefetch\"` has been set on the `<link>` element. It specifies the type of content being loaded by the `<link>`, which is necessary for content prioritization, request matching, application of correct [content security policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP), and setting of correct [`Accept`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept \"The Accept request HTTP header advertises which content types, expressed as MIME types, the client is able to understand. Using content negotiation, the server then selects one of the proposals, uses it and informs the client of its choice with the Content-Type response header. Browsers set adequate values for this header depending on\\xA0the context where the request is done: when fetching a CSS stylesheet a different value is set for the request than when fetching an image,\\xA0video or a script.\") request header.'},{name:\"importance\",description:\"Indicates the relative importance of the resource. Priority hints are delegated using the values:\"},{name:\"importance\",description:'**`auto`**: Indicates\\xA0**no\\xA0preference**. The browser may use its own heuristics to decide the priority of the resource.\\n\\n**`high`**: Indicates to the\\xA0browser\\xA0that the resource is of\\xA0**high** priority.\\n\\n**`low`**:\\xA0Indicates to the\\xA0browser\\xA0that the resource is of\\xA0**low** priority.\\n\\n**Note:** The `importance` attribute may only be used for the `<link>` element if `rel=\"preload\"` or `rel=\"prefetch\"` is present.'},{name:\"integrity\",description:\"Contains inline metadata \\u2014 a base64-encoded cryptographic hash of the resource (file) you\\u2019re telling the browser to fetch. The browser can use this to verify that the fetched resource has been delivered free of unexpected manipulation. See [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity).\"},{name:\"referrerpolicy\",description:'A string indicating which referrer to use when fetching the resource:\\n\\n*   `no-referrer` means that the [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent.\\n*   `no-referrer-when-downgrade` means that no [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will be sent when navigating to an origin without TLS (HTTPS). This is a user agent\\u2019s default behavior, if no policy is otherwise specified.\\n*   `origin` means that the referrer will be the origin of the page, which is roughly the scheme, the host, and the port.\\n*   `origin-when-cross-origin` means that navigating to other origins will be limited to the scheme, the host, and the port, while navigating on the same origin will include the referrer\\'s path.\\n*   `unsafe-url` means that the referrer will include the origin and the path (but not the fragment, password, or username). This case is unsafe because it can leak origins and paths from TLS-protected resources to insecure origins.'},{name:\"title\",description:'The `title` attribute has special semantics on the `<link>` element. When used on a `<link rel=\"stylesheet\">` it defines a [preferred or an alternate stylesheet](https://developer.mozilla.org/en-US/docs/Web/CSS/Alternative_style_sheets). Incorrectly using it may [cause the stylesheet to be ignored](https://developer.mozilla.org/en-US/docs/Correctly_Using_Titles_With_External_Stylesheets).'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/link\"}]},{name:\"meta\",description:{kind:\"markdown\",value:\"The meta element represents various kinds of metadata that cannot be expressed using the title, base, link, style, and script elements.\"},attributes:[{name:\"name\",description:{kind:\"markdown\",value:`This attribute defines the name of a piece of document-level metadata. It should not be set if one of the attributes [\\`itemprop\\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-itemprop), [\\`http-equiv\\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-http-equiv) or [\\`charset\\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-charset) is also set.\n\nThis metadata name is associated with the value contained by the [\\`content\\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) attribute. The possible values for the name attribute are:\n\n*   \\`application-name\\` which defines the name of the application running in the web page.\n    \n    **Note:**\n    \n    *   Browsers may use this to identify the application. It is different from the [\\`<title>\\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title \"The HTML Title element (<title>) defines the document's title that is shown in a browser's title bar or a page's tab.\") element, which usually contain the application name, but may also contain information like the document name or a status.\n    *   Simple web pages shouldn't define an application-name.\n    \n*   \\`author\\` which defines the name of the document's author.\n*   \\`description\\` which contains a short and accurate summary of the content of the page. Several browsers, like Firefox and Opera, use this as the default description of bookmarked pages.\n*   \\`generator\\` which contains the identifier of the software that generated the page.\n*   \\`keywords\\` which contains words relevant to the page's content separated by commas.\n*   \\`referrer\\` which controls the [\\`Referer\\` HTTP header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer) attached to requests sent from the document:\n    \n    Values for the \\`content\\` attribute of \\`<meta name=\"referrer\">\\`\n    \n    \\`no-referrer\\`\n    \n    Do not send a HTTP \\`Referrer\\` header.\n    \n    \\`origin\\`\n    \n    Send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) of the document.\n    \n    \\`no-referrer-when-downgrade\\`\n    \n    Send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) as a referrer to URLs as secure as the current page, (https\\u2192https), but does not send a referrer to less secure URLs (https\\u2192http). This is the default behaviour.\n    \n    \\`origin-when-cross-origin\\`\n    \n    Send the full URL (stripped of parameters) for same-origin requests, but only send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) for other cases.\n    \n    \\`same-origin\\`\n    \n    A referrer will be sent for [same-site origins](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy), but cross-origin requests will contain no referrer information.\n    \n    \\`strict-origin\\`\n    \n    Only send the origin of the document as the referrer to a-priori as-much-secure destination (HTTPS->HTTPS), but don't send it to a less secure destination (HTTPS->HTTP).\n    \n    \\`strict-origin-when-cross-origin\\`\n    \n    Send a full URL when performing a same-origin request, only send the origin of the document to a-priori as-much-secure destination (HTTPS->HTTPS), and send no header to a less secure destination (HTTPS->HTTP).\n    \n    \\`unsafe-URL\\`\n    \n    Send the full URL (stripped of parameters) for same-origin or cross-origin requests.\n    \n    **Notes:**\n    \n    *   Some browsers support the deprecated values of \\`always\\`, \\`default\\`, and \\`never\\` for referrer.\n    *   Dynamically inserting \\`<meta name=\"referrer\">\\` (with [\\`document.write\\`](https://developer.mozilla.org/en-US/docs/Web/API/Document/write) or [\\`appendChild\\`](https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild)) makes the referrer behaviour unpredictable.\n    *   When several conflicting policies are defined, the no-referrer policy is applied.\n    \n\nThis attribute may also have a value taken from the extended list defined on [WHATWG Wiki MetaExtensions page](https://wiki.whatwg.org/wiki/MetaExtensions). Although none have been formally accepted yet, a few commonly used names are:\n\n*   \\`creator\\` which defines the name of the creator of the document, such as an organization or institution. If there are more than one, several [\\`<meta>\\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta \"The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.\") elements should be used.\n*   \\`googlebot\\`, a synonym of \\`robots\\`, is only followed by Googlebot (the indexing crawler for Google).\n*   \\`publisher\\` which defines the name of the document's publisher.\n*   \\`robots\\` which defines the behaviour that cooperative crawlers, or \"robots\", should use with the page. It is a comma-separated list of the values below:\n    \n    Values for the content of \\`<meta name=\"robots\">\\`\n    \n    Value\n    \n    Description\n    \n    Used by\n    \n    \\`index\\`\n    \n    Allows the robot to index the page (default).\n    \n    All\n    \n    \\`noindex\\`\n    \n    Requests the robot to not index the page.\n    \n    All\n    \n    \\`follow\\`\n    \n    Allows the robot to follow the links on the page (default).\n    \n    All\n    \n    \\`nofollow\\`\n    \n    Requests the robot to not follow the links on the page.\n    \n    All\n    \n    \\`none\\`\n    \n    Equivalent to \\`noindex, nofollow\\`\n    \n    [Google](https://support.google.com/webmasters/answer/79812)\n    \n    \\`noodp\\`\n    \n    Prevents using the [Open Directory Project](https://www.dmoz.org/) description, if any, as the page description in search engine results.\n    \n    [Google](https://support.google.com/webmasters/answer/35624#nodmoz), [Yahoo](https://help.yahoo.com/kb/search-for-desktop/meta-tags-robotstxt-yahoo-search-sln2213.html#cont5), [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n    \n    \\`noarchive\\`\n    \n    Requests the search engine not to cache the page content.\n    \n    [Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives), [Yahoo](https://help.yahoo.com/kb/search-for-desktop/SLN2213.html), [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n    \n    \\`nosnippet\\`\n    \n    Prevents displaying any description of the page in search engine results.\n    \n    [Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives), [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n    \n    \\`noimageindex\\`\n    \n    Requests this page not to appear as the referring page of an indexed image.\n    \n    [Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives)\n    \n    \\`nocache\\`\n    \n    Synonym of \\`noarchive\\`.\n    \n    [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n    \n    **Notes:**\n    \n    *   Only cooperative robots follow these rules. Do not expect to prevent e-mail harvesters with them.\n    *   The robot still needs to access the page in order to read these rules. To prevent bandwidth consumption, use a _[robots.txt](https://developer.mozilla.org/en-US/docs/Glossary/robots.txt \"robots.txt: Robots.txt is a file which is usually placed in the root of any website. It decides whether\\xA0crawlers are permitted or forbidden access to the web site.\")_ file.\n    *   If you want to remove a page, \\`noindex\\` will work, but only after the robot visits the page again. Ensure that the \\`robots.txt\\` file is not preventing revisits.\n    *   Some values are mutually exclusive, like \\`index\\` and \\`noindex\\`, or \\`follow\\` and \\`nofollow\\`. In these cases the robot's behaviour is undefined and may vary between them.\n    *   Some crawler robots, like Google, Yahoo and Bing, support the same values for the HTTP header \\`X-Robots-Tag\\`; this allows non-HTML documents like images to use these rules.\n    \n*   \\`slurp\\`, is a synonym of \\`robots\\`, but only for Slurp - the crawler for Yahoo Search.\n*   \\`viewport\\`, which gives hints about the size of the initial size of the [viewport](https://developer.mozilla.org/en-US/docs/Glossary/viewport \"viewport: A viewport represents a polygonal (normally rectangular) area in computer graphics that is currently being viewed. In web browser terms, it refers to the part of the document you're viewing which is currently visible in its window (or the screen, if the document is being viewed in full screen mode). Content outside the viewport is not visible onscreen until scrolled into view.\"). Used by mobile devices only.\n    \n    Values for the content of \\`<meta name=\"viewport\">\\`\n    \n    Value\n    \n    Possible subvalues\n    \n    Description\n    \n    \\`width\\`\n    \n    A positive integer number, or the text \\`device-width\\`\n    \n    Defines the pixel width of the viewport that you want the web site to be rendered at.\n    \n    \\`height\\`\n    \n    A positive integer, or the text \\`device-height\\`\n    \n    Defines the height of the viewport. Not used by any browser.\n    \n    \\`initial-scale\\`\n    \n    A positive number between \\`0.0\\` and \\`10.0\\`\n    \n    Defines the ratio between the device width (\\`device-width\\` in portrait mode or \\`device-height\\` in landscape mode) and the viewport size.\n    \n    \\`maximum-scale\\`\n    \n    A positive number between \\`0.0\\` and \\`10.0\\`\n    \n    Defines the maximum amount to zoom in. It must be greater or equal to the \\`minimum-scale\\` or the behaviour is undefined. Browser settings can ignore this rule and iOS10+ ignores it by default.\n    \n    \\`minimum-scale\\`\n    \n    A positive number between \\`0.0\\` and \\`10.0\\`\n    \n    Defines the minimum zoom level. It must be smaller or equal to the \\`maximum-scale\\` or the behaviour is undefined. Browser settings can ignore this rule and iOS10+ ignores it by default.\n    \n    \\`user-scalable\\`\n    \n    \\`yes\\` or \\`no\\`\n    \n    If set to \\`no\\`, the user is not able to zoom in the webpage. The default is \\`yes\\`. Browser settings can ignore this rule, and iOS10+ ignores it by default.\n    \n    Specification\n    \n    Status\n    \n    Comment\n    \n    [CSS Device Adaptation  \n    The definition of '<meta name=\"viewport\">' in that specification.](https://drafts.csswg.org/css-device-adapt/#viewport-meta)\n    \n    Working Draft\n    \n    Non-normatively describes the Viewport META element\n    \n    See also: [\\`@viewport\\`](https://developer.mozilla.org/en-US/docs/Web/CSS/@viewport \"The @viewport CSS at-rule lets you configure the viewport through which the document is viewed. It's primarily used for mobile devices, but is also used by desktop browsers that support features like \"snap to edge\" (such as Microsoft Edge).\")\n    \n    **Notes:**\n    \n    *   Though unstandardized, this declaration is respected by most mobile browsers due to de-facto dominance.\n    *   The default values may vary between devices and browsers.\n    *   To learn about this declaration in Firefox for Mobile, see [this article](https://developer.mozilla.org/en-US/docs/Mobile/Viewport_meta_tag \"Mobile/Viewport meta tag\").`}},{name:\"http-equiv\",description:{kind:\"markdown\",value:'Defines a pragma directive. The attribute is named `**http-equiv**(alent)` because all the allowed values are names of particular HTTP headers:\\n\\n*   `\"content-language\"`  \\n    Defines the default language of the page. It can be overridden by the [lang](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang) attribute on any element.\\n    \\n    **Warning:** Do not use this value, as it is obsolete. Prefer the `lang` attribute on the [`<html>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/html \"The HTML <html> element represents the root (top-level element) of an HTML document, so it is also referred to as the root element. All other elements must be descendants of this element.\") element.\\n    \\n*   `\"content-security-policy\"`  \\n    Allows page authors to define a [content policy](https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives) for the current page. Content policies mostly specify allowed server origins and script endpoints which help guard against cross-site scripting attacks.\\n*   `\"content-type\"`  \\n    Defines the [MIME type](https://developer.mozilla.org/en-US/docs/Glossary/MIME_type) of the document, followed by its character encoding. It follows the same syntax as the HTTP `content-type` entity-header field, but as it is inside a HTML page, most values other than `text/html` are impossible. Therefore the valid syntax for its `content` is the string \\'`text/html`\\' followed by a character set with the following syntax: \\'`; charset=_IANAcharset_`\\', where `IANAcharset` is the _preferred MIME name_ for a character set as [defined by the IANA.](https://www.iana.org/assignments/character-sets)\\n    \\n    **Warning:** Do not use this value, as it is obsolete. Use the [`charset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-charset) attribute on the [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta \"The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.\") element.\\n    \\n    **Note:** As [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta \"The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.\") can\\'t change documents\\' types in XHTML or HTML5\\'s XHTML serialization, never set the MIME type to an XHTML MIME type with `<meta>`.\\n    \\n*   `\"refresh\"`  \\n    This instruction specifies:\\n    *   The number of seconds until the page should be reloaded - only if the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) attribute contains a positive integer.\\n    *   The number of seconds until the page should redirect to another - only if the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) attribute contains a positive integer followed by the string \\'`;url=`\\', and a valid URL.\\n*   `\"set-cookie\"`  \\n    Defines a [cookie](https://developer.mozilla.org/en-US/docs/cookie) for the page. Its content must follow the syntax defined in the [IETF HTTP Cookie Specification](https://tools.ietf.org/html/draft-ietf-httpstate-cookie-14).\\n    \\n    **Warning:** Do not use this instruction, as it is obsolete. Use the HTTP header [`Set-Cookie`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) instead.'}},{name:\"content\",description:{kind:\"markdown\",value:\"This attribute contains the value for the [`http-equiv`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-http-equiv) or [`name`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-name) attribute, depending on which is used.\"}},{name:\"charset\",description:{kind:\"markdown\",value:'This attribute declares the page\\'s character encoding. It must contain a [standard IANA MIME name for character encodings](https://www.iana.org/assignments/character-sets). Although the standard doesn\\'t request a specific encoding, it suggests:\\n\\n*   Authors are encouraged to use [`UTF-8`](https://developer.mozilla.org/en-US/docs/Glossary/UTF-8).\\n*   Authors should not use ASCII-incompatible encodings to avoid security risk: browsers not supporting them may interpret harmful content as HTML. This happens with the `JIS_C6226-1983`, `JIS_X0212-1990`, `HZ-GB-2312`, `JOHAB`, the ISO-2022 family and the EBCDIC family.\\n\\n**Note:** ASCII-incompatible encodings are those that don\\'t map the 8-bit code points `0x20` to `0x7E` to the `0x0020` to `0x007E` Unicode code points)\\n\\n*   Authors **must not** use `CESU-8`, `UTF-7`, `BOCU-1` and/or `SCSU` as [cross-site scripting](https://developer.mozilla.org/en-US/docs/Glossary/Cross-site_scripting) attacks with these encodings have been demonstrated.\\n*   Authors should not use `UTF-32` because not all HTML5 encoding algorithms can distinguish it from `UTF-16`.\\n\\n**Notes:**\\n\\n*   The declared character encoding must match the one the page was saved with to avoid garbled characters and security holes.\\n*   The [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta \"The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.\") element declaring the encoding must be inside the [`<head>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head \"The HTML <head> element provides general information (metadata) about the document, including its title and links to its\\xA0scripts and style sheets.\") element and **within the first 1024 bytes** of the HTML as some browsers only look at those bytes before choosing an encoding.\\n*   This [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta \"The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.\") element is only one part of the [algorithm to determine a page\\'s character set](https://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#encoding-sniffing-algorithm \"Algorithm charset page\"). The [`Content-Type` header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type) and any [Byte-Order Marks](https://developer.mozilla.org/en-US/docs/Glossary/Byte-Order_Mark \"The definition of that term (Byte-Order Marks) has not been written yet; please consider contributing it!\") override this element.\\n*   It is strongly recommended to define the character encoding. If a page\\'s encoding is undefined, cross-scripting techniques are possible, such as the [`UTF-7` fallback cross-scripting technique](https://code.google.com/p/doctype-mirror/wiki/ArticleUtf7).\\n*   The [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta \"The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.\") element with a `charset` attribute is a synonym for the pre-HTML5 `<meta http-equiv=\"Content-Type\" content=\"text/html; charset=_IANAcharset_\">`, where _`IANAcharset`_ contains the value of the equivalent [`charset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-charset) attribute. This syntax is still allowed, although no longer recommended.'}},{name:\"scheme\",description:\"This attribute defines the scheme in which metadata is described. A scheme is a context leading to the correct interpretations of the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) value, like a format.\\n\\n**Warning:** Do not use this value, as it is obsolete. There is no replacement as there was no real usage for it.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/meta\"}]},{name:\"style\",description:{kind:\"markdown\",value:\"The style element allows authors to embed style information in their documents. The style element is one of several inputs to the styling processing model. The element does not represent content for the user.\"},attributes:[{name:\"media\",description:{kind:\"markdown\",value:\"This attribute defines which media the style should be applied to. Its value is a [media query](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries), which defaults to `all` if the attribute is missing.\"}},{name:\"nonce\",description:{kind:\"markdown\",value:\"A cryptographic nonce (number used once) used to whitelist inline styles in a [style-src Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src). The server must generate a unique nonce value each time it transmits a policy. It is critical to provide a nonce that cannot be guessed as bypassing a resource\\u2019s policy is otherwise trivial.\"}},{name:\"type\",description:{kind:\"markdown\",value:\"This attribute defines the styling language as a MIME type (charset should not be specified). This attribute is optional and defaults to `text/css` if it is not specified \\u2014 there is very little reason to include this in modern web documents.\"}},{name:\"scoped\",valueSet:\"v\"},{name:\"title\",description:\"This attribute specifies [alternative style sheet](https://developer.mozilla.org/en-US/docs/Web/CSS/Alternative_style_sheets) sets.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/style\"}]},{name:\"body\",description:{kind:\"markdown\",value:\"The body element represents the content of the document.\"},attributes:[{name:\"onafterprint\",description:{kind:\"markdown\",value:\"Function to call after the user has printed the document.\"}},{name:\"onbeforeprint\",description:{kind:\"markdown\",value:\"Function to call when the user requests printing of the document.\"}},{name:\"onbeforeunload\",description:{kind:\"markdown\",value:\"Function to call when the document is about to be unloaded.\"}},{name:\"onhashchange\",description:{kind:\"markdown\",value:\"Function to call when the fragment identifier part (starting with the hash (`'#'`) character) of the document's current address has changed.\"}},{name:\"onlanguagechange\",description:{kind:\"markdown\",value:\"Function to call when the preferred languages changed.\"}},{name:\"onmessage\",description:{kind:\"markdown\",value:\"Function to call when the document has received a message.\"}},{name:\"onoffline\",description:{kind:\"markdown\",value:\"Function to call when network communication has failed.\"}},{name:\"ononline\",description:{kind:\"markdown\",value:\"Function to call when network communication has been restored.\"}},{name:\"onpagehide\"},{name:\"onpageshow\"},{name:\"onpopstate\",description:{kind:\"markdown\",value:\"Function to call when the user has navigated session history.\"}},{name:\"onstorage\",description:{kind:\"markdown\",value:\"Function to call when the storage area has changed.\"}},{name:\"onunload\",description:{kind:\"markdown\",value:\"Function to call when the document is going away.\"}},{name:\"alink\",description:'Color of text for hyperlinks when selected. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color \"The color CSS property sets the foreground color value of an element\\'s text and text decorations, and sets the currentcolor value.\") property in conjunction with the [`:active`](https://developer.mozilla.org/en-US/docs/Web/CSS/:active \"The :active CSS pseudo-class represents an element (such as a button) that is being activated by the user.\") pseudo-class instead._'},{name:\"background\",description:'URI of a image to use as a background. _This method is non-conforming, use CSS [`background`](https://developer.mozilla.org/en-US/docs/Web/CSS/background \"The background shorthand CSS property sets all background style properties at once, such as color, image, origin and size, or repeat method.\") property on the element instead._'},{name:\"bgcolor\",description:'Background color for the document. _This method is non-conforming, use CSS [`background-color`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color \"The background-color CSS property sets the background color of an element.\") property on the element instead._'},{name:\"bottommargin\",description:'The margin of the bottom of the body. _This method is non-conforming, use CSS [`margin-bottom`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-bottom \"The margin-bottom CSS property sets the margin area on the bottom of an element. A positive value places it farther from its neighbors, while a negative value places it closer.\") property on the element instead._'},{name:\"leftmargin\",description:'The margin of the left of the body. _This method is non-conforming, use CSS [`margin-left`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left \"The margin-left CSS property sets the margin area on the left side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.\") property on the element instead._'},{name:\"link\",description:'Color of text for unvisited hypertext links. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color \"The color CSS property sets the foreground color value of an element\\'s text and text decorations, and sets the currentcolor value.\") property in conjunction with the [`:link`](https://developer.mozilla.org/en-US/docs/Web/CSS/:link \"The :link CSS pseudo-class represents an element that has not yet been visited. It matches every unvisited <a>, <area>, or <link> element that has an href attribute.\") pseudo-class instead._'},{name:\"onblur\",description:\"Function to call when the document loses focus.\"},{name:\"onerror\",description:\"Function to call when the document fails to load properly.\"},{name:\"onfocus\",description:\"Function to call when the document receives focus.\"},{name:\"onload\",description:\"Function to call when the document has finished loading.\"},{name:\"onredo\",description:\"Function to call when the user has moved forward in undo transaction history.\"},{name:\"onresize\",description:\"Function to call when the document has been resized.\"},{name:\"onundo\",description:\"Function to call when the user has moved backward in undo transaction history.\"},{name:\"rightmargin\",description:'The margin of the right of the body. _This method is non-conforming, use CSS [`margin-right`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right \"The margin-right CSS property sets the margin area on the right side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.\") property on the element instead._'},{name:\"text\",description:'Foreground color of text. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color \"The color CSS property sets the foreground color value of an element\\'s text and text decorations, and sets the currentcolor value.\") property on the element instead._'},{name:\"topmargin\",description:'The margin of the top of the body. _This method is non-conforming, use CSS [`margin-top`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-top \"The margin-top CSS property sets the margin area on the top of an element. A positive value places it farther from its neighbors, while a negative value places it closer.\") property on the element instead._'},{name:\"vlink\",description:'Color of text for visited hypertext links. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color \"The color CSS property sets the foreground color value of an element\\'s text and text decorations, and sets the currentcolor value.\") property in conjunction with the [`:visited`](https://developer.mozilla.org/en-US/docs/Web/CSS/:visited \"The :visited CSS pseudo-class represents links that the user has already visited. For privacy reasons, the styles that can be modified using this selector are very limited.\") pseudo-class instead._'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/body\"}]},{name:\"article\",description:{kind:\"markdown\",value:\"The article element represents a complete, or self-contained, composition in a document, page, application, or site and that is, in principle, independently distributable or reusable, e.g. in syndication. This could be a forum post, a magazine or newspaper article, a blog entry, a user-submitted comment, an interactive widget or gadget, or any other independent item of content. Each article should be identified, typically by including a heading (h1\\u2013h6 element) as a child of the article element.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/article\"}]},{name:\"section\",description:{kind:\"markdown\",value:\"The section element represents a generic section of a document or application. A section, in this context, is a thematic grouping of content. Each section should be identified, typically by including a heading ( h1- h6 element) as a child of the section element.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/section\"}]},{name:\"nav\",description:{kind:\"markdown\",value:\"The nav element represents a section of a page that links to other pages or to parts within the page: a section with navigation links.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/nav\"}]},{name:\"aside\",description:{kind:\"markdown\",value:\"The aside element represents a section of a page that consists of content that is tangentially related to the content around the aside element, and which could be considered separate from that content. Such sections are often represented as sidebars in printed typography.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/aside\"}]},{name:\"h1\",description:{kind:\"markdown\",value:\"The h1 element represents a section heading.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements\"}]},{name:\"h2\",description:{kind:\"markdown\",value:\"The h2 element represents a section heading.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements\"}]},{name:\"h3\",description:{kind:\"markdown\",value:\"The h3 element represents a section heading.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements\"}]},{name:\"h4\",description:{kind:\"markdown\",value:\"The h4 element represents a section heading.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements\"}]},{name:\"h5\",description:{kind:\"markdown\",value:\"The h5 element represents a section heading.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements\"}]},{name:\"h6\",description:{kind:\"markdown\",value:\"The h6 element represents a section heading.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements\"}]},{name:\"header\",description:{kind:\"markdown\",value:\"The header element represents introductory content for its nearest ancestor sectioning content or sectioning root element. A header typically contains a group of introductory or navigational aids. When the nearest ancestor sectioning content or sectioning root element is the body element, then it applies to the whole page.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/header\"}]},{name:\"footer\",description:{kind:\"markdown\",value:\"The footer element represents a footer for its nearest ancestor sectioning content or sectioning root element. A footer typically contains information about its section such as who wrote it, links to related documents, copyright data, and the like.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/footer\"}]},{name:\"address\",description:{kind:\"markdown\",value:\"The address element represents the contact information for its nearest article or body element ancestor. If that is the body element, then the contact information applies to the document as a whole.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/address\"}]},{name:\"p\",description:{kind:\"markdown\",value:\"The p element represents a paragraph.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/p\"}]},{name:\"hr\",description:{kind:\"markdown\",value:\"The hr element represents a paragraph-level thematic break, e.g. a scene change in a story, or a transition to another topic within a section of a reference book.\"},attributes:[{name:\"align\",description:\"Sets the alignment of the rule on the page. If no value is specified, the default value is `left`.\"},{name:\"color\",description:\"Sets the color of the rule through color name or hexadecimal value.\"},{name:\"noshade\",description:\"Sets the rule to have no shading.\"},{name:\"size\",description:\"Sets the height, in pixels, of the rule.\"},{name:\"width\",description:\"Sets the length of the rule on the page through a pixel or percentage value.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/hr\"}]},{name:\"pre\",description:{kind:\"markdown\",value:\"The pre element represents a block of preformatted text, in which structure is represented by typographic conventions rather than by elements.\"},attributes:[{name:\"cols\",description:'Contains the _preferred_ count of characters that a line should have. It was a non-standard synonym of [`width`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre#attr-width). To achieve such an effect, use CSS [`width`](https://developer.mozilla.org/en-US/docs/Web/CSS/width \"The width CSS property sets an element\\'s width. By default it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area.\") instead.'},{name:\"width\",description:'Contains the _preferred_ count of characters that a line should have. Though technically still implemented, this attribute has no visual effect; to achieve such an effect, use CSS [`width`](https://developer.mozilla.org/en-US/docs/Web/CSS/width \"The width CSS property sets an element\\'s width. By default it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area.\") instead.'},{name:\"wrap\",description:'Is a _hint_ indicating how the overflow must happen. In modern browser this hint is ignored and no visual effect results in its present; to achieve such an effect, use CSS [`white-space`](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space \"The white-space CSS property sets how white space inside an element is handled.\") instead.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/pre\"}]},{name:\"blockquote\",description:{kind:\"markdown\",value:\"The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a footer or cite element, and optionally with in-line changes such as annotations and abbreviations.\"},attributes:[{name:\"cite\",description:{kind:\"markdown\",value:\"A URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/blockquote\"}]},{name:\"ol\",description:{kind:\"markdown\",value:\"The ol element represents a list of items, where the items have been intentionally ordered, such that changing the order would change the meaning of the document.\"},attributes:[{name:\"reversed\",valueSet:\"v\",description:{kind:\"markdown\",value:\"This Boolean attribute specifies that the items of the list are specified in reversed order.\"}},{name:\"start\",description:{kind:\"markdown\",value:'This integer attribute specifies the start value for numbering the individual list items. Although the ordering type of list elements might be Roman numerals, such as XXXI, or letters, the value of start is always represented as a number. To start numbering elements from the letter \"C\", use `<ol start=\"3\">`.\\n\\n**Note**: This attribute was deprecated in HTML4, but reintroduced in HTML5.'}},{name:\"type\",valueSet:\"lt\",description:{kind:\"markdown\",value:\"Indicates the numbering type:\\n\\n*   `'a'` indicates lowercase letters,\\n*   `'A'` indicates uppercase letters,\\n*   `'i'` indicates lowercase Roman numerals,\\n*   `'I'` indicates uppercase Roman numerals,\\n*   and `'1'` indicates numbers (default).\\n\\nThe type set is used for the entire list unless a different [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li#attr-type) attribute is used within an enclosed [`<li>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li \\\"The HTML <li> element is used to represent an item in a list. It must be contained in a parent element: an ordered list (<ol>), an unordered list (<ul>), or a menu (<menu>). In menus and unordered lists, list items are usually displayed using bullet points. In ordered lists, they are usually displayed with an ascending counter on the left, such as a number or letter.\\\") element.\\n\\n**Note:** This attribute was deprecated in HTML4, but reintroduced in HTML5.\\n\\nUnless the value of the list number matters (e.g. in legal or technical documents where items are to be referenced by their number/letter), the CSS [`list-style-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type \\\"The list-style-type CSS property sets the marker (such as a disc, character, or custom counter style) of a list item element.\\\") property should be used instead.\"}},{name:\"compact\",description:'This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute depends on the user agent and it doesn\\'t work in all browsers.\\n\\n**Warning:** Do not use this attribute, as it has been deprecated: the [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol \"The HTML <ol> element represents an ordered list of items, typically rendered as a numbered list.\") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). To give an effect similar to the `compact` attribute, the [CSS](https://developer.mozilla.org/en-US/docs/CSS) property [`line-height`](https://developer.mozilla.org/en-US/docs/Web/CSS/line-height \"The line-height CSS property sets the amount of space used for lines, such as in text. On block-level elements, it specifies the minimum height of line boxes within the element. On non-replaced inline elements, it specifies the height that is used to calculate line box height.\") can be used with a value of `80%`.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/ol\"}]},{name:\"ul\",description:{kind:\"markdown\",value:\"The ul element represents a list of items, where the order of the items is not important \\u2014 that is, where changing the order would not materially change the meaning of the document.\"},attributes:[{name:\"compact\",description:'This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute depends on the user agent and it doesn\\'t work in all browsers.\\n\\n**Usage note:\\xA0**Do not use this attribute, as it has been deprecated: the [`<ul>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul \"The HTML <ul> element represents an unordered list of items, typically rendered as a bulleted list.\") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). To give a similar effect as the `compact` attribute, the [CSS](https://developer.mozilla.org/en-US/docs/CSS) property [line-height](https://developer.mozilla.org/en-US/docs/CSS/line-height) can be used with a value of `80%`.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/ul\"}]},{name:\"li\",description:{kind:\"markdown\",value:\"The li element represents a list item. If its parent element is an ol, ul, or menu element, then the element is an item of the parent element's list, as defined for those elements. Otherwise, the list item has no defined list-related relationship to any other li element.\"},attributes:[{name:\"value\",description:{kind:\"markdown\",value:'This integer attribute indicates the current ordinal value of the list item as defined by the [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol \"The HTML <ol> element represents an ordered list of items, typically rendered as a numbered list.\") element. The only allowed value for this attribute is a number, even if the list is displayed with Roman numerals or letters. List items that follow this one continue numbering from the value set. The **value** attribute has no meaning for unordered lists ([`<ul>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul \"The HTML <ul> element represents an unordered list of items, typically rendered as a bulleted list.\")) or for menus ([`<menu>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu \"The HTML <menu> element represents a group of commands that a user can perform or activate. This includes both list menus, which might appear across the top of a screen, as well as context menus, such as those that might appear underneath a button after it has been clicked.\")).\\n\\n**Note**: This attribute was deprecated in HTML4, but reintroduced in HTML5.\\n\\n**Note:** Prior to Gecko\\xA09.0, negative values were incorrectly converted to 0. Starting in Gecko\\xA09.0 all integer values are correctly parsed.'}},{name:\"type\",description:'This character attribute indicates the numbering type:\\n\\n*   `a`: lowercase letters\\n*   `A`: uppercase letters\\n*   `i`: lowercase Roman numerals\\n*   `I`: uppercase Roman numerals\\n*   `1`: numbers\\n\\nThis type overrides the one used by its parent [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol \"The HTML <ol> element represents an ordered list of items, typically rendered as a numbered list.\") element, if any.\\n\\n**Usage note:** This attribute has been deprecated: use the CSS [`list-style-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type \"The list-style-type CSS property sets the marker (such as a disc, character, or custom counter style) of a list item element.\") property instead.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/li\"}]},{name:\"dl\",description:{kind:\"markdown\",value:\"The dl element represents an association list consisting of zero or more name-value groups (a description list). A name-value group consists of one or more names (dt elements) followed by one or more values (dd elements), ignoring any nodes other than dt and dd elements. Within a single dl element, there should not be more than one dt element for each name.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/dl\"}]},{name:\"dt\",description:{kind:\"markdown\",value:\"The dt element represents the term, or name, part of a term-description group in a description list (dl element).\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/dt\"}]},{name:\"dd\",description:{kind:\"markdown\",value:\"The dd element represents the description, definition, or value, part of a term-description group in a description list (dl element).\"},attributes:[{name:\"nowrap\",description:\"If the value of this attribute is set to `yes`, the definition text will not wrap. The default value is `no`.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/dd\"}]},{name:\"figure\",description:{kind:\"markdown\",value:\"The figure element represents some flow content, optionally with a caption, that is self-contained (like a complete sentence) and is typically referenced as a single unit from the main flow of the document.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/figure\"}]},{name:\"figcaption\",description:{kind:\"markdown\",value:\"The figcaption element represents a caption or legend for the rest of the contents of the figcaption element's parent figure element, if any.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/figcaption\"}]},{name:\"main\",description:{kind:\"markdown\",value:\"The main element represents the main content of the body of a document or application. The main content area consists of content that is directly related to or expands upon the central topic of a document or central functionality of an application.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/main\"}]},{name:\"div\",description:{kind:\"markdown\",value:\"The div element has no special meaning at all. It represents its children. It can be used with the class, lang, and title attributes to mark up semantics common to a group of consecutive elements.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/div\"}]},{name:\"a\",description:{kind:\"markdown\",value:\"If the a element has an href attribute, then it represents a hyperlink (a hypertext anchor) labeled by its contents.\"},attributes:[{name:\"href\",description:{kind:\"markdown\",value:\"Contains a URL or a URL fragment that the hyperlink points to.\"}},{name:\"target\",description:{kind:\"markdown\",value:'Specifies where to display the linked URL. It is a name of, or keyword for, a _browsing context_: a tab, window, or `<iframe>`. The following keywords have special meanings:\\n\\n*   `_self`: Load the URL into the same browsing context as the current one. This is the default behavior.\\n*   `_blank`: Load the URL into a new browsing context. This is usually a tab, but users can configure browsers to use new windows instead.\\n*   `_parent`: Load the URL into the parent browsing context of the current one. If there is no parent, this behaves the same way as `_self`.\\n*   `_top`: Load the URL into the top-level browsing context (that is, the \"highest\" browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this behaves the same way as `_self`.\\n\\n**Note:** When using `target`, consider adding `rel=\"noreferrer\"` to avoid exploitation of the `window.opener` API.\\n\\n**Note:** Linking to another page using `target=\"_blank\"` will run the new page on the same process as your page. If the new page is executing expensive JS, your page\\'s performance may suffer. To avoid this use `rel=\"noopener\"`.'}},{name:\"download\",description:{kind:\"markdown\",value:\"This attribute instructs browsers to download a URL instead of navigating to it, so the user will be prompted to save it as a local file. If the attribute has a value, it is used as the pre-filled file name in the Save prompt (the user can still change the file name if they want). There are no restrictions on allowed values, though `/` and `\\\\` are converted to underscores. Most file systems limit some punctuation in file names, and browsers will adjust the suggested name accordingly.\\n\\n**Notes:**\\n\\n*   This attribute only works for [same-origin URLs](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy).\\n*   Although HTTP(s) URLs need to be in the same-origin, [`blob:` URLs](https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL) and [`data:` URLs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) are allowed so that content generated by JavaScript, such as pictures created in an image-editor Web app, can be downloaded.\\n*   If the HTTP header [`Content-Disposition:`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) gives a different filename than this attribute, the HTTP header takes priority over this attribute.\\n*   If `Content-Disposition:` is set to `inline`, Firefox prioritizes `Content-Disposition`, like the filename case, while Chrome prioritizes the `download` attribute.\"}},{name:\"ping\",description:{kind:\"markdown\",value:'Contains a space-separated list of URLs to which, when the hyperlink is followed, [`POST`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST \"The HTTP POST method sends data to the server. The type of the body of the request is indicated by the Content-Type header.\") requests with the body `PING` will be sent by the browser (in the background). Typically used for tracking.'}},{name:\"rel\",description:{kind:\"markdown\",value:\"Specifies the relationship of the target object to the link object. The value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).\"}},{name:\"hreflang\",description:{kind:\"markdown\",value:'This attribute indicates the human language of the linked resource. It is purely advisory, with no built-in functionality. Allowed values are determined by [BCP47](https://www.ietf.org/rfc/bcp/bcp47.txt \"Tags for Identifying Languages\").'}},{name:\"type\",description:{kind:\"markdown\",value:'Specifies the media type in the form of a [MIME type](https://developer.mozilla.org/en-US/docs/Glossary/MIME_type \"MIME type: A\\xA0MIME type\\xA0(now properly called \"media type\", but\\xA0also sometimes \"content type\") is a string sent along\\xA0with a file indicating the type of the file (describing the content format, for example, a sound file might be labeled\\xA0audio/ogg, or an image file\\xA0image/png).\") for the linked URL. It is purely advisory, with no built-in functionality.'}},{name:\"referrerpolicy\",description:\"Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer) to send when fetching the URL:\\n\\n*   `'no-referrer'` means the `Referer:` header will not be sent.\\n*   `'no-referrer-when-downgrade'` means no `Referer:` header will be sent when navigating to an origin without HTTPS. This is the default behavior.\\n*   `'origin'` means the referrer will be the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) of the page, not including information after the domain.\\n*   `'origin-when-cross-origin'` meaning that navigations to other origins will be limited to the scheme, the host and the port, while navigations on the same origin will include the referrer's path.\\n*   `'strict-origin-when-cross-origin'`\\n*   `'unsafe-url'` means the referrer will include the origin and path, but not the fragment, password, or username. This is unsafe because it can leak data from secure URLs to insecure ones.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/a\"}]},{name:\"em\",description:{kind:\"markdown\",value:\"The em element represents stress emphasis of its contents.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/em\"}]},{name:\"strong\",description:{kind:\"markdown\",value:\"The strong element represents strong importance, seriousness, or urgency for its contents.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/strong\"}]},{name:\"small\",description:{kind:\"markdown\",value:\"The small element represents side comments such as small print.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/small\"}]},{name:\"s\",description:{kind:\"markdown\",value:\"The s element represents contents that are no longer accurate or no longer relevant.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/s\"}]},{name:\"cite\",description:{kind:\"markdown\",value:\"The cite element represents a reference to a creative work. It must include the title of the work or the name of the author(person, people or organization) or an URL reference, or a reference in abbreviated form as per the conventions used for the addition of citation metadata.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/cite\"}]},{name:\"q\",description:{kind:\"markdown\",value:\"The q element represents some phrasing content quoted from another source.\"},attributes:[{name:\"cite\",description:{kind:\"markdown\",value:\"The value of this attribute is a URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/q\"}]},{name:\"dfn\",description:{kind:\"markdown\",value:\"The dfn element represents the defining instance of a term. The paragraph, description list group, or section that is the nearest ancestor of the dfn element must also contain the definition(s) for the term given by the dfn element.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/dfn\"}]},{name:\"abbr\",description:{kind:\"markdown\",value:\"The abbr element represents an abbreviation or acronym, optionally with its expansion. The title attribute may be used to provide an expansion of the abbreviation. The attribute, if specified, must contain an expansion of the abbreviation, and nothing else.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/abbr\"}]},{name:\"ruby\",description:{kind:\"markdown\",value:\"The ruby element allows one or more spans of phrasing content to be marked with ruby annotations. Ruby annotations are short runs of text presented alongside base text, primarily used in East Asian typography as a guide for pronunciation or to include other annotations. In Japanese, this form of typography is also known as furigana. Ruby text can appear on either side, and sometimes both sides, of the base text, and it is possible to control its position using CSS. A more complete introduction to ruby can be found in the Use Cases & Exploratory Approaches for Ruby Markup document as well as in CSS Ruby Module Level 1. [RUBY-UC] [CSSRUBY]\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/ruby\"}]},{name:\"rb\",description:{kind:\"markdown\",value:\"The rb element marks the base text component of a ruby annotation. When it is the child of a ruby element, it doesn't represent anything itself, but its parent ruby element uses it as part of determining what it represents.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/rb\"}]},{name:\"rt\",description:{kind:\"markdown\",value:\"The rt element marks the ruby text component of a ruby annotation. When it is the child of a ruby element or of an rtc element that is itself the child of a ruby element, it doesn't represent anything itself, but its ancestor ruby element uses it as part of determining what it represents.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/rt\"}]},{name:\"rp\",description:{kind:\"markdown\",value:\"The rp element is used to provide fallback text to be shown by user agents that don't support ruby annotations. One widespread convention is to provide parentheses around the ruby text component of a ruby annotation.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/rp\"}]},{name:\"time\",description:{kind:\"markdown\",value:\"The time element represents its contents, along with a machine-readable form of those contents in the datetime attribute. The kind of content is limited to various kinds of dates, times, time-zone offsets, and durations, as described below.\"},attributes:[{name:\"datetime\",description:{kind:\"markdown\",value:\"This attribute indicates the time and/or date of the element and must be in one of the formats described below.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/time\"}]},{name:\"code\",description:{kind:\"markdown\",value:\"The code element represents a fragment of computer code. This could be an XML element name, a file name, a computer program, or any other string that a computer would recognize.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/code\"}]},{name:\"var\",description:{kind:\"markdown\",value:\"The var element represents a variable. This could be an actual variable in a mathematical expression or programming context, an identifier representing a constant, a symbol identifying a physical quantity, a function parameter, or just be a term used as a placeholder in prose.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/var\"}]},{name:\"samp\",description:{kind:\"markdown\",value:\"The samp element represents sample or quoted output from another program or computing system.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/samp\"}]},{name:\"kbd\",description:{kind:\"markdown\",value:\"The kbd element represents user input (typically keyboard input, although it may also be used to represent other input, such as voice commands).\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/kbd\"}]},{name:\"sub\",description:{kind:\"markdown\",value:\"The sub element represents a subscript.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/sub\"}]},{name:\"sup\",description:{kind:\"markdown\",value:\"The sup element represents a superscript.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/sup\"}]},{name:\"i\",description:{kind:\"markdown\",value:\"The i element represents a span of text in an alternate voice or mood, or otherwise offset from the normal prose in a manner indicating a different quality of text, such as a taxonomic designation, a technical term, an idiomatic phrase from another language, transliteration, a thought, or a ship name in Western texts.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/i\"}]},{name:\"b\",description:{kind:\"markdown\",value:\"The b element represents a span of text to which attention is being drawn for utilitarian purposes without conveying any extra importance and with no implication of an alternate voice or mood, such as key words in a document abstract, product names in a review, actionable words in interactive text-driven software, or an article lede.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/b\"}]},{name:\"u\",description:{kind:\"markdown\",value:\"The u element represents a span of text with an unarticulated, though explicitly rendered, non-textual annotation, such as labeling the text as being a proper name in Chinese text (a Chinese proper name mark), or labeling the text as being misspelt.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/u\"}]},{name:\"mark\",description:{kind:\"markdown\",value:\"The mark element represents a run of text in one document marked or highlighted for reference purposes, due to its relevance in another context. When used in a quotation or other block of text referred to from the prose, it indicates a highlight that was not originally present but which has been added to bring the reader's attention to a part of the text that might not have been considered important by the original author when the block was originally written, but which is now under previously unexpected scrutiny. When used in the main prose of a document, it indicates a part of the document that has been highlighted due to its likely relevance to the user's current activity.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/mark\"}]},{name:\"bdi\",description:{kind:\"markdown\",value:\"The bdi element represents a span of text that is to be isolated from its surroundings for the purposes of bidirectional text formatting. [BIDI]\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/bdi\"}]},{name:\"bdo\",description:{kind:\"markdown\",value:\"The bdo element represents explicit text directionality formatting control for its children. It allows authors to override the Unicode bidirectional algorithm by explicitly specifying a direction override. [BIDI]\"},attributes:[{name:\"dir\",description:\"The direction in which text should be rendered in this element's contents. Possible values are:\\n\\n*   `ltr`: Indicates that the text should go in a left-to-right direction.\\n*   `rtl`: Indicates that the text should go in a right-to-left direction.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/bdo\"}]},{name:\"span\",description:{kind:\"markdown\",value:\"The span element doesn't mean anything on its own, but can be useful when used together with the global attributes, e.g. class, lang, or dir. It represents its children.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/span\"}]},{name:\"br\",description:{kind:\"markdown\",value:\"The br element represents a line break.\"},attributes:[{name:\"clear\",description:\"Indicates where to begin the next line after the break.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/br\"}]},{name:\"wbr\",description:{kind:\"markdown\",value:\"The wbr element represents a line break opportunity.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/wbr\"}]},{name:\"ins\",description:{kind:\"markdown\",value:\"The ins element represents an addition to the document.\"},attributes:[{name:\"cite\",description:\"This attribute defines the URI of a resource that explains the change, such as a link to meeting minutes or a ticket in a troubleshooting system.\"},{name:\"datetime\",description:'This attribute indicates the time and date of the change and must be a valid date with an optional time string. If the value cannot be parsed as a date with an optional time string, the element does not have an associated time stamp. For the format of the string without a time, see [Format of a valid date string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_date_string \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\"). The format of the string if it includes both date and time is covered in [Format of a valid local date and time string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_local_date_and_time_string \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\").'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/ins\"}]},{name:\"del\",description:{kind:\"markdown\",value:\"The del element represents a removal from the document.\"},attributes:[{name:\"cite\",description:{kind:\"markdown\",value:\"A URI for a resource that explains the change (for example, meeting minutes).\"}},{name:\"datetime\",description:{kind:\"markdown\",value:'This attribute indicates the time and date of the change and must be a valid date string with an optional time. If the value cannot be parsed as a date with an optional time string, the element does not have an associated time stamp. For the format of the string without a time, see [Format of a valid date string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_date_string \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\"). The format of the string if it includes both date and time is covered in [Format of a valid local date and time string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_local_date_and_time_string \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\").'}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/del\"}]},{name:\"picture\",description:{kind:\"markdown\",value:\"The picture element is a container which provides multiple sources to its contained img element to allow authors to declaratively control or give hints to the user agent about which image resource to use, based on the screen pixel density, viewport size, image format, and other factors. It represents its children.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/picture\"}]},{name:\"img\",description:{kind:\"markdown\",value:\"An img element represents an image.\"},attributes:[{name:\"alt\",description:{kind:\"markdown\",value:'This attribute defines an alternative text description of the image.\\n\\n**Note:** Browsers do not always display the image referenced by the element. This is the case for non-graphical browsers (including those used by people with visual impairments), if the user chooses not to display images, or if the browser cannot display the image because it is invalid or an [unsupported type](#Supported_image_formats). In these cases, the browser may replace the image with the text defined in this element\\'s `alt` attribute. You should, for these reasons and others, provide a useful value for `alt` whenever possible.\\n\\n**Note:** Omitting this attribute altogether indicates that the image is a key part of the content, and no textual equivalent is available. Setting this attribute to an empty string (`alt=\"\"`) indicates that this image is _not_ a key part of the content (decorative), and that non-visual browsers may omit it from rendering.'}},{name:\"src\",description:{kind:\"markdown\",value:\"The image URL. This attribute is mandatory for the `<img>` element. On browsers supporting `srcset`, `src` is treated like a candidate image with a pixel density descriptor `1x` unless an image with this pixel density descriptor is already defined in `srcset,` or unless `srcset` contains '`w`' descriptors.\"}},{name:\"srcset\",description:{kind:\"markdown\",value:\"A list of one or more strings separated by commas indicating a set of possible image sources for the user agent to use. Each string is composed of:\\n\\n1.  a URL to an image,\\n2.  optionally, whitespace followed by one of:\\n    *   A width descriptor, or a positive integer directly followed by '`w`'. The width descriptor is divided by the source size given in the `sizes` attribute to calculate the effective pixel density.\\n    *   A pixel density descriptor, which is a positive floating point number directly followed by '`x`'.\\n\\nIf no descriptor is specified, the source is assigned the default descriptor: `1x`.\\n\\nIt is incorrect to mix width descriptors and pixel density descriptors in the same `srcset` attribute. Duplicate descriptors (for instance, two sources in the same `srcset` which are both described with '`2x`') are also invalid.\\n\\nThe user agent selects any one of the available sources at its discretion. This provides them with significant leeway to tailor their selection based on things like user preferences or bandwidth conditions. See our [Responsive images](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images) tutorial for an example.\"}},{name:\"crossorigin\",valueSet:\"xo\",description:{kind:\"markdown\",value:'This enumerated attribute indicates if the fetching of the related image must be done using CORS or not. [CORS-enabled images](https://developer.mozilla.org/en-US/docs/CORS_Enabled_Image) can be reused in the [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas \"Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.\") element without being \"[tainted](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image#What_is_a_tainted_canvas).\" The allowed values are:'}},{name:\"usemap\",description:{kind:\"markdown\",value:'The partial URL (starting with \\'#\\') of an [image map](https://developer.mozilla.org/en-US/docs/HTML/Element/map) associated with the element.\\n\\n**Note:** You cannot use this attribute if the `<img>` element is a descendant of an [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a \"The HTML <a> element (or anchor element) creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL.\") or [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") element.'}},{name:\"ismap\",valueSet:\"v\",description:{kind:\"markdown\",value:'This Boolean attribute indicates that the image is part of a server-side map. If so, the precise coordinates of a click are sent to the server.\\n\\n**Note:** This attribute is allowed only if the `<img>` element is a descendant of an [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a \"The HTML <a> element (or anchor element) creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL.\") element with a valid [`href`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href) attribute.'}},{name:\"width\",description:{kind:\"markdown\",value:\"The intrinsic width of the image in pixels.\"}},{name:\"height\",description:{kind:\"markdown\",value:\"The intrinsic height of the image in pixels.\"}},{name:\"decoding\",description:\"Provides an image decoding hint to the browser. The allowed values are:\"},{name:\"decoding\",description:`\\`sync\\`\n\nDecode the image synchronously for atomic presentation with other content.\n\n\\`async\\`\n\nDecode the image asynchronously to reduce delay in presenting other content.\n\n\\`auto\\`\n\nDefault mode, which indicates no preference for the decoding mode. The browser decides what is best for the user.`},{name:\"importance\",description:\"Indicates the relative importance of the resource. Priority hints are delegated using the values:\"},{name:\"importance\",description:\"`auto`: Indicates\\xA0**no\\xA0preference**. The browser may use its own heuristics to decide the priority of the image.\\n\\n`high`: Indicates to the\\xA0browser\\xA0that the image is of\\xA0**high** priority.\\n\\n`low`:\\xA0Indicates to the\\xA0browser\\xA0that the image is of\\xA0**low** priority.\"},{name:\"intrinsicsize\",description:\"This attribute tells the browser to ignore the actual intrinsic size of the image and pretend it\\u2019s the size specified in the attribute. Specifically, the image would raster at these dimensions and `naturalWidth`/`naturalHeight` on images would return the values specified in this attribute. [Explainer](https://github.com/ojanvafai/intrinsicsize-attribute), [examples](https://googlechrome.github.io/samples/intrinsic-size/index.html)\"},{name:\"referrerpolicy\",description:\"A string indicating which referrer to use when fetching the resource:\\n\\n*   `no-referrer:` The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \\\"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\\\") header will not be sent.\\n*   `no-referrer-when-downgrade:` No `Referer` header will be sent when navigating to an origin without TLS (HTTPS). This is a user agent\\u2019s default behavior if no policy is otherwise specified.\\n*   `origin:` The `Referer` header will include the page of origin's scheme, the host, and the port.\\n*   `origin-when-cross-origin:` Navigating to other origins will limit the included referral data to the scheme, the host and the port, while navigating from the same origin will include the referrer's full path.\\n*   `unsafe-url:` The `Referer` header will include the origin and the path, but not the fragment, password, or username. This case is unsafe because it can leak origins and paths from TLS-protected resources to insecure origins.\"},{name:\"sizes\",description:\"A list of one or more strings separated by commas indicating a set of source sizes. Each source size consists of:\\n\\n1.  a media condition. This must be omitted for the last item.\\n2.  a source size value.\\n\\nSource size values specify the intended display size of the image. User agents use the current source size to select one of the sources supplied by the `srcset` attribute, when those sources are described using width ('`w`') descriptors. The selected source size affects the intrinsic size of the image (the image\\u2019s display size if no CSS styling is applied). If the `srcset` attribute is absent, or contains no values with a width (`w`) descriptor, then the `sizes` attribute has no effect.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/img\"}]},{name:\"iframe\",description:{kind:\"markdown\",value:\"The iframe element represents a nested browsing context.\"},attributes:[{name:\"src\",description:{kind:\"markdown\",value:'The URL of the page to embed. Use a value of `about:blank` to embed an empty page that conforms to the [same-origin policy](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy#Inherited_origins). Also note that programatically removing an `<iframe>`\\'s src attribute (e.g. via [`Element.removeAttribute()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute \"The Element method removeAttribute() removes the attribute with the specified name from the element.\")) causes `about:blank` to be loaded in the frame in Firefox (from version 65), Chromium-based browsers, and Safari/iOS.'}},{name:\"srcdoc\",description:{kind:\"markdown\",value:\"Inline HTML to embed, overriding the `src` attribute. If a browser does not support the `srcdoc` attribute, it will fall back to the URL in the `src` attribute.\"}},{name:\"name\",description:{kind:\"markdown\",value:'A targetable name for the embedded browsing context. This can be used in the `target` attribute of the [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a \"The HTML <a> element (or anchor element) creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL.\"), [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\"), or [`<base>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base \"The HTML <base> element specifies the base URL to use for all relative URLs contained within a document. There can be only one <base> element in a document.\") elements; the `formtarget` attribute of the [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") or [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") elements; or the `windowName` parameter in the [`window.open()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/open \"The\\xA0Window interface\\'s open() method loads the specified resource into the browsing context (window, <iframe> or tab) with the specified name. If the name doesn\\'t exist, then a new window is opened and the specified resource is loaded into its browsing context.\") method.'}},{name:\"sandbox\",valueSet:\"sb\",description:{kind:\"markdown\",value:'Applies extra restrictions to the content in the frame. The value of the attribute can either be empty to apply all restrictions, or space-separated tokens to lift particular restrictions:\\n\\n*   `allow-forms`: Allows the resource to submit forms. If this keyword is not used, form submission is blocked.\\n*   `allow-modals`: Lets the resource [open modal windows](https://html.spec.whatwg.org/multipage/origin.html#sandboxed-modals-flag).\\n*   `allow-orientation-lock`: Lets the resource [lock the screen orientation](https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation).\\n*   `allow-pointer-lock`: Lets the resource use the [Pointer Lock API](https://developer.mozilla.org/en-US/docs/WebAPI/Pointer_Lock).\\n*   `allow-popups`: Allows popups (such as `window.open()`, `target=\"_blank\"`, or `showModalDialog()`). If this keyword is not used, the popup will silently fail to open.\\n*   `allow-popups-to-escape-sandbox`: Lets the sandboxed document open new windows without those windows inheriting the sandboxing. For example, this can safely sandbox an advertisement without forcing the same restrictions upon the page the ad links to.\\n*   `allow-presentation`: Lets the resource start a [presentation session](https://developer.mozilla.org/en-US/docs/Web/API/PresentationRequest).\\n*   `allow-same-origin`: If this token is not used, the resource is treated as being from a special origin that always fails the [same-origin policy](https://developer.mozilla.org/en-US/docs/Glossary/same-origin_policy \"same-origin policy: The same-origin policy is a critical security mechanism that restricts how a document or script loaded from one origin can interact with a resource from another origin.\").\\n*   `allow-scripts`: Lets the resource run scripts (but not create popup windows).\\n*   `allow-storage-access-by-user-activation` : Lets the resource request access to the parent\\'s storage capabilities with the [Storage Access API](https://developer.mozilla.org/en-US/docs/Web/API/Storage_Access_API).\\n*   `allow-top-navigation`: Lets the resource navigate the top-level browsing context (the one named `_top`).\\n*   `allow-top-navigation-by-user-activation`: Lets the resource navigate the top-level browsing context, but only if initiated by a user gesture.\\n\\n**Notes about sandboxing:**\\n\\n*   When the embedded document has the same origin as the embedding page, it is **strongly discouraged** to use both `allow-scripts` and `allow-same-origin`, as that lets the embedded document remove the `sandbox` attribute \\u2014 making it no more secure than not using the `sandbox` attribute at all.\\n*   Sandboxing is useless if the attacker can display content outside a sandboxed `iframe` \\u2014 such as if the viewer opens the frame in a new tab. Such content should be also served from a _separate origin_ to limit potential damage.\\n*   The `sandbox` attribute is unsupported in Internet Explorer 9 and earlier.'}},{name:\"seamless\",valueSet:\"v\"},{name:\"allowfullscreen\",valueSet:\"v\",description:{kind:\"markdown\",value:'Set to `true` if the `<iframe>` can activate fullscreen mode by calling the [`requestFullscreen()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullscreen \"The Element.requestFullscreen() method issues an asynchronous request to make the element be displayed in full-screen mode.\") method.'}},{name:\"width\",description:{kind:\"markdown\",value:\"The width of the frame in CSS pixels. Default is `300`.\"}},{name:\"height\",description:{kind:\"markdown\",value:\"The height of the frame in CSS pixels. Default is `150`.\"}},{name:\"allow\",description:\"Specifies a [feature policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Feature_Policy) for the `<iframe>`.\"},{name:\"allowpaymentrequest\",description:\"Set to `true` if a cross-origin `<iframe>` should be allowed to invoke the [Payment Request API](https://developer.mozilla.org/en-US/docs/Web/API/Payment_Request_API).\"},{name:\"allowpaymentrequest\",description:'This attribute is considered a legacy attribute and redefined as `allow=\"payment\"`.'},{name:\"csp\",description:'A [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) enforced for the embedded resource. See [`HTMLIFrameElement.csp`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/csp \"The csp property of the HTMLIFrameElement interface specifies the Content Security Policy that an embedded document must agree to enforce upon itself.\") for details.'},{name:\"importance\",description:`The download priority of the resource in the \\`<iframe>\\`'s \\`src\\` attribute. Allowed values:\n\n\\`auto\\` (default)\n\nNo preference. The browser uses its own heuristics to decide the priority of the resource.\n\n\\`high\\`\n\nThe resource should be downloaded before other lower-priority page resources.\n\n\\`low\\`\n\nThe resource should be downloaded after other higher-priority page resources.`},{name:\"referrerpolicy\",description:'Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer) to send when fetching the frame\\'s resource:\\n\\n*   `no-referrer`: The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent.\\n*   `no-referrer-when-downgrade` (default): The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent to [origin](https://developer.mozilla.org/en-US/docs/Glossary/origin \"origin: Web content\\'s origin is defined by the scheme (protocol), host (domain), and port of the URL used to access it. Two objects have the same origin only when the scheme, host, and port all match.\")s without [TLS](https://developer.mozilla.org/en-US/docs/Glossary/TLS \"TLS: Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), is a protocol used by applications to communicate securely across a network, preventing tampering with and eavesdropping on email, web browsing, messaging, and other protocols.\") ([HTTPS](https://developer.mozilla.org/en-US/docs/Glossary/HTTPS \"HTTPS: HTTPS (HTTP Secure) is an encrypted version of the HTTP protocol. It usually uses SSL or TLS to encrypt all communication between a client and a server. This secure connection allows clients to safely exchange sensitive data with a server, for example for banking activities or online shopping.\")).\\n*   `origin`: The sent referrer will be limited to the origin of the referring page: its [scheme](https://developer.mozilla.org/en-US/docs/Archive/Mozilla/URIScheme), [host](https://developer.mozilla.org/en-US/docs/Glossary/host \"host: A host is a device connected to the Internet (or a local network). Some hosts called servers offer additional services like serving webpages or storing files and emails.\"), and [port](https://developer.mozilla.org/en-US/docs/Glossary/port \"port: For a computer connected to a network with an IP address, a port is a communication endpoint. Ports are designated by numbers, and below 1024 each port is associated by default with a specific protocol.\").\\n*   `origin-when-cross-origin`: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path.\\n*   `same-origin`: A referrer will be sent for [same origin](https://developer.mozilla.org/en-US/docs/Glossary/Same-origin_policy \"same origin: The same-origin policy is a critical security mechanism that restricts how a document or script loaded from one origin can interact with a resource from another origin.\"), but cross-origin requests will contain no referrer information.\\n*   `strict-origin`: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS\\u2192HTTPS), but don\\'t send it to a less secure destination (HTTPS\\u2192HTTP).\\n*   `strict-origin-when-cross-origin`: Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS\\u2192HTTPS), and send no header to a less secure destination (HTTPS\\u2192HTTP).\\n*   `unsafe-url`: The referrer will include the origin _and_ the path (but not the [fragment](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/hash), [password](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/password), or [username](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/username)). **This value is unsafe**, because it leaks origins and paths from TLS-protected resources to insecure origins.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/iframe\"}]},{name:\"embed\",description:{kind:\"markdown\",value:\"The embed element provides an integration point for an external (typically non-HTML) application or interactive content.\"},attributes:[{name:\"src\",description:{kind:\"markdown\",value:\"The URL\\xA0of the resource being embedded.\"}},{name:\"type\",description:{kind:\"markdown\",value:\"The MIME\\xA0type to use to select the plug-in to instantiate.\"}},{name:\"width\",description:{kind:\"markdown\",value:\"The displayed width of the resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). This must be an absolute value; percentages are _not_ allowed.\"}},{name:\"height\",description:{kind:\"markdown\",value:\"The displayed height of the resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). This must be an absolute value; percentages are _not_ allowed.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/embed\"}]},{name:\"object\",description:{kind:\"markdown\",value:\"The object element can represent an external resource, which, depending on the type of the resource, will either be treated as an image, as a nested browsing context, or as an external resource to be processed by a plugin.\"},attributes:[{name:\"data\",description:{kind:\"markdown\",value:\"The address of the resource as a valid URL. At least one of **data** and **type** must be defined.\"}},{name:\"type\",description:{kind:\"markdown\",value:\"The [content type](https://developer.mozilla.org/en-US/docs/Glossary/Content_type) of the resource specified by **data**. At least one of **data** and **type** must be defined.\"}},{name:\"typemustmatch\",valueSet:\"v\",description:{kind:\"markdown\",value:\"This Boolean attribute indicates if the **type** attribute and the actual [content type](https://developer.mozilla.org/en-US/docs/Glossary/Content_type) of the resource must match to be used.\"}},{name:\"name\",description:{kind:\"markdown\",value:\"The name of valid browsing context (HTML5), or the name of the control (HTML 4).\"}},{name:\"usemap\",description:{kind:\"markdown\",value:\"A hash-name reference to a [`<map>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map \\\"The HTML <map> element is used with <area> elements to define an image map (a clickable link area).\\\") element; that is a '#' followed by the value of a [`name`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map#attr-name) of a map element.\"}},{name:\"form\",description:{kind:\"markdown\",value:'The form element, if any, that the object element is associated with (its _form owner_). The value of the attribute must be an ID of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element in the same document.'}},{name:\"width\",description:{kind:\"markdown\",value:\"The width of the display resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). -- (Absolute values only. [NO percentages](https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes))\"}},{name:\"height\",description:{kind:\"markdown\",value:\"The height of the displayed resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). -- (Absolute values only. [NO percentages](https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes))\"}},{name:\"archive\",description:\"A space-separated list of URIs for archives of resources for the object.\"},{name:\"border\",description:\"The width of a border around the control, in pixels.\"},{name:\"classid\",description:\"The URI of the object's implementation. It can be used together with, or in place of, the **data** attribute.\"},{name:\"codebase\",description:\"The base path used to resolve relative URIs specified by **classid**, **data**, or **archive**. If not specified, the default is the base URI of the current document.\"},{name:\"codetype\",description:\"The content type of the data specified by **classid**.\"},{name:\"declare\",description:\"The presence of this Boolean attribute makes this element a declaration only. The object must be instantiated by a subsequent `<object>` element. In HTML5, repeat the <object> element completely each that that the resource is reused.\"},{name:\"standby\",description:\"A message that the browser can show while loading the object's implementation and data.\"},{name:\"tabindex\",description:\"The position of the element in the tabbing navigation order for the current document.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/object\"}]},{name:\"param\",description:{kind:\"markdown\",value:\"The param element defines parameters for plugins invoked by object elements. It does not represent anything on its own.\"},attributes:[{name:\"name\",description:{kind:\"markdown\",value:\"Name of the parameter.\"}},{name:\"value\",description:{kind:\"markdown\",value:\"Specifies the value of the parameter.\"}},{name:\"type\",description:'Only used if the `valuetype` is set to \"ref\". Specifies the MIME type of values found at the URI specified by value.'},{name:\"valuetype\",description:`Specifies the type of the \\`value\\` attribute. Possible values are:\n\n*   data: Default value. The value is passed to the object's implementation as a string.\n*   ref: The value is a URI to a resource where run-time values are stored.\n*   object: An ID of another [\\`<object>\\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object \"The HTML <object> element represents an external resource, which can be treated as an image, a nested browsing context, or a resource to be handled by a plugin.\") in the same document.`}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/param\"}]},{name:\"video\",description:{kind:\"markdown\",value:\"A video element is used for playing videos or movies, and audio files with captions.\"},attributes:[{name:\"src\"},{name:\"crossorigin\",valueSet:\"xo\"},{name:\"poster\"},{name:\"preload\",valueSet:\"pl\"},{name:\"autoplay\",valueSet:\"v\",description:{kind:\"markdown\",value:\"A Boolean attribute; if specified, the video automatically begins to play back as soon as it can do so without stopping to finish loading the data.\"}},{name:\"mediagroup\"},{name:\"loop\",valueSet:\"v\"},{name:\"muted\",valueSet:\"v\"},{name:\"controls\",valueSet:\"v\"},{name:\"width\"},{name:\"height\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/video\"}]},{name:\"audio\",description:{kind:\"markdown\",value:\"An audio element represents a sound or audio stream.\"},attributes:[{name:\"src\",description:{kind:\"markdown\",value:'The URL of the audio to embed. This is subject to [HTTP access controls](https://developer.mozilla.org/en-US/docs/HTTP_access_control). This is optional; you may instead use the [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source \"The HTML <source> element specifies multiple media resources for the <picture>, the <audio> element, or the <video> element.\") element within the audio block to specify the audio to embed.'}},{name:\"crossorigin\",valueSet:\"xo\",description:{kind:\"markdown\",value:'This enumerated attribute indicates whether to use CORS to fetch the related image. [CORS-enabled resources](https://developer.mozilla.org/en-US/docs/CORS_Enabled_Image) can be reused in the [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas \"Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.\") element without being _tainted_. The allowed values are:\\n\\nanonymous\\n\\nSends a cross-origin request without a credential. In other words, it sends the `Origin:` HTTP header without a cookie, X.509 certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (by not setting the `Access-Control-Allow-Origin:` HTTP header), the image will be _tainted_, and its usage restricted.\\n\\nuse-credentials\\n\\nSends a cross-origin request with a credential. In other words, it sends the `Origin:` HTTP header with a cookie, a certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (through `Access-Control-Allow-Credentials:` HTTP header), the image will be _tainted_ and its usage restricted.\\n\\nWhen not present, the resource is fetched without a CORS request (i.e. without sending the `Origin:` HTTP header), preventing its non-tainted used in [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas \"Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.\") elements. If invalid, it is handled as if the enumerated keyword **anonymous** was used. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes) for additional information.'}},{name:\"preload\",valueSet:\"pl\",description:{kind:\"markdown\",value:\"This enumerated attribute is intended to provide a hint to the browser about what the author thinks will lead to the best user experience. It may have one of the following values:\\n\\n*   `none`: Indicates that the audio should not be preloaded.\\n*   `metadata`: Indicates that only audio metadata (e.g. length) is fetched.\\n*   `auto`: Indicates that the whole audio file can be downloaded, even if the user is not expected to use it.\\n*   _empty string_: A synonym of the `auto` value.\\n\\nIf not set, `preload`'s default value is browser-defined (i.e. each browser may have its own default value). The spec advises it to be set to `metadata`.\\n\\n**Usage notes:**\\n\\n*   The `autoplay` attribute has precedence over\\xA0`preload`. If `autoplay` is specified, the browser would obviously need to start downloading the audio for playback.\\n*   The browser is not forced by the specification to follow the value of this attribute; it is a mere hint.\"}},{name:\"autoplay\",valueSet:\"v\",description:{kind:\"markdown\",value:`A Boolean attribute:\\xA0if specified, the audio will automatically begin playback as soon as it can do so, without waiting for the entire audio file to finish downloading.\n\n**Note**: Sites that automatically play audio (or videos with an audio track) can be an unpleasant experience for users, so should be avoided when possible. If you must offer autoplay functionality, you should make it opt-in (requiring a user to specifically enable it). However, this can be useful when creating media elements whose source will be set at a later time, under user control.`}},{name:\"mediagroup\"},{name:\"loop\",valueSet:\"v\",description:{kind:\"markdown\",value:\"A Boolean attribute:\\xA0if specified, the audio player will\\xA0automatically seek back to the start\\xA0upon reaching the end of the audio.\"}},{name:\"muted\",valueSet:\"v\",description:{kind:\"markdown\",value:\"A Boolean attribute that indicates whether the audio will be initially silenced. Its default value is `false`.\"}},{name:\"controls\",valueSet:\"v\",description:{kind:\"markdown\",value:\"If this attribute is present, the browser will offer controls to allow the user to control audio playback, including volume, seeking, and pause/resume playback.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/audio\"}]},{name:\"source\",description:{kind:\"markdown\",value:\"The source element allows authors to specify multiple alternative media resources for media elements. It does not represent anything on its own.\"},attributes:[{name:\"src\",description:{kind:\"markdown\",value:'Required for [`<audio>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio \"The HTML <audio> element is used to embed sound content in documents. It may contain one or more audio sources, represented using the src attribute or the <source> element:\\xA0the browser will choose the most suitable one. It can also be the destination for streamed media, using a MediaStream.\") and [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video \"The HTML Video element (<video>) embeds a media player which supports video playback into the document.\"), address of the media resource. The value of this attribute is ignored when the `<source>` element is placed inside a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture \"The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.\") element.'}},{name:\"type\",description:{kind:\"markdown\",value:\"The MIME-type of the resource, optionally with a `codecs` parameter. See [RFC 4281](https://tools.ietf.org/html/rfc4281) for information about how to specify codecs.\"}},{name:\"sizes\",description:'Is a list of source sizes that describes the final rendered width of the image represented by the source. Each source size consists of a comma-separated list of media condition-length pairs. This information is used by the browser to determine, before laying the page out, which image defined in [`srcset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source#attr-srcset) to use.  \\nThe `sizes` attribute has an effect only when the [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source \"The HTML <source> element specifies multiple media resources for the <picture>, the <audio> element, or the <video> element.\") element is the direct child of a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture \"The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.\") element.'},{name:\"srcset\",description:\"A list of one or more strings separated by commas indicating a set of possible images represented by the source for the browser to use. Each string is composed of:\\n\\n1.  one URL to an image,\\n2.  a width descriptor, that is a positive integer directly followed by `'w'`. The default value, if missing, is the infinity.\\n3.  a pixel density descriptor, that is a positive floating number directly followed by `'x'`. The default value, if missing, is `1x`.\\n\\nEach string in the list must have at least a width descriptor or a pixel density descriptor to be valid. Among the list, there must be only one string containing the same tuple of width descriptor and pixel density descriptor.  \\nThe browser chooses the most adequate image to display at a given point of time.  \\nThe `srcset` attribute has an effect only when the [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source \\\"The HTML <source> element specifies multiple media resources for the <picture>, the <audio> element, or the <video> element.\\\") element is the direct child of a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture \\\"The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.\\\") element.\"},{name:\"media\",description:'[Media query](https://developer.mozilla.org/en-US/docs/CSS/Media_queries) of the resource\\'s intended media; this should be used only in a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture \"The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.\") element.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/source\"}]},{name:\"track\",description:{kind:\"markdown\",value:\"The track element allows authors to specify explicit external timed text tracks for media elements. It does not represent anything on its own.\"},attributes:[{name:\"default\",valueSet:\"v\",description:{kind:\"markdown\",value:\"This attribute indicates that the track should be enabled unless the user's preferences indicate that another track is more appropriate. This may only be used on one `track` element per media element.\"}},{name:\"kind\",valueSet:\"tk\",description:{kind:\"markdown\",value:\"How the text track is meant to be used. If omitted the default kind is `subtitles`. If the attribute is not present, it will use the `subtitles`. If the attribute contains an invalid value, it will use `metadata`. (Versions of Chrome earlier than 52 treated an invalid value as `subtitles`.)\\xA0The following keywords are allowed:\\n\\n*   `subtitles`\\n    *   Subtitles provide translation of content that cannot be understood by the viewer. For example dialogue or text that is not English in an English language film.\\n    *   Subtitles may contain additional content, usually extra background information. For example the text at the beginning of the Star Wars films, or the date, time, and location of a scene.\\n*   `captions`\\n    *   Closed captions provide a transcription and possibly a translation of audio.\\n    *   It may include important non-verbal information such as music cues or sound effects. It may indicate the cue's source (e.g. music, text, character).\\n    *   Suitable for users who are deaf or when the sound is muted.\\n*   `descriptions`\\n    *   Textual description of the video content.\\n    *   Suitable for users who are blind or where the video cannot be seen.\\n*   `chapters`\\n    *   Chapter titles are intended to be used when the user is navigating the media resource.\\n*   `metadata`\\n    *   Tracks used by scripts. Not visible to the user.\"}},{name:\"label\",description:{kind:\"markdown\",value:\"A user-readable title of the text track which is used by the browser when listing available text tracks.\"}},{name:\"src\",description:{kind:\"markdown\",value:'Address of the track (`.vtt` file). Must be a valid URL. This attribute must be specified and its URL value must have the same origin as the document \\u2014 unless the [`<audio>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio \"The HTML <audio> element is used to embed sound content in documents. It may contain one or more audio sources, represented using the src attribute or the <source> element:\\xA0the browser will choose the most suitable one. It can also be the destination for streamed media, using a MediaStream.\") or [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video \"The HTML Video element (<video>) embeds a media player which supports video playback into the document.\") parent element of the `track` element has a [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) attribute.'}},{name:\"srclang\",description:{kind:\"markdown\",value:\"Language of the track text data. It must be a valid [BCP 47](https://r12a.github.io/app-subtags/) language tag. If the `kind` attribute is set to\\xA0`subtitles,` then `srclang` must be defined.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/track\"}]},{name:\"map\",description:{kind:\"markdown\",value:\"The map element, in conjunction with an img element and any area element descendants, defines an image map. The element represents its children.\"},attributes:[{name:\"name\",description:{kind:\"markdown\",value:\"The name attribute gives the map a name so that it can be referenced. The attribute must be present and must have a non-empty value with no space characters. The value of the name attribute must not be a compatibility-caseless match for the value of the name attribute of another map element in the same document. If the id attribute is also specified, both attributes must have the same value.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/map\"}]},{name:\"area\",description:{kind:\"markdown\",value:\"The area element represents either a hyperlink with some text and a corresponding area on an image map, or a dead area on an image map.\"},attributes:[{name:\"alt\"},{name:\"coords\"},{name:\"shape\",valueSet:\"sh\"},{name:\"href\"},{name:\"target\"},{name:\"download\"},{name:\"ping\"},{name:\"rel\"},{name:\"hreflang\"},{name:\"type\"},{name:\"accesskey\",description:\"Specifies a keyboard navigation accelerator for the element. Pressing ALT or a similar key in association with the specified character selects the form control correlated with that key sequence. Page designers are forewarned to avoid key sequences already bound to browsers. This attribute is global since HTML5.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/area\"}]},{name:\"table\",description:{kind:\"markdown\",value:\"The table element represents data with more than one dimension, in the form of a table.\"},attributes:[{name:\"border\"},{name:\"align\",description:'This enumerated attribute indicates how the table must be aligned inside the containing document. It may have the following values:\\n\\n*   left: the table is displayed on the left side of the document;\\n*   center: the table is displayed in the center of the document;\\n*   right: the table is displayed on the right side of the document.\\n\\n**Usage Note**\\n\\n*   **Do not use this attribute**, as it has been deprecated. The [`<table>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table \"The HTML <table> element represents tabular data \\u2014 that is, information presented in a two-dimensional table comprised of rows and columns of cells containing data.\") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). Set [`margin-left`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left \"The margin-left CSS property sets the margin area on the left side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.\") and [`margin-right`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right \"The margin-right CSS property sets the margin area on the right side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.\") to `auto` or [`margin`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin \"The margin CSS property sets the margin area on all four sides of an element. It is a shorthand for margin-top, margin-right, margin-bottom, and margin-left.\") to `0 auto` to achieve an effect that is similar to the align attribute.\\n*   Prior to Firefox 4, Firefox also supported the `middle`, `absmiddle`, and `abscenter` values as synonyms of `center`, in quirks mode only.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/table\"}]},{name:\"caption\",description:{kind:\"markdown\",value:\"The caption element represents the title of the table that is its parent, if it has a parent and that is a table element.\"},attributes:[{name:\"align\",description:`This enumerated attribute indicates how the caption must be aligned with respect to the table. It may have one of the following values:\n\n\\`left\\`\n\nThe caption is displayed to the left of the table.\n\n\\`top\\`\n\nThe caption is displayed above the table.\n\n\\`right\\`\n\nThe caption is displayed to the right of the table.\n\n\\`bottom\\`\n\nThe caption is displayed below the table.\n\n**Usage note:** Do not use this attribute, as it has been deprecated. The [\\`<caption>\\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption \"The HTML Table Caption element (<caption>) specifies the caption (or title) of a table, and if used is always the first child of a <table>.\") element should be styled using the [CSS](https://developer.mozilla.org/en-US/docs/CSS) properties [\\`caption-side\\`](https://developer.mozilla.org/en-US/docs/Web/CSS/caption-side \"The caption-side CSS property puts the content of a table's <caption> on the specified side. The values are relative to the writing-mode of the table.\") and [\\`text-align\\`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\").`}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/caption\"}]},{name:\"colgroup\",description:{kind:\"markdown\",value:\"The colgroup element represents a group of one or more columns in the table that is its parent, if it has a parent and that is a table element.\"},attributes:[{name:\"span\"},{name:\"align\",description:'This enumerated attribute specifies how horizontal alignment of each column cell content will be handled. Possible values are:\\n\\n*   `left`, aligning the content to the left of the cell\\n*   `center`, centering the content in the cell\\n*   `right`, aligning the content to the right of the cell\\n*   `justify`, inserting spaces into the textual content so that the content is justified in the cell\\n*   `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-charoff) attributes Unimplemented (see [bug\\xA02212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 \"character alignment not implemented (align=char, charoff=, text-align:<string>)\")).\\n\\nIf this attribute is not set, the `left` value is assumed. The descendant [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col \"The HTML <col> element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a <colgroup> element.\") elements may override this value using their own [`align`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-align) attribute.\\n\\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\\n\\n*   To achieve the same effect as the `left`, `center`, `right` or `justify` values:\\n    *   Do not try to set the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property on a selector giving a [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup \"The HTML <colgroup> element defines a group of columns within a table.\") element. Because [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td \"The HTML <td> element defines a cell of a table that contains data. It participates in the table model.\") elements are not descendant of the [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup \"The HTML <colgroup> element defines a group of columns within a table.\") element, they won\\'t inherit it.\\n    *   If the table doesn\\'t use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, use one `td:nth-child(an+b)` CSS selector per column, where a is the total number of the columns in the table and b is the ordinal position of this column in the table. Only after this selector the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property can be used.\\n    *   If the table does use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, the effect can be achieved by combining adequate CSS attribute selectors like `[colspan=n]`, though this is not trivial.\\n*   To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property Unimplemented.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/colgroup\"}]},{name:\"col\",description:{kind:\"markdown\",value:\"If a col element has a parent and that is a colgroup element that itself has a parent that is a table element, then the col element represents one or more columns in the column group represented by that colgroup.\"},attributes:[{name:\"span\"},{name:\"align\",description:'This enumerated attribute specifies how horizontal alignment of each column cell content will be handled. Possible values are:\\n\\n*   `left`, aligning the content to the left of the cell\\n*   `center`, centering the content in the cell\\n*   `right`, aligning the content to the right of the cell\\n*   `justify`, inserting spaces into the textual content so that the content is justified in the cell\\n*   `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-charoff) attributes Unimplemented (see [bug\\xA02212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 \"character alignment not implemented (align=char, charoff=, text-align:<string>)\")).\\n\\nIf this attribute is not set, its value is inherited from the [`align`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup#attr-align) of the [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup \"The HTML <colgroup> element defines a group of columns within a table.\") element this `<col>` element belongs too. If there are none, the `left` value is assumed.\\n\\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\\n\\n*   To achieve the same effect as the `left`, `center`, `right` or `justify` values:\\n    *   Do not try to set the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property on a selector giving a [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col \"The HTML <col> element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a <colgroup> element.\") element. Because [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td \"The HTML <td> element defines a cell of a table that contains data. It participates in the table model.\") elements are not descendant of the [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col \"The HTML <col> element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a <colgroup> element.\") element, they won\\'t inherit it.\\n    *   If the table doesn\\'t use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, use the `td:nth-child(an+b)` CSS selector. Set `a` to zero and `b` to the position of the column in the table, e.g. `td:nth-child(2) { text-align: right; }` to right-align the second column.\\n    *   If the table does use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, the effect can be achieved by combining adequate CSS attribute selectors like `[colspan=n]`, though this is not trivial.\\n*   To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property Unimplemented.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/col\"}]},{name:\"tbody\",description:{kind:\"markdown\",value:\"The tbody element represents a block of rows that consist of a body of data for the parent table element, if the tbody element has a parent and it is a table.\"},attributes:[{name:\"align\",description:'This enumerated attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:\\n\\n*   `left`, aligning the content to the left of the cell\\n*   `center`, centering the content in the cell\\n*   `right`, aligning the content to the right of the cell\\n*   `justify`, inserting spaces into the textual content so that the content is justified in the cell\\n*   `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-charoff) attributes.\\n\\nIf this attribute is not set, the `left` value is assumed.\\n\\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\\n\\n*   To achieve the same effect as the `left`, `center`, `right` or `justify` values, use the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property on it.\\n*   To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property Unimplemented.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/tbody\"}]},{name:\"thead\",description:{kind:\"markdown\",value:\"The thead element represents the block of rows that consist of the column labels (headers) for the parent table element, if the thead element has a parent and it is a table.\"},attributes:[{name:\"align\",description:'This enumerated attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:\\n\\n*   `left`, aligning the content to the left of the cell\\n*   `center`, centering the content in the cell\\n*   `right`, aligning the content to the right of the cell\\n*   `justify`, inserting spaces into the textual content so that the content is justified in the cell\\n*   `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead#attr-charoff) attributes Unimplemented (see [bug\\xA02212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 \"character alignment not implemented (align=char, charoff=, text-align:<string>)\")).\\n\\nIf this attribute is not set, the `left` value is assumed.\\n\\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\\n\\n*   To achieve the same effect as the `left`, `center`, `right` or `justify` values, use the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property on it.\\n*   To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property Unimplemented.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/thead\"}]},{name:\"tfoot\",description:{kind:\"markdown\",value:\"The tfoot element represents the block of rows that consist of the column summaries (footers) for the parent table element, if the tfoot element has a parent and it is a table.\"},attributes:[{name:\"align\",description:'This enumerated attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:\\n\\n*   `left`, aligning the content to the left of the cell\\n*   `center`, centering the content in the cell\\n*   `right`, aligning the content to the right of the cell\\n*   `justify`, inserting spaces into the textual content so that the content is justified in the cell\\n*   `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-charoff) attributes Unimplemented (see [bug\\xA02212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 \"character alignment not implemented (align=char, charoff=, text-align:<string>)\")).\\n\\nIf this attribute is not set, the `left` value is assumed.\\n\\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\\n\\n*   To achieve the same effect as the `left`, `center`, `right` or `justify` values, use the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property on it.\\n*   To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property Unimplemented.'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/tfoot\"}]},{name:\"tr\",description:{kind:\"markdown\",value:\"The tr element represents a row of cells in a table.\"},attributes:[{name:\"align\",description:'A [`DOMString`](https://developer.mozilla.org/en-US/docs/Web/API/DOMString \"DOMString is a UTF-16 String. As JavaScript already uses such strings, DOMString is mapped directly to a String.\") which specifies how the cell\\'s context should be aligned horizontally within the cells in the row; this is shorthand for using `align` on every cell in the row individually. Possible values are:\\n\\n`left`\\n\\nAlign the content of each cell at its left edge.\\n\\n`center`\\n\\nCenter the contents of each cell between their left and right edges.\\n\\n`right`\\n\\nAlign the content of each cell at its right edge.\\n\\n`justify`\\n\\nWiden whitespaces within the text of each cell so that the text fills the full width of each cell (full justification).\\n\\n`char`\\n\\nAlign each cell in the row on a specific character (such that each row in the column that is configured this way will horizontally align its cells on that character). This uses the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr#attr-charoff) to establish the alignment character (typically \".\" or \",\" when aligning numerical data) and the number of characters that should follow the alignment character. This alignment type was never widely supported.\\n\\nIf no value is expressly set for `align`, the parent node\\'s value is inherited.\\n\\nInstead of using the obsolete `align` attribute, you should instead use the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property to establish `left`, `center`, `right`, or `justify` alignment for the row\\'s cells. To apply character-based alignment, set the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property to the alignment character (such as `\".\"` or `\",\"`).'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/tr\"}]},{name:\"td\",description:{kind:\"markdown\",value:\"The td element represents a data cell in a table.\"},attributes:[{name:\"colspan\"},{name:\"rowspan\"},{name:\"headers\"},{name:\"abbr\",description:`This attribute contains a short abbreviated description of the cell's content. Some user-agents, such as speech readers, may present this description before the content itself.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard. Alternatively, you can put the abbreviated description inside the cell and place the long content in the **title** attribute.`},{name:\"align\",description:'This enumerated attribute specifies how the cell content\\'s horizontal alignment will be handled. Possible values are:\\n\\n*   `left`: The content is aligned to the left of the cell.\\n*   `center`: The content is centered in the cell.\\n*   `right`: The content is aligned to the right of the cell.\\n*   `justify` (with text only): The content is stretched out inside the cell so that it covers its entire width.\\n*   `char` (with text only): The content is aligned to a character inside the `<th>` element with minimal offset. This character is defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-charoff) attributes Unimplemented (see [bug\\xA02212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 \"character alignment not implemented (align=char, charoff=, text-align:<string>)\")).\\n\\nThe default value when this attribute is not specified is `left`.\\n\\n**Note:** Do not use this attribute as it is obsolete in the latest standard.\\n\\n*   To achieve the same effect as the `left`, `center`, `right` or `justify` values, apply the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property to the element.\\n*   To achieve the same effect as the `char` value, give the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property the same value you would use for the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-char). Unimplemented in CSS3.'},{name:\"axis\",description:\"This attribute contains a list of space-separated strings. Each string is the `id` of a group of cells that this header applies to.\\n\\n**Note:** Do not use this attribute as it is obsolete in the latest standard.\"},{name:\"bgcolor\",description:`This attribute defines the background color of each cell in a column. It consists of a 6-digit hexadecimal code as defined in [sRGB](https://www.w3.org/Graphics/Color/sRGB) and is prefixed by '#'. This attribute may be used with one of sixteen predefined color strings:\n\n\\xA0\n\n\\`black\\` = \"#000000\"\n\n\\xA0\n\n\\`green\\` = \"#008000\"\n\n\\xA0\n\n\\`silver\\` = \"#C0C0C0\"\n\n\\xA0\n\n\\`lime\\` = \"#00FF00\"\n\n\\xA0\n\n\\`gray\\` = \"#808080\"\n\n\\xA0\n\n\\`olive\\` = \"#808000\"\n\n\\xA0\n\n\\`white\\` = \"#FFFFFF\"\n\n\\xA0\n\n\\`yellow\\` = \"#FFFF00\"\n\n\\xA0\n\n\\`maroon\\` = \"#800000\"\n\n\\xA0\n\n\\`navy\\` = \"#000080\"\n\n\\xA0\n\n\\`red\\` = \"#FF0000\"\n\n\\xA0\n\n\\`blue\\` = \"#0000FF\"\n\n\\xA0\n\n\\`purple\\` = \"#800080\"\n\n\\xA0\n\n\\`teal\\` = \"#008080\"\n\n\\xA0\n\n\\`fuchsia\\` = \"#FF00FF\"\n\n\\xA0\n\n\\`aqua\\` = \"#00FFFF\"\n\n**Note:** Do not use this attribute, as it is non-standard and only implemented in some versions of Microsoft Internet Explorer: The [\\`<td>\\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td \"The HTML <td> element defines a cell of a table that contains data. It participates in the table model.\") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). To create a similar effect use the [\\`background-color\\`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color \"The background-color CSS property sets the background color of an element.\") property in [CSS](https://developer.mozilla.org/en-US/docs/CSS) instead.`}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/td\"}]},{name:\"th\",description:{kind:\"markdown\",value:\"The th element represents a header cell in a table.\"},attributes:[{name:\"colspan\"},{name:\"rowspan\"},{name:\"headers\"},{name:\"scope\",valueSet:\"s\"},{name:\"sorted\"},{name:\"abbr\",description:{kind:\"markdown\",value:\"This attribute contains a short abbreviated description of the cell's content. Some user-agents, such as speech readers, may present this description before the content itself.\"}},{name:\"align\",description:'This enumerated attribute specifies how the cell content\\'s horizontal alignment will be handled. Possible values are:\\n\\n*   `left`: The content is aligned to the left of the cell.\\n*   `center`: The content is centered in the cell.\\n*   `right`: The content is aligned to the right of the cell.\\n*   `justify` (with text only): The content is stretched out inside the cell so that it covers its entire width.\\n*   `char` (with text only): The content is aligned to a character inside the `<th>` element with minimal offset. This character is defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-charoff) attributes.\\n\\nThe default value when this attribute is not specified is `left`.\\n\\n**Note:** Do not use this attribute as it is obsolete in the latest standard.\\n\\n*   To achieve the same effect as the `left`, `center`, `right` or `justify` values, apply the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property to the element.\\n*   To achieve the same effect as the `char` value, give the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property the same value you would use for the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-char). Unimplemented in CSS3.'},{name:\"axis\",description:\"This attribute contains a list of space-separated strings. Each string is the `id` of a group of cells that this header applies to.\\n\\n**Note:** Do not use this attribute as it is obsolete in the latest standard: use the [`scope`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-scope) attribute instead.\"},{name:\"bgcolor\",description:`This attribute defines the background color of each cell in a column. It consists of a 6-digit hexadecimal code as defined in [sRGB](https://www.w3.org/Graphics/Color/sRGB) and is prefixed by '#'. This attribute may be used with one of sixteen predefined color strings:\n\n\\xA0\n\n\\`black\\` = \"#000000\"\n\n\\xA0\n\n\\`green\\` = \"#008000\"\n\n\\xA0\n\n\\`silver\\` = \"#C0C0C0\"\n\n\\xA0\n\n\\`lime\\` = \"#00FF00\"\n\n\\xA0\n\n\\`gray\\` = \"#808080\"\n\n\\xA0\n\n\\`olive\\` = \"#808000\"\n\n\\xA0\n\n\\`white\\` = \"#FFFFFF\"\n\n\\xA0\n\n\\`yellow\\` = \"#FFFF00\"\n\n\\xA0\n\n\\`maroon\\` = \"#800000\"\n\n\\xA0\n\n\\`navy\\` = \"#000080\"\n\n\\xA0\n\n\\`red\\` = \"#FF0000\"\n\n\\xA0\n\n\\`blue\\` = \"#0000FF\"\n\n\\xA0\n\n\\`purple\\` = \"#800080\"\n\n\\xA0\n\n\\`teal\\` = \"#008080\"\n\n\\xA0\n\n\\`fuchsia\\` = \"#FF00FF\"\n\n\\xA0\n\n\\`aqua\\` = \"#00FFFF\"\n\n**Note:** Do not use this attribute, as it is non-standard and only implemented in some versions of Microsoft Internet Explorer: The [\\`<th>\\`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th \"The HTML <th> element defines a cell as header of a group of table cells. The exact nature of this group is defined by the scope and headers attributes.\") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS). To create a similar effect use the [\\`background-color\\`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color \"The background-color CSS property sets the background color of an element.\") property in [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS) instead.`}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/th\"}]},{name:\"form\",description:{kind:\"markdown\",value:\"The form element represents a collection of form-associated elements, some of which can represent editable values that can be submitted to a server for processing.\"},attributes:[{name:\"accept-charset\",description:{kind:\"markdown\",value:'A space- or comma-delimited list of character encodings that the server accepts. The browser uses them in the order in which they are listed. The default value, the reserved string `\"UNKNOWN\"`, indicates the same encoding as that of the document containing the form element.  \\nIn previous versions of HTML, the different character encodings could be delimited by spaces or commas. In HTML5, only spaces are allowed as delimiters.'}},{name:\"action\",description:{kind:\"markdown\",value:'The URI of a program that processes the form information. This value can be overridden by a [`formaction`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formaction) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element.'}},{name:\"autocomplete\",valueSet:\"o\",description:{kind:\"markdown\",value:\"Indicates whether input elements can by default have their values automatically completed by the browser. This setting can be overridden by an `autocomplete` attribute on an element belonging to the form. Possible values are:\\n\\n*   `off`: The user must explicitly enter a value into each field for every use, or the document provides its own auto-completion method; the browser does not automatically complete entries.\\n*   `on`: The browser can automatically complete values based on values that the user has previously entered in the form.\\n\\nFor most modern browsers (including Firefox 38+, Google Chrome 34+, IE 11+) setting the autocomplete attribute will not prevent a browser's password manager from asking the user if they want to store login fields (username and password), if the user permits the storage the browser will autofill the login the next time the user visits the page. See [The autocomplete attribute and login fields](https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion#The_autocomplete_attribute_and_login_fields).\"}},{name:\"enctype\",valueSet:\"et\",description:{kind:\"markdown\",value:'When the value of the `method` attribute is `post`, enctype is the [MIME type](https://en.wikipedia.org/wiki/Mime_type) of content that is used to submit the form to the server. Possible values are:\\n\\n*   `application/x-www-form-urlencoded`: The default value if the attribute is not specified.\\n*   `multipart/form-data`: The value used for an [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element with the `type` attribute set to \"file\".\\n*   `text/plain`: (HTML5)\\n\\nThis value can be overridden by a [`formenctype`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formenctype) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element.'}},{name:\"method\",valueSet:\"m\",description:{kind:\"markdown\",value:'The [HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP) method that the browser uses to submit the form. Possible values are:\\n\\n*   `post`: Corresponds to the HTTP [POST method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5) ; form data are included in the body of the form and sent to the server.\\n*   `get`: Corresponds to the HTTP [GET method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3); form data are appended to the `action` attribute URI with a \\'?\\' as separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters.\\n*   `dialog`: Use when the form is inside a\\xA0[`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog \"The HTML <dialog> element represents a dialog box or other interactive component, such as an inspector or window.\") element to close the dialog when submitted.\\n\\nThis value can be overridden by a [`formmethod`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formmethod) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element.'}},{name:\"name\",description:{kind:\"markdown\",value:\"The name of the form. In HTML 4, its use is deprecated (`id` should be used instead). It must be unique among the forms in a document and not just an empty string in HTML 5.\"}},{name:\"novalidate\",valueSet:\"v\",description:{kind:\"markdown\",value:'This Boolean attribute indicates that the form is not to be validated when submitted. If this attribute is not specified (and therefore the form is validated), this default setting can be overridden by a [`formnovalidate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formnovalidate) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element belonging to the form.'}},{name:\"target\",description:{kind:\"markdown\",value:'A name or keyword indicating where to display the response that is received after submitting the form. In HTML 4, this is the name/keyword for a frame. In HTML5, it is a name/keyword for a _browsing context_ (for example, tab, window, or inline frame). The following keywords have special meanings:\\n\\n*   `_self`: Load the response into the same HTML 4 frame (or HTML5 browsing context) as the current one. This value is the default if the attribute is not specified.\\n*   `_blank`: Load the response into a new unnamed HTML 4 window or HTML5 browsing context.\\n*   `_parent`: Load the response into the HTML 4 frameset parent of the current frame, or HTML5 parent browsing context of the current one. If there is no parent, this option behaves the same way as `_self`.\\n*   `_top`: HTML 4: Load the response into the full original window, and cancel all other frames. HTML5: Load the response into the top-level browsing context (i.e., the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as `_self`.\\n*   _iframename_: The response is displayed in a named [`<iframe>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe \"The HTML Inline Frame element (<iframe>) represents a nested browsing context, embedding another HTML page into the current one.\").\\n\\nHTML5: This value can be overridden by a [`formtarget`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formtarget) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element.'}},{name:\"accept\",description:'A comma-separated list of content types that the server accepts.\\n\\n**Usage note:** This attribute has been removed in HTML5 and should no longer be used. Instead, use the [`accept`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept) attribute of the specific [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element.'},{name:\"autocapitalize\",description:\"This is a nonstandard attribute used by iOS Safari Mobile which controls whether and how the text value for textual form control descendants should be automatically capitalized as it is entered/edited by the user. If the `autocapitalize` attribute is specified on an individual form control descendant, it trumps the form-wide `autocapitalize` setting. The non-deprecated values are available in iOS 5 and later. The default value is `sentences`. Possible values are:\\n\\n*   `none`: Completely disables automatic capitalization\\n*   `sentences`: Automatically capitalize the first letter of sentences.\\n*   `words`: Automatically capitalize the first letter of words.\\n*   `characters`: Automatically capitalize all characters.\\n*   `on`: Deprecated since iOS 5.\\n*   `off`: Deprecated since iOS 5.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/form\"}]},{name:\"label\",description:{kind:\"markdown\",value:\"The label element represents a caption in a user interface. The caption can be associated with a specific form control, known as the label element's labeled control, either using the for attribute, or by putting the form control inside the label element itself.\"},attributes:[{name:\"form\",description:{kind:\"markdown\",value:'The [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element with which the label is associated (its _form owner_). If specified, the value of the attribute is the `id` of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element in the same document. This lets you place label elements anywhere within a document, not just as descendants of their form elements.'}},{name:\"for\",description:{kind:\"markdown\",value:\"The [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-id) of a [labelable](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Form_labelable) form-related element in the same document as the `<label>` element. The first element in the document with an `id` matching the value of the `for` attribute is the _labeled control_ for this label element, if it is a labelable element. If it is\\xA0not labelable then the `for` attribute has no effect. If there are other elements which also match the `id` value, later in the document, they are not considered.\\n\\n**Note**: A `<label>` element can have both a `for` attribute and a contained control element, as long as the `for` attribute points to the contained control element.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/label\"}]},{name:\"input\",description:{kind:\"markdown\",value:\"The input element represents a typed data field, usually with a form control to allow the user to edit the data.\"},attributes:[{name:\"accept\"},{name:\"alt\"},{name:\"autocomplete\",valueSet:\"inputautocomplete\"},{name:\"autofocus\",valueSet:\"v\"},{name:\"checked\",valueSet:\"v\"},{name:\"dirname\"},{name:\"disabled\",valueSet:\"v\"},{name:\"form\"},{name:\"formaction\"},{name:\"formenctype\",valueSet:\"et\"},{name:\"formmethod\",valueSet:\"fm\"},{name:\"formnovalidate\",valueSet:\"v\"},{name:\"formtarget\"},{name:\"height\"},{name:\"inputmode\",valueSet:\"im\"},{name:\"list\"},{name:\"max\"},{name:\"maxlength\"},{name:\"min\"},{name:\"minlength\"},{name:\"multiple\",valueSet:\"v\"},{name:\"name\"},{name:\"pattern\"},{name:\"placeholder\"},{name:\"readonly\",valueSet:\"v\"},{name:\"required\",valueSet:\"v\"},{name:\"size\"},{name:\"src\"},{name:\"step\"},{name:\"type\",valueSet:\"t\"},{name:\"value\"},{name:\"width\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/input\"}]},{name:\"button\",description:{kind:\"markdown\",value:\"The button element represents a button labeled by its contents.\"},attributes:[{name:\"autofocus\",valueSet:\"v\",description:{kind:\"markdown\",value:\"This Boolean attribute lets you specify that the button should have input focus when the page loads, unless the user overrides it, for example by typing in a different control. Only one form-associated element in a document can have this attribute specified.\"}},{name:\"disabled\",valueSet:\"v\",description:{kind:\"markdown\",value:'This Boolean attribute indicates that the user cannot interact with the button. If this attribute is not specified, the button inherits its setting from the containing element, for example [`<fieldset>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset \"The HTML <fieldset> element is used to group several controls as well as labels (<label>) within a web form.\"); if there is no containing element with the **disabled** attribute set, then the button is enabled.\\n\\nFirefox will, unlike other browsers, by default, [persist the dynamic disabled state](https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing) of a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") across page loads. Use the [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-autocomplete) attribute to control this feature.'}},{name:\"form\",description:{kind:\"markdown\",value:'The form element that the button is associated with (its _form owner_). The value of the attribute must be the **id** attribute of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element in the same document. If this attribute is not specified, the `<button>` element will be associated to an ancestor [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element, if one exists. This attribute enables you to associate `<button>` elements to [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") elements anywhere within a document, not just as descendants of [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") elements.'}},{name:\"formaction\",description:{kind:\"markdown\",value:\"The URI of a program that processes the information submitted by the button. If specified, it overrides the [`action`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-action) attribute of the button's form owner.\"}},{name:\"formenctype\",valueSet:\"et\",description:{kind:\"markdown\",value:'If the button is a submit button, this attribute specifies the type of content that is used to submit the form to the server. Possible values are:\\n\\n*   `application/x-www-form-urlencoded`: The default value if the attribute is not specified.\\n*   `multipart/form-data`: Use this value if you are using an [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element with the [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-type) attribute set to `file`.\\n*   `text/plain`\\n\\nIf this attribute is specified, it overrides the [`enctype`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-enctype) attribute of the button\\'s form owner.'}},{name:\"formmethod\",valueSet:\"fm\",description:{kind:\"markdown\",value:\"If the button is a submit button, this attribute specifies the HTTP method that the browser uses to submit the form. Possible values are:\\n\\n*   `post`: The data from the form are included in the body of the form and sent to the server.\\n*   `get`: The data from the form are appended to the **form** attribute URI, with a '?' as a separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters.\\n\\nIf specified, this attribute overrides the [`method`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-method) attribute of the button's form owner.\"}},{name:\"formnovalidate\",valueSet:\"v\",description:{kind:\"markdown\",value:\"If the button is a submit button, this Boolean attribute specifies that the form is not to be validated when it is submitted. If this attribute is specified, it overrides the [`novalidate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-novalidate) attribute of the button's form owner.\"}},{name:\"formtarget\",description:{kind:\"markdown\",value:\"If the button is a submit button, this attribute is a name or keyword indicating where to display the response that is received after submitting the form. This is a name of, or keyword for, a _browsing context_ (for example, tab, window, or inline frame). If this attribute is specified, it overrides the [`target`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-target) attribute of the button's form owner. The following keywords have special meanings:\\n\\n*   `_self`: Load the response into the same browsing context as the current one. This value is the default if the attribute is not specified.\\n*   `_blank`: Load the response into a new unnamed browsing context.\\n*   `_parent`: Load the response into the parent browsing context of the current one. If there is no parent, this option behaves the same way as `_self`.\\n*   `_top`: Load the response into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as `_self`.\"}},{name:\"name\",description:{kind:\"markdown\",value:\"The name of the button, which is submitted with the form data.\"}},{name:\"type\",valueSet:\"bt\",description:{kind:\"markdown\",value:\"The type of the button. Possible values are:\\n\\n*   `submit`: The button submits the form data to the server. This is the default if the attribute is not specified, or if the attribute is dynamically changed to an empty or invalid value.\\n*   `reset`: The button resets all the controls to their initial values.\\n*   `button`: The button has no default behavior. It can have client-side scripts associated with the element's events, which are triggered when the events occur.\"}},{name:\"value\",description:{kind:\"markdown\",value:\"The initial value of the button. It defines the value associated with the button which is submitted with the form data. This value is passed to the server in params when the form is submitted.\"}},{name:\"autocomplete\",description:'The use of this attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") is nonstandard and Firefox-specific. By default, unlike other browsers, [Firefox persists the dynamic disabled state](https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing) of a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") across page loads. Setting the value of this attribute to `off` (i.e. `autocomplete=\"off\"`) disables this feature. See [bug\\xA0654072](https://bugzilla.mozilla.org/show_bug.cgi?id=654072 \"if disabled state is changed with javascript, the normal state doesn\\'t return after refreshing the page\").'}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/button\"}]},{name:\"select\",description:{kind:\"markdown\",value:\"The select element represents a control for selecting amongst a set of options.\"},attributes:[{name:\"autocomplete\",valueSet:\"inputautocomplete\",description:{kind:\"markdown\",value:'A [`DOMString`](https://developer.mozilla.org/en-US/docs/Web/API/DOMString \"DOMString is a UTF-16 String. As JavaScript already uses such strings, DOMString is mapped directly to a String.\") providing a hint for a [user agent\\'s](https://developer.mozilla.org/en-US/docs/Glossary/user_agent \"user agent\\'s: A user agent is a computer program representing a person, for example, a browser in a Web context.\") autocomplete feature. See [The HTML autocomplete attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for a complete list of values and details on how to use autocomplete.'}},{name:\"autofocus\",valueSet:\"v\",description:{kind:\"markdown\",value:\"This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form element in a document can have the `autofocus` attribute.\"}},{name:\"disabled\",valueSet:\"v\",description:{kind:\"markdown\",value:\"This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example `fieldset`; if there is no containing element with the `disabled` attribute set, then the control is enabled.\"}},{name:\"form\",description:{kind:\"markdown\",value:'This attribute lets you specify the form element to\\xA0which\\xA0the select element is associated\\xA0(that is, its \"form owner\"). If this attribute is specified, its value must be the same as the `id` of a form element in the same document. This enables you to place select elements anywhere within a document, not just as descendants of their form elements.'}},{name:\"multiple\",valueSet:\"v\",description:{kind:\"markdown\",value:\"This Boolean attribute indicates that multiple options can be selected in the list. If it is not specified, then only one option can be selected at a time. When `multiple` is specified, most browsers will show a scrolling list box instead of a single line dropdown.\"}},{name:\"name\",description:{kind:\"markdown\",value:\"This attribute is used to specify the name of the control.\"}},{name:\"required\",valueSet:\"v\",description:{kind:\"markdown\",value:\"A Boolean attribute indicating that an option with a non-empty string value must be selected.\"}},{name:\"size\",description:{kind:\"markdown\",value:\"If the control is presented as a scrolling list box (e.g. when `multiple` is specified), this attribute represents the number of rows in the list that should be visible at one time. Browsers are not required to present a select element as a scrolled list box. The default value is 0.\\n\\n**Note:** According to the HTML5 specification, the default value for size should be 1; however, in practice, this has been found to break some web sites, and no other browser currently does that, so Mozilla has opted to continue to return 0 for the time being with Firefox.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/select\"}]},{name:\"datalist\",description:{kind:\"markdown\",value:\"The datalist element represents a set of option elements that represent predefined options for other controls. In the rendering, the datalist element represents nothing and it, along with its children, should be hidden.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/datalist\"}]},{name:\"optgroup\",description:{kind:\"markdown\",value:\"The optgroup element represents a group of option elements with a common label.\"},attributes:[{name:\"disabled\",valueSet:\"v\",description:{kind:\"markdown\",value:\"If this Boolean attribute is set, none of the items in this option group is selectable. Often browsers grey out such control and it won't receive any browsing events, like mouse clicks or focus-related ones.\"}},{name:\"label\",description:{kind:\"markdown\",value:\"The name of the group of options, which the browser can use when labeling the options in the user interface. This attribute is mandatory if this element is used.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/optgroup\"}]},{name:\"option\",description:{kind:\"markdown\",value:\"The option element represents an option in a select element or as part of a list of suggestions in a datalist element.\"},attributes:[{name:\"disabled\",valueSet:\"v\",description:{kind:\"markdown\",value:'If this Boolean attribute is set, this option is not checkable. Often browsers grey out such control and it won\\'t receive any browsing event, like mouse clicks or focus-related ones. If this attribute is not set, the element can still be disabled if one of its ancestors is a disabled [`<optgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup \"The HTML <optgroup> element creates a grouping of options within a <select> element.\") element.'}},{name:\"label\",description:{kind:\"markdown\",value:\"This attribute is text for the label indicating the meaning of the option. If the `label` attribute isn't defined, its value is that of the element text content.\"}},{name:\"selected\",valueSet:\"v\",description:{kind:\"markdown\",value:'If present, this Boolean attribute indicates that the option is initially selected. If the `<option>` element is the descendant of a [`<select>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select \"The HTML <select> element represents a control that provides a menu of options\") element whose [`multiple`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple) attribute is not set, only one single `<option>` of this [`<select>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select \"The HTML <select> element represents a control that provides a menu of options\") element may have the `selected` attribute.'}},{name:\"value\",description:{kind:\"markdown\",value:\"The content of this attribute represents the value to be submitted with the form, should this option be selected.\\xA0If this attribute is omitted, the value is taken from the text content of the option element.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/option\"}]},{name:\"textarea\",description:{kind:\"markdown\",value:\"The textarea element represents a multiline plain text edit control for the element's raw value. The contents of the control represent the control's default value.\"},attributes:[{name:\"autocomplete\",valueSet:\"inputautocomplete\",description:{kind:\"markdown\",value:'This attribute indicates whether the value of the control can be automatically completed by the browser. Possible values are:\\n\\n*   `off`: The user must explicitly enter a value into this field for every use, or the document provides its own auto-completion method; the browser does not automatically complete the entry.\\n*   `on`: The browser can automatically complete the value based on values that the user has entered during previous uses.\\n\\nIf the `autocomplete` attribute is not specified on a `<textarea>` element, then the browser uses the `autocomplete` attribute value of the `<textarea>` element\\'s form owner. The form owner is either the [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element that this `<textarea>` element is a descendant of or the form element whose `id` is specified by the `form` attribute of the input element. For more information, see the [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-autocomplete) attribute in [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\").'}},{name:\"autofocus\",valueSet:\"v\",description:{kind:\"markdown\",value:\"This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form-associated element in a document can have this attribute specified.\"}},{name:\"cols\",description:{kind:\"markdown\",value:\"The visible width of the text control, in average character widths. If it is specified, it must be a positive integer. If it is not specified, the default value is `20`.\"}},{name:\"dirname\"},{name:\"disabled\",valueSet:\"v\",description:{kind:\"markdown\",value:'This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example [`<fieldset>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset \"The HTML <fieldset> element is used to group several controls as well as labels (<label>) within a web form.\"); if there is no containing element when the `disabled` attribute is set, the control is enabled.'}},{name:\"form\",description:{kind:\"markdown\",value:'The form element that the `<textarea>` element is associated with (its \"form owner\"). The value of the attribute must be the `id` of a form element in the same document. If this attribute is not specified, the `<textarea>` element must be a descendant of a form element. This attribute enables you to place `<textarea>` elements anywhere within a document, not just as descendants of form elements.'}},{name:\"inputmode\",valueSet:\"im\"},{name:\"maxlength\",description:{kind:\"markdown\",value:\"The maximum number of characters (unicode code points) that the user can enter. If this value isn't specified, the user can enter an unlimited number of characters.\"}},{name:\"minlength\",description:{kind:\"markdown\",value:\"The minimum number of characters (unicode code points) required that the user should enter.\"}},{name:\"name\",description:{kind:\"markdown\",value:\"The name of the control.\"}},{name:\"placeholder\",description:{kind:\"markdown\",value:'A hint to the user of what can be entered in the control. Carriage returns or line-feeds within the placeholder text must be treated as line breaks when rendering the hint.\\n\\n**Note:** Placeholders should only be used to show an example of the type of data that should be entered into a form; they are _not_ a substitute for a proper [`<label>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label \"The HTML <label> element represents a caption for an item in a user interface.\") element tied to the input. See [Labels and placeholders](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Labels_and_placeholders \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") in [<input>: The Input (Form Input) element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") for a full explanation.'}},{name:\"readonly\",valueSet:\"v\",description:{kind:\"markdown\",value:\"This Boolean attribute indicates that the user cannot modify the value of the control. Unlike the `disabled` attribute, the `readonly` attribute does not prevent the user from clicking or selecting in the control. The value of a read-only control is still submitted with the form.\"}},{name:\"required\",valueSet:\"v\",description:{kind:\"markdown\",value:\"This attribute specifies that the user must fill in a value before submitting a form.\"}},{name:\"rows\",description:{kind:\"markdown\",value:\"The number of visible text lines for the control.\"}},{name:\"wrap\",valueSet:\"w\",description:{kind:\"markdown\",value:\"Indicates how the control wraps text. Possible values are:\\n\\n*   `hard`: The browser automatically inserts line breaks (CR+LF) so that each line has no more than the width of the control; the `cols` attribute must also be specified for this to take effect.\\n*   `soft`: The browser ensures that all line breaks in the value consist of a CR+LF pair, but does not insert any additional line breaks.\\n*   `off` : Like `soft` but changes appearance to `white-space: pre` so line segments exceeding `cols` are not wrapped and the `<textarea>` becomes horizontally scrollable.\\n\\nIf this attribute is not specified, `soft` is its default value.\"}},{name:\"autocapitalize\",description:\"This is a non-standard attribute supported by WebKit on iOS (therefore nearly all browsers running on iOS, including Safari, Firefox, and Chrome), which controls whether and how the text value should be automatically capitalized as it is entered/edited by the user. The non-deprecated values are available in iOS 5 and later. Possible values are:\\n\\n*   `none`: Completely disables automatic capitalization.\\n*   `sentences`: Automatically capitalize the first letter of sentences.\\n*   `words`: Automatically capitalize the first letter of words.\\n*   `characters`: Automatically capitalize all characters.\\n*   `on`: Deprecated since iOS 5.\\n*   `off`: Deprecated since iOS 5.\"},{name:\"spellcheck\",description:\"Specifies whether the `<textarea>` is subject to spell checking by the underlying browser/OS. the value can be:\\n\\n*   `true`: Indicates that the element needs to have its spelling and grammar checked.\\n*   `default` : Indicates that the element is to act according to a default behavior, possibly based on the parent element's own `spellcheck` value.\\n*   `false` : Indicates that the element should not be spell checked.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/textarea\"}]},{name:\"output\",description:{kind:\"markdown\",value:\"The output element represents the result of a calculation performed by the application, or the result of a user action.\"},attributes:[{name:\"for\",description:{kind:\"markdown\",value:\"A space-separated list of other elements\\u2019 [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id)s, indicating that those elements contributed input values to (or otherwise affected) the calculation.\"}},{name:\"form\",description:{kind:\"markdown\",value:'The [form element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form) that this element is associated with (its \"form owner\"). The value of the attribute must be an `id` of a form element in the same document. If this attribute is not specified, the output element must be a descendant of a form element. This attribute enables you to place output elements anywhere within a document, not just as descendants of their form elements.'}},{name:\"name\",description:{kind:\"markdown\",value:'The name of the element, exposed in the [`HTMLFormElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement \"The HTMLFormElement interface represents a <form> element in the DOM; it allows access to and in some cases modification of aspects of the form, as well as access to its component elements.\") API.'}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/output\"}]},{name:\"progress\",description:{kind:\"markdown\",value:\"The progress element represents the completion progress of a task. The progress is either indeterminate, indicating that progress is being made but that it is not clear how much more work remains to be done before the task is complete (e.g. because the task is waiting for a remote host to respond), or the progress is a number in the range zero to a maximum, giving the fraction of work that has so far been completed.\"},attributes:[{name:\"value\",description:{kind:\"markdown\",value:\"This attribute specifies how much of the task that has been completed. It must be a valid floating point number between 0 and `max`, or between 0 and 1 if `max` is omitted. If there is no `value` attribute, the progress bar is indeterminate; this indicates that an activity is ongoing with no indication of how long it is expected to take.\"}},{name:\"max\",description:{kind:\"markdown\",value:\"This attribute describes how much work the task indicated by the `progress` element requires. The `max` attribute, if present, must have a value greater than zero and be a valid floating point number. The default value is 1.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/progress\"}]},{name:\"meter\",description:{kind:\"markdown\",value:\"The meter element represents a scalar measurement within a known range, or a fractional value; for example disk usage, the relevance of a query result, or the fraction of a voting population to have selected a particular candidate.\"},attributes:[{name:\"value\",description:{kind:\"markdown\",value:\"The current numeric value. This must be between the minimum and maximum values (`min` attribute and `max` attribute) if they are specified. If unspecified or malformed, the value is 0. If specified, but not within the range given by the `min` attribute and `max` attribute, the value is equal to the nearest end of the range.\\n\\n**Usage note:** Unless the `value` attribute is between `0` and `1` (inclusive), the `min` and `max` attributes should define the range so that the `value` attribute's value is within it.\"}},{name:\"min\",description:{kind:\"markdown\",value:\"The lower numeric bound of the measured range. This must be less than the maximum value (`max` attribute), if specified. If unspecified, the minimum value is 0.\"}},{name:\"max\",description:{kind:\"markdown\",value:\"The upper numeric bound of the measured range. This must be greater than the minimum value (`min` attribute), if specified. If unspecified, the maximum value is 1.\"}},{name:\"low\",description:{kind:\"markdown\",value:\"The upper numeric bound of the low end of the measured range. This must be greater than the minimum value (`min` attribute), and it also must be less than the high value and maximum value (`high` attribute and `max` attribute, respectively), if any are specified. If unspecified, or if less than the minimum value, the `low` value is equal to the minimum value.\"}},{name:\"high\",description:{kind:\"markdown\",value:\"The lower numeric bound of the high end of the measured range. This must be less than the maximum value (`max` attribute), and it also must be greater than the low value and minimum value (`low` attribute and **min** attribute, respectively), if any are specified. If unspecified, or if greater than the maximum value, the `high` value is equal to the maximum value.\"}},{name:\"optimum\",description:{kind:\"markdown\",value:\"This attribute indicates the optimal numeric value. It must be within the range (as defined by the `min` attribute and `max` attribute). When used with the `low` attribute and `high` attribute, it gives an indication where along the range is considered preferable. For example, if it is between the `min` attribute and the `low` attribute, then the lower range is considered preferred.\"}},{name:\"form\",description:\"This attribute associates the element with a `form` element that has ownership of the `meter` element. For example, a `meter` might be displaying a range corresponding to an `input` element of `type` _number_. This attribute is only used if the `meter` element is being used as a form-associated element; even then, it may be omitted if the element appears as a descendant of a `form` element.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/meter\"}]},{name:\"fieldset\",description:{kind:\"markdown\",value:\"The fieldset element represents a set of form controls optionally grouped under a common name.\"},attributes:[{name:\"disabled\",valueSet:\"v\",description:{kind:\"markdown\",value:\"If this Boolean attribute is set, all form controls that are descendants of the `<fieldset>`, are disabled, meaning they are not editable and won't be submitted along with the `<form>`. They won't receive any browsing events, like mouse clicks or focus-related events. By default browsers display such controls grayed out. Note that form elements inside the [`<legend>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend \\\"The HTML <legend> element represents a caption for the content of its parent <fieldset>.\\\") element won't be disabled.\"}},{name:\"form\",description:{kind:\"markdown\",value:'This attribute takes the value of the `id` attribute of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element you want the `<fieldset>` to be part of, even if it is not inside the form.'}},{name:\"name\",description:{kind:\"markdown\",value:'The name associated with the group.\\n\\n**Note**: The caption for the fieldset is given by the first [`<legend>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend \"The HTML <legend> element represents a caption for the content of its parent <fieldset>.\") element nested inside it.'}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/fieldset\"}]},{name:\"legend\",description:{kind:\"markdown\",value:\"The legend element represents a caption for the rest of the contents of the legend element's parent fieldset element, if any.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/legend\"}]},{name:\"details\",description:{kind:\"markdown\",value:\"The details element represents a disclosure widget from which the user can obtain additional information or controls.\"},attributes:[{name:\"open\",valueSet:\"v\",description:{kind:\"markdown\",value:\"This Boolean attribute indicates whether or not the details \\u2014 that is, the contents of the `<details>` element \\u2014 are currently visible. The default, `false`, means the details are not visible.\"}}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/details\"}]},{name:\"summary\",description:{kind:\"markdown\",value:\"The summary element represents a summary, caption, or legend for the rest of the contents of the summary element's parent details element, if any.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/summary\"}]},{name:\"dialog\",description:{kind:\"markdown\",value:\"The dialog element represents a part of an application that a user interacts with to perform a task, for example a dialog box, inspector, or window.\"},attributes:[{name:\"open\",description:\"Indicates that the dialog is active and available for interaction. When the `open` attribute is not set, the dialog shouldn't be shown to the user.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/dialog\"}]},{name:\"script\",description:{kind:\"markdown\",value:\"The script element allows authors to include dynamic script and data blocks in their documents. The element does not represent content for the user.\"},attributes:[{name:\"src\",description:{kind:\"markdown\",value:\"This attribute specifies the URI of an external script; this can be used as an alternative to embedding a script directly within a document.\\n\\nIf a `script` element has a `src` attribute specified, it should not have a script embedded inside its tags.\"}},{name:\"type\",description:{kind:\"markdown\",value:'This attribute indicates the type of script represented. The value of this attribute will be in one of the following categories:\\n\\n*   **Omitted or a JavaScript MIME type:** For HTML5-compliant browsers this indicates the script is JavaScript. HTML5 specification urges authors to omit the attribute rather than provide a redundant MIME type. In earlier browsers, this identified the scripting language of the embedded or imported (via the `src` attribute) code. JavaScript MIME types are [listed in the specification](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#JavaScript_types).\\n*   **`module`:** For HTML5-compliant browsers the code is treated as a JavaScript module. The processing of the script contents is not affected by the `charset` and `defer` attributes. For information on using `module`, see [ES6 in Depth: Modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/). Code may behave differently when the `module` keyword is used.\\n*   **Any other value:** The embedded content is treated as a data block which won\\'t be processed by the browser. Developers must use a valid MIME type that is not a JavaScript MIME type to denote data blocks. The `src` attribute will be ignored.\\n\\n**Note:** in Firefox you could specify the version of JavaScript contained in a `<script>` element by including a non-standard `version` parameter inside the `type` attribute \\u2014 for example `type=\"text/javascript;version=1.8\"`. This has been removed in Firefox 59 (see [bug\\xA01428745](https://bugzilla.mozilla.org/show_bug.cgi?id=1428745 \"FIXED: Remove support for version parameter from script loader\")).'}},{name:\"charset\"},{name:\"async\",valueSet:\"v\",description:{kind:\"markdown\",value:`This is a Boolean attribute indicating that the browser should, if possible, load the script asynchronously.\n\nThis attribute must not be used if the \\`src\\` attribute is absent (i.e. for inline scripts). If it is included in this case it will have no effect.\n\nBrowsers usually assume the worst case scenario and load scripts synchronously, (i.e. \\`async=\"false\"\\`) during HTML parsing.\n\nDynamically inserted scripts (using [\\`document.createElement()\\`](https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement \"In an HTML document, the document.createElement() method creates the HTML element specified by tagName, or an HTMLUnknownElement if tagName isn't recognized.\")) load asynchronously by default, so to turn on synchronous loading (i.e. scripts load in the order they were inserted) set \\`async=\"false\"\\`.\n\nSee [Browser compatibility](#Browser_compatibility) for notes on browser support. See also [Async scripts for asm.js](https://developer.mozilla.org/en-US/docs/Games/Techniques/Async_scripts).`}},{name:\"defer\",valueSet:\"v\",description:{kind:\"markdown\",value:'This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the document has been parsed, but before firing [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded \"/en-US/docs/Web/Events/DOMContentLoaded\").\\n\\nScripts with the `defer` attribute will prevent the `DOMContentLoaded` event from firing until the script has loaded and finished evaluating.\\n\\nThis attribute must not be used if the `src` attribute is absent (i.e. for inline scripts), in this case it would have no effect.\\n\\nTo achieve a similar effect for dynamically inserted scripts use `async=\"false\"` instead. Scripts with the `defer` attribute will execute in the order in which they appear in the document.'}},{name:\"crossorigin\",valueSet:\"xo\",description:{kind:\"markdown\",value:'Normal `script` elements pass minimal information to the [`window.onerror`](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror \"The onerror property of the GlobalEventHandlers mixin is an EventHandler that processes error events.\") for scripts which do not pass the standard [CORS](https://developer.mozilla.org/en-US/docs/Glossary/CORS \"CORS: CORS (Cross-Origin Resource Sharing) is a system, consisting of transmitting HTTP headers, that determines whether browsers block frontend JavaScript code from accessing responses for cross-origin requests.\") checks. To allow error logging for sites which use a separate domain for static media, use this attribute. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for a more descriptive explanation of its valid arguments.'}},{name:\"nonce\",description:{kind:\"markdown\",value:\"A cryptographic nonce (number used once) to whitelist inline scripts in a [script-src Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src). The server must generate a unique nonce value each time it transmits a policy. It is critical to provide a nonce that cannot be guessed as bypassing a resource's policy is otherwise trivial.\"}},{name:\"integrity\",description:\"This attribute contains inline metadata that a user agent can use to verify that a fetched resource has been delivered free of unexpected manipulation. See [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity).\"},{name:\"nomodule\",description:\"This Boolean attribute is set to indicate that the script should not be executed in browsers that support [ES2015 modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) \\u2014 in effect, this can be used to serve fallback scripts to older browsers that do not support modular JavaScript code.\"},{name:\"referrerpolicy\",description:'Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer) to send when fetching the script, or resources fetched by the script:\\n\\n*   `no-referrer`: The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent.\\n*   `no-referrer-when-downgrade` (default): The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent to [origin](https://developer.mozilla.org/en-US/docs/Glossary/origin \"origin: Web content\\'s origin is defined by the scheme (protocol), host (domain), and port of the URL used to access it. Two objects have the same origin only when the scheme, host, and port all match.\")s without [TLS](https://developer.mozilla.org/en-US/docs/Glossary/TLS \"TLS: Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), is a protocol used by applications to communicate securely across a network, preventing tampering with and eavesdropping on email, web browsing, messaging, and other protocols.\") ([HTTPS](https://developer.mozilla.org/en-US/docs/Glossary/HTTPS \"HTTPS: HTTPS (HTTP Secure) is an encrypted version of the HTTP protocol. It usually uses SSL or TLS to encrypt all communication between a client and a server. This secure connection allows clients to safely exchange sensitive data with a server, for example for banking activities or online shopping.\")).\\n*   `origin`: The sent referrer will be limited to the origin of the referring page: its [scheme](https://developer.mozilla.org/en-US/docs/Archive/Mozilla/URIScheme), [host](https://developer.mozilla.org/en-US/docs/Glossary/host \"host: A host is a device connected to the Internet (or a local network). Some hosts called servers offer additional services like serving webpages or storing files and emails.\"), and [port](https://developer.mozilla.org/en-US/docs/Glossary/port \"port: For a computer connected to a network with an IP address, a port is a communication endpoint. Ports are designated by numbers, and below 1024 each port is associated by default with a specific protocol.\").\\n*   `origin-when-cross-origin`: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path.\\n*   `same-origin`: A referrer will be sent for [same origin](https://developer.mozilla.org/en-US/docs/Glossary/Same-origin_policy \"same origin: The same-origin policy is a critical security mechanism that restricts how a document or script loaded from one origin can interact with a resource from another origin.\"), but cross-origin requests will contain no referrer information.\\n*   `strict-origin`: Only send the origin of the document as the referrer when the protocol security level stays the same (e.g. HTTPS\\u2192HTTPS), but don\\'t send it to a less secure destination (e.g. HTTPS\\u2192HTTP).\\n*   `strict-origin-when-cross-origin`: Send a full URL when performing a same-origin request, but only send the origin when the protocol security level stays the same (e.g.HTTPS\\u2192HTTPS), and send no header to a less secure destination (e.g. HTTPS\\u2192HTTP).\\n*   `unsafe-url`: The referrer will include the origin _and_ the path (but not the [fragment](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/hash), [password](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/password), or [username](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/username)). **This value is unsafe**, because it leaks origins and paths from TLS-protected resources to insecure origins.\\n\\n**Note**: An empty string value (`\"\"`) is both the default value, and a fallback value if `referrerpolicy` is not supported. If `referrerpolicy` is not explicitly specified on the `<script>` element, it will adopt a higher-level referrer policy, i.e. one set on the whole document or domain. If a higher-level policy is not available,\\xA0the empty string is treated as being equivalent to `no-referrer-when-downgrade`.'},{name:\"text\",description:\"Like the `textContent` attribute, this attribute sets the text content of the element. Unlike the `textContent` attribute, however, this attribute is evaluated as executable code after the node is inserted into the DOM.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/script\"}]},{name:\"noscript\",description:{kind:\"markdown\",value:\"The noscript element represents nothing if scripting is enabled, and represents its children if scripting is disabled. It is used to present different markup to user agents that support scripting and those that don't support scripting, by affecting how the document is parsed.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/noscript\"}]},{name:\"template\",description:{kind:\"markdown\",value:\"The template element is used to declare fragments of HTML that can be cloned and inserted in the document by script.\"},attributes:[],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/template\"}]},{name:\"canvas\",description:{kind:\"markdown\",value:\"The canvas element provides scripts with a resolution-dependent bitmap canvas, which can be used for rendering graphs, game graphics, art, or other visual images on the fly.\"},attributes:[{name:\"width\",description:{kind:\"markdown\",value:\"The width of the coordinate space in CSS pixels. Defaults to 300.\"}},{name:\"height\",description:{kind:\"markdown\",value:\"The height of the coordinate space in CSS pixels. Defaults to 150.\"}},{name:\"moz-opaque\",description:\"Lets the canvas know whether or not translucency will be a factor. If the canvas knows there's no translucency, painting performance can be optimized. This is only supported by Mozilla-based browsers; use the standardized [`canvas.getContext('2d', { alpha: false })`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext \\\"The HTMLCanvasElement.getContext() method returns a drawing context on the canvas, or null if the context identifier is not supported.\\\") instead.\"}],references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Element/canvas\"}]}],globalAttributes:[{name:\"accesskey\",description:{kind:\"markdown\",value:\"Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/accesskey\"}]},{name:\"autocapitalize\",description:{kind:\"markdown\",value:\"Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:\\n\\n*   `off` or `none`, no autocapitalization is applied (all letters default to lowercase)\\n*   `on` or `sentences`, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase\\n*   `words`, the first letter of each word defaults to a capital letter; all other letters default to lowercase\\n*   `characters`, all letters should default to uppercase\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/autocapitalize\"}]},{name:\"class\",description:{kind:\"markdown\",value:'A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the [class selectors](/en-US/docs/Web/CSS/Class_selectors) or functions like the method [`Document.getElementsByClassName()`](/en-US/docs/Web/API/Document/getElementsByClassName \"returns an array-like object of all child elements which have all of the given class names.\").'},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/class\"}]},{name:\"contenteditable\",description:{kind:\"markdown\",value:\"An enumerated attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:\\n\\n*   `true` or the _empty string_, which indicates that the element must be editable;\\n*   `false`, which indicates that the element must not be editable.\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/contenteditable\"}]},{name:\"contextmenu\",description:{kind:\"markdown\",value:'The `[**id**](#attr-id)` of a [`<menu>`](/en-US/docs/Web/HTML/Element/menu \"The HTML <menu> element represents a group of commands that a user can perform or activate. This includes both list menus, which might appear across the top of a screen, as well as context menus, such as those that might appear underneath a button after it has been clicked.\") to use as the contextual menu for this element.'},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/contextmenu\"}]},{name:\"dir\",description:{kind:\"markdown\",value:\"An enumerated attribute indicating the directionality of the element's text. It can have the following values:\\n\\n*   `ltr`, which means _left to right_ and is to be used for languages that are written from the left to the right (like English);\\n*   `rtl`, which means _right to left_ and is to be used for languages that are written from the right to the left (like Arabic);\\n*   `auto`, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element.\"},valueSet:\"d\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/dir\"}]},{name:\"draggable\",description:{kind:\"markdown\",value:\"An enumerated attribute indicating whether the element can be dragged, using the [Drag and Drop API](/en-us/docs/DragDrop/Drag_and_Drop). It can have the following values:\\n\\n*   `true`, which indicates that the element may be dragged\\n*   `false`, which indicates that the element may not be dragged.\"},valueSet:\"b\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/draggable\"}]},{name:\"dropzone\",description:{kind:\"markdown\",value:\"An enumerated attribute indicating what types of content can be dropped on an element, using the [Drag and Drop API](/en-US/docs/DragDrop/Drag_and_Drop). It can have the following values:\\n\\n*   `copy`, which indicates that dropping will create a copy of the element that was dragged\\n*   `move`, which indicates that the element that was dragged will be moved to this new location.\\n*   `link`, will create a link to the dragged data.\"}},{name:\"exportparts\",description:{kind:\"markdown\",value:\"Used to transitively export shadow parts from a nested shadow tree into a containing light tree.\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/exportparts\"}]},{name:\"hidden\",description:{kind:\"markdown\",value:\"A Boolean attribute indicates that the element is not yet, or is no longer, _relevant_. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown.\"},valueSet:\"v\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/hidden\"}]},{name:\"id\",description:{kind:\"markdown\",value:\"Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/id\"}]},{name:\"inputmode\",description:{kind:\"markdown\",value:'Provides a hint to browsers as to the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on [`<input>`](/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") elements, but is usable on any element while in `[contenteditable](/en-US/docs/Web/HTML/Global_attributes#attr-contenteditable)` mode.'},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/inputmode\"}]},{name:\"is\",description:{kind:\"markdown\",value:\"Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see [Using custom elements](/en-US/docs/Web/Web_Components/Using_custom_elements) for more details).\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/is\"}]},{name:\"itemid\",description:{kind:\"markdown\",value:\"The unique, global identifier of an item.\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemid\"}]},{name:\"itemprop\",description:{kind:\"markdown\",value:\"Used to add properties to an item. Every HTML element may have an `itemprop` attribute specified, where an `itemprop` consists of a name and value pair.\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemprop\"}]},{name:\"itemref\",description:{kind:\"markdown\",value:\"Properties that are not descendants of an element with the `itemscope` attribute can be associated with the item using an `itemref`. It provides a list of element ids (not `itemid`s) with additional properties elsewhere in the document.\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemref\"}]},{name:\"itemscope\",description:{kind:\"markdown\",value:\"`itemscope` (usually) works along with `[itemtype](/en-US/docs/Web/HTML/Global_attributes#attr-itemtype)` to specify that the HTML contained in a block is about a particular item. `itemscope` creates the Item and defines the scope of the `itemtype` associated with it. `itemtype` is a valid URL of a vocabulary (such as [schema.org](https://schema.org/)) that describes the item and its properties context.\"},valueSet:\"v\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemscope\"}]},{name:\"itemtype\",description:{kind:\"markdown\",value:\"Specifies the URL of the vocabulary that will be used to define `itemprop`s (item properties) in the data structure. `[itemscope](/en-US/docs/Web/HTML/Global_attributes#attr-itemscope)` is used to set the scope of where in the data structure the vocabulary set by `itemtype` will be active.\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemtype\"}]},{name:\"lang\",description:{kind:\"markdown\",value:\"Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one \\u201Clanguage tag\\u201D (made of hyphen-separated \\u201Clanguage subtags\\u201D) in the format defined in [_Tags for Identifying Languages (BCP47)_](https://www.ietf.org/rfc/bcp/bcp47.txt). [**xml:lang**](#attr-xml:lang) has priority over it.\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/lang\"}]},{name:\"part\",description:{kind:\"markdown\",value:'A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the [`::part`](/en-US/docs/Web/CSS/::part \"The ::part CSS pseudo-element represents any element within a shadow tree that has a matching part attribute.\") pseudo-element.'},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/part\"}]},{name:\"role\",valueSet:\"roles\"},{name:\"slot\",description:{kind:\"markdown\",value:\"Assigns a slot in a [shadow DOM](/en-US/docs/Web/Web_Components/Shadow_DOM) shadow tree to an element: An element with a `slot` attribute is assigned to the slot created by the [`<slot>`](/en-US/docs/Web/HTML/Element/slot \\\"The HTML <slot> element\\u2014part of the Web Components technology suite\\u2014is a placeholder inside a web component that you can fill with your own markup, which lets you create separate DOM trees and present them together.\\\") element whose `[name](/en-US/docs/Web/HTML/Element/slot#attr-name)` attribute's value matches that `slot` attribute's value.\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/slot\"}]},{name:\"spellcheck\",description:{kind:\"markdown\",value:\"An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:\\n\\n*   `true`, which indicates that the element should be, if possible, checked for spelling errors;\\n*   `false`, which indicates that the element should not be checked for spelling errors.\"},valueSet:\"b\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/spellcheck\"}]},{name:\"style\",description:{kind:\"markdown\",value:'Contains [CSS](/en-US/docs/Web/CSS) styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the [`<style>`](/en-US/docs/Web/HTML/Element/style \"The HTML <style> element contains style information for a document, or part of a document.\") element have mainly the purpose of allowing for quick styling, for example for testing purposes.'},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/style\"}]},{name:\"tabindex\",description:{kind:\"markdown\",value:`An integer attribute indicating if the element can take input focus (is _focusable_), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:\n\n*   a _negative value_ means that the element should be focusable, but should not be reachable via sequential keyboard navigation;\n*   \\`0\\` means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;\n*   a _positive value_ means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the [**tabindex**](#attr-tabindex). If several elements share the same tabindex, their relative order follows their relative positions in the document.`},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/tabindex\"}]},{name:\"title\",description:{kind:\"markdown\",value:\"Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip.\"},references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/title\"}]},{name:\"translate\",description:{kind:\"markdown\",value:\"An enumerated attribute that is used to specify whether an element's attribute values and the values of its [`Text`](/en-US/docs/Web/API/Text \\\"The Text interface represents the textual content of Element or Attr. If an element has no markup within its content, it has a single child implementing Text that contains the element's text. However, if the element contains markup, it is parsed into information items and Text nodes that form its children.\\\") node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:\\n\\n*   empty string and `yes`, which indicates that the element will be translated.\\n*   `no`, which indicates that the element will not be translated.\"},valueSet:\"y\",references:[{name:\"MDN Reference\",url:\"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/translate\"}]},{name:\"onabort\",description:{kind:\"markdown\",value:\"The loading of a resource has been aborted.\"}},{name:\"onblur\",description:{kind:\"markdown\",value:\"An element has lost focus (does not bubble).\"}},{name:\"oncanplay\",description:{kind:\"markdown\",value:\"The user agent can play the media, but estimates that not enough data has been loaded to play the media up to its end without having to stop for further buffering of content.\"}},{name:\"oncanplaythrough\",description:{kind:\"markdown\",value:\"The user agent can play the media up to its end without having to stop for further buffering of content.\"}},{name:\"onchange\",description:{kind:\"markdown\",value:\"The change event is fired for <input>, <select>, and <textarea> elements when a change to the element's value is committed by the user.\"}},{name:\"onclick\",description:{kind:\"markdown\",value:\"A pointing device button has been pressed and released on an element.\"}},{name:\"oncontextmenu\",description:{kind:\"markdown\",value:\"The right button of the mouse is clicked (before the context menu is displayed).\"}},{name:\"ondblclick\",description:{kind:\"markdown\",value:\"A pointing device button is clicked twice on an element.\"}},{name:\"ondrag\",description:{kind:\"markdown\",value:\"An element or text selection is being dragged (every 350ms).\"}},{name:\"ondragend\",description:{kind:\"markdown\",value:\"A drag operation is being ended (by releasing a mouse button or hitting the escape key).\"}},{name:\"ondragenter\",description:{kind:\"markdown\",value:\"A dragged element or text selection enters a valid drop target.\"}},{name:\"ondragleave\",description:{kind:\"markdown\",value:\"A dragged element or text selection leaves a valid drop target.\"}},{name:\"ondragover\",description:{kind:\"markdown\",value:\"An element or text selection is being dragged over a valid drop target (every 350ms).\"}},{name:\"ondragstart\",description:{kind:\"markdown\",value:\"The user starts dragging an element or text selection.\"}},{name:\"ondrop\",description:{kind:\"markdown\",value:\"An element is dropped on a valid drop target.\"}},{name:\"ondurationchange\",description:{kind:\"markdown\",value:\"The duration attribute has been updated.\"}},{name:\"onemptied\",description:{kind:\"markdown\",value:\"The media has become empty; for example, this event is sent if the media has already been loaded (or partially loaded), and the load() method is called to reload it.\"}},{name:\"onended\",description:{kind:\"markdown\",value:\"Playback has stopped because the end of the media was reached.\"}},{name:\"onerror\",description:{kind:\"markdown\",value:\"A resource failed to load.\"}},{name:\"onfocus\",description:{kind:\"markdown\",value:\"An element has received focus (does not bubble).\"}},{name:\"onformchange\"},{name:\"onforminput\"},{name:\"oninput\",description:{kind:\"markdown\",value:\"The value of an element changes or the content of an element with the attribute contenteditable is modified.\"}},{name:\"oninvalid\",description:{kind:\"markdown\",value:\"A submittable element has been checked and doesn't satisfy its constraints.\"}},{name:\"onkeydown\",description:{kind:\"markdown\",value:\"A key is pressed down.\"}},{name:\"onkeypress\",description:{kind:\"markdown\",value:\"A key is pressed down and that key normally produces a character value (use input instead).\"}},{name:\"onkeyup\",description:{kind:\"markdown\",value:\"A key is released.\"}},{name:\"onload\",description:{kind:\"markdown\",value:\"A resource and its dependent resources have finished loading.\"}},{name:\"onloadeddata\",description:{kind:\"markdown\",value:\"The first frame of the media has finished loading.\"}},{name:\"onloadedmetadata\",description:{kind:\"markdown\",value:\"The metadata has been loaded.\"}},{name:\"onloadstart\",description:{kind:\"markdown\",value:\"Progress has begun.\"}},{name:\"onmousedown\",description:{kind:\"markdown\",value:\"A pointing device button (usually a mouse) is pressed on an element.\"}},{name:\"onmousemove\",description:{kind:\"markdown\",value:\"A pointing device is moved over an element.\"}},{name:\"onmouseout\",description:{kind:\"markdown\",value:\"A pointing device is moved off the element that has the listener attached or off one of its children.\"}},{name:\"onmouseover\",description:{kind:\"markdown\",value:\"A pointing device is moved onto the element that has the listener attached or onto one of its children.\"}},{name:\"onmouseup\",description:{kind:\"markdown\",value:\"A pointing device button is released over an element.\"}},{name:\"onmousewheel\"},{name:\"onmouseenter\",description:{kind:\"markdown\",value:\"A pointing device is moved onto the element that has the listener attached.\"}},{name:\"onmouseleave\",description:{kind:\"markdown\",value:\"A pointing device is moved off the element that has the listener attached.\"}},{name:\"onpause\",description:{kind:\"markdown\",value:\"Playback has been paused.\"}},{name:\"onplay\",description:{kind:\"markdown\",value:\"Playback has begun.\"}},{name:\"onplaying\",description:{kind:\"markdown\",value:\"Playback is ready to start after having been paused or delayed due to lack of data.\"}},{name:\"onprogress\",description:{kind:\"markdown\",value:\"In progress.\"}},{name:\"onratechange\",description:{kind:\"markdown\",value:\"The playback rate has changed.\"}},{name:\"onreset\",description:{kind:\"markdown\",value:\"A form is reset.\"}},{name:\"onresize\",description:{kind:\"markdown\",value:\"The document view has been resized.\"}},{name:\"onreadystatechange\",description:{kind:\"markdown\",value:\"The readyState attribute of a document has changed.\"}},{name:\"onscroll\",description:{kind:\"markdown\",value:\"The document view or an element has been scrolled.\"}},{name:\"onseeked\",description:{kind:\"markdown\",value:\"A seek operation completed.\"}},{name:\"onseeking\",description:{kind:\"markdown\",value:\"A seek operation began.\"}},{name:\"onselect\",description:{kind:\"markdown\",value:\"Some text is being selected.\"}},{name:\"onshow\",description:{kind:\"markdown\",value:\"A contextmenu event was fired on/bubbled to an element that has a contextmenu attribute\"}},{name:\"onstalled\",description:{kind:\"markdown\",value:\"The user agent is trying to fetch media data, but data is unexpectedly not forthcoming.\"}},{name:\"onsubmit\",description:{kind:\"markdown\",value:\"A form is submitted.\"}},{name:\"onsuspend\",description:{kind:\"markdown\",value:\"Media data loading has been suspended.\"}},{name:\"ontimeupdate\",description:{kind:\"markdown\",value:\"The time indicated by the currentTime attribute has been updated.\"}},{name:\"onvolumechange\",description:{kind:\"markdown\",value:\"The volume has changed.\"}},{name:\"onwaiting\",description:{kind:\"markdown\",value:\"Playback has stopped because of a temporary lack of data.\"}},{name:\"onpointercancel\",description:{kind:\"markdown\",value:\"The pointer is unlikely to produce any more events.\"}},{name:\"onpointerdown\",description:{kind:\"markdown\",value:\"The pointer enters the active buttons state.\"}},{name:\"onpointerenter\",description:{kind:\"markdown\",value:\"Pointing device is moved inside the hit-testing boundary.\"}},{name:\"onpointerleave\",description:{kind:\"markdown\",value:\"Pointing device is moved out of the hit-testing boundary.\"}},{name:\"onpointerlockchange\",description:{kind:\"markdown\",value:\"The pointer was locked or released.\"}},{name:\"onpointerlockerror\",description:{kind:\"markdown\",value:\"It was impossible to lock the pointer for technical reasons or because the permission was denied.\"}},{name:\"onpointermove\",description:{kind:\"markdown\",value:\"The pointer changed coordinates.\"}},{name:\"onpointerout\",description:{kind:\"markdown\",value:\"The pointing device moved out of hit-testing boundary or leaves detectable hover range.\"}},{name:\"onpointerover\",description:{kind:\"markdown\",value:\"The pointing device is moved into the hit-testing boundary.\"}},{name:\"onpointerup\",description:{kind:\"markdown\",value:\"The pointer leaves the active buttons state.\"}},{name:\"aria-activedescendant\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-activedescendant\"}],description:{kind:\"markdown\",value:\"Identifies the currently active element when DOM focus is on a [`composite`](https://www.w3.org/TR/wai-aria-1.1/#composite) widget, [`textbox`](https://www.w3.org/TR/wai-aria-1.1/#textbox), [`group`](https://www.w3.org/TR/wai-aria-1.1/#group), or [`application`](https://www.w3.org/TR/wai-aria-1.1/#application).\"}},{name:\"aria-atomic\",valueSet:\"b\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-atomic\"}],description:{kind:\"markdown\",value:\"Indicates whether [assistive technologies](https://www.w3.org/TR/wai-aria-1.1/#dfn-assistive-technology) will present all, or only parts of, the changed region based on the change notifications defined by the [`aria-relevant`](https://www.w3.org/TR/wai-aria-1.1/#aria-relevant) attribute.\"}},{name:\"aria-autocomplete\",valueSet:\"autocomplete\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-autocomplete\"}],description:{kind:\"markdown\",value:\"Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made.\"}},{name:\"aria-busy\",valueSet:\"b\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-busy\"}],description:{kind:\"markdown\",value:\"Indicates an element is being modified and that assistive technologies _MAY_ want to wait until the modifications are complete before exposing them to the user.\"}},{name:\"aria-checked\",valueSet:\"tristate\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-checked\"}],description:{kind:\"markdown\",value:'Indicates the current \"checked\" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) of checkboxes, radio buttons, and other [widgets](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget). See related [`aria-pressed`](https://www.w3.org/TR/wai-aria-1.1/#aria-pressed) and [`aria-selected`](https://www.w3.org/TR/wai-aria-1.1/#aria-selected).'}},{name:\"aria-colcount\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-colcount\"}],description:{kind:\"markdown\",value:\"Defines the total number of columns in a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-colindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-colindex).\"}},{name:\"aria-colindex\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-colindex\"}],description:{kind:\"markdown\",value:\"Defines an [element's](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) column index or position with respect to the total number of columns within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-colcount`](https://www.w3.org/TR/wai-aria-1.1/#aria-colcount) and [`aria-colspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-colspan).\"}},{name:\"aria-colspan\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-colspan\"}],description:{kind:\"markdown\",value:\"Defines the number of columns spanned by a cell or gridcell within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-colindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-colindex) and [`aria-rowspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan).\"}},{name:\"aria-controls\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-controls\"}],description:{kind:\"markdown\",value:\"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) whose contents or presence are controlled by the current element. See related [`aria-owns`](https://www.w3.org/TR/wai-aria-1.1/#aria-owns).\"}},{name:\"aria-current\",valueSet:\"current\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-current\"}],description:{kind:\"markdown\",value:\"Indicates the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) that represents the current item within a container or set of related elements.\"}},{name:\"aria-describedby\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-describedby\"}],description:{kind:\"markdown\",value:\"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) that describes the [object](https://www.w3.org/TR/wai-aria-1.1/#dfn-object). See related [`aria-labelledby`](https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby).\"}},{name:\"aria-disabled\",valueSet:\"b\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-disabled\"}],description:{kind:\"markdown\",value:\"Indicates that the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is [perceivable](https://www.w3.org/TR/wai-aria-1.1/#dfn-perceivable) but disabled, so it is not editable or otherwise [operable](https://www.w3.org/TR/wai-aria-1.1/#dfn-operable). See related [`aria-hidden`](https://www.w3.org/TR/wai-aria-1.1/#aria-hidden) and [`aria-readonly`](https://www.w3.org/TR/wai-aria-1.1/#aria-readonly).\"}},{name:\"aria-dropeffect\",valueSet:\"dropeffect\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-dropeffect\"}],description:{kind:\"markdown\",value:\"\\\\[Deprecated in ARIA 1.1\\\\] Indicates what functions can be performed when a dragged object is released on the drop target.\"}},{name:\"aria-errormessage\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-errormessage\"}],description:{kind:\"markdown\",value:\"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) that provides an error message for the [object](https://www.w3.org/TR/wai-aria-1.1/#dfn-object). See related [`aria-invalid`](https://www.w3.org/TR/wai-aria-1.1/#aria-invalid) and [`aria-describedby`](https://www.w3.org/TR/wai-aria-1.1/#aria-describedby).\"}},{name:\"aria-expanded\",valueSet:\"u\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-expanded\"}],description:{kind:\"markdown\",value:\"Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed.\"}},{name:\"aria-flowto\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-flowto\"}],description:{kind:\"markdown\",value:\"Identifies the next [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) in an alternate reading order of content which, at the user's discretion, allows assistive technology to override the general default of reading in document source order.\"}},{name:\"aria-grabbed\",valueSet:\"u\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-grabbed\"}],description:{kind:\"markdown\",value:`\\\\[Deprecated in ARIA 1.1\\\\] Indicates an element's \"grabbed\" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) in a drag-and-drop operation.`}},{name:\"aria-haspopup\",valueSet:\"haspopup\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-haspopup\"}],description:{kind:\"markdown\",value:\"Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element).\"}},{name:\"aria-hidden\",valueSet:\"b\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-hidden\"}],description:{kind:\"markdown\",value:\"Indicates whether the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is exposed to an accessibility API. See related [`aria-disabled`](https://www.w3.org/TR/wai-aria-1.1/#aria-disabled).\"}},{name:\"aria-invalid\",valueSet:\"invalid\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-invalid\"}],description:{kind:\"markdown\",value:\"Indicates the entered value does not conform to the format expected by the application. See related [`aria-errormessage`](https://www.w3.org/TR/wai-aria-1.1/#aria-errormessage).\"}},{name:\"aria-label\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-label\"}],description:{kind:\"markdown\",value:\"Defines a string value that labels the current element. See related [`aria-labelledby`](https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby).\"}},{name:\"aria-labelledby\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby\"}],description:{kind:\"markdown\",value:\"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) that labels the current element. See related [`aria-describedby`](https://www.w3.org/TR/wai-aria-1.1/#aria-describedby).\"}},{name:\"aria-level\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-level\"}],description:{kind:\"markdown\",value:\"Defines the hierarchical level of an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) within a structure.\"}},{name:\"aria-live\",valueSet:\"live\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-live\"}],description:{kind:\"markdown\",value:\"Indicates that an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) will be updated, and describes the types of updates the [user agents](https://www.w3.org/TR/wai-aria-1.1/#dfn-user-agent), [assistive technologies](https://www.w3.org/TR/wai-aria-1.1/#dfn-assistive-technology), and user can expect from the [live region](https://www.w3.org/TR/wai-aria-1.1/#dfn-live-region).\"}},{name:\"aria-modal\",valueSet:\"b\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-modal\"}],description:{kind:\"markdown\",value:\"Indicates whether an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is modal when displayed.\"}},{name:\"aria-multiline\",valueSet:\"b\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-multiline\"}],description:{kind:\"markdown\",value:\"Indicates whether a text box accepts multiple lines of input or only a single line.\"}},{name:\"aria-multiselectable\",valueSet:\"b\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-multiselectable\"}],description:{kind:\"markdown\",value:\"Indicates that the user may select more than one item from the current selectable descendants.\"}},{name:\"aria-orientation\",valueSet:\"orientation\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-orientation\"}],description:{kind:\"markdown\",value:\"Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous.\"}},{name:\"aria-owns\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-owns\"}],description:{kind:\"markdown\",value:\"Identifies an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) in order to define a visual, functional, or contextual parent/child [relationship](https://www.w3.org/TR/wai-aria-1.1/#dfn-relationship) between DOM elements where the DOM hierarchy cannot be used to represent the relationship. See related [`aria-controls`](https://www.w3.org/TR/wai-aria-1.1/#aria-controls).\"}},{name:\"aria-placeholder\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-placeholder\"}],description:{kind:\"markdown\",value:\"Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. A hint could be a sample value or a brief description of the expected format.\"}},{name:\"aria-posinset\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-posinset\"}],description:{kind:\"markdown\",value:\"Defines an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element)'s number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See related [`aria-setsize`](https://www.w3.org/TR/wai-aria-1.1/#aria-setsize).\"}},{name:\"aria-pressed\",valueSet:\"tristate\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-pressed\"}],description:{kind:\"markdown\",value:'Indicates the current \"pressed\" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) of toggle buttons. See related [`aria-checked`](https://www.w3.org/TR/wai-aria-1.1/#aria-checked) and [`aria-selected`](https://www.w3.org/TR/wai-aria-1.1/#aria-selected).'}},{name:\"aria-readonly\",valueSet:\"b\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-readonly\"}],description:{kind:\"markdown\",value:\"Indicates that the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is not editable, but is otherwise [operable](https://www.w3.org/TR/wai-aria-1.1/#dfn-operable). See related [`aria-disabled`](https://www.w3.org/TR/wai-aria-1.1/#aria-disabled).\"}},{name:\"aria-relevant\",valueSet:\"relevant\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-relevant\"}],description:{kind:\"markdown\",value:\"Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. See related [`aria-atomic`](https://www.w3.org/TR/wai-aria-1.1/#aria-atomic).\"}},{name:\"aria-required\",valueSet:\"b\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-required\"}],description:{kind:\"markdown\",value:\"Indicates that user input is required on the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) before a form may be submitted.\"}},{name:\"aria-roledescription\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-roledescription\"}],description:{kind:\"markdown\",value:\"Defines a human-readable, author-localized description for the [role](https://www.w3.org/TR/wai-aria-1.1/#dfn-role) of an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element).\"}},{name:\"aria-rowcount\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-rowcount\"}],description:{kind:\"markdown\",value:\"Defines the total number of rows in a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-rowindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex).\"}},{name:\"aria-rowindex\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex\"}],description:{kind:\"markdown\",value:\"Defines an [element's](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) row index or position with respect to the total number of rows within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-rowcount`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowcount) and [`aria-rowspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan).\"}},{name:\"aria-rowspan\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan\"}],description:{kind:\"markdown\",value:\"Defines the number of rows spanned by a cell or gridcell within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-rowindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex) and [`aria-colspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-colspan).\"}},{name:\"aria-selected\",valueSet:\"u\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-selected\"}],description:{kind:\"markdown\",value:'Indicates the current \"selected\" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) of various [widgets](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget). See related [`aria-checked`](https://www.w3.org/TR/wai-aria-1.1/#aria-checked) and [`aria-pressed`](https://www.w3.org/TR/wai-aria-1.1/#aria-pressed).'}},{name:\"aria-setsize\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-setsize\"}],description:{kind:\"markdown\",value:\"Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See related [`aria-posinset`](https://www.w3.org/TR/wai-aria-1.1/#aria-posinset).\"}},{name:\"aria-sort\",valueSet:\"sort\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-sort\"}],description:{kind:\"markdown\",value:\"Indicates if items in a table or grid are sorted in ascending or descending order.\"}},{name:\"aria-valuemax\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-valuemax\"}],description:{kind:\"markdown\",value:\"Defines the maximum allowed value for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget).\"}},{name:\"aria-valuemin\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-valuemin\"}],description:{kind:\"markdown\",value:\"Defines the minimum allowed value for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget).\"}},{name:\"aria-valuenow\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-valuenow\"}],description:{kind:\"markdown\",value:\"Defines the current value for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget). See related [`aria-valuetext`](https://www.w3.org/TR/wai-aria-1.1/#aria-valuetext).\"}},{name:\"aria-valuetext\",references:[{name:\"WAI-ARIA Reference\",url:\"https://www.w3.org/TR/wai-aria-1.1/#aria-valuetext\"}],description:{kind:\"markdown\",value:\"Defines the human readable text alternative of [`aria-valuenow`](https://www.w3.org/TR/wai-aria-1.1/#aria-valuenow) for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget).\"}},{name:\"aria-details\",description:{kind:\"markdown\",value:\"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) that provides a detailed, extended description for the [object](https://www.w3.org/TR/wai-aria-1.1/#dfn-object). See related [`aria-describedby`](https://www.w3.org/TR/wai-aria-1.1/#aria-describedby).\"}},{name:\"aria-keyshortcuts\",description:{kind:\"markdown\",value:\"Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element.\"}}],valueSets:[{name:\"b\",values:[{name:\"true\"},{name:\"false\"}]},{name:\"u\",values:[{name:\"true\"},{name:\"false\"},{name:\"undefined\"}]},{name:\"o\",values:[{name:\"on\"},{name:\"off\"}]},{name:\"y\",values:[{name:\"yes\"},{name:\"no\"}]},{name:\"w\",values:[{name:\"soft\"},{name:\"hard\"}]},{name:\"d\",values:[{name:\"ltr\"},{name:\"rtl\"},{name:\"auto\"}]},{name:\"m\",values:[{name:\"get\",description:{kind:\"markdown\",value:\"Corresponds to the HTTP [GET method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3); form data are appended to the `action` attribute URI with a '?' as separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters.\"}},{name:\"post\",description:{kind:\"markdown\",value:\"Corresponds to the HTTP [POST method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5); form data are included in the body of the form and sent to the server.\"}},{name:\"dialog\",description:{kind:\"markdown\",value:\"Use when the form is inside a [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog) element to close the dialog when submitted.\"}}]},{name:\"fm\",values:[{name:\"get\"},{name:\"post\"}]},{name:\"s\",values:[{name:\"row\"},{name:\"col\"},{name:\"rowgroup\"},{name:\"colgroup\"}]},{name:\"t\",values:[{name:\"hidden\"},{name:\"text\"},{name:\"search\"},{name:\"tel\"},{name:\"url\"},{name:\"email\"},{name:\"password\"},{name:\"datetime\"},{name:\"date\"},{name:\"month\"},{name:\"week\"},{name:\"time\"},{name:\"datetime-local\"},{name:\"number\"},{name:\"range\"},{name:\"color\"},{name:\"checkbox\"},{name:\"radio\"},{name:\"file\"},{name:\"submit\"},{name:\"image\"},{name:\"reset\"},{name:\"button\"}]},{name:\"im\",values:[{name:\"verbatim\"},{name:\"latin\"},{name:\"latin-name\"},{name:\"latin-prose\"},{name:\"full-width-latin\"},{name:\"kana\"},{name:\"kana-name\"},{name:\"katakana\"},{name:\"numeric\"},{name:\"tel\"},{name:\"email\"},{name:\"url\"}]},{name:\"bt\",values:[{name:\"button\"},{name:\"submit\"},{name:\"reset\"},{name:\"menu\"}]},{name:\"lt\",values:[{name:\"1\"},{name:\"a\"},{name:\"A\"},{name:\"i\"},{name:\"I\"}]},{name:\"mt\",values:[{name:\"context\"},{name:\"toolbar\"}]},{name:\"mit\",values:[{name:\"command\"},{name:\"checkbox\"},{name:\"radio\"}]},{name:\"et\",values:[{name:\"application/x-www-form-urlencoded\"},{name:\"multipart/form-data\"},{name:\"text/plain\"}]},{name:\"tk\",values:[{name:\"subtitles\"},{name:\"captions\"},{name:\"descriptions\"},{name:\"chapters\"},{name:\"metadata\"}]},{name:\"pl\",values:[{name:\"none\"},{name:\"metadata\"},{name:\"auto\"}]},{name:\"sh\",values:[{name:\"circle\"},{name:\"default\"},{name:\"poly\"},{name:\"rect\"}]},{name:\"xo\",values:[{name:\"anonymous\"},{name:\"use-credentials\"}]},{name:\"sb\",values:[{name:\"allow-forms\"},{name:\"allow-modals\"},{name:\"allow-pointer-lock\"},{name:\"allow-popups\"},{name:\"allow-popups-to-escape-sandbox\"},{name:\"allow-same-origin\"},{name:\"allow-scripts\"},{name:\"allow-top-navigation\"}]},{name:\"tristate\",values:[{name:\"true\"},{name:\"false\"},{name:\"mixed\"},{name:\"undefined\"}]},{name:\"inputautocomplete\",values:[{name:\"additional-name\"},{name:\"address-level1\"},{name:\"address-level2\"},{name:\"address-level3\"},{name:\"address-level4\"},{name:\"address-line1\"},{name:\"address-line2\"},{name:\"address-line3\"},{name:\"bday\"},{name:\"bday-year\"},{name:\"bday-day\"},{name:\"bday-month\"},{name:\"billing\"},{name:\"cc-additional-name\"},{name:\"cc-csc\"},{name:\"cc-exp\"},{name:\"cc-exp-month\"},{name:\"cc-exp-year\"},{name:\"cc-family-name\"},{name:\"cc-given-name\"},{name:\"cc-name\"},{name:\"cc-number\"},{name:\"cc-type\"},{name:\"country\"},{name:\"country-name\"},{name:\"current-password\"},{name:\"email\"},{name:\"family-name\"},{name:\"fax\"},{name:\"given-name\"},{name:\"home\"},{name:\"honorific-prefix\"},{name:\"honorific-suffix\"},{name:\"impp\"},{name:\"language\"},{name:\"mobile\"},{name:\"name\"},{name:\"new-password\"},{name:\"nickname\"},{name:\"organization\"},{name:\"organization-title\"},{name:\"pager\"},{name:\"photo\"},{name:\"postal-code\"},{name:\"sex\"},{name:\"shipping\"},{name:\"street-address\"},{name:\"tel-area-code\"},{name:\"tel\"},{name:\"tel-country-code\"},{name:\"tel-extension\"},{name:\"tel-local\"},{name:\"tel-local-prefix\"},{name:\"tel-local-suffix\"},{name:\"tel-national\"},{name:\"transaction-amount\"},{name:\"transaction-currency\"},{name:\"url\"},{name:\"username\"},{name:\"work\"}]},{name:\"autocomplete\",values:[{name:\"inline\"},{name:\"list\"},{name:\"both\"},{name:\"none\"}]},{name:\"current\",values:[{name:\"page\"},{name:\"step\"},{name:\"location\"},{name:\"date\"},{name:\"time\"},{name:\"true\"},{name:\"false\"}]},{name:\"dropeffect\",values:[{name:\"copy\"},{name:\"move\"},{name:\"link\"},{name:\"execute\"},{name:\"popup\"},{name:\"none\"}]},{name:\"invalid\",values:[{name:\"grammar\"},{name:\"false\"},{name:\"spelling\"},{name:\"true\"}]},{name:\"live\",values:[{name:\"off\"},{name:\"polite\"},{name:\"assertive\"}]},{name:\"orientation\",values:[{name:\"vertical\"},{name:\"horizontal\"},{name:\"undefined\"}]},{name:\"relevant\",values:[{name:\"additions\"},{name:\"removals\"},{name:\"text\"},{name:\"all\"},{name:\"additions text\"}]},{name:\"sort\",values:[{name:\"ascending\"},{name:\"descending\"},{name:\"none\"},{name:\"other\"}]},{name:\"roles\",values:[{name:\"alert\"},{name:\"alertdialog\"},{name:\"button\"},{name:\"checkbox\"},{name:\"dialog\"},{name:\"gridcell\"},{name:\"link\"},{name:\"log\"},{name:\"marquee\"},{name:\"menuitem\"},{name:\"menuitemcheckbox\"},{name:\"menuitemradio\"},{name:\"option\"},{name:\"progressbar\"},{name:\"radio\"},{name:\"scrollbar\"},{name:\"searchbox\"},{name:\"slider\"},{name:\"spinbutton\"},{name:\"status\"},{name:\"switch\"},{name:\"tab\"},{name:\"tabpanel\"},{name:\"textbox\"},{name:\"timer\"},{name:\"tooltip\"},{name:\"treeitem\"},{name:\"combobox\"},{name:\"grid\"},{name:\"listbox\"},{name:\"menu\"},{name:\"menubar\"},{name:\"radiogroup\"},{name:\"tablist\"},{name:\"tree\"},{name:\"treegrid\"},{name:\"application\"},{name:\"article\"},{name:\"cell\"},{name:\"columnheader\"},{name:\"definition\"},{name:\"directory\"},{name:\"document\"},{name:\"feed\"},{name:\"figure\"},{name:\"group\"},{name:\"heading\"},{name:\"img\"},{name:\"list\"},{name:\"listitem\"},{name:\"math\"},{name:\"none\"},{name:\"note\"},{name:\"presentation\"},{name:\"region\"},{name:\"row\"},{name:\"rowgroup\"},{name:\"rowheader\"},{name:\"separator\"},{name:\"table\"},{name:\"term\"},{name:\"text\"},{name:\"toolbar\"},{name:\"banner\"},{name:\"complementary\"},{name:\"contentinfo\"},{name:\"form\"},{name:\"main\"},{name:\"navigation\"},{name:\"region\"},{name:\"search\"},{name:\"doc-abstract\"},{name:\"doc-acknowledgments\"},{name:\"doc-afterword\"},{name:\"doc-appendix\"},{name:\"doc-backlink\"},{name:\"doc-biblioentry\"},{name:\"doc-bibliography\"},{name:\"doc-biblioref\"},{name:\"doc-chapter\"},{name:\"doc-colophon\"},{name:\"doc-conclusion\"},{name:\"doc-cover\"},{name:\"doc-credit\"},{name:\"doc-credits\"},{name:\"doc-dedication\"},{name:\"doc-endnote\"},{name:\"doc-endnotes\"},{name:\"doc-epigraph\"},{name:\"doc-epilogue\"},{name:\"doc-errata\"},{name:\"doc-example\"},{name:\"doc-footnote\"},{name:\"doc-foreword\"},{name:\"doc-glossary\"},{name:\"doc-glossref\"},{name:\"doc-index\"},{name:\"doc-introduction\"},{name:\"doc-noteref\"},{name:\"doc-notice\"},{name:\"doc-pagebreak\"},{name:\"doc-pagelist\"},{name:\"doc-part\"},{name:\"doc-preface\"},{name:\"doc-prologue\"},{name:\"doc-pullquote\"},{name:\"doc-qna\"},{name:\"doc-subtitle\"},{name:\"doc-tip\"},{name:\"doc-toc\"}]},{name:\"metanames\",values:[{name:\"application-name\"},{name:\"author\"},{name:\"description\"},{name:\"format-detection\"},{name:\"generator\"},{name:\"keywords\"},{name:\"publisher\"},{name:\"referrer\"},{name:\"robots\"},{name:\"theme-color\"},{name:\"viewport\"}]},{name:\"haspopup\",values:[{name:\"false\",description:{kind:\"markdown\",value:\"(default) Indicates the element does not have a popup.\"}},{name:\"true\",description:{kind:\"markdown\",value:\"Indicates the popup is a menu.\"}},{name:\"menu\",description:{kind:\"markdown\",value:\"Indicates the popup is a menu.\"}},{name:\"listbox\",description:{kind:\"markdown\",value:\"Indicates the popup is a listbox.\"}},{name:\"tree\",description:{kind:\"markdown\",value:\"Indicates the popup is a tree.\"}},{name:\"grid\",description:{kind:\"markdown\",value:\"Indicates the popup is a grid.\"}},{name:\"dialog\",description:{kind:\"markdown\",value:\"Indicates the popup is a dialog.\"}}]}]};var Tn=function(){function t(i){this.dataProviders=[],this.setDataProviders(i.useDefaultDataProvider!==!1,i.customDataProviders||[])}return t.prototype.setDataProviders=function(i,o){var n;this.dataProviders=[],i&&this.dataProviders.push(new Ge(\"html5\",bt)),(n=this.dataProviders).push.apply(n,o)},t.prototype.getDataProviders=function(){return this.dataProviders},t}();var Ci={};function kn(t){t===void 0&&(t=Ci);var i=new Tn(t),o=new Zt(t,i),n=new Qt(t,i);return{setDataProviders:i.setDataProviders.bind(i),createScanner:$,parseHTMLDocument:function(e){return je(e.getText())},doComplete:n.doComplete.bind(n),doComplete2:n.doComplete2.bind(n),setCompletionParticipants:n.setCompletionParticipants.bind(n),doHover:o.doHover.bind(o),format:sn,findDocumentHighlights:mn,findDocumentLinks:cn,findDocumentSymbols:fn,getFoldingRanges:wn,getSelectionRanges:yn,doQuoteComplete:n.doQuoteComplete.bind(n),doTagComplete:n.doTagComplete.bind(n),doRename:bn,findMatchingTagPosition:vn,findOnTypeRenameRanges:gt,findLinkedEditingRanges:gt}}function Sn(t,i){return new Ge(t,i)}var Je=class{_ctx;_languageService;_languageSettings;_languageId;constructor(i,o){this._ctx=i,this._languageSettings=o.languageSettings,this._languageId=o.languageId;let n=this._languageSettings.data,e=n?.useDefaultDataProvider,a=[];if(n?.dataProviders)for(let c in n.dataProviders)a.push(Sn(c,n.dataProviders[c]));this._languageService=kn({useDefaultDataProvider:e,customDataProviders:a})}async doComplete(i,o){let n=this._getTextDocument(i);if(!n)return null;let e=this._languageService.parseHTMLDocument(n);return Promise.resolve(this._languageService.doComplete(n,o,e,this._languageSettings&&this._languageSettings.suggest))}async format(i,o,n){let e=this._getTextDocument(i);if(!e)return[];let a={...this._languageSettings.format,...n},c=this._languageService.format(e,o,a);return Promise.resolve(c)}async doHover(i,o){let n=this._getTextDocument(i);if(!n)return null;let e=this._languageService.parseHTMLDocument(n),a=this._languageService.doHover(n,o,e);return Promise.resolve(a)}async findDocumentHighlights(i,o){let n=this._getTextDocument(i);if(!n)return[];let e=this._languageService.parseHTMLDocument(n),a=this._languageService.findDocumentHighlights(n,o,e);return Promise.resolve(a)}async findDocumentLinks(i){let o=this._getTextDocument(i);if(!o)return[];let n=this._languageService.findDocumentLinks(o,null);return Promise.resolve(n)}async findDocumentSymbols(i){let o=this._getTextDocument(i);if(!o)return[];let n=this._languageService.parseHTMLDocument(o),e=this._languageService.findDocumentSymbols(o,n);return Promise.resolve(e)}async getFoldingRanges(i,o){let n=this._getTextDocument(i);if(!n)return[];let e=this._languageService.getFoldingRanges(n,o);return Promise.resolve(e)}async getSelectionRanges(i,o){let n=this._getTextDocument(i);if(!n)return[];let e=this._languageService.getSelectionRanges(n,o);return Promise.resolve(e)}async doRename(i,o,n){let e=this._getTextDocument(i);if(!e)return null;let a=this._languageService.parseHTMLDocument(e),c=this._languageService.doRename(e,o,n,a);return Promise.resolve(c)}_getTextDocument(i){let o=this._ctx.getMirrorModels();for(let n of o)if(n.uri.toString()===i)return Re.create(i,this._languageId,n.version,n.getValue());return null}};function Mi(t,i){return new Je(t,i)}return Mn(Ri);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/language/json/jsonMode.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/language/json/jsonMode\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var Tn=Object.create;var ie=Object.defineProperty;var bn=Object.getOwnPropertyDescriptor;var Cn=Object.getOwnPropertyNames;var wn=Object.getPrototypeOf,In=Object.prototype.hasOwnProperty;var xn=(e=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(e,{get:(t,i)=>(typeof require!=\"undefined\"?require:t)[i]}):e)(function(e){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+e+'\" is not supported')});var En=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),_n=(e,t)=>{for(var i in t)ie(e,i,{get:t[i],enumerable:!0})},te=(e,t,i,r)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let n of Cn(t))!In.call(e,n)&&n!==i&&ie(e,n,{get:()=>t[n],enumerable:!(r=bn(t,n))||r.enumerable});return e},Ee=(e,t,i)=>(te(e,t,\"default\"),i&&te(i,t,\"default\")),_e=(e,t,i)=>(i=e!=null?Tn(wn(e)):{},te(t||!e||!e.__esModule?ie(i,\"default\",{value:e,enumerable:!0}):i,e)),Pn=e=>te(ie({},\"__esModule\",{value:!0}),e);var Se=En((gr,Pe)=>{var Sn=_e(xn(\"vs/editor/editor.api\"));Pe.exports=Sn});var fr={};_n(fr,{CompletionAdapter:()=>X,DefinitionAdapter:()=>ke,DiagnosticsAdapter:()=>q,DocumentColorAdapter:()=>Z,DocumentFormattingEditProvider:()=>G,DocumentHighlightAdapter:()=>ye,DocumentLinkAdapter:()=>Ce,DocumentRangeFormattingEditProvider:()=>Q,DocumentSymbolAdapter:()=>$,FoldingRangeAdapter:()=>ee,HoverAdapter:()=>Y,ReferenceAdapter:()=>Te,RenameAdapter:()=>be,SelectionRangeAdapter:()=>ne,WorkerManager:()=>D,fromPosition:()=>L,fromRange:()=>we,setupMode:()=>cr,toRange:()=>C,toTextEdit:()=>j});var l={};Ee(l,_e(Se()));var An=2*60*1e3,D=class{_defaults;_idleCheckInterval;_lastUsedTime;_configChangeListener;_worker;_client;constructor(t){this._defaults=t,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),30*1e3),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){if(!this._worker)return;Date.now()-this._lastUsedTime>An&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||(this._worker=l.editor.createWebWorker({moduleId:\"vs/language/json/jsonWorker\",label:this._defaults.languageId,createData:{languageSettings:this._defaults.diagnosticsOptions,languageId:this._defaults.languageId,enableSchemaRequest:this._defaults.diagnosticsOptions.enableSchemaRequest}}),this._client=this._worker.getProxy()),this._client}getLanguageServiceWorker(...t){let i;return this._getClient().then(r=>{i=r}).then(r=>{if(this._worker)return this._worker.withSyncedResources(t)}).then(r=>i)}};var Ae;(function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647})(Ae||(Ae={}));var oe;(function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647})(oe||(oe={}));var _;(function(e){function t(r,n){return r===Number.MAX_VALUE&&(r=oe.MAX_VALUE),n===Number.MAX_VALUE&&(n=oe.MAX_VALUE),{line:r,character:n}}e.create=t;function i(r){var n=r;return s.objectLiteral(n)&&s.uinteger(n.line)&&s.uinteger(n.character)}e.is=i})(_||(_={}));var y;(function(e){function t(r,n,a,o){if(s.uinteger(r)&&s.uinteger(n)&&s.uinteger(a)&&s.uinteger(o))return{start:_.create(r,n),end:_.create(a,o)};if(_.is(r)&&_.is(n))return{start:r,end:n};throw new Error(\"Range#create called with invalid arguments[\"+r+\", \"+n+\", \"+a+\", \"+o+\"]\")}e.create=t;function i(r){var n=r;return s.objectLiteral(n)&&_.is(n.start)&&_.is(n.end)}e.is=i})(y||(y={}));var ge;(function(e){function t(r,n){return{uri:r,range:n}}e.create=t;function i(r){var n=r;return s.defined(n)&&y.is(n.range)&&(s.string(n.uri)||s.undefined(n.uri))}e.is=i})(ge||(ge={}));var Le;(function(e){function t(r,n,a,o){return{targetUri:r,targetRange:n,targetSelectionRange:a,originSelectionRange:o}}e.create=t;function i(r){var n=r;return s.defined(n)&&y.is(n.targetRange)&&s.string(n.targetUri)&&(y.is(n.targetSelectionRange)||s.undefined(n.targetSelectionRange))&&(y.is(n.originSelectionRange)||s.undefined(n.originSelectionRange))}e.is=i})(Le||(Le={}));var pe;(function(e){function t(r,n,a,o){return{red:r,green:n,blue:a,alpha:o}}e.create=t;function i(r){var n=r;return s.numberRange(n.red,0,1)&&s.numberRange(n.green,0,1)&&s.numberRange(n.blue,0,1)&&s.numberRange(n.alpha,0,1)}e.is=i})(pe||(pe={}));var Oe;(function(e){function t(r,n){return{range:r,color:n}}e.create=t;function i(r){var n=r;return y.is(n.range)&&pe.is(n.color)}e.is=i})(Oe||(Oe={}));var We;(function(e){function t(r,n,a){return{label:r,textEdit:n,additionalTextEdits:a}}e.create=t;function i(r){var n=r;return s.string(n.label)&&(s.undefined(n.textEdit)||A.is(n))&&(s.undefined(n.additionalTextEdits)||s.typedArray(n.additionalTextEdits,A.is))}e.is=i})(We||(We={}));var M;(function(e){e.Comment=\"comment\",e.Imports=\"imports\",e.Region=\"region\"})(M||(M={}));var Re;(function(e){function t(r,n,a,o,u){var c={startLine:r,endLine:n};return s.defined(a)&&(c.startCharacter=a),s.defined(o)&&(c.endCharacter=o),s.defined(u)&&(c.kind=u),c}e.create=t;function i(r){var n=r;return s.uinteger(n.startLine)&&s.uinteger(n.startLine)&&(s.undefined(n.startCharacter)||s.uinteger(n.startCharacter))&&(s.undefined(n.endCharacter)||s.uinteger(n.endCharacter))&&(s.undefined(n.kind)||s.string(n.kind))}e.is=i})(Re||(Re={}));var he;(function(e){function t(r,n){return{location:r,message:n}}e.create=t;function i(r){var n=r;return s.defined(n)&&ge.is(n.location)&&s.string(n.message)}e.is=i})(he||(he={}));var O;(function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4})(O||(O={}));var De;(function(e){e.Unnecessary=1,e.Deprecated=2})(De||(De={}));var Ne;(function(e){function t(i){var r=i;return r!=null&&s.string(r.href)}e.is=t})(Ne||(Ne={}));var se;(function(e){function t(r,n,a,o,u,c){var h={range:r,message:n};return s.defined(a)&&(h.severity=a),s.defined(o)&&(h.code=o),s.defined(u)&&(h.source=u),s.defined(c)&&(h.relatedInformation=c),h}e.create=t;function i(r){var n,a=r;return s.defined(a)&&y.is(a.range)&&s.string(a.message)&&(s.number(a.severity)||s.undefined(a.severity))&&(s.integer(a.code)||s.string(a.code)||s.undefined(a.code))&&(s.undefined(a.codeDescription)||s.string((n=a.codeDescription)===null||n===void 0?void 0:n.href))&&(s.string(a.source)||s.undefined(a.source))&&(s.undefined(a.relatedInformation)||s.typedArray(a.relatedInformation,he.is))}e.is=i})(se||(se={}));var K;(function(e){function t(r,n){for(var a=[],o=2;o<arguments.length;o++)a[o-2]=arguments[o];var u={title:r,command:n};return s.defined(a)&&a.length>0&&(u.arguments=a),u}e.create=t;function i(r){var n=r;return s.defined(n)&&s.string(n.title)&&s.string(n.command)}e.is=i})(K||(K={}));var A;(function(e){function t(a,o){return{range:a,newText:o}}e.replace=t;function i(a,o){return{range:{start:a,end:a},newText:o}}e.insert=i;function r(a){return{range:a,newText:\"\"}}e.del=r;function n(a){var o=a;return s.objectLiteral(o)&&s.string(o.newText)&&y.is(o.range)}e.is=n})(A||(A={}));var N;(function(e){function t(r,n,a){var o={label:r};return n!==void 0&&(o.needsConfirmation=n),a!==void 0&&(o.description=a),o}e.create=t;function i(r){var n=r;return n!==void 0&&s.objectLiteral(n)&&s.string(n.label)&&(s.boolean(n.needsConfirmation)||n.needsConfirmation===void 0)&&(s.string(n.description)||n.description===void 0)}e.is=i})(N||(N={}));var T;(function(e){function t(i){var r=i;return typeof r==\"string\"}e.is=t})(T||(T={}));var S;(function(e){function t(a,o,u){return{range:a,newText:o,annotationId:u}}e.replace=t;function i(a,o,u){return{range:{start:a,end:a},newText:o,annotationId:u}}e.insert=i;function r(a,o){return{range:a,newText:\"\",annotationId:o}}e.del=r;function n(a){var o=a;return A.is(o)&&(N.is(o.annotationId)||T.is(o.annotationId))}e.is=n})(S||(S={}));var ue;(function(e){function t(r,n){return{textDocument:r,edits:n}}e.create=t;function i(r){var n=r;return s.defined(n)&&ce.is(n.textDocument)&&Array.isArray(n.edits)}e.is=i})(ue||(ue={}));var H;(function(e){function t(r,n,a){var o={kind:\"create\",uri:r};return n!==void 0&&(n.overwrite!==void 0||n.ignoreIfExists!==void 0)&&(o.options=n),a!==void 0&&(o.annotationId=a),o}e.create=t;function i(r){var n=r;return n&&n.kind===\"create\"&&s.string(n.uri)&&(n.options===void 0||(n.options.overwrite===void 0||s.boolean(n.options.overwrite))&&(n.options.ignoreIfExists===void 0||s.boolean(n.options.ignoreIfExists)))&&(n.annotationId===void 0||T.is(n.annotationId))}e.is=i})(H||(H={}));var J;(function(e){function t(r,n,a,o){var u={kind:\"rename\",oldUri:r,newUri:n};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(u.options=a),o!==void 0&&(u.annotationId=o),u}e.create=t;function i(r){var n=r;return n&&n.kind===\"rename\"&&s.string(n.oldUri)&&s.string(n.newUri)&&(n.options===void 0||(n.options.overwrite===void 0||s.boolean(n.options.overwrite))&&(n.options.ignoreIfExists===void 0||s.boolean(n.options.ignoreIfExists)))&&(n.annotationId===void 0||T.is(n.annotationId))}e.is=i})(J||(J={}));var B;(function(e){function t(r,n,a){var o={kind:\"delete\",uri:r};return n!==void 0&&(n.recursive!==void 0||n.ignoreIfNotExists!==void 0)&&(o.options=n),a!==void 0&&(o.annotationId=a),o}e.create=t;function i(r){var n=r;return n&&n.kind===\"delete\"&&s.string(n.uri)&&(n.options===void 0||(n.options.recursive===void 0||s.boolean(n.options.recursive))&&(n.options.ignoreIfNotExists===void 0||s.boolean(n.options.ignoreIfNotExists)))&&(n.annotationId===void 0||T.is(n.annotationId))}e.is=i})(B||(B={}));var me;(function(e){function t(i){var r=i;return r&&(r.changes!==void 0||r.documentChanges!==void 0)&&(r.documentChanges===void 0||r.documentChanges.every(function(n){return s.string(n.kind)?H.is(n)||J.is(n)||B.is(n):ue.is(n)}))}e.is=t})(me||(me={}));var ae=function(){function e(t,i){this.edits=t,this.changeAnnotations=i}return e.prototype.insert=function(t,i,r){var n,a;if(r===void 0?n=A.insert(t,i):T.is(r)?(a=r,n=S.insert(t,i,r)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(r),n=S.insert(t,i,a)),this.edits.push(n),a!==void 0)return a},e.prototype.replace=function(t,i,r){var n,a;if(r===void 0?n=A.replace(t,i):T.is(r)?(a=r,n=S.replace(t,i,r)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(r),n=S.replace(t,i,a)),this.edits.push(n),a!==void 0)return a},e.prototype.delete=function(t,i){var r,n;if(i===void 0?r=A.del(t):T.is(i)?(n=i,r=S.del(t,i)):(this.assertChangeAnnotations(this.changeAnnotations),n=this.changeAnnotations.manage(i),r=S.del(t,n)),this.edits.push(r),n!==void 0)return n},e.prototype.add=function(t){this.edits.push(t)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e.prototype.assertChangeAnnotations=function(t){if(t===void 0)throw new Error(\"Text edit change is not configured to manage change annotations.\")},e}(),Me=function(){function e(t){this._annotations=t===void 0?Object.create(null):t,this._counter=0,this._size=0}return e.prototype.all=function(){return this._annotations},Object.defineProperty(e.prototype,\"size\",{get:function(){return this._size},enumerable:!1,configurable:!0}),e.prototype.manage=function(t,i){var r;if(T.is(t)?r=t:(r=this.nextId(),i=t),this._annotations[r]!==void 0)throw new Error(\"Id \"+r+\" is already in use.\");if(i===void 0)throw new Error(\"No annotation provided for id \"+r);return this._annotations[r]=i,this._size++,r},e.prototype.nextId=function(){return this._counter++,this._counter.toString()},e}(),kr=function(){function e(t){var i=this;this._textEditChanges=Object.create(null),t!==void 0?(this._workspaceEdit=t,t.documentChanges?(this._changeAnnotations=new Me(t.changeAnnotations),t.changeAnnotations=this._changeAnnotations.all(),t.documentChanges.forEach(function(r){if(ue.is(r)){var n=new ae(r.edits,i._changeAnnotations);i._textEditChanges[r.textDocument.uri]=n}})):t.changes&&Object.keys(t.changes).forEach(function(r){var n=new ae(t.changes[r]);i._textEditChanges[r]=n})):this._workspaceEdit={}}return Object.defineProperty(e.prototype,\"edit\",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),e.prototype.getTextEditChange=function(t){if(ce.is(t)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var i={uri:t.uri,version:t.version},r=this._textEditChanges[i.uri];if(!r){var n=[],a={textDocument:i,edits:n};this._workspaceEdit.documentChanges.push(a),r=new ae(n,this._changeAnnotations),this._textEditChanges[i.uri]=r}return r}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error(\"Workspace edit is not configured for normal text edit changes.\");var r=this._textEditChanges[t];if(!r){var n=[];this._workspaceEdit.changes[t]=n,r=new ae(n),this._textEditChanges[t]=r}return r}},e.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new Me,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},e.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},e.prototype.createFile=function(t,i,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var n;N.is(i)||T.is(i)?n=i:r=i;var a,o;if(n===void 0?a=H.create(t,r):(o=T.is(n)?n:this._changeAnnotations.manage(n),a=H.create(t,r,o)),this._workspaceEdit.documentChanges.push(a),o!==void 0)return o},e.prototype.renameFile=function(t,i,r,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var a;N.is(r)||T.is(r)?a=r:n=r;var o,u;if(a===void 0?o=J.create(t,i,n):(u=T.is(a)?a:this._changeAnnotations.manage(a),o=J.create(t,i,n,u)),this._workspaceEdit.documentChanges.push(o),u!==void 0)return u},e.prototype.deleteFile=function(t,i,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var n;N.is(i)||T.is(i)?n=i:r=i;var a,o;if(n===void 0?a=B.create(t,r):(o=T.is(n)?n:this._changeAnnotations.manage(n),a=B.create(t,r,o)),this._workspaceEdit.documentChanges.push(a),o!==void 0)return o},e}();var Fe;(function(e){function t(r){return{uri:r}}e.create=t;function i(r){var n=r;return s.defined(n)&&s.string(n.uri)}e.is=i})(Fe||(Fe={}));var je;(function(e){function t(r,n){return{uri:r,version:n}}e.create=t;function i(r){var n=r;return s.defined(n)&&s.string(n.uri)&&s.integer(n.version)}e.is=i})(je||(je={}));var ce;(function(e){function t(r,n){return{uri:r,version:n}}e.create=t;function i(r){var n=r;return s.defined(n)&&s.string(n.uri)&&(n.version===null||s.integer(n.version))}e.is=i})(ce||(ce={}));var Ue;(function(e){function t(r,n,a,o){return{uri:r,languageId:n,version:a,text:o}}e.create=t;function i(r){var n=r;return s.defined(n)&&s.string(n.uri)&&s.string(n.languageId)&&s.integer(n.version)&&s.string(n.text)}e.is=i})(Ue||(Ue={}));var z;(function(e){e.PlainText=\"plaintext\",e.Markdown=\"markdown\"})(z||(z={}));(function(e){function t(i){var r=i;return r===e.PlainText||r===e.Markdown}e.is=t})(z||(z={}));var ve;(function(e){function t(i){var r=i;return s.objectLiteral(i)&&z.is(r.kind)&&s.string(r.value)}e.is=t})(ve||(ve={}));var m;(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(m||(m={}));var le;(function(e){e.PlainText=1,e.Snippet=2})(le||(le={}));var Ve;(function(e){e.Deprecated=1})(Ve||(Ve={}));var Ke;(function(e){function t(r,n,a){return{newText:r,insert:n,replace:a}}e.create=t;function i(r){var n=r;return n&&s.string(n.newText)&&y.is(n.insert)&&y.is(n.replace)}e.is=i})(Ke||(Ke={}));var He;(function(e){e.asIs=1,e.adjustIndentation=2})(He||(He={}));var Je;(function(e){function t(i){return{label:i}}e.create=t})(Je||(Je={}));var Be;(function(e){function t(i,r){return{items:i||[],isIncomplete:!!r}}e.create=t})(Be||(Be={}));var fe;(function(e){function t(r){return r.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g,\"\\\\$&\")}e.fromPlainText=t;function i(r){var n=r;return s.string(n)||s.objectLiteral(n)&&s.string(n.language)&&s.string(n.value)}e.is=i})(fe||(fe={}));var ze;(function(e){function t(i){var r=i;return!!r&&s.objectLiteral(r)&&(ve.is(r.contents)||fe.is(r.contents)||s.typedArray(r.contents,fe.is))&&(i.range===void 0||y.is(i.range))}e.is=t})(ze||(ze={}));var qe;(function(e){function t(i,r){return r?{label:i,documentation:r}:{label:i}}e.create=t})(qe||(qe={}));var Xe;(function(e){function t(i,r){for(var n=[],a=2;a<arguments.length;a++)n[a-2]=arguments[a];var o={label:i};return s.defined(r)&&(o.documentation=r),s.defined(n)?o.parameters=n:o.parameters=[],o}e.create=t})(Xe||(Xe={}));var F;(function(e){e.Text=1,e.Read=2,e.Write=3})(F||(F={}));var Ye;(function(e){function t(i,r){var n={range:i};return s.number(r)&&(n.kind=r),n}e.create=t})(Ye||(Ye={}));var v;(function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26})(v||(v={}));var $e;(function(e){e.Deprecated=1})($e||($e={}));var Ge;(function(e){function t(i,r,n,a,o){var u={name:i,kind:r,location:{uri:a,range:n}};return o&&(u.containerName=o),u}e.create=t})(Ge||(Ge={}));var Qe;(function(e){function t(r,n,a,o,u,c){var h={name:r,detail:n,kind:a,range:o,selectionRange:u};return c!==void 0&&(h.children=c),h}e.create=t;function i(r){var n=r;return n&&s.string(n.name)&&s.number(n.kind)&&y.is(n.range)&&y.is(n.selectionRange)&&(n.detail===void 0||s.string(n.detail))&&(n.deprecated===void 0||s.boolean(n.deprecated))&&(n.children===void 0||Array.isArray(n.children))&&(n.tags===void 0||Array.isArray(n.tags))}e.is=i})(Qe||(Qe={}));var Ze;(function(e){e.Empty=\"\",e.QuickFix=\"quickfix\",e.Refactor=\"refactor\",e.RefactorExtract=\"refactor.extract\",e.RefactorInline=\"refactor.inline\",e.RefactorRewrite=\"refactor.rewrite\",e.Source=\"source\",e.SourceOrganizeImports=\"source.organizeImports\",e.SourceFixAll=\"source.fixAll\"})(Ze||(Ze={}));var en;(function(e){function t(r,n){var a={diagnostics:r};return n!=null&&(a.only=n),a}e.create=t;function i(r){var n=r;return s.defined(n)&&s.typedArray(n.diagnostics,se.is)&&(n.only===void 0||s.typedArray(n.only,s.string))}e.is=i})(en||(en={}));var nn;(function(e){function t(r,n,a){var o={title:r},u=!0;return typeof n==\"string\"?(u=!1,o.kind=n):K.is(n)?o.command=n:o.edit=n,u&&a!==void 0&&(o.kind=a),o}e.create=t;function i(r){var n=r;return n&&s.string(n.title)&&(n.diagnostics===void 0||s.typedArray(n.diagnostics,se.is))&&(n.kind===void 0||s.string(n.kind))&&(n.edit!==void 0||n.command!==void 0)&&(n.command===void 0||K.is(n.command))&&(n.isPreferred===void 0||s.boolean(n.isPreferred))&&(n.edit===void 0||me.is(n.edit))}e.is=i})(nn||(nn={}));var rn;(function(e){function t(r,n){var a={range:r};return s.defined(n)&&(a.data=n),a}e.create=t;function i(r){var n=r;return s.defined(n)&&y.is(n.range)&&(s.undefined(n.command)||K.is(n.command))}e.is=i})(rn||(rn={}));var tn;(function(e){function t(r,n){return{tabSize:r,insertSpaces:n}}e.create=t;function i(r){var n=r;return s.defined(n)&&s.uinteger(n.tabSize)&&s.boolean(n.insertSpaces)}e.is=i})(tn||(tn={}));var an;(function(e){function t(r,n,a){return{range:r,target:n,data:a}}e.create=t;function i(r){var n=r;return s.defined(n)&&y.is(n.range)&&(s.undefined(n.target)||s.string(n.target))}e.is=i})(an||(an={}));var on;(function(e){function t(r,n){return{range:r,parent:n}}e.create=t;function i(r){var n=r;return n!==void 0&&y.is(n.range)&&(n.parent===void 0||e.is(n.parent))}e.is=i})(on||(on={}));var sn;(function(e){function t(a,o,u,c){return new Ln(a,o,u,c)}e.create=t;function i(a){var o=a;return!!(s.defined(o)&&s.string(o.uri)&&(s.undefined(o.languageId)||s.string(o.languageId))&&s.uinteger(o.lineCount)&&s.func(o.getText)&&s.func(o.positionAt)&&s.func(o.offsetAt))}e.is=i;function r(a,o){for(var u=a.getText(),c=n(o,function(E,R){var V=E.range.start.line-R.range.start.line;return V===0?E.range.start.character-R.range.start.character:V}),h=u.length,p=c.length-1;p>=0;p--){var f=c[p],b=a.offsetAt(f.range.start),g=a.offsetAt(f.range.end);if(g<=h)u=u.substring(0,b)+f.newText+u.substring(g,u.length);else throw new Error(\"Overlapping edit\");h=b}return u}e.applyEdits=r;function n(a,o){if(a.length<=1)return a;var u=a.length/2|0,c=a.slice(0,u),h=a.slice(u);n(c,o),n(h,o);for(var p=0,f=0,b=0;p<c.length&&f<h.length;){var g=o(c[p],h[f]);g<=0?a[b++]=c[p++]:a[b++]=h[f++]}for(;p<c.length;)a[b++]=c[p++];for(;f<h.length;)a[b++]=h[f++];return a}})(sn||(sn={}));var Ln=function(){function e(t,i,r,n){this._uri=t,this._languageId=i,this._version=r,this._content=n,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,\"uri\",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"languageId\",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"version\",{get:function(){return this._version},enumerable:!1,configurable:!0}),e.prototype.getText=function(t){if(t){var i=this.offsetAt(t.start),r=this.offsetAt(t.end);return this._content.substring(i,r)}return this._content},e.prototype.update=function(t,i){this._content=t.text,this._version=i,this._lineOffsets=void 0},e.prototype.getLineOffsets=function(){if(this._lineOffsets===void 0){for(var t=[],i=this._content,r=!0,n=0;n<i.length;n++){r&&(t.push(n),r=!1);var a=i.charAt(n);r=a===\"\\r\"||a===`\n`,a===\"\\r\"&&n+1<i.length&&i.charAt(n+1)===`\n`&&n++}r&&i.length>0&&t.push(i.length),this._lineOffsets=t}return this._lineOffsets},e.prototype.positionAt=function(t){t=Math.max(Math.min(t,this._content.length),0);var i=this.getLineOffsets(),r=0,n=i.length;if(n===0)return _.create(0,t);for(;r<n;){var a=Math.floor((r+n)/2);i[a]>t?n=a:r=a+1}var o=r-1;return _.create(o,t-i[o])},e.prototype.offsetAt=function(t){var i=this.getLineOffsets();if(t.line>=i.length)return this._content.length;if(t.line<0)return 0;var r=i[t.line],n=t.line+1<i.length?i[t.line+1]:this._content.length;return Math.max(Math.min(r+t.character,n),r)},Object.defineProperty(e.prototype,\"lineCount\",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),e}(),s;(function(e){var t=Object.prototype.toString;function i(g){return typeof g<\"u\"}e.defined=i;function r(g){return typeof g>\"u\"}e.undefined=r;function n(g){return g===!0||g===!1}e.boolean=n;function a(g){return t.call(g)===\"[object String]\"}e.string=a;function o(g){return t.call(g)===\"[object Number]\"}e.number=o;function u(g,E,R){return t.call(g)===\"[object Number]\"&&E<=g&&g<=R}e.numberRange=u;function c(g){return t.call(g)===\"[object Number]\"&&-2147483648<=g&&g<=2147483647}e.integer=c;function h(g){return t.call(g)===\"[object Number]\"&&0<=g&&g<=2147483647}e.uinteger=h;function p(g){return t.call(g)===\"[object Function]\"}e.func=p;function f(g){return g!==null&&typeof g==\"object\"}e.objectLiteral=f;function b(g,E){return Array.isArray(g)&&g.every(E)}e.typedArray=b})(s||(s={}));var q=class{constructor(t,i,r){this._languageId=t;this._worker=i;let n=o=>{let u=o.getLanguageId();if(u!==this._languageId)return;let c;this._listener[o.uri.toString()]=o.onDidChangeContent(()=>{window.clearTimeout(c),c=window.setTimeout(()=>this._doValidate(o.uri,u),500)}),this._doValidate(o.uri,u)},a=o=>{l.editor.setModelMarkers(o,this._languageId,[]);let u=o.uri.toString(),c=this._listener[u];c&&(c.dispose(),delete this._listener[u])};this._disposables.push(l.editor.onDidCreateModel(n)),this._disposables.push(l.editor.onWillDisposeModel(a)),this._disposables.push(l.editor.onDidChangeModelLanguage(o=>{a(o.model),n(o.model)})),this._disposables.push(r(o=>{l.editor.getModels().forEach(u=>{u.getLanguageId()===this._languageId&&(a(u),n(u))})})),this._disposables.push({dispose:()=>{l.editor.getModels().forEach(a);for(let o in this._listener)this._listener[o].dispose()}}),l.editor.getModels().forEach(n)}_disposables=[];_listener=Object.create(null);dispose(){this._disposables.forEach(t=>t&&t.dispose()),this._disposables.length=0}_doValidate(t,i){this._worker(t).then(r=>r.doValidation(t.toString())).then(r=>{let n=r.map(o=>Rn(t,o)),a=l.editor.getModel(t);a&&a.getLanguageId()===i&&l.editor.setModelMarkers(a,i,n)}).then(void 0,r=>{console.error(r)})}};function Wn(e){switch(e){case O.Error:return l.MarkerSeverity.Error;case O.Warning:return l.MarkerSeverity.Warning;case O.Information:return l.MarkerSeverity.Info;case O.Hint:return l.MarkerSeverity.Hint;default:return l.MarkerSeverity.Info}}function Rn(e,t){let i=typeof t.code==\"number\"?String(t.code):t.code;return{severity:Wn(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:i,source:t.source}}var X=class{constructor(t,i){this._worker=t;this._triggerCharacters=i}get triggerCharacters(){return this._triggerCharacters}provideCompletionItems(t,i,r,n){let a=t.uri;return this._worker(a).then(o=>o.doComplete(a.toString(),L(i))).then(o=>{if(!o)return;let u=t.getWordUntilPosition(i),c=new l.Range(i.lineNumber,u.startColumn,i.lineNumber,u.endColumn),h=o.items.map(p=>{let f={label:p.label,insertText:p.insertText||p.label,sortText:p.sortText,filterText:p.filterText,documentation:p.documentation,detail:p.detail,command:Mn(p.command),range:c,kind:Nn(p.kind)};return p.textEdit&&(Dn(p.textEdit)?f.range={insert:C(p.textEdit.insert),replace:C(p.textEdit.replace)}:f.range=C(p.textEdit.range),f.insertText=p.textEdit.newText),p.additionalTextEdits&&(f.additionalTextEdits=p.additionalTextEdits.map(j)),p.insertTextFormat===le.Snippet&&(f.insertTextRules=l.languages.CompletionItemInsertTextRule.InsertAsSnippet),f});return{isIncomplete:o.isIncomplete,suggestions:h}})}};function L(e){if(!!e)return{character:e.column-1,line:e.lineNumber-1}}function we(e){if(!!e)return{start:{line:e.startLineNumber-1,character:e.startColumn-1},end:{line:e.endLineNumber-1,character:e.endColumn-1}}}function C(e){if(!!e)return new l.Range(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function Dn(e){return typeof e.insert<\"u\"&&typeof e.replace<\"u\"}function Nn(e){let t=l.languages.CompletionItemKind;switch(e){case m.Text:return t.Text;case m.Method:return t.Method;case m.Function:return t.Function;case m.Constructor:return t.Constructor;case m.Field:return t.Field;case m.Variable:return t.Variable;case m.Class:return t.Class;case m.Interface:return t.Interface;case m.Module:return t.Module;case m.Property:return t.Property;case m.Unit:return t.Unit;case m.Value:return t.Value;case m.Enum:return t.Enum;case m.Keyword:return t.Keyword;case m.Snippet:return t.Snippet;case m.Color:return t.Color;case m.File:return t.File;case m.Reference:return t.Reference}return t.Property}function j(e){if(!!e)return{range:C(e.range),text:e.newText}}function Mn(e){return e&&e.command===\"editor.action.triggerSuggest\"?{id:e.command,title:e.title,arguments:e.arguments}:void 0}var Y=class{constructor(t){this._worker=t}provideHover(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.doHover(n.toString(),L(i))).then(a=>{if(!!a)return{range:C(a.range),contents:jn(a.contents)}})}};function Fn(e){return e&&typeof e==\"object\"&&typeof e.kind==\"string\"}function un(e){return typeof e==\"string\"?{value:e}:Fn(e)?e.kind===\"plaintext\"?{value:e.value.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g,\"\\\\$&\")}:{value:e.value}:{value:\"```\"+e.language+`\n`+e.value+\"\\n```\\n\"}}function jn(e){if(!!e)return Array.isArray(e)?e.map(un):[un(e)]}var ye=class{constructor(t){this._worker=t}provideDocumentHighlights(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.findDocumentHighlights(n.toString(),L(i))).then(a=>{if(!!a)return a.map(o=>({range:C(o.range),kind:Un(o.kind)}))})}};function Un(e){switch(e){case F.Read:return l.languages.DocumentHighlightKind.Read;case F.Write:return l.languages.DocumentHighlightKind.Write;case F.Text:return l.languages.DocumentHighlightKind.Text}return l.languages.DocumentHighlightKind.Text}var ke=class{constructor(t){this._worker=t}provideDefinition(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.findDefinition(n.toString(),L(i))).then(a=>{if(!!a)return[cn(a)]})}};function cn(e){return{uri:l.Uri.parse(e.uri),range:C(e.range)}}var Te=class{constructor(t){this._worker=t}provideReferences(t,i,r,n){let a=t.uri;return this._worker(a).then(o=>o.findReferences(a.toString(),L(i))).then(o=>{if(!!o)return o.map(cn)})}},be=class{constructor(t){this._worker=t}provideRenameEdits(t,i,r,n){let a=t.uri;return this._worker(a).then(o=>o.doRename(a.toString(),L(i),r)).then(o=>Vn(o))}};function Vn(e){if(!e||!e.changes)return;let t=[];for(let i in e.changes){let r=l.Uri.parse(i);for(let n of e.changes[i])t.push({resource:r,versionId:void 0,textEdit:{range:C(n.range),text:n.newText}})}return{edits:t}}var $=class{constructor(t){this._worker=t}provideDocumentSymbols(t,i){let r=t.uri;return this._worker(r).then(n=>n.findDocumentSymbols(r.toString())).then(n=>{if(!!n)return n.map(a=>({name:a.name,detail:\"\",containerName:a.containerName,kind:Kn(a.kind),range:C(a.location.range),selectionRange:C(a.location.range),tags:[]}))})}};function Kn(e){let t=l.languages.SymbolKind;switch(e){case v.File:return t.Array;case v.Module:return t.Module;case v.Namespace:return t.Namespace;case v.Package:return t.Package;case v.Class:return t.Class;case v.Method:return t.Method;case v.Property:return t.Property;case v.Field:return t.Field;case v.Constructor:return t.Constructor;case v.Enum:return t.Enum;case v.Interface:return t.Interface;case v.Function:return t.Function;case v.Variable:return t.Variable;case v.Constant:return t.Constant;case v.String:return t.String;case v.Number:return t.Number;case v.Boolean:return t.Boolean;case v.Array:return t.Array}return t.Function}var Ce=class{constructor(t){this._worker=t}provideLinks(t,i){let r=t.uri;return this._worker(r).then(n=>n.findDocumentLinks(r.toString())).then(n=>{if(!!n)return{links:n.map(a=>({range:C(a.range),url:a.target}))}})}},G=class{constructor(t){this._worker=t}provideDocumentFormattingEdits(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.format(n.toString(),null,ln(i)).then(o=>{if(!(!o||o.length===0))return o.map(j)}))}},Q=class{constructor(t){this._worker=t}canFormatMultipleRanges=!1;provideDocumentRangeFormattingEdits(t,i,r,n){let a=t.uri;return this._worker(a).then(o=>o.format(a.toString(),we(i),ln(r)).then(u=>{if(!(!u||u.length===0))return u.map(j)}))}};function ln(e){return{tabSize:e.tabSize,insertSpaces:e.insertSpaces}}var Z=class{constructor(t){this._worker=t}provideDocumentColors(t,i){let r=t.uri;return this._worker(r).then(n=>n.findDocumentColors(r.toString())).then(n=>{if(!!n)return n.map(a=>({color:a.color,range:C(a.range)}))})}provideColorPresentations(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.getColorPresentations(n.toString(),i.color,we(i.range))).then(a=>{if(!!a)return a.map(o=>{let u={label:o.label};return o.textEdit&&(u.textEdit=j(o.textEdit)),o.additionalTextEdits&&(u.additionalTextEdits=o.additionalTextEdits.map(j)),u})})}},ee=class{constructor(t){this._worker=t}provideFoldingRanges(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.getFoldingRanges(n.toString(),i)).then(a=>{if(!!a)return a.map(o=>{let u={start:o.startLine+1,end:o.endLine+1};return typeof o.kind<\"u\"&&(u.kind=Hn(o.kind)),u})})}};function Hn(e){switch(e){case M.Comment:return l.languages.FoldingRangeKind.Comment;case M.Imports:return l.languages.FoldingRangeKind.Imports;case M.Region:return l.languages.FoldingRangeKind.Region}}var ne=class{constructor(t){this._worker=t}provideSelectionRanges(t,i,r){let n=t.uri;return this._worker(n).then(a=>a.getSelectionRanges(n.toString(),i.map(L))).then(a=>{if(!!a)return a.map(o=>{let u=[];for(;o;)u.push({range:C(o.range)}),o=o.parent;return u})})}};function de(e,t){t===void 0&&(t=!1);var i=e.length,r=0,n=\"\",a=0,o=16,u=0,c=0,h=0,p=0,f=0;function b(d,w){for(var x=0,I=0;x<d||!w;){var k=e.charCodeAt(r);if(k>=48&&k<=57)I=I*16+k-48;else if(k>=65&&k<=70)I=I*16+k-65+10;else if(k>=97&&k<=102)I=I*16+k-97+10;else break;r++,x++}return x<d&&(I=-1),I}function g(d){r=d,n=\"\",a=0,o=16,f=0}function E(){var d=r;if(e.charCodeAt(r)===48)r++;else for(r++;r<e.length&&U(e.charCodeAt(r));)r++;if(r<e.length&&e.charCodeAt(r)===46)if(r++,r<e.length&&U(e.charCodeAt(r)))for(r++;r<e.length&&U(e.charCodeAt(r));)r++;else return f=3,e.substring(d,r);var w=r;if(r<e.length&&(e.charCodeAt(r)===69||e.charCodeAt(r)===101))if(r++,(r<e.length&&e.charCodeAt(r)===43||e.charCodeAt(r)===45)&&r++,r<e.length&&U(e.charCodeAt(r))){for(r++;r<e.length&&U(e.charCodeAt(r));)r++;w=r}else f=3;return e.substring(d,w)}function R(){for(var d=\"\",w=r;;){if(r>=i){d+=e.substring(w,r),f=2;break}var x=e.charCodeAt(r);if(x===34){d+=e.substring(w,r),r++;break}if(x===92){if(d+=e.substring(w,r),r++,r>=i){f=2;break}var I=e.charCodeAt(r++);switch(I){case 34:d+='\"';break;case 92:d+=\"\\\\\";break;case 47:d+=\"/\";break;case 98:d+=\"\\b\";break;case 102:d+=\"\\f\";break;case 110:d+=`\n`;break;case 114:d+=\"\\r\";break;case 116:d+=\"\t\";break;case 117:var k=b(4,!0);k>=0?d+=String.fromCharCode(k):f=4;break;default:f=5}w=r;continue}if(x>=0&&x<=31)if(re(x)){d+=e.substring(w,r),f=2;break}else f=6;r++}return d}function V(){if(n=\"\",f=0,a=r,c=u,p=h,r>=i)return a=i,o=17;var d=e.charCodeAt(r);if(Ie(d)){do r++,n+=String.fromCharCode(d),d=e.charCodeAt(r);while(Ie(d));return o=15}if(re(d))return r++,n+=String.fromCharCode(d),d===13&&e.charCodeAt(r)===10&&(r++,n+=`\n`),u++,h=r,o=14;switch(d){case 123:return r++,o=1;case 125:return r++,o=2;case 91:return r++,o=3;case 93:return r++,o=4;case 58:return r++,o=6;case 44:return r++,o=5;case 34:return r++,n=R(),o=10;case 47:var w=r-1;if(e.charCodeAt(r+1)===47){for(r+=2;r<i&&!re(e.charCodeAt(r));)r++;return n=e.substring(w,r),o=12}if(e.charCodeAt(r+1)===42){r+=2;for(var x=i-1,I=!1;r<x;){var k=e.charCodeAt(r);if(k===42&&e.charCodeAt(r+1)===47){r+=2,I=!0;break}r++,re(k)&&(k===13&&e.charCodeAt(r)===10&&r++,u++,h=r)}return I||(r++,f=1),n=e.substring(w,r),o=13}return n+=String.fromCharCode(d),r++,o=16;case 45:if(n+=String.fromCharCode(d),r++,r===i||!U(e.charCodeAt(r)))return o=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n+=E(),o=11;default:for(;r<i&&yn(d);)r++,d=e.charCodeAt(r);if(a!==r){switch(n=e.substring(a,r),n){case\"true\":return o=8;case\"false\":return o=9;case\"null\":return o=7}return o=16}return n+=String.fromCharCode(d),r++,o=16}}function yn(d){if(Ie(d)||re(d))return!1;switch(d){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}function kn(){var d;do d=V();while(d>=12&&d<=15);return d}return{setPosition:g,getPosition:function(){return r},scan:t?kn:V,getToken:function(){return o},getTokenValue:function(){return n},getTokenOffset:function(){return a},getTokenLength:function(){return r-a},getTokenStartLine:function(){return c},getTokenStartCharacter:function(){return a-p},getTokenError:function(){return f}}}function Ie(e){return e===32||e===9||e===11||e===12||e===160||e===5760||e>=8192&&e<=8203||e===8239||e===8287||e===12288||e===65279}function re(e){return e===10||e===13||e===8232||e===8233}function U(e){return e>=48&&e<=57}var fn;(function(e){e.DEFAULT={allowTrailingComma:!1}})(fn||(fn={}));var dn=de;function hn(e){return{getInitialState:()=>new W(null,null,!1,null),tokenize:(t,i)=>ur(e,t,i)}}var gn=\"delimiter.bracket.json\",pn=\"delimiter.array.json\",Zn=\"delimiter.colon.json\",er=\"delimiter.comma.json\",nr=\"keyword.json\",rr=\"keyword.json\",tr=\"string.value.json\",ir=\"number.json\",ar=\"string.key.json\",or=\"comment.block.json\",sr=\"comment.line.json\";var P=class{constructor(t,i){this.parent=t;this.type=i}static pop(t){return t?t.parent:null}static push(t,i){return new P(t,i)}static equals(t,i){if(!t&&!i)return!0;if(!t||!i)return!1;for(;t&&i;){if(t===i)return!0;if(t.type!==i.type)return!1;t=t.parent,i=i.parent}return!0}},W=class{_state;scanError;lastWasColon;parents;constructor(t,i,r,n){this._state=t,this.scanError=i,this.lastWasColon=r,this.parents=n}clone(){return new W(this._state,this.scanError,this.lastWasColon,this.parents)}equals(t){return t===this?!0:!t||!(t instanceof W)?!1:this.scanError===t.scanError&&this.lastWasColon===t.lastWasColon&&P.equals(this.parents,t.parents)}getStateData(){return this._state}setStateData(t){this._state=t}};function ur(e,t,i,r=0){let n=0,a=!1;switch(i.scanError){case 2:t='\"'+t,n=1;break;case 1:t=\"/*\"+t,n=2;break}let o=dn(t),u=i.lastWasColon,c=i.parents,h={tokens:[],endState:i.clone()};for(;;){let p=r+o.getPosition(),f=\"\",b=o.scan();if(b===17)break;if(p===r+o.getPosition())throw new Error(\"Scanner did not advance, next 3 characters are: \"+t.substr(o.getPosition(),3));switch(a&&(p-=n),a=n>0,b){case 1:c=P.push(c,0),f=gn,u=!1;break;case 2:c=P.pop(c),f=gn,u=!1;break;case 3:c=P.push(c,1),f=pn,u=!1;break;case 4:c=P.pop(c),f=pn,u=!1;break;case 6:f=Zn,u=!0;break;case 5:f=er,u=!1;break;case 8:case 9:f=nr,u=!1;break;case 7:f=rr,u=!1;break;case 10:let E=(c?c.type:0)===1;f=u||E?tr:ar,u=!1;break;case 11:f=ir,u=!1;break}if(e)switch(b){case 12:f=sr;break;case 13:f=or;break}h.endState=new W(i.getStateData(),o.getTokenError(),u,c),h.tokens.push({startIndex:p,scopes:f})}return h}var xe=class extends q{constructor(t,i,r){super(t,i,r.onDidChange),this._disposables.push(l.editor.onWillDisposeModel(n=>{this._resetSchema(n.uri)})),this._disposables.push(l.editor.onDidChangeModelLanguage(n=>{this._resetSchema(n.model.uri)}))}_resetSchema(t){this._worker().then(i=>{i.resetSchema(t.toString())})}};function cr(e){let t=[],i=[],r=new D(e);t.push(r);let n=(...u)=>r.getLanguageServiceWorker(...u);function a(){let{languageId:u,modeConfiguration:c}=e;vn(i),c.documentFormattingEdits&&i.push(l.languages.registerDocumentFormattingEditProvider(u,new G(n))),c.documentRangeFormattingEdits&&i.push(l.languages.registerDocumentRangeFormattingEditProvider(u,new Q(n))),c.completionItems&&i.push(l.languages.registerCompletionItemProvider(u,new X(n,[\" \",\":\",'\"']))),c.hovers&&i.push(l.languages.registerHoverProvider(u,new Y(n))),c.documentSymbols&&i.push(l.languages.registerDocumentSymbolProvider(u,new $(n))),c.tokens&&i.push(l.languages.setTokensProvider(u,hn(!0))),c.colors&&i.push(l.languages.registerColorProvider(u,new Z(n))),c.foldingRanges&&i.push(l.languages.registerFoldingRangeProvider(u,new ee(n))),c.diagnostics&&i.push(new xe(u,n,e)),c.selectionRanges&&i.push(l.languages.registerSelectionRangeProvider(u,new ne(n)))}a(),t.push(l.languages.setLanguageConfiguration(e.languageId,lr));let o=e.modeConfiguration;return e.onDidChange(u=>{u.modeConfiguration!==o&&(o=u.modeConfiguration,a())}),t.push(mn(i)),mn(t)}function mn(e){return{dispose:()=>vn(e)}}function vn(e){for(;e.length;)e.pop().dispose()}var lr={wordPattern:/(-?\\d*\\.\\d\\w*)|([^\\[\\{\\]\\}\\:\\\"\\,\\s]+)/g,comments:{lineComment:\"//\",blockComment:[\"/*\",\"*/\"]},brackets:[[\"{\",\"}\"],[\"[\",\"]\"]],autoClosingPairs:[{open:\"{\",close:\"}\",notIn:[\"string\"]},{open:\"[\",close:\"]\",notIn:[\"string\"]},{open:'\"',close:'\"',notIn:[\"string\"]}]};return Pn(fr);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/language/json/jsonWorker.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/language/json/jsonWorker\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var lt=Object.defineProperty;var Hr=Object.getOwnPropertyDescriptor;var Gr=Object.getOwnPropertyNames;var Xr=Object.prototype.hasOwnProperty;var Zr=(t,r)=>{for(var i in r)lt(t,i,{get:r[i],enumerable:!0})},Qr=(t,r,i,e)=>{if(r&&typeof r==\"object\"||typeof r==\"function\")for(let n of Gr(r))!Xr.call(t,n)&&n!==i&&lt(t,n,{get:()=>r[n],enumerable:!(e=Hr(r,n))||e.enumerable});return t};var Yr=t=>Qr(lt({},\"__esModule\",{value:!0}),t);var _n={};Zr(_n,{JSONWorker:()=>st,create:()=>Bn});function Pe(t,r){r===void 0&&(r=!1);var i=t.length,e=0,n=\"\",a=0,s=16,o=0,f=0,l=0,u=0,c=0;function h(v,O){for(var E=0,j=0;E<v||!O;){var A=t.charCodeAt(e);if(A>=48&&A<=57)j=j*16+A-48;else if(A>=65&&A<=70)j=j*16+A-65+10;else if(A>=97&&A<=102)j=j*16+A-97+10;else break;e++,E++}return E<v&&(j=-1),j}function g(v){e=v,n=\"\",a=0,s=16,c=0}function m(){var v=e;if(t.charCodeAt(e)===48)e++;else for(e++;e<t.length&&Ce(t.charCodeAt(e));)e++;if(e<t.length&&t.charCodeAt(e)===46)if(e++,e<t.length&&Ce(t.charCodeAt(e)))for(e++;e<t.length&&Ce(t.charCodeAt(e));)e++;else return c=3,t.substring(v,e);var O=e;if(e<t.length&&(t.charCodeAt(e)===69||t.charCodeAt(e)===101))if(e++,(e<t.length&&t.charCodeAt(e)===43||t.charCodeAt(e)===45)&&e++,e<t.length&&Ce(t.charCodeAt(e))){for(e++;e<t.length&&Ce(t.charCodeAt(e));)e++;O=e}else c=3;return t.substring(v,O)}function p(){for(var v=\"\",O=e;;){if(e>=i){v+=t.substring(O,e),c=2;break}var E=t.charCodeAt(e);if(E===34){v+=t.substring(O,e),e++;break}if(E===92){if(v+=t.substring(O,e),e++,e>=i){c=2;break}var j=t.charCodeAt(e++);switch(j){case 34:v+='\"';break;case 92:v+=\"\\\\\";break;case 47:v+=\"/\";break;case 98:v+=\"\\b\";break;case 102:v+=\"\\f\";break;case 110:v+=`\n`;break;case 114:v+=\"\\r\";break;case 116:v+=\"\t\";break;case 117:var A=h(4,!0);A>=0?v+=String.fromCharCode(A):c=4;break;default:c=5}O=e;continue}if(E>=0&&E<=31)if(Le(E)){v+=t.substring(O,e),c=2;break}else c=6;e++}return v}function d(){if(n=\"\",c=0,a=e,f=o,u=l,e>=i)return a=i,s=17;var v=t.charCodeAt(e);if(ht(v)){do e++,n+=String.fromCharCode(v),v=t.charCodeAt(e);while(ht(v));return s=15}if(Le(v))return e++,n+=String.fromCharCode(v),v===13&&t.charCodeAt(e)===10&&(e++,n+=`\n`),o++,l=e,s=14;switch(v){case 123:return e++,s=1;case 125:return e++,s=2;case 91:return e++,s=3;case 93:return e++,s=4;case 58:return e++,s=6;case 44:return e++,s=5;case 34:return e++,n=p(),s=10;case 47:var O=e-1;if(t.charCodeAt(e+1)===47){for(e+=2;e<i&&!Le(t.charCodeAt(e));)e++;return n=t.substring(O,e),s=12}if(t.charCodeAt(e+1)===42){e+=2;for(var E=i-1,j=!1;e<E;){var A=t.charCodeAt(e);if(A===42&&t.charCodeAt(e+1)===47){e+=2,j=!0;break}e++,Le(A)&&(A===13&&t.charCodeAt(e)===10&&e++,o++,l=e)}return j||(e++,c=1),n=t.substring(O,e),s=13}return n+=String.fromCharCode(v),e++,s=16;case 45:if(n+=String.fromCharCode(v),e++,e===i||!Ce(t.charCodeAt(e)))return s=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n+=m(),s=11;default:for(;e<i&&b(v);)e++,v=t.charCodeAt(e);if(a!==e){switch(n=t.substring(a,e),n){case\"true\":return s=8;case\"false\":return s=9;case\"null\":return s=7}return s=16}return n+=String.fromCharCode(v),e++,s=16}}function b(v){if(ht(v)||Le(v))return!1;switch(v){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}function y(){var v;do v=d();while(v>=12&&v<=15);return v}return{setPosition:g,getPosition:function(){return e},scan:r?y:d,getToken:function(){return s},getTokenValue:function(){return n},getTokenOffset:function(){return a},getTokenLength:function(){return e-a},getTokenStartLine:function(){return f},getTokenStartCharacter:function(){return a-u},getTokenError:function(){return c}}}function ht(t){return t===32||t===9||t===11||t===12||t===160||t===5760||t>=8192&&t<=8203||t===8239||t===8287||t===12288||t===65279}function Le(t){return t===10||t===13||t===8232||t===8233}function Ce(t){return t>=48&&t<=57}function pt(t,r,i){var e,n,a,s,o;if(r){for(s=r.offset,o=s+r.length,a=s;a>0&&!gt(t,a-1);)a--;for(var f=o;f<t.length&&!gt(t,f);)f++;n=t.substring(a,f),e=en(n,i)}else n=t,e=0,a=0,s=0,o=t.length;var l=tn(i,t),u=!1,c=0,h;i.insertSpaces?h=dt(\" \",i.tabSize||4):h=\"\t\";var g=Pe(n,!1),m=!1;function p(){return l+dt(h,e+c)}function d(){var N=g.scan();for(u=!1;N===15||N===14;)u=u||N===14,N=g.scan();return m=N===16||g.getTokenError()!==0,N}var b=[];function y(N,V,R){!m&&(!r||V<o&&R>s)&&t.substring(V,R)!==N&&b.push({offset:V,length:R-V,content:N})}var v=d();if(v!==17){var O=g.getTokenOffset()+a,E=dt(h,e);y(E,a,O)}for(;v!==17;){for(var j=g.getTokenOffset()+g.getTokenLength()+a,A=d(),P=\"\",w=!1;!u&&(A===12||A===13);){var C=g.getTokenOffset()+a;y(\" \",j,C),j=g.getTokenOffset()+g.getTokenLength()+a,w=A===12,P=w?p():\"\",A=d()}if(A===2)v!==1&&(c--,P=p());else if(A===4)v!==3&&(c--,P=p());else{switch(v){case 3:case 1:c++,P=p();break;case 5:case 12:P=p();break;case 13:u?P=p():w||(P=\" \");break;case 6:w||(P=\" \");break;case 10:if(A===6){w||(P=\"\");break}case 7:case 8:case 9:case 11:case 2:case 4:A===12||A===13?w||(P=\" \"):A!==5&&A!==17&&(m=!0);break;case 16:m=!0;break}u&&(A===12||A===13)&&(P=p())}A===17&&(P=i.insertFinalNewline?l:\"\");var L=g.getTokenOffset()+a;y(P,j,L),v=A}return b}function dt(t,r){for(var i=\"\",e=0;e<r;e++)i+=t;return i}function en(t,r){for(var i=0,e=0,n=r.tabSize||4;i<t.length;){var a=t.charAt(i);if(a===\" \")e++;else if(a===\"\t\")e+=n;else break;i++}return Math.floor(e/n)}function tn(t,r){for(var i=0;i<r.length;i++){var e=r.charAt(i);if(e===\"\\r\")return i+1<r.length&&r.charAt(i+1)===`\n`?`\\r\n`:\"\\r\";if(e===`\n`)return`\n`}return t&&t.eol||`\n`}function gt(t,r){return`\\r\n`.indexOf(t.charAt(r))!==-1}var Be;(function(t){t.DEFAULT={allowTrailingComma:!1}})(Be||(Be={}));function Xt(t,r,i){r===void 0&&(r=[]),i===void 0&&(i=Be.DEFAULT);var e=null,n=[],a=[];function s(f){Array.isArray(n)?n.push(f):e!==null&&(n[e]=f)}var o={onObjectBegin:function(){var f={};s(f),a.push(n),n=f,e=null},onObjectProperty:function(f){e=f},onObjectEnd:function(){n=a.pop()},onArrayBegin:function(){var f=[];s(f),a.push(n),n=f,e=null},onArrayEnd:function(){n=a.pop()},onLiteralValue:s,onError:function(f,l,u){r.push({error:f,offset:l,length:u})}};return Zt(t,o,i),n[0]}function mt(t){if(!t.parent||!t.parent.children)return[];var r=mt(t.parent);if(t.parent.type===\"property\"){var i=t.parent.children[0].value;r.push(i)}else if(t.parent.type===\"array\"){var e=t.parent.children.indexOf(t);e!==-1&&r.push(e)}return r}function _e(t){switch(t.type){case\"array\":return t.children.map(_e);case\"object\":for(var r=Object.create(null),i=0,e=t.children;i<e.length;i++){var n=e[i],a=n.children[1];a&&(r[n.children[0].value]=_e(a))}return r;case\"null\":case\"string\":case\"number\":case\"boolean\":return t.value;default:return}}function nn(t,r,i){return i===void 0&&(i=!1),r>=t.offset&&r<t.offset+t.length||i&&r===t.offset+t.length}function vt(t,r,i){if(i===void 0&&(i=!1),nn(t,r,i)){var e=t.children;if(Array.isArray(e))for(var n=0;n<e.length&&e[n].offset<=r;n++){var a=vt(e[n],r,i);if(a)return a}return t}}function Zt(t,r,i){i===void 0&&(i=Be.DEFAULT);var e=Pe(t,!1);function n(w){return w?function(){return w(e.getTokenOffset(),e.getTokenLength(),e.getTokenStartLine(),e.getTokenStartCharacter())}:function(){return!0}}function a(w){return w?function(C){return w(C,e.getTokenOffset(),e.getTokenLength(),e.getTokenStartLine(),e.getTokenStartCharacter())}:function(){return!0}}var s=n(r.onObjectBegin),o=a(r.onObjectProperty),f=n(r.onObjectEnd),l=n(r.onArrayBegin),u=n(r.onArrayEnd),c=a(r.onLiteralValue),h=a(r.onSeparator),g=n(r.onComment),m=a(r.onError),p=i&&i.disallowComments,d=i&&i.allowTrailingComma;function b(){for(;;){var w=e.scan();switch(e.getTokenError()){case 4:y(14);break;case 5:y(15);break;case 3:y(13);break;case 1:p||y(11);break;case 2:y(12);break;case 6:y(16);break}switch(w){case 12:case 13:p?y(10):g();break;case 16:y(1);break;case 15:case 14:break;default:return w}}}function y(w,C,L){if(C===void 0&&(C=[]),L===void 0&&(L=[]),m(w),C.length+L.length>0)for(var N=e.getToken();N!==17;){if(C.indexOf(N)!==-1){b();break}else if(L.indexOf(N)!==-1)break;N=b()}}function v(w){var C=e.getTokenValue();return w?c(C):o(C),b(),!0}function O(){switch(e.getToken()){case 11:var w=e.getTokenValue(),C=Number(w);isNaN(C)&&(y(2),C=0),c(C);break;case 7:c(null);break;case 8:c(!0);break;case 9:c(!1);break;default:return!1}return b(),!0}function E(){return e.getToken()!==10?(y(3,[],[2,5]),!1):(v(!1),e.getToken()===6?(h(\":\"),b(),P()||y(4,[],[2,5])):y(5,[],[2,5]),!0)}function j(){s(),b();for(var w=!1;e.getToken()!==2&&e.getToken()!==17;){if(e.getToken()===5){if(w||y(4,[],[]),h(\",\"),b(),e.getToken()===2&&d)break}else w&&y(6,[],[]);E()||y(4,[],[2,5]),w=!0}return f(),e.getToken()!==2?y(7,[2],[]):b(),!0}function A(){l(),b();for(var w=!1;e.getToken()!==4&&e.getToken()!==17;){if(e.getToken()===5){if(w||y(4,[],[]),h(\",\"),b(),e.getToken()===4&&d)break}else w&&y(6,[],[]);P()||y(4,[],[4,5]),w=!0}return u(),e.getToken()!==4?y(8,[4],[]):b(),!0}function P(){switch(e.getToken()){case 3:return A();case 1:return j();case 10:return v(!0);default:return O()}}return b(),e.getToken()===17?i.allowEmptyContent?!0:(y(4,[],[]),!1):P()?(e.getToken()!==17&&y(9,[],[]),!0):(y(4,[],[]),!1)}var le=Pe;var Qt=Xt;var Yt=vt,Kt=mt,er=_e;function tr(t,r,i){return pt(t,r,i)}function Ie(t,r){if(t===r)return!0;if(t==null||r===null||r===void 0||typeof t!=typeof r||typeof t!=\"object\"||Array.isArray(t)!==Array.isArray(r))return!1;var i,e;if(Array.isArray(t)){if(t.length!==r.length)return!1;for(i=0;i<t.length;i++)if(!Ie(t[i],r[i]))return!1}else{var n=[];for(e in t)n.push(e);n.sort();var a=[];for(e in r)a.push(e);if(a.sort(),!Ie(n,a))return!1;for(i=0;i<n.length;i++)if(!Ie(t[n[i]],r[n[i]]))return!1}return!0}function ee(t){return typeof t==\"number\"}function se(t){return typeof t<\"u\"}function ie(t){return typeof t==\"boolean\"}function rr(t){return typeof t==\"string\"}function un(t,r){if(t.length<r.length)return!1;for(var i=0;i<r.length;i++)if(t[i]!==r[i])return!1;return!0}function pe(t,r){var i=t.length-r.length;return i>0?t.lastIndexOf(r)===i:i===0?t===r:!1}function xe(t){var r=\"\";un(t,\"(?i)\")&&(t=t.substring(4),r=\"i\");try{return new RegExp(t,r+\"u\")}catch{try{return new RegExp(t,r)}catch{return}}}var ir;(function(t){t.MIN_VALUE=-2147483648,t.MAX_VALUE=2147483647})(ir||(ir={}));var Ge;(function(t){t.MIN_VALUE=0,t.MAX_VALUE=2147483647})(Ge||(Ge={}));var re;(function(t){function r(e,n){return e===Number.MAX_VALUE&&(e=Ge.MAX_VALUE),n===Number.MAX_VALUE&&(n=Ge.MAX_VALUE),{line:e,character:n}}t.create=r;function i(e){var n=e;return x.objectLiteral(n)&&x.uinteger(n.line)&&x.uinteger(n.character)}t.is=i})(re||(re={}));var U;(function(t){function r(e,n,a,s){if(x.uinteger(e)&&x.uinteger(n)&&x.uinteger(a)&&x.uinteger(s))return{start:re.create(e,n),end:re.create(a,s)};if(re.is(e)&&re.is(n))return{start:e,end:n};throw new Error(\"Range#create called with invalid arguments[\"+e+\", \"+n+\", \"+a+\", \"+s+\"]\")}t.create=r;function i(e){var n=e;return x.objectLiteral(n)&&re.is(n.start)&&re.is(n.end)}t.is=i})(U||(U={}));var Se;(function(t){function r(e,n){return{uri:e,range:n}}t.create=r;function i(e){var n=e;return x.defined(n)&&U.is(n.range)&&(x.string(n.uri)||x.undefined(n.uri))}t.is=i})(Se||(Se={}));var ar;(function(t){function r(e,n,a,s){return{targetUri:e,targetRange:n,targetSelectionRange:a,originSelectionRange:s}}t.create=r;function i(e){var n=e;return x.defined(n)&&U.is(n.targetRange)&&x.string(n.targetUri)&&(U.is(n.targetSelectionRange)||x.undefined(n.targetSelectionRange))&&(U.is(n.originSelectionRange)||x.undefined(n.originSelectionRange))}t.is=i})(ar||(ar={}));var Xe;(function(t){function r(e,n,a,s){return{red:e,green:n,blue:a,alpha:s}}t.create=r;function i(e){var n=e;return x.numberRange(n.red,0,1)&&x.numberRange(n.green,0,1)&&x.numberRange(n.blue,0,1)&&x.numberRange(n.alpha,0,1)}t.is=i})(Xe||(Xe={}));var bt;(function(t){function r(e,n){return{range:e,color:n}}t.create=r;function i(e){var n=e;return U.is(n.range)&&Xe.is(n.color)}t.is=i})(bt||(bt={}));var xt;(function(t){function r(e,n,a){return{label:e,textEdit:n,additionalTextEdits:a}}t.create=r;function i(e){var n=e;return x.string(n.label)&&(x.undefined(n.textEdit)||Y.is(n))&&(x.undefined(n.additionalTextEdits)||x.typedArray(n.additionalTextEdits,Y.is))}t.is=i})(xt||(xt={}));var Ae;(function(t){t.Comment=\"comment\",t.Imports=\"imports\",t.Region=\"region\"})(Ae||(Ae={}));var St;(function(t){function r(e,n,a,s,o){var f={startLine:e,endLine:n};return x.defined(a)&&(f.startCharacter=a),x.defined(s)&&(f.endCharacter=s),x.defined(o)&&(f.kind=o),f}t.create=r;function i(e){var n=e;return x.uinteger(n.startLine)&&x.uinteger(n.startLine)&&(x.undefined(n.startCharacter)||x.uinteger(n.startCharacter))&&(x.undefined(n.endCharacter)||x.uinteger(n.endCharacter))&&(x.undefined(n.kind)||x.string(n.kind))}t.is=i})(St||(St={}));var At;(function(t){function r(e,n){return{location:e,message:n}}t.create=r;function i(e){var n=e;return x.defined(n)&&Se.is(n.location)&&x.string(n.message)}t.is=i})(At||(At={}));var Z;(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(Z||(Z={}));var or;(function(t){t.Unnecessary=1,t.Deprecated=2})(or||(or={}));var sr;(function(t){function r(i){var e=i;return e!=null&&x.string(e.href)}t.is=r})(sr||(sr={}));var ae;(function(t){function r(e,n,a,s,o,f){var l={range:e,message:n};return x.defined(a)&&(l.severity=a),x.defined(s)&&(l.code=s),x.defined(o)&&(l.source=o),x.defined(f)&&(l.relatedInformation=f),l}t.create=r;function i(e){var n,a=e;return x.defined(a)&&U.is(a.range)&&x.string(a.message)&&(x.number(a.severity)||x.undefined(a.severity))&&(x.integer(a.code)||x.string(a.code)||x.undefined(a.code))&&(x.undefined(a.codeDescription)||x.string((n=a.codeDescription)===null||n===void 0?void 0:n.href))&&(x.string(a.source)||x.undefined(a.source))&&(x.undefined(a.relatedInformation)||x.typedArray(a.relatedInformation,At.is))}t.is=i})(ae||(ae={}));var je;(function(t){function r(e,n){for(var a=[],s=2;s<arguments.length;s++)a[s-2]=arguments[s];var o={title:e,command:n};return x.defined(a)&&a.length>0&&(o.arguments=a),o}t.create=r;function i(e){var n=e;return x.defined(n)&&x.string(n.title)&&x.string(n.command)}t.is=i})(je||(je={}));var Y;(function(t){function r(a,s){return{range:a,newText:s}}t.replace=r;function i(a,s){return{range:{start:a,end:a},newText:s}}t.insert=i;function e(a){return{range:a,newText:\"\"}}t.del=e;function n(a){var s=a;return x.objectLiteral(s)&&x.string(s.newText)&&U.is(s.range)}t.is=n})(Y||(Y={}));var Ee;(function(t){function r(e,n,a){var s={label:e};return n!==void 0&&(s.needsConfirmation=n),a!==void 0&&(s.description=a),s}t.create=r;function i(e){var n=e;return n!==void 0&&x.objectLiteral(n)&&x.string(n.label)&&(x.boolean(n.needsConfirmation)||n.needsConfirmation===void 0)&&(x.string(n.description)||n.description===void 0)}t.is=i})(Ee||(Ee={}));var X;(function(t){function r(i){var e=i;return typeof e==\"string\"}t.is=r})(X||(X={}));var me;(function(t){function r(a,s,o){return{range:a,newText:s,annotationId:o}}t.replace=r;function i(a,s,o){return{range:{start:a,end:a},newText:s,annotationId:o}}t.insert=i;function e(a,s){return{range:a,newText:\"\",annotationId:s}}t.del=e;function n(a){var s=a;return Y.is(s)&&(Ee.is(s.annotationId)||X.is(s.annotationId))}t.is=n})(me||(me={}));var Ve;(function(t){function r(e,n){return{textDocument:e,edits:n}}t.create=r;function i(e){var n=e;return x.defined(n)&&Qe.is(n.textDocument)&&Array.isArray(n.edits)}t.is=i})(Ve||(Ve={}));var Fe;(function(t){function r(e,n,a){var s={kind:\"create\",uri:e};return n!==void 0&&(n.overwrite!==void 0||n.ignoreIfExists!==void 0)&&(s.options=n),a!==void 0&&(s.annotationId=a),s}t.create=r;function i(e){var n=e;return n&&n.kind===\"create\"&&x.string(n.uri)&&(n.options===void 0||(n.options.overwrite===void 0||x.boolean(n.options.overwrite))&&(n.options.ignoreIfExists===void 0||x.boolean(n.options.ignoreIfExists)))&&(n.annotationId===void 0||X.is(n.annotationId))}t.is=i})(Fe||(Fe={}));var $e;(function(t){function r(e,n,a,s){var o={kind:\"rename\",oldUri:e,newUri:n};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(o.options=a),s!==void 0&&(o.annotationId=s),o}t.create=r;function i(e){var n=e;return n&&n.kind===\"rename\"&&x.string(n.oldUri)&&x.string(n.newUri)&&(n.options===void 0||(n.options.overwrite===void 0||x.boolean(n.options.overwrite))&&(n.options.ignoreIfExists===void 0||x.boolean(n.options.ignoreIfExists)))&&(n.annotationId===void 0||X.is(n.annotationId))}t.is=i})($e||($e={}));var De;(function(t){function r(e,n,a){var s={kind:\"delete\",uri:e};return n!==void 0&&(n.recursive!==void 0||n.ignoreIfNotExists!==void 0)&&(s.options=n),a!==void 0&&(s.annotationId=a),s}t.create=r;function i(e){var n=e;return n&&n.kind===\"delete\"&&x.string(n.uri)&&(n.options===void 0||(n.options.recursive===void 0||x.boolean(n.options.recursive))&&(n.options.ignoreIfNotExists===void 0||x.boolean(n.options.ignoreIfNotExists)))&&(n.annotationId===void 0||X.is(n.annotationId))}t.is=i})(De||(De={}));var Ze;(function(t){function r(i){var e=i;return e&&(e.changes!==void 0||e.documentChanges!==void 0)&&(e.documentChanges===void 0||e.documentChanges.every(function(n){return x.string(n.kind)?Fe.is(n)||$e.is(n)||De.is(n):Ve.is(n)}))}t.is=r})(Ze||(Ze={}));var He=function(){function t(r,i){this.edits=r,this.changeAnnotations=i}return t.prototype.insert=function(r,i,e){var n,a;if(e===void 0?n=Y.insert(r,i):X.is(e)?(a=e,n=me.insert(r,i,e)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(e),n=me.insert(r,i,a)),this.edits.push(n),a!==void 0)return a},t.prototype.replace=function(r,i,e){var n,a;if(e===void 0?n=Y.replace(r,i):X.is(e)?(a=e,n=me.replace(r,i,e)):(this.assertChangeAnnotations(this.changeAnnotations),a=this.changeAnnotations.manage(e),n=me.replace(r,i,a)),this.edits.push(n),a!==void 0)return a},t.prototype.delete=function(r,i){var e,n;if(i===void 0?e=Y.del(r):X.is(i)?(n=i,e=me.del(r,i)):(this.assertChangeAnnotations(this.changeAnnotations),n=this.changeAnnotations.manage(i),e=me.del(r,n)),this.edits.push(e),n!==void 0)return n},t.prototype.add=function(r){this.edits.push(r)},t.prototype.all=function(){return this.edits},t.prototype.clear=function(){this.edits.splice(0,this.edits.length)},t.prototype.assertChangeAnnotations=function(r){if(r===void 0)throw new Error(\"Text edit change is not configured to manage change annotations.\")},t}(),fr=function(){function t(r){this._annotations=r===void 0?Object.create(null):r,this._counter=0,this._size=0}return t.prototype.all=function(){return this._annotations},Object.defineProperty(t.prototype,\"size\",{get:function(){return this._size},enumerable:!1,configurable:!0}),t.prototype.manage=function(r,i){var e;if(X.is(r)?e=r:(e=this.nextId(),i=r),this._annotations[e]!==void 0)throw new Error(\"Id \"+e+\" is already in use.\");if(i===void 0)throw new Error(\"No annotation provided for id \"+e);return this._annotations[e]=i,this._size++,e},t.prototype.nextId=function(){return this._counter++,this._counter.toString()},t}(),ni=function(){function t(r){var i=this;this._textEditChanges=Object.create(null),r!==void 0?(this._workspaceEdit=r,r.documentChanges?(this._changeAnnotations=new fr(r.changeAnnotations),r.changeAnnotations=this._changeAnnotations.all(),r.documentChanges.forEach(function(e){if(Ve.is(e)){var n=new He(e.edits,i._changeAnnotations);i._textEditChanges[e.textDocument.uri]=n}})):r.changes&&Object.keys(r.changes).forEach(function(e){var n=new He(r.changes[e]);i._textEditChanges[e]=n})):this._workspaceEdit={}}return Object.defineProperty(t.prototype,\"edit\",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),t.prototype.getTextEditChange=function(r){if(Qe.is(r)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var i={uri:r.uri,version:r.version},e=this._textEditChanges[i.uri];if(!e){var n=[],a={textDocument:i,edits:n};this._workspaceEdit.documentChanges.push(a),e=new He(n,this._changeAnnotations),this._textEditChanges[i.uri]=e}return e}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error(\"Workspace edit is not configured for normal text edit changes.\");var e=this._textEditChanges[r];if(!e){var n=[];this._workspaceEdit.changes[r]=n,e=new He(n),this._textEditChanges[r]=e}return e}},t.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new fr,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},t.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},t.prototype.createFile=function(r,i,e){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var n;Ee.is(i)||X.is(i)?n=i:e=i;var a,s;if(n===void 0?a=Fe.create(r,e):(s=X.is(n)?n:this._changeAnnotations.manage(n),a=Fe.create(r,e,s)),this._workspaceEdit.documentChanges.push(a),s!==void 0)return s},t.prototype.renameFile=function(r,i,e,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var a;Ee.is(e)||X.is(e)?a=e:n=e;var s,o;if(a===void 0?s=$e.create(r,i,n):(o=X.is(a)?a:this._changeAnnotations.manage(a),s=$e.create(r,i,n,o)),this._workspaceEdit.documentChanges.push(s),o!==void 0)return o},t.prototype.deleteFile=function(r,i,e){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error(\"Workspace edit is not configured for document changes.\");var n;Ee.is(i)||X.is(i)?n=i:e=i;var a,s;if(n===void 0?a=De.create(r,e):(s=X.is(n)?n:this._changeAnnotations.manage(n),a=De.create(r,e,s)),this._workspaceEdit.documentChanges.push(a),s!==void 0)return s},t}();var ur;(function(t){function r(e){return{uri:e}}t.create=r;function i(e){var n=e;return x.defined(n)&&x.string(n.uri)}t.is=i})(ur||(ur={}));var wt;(function(t){function r(e,n){return{uri:e,version:n}}t.create=r;function i(e){var n=e;return x.defined(n)&&x.string(n.uri)&&x.integer(n.version)}t.is=i})(wt||(wt={}));var Qe;(function(t){function r(e,n){return{uri:e,version:n}}t.create=r;function i(e){var n=e;return x.defined(n)&&x.string(n.uri)&&(n.version===null||x.integer(n.version))}t.is=i})(Qe||(Qe={}));var cr;(function(t){function r(e,n,a,s){return{uri:e,languageId:n,version:a,text:s}}t.create=r;function i(e){var n=e;return x.defined(n)&&x.string(n.uri)&&x.string(n.languageId)&&x.integer(n.version)&&x.string(n.text)}t.is=i})(cr||(cr={}));var fe;(function(t){t.PlainText=\"plaintext\",t.Markdown=\"markdown\"})(fe||(fe={}));(function(t){function r(i){var e=i;return e===t.PlainText||e===t.Markdown}t.is=r})(fe||(fe={}));var Ye;(function(t){function r(i){var e=i;return x.objectLiteral(i)&&fe.is(e.kind)&&x.string(e.value)}t.is=r})(Ye||(Ye={}));var Q;(function(t){t.Text=1,t.Method=2,t.Function=3,t.Constructor=4,t.Field=5,t.Variable=6,t.Class=7,t.Interface=8,t.Module=9,t.Property=10,t.Unit=11,t.Value=12,t.Enum=13,t.Keyword=14,t.Snippet=15,t.Color=16,t.File=17,t.Reference=18,t.Folder=19,t.EnumMember=20,t.Constant=21,t.Struct=22,t.Event=23,t.Operator=24,t.TypeParameter=25})(Q||(Q={}));var z;(function(t){t.PlainText=1,t.Snippet=2})(z||(z={}));var Tt;(function(t){t.Deprecated=1})(Tt||(Tt={}));var lr;(function(t){function r(e,n,a){return{newText:e,insert:n,replace:a}}t.create=r;function i(e){var n=e;return n&&x.string(n.newText)&&U.is(n.insert)&&U.is(n.replace)}t.is=i})(lr||(lr={}));var hr;(function(t){t.asIs=1,t.adjustIndentation=2})(hr||(hr={}));var Re;(function(t){function r(i){return{label:i}}t.create=r})(Re||(Re={}));var kt;(function(t){function r(i,e){return{items:i||[],isIncomplete:!!e}}t.create=r})(kt||(kt={}));var Ue;(function(t){function r(e){return e.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g,\"\\\\$&\")}t.fromPlainText=r;function i(e){var n=e;return x.string(n)||x.objectLiteral(n)&&x.string(n.language)&&x.string(n.value)}t.is=i})(Ue||(Ue={}));var Ot;(function(t){function r(i){var e=i;return!!e&&x.objectLiteral(e)&&(Ye.is(e.contents)||Ue.is(e.contents)||x.typedArray(e.contents,Ue.is))&&(i.range===void 0||U.is(i.range))}t.is=r})(Ot||(Ot={}));var dr;(function(t){function r(i,e){return e?{label:i,documentation:e}:{label:i}}t.create=r})(dr||(dr={}));var gr;(function(t){function r(i,e){for(var n=[],a=2;a<arguments.length;a++)n[a-2]=arguments[a];var s={label:i};return x.defined(e)&&(s.documentation=e),x.defined(n)?s.parameters=n:s.parameters=[],s}t.create=r})(gr||(gr={}));var Ct;(function(t){t.Text=1,t.Read=2,t.Write=3})(Ct||(Ct={}));var Pt;(function(t){function r(i,e){var n={range:i};return x.number(e)&&(n.kind=e),n}t.create=r})(Pt||(Pt={}));var oe;(function(t){t.File=1,t.Module=2,t.Namespace=3,t.Package=4,t.Class=5,t.Method=6,t.Property=7,t.Field=8,t.Constructor=9,t.Enum=10,t.Interface=11,t.Function=12,t.Variable=13,t.Constant=14,t.String=15,t.Number=16,t.Boolean=17,t.Array=18,t.Object=19,t.Key=20,t.Null=21,t.EnumMember=22,t.Struct=23,t.Event=24,t.Operator=25,t.TypeParameter=26})(oe||(oe={}));var pr;(function(t){t.Deprecated=1})(pr||(pr={}));var It;(function(t){function r(i,e,n,a,s){var o={name:i,kind:e,location:{uri:a,range:n}};return s&&(o.containerName=s),o}t.create=r})(It||(It={}));var Et;(function(t){function r(e,n,a,s,o,f){var l={name:e,detail:n,kind:a,range:s,selectionRange:o};return f!==void 0&&(l.children=f),l}t.create=r;function i(e){var n=e;return n&&x.string(n.name)&&x.number(n.kind)&&U.is(n.range)&&U.is(n.selectionRange)&&(n.detail===void 0||x.string(n.detail))&&(n.deprecated===void 0||x.boolean(n.deprecated))&&(n.children===void 0||Array.isArray(n.children))&&(n.tags===void 0||Array.isArray(n.tags))}t.is=i})(Et||(Et={}));var jt;(function(t){t.Empty=\"\",t.QuickFix=\"quickfix\",t.Refactor=\"refactor\",t.RefactorExtract=\"refactor.extract\",t.RefactorInline=\"refactor.inline\",t.RefactorRewrite=\"refactor.rewrite\",t.Source=\"source\",t.SourceOrganizeImports=\"source.organizeImports\",t.SourceFixAll=\"source.fixAll\"})(jt||(jt={}));var Nt;(function(t){function r(e,n){var a={diagnostics:e};return n!=null&&(a.only=n),a}t.create=r;function i(e){var n=e;return x.defined(n)&&x.typedArray(n.diagnostics,ae.is)&&(n.only===void 0||x.typedArray(n.only,x.string))}t.is=i})(Nt||(Nt={}));var Mt;(function(t){function r(e,n,a){var s={title:e},o=!0;return typeof n==\"string\"?(o=!1,s.kind=n):je.is(n)?s.command=n:s.edit=n,o&&a!==void 0&&(s.kind=a),s}t.create=r;function i(e){var n=e;return n&&x.string(n.title)&&(n.diagnostics===void 0||x.typedArray(n.diagnostics,ae.is))&&(n.kind===void 0||x.string(n.kind))&&(n.edit!==void 0||n.command!==void 0)&&(n.command===void 0||je.is(n.command))&&(n.isPreferred===void 0||x.boolean(n.isPreferred))&&(n.edit===void 0||Ze.is(n.edit))}t.is=i})(Mt||(Mt={}));var mr;(function(t){function r(e,n){var a={range:e};return x.defined(n)&&(a.data=n),a}t.create=r;function i(e){var n=e;return x.defined(n)&&U.is(n.range)&&(x.undefined(n.command)||je.is(n.command))}t.is=i})(mr||(mr={}));var vr;(function(t){function r(e,n){return{tabSize:e,insertSpaces:n}}t.create=r;function i(e){var n=e;return x.defined(n)&&x.uinteger(n.tabSize)&&x.boolean(n.insertSpaces)}t.is=i})(vr||(vr={}));var Lt;(function(t){function r(e,n,a){return{range:e,target:n,data:a}}t.create=r;function i(e){var n=e;return x.defined(n)&&U.is(n.range)&&(x.undefined(n.target)||x.string(n.target))}t.is=i})(Lt||(Lt={}));var Ne;(function(t){function r(e,n){return{range:e,parent:n}}t.create=r;function i(e){var n=e;return n!==void 0&&U.is(n.range)&&(n.parent===void 0||t.is(n.parent))}t.is=i})(Ne||(Ne={}));var yr;(function(t){function r(a,s,o,f){return new cn(a,s,o,f)}t.create=r;function i(a){var s=a;return!!(x.defined(s)&&x.string(s.uri)&&(x.undefined(s.languageId)||x.string(s.languageId))&&x.uinteger(s.lineCount)&&x.func(s.getText)&&x.func(s.positionAt)&&x.func(s.offsetAt))}t.is=i;function e(a,s){for(var o=a.getText(),f=n(s,function(m,p){var d=m.range.start.line-p.range.start.line;return d===0?m.range.start.character-p.range.start.character:d}),l=o.length,u=f.length-1;u>=0;u--){var c=f[u],h=a.offsetAt(c.range.start),g=a.offsetAt(c.range.end);if(g<=l)o=o.substring(0,h)+c.newText+o.substring(g,o.length);else throw new Error(\"Overlapping edit\");l=h}return o}t.applyEdits=e;function n(a,s){if(a.length<=1)return a;var o=a.length/2|0,f=a.slice(0,o),l=a.slice(o);n(f,s),n(l,s);for(var u=0,c=0,h=0;u<f.length&&c<l.length;){var g=s(f[u],l[c]);g<=0?a[h++]=f[u++]:a[h++]=l[c++]}for(;u<f.length;)a[h++]=f[u++];for(;c<l.length;)a[h++]=l[c++];return a}})(yr||(yr={}));var cn=function(){function t(r,i,e,n){this._uri=r,this._languageId=i,this._version=e,this._content=n,this._lineOffsets=void 0}return Object.defineProperty(t.prototype,\"uri\",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"languageId\",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"version\",{get:function(){return this._version},enumerable:!1,configurable:!0}),t.prototype.getText=function(r){if(r){var i=this.offsetAt(r.start),e=this.offsetAt(r.end);return this._content.substring(i,e)}return this._content},t.prototype.update=function(r,i){this._content=r.text,this._version=i,this._lineOffsets=void 0},t.prototype.getLineOffsets=function(){if(this._lineOffsets===void 0){for(var r=[],i=this._content,e=!0,n=0;n<i.length;n++){e&&(r.push(n),e=!1);var a=i.charAt(n);e=a===\"\\r\"||a===`\n`,a===\"\\r\"&&n+1<i.length&&i.charAt(n+1)===`\n`&&n++}e&&i.length>0&&r.push(i.length),this._lineOffsets=r}return this._lineOffsets},t.prototype.positionAt=function(r){r=Math.max(Math.min(r,this._content.length),0);var i=this.getLineOffsets(),e=0,n=i.length;if(n===0)return re.create(0,r);for(;e<n;){var a=Math.floor((e+n)/2);i[a]>r?n=a:e=a+1}var s=e-1;return re.create(s,r-i[s])},t.prototype.offsetAt=function(r){var i=this.getLineOffsets();if(r.line>=i.length)return this._content.length;if(r.line<0)return 0;var e=i[r.line],n=r.line+1<i.length?i[r.line+1]:this._content.length;return Math.max(Math.min(e+r.character,n),e)},Object.defineProperty(t.prototype,\"lineCount\",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),t}(),x;(function(t){var r=Object.prototype.toString;function i(g){return typeof g<\"u\"}t.defined=i;function e(g){return typeof g>\"u\"}t.undefined=e;function n(g){return g===!0||g===!1}t.boolean=n;function a(g){return r.call(g)===\"[object String]\"}t.string=a;function s(g){return r.call(g)===\"[object Number]\"}t.number=s;function o(g,m,p){return r.call(g)===\"[object Number]\"&&m<=g&&g<=p}t.numberRange=o;function f(g){return r.call(g)===\"[object Number]\"&&-2147483648<=g&&g<=2147483647}t.integer=f;function l(g){return r.call(g)===\"[object Number]\"&&0<=g&&g<=2147483647}t.uinteger=l;function u(g){return r.call(g)===\"[object Function]\"}t.func=u;function c(g){return g!==null&&typeof g==\"object\"}t.objectLiteral=c;function h(g,m){return Array.isArray(g)&&g.every(m)}t.typedArray=h})(x||(x={}));var we=class{constructor(r,i,e,n){this._uri=r,this._languageId=i,this._version=e,this._content=n,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(r){if(r){let i=this.offsetAt(r.start),e=this.offsetAt(r.end);return this._content.substring(i,e)}return this._content}update(r,i){for(let e of r)if(we.isIncremental(e)){let n=xr(e.range),a=this.offsetAt(n.start),s=this.offsetAt(n.end);this._content=this._content.substring(0,a)+e.text+this._content.substring(s,this._content.length);let o=Math.max(n.start.line,0),f=Math.max(n.end.line,0),l=this._lineOffsets,u=br(e.text,!1,a);if(f-o===u.length)for(let h=0,g=u.length;h<g;h++)l[h+o+1]=u[h];else u.length<1e4?l.splice(o+1,f-o,...u):this._lineOffsets=l=l.slice(0,o+1).concat(u,l.slice(f+1));let c=e.text.length-(s-a);if(c!==0)for(let h=o+1+u.length,g=l.length;h<g;h++)l[h]=l[h]+c}else if(we.isFull(e))this._content=e.text,this._lineOffsets=void 0;else throw new Error(\"Unknown change event received\");this._version=i}getLineOffsets(){return this._lineOffsets===void 0&&(this._lineOffsets=br(this._content,!0)),this._lineOffsets}positionAt(r){r=Math.max(Math.min(r,this._content.length),0);let i=this.getLineOffsets(),e=0,n=i.length;if(n===0)return{line:0,character:r};for(;e<n;){let s=Math.floor((e+n)/2);i[s]>r?n=s:e=s+1}let a=e-1;return{line:a,character:r-i[a]}}offsetAt(r){let i=this.getLineOffsets();if(r.line>=i.length)return this._content.length;if(r.line<0)return 0;let e=i[r.line],n=r.line+1<i.length?i[r.line+1]:this._content.length;return Math.max(Math.min(e+r.character,n),e)}get lineCount(){return this.getLineOffsets().length}static isIncremental(r){let i=r;return i!=null&&typeof i.text==\"string\"&&i.range!==void 0&&(i.rangeLength===void 0||typeof i.rangeLength==\"number\")}static isFull(r){let i=r;return i!=null&&typeof i.text==\"string\"&&i.range===void 0&&i.rangeLength===void 0}},We;(function(t){function r(n,a,s,o){return new we(n,a,s,o)}t.create=r;function i(n,a,s){if(n instanceof we)return n.update(a,s),n;throw new Error(\"TextDocument.update: document must be created by TextDocument.create\")}t.update=i;function e(n,a){let s=n.getText(),o=Vt(a.map(ln),(u,c)=>{let h=u.range.start.line-c.range.start.line;return h===0?u.range.start.character-c.range.start.character:h}),f=0,l=[];for(let u of o){let c=n.offsetAt(u.range.start);if(c<f)throw new Error(\"Overlapping edit\");c>f&&l.push(s.substring(f,c)),u.newText.length&&l.push(u.newText),f=n.offsetAt(u.range.end)}return l.push(s.substr(f)),l.join(\"\")}t.applyEdits=e})(We||(We={}));function Vt(t,r){if(t.length<=1)return t;let i=t.length/2|0,e=t.slice(0,i),n=t.slice(i);Vt(e,r),Vt(n,r);let a=0,s=0,o=0;for(;a<e.length&&s<n.length;)r(e[a],n[s])<=0?t[o++]=e[a++]:t[o++]=n[s++];for(;a<e.length;)t[o++]=e[a++];for(;s<n.length;)t[o++]=n[s++];return t}function br(t,r,i=0){let e=r?[i]:[];for(let n=0;n<t.length;n++){let a=t.charCodeAt(n);(a===13||a===10)&&(a===13&&n+1<t.length&&t.charCodeAt(n+1)===10&&n++,e.push(i+n+1))}return e}function xr(t){let r=t.start,i=t.end;return r.line>i.line||r.line===i.line&&r.character>i.character?{start:i,end:r}:t}function ln(t){let r=xr(t.range);return r!==t.range?{newText:t.newText,range:r}:t}var W;(function(t){t[t.Undefined=0]=\"Undefined\",t[t.EnumValueMismatch=1]=\"EnumValueMismatch\",t[t.Deprecated=2]=\"Deprecated\",t[t.UnexpectedEndOfComment=257]=\"UnexpectedEndOfComment\",t[t.UnexpectedEndOfString=258]=\"UnexpectedEndOfString\",t[t.UnexpectedEndOfNumber=259]=\"UnexpectedEndOfNumber\",t[t.InvalidUnicode=260]=\"InvalidUnicode\",t[t.InvalidEscapeCharacter=261]=\"InvalidEscapeCharacter\",t[t.InvalidCharacter=262]=\"InvalidCharacter\",t[t.PropertyExpected=513]=\"PropertyExpected\",t[t.CommaExpected=514]=\"CommaExpected\",t[t.ColonExpected=515]=\"ColonExpected\",t[t.ValueExpected=516]=\"ValueExpected\",t[t.CommaOrCloseBacketExpected=517]=\"CommaOrCloseBacketExpected\",t[t.CommaOrCloseBraceExpected=518]=\"CommaOrCloseBraceExpected\",t[t.TrailingComma=519]=\"TrailingComma\",t[t.DuplicateKey=520]=\"DuplicateKey\",t[t.CommentNotPermitted=521]=\"CommentNotPermitted\",t[t.SchemaResolveError=768]=\"SchemaResolveError\"})(W||(W={}));var Sr;(function(t){t.LATEST={textDocument:{completion:{completionItem:{documentationFormat:[fe.Markdown,fe.PlainText],commitCharactersSupport:!0}}}}})(Sr||(Sr={}));function hn(t,r){let i;return r.length===0?i=t:i=t.replace(/\\{(\\d+)\\}/g,(e,n)=>{let a=n[0];return typeof r[a]<\"u\"?r[a]:e}),i}function dn(t,r,...i){return hn(r,i)}function he(t){return dn}var Te=function(){var t=function(r,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])},t(r,i)};return function(r,i){if(typeof i!=\"function\"&&i!==null)throw new TypeError(\"Class extends value \"+String(i)+\" is not a constructor or null\");t(r,i);function e(){this.constructor=r}r.prototype=i===null?Object.create(i):(e.prototype=i.prototype,new e)}}(),M=he(),gn={\"color-hex\":{errorMessage:M(\"colorHexFormatWarning\",\"Invalid color format. Use #RGB, #RGBA, #RRGGBB or #RRGGBBAA.\"),pattern:/^#([0-9A-Fa-f]{3,4}|([0-9A-Fa-f]{2}){3,4})$/},\"date-time\":{errorMessage:M(\"dateTimeFormatWarning\",\"String is not a RFC3339 date-time.\"),pattern:/^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\\.[0-9]+)?(Z|(\\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i},date:{errorMessage:M(\"dateFormatWarning\",\"String is not a RFC3339 date.\"),pattern:/^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/i},time:{errorMessage:M(\"timeFormatWarning\",\"String is not a RFC3339 time.\"),pattern:/^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\\.[0-9]+)?(Z|(\\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i},email:{errorMessage:M(\"emailFormatWarning\",\"String is not an e-mail address.\"),pattern:/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}))$/},hostname:{errorMessage:M(\"hostnameFormatWarning\",\"String is not a hostname.\"),pattern:/^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i},ipv4:{errorMessage:M(\"ipv4FormatWarning\",\"String is not an IPv4 address.\"),pattern:/^(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)$/},ipv6:{errorMessage:M(\"ipv6FormatWarning\",\"String is not an IPv6 address.\"),pattern:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))$/i}},ke=function(){function t(r,i,e){e===void 0&&(e=0),this.offset=i,this.length=e,this.parent=r}return Object.defineProperty(t.prototype,\"children\",{get:function(){return[]},enumerable:!1,configurable:!0}),t.prototype.toString=function(){return\"type: \"+this.type+\" (\"+this.offset+\"/\"+this.length+\")\"+(this.parent?\" parent: {\"+this.parent.toString()+\"}\":\"\")},t}();var pn=function(t){Te(r,t);function r(i,e){var n=t.call(this,i,e)||this;return n.type=\"null\",n.value=null,n}return r}(ke);var Ar=function(t){Te(r,t);function r(i,e,n){var a=t.call(this,i,n)||this;return a.type=\"boolean\",a.value=e,a}return r}(ke);var mn=function(t){Te(r,t);function r(i,e){var n=t.call(this,i,e)||this;return n.type=\"array\",n.items=[],n}return Object.defineProperty(r.prototype,\"children\",{get:function(){return this.items},enumerable:!1,configurable:!0}),r}(ke);var vn=function(t){Te(r,t);function r(i,e){var n=t.call(this,i,e)||this;return n.type=\"number\",n.isInteger=!0,n.value=Number.NaN,n}return r}(ke);var Ft=function(t){Te(r,t);function r(i,e,n){var a=t.call(this,i,e,n)||this;return a.type=\"string\",a.value=\"\",a}return r}(ke);var yn=function(t){Te(r,t);function r(i,e,n){var a=t.call(this,i,e)||this;return a.type=\"property\",a.colonOffset=-1,a.keyNode=n,a}return Object.defineProperty(r.prototype,\"children\",{get:function(){return this.valueNode?[this.keyNode,this.valueNode]:[this.keyNode]},enumerable:!1,configurable:!0}),r}(ke);var bn=function(t){Te(r,t);function r(i,e){var n=t.call(this,i,e)||this;return n.type=\"object\",n.properties=[],n}return Object.defineProperty(r.prototype,\"children\",{get:function(){return this.properties},enumerable:!1,configurable:!0}),r}(ke);function K(t){return ie(t)?t?{}:{not:{}}:t}var wr;(function(t){t[t.Key=0]=\"Key\",t[t.Enum=1]=\"Enum\"})(wr||(wr={}));var xn=function(){function t(r,i){r===void 0&&(r=-1),this.focusOffset=r,this.exclude=i,this.schemas=[]}return t.prototype.add=function(r){this.schemas.push(r)},t.prototype.merge=function(r){Array.prototype.push.apply(this.schemas,r.schemas)},t.prototype.include=function(r){return(this.focusOffset===-1||Dt(r,this.focusOffset))&&r!==this.exclude},t.prototype.newSub=function(){return new t(-1,this.exclude)},t}(),$t=function(){function t(){}return Object.defineProperty(t.prototype,\"schemas\",{get:function(){return[]},enumerable:!1,configurable:!0}),t.prototype.add=function(r){},t.prototype.merge=function(r){},t.prototype.include=function(r){return!0},t.prototype.newSub=function(){return this},t.instance=new t,t}(),te=function(){function t(){this.problems=[],this.propertiesMatches=0,this.propertiesValueMatches=0,this.primaryValueMatches=0,this.enumValueMatch=!1,this.enumValues=void 0}return t.prototype.hasProblems=function(){return!!this.problems.length},t.prototype.mergeAll=function(r){for(var i=0,e=r;i<e.length;i++){var n=e[i];this.merge(n)}},t.prototype.merge=function(r){this.problems=this.problems.concat(r.problems)},t.prototype.mergeEnumValues=function(r){if(!this.enumValueMatch&&!r.enumValueMatch&&this.enumValues&&r.enumValues){this.enumValues=this.enumValues.concat(r.enumValues);for(var i=0,e=this.problems;i<e.length;i++){var n=e[i];n.code===W.EnumValueMismatch&&(n.message=M(\"enumWarning\",\"Value is not accepted. Valid values: {0}.\",this.enumValues.map(function(a){return JSON.stringify(a)}).join(\", \")))}}},t.prototype.mergePropertyMatch=function(r){this.merge(r),this.propertiesMatches++,(r.enumValueMatch||!r.hasProblems()&&r.propertiesMatches)&&this.propertiesValueMatches++,r.enumValueMatch&&r.enumValues&&r.enumValues.length===1&&this.primaryValueMatches++},t.prototype.compare=function(r){var i=this.hasProblems();return i!==r.hasProblems()?i?-1:1:this.enumValueMatch!==r.enumValueMatch?r.enumValueMatch?-1:1:this.primaryValueMatches!==r.primaryValueMatches?this.primaryValueMatches-r.primaryValueMatches:this.propertiesValueMatches!==r.propertiesValueMatches?this.propertiesValueMatches-r.propertiesValueMatches:this.propertiesMatches-r.propertiesMatches},t}();function Tr(t,r){return r===void 0&&(r=[]),new kr(t,r,[])}function ge(t){return er(t)}function qe(t){return Kt(t)}function Dt(t,r,i){return i===void 0&&(i=!1),r>=t.offset&&r<t.offset+t.length||i&&r===t.offset+t.length}var kr=function(){function t(r,i,e){i===void 0&&(i=[]),e===void 0&&(e=[]),this.root=r,this.syntaxErrors=i,this.comments=e}return t.prototype.getNodeFromOffset=function(r,i){if(i===void 0&&(i=!1),this.root)return Yt(this.root,r,i)},t.prototype.visit=function(r){if(this.root){var i=function(e){var n=r(e),a=e.children;if(Array.isArray(a))for(var s=0;s<a.length&&n;s++)n=i(a[s]);return n};i(this.root)}},t.prototype.validate=function(r,i,e){if(e===void 0&&(e=Z.Warning),this.root&&i){var n=new te;return _(this.root,i,n,$t.instance),n.problems.map(function(a){var s,o=U.create(r.positionAt(a.location.offset),r.positionAt(a.location.offset+a.location.length));return ae.create(o,a.message,(s=a.severity)!==null&&s!==void 0?s:e,a.code)})}},t.prototype.getMatchingSchemas=function(r,i,e){i===void 0&&(i=-1);var n=new xn(i,e);return this.root&&r&&_(this.root,r,new te,n),n.schemas},t}();function _(t,r,i,e){if(!t||!e.include(t))return;var n=t;switch(n.type){case\"object\":l(n,r,i,e);break;case\"array\":f(n,r,i,e);break;case\"string\":o(n,r,i,e);break;case\"number\":s(n,r,i,e);break;case\"property\":return _(n.valueNode,r,i,e)}a(),e.add({node:n,schema:r});function a(){function u(V){return n.type===V||V===\"integer\"&&n.type===\"number\"&&n.isInteger}if(Array.isArray(r.type)?r.type.some(u)||i.problems.push({location:{offset:n.offset,length:n.length},message:r.errorMessage||M(\"typeArrayMismatchWarning\",\"Incorrect type. Expected one of {0}.\",r.type.join(\", \"))}):r.type&&(u(r.type)||i.problems.push({location:{offset:n.offset,length:n.length},message:r.errorMessage||M(\"typeMismatchWarning\",'Incorrect type. Expected \"{0}\".',r.type)})),Array.isArray(r.allOf))for(var c=0,h=r.allOf;c<h.length;c++){var g=h[c];_(n,K(g),i,e)}var m=K(r.not);if(m){var p=new te,d=e.newSub();_(n,m,p,d),p.hasProblems()||i.problems.push({location:{offset:n.offset,length:n.length},message:M(\"notSchemaWarning\",\"Matches a schema that is not allowed.\")});for(var b=0,y=d.schemas;b<y.length;b++){var v=y[b];v.inverted=!v.inverted,e.add(v)}}var O=function(V,R){for(var H=[],q=void 0,T=0,S=V;T<S.length;T++){var k=S[T],I=K(k),F=new te,D=e.newSub();if(_(n,I,F,D),F.hasProblems()||H.push(I),!q)q={schema:I,validationResult:F,matchingSchemas:D};else if(!R&&!F.hasProblems()&&!q.validationResult.hasProblems())q.matchingSchemas.merge(D),q.validationResult.propertiesMatches+=F.propertiesMatches,q.validationResult.propertiesValueMatches+=F.propertiesValueMatches;else{var J=F.compare(q.validationResult);J>0?q={schema:I,validationResult:F,matchingSchemas:D}:J===0&&(q.matchingSchemas.merge(D),q.validationResult.mergeEnumValues(F))}}return H.length>1&&R&&i.problems.push({location:{offset:n.offset,length:1},message:M(\"oneOfWarning\",\"Matches multiple schemas when only one must validate.\")}),q&&(i.merge(q.validationResult),i.propertiesMatches+=q.validationResult.propertiesMatches,i.propertiesValueMatches+=q.validationResult.propertiesValueMatches,e.merge(q.matchingSchemas)),H.length};Array.isArray(r.anyOf)&&O(r.anyOf,!1),Array.isArray(r.oneOf)&&O(r.oneOf,!0);var E=function(V){var R=new te,H=e.newSub();_(n,K(V),R,H),i.merge(R),i.propertiesMatches+=R.propertiesMatches,i.propertiesValueMatches+=R.propertiesValueMatches,e.merge(H)},j=function(V,R,H){var q=K(V),T=new te,S=e.newSub();_(n,q,T,S),e.merge(S),T.hasProblems()?H&&E(H):R&&E(R)},A=K(r.if);if(A&&j(A,K(r.then),K(r.else)),Array.isArray(r.enum)){for(var P=ge(n),w=!1,C=0,L=r.enum;C<L.length;C++){var N=L[C];if(Ie(P,N)){w=!0;break}}i.enumValues=r.enum,i.enumValueMatch=w,w||i.problems.push({location:{offset:n.offset,length:n.length},code:W.EnumValueMismatch,message:r.errorMessage||M(\"enumWarning\",\"Value is not accepted. Valid values: {0}.\",r.enum.map(function(V){return JSON.stringify(V)}).join(\", \"))})}if(se(r.const)){var P=ge(n);Ie(P,r.const)?i.enumValueMatch=!0:(i.problems.push({location:{offset:n.offset,length:n.length},code:W.EnumValueMismatch,message:r.errorMessage||M(\"constWarning\",\"Value must be {0}.\",JSON.stringify(r.const))}),i.enumValueMatch=!1),i.enumValues=[r.const]}r.deprecationMessage&&n.parent&&i.problems.push({location:{offset:n.parent.offset,length:n.parent.length},severity:Z.Warning,message:r.deprecationMessage,code:W.Deprecated})}function s(u,c,h,g){var m=u.value;function p(C){var L,N=/^(-?\\d+)(?:\\.(\\d+))?(?:e([-+]\\d+))?$/.exec(C.toString());return N&&{value:Number(N[1]+(N[2]||\"\")),multiplier:(((L=N[2])===null||L===void 0?void 0:L.length)||0)-(parseInt(N[3])||0)}}if(ee(c.multipleOf)){var d=-1;if(Number.isInteger(c.multipleOf))d=m%c.multipleOf;else{var b=p(c.multipleOf),y=p(m);if(b&&y){var v=Math.pow(10,Math.abs(y.multiplier-b.multiplier));y.multiplier<b.multiplier?y.value*=v:b.value*=v,d=y.value%b.value}}d!==0&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"multipleOfWarning\",\"Value is not divisible by {0}.\",c.multipleOf)})}function O(C,L){if(ee(L))return L;if(ie(L)&&L)return C}function E(C,L){if(!ie(L)||!L)return C}var j=O(c.minimum,c.exclusiveMinimum);ee(j)&&m<=j&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"exclusiveMinimumWarning\",\"Value is below the exclusive minimum of {0}.\",j)});var A=O(c.maximum,c.exclusiveMaximum);ee(A)&&m>=A&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"exclusiveMaximumWarning\",\"Value is above the exclusive maximum of {0}.\",A)});var P=E(c.minimum,c.exclusiveMinimum);ee(P)&&m<P&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"minimumWarning\",\"Value is below the minimum of {0}.\",P)});var w=E(c.maximum,c.exclusiveMaximum);ee(w)&&m>w&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"maximumWarning\",\"Value is above the maximum of {0}.\",w)})}function o(u,c,h,g){if(ee(c.minLength)&&u.value.length<c.minLength&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"minLengthWarning\",\"String is shorter than the minimum length of {0}.\",c.minLength)}),ee(c.maxLength)&&u.value.length>c.maxLength&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"maxLengthWarning\",\"String is longer than the maximum length of {0}.\",c.maxLength)}),rr(c.pattern)){var m=xe(c.pattern);m?.test(u.value)||h.problems.push({location:{offset:u.offset,length:u.length},message:c.patternErrorMessage||c.errorMessage||M(\"patternWarning\",'String does not match the pattern of \"{0}\".',c.pattern)})}if(c.format)switch(c.format){case\"uri\":case\"uri-reference\":{var p=void 0;if(!u.value)p=M(\"uriEmpty\",\"URI expected.\");else{var d=/^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/.exec(u.value);d?!d[2]&&c.format===\"uri\"&&(p=M(\"uriSchemeMissing\",\"URI with a scheme is expected.\")):p=M(\"uriMissing\",\"URI is expected.\")}p&&h.problems.push({location:{offset:u.offset,length:u.length},message:c.patternErrorMessage||c.errorMessage||M(\"uriFormatWarning\",\"String is not a URI: {0}\",p)})}break;case\"color-hex\":case\"date-time\":case\"date\":case\"time\":case\"email\":case\"hostname\":case\"ipv4\":case\"ipv6\":var b=gn[c.format];(!u.value||!b.pattern.exec(u.value))&&h.problems.push({location:{offset:u.offset,length:u.length},message:c.patternErrorMessage||c.errorMessage||b.errorMessage});default:}}function f(u,c,h,g){if(Array.isArray(c.items)){for(var m=c.items,p=0;p<m.length;p++){var d=m[p],b=K(d),y=new te,v=u.items[p];v?(_(v,b,y,g),h.mergePropertyMatch(y)):u.items.length>=m.length&&h.propertiesValueMatches++}if(u.items.length>m.length)if(typeof c.additionalItems==\"object\")for(var O=m.length;O<u.items.length;O++){var y=new te;_(u.items[O],c.additionalItems,y,g),h.mergePropertyMatch(y)}else c.additionalItems===!1&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"additionalItemsWarning\",\"Array has too many items according to schema. Expected {0} or fewer.\",m.length)})}else{var E=K(c.items);if(E)for(var j=0,A=u.items;j<A.length;j++){var v=A[j],y=new te;_(v,E,y,g),h.mergePropertyMatch(y)}}var P=K(c.contains);if(P){var w=u.items.some(function(N){var V=new te;return _(N,P,V,$t.instance),!V.hasProblems()});w||h.problems.push({location:{offset:u.offset,length:u.length},message:c.errorMessage||M(\"requiredItemMissingWarning\",\"Array does not contain required item.\")})}if(ee(c.minItems)&&u.items.length<c.minItems&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"minItemsWarning\",\"Array has too few items. Expected {0} or more.\",c.minItems)}),ee(c.maxItems)&&u.items.length>c.maxItems&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"maxItemsWarning\",\"Array has too many items. Expected {0} or fewer.\",c.maxItems)}),c.uniqueItems===!0){var C=ge(u),L=C.some(function(N,V){return V!==C.lastIndexOf(N)});L&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"uniqueItemsWarning\",\"Array has duplicate items.\")})}}function l(u,c,h,g){for(var m=Object.create(null),p=[],d=0,b=u.properties;d<b.length;d++){var y=b[d],v=y.keyNode.value;m[v]=y.valueNode,p.push(v)}if(Array.isArray(c.required))for(var O=0,E=c.required;O<E.length;O++){var j=E[O];if(!m[j]){var A=u.parent&&u.parent.type===\"property\"&&u.parent.keyNode,P=A?{offset:A.offset,length:A.length}:{offset:u.offset,length:1};h.problems.push({location:P,message:M(\"MissingRequiredPropWarning\",'Missing property \"{0}\".',j)})}}var w=function(Gt){for(var ct=p.indexOf(Gt);ct>=0;)p.splice(ct,1),ct=p.indexOf(Gt)};if(c.properties)for(var C=0,L=Object.keys(c.properties);C<L.length;C++){var j=L[C];w(j);var N=c.properties[j],V=m[j];if(V)if(ie(N))if(N)h.propertiesMatches++,h.propertiesValueMatches++;else{var y=V.parent;h.problems.push({location:{offset:y.keyNode.offset,length:y.keyNode.length},message:c.errorMessage||M(\"DisallowedExtraPropWarning\",\"Property {0} is not allowed.\",j)})}else{var R=new te;_(V,N,R,g),h.mergePropertyMatch(R)}}if(c.patternProperties)for(var H=0,q=Object.keys(c.patternProperties);H<q.length;H++)for(var T=q[H],S=xe(T),k=0,I=p.slice(0);k<I.length;k++){var j=I[k];if(S?.test(j)){w(j);var V=m[j];if(V){var N=c.patternProperties[T];if(ie(N))if(N)h.propertiesMatches++,h.propertiesValueMatches++;else{var y=V.parent;h.problems.push({location:{offset:y.keyNode.offset,length:y.keyNode.length},message:c.errorMessage||M(\"DisallowedExtraPropWarning\",\"Property {0} is not allowed.\",j)})}else{var R=new te;_(V,N,R,g),h.mergePropertyMatch(R)}}}}if(typeof c.additionalProperties==\"object\")for(var F=0,D=p;F<D.length;F++){var j=D[F],V=m[j];if(V){var R=new te;_(V,c.additionalProperties,R,g),h.mergePropertyMatch(R)}}else if(c.additionalProperties===!1&&p.length>0)for(var J=0,ue=p;J<ue.length;J++){var j=ue[J],V=m[j];if(V){var y=V.parent;h.problems.push({location:{offset:y.keyNode.offset,length:y.keyNode.length},message:c.errorMessage||M(\"DisallowedExtraPropWarning\",\"Property {0} is not allowed.\",j)})}}if(ee(c.maxProperties)&&u.properties.length>c.maxProperties&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"MaxPropWarning\",\"Object has more properties than limit of {0}.\",c.maxProperties)}),ee(c.minProperties)&&u.properties.length<c.minProperties&&h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"MinPropWarning\",\"Object has fewer properties than the required number of {0}\",c.minProperties)}),c.dependencies)for(var G=0,ne=Object.keys(c.dependencies);G<ne.length;G++){var v=ne[G],Oe=m[v];if(Oe){var ce=c.dependencies[v];if(Array.isArray(ce))for(var ft=0,zt=ce;ft<zt.length;ft++){var Bt=zt[ft];m[Bt]?h.propertiesValueMatches++:h.problems.push({location:{offset:u.offset,length:u.length},message:M(\"RequiredDependentPropWarning\",\"Object is missing property {0} required by property {1}.\",Bt,v)})}else{var N=K(ce);if(N){var R=new te;_(u,N,R,g),h.mergePropertyMatch(R)}}}}var _t=K(c.propertyNames);if(_t)for(var ut=0,Ht=u.properties;ut<Ht.length;ut++){var _r=Ht[ut],v=_r.keyNode;v&&_(v,_t,h,$t.instance)}}}function Or(t,r){var i=[],e=-1,n=t.getText(),a=le(n,!1),s=r&&r.collectComments?[]:void 0;function o(){for(;;){var A=a.scan();switch(c(),A){case 12:case 13:Array.isArray(s)&&s.push(U.create(t.positionAt(a.getTokenOffset()),t.positionAt(a.getTokenOffset()+a.getTokenLength())));break;case 15:case 14:break;default:return A}}}function f(A){return a.getToken()===A?(o(),!0):!1}function l(A,P,w,C,L){if(L===void 0&&(L=Z.Error),i.length===0||w!==e){var N=U.create(t.positionAt(w),t.positionAt(C));i.push(ae.create(N,A,L,P,t.languageId)),e=w}}function u(A,P,w,C,L){w===void 0&&(w=void 0),C===void 0&&(C=[]),L===void 0&&(L=[]);var N=a.getTokenOffset(),V=a.getTokenOffset()+a.getTokenLength();if(N===V&&N>0){for(N--;N>0&&/\\s/.test(n.charAt(N));)N--;V=N+1}if(l(A,P,N,V),w&&h(w,!1),C.length+L.length>0)for(var R=a.getToken();R!==17;){if(C.indexOf(R)!==-1){o();break}else if(L.indexOf(R)!==-1)break;R=o()}return w}function c(){switch(a.getTokenError()){case 4:return u(M(\"InvalidUnicode\",\"Invalid unicode sequence in string.\"),W.InvalidUnicode),!0;case 5:return u(M(\"InvalidEscapeCharacter\",\"Invalid escape character in string.\"),W.InvalidEscapeCharacter),!0;case 3:return u(M(\"UnexpectedEndOfNumber\",\"Unexpected end of number.\"),W.UnexpectedEndOfNumber),!0;case 1:return u(M(\"UnexpectedEndOfComment\",\"Unexpected end of comment.\"),W.UnexpectedEndOfComment),!0;case 2:return u(M(\"UnexpectedEndOfString\",\"Unexpected end of string.\"),W.UnexpectedEndOfString),!0;case 6:return u(M(\"InvalidCharacter\",\"Invalid characters in string. Control characters must be escaped.\"),W.InvalidCharacter),!0}return!1}function h(A,P){return A.length=a.getTokenOffset()+a.getTokenLength()-A.offset,P&&o(),A}function g(A){if(a.getToken()===3){var P=new mn(A,a.getTokenOffset());o();for(var w=0,C=!1;a.getToken()!==4&&a.getToken()!==17;){if(a.getToken()===5){C||u(M(\"ValueExpected\",\"Value expected\"),W.ValueExpected);var L=a.getTokenOffset();if(o(),a.getToken()===4){C&&l(M(\"TrailingComma\",\"Trailing comma\"),W.TrailingComma,L,L+1);continue}}else C&&u(M(\"ExpectedComma\",\"Expected comma\"),W.CommaExpected);var N=O(P);N?P.items.push(N):u(M(\"PropertyExpected\",\"Value expected\"),W.ValueExpected,void 0,[],[4,5]),C=!0}return a.getToken()!==4?u(M(\"ExpectedCloseBracket\",\"Expected comma or closing bracket\"),W.CommaOrCloseBacketExpected,P):h(P,!0)}}var m=new Ft(void 0,0,0);function p(A,P){var w=new yn(A,a.getTokenOffset(),m),C=b(w);if(!C)if(a.getToken()===16){u(M(\"DoubleQuotesExpected\",\"Property keys must be doublequoted\"),W.Undefined);var L=new Ft(w,a.getTokenOffset(),a.getTokenLength());L.value=a.getTokenValue(),C=L,o()}else return;w.keyNode=C;var N=P[C.value];if(N?(l(M(\"DuplicateKeyWarning\",\"Duplicate object key\"),W.DuplicateKey,w.keyNode.offset,w.keyNode.offset+w.keyNode.length,Z.Warning),typeof N==\"object\"&&l(M(\"DuplicateKeyWarning\",\"Duplicate object key\"),W.DuplicateKey,N.keyNode.offset,N.keyNode.offset+N.keyNode.length,Z.Warning),P[C.value]=!0):P[C.value]=w,a.getToken()===6)w.colonOffset=a.getTokenOffset(),o();else if(u(M(\"ColonExpected\",\"Colon expected\"),W.ColonExpected),a.getToken()===10&&t.positionAt(C.offset+C.length).line<t.positionAt(a.getTokenOffset()).line)return w.length=C.length,w;var V=O(w);return V?(w.valueNode=V,w.length=V.offset+V.length-w.offset,w):u(M(\"ValueExpected\",\"Value expected\"),W.ValueExpected,w,[],[2,5])}function d(A){if(a.getToken()===1){var P=new bn(A,a.getTokenOffset()),w=Object.create(null);o();for(var C=!1;a.getToken()!==2&&a.getToken()!==17;){if(a.getToken()===5){C||u(M(\"PropertyExpected\",\"Property expected\"),W.PropertyExpected);var L=a.getTokenOffset();if(o(),a.getToken()===2){C&&l(M(\"TrailingComma\",\"Trailing comma\"),W.TrailingComma,L,L+1);continue}}else C&&u(M(\"ExpectedComma\",\"Expected comma\"),W.CommaExpected);var N=p(P,w);N?P.properties.push(N):u(M(\"PropertyExpected\",\"Property expected\"),W.PropertyExpected,void 0,[],[2,5]),C=!0}return a.getToken()!==2?u(M(\"ExpectedCloseBrace\",\"Expected comma or closing brace\"),W.CommaOrCloseBraceExpected,P):h(P,!0)}}function b(A){if(a.getToken()===10){var P=new Ft(A,a.getTokenOffset());return P.value=a.getTokenValue(),h(P,!0)}}function y(A){if(a.getToken()===11){var P=new vn(A,a.getTokenOffset());if(a.getTokenError()===0){var w=a.getTokenValue();try{var C=JSON.parse(w);if(!ee(C))return u(M(\"InvalidNumberFormat\",\"Invalid number format.\"),W.Undefined,P);P.value=C}catch{return u(M(\"InvalidNumberFormat\",\"Invalid number format.\"),W.Undefined,P)}P.isInteger=w.indexOf(\".\")===-1}return h(P,!0)}}function v(A){var P;switch(a.getToken()){case 7:return h(new pn(A,a.getTokenOffset()),!0);case 8:return h(new Ar(A,!0,a.getTokenOffset()),!0);case 9:return h(new Ar(A,!1,a.getTokenOffset()),!0);default:return}}function O(A){return g(A)||d(A)||b(A)||y(A)||v(A)}var E=void 0,j=o();return j!==17&&(E=O(E),E?a.getToken()!==17&&u(M(\"End of file expected\",\"End of file expected.\"),W.Undefined):u(M(\"Invalid symbol\",\"Expected a JSON object, array or literal.\"),W.Undefined)),new kr(E,i,s)}function et(t,r,i){if(t!==null&&typeof t==\"object\"){var e=r+\"\t\";if(Array.isArray(t)){if(t.length===0)return\"[]\";for(var n=`[\n`,a=0;a<t.length;a++)n+=e+et(t[a],e,i),a<t.length-1&&(n+=\",\"),n+=`\n`;return n+=r+\"]\",n}else{var s=Object.keys(t);if(s.length===0)return\"{}\";for(var n=`{\n`,a=0;a<s.length;a++){var o=s[a];n+=e+JSON.stringify(o)+\": \"+et(t[o],e,i),a<s.length-1&&(n+=\",\"),n+=`\n`}return n+=r+\"}\",n}}return i(t)}var Rt=he(),Sn=[\",\",\"}\",\"]\"],An=[\":\"],Cr=function(){function t(r,i,e,n){i===void 0&&(i=[]),e===void 0&&(e=Promise),n===void 0&&(n={}),this.schemaService=r,this.contributions=i,this.promiseConstructor=e,this.clientCapabilities=n}return t.prototype.doResolve=function(r){for(var i=this.contributions.length-1;i>=0;i--){var e=this.contributions[i].resolveCompletion;if(e){var n=e(r);if(n)return n}}return this.promiseConstructor.resolve(r)},t.prototype.doComplete=function(r,i,e){var n=this,a={items:[],isIncomplete:!1},s=r.getText(),o=r.offsetAt(i),f=e.getNodeFromOffset(o,!0);if(this.isInComment(r,f?f.offset:0,o))return Promise.resolve(a);if(f&&o===f.offset+f.length&&o>0){var l=s[o-1];(f.type===\"object\"&&l===\"}\"||f.type===\"array\"&&l===\"]\")&&(f=f.parent)}var u=this.getCurrentWord(r,o),c;if(f&&(f.type===\"string\"||f.type===\"number\"||f.type===\"boolean\"||f.type===\"null\"))c=U.create(r.positionAt(f.offset),r.positionAt(f.offset+f.length));else{var h=o-u.length;h>0&&s[h-1]==='\"'&&h--,c=U.create(r.positionAt(h),i)}var g=!1,m={},p={add:function(d){var b=d.label,y=m[b];if(y)y.documentation||(y.documentation=d.documentation),y.detail||(y.detail=d.detail);else{if(b=b.replace(/[\\n]/g,\"\\u21B5\"),b.length>60){var v=b.substr(0,57).trim()+\"...\";m[v]||(b=v)}c&&d.insertText!==void 0&&(d.textEdit=Y.replace(c,d.insertText)),g&&(d.commitCharacters=d.kind===Q.Property?An:Sn),d.label=b,m[b]=d,a.items.push(d)}},setAsIncomplete:function(){a.isIncomplete=!0},error:function(d){console.error(d)},log:function(d){console.log(d)},getNumberOfProposals:function(){return a.items.length}};return this.schemaService.getSchemaForResource(r.uri,e).then(function(d){var b=[],y=!0,v=\"\",O=void 0;if(f&&f.type===\"string\"){var E=f.parent;E&&E.type===\"property\"&&E.keyNode===f&&(y=!E.valueNode,O=E,v=s.substr(f.offset+1,f.length-2),E&&(f=E.parent))}if(f&&f.type===\"object\"){if(f.offset===o)return a;var j=f.properties;j.forEach(function(C){(!O||O!==C)&&(m[C.keyNode.value]=Re.create(\"__\"))});var A=\"\";y&&(A=n.evaluateSeparatorAfter(r,r.offsetAt(c.end))),d?n.getPropertyCompletions(d,e,f,y,A,p):n.getSchemaLessPropertyCompletions(e,f,v,p);var P=qe(f);n.contributions.forEach(function(C){var L=C.collectPropertyCompletions(r.uri,P,u,y,A===\"\",p);L&&b.push(L)}),!d&&u.length>0&&s.charAt(o-u.length-1)!=='\"'&&(p.add({kind:Q.Property,label:n.getLabelForValue(u),insertText:n.getInsertTextForProperty(u,void 0,!1,A),insertTextFormat:z.Snippet,documentation:\"\"}),p.setAsIncomplete())}var w={};return d?n.getValueCompletions(d,e,f,o,r,p,w):n.getSchemaLessValueCompletions(e,f,o,r,p),n.contributions.length>0&&n.getContributedValueCompletions(e,f,o,r,p,b),n.promiseConstructor.all(b).then(function(){if(p.getNumberOfProposals()===0){var C=o;f&&(f.type===\"string\"||f.type===\"number\"||f.type===\"boolean\"||f.type===\"null\")&&(C=f.offset+f.length);var L=n.evaluateSeparatorAfter(r,C);n.addFillerValueCompletions(w,L,p)}return a})})},t.prototype.getPropertyCompletions=function(r,i,e,n,a,s){var o=this,f=i.getMatchingSchemas(r.schema,e.offset);f.forEach(function(l){if(l.node===e&&!l.inverted){var u=l.schema.properties;u&&Object.keys(u).forEach(function(p){var d=u[p];if(typeof d==\"object\"&&!d.deprecationMessage&&!d.doNotSuggest){var b={kind:Q.Property,label:p,insertText:o.getInsertTextForProperty(p,d,n,a),insertTextFormat:z.Snippet,filterText:o.getFilterTextForValue(p),documentation:o.fromMarkup(d.markdownDescription)||d.description||\"\"};d.suggestSortText!==void 0&&(b.sortText=d.suggestSortText),b.insertText&&pe(b.insertText,\"$1\".concat(a))&&(b.command={title:\"Suggest\",command:\"editor.action.triggerSuggest\"}),s.add(b)}});var c=l.schema.propertyNames;if(typeof c==\"object\"&&!c.deprecationMessage&&!c.doNotSuggest){var h=function(p,d){d===void 0&&(d=void 0);var b={kind:Q.Property,label:p,insertText:o.getInsertTextForProperty(p,void 0,n,a),insertTextFormat:z.Snippet,filterText:o.getFilterTextForValue(p),documentation:d||o.fromMarkup(c.markdownDescription)||c.description||\"\"};c.suggestSortText!==void 0&&(b.sortText=c.suggestSortText),b.insertText&&pe(b.insertText,\"$1\".concat(a))&&(b.command={title:\"Suggest\",command:\"editor.action.triggerSuggest\"}),s.add(b)};if(c.enum)for(var g=0;g<c.enum.length;g++){var m=void 0;c.markdownEnumDescriptions&&g<c.markdownEnumDescriptions.length?m=o.fromMarkup(c.markdownEnumDescriptions[g]):c.enumDescriptions&&g<c.enumDescriptions.length&&(m=c.enumDescriptions[g]),h(c.enum[g],m)}c.const&&h(c.const)}}})},t.prototype.getSchemaLessPropertyCompletions=function(r,i,e,n){var a=this,s=function(f){f.properties.forEach(function(l){var u=l.keyNode.value;n.add({kind:Q.Property,label:u,insertText:a.getInsertTextForValue(u,\"\"),insertTextFormat:z.Snippet,filterText:a.getFilterTextForValue(u),documentation:\"\"})})};if(i.parent)if(i.parent.type===\"property\"){var o=i.parent.keyNode.value;r.visit(function(f){return f.type===\"property\"&&f!==i.parent&&f.keyNode.value===o&&f.valueNode&&f.valueNode.type===\"object\"&&s(f.valueNode),!0})}else i.parent.type===\"array\"&&i.parent.items.forEach(function(f){f.type===\"object\"&&f!==i&&s(f)});else i.type===\"object\"&&n.add({kind:Q.Property,label:\"$schema\",insertText:this.getInsertTextForProperty(\"$schema\",void 0,!0,\"\"),insertTextFormat:z.Snippet,documentation:\"\",filterText:this.getFilterTextForValue(\"$schema\")})},t.prototype.getSchemaLessValueCompletions=function(r,i,e,n,a){var s=this,o=e;if(i&&(i.type===\"string\"||i.type===\"number\"||i.type===\"boolean\"||i.type===\"null\")&&(o=i.offset+i.length,i=i.parent),!i){a.add({kind:this.getSuggestionKind(\"object\"),label:\"Empty object\",insertText:this.getInsertTextForValue({},\"\"),insertTextFormat:z.Snippet,documentation:\"\"}),a.add({kind:this.getSuggestionKind(\"array\"),label:\"Empty array\",insertText:this.getInsertTextForValue([],\"\"),insertTextFormat:z.Snippet,documentation:\"\"});return}var f=this.evaluateSeparatorAfter(n,o),l=function(g){g.parent&&!Dt(g.parent,e,!0)&&a.add({kind:s.getSuggestionKind(g.type),label:s.getLabelTextForMatchingNode(g,n),insertText:s.getInsertTextForMatchingNode(g,n,f),insertTextFormat:z.Snippet,documentation:\"\"}),g.type===\"boolean\"&&s.addBooleanValueCompletion(!g.value,f,a)};if(i.type===\"property\"&&e>(i.colonOffset||0)){var u=i.valueNode;if(u&&(e>u.offset+u.length||u.type===\"object\"||u.type===\"array\"))return;var c=i.keyNode.value;r.visit(function(g){return g.type===\"property\"&&g.keyNode.value===c&&g.valueNode&&l(g.valueNode),!0}),c===\"$schema\"&&i.parent&&!i.parent.parent&&this.addDollarSchemaCompletions(f,a)}if(i.type===\"array\")if(i.parent&&i.parent.type===\"property\"){var h=i.parent.keyNode.value;r.visit(function(g){return g.type===\"property\"&&g.keyNode.value===h&&g.valueNode&&g.valueNode.type===\"array\"&&g.valueNode.items.forEach(l),!0})}else i.items.forEach(l)},t.prototype.getValueCompletions=function(r,i,e,n,a,s,o){var f=n,l=void 0,u=void 0;if(e&&(e.type===\"string\"||e.type===\"number\"||e.type===\"boolean\"||e.type===\"null\")&&(f=e.offset+e.length,u=e,e=e.parent),!e){this.addSchemaValueCompletions(r.schema,\"\",s,o);return}if(e.type===\"property\"&&n>(e.colonOffset||0)){var c=e.valueNode;if(c&&n>c.offset+c.length)return;l=e.keyNode.value,e=e.parent}if(e&&(l!==void 0||e.type===\"array\")){for(var h=this.evaluateSeparatorAfter(a,f),g=i.getMatchingSchemas(r.schema,e.offset,u),m=0,p=g;m<p.length;m++){var d=p[m];if(d.node===e&&!d.inverted&&d.schema){if(e.type===\"array\"&&d.schema.items)if(Array.isArray(d.schema.items)){var b=this.findItemAtOffset(e,a,n);b<d.schema.items.length&&this.addSchemaValueCompletions(d.schema.items[b],h,s,o)}else this.addSchemaValueCompletions(d.schema.items,h,s,o);if(l!==void 0){var y=!1;if(d.schema.properties){var v=d.schema.properties[l];v&&(y=!0,this.addSchemaValueCompletions(v,h,s,o))}if(d.schema.patternProperties&&!y)for(var O=0,E=Object.keys(d.schema.patternProperties);O<E.length;O++){var j=E[O],A=xe(j);if(A?.test(l)){y=!0;var v=d.schema.patternProperties[j];this.addSchemaValueCompletions(v,h,s,o)}}if(d.schema.additionalProperties&&!y){var v=d.schema.additionalProperties;this.addSchemaValueCompletions(v,h,s,o)}}}}l===\"$schema\"&&!e.parent&&this.addDollarSchemaCompletions(h,s),o.boolean&&(this.addBooleanValueCompletion(!0,h,s),this.addBooleanValueCompletion(!1,h,s)),o.null&&this.addNullValueCompletion(h,s)}},t.prototype.getContributedValueCompletions=function(r,i,e,n,a,s){if(!i)this.contributions.forEach(function(u){var c=u.collectDefaultCompletions(n.uri,a);c&&s.push(c)});else if((i.type===\"string\"||i.type===\"number\"||i.type===\"boolean\"||i.type===\"null\")&&(i=i.parent),i&&i.type===\"property\"&&e>(i.colonOffset||0)){var o=i.keyNode.value,f=i.valueNode;if((!f||e<=f.offset+f.length)&&i.parent){var l=qe(i.parent);this.contributions.forEach(function(u){var c=u.collectValueCompletions(n.uri,l,o,a);c&&s.push(c)})}}},t.prototype.addSchemaValueCompletions=function(r,i,e,n){var a=this;typeof r==\"object\"&&(this.addEnumValueCompletions(r,i,e),this.addDefaultValueCompletions(r,i,e),this.collectTypes(r,n),Array.isArray(r.allOf)&&r.allOf.forEach(function(s){return a.addSchemaValueCompletions(s,i,e,n)}),Array.isArray(r.anyOf)&&r.anyOf.forEach(function(s){return a.addSchemaValueCompletions(s,i,e,n)}),Array.isArray(r.oneOf)&&r.oneOf.forEach(function(s){return a.addSchemaValueCompletions(s,i,e,n)}))},t.prototype.addDefaultValueCompletions=function(r,i,e,n){var a=this;n===void 0&&(n=0);var s=!1;if(se(r.default)){for(var o=r.type,f=r.default,l=n;l>0;l--)f=[f],o=\"array\";e.add({kind:this.getSuggestionKind(o),label:this.getLabelForValue(f),insertText:this.getInsertTextForValue(f,i),insertTextFormat:z.Snippet,detail:Rt(\"json.suggest.default\",\"Default value\")}),s=!0}Array.isArray(r.examples)&&r.examples.forEach(function(u){for(var c=r.type,h=u,g=n;g>0;g--)h=[h],c=\"array\";e.add({kind:a.getSuggestionKind(c),label:a.getLabelForValue(h),insertText:a.getInsertTextForValue(h,i),insertTextFormat:z.Snippet}),s=!0}),Array.isArray(r.defaultSnippets)&&r.defaultSnippets.forEach(function(u){var c=r.type,h=u.body,g=u.label,m,p;if(se(h)){for(var d=r.type,b=n;b>0;b--)h=[h],d=\"array\";m=a.getInsertTextForSnippetValue(h,i),p=a.getFilterTextForSnippetValue(h),g=g||a.getLabelForSnippetValue(h)}else if(typeof u.bodyText==\"string\"){for(var y=\"\",v=\"\",O=\"\",b=n;b>0;b--)y=y+O+`[\n`,v=v+`\n`+O+\"]\",O+=\"\t\",c=\"array\";m=y+O+u.bodyText.split(`\n`).join(`\n`+O)+v+i,g=g||m,p=m.replace(/[\\n]/g,\"\")}else return;e.add({kind:a.getSuggestionKind(c),label:g,documentation:a.fromMarkup(u.markdownDescription)||u.description,insertText:m,insertTextFormat:z.Snippet,filterText:p}),s=!0}),!s&&typeof r.items==\"object\"&&!Array.isArray(r.items)&&n<5&&this.addDefaultValueCompletions(r.items,i,e,n+1)},t.prototype.addEnumValueCompletions=function(r,i,e){if(se(r.const)&&e.add({kind:this.getSuggestionKind(r.type),label:this.getLabelForValue(r.const),insertText:this.getInsertTextForValue(r.const,i),insertTextFormat:z.Snippet,documentation:this.fromMarkup(r.markdownDescription)||r.description}),Array.isArray(r.enum))for(var n=0,a=r.enum.length;n<a;n++){var s=r.enum[n],o=this.fromMarkup(r.markdownDescription)||r.description;r.markdownEnumDescriptions&&n<r.markdownEnumDescriptions.length&&this.doesSupportMarkdown()?o=this.fromMarkup(r.markdownEnumDescriptions[n]):r.enumDescriptions&&n<r.enumDescriptions.length&&(o=r.enumDescriptions[n]),e.add({kind:this.getSuggestionKind(r.type),label:this.getLabelForValue(s),insertText:this.getInsertTextForValue(s,i),insertTextFormat:z.Snippet,documentation:o})}},t.prototype.collectTypes=function(r,i){if(!(Array.isArray(r.enum)||se(r.const))){var e=r.type;Array.isArray(e)?e.forEach(function(n){return i[n]=!0}):e&&(i[e]=!0)}},t.prototype.addFillerValueCompletions=function(r,i,e){r.object&&e.add({kind:this.getSuggestionKind(\"object\"),label:\"{}\",insertText:this.getInsertTextForGuessedValue({},i),insertTextFormat:z.Snippet,detail:Rt(\"defaults.object\",\"New object\"),documentation:\"\"}),r.array&&e.add({kind:this.getSuggestionKind(\"array\"),label:\"[]\",insertText:this.getInsertTextForGuessedValue([],i),insertTextFormat:z.Snippet,detail:Rt(\"defaults.array\",\"New array\"),documentation:\"\"})},t.prototype.addBooleanValueCompletion=function(r,i,e){e.add({kind:this.getSuggestionKind(\"boolean\"),label:r?\"true\":\"false\",insertText:this.getInsertTextForValue(r,i),insertTextFormat:z.Snippet,documentation:\"\"})},t.prototype.addNullValueCompletion=function(r,i){i.add({kind:this.getSuggestionKind(\"null\"),label:\"null\",insertText:\"null\"+r,insertTextFormat:z.Snippet,documentation:\"\"})},t.prototype.addDollarSchemaCompletions=function(r,i){var e=this,n=this.schemaService.getRegisteredSchemaIds(function(a){return a===\"http\"||a===\"https\"});n.forEach(function(a){return i.add({kind:Q.Module,label:e.getLabelForValue(a),filterText:e.getFilterTextForValue(a),insertText:e.getInsertTextForValue(a,r),insertTextFormat:z.Snippet,documentation:\"\"})})},t.prototype.getLabelForValue=function(r){return JSON.stringify(r)},t.prototype.getFilterTextForValue=function(r){return JSON.stringify(r)},t.prototype.getFilterTextForSnippetValue=function(r){return JSON.stringify(r).replace(/\\$\\{\\d+:([^}]+)\\}|\\$\\d+/g,\"$1\")},t.prototype.getLabelForSnippetValue=function(r){var i=JSON.stringify(r);return i.replace(/\\$\\{\\d+:([^}]+)\\}|\\$\\d+/g,\"$1\")},t.prototype.getInsertTextForPlainText=function(r){return r.replace(/[\\\\\\$\\}]/g,\"\\\\$&\")},t.prototype.getInsertTextForValue=function(r,i){var e=JSON.stringify(r,null,\"\t\");return e===\"{}\"?\"{$1}\"+i:e===\"[]\"?\"[$1]\"+i:this.getInsertTextForPlainText(e+i)},t.prototype.getInsertTextForSnippetValue=function(r,i){var e=function(n){return typeof n==\"string\"&&n[0]===\"^\"?n.substr(1):JSON.stringify(n)};return et(r,\"\",e)+i},t.prototype.getInsertTextForGuessedValue=function(r,i){switch(typeof r){case\"object\":return r===null?\"${1:null}\"+i:this.getInsertTextForValue(r,i);case\"string\":var e=JSON.stringify(r);return e=e.substr(1,e.length-2),e=this.getInsertTextForPlainText(e),'\"${1:'+e+'}\"'+i;case\"number\":case\"boolean\":return\"${1:\"+JSON.stringify(r)+\"}\"+i}return this.getInsertTextForValue(r,i)},t.prototype.getSuggestionKind=function(r){if(Array.isArray(r)){var i=r;r=i.length>0?i[0]:void 0}if(!r)return Q.Value;switch(r){case\"string\":return Q.Value;case\"object\":return Q.Module;case\"property\":return Q.Property;default:return Q.Value}},t.prototype.getLabelTextForMatchingNode=function(r,i){switch(r.type){case\"array\":return\"[]\";case\"object\":return\"{}\";default:var e=i.getText().substr(r.offset,r.length);return e}},t.prototype.getInsertTextForMatchingNode=function(r,i,e){switch(r.type){case\"array\":return this.getInsertTextForValue([],e);case\"object\":return this.getInsertTextForValue({},e);default:var n=i.getText().substr(r.offset,r.length)+e;return this.getInsertTextForPlainText(n)}},t.prototype.getInsertTextForProperty=function(r,i,e,n){var a=this.getInsertTextForValue(r,\"\");if(!e)return a;var s=a+\": \",o,f=0;if(i){if(Array.isArray(i.defaultSnippets)){if(i.defaultSnippets.length===1){var l=i.defaultSnippets[0].body;se(l)&&(o=this.getInsertTextForSnippetValue(l,\"\"))}f+=i.defaultSnippets.length}if(i.enum&&(!o&&i.enum.length===1&&(o=this.getInsertTextForGuessedValue(i.enum[0],\"\")),f+=i.enum.length),se(i.default)&&(o||(o=this.getInsertTextForGuessedValue(i.default,\"\")),f++),Array.isArray(i.examples)&&i.examples.length&&(o||(o=this.getInsertTextForGuessedValue(i.examples[0],\"\")),f+=i.examples.length),f===0){var u=Array.isArray(i.type)?i.type[0]:i.type;switch(u||(i.properties?u=\"object\":i.items&&(u=\"array\")),u){case\"boolean\":o=\"$1\";break;case\"string\":o='\"$1\"';break;case\"object\":o=\"{$1}\";break;case\"array\":o=\"[$1]\";break;case\"number\":case\"integer\":o=\"${1:0}\";break;case\"null\":o=\"${1:null}\";break;default:return a}}}return(!o||f>1)&&(o=\"$1\"),s+o+n},t.prototype.getCurrentWord=function(r,i){for(var e=i-1,n=r.getText();e>=0&&` \t\n\\r\\v\":{[,]}`.indexOf(n.charAt(e))===-1;)e--;return n.substring(e+1,i)},t.prototype.evaluateSeparatorAfter=function(r,i){var e=le(r.getText(),!0);e.setPosition(i);var n=e.scan();switch(n){case 5:case 2:case 4:case 17:return\"\";default:return\",\"}},t.prototype.findItemAtOffset=function(r,i,e){for(var n=le(i.getText(),!0),a=r.items,s=a.length-1;s>=0;s--){var o=a[s];if(e>o.offset+o.length){n.setPosition(o.offset+o.length);var f=n.scan();return f===5&&e>=n.getTokenOffset()+n.getTokenLength()?s+1:s}else if(e>=o.offset)return s}return 0},t.prototype.isInComment=function(r,i,e){var n=le(r.getText(),!1);n.setPosition(i);for(var a=n.scan();a!==17&&n.getTokenOffset()+n.getTokenLength()<e;)a=n.scan();return(a===12||a===13)&&n.getTokenOffset()<=e},t.prototype.fromMarkup=function(r){if(r&&this.doesSupportMarkdown())return{kind:fe.Markdown,value:r}},t.prototype.doesSupportMarkdown=function(){if(!se(this.supportsMarkdown)){var r=this.clientCapabilities.textDocument&&this.clientCapabilities.textDocument.completion;this.supportsMarkdown=r&&r.completionItem&&Array.isArray(r.completionItem.documentationFormat)&&r.completionItem.documentationFormat.indexOf(fe.Markdown)!==-1}return this.supportsMarkdown},t.prototype.doesSupportsCommitCharacters=function(){if(!se(this.supportsCommitCharacters)){var r=this.clientCapabilities.textDocument&&this.clientCapabilities.textDocument.completion;this.supportsCommitCharacters=r&&r.completionItem&&!!r.completionItem.commitCharactersSupport}return this.supportsCommitCharacters},t}();var Pr=function(){function t(r,i,e){i===void 0&&(i=[]),this.schemaService=r,this.contributions=i,this.promise=e||Promise}return t.prototype.doHover=function(r,i,e){var n=r.offsetAt(i),a=e.getNodeFromOffset(n);if(!a||(a.type===\"object\"||a.type===\"array\")&&n>a.offset+1&&n<a.offset+a.length-1)return this.promise.resolve(null);var s=a;if(a.type===\"string\"){var o=a.parent;if(o&&o.type===\"property\"&&o.keyNode===a&&(a=o.valueNode,!a))return this.promise.resolve(null)}for(var f=U.create(r.positionAt(s.offset),r.positionAt(s.offset+s.length)),l=function(m){var p={contents:m,range:f};return p},u=qe(a),c=this.contributions.length-1;c>=0;c--){var h=this.contributions[c],g=h.getInfoContribution(r.uri,u);if(g)return g.then(function(m){return l(m)})}return this.schemaService.getSchemaForResource(r.uri,e).then(function(m){if(m&&a){var p=e.getMatchingSchemas(m.schema,a.offset),d=void 0,b=void 0,y=void 0,v=void 0;p.every(function(E){if(E.node===a&&!E.inverted&&E.schema&&(d=d||E.schema.title,b=b||E.schema.markdownDescription||Ut(E.schema.description),E.schema.enum)){var j=E.schema.enum.indexOf(ge(a));E.schema.markdownEnumDescriptions?y=E.schema.markdownEnumDescriptions[j]:E.schema.enumDescriptions&&(y=Ut(E.schema.enumDescriptions[j])),y&&(v=E.schema.enum[j],typeof v!=\"string\"&&(v=JSON.stringify(v)))}return!0});var O=\"\";return d&&(O=Ut(d)),b&&(O.length>0&&(O+=`\n\n`),O+=b),y&&(O.length>0&&(O+=`\n\n`),O+=\"`\".concat(wn(v),\"`: \").concat(y)),l([O])}return null})},t}();function Ut(t){if(t){var r=t.replace(/([^\\n\\r])(\\r?\\n)([^\\n\\r])/gm,`$1\n\n$3`);return r.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g,\"\\\\$&\")}}function wn(t){return t.indexOf(\"`\")!==-1?\"`` \"+t+\" ``\":t}var Tn=he(),Ir=function(){function t(r,i){this.jsonSchemaService=r,this.promise=i,this.validationEnabled=!0}return t.prototype.configure=function(r){r&&(this.validationEnabled=r.validate!==!1,this.commentSeverity=r.allowComments?void 0:Z.Error)},t.prototype.doValidation=function(r,i,e,n){var a=this;if(!this.validationEnabled)return this.promise.resolve([]);var s=[],o={},f=function(h){var g=h.range.start.line+\" \"+h.range.start.character+\" \"+h.message;o[g]||(o[g]=!0,s.push(h))},l=function(h){var g=e?.trailingCommas?tt(e.trailingCommas):Z.Error,m=e?.comments?tt(e.comments):a.commentSeverity,p=e?.schemaValidation?tt(e.schemaValidation):Z.Warning,d=e?.schemaRequest?tt(e.schemaRequest):Z.Warning;if(h){if(h.errors.length&&i.root&&d){var b=i.root,y=b.type===\"object\"?b.properties[0]:void 0;if(y&&y.keyNode.value===\"$schema\"){var v=y.valueNode||y,O=U.create(r.positionAt(v.offset),r.positionAt(v.offset+v.length));f(ae.create(O,h.errors[0],d,W.SchemaResolveError))}else{var O=U.create(r.positionAt(b.offset),r.positionAt(b.offset+1));f(ae.create(O,h.errors[0],d,W.SchemaResolveError))}}else if(p){var E=i.validate(r,h.schema,p);E&&E.forEach(f)}Er(h.schema)&&(m=void 0),jr(h.schema)&&(g=void 0)}for(var j=0,A=i.syntaxErrors;j<A.length;j++){var P=A[j];if(P.code===W.TrailingComma){if(typeof g!=\"number\")continue;P.severity=g}f(P)}if(typeof m==\"number\"){var w=Tn(\"InvalidCommentToken\",\"Comments are not permitted in JSON.\");i.comments.forEach(function(C){f(ae.create(C,w,m,W.CommentNotPermitted))})}return s};if(n){var u=n.id||\"schemaservice://untitled/\"+kn++,c=this.jsonSchemaService.registerExternalSchema(u,[],n);return c.getResolvedSchema().then(function(h){return l(h)})}return this.jsonSchemaService.getSchemaForResource(r.uri,i).then(function(h){return l(h)})},t.prototype.getLanguageStatus=function(r,i){return{schemas:this.jsonSchemaService.getSchemaURIsForResource(r.uri,i)}},t}();var kn=0;function Er(t){if(t&&typeof t==\"object\"){if(ie(t.allowComments))return t.allowComments;if(t.allOf)for(var r=0,i=t.allOf;r<i.length;r++){var e=i[r],n=Er(e);if(ie(n))return n}}}function jr(t){if(t&&typeof t==\"object\"){if(ie(t.allowTrailingCommas))return t.allowTrailingCommas;var r=t;if(ie(r.allowsTrailingCommas))return r.allowsTrailingCommas;if(t.allOf)for(var i=0,e=t.allOf;i<e.length;i++){var n=e[i],a=jr(n);if(ie(a))return a}}}function tt(t){switch(t){case\"error\":return Z.Error;case\"warning\":return Z.Warning;case\"ignore\":return}}var Nr=48,On=57,Cn=65,rt=97,Pn=102;function B(t){return t<Nr?0:t<=On?t-Nr:(t<rt&&(t+=rt-Cn),t>=rt&&t<=Pn?t-rt+10:0)}function Mr(t){if(t[0]===\"#\")switch(t.length){case 4:return{red:B(t.charCodeAt(1))*17/255,green:B(t.charCodeAt(2))*17/255,blue:B(t.charCodeAt(3))*17/255,alpha:1};case 5:return{red:B(t.charCodeAt(1))*17/255,green:B(t.charCodeAt(2))*17/255,blue:B(t.charCodeAt(3))*17/255,alpha:B(t.charCodeAt(4))*17/255};case 7:return{red:(B(t.charCodeAt(1))*16+B(t.charCodeAt(2)))/255,green:(B(t.charCodeAt(3))*16+B(t.charCodeAt(4)))/255,blue:(B(t.charCodeAt(5))*16+B(t.charCodeAt(6)))/255,alpha:1};case 9:return{red:(B(t.charCodeAt(1))*16+B(t.charCodeAt(2)))/255,green:(B(t.charCodeAt(3))*16+B(t.charCodeAt(4)))/255,blue:(B(t.charCodeAt(5))*16+B(t.charCodeAt(6)))/255,alpha:(B(t.charCodeAt(7))*16+B(t.charCodeAt(8)))/255}}}var Lr=function(){function t(r){this.schemaService=r}return t.prototype.findDocumentSymbols=function(r,i,e){var n=this;e===void 0&&(e={resultLimit:Number.MAX_VALUE});var a=i.root;if(!a)return[];var s=e.resultLimit||Number.MAX_VALUE,o=r.uri;if((o===\"vscode://defaultsettings/keybindings.json\"||pe(o.toLowerCase(),\"/user/keybindings.json\"))&&a.type===\"array\"){for(var f=[],l=0,u=a.items;l<u.length;l++){var c=u[l];if(c.type===\"object\")for(var h=0,g=c.properties;h<g.length;h++){var m=g[h];if(m.keyNode.value===\"key\"&&m.valueNode){var p=Se.create(r.uri,ve(r,c));if(f.push({name:ge(m.valueNode),kind:oe.Function,location:p}),s--,s<=0)return e&&e.onResultLimitExceeded&&e.onResultLimitExceeded(o),f}}}return f}for(var d=[{node:a,containerName:\"\"}],b=0,y=!1,v=[],O=function(j,A){j.type===\"array\"?j.items.forEach(function(P){P&&d.push({node:P,containerName:A})}):j.type===\"object\"&&j.properties.forEach(function(P){var w=P.valueNode;if(w)if(s>0){s--;var C=Se.create(r.uri,ve(r,P)),L=A?A+\".\"+P.keyNode.value:P.keyNode.value;v.push({name:n.getKeyLabel(P),kind:n.getSymbolKind(w.type),location:C,containerName:A}),d.push({node:w,containerName:L})}else y=!0})};b<d.length;){var E=d[b++];O(E.node,E.containerName)}return y&&e&&e.onResultLimitExceeded&&e.onResultLimitExceeded(o),v},t.prototype.findDocumentSymbols2=function(r,i,e){var n=this;e===void 0&&(e={resultLimit:Number.MAX_VALUE});var a=i.root;if(!a)return[];var s=e.resultLimit||Number.MAX_VALUE,o=r.uri;if((o===\"vscode://defaultsettings/keybindings.json\"||pe(o.toLowerCase(),\"/user/keybindings.json\"))&&a.type===\"array\"){for(var f=[],l=0,u=a.items;l<u.length;l++){var c=u[l];if(c.type===\"object\")for(var h=0,g=c.properties;h<g.length;h++){var m=g[h];if(m.keyNode.value===\"key\"&&m.valueNode){var p=ve(r,c),d=ve(r,m.keyNode);if(f.push({name:ge(m.valueNode),kind:oe.Function,range:p,selectionRange:d}),s--,s<=0)return e&&e.onResultLimitExceeded&&e.onResultLimitExceeded(o),f}}}return f}for(var b=[],y=[{node:a,result:b}],v=0,O=!1,E=function(A,P){A.type===\"array\"?A.items.forEach(function(w,C){if(w)if(s>0){s--;var L=ve(r,w),N=L,V=String(C),R={name:V,kind:n.getSymbolKind(w.type),range:L,selectionRange:N,children:[]};P.push(R),y.push({result:R.children,node:w})}else O=!0}):A.type===\"object\"&&A.properties.forEach(function(w){var C=w.valueNode;if(C)if(s>0){s--;var L=ve(r,w),N=ve(r,w.keyNode),V=[],R={name:n.getKeyLabel(w),kind:n.getSymbolKind(C.type),range:L,selectionRange:N,children:V,detail:n.getDetail(C)};P.push(R),y.push({result:V,node:C})}else O=!0})};v<y.length;){var j=y[v++];E(j.node,j.result)}return O&&e&&e.onResultLimitExceeded&&e.onResultLimitExceeded(o),b},t.prototype.getSymbolKind=function(r){switch(r){case\"object\":return oe.Module;case\"string\":return oe.String;case\"number\":return oe.Number;case\"array\":return oe.Array;case\"boolean\":return oe.Boolean;default:return oe.Variable}},t.prototype.getKeyLabel=function(r){var i=r.keyNode.value;return i&&(i=i.replace(/[\\n]/g,\"\\u21B5\")),i&&i.trim()?i:'\"'.concat(i,'\"')},t.prototype.getDetail=function(r){if(!!r){if(r.type===\"boolean\"||r.type===\"number\"||r.type===\"null\"||r.type===\"string\")return String(r.value);if(r.type===\"array\")return r.children.length?void 0:\"[]\";if(r.type===\"object\")return r.children.length?void 0:\"{}\"}},t.prototype.findDocumentColors=function(r,i,e){return this.schemaService.getSchemaForResource(r.uri,i).then(function(n){var a=[];if(n)for(var s=e&&typeof e.resultLimit==\"number\"?e.resultLimit:Number.MAX_VALUE,o=i.getMatchingSchemas(n.schema),f={},l=0,u=o;l<u.length;l++){var c=u[l];if(!c.inverted&&c.schema&&(c.schema.format===\"color\"||c.schema.format===\"color-hex\")&&c.node&&c.node.type===\"string\"){var h=String(c.node.offset);if(!f[h]){var g=Mr(ge(c.node));if(g){var m=ve(r,c.node);a.push({color:g,range:m})}if(f[h]=!0,s--,s<=0)return e&&e.onResultLimitExceeded&&e.onResultLimitExceeded(r.uri),a}}}return a})},t.prototype.getColorPresentations=function(r,i,e,n){var a=[],s=Math.round(e.red*255),o=Math.round(e.green*255),f=Math.round(e.blue*255);function l(c){var h=c.toString(16);return h.length!==2?\"0\"+h:h}var u;return e.alpha===1?u=\"#\".concat(l(s)).concat(l(o)).concat(l(f)):u=\"#\".concat(l(s)).concat(l(o)).concat(l(f)).concat(l(Math.round(e.alpha*255))),a.push({label:u,textEdit:Y.replace(n,JSON.stringify(u))}),a},t}();function ve(t,r){return U.create(t.positionAt(r.offset),t.positionAt(r.offset+r.length))}var $=he(),at={schemaAssociations:[],schemas:{\"http://json-schema.org/schema#\":{$ref:\"http://json-schema.org/draft-07/schema#\"},\"http://json-schema.org/draft-04/schema#\":{$schema:\"http://json-schema.org/draft-04/schema#\",definitions:{schemaArray:{type:\"array\",minItems:1,items:{$ref:\"#\"}},positiveInteger:{type:\"integer\",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:\"#/definitions/positiveInteger\"},{default:0}]},simpleTypes:{type:\"string\",enum:[\"array\",\"boolean\",\"integer\",\"null\",\"number\",\"object\",\"string\"]},stringArray:{type:\"array\",items:{type:\"string\"},minItems:1,uniqueItems:!0}},type:\"object\",properties:{id:{type:\"string\",format:\"uri\"},$schema:{type:\"string\",format:\"uri\"},title:{type:\"string\"},description:{type:\"string\"},default:{},multipleOf:{type:\"number\",minimum:0,exclusiveMinimum:!0},maximum:{type:\"number\"},exclusiveMaximum:{type:\"boolean\",default:!1},minimum:{type:\"number\"},exclusiveMinimum:{type:\"boolean\",default:!1},maxLength:{allOf:[{$ref:\"#/definitions/positiveInteger\"}]},minLength:{allOf:[{$ref:\"#/definitions/positiveIntegerDefault0\"}]},pattern:{type:\"string\",format:\"regex\"},additionalItems:{anyOf:[{type:\"boolean\"},{$ref:\"#\"}],default:{}},items:{anyOf:[{$ref:\"#\"},{$ref:\"#/definitions/schemaArray\"}],default:{}},maxItems:{allOf:[{$ref:\"#/definitions/positiveInteger\"}]},minItems:{allOf:[{$ref:\"#/definitions/positiveIntegerDefault0\"}]},uniqueItems:{type:\"boolean\",default:!1},maxProperties:{allOf:[{$ref:\"#/definitions/positiveInteger\"}]},minProperties:{allOf:[{$ref:\"#/definitions/positiveIntegerDefault0\"}]},required:{allOf:[{$ref:\"#/definitions/stringArray\"}]},additionalProperties:{anyOf:[{type:\"boolean\"},{$ref:\"#\"}],default:{}},definitions:{type:\"object\",additionalProperties:{$ref:\"#\"},default:{}},properties:{type:\"object\",additionalProperties:{$ref:\"#\"},default:{}},patternProperties:{type:\"object\",additionalProperties:{$ref:\"#\"},default:{}},dependencies:{type:\"object\",additionalProperties:{anyOf:[{$ref:\"#\"},{$ref:\"#/definitions/stringArray\"}]}},enum:{type:\"array\",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:\"#/definitions/simpleTypes\"},{type:\"array\",items:{$ref:\"#/definitions/simpleTypes\"},minItems:1,uniqueItems:!0}]},format:{anyOf:[{type:\"string\",enum:[\"date-time\",\"uri\",\"email\",\"hostname\",\"ipv4\",\"ipv6\",\"regex\"]},{type:\"string\"}]},allOf:{allOf:[{$ref:\"#/definitions/schemaArray\"}]},anyOf:{allOf:[{$ref:\"#/definitions/schemaArray\"}]},oneOf:{allOf:[{$ref:\"#/definitions/schemaArray\"}]},not:{allOf:[{$ref:\"#\"}]}},dependencies:{exclusiveMaximum:[\"maximum\"],exclusiveMinimum:[\"minimum\"]},default:{}},\"http://json-schema.org/draft-07/schema#\":{definitions:{schemaArray:{type:\"array\",minItems:1,items:{$ref:\"#\"}},nonNegativeInteger:{type:\"integer\",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:\"#/definitions/nonNegativeInteger\"},{default:0}]},simpleTypes:{enum:[\"array\",\"boolean\",\"integer\",\"null\",\"number\",\"object\",\"string\"]},stringArray:{type:\"array\",items:{type:\"string\"},uniqueItems:!0,default:[]}},type:[\"object\",\"boolean\"],properties:{$id:{type:\"string\",format:\"uri-reference\"},$schema:{type:\"string\",format:\"uri\"},$ref:{type:\"string\",format:\"uri-reference\"},$comment:{type:\"string\"},title:{type:\"string\"},description:{type:\"string\"},default:!0,readOnly:{type:\"boolean\",default:!1},examples:{type:\"array\",items:!0},multipleOf:{type:\"number\",exclusiveMinimum:0},maximum:{type:\"number\"},exclusiveMaximum:{type:\"number\"},minimum:{type:\"number\"},exclusiveMinimum:{type:\"number\"},maxLength:{$ref:\"#/definitions/nonNegativeInteger\"},minLength:{$ref:\"#/definitions/nonNegativeIntegerDefault0\"},pattern:{type:\"string\",format:\"regex\"},additionalItems:{$ref:\"#\"},items:{anyOf:[{$ref:\"#\"},{$ref:\"#/definitions/schemaArray\"}],default:!0},maxItems:{$ref:\"#/definitions/nonNegativeInteger\"},minItems:{$ref:\"#/definitions/nonNegativeIntegerDefault0\"},uniqueItems:{type:\"boolean\",default:!1},contains:{$ref:\"#\"},maxProperties:{$ref:\"#/definitions/nonNegativeInteger\"},minProperties:{$ref:\"#/definitions/nonNegativeIntegerDefault0\"},required:{$ref:\"#/definitions/stringArray\"},additionalProperties:{$ref:\"#\"},definitions:{type:\"object\",additionalProperties:{$ref:\"#\"},default:{}},properties:{type:\"object\",additionalProperties:{$ref:\"#\"},default:{}},patternProperties:{type:\"object\",additionalProperties:{$ref:\"#\"},propertyNames:{format:\"regex\"},default:{}},dependencies:{type:\"object\",additionalProperties:{anyOf:[{$ref:\"#\"},{$ref:\"#/definitions/stringArray\"}]}},propertyNames:{$ref:\"#\"},const:!0,enum:{type:\"array\",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:\"#/definitions/simpleTypes\"},{type:\"array\",items:{$ref:\"#/definitions/simpleTypes\"},minItems:1,uniqueItems:!0}]},format:{type:\"string\"},contentMediaType:{type:\"string\"},contentEncoding:{type:\"string\"},if:{$ref:\"#\"},then:{$ref:\"#\"},else:{$ref:\"#\"},allOf:{$ref:\"#/definitions/schemaArray\"},anyOf:{$ref:\"#/definitions/schemaArray\"},oneOf:{$ref:\"#/definitions/schemaArray\"},not:{$ref:\"#\"}},default:!0}}},In={id:$(\"schema.json.id\",\"A unique identifier for the schema.\"),$schema:$(\"schema.json.$schema\",\"The schema to verify this document against.\"),title:$(\"schema.json.title\",\"A descriptive title of the element.\"),description:$(\"schema.json.description\",\"A long description of the element. Used in hover menus and suggestions.\"),default:$(\"schema.json.default\",\"A default value. Used by suggestions.\"),multipleOf:$(\"schema.json.multipleOf\",\"A number that should cleanly divide the current value (i.e. have no remainder).\"),maximum:$(\"schema.json.maximum\",\"The maximum numerical value, inclusive by default.\"),exclusiveMaximum:$(\"schema.json.exclusiveMaximum\",\"Makes the maximum property exclusive.\"),minimum:$(\"schema.json.minimum\",\"The minimum numerical value, inclusive by default.\"),exclusiveMinimum:$(\"schema.json.exclusiveMininum\",\"Makes the minimum property exclusive.\"),maxLength:$(\"schema.json.maxLength\",\"The maximum length of a string.\"),minLength:$(\"schema.json.minLength\",\"The minimum length of a string.\"),pattern:$(\"schema.json.pattern\",\"A regular expression to match the string against. It is not implicitly anchored.\"),additionalItems:$(\"schema.json.additionalItems\",\"For arrays, only when items is set as an array. If it is a schema, then this schema validates items after the ones specified by the items array. If it is false, then additional items will cause validation to fail.\"),items:$(\"schema.json.items\",\"For arrays. Can either be a schema to validate every element against or an array of schemas to validate each item against in order (the first schema will validate the first element, the second schema will validate the second element, and so on.\"),maxItems:$(\"schema.json.maxItems\",\"The maximum number of items that can be inside an array. Inclusive.\"),minItems:$(\"schema.json.minItems\",\"The minimum number of items that can be inside an array. Inclusive.\"),uniqueItems:$(\"schema.json.uniqueItems\",\"If all of the items in the array must be unique. Defaults to false.\"),maxProperties:$(\"schema.json.maxProperties\",\"The maximum number of properties an object can have. Inclusive.\"),minProperties:$(\"schema.json.minProperties\",\"The minimum number of properties an object can have. Inclusive.\"),required:$(\"schema.json.required\",\"An array of strings that lists the names of all properties required on this object.\"),additionalProperties:$(\"schema.json.additionalProperties\",\"Either a schema or a boolean. If a schema, then used to validate all properties not matched by 'properties' or 'patternProperties'. If false, then any properties not matched by either will cause this schema to fail.\"),definitions:$(\"schema.json.definitions\",\"Not used for validation. Place subschemas here that you wish to reference inline with $ref.\"),properties:$(\"schema.json.properties\",\"A map of property names to schemas for each property.\"),patternProperties:$(\"schema.json.patternProperties\",\"A map of regular expressions on property names to schemas for matching properties.\"),dependencies:$(\"schema.json.dependencies\",\"A map of property names to either an array of property names or a schema. An array of property names means the property named in the key depends on the properties in the array being present in the object in order to be valid. If the value is a schema, then the schema is only applied to the object if the property in the key exists on the object.\"),enum:$(\"schema.json.enum\",\"The set of literal values that are valid.\"),type:$(\"schema.json.type\",\"Either a string of one of the basic schema types (number, integer, null, array, object, boolean, string) or an array of strings specifying a subset of those types.\"),format:$(\"schema.json.format\",\"Describes the format expected for the value.\"),allOf:$(\"schema.json.allOf\",\"An array of schemas, all of which must match.\"),anyOf:$(\"schema.json.anyOf\",\"An array of schemas, where at least one must match.\"),oneOf:$(\"schema.json.oneOf\",\"An array of schemas, exactly one of which must match.\"),not:$(\"schema.json.not\",\"A schema which must not match.\"),$id:$(\"schema.json.$id\",\"A unique identifier for the schema.\"),$ref:$(\"schema.json.$ref\",\"Reference a definition hosted on any location.\"),$comment:$(\"schema.json.$comment\",\"Comments from schema authors to readers or maintainers of the schema.\"),readOnly:$(\"schema.json.readOnly\",\"Indicates that the value of the instance is managed exclusively by the owning authority.\"),examples:$(\"schema.json.examples\",\"Sample JSON values associated with a particular schema, for the purpose of illustrating usage.\"),contains:$(\"schema.json.contains\",'An array instance is valid against \"contains\" if at least one of its elements is valid against the given schema.'),propertyNames:$(\"schema.json.propertyNames\",\"If the instance is an object, this keyword validates if every property name in the instance validates against the provided schema.\"),const:$(\"schema.json.const\",\"An instance validates successfully against this keyword if its value is equal to the value of the keyword.\"),contentMediaType:$(\"schema.json.contentMediaType\",\"Describes the media type of a string property.\"),contentEncoding:$(\"schema.json.contentEncoding\",\"Describes the content encoding of a string property.\"),if:$(\"schema.json.if\",'The validation outcome of the \"if\" subschema controls which of the \"then\" or \"else\" keywords are evaluated.'),then:$(\"schema.json.then\",'The \"if\" subschema is used for validation when the \"if\" subschema succeeds.'),else:$(\"schema.json.else\",'The \"else\" subschema is used for validation when the \"if\" subschema fails.')};for(Vr in at.schemas){nt=at.schemas[Vr];for(Me in nt.properties)it=nt.properties[Me],typeof it==\"boolean\"&&(it=nt.properties[Me]={}),Wt=In[Me],Wt?it.description=Wt:console.log(\"\".concat(Me,\": localize('schema.json.\").concat(Me,`', \"\")`))}var nt,it,Wt,Me,Vr;var Fr;Fr=(()=>{\"use strict\";var t={470:e=>{function n(o){if(typeof o!=\"string\")throw new TypeError(\"Path must be a string. Received \"+JSON.stringify(o))}function a(o,f){for(var l,u=\"\",c=0,h=-1,g=0,m=0;m<=o.length;++m){if(m<o.length)l=o.charCodeAt(m);else{if(l===47)break;l=47}if(l===47){if(!(h===m-1||g===1))if(h!==m-1&&g===2){if(u.length<2||c!==2||u.charCodeAt(u.length-1)!==46||u.charCodeAt(u.length-2)!==46){if(u.length>2){var p=u.lastIndexOf(\"/\");if(p!==u.length-1){p===-1?(u=\"\",c=0):c=(u=u.slice(0,p)).length-1-u.lastIndexOf(\"/\"),h=m,g=0;continue}}else if(u.length===2||u.length===1){u=\"\",c=0,h=m,g=0;continue}}f&&(u.length>0?u+=\"/..\":u=\"..\",c=2)}else u.length>0?u+=\"/\"+o.slice(h+1,m):u=o.slice(h+1,m),c=m-h-1;h=m,g=0}else l===46&&g!==-1?++g:g=-1}return u}var s={resolve:function(){for(var o,f=\"\",l=!1,u=arguments.length-1;u>=-1&&!l;u--){var c;u>=0?c=arguments[u]:(o===void 0&&(o=process.cwd()),c=o),n(c),c.length!==0&&(f=c+\"/\"+f,l=c.charCodeAt(0)===47)}return f=a(f,!l),l?f.length>0?\"/\"+f:\"/\":f.length>0?f:\".\"},normalize:function(o){if(n(o),o.length===0)return\".\";var f=o.charCodeAt(0)===47,l=o.charCodeAt(o.length-1)===47;return(o=a(o,!f)).length!==0||f||(o=\".\"),o.length>0&&l&&(o+=\"/\"),f?\"/\"+o:o},isAbsolute:function(o){return n(o),o.length>0&&o.charCodeAt(0)===47},join:function(){if(arguments.length===0)return\".\";for(var o,f=0;f<arguments.length;++f){var l=arguments[f];n(l),l.length>0&&(o===void 0?o=l:o+=\"/\"+l)}return o===void 0?\".\":s.normalize(o)},relative:function(o,f){if(n(o),n(f),o===f||(o=s.resolve(o))===(f=s.resolve(f)))return\"\";for(var l=1;l<o.length&&o.charCodeAt(l)===47;++l);for(var u=o.length,c=u-l,h=1;h<f.length&&f.charCodeAt(h)===47;++h);for(var g=f.length-h,m=c<g?c:g,p=-1,d=0;d<=m;++d){if(d===m){if(g>m){if(f.charCodeAt(h+d)===47)return f.slice(h+d+1);if(d===0)return f.slice(h+d)}else c>m&&(o.charCodeAt(l+d)===47?p=d:d===0&&(p=0));break}var b=o.charCodeAt(l+d);if(b!==f.charCodeAt(h+d))break;b===47&&(p=d)}var y=\"\";for(d=l+p+1;d<=u;++d)d!==u&&o.charCodeAt(d)!==47||(y.length===0?y+=\"..\":y+=\"/..\");return y.length>0?y+f.slice(h+p):(h+=p,f.charCodeAt(h)===47&&++h,f.slice(h))},_makeLong:function(o){return o},dirname:function(o){if(n(o),o.length===0)return\".\";for(var f=o.charCodeAt(0),l=f===47,u=-1,c=!0,h=o.length-1;h>=1;--h)if((f=o.charCodeAt(h))===47){if(!c){u=h;break}}else c=!1;return u===-1?l?\"/\":\".\":l&&u===1?\"//\":o.slice(0,u)},basename:function(o,f){if(f!==void 0&&typeof f!=\"string\")throw new TypeError('\"ext\" argument must be a string');n(o);var l,u=0,c=-1,h=!0;if(f!==void 0&&f.length>0&&f.length<=o.length){if(f.length===o.length&&f===o)return\"\";var g=f.length-1,m=-1;for(l=o.length-1;l>=0;--l){var p=o.charCodeAt(l);if(p===47){if(!h){u=l+1;break}}else m===-1&&(h=!1,m=l+1),g>=0&&(p===f.charCodeAt(g)?--g==-1&&(c=l):(g=-1,c=m))}return u===c?c=m:c===-1&&(c=o.length),o.slice(u,c)}for(l=o.length-1;l>=0;--l)if(o.charCodeAt(l)===47){if(!h){u=l+1;break}}else c===-1&&(h=!1,c=l+1);return c===-1?\"\":o.slice(u,c)},extname:function(o){n(o);for(var f=-1,l=0,u=-1,c=!0,h=0,g=o.length-1;g>=0;--g){var m=o.charCodeAt(g);if(m!==47)u===-1&&(c=!1,u=g+1),m===46?f===-1?f=g:h!==1&&(h=1):f!==-1&&(h=-1);else if(!c){l=g+1;break}}return f===-1||u===-1||h===0||h===1&&f===u-1&&f===l+1?\"\":o.slice(f,u)},format:function(o){if(o===null||typeof o!=\"object\")throw new TypeError('The \"pathObject\" argument must be of type Object. Received type '+typeof o);return function(f,l){var u=l.dir||l.root,c=l.base||(l.name||\"\")+(l.ext||\"\");return u?u===l.root?u+c:u+\"/\"+c:c}(0,o)},parse:function(o){n(o);var f={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(o.length===0)return f;var l,u=o.charCodeAt(0),c=u===47;c?(f.root=\"/\",l=1):l=0;for(var h=-1,g=0,m=-1,p=!0,d=o.length-1,b=0;d>=l;--d)if((u=o.charCodeAt(d))!==47)m===-1&&(p=!1,m=d+1),u===46?h===-1?h=d:b!==1&&(b=1):h!==-1&&(b=-1);else if(!p){g=d+1;break}return h===-1||m===-1||b===0||b===1&&h===m-1&&h===g+1?m!==-1&&(f.base=f.name=g===0&&c?o.slice(1,m):o.slice(g,m)):(g===0&&c?(f.name=o.slice(1,h),f.base=o.slice(1,m)):(f.name=o.slice(g,h),f.base=o.slice(g,m)),f.ext=o.slice(h,m)),g>0?f.dir=o.slice(0,g-1):c&&(f.dir=\"/\"),f},sep:\"/\",delimiter:\":\",win32:null,posix:null};s.posix=s,e.exports=s},447:(e,n,a)=>{var s;if(a.r(n),a.d(n,{URI:()=>y,Utils:()=>V}),typeof process==\"object\")s=process.platform===\"win32\";else if(typeof navigator==\"object\"){var o=navigator.userAgent;s=o.indexOf(\"Windows\")>=0}var f,l,u=(f=function(T,S){return(f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(k,I){k.__proto__=I}||function(k,I){for(var F in I)Object.prototype.hasOwnProperty.call(I,F)&&(k[F]=I[F])})(T,S)},function(T,S){if(typeof S!=\"function\"&&S!==null)throw new TypeError(\"Class extends value \"+String(S)+\" is not a constructor or null\");function k(){this.constructor=T}f(T,S),T.prototype=S===null?Object.create(S):(k.prototype=S.prototype,new k)}),c=/^\\w[\\w\\d+.-]*$/,h=/^\\//,g=/^\\/\\//;function m(T,S){if(!T.scheme&&S)throw new Error('[UriError]: Scheme is missing: {scheme: \"\", authority: \"'.concat(T.authority,'\", path: \"').concat(T.path,'\", query: \"').concat(T.query,'\", fragment: \"').concat(T.fragment,'\"}'));if(T.scheme&&!c.test(T.scheme))throw new Error(\"[UriError]: Scheme contains illegal characters.\");if(T.path){if(T.authority){if(!h.test(T.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character')}else if(g.test(T.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")')}}var p=\"\",d=\"/\",b=/^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/,y=function(){function T(S,k,I,F,D,J){J===void 0&&(J=!1),typeof S==\"object\"?(this.scheme=S.scheme||p,this.authority=S.authority||p,this.path=S.path||p,this.query=S.query||p,this.fragment=S.fragment||p):(this.scheme=function(ue,G){return ue||G?ue:\"file\"}(S,J),this.authority=k||p,this.path=function(ue,G){switch(ue){case\"https\":case\"http\":case\"file\":G?G[0]!==d&&(G=d+G):G=d}return G}(this.scheme,I||p),this.query=F||p,this.fragment=D||p,m(this,J))}return T.isUri=function(S){return S instanceof T||!!S&&typeof S.authority==\"string\"&&typeof S.fragment==\"string\"&&typeof S.path==\"string\"&&typeof S.query==\"string\"&&typeof S.scheme==\"string\"&&typeof S.fsPath==\"string\"&&typeof S.with==\"function\"&&typeof S.toString==\"function\"},Object.defineProperty(T.prototype,\"fsPath\",{get:function(){return P(this,!1)},enumerable:!1,configurable:!0}),T.prototype.with=function(S){if(!S)return this;var k=S.scheme,I=S.authority,F=S.path,D=S.query,J=S.fragment;return k===void 0?k=this.scheme:k===null&&(k=p),I===void 0?I=this.authority:I===null&&(I=p),F===void 0?F=this.path:F===null&&(F=p),D===void 0?D=this.query:D===null&&(D=p),J===void 0?J=this.fragment:J===null&&(J=p),k===this.scheme&&I===this.authority&&F===this.path&&D===this.query&&J===this.fragment?this:new O(k,I,F,D,J)},T.parse=function(S,k){k===void 0&&(k=!1);var I=b.exec(S);return I?new O(I[2]||p,N(I[4]||p),N(I[5]||p),N(I[7]||p),N(I[9]||p),k):new O(p,p,p,p,p)},T.file=function(S){var k=p;if(s&&(S=S.replace(/\\\\/g,d)),S[0]===d&&S[1]===d){var I=S.indexOf(d,2);I===-1?(k=S.substring(2),S=d):(k=S.substring(2,I),S=S.substring(I)||d)}return new O(\"file\",k,S,p,p)},T.from=function(S){var k=new O(S.scheme,S.authority,S.path,S.query,S.fragment);return m(k,!0),k},T.prototype.toString=function(S){return S===void 0&&(S=!1),w(this,S)},T.prototype.toJSON=function(){return this},T.revive=function(S){if(S){if(S instanceof T)return S;var k=new O(S);return k._formatted=S.external,k._fsPath=S._sep===v?S.fsPath:null,k}return S},T}(),v=s?1:void 0,O=function(T){function S(){var k=T!==null&&T.apply(this,arguments)||this;return k._formatted=null,k._fsPath=null,k}return u(S,T),Object.defineProperty(S.prototype,\"fsPath\",{get:function(){return this._fsPath||(this._fsPath=P(this,!1)),this._fsPath},enumerable:!1,configurable:!0}),S.prototype.toString=function(k){return k===void 0&&(k=!1),k?w(this,!0):(this._formatted||(this._formatted=w(this,!1)),this._formatted)},S.prototype.toJSON=function(){var k={$mid:1};return this._fsPath&&(k.fsPath=this._fsPath,k._sep=v),this._formatted&&(k.external=this._formatted),this.path&&(k.path=this.path),this.scheme&&(k.scheme=this.scheme),this.authority&&(k.authority=this.authority),this.query&&(k.query=this.query),this.fragment&&(k.fragment=this.fragment),k},S}(y),E=((l={})[58]=\"%3A\",l[47]=\"%2F\",l[63]=\"%3F\",l[35]=\"%23\",l[91]=\"%5B\",l[93]=\"%5D\",l[64]=\"%40\",l[33]=\"%21\",l[36]=\"%24\",l[38]=\"%26\",l[39]=\"%27\",l[40]=\"%28\",l[41]=\"%29\",l[42]=\"%2A\",l[43]=\"%2B\",l[44]=\"%2C\",l[59]=\"%3B\",l[61]=\"%3D\",l[32]=\"%20\",l);function j(T,S){for(var k=void 0,I=-1,F=0;F<T.length;F++){var D=T.charCodeAt(F);if(D>=97&&D<=122||D>=65&&D<=90||D>=48&&D<=57||D===45||D===46||D===95||D===126||S&&D===47)I!==-1&&(k+=encodeURIComponent(T.substring(I,F)),I=-1),k!==void 0&&(k+=T.charAt(F));else{k===void 0&&(k=T.substr(0,F));var J=E[D];J!==void 0?(I!==-1&&(k+=encodeURIComponent(T.substring(I,F)),I=-1),k+=J):I===-1&&(I=F)}}return I!==-1&&(k+=encodeURIComponent(T.substring(I))),k!==void 0?k:T}function A(T){for(var S=void 0,k=0;k<T.length;k++){var I=T.charCodeAt(k);I===35||I===63?(S===void 0&&(S=T.substr(0,k)),S+=E[I]):S!==void 0&&(S+=T[k])}return S!==void 0?S:T}function P(T,S){var k;return k=T.authority&&T.path.length>1&&T.scheme===\"file\"?\"//\".concat(T.authority).concat(T.path):T.path.charCodeAt(0)===47&&(T.path.charCodeAt(1)>=65&&T.path.charCodeAt(1)<=90||T.path.charCodeAt(1)>=97&&T.path.charCodeAt(1)<=122)&&T.path.charCodeAt(2)===58?S?T.path.substr(1):T.path[1].toLowerCase()+T.path.substr(2):T.path,s&&(k=k.replace(/\\//g,\"\\\\\")),k}function w(T,S){var k=S?A:j,I=\"\",F=T.scheme,D=T.authority,J=T.path,ue=T.query,G=T.fragment;if(F&&(I+=F,I+=\":\"),(D||F===\"file\")&&(I+=d,I+=d),D){var ne=D.indexOf(\"@\");if(ne!==-1){var Oe=D.substr(0,ne);D=D.substr(ne+1),(ne=Oe.indexOf(\":\"))===-1?I+=k(Oe,!1):(I+=k(Oe.substr(0,ne),!1),I+=\":\",I+=k(Oe.substr(ne+1),!1)),I+=\"@\"}(ne=(D=D.toLowerCase()).indexOf(\":\"))===-1?I+=k(D,!1):(I+=k(D.substr(0,ne),!1),I+=D.substr(ne))}if(J){if(J.length>=3&&J.charCodeAt(0)===47&&J.charCodeAt(2)===58)(ce=J.charCodeAt(1))>=65&&ce<=90&&(J=\"/\".concat(String.fromCharCode(ce+32),\":\").concat(J.substr(3)));else if(J.length>=2&&J.charCodeAt(1)===58){var ce;(ce=J.charCodeAt(0))>=65&&ce<=90&&(J=\"\".concat(String.fromCharCode(ce+32),\":\").concat(J.substr(2)))}I+=k(J,!0)}return ue&&(I+=\"?\",I+=k(ue,!1)),G&&(I+=\"#\",I+=S?G:j(G,!1)),I}function C(T){try{return decodeURIComponent(T)}catch{return T.length>3?T.substr(0,3)+C(T.substr(3)):T}}var L=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function N(T){return T.match(L)?T.replace(L,function(S){return C(S)}):T}var V,R=a(470),H=function(T,S,k){if(k||arguments.length===2)for(var I,F=0,D=S.length;F<D;F++)!I&&F in S||(I||(I=Array.prototype.slice.call(S,0,F)),I[F]=S[F]);return T.concat(I||Array.prototype.slice.call(S))},q=R.posix||R;(function(T){T.joinPath=function(S){for(var k=[],I=1;I<arguments.length;I++)k[I-1]=arguments[I];return S.with({path:q.join.apply(q,H([S.path],k,!1))})},T.resolvePath=function(S){for(var k=[],I=1;I<arguments.length;I++)k[I-1]=arguments[I];var F=S.path||\"/\";return S.with({path:q.resolve.apply(q,H([F],k,!1))})},T.dirname=function(S){var k=q.dirname(S.path);return k.length===1&&k.charCodeAt(0)===46?S:S.with({path:k})},T.basename=function(S){return q.basename(S.path)},T.extname=function(S){return q.extname(S.path)}})(V||(V={}))}},r={};function i(e){if(r[e])return r[e].exports;var n=r[e]={exports:{}};return t[e](n,n.exports,i),n.exports}return i.d=(e,n)=>{for(var a in n)i.o(n,a)&&!i.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:n[a]})},i.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),i.r=e=>{typeof Symbol<\"u\"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i(447)})();var{URI:ye,Utils:Pi}=Fr;function $r(t,r){if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");for(var i=String(t),e=\"\",n=r?!!r.extended:!1,a=r?!!r.globstar:!1,s=!1,o=r&&typeof r.flags==\"string\"?r.flags:\"\",f,l=0,u=i.length;l<u;l++)switch(f=i[l],f){case\"/\":case\"$\":case\"^\":case\"+\":case\".\":case\"(\":case\")\":case\"=\":case\"!\":case\"|\":e+=\"\\\\\"+f;break;case\"?\":if(n){e+=\".\";break}case\"[\":case\"]\":if(n){e+=f;break}case\"{\":if(n){s=!0,e+=\"(\";break}case\"}\":if(n){s=!1,e+=\")\";break}case\",\":if(s){e+=\"|\";break}e+=\"\\\\\"+f;break;case\"*\":for(var c=i[l-1],h=1;i[l+1]===\"*\";)h++,l++;var g=i[l+1];if(!a)e+=\".*\";else{var m=h>1&&(c===\"/\"||c===void 0||c===\"{\"||c===\",\")&&(g===\"/\"||g===void 0||g===\",\"||g===\"}\");m?(g===\"/\"?l++:c===\"/\"&&e.endsWith(\"\\\\/\")&&(e=e.substr(0,e.length-2)),e+=\"((?:[^/]*(?:/|$))*)\"):e+=\"([^/]*)\"}break;default:e+=f}return(!o||!~o.indexOf(\"g\"))&&(e=\"^\"+e+\"$\"),new RegExp(e,o)}var de=he(),En=\"!\",jn=\"/\",Nn=function(){function t(r,i){this.globWrappers=[];try{for(var e=0,n=r;e<n.length;e++){var a=n[e],s=a[0]!==En;s||(a=a.substring(1)),a.length>0&&(a[0]===jn&&(a=a.substring(1)),this.globWrappers.push({regexp:$r(\"**/\"+a,{extended:!0,globstar:!0}),include:s}))}this.uris=i}catch{this.globWrappers.length=0,this.uris=[]}}return t.prototype.matchesPattern=function(r){for(var i=!1,e=0,n=this.globWrappers;e<n.length;e++){var a=n[e],s=a.regexp,o=a.include;s.test(r)&&(i=o)}return i},t.prototype.getURIs=function(){return this.uris},t}(),Mn=function(){function t(r,i,e){this.service=r,this.uri=i,this.dependencies=new Set,this.anchors=void 0,e&&(this.unresolvedSchema=this.service.promise.resolve(new ze(e)))}return t.prototype.getUnresolvedSchema=function(){return this.unresolvedSchema||(this.unresolvedSchema=this.service.loadSchema(this.uri)),this.unresolvedSchema},t.prototype.getResolvedSchema=function(){var r=this;return this.resolvedSchema||(this.resolvedSchema=this.getUnresolvedSchema().then(function(i){return r.service.resolveSchemaContent(i,r)})),this.resolvedSchema},t.prototype.clearSchema=function(){var r=!!this.unresolvedSchema;return this.resolvedSchema=void 0,this.unresolvedSchema=void 0,this.dependencies.clear(),this.anchors=void 0,r},t}(),ze=function(){function t(r,i){i===void 0&&(i=[]),this.schema=r,this.errors=i}return t}();var Dr=function(){function t(r,i){i===void 0&&(i=[]),this.schema=r,this.errors=i}return t.prototype.getSection=function(r){var i=this.getSectionRecursive(r,this.schema);if(i)return K(i)},t.prototype.getSectionRecursive=function(r,i){if(!i||typeof i==\"boolean\"||r.length===0)return i;var e=r.shift();if(i.properties&&typeof i.properties[e])return this.getSectionRecursive(r,i.properties[e]);if(i.patternProperties)for(var n=0,a=Object.keys(i.patternProperties);n<a.length;n++){var s=a[n],o=xe(s);if(o?.test(e))return this.getSectionRecursive(r,i.patternProperties[s])}else{if(typeof i.additionalProperties==\"object\")return this.getSectionRecursive(r,i.additionalProperties);if(e.match(\"[0-9]+\")){if(Array.isArray(i.items)){var f=parseInt(e,10);if(!isNaN(f)&&i.items[f])return this.getSectionRecursive(r,i.items[f])}else if(i.items)return this.getSectionRecursive(r,i.items)}}},t}();var Rr=function(){function t(r,i,e){this.contextService=i,this.requestService=r,this.promiseConstructor=e||Promise,this.callOnDispose=[],this.contributionSchemas={},this.contributionAssociations=[],this.schemasById={},this.filePatternAssociations=[],this.registeredSchemasIds={}}return t.prototype.getRegisteredSchemaIds=function(r){return Object.keys(this.registeredSchemasIds).filter(function(i){var e=ye.parse(i).scheme;return e!==\"schemaservice\"&&(!r||r(e))})},Object.defineProperty(t.prototype,\"promise\",{get:function(){return this.promiseConstructor},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){for(;this.callOnDispose.length>0;)this.callOnDispose.pop()()},t.prototype.onResourceChange=function(r){var i=this;this.cachedSchemaForResource=void 0;var e=!1;r=be(r);for(var n=[r],a=Object.keys(this.schemasById).map(function(l){return i.schemasById[l]});n.length;)for(var s=n.pop(),o=0;o<a.length;o++){var f=a[o];f&&(f.uri===s||f.dependencies.has(s))&&(f.uri!==s&&n.push(f.uri),f.clearSchema()&&(e=!0),a[o]=void 0)}return e},t.prototype.setSchemaContributions=function(r){if(r.schemas){var i=r.schemas;for(var e in i){var n=be(e);this.contributionSchemas[n]=this.addSchemaHandle(n,i[e])}}if(Array.isArray(r.schemaAssociations))for(var a=r.schemaAssociations,s=0,o=a;s<o.length;s++){var f=o[s],l=f.uris.map(be),u=this.addFilePatternAssociation(f.pattern,l);this.contributionAssociations.push(u)}},t.prototype.addSchemaHandle=function(r,i){var e=new Mn(this,r,i);return this.schemasById[r]=e,e},t.prototype.getOrAddSchemaHandle=function(r,i){return this.schemasById[r]||this.addSchemaHandle(r,i)},t.prototype.addFilePatternAssociation=function(r,i){var e=new Nn(r,i);return this.filePatternAssociations.push(e),e},t.prototype.registerExternalSchema=function(r,i,e){var n=be(r);return this.registeredSchemasIds[n]=!0,this.cachedSchemaForResource=void 0,i&&this.addFilePatternAssociation(i,[n]),e?this.addSchemaHandle(n,e):this.getOrAddSchemaHandle(n)},t.prototype.clearExternalSchemas=function(){this.schemasById={},this.filePatternAssociations=[],this.registeredSchemasIds={},this.cachedSchemaForResource=void 0;for(var r in this.contributionSchemas)this.schemasById[r]=this.contributionSchemas[r],this.registeredSchemasIds[r]=!0;for(var i=0,e=this.contributionAssociations;i<e.length;i++){var n=e[i];this.filePatternAssociations.push(n)}},t.prototype.getResolvedSchema=function(r){var i=be(r),e=this.schemasById[i];return e?e.getResolvedSchema():this.promise.resolve(void 0)},t.prototype.loadSchema=function(r){if(!this.requestService){var i=de(\"json.schema.norequestservice\",\"Unable to load schema from '{0}'. No schema request service available\",ot(r));return this.promise.resolve(new ze({},[i]))}return this.requestService(r).then(function(e){if(!e){var n=de(\"json.schema.nocontent\",\"Unable to load schema from '{0}': No content.\",ot(r));return new ze({},[n])}var a={},s=[];a=Qt(e,s);var o=s.length?[de(\"json.schema.invalidFormat\",\"Unable to parse content from '{0}': Parse error at offset {1}.\",ot(r),s[0].offset)]:[];return new ze(a,o)},function(e){var n=e.toString(),a=e.toString().split(\"Error: \");return a.length>1&&(n=a[1]),pe(n,\".\")&&(n=n.substr(0,n.length-1)),new ze({},[de(\"json.schema.nocontent\",\"Unable to load schema from '{0}': {1}.\",ot(r),n)])})},t.prototype.resolveSchemaContent=function(r,i){var e=this,n=r.errors.slice(0),a=r.schema;if(a.$schema){var s=be(a.$schema);if(s===\"http://json-schema.org/draft-03/schema\")return this.promise.resolve(new Dr({},[de(\"json.schema.draft03.notsupported\",\"Draft-03 schemas are not supported.\")]));s===\"https://json-schema.org/draft/2019-09/schema\"?n.push(de(\"json.schema.draft201909.notsupported\",\"Draft 2019-09 schemas are not yet fully supported.\")):s===\"https://json-schema.org/draft/2020-12/schema\"&&n.push(de(\"json.schema.draft202012.notsupported\",\"Draft 2020-12 schemas are not yet fully supported.\"))}var o=this.contextService,f=function(p,d){d=decodeURIComponent(d);var b=p;return d[0]===\"/\"&&(d=d.substring(1)),d.split(\"/\").some(function(y){return y=y.replace(/~1/g,\"/\").replace(/~0/g,\"~\"),b=b[y],!b}),b},l=function(p,d,b){return d.anchors||(d.anchors=m(p)),d.anchors.get(b)},u=function(p,d){for(var b in d)d.hasOwnProperty(b)&&!p.hasOwnProperty(b)&&b!==\"id\"&&b!==\"$id\"&&(p[b]=d[b])},c=function(p,d,b,y){var v;y===void 0||y.length===0?v=d:y.charAt(0)===\"/\"?v=f(d,y):v=l(d,b,y),v?u(p,v):n.push(de(\"json.schema.invalidid\",\"$ref '{0}' in '{1}' can not be resolved.\",y,b.uri))},h=function(p,d,b,y){o&&!/^[A-Za-z][A-Za-z0-9+\\-.+]*:\\/\\/.*/.test(d)&&(d=o.resolveRelativePath(d,y.uri)),d=be(d);var v=e.getOrAddSchemaHandle(d);return v.getUnresolvedSchema().then(function(O){if(y.dependencies.add(d),O.errors.length){var E=b?d+\"#\"+b:d;n.push(de(\"json.schema.problemloadingref\",\"Problems loading reference '{0}': {1}\",E,O.errors[0]))}return c(p,O.schema,v,b),g(p,O.schema,v)})},g=function(p,d,b){var y=[];return e.traverseNodes(p,function(v){for(var O=new Set;v.$ref;){var E=v.$ref,j=E.split(\"#\",2);if(delete v.$ref,j[0].length>0){y.push(h(v,j[0],j[1],b));return}else if(!O.has(E)){var A=j[1];c(v,d,b,A),O.add(E)}}}),e.promise.all(y)},m=function(p){var d=new Map;return e.traverseNodes(p,function(b){var y=b.$id||b.id;if(typeof y==\"string\"&&y.charAt(0)===\"#\"){var v=y.substring(1);d.has(v)?n.push(de(\"json.schema.duplicateid\",\"Duplicate id declaration: '{0}'\",y)):d.set(v,b)}}),d};return g(a,a,i).then(function(p){return new Dr(a,n)})},t.prototype.traverseNodes=function(r,i){if(!r||typeof r!=\"object\")return Promise.resolve(null);for(var e=new Set,n=function(){for(var l=[],u=0;u<arguments.length;u++)l[u]=arguments[u];for(var c=0,h=l;c<h.length;c++){var g=h[c];typeof g==\"object\"&&o.push(g)}},a=function(){for(var l=[],u=0;u<arguments.length;u++)l[u]=arguments[u];for(var c=0,h=l;c<h.length;c++){var g=h[c];if(typeof g==\"object\")for(var m in g){var p=m,d=g[p];typeof d==\"object\"&&o.push(d)}}},s=function(){for(var l=[],u=0;u<arguments.length;u++)l[u]=arguments[u];for(var c=0,h=l;c<h.length;c++){var g=h[c];if(Array.isArray(g))for(var m=0,p=g;m<p.length;m++){var d=p[m];typeof d==\"object\"&&o.push(d)}}},o=[r],f=o.pop();f;)e.has(f)||(e.add(f),i(f),n(f.items,f.additionalItems,f.additionalProperties,f.not,f.contains,f.propertyNames,f.if,f.then,f.else),a(f.definitions,f.properties,f.patternProperties,f.dependencies),s(f.anyOf,f.allOf,f.oneOf,f.items)),f=o.pop()},t.prototype.getSchemaFromProperty=function(r,i){var e,n;if(((e=i.root)===null||e===void 0?void 0:e.type)===\"object\")for(var a=0,s=i.root.properties;a<s.length;a++){var o=s[a];if(o.keyNode.value===\"$schema\"&&((n=o.valueNode)===null||n===void 0?void 0:n.type)===\"string\"){var f=o.valueNode.value;return this.contextService&&!/^\\w[\\w\\d+.-]*:/.test(f)&&(f=this.contextService.resolveRelativePath(f,r)),f}}},t.prototype.getAssociatedSchemas=function(r){for(var i=Object.create(null),e=[],n=Vn(r),a=0,s=this.filePatternAssociations;a<s.length;a++){var o=s[a];if(o.matchesPattern(n))for(var f=0,l=o.getURIs();f<l.length;f++){var u=l[f];i[u]||(e.push(u),i[u]=!0)}}return e},t.prototype.getSchemaURIsForResource=function(r,i){var e=i&&this.getSchemaFromProperty(r,i);return e?[e]:this.getAssociatedSchemas(r)},t.prototype.getSchemaForResource=function(r,i){if(i){var e=this.getSchemaFromProperty(r,i);if(e){var n=be(e);return this.getOrAddSchemaHandle(n).getResolvedSchema()}}if(this.cachedSchemaForResource&&this.cachedSchemaForResource.resource===r)return this.cachedSchemaForResource.resolvedSchema;var a=this.getAssociatedSchemas(r),s=a.length>0?this.createCombinedSchema(r,a).getResolvedSchema():this.promise.resolve(void 0);return this.cachedSchemaForResource={resource:r,resolvedSchema:s},s},t.prototype.createCombinedSchema=function(r,i){if(i.length===1)return this.getOrAddSchemaHandle(i[0]);var e=\"schemaservice://combinedSchema/\"+encodeURIComponent(r),n={allOf:i.map(function(a){return{$ref:a}})};return this.addSchemaHandle(e,n)},t.prototype.getMatchingSchemas=function(r,i,e){if(e){var n=e.id||\"schemaservice://untitled/matchingSchemas/\"+Ln++,a=this.addSchemaHandle(n,e);return a.getResolvedSchema().then(function(s){return i.getMatchingSchemas(s.schema).filter(function(o){return!o.inverted})})}return this.getSchemaForResource(r.uri,i).then(function(s){return s?i.getMatchingSchemas(s.schema).filter(function(o){return!o.inverted}):[]})},t}();var Ln=0;function be(t){try{return ye.parse(t).toString(!0)}catch{return t}}function Vn(t){try{return ye.parse(t).with({fragment:null,query:null}).toString(!0)}catch{return t}}function ot(t){try{var r=ye.parse(t);if(r.scheme===\"file\")return r.fsPath}catch{}return t}function Ur(t,r){var i=[],e=[],n=[],a=-1,s=le(t.getText(),!1),o=s.scan();function f(C){i.push(C),e.push(n.length)}for(;o!==17;){switch(o){case 1:case 3:{var l=t.positionAt(s.getTokenOffset()).line,u={startLine:l,endLine:l,kind:o===1?\"object\":\"array\"};n.push(u);break}case 2:case 4:{var c=o===2?\"object\":\"array\";if(n.length>0&&n[n.length-1].kind===c){var u=n.pop(),h=t.positionAt(s.getTokenOffset()).line;u&&h>u.startLine+1&&a!==u.startLine&&(u.endLine=h-1,f(u),a=u.startLine)}break}case 13:{var l=t.positionAt(s.getTokenOffset()).line,g=t.positionAt(s.getTokenOffset()+s.getTokenLength()).line;s.getTokenError()===1&&l+1<t.lineCount?s.setPosition(t.offsetAt(re.create(l+1,0))):l<g&&(f({startLine:l,endLine:g,kind:Ae.Comment}),a=l);break}case 12:{var m=t.getText().substr(s.getTokenOffset(),s.getTokenLength()),p=m.match(/^\\/\\/\\s*#(region\\b)|(endregion\\b)/);if(p){var h=t.positionAt(s.getTokenOffset()).line;if(p[1]){var u={startLine:h,endLine:h,kind:Ae.Region};n.push(u)}else{for(var d=n.length-1;d>=0&&n[d].kind!==Ae.Region;)d--;if(d>=0){var u=n[d];n.length=d,h>u.startLine&&a!==u.startLine&&(u.endLine=h,f(u),a=u.startLine)}}}break}}o=s.scan()}var b=r&&r.rangeLimit;if(typeof b!=\"number\"||i.length<=b)return i;r&&r.onRangeLimitExceeded&&r.onRangeLimitExceeded(t.uri);for(var y=[],v=0,O=e;v<O.length;v++){var E=O[v];E<30&&(y[E]=(y[E]||0)+1)}for(var j=0,A=0,d=0;d<y.length;d++){var P=y[d];if(P){if(P+j>b){A=d;break}j+=P}}for(var w=[],d=0;d<i.length;d++){var E=e[d];typeof E==\"number\"&&(E<A||E===A&&j++<b)&&w.push(i[d])}return w}function Wr(t,r,i){function e(o){for(var f=t.offsetAt(o),l=i.getNodeFromOffset(f,!0),u=[];l;){switch(l.type){case\"string\":case\"object\":case\"array\":var c=l.offset+1,h=l.offset+l.length-1;c<h&&f>=c&&f<=h&&u.push(n(c,h)),u.push(n(l.offset,l.offset+l.length));break;case\"number\":case\"boolean\":case\"null\":case\"property\":u.push(n(l.offset,l.offset+l.length));break}if(l.type===\"property\"||l.parent&&l.parent.type===\"array\"){var g=s(l.offset+l.length,5);g!==-1&&u.push(n(l.offset,g))}l=l.parent}for(var m=void 0,p=u.length-1;p>=0;p--)m=Ne.create(u[p],m);return m||(m=Ne.create(U.create(o,o))),m}function n(o,f){return U.create(t.positionAt(o),t.positionAt(f))}var a=le(t.getText(),!0);function s(o,f){a.setPosition(o);var l=a.scan();return l===f?a.getTokenOffset()+a.getTokenLength():-1}return r.map(e)}function Jr(t,r){var i=[];return r.visit(function(e){var n;if(e.type===\"property\"&&e.keyNode.value===\"$ref\"&&((n=e.valueNode)===null||n===void 0?void 0:n.type)===\"string\"){var a=e.valueNode.value,s=$n(r,a);if(s){var o=t.positionAt(s.offset);i.push({target:\"\".concat(t.uri,\"#\").concat(o.line+1,\",\").concat(o.character+1),range:Fn(t,e.valueNode)})}}return!0}),Promise.resolve(i)}function Fn(t,r){return U.create(t.positionAt(r.offset+1),t.positionAt(r.offset+r.length-1))}function $n(t,r){var i=Dn(r);return i?Jt(i,t.root):null}function Jt(t,r){if(!r)return null;if(t.length===0)return r;var i=t.shift();if(r&&r.type===\"object\"){var e=r.properties.find(function(s){return s.keyNode.value===i});return e?Jt(t,e.valueNode):null}else if(r&&r.type===\"array\"&&i.match(/^(0|[1-9][0-9]*)$/)){var n=Number.parseInt(i),a=r.items[n];return a?Jt(t,a):null}return null}function Dn(t){return t===\"#\"?[]:t[0]!==\"#\"||t[1]!==\"/\"?null:t.substring(2).split(/\\//).map(Rn)}function Rn(t){return t.replace(/~1/g,\"/\").replace(/~0/g,\"~\")}function qr(t){var r=t.promiseConstructor||Promise,i=new Rr(t.schemaRequestService,t.workspaceContext,r);i.setSchemaContributions(at);var e=new Cr(i,t.contributions,r,t.clientCapabilities),n=new Pr(i,t.contributions,r),a=new Lr(i),s=new Ir(i,r);return{configure:function(o){i.clearExternalSchemas(),o.schemas&&o.schemas.forEach(function(f){i.registerExternalSchema(f.uri,f.fileMatch,f.schema)}),s.configure(o)},resetSchema:function(o){return i.onResourceChange(o)},doValidation:s.doValidation.bind(s),getLanguageStatus:s.getLanguageStatus.bind(s),parseJSONDocument:function(o){return Or(o,{collectComments:!0})},newJSONDocument:function(o,f){return Tr(o,f)},getMatchingSchemas:i.getMatchingSchemas.bind(i),doResolve:e.doResolve.bind(e),doComplete:e.doComplete.bind(e),findDocumentSymbols:a.findDocumentSymbols.bind(a),findDocumentSymbols2:a.findDocumentSymbols2.bind(a),findDocumentColors:a.findDocumentColors.bind(a),getColorPresentations:a.getColorPresentations.bind(a),doHover:n.doHover.bind(n),getFoldingRanges:Ur,getSelectionRanges:Wr,findDefinition:function(){return Promise.resolve([])},findLinks:Jr,format:function(o,f,l){var u=void 0;if(f){var c=o.offsetAt(f.start),h=o.offsetAt(f.end)-c;u={offset:c,length:h}}var g={tabSize:l?l.tabSize:4,insertSpaces:l?.insertSpaces===!0,insertFinalNewline:l?.insertFinalNewline===!0,eol:`\n`};return tr(o.getText(),u,g).map(function(m){return Y.replace(U.create(o.positionAt(m.offset),o.positionAt(m.offset+m.length)),m.content)})}}}var zr;typeof fetch<\"u\"&&(zr=function(t){return fetch(t).then(r=>r.text())});var st=class{_ctx;_languageService;_languageSettings;_languageId;constructor(r,i){this._ctx=r,this._languageSettings=i.languageSettings,this._languageId=i.languageId,this._languageService=qr({workspaceContext:{resolveRelativePath:(e,n)=>{let a=n.substr(0,n.lastIndexOf(\"/\")+1);return qn(a,e)}},schemaRequestService:i.enableSchemaRequest?zr:void 0}),this._languageService.configure(this._languageSettings)}async doValidation(r){let i=this._getTextDocument(r);if(i){let e=this._languageService.parseJSONDocument(i);return this._languageService.doValidation(i,e,this._languageSettings)}return Promise.resolve([])}async doComplete(r,i){let e=this._getTextDocument(r);if(!e)return null;let n=this._languageService.parseJSONDocument(e);return this._languageService.doComplete(e,i,n)}async doResolve(r){return this._languageService.doResolve(r)}async doHover(r,i){let e=this._getTextDocument(r);if(!e)return null;let n=this._languageService.parseJSONDocument(e);return this._languageService.doHover(e,i,n)}async format(r,i,e){let n=this._getTextDocument(r);if(!n)return[];let a=this._languageService.format(n,i,e);return Promise.resolve(a)}async resetSchema(r){return Promise.resolve(this._languageService.resetSchema(r))}async findDocumentSymbols(r){let i=this._getTextDocument(r);if(!i)return[];let e=this._languageService.parseJSONDocument(i),n=this._languageService.findDocumentSymbols(i,e);return Promise.resolve(n)}async findDocumentColors(r){let i=this._getTextDocument(r);if(!i)return[];let e=this._languageService.parseJSONDocument(i),n=this._languageService.findDocumentColors(i,e);return Promise.resolve(n)}async getColorPresentations(r,i,e){let n=this._getTextDocument(r);if(!n)return[];let a=this._languageService.parseJSONDocument(n),s=this._languageService.getColorPresentations(n,a,i,e);return Promise.resolve(s)}async getFoldingRanges(r,i){let e=this._getTextDocument(r);if(!e)return[];let n=this._languageService.getFoldingRanges(e,i);return Promise.resolve(n)}async getSelectionRanges(r,i){let e=this._getTextDocument(r);if(!e)return[];let n=this._languageService.parseJSONDocument(e),a=this._languageService.getSelectionRanges(e,i,n);return Promise.resolve(a)}_getTextDocument(r){let i=this._ctx.getMirrorModels();for(let e of i)if(e.uri.toString()===r)return We.create(r,this._languageId,e.version,e.getValue());return null}},Wn=\"/\".charCodeAt(0),qt=\".\".charCodeAt(0);function Jn(t){return t.charCodeAt(0)===Wn}function qn(t,r){if(Jn(r)){let i=ye.parse(t),e=r.split(\"/\");return i.with({path:Br(e)}).toString()}return zn(t,r)}function Br(t){let r=[];for(let e of t)e.length===0||e.length===1&&e.charCodeAt(0)===qt||(e.length===2&&e.charCodeAt(0)===qt&&e.charCodeAt(1)===qt?r.pop():r.push(e));t.length>1&&t[t.length-1].length===0&&r.push(\"\");let i=r.join(\"/\");return t[0].length===0&&(i=\"/\"+i),i}function zn(t,...r){let i=ye.parse(t),e=i.path.split(\"/\");for(let n of r)e.push(...n.split(\"/\"));return i.with({path:Br(e)}).toString()}function Bn(t,r){return new st(t,r)}return Yr(_n);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/language/typescript/tsMode.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/language/typescript/tsMode\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var ee=Object.create;var I=Object.defineProperty;var te=Object.getOwnPropertyDescriptor;var ie=Object.getOwnPropertyNames;var re=Object.getPrototypeOf,se=Object.prototype.hasOwnProperty;var ne=(s,e,t)=>e in s?I(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var $=(s=>typeof require!=\"undefined\"?require:typeof Proxy!=\"undefined\"?new Proxy(s,{get:(e,t)=>(typeof require!=\"undefined\"?require:e)[t]}):s)(function(s){if(typeof require!=\"undefined\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+s+'\" is not supported')});var oe=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),ae=(s,e)=>{for(var t in e)I(s,t,{get:e[t],enumerable:!0})},V=(s,e,t,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let a of ie(e))!se.call(s,a)&&a!==t&&I(s,a,{get:()=>e[a],enumerable:!(i=te(e,a))||i.enumerable});return s},z=(s,e,t)=>(V(s,e,\"default\"),t&&V(t,e,\"default\")),J=(s,e,t)=>(t=s!=null?ee(re(s)):{},V(e||!s||!s.__esModule?I(t,\"default\",{value:s,enumerable:!0}):t,s)),le=s=>V(I({},\"__esModule\",{value:!0}),s);var b=(s,e,t)=>(ne(s,typeof e!=\"symbol\"?e+\"\":e,t),t);var q=oe((ye,G)=>{var ce=J($(\"vs/editor/editor.api\"));G.exports=ce});var be={};ae(be,{Adapter:()=>S,CodeActionAdaptor:()=>N,DefinitionAdapter:()=>M,DiagnosticsAdapter:()=>D,DocumentHighlightAdapter:()=>L,FormatAdapter:()=>O,FormatHelper:()=>w,FormatOnTypeAdapter:()=>E,InlayHintsAdapter:()=>H,Kind:()=>c,LibFiles:()=>P,OutlineAdapter:()=>R,QuickInfoAdapter:()=>F,ReferenceAdapter:()=>A,RenameAdapter:()=>W,SignatureHelpAdapter:()=>_,SuggestAdapter:()=>v,WorkerManager:()=>T,flattenDiagnosticMessageText:()=>K,getJavaScriptWorker:()=>de,getTypeScriptWorker:()=>fe,setupJavaScript:()=>pe,setupTypeScript:()=>ge});var r={};z(r,J(q()));var T=class{constructor(e,t){this._modeId=e;this._defaults=t;this._worker=null,this._client=null,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker()),this._updateExtraLibsToken=0,this._extraLibsChangeListener=this._defaults.onDidExtraLibsChange(()=>this._updateExtraLibs())}_configChangeListener;_updateExtraLibsToken;_extraLibsChangeListener;_worker;_client;dispose(){this._configChangeListener.dispose(),this._extraLibsChangeListener.dispose(),this._stopWorker()}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}async _updateExtraLibs(){if(!this._worker)return;let e=++this._updateExtraLibsToken,t=await this._worker.getProxy();this._updateExtraLibsToken===e&&t.updateExtraLibs(this._defaults.getExtraLibs())}_getClient(){return this._client||(this._client=(async()=>(this._worker=r.editor.createWebWorker({moduleId:\"vs/language/typescript/tsWorker\",label:this._modeId,keepIdleModels:!0,createData:{compilerOptions:this._defaults.getCompilerOptions(),extraLibs:this._defaults.getExtraLibs(),customWorkerPath:this._defaults.workerOptions.customWorkerPath,inlayHintsOptions:this._defaults.inlayHintsOptions}}),this._defaults.getEagerModelSync()?await this._worker.withSyncedResources(r.editor.getModels().filter(e=>e.getLanguageId()===this._modeId).map(e=>e.uri)):await this._worker.getProxy()))()),this._client}async getLanguageServiceWorker(...e){let t=await this._getClient();return this._worker&&await this._worker.withSyncedResources(e),t}};var Q=$(\"./monaco.contribution\");var n={};n[\"lib.d.ts\"]=!0;n[\"lib.decorators.d.ts\"]=!0;n[\"lib.decorators.legacy.d.ts\"]=!0;n[\"lib.dom.d.ts\"]=!0;n[\"lib.dom.iterable.d.ts\"]=!0;n[\"lib.es2015.collection.d.ts\"]=!0;n[\"lib.es2015.core.d.ts\"]=!0;n[\"lib.es2015.d.ts\"]=!0;n[\"lib.es2015.generator.d.ts\"]=!0;n[\"lib.es2015.iterable.d.ts\"]=!0;n[\"lib.es2015.promise.d.ts\"]=!0;n[\"lib.es2015.proxy.d.ts\"]=!0;n[\"lib.es2015.reflect.d.ts\"]=!0;n[\"lib.es2015.symbol.d.ts\"]=!0;n[\"lib.es2015.symbol.wellknown.d.ts\"]=!0;n[\"lib.es2016.array.include.d.ts\"]=!0;n[\"lib.es2016.d.ts\"]=!0;n[\"lib.es2016.full.d.ts\"]=!0;n[\"lib.es2017.d.ts\"]=!0;n[\"lib.es2017.full.d.ts\"]=!0;n[\"lib.es2017.intl.d.ts\"]=!0;n[\"lib.es2017.object.d.ts\"]=!0;n[\"lib.es2017.sharedmemory.d.ts\"]=!0;n[\"lib.es2017.string.d.ts\"]=!0;n[\"lib.es2017.typedarrays.d.ts\"]=!0;n[\"lib.es2018.asyncgenerator.d.ts\"]=!0;n[\"lib.es2018.asynciterable.d.ts\"]=!0;n[\"lib.es2018.d.ts\"]=!0;n[\"lib.es2018.full.d.ts\"]=!0;n[\"lib.es2018.intl.d.ts\"]=!0;n[\"lib.es2018.promise.d.ts\"]=!0;n[\"lib.es2018.regexp.d.ts\"]=!0;n[\"lib.es2019.array.d.ts\"]=!0;n[\"lib.es2019.d.ts\"]=!0;n[\"lib.es2019.full.d.ts\"]=!0;n[\"lib.es2019.intl.d.ts\"]=!0;n[\"lib.es2019.object.d.ts\"]=!0;n[\"lib.es2019.string.d.ts\"]=!0;n[\"lib.es2019.symbol.d.ts\"]=!0;n[\"lib.es2020.bigint.d.ts\"]=!0;n[\"lib.es2020.d.ts\"]=!0;n[\"lib.es2020.date.d.ts\"]=!0;n[\"lib.es2020.full.d.ts\"]=!0;n[\"lib.es2020.intl.d.ts\"]=!0;n[\"lib.es2020.number.d.ts\"]=!0;n[\"lib.es2020.promise.d.ts\"]=!0;n[\"lib.es2020.sharedmemory.d.ts\"]=!0;n[\"lib.es2020.string.d.ts\"]=!0;n[\"lib.es2020.symbol.wellknown.d.ts\"]=!0;n[\"lib.es2021.d.ts\"]=!0;n[\"lib.es2021.full.d.ts\"]=!0;n[\"lib.es2021.intl.d.ts\"]=!0;n[\"lib.es2021.promise.d.ts\"]=!0;n[\"lib.es2021.string.d.ts\"]=!0;n[\"lib.es2021.weakref.d.ts\"]=!0;n[\"lib.es2022.array.d.ts\"]=!0;n[\"lib.es2022.d.ts\"]=!0;n[\"lib.es2022.error.d.ts\"]=!0;n[\"lib.es2022.full.d.ts\"]=!0;n[\"lib.es2022.intl.d.ts\"]=!0;n[\"lib.es2022.object.d.ts\"]=!0;n[\"lib.es2022.regexp.d.ts\"]=!0;n[\"lib.es2022.sharedmemory.d.ts\"]=!0;n[\"lib.es2022.string.d.ts\"]=!0;n[\"lib.es2023.array.d.ts\"]=!0;n[\"lib.es2023.d.ts\"]=!0;n[\"lib.es2023.full.d.ts\"]=!0;n[\"lib.es5.d.ts\"]=!0;n[\"lib.es6.d.ts\"]=!0;n[\"lib.esnext.d.ts\"]=!0;n[\"lib.esnext.full.d.ts\"]=!0;n[\"lib.esnext.intl.d.ts\"]=!0;n[\"lib.scripthost.d.ts\"]=!0;n[\"lib.webworker.d.ts\"]=!0;n[\"lib.webworker.importscripts.d.ts\"]=!0;n[\"lib.webworker.iterable.d.ts\"]=!0;function K(s,e,t=0){if(typeof s==\"string\")return s;if(s===void 0)return\"\";let i=\"\";if(t){i+=e;for(let a=0;a<t;a++)i+=\"  \"}if(i+=s.messageText,t++,s.next)for(let a of s.next)i+=K(a,e,t);return i}function x(s){return s?s.map(e=>e.text).join(\"\"):\"\"}var S=class{constructor(e){this._worker=e}_textSpanToRange(e,t){let i=e.getPositionAt(t.start),a=e.getPositionAt(t.start+t.length),{lineNumber:u,column:g}=i,{lineNumber:p,column:o}=a;return{startLineNumber:u,startColumn:g,endLineNumber:p,endColumn:o}}},P=class{constructor(e){this._worker=e;this._libFiles={},this._hasFetchedLibFiles=!1,this._fetchLibFilesPromise=null}_libFiles;_hasFetchedLibFiles;_fetchLibFilesPromise;isLibFile(e){return e&&e.path.indexOf(\"/lib.\")===0?!!n[e.path.slice(1)]:!1}getOrCreateModel(e){let t=r.Uri.parse(e),i=r.editor.getModel(t);if(i)return i;if(this.isLibFile(t)&&this._hasFetchedLibFiles)return r.editor.createModel(this._libFiles[t.path.slice(1)],\"typescript\",t);let a=Q.typescriptDefaults.getExtraLibs()[e];return a?r.editor.createModel(a.content,\"typescript\",t):null}_containsLibFile(e){for(let t of e)if(this.isLibFile(t))return!0;return!1}async fetchLibFilesIfNecessary(e){!this._containsLibFile(e)||await this._fetchLibFiles()}_fetchLibFiles(){return this._fetchLibFilesPromise||(this._fetchLibFilesPromise=this._worker().then(e=>e.getLibFiles()).then(e=>{this._hasFetchedLibFiles=!0,this._libFiles=e})),this._fetchLibFilesPromise}};var D=class extends S{constructor(t,i,a,u){super(u);this._libFiles=t;this._defaults=i;this._selector=a;let g=l=>{if(l.getLanguageId()!==a)return;let f=()=>{let{onlyVisible:k}=this._defaults.getDiagnosticsOptions();k?l.isAttachedToEditor()&&this._doValidate(l):this._doValidate(l)},d,m=l.onDidChangeContent(()=>{clearTimeout(d),d=window.setTimeout(f,500)}),h=l.onDidChangeAttached(()=>{let{onlyVisible:k}=this._defaults.getDiagnosticsOptions();k&&(l.isAttachedToEditor()?f():r.editor.setModelMarkers(l,this._selector,[]))});this._listener[l.uri.toString()]={dispose(){m.dispose(),h.dispose(),clearTimeout(d)}},f()},p=l=>{r.editor.setModelMarkers(l,this._selector,[]);let f=l.uri.toString();this._listener[f]&&(this._listener[f].dispose(),delete this._listener[f])};this._disposables.push(r.editor.onDidCreateModel(l=>g(l))),this._disposables.push(r.editor.onWillDisposeModel(p)),this._disposables.push(r.editor.onDidChangeModelLanguage(l=>{p(l.model),g(l.model)})),this._disposables.push({dispose(){for(let l of r.editor.getModels())p(l)}});let o=()=>{for(let l of r.editor.getModels())p(l),g(l)};this._disposables.push(this._defaults.onDidChange(o)),this._disposables.push(this._defaults.onDidExtraLibsChange(o)),r.editor.getModels().forEach(l=>g(l))}_disposables=[];_listener=Object.create(null);dispose(){this._disposables.forEach(t=>t&&t.dispose()),this._disposables=[]}async _doValidate(t){let i=await this._worker(t.uri);if(t.isDisposed())return;let a=[],{noSyntaxValidation:u,noSemanticValidation:g,noSuggestionDiagnostics:p}=this._defaults.getDiagnosticsOptions();u||a.push(i.getSyntacticDiagnostics(t.uri.toString())),g||a.push(i.getSemanticDiagnostics(t.uri.toString())),p||a.push(i.getSuggestionDiagnostics(t.uri.toString()));let o=await Promise.all(a);if(!o||t.isDisposed())return;let l=o.reduce((d,m)=>m.concat(d),[]).filter(d=>(this._defaults.getDiagnosticsOptions().diagnosticCodesToIgnore||[]).indexOf(d.code)===-1),f=l.map(d=>d.relatedInformation||[]).reduce((d,m)=>m.concat(d),[]).map(d=>d.file?r.Uri.parse(d.file.fileName):null);await this._libFiles.fetchLibFilesIfNecessary(f),!t.isDisposed()&&r.editor.setModelMarkers(t,this._selector,l.map(d=>this._convertDiagnostics(t,d)))}_convertDiagnostics(t,i){let a=i.start||0,u=i.length||1,{lineNumber:g,column:p}=t.getPositionAt(a),{lineNumber:o,column:l}=t.getPositionAt(a+u),f=[];return i.reportsUnnecessary&&f.push(r.MarkerTag.Unnecessary),i.reportsDeprecated&&f.push(r.MarkerTag.Deprecated),{severity:this._tsDiagnosticCategoryToMarkerSeverity(i.category),startLineNumber:g,startColumn:p,endLineNumber:o,endColumn:l,message:K(i.messageText,`\n`),code:i.code.toString(),tags:f,relatedInformation:this._convertRelatedInformation(t,i.relatedInformation)}}_convertRelatedInformation(t,i){if(!i)return[];let a=[];return i.forEach(u=>{let g=t;if(u.file&&(g=this._libFiles.getOrCreateModel(u.file.fileName)),!g)return;let p=u.start||0,o=u.length||1,{lineNumber:l,column:f}=g.getPositionAt(p),{lineNumber:d,column:m}=g.getPositionAt(p+o);a.push({resource:g.uri,startLineNumber:l,startColumn:f,endLineNumber:d,endColumn:m,message:K(u.messageText,`\n`)})}),a}_tsDiagnosticCategoryToMarkerSeverity(t){switch(t){case 1:return r.MarkerSeverity.Error;case 3:return r.MarkerSeverity.Info;case 0:return r.MarkerSeverity.Warning;case 2:return r.MarkerSeverity.Hint}return r.MarkerSeverity.Info}},v=class extends S{get triggerCharacters(){return[\".\"]}async provideCompletionItems(e,t,i,a){let u=e.getWordUntilPosition(t),g=new r.Range(t.lineNumber,u.startColumn,t.lineNumber,u.endColumn),p=e.uri,o=e.getOffsetAt(t),l=await this._worker(p);if(e.isDisposed())return;let f=await l.getCompletionsAtPosition(p.toString(),o);return!f||e.isDisposed()?void 0:{suggestions:f.entries.map(m=>{let h=g;if(m.replacementSpan){let C=e.getPositionAt(m.replacementSpan.start),U=e.getPositionAt(m.replacementSpan.start+m.replacementSpan.length);h=new r.Range(C.lineNumber,C.column,U.lineNumber,U.column)}let k=[];return m.kindModifiers!==void 0&&m.kindModifiers.indexOf(\"deprecated\")!==-1&&k.push(r.languages.CompletionItemTag.Deprecated),{uri:p,position:t,offset:o,range:h,label:m.name,insertText:m.name,sortText:m.sortText,kind:v.convertKind(m.kind),tags:k}})}}async resolveCompletionItem(e,t){let i=e,a=i.uri,u=i.position,g=i.offset,o=await(await this._worker(a)).getCompletionEntryDetails(a.toString(),g,i.label);return o?{uri:a,position:u,label:o.name,kind:v.convertKind(o.kind),detail:x(o.displayParts),documentation:{value:v.createDocumentationString(o)}}:i}static convertKind(e){switch(e){case c.primitiveType:case c.keyword:return r.languages.CompletionItemKind.Keyword;case c.variable:case c.localVariable:return r.languages.CompletionItemKind.Variable;case c.memberVariable:case c.memberGetAccessor:case c.memberSetAccessor:return r.languages.CompletionItemKind.Field;case c.function:case c.memberFunction:case c.constructSignature:case c.callSignature:case c.indexSignature:return r.languages.CompletionItemKind.Function;case c.enum:return r.languages.CompletionItemKind.Enum;case c.module:return r.languages.CompletionItemKind.Module;case c.class:return r.languages.CompletionItemKind.Class;case c.interface:return r.languages.CompletionItemKind.Interface;case c.warning:return r.languages.CompletionItemKind.File}return r.languages.CompletionItemKind.Property}static createDocumentationString(e){let t=x(e.documentation);if(e.tags)for(let i of e.tags)t+=`\n\n${X(i)}`;return t}};function X(s){let e=`*@${s.name}*`;if(s.name===\"param\"&&s.text){let[t,...i]=s.text;e+=`\\`${t.text}\\``,i.length>0&&(e+=` \\u2014 ${i.map(a=>a.text).join(\" \")}`)}else Array.isArray(s.text)?e+=` \\u2014 ${s.text.map(t=>t.text).join(\" \")}`:s.text&&(e+=` \\u2014 ${s.text}`);return e}var _=class extends S{signatureHelpTriggerCharacters=[\"(\",\",\"];static _toSignatureHelpTriggerReason(e){switch(e.triggerKind){case r.languages.SignatureHelpTriggerKind.TriggerCharacter:return e.triggerCharacter?e.isRetrigger?{kind:\"retrigger\",triggerCharacter:e.triggerCharacter}:{kind:\"characterTyped\",triggerCharacter:e.triggerCharacter}:{kind:\"invoked\"};case r.languages.SignatureHelpTriggerKind.ContentChange:return e.isRetrigger?{kind:\"retrigger\"}:{kind:\"invoked\"};case r.languages.SignatureHelpTriggerKind.Invoke:default:return{kind:\"invoked\"}}}async provideSignatureHelp(e,t,i,a){let u=e.uri,g=e.getOffsetAt(t),p=await this._worker(u);if(e.isDisposed())return;let o=await p.getSignatureHelpItems(u.toString(),g,{triggerReason:_._toSignatureHelpTriggerReason(a)});if(!o||e.isDisposed())return;let l={activeSignature:o.selectedItemIndex,activeParameter:o.argumentIndex,signatures:[]};return o.items.forEach(f=>{let d={label:\"\",parameters:[]};d.documentation={value:x(f.documentation)},d.label+=x(f.prefixDisplayParts),f.parameters.forEach((m,h,k)=>{let C=x(m.displayParts),U={label:C,documentation:{value:x(m.documentation)}};d.label+=C,d.parameters.push(U),h<k.length-1&&(d.label+=x(f.separatorDisplayParts))}),d.label+=x(f.suffixDisplayParts),l.signatures.push(d)}),{value:l,dispose(){}}}},F=class extends S{async provideHover(e,t,i){let a=e.uri,u=e.getOffsetAt(t),g=await this._worker(a);if(e.isDisposed())return;let p=await g.getQuickInfoAtPosition(a.toString(),u);if(!p||e.isDisposed())return;let o=x(p.documentation),l=p.tags?p.tags.map(d=>X(d)).join(`  \n\n`):\"\",f=x(p.displayParts);return{range:this._textSpanToRange(e,p.textSpan),contents:[{value:\"```typescript\\n\"+f+\"\\n```\\n\"},{value:o+(l?`\n\n`+l:\"\")}]}}},L=class extends S{async provideDocumentHighlights(e,t,i){let a=e.uri,u=e.getOffsetAt(t),g=await this._worker(a);if(e.isDisposed())return;let p=await g.getDocumentHighlights(a.toString(),u,[a.toString()]);if(!(!p||e.isDisposed()))return p.flatMap(o=>o.highlightSpans.map(l=>({range:this._textSpanToRange(e,l.textSpan),kind:l.kind===\"writtenReference\"?r.languages.DocumentHighlightKind.Write:r.languages.DocumentHighlightKind.Text})))}},M=class extends S{constructor(t,i){super(i);this._libFiles=t}async provideDefinition(t,i,a){let u=t.uri,g=t.getOffsetAt(i),p=await this._worker(u);if(t.isDisposed())return;let o=await p.getDefinitionAtPosition(u.toString(),g);if(!o||t.isDisposed()||(await this._libFiles.fetchLibFilesIfNecessary(o.map(f=>r.Uri.parse(f.fileName))),t.isDisposed()))return;let l=[];for(let f of o){let d=this._libFiles.getOrCreateModel(f.fileName);d&&l.push({uri:d.uri,range:this._textSpanToRange(d,f.textSpan)})}return l}},A=class extends S{constructor(t,i){super(i);this._libFiles=t}async provideReferences(t,i,a,u){let g=t.uri,p=t.getOffsetAt(i),o=await this._worker(g);if(t.isDisposed())return;let l=await o.getReferencesAtPosition(g.toString(),p);if(!l||t.isDisposed()||(await this._libFiles.fetchLibFilesIfNecessary(l.map(d=>r.Uri.parse(d.fileName))),t.isDisposed()))return;let f=[];for(let d of l){let m=this._libFiles.getOrCreateModel(d.fileName);m&&f.push({uri:m.uri,range:this._textSpanToRange(m,d.textSpan)})}return f}},R=class extends S{async provideDocumentSymbols(e,t){let i=e.uri,a=await this._worker(i);if(e.isDisposed())return;let u=await a.getNavigationTree(i.toString());if(!u||e.isDisposed())return;let g=(o,l)=>({name:o.text,detail:\"\",kind:y[o.kind]||r.languages.SymbolKind.Variable,range:this._textSpanToRange(e,o.spans[0]),selectionRange:this._textSpanToRange(e,o.spans[0]),tags:[],children:o.childItems?.map(d=>g(d,o.text)),containerName:l});return u.childItems?u.childItems.map(o=>g(o)):[]}},c=class{};b(c,\"unknown\",\"\"),b(c,\"keyword\",\"keyword\"),b(c,\"script\",\"script\"),b(c,\"module\",\"module\"),b(c,\"class\",\"class\"),b(c,\"interface\",\"interface\"),b(c,\"type\",\"type\"),b(c,\"enum\",\"enum\"),b(c,\"variable\",\"var\"),b(c,\"localVariable\",\"local var\"),b(c,\"function\",\"function\"),b(c,\"localFunction\",\"local function\"),b(c,\"memberFunction\",\"method\"),b(c,\"memberGetAccessor\",\"getter\"),b(c,\"memberSetAccessor\",\"setter\"),b(c,\"memberVariable\",\"property\"),b(c,\"constructorImplementation\",\"constructor\"),b(c,\"callSignature\",\"call\"),b(c,\"indexSignature\",\"index\"),b(c,\"constructSignature\",\"construct\"),b(c,\"parameter\",\"parameter\"),b(c,\"typeParameter\",\"type parameter\"),b(c,\"primitiveType\",\"primitive type\"),b(c,\"label\",\"label\"),b(c,\"alias\",\"alias\"),b(c,\"const\",\"const\"),b(c,\"let\",\"let\"),b(c,\"warning\",\"warning\");var y=Object.create(null);y[c.module]=r.languages.SymbolKind.Module;y[c.class]=r.languages.SymbolKind.Class;y[c.enum]=r.languages.SymbolKind.Enum;y[c.interface]=r.languages.SymbolKind.Interface;y[c.memberFunction]=r.languages.SymbolKind.Method;y[c.memberVariable]=r.languages.SymbolKind.Property;y[c.memberGetAccessor]=r.languages.SymbolKind.Property;y[c.memberSetAccessor]=r.languages.SymbolKind.Property;y[c.variable]=r.languages.SymbolKind.Variable;y[c.const]=r.languages.SymbolKind.Variable;y[c.localVariable]=r.languages.SymbolKind.Variable;y[c.variable]=r.languages.SymbolKind.Variable;y[c.function]=r.languages.SymbolKind.Function;y[c.localFunction]=r.languages.SymbolKind.Function;var w=class extends S{static _convertOptions(e){return{ConvertTabsToSpaces:e.insertSpaces,TabSize:e.tabSize,IndentSize:e.tabSize,IndentStyle:2,NewLineCharacter:`\n`,InsertSpaceAfterCommaDelimiter:!0,InsertSpaceAfterSemicolonInForStatements:!0,InsertSpaceBeforeAndAfterBinaryOperators:!0,InsertSpaceAfterKeywordsInControlFlowStatements:!0,InsertSpaceAfterFunctionKeywordForAnonymousFunctions:!0,InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis:!1,InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets:!1,InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces:!1,PlaceOpenBraceOnNewLineForControlBlocks:!1,PlaceOpenBraceOnNewLineForFunctions:!1}}_convertTextChanges(e,t){return{text:t.newText,range:this._textSpanToRange(e,t.span)}}},O=class extends w{canFormatMultipleRanges=!1;async provideDocumentRangeFormattingEdits(e,t,i,a){let u=e.uri,g=e.getOffsetAt({lineNumber:t.startLineNumber,column:t.startColumn}),p=e.getOffsetAt({lineNumber:t.endLineNumber,column:t.endColumn}),o=await this._worker(u);if(e.isDisposed())return;let l=await o.getFormattingEditsForRange(u.toString(),g,p,w._convertOptions(i));if(!(!l||e.isDisposed()))return l.map(f=>this._convertTextChanges(e,f))}},E=class extends w{get autoFormatTriggerCharacters(){return[\";\",\"}\",`\n`]}async provideOnTypeFormattingEdits(e,t,i,a,u){let g=e.uri,p=e.getOffsetAt(t),o=await this._worker(g);if(e.isDisposed())return;let l=await o.getFormattingEditsAfterKeystroke(g.toString(),p,i,w._convertOptions(a));if(!(!l||e.isDisposed()))return l.map(f=>this._convertTextChanges(e,f))}},N=class extends w{async provideCodeActions(e,t,i,a){let u=e.uri,g=e.getOffsetAt({lineNumber:t.startLineNumber,column:t.startColumn}),p=e.getOffsetAt({lineNumber:t.endLineNumber,column:t.endColumn}),o=w._convertOptions(e.getOptions()),l=i.markers.filter(h=>h.code).map(h=>h.code).map(Number),f=await this._worker(u);if(e.isDisposed())return;let d=await f.getCodeFixesAtPosition(u.toString(),g,p,l,o);return!d||e.isDisposed()?{actions:[],dispose:()=>{}}:{actions:d.filter(h=>h.changes.filter(k=>k.isNewFile).length===0).map(h=>this._tsCodeFixActionToMonacoCodeAction(e,i,h)),dispose:()=>{}}}_tsCodeFixActionToMonacoCodeAction(e,t,i){let a=[];for(let g of i.changes)for(let p of g.textChanges)a.push({resource:e.uri,versionId:void 0,textEdit:{range:this._textSpanToRange(e,p.span),text:p.newText}});return{title:i.description,edit:{edits:a},diagnostics:t.markers,kind:\"quickfix\"}}},W=class extends S{constructor(t,i){super(i);this._libFiles=t}async provideRenameEdits(t,i,a,u){let g=t.uri,p=g.toString(),o=t.getOffsetAt(i),l=await this._worker(g);if(t.isDisposed())return;let f=await l.getRenameInfo(p,o,{allowRenameOfImportPath:!1});if(f.canRename===!1)return{edits:[],rejectReason:f.localizedErrorMessage};if(f.fileToRename!==void 0)throw new Error(\"Renaming files is not supported.\");let d=await l.findRenameLocations(p,o,!1,!1,!1);if(!d||t.isDisposed())return;let m=[];for(let h of d){let k=this._libFiles.getOrCreateModel(h.fileName);if(k)m.push({resource:k.uri,versionId:void 0,textEdit:{range:this._textSpanToRange(k,h.textSpan),text:a}});else throw new Error(`Unknown file ${h.fileName}.`)}return{edits:m}}},H=class extends S{async provideInlayHints(e,t,i){let a=e.uri,u=a.toString(),g=e.getOffsetAt({lineNumber:t.startLineNumber,column:t.startColumn}),p=e.getOffsetAt({lineNumber:t.endLineNumber,column:t.endColumn}),o=await this._worker(a);return e.isDisposed()?null:{hints:(await o.provideInlayHints(u,g,p)).map(d=>({...d,label:d.text,position:e.getPositionAt(d.position),kind:this._convertHintKind(d.kind)})),dispose:()=>{}}}_convertHintKind(e){switch(e){case\"Parameter\":return r.languages.InlayHintKind.Parameter;case\"Type\":return r.languages.InlayHintKind.Type;default:return r.languages.InlayHintKind.Type}}};var j,B;function ge(s){B=Y(s,\"typescript\")}function pe(s){j=Y(s,\"javascript\")}function de(){return new Promise((s,e)=>{if(!j)return e(\"JavaScript not registered!\");s(j)})}function fe(){return new Promise((s,e)=>{if(!B)return e(\"TypeScript not registered!\");s(B)})}function Y(s,e){let t=[],i=[],a=new T(e,s);t.push(a);let u=(...o)=>a.getLanguageServiceWorker(...o),g=new P(u);function p(){let{modeConfiguration:o}=s;Z(i),o.completionItems&&i.push(r.languages.registerCompletionItemProvider(e,new v(u))),o.signatureHelp&&i.push(r.languages.registerSignatureHelpProvider(e,new _(u))),o.hovers&&i.push(r.languages.registerHoverProvider(e,new F(u))),o.documentHighlights&&i.push(r.languages.registerDocumentHighlightProvider(e,new L(u))),o.definitions&&i.push(r.languages.registerDefinitionProvider(e,new M(g,u))),o.references&&i.push(r.languages.registerReferenceProvider(e,new A(g,u))),o.documentSymbols&&i.push(r.languages.registerDocumentSymbolProvider(e,new R(u))),o.rename&&i.push(r.languages.registerRenameProvider(e,new W(g,u))),o.documentRangeFormattingEdits&&i.push(r.languages.registerDocumentRangeFormattingEditProvider(e,new O(u))),o.onTypeFormattingEdits&&i.push(r.languages.registerOnTypeFormattingEditProvider(e,new E(u))),o.codeActions&&i.push(r.languages.registerCodeActionProvider(e,new N(u))),o.inlayHints&&i.push(r.languages.registerInlayHintsProvider(e,new H(u))),o.diagnostics&&i.push(new D(g,s,e,u))}return p(),t.push(me(i)),u}function me(s){return{dispose:()=>Z(s)}}function Z(s){for(;s.length;)s.pop().dispose()}return le(be);})();\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/language/typescript/tsWorker.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\ndefine(\"vs/language/typescript/tsWorker\", [\"require\",\"require\"],(require)=>{\nvar moduleExports=(()=>{var rae=Object.defineProperty;var hit=Object.getOwnPropertyDescriptor;var git=Object.getOwnPropertyNames;var yit=Object.prototype.hasOwnProperty;var hke=(lp,ti)=>{for(var gt in ti)rae(lp,gt,{get:ti[gt],enumerable:!0})},vit=(lp,ti,gt,hs)=>{if(ti&&typeof ti==\"object\"||typeof ti==\"function\")for(let Mo of git(ti))!yit.call(lp,Mo)&&Mo!==gt&&rae(lp,Mo,{get:()=>ti[Mo],enumerable:!(hs=hit(ti,Mo))||hs.enumerable});return lp};var bit=lp=>vit(rae({},\"__esModule\",{value:!0}),lp);var kit={};hke(kit,{TypeScriptWorker:()=>aT,create:()=>Lit});var oae={};hke(oae,{EndOfLineState:()=>Sit,IndentStyle:()=>Ait,ScriptKind:()=>dA,ScriptTarget:()=>Cit,TokenClass:()=>Iit,createClassifier:()=>Eit,createLanguageService:()=>iae,displayPartsToString:()=>Tit,flattenDiagnosticMessageText:()=>xit,typescript:()=>aae});var d0=void 0,IU={exports:{}};var f0=(()=>{var lp=Object.defineProperty,ti=Object.getOwnPropertyNames,gt=(e,t)=>function(){return e&&(t=(0,e[ti(e)[0]])(e=0)),t},hs=(e,t)=>function(){return t||(0,e[ti(e)[0]])((t={exports:{}}).exports,t),t.exports},Mo=(e,t)=>{for(var r in t)lp(e,r,{get:t[r],enumerable:!0})},Sg,wf,LU,gke=gt({\"src/compiler/corePublic.ts\"(){\"use strict\";Sg=\"5.0\",wf=\"5.0.2\",LU=(e=>(e[e.LessThan=-1]=\"LessThan\",e[e.EqualTo=0]=\"EqualTo\",e[e.GreaterThan=1]=\"GreaterThan\",e))(LU||{})}});function Fn(e){return e?e.length:0}function mn(e,t){if(e)for(let r=0;r<e.length;r++){let i=t(e[r],r);if(i)return i}}function sae(e,t){if(e)for(let r=e.length-1;r>=0;r--){let i=t(e[r],r);if(i)return i}}function ks(e,t){if(e!==void 0)for(let r=0;r<e.length;r++){let i=t(e[r],r);if(i!==void 0)return i}}function GD(e,t){for(let r of e){let i=t(r);if(i!==void 0)return i}}function yke(e,t,r){let i=r;if(e){let o=0;for(let s of e)i=t(i,s,o),o++}return i}function kU(e,t,r){let i=[];L.assertEqual(e.length,t.length);for(let o=0;o<e.length;o++)i.push(r(e[o],t[o],o));return i}function DU(e,t){if(e.length<=1)return e;let r=[];for(let i=0,o=e.length;i<o;i++)i&&r.push(t),r.push(e[i]);return r}function Ji(e,t){if(e){for(let r=0;r<e.length;r++)if(!t(e[r],r))return!1}return!0}function wr(e,t,r){if(e!==void 0)for(let i=r??0;i<e.length;i++){let o=e[i];if(t(o,i))return o}}function fA(e,t,r){if(e!==void 0)for(let i=r??e.length-1;i>=0;i--){let o=e[i];if(t(o,i))return o}}function Yc(e,t,r){if(e===void 0)return-1;for(let i=r??0;i<e.length;i++)if(t(e[i],i))return i;return-1}function s8(e,t,r){if(e===void 0)return-1;for(let i=r??e.length-1;i>=0;i--)if(t(e[i],i))return i;return-1}function vke(e,t){for(let r=0;r<e.length;r++){let i=t(e[r],r);if(i)return i}return L.fail()}function ya(e,t,r=Zv){if(e){for(let i of e)if(r(i,t))return!0}return!1}function BD(e,t,r=Zv){return e.length===t.length&&e.every((i,o)=>r(i,t[o]))}function cae(e,t,r){for(let i=r||0;i<e.length;i++)if(ya(t,e.charCodeAt(i)))return i;return-1}function Oy(e,t){let r=0;if(e)for(let i=0;i<e.length;i++){let o=e[i];t(o,i)&&r++}return r}function Pr(e,t){if(e){let r=e.length,i=0;for(;i<r&&t(e[i]);)i++;if(i<r){let o=e.slice(0,i);for(i++;i<r;){let s=e[i];t(s)&&o.push(s),i++}return o}}return e}function wU(e,t){let r=0;for(let i=0;i<e.length;i++)t(e[i],i,e)&&(e[r]=e[i],r++);e.length=r}function Om(e){e.length=0}function on(e,t){let r;if(e){r=[];for(let i=0;i<e.length;i++)r.push(t(e[i],i))}return r}function*RU(e,t){for(let r of e)yield t(r)}function Tl(e,t){if(e)for(let r=0;r<e.length;r++){let i=e[r],o=t(i,r);if(i!==o){let s=e.slice(0,r);for(s.push(o),r++;r<e.length;r++)s.push(t(e[r],r));return s}}return e}function e_(e){let t=[];for(let r of e)r&&(ba(r)?si(t,r):t.push(r));return t}function Uo(e,t){let r;if(e)for(let i=0;i<e.length;i++){let o=t(e[i],i);o&&(ba(o)?r=si(r,o):r=Sn(r,o))}return r||Je}function UD(e,t){let r=[];if(e)for(let i=0;i<e.length;i++){let o=t(e[i],i);o&&(ba(o)?si(r,o):r.push(o))}return r}function*OU(e,t){for(let r of e){let i=t(r);!i||(yield*i)}}function lae(e,t){let r;if(e)for(let i=0;i<e.length;i++){let o=e[i],s=t(o,i);(r||o!==s||ba(s))&&(r||(r=e.slice(0,i)),ba(s)?si(r,s):r.push(s))}return r||e}function NU(e,t){let r=[];for(let i=0;i<e.length;i++){let o=t(e[i],i);if(o===void 0)return;r.push(o)}return r}function Zi(e,t){let r=[];if(e)for(let i=0;i<e.length;i++){let o=t(e[i],i);o!==void 0&&r.push(o)}return r}function*VD(e,t){for(let r of e){let i=t(r);i!==void 0&&(yield i)}}function bke(e,t){if(!e)return;let r=new Map;return e.forEach((i,o)=>{let s=t(o,i);if(s!==void 0){let[l,f]=s;l!==void 0&&f!==void 0&&r.set(l,f)}}),r}function jD(e,t,r){if(e.has(t))return e.get(t);let i=r();return e.set(t,i),i}function _0(e,t){return e.has(t)?!1:(e.add(t),!0)}function*Eke(e){yield e}function c8(e,t,r){let i;if(e){i=[];let o=e.length,s,l,f=0,d=0;for(;f<o;){for(;d<o;){let g=e[d];if(l=t(g,d),d===0)s=l;else if(l!==s)break;d++}if(f<d){let g=r(e.slice(f,d),s,f,d);g&&i.push(g),f=d}s=l,d++}}return i}function uae(e,t){if(!e)return;let r=new Map;return e.forEach((i,o)=>{let[s,l]=t(o,i);r.set(s,l)}),r}function vt(e,t){if(e)if(t){for(let r of e)if(t(r))return!0}else return e.length>0;return!1}function PU(e,t,r){let i;for(let o=0;o<e.length;o++)t(e[o])?i=i===void 0?o:i:i!==void 0&&(r(i,o),i=void 0);i!==void 0&&r(i,e.length)}function Qi(e,t){return vt(t)?vt(e)?[...e,...t]:t:e}function Tke(e,t){return t}function HD(e){return e.map(Tke)}function Ske(e,t,r){let i=HD(e);_ae(e,i,r);let o=e[i[0]],s=[i[0]];for(let l=1;l<i.length;l++){let f=i[l],d=e[f];t(o,d)||(s.push(f),o=d)}return s.sort(),s.map(l=>e[l])}function xke(e,t){let r=[];for(let i of e)Rf(r,i,t);return r}function _A(e,t,r){return e.length===0?[]:e.length===1?e.slice():r?Ske(e,t,r):xke(e,t)}function Ake(e,t){if(e.length===0)return Je;let r=e[0],i=[r];for(let o=1;o<e.length;o++){let s=e[o];switch(t(s,r)){case!0:case 0:continue;case-1:return L.fail(\"Array is unsorted.\")}i.push(r=s)}return i}function MU(){return[]}function Ny(e,t,r,i){if(e.length===0)return e.push(t),!0;let o=Py(e,t,Ks,r);return o<0?(e.splice(~o,0,t),!0):i?(e.splice(o,0,t),!0):!1}function WD(e,t,r){return Ake(YC(e,t),r||t||su)}function dae(e,t){if(e.length<2)return!0;for(let r=1,i=e.length;r<i;r++)if(t(e[r-1],e[r])===1)return!1;return!0}function l8(e,t,r,i){let o=3;if(e.length<2)return o;let s=t(e[0]);for(let l=1,f=e.length;l<f&&o!==0;l++){let d=t(e[l]);o&1&&r(s,d)>0&&(o&=-2),o&2&&i(s,d)>0&&(o&=-3),s=d}return o}function up(e,t,r=Zv){if(!e||!t)return e===t;if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!r(e[i],t[i],i))return!1;return!0}function zD(e){let t;if(e)for(let r=0;r<e.length;r++){let i=e[r];(t||!i)&&(t||(t=e.slice(0,r)),i&&t.push(i))}return t||e}function fae(e,t,r){if(!t||!e||t.length===0||e.length===0)return t;let i=[];e:for(let o=0,s=0;s<t.length;s++){s>0&&L.assertGreaterThanOrEqual(r(t[s],t[s-1]),0);t:for(let l=o;o<e.length;o++)switch(o>l&&L.assertGreaterThanOrEqual(r(e[o],e[o-1]),0),r(t[s],e[o])){case-1:i.push(t[s]);continue e;case 0:continue e;case 1:continue t}}return i}function Sn(e,t){return t===void 0?e:e===void 0?[t]:(e.push(t),e)}function pA(e,t){return e===void 0?t:t===void 0?e:ba(e)?ba(t)?Qi(e,t):Sn(e,t):ba(t)?Sn(t,e):[e,t]}function FU(e,t){return t<0?e.length+t:t}function si(e,t,r,i){if(t===void 0||t.length===0)return e;if(e===void 0)return t.slice(r,i);r=r===void 0?0:FU(t,r),i=i===void 0?t.length:FU(t,i);for(let o=r;o<i&&o<t.length;o++)t[o]!==void 0&&e.push(t[o]);return e}function Rf(e,t,r){return ya(e,t,r)?!1:(e.push(t),!0)}function xg(e,t,r){return e?(Rf(e,t,r),e):[t]}function _ae(e,t,r){t.sort((i,o)=>r(e[i],e[o])||Es(i,o))}function YC(e,t){return e.length===0?e:e.slice().sort(t)}function*Cke(e){for(let t=e.length-1;t>=0;t--)yield e[t]}function Ag(e,t){let r=HD(e);return _ae(e,r,t),r.map(i=>e[i])}function GU(e,t,r,i){for(;r<i;){if(e[r]!==t[r])return!1;r++}return!0}function Sl(e){return e===void 0||e.length===0?void 0:e[0]}function u8(e){if(e)for(let t of e)return t}function Vo(e){return L.assert(e.length!==0),e[0]}function pae(e){for(let t of e)return t;L.fail(\"iterator is empty\")}function Os(e){return e===void 0||e.length===0?void 0:e[e.length-1]}function To(e){return L.assert(e.length!==0),e[e.length-1]}function Wp(e){return e&&e.length===1?e[0]:void 0}function BU(e){return L.checkDefined(Wp(e))}function zp(e){return e&&e.length===1?e[0]:e}function UU(e,t,r){let i=e.slice(0);return i[t]=r,i}function Py(e,t,r,i,o){return H1(e,r(t),r,i,o)}function H1(e,t,r,i,o){if(!vt(e))return-1;let s=o||0,l=e.length-1;for(;s<=l;){let f=s+(l-s>>1),d=r(e[f],f);switch(i(d,t)){case-1:s=f+1;break;case 0:return f;case 1:l=f-1;break}}return~s}function ou(e,t,r,i,o){if(e&&e.length>0){let s=e.length;if(s>0){let l=i===void 0||i<0?0:i,f=o===void 0||l+o>s-1?s-1:l+o,d;for(arguments.length<=2?(d=e[l],l++):d=r;l<=f;)d=t(d,e[l],l),l++;return d}}return r}function fs(e,t){return Lg.call(e,t)}function JD(e,t){return Lg.call(e,t)?e[t]:void 0}function bh(e){let t=[];for(let r in e)Lg.call(e,r)&&t.push(r);return t}function Ike(e){let t=[];do{let r=Object.getOwnPropertyNames(e);for(let i of r)Rf(t,i)}while(e=Object.getPrototypeOf(e));return t}function W1(e){let t=[];for(let r in e)Lg.call(e,r)&&t.push(e[r]);return t}function mae(e,t){let r=new Array(e);for(let i=0;i<e;i++)r[i]=t(i);return r}function lo(e,t){let r=[];for(let i of e)r.push(t?t(i):i);return r}function KD(e,...t){for(let r of t)if(r!==void 0)for(let i in r)fs(r,i)&&(e[i]=r[i]);return e}function hae(e,t,r=Zv){if(e===t)return!0;if(!e||!t)return!1;for(let i in e)if(Lg.call(e,i)&&(!Lg.call(t,i)||!r(e[i],t[i])))return!1;for(let i in t)if(Lg.call(t,i)&&!Lg.call(e,i))return!1;return!0}function p0(e,t,r=Ks){let i=new Map;for(let o of e){let s=t(o);s!==void 0&&i.set(s,r(o))}return i}function gae(e,t,r=Ks){let i=[];for(let o of e)i[t(o)]=r(o);return i}function qD(e,t,r=Ks){let i=Of();for(let o of e)i.add(t(o),r(o));return i}function $C(e,t,r=Ks){return lo(qD(e,t).values(),r)}function yae(e,t){var r;let i={};if(e)for(let o of e){let s=`${t(o)}`;((r=i[s])!=null?r:i[s]=[]).push(o)}return i}function VU(e){let t={};for(let r in e)Lg.call(e,r)&&(t[r]=e[r]);return t}function d8(e,t){let r={};for(let i in t)Lg.call(t,i)&&(r[i]=t[i]);for(let i in e)Lg.call(e,i)&&(r[i]=e[i]);return r}function jU(e,t){for(let r in t)Lg.call(t,r)&&(e[r]=t[r])}function ho(e,t){return t?t.bind(e):void 0}function Of(){let e=new Map;return e.add=Lke,e.remove=kke,e}function Lke(e,t){let r=this.get(e);return r?r.push(t):this.set(e,r=[t]),r}function kke(e,t){let r=this.get(e);r&&($D(r,t),r.length||this.delete(e))}function vae(){return Of()}function HU(e){let t=e?.slice()||[],r=0;function i(){return r===t.length}function o(...l){t.push(...l)}function s(){if(i())throw new Error(\"Queue is empty\");let l=t[r];if(t[r]=void 0,r++,r>100&&r>t.length>>1){let f=t.length-r;t.copyWithin(0,r),t.length=f,r=0}return l}return{enqueue:o,dequeue:s,isEmpty:i}}function Dke(e,t){let r=new Map,i=0;function*o(){for(let l of r.values())ba(l)?yield*l:yield l}let s={has(l){let f=e(l);if(!r.has(f))return!1;let d=r.get(f);if(!ba(d))return t(d,l);for(let g of d)if(t(g,l))return!0;return!1},add(l){let f=e(l);if(r.has(f)){let d=r.get(f);if(ba(d))ya(d,l,t)||(d.push(l),i++);else{let g=d;t(g,l)||(r.set(f,[g,l]),i++)}}else r.set(f,l),i++;return this},delete(l){let f=e(l);if(!r.has(f))return!1;let d=r.get(f);if(ba(d)){for(let g=0;g<d.length;g++)if(t(d[g],l))return d.length===1?r.delete(f):d.length===2?r.set(f,d[1-g]):zU(d,g),i--,!0}else if(t(d,l))return r.delete(f),i--,!0;return!1},clear(){r.clear(),i=0},get size(){return i},forEach(l){for(let f of lo(r.values()))if(ba(f))for(let d of f)l(d,d,s);else{let d=f;l(d,d,s)}},keys(){return o()},values(){return o()},*entries(){for(let l of o())yield[l,l]},[Symbol.iterator]:()=>o(),[Symbol.toStringTag]:r[Symbol.toStringTag]};return s}function ba(e){return Array.isArray(e)}function XD(e){return ba(e)?e:[e]}function Ta(e){return typeof e==\"string\"}function Cg(e){return typeof e==\"number\"}function zr(e,t){return e!==void 0&&t(e)?e:void 0}function Ga(e,t){return e!==void 0&&t(e)?e:L.fail(`Invalid cast. The supplied value ${e} did not pass the test '${L.getFunctionName(t)}'.`)}function Ba(e){}function m0(){return!1}function h0(){return!0}function Qv(){}function Ks(e){return e}function bae(e){return e.toLowerCase()}function t_(e){return YU.test(e)?e.replace(YU,bae):e}function Sa(){throw new Error(\"Not implemented\")}function zu(e){let t;return()=>(e&&(t=e(),e=void 0),t)}function Jp(e){let t=new Map;return r=>{let i=`${typeof r}:${r}`,o=t.get(i);return o===void 0&&!t.has(i)&&(o=e(r),t.set(i,o)),o}}function wke(e){let t=new WeakMap;return r=>{let i=t.get(r);return i===void 0&&!t.has(r)&&(i=e(r),t.set(r,i)),i}}function Eae(e,t){return(...r)=>{let i=t.get(r);return i===void 0&&!t.has(r)&&(i=e(...r),t.set(r,i)),i}}function Rke(e,t,r,i,o){if(o){let s=[];for(let l=0;l<arguments.length;l++)s[l]=arguments[l];return l=>ou(s,(f,d)=>d(f),l)}else return i?s=>i(r(t(e(s)))):r?s=>r(t(e(s))):t?s=>t(e(s)):e?s=>e(s):s=>s}function Zv(e,t){return e===t}function z1(e,t){return e===t||e!==void 0&&t!==void 0&&e.toUpperCase()===t.toUpperCase()}function J1(e,t){return Zv(e,t)}function Tae(e,t){return e===t?0:e===void 0?-1:t===void 0?1:e<t?-1:1}function Es(e,t){return Tae(e,t)}function f8(e,t){return Es(e?.start,t?.start)||Es(e?.length,t?.length)}function WU(e,t){return ou(e,(r,i)=>t(r,i)===-1?r:i)}function _8(e,t){return e===t?0:e===void 0?-1:t===void 0?1:(e=e.toUpperCase(),t=t.toUpperCase(),e<t?-1:e>t?1:0)}function Sae(e,t){return e===t?0:e===void 0?-1:t===void 0?1:(e=e.toLowerCase(),t=t.toLowerCase(),e<t?-1:e>t?1:0)}function su(e,t){return Tae(e,t)}function p8(e){return e?_8:su}function xae(){return T8}function Aae(e){T8!==e&&(T8=e,QU=void 0)}function YD(e,t){return(QU||(QU=Mae(T8)))(e,t)}function Cae(e,t,r,i){return e===t?0:e===void 0?-1:t===void 0?1:i(e[r],t[r])}function g0(e,t){return Es(e?1:0,t?1:0)}function QC(e,t,r){let i=Math.max(2,Math.floor(e.length*.34)),o=Math.floor(e.length*.4)+1,s;for(let l of t){let f=r(l);if(f!==void 0&&Math.abs(f.length-e.length)<=i){if(f===e||f.length<3&&f.toLowerCase()!==e.toLowerCase())continue;let d=Oke(e,f,o-.1);if(d===void 0)continue;L.assert(d<o),o=d,s=l}}return s}function Oke(e,t,r){let i=new Array(t.length+1),o=new Array(t.length+1),s=r+.01;for(let f=0;f<=t.length;f++)i[f]=f;for(let f=1;f<=e.length;f++){let d=e.charCodeAt(f-1),g=Math.ceil(f>r?f-r:1),m=Math.floor(t.length>r+f?r+f:t.length);o[0]=f;let v=f;for(let x=1;x<g;x++)o[x]=s;for(let x=g;x<=m;x++){let A=e[f-1].toLowerCase()===t[x-1].toLowerCase()?i[x-1]+.1:i[x-1]+2,w=d===t.charCodeAt(x-1)?i[x-1]:Math.min(i[x]+1,o[x-1]+1,A);o[x]=w,v=Math.min(v,w)}for(let x=m+1;x<=t.length;x++)o[x]=s;if(v>r)return;let S=i;i=o,o=S}let l=i[t.length];return l>r?void 0:l}function Oc(e,t){let r=e.length-t.length;return r>=0&&e.indexOf(t,r)===r}function mA(e,t){return Oc(e,t)?e.slice(0,e.length-t.length):e}function Iae(e,t){return Oc(e,t)?e.slice(0,e.length-t.length):void 0}function jl(e,t){return e.indexOf(t)!==-1}function Lae(e){let t=e.length;for(let r=t-1;r>0;r--){let i=e.charCodeAt(r);if(i>=48&&i<=57)do--r,i=e.charCodeAt(r);while(r>0&&i>=48&&i<=57);else if(r>4&&(i===110||i===78)){if(--r,i=e.charCodeAt(r),i!==105&&i!==73||(--r,i=e.charCodeAt(r),i!==109&&i!==77))break;--r,i=e.charCodeAt(r)}else break;if(i!==45&&i!==46)break;t=r}return t===e.length?e:e.slice(0,t)}function m8(e,t){for(let r=0;r<e.length;r++)if(e[r]===t)return y0(e,r),!0;return!1}function y0(e,t){for(let r=t;r<e.length-1;r++)e[r]=e[r+1];e.pop()}function zU(e,t){e[t]=e[e.length-1],e.pop()}function $D(e,t){return Nke(e,r=>r===t)}function Nke(e,t){for(let r=0;r<e.length;r++)if(t(e[r]))return zU(e,r),!0;return!1}function Dl(e){return e?Ks:t_}function kae({prefix:e,suffix:t}){return`${e}*${t}`}function Dae(e,t){return L.assert(h8(e,t)),t.substring(e.prefix.length,t.length-e.suffix.length)}function JU(e,t,r){let i,o=-1;for(let s of e){let l=t(s);h8(l,r)&&l.prefix.length>o&&(o=l.prefix.length,i=s)}return i}function na(e,t){return e.lastIndexOf(t,0)===0}function ZC(e,t){return na(e,t)?e.substr(t.length):e}function KU(e,t,r=Ks){return na(r(e),r(t))?e.substring(t.length):void 0}function h8({prefix:e,suffix:t},r){return r.length>=e.length+t.length&&na(r,e)&&Oc(r,t)}function g8(e,t){return r=>e(r)&&t(r)}function Kp(...e){return(...t)=>{let r;for(let i of e)if(r=i(...t),r)return r;return r}}function y8(e){return(...t)=>!e(...t)}function Pke(e){}function oT(e){return e===void 0?void 0:[e]}function wae(e,t,r,i,o,s){s=s||Ba;let l=0,f=0,d=e.length,g=t.length,m=!1;for(;l<d&&f<g;){let v=e[l],S=t[f],x=r(v,S);x===-1?(i(v),l++,m=!0):x===1?(o(S),f++,m=!0):(s(S,v),l++,f++)}for(;l<d;)i(e[l++]),m=!0;for(;f<g;)o(t[f++]),m=!0;return m}function Rae(e){let t=[];return Oae(e,t,void 0,0),t}function Oae(e,t,r,i){for(let o of e[i]){let s;r?(s=r.slice(),s.push(o)):s=[o],i===e.length-1?t.push(s):Oae(e,t,s,i+1)}}function K1(e,t,r=\" \"){return t<=e.length?e:r.repeat(t-e.length)+e}function Mke(e,t,r=\" \"){return t<=e.length?e:e+r.repeat(t-e.length)}function v8(e,t){if(e){let r=e.length,i=0;for(;i<r&&t(e[i]);)i++;return e.slice(0,i)}}function Nae(e,t){if(e){let r=e.length,i=0;for(;i<r&&t(e[i]);)i++;return e.slice(i)}}function Fke(e){let t=e.length-1;for(;t>=0&&xh(e.charCodeAt(t));)t--;return e.slice(0,t+1)}function qU(){return typeof process<\"u\"&&process.nextTick&&!process.browser&&typeof IU==\"object\"}var Je,b8,Pae,XU,Ig,Lg,E8,YU,$U,Mae,QU,T8,v0,QD,eI,Gke=gt({\"src/compiler/core.ts\"(){\"use strict\";fa(),Je=[],b8=new Map,Pae=new Set,XU=(e=>(e[e.None=0]=\"None\",e[e.CaseSensitive=1]=\"CaseSensitive\",e[e.CaseInsensitive=2]=\"CaseInsensitive\",e[e.Both=3]=\"Both\",e))(XU||{}),Ig=Array.prototype.at?(e,t)=>e?.at(t):(e,t)=>{if(e&&(t=FU(e,t),t<e.length))return e[t]},Lg=Object.prototype.hasOwnProperty,E8={push:Ba,length:0},YU=/[^\\u0130\\u0131\\u00DFa-z0-9\\\\/:\\-_\\. ]+/g,$U=(e=>(e[e.None=0]=\"None\",e[e.Normal=1]=\"Normal\",e[e.Aggressive=2]=\"Aggressive\",e[e.VeryAggressive=3]=\"VeryAggressive\",e))($U||{}),Mae=(()=>{let e,t,r=f();return d;function i(g,m,v){if(g===m)return 0;if(g===void 0)return-1;if(m===void 0)return 1;let S=v(g,m);return S<0?-1:S>0?1:0}function o(g){let m=new Intl.Collator(g,{usage:\"sort\",sensitivity:\"variant\"}).compare;return(v,S)=>i(v,S,m)}function s(g){if(g!==void 0)return l();return(v,S)=>i(v,S,m);function m(v,S){return v.localeCompare(S)}}function l(){return(v,S)=>i(v,S,g);function g(v,S){return m(v.toUpperCase(),S.toUpperCase())||m(v,S)}function m(v,S){return v<S?-1:v>S?1:0}}function f(){return typeof Intl==\"object\"&&typeof Intl.Collator==\"function\"?o:typeof String.prototype.localeCompare==\"function\"&&typeof String.prototype.toLocaleUpperCase==\"function\"&&\"a\".localeCompare(\"B\")<0?s:l}function d(g){return g===void 0?e||(e=r(g)):g===\"en-US\"?t||(t=r(g)):r(g)}})(),v0=String.prototype.trim?e=>e.trim():e=>QD(eI(e)),QD=String.prototype.trimEnd?e=>e.trimEnd():Fke,eI=String.prototype.trimStart?e=>e.trimStart():e=>e.replace(/^\\s+/g,\"\")}}),ZU,L,Bke=gt({\"src/compiler/debug.ts\"(){\"use strict\";fa(),fa(),ZU=(e=>(e[e.Off=0]=\"Off\",e[e.Error=1]=\"Error\",e[e.Warning=2]=\"Warning\",e[e.Info=3]=\"Info\",e[e.Verbose=4]=\"Verbose\",e))(ZU||{}),(e=>{let t=0;e.currentLogLevel=2,e.isDebugging=!1;function r(Dt){return e.currentLogLevel<=Dt}e.shouldLog=r;function i(Dt,pn){e.loggingHost&&r(Dt)&&e.loggingHost.log(Dt,pn)}function o(Dt){i(3,Dt)}e.log=o,(Dt=>{function pn(ri){i(1,ri)}Dt.error=pn;function An(ri){i(2,ri)}Dt.warn=An;function Kn(ri){i(3,ri)}Dt.log=Kn;function hi(ri){i(4,ri)}Dt.trace=hi})(o=e.log||(e.log={}));let s={};function l(){return t}e.getAssertionLevel=l;function f(Dt){let pn=t;if(t=Dt,Dt>pn)for(let An of bh(s)){let Kn=s[An];Kn!==void 0&&e[An]!==Kn.assertion&&Dt>=Kn.level&&(e[An]=Kn,s[An]=void 0)}}e.setAssertionLevel=f;function d(Dt){return t>=Dt}e.shouldAssert=d;function g(Dt,pn){return d(Dt)?!0:(s[pn]={level:Dt,assertion:e[pn]},e[pn]=Ba,!1)}function m(Dt,pn){let An=new Error(Dt?`Debug Failure. ${Dt}`:\"Debug Failure.\");throw Error.captureStackTrace&&Error.captureStackTrace(An,pn||m),An}e.fail=m;function v(Dt,pn,An){return m(`${pn||\"Unexpected node.\"}\\r\nNode ${Ve(Dt.kind)} was unexpected.`,An||v)}e.failBadSyntaxKind=v;function S(Dt,pn,An,Kn){Dt||(pn=pn?`False expression: ${pn}`:\"False expression.\",An&&(pn+=`\\r\nVerbose Debug Information: `+(typeof An==\"string\"?An:An())),m(pn,Kn||S))}e.assert=S;function x(Dt,pn,An,Kn,hi){if(Dt!==pn){let ri=An?Kn?`${An} ${Kn}`:An:\"\";m(`Expected ${Dt} === ${pn}. ${ri}`,hi||x)}}e.assertEqual=x;function A(Dt,pn,An,Kn){Dt>=pn&&m(`Expected ${Dt} < ${pn}. ${An||\"\"}`,Kn||A)}e.assertLessThan=A;function w(Dt,pn,An){Dt>pn&&m(`Expected ${Dt} <= ${pn}`,An||w)}e.assertLessThanOrEqual=w;function C(Dt,pn,An){Dt<pn&&m(`Expected ${Dt} >= ${pn}`,An||C)}e.assertGreaterThanOrEqual=C;function P(Dt,pn,An){Dt==null&&m(pn,An||P)}e.assertIsDefined=P;function F(Dt,pn,An){return P(Dt,pn,An||F),Dt}e.checkDefined=F;function B(Dt,pn,An){for(let Kn of Dt)P(Kn,pn,An||B)}e.assertEachIsDefined=B;function q(Dt,pn,An){return B(Dt,pn,An||q),Dt}e.checkEachDefined=q;function W(Dt,pn=\"Illegal value:\",An){let Kn=typeof Dt==\"object\"&&fs(Dt,\"kind\")&&fs(Dt,\"pos\")?\"SyntaxKind: \"+Ve(Dt.kind):JSON.stringify(Dt);return m(`${pn} ${Kn}`,An||W)}e.assertNever=W;function Y(Dt,pn,An,Kn){g(1,\"assertEachNode\")&&S(pn===void 0||Ji(Dt,pn),An||\"Unexpected node.\",()=>`Node array did not pass test '${re(pn)}'.`,Kn||Y)}e.assertEachNode=Y;function R(Dt,pn,An,Kn){g(1,\"assertNode\")&&S(Dt!==void 0&&(pn===void 0||pn(Dt)),An||\"Unexpected node.\",()=>`Node ${Ve(Dt?.kind)} did not pass test '${re(pn)}'.`,Kn||R)}e.assertNode=R;function ie(Dt,pn,An,Kn){g(1,\"assertNotNode\")&&S(Dt===void 0||pn===void 0||!pn(Dt),An||\"Unexpected node.\",()=>`Node ${Ve(Dt.kind)} should not have passed test '${re(pn)}'.`,Kn||ie)}e.assertNotNode=ie;function Q(Dt,pn,An,Kn){g(1,\"assertOptionalNode\")&&S(pn===void 0||Dt===void 0||pn(Dt),An||\"Unexpected node.\",()=>`Node ${Ve(Dt?.kind)} did not pass test '${re(pn)}'.`,Kn||Q)}e.assertOptionalNode=Q;function fe(Dt,pn,An,Kn){g(1,\"assertOptionalToken\")&&S(pn===void 0||Dt===void 0||Dt.kind===pn,An||\"Unexpected node.\",()=>`Node ${Ve(Dt?.kind)} was not a '${Ve(pn)}' token.`,Kn||fe)}e.assertOptionalToken=fe;function Z(Dt,pn,An){g(1,\"assertMissingNode\")&&S(Dt===void 0,pn||\"Unexpected node.\",()=>`Node ${Ve(Dt.kind)} was unexpected'.`,An||Z)}e.assertMissingNode=Z;function U(Dt){}e.type=U;function re(Dt){if(typeof Dt!=\"function\")return\"\";if(fs(Dt,\"name\"))return Dt.name;{let pn=Function.prototype.toString.call(Dt),An=/^function\\s+([\\w\\$]+)\\s*\\(/.exec(pn);return An?An[1]:\"\"}}e.getFunctionName=re;function le(Dt){return`{ name: ${Gi(Dt.escapedName)}; flags: ${Be(Dt.flags)}; declarations: ${on(Dt.declarations,pn=>Ve(pn.kind))} }`}e.formatSymbol=le;function _e(Dt=0,pn,An){let Kn=X(pn);if(Dt===0)return Kn.length>0&&Kn[0][0]===0?Kn[0][1]:\"0\";if(An){let hi=[],ri=Dt;for(let[gn,Ht]of Kn){if(gn>Dt)break;gn!==0&&gn&Dt&&(hi.push(Ht),ri&=~gn)}if(ri===0)return hi.join(\"|\")}else for(let[hi,ri]of Kn)if(hi===Dt)return ri;return Dt.toString()}e.formatEnum=_e;let ge=new Map;function X(Dt){let pn=ge.get(Dt);if(pn)return pn;let An=[];for(let hi in Dt){let ri=Dt[hi];typeof ri==\"number\"&&An.push([ri,hi])}let Kn=Ag(An,(hi,ri)=>Es(hi[0],ri[0]));return ge.set(Dt,Kn),Kn}function Ve(Dt){return _e(Dt,I8,!1)}e.formatSyntaxKind=Ve;function we(Dt){return _e(Dt,B8,!1)}e.formatSnippetKind=we;function ke(Dt){return _e(Dt,L8,!0)}e.formatNodeFlags=ke;function Pe(Dt){return _e(Dt,k8,!0)}e.formatModifierFlags=Pe;function Ce(Dt){return _e(Dt,G8,!0)}e.formatTransformFlags=Ce;function Ie(Dt){return _e(Dt,U8,!0)}e.formatEmitFlags=Ie;function Be(Dt){return _e(Dt,O8,!0)}e.formatSymbolFlags=Be;function Ne(Dt){return _e(Dt,N8,!0)}e.formatTypeFlags=Ne;function Le(Dt){return _e(Dt,M8,!0)}e.formatSignatureFlags=Le;function Ye(Dt){return _e(Dt,P8,!0)}e.formatObjectFlags=Ye;function _t(Dt){return _e(Dt,nw,!0)}e.formatFlowFlags=_t;function ct(Dt){return _e(Dt,D8,!0)}e.formatRelationComparisonResult=ct;function Rt(Dt){return _e(Dt,_F,!0)}e.formatCheckMode=Rt;function We(Dt){return _e(Dt,pF,!0)}e.formatSignatureCheckMode=We;function qe(Dt){return _e(Dt,dF,!0)}e.formatTypeFacts=qe;let zt=!1,Qt;function tn(Dt){\"__debugFlowFlags\"in Dt||Object.defineProperties(Dt,{__tsDebuggerDisplay:{value(){let pn=this.flags&2?\"FlowStart\":this.flags&4?\"FlowBranchLabel\":this.flags&8?\"FlowLoopLabel\":this.flags&16?\"FlowAssignment\":this.flags&32?\"FlowTrueCondition\":this.flags&64?\"FlowFalseCondition\":this.flags&128?\"FlowSwitchClause\":this.flags&256?\"FlowArrayMutation\":this.flags&512?\"FlowCall\":this.flags&1024?\"FlowReduceLabel\":this.flags&1?\"FlowUnreachable\":\"UnknownFlow\",An=this.flags&~(2048-1);return`${pn}${An?` (${_t(An)})`:\"\"}`}},__debugFlowFlags:{get(){return _e(this.flags,nw,!0)}},__debugToString:{value(){return nn(this)}}})}function kn(Dt){zt&&(typeof Object.setPrototypeOf==\"function\"?(Qt||(Qt=Object.create(Object.prototype),tn(Qt)),Object.setPrototypeOf(Dt,Qt)):tn(Dt))}e.attachFlowNodeDebugInfo=kn;let _n;function Gt(Dt){\"__tsDebuggerDisplay\"in Dt||Object.defineProperties(Dt,{__tsDebuggerDisplay:{value(pn){return pn=String(pn).replace(/(?:,[\\s\\w\\d_]+:[^,]+)+\\]$/,\"]\"),`NodeArray ${pn}`}}})}function $n(Dt){zt&&(typeof Object.setPrototypeOf==\"function\"?(_n||(_n=Object.create(Array.prototype),Gt(_n)),Object.setPrototypeOf(Dt,_n)):Gt(Dt))}e.attachNodeArrayDebugInfo=$n;function ui(){if(zt)return;let Dt=new WeakMap,pn=new WeakMap;Object.defineProperties(ml.getSymbolConstructor().prototype,{__tsDebuggerDisplay:{value(){let Kn=this.flags&33554432?\"TransientSymbol\":\"Symbol\",hi=this.flags&-33554433;return`${Kn} '${fc(this)}'${hi?` (${Be(hi)})`:\"\"}`}},__debugFlags:{get(){return Be(this.flags)}}}),Object.defineProperties(ml.getTypeConstructor().prototype,{__tsDebuggerDisplay:{value(){let Kn=this.flags&98304?\"NullableType\":this.flags&384?`LiteralType ${JSON.stringify(this.value)}`:this.flags&2048?`LiteralType ${this.value.negative?\"-\":\"\"}${this.value.base10Value}n`:this.flags&8192?\"UniqueESSymbolType\":this.flags&32?\"EnumType\":this.flags&67359327?`IntrinsicType ${this.intrinsicName}`:this.flags&1048576?\"UnionType\":this.flags&2097152?\"IntersectionType\":this.flags&4194304?\"IndexType\":this.flags&8388608?\"IndexedAccessType\":this.flags&16777216?\"ConditionalType\":this.flags&33554432?\"SubstitutionType\":this.flags&262144?\"TypeParameter\":this.flags&524288?this.objectFlags&3?\"InterfaceType\":this.objectFlags&4?\"TypeReference\":this.objectFlags&8?\"TupleType\":this.objectFlags&16?\"AnonymousType\":this.objectFlags&32?\"MappedType\":this.objectFlags&1024?\"ReverseMappedType\":this.objectFlags&256?\"EvolvingArrayType\":\"ObjectType\":\"Type\",hi=this.flags&524288?this.objectFlags&-1344:0;return`${Kn}${this.symbol?` '${fc(this.symbol)}'`:\"\"}${hi?` (${Ye(hi)})`:\"\"}`}},__debugFlags:{get(){return Ne(this.flags)}},__debugObjectFlags:{get(){return this.flags&524288?Ye(this.objectFlags):\"\"}},__debugTypeToString:{value(){let Kn=Dt.get(this);return Kn===void 0&&(Kn=this.checker.typeToString(this),Dt.set(this,Kn)),Kn}}}),Object.defineProperties(ml.getSignatureConstructor().prototype,{__debugFlags:{get(){return Le(this.flags)}},__debugSignatureToString:{value(){var Kn;return(Kn=this.checker)==null?void 0:Kn.signatureToString(this)}}});let An=[ml.getNodeConstructor(),ml.getIdentifierConstructor(),ml.getTokenConstructor(),ml.getSourceFileConstructor()];for(let Kn of An)fs(Kn.prototype,\"__debugKind\")||Object.defineProperties(Kn.prototype,{__tsDebuggerDisplay:{value(){return`${tc(this)?\"GeneratedIdentifier\":Re(this)?`Identifier '${vr(this)}'`:pi(this)?`PrivateIdentifier '${vr(this)}'`:yo(this)?`StringLiteral ${JSON.stringify(this.text.length<10?this.text:this.text.slice(10)+\"...\")}`:Uf(this)?`NumericLiteral ${this.text}`:a3(this)?`BigIntLiteral ${this.text}n`:_c(this)?\"TypeParameterDeclaration\":ha(this)?\"ParameterDeclaration\":Ec(this)?\"ConstructorDeclaration\":__(this)?\"GetAccessorDeclaration\":Tf(this)?\"SetAccessorDeclaration\":p2(this)?\"CallSignatureDeclaration\":dO(this)?\"ConstructSignatureDeclaration\":DS(this)?\"IndexSignatureDeclaration\":l3(this)?\"TypePredicateNode\":p_(this)?\"TypeReferenceNode\":Jm(this)?\"FunctionTypeNode\":vL(this)?\"ConstructorTypeNode\":bL(this)?\"TypeQueryNode\":Rd(this)?\"TypeLiteralNode\":wz(this)?\"ArrayTypeNode\":m2(this)?\"TupleTypeNode\":Rz(this)?\"OptionalTypeNode\":Oz(this)?\"RestTypeNode\":wS(this)?\"UnionTypeNode\":fO(this)?\"IntersectionTypeNode\":h2(this)?\"ConditionalTypeNode\":g2(this)?\"InferTypeNode\":RS(this)?\"ParenthesizedTypeNode\":u3(this)?\"ThisTypeNode\":OS(this)?\"TypeOperatorNode\":NS(this)?\"IndexedAccessTypeNode\":TL(this)?\"MappedTypeNode\":mb(this)?\"LiteralTypeNode\":EL(this)?\"NamedTupleMember\":Mh(this)?\"ImportTypeNode\":Ve(this.kind)}${this.flags?` (${ke(this.flags)})`:\"\"}`}},__debugKind:{get(){return Ve(this.kind)}},__debugNodeFlags:{get(){return ke(this.flags)}},__debugModifierFlags:{get(){return Pe(qce(this))}},__debugTransformFlags:{get(){return Ce(this.transformFlags)}},__debugIsParseTreeNode:{get(){return fI(this)}},__debugEmitFlags:{get(){return Ie(Ya(this))}},__debugGetText:{value(hi){if(ws(this))return\"\";let ri=pn.get(this);if(ri===void 0){let gn=ea(this),Ht=gn&&Gn(gn);ri=Ht?k0(Ht,gn,hi):\"\",pn.set(this,ri)}return ri}}});zt=!0}e.enableDebugInfo=ui;function Ni(Dt){let pn=Dt&7,An=pn===0?\"in out\":pn===3?\"[bivariant]\":pn===2?\"in\":pn===1?\"out\":pn===4?\"[independent]\":\"\";return Dt&8?An+=\" (unmeasurable)\":Dt&16&&(An+=\" (unreliable)\"),An}e.formatVariance=Ni;class Pi{__debugToString(){var pn;switch(this.kind){case 3:return((pn=this.debugInfo)==null?void 0:pn.call(this))||\"(function mapper)\";case 0:return`${this.source.__debugTypeToString()} -> ${this.target.__debugTypeToString()}`;case 1:return kU(this.sources,this.targets||on(this.sources,()=>\"any\"),(An,Kn)=>`${An.__debugTypeToString()} -> ${typeof Kn==\"string\"?Kn:Kn.__debugTypeToString()}`).join(\", \");case 2:return kU(this.sources,this.targets,(An,Kn)=>`${An.__debugTypeToString()} -> ${Kn().__debugTypeToString()}`).join(\", \");case 5:case 4:return`m1: ${this.mapper1.__debugToString().split(`\n`).join(`\n    `)}\nm2: ${this.mapper2.__debugToString().split(`\n`).join(`\n    `)}`;default:return W(this)}}}e.DebugTypeMapper=Pi;function gr(Dt){return e.isDebugging?Object.setPrototypeOf(Dt,Pi.prototype):Dt}e.attachDebugPrototypeIfDebug=gr;function pt(Dt){return console.log(nn(Dt))}e.printControlFlowGraph=pt;function nn(Dt){let pn=-1;function An(pe){return pe.id||(pe.id=pn,pn--),pe.id}let Kn;(pe=>{pe.lr=\"\\u2500\",pe.ud=\"\\u2502\",pe.dr=\"\\u256D\",pe.dl=\"\\u256E\",pe.ul=\"\\u256F\",pe.ur=\"\\u2570\",pe.udr=\"\\u251C\",pe.udl=\"\\u2524\",pe.dlr=\"\\u252C\",pe.ulr=\"\\u2534\",pe.udlr=\"\\u256B\"})(Kn||(Kn={}));let hi;(pe=>{pe[pe.None=0]=\"None\",pe[pe.Up=1]=\"Up\",pe[pe.Down=2]=\"Down\",pe[pe.Left=4]=\"Left\",pe[pe.Right=8]=\"Right\",pe[pe.UpDown=3]=\"UpDown\",pe[pe.LeftRight=12]=\"LeftRight\",pe[pe.UpLeft=5]=\"UpLeft\",pe[pe.UpRight=9]=\"UpRight\",pe[pe.DownLeft=6]=\"DownLeft\",pe[pe.DownRight=10]=\"DownRight\",pe[pe.UpDownLeft=7]=\"UpDownLeft\",pe[pe.UpDownRight=11]=\"UpDownRight\",pe[pe.UpLeftRight=13]=\"UpLeftRight\",pe[pe.DownLeftRight=14]=\"DownLeftRight\",pe[pe.UpDownLeftRight=15]=\"UpDownLeftRight\",pe[pe.NoChildren=16]=\"NoChildren\"})(hi||(hi={}));let ri=2032,gn=882,Ht=Object.create(null),En=[],dr=[],Cr=G(Dt,new Set);for(let pe of En)pe.text=ae(pe.flowNode,pe.circular),je(pe);let Se=Ge(Cr),at=kt(Se);return Kt(Cr,0),rt();function Tt(pe){return!!(pe.flags&128)}function ve(pe){return!!(pe.flags&12)&&!!pe.antecedents}function nt(pe){return!!(pe.flags&ri)}function ce(pe){return!!(pe.flags&gn)}function $(pe){let z=[];for(let Te of pe.edges)Te.source===pe&&z.push(Te.target);return z}function ue(pe){let z=[];for(let Te of pe.edges)Te.target===pe&&z.push(Te.source);return z}function G(pe,z){let Te=An(pe),j=Ht[Te];if(j&&z.has(pe))return j.circular=!0,j={id:-1,flowNode:pe,edges:[],text:\"\",lane:-1,endLane:-1,level:-1,circular:\"circularity\"},En.push(j),j;if(z.add(pe),!j)if(Ht[Te]=j={id:Te,flowNode:pe,edges:[],text:\"\",lane:-1,endLane:-1,level:-1,circular:!1},En.push(j),ve(pe))for(let yt of pe.antecedents)Oe(j,yt,z);else nt(pe)&&Oe(j,pe.antecedent,z);return z.delete(pe),j}function Oe(pe,z,Te){let j=G(z,Te),yt={source:pe,target:j};dr.push(yt),pe.edges.push(yt),j.edges.push(yt)}function je(pe){if(pe.level!==-1)return pe.level;let z=0;for(let Te of ue(pe))z=Math.max(z,je(Te)+1);return pe.level=z}function Ge(pe){let z=0;for(let Te of $(pe))z=Math.max(z,Ge(Te));return z+1}function kt(pe){let z=Ke(Array(pe),0);for(let Te of En)z[Te.level]=Math.max(z[Te.level],Te.text.length);return z}function Kt(pe,z){if(pe.lane===-1){pe.lane=z,pe.endLane=z;let Te=$(pe);for(let j=0;j<Te.length;j++){j>0&&z++;let yt=Te[j];Kt(yt,z),yt.endLane>pe.endLane&&(z=yt.endLane)}pe.endLane=z}}function ln(pe){if(pe&2)return\"Start\";if(pe&4)return\"Branch\";if(pe&8)return\"Loop\";if(pe&16)return\"Assignment\";if(pe&32)return\"True\";if(pe&64)return\"False\";if(pe&128)return\"SwitchClause\";if(pe&256)return\"ArrayMutation\";if(pe&512)return\"Call\";if(pe&1024)return\"ReduceLabel\";if(pe&1)return\"Unreachable\";throw new Error}function ir(pe){let z=Gn(pe);return k0(z,pe,!1)}function ae(pe,z){let Te=ln(pe.flags);if(z&&(Te=`${Te}#${An(pe)}`),ce(pe))pe.node&&(Te+=` (${ir(pe.node)})`);else if(Tt(pe)){let j=[];for(let yt=pe.clauseStart;yt<pe.clauseEnd;yt++){let lt=pe.switchStatement.caseBlock.clauses[yt];vO(lt)?j.push(\"default\"):j.push(ir(lt.expression))}Te+=` (${j.join(\", \")})`}return z===\"circularity\"?`Circular(${Te})`:Te}function rt(){let pe=at.length,z=En.reduce((Qe,Vt)=>Math.max(Qe,Vt.lane),0)+1,Te=Ke(Array(z),\"\"),j=at.map(()=>Array(z)),yt=at.map(()=>Ke(Array(z),0));for(let Qe of En){j[Qe.level][Qe.lane]=Qe;let Vt=$(Qe);for(let jr=0;jr<Vt.length;jr++){let ei=Vt[jr],Kr=8;ei.lane===Qe.lane&&(Kr|=4),jr>0&&(Kr|=1),jr<Vt.length-1&&(Kr|=2),yt[Qe.level][ei.lane]|=Kr}Vt.length===0&&(yt[Qe.level][Qe.lane]|=16);let Hn=ue(Qe);for(let jr=0;jr<Hn.length;jr++){let ei=Hn[jr],Kr=4;jr>0&&(Kr|=1),jr<Hn.length-1&&(Kr|=2),yt[Qe.level-1][ei.lane]|=Kr}}for(let Qe=0;Qe<pe;Qe++)for(let Vt=0;Vt<z;Vt++){let Hn=Qe>0?yt[Qe-1][Vt]:0,jr=Vt>0?yt[Qe][Vt-1]:0,ei=yt[Qe][Vt];ei||(Hn&8&&(ei|=12),jr&2&&(ei|=3),yt[Qe][Vt]=ei)}for(let Qe=0;Qe<pe;Qe++)for(let Vt=0;Vt<Te.length;Vt++){let Hn=yt[Qe][Vt],jr=Hn&4?\"\\u2500\":\" \",ei=j[Qe][Vt];ei?(lt(Vt,ei.text),Qe<pe-1&&(lt(Vt,\" \"),lt(Vt,oe(jr,at[Qe]-ei.text.length)))):Qe<pe-1&&lt(Vt,oe(jr,at[Qe]+1)),lt(Vt,Ot(Hn)),lt(Vt,Hn&8&&Qe<pe-1&&!j[Qe+1][Vt]?\"\\u2500\":\" \")}return`\n${Te.join(`\n`)}\n`;function lt(Qe,Vt){Te[Qe]+=Vt}}function Ot(pe){switch(pe){case 3:return\"\\u2502\";case 12:return\"\\u2500\";case 5:return\"\\u256F\";case 9:return\"\\u2570\";case 6:return\"\\u256E\";case 10:return\"\\u256D\";case 7:return\"\\u2524\";case 11:return\"\\u251C\";case 13:return\"\\u2534\";case 14:return\"\\u252C\";case 15:return\"\\u256B\"}return\" \"}function Ke(pe,z){if(pe.fill)pe.fill(z);else for(let Te=0;Te<pe.length;Te++)pe[Te]=z;return pe}function oe(pe,z){if(pe.repeat)return z>0?pe.repeat(z):\"\";let Te=\"\";for(;Te.length<z;)Te+=pe;return Te}}e.formatControlFlowGraph=nn})(L||(L={}))}});function Fae(e){let t=Bae.exec(e);if(!t)return;let[,r,i=\"0\",o=\"0\",s=\"\",l=\"\"]=t;if(!(s&&!Uae.test(s))&&!(l&&!jae.test(l)))return{major:parseInt(r,10),minor:parseInt(i,10),patch:parseInt(o,10),prerelease:s,build:l}}function Uke(e,t){if(e===t)return 0;if(e.length===0)return t.length===0?0:1;if(t.length===0)return-1;let r=Math.min(e.length,t.length);for(let i=0;i<r;i++){let o=e[i],s=t[i];if(o===s)continue;let l=tV.test(o),f=tV.test(s);if(l||f){if(l!==f)return l?-1:1;let d=Es(+o,+s);if(d)return d}else{let d=su(o,s);if(d)return d}}return Es(e.length,t.length)}function Gae(e){let t=[];for(let r of v0(e).split(Wae)){if(!r)continue;let i=[];r=v0(r);let o=Kae.exec(r);if(o){if(!Vke(o[1],o[2],i))return}else for(let s of r.split(zae)){let l=qae.exec(v0(s));if(!l||!jke(l[1],l[2],i))return}t.push(i)}return t}function eV(e){let t=Jae.exec(e);if(!t)return;let[,r,i=\"*\",o=\"*\",s,l]=t;return{version:new n_(pf(r)?0:parseInt(r,10),pf(r)||pf(i)?0:parseInt(i,10),pf(r)||pf(i)||pf(o)?0:parseInt(o,10),s,l),major:r,minor:i,patch:o}}function Vke(e,t,r){let i=eV(e);if(!i)return!1;let o=eV(t);return o?(pf(i.major)||r.push(dp(\">=\",i.version)),pf(o.major)||r.push(pf(o.minor)?dp(\"<\",o.version.increment(\"major\")):pf(o.patch)?dp(\"<\",o.version.increment(\"minor\")):dp(\"<=\",o.version)),!0):!1}function jke(e,t,r){let i=eV(t);if(!i)return!1;let{version:o,major:s,minor:l,patch:f}=i;if(pf(s))(e===\"<\"||e===\">\")&&r.push(dp(\"<\",n_.zero));else switch(e){case\"~\":r.push(dp(\">=\",o)),r.push(dp(\"<\",o.increment(pf(l)?\"major\":\"minor\")));break;case\"^\":r.push(dp(\">=\",o)),r.push(dp(\"<\",o.increment(o.major>0||pf(l)?\"major\":o.minor>0||pf(f)?\"minor\":\"patch\")));break;case\"<\":case\">=\":r.push(pf(l)||pf(f)?dp(e,o.with({prerelease:\"0\"})):dp(e,o));break;case\"<=\":case\">\":r.push(pf(l)?dp(e===\"<=\"?\"<\":\">=\",o.increment(\"major\").with({prerelease:\"0\"})):pf(f)?dp(e===\"<=\"?\"<\":\">=\",o.increment(\"minor\").with({prerelease:\"0\"})):dp(e,o));break;case\"=\":case void 0:pf(l)||pf(f)?(r.push(dp(\">=\",o.with({prerelease:\"0\"}))),r.push(dp(\"<\",o.increment(pf(l)?\"major\":\"minor\").with({prerelease:\"0\"})))):r.push(dp(\"=\",o));break;default:return!1}return!0}function pf(e){return e===\"*\"||e===\"x\"||e===\"X\"}function dp(e,t){return{operator:e,operand:t}}function Hke(e,t){if(t.length===0)return!0;for(let r of t)if(Wke(e,r))return!0;return!1}function Wke(e,t){for(let r of t)if(!zke(e,r.operator,r.operand))return!1;return!0}function zke(e,t,r){let i=e.compareTo(r);switch(t){case\"<\":return i<0;case\"<=\":return i<=0;case\">\":return i>0;case\">=\":return i>=0;case\"=\":return i===0;default:return L.assertNever(t)}}function Jke(e){return on(e,Kke).join(\" || \")||\"*\"}function Kke(e){return on(e,qke).join(\" \")}function qke(e){return`${e.operator}${e.operand}`}var Bae,Uae,Vae,jae,Hae,tV,q1,n_,hA,Wae,zae,Jae,Kae,qae,Xke=gt({\"src/compiler/semver.ts\"(){\"use strict\";fa(),Bae=/^(0|[1-9]\\d*)(?:\\.(0|[1-9]\\d*)(?:\\.(0|[1-9]\\d*)(?:\\-([a-z0-9-.]+))?(?:\\+([a-z0-9-.]+))?)?)?$/i,Uae=/^(?:0|[1-9]\\d*|[a-z-][a-z0-9-]*)(?:\\.(?:0|[1-9]\\d*|[a-z-][a-z0-9-]*))*$/i,Vae=/^(?:0|[1-9]\\d*|[a-z-][a-z0-9-]*)$/i,jae=/^[a-z0-9-]+(?:\\.[a-z0-9-]+)*$/i,Hae=/^[a-z0-9-]+$/i,tV=/^(0|[1-9]\\d*)$/,q1=class{constructor(e,t=0,r=0,i=\"\",o=\"\"){typeof e==\"string\"&&({major:e,minor:t,patch:r,prerelease:i,build:o}=L.checkDefined(Fae(e),\"Invalid version\")),L.assert(e>=0,\"Invalid argument: major\"),L.assert(t>=0,\"Invalid argument: minor\"),L.assert(r>=0,\"Invalid argument: patch\");let s=i?ba(i)?i:i.split(\".\"):Je,l=o?ba(o)?o:o.split(\".\"):Je;L.assert(Ji(s,f=>Vae.test(f)),\"Invalid argument: prerelease\"),L.assert(Ji(l,f=>Hae.test(f)),\"Invalid argument: build\"),this.major=e,this.minor=t,this.patch=r,this.prerelease=s,this.build=l}static tryParse(e){let t=Fae(e);if(!t)return;let{major:r,minor:i,patch:o,prerelease:s,build:l}=t;return new q1(r,i,o,s,l)}compareTo(e){return this===e?0:e===void 0?1:Es(this.major,e.major)||Es(this.minor,e.minor)||Es(this.patch,e.patch)||Uke(this.prerelease,e.prerelease)}increment(e){switch(e){case\"major\":return new q1(this.major+1,0,0);case\"minor\":return new q1(this.major,this.minor+1,0);case\"patch\":return new q1(this.major,this.minor,this.patch+1);default:return L.assertNever(e)}}with(e){let{major:t=this.major,minor:r=this.minor,patch:i=this.patch,prerelease:o=this.prerelease,build:s=this.build}=e;return new q1(t,r,i,o,s)}toString(){let e=`${this.major}.${this.minor}.${this.patch}`;return vt(this.prerelease)&&(e+=`-${this.prerelease.join(\".\")}`),vt(this.build)&&(e+=`+${this.build.join(\".\")}`),e}},n_=q1,n_.zero=new q1(0,0,0,[\"0\"]),hA=class{constructor(e){this._alternatives=e?L.checkDefined(Gae(e),\"Invalid range spec.\"):Je}static tryParse(e){let t=Gae(e);if(t){let r=new hA(\"\");return r._alternatives=t,r}}test(e){return typeof e==\"string\"&&(e=new n_(e)),Hke(e,this._alternatives)}toString(){return Jke(this._alternatives)}},Wae=/\\|\\|/g,zae=/\\s+/g,Jae=/^([xX*0]|[1-9]\\d*)(?:\\.([xX*0]|[1-9]\\d*)(?:\\.([xX*0]|[1-9]\\d*)(?:-([a-z0-9-.]+))?(?:\\+([a-z0-9-.]+))?)?)?$/i,Kae=/^\\s*([a-z0-9-+.*]+)\\s+-\\s+([a-z0-9-+.*]+)\\s*$/i,qae=/^(~|\\^|<|<=|>|>=|=)?\\s*([a-z0-9-+.*]+)$/i}});function Xae(e,t){return typeof e==\"object\"&&typeof e.timeOrigin==\"number\"&&typeof e.mark==\"function\"&&typeof e.measure==\"function\"&&typeof e.now==\"function\"&&typeof e.clearMarks==\"function\"&&typeof e.clearMeasures==\"function\"&&typeof t==\"function\"}function Yke(){if(typeof performance==\"object\"&&typeof PerformanceObserver==\"function\"&&Xae(performance,PerformanceObserver))return{shouldWriteNativeEvents:!0,performance,PerformanceObserver}}function $ke(){if(qU())try{let e,{performance:t,PerformanceObserver:r}=d0(\"perf_hooks\");if(Xae(t,r)){e=t;let i=new n_(process.versions.node);return new hA(\"<12.16.3 || 13 <13.13\").test(i)&&(e={get timeOrigin(){return t.timeOrigin},now(){return t.now()},mark(s){return t.mark(s)},measure(s,l=\"nodeStart\",f){f===void 0&&(f=\"__performance.measure-fix__\",t.mark(f)),t.measure(s,l,f),f===\"__performance.measure-fix__\"&&t.clearMarks(\"__performance.measure-fix__\")},clearMarks(s){return t.clearMarks(s)},clearMeasures(s){return t.clearMeasures(s)}}),{shouldWriteNativeEvents:!1,performance:e,PerformanceObserver:r}}}catch{}}function Yae(){return S8}var S8,nV,Ms,Qke=gt({\"src/compiler/performanceCore.ts\"(){\"use strict\";fa(),S8=Yke()||$ke(),nV=S8?.performance,Ms=nV?()=>nV.now():Date.now?Date.now:()=>+new Date}}),$ae,ZD,Qae,fp,Zke=gt({\"src/compiler/perfLogger.ts\"(){\"use strict\";fa(),$ae={logEvent:Ba,logErrEvent:Ba,logPerfEvent:Ba,logInfoEvent:Ba,logStartCommand:Ba,logStopCommand:Ba,logStartUpdateProgram:Ba,logStopUpdateProgram:Ba,logStartUpdateGraph:Ba,logStopUpdateGraph:Ba,logStartResolveModule:Ba,logStopResolveModule:Ba,logStartParseSourceFile:Ba,logStopParseSourceFile:Ba,logStartReadFile:Ba,logStopReadFile:Ba,logStartBindFile:Ba,logStopBindFile:Ba,logStartScheduledOperation:Ba,logStopScheduledOperation:Ba};try{let e=(Qae=process.env.TS_ETW_MODULE_PATH)!=null?Qae:\"./node_modules/@microsoft/typescript-etw\";ZD=d0(e)}catch{ZD=void 0}fp=ZD?.logEvent?ZD:$ae}});function Zae(e,t,r,i){return e?x8(t,r,i):A8}function x8(e,t,r){let i=0;return{enter:o,exit:s};function o(){++i===1&&Fs(t)}function s(){--i===0?(Fs(r),mf(e,t,r)):i<0&&L.fail(\"enter/exit count does not match.\")}}function Fs(e){var t;if(X1){let r=(t=gA.get(e))!=null?t:0;gA.set(e,r+1),Y1.set(e,Ms()),b0?.mark(e),typeof onProfilerEvent==\"function\"&&onProfilerEvent(e)}}function mf(e,t,r){var i,o;if(X1){let s=(i=r!==void 0?Y1.get(r):void 0)!=null?i:Ms(),l=(o=t!==void 0?Y1.get(t):void 0)!=null?o:rV,f=$1.get(e)||0;$1.set(e,f+(s-l)),b0?.measure(e,t,r)}}function eDe(e){return gA.get(e)||0}function tDe(e){return $1.get(e)||0}function nDe(e){$1.forEach((t,r)=>e(r,t))}function rDe(e){Y1.forEach((t,r)=>e(r))}function iDe(e){e!==void 0?$1.delete(e):$1.clear(),b0?.clearMeasures(e)}function aDe(e){e!==void 0?(gA.delete(e),Y1.delete(e)):(gA.clear(),Y1.clear()),b0?.clearMarks(e)}function oDe(){return X1}function sDe(e=xl){var t;return X1||(X1=!0,tI||(tI=Yae()),tI&&(rV=tI.performance.timeOrigin,(tI.shouldWriteNativeEvents||((t=e?.cpuProfilingEnabled)==null?void 0:t.call(e))||e?.debugMode)&&(b0=tI.performance))),!0}function cDe(){X1&&(Y1.clear(),gA.clear(),$1.clear(),b0=void 0,X1=!1)}var tI,b0,A8,X1,rV,Y1,gA,$1,lDe=gt({\"src/compiler/performance.ts\"(){\"use strict\";fa(),A8={enter:Ba,exit:Ba},X1=!1,rV=Ms(),Y1=new Map,gA=new Map,$1=new Map}}),ew={};Mo(ew,{clearMarks:()=>aDe,clearMeasures:()=>iDe,createTimer:()=>x8,createTimerIf:()=>Zae,disable:()=>cDe,enable:()=>sDe,forEachMark:()=>rDe,forEachMeasure:()=>nDe,getCount:()=>eDe,getDuration:()=>tDe,isEnabled:()=>oDe,mark:()=>Fs,measure:()=>mf,nullTimer:()=>A8});var E0=gt({\"src/compiler/_namespaces/ts.performance.ts\"(){\"use strict\";lDe()}}),ai,tw,eoe,toe,uDe=gt({\"src/compiler/tracing.ts\"(){\"use strict\";fa(),E0(),(e=>{let t,r=0,i=0,o,s=[],l,f=[];function d(R,ie,Q){if(L.assert(!ai,\"Tracing already started\"),t===void 0)try{t=d0(\"fs\")}catch(le){throw new Error(`tracing requires having fs\n(original error: ${le.message||le})`)}o=R,s.length=0,l===void 0&&(l=vi(ie,\"legend.json\")),t.existsSync(ie)||t.mkdirSync(ie,{recursive:!0});let fe=o===\"build\"?`.${process.pid}-${++r}`:o===\"server\"?`.${process.pid}`:\"\",Z=vi(ie,`trace${fe}.json`),U=vi(ie,`types${fe}.json`);f.push({configFilePath:Q,tracePath:Z,typesPath:U}),i=t.openSync(Z,\"w\"),ai=e;let re={cat:\"__metadata\",ph:\"M\",ts:1e3*Ms(),pid:1,tid:1};t.writeSync(i,`[\n`+[{name:\"process_name\",args:{name:\"tsc\"},...re},{name:\"thread_name\",args:{name:\"Main\"},...re},{name:\"TracingStartedInBrowser\",...re,cat:\"disabled-by-default-devtools.timeline\"}].map(le=>JSON.stringify(le)).join(`,\n`))}e.startTracing=d;function g(){L.assert(ai,\"Tracing is not in progress\"),L.assert(!!s.length==(o!==\"server\")),t.writeSync(i,`\n]\n`),t.closeSync(i),ai=void 0,s.length?W(s):f[f.length-1].typesPath=void 0}e.stopTracing=g;function m(R){o!==\"server\"&&s.push(R)}e.recordType=m;let v;(R=>{R.Parse=\"parse\",R.Program=\"program\",R.Bind=\"bind\",R.Check=\"check\",R.CheckTypes=\"checkTypes\",R.Emit=\"emit\",R.Session=\"session\"})(v=e.Phase||(e.Phase={}));function S(R,ie,Q){B(\"I\",R,ie,Q,'\"s\":\"g\"')}e.instant=S;let x=[];function A(R,ie,Q,fe=!1){fe&&B(\"B\",R,ie,Q),x.push({phase:R,name:ie,args:Q,time:1e3*Ms(),separateBeginAndEnd:fe})}e.push=A;function w(R){L.assert(x.length>0),F(x.length-1,1e3*Ms(),R),x.length--}e.pop=w;function C(){let R=1e3*Ms();for(let ie=x.length-1;ie>=0;ie--)F(ie,R);x.length=0}e.popAll=C;let P=1e3*10;function F(R,ie,Q){let{phase:fe,name:Z,args:U,time:re,separateBeginAndEnd:le}=x[R];le?(L.assert(!Q,\"`results` are not supported for events with `separateBeginAndEnd`\"),B(\"E\",fe,Z,U,void 0,ie)):P-re%P<=ie-re&&B(\"X\",fe,Z,{...U,results:Q},`\"dur\":${ie-re}`,re)}function B(R,ie,Q,fe,Z,U=1e3*Ms()){o===\"server\"&&ie===\"checkTypes\"||(Fs(\"beginTracing\"),t.writeSync(i,`,\n{\"pid\":1,\"tid\":1,\"ph\":\"${R}\",\"cat\":\"${ie}\",\"ts\":${U},\"name\":\"${Q}\"`),Z&&t.writeSync(i,`,${Z}`),fe&&t.writeSync(i,`,\"args\":${JSON.stringify(fe)}`),t.writeSync(i,\"}\"),Fs(\"endTracing\"),mf(\"Tracing\",\"beginTracing\",\"endTracing\"))}function q(R){let ie=Gn(R);return ie?{path:ie.path,start:Q(Gs(ie,R.pos)),end:Q(Gs(ie,R.end))}:void 0;function Q(fe){return{line:fe.line+1,character:fe.character+1}}}function W(R){var ie,Q,fe,Z,U,re,le,_e,ge,X,Ve,we,ke,Pe,Ce,Ie,Be,Ne,Le,Ye,_t,ct;Fs(\"beginDumpTypes\");let Rt=f[f.length-1].typesPath,We=t.openSync(Rt,\"w\"),qe=new Map;t.writeSync(We,\"[\");let zt=R.length;for(let Qt=0;Qt<zt;Qt++){let tn=R[Qt],kn=tn.objectFlags,_n=(ie=tn.aliasSymbol)!=null?ie:tn.symbol,Gt;if(kn&16|tn.flags&2944)try{Gt=(Q=tn.checker)==null?void 0:Q.typeToString(tn)}catch{Gt=void 0}let $n={};if(tn.flags&8388608){let An=tn;$n={indexedAccessObjectType:(fe=An.objectType)==null?void 0:fe.id,indexedAccessIndexType:(Z=An.indexType)==null?void 0:Z.id}}let ui={};if(kn&4){let An=tn;ui={instantiatedType:(U=An.target)==null?void 0:U.id,typeArguments:(re=An.resolvedTypeArguments)==null?void 0:re.map(Kn=>Kn.id),referenceLocation:q(An.node)}}let Ni={};if(tn.flags&16777216){let An=tn;Ni={conditionalCheckType:(le=An.checkType)==null?void 0:le.id,conditionalExtendsType:(_e=An.extendsType)==null?void 0:_e.id,conditionalTrueType:(X=(ge=An.resolvedTrueType)==null?void 0:ge.id)!=null?X:-1,conditionalFalseType:(we=(Ve=An.resolvedFalseType)==null?void 0:Ve.id)!=null?we:-1}}let Pi={};if(tn.flags&33554432){let An=tn;Pi={substitutionBaseType:(ke=An.baseType)==null?void 0:ke.id,constraintType:(Pe=An.constraint)==null?void 0:Pe.id}}let gr={};if(kn&1024){let An=tn;gr={reverseMappedSourceType:(Ce=An.source)==null?void 0:Ce.id,reverseMappedMappedType:(Ie=An.mappedType)==null?void 0:Ie.id,reverseMappedConstraintType:(Be=An.constraintType)==null?void 0:Be.id}}let pt={};if(kn&256){let An=tn;pt={evolvingArrayElementType:An.elementType.id,evolvingArrayFinalType:(Ne=An.finalArrayType)==null?void 0:Ne.id}}let nn,Dt=tn.checker.getRecursionIdentity(tn);Dt&&(nn=qe.get(Dt),nn||(nn=qe.size,qe.set(Dt,nn)));let pn={id:tn.id,intrinsicName:tn.intrinsicName,symbolName:_n?.escapedName&&Gi(_n.escapedName),recursionId:nn,isTuple:kn&8?!0:void 0,unionTypes:tn.flags&1048576?(Le=tn.types)==null?void 0:Le.map(An=>An.id):void 0,intersectionTypes:tn.flags&2097152?tn.types.map(An=>An.id):void 0,aliasTypeArguments:(Ye=tn.aliasTypeArguments)==null?void 0:Ye.map(An=>An.id),keyofType:tn.flags&4194304?(_t=tn.type)==null?void 0:_t.id:void 0,...$n,...ui,...Ni,...Pi,...gr,...pt,destructuringPattern:q(tn.pattern),firstDeclaration:q((ct=_n?.declarations)==null?void 0:ct[0]),flags:L.formatTypeFlags(tn.flags).split(\"|\"),display:Gt};t.writeSync(We,JSON.stringify(pn)),Qt<zt-1&&t.writeSync(We,`,\n`)}t.writeSync(We,`]\n`),t.closeSync(We),Fs(\"endDumpTypes\"),mf(\"Dump types\",\"beginDumpTypes\",\"endDumpTypes\")}function Y(){!l||t.writeFileSync(l,JSON.stringify(f))}e.dumpLegend=Y})(tw||(tw={})),eoe=tw.startTracing,toe=tw.dumpLegend}});function C8(e,t=!0){let r=rw[e.category];return t?r.toLowerCase():r}var I8,L8,k8,iV,D8,w8,aV,nw,oV,nI,R8,sV,cV,lV,uV,dV,fV,_V,pV,mV,hV,gV,yV,vV,bV,O8,EV,TV,SV,xV,N8,P8,AV,CV,IV,LV,kV,M8,DV,wV,RV,OV,NV,PV,rw,iw,MV,FV,GV,BV,F8,UV,VV,jV,HV,WV,zV,JV,KV,qV,G8,B8,U8,XV,YV,$V,QV,ZV,ej,tj,nj,aw,noe=gt({\"src/compiler/types.ts\"(){\"use strict\";I8=(e=>(e[e.Unknown=0]=\"Unknown\",e[e.EndOfFileToken=1]=\"EndOfFileToken\",e[e.SingleLineCommentTrivia=2]=\"SingleLineCommentTrivia\",e[e.MultiLineCommentTrivia=3]=\"MultiLineCommentTrivia\",e[e.NewLineTrivia=4]=\"NewLineTrivia\",e[e.WhitespaceTrivia=5]=\"WhitespaceTrivia\",e[e.ShebangTrivia=6]=\"ShebangTrivia\",e[e.ConflictMarkerTrivia=7]=\"ConflictMarkerTrivia\",e[e.NumericLiteral=8]=\"NumericLiteral\",e[e.BigIntLiteral=9]=\"BigIntLiteral\",e[e.StringLiteral=10]=\"StringLiteral\",e[e.JsxText=11]=\"JsxText\",e[e.JsxTextAllWhiteSpaces=12]=\"JsxTextAllWhiteSpaces\",e[e.RegularExpressionLiteral=13]=\"RegularExpressionLiteral\",e[e.NoSubstitutionTemplateLiteral=14]=\"NoSubstitutionTemplateLiteral\",e[e.TemplateHead=15]=\"TemplateHead\",e[e.TemplateMiddle=16]=\"TemplateMiddle\",e[e.TemplateTail=17]=\"TemplateTail\",e[e.OpenBraceToken=18]=\"OpenBraceToken\",e[e.CloseBraceToken=19]=\"CloseBraceToken\",e[e.OpenParenToken=20]=\"OpenParenToken\",e[e.CloseParenToken=21]=\"CloseParenToken\",e[e.OpenBracketToken=22]=\"OpenBracketToken\",e[e.CloseBracketToken=23]=\"CloseBracketToken\",e[e.DotToken=24]=\"DotToken\",e[e.DotDotDotToken=25]=\"DotDotDotToken\",e[e.SemicolonToken=26]=\"SemicolonToken\",e[e.CommaToken=27]=\"CommaToken\",e[e.QuestionDotToken=28]=\"QuestionDotToken\",e[e.LessThanToken=29]=\"LessThanToken\",e[e.LessThanSlashToken=30]=\"LessThanSlashToken\",e[e.GreaterThanToken=31]=\"GreaterThanToken\",e[e.LessThanEqualsToken=32]=\"LessThanEqualsToken\",e[e.GreaterThanEqualsToken=33]=\"GreaterThanEqualsToken\",e[e.EqualsEqualsToken=34]=\"EqualsEqualsToken\",e[e.ExclamationEqualsToken=35]=\"ExclamationEqualsToken\",e[e.EqualsEqualsEqualsToken=36]=\"EqualsEqualsEqualsToken\",e[e.ExclamationEqualsEqualsToken=37]=\"ExclamationEqualsEqualsToken\",e[e.EqualsGreaterThanToken=38]=\"EqualsGreaterThanToken\",e[e.PlusToken=39]=\"PlusToken\",e[e.MinusToken=40]=\"MinusToken\",e[e.AsteriskToken=41]=\"AsteriskToken\",e[e.AsteriskAsteriskToken=42]=\"AsteriskAsteriskToken\",e[e.SlashToken=43]=\"SlashToken\",e[e.PercentToken=44]=\"PercentToken\",e[e.PlusPlusToken=45]=\"PlusPlusToken\",e[e.MinusMinusToken=46]=\"MinusMinusToken\",e[e.LessThanLessThanToken=47]=\"LessThanLessThanToken\",e[e.GreaterThanGreaterThanToken=48]=\"GreaterThanGreaterThanToken\",e[e.GreaterThanGreaterThanGreaterThanToken=49]=\"GreaterThanGreaterThanGreaterThanToken\",e[e.AmpersandToken=50]=\"AmpersandToken\",e[e.BarToken=51]=\"BarToken\",e[e.CaretToken=52]=\"CaretToken\",e[e.ExclamationToken=53]=\"ExclamationToken\",e[e.TildeToken=54]=\"TildeToken\",e[e.AmpersandAmpersandToken=55]=\"AmpersandAmpersandToken\",e[e.BarBarToken=56]=\"BarBarToken\",e[e.QuestionToken=57]=\"QuestionToken\",e[e.ColonToken=58]=\"ColonToken\",e[e.AtToken=59]=\"AtToken\",e[e.QuestionQuestionToken=60]=\"QuestionQuestionToken\",e[e.BacktickToken=61]=\"BacktickToken\",e[e.HashToken=62]=\"HashToken\",e[e.EqualsToken=63]=\"EqualsToken\",e[e.PlusEqualsToken=64]=\"PlusEqualsToken\",e[e.MinusEqualsToken=65]=\"MinusEqualsToken\",e[e.AsteriskEqualsToken=66]=\"AsteriskEqualsToken\",e[e.AsteriskAsteriskEqualsToken=67]=\"AsteriskAsteriskEqualsToken\",e[e.SlashEqualsToken=68]=\"SlashEqualsToken\",e[e.PercentEqualsToken=69]=\"PercentEqualsToken\",e[e.LessThanLessThanEqualsToken=70]=\"LessThanLessThanEqualsToken\",e[e.GreaterThanGreaterThanEqualsToken=71]=\"GreaterThanGreaterThanEqualsToken\",e[e.GreaterThanGreaterThanGreaterThanEqualsToken=72]=\"GreaterThanGreaterThanGreaterThanEqualsToken\",e[e.AmpersandEqualsToken=73]=\"AmpersandEqualsToken\",e[e.BarEqualsToken=74]=\"BarEqualsToken\",e[e.BarBarEqualsToken=75]=\"BarBarEqualsToken\",e[e.AmpersandAmpersandEqualsToken=76]=\"AmpersandAmpersandEqualsToken\",e[e.QuestionQuestionEqualsToken=77]=\"QuestionQuestionEqualsToken\",e[e.CaretEqualsToken=78]=\"CaretEqualsToken\",e[e.Identifier=79]=\"Identifier\",e[e.PrivateIdentifier=80]=\"PrivateIdentifier\",e[e.BreakKeyword=81]=\"BreakKeyword\",e[e.CaseKeyword=82]=\"CaseKeyword\",e[e.CatchKeyword=83]=\"CatchKeyword\",e[e.ClassKeyword=84]=\"ClassKeyword\",e[e.ConstKeyword=85]=\"ConstKeyword\",e[e.ContinueKeyword=86]=\"ContinueKeyword\",e[e.DebuggerKeyword=87]=\"DebuggerKeyword\",e[e.DefaultKeyword=88]=\"DefaultKeyword\",e[e.DeleteKeyword=89]=\"DeleteKeyword\",e[e.DoKeyword=90]=\"DoKeyword\",e[e.ElseKeyword=91]=\"ElseKeyword\",e[e.EnumKeyword=92]=\"EnumKeyword\",e[e.ExportKeyword=93]=\"ExportKeyword\",e[e.ExtendsKeyword=94]=\"ExtendsKeyword\",e[e.FalseKeyword=95]=\"FalseKeyword\",e[e.FinallyKeyword=96]=\"FinallyKeyword\",e[e.ForKeyword=97]=\"ForKeyword\",e[e.FunctionKeyword=98]=\"FunctionKeyword\",e[e.IfKeyword=99]=\"IfKeyword\",e[e.ImportKeyword=100]=\"ImportKeyword\",e[e.InKeyword=101]=\"InKeyword\",e[e.InstanceOfKeyword=102]=\"InstanceOfKeyword\",e[e.NewKeyword=103]=\"NewKeyword\",e[e.NullKeyword=104]=\"NullKeyword\",e[e.ReturnKeyword=105]=\"ReturnKeyword\",e[e.SuperKeyword=106]=\"SuperKeyword\",e[e.SwitchKeyword=107]=\"SwitchKeyword\",e[e.ThisKeyword=108]=\"ThisKeyword\",e[e.ThrowKeyword=109]=\"ThrowKeyword\",e[e.TrueKeyword=110]=\"TrueKeyword\",e[e.TryKeyword=111]=\"TryKeyword\",e[e.TypeOfKeyword=112]=\"TypeOfKeyword\",e[e.VarKeyword=113]=\"VarKeyword\",e[e.VoidKeyword=114]=\"VoidKeyword\",e[e.WhileKeyword=115]=\"WhileKeyword\",e[e.WithKeyword=116]=\"WithKeyword\",e[e.ImplementsKeyword=117]=\"ImplementsKeyword\",e[e.InterfaceKeyword=118]=\"InterfaceKeyword\",e[e.LetKeyword=119]=\"LetKeyword\",e[e.PackageKeyword=120]=\"PackageKeyword\",e[e.PrivateKeyword=121]=\"PrivateKeyword\",e[e.ProtectedKeyword=122]=\"ProtectedKeyword\",e[e.PublicKeyword=123]=\"PublicKeyword\",e[e.StaticKeyword=124]=\"StaticKeyword\",e[e.YieldKeyword=125]=\"YieldKeyword\",e[e.AbstractKeyword=126]=\"AbstractKeyword\",e[e.AccessorKeyword=127]=\"AccessorKeyword\",e[e.AsKeyword=128]=\"AsKeyword\",e[e.AssertsKeyword=129]=\"AssertsKeyword\",e[e.AssertKeyword=130]=\"AssertKeyword\",e[e.AnyKeyword=131]=\"AnyKeyword\",e[e.AsyncKeyword=132]=\"AsyncKeyword\",e[e.AwaitKeyword=133]=\"AwaitKeyword\",e[e.BooleanKeyword=134]=\"BooleanKeyword\",e[e.ConstructorKeyword=135]=\"ConstructorKeyword\",e[e.DeclareKeyword=136]=\"DeclareKeyword\",e[e.GetKeyword=137]=\"GetKeyword\",e[e.InferKeyword=138]=\"InferKeyword\",e[e.IntrinsicKeyword=139]=\"IntrinsicKeyword\",e[e.IsKeyword=140]=\"IsKeyword\",e[e.KeyOfKeyword=141]=\"KeyOfKeyword\",e[e.ModuleKeyword=142]=\"ModuleKeyword\",e[e.NamespaceKeyword=143]=\"NamespaceKeyword\",e[e.NeverKeyword=144]=\"NeverKeyword\",e[e.OutKeyword=145]=\"OutKeyword\",e[e.ReadonlyKeyword=146]=\"ReadonlyKeyword\",e[e.RequireKeyword=147]=\"RequireKeyword\",e[e.NumberKeyword=148]=\"NumberKeyword\",e[e.ObjectKeyword=149]=\"ObjectKeyword\",e[e.SatisfiesKeyword=150]=\"SatisfiesKeyword\",e[e.SetKeyword=151]=\"SetKeyword\",e[e.StringKeyword=152]=\"StringKeyword\",e[e.SymbolKeyword=153]=\"SymbolKeyword\",e[e.TypeKeyword=154]=\"TypeKeyword\",e[e.UndefinedKeyword=155]=\"UndefinedKeyword\",e[e.UniqueKeyword=156]=\"UniqueKeyword\",e[e.UnknownKeyword=157]=\"UnknownKeyword\",e[e.FromKeyword=158]=\"FromKeyword\",e[e.GlobalKeyword=159]=\"GlobalKeyword\",e[e.BigIntKeyword=160]=\"BigIntKeyword\",e[e.OverrideKeyword=161]=\"OverrideKeyword\",e[e.OfKeyword=162]=\"OfKeyword\",e[e.QualifiedName=163]=\"QualifiedName\",e[e.ComputedPropertyName=164]=\"ComputedPropertyName\",e[e.TypeParameter=165]=\"TypeParameter\",e[e.Parameter=166]=\"Parameter\",e[e.Decorator=167]=\"Decorator\",e[e.PropertySignature=168]=\"PropertySignature\",e[e.PropertyDeclaration=169]=\"PropertyDeclaration\",e[e.MethodSignature=170]=\"MethodSignature\",e[e.MethodDeclaration=171]=\"MethodDeclaration\",e[e.ClassStaticBlockDeclaration=172]=\"ClassStaticBlockDeclaration\",e[e.Constructor=173]=\"Constructor\",e[e.GetAccessor=174]=\"GetAccessor\",e[e.SetAccessor=175]=\"SetAccessor\",e[e.CallSignature=176]=\"CallSignature\",e[e.ConstructSignature=177]=\"ConstructSignature\",e[e.IndexSignature=178]=\"IndexSignature\",e[e.TypePredicate=179]=\"TypePredicate\",e[e.TypeReference=180]=\"TypeReference\",e[e.FunctionType=181]=\"FunctionType\",e[e.ConstructorType=182]=\"ConstructorType\",e[e.TypeQuery=183]=\"TypeQuery\",e[e.TypeLiteral=184]=\"TypeLiteral\",e[e.ArrayType=185]=\"ArrayType\",e[e.TupleType=186]=\"TupleType\",e[e.OptionalType=187]=\"OptionalType\",e[e.RestType=188]=\"RestType\",e[e.UnionType=189]=\"UnionType\",e[e.IntersectionType=190]=\"IntersectionType\",e[e.ConditionalType=191]=\"ConditionalType\",e[e.InferType=192]=\"InferType\",e[e.ParenthesizedType=193]=\"ParenthesizedType\",e[e.ThisType=194]=\"ThisType\",e[e.TypeOperator=195]=\"TypeOperator\",e[e.IndexedAccessType=196]=\"IndexedAccessType\",e[e.MappedType=197]=\"MappedType\",e[e.LiteralType=198]=\"LiteralType\",e[e.NamedTupleMember=199]=\"NamedTupleMember\",e[e.TemplateLiteralType=200]=\"TemplateLiteralType\",e[e.TemplateLiteralTypeSpan=201]=\"TemplateLiteralTypeSpan\",e[e.ImportType=202]=\"ImportType\",e[e.ObjectBindingPattern=203]=\"ObjectBindingPattern\",e[e.ArrayBindingPattern=204]=\"ArrayBindingPattern\",e[e.BindingElement=205]=\"BindingElement\",e[e.ArrayLiteralExpression=206]=\"ArrayLiteralExpression\",e[e.ObjectLiteralExpression=207]=\"ObjectLiteralExpression\",e[e.PropertyAccessExpression=208]=\"PropertyAccessExpression\",e[e.ElementAccessExpression=209]=\"ElementAccessExpression\",e[e.CallExpression=210]=\"CallExpression\",e[e.NewExpression=211]=\"NewExpression\",e[e.TaggedTemplateExpression=212]=\"TaggedTemplateExpression\",e[e.TypeAssertionExpression=213]=\"TypeAssertionExpression\",e[e.ParenthesizedExpression=214]=\"ParenthesizedExpression\",e[e.FunctionExpression=215]=\"FunctionExpression\",e[e.ArrowFunction=216]=\"ArrowFunction\",e[e.DeleteExpression=217]=\"DeleteExpression\",e[e.TypeOfExpression=218]=\"TypeOfExpression\",e[e.VoidExpression=219]=\"VoidExpression\",e[e.AwaitExpression=220]=\"AwaitExpression\",e[e.PrefixUnaryExpression=221]=\"PrefixUnaryExpression\",e[e.PostfixUnaryExpression=222]=\"PostfixUnaryExpression\",e[e.BinaryExpression=223]=\"BinaryExpression\",e[e.ConditionalExpression=224]=\"ConditionalExpression\",e[e.TemplateExpression=225]=\"TemplateExpression\",e[e.YieldExpression=226]=\"YieldExpression\",e[e.SpreadElement=227]=\"SpreadElement\",e[e.ClassExpression=228]=\"ClassExpression\",e[e.OmittedExpression=229]=\"OmittedExpression\",e[e.ExpressionWithTypeArguments=230]=\"ExpressionWithTypeArguments\",e[e.AsExpression=231]=\"AsExpression\",e[e.NonNullExpression=232]=\"NonNullExpression\",e[e.MetaProperty=233]=\"MetaProperty\",e[e.SyntheticExpression=234]=\"SyntheticExpression\",e[e.SatisfiesExpression=235]=\"SatisfiesExpression\",e[e.TemplateSpan=236]=\"TemplateSpan\",e[e.SemicolonClassElement=237]=\"SemicolonClassElement\",e[e.Block=238]=\"Block\",e[e.EmptyStatement=239]=\"EmptyStatement\",e[e.VariableStatement=240]=\"VariableStatement\",e[e.ExpressionStatement=241]=\"ExpressionStatement\",e[e.IfStatement=242]=\"IfStatement\",e[e.DoStatement=243]=\"DoStatement\",e[e.WhileStatement=244]=\"WhileStatement\",e[e.ForStatement=245]=\"ForStatement\",e[e.ForInStatement=246]=\"ForInStatement\",e[e.ForOfStatement=247]=\"ForOfStatement\",e[e.ContinueStatement=248]=\"ContinueStatement\",e[e.BreakStatement=249]=\"BreakStatement\",e[e.ReturnStatement=250]=\"ReturnStatement\",e[e.WithStatement=251]=\"WithStatement\",e[e.SwitchStatement=252]=\"SwitchStatement\",e[e.LabeledStatement=253]=\"LabeledStatement\",e[e.ThrowStatement=254]=\"ThrowStatement\",e[e.TryStatement=255]=\"TryStatement\",e[e.DebuggerStatement=256]=\"DebuggerStatement\",e[e.VariableDeclaration=257]=\"VariableDeclaration\",e[e.VariableDeclarationList=258]=\"VariableDeclarationList\",e[e.FunctionDeclaration=259]=\"FunctionDeclaration\",e[e.ClassDeclaration=260]=\"ClassDeclaration\",e[e.InterfaceDeclaration=261]=\"InterfaceDeclaration\",e[e.TypeAliasDeclaration=262]=\"TypeAliasDeclaration\",e[e.EnumDeclaration=263]=\"EnumDeclaration\",e[e.ModuleDeclaration=264]=\"ModuleDeclaration\",e[e.ModuleBlock=265]=\"ModuleBlock\",e[e.CaseBlock=266]=\"CaseBlock\",e[e.NamespaceExportDeclaration=267]=\"NamespaceExportDeclaration\",e[e.ImportEqualsDeclaration=268]=\"ImportEqualsDeclaration\",e[e.ImportDeclaration=269]=\"ImportDeclaration\",e[e.ImportClause=270]=\"ImportClause\",e[e.NamespaceImport=271]=\"NamespaceImport\",e[e.NamedImports=272]=\"NamedImports\",e[e.ImportSpecifier=273]=\"ImportSpecifier\",e[e.ExportAssignment=274]=\"ExportAssignment\",e[e.ExportDeclaration=275]=\"ExportDeclaration\",e[e.NamedExports=276]=\"NamedExports\",e[e.NamespaceExport=277]=\"NamespaceExport\",e[e.ExportSpecifier=278]=\"ExportSpecifier\",e[e.MissingDeclaration=279]=\"MissingDeclaration\",e[e.ExternalModuleReference=280]=\"ExternalModuleReference\",e[e.JsxElement=281]=\"JsxElement\",e[e.JsxSelfClosingElement=282]=\"JsxSelfClosingElement\",e[e.JsxOpeningElement=283]=\"JsxOpeningElement\",e[e.JsxClosingElement=284]=\"JsxClosingElement\",e[e.JsxFragment=285]=\"JsxFragment\",e[e.JsxOpeningFragment=286]=\"JsxOpeningFragment\",e[e.JsxClosingFragment=287]=\"JsxClosingFragment\",e[e.JsxAttribute=288]=\"JsxAttribute\",e[e.JsxAttributes=289]=\"JsxAttributes\",e[e.JsxSpreadAttribute=290]=\"JsxSpreadAttribute\",e[e.JsxExpression=291]=\"JsxExpression\",e[e.CaseClause=292]=\"CaseClause\",e[e.DefaultClause=293]=\"DefaultClause\",e[e.HeritageClause=294]=\"HeritageClause\",e[e.CatchClause=295]=\"CatchClause\",e[e.AssertClause=296]=\"AssertClause\",e[e.AssertEntry=297]=\"AssertEntry\",e[e.ImportTypeAssertionContainer=298]=\"ImportTypeAssertionContainer\",e[e.PropertyAssignment=299]=\"PropertyAssignment\",e[e.ShorthandPropertyAssignment=300]=\"ShorthandPropertyAssignment\",e[e.SpreadAssignment=301]=\"SpreadAssignment\",e[e.EnumMember=302]=\"EnumMember\",e[e.UnparsedPrologue=303]=\"UnparsedPrologue\",e[e.UnparsedPrepend=304]=\"UnparsedPrepend\",e[e.UnparsedText=305]=\"UnparsedText\",e[e.UnparsedInternalText=306]=\"UnparsedInternalText\",e[e.UnparsedSyntheticReference=307]=\"UnparsedSyntheticReference\",e[e.SourceFile=308]=\"SourceFile\",e[e.Bundle=309]=\"Bundle\",e[e.UnparsedSource=310]=\"UnparsedSource\",e[e.InputFiles=311]=\"InputFiles\",e[e.JSDocTypeExpression=312]=\"JSDocTypeExpression\",e[e.JSDocNameReference=313]=\"JSDocNameReference\",e[e.JSDocMemberName=314]=\"JSDocMemberName\",e[e.JSDocAllType=315]=\"JSDocAllType\",e[e.JSDocUnknownType=316]=\"JSDocUnknownType\",e[e.JSDocNullableType=317]=\"JSDocNullableType\",e[e.JSDocNonNullableType=318]=\"JSDocNonNullableType\",e[e.JSDocOptionalType=319]=\"JSDocOptionalType\",e[e.JSDocFunctionType=320]=\"JSDocFunctionType\",e[e.JSDocVariadicType=321]=\"JSDocVariadicType\",e[e.JSDocNamepathType=322]=\"JSDocNamepathType\",e[e.JSDoc=323]=\"JSDoc\",e[e.JSDocComment=323]=\"JSDocComment\",e[e.JSDocText=324]=\"JSDocText\",e[e.JSDocTypeLiteral=325]=\"JSDocTypeLiteral\",e[e.JSDocSignature=326]=\"JSDocSignature\",e[e.JSDocLink=327]=\"JSDocLink\",e[e.JSDocLinkCode=328]=\"JSDocLinkCode\",e[e.JSDocLinkPlain=329]=\"JSDocLinkPlain\",e[e.JSDocTag=330]=\"JSDocTag\",e[e.JSDocAugmentsTag=331]=\"JSDocAugmentsTag\",e[e.JSDocImplementsTag=332]=\"JSDocImplementsTag\",e[e.JSDocAuthorTag=333]=\"JSDocAuthorTag\",e[e.JSDocDeprecatedTag=334]=\"JSDocDeprecatedTag\",e[e.JSDocClassTag=335]=\"JSDocClassTag\",e[e.JSDocPublicTag=336]=\"JSDocPublicTag\",e[e.JSDocPrivateTag=337]=\"JSDocPrivateTag\",e[e.JSDocProtectedTag=338]=\"JSDocProtectedTag\",e[e.JSDocReadonlyTag=339]=\"JSDocReadonlyTag\",e[e.JSDocOverrideTag=340]=\"JSDocOverrideTag\",e[e.JSDocCallbackTag=341]=\"JSDocCallbackTag\",e[e.JSDocOverloadTag=342]=\"JSDocOverloadTag\",e[e.JSDocEnumTag=343]=\"JSDocEnumTag\",e[e.JSDocParameterTag=344]=\"JSDocParameterTag\",e[e.JSDocReturnTag=345]=\"JSDocReturnTag\",e[e.JSDocThisTag=346]=\"JSDocThisTag\",e[e.JSDocTypeTag=347]=\"JSDocTypeTag\",e[e.JSDocTemplateTag=348]=\"JSDocTemplateTag\",e[e.JSDocTypedefTag=349]=\"JSDocTypedefTag\",e[e.JSDocSeeTag=350]=\"JSDocSeeTag\",e[e.JSDocPropertyTag=351]=\"JSDocPropertyTag\",e[e.JSDocThrowsTag=352]=\"JSDocThrowsTag\",e[e.JSDocSatisfiesTag=353]=\"JSDocSatisfiesTag\",e[e.SyntaxList=354]=\"SyntaxList\",e[e.NotEmittedStatement=355]=\"NotEmittedStatement\",e[e.PartiallyEmittedExpression=356]=\"PartiallyEmittedExpression\",e[e.CommaListExpression=357]=\"CommaListExpression\",e[e.MergeDeclarationMarker=358]=\"MergeDeclarationMarker\",e[e.EndOfDeclarationMarker=359]=\"EndOfDeclarationMarker\",e[e.SyntheticReferenceExpression=360]=\"SyntheticReferenceExpression\",e[e.Count=361]=\"Count\",e[e.FirstAssignment=63]=\"FirstAssignment\",e[e.LastAssignment=78]=\"LastAssignment\",e[e.FirstCompoundAssignment=64]=\"FirstCompoundAssignment\",e[e.LastCompoundAssignment=78]=\"LastCompoundAssignment\",e[e.FirstReservedWord=81]=\"FirstReservedWord\",e[e.LastReservedWord=116]=\"LastReservedWord\",e[e.FirstKeyword=81]=\"FirstKeyword\",e[e.LastKeyword=162]=\"LastKeyword\",e[e.FirstFutureReservedWord=117]=\"FirstFutureReservedWord\",e[e.LastFutureReservedWord=125]=\"LastFutureReservedWord\",e[e.FirstTypeNode=179]=\"FirstTypeNode\",e[e.LastTypeNode=202]=\"LastTypeNode\",e[e.FirstPunctuation=18]=\"FirstPunctuation\",e[e.LastPunctuation=78]=\"LastPunctuation\",e[e.FirstToken=0]=\"FirstToken\",e[e.LastToken=162]=\"LastToken\",e[e.FirstTriviaToken=2]=\"FirstTriviaToken\",e[e.LastTriviaToken=7]=\"LastTriviaToken\",e[e.FirstLiteralToken=8]=\"FirstLiteralToken\",e[e.LastLiteralToken=14]=\"LastLiteralToken\",e[e.FirstTemplateToken=14]=\"FirstTemplateToken\",e[e.LastTemplateToken=17]=\"LastTemplateToken\",e[e.FirstBinaryOperator=29]=\"FirstBinaryOperator\",e[e.LastBinaryOperator=78]=\"LastBinaryOperator\",e[e.FirstStatement=240]=\"FirstStatement\",e[e.LastStatement=256]=\"LastStatement\",e[e.FirstNode=163]=\"FirstNode\",e[e.FirstJSDocNode=312]=\"FirstJSDocNode\",e[e.LastJSDocNode=353]=\"LastJSDocNode\",e[e.FirstJSDocTagNode=330]=\"FirstJSDocTagNode\",e[e.LastJSDocTagNode=353]=\"LastJSDocTagNode\",e[e.FirstContextualKeyword=126]=\"FirstContextualKeyword\",e[e.LastContextualKeyword=162]=\"LastContextualKeyword\",e))(I8||{}),L8=(e=>(e[e.None=0]=\"None\",e[e.Let=1]=\"Let\",e[e.Const=2]=\"Const\",e[e.NestedNamespace=4]=\"NestedNamespace\",e[e.Synthesized=8]=\"Synthesized\",e[e.Namespace=16]=\"Namespace\",e[e.OptionalChain=32]=\"OptionalChain\",e[e.ExportContext=64]=\"ExportContext\",e[e.ContainsThis=128]=\"ContainsThis\",e[e.HasImplicitReturn=256]=\"HasImplicitReturn\",e[e.HasExplicitReturn=512]=\"HasExplicitReturn\",e[e.GlobalAugmentation=1024]=\"GlobalAugmentation\",e[e.HasAsyncFunctions=2048]=\"HasAsyncFunctions\",e[e.DisallowInContext=4096]=\"DisallowInContext\",e[e.YieldContext=8192]=\"YieldContext\",e[e.DecoratorContext=16384]=\"DecoratorContext\",e[e.AwaitContext=32768]=\"AwaitContext\",e[e.DisallowConditionalTypesContext=65536]=\"DisallowConditionalTypesContext\",e[e.ThisNodeHasError=131072]=\"ThisNodeHasError\",e[e.JavaScriptFile=262144]=\"JavaScriptFile\",e[e.ThisNodeOrAnySubNodesHasError=524288]=\"ThisNodeOrAnySubNodesHasError\",e[e.HasAggregatedChildData=1048576]=\"HasAggregatedChildData\",e[e.PossiblyContainsDynamicImport=2097152]=\"PossiblyContainsDynamicImport\",e[e.PossiblyContainsImportMeta=4194304]=\"PossiblyContainsImportMeta\",e[e.JSDoc=8388608]=\"JSDoc\",e[e.Ambient=16777216]=\"Ambient\",e[e.InWithStatement=33554432]=\"InWithStatement\",e[e.JsonFile=67108864]=\"JsonFile\",e[e.TypeCached=134217728]=\"TypeCached\",e[e.Deprecated=268435456]=\"Deprecated\",e[e.BlockScoped=3]=\"BlockScoped\",e[e.ReachabilityCheckFlags=768]=\"ReachabilityCheckFlags\",e[e.ReachabilityAndEmitFlags=2816]=\"ReachabilityAndEmitFlags\",e[e.ContextFlags=50720768]=\"ContextFlags\",e[e.TypeExcludesFlags=40960]=\"TypeExcludesFlags\",e[e.PermanentlySetIncrementalFlags=6291456]=\"PermanentlySetIncrementalFlags\",e[e.IdentifierHasExtendedUnicodeEscape=128]=\"IdentifierHasExtendedUnicodeEscape\",e[e.IdentifierIsInJSDocNamespace=2048]=\"IdentifierIsInJSDocNamespace\",e))(L8||{}),k8=(e=>(e[e.None=0]=\"None\",e[e.Export=1]=\"Export\",e[e.Ambient=2]=\"Ambient\",e[e.Public=4]=\"Public\",e[e.Private=8]=\"Private\",e[e.Protected=16]=\"Protected\",e[e.Static=32]=\"Static\",e[e.Readonly=64]=\"Readonly\",e[e.Accessor=128]=\"Accessor\",e[e.Abstract=256]=\"Abstract\",e[e.Async=512]=\"Async\",e[e.Default=1024]=\"Default\",e[e.Const=2048]=\"Const\",e[e.HasComputedJSDocModifiers=4096]=\"HasComputedJSDocModifiers\",e[e.Deprecated=8192]=\"Deprecated\",e[e.Override=16384]=\"Override\",e[e.In=32768]=\"In\",e[e.Out=65536]=\"Out\",e[e.Decorator=131072]=\"Decorator\",e[e.HasComputedFlags=536870912]=\"HasComputedFlags\",e[e.AccessibilityModifier=28]=\"AccessibilityModifier\",e[e.ParameterPropertyModifier=16476]=\"ParameterPropertyModifier\",e[e.NonPublicAccessibilityModifier=24]=\"NonPublicAccessibilityModifier\",e[e.TypeScriptModifier=117086]=\"TypeScriptModifier\",e[e.ExportDefault=1025]=\"ExportDefault\",e[e.All=258047]=\"All\",e[e.Modifier=126975]=\"Modifier\",e))(k8||{}),iV=(e=>(e[e.None=0]=\"None\",e[e.IntrinsicNamedElement=1]=\"IntrinsicNamedElement\",e[e.IntrinsicIndexedElement=2]=\"IntrinsicIndexedElement\",e[e.IntrinsicElement=3]=\"IntrinsicElement\",e))(iV||{}),D8=(e=>(e[e.Succeeded=1]=\"Succeeded\",e[e.Failed=2]=\"Failed\",e[e.Reported=4]=\"Reported\",e[e.ReportsUnmeasurable=8]=\"ReportsUnmeasurable\",e[e.ReportsUnreliable=16]=\"ReportsUnreliable\",e[e.ReportsMask=24]=\"ReportsMask\",e))(D8||{}),w8=(e=>(e[e.None=0]=\"None\",e[e.Auto=1]=\"Auto\",e[e.Loop=2]=\"Loop\",e[e.Unique=3]=\"Unique\",e[e.Node=4]=\"Node\",e[e.KindMask=7]=\"KindMask\",e[e.ReservedInNestedScopes=8]=\"ReservedInNestedScopes\",e[e.Optimistic=16]=\"Optimistic\",e[e.FileLevel=32]=\"FileLevel\",e[e.AllowNameSubstitution=64]=\"AllowNameSubstitution\",e))(w8||{}),aV=(e=>(e[e.None=0]=\"None\",e[e.PrecedingLineBreak=1]=\"PrecedingLineBreak\",e[e.PrecedingJSDocComment=2]=\"PrecedingJSDocComment\",e[e.Unterminated=4]=\"Unterminated\",e[e.ExtendedUnicodeEscape=8]=\"ExtendedUnicodeEscape\",e[e.Scientific=16]=\"Scientific\",e[e.Octal=32]=\"Octal\",e[e.HexSpecifier=64]=\"HexSpecifier\",e[e.BinarySpecifier=128]=\"BinarySpecifier\",e[e.OctalSpecifier=256]=\"OctalSpecifier\",e[e.ContainsSeparator=512]=\"ContainsSeparator\",e[e.UnicodeEscape=1024]=\"UnicodeEscape\",e[e.ContainsInvalidEscape=2048]=\"ContainsInvalidEscape\",e[e.BinaryOrOctalSpecifier=384]=\"BinaryOrOctalSpecifier\",e[e.NumericLiteralFlags=1008]=\"NumericLiteralFlags\",e[e.TemplateLiteralLikeFlags=2048]=\"TemplateLiteralLikeFlags\",e))(aV||{}),nw=(e=>(e[e.Unreachable=1]=\"Unreachable\",e[e.Start=2]=\"Start\",e[e.BranchLabel=4]=\"BranchLabel\",e[e.LoopLabel=8]=\"LoopLabel\",e[e.Assignment=16]=\"Assignment\",e[e.TrueCondition=32]=\"TrueCondition\",e[e.FalseCondition=64]=\"FalseCondition\",e[e.SwitchClause=128]=\"SwitchClause\",e[e.ArrayMutation=256]=\"ArrayMutation\",e[e.Call=512]=\"Call\",e[e.ReduceLabel=1024]=\"ReduceLabel\",e[e.Referenced=2048]=\"Referenced\",e[e.Shared=4096]=\"Shared\",e[e.Label=12]=\"Label\",e[e.Condition=96]=\"Condition\",e))(nw||{}),oV=(e=>(e[e.ExpectError=0]=\"ExpectError\",e[e.Ignore=1]=\"Ignore\",e))(oV||{}),nI=class{},R8=(e=>(e[e.RootFile=0]=\"RootFile\",e[e.SourceFromProjectReference=1]=\"SourceFromProjectReference\",e[e.OutputFromProjectReference=2]=\"OutputFromProjectReference\",e[e.Import=3]=\"Import\",e[e.ReferenceFile=4]=\"ReferenceFile\",e[e.TypeReferenceDirective=5]=\"TypeReferenceDirective\",e[e.LibFile=6]=\"LibFile\",e[e.LibReferenceDirective=7]=\"LibReferenceDirective\",e[e.AutomaticTypeDirectiveFile=8]=\"AutomaticTypeDirectiveFile\",e))(R8||{}),sV=(e=>(e[e.FilePreprocessingReferencedDiagnostic=0]=\"FilePreprocessingReferencedDiagnostic\",e[e.FilePreprocessingFileExplainingDiagnostic=1]=\"FilePreprocessingFileExplainingDiagnostic\",e[e.ResolutionDiagnostics=2]=\"ResolutionDiagnostics\",e))(sV||{}),cV=(e=>(e[e.Js=0]=\"Js\",e[e.Dts=1]=\"Dts\",e))(cV||{}),lV=(e=>(e[e.Not=0]=\"Not\",e[e.SafeModules=1]=\"SafeModules\",e[e.Completely=2]=\"Completely\",e))(lV||{}),uV=(e=>(e[e.Success=0]=\"Success\",e[e.DiagnosticsPresent_OutputsSkipped=1]=\"DiagnosticsPresent_OutputsSkipped\",e[e.DiagnosticsPresent_OutputsGenerated=2]=\"DiagnosticsPresent_OutputsGenerated\",e[e.InvalidProject_OutputsSkipped=3]=\"InvalidProject_OutputsSkipped\",e[e.ProjectReferenceCycle_OutputsSkipped=4]=\"ProjectReferenceCycle_OutputsSkipped\",e))(uV||{}),dV=(e=>(e[e.Ok=0]=\"Ok\",e[e.NeedsOverride=1]=\"NeedsOverride\",e[e.HasInvalidOverride=2]=\"HasInvalidOverride\",e))(dV||{}),fV=(e=>(e[e.None=0]=\"None\",e[e.Literal=1]=\"Literal\",e[e.Subtype=2]=\"Subtype\",e))(fV||{}),_V=(e=>(e[e.None=0]=\"None\",e[e.Signature=1]=\"Signature\",e[e.NoConstraints=2]=\"NoConstraints\",e[e.Completions=4]=\"Completions\",e[e.SkipBindingPatterns=8]=\"SkipBindingPatterns\",e))(_V||{}),pV=(e=>(e[e.None=0]=\"None\",e[e.NoTruncation=1]=\"NoTruncation\",e[e.WriteArrayAsGenericType=2]=\"WriteArrayAsGenericType\",e[e.GenerateNamesForShadowedTypeParams=4]=\"GenerateNamesForShadowedTypeParams\",e[e.UseStructuralFallback=8]=\"UseStructuralFallback\",e[e.ForbidIndexedAccessSymbolReferences=16]=\"ForbidIndexedAccessSymbolReferences\",e[e.WriteTypeArgumentsOfSignature=32]=\"WriteTypeArgumentsOfSignature\",e[e.UseFullyQualifiedType=64]=\"UseFullyQualifiedType\",e[e.UseOnlyExternalAliasing=128]=\"UseOnlyExternalAliasing\",e[e.SuppressAnyReturnType=256]=\"SuppressAnyReturnType\",e[e.WriteTypeParametersInQualifiedName=512]=\"WriteTypeParametersInQualifiedName\",e[e.MultilineObjectLiterals=1024]=\"MultilineObjectLiterals\",e[e.WriteClassExpressionAsTypeLiteral=2048]=\"WriteClassExpressionAsTypeLiteral\",e[e.UseTypeOfFunction=4096]=\"UseTypeOfFunction\",e[e.OmitParameterModifiers=8192]=\"OmitParameterModifiers\",e[e.UseAliasDefinedOutsideCurrentScope=16384]=\"UseAliasDefinedOutsideCurrentScope\",e[e.UseSingleQuotesForStringLiteralType=268435456]=\"UseSingleQuotesForStringLiteralType\",e[e.NoTypeReduction=536870912]=\"NoTypeReduction\",e[e.OmitThisParameter=33554432]=\"OmitThisParameter\",e[e.AllowThisInObjectLiteral=32768]=\"AllowThisInObjectLiteral\",e[e.AllowQualifiedNameInPlaceOfIdentifier=65536]=\"AllowQualifiedNameInPlaceOfIdentifier\",e[e.AllowAnonymousIdentifier=131072]=\"AllowAnonymousIdentifier\",e[e.AllowEmptyUnionOrIntersection=262144]=\"AllowEmptyUnionOrIntersection\",e[e.AllowEmptyTuple=524288]=\"AllowEmptyTuple\",e[e.AllowUniqueESSymbolType=1048576]=\"AllowUniqueESSymbolType\",e[e.AllowEmptyIndexInfoType=2097152]=\"AllowEmptyIndexInfoType\",e[e.WriteComputedProps=1073741824]=\"WriteComputedProps\",e[e.AllowNodeModulesRelativePaths=67108864]=\"AllowNodeModulesRelativePaths\",e[e.DoNotIncludeSymbolChain=134217728]=\"DoNotIncludeSymbolChain\",e[e.IgnoreErrors=70221824]=\"IgnoreErrors\",e[e.InObjectTypeLiteral=4194304]=\"InObjectTypeLiteral\",e[e.InTypeAlias=8388608]=\"InTypeAlias\",e[e.InInitialEntityName=16777216]=\"InInitialEntityName\",e))(pV||{}),mV=(e=>(e[e.None=0]=\"None\",e[e.NoTruncation=1]=\"NoTruncation\",e[e.WriteArrayAsGenericType=2]=\"WriteArrayAsGenericType\",e[e.UseStructuralFallback=8]=\"UseStructuralFallback\",e[e.WriteTypeArgumentsOfSignature=32]=\"WriteTypeArgumentsOfSignature\",e[e.UseFullyQualifiedType=64]=\"UseFullyQualifiedType\",e[e.SuppressAnyReturnType=256]=\"SuppressAnyReturnType\",e[e.MultilineObjectLiterals=1024]=\"MultilineObjectLiterals\",e[e.WriteClassExpressionAsTypeLiteral=2048]=\"WriteClassExpressionAsTypeLiteral\",e[e.UseTypeOfFunction=4096]=\"UseTypeOfFunction\",e[e.OmitParameterModifiers=8192]=\"OmitParameterModifiers\",e[e.UseAliasDefinedOutsideCurrentScope=16384]=\"UseAliasDefinedOutsideCurrentScope\",e[e.UseSingleQuotesForStringLiteralType=268435456]=\"UseSingleQuotesForStringLiteralType\",e[e.NoTypeReduction=536870912]=\"NoTypeReduction\",e[e.OmitThisParameter=33554432]=\"OmitThisParameter\",e[e.AllowUniqueESSymbolType=1048576]=\"AllowUniqueESSymbolType\",e[e.AddUndefined=131072]=\"AddUndefined\",e[e.WriteArrowStyleSignature=262144]=\"WriteArrowStyleSignature\",e[e.InArrayType=524288]=\"InArrayType\",e[e.InElementType=2097152]=\"InElementType\",e[e.InFirstTypeArgument=4194304]=\"InFirstTypeArgument\",e[e.InTypeAlias=8388608]=\"InTypeAlias\",e[e.NodeBuilderFlagsMask=848330091]=\"NodeBuilderFlagsMask\",e))(mV||{}),hV=(e=>(e[e.None=0]=\"None\",e[e.WriteTypeParametersOrArguments=1]=\"WriteTypeParametersOrArguments\",e[e.UseOnlyExternalAliasing=2]=\"UseOnlyExternalAliasing\",e[e.AllowAnyNodeKind=4]=\"AllowAnyNodeKind\",e[e.UseAliasDefinedOutsideCurrentScope=8]=\"UseAliasDefinedOutsideCurrentScope\",e[e.WriteComputedProps=16]=\"WriteComputedProps\",e[e.DoNotIncludeSymbolChain=32]=\"DoNotIncludeSymbolChain\",e))(hV||{}),gV=(e=>(e[e.Accessible=0]=\"Accessible\",e[e.NotAccessible=1]=\"NotAccessible\",e[e.CannotBeNamed=2]=\"CannotBeNamed\",e))(gV||{}),yV=(e=>(e[e.UnionOrIntersection=0]=\"UnionOrIntersection\",e[e.Spread=1]=\"Spread\",e))(yV||{}),vV=(e=>(e[e.This=0]=\"This\",e[e.Identifier=1]=\"Identifier\",e[e.AssertsThis=2]=\"AssertsThis\",e[e.AssertsIdentifier=3]=\"AssertsIdentifier\",e))(vV||{}),bV=(e=>(e[e.Unknown=0]=\"Unknown\",e[e.TypeWithConstructSignatureAndValue=1]=\"TypeWithConstructSignatureAndValue\",e[e.VoidNullableOrNeverType=2]=\"VoidNullableOrNeverType\",e[e.NumberLikeType=3]=\"NumberLikeType\",e[e.BigIntLikeType=4]=\"BigIntLikeType\",e[e.StringLikeType=5]=\"StringLikeType\",e[e.BooleanType=6]=\"BooleanType\",e[e.ArrayLikeType=7]=\"ArrayLikeType\",e[e.ESSymbolType=8]=\"ESSymbolType\",e[e.Promise=9]=\"Promise\",e[e.TypeWithCallSignature=10]=\"TypeWithCallSignature\",e[e.ObjectType=11]=\"ObjectType\",e))(bV||{}),O8=(e=>(e[e.None=0]=\"None\",e[e.FunctionScopedVariable=1]=\"FunctionScopedVariable\",e[e.BlockScopedVariable=2]=\"BlockScopedVariable\",e[e.Property=4]=\"Property\",e[e.EnumMember=8]=\"EnumMember\",e[e.Function=16]=\"Function\",e[e.Class=32]=\"Class\",e[e.Interface=64]=\"Interface\",e[e.ConstEnum=128]=\"ConstEnum\",e[e.RegularEnum=256]=\"RegularEnum\",e[e.ValueModule=512]=\"ValueModule\",e[e.NamespaceModule=1024]=\"NamespaceModule\",e[e.TypeLiteral=2048]=\"TypeLiteral\",e[e.ObjectLiteral=4096]=\"ObjectLiteral\",e[e.Method=8192]=\"Method\",e[e.Constructor=16384]=\"Constructor\",e[e.GetAccessor=32768]=\"GetAccessor\",e[e.SetAccessor=65536]=\"SetAccessor\",e[e.Signature=131072]=\"Signature\",e[e.TypeParameter=262144]=\"TypeParameter\",e[e.TypeAlias=524288]=\"TypeAlias\",e[e.ExportValue=1048576]=\"ExportValue\",e[e.Alias=2097152]=\"Alias\",e[e.Prototype=4194304]=\"Prototype\",e[e.ExportStar=8388608]=\"ExportStar\",e[e.Optional=16777216]=\"Optional\",e[e.Transient=33554432]=\"Transient\",e[e.Assignment=67108864]=\"Assignment\",e[e.ModuleExports=134217728]=\"ModuleExports\",e[e.All=67108863]=\"All\",e[e.Enum=384]=\"Enum\",e[e.Variable=3]=\"Variable\",e[e.Value=111551]=\"Value\",e[e.Type=788968]=\"Type\",e[e.Namespace=1920]=\"Namespace\",e[e.Module=1536]=\"Module\",e[e.Accessor=98304]=\"Accessor\",e[e.FunctionScopedVariableExcludes=111550]=\"FunctionScopedVariableExcludes\",e[e.BlockScopedVariableExcludes=111551]=\"BlockScopedVariableExcludes\",e[e.ParameterExcludes=111551]=\"ParameterExcludes\",e[e.PropertyExcludes=0]=\"PropertyExcludes\",e[e.EnumMemberExcludes=900095]=\"EnumMemberExcludes\",e[e.FunctionExcludes=110991]=\"FunctionExcludes\",e[e.ClassExcludes=899503]=\"ClassExcludes\",e[e.InterfaceExcludes=788872]=\"InterfaceExcludes\",e[e.RegularEnumExcludes=899327]=\"RegularEnumExcludes\",e[e.ConstEnumExcludes=899967]=\"ConstEnumExcludes\",e[e.ValueModuleExcludes=110735]=\"ValueModuleExcludes\",e[e.NamespaceModuleExcludes=0]=\"NamespaceModuleExcludes\",e[e.MethodExcludes=103359]=\"MethodExcludes\",e[e.GetAccessorExcludes=46015]=\"GetAccessorExcludes\",e[e.SetAccessorExcludes=78783]=\"SetAccessorExcludes\",e[e.AccessorExcludes=13247]=\"AccessorExcludes\",e[e.TypeParameterExcludes=526824]=\"TypeParameterExcludes\",e[e.TypeAliasExcludes=788968]=\"TypeAliasExcludes\",e[e.AliasExcludes=2097152]=\"AliasExcludes\",e[e.ModuleMember=2623475]=\"ModuleMember\",e[e.ExportHasLocal=944]=\"ExportHasLocal\",e[e.BlockScoped=418]=\"BlockScoped\",e[e.PropertyOrAccessor=98308]=\"PropertyOrAccessor\",e[e.ClassMember=106500]=\"ClassMember\",e[e.ExportSupportsDefaultModifier=112]=\"ExportSupportsDefaultModifier\",e[e.ExportDoesNotSupportDefaultModifier=-113]=\"ExportDoesNotSupportDefaultModifier\",e[e.Classifiable=2885600]=\"Classifiable\",e[e.LateBindingContainer=6256]=\"LateBindingContainer\",e))(O8||{}),EV=(e=>(e[e.Numeric=0]=\"Numeric\",e[e.Literal=1]=\"Literal\",e))(EV||{}),TV=(e=>(e[e.None=0]=\"None\",e[e.Instantiated=1]=\"Instantiated\",e[e.SyntheticProperty=2]=\"SyntheticProperty\",e[e.SyntheticMethod=4]=\"SyntheticMethod\",e[e.Readonly=8]=\"Readonly\",e[e.ReadPartial=16]=\"ReadPartial\",e[e.WritePartial=32]=\"WritePartial\",e[e.HasNonUniformType=64]=\"HasNonUniformType\",e[e.HasLiteralType=128]=\"HasLiteralType\",e[e.ContainsPublic=256]=\"ContainsPublic\",e[e.ContainsProtected=512]=\"ContainsProtected\",e[e.ContainsPrivate=1024]=\"ContainsPrivate\",e[e.ContainsStatic=2048]=\"ContainsStatic\",e[e.Late=4096]=\"Late\",e[e.ReverseMapped=8192]=\"ReverseMapped\",e[e.OptionalParameter=16384]=\"OptionalParameter\",e[e.RestParameter=32768]=\"RestParameter\",e[e.DeferredType=65536]=\"DeferredType\",e[e.HasNeverType=131072]=\"HasNeverType\",e[e.Mapped=262144]=\"Mapped\",e[e.StripOptional=524288]=\"StripOptional\",e[e.Unresolved=1048576]=\"Unresolved\",e[e.Synthetic=6]=\"Synthetic\",e[e.Discriminant=192]=\"Discriminant\",e[e.Partial=48]=\"Partial\",e))(TV||{}),SV=(e=>(e.Call=\"__call\",e.Constructor=\"__constructor\",e.New=\"__new\",e.Index=\"__index\",e.ExportStar=\"__export\",e.Global=\"__global\",e.Missing=\"__missing\",e.Type=\"__type\",e.Object=\"__object\",e.JSXAttributes=\"__jsxAttributes\",e.Class=\"__class\",e.Function=\"__function\",e.Computed=\"__computed\",e.Resolving=\"__resolving__\",e.ExportEquals=\"export=\",e.Default=\"default\",e.This=\"this\",e))(SV||{}),xV=(e=>(e[e.None=0]=\"None\",e[e.TypeChecked=1]=\"TypeChecked\",e[e.LexicalThis=2]=\"LexicalThis\",e[e.CaptureThis=4]=\"CaptureThis\",e[e.CaptureNewTarget=8]=\"CaptureNewTarget\",e[e.SuperInstance=16]=\"SuperInstance\",e[e.SuperStatic=32]=\"SuperStatic\",e[e.ContextChecked=64]=\"ContextChecked\",e[e.MethodWithSuperPropertyAccessInAsync=128]=\"MethodWithSuperPropertyAccessInAsync\",e[e.MethodWithSuperPropertyAssignmentInAsync=256]=\"MethodWithSuperPropertyAssignmentInAsync\",e[e.CaptureArguments=512]=\"CaptureArguments\",e[e.EnumValuesComputed=1024]=\"EnumValuesComputed\",e[e.LexicalModuleMergesWithClass=2048]=\"LexicalModuleMergesWithClass\",e[e.LoopWithCapturedBlockScopedBinding=4096]=\"LoopWithCapturedBlockScopedBinding\",e[e.ContainsCapturedBlockScopeBinding=8192]=\"ContainsCapturedBlockScopeBinding\",e[e.CapturedBlockScopedBinding=16384]=\"CapturedBlockScopedBinding\",e[e.BlockScopedBindingInLoop=32768]=\"BlockScopedBindingInLoop\",e[e.ClassWithBodyScopedClassBinding=65536]=\"ClassWithBodyScopedClassBinding\",e[e.BodyScopedClassBinding=131072]=\"BodyScopedClassBinding\",e[e.NeedsLoopOutParameter=262144]=\"NeedsLoopOutParameter\",e[e.AssignmentsMarked=524288]=\"AssignmentsMarked\",e[e.ClassWithConstructorReference=1048576]=\"ClassWithConstructorReference\",e[e.ConstructorReferenceInClass=2097152]=\"ConstructorReferenceInClass\",e[e.ContainsClassWithPrivateIdentifiers=4194304]=\"ContainsClassWithPrivateIdentifiers\",e[e.ContainsSuperPropertyInStaticInitializer=8388608]=\"ContainsSuperPropertyInStaticInitializer\",e[e.InCheckIdentifier=16777216]=\"InCheckIdentifier\",e))(xV||{}),N8=(e=>(e[e.Any=1]=\"Any\",e[e.Unknown=2]=\"Unknown\",e[e.String=4]=\"String\",e[e.Number=8]=\"Number\",e[e.Boolean=16]=\"Boolean\",e[e.Enum=32]=\"Enum\",e[e.BigInt=64]=\"BigInt\",e[e.StringLiteral=128]=\"StringLiteral\",e[e.NumberLiteral=256]=\"NumberLiteral\",e[e.BooleanLiteral=512]=\"BooleanLiteral\",e[e.EnumLiteral=1024]=\"EnumLiteral\",e[e.BigIntLiteral=2048]=\"BigIntLiteral\",e[e.ESSymbol=4096]=\"ESSymbol\",e[e.UniqueESSymbol=8192]=\"UniqueESSymbol\",e[e.Void=16384]=\"Void\",e[e.Undefined=32768]=\"Undefined\",e[e.Null=65536]=\"Null\",e[e.Never=131072]=\"Never\",e[e.TypeParameter=262144]=\"TypeParameter\",e[e.Object=524288]=\"Object\",e[e.Union=1048576]=\"Union\",e[e.Intersection=2097152]=\"Intersection\",e[e.Index=4194304]=\"Index\",e[e.IndexedAccess=8388608]=\"IndexedAccess\",e[e.Conditional=16777216]=\"Conditional\",e[e.Substitution=33554432]=\"Substitution\",e[e.NonPrimitive=67108864]=\"NonPrimitive\",e[e.TemplateLiteral=134217728]=\"TemplateLiteral\",e[e.StringMapping=268435456]=\"StringMapping\",e[e.AnyOrUnknown=3]=\"AnyOrUnknown\",e[e.Nullable=98304]=\"Nullable\",e[e.Literal=2944]=\"Literal\",e[e.Unit=109472]=\"Unit\",e[e.Freshable=2976]=\"Freshable\",e[e.StringOrNumberLiteral=384]=\"StringOrNumberLiteral\",e[e.StringOrNumberLiteralOrUnique=8576]=\"StringOrNumberLiteralOrUnique\",e[e.DefinitelyFalsy=117632]=\"DefinitelyFalsy\",e[e.PossiblyFalsy=117724]=\"PossiblyFalsy\",e[e.Intrinsic=67359327]=\"Intrinsic\",e[e.Primitive=134348796]=\"Primitive\",e[e.StringLike=402653316]=\"StringLike\",e[e.NumberLike=296]=\"NumberLike\",e[e.BigIntLike=2112]=\"BigIntLike\",e[e.BooleanLike=528]=\"BooleanLike\",e[e.EnumLike=1056]=\"EnumLike\",e[e.ESSymbolLike=12288]=\"ESSymbolLike\",e[e.VoidLike=49152]=\"VoidLike\",e[e.DefinitelyNonNullable=470302716]=\"DefinitelyNonNullable\",e[e.DisjointDomains=469892092]=\"DisjointDomains\",e[e.UnionOrIntersection=3145728]=\"UnionOrIntersection\",e[e.StructuredType=3670016]=\"StructuredType\",e[e.TypeVariable=8650752]=\"TypeVariable\",e[e.InstantiableNonPrimitive=58982400]=\"InstantiableNonPrimitive\",e[e.InstantiablePrimitive=406847488]=\"InstantiablePrimitive\",e[e.Instantiable=465829888]=\"Instantiable\",e[e.StructuredOrInstantiable=469499904]=\"StructuredOrInstantiable\",e[e.ObjectFlagsType=3899393]=\"ObjectFlagsType\",e[e.Simplifiable=25165824]=\"Simplifiable\",e[e.Singleton=67358815]=\"Singleton\",e[e.Narrowable=536624127]=\"Narrowable\",e[e.IncludesMask=205258751]=\"IncludesMask\",e[e.IncludesMissingType=262144]=\"IncludesMissingType\",e[e.IncludesNonWideningType=4194304]=\"IncludesNonWideningType\",e[e.IncludesWildcard=8388608]=\"IncludesWildcard\",e[e.IncludesEmptyObject=16777216]=\"IncludesEmptyObject\",e[e.IncludesInstantiable=33554432]=\"IncludesInstantiable\",e[e.NotPrimitiveUnion=36323363]=\"NotPrimitiveUnion\",e))(N8||{}),P8=(e=>(e[e.None=0]=\"None\",e[e.Class=1]=\"Class\",e[e.Interface=2]=\"Interface\",e[e.Reference=4]=\"Reference\",e[e.Tuple=8]=\"Tuple\",e[e.Anonymous=16]=\"Anonymous\",e[e.Mapped=32]=\"Mapped\",e[e.Instantiated=64]=\"Instantiated\",e[e.ObjectLiteral=128]=\"ObjectLiteral\",e[e.EvolvingArray=256]=\"EvolvingArray\",e[e.ObjectLiteralPatternWithComputedProperties=512]=\"ObjectLiteralPatternWithComputedProperties\",e[e.ReverseMapped=1024]=\"ReverseMapped\",e[e.JsxAttributes=2048]=\"JsxAttributes\",e[e.JSLiteral=4096]=\"JSLiteral\",e[e.FreshLiteral=8192]=\"FreshLiteral\",e[e.ArrayLiteral=16384]=\"ArrayLiteral\",e[e.PrimitiveUnion=32768]=\"PrimitiveUnion\",e[e.ContainsWideningType=65536]=\"ContainsWideningType\",e[e.ContainsObjectOrArrayLiteral=131072]=\"ContainsObjectOrArrayLiteral\",e[e.NonInferrableType=262144]=\"NonInferrableType\",e[e.CouldContainTypeVariablesComputed=524288]=\"CouldContainTypeVariablesComputed\",e[e.CouldContainTypeVariables=1048576]=\"CouldContainTypeVariables\",e[e.ClassOrInterface=3]=\"ClassOrInterface\",e[e.RequiresWidening=196608]=\"RequiresWidening\",e[e.PropagatingFlags=458752]=\"PropagatingFlags\",e[e.ObjectTypeKindMask=1343]=\"ObjectTypeKindMask\",e[e.ContainsSpread=2097152]=\"ContainsSpread\",e[e.ObjectRestType=4194304]=\"ObjectRestType\",e[e.InstantiationExpressionType=8388608]=\"InstantiationExpressionType\",e[e.IsClassInstanceClone=16777216]=\"IsClassInstanceClone\",e[e.IdenticalBaseTypeCalculated=33554432]=\"IdenticalBaseTypeCalculated\",e[e.IdenticalBaseTypeExists=67108864]=\"IdenticalBaseTypeExists\",e[e.IsGenericTypeComputed=2097152]=\"IsGenericTypeComputed\",e[e.IsGenericObjectType=4194304]=\"IsGenericObjectType\",e[e.IsGenericIndexType=8388608]=\"IsGenericIndexType\",e[e.IsGenericType=12582912]=\"IsGenericType\",e[e.ContainsIntersections=16777216]=\"ContainsIntersections\",e[e.IsUnknownLikeUnionComputed=33554432]=\"IsUnknownLikeUnionComputed\",e[e.IsUnknownLikeUnion=67108864]=\"IsUnknownLikeUnion\",e[e.IsNeverIntersectionComputed=16777216]=\"IsNeverIntersectionComputed\",e[e.IsNeverIntersection=33554432]=\"IsNeverIntersection\",e))(P8||{}),AV=(e=>(e[e.Invariant=0]=\"Invariant\",e[e.Covariant=1]=\"Covariant\",e[e.Contravariant=2]=\"Contravariant\",e[e.Bivariant=3]=\"Bivariant\",e[e.Independent=4]=\"Independent\",e[e.VarianceMask=7]=\"VarianceMask\",e[e.Unmeasurable=8]=\"Unmeasurable\",e[e.Unreliable=16]=\"Unreliable\",e[e.AllowsStructuralFallback=24]=\"AllowsStructuralFallback\",e))(AV||{}),CV=(e=>(e[e.Required=1]=\"Required\",e[e.Optional=2]=\"Optional\",e[e.Rest=4]=\"Rest\",e[e.Variadic=8]=\"Variadic\",e[e.Fixed=3]=\"Fixed\",e[e.Variable=12]=\"Variable\",e[e.NonRequired=14]=\"NonRequired\",e[e.NonRest=11]=\"NonRest\",e))(CV||{}),IV=(e=>(e[e.None=0]=\"None\",e[e.IncludeUndefined=1]=\"IncludeUndefined\",e[e.NoIndexSignatures=2]=\"NoIndexSignatures\",e[e.Writing=4]=\"Writing\",e[e.CacheSymbol=8]=\"CacheSymbol\",e[e.NoTupleBoundsCheck=16]=\"NoTupleBoundsCheck\",e[e.ExpressionPosition=32]=\"ExpressionPosition\",e[e.ReportDeprecated=64]=\"ReportDeprecated\",e[e.SuppressNoImplicitAnyError=128]=\"SuppressNoImplicitAnyError\",e[e.Contextual=256]=\"Contextual\",e[e.Persistent=1]=\"Persistent\",e))(IV||{}),LV=(e=>(e[e.Component=0]=\"Component\",e[e.Function=1]=\"Function\",e[e.Mixed=2]=\"Mixed\",e))(LV||{}),kV=(e=>(e[e.Call=0]=\"Call\",e[e.Construct=1]=\"Construct\",e))(kV||{}),M8=(e=>(e[e.None=0]=\"None\",e[e.HasRestParameter=1]=\"HasRestParameter\",e[e.HasLiteralTypes=2]=\"HasLiteralTypes\",e[e.Abstract=4]=\"Abstract\",e[e.IsInnerCallChain=8]=\"IsInnerCallChain\",e[e.IsOuterCallChain=16]=\"IsOuterCallChain\",e[e.IsUntypedSignatureInJSFile=32]=\"IsUntypedSignatureInJSFile\",e[e.PropagatingFlags=39]=\"PropagatingFlags\",e[e.CallChainFlags=24]=\"CallChainFlags\",e))(M8||{}),DV=(e=>(e[e.String=0]=\"String\",e[e.Number=1]=\"Number\",e))(DV||{}),wV=(e=>(e[e.Simple=0]=\"Simple\",e[e.Array=1]=\"Array\",e[e.Deferred=2]=\"Deferred\",e[e.Function=3]=\"Function\",e[e.Composite=4]=\"Composite\",e[e.Merged=5]=\"Merged\",e))(wV||{}),RV=(e=>(e[e.None=0]=\"None\",e[e.NakedTypeVariable=1]=\"NakedTypeVariable\",e[e.SpeculativeTuple=2]=\"SpeculativeTuple\",e[e.SubstituteSource=4]=\"SubstituteSource\",e[e.HomomorphicMappedType=8]=\"HomomorphicMappedType\",e[e.PartialHomomorphicMappedType=16]=\"PartialHomomorphicMappedType\",e[e.MappedTypeConstraint=32]=\"MappedTypeConstraint\",e[e.ContravariantConditional=64]=\"ContravariantConditional\",e[e.ReturnType=128]=\"ReturnType\",e[e.LiteralKeyof=256]=\"LiteralKeyof\",e[e.NoConstraints=512]=\"NoConstraints\",e[e.AlwaysStrict=1024]=\"AlwaysStrict\",e[e.MaxValue=2048]=\"MaxValue\",e[e.PriorityImpliesCombination=416]=\"PriorityImpliesCombination\",e[e.Circularity=-1]=\"Circularity\",e))(RV||{}),OV=(e=>(e[e.None=0]=\"None\",e[e.NoDefault=1]=\"NoDefault\",e[e.AnyDefault=2]=\"AnyDefault\",e[e.SkippedGenericFunction=4]=\"SkippedGenericFunction\",e))(OV||{}),NV=(e=>(e[e.False=0]=\"False\",e[e.Unknown=1]=\"Unknown\",e[e.Maybe=3]=\"Maybe\",e[e.True=-1]=\"True\",e))(NV||{}),PV=(e=>(e[e.None=0]=\"None\",e[e.ExportsProperty=1]=\"ExportsProperty\",e[e.ModuleExports=2]=\"ModuleExports\",e[e.PrototypeProperty=3]=\"PrototypeProperty\",e[e.ThisProperty=4]=\"ThisProperty\",e[e.Property=5]=\"Property\",e[e.Prototype=6]=\"Prototype\",e[e.ObjectDefinePropertyValue=7]=\"ObjectDefinePropertyValue\",e[e.ObjectDefinePropertyExports=8]=\"ObjectDefinePropertyExports\",e[e.ObjectDefinePrototypeProperty=9]=\"ObjectDefinePrototypeProperty\",e))(PV||{}),rw=(e=>(e[e.Warning=0]=\"Warning\",e[e.Error=1]=\"Error\",e[e.Suggestion=2]=\"Suggestion\",e[e.Message=3]=\"Message\",e))(rw||{}),iw=(e=>(e[e.Classic=1]=\"Classic\",e[e.NodeJs=2]=\"NodeJs\",e[e.Node10=2]=\"Node10\",e[e.Node16=3]=\"Node16\",e[e.NodeNext=99]=\"NodeNext\",e[e.Bundler=100]=\"Bundler\",e))(iw||{}),MV=(e=>(e[e.Legacy=1]=\"Legacy\",e[e.Auto=2]=\"Auto\",e[e.Force=3]=\"Force\",e))(MV||{}),FV=(e=>(e[e.FixedPollingInterval=0]=\"FixedPollingInterval\",e[e.PriorityPollingInterval=1]=\"PriorityPollingInterval\",e[e.DynamicPriorityPolling=2]=\"DynamicPriorityPolling\",e[e.FixedChunkSizePolling=3]=\"FixedChunkSizePolling\",e[e.UseFsEvents=4]=\"UseFsEvents\",e[e.UseFsEventsOnParentDirectory=5]=\"UseFsEventsOnParentDirectory\",e))(FV||{}),GV=(e=>(e[e.UseFsEvents=0]=\"UseFsEvents\",e[e.FixedPollingInterval=1]=\"FixedPollingInterval\",e[e.DynamicPriorityPolling=2]=\"DynamicPriorityPolling\",e[e.FixedChunkSizePolling=3]=\"FixedChunkSizePolling\",e))(GV||{}),BV=(e=>(e[e.FixedInterval=0]=\"FixedInterval\",e[e.PriorityInterval=1]=\"PriorityInterval\",e[e.DynamicPriority=2]=\"DynamicPriority\",e[e.FixedChunkSize=3]=\"FixedChunkSize\",e))(BV||{}),F8=(e=>(e[e.None=0]=\"None\",e[e.CommonJS=1]=\"CommonJS\",e[e.AMD=2]=\"AMD\",e[e.UMD=3]=\"UMD\",e[e.System=4]=\"System\",e[e.ES2015=5]=\"ES2015\",e[e.ES2020=6]=\"ES2020\",e[e.ES2022=7]=\"ES2022\",e[e.ESNext=99]=\"ESNext\",e[e.Node16=100]=\"Node16\",e[e.NodeNext=199]=\"NodeNext\",e))(F8||{}),UV=(e=>(e[e.None=0]=\"None\",e[e.Preserve=1]=\"Preserve\",e[e.React=2]=\"React\",e[e.ReactNative=3]=\"ReactNative\",e[e.ReactJSX=4]=\"ReactJSX\",e[e.ReactJSXDev=5]=\"ReactJSXDev\",e))(UV||{}),VV=(e=>(e[e.Remove=0]=\"Remove\",e[e.Preserve=1]=\"Preserve\",e[e.Error=2]=\"Error\",e))(VV||{}),jV=(e=>(e[e.CarriageReturnLineFeed=0]=\"CarriageReturnLineFeed\",e[e.LineFeed=1]=\"LineFeed\",e))(jV||{}),HV=(e=>(e[e.Unknown=0]=\"Unknown\",e[e.JS=1]=\"JS\",e[e.JSX=2]=\"JSX\",e[e.TS=3]=\"TS\",e[e.TSX=4]=\"TSX\",e[e.External=5]=\"External\",e[e.JSON=6]=\"JSON\",e[e.Deferred=7]=\"Deferred\",e))(HV||{}),WV=(e=>(e[e.ES3=0]=\"ES3\",e[e.ES5=1]=\"ES5\",e[e.ES2015=2]=\"ES2015\",e[e.ES2016=3]=\"ES2016\",e[e.ES2017=4]=\"ES2017\",e[e.ES2018=5]=\"ES2018\",e[e.ES2019=6]=\"ES2019\",e[e.ES2020=7]=\"ES2020\",e[e.ES2021=8]=\"ES2021\",e[e.ES2022=9]=\"ES2022\",e[e.ESNext=99]=\"ESNext\",e[e.JSON=100]=\"JSON\",e[e.Latest=99]=\"Latest\",e))(WV||{}),zV=(e=>(e[e.Standard=0]=\"Standard\",e[e.JSX=1]=\"JSX\",e))(zV||{}),JV=(e=>(e[e.None=0]=\"None\",e[e.Recursive=1]=\"Recursive\",e))(JV||{}),KV=(e=>(e[e.nullCharacter=0]=\"nullCharacter\",e[e.maxAsciiCharacter=127]=\"maxAsciiCharacter\",e[e.lineFeed=10]=\"lineFeed\",e[e.carriageReturn=13]=\"carriageReturn\",e[e.lineSeparator=8232]=\"lineSeparator\",e[e.paragraphSeparator=8233]=\"paragraphSeparator\",e[e.nextLine=133]=\"nextLine\",e[e.space=32]=\"space\",e[e.nonBreakingSpace=160]=\"nonBreakingSpace\",e[e.enQuad=8192]=\"enQuad\",e[e.emQuad=8193]=\"emQuad\",e[e.enSpace=8194]=\"enSpace\",e[e.emSpace=8195]=\"emSpace\",e[e.threePerEmSpace=8196]=\"threePerEmSpace\",e[e.fourPerEmSpace=8197]=\"fourPerEmSpace\",e[e.sixPerEmSpace=8198]=\"sixPerEmSpace\",e[e.figureSpace=8199]=\"figureSpace\",e[e.punctuationSpace=8200]=\"punctuationSpace\",e[e.thinSpace=8201]=\"thinSpace\",e[e.hairSpace=8202]=\"hairSpace\",e[e.zeroWidthSpace=8203]=\"zeroWidthSpace\",e[e.narrowNoBreakSpace=8239]=\"narrowNoBreakSpace\",e[e.ideographicSpace=12288]=\"ideographicSpace\",e[e.mathematicalSpace=8287]=\"mathematicalSpace\",e[e.ogham=5760]=\"ogham\",e[e._=95]=\"_\",e[e.$=36]=\"$\",e[e._0=48]=\"_0\",e[e._1=49]=\"_1\",e[e._2=50]=\"_2\",e[e._3=51]=\"_3\",e[e._4=52]=\"_4\",e[e._5=53]=\"_5\",e[e._6=54]=\"_6\",e[e._7=55]=\"_7\",e[e._8=56]=\"_8\",e[e._9=57]=\"_9\",e[e.a=97]=\"a\",e[e.b=98]=\"b\",e[e.c=99]=\"c\",e[e.d=100]=\"d\",e[e.e=101]=\"e\",e[e.f=102]=\"f\",e[e.g=103]=\"g\",e[e.h=104]=\"h\",e[e.i=105]=\"i\",e[e.j=106]=\"j\",e[e.k=107]=\"k\",e[e.l=108]=\"l\",e[e.m=109]=\"m\",e[e.n=110]=\"n\",e[e.o=111]=\"o\",e[e.p=112]=\"p\",e[e.q=113]=\"q\",e[e.r=114]=\"r\",e[e.s=115]=\"s\",e[e.t=116]=\"t\",e[e.u=117]=\"u\",e[e.v=118]=\"v\",e[e.w=119]=\"w\",e[e.x=120]=\"x\",e[e.y=121]=\"y\",e[e.z=122]=\"z\",e[e.A=65]=\"A\",e[e.B=66]=\"B\",e[e.C=67]=\"C\",e[e.D=68]=\"D\",e[e.E=69]=\"E\",e[e.F=70]=\"F\",e[e.G=71]=\"G\",e[e.H=72]=\"H\",e[e.I=73]=\"I\",e[e.J=74]=\"J\",e[e.K=75]=\"K\",e[e.L=76]=\"L\",e[e.M=77]=\"M\",e[e.N=78]=\"N\",e[e.O=79]=\"O\",e[e.P=80]=\"P\",e[e.Q=81]=\"Q\",e[e.R=82]=\"R\",e[e.S=83]=\"S\",e[e.T=84]=\"T\",e[e.U=85]=\"U\",e[e.V=86]=\"V\",e[e.W=87]=\"W\",e[e.X=88]=\"X\",e[e.Y=89]=\"Y\",e[e.Z=90]=\"Z\",e[e.ampersand=38]=\"ampersand\",e[e.asterisk=42]=\"asterisk\",e[e.at=64]=\"at\",e[e.backslash=92]=\"backslash\",e[e.backtick=96]=\"backtick\",e[e.bar=124]=\"bar\",e[e.caret=94]=\"caret\",e[e.closeBrace=125]=\"closeBrace\",e[e.closeBracket=93]=\"closeBracket\",e[e.closeParen=41]=\"closeParen\",e[e.colon=58]=\"colon\",e[e.comma=44]=\"comma\",e[e.dot=46]=\"dot\",e[e.doubleQuote=34]=\"doubleQuote\",e[e.equals=61]=\"equals\",e[e.exclamation=33]=\"exclamation\",e[e.greaterThan=62]=\"greaterThan\",e[e.hash=35]=\"hash\",e[e.lessThan=60]=\"lessThan\",e[e.minus=45]=\"minus\",e[e.openBrace=123]=\"openBrace\",e[e.openBracket=91]=\"openBracket\",e[e.openParen=40]=\"openParen\",e[e.percent=37]=\"percent\",e[e.plus=43]=\"plus\",e[e.question=63]=\"question\",e[e.semicolon=59]=\"semicolon\",e[e.singleQuote=39]=\"singleQuote\",e[e.slash=47]=\"slash\",e[e.tilde=126]=\"tilde\",e[e.backspace=8]=\"backspace\",e[e.formFeed=12]=\"formFeed\",e[e.byteOrderMark=65279]=\"byteOrderMark\",e[e.tab=9]=\"tab\",e[e.verticalTab=11]=\"verticalTab\",e))(KV||{}),qV=(e=>(e.Ts=\".ts\",e.Tsx=\".tsx\",e.Dts=\".d.ts\",e.Js=\".js\",e.Jsx=\".jsx\",e.Json=\".json\",e.TsBuildInfo=\".tsbuildinfo\",e.Mjs=\".mjs\",e.Mts=\".mts\",e.Dmts=\".d.mts\",e.Cjs=\".cjs\",e.Cts=\".cts\",e.Dcts=\".d.cts\",e))(qV||{}),G8=(e=>(e[e.None=0]=\"None\",e[e.ContainsTypeScript=1]=\"ContainsTypeScript\",e[e.ContainsJsx=2]=\"ContainsJsx\",e[e.ContainsESNext=4]=\"ContainsESNext\",e[e.ContainsES2022=8]=\"ContainsES2022\",e[e.ContainsES2021=16]=\"ContainsES2021\",e[e.ContainsES2020=32]=\"ContainsES2020\",e[e.ContainsES2019=64]=\"ContainsES2019\",e[e.ContainsES2018=128]=\"ContainsES2018\",e[e.ContainsES2017=256]=\"ContainsES2017\",e[e.ContainsES2016=512]=\"ContainsES2016\",e[e.ContainsES2015=1024]=\"ContainsES2015\",e[e.ContainsGenerator=2048]=\"ContainsGenerator\",e[e.ContainsDestructuringAssignment=4096]=\"ContainsDestructuringAssignment\",e[e.ContainsTypeScriptClassSyntax=8192]=\"ContainsTypeScriptClassSyntax\",e[e.ContainsLexicalThis=16384]=\"ContainsLexicalThis\",e[e.ContainsRestOrSpread=32768]=\"ContainsRestOrSpread\",e[e.ContainsObjectRestOrSpread=65536]=\"ContainsObjectRestOrSpread\",e[e.ContainsComputedPropertyName=131072]=\"ContainsComputedPropertyName\",e[e.ContainsBlockScopedBinding=262144]=\"ContainsBlockScopedBinding\",e[e.ContainsBindingPattern=524288]=\"ContainsBindingPattern\",e[e.ContainsYield=1048576]=\"ContainsYield\",e[e.ContainsAwait=2097152]=\"ContainsAwait\",e[e.ContainsHoistedDeclarationOrCompletion=4194304]=\"ContainsHoistedDeclarationOrCompletion\",e[e.ContainsDynamicImport=8388608]=\"ContainsDynamicImport\",e[e.ContainsClassFields=16777216]=\"ContainsClassFields\",e[e.ContainsDecorators=33554432]=\"ContainsDecorators\",e[e.ContainsPossibleTopLevelAwait=67108864]=\"ContainsPossibleTopLevelAwait\",e[e.ContainsLexicalSuper=134217728]=\"ContainsLexicalSuper\",e[e.ContainsUpdateExpressionForIdentifier=268435456]=\"ContainsUpdateExpressionForIdentifier\",e[e.ContainsPrivateIdentifierInExpression=536870912]=\"ContainsPrivateIdentifierInExpression\",e[e.HasComputedFlags=-2147483648]=\"HasComputedFlags\",e[e.AssertTypeScript=1]=\"AssertTypeScript\",e[e.AssertJsx=2]=\"AssertJsx\",e[e.AssertESNext=4]=\"AssertESNext\",e[e.AssertES2022=8]=\"AssertES2022\",e[e.AssertES2021=16]=\"AssertES2021\",e[e.AssertES2020=32]=\"AssertES2020\",e[e.AssertES2019=64]=\"AssertES2019\",e[e.AssertES2018=128]=\"AssertES2018\",e[e.AssertES2017=256]=\"AssertES2017\",e[e.AssertES2016=512]=\"AssertES2016\",e[e.AssertES2015=1024]=\"AssertES2015\",e[e.AssertGenerator=2048]=\"AssertGenerator\",e[e.AssertDestructuringAssignment=4096]=\"AssertDestructuringAssignment\",e[e.OuterExpressionExcludes=-2147483648]=\"OuterExpressionExcludes\",e[e.PropertyAccessExcludes=-2147483648]=\"PropertyAccessExcludes\",e[e.NodeExcludes=-2147483648]=\"NodeExcludes\",e[e.ArrowFunctionExcludes=-2072174592]=\"ArrowFunctionExcludes\",e[e.FunctionExcludes=-1937940480]=\"FunctionExcludes\",e[e.ConstructorExcludes=-1937948672]=\"ConstructorExcludes\",e[e.MethodOrAccessorExcludes=-2005057536]=\"MethodOrAccessorExcludes\",e[e.PropertyExcludes=-2013249536]=\"PropertyExcludes\",e[e.ClassExcludes=-2147344384]=\"ClassExcludes\",e[e.ModuleExcludes=-1941676032]=\"ModuleExcludes\",e[e.TypeExcludes=-2]=\"TypeExcludes\",e[e.ObjectLiteralExcludes=-2147278848]=\"ObjectLiteralExcludes\",e[e.ArrayLiteralOrCallOrNewExcludes=-2147450880]=\"ArrayLiteralOrCallOrNewExcludes\",e[e.VariableDeclarationListExcludes=-2146893824]=\"VariableDeclarationListExcludes\",e[e.ParameterExcludes=-2147483648]=\"ParameterExcludes\",e[e.CatchClauseExcludes=-2147418112]=\"CatchClauseExcludes\",e[e.BindingPatternExcludes=-2147450880]=\"BindingPatternExcludes\",e[e.ContainsLexicalThisOrSuper=134234112]=\"ContainsLexicalThisOrSuper\",e[e.PropertyNamePropagatingFlags=134234112]=\"PropertyNamePropagatingFlags\",e))(G8||{}),B8=(e=>(e[e.TabStop=0]=\"TabStop\",e[e.Placeholder=1]=\"Placeholder\",e[e.Choice=2]=\"Choice\",e[e.Variable=3]=\"Variable\",e))(B8||{}),U8=(e=>(e[e.None=0]=\"None\",e[e.SingleLine=1]=\"SingleLine\",e[e.MultiLine=2]=\"MultiLine\",e[e.AdviseOnEmitNode=4]=\"AdviseOnEmitNode\",e[e.NoSubstitution=8]=\"NoSubstitution\",e[e.CapturesThis=16]=\"CapturesThis\",e[e.NoLeadingSourceMap=32]=\"NoLeadingSourceMap\",e[e.NoTrailingSourceMap=64]=\"NoTrailingSourceMap\",e[e.NoSourceMap=96]=\"NoSourceMap\",e[e.NoNestedSourceMaps=128]=\"NoNestedSourceMaps\",e[e.NoTokenLeadingSourceMaps=256]=\"NoTokenLeadingSourceMaps\",e[e.NoTokenTrailingSourceMaps=512]=\"NoTokenTrailingSourceMaps\",e[e.NoTokenSourceMaps=768]=\"NoTokenSourceMaps\",e[e.NoLeadingComments=1024]=\"NoLeadingComments\",e[e.NoTrailingComments=2048]=\"NoTrailingComments\",e[e.NoComments=3072]=\"NoComments\",e[e.NoNestedComments=4096]=\"NoNestedComments\",e[e.HelperName=8192]=\"HelperName\",e[e.ExportName=16384]=\"ExportName\",e[e.LocalName=32768]=\"LocalName\",e[e.InternalName=65536]=\"InternalName\",e[e.Indented=131072]=\"Indented\",e[e.NoIndentation=262144]=\"NoIndentation\",e[e.AsyncFunctionBody=524288]=\"AsyncFunctionBody\",e[e.ReuseTempVariableScope=1048576]=\"ReuseTempVariableScope\",e[e.CustomPrologue=2097152]=\"CustomPrologue\",e[e.NoHoisting=4194304]=\"NoHoisting\",e[e.HasEndOfDeclarationMarker=8388608]=\"HasEndOfDeclarationMarker\",e[e.Iterator=16777216]=\"Iterator\",e[e.NoAsciiEscaping=33554432]=\"NoAsciiEscaping\",e))(U8||{}),XV=(e=>(e[e.None=0]=\"None\",e[e.TypeScriptClassWrapper=1]=\"TypeScriptClassWrapper\",e[e.NeverApplyImportHelper=2]=\"NeverApplyImportHelper\",e[e.IgnoreSourceNewlines=4]=\"IgnoreSourceNewlines\",e[e.Immutable=8]=\"Immutable\",e[e.IndirectCall=16]=\"IndirectCall\",e[e.TransformPrivateStaticElements=32]=\"TransformPrivateStaticElements\",e))(XV||{}),YV=(e=>(e[e.Extends=1]=\"Extends\",e[e.Assign=2]=\"Assign\",e[e.Rest=4]=\"Rest\",e[e.Decorate=8]=\"Decorate\",e[e.ESDecorateAndRunInitializers=8]=\"ESDecorateAndRunInitializers\",e[e.Metadata=16]=\"Metadata\",e[e.Param=32]=\"Param\",e[e.Awaiter=64]=\"Awaiter\",e[e.Generator=128]=\"Generator\",e[e.Values=256]=\"Values\",e[e.Read=512]=\"Read\",e[e.SpreadArray=1024]=\"SpreadArray\",e[e.Await=2048]=\"Await\",e[e.AsyncGenerator=4096]=\"AsyncGenerator\",e[e.AsyncDelegator=8192]=\"AsyncDelegator\",e[e.AsyncValues=16384]=\"AsyncValues\",e[e.ExportStar=32768]=\"ExportStar\",e[e.ImportStar=65536]=\"ImportStar\",e[e.ImportDefault=131072]=\"ImportDefault\",e[e.MakeTemplateObject=262144]=\"MakeTemplateObject\",e[e.ClassPrivateFieldGet=524288]=\"ClassPrivateFieldGet\",e[e.ClassPrivateFieldSet=1048576]=\"ClassPrivateFieldSet\",e[e.ClassPrivateFieldIn=2097152]=\"ClassPrivateFieldIn\",e[e.CreateBinding=4194304]=\"CreateBinding\",e[e.SetFunctionName=8388608]=\"SetFunctionName\",e[e.PropKey=16777216]=\"PropKey\",e[e.FirstEmitHelper=1]=\"FirstEmitHelper\",e[e.LastEmitHelper=16777216]=\"LastEmitHelper\",e[e.ForOfIncludes=256]=\"ForOfIncludes\",e[e.ForAwaitOfIncludes=16384]=\"ForAwaitOfIncludes\",e[e.AsyncGeneratorIncludes=6144]=\"AsyncGeneratorIncludes\",e[e.AsyncDelegatorIncludes=26624]=\"AsyncDelegatorIncludes\",e[e.SpreadIncludes=1536]=\"SpreadIncludes\",e))(YV||{}),$V=(e=>(e[e.SourceFile=0]=\"SourceFile\",e[e.Expression=1]=\"Expression\",e[e.IdentifierName=2]=\"IdentifierName\",e[e.MappedTypeParameter=3]=\"MappedTypeParameter\",e[e.Unspecified=4]=\"Unspecified\",e[e.EmbeddedStatement=5]=\"EmbeddedStatement\",e[e.JsxAttributeValue=6]=\"JsxAttributeValue\",e))($V||{}),QV=(e=>(e[e.Parentheses=1]=\"Parentheses\",e[e.TypeAssertions=2]=\"TypeAssertions\",e[e.NonNullAssertions=4]=\"NonNullAssertions\",e[e.PartiallyEmittedExpressions=8]=\"PartiallyEmittedExpressions\",e[e.Assertions=6]=\"Assertions\",e[e.All=15]=\"All\",e[e.ExcludeJSDocTypeAssertion=16]=\"ExcludeJSDocTypeAssertion\",e))(QV||{}),ZV=(e=>(e[e.None=0]=\"None\",e[e.InParameters=1]=\"InParameters\",e[e.VariablesHoistedInParameters=2]=\"VariablesHoistedInParameters\",e))(ZV||{}),ej=(e=>(e.Prologue=\"prologue\",e.EmitHelpers=\"emitHelpers\",e.NoDefaultLib=\"no-default-lib\",e.Reference=\"reference\",e.Type=\"type\",e.TypeResolutionModeRequire=\"type-require\",e.TypeResolutionModeImport=\"type-import\",e.Lib=\"lib\",e.Prepend=\"prepend\",e.Text=\"text\",e.Internal=\"internal\",e))(ej||{}),tj=(e=>(e[e.None=0]=\"None\",e[e.SingleLine=0]=\"SingleLine\",e[e.MultiLine=1]=\"MultiLine\",e[e.PreserveLines=2]=\"PreserveLines\",e[e.LinesMask=3]=\"LinesMask\",e[e.NotDelimited=0]=\"NotDelimited\",e[e.BarDelimited=4]=\"BarDelimited\",e[e.AmpersandDelimited=8]=\"AmpersandDelimited\",e[e.CommaDelimited=16]=\"CommaDelimited\",e[e.AsteriskDelimited=32]=\"AsteriskDelimited\",e[e.DelimitersMask=60]=\"DelimitersMask\",e[e.AllowTrailingComma=64]=\"AllowTrailingComma\",e[e.Indented=128]=\"Indented\",e[e.SpaceBetweenBraces=256]=\"SpaceBetweenBraces\",e[e.SpaceBetweenSiblings=512]=\"SpaceBetweenSiblings\",e[e.Braces=1024]=\"Braces\",e[e.Parenthesis=2048]=\"Parenthesis\",e[e.AngleBrackets=4096]=\"AngleBrackets\",e[e.SquareBrackets=8192]=\"SquareBrackets\",e[e.BracketsMask=15360]=\"BracketsMask\",e[e.OptionalIfUndefined=16384]=\"OptionalIfUndefined\",e[e.OptionalIfEmpty=32768]=\"OptionalIfEmpty\",e[e.Optional=49152]=\"Optional\",e[e.PreferNewLine=65536]=\"PreferNewLine\",e[e.NoTrailingNewLine=131072]=\"NoTrailingNewLine\",e[e.NoInterveningComments=262144]=\"NoInterveningComments\",e[e.NoSpaceIfEmpty=524288]=\"NoSpaceIfEmpty\",e[e.SingleElement=1048576]=\"SingleElement\",e[e.SpaceAfterList=2097152]=\"SpaceAfterList\",e[e.Modifiers=2359808]=\"Modifiers\",e[e.HeritageClauses=512]=\"HeritageClauses\",e[e.SingleLineTypeLiteralMembers=768]=\"SingleLineTypeLiteralMembers\",e[e.MultiLineTypeLiteralMembers=32897]=\"MultiLineTypeLiteralMembers\",e[e.SingleLineTupleTypeElements=528]=\"SingleLineTupleTypeElements\",e[e.MultiLineTupleTypeElements=657]=\"MultiLineTupleTypeElements\",e[e.UnionTypeConstituents=516]=\"UnionTypeConstituents\",e[e.IntersectionTypeConstituents=520]=\"IntersectionTypeConstituents\",e[e.ObjectBindingPatternElements=525136]=\"ObjectBindingPatternElements\",e[e.ArrayBindingPatternElements=524880]=\"ArrayBindingPatternElements\",e[e.ObjectLiteralExpressionProperties=526226]=\"ObjectLiteralExpressionProperties\",e[e.ImportClauseEntries=526226]=\"ImportClauseEntries\",e[e.ArrayLiteralExpressionElements=8914]=\"ArrayLiteralExpressionElements\",e[e.CommaListElements=528]=\"CommaListElements\",e[e.CallExpressionArguments=2576]=\"CallExpressionArguments\",e[e.NewExpressionArguments=18960]=\"NewExpressionArguments\",e[e.TemplateExpressionSpans=262144]=\"TemplateExpressionSpans\",e[e.SingleLineBlockStatements=768]=\"SingleLineBlockStatements\",e[e.MultiLineBlockStatements=129]=\"MultiLineBlockStatements\",e[e.VariableDeclarationList=528]=\"VariableDeclarationList\",e[e.SingleLineFunctionBodyStatements=768]=\"SingleLineFunctionBodyStatements\",e[e.MultiLineFunctionBodyStatements=1]=\"MultiLineFunctionBodyStatements\",e[e.ClassHeritageClauses=0]=\"ClassHeritageClauses\",e[e.ClassMembers=129]=\"ClassMembers\",e[e.InterfaceMembers=129]=\"InterfaceMembers\",e[e.EnumMembers=145]=\"EnumMembers\",e[e.CaseBlockClauses=129]=\"CaseBlockClauses\",e[e.NamedImportsOrExportsElements=525136]=\"NamedImportsOrExportsElements\",e[e.JsxElementOrFragmentChildren=262144]=\"JsxElementOrFragmentChildren\",e[e.JsxElementAttributes=262656]=\"JsxElementAttributes\",e[e.CaseOrDefaultClauseStatements=163969]=\"CaseOrDefaultClauseStatements\",e[e.HeritageClauseTypes=528]=\"HeritageClauseTypes\",e[e.SourceFileStatements=131073]=\"SourceFileStatements\",e[e.Decorators=2146305]=\"Decorators\",e[e.TypeArguments=53776]=\"TypeArguments\",e[e.TypeParameters=53776]=\"TypeParameters\",e[e.Parameters=2576]=\"Parameters\",e[e.IndexSignatureParameters=8848]=\"IndexSignatureParameters\",e[e.JSDocComment=33]=\"JSDocComment\",e))(tj||{}),nj=(e=>(e[e.None=0]=\"None\",e[e.TripleSlashXML=1]=\"TripleSlashXML\",e[e.SingleLine=2]=\"SingleLine\",e[e.MultiLine=4]=\"MultiLine\",e[e.All=7]=\"All\",e[e.Default=7]=\"Default\",e))(nj||{}),aw={reference:{args:[{name:\"types\",optional:!0,captureSpan:!0},{name:\"lib\",optional:!0,captureSpan:!0},{name:\"path\",optional:!0,captureSpan:!0},{name:\"no-default-lib\",optional:!0},{name:\"resolution-mode\",optional:!0}],kind:1},\"amd-dependency\":{args:[{name:\"path\"},{name:\"name\",optional:!0}],kind:1},\"amd-module\":{args:[{name:\"name\"}],kind:1},\"ts-check\":{kind:2},\"ts-nocheck\":{kind:2},jsx:{args:[{name:\"factory\"}],kind:4},jsxfrag:{args:[{name:\"factory\"}],kind:4},jsximportsource:{args:[{name:\"factory\"}],kind:4},jsxruntime:{args:[{name:\"factory\"}],kind:4}}}});function ow(e){let t=5381;for(let r=0;r<e.length;r++)t=(t<<5)+t+e.charCodeAt(r);return t.toString()}function dDe(){Error.stackTraceLimit<100&&(Error.stackTraceLimit=100)}function Q1(e,t){return e.getModifiedTime(t)||Eh}function rj(e){return{[250]:e.Low,[500]:e.Medium,[2e3]:e.High}}function fDe(e){if(!e.getEnvironmentVariable)return;let t=o(\"TSC_WATCH_POLLINGINTERVAL\",V8);lw=s(\"TSC_WATCH_POLLINGCHUNKSIZE\",cw)||lw,uw=s(\"TSC_WATCH_UNCHANGEDPOLLTHRESHOLDS\",cw)||uw;function r(l,f){return e.getEnvironmentVariable(`${l}_${f.toUpperCase()}`)}function i(l){let f;return d(\"Low\"),d(\"Medium\"),d(\"High\"),f;function d(g){let m=r(l,g);m&&((f||(f={}))[g]=Number(m))}}function o(l,f){let d=i(l);if(d)return g(\"Low\"),g(\"Medium\"),g(\"High\"),!0;return!1;function g(m){f[m]=d[m]||f[m]}}function s(l,f){let d=i(l);return(t||d)&&rj(d?{...f,...d}:f)}}function roe(e,t,r,i,o){let s=r;for(let f=t.length;i&&f;l(),f--){let d=t[r];if(d){if(d.isClosed){t[r]=void 0;continue}}else continue;i--;let g=hDe(d,Q1(e,d.fileName));if(d.isClosed){t[r]=void 0;continue}o?.(d,r,g),t[r]&&(s<r&&(t[s]=d,t[r]=void 0),s++)}return r;function l(){r++,r===t.length&&(s<r&&(t.length=s),r=0,s=0)}}function _De(e){let t=[],r=[],i=f(250),o=f(500),s=f(2e3);return l;function l(C,P,F){let B={fileName:C,callback:P,unchangedPolls:0,mtime:Q1(e,C)};return t.push(B),S(B,F),{close:()=>{B.isClosed=!0,$D(t,B)}}}function f(C){let P=[];return P.pollingInterval=C,P.pollIndex=0,P.pollScheduled=!1,P}function d(C){C.pollIndex=m(C,C.pollingInterval,C.pollIndex,lw[C.pollingInterval]),C.length?w(C.pollingInterval):(L.assert(C.pollIndex===0),C.pollScheduled=!1)}function g(C){m(r,250,0,r.length),d(C),!C.pollScheduled&&r.length&&w(250)}function m(C,P,F,B){return roe(e,C,F,B,q);function q(W,Y,R){R?(W.unchangedPolls=0,C!==r&&(C[Y]=void 0,x(W))):W.unchangedPolls!==uw[P]?W.unchangedPolls++:C===r?(W.unchangedPolls=1,C[Y]=void 0,S(W,250)):P!==2e3&&(W.unchangedPolls++,C[Y]=void 0,S(W,P===250?500:2e3))}}function v(C){switch(C){case 250:return i;case 500:return o;case 2e3:return s}}function S(C,P){v(P).push(C),A(P)}function x(C){r.push(C),A(250)}function A(C){v(C).pollScheduled||w(C)}function w(C){v(C).pollScheduled=e.setTimeout(C===250?g:d,C,v(C))}}function pDe(e,t){let r=Of(),i=new Map,o=Dl(t);return s;function s(f,d,g,m){let v=o(f);r.add(v,d);let S=ni(v)||\".\",x=i.get(S)||l(ni(f)||\".\",S,m);return x.referenceCount++,{close:()=>{x.referenceCount===1?(x.close(),i.delete(S)):x.referenceCount--,r.remove(v,d)}}}function l(f,d,g){let m=e(f,1,(v,S,x)=>{if(!Ta(S))return;let A=_a(S,f),w=A&&r.get(o(A));if(w)for(let C of w)C(A,1,x)},!1,500,g);return m.referenceCount=0,i.set(d,m),m}}function mDe(e){let t=[],r=0,i;return o;function o(f,d){let g={fileName:f,callback:d,mtime:Q1(e,f)};return t.push(g),l(),{close:()=>{g.isClosed=!0,$D(t,g)}}}function s(){i=void 0,r=roe(e,t,r,lw[250]),l()}function l(){!t.length||i||(i=e.setTimeout(s,2e3))}}function ioe(e,t,r,i,o){let l=Dl(t)(r),f=e.get(l);return f?f.callbacks.push(i):e.set(l,{watcher:o((d,g,m)=>{var v;return(v=e.get(l))==null?void 0:v.callbacks.slice().forEach(S=>S(d,g,m))}),callbacks:[i]}),{close:()=>{let d=e.get(l);!d||!m8(d.callbacks,i)||d.callbacks.length||(e.delete(l),_m(d))}}}function hDe(e,t){let r=e.mtime.getTime(),i=t.getTime();return r!==i?(e.mtime=t,e.callback(e.fileName,aoe(r,i),t),!0):!1}function aoe(e,t){return e===0?0:t===0?2:1}function sw(e){return aj(e)}function ooe(e){aj=e}function gDe({watchDirectory:e,useCaseSensitiveFileNames:t,getCurrentDirectory:r,getAccessibleSortedChildDirectories:i,fileSystemEntryExists:o,realpath:s,setTimeout:l,clearTimeout:f}){let d=new Map,g=Of(),m=new Map,v,S=p8(!t),x=Dl(t);return(R,ie,Q,fe)=>Q?A(R,fe,ie):e(R,ie,Q,fe);function A(R,ie,Q){let fe=x(R),Z=d.get(fe);Z?Z.refCount++:(Z={watcher:e(R,re=>{W(re,ie)||(ie?.synchronousWatchDirectory?(w(fe,re),q(R,fe,ie)):C(R,fe,re,ie))},!1,ie),refCount:1,childWatches:Je},d.set(fe,Z),q(R,fe,ie));let U=Q&&{dirName:R,callback:Q};return U&&g.add(fe,U),{dirName:R,close:()=>{let re=L.checkDefined(d.get(fe));U&&g.remove(fe,U),re.refCount--,!re.refCount&&(d.delete(fe),_m(re),re.childWatches.forEach(am))}}}function w(R,ie,Q){let fe,Z;Ta(ie)?fe=ie:Z=ie,g.forEach((U,re)=>{if(!(Z&&Z.get(re)===!0)&&(re===R||na(R,re)&&R[re.length]===_s))if(Z)if(Q){let le=Z.get(re);le?le.push(...Q):Z.set(re,Q.slice())}else Z.set(re,!0);else U.forEach(({callback:le})=>le(fe))})}function C(R,ie,Q,fe){let Z=d.get(ie);if(Z&&o(R,1)){P(R,ie,Q,fe);return}w(ie,Q),B(Z)}function P(R,ie,Q,fe){let Z=m.get(ie);Z?Z.fileNames.push(Q):m.set(ie,{dirName:R,options:fe,fileNames:[Q]}),v&&(f(v),v=void 0),v=l(F,1e3)}function F(){v=void 0,sw(`sysLog:: onTimerToUpdateChildWatches:: ${m.size}`);let R=Ms(),ie=new Map;for(;!v&&m.size;){let fe=m.entries().next();L.assert(!fe.done);let{value:[Z,{dirName:U,options:re,fileNames:le}]}=fe;m.delete(Z);let _e=q(U,Z,re);w(Z,ie,_e?void 0:le)}sw(`sysLog:: invokingWatchers:: Elapsed:: ${Ms()-R}ms:: ${m.size}`),g.forEach((fe,Z)=>{let U=ie.get(Z);U&&fe.forEach(({callback:re,dirName:le})=>{ba(U)?U.forEach(re):re(le)})});let Q=Ms()-R;sw(`sysLog:: Elapsed:: ${Q}ms:: onTimerToUpdateChildWatches:: ${m.size} ${v}`)}function B(R){if(!R)return;let ie=R.childWatches;R.childWatches=Je;for(let Q of ie)Q.close(),B(d.get(x(Q.dirName)))}function q(R,ie,Q){let fe=d.get(ie);if(!fe)return!1;let Z,U=wae(o(R,1)?Zi(i(R),_e=>{let ge=_a(_e,R);return!W(ge,Q)&&S(ge,So(s(ge)))===0?ge:void 0}):Je,fe.childWatches,(_e,ge)=>S(_e,ge.dirName),re,am,le);return fe.childWatches=Z||Je,U;function re(_e){let ge=A(_e,Q);le(ge)}function le(_e){(Z||(Z=[])).push(_e)}}function W(R,ie){return vt(dw,Q=>Y(R,Q))||soe(R,ie,t,r)}function Y(R,ie){return jl(R,ie)?!0:t?!1:jl(x(R),ie)}}function yDe(e){return(t,r,i)=>e(r===1?\"change\":\"rename\",\"\",i)}function vDe(e,t,r){return(i,o,s)=>{i===\"rename\"?(s||(s=r(e)||Eh),t(e,s!==Eh?0:2,s)):t(e,1,s)}}function soe(e,t,r,i){return(t?.excludeDirectories||t?.excludeFiles)&&(G3(e,t?.excludeFiles,r,i())||G3(e,t?.excludeDirectories,r,i()))}function coe(e,t,r,i,o){return(s,l)=>{if(s===\"rename\"){let f=l?So(vi(e,l)):e;(!l||!soe(f,r,i,o))&&t(f)}}}function loe({pollingWatchFileWorker:e,getModifiedTime:t,setTimeout:r,clearTimeout:i,fsWatchWorker:o,fileSystemEntryExists:s,useCaseSensitiveFileNames:l,getCurrentDirectory:f,fsSupportsRecursiveFsWatch:d,getAccessibleSortedChildDirectories:g,realpath:m,tscWatchFile:v,useNonPollingWatchers:S,tscWatchDirectory:x,inodeWatching:A,sysLog:w}){let C=new Map,P=new Map,F=new Map,B,q,W,Y,R=!1;return{watchFile:ie,watchDirectory:re};function ie(we,ke,Pe,Ce){Ce=Z(Ce,S);let Ie=L.checkDefined(Ce.watchFile);switch(Ie){case 0:return ge(we,ke,250,void 0);case 1:return ge(we,ke,Pe,void 0);case 2:return Q()(we,ke,Pe,void 0);case 3:return fe()(we,ke,void 0,void 0);case 4:return X(we,0,vDe(we,ke,t),!1,Pe,pN(Ce));case 5:return W||(W=pDe(X,l)),W(we,ke,Pe,pN(Ce));default:L.assertNever(Ie)}}function Q(){return B||(B=_De({getModifiedTime:t,setTimeout:r}))}function fe(){return q||(q=mDe({getModifiedTime:t,setTimeout:r}))}function Z(we,ke){if(we&&we.watchFile!==void 0)return we;switch(v){case\"PriorityPollingInterval\":return{watchFile:1};case\"DynamicPriorityPolling\":return{watchFile:2};case\"UseFsEvents\":return U(4,1,we);case\"UseFsEventsWithFallbackDynamicPolling\":return U(4,2,we);case\"UseFsEventsOnParentDirectory\":ke=!0;default:return ke?U(5,1,we):{watchFile:4}}}function U(we,ke,Pe){let Ce=Pe?.fallbackPolling;return{watchFile:we,fallbackPolling:Ce===void 0?ke:Ce}}function re(we,ke,Pe,Ce){return d?X(we,1,coe(we,ke,Ce,l,f),Pe,500,pN(Ce)):(Y||(Y=gDe({useCaseSensitiveFileNames:l,getCurrentDirectory:f,fileSystemEntryExists:s,getAccessibleSortedChildDirectories:g,watchDirectory:le,realpath:m,setTimeout:r,clearTimeout:i})),Y(we,ke,Pe,Ce))}function le(we,ke,Pe,Ce){L.assert(!Pe);let Ie=_e(Ce),Be=L.checkDefined(Ie.watchDirectory);switch(Be){case 1:return ge(we,()=>ke(we),500,void 0);case 2:return Q()(we,()=>ke(we),500,void 0);case 3:return fe()(we,()=>ke(we),void 0,void 0);case 0:return X(we,1,coe(we,ke,Ce,l,f),Pe,500,pN(Ie));default:L.assertNever(Be)}}function _e(we){if(we&&we.watchDirectory!==void 0)return we;switch(x){case\"RecursiveDirectoryUsingFsWatchFile\":return{watchDirectory:1};case\"RecursiveDirectoryUsingDynamicPriorityPolling\":return{watchDirectory:2};default:let ke=we?.fallbackPolling;return{watchDirectory:0,fallbackPolling:ke!==void 0?ke:void 0}}}function ge(we,ke,Pe,Ce){return ioe(C,l,we,ke,Ie=>e(we,Ie,Pe,Ce))}function X(we,ke,Pe,Ce,Ie,Be){return ioe(Ce?F:P,l,we,Pe,Ne=>Ve(we,ke,Ne,Ce,Ie,Be))}function Ve(we,ke,Pe,Ce,Ie,Be){let Ne,Le;A&&(Ne=we.substring(we.lastIndexOf(_s)),Le=Ne.slice(_s.length));let Ye=s(we,ke)?ct():qe();return{close:()=>{Ye&&(Ye.close(),Ye=void 0)}};function _t(zt){Ye&&(w(`sysLog:: ${we}:: Changing watcher to ${zt===ct?\"Present\":\"Missing\"}FileSystemEntryWatcher`),Ye.close(),Ye=zt())}function ct(){if(R)return w(`sysLog:: ${we}:: Defaulting to watchFile`),We();try{let zt=o(we,Ce,A?Rt:Pe);return zt.on(\"error\",()=>{Pe(\"rename\",\"\"),_t(qe)}),zt}catch(zt){return R||(R=zt.code===\"ENOSPC\"),w(`sysLog:: ${we}:: Changing to watchFile`),We()}}function Rt(zt,Qt){let tn;if(Qt&&Oc(Qt,\"~\")&&(tn=Qt,Qt=Qt.slice(0,Qt.length-1)),zt===\"rename\"&&(!Qt||Qt===Le||Oc(Qt,Ne))){let kn=t(we)||Eh;tn&&Pe(zt,tn,kn),Pe(zt,Qt,kn),A?_t(kn===Eh?qe:ct):kn===Eh&&_t(qe)}else tn&&Pe(zt,tn),Pe(zt,Qt)}function We(){return ie(we,yDe(Pe),Ie,Be)}function qe(){return ie(we,(zt,Qt,tn)=>{Qt===0&&(tn||(tn=t(we)||Eh),tn!==Eh&&(Pe(\"rename\",\"\",tn),_t(ct)))},Ie,Be)}}}function uoe(e){let t=e.writeFile;e.writeFile=(r,i,o)=>nW(r,i,!!o,(s,l,f)=>t.call(e,s,l,f),s=>e.createDirectory(s),s=>e.directoryExists(s))}function bDe(e){xl=e}var ij,V8,Eh,cw,lw,uw,dw,aj,oj,xl,EDe=gt({\"src/compiler/sys.ts\"(){\"use strict\";fa(),ij=(e=>(e[e.Created=0]=\"Created\",e[e.Changed=1]=\"Changed\",e[e.Deleted=2]=\"Deleted\",e))(ij||{}),V8=(e=>(e[e.High=2e3]=\"High\",e[e.Medium=500]=\"Medium\",e[e.Low=250]=\"Low\",e))(V8||{}),Eh=new Date(0),cw={Low:32,Medium:64,High:256},lw=rj(cw),uw=rj(cw),dw=[\"/node_modules/.\",\"/.git\",\"/.#\"],aj=Ba,oj=(e=>(e[e.File=0]=\"File\",e[e.Directory=1]=\"Directory\",e))(oj||{}),xl=(()=>{let e=\"\\uFEFF\";function t(){let i=/^native |^\\([^)]+\\)$|^(internal[\\\\/]|[a-zA-Z0-9_\\s]+(\\.js)?$)/,o=d0(\"fs\"),s=d0(\"path\"),l=d0(\"os\"),f;try{f=d0(\"crypto\")}catch{f=void 0}let d,g=\"./profile.cpuprofile\",m=d0(\"buffer\").Buffer,v=process.platform===\"linux\"||process.platform===\"darwin\",S=l.platform(),x=fe(),A=o.realpathSync.native?process.platform===\"win32\"?Ie:o.realpathSync.native:o.realpathSync,w=__filename.endsWith(\"sys.js\")?s.join(s.dirname(__dirname),\"__fake__.js\"):__filename,C=process.platform===\"win32\"||process.platform===\"darwin\",P=zu(()=>process.cwd()),{watchFile:F,watchDirectory:B}=loe({pollingWatchFileWorker:U,getModifiedTime:Ne,setTimeout,clearTimeout,fsWatchWorker:re,useCaseSensitiveFileNames:x,getCurrentDirectory:P,fileSystemEntryExists:we,fsSupportsRecursiveFsWatch:C,getAccessibleSortedChildDirectories:ct=>X(ct).directories,realpath:Be,tscWatchFile:process.env.TSC_WATCHFILE,useNonPollingWatchers:process.env.TSC_NONPOLLING_WATCHER,tscWatchDirectory:process.env.TSC_WATCHDIRECTORY,inodeWatching:v,sysLog:sw}),q={args:process.argv.slice(2),newLine:l.EOL,useCaseSensitiveFileNames:x,write(ct){process.stdout.write(ct)},getWidthOfTerminal(){return process.stdout.columns},writeOutputIsTTY(){return process.stdout.isTTY},readFile:_e,writeFile:ge,watchFile:F,watchDirectory:B,resolvePath:ct=>s.resolve(ct),fileExists:ke,directoryExists:Pe,createDirectory(ct){if(!q.directoryExists(ct))try{o.mkdirSync(ct)}catch(Rt){if(Rt.code!==\"EEXIST\")throw Rt}},getExecutingFilePath(){return w},getCurrentDirectory:P,getDirectories:Ce,getEnvironmentVariable(ct){return process.env[ct]||\"\"},readDirectory:Ve,getModifiedTime:Ne,setModifiedTime:Le,deleteFile:Ye,createHash:f?_t:ow,createSHA256Hash:f?_t:void 0,getMemoryUsage(){return global.gc&&global.gc(),process.memoryUsage().heapUsed},getFileSize(ct){try{let Rt=W(ct);if(Rt?.isFile())return Rt.size}catch{}return 0},exit(ct){ie(()=>process.exit(ct))},enableCPUProfiler:Y,disableCPUProfiler:ie,cpuProfilingEnabled:()=>!!d||ya(process.execArgv,\"--cpu-prof\")||ya(process.execArgv,\"--prof\"),realpath:Be,debugMode:!!process.env.NODE_INSPECTOR_IPC||!!process.env.VSCODE_INSPECTOR_OPTIONS||vt(process.execArgv,ct=>/^--(inspect|debug)(-brk)?(=\\d+)?$/i.test(ct)),tryEnableSourceMapsForHost(){try{d0(\"source-map-support\").install()}catch{}},setTimeout,clearTimeout,clearScreen:()=>{process.stdout.write(\"\\x1Bc\")},setBlocking:()=>{process.stdout&&process.stdout._handle&&process.stdout._handle.setBlocking&&process.stdout._handle.setBlocking(!0)},bufferFrom:Q,base64decode:ct=>Q(ct,\"base64\").toString(\"utf8\"),base64encode:ct=>Q(ct).toString(\"base64\"),require:(ct,Rt)=>{try{let We=jfe(Rt,ct,q);return{module:d0(We),modulePath:We,error:void 0}}catch(We){return{module:void 0,modulePath:void 0,error:We}}}};return q;function W(ct){return o.statSync(ct,{throwIfNoEntry:!1})}function Y(ct,Rt){if(d)return Rt(),!1;let We=d0(\"inspector\");if(!We||!We.Session)return Rt(),!1;let qe=new We.Session;return qe.connect(),qe.post(\"Profiler.enable\",()=>{qe.post(\"Profiler.start\",()=>{d=qe,g=ct,Rt()})}),!0}function R(ct){let Rt=0,We=new Map,qe=Al(s.dirname(w)),zt=`file://${_p(qe)===1?\"\":\"/\"}${qe}`;for(let Qt of ct.nodes)if(Qt.callFrame.url){let tn=Al(Qt.callFrame.url);Gy(zt,tn,x)?Qt.callFrame.url=Z1(zt,tn,zt,Dl(x),!0):i.test(tn)||(Qt.callFrame.url=(We.has(tn)?We:We.set(tn,`external${Rt}.js`)).get(tn),Rt++)}return ct}function ie(ct){if(d&&d!==\"stopping\"){let Rt=d;return d.post(\"Profiler.stop\",(We,{profile:qe})=>{var zt;if(!We){try{(zt=W(g))!=null&&zt.isDirectory()&&(g=s.join(g,`${new Date().toISOString().replace(/:/g,\"-\")}+P${process.pid}.cpuprofile`))}catch{}try{o.mkdirSync(s.dirname(g),{recursive:!0})}catch{}o.writeFileSync(g,JSON.stringify(R(qe)))}d=void 0,Rt.disconnect(),ct()}),d=\"stopping\",!0}else return ct(),!1}function Q(ct,Rt){return m.from&&m.from!==Int8Array.from?m.from(ct,Rt):new m(ct,Rt)}function fe(){return S===\"win32\"||S===\"win64\"?!1:!ke(Z(__filename))}function Z(ct){return ct.replace(/\\w/g,Rt=>{let We=Rt.toUpperCase();return Rt===We?Rt.toLowerCase():We})}function U(ct,Rt,We){o.watchFile(ct,{persistent:!0,interval:We},zt);let qe;return{close:()=>o.unwatchFile(ct,zt)};function zt(Qt,tn){let kn=+tn.mtime==0||qe===2;if(+Qt.mtime==0){if(kn)return;qe=2}else if(kn)qe=0;else{if(+Qt.mtime==+tn.mtime)return;qe=1}Rt(ct,qe,Qt.mtime)}}function re(ct,Rt,We){return o.watch(ct,C?{persistent:!0,recursive:!!Rt}:{persistent:!0},We)}function le(ct,Rt){let We;try{We=o.readFileSync(ct)}catch{return}let qe=We.length;if(qe>=2&&We[0]===254&&We[1]===255){qe&=-2;for(let zt=0;zt<qe;zt+=2){let Qt=We[zt];We[zt]=We[zt+1],We[zt+1]=Qt}return We.toString(\"utf16le\",2)}return qe>=2&&We[0]===255&&We[1]===254?We.toString(\"utf16le\",2):qe>=3&&We[0]===239&&We[1]===187&&We[2]===191?We.toString(\"utf8\",3):We.toString(\"utf8\")}function _e(ct,Rt){fp.logStartReadFile(ct);let We=le(ct,Rt);return fp.logStopReadFile(),We}function ge(ct,Rt,We){fp.logEvent(\"WriteFile: \"+ct),We&&(Rt=e+Rt);let qe;try{qe=o.openSync(ct,\"w\"),o.writeSync(qe,Rt,void 0,\"utf8\")}finally{qe!==void 0&&o.closeSync(qe)}}function X(ct){fp.logEvent(\"ReadDir: \"+(ct||\".\"));try{let Rt=o.readdirSync(ct||\".\",{withFileTypes:!0}),We=[],qe=[];for(let zt of Rt){let Qt=typeof zt==\"string\"?zt:zt.name;if(Qt===\".\"||Qt===\"..\")continue;let tn;if(typeof zt==\"string\"||zt.isSymbolicLink()){let kn=vi(ct,Qt);try{if(tn=W(kn),!tn)continue}catch{continue}}else tn=zt;tn.isFile()?We.push(Qt):tn.isDirectory()&&qe.push(Qt)}return We.sort(),qe.sort(),{files:We,directories:qe}}catch{return D4}}function Ve(ct,Rt,We,qe,zt){return wW(ct,Rt,We,qe,x,process.cwd(),zt,X,Be)}function we(ct,Rt){let We=Error.stackTraceLimit;Error.stackTraceLimit=0;try{let qe=W(ct);if(!qe)return!1;switch(Rt){case 0:return qe.isFile();case 1:return qe.isDirectory();default:return!1}}catch{return!1}finally{Error.stackTraceLimit=We}}function ke(ct){return we(ct,0)}function Pe(ct){return we(ct,1)}function Ce(ct){return X(ct).directories.slice()}function Ie(ct){return ct.length<260?o.realpathSync.native(ct):o.realpathSync(ct)}function Be(ct){try{return A(ct)}catch{return ct}}function Ne(ct){var Rt;let We=Error.stackTraceLimit;Error.stackTraceLimit=0;try{return(Rt=W(ct))==null?void 0:Rt.mtime}catch{return}finally{Error.stackTraceLimit=We}}function Le(ct,Rt){try{o.utimesSync(ct,Rt,Rt)}catch{return}}function Ye(ct){try{return o.unlinkSync(ct)}catch{return}}function _t(ct){let Rt=f.createHash(\"sha256\");return Rt.update(ct),Rt.digest(\"hex\")}}let r;return qU()&&(r=t()),r&&uoe(r),r})(),xl&&xl.getEnvironmentVariable&&(fDe(xl),L.setAssertionLevel(/^development$/i.test(xl.getEnvironmentVariable(\"NODE_ENV\"))?1:0)),xl&&xl.debugMode&&(L.isDebugging=!0)}});function sj(e){return e===47||e===92}function doe(e){return fw(e)<0}function qp(e){return fw(e)>0}function TDe(e){let t=fw(e);return t>0&&t===e.length}function rI(e){return fw(e)!==0}function zd(e){return/^\\.\\.?($|[\\\\/])/.test(e)}function cj(e){return!rI(e)&&!zd(e)}function yA(e){return jl(Hl(e),\".\")}function Gc(e,t){return e.length>t.length&&Oc(e,t)}function $c(e,t){for(let r of t)if(Gc(e,r))return!0;return!1}function My(e){return e.length>0&&sj(e.charCodeAt(e.length-1))}function foe(e){return e>=97&&e<=122||e>=65&&e<=90}function SDe(e,t){let r=e.charCodeAt(t);if(r===58)return t+1;if(r===37&&e.charCodeAt(t+1)===51){let i=e.charCodeAt(t+2);if(i===97||i===65)return t+3}return-1}function fw(e){if(!e)return 0;let t=e.charCodeAt(0);if(t===47||t===92){if(e.charCodeAt(1)!==t)return 1;let i=e.indexOf(t===47?_s:mw,2);return i<0?e.length:i+1}if(foe(t)&&e.charCodeAt(1)===58){let i=e.charCodeAt(2);if(i===47||i===92)return 3;if(e.length===2)return 2}let r=e.indexOf(pj);if(r!==-1){let i=r+pj.length,o=e.indexOf(_s,i);if(o!==-1){let s=e.slice(0,r),l=e.slice(i,o);if(s===\"file\"&&(l===\"\"||l===\"localhost\")&&foe(e.charCodeAt(o+1))){let f=SDe(e,o+2);if(f!==-1){if(e.charCodeAt(f)===47)return~(f+1);if(f===e.length)return~f}}return~(o+1)}return~e.length}return 0}function _p(e){let t=fw(e);return t<0?~t:t}function ni(e){e=Al(e);let t=_p(e);return t===e.length?e:(e=cT(e),e.slice(0,Math.max(t,e.lastIndexOf(_s))))}function Hl(e,t,r){if(e=Al(e),_p(e)===e.length)return\"\";e=cT(e);let o=e.slice(Math.max(_p(e),e.lastIndexOf(_s)+1)),s=t!==void 0&&r!==void 0?j8(o,t,r):void 0;return s?o.slice(0,o.length-s.length):o}function _oe(e,t,r){if(na(t,\".\")||(t=\".\"+t),e.length>=t.length&&e.charCodeAt(e.length-t.length)===46){let i=e.slice(e.length-t.length);if(r(i,t))return i}}function xDe(e,t,r){if(typeof t==\"string\")return _oe(e,t,r)||\"\";for(let i of t){let o=_oe(e,i,r);if(o)return o}return\"\"}function j8(e,t,r){if(t)return xDe(cT(e),t,r?z1:J1);let i=Hl(e),o=i.lastIndexOf(\".\");return o>=0?i.substring(o):\"\"}function ADe(e,t){let r=e.substring(0,t),i=e.substring(t).split(_s);return i.length&&!Os(i)&&i.pop(),[r,...i]}function Ou(e,t=\"\"){return e=vi(t,e),ADe(e,_p(e))}function T0(e){return e.length===0?\"\":(e[0]&&cu(e[0]))+e.slice(1).join(_s)}function Al(e){return e.indexOf(\"\\\\\")!==-1?e.replace(poe,_s):e}function sT(e){if(!vt(e))return[];let t=[e[0]];for(let r=1;r<e.length;r++){let i=e[r];if(!!i&&i!==\".\"){if(i===\"..\"){if(t.length>1){if(t[t.length-1]!==\"..\"){t.pop();continue}}else if(t[0])continue}t.push(i)}}return t}function vi(e,...t){e&&(e=Al(e));for(let r of t)!r||(r=Al(r),!e||_p(r)!==0?e=r:e=cu(e)+r);return e}function Fy(e,...t){return So(vt(t)?vi(e,...t):Al(e))}function _w(e,t){return sT(Ou(e,t))}function _a(e,t){return T0(_w(e,t))}function So(e){if(e=Al(e),!hw.test(e))return e;let t=e.replace(/\\/\\.\\//g,\"/\").replace(/^\\.\\//,\"\");if(t!==e&&(e=t,!hw.test(e)))return e;let r=T0(sT(Ou(e)));return r&&My(e)?cu(r):r}function CDe(e){return e.length===0?\"\":e.slice(1).join(_s)}function lj(e,t){return CDe(_w(e,t))}function Ts(e,t,r){let i=qp(e)?So(e):_a(e,t);return r(i)}function cT(e){return My(e)?e.substr(0,e.length-1):e}function cu(e){return My(e)?e:e+_s}function S0(e){return!rI(e)&&!zd(e)?\"./\"+e:e}function uj(e,t,r,i){let o=r!==void 0&&i!==void 0?j8(e,r,i):j8(e);return o?e.slice(0,e.length-o.length)+(na(t,\".\")?t:\".\"+t):e}function dj(e,t,r){if(e===t)return 0;if(e===void 0)return-1;if(t===void 0)return 1;let i=e.substring(0,_p(e)),o=t.substring(0,_p(t)),s=_8(i,o);if(s!==0)return s;let l=e.substring(i.length),f=t.substring(o.length);if(!hw.test(l)&&!hw.test(f))return r(l,f);let d=sT(Ou(e)),g=sT(Ou(t)),m=Math.min(d.length,g.length);for(let v=1;v<m;v++){let S=r(d[v],g[v]);if(S!==0)return S}return Es(d.length,g.length)}function IDe(e,t){return dj(e,t,su)}function LDe(e,t){return dj(e,t,_8)}function lT(e,t,r,i){return typeof r==\"string\"?(e=vi(r,e),t=vi(r,t)):typeof r==\"boolean\"&&(i=r),dj(e,t,p8(i))}function Gy(e,t,r,i){if(typeof r==\"string\"?(e=vi(r,e),t=vi(r,t)):typeof r==\"boolean\"&&(i=r),e===void 0||t===void 0)return!1;if(e===t)return!0;let o=sT(Ou(e)),s=sT(Ou(t));if(s.length<o.length)return!1;let l=i?z1:J1;for(let f=0;f<o.length;f++)if(!(f===0?z1:l)(o[f],s[f]))return!1;return!0}function fj(e,t,r){let i=r(e),o=r(t);return na(i,o+\"/\")||na(i,o+\"\\\\\")}function _j(e,t,r,i){let o=sT(Ou(e)),s=sT(Ou(t)),l;for(l=0;l<o.length&&l<s.length;l++){let g=i(o[l]),m=i(s[l]);if(!(l===0?z1:r)(g,m))break}if(l===0)return s;let f=s.slice(l),d=[];for(;l<o.length;l++)d.push(\"..\");return[\"\",...d,...f]}function Xp(e,t,r){L.assert(_p(e)>0==_p(t)>0,\"Paths must either both be absolute or both be relative\");let s=_j(e,t,(typeof r==\"boolean\"?r:!1)?z1:J1,typeof r==\"function\"?r:Ks);return T0(s)}function iI(e,t,r){return qp(e)?Z1(t,e,t,r,!1):e}function pw(e,t,r){return S0(Xp(ni(e),t,r))}function Z1(e,t,r,i,o){let s=_j(Fy(r,e),Fy(r,t),J1,i),l=s[0];if(o&&qp(l)){let f=l.charAt(0)===_s?\"file://\":\"file:///\";s[0]=f+l}return T0(s)}function Th(e,t){for(;;){let r=t(e);if(r!==void 0)return r;let i=ni(e);if(i===e)return;e=i}}function H8(e){return Oc(e,\"/node_modules\")}var _s,mw,pj,poe,hw,kDe=gt({\"src/compiler/path.ts\"(){\"use strict\";fa(),_s=\"/\",mw=\"\\\\\",pj=\"://\",poe=/\\\\/g,hw=/(?:\\/\\/)|(?:^|\\/)\\.\\.?(?:$|\\/)/}});function b(e,t,r,i,o,s,l){return{code:e,category:t,key:r,message:i,reportsUnnecessary:o,elidedInCompatabilityPyramid:s,reportsDeprecated:l}}var _,DDe=gt({\"src/compiler/diagnosticInformationMap.generated.ts\"(){\"use strict\";noe(),_={Unterminated_string_literal:b(1002,1,\"Unterminated_string_literal_1002\",\"Unterminated string literal.\"),Identifier_expected:b(1003,1,\"Identifier_expected_1003\",\"Identifier expected.\"),_0_expected:b(1005,1,\"_0_expected_1005\",\"'{0}' expected.\"),A_file_cannot_have_a_reference_to_itself:b(1006,1,\"A_file_cannot_have_a_reference_to_itself_1006\",\"A file cannot have a reference to itself.\"),The_parser_expected_to_find_a_1_to_match_the_0_token_here:b(1007,1,\"The_parser_expected_to_find_a_1_to_match_the_0_token_here_1007\",\"The parser expected to find a '{1}' to match the '{0}' token here.\"),Trailing_comma_not_allowed:b(1009,1,\"Trailing_comma_not_allowed_1009\",\"Trailing comma not allowed.\"),Asterisk_Slash_expected:b(1010,1,\"Asterisk_Slash_expected_1010\",\"'*/' expected.\"),An_element_access_expression_should_take_an_argument:b(1011,1,\"An_element_access_expression_should_take_an_argument_1011\",\"An element access expression should take an argument.\"),Unexpected_token:b(1012,1,\"Unexpected_token_1012\",\"Unexpected token.\"),A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma:b(1013,1,\"A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma_1013\",\"A rest parameter or binding pattern may not have a trailing comma.\"),A_rest_parameter_must_be_last_in_a_parameter_list:b(1014,1,\"A_rest_parameter_must_be_last_in_a_parameter_list_1014\",\"A rest parameter must be last in a parameter list.\"),Parameter_cannot_have_question_mark_and_initializer:b(1015,1,\"Parameter_cannot_have_question_mark_and_initializer_1015\",\"Parameter cannot have question mark and initializer.\"),A_required_parameter_cannot_follow_an_optional_parameter:b(1016,1,\"A_required_parameter_cannot_follow_an_optional_parameter_1016\",\"A required parameter cannot follow an optional parameter.\"),An_index_signature_cannot_have_a_rest_parameter:b(1017,1,\"An_index_signature_cannot_have_a_rest_parameter_1017\",\"An index signature cannot have a rest parameter.\"),An_index_signature_parameter_cannot_have_an_accessibility_modifier:b(1018,1,\"An_index_signature_parameter_cannot_have_an_accessibility_modifier_1018\",\"An index signature parameter cannot have an accessibility modifier.\"),An_index_signature_parameter_cannot_have_a_question_mark:b(1019,1,\"An_index_signature_parameter_cannot_have_a_question_mark_1019\",\"An index signature parameter cannot have a question mark.\"),An_index_signature_parameter_cannot_have_an_initializer:b(1020,1,\"An_index_signature_parameter_cannot_have_an_initializer_1020\",\"An index signature parameter cannot have an initializer.\"),An_index_signature_must_have_a_type_annotation:b(1021,1,\"An_index_signature_must_have_a_type_annotation_1021\",\"An index signature must have a type annotation.\"),An_index_signature_parameter_must_have_a_type_annotation:b(1022,1,\"An_index_signature_parameter_must_have_a_type_annotation_1022\",\"An index signature parameter must have a type annotation.\"),readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature:b(1024,1,\"readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature_1024\",\"'readonly' modifier can only appear on a property declaration or index signature.\"),An_index_signature_cannot_have_a_trailing_comma:b(1025,1,\"An_index_signature_cannot_have_a_trailing_comma_1025\",\"An index signature cannot have a trailing comma.\"),Accessibility_modifier_already_seen:b(1028,1,\"Accessibility_modifier_already_seen_1028\",\"Accessibility modifier already seen.\"),_0_modifier_must_precede_1_modifier:b(1029,1,\"_0_modifier_must_precede_1_modifier_1029\",\"'{0}' modifier must precede '{1}' modifier.\"),_0_modifier_already_seen:b(1030,1,\"_0_modifier_already_seen_1030\",\"'{0}' modifier already seen.\"),_0_modifier_cannot_appear_on_class_elements_of_this_kind:b(1031,1,\"_0_modifier_cannot_appear_on_class_elements_of_this_kind_1031\",\"'{0}' modifier cannot appear on class elements of this kind.\"),super_must_be_followed_by_an_argument_list_or_member_access:b(1034,1,\"super_must_be_followed_by_an_argument_list_or_member_access_1034\",\"'super' must be followed by an argument list or member access.\"),Only_ambient_modules_can_use_quoted_names:b(1035,1,\"Only_ambient_modules_can_use_quoted_names_1035\",\"Only ambient modules can use quoted names.\"),Statements_are_not_allowed_in_ambient_contexts:b(1036,1,\"Statements_are_not_allowed_in_ambient_contexts_1036\",\"Statements are not allowed in ambient contexts.\"),A_declare_modifier_cannot_be_used_in_an_already_ambient_context:b(1038,1,\"A_declare_modifier_cannot_be_used_in_an_already_ambient_context_1038\",\"A 'declare' modifier cannot be used in an already ambient context.\"),Initializers_are_not_allowed_in_ambient_contexts:b(1039,1,\"Initializers_are_not_allowed_in_ambient_contexts_1039\",\"Initializers are not allowed in ambient contexts.\"),_0_modifier_cannot_be_used_in_an_ambient_context:b(1040,1,\"_0_modifier_cannot_be_used_in_an_ambient_context_1040\",\"'{0}' modifier cannot be used in an ambient context.\"),_0_modifier_cannot_be_used_here:b(1042,1,\"_0_modifier_cannot_be_used_here_1042\",\"'{0}' modifier cannot be used here.\"),_0_modifier_cannot_appear_on_a_module_or_namespace_element:b(1044,1,\"_0_modifier_cannot_appear_on_a_module_or_namespace_element_1044\",\"'{0}' modifier cannot appear on a module or namespace element.\"),Top_level_declarations_in_d_ts_files_must_start_with_either_a_declare_or_export_modifier:b(1046,1,\"Top_level_declarations_in_d_ts_files_must_start_with_either_a_declare_or_export_modifier_1046\",\"Top-level declarations in .d.ts files must start with either a 'declare' or 'export' modifier.\"),A_rest_parameter_cannot_be_optional:b(1047,1,\"A_rest_parameter_cannot_be_optional_1047\",\"A rest parameter cannot be optional.\"),A_rest_parameter_cannot_have_an_initializer:b(1048,1,\"A_rest_parameter_cannot_have_an_initializer_1048\",\"A rest parameter cannot have an initializer.\"),A_set_accessor_must_have_exactly_one_parameter:b(1049,1,\"A_set_accessor_must_have_exactly_one_parameter_1049\",\"A 'set' accessor must have exactly one parameter.\"),A_set_accessor_cannot_have_an_optional_parameter:b(1051,1,\"A_set_accessor_cannot_have_an_optional_parameter_1051\",\"A 'set' accessor cannot have an optional parameter.\"),A_set_accessor_parameter_cannot_have_an_initializer:b(1052,1,\"A_set_accessor_parameter_cannot_have_an_initializer_1052\",\"A 'set' accessor parameter cannot have an initializer.\"),A_set_accessor_cannot_have_rest_parameter:b(1053,1,\"A_set_accessor_cannot_have_rest_parameter_1053\",\"A 'set' accessor cannot have rest parameter.\"),A_get_accessor_cannot_have_parameters:b(1054,1,\"A_get_accessor_cannot_have_parameters_1054\",\"A 'get' accessor cannot have parameters.\"),Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value:b(1055,1,\"Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Prom_1055\",\"Type '{0}' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.\"),Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher:b(1056,1,\"Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher_1056\",\"Accessors are only available when targeting ECMAScript 5 and higher.\"),The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:b(1058,1,\"The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_t_1058\",\"The return type of an async function must either be a valid promise or must not contain a callable 'then' member.\"),A_promise_must_have_a_then_method:b(1059,1,\"A_promise_must_have_a_then_method_1059\",\"A promise must have a 'then' method.\"),The_first_parameter_of_the_then_method_of_a_promise_must_be_a_callback:b(1060,1,\"The_first_parameter_of_the_then_method_of_a_promise_must_be_a_callback_1060\",\"The first parameter of the 'then' method of a promise must be a callback.\"),Enum_member_must_have_initializer:b(1061,1,\"Enum_member_must_have_initializer_1061\",\"Enum member must have initializer.\"),Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method:b(1062,1,\"Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062\",\"Type is referenced directly or indirectly in the fulfillment callback of its own 'then' method.\"),An_export_assignment_cannot_be_used_in_a_namespace:b(1063,1,\"An_export_assignment_cannot_be_used_in_a_namespace_1063\",\"An export assignment cannot be used in a namespace.\"),The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0:b(1064,1,\"The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_wri_1064\",\"The return type of an async function or method must be the global Promise<T> type. Did you mean to write 'Promise<{0}>'?\"),In_ambient_enum_declarations_member_initializer_must_be_constant_expression:b(1066,1,\"In_ambient_enum_declarations_member_initializer_must_be_constant_expression_1066\",\"In ambient enum declarations member initializer must be constant expression.\"),Unexpected_token_A_constructor_method_accessor_or_property_was_expected:b(1068,1,\"Unexpected_token_A_constructor_method_accessor_or_property_was_expected_1068\",\"Unexpected token. A constructor, method, accessor, or property was expected.\"),Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces:b(1069,1,\"Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces_1069\",\"Unexpected token. A type parameter name was expected without curly braces.\"),_0_modifier_cannot_appear_on_a_type_member:b(1070,1,\"_0_modifier_cannot_appear_on_a_type_member_1070\",\"'{0}' modifier cannot appear on a type member.\"),_0_modifier_cannot_appear_on_an_index_signature:b(1071,1,\"_0_modifier_cannot_appear_on_an_index_signature_1071\",\"'{0}' modifier cannot appear on an index signature.\"),A_0_modifier_cannot_be_used_with_an_import_declaration:b(1079,1,\"A_0_modifier_cannot_be_used_with_an_import_declaration_1079\",\"A '{0}' modifier cannot be used with an import declaration.\"),Invalid_reference_directive_syntax:b(1084,1,\"Invalid_reference_directive_syntax_1084\",\"Invalid 'reference' directive syntax.\"),Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher_Use_the_syntax_0:b(1085,1,\"Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher_Use_the_syntax_0_1085\",\"Octal literals are not available when targeting ECMAScript 5 and higher. Use the syntax '{0}'.\"),_0_modifier_cannot_appear_on_a_constructor_declaration:b(1089,1,\"_0_modifier_cannot_appear_on_a_constructor_declaration_1089\",\"'{0}' modifier cannot appear on a constructor declaration.\"),_0_modifier_cannot_appear_on_a_parameter:b(1090,1,\"_0_modifier_cannot_appear_on_a_parameter_1090\",\"'{0}' modifier cannot appear on a parameter.\"),Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement:b(1091,1,\"Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement_1091\",\"Only a single variable declaration is allowed in a 'for...in' statement.\"),Type_parameters_cannot_appear_on_a_constructor_declaration:b(1092,1,\"Type_parameters_cannot_appear_on_a_constructor_declaration_1092\",\"Type parameters cannot appear on a constructor declaration.\"),Type_annotation_cannot_appear_on_a_constructor_declaration:b(1093,1,\"Type_annotation_cannot_appear_on_a_constructor_declaration_1093\",\"Type annotation cannot appear on a constructor declaration.\"),An_accessor_cannot_have_type_parameters:b(1094,1,\"An_accessor_cannot_have_type_parameters_1094\",\"An accessor cannot have type parameters.\"),A_set_accessor_cannot_have_a_return_type_annotation:b(1095,1,\"A_set_accessor_cannot_have_a_return_type_annotation_1095\",\"A 'set' accessor cannot have a return type annotation.\"),An_index_signature_must_have_exactly_one_parameter:b(1096,1,\"An_index_signature_must_have_exactly_one_parameter_1096\",\"An index signature must have exactly one parameter.\"),_0_list_cannot_be_empty:b(1097,1,\"_0_list_cannot_be_empty_1097\",\"'{0}' list cannot be empty.\"),Type_parameter_list_cannot_be_empty:b(1098,1,\"Type_parameter_list_cannot_be_empty_1098\",\"Type parameter list cannot be empty.\"),Type_argument_list_cannot_be_empty:b(1099,1,\"Type_argument_list_cannot_be_empty_1099\",\"Type argument list cannot be empty.\"),Invalid_use_of_0_in_strict_mode:b(1100,1,\"Invalid_use_of_0_in_strict_mode_1100\",\"Invalid use of '{0}' in strict mode.\"),with_statements_are_not_allowed_in_strict_mode:b(1101,1,\"with_statements_are_not_allowed_in_strict_mode_1101\",\"'with' statements are not allowed in strict mode.\"),delete_cannot_be_called_on_an_identifier_in_strict_mode:b(1102,1,\"delete_cannot_be_called_on_an_identifier_in_strict_mode_1102\",\"'delete' cannot be called on an identifier in strict mode.\"),for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules:b(1103,1,\"for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules_1103\",\"'for await' loops are only allowed within async functions and at the top levels of modules.\"),A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement:b(1104,1,\"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement_1104\",\"A 'continue' statement can only be used within an enclosing iteration statement.\"),A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement:b(1105,1,\"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement_1105\",\"A 'break' statement can only be used within an enclosing iteration or switch statement.\"),The_left_hand_side_of_a_for_of_statement_may_not_be_async:b(1106,1,\"The_left_hand_side_of_a_for_of_statement_may_not_be_async_1106\",\"The left-hand side of a 'for...of' statement may not be 'async'.\"),Jump_target_cannot_cross_function_boundary:b(1107,1,\"Jump_target_cannot_cross_function_boundary_1107\",\"Jump target cannot cross function boundary.\"),A_return_statement_can_only_be_used_within_a_function_body:b(1108,1,\"A_return_statement_can_only_be_used_within_a_function_body_1108\",\"A 'return' statement can only be used within a function body.\"),Expression_expected:b(1109,1,\"Expression_expected_1109\",\"Expression expected.\"),Type_expected:b(1110,1,\"Type_expected_1110\",\"Type expected.\"),A_default_clause_cannot_appear_more_than_once_in_a_switch_statement:b(1113,1,\"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement_1113\",\"A 'default' clause cannot appear more than once in a 'switch' statement.\"),Duplicate_label_0:b(1114,1,\"Duplicate_label_0_1114\",\"Duplicate label '{0}'.\"),A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement:b(1115,1,\"A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement_1115\",\"A 'continue' statement can only jump to a label of an enclosing iteration statement.\"),A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement:b(1116,1,\"A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement_1116\",\"A 'break' statement can only jump to a label of an enclosing statement.\"),An_object_literal_cannot_have_multiple_properties_with_the_same_name:b(1117,1,\"An_object_literal_cannot_have_multiple_properties_with_the_same_name_1117\",\"An object literal cannot have multiple properties with the same name.\"),An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name:b(1118,1,\"An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name_1118\",\"An object literal cannot have multiple get/set accessors with the same name.\"),An_object_literal_cannot_have_property_and_accessor_with_the_same_name:b(1119,1,\"An_object_literal_cannot_have_property_and_accessor_with_the_same_name_1119\",\"An object literal cannot have property and accessor with the same name.\"),An_export_assignment_cannot_have_modifiers:b(1120,1,\"An_export_assignment_cannot_have_modifiers_1120\",\"An export assignment cannot have modifiers.\"),Octal_literals_are_not_allowed_in_strict_mode:b(1121,1,\"Octal_literals_are_not_allowed_in_strict_mode_1121\",\"Octal literals are not allowed in strict mode.\"),Variable_declaration_list_cannot_be_empty:b(1123,1,\"Variable_declaration_list_cannot_be_empty_1123\",\"Variable declaration list cannot be empty.\"),Digit_expected:b(1124,1,\"Digit_expected_1124\",\"Digit expected.\"),Hexadecimal_digit_expected:b(1125,1,\"Hexadecimal_digit_expected_1125\",\"Hexadecimal digit expected.\"),Unexpected_end_of_text:b(1126,1,\"Unexpected_end_of_text_1126\",\"Unexpected end of text.\"),Invalid_character:b(1127,1,\"Invalid_character_1127\",\"Invalid character.\"),Declaration_or_statement_expected:b(1128,1,\"Declaration_or_statement_expected_1128\",\"Declaration or statement expected.\"),Statement_expected:b(1129,1,\"Statement_expected_1129\",\"Statement expected.\"),case_or_default_expected:b(1130,1,\"case_or_default_expected_1130\",\"'case' or 'default' expected.\"),Property_or_signature_expected:b(1131,1,\"Property_or_signature_expected_1131\",\"Property or signature expected.\"),Enum_member_expected:b(1132,1,\"Enum_member_expected_1132\",\"Enum member expected.\"),Variable_declaration_expected:b(1134,1,\"Variable_declaration_expected_1134\",\"Variable declaration expected.\"),Argument_expression_expected:b(1135,1,\"Argument_expression_expected_1135\",\"Argument expression expected.\"),Property_assignment_expected:b(1136,1,\"Property_assignment_expected_1136\",\"Property assignment expected.\"),Expression_or_comma_expected:b(1137,1,\"Expression_or_comma_expected_1137\",\"Expression or comma expected.\"),Parameter_declaration_expected:b(1138,1,\"Parameter_declaration_expected_1138\",\"Parameter declaration expected.\"),Type_parameter_declaration_expected:b(1139,1,\"Type_parameter_declaration_expected_1139\",\"Type parameter declaration expected.\"),Type_argument_expected:b(1140,1,\"Type_argument_expected_1140\",\"Type argument expected.\"),String_literal_expected:b(1141,1,\"String_literal_expected_1141\",\"String literal expected.\"),Line_break_not_permitted_here:b(1142,1,\"Line_break_not_permitted_here_1142\",\"Line break not permitted here.\"),or_expected:b(1144,1,\"or_expected_1144\",\"'{' or ';' expected.\"),or_JSX_element_expected:b(1145,1,\"or_JSX_element_expected_1145\",\"'{' or JSX element expected.\"),Declaration_expected:b(1146,1,\"Declaration_expected_1146\",\"Declaration expected.\"),Import_declarations_in_a_namespace_cannot_reference_a_module:b(1147,1,\"Import_declarations_in_a_namespace_cannot_reference_a_module_1147\",\"Import declarations in a namespace cannot reference a module.\"),Cannot_use_imports_exports_or_module_augmentations_when_module_is_none:b(1148,1,\"Cannot_use_imports_exports_or_module_augmentations_when_module_is_none_1148\",\"Cannot use imports, exports, or module augmentations when '--module' is 'none'.\"),File_name_0_differs_from_already_included_file_name_1_only_in_casing:b(1149,1,\"File_name_0_differs_from_already_included_file_name_1_only_in_casing_1149\",\"File name '{0}' differs from already included file name '{1}' only in casing.\"),const_declarations_must_be_initialized:b(1155,1,\"const_declarations_must_be_initialized_1155\",\"'const' declarations must be initialized.\"),const_declarations_can_only_be_declared_inside_a_block:b(1156,1,\"const_declarations_can_only_be_declared_inside_a_block_1156\",\"'const' declarations can only be declared inside a block.\"),let_declarations_can_only_be_declared_inside_a_block:b(1157,1,\"let_declarations_can_only_be_declared_inside_a_block_1157\",\"'let' declarations can only be declared inside a block.\"),Unterminated_template_literal:b(1160,1,\"Unterminated_template_literal_1160\",\"Unterminated template literal.\"),Unterminated_regular_expression_literal:b(1161,1,\"Unterminated_regular_expression_literal_1161\",\"Unterminated regular expression literal.\"),An_object_member_cannot_be_declared_optional:b(1162,1,\"An_object_member_cannot_be_declared_optional_1162\",\"An object member cannot be declared optional.\"),A_yield_expression_is_only_allowed_in_a_generator_body:b(1163,1,\"A_yield_expression_is_only_allowed_in_a_generator_body_1163\",\"A 'yield' expression is only allowed in a generator body.\"),Computed_property_names_are_not_allowed_in_enums:b(1164,1,\"Computed_property_names_are_not_allowed_in_enums_1164\",\"Computed property names are not allowed in enums.\"),A_computed_property_name_in_an_ambient_context_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type:b(1165,1,\"A_computed_property_name_in_an_ambient_context_must_refer_to_an_expression_whose_type_is_a_literal_t_1165\",\"A computed property name in an ambient context must refer to an expression whose type is a literal type or a 'unique symbol' type.\"),A_computed_property_name_in_a_class_property_declaration_must_have_a_simple_literal_type_or_a_unique_symbol_type:b(1166,1,\"A_computed_property_name_in_a_class_property_declaration_must_have_a_simple_literal_type_or_a_unique_1166\",\"A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type.\"),A_computed_property_name_in_a_method_overload_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type:b(1168,1,\"A_computed_property_name_in_a_method_overload_must_refer_to_an_expression_whose_type_is_a_literal_ty_1168\",\"A computed property name in a method overload must refer to an expression whose type is a literal type or a 'unique symbol' type.\"),A_computed_property_name_in_an_interface_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type:b(1169,1,\"A_computed_property_name_in_an_interface_must_refer_to_an_expression_whose_type_is_a_literal_type_or_1169\",\"A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type.\"),A_computed_property_name_in_a_type_literal_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type:b(1170,1,\"A_computed_property_name_in_a_type_literal_must_refer_to_an_expression_whose_type_is_a_literal_type__1170\",\"A computed property name in a type literal must refer to an expression whose type is a literal type or a 'unique symbol' type.\"),A_comma_expression_is_not_allowed_in_a_computed_property_name:b(1171,1,\"A_comma_expression_is_not_allowed_in_a_computed_property_name_1171\",\"A comma expression is not allowed in a computed property name.\"),extends_clause_already_seen:b(1172,1,\"extends_clause_already_seen_1172\",\"'extends' clause already seen.\"),extends_clause_must_precede_implements_clause:b(1173,1,\"extends_clause_must_precede_implements_clause_1173\",\"'extends' clause must precede 'implements' clause.\"),Classes_can_only_extend_a_single_class:b(1174,1,\"Classes_can_only_extend_a_single_class_1174\",\"Classes can only extend a single class.\"),implements_clause_already_seen:b(1175,1,\"implements_clause_already_seen_1175\",\"'implements' clause already seen.\"),Interface_declaration_cannot_have_implements_clause:b(1176,1,\"Interface_declaration_cannot_have_implements_clause_1176\",\"Interface declaration cannot have 'implements' clause.\"),Binary_digit_expected:b(1177,1,\"Binary_digit_expected_1177\",\"Binary digit expected.\"),Octal_digit_expected:b(1178,1,\"Octal_digit_expected_1178\",\"Octal digit expected.\"),Unexpected_token_expected:b(1179,1,\"Unexpected_token_expected_1179\",\"Unexpected token. '{' expected.\"),Property_destructuring_pattern_expected:b(1180,1,\"Property_destructuring_pattern_expected_1180\",\"Property destructuring pattern expected.\"),Array_element_destructuring_pattern_expected:b(1181,1,\"Array_element_destructuring_pattern_expected_1181\",\"Array element destructuring pattern expected.\"),A_destructuring_declaration_must_have_an_initializer:b(1182,1,\"A_destructuring_declaration_must_have_an_initializer_1182\",\"A destructuring declaration must have an initializer.\"),An_implementation_cannot_be_declared_in_ambient_contexts:b(1183,1,\"An_implementation_cannot_be_declared_in_ambient_contexts_1183\",\"An implementation cannot be declared in ambient contexts.\"),Modifiers_cannot_appear_here:b(1184,1,\"Modifiers_cannot_appear_here_1184\",\"Modifiers cannot appear here.\"),Merge_conflict_marker_encountered:b(1185,1,\"Merge_conflict_marker_encountered_1185\",\"Merge conflict marker encountered.\"),A_rest_element_cannot_have_an_initializer:b(1186,1,\"A_rest_element_cannot_have_an_initializer_1186\",\"A rest element cannot have an initializer.\"),A_parameter_property_may_not_be_declared_using_a_binding_pattern:b(1187,1,\"A_parameter_property_may_not_be_declared_using_a_binding_pattern_1187\",\"A parameter property may not be declared using a binding pattern.\"),Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement:b(1188,1,\"Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement_1188\",\"Only a single variable declaration is allowed in a 'for...of' statement.\"),The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer:b(1189,1,\"The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer_1189\",\"The variable declaration of a 'for...in' statement cannot have an initializer.\"),The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer:b(1190,1,\"The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer_1190\",\"The variable declaration of a 'for...of' statement cannot have an initializer.\"),An_import_declaration_cannot_have_modifiers:b(1191,1,\"An_import_declaration_cannot_have_modifiers_1191\",\"An import declaration cannot have modifiers.\"),Module_0_has_no_default_export:b(1192,1,\"Module_0_has_no_default_export_1192\",\"Module '{0}' has no default export.\"),An_export_declaration_cannot_have_modifiers:b(1193,1,\"An_export_declaration_cannot_have_modifiers_1193\",\"An export declaration cannot have modifiers.\"),Export_declarations_are_not_permitted_in_a_namespace:b(1194,1,\"Export_declarations_are_not_permitted_in_a_namespace_1194\",\"Export declarations are not permitted in a namespace.\"),export_Asterisk_does_not_re_export_a_default:b(1195,1,\"export_Asterisk_does_not_re_export_a_default_1195\",\"'export *' does not re-export a default.\"),Catch_clause_variable_type_annotation_must_be_any_or_unknown_if_specified:b(1196,1,\"Catch_clause_variable_type_annotation_must_be_any_or_unknown_if_specified_1196\",\"Catch clause variable type annotation must be 'any' or 'unknown' if specified.\"),Catch_clause_variable_cannot_have_an_initializer:b(1197,1,\"Catch_clause_variable_cannot_have_an_initializer_1197\",\"Catch clause variable cannot have an initializer.\"),An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive:b(1198,1,\"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive_1198\",\"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\"),Unterminated_Unicode_escape_sequence:b(1199,1,\"Unterminated_Unicode_escape_sequence_1199\",\"Unterminated Unicode escape sequence.\"),Line_terminator_not_permitted_before_arrow:b(1200,1,\"Line_terminator_not_permitted_before_arrow_1200\",\"Line terminator not permitted before arrow.\"),Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead:b(1202,1,\"Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_1202\",`Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"', 'import d from \"mod\"', or another module format instead.`),Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or_another_module_format_instead:b(1203,1,\"Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or__1203\",\"Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead.\"),Re_exporting_a_type_when_0_is_enabled_requires_using_export_type:b(1205,1,\"Re_exporting_a_type_when_0_is_enabled_requires_using_export_type_1205\",\"Re-exporting a type when '{0}' is enabled requires using 'export type'.\"),Decorators_are_not_valid_here:b(1206,1,\"Decorators_are_not_valid_here_1206\",\"Decorators are not valid here.\"),Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name:b(1207,1,\"Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name_1207\",\"Decorators cannot be applied to multiple get/set accessors of the same name.\"),Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0:b(1209,1,\"Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0_1209\",\"Invalid optional chain from new expression. Did you mean to call '{0}()'?\"),Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of_0_For_more_information_see_https_Colon_Slash_Slashdeveloper_mozilla_org_Slashen_US_Slashdocs_SlashWeb_SlashJavaScript_SlashReference_SlashStrict_mode:b(1210,1,\"Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of__1210\",\"Code contained in a class is evaluated in JavaScript's strict mode which does not allow this use of '{0}'. For more information, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode.\"),A_class_declaration_without_the_default_modifier_must_have_a_name:b(1211,1,\"A_class_declaration_without_the_default_modifier_must_have_a_name_1211\",\"A class declaration without the 'default' modifier must have a name.\"),Identifier_expected_0_is_a_reserved_word_in_strict_mode:b(1212,1,\"Identifier_expected_0_is_a_reserved_word_in_strict_mode_1212\",\"Identifier expected. '{0}' is a reserved word in strict mode.\"),Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode:b(1213,1,\"Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_stric_1213\",\"Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode.\"),Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode:b(1214,1,\"Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode_1214\",\"Identifier expected. '{0}' is a reserved word in strict mode. Modules are automatically in strict mode.\"),Invalid_use_of_0_Modules_are_automatically_in_strict_mode:b(1215,1,\"Invalid_use_of_0_Modules_are_automatically_in_strict_mode_1215\",\"Invalid use of '{0}'. Modules are automatically in strict mode.\"),Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules:b(1216,1,\"Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules_1216\",\"Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules.\"),Export_assignment_is_not_supported_when_module_flag_is_system:b(1218,1,\"Export_assignment_is_not_supported_when_module_flag_is_system_1218\",\"Export assignment is not supported when '--module' flag is 'system'.\"),Generators_are_not_allowed_in_an_ambient_context:b(1221,1,\"Generators_are_not_allowed_in_an_ambient_context_1221\",\"Generators are not allowed in an ambient context.\"),An_overload_signature_cannot_be_declared_as_a_generator:b(1222,1,\"An_overload_signature_cannot_be_declared_as_a_generator_1222\",\"An overload signature cannot be declared as a generator.\"),_0_tag_already_specified:b(1223,1,\"_0_tag_already_specified_1223\",\"'{0}' tag already specified.\"),Signature_0_must_be_a_type_predicate:b(1224,1,\"Signature_0_must_be_a_type_predicate_1224\",\"Signature '{0}' must be a type predicate.\"),Cannot_find_parameter_0:b(1225,1,\"Cannot_find_parameter_0_1225\",\"Cannot find parameter '{0}'.\"),Type_predicate_0_is_not_assignable_to_1:b(1226,1,\"Type_predicate_0_is_not_assignable_to_1_1226\",\"Type predicate '{0}' is not assignable to '{1}'.\"),Parameter_0_is_not_in_the_same_position_as_parameter_1:b(1227,1,\"Parameter_0_is_not_in_the_same_position_as_parameter_1_1227\",\"Parameter '{0}' is not in the same position as parameter '{1}'.\"),A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods:b(1228,1,\"A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods_1228\",\"A type predicate is only allowed in return type position for functions and methods.\"),A_type_predicate_cannot_reference_a_rest_parameter:b(1229,1,\"A_type_predicate_cannot_reference_a_rest_parameter_1229\",\"A type predicate cannot reference a rest parameter.\"),A_type_predicate_cannot_reference_element_0_in_a_binding_pattern:b(1230,1,\"A_type_predicate_cannot_reference_element_0_in_a_binding_pattern_1230\",\"A type predicate cannot reference element '{0}' in a binding pattern.\"),An_export_assignment_must_be_at_the_top_level_of_a_file_or_module_declaration:b(1231,1,\"An_export_assignment_must_be_at_the_top_level_of_a_file_or_module_declaration_1231\",\"An export assignment must be at the top level of a file or module declaration.\"),An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module:b(1232,1,\"An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module_1232\",\"An import declaration can only be used at the top level of a namespace or module.\"),An_export_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module:b(1233,1,\"An_export_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module_1233\",\"An export declaration can only be used at the top level of a namespace or module.\"),An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file:b(1234,1,\"An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file_1234\",\"An ambient module declaration is only allowed at the top level in a file.\"),A_namespace_declaration_is_only_allowed_at_the_top_level_of_a_namespace_or_module:b(1235,1,\"A_namespace_declaration_is_only_allowed_at_the_top_level_of_a_namespace_or_module_1235\",\"A namespace declaration is only allowed at the top level of a namespace or module.\"),The_return_type_of_a_property_decorator_function_must_be_either_void_or_any:b(1236,1,\"The_return_type_of_a_property_decorator_function_must_be_either_void_or_any_1236\",\"The return type of a property decorator function must be either 'void' or 'any'.\"),The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any:b(1237,1,\"The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any_1237\",\"The return type of a parameter decorator function must be either 'void' or 'any'.\"),Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression:b(1238,1,\"Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression_1238\",\"Unable to resolve signature of class decorator when called as an expression.\"),Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression:b(1239,1,\"Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression_1239\",\"Unable to resolve signature of parameter decorator when called as an expression.\"),Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression:b(1240,1,\"Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression_1240\",\"Unable to resolve signature of property decorator when called as an expression.\"),Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression:b(1241,1,\"Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression_1241\",\"Unable to resolve signature of method decorator when called as an expression.\"),abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration:b(1242,1,\"abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration_1242\",\"'abstract' modifier can only appear on a class, method, or property declaration.\"),_0_modifier_cannot_be_used_with_1_modifier:b(1243,1,\"_0_modifier_cannot_be_used_with_1_modifier_1243\",\"'{0}' modifier cannot be used with '{1}' modifier.\"),Abstract_methods_can_only_appear_within_an_abstract_class:b(1244,1,\"Abstract_methods_can_only_appear_within_an_abstract_class_1244\",\"Abstract methods can only appear within an abstract class.\"),Method_0_cannot_have_an_implementation_because_it_is_marked_abstract:b(1245,1,\"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract_1245\",\"Method '{0}' cannot have an implementation because it is marked abstract.\"),An_interface_property_cannot_have_an_initializer:b(1246,1,\"An_interface_property_cannot_have_an_initializer_1246\",\"An interface property cannot have an initializer.\"),A_type_literal_property_cannot_have_an_initializer:b(1247,1,\"A_type_literal_property_cannot_have_an_initializer_1247\",\"A type literal property cannot have an initializer.\"),A_class_member_cannot_have_the_0_keyword:b(1248,1,\"A_class_member_cannot_have_the_0_keyword_1248\",\"A class member cannot have the '{0}' keyword.\"),A_decorator_can_only_decorate_a_method_implementation_not_an_overload:b(1249,1,\"A_decorator_can_only_decorate_a_method_implementation_not_an_overload_1249\",\"A decorator can only decorate a method implementation, not an overload.\"),Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5:b(1250,1,\"Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_1250\",\"Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'.\"),Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_definitions_are_automatically_in_strict_mode:b(1251,1,\"Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_d_1251\",\"Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Class definitions are automatically in strict mode.\"),Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_are_automatically_in_strict_mode:b(1252,1,\"Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_1252\",\"Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Modules are automatically in strict mode.\"),A_const_initializer_in_an_ambient_context_must_be_a_string_or_numeric_literal_or_literal_enum_reference:b(1254,1,\"A_const_initializer_in_an_ambient_context_must_be_a_string_or_numeric_literal_or_literal_enum_refere_1254\",\"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.\"),A_definite_assignment_assertion_is_not_permitted_in_this_context:b(1255,1,\"A_definite_assignment_assertion_is_not_permitted_in_this_context_1255\",\"A definite assignment assertion '!' is not permitted in this context.\"),A_required_element_cannot_follow_an_optional_element:b(1257,1,\"A_required_element_cannot_follow_an_optional_element_1257\",\"A required element cannot follow an optional element.\"),A_default_export_must_be_at_the_top_level_of_a_file_or_module_declaration:b(1258,1,\"A_default_export_must_be_at_the_top_level_of_a_file_or_module_declaration_1258\",\"A default export must be at the top level of a file or module declaration.\"),Module_0_can_only_be_default_imported_using_the_1_flag:b(1259,1,\"Module_0_can_only_be_default_imported_using_the_1_flag_1259\",\"Module '{0}' can only be default-imported using the '{1}' flag\"),Keywords_cannot_contain_escape_characters:b(1260,1,\"Keywords_cannot_contain_escape_characters_1260\",\"Keywords cannot contain escape characters.\"),Already_included_file_name_0_differs_from_file_name_1_only_in_casing:b(1261,1,\"Already_included_file_name_0_differs_from_file_name_1_only_in_casing_1261\",\"Already included file name '{0}' differs from file name '{1}' only in casing.\"),Identifier_expected_0_is_a_reserved_word_at_the_top_level_of_a_module:b(1262,1,\"Identifier_expected_0_is_a_reserved_word_at_the_top_level_of_a_module_1262\",\"Identifier expected. '{0}' is a reserved word at the top-level of a module.\"),Declarations_with_initializers_cannot_also_have_definite_assignment_assertions:b(1263,1,\"Declarations_with_initializers_cannot_also_have_definite_assignment_assertions_1263\",\"Declarations with initializers cannot also have definite assignment assertions.\"),Declarations_with_definite_assignment_assertions_must_also_have_type_annotations:b(1264,1,\"Declarations_with_definite_assignment_assertions_must_also_have_type_annotations_1264\",\"Declarations with definite assignment assertions must also have type annotations.\"),A_rest_element_cannot_follow_another_rest_element:b(1265,1,\"A_rest_element_cannot_follow_another_rest_element_1265\",\"A rest element cannot follow another rest element.\"),An_optional_element_cannot_follow_a_rest_element:b(1266,1,\"An_optional_element_cannot_follow_a_rest_element_1266\",\"An optional element cannot follow a rest element.\"),Property_0_cannot_have_an_initializer_because_it_is_marked_abstract:b(1267,1,\"Property_0_cannot_have_an_initializer_because_it_is_marked_abstract_1267\",\"Property '{0}' cannot have an initializer because it is marked abstract.\"),An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type:b(1268,1,\"An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type_1268\",\"An index signature parameter type must be 'string', 'number', 'symbol', or a template literal type.\"),Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled:b(1269,1,\"Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled_1269\",\"Cannot use 'export import' on a type or type-only namespace when '{0}' is enabled.\"),Decorator_function_return_type_0_is_not_assignable_to_type_1:b(1270,1,\"Decorator_function_return_type_0_is_not_assignable_to_type_1_1270\",\"Decorator function return type '{0}' is not assignable to type '{1}'.\"),Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any:b(1271,1,\"Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any_1271\",\"Decorator function return type is '{0}' but is expected to be 'void' or 'any'.\"),A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled:b(1272,1,\"A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_w_1272\",\"A type referenced in a decorated signature must be imported with 'import type' or a namespace import when 'isolatedModules' and 'emitDecoratorMetadata' are enabled.\"),_0_modifier_cannot_appear_on_a_type_parameter:b(1273,1,\"_0_modifier_cannot_appear_on_a_type_parameter_1273\",\"'{0}' modifier cannot appear on a type parameter\"),_0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias:b(1274,1,\"_0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias_1274\",\"'{0}' modifier can only appear on a type parameter of a class, interface or type alias\"),accessor_modifier_can_only_appear_on_a_property_declaration:b(1275,1,\"accessor_modifier_can_only_appear_on_a_property_declaration_1275\",\"'accessor' modifier can only appear on a property declaration.\"),An_accessor_property_cannot_be_declared_optional:b(1276,1,\"An_accessor_property_cannot_be_declared_optional_1276\",\"An 'accessor' property cannot be declared optional.\"),_0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class:b(1277,1,\"_0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class_1277\",\"'{0}' modifier can only appear on a type parameter of a function, method or class\"),The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0:b(1278,1,\"The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0_1278\",\"The runtime will invoke the decorator with {1} arguments, but the decorator expects {0}.\"),The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0:b(1279,1,\"The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0_1279\",\"The runtime will invoke the decorator with {1} arguments, but the decorator expects at least {0}.\"),Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to_be_a_global_script_set_moduleDetection_to_force_or_add_an_empty_export_statement:b(1280,1,\"Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to__1280\",\"Namespaces are not allowed in global script files when '{0}' is enabled. If this file is not intended to be a global script, set 'moduleDetection' to 'force' or add an empty 'export {}' statement.\"),Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead:b(1281,1,\"Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead_1281\",\"Cannot access '{0}' from another file without qualification when '{1}' is enabled. Use '{2}' instead.\"),An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type:b(1282,1,\"An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers__1282\",\"An 'export =' declaration must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type.\"),An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration:b(1283,1,\"An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolve_1283\",\"An 'export =' declaration must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration.\"),An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type:b(1284,1,\"An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_1284\",\"An 'export default' must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type.\"),An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration:b(1285,1,\"An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_1285\",\"An 'export default' must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration.\"),ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled:b(1286,1,\"ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled_1286\",\"ESM syntax is not allowed in a CommonJS module when 'verbatimModuleSyntax' is enabled.\"),A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled:b(1287,1,\"A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimM_1287\",\"A top-level 'export' modifier cannot be used on value declarations in a CommonJS module when 'verbatimModuleSyntax' is enabled.\"),An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabled:b(1288,1,\"An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabl_1288\",\"An import alias cannot resolve to a type or type-only declaration when 'verbatimModuleSyntax' is enabled.\"),with_statements_are_not_allowed_in_an_async_function_block:b(1300,1,\"with_statements_are_not_allowed_in_an_async_function_block_1300\",\"'with' statements are not allowed in an async function block.\"),await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules:b(1308,1,\"await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules_1308\",\"'await' expressions are only allowed within async functions and at the top levels of modules.\"),The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level:b(1309,1,\"The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level_1309\",\"The current file is a CommonJS module and cannot use 'await' at the top level.\"),Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_part_of_a_destructuring_pattern:b(1312,1,\"Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_1312\",\"Did you mean to use a ':'? An '=' can only follow a property name when the containing object literal is part of a destructuring pattern.\"),The_body_of_an_if_statement_cannot_be_the_empty_statement:b(1313,1,\"The_body_of_an_if_statement_cannot_be_the_empty_statement_1313\",\"The body of an 'if' statement cannot be the empty statement.\"),Global_module_exports_may_only_appear_in_module_files:b(1314,1,\"Global_module_exports_may_only_appear_in_module_files_1314\",\"Global module exports may only appear in module files.\"),Global_module_exports_may_only_appear_in_declaration_files:b(1315,1,\"Global_module_exports_may_only_appear_in_declaration_files_1315\",\"Global module exports may only appear in declaration files.\"),Global_module_exports_may_only_appear_at_top_level:b(1316,1,\"Global_module_exports_may_only_appear_at_top_level_1316\",\"Global module exports may only appear at top level.\"),A_parameter_property_cannot_be_declared_using_a_rest_parameter:b(1317,1,\"A_parameter_property_cannot_be_declared_using_a_rest_parameter_1317\",\"A parameter property cannot be declared using a rest parameter.\"),An_abstract_accessor_cannot_have_an_implementation:b(1318,1,\"An_abstract_accessor_cannot_have_an_implementation_1318\",\"An abstract accessor cannot have an implementation.\"),A_default_export_can_only_be_used_in_an_ECMAScript_style_module:b(1319,1,\"A_default_export_can_only_be_used_in_an_ECMAScript_style_module_1319\",\"A default export can only be used in an ECMAScript-style module.\"),Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:b(1320,1,\"Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member_1320\",\"Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member.\"),Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:b(1321,1,\"Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_cal_1321\",\"Type of 'yield' operand in an async generator must either be a valid promise or must not contain a callable 'then' member.\"),Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:b(1322,1,\"Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_con_1322\",\"Type of iterated elements of a 'yield*' operand must either be a valid promise or must not contain a callable 'then' member.\"),Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_es2020_es2022_esnext_commonjs_amd_system_umd_node16_or_nodenext:b(1323,1,\"Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_es2020_es2022_esnext_commonjs_amd__1323\",\"Dynamic imports are only supported when the '--module' flag is set to 'es2020', 'es2022', 'esnext', 'commonjs', 'amd', 'system', 'umd', 'node16', or 'nodenext'.\"),Dynamic_imports_only_support_a_second_argument_when_the_module_option_is_set_to_esnext_node16_or_nodenext:b(1324,1,\"Dynamic_imports_only_support_a_second_argument_when_the_module_option_is_set_to_esnext_node16_or_nod_1324\",\"Dynamic imports only support a second argument when the '--module' option is set to 'esnext', 'node16', or 'nodenext'.\"),Argument_of_dynamic_import_cannot_be_spread_element:b(1325,1,\"Argument_of_dynamic_import_cannot_be_spread_element_1325\",\"Argument of dynamic import cannot be spread element.\"),This_use_of_import_is_invalid_import_calls_can_be_written_but_they_must_have_parentheses_and_cannot_have_type_arguments:b(1326,1,\"This_use_of_import_is_invalid_import_calls_can_be_written_but_they_must_have_parentheses_and_cannot__1326\",\"This use of 'import' is invalid. 'import()' calls can be written, but they must have parentheses and cannot have type arguments.\"),String_literal_with_double_quotes_expected:b(1327,1,\"String_literal_with_double_quotes_expected_1327\",\"String literal with double quotes expected.\"),Property_value_can_only_be_string_literal_numeric_literal_true_false_null_object_literal_or_array_literal:b(1328,1,\"Property_value_can_only_be_string_literal_numeric_literal_true_false_null_object_literal_or_array_li_1328\",\"Property value can only be string literal, numeric literal, 'true', 'false', 'null', object literal or array literal.\"),_0_accepts_too_few_arguments_to_be_used_as_a_decorator_here_Did_you_mean_to_call_it_first_and_write_0:b(1329,1,\"_0_accepts_too_few_arguments_to_be_used_as_a_decorator_here_Did_you_mean_to_call_it_first_and_write__1329\",\"'{0}' accepts too few arguments to be used as a decorator here. Did you mean to call it first and write '@{0}()'?\"),A_property_of_an_interface_or_type_literal_whose_type_is_a_unique_symbol_type_must_be_readonly:b(1330,1,\"A_property_of_an_interface_or_type_literal_whose_type_is_a_unique_symbol_type_must_be_readonly_1330\",\"A property of an interface or type literal whose type is a 'unique symbol' type must be 'readonly'.\"),A_property_of_a_class_whose_type_is_a_unique_symbol_type_must_be_both_static_and_readonly:b(1331,1,\"A_property_of_a_class_whose_type_is_a_unique_symbol_type_must_be_both_static_and_readonly_1331\",\"A property of a class whose type is a 'unique symbol' type must be both 'static' and 'readonly'.\"),A_variable_whose_type_is_a_unique_symbol_type_must_be_const:b(1332,1,\"A_variable_whose_type_is_a_unique_symbol_type_must_be_const_1332\",\"A variable whose type is a 'unique symbol' type must be 'const'.\"),unique_symbol_types_may_not_be_used_on_a_variable_declaration_with_a_binding_name:b(1333,1,\"unique_symbol_types_may_not_be_used_on_a_variable_declaration_with_a_binding_name_1333\",\"'unique symbol' types may not be used on a variable declaration with a binding name.\"),unique_symbol_types_are_only_allowed_on_variables_in_a_variable_statement:b(1334,1,\"unique_symbol_types_are_only_allowed_on_variables_in_a_variable_statement_1334\",\"'unique symbol' types are only allowed on variables in a variable statement.\"),unique_symbol_types_are_not_allowed_here:b(1335,1,\"unique_symbol_types_are_not_allowed_here_1335\",\"'unique symbol' types are not allowed here.\"),An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead:b(1337,1,\"An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_o_1337\",\"An index signature parameter type cannot be a literal type or generic type. Consider using a mapped object type instead.\"),infer_declarations_are_only_permitted_in_the_extends_clause_of_a_conditional_type:b(1338,1,\"infer_declarations_are_only_permitted_in_the_extends_clause_of_a_conditional_type_1338\",\"'infer' declarations are only permitted in the 'extends' clause of a conditional type.\"),Module_0_does_not_refer_to_a_value_but_is_used_as_a_value_here:b(1339,1,\"Module_0_does_not_refer_to_a_value_but_is_used_as_a_value_here_1339\",\"Module '{0}' does not refer to a value, but is used as a value here.\"),Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0:b(1340,1,\"Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0_1340\",\"Module '{0}' does not refer to a type, but is used as a type here. Did you mean 'typeof import('{0}')'?\"),Class_constructor_may_not_be_an_accessor:b(1341,1,\"Class_constructor_may_not_be_an_accessor_1341\",\"Class constructor may not be an accessor.\"),The_import_meta_meta_property_is_only_allowed_when_the_module_option_is_es2020_es2022_esnext_system_node16_or_nodenext:b(1343,1,\"The_import_meta_meta_property_is_only_allowed_when_the_module_option_is_es2020_es2022_esnext_system__1343\",\"The 'import.meta' meta-property is only allowed when the '--module' option is 'es2020', 'es2022', 'esnext', 'system', 'node16', or 'nodenext'.\"),A_label_is_not_allowed_here:b(1344,1,\"A_label_is_not_allowed_here_1344\",\"'A label is not allowed here.\"),An_expression_of_type_void_cannot_be_tested_for_truthiness:b(1345,1,\"An_expression_of_type_void_cannot_be_tested_for_truthiness_1345\",\"An expression of type 'void' cannot be tested for truthiness.\"),This_parameter_is_not_allowed_with_use_strict_directive:b(1346,1,\"This_parameter_is_not_allowed_with_use_strict_directive_1346\",\"This parameter is not allowed with 'use strict' directive.\"),use_strict_directive_cannot_be_used_with_non_simple_parameter_list:b(1347,1,\"use_strict_directive_cannot_be_used_with_non_simple_parameter_list_1347\",\"'use strict' directive cannot be used with non-simple parameter list.\"),Non_simple_parameter_declared_here:b(1348,1,\"Non_simple_parameter_declared_here_1348\",\"Non-simple parameter declared here.\"),use_strict_directive_used_here:b(1349,1,\"use_strict_directive_used_here_1349\",\"'use strict' directive used here.\"),Print_the_final_configuration_instead_of_building:b(1350,3,\"Print_the_final_configuration_instead_of_building_1350\",\"Print the final configuration instead of building.\"),An_identifier_or_keyword_cannot_immediately_follow_a_numeric_literal:b(1351,1,\"An_identifier_or_keyword_cannot_immediately_follow_a_numeric_literal_1351\",\"An identifier or keyword cannot immediately follow a numeric literal.\"),A_bigint_literal_cannot_use_exponential_notation:b(1352,1,\"A_bigint_literal_cannot_use_exponential_notation_1352\",\"A bigint literal cannot use exponential notation.\"),A_bigint_literal_must_be_an_integer:b(1353,1,\"A_bigint_literal_must_be_an_integer_1353\",\"A bigint literal must be an integer.\"),readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types:b(1354,1,\"readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types_1354\",\"'readonly' type modifier is only permitted on array and tuple literal types.\"),A_const_assertions_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array_or_object_literals:b(1355,1,\"A_const_assertions_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array__1355\",\"A 'const' assertions can only be applied to references to enum members, or string, number, boolean, array, or object literals.\"),Did_you_mean_to_mark_this_function_as_async:b(1356,1,\"Did_you_mean_to_mark_this_function_as_async_1356\",\"Did you mean to mark this function as 'async'?\"),An_enum_member_name_must_be_followed_by_a_or:b(1357,1,\"An_enum_member_name_must_be_followed_by_a_or_1357\",\"An enum member name must be followed by a ',', '=', or '}'.\"),Tagged_template_expressions_are_not_permitted_in_an_optional_chain:b(1358,1,\"Tagged_template_expressions_are_not_permitted_in_an_optional_chain_1358\",\"Tagged template expressions are not permitted in an optional chain.\"),Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here:b(1359,1,\"Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here_1359\",\"Identifier expected. '{0}' is a reserved word that cannot be used here.\"),Type_0_does_not_satisfy_the_expected_type_1:b(1360,1,\"Type_0_does_not_satisfy_the_expected_type_1_1360\",\"Type '{0}' does not satisfy the expected type '{1}'.\"),_0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type:b(1361,1,\"_0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type_1361\",\"'{0}' cannot be used as a value because it was imported using 'import type'.\"),_0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type:b(1362,1,\"_0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type_1362\",\"'{0}' cannot be used as a value because it was exported using 'export type'.\"),A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both:b(1363,1,\"A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both_1363\",\"A type-only import can specify a default import or named bindings, but not both.\"),Convert_to_type_only_export:b(1364,3,\"Convert_to_type_only_export_1364\",\"Convert to type-only export\"),Convert_all_re_exported_types_to_type_only_exports:b(1365,3,\"Convert_all_re_exported_types_to_type_only_exports_1365\",\"Convert all re-exported types to type-only exports\"),Split_into_two_separate_import_declarations:b(1366,3,\"Split_into_two_separate_import_declarations_1366\",\"Split into two separate import declarations\"),Split_all_invalid_type_only_imports:b(1367,3,\"Split_all_invalid_type_only_imports_1367\",\"Split all invalid type-only imports\"),Class_constructor_may_not_be_a_generator:b(1368,1,\"Class_constructor_may_not_be_a_generator_1368\",\"Class constructor may not be a generator.\"),Did_you_mean_0:b(1369,3,\"Did_you_mean_0_1369\",\"Did you mean '{0}'?\"),This_import_is_never_used_as_a_value_and_must_use_import_type_because_importsNotUsedAsValues_is_set_to_error:b(1371,1,\"This_import_is_never_used_as_a_value_and_must_use_import_type_because_importsNotUsedAsValues_is_set__1371\",\"This import is never used as a value and must use 'import type' because 'importsNotUsedAsValues' is set to 'error'.\"),Convert_to_type_only_import:b(1373,3,\"Convert_to_type_only_import_1373\",\"Convert to type-only import\"),Convert_all_imports_not_used_as_a_value_to_type_only_imports:b(1374,3,\"Convert_all_imports_not_used_as_a_value_to_type_only_imports_1374\",\"Convert all imports not used as a value to type-only imports\"),await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module:b(1375,1,\"await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_fi_1375\",\"'await' expressions are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.\"),_0_was_imported_here:b(1376,3,\"_0_was_imported_here_1376\",\"'{0}' was imported here.\"),_0_was_exported_here:b(1377,3,\"_0_was_exported_here_1377\",\"'{0}' was exported here.\"),Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher:b(1378,1,\"Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_n_1378\",\"Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher.\"),An_import_alias_cannot_reference_a_declaration_that_was_exported_using_export_type:b(1379,1,\"An_import_alias_cannot_reference_a_declaration_that_was_exported_using_export_type_1379\",\"An import alias cannot reference a declaration that was exported using 'export type'.\"),An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type:b(1380,1,\"An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type_1380\",\"An import alias cannot reference a declaration that was imported using 'import type'.\"),Unexpected_token_Did_you_mean_or_rbrace:b(1381,1,\"Unexpected_token_Did_you_mean_or_rbrace_1381\",\"Unexpected token. Did you mean `{'}'}` or `&rbrace;`?\"),Unexpected_token_Did_you_mean_or_gt:b(1382,1,\"Unexpected_token_Did_you_mean_or_gt_1382\",\"Unexpected token. Did you mean `{'>'}` or `&gt;`?\"),Function_type_notation_must_be_parenthesized_when_used_in_a_union_type:b(1385,1,\"Function_type_notation_must_be_parenthesized_when_used_in_a_union_type_1385\",\"Function type notation must be parenthesized when used in a union type.\"),Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type:b(1386,1,\"Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type_1386\",\"Constructor type notation must be parenthesized when used in a union type.\"),Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type:b(1387,1,\"Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type_1387\",\"Function type notation must be parenthesized when used in an intersection type.\"),Constructor_type_notation_must_be_parenthesized_when_used_in_an_intersection_type:b(1388,1,\"Constructor_type_notation_must_be_parenthesized_when_used_in_an_intersection_type_1388\",\"Constructor type notation must be parenthesized when used in an intersection type.\"),_0_is_not_allowed_as_a_variable_declaration_name:b(1389,1,\"_0_is_not_allowed_as_a_variable_declaration_name_1389\",\"'{0}' is not allowed as a variable declaration name.\"),_0_is_not_allowed_as_a_parameter_name:b(1390,1,\"_0_is_not_allowed_as_a_parameter_name_1390\",\"'{0}' is not allowed as a parameter name.\"),An_import_alias_cannot_use_import_type:b(1392,1,\"An_import_alias_cannot_use_import_type_1392\",\"An import alias cannot use 'import type'\"),Imported_via_0_from_file_1:b(1393,3,\"Imported_via_0_from_file_1_1393\",\"Imported via {0} from file '{1}'\"),Imported_via_0_from_file_1_with_packageId_2:b(1394,3,\"Imported_via_0_from_file_1_with_packageId_2_1394\",\"Imported via {0} from file '{1}' with packageId '{2}'\"),Imported_via_0_from_file_1_to_import_importHelpers_as_specified_in_compilerOptions:b(1395,3,\"Imported_via_0_from_file_1_to_import_importHelpers_as_specified_in_compilerOptions_1395\",\"Imported via {0} from file '{1}' to import 'importHelpers' as specified in compilerOptions\"),Imported_via_0_from_file_1_with_packageId_2_to_import_importHelpers_as_specified_in_compilerOptions:b(1396,3,\"Imported_via_0_from_file_1_with_packageId_2_to_import_importHelpers_as_specified_in_compilerOptions_1396\",\"Imported via {0} from file '{1}' with packageId '{2}' to import 'importHelpers' as specified in compilerOptions\"),Imported_via_0_from_file_1_to_import_jsx_and_jsxs_factory_functions:b(1397,3,\"Imported_via_0_from_file_1_to_import_jsx_and_jsxs_factory_functions_1397\",\"Imported via {0} from file '{1}' to import 'jsx' and 'jsxs' factory functions\"),Imported_via_0_from_file_1_with_packageId_2_to_import_jsx_and_jsxs_factory_functions:b(1398,3,\"Imported_via_0_from_file_1_with_packageId_2_to_import_jsx_and_jsxs_factory_functions_1398\",\"Imported via {0} from file '{1}' with packageId '{2}' to import 'jsx' and 'jsxs' factory functions\"),File_is_included_via_import_here:b(1399,3,\"File_is_included_via_import_here_1399\",\"File is included via import here.\"),Referenced_via_0_from_file_1:b(1400,3,\"Referenced_via_0_from_file_1_1400\",\"Referenced via '{0}' from file '{1}'\"),File_is_included_via_reference_here:b(1401,3,\"File_is_included_via_reference_here_1401\",\"File is included via reference here.\"),Type_library_referenced_via_0_from_file_1:b(1402,3,\"Type_library_referenced_via_0_from_file_1_1402\",\"Type library referenced via '{0}' from file '{1}'\"),Type_library_referenced_via_0_from_file_1_with_packageId_2:b(1403,3,\"Type_library_referenced_via_0_from_file_1_with_packageId_2_1403\",\"Type library referenced via '{0}' from file '{1}' with packageId '{2}'\"),File_is_included_via_type_library_reference_here:b(1404,3,\"File_is_included_via_type_library_reference_here_1404\",\"File is included via type library reference here.\"),Library_referenced_via_0_from_file_1:b(1405,3,\"Library_referenced_via_0_from_file_1_1405\",\"Library referenced via '{0}' from file '{1}'\"),File_is_included_via_library_reference_here:b(1406,3,\"File_is_included_via_library_reference_here_1406\",\"File is included via library reference here.\"),Matched_by_include_pattern_0_in_1:b(1407,3,\"Matched_by_include_pattern_0_in_1_1407\",\"Matched by include pattern '{0}' in '{1}'\"),File_is_matched_by_include_pattern_specified_here:b(1408,3,\"File_is_matched_by_include_pattern_specified_here_1408\",\"File is matched by include pattern specified here.\"),Part_of_files_list_in_tsconfig_json:b(1409,3,\"Part_of_files_list_in_tsconfig_json_1409\",\"Part of 'files' list in tsconfig.json\"),File_is_matched_by_files_list_specified_here:b(1410,3,\"File_is_matched_by_files_list_specified_here_1410\",\"File is matched by 'files' list specified here.\"),Output_from_referenced_project_0_included_because_1_specified:b(1411,3,\"Output_from_referenced_project_0_included_because_1_specified_1411\",\"Output from referenced project '{0}' included because '{1}' specified\"),Output_from_referenced_project_0_included_because_module_is_specified_as_none:b(1412,3,\"Output_from_referenced_project_0_included_because_module_is_specified_as_none_1412\",\"Output from referenced project '{0}' included because '--module' is specified as 'none'\"),File_is_output_from_referenced_project_specified_here:b(1413,3,\"File_is_output_from_referenced_project_specified_here_1413\",\"File is output from referenced project specified here.\"),Source_from_referenced_project_0_included_because_1_specified:b(1414,3,\"Source_from_referenced_project_0_included_because_1_specified_1414\",\"Source from referenced project '{0}' included because '{1}' specified\"),Source_from_referenced_project_0_included_because_module_is_specified_as_none:b(1415,3,\"Source_from_referenced_project_0_included_because_module_is_specified_as_none_1415\",\"Source from referenced project '{0}' included because '--module' is specified as 'none'\"),File_is_source_from_referenced_project_specified_here:b(1416,3,\"File_is_source_from_referenced_project_specified_here_1416\",\"File is source from referenced project specified here.\"),Entry_point_of_type_library_0_specified_in_compilerOptions:b(1417,3,\"Entry_point_of_type_library_0_specified_in_compilerOptions_1417\",\"Entry point of type library '{0}' specified in compilerOptions\"),Entry_point_of_type_library_0_specified_in_compilerOptions_with_packageId_1:b(1418,3,\"Entry_point_of_type_library_0_specified_in_compilerOptions_with_packageId_1_1418\",\"Entry point of type library '{0}' specified in compilerOptions with packageId '{1}'\"),File_is_entry_point_of_type_library_specified_here:b(1419,3,\"File_is_entry_point_of_type_library_specified_here_1419\",\"File is entry point of type library specified here.\"),Entry_point_for_implicit_type_library_0:b(1420,3,\"Entry_point_for_implicit_type_library_0_1420\",\"Entry point for implicit type library '{0}'\"),Entry_point_for_implicit_type_library_0_with_packageId_1:b(1421,3,\"Entry_point_for_implicit_type_library_0_with_packageId_1_1421\",\"Entry point for implicit type library '{0}' with packageId '{1}'\"),Library_0_specified_in_compilerOptions:b(1422,3,\"Library_0_specified_in_compilerOptions_1422\",\"Library '{0}' specified in compilerOptions\"),File_is_library_specified_here:b(1423,3,\"File_is_library_specified_here_1423\",\"File is library specified here.\"),Default_library:b(1424,3,\"Default_library_1424\",\"Default library\"),Default_library_for_target_0:b(1425,3,\"Default_library_for_target_0_1425\",\"Default library for target '{0}'\"),File_is_default_library_for_target_specified_here:b(1426,3,\"File_is_default_library_for_target_specified_here_1426\",\"File is default library for target specified here.\"),Root_file_specified_for_compilation:b(1427,3,\"Root_file_specified_for_compilation_1427\",\"Root file specified for compilation\"),File_is_output_of_project_reference_source_0:b(1428,3,\"File_is_output_of_project_reference_source_0_1428\",\"File is output of project reference source '{0}'\"),File_redirects_to_file_0:b(1429,3,\"File_redirects_to_file_0_1429\",\"File redirects to file '{0}'\"),The_file_is_in_the_program_because_Colon:b(1430,3,\"The_file_is_in_the_program_because_Colon_1430\",\"The file is in the program because:\"),for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module:b(1431,1,\"for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_1431\",\"'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.\"),Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher:b(1432,1,\"Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_nod_1432\",\"Top-level 'for await' loops are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher.\"),Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters:b(1433,1,\"Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters_1433\",\"Neither decorators nor modifiers may be applied to 'this' parameters.\"),Unexpected_keyword_or_identifier:b(1434,1,\"Unexpected_keyword_or_identifier_1434\",\"Unexpected keyword or identifier.\"),Unknown_keyword_or_identifier_Did_you_mean_0:b(1435,1,\"Unknown_keyword_or_identifier_Did_you_mean_0_1435\",\"Unknown keyword or identifier. Did you mean '{0}'?\"),Decorators_must_precede_the_name_and_all_keywords_of_property_declarations:b(1436,1,\"Decorators_must_precede_the_name_and_all_keywords_of_property_declarations_1436\",\"Decorators must precede the name and all keywords of property declarations.\"),Namespace_must_be_given_a_name:b(1437,1,\"Namespace_must_be_given_a_name_1437\",\"Namespace must be given a name.\"),Interface_must_be_given_a_name:b(1438,1,\"Interface_must_be_given_a_name_1438\",\"Interface must be given a name.\"),Type_alias_must_be_given_a_name:b(1439,1,\"Type_alias_must_be_given_a_name_1439\",\"Type alias must be given a name.\"),Variable_declaration_not_allowed_at_this_location:b(1440,1,\"Variable_declaration_not_allowed_at_this_location_1440\",\"Variable declaration not allowed at this location.\"),Cannot_start_a_function_call_in_a_type_annotation:b(1441,1,\"Cannot_start_a_function_call_in_a_type_annotation_1441\",\"Cannot start a function call in a type annotation.\"),Expected_for_property_initializer:b(1442,1,\"Expected_for_property_initializer_1442\",\"Expected '=' for property initializer.\"),Module_declaration_names_may_only_use_or_quoted_strings:b(1443,1,\"Module_declaration_names_may_only_use_or_quoted_strings_1443\",`Module declaration names may only use ' or \" quoted strings.`),_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled:b(1444,1,\"_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedMod_1444\",\"'{0}' is a type and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled.\"),_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled:b(1446,1,\"_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveVa_1446\",\"'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled.\"),_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_enabled:b(1448,1,\"_0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_1448\",\"'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when '{1}' is enabled.\"),Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed:b(1449,3,\"Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed_1449\",\"Preserve unused imported values in the JavaScript output that would otherwise be removed.\"),Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments:b(1450,3,\"Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments_1450\",\"Dynamic imports can only accept a module specifier and an optional assertion as arguments\"),Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression:b(1451,1,\"Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member__1451\",\"Private identifiers are only allowed in class bodies and may only be used as part of a class member declaration, property access, or on the left-hand-side of an 'in' expression\"),resolution_mode_assertions_are_only_supported_when_moduleResolution_is_node16_or_nodenext:b(1452,1,\"resolution_mode_assertions_are_only_supported_when_moduleResolution_is_node16_or_nodenext_1452\",\"'resolution-mode' assertions are only supported when `moduleResolution` is `node16` or `nodenext`.\"),resolution_mode_should_be_either_require_or_import:b(1453,1,\"resolution_mode_should_be_either_require_or_import_1453\",\"`resolution-mode` should be either `require` or `import`.\"),resolution_mode_can_only_be_set_for_type_only_imports:b(1454,1,\"resolution_mode_can_only_be_set_for_type_only_imports_1454\",\"`resolution-mode` can only be set for type-only imports.\"),resolution_mode_is_the_only_valid_key_for_type_import_assertions:b(1455,1,\"resolution_mode_is_the_only_valid_key_for_type_import_assertions_1455\",\"`resolution-mode` is the only valid key for type import assertions.\"),Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require:b(1456,1,\"Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require_1456\",\"Type import assertions should have exactly one key - `resolution-mode` - with value `import` or `require`.\"),Matched_by_default_include_pattern_Asterisk_Asterisk_Slash_Asterisk:b(1457,3,\"Matched_by_default_include_pattern_Asterisk_Asterisk_Slash_Asterisk_1457\",\"Matched by default include pattern '**/*'\"),File_is_ECMAScript_module_because_0_has_field_type_with_value_module:b(1458,3,\"File_is_ECMAScript_module_because_0_has_field_type_with_value_module_1458\",`File is ECMAScript module because '{0}' has field \"type\" with value \"module\"`),File_is_CommonJS_module_because_0_has_field_type_whose_value_is_not_module:b(1459,3,\"File_is_CommonJS_module_because_0_has_field_type_whose_value_is_not_module_1459\",`File is CommonJS module because '{0}' has field \"type\" whose value is not \"module\"`),File_is_CommonJS_module_because_0_does_not_have_field_type:b(1460,3,\"File_is_CommonJS_module_because_0_does_not_have_field_type_1460\",`File is CommonJS module because '{0}' does not have field \"type\"`),File_is_CommonJS_module_because_package_json_was_not_found:b(1461,3,\"File_is_CommonJS_module_because_package_json_was_not_found_1461\",\"File is CommonJS module because 'package.json' was not found\"),The_import_meta_meta_property_is_not_allowed_in_files_which_will_build_into_CommonJS_output:b(1470,1,\"The_import_meta_meta_property_is_not_allowed_in_files_which_will_build_into_CommonJS_output_1470\",\"The 'import.meta' meta-property is not allowed in files which will build into CommonJS output.\"),Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_with_require_Use_an_ECMAScript_import_instead:b(1471,1,\"Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_c_1471\",\"Module '{0}' cannot be imported using this construct. The specifier only resolves to an ES module, which cannot be imported with 'require'. Use an ECMAScript import instead.\"),catch_or_finally_expected:b(1472,1,\"catch_or_finally_expected_1472\",\"'catch' or 'finally' expected.\"),An_import_declaration_can_only_be_used_at_the_top_level_of_a_module:b(1473,1,\"An_import_declaration_can_only_be_used_at_the_top_level_of_a_module_1473\",\"An import declaration can only be used at the top level of a module.\"),An_export_declaration_can_only_be_used_at_the_top_level_of_a_module:b(1474,1,\"An_export_declaration_can_only_be_used_at_the_top_level_of_a_module_1474\",\"An export declaration can only be used at the top level of a module.\"),Control_what_method_is_used_to_detect_module_format_JS_files:b(1475,3,\"Control_what_method_is_used_to_detect_module_format_JS_files_1475\",\"Control what method is used to detect module-format JS files.\"),auto_Colon_Treat_files_with_imports_exports_import_meta_jsx_with_jsx_Colon_react_jsx_or_esm_format_with_module_Colon_node16_as_modules:b(1476,3,\"auto_Colon_Treat_files_with_imports_exports_import_meta_jsx_with_jsx_Colon_react_jsx_or_esm_format_w_1476\",'\"auto\": Treat files with imports, exports, import.meta, jsx (with jsx: react-jsx), or esm format (with module: node16+) as modules.'),An_instantiation_expression_cannot_be_followed_by_a_property_access:b(1477,1,\"An_instantiation_expression_cannot_be_followed_by_a_property_access_1477\",\"An instantiation expression cannot be followed by a property access.\"),Identifier_or_string_literal_expected:b(1478,1,\"Identifier_or_string_literal_expected_1478\",\"Identifier or string literal expected.\"),The_current_file_is_a_CommonJS_module_whose_imports_will_produce_require_calls_however_the_referenced_file_is_an_ECMAScript_module_and_cannot_be_imported_with_require_Consider_writing_a_dynamic_import_0_call_instead:b(1479,1,\"The_current_file_is_a_CommonJS_module_whose_imports_will_produce_require_calls_however_the_reference_1479\",`The current file is a CommonJS module whose imports will produce 'require' calls; however, the referenced file is an ECMAScript module and cannot be imported with 'require'. Consider writing a dynamic 'import(\"{0}\")' call instead.`),To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_create_a_local_package_json_file_with_type_Colon_module:b(1480,3,\"To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_create_a_local_packag_1480\",'To convert this file to an ECMAScript module, change its file extension to \\'{0}\\' or create a local package.json file with `{ \"type\": \"module\" }`.'),To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Colon_module_to_1:b(1481,3,\"To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Co_1481\",`To convert this file to an ECMAScript module, change its file extension to '{0}', or add the field \\`\"type\": \"module\"\\` to '{1}'.`),To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0:b(1482,3,\"To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0_1482\",'To convert this file to an ECMAScript module, add the field `\"type\": \"module\"` to \\'{0}\\'.'),To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module:b(1483,3,\"To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module_1483\",'To convert this file to an ECMAScript module, create a local package.json file with `{ \"type\": \"module\" }`.'),_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled:b(1484,1,\"_0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled_1484\",\"'{0}' is a type and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled.\"),_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled:b(1485,1,\"_0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimMo_1485\",\"'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled.\"),Decorator_used_before_export_here:b(1486,1,\"Decorator_used_before_export_here_1486\",\"Decorator used before 'export' here.\"),The_types_of_0_are_incompatible_between_these_types:b(2200,1,\"The_types_of_0_are_incompatible_between_these_types_2200\",\"The types of '{0}' are incompatible between these types.\"),The_types_returned_by_0_are_incompatible_between_these_types:b(2201,1,\"The_types_returned_by_0_are_incompatible_between_these_types_2201\",\"The types returned by '{0}' are incompatible between these types.\"),Call_signature_return_types_0_and_1_are_incompatible:b(2202,1,\"Call_signature_return_types_0_and_1_are_incompatible_2202\",\"Call signature return types '{0}' and '{1}' are incompatible.\",void 0,!0),Construct_signature_return_types_0_and_1_are_incompatible:b(2203,1,\"Construct_signature_return_types_0_and_1_are_incompatible_2203\",\"Construct signature return types '{0}' and '{1}' are incompatible.\",void 0,!0),Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1:b(2204,1,\"Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1_2204\",\"Call signatures with no arguments have incompatible return types '{0}' and '{1}'.\",void 0,!0),Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1:b(2205,1,\"Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1_2205\",\"Construct signatures with no arguments have incompatible return types '{0}' and '{1}'.\",void 0,!0),The_type_modifier_cannot_be_used_on_a_named_import_when_import_type_is_used_on_its_import_statement:b(2206,1,\"The_type_modifier_cannot_be_used_on_a_named_import_when_import_type_is_used_on_its_import_statement_2206\",\"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.\"),The_type_modifier_cannot_be_used_on_a_named_export_when_export_type_is_used_on_its_export_statement:b(2207,1,\"The_type_modifier_cannot_be_used_on_a_named_export_when_export_type_is_used_on_its_export_statement_2207\",\"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.\"),This_type_parameter_might_need_an_extends_0_constraint:b(2208,1,\"This_type_parameter_might_need_an_extends_0_constraint_2208\",\"This type parameter might need an `extends {0}` constraint.\"),The_project_root_is_ambiguous_but_is_required_to_resolve_export_map_entry_0_in_file_1_Supply_the_rootDir_compiler_option_to_disambiguate:b(2209,1,\"The_project_root_is_ambiguous_but_is_required_to_resolve_export_map_entry_0_in_file_1_Supply_the_roo_2209\",\"The project root is ambiguous, but is required to resolve export map entry '{0}' in file '{1}'. Supply the `rootDir` compiler option to disambiguate.\"),The_project_root_is_ambiguous_but_is_required_to_resolve_import_map_entry_0_in_file_1_Supply_the_rootDir_compiler_option_to_disambiguate:b(2210,1,\"The_project_root_is_ambiguous_but_is_required_to_resolve_import_map_entry_0_in_file_1_Supply_the_roo_2210\",\"The project root is ambiguous, but is required to resolve import map entry '{0}' in file '{1}'. Supply the `rootDir` compiler option to disambiguate.\"),Add_extends_constraint:b(2211,3,\"Add_extends_constraint_2211\",\"Add `extends` constraint.\"),Add_extends_constraint_to_all_type_parameters:b(2212,3,\"Add_extends_constraint_to_all_type_parameters_2212\",\"Add `extends` constraint to all type parameters\"),Duplicate_identifier_0:b(2300,1,\"Duplicate_identifier_0_2300\",\"Duplicate identifier '{0}'.\"),Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor:b(2301,1,\"Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor_2301\",\"Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor.\"),Static_members_cannot_reference_class_type_parameters:b(2302,1,\"Static_members_cannot_reference_class_type_parameters_2302\",\"Static members cannot reference class type parameters.\"),Circular_definition_of_import_alias_0:b(2303,1,\"Circular_definition_of_import_alias_0_2303\",\"Circular definition of import alias '{0}'.\"),Cannot_find_name_0:b(2304,1,\"Cannot_find_name_0_2304\",\"Cannot find name '{0}'.\"),Module_0_has_no_exported_member_1:b(2305,1,\"Module_0_has_no_exported_member_1_2305\",\"Module '{0}' has no exported member '{1}'.\"),File_0_is_not_a_module:b(2306,1,\"File_0_is_not_a_module_2306\",\"File '{0}' is not a module.\"),Cannot_find_module_0_or_its_corresponding_type_declarations:b(2307,1,\"Cannot_find_module_0_or_its_corresponding_type_declarations_2307\",\"Cannot find module '{0}' or its corresponding type declarations.\"),Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity:b(2308,1,\"Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambig_2308\",\"Module {0} has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity.\"),An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements:b(2309,1,\"An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements_2309\",\"An export assignment cannot be used in a module with other exported elements.\"),Type_0_recursively_references_itself_as_a_base_type:b(2310,1,\"Type_0_recursively_references_itself_as_a_base_type_2310\",\"Type '{0}' recursively references itself as a base type.\"),Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function:b(2311,1,\"Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function_2311\",\"Cannot find name '{0}'. Did you mean to write this in an async function?\"),An_interface_can_only_extend_an_object_type_or_intersection_of_object_types_with_statically_known_members:b(2312,1,\"An_interface_can_only_extend_an_object_type_or_intersection_of_object_types_with_statically_known_me_2312\",\"An interface can only extend an object type or intersection of object types with statically known members.\"),Type_parameter_0_has_a_circular_constraint:b(2313,1,\"Type_parameter_0_has_a_circular_constraint_2313\",\"Type parameter '{0}' has a circular constraint.\"),Generic_type_0_requires_1_type_argument_s:b(2314,1,\"Generic_type_0_requires_1_type_argument_s_2314\",\"Generic type '{0}' requires {1} type argument(s).\"),Type_0_is_not_generic:b(2315,1,\"Type_0_is_not_generic_2315\",\"Type '{0}' is not generic.\"),Global_type_0_must_be_a_class_or_interface_type:b(2316,1,\"Global_type_0_must_be_a_class_or_interface_type_2316\",\"Global type '{0}' must be a class or interface type.\"),Global_type_0_must_have_1_type_parameter_s:b(2317,1,\"Global_type_0_must_have_1_type_parameter_s_2317\",\"Global type '{0}' must have {1} type parameter(s).\"),Cannot_find_global_type_0:b(2318,1,\"Cannot_find_global_type_0_2318\",\"Cannot find global type '{0}'.\"),Named_property_0_of_types_1_and_2_are_not_identical:b(2319,1,\"Named_property_0_of_types_1_and_2_are_not_identical_2319\",\"Named property '{0}' of types '{1}' and '{2}' are not identical.\"),Interface_0_cannot_simultaneously_extend_types_1_and_2:b(2320,1,\"Interface_0_cannot_simultaneously_extend_types_1_and_2_2320\",\"Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'.\"),Excessive_stack_depth_comparing_types_0_and_1:b(2321,1,\"Excessive_stack_depth_comparing_types_0_and_1_2321\",\"Excessive stack depth comparing types '{0}' and '{1}'.\"),Type_0_is_not_assignable_to_type_1:b(2322,1,\"Type_0_is_not_assignable_to_type_1_2322\",\"Type '{0}' is not assignable to type '{1}'.\"),Cannot_redeclare_exported_variable_0:b(2323,1,\"Cannot_redeclare_exported_variable_0_2323\",\"Cannot redeclare exported variable '{0}'.\"),Property_0_is_missing_in_type_1:b(2324,1,\"Property_0_is_missing_in_type_1_2324\",\"Property '{0}' is missing in type '{1}'.\"),Property_0_is_private_in_type_1_but_not_in_type_2:b(2325,1,\"Property_0_is_private_in_type_1_but_not_in_type_2_2325\",\"Property '{0}' is private in type '{1}' but not in type '{2}'.\"),Types_of_property_0_are_incompatible:b(2326,1,\"Types_of_property_0_are_incompatible_2326\",\"Types of property '{0}' are incompatible.\"),Property_0_is_optional_in_type_1_but_required_in_type_2:b(2327,1,\"Property_0_is_optional_in_type_1_but_required_in_type_2_2327\",\"Property '{0}' is optional in type '{1}' but required in type '{2}'.\"),Types_of_parameters_0_and_1_are_incompatible:b(2328,1,\"Types_of_parameters_0_and_1_are_incompatible_2328\",\"Types of parameters '{0}' and '{1}' are incompatible.\"),Index_signature_for_type_0_is_missing_in_type_1:b(2329,1,\"Index_signature_for_type_0_is_missing_in_type_1_2329\",\"Index signature for type '{0}' is missing in type '{1}'.\"),_0_and_1_index_signatures_are_incompatible:b(2330,1,\"_0_and_1_index_signatures_are_incompatible_2330\",\"'{0}' and '{1}' index signatures are incompatible.\"),this_cannot_be_referenced_in_a_module_or_namespace_body:b(2331,1,\"this_cannot_be_referenced_in_a_module_or_namespace_body_2331\",\"'this' cannot be referenced in a module or namespace body.\"),this_cannot_be_referenced_in_current_location:b(2332,1,\"this_cannot_be_referenced_in_current_location_2332\",\"'this' cannot be referenced in current location.\"),this_cannot_be_referenced_in_constructor_arguments:b(2333,1,\"this_cannot_be_referenced_in_constructor_arguments_2333\",\"'this' cannot be referenced in constructor arguments.\"),this_cannot_be_referenced_in_a_static_property_initializer:b(2334,1,\"this_cannot_be_referenced_in_a_static_property_initializer_2334\",\"'this' cannot be referenced in a static property initializer.\"),super_can_only_be_referenced_in_a_derived_class:b(2335,1,\"super_can_only_be_referenced_in_a_derived_class_2335\",\"'super' can only be referenced in a derived class.\"),super_cannot_be_referenced_in_constructor_arguments:b(2336,1,\"super_cannot_be_referenced_in_constructor_arguments_2336\",\"'super' cannot be referenced in constructor arguments.\"),Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors:b(2337,1,\"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors_2337\",\"Super calls are not permitted outside constructors or in nested functions inside constructors.\"),super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class:b(2338,1,\"super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_der_2338\",\"'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.\"),Property_0_does_not_exist_on_type_1:b(2339,1,\"Property_0_does_not_exist_on_type_1_2339\",\"Property '{0}' does not exist on type '{1}'.\"),Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword:b(2340,1,\"Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword_2340\",\"Only public and protected methods of the base class are accessible via the 'super' keyword.\"),Property_0_is_private_and_only_accessible_within_class_1:b(2341,1,\"Property_0_is_private_and_only_accessible_within_class_1_2341\",\"Property '{0}' is private and only accessible within class '{1}'.\"),This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0:b(2343,1,\"This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_ve_2343\",\"This syntax requires an imported helper named '{1}' which does not exist in '{0}'. Consider upgrading your version of '{0}'.\"),Type_0_does_not_satisfy_the_constraint_1:b(2344,1,\"Type_0_does_not_satisfy_the_constraint_1_2344\",\"Type '{0}' does not satisfy the constraint '{1}'.\"),Argument_of_type_0_is_not_assignable_to_parameter_of_type_1:b(2345,1,\"Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_2345\",\"Argument of type '{0}' is not assignable to parameter of type '{1}'.\"),Call_target_does_not_contain_any_signatures:b(2346,1,\"Call_target_does_not_contain_any_signatures_2346\",\"Call target does not contain any signatures.\"),Untyped_function_calls_may_not_accept_type_arguments:b(2347,1,\"Untyped_function_calls_may_not_accept_type_arguments_2347\",\"Untyped function calls may not accept type arguments.\"),Value_of_type_0_is_not_callable_Did_you_mean_to_include_new:b(2348,1,\"Value_of_type_0_is_not_callable_Did_you_mean_to_include_new_2348\",\"Value of type '{0}' is not callable. Did you mean to include 'new'?\"),This_expression_is_not_callable:b(2349,1,\"This_expression_is_not_callable_2349\",\"This expression is not callable.\"),Only_a_void_function_can_be_called_with_the_new_keyword:b(2350,1,\"Only_a_void_function_can_be_called_with_the_new_keyword_2350\",\"Only a void function can be called with the 'new' keyword.\"),This_expression_is_not_constructable:b(2351,1,\"This_expression_is_not_constructable_2351\",\"This expression is not constructable.\"),Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the_other_If_this_was_intentional_convert_the_expression_to_unknown_first:b(2352,1,\"Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the__2352\",\"Conversion of type '{0}' to type '{1}' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.\"),Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1:b(2353,1,\"Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1_2353\",\"Object literal may only specify known properties, and '{0}' does not exist in type '{1}'.\"),This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found:b(2354,1,\"This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found_2354\",\"This syntax requires an imported helper but module '{0}' cannot be found.\"),A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value:b(2355,1,\"A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_2355\",\"A function whose declared type is neither 'void' nor 'any' must return a value.\"),An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type:b(2356,1,\"An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type_2356\",\"An arithmetic operand must be of type 'any', 'number', 'bigint' or an enum type.\"),The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access:b(2357,1,\"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access_2357\",\"The operand of an increment or decrement operator must be a variable or a property access.\"),The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter:b(2358,1,\"The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_paramete_2358\",\"The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter.\"),The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type:b(2359,1,\"The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_F_2359\",\"The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type.\"),The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type:b(2362,1,\"The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type_2362\",\"The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.\"),The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type:b(2363,1,\"The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type_2363\",\"The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.\"),The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access:b(2364,1,\"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access_2364\",\"The left-hand side of an assignment expression must be a variable or a property access.\"),Operator_0_cannot_be_applied_to_types_1_and_2:b(2365,1,\"Operator_0_cannot_be_applied_to_types_1_and_2_2365\",\"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\"),Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined:b(2366,1,\"Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined_2366\",\"Function lacks ending return statement and return type does not include 'undefined'.\"),This_comparison_appears_to_be_unintentional_because_the_types_0_and_1_have_no_overlap:b(2367,1,\"This_comparison_appears_to_be_unintentional_because_the_types_0_and_1_have_no_overlap_2367\",\"This comparison appears to be unintentional because the types '{0}' and '{1}' have no overlap.\"),Type_parameter_name_cannot_be_0:b(2368,1,\"Type_parameter_name_cannot_be_0_2368\",\"Type parameter name cannot be '{0}'.\"),A_parameter_property_is_only_allowed_in_a_constructor_implementation:b(2369,1,\"A_parameter_property_is_only_allowed_in_a_constructor_implementation_2369\",\"A parameter property is only allowed in a constructor implementation.\"),A_rest_parameter_must_be_of_an_array_type:b(2370,1,\"A_rest_parameter_must_be_of_an_array_type_2370\",\"A rest parameter must be of an array type.\"),A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation:b(2371,1,\"A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation_2371\",\"A parameter initializer is only allowed in a function or constructor implementation.\"),Parameter_0_cannot_reference_itself:b(2372,1,\"Parameter_0_cannot_reference_itself_2372\",\"Parameter '{0}' cannot reference itself.\"),Parameter_0_cannot_reference_identifier_1_declared_after_it:b(2373,1,\"Parameter_0_cannot_reference_identifier_1_declared_after_it_2373\",\"Parameter '{0}' cannot reference identifier '{1}' declared after it.\"),Duplicate_index_signature_for_type_0:b(2374,1,\"Duplicate_index_signature_for_type_0_2374\",\"Duplicate index signature for type '{0}'.\"),Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties:b(2375,1,\"Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefi_2375\",\"Type '{0}' is not assignable to type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties.\"),A_super_call_must_be_the_first_statement_in_the_constructor_to_refer_to_super_or_this_when_a_derived_class_contains_initialized_properties_parameter_properties_or_private_identifiers:b(2376,1,\"A_super_call_must_be_the_first_statement_in_the_constructor_to_refer_to_super_or_this_when_a_derived_2376\",\"A 'super' call must be the first statement in the constructor to refer to 'super' or 'this' when a derived class contains initialized properties, parameter properties, or private identifiers.\"),Constructors_for_derived_classes_must_contain_a_super_call:b(2377,1,\"Constructors_for_derived_classes_must_contain_a_super_call_2377\",\"Constructors for derived classes must contain a 'super' call.\"),A_get_accessor_must_return_a_value:b(2378,1,\"A_get_accessor_must_return_a_value_2378\",\"A 'get' accessor must return a value.\"),Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties:b(2379,1,\"Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_with_exactOptionalPropertyTypes_Colon_tr_2379\",\"Argument of type '{0}' is not assignable to parameter of type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties.\"),The_return_type_of_a_get_accessor_must_be_assignable_to_its_set_accessor_type:b(2380,1,\"The_return_type_of_a_get_accessor_must_be_assignable_to_its_set_accessor_type_2380\",\"The return type of a 'get' accessor must be assignable to its 'set' accessor type\"),Overload_signatures_must_all_be_exported_or_non_exported:b(2383,1,\"Overload_signatures_must_all_be_exported_or_non_exported_2383\",\"Overload signatures must all be exported or non-exported.\"),Overload_signatures_must_all_be_ambient_or_non_ambient:b(2384,1,\"Overload_signatures_must_all_be_ambient_or_non_ambient_2384\",\"Overload signatures must all be ambient or non-ambient.\"),Overload_signatures_must_all_be_public_private_or_protected:b(2385,1,\"Overload_signatures_must_all_be_public_private_or_protected_2385\",\"Overload signatures must all be public, private or protected.\"),Overload_signatures_must_all_be_optional_or_required:b(2386,1,\"Overload_signatures_must_all_be_optional_or_required_2386\",\"Overload signatures must all be optional or required.\"),Function_overload_must_be_static:b(2387,1,\"Function_overload_must_be_static_2387\",\"Function overload must be static.\"),Function_overload_must_not_be_static:b(2388,1,\"Function_overload_must_not_be_static_2388\",\"Function overload must not be static.\"),Function_implementation_name_must_be_0:b(2389,1,\"Function_implementation_name_must_be_0_2389\",\"Function implementation name must be '{0}'.\"),Constructor_implementation_is_missing:b(2390,1,\"Constructor_implementation_is_missing_2390\",\"Constructor implementation is missing.\"),Function_implementation_is_missing_or_not_immediately_following_the_declaration:b(2391,1,\"Function_implementation_is_missing_or_not_immediately_following_the_declaration_2391\",\"Function implementation is missing or not immediately following the declaration.\"),Multiple_constructor_implementations_are_not_allowed:b(2392,1,\"Multiple_constructor_implementations_are_not_allowed_2392\",\"Multiple constructor implementations are not allowed.\"),Duplicate_function_implementation:b(2393,1,\"Duplicate_function_implementation_2393\",\"Duplicate function implementation.\"),This_overload_signature_is_not_compatible_with_its_implementation_signature:b(2394,1,\"This_overload_signature_is_not_compatible_with_its_implementation_signature_2394\",\"This overload signature is not compatible with its implementation signature.\"),Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local:b(2395,1,\"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local_2395\",\"Individual declarations in merged declaration '{0}' must be all exported or all local.\"),Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters:b(2396,1,\"Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters_2396\",\"Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters.\"),Declaration_name_conflicts_with_built_in_global_identifier_0:b(2397,1,\"Declaration_name_conflicts_with_built_in_global_identifier_0_2397\",\"Declaration name conflicts with built-in global identifier '{0}'.\"),constructor_cannot_be_used_as_a_parameter_property_name:b(2398,1,\"constructor_cannot_be_used_as_a_parameter_property_name_2398\",\"'constructor' cannot be used as a parameter property name.\"),Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference:b(2399,1,\"Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference_2399\",\"Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference.\"),Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference:b(2400,1,\"Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference_2400\",\"Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference.\"),A_super_call_must_be_a_root_level_statement_within_a_constructor_of_a_derived_class_that_contains_initialized_properties_parameter_properties_or_private_identifiers:b(2401,1,\"A_super_call_must_be_a_root_level_statement_within_a_constructor_of_a_derived_class_that_contains_in_2401\",\"A 'super' call must be a root-level statement within a constructor of a derived class that contains initialized properties, parameter properties, or private identifiers.\"),Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference:b(2402,1,\"Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference_2402\",\"Expression resolves to '_super' that compiler uses to capture base class reference.\"),Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2:b(2403,1,\"Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_t_2403\",\"Subsequent variable declarations must have the same type.  Variable '{0}' must be of type '{1}', but here has type '{2}'.\"),The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation:b(2404,1,\"The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation_2404\",\"The left-hand side of a 'for...in' statement cannot use a type annotation.\"),The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any:b(2405,1,\"The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any_2405\",\"The left-hand side of a 'for...in' statement must be of type 'string' or 'any'.\"),The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access:b(2406,1,\"The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access_2406\",\"The left-hand side of a 'for...in' statement must be a variable or a property access.\"),The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter_but_here_has_type_0:b(2407,1,\"The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter_but_2407\",\"The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter, but here has type '{0}'.\"),Setters_cannot_return_a_value:b(2408,1,\"Setters_cannot_return_a_value_2408\",\"Setters cannot return a value.\"),Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class:b(2409,1,\"Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class_2409\",\"Return type of constructor signature must be assignable to the instance type of the class.\"),The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any:b(2410,1,\"The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any_2410\",\"The 'with' statement is not supported. All symbols in a 'with' block will have type 'any'.\"),Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target:b(2412,1,\"Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefi_2412\",\"Type '{0}' is not assignable to type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the type of the target.\"),Property_0_of_type_1_is_not_assignable_to_2_index_type_3:b(2411,1,\"Property_0_of_type_1_is_not_assignable_to_2_index_type_3_2411\",\"Property '{0}' of type '{1}' is not assignable to '{2}' index type '{3}'.\"),_0_index_type_1_is_not_assignable_to_2_index_type_3:b(2413,1,\"_0_index_type_1_is_not_assignable_to_2_index_type_3_2413\",\"'{0}' index type '{1}' is not assignable to '{2}' index type '{3}'.\"),Class_name_cannot_be_0:b(2414,1,\"Class_name_cannot_be_0_2414\",\"Class name cannot be '{0}'.\"),Class_0_incorrectly_extends_base_class_1:b(2415,1,\"Class_0_incorrectly_extends_base_class_1_2415\",\"Class '{0}' incorrectly extends base class '{1}'.\"),Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2:b(2416,1,\"Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2_2416\",\"Property '{0}' in type '{1}' is not assignable to the same property in base type '{2}'.\"),Class_static_side_0_incorrectly_extends_base_class_static_side_1:b(2417,1,\"Class_static_side_0_incorrectly_extends_base_class_static_side_1_2417\",\"Class static side '{0}' incorrectly extends base class static side '{1}'.\"),Type_of_computed_property_s_value_is_0_which_is_not_assignable_to_type_1:b(2418,1,\"Type_of_computed_property_s_value_is_0_which_is_not_assignable_to_type_1_2418\",\"Type of computed property's value is '{0}', which is not assignable to type '{1}'.\"),Types_of_construct_signatures_are_incompatible:b(2419,1,\"Types_of_construct_signatures_are_incompatible_2419\",\"Types of construct signatures are incompatible.\"),Class_0_incorrectly_implements_interface_1:b(2420,1,\"Class_0_incorrectly_implements_interface_1_2420\",\"Class '{0}' incorrectly implements interface '{1}'.\"),A_class_can_only_implement_an_object_type_or_intersection_of_object_types_with_statically_known_members:b(2422,1,\"A_class_can_only_implement_an_object_type_or_intersection_of_object_types_with_statically_known_memb_2422\",\"A class can only implement an object type or intersection of object types with statically known members.\"),Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor:b(2423,1,\"Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_access_2423\",\"Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor.\"),Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function:b(2425,1,\"Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_functi_2425\",\"Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function.\"),Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function:b(2426,1,\"Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_functi_2426\",\"Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function.\"),Interface_name_cannot_be_0:b(2427,1,\"Interface_name_cannot_be_0_2427\",\"Interface name cannot be '{0}'.\"),All_declarations_of_0_must_have_identical_type_parameters:b(2428,1,\"All_declarations_of_0_must_have_identical_type_parameters_2428\",\"All declarations of '{0}' must have identical type parameters.\"),Interface_0_incorrectly_extends_interface_1:b(2430,1,\"Interface_0_incorrectly_extends_interface_1_2430\",\"Interface '{0}' incorrectly extends interface '{1}'.\"),Enum_name_cannot_be_0:b(2431,1,\"Enum_name_cannot_be_0_2431\",\"Enum name cannot be '{0}'.\"),In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element:b(2432,1,\"In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enu_2432\",\"In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element.\"),A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged:b(2433,1,\"A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merg_2433\",\"A namespace declaration cannot be in a different file from a class or function with which it is merged.\"),A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged:b(2434,1,\"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged_2434\",\"A namespace declaration cannot be located prior to a class or function with which it is merged.\"),Ambient_modules_cannot_be_nested_in_other_modules_or_namespaces:b(2435,1,\"Ambient_modules_cannot_be_nested_in_other_modules_or_namespaces_2435\",\"Ambient modules cannot be nested in other modules or namespaces.\"),Ambient_module_declaration_cannot_specify_relative_module_name:b(2436,1,\"Ambient_module_declaration_cannot_specify_relative_module_name_2436\",\"Ambient module declaration cannot specify relative module name.\"),Module_0_is_hidden_by_a_local_declaration_with_the_same_name:b(2437,1,\"Module_0_is_hidden_by_a_local_declaration_with_the_same_name_2437\",\"Module '{0}' is hidden by a local declaration with the same name.\"),Import_name_cannot_be_0:b(2438,1,\"Import_name_cannot_be_0_2438\",\"Import name cannot be '{0}'.\"),Import_or_export_declaration_in_an_ambient_module_declaration_cannot_reference_module_through_relative_module_name:b(2439,1,\"Import_or_export_declaration_in_an_ambient_module_declaration_cannot_reference_module_through_relati_2439\",\"Import or export declaration in an ambient module declaration cannot reference module through relative module name.\"),Import_declaration_conflicts_with_local_declaration_of_0:b(2440,1,\"Import_declaration_conflicts_with_local_declaration_of_0_2440\",\"Import declaration conflicts with local declaration of '{0}'.\"),Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module:b(2441,1,\"Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_2441\",\"Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module.\"),Types_have_separate_declarations_of_a_private_property_0:b(2442,1,\"Types_have_separate_declarations_of_a_private_property_0_2442\",\"Types have separate declarations of a private property '{0}'.\"),Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2:b(2443,1,\"Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2_2443\",\"Property '{0}' is protected but type '{1}' is not a class derived from '{2}'.\"),Property_0_is_protected_in_type_1_but_public_in_type_2:b(2444,1,\"Property_0_is_protected_in_type_1_but_public_in_type_2_2444\",\"Property '{0}' is protected in type '{1}' but public in type '{2}'.\"),Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses:b(2445,1,\"Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses_2445\",\"Property '{0}' is protected and only accessible within class '{1}' and its subclasses.\"),Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1_This_is_an_instance_of_class_2:b(2446,1,\"Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1_This_is_an_instance_of_cl_2446\",\"Property '{0}' is protected and only accessible through an instance of class '{1}'. This is an instance of class '{2}'.\"),The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead:b(2447,1,\"The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead_2447\",\"The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead.\"),Block_scoped_variable_0_used_before_its_declaration:b(2448,1,\"Block_scoped_variable_0_used_before_its_declaration_2448\",\"Block-scoped variable '{0}' used before its declaration.\"),Class_0_used_before_its_declaration:b(2449,1,\"Class_0_used_before_its_declaration_2449\",\"Class '{0}' used before its declaration.\"),Enum_0_used_before_its_declaration:b(2450,1,\"Enum_0_used_before_its_declaration_2450\",\"Enum '{0}' used before its declaration.\"),Cannot_redeclare_block_scoped_variable_0:b(2451,1,\"Cannot_redeclare_block_scoped_variable_0_2451\",\"Cannot redeclare block-scoped variable '{0}'.\"),An_enum_member_cannot_have_a_numeric_name:b(2452,1,\"An_enum_member_cannot_have_a_numeric_name_2452\",\"An enum member cannot have a numeric name.\"),Variable_0_is_used_before_being_assigned:b(2454,1,\"Variable_0_is_used_before_being_assigned_2454\",\"Variable '{0}' is used before being assigned.\"),Type_alias_0_circularly_references_itself:b(2456,1,\"Type_alias_0_circularly_references_itself_2456\",\"Type alias '{0}' circularly references itself.\"),Type_alias_name_cannot_be_0:b(2457,1,\"Type_alias_name_cannot_be_0_2457\",\"Type alias name cannot be '{0}'.\"),An_AMD_module_cannot_have_multiple_name_assignments:b(2458,1,\"An_AMD_module_cannot_have_multiple_name_assignments_2458\",\"An AMD module cannot have multiple name assignments.\"),Module_0_declares_1_locally_but_it_is_not_exported:b(2459,1,\"Module_0_declares_1_locally_but_it_is_not_exported_2459\",\"Module '{0}' declares '{1}' locally, but it is not exported.\"),Module_0_declares_1_locally_but_it_is_exported_as_2:b(2460,1,\"Module_0_declares_1_locally_but_it_is_exported_as_2_2460\",\"Module '{0}' declares '{1}' locally, but it is exported as '{2}'.\"),Type_0_is_not_an_array_type:b(2461,1,\"Type_0_is_not_an_array_type_2461\",\"Type '{0}' is not an array type.\"),A_rest_element_must_be_last_in_a_destructuring_pattern:b(2462,1,\"A_rest_element_must_be_last_in_a_destructuring_pattern_2462\",\"A rest element must be last in a destructuring pattern.\"),A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature:b(2463,1,\"A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature_2463\",\"A binding pattern parameter cannot be optional in an implementation signature.\"),A_computed_property_name_must_be_of_type_string_number_symbol_or_any:b(2464,1,\"A_computed_property_name_must_be_of_type_string_number_symbol_or_any_2464\",\"A computed property name must be of type 'string', 'number', 'symbol', or 'any'.\"),this_cannot_be_referenced_in_a_computed_property_name:b(2465,1,\"this_cannot_be_referenced_in_a_computed_property_name_2465\",\"'this' cannot be referenced in a computed property name.\"),super_cannot_be_referenced_in_a_computed_property_name:b(2466,1,\"super_cannot_be_referenced_in_a_computed_property_name_2466\",\"'super' cannot be referenced in a computed property name.\"),A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type:b(2467,1,\"A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type_2467\",\"A computed property name cannot reference a type parameter from its containing type.\"),Cannot_find_global_value_0:b(2468,1,\"Cannot_find_global_value_0_2468\",\"Cannot find global value '{0}'.\"),The_0_operator_cannot_be_applied_to_type_symbol:b(2469,1,\"The_0_operator_cannot_be_applied_to_type_symbol_2469\",\"The '{0}' operator cannot be applied to type 'symbol'.\"),Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher:b(2472,1,\"Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher_2472\",\"Spread operator in 'new' expressions is only available when targeting ECMAScript 5 and higher.\"),Enum_declarations_must_all_be_const_or_non_const:b(2473,1,\"Enum_declarations_must_all_be_const_or_non_const_2473\",\"Enum declarations must all be const or non-const.\"),const_enum_member_initializers_must_be_constant_expressions:b(2474,1,\"const_enum_member_initializers_must_be_constant_expressions_2474\",\"const enum member initializers must be constant expressions.\"),const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment_or_type_query:b(2475,1,\"const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_im_2475\",\"'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment or type query.\"),A_const_enum_member_can_only_be_accessed_using_a_string_literal:b(2476,1,\"A_const_enum_member_can_only_be_accessed_using_a_string_literal_2476\",\"A const enum member can only be accessed using a string literal.\"),const_enum_member_initializer_was_evaluated_to_a_non_finite_value:b(2477,1,\"const_enum_member_initializer_was_evaluated_to_a_non_finite_value_2477\",\"'const' enum member initializer was evaluated to a non-finite value.\"),const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN:b(2478,1,\"const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN_2478\",\"'const' enum member initializer was evaluated to disallowed value 'NaN'.\"),let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations:b(2480,1,\"let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations_2480\",\"'let' is not allowed to be used as a name in 'let' or 'const' declarations.\"),Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1:b(2481,1,\"Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1_2481\",\"Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'.\"),The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation:b(2483,1,\"The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation_2483\",\"The left-hand side of a 'for...of' statement cannot use a type annotation.\"),Export_declaration_conflicts_with_exported_declaration_of_0:b(2484,1,\"Export_declaration_conflicts_with_exported_declaration_of_0_2484\",\"Export declaration conflicts with exported declaration of '{0}'.\"),The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access:b(2487,1,\"The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access_2487\",\"The left-hand side of a 'for...of' statement must be a variable or a property access.\"),Type_0_must_have_a_Symbol_iterator_method_that_returns_an_iterator:b(2488,1,\"Type_0_must_have_a_Symbol_iterator_method_that_returns_an_iterator_2488\",\"Type '{0}' must have a '[Symbol.iterator]()' method that returns an iterator.\"),An_iterator_must_have_a_next_method:b(2489,1,\"An_iterator_must_have_a_next_method_2489\",\"An iterator must have a 'next()' method.\"),The_type_returned_by_the_0_method_of_an_iterator_must_have_a_value_property:b(2490,1,\"The_type_returned_by_the_0_method_of_an_iterator_must_have_a_value_property_2490\",\"The type returned by the '{0}()' method of an iterator must have a 'value' property.\"),The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern:b(2491,1,\"The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern_2491\",\"The left-hand side of a 'for...in' statement cannot be a destructuring pattern.\"),Cannot_redeclare_identifier_0_in_catch_clause:b(2492,1,\"Cannot_redeclare_identifier_0_in_catch_clause_2492\",\"Cannot redeclare identifier '{0}' in catch clause.\"),Tuple_type_0_of_length_1_has_no_element_at_index_2:b(2493,1,\"Tuple_type_0_of_length_1_has_no_element_at_index_2_2493\",\"Tuple type '{0}' of length '{1}' has no element at index '{2}'.\"),Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher:b(2494,1,\"Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher_2494\",\"Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher.\"),Type_0_is_not_an_array_type_or_a_string_type:b(2495,1,\"Type_0_is_not_an_array_type_or_a_string_type_2495\",\"Type '{0}' is not an array type or a string type.\"),The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression:b(2496,1,\"The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_stand_2496\",\"The 'arguments' object cannot be referenced in an arrow function in ES3 and ES5. Consider using a standard function expression.\"),This_module_can_only_be_referenced_with_ECMAScript_imports_Slashexports_by_turning_on_the_0_flag_and_referencing_its_default_export:b(2497,1,\"This_module_can_only_be_referenced_with_ECMAScript_imports_Slashexports_by_turning_on_the_0_flag_and_2497\",\"This module can only be referenced with ECMAScript imports/exports by turning on the '{0}' flag and referencing its default export.\"),Module_0_uses_export_and_cannot_be_used_with_export_Asterisk:b(2498,1,\"Module_0_uses_export_and_cannot_be_used_with_export_Asterisk_2498\",\"Module '{0}' uses 'export =' and cannot be used with 'export *'.\"),An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments:b(2499,1,\"An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments_2499\",\"An interface can only extend an identifier/qualified-name with optional type arguments.\"),A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments:b(2500,1,\"A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments_2500\",\"A class can only implement an identifier/qualified-name with optional type arguments.\"),A_rest_element_cannot_contain_a_binding_pattern:b(2501,1,\"A_rest_element_cannot_contain_a_binding_pattern_2501\",\"A rest element cannot contain a binding pattern.\"),_0_is_referenced_directly_or_indirectly_in_its_own_type_annotation:b(2502,1,\"_0_is_referenced_directly_or_indirectly_in_its_own_type_annotation_2502\",\"'{0}' is referenced directly or indirectly in its own type annotation.\"),Cannot_find_namespace_0:b(2503,1,\"Cannot_find_namespace_0_2503\",\"Cannot find namespace '{0}'.\"),Type_0_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator:b(2504,1,\"Type_0_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator_2504\",\"Type '{0}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator.\"),A_generator_cannot_have_a_void_type_annotation:b(2505,1,\"A_generator_cannot_have_a_void_type_annotation_2505\",\"A generator cannot have a 'void' type annotation.\"),_0_is_referenced_directly_or_indirectly_in_its_own_base_expression:b(2506,1,\"_0_is_referenced_directly_or_indirectly_in_its_own_base_expression_2506\",\"'{0}' is referenced directly or indirectly in its own base expression.\"),Type_0_is_not_a_constructor_function_type:b(2507,1,\"Type_0_is_not_a_constructor_function_type_2507\",\"Type '{0}' is not a constructor function type.\"),No_base_constructor_has_the_specified_number_of_type_arguments:b(2508,1,\"No_base_constructor_has_the_specified_number_of_type_arguments_2508\",\"No base constructor has the specified number of type arguments.\"),Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_known_members:b(2509,1,\"Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_2509\",\"Base constructor return type '{0}' is not an object type or intersection of object types with statically known members.\"),Base_constructors_must_all_have_the_same_return_type:b(2510,1,\"Base_constructors_must_all_have_the_same_return_type_2510\",\"Base constructors must all have the same return type.\"),Cannot_create_an_instance_of_an_abstract_class:b(2511,1,\"Cannot_create_an_instance_of_an_abstract_class_2511\",\"Cannot create an instance of an abstract class.\"),Overload_signatures_must_all_be_abstract_or_non_abstract:b(2512,1,\"Overload_signatures_must_all_be_abstract_or_non_abstract_2512\",\"Overload signatures must all be abstract or non-abstract.\"),Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression:b(2513,1,\"Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression_2513\",\"Abstract method '{0}' in class '{1}' cannot be accessed via super expression.\"),A_tuple_type_cannot_be_indexed_with_a_negative_value:b(2514,1,\"A_tuple_type_cannot_be_indexed_with_a_negative_value_2514\",\"A tuple type cannot be indexed with a negative value.\"),Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2:b(2515,1,\"Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2_2515\",\"Non-abstract class '{0}' does not implement inherited abstract member '{1}' from class '{2}'.\"),All_declarations_of_an_abstract_method_must_be_consecutive:b(2516,1,\"All_declarations_of_an_abstract_method_must_be_consecutive_2516\",\"All declarations of an abstract method must be consecutive.\"),Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type:b(2517,1,\"Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type_2517\",\"Cannot assign an abstract constructor type to a non-abstract constructor type.\"),A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard:b(2518,1,\"A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard_2518\",\"A 'this'-based type guard is not compatible with a parameter-based type guard.\"),An_async_iterator_must_have_a_next_method:b(2519,1,\"An_async_iterator_must_have_a_next_method_2519\",\"An async iterator must have a 'next()' method.\"),Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions:b(2520,1,\"Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions_2520\",\"Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions.\"),The_arguments_object_cannot_be_referenced_in_an_async_function_or_method_in_ES3_and_ES5_Consider_using_a_standard_function_or_method:b(2522,1,\"The_arguments_object_cannot_be_referenced_in_an_async_function_or_method_in_ES3_and_ES5_Consider_usi_2522\",\"The 'arguments' object cannot be referenced in an async function or method in ES3 and ES5. Consider using a standard function or method.\"),yield_expressions_cannot_be_used_in_a_parameter_initializer:b(2523,1,\"yield_expressions_cannot_be_used_in_a_parameter_initializer_2523\",\"'yield' expressions cannot be used in a parameter initializer.\"),await_expressions_cannot_be_used_in_a_parameter_initializer:b(2524,1,\"await_expressions_cannot_be_used_in_a_parameter_initializer_2524\",\"'await' expressions cannot be used in a parameter initializer.\"),Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value:b(2525,1,\"Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value_2525\",\"Initializer provides no value for this binding element and the binding element has no default value.\"),A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface:b(2526,1,\"A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface_2526\",\"A 'this' type is available only in a non-static member of a class or interface.\"),The_inferred_type_of_0_references_an_inaccessible_1_type_A_type_annotation_is_necessary:b(2527,1,\"The_inferred_type_of_0_references_an_inaccessible_1_type_A_type_annotation_is_necessary_2527\",\"The inferred type of '{0}' references an inaccessible '{1}' type. A type annotation is necessary.\"),A_module_cannot_have_multiple_default_exports:b(2528,1,\"A_module_cannot_have_multiple_default_exports_2528\",\"A module cannot have multiple default exports.\"),Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions:b(2529,1,\"Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_func_2529\",\"Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module containing async functions.\"),Property_0_is_incompatible_with_index_signature:b(2530,1,\"Property_0_is_incompatible_with_index_signature_2530\",\"Property '{0}' is incompatible with index signature.\"),Object_is_possibly_null:b(2531,1,\"Object_is_possibly_null_2531\",\"Object is possibly 'null'.\"),Object_is_possibly_undefined:b(2532,1,\"Object_is_possibly_undefined_2532\",\"Object is possibly 'undefined'.\"),Object_is_possibly_null_or_undefined:b(2533,1,\"Object_is_possibly_null_or_undefined_2533\",\"Object is possibly 'null' or 'undefined'.\"),A_function_returning_never_cannot_have_a_reachable_end_point:b(2534,1,\"A_function_returning_never_cannot_have_a_reachable_end_point_2534\",\"A function returning 'never' cannot have a reachable end point.\"),Type_0_cannot_be_used_to_index_type_1:b(2536,1,\"Type_0_cannot_be_used_to_index_type_1_2536\",\"Type '{0}' cannot be used to index type '{1}'.\"),Type_0_has_no_matching_index_signature_for_type_1:b(2537,1,\"Type_0_has_no_matching_index_signature_for_type_1_2537\",\"Type '{0}' has no matching index signature for type '{1}'.\"),Type_0_cannot_be_used_as_an_index_type:b(2538,1,\"Type_0_cannot_be_used_as_an_index_type_2538\",\"Type '{0}' cannot be used as an index type.\"),Cannot_assign_to_0_because_it_is_not_a_variable:b(2539,1,\"Cannot_assign_to_0_because_it_is_not_a_variable_2539\",\"Cannot assign to '{0}' because it is not a variable.\"),Cannot_assign_to_0_because_it_is_a_read_only_property:b(2540,1,\"Cannot_assign_to_0_because_it_is_a_read_only_property_2540\",\"Cannot assign to '{0}' because it is a read-only property.\"),Index_signature_in_type_0_only_permits_reading:b(2542,1,\"Index_signature_in_type_0_only_permits_reading_2542\",\"Index signature in type '{0}' only permits reading.\"),Duplicate_identifier_newTarget_Compiler_uses_variable_declaration_newTarget_to_capture_new_target_meta_property_reference:b(2543,1,\"Duplicate_identifier_newTarget_Compiler_uses_variable_declaration_newTarget_to_capture_new_target_me_2543\",\"Duplicate identifier '_newTarget'. Compiler uses variable declaration '_newTarget' to capture 'new.target' meta-property reference.\"),Expression_resolves_to_variable_declaration_newTarget_that_compiler_uses_to_capture_new_target_meta_property_reference:b(2544,1,\"Expression_resolves_to_variable_declaration_newTarget_that_compiler_uses_to_capture_new_target_meta__2544\",\"Expression resolves to variable declaration '_newTarget' that compiler uses to capture 'new.target' meta-property reference.\"),A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any:b(2545,1,\"A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any_2545\",\"A mixin class must have a constructor with a single rest parameter of type 'any[]'.\"),The_type_returned_by_the_0_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_property:b(2547,1,\"The_type_returned_by_the_0_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_pro_2547\",\"The type returned by the '{0}()' method of an async iterator must be a promise for a type with a 'value' property.\"),Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator:b(2548,1,\"Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator_2548\",\"Type '{0}' is not an array type or does not have a '[Symbol.iterator]()' method that returns an iterator.\"),Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator:b(2549,1,\"Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns__2549\",\"Type '{0}' is not an array type or a string type or does not have a '[Symbol.iterator]()' method that returns an iterator.\"),Property_0_does_not_exist_on_type_1_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_2_or_later:b(2550,1,\"Property_0_does_not_exist_on_type_1_Do_you_need_to_change_your_target_library_Try_changing_the_lib_c_2550\",\"Property '{0}' does not exist on type '{1}'. Do you need to change your target library? Try changing the 'lib' compiler option to '{2}' or later.\"),Property_0_does_not_exist_on_type_1_Did_you_mean_2:b(2551,1,\"Property_0_does_not_exist_on_type_1_Did_you_mean_2_2551\",\"Property '{0}' does not exist on type '{1}'. Did you mean '{2}'?\"),Cannot_find_name_0_Did_you_mean_1:b(2552,1,\"Cannot_find_name_0_Did_you_mean_1_2552\",\"Cannot find name '{0}'. Did you mean '{1}'?\"),Computed_values_are_not_permitted_in_an_enum_with_string_valued_members:b(2553,1,\"Computed_values_are_not_permitted_in_an_enum_with_string_valued_members_2553\",\"Computed values are not permitted in an enum with string valued members.\"),Expected_0_arguments_but_got_1:b(2554,1,\"Expected_0_arguments_but_got_1_2554\",\"Expected {0} arguments, but got {1}.\"),Expected_at_least_0_arguments_but_got_1:b(2555,1,\"Expected_at_least_0_arguments_but_got_1_2555\",\"Expected at least {0} arguments, but got {1}.\"),A_spread_argument_must_either_have_a_tuple_type_or_be_passed_to_a_rest_parameter:b(2556,1,\"A_spread_argument_must_either_have_a_tuple_type_or_be_passed_to_a_rest_parameter_2556\",\"A spread argument must either have a tuple type or be passed to a rest parameter.\"),Expected_0_type_arguments_but_got_1:b(2558,1,\"Expected_0_type_arguments_but_got_1_2558\",\"Expected {0} type arguments, but got {1}.\"),Type_0_has_no_properties_in_common_with_type_1:b(2559,1,\"Type_0_has_no_properties_in_common_with_type_1_2559\",\"Type '{0}' has no properties in common with type '{1}'.\"),Value_of_type_0_has_no_properties_in_common_with_type_1_Did_you_mean_to_call_it:b(2560,1,\"Value_of_type_0_has_no_properties_in_common_with_type_1_Did_you_mean_to_call_it_2560\",\"Value of type '{0}' has no properties in common with type '{1}'. Did you mean to call it?\"),Object_literal_may_only_specify_known_properties_but_0_does_not_exist_in_type_1_Did_you_mean_to_write_2:b(2561,1,\"Object_literal_may_only_specify_known_properties_but_0_does_not_exist_in_type_1_Did_you_mean_to_writ_2561\",\"Object literal may only specify known properties, but '{0}' does not exist in type '{1}'. Did you mean to write '{2}'?\"),Base_class_expressions_cannot_reference_class_type_parameters:b(2562,1,\"Base_class_expressions_cannot_reference_class_type_parameters_2562\",\"Base class expressions cannot reference class type parameters.\"),The_containing_function_or_module_body_is_too_large_for_control_flow_analysis:b(2563,1,\"The_containing_function_or_module_body_is_too_large_for_control_flow_analysis_2563\",\"The containing function or module body is too large for control flow analysis.\"),Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor:b(2564,1,\"Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor_2564\",\"Property '{0}' has no initializer and is not definitely assigned in the constructor.\"),Property_0_is_used_before_being_assigned:b(2565,1,\"Property_0_is_used_before_being_assigned_2565\",\"Property '{0}' is used before being assigned.\"),A_rest_element_cannot_have_a_property_name:b(2566,1,\"A_rest_element_cannot_have_a_property_name_2566\",\"A rest element cannot have a property name.\"),Enum_declarations_can_only_merge_with_namespace_or_other_enum_declarations:b(2567,1,\"Enum_declarations_can_only_merge_with_namespace_or_other_enum_declarations_2567\",\"Enum declarations can only merge with namespace or other enum declarations.\"),Property_0_may_not_exist_on_type_1_Did_you_mean_2:b(2568,1,\"Property_0_may_not_exist_on_type_1_Did_you_mean_2_2568\",\"Property '{0}' may not exist on type '{1}'. Did you mean '{2}'?\"),Could_not_find_name_0_Did_you_mean_1:b(2570,1,\"Could_not_find_name_0_Did_you_mean_1_2570\",\"Could not find name '{0}'. Did you mean '{1}'?\"),Object_is_of_type_unknown:b(2571,1,\"Object_is_of_type_unknown_2571\",\"Object is of type 'unknown'.\"),A_rest_element_type_must_be_an_array_type:b(2574,1,\"A_rest_element_type_must_be_an_array_type_2574\",\"A rest element type must be an array type.\"),No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments:b(2575,1,\"No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments_2575\",\"No overload expects {0} arguments, but overloads do exist that expect either {1} or {2} arguments.\"),Property_0_does_not_exist_on_type_1_Did_you_mean_to_access_the_static_member_2_instead:b(2576,1,\"Property_0_does_not_exist_on_type_1_Did_you_mean_to_access_the_static_member_2_instead_2576\",\"Property '{0}' does not exist on type '{1}'. Did you mean to access the static member '{2}' instead?\"),Return_type_annotation_circularly_references_itself:b(2577,1,\"Return_type_annotation_circularly_references_itself_2577\",\"Return type annotation circularly references itself.\"),Unused_ts_expect_error_directive:b(2578,1,\"Unused_ts_expect_error_directive_2578\",\"Unused '@ts-expect-error' directive.\"),Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashnode:b(2580,1,\"Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashno_2580\",\"Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.\"),Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_save_dev_types_Slashjquery:b(2581,1,\"Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_save_dev_types_Slash_2581\",\"Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i --save-dev @types/jquery`.\"),Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_types_Slashjest_or_npm_i_save_dev_types_Slashmocha:b(2582,1,\"Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_type_2582\",\"Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i --save-dev @types/jest` or `npm i --save-dev @types/mocha`.\"),Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_1_or_later:b(2583,1,\"Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_2583\",\"Cannot find name '{0}'. Do you need to change your target library? Try changing the 'lib' compiler option to '{1}' or later.\"),Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_include_dom:b(2584,1,\"Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_2584\",\"Cannot find name '{0}'. Do you need to change your target library? Try changing the 'lib' compiler option to include 'dom'.\"),_0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_es2015_or_later:b(2585,1,\"_0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Do_you_need_to_change_your_target_library_2585\",\"'{0}' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the 'lib' compiler option to es2015 or later.\"),Cannot_assign_to_0_because_it_is_a_constant:b(2588,1,\"Cannot_assign_to_0_because_it_is_a_constant_2588\",\"Cannot assign to '{0}' because it is a constant.\"),Type_instantiation_is_excessively_deep_and_possibly_infinite:b(2589,1,\"Type_instantiation_is_excessively_deep_and_possibly_infinite_2589\",\"Type instantiation is excessively deep and possibly infinite.\"),Expression_produces_a_union_type_that_is_too_complex_to_represent:b(2590,1,\"Expression_produces_a_union_type_that_is_too_complex_to_represent_2590\",\"Expression produces a union type that is too complex to represent.\"),Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashnode_and_then_add_node_to_the_types_field_in_your_tsconfig:b(2591,1,\"Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashno_2591\",\"Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node` and then add 'node' to the types field in your tsconfig.\"),Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_save_dev_types_Slashjquery_and_then_add_jquery_to_the_types_field_in_your_tsconfig:b(2592,1,\"Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_save_dev_types_Slash_2592\",\"Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i --save-dev @types/jquery` and then add 'jquery' to the types field in your tsconfig.\"),Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_types_Slashjest_or_npm_i_save_dev_types_Slashmocha_and_then_add_jest_or_mocha_to_the_types_field_in_your_tsconfig:b(2593,1,\"Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_type_2593\",\"Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i --save-dev @types/jest` or `npm i --save-dev @types/mocha` and then add 'jest' or 'mocha' to the types field in your tsconfig.\"),This_module_is_declared_with_export_and_can_only_be_used_with_a_default_import_when_using_the_0_flag:b(2594,1,\"This_module_is_declared_with_export_and_can_only_be_used_with_a_default_import_when_using_the_0_flag_2594\",\"This module is declared with 'export =', and can only be used with a default import when using the '{0}' flag.\"),_0_can_only_be_imported_by_using_a_default_import:b(2595,1,\"_0_can_only_be_imported_by_using_a_default_import_2595\",\"'{0}' can only be imported by using a default import.\"),_0_can_only_be_imported_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import:b(2596,1,\"_0_can_only_be_imported_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import_2596\",\"'{0}' can only be imported by turning on the 'esModuleInterop' flag and using a default import.\"),_0_can_only_be_imported_by_using_a_require_call_or_by_using_a_default_import:b(2597,1,\"_0_can_only_be_imported_by_using_a_require_call_or_by_using_a_default_import_2597\",\"'{0}' can only be imported by using a 'require' call or by using a default import.\"),_0_can_only_be_imported_by_using_a_require_call_or_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import:b(2598,1,\"_0_can_only_be_imported_by_using_a_require_call_or_by_turning_on_the_esModuleInterop_flag_and_using__2598\",\"'{0}' can only be imported by using a 'require' call or by turning on the 'esModuleInterop' flag and using a default import.\"),JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist:b(2602,1,\"JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist_2602\",\"JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist.\"),Property_0_in_type_1_is_not_assignable_to_type_2:b(2603,1,\"Property_0_in_type_1_is_not_assignable_to_type_2_2603\",\"Property '{0}' in type '{1}' is not assignable to type '{2}'.\"),JSX_element_type_0_does_not_have_any_construct_or_call_signatures:b(2604,1,\"JSX_element_type_0_does_not_have_any_construct_or_call_signatures_2604\",\"JSX element type '{0}' does not have any construct or call signatures.\"),Property_0_of_JSX_spread_attribute_is_not_assignable_to_target_property:b(2606,1,\"Property_0_of_JSX_spread_attribute_is_not_assignable_to_target_property_2606\",\"Property '{0}' of JSX spread attribute is not assignable to target property.\"),JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property:b(2607,1,\"JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property_2607\",\"JSX element class does not support attributes because it does not have a '{0}' property.\"),The_global_type_JSX_0_may_not_have_more_than_one_property:b(2608,1,\"The_global_type_JSX_0_may_not_have_more_than_one_property_2608\",\"The global type 'JSX.{0}' may not have more than one property.\"),JSX_spread_child_must_be_an_array_type:b(2609,1,\"JSX_spread_child_must_be_an_array_type_2609\",\"JSX spread child must be an array type.\"),_0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property:b(2610,1,\"_0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property_2610\",\"'{0}' is defined as an accessor in class '{1}', but is overridden here in '{2}' as an instance property.\"),_0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor:b(2611,1,\"_0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor_2611\",\"'{0}' is defined as a property in class '{1}', but is overridden here in '{2}' as an accessor.\"),Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_add_a_declare_modifier_or_remove_the_redundant_declaration:b(2612,1,\"Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_2612\",\"Property '{0}' will overwrite the base property in '{1}'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration.\"),Module_0_has_no_default_export_Did_you_mean_to_use_import_1_from_0_instead:b(2613,1,\"Module_0_has_no_default_export_Did_you_mean_to_use_import_1_from_0_instead_2613\",\"Module '{0}' has no default export. Did you mean to use 'import { {1} } from {0}' instead?\"),Module_0_has_no_exported_member_1_Did_you_mean_to_use_import_1_from_0_instead:b(2614,1,\"Module_0_has_no_exported_member_1_Did_you_mean_to_use_import_1_from_0_instead_2614\",\"Module '{0}' has no exported member '{1}'. Did you mean to use 'import {1} from {0}' instead?\"),Type_of_property_0_circularly_references_itself_in_mapped_type_1:b(2615,1,\"Type_of_property_0_circularly_references_itself_in_mapped_type_1_2615\",\"Type of property '{0}' circularly references itself in mapped type '{1}'.\"),_0_can_only_be_imported_by_using_import_1_require_2_or_a_default_import:b(2616,1,\"_0_can_only_be_imported_by_using_import_1_require_2_or_a_default_import_2616\",\"'{0}' can only be imported by using 'import {1} = require({2})' or a default import.\"),_0_can_only_be_imported_by_using_import_1_require_2_or_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import:b(2617,1,\"_0_can_only_be_imported_by_using_import_1_require_2_or_by_turning_on_the_esModuleInterop_flag_and_us_2617\",\"'{0}' can only be imported by using 'import {1} = require({2})' or by turning on the 'esModuleInterop' flag and using a default import.\"),Source_has_0_element_s_but_target_requires_1:b(2618,1,\"Source_has_0_element_s_but_target_requires_1_2618\",\"Source has {0} element(s) but target requires {1}.\"),Source_has_0_element_s_but_target_allows_only_1:b(2619,1,\"Source_has_0_element_s_but_target_allows_only_1_2619\",\"Source has {0} element(s) but target allows only {1}.\"),Target_requires_0_element_s_but_source_may_have_fewer:b(2620,1,\"Target_requires_0_element_s_but_source_may_have_fewer_2620\",\"Target requires {0} element(s) but source may have fewer.\"),Target_allows_only_0_element_s_but_source_may_have_more:b(2621,1,\"Target_allows_only_0_element_s_but_source_may_have_more_2621\",\"Target allows only {0} element(s) but source may have more.\"),Source_provides_no_match_for_required_element_at_position_0_in_target:b(2623,1,\"Source_provides_no_match_for_required_element_at_position_0_in_target_2623\",\"Source provides no match for required element at position {0} in target.\"),Source_provides_no_match_for_variadic_element_at_position_0_in_target:b(2624,1,\"Source_provides_no_match_for_variadic_element_at_position_0_in_target_2624\",\"Source provides no match for variadic element at position {0} in target.\"),Variadic_element_at_position_0_in_source_does_not_match_element_at_position_1_in_target:b(2625,1,\"Variadic_element_at_position_0_in_source_does_not_match_element_at_position_1_in_target_2625\",\"Variadic element at position {0} in source does not match element at position {1} in target.\"),Type_at_position_0_in_source_is_not_compatible_with_type_at_position_1_in_target:b(2626,1,\"Type_at_position_0_in_source_is_not_compatible_with_type_at_position_1_in_target_2626\",\"Type at position {0} in source is not compatible with type at position {1} in target.\"),Type_at_positions_0_through_1_in_source_is_not_compatible_with_type_at_position_2_in_target:b(2627,1,\"Type_at_positions_0_through_1_in_source_is_not_compatible_with_type_at_position_2_in_target_2627\",\"Type at positions {0} through {1} in source is not compatible with type at position {2} in target.\"),Cannot_assign_to_0_because_it_is_an_enum:b(2628,1,\"Cannot_assign_to_0_because_it_is_an_enum_2628\",\"Cannot assign to '{0}' because it is an enum.\"),Cannot_assign_to_0_because_it_is_a_class:b(2629,1,\"Cannot_assign_to_0_because_it_is_a_class_2629\",\"Cannot assign to '{0}' because it is a class.\"),Cannot_assign_to_0_because_it_is_a_function:b(2630,1,\"Cannot_assign_to_0_because_it_is_a_function_2630\",\"Cannot assign to '{0}' because it is a function.\"),Cannot_assign_to_0_because_it_is_a_namespace:b(2631,1,\"Cannot_assign_to_0_because_it_is_a_namespace_2631\",\"Cannot assign to '{0}' because it is a namespace.\"),Cannot_assign_to_0_because_it_is_an_import:b(2632,1,\"Cannot_assign_to_0_because_it_is_an_import_2632\",\"Cannot assign to '{0}' because it is an import.\"),JSX_property_access_expressions_cannot_include_JSX_namespace_names:b(2633,1,\"JSX_property_access_expressions_cannot_include_JSX_namespace_names_2633\",\"JSX property access expressions cannot include JSX namespace names\"),_0_index_signatures_are_incompatible:b(2634,1,\"_0_index_signatures_are_incompatible_2634\",\"'{0}' index signatures are incompatible.\"),Type_0_has_no_signatures_for_which_the_type_argument_list_is_applicable:b(2635,1,\"Type_0_has_no_signatures_for_which_the_type_argument_list_is_applicable_2635\",\"Type '{0}' has no signatures for which the type argument list is applicable.\"),Type_0_is_not_assignable_to_type_1_as_implied_by_variance_annotation:b(2636,1,\"Type_0_is_not_assignable_to_type_1_as_implied_by_variance_annotation_2636\",\"Type '{0}' is not assignable to type '{1}' as implied by variance annotation.\"),Variance_annotations_are_only_supported_in_type_aliases_for_object_function_constructor_and_mapped_types:b(2637,1,\"Variance_annotations_are_only_supported_in_type_aliases_for_object_function_constructor_and_mapped_t_2637\",\"Variance annotations are only supported in type aliases for object, function, constructor, and mapped types.\"),Type_0_may_represent_a_primitive_value_which_is_not_permitted_as_the_right_operand_of_the_in_operator:b(2638,1,\"Type_0_may_represent_a_primitive_value_which_is_not_permitted_as_the_right_operand_of_the_in_operato_2638\",\"Type '{0}' may represent a primitive value, which is not permitted as the right operand of the 'in' operator.\"),Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity:b(2649,1,\"Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity_2649\",\"Cannot augment module '{0}' with value exports because it resolves to a non-module entity.\"),A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums:b(2651,1,\"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_memb_2651\",\"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\"),Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead:b(2652,1,\"Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_d_2652\",\"Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead.\"),Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1:b(2653,1,\"Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1_2653\",\"Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'.\"),JSX_expressions_must_have_one_parent_element:b(2657,1,\"JSX_expressions_must_have_one_parent_element_2657\",\"JSX expressions must have one parent element.\"),Type_0_provides_no_match_for_the_signature_1:b(2658,1,\"Type_0_provides_no_match_for_the_signature_1_2658\",\"Type '{0}' provides no match for the signature '{1}'.\"),super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher:b(2659,1,\"super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_highe_2659\",\"'super' is only allowed in members of object literal expressions when option 'target' is 'ES2015' or higher.\"),super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions:b(2660,1,\"super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions_2660\",\"'super' can only be referenced in members of derived classes or object literal expressions.\"),Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module:b(2661,1,\"Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module_2661\",\"Cannot export '{0}'. Only local declarations can be exported from a module.\"),Cannot_find_name_0_Did_you_mean_the_static_member_1_0:b(2662,1,\"Cannot_find_name_0_Did_you_mean_the_static_member_1_0_2662\",\"Cannot find name '{0}'. Did you mean the static member '{1}.{0}'?\"),Cannot_find_name_0_Did_you_mean_the_instance_member_this_0:b(2663,1,\"Cannot_find_name_0_Did_you_mean_the_instance_member_this_0_2663\",\"Cannot find name '{0}'. Did you mean the instance member 'this.{0}'?\"),Invalid_module_name_in_augmentation_module_0_cannot_be_found:b(2664,1,\"Invalid_module_name_in_augmentation_module_0_cannot_be_found_2664\",\"Invalid module name in augmentation, module '{0}' cannot be found.\"),Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augmented:b(2665,1,\"Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augm_2665\",\"Invalid module name in augmentation. Module '{0}' resolves to an untyped module at '{1}', which cannot be augmented.\"),Exports_and_export_assignments_are_not_permitted_in_module_augmentations:b(2666,1,\"Exports_and_export_assignments_are_not_permitted_in_module_augmentations_2666\",\"Exports and export assignments are not permitted in module augmentations.\"),Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_module:b(2667,1,\"Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_mod_2667\",\"Imports are not permitted in module augmentations. Consider moving them to the enclosing external module.\"),export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always_visible:b(2668,1,\"export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always__2668\",\"'export' modifier cannot be applied to ambient modules and module augmentations since they are always visible.\"),Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_declarations:b(2669,1,\"Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_2669\",\"Augmentations for the global scope can only be directly nested in external modules or ambient module declarations.\"),Augmentations_for_the_global_scope_should_have_declare_modifier_unless_they_appear_in_already_ambient_context:b(2670,1,\"Augmentations_for_the_global_scope_should_have_declare_modifier_unless_they_appear_in_already_ambien_2670\",\"Augmentations for the global scope should have 'declare' modifier unless they appear in already ambient context.\"),Cannot_augment_module_0_because_it_resolves_to_a_non_module_entity:b(2671,1,\"Cannot_augment_module_0_because_it_resolves_to_a_non_module_entity_2671\",\"Cannot augment module '{0}' because it resolves to a non-module entity.\"),Cannot_assign_a_0_constructor_type_to_a_1_constructor_type:b(2672,1,\"Cannot_assign_a_0_constructor_type_to_a_1_constructor_type_2672\",\"Cannot assign a '{0}' constructor type to a '{1}' constructor type.\"),Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration:b(2673,1,\"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration_2673\",\"Constructor of class '{0}' is private and only accessible within the class declaration.\"),Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration:b(2674,1,\"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration_2674\",\"Constructor of class '{0}' is protected and only accessible within the class declaration.\"),Cannot_extend_a_class_0_Class_constructor_is_marked_as_private:b(2675,1,\"Cannot_extend_a_class_0_Class_constructor_is_marked_as_private_2675\",\"Cannot extend a class '{0}'. Class constructor is marked as private.\"),Accessors_must_both_be_abstract_or_non_abstract:b(2676,1,\"Accessors_must_both_be_abstract_or_non_abstract_2676\",\"Accessors must both be abstract or non-abstract.\"),A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type:b(2677,1,\"A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type_2677\",\"A type predicate's type must be assignable to its parameter's type.\"),Type_0_is_not_comparable_to_type_1:b(2678,1,\"Type_0_is_not_comparable_to_type_1_2678\",\"Type '{0}' is not comparable to type '{1}'.\"),A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void:b(2679,1,\"A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void_2679\",\"A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'.\"),A_0_parameter_must_be_the_first_parameter:b(2680,1,\"A_0_parameter_must_be_the_first_parameter_2680\",\"A '{0}' parameter must be the first parameter.\"),A_constructor_cannot_have_a_this_parameter:b(2681,1,\"A_constructor_cannot_have_a_this_parameter_2681\",\"A constructor cannot have a 'this' parameter.\"),this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation:b(2683,1,\"this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_2683\",\"'this' implicitly has type 'any' because it does not have a type annotation.\"),The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1:b(2684,1,\"The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1_2684\",\"The 'this' context of type '{0}' is not assignable to method's 'this' of type '{1}'.\"),The_this_types_of_each_signature_are_incompatible:b(2685,1,\"The_this_types_of_each_signature_are_incompatible_2685\",\"The 'this' types of each signature are incompatible.\"),_0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead:b(2686,1,\"_0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead_2686\",\"'{0}' refers to a UMD global, but the current file is a module. Consider adding an import instead.\"),All_declarations_of_0_must_have_identical_modifiers:b(2687,1,\"All_declarations_of_0_must_have_identical_modifiers_2687\",\"All declarations of '{0}' must have identical modifiers.\"),Cannot_find_type_definition_file_for_0:b(2688,1,\"Cannot_find_type_definition_file_for_0_2688\",\"Cannot find type definition file for '{0}'.\"),Cannot_extend_an_interface_0_Did_you_mean_implements:b(2689,1,\"Cannot_extend_an_interface_0_Did_you_mean_implements_2689\",\"Cannot extend an interface '{0}'. Did you mean 'implements'?\"),_0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Did_you_mean_to_use_1_in_0:b(2690,1,\"_0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Did_you_mean_to_use_1_in_0_2690\",\"'{0}' only refers to a type, but is being used as a value here. Did you mean to use '{1} in {0}'?\"),_0_is_a_primitive_but_1_is_a_wrapper_object_Prefer_using_0_when_possible:b(2692,1,\"_0_is_a_primitive_but_1_is_a_wrapper_object_Prefer_using_0_when_possible_2692\",\"'{0}' is a primitive, but '{1}' is a wrapper object. Prefer using '{0}' when possible.\"),_0_only_refers_to_a_type_but_is_being_used_as_a_value_here:b(2693,1,\"_0_only_refers_to_a_type_but_is_being_used_as_a_value_here_2693\",\"'{0}' only refers to a type, but is being used as a value here.\"),Namespace_0_has_no_exported_member_1:b(2694,1,\"Namespace_0_has_no_exported_member_1_2694\",\"Namespace '{0}' has no exported member '{1}'.\"),Left_side_of_comma_operator_is_unused_and_has_no_side_effects:b(2695,1,\"Left_side_of_comma_operator_is_unused_and_has_no_side_effects_2695\",\"Left side of comma operator is unused and has no side effects.\",!0),The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead:b(2696,1,\"The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead_2696\",\"The 'Object' type is assignable to very few other types. Did you mean to use the 'any' type instead?\"),An_async_function_or_method_must_return_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option:b(2697,1,\"An_async_function_or_method_must_return_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_in_2697\",\"An async function or method must return a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your '--lib' option.\"),Spread_types_may_only_be_created_from_object_types:b(2698,1,\"Spread_types_may_only_be_created_from_object_types_2698\",\"Spread types may only be created from object types.\"),Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1:b(2699,1,\"Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1_2699\",\"Static property '{0}' conflicts with built-in property 'Function.{0}' of constructor function '{1}'.\"),Rest_types_may_only_be_created_from_object_types:b(2700,1,\"Rest_types_may_only_be_created_from_object_types_2700\",\"Rest types may only be created from object types.\"),The_target_of_an_object_rest_assignment_must_be_a_variable_or_a_property_access:b(2701,1,\"The_target_of_an_object_rest_assignment_must_be_a_variable_or_a_property_access_2701\",\"The target of an object rest assignment must be a variable or a property access.\"),_0_only_refers_to_a_type_but_is_being_used_as_a_namespace_here:b(2702,1,\"_0_only_refers_to_a_type_but_is_being_used_as_a_namespace_here_2702\",\"'{0}' only refers to a type, but is being used as a namespace here.\"),The_operand_of_a_delete_operator_must_be_a_property_reference:b(2703,1,\"The_operand_of_a_delete_operator_must_be_a_property_reference_2703\",\"The operand of a 'delete' operator must be a property reference.\"),The_operand_of_a_delete_operator_cannot_be_a_read_only_property:b(2704,1,\"The_operand_of_a_delete_operator_cannot_be_a_read_only_property_2704\",\"The operand of a 'delete' operator cannot be a read-only property.\"),An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option:b(2705,1,\"An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_de_2705\",\"An async function or method in ES5/ES3 requires the 'Promise' constructor.  Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option.\"),Required_type_parameters_may_not_follow_optional_type_parameters:b(2706,1,\"Required_type_parameters_may_not_follow_optional_type_parameters_2706\",\"Required type parameters may not follow optional type parameters.\"),Generic_type_0_requires_between_1_and_2_type_arguments:b(2707,1,\"Generic_type_0_requires_between_1_and_2_type_arguments_2707\",\"Generic type '{0}' requires between {1} and {2} type arguments.\"),Cannot_use_namespace_0_as_a_value:b(2708,1,\"Cannot_use_namespace_0_as_a_value_2708\",\"Cannot use namespace '{0}' as a value.\"),Cannot_use_namespace_0_as_a_type:b(2709,1,\"Cannot_use_namespace_0_as_a_type_2709\",\"Cannot use namespace '{0}' as a type.\"),_0_are_specified_twice_The_attribute_named_0_will_be_overwritten:b(2710,1,\"_0_are_specified_twice_The_attribute_named_0_will_be_overwritten_2710\",\"'{0}' are specified twice. The attribute named '{0}' will be overwritten.\"),A_dynamic_import_call_returns_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option:b(2711,1,\"A_dynamic_import_call_returns_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES20_2711\",\"A dynamic import call returns a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your '--lib' option.\"),A_dynamic_import_call_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option:b(2712,1,\"A_dynamic_import_call_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declarat_2712\",\"A dynamic import call in ES5/ES3 requires the 'Promise' constructor.  Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option.\"),Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1:b(2713,1,\"Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_p_2713\",`Cannot access '{0}.{1}' because '{0}' is a type, but not a namespace. Did you mean to retrieve the type of the property '{1}' in '{0}' with '{0}[\"{1}\"]'?`),The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context:b(2714,1,\"The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context_2714\",\"The expression of an export assignment must be an identifier or qualified name in an ambient context.\"),Abstract_property_0_in_class_1_cannot_be_accessed_in_the_constructor:b(2715,1,\"Abstract_property_0_in_class_1_cannot_be_accessed_in_the_constructor_2715\",\"Abstract property '{0}' in class '{1}' cannot be accessed in the constructor.\"),Type_parameter_0_has_a_circular_default:b(2716,1,\"Type_parameter_0_has_a_circular_default_2716\",\"Type parameter '{0}' has a circular default.\"),Subsequent_property_declarations_must_have_the_same_type_Property_0_must_be_of_type_1_but_here_has_type_2:b(2717,1,\"Subsequent_property_declarations_must_have_the_same_type_Property_0_must_be_of_type_1_but_here_has_t_2717\",\"Subsequent property declarations must have the same type.  Property '{0}' must be of type '{1}', but here has type '{2}'.\"),Duplicate_property_0:b(2718,1,\"Duplicate_property_0_2718\",\"Duplicate property '{0}'.\"),Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated:b(2719,1,\"Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719\",\"Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.\"),Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass:b(2720,1,\"Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720\",\"Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?\"),Cannot_invoke_an_object_which_is_possibly_null:b(2721,1,\"Cannot_invoke_an_object_which_is_possibly_null_2721\",\"Cannot invoke an object which is possibly 'null'.\"),Cannot_invoke_an_object_which_is_possibly_undefined:b(2722,1,\"Cannot_invoke_an_object_which_is_possibly_undefined_2722\",\"Cannot invoke an object which is possibly 'undefined'.\"),Cannot_invoke_an_object_which_is_possibly_null_or_undefined:b(2723,1,\"Cannot_invoke_an_object_which_is_possibly_null_or_undefined_2723\",\"Cannot invoke an object which is possibly 'null' or 'undefined'.\"),_0_has_no_exported_member_named_1_Did_you_mean_2:b(2724,1,\"_0_has_no_exported_member_named_1_Did_you_mean_2_2724\",\"'{0}' has no exported member named '{1}'. Did you mean '{2}'?\"),Class_name_cannot_be_Object_when_targeting_ES5_with_module_0:b(2725,1,\"Class_name_cannot_be_Object_when_targeting_ES5_with_module_0_2725\",\"Class name cannot be 'Object' when targeting ES5 with module {0}.\"),Cannot_find_lib_definition_for_0:b(2726,1,\"Cannot_find_lib_definition_for_0_2726\",\"Cannot find lib definition for '{0}'.\"),Cannot_find_lib_definition_for_0_Did_you_mean_1:b(2727,1,\"Cannot_find_lib_definition_for_0_Did_you_mean_1_2727\",\"Cannot find lib definition for '{0}'. Did you mean '{1}'?\"),_0_is_declared_here:b(2728,3,\"_0_is_declared_here_2728\",\"'{0}' is declared here.\"),Property_0_is_used_before_its_initialization:b(2729,1,\"Property_0_is_used_before_its_initialization_2729\",\"Property '{0}' is used before its initialization.\"),An_arrow_function_cannot_have_a_this_parameter:b(2730,1,\"An_arrow_function_cannot_have_a_this_parameter_2730\",\"An arrow function cannot have a 'this' parameter.\"),Implicit_conversion_of_a_symbol_to_a_string_will_fail_at_runtime_Consider_wrapping_this_expression_in_String:b(2731,1,\"Implicit_conversion_of_a_symbol_to_a_string_will_fail_at_runtime_Consider_wrapping_this_expression_i_2731\",\"Implicit conversion of a 'symbol' to a 'string' will fail at runtime. Consider wrapping this expression in 'String(...)'.\"),Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension:b(2732,1,\"Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension_2732\",\"Cannot find module '{0}'. Consider using '--resolveJsonModule' to import module with '.json' extension.\"),Property_0_was_also_declared_here:b(2733,1,\"Property_0_was_also_declared_here_2733\",\"Property '{0}' was also declared here.\"),Are_you_missing_a_semicolon:b(2734,1,\"Are_you_missing_a_semicolon_2734\",\"Are you missing a semicolon?\"),Did_you_mean_for_0_to_be_constrained_to_type_new_args_Colon_any_1:b(2735,1,\"Did_you_mean_for_0_to_be_constrained_to_type_new_args_Colon_any_1_2735\",\"Did you mean for '{0}' to be constrained to type 'new (...args: any[]) => {1}'?\"),Operator_0_cannot_be_applied_to_type_1:b(2736,1,\"Operator_0_cannot_be_applied_to_type_1_2736\",\"Operator '{0}' cannot be applied to type '{1}'.\"),BigInt_literals_are_not_available_when_targeting_lower_than_ES2020:b(2737,1,\"BigInt_literals_are_not_available_when_targeting_lower_than_ES2020_2737\",\"BigInt literals are not available when targeting lower than ES2020.\"),An_outer_value_of_this_is_shadowed_by_this_container:b(2738,3,\"An_outer_value_of_this_is_shadowed_by_this_container_2738\",\"An outer value of 'this' is shadowed by this container.\"),Type_0_is_missing_the_following_properties_from_type_1_Colon_2:b(2739,1,\"Type_0_is_missing_the_following_properties_from_type_1_Colon_2_2739\",\"Type '{0}' is missing the following properties from type '{1}': {2}\"),Type_0_is_missing_the_following_properties_from_type_1_Colon_2_and_3_more:b(2740,1,\"Type_0_is_missing_the_following_properties_from_type_1_Colon_2_and_3_more_2740\",\"Type '{0}' is missing the following properties from type '{1}': {2}, and {3} more.\"),Property_0_is_missing_in_type_1_but_required_in_type_2:b(2741,1,\"Property_0_is_missing_in_type_1_but_required_in_type_2_2741\",\"Property '{0}' is missing in type '{1}' but required in type '{2}'.\"),The_inferred_type_of_0_cannot_be_named_without_a_reference_to_1_This_is_likely_not_portable_A_type_annotation_is_necessary:b(2742,1,\"The_inferred_type_of_0_cannot_be_named_without_a_reference_to_1_This_is_likely_not_portable_A_type_a_2742\",\"The inferred type of '{0}' cannot be named without a reference to '{1}'. This is likely not portable. A type annotation is necessary.\"),No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments:b(2743,1,\"No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments_2743\",\"No overload expects {0} type arguments, but overloads do exist that expect either {1} or {2} type arguments.\"),Type_parameter_defaults_can_only_reference_previously_declared_type_parameters:b(2744,1,\"Type_parameter_defaults_can_only_reference_previously_declared_type_parameters_2744\",\"Type parameter defaults can only reference previously declared type parameters.\"),This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_provided:b(2745,1,\"This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_pr_2745\",\"This JSX tag's '{0}' prop expects type '{1}' which requires multiple children, but only a single child was provided.\"),This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided:b(2746,1,\"This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided_2746\",\"This JSX tag's '{0}' prop expects a single child of type '{1}', but multiple children were provided.\"),_0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_type_of_1_is_2:b(2747,1,\"_0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_t_2747\",\"'{0}' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of '{1}' is '{2}'.\"),Cannot_access_ambient_const_enums_when_0_is_enabled:b(2748,1,\"Cannot_access_ambient_const_enums_when_0_is_enabled_2748\",\"Cannot access ambient const enums when '{0}' is enabled.\"),_0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0:b(2749,1,\"_0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0_2749\",\"'{0}' refers to a value, but is being used as a type here. Did you mean 'typeof {0}'?\"),The_implementation_signature_is_declared_here:b(2750,1,\"The_implementation_signature_is_declared_here_2750\",\"The implementation signature is declared here.\"),Circularity_originates_in_type_at_this_location:b(2751,1,\"Circularity_originates_in_type_at_this_location_2751\",\"Circularity originates in type at this location.\"),The_first_export_default_is_here:b(2752,1,\"The_first_export_default_is_here_2752\",\"The first export default is here.\"),Another_export_default_is_here:b(2753,1,\"Another_export_default_is_here_2753\",\"Another export default is here.\"),super_may_not_use_type_arguments:b(2754,1,\"super_may_not_use_type_arguments_2754\",\"'super' may not use type arguments.\"),No_constituent_of_type_0_is_callable:b(2755,1,\"No_constituent_of_type_0_is_callable_2755\",\"No constituent of type '{0}' is callable.\"),Not_all_constituents_of_type_0_are_callable:b(2756,1,\"Not_all_constituents_of_type_0_are_callable_2756\",\"Not all constituents of type '{0}' are callable.\"),Type_0_has_no_call_signatures:b(2757,1,\"Type_0_has_no_call_signatures_2757\",\"Type '{0}' has no call signatures.\"),Each_member_of_the_union_type_0_has_signatures_but_none_of_those_signatures_are_compatible_with_each_other:b(2758,1,\"Each_member_of_the_union_type_0_has_signatures_but_none_of_those_signatures_are_compatible_with_each_2758\",\"Each member of the union type '{0}' has signatures, but none of those signatures are compatible with each other.\"),No_constituent_of_type_0_is_constructable:b(2759,1,\"No_constituent_of_type_0_is_constructable_2759\",\"No constituent of type '{0}' is constructable.\"),Not_all_constituents_of_type_0_are_constructable:b(2760,1,\"Not_all_constituents_of_type_0_are_constructable_2760\",\"Not all constituents of type '{0}' are constructable.\"),Type_0_has_no_construct_signatures:b(2761,1,\"Type_0_has_no_construct_signatures_2761\",\"Type '{0}' has no construct signatures.\"),Each_member_of_the_union_type_0_has_construct_signatures_but_none_of_those_signatures_are_compatible_with_each_other:b(2762,1,\"Each_member_of_the_union_type_0_has_construct_signatures_but_none_of_those_signatures_are_compatible_2762\",\"Each member of the union type '{0}' has construct signatures, but none of those signatures are compatible with each other.\"),Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_for_of_will_always_send_0:b(2763,1,\"Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_for_of_will_always_s_2763\",\"Cannot iterate value because the 'next' method of its iterator expects type '{1}', but for-of will always send '{0}'.\"),Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_spread_will_always_send_0:b(2764,1,\"Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_spread_will_al_2764\",\"Cannot iterate value because the 'next' method of its iterator expects type '{1}', but array spread will always send '{0}'.\"),Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_destructuring_will_always_send_0:b(2765,1,\"Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_destructuring__2765\",\"Cannot iterate value because the 'next' method of its iterator expects type '{1}', but array destructuring will always send '{0}'.\"),Cannot_delegate_iteration_to_value_because_the_next_method_of_its_iterator_expects_type_1_but_the_containing_generator_will_always_send_0:b(2766,1,\"Cannot_delegate_iteration_to_value_because_the_next_method_of_its_iterator_expects_type_1_but_the_co_2766\",\"Cannot delegate iteration to value because the 'next' method of its iterator expects type '{1}', but the containing generator will always send '{0}'.\"),The_0_property_of_an_iterator_must_be_a_method:b(2767,1,\"The_0_property_of_an_iterator_must_be_a_method_2767\",\"The '{0}' property of an iterator must be a method.\"),The_0_property_of_an_async_iterator_must_be_a_method:b(2768,1,\"The_0_property_of_an_async_iterator_must_be_a_method_2768\",\"The '{0}' property of an async iterator must be a method.\"),No_overload_matches_this_call:b(2769,1,\"No_overload_matches_this_call_2769\",\"No overload matches this call.\"),The_last_overload_gave_the_following_error:b(2770,1,\"The_last_overload_gave_the_following_error_2770\",\"The last overload gave the following error.\"),The_last_overload_is_declared_here:b(2771,1,\"The_last_overload_is_declared_here_2771\",\"The last overload is declared here.\"),Overload_0_of_1_2_gave_the_following_error:b(2772,1,\"Overload_0_of_1_2_gave_the_following_error_2772\",\"Overload {0} of {1}, '{2}', gave the following error.\"),Did_you_forget_to_use_await:b(2773,1,\"Did_you_forget_to_use_await_2773\",\"Did you forget to use 'await'?\"),This_condition_will_always_return_true_since_this_function_is_always_defined_Did_you_mean_to_call_it_instead:b(2774,1,\"This_condition_will_always_return_true_since_this_function_is_always_defined_Did_you_mean_to_call_it_2774\",\"This condition will always return true since this function is always defined. Did you mean to call it instead?\"),Assertions_require_every_name_in_the_call_target_to_be_declared_with_an_explicit_type_annotation:b(2775,1,\"Assertions_require_every_name_in_the_call_target_to_be_declared_with_an_explicit_type_annotation_2775\",\"Assertions require every name in the call target to be declared with an explicit type annotation.\"),Assertions_require_the_call_target_to_be_an_identifier_or_qualified_name:b(2776,1,\"Assertions_require_the_call_target_to_be_an_identifier_or_qualified_name_2776\",\"Assertions require the call target to be an identifier or qualified name.\"),The_operand_of_an_increment_or_decrement_operator_may_not_be_an_optional_property_access:b(2777,1,\"The_operand_of_an_increment_or_decrement_operator_may_not_be_an_optional_property_access_2777\",\"The operand of an increment or decrement operator may not be an optional property access.\"),The_target_of_an_object_rest_assignment_may_not_be_an_optional_property_access:b(2778,1,\"The_target_of_an_object_rest_assignment_may_not_be_an_optional_property_access_2778\",\"The target of an object rest assignment may not be an optional property access.\"),The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access:b(2779,1,\"The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access_2779\",\"The left-hand side of an assignment expression may not be an optional property access.\"),The_left_hand_side_of_a_for_in_statement_may_not_be_an_optional_property_access:b(2780,1,\"The_left_hand_side_of_a_for_in_statement_may_not_be_an_optional_property_access_2780\",\"The left-hand side of a 'for...in' statement may not be an optional property access.\"),The_left_hand_side_of_a_for_of_statement_may_not_be_an_optional_property_access:b(2781,1,\"The_left_hand_side_of_a_for_of_statement_may_not_be_an_optional_property_access_2781\",\"The left-hand side of a 'for...of' statement may not be an optional property access.\"),_0_needs_an_explicit_type_annotation:b(2782,3,\"_0_needs_an_explicit_type_annotation_2782\",\"'{0}' needs an explicit type annotation.\"),_0_is_specified_more_than_once_so_this_usage_will_be_overwritten:b(2783,1,\"_0_is_specified_more_than_once_so_this_usage_will_be_overwritten_2783\",\"'{0}' is specified more than once, so this usage will be overwritten.\"),get_and_set_accessors_cannot_declare_this_parameters:b(2784,1,\"get_and_set_accessors_cannot_declare_this_parameters_2784\",\"'get' and 'set' accessors cannot declare 'this' parameters.\"),This_spread_always_overwrites_this_property:b(2785,1,\"This_spread_always_overwrites_this_property_2785\",\"This spread always overwrites this property.\"),_0_cannot_be_used_as_a_JSX_component:b(2786,1,\"_0_cannot_be_used_as_a_JSX_component_2786\",\"'{0}' cannot be used as a JSX component.\"),Its_return_type_0_is_not_a_valid_JSX_element:b(2787,1,\"Its_return_type_0_is_not_a_valid_JSX_element_2787\",\"Its return type '{0}' is not a valid JSX element.\"),Its_instance_type_0_is_not_a_valid_JSX_element:b(2788,1,\"Its_instance_type_0_is_not_a_valid_JSX_element_2788\",\"Its instance type '{0}' is not a valid JSX element.\"),Its_element_type_0_is_not_a_valid_JSX_element:b(2789,1,\"Its_element_type_0_is_not_a_valid_JSX_element_2789\",\"Its element type '{0}' is not a valid JSX element.\"),The_operand_of_a_delete_operator_must_be_optional:b(2790,1,\"The_operand_of_a_delete_operator_must_be_optional_2790\",\"The operand of a 'delete' operator must be optional.\"),Exponentiation_cannot_be_performed_on_bigint_values_unless_the_target_option_is_set_to_es2016_or_later:b(2791,1,\"Exponentiation_cannot_be_performed_on_bigint_values_unless_the_target_option_is_set_to_es2016_or_lat_2791\",\"Exponentiation cannot be performed on 'bigint' values unless the 'target' option is set to 'es2016' or later.\"),Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_nodenext_or_to_add_aliases_to_the_paths_option:b(2792,1,\"Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_nodenext_or_to_add_aliases_t_2792\",\"Cannot find module '{0}'. Did you mean to set the 'moduleResolution' option to 'nodenext', or to add aliases to the 'paths' option?\"),The_call_would_have_succeeded_against_this_implementation_but_implementation_signatures_of_overloads_are_not_externally_visible:b(2793,1,\"The_call_would_have_succeeded_against_this_implementation_but_implementation_signatures_of_overloads_2793\",\"The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible.\"),Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise:b(2794,1,\"Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise_2794\",\"Expected {0} arguments, but got {1}. Did you forget to include 'void' in your type argument to 'Promise'?\"),The_intrinsic_keyword_can_only_be_used_to_declare_compiler_provided_intrinsic_types:b(2795,1,\"The_intrinsic_keyword_can_only_be_used_to_declare_compiler_provided_intrinsic_types_2795\",\"The 'intrinsic' keyword can only be used to declare compiler provided intrinsic types.\"),It_is_likely_that_you_are_missing_a_comma_to_separate_these_two_template_expressions_They_form_a_tagged_template_expression_which_cannot_be_invoked:b(2796,1,\"It_is_likely_that_you_are_missing_a_comma_to_separate_these_two_template_expressions_They_form_a_tag_2796\",\"It is likely that you are missing a comma to separate these two template expressions. They form a tagged template expression which cannot be invoked.\"),A_mixin_class_that_extends_from_a_type_variable_containing_an_abstract_construct_signature_must_also_be_declared_abstract:b(2797,1,\"A_mixin_class_that_extends_from_a_type_variable_containing_an_abstract_construct_signature_must_also_2797\",\"A mixin class that extends from a type variable containing an abstract construct signature must also be declared 'abstract'.\"),The_declaration_was_marked_as_deprecated_here:b(2798,1,\"The_declaration_was_marked_as_deprecated_here_2798\",\"The declaration was marked as deprecated here.\"),Type_produces_a_tuple_type_that_is_too_large_to_represent:b(2799,1,\"Type_produces_a_tuple_type_that_is_too_large_to_represent_2799\",\"Type produces a tuple type that is too large to represent.\"),Expression_produces_a_tuple_type_that_is_too_large_to_represent:b(2800,1,\"Expression_produces_a_tuple_type_that_is_too_large_to_represent_2800\",\"Expression produces a tuple type that is too large to represent.\"),This_condition_will_always_return_true_since_this_0_is_always_defined:b(2801,1,\"This_condition_will_always_return_true_since_this_0_is_always_defined_2801\",\"This condition will always return true since this '{0}' is always defined.\"),Type_0_can_only_be_iterated_through_when_using_the_downlevelIteration_flag_or_with_a_target_of_es2015_or_higher:b(2802,1,\"Type_0_can_only_be_iterated_through_when_using_the_downlevelIteration_flag_or_with_a_target_of_es201_2802\",\"Type '{0}' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher.\"),Cannot_assign_to_private_method_0_Private_methods_are_not_writable:b(2803,1,\"Cannot_assign_to_private_method_0_Private_methods_are_not_writable_2803\",\"Cannot assign to private method '{0}'. Private methods are not writable.\"),Duplicate_identifier_0_Static_and_instance_elements_cannot_share_the_same_private_name:b(2804,1,\"Duplicate_identifier_0_Static_and_instance_elements_cannot_share_the_same_private_name_2804\",\"Duplicate identifier '{0}'. Static and instance elements cannot share the same private name.\"),Private_accessor_was_defined_without_a_getter:b(2806,1,\"Private_accessor_was_defined_without_a_getter_2806\",\"Private accessor was defined without a getter.\"),This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0:b(2807,1,\"This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_o_2807\",\"This syntax requires an imported helper named '{1}' with {2} parameters, which is not compatible with the one in '{0}'. Consider upgrading your version of '{0}'.\"),A_get_accessor_must_be_at_least_as_accessible_as_the_setter:b(2808,1,\"A_get_accessor_must_be_at_least_as_accessible_as_the_setter_2808\",\"A get accessor must be at least as accessible as the setter\"),Declaration_or_statement_expected_This_follows_a_block_of_statements_so_if_you_intended_to_write_a_destructuring_assignment_you_might_need_to_wrap_the_whole_assignment_in_parentheses:b(2809,1,\"Declaration_or_statement_expected_This_follows_a_block_of_statements_so_if_you_intended_to_write_a_d_2809\",\"Declaration or statement expected. This '=' follows a block of statements, so if you intended to write a destructuring assignment, you might need to wrap the whole assignment in parentheses.\"),Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments:b(2810,1,\"Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_2810\",\"Expected 1 argument, but got 0. 'new Promise()' needs a JSDoc hint to produce a 'resolve' that can be called without arguments.\"),Initializer_for_property_0:b(2811,1,\"Initializer_for_property_0_2811\",\"Initializer for property '{0}'\"),Property_0_does_not_exist_on_type_1_Try_changing_the_lib_compiler_option_to_include_dom:b(2812,1,\"Property_0_does_not_exist_on_type_1_Try_changing_the_lib_compiler_option_to_include_dom_2812\",\"Property '{0}' does not exist on type '{1}'. Try changing the 'lib' compiler option to include 'dom'.\"),Class_declaration_cannot_implement_overload_list_for_0:b(2813,1,\"Class_declaration_cannot_implement_overload_list_for_0_2813\",\"Class declaration cannot implement overload list for '{0}'.\"),Function_with_bodies_can_only_merge_with_classes_that_are_ambient:b(2814,1,\"Function_with_bodies_can_only_merge_with_classes_that_are_ambient_2814\",\"Function with bodies can only merge with classes that are ambient.\"),arguments_cannot_be_referenced_in_property_initializers:b(2815,1,\"arguments_cannot_be_referenced_in_property_initializers_2815\",\"'arguments' cannot be referenced in property initializers.\"),Cannot_use_this_in_a_static_property_initializer_of_a_decorated_class:b(2816,1,\"Cannot_use_this_in_a_static_property_initializer_of_a_decorated_class_2816\",\"Cannot use 'this' in a static property initializer of a decorated class.\"),Property_0_has_no_initializer_and_is_not_definitely_assigned_in_a_class_static_block:b(2817,1,\"Property_0_has_no_initializer_and_is_not_definitely_assigned_in_a_class_static_block_2817\",\"Property '{0}' has no initializer and is not definitely assigned in a class static block.\"),Duplicate_identifier_0_Compiler_reserves_name_1_when_emitting_super_references_in_static_initializers:b(2818,1,\"Duplicate_identifier_0_Compiler_reserves_name_1_when_emitting_super_references_in_static_initializer_2818\",\"Duplicate identifier '{0}'. Compiler reserves name '{1}' when emitting 'super' references in static initializers.\"),Namespace_name_cannot_be_0:b(2819,1,\"Namespace_name_cannot_be_0_2819\",\"Namespace name cannot be '{0}'.\"),Type_0_is_not_assignable_to_type_1_Did_you_mean_2:b(2820,1,\"Type_0_is_not_assignable_to_type_1_Did_you_mean_2_2820\",\"Type '{0}' is not assignable to type '{1}'. Did you mean '{2}'?\"),Import_assertions_are_only_supported_when_the_module_option_is_set_to_esnext_or_nodenext:b(2821,1,\"Import_assertions_are_only_supported_when_the_module_option_is_set_to_esnext_or_nodenext_2821\",\"Import assertions are only supported when the '--module' option is set to 'esnext' or 'nodenext'.\"),Import_assertions_cannot_be_used_with_type_only_imports_or_exports:b(2822,1,\"Import_assertions_cannot_be_used_with_type_only_imports_or_exports_2822\",\"Import assertions cannot be used with type-only imports or exports.\"),Cannot_find_namespace_0_Did_you_mean_1:b(2833,1,\"Cannot_find_namespace_0_Did_you_mean_1_2833\",\"Cannot find namespace '{0}'. Did you mean '{1}'?\"),Relative_import_paths_need_explicit_file_extensions_in_EcmaScript_imports_when_moduleResolution_is_node16_or_nodenext_Consider_adding_an_extension_to_the_import_path:b(2834,1,\"Relative_import_paths_need_explicit_file_extensions_in_EcmaScript_imports_when_moduleResolution_is_n_2834\",\"Relative import paths need explicit file extensions in EcmaScript imports when '--moduleResolution' is 'node16' or 'nodenext'. Consider adding an extension to the import path.\"),Relative_import_paths_need_explicit_file_extensions_in_EcmaScript_imports_when_moduleResolution_is_node16_or_nodenext_Did_you_mean_0:b(2835,1,\"Relative_import_paths_need_explicit_file_extensions_in_EcmaScript_imports_when_moduleResolution_is_n_2835\",\"Relative import paths need explicit file extensions in EcmaScript imports when '--moduleResolution' is 'node16' or 'nodenext'. Did you mean '{0}'?\"),Import_assertions_are_not_allowed_on_statements_that_transpile_to_commonjs_require_calls:b(2836,1,\"Import_assertions_are_not_allowed_on_statements_that_transpile_to_commonjs_require_calls_2836\",\"Import assertions are not allowed on statements that transpile to commonjs 'require' calls.\"),Import_assertion_values_must_be_string_literal_expressions:b(2837,1,\"Import_assertion_values_must_be_string_literal_expressions_2837\",\"Import assertion values must be string literal expressions.\"),All_declarations_of_0_must_have_identical_constraints:b(2838,1,\"All_declarations_of_0_must_have_identical_constraints_2838\",\"All declarations of '{0}' must have identical constraints.\"),This_condition_will_always_return_0_since_JavaScript_compares_objects_by_reference_not_value:b(2839,1,\"This_condition_will_always_return_0_since_JavaScript_compares_objects_by_reference_not_value_2839\",\"This condition will always return '{0}' since JavaScript compares objects by reference, not value.\"),An_interface_cannot_extend_a_primitive_type_like_0_an_interface_can_only_extend_named_types_and_classes:b(2840,1,\"An_interface_cannot_extend_a_primitive_type_like_0_an_interface_can_only_extend_named_types_and_clas_2840\",\"An interface cannot extend a primitive type like '{0}'; an interface can only extend named types and classes\"),The_type_of_this_expression_cannot_be_named_without_a_resolution_mode_assertion_which_is_an_unstable_feature_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next:b(2841,1,\"The_type_of_this_expression_cannot_be_named_without_a_resolution_mode_assertion_which_is_an_unstable_2841\",\"The type of this expression cannot be named without a 'resolution-mode' assertion, which is an unstable feature. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'.\"),_0_is_an_unused_renaming_of_1_Did_you_intend_to_use_it_as_a_type_annotation:b(2842,1,\"_0_is_an_unused_renaming_of_1_Did_you_intend_to_use_it_as_a_type_annotation_2842\",\"'{0}' is an unused renaming of '{1}'. Did you intend to use it as a type annotation?\"),We_can_only_write_a_type_for_0_by_adding_a_type_for_the_entire_parameter_here:b(2843,1,\"We_can_only_write_a_type_for_0_by_adding_a_type_for_the_entire_parameter_here_2843\",\"We can only write a type for '{0}' by adding a type for the entire parameter here.\"),Type_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor:b(2844,1,\"Type_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor_2844\",\"Type of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor.\"),This_condition_will_always_return_0:b(2845,1,\"This_condition_will_always_return_0_2845\",\"This condition will always return '{0}'.\"),A_declaration_file_cannot_be_imported_without_import_type_Did_you_mean_to_import_an_implementation_file_0_instead:b(2846,1,\"A_declaration_file_cannot_be_imported_without_import_type_Did_you_mean_to_import_an_implementation_f_2846\",\"A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file '{0}' instead?\"),Import_declaration_0_is_using_private_name_1:b(4e3,1,\"Import_declaration_0_is_using_private_name_1_4000\",\"Import declaration '{0}' is using private name '{1}'.\"),Type_parameter_0_of_exported_class_has_or_is_using_private_name_1:b(4002,1,\"Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002\",\"Type parameter '{0}' of exported class has or is using private name '{1}'.\"),Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1:b(4004,1,\"Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004\",\"Type parameter '{0}' of exported interface has or is using private name '{1}'.\"),Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1:b(4006,1,\"Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1_4006\",\"Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'.\"),Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1:b(4008,1,\"Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1_4008\",\"Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'.\"),Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1:b(4010,1,\"Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1_4010\",\"Type parameter '{0}' of public static method from exported class has or is using private name '{1}'.\"),Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1:b(4012,1,\"Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1_4012\",\"Type parameter '{0}' of public method from exported class has or is using private name '{1}'.\"),Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1:b(4014,1,\"Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1_4014\",\"Type parameter '{0}' of method from exported interface has or is using private name '{1}'.\"),Type_parameter_0_of_exported_function_has_or_is_using_private_name_1:b(4016,1,\"Type_parameter_0_of_exported_function_has_or_is_using_private_name_1_4016\",\"Type parameter '{0}' of exported function has or is using private name '{1}'.\"),Implements_clause_of_exported_class_0_has_or_is_using_private_name_1:b(4019,1,\"Implements_clause_of_exported_class_0_has_or_is_using_private_name_1_4019\",\"Implements clause of exported class '{0}' has or is using private name '{1}'.\"),extends_clause_of_exported_class_0_has_or_is_using_private_name_1:b(4020,1,\"extends_clause_of_exported_class_0_has_or_is_using_private_name_1_4020\",\"'extends' clause of exported class '{0}' has or is using private name '{1}'.\"),extends_clause_of_exported_class_has_or_is_using_private_name_0:b(4021,1,\"extends_clause_of_exported_class_has_or_is_using_private_name_0_4021\",\"'extends' clause of exported class has or is using private name '{0}'.\"),extends_clause_of_exported_interface_0_has_or_is_using_private_name_1:b(4022,1,\"extends_clause_of_exported_interface_0_has_or_is_using_private_name_1_4022\",\"'extends' clause of exported interface '{0}' has or is using private name '{1}'.\"),Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:b(4023,1,\"Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4023\",\"Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named.\"),Exported_variable_0_has_or_is_using_name_1_from_private_module_2:b(4024,1,\"Exported_variable_0_has_or_is_using_name_1_from_private_module_2_4024\",\"Exported variable '{0}' has or is using name '{1}' from private module '{2}'.\"),Exported_variable_0_has_or_is_using_private_name_1:b(4025,1,\"Exported_variable_0_has_or_is_using_private_name_1_4025\",\"Exported variable '{0}' has or is using private name '{1}'.\"),Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:b(4026,1,\"Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot__4026\",\"Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.\"),Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:b(4027,1,\"Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4027\",\"Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'.\"),Public_static_property_0_of_exported_class_has_or_is_using_private_name_1:b(4028,1,\"Public_static_property_0_of_exported_class_has_or_is_using_private_name_1_4028\",\"Public static property '{0}' of exported class has or is using private name '{1}'.\"),Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:b(4029,1,\"Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_name_4029\",\"Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.\"),Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:b(4030,1,\"Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4030\",\"Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'.\"),Public_property_0_of_exported_class_has_or_is_using_private_name_1:b(4031,1,\"Public_property_0_of_exported_class_has_or_is_using_private_name_1_4031\",\"Public property '{0}' of exported class has or is using private name '{1}'.\"),Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2:b(4032,1,\"Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2_4032\",\"Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'.\"),Property_0_of_exported_interface_has_or_is_using_private_name_1:b(4033,1,\"Property_0_of_exported_interface_has_or_is_using_private_name_1_4033\",\"Property '{0}' of exported interface has or is using private name '{1}'.\"),Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:b(4034,1,\"Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_name_1_from_private_mod_4034\",\"Parameter type of public static setter '{0}' from exported class has or is using name '{1}' from private module '{2}'.\"),Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_private_name_1:b(4035,1,\"Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_private_name_1_4035\",\"Parameter type of public static setter '{0}' from exported class has or is using private name '{1}'.\"),Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:b(4036,1,\"Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2_4036\",\"Parameter type of public setter '{0}' from exported class has or is using name '{1}' from private module '{2}'.\"),Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_private_name_1:b(4037,1,\"Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_private_name_1_4037\",\"Parameter type of public setter '{0}' from exported class has or is using private name '{1}'.\"),Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:b(4038,1,\"Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_external_modul_4038\",\"Return type of public static getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named.\"),Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:b(4039,1,\"Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_4039\",\"Return type of public static getter '{0}' from exported class has or is using name '{1}' from private module '{2}'.\"),Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_private_name_1:b(4040,1,\"Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_private_name_1_4040\",\"Return type of public static getter '{0}' from exported class has or is using private name '{1}'.\"),Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:b(4041,1,\"Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_4041\",\"Return type of public getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named.\"),Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:b(4042,1,\"Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2_4042\",\"Return type of public getter '{0}' from exported class has or is using name '{1}' from private module '{2}'.\"),Return_type_of_public_getter_0_from_exported_class_has_or_is_using_private_name_1:b(4043,1,\"Return_type_of_public_getter_0_from_exported_class_has_or_is_using_private_name_1_4043\",\"Return type of public getter '{0}' from exported class has or is using private name '{1}'.\"),Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:b(4044,1,\"Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_mod_4044\",\"Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'.\"),Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0:b(4045,1,\"Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0_4045\",\"Return type of constructor signature from exported interface has or is using private name '{0}'.\"),Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:b(4046,1,\"Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1_4046\",\"Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'.\"),Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0:b(4047,1,\"Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0_4047\",\"Return type of call signature from exported interface has or is using private name '{0}'.\"),Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:b(4048,1,\"Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1_4048\",\"Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'.\"),Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0:b(4049,1,\"Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0_4049\",\"Return type of index signature from exported interface has or is using private name '{0}'.\"),Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:b(4050,1,\"Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module__4050\",\"Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named.\"),Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1:b(4051,1,\"Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1_4051\",\"Return type of public static method from exported class has or is using name '{0}' from private module '{1}'.\"),Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0:b(4052,1,\"Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0_4052\",\"Return type of public static method from exported class has or is using private name '{0}'.\"),Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:b(4053,1,\"Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_c_4053\",\"Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named.\"),Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1:b(4054,1,\"Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1_4054\",\"Return type of public method from exported class has or is using name '{0}' from private module '{1}'.\"),Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0:b(4055,1,\"Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0_4055\",\"Return type of public method from exported class has or is using private name '{0}'.\"),Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1:b(4056,1,\"Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1_4056\",\"Return type of method from exported interface has or is using name '{0}' from private module '{1}'.\"),Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0:b(4057,1,\"Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0_4057\",\"Return type of method from exported interface has or is using private name '{0}'.\"),Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:b(4058,1,\"Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named_4058\",\"Return type of exported function has or is using name '{0}' from external module {1} but cannot be named.\"),Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1:b(4059,1,\"Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1_4059\",\"Return type of exported function has or is using name '{0}' from private module '{1}'.\"),Return_type_of_exported_function_has_or_is_using_private_name_0:b(4060,1,\"Return_type_of_exported_function_has_or_is_using_private_name_0_4060\",\"Return type of exported function has or is using private name '{0}'.\"),Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:b(4061,1,\"Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_can_4061\",\"Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named.\"),Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2:b(4062,1,\"Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2_4062\",\"Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'.\"),Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1:b(4063,1,\"Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1_4063\",\"Parameter '{0}' of constructor from exported class has or is using private name '{1}'.\"),Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:b(4064,1,\"Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_mod_4064\",\"Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'.\"),Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1:b(4065,1,\"Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1_4065\",\"Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'.\"),Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:b(4066,1,\"Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2_4066\",\"Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'.\"),Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1:b(4067,1,\"Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1_4067\",\"Parameter '{0}' of call signature from exported interface has or is using private name '{1}'.\"),Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:b(4068,1,\"Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module__4068\",\"Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named.\"),Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2:b(4069,1,\"Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2_4069\",\"Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'.\"),Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1:b(4070,1,\"Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1_4070\",\"Parameter '{0}' of public static method from exported class has or is using private name '{1}'.\"),Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:b(4071,1,\"Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_c_4071\",\"Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named.\"),Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2:b(4072,1,\"Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2_4072\",\"Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'.\"),Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1:b(4073,1,\"Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1_4073\",\"Parameter '{0}' of public method from exported class has or is using private name '{1}'.\"),Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2:b(4074,1,\"Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2_4074\",\"Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'.\"),Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1:b(4075,1,\"Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1_4075\",\"Parameter '{0}' of method from exported interface has or is using private name '{1}'.\"),Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:b(4076,1,\"Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4076\",\"Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named.\"),Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2:b(4077,1,\"Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2_4077\",\"Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'.\"),Parameter_0_of_exported_function_has_or_is_using_private_name_1:b(4078,1,\"Parameter_0_of_exported_function_has_or_is_using_private_name_1_4078\",\"Parameter '{0}' of exported function has or is using private name '{1}'.\"),Exported_type_alias_0_has_or_is_using_private_name_1:b(4081,1,\"Exported_type_alias_0_has_or_is_using_private_name_1_4081\",\"Exported type alias '{0}' has or is using private name '{1}'.\"),Default_export_of_the_module_has_or_is_using_private_name_0:b(4082,1,\"Default_export_of_the_module_has_or_is_using_private_name_0_4082\",\"Default export of the module has or is using private name '{0}'.\"),Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1:b(4083,1,\"Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1_4083\",\"Type parameter '{0}' of exported type alias has or is using private name '{1}'.\"),Exported_type_alias_0_has_or_is_using_private_name_1_from_module_2:b(4084,1,\"Exported_type_alias_0_has_or_is_using_private_name_1_from_module_2_4084\",\"Exported type alias '{0}' has or is using private name '{1}' from module {2}.\"),Extends_clause_for_inferred_type_0_has_or_is_using_private_name_1:b(4085,1,\"Extends_clause_for_inferred_type_0_has_or_is_using_private_name_1_4085\",\"Extends clause for inferred type '{0}' has or is using private name '{1}'.\"),Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_library_to_resolve_the_conflict:b(4090,1,\"Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_librar_4090\",\"Conflicting definitions for '{0}' found at '{1}' and '{2}'. Consider installing a specific version of this library to resolve the conflict.\"),Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:b(4091,1,\"Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2_4091\",\"Parameter '{0}' of index signature from exported interface has or is using name '{1}' from private module '{2}'.\"),Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_private_name_1:b(4092,1,\"Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_private_name_1_4092\",\"Parameter '{0}' of index signature from exported interface has or is using private name '{1}'.\"),Property_0_of_exported_class_expression_may_not_be_private_or_protected:b(4094,1,\"Property_0_of_exported_class_expression_may_not_be_private_or_protected_4094\",\"Property '{0}' of exported class expression may not be private or protected.\"),Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:b(4095,1,\"Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_4095\",\"Public static method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.\"),Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:b(4096,1,\"Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4096\",\"Public static method '{0}' of exported class has or is using name '{1}' from private module '{2}'.\"),Public_static_method_0_of_exported_class_has_or_is_using_private_name_1:b(4097,1,\"Public_static_method_0_of_exported_class_has_or_is_using_private_name_1_4097\",\"Public static method '{0}' of exported class has or is using private name '{1}'.\"),Public_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:b(4098,1,\"Public_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4098\",\"Public method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.\"),Public_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:b(4099,1,\"Public_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4099\",\"Public method '{0}' of exported class has or is using name '{1}' from private module '{2}'.\"),Public_method_0_of_exported_class_has_or_is_using_private_name_1:b(4100,1,\"Public_method_0_of_exported_class_has_or_is_using_private_name_1_4100\",\"Public method '{0}' of exported class has or is using private name '{1}'.\"),Method_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2:b(4101,1,\"Method_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2_4101\",\"Method '{0}' of exported interface has or is using name '{1}' from private module '{2}'.\"),Method_0_of_exported_interface_has_or_is_using_private_name_1:b(4102,1,\"Method_0_of_exported_interface_has_or_is_using_private_name_1_4102\",\"Method '{0}' of exported interface has or is using private name '{1}'.\"),Type_parameter_0_of_exported_mapped_object_type_is_using_private_name_1:b(4103,1,\"Type_parameter_0_of_exported_mapped_object_type_is_using_private_name_1_4103\",\"Type parameter '{0}' of exported mapped object type is using private name '{1}'.\"),The_type_0_is_readonly_and_cannot_be_assigned_to_the_mutable_type_1:b(4104,1,\"The_type_0_is_readonly_and_cannot_be_assigned_to_the_mutable_type_1_4104\",\"The type '{0}' is 'readonly' and cannot be assigned to the mutable type '{1}'.\"),Private_or_protected_member_0_cannot_be_accessed_on_a_type_parameter:b(4105,1,\"Private_or_protected_member_0_cannot_be_accessed_on_a_type_parameter_4105\",\"Private or protected member '{0}' cannot be accessed on a type parameter.\"),Parameter_0_of_accessor_has_or_is_using_private_name_1:b(4106,1,\"Parameter_0_of_accessor_has_or_is_using_private_name_1_4106\",\"Parameter '{0}' of accessor has or is using private name '{1}'.\"),Parameter_0_of_accessor_has_or_is_using_name_1_from_private_module_2:b(4107,1,\"Parameter_0_of_accessor_has_or_is_using_name_1_from_private_module_2_4107\",\"Parameter '{0}' of accessor has or is using name '{1}' from private module '{2}'.\"),Parameter_0_of_accessor_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:b(4108,1,\"Parameter_0_of_accessor_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4108\",\"Parameter '{0}' of accessor has or is using name '{1}' from external module '{2}' but cannot be named.\"),Type_arguments_for_0_circularly_reference_themselves:b(4109,1,\"Type_arguments_for_0_circularly_reference_themselves_4109\",\"Type arguments for '{0}' circularly reference themselves.\"),Tuple_type_arguments_circularly_reference_themselves:b(4110,1,\"Tuple_type_arguments_circularly_reference_themselves_4110\",\"Tuple type arguments circularly reference themselves.\"),Property_0_comes_from_an_index_signature_so_it_must_be_accessed_with_0:b(4111,1,\"Property_0_comes_from_an_index_signature_so_it_must_be_accessed_with_0_4111\",\"Property '{0}' comes from an index signature, so it must be accessed with ['{0}'].\"),This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class:b(4112,1,\"This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another__4112\",\"This member cannot have an 'override' modifier because its containing class '{0}' does not extend another class.\"),This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0:b(4113,1,\"This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_4113\",\"This member cannot have an 'override' modifier because it is not declared in the base class '{0}'.\"),This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0:b(4114,1,\"This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0_4114\",\"This member must have an 'override' modifier because it overrides a member in the base class '{0}'.\"),This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0:b(4115,1,\"This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0_4115\",\"This parameter property must have an 'override' modifier because it overrides a member in base class '{0}'.\"),This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0:b(4116,1,\"This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared__4116\",\"This member must have an 'override' modifier because it overrides an abstract method that is declared in the base class '{0}'.\"),This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1:b(4117,1,\"This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_Did_you__4117\",\"This member cannot have an 'override' modifier because it is not declared in the base class '{0}'. Did you mean '{1}'?\"),The_type_of_this_node_cannot_be_serialized_because_its_property_0_cannot_be_serialized:b(4118,1,\"The_type_of_this_node_cannot_be_serialized_because_its_property_0_cannot_be_serialized_4118\",\"The type of this node cannot be serialized because its property '{0}' cannot be serialized.\"),This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0:b(4119,1,\"This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_4119\",\"This member must have a JSDoc comment with an '@override' tag because it overrides a member in the base class '{0}'.\"),This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0:b(4120,1,\"This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_4120\",\"This parameter property must have a JSDoc comment with an '@override' tag because it overrides a member in the base class '{0}'.\"),This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class:b(4121,1,\"This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_4121\",\"This member cannot have a JSDoc comment with an '@override' tag because its containing class '{0}' does not extend another class.\"),This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0:b(4122,1,\"This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base__4122\",\"This member cannot have a JSDoc comment with an '@override' tag because it is not declared in the base class '{0}'.\"),This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1:b(4123,1,\"This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base__4123\",\"This member cannot have a JSDoc comment with an 'override' tag because it is not declared in the base class '{0}'. Did you mean '{1}'?\"),Compiler_option_0_of_value_1_is_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next:b(4124,1,\"Compiler_option_0_of_value_1_is_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_w_4124\",\"Compiler option '{0}' of value '{1}' is unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'.\"),resolution_mode_assertions_are_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next:b(4125,1,\"resolution_mode_assertions_are_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_wi_4125\",\"'resolution-mode' assertions are unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'.\"),The_current_host_does_not_support_the_0_option:b(5001,1,\"The_current_host_does_not_support_the_0_option_5001\",\"The current host does not support the '{0}' option.\"),Cannot_find_the_common_subdirectory_path_for_the_input_files:b(5009,1,\"Cannot_find_the_common_subdirectory_path_for_the_input_files_5009\",\"Cannot find the common subdirectory path for the input files.\"),File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0:b(5010,1,\"File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010\",\"File specification cannot end in a recursive directory wildcard ('**'): '{0}'.\"),Cannot_read_file_0_Colon_1:b(5012,1,\"Cannot_read_file_0_Colon_1_5012\",\"Cannot read file '{0}': {1}.\"),Failed_to_parse_file_0_Colon_1:b(5014,1,\"Failed_to_parse_file_0_Colon_1_5014\",\"Failed to parse file '{0}': {1}.\"),Unknown_compiler_option_0:b(5023,1,\"Unknown_compiler_option_0_5023\",\"Unknown compiler option '{0}'.\"),Compiler_option_0_requires_a_value_of_type_1:b(5024,1,\"Compiler_option_0_requires_a_value_of_type_1_5024\",\"Compiler option '{0}' requires a value of type {1}.\"),Unknown_compiler_option_0_Did_you_mean_1:b(5025,1,\"Unknown_compiler_option_0_Did_you_mean_1_5025\",\"Unknown compiler option '{0}'. Did you mean '{1}'?\"),Could_not_write_file_0_Colon_1:b(5033,1,\"Could_not_write_file_0_Colon_1_5033\",\"Could not write file '{0}': {1}.\"),Option_project_cannot_be_mixed_with_source_files_on_a_command_line:b(5042,1,\"Option_project_cannot_be_mixed_with_source_files_on_a_command_line_5042\",\"Option 'project' cannot be mixed with source files on a command line.\"),Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher:b(5047,1,\"Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES_5047\",\"Option 'isolatedModules' can only be used when either option '--module' is provided or option 'target' is 'ES2015' or higher.\"),Option_0_cannot_be_specified_when_option_target_is_ES3:b(5048,1,\"Option_0_cannot_be_specified_when_option_target_is_ES3_5048\",\"Option '{0}' cannot be specified when option 'target' is 'ES3'.\"),Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided:b(5051,1,\"Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided_5051\",\"Option '{0} can only be used when either option '--inlineSourceMap' or option '--sourceMap' is provided.\"),Option_0_cannot_be_specified_without_specifying_option_1:b(5052,1,\"Option_0_cannot_be_specified_without_specifying_option_1_5052\",\"Option '{0}' cannot be specified without specifying option '{1}'.\"),Option_0_cannot_be_specified_with_option_1:b(5053,1,\"Option_0_cannot_be_specified_with_option_1_5053\",\"Option '{0}' cannot be specified with option '{1}'.\"),A_tsconfig_json_file_is_already_defined_at_Colon_0:b(5054,1,\"A_tsconfig_json_file_is_already_defined_at_Colon_0_5054\",\"A 'tsconfig.json' file is already defined at: '{0}'.\"),Cannot_write_file_0_because_it_would_overwrite_input_file:b(5055,1,\"Cannot_write_file_0_because_it_would_overwrite_input_file_5055\",\"Cannot write file '{0}' because it would overwrite input file.\"),Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files:b(5056,1,\"Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files_5056\",\"Cannot write file '{0}' because it would be overwritten by multiple input files.\"),Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0:b(5057,1,\"Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0_5057\",\"Cannot find a tsconfig.json file at the specified directory: '{0}'.\"),The_specified_path_does_not_exist_Colon_0:b(5058,1,\"The_specified_path_does_not_exist_Colon_0_5058\",\"The specified path does not exist: '{0}'.\"),Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier:b(5059,1,\"Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier_5059\",\"Invalid value for '--reactNamespace'. '{0}' is not a valid identifier.\"),Pattern_0_can_have_at_most_one_Asterisk_character:b(5061,1,\"Pattern_0_can_have_at_most_one_Asterisk_character_5061\",\"Pattern '{0}' can have at most one '*' character.\"),Substitution_0_in_pattern_1_can_have_at_most_one_Asterisk_character:b(5062,1,\"Substitution_0_in_pattern_1_can_have_at_most_one_Asterisk_character_5062\",\"Substitution '{0}' in pattern '{1}' can have at most one '*' character.\"),Substitutions_for_pattern_0_should_be_an_array:b(5063,1,\"Substitutions_for_pattern_0_should_be_an_array_5063\",\"Substitutions for pattern '{0}' should be an array.\"),Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2:b(5064,1,\"Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2_5064\",\"Substitution '{0}' for pattern '{1}' has incorrect type, expected 'string', got '{2}'.\"),File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0:b(5065,1,\"File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildca_5065\",\"File specification cannot contain a parent directory ('..') that appears after a recursive directory wildcard ('**'): '{0}'.\"),Substitutions_for_pattern_0_shouldn_t_be_an_empty_array:b(5066,1,\"Substitutions_for_pattern_0_shouldn_t_be_an_empty_array_5066\",\"Substitutions for pattern '{0}' shouldn't be an empty array.\"),Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name:b(5067,1,\"Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name_5067\",\"Invalid value for 'jsxFactory'. '{0}' is not a valid identifier or qualified-name.\"),Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript_files_Learn_more_at_https_Colon_Slash_Slashaka_ms_Slashtsconfig:b(5068,1,\"Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068\",\"Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.\"),Option_0_cannot_be_specified_without_specifying_option_1_or_option_2:b(5069,1,\"Option_0_cannot_be_specified_without_specifying_option_1_or_option_2_5069\",\"Option '{0}' cannot be specified without specifying option '{1}' or option '{2}'.\"),Option_resolveJsonModule_cannot_be_specified_when_moduleResolution_is_set_to_classic:b(5070,1,\"Option_resolveJsonModule_cannot_be_specified_when_moduleResolution_is_set_to_classic_5070\",\"Option '--resolveJsonModule' cannot be specified when 'moduleResolution' is set to 'classic'.\"),Option_resolveJsonModule_can_only_be_specified_when_module_code_generation_is_commonjs_amd_es2015_or_esNext:b(5071,1,\"Option_resolveJsonModule_can_only_be_specified_when_module_code_generation_is_commonjs_amd_es2015_or_5071\",\"Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs', 'amd', 'es2015' or 'esNext'.\"),Unknown_build_option_0:b(5072,1,\"Unknown_build_option_0_5072\",\"Unknown build option '{0}'.\"),Build_option_0_requires_a_value_of_type_1:b(5073,1,\"Build_option_0_requires_a_value_of_type_1_5073\",\"Build option '{0}' requires a value of type {1}.\"),Option_incremental_can_only_be_specified_using_tsconfig_emitting_to_single_file_or_when_option_tsBuildInfoFile_is_specified:b(5074,1,\"Option_incremental_can_only_be_specified_using_tsconfig_emitting_to_single_file_or_when_option_tsBui_5074\",\"Option '--incremental' can only be specified using tsconfig, emitting to single file or when option '--tsBuildInfoFile' is specified.\"),_0_is_assignable_to_the_constraint_of_type_1_but_1_could_be_instantiated_with_a_different_subtype_of_constraint_2:b(5075,1,\"_0_is_assignable_to_the_constraint_of_type_1_but_1_could_be_instantiated_with_a_different_subtype_of_5075\",\"'{0}' is assignable to the constraint of type '{1}', but '{1}' could be instantiated with a different subtype of constraint '{2}'.\"),_0_and_1_operations_cannot_be_mixed_without_parentheses:b(5076,1,\"_0_and_1_operations_cannot_be_mixed_without_parentheses_5076\",\"'{0}' and '{1}' operations cannot be mixed without parentheses.\"),Unknown_build_option_0_Did_you_mean_1:b(5077,1,\"Unknown_build_option_0_Did_you_mean_1_5077\",\"Unknown build option '{0}'. Did you mean '{1}'?\"),Unknown_watch_option_0:b(5078,1,\"Unknown_watch_option_0_5078\",\"Unknown watch option '{0}'.\"),Unknown_watch_option_0_Did_you_mean_1:b(5079,1,\"Unknown_watch_option_0_Did_you_mean_1_5079\",\"Unknown watch option '{0}'. Did you mean '{1}'?\"),Watch_option_0_requires_a_value_of_type_1:b(5080,1,\"Watch_option_0_requires_a_value_of_type_1_5080\",\"Watch option '{0}' requires a value of type {1}.\"),Cannot_find_a_tsconfig_json_file_at_the_current_directory_Colon_0:b(5081,1,\"Cannot_find_a_tsconfig_json_file_at_the_current_directory_Colon_0_5081\",\"Cannot find a tsconfig.json file at the current directory: {0}.\"),_0_could_be_instantiated_with_an_arbitrary_type_which_could_be_unrelated_to_1:b(5082,1,\"_0_could_be_instantiated_with_an_arbitrary_type_which_could_be_unrelated_to_1_5082\",\"'{0}' could be instantiated with an arbitrary type which could be unrelated to '{1}'.\"),Cannot_read_file_0:b(5083,1,\"Cannot_read_file_0_5083\",\"Cannot read file '{0}'.\"),Tuple_members_must_all_have_names_or_all_not_have_names:b(5084,1,\"Tuple_members_must_all_have_names_or_all_not_have_names_5084\",\"Tuple members must all have names or all not have names.\"),A_tuple_member_cannot_be_both_optional_and_rest:b(5085,1,\"A_tuple_member_cannot_be_both_optional_and_rest_5085\",\"A tuple member cannot be both optional and rest.\"),A_labeled_tuple_element_is_declared_as_optional_with_a_question_mark_after_the_name_and_before_the_colon_rather_than_after_the_type:b(5086,1,\"A_labeled_tuple_element_is_declared_as_optional_with_a_question_mark_after_the_name_and_before_the_c_5086\",\"A labeled tuple element is declared as optional with a question mark after the name and before the colon, rather than after the type.\"),A_labeled_tuple_element_is_declared_as_rest_with_a_before_the_name_rather_than_before_the_type:b(5087,1,\"A_labeled_tuple_element_is_declared_as_rest_with_a_before_the_name_rather_than_before_the_type_5087\",\"A labeled tuple element is declared as rest with a '...' before the name, rather than before the type.\"),The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialized_A_type_annotation_is_necessary:b(5088,1,\"The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088\",\"The inferred type of '{0}' references a type with a cyclic structure which cannot be trivially serialized. A type annotation is necessary.\"),Option_0_cannot_be_specified_when_option_jsx_is_1:b(5089,1,\"Option_0_cannot_be_specified_when_option_jsx_is_1_5089\",\"Option '{0}' cannot be specified when option 'jsx' is '{1}'.\"),Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash:b(5090,1,\"Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash_5090\",\"Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?\"),Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled:b(5091,1,\"Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled_5091\",\"Option 'preserveConstEnums' cannot be disabled when '{0}' is enabled.\"),The_root_value_of_a_0_file_must_be_an_object:b(5092,1,\"The_root_value_of_a_0_file_must_be_an_object_5092\",\"The root value of a '{0}' file must be an object.\"),Compiler_option_0_may_only_be_used_with_build:b(5093,1,\"Compiler_option_0_may_only_be_used_with_build_5093\",\"Compiler option '--{0}' may only be used with '--build'.\"),Compiler_option_0_may_not_be_used_with_build:b(5094,1,\"Compiler_option_0_may_not_be_used_with_build_5094\",\"Compiler option '--{0}' may not be used with '--build'.\"),Option_0_can_only_be_used_when_module_is_set_to_es2015_or_later:b(5095,1,\"Option_0_can_only_be_used_when_module_is_set_to_es2015_or_later_5095\",\"Option '{0}' can only be used when 'module' is set to 'es2015' or later.\"),Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set:b(5096,1,\"Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set_5096\",\"Option 'allowImportingTsExtensions' can only be used when either 'noEmit' or 'emitDeclarationOnly' is set.\"),An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled:b(5097,1,\"An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled_5097\",\"An import path can only end with a '{0}' extension when 'allowImportingTsExtensions' is enabled.\"),Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler:b(5098,1,\"Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler_5098\",\"Option '{0}' can only be used when 'moduleResolution' is set to 'node16', 'nodenext', or 'bundler'.\"),Option_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_compilerOption_ignoreDeprecations_Colon_2_to_silence_this_error:b(5101,1,\"Option_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_compilerOption_ignoreDeprec_5101\",`Option '{0}' is deprecated and will stop functioning in TypeScript {1}. Specify compilerOption '\"ignoreDeprecations\": \"{2}\"' to silence this error.`),Option_0_has_been_removed_Please_remove_it_from_your_configuration:b(5102,1,\"Option_0_has_been_removed_Please_remove_it_from_your_configuration_5102\",\"Option '{0}' has been removed. Please remove it from your configuration.\"),Invalid_value_for_ignoreDeprecations:b(5103,1,\"Invalid_value_for_ignoreDeprecations_5103\",\"Invalid value for '--ignoreDeprecations'.\"),Option_0_is_redundant_and_cannot_be_specified_with_option_1:b(5104,1,\"Option_0_is_redundant_and_cannot_be_specified_with_option_1_5104\",\"Option '{0}' is redundant and cannot be specified with option '{1}'.\"),Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System:b(5105,1,\"Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System_5105\",\"Option 'verbatimModuleSyntax' cannot be used when 'module' is set to 'UMD', 'AMD', or 'System'.\"),Use_0_instead:b(5106,3,\"Use_0_instead_5106\",\"Use '{0}' instead.\"),Option_0_1_is_deprecated_and_will_stop_functioning_in_TypeScript_2_Specify_compilerOption_ignoreDeprecations_Colon_3_to_silence_this_error:b(5107,1,\"Option_0_1_is_deprecated_and_will_stop_functioning_in_TypeScript_2_Specify_compilerOption_ignoreDepr_5107\",`Option '{0}={1}' is deprecated and will stop functioning in TypeScript {2}. Specify compilerOption '\"ignoreDeprecations\": \"{3}\"' to silence this error.`),Option_0_1_has_been_removed_Please_remove_it_from_your_configuration:b(5108,1,\"Option_0_1_has_been_removed_Please_remove_it_from_your_configuration_5108\",\"Option '{0}={1}' has been removed. Please remove it from your configuration.\"),Generates_a_sourcemap_for_each_corresponding_d_ts_file:b(6e3,3,\"Generates_a_sourcemap_for_each_corresponding_d_ts_file_6000\",\"Generates a sourcemap for each corresponding '.d.ts' file.\"),Concatenate_and_emit_output_to_single_file:b(6001,3,\"Concatenate_and_emit_output_to_single_file_6001\",\"Concatenate and emit output to single file.\"),Generates_corresponding_d_ts_file:b(6002,3,\"Generates_corresponding_d_ts_file_6002\",\"Generates corresponding '.d.ts' file.\"),Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations:b(6004,3,\"Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations_6004\",\"Specify the location where debugger should locate TypeScript files instead of source locations.\"),Watch_input_files:b(6005,3,\"Watch_input_files_6005\",\"Watch input files.\"),Redirect_output_structure_to_the_directory:b(6006,3,\"Redirect_output_structure_to_the_directory_6006\",\"Redirect output structure to the directory.\"),Do_not_erase_const_enum_declarations_in_generated_code:b(6007,3,\"Do_not_erase_const_enum_declarations_in_generated_code_6007\",\"Do not erase const enum declarations in generated code.\"),Do_not_emit_outputs_if_any_errors_were_reported:b(6008,3,\"Do_not_emit_outputs_if_any_errors_were_reported_6008\",\"Do not emit outputs if any errors were reported.\"),Do_not_emit_comments_to_output:b(6009,3,\"Do_not_emit_comments_to_output_6009\",\"Do not emit comments to output.\"),Do_not_emit_outputs:b(6010,3,\"Do_not_emit_outputs_6010\",\"Do not emit outputs.\"),Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking:b(6011,3,\"Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011\",\"Allow default imports from modules with no default export. This does not affect code emit, just typechecking.\"),Skip_type_checking_of_declaration_files:b(6012,3,\"Skip_type_checking_of_declaration_files_6012\",\"Skip type checking of declaration files.\"),Do_not_resolve_the_real_path_of_symlinks:b(6013,3,\"Do_not_resolve_the_real_path_of_symlinks_6013\",\"Do not resolve the real path of symlinks.\"),Only_emit_d_ts_declaration_files:b(6014,3,\"Only_emit_d_ts_declaration_files_6014\",\"Only emit '.d.ts' declaration files.\"),Specify_ECMAScript_target_version:b(6015,3,\"Specify_ECMAScript_target_version_6015\",\"Specify ECMAScript target version.\"),Specify_module_code_generation:b(6016,3,\"Specify_module_code_generation_6016\",\"Specify module code generation.\"),Print_this_message:b(6017,3,\"Print_this_message_6017\",\"Print this message.\"),Print_the_compiler_s_version:b(6019,3,\"Print_the_compiler_s_version_6019\",\"Print the compiler's version.\"),Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json:b(6020,3,\"Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json_6020\",\"Compile the project given the path to its configuration file, or to a folder with a 'tsconfig.json'.\"),Syntax_Colon_0:b(6023,3,\"Syntax_Colon_0_6023\",\"Syntax: {0}\"),options:b(6024,3,\"options_6024\",\"options\"),file:b(6025,3,\"file_6025\",\"file\"),Examples_Colon_0:b(6026,3,\"Examples_Colon_0_6026\",\"Examples: {0}\"),Options_Colon:b(6027,3,\"Options_Colon_6027\",\"Options:\"),Version_0:b(6029,3,\"Version_0_6029\",\"Version {0}\"),Insert_command_line_options_and_files_from_a_file:b(6030,3,\"Insert_command_line_options_and_files_from_a_file_6030\",\"Insert command line options and files from a file.\"),Starting_compilation_in_watch_mode:b(6031,3,\"Starting_compilation_in_watch_mode_6031\",\"Starting compilation in watch mode...\"),File_change_detected_Starting_incremental_compilation:b(6032,3,\"File_change_detected_Starting_incremental_compilation_6032\",\"File change detected. Starting incremental compilation...\"),KIND:b(6034,3,\"KIND_6034\",\"KIND\"),FILE:b(6035,3,\"FILE_6035\",\"FILE\"),VERSION:b(6036,3,\"VERSION_6036\",\"VERSION\"),LOCATION:b(6037,3,\"LOCATION_6037\",\"LOCATION\"),DIRECTORY:b(6038,3,\"DIRECTORY_6038\",\"DIRECTORY\"),STRATEGY:b(6039,3,\"STRATEGY_6039\",\"STRATEGY\"),FILE_OR_DIRECTORY:b(6040,3,\"FILE_OR_DIRECTORY_6040\",\"FILE OR DIRECTORY\"),Errors_Files:b(6041,3,\"Errors_Files_6041\",\"Errors  Files\"),Generates_corresponding_map_file:b(6043,3,\"Generates_corresponding_map_file_6043\",\"Generates corresponding '.map' file.\"),Compiler_option_0_expects_an_argument:b(6044,1,\"Compiler_option_0_expects_an_argument_6044\",\"Compiler option '{0}' expects an argument.\"),Unterminated_quoted_string_in_response_file_0:b(6045,1,\"Unterminated_quoted_string_in_response_file_0_6045\",\"Unterminated quoted string in response file '{0}'.\"),Argument_for_0_option_must_be_Colon_1:b(6046,1,\"Argument_for_0_option_must_be_Colon_1_6046\",\"Argument for '{0}' option must be: {1}.\"),Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1:b(6048,1,\"Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1_6048\",\"Locale must be of the form <language> or <language>-<territory>. For example '{0}' or '{1}'.\"),Unable_to_open_file_0:b(6050,1,\"Unable_to_open_file_0_6050\",\"Unable to open file '{0}'.\"),Corrupted_locale_file_0:b(6051,1,\"Corrupted_locale_file_0_6051\",\"Corrupted locale file {0}.\"),Raise_error_on_expressions_and_declarations_with_an_implied_any_type:b(6052,3,\"Raise_error_on_expressions_and_declarations_with_an_implied_any_type_6052\",\"Raise error on expressions and declarations with an implied 'any' type.\"),File_0_not_found:b(6053,1,\"File_0_not_found_6053\",\"File '{0}' not found.\"),File_0_has_an_unsupported_extension_The_only_supported_extensions_are_1:b(6054,1,\"File_0_has_an_unsupported_extension_The_only_supported_extensions_are_1_6054\",\"File '{0}' has an unsupported extension. The only supported extensions are {1}.\"),Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures:b(6055,3,\"Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures_6055\",\"Suppress noImplicitAny errors for indexing objects lacking index signatures.\"),Do_not_emit_declarations_for_code_that_has_an_internal_annotation:b(6056,3,\"Do_not_emit_declarations_for_code_that_has_an_internal_annotation_6056\",\"Do not emit declarations for code that has an '@internal' annotation.\"),Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir:b(6058,3,\"Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir_6058\",\"Specify the root directory of input files. Use to control the output directory structure with --outDir.\"),File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files:b(6059,1,\"File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files_6059\",\"File '{0}' is not under 'rootDir' '{1}'. 'rootDir' is expected to contain all source files.\"),Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix:b(6060,3,\"Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix_6060\",\"Specify the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix).\"),NEWLINE:b(6061,3,\"NEWLINE_6061\",\"NEWLINE\"),Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_null_on_command_line:b(6064,1,\"Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_null_on_command_line_6064\",\"Option '{0}' can only be specified in 'tsconfig.json' file or set to 'null' on command line.\"),Enables_experimental_support_for_ES7_decorators:b(6065,3,\"Enables_experimental_support_for_ES7_decorators_6065\",\"Enables experimental support for ES7 decorators.\"),Enables_experimental_support_for_emitting_type_metadata_for_decorators:b(6066,3,\"Enables_experimental_support_for_emitting_type_metadata_for_decorators_6066\",\"Enables experimental support for emitting type metadata for decorators.\"),Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file:b(6070,3,\"Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file_6070\",\"Initializes a TypeScript project and creates a tsconfig.json file.\"),Successfully_created_a_tsconfig_json_file:b(6071,3,\"Successfully_created_a_tsconfig_json_file_6071\",\"Successfully created a tsconfig.json file.\"),Suppress_excess_property_checks_for_object_literals:b(6072,3,\"Suppress_excess_property_checks_for_object_literals_6072\",\"Suppress excess property checks for object literals.\"),Stylize_errors_and_messages_using_color_and_context_experimental:b(6073,3,\"Stylize_errors_and_messages_using_color_and_context_experimental_6073\",\"Stylize errors and messages using color and context (experimental).\"),Do_not_report_errors_on_unused_labels:b(6074,3,\"Do_not_report_errors_on_unused_labels_6074\",\"Do not report errors on unused labels.\"),Report_error_when_not_all_code_paths_in_function_return_a_value:b(6075,3,\"Report_error_when_not_all_code_paths_in_function_return_a_value_6075\",\"Report error when not all code paths in function return a value.\"),Report_errors_for_fallthrough_cases_in_switch_statement:b(6076,3,\"Report_errors_for_fallthrough_cases_in_switch_statement_6076\",\"Report errors for fallthrough cases in switch statement.\"),Do_not_report_errors_on_unreachable_code:b(6077,3,\"Do_not_report_errors_on_unreachable_code_6077\",\"Do not report errors on unreachable code.\"),Disallow_inconsistently_cased_references_to_the_same_file:b(6078,3,\"Disallow_inconsistently_cased_references_to_the_same_file_6078\",\"Disallow inconsistently-cased references to the same file.\"),Specify_library_files_to_be_included_in_the_compilation:b(6079,3,\"Specify_library_files_to_be_included_in_the_compilation_6079\",\"Specify library files to be included in the compilation.\"),Specify_JSX_code_generation:b(6080,3,\"Specify_JSX_code_generation_6080\",\"Specify JSX code generation.\"),File_0_has_an_unsupported_extension_so_skipping_it:b(6081,3,\"File_0_has_an_unsupported_extension_so_skipping_it_6081\",\"File '{0}' has an unsupported extension, so skipping it.\"),Only_amd_and_system_modules_are_supported_alongside_0:b(6082,1,\"Only_amd_and_system_modules_are_supported_alongside_0_6082\",\"Only 'amd' and 'system' modules are supported alongside --{0}.\"),Base_directory_to_resolve_non_absolute_module_names:b(6083,3,\"Base_directory_to_resolve_non_absolute_module_names_6083\",\"Base directory to resolve non-absolute module names.\"),Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react_JSX_emit:b(6084,3,\"Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react__6084\",\"[Deprecated] Use '--jsxFactory' instead. Specify the object invoked for createElement when targeting 'react' JSX emit\"),Enable_tracing_of_the_name_resolution_process:b(6085,3,\"Enable_tracing_of_the_name_resolution_process_6085\",\"Enable tracing of the name resolution process.\"),Resolving_module_0_from_1:b(6086,3,\"Resolving_module_0_from_1_6086\",\"======== Resolving module '{0}' from '{1}'. ========\"),Explicitly_specified_module_resolution_kind_Colon_0:b(6087,3,\"Explicitly_specified_module_resolution_kind_Colon_0_6087\",\"Explicitly specified module resolution kind: '{0}'.\"),Module_resolution_kind_is_not_specified_using_0:b(6088,3,\"Module_resolution_kind_is_not_specified_using_0_6088\",\"Module resolution kind is not specified, using '{0}'.\"),Module_name_0_was_successfully_resolved_to_1:b(6089,3,\"Module_name_0_was_successfully_resolved_to_1_6089\",\"======== Module name '{0}' was successfully resolved to '{1}'. ========\"),Module_name_0_was_not_resolved:b(6090,3,\"Module_name_0_was_not_resolved_6090\",\"======== Module name '{0}' was not resolved. ========\"),paths_option_is_specified_looking_for_a_pattern_to_match_module_name_0:b(6091,3,\"paths_option_is_specified_looking_for_a_pattern_to_match_module_name_0_6091\",\"'paths' option is specified, looking for a pattern to match module name '{0}'.\"),Module_name_0_matched_pattern_1:b(6092,3,\"Module_name_0_matched_pattern_1_6092\",\"Module name '{0}', matched pattern '{1}'.\"),Trying_substitution_0_candidate_module_location_Colon_1:b(6093,3,\"Trying_substitution_0_candidate_module_location_Colon_1_6093\",\"Trying substitution '{0}', candidate module location: '{1}'.\"),Resolving_module_name_0_relative_to_base_url_1_2:b(6094,3,\"Resolving_module_name_0_relative_to_base_url_1_2_6094\",\"Resolving module name '{0}' relative to base url '{1}' - '{2}'.\"),Loading_module_as_file_Slash_folder_candidate_module_location_0_target_file_types_Colon_1:b(6095,3,\"Loading_module_as_file_Slash_folder_candidate_module_location_0_target_file_types_Colon_1_6095\",\"Loading module as file / folder, candidate module location '{0}', target file types: {1}.\"),File_0_does_not_exist:b(6096,3,\"File_0_does_not_exist_6096\",\"File '{0}' does not exist.\"),File_0_exists_use_it_as_a_name_resolution_result:b(6097,3,\"File_0_exists_use_it_as_a_name_resolution_result_6097\",\"File '{0}' exists - use it as a name resolution result.\"),Loading_module_0_from_node_modules_folder_target_file_types_Colon_1:b(6098,3,\"Loading_module_0_from_node_modules_folder_target_file_types_Colon_1_6098\",\"Loading module '{0}' from 'node_modules' folder, target file types: {1}.\"),Found_package_json_at_0:b(6099,3,\"Found_package_json_at_0_6099\",\"Found 'package.json' at '{0}'.\"),package_json_does_not_have_a_0_field:b(6100,3,\"package_json_does_not_have_a_0_field_6100\",\"'package.json' does not have a '{0}' field.\"),package_json_has_0_field_1_that_references_2:b(6101,3,\"package_json_has_0_field_1_that_references_2_6101\",\"'package.json' has '{0}' field '{1}' that references '{2}'.\"),Allow_javascript_files_to_be_compiled:b(6102,3,\"Allow_javascript_files_to_be_compiled_6102\",\"Allow javascript files to be compiled.\"),Checking_if_0_is_the_longest_matching_prefix_for_1_2:b(6104,3,\"Checking_if_0_is_the_longest_matching_prefix_for_1_2_6104\",\"Checking if '{0}' is the longest matching prefix for '{1}' - '{2}'.\"),Expected_type_of_0_field_in_package_json_to_be_1_got_2:b(6105,3,\"Expected_type_of_0_field_in_package_json_to_be_1_got_2_6105\",\"Expected type of '{0}' field in 'package.json' to be '{1}', got '{2}'.\"),baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1:b(6106,3,\"baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1_6106\",\"'baseUrl' option is set to '{0}', using this value to resolve non-relative module name '{1}'.\"),rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0:b(6107,3,\"rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107\",\"'rootDirs' option is set, using it to resolve relative module name '{0}'.\"),Longest_matching_prefix_for_0_is_1:b(6108,3,\"Longest_matching_prefix_for_0_is_1_6108\",\"Longest matching prefix for '{0}' is '{1}'.\"),Loading_0_from_the_root_dir_1_candidate_location_2:b(6109,3,\"Loading_0_from_the_root_dir_1_candidate_location_2_6109\",\"Loading '{0}' from the root dir '{1}', candidate location '{2}'.\"),Trying_other_entries_in_rootDirs:b(6110,3,\"Trying_other_entries_in_rootDirs_6110\",\"Trying other entries in 'rootDirs'.\"),Module_resolution_using_rootDirs_has_failed:b(6111,3,\"Module_resolution_using_rootDirs_has_failed_6111\",\"Module resolution using 'rootDirs' has failed.\"),Do_not_emit_use_strict_directives_in_module_output:b(6112,3,\"Do_not_emit_use_strict_directives_in_module_output_6112\",\"Do not emit 'use strict' directives in module output.\"),Enable_strict_null_checks:b(6113,3,\"Enable_strict_null_checks_6113\",\"Enable strict null checks.\"),Unknown_option_excludes_Did_you_mean_exclude:b(6114,1,\"Unknown_option_excludes_Did_you_mean_exclude_6114\",\"Unknown option 'excludes'. Did you mean 'exclude'?\"),Raise_error_on_this_expressions_with_an_implied_any_type:b(6115,3,\"Raise_error_on_this_expressions_with_an_implied_any_type_6115\",\"Raise error on 'this' expressions with an implied 'any' type.\"),Resolving_type_reference_directive_0_containing_file_1_root_directory_2:b(6116,3,\"Resolving_type_reference_directive_0_containing_file_1_root_directory_2_6116\",\"======== Resolving type reference directive '{0}', containing file '{1}', root directory '{2}'. ========\"),Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2:b(6119,3,\"Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2_6119\",\"======== Type reference directive '{0}' was successfully resolved to '{1}', primary: {2}. ========\"),Type_reference_directive_0_was_not_resolved:b(6120,3,\"Type_reference_directive_0_was_not_resolved_6120\",\"======== Type reference directive '{0}' was not resolved. ========\"),Resolving_with_primary_search_path_0:b(6121,3,\"Resolving_with_primary_search_path_0_6121\",\"Resolving with primary search path '{0}'.\"),Root_directory_cannot_be_determined_skipping_primary_search_paths:b(6122,3,\"Root_directory_cannot_be_determined_skipping_primary_search_paths_6122\",\"Root directory cannot be determined, skipping primary search paths.\"),Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set:b(6123,3,\"Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set_6123\",\"======== Resolving type reference directive '{0}', containing file '{1}', root directory not set. ========\"),Type_declaration_files_to_be_included_in_compilation:b(6124,3,\"Type_declaration_files_to_be_included_in_compilation_6124\",\"Type declaration files to be included in compilation.\"),Looking_up_in_node_modules_folder_initial_location_0:b(6125,3,\"Looking_up_in_node_modules_folder_initial_location_0_6125\",\"Looking up in 'node_modules' folder, initial location '{0}'.\"),Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder:b(6126,3,\"Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_mod_6126\",\"Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder.\"),Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1:b(6127,3,\"Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1_6127\",\"======== Resolving type reference directive '{0}', containing file not set, root directory '{1}'. ========\"),Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set:b(6128,3,\"Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set_6128\",\"======== Resolving type reference directive '{0}', containing file not set, root directory not set. ========\"),Resolving_real_path_for_0_result_1:b(6130,3,\"Resolving_real_path_for_0_result_1_6130\",\"Resolving real path for '{0}', result '{1}'.\"),Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system:b(6131,1,\"Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system_6131\",\"Cannot compile modules using option '{0}' unless the '--module' flag is 'amd' or 'system'.\"),File_name_0_has_a_1_extension_stripping_it:b(6132,3,\"File_name_0_has_a_1_extension_stripping_it_6132\",\"File name '{0}' has a '{1}' extension - stripping it.\"),_0_is_declared_but_its_value_is_never_read:b(6133,1,\"_0_is_declared_but_its_value_is_never_read_6133\",\"'{0}' is declared but its value is never read.\",!0),Report_errors_on_unused_locals:b(6134,3,\"Report_errors_on_unused_locals_6134\",\"Report errors on unused locals.\"),Report_errors_on_unused_parameters:b(6135,3,\"Report_errors_on_unused_parameters_6135\",\"Report errors on unused parameters.\"),The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files:b(6136,3,\"The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files_6136\",\"The maximum dependency depth to search under node_modules and load JavaScript files.\"),Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1:b(6137,1,\"Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1_6137\",\"Cannot import type declaration files. Consider importing '{0}' instead of '{1}'.\"),Property_0_is_declared_but_its_value_is_never_read:b(6138,1,\"Property_0_is_declared_but_its_value_is_never_read_6138\",\"Property '{0}' is declared but its value is never read.\",!0),Import_emit_helpers_from_tslib:b(6139,3,\"Import_emit_helpers_from_tslib_6139\",\"Import emit helpers from 'tslib'.\"),Auto_discovery_for_typings_is_enabled_in_project_0_Running_extra_resolution_pass_for_module_1_using_cache_location_2:b(6140,1,\"Auto_discovery_for_typings_is_enabled_in_project_0_Running_extra_resolution_pass_for_module_1_using__6140\",\"Auto discovery for typings is enabled in project '{0}'. Running extra resolution pass for module '{1}' using cache location '{2}'.\"),Parse_in_strict_mode_and_emit_use_strict_for_each_source_file:b(6141,3,\"Parse_in_strict_mode_and_emit_use_strict_for_each_source_file_6141\",'Parse in strict mode and emit \"use strict\" for each source file.'),Module_0_was_resolved_to_1_but_jsx_is_not_set:b(6142,1,\"Module_0_was_resolved_to_1_but_jsx_is_not_set_6142\",\"Module '{0}' was resolved to '{1}', but '--jsx' is not set.\"),Module_0_was_resolved_as_locally_declared_ambient_module_in_file_1:b(6144,3,\"Module_0_was_resolved_as_locally_declared_ambient_module_in_file_1_6144\",\"Module '{0}' was resolved as locally declared ambient module in file '{1}'.\"),Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified:b(6145,3,\"Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified_6145\",\"Module '{0}' was resolved as ambient module declared in '{1}' since this file was not modified.\"),Specify_the_JSX_factory_function_to_use_when_targeting_react_JSX_emit_e_g_React_createElement_or_h:b(6146,3,\"Specify_the_JSX_factory_function_to_use_when_targeting_react_JSX_emit_e_g_React_createElement_or_h_6146\",\"Specify the JSX factory function to use when targeting 'react' JSX emit, e.g. 'React.createElement' or 'h'.\"),Resolution_for_module_0_was_found_in_cache_from_location_1:b(6147,3,\"Resolution_for_module_0_was_found_in_cache_from_location_1_6147\",\"Resolution for module '{0}' was found in cache from location '{1}'.\"),Directory_0_does_not_exist_skipping_all_lookups_in_it:b(6148,3,\"Directory_0_does_not_exist_skipping_all_lookups_in_it_6148\",\"Directory '{0}' does not exist, skipping all lookups in it.\"),Show_diagnostic_information:b(6149,3,\"Show_diagnostic_information_6149\",\"Show diagnostic information.\"),Show_verbose_diagnostic_information:b(6150,3,\"Show_verbose_diagnostic_information_6150\",\"Show verbose diagnostic information.\"),Emit_a_single_file_with_source_maps_instead_of_having_a_separate_file:b(6151,3,\"Emit_a_single_file_with_source_maps_instead_of_having_a_separate_file_6151\",\"Emit a single file with source maps instead of having a separate file.\"),Emit_the_source_alongside_the_sourcemaps_within_a_single_file_requires_inlineSourceMap_or_sourceMap_to_be_set:b(6152,3,\"Emit_the_source_alongside_the_sourcemaps_within_a_single_file_requires_inlineSourceMap_or_sourceMap__6152\",\"Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set.\"),Transpile_each_file_as_a_separate_module_similar_to_ts_transpileModule:b(6153,3,\"Transpile_each_file_as_a_separate_module_similar_to_ts_transpileModule_6153\",\"Transpile each file as a separate module (similar to 'ts.transpileModule').\"),Print_names_of_generated_files_part_of_the_compilation:b(6154,3,\"Print_names_of_generated_files_part_of_the_compilation_6154\",\"Print names of generated files part of the compilation.\"),Print_names_of_files_part_of_the_compilation:b(6155,3,\"Print_names_of_files_part_of_the_compilation_6155\",\"Print names of files part of the compilation.\"),The_locale_used_when_displaying_messages_to_the_user_e_g_en_us:b(6156,3,\"The_locale_used_when_displaying_messages_to_the_user_e_g_en_us_6156\",\"The locale used when displaying messages to the user (e.g. 'en-us')\"),Do_not_generate_custom_helper_functions_like_extends_in_compiled_output:b(6157,3,\"Do_not_generate_custom_helper_functions_like_extends_in_compiled_output_6157\",\"Do not generate custom helper functions like '__extends' in compiled output.\"),Do_not_include_the_default_library_file_lib_d_ts:b(6158,3,\"Do_not_include_the_default_library_file_lib_d_ts_6158\",\"Do not include the default library file (lib.d.ts).\"),Do_not_add_triple_slash_references_or_imported_modules_to_the_list_of_compiled_files:b(6159,3,\"Do_not_add_triple_slash_references_or_imported_modules_to_the_list_of_compiled_files_6159\",\"Do not add triple-slash references or imported modules to the list of compiled files.\"),Deprecated_Use_skipLibCheck_instead_Skip_type_checking_of_default_library_declaration_files:b(6160,3,\"Deprecated_Use_skipLibCheck_instead_Skip_type_checking_of_default_library_declaration_files_6160\",\"[Deprecated] Use '--skipLibCheck' instead. Skip type checking of default library declaration files.\"),List_of_folders_to_include_type_definitions_from:b(6161,3,\"List_of_folders_to_include_type_definitions_from_6161\",\"List of folders to include type definitions from.\"),Disable_size_limitations_on_JavaScript_projects:b(6162,3,\"Disable_size_limitations_on_JavaScript_projects_6162\",\"Disable size limitations on JavaScript projects.\"),The_character_set_of_the_input_files:b(6163,3,\"The_character_set_of_the_input_files_6163\",\"The character set of the input files.\"),Do_not_truncate_error_messages:b(6165,3,\"Do_not_truncate_error_messages_6165\",\"Do not truncate error messages.\"),Output_directory_for_generated_declaration_files:b(6166,3,\"Output_directory_for_generated_declaration_files_6166\",\"Output directory for generated declaration files.\"),A_series_of_entries_which_re_map_imports_to_lookup_locations_relative_to_the_baseUrl:b(6167,3,\"A_series_of_entries_which_re_map_imports_to_lookup_locations_relative_to_the_baseUrl_6167\",\"A series of entries which re-map imports to lookup locations relative to the 'baseUrl'.\"),List_of_root_folders_whose_combined_content_represents_the_structure_of_the_project_at_runtime:b(6168,3,\"List_of_root_folders_whose_combined_content_represents_the_structure_of_the_project_at_runtime_6168\",\"List of root folders whose combined content represents the structure of the project at runtime.\"),Show_all_compiler_options:b(6169,3,\"Show_all_compiler_options_6169\",\"Show all compiler options.\"),Deprecated_Use_outFile_instead_Concatenate_and_emit_output_to_single_file:b(6170,3,\"Deprecated_Use_outFile_instead_Concatenate_and_emit_output_to_single_file_6170\",\"[Deprecated] Use '--outFile' instead. Concatenate and emit output to single file\"),Command_line_Options:b(6171,3,\"Command_line_Options_6171\",\"Command-line Options\"),Provide_full_support_for_iterables_in_for_of_spread_and_destructuring_when_targeting_ES5_or_ES3:b(6179,3,\"Provide_full_support_for_iterables_in_for_of_spread_and_destructuring_when_targeting_ES5_or_ES3_6179\",\"Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'.\"),Enable_all_strict_type_checking_options:b(6180,3,\"Enable_all_strict_type_checking_options_6180\",\"Enable all strict type-checking options.\"),Scoped_package_detected_looking_in_0:b(6182,3,\"Scoped_package_detected_looking_in_0_6182\",\"Scoped package detected, looking in '{0}'\"),Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2:b(6183,3,\"Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2_6183\",\"Reusing resolution of module '{0}' from '{1}' of old program, it was successfully resolved to '{2}'.\"),Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3:b(6184,3,\"Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package__6184\",\"Reusing resolution of module '{0}' from '{1}' of old program, it was successfully resolved to '{2}' with Package ID '{3}'.\"),Enable_strict_checking_of_function_types:b(6186,3,\"Enable_strict_checking_of_function_types_6186\",\"Enable strict checking of function types.\"),Enable_strict_checking_of_property_initialization_in_classes:b(6187,3,\"Enable_strict_checking_of_property_initialization_in_classes_6187\",\"Enable strict checking of property initialization in classes.\"),Numeric_separators_are_not_allowed_here:b(6188,1,\"Numeric_separators_are_not_allowed_here_6188\",\"Numeric separators are not allowed here.\"),Multiple_consecutive_numeric_separators_are_not_permitted:b(6189,1,\"Multiple_consecutive_numeric_separators_are_not_permitted_6189\",\"Multiple consecutive numeric separators are not permitted.\"),Whether_to_keep_outdated_console_output_in_watch_mode_instead_of_clearing_the_screen:b(6191,3,\"Whether_to_keep_outdated_console_output_in_watch_mode_instead_of_clearing_the_screen_6191\",\"Whether to keep outdated console output in watch mode instead of clearing the screen.\"),All_imports_in_import_declaration_are_unused:b(6192,1,\"All_imports_in_import_declaration_are_unused_6192\",\"All imports in import declaration are unused.\",!0),Found_1_error_Watching_for_file_changes:b(6193,3,\"Found_1_error_Watching_for_file_changes_6193\",\"Found 1 error. Watching for file changes.\"),Found_0_errors_Watching_for_file_changes:b(6194,3,\"Found_0_errors_Watching_for_file_changes_6194\",\"Found {0} errors. Watching for file changes.\"),Resolve_keyof_to_string_valued_property_names_only_no_numbers_or_symbols:b(6195,3,\"Resolve_keyof_to_string_valued_property_names_only_no_numbers_or_symbols_6195\",\"Resolve 'keyof' to string valued property names only (no numbers or symbols).\"),_0_is_declared_but_never_used:b(6196,1,\"_0_is_declared_but_never_used_6196\",\"'{0}' is declared but never used.\",!0),Include_modules_imported_with_json_extension:b(6197,3,\"Include_modules_imported_with_json_extension_6197\",\"Include modules imported with '.json' extension\"),All_destructured_elements_are_unused:b(6198,1,\"All_destructured_elements_are_unused_6198\",\"All destructured elements are unused.\",!0),All_variables_are_unused:b(6199,1,\"All_variables_are_unused_6199\",\"All variables are unused.\",!0),Definitions_of_the_following_identifiers_conflict_with_those_in_another_file_Colon_0:b(6200,1,\"Definitions_of_the_following_identifiers_conflict_with_those_in_another_file_Colon_0_6200\",\"Definitions of the following identifiers conflict with those in another file: {0}\"),Conflicts_are_in_this_file:b(6201,3,\"Conflicts_are_in_this_file_6201\",\"Conflicts are in this file.\"),Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0:b(6202,1,\"Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0_6202\",\"Project references may not form a circular graph. Cycle detected: {0}\"),_0_was_also_declared_here:b(6203,3,\"_0_was_also_declared_here_6203\",\"'{0}' was also declared here.\"),and_here:b(6204,3,\"and_here_6204\",\"and here.\"),All_type_parameters_are_unused:b(6205,1,\"All_type_parameters_are_unused_6205\",\"All type parameters are unused.\"),package_json_has_a_typesVersions_field_with_version_specific_path_mappings:b(6206,3,\"package_json_has_a_typesVersions_field_with_version_specific_path_mappings_6206\",\"'package.json' has a 'typesVersions' field with version-specific path mappings.\"),package_json_does_not_have_a_typesVersions_entry_that_matches_version_0:b(6207,3,\"package_json_does_not_have_a_typesVersions_entry_that_matches_version_0_6207\",\"'package.json' does not have a 'typesVersions' entry that matches version '{0}'.\"),package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2:b(6208,3,\"package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_ma_6208\",\"'package.json' has a 'typesVersions' entry '{0}' that matches compiler version '{1}', looking for a pattern to match module name '{2}'.\"),package_json_has_a_typesVersions_entry_0_that_is_not_a_valid_semver_range:b(6209,3,\"package_json_has_a_typesVersions_entry_0_that_is_not_a_valid_semver_range_6209\",\"'package.json' has a 'typesVersions' entry '{0}' that is not a valid semver range.\"),An_argument_for_0_was_not_provided:b(6210,3,\"An_argument_for_0_was_not_provided_6210\",\"An argument for '{0}' was not provided.\"),An_argument_matching_this_binding_pattern_was_not_provided:b(6211,3,\"An_argument_matching_this_binding_pattern_was_not_provided_6211\",\"An argument matching this binding pattern was not provided.\"),Did_you_mean_to_call_this_expression:b(6212,3,\"Did_you_mean_to_call_this_expression_6212\",\"Did you mean to call this expression?\"),Did_you_mean_to_use_new_with_this_expression:b(6213,3,\"Did_you_mean_to_use_new_with_this_expression_6213\",\"Did you mean to use 'new' with this expression?\"),Enable_strict_bind_call_and_apply_methods_on_functions:b(6214,3,\"Enable_strict_bind_call_and_apply_methods_on_functions_6214\",\"Enable strict 'bind', 'call', and 'apply' methods on functions.\"),Using_compiler_options_of_project_reference_redirect_0:b(6215,3,\"Using_compiler_options_of_project_reference_redirect_0_6215\",\"Using compiler options of project reference redirect '{0}'.\"),Found_1_error:b(6216,3,\"Found_1_error_6216\",\"Found 1 error.\"),Found_0_errors:b(6217,3,\"Found_0_errors_6217\",\"Found {0} errors.\"),Module_name_0_was_successfully_resolved_to_1_with_Package_ID_2:b(6218,3,\"Module_name_0_was_successfully_resolved_to_1_with_Package_ID_2_6218\",\"======== Module name '{0}' was successfully resolved to '{1}' with Package ID '{2}'. ========\"),Type_reference_directive_0_was_successfully_resolved_to_1_with_Package_ID_2_primary_Colon_3:b(6219,3,\"Type_reference_directive_0_was_successfully_resolved_to_1_with_Package_ID_2_primary_Colon_3_6219\",\"======== Type reference directive '{0}' was successfully resolved to '{1}' with Package ID '{2}', primary: {3}. ========\"),package_json_had_a_falsy_0_field:b(6220,3,\"package_json_had_a_falsy_0_field_6220\",\"'package.json' had a falsy '{0}' field.\"),Disable_use_of_source_files_instead_of_declaration_files_from_referenced_projects:b(6221,3,\"Disable_use_of_source_files_instead_of_declaration_files_from_referenced_projects_6221\",\"Disable use of source files instead of declaration files from referenced projects.\"),Emit_class_fields_with_Define_instead_of_Set:b(6222,3,\"Emit_class_fields_with_Define_instead_of_Set_6222\",\"Emit class fields with Define instead of Set.\"),Generates_a_CPU_profile:b(6223,3,\"Generates_a_CPU_profile_6223\",\"Generates a CPU profile.\"),Disable_solution_searching_for_this_project:b(6224,3,\"Disable_solution_searching_for_this_project_6224\",\"Disable solution searching for this project.\"),Specify_strategy_for_watching_file_Colon_FixedPollingInterval_default_PriorityPollingInterval_DynamicPriorityPolling_FixedChunkSizePolling_UseFsEvents_UseFsEventsOnParentDirectory:b(6225,3,\"Specify_strategy_for_watching_file_Colon_FixedPollingInterval_default_PriorityPollingInterval_Dynami_6225\",\"Specify strategy for watching file: 'FixedPollingInterval' (default), 'PriorityPollingInterval', 'DynamicPriorityPolling', 'FixedChunkSizePolling', 'UseFsEvents', 'UseFsEventsOnParentDirectory'.\"),Specify_strategy_for_watching_directory_on_platforms_that_don_t_support_recursive_watching_natively_Colon_UseFsEvents_default_FixedPollingInterval_DynamicPriorityPolling_FixedChunkSizePolling:b(6226,3,\"Specify_strategy_for_watching_directory_on_platforms_that_don_t_support_recursive_watching_natively__6226\",\"Specify strategy for watching directory on platforms that don't support recursive watching natively: 'UseFsEvents' (default), 'FixedPollingInterval', 'DynamicPriorityPolling', 'FixedChunkSizePolling'.\"),Specify_strategy_for_creating_a_polling_watch_when_it_fails_to_create_using_file_system_events_Colon_FixedInterval_default_PriorityInterval_DynamicPriority_FixedChunkSize:b(6227,3,\"Specify_strategy_for_creating_a_polling_watch_when_it_fails_to_create_using_file_system_events_Colon_6227\",\"Specify strategy for creating a polling watch when it fails to create using file system events: 'FixedInterval' (default), 'PriorityInterval', 'DynamicPriority', 'FixedChunkSize'.\"),Tag_0_expects_at_least_1_arguments_but_the_JSX_factory_2_provides_at_most_3:b(6229,1,\"Tag_0_expects_at_least_1_arguments_but_the_JSX_factory_2_provides_at_most_3_6229\",\"Tag '{0}' expects at least '{1}' arguments, but the JSX factory '{2}' provides at most '{3}'.\"),Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_false_or_null_on_command_line:b(6230,1,\"Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_false_or_null_on_command_line_6230\",\"Option '{0}' can only be specified in 'tsconfig.json' file or set to 'false' or 'null' on command line.\"),Could_not_resolve_the_path_0_with_the_extensions_Colon_1:b(6231,1,\"Could_not_resolve_the_path_0_with_the_extensions_Colon_1_6231\",\"Could not resolve the path '{0}' with the extensions: {1}.\"),Declaration_augments_declaration_in_another_file_This_cannot_be_serialized:b(6232,1,\"Declaration_augments_declaration_in_another_file_This_cannot_be_serialized_6232\",\"Declaration augments declaration in another file. This cannot be serialized.\"),This_is_the_declaration_being_augmented_Consider_moving_the_augmenting_declaration_into_the_same_file:b(6233,1,\"This_is_the_declaration_being_augmented_Consider_moving_the_augmenting_declaration_into_the_same_fil_6233\",\"This is the declaration being augmented. Consider moving the augmenting declaration into the same file.\"),This_expression_is_not_callable_because_it_is_a_get_accessor_Did_you_mean_to_use_it_without:b(6234,1,\"This_expression_is_not_callable_because_it_is_a_get_accessor_Did_you_mean_to_use_it_without_6234\",\"This expression is not callable because it is a 'get' accessor. Did you mean to use it without '()'?\"),Disable_loading_referenced_projects:b(6235,3,\"Disable_loading_referenced_projects_6235\",\"Disable loading referenced projects.\"),Arguments_for_the_rest_parameter_0_were_not_provided:b(6236,1,\"Arguments_for_the_rest_parameter_0_were_not_provided_6236\",\"Arguments for the rest parameter '{0}' were not provided.\"),Generates_an_event_trace_and_a_list_of_types:b(6237,3,\"Generates_an_event_trace_and_a_list_of_types_6237\",\"Generates an event trace and a list of types.\"),Specify_the_module_specifier_to_be_used_to_import_the_jsx_and_jsxs_factory_functions_from_eg_react:b(6238,1,\"Specify_the_module_specifier_to_be_used_to_import_the_jsx_and_jsxs_factory_functions_from_eg_react_6238\",\"Specify the module specifier to be used to import the 'jsx' and 'jsxs' factory functions from. eg, react\"),File_0_exists_according_to_earlier_cached_lookups:b(6239,3,\"File_0_exists_according_to_earlier_cached_lookups_6239\",\"File '{0}' exists according to earlier cached lookups.\"),File_0_does_not_exist_according_to_earlier_cached_lookups:b(6240,3,\"File_0_does_not_exist_according_to_earlier_cached_lookups_6240\",\"File '{0}' does not exist according to earlier cached lookups.\"),Resolution_for_type_reference_directive_0_was_found_in_cache_from_location_1:b(6241,3,\"Resolution_for_type_reference_directive_0_was_found_in_cache_from_location_1_6241\",\"Resolution for type reference directive '{0}' was found in cache from location '{1}'.\"),Resolving_type_reference_directive_0_containing_file_1:b(6242,3,\"Resolving_type_reference_directive_0_containing_file_1_6242\",\"======== Resolving type reference directive '{0}', containing file '{1}'. ========\"),Interpret_optional_property_types_as_written_rather_than_adding_undefined:b(6243,3,\"Interpret_optional_property_types_as_written_rather_than_adding_undefined_6243\",\"Interpret optional property types as written, rather than adding 'undefined'.\"),Modules:b(6244,3,\"Modules_6244\",\"Modules\"),File_Management:b(6245,3,\"File_Management_6245\",\"File Management\"),Emit:b(6246,3,\"Emit_6246\",\"Emit\"),JavaScript_Support:b(6247,3,\"JavaScript_Support_6247\",\"JavaScript Support\"),Type_Checking:b(6248,3,\"Type_Checking_6248\",\"Type Checking\"),Editor_Support:b(6249,3,\"Editor_Support_6249\",\"Editor Support\"),Watch_and_Build_Modes:b(6250,3,\"Watch_and_Build_Modes_6250\",\"Watch and Build Modes\"),Compiler_Diagnostics:b(6251,3,\"Compiler_Diagnostics_6251\",\"Compiler Diagnostics\"),Interop_Constraints:b(6252,3,\"Interop_Constraints_6252\",\"Interop Constraints\"),Backwards_Compatibility:b(6253,3,\"Backwards_Compatibility_6253\",\"Backwards Compatibility\"),Language_and_Environment:b(6254,3,\"Language_and_Environment_6254\",\"Language and Environment\"),Projects:b(6255,3,\"Projects_6255\",\"Projects\"),Output_Formatting:b(6256,3,\"Output_Formatting_6256\",\"Output Formatting\"),Completeness:b(6257,3,\"Completeness_6257\",\"Completeness\"),_0_should_be_set_inside_the_compilerOptions_object_of_the_config_json_file:b(6258,1,\"_0_should_be_set_inside_the_compilerOptions_object_of_the_config_json_file_6258\",\"'{0}' should be set inside the 'compilerOptions' object of the config json file\"),Found_1_error_in_1:b(6259,3,\"Found_1_error_in_1_6259\",\"Found 1 error in {1}\"),Found_0_errors_in_the_same_file_starting_at_Colon_1:b(6260,3,\"Found_0_errors_in_the_same_file_starting_at_Colon_1_6260\",\"Found {0} errors in the same file, starting at: {1}\"),Found_0_errors_in_1_files:b(6261,3,\"Found_0_errors_in_1_files_6261\",\"Found {0} errors in {1} files.\"),File_name_0_has_a_1_extension_looking_up_2_instead:b(6262,3,\"File_name_0_has_a_1_extension_looking_up_2_instead_6262\",\"File name '{0}' has a '{1}' extension - looking up '{2}' instead.\"),Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set:b(6263,1,\"Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set_6263\",\"Module '{0}' was resolved to '{1}', but '--allowArbitraryExtensions' is not set.\"),Enable_importing_files_with_any_extension_provided_a_declaration_file_is_present:b(6264,3,\"Enable_importing_files_with_any_extension_provided_a_declaration_file_is_present_6264\",\"Enable importing files with any extension, provided a declaration file is present.\"),Directory_0_has_no_containing_package_json_scope_Imports_will_not_resolve:b(6270,3,\"Directory_0_has_no_containing_package_json_scope_Imports_will_not_resolve_6270\",\"Directory '{0}' has no containing package.json scope. Imports will not resolve.\"),Import_specifier_0_does_not_exist_in_package_json_scope_at_path_1:b(6271,3,\"Import_specifier_0_does_not_exist_in_package_json_scope_at_path_1_6271\",\"Import specifier '{0}' does not exist in package.json scope at path '{1}'.\"),Invalid_import_specifier_0_has_no_possible_resolutions:b(6272,3,\"Invalid_import_specifier_0_has_no_possible_resolutions_6272\",\"Invalid import specifier '{0}' has no possible resolutions.\"),package_json_scope_0_has_no_imports_defined:b(6273,3,\"package_json_scope_0_has_no_imports_defined_6273\",\"package.json scope '{0}' has no imports defined.\"),package_json_scope_0_explicitly_maps_specifier_1_to_null:b(6274,3,\"package_json_scope_0_explicitly_maps_specifier_1_to_null_6274\",\"package.json scope '{0}' explicitly maps specifier '{1}' to null.\"),package_json_scope_0_has_invalid_type_for_target_of_specifier_1:b(6275,3,\"package_json_scope_0_has_invalid_type_for_target_of_specifier_1_6275\",\"package.json scope '{0}' has invalid type for target of specifier '{1}'\"),Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1:b(6276,3,\"Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1_6276\",\"Export specifier '{0}' does not exist in package.json scope at path '{1}'.\"),Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_if_npm_library_needs_configuration_update:b(6277,3,\"Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_i_6277\",\"Resolution of non-relative name failed; trying with modern Node resolution features disabled to see if npm library needs configuration update.\"),There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The_1_library_may_need_to_update_its_package_json_or_typings:b(6278,3,\"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278\",`There are types at '{0}', but this result could not be resolved when respecting package.json \"exports\". The '{1}' library may need to update its package.json or typings.`),Enable_project_compilation:b(6302,3,\"Enable_project_compilation_6302\",\"Enable project compilation\"),Composite_projects_may_not_disable_declaration_emit:b(6304,1,\"Composite_projects_may_not_disable_declaration_emit_6304\",\"Composite projects may not disable declaration emit.\"),Output_file_0_has_not_been_built_from_source_file_1:b(6305,1,\"Output_file_0_has_not_been_built_from_source_file_1_6305\",\"Output file '{0}' has not been built from source file '{1}'.\"),Referenced_project_0_must_have_setting_composite_Colon_true:b(6306,1,\"Referenced_project_0_must_have_setting_composite_Colon_true_6306\",`Referenced project '{0}' must have setting \"composite\": true.`),File_0_is_not_listed_within_the_file_list_of_project_1_Projects_must_list_all_files_or_use_an_include_pattern:b(6307,1,\"File_0_is_not_listed_within_the_file_list_of_project_1_Projects_must_list_all_files_or_use_an_includ_6307\",\"File '{0}' is not listed within the file list of project '{1}'. Projects must list all files or use an 'include' pattern.\"),Cannot_prepend_project_0_because_it_does_not_have_outFile_set:b(6308,1,\"Cannot_prepend_project_0_because_it_does_not_have_outFile_set_6308\",\"Cannot prepend project '{0}' because it does not have 'outFile' set\"),Output_file_0_from_project_1_does_not_exist:b(6309,1,\"Output_file_0_from_project_1_does_not_exist_6309\",\"Output file '{0}' from project '{1}' does not exist\"),Referenced_project_0_may_not_disable_emit:b(6310,1,\"Referenced_project_0_may_not_disable_emit_6310\",\"Referenced project '{0}' may not disable emit.\"),Project_0_is_out_of_date_because_output_1_is_older_than_input_2:b(6350,3,\"Project_0_is_out_of_date_because_output_1_is_older_than_input_2_6350\",\"Project '{0}' is out of date because output '{1}' is older than input '{2}'\"),Project_0_is_up_to_date_because_newest_input_1_is_older_than_output_2:b(6351,3,\"Project_0_is_up_to_date_because_newest_input_1_is_older_than_output_2_6351\",\"Project '{0}' is up to date because newest input '{1}' is older than output '{2}'\"),Project_0_is_out_of_date_because_output_file_1_does_not_exist:b(6352,3,\"Project_0_is_out_of_date_because_output_file_1_does_not_exist_6352\",\"Project '{0}' is out of date because output file '{1}' does not exist\"),Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date:b(6353,3,\"Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date_6353\",\"Project '{0}' is out of date because its dependency '{1}' is out of date\"),Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies:b(6354,3,\"Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies_6354\",\"Project '{0}' is up to date with .d.ts files from its dependencies\"),Projects_in_this_build_Colon_0:b(6355,3,\"Projects_in_this_build_Colon_0_6355\",\"Projects in this build: {0}\"),A_non_dry_build_would_delete_the_following_files_Colon_0:b(6356,3,\"A_non_dry_build_would_delete_the_following_files_Colon_0_6356\",\"A non-dry build would delete the following files: {0}\"),A_non_dry_build_would_build_project_0:b(6357,3,\"A_non_dry_build_would_build_project_0_6357\",\"A non-dry build would build project '{0}'\"),Building_project_0:b(6358,3,\"Building_project_0_6358\",\"Building project '{0}'...\"),Updating_output_timestamps_of_project_0:b(6359,3,\"Updating_output_timestamps_of_project_0_6359\",\"Updating output timestamps of project '{0}'...\"),Project_0_is_up_to_date:b(6361,3,\"Project_0_is_up_to_date_6361\",\"Project '{0}' is up to date\"),Skipping_build_of_project_0_because_its_dependency_1_has_errors:b(6362,3,\"Skipping_build_of_project_0_because_its_dependency_1_has_errors_6362\",\"Skipping build of project '{0}' because its dependency '{1}' has errors\"),Project_0_can_t_be_built_because_its_dependency_1_has_errors:b(6363,3,\"Project_0_can_t_be_built_because_its_dependency_1_has_errors_6363\",\"Project '{0}' can't be built because its dependency '{1}' has errors\"),Build_one_or_more_projects_and_their_dependencies_if_out_of_date:b(6364,3,\"Build_one_or_more_projects_and_their_dependencies_if_out_of_date_6364\",\"Build one or more projects and their dependencies, if out of date\"),Delete_the_outputs_of_all_projects:b(6365,3,\"Delete_the_outputs_of_all_projects_6365\",\"Delete the outputs of all projects.\"),Show_what_would_be_built_or_deleted_if_specified_with_clean:b(6367,3,\"Show_what_would_be_built_or_deleted_if_specified_with_clean_6367\",\"Show what would be built (or deleted, if specified with '--clean')\"),Option_build_must_be_the_first_command_line_argument:b(6369,1,\"Option_build_must_be_the_first_command_line_argument_6369\",\"Option '--build' must be the first command line argument.\"),Options_0_and_1_cannot_be_combined:b(6370,1,\"Options_0_and_1_cannot_be_combined_6370\",\"Options '{0}' and '{1}' cannot be combined.\"),Updating_unchanged_output_timestamps_of_project_0:b(6371,3,\"Updating_unchanged_output_timestamps_of_project_0_6371\",\"Updating unchanged output timestamps of project '{0}'...\"),Project_0_is_out_of_date_because_output_of_its_dependency_1_has_changed:b(6372,3,\"Project_0_is_out_of_date_because_output_of_its_dependency_1_has_changed_6372\",\"Project '{0}' is out of date because output of its dependency '{1}' has changed\"),Updating_output_of_project_0:b(6373,3,\"Updating_output_of_project_0_6373\",\"Updating output of project '{0}'...\"),A_non_dry_build_would_update_timestamps_for_output_of_project_0:b(6374,3,\"A_non_dry_build_would_update_timestamps_for_output_of_project_0_6374\",\"A non-dry build would update timestamps for output of project '{0}'\"),A_non_dry_build_would_update_output_of_project_0:b(6375,3,\"A_non_dry_build_would_update_output_of_project_0_6375\",\"A non-dry build would update output of project '{0}'\"),Cannot_update_output_of_project_0_because_there_was_error_reading_file_1:b(6376,3,\"Cannot_update_output_of_project_0_because_there_was_error_reading_file_1_6376\",\"Cannot update output of project '{0}' because there was error reading file '{1}'\"),Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1:b(6377,1,\"Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1_6377\",\"Cannot write file '{0}' because it will overwrite '.tsbuildinfo' file generated by referenced project '{1}'\"),Composite_projects_may_not_disable_incremental_compilation:b(6379,1,\"Composite_projects_may_not_disable_incremental_compilation_6379\",\"Composite projects may not disable incremental compilation.\"),Specify_file_to_store_incremental_compilation_information:b(6380,3,\"Specify_file_to_store_incremental_compilation_information_6380\",\"Specify file to store incremental compilation information\"),Project_0_is_out_of_date_because_output_for_it_was_generated_with_version_1_that_differs_with_current_version_2:b(6381,3,\"Project_0_is_out_of_date_because_output_for_it_was_generated_with_version_1_that_differs_with_curren_6381\",\"Project '{0}' is out of date because output for it was generated with version '{1}' that differs with current version '{2}'\"),Skipping_build_of_project_0_because_its_dependency_1_was_not_built:b(6382,3,\"Skipping_build_of_project_0_because_its_dependency_1_was_not_built_6382\",\"Skipping build of project '{0}' because its dependency '{1}' was not built\"),Project_0_can_t_be_built_because_its_dependency_1_was_not_built:b(6383,3,\"Project_0_can_t_be_built_because_its_dependency_1_was_not_built_6383\",\"Project '{0}' can't be built because its dependency '{1}' was not built\"),Have_recompiles_in_incremental_and_watch_assume_that_changes_within_a_file_will_only_affect_files_directly_depending_on_it:b(6384,3,\"Have_recompiles_in_incremental_and_watch_assume_that_changes_within_a_file_will_only_affect_files_di_6384\",\"Have recompiles in '--incremental' and '--watch' assume that changes within a file will only affect files directly depending on it.\"),_0_is_deprecated:b(6385,2,\"_0_is_deprecated_6385\",\"'{0}' is deprecated.\",void 0,void 0,!0),Performance_timings_for_diagnostics_or_extendedDiagnostics_are_not_available_in_this_session_A_native_implementation_of_the_Web_Performance_API_could_not_be_found:b(6386,3,\"Performance_timings_for_diagnostics_or_extendedDiagnostics_are_not_available_in_this_session_A_nativ_6386\",\"Performance timings for '--diagnostics' or '--extendedDiagnostics' are not available in this session. A native implementation of the Web Performance API could not be found.\"),The_signature_0_of_1_is_deprecated:b(6387,2,\"The_signature_0_of_1_is_deprecated_6387\",\"The signature '{0}' of '{1}' is deprecated.\",void 0,void 0,!0),Project_0_is_being_forcibly_rebuilt:b(6388,3,\"Project_0_is_being_forcibly_rebuilt_6388\",\"Project '{0}' is being forcibly rebuilt\"),Reusing_resolution_of_module_0_from_1_of_old_program_it_was_not_resolved:b(6389,3,\"Reusing_resolution_of_module_0_from_1_of_old_program_it_was_not_resolved_6389\",\"Reusing resolution of module '{0}' from '{1}' of old program, it was not resolved.\"),Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved_to_2:b(6390,3,\"Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved__6390\",\"Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was successfully resolved to '{2}'.\"),Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3:b(6391,3,\"Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved__6391\",\"Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was successfully resolved to '{2}' with Package ID '{3}'.\"),Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_not_resolved:b(6392,3,\"Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_not_resolved_6392\",\"Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was not resolved.\"),Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3:b(6393,3,\"Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_6393\",\"Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}'.\"),Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3_with_Package_ID_4:b(6394,3,\"Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_6394\",\"Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}' with Package ID '{4}'.\"),Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_not_resolved:b(6395,3,\"Reusing_resolution_of_module_0_from_1_found_in_cache_from_location_2_it_was_not_resolved_6395\",\"Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was not resolved.\"),Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3:b(6396,3,\"Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_succes_6396\",\"Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}'.\"),Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_successfully_resolved_to_3_with_Package_ID_4:b(6397,3,\"Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_succes_6397\",\"Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}' with Package ID '{4}'.\"),Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_not_resolved:b(6398,3,\"Reusing_resolution_of_type_reference_directive_0_from_1_found_in_cache_from_location_2_it_was_not_re_6398\",\"Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was not resolved.\"),Project_0_is_out_of_date_because_buildinfo_file_1_indicates_that_some_of_the_changes_were_not_emitted:b(6399,3,\"Project_0_is_out_of_date_because_buildinfo_file_1_indicates_that_some_of_the_changes_were_not_emitte_6399\",\"Project '{0}' is out of date because buildinfo file '{1}' indicates that some of the changes were not emitted\"),Project_0_is_up_to_date_but_needs_to_update_timestamps_of_output_files_that_are_older_than_input_files:b(6400,3,\"Project_0_is_up_to_date_but_needs_to_update_timestamps_of_output_files_that_are_older_than_input_fil_6400\",\"Project '{0}' is up to date but needs to update timestamps of output files that are older than input files\"),Project_0_is_out_of_date_because_there_was_error_reading_file_1:b(6401,3,\"Project_0_is_out_of_date_because_there_was_error_reading_file_1_6401\",\"Project '{0}' is out of date because there was error reading file '{1}'\"),Resolving_in_0_mode_with_conditions_1:b(6402,3,\"Resolving_in_0_mode_with_conditions_1_6402\",\"Resolving in {0} mode with conditions {1}.\"),Matched_0_condition_1:b(6403,3,\"Matched_0_condition_1_6403\",\"Matched '{0}' condition '{1}'.\"),Using_0_subpath_1_with_target_2:b(6404,3,\"Using_0_subpath_1_with_target_2_6404\",\"Using '{0}' subpath '{1}' with target '{2}'.\"),Saw_non_matching_condition_0:b(6405,3,\"Saw_non_matching_condition_0_6405\",\"Saw non-matching condition '{0}'.\"),Project_0_is_out_of_date_because_buildinfo_file_1_indicates_there_is_change_in_compilerOptions:b(6406,3,\"Project_0_is_out_of_date_because_buildinfo_file_1_indicates_there_is_change_in_compilerOptions_6406\",\"Project '{0}' is out of date because buildinfo file '{1}' indicates there is change in compilerOptions\"),Allow_imports_to_include_TypeScript_file_extensions_Requires_moduleResolution_bundler_and_either_noEmit_or_emitDeclarationOnly_to_be_set:b(6407,3,\"Allow_imports_to_include_TypeScript_file_extensions_Requires_moduleResolution_bundler_and_either_noE_6407\",\"Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set.\"),Use_the_package_json_exports_field_when_resolving_package_imports:b(6408,3,\"Use_the_package_json_exports_field_when_resolving_package_imports_6408\",\"Use the package.json 'exports' field when resolving package imports.\"),Use_the_package_json_imports_field_when_resolving_imports:b(6409,3,\"Use_the_package_json_imports_field_when_resolving_imports_6409\",\"Use the package.json 'imports' field when resolving imports.\"),Conditions_to_set_in_addition_to_the_resolver_specific_defaults_when_resolving_imports:b(6410,3,\"Conditions_to_set_in_addition_to_the_resolver_specific_defaults_when_resolving_imports_6410\",\"Conditions to set in addition to the resolver-specific defaults when resolving imports.\"),true_when_moduleResolution_is_node16_nodenext_or_bundler_otherwise_false:b(6411,3,\"true_when_moduleResolution_is_node16_nodenext_or_bundler_otherwise_false_6411\",\"`true` when 'moduleResolution' is 'node16', 'nodenext', or 'bundler'; otherwise `false`.\"),Project_0_is_out_of_date_because_buildinfo_file_1_indicates_that_file_2_was_root_file_of_compilation_but_not_any_more:b(6412,3,\"Project_0_is_out_of_date_because_buildinfo_file_1_indicates_that_file_2_was_root_file_of_compilation_6412\",\"Project '{0}' is out of date because buildinfo file '{1}' indicates that file '{2}' was root file of compilation but not any more.\"),Entering_conditional_exports:b(6413,3,\"Entering_conditional_exports_6413\",\"Entering conditional exports.\"),Resolved_under_condition_0:b(6414,3,\"Resolved_under_condition_0_6414\",\"Resolved under condition '{0}'.\"),Failed_to_resolve_under_condition_0:b(6415,3,\"Failed_to_resolve_under_condition_0_6415\",\"Failed to resolve under condition '{0}'.\"),Exiting_conditional_exports:b(6416,3,\"Exiting_conditional_exports_6416\",\"Exiting conditional exports.\"),The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1:b(6500,3,\"The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1_6500\",\"The expected type comes from property '{0}' which is declared here on type '{1}'\"),The_expected_type_comes_from_this_index_signature:b(6501,3,\"The_expected_type_comes_from_this_index_signature_6501\",\"The expected type comes from this index signature.\"),The_expected_type_comes_from_the_return_type_of_this_signature:b(6502,3,\"The_expected_type_comes_from_the_return_type_of_this_signature_6502\",\"The expected type comes from the return type of this signature.\"),Print_names_of_files_that_are_part_of_the_compilation_and_then_stop_processing:b(6503,3,\"Print_names_of_files_that_are_part_of_the_compilation_and_then_stop_processing_6503\",\"Print names of files that are part of the compilation and then stop processing.\"),File_0_is_a_JavaScript_file_Did_you_mean_to_enable_the_allowJs_option:b(6504,1,\"File_0_is_a_JavaScript_file_Did_you_mean_to_enable_the_allowJs_option_6504\",\"File '{0}' is a JavaScript file. Did you mean to enable the 'allowJs' option?\"),Print_names_of_files_and_the_reason_they_are_part_of_the_compilation:b(6505,3,\"Print_names_of_files_and_the_reason_they_are_part_of_the_compilation_6505\",\"Print names of files and the reason they are part of the compilation.\"),Consider_adding_a_declare_modifier_to_this_class:b(6506,3,\"Consider_adding_a_declare_modifier_to_this_class_6506\",\"Consider adding a 'declare' modifier to this class.\"),Allow_JavaScript_files_to_be_a_part_of_your_program_Use_the_checkJS_option_to_get_errors_from_these_files:b(6600,3,\"Allow_JavaScript_files_to_be_a_part_of_your_program_Use_the_checkJS_option_to_get_errors_from_these__6600\",\"Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files.\"),Allow_import_x_from_y_when_a_module_doesn_t_have_a_default_export:b(6601,3,\"Allow_import_x_from_y_when_a_module_doesn_t_have_a_default_export_6601\",\"Allow 'import x from y' when a module doesn't have a default export.\"),Allow_accessing_UMD_globals_from_modules:b(6602,3,\"Allow_accessing_UMD_globals_from_modules_6602\",\"Allow accessing UMD globals from modules.\"),Disable_error_reporting_for_unreachable_code:b(6603,3,\"Disable_error_reporting_for_unreachable_code_6603\",\"Disable error reporting for unreachable code.\"),Disable_error_reporting_for_unused_labels:b(6604,3,\"Disable_error_reporting_for_unused_labels_6604\",\"Disable error reporting for unused labels.\"),Ensure_use_strict_is_always_emitted:b(6605,3,\"Ensure_use_strict_is_always_emitted_6605\",\"Ensure 'use strict' is always emitted.\"),Have_recompiles_in_projects_that_use_incremental_and_watch_mode_assume_that_changes_within_a_file_will_only_affect_files_directly_depending_on_it:b(6606,3,\"Have_recompiles_in_projects_that_use_incremental_and_watch_mode_assume_that_changes_within_a_file_wi_6606\",\"Have recompiles in projects that use 'incremental' and 'watch' mode assume that changes within a file will only affect files directly depending on it.\"),Specify_the_base_directory_to_resolve_non_relative_module_names:b(6607,3,\"Specify_the_base_directory_to_resolve_non_relative_module_names_6607\",\"Specify the base directory to resolve non-relative module names.\"),No_longer_supported_In_early_versions_manually_set_the_text_encoding_for_reading_files:b(6608,3,\"No_longer_supported_In_early_versions_manually_set_the_text_encoding_for_reading_files_6608\",\"No longer supported. In early versions, manually set the text encoding for reading files.\"),Enable_error_reporting_in_type_checked_JavaScript_files:b(6609,3,\"Enable_error_reporting_in_type_checked_JavaScript_files_6609\",\"Enable error reporting in type-checked JavaScript files.\"),Enable_constraints_that_allow_a_TypeScript_project_to_be_used_with_project_references:b(6611,3,\"Enable_constraints_that_allow_a_TypeScript_project_to_be_used_with_project_references_6611\",\"Enable constraints that allow a TypeScript project to be used with project references.\"),Generate_d_ts_files_from_TypeScript_and_JavaScript_files_in_your_project:b(6612,3,\"Generate_d_ts_files_from_TypeScript_and_JavaScript_files_in_your_project_6612\",\"Generate .d.ts files from TypeScript and JavaScript files in your project.\"),Specify_the_output_directory_for_generated_declaration_files:b(6613,3,\"Specify_the_output_directory_for_generated_declaration_files_6613\",\"Specify the output directory for generated declaration files.\"),Create_sourcemaps_for_d_ts_files:b(6614,3,\"Create_sourcemaps_for_d_ts_files_6614\",\"Create sourcemaps for d.ts files.\"),Output_compiler_performance_information_after_building:b(6615,3,\"Output_compiler_performance_information_after_building_6615\",\"Output compiler performance information after building.\"),Disables_inference_for_type_acquisition_by_looking_at_filenames_in_a_project:b(6616,3,\"Disables_inference_for_type_acquisition_by_looking_at_filenames_in_a_project_6616\",\"Disables inference for type acquisition by looking at filenames in a project.\"),Reduce_the_number_of_projects_loaded_automatically_by_TypeScript:b(6617,3,\"Reduce_the_number_of_projects_loaded_automatically_by_TypeScript_6617\",\"Reduce the number of projects loaded automatically by TypeScript.\"),Remove_the_20mb_cap_on_total_source_code_size_for_JavaScript_files_in_the_TypeScript_language_server:b(6618,3,\"Remove_the_20mb_cap_on_total_source_code_size_for_JavaScript_files_in_the_TypeScript_language_server_6618\",\"Remove the 20mb cap on total source code size for JavaScript files in the TypeScript language server.\"),Opt_a_project_out_of_multi_project_reference_checking_when_editing:b(6619,3,\"Opt_a_project_out_of_multi_project_reference_checking_when_editing_6619\",\"Opt a project out of multi-project reference checking when editing.\"),Disable_preferring_source_files_instead_of_declaration_files_when_referencing_composite_projects:b(6620,3,\"Disable_preferring_source_files_instead_of_declaration_files_when_referencing_composite_projects_6620\",\"Disable preferring source files instead of declaration files when referencing composite projects.\"),Emit_more_compliant_but_verbose_and_less_performant_JavaScript_for_iteration:b(6621,3,\"Emit_more_compliant_but_verbose_and_less_performant_JavaScript_for_iteration_6621\",\"Emit more compliant, but verbose and less performant JavaScript for iteration.\"),Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files:b(6622,3,\"Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files_6622\",\"Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files.\"),Only_output_d_ts_files_and_not_JavaScript_files:b(6623,3,\"Only_output_d_ts_files_and_not_JavaScript_files_6623\",\"Only output d.ts files and not JavaScript files.\"),Emit_design_type_metadata_for_decorated_declarations_in_source_files:b(6624,3,\"Emit_design_type_metadata_for_decorated_declarations_in_source_files_6624\",\"Emit design-type metadata for decorated declarations in source files.\"),Disable_the_type_acquisition_for_JavaScript_projects:b(6625,3,\"Disable_the_type_acquisition_for_JavaScript_projects_6625\",\"Disable the type acquisition for JavaScript projects\"),Emit_additional_JavaScript_to_ease_support_for_importing_CommonJS_modules_This_enables_allowSyntheticDefaultImports_for_type_compatibility:b(6626,3,\"Emit_additional_JavaScript_to_ease_support_for_importing_CommonJS_modules_This_enables_allowSyntheti_6626\",\"Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility.\"),Filters_results_from_the_include_option:b(6627,3,\"Filters_results_from_the_include_option_6627\",\"Filters results from the `include` option.\"),Remove_a_list_of_directories_from_the_watch_process:b(6628,3,\"Remove_a_list_of_directories_from_the_watch_process_6628\",\"Remove a list of directories from the watch process.\"),Remove_a_list_of_files_from_the_watch_mode_s_processing:b(6629,3,\"Remove_a_list_of_files_from_the_watch_mode_s_processing_6629\",\"Remove a list of files from the watch mode's processing.\"),Enable_experimental_support_for_legacy_experimental_decorators:b(6630,3,\"Enable_experimental_support_for_legacy_experimental_decorators_6630\",\"Enable experimental support for legacy experimental decorators.\"),Print_files_read_during_the_compilation_including_why_it_was_included:b(6631,3,\"Print_files_read_during_the_compilation_including_why_it_was_included_6631\",\"Print files read during the compilation including why it was included.\"),Output_more_detailed_compiler_performance_information_after_building:b(6632,3,\"Output_more_detailed_compiler_performance_information_after_building_6632\",\"Output more detailed compiler performance information after building.\"),Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_are_inherited:b(6633,3,\"Specify_one_or_more_path_or_node_module_references_to_base_configuration_files_from_which_settings_a_6633\",\"Specify one or more path or node module references to base configuration files from which settings are inherited.\"),Specify_what_approach_the_watcher_should_use_if_the_system_runs_out_of_native_file_watchers:b(6634,3,\"Specify_what_approach_the_watcher_should_use_if_the_system_runs_out_of_native_file_watchers_6634\",\"Specify what approach the watcher should use if the system runs out of native file watchers.\"),Include_a_list_of_files_This_does_not_support_glob_patterns_as_opposed_to_include:b(6635,3,\"Include_a_list_of_files_This_does_not_support_glob_patterns_as_opposed_to_include_6635\",\"Include a list of files. This does not support glob patterns, as opposed to `include`.\"),Build_all_projects_including_those_that_appear_to_be_up_to_date:b(6636,3,\"Build_all_projects_including_those_that_appear_to_be_up_to_date_6636\",\"Build all projects, including those that appear to be up to date.\"),Ensure_that_casing_is_correct_in_imports:b(6637,3,\"Ensure_that_casing_is_correct_in_imports_6637\",\"Ensure that casing is correct in imports.\"),Emit_a_v8_CPU_profile_of_the_compiler_run_for_debugging:b(6638,3,\"Emit_a_v8_CPU_profile_of_the_compiler_run_for_debugging_6638\",\"Emit a v8 CPU profile of the compiler run for debugging.\"),Allow_importing_helper_functions_from_tslib_once_per_project_instead_of_including_them_per_file:b(6639,3,\"Allow_importing_helper_functions_from_tslib_once_per_project_instead_of_including_them_per_file_6639\",\"Allow importing helper functions from tslib once per project, instead of including them per-file.\"),Specify_a_list_of_glob_patterns_that_match_files_to_be_included_in_compilation:b(6641,3,\"Specify_a_list_of_glob_patterns_that_match_files_to_be_included_in_compilation_6641\",\"Specify a list of glob patterns that match files to be included in compilation.\"),Save_tsbuildinfo_files_to_allow_for_incremental_compilation_of_projects:b(6642,3,\"Save_tsbuildinfo_files_to_allow_for_incremental_compilation_of_projects_6642\",\"Save .tsbuildinfo files to allow for incremental compilation of projects.\"),Include_sourcemap_files_inside_the_emitted_JavaScript:b(6643,3,\"Include_sourcemap_files_inside_the_emitted_JavaScript_6643\",\"Include sourcemap files inside the emitted JavaScript.\"),Include_source_code_in_the_sourcemaps_inside_the_emitted_JavaScript:b(6644,3,\"Include_source_code_in_the_sourcemaps_inside_the_emitted_JavaScript_6644\",\"Include source code in the sourcemaps inside the emitted JavaScript.\"),Ensure_that_each_file_can_be_safely_transpiled_without_relying_on_other_imports:b(6645,3,\"Ensure_that_each_file_can_be_safely_transpiled_without_relying_on_other_imports_6645\",\"Ensure that each file can be safely transpiled without relying on other imports.\"),Specify_what_JSX_code_is_generated:b(6646,3,\"Specify_what_JSX_code_is_generated_6646\",\"Specify what JSX code is generated.\"),Specify_the_JSX_factory_function_used_when_targeting_React_JSX_emit_e_g_React_createElement_or_h:b(6647,3,\"Specify_the_JSX_factory_function_used_when_targeting_React_JSX_emit_e_g_React_createElement_or_h_6647\",\"Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'.\"),Specify_the_JSX_Fragment_reference_used_for_fragments_when_targeting_React_JSX_emit_e_g_React_Fragment_or_Fragment:b(6648,3,\"Specify_the_JSX_Fragment_reference_used_for_fragments_when_targeting_React_JSX_emit_e_g_React_Fragme_6648\",\"Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'.\"),Specify_module_specifier_used_to_import_the_JSX_factory_functions_when_using_jsx_Colon_react_jsx_Asterisk:b(6649,3,\"Specify_module_specifier_used_to_import_the_JSX_factory_functions_when_using_jsx_Colon_react_jsx_Ast_6649\",\"Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'.\"),Make_keyof_only_return_strings_instead_of_string_numbers_or_symbols_Legacy_option:b(6650,3,\"Make_keyof_only_return_strings_instead_of_string_numbers_or_symbols_Legacy_option_6650\",\"Make keyof only return strings instead of string, numbers or symbols. Legacy option.\"),Specify_a_set_of_bundled_library_declaration_files_that_describe_the_target_runtime_environment:b(6651,3,\"Specify_a_set_of_bundled_library_declaration_files_that_describe_the_target_runtime_environment_6651\",\"Specify a set of bundled library declaration files that describe the target runtime environment.\"),Print_the_names_of_emitted_files_after_a_compilation:b(6652,3,\"Print_the_names_of_emitted_files_after_a_compilation_6652\",\"Print the names of emitted files after a compilation.\"),Print_all_of_the_files_read_during_the_compilation:b(6653,3,\"Print_all_of_the_files_read_during_the_compilation_6653\",\"Print all of the files read during the compilation.\"),Set_the_language_of_the_messaging_from_TypeScript_This_does_not_affect_emit:b(6654,3,\"Set_the_language_of_the_messaging_from_TypeScript_This_does_not_affect_emit_6654\",\"Set the language of the messaging from TypeScript. This does not affect emit.\"),Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations:b(6655,3,\"Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6655\",\"Specify the location where debugger should locate map files instead of generated locations.\"),Specify_the_maximum_folder_depth_used_for_checking_JavaScript_files_from_node_modules_Only_applicable_with_allowJs:b(6656,3,\"Specify_the_maximum_folder_depth_used_for_checking_JavaScript_files_from_node_modules_Only_applicabl_6656\",\"Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'.\"),Specify_what_module_code_is_generated:b(6657,3,\"Specify_what_module_code_is_generated_6657\",\"Specify what module code is generated.\"),Specify_how_TypeScript_looks_up_a_file_from_a_given_module_specifier:b(6658,3,\"Specify_how_TypeScript_looks_up_a_file_from_a_given_module_specifier_6658\",\"Specify how TypeScript looks up a file from a given module specifier.\"),Set_the_newline_character_for_emitting_files:b(6659,3,\"Set_the_newline_character_for_emitting_files_6659\",\"Set the newline character for emitting files.\"),Disable_emitting_files_from_a_compilation:b(6660,3,\"Disable_emitting_files_from_a_compilation_6660\",\"Disable emitting files from a compilation.\"),Disable_generating_custom_helper_functions_like_extends_in_compiled_output:b(6661,3,\"Disable_generating_custom_helper_functions_like_extends_in_compiled_output_6661\",\"Disable generating custom helper functions like '__extends' in compiled output.\"),Disable_emitting_files_if_any_type_checking_errors_are_reported:b(6662,3,\"Disable_emitting_files_if_any_type_checking_errors_are_reported_6662\",\"Disable emitting files if any type checking errors are reported.\"),Disable_truncating_types_in_error_messages:b(6663,3,\"Disable_truncating_types_in_error_messages_6663\",\"Disable truncating types in error messages.\"),Enable_error_reporting_for_fallthrough_cases_in_switch_statements:b(6664,3,\"Enable_error_reporting_for_fallthrough_cases_in_switch_statements_6664\",\"Enable error reporting for fallthrough cases in switch statements.\"),Enable_error_reporting_for_expressions_and_declarations_with_an_implied_any_type:b(6665,3,\"Enable_error_reporting_for_expressions_and_declarations_with_an_implied_any_type_6665\",\"Enable error reporting for expressions and declarations with an implied 'any' type.\"),Ensure_overriding_members_in_derived_classes_are_marked_with_an_override_modifier:b(6666,3,\"Ensure_overriding_members_in_derived_classes_are_marked_with_an_override_modifier_6666\",\"Ensure overriding members in derived classes are marked with an override modifier.\"),Enable_error_reporting_for_codepaths_that_do_not_explicitly_return_in_a_function:b(6667,3,\"Enable_error_reporting_for_codepaths_that_do_not_explicitly_return_in_a_function_6667\",\"Enable error reporting for codepaths that do not explicitly return in a function.\"),Enable_error_reporting_when_this_is_given_the_type_any:b(6668,3,\"Enable_error_reporting_when_this_is_given_the_type_any_6668\",\"Enable error reporting when 'this' is given the type 'any'.\"),Disable_adding_use_strict_directives_in_emitted_JavaScript_files:b(6669,3,\"Disable_adding_use_strict_directives_in_emitted_JavaScript_files_6669\",\"Disable adding 'use strict' directives in emitted JavaScript files.\"),Disable_including_any_library_files_including_the_default_lib_d_ts:b(6670,3,\"Disable_including_any_library_files_including_the_default_lib_d_ts_6670\",\"Disable including any library files, including the default lib.d.ts.\"),Enforces_using_indexed_accessors_for_keys_declared_using_an_indexed_type:b(6671,3,\"Enforces_using_indexed_accessors_for_keys_declared_using_an_indexed_type_6671\",\"Enforces using indexed accessors for keys declared using an indexed type.\"),Disallow_import_s_require_s_or_reference_s_from_expanding_the_number_of_files_TypeScript_should_add_to_a_project:b(6672,3,\"Disallow_import_s_require_s_or_reference_s_from_expanding_the_number_of_files_TypeScript_should_add__6672\",\"Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project.\"),Disable_strict_checking_of_generic_signatures_in_function_types:b(6673,3,\"Disable_strict_checking_of_generic_signatures_in_function_types_6673\",\"Disable strict checking of generic signatures in function types.\"),Add_undefined_to_a_type_when_accessed_using_an_index:b(6674,3,\"Add_undefined_to_a_type_when_accessed_using_an_index_6674\",\"Add 'undefined' to a type when accessed using an index.\"),Enable_error_reporting_when_local_variables_aren_t_read:b(6675,3,\"Enable_error_reporting_when_local_variables_aren_t_read_6675\",\"Enable error reporting when local variables aren't read.\"),Raise_an_error_when_a_function_parameter_isn_t_read:b(6676,3,\"Raise_an_error_when_a_function_parameter_isn_t_read_6676\",\"Raise an error when a function parameter isn't read.\"),Deprecated_setting_Use_outFile_instead:b(6677,3,\"Deprecated_setting_Use_outFile_instead_6677\",\"Deprecated setting. Use 'outFile' instead.\"),Specify_an_output_folder_for_all_emitted_files:b(6678,3,\"Specify_an_output_folder_for_all_emitted_files_6678\",\"Specify an output folder for all emitted files.\"),Specify_a_file_that_bundles_all_outputs_into_one_JavaScript_file_If_declaration_is_true_also_designates_a_file_that_bundles_all_d_ts_output:b(6679,3,\"Specify_a_file_that_bundles_all_outputs_into_one_JavaScript_file_If_declaration_is_true_also_designa_6679\",\"Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output.\"),Specify_a_set_of_entries_that_re_map_imports_to_additional_lookup_locations:b(6680,3,\"Specify_a_set_of_entries_that_re_map_imports_to_additional_lookup_locations_6680\",\"Specify a set of entries that re-map imports to additional lookup locations.\"),Specify_a_list_of_language_service_plugins_to_include:b(6681,3,\"Specify_a_list_of_language_service_plugins_to_include_6681\",\"Specify a list of language service plugins to include.\"),Disable_erasing_const_enum_declarations_in_generated_code:b(6682,3,\"Disable_erasing_const_enum_declarations_in_generated_code_6682\",\"Disable erasing 'const enum' declarations in generated code.\"),Disable_resolving_symlinks_to_their_realpath_This_correlates_to_the_same_flag_in_node:b(6683,3,\"Disable_resolving_symlinks_to_their_realpath_This_correlates_to_the_same_flag_in_node_6683\",\"Disable resolving symlinks to their realpath. This correlates to the same flag in node.\"),Disable_wiping_the_console_in_watch_mode:b(6684,3,\"Disable_wiping_the_console_in_watch_mode_6684\",\"Disable wiping the console in watch mode.\"),Enable_color_and_formatting_in_TypeScript_s_output_to_make_compiler_errors_easier_to_read:b(6685,3,\"Enable_color_and_formatting_in_TypeScript_s_output_to_make_compiler_errors_easier_to_read_6685\",\"Enable color and formatting in TypeScript's output to make compiler errors easier to read.\"),Specify_the_object_invoked_for_createElement_This_only_applies_when_targeting_react_JSX_emit:b(6686,3,\"Specify_the_object_invoked_for_createElement_This_only_applies_when_targeting_react_JSX_emit_6686\",\"Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit.\"),Specify_an_array_of_objects_that_specify_paths_for_projects_Used_in_project_references:b(6687,3,\"Specify_an_array_of_objects_that_specify_paths_for_projects_Used_in_project_references_6687\",\"Specify an array of objects that specify paths for projects. Used in project references.\"),Disable_emitting_comments:b(6688,3,\"Disable_emitting_comments_6688\",\"Disable emitting comments.\"),Enable_importing_json_files:b(6689,3,\"Enable_importing_json_files_6689\",\"Enable importing .json files.\"),Specify_the_root_folder_within_your_source_files:b(6690,3,\"Specify_the_root_folder_within_your_source_files_6690\",\"Specify the root folder within your source files.\"),Allow_multiple_folders_to_be_treated_as_one_when_resolving_modules:b(6691,3,\"Allow_multiple_folders_to_be_treated_as_one_when_resolving_modules_6691\",\"Allow multiple folders to be treated as one when resolving modules.\"),Skip_type_checking_d_ts_files_that_are_included_with_TypeScript:b(6692,3,\"Skip_type_checking_d_ts_files_that_are_included_with_TypeScript_6692\",\"Skip type checking .d.ts files that are included with TypeScript.\"),Skip_type_checking_all_d_ts_files:b(6693,3,\"Skip_type_checking_all_d_ts_files_6693\",\"Skip type checking all .d.ts files.\"),Create_source_map_files_for_emitted_JavaScript_files:b(6694,3,\"Create_source_map_files_for_emitted_JavaScript_files_6694\",\"Create source map files for emitted JavaScript files.\"),Specify_the_root_path_for_debuggers_to_find_the_reference_source_code:b(6695,3,\"Specify_the_root_path_for_debuggers_to_find_the_reference_source_code_6695\",\"Specify the root path for debuggers to find the reference source code.\"),Check_that_the_arguments_for_bind_call_and_apply_methods_match_the_original_function:b(6697,3,\"Check_that_the_arguments_for_bind_call_and_apply_methods_match_the_original_function_6697\",\"Check that the arguments for 'bind', 'call', and 'apply' methods match the original function.\"),When_assigning_functions_check_to_ensure_parameters_and_the_return_values_are_subtype_compatible:b(6698,3,\"When_assigning_functions_check_to_ensure_parameters_and_the_return_values_are_subtype_compatible_6698\",\"When assigning functions, check to ensure parameters and the return values are subtype-compatible.\"),When_type_checking_take_into_account_null_and_undefined:b(6699,3,\"When_type_checking_take_into_account_null_and_undefined_6699\",\"When type checking, take into account 'null' and 'undefined'.\"),Check_for_class_properties_that_are_declared_but_not_set_in_the_constructor:b(6700,3,\"Check_for_class_properties_that_are_declared_but_not_set_in_the_constructor_6700\",\"Check for class properties that are declared but not set in the constructor.\"),Disable_emitting_declarations_that_have_internal_in_their_JSDoc_comments:b(6701,3,\"Disable_emitting_declarations_that_have_internal_in_their_JSDoc_comments_6701\",\"Disable emitting declarations that have '@internal' in their JSDoc comments.\"),Disable_reporting_of_excess_property_errors_during_the_creation_of_object_literals:b(6702,3,\"Disable_reporting_of_excess_property_errors_during_the_creation_of_object_literals_6702\",\"Disable reporting of excess property errors during the creation of object literals.\"),Suppress_noImplicitAny_errors_when_indexing_objects_that_lack_index_signatures:b(6703,3,\"Suppress_noImplicitAny_errors_when_indexing_objects_that_lack_index_signatures_6703\",\"Suppress 'noImplicitAny' errors when indexing objects that lack index signatures.\"),Synchronously_call_callbacks_and_update_the_state_of_directory_watchers_on_platforms_that_don_t_support_recursive_watching_natively:b(6704,3,\"Synchronously_call_callbacks_and_update_the_state_of_directory_watchers_on_platforms_that_don_t_supp_6704\",\"Synchronously call callbacks and update the state of directory watchers on platforms that don`t support recursive watching natively.\"),Set_the_JavaScript_language_version_for_emitted_JavaScript_and_include_compatible_library_declarations:b(6705,3,\"Set_the_JavaScript_language_version_for_emitted_JavaScript_and_include_compatible_library_declaratio_6705\",\"Set the JavaScript language version for emitted JavaScript and include compatible library declarations.\"),Log_paths_used_during_the_moduleResolution_process:b(6706,3,\"Log_paths_used_during_the_moduleResolution_process_6706\",\"Log paths used during the 'moduleResolution' process.\"),Specify_the_path_to_tsbuildinfo_incremental_compilation_file:b(6707,3,\"Specify_the_path_to_tsbuildinfo_incremental_compilation_file_6707\",\"Specify the path to .tsbuildinfo incremental compilation file.\"),Specify_options_for_automatic_acquisition_of_declaration_files:b(6709,3,\"Specify_options_for_automatic_acquisition_of_declaration_files_6709\",\"Specify options for automatic acquisition of declaration files.\"),Specify_multiple_folders_that_act_like_Slashnode_modules_Slash_types:b(6710,3,\"Specify_multiple_folders_that_act_like_Slashnode_modules_Slash_types_6710\",\"Specify multiple folders that act like './node_modules/@types'.\"),Specify_type_package_names_to_be_included_without_being_referenced_in_a_source_file:b(6711,3,\"Specify_type_package_names_to_be_included_without_being_referenced_in_a_source_file_6711\",\"Specify type package names to be included without being referenced in a source file.\"),Emit_ECMAScript_standard_compliant_class_fields:b(6712,3,\"Emit_ECMAScript_standard_compliant_class_fields_6712\",\"Emit ECMAScript-standard-compliant class fields.\"),Enable_verbose_logging:b(6713,3,\"Enable_verbose_logging_6713\",\"Enable verbose logging.\"),Specify_how_directories_are_watched_on_systems_that_lack_recursive_file_watching_functionality:b(6714,3,\"Specify_how_directories_are_watched_on_systems_that_lack_recursive_file_watching_functionality_6714\",\"Specify how directories are watched on systems that lack recursive file-watching functionality.\"),Specify_how_the_TypeScript_watch_mode_works:b(6715,3,\"Specify_how_the_TypeScript_watch_mode_works_6715\",\"Specify how the TypeScript watch mode works.\"),Require_undeclared_properties_from_index_signatures_to_use_element_accesses:b(6717,3,\"Require_undeclared_properties_from_index_signatures_to_use_element_accesses_6717\",\"Require undeclared properties from index signatures to use element accesses.\"),Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types:b(6718,3,\"Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types_6718\",\"Specify emit/checking behavior for imports that are only used for types.\"),Default_catch_clause_variables_as_unknown_instead_of_any:b(6803,3,\"Default_catch_clause_variables_as_unknown_instead_of_any_6803\",\"Default catch clause variables as 'unknown' instead of 'any'.\"),Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_in_the_output_file_s_format_based_on_the_module_setting:b(6804,3,\"Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_i_6804\",\"Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting.\"),one_of_Colon:b(6900,3,\"one_of_Colon_6900\",\"one of:\"),one_or_more_Colon:b(6901,3,\"one_or_more_Colon_6901\",\"one or more:\"),type_Colon:b(6902,3,\"type_Colon_6902\",\"type:\"),default_Colon:b(6903,3,\"default_Colon_6903\",\"default:\"),module_system_or_esModuleInterop:b(6904,3,\"module_system_or_esModuleInterop_6904\",'module === \"system\" or esModuleInterop'),false_unless_strict_is_set:b(6905,3,\"false_unless_strict_is_set_6905\",\"`false`, unless `strict` is set\"),false_unless_composite_is_set:b(6906,3,\"false_unless_composite_is_set_6906\",\"`false`, unless `composite` is set\"),node_modules_bower_components_jspm_packages_plus_the_value_of_outDir_if_one_is_specified:b(6907,3,\"node_modules_bower_components_jspm_packages_plus_the_value_of_outDir_if_one_is_specified_6907\",'`[\"node_modules\", \"bower_components\", \"jspm_packages\"]`, plus the value of `outDir` if one is specified.'),if_files_is_specified_otherwise_Asterisk_Asterisk_Slash_Asterisk:b(6908,3,\"if_files_is_specified_otherwise_Asterisk_Asterisk_Slash_Asterisk_6908\",'`[]` if `files` is specified, otherwise `[\"**/*\"]`'),true_if_composite_false_otherwise:b(6909,3,\"true_if_composite_false_otherwise_6909\",\"`true` if `composite`, `false` otherwise\"),module_AMD_or_UMD_or_System_or_ES6_then_Classic_Otherwise_Node:b(69010,3,\"module_AMD_or_UMD_or_System_or_ES6_then_Classic_Otherwise_Node_69010\",\"module === `AMD` or `UMD` or `System` or `ES6`, then `Classic`, Otherwise `Node`\"),Computed_from_the_list_of_input_files:b(6911,3,\"Computed_from_the_list_of_input_files_6911\",\"Computed from the list of input files\"),Platform_specific:b(6912,3,\"Platform_specific_6912\",\"Platform specific\"),You_can_learn_about_all_of_the_compiler_options_at_0:b(6913,3,\"You_can_learn_about_all_of_the_compiler_options_at_0_6913\",\"You can learn about all of the compiler options at {0}\"),Including_watch_w_will_start_watching_the_current_project_for_the_file_changes_Once_set_you_can_config_watch_mode_with_Colon:b(6914,3,\"Including_watch_w_will_start_watching_the_current_project_for_the_file_changes_Once_set_you_can_conf_6914\",\"Including --watch, -w will start watching the current project for the file changes. Once set, you can config watch mode with:\"),Using_build_b_will_make_tsc_behave_more_like_a_build_orchestrator_than_a_compiler_This_is_used_to_trigger_building_composite_projects_which_you_can_learn_more_about_at_0:b(6915,3,\"Using_build_b_will_make_tsc_behave_more_like_a_build_orchestrator_than_a_compiler_This_is_used_to_tr_6915\",\"Using --build, -b will make tsc behave more like a build orchestrator than a compiler. This is used to trigger building composite projects which you can learn more about at {0}\"),COMMON_COMMANDS:b(6916,3,\"COMMON_COMMANDS_6916\",\"COMMON COMMANDS\"),ALL_COMPILER_OPTIONS:b(6917,3,\"ALL_COMPILER_OPTIONS_6917\",\"ALL COMPILER OPTIONS\"),WATCH_OPTIONS:b(6918,3,\"WATCH_OPTIONS_6918\",\"WATCH OPTIONS\"),BUILD_OPTIONS:b(6919,3,\"BUILD_OPTIONS_6919\",\"BUILD OPTIONS\"),COMMON_COMPILER_OPTIONS:b(6920,3,\"COMMON_COMPILER_OPTIONS_6920\",\"COMMON COMPILER OPTIONS\"),COMMAND_LINE_FLAGS:b(6921,3,\"COMMAND_LINE_FLAGS_6921\",\"COMMAND LINE FLAGS\"),tsc_Colon_The_TypeScript_Compiler:b(6922,3,\"tsc_Colon_The_TypeScript_Compiler_6922\",\"tsc: The TypeScript Compiler\"),Compiles_the_current_project_tsconfig_json_in_the_working_directory:b(6923,3,\"Compiles_the_current_project_tsconfig_json_in_the_working_directory_6923\",\"Compiles the current project (tsconfig.json in the working directory.)\"),Ignoring_tsconfig_json_compiles_the_specified_files_with_default_compiler_options:b(6924,3,\"Ignoring_tsconfig_json_compiles_the_specified_files_with_default_compiler_options_6924\",\"Ignoring tsconfig.json, compiles the specified files with default compiler options.\"),Build_a_composite_project_in_the_working_directory:b(6925,3,\"Build_a_composite_project_in_the_working_directory_6925\",\"Build a composite project in the working directory.\"),Creates_a_tsconfig_json_with_the_recommended_settings_in_the_working_directory:b(6926,3,\"Creates_a_tsconfig_json_with_the_recommended_settings_in_the_working_directory_6926\",\"Creates a tsconfig.json with the recommended settings in the working directory.\"),Compiles_the_TypeScript_project_located_at_the_specified_path:b(6927,3,\"Compiles_the_TypeScript_project_located_at_the_specified_path_6927\",\"Compiles the TypeScript project located at the specified path.\"),An_expanded_version_of_this_information_showing_all_possible_compiler_options:b(6928,3,\"An_expanded_version_of_this_information_showing_all_possible_compiler_options_6928\",\"An expanded version of this information, showing all possible compiler options\"),Compiles_the_current_project_with_additional_settings:b(6929,3,\"Compiles_the_current_project_with_additional_settings_6929\",\"Compiles the current project, with additional settings.\"),true_for_ES2022_and_above_including_ESNext:b(6930,3,\"true_for_ES2022_and_above_including_ESNext_6930\",\"`true` for ES2022 and above, including ESNext.\"),List_of_file_name_suffixes_to_search_when_resolving_a_module:b(6931,1,\"List_of_file_name_suffixes_to_search_when_resolving_a_module_6931\",\"List of file name suffixes to search when resolving a module.\"),Variable_0_implicitly_has_an_1_type:b(7005,1,\"Variable_0_implicitly_has_an_1_type_7005\",\"Variable '{0}' implicitly has an '{1}' type.\"),Parameter_0_implicitly_has_an_1_type:b(7006,1,\"Parameter_0_implicitly_has_an_1_type_7006\",\"Parameter '{0}' implicitly has an '{1}' type.\"),Member_0_implicitly_has_an_1_type:b(7008,1,\"Member_0_implicitly_has_an_1_type_7008\",\"Member '{0}' implicitly has an '{1}' type.\"),new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type:b(7009,1,\"new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type_7009\",\"'new' expression, whose target lacks a construct signature, implicitly has an 'any' type.\"),_0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type:b(7010,1,\"_0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type_7010\",\"'{0}', which lacks return-type annotation, implicitly has an '{1}' return type.\"),Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type:b(7011,1,\"Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type_7011\",\"Function expression, which lacks return-type annotation, implicitly has an '{0}' return type.\"),This_overload_implicitly_returns_the_type_0_because_it_lacks_a_return_type_annotation:b(7012,1,\"This_overload_implicitly_returns_the_type_0_because_it_lacks_a_return_type_annotation_7012\",\"This overload implicitly returns the type '{0}' because it lacks a return type annotation.\"),Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type:b(7013,1,\"Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type_7013\",\"Construct signature, which lacks return-type annotation, implicitly has an 'any' return type.\"),Function_type_which_lacks_return_type_annotation_implicitly_has_an_0_return_type:b(7014,1,\"Function_type_which_lacks_return_type_annotation_implicitly_has_an_0_return_type_7014\",\"Function type, which lacks return-type annotation, implicitly has an '{0}' return type.\"),Element_implicitly_has_an_any_type_because_index_expression_is_not_of_type_number:b(7015,1,\"Element_implicitly_has_an_any_type_because_index_expression_is_not_of_type_number_7015\",\"Element implicitly has an 'any' type because index expression is not of type 'number'.\"),Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type:b(7016,1,\"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016\",\"Could not find a declaration file for module '{0}'. '{1}' implicitly has an 'any' type.\"),Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature:b(7017,1,\"Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_7017\",\"Element implicitly has an 'any' type because type '{0}' has no index signature.\"),Object_literal_s_property_0_implicitly_has_an_1_type:b(7018,1,\"Object_literal_s_property_0_implicitly_has_an_1_type_7018\",\"Object literal's property '{0}' implicitly has an '{1}' type.\"),Rest_parameter_0_implicitly_has_an_any_type:b(7019,1,\"Rest_parameter_0_implicitly_has_an_any_type_7019\",\"Rest parameter '{0}' implicitly has an 'any[]' type.\"),Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type:b(7020,1,\"Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type_7020\",\"Call signature, which lacks return-type annotation, implicitly has an 'any' return type.\"),_0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer:b(7022,1,\"_0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or__7022\",\"'{0}' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.\"),_0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions:b(7023,1,\"_0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_reference_7023\",\"'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.\"),Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions:b(7024,1,\"Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_ref_7024\",\"Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.\"),Generator_implicitly_has_yield_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_return_type_annotation:b(7025,1,\"Generator_implicitly_has_yield_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_retu_7025\",\"Generator implicitly has yield type '{0}' because it does not yield any values. Consider supplying a return type annotation.\"),JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists:b(7026,1,\"JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026\",\"JSX element implicitly has type 'any' because no interface 'JSX.{0}' exists.\"),Unreachable_code_detected:b(7027,1,\"Unreachable_code_detected_7027\",\"Unreachable code detected.\",!0),Unused_label:b(7028,1,\"Unused_label_7028\",\"Unused label.\",!0),Fallthrough_case_in_switch:b(7029,1,\"Fallthrough_case_in_switch_7029\",\"Fallthrough case in switch.\"),Not_all_code_paths_return_a_value:b(7030,1,\"Not_all_code_paths_return_a_value_7030\",\"Not all code paths return a value.\"),Binding_element_0_implicitly_has_an_1_type:b(7031,1,\"Binding_element_0_implicitly_has_an_1_type_7031\",\"Binding element '{0}' implicitly has an '{1}' type.\"),Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation:b(7032,1,\"Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation_7032\",\"Property '{0}' implicitly has type 'any', because its set accessor lacks a parameter type annotation.\"),Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation:b(7033,1,\"Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation_7033\",\"Property '{0}' implicitly has type 'any', because its get accessor lacks a return type annotation.\"),Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined:b(7034,1,\"Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined_7034\",\"Variable '{0}' implicitly has type '{1}' in some locations where its type cannot be determined.\"),Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0:b(7035,1,\"Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare__7035\",\"Try `npm i --save-dev @types/{1}` if it exists or add a new declaration (.d.ts) file containing `declare module '{0}';`\"),Dynamic_import_s_specifier_must_be_of_type_string_but_here_has_type_0:b(7036,1,\"Dynamic_import_s_specifier_must_be_of_type_string_but_here_has_type_0_7036\",\"Dynamic import's specifier must be of type 'string', but here has type '{0}'.\"),Enables_emit_interoperability_between_CommonJS_and_ES_Modules_via_creation_of_namespace_objects_for_all_imports_Implies_allowSyntheticDefaultImports:b(7037,3,\"Enables_emit_interoperability_between_CommonJS_and_ES_Modules_via_creation_of_namespace_objects_for__7037\",\"Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'.\"),Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cause_a_failure_at_runtime_Consider_using_a_default_import_or_import_require_here_instead:b(7038,3,\"Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cau_7038\",\"Type originates at this import. A namespace-style import cannot be called or constructed, and will cause a failure at runtime. Consider using a default import or import require here instead.\"),Mapped_object_type_implicitly_has_an_any_template_type:b(7039,1,\"Mapped_object_type_implicitly_has_an_any_template_type_7039\",\"Mapped object type implicitly has an 'any' template type.\"),If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1:b(7040,1,\"If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_S_7040\",\"If the '{0}' package actually exposes this module, consider sending a pull request to amend 'https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/{1}'\"),The_containing_arrow_function_captures_the_global_value_of_this:b(7041,1,\"The_containing_arrow_function_captures_the_global_value_of_this_7041\",\"The containing arrow function captures the global value of 'this'.\"),Module_0_was_resolved_to_1_but_resolveJsonModule_is_not_used:b(7042,1,\"Module_0_was_resolved_to_1_but_resolveJsonModule_is_not_used_7042\",\"Module '{0}' was resolved to '{1}', but '--resolveJsonModule' is not used.\"),Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage:b(7043,2,\"Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage_7043\",\"Variable '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.\"),Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage:b(7044,2,\"Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage_7044\",\"Parameter '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.\"),Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage:b(7045,2,\"Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage_7045\",\"Member '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.\"),Variable_0_implicitly_has_type_1_in_some_locations_but_a_better_type_may_be_inferred_from_usage:b(7046,2,\"Variable_0_implicitly_has_type_1_in_some_locations_but_a_better_type_may_be_inferred_from_usage_7046\",\"Variable '{0}' implicitly has type '{1}' in some locations, but a better type may be inferred from usage.\"),Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage:b(7047,2,\"Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage_7047\",\"Rest parameter '{0}' implicitly has an 'any[]' type, but a better type may be inferred from usage.\"),Property_0_implicitly_has_type_any_but_a_better_type_for_its_get_accessor_may_be_inferred_from_usage:b(7048,2,\"Property_0_implicitly_has_type_any_but_a_better_type_for_its_get_accessor_may_be_inferred_from_usage_7048\",\"Property '{0}' implicitly has type 'any', but a better type for its get accessor may be inferred from usage.\"),Property_0_implicitly_has_type_any_but_a_better_type_for_its_set_accessor_may_be_inferred_from_usage:b(7049,2,\"Property_0_implicitly_has_type_any_but_a_better_type_for_its_set_accessor_may_be_inferred_from_usage_7049\",\"Property '{0}' implicitly has type 'any', but a better type for its set accessor may be inferred from usage.\"),_0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage:b(7050,2,\"_0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage_7050\",\"'{0}' implicitly has an '{1}' return type, but a better type may be inferred from usage.\"),Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1:b(7051,1,\"Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1_7051\",\"Parameter has a name but no type. Did you mean '{0}: {1}'?\"),Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_Did_you_mean_to_call_1:b(7052,1,\"Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_Did_you_mean_to_call_1_7052\",\"Element implicitly has an 'any' type because type '{0}' has no index signature. Did you mean to call '{1}'?\"),Element_implicitly_has_an_any_type_because_expression_of_type_0_can_t_be_used_to_index_type_1:b(7053,1,\"Element_implicitly_has_an_any_type_because_expression_of_type_0_can_t_be_used_to_index_type_1_7053\",\"Element implicitly has an 'any' type because expression of type '{0}' can't be used to index type '{1}'.\"),No_index_signature_with_a_parameter_of_type_0_was_found_on_type_1:b(7054,1,\"No_index_signature_with_a_parameter_of_type_0_was_found_on_type_1_7054\",\"No index signature with a parameter of type '{0}' was found on type '{1}'.\"),_0_which_lacks_return_type_annotation_implicitly_has_an_1_yield_type:b(7055,1,\"_0_which_lacks_return_type_annotation_implicitly_has_an_1_yield_type_7055\",\"'{0}', which lacks return-type annotation, implicitly has an '{1}' yield type.\"),The_inferred_type_of_this_node_exceeds_the_maximum_length_the_compiler_will_serialize_An_explicit_type_annotation_is_needed:b(7056,1,\"The_inferred_type_of_this_node_exceeds_the_maximum_length_the_compiler_will_serialize_An_explicit_ty_7056\",\"The inferred type of this node exceeds the maximum length the compiler will serialize. An explicit type annotation is needed.\"),yield_expression_implicitly_results_in_an_any_type_because_its_containing_generator_lacks_a_return_type_annotation:b(7057,1,\"yield_expression_implicitly_results_in_an_any_type_because_its_containing_generator_lacks_a_return_t_7057\",\"'yield' expression implicitly results in an 'any' type because its containing generator lacks a return-type annotation.\"),If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1:b(7058,1,\"If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_decl_7058\",\"If the '{0}' package actually exposes this module, try adding a new declaration (.d.ts) file containing `declare module '{1}';`\"),This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Use_an_as_expression_instead:b(7059,1,\"This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Use_an_as_expression_instead_7059\",\"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.\"),This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Add_a_trailing_comma_or_explicit_constraint:b(7060,1,\"This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Add_a_trailing_comma_or_explicit_cons_7060\",\"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma or explicit constraint.\"),A_mapped_type_may_not_declare_properties_or_methods:b(7061,1,\"A_mapped_type_may_not_declare_properties_or_methods_7061\",\"A mapped type may not declare properties or methods.\"),You_cannot_rename_this_element:b(8e3,1,\"You_cannot_rename_this_element_8000\",\"You cannot rename this element.\"),You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library:b(8001,1,\"You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library_8001\",\"You cannot rename elements that are defined in the standard TypeScript library.\"),import_can_only_be_used_in_TypeScript_files:b(8002,1,\"import_can_only_be_used_in_TypeScript_files_8002\",\"'import ... =' can only be used in TypeScript files.\"),export_can_only_be_used_in_TypeScript_files:b(8003,1,\"export_can_only_be_used_in_TypeScript_files_8003\",\"'export =' can only be used in TypeScript files.\"),Type_parameter_declarations_can_only_be_used_in_TypeScript_files:b(8004,1,\"Type_parameter_declarations_can_only_be_used_in_TypeScript_files_8004\",\"Type parameter declarations can only be used in TypeScript files.\"),implements_clauses_can_only_be_used_in_TypeScript_files:b(8005,1,\"implements_clauses_can_only_be_used_in_TypeScript_files_8005\",\"'implements' clauses can only be used in TypeScript files.\"),_0_declarations_can_only_be_used_in_TypeScript_files:b(8006,1,\"_0_declarations_can_only_be_used_in_TypeScript_files_8006\",\"'{0}' declarations can only be used in TypeScript files.\"),Type_aliases_can_only_be_used_in_TypeScript_files:b(8008,1,\"Type_aliases_can_only_be_used_in_TypeScript_files_8008\",\"Type aliases can only be used in TypeScript files.\"),The_0_modifier_can_only_be_used_in_TypeScript_files:b(8009,1,\"The_0_modifier_can_only_be_used_in_TypeScript_files_8009\",\"The '{0}' modifier can only be used in TypeScript files.\"),Type_annotations_can_only_be_used_in_TypeScript_files:b(8010,1,\"Type_annotations_can_only_be_used_in_TypeScript_files_8010\",\"Type annotations can only be used in TypeScript files.\"),Type_arguments_can_only_be_used_in_TypeScript_files:b(8011,1,\"Type_arguments_can_only_be_used_in_TypeScript_files_8011\",\"Type arguments can only be used in TypeScript files.\"),Parameter_modifiers_can_only_be_used_in_TypeScript_files:b(8012,1,\"Parameter_modifiers_can_only_be_used_in_TypeScript_files_8012\",\"Parameter modifiers can only be used in TypeScript files.\"),Non_null_assertions_can_only_be_used_in_TypeScript_files:b(8013,1,\"Non_null_assertions_can_only_be_used_in_TypeScript_files_8013\",\"Non-null assertions can only be used in TypeScript files.\"),Type_assertion_expressions_can_only_be_used_in_TypeScript_files:b(8016,1,\"Type_assertion_expressions_can_only_be_used_in_TypeScript_files_8016\",\"Type assertion expressions can only be used in TypeScript files.\"),Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0:b(8017,1,\"Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0_8017\",\"Octal literal types must use ES2015 syntax. Use the syntax '{0}'.\"),Octal_literals_are_not_allowed_in_enums_members_initializer_Use_the_syntax_0:b(8018,1,\"Octal_literals_are_not_allowed_in_enums_members_initializer_Use_the_syntax_0_8018\",\"Octal literals are not allowed in enums members initializer. Use the syntax '{0}'.\"),Report_errors_in_js_files:b(8019,3,\"Report_errors_in_js_files_8019\",\"Report errors in .js files.\"),JSDoc_types_can_only_be_used_inside_documentation_comments:b(8020,1,\"JSDoc_types_can_only_be_used_inside_documentation_comments_8020\",\"JSDoc types can only be used inside documentation comments.\"),JSDoc_typedef_tag_should_either_have_a_type_annotation_or_be_followed_by_property_or_member_tags:b(8021,1,\"JSDoc_typedef_tag_should_either_have_a_type_annotation_or_be_followed_by_property_or_member_tags_8021\",\"JSDoc '@typedef' tag should either have a type annotation or be followed by '@property' or '@member' tags.\"),JSDoc_0_is_not_attached_to_a_class:b(8022,1,\"JSDoc_0_is_not_attached_to_a_class_8022\",\"JSDoc '@{0}' is not attached to a class.\"),JSDoc_0_1_does_not_match_the_extends_2_clause:b(8023,1,\"JSDoc_0_1_does_not_match_the_extends_2_clause_8023\",\"JSDoc '@{0} {1}' does not match the 'extends {2}' clause.\"),JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name:b(8024,1,\"JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_8024\",\"JSDoc '@param' tag has name '{0}', but there is no parameter with that name.\"),Class_declarations_cannot_have_more_than_one_augments_or_extends_tag:b(8025,1,\"Class_declarations_cannot_have_more_than_one_augments_or_extends_tag_8025\",\"Class declarations cannot have more than one '@augments' or '@extends' tag.\"),Expected_0_type_arguments_provide_these_with_an_extends_tag:b(8026,1,\"Expected_0_type_arguments_provide_these_with_an_extends_tag_8026\",\"Expected {0} type arguments; provide these with an '@extends' tag.\"),Expected_0_1_type_arguments_provide_these_with_an_extends_tag:b(8027,1,\"Expected_0_1_type_arguments_provide_these_with_an_extends_tag_8027\",\"Expected {0}-{1} type arguments; provide these with an '@extends' tag.\"),JSDoc_may_only_appear_in_the_last_parameter_of_a_signature:b(8028,1,\"JSDoc_may_only_appear_in_the_last_parameter_of_a_signature_8028\",\"JSDoc '...' may only appear in the last parameter of a signature.\"),JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_It_would_match_arguments_if_it_had_an_array_type:b(8029,1,\"JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_It_would_match_arguments_if_it_h_8029\",\"JSDoc '@param' tag has name '{0}', but there is no parameter with that name. It would match 'arguments' if it had an array type.\"),The_type_of_a_function_declaration_must_match_the_function_s_signature:b(8030,1,\"The_type_of_a_function_declaration_must_match_the_function_s_signature_8030\",\"The type of a function declaration must match the function's signature.\"),You_cannot_rename_a_module_via_a_global_import:b(8031,1,\"You_cannot_rename_a_module_via_a_global_import_8031\",\"You cannot rename a module via a global import.\"),Qualified_name_0_is_not_allowed_without_a_leading_param_object_1:b(8032,1,\"Qualified_name_0_is_not_allowed_without_a_leading_param_object_1_8032\",\"Qualified name '{0}' is not allowed without a leading '@param {object} {1}'.\"),A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags:b(8033,1,\"A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags_8033\",\"A JSDoc '@typedef' comment may not contain multiple '@type' tags.\"),The_tag_was_first_specified_here:b(8034,1,\"The_tag_was_first_specified_here_8034\",\"The tag was first specified here.\"),You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder:b(8035,1,\"You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder_8035\",\"You cannot rename elements that are defined in a 'node_modules' folder.\"),You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder:b(8036,1,\"You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder_8036\",\"You cannot rename elements that are defined in another 'node_modules' folder.\"),Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files:b(8037,1,\"Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files_8037\",\"Type satisfaction expressions can only be used in TypeScript files.\"),Decorators_may_not_appear_after_export_or_export_default_if_they_also_appear_before_export:b(8038,1,\"Decorators_may_not_appear_after_export_or_export_default_if_they_also_appear_before_export_8038\",\"Decorators may not appear after 'export' or 'export default' if they also appear before 'export'.\"),Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_declaration_emit:b(9005,1,\"Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_9005\",\"Declaration emit for this file requires using private name '{0}'. An explicit type annotation may unblock declaration emit.\"),Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit:b(9006,1,\"Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotati_9006\",\"Declaration emit for this file requires using private name '{0}' from module '{1}'. An explicit type annotation may unblock declaration emit.\"),JSX_attributes_must_only_be_assigned_a_non_empty_expression:b(17e3,1,\"JSX_attributes_must_only_be_assigned_a_non_empty_expression_17000\",\"JSX attributes must only be assigned a non-empty 'expression'.\"),JSX_elements_cannot_have_multiple_attributes_with_the_same_name:b(17001,1,\"JSX_elements_cannot_have_multiple_attributes_with_the_same_name_17001\",\"JSX elements cannot have multiple attributes with the same name.\"),Expected_corresponding_JSX_closing_tag_for_0:b(17002,1,\"Expected_corresponding_JSX_closing_tag_for_0_17002\",\"Expected corresponding JSX closing tag for '{0}'.\"),Cannot_use_JSX_unless_the_jsx_flag_is_provided:b(17004,1,\"Cannot_use_JSX_unless_the_jsx_flag_is_provided_17004\",\"Cannot use JSX unless the '--jsx' flag is provided.\"),A_constructor_cannot_contain_a_super_call_when_its_class_extends_null:b(17005,1,\"A_constructor_cannot_contain_a_super_call_when_its_class_extends_null_17005\",\"A constructor cannot contain a 'super' call when its class extends 'null'.\"),An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses:b(17006,1,\"An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_ex_17006\",\"An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses.\"),A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses:b(17007,1,\"A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007\",\"A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses.\"),JSX_element_0_has_no_corresponding_closing_tag:b(17008,1,\"JSX_element_0_has_no_corresponding_closing_tag_17008\",\"JSX element '{0}' has no corresponding closing tag.\"),super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class:b(17009,1,\"super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class_17009\",\"'super' must be called before accessing 'this' in the constructor of a derived class.\"),Unknown_type_acquisition_option_0:b(17010,1,\"Unknown_type_acquisition_option_0_17010\",\"Unknown type acquisition option '{0}'.\"),super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class:b(17011,1,\"super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class_17011\",\"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\"),_0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2:b(17012,1,\"_0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2_17012\",\"'{0}' is not a valid meta-property for keyword '{1}'. Did you mean '{2}'?\"),Meta_property_0_is_only_allowed_in_the_body_of_a_function_declaration_function_expression_or_constructor:b(17013,1,\"Meta_property_0_is_only_allowed_in_the_body_of_a_function_declaration_function_expression_or_constru_17013\",\"Meta-property '{0}' is only allowed in the body of a function declaration, function expression, or constructor.\"),JSX_fragment_has_no_corresponding_closing_tag:b(17014,1,\"JSX_fragment_has_no_corresponding_closing_tag_17014\",\"JSX fragment has no corresponding closing tag.\"),Expected_corresponding_closing_tag_for_JSX_fragment:b(17015,1,\"Expected_corresponding_closing_tag_for_JSX_fragment_17015\",\"Expected corresponding closing tag for JSX fragment.\"),The_jsxFragmentFactory_compiler_option_must_be_provided_to_use_JSX_fragments_with_the_jsxFactory_compiler_option:b(17016,1,\"The_jsxFragmentFactory_compiler_option_must_be_provided_to_use_JSX_fragments_with_the_jsxFactory_com_17016\",\"The 'jsxFragmentFactory' compiler option must be provided to use JSX fragments with the 'jsxFactory' compiler option.\"),An_jsxFrag_pragma_is_required_when_using_an_jsx_pragma_with_JSX_fragments:b(17017,1,\"An_jsxFrag_pragma_is_required_when_using_an_jsx_pragma_with_JSX_fragments_17017\",\"An @jsxFrag pragma is required when using an @jsx pragma with JSX fragments.\"),Unknown_type_acquisition_option_0_Did_you_mean_1:b(17018,1,\"Unknown_type_acquisition_option_0_Did_you_mean_1_17018\",\"Unknown type acquisition option '{0}'. Did you mean '{1}'?\"),_0_at_the_end_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1:b(17019,1,\"_0_at_the_end_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1_17019\",\"'{0}' at the end of a type is not valid TypeScript syntax. Did you mean to write '{1}'?\"),_0_at_the_start_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1:b(17020,1,\"_0_at_the_start_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1_17020\",\"'{0}' at the start of a type is not valid TypeScript syntax. Did you mean to write '{1}'?\"),Circularity_detected_while_resolving_configuration_Colon_0:b(18e3,1,\"Circularity_detected_while_resolving_configuration_Colon_0_18000\",\"Circularity detected while resolving configuration: {0}\"),The_files_list_in_config_file_0_is_empty:b(18002,1,\"The_files_list_in_config_file_0_is_empty_18002\",\"The 'files' list in config file '{0}' is empty.\"),No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2:b(18003,1,\"No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2_18003\",\"No inputs were found in config file '{0}'. Specified 'include' paths were '{1}' and 'exclude' paths were '{2}'.\"),File_is_a_CommonJS_module_it_may_be_converted_to_an_ES_module:b(80001,2,\"File_is_a_CommonJS_module_it_may_be_converted_to_an_ES_module_80001\",\"File is a CommonJS module; it may be converted to an ES module.\"),This_constructor_function_may_be_converted_to_a_class_declaration:b(80002,2,\"This_constructor_function_may_be_converted_to_a_class_declaration_80002\",\"This constructor function may be converted to a class declaration.\"),Import_may_be_converted_to_a_default_import:b(80003,2,\"Import_may_be_converted_to_a_default_import_80003\",\"Import may be converted to a default import.\"),JSDoc_types_may_be_moved_to_TypeScript_types:b(80004,2,\"JSDoc_types_may_be_moved_to_TypeScript_types_80004\",\"JSDoc types may be moved to TypeScript types.\"),require_call_may_be_converted_to_an_import:b(80005,2,\"require_call_may_be_converted_to_an_import_80005\",\"'require' call may be converted to an import.\"),This_may_be_converted_to_an_async_function:b(80006,2,\"This_may_be_converted_to_an_async_function_80006\",\"This may be converted to an async function.\"),await_has_no_effect_on_the_type_of_this_expression:b(80007,2,\"await_has_no_effect_on_the_type_of_this_expression_80007\",\"'await' has no effect on the type of this expression.\"),Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers:b(80008,2,\"Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accur_80008\",\"Numeric literals with absolute values equal to 2^53 or greater are too large to be represented accurately as integers.\"),Add_missing_super_call:b(90001,3,\"Add_missing_super_call_90001\",\"Add missing 'super()' call\"),Make_super_call_the_first_statement_in_the_constructor:b(90002,3,\"Make_super_call_the_first_statement_in_the_constructor_90002\",\"Make 'super()' call the first statement in the constructor\"),Change_extends_to_implements:b(90003,3,\"Change_extends_to_implements_90003\",\"Change 'extends' to 'implements'\"),Remove_unused_declaration_for_Colon_0:b(90004,3,\"Remove_unused_declaration_for_Colon_0_90004\",\"Remove unused declaration for: '{0}'\"),Remove_import_from_0:b(90005,3,\"Remove_import_from_0_90005\",\"Remove import from '{0}'\"),Implement_interface_0:b(90006,3,\"Implement_interface_0_90006\",\"Implement interface '{0}'\"),Implement_inherited_abstract_class:b(90007,3,\"Implement_inherited_abstract_class_90007\",\"Implement inherited abstract class\"),Add_0_to_unresolved_variable:b(90008,3,\"Add_0_to_unresolved_variable_90008\",\"Add '{0}.' to unresolved variable\"),Remove_variable_statement:b(90010,3,\"Remove_variable_statement_90010\",\"Remove variable statement\"),Remove_template_tag:b(90011,3,\"Remove_template_tag_90011\",\"Remove template tag\"),Remove_type_parameters:b(90012,3,\"Remove_type_parameters_90012\",\"Remove type parameters\"),Import_0_from_1:b(90013,3,\"Import_0_from_1_90013\",`Import '{0}' from \"{1}\"`),Change_0_to_1:b(90014,3,\"Change_0_to_1_90014\",\"Change '{0}' to '{1}'\"),Declare_property_0:b(90016,3,\"Declare_property_0_90016\",\"Declare property '{0}'\"),Add_index_signature_for_property_0:b(90017,3,\"Add_index_signature_for_property_0_90017\",\"Add index signature for property '{0}'\"),Disable_checking_for_this_file:b(90018,3,\"Disable_checking_for_this_file_90018\",\"Disable checking for this file\"),Ignore_this_error_message:b(90019,3,\"Ignore_this_error_message_90019\",\"Ignore this error message\"),Initialize_property_0_in_the_constructor:b(90020,3,\"Initialize_property_0_in_the_constructor_90020\",\"Initialize property '{0}' in the constructor\"),Initialize_static_property_0:b(90021,3,\"Initialize_static_property_0_90021\",\"Initialize static property '{0}'\"),Change_spelling_to_0:b(90022,3,\"Change_spelling_to_0_90022\",\"Change spelling to '{0}'\"),Declare_method_0:b(90023,3,\"Declare_method_0_90023\",\"Declare method '{0}'\"),Declare_static_method_0:b(90024,3,\"Declare_static_method_0_90024\",\"Declare static method '{0}'\"),Prefix_0_with_an_underscore:b(90025,3,\"Prefix_0_with_an_underscore_90025\",\"Prefix '{0}' with an underscore\"),Rewrite_as_the_indexed_access_type_0:b(90026,3,\"Rewrite_as_the_indexed_access_type_0_90026\",\"Rewrite as the indexed access type '{0}'\"),Declare_static_property_0:b(90027,3,\"Declare_static_property_0_90027\",\"Declare static property '{0}'\"),Call_decorator_expression:b(90028,3,\"Call_decorator_expression_90028\",\"Call decorator expression\"),Add_async_modifier_to_containing_function:b(90029,3,\"Add_async_modifier_to_containing_function_90029\",\"Add async modifier to containing function\"),Replace_infer_0_with_unknown:b(90030,3,\"Replace_infer_0_with_unknown_90030\",\"Replace 'infer {0}' with 'unknown'\"),Replace_all_unused_infer_with_unknown:b(90031,3,\"Replace_all_unused_infer_with_unknown_90031\",\"Replace all unused 'infer' with 'unknown'\"),Add_parameter_name:b(90034,3,\"Add_parameter_name_90034\",\"Add parameter name\"),Declare_private_property_0:b(90035,3,\"Declare_private_property_0_90035\",\"Declare private property '{0}'\"),Replace_0_with_Promise_1:b(90036,3,\"Replace_0_with_Promise_1_90036\",\"Replace '{0}' with 'Promise<{1}>'\"),Fix_all_incorrect_return_type_of_an_async_functions:b(90037,3,\"Fix_all_incorrect_return_type_of_an_async_functions_90037\",\"Fix all incorrect return type of an async functions\"),Declare_private_method_0:b(90038,3,\"Declare_private_method_0_90038\",\"Declare private method '{0}'\"),Remove_unused_destructuring_declaration:b(90039,3,\"Remove_unused_destructuring_declaration_90039\",\"Remove unused destructuring declaration\"),Remove_unused_declarations_for_Colon_0:b(90041,3,\"Remove_unused_declarations_for_Colon_0_90041\",\"Remove unused declarations for: '{0}'\"),Declare_a_private_field_named_0:b(90053,3,\"Declare_a_private_field_named_0_90053\",\"Declare a private field named '{0}'.\"),Includes_imports_of_types_referenced_by_0:b(90054,3,\"Includes_imports_of_types_referenced_by_0_90054\",\"Includes imports of types referenced by '{0}'\"),Remove_type_from_import_declaration_from_0:b(90055,3,\"Remove_type_from_import_declaration_from_0_90055\",`Remove 'type' from import declaration from \"{0}\"`),Remove_type_from_import_of_0_from_1:b(90056,3,\"Remove_type_from_import_of_0_from_1_90056\",`Remove 'type' from import of '{0}' from \"{1}\"`),Add_import_from_0:b(90057,3,\"Add_import_from_0_90057\",'Add import from \"{0}\"'),Update_import_from_0:b(90058,3,\"Update_import_from_0_90058\",'Update import from \"{0}\"'),Export_0_from_module_1:b(90059,3,\"Export_0_from_module_1_90059\",\"Export '{0}' from module '{1}'\"),Export_all_referenced_locals:b(90060,3,\"Export_all_referenced_locals_90060\",\"Export all referenced locals\"),Convert_function_to_an_ES2015_class:b(95001,3,\"Convert_function_to_an_ES2015_class_95001\",\"Convert function to an ES2015 class\"),Convert_0_to_1_in_0:b(95003,3,\"Convert_0_to_1_in_0_95003\",\"Convert '{0}' to '{1} in {0}'\"),Extract_to_0_in_1:b(95004,3,\"Extract_to_0_in_1_95004\",\"Extract to {0} in {1}\"),Extract_function:b(95005,3,\"Extract_function_95005\",\"Extract function\"),Extract_constant:b(95006,3,\"Extract_constant_95006\",\"Extract constant\"),Extract_to_0_in_enclosing_scope:b(95007,3,\"Extract_to_0_in_enclosing_scope_95007\",\"Extract to {0} in enclosing scope\"),Extract_to_0_in_1_scope:b(95008,3,\"Extract_to_0_in_1_scope_95008\",\"Extract to {0} in {1} scope\"),Annotate_with_type_from_JSDoc:b(95009,3,\"Annotate_with_type_from_JSDoc_95009\",\"Annotate with type from JSDoc\"),Infer_type_of_0_from_usage:b(95011,3,\"Infer_type_of_0_from_usage_95011\",\"Infer type of '{0}' from usage\"),Infer_parameter_types_from_usage:b(95012,3,\"Infer_parameter_types_from_usage_95012\",\"Infer parameter types from usage\"),Convert_to_default_import:b(95013,3,\"Convert_to_default_import_95013\",\"Convert to default import\"),Install_0:b(95014,3,\"Install_0_95014\",\"Install '{0}'\"),Replace_import_with_0:b(95015,3,\"Replace_import_with_0_95015\",\"Replace import with '{0}'.\"),Use_synthetic_default_member:b(95016,3,\"Use_synthetic_default_member_95016\",\"Use synthetic 'default' member.\"),Convert_to_ES_module:b(95017,3,\"Convert_to_ES_module_95017\",\"Convert to ES module\"),Add_undefined_type_to_property_0:b(95018,3,\"Add_undefined_type_to_property_0_95018\",\"Add 'undefined' type to property '{0}'\"),Add_initializer_to_property_0:b(95019,3,\"Add_initializer_to_property_0_95019\",\"Add initializer to property '{0}'\"),Add_definite_assignment_assertion_to_property_0:b(95020,3,\"Add_definite_assignment_assertion_to_property_0_95020\",\"Add definite assignment assertion to property '{0}'\"),Convert_all_type_literals_to_mapped_type:b(95021,3,\"Convert_all_type_literals_to_mapped_type_95021\",\"Convert all type literals to mapped type\"),Add_all_missing_members:b(95022,3,\"Add_all_missing_members_95022\",\"Add all missing members\"),Infer_all_types_from_usage:b(95023,3,\"Infer_all_types_from_usage_95023\",\"Infer all types from usage\"),Delete_all_unused_declarations:b(95024,3,\"Delete_all_unused_declarations_95024\",\"Delete all unused declarations\"),Prefix_all_unused_declarations_with_where_possible:b(95025,3,\"Prefix_all_unused_declarations_with_where_possible_95025\",\"Prefix all unused declarations with '_' where possible\"),Fix_all_detected_spelling_errors:b(95026,3,\"Fix_all_detected_spelling_errors_95026\",\"Fix all detected spelling errors\"),Add_initializers_to_all_uninitialized_properties:b(95027,3,\"Add_initializers_to_all_uninitialized_properties_95027\",\"Add initializers to all uninitialized properties\"),Add_definite_assignment_assertions_to_all_uninitialized_properties:b(95028,3,\"Add_definite_assignment_assertions_to_all_uninitialized_properties_95028\",\"Add definite assignment assertions to all uninitialized properties\"),Add_undefined_type_to_all_uninitialized_properties:b(95029,3,\"Add_undefined_type_to_all_uninitialized_properties_95029\",\"Add undefined type to all uninitialized properties\"),Change_all_jsdoc_style_types_to_TypeScript:b(95030,3,\"Change_all_jsdoc_style_types_to_TypeScript_95030\",\"Change all jsdoc-style types to TypeScript\"),Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types:b(95031,3,\"Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types_95031\",\"Change all jsdoc-style types to TypeScript (and add '| undefined' to nullable types)\"),Implement_all_unimplemented_interfaces:b(95032,3,\"Implement_all_unimplemented_interfaces_95032\",\"Implement all unimplemented interfaces\"),Install_all_missing_types_packages:b(95033,3,\"Install_all_missing_types_packages_95033\",\"Install all missing types packages\"),Rewrite_all_as_indexed_access_types:b(95034,3,\"Rewrite_all_as_indexed_access_types_95034\",\"Rewrite all as indexed access types\"),Convert_all_to_default_imports:b(95035,3,\"Convert_all_to_default_imports_95035\",\"Convert all to default imports\"),Make_all_super_calls_the_first_statement_in_their_constructor:b(95036,3,\"Make_all_super_calls_the_first_statement_in_their_constructor_95036\",\"Make all 'super()' calls the first statement in their constructor\"),Add_qualifier_to_all_unresolved_variables_matching_a_member_name:b(95037,3,\"Add_qualifier_to_all_unresolved_variables_matching_a_member_name_95037\",\"Add qualifier to all unresolved variables matching a member name\"),Change_all_extended_interfaces_to_implements:b(95038,3,\"Change_all_extended_interfaces_to_implements_95038\",\"Change all extended interfaces to 'implements'\"),Add_all_missing_super_calls:b(95039,3,\"Add_all_missing_super_calls_95039\",\"Add all missing super calls\"),Implement_all_inherited_abstract_classes:b(95040,3,\"Implement_all_inherited_abstract_classes_95040\",\"Implement all inherited abstract classes\"),Add_all_missing_async_modifiers:b(95041,3,\"Add_all_missing_async_modifiers_95041\",\"Add all missing 'async' modifiers\"),Add_ts_ignore_to_all_error_messages:b(95042,3,\"Add_ts_ignore_to_all_error_messages_95042\",\"Add '@ts-ignore' to all error messages\"),Annotate_everything_with_types_from_JSDoc:b(95043,3,\"Annotate_everything_with_types_from_JSDoc_95043\",\"Annotate everything with types from JSDoc\"),Add_to_all_uncalled_decorators:b(95044,3,\"Add_to_all_uncalled_decorators_95044\",\"Add '()' to all uncalled decorators\"),Convert_all_constructor_functions_to_classes:b(95045,3,\"Convert_all_constructor_functions_to_classes_95045\",\"Convert all constructor functions to classes\"),Generate_get_and_set_accessors:b(95046,3,\"Generate_get_and_set_accessors_95046\",\"Generate 'get' and 'set' accessors\"),Convert_require_to_import:b(95047,3,\"Convert_require_to_import_95047\",\"Convert 'require' to 'import'\"),Convert_all_require_to_import:b(95048,3,\"Convert_all_require_to_import_95048\",\"Convert all 'require' to 'import'\"),Move_to_a_new_file:b(95049,3,\"Move_to_a_new_file_95049\",\"Move to a new file\"),Remove_unreachable_code:b(95050,3,\"Remove_unreachable_code_95050\",\"Remove unreachable code\"),Remove_all_unreachable_code:b(95051,3,\"Remove_all_unreachable_code_95051\",\"Remove all unreachable code\"),Add_missing_typeof:b(95052,3,\"Add_missing_typeof_95052\",\"Add missing 'typeof'\"),Remove_unused_label:b(95053,3,\"Remove_unused_label_95053\",\"Remove unused label\"),Remove_all_unused_labels:b(95054,3,\"Remove_all_unused_labels_95054\",\"Remove all unused labels\"),Convert_0_to_mapped_object_type:b(95055,3,\"Convert_0_to_mapped_object_type_95055\",\"Convert '{0}' to mapped object type\"),Convert_namespace_import_to_named_imports:b(95056,3,\"Convert_namespace_import_to_named_imports_95056\",\"Convert namespace import to named imports\"),Convert_named_imports_to_namespace_import:b(95057,3,\"Convert_named_imports_to_namespace_import_95057\",\"Convert named imports to namespace import\"),Add_or_remove_braces_in_an_arrow_function:b(95058,3,\"Add_or_remove_braces_in_an_arrow_function_95058\",\"Add or remove braces in an arrow function\"),Add_braces_to_arrow_function:b(95059,3,\"Add_braces_to_arrow_function_95059\",\"Add braces to arrow function\"),Remove_braces_from_arrow_function:b(95060,3,\"Remove_braces_from_arrow_function_95060\",\"Remove braces from arrow function\"),Convert_default_export_to_named_export:b(95061,3,\"Convert_default_export_to_named_export_95061\",\"Convert default export to named export\"),Convert_named_export_to_default_export:b(95062,3,\"Convert_named_export_to_default_export_95062\",\"Convert named export to default export\"),Add_missing_enum_member_0:b(95063,3,\"Add_missing_enum_member_0_95063\",\"Add missing enum member '{0}'\"),Add_all_missing_imports:b(95064,3,\"Add_all_missing_imports_95064\",\"Add all missing imports\"),Convert_to_async_function:b(95065,3,\"Convert_to_async_function_95065\",\"Convert to async function\"),Convert_all_to_async_functions:b(95066,3,\"Convert_all_to_async_functions_95066\",\"Convert all to async functions\"),Add_missing_call_parentheses:b(95067,3,\"Add_missing_call_parentheses_95067\",\"Add missing call parentheses\"),Add_all_missing_call_parentheses:b(95068,3,\"Add_all_missing_call_parentheses_95068\",\"Add all missing call parentheses\"),Add_unknown_conversion_for_non_overlapping_types:b(95069,3,\"Add_unknown_conversion_for_non_overlapping_types_95069\",\"Add 'unknown' conversion for non-overlapping types\"),Add_unknown_to_all_conversions_of_non_overlapping_types:b(95070,3,\"Add_unknown_to_all_conversions_of_non_overlapping_types_95070\",\"Add 'unknown' to all conversions of non-overlapping types\"),Add_missing_new_operator_to_call:b(95071,3,\"Add_missing_new_operator_to_call_95071\",\"Add missing 'new' operator to call\"),Add_missing_new_operator_to_all_calls:b(95072,3,\"Add_missing_new_operator_to_all_calls_95072\",\"Add missing 'new' operator to all calls\"),Add_names_to_all_parameters_without_names:b(95073,3,\"Add_names_to_all_parameters_without_names_95073\",\"Add names to all parameters without names\"),Enable_the_experimentalDecorators_option_in_your_configuration_file:b(95074,3,\"Enable_the_experimentalDecorators_option_in_your_configuration_file_95074\",\"Enable the 'experimentalDecorators' option in your configuration file\"),Convert_parameters_to_destructured_object:b(95075,3,\"Convert_parameters_to_destructured_object_95075\",\"Convert parameters to destructured object\"),Extract_type:b(95077,3,\"Extract_type_95077\",\"Extract type\"),Extract_to_type_alias:b(95078,3,\"Extract_to_type_alias_95078\",\"Extract to type alias\"),Extract_to_typedef:b(95079,3,\"Extract_to_typedef_95079\",\"Extract to typedef\"),Infer_this_type_of_0_from_usage:b(95080,3,\"Infer_this_type_of_0_from_usage_95080\",\"Infer 'this' type of '{0}' from usage\"),Add_const_to_unresolved_variable:b(95081,3,\"Add_const_to_unresolved_variable_95081\",\"Add 'const' to unresolved variable\"),Add_const_to_all_unresolved_variables:b(95082,3,\"Add_const_to_all_unresolved_variables_95082\",\"Add 'const' to all unresolved variables\"),Add_await:b(95083,3,\"Add_await_95083\",\"Add 'await'\"),Add_await_to_initializer_for_0:b(95084,3,\"Add_await_to_initializer_for_0_95084\",\"Add 'await' to initializer for '{0}'\"),Fix_all_expressions_possibly_missing_await:b(95085,3,\"Fix_all_expressions_possibly_missing_await_95085\",\"Fix all expressions possibly missing 'await'\"),Remove_unnecessary_await:b(95086,3,\"Remove_unnecessary_await_95086\",\"Remove unnecessary 'await'\"),Remove_all_unnecessary_uses_of_await:b(95087,3,\"Remove_all_unnecessary_uses_of_await_95087\",\"Remove all unnecessary uses of 'await'\"),Enable_the_jsx_flag_in_your_configuration_file:b(95088,3,\"Enable_the_jsx_flag_in_your_configuration_file_95088\",\"Enable the '--jsx' flag in your configuration file\"),Add_await_to_initializers:b(95089,3,\"Add_await_to_initializers_95089\",\"Add 'await' to initializers\"),Extract_to_interface:b(95090,3,\"Extract_to_interface_95090\",\"Extract to interface\"),Convert_to_a_bigint_numeric_literal:b(95091,3,\"Convert_to_a_bigint_numeric_literal_95091\",\"Convert to a bigint numeric literal\"),Convert_all_to_bigint_numeric_literals:b(95092,3,\"Convert_all_to_bigint_numeric_literals_95092\",\"Convert all to bigint numeric literals\"),Convert_const_to_let:b(95093,3,\"Convert_const_to_let_95093\",\"Convert 'const' to 'let'\"),Prefix_with_declare:b(95094,3,\"Prefix_with_declare_95094\",\"Prefix with 'declare'\"),Prefix_all_incorrect_property_declarations_with_declare:b(95095,3,\"Prefix_all_incorrect_property_declarations_with_declare_95095\",\"Prefix all incorrect property declarations with 'declare'\"),Convert_to_template_string:b(95096,3,\"Convert_to_template_string_95096\",\"Convert to template string\"),Add_export_to_make_this_file_into_a_module:b(95097,3,\"Add_export_to_make_this_file_into_a_module_95097\",\"Add 'export {}' to make this file into a module\"),Set_the_target_option_in_your_configuration_file_to_0:b(95098,3,\"Set_the_target_option_in_your_configuration_file_to_0_95098\",\"Set the 'target' option in your configuration file to '{0}'\"),Set_the_module_option_in_your_configuration_file_to_0:b(95099,3,\"Set_the_module_option_in_your_configuration_file_to_0_95099\",\"Set the 'module' option in your configuration file to '{0}'\"),Convert_invalid_character_to_its_html_entity_code:b(95100,3,\"Convert_invalid_character_to_its_html_entity_code_95100\",\"Convert invalid character to its html entity code\"),Convert_all_invalid_characters_to_HTML_entity_code:b(95101,3,\"Convert_all_invalid_characters_to_HTML_entity_code_95101\",\"Convert all invalid characters to HTML entity code\"),Convert_all_const_to_let:b(95102,3,\"Convert_all_const_to_let_95102\",\"Convert all 'const' to 'let'\"),Convert_function_expression_0_to_arrow_function:b(95105,3,\"Convert_function_expression_0_to_arrow_function_95105\",\"Convert function expression '{0}' to arrow function\"),Convert_function_declaration_0_to_arrow_function:b(95106,3,\"Convert_function_declaration_0_to_arrow_function_95106\",\"Convert function declaration '{0}' to arrow function\"),Fix_all_implicit_this_errors:b(95107,3,\"Fix_all_implicit_this_errors_95107\",\"Fix all implicit-'this' errors\"),Wrap_invalid_character_in_an_expression_container:b(95108,3,\"Wrap_invalid_character_in_an_expression_container_95108\",\"Wrap invalid character in an expression container\"),Wrap_all_invalid_characters_in_an_expression_container:b(95109,3,\"Wrap_all_invalid_characters_in_an_expression_container_95109\",\"Wrap all invalid characters in an expression container\"),Visit_https_Colon_Slash_Slashaka_ms_Slashtsconfig_to_read_more_about_this_file:b(95110,3,\"Visit_https_Colon_Slash_Slashaka_ms_Slashtsconfig_to_read_more_about_this_file_95110\",\"Visit https://aka.ms/tsconfig to read more about this file\"),Add_a_return_statement:b(95111,3,\"Add_a_return_statement_95111\",\"Add a return statement\"),Remove_braces_from_arrow_function_body:b(95112,3,\"Remove_braces_from_arrow_function_body_95112\",\"Remove braces from arrow function body\"),Wrap_the_following_body_with_parentheses_which_should_be_an_object_literal:b(95113,3,\"Wrap_the_following_body_with_parentheses_which_should_be_an_object_literal_95113\",\"Wrap the following body with parentheses which should be an object literal\"),Add_all_missing_return_statement:b(95114,3,\"Add_all_missing_return_statement_95114\",\"Add all missing return statement\"),Remove_braces_from_all_arrow_function_bodies_with_relevant_issues:b(95115,3,\"Remove_braces_from_all_arrow_function_bodies_with_relevant_issues_95115\",\"Remove braces from all arrow function bodies with relevant issues\"),Wrap_all_object_literal_with_parentheses:b(95116,3,\"Wrap_all_object_literal_with_parentheses_95116\",\"Wrap all object literal with parentheses\"),Move_labeled_tuple_element_modifiers_to_labels:b(95117,3,\"Move_labeled_tuple_element_modifiers_to_labels_95117\",\"Move labeled tuple element modifiers to labels\"),Convert_overload_list_to_single_signature:b(95118,3,\"Convert_overload_list_to_single_signature_95118\",\"Convert overload list to single signature\"),Generate_get_and_set_accessors_for_all_overriding_properties:b(95119,3,\"Generate_get_and_set_accessors_for_all_overriding_properties_95119\",\"Generate 'get' and 'set' accessors for all overriding properties\"),Wrap_in_JSX_fragment:b(95120,3,\"Wrap_in_JSX_fragment_95120\",\"Wrap in JSX fragment\"),Wrap_all_unparented_JSX_in_JSX_fragment:b(95121,3,\"Wrap_all_unparented_JSX_in_JSX_fragment_95121\",\"Wrap all unparented JSX in JSX fragment\"),Convert_arrow_function_or_function_expression:b(95122,3,\"Convert_arrow_function_or_function_expression_95122\",\"Convert arrow function or function expression\"),Convert_to_anonymous_function:b(95123,3,\"Convert_to_anonymous_function_95123\",\"Convert to anonymous function\"),Convert_to_named_function:b(95124,3,\"Convert_to_named_function_95124\",\"Convert to named function\"),Convert_to_arrow_function:b(95125,3,\"Convert_to_arrow_function_95125\",\"Convert to arrow function\"),Remove_parentheses:b(95126,3,\"Remove_parentheses_95126\",\"Remove parentheses\"),Could_not_find_a_containing_arrow_function:b(95127,3,\"Could_not_find_a_containing_arrow_function_95127\",\"Could not find a containing arrow function\"),Containing_function_is_not_an_arrow_function:b(95128,3,\"Containing_function_is_not_an_arrow_function_95128\",\"Containing function is not an arrow function\"),Could_not_find_export_statement:b(95129,3,\"Could_not_find_export_statement_95129\",\"Could not find export statement\"),This_file_already_has_a_default_export:b(95130,3,\"This_file_already_has_a_default_export_95130\",\"This file already has a default export\"),Could_not_find_import_clause:b(95131,3,\"Could_not_find_import_clause_95131\",\"Could not find import clause\"),Could_not_find_namespace_import_or_named_imports:b(95132,3,\"Could_not_find_namespace_import_or_named_imports_95132\",\"Could not find namespace import or named imports\"),Selection_is_not_a_valid_type_node:b(95133,3,\"Selection_is_not_a_valid_type_node_95133\",\"Selection is not a valid type node\"),No_type_could_be_extracted_from_this_type_node:b(95134,3,\"No_type_could_be_extracted_from_this_type_node_95134\",\"No type could be extracted from this type node\"),Could_not_find_property_for_which_to_generate_accessor:b(95135,3,\"Could_not_find_property_for_which_to_generate_accessor_95135\",\"Could not find property for which to generate accessor\"),Name_is_not_valid:b(95136,3,\"Name_is_not_valid_95136\",\"Name is not valid\"),Can_only_convert_property_with_modifier:b(95137,3,\"Can_only_convert_property_with_modifier_95137\",\"Can only convert property with modifier\"),Switch_each_misused_0_to_1:b(95138,3,\"Switch_each_misused_0_to_1_95138\",\"Switch each misused '{0}' to '{1}'\"),Convert_to_optional_chain_expression:b(95139,3,\"Convert_to_optional_chain_expression_95139\",\"Convert to optional chain expression\"),Could_not_find_convertible_access_expression:b(95140,3,\"Could_not_find_convertible_access_expression_95140\",\"Could not find convertible access expression\"),Could_not_find_matching_access_expressions:b(95141,3,\"Could_not_find_matching_access_expressions_95141\",\"Could not find matching access expressions\"),Can_only_convert_logical_AND_access_chains:b(95142,3,\"Can_only_convert_logical_AND_access_chains_95142\",\"Can only convert logical AND access chains\"),Add_void_to_Promise_resolved_without_a_value:b(95143,3,\"Add_void_to_Promise_resolved_without_a_value_95143\",\"Add 'void' to Promise resolved without a value\"),Add_void_to_all_Promises_resolved_without_a_value:b(95144,3,\"Add_void_to_all_Promises_resolved_without_a_value_95144\",\"Add 'void' to all Promises resolved without a value\"),Use_element_access_for_0:b(95145,3,\"Use_element_access_for_0_95145\",\"Use element access for '{0}'\"),Use_element_access_for_all_undeclared_properties:b(95146,3,\"Use_element_access_for_all_undeclared_properties_95146\",\"Use element access for all undeclared properties.\"),Delete_all_unused_imports:b(95147,3,\"Delete_all_unused_imports_95147\",\"Delete all unused imports\"),Infer_function_return_type:b(95148,3,\"Infer_function_return_type_95148\",\"Infer function return type\"),Return_type_must_be_inferred_from_a_function:b(95149,3,\"Return_type_must_be_inferred_from_a_function_95149\",\"Return type must be inferred from a function\"),Could_not_determine_function_return_type:b(95150,3,\"Could_not_determine_function_return_type_95150\",\"Could not determine function return type\"),Could_not_convert_to_arrow_function:b(95151,3,\"Could_not_convert_to_arrow_function_95151\",\"Could not convert to arrow function\"),Could_not_convert_to_named_function:b(95152,3,\"Could_not_convert_to_named_function_95152\",\"Could not convert to named function\"),Could_not_convert_to_anonymous_function:b(95153,3,\"Could_not_convert_to_anonymous_function_95153\",\"Could not convert to anonymous function\"),Can_only_convert_string_concatenation:b(95154,3,\"Can_only_convert_string_concatenation_95154\",\"Can only convert string concatenation\"),Selection_is_not_a_valid_statement_or_statements:b(95155,3,\"Selection_is_not_a_valid_statement_or_statements_95155\",\"Selection is not a valid statement or statements\"),Add_missing_function_declaration_0:b(95156,3,\"Add_missing_function_declaration_0_95156\",\"Add missing function declaration '{0}'\"),Add_all_missing_function_declarations:b(95157,3,\"Add_all_missing_function_declarations_95157\",\"Add all missing function declarations\"),Method_not_implemented:b(95158,3,\"Method_not_implemented_95158\",\"Method not implemented.\"),Function_not_implemented:b(95159,3,\"Function_not_implemented_95159\",\"Function not implemented.\"),Add_override_modifier:b(95160,3,\"Add_override_modifier_95160\",\"Add 'override' modifier\"),Remove_override_modifier:b(95161,3,\"Remove_override_modifier_95161\",\"Remove 'override' modifier\"),Add_all_missing_override_modifiers:b(95162,3,\"Add_all_missing_override_modifiers_95162\",\"Add all missing 'override' modifiers\"),Remove_all_unnecessary_override_modifiers:b(95163,3,\"Remove_all_unnecessary_override_modifiers_95163\",\"Remove all unnecessary 'override' modifiers\"),Can_only_convert_named_export:b(95164,3,\"Can_only_convert_named_export_95164\",\"Can only convert named export\"),Add_missing_properties:b(95165,3,\"Add_missing_properties_95165\",\"Add missing properties\"),Add_all_missing_properties:b(95166,3,\"Add_all_missing_properties_95166\",\"Add all missing properties\"),Add_missing_attributes:b(95167,3,\"Add_missing_attributes_95167\",\"Add missing attributes\"),Add_all_missing_attributes:b(95168,3,\"Add_all_missing_attributes_95168\",\"Add all missing attributes\"),Add_undefined_to_optional_property_type:b(95169,3,\"Add_undefined_to_optional_property_type_95169\",\"Add 'undefined' to optional property type\"),Convert_named_imports_to_default_import:b(95170,3,\"Convert_named_imports_to_default_import_95170\",\"Convert named imports to default import\"),Delete_unused_param_tag_0:b(95171,3,\"Delete_unused_param_tag_0_95171\",\"Delete unused '@param' tag '{0}'\"),Delete_all_unused_param_tags:b(95172,3,\"Delete_all_unused_param_tags_95172\",\"Delete all unused '@param' tags\"),Rename_param_tag_name_0_to_1:b(95173,3,\"Rename_param_tag_name_0_to_1_95173\",\"Rename '@param' tag name '{0}' to '{1}'\"),Use_0:b(95174,3,\"Use_0_95174\",\"Use `{0}`.\"),Use_Number_isNaN_in_all_conditions:b(95175,3,\"Use_Number_isNaN_in_all_conditions_95175\",\"Use `Number.isNaN` in all conditions.\"),No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer:b(18004,1,\"No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer_18004\",\"No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer.\"),Classes_may_not_have_a_field_named_constructor:b(18006,1,\"Classes_may_not_have_a_field_named_constructor_18006\",\"Classes may not have a field named 'constructor'.\"),JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array:b(18007,1,\"JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array_18007\",\"JSX expressions may not use the comma operator. Did you mean to write an array?\"),Private_identifiers_cannot_be_used_as_parameters:b(18009,1,\"Private_identifiers_cannot_be_used_as_parameters_18009\",\"Private identifiers cannot be used as parameters.\"),An_accessibility_modifier_cannot_be_used_with_a_private_identifier:b(18010,1,\"An_accessibility_modifier_cannot_be_used_with_a_private_identifier_18010\",\"An accessibility modifier cannot be used with a private identifier.\"),The_operand_of_a_delete_operator_cannot_be_a_private_identifier:b(18011,1,\"The_operand_of_a_delete_operator_cannot_be_a_private_identifier_18011\",\"The operand of a 'delete' operator cannot be a private identifier.\"),constructor_is_a_reserved_word:b(18012,1,\"constructor_is_a_reserved_word_18012\",\"'#constructor' is a reserved word.\"),Property_0_is_not_accessible_outside_class_1_because_it_has_a_private_identifier:b(18013,1,\"Property_0_is_not_accessible_outside_class_1_because_it_has_a_private_identifier_18013\",\"Property '{0}' is not accessible outside class '{1}' because it has a private identifier.\"),The_property_0_cannot_be_accessed_on_type_1_within_this_class_because_it_is_shadowed_by_another_private_identifier_with_the_same_spelling:b(18014,1,\"The_property_0_cannot_be_accessed_on_type_1_within_this_class_because_it_is_shadowed_by_another_priv_18014\",\"The property '{0}' cannot be accessed on type '{1}' within this class because it is shadowed by another private identifier with the same spelling.\"),Property_0_in_type_1_refers_to_a_different_member_that_cannot_be_accessed_from_within_type_2:b(18015,1,\"Property_0_in_type_1_refers_to_a_different_member_that_cannot_be_accessed_from_within_type_2_18015\",\"Property '{0}' in type '{1}' refers to a different member that cannot be accessed from within type '{2}'.\"),Private_identifiers_are_not_allowed_outside_class_bodies:b(18016,1,\"Private_identifiers_are_not_allowed_outside_class_bodies_18016\",\"Private identifiers are not allowed outside class bodies.\"),The_shadowing_declaration_of_0_is_defined_here:b(18017,1,\"The_shadowing_declaration_of_0_is_defined_here_18017\",\"The shadowing declaration of '{0}' is defined here\"),The_declaration_of_0_that_you_probably_intended_to_use_is_defined_here:b(18018,1,\"The_declaration_of_0_that_you_probably_intended_to_use_is_defined_here_18018\",\"The declaration of '{0}' that you probably intended to use is defined here\"),_0_modifier_cannot_be_used_with_a_private_identifier:b(18019,1,\"_0_modifier_cannot_be_used_with_a_private_identifier_18019\",\"'{0}' modifier cannot be used with a private identifier.\"),An_enum_member_cannot_be_named_with_a_private_identifier:b(18024,1,\"An_enum_member_cannot_be_named_with_a_private_identifier_18024\",\"An enum member cannot be named with a private identifier.\"),can_only_be_used_at_the_start_of_a_file:b(18026,1,\"can_only_be_used_at_the_start_of_a_file_18026\",\"'#!' can only be used at the start of a file.\"),Compiler_reserves_name_0_when_emitting_private_identifier_downlevel:b(18027,1,\"Compiler_reserves_name_0_when_emitting_private_identifier_downlevel_18027\",\"Compiler reserves name '{0}' when emitting private identifier downlevel.\"),Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher:b(18028,1,\"Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher_18028\",\"Private identifiers are only available when targeting ECMAScript 2015 and higher.\"),Private_identifiers_are_not_allowed_in_variable_declarations:b(18029,1,\"Private_identifiers_are_not_allowed_in_variable_declarations_18029\",\"Private identifiers are not allowed in variable declarations.\"),An_optional_chain_cannot_contain_private_identifiers:b(18030,1,\"An_optional_chain_cannot_contain_private_identifiers_18030\",\"An optional chain cannot contain private identifiers.\"),The_intersection_0_was_reduced_to_never_because_property_1_has_conflicting_types_in_some_constituents:b(18031,1,\"The_intersection_0_was_reduced_to_never_because_property_1_has_conflicting_types_in_some_constituent_18031\",\"The intersection '{0}' was reduced to 'never' because property '{1}' has conflicting types in some constituents.\"),The_intersection_0_was_reduced_to_never_because_property_1_exists_in_multiple_constituents_and_is_private_in_some:b(18032,1,\"The_intersection_0_was_reduced_to_never_because_property_1_exists_in_multiple_constituents_and_is_pr_18032\",\"The intersection '{0}' was reduced to 'never' because property '{1}' exists in multiple constituents and is private in some.\"),Type_0_is_not_assignable_to_type_1_as_required_for_computed_enum_member_values:b(18033,1,\"Type_0_is_not_assignable_to_type_1_as_required_for_computed_enum_member_values_18033\",\"Type '{0}' is not assignable to type '{1}' as required for computed enum member values.\"),Specify_the_JSX_fragment_factory_function_to_use_when_targeting_react_JSX_emit_with_jsxFactory_compiler_option_is_specified_e_g_Fragment:b(18034,3,\"Specify_the_JSX_fragment_factory_function_to_use_when_targeting_react_JSX_emit_with_jsxFactory_compi_18034\",\"Specify the JSX fragment factory function to use when targeting 'react' JSX emit with 'jsxFactory' compiler option is specified, e.g. 'Fragment'.\"),Invalid_value_for_jsxFragmentFactory_0_is_not_a_valid_identifier_or_qualified_name:b(18035,1,\"Invalid_value_for_jsxFragmentFactory_0_is_not_a_valid_identifier_or_qualified_name_18035\",\"Invalid value for 'jsxFragmentFactory'. '{0}' is not a valid identifier or qualified-name.\"),Class_decorators_can_t_be_used_with_static_private_identifier_Consider_removing_the_experimental_decorator:b(18036,1,\"Class_decorators_can_t_be_used_with_static_private_identifier_Consider_removing_the_experimental_dec_18036\",\"Class decorators can't be used with static private identifier. Consider removing the experimental decorator.\"),Await_expression_cannot_be_used_inside_a_class_static_block:b(18037,1,\"Await_expression_cannot_be_used_inside_a_class_static_block_18037\",\"Await expression cannot be used inside a class static block.\"),For_await_loops_cannot_be_used_inside_a_class_static_block:b(18038,1,\"For_await_loops_cannot_be_used_inside_a_class_static_block_18038\",\"'For await' loops cannot be used inside a class static block.\"),Invalid_use_of_0_It_cannot_be_used_inside_a_class_static_block:b(18039,1,\"Invalid_use_of_0_It_cannot_be_used_inside_a_class_static_block_18039\",\"Invalid use of '{0}'. It cannot be used inside a class static block.\"),A_return_statement_cannot_be_used_inside_a_class_static_block:b(18041,1,\"A_return_statement_cannot_be_used_inside_a_class_static_block_18041\",\"A 'return' statement cannot be used inside a class static block.\"),_0_is_a_type_and_cannot_be_imported_in_JavaScript_files_Use_1_in_a_JSDoc_type_annotation:b(18042,1,\"_0_is_a_type_and_cannot_be_imported_in_JavaScript_files_Use_1_in_a_JSDoc_type_annotation_18042\",\"'{0}' is a type and cannot be imported in JavaScript files. Use '{1}' in a JSDoc type annotation.\"),Types_cannot_appear_in_export_declarations_in_JavaScript_files:b(18043,1,\"Types_cannot_appear_in_export_declarations_in_JavaScript_files_18043\",\"Types cannot appear in export declarations in JavaScript files.\"),_0_is_automatically_exported_here:b(18044,3,\"_0_is_automatically_exported_here_18044\",\"'{0}' is automatically exported here.\"),Properties_with_the_accessor_modifier_are_only_available_when_targeting_ECMAScript_2015_and_higher:b(18045,1,\"Properties_with_the_accessor_modifier_are_only_available_when_targeting_ECMAScript_2015_and_higher_18045\",\"Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher.\"),_0_is_of_type_unknown:b(18046,1,\"_0_is_of_type_unknown_18046\",\"'{0}' is of type 'unknown'.\"),_0_is_possibly_null:b(18047,1,\"_0_is_possibly_null_18047\",\"'{0}' is possibly 'null'.\"),_0_is_possibly_undefined:b(18048,1,\"_0_is_possibly_undefined_18048\",\"'{0}' is possibly 'undefined'.\"),_0_is_possibly_null_or_undefined:b(18049,1,\"_0_is_possibly_null_or_undefined_18049\",\"'{0}' is possibly 'null' or 'undefined'.\"),The_value_0_cannot_be_used_here:b(18050,1,\"The_value_0_cannot_be_used_here_18050\",\"The value '{0}' cannot be used here.\"),Compiler_option_0_cannot_be_given_an_empty_string:b(18051,1,\"Compiler_option_0_cannot_be_given_an_empty_string_18051\",\"Compiler option '{0}' cannot be given an empty string.\")}}});function Su(e){return e>=79}function moe(e){return e===31||Su(e)}function aI(e,t){if(e<t[0])return!1;let r=0,i=t.length,o;for(;r+1<i;){if(o=r+(i-r)/2,o-=o%2,t[o]<=e&&e<=t[o+1])return!0;e<t[o]?i=o:r=o+2}return!1}function W8(e,t){return t>=2?aI(e,Aoe):t===1?aI(e,Soe):aI(e,Eoe)}function wDe(e,t){return t>=2?aI(e,Coe):t===1?aI(e,xoe):aI(e,Toe)}function RDe(e){let t=[];return e.forEach((r,i)=>{t[r]=i}),t}function Xa(e){return koe[e]}function uT(e){return vj.get(e)}function gw(e){let t=[],r=0,i=0;for(;r<e.length;){let o=e.charCodeAt(r);switch(r++,o){case 13:e.charCodeAt(r)===10&&r++;case 10:t.push(i),i=r;break;default:o>127&&Wl(o)&&(t.push(i),i=r);break}}return t.push(i),t}function yw(e,t,r,i){return e.getPositionOfLineAndCharacter?e.getPositionOfLineAndCharacter(t,r,i):mj(Sh(e),t,r,e.text,i)}function mj(e,t,r,i,o){(t<0||t>=e.length)&&(o?t=t<0?0:t>=e.length?e.length-1:t:L.fail(`Bad line number. Line: ${t}, lineStarts.length: ${e.length} , line map is correct? ${i!==void 0?BD(e,gw(i)):\"unknown\"}`));let s=e[t]+r;return o?s>e[t+1]?e[t+1]:typeof i==\"string\"&&s>i.length?i.length:s:(t<e.length-1?L.assert(s<e[t+1]):i!==void 0&&L.assert(s<=i.length),s)}function Sh(e){return e.lineMap||(e.lineMap=gw(e.text))}function vw(e,t){let r=oI(e,t);return{line:r,character:t-e[r]}}function oI(e,t,r){let i=Py(e,t,Ks,Es,r);return i<0&&(i=~i-1,L.assert(i!==-1,\"position cannot precede the beginning of the file\")),i}function sI(e,t,r){if(t===r)return 0;let i=Sh(e),o=Math.min(t,r),s=o===r,l=s?t:r,f=oI(i,o),d=oI(i,l,f);return s?f-d:d-f}function Gs(e,t){return vw(Sh(e),t)}function xh(e){return Yp(e)||Wl(e)}function Yp(e){return e===32||e===9||e===11||e===12||e===160||e===133||e===5760||e>=8192&&e<=8203||e===8239||e===8287||e===12288||e===65279}function Wl(e){return e===10||e===13||e===8232||e===8233}function cI(e){return e>=48&&e<=57}function z8(e){return cI(e)||e>=65&&e<=70||e>=97&&e<=102}function ODe(e){return e<=1114111}function hj(e){return e>=48&&e<=55}function hoe(e,t){let r=e.charCodeAt(t);switch(r){case 13:case 10:case 9:case 11:case 12:case 32:case 47:case 60:case 124:case 61:case 62:return!0;case 35:return t===0;default:return r>127}}function xo(e,t,r,i,o){if(vp(t))return t;let s=!1;for(;;){let l=e.charCodeAt(t);switch(l){case 13:e.charCodeAt(t+1)===10&&t++;case 10:if(t++,r)return t;s=!!o;continue;case 9:case 11:case 12:case 32:t++;continue;case 47:if(i)break;if(e.charCodeAt(t+1)===47){for(t+=2;t<e.length&&!Wl(e.charCodeAt(t));)t++;s=!1;continue}if(e.charCodeAt(t+1)===42){for(t+=2;t<e.length;){if(e.charCodeAt(t)===42&&e.charCodeAt(t+1)===47){t+=2;break}t++}s=!1;continue}break;case 60:case 124:case 61:case 62:if(vA(e,t)){t=lI(e,t),s=!1;continue}break;case 35:if(t===0&&gj(e,t)){t=yj(e,t),s=!1;continue}break;case 42:if(s){t++,s=!1;continue}break;default:if(l>127&&xh(l)){t++;continue}break}return t}}function vA(e,t){if(L.assert(t>=0),t===0||Wl(e.charCodeAt(t-1))){let r=e.charCodeAt(t);if(t+Sw<e.length){for(let i=0;i<Sw;i++)if(e.charCodeAt(t+i)!==r)return!1;return r===61||e.charCodeAt(t+Sw)===32}}return!1}function lI(e,t,r){r&&r(_.Merge_conflict_marker_encountered,t,Sw);let i=e.charCodeAt(t),o=e.length;if(i===60||i===62)for(;t<o&&!Wl(e.charCodeAt(t));)t++;else for(L.assert(i===124||i===61);t<o;){let s=e.charCodeAt(t);if((s===61||s===62)&&s!==i&&vA(e,t))break;t++}return t}function gj(e,t){return L.assert(t===0),q8.test(e)}function yj(e,t){let r=q8.exec(e)[0];return t=t+r.length,t}function J8(e,t,r,i,o,s,l){let f,d,g,m,v=!1,S=i,x=l;if(r===0){S=!0;let A=K8(t);A&&(r=A.length)}e:for(;r>=0&&r<t.length;){let A=t.charCodeAt(r);switch(A){case 13:t.charCodeAt(r+1)===10&&r++;case 10:if(r++,i)break e;S=!0,v&&(m=!0);continue;case 9:case 11:case 12:case 32:r++;continue;case 47:let w=t.charCodeAt(r+1),C=!1;if(w===47||w===42){let P=w===47?2:3,F=r;if(r+=2,w===47)for(;r<t.length;){if(Wl(t.charCodeAt(r))){C=!0;break}r++}else for(;r<t.length;){if(t.charCodeAt(r)===42&&t.charCodeAt(r+1)===47){r+=2;break}r++}if(S){if(v&&(x=o(f,d,g,m,s,x),!e&&x))return x;f=F,d=r,g=P,m=C,v=!0}continue}break e;default:if(A>127&&xh(A)){v&&Wl(A)&&(m=!0),r++;continue}break e}}return v&&(x=o(f,d,g,m,s,x)),x}function bw(e,t,r,i){return J8(!1,e,t,!1,r,i)}function Ew(e,t,r,i){return J8(!1,e,t,!0,r,i)}function goe(e,t,r,i,o){return J8(!0,e,t,!1,r,i,o)}function yoe(e,t,r,i,o){return J8(!0,e,t,!0,r,i,o)}function voe(e,t,r,i,o,s=[]){return s.push({kind:r,pos:e,end:t,hasTrailingNewLine:i}),s}function Nm(e,t){return goe(e,t,voe,void 0,void 0)}function eb(e,t){return yoe(e,t,voe,void 0,void 0)}function K8(e){let t=q8.exec(e);if(t)return t[0]}function Pm(e,t){return e>=65&&e<=90||e>=97&&e<=122||e===36||e===95||e>127&&W8(e,t)}function tb(e,t,r){return e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===36||e===95||(r===1?e===45||e===58:!1)||e>127&&wDe(e,t)}function r_(e,t,r){let i=Dg(e,0);if(!Pm(i,t))return!1;for(let o=By(i);o<e.length;o+=By(i))if(!tb(i=Dg(e,o),t,r))return!1;return!0}function kg(e,t,r=0,i,o,s,l){var f=i,d,g,m,v,S,x,A,w,C=0;Dt(f,s,l);var P={getStartPos:()=>m,getTextPos:()=>d,getToken:()=>S,getTokenPos:()=>v,getTokenText:()=>f.substring(v,d),getTokenValue:()=>x,hasUnicodeEscape:()=>(A&1024)!==0,hasExtendedUnicodeEscape:()=>(A&8)!==0,hasPrecedingLineBreak:()=>(A&1)!==0,hasPrecedingJSDocComment:()=>(A&2)!==0,isIdentifier:()=>S===79||S>116,isReservedWord:()=>S>=81&&S<=116,isUnterminated:()=>(A&4)!==0,getCommentDirectives:()=>w,getNumericLiteralFlags:()=>A&1008,getTokenFlags:()=>A,reScanGreaterToken:Be,reScanAsteriskEqualsToken:Ne,reScanSlashToken:Le,reScanTemplateToken:ct,reScanTemplateHeadOrNoSubstitutionTemplate:Rt,scanJsxIdentifier:kn,scanJsxAttributeValue:_n,reScanJsxAttributeValue:Gt,reScanJsxToken:We,reScanLessThanToken:qe,reScanHashToken:zt,reScanQuestionToken:Qt,reScanInvalidIdentifier:Ce,scanJsxToken:tn,scanJsDocToken:$n,scan:Pe,getText:pt,clearCommentDirectives:nn,setText:Dt,setScriptTarget:An,setLanguageVariant:Kn,setOnError:pn,setTextPos:hi,setInJSDocType:ri,tryScan:gr,lookAhead:Pi,scanRange:Ni};return L.isDebugging&&Object.defineProperty(P,\"__debugShowCurrentPositionInText\",{get:()=>{let gn=P.getText();return gn.slice(0,P.getStartPos())+\"\\u2551\"+gn.slice(P.getStartPos())}}),P;function F(gn,Ht=d,En){if(o){let dr=d;d=Ht,o(gn,En||0),d=dr}}function B(){let gn=d,Ht=!1,En=!1,dr=\"\";for(;;){let Cr=f.charCodeAt(d);if(Cr===95){A|=512,Ht?(Ht=!1,En=!0,dr+=f.substring(gn,d)):F(En?_.Multiple_consecutive_numeric_separators_are_not_permitted:_.Numeric_separators_are_not_allowed_here,d,1),d++,gn=d;continue}if(cI(Cr)){Ht=!0,En=!1,d++;continue}break}return f.charCodeAt(d-1)===95&&F(_.Numeric_separators_are_not_allowed_here,d-1,1),dr+f.substring(gn,d)}function q(){let gn=d,Ht=B(),En,dr;f.charCodeAt(d)===46&&(d++,En=B());let Cr=d;if(f.charCodeAt(d)===69||f.charCodeAt(d)===101){d++,A|=16,(f.charCodeAt(d)===43||f.charCodeAt(d)===45)&&d++;let at=d,Tt=B();Tt?(dr=f.substring(Cr,at)+Tt,Cr=d):F(_.Digit_expected)}let Se;if(A&512?(Se=Ht,En&&(Se+=\".\"+En),dr&&(Se+=dr)):Se=f.substring(gn,Cr),En!==void 0||A&16)return W(gn,En===void 0&&!!(A&16)),{type:8,value:\"\"+ +Se};{x=Se;let at=ke();return W(gn),{type:at,value:x}}}function W(gn,Ht){if(!Pm(Dg(f,d),e))return;let En=d,{length:dr}=X();dr===1&&f[En]===\"n\"?F(Ht?_.A_bigint_literal_cannot_use_exponential_notation:_.A_bigint_literal_must_be_an_integer,gn,En-gn+1):(F(_.An_identifier_or_keyword_cannot_immediately_follow_a_numeric_literal,En,dr),d=En)}function Y(){let gn=d;for(;hj(f.charCodeAt(d));)d++;return+f.substring(gn,d)}function R(gn,Ht){let En=Q(gn,!1,Ht);return En?parseInt(En,16):-1}function ie(gn,Ht){return Q(gn,!0,Ht)}function Q(gn,Ht,En){let dr=[],Cr=!1,Se=!1;for(;dr.length<gn||Ht;){let at=f.charCodeAt(d);if(En&&at===95){A|=512,Cr?(Cr=!1,Se=!0):F(Se?_.Multiple_consecutive_numeric_separators_are_not_permitted:_.Numeric_separators_are_not_allowed_here,d,1),d++;continue}if(Cr=En,at>=65&&at<=70)at+=97-65;else if(!(at>=48&&at<=57||at>=97&&at<=102))break;dr.push(at),d++,Se=!1}return dr.length<gn&&(dr=[]),f.charCodeAt(d-1)===95&&F(_.Numeric_separators_are_not_allowed_here,d-1,1),String.fromCharCode(...dr)}function fe(gn=!1){let Ht=f.charCodeAt(d);d++;let En=\"\",dr=d;for(;;){if(d>=g){En+=f.substring(dr,d),A|=4,F(_.Unterminated_string_literal);break}let Cr=f.charCodeAt(d);if(Cr===Ht){En+=f.substring(dr,d),d++;break}if(Cr===92&&!gn){En+=f.substring(dr,d),En+=U(),dr=d;continue}if(Wl(Cr)&&!gn){En+=f.substring(dr,d),A|=4,F(_.Unterminated_string_literal);break}d++}return En}function Z(gn){let Ht=f.charCodeAt(d)===96;d++;let En=d,dr=\"\",Cr;for(;;){if(d>=g){dr+=f.substring(En,d),A|=4,F(_.Unterminated_template_literal),Cr=Ht?14:17;break}let Se=f.charCodeAt(d);if(Se===96){dr+=f.substring(En,d),d++,Cr=Ht?14:17;break}if(Se===36&&d+1<g&&f.charCodeAt(d+1)===123){dr+=f.substring(En,d),d+=2,Cr=Ht?15:16;break}if(Se===92){dr+=f.substring(En,d),dr+=U(gn),En=d;continue}if(Se===13){dr+=f.substring(En,d),d++,d<g&&f.charCodeAt(d)===10&&d++,dr+=`\n`,En=d;continue}d++}return L.assert(Cr!==void 0),x=dr,Cr}function U(gn){let Ht=d;if(d++,d>=g)return F(_.Unexpected_end_of_text),\"\";let En=f.charCodeAt(d);switch(d++,En){case 48:return gn&&d<g&&cI(f.charCodeAt(d))?(d++,A|=2048,f.substring(Ht,d)):\"\\0\";case 98:return\"\\b\";case 116:return\"\t\";case 110:return`\n`;case 118:return\"\\v\";case 102:return\"\\f\";case 114:return\"\\r\";case 39:return\"'\";case 34:return'\"';case 117:if(gn){for(let dr=d;dr<d+4;dr++)if(dr<g&&!z8(f.charCodeAt(dr))&&f.charCodeAt(dr)!==123)return d=dr,A|=2048,f.substring(Ht,d)}if(d<g&&f.charCodeAt(d)===123){if(d++,gn&&!z8(f.charCodeAt(d)))return A|=2048,f.substring(Ht,d);if(gn){let dr=d,Cr=ie(1,!1),Se=Cr?parseInt(Cr,16):-1;if(!ODe(Se)||f.charCodeAt(d)!==125)return A|=2048,f.substring(Ht,d);d=dr}return A|=8,le()}return A|=1024,re(4);case 120:if(gn)if(z8(f.charCodeAt(d))){if(!z8(f.charCodeAt(d+1)))return d++,A|=2048,f.substring(Ht,d)}else return A|=2048,f.substring(Ht,d);return re(2);case 13:d<g&&f.charCodeAt(d)===10&&d++;case 10:case 8232:case 8233:return\"\";default:return String.fromCharCode(En)}}function re(gn){let Ht=R(gn,!1);return Ht>=0?String.fromCharCode(Ht):(F(_.Hexadecimal_digit_expected),\"\")}function le(){let gn=ie(1,!1),Ht=gn?parseInt(gn,16):-1,En=!1;return Ht<0?(F(_.Hexadecimal_digit_expected),En=!0):Ht>1114111&&(F(_.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive),En=!0),d>=g?(F(_.Unexpected_end_of_text),En=!0):f.charCodeAt(d)===125?d++:(F(_.Unterminated_Unicode_escape_sequence),En=!0),En?\"\":uI(Ht)}function _e(){if(d+5<g&&f.charCodeAt(d+1)===117){let gn=d;d+=2;let Ht=R(4,!1);return d=gn,Ht}return-1}function ge(){if(Dg(f,d+1)===117&&Dg(f,d+2)===123){let gn=d;d+=3;let Ht=ie(1,!1),En=Ht?parseInt(Ht,16):-1;return d=gn,En}return-1}function X(){let gn=\"\",Ht=d;for(;d<g;){let En=Dg(f,d);if(tb(En,e))d+=By(En);else if(En===92){if(En=ge(),En>=0&&tb(En,e)){d+=3,A|=8,gn+=le(),Ht=d;continue}if(En=_e(),!(En>=0&&tb(En,e)))break;A|=1024,gn+=f.substring(Ht,d),gn+=uI(En),d+=6,Ht=d}else break}return gn+=f.substring(Ht,d),gn}function Ve(){let gn=x.length;if(gn>=2&&gn<=12){let Ht=x.charCodeAt(0);if(Ht>=97&&Ht<=122){let En=boe.get(x);if(En!==void 0)return S=En}}return S=79}function we(gn){let Ht=\"\",En=!1,dr=!1;for(;;){let Cr=f.charCodeAt(d);if(Cr===95){A|=512,En?(En=!1,dr=!0):F(dr?_.Multiple_consecutive_numeric_separators_are_not_permitted:_.Numeric_separators_are_not_allowed_here,d,1),d++;continue}if(En=!0,!cI(Cr)||Cr-48>=gn)break;Ht+=f[d],d++,dr=!1}return f.charCodeAt(d-1)===95&&F(_.Numeric_separators_are_not_allowed_here,d-1,1),Ht}function ke(){if(f.charCodeAt(d)===110)return x+=\"n\",A&384&&(x=aL(x)+\"n\"),d++,9;{let gn=A&128?parseInt(x.slice(2),2):A&256?parseInt(x.slice(2),8):+x;return x=\"\"+gn,8}}function Pe(){m=d,A=0;let gn=!1;for(;;){if(v=d,d>=g)return S=1;let Ht=Dg(f,d);if(Ht===35&&d===0&&gj(f,d)){if(d=yj(f,d),t)continue;return S=6}switch(Ht){case 10:case 13:if(A|=1,t){d++;continue}else return Ht===13&&d+1<g&&f.charCodeAt(d+1)===10?d+=2:d++,S=4;case 9:case 11:case 12:case 32:case 160:case 5760:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8203:case 8239:case 8287:case 12288:case 65279:if(t){d++;continue}else{for(;d<g&&Yp(f.charCodeAt(d));)d++;return S=5}case 33:return f.charCodeAt(d+1)===61?f.charCodeAt(d+2)===61?(d+=3,S=37):(d+=2,S=35):(d++,S=53);case 34:case 39:return x=fe(),S=10;case 96:return S=Z(!1);case 37:return f.charCodeAt(d+1)===61?(d+=2,S=69):(d++,S=44);case 38:return f.charCodeAt(d+1)===38?f.charCodeAt(d+2)===61?(d+=3,S=76):(d+=2,S=55):f.charCodeAt(d+1)===61?(d+=2,S=73):(d++,S=50);case 40:return d++,S=20;case 41:return d++,S=21;case 42:if(f.charCodeAt(d+1)===61)return d+=2,S=66;if(f.charCodeAt(d+1)===42)return f.charCodeAt(d+2)===61?(d+=3,S=67):(d+=2,S=42);if(d++,C&&!gn&&A&1){gn=!0;continue}return S=41;case 43:return f.charCodeAt(d+1)===43?(d+=2,S=45):f.charCodeAt(d+1)===61?(d+=2,S=64):(d++,S=39);case 44:return d++,S=27;case 45:return f.charCodeAt(d+1)===45?(d+=2,S=46):f.charCodeAt(d+1)===61?(d+=2,S=65):(d++,S=40);case 46:return cI(f.charCodeAt(d+1))?(x=q().value,S=8):f.charCodeAt(d+1)===46&&f.charCodeAt(d+2)===46?(d+=3,S=25):(d++,S=24);case 47:if(f.charCodeAt(d+1)===47){for(d+=2;d<g&&!Wl(f.charCodeAt(d));)d++;if(w=Ye(w,f.slice(v,d),Ioe,v),t)continue;return S=2}if(f.charCodeAt(d+1)===42){d+=2,f.charCodeAt(d)===42&&f.charCodeAt(d+1)!==47&&(A|=2);let Tt=!1,ve=v;for(;d<g;){let nt=f.charCodeAt(d);if(nt===42&&f.charCodeAt(d+1)===47){d+=2,Tt=!0;break}d++,Wl(nt)&&(ve=d,A|=1)}if(w=Ye(w,f.slice(ve,d),Loe,ve),Tt||F(_.Asterisk_Slash_expected),t)continue;return Tt||(A|=4),S=3}return f.charCodeAt(d+1)===61?(d+=2,S=68):(d++,S=43);case 48:if(d+2<g&&(f.charCodeAt(d+1)===88||f.charCodeAt(d+1)===120))return d+=2,x=ie(1,!0),x||(F(_.Hexadecimal_digit_expected),x=\"0\"),x=\"0x\"+x,A|=64,S=ke();if(d+2<g&&(f.charCodeAt(d+1)===66||f.charCodeAt(d+1)===98))return d+=2,x=we(2),x||(F(_.Binary_digit_expected),x=\"0\"),x=\"0b\"+x,A|=128,S=ke();if(d+2<g&&(f.charCodeAt(d+1)===79||f.charCodeAt(d+1)===111))return d+=2,x=we(8),x||(F(_.Octal_digit_expected),x=\"0\"),x=\"0o\"+x,A|=256,S=ke();if(d+1<g&&hj(f.charCodeAt(d+1)))return x=\"\"+Y(),A|=32,S=8;case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return{type:S,value:x}=q(),S;case 58:return d++,S=58;case 59:return d++,S=26;case 60:if(vA(f,d)){if(d=lI(f,d,F),t)continue;return S=7}return f.charCodeAt(d+1)===60?f.charCodeAt(d+2)===61?(d+=3,S=70):(d+=2,S=47):f.charCodeAt(d+1)===61?(d+=2,S=32):r===1&&f.charCodeAt(d+1)===47&&f.charCodeAt(d+2)!==42?(d+=2,S=30):(d++,S=29);case 61:if(vA(f,d)){if(d=lI(f,d,F),t)continue;return S=7}return f.charCodeAt(d+1)===61?f.charCodeAt(d+2)===61?(d+=3,S=36):(d+=2,S=34):f.charCodeAt(d+1)===62?(d+=2,S=38):(d++,S=63);case 62:if(vA(f,d)){if(d=lI(f,d,F),t)continue;return S=7}return d++,S=31;case 63:return f.charCodeAt(d+1)===46&&!cI(f.charCodeAt(d+2))?(d+=2,S=28):f.charCodeAt(d+1)===63?f.charCodeAt(d+2)===61?(d+=3,S=77):(d+=2,S=60):(d++,S=57);case 91:return d++,S=22;case 93:return d++,S=23;case 94:return f.charCodeAt(d+1)===61?(d+=2,S=78):(d++,S=52);case 123:return d++,S=18;case 124:if(vA(f,d)){if(d=lI(f,d,F),t)continue;return S=7}return f.charCodeAt(d+1)===124?f.charCodeAt(d+2)===61?(d+=3,S=75):(d+=2,S=56):f.charCodeAt(d+1)===61?(d+=2,S=74):(d++,S=51);case 125:return d++,S=19;case 126:return d++,S=54;case 64:return d++,S=59;case 92:let En=ge();if(En>=0&&Pm(En,e))return d+=3,A|=8,x=le()+X(),S=Ve();let dr=_e();return dr>=0&&Pm(dr,e)?(d+=6,A|=1024,x=String.fromCharCode(dr)+X(),S=Ve()):(F(_.Invalid_character),d++,S=0);case 35:if(d!==0&&f[d+1]===\"!\")return F(_.can_only_be_used_at_the_start_of_a_file),d++,S=0;let Cr=Dg(f,d+1);if(Cr===92){d++;let Tt=ge();if(Tt>=0&&Pm(Tt,e))return d+=3,A|=8,x=\"#\"+le()+X(),S=80;let ve=_e();if(ve>=0&&Pm(ve,e))return d+=6,A|=1024,x=\"#\"+String.fromCharCode(ve)+X(),S=80;d--}return Pm(Cr,e)?(d++,Ie(Cr,e)):(x=\"#\",F(_.Invalid_character,d++,By(Ht))),S=80;default:let Se=Ie(Ht,e);if(Se)return S=Se;if(Yp(Ht)){d+=By(Ht);continue}else if(Wl(Ht)){A|=1,d+=By(Ht);continue}let at=By(Ht);return F(_.Invalid_character,d,at),d+=at,S=0}}}function Ce(){L.assert(S===0,\"'reScanInvalidIdentifier' should only be called when the current token is 'SyntaxKind.Unknown'.\"),d=v=m,A=0;let gn=Dg(f,d),Ht=Ie(gn,99);return Ht?S=Ht:(d+=By(gn),S)}function Ie(gn,Ht){let En=gn;if(Pm(En,Ht)){for(d+=By(En);d<g&&tb(En=Dg(f,d),Ht);)d+=By(En);return x=f.substring(v,d),En===92&&(x+=X()),Ve()}}function Be(){if(S===31){if(f.charCodeAt(d)===62)return f.charCodeAt(d+1)===62?f.charCodeAt(d+2)===61?(d+=3,S=72):(d+=2,S=49):f.charCodeAt(d+1)===61?(d+=2,S=71):(d++,S=48);if(f.charCodeAt(d)===61)return d++,S=33}return S}function Ne(){return L.assert(S===66,\"'reScanAsteriskEqualsToken' should only be called on a '*='\"),d=v+1,S=63}function Le(){if(S===43||S===68){let gn=v+1,Ht=!1,En=!1;for(;;){if(gn>=g){A|=4,F(_.Unterminated_regular_expression_literal);break}let dr=f.charCodeAt(gn);if(Wl(dr)){A|=4,F(_.Unterminated_regular_expression_literal);break}if(Ht)Ht=!1;else if(dr===47&&!En){gn++;break}else dr===91?En=!0:dr===92?Ht=!0:dr===93&&(En=!1);gn++}for(;gn<g&&tb(f.charCodeAt(gn),e);)gn++;d=gn,x=f.substring(v,d),S=13}return S}function Ye(gn,Ht,En,dr){let Cr=_t(eI(Ht),En);return Cr===void 0?gn:Sn(gn,{range:{pos:dr,end:d},type:Cr})}function _t(gn,Ht){let En=Ht.exec(gn);if(!!En)switch(En[1]){case\"ts-expect-error\":return 0;case\"ts-ignore\":return 1}}function ct(gn){return L.assert(S===19,\"'reScanTemplateToken' should only be called on a '}'\"),d=v,S=Z(gn)}function Rt(){return d=v,S=Z(!0)}function We(gn=!0){return d=v=m,S=tn(gn)}function qe(){return S===47?(d=v+1,S=29):S}function zt(){return S===80?(d=v+1,S=62):S}function Qt(){return L.assert(S===60,\"'reScanQuestionToken' should only be called on a '??'\"),d=v+1,S=57}function tn(gn=!0){if(m=v=d,d>=g)return S=1;let Ht=f.charCodeAt(d);if(Ht===60)return f.charCodeAt(d+1)===47?(d+=2,S=30):(d++,S=29);if(Ht===123)return d++,S=18;let En=0;for(;d<g&&(Ht=f.charCodeAt(d),Ht!==123);){if(Ht===60){if(vA(f,d))return d=lI(f,d,F),S=7;break}if(Ht===62&&F(_.Unexpected_token_Did_you_mean_or_gt,d,1),Ht===125&&F(_.Unexpected_token_Did_you_mean_or_rbrace,d,1),Wl(Ht)&&En===0)En=-1;else{if(!gn&&Wl(Ht)&&En>0)break;xh(Ht)||(En=d)}d++}return x=f.substring(m,d),En===-1?12:11}function kn(){if(Su(S)){let gn=!1;for(;d<g;){let Ht=f.charCodeAt(d);if(Ht===45){x+=\"-\",d++;continue}else if(Ht===58&&!gn){x+=\":\",d++,gn=!0,S=79;continue}let En=d;if(x+=X(),d===En)break}return x.slice(-1)===\":\"&&(x=x.slice(0,-1),d--),Ve()}return S}function _n(){switch(m=d,f.charCodeAt(d)){case 34:case 39:return x=fe(!0),S=10;default:return Pe()}}function Gt(){return d=v=m,_n()}function $n(){if(m=v=d,A=0,d>=g)return S=1;let gn=Dg(f,d);switch(d+=By(gn),gn){case 9:case 11:case 12:case 32:for(;d<g&&Yp(f.charCodeAt(d));)d++;return S=5;case 64:return S=59;case 13:f.charCodeAt(d)===10&&d++;case 10:return A|=1,S=4;case 42:return S=41;case 123:return S=18;case 125:return S=19;case 91:return S=22;case 93:return S=23;case 60:return S=29;case 62:return S=31;case 61:return S=63;case 44:return S=27;case 46:return S=24;case 96:return S=61;case 35:return S=62;case 92:d--;let Ht=ge();if(Ht>=0&&Pm(Ht,e))return d+=3,A|=8,x=le()+X(),S=Ve();let En=_e();return En>=0&&Pm(En,e)?(d+=6,A|=1024,x=String.fromCharCode(En)+X(),S=Ve()):(d++,S=0)}if(Pm(gn,e)){let Ht=gn;for(;d<g&&tb(Ht=Dg(f,d),e)||f.charCodeAt(d)===45;)d+=By(Ht);return x=f.substring(v,d),Ht===92&&(x+=X()),S=Ve()}else return S=0}function ui(gn,Ht){let En=d,dr=m,Cr=v,Se=S,at=x,Tt=A,ve=gn();return(!ve||Ht)&&(d=En,m=dr,v=Cr,S=Se,x=at,A=Tt),ve}function Ni(gn,Ht,En){let dr=g,Cr=d,Se=m,at=v,Tt=S,ve=x,nt=A,ce=w;Dt(f,gn,Ht);let $=En();return g=dr,d=Cr,m=Se,v=at,S=Tt,x=ve,A=nt,w=ce,$}function Pi(gn){return ui(gn,!0)}function gr(gn){return ui(gn,!1)}function pt(){return f}function nn(){w=void 0}function Dt(gn,Ht,En){f=gn||\"\",g=En===void 0?f.length:Ht+En,hi(Ht||0)}function pn(gn){o=gn}function An(gn){e=gn}function Kn(gn){r=gn}function hi(gn){L.assert(gn>=0),d=gn,m=gn,v=gn,S=0,x=void 0,A=0}function ri(gn){C+=gn?1:-1}}function By(e){return e>=65536?2:1}function NDe(e){if(L.assert(0<=e&&e<=1114111),e<=65535)return String.fromCharCode(e);let t=Math.floor((e-65536)/1024)+55296,r=(e-65536)%1024+56320;return String.fromCharCode(t,r)}function uI(e){return Doe(e)}var Tw,boe,vj,Eoe,Toe,Soe,xoe,Aoe,Coe,Ioe,Loe,koe,Sw,q8,Dg,Doe,PDe=gt({\"src/compiler/scanner.ts\"(){\"use strict\";fa(),Tw={abstract:126,accessor:127,any:131,as:128,asserts:129,assert:130,bigint:160,boolean:134,break:81,case:82,catch:83,class:84,continue:86,const:85,constructor:135,debugger:87,declare:136,default:88,delete:89,do:90,else:91,enum:92,export:93,extends:94,false:95,finally:96,for:97,from:158,function:98,get:137,if:99,implements:117,import:100,in:101,infer:138,instanceof:102,interface:118,intrinsic:139,is:140,keyof:141,let:119,module:142,namespace:143,never:144,new:103,null:104,number:148,object:149,package:120,private:121,protected:122,public:123,override:161,out:145,readonly:146,require:147,global:159,return:105,satisfies:150,set:151,static:124,string:152,super:106,switch:107,symbol:153,this:108,throw:109,true:110,try:111,type:154,typeof:112,undefined:155,unique:156,unknown:157,var:113,void:114,while:115,with:116,yield:125,async:132,await:133,of:162},boe=new Map(Object.entries(Tw)),vj=new Map(Object.entries({...Tw,\"{\":18,\"}\":19,\"(\":20,\")\":21,\"[\":22,\"]\":23,\".\":24,\"...\":25,\";\":26,\",\":27,\"<\":29,\">\":31,\"<=\":32,\">=\":33,\"==\":34,\"!=\":35,\"===\":36,\"!==\":37,\"=>\":38,\"+\":39,\"-\":40,\"**\":42,\"*\":41,\"/\":43,\"%\":44,\"++\":45,\"--\":46,\"<<\":47,\"</\":30,\">>\":48,\">>>\":49,\"&\":50,\"|\":51,\"^\":52,\"!\":53,\"~\":54,\"&&\":55,\"||\":56,\"?\":57,\"??\":60,\"?.\":28,\":\":58,\"=\":63,\"+=\":64,\"-=\":65,\"*=\":66,\"**=\":67,\"/=\":68,\"%=\":69,\"<<=\":70,\">>=\":71,\">>>=\":72,\"&=\":73,\"|=\":74,\"^=\":78,\"||=\":75,\"&&=\":76,\"??=\":77,\"@\":59,\"#\":62,\"`\":61})),Eoe=[170,170,181,181,186,186,192,214,216,246,248,543,546,563,592,685,688,696,699,705,720,721,736,740,750,750,890,890,902,902,904,906,908,908,910,929,931,974,976,983,986,1011,1024,1153,1164,1220,1223,1224,1227,1228,1232,1269,1272,1273,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1569,1594,1600,1610,1649,1747,1749,1749,1765,1766,1786,1788,1808,1808,1810,1836,1920,1957,2309,2361,2365,2365,2384,2384,2392,2401,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2699,2701,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2784,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2870,2873,2877,2877,2908,2909,2911,2913,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,2997,2999,3001,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3294,3294,3296,3297,3333,3340,3342,3344,3346,3368,3370,3385,3424,3425,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3805,3840,3840,3904,3911,3913,3946,3976,3979,4096,4129,4131,4135,4137,4138,4176,4181,4256,4293,4304,4342,4352,4441,4447,4514,4520,4601,4608,4614,4616,4678,4680,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4742,4744,4744,4746,4749,4752,4782,4784,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4814,4816,4822,4824,4846,4848,4878,4880,4880,4882,4885,4888,4894,4896,4934,4936,4954,5024,5108,5121,5740,5743,5750,5761,5786,5792,5866,6016,6067,6176,6263,6272,6312,7680,7835,7840,7929,7936,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8319,8319,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8497,8499,8505,8544,8579,12293,12295,12321,12329,12337,12341,12344,12346,12353,12436,12445,12446,12449,12538,12540,12542,12549,12588,12593,12686,12704,12727,13312,19893,19968,40869,40960,42124,44032,55203,63744,64045,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65138,65140,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],Toe=[170,170,181,181,186,186,192,214,216,246,248,543,546,563,592,685,688,696,699,705,720,721,736,740,750,750,768,846,864,866,890,890,902,902,904,906,908,908,910,929,931,974,976,983,986,1011,1024,1153,1155,1158,1164,1220,1223,1224,1227,1228,1232,1269,1272,1273,1329,1366,1369,1369,1377,1415,1425,1441,1443,1465,1467,1469,1471,1471,1473,1474,1476,1476,1488,1514,1520,1522,1569,1594,1600,1621,1632,1641,1648,1747,1749,1756,1759,1768,1770,1773,1776,1788,1808,1836,1840,1866,1920,1968,2305,2307,2309,2361,2364,2381,2384,2388,2392,2403,2406,2415,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2492,2494,2500,2503,2504,2507,2509,2519,2519,2524,2525,2527,2531,2534,2545,2562,2562,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2649,2652,2654,2654,2662,2676,2689,2691,2693,2699,2701,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2784,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2870,2873,2876,2883,2887,2888,2891,2893,2902,2903,2908,2909,2911,2913,2918,2927,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,2997,2999,3001,3006,3010,3014,3016,3018,3021,3031,3031,3047,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3134,3140,3142,3144,3146,3149,3157,3158,3168,3169,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3262,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3297,3302,3311,3330,3331,3333,3340,3342,3344,3346,3368,3370,3385,3390,3395,3398,3400,3402,3405,3415,3415,3424,3425,3430,3439,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3805,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3946,3953,3972,3974,3979,3984,3991,3993,4028,4038,4038,4096,4129,4131,4135,4137,4138,4140,4146,4150,4153,4160,4169,4176,4185,4256,4293,4304,4342,4352,4441,4447,4514,4520,4601,4608,4614,4616,4678,4680,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4742,4744,4744,4746,4749,4752,4782,4784,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4814,4816,4822,4824,4846,4848,4878,4880,4880,4882,4885,4888,4894,4896,4934,4936,4954,4969,4977,5024,5108,5121,5740,5743,5750,5761,5786,5792,5866,6016,6099,6112,6121,6160,6169,6176,6263,6272,6313,7680,7835,7840,7929,7936,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8255,8256,8319,8319,8400,8412,8417,8417,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8497,8499,8505,8544,8579,12293,12295,12321,12335,12337,12341,12344,12346,12353,12436,12441,12442,12445,12446,12449,12542,12549,12588,12593,12686,12704,12727,13312,19893,19968,40869,40960,42124,44032,55203,63744,64045,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65056,65059,65075,65076,65101,65103,65136,65138,65140,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65381,65470,65474,65479,65482,65487,65490,65495,65498,65500],Soe=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],xoe=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],Aoe=[65,90,97,122,170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2144,2154,2208,2228,2230,2237,2308,2361,2365,2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133,3160,3162,3168,3169,3200,3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6264,6272,6312,6314,6314,6320,6389,6400,6430,6480,6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7296,7304,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8472,8477,8484,8484,8486,8486,8488,8488,8490,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12443,12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12730,12784,12799,13312,19893,19968,40943,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42653,42656,42735,42775,42783,42786,42888,42891,42943,42946,42950,42999,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43261,43262,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43488,43492,43494,43503,43514,43518,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43646,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43879,43888,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66176,66204,66208,66256,66304,66335,66349,66378,66384,66421,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66736,66771,66776,66811,66816,66855,66864,66915,67072,67382,67392,67413,67424,67431,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68096,68112,68115,68117,68119,68121,68149,68192,68220,68224,68252,68288,68295,68297,68324,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68899,69376,69404,69415,69415,69424,69445,69600,69622,69635,69687,69763,69807,69840,69864,69891,69926,69956,69956,69968,70002,70006,70006,70019,70066,70081,70084,70106,70106,70108,70108,70144,70161,70163,70187,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708,70727,70730,70751,70751,70784,70831,70852,70853,70855,70855,71040,71086,71128,71131,71168,71215,71236,71236,71296,71338,71352,71352,71424,71450,71680,71723,71840,71903,71935,71935,72096,72103,72106,72144,72161,72161,72163,72163,72192,72192,72203,72242,72250,72250,72272,72272,72284,72329,72349,72349,72384,72440,72704,72712,72714,72750,72768,72768,72818,72847,72960,72966,72968,72969,72971,73008,73030,73030,73056,73061,73063,73064,73066,73097,73112,73112,73440,73458,73728,74649,74752,74862,74880,75075,77824,78894,82944,83526,92160,92728,92736,92766,92880,92909,92928,92975,92992,92995,93027,93047,93053,93071,93760,93823,93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208,100343,100352,101106,110592,110878,110928,110930,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,123136,123180,123191,123197,123214,123214,123584,123627,124928,125124,125184,125251,125259,125259,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,173782,173824,177972,177984,178205,178208,183969,183984,191456,194560,195101],Coe=[48,57,65,90,95,95,97,122,170,170,181,181,183,183,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,895,895,902,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1327,1329,1366,1369,1369,1376,1416,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1519,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2045,2045,2048,2093,2112,2139,2144,2154,2208,2228,2230,2237,2259,2273,2275,2403,2406,2415,2417,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2556,2556,2558,2558,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2809,2815,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3072,3084,3086,3088,3090,3112,3114,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3162,3168,3171,3174,3183,3200,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3328,3331,3333,3340,3342,3344,3346,3396,3398,3400,3402,3406,3412,3415,3423,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3558,3567,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4969,4977,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6264,6272,6314,6320,6389,6400,6430,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6618,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6832,6845,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7296,7304,7312,7354,7357,7359,7376,7378,7380,7418,7424,7673,7675,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8472,8477,8484,8484,8486,8486,8488,8488,8490,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12730,12784,12799,13312,19893,19968,40943,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42737,42775,42783,42786,42888,42891,42943,42946,42950,42999,43047,43072,43123,43136,43205,43216,43225,43232,43255,43259,43259,43261,43309,43312,43347,43360,43388,43392,43456,43471,43481,43488,43518,43520,43574,43584,43597,43600,43609,43616,43638,43642,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43879,43888,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65071,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66045,66045,66176,66204,66208,66256,66272,66272,66304,66335,66349,66378,66384,66426,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66720,66729,66736,66771,66776,66811,66816,66855,66864,66915,67072,67382,67392,67413,67424,67431,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68099,68101,68102,68108,68115,68117,68119,68121,68149,68152,68154,68159,68159,68192,68220,68224,68252,68288,68295,68297,68326,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68903,68912,68921,69376,69404,69415,69415,69424,69456,69600,69622,69632,69702,69734,69743,69759,69818,69840,69864,69872,69881,69888,69940,69942,69951,69956,69958,69968,70003,70006,70006,70016,70084,70089,70092,70096,70106,70108,70108,70144,70161,70163,70199,70206,70206,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70378,70384,70393,70400,70403,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70459,70468,70471,70472,70475,70477,70480,70480,70487,70487,70493,70499,70502,70508,70512,70516,70656,70730,70736,70745,70750,70751,70784,70853,70855,70855,70864,70873,71040,71093,71096,71104,71128,71133,71168,71232,71236,71236,71248,71257,71296,71352,71360,71369,71424,71450,71453,71467,71472,71481,71680,71738,71840,71913,71935,71935,72096,72103,72106,72151,72154,72161,72163,72164,72192,72254,72263,72263,72272,72345,72349,72349,72384,72440,72704,72712,72714,72758,72760,72768,72784,72793,72818,72847,72850,72871,72873,72886,72960,72966,72968,72969,72971,73014,73018,73018,73020,73021,73023,73031,73040,73049,73056,73061,73063,73064,73066,73102,73104,73105,73107,73112,73120,73129,73440,73462,73728,74649,74752,74862,74880,75075,77824,78894,82944,83526,92160,92728,92736,92766,92768,92777,92880,92909,92912,92916,92928,92982,92992,92995,93008,93017,93027,93047,93053,93071,93760,93823,93952,94026,94031,94087,94095,94111,94176,94177,94179,94179,94208,100343,100352,101106,110592,110878,110928,110930,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,113821,113822,119141,119145,119149,119154,119163,119170,119173,119179,119210,119213,119362,119364,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,120782,120831,121344,121398,121403,121452,121461,121461,121476,121476,121499,121503,121505,121519,122880,122886,122888,122904,122907,122913,122915,122916,122918,122922,123136,123180,123184,123197,123200,123209,123214,123214,123584,123641,124928,125124,125136,125142,125184,125259,125264,125273,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,173782,173824,177972,177984,178205,178208,183969,183984,191456,194560,195101,917760,917999],Ioe=/^\\/\\/\\/?\\s*@(ts-expect-error|ts-ignore)/,Loe=/^(?:\\/|\\*)*\\s*@(ts-expect-error|ts-ignore)/,koe=RDe(vj),Sw=7,q8=/^#!.*/,Dg=String.prototype.codePointAt?(e,t)=>e.codePointAt(t):function(t,r){let i=t.length;if(r<0||r>=i)return;let o=t.charCodeAt(r);if(o>=55296&&o<=56319&&i>r+1){let s=t.charCodeAt(r+1);if(s>=56320&&s<=57343)return(o-55296)*1024+s-56320+65536}return o},Doe=String.fromCodePoint?e=>String.fromCodePoint(e):NDe}});function fl(e){return zd(e)||qp(e)}function bA(e){return WD(e,eL)}function X8(e){switch(Do(e)){case 99:return\"lib.esnext.full.d.ts\";case 9:return\"lib.es2022.full.d.ts\";case 8:return\"lib.es2021.full.d.ts\";case 7:return\"lib.es2020.full.d.ts\";case 6:return\"lib.es2019.full.d.ts\";case 5:return\"lib.es2018.full.d.ts\";case 4:return\"lib.es2017.full.d.ts\";case 3:return\"lib.es2016.full.d.ts\";case 2:return\"lib.es6.d.ts\";default:return\"lib.d.ts\"}}function wl(e){return e.start+e.length}function woe(e){return e.length===0}function bj(e,t){return t>=e.start&&t<wl(e)}function Y8(e,t){return t>=e.pos&&t<=e.end}function Roe(e,t){return t.start>=e.start&&wl(t)<=wl(e)}function MDe(e,t){return Ooe(e,t)!==void 0}function Ooe(e,t){let r=Poe(e,t);return r&&r.length===0?void 0:r}function FDe(e,t){return Q8(e.start,e.length,t.start,t.length)}function $8(e,t,r){return Q8(e.start,e.length,t,r)}function Q8(e,t,r,i){let o=e+t,s=r+i;return r<=o&&s>=e}function Noe(e,t){return t<=wl(e)&&t>=e.start}function Poe(e,t){let r=Math.max(e.start,t.start),i=Math.min(wl(e),wl(t));return r<=i?Wc(r,i):void 0}function il(e,t){if(e<0)throw new Error(\"start < 0\");if(t<0)throw new Error(\"length < 0\");return{start:e,length:t}}function Wc(e,t){return il(e,t-e)}function dI(e){return il(e.span.start,e.newLength)}function Moe(e){return woe(e.span)&&e.newLength===0}function xw(e,t){if(t<0)throw new Error(\"newLength < 0\");return{span:e,newLength:t}}function GDe(e){if(e.length===0)return $j;if(e.length===1)return e[0];let t=e[0],r=t.span.start,i=wl(t.span),o=r+t.newLength;for(let s=1;s<e.length;s++){let l=e[s],f=r,d=i,g=o,m=l.span.start,v=wl(l.span),S=m+l.newLength;r=Math.min(f,m),i=Math.max(d,d+(v-g)),o=Math.max(S,S+(g-v))}return xw(Wc(r,i),o-r)}function BDe(e){if(e&&e.kind===165){for(let t=e;t;t=t.parent)if(Ia(t)||Yr(t)||t.kind===261)return t}}function Ad(e,t){return ha(e)&&Mr(e,16476)&&t.kind===173}function Foe(e){return La(e)?Ji(e.elements,Goe):!1}function Goe(e){return ol(e)?!0:Foe(e.name)}function EA(e){let t=e.parent;for(;Wo(t.parent);)t=t.parent.parent;return t.parent}function Ej(e,t){Wo(e)&&(e=EA(e));let r=t(e);return e.kind===257&&(e=e.parent),e&&e.kind===258&&(r|=t(e),e=e.parent),e&&e.kind===240&&(r|=t(e)),r}function wg(e){return Ej(e,uu)}function Tj(e){return Ej(e,Jce)}function F_(e){return Ej(e,t=>t.flags)}function UDe(e,t,r){let i=e.toLowerCase(),o=/^([a-z]+)([_\\-]([a-z]+))?$/.exec(i);if(!o){r&&r.push(ps(_.Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1,\"en\",\"ja-jp\"));return}let s=o[1],l=o[3];ya(Qj,i)&&!f(s,l,r)&&f(s,void 0,r),Aae(e);function f(d,g,m){let v=So(t.getExecutingFilePath()),S=ni(v),x=vi(S,d);if(g&&(x=x+\"-\"+g),x=t.resolvePath(vi(x,\"diagnosticMessages.generated.json\")),!t.fileExists(x))return!1;let A=\"\";try{A=t.readFile(x)}catch{return m&&m.push(ps(_.Unable_to_open_file_0,x)),!1}try{ple(JSON.parse(A))}catch{return m&&m.push(ps(_.Corrupted_locale_file_0,x)),!1}return!0}}function ec(e,t){if(e)for(;e.original!==void 0;)e=e.original;return!e||!t||t(e)?e:void 0}function jn(e,t){for(;e;){let r=t(e);if(r===\"quit\")return;if(r)return e;e=e.parent}}function fI(e){return(e.flags&8)===0}function ea(e,t){if(e===void 0||fI(e))return e;for(e=e.original;e;){if(fI(e))return!t||t(e)?e:void 0;e=e.original}}function Bs(e){return e.length>=2&&e.charCodeAt(0)===95&&e.charCodeAt(1)===95?\"_\"+e:e}function Gi(e){let t=e;return t.length>=3&&t.charCodeAt(0)===95&&t.charCodeAt(1)===95&&t.charCodeAt(2)===95?t.substr(1):t}function vr(e){return Gi(e.escapedText)}function nb(e){let t=uT(e.escapedText);return t?zr(t,Xu):void 0}function fc(e){return e.valueDeclaration&&xu(e.valueDeclaration)?vr(e.valueDeclaration.name):Gi(e.escapedName)}function Boe(e){let t=e.parent.parent;if(!!t){if(Kl(t))return Z8(t);switch(t.kind){case 240:if(t.declarationList&&t.declarationList.declarations[0])return Z8(t.declarationList.declarations[0]);break;case 241:let r=t.expression;switch(r.kind===223&&r.operatorToken.kind===63&&(r=r.left),r.kind){case 208:return r.name;case 209:let i=r.argumentExpression;if(Re(i))return i}break;case 214:return Z8(t.expression);case 253:{if(Kl(t.statement)||ot(t.statement))return Z8(t.statement);break}}}}function Z8(e){let t=sa(e);return t&&Re(t)?t:void 0}function Aw(e,t){return!!(zl(e)&&Re(e.name)&&vr(e.name)===vr(t)||Bc(e)&&vt(e.declarationList.declarations,r=>Aw(r,t)))}function Uoe(e){return e.name||Boe(e)}function zl(e){return!!e.name}function Sj(e){switch(e.kind){case 79:return e;case 351:case 344:{let{name:r}=e;if(r.kind===163)return r.right;break}case 210:case 223:{let r=e;switch(ic(r)){case 1:case 4:case 5:case 3:return W6(r.left);case 7:case 8:case 9:return r.arguments[1];default:return}}case 349:return Uoe(e);case 343:return Boe(e);case 274:{let{expression:r}=e;return Re(r)?r:void 0}case 209:let t=e;if(H6(t))return t.argumentExpression}return e.name}function sa(e){if(e!==void 0)return Sj(e)||(ms(e)||xs(e)||_u(e)?xj(e):void 0)}function xj(e){if(e.parent){if(yl(e.parent)||Wo(e.parent))return e.parent.name;if(ar(e.parent)&&e===e.parent.right){if(Re(e.parent.left))return e.parent.left;if(Us(e.parent.left))return W6(e.parent.left)}else if(wi(e.parent)&&Re(e.parent.name))return e.parent.name}else return}function Uy(e){if(vf(e))return Pr(e.modifiers,du)}function dT(e){if(Mr(e,126975))return Pr(e.modifiers,Ha)}function Voe(e,t){if(e.name)if(Re(e.name)){let r=e.name.escapedText;return pI(e.parent,t).filter(i=>xp(i)&&Re(i.name)&&i.name.escapedText===r)}else{let r=e.parent.parameters.indexOf(e);L.assert(r>-1,\"Parameters should always be in their parents' parameter list\");let i=pI(e.parent,t).filter(xp);if(r<i.length)return[i[r]]}return Je}function _I(e){return Voe(e,!1)}function joe(e){return Voe(e,!0)}function Hoe(e,t){let r=e.name.escapedText;return pI(e.parent,t).filter(i=>j_(i)&&i.typeParameters.some(o=>o.name.escapedText===r))}function Woe(e){return Hoe(e,!1)}function zoe(e){return Hoe(e,!0)}function Joe(e){return!!hf(e,xp)}function Koe(e){return hf(e,A2)}function qoe(e){return kj(e,qz)}function Aj(e){return hf(e,Xue)}function VDe(e){return hf(e,jz)}function Xoe(e){return hf(e,jz,!0)}function jDe(e){return hf(e,Hz)}function Yoe(e){return hf(e,Hz,!0)}function HDe(e){return hf(e,Wz)}function $oe(e){return hf(e,Wz,!0)}function WDe(e){return hf(e,zz)}function Qoe(e){return hf(e,zz,!0)}function Zoe(e){return hf(e,g3,!0)}function Cj(e){return hf(e,Jz)}function ese(e){return hf(e,Jz,!0)}function Ij(e){return hf(e,bO)}function e6(e){return hf(e,Yue)}function tse(e){return hf(e,y3)}function zDe(e){return hf(e,j_)}function Lj(e){return hf(e,v3)}function x0(e){let t=hf(e,wL);if(t&&t.typeExpression&&t.typeExpression.type)return t}function Vy(e){let t=hf(e,wL);return!t&&ha(e)&&(t=wr(_I(e),r=>!!r.typeExpression)),t&&t.typeExpression&&t.typeExpression.type}function Cw(e){let t=tse(e);if(t&&t.typeExpression)return t.typeExpression.type;let r=x0(e);if(r&&r.typeExpression){let i=r.typeExpression.type;if(Rd(i)){let o=wr(i.members,p2);return o&&o.type}if(Jm(i)||x2(i))return i.type}}function pI(e,t){var r,i;if(!uR(e))return Je;let o=(r=e.jsDoc)==null?void 0:r.jsDocCache;if(o===void 0||t){let s=PH(e,t);L.assert(s.length<2||s[0]!==s[1]),o=Uo(s,l=>dm(l)?l.tags:l),t||((i=e.jsDoc)!=null||(e.jsDoc=[]),e.jsDoc.jsDocCache=o)}return o}function A0(e){return pI(e,!1)}function JDe(e){return pI(e,!0)}function hf(e,t,r){return wr(pI(e,r),t)}function kj(e,t){return A0(e).filter(t)}function KDe(e,t){return A0(e).filter(r=>r.kind===t)}function Iw(e){return typeof e==\"string\"?e:e?.map(t=>t.kind===324?t.text:qDe(t)).join(\"\")}function qDe(e){let t=e.kind===327?\"link\":e.kind===328?\"linkcode\":\"linkplain\",r=e.name?Kd(e.name):\"\",i=e.name&&e.text.startsWith(\"://\")?\"\":\" \";return`{@${t} ${r}${i}${e.text}}`}function jy(e){if(X0(e)){if(DL(e.parent)){let t=NI(e.parent);if(t&&Fn(t.tags))return Uo(t.tags,r=>j_(r)?r.typeParameters:void 0)}return Je}if(Mf(e))return L.assert(e.parent.kind===323),Uo(e.parent.tags,t=>j_(t)?t.typeParameters:void 0);if(e.typeParameters||sde(e)&&e.typeParameters)return e.typeParameters;if(Yn(e)){let t=t4(e);if(t.length)return t;let r=Vy(e);if(r&&Jm(r)&&r.typeParameters)return r.typeParameters}return Je}function TA(e){return e.constraint?e.constraint:j_(e.parent)&&e===e.parent.typeParameters[0]?e.parent.constraint:void 0}function Ah(e){return e.kind===79||e.kind===80}function t6(e){return e.kind===175||e.kind===174}function n6(e){return br(e)&&!!(e.flags&32)}function Dj(e){return Vs(e)&&!!(e.flags&32)}function fT(e){return Pa(e)&&!!(e.flags&32)}function Jl(e){let t=e.kind;return!!(e.flags&32)&&(t===208||t===209||t===210||t===232)}function mI(e){return Jl(e)&&!MS(e)&&!!e.questionDotToken}function r6(e){return mI(e.parent)&&e.parent.expression===e}function hI(e){return!Jl(e.parent)||mI(e.parent)||e!==e.parent.expression}function wj(e){return e.kind===223&&e.operatorToken.kind===60}function Ch(e){return p_(e)&&Re(e.typeName)&&e.typeName.escapedText===\"const\"&&!e.typeArguments}function i_(e){return ql(e,8)}function i6(e){return MS(e)&&!!(e.flags&32)}function gI(e){return e.kind===249||e.kind===248}function Rj(e){return e.kind===277||e.kind===276}function nse(e){switch(e.kind){case 305:case 306:return!0;default:return!1}}function Oj(e){return nse(e)||e.kind===303||e.kind===307}function a6(e){return e.kind===351||e.kind===344}function XDe(e){return Lw(e.kind)}function Lw(e){return e>=163}function Nj(e){return e>=0&&e<=162}function eS(e){return Nj(e.kind)}function C0(e){return fs(e,\"pos\")&&fs(e,\"end\")}function yI(e){return 8<=e&&e<=14}function _T(e){return yI(e.kind)}function Pj(e){switch(e.kind){case 207:case 206:case 13:case 215:case 228:return!0}return!1}function Hy(e){return 14<=e&&e<=17}function rse(e){return Hy(e.kind)}function o6(e){let t=e.kind;return t===16||t===17}function tS(e){return $u(e)||Mu(e)}function Mj(e){switch(e.kind){case 273:return e.isTypeOnly||e.parent.parent.isTypeOnly;case 271:return e.parent.isTypeOnly;case 270:case 268:return e.isTypeOnly}return!1}function ise(e){switch(e.kind){case 278:return e.isTypeOnly||e.parent.parent.isTypeOnly;case 275:return e.isTypeOnly&&!!e.moduleSpecifier&&!e.exportClause;case 277:return e.parent.isTypeOnly}return!1}function I0(e){return Mj(e)||ise(e)}function ase(e){return yo(e)||Re(e)}function Fj(e){return e.kind===10||Hy(e.kind)}function tc(e){var t;return Re(e)&&((t=e.emitNode)==null?void 0:t.autoGenerate)!==void 0}function nS(e){var t;return pi(e)&&((t=e.emitNode)==null?void 0:t.autoGenerate)!==void 0}function xu(e){return(Na(e)||AA(e))&&pi(e.name)}function SA(e){return br(e)&&pi(e.name)}function Rg(e){switch(e){case 126:case 127:case 132:case 85:case 136:case 88:case 93:case 101:case 123:case 121:case 122:case 146:case 124:case 145:case 161:return!0}return!1}function vI(e){return!!(yS(e)&16476)}function Gj(e){return vI(e)||e===124||e===161||e===127}function Ha(e){return Rg(e.kind)}function Cd(e){let t=e.kind;return t===163||t===79}function Ys(e){let t=e.kind;return t===79||t===80||t===10||t===8||t===164}function Mm(e){let t=e.kind;return t===79||t===203||t===204}function Ia(e){return!!e&&rS(e.kind)}function xA(e){return!!e&&(rS(e.kind)||oc(e))}function Ds(e){return e&&sse(e.kind)}function ose(e){return e.kind===110||e.kind===95}function sse(e){switch(e){case 259:case 171:case 173:case 174:case 175:case 215:case 216:return!0;default:return!1}}function rS(e){switch(e){case 170:case 176:case 326:case 177:case 178:case 181:case 320:case 182:return!0;default:return sse(e)}}function Bj(e){return Li(e)||Tp(e)||Va(e)&&Ia(e.parent)}function _l(e){let t=e.kind;return t===173||t===169||t===171||t===174||t===175||t===178||t===172||t===237}function Yr(e){return e&&(e.kind===260||e.kind===228)}function rb(e){return e&&(e.kind===174||e.kind===175)}function Id(e){return Na(e)&&rm(e)}function AA(e){switch(e.kind){case 171:case 174:case 175:return!0;default:return!1}}function cse(e){switch(e.kind){case 171:case 174:case 175:case 169:return!0;default:return!1}}function Ns(e){return Ha(e)||du(e)}function pT(e){let t=e.kind;return t===177||t===176||t===168||t===170||t===178||t===174||t===175}function s6(e){return pT(e)||_l(e)}function Og(e){let t=e.kind;return t===299||t===300||t===301||t===171||t===174||t===175}function bi(e){return vW(e.kind)}function lse(e){switch(e.kind){case 181:case 182:return!0}return!1}function La(e){if(e){let t=e.kind;return t===204||t===203}return!1}function bI(e){let t=e.kind;return t===206||t===207}function c6(e){let t=e.kind;return t===205||t===229}function kw(e){switch(e.kind){case 257:case 166:case 205:return!0}return!1}function use(e){return wi(e)||ha(e)||ww(e)||Rw(e)}function Dw(e){return Uj(e)||Vj(e)}function Uj(e){switch(e.kind){case 203:case 207:return!0}return!1}function ww(e){switch(e.kind){case 205:case 299:case 300:case 301:return!0}return!1}function Vj(e){switch(e.kind){case 204:case 206:return!0}return!1}function Rw(e){switch(e.kind){case 205:case 229:case 227:case 206:case 207:case 79:case 208:case 209:return!0}return Iu(e,!0)}function dse(e){let t=e.kind;return t===208||t===163||t===202}function fse(e){let t=e.kind;return t===208||t===163}function iS(e){switch(e.kind){case 283:case 282:case 210:case 211:case 212:case 167:return!0;default:return!1}}function Ih(e){return e.kind===210||e.kind===211}function CA(e){let t=e.kind;return t===225||t===14}function Ju(e){return _se(i_(e).kind)}function _se(e){switch(e){case 208:case 209:case 211:case 210:case 281:case 282:case 285:case 212:case 206:case 214:case 207:case 228:case 215:case 79:case 80:case 13:case 8:case 9:case 10:case 14:case 225:case 95:case 104:case 108:case 110:case 106:case 232:case 230:case 233:case 100:case 279:return!0;default:return!1}}function jj(e){return pse(i_(e).kind)}function pse(e){switch(e){case 221:case 222:case 217:case 218:case 219:case 220:case 213:return!0;default:return _se(e)}}function mse(e){switch(e.kind){case 222:return!0;case 221:return e.operator===45||e.operator===46;default:return!1}}function hse(e){switch(e.kind){case 104:case 110:case 95:case 221:return!0;default:return _T(e)}}function ot(e){return YDe(i_(e).kind)}function YDe(e){switch(e){case 224:case 226:case 216:case 223:case 227:case 231:case 229:case 357:case 356:case 235:return!0;default:return pse(e)}}function mT(e){let t=e.kind;return t===213||t===231}function $De(e){return Gz(e)||_3(e)}function Wy(e,t){switch(e.kind){case 245:case 246:case 247:case 243:case 244:return!0;case 253:return t&&Wy(e.statement,t)}return!1}function gse(e){return pc(e)||Il(e)}function yse(e){return vt(e,gse)}function l6(e){return!Vw(e)&&!pc(e)&&!Mr(e,1)&&!lu(e)}function Ow(e){return Vw(e)||pc(e)||Mr(e,1)}function IA(e){return e.kind===246||e.kind===247}function u6(e){return Va(e)||ot(e)}function Hj(e){return Va(e)}function pp(e){return pu(e)||ot(e)}function vse(e){let t=e.kind;return t===265||t===264||t===79}function QDe(e){let t=e.kind;return t===265||t===264}function ZDe(e){let t=e.kind;return t===79||t===264}function Wj(e){let t=e.kind;return t===272||t===271}function Nw(e){return e.kind===264||e.kind===263}function $p(e){switch(e.kind){case 216:case 223:case 205:case 210:case 176:case 260:case 228:case 172:case 173:case 182:case 177:case 209:case 263:case 302:case 274:case 275:case 278:case 259:case 215:case 181:case 174:case 79:case 270:case 268:case 273:case 178:case 261:case 341:case 343:case 320:case 344:case 351:case 326:case 349:case 325:case 288:case 289:case 290:case 197:case 171:case 170:case 264:case 199:case 277:case 267:case 271:case 211:case 14:case 8:case 207:case 166:case 208:case 299:case 169:case 168:case 175:case 300:case 308:case 301:case 10:case 262:case 184:case 165:case 257:return!0;default:return!1}}function Qp(e){switch(e.kind){case 216:case 238:case 176:case 266:case 295:case 172:case 191:case 173:case 182:case 177:case 245:case 246:case 247:case 259:case 215:case 181:case 174:case 178:case 341:case 343:case 320:case 326:case 349:case 197:case 171:case 170:case 264:case 175:case 308:case 262:return!0;default:return!1}}function ewe(e){return e===216||e===205||e===260||e===228||e===172||e===173||e===263||e===302||e===278||e===259||e===215||e===174||e===270||e===268||e===273||e===261||e===288||e===171||e===170||e===264||e===267||e===271||e===277||e===166||e===299||e===169||e===168||e===175||e===300||e===262||e===165||e===257||e===349||e===341||e===351}function zj(e){return e===259||e===279||e===260||e===261||e===262||e===263||e===264||e===269||e===268||e===275||e===274||e===267}function Jj(e){return e===249||e===248||e===256||e===243||e===241||e===239||e===246||e===247||e===245||e===242||e===253||e===250||e===252||e===254||e===255||e===240||e===244||e===251||e===355||e===359||e===358}function Kl(e){return e.kind===165?e.parent&&e.parent.kind!==348||Yn(e):ewe(e.kind)}function bse(e){return zj(e.kind)}function Pw(e){return Jj(e.kind)}function ca(e){let t=e.kind;return Jj(t)||zj(t)||twe(e)}function twe(e){return e.kind!==238||e.parent!==void 0&&(e.parent.kind===255||e.parent.kind===295)?!1:!ET(e)}function Ese(e){let t=e.kind;return Jj(t)||zj(t)||t===238}function Tse(e){let t=e.kind;return t===280||t===163||t===79}function EI(e){let t=e.kind;return t===108||t===79||t===208}function Mw(e){let t=e.kind;return t===281||t===291||t===282||t===11||t===285}function d6(e){let t=e.kind;return t===288||t===290}function Sse(e){let t=e.kind;return t===10||t===291}function Au(e){let t=e.kind;return t===283||t===282}function Kj(e){let t=e.kind;return t===292||t===293}function LA(e){return e.kind>=312&&e.kind<=353}function qj(e){return e.kind===323||e.kind===322||e.kind===324||aS(e)||TI(e)||kL(e)||X0(e)}function TI(e){return e.kind>=330&&e.kind<=353}function Ng(e){return e.kind===175}function zy(e){return e.kind===174}function Jd(e){if(!uR(e))return!1;let{jsDoc:t}=e;return!!t&&t.length>0}function f6(e){return!!e.type}function Jy(e){return!!e.initializer}function hT(e){switch(e.kind){case 257:case 166:case 205:case 169:case 299:case 302:return!0;default:return!1}}function Xj(e){return e.kind===288||e.kind===290||Og(e)}function _6(e){return e.kind===180||e.kind===230}function xse(e){let t=Zj;for(let r of e){if(!r.length)continue;let i=0;for(;i<r.length&&i<t&&xh(r.charCodeAt(i));i++);if(i<t&&(t=i),t===0)return 0}return t===Zj?void 0:t}function es(e){return e.kind===10||e.kind===14}function aS(e){return e.kind===327||e.kind===328||e.kind===329}function Yj(e){let t=Os(e.parameters);return!!t&&Fm(t)}function Fm(e){let t=xp(e)?e.typeExpression&&e.typeExpression.type:e.type;return e.dotDotDotToken!==void 0||!!t&&t.kind===321}var $j,Qj,Zj,nwe=gt({\"src/compiler/utilitiesPublic.ts\"(){\"use strict\";fa(),$j=xw(il(0,0),0),Qj=[\"cs\",\"de\",\"es\",\"fr\",\"it\",\"ja\",\"ko\",\"pl\",\"pt-br\",\"ru\",\"tr\",\"zh-cn\",\"zh-tw\"],Zj=1073741823}});function nc(e,t){let r=e.declarations;if(r){for(let i of r)if(i.kind===t)return i}}function Ase(e,t){return Pr(e.declarations||Je,r=>r.kind===t)}function Ua(e){let t=new Map;if(e)for(let r of e)t.set(r.escapedName,r);return t}function Zp(e){return(e.flags&33554432)!==0}function rwe(){var e=\"\";let t=r=>e+=r;return{getText:()=>e,write:t,rawWrite:t,writeKeyword:t,writeOperator:t,writePunctuation:t,writeSpace:t,writeStringLiteral:t,writeLiteral:t,writeParameter:t,writeProperty:t,writeSymbol:(r,i)=>t(r),writeTrailingSemicolon:t,writeComment:t,getTextPos:()=>e.length,getLine:()=>0,getColumn:()=>0,getIndent:()=>0,isAtStartOfLine:()=>!1,hasTrailingComment:()=>!1,hasTrailingWhitespace:()=>!!e.length&&xh(e.charCodeAt(e.length-1)),writeLine:()=>e+=\" \",increaseIndent:Ba,decreaseIndent:Ba,clear:()=>e=\"\"}}function eH(e,t){return e.configFilePath!==t.configFilePath||Cse(e,t)}function Cse(e,t){return kA(e,t,U3)}function Ise(e,t){return kA(e,t,GJ)}function kA(e,t,r){return e!==t&&r.some(i=>!GW(f4(e,i),f4(t,i)))}function Lse(e,t){for(;;){let r=t(e);if(r===\"quit\")return;if(r!==void 0)return r;if(Li(e))return;e=e.parent}}function Ld(e,t){let r=e.entries();for(let[i,o]of r){let s=t(o,i);if(s)return s}}function SI(e,t){let r=e.keys();for(let i of r){let o=t(i);if(o)return o}}function Fw(e,t){e.forEach((r,i)=>{t.set(i,r)})}function xI(e){let t=dL.getText();try{return e(dL),dL.getText()}finally{dL.clear(),dL.writeKeyword(t)}}function Gw(e){return e.end-e.pos}function DA(e,t,r){var i,o;return(o=(i=e?.resolvedModules)==null?void 0:i.get(t,r))==null?void 0:o.resolvedModule}function kse(e,t,r,i){e.resolvedModules||(e.resolvedModules=zT()),e.resolvedModules.set(t,i,r)}function Dse(e,t,r,i){e.resolvedTypeReferenceDirectiveNames||(e.resolvedTypeReferenceDirectiveNames=zT()),e.resolvedTypeReferenceDirectiveNames.set(t,i,r)}function iwe(e,t,r){var i,o;return(o=(i=e?.resolvedTypeReferenceDirectiveNames)==null?void 0:i.get(t,r))==null?void 0:o.resolvedTypeReferenceDirective}function tH(e,t){return e.path===t.path&&!e.prepend==!t.prepend&&!e.circular==!t.circular}function wse(e,t){return e===t||e.resolvedModule===t.resolvedModule||!!e.resolvedModule&&!!t.resolvedModule&&e.resolvedModule.isExternalLibraryImport===t.resolvedModule.isExternalLibraryImport&&e.resolvedModule.extension===t.resolvedModule.extension&&e.resolvedModule.resolvedFileName===t.resolvedModule.resolvedFileName&&e.resolvedModule.originalPath===t.resolvedModule.originalPath&&awe(e.resolvedModule.packageId,t.resolvedModule.packageId)}function awe(e,t){return e===t||!!e&&!!t&&e.name===t.name&&e.subModuleName===t.subModuleName&&e.version===t.version}function p6({name:e,subModuleName:t}){return t?`${e}/${t}`:e}function gT(e){return`${p6(e)}@${e.version}`}function Rse(e,t){return e===t||e.resolvedTypeReferenceDirective===t.resolvedTypeReferenceDirective||!!e.resolvedTypeReferenceDirective&&!!t.resolvedTypeReferenceDirective&&e.resolvedTypeReferenceDirective.resolvedFileName===t.resolvedTypeReferenceDirective.resolvedFileName&&!!e.resolvedTypeReferenceDirective.primary==!!t.resolvedTypeReferenceDirective.primary&&e.resolvedTypeReferenceDirective.originalPath===t.resolvedTypeReferenceDirective.originalPath}function nH(e,t,r,i,o,s){L.assert(e.length===r.length);for(let l=0;l<e.length;l++){let f=r[l],d=e[l],g=s.getName(d),m=s.getMode(d,t),v=i&&i.get(g,m);if(v?!f||!o(v,f):f)return!0}return!1}function Bw(e){return owe(e),(e.flags&524288)!==0}function owe(e){e.flags&1048576||(((e.flags&131072)!==0||pa(e,Bw))&&(e.flags|=524288),e.flags|=1048576)}function Gn(e){for(;e&&e.kind!==308;)e=e.parent;return e}function m6(e){return Gn(e.valueDeclaration||dH(e))}function h6(e,t){return!!e&&(e.scriptKind===1||e.scriptKind===2)&&!e.checkJsDirective&&t===void 0}function Ose(e){switch(e.kind){case 238:case 266:case 245:case 246:case 247:return!0}return!1}function Ky(e,t){return L.assert(e>=0),Sh(t)[e]}function swe(e){let t=Gn(e),r=Gs(t,e.pos);return`${t.fileName}(${r.line+1},${r.character+1})`}function Uw(e,t){L.assert(e>=0);let r=Sh(t),i=e,o=t.text;if(i+1===r.length)return o.length-1;{let s=r[i],l=r[i+1]-1;for(L.assert(Wl(o.charCodeAt(l)));s<=l&&Wl(o.charCodeAt(l));)l--;return l}}function g6(e,t,r){return!(r&&r(t))&&!e.identifiers.has(t)}function rc(e){return e===void 0?!0:e.pos===e.end&&e.pos>=0&&e.kind!==1}function Nf(e){return!rc(e)}function Nse(e,t){return _c(e)?t===e.expression:oc(e)?t===e.modifiers:Yd(e)?t===e.initializer:Na(e)?t===e.questionToken&&Id(e):yl(e)?t===e.modifiers||t===e.questionToken||t===e.exclamationToken||AI(e.modifiers,t,Ns):Sf(e)?t===e.equalsToken||t===e.modifiers||t===e.questionToken||t===e.exclamationToken||AI(e.modifiers,t,Ns):Nc(e)?t===e.exclamationToken:Ec(e)?t===e.typeParameters||t===e.type||AI(e.typeParameters,t,_c):__(e)?t===e.typeParameters||AI(e.typeParameters,t,_c):Tf(e)?t===e.typeParameters||t===e.type||AI(e.typeParameters,t,_c):yO(e)?t===e.modifiers||AI(e.modifiers,t,Ns):!1}function AI(e,t,r){return!e||ba(t)||!r(t)?!1:ya(e,t)}function Pse(e,t,r){if(t===void 0||t.length===0)return e;let i=0;for(;i<e.length&&r(e[i]);++i);return e.splice(i,0,...t),e}function Mse(e,t,r){if(t===void 0)return e;let i=0;for(;i<e.length&&r(e[i]);++i);return e.splice(i,0,t),e}function Fse(e){return G_(e)||!!(Ya(e)&2097152)}function em(e,t){return Pse(e,t,G_)}function rH(e,t){return Pse(e,t,Fse)}function cwe(e,t){return Mse(e,t,G_)}function L0(e,t){return Mse(e,t,Fse)}function iH(e,t,r){if(e.charCodeAt(t+1)===47&&t+2<r&&e.charCodeAt(t+2)===47){let i=e.substring(t,r);return!!(qW.test(i)||XW.test(i)||Wle.test(i)||zle.test(i))}return!1}function y6(e,t){return e.charCodeAt(t+1)===42&&e.charCodeAt(t+2)===33}function Gse(e,t){let r=new Map(t.map(l=>[`${Gs(e,l.range.end).line}`,l])),i=new Map;return{getUnusedExpectations:o,markUsed:s};function o(){return lo(r.entries()).filter(([l,f])=>f.type===0&&!i.get(l)).map(([l,f])=>f)}function s(l){return r.has(`${l}`)?(i.set(`${l}`,!0),!0):!1}}function yT(e,t,r){return rc(e)?e.pos:LA(e)||e.kind===11?xo((t||Gn(e)).text,e.pos,!1,!0):r&&Jd(e)?yT(e.jsDoc[0],t):e.kind===354&&e._children.length>0?yT(e._children[0],t,r):xo((t||Gn(e)).text,e.pos,!1,!1,Xw(e))}function aH(e,t){let r=!rc(e)&&h_(e)?fA(e.modifiers,du):void 0;return r?xo((t||Gn(e)).text,r.end):yT(e,t)}function k0(e,t,r=!1){return CI(e.text,t,r)}function lwe(e){return!!jn(e,VT)}function v6(e){return!!(Il(e)&&e.exportClause&&qm(e.exportClause)&&e.exportClause.name.escapedText===\"default\")}function CI(e,t,r=!1){if(rc(t))return\"\";let i=e.substring(r?t.pos:xo(e,t.pos),t.end);return lwe(t)&&(i=i.split(/\\r\\n|\\n|\\r/).map(o=>eI(o.replace(/^\\s*\\*/,\"\"))).join(`\n`)),i}function Qc(e,t=!1){return k0(Gn(e),e,t)}function uwe(e){return e.pos}function wA(e,t){return Py(e,t,uwe,Es)}function Ya(e){let t=e.emitNode;return t&&t.flags||0}function a_(e){let t=e.emitNode;return t&&t.internalFlags||0}function oH(){return new Map(Object.entries({Array:new Map(Object.entries({es2015:[\"find\",\"findIndex\",\"fill\",\"copyWithin\",\"entries\",\"keys\",\"values\"],es2016:[\"includes\"],es2019:[\"flat\",\"flatMap\"],es2022:[\"at\"],es2023:[\"findLastIndex\",\"findLast\"]})),Iterator:new Map(Object.entries({es2015:Je})),AsyncIterator:new Map(Object.entries({es2015:Je})),Atomics:new Map(Object.entries({es2017:Je})),SharedArrayBuffer:new Map(Object.entries({es2017:Je})),AsyncIterable:new Map(Object.entries({es2018:Je})),AsyncIterableIterator:new Map(Object.entries({es2018:Je})),AsyncGenerator:new Map(Object.entries({es2018:Je})),AsyncGeneratorFunction:new Map(Object.entries({es2018:Je})),RegExp:new Map(Object.entries({es2015:[\"flags\",\"sticky\",\"unicode\"],es2018:[\"dotAll\"]})),Reflect:new Map(Object.entries({es2015:[\"apply\",\"construct\",\"defineProperty\",\"deleteProperty\",\"get\",\" getOwnPropertyDescriptor\",\"getPrototypeOf\",\"has\",\"isExtensible\",\"ownKeys\",\"preventExtensions\",\"set\",\"setPrototypeOf\"]})),ArrayConstructor:new Map(Object.entries({es2015:[\"from\",\"of\"]})),ObjectConstructor:new Map(Object.entries({es2015:[\"assign\",\"getOwnPropertySymbols\",\"keys\",\"is\",\"setPrototypeOf\"],es2017:[\"values\",\"entries\",\"getOwnPropertyDescriptors\"],es2019:[\"fromEntries\"],es2022:[\"hasOwn\"]})),NumberConstructor:new Map(Object.entries({es2015:[\"isFinite\",\"isInteger\",\"isNaN\",\"isSafeInteger\",\"parseFloat\",\"parseInt\"]})),Math:new Map(Object.entries({es2015:[\"clz32\",\"imul\",\"sign\",\"log10\",\"log2\",\"log1p\",\"expm1\",\"cosh\",\"sinh\",\"tanh\",\"acosh\",\"asinh\",\"atanh\",\"hypot\",\"trunc\",\"fround\",\"cbrt\"]})),Map:new Map(Object.entries({es2015:[\"entries\",\"keys\",\"values\"]})),Set:new Map(Object.entries({es2015:[\"entries\",\"keys\",\"values\"]})),PromiseConstructor:new Map(Object.entries({es2015:[\"all\",\"race\",\"reject\",\"resolve\"],es2020:[\"allSettled\"],es2021:[\"any\"]})),Symbol:new Map(Object.entries({es2015:[\"for\",\"keyFor\"],es2019:[\"description\"]})),WeakMap:new Map(Object.entries({es2015:[\"entries\",\"keys\",\"values\"]})),WeakSet:new Map(Object.entries({es2015:[\"entries\",\"keys\",\"values\"]})),String:new Map(Object.entries({es2015:[\"codePointAt\",\"includes\",\"endsWith\",\"normalize\",\"repeat\",\"startsWith\",\"anchor\",\"big\",\"blink\",\"bold\",\"fixed\",\"fontcolor\",\"fontsize\",\"italics\",\"link\",\"small\",\"strike\",\"sub\",\"sup\"],es2017:[\"padStart\",\"padEnd\"],es2019:[\"trimStart\",\"trimEnd\",\"trimLeft\",\"trimRight\"],es2020:[\"matchAll\"],es2021:[\"replaceAll\"],es2022:[\"at\"]})),StringConstructor:new Map(Object.entries({es2015:[\"fromCodePoint\",\"raw\"]})),DateTimeFormat:new Map(Object.entries({es2017:[\"formatToParts\"]})),Promise:new Map(Object.entries({es2015:Je,es2018:[\"finally\"]})),RegExpMatchArray:new Map(Object.entries({es2018:[\"groups\"]})),RegExpExecArray:new Map(Object.entries({es2018:[\"groups\"]})),Intl:new Map(Object.entries({es2018:[\"PluralRules\"]})),NumberFormat:new Map(Object.entries({es2018:[\"formatToParts\"]})),SymbolConstructor:new Map(Object.entries({es2020:[\"matchAll\"]})),DataView:new Map(Object.entries({es2020:[\"setBigInt64\",\"setBigUint64\",\"getBigInt64\",\"getBigUint64\"]})),BigInt:new Map(Object.entries({es2020:Je})),RelativeTimeFormat:new Map(Object.entries({es2020:[\"format\",\"formatToParts\",\"resolvedOptions\"]})),Int8Array:new Map(Object.entries({es2022:[\"at\"],es2023:[\"findLastIndex\",\"findLast\"]})),Uint8Array:new Map(Object.entries({es2022:[\"at\"],es2023:[\"findLastIndex\",\"findLast\"]})),Uint8ClampedArray:new Map(Object.entries({es2022:[\"at\"],es2023:[\"findLastIndex\",\"findLast\"]})),Int16Array:new Map(Object.entries({es2022:[\"at\"],es2023:[\"findLastIndex\",\"findLast\"]})),Uint16Array:new Map(Object.entries({es2022:[\"at\"],es2023:[\"findLastIndex\",\"findLast\"]})),Int32Array:new Map(Object.entries({es2022:[\"at\"],es2023:[\"findLastIndex\",\"findLast\"]})),Uint32Array:new Map(Object.entries({es2022:[\"at\"],es2023:[\"findLastIndex\",\"findLast\"]})),Float32Array:new Map(Object.entries({es2022:[\"at\"],es2023:[\"findLastIndex\",\"findLast\"]})),Float64Array:new Map(Object.entries({es2022:[\"at\"],es2023:[\"findLastIndex\",\"findLast\"]})),BigInt64Array:new Map(Object.entries({es2020:Je,es2022:[\"at\"],es2023:[\"findLastIndex\",\"findLast\"]})),BigUint64Array:new Map(Object.entries({es2020:Je,es2022:[\"at\"],es2023:[\"findLastIndex\",\"findLast\"]})),Error:new Map(Object.entries({es2022:[\"cause\"]}))}))}function Bse(e,t,r){var i;if(t&&dwe(e,r))return k0(t,e);switch(e.kind){case 10:{let o=r&2?qH:r&1||Ya(e)&33554432?pS:TR;return e.singleQuote?\"'\"+o(e.text,39)+\"'\":'\"'+o(e.text,34)+'\"'}case 14:case 15:case 16:case 17:{let o=r&1||Ya(e)&33554432?pS:TR,s=(i=e.rawText)!=null?i:Rwe(o(e.text,96));switch(e.kind){case 14:return\"`\"+s+\"`\";case 15:return\"`\"+s+\"${\";case 16:return\"}\"+s+\"${\";case 17:return\"}\"+s+\"`\"}break}case 8:case 9:return e.text;case 13:return r&4&&e.isUnterminated?e.text+(e.text.charCodeAt(e.text.length-1)===92?\" /\":\"/\"):e.text}return L.fail(`Literal kind '${e.kind}' not accounted for.`)}function dwe(e,t){return ws(e)||!e.parent||t&4&&e.isUnterminated?!1:Uf(e)&&e.numericLiteralFlags&512?!!(t&8):!a3(e)}function Use(e){return Ta(e)?'\"'+TR(e)+'\"':\"\"+e}function Vse(e){return Hl(e).replace(/^(\\d)/,\"_$1\").replace(/\\W/g,\"_\")}function sH(e){return(F_(e)&3)!==0||cH(e)}function cH(e){let t=nm(e);return t.kind===257&&t.parent.kind===295}function lu(e){return Tc(e)&&(e.name.kind===10||mp(e))}function b6(e){return Tc(e)&&e.name.kind===10}function lH(e){return Tc(e)&&yo(e.name)}function jse(e){return Tc(e)||Re(e)}function II(e){return fwe(e.valueDeclaration)}function fwe(e){return!!e&&e.kind===264&&!e.body}function Hse(e){return e.kind===308||e.kind===264||xA(e)}function mp(e){return!!(e.flags&1024)}function D0(e){return lu(e)&&uH(e)}function uH(e){switch(e.parent.kind){case 308:return Lc(e.parent);case 265:return lu(e.parent.parent)&&Li(e.parent.parent.parent)&&!Lc(e.parent.parent.parent)}return!1}function dH(e){var t;return(t=e.declarations)==null?void 0:t.find(r=>!D0(r)&&!(Tc(r)&&mp(r)))}function _we(e){return e===1||e===100||e===199}function oS(e,t){return Lc(e)||u_(t)||_we(Rl(t))&&!!e.commonJsModuleIndicator}function fH(e,t){switch(e.scriptKind){case 1:case 3:case 2:case 4:break;default:return!1}return e.isDeclarationFile?!1:Bf(t,\"alwaysStrict\")||nde(e.statements)?!0:Lc(e)||u_(t)?Rl(t)>=5?!0:!t.noImplicitUseStrict:!1}function _H(e){return!!(e.flags&16777216)||Mr(e,2)}function pH(e,t){switch(e.kind){case 308:case 266:case 295:case 264:case 245:case 246:case 247:case 173:case 171:case 174:case 175:case 259:case 215:case 216:case 169:case 172:return!0;case 238:return!xA(t)}return!1}function mH(e){switch(L.type(e),e.kind){case 341:case 349:case 326:return!0;default:return hH(e)}}function hH(e){switch(L.type(e),e.kind){case 176:case 177:case 170:case 178:case 181:case 182:case 320:case 260:case 228:case 261:case 262:case 348:case 259:case 171:case 173:case 174:case 175:case 215:case 216:return!0;default:return!1}}function vT(e){switch(e.kind){case 269:case 268:return!0;default:return!1}}function Wse(e){return vT(e)||N0(e)}function E6(e){switch(e.kind){case 269:case 268:case 240:case 260:case 259:case 264:case 262:case 261:case 263:return!0;default:return!1}}function zse(e){return Vw(e)||Tc(e)||Mh(e)||Dd(e)}function Vw(e){return vT(e)||Il(e)}function tm(e){return jn(e.parent,t=>pH(t,t.parent))}function Jse(e,t){let r=tm(e);for(;r;)t(r),r=tm(r)}function os(e){return!e||Gw(e)===0?\"(Missing)\":Qc(e)}function Kse(e){return e.declaration?os(e.declaration.parameters[0].name):void 0}function jw(e){return e.kind===164&&!gf(e.expression)}function T6(e){var t;switch(e.kind){case 79:case 80:return(t=e.emitNode)!=null&&t.autoGenerate?void 0:e.escapedText;case 10:case 8:case 14:return Bs(e.text);case 164:return gf(e.expression)?Bs(e.expression.text):void 0;default:return L.assertNever(e)}}function RA(e){return L.checkDefined(T6(e))}function Kd(e){switch(e.kind){case 108:return\"this\";case 80:case 79:return Gw(e)===0?vr(e):Qc(e);case 163:return Kd(e.left)+\".\"+Kd(e.right);case 208:return Re(e.name)||pi(e.name)?Kd(e.expression)+\".\"+Kd(e.name):L.assertNever(e.name);case 314:return Kd(e.left)+Kd(e.right);default:return L.assertNever(e)}}function hr(e,t,r,i,o,s){let l=Gn(e);return Nu(l,e,t,r,i,o,s)}function OA(e,t,r,i,o,s,l){let f=xo(e.text,t.pos);return al(e,f,t.end-f,r,i,o,s,l)}function Nu(e,t,r,i,o,s,l){let f=w0(e,t);return al(e,f.start,f.length,r,i,o,s,l)}function Lh(e,t,r,i){let o=w0(e,t);return S6(e,o.start,o.length,r,i)}function Hw(e,t,r,i){let o=xo(e.text,t.pos);return S6(e,o,t.end-o,r,i)}function gH(e,t,r){L.assertGreaterThanOrEqual(t,0),L.assertGreaterThanOrEqual(r,0),e&&(L.assertLessThanOrEqual(t,e.text.length),L.assertLessThanOrEqual(t+r,e.text.length))}function S6(e,t,r,i,o){return gH(e,t,r),{file:e,start:t,length:r,code:i.code,category:i.category,messageText:i.next?i:i.messageText,relatedInformation:o}}function yH(e,t,r){return{file:e,start:0,length:0,code:t.code,category:t.category,messageText:t.next?t:t.messageText,relatedInformation:r}}function qse(e){return typeof e.messageText==\"string\"?{code:e.code,category:e.category,messageText:e.messageText,next:e.next}:e.messageText}function vH(e,t,r){return{file:e,start:t.pos,length:t.end-t.pos,code:r.code,category:r.category,messageText:r.message}}function Pg(e,t){let r=kg(e.languageVersion,!0,e.languageVariant,e.text,void 0,t);r.scan();let i=r.getTokenPos();return Wc(i,r.getTextPos())}function Xse(e,t){let r=kg(e.languageVersion,!0,e.languageVariant,e.text,void 0,t);return r.scan(),r.getToken()}function pwe(e,t){let r=xo(e.text,t.pos);if(t.body&&t.body.kind===238){let{line:i}=Gs(e,t.body.pos),{line:o}=Gs(e,t.body.end);if(i<o)return il(r,Uw(i,e)-r+1)}return Wc(r,t.end)}function w0(e,t){let r=t;switch(t.kind){case 308:let s=xo(e.text,0,!1);return s===e.text.length?il(0,0):Pg(e,s);case 257:case 205:case 260:case 228:case 261:case 264:case 263:case 302:case 259:case 215:case 171:case 174:case 175:case 262:case 169:case 168:case 271:r=t.name;break;case 216:return pwe(e,t);case 292:case 293:let l=xo(e.text,t.pos),f=t.statements.length>0?t.statements[0].pos:t.end;return Wc(l,f)}if(r===void 0)return Pg(e,t.pos);L.assert(!dm(r));let i=rc(r),o=i||IS(t)?r.pos:xo(e.text,r.pos);return i?(L.assert(o===r.pos,\"This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809\"),L.assert(o===r.end,\"This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809\")):(L.assert(o>=r.pos,\"This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809\"),L.assert(o<=r.end,\"This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809\")),Wc(o,r.end)}function kd(e){return(e.externalModuleIndicator||e.commonJsModuleIndicator)!==void 0}function Pf(e){return e.scriptKind===6}function R0(e){return!!(wg(e)&2048)}function x6(e){return!!(wg(e)&64&&!Ad(e,e.parent))}function kh(e){return!!(F_(e)&2)}function LI(e){return!!(F_(e)&1)}function NA(e){return e.kind===210&&e.expression.kind===106}function Dd(e){return e.kind===210&&e.expression.kind===100}function PA(e){return SL(e)&&e.keywordToken===100&&e.name.escapedText===\"meta\"}function ib(e){return Mh(e)&&mb(e.argument)&&yo(e.argument.literal)}function G_(e){return e.kind===241&&e.expression.kind===10}function A6(e){return!!(Ya(e)&2097152)}function C6(e){return A6(e)&&Jc(e)}function mwe(e){return Re(e.name)&&!e.initializer}function I6(e){return A6(e)&&Bc(e)&&Ji(e.declarationList.declarations,mwe)}function bH(e,t){return e.kind!==11?Nm(t.text,e.pos):void 0}function EH(e,t){let r=e.kind===166||e.kind===165||e.kind===215||e.kind===216||e.kind===214||e.kind===257||e.kind===278?Qi(eb(t,e.pos),Nm(t,e.pos)):Nm(t,e.pos);return Pr(r,i=>t.charCodeAt(i.pos+1)===42&&t.charCodeAt(i.pos+2)===42&&t.charCodeAt(i.pos+3)!==47)}function Gm(e){if(179<=e.kind&&e.kind<=202)return!0;switch(e.kind){case 131:case 157:case 148:case 160:case 152:case 134:case 153:case 149:case 155:case 144:return!0;case 114:return e.parent.kind!==219;case 230:return dd(e.parent)&&!LR(e);case 165:return e.parent.kind===197||e.parent.kind===192;case 79:(e.parent.kind===163&&e.parent.right===e||e.parent.kind===208&&e.parent.name===e)&&(e=e.parent),L.assert(e.kind===79||e.kind===163||e.kind===208,\"'node' was expected to be a qualified name, identifier or property access in 'isPartOfTypeNode'.\");case 163:case 208:case 108:{let{parent:t}=e;if(t.kind===183)return!1;if(t.kind===202)return!t.isTypeOf;if(179<=t.kind&&t.kind<=202)return!0;switch(t.kind){case 230:return dd(t.parent)&&!LR(t);case 165:return e===t.constraint;case 348:return e===t.constraint;case 169:case 168:case 166:case 257:return e===t.type;case 259:case 215:case 216:case 173:case 171:case 170:case 174:case 175:return e===t.type;case 176:case 177:case 178:return e===t.type;case 213:return e===t.type;case 210:case 211:return ya(t.typeArguments,e);case 212:return!1}}}return!1}function TH(e,t){for(;e;){if(e.kind===t)return!0;e=e.parent}return!1}function bT(e,t){return r(e);function r(i){switch(i.kind){case 250:return t(i);case 266:case 238:case 242:case 243:case 244:case 245:case 246:case 247:case 251:case 252:case 292:case 293:case 253:case 255:case 295:return pa(i,r)}}}function Yse(e,t){return r(e);function r(i){switch(i.kind){case 226:t(i);let o=i.expression;o&&r(o);return;case 263:case 261:case 264:case 262:return;default:if(Ia(i)){if(i.name&&i.name.kind===164){r(i.name.expression);return}}else Gm(i)||pa(i,r)}}}function SH(e){return e&&e.kind===185?e.elementType:e&&e.kind===180?Wp(e.typeArguments):void 0}function $se(e){switch(e.kind){case 261:case 260:case 228:case 184:return e.members;case 207:return e.properties}}function MA(e){if(e)switch(e.kind){case 205:case 302:case 166:case 299:case 169:case 168:case 300:case 257:return!0}return!1}function Qse(e){return MA(e)||rb(e)}function L6(e){return e.parent.kind===258&&e.parent.parent.kind===240}function Zse(e){return Yn(e)?rs(e.parent)&&ar(e.parent.parent)&&ic(e.parent.parent)===2||k6(e.parent):!1}function k6(e){return Yn(e)?ar(e)&&ic(e)===1:!1}function ece(e){return(wi(e)?kh(e)&&Re(e.name)&&L6(e):Na(e)?HI(e)&&zc(e):Yd(e)&&HI(e))||k6(e)}function tce(e){switch(e.kind){case 171:case 170:case 173:case 174:case 175:case 259:case 215:return!0}return!1}function xH(e,t){for(;;){if(t&&t(e),e.statement.kind!==253)return e.statement;e=e.statement}}function ET(e){return e&&e.kind===238&&Ia(e.parent)}function o_(e){return e&&e.kind===171&&e.parent.kind===207}function D6(e){return(e.kind===171||e.kind===174||e.kind===175)&&(e.parent.kind===207||e.parent.kind===228)}function nce(e){return e&&e.kind===1}function hwe(e){return e&&e.kind===0}function FA(e,t,r){return e.properties.filter(i=>{if(i.kind===299){let o=T6(i.name);return t===o||!!r&&r===o}return!1})}function rce(e,t,r){return ks(FA(e,t),i=>fu(i.initializer)?wr(i.initializer.elements,o=>yo(o)&&o.text===r):void 0)}function kI(e){if(e&&e.statements.length){let t=e.statements[0].expression;return zr(t,rs)}}function w6(e,t,r){return ks(Ww(e,t),i=>fu(i.initializer)?wr(i.initializer.elements,o=>yo(o)&&o.text===r):void 0)}function Ww(e,t){let r=kI(e);return r?FA(r,t):Je}function qd(e){return jn(e.parent,Ia)}function ice(e){return jn(e.parent,Ds)}function Zc(e){return jn(e.parent,Yr)}function gwe(e){return jn(e.parent,t=>Yr(t)||Ia(t)?\"quit\":oc(t))}function R6(e){return jn(e.parent,xA)}function Ku(e,t,r){for(L.assert(e.kind!==308);;){if(e=e.parent,!e)return L.fail();switch(e.kind){case 164:if(r&&Yr(e.parent.parent))return e;e=e.parent.parent;break;case 167:e.parent.kind===166&&_l(e.parent.parent)?e=e.parent.parent:_l(e.parent)&&(e=e.parent);break;case 216:if(!t)continue;case 259:case 215:case 264:case 172:case 169:case 168:case 171:case 170:case 173:case 174:case 175:case 176:case 177:case 178:case 263:case 308:return e}}}function ace(e){switch(e.kind){case 216:case 259:case 215:case 169:return!0;case 238:switch(e.parent.kind){case 173:case 171:case 174:case 175:return!0;default:return!1}default:return!1}}function O6(e){Re(e)&&(sl(e.parent)||Jc(e.parent))&&e.parent.name===e&&(e=e.parent);let t=Ku(e,!0,!1);return Li(t)}function oce(e){let t=Ku(e,!1,!1);if(t)switch(t.kind){case 173:case 259:case 215:return t}}function zw(e,t){for(;;){if(e=e.parent,!e)return;switch(e.kind){case 164:e=e.parent;break;case 259:case 215:case 216:if(!t)continue;case 169:case 168:case 171:case 170:case 173:case 174:case 175:case 172:return e;case 167:e.parent.kind===166&&_l(e.parent.parent)?e=e.parent.parent:_l(e.parent)&&(e=e.parent);break}}}function TT(e){if(e.kind===215||e.kind===216){let t=e,r=e.parent;for(;r.kind===214;)t=r,r=r.parent;if(r.kind===210&&r.expression===t)return r}}function ywe(e){return e.kind===106||Pu(e)}function Pu(e){let t=e.kind;return(t===208||t===209)&&e.expression.kind===106}function Jw(e){let t=e.kind;return(t===208||t===209)&&e.expression.kind===108}function N6(e){var t;return!!e&&wi(e)&&((t=e.initializer)==null?void 0:t.kind)===108}function sce(e){return!!e&&(Sf(e)||yl(e))&&ar(e.parent.parent)&&e.parent.parent.operatorToken.kind===63&&e.parent.parent.right.kind===108}function Kw(e){switch(e.kind){case 180:return e.typeName;case 230:return bc(e.expression)?e.expression:void 0;case 79:case 163:return e}}function P6(e){switch(e.kind){case 212:return e.tag;case 283:case 282:return e.tagName;default:return e.expression}}function M6(e,t,r,i){if(e&&zl(t)&&pi(t.name))return!1;switch(t.kind){case 260:return!0;case 228:return!e;case 169:return r!==void 0&&(e?sl(r):Yr(r)&&!B0(t)&&!aW(t));case 174:case 175:case 171:return t.body!==void 0&&r!==void 0&&(e?sl(r):Yr(r));case 166:return e?r!==void 0&&r.body!==void 0&&(r.kind===173||r.kind===171||r.kind===175)&&F0(r)!==t&&i!==void 0&&i.kind===260:!1}return!1}function GA(e,t,r,i){return vf(t)&&M6(e,t,r,i)}function qw(e,t,r,i){return GA(e,t,r,i)||DI(e,t,r)}function DI(e,t,r){switch(t.kind){case 260:return vt(t.members,i=>qw(e,i,t,r));case 228:return!e&&vt(t.members,i=>qw(e,i,t,r));case 171:case 175:case 173:return vt(t.parameters,i=>GA(e,i,t,r));default:return!1}}function O0(e,t){if(GA(e,t))return!0;let r=Vm(t);return!!r&&DI(e,r,t)}function AH(e,t,r){let i;if(rb(t)){let{firstAccessor:o,secondAccessor:s,setAccessor:l}=DT(r.members,t),f=vf(o)?o:s&&vf(s)?s:void 0;if(!f||t!==f)return!1;i=l?.parameters}else Nc(t)&&(i=t.parameters);if(GA(e,t,r))return!0;if(i){for(let o of i)if(!G0(o)&&GA(e,o,t,r))return!0}return!1}function CH(e){if(e.textSourceNode){switch(e.textSourceNode.kind){case 10:return CH(e.textSourceNode);case 14:return e.text===\"\"}return!1}return e.text===\"\"}function wI(e){let{parent:t}=e;return t.kind===283||t.kind===282||t.kind===284?t.tagName===e:!1}function Dh(e){switch(e.kind){case 106:case 104:case 110:case 95:case 13:case 206:case 207:case 208:case 209:case 210:case 211:case 212:case 231:case 213:case 235:case 232:case 214:case 215:case 228:case 216:case 219:case 217:case 218:case 221:case 222:case 223:case 224:case 227:case 225:case 229:case 281:case 282:case 285:case 226:case 220:case 233:return!0;case 230:return!dd(e.parent)&&!A2(e.parent);case 163:for(;e.parent.kind===163;)e=e.parent;return e.parent.kind===183||aS(e.parent)||LL(e.parent)||gb(e.parent)||wI(e);case 314:for(;gb(e.parent);)e=e.parent;return e.parent.kind===183||aS(e.parent)||LL(e.parent)||gb(e.parent)||wI(e);case 80:return ar(e.parent)&&e.parent.left===e&&e.parent.operatorToken.kind===101;case 79:if(e.parent.kind===183||aS(e.parent)||LL(e.parent)||gb(e.parent)||wI(e))return!0;case 8:case 9:case 10:case 14:case 108:return F6(e);default:return!1}}function F6(e){let{parent:t}=e;switch(t.kind){case 257:case 166:case 169:case 168:case 302:case 299:case 205:return t.initializer===e;case 241:case 242:case 243:case 244:case 250:case 251:case 252:case 292:case 254:return t.expression===e;case 245:let r=t;return r.initializer===e&&r.initializer.kind!==258||r.condition===e||r.incrementor===e;case 246:case 247:let i=t;return i.initializer===e&&i.initializer.kind!==258||i.expression===e;case 213:case 231:return e===t.expression;case 236:return e===t.expression;case 164:return e===t.expression;case 167:case 291:case 290:case 301:return!0;case 230:return t.expression===e&&!Gm(t);case 300:return t.objectAssignmentInitializer===e;case 235:return e===t.expression;default:return Dh(t)}}function G6(e){for(;e.kind===163||e.kind===79;)e=e.parent;return e.kind===183}function cce(e){return qm(e)&&!!e.parent.moduleSpecifier}function ab(e){return e.kind===268&&e.moduleReference.kind===280}function RI(e){return L.assert(ab(e)),e.moduleReference.expression}function IH(e){return N0(e)&&QI(e.initializer).arguments[0]}function BA(e){return e.kind===268&&e.moduleReference.kind!==280}function Cu(e){return Yn(e)}function vwe(e){return!Yn(e)}function Yn(e){return!!e&&!!(e.flags&262144)}function B6(e){return!!e&&!!(e.flags&67108864)}function LH(e){return!Pf(e)}function Xw(e){return!!e&&!!(e.flags&8388608)}function U6(e){return p_(e)&&Re(e.typeName)&&e.typeName.escapedText===\"Object\"&&e.typeArguments&&e.typeArguments.length===2&&(e.typeArguments[0].kind===152||e.typeArguments[0].kind===148)}function qu(e,t){if(e.kind!==210)return!1;let{expression:r,arguments:i}=e;if(r.kind!==79||r.escapedText!==\"require\"||i.length!==1)return!1;let o=i[0];return!t||es(o)}function kH(e){return uce(e,!1)}function N0(e){return uce(e,!0)}function lce(e){return Wo(e)&&N0(e.parent.parent)}function uce(e,t){return wi(e)&&!!e.initializer&&qu(t?QI(e.initializer):e.initializer,!0)}function DH(e){return Bc(e)&&e.declarationList.declarations.length>0&&Ji(e.declarationList.declarations,t=>kH(t))}function Yw(e){return e===39||e===34}function V6(e,t){return k0(t,e).charCodeAt(0)===34}function OI(e){return ar(e)||Us(e)||Re(e)||Pa(e)}function $w(e){return Yn(e)&&e.initializer&&ar(e.initializer)&&(e.initializer.operatorToken.kind===56||e.initializer.operatorToken.kind===60)&&e.name&&bc(e.name)&&UA(e.name,e.initializer.left)?e.initializer.right:e.initializer}function Qw(e){let t=$w(e);return t&&ob(t,ub(e.name))}function bwe(e,t){return mn(e.properties,r=>yl(r)&&Re(r.name)&&r.name.escapedText===\"value\"&&r.initializer&&ob(r.initializer,t))}function sS(e){if(e&&e.parent&&ar(e.parent)&&e.parent.operatorToken.kind===63){let t=ub(e.parent.left);return ob(e.parent.right,t)||Ewe(e.parent.left,e.parent.right,t)}if(e&&Pa(e)&&cS(e)){let t=bwe(e.arguments[2],e.arguments[1].text===\"prototype\");if(t)return t}}function ob(e,t){if(Pa(e)){let r=vs(e.expression);return r.kind===215||r.kind===216?e:void 0}if(e.kind===215||e.kind===228||e.kind===216||rs(e)&&(e.properties.length===0||t))return e}function Ewe(e,t,r){let i=ar(t)&&(t.operatorToken.kind===56||t.operatorToken.kind===60)&&ob(t.right,r);if(i&&UA(e,t.left))return i}function dce(e){let t=wi(e.parent)?e.parent.name:ar(e.parent)&&e.parent.operatorToken.kind===63?e.parent.left:void 0;return t&&ob(e.right,ub(t))&&bc(t)&&UA(t,e.left)}function wH(e){if(ar(e.parent)){let t=(e.parent.operatorToken.kind===56||e.parent.operatorToken.kind===60)&&ar(e.parent.parent)?e.parent.parent:e.parent;if(t.operatorToken.kind===63&&Re(t.left))return t.left}else if(wi(e.parent))return e.parent.name}function UA(e,t){return s_(e)&&s_(t)?c_(e)===c_(t):Ah(e)&&j6(t)&&(t.expression.kind===108||Re(t.expression)&&(t.expression.escapedText===\"window\"||t.expression.escapedText===\"self\"||t.expression.escapedText===\"global\"))?UA(e,tR(t)):j6(e)&&j6(t)?wh(e)===wh(t)&&UA(e.expression,t.expression):!1}function Zw(e){for(;Iu(e,!0);)e=e.right;return e}function ST(e){return Re(e)&&e.escapedText===\"exports\"}function RH(e){return Re(e)&&e.escapedText===\"module\"}function Bm(e){return(br(e)||eR(e))&&RH(e.expression)&&wh(e)===\"exports\"}function ic(e){let t=Twe(e);return t===5||Yn(e)?t:0}function cS(e){return Fn(e.arguments)===3&&br(e.expression)&&Re(e.expression.expression)&&vr(e.expression.expression)===\"Object\"&&vr(e.expression.name)===\"defineProperty\"&&gf(e.arguments[1])&&lS(e.arguments[0],!0)}function j6(e){return br(e)||eR(e)}function eR(e){return Vs(e)&&gf(e.argumentExpression)}function xT(e,t){return br(e)&&(!t&&e.expression.kind===108||Re(e.name)&&lS(e.expression,!0))||H6(e,t)}function H6(e,t){return eR(e)&&(!t&&e.expression.kind===108||bc(e.expression)||xT(e.expression,!0))}function lS(e,t){return bc(e)||xT(e,t)}function tR(e){return br(e)?e.name:e.argumentExpression}function Twe(e){if(Pa(e)){if(!cS(e))return 0;let t=e.arguments[0];return ST(t)||Bm(t)?8:xT(t)&&wh(t)===\"prototype\"?9:7}return e.operatorToken.kind!==63||!Us(e.left)||Swe(Zw(e))?0:lS(e.left.expression,!0)&&wh(e.left)===\"prototype\"&&rs(OH(e))?6:nR(e.left)}function Swe(e){return PS(e)&&Uf(e.expression)&&e.expression.text===\"0\"}function W6(e){if(br(e))return e.name;let t=vs(e.argumentExpression);return Uf(t)||es(t)?t:e}function wh(e){let t=W6(e);if(t){if(Re(t))return t.escapedText;if(es(t)||Uf(t))return Bs(t.text)}}function nR(e){if(e.expression.kind===108)return 4;if(Bm(e))return 2;if(lS(e.expression,!0)){if(ub(e.expression))return 3;let t=e;for(;!Re(t.expression);)t=t.expression;let r=t.expression;if((r.escapedText===\"exports\"||r.escapedText===\"module\"&&wh(t)===\"exports\")&&xT(e))return 1;if(lS(e,!0)||Vs(e)&&Y6(e))return 5}return 0}function OH(e){for(;ar(e.right);)e=e.right;return e.right}function rR(e){return ar(e)&&ic(e)===3}function fce(e){return Yn(e)&&e.parent&&e.parent.kind===241&&(!Vs(e)||eR(e))&&!!x0(e.parent)}function iR(e,t){let{valueDeclaration:r}=e;(!r||!(t.flags&16777216&&!Yn(t)&&!(r.flags&16777216))&&OI(r)&&!OI(t)||r.kind!==t.kind&&jse(r))&&(e.valueDeclaration=t)}function _ce(e){if(!e||!e.valueDeclaration)return!1;let t=e.valueDeclaration;return t.kind===259||wi(t)&&t.initializer&&Ia(t.initializer)}function aR(e){var t,r;switch(e.kind){case 257:case 205:return(t=jn(e.initializer,i=>qu(i,!0)))==null?void 0:t.arguments[0];case 269:return zr(e.moduleSpecifier,es);case 268:return zr((r=zr(e.moduleReference,um))==null?void 0:r.expression,es);case 270:case 277:return zr(e.parent.moduleSpecifier,es);case 271:case 278:return zr(e.parent.parent.moduleSpecifier,es);case 273:return zr(e.parent.parent.parent.moduleSpecifier,es);default:L.assertNever(e)}}function oR(e){return sR(e)||L.failBadSyntaxKind(e.parent)}function sR(e){switch(e.parent.kind){case 269:case 275:return e.parent;case 280:return e.parent.parent;case 210:return Dd(e.parent)||qu(e.parent,!1)?e.parent:void 0;case 198:return L.assert(yo(e)),zr(e.parent.parent,Mh);default:return}}function VA(e){switch(e.kind){case 269:case 275:return e.moduleSpecifier;case 268:return e.moduleReference.kind===280?e.moduleReference.expression:void 0;case 202:return ib(e)?e.argument.literal:void 0;case 210:return e.arguments[0];case 264:return e.name.kind===10?e.name:void 0;default:return L.assertNever(e)}}function jA(e){switch(e.kind){case 269:return e.importClause&&zr(e.importClause.namedBindings,nv);case 268:return e;case 275:return e.exportClause&&zr(e.exportClause,qm);default:return L.assertNever(e)}}function uS(e){return e.kind===269&&!!e.importClause&&!!e.importClause.name}function z6(e,t){if(e.name){let r=t(e);if(r)return r}if(e.namedBindings){let r=nv(e.namedBindings)?t(e.namedBindings):mn(e.namedBindings.elements,t);if(r)return r}}function dS(e){if(e)switch(e.kind){case 166:case 171:case 170:case 300:case 299:case 169:case 168:return e.questionToken!==void 0}return!1}function HA(e){let t=x2(e)?Sl(e.parameters):void 0,r=zr(t&&t.name,Re);return!!r&&r.escapedText===\"new\"}function Mf(e){return e.kind===349||e.kind===341||e.kind===343}function cR(e){return Mf(e)||Ep(e)}function xwe(e){return Ol(e)&&ar(e.expression)&&e.expression.operatorToken.kind===63?Zw(e.expression):void 0}function pce(e){return Ol(e)&&ar(e.expression)&&ic(e.expression)!==0&&ar(e.expression.right)&&(e.expression.right.operatorToken.kind===56||e.expression.right.operatorToken.kind===60)?e.expression.right.right:void 0}function NH(e){switch(e.kind){case 240:let t=WA(e);return t&&t.initializer;case 169:return e.initializer;case 299:return e.initializer}}function WA(e){return Bc(e)?Sl(e.declarationList.declarations):void 0}function mce(e){return Tc(e)&&e.body&&e.body.kind===264?e.body:void 0}function lR(e){if(e.kind>=240&&e.kind<=256)return!0;switch(e.kind){case 79:case 108:case 106:case 163:case 233:case 209:case 208:case 205:case 215:case 216:case 171:case 174:case 175:return!0;default:return!1}}function uR(e){switch(e.kind){case 216:case 223:case 238:case 249:case 176:case 292:case 260:case 228:case 172:case 173:case 182:case 177:case 248:case 256:case 243:case 209:case 239:case 1:case 263:case 302:case 274:case 275:case 278:case 241:case 246:case 247:case 245:case 259:case 215:case 181:case 174:case 79:case 242:case 269:case 268:case 178:case 261:case 320:case 326:case 253:case 171:case 170:case 264:case 199:case 267:case 207:case 166:case 214:case 208:case 299:case 169:case 168:case 250:case 175:case 300:case 301:case 252:case 254:case 255:case 262:case 165:case 257:case 240:case 244:case 251:return!0;default:return!1}}function PH(e,t){let r;MA(e)&&Jy(e)&&Jd(e.initializer)&&(r=si(r,hce(e,To(e.initializer.jsDoc))));let i=e;for(;i&&i.parent;){if(Jd(i)&&(r=si(r,hce(e,To(i.jsDoc)))),i.kind===166){r=si(r,(t?joe:_I)(i));break}if(i.kind===165){r=si(r,(t?zoe:Woe)(i));break}i=MH(i)}return r||Je}function hce(e,t){if(dm(t)){let r=Pr(t.tags,i=>gce(e,i));return t.tags===r?[t]:r}return gce(e,t)?[t]:void 0}function gce(e,t){return!(wL(t)||v3(t))||!t.parent||!dm(t.parent)||!ud(t.parent.parent)||t.parent.parent===e}function MH(e){let t=e.parent;if(t.kind===299||t.kind===274||t.kind===169||t.kind===241&&e.kind===208||t.kind===250||mce(t)||ar(e)&&e.operatorToken.kind===63)return t;if(t.parent&&(WA(t.parent)===e||ar(t)&&t.operatorToken.kind===63))return t.parent;if(t.parent&&t.parent.parent&&(WA(t.parent.parent)||NH(t.parent.parent)===e||pce(t.parent.parent)))return t.parent.parent}function dR(e){if(e.symbol)return e.symbol;if(!Re(e.name))return;let t=e.name.escapedText,r=sb(e);if(!r)return;let i=wr(r.parameters,o=>o.name.kind===79&&o.name.escapedText===t);return i&&i.symbol}function J6(e){if(dm(e.parent)&&e.parent.tags){let t=wr(e.parent.tags,Mf);if(t)return t}return sb(e)}function sb(e){let t=zA(e);if(t)return Yd(t)&&t.type&&Ia(t.type)?t.type:Ia(t)?t:void 0}function zA(e){let t=fS(e);if(t)return pce(t)||xwe(t)||NH(t)||WA(t)||mce(t)||t}function fS(e){let t=NI(e);if(!t)return;let r=t.parent;if(r&&r.jsDoc&&t===Os(r.jsDoc))return r}function NI(e){return jn(e.parent,dm)}function yce(e){let t=e.name.escapedText,{typeParameters:r}=e.parent.parent.parent;return r&&wr(r,i=>i.name.escapedText===t)}function Awe(e){return!!e.typeArguments}function AT(e){let t=e.parent;for(;;){switch(t.kind){case 223:let r=t.operatorToken.kind;return Mg(r)&&t.left===e?r===63||WI(r)?1:2:0;case 221:case 222:let i=t.operator;return i===45||i===46?2:0;case 246:case 247:return t.initializer===e?1:0;case 214:case 206:case 227:case 232:e=t;break;case 301:e=t.parent;break;case 300:if(t.name!==e)return 0;e=t.parent;break;case 299:if(t.name===e)return 0;e=t.parent;break;default:return 0}t=e.parent}}function Um(e){return AT(e)!==0}function vce(e){switch(e.kind){case 238:case 240:case 251:case 242:case 252:case 266:case 292:case 293:case 253:case 245:case 246:case 247:case 243:case 244:case 255:case 295:return!0}return!1}function bce(e){return ms(e)||xs(e)||AA(e)||Jc(e)||Ec(e)}function Ece(e,t){for(;e&&e.kind===t;)e=e.parent;return e}function fR(e){return Ece(e,193)}function qy(e){return Ece(e,214)}function Tce(e){let t;for(;e&&e.kind===193;)t=e,e=e.parent;return[t,e]}function FH(e){for(;RS(e);)e=e.type;return e}function vs(e,t){return ql(e,t?17:1)}function GH(e){return e.kind!==208&&e.kind!==209?!1:(e=qy(e.parent),e&&e.kind===217)}function CT(e,t){for(;e;){if(e===t)return!0;e=e.parent}return!1}function Rh(e){return!Li(e)&&!La(e)&&Kl(e.parent)&&e.parent.name===e}function _R(e){let t=e.parent;switch(e.kind){case 10:case 14:case 8:if(ts(t))return t.parent;case 79:if(Kl(t))return t.name===e?t:void 0;if(Yu(t)){let r=t.parent;return xp(r)&&r.name===t?r:void 0}else{let r=t.parent;return ar(r)&&ic(r)!==0&&(r.left.symbol||r.symbol)&&sa(r)===e?r:void 0}case 80:return Kl(t)&&t.name===e?t:void 0;default:return}}function pR(e){return gf(e)&&e.parent.kind===164&&Kl(e.parent.parent)}function Sce(e){let t=e.parent;switch(t.kind){case 169:case 168:case 171:case 170:case 174:case 175:case 302:case 299:case 208:return t.name===e;case 163:return t.right===e;case 205:case 273:return t.propertyName===e;case 278:case 288:case 282:case 283:case 284:return!0}return!1}function Cwe(e){return e.kind===268||e.kind===267||e.kind===270&&!!e.name||e.kind===271||e.kind===277||e.kind===273||e.kind===278||e.kind===274&&JA(e)?!0:Yn(e)&&(ar(e)&&ic(e)===2&&JA(e)||br(e)&&ar(e.parent)&&e.parent.left===e&&e.parent.operatorToken.kind===63&&mR(e.parent.right))}function BH(e){switch(e.parent.kind){case 270:case 273:case 271:case 278:case 274:case 268:case 277:return e.parent;case 163:do e=e.parent;while(e.parent.kind===163);return BH(e)}}function mR(e){return bc(e)||_u(e)}function JA(e){let t=UH(e);return mR(t)}function UH(e){return pc(e)?e.expression:e.right}function xce(e){return e.kind===300?e.name:e.kind===299?e.initializer:e.parent.right}function hp(e){let t=P0(e);if(t&&Yn(e)){let r=Koe(e);if(r)return r.class}return t}function P0(e){let t=hR(e.heritageClauses,94);return t&&t.types.length>0?t.types[0]:void 0}function KA(e){if(Yn(e))return qoe(e).map(t=>t.class);{let t=hR(e.heritageClauses,117);return t?.types}}function PI(e){return ku(e)?MI(e)||Je:Yr(e)&&Qi(oT(hp(e)),KA(e))||Je}function MI(e){let t=hR(e.heritageClauses,94);return t?t.types:void 0}function hR(e,t){if(e){for(let r of e)if(r.token===t)return r}}function cb(e,t){for(;e;){if(e.kind===t)return e;e=e.parent}}function Xu(e){return 81<=e&&e<=162}function K6(e){return 126<=e&&e<=162}function Ace(e){return Xu(e)&&!K6(e)}function Iwe(e){return 117<=e&&e<=125}function _S(e){let t=uT(e);return t!==void 0&&Ace(t)}function Lwe(e){let t=uT(e);return t!==void 0&&Xu(t)}function q6(e){let t=nb(e);return!!t&&!K6(t)}function qA(e){return 2<=e&&e<=7}function pl(e){if(!e)return 4;let t=0;switch(e.kind){case 259:case 215:case 171:e.asteriskToken&&(t|=1);case 216:Mr(e,512)&&(t|=2);break}return e.body||(t|=4),t}function XA(e){switch(e.kind){case 259:case 215:case 216:case 171:return e.body!==void 0&&e.asteriskToken===void 0&&Mr(e,512)}return!1}function gf(e){return es(e)||Uf(e)}function X6(e){return tv(e)&&(e.operator===39||e.operator===40)&&Uf(e.operand)}function Xy(e){let t=sa(e);return!!t&&Y6(t)}function Y6(e){if(!(e.kind===164||e.kind===209))return!1;let t=Vs(e)?vs(e.argumentExpression):e.expression;return!gf(t)&&!X6(t)}function M0(e){switch(e.kind){case 79:case 80:return e.escapedText;case 10:case 8:return Bs(e.text);case 164:let t=e.expression;return gf(t)?Bs(t.text):X6(t)?t.operator===40?Xa(t.operator)+t.operand.text:t.operand.text:void 0;default:return L.assertNever(e)}}function s_(e){switch(e.kind){case 79:case 10:case 14:case 8:return!0;default:return!1}}function c_(e){return Ah(e)?vr(e):e.text}function FI(e){return Ah(e)?e.escapedText:Bs(e.text)}function kwe(e){return`__@${$a(e)}@${e.escapedName}`}function gR(e,t){return`__#${$a(e)}@${t}`}function yR(e){return na(e.escapedName,\"__@\")}function Cce(e){return na(e.escapedName,\"__#\")}function Dwe(e){return e.kind===79&&e.escapedText===\"Symbol\"}function Ice(e){return Re(e)?vr(e)===\"__proto__\":yo(e)&&e.text===\"__proto__\"}function GI(e,t){switch(e=ql(e),e.kind){case 228:case 215:if(e.name)return!1;break;case 216:break;default:return!1}return typeof t==\"function\"?t(e):!0}function VH(e){switch(e.kind){case 299:return!Ice(e.name);case 300:return!!e.objectAssignmentInitializer;case 257:return Re(e.name)&&!!e.initializer;case 166:return Re(e.name)&&!!e.initializer&&!e.dotDotDotToken;case 205:return Re(e.name)&&!!e.initializer&&!e.dotDotDotToken;case 169:return!!e.initializer;case 223:switch(e.operatorToken.kind){case 63:case 76:case 75:case 77:return Re(e.left)}break;case 274:return!0}return!1}function yf(e,t){if(!VH(e))return!1;switch(e.kind){case 299:return GI(e.initializer,t);case 300:return GI(e.objectAssignmentInitializer,t);case 257:case 166:case 205:case 169:return GI(e.initializer,t);case 223:return GI(e.right,t);case 274:return GI(e.expression,t)}}function jH(e){return e.escapedText===\"push\"||e.escapedText===\"unshift\"}function IT(e){return nm(e).kind===166}function nm(e){for(;e.kind===205;)e=e.parent.parent;return e}function HH(e){let t=e.kind;return t===173||t===215||t===259||t===216||t===171||t===174||t===175||t===264||t===308}function ws(e){return vp(e.pos)||vp(e.end)}function wwe(e){return ea(e,Li)||e}function WH(e){let t=JH(e),r=e.kind===211&&e.arguments!==void 0;return zH(e.kind,t,r)}function zH(e,t,r){switch(e){case 211:return r?0:1;case 221:case 218:case 219:case 217:case 220:case 224:case 226:return 1;case 223:switch(t){case 42:case 63:case 64:case 65:case 67:case 66:case 68:case 69:case 70:case 71:case 72:case 73:case 78:case 74:case 75:case 76:case 77:return 1}}return 0}function $6(e){let t=JH(e),r=e.kind===211&&e.arguments!==void 0;return vR(e.kind,t,r)}function JH(e){return e.kind===223?e.operatorToken.kind:e.kind===221||e.kind===222?e.operator:e.kind}function vR(e,t,r){switch(e){case 357:return 0;case 227:return 1;case 226:return 2;case 224:return 4;case 223:switch(t){case 27:return 0;case 63:case 64:case 65:case 67:case 66:case 68:case 69:case 70:case 71:case 72:case 73:case 78:case 74:case 75:case 76:case 77:return 3;default:return bR(t)}case 213:case 232:case 221:case 218:case 219:case 217:case 220:return 16;case 222:return 17;case 210:return 18;case 211:return r?19:18;case 212:case 208:case 209:case 233:return 19;case 231:case 235:return 11;case 108:case 106:case 79:case 80:case 104:case 110:case 95:case 8:case 9:case 10:case 206:case 207:case 215:case 216:case 228:case 13:case 14:case 225:case 214:case 229:case 281:case 282:case 285:return 20;default:return-1}}function bR(e){switch(e){case 60:return 4;case 56:return 5;case 55:return 6;case 51:return 7;case 52:return 8;case 50:return 9;case 34:case 35:case 36:case 37:return 10;case 29:case 31:case 32:case 33:case 102:case 101:case 128:case 150:return 11;case 47:case 48:case 49:return 12;case 39:case 40:return 13;case 41:case 43:case 44:return 14;case 42:return 15}return-1}function ER(e){return Pr(e,t=>{switch(t.kind){case 291:return!!t.expression;case 11:return!t.containsOnlyTriviaWhiteSpaces;default:return!0}})}function YA(){let e=[],t=[],r=new Map,i=!1;return{add:s,lookup:o,getGlobalDiagnostics:l,getDiagnostics:f};function o(d){let g;if(d.file?g=r.get(d.file.fileName):g=e,!g)return;let m=Py(g,d,Ks,c4);if(m>=0)return g[m]}function s(d){let g;d.file?(g=r.get(d.file.fileName),g||(g=[],r.set(d.file.fileName,g),Ny(t,d.file.fileName,su))):(i&&(i=!1,e=e.slice()),g=e),Ny(g,d,c4)}function l(){return i=!0,e}function f(d){if(d)return r.get(d)||[];let g=UD(t,m=>r.get(m));return e.length&&g.unshift(...e),g}}function Rwe(e){return e.replace(Jle,\"\\\\${\")}function KH(e){return e&&!!(LS(e)?e.templateFlags:e.head.templateFlags||vt(e.templateSpans,t=>!!t.literal.templateFlags))}function Lce(e){let t=e.toString(16).toUpperCase(),r=(\"0000\"+t).slice(-4);return\"\\\\u\"+r}function Owe(e,t,r){if(e.charCodeAt(0)===0){let i=r.charCodeAt(t+e.length);return i>=48&&i<=57?\"\\\\x00\":\"\\\\0\"}return Yle.get(e)||Lce(e.charCodeAt(0))}function pS(e,t){let r=t===96?Xle:t===39?qle:Kle;return e.replace(r,Owe)}function TR(e,t){return e=pS(e,t),ez.test(e)?e.replace(ez,r=>Lce(r.charCodeAt(0))):e}function Nwe(e){let t=e.toString(16).toUpperCase();return\"&#x\"+t+\";\"}function Pwe(e){return e.charCodeAt(0)===0?\"&#0;\":Zle.get(e)||Nwe(e.charCodeAt(0))}function qH(e,t){let r=t===39?Qle:$le;return e.replace(r,Pwe)}function l_(e){let t=e.length;return t>=2&&e.charCodeAt(0)===e.charCodeAt(t-1)&&Mwe(e.charCodeAt(0))?e.substring(1,t-1):e}function Mwe(e){return e===39||e===34||e===96}function BI(e){let t=e.charCodeAt(0);return t>=97&&t<=122||jl(e,\"-\")||jl(e,\":\")}function Q6(e){let t=c2[1];for(let r=c2.length;r<=e;r++)c2.push(c2[r-1]+t);return c2[e]}function $A(){return c2[1].length}function SR(){return jl(wf,\"-dev\")||jl(wf,\"-insiders\")}function xR(e){var t,r,i,o,s,l=!1;function f(C){let P=gw(C);P.length>1?(o=o+P.length-1,s=t.length-C.length+To(P),i=s-t.length===0):i=!1}function d(C){C&&C.length&&(i&&(C=Q6(r)+C,i=!1),t+=C,f(C))}function g(C){C&&(l=!1),d(C)}function m(C){C&&(l=!0),d(C)}function v(){t=\"\",r=0,i=!0,o=0,s=0,l=!1}function S(C){C!==void 0&&(t+=C,f(C),l=!1)}function x(C){C&&C.length&&g(C)}function A(C){(!i||C)&&(t+=e,o++,s=t.length,i=!0,l=!1)}function w(){return i?t.length:t.length+e.length}return v(),{write:g,rawWrite:S,writeLiteral:x,writeLine:A,increaseIndent:()=>{r++},decreaseIndent:()=>{r--},getIndent:()=>r,getTextPos:()=>t.length,getLine:()=>o,getColumn:()=>i?r*$A():t.length-s,getText:()=>t,isAtStartOfLine:()=>i,hasTrailingComment:()=>l,hasTrailingWhitespace:()=>!!t.length&&xh(t.charCodeAt(t.length-1)),clear:v,writeKeyword:g,writeOperator:g,writeParameter:g,writeProperty:g,writePunctuation:g,writeSpace:g,writeStringLiteral:g,writeSymbol:(C,P)=>g(C),writeTrailingSemicolon:g,writeComment:m,getTextPosWithWriteLine:w}}function XH(e){let t=!1;function r(){t&&(e.writeTrailingSemicolon(\";\"),t=!1)}return{...e,writeTrailingSemicolon(){t=!0},writeLiteral(i){r(),e.writeLiteral(i)},writeStringLiteral(i){r(),e.writeStringLiteral(i)},writeSymbol(i,o){r(),e.writeSymbol(i,o)},writePunctuation(i){r(),e.writePunctuation(i)},writeKeyword(i){r(),e.writeKeyword(i)},writeOperator(i){r(),e.writeOperator(i)},writeParameter(i){r(),e.writeParameter(i)},writeSpace(i){r(),e.writeSpace(i)},writeProperty(i){r(),e.writeProperty(i)},writeComment(i){r(),e.writeComment(i)},writeLine(){r(),e.writeLine()},increaseIndent(){r(),e.increaseIndent()},decreaseIndent(){r(),e.decreaseIndent()}}}function AR(e){return e.useCaseSensitiveFileNames?e.useCaseSensitiveFileNames():!1}function lb(e){return Dl(AR(e))}function Z6(e,t,r){return t.moduleName||YH(e,t.fileName,r&&r.fileName)}function kce(e,t){return e.getCanonicalFileName(_a(t,e.getCurrentDirectory()))}function Dce(e,t,r){let i=t.getExternalModuleFileFromDeclaration(r);if(!i||i.isDeclarationFile)return;let o=VA(r);if(!(o&&es(o)&&!zd(o.text)&&kce(e,i.path).indexOf(kce(e,cu(e.getCommonSourceDirectory())))===-1))return Z6(e,i)}function YH(e,t,r){let i=d=>e.getCanonicalFileName(d),o=Ts(r?ni(r):e.getCommonSourceDirectory(),e.getCurrentDirectory(),i),s=_a(t,e.getCurrentDirectory()),l=Z1(o,s,o,i,!1),f=ld(l);return r?S0(f):f}function wce(e,t,r){let i=t.getCompilerOptions(),o;return i.outDir?o=ld(e4(e,t,i.outDir)):o=ld(e),o+r}function Rce(e,t){return $H(e,t.getCompilerOptions(),t.getCurrentDirectory(),t.getCommonSourceDirectory(),r=>t.getCanonicalFileName(r))}function $H(e,t,r,i,o){let s=t.declarationDir||t.outDir,l=s?tW(e,s,r,i,o):e,f=QH(l);return ld(l)+f}function QH(e){return $c(e,[\".mjs\",\".mts\"])?\".d.mts\":$c(e,[\".cjs\",\".cts\"])?\".d.cts\":$c(e,[\".json\"])?\".d.json.ts\":\".d.ts\"}function Oce(e){return $c(e,[\".d.mts\",\".mjs\",\".mts\"])?[\".mts\",\".mjs\"]:$c(e,[\".d.cts\",\".cjs\",\".cts\"])?[\".cts\",\".cjs\"]:$c(e,[\".d.json.ts\"])?[\".json\"]:[\".tsx\",\".ts\",\".jsx\",\".js\"]}function Ss(e){return e.outFile||e.out}function ZH(e,t){var r,i;if(!!e.paths)return(i=e.baseUrl)!=null?i:L.checkDefined(e.pathsBasePath||((r=t.getCurrentDirectory)==null?void 0:r.call(t)),\"Encountered 'paths' without a 'baseUrl', config file, or host 'getCurrentDirectory'.\")}function eW(e,t,r){let i=e.getCompilerOptions();if(Ss(i)){let o=Rl(i),s=i.emitDeclarationOnly||o===2||o===4;return Pr(e.getSourceFiles(),l=>(s||!Lc(l))&&mS(l,e,r))}else{let o=t===void 0?e.getSourceFiles():[t];return Pr(o,s=>mS(s,e,r))}}function mS(e,t,r){return!(t.getCompilerOptions().noEmitForJsFiles&&Cu(e))&&!e.isDeclarationFile&&!t.isSourceFileFromExternalLibrary(e)&&(r||!(Pf(e)&&t.getResolvedProjectReferenceToRedirect(e.fileName))&&!t.isSourceOfProjectReferenceRedirect(e.fileName))}function e4(e,t,r){return tW(e,r,t.getCurrentDirectory(),t.getCommonSourceDirectory(),i=>t.getCanonicalFileName(i))}function tW(e,t,r,i,o){let s=_a(e,r);return s=o(s).indexOf(o(i))===0?s.substring(i.length):s,vi(t,s)}function UI(e,t,r,i,o,s,l){e.writeFile(r,i,o,f=>{t.add(ps(_.Could_not_write_file_0_Colon_1,r,f))},s,l)}function Nce(e,t,r){if(e.length>_p(e)&&!r(e)){let i=ni(e);Nce(i,t,r),t(e)}}function nW(e,t,r,i,o,s){try{i(e,t,r)}catch{Nce(ni(So(e)),o,s),i(e,t,r)}}function VI(e,t){let r=Sh(e);return oI(r,t)}function LT(e,t){return oI(e,t)}function Vm(e){return wr(e.members,t=>Ec(t)&&Nf(t.body))}function jI(e){if(e&&e.parameters.length>0){let t=e.parameters.length===2&&G0(e.parameters[0]);return e.parameters[t?1:0]}}function Pce(e){let t=jI(e);return t&&t.type}function F0(e){if(e.parameters.length&&!X0(e)){let t=e.parameters[0];if(G0(t))return t}}function G0(e){return kT(e.name)}function kT(e){return!!e&&e.kind===79&&rW(e)}function hS(e){if(!kT(e))return!1;for(;Yu(e.parent)&&e.parent.left===e;)e=e.parent;return e.parent.kind===183}function rW(e){return e.escapedText===\"this\"}function DT(e,t){let r,i,o,s;return Xy(t)?(r=t,t.kind===174?o=t:t.kind===175?s=t:L.fail(\"Accessor has wrong kind\")):mn(e,l=>{if(rb(l)&&Ca(l)===Ca(t)){let f=M0(l.name),d=M0(t.name);f===d&&(r?i||(i=l):r=l,l.kind===174&&!o&&(o=l),l.kind===175&&!s&&(s=l))}}),{firstAccessor:r,secondAccessor:i,getAccessor:o,setAccessor:s}}function Cl(e){if(!Yn(e)&&Jc(e))return;let t=e.type;return t||!Yn(e)?t:a6(e)?e.typeExpression&&e.typeExpression.type:Vy(e)}function Mce(e){return e.type}function B_(e){return X0(e)?e.type&&e.type.typeExpression&&e.type.typeExpression.type:e.type||(Yn(e)?Cw(e):void 0)}function t4(e){return Uo(A0(e),t=>Fwe(t)?t.typeParameters:void 0)}function Fwe(e){return j_(e)&&!(e.parent.kind===323&&(e.parent.tags.some(Mf)||e.parent.tags.some(DL)))}function Fce(e){let t=jI(e);return t&&Cl(t)}function Gce(e,t,r,i){Bce(e,t,r.pos,i)}function Bce(e,t,r,i){i&&i.length&&r!==i[0].pos&&LT(e,r)!==LT(e,i[0].pos)&&t.writeLine()}function Uce(e,t,r,i){r!==i&&LT(e,r)!==LT(e,i)&&t.writeLine()}function Vce(e,t,r,i,o,s,l,f){if(i&&i.length>0){o&&r.writeSpace(\" \");let d=!1;for(let g of i)d&&(r.writeSpace(\" \"),d=!1),f(e,t,r,g.pos,g.end,l),g.hasTrailingNewLine?r.writeLine():d=!0;d&&s&&r.writeSpace(\" \")}}function jce(e,t,r,i,o,s,l){let f,d;if(l?o.pos===0&&(f=Pr(Nm(e,o.pos),g)):f=Nm(e,o.pos),f){let m=[],v;for(let S of f){if(v){let x=LT(t,v.end);if(LT(t,S.pos)>=x+2)break}m.push(S),v=S}if(m.length){let S=LT(t,To(m).end);LT(t,xo(e,o.pos))>=S+2&&(Gce(t,r,o,f),Vce(e,t,r,m,!1,!0,s,i),d={nodePos:o.pos,detachedCommentEndPos:To(m).end})}}return d;function g(m){return y6(e,m.pos)}}function QA(e,t,r,i,o,s){if(e.charCodeAt(i+1)===42){let l=vw(t,i),f=t.length,d;for(let g=i,m=l.line;g<o;m++){let v=m+1===f?e.length+1:t[m+1];if(g!==i){d===void 0&&(d=Hce(e,t[l.line],i));let x=r.getIndent()*$A()-d+Hce(e,g,v);if(x>0){let A=x%$A(),w=Q6((x-A)/$A());for(r.rawWrite(w);A;)r.rawWrite(\" \"),A--}else r.rawWrite(\"\")}Gwe(e,o,r,s,g,v),g=v}}else r.writeComment(e.substring(i,o))}function Gwe(e,t,r,i,o,s){let l=Math.min(t,s-1),f=v0(e.substring(o,l));f?(r.writeComment(f),l!==t&&r.writeLine()):r.rawWrite(i)}function Hce(e,t,r){let i=0;for(;t<r&&Yp(e.charCodeAt(t));t++)e.charCodeAt(t)===9?i+=$A()-i%$A():i++;return i}function n4(e){return uu(e)!==0}function Wce(e){return Yy(e)!==0}function cd(e,t){return!!gS(e,t)}function Mr(e,t){return!!zce(e,t)}function Ca(e){return _l(e)&&zc(e)||oc(e)}function zc(e){return Mr(e,32)}function iW(e){return cd(e,16384)}function B0(e){return Mr(e,256)}function aW(e){return Mr(e,2)}function rm(e){return Mr(e,128)}function HI(e){return cd(e,64)}function vf(e){return Mr(e,131072)}function gS(e,t){return uu(e)&t}function zce(e,t){return Yy(e)&t}function oW(e,t,r){return e.kind>=0&&e.kind<=162?0:(e.modifierFlagsCache&536870912||(e.modifierFlagsCache=sW(e)|536870912),t&&!(e.modifierFlagsCache&4096)&&(r||Yn(e))&&e.parent&&(e.modifierFlagsCache|=Kce(e)|4096),e.modifierFlagsCache&-536875009)}function uu(e){return oW(e,!0)}function Jce(e){return oW(e,!0,!0)}function Yy(e){return oW(e,!1)}function Kce(e){let t=0;return!!e.parent&&!ha(e)&&(Yn(e)&&(Xoe(e)&&(t|=4),Yoe(e)&&(t|=8),$oe(e)&&(t|=16),Qoe(e)&&(t|=64),Zoe(e)&&(t|=16384)),ese(e)&&(t|=8192)),t}function qce(e){return sW(e)|Kce(e)}function sW(e){let t=h_(e)?im(e.modifiers):0;return(e.flags&4||e.kind===79&&e.flags&2048)&&(t|=1),t}function im(e){let t=0;if(e)for(let r of e)t|=yS(r.kind);return t}function yS(e){switch(e){case 124:return 32;case 123:return 4;case 122:return 16;case 121:return 8;case 126:return 256;case 127:return 128;case 93:return 1;case 136:return 2;case 85:return 2048;case 88:return 1024;case 132:return 512;case 146:return 64;case 161:return 16384;case 101:return 32768;case 145:return 65536;case 167:return 131072}return 0}function Xce(e){return e===56||e===55}function Yce(e){return Xce(e)||e===53}function WI(e){return e===75||e===76||e===77}function cW(e){return ar(e)&&WI(e.operatorToken.kind)}function CR(e){return Xce(e)||e===60}function IR(e){return ar(e)&&CR(e.operatorToken.kind)}function Mg(e){return e>=63&&e<=78}function lW(e){let t=uW(e);return t&&!t.isImplements?t.class:void 0}function uW(e){if(Vg(e)){if(dd(e.parent)&&Yr(e.parent.parent))return{class:e.parent.parent,isImplements:e.parent.token===117};if(A2(e.parent)){let t=zA(e.parent);if(t&&Yr(t))return{class:t,isImplements:!1}}}}function Iu(e,t){return ar(e)&&(t?e.operatorToken.kind===63:Mg(e.operatorToken.kind))&&Ju(e.left)}function Bwe(e){return Iu(e.parent)&&e.parent.left===e}function Fg(e){if(Iu(e,!0)){let t=e.left.kind;return t===207||t===206}return!1}function LR(e){return lW(e)!==void 0}function bc(e){return e.kind===79||kR(e)}function Xd(e){switch(e.kind){case 79:return e;case 163:do e=e.left;while(e.kind!==79);return e;case 208:do e=e.expression;while(e.kind!==79);return e}}function zI(e){return e.kind===79||e.kind===108||e.kind===106||e.kind===233||e.kind===208&&zI(e.expression)||e.kind===214&&zI(e.expression)}function kR(e){return br(e)&&Re(e.name)&&bc(e.expression)}function DR(e){if(br(e)){let t=DR(e.expression);if(t!==void 0)return t+\".\"+Kd(e.name)}else if(Vs(e)){let t=DR(e.expression);if(t!==void 0&&Ys(e.argumentExpression))return t+\".\"+M0(e.argumentExpression)}else if(Re(e))return Gi(e.escapedText)}function ub(e){return xT(e)&&wh(e)===\"prototype\"}function JI(e){return e.parent.kind===163&&e.parent.right===e||e.parent.kind===208&&e.parent.name===e}function $ce(e){return br(e.parent)&&e.parent.name===e||Vs(e.parent)&&e.parent.argumentExpression===e}function Qce(e){return Yu(e.parent)&&e.parent.right===e||br(e.parent)&&e.parent.name===e||gb(e.parent)&&e.parent.right===e}function dW(e){return e.kind===207&&e.properties.length===0}function Zce(e){return e.kind===206&&e.elements.length===0}function ZA(e){if(!(!Uwe(e)||!e.declarations)){for(let t of e.declarations)if(t.localSymbol)return t.localSymbol}}function Uwe(e){return e&&Fn(e.declarations)>0&&Mr(e.declarations[0],1024)}function r4(e){return wr(iue,t=>Gc(e,t))}function Vwe(e){let t=[],r=e.length;for(let i=0;i<r;i++){let o=e.charCodeAt(i);o<128?t.push(o):o<2048?(t.push(o>>6|192),t.push(o&63|128)):o<65536?(t.push(o>>12|224),t.push(o>>6&63|128),t.push(o&63|128)):o<131072?(t.push(o>>18|240),t.push(o>>12&63|128),t.push(o>>6&63|128),t.push(o&63|128)):L.assert(!1,\"Unexpected code point\")}return t}function ele(e){let t=\"\",r=Vwe(e),i=0,o=r.length,s,l,f,d;for(;i<o;)s=r[i]>>2,l=(r[i]&3)<<4|r[i+1]>>4,f=(r[i+1]&15)<<2|r[i+2]>>6,d=r[i+2]&63,i+1>=o?f=d=64:i+2>=o&&(d=64),t+=H0.charAt(s)+H0.charAt(l)+H0.charAt(f)+H0.charAt(d),i+=3;return t}function jwe(e){let t=\"\",r=0,i=e.length;for(;r<i;){let o=e[r];if(o<128)t+=String.fromCharCode(o),r++;else if((o&192)===192){let s=o&63;r++;let l=e[r];for(;(l&192)===128;)s=s<<6|l&63,r++,l=e[r];t+=String.fromCharCode(s)}else t+=String.fromCharCode(o),r++}return t}function tle(e,t){return e&&e.base64encode?e.base64encode(t):ele(t)}function nle(e,t){if(e&&e.base64decode)return e.base64decode(t);let r=t.length,i=[],o=0;for(;o<r&&t.charCodeAt(o)!==H0.charCodeAt(64);){let s=H0.indexOf(t[o]),l=H0.indexOf(t[o+1]),f=H0.indexOf(t[o+2]),d=H0.indexOf(t[o+3]),g=(s&63)<<2|l>>4&3,m=(l&15)<<4|f>>2&15,v=(f&3)<<6|d&63;m===0&&f!==0?i.push(g):v===0&&d!==0?i.push(g,m):i.push(g,m,v),o+=4}return jwe(i)}function fW(e,t){let r=Ta(t)?t:t.readFile(e);if(!r)return;let i=vJ(e,r);return i.error?void 0:i.config}function KI(e,t){return fW(e,t)||{}}function gp(e,t){return!t.directoryExists||t.directoryExists(e)}function db(e){switch(e.newLine){case 0:return eue;case 1:case void 0:return tue}}function Ff(e,t=e){return L.assert(t>=e||t===-1),{pos:e,end:t}}function i4(e,t){return Ff(e.pos,t)}function fb(e,t){return Ff(t,e.end)}function $y(e){let t=h_(e)?fA(e.modifiers,du):void 0;return t&&!vp(t.end)?fb(e,t.end):e}function yp(e){if(Na(e)||Nc(e))return fb(e,e.name.pos);let t=h_(e)?Os(e.modifiers):void 0;return t&&!vp(t.end)?fb(e,t.end):$y(e)}function Hwe(e){return e.pos===e.end}function _W(e,t){return Ff(e,e+Xa(t).length)}function wT(e,t){return ile(e,e,t)}function a4(e,t,r){return Gf(qI(e,r,!1),qI(t,r,!1),r)}function rle(e,t,r){return Gf(e.end,t.end,r)}function ile(e,t,r){return Gf(qI(e,r,!1),t.end,r)}function wR(e,t,r){return Gf(e.end,qI(t,r,!1),r)}function pW(e,t,r,i){let o=qI(t,r,i);return sI(r,e.end,o)}function Wwe(e,t,r){return sI(r,e.end,t.end)}function ale(e,t){return!Gf(e.pos,e.end,t)}function Gf(e,t,r){return sI(r,e,t)===0}function qI(e,t,r){return vp(e.pos)?-1:xo(t.text,e.pos,!1,r)}function ole(e,t,r,i){let o=xo(r.text,e,!1,i),s=zwe(o,t,r);return sI(r,s??t,o)}function sle(e,t,r,i){let o=xo(r.text,e,!1,i);return sI(r,e,Math.min(t,o))}function zwe(e,t=0,r){for(;e-- >t;)if(!xh(r.text.charCodeAt(e)))return e}function RR(e){let t=ea(e);if(t)switch(t.parent.kind){case 263:case 264:return t===t.parent.name}return!1}function XI(e){return Pr(e.declarations,mW)}function mW(e){return wi(e)&&e.initializer!==void 0}function Jwe(e){return e.watch&&fs(e,\"watch\")}function am(e){e.close()}function ac(e){return e.flags&33554432?e.links.checkFlags:0}function bf(e,t=!1){if(e.valueDeclaration){let r=t&&e.declarations&&wr(e.declarations,Tf)||e.flags&32768&&wr(e.declarations,__)||e.valueDeclaration,i=wg(r);return e.parent&&e.parent.flags&32?i:i&-29}if(ac(e)&6){let r=e.links.checkFlags,i=r&1024?8:r&256?4:16,o=r&2048?32:0;return i|o}return e.flags&4194304?36:0}function wd(e,t){return e.flags&2097152?t.getAliasedSymbol(e):e}function YI(e){return e.exportSymbol?e.exportSymbol.flags|e.flags:e.flags}function hW(e){return e2(e)===1}function $I(e){return e2(e)!==0}function e2(e){let{parent:t}=e;if(!t)return 0;switch(t.kind){case 214:return e2(t);case 222:case 221:let{operator:i}=t;return i===45||i===46?r():0;case 223:let{left:o,operatorToken:s}=t;return o===e&&Mg(s.kind)?s.kind===63?1:r():0;case 208:return t.name!==e?0:e2(t);case 299:{let l=e2(t.parent);return e===t.name?Kwe(l):l}case 300:return e===t.objectAssignmentInitializer?0:e2(t.parent);case 206:return e2(t);default:return 0}function r(){return t.parent&&qy(t.parent).kind===241?1:2}}function Kwe(e){switch(e){case 0:return 1;case 1:return 0;case 2:return 2;default:return L.assertNever(e)}}function gW(e,t){if(!e||!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let r in e)if(typeof e[r]==\"object\"){if(!gW(e[r],t[r]))return!1}else if(typeof e[r]!=\"function\"&&e[r]!==t[r])return!1;return!0}function Ef(e,t){e.forEach(t),e.clear()}function Oh(e,t,r){let{onDeleteValue:i,onExistingValue:o}=r;e.forEach((s,l)=>{let f=t.get(l);f===void 0?(e.delete(l),i(s,l)):o&&o(s,f,l)})}function t2(e,t,r){Oh(e,t,r);let{createNewValue:i}=r;t.forEach((o,s)=>{e.has(s)||e.set(s,i(s,o))})}function cle(e){if(e.flags&32){let t=Nh(e);return!!t&&Mr(t,256)}return!1}function Nh(e){var t;return(t=e.declarations)==null?void 0:t.find(Yr)}function Ur(e){return e.flags&3899393?e.objectFlags:0}function qwe(e,t){return!!Th(e,r=>t(r)?!0:void 0)}function o4(e){return!!e&&!!e.declarations&&!!e.declarations[0]&&yO(e.declarations[0])}function lle({moduleSpecifier:e}){return yo(e)?e.text:Qc(e)}function yW(e){let t;return pa(e,r=>{Nf(r)&&(t=r)},r=>{for(let i=r.length-1;i>=0;i--)if(Nf(r[i])){t=r[i];break}}),t}function U_(e,t,r=!0){return e.has(t)?!1:(e.set(t,r),!0)}function vS(e){return Yr(e)||ku(e)||Rd(e)}function vW(e){return e>=179&&e<=202||e===131||e===157||e===148||e===160||e===149||e===134||e===152||e===153||e===114||e===155||e===144||e===139||e===230||e===315||e===316||e===317||e===318||e===319||e===320||e===321}function Us(e){return e.kind===208||e.kind===209}function ule(e){return e.kind===208?e.name:(L.assert(e.kind===209),e.argumentExpression)}function dle(e){switch(e.kind){case\"text\":case\"internal\":return!0;default:return!1}}function bW(e){return e.kind===272||e.kind===276}function QI(e){for(;Us(e);)e=e.expression;return e}function Xwe(e,t){if(Us(e.parent)&&$ce(e))return r(e.parent);function r(i){if(i.kind===208){let o=t(i.name);if(o!==void 0)return o}else if(i.kind===209)if(Re(i.argumentExpression)||es(i.argumentExpression)){let o=t(i.argumentExpression);if(o!==void 0)return o}else return;if(Us(i.expression))return r(i.expression);if(Re(i.expression))return t(i.expression)}}function ZI(e,t){for(;;){switch(e.kind){case 222:e=e.operand;continue;case 223:e=e.left;continue;case 224:e=e.condition;continue;case 212:e=e.tag;continue;case 210:if(t)return e;case 231:case 209:case 208:case 232:case 356:case 235:e=e.expression;continue}return e}}function Ywe(e,t){this.flags=e,this.escapedName=t,this.declarations=void 0,this.valueDeclaration=void 0,this.id=0,this.mergeId=0,this.parent=void 0,this.members=void 0,this.exports=void 0,this.exportSymbol=void 0,this.constEnumOnlyModule=void 0,this.isReferenced=void 0,this.isAssigned=void 0,this.links=void 0}function $we(e,t){this.flags=t,(L.isDebugging||ai)&&(this.checker=e)}function Qwe(e,t){this.flags=t,L.isDebugging&&(this.checker=e)}function EW(e,t,r){this.pos=t,this.end=r,this.kind=e,this.id=0,this.flags=0,this.modifierFlagsCache=0,this.transformFlags=0,this.parent=void 0,this.original=void 0,this.emitNode=void 0}function Zwe(e,t,r){this.pos=t,this.end=r,this.kind=e,this.id=0,this.flags=0,this.transformFlags=0,this.parent=void 0,this.emitNode=void 0}function eRe(e,t,r){this.pos=t,this.end=r,this.kind=e,this.id=0,this.flags=0,this.transformFlags=0,this.parent=void 0,this.original=void 0,this.emitNode=void 0}function tRe(e,t,r){this.fileName=e,this.text=t,this.skipTrivia=r||(i=>i)}function fle(e){tz.push(e),e(ml)}function _le(e){Object.assign(ml,e),mn(tz,t=>t(ml))}function jm(e,t,r=0){return e.replace(/{(\\d+)}/g,(i,o)=>\"\"+L.checkDefined(t[+o+r]))}function ple(e){XR=e}function mle(e){!XR&&e&&(XR=e())}function uo(e){return XR&&XR[e.key]||e.message}function n2(e,t,r,i){gH(void 0,t,r);let o=uo(i);return arguments.length>4&&(o=jm(o,arguments,4)),{file:void 0,start:t,length:r,messageText:o,category:i.category,code:i.code,reportsUnnecessary:i.reportsUnnecessary,fileName:e}}function nRe(e){return e.file===void 0&&e.start!==void 0&&e.length!==void 0&&typeof e.fileName==\"string\"}function hle(e,t){let r=t.fileName||\"\",i=t.text.length;L.assertEqual(e.fileName,r),L.assertLessThanOrEqual(e.start,i),L.assertLessThanOrEqual(e.start+e.length,i);let o={file:t,start:e.start,length:e.length,messageText:e.messageText,category:e.category,code:e.code,reportsUnnecessary:e.reportsUnnecessary};if(e.relatedInformation){o.relatedInformation=[];for(let s of e.relatedInformation)nRe(s)&&s.fileName===r?(L.assertLessThanOrEqual(s.start,i),L.assertLessThanOrEqual(s.start+s.length,i),o.relatedInformation.push(hle(s,t))):o.relatedInformation.push(s)}return o}function bS(e,t){let r=[];for(let i of e)r.push(hle(i,t));return r}function al(e,t,r,i){gH(e,t,r);let o=uo(i);return arguments.length>4&&(o=jm(o,arguments,4)),{file:e,start:t,length:r,messageText:o,category:i.category,code:i.code,reportsUnnecessary:i.reportsUnnecessary,reportsDeprecated:i.reportsDeprecated}}function TW(e,t){let r=uo(t);return arguments.length>2&&(r=jm(r,arguments,2)),r}function ps(e){let t=uo(e);return arguments.length>1&&(t=jm(t,arguments,1)),{file:void 0,start:void 0,length:void 0,messageText:t,category:e.category,code:e.code,reportsUnnecessary:e.reportsUnnecessary,reportsDeprecated:e.reportsDeprecated}}function s4(e,t){return{file:void 0,start:void 0,length:void 0,code:e.code,category:e.category,messageText:e.next?e:e.messageText,relatedInformation:t}}function da(e,t){let r=uo(t);return arguments.length>2&&(r=jm(r,arguments,2)),{messageText:r,category:t.category,code:t.code,next:e===void 0||Array.isArray(e)?e:[e]}}function gle(e,t){let r=e;for(;r.next;)r=r.next[0];r.next=[t]}function yle(e){return e.file?e.file.path:void 0}function eL(e,t){return c4(e,t)||rRe(e,t)||0}function c4(e,t){return su(yle(e),yle(t))||Es(e.start,t.start)||Es(e.length,t.length)||Es(e.code,t.code)||vle(e.messageText,t.messageText)||0}function rRe(e,t){return!e.relatedInformation&&!t.relatedInformation?0:e.relatedInformation&&t.relatedInformation?Es(e.relatedInformation.length,t.relatedInformation.length)||mn(e.relatedInformation,(r,i)=>{let o=t.relatedInformation[i];return eL(r,o)})||0:e.relatedInformation?-1:1}function vle(e,t){if(typeof e==\"string\"&&typeof t==\"string\")return su(e,t);if(typeof e==\"string\")return-1;if(typeof t==\"string\")return 1;let r=su(e.messageText,t.messageText);if(r)return r;if(!e.next&&!t.next)return 0;if(!e.next)return-1;if(!t.next)return 1;let i=Math.min(e.next.length,t.next.length);for(let o=0;o<i;o++)if(r=vle(e.next[o],t.next[o]),r)return r;return e.next.length<t.next.length?-1:e.next.length>t.next.length?1:0}function OR(e){return e===4||e===2||e===1||e===6?1:0}function ble(e){if(!!(e.transformFlags&2))return Au(e)||US(e)?e:pa(e,ble)}function iRe(e){return e.isDeclarationFile?void 0:ble(e)}function aRe(e){return(e.impliedNodeFormat===99||$c(e.fileName,[\".cjs\",\".cts\",\".mjs\",\".mts\"]))&&!e.isDeclarationFile?!0:void 0}function NR(e){switch(Ele(e)){case 3:return o=>{o.externalModuleIndicator=kO(o)||!o.isDeclarationFile||void 0};case 1:return o=>{o.externalModuleIndicator=kO(o)};case 2:let t=[kO];(e.jsx===4||e.jsx===5)&&t.push(iRe),t.push(aRe);let r=Kp(...t);return o=>void(o.externalModuleIndicator=r(o))}}function Do(e){var t;return(t=e.target)!=null?t:e.module===100&&9||e.module===199&&99||1}function Rl(e){return typeof e.module==\"number\"?e.module:Do(e)>=2?5:1}function SW(e){return e>=5&&e<=99}function $s(e){let t=e.moduleResolution;if(t===void 0)switch(Rl(e)){case 1:t=2;break;case 100:t=3;break;case 199:t=99;break;default:t=1;break}return t}function Ele(e){return e.moduleDetection||(Rl(e)===100||Rl(e)===199?3:2)}function l4(e){switch(Rl(e)){case 1:case 2:case 5:case 6:case 7:case 99:case 100:case 199:return!0;default:return!1}}function u_(e){return!!(e.isolatedModules||e.verbatimModuleSyntax)}function u4(e){return e.verbatimModuleSyntax||e.isolatedModules&&e.preserveValueImports}function Tle(e){return e.allowUnreachableCode===!1}function Sle(e){return e.allowUnusedLabels===!1}function d4(e){return!!(f_(e)&&e.declarationMap)}function d_(e){if(e.esModuleInterop!==void 0)return e.esModuleInterop;switch(Rl(e)){case 100:case 199:return!0}}function RT(e){return e.allowSyntheticDefaultImports!==void 0?e.allowSyntheticDefaultImports:d_(e)||Rl(e)===4||$s(e)===100}function ES(e){return e>=3&&e<=99||e===100}function xW(e){let t=$s(e);if(!ES(t))return!1;if(e.resolvePackageJsonExports!==void 0)return e.resolvePackageJsonExports;switch(t){case 3:case 99:case 100:return!0}return!1}function oRe(e){let t=$s(e);if(!ES(t))return!1;if(e.resolvePackageJsonExports!==void 0)return e.resolvePackageJsonExports;switch(t){case 3:case 99:case 100:return!0}return!1}function OT(e){return e.resolveJsonModule!==void 0?e.resolveJsonModule:$s(e)===100}function f_(e){return!!(e.declaration||e.composite)}function U0(e){return!!(e.preserveConstEnums||u_(e))}function PR(e){return!!(e.incremental||e.composite)}function Bf(e,t){return e[t]===void 0?!!e.strict:!!e[t]}function MR(e){return e.allowJs===void 0?!!e.checkJs:e.allowJs}function FR(e){return e.useDefineForClassFields===void 0?Do(e)>=9:e.useDefineForClassFields}function xle(e,t){return kA(t,e,PJ)}function Ale(e,t){return kA(t,e,MJ)}function Cle(e,t){return kA(t,e,FJ)}function f4(e,t){return t.strictFlag?Bf(e,t.name):e[t.name]}function AW(e){let t=e.jsx;return t===2||t===4||t===5}function _4(e,t){let r=t?.pragmas.get(\"jsximportsource\"),i=ba(r)?r[r.length-1]:r;return e.jsx===4||e.jsx===5||e.jsxImportSource||i?i?.arguments.factory||e.jsxImportSource||\"react\":void 0}function p4(e,t){return e?`${e}/${t.jsx===5?\"jsx-dev-runtime\":\"jsx-runtime\"}`:void 0}function CW(e){let t=!1;for(let r=0;r<e.length;r++)if(e.charCodeAt(r)===42)if(!t)t=!0;else return!1;return!0}function Ile(e,t){let r,i,o,s=!1;return{getSymlinkedFiles:()=>o,getSymlinkedDirectories:()=>r,getSymlinkedDirectoriesByRealpath:()=>i,setSymlinkedFile:(f,d)=>(o||(o=new Map)).set(f,d),setSymlinkedDirectory:(f,d)=>{let g=Ts(f,e,t);cL(g)||(g=cu(g),d!==!1&&!r?.has(g)&&(i||(i=Of())).add(cu(d.realPath),f),(r||(r=new Map)).set(g,d))},setSymlinksFromResolutions(f,d){var g,m;L.assert(!s),s=!0;for(let v of f)(g=v.resolvedModules)==null||g.forEach(S=>l(this,S.resolvedModule)),(m=v.resolvedTypeReferenceDirectiveNames)==null||m.forEach(S=>l(this,S.resolvedTypeReferenceDirective));d.forEach(v=>l(this,v.resolvedTypeReferenceDirective))},hasProcessedResolutions:()=>s};function l(f,d){if(!d||!d.originalPath||!d.resolvedFileName)return;let{resolvedFileName:g,originalPath:m}=d;f.setSymlinkedFile(Ts(m,e,t),g);let[v,S]=sRe(g,m,e,t)||Je;v&&S&&f.setSymlinkedDirectory(S,{real:v,realPath:Ts(v,e,t)})}}function sRe(e,t,r,i){let o=Ou(_a(e,r)),s=Ou(_a(t,r)),l=!1;for(;o.length>=2&&s.length>=2&&!Lle(o[o.length-2],i)&&!Lle(s[s.length-2],i)&&i(o[o.length-1])===i(s[s.length-1]);)o.pop(),s.pop(),l=!0;return l?[T0(o),T0(s)]:void 0}function Lle(e,t){return e!==void 0&&(t(e)===\"node_modules\"||na(e,\"@\"))}function cRe(e){return sj(e.charCodeAt(0))?e.slice(1):void 0}function IW(e,t,r){let i=KU(e,t,r);return i===void 0?void 0:cRe(i)}function lRe(e){return e.replace(A4,uRe)}function uRe(e){return\"\\\\\"+e}function tL(e,t,r){let i=m4(e,t,r);return!i||!i.length?void 0:`^(${i.map(l=>`(${l})`).join(\"|\")})${r===\"exclude\"?\"($|/)\":\"$\"}`}function m4(e,t,r){if(!(e===void 0||e.length===0))return Uo(e,i=>i&&kle(i,t,r,oz[r]))}function LW(e){return!/[.*?]/.test(e)}function kW(e,t,r){let i=e&&kle(e,t,r,oz[r]);return i&&`^(${i})${r===\"exclude\"?\"($|/)\":\"$\"}`}function kle(e,t,r,{singleAsteriskRegexFragment:i,doubleAsteriskRegexFragment:o,replaceWildcardCharacter:s}){let l=\"\",f=!1,d=_w(e,t),g=To(d);if(r!==\"exclude\"&&g===\"**\")return;d[0]=cT(d[0]),LW(g)&&d.push(\"**\",\"*\");let m=0;for(let v of d){if(v===\"**\")l+=o;else if(r===\"directories\"&&(l+=\"(\",m++),f&&(l+=_s),r!==\"exclude\"){let S=\"\";v.charCodeAt(0)===42?(S+=\"([^./]\"+i+\")?\",v=v.substr(1)):v.charCodeAt(0)===63&&(S+=\"[^./]\",v=v.substr(1)),S+=v.replace(A4,s),S!==v&&(l+=C4),l+=S}else l+=v.replace(A4,s);f=!0}for(;m>0;)l+=\")?\",m--;return l}function DW(e,t){return e===\"*\"?t:e===\"?\"?\"[^/]\":\"\\\\\"+e}function nL(e,t,r,i,o){e=So(e),o=So(o);let s=vi(o,e);return{includeFilePatterns:on(m4(r,s,\"files\"),l=>`^${l}$`),includeFilePattern:tL(r,s,\"files\"),includeDirectoryPattern:tL(r,s,\"directories\"),excludePattern:tL(t,s,\"exclude\"),basePaths:dRe(e,r,i)}}function Qy(e,t){return new RegExp(e,t?\"\":\"i\")}function wW(e,t,r,i,o,s,l,f,d){e=So(e),s=So(s);let g=nL(e,r,i,o,s),m=g.includeFilePatterns&&g.includeFilePatterns.map(P=>Qy(P,o)),v=g.includeDirectoryPattern&&Qy(g.includeDirectoryPattern,o),S=g.excludePattern&&Qy(g.excludePattern,o),x=m?m.map(()=>[]):[[]],A=new Map,w=Dl(o);for(let P of g.basePaths)C(P,vi(s,P),l);return e_(x);function C(P,F,B){let q=w(d(F));if(A.has(q))return;A.set(q,!0);let{files:W,directories:Y}=f(P);for(let R of YC(W,su)){let ie=vi(P,R),Q=vi(F,R);if(!(t&&!$c(ie,t))&&!(S&&S.test(Q)))if(!m)x[0].push(ie);else{let fe=Yc(m,Z=>Z.test(Q));fe!==-1&&x[fe].push(ie)}}if(!(B!==void 0&&(B--,B===0)))for(let R of YC(Y,su)){let ie=vi(P,R),Q=vi(F,R);(!v||v.test(Q))&&(!S||!S.test(Q))&&C(ie,Q,B)}}}function dRe(e,t,r){let i=[e];if(t){let o=[];for(let s of t){let l=qp(s)?s:So(vi(e,s));o.push(fRe(l))}o.sort(p8(!r));for(let s of o)Ji(i,l=>!Gy(l,s,e,!r))&&i.push(s)}return i}function fRe(e){let t=cae(e,nue);return t<0?yA(e)?cT(ni(e)):e:e.substring(0,e.lastIndexOf(_s,t))}function h4(e,t){return t||RW(e)||3}function RW(e){switch(e.substr(e.lastIndexOf(\".\")).toLowerCase()){case\".js\":case\".cjs\":case\".mjs\":return 1;case\".jsx\":return 2;case\".ts\":case\".cts\":case\".mts\":return 3;case\".tsx\":return 4;case\".json\":return 6;default:return 0}}function rL(e,t){let r=e&&MR(e);if(!t||t.length===0)return r?YR:l2;let i=r?YR:l2,o=e_(i);return[...i,...Zi(t,l=>l.scriptKind===7||r&&_Re(l.scriptKind)&&o.indexOf(l.extension)===-1?[l.extension]:void 0)]}function GR(e,t){return!e||!OT(e)?t:t===YR?aue:t===l2?rue:[...t,[\".json\"]]}function _Re(e){return e===1||e===2}function TS(e){return vt(fL,t=>Gc(e,t))}function BR(e){return vt(sz,t=>Gc(e,t))}function Dle({imports:e},t=Kp(TS,BR)){return ks(e,({text:r})=>zd(r)?t(r):void 0)||!1}function OW(e,t,r,i){if(e===\"js\"||t===99)return jL(r)&&o()!==2?3:2;if(e===\"minimal\")return 0;if(e===\"index\")return 1;if(!jL(r))return Dle(i)?2:0;return o();function o(){let s=!1,l=i.imports.length?i.imports.map(f=>f.text):Cu(i)?pRe(i).map(f=>f.arguments[0].text):Je;for(let f of l)if(zd(f)){if(BR(f))return 3;TS(f)&&(s=!0)}return s?2:0}}function pRe(e){let t=0,r;for(let i of e.statements){if(t>3)break;DH(i)?r=Qi(r,i.declarationList.declarations.map(o=>o.initializer)):Ol(i)&&qu(i.expression,!0)?r=Sn(r,i.expression):t++}return r||Je}function wle(e,t,r){if(!e)return!1;let i=rL(t,r);for(let o of e_(GR(t,i)))if(Gc(e,o))return!0;return!1}function Rle(e){let t=e.match(/\\//g);return t?t.length:0}function UR(e,t){return Es(Rle(e),Rle(t))}function ld(e){for(let t of k4){let r=Ole(e,t);if(r!==void 0)return r}return e}function Ole(e,t){return Gc(e,t)?VR(e,t):void 0}function VR(e,t){return e.substring(0,e.length-t.length)}function V0(e,t){return uj(e,t,k4,!1)}function r2(e){let t=e.indexOf(\"*\");return t===-1?e:e.indexOf(\"*\",t+1)!==-1?void 0:{prefix:e.substr(0,t),suffix:e.substr(t+1)}}function g4(e){return Zi(bh(e),t=>r2(t))}function vp(e){return!(e>=0)}function y4(e){return e===\".ts\"||e===\".tsx\"||e===\".d.ts\"||e===\".cts\"||e===\".mts\"||e===\".d.mts\"||e===\".d.cts\"||na(e,\".d.\")&&Oc(e,\".ts\")}function jR(e){return y4(e)||e===\".json\"}function HR(e){let t=Hm(e);return t!==void 0?t:L.fail(`File ${e} has unknown extension.`)}function mRe(e){return Hm(e)!==void 0}function Hm(e){return wr(k4,t=>Gc(e,t))}function WR(e,t){return e.checkJsDirective?e.checkJsDirective.enabled:t.checkJs}function NW(e,t){let r=[];for(let i of e){if(i===t)return t;Ta(i)||r.push(i)}return JU(r,i=>i,t)}function PW(e,t){let r=e.indexOf(t);return L.assert(r!==-1),e.slice(r)}function Ao(e,...t){return t.length&&(e.relatedInformation||(e.relatedInformation=[]),L.assert(e.relatedInformation!==Je,\"Diagnostic had empty array singleton for related info, but is still being constructed!\"),e.relatedInformation.push(...t)),e}function Nle(e,t){L.assert(e.length!==0);let r=t(e[0]),i=r;for(let o=1;o<e.length;o++){let s=t(e[o]);s<r?r=s:s>i&&(i=s)}return{min:r,max:i}}function MW(e){return{pos:yT(e),end:e.end}}function FW(e,t){let r=t.pos-1,i=Math.min(e.text.length,xo(e.text,t.end)+1);return{pos:r,end:i}}function iL(e,t,r){return t.skipLibCheck&&e.isDeclarationFile||t.skipDefaultLibCheck&&e.hasNoDefaultLib||r.isSourceOfProjectReferenceRedirect(e.fileName)}function GW(e,t){return e===t||typeof e==\"object\"&&e!==null&&typeof t==\"object\"&&t!==null&&hae(e,t,GW)}function aL(e){let t;switch(e.charCodeAt(1)){case 98:case 66:t=1;break;case 111:case 79:t=3;break;case 120:case 88:t=4;break;default:let g=e.length-1,m=0;for(;e.charCodeAt(m)===48;)m++;return e.slice(m,g)||\"0\"}let r=2,i=e.length-1,o=(i-r)*t,s=new Uint16Array((o>>>4)+(o&15?1:0));for(let g=i-1,m=0;g>=r;g--,m+=t){let v=m>>>4,S=e.charCodeAt(g),A=(S<=57?S-48:10+S-(S<=70?65:97))<<(m&15);s[v]|=A;let w=A>>>16;w&&(s[v+1]|=w)}let l=\"\",f=s.length-1,d=!0;for(;d;){let g=0;d=!1;for(let m=f;m>=0;m--){let v=g<<16|s[m],S=v/10|0;s[m]=S,g=v-S*10,S&&!d&&(f=m,d=!0)}l=g+l}return l}function j0({negative:e,base10Value:t}){return(e&&t!==\"0\"?\"-\":\"\")+t}function Ple(e){if(!!v4(e,!1))return BW(e)}function BW(e){let t=e.startsWith(\"-\"),r=aL(`${t?e.slice(1):e}n`);return{negative:t,base10Value:r}}function v4(e,t){if(e===\"\")return!1;let r=kg(99,!1),i=!0;r.setOnError(()=>i=!1),r.setText(e+\"n\");let o=r.scan(),s=o===40;s&&(o=r.scan());let l=r.getTokenFlags();return i&&o===9&&r.getTextPos()===e.length+1&&!(l&512)&&(!t||e===j0({negative:s,base10Value:aL(r.getTokenValue())}))}function SS(e){return!!(e.flags&16777216)||G6(e)||yRe(e)||gRe(e)||!(Dh(e)||hRe(e))}function hRe(e){return Re(e)&&Sf(e.parent)&&e.parent.name===e}function gRe(e){for(;e.kind===79||e.kind===208;)e=e.parent;if(e.kind!==164)return!1;if(Mr(e.parent,256))return!0;let t=e.parent.parent.kind;return t===261||t===184}function yRe(e){if(e.kind!==79)return!1;let t=jn(e.parent,r=>{switch(r.kind){case 294:return!0;case 208:case 230:return!1;default:return\"quit\"}});return t?.token===117||t?.parent.kind===261}function Mle(e){return p_(e)&&Re(e.typeName)}function Fle(e,t=Zv){if(e.length<2)return!0;let r=e[0];for(let i=1,o=e.length;i<o;i++){let s=e[i];if(!t(r,s))return!1}return!0}function oL(e,t){return e.pos=t,e}function i2(e,t){return e.end=t,e}function om(e,t,r){return i2(oL(e,t),r)}function sL(e,t,r){return om(e,t,t+r)}function Gle(e,t){return e&&(e.flags=t),e}function go(e,t){return e&&t&&(e.parent=t),e}function a2(e,t){if(e)for(let r of e)go(r,t);return e}function Zy(e,t){if(!e)return e;return DO(e,LA(e)?r:o),e;function r(s,l){if(t&&s.parent===l)return\"skip\";go(s,l)}function i(s){if(Jd(s))for(let l of s.jsDoc)r(l,s),DO(l,r)}function o(s,l){return r(s,l)||i(s)}}function vRe(e){return!ol(e)}function UW(e){return fu(e)&&Ji(e.elements,vRe)}function Ble(e){for(L.assertIsDefined(e.parent);;){let t=e.parent;if(ud(t)){e=t;continue}if(Ol(t)||PS(t)||GT(t)&&(t.initializer===e||t.incrementor===e))return!0;if(xL(t)){if(e!==To(t.elements))return!0;e=t;continue}if(ar(t)&&t.operatorToken.kind===27){if(e===t.left)return!0;e=t;continue}return!1}}function cL(e){return vt(dw,t=>jl(e,t))}function Ule(e){if(!e.parent)return;switch(e.kind){case 165:let{parent:r}=e;return r.kind===192?void 0:r.typeParameters;case 166:return e.parent.parameters;case 201:return e.parent.templateSpans;case 236:return e.parent.templateSpans;case 167:{let{parent:i}=e;return WS(i)?i.modifiers:void 0}case 294:return e.parent.heritageClauses}let{parent:t}=e;if(TI(e))return kL(e.parent)?void 0:e.parent.tags;switch(t.kind){case 184:case 261:return pT(e)?t.members:void 0;case 189:case 190:return t.types;case 186:case 206:case 357:case 272:case 276:return t.elements;case 207:case 289:return t.properties;case 210:case 211:return bi(e)?t.typeArguments:t.expression===e?void 0:t.arguments;case 281:case 285:return Mw(e)?t.children:void 0;case 283:case 282:return bi(e)?t.typeArguments:void 0;case 238:case 292:case 293:case 265:return t.statements;case 266:return t.clauses;case 260:case 228:return _l(e)?t.members:void 0;case 263:return q0(e)?t.members:void 0;case 308:return t.statements}}function b4(e){if(!e.typeParameters){if(vt(e.parameters,t=>!Cl(t)))return!0;if(e.kind!==216){let t=Sl(e.parameters);if(!(t&&G0(t)))return!0}}return!1}function lL(e){return e===\"Infinity\"||e===\"-Infinity\"||e===\"NaN\"}function Vle(e){return e.kind===257&&e.parent.kind===295}function VW(e){let t=e.valueDeclaration&&nm(e.valueDeclaration);return!!t&&(ha(t)||Vle(t))}function o2(e){return e.kind===215||e.kind===216}function NT(e){return e.replace(/\\$/gm,()=>\"\\\\$\")}function Wm(e){return(+e).toString()===e}function E4(e,t,r,i){return r_(e,t)?D.createIdentifier(e):!i&&Wm(e)&&+e>=0?D.createNumericLiteral(+e):D.createStringLiteral(e,!!r)}function uL(e){return!!(e.flags&262144&&e.isThisType)}function jW(e){let t=0,r=0,i=0,o=0,s;(g=>{g[g.BeforeNodeModules=0]=\"BeforeNodeModules\",g[g.NodeModules=1]=\"NodeModules\",g[g.Scope=2]=\"Scope\",g[g.PackageContent=3]=\"PackageContent\"})(s||(s={}));let l=0,f=0,d=0;for(;f>=0;)switch(l=f,f=e.indexOf(\"/\",l+1),d){case 0:e.indexOf(Wg,l)===l&&(t=l,r=f,d=1);break;case 1:case 2:d===1&&e.charAt(l+1)===\"@\"?d=2:(i=f,d=3);break;case 3:e.indexOf(Wg,l)===l?d=1:d=3;break}return o=l,d>1?{topLevelNodeModulesIndex:t,topLevelPackageNameIndex:r,packageRootIndex:i,fileNameIndex:o}:void 0}function bRe(e){var t;return e.kind===344?(t=e.typeExpression)==null?void 0:t.type:e.type}function s2(e){switch(e.kind){case 165:case 260:case 261:case 262:case 263:case 349:case 341:case 343:return!0;case 270:return e.isTypeOnly;case 273:case 278:return e.parent.parent.isTypeOnly;default:return!1}}function zR(e){return hb(e)||Bc(e)||Jc(e)||sl(e)||ku(e)||s2(e)||Tc(e)&&!D0(e)&&!mp(e)}function JR(e){if(!a6(e))return!1;let{isBracketed:t,typeExpression:r}=e;return t||!!r&&r.type.kind===319}function HW(e,t){if(e.length===0)return!1;let r=e.charCodeAt(0);return r===35?e.length>1&&Pm(e.charCodeAt(1),t):Pm(r,t)}function jle(e){var t;return((t=bz(e))==null?void 0:t.kind)===0}function KR(e){return Yn(e)&&(e.type&&e.type.kind===319||_I(e).some(({isBracketed:t,typeExpression:r})=>t||!!r&&r.type.kind===319))}function WW(e){switch(e.kind){case 169:case 168:return!!e.questionToken;case 166:return!!e.questionToken||KR(e);case 351:case 344:return JR(e);default:return!1}}function Hle(e){let t=e.kind;return(t===208||t===209)&&MS(e.expression)}function zW(e){return Yn(e)&&ud(e)&&Jd(e)&&!!Lj(e)}function JW(e){return L.checkDefined(T4(e))}function T4(e){let t=Lj(e);return t&&t.typeExpression&&t.typeExpression.type}var S4,_b,qR,x4,dL,KW,qW,Wle,XW,zle,YW,$W,QW,ZW,Jle,Kle,qle,Xle,Yle,ez,$le,Qle,Zle,c2,H0,eue,tue,ml,tz,XR,A4,nue,nz,C4,rz,iz,az,oz,l2,sz,rue,iue,cz,fL,YR,aue,I4,L4,lz,k4,D4,ERe=gt({\"src/compiler/utilities.ts\"(){\"use strict\";fa(),S4=[],_b=\"tslib\",qR=160,x4=1e6,dL=rwe(),KW=(e=>(e[e.None=0]=\"None\",e[e.NeverAsciiEscape=1]=\"NeverAsciiEscape\",e[e.JsxAttributeEscape=2]=\"JsxAttributeEscape\",e[e.TerminateUnterminatedLiterals=4]=\"TerminateUnterminatedLiterals\",e[e.AllowNumericSeparator=8]=\"AllowNumericSeparator\",e))(KW||{}),qW=/^(\\/\\/\\/\\s*<reference\\s+path\\s*=\\s*)(('[^']*')|(\"[^\"]*\")).*?\\/>/,Wle=/^(\\/\\/\\/\\s*<reference\\s+types\\s*=\\s*)(('[^']*')|(\"[^\"]*\")).*?\\/>/,XW=/^(\\/\\/\\/\\s*<amd-dependency\\s+path\\s*=\\s*)(('[^']*')|(\"[^\"]*\")).*?\\/>/,zle=/^(\\/\\/\\/\\s*<reference\\s+no-default-lib\\s*=\\s*)(('[^']*')|(\"[^\"]*\"))\\s*\\/>/,YW=(e=>(e[e.None=0]=\"None\",e[e.Definite=1]=\"Definite\",e[e.Compound=2]=\"Compound\",e))(YW||{}),$W=(e=>(e[e.Normal=0]=\"Normal\",e[e.Generator=1]=\"Generator\",e[e.Async=2]=\"Async\",e[e.Invalid=4]=\"Invalid\",e[e.AsyncGenerator=3]=\"AsyncGenerator\",e))($W||{}),QW=(e=>(e[e.Left=0]=\"Left\",e[e.Right=1]=\"Right\",e))(QW||{}),ZW=(e=>(e[e.Comma=0]=\"Comma\",e[e.Spread=1]=\"Spread\",e[e.Yield=2]=\"Yield\",e[e.Assignment=3]=\"Assignment\",e[e.Conditional=4]=\"Conditional\",e[e.Coalesce=4]=\"Coalesce\",e[e.LogicalOR=5]=\"LogicalOR\",e[e.LogicalAND=6]=\"LogicalAND\",e[e.BitwiseOR=7]=\"BitwiseOR\",e[e.BitwiseXOR=8]=\"BitwiseXOR\",e[e.BitwiseAND=9]=\"BitwiseAND\",e[e.Equality=10]=\"Equality\",e[e.Relational=11]=\"Relational\",e[e.Shift=12]=\"Shift\",e[e.Additive=13]=\"Additive\",e[e.Multiplicative=14]=\"Multiplicative\",e[e.Exponentiation=15]=\"Exponentiation\",e[e.Unary=16]=\"Unary\",e[e.Update=17]=\"Update\",e[e.LeftHandSide=18]=\"LeftHandSide\",e[e.Member=19]=\"Member\",e[e.Primary=20]=\"Primary\",e[e.Highest=20]=\"Highest\",e[e.Lowest=0]=\"Lowest\",e[e.Invalid=-1]=\"Invalid\",e))(ZW||{}),Jle=/\\$\\{/g,Kle=/[\\\\\\\"\\u0000-\\u001f\\t\\v\\f\\b\\r\\n\\u2028\\u2029\\u0085]/g,qle=/[\\\\\\'\\u0000-\\u001f\\t\\v\\f\\b\\r\\n\\u2028\\u2029\\u0085]/g,Xle=/\\r\\n|[\\\\\\`\\u0000-\\u001f\\t\\v\\f\\b\\r\\u2028\\u2029\\u0085]/g,Yle=new Map(Object.entries({\"\t\":\"\\\\t\",\"\\v\":\"\\\\v\",\"\\f\":\"\\\\f\",\"\\b\":\"\\\\b\",\"\\r\":\"\\\\r\",\"\\n\":\"\\\\n\",\"\\\\\":\"\\\\\\\\\",'\"':'\\\\\"',\"'\":\"\\\\'\",\"`\":\"\\\\`\",\"\\u2028\":\"\\\\u2028\",\"\\u2029\":\"\\\\u2029\",\"\\x85\":\"\\\\u0085\",\"\\r\\n\":\"\\\\r\\\\n\"})),ez=/[^\\u0000-\\u007F]/g,$le=/[\\\"\\u0000-\\u001f\\u2028\\u2029\\u0085]/g,Qle=/[\\'\\u0000-\\u001f\\u2028\\u2029\\u0085]/g,Zle=new Map(Object.entries({'\"':\"&quot;\",\"'\":\"&apos;\"})),c2=[\"\",\"    \"],H0=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",eue=`\\r\n`,tue=`\n`,ml={getNodeConstructor:()=>EW,getTokenConstructor:()=>Zwe,getIdentifierConstructor:()=>eRe,getPrivateIdentifierConstructor:()=>EW,getSourceFileConstructor:()=>EW,getSymbolConstructor:()=>Ywe,getTypeConstructor:()=>$we,getSignatureConstructor:()=>Qwe,getSourceMapSourceConstructor:()=>tRe},tz=[],A4=/[^\\w\\s\\/]/g,nue=[42,63],nz=[\"node_modules\",\"bower_components\",\"jspm_packages\"],C4=`(?!(${nz.join(\"|\")})(/|$))`,rz={singleAsteriskRegexFragment:\"([^./]|(\\\\.(?!min\\\\.js$))?)*\",doubleAsteriskRegexFragment:`(/${C4}[^/.][^/]*)*?`,replaceWildcardCharacter:e=>DW(e,rz.singleAsteriskRegexFragment)},iz={singleAsteriskRegexFragment:\"[^/]*\",doubleAsteriskRegexFragment:`(/${C4}[^/.][^/]*)*?`,replaceWildcardCharacter:e=>DW(e,iz.singleAsteriskRegexFragment)},az={singleAsteriskRegexFragment:\"[^/]*\",doubleAsteriskRegexFragment:\"(/.+?)?\",replaceWildcardCharacter:e=>DW(e,az.singleAsteriskRegexFragment)},oz={files:rz,directories:iz,exclude:az},l2=[[\".ts\",\".tsx\",\".d.ts\"],[\".cts\",\".d.cts\"],[\".mts\",\".d.mts\"]],sz=e_(l2),rue=[...l2,[\".json\"]],iue=[\".d.ts\",\".d.cts\",\".d.mts\",\".cts\",\".mts\",\".ts\",\".tsx\",\".cts\",\".mts\"],cz=[[\".js\",\".jsx\"],[\".mjs\"],[\".cjs\"]],fL=e_(cz),YR=[[\".ts\",\".tsx\",\".d.ts\",\".js\",\".jsx\"],[\".cts\",\".d.cts\",\".cjs\"],[\".mts\",\".d.mts\",\".mjs\"]],aue=[...YR,[\".json\"]],I4=[\".d.ts\",\".d.cts\",\".d.mts\"],L4=[\".ts\",\".cts\",\".mts\",\".tsx\"],lz=(e=>(e[e.Minimal=0]=\"Minimal\",e[e.Index=1]=\"Index\",e[e.JsExtension=2]=\"JsExtension\",e[e.TsExtension=3]=\"TsExtension\",e))(lz||{}),k4=[\".d.ts\",\".d.mts\",\".d.cts\",\".mjs\",\".mts\",\".cjs\",\".cts\",\".ts\",\".js\",\".tsx\",\".jsx\",\".json\"],D4={files:Je,directories:Je}}});function oue(){let e,t,r,i,o;return{createBaseSourceFileNode:s,createBaseIdentifierNode:l,createBasePrivateIdentifierNode:f,createBaseTokenNode:d,createBaseNode:g};function s(m){return new(o||(o=ml.getSourceFileConstructor()))(m,-1,-1)}function l(m){return new(r||(r=ml.getIdentifierConstructor()))(m,-1,-1)}function f(m){return new(i||(i=ml.getPrivateIdentifierConstructor()))(m,-1,-1)}function d(m){return new(t||(t=ml.getTokenConstructor()))(m,-1,-1)}function g(m){return new(e||(e=ml.getNodeConstructor()))(m,-1,-1)}}var TRe=gt({\"src/compiler/factory/baseNodeFactory.ts\"(){\"use strict\";fa()}});function sue(e){let t,r;return{getParenthesizeLeftSideOfBinaryForOperator:i,getParenthesizeRightSideOfBinaryForOperator:o,parenthesizeLeftSideOfBinary:g,parenthesizeRightSideOfBinary:m,parenthesizeExpressionOfComputedPropertyName:v,parenthesizeConditionOfConditionalExpression:S,parenthesizeBranchOfConditionalExpression:x,parenthesizeExpressionOfExportDefault:A,parenthesizeExpressionOfNew:w,parenthesizeLeftSideOfAccess:C,parenthesizeOperandOfPostfixUnary:P,parenthesizeOperandOfPrefixUnary:F,parenthesizeExpressionsOfCommaDelimitedList:B,parenthesizeExpressionForDisallowedComma:q,parenthesizeExpressionOfExpressionStatement:W,parenthesizeConciseBodyOfArrowFunction:Y,parenthesizeCheckTypeOfConditionalType:R,parenthesizeExtendsTypeOfConditionalType:ie,parenthesizeConstituentTypesOfUnionType:fe,parenthesizeConstituentTypeOfUnionType:Q,parenthesizeConstituentTypesOfIntersectionType:U,parenthesizeConstituentTypeOfIntersectionType:Z,parenthesizeOperandOfTypeOperator:re,parenthesizeOperandOfReadonlyTypeOperator:le,parenthesizeNonArrayTypeOfPostfixType:_e,parenthesizeElementTypesOfTupleType:ge,parenthesizeElementTypeOfTupleType:X,parenthesizeTypeOfOptionalType:we,parenthesizeTypeArguments:Ce,parenthesizeLeadingTypeArgument:ke};function i(Ie){t||(t=new Map);let Be=t.get(Ie);return Be||(Be=Ne=>g(Ie,Ne),t.set(Ie,Be)),Be}function o(Ie){r||(r=new Map);let Be=r.get(Ie);return Be||(Be=Ne=>m(Ie,void 0,Ne),r.set(Ie,Be)),Be}function s(Ie,Be,Ne,Le){let Ye=vR(223,Ie),_t=zH(223,Ie),ct=i_(Be);if(!Ne&&Be.kind===216&&Ye>3)return!0;let Rt=$6(ct);switch(Es(Rt,Ye)){case-1:return!(!Ne&&_t===1&&Be.kind===226);case 1:return!1;case 0:if(Ne)return _t===1;if(ar(ct)&&ct.operatorToken.kind===Ie){if(l(Ie))return!1;if(Ie===39){let qe=Le?f(Le):0;if(yI(qe)&&qe===f(ct))return!1}}return WH(ct)===0}}function l(Ie){return Ie===41||Ie===51||Ie===50||Ie===52||Ie===27}function f(Ie){if(Ie=i_(Ie),yI(Ie.kind))return Ie.kind;if(Ie.kind===223&&Ie.operatorToken.kind===39){if(Ie.cachedLiteralKind!==void 0)return Ie.cachedLiteralKind;let Be=f(Ie.left),Ne=yI(Be)&&Be===f(Ie.right)?Be:0;return Ie.cachedLiteralKind=Ne,Ne}return 0}function d(Ie,Be,Ne,Le){return i_(Be).kind===214?Be:s(Ie,Be,Ne,Le)?e.createParenthesizedExpression(Be):Be}function g(Ie,Be){return d(Ie,Be,!0)}function m(Ie,Be,Ne){return d(Ie,Ne,!1,Be)}function v(Ie){return RL(Ie)?e.createParenthesizedExpression(Ie):Ie}function S(Ie){let Be=vR(224,57),Ne=i_(Ie),Le=$6(Ne);return Es(Le,Be)!==1?e.createParenthesizedExpression(Ie):Ie}function x(Ie){let Be=i_(Ie);return RL(Be)?e.createParenthesizedExpression(Ie):Ie}function A(Ie){let Be=i_(Ie),Ne=RL(Be);if(!Ne)switch(ZI(Be,!1).kind){case 228:case 215:Ne=!0}return Ne?e.createParenthesizedExpression(Ie):Ie}function w(Ie){let Be=ZI(Ie,!0);switch(Be.kind){case 210:return e.createParenthesizedExpression(Ie);case 211:return Be.arguments?Ie:e.createParenthesizedExpression(Ie)}return C(Ie)}function C(Ie,Be){let Ne=i_(Ie);return Ju(Ne)&&(Ne.kind!==211||Ne.arguments)&&(Be||!Jl(Ne))?Ie:it(e.createParenthesizedExpression(Ie),Ie)}function P(Ie){return Ju(Ie)?Ie:it(e.createParenthesizedExpression(Ie),Ie)}function F(Ie){return jj(Ie)?Ie:it(e.createParenthesizedExpression(Ie),Ie)}function B(Ie){let Be=Tl(Ie,q);return it(e.createNodeArray(Be,Ie.hasTrailingComma),Ie)}function q(Ie){let Be=i_(Ie),Ne=$6(Be),Le=vR(223,27);return Ne>Le?Ie:it(e.createParenthesizedExpression(Ie),Ie)}function W(Ie){let Be=i_(Ie);if(Pa(Be)){let Le=Be.expression,Ye=i_(Le).kind;if(Ye===215||Ye===216){let _t=e.updateCallExpression(Be,it(e.createParenthesizedExpression(Le),Le),Be.typeArguments,Be.arguments);return e.restoreOuterExpressions(Ie,_t,8)}}let Ne=ZI(Be,!1).kind;return Ne===207||Ne===215?it(e.createParenthesizedExpression(Ie),Ie):Ie}function Y(Ie){return!Va(Ie)&&(RL(Ie)||ZI(Ie,!1).kind===207)?it(e.createParenthesizedExpression(Ie),Ie):Ie}function R(Ie){switch(Ie.kind){case 181:case 182:case 191:return e.createParenthesizedType(Ie)}return Ie}function ie(Ie){switch(Ie.kind){case 191:return e.createParenthesizedType(Ie)}return Ie}function Q(Ie){switch(Ie.kind){case 189:case 190:return e.createParenthesizedType(Ie)}return R(Ie)}function fe(Ie){return e.createNodeArray(Tl(Ie,Q))}function Z(Ie){switch(Ie.kind){case 189:case 190:return e.createParenthesizedType(Ie)}return Q(Ie)}function U(Ie){return e.createNodeArray(Tl(Ie,Z))}function re(Ie){switch(Ie.kind){case 190:return e.createParenthesizedType(Ie)}return Z(Ie)}function le(Ie){switch(Ie.kind){case 195:return e.createParenthesizedType(Ie)}return re(Ie)}function _e(Ie){switch(Ie.kind){case 192:case 195:case 183:return e.createParenthesizedType(Ie)}return re(Ie)}function ge(Ie){return e.createNodeArray(Tl(Ie,X))}function X(Ie){return Ve(Ie)?e.createParenthesizedType(Ie):Ie}function Ve(Ie){return S2(Ie)?Ie.postfix:EL(Ie)||Jm(Ie)||vL(Ie)||OS(Ie)?Ve(Ie.type):h2(Ie)?Ve(Ie.falseType):wS(Ie)||fO(Ie)?Ve(To(Ie.types)):g2(Ie)?!!Ie.typeParameter.constraint&&Ve(Ie.typeParameter.constraint):!1}function we(Ie){return Ve(Ie)?e.createParenthesizedType(Ie):_e(Ie)}function ke(Ie){return lse(Ie)&&Ie.typeParameters?e.createParenthesizedType(Ie):Ie}function Pe(Ie,Be){return Be===0?ke(Ie):Ie}function Ce(Ie){if(vt(Ie))return e.createNodeArray(Tl(Ie,Pe))}}var uz,SRe=gt({\"src/compiler/factory/parenthesizerRules.ts\"(){\"use strict\";fa(),uz={getParenthesizeLeftSideOfBinaryForOperator:e=>Ks,getParenthesizeRightSideOfBinaryForOperator:e=>Ks,parenthesizeLeftSideOfBinary:(e,t)=>t,parenthesizeRightSideOfBinary:(e,t,r)=>r,parenthesizeExpressionOfComputedPropertyName:Ks,parenthesizeConditionOfConditionalExpression:Ks,parenthesizeBranchOfConditionalExpression:Ks,parenthesizeExpressionOfExportDefault:Ks,parenthesizeExpressionOfNew:e=>Ga(e,Ju),parenthesizeLeftSideOfAccess:e=>Ga(e,Ju),parenthesizeOperandOfPostfixUnary:e=>Ga(e,Ju),parenthesizeOperandOfPrefixUnary:e=>Ga(e,jj),parenthesizeExpressionsOfCommaDelimitedList:e=>Ga(e,C0),parenthesizeExpressionForDisallowedComma:Ks,parenthesizeExpressionOfExpressionStatement:Ks,parenthesizeConciseBodyOfArrowFunction:Ks,parenthesizeCheckTypeOfConditionalType:Ks,parenthesizeExtendsTypeOfConditionalType:Ks,parenthesizeConstituentTypesOfUnionType:e=>Ga(e,C0),parenthesizeConstituentTypeOfUnionType:Ks,parenthesizeConstituentTypesOfIntersectionType:e=>Ga(e,C0),parenthesizeConstituentTypeOfIntersectionType:Ks,parenthesizeOperandOfTypeOperator:Ks,parenthesizeOperandOfReadonlyTypeOperator:Ks,parenthesizeNonArrayTypeOfPostfixType:Ks,parenthesizeElementTypesOfTupleType:e=>Ga(e,C0),parenthesizeElementTypeOfTupleType:Ks,parenthesizeTypeOfOptionalType:Ks,parenthesizeTypeArguments:e=>e&&Ga(e,C0),parenthesizeLeadingTypeArgument:Ks}}});function cue(e){return{convertToFunctionBlock:t,convertToFunctionExpression:r,convertToArrayAssignmentElement:i,convertToObjectAssignmentElement:o,convertToAssignmentPattern:s,convertToObjectAssignmentPattern:l,convertToArrayAssignmentPattern:f,convertToAssignmentElementTarget:d};function t(g,m){if(Va(g))return g;let v=e.createReturnStatement(g);it(v,g);let S=e.createBlock([v],m);return it(S,g),S}function r(g){if(!g.body)return L.fail(\"Cannot convert a FunctionDeclaration without a body\");let m=e.createFunctionExpression(dT(g),g.asteriskToken,g.name,g.typeParameters,g.parameters,g.type,g.body);return Ir(m,g),it(m,g),nO(g)&&vz(m,!0),m}function i(g){if(Wo(g)){if(g.dotDotDotToken)return L.assertNode(g.name,Re),Ir(it(e.createSpreadElement(g.name),g),g);let m=d(g.name);return g.initializer?Ir(it(e.createAssignment(m,g.initializer),g),g):m}return Ga(g,ot)}function o(g){if(Wo(g)){if(g.dotDotDotToken)return L.assertNode(g.name,Re),Ir(it(e.createSpreadAssignment(g.name),g),g);if(g.propertyName){let m=d(g.name);return Ir(it(e.createPropertyAssignment(g.propertyName,g.initializer?e.createAssignment(m,g.initializer):m),g),g)}return L.assertNode(g.name,Re),Ir(it(e.createShorthandPropertyAssignment(g.name,g.initializer),g),g)}return Ga(g,Og)}function s(g){switch(g.kind){case 204:case 206:return f(g);case 203:case 207:return l(g)}}function l(g){return cm(g)?Ir(it(e.createObjectLiteralExpression(on(g.elements,o)),g),g):Ga(g,rs)}function f(g){return y2(g)?Ir(it(e.createArrayLiteralExpression(on(g.elements,i)),g),g):Ga(g,fu)}function d(g){return La(g)?s(g):Ga(g,ot)}}var dz,xRe=gt({\"src/compiler/factory/nodeConverters.ts\"(){\"use strict\";fa(),dz={convertToFunctionBlock:Sa,convertToFunctionExpression:Sa,convertToArrayAssignmentElement:Sa,convertToObjectAssignmentElement:Sa,convertToAssignmentPattern:Sa,convertToObjectAssignmentPattern:Sa,convertToArrayAssignmentPattern:Sa,convertToAssignmentElementTarget:Sa}}});function ARe(e){hz.push(e)}function $R(e,t){let r=e&8?CRe:IRe,i=zu(()=>e&1?uz:sue(P)),o=zu(()=>e&2?dz:cue(P)),s=Jp(y=>(I,N)=>M(I,y,N)),l=Jp(y=>I=>zf(y,I)),f=Jp(y=>I=>b_(I,y)),d=Jp(y=>()=>vE(y)),g=Jp(y=>I=>ty(y,I)),m=Jp(y=>(I,N)=>cs(y,I,N)),v=Jp(y=>(I,N)=>C1(y,I,N)),S=Jp(y=>(I,N)=>bE(y,I,N)),x=Jp(y=>(I,N)=>ih(y,I,N)),A=Jp(y=>(I,N,te)=>Cv(y,I,N,te)),w=Jp(y=>(I,N,te)=>Iv(y,I,N,te)),C=Jp(y=>(I,N,te,Me)=>Gl(y,I,N,te,Me)),P={get parenthesizer(){return i()},get converters(){return o()},baseFactory:t,flags:e,createNodeArray:F,createNumericLiteral:Y,createBigIntLiteral:R,createStringLiteral:Q,createStringLiteralFromNode:fe,createRegularExpressionLiteral:Z,createLiteralLikeNode:U,createIdentifier:_e,createTempVariable:ge,createLoopVariable:X,createUniqueName:Ve,getGeneratedNameForNode:we,createPrivateIdentifier:Pe,createUniquePrivateName:Ie,getGeneratedPrivateNameForNode:Be,createToken:Le,createSuper:Ye,createThis:_t,createNull:ct,createTrue:Rt,createFalse:We,createModifier:qe,createModifiersFromModifierFlags:zt,createQualifiedName:Qt,updateQualifiedName:tn,createComputedPropertyName:kn,updateComputedPropertyName:_n,createTypeParameterDeclaration:Gt,updateTypeParameterDeclaration:$n,createParameterDeclaration:ui,updateParameterDeclaration:Ni,createDecorator:Pi,updateDecorator:gr,createPropertySignature:pt,updatePropertySignature:nn,createPropertyDeclaration:pn,updatePropertyDeclaration:An,createMethodSignature:Kn,updateMethodSignature:hi,createMethodDeclaration:ri,updateMethodDeclaration:gn,createConstructorDeclaration:Se,updateConstructorDeclaration:at,createGetAccessorDeclaration:ve,updateGetAccessorDeclaration:nt,createSetAccessorDeclaration:$,updateSetAccessorDeclaration:ue,createCallSignature:Oe,updateCallSignature:je,createConstructSignature:Ge,updateConstructSignature:kt,createIndexSignature:Kt,updateIndexSignature:ln,createClassStaticBlockDeclaration:En,updateClassStaticBlockDeclaration:dr,createTemplateLiteralTypeSpan:ir,updateTemplateLiteralTypeSpan:ae,createKeywordTypeNode:rt,createTypePredicateNode:Ot,updateTypePredicateNode:Ke,createTypeReferenceNode:oe,updateTypeReferenceNode:pe,createFunctionTypeNode:z,updateFunctionTypeNode:Te,createConstructorTypeNode:yt,updateConstructorTypeNode:Vt,createTypeQueryNode:ei,updateTypeQueryNode:Kr,createTypeLiteralNode:Si,updateTypeLiteralNode:Ja,createArrayTypeNode:Za,updateArrayTypeNode:Fa,createTupleTypeNode:Hi,updateTupleTypeNode:xi,createNamedTupleMember:Nr,updateNamedTupleMember:Fo,createOptionalTypeNode:Qr,updateOptionalTypeNode:Wi,createRestTypeNode:yn,updateRestTypeNode:Ki,createUnionTypeNode:mc,updateUnionTypeNode:xc,createIntersectionTypeNode:hc,updateIntersectionTypeNode:ro,createConditionalTypeNode:aa,updateConditionalTypeNode:Co,createInferTypeNode:gc,updateInferTypeNode:Ll,createImportTypeNode:bl,updateImportTypeNode:ss,createParenthesizedType:qs,updateParenthesizedType:Rs,createThisTypeNode:As,createTypeOperatorNode:jt,updateTypeOperatorNode:yc,createIndexedAccessTypeNode:Ql,updateIndexedAccessTypeNode:yu,createMappedTypeNode:se,updateMappedTypeNode:ht,createLiteralTypeNode:wt,updateLiteralTypeNode:K,createTemplateLiteralType:md,updateTemplateLiteralType:Pc,createObjectBindingPattern:Xe,updateObjectBindingPattern:ft,createArrayBindingPattern:Yt,updateArrayBindingPattern:pr,createBindingElement:yr,updateBindingElement:ta,createArrayLiteralExpression:Go,updateArrayLiteralExpression:Ka,createObjectLiteralExpression:vo,updateObjectLiteralExpression:ka,createPropertyAccessExpression:e&4?(y,I)=>Jn(Uc(y,I),262144):Uc,updatePropertyAccessExpression:Gu,createPropertyAccessChain:e&4?(y,I,N)=>Jn($o(y,I,N),262144):$o,updatePropertyAccessChain:jo,createElementAccessExpression:hd,updateElementAccessExpression:vc,createElementAccessChain:tf,updateElementAccessChain:ye,createCallExpression:bn,updateCallExpression:Ri,createCallChain:io,updateCallChain:ee,createNewExpression:Ze,updateNewExpression:At,createTaggedTemplateExpression:xt,updateTaggedTemplateExpression:qt,createTypeAssertion:Ln,updateTypeAssertion:mr,createParenthesizedExpression:Vr,updateParenthesizedExpression:gi,createFunctionExpression:Ea,updateFunctionExpression:bo,createArrowFunction:Qo,updateArrowFunction:Cs,createDeleteExpression:Bu,updateDeleteExpression:Pd,createTypeOfExpression:Dc,updateTypeOfExpression:gd,createVoidExpression:Zl,updateVoidExpression:Md,createAwaitExpression:Wf,updateAwaitExpression:Io,createPrefixUnaryExpression:zf,updatePrefixUnaryExpression:Fd,createPostfixUnaryExpression:b_,updatePostfixUnaryExpression:X_,createBinaryExpression:M,updateBinaryExpression:Nt,createConditionalExpression:Pn,updateConditionalExpression:la,createTemplateExpression:oa,updateTemplateExpression:be,createTemplateHead:sn,createTemplateMiddle:Dn,createTemplateTail:kr,createNoSubstitutionTemplateLiteral:ki,createTemplateLiteralLikeNode:rn,createYieldExpression:Vn,updateYieldExpression:$t,createSpreadElement:Xn,updateSpreadElement:ra,createClassExpression:Is,updateClassExpression:Mc,createOmittedExpression:mm,createExpressionWithTypeArguments:Hh,updateExpressionWithTypeArguments:E_,createAsExpression:Cb,updateAsExpression:mv,createNonNullExpression:yx,updateNonNullExpression:p1,createSatisfiesExpression:vx,updateSatisfiesExpression:Wh,createNonNullChain:T_,updateNonNullChain:hv,createMetaProperty:eh,updateMetaProperty:Y_,createTemplateSpan:gv,updateTemplateSpan:lE,createSemicolonClassElement:Ib,createBlock:zh,updateBlock:m1,createVariableStatement:uE,updateVariableStatement:dE,createEmptyStatement:fE,createExpressionStatement:yv,updateExpressionStatement:bx,createIfStatement:_E,updateIfStatement:pE,createDoStatement:vv,updateDoStatement:Lb,createWhileStatement:bv,updateWhileStatement:h1,createForStatement:Jh,updateForStatement:Lo,createForInStatement:mE,updateForInStatement:cC,createForOfStatement:Zg,updateForOfStatement:Kh,createContinueStatement:hm,updateContinueStatement:S_,createBreakStatement:Zu,updateBreakStatement:ed,createReturnStatement:td,updateReturnStatement:kb,createWithStatement:Db,updateWithStatement:Ex,createSwitchStatement:wb,updateSwitchStatement:qh,createLabeledStatement:Rb,updateLabeledStatement:g1,createThrowStatement:Ob,updateThrowStatement:lC,createTryStatement:Tx,updateTryStatement:Ev,createDebuggerStatement:hE,createVariableDeclaration:Fe,updateVariableDeclaration:ey,createVariableDeclarationList:Ip,updateVariableDeclarationList:Tv,createFunctionDeclaration:Nb,updateFunctionDeclaration:Sv,createClassDeclaration:y1,updateClassDeclaration:wo,createInterfaceDeclaration:x_,updateInterfaceDeclaration:gE,createTypeAliasDeclaration:Kc,updateTypeAliasDeclaration:th,createEnumDeclaration:Pb,updateEnumDeclaration:A_,createModuleDeclaration:Mb,updateModuleDeclaration:Ml,createModuleBlock:Yh,updateModuleBlock:ll,createCaseBlock:v1,updateCaseBlock:uC,createNamespaceExportDeclaration:Ai,updateNamespaceExportDeclaration:Rr,createImportEqualsDeclaration:yd,updateImportEqualsDeclaration:yE,createImportDeclaration:$h,updateImportDeclaration:nh,createImportClause:ym,updateImportClause:zs,createAssertClause:Fb,updateAssertClause:b1,createAssertEntry:Gb,updateAssertEntry:E1,createImportTypeAssertionContainer:Af,updateImportTypeAssertionContainer:Sx,createNamespaceImport:xx,updateNamespaceImport:xv,createNamespaceExport:T1,updateNamespaceExport:S1,createNamedImports:Ax,updateNamedImports:Bb,createImportSpecifier:x1,updateImportSpecifier:nf,createExportAssignment:Qh,updateExportAssignment:$_,createExportDeclaration:C_,updateExportDeclaration:Cx,createNamedExports:Lp,updateNamedExports:A1,createExportSpecifier:Uu,updateExportSpecifier:Zh,createMissingDeclaration:kp,createExternalModuleReference:Dp,updateExternalModuleReference:eg,get createJSDocAllType(){return d(315)},get createJSDocUnknownType(){return d(316)},get createJSDocNonNullableType(){return v(318)},get updateJSDocNonNullableType(){return S(318)},get createJSDocNullableType(){return v(317)},get updateJSDocNullableType(){return S(317)},get createJSDocOptionalType(){return g(319)},get updateJSDocOptionalType(){return m(319)},get createJSDocVariadicType(){return g(321)},get updateJSDocVariadicType(){return m(321)},get createJSDocNamepathType(){return g(322)},get updateJSDocNamepathType(){return m(322)},createJSDocFunctionType:ny,updateJSDocFunctionType:Ix,createJSDocTypeLiteral:Vb,updateJSDocTypeLiteral:jb,createJSDocTypeExpression:Lx,updateJSDocTypeExpression:dC,createJSDocSignature:kx,updateJSDocSignature:Qn,createJSDocTemplateTag:Av,updateJSDocTemplateTag:vm,createJSDocTypedefTag:Wn,updateJSDocTypedefTag:Dx,createJSDocParameterTag:ry,updateJSDocParameterTag:nl,createJSDocPropertyTag:Jf,updateJSDocPropertyTag:Q_,createJSDocCallbackTag:iy,updateJSDocCallbackTag:EE,createJSDocOverloadTag:I_,updateJSDocOverloadTag:ay,createJSDocAugmentsTag:Ac,updateJSDocAugmentsTag:wc,createJSDocImplementsTag:tg,updateJSDocImplementsTag:ng,createJSDocSeeTag:Fl,updateJSDocSeeTag:Kf,createJSDocNameReference:bm,updateJSDocNameReference:nd,createJSDocMemberName:TE,updateJSDocMemberName:Hb,createJSDocLink:Wb,updateJSDocLink:Z_,createJSDocLinkCode:rh,updateJSDocLinkCode:SE,createJSDocLinkPlain:oy,updateJSDocLinkPlain:uc,get createJSDocTypeTag(){return w(347)},get updateJSDocTypeTag(){return C(347)},get createJSDocReturnTag(){return w(345)},get updateJSDocReturnTag(){return C(345)},get createJSDocThisTag(){return w(346)},get updateJSDocThisTag(){return C(346)},get createJSDocAuthorTag(){return x(333)},get updateJSDocAuthorTag(){return A(333)},get createJSDocClassTag(){return x(335)},get updateJSDocClassTag(){return A(335)},get createJSDocPublicTag(){return x(336)},get updateJSDocPublicTag(){return A(336)},get createJSDocPrivateTag(){return x(337)},get updateJSDocPrivateTag(){return A(337)},get createJSDocProtectedTag(){return x(338)},get updateJSDocProtectedTag(){return A(338)},get createJSDocReadonlyTag(){return x(339)},get updateJSDocReadonlyTag(){return A(339)},get createJSDocOverrideTag(){return x(340)},get updateJSDocOverrideTag(){return A(340)},get createJSDocDeprecatedTag(){return x(334)},get updateJSDocDeprecatedTag(){return A(334)},get createJSDocThrowsTag(){return w(352)},get updateJSDocThrowsTag(){return C(352)},get createJSDocSatisfiesTag(){return w(353)},get updateJSDocSatisfiesTag(){return C(353)},createJSDocEnumTag:xE,updateJSDocEnumTag:oh,createJSDocUnknownTag:ah,updateJSDocUnknownTag:qc,createJSDocText:zb,updateJSDocText:Vu,createJSDocComment:Em,updateJSDocComment:Jb,createJsxElement:Lv,updateJsxElement:AE,createJsxSelfClosingElement:sy,updateJsxSelfClosingElement:I1,createJsxOpeningElement:kv,updateJsxOpeningElement:rg,createJsxClosingElement:af,updateJsxClosingElement:CE,createJsxFragment:Gd,createJsxText:Dv,updateJsxText:wx,createJsxOpeningFragment:No,createJsxJsxClosingFragment:fr,updateJsxFragment:sh,createJsxAttribute:vd,updateJsxAttribute:ju,createJsxAttributes:L1,updateJsxAttributes:IE,createJsxSpreadAttribute:cy,updateJsxSpreadAttribute:Rx,createJsxExpression:ly,updateJsxExpression:wp,createCaseClause:ep,updateCaseClause:ig,createDefaultClause:wv,updateDefaultClause:ch,createHeritageClause:Rp,updateHeritageClause:k1,createCatchClause:Cc,updateCatchClause:Bd,createPropertyAssignment:Tm,updatePropertyAssignment:rd,createShorthandPropertyAssignment:uy,updateShorthandPropertyAssignment:ag,createSpreadAssignment:of,updateSpreadAssignment:ls,createEnumMember:kE,updateEnumMember:DE,createSourceFile:og,updateSourceFile:NE,createRedirectedSourceFile:Rv,createBundle:PE,updateBundle:dy,createUnparsedSource:bd,createUnparsedPrologue:fC,createUnparsedPrepend:sg,createUnparsedTextLike:Nx,createUnparsedSyntheticReference:Px,createInputFiles:E,createSyntheticExpression:ne,createSyntaxList:Ee,createNotEmittedStatement:Wt,createPartiallyEmittedExpression:lr,updatePartiallyEmittedExpression:ci,createCommaListExpression:Ti,updateCommaListExpression:Wa,createEndOfDeclarationMarker:kl,createMergeDeclarationMarker:Ed,createSyntheticReferenceExpression:Ud,updateSyntheticReferenceExpression:fy,cloneNode:qf,get createComma(){return s(27)},get createAssignment(){return s(63)},get createLogicalOr(){return s(56)},get createLogicalAnd(){return s(55)},get createBitwiseOr(){return s(51)},get createBitwiseXor(){return s(52)},get createBitwiseAnd(){return s(50)},get createStrictEquality(){return s(36)},get createStrictInequality(){return s(37)},get createEquality(){return s(34)},get createInequality(){return s(35)},get createLessThan(){return s(29)},get createLessThanEquals(){return s(32)},get createGreaterThan(){return s(31)},get createGreaterThanEquals(){return s(33)},get createLeftShift(){return s(47)},get createRightShift(){return s(48)},get createUnsignedRightShift(){return s(49)},get createAdd(){return s(39)},get createSubtract(){return s(40)},get createMultiply(){return s(41)},get createDivide(){return s(43)},get createModulo(){return s(44)},get createExponent(){return s(42)},get createPrefixPlus(){return l(39)},get createPrefixMinus(){return l(40)},get createPrefixIncrement(){return l(45)},get createPrefixDecrement(){return l(46)},get createBitwiseNot(){return l(54)},get createLogicalNot(){return l(53)},get createPostfixIncrement(){return f(45)},get createPostfixDecrement(){return f(46)},createImmediatelyInvokedFunctionExpression:ME,createImmediatelyInvokedArrowFunction:sf,createVoidZero:Sm,createExportDefault:py,createExternalModuleExport:Cf,createTypeCheck:FE,createMethodCall:Pv,createGlobalMethodCall:Ro,createFunctionBindCall:Vc,createFunctionCallCall:qP,createFunctionApplyCall:Zo,createArraySliceCall:Mx,createArrayConcatCall:Fx,createObjectDefinePropertyCall:V,createObjectGetOwnPropertyDescriptorCall:me,createReflectGetCall:Ue,createReflectSetCall:ut,createPropertyDescriptor:dn,createCallBinding:is,createAssignmentTargetWrapper:ao,inlineExpressions:Oo,getInternalName:tp,getLocalName:Op,getExportName:cg,getDeclarationName:Xf,getNamespaceMemberName:my,getExternalModuleOrNamespaceExportName:Gx,restoreOuterExpressions:li,restoreEnclosingLabel:di,createUseStrictPrologue:L_,copyPrologue:GE,copyStandardPrologue:Mv,copyCustomPrologue:pC,ensureUseStrict:cf,liftToBlock:Bx,mergeLexicalEnvironment:Hk,updateModifiers:Wk};return mn(hz,y=>y(P)),P;function F(y,I){if(y===void 0||y===Je)y=[];else if(C0(y)){if(I===void 0||y.hasTrailingComma===I)return y.transformFlags===void 0&&lue(y),L.attachNodeArrayDebugInfo(y),y;let Me=y.slice();return Me.pos=y.pos,Me.end=y.end,Me.hasTrailingComma=I,Me.transformFlags=y.transformFlags,L.attachNodeArrayDebugInfo(Me),Me}let N=y.length,te=N>=1&&N<=4?y.slice():y;return te.pos=-1,te.end=-1,te.hasTrailingComma=!!I,te.transformFlags=0,lue(te),L.attachNodeArrayDebugInfo(te),te}function B(y){return t.createBaseNode(y)}function q(y){let I=B(y);return I.symbol=void 0,I.localSymbol=void 0,I}function W(y,I){return y!==I&&(y.typeArguments=I.typeArguments),r(y,I)}function Y(y,I=0){let N=q(8);return N.text=typeof y==\"number\"?y+\"\":y,N.numericLiteralFlags=I,I&384&&(N.transformFlags|=1024),N}function R(y){let I=Ne(9);return I.text=typeof y==\"string\"?y:j0(y)+\"n\",I.transformFlags|=4,I}function ie(y,I){let N=q(10);return N.text=y,N.singleQuote=I,N}function Q(y,I,N){let te=ie(y,I);return te.hasExtendedUnicodeEscape=N,N&&(te.transformFlags|=1024),te}function fe(y){let I=ie(c_(y),void 0);return I.textSourceNode=y,I}function Z(y){let I=Ne(13);return I.text=y,I}function U(y,I){switch(y){case 8:return Y(I,0);case 9:return R(I);case 10:return Q(I,void 0);case 11:return Dv(I,!1);case 12:return Dv(I,!0);case 13:return Z(I);case 14:return rn(y,I,void 0,0)}}function re(y){let I=t.createBaseIdentifierNode(79);return I.escapedText=y,I.jsDoc=void 0,I.flowNode=void 0,I.symbol=void 0,I}function le(y,I,N,te){let Me=re(Bs(y));return aO(Me,{flags:I,id:ZR,prefix:N,suffix:te}),ZR++,Me}function _e(y,I,N){I===void 0&&y&&(I=uT(y)),I===79&&(I=void 0);let te=re(Bs(y));return N&&(te.flags|=128),te.escapedText===\"await\"&&(te.transformFlags|=67108864),te.flags&128&&(te.transformFlags|=1024),te}function ge(y,I,N,te){let Me=1;I&&(Me|=8);let Pt=le(\"\",Me,N,te);return y&&y(Pt),Pt}function X(y){let I=2;return y&&(I|=8),le(\"\",I,void 0,void 0)}function Ve(y,I=0,N,te){return L.assert(!(I&7),\"Argument out of range: flags\"),L.assert((I&48)!==32,\"GeneratedIdentifierFlags.FileLevel cannot be set without also setting GeneratedIdentifierFlags.Optimistic\"),le(y,3|I,N,te)}function we(y,I=0,N,te){L.assert(!(I&7),\"Argument out of range: flags\");let Me=y?Ah(y)?HT(!1,N,y,te,vr):`generated@${zo(y)}`:\"\";(N||te)&&(I|=16);let Pt=le(Me,4|I,N,te);return Pt.original=y,Pt}function ke(y){let I=t.createBasePrivateIdentifierNode(80);return I.escapedText=y,I.transformFlags|=16777216,I}function Pe(y){return na(y,\"#\")||L.fail(\"First character of private identifier must be #: \"+y),ke(Bs(y))}function Ce(y,I,N,te){let Me=ke(Bs(y));return aO(Me,{flags:I,id:ZR,prefix:N,suffix:te}),ZR++,Me}function Ie(y,I,N){y&&!na(y,\"#\")&&L.fail(\"First character of private identifier must be #: \"+y);let te=8|(y?3:1);return Ce(y??\"\",te,I,N)}function Be(y,I,N){let te=Ah(y)?HT(!0,I,y,N,vr):`#generated@${zo(y)}`,Pt=Ce(te,4|(I||N?16:0),I,N);return Pt.original=y,Pt}function Ne(y){return t.createBaseTokenNode(y)}function Le(y){L.assert(y>=0&&y<=162,\"Invalid token\"),L.assert(y<=14||y>=17,\"Invalid token. Use 'createTemplateLiteralLikeNode' to create template literals.\"),L.assert(y<=8||y>=14,\"Invalid token. Use 'createLiteralLikeNode' to create literals.\"),L.assert(y!==79,\"Invalid token. Use 'createIdentifier' to create identifiers\");let I=Ne(y),N=0;switch(y){case 132:N=384;break;case 123:case 121:case 122:case 146:case 126:case 136:case 85:case 131:case 148:case 160:case 144:case 149:case 101:case 145:case 161:case 152:case 134:case 153:case 114:case 157:case 155:N=1;break;case 106:N=134218752,I.flowNode=void 0;break;case 124:N=1024;break;case 127:N=16777216;break;case 108:N=16384,I.flowNode=void 0;break}return N&&(I.transformFlags|=N),I}function Ye(){return Le(106)}function _t(){return Le(108)}function ct(){return Le(104)}function Rt(){return Le(110)}function We(){return Le(95)}function qe(y){return Le(y)}function zt(y){let I=[];return y&1&&I.push(qe(93)),y&2&&I.push(qe(136)),y&1024&&I.push(qe(88)),y&2048&&I.push(qe(85)),y&4&&I.push(qe(123)),y&8&&I.push(qe(121)),y&16&&I.push(qe(122)),y&256&&I.push(qe(126)),y&32&&I.push(qe(124)),y&16384&&I.push(qe(161)),y&64&&I.push(qe(146)),y&128&&I.push(qe(127)),y&512&&I.push(qe(132)),y&32768&&I.push(qe(101)),y&65536&&I.push(qe(145)),I.length?I:void 0}function Qt(y,I){let N=B(163);return N.left=y,N.right=Zs(I),N.transformFlags|=tr(N.left)|_L(N.right),N.flowNode=void 0,N}function tn(y,I,N){return y.left!==I||y.right!==N?r(Qt(I,N),y):y}function kn(y){let I=B(164);return I.expression=i().parenthesizeExpressionOfComputedPropertyName(y),I.transformFlags|=tr(I.expression)|1024|131072,I}function _n(y,I){return y.expression!==I?r(kn(I),y):y}function Gt(y,I,N,te){let Me=q(165);return Me.modifiers=oo(y),Me.name=Zs(I),Me.constraint=N,Me.default=te,Me.transformFlags=1,Me.expression=void 0,Me.jsDoc=void 0,Me}function $n(y,I,N,te,Me){return y.modifiers!==I||y.name!==N||y.constraint!==te||y.default!==Me?r(Gt(I,N,te,Me),y):y}function ui(y,I,N,te,Me,Pt){var Tr,Fi;let Da=q(166);return Da.modifiers=oo(y),Da.dotDotDotToken=I,Da.name=Zs(N),Da.questionToken=te,Da.type=Me,Da.initializer=gy(Pt),kT(Da.name)?Da.transformFlags=1:Da.transformFlags=fo(Da.modifiers)|tr(Da.dotDotDotToken)|Gg(Da.name)|tr(Da.questionToken)|tr(Da.initializer)|(((Tr=Da.questionToken)!=null?Tr:Da.type)?1:0)|(((Fi=Da.dotDotDotToken)!=null?Fi:Da.initializer)?1024:0)|(im(Da.modifiers)&16476?8192:0),Da.jsDoc=void 0,Da}function Ni(y,I,N,te,Me,Pt,Tr){return y.modifiers!==I||y.dotDotDotToken!==N||y.name!==te||y.questionToken!==Me||y.type!==Pt||y.initializer!==Tr?r(ui(I,N,te,Me,Pt,Tr),y):y}function Pi(y){let I=B(167);return I.expression=i().parenthesizeLeftSideOfAccess(y,!1),I.transformFlags|=tr(I.expression)|1|8192|33554432,I}function gr(y,I){return y.expression!==I?r(Pi(I),y):y}function pt(y,I,N,te){let Me=q(168);return Me.modifiers=oo(y),Me.name=Zs(I),Me.type=te,Me.questionToken=N,Me.transformFlags=1,Me.initializer=void 0,Me.jsDoc=void 0,Me}function nn(y,I,N,te,Me){return y.modifiers!==I||y.name!==N||y.questionToken!==te||y.type!==Me?Dt(pt(I,N,te,Me),y):y}function Dt(y,I){return y!==I&&(y.initializer=I.initializer),r(y,I)}function pn(y,I,N,te,Me){let Pt=q(169);Pt.modifiers=oo(y),Pt.name=Zs(I),Pt.questionToken=N&&ev(N)?N:void 0,Pt.exclamationToken=N&&uO(N)?N:void 0,Pt.type=te,Pt.initializer=gy(Me);let Tr=Pt.flags&16777216||im(Pt.modifiers)&2;return Pt.transformFlags=fo(Pt.modifiers)|Gg(Pt.name)|tr(Pt.initializer)|(Tr||Pt.questionToken||Pt.exclamationToken||Pt.type?1:0)|(ts(Pt.name)||im(Pt.modifiers)&32&&Pt.initializer?8192:0)|16777216,Pt.jsDoc=void 0,Pt}function An(y,I,N,te,Me,Pt){return y.modifiers!==I||y.name!==N||y.questionToken!==(te!==void 0&&ev(te)?te:void 0)||y.exclamationToken!==(te!==void 0&&uO(te)?te:void 0)||y.type!==Me||y.initializer!==Pt?r(pn(I,N,te,Me,Pt),y):y}function Kn(y,I,N,te,Me,Pt){let Tr=q(170);return Tr.modifiers=oo(y),Tr.name=Zs(I),Tr.questionToken=N,Tr.typeParameters=oo(te),Tr.parameters=oo(Me),Tr.type=Pt,Tr.transformFlags=1,Tr.jsDoc=void 0,Tr.locals=void 0,Tr.nextContainer=void 0,Tr.typeArguments=void 0,Tr}function hi(y,I,N,te,Me,Pt,Tr){return y.modifiers!==I||y.name!==N||y.questionToken!==te||y.typeParameters!==Me||y.parameters!==Pt||y.type!==Tr?W(Kn(I,N,te,Me,Pt,Tr),y):y}function ri(y,I,N,te,Me,Pt,Tr,Fi){let Da=q(171);if(Da.modifiers=oo(y),Da.asteriskToken=I,Da.name=Zs(N),Da.questionToken=te,Da.exclamationToken=void 0,Da.typeParameters=oo(Me),Da.parameters=F(Pt),Da.type=Tr,Da.body=Fi,!Da.body)Da.transformFlags=1;else{let Vd=im(Da.modifiers)&512,lg=!!Da.asteriskToken,ug=Vd&&lg;Da.transformFlags=fo(Da.modifiers)|tr(Da.asteriskToken)|Gg(Da.name)|tr(Da.questionToken)|fo(Da.typeParameters)|fo(Da.parameters)|tr(Da.type)|tr(Da.body)&-67108865|(ug?128:Vd?256:lg?2048:0)|(Da.questionToken||Da.typeParameters||Da.type?1:0)|1024}return Da.typeArguments=void 0,Da.jsDoc=void 0,Da.locals=void 0,Da.nextContainer=void 0,Da.flowNode=void 0,Da.endFlowNode=void 0,Da.returnFlowNode=void 0,Da}function gn(y,I,N,te,Me,Pt,Tr,Fi,Da){return y.modifiers!==I||y.asteriskToken!==N||y.name!==te||y.questionToken!==Me||y.typeParameters!==Pt||y.parameters!==Tr||y.type!==Fi||y.body!==Da?Ht(ri(I,N,te,Me,Pt,Tr,Fi,Da),y):y}function Ht(y,I){return y!==I&&(y.exclamationToken=I.exclamationToken),r(y,I)}function En(y){let I=q(172);return I.body=y,I.transformFlags=tr(y)|16777216,I.modifiers=void 0,I.jsDoc=void 0,I.locals=void 0,I.nextContainer=void 0,I.endFlowNode=void 0,I.returnFlowNode=void 0,I}function dr(y,I){return y.body!==I?Cr(En(I),y):y}function Cr(y,I){return y!==I&&(y.modifiers=I.modifiers),r(y,I)}function Se(y,I,N){let te=q(173);return te.modifiers=oo(y),te.parameters=F(I),te.body=N,te.transformFlags=fo(te.modifiers)|fo(te.parameters)|tr(te.body)&-67108865|1024,te.typeParameters=void 0,te.type=void 0,te.typeArguments=void 0,te.jsDoc=void 0,te.locals=void 0,te.nextContainer=void 0,te.endFlowNode=void 0,te.returnFlowNode=void 0,te}function at(y,I,N,te){return y.modifiers!==I||y.parameters!==N||y.body!==te?Tt(Se(I,N,te),y):y}function Tt(y,I){return y!==I&&(y.typeParameters=I.typeParameters,y.type=I.type),W(y,I)}function ve(y,I,N,te,Me){let Pt=q(174);return Pt.modifiers=oo(y),Pt.name=Zs(I),Pt.parameters=F(N),Pt.type=te,Pt.body=Me,Pt.body?Pt.transformFlags=fo(Pt.modifiers)|Gg(Pt.name)|fo(Pt.parameters)|tr(Pt.type)|tr(Pt.body)&-67108865|(Pt.type?1:0):Pt.transformFlags=1,Pt.typeArguments=void 0,Pt.typeParameters=void 0,Pt.jsDoc=void 0,Pt.locals=void 0,Pt.nextContainer=void 0,Pt.flowNode=void 0,Pt.endFlowNode=void 0,Pt.returnFlowNode=void 0,Pt}function nt(y,I,N,te,Me,Pt){return y.modifiers!==I||y.name!==N||y.parameters!==te||y.type!==Me||y.body!==Pt?ce(ve(I,N,te,Me,Pt),y):y}function ce(y,I){return y!==I&&(y.typeParameters=I.typeParameters),W(y,I)}function $(y,I,N,te){let Me=q(175);return Me.modifiers=oo(y),Me.name=Zs(I),Me.parameters=F(N),Me.body=te,Me.body?Me.transformFlags=fo(Me.modifiers)|Gg(Me.name)|fo(Me.parameters)|tr(Me.body)&-67108865|(Me.type?1:0):Me.transformFlags=1,Me.typeArguments=void 0,Me.typeParameters=void 0,Me.type=void 0,Me.jsDoc=void 0,Me.locals=void 0,Me.nextContainer=void 0,Me.flowNode=void 0,Me.endFlowNode=void 0,Me.returnFlowNode=void 0,Me}function ue(y,I,N,te,Me){return y.modifiers!==I||y.name!==N||y.parameters!==te||y.body!==Me?G($(I,N,te,Me),y):y}function G(y,I){return y!==I&&(y.typeParameters=I.typeParameters,y.type=I.type),W(y,I)}function Oe(y,I,N){let te=q(176);return te.typeParameters=oo(y),te.parameters=oo(I),te.type=N,te.transformFlags=1,te.jsDoc=void 0,te.locals=void 0,te.nextContainer=void 0,te.typeArguments=void 0,te}function je(y,I,N,te){return y.typeParameters!==I||y.parameters!==N||y.type!==te?W(Oe(I,N,te),y):y}function Ge(y,I,N){let te=q(177);return te.typeParameters=oo(y),te.parameters=oo(I),te.type=N,te.transformFlags=1,te.jsDoc=void 0,te.locals=void 0,te.nextContainer=void 0,te.typeArguments=void 0,te}function kt(y,I,N,te){return y.typeParameters!==I||y.parameters!==N||y.type!==te?W(Ge(I,N,te),y):y}function Kt(y,I,N){let te=q(178);return te.modifiers=oo(y),te.parameters=oo(I),te.type=N,te.transformFlags=1,te.jsDoc=void 0,te.locals=void 0,te.nextContainer=void 0,te.typeArguments=void 0,te}function ln(y,I,N,te){return y.parameters!==N||y.type!==te||y.modifiers!==I?W(Kt(I,N,te),y):y}function ir(y,I){let N=B(201);return N.type=y,N.literal=I,N.transformFlags=1,N}function ae(y,I,N){return y.type!==I||y.literal!==N?r(ir(I,N),y):y}function rt(y){return Le(y)}function Ot(y,I,N){let te=B(179);return te.assertsModifier=y,te.parameterName=Zs(I),te.type=N,te.transformFlags=1,te}function Ke(y,I,N,te){return y.assertsModifier!==I||y.parameterName!==N||y.type!==te?r(Ot(I,N,te),y):y}function oe(y,I){let N=B(180);return N.typeName=Zs(y),N.typeArguments=I&&i().parenthesizeTypeArguments(F(I)),N.transformFlags=1,N}function pe(y,I,N){return y.typeName!==I||y.typeArguments!==N?r(oe(I,N),y):y}function z(y,I,N){let te=q(181);return te.typeParameters=oo(y),te.parameters=oo(I),te.type=N,te.transformFlags=1,te.modifiers=void 0,te.jsDoc=void 0,te.locals=void 0,te.nextContainer=void 0,te.typeArguments=void 0,te}function Te(y,I,N,te){return y.typeParameters!==I||y.parameters!==N||y.type!==te?j(z(I,N,te),y):y}function j(y,I){return y!==I&&(y.modifiers=I.modifiers),W(y,I)}function yt(...y){return y.length===4?lt(...y):y.length===3?Qe(...y):L.fail(\"Incorrect number of arguments specified.\")}function lt(y,I,N,te){let Me=q(182);return Me.modifiers=oo(y),Me.typeParameters=oo(I),Me.parameters=oo(N),Me.type=te,Me.transformFlags=1,Me.jsDoc=void 0,Me.locals=void 0,Me.nextContainer=void 0,Me.typeArguments=void 0,Me}function Qe(y,I,N){return lt(void 0,y,I,N)}function Vt(...y){return y.length===5?Hn(...y):y.length===4?jr(...y):L.fail(\"Incorrect number of arguments specified.\")}function Hn(y,I,N,te,Me){return y.modifiers!==I||y.typeParameters!==N||y.parameters!==te||y.type!==Me?W(yt(I,N,te,Me),y):y}function jr(y,I,N,te){return Hn(y,y.modifiers,I,N,te)}function ei(y,I){let N=B(183);return N.exprName=y,N.typeArguments=I&&i().parenthesizeTypeArguments(I),N.transformFlags=1,N}function Kr(y,I,N){return y.exprName!==I||y.typeArguments!==N?r(ei(I,N),y):y}function Si(y){let I=q(184);return I.members=F(y),I.transformFlags=1,I}function Ja(y,I){return y.members!==I?r(Si(I),y):y}function Za(y){let I=B(185);return I.elementType=i().parenthesizeNonArrayTypeOfPostfixType(y),I.transformFlags=1,I}function Fa(y,I){return y.elementType!==I?r(Za(I),y):y}function Hi(y){let I=B(186);return I.elements=F(i().parenthesizeElementTypesOfTupleType(y)),I.transformFlags=1,I}function xi(y,I){return y.elements!==I?r(Hi(I),y):y}function Nr(y,I,N,te){let Me=q(199);return Me.dotDotDotToken=y,Me.name=I,Me.questionToken=N,Me.type=te,Me.transformFlags=1,Me.jsDoc=void 0,Me}function Fo(y,I,N,te,Me){return y.dotDotDotToken!==I||y.name!==N||y.questionToken!==te||y.type!==Me?r(Nr(I,N,te,Me),y):y}function Qr(y){let I=B(187);return I.type=i().parenthesizeTypeOfOptionalType(y),I.transformFlags=1,I}function Wi(y,I){return y.type!==I?r(Qr(I),y):y}function yn(y){let I=B(188);return I.type=y,I.transformFlags=1,I}function Ki(y,I){return y.type!==I?r(yn(I),y):y}function kc(y,I,N){let te=B(y);return te.types=P.createNodeArray(N(I)),te.transformFlags=1,te}function Ps(y,I,N){return y.types!==I?r(kc(y.kind,I,N),y):y}function mc(y){return kc(189,y,i().parenthesizeConstituentTypesOfUnionType)}function xc(y,I){return Ps(y,I,i().parenthesizeConstituentTypesOfUnionType)}function hc(y){return kc(190,y,i().parenthesizeConstituentTypesOfIntersectionType)}function ro(y,I){return Ps(y,I,i().parenthesizeConstituentTypesOfIntersectionType)}function aa(y,I,N,te){let Me=B(191);return Me.checkType=i().parenthesizeCheckTypeOfConditionalType(y),Me.extendsType=i().parenthesizeExtendsTypeOfConditionalType(I),Me.trueType=N,Me.falseType=te,Me.transformFlags=1,Me.locals=void 0,Me.nextContainer=void 0,Me}function Co(y,I,N,te,Me){return y.checkType!==I||y.extendsType!==N||y.trueType!==te||y.falseType!==Me?r(aa(I,N,te,Me),y):y}function gc(y){let I=B(192);return I.typeParameter=y,I.transformFlags=1,I}function Ll(y,I){return y.typeParameter!==I?r(gc(I),y):y}function md(y,I){let N=B(200);return N.head=y,N.templateSpans=F(I),N.transformFlags=1,N}function Pc(y,I,N){return y.head!==I||y.templateSpans!==N?r(md(I,N),y):y}function bl(y,I,N,te,Me=!1){let Pt=B(202);return Pt.argument=y,Pt.assertions=I,Pt.qualifier=N,Pt.typeArguments=te&&i().parenthesizeTypeArguments(te),Pt.isTypeOf=Me,Pt.transformFlags=1,Pt}function ss(y,I,N,te,Me,Pt=y.isTypeOf){return y.argument!==I||y.assertions!==N||y.qualifier!==te||y.typeArguments!==Me||y.isTypeOf!==Pt?r(bl(I,N,te,Me,Pt),y):y}function qs(y){let I=B(193);return I.type=y,I.transformFlags=1,I}function Rs(y,I){return y.type!==I?r(qs(I),y):y}function As(){let y=B(194);return y.transformFlags=1,y}function jt(y,I){let N=B(195);return N.operator=y,N.type=y===146?i().parenthesizeOperandOfReadonlyTypeOperator(I):i().parenthesizeOperandOfTypeOperator(I),N.transformFlags=1,N}function yc(y,I){return y.type!==I?r(jt(y.operator,I),y):y}function Ql(y,I){let N=B(196);return N.objectType=i().parenthesizeNonArrayTypeOfPostfixType(y),N.indexType=I,N.transformFlags=1,N}function yu(y,I,N){return y.objectType!==I||y.indexType!==N?r(Ql(I,N),y):y}function se(y,I,N,te,Me,Pt){let Tr=q(197);return Tr.readonlyToken=y,Tr.typeParameter=I,Tr.nameType=N,Tr.questionToken=te,Tr.type=Me,Tr.members=Pt&&F(Pt),Tr.transformFlags=1,Tr.locals=void 0,Tr.nextContainer=void 0,Tr}function ht(y,I,N,te,Me,Pt,Tr){return y.readonlyToken!==I||y.typeParameter!==N||y.nameType!==te||y.questionToken!==Me||y.type!==Pt||y.members!==Tr?r(se(I,N,te,Me,Pt,Tr),y):y}function wt(y){let I=B(198);return I.literal=y,I.transformFlags=1,I}function K(y,I){return y.literal!==I?r(wt(I),y):y}function Xe(y){let I=B(203);return I.elements=F(y),I.transformFlags|=fo(I.elements)|1024|524288,I.transformFlags&32768&&(I.transformFlags|=65664),I}function ft(y,I){return y.elements!==I?r(Xe(I),y):y}function Yt(y){let I=B(204);return I.elements=F(y),I.transformFlags|=fo(I.elements)|1024|524288,I}function pr(y,I){return y.elements!==I?r(Yt(I),y):y}function yr(y,I,N,te){let Me=q(205);return Me.dotDotDotToken=y,Me.propertyName=Zs(I),Me.name=Zs(N),Me.initializer=gy(te),Me.transformFlags|=tr(Me.dotDotDotToken)|Gg(Me.propertyName)|Gg(Me.name)|tr(Me.initializer)|(Me.dotDotDotToken?32768:0)|1024,Me.flowNode=void 0,Me}function ta(y,I,N,te,Me){return y.propertyName!==N||y.dotDotDotToken!==I||y.name!==te||y.initializer!==Me?r(yr(I,N,te,Me),y):y}function Go(y,I){let N=B(206),te=y&&Os(y),Me=F(y,te&&ol(te)?!0:void 0);return N.elements=i().parenthesizeExpressionsOfCommaDelimitedList(Me),N.multiLine=I,N.transformFlags|=fo(N.elements),N}function Ka(y,I){return y.elements!==I?r(Go(I,y.multiLine),y):y}function vo(y,I){let N=q(207);return N.properties=F(y),N.multiLine=I,N.transformFlags|=fo(N.properties),N.jsDoc=void 0,N}function ka(y,I){return y.properties!==I?r(vo(I,y.multiLine),y):y}function Hs(y,I,N){let te=q(208);return te.expression=y,te.questionDotToken=I,te.name=N,te.transformFlags=tr(te.expression)|tr(te.questionDotToken)|(Re(te.name)?_L(te.name):tr(te.name)|536870912),te.jsDoc=void 0,te.flowNode=void 0,te}function Uc(y,I){let N=Hs(i().parenthesizeLeftSideOfAccess(y,!1),void 0,Zs(I));return gL(y)&&(N.transformFlags|=384),N}function Gu(y,I,N){return n6(y)?jo(y,I,y.questionDotToken,Ga(N,Re)):y.expression!==I||y.name!==N?r(Uc(I,N),y):y}function $o(y,I,N){let te=Hs(i().parenthesizeLeftSideOfAccess(y,!0),I,Zs(N));return te.flags|=32,te.transformFlags|=32,te}function jo(y,I,N,te){return L.assert(!!(y.flags&32),\"Cannot update a PropertyAccessExpression using updatePropertyAccessChain. Use updatePropertyAccess instead.\"),y.expression!==I||y.questionDotToken!==N||y.name!==te?r($o(I,N,te),y):y}function Ws(y,I,N){let te=q(209);return te.expression=y,te.questionDotToken=I,te.argumentExpression=N,te.transformFlags|=tr(te.expression)|tr(te.questionDotToken)|tr(te.argumentExpression),te.jsDoc=void 0,te.flowNode=void 0,te}function hd(y,I){let N=Ws(i().parenthesizeLeftSideOfAccess(y,!1),void 0,Fv(I));return gL(y)&&(N.transformFlags|=384),N}function vc(y,I,N){return Dj(y)?ye(y,I,y.questionDotToken,N):y.expression!==I||y.argumentExpression!==N?r(hd(I,N),y):y}function tf(y,I,N){let te=Ws(i().parenthesizeLeftSideOfAccess(y,!0),I,Fv(N));return te.flags|=32,te.transformFlags|=32,te}function ye(y,I,N,te){return L.assert(!!(y.flags&32),\"Cannot update a ElementAccessExpression using updateElementAccessChain. Use updateElementAccess instead.\"),y.expression!==I||y.questionDotToken!==N||y.argumentExpression!==te?r(tf(I,N,te),y):y}function Et(y,I,N,te){let Me=q(210);return Me.expression=y,Me.questionDotToken=I,Me.typeArguments=N,Me.arguments=te,Me.transformFlags|=tr(Me.expression)|tr(Me.questionDotToken)|fo(Me.typeArguments)|fo(Me.arguments),Me.typeArguments&&(Me.transformFlags|=1),Pu(Me.expression)&&(Me.transformFlags|=16384),Me}function bn(y,I,N){let te=Et(i().parenthesizeLeftSideOfAccess(y,!1),void 0,oo(I),i().parenthesizeExpressionsOfCommaDelimitedList(F(N)));return yL(te.expression)&&(te.transformFlags|=8388608),te}function Ri(y,I,N,te){return fT(y)?ee(y,I,y.questionDotToken,N,te):y.expression!==I||y.typeArguments!==N||y.arguments!==te?r(bn(I,N,te),y):y}function io(y,I,N,te){let Me=Et(i().parenthesizeLeftSideOfAccess(y,!0),I,oo(N),i().parenthesizeExpressionsOfCommaDelimitedList(F(te)));return Me.flags|=32,Me.transformFlags|=32,Me}function ee(y,I,N,te,Me){return L.assert(!!(y.flags&32),\"Cannot update a CallExpression using updateCallChain. Use updateCall instead.\"),y.expression!==I||y.questionDotToken!==N||y.typeArguments!==te||y.arguments!==Me?r(io(I,N,te,Me),y):y}function Ze(y,I,N){let te=q(211);return te.expression=i().parenthesizeExpressionOfNew(y),te.typeArguments=oo(I),te.arguments=N?i().parenthesizeExpressionsOfCommaDelimitedList(N):void 0,te.transformFlags|=tr(te.expression)|fo(te.typeArguments)|fo(te.arguments)|32,te.typeArguments&&(te.transformFlags|=1),te}function At(y,I,N,te){return y.expression!==I||y.typeArguments!==N||y.arguments!==te?r(Ze(I,N,te),y):y}function xt(y,I,N){let te=B(212);return te.tag=i().parenthesizeLeftSideOfAccess(y,!1),te.typeArguments=oo(I),te.template=N,te.transformFlags|=tr(te.tag)|fo(te.typeArguments)|tr(te.template)|1024,te.typeArguments&&(te.transformFlags|=1),KH(te.template)&&(te.transformFlags|=128),te}function qt(y,I,N,te){return y.tag!==I||y.typeArguments!==N||y.template!==te?r(xt(I,N,te),y):y}function Ln(y,I){let N=B(213);return N.expression=i().parenthesizeOperandOfPrefixUnary(I),N.type=y,N.transformFlags|=tr(N.expression)|tr(N.type)|1,N}function mr(y,I,N){return y.type!==I||y.expression!==N?r(Ln(I,N),y):y}function Vr(y){let I=B(214);return I.expression=y,I.transformFlags=tr(I.expression),I.jsDoc=void 0,I}function gi(y,I){return y.expression!==I?r(Vr(I),y):y}function Ea(y,I,N,te,Me,Pt,Tr){let Fi=q(215);Fi.modifiers=oo(y),Fi.asteriskToken=I,Fi.name=Zs(N),Fi.typeParameters=oo(te),Fi.parameters=F(Me),Fi.type=Pt,Fi.body=Tr;let Da=im(Fi.modifiers)&512,Vd=!!Fi.asteriskToken,lg=Da&&Vd;return Fi.transformFlags=fo(Fi.modifiers)|tr(Fi.asteriskToken)|Gg(Fi.name)|fo(Fi.typeParameters)|fo(Fi.parameters)|tr(Fi.type)|tr(Fi.body)&-67108865|(lg?128:Da?256:Vd?2048:0)|(Fi.typeParameters||Fi.type?1:0)|4194304,Fi.typeArguments=void 0,Fi.jsDoc=void 0,Fi.locals=void 0,Fi.nextContainer=void 0,Fi.flowNode=void 0,Fi.endFlowNode=void 0,Fi.returnFlowNode=void 0,Fi}function bo(y,I,N,te,Me,Pt,Tr,Fi){return y.name!==te||y.modifiers!==I||y.asteriskToken!==N||y.typeParameters!==Me||y.parameters!==Pt||y.type!==Tr||y.body!==Fi?W(Ea(I,N,te,Me,Pt,Tr,Fi),y):y}function Qo(y,I,N,te,Me,Pt){let Tr=q(216);Tr.modifiers=oo(y),Tr.typeParameters=oo(I),Tr.parameters=F(N),Tr.type=te,Tr.equalsGreaterThanToken=Me??Le(38),Tr.body=i().parenthesizeConciseBodyOfArrowFunction(Pt);let Fi=im(Tr.modifiers)&512;return Tr.transformFlags=fo(Tr.modifiers)|fo(Tr.typeParameters)|fo(Tr.parameters)|tr(Tr.type)|tr(Tr.equalsGreaterThanToken)|tr(Tr.body)&-67108865|(Tr.typeParameters||Tr.type?1:0)|(Fi?16640:0)|1024,Tr.typeArguments=void 0,Tr.jsDoc=void 0,Tr.locals=void 0,Tr.nextContainer=void 0,Tr.flowNode=void 0,Tr.endFlowNode=void 0,Tr.returnFlowNode=void 0,Tr}function Cs(y,I,N,te,Me,Pt,Tr){return y.modifiers!==I||y.typeParameters!==N||y.parameters!==te||y.type!==Me||y.equalsGreaterThanToken!==Pt||y.body!==Tr?W(Qo(I,N,te,Me,Pt,Tr),y):y}function Bu(y){let I=B(217);return I.expression=i().parenthesizeOperandOfPrefixUnary(y),I.transformFlags|=tr(I.expression),I}function Pd(y,I){return y.expression!==I?r(Bu(I),y):y}function Dc(y){let I=B(218);return I.expression=i().parenthesizeOperandOfPrefixUnary(y),I.transformFlags|=tr(I.expression),I}function gd(y,I){return y.expression!==I?r(Dc(I),y):y}function Zl(y){let I=B(219);return I.expression=i().parenthesizeOperandOfPrefixUnary(y),I.transformFlags|=tr(I.expression),I}function Md(y,I){return y.expression!==I?r(Zl(I),y):y}function Wf(y){let I=B(220);return I.expression=i().parenthesizeOperandOfPrefixUnary(y),I.transformFlags|=tr(I.expression)|256|128|2097152,I}function Io(y,I){return y.expression!==I?r(Wf(I),y):y}function zf(y,I){let N=B(221);return N.operator=y,N.operand=i().parenthesizeOperandOfPrefixUnary(I),N.transformFlags|=tr(N.operand),(y===45||y===46)&&Re(N.operand)&&!tc(N.operand)&&!rv(N.operand)&&(N.transformFlags|=268435456),N}function Fd(y,I){return y.operand!==I?r(zf(y.operator,I),y):y}function b_(y,I){let N=B(222);return N.operator=I,N.operand=i().parenthesizeOperandOfPostfixUnary(y),N.transformFlags|=tr(N.operand),Re(N.operand)&&!tc(N.operand)&&!rv(N.operand)&&(N.transformFlags|=268435456),N}function X_(y,I){return y.operand!==I?r(b_(I,y.operator),y):y}function M(y,I,N){let te=q(223),Me=zk(I),Pt=Me.kind;return te.left=i().parenthesizeLeftSideOfBinary(Pt,y),te.operatorToken=Me,te.right=i().parenthesizeRightSideOfBinary(Pt,te.left,N),te.transformFlags|=tr(te.left)|tr(te.operatorToken)|tr(te.right),Pt===60?te.transformFlags|=32:Pt===63?rs(te.left)?te.transformFlags|=5248|He(te.left):fu(te.left)&&(te.transformFlags|=5120|He(te.left)):Pt===42||Pt===67?te.transformFlags|=512:WI(Pt)&&(te.transformFlags|=16),Pt===101&&pi(te.left)&&(te.transformFlags|=536870912),te.jsDoc=void 0,te}function He(y){return LO(y)?65536:0}function Nt(y,I,N,te){return y.left!==I||y.operatorToken!==N||y.right!==te?r(M(I,N,te),y):y}function Pn(y,I,N,te,Me){let Pt=B(224);return Pt.condition=i().parenthesizeConditionOfConditionalExpression(y),Pt.questionToken=I??Le(57),Pt.whenTrue=i().parenthesizeBranchOfConditionalExpression(N),Pt.colonToken=te??Le(58),Pt.whenFalse=i().parenthesizeBranchOfConditionalExpression(Me),Pt.transformFlags|=tr(Pt.condition)|tr(Pt.questionToken)|tr(Pt.whenTrue)|tr(Pt.colonToken)|tr(Pt.whenFalse),Pt}function la(y,I,N,te,Me,Pt){return y.condition!==I||y.questionToken!==N||y.whenTrue!==te||y.colonToken!==Me||y.whenFalse!==Pt?r(Pn(I,N,te,Me,Pt),y):y}function oa(y,I){let N=B(225);return N.head=y,N.templateSpans=F(I),N.transformFlags|=tr(N.head)|fo(N.templateSpans)|1024,N}function be(y,I,N){return y.head!==I||y.templateSpans!==N?r(oa(I,N),y):y}function De(y,I,N,te=0){L.assert(!(te&-2049),\"Unsupported template flags.\");let Me;if(N!==void 0&&N!==I&&(Me=LRe(y,N),typeof Me==\"object\"))return L.fail(\"Invalid raw text\");if(I===void 0){if(Me===void 0)return L.fail(\"Arguments 'text' and 'rawText' may not both be undefined.\");I=Me}else Me!==void 0&&L.assert(I===Me,\"Expected argument 'text' to be the normalized (i.e. 'cooked') version of argument 'rawText'.\");return I}function mt(y){let I=1024;return y&&(I|=128),I}function St(y,I,N,te){let Me=Ne(y);return Me.text=I,Me.rawText=N,Me.templateFlags=te&2048,Me.transformFlags=mt(Me.templateFlags),Me}function Zt(y,I,N,te){let Me=q(y);return Me.text=I,Me.rawText=N,Me.templateFlags=te&2048,Me.transformFlags=mt(Me.templateFlags),Me}function rn(y,I,N,te){return y===14?Zt(y,I,N,te):St(y,I,N,te)}function sn(y,I,N){return y=De(15,y,I,N),rn(15,y,I,N)}function Dn(y,I,N){return y=De(15,y,I,N),rn(16,y,I,N)}function kr(y,I,N){return y=De(15,y,I,N),rn(17,y,I,N)}function ki(y,I,N){return y=De(15,y,I,N),Zt(14,y,I,N)}function Vn(y,I){L.assert(!y||!!I,\"A `YieldExpression` with an asteriskToken must have an expression.\");let N=B(226);return N.expression=I&&i().parenthesizeExpressionForDisallowedComma(I),N.asteriskToken=y,N.transformFlags|=tr(N.expression)|tr(N.asteriskToken)|1024|128|1048576,N}function $t(y,I,N){return y.expression!==N||y.asteriskToken!==I?r(Vn(I,N),y):y}function Xn(y){let I=B(227);return I.expression=i().parenthesizeExpressionForDisallowedComma(y),I.transformFlags|=tr(I.expression)|1024|32768,I}function ra(y,I){return y.expression!==I?r(Xn(I),y):y}function Is(y,I,N,te,Me){let Pt=q(228);return Pt.modifiers=oo(y),Pt.name=Zs(I),Pt.typeParameters=oo(N),Pt.heritageClauses=oo(te),Pt.members=F(Me),Pt.transformFlags|=fo(Pt.modifiers)|Gg(Pt.name)|fo(Pt.typeParameters)|fo(Pt.heritageClauses)|fo(Pt.members)|(Pt.typeParameters?1:0)|1024,Pt.jsDoc=void 0,Pt}function Mc(y,I,N,te,Me,Pt){return y.modifiers!==I||y.name!==N||y.typeParameters!==te||y.heritageClauses!==Me||y.members!==Pt?r(Is(I,N,te,Me,Pt),y):y}function mm(){return B(229)}function Hh(y,I){let N=B(230);return N.expression=i().parenthesizeLeftSideOfAccess(y,!1),N.typeArguments=I&&i().parenthesizeTypeArguments(I),N.transformFlags|=tr(N.expression)|fo(N.typeArguments)|1024,N}function E_(y,I,N){return y.expression!==I||y.typeArguments!==N?r(Hh(I,N),y):y}function Cb(y,I){let N=B(231);return N.expression=y,N.type=I,N.transformFlags|=tr(N.expression)|tr(N.type)|1,N}function mv(y,I,N){return y.expression!==I||y.type!==N?r(Cb(I,N),y):y}function yx(y){let I=B(232);return I.expression=i().parenthesizeLeftSideOfAccess(y,!1),I.transformFlags|=tr(I.expression)|1,I}function p1(y,I){return i6(y)?hv(y,I):y.expression!==I?r(yx(I),y):y}function vx(y,I){let N=B(235);return N.expression=y,N.type=I,N.transformFlags|=tr(N.expression)|tr(N.type)|1,N}function Wh(y,I,N){return y.expression!==I||y.type!==N?r(vx(I,N),y):y}function T_(y){let I=B(232);return I.flags|=32,I.expression=i().parenthesizeLeftSideOfAccess(y,!0),I.transformFlags|=tr(I.expression)|1,I}function hv(y,I){return L.assert(!!(y.flags&32),\"Cannot update a NonNullExpression using updateNonNullChain. Use updateNonNullExpression instead.\"),y.expression!==I?r(T_(I),y):y}function eh(y,I){let N=B(233);switch(N.keywordToken=y,N.name=I,N.transformFlags|=tr(N.name),y){case 103:N.transformFlags|=1024;break;case 100:N.transformFlags|=4;break;default:return L.assertNever(y)}return N.flowNode=void 0,N}function Y_(y,I){return y.name!==I?r(eh(y.keywordToken,I),y):y}function gv(y,I){let N=B(236);return N.expression=y,N.literal=I,N.transformFlags|=tr(N.expression)|tr(N.literal)|1024,N}function lE(y,I,N){return y.expression!==I||y.literal!==N?r(gv(I,N),y):y}function Ib(){let y=B(237);return y.transformFlags|=1024,y}function zh(y,I){let N=B(238);return N.statements=F(y),N.multiLine=I,N.transformFlags|=fo(N.statements),N.jsDoc=void 0,N.locals=void 0,N.nextContainer=void 0,N}function m1(y,I){return y.statements!==I?r(zh(I,y.multiLine),y):y}function uE(y,I){let N=B(240);return N.modifiers=oo(y),N.declarationList=ba(I)?Ip(I):I,N.transformFlags|=fo(N.modifiers)|tr(N.declarationList),im(N.modifiers)&2&&(N.transformFlags=1),N.jsDoc=void 0,N.flowNode=void 0,N}function dE(y,I,N){return y.modifiers!==I||y.declarationList!==N?r(uE(I,N),y):y}function fE(){let y=B(239);return y.jsDoc=void 0,y}function yv(y){let I=B(241);return I.expression=i().parenthesizeExpressionOfExpressionStatement(y),I.transformFlags|=tr(I.expression),I.jsDoc=void 0,I.flowNode=void 0,I}function bx(y,I){return y.expression!==I?r(yv(I),y):y}function _E(y,I,N){let te=B(242);return te.expression=y,te.thenStatement=ad(I),te.elseStatement=ad(N),te.transformFlags|=tr(te.expression)|tr(te.thenStatement)|tr(te.elseStatement),te.jsDoc=void 0,te.flowNode=void 0,te}function pE(y,I,N,te){return y.expression!==I||y.thenStatement!==N||y.elseStatement!==te?r(_E(I,N,te),y):y}function vv(y,I){let N=B(243);return N.statement=ad(y),N.expression=I,N.transformFlags|=tr(N.statement)|tr(N.expression),N.jsDoc=void 0,N.flowNode=void 0,N}function Lb(y,I,N){return y.statement!==I||y.expression!==N?r(vv(I,N),y):y}function bv(y,I){let N=B(244);return N.expression=y,N.statement=ad(I),N.transformFlags|=tr(N.expression)|tr(N.statement),N.jsDoc=void 0,N.flowNode=void 0,N}function h1(y,I,N){return y.expression!==I||y.statement!==N?r(bv(I,N),y):y}function Jh(y,I,N,te){let Me=B(245);return Me.initializer=y,Me.condition=I,Me.incrementor=N,Me.statement=ad(te),Me.transformFlags|=tr(Me.initializer)|tr(Me.condition)|tr(Me.incrementor)|tr(Me.statement),Me.jsDoc=void 0,Me.locals=void 0,Me.nextContainer=void 0,Me.flowNode=void 0,Me}function Lo(y,I,N,te,Me){return y.initializer!==I||y.condition!==N||y.incrementor!==te||y.statement!==Me?r(Jh(I,N,te,Me),y):y}function mE(y,I,N){let te=B(246);return te.initializer=y,te.expression=I,te.statement=ad(N),te.transformFlags|=tr(te.initializer)|tr(te.expression)|tr(te.statement),te.jsDoc=void 0,te.locals=void 0,te.nextContainer=void 0,te.flowNode=void 0,te}function cC(y,I,N,te){return y.initializer!==I||y.expression!==N||y.statement!==te?r(mE(I,N,te),y):y}function Zg(y,I,N,te){let Me=B(247);return Me.awaitModifier=y,Me.initializer=I,Me.expression=i().parenthesizeExpressionForDisallowedComma(N),Me.statement=ad(te),Me.transformFlags|=tr(Me.awaitModifier)|tr(Me.initializer)|tr(Me.expression)|tr(Me.statement)|1024,y&&(Me.transformFlags|=128),Me.jsDoc=void 0,Me.locals=void 0,Me.nextContainer=void 0,Me.flowNode=void 0,Me}function Kh(y,I,N,te,Me){return y.awaitModifier!==I||y.initializer!==N||y.expression!==te||y.statement!==Me?r(Zg(I,N,te,Me),y):y}function hm(y){let I=B(248);return I.label=Zs(y),I.transformFlags|=tr(I.label)|4194304,I.jsDoc=void 0,I.flowNode=void 0,I}function S_(y,I){return y.label!==I?r(hm(I),y):y}function Zu(y){let I=B(249);return I.label=Zs(y),I.transformFlags|=tr(I.label)|4194304,I.jsDoc=void 0,I.flowNode=void 0,I}function ed(y,I){return y.label!==I?r(Zu(I),y):y}function td(y){let I=B(250);return I.expression=y,I.transformFlags|=tr(I.expression)|128|4194304,I.jsDoc=void 0,I.flowNode=void 0,I}function kb(y,I){return y.expression!==I?r(td(I),y):y}function Db(y,I){let N=B(251);return N.expression=y,N.statement=ad(I),N.transformFlags|=tr(N.expression)|tr(N.statement),N.jsDoc=void 0,N.flowNode=void 0,N}function Ex(y,I,N){return y.expression!==I||y.statement!==N?r(Db(I,N),y):y}function wb(y,I){let N=B(252);return N.expression=i().parenthesizeExpressionForDisallowedComma(y),N.caseBlock=I,N.transformFlags|=tr(N.expression)|tr(N.caseBlock),N.jsDoc=void 0,N.flowNode=void 0,N.possiblyExhaustive=!1,N}function qh(y,I,N){return y.expression!==I||y.caseBlock!==N?r(wb(I,N),y):y}function Rb(y,I){let N=B(253);return N.label=Zs(y),N.statement=ad(I),N.transformFlags|=tr(N.label)|tr(N.statement),N.jsDoc=void 0,N.flowNode=void 0,N}function g1(y,I,N){return y.label!==I||y.statement!==N?r(Rb(I,N),y):y}function Ob(y){let I=B(254);return I.expression=y,I.transformFlags|=tr(I.expression),I.jsDoc=void 0,I.flowNode=void 0,I}function lC(y,I){return y.expression!==I?r(Ob(I),y):y}function Tx(y,I,N){let te=B(255);return te.tryBlock=y,te.catchClause=I,te.finallyBlock=N,te.transformFlags|=tr(te.tryBlock)|tr(te.catchClause)|tr(te.finallyBlock),te.jsDoc=void 0,te.flowNode=void 0,te}function Ev(y,I,N,te){return y.tryBlock!==I||y.catchClause!==N||y.finallyBlock!==te?r(Tx(I,N,te),y):y}function hE(){let y=B(256);return y.jsDoc=void 0,y.flowNode=void 0,y}function Fe(y,I,N,te){var Me;let Pt=q(257);return Pt.name=Zs(y),Pt.exclamationToken=I,Pt.type=N,Pt.initializer=gy(te),Pt.transformFlags|=Gg(Pt.name)|tr(Pt.initializer)|(((Me=Pt.exclamationToken)!=null?Me:Pt.type)?1:0),Pt.jsDoc=void 0,Pt}function ey(y,I,N,te,Me){return y.name!==I||y.type!==te||y.exclamationToken!==N||y.initializer!==Me?r(Fe(I,N,te,Me),y):y}function Ip(y,I=0){let N=B(258);return N.flags|=I&3,N.declarations=F(y),N.transformFlags|=fo(N.declarations)|4194304,I&3&&(N.transformFlags|=263168),N}function Tv(y,I){return y.declarations!==I?r(Ip(I,y.flags),y):y}function Nb(y,I,N,te,Me,Pt,Tr){let Fi=q(259);if(Fi.modifiers=oo(y),Fi.asteriskToken=I,Fi.name=Zs(N),Fi.typeParameters=oo(te),Fi.parameters=F(Me),Fi.type=Pt,Fi.body=Tr,!Fi.body||im(Fi.modifiers)&2)Fi.transformFlags=1;else{let Da=im(Fi.modifiers)&512,Vd=!!Fi.asteriskToken,lg=Da&&Vd;Fi.transformFlags=fo(Fi.modifiers)|tr(Fi.asteriskToken)|Gg(Fi.name)|fo(Fi.typeParameters)|fo(Fi.parameters)|tr(Fi.type)|tr(Fi.body)&-67108865|(lg?128:Da?256:Vd?2048:0)|(Fi.typeParameters||Fi.type?1:0)|4194304}return Fi.typeArguments=void 0,Fi.jsDoc=void 0,Fi.locals=void 0,Fi.nextContainer=void 0,Fi.endFlowNode=void 0,Fi.returnFlowNode=void 0,Fi}function Sv(y,I,N,te,Me,Pt,Tr,Fi){return y.modifiers!==I||y.asteriskToken!==N||y.name!==te||y.typeParameters!==Me||y.parameters!==Pt||y.type!==Tr||y.body!==Fi?Xh(Nb(I,N,te,Me,Pt,Tr,Fi),y):y}function Xh(y,I){return y!==I&&y.modifiers===I.modifiers&&(y.modifiers=I.modifiers),W(y,I)}function y1(y,I,N,te,Me){let Pt=q(260);return Pt.modifiers=oo(y),Pt.name=Zs(I),Pt.typeParameters=oo(N),Pt.heritageClauses=oo(te),Pt.members=F(Me),im(Pt.modifiers)&2?Pt.transformFlags=1:(Pt.transformFlags|=fo(Pt.modifiers)|Gg(Pt.name)|fo(Pt.typeParameters)|fo(Pt.heritageClauses)|fo(Pt.members)|(Pt.typeParameters?1:0)|1024,Pt.transformFlags&8192&&(Pt.transformFlags|=1)),Pt.jsDoc=void 0,Pt}function wo(y,I,N,te,Me,Pt){return y.modifiers!==I||y.name!==N||y.typeParameters!==te||y.heritageClauses!==Me||y.members!==Pt?r(y1(I,N,te,Me,Pt),y):y}function x_(y,I,N,te,Me){let Pt=q(261);return Pt.modifiers=oo(y),Pt.name=Zs(I),Pt.typeParameters=oo(N),Pt.heritageClauses=oo(te),Pt.members=F(Me),Pt.transformFlags=1,Pt.jsDoc=void 0,Pt}function gE(y,I,N,te,Me,Pt){return y.modifiers!==I||y.name!==N||y.typeParameters!==te||y.heritageClauses!==Me||y.members!==Pt?r(x_(I,N,te,Me,Pt),y):y}function Kc(y,I,N,te){let Me=q(262);return Me.modifiers=oo(y),Me.name=Zs(I),Me.typeParameters=oo(N),Me.type=te,Me.transformFlags=1,Me.jsDoc=void 0,Me.locals=void 0,Me.nextContainer=void 0,Me}function th(y,I,N,te,Me){return y.modifiers!==I||y.name!==N||y.typeParameters!==te||y.type!==Me?r(Kc(I,N,te,Me),y):y}function Pb(y,I,N){let te=q(263);return te.modifiers=oo(y),te.name=Zs(I),te.members=F(N),te.transformFlags|=fo(te.modifiers)|tr(te.name)|fo(te.members)|1,te.transformFlags&=-67108865,te.jsDoc=void 0,te}function A_(y,I,N,te){return y.modifiers!==I||y.name!==N||y.members!==te?r(Pb(I,N,te),y):y}function Mb(y,I,N,te=0){let Me=q(264);return Me.modifiers=oo(y),Me.flags|=te&1044,Me.name=I,Me.body=N,im(Me.modifiers)&2?Me.transformFlags=1:Me.transformFlags|=fo(Me.modifiers)|tr(Me.name)|tr(Me.body)|1,Me.transformFlags&=-67108865,Me.jsDoc=void 0,Me.locals=void 0,Me.nextContainer=void 0,Me}function Ml(y,I,N,te){return y.modifiers!==I||y.name!==N||y.body!==te?r(Mb(I,N,te,y.flags),y):y}function Yh(y){let I=B(265);return I.statements=F(y),I.transformFlags|=fo(I.statements),I.jsDoc=void 0,I}function ll(y,I){return y.statements!==I?r(Yh(I),y):y}function v1(y){let I=B(266);return I.clauses=F(y),I.transformFlags|=fo(I.clauses),I.locals=void 0,I.nextContainer=void 0,I}function uC(y,I){return y.clauses!==I?r(v1(I),y):y}function Ai(y){let I=q(267);return I.name=Zs(y),I.transformFlags|=_L(I.name)|1,I.modifiers=void 0,I.jsDoc=void 0,I}function Rr(y,I){return y.name!==I?gm(Ai(I),y):y}function gm(y,I){return y!==I&&(y.modifiers=I.modifiers),r(y,I)}function yd(y,I,N,te){let Me=q(268);return Me.modifiers=oo(y),Me.name=Zs(N),Me.isTypeOnly=I,Me.moduleReference=te,Me.transformFlags|=fo(Me.modifiers)|_L(Me.name)|tr(Me.moduleReference),um(Me.moduleReference)||(Me.transformFlags|=1),Me.transformFlags&=-67108865,Me.jsDoc=void 0,Me}function yE(y,I,N,te,Me){return y.modifiers!==I||y.isTypeOnly!==N||y.name!==te||y.moduleReference!==Me?r(yd(I,N,te,Me),y):y}function $h(y,I,N,te){let Me=B(269);return Me.modifiers=oo(y),Me.importClause=I,Me.moduleSpecifier=N,Me.assertClause=te,Me.transformFlags|=tr(Me.importClause)|tr(Me.moduleSpecifier),Me.transformFlags&=-67108865,Me.jsDoc=void 0,Me}function nh(y,I,N,te,Me){return y.modifiers!==I||y.importClause!==N||y.moduleSpecifier!==te||y.assertClause!==Me?r($h(I,N,te,Me),y):y}function ym(y,I,N){let te=q(270);return te.isTypeOnly=y,te.name=I,te.namedBindings=N,te.transformFlags|=tr(te.name)|tr(te.namedBindings),y&&(te.transformFlags|=1),te.transformFlags&=-67108865,te}function zs(y,I,N,te){return y.isTypeOnly!==I||y.name!==N||y.namedBindings!==te?r(ym(I,N,te),y):y}function Fb(y,I){let N=B(296);return N.elements=F(y),N.multiLine=I,N.transformFlags|=4,N}function b1(y,I,N){return y.elements!==I||y.multiLine!==N?r(Fb(I,N),y):y}function Gb(y,I){let N=B(297);return N.name=y,N.value=I,N.transformFlags|=4,N}function E1(y,I,N){return y.name!==I||y.value!==N?r(Gb(I,N),y):y}function Af(y,I){let N=B(298);return N.assertClause=y,N.multiLine=I,N}function Sx(y,I,N){return y.assertClause!==I||y.multiLine!==N?r(Af(I,N),y):y}function xx(y){let I=q(271);return I.name=y,I.transformFlags|=tr(I.name),I.transformFlags&=-67108865,I}function xv(y,I){return y.name!==I?r(xx(I),y):y}function T1(y){let I=q(277);return I.name=y,I.transformFlags|=tr(I.name)|4,I.transformFlags&=-67108865,I}function S1(y,I){return y.name!==I?r(T1(I),y):y}function Ax(y){let I=B(272);return I.elements=F(y),I.transformFlags|=fo(I.elements),I.transformFlags&=-67108865,I}function Bb(y,I){return y.elements!==I?r(Ax(I),y):y}function x1(y,I,N){let te=q(273);return te.isTypeOnly=y,te.propertyName=I,te.name=N,te.transformFlags|=tr(te.propertyName)|tr(te.name),te.transformFlags&=-67108865,te}function nf(y,I,N,te){return y.isTypeOnly!==I||y.propertyName!==N||y.name!==te?r(x1(I,N,te),y):y}function Qh(y,I,N){let te=q(274);return te.modifiers=oo(y),te.isExportEquals=I,te.expression=I?i().parenthesizeRightSideOfBinary(63,void 0,N):i().parenthesizeExpressionOfExportDefault(N),te.transformFlags|=fo(te.modifiers)|tr(te.expression),te.transformFlags&=-67108865,te.jsDoc=void 0,te}function $_(y,I,N){return y.modifiers!==I||y.expression!==N?r(Qh(I,y.isExportEquals,N),y):y}function C_(y,I,N,te,Me){let Pt=q(275);return Pt.modifiers=oo(y),Pt.isTypeOnly=I,Pt.exportClause=N,Pt.moduleSpecifier=te,Pt.assertClause=Me,Pt.transformFlags|=fo(Pt.modifiers)|tr(Pt.exportClause)|tr(Pt.moduleSpecifier),Pt.transformFlags&=-67108865,Pt.jsDoc=void 0,Pt}function Cx(y,I,N,te,Me,Pt){return y.modifiers!==I||y.isTypeOnly!==N||y.exportClause!==te||y.moduleSpecifier!==Me||y.assertClause!==Pt?Ub(C_(I,N,te,Me,Pt),y):y}function Ub(y,I){return y!==I&&y.modifiers===I.modifiers&&(y.modifiers=I.modifiers),r(y,I)}function Lp(y){let I=B(276);return I.elements=F(y),I.transformFlags|=fo(I.elements),I.transformFlags&=-67108865,I}function A1(y,I){return y.elements!==I?r(Lp(I),y):y}function Uu(y,I,N){let te=B(278);return te.isTypeOnly=y,te.propertyName=Zs(I),te.name=Zs(N),te.transformFlags|=tr(te.propertyName)|tr(te.name),te.transformFlags&=-67108865,te.jsDoc=void 0,te}function Zh(y,I,N,te){return y.isTypeOnly!==I||y.propertyName!==N||y.name!==te?r(Uu(I,N,te),y):y}function kp(){let y=q(279);return y.jsDoc=void 0,y}function Dp(y){let I=B(280);return I.expression=y,I.transformFlags|=tr(I.expression),I.transformFlags&=-67108865,I}function eg(y,I){return y.expression!==I?r(Dp(I),y):y}function vE(y){return B(y)}function C1(y,I,N=!1){let te=ty(y,N?I&&i().parenthesizeNonArrayTypeOfPostfixType(I):I);return te.postfix=N,te}function ty(y,I){let N=B(y);return N.type=I,N}function bE(y,I,N){return I.type!==N?r(C1(y,N,I.postfix),I):I}function cs(y,I,N){return I.type!==N?r(ty(y,N),I):I}function ny(y,I){let N=q(320);return N.parameters=oo(y),N.type=I,N.transformFlags=fo(N.parameters)|(N.type?1:0),N.jsDoc=void 0,N.locals=void 0,N.nextContainer=void 0,N.typeArguments=void 0,N}function Ix(y,I,N){return y.parameters!==I||y.type!==N?r(ny(I,N),y):y}function Vb(y,I=!1){let N=q(325);return N.jsDocPropertyTags=oo(y),N.isArrayType=I,N}function jb(y,I,N){return y.jsDocPropertyTags!==I||y.isArrayType!==N?r(Vb(I,N),y):y}function Lx(y){let I=B(312);return I.type=y,I}function dC(y,I){return y.type!==I?r(Lx(I),y):y}function kx(y,I,N){let te=q(326);return te.typeParameters=oo(y),te.parameters=F(I),te.type=N,te.jsDoc=void 0,te.locals=void 0,te.nextContainer=void 0,te}function Qn(y,I,N,te){return y.typeParameters!==I||y.parameters!==N||y.type!==te?r(kx(I,N,te),y):y}function lc(y){let I=w4(y.kind);return y.tagName.escapedText===Bs(I)?y.tagName:_e(I)}function zi(y,I,N){let te=B(y);return te.tagName=I,te.comment=N,te}function rf(y,I,N){let te=q(y);return te.tagName=I,te.comment=N,te}function Av(y,I,N,te){let Me=zi(348,y??_e(\"template\"),te);return Me.constraint=I,Me.typeParameters=F(N),Me}function vm(y,I=lc(y),N,te,Me){return y.tagName!==I||y.constraint!==N||y.typeParameters!==te||y.comment!==Me?r(Av(I,N,te,Me),y):y}function Wn(y,I,N,te){let Me=rf(349,y??_e(\"typedef\"),te);return Me.typeExpression=I,Me.fullName=N,Me.name=iJ(N),Me.locals=void 0,Me.nextContainer=void 0,Me}function Dx(y,I=lc(y),N,te,Me){return y.tagName!==I||y.typeExpression!==N||y.fullName!==te||y.comment!==Me?r(Wn(I,N,te,Me),y):y}function ry(y,I,N,te,Me,Pt){let Tr=rf(344,y??_e(\"param\"),Pt);return Tr.typeExpression=te,Tr.name=I,Tr.isNameFirst=!!Me,Tr.isBracketed=N,Tr}function nl(y,I=lc(y),N,te,Me,Pt,Tr){return y.tagName!==I||y.name!==N||y.isBracketed!==te||y.typeExpression!==Me||y.isNameFirst!==Pt||y.comment!==Tr?r(ry(I,N,te,Me,Pt,Tr),y):y}function Jf(y,I,N,te,Me,Pt){let Tr=rf(351,y??_e(\"prop\"),Pt);return Tr.typeExpression=te,Tr.name=I,Tr.isNameFirst=!!Me,Tr.isBracketed=N,Tr}function Q_(y,I=lc(y),N,te,Me,Pt,Tr){return y.tagName!==I||y.name!==N||y.isBracketed!==te||y.typeExpression!==Me||y.isNameFirst!==Pt||y.comment!==Tr?r(Jf(I,N,te,Me,Pt,Tr),y):y}function iy(y,I,N,te){let Me=rf(341,y??_e(\"callback\"),te);return Me.typeExpression=I,Me.fullName=N,Me.name=iJ(N),Me.locals=void 0,Me.nextContainer=void 0,Me}function EE(y,I=lc(y),N,te,Me){return y.tagName!==I||y.typeExpression!==N||y.fullName!==te||y.comment!==Me?r(iy(I,N,te,Me),y):y}function I_(y,I,N){let te=zi(342,y??_e(\"overload\"),N);return te.typeExpression=I,te}function ay(y,I=lc(y),N,te){return y.tagName!==I||y.typeExpression!==N||y.comment!==te?r(I_(I,N,te),y):y}function Ac(y,I,N){let te=zi(331,y??_e(\"augments\"),N);return te.class=I,te}function wc(y,I=lc(y),N,te){return y.tagName!==I||y.class!==N||y.comment!==te?r(Ac(I,N,te),y):y}function tg(y,I,N){let te=zi(332,y??_e(\"implements\"),N);return te.class=I,te}function Fl(y,I,N){let te=zi(350,y??_e(\"see\"),N);return te.name=I,te}function Kf(y,I,N,te){return y.tagName!==I||y.name!==N||y.comment!==te?r(Fl(I,N,te),y):y}function bm(y){let I=B(313);return I.name=y,I}function nd(y,I){return y.name!==I?r(bm(I),y):y}function TE(y,I){let N=B(314);return N.left=y,N.right=I,N.transformFlags|=tr(N.left)|tr(N.right),N}function Hb(y,I,N){return y.left!==I||y.right!==N?r(TE(I,N),y):y}function Wb(y,I){let N=B(327);return N.name=y,N.text=I,N}function Z_(y,I,N){return y.name!==I?r(Wb(I,N),y):y}function rh(y,I){let N=B(328);return N.name=y,N.text=I,N}function SE(y,I,N){return y.name!==I?r(rh(I,N),y):y}function oy(y,I){let N=B(329);return N.name=y,N.text=I,N}function uc(y,I,N){return y.name!==I?r(oy(I,N),y):y}function ng(y,I=lc(y),N,te){return y.tagName!==I||y.class!==N||y.comment!==te?r(tg(I,N,te),y):y}function ih(y,I,N){return zi(y,I??_e(w4(y)),N)}function Cv(y,I,N=lc(I),te){return I.tagName!==N||I.comment!==te?r(ih(y,N,te),I):I}function Iv(y,I,N,te){let Me=zi(y,I??_e(w4(y)),te);return Me.typeExpression=N,Me}function Gl(y,I,N=lc(I),te,Me){return I.tagName!==N||I.typeExpression!==te||I.comment!==Me?r(Iv(y,N,te,Me),I):I}function ah(y,I){return zi(330,y,I)}function qc(y,I,N){return y.tagName!==I||y.comment!==N?r(ah(I,N),y):y}function xE(y,I,N){let te=rf(343,y??_e(w4(343)),N);return te.typeExpression=I,te.locals=void 0,te.nextContainer=void 0,te}function oh(y,I=lc(y),N,te){return y.tagName!==I||y.typeExpression!==N||y.comment!==te?r(xE(I,N,te),y):y}function zb(y){let I=B(324);return I.text=y,I}function Vu(y,I){return y.text!==I?r(zb(I),y):y}function Em(y,I){let N=B(323);return N.comment=y,N.tags=oo(I),N}function Jb(y,I,N){return y.comment!==I||y.tags!==N?r(Em(I,N),y):y}function Lv(y,I,N){let te=B(281);return te.openingElement=y,te.children=F(I),te.closingElement=N,te.transformFlags|=tr(te.openingElement)|fo(te.children)|tr(te.closingElement)|2,te}function AE(y,I,N,te){return y.openingElement!==I||y.children!==N||y.closingElement!==te?r(Lv(I,N,te),y):y}function sy(y,I,N){let te=B(282);return te.tagName=y,te.typeArguments=oo(I),te.attributes=N,te.transformFlags|=tr(te.tagName)|fo(te.typeArguments)|tr(te.attributes)|2,te.typeArguments&&(te.transformFlags|=1),te}function I1(y,I,N,te){return y.tagName!==I||y.typeArguments!==N||y.attributes!==te?r(sy(I,N,te),y):y}function kv(y,I,N){let te=B(283);return te.tagName=y,te.typeArguments=oo(I),te.attributes=N,te.transformFlags|=tr(te.tagName)|fo(te.typeArguments)|tr(te.attributes)|2,I&&(te.transformFlags|=1),te}function rg(y,I,N,te){return y.tagName!==I||y.typeArguments!==N||y.attributes!==te?r(kv(I,N,te),y):y}function af(y){let I=B(284);return I.tagName=y,I.transformFlags|=tr(I.tagName)|2,I}function CE(y,I){return y.tagName!==I?r(af(I),y):y}function Gd(y,I,N){let te=B(285);return te.openingFragment=y,te.children=F(I),te.closingFragment=N,te.transformFlags|=tr(te.openingFragment)|fo(te.children)|tr(te.closingFragment)|2,te}function sh(y,I,N,te){return y.openingFragment!==I||y.children!==N||y.closingFragment!==te?r(Gd(I,N,te),y):y}function Dv(y,I){let N=B(11);return N.text=y,N.containsOnlyTriviaWhiteSpaces=!!I,N.transformFlags|=2,N}function wx(y,I,N){return y.text!==I||y.containsOnlyTriviaWhiteSpaces!==N?r(Dv(I,N),y):y}function No(){let y=B(286);return y.transformFlags|=2,y}function fr(){let y=B(287);return y.transformFlags|=2,y}function vd(y,I){let N=q(288);return N.name=y,N.initializer=I,N.transformFlags|=tr(N.name)|tr(N.initializer)|2,N}function ju(y,I,N){return y.name!==I||y.initializer!==N?r(vd(I,N),y):y}function L1(y){let I=q(289);return I.properties=F(y),I.transformFlags|=fo(I.properties)|2,I}function IE(y,I){return y.properties!==I?r(L1(I),y):y}function cy(y){let I=B(290);return I.expression=y,I.transformFlags|=tr(I.expression)|2,I}function Rx(y,I){return y.expression!==I?r(cy(I),y):y}function ly(y,I){let N=B(291);return N.dotDotDotToken=y,N.expression=I,N.transformFlags|=tr(N.dotDotDotToken)|tr(N.expression)|2,N}function wp(y,I){return y.expression!==I?r(ly(y.dotDotDotToken,I),y):y}function ep(y,I){let N=B(292);return N.expression=i().parenthesizeExpressionForDisallowedComma(y),N.statements=F(I),N.transformFlags|=tr(N.expression)|fo(N.statements),N.jsDoc=void 0,N}function ig(y,I,N){return y.expression!==I||y.statements!==N?r(ep(I,N),y):y}function wv(y){let I=B(293);return I.statements=F(y),I.transformFlags=fo(I.statements),I}function ch(y,I){return y.statements!==I?r(wv(I),y):y}function Rp(y,I){let N=B(294);switch(N.token=y,N.types=F(I),N.transformFlags|=fo(N.types),y){case 94:N.transformFlags|=1024;break;case 117:N.transformFlags|=1;break;default:return L.assertNever(y)}return N}function k1(y,I){return y.types!==I?r(Rp(y.token,I),y):y}function Cc(y,I){let N=B(295);return N.variableDeclaration=Jk(y),N.block=I,N.transformFlags|=tr(N.variableDeclaration)|tr(N.block)|(y?0:64),N.locals=void 0,N.nextContainer=void 0,N}function Bd(y,I,N){return y.variableDeclaration!==I||y.block!==N?r(Cc(I,N),y):y}function Tm(y,I){let N=q(299);return N.name=Zs(y),N.initializer=i().parenthesizeExpressionForDisallowedComma(I),N.transformFlags|=Gg(N.name)|tr(N.initializer),N.modifiers=void 0,N.questionToken=void 0,N.exclamationToken=void 0,N.jsDoc=void 0,N}function rd(y,I,N){return y.name!==I||y.initializer!==N?LE(Tm(I,N),y):y}function LE(y,I){return y!==I&&(y.modifiers=I.modifiers,y.questionToken=I.questionToken,y.exclamationToken=I.exclamationToken),r(y,I)}function uy(y,I){let N=q(300);return N.name=Zs(y),N.objectAssignmentInitializer=I&&i().parenthesizeExpressionForDisallowedComma(I),N.transformFlags|=_L(N.name)|tr(N.objectAssignmentInitializer)|1024,N.equalsToken=void 0,N.modifiers=void 0,N.questionToken=void 0,N.exclamationToken=void 0,N.jsDoc=void 0,N}function ag(y,I,N){return y.name!==I||y.objectAssignmentInitializer!==N?Ox(uy(I,N),y):y}function Ox(y,I){return y!==I&&(y.modifiers=I.modifiers,y.questionToken=I.questionToken,y.exclamationToken=I.exclamationToken,y.equalsToken=I.equalsToken),r(y,I)}function of(y){let I=q(301);return I.expression=i().parenthesizeExpressionForDisallowedComma(y),I.transformFlags|=tr(I.expression)|128|65536,I.jsDoc=void 0,I}function ls(y,I){return y.expression!==I?r(of(I),y):y}function kE(y,I){let N=q(302);return N.name=Zs(y),N.initializer=I&&i().parenthesizeExpressionForDisallowedComma(I),N.transformFlags|=tr(N.name)|tr(N.initializer)|1,N.jsDoc=void 0,N}function DE(y,I,N){return y.name!==I||y.initializer!==N?r(kE(I,N),y):y}function og(y,I,N){let te=t.createBaseSourceFileNode(308);return te.statements=F(y),te.endOfFileToken=I,te.flags|=N,te.text=\"\",te.fileName=\"\",te.path=\"\",te.resolvedPath=\"\",te.originalFileName=\"\",te.languageVersion=0,te.languageVariant=0,te.scriptKind=0,te.isDeclarationFile=!1,te.hasNoDefaultLib=!1,te.transformFlags|=fo(te.statements)|tr(te.endOfFileToken),te.locals=void 0,te.nextContainer=void 0,te.endFlowNode=void 0,te.nodeCount=0,te.identifierCount=0,te.symbolCount=0,te.parseDiagnostics=void 0,te.bindDiagnostics=void 0,te.bindSuggestionDiagnostics=void 0,te.lineMap=void 0,te.externalModuleIndicator=void 0,te.setExternalModuleIndicator=void 0,te.pragmas=void 0,te.checkJsDirective=void 0,te.referencedFiles=void 0,te.typeReferenceDirectives=void 0,te.libReferenceDirectives=void 0,te.amdDependencies=void 0,te.commentDirectives=void 0,te.identifiers=void 0,te.packageJsonLocations=void 0,te.packageJsonScope=void 0,te.imports=void 0,te.moduleAugmentations=void 0,te.ambientModuleNames=void 0,te.resolvedModules=void 0,te.classifiableNames=void 0,te.impliedNodeFormat=void 0,te}function Rv(y){let I=Object.create(y.redirectTarget);return Object.defineProperties(I,{id:{get(){return this.redirectInfo.redirectTarget.id},set(N){this.redirectInfo.redirectTarget.id=N}},symbol:{get(){return this.redirectInfo.redirectTarget.symbol},set(N){this.redirectInfo.redirectTarget.symbol=N}}}),I.redirectInfo=y,I}function D1(y){let I=Rv(y.redirectInfo);return I.flags|=y.flags&-9,I.fileName=y.fileName,I.path=y.path,I.resolvedPath=y.resolvedPath,I.originalFileName=y.originalFileName,I.packageJsonLocations=y.packageJsonLocations,I.packageJsonScope=y.packageJsonScope,I.emitNode=void 0,I}function wE(y){let I=t.createBaseSourceFileNode(308);I.flags|=y.flags&-9;for(let N in y)if(!(fs(I,N)||!fs(y,N))){if(N===\"emitNode\"){I.emitNode=void 0;continue}I[N]=y[N]}return I}function RE(y){let I=y.redirectInfo?D1(y):wE(y);return Ir(I,y),I}function OE(y,I,N,te,Me,Pt,Tr){let Fi=RE(y);return Fi.statements=F(I),Fi.isDeclarationFile=N,Fi.referencedFiles=te,Fi.typeReferenceDirectives=Me,Fi.hasNoDefaultLib=Pt,Fi.libReferenceDirectives=Tr,Fi.transformFlags=fo(Fi.statements)|tr(Fi.endOfFileToken),Fi}function NE(y,I,N=y.isDeclarationFile,te=y.referencedFiles,Me=y.typeReferenceDirectives,Pt=y.hasNoDefaultLib,Tr=y.libReferenceDirectives){return y.statements!==I||y.isDeclarationFile!==N||y.referencedFiles!==te||y.typeReferenceDirectives!==Me||y.hasNoDefaultLib!==Pt||y.libReferenceDirectives!==Tr?r(OE(y,I,N,te,Me,Pt,Tr),y):y}function PE(y,I=Je){let N=B(309);return N.prepends=I,N.sourceFiles=y,N.syntheticFileReferences=void 0,N.syntheticTypeReferences=void 0,N.syntheticLibReferences=void 0,N.hasNoDefaultLib=void 0,N}function dy(y,I,N=Je){return y.sourceFiles!==I||y.prepends!==N?r(PE(I,N),y):y}function bd(y,I,N){let te=B(310);return te.prologues=y,te.syntheticReferences=I,te.texts=N,te.fileName=\"\",te.text=\"\",te.referencedFiles=Je,te.libReferenceDirectives=Je,te.getLineAndCharacterOfPosition=Me=>Gs(te,Me),te}function lh(y,I){let N=B(y);return N.data=I,N}function fC(y){return lh(303,y)}function sg(y,I){let N=lh(304,y);return N.texts=I,N}function Nx(y,I){return lh(I?306:305,y)}function Px(y){let I=B(307);return I.data=y.data,I.section=y,I}function E(){let y=B(311);return y.javascriptText=\"\",y.declarationText=\"\",y}function ne(y,I=!1,N){let te=B(234);return te.type=y,te.isSpread=I,te.tupleNameSource=N,te}function Ee(y){let I=B(354);return I._children=y,I}function Wt(y){let I=B(355);return I.original=y,it(I,y),I}function lr(y,I){let N=B(356);return N.expression=y,N.original=I,N.transformFlags|=tr(N.expression)|1,it(N,I),N}function ci(y,I){return y.expression!==I?r(lr(I,y.original),y):y}function qr(y){if(ws(y)&&!fI(y)&&!y.original&&!y.emitNode&&!y.id){if(xL(y))return y.elements;if(ar(y)&&Cue(y.operatorToken))return[y.left,y.right]}return y}function Ti(y){let I=B(357);return I.elements=F(lae(y,qr)),I.transformFlags|=fo(I.elements),I}function Wa(y,I){return y.elements!==I?r(Ti(I),y):y}function kl(y){let I=B(359);return I.emitNode={},I.original=y,I}function Ed(y){let I=B(358);return I.emitNode={},I.original=y,I}function Ud(y,I){let N=B(360);return N.expression=y,N.thisArg=I,N.transformFlags|=tr(N.expression)|tr(N.thisArg),N}function fy(y,I,N){return y.expression!==I||y.thisArg!==N?r(Ud(I,N),y):y}function Td(y){let I=re(y.escapedText);return I.flags|=y.flags&-9,I.transformFlags=y.transformFlags,Ir(I,y),aO(I,{...y.emitNode.autoGenerate}),I}function Ov(y){let I=re(y.escapedText);I.flags|=y.flags&-9,I.jsDoc=y.jsDoc,I.flowNode=y.flowNode,I.symbol=y.symbol,I.transformFlags=y.transformFlags,Ir(I,y);let N=PT(y);return N&&Ug(I,N),I}function Nv(y){let I=ke(y.escapedText);return I.flags|=y.flags&-9,I.transformFlags=y.transformFlags,Ir(I,y),aO(I,{...y.emitNode.autoGenerate}),I}function _y(y){let I=ke(y.escapedText);return I.flags|=y.flags&-9,I.transformFlags=y.transformFlags,Ir(I,y),I}function qf(y){if(y===void 0)return y;if(Li(y))return RE(y);if(tc(y))return Td(y);if(Re(y))return Ov(y);if(nS(y))return Nv(y);if(pi(y))return _y(y);let I=Lw(y.kind)?t.createBaseNode(y.kind):t.createBaseTokenNode(y.kind);I.flags|=y.flags&-9,I.transformFlags=y.transformFlags,Ir(I,y);for(let N in y)fs(I,N)||!fs(y,N)||(I[N]=y[N]);return I}function ME(y,I,N){return bn(Ea(void 0,void 0,void 0,void 0,I?[I]:[],void 0,zh(y,!0)),void 0,N?[N]:[])}function sf(y,I,N){return bn(Qo(void 0,void 0,I?[I]:[],void 0,void 0,zh(y,!0)),void 0,N?[N]:[])}function Sm(){return Zl(Y(\"0\"))}function py(y){return Qh(void 0,!1,y)}function Cf(y){return C_(void 0,!1,Lp([Uu(!1,void 0,y)]))}function FE(y,I){return I===\"undefined\"?P.createStrictEquality(y,Sm()):P.createStrictEquality(Dc(y),Q(I))}function Pv(y,I,N){return fT(y)?io($o(y,void 0,I),void 0,void 0,N):bn(Uc(y,I),void 0,N)}function Vc(y,I,N){return Pv(y,\"bind\",[I,...N])}function qP(y,I,N){return Pv(y,\"call\",[I,...N])}function Zo(y,I,N){return Pv(y,\"apply\",[I,N])}function Ro(y,I,N){return Pv(_e(y),I,N)}function Mx(y,I){return Pv(y,\"slice\",I===void 0?[]:[Fv(I)])}function Fx(y,I){return Pv(y,\"concat\",I)}function V(y,I,N){return Ro(\"Object\",\"defineProperty\",[y,Fv(I),N])}function me(y,I){return Ro(\"Object\",\"getOwnPropertyDescriptor\",[y,Fv(I)])}function Ue(y,I,N){return Ro(\"Reflect\",\"get\",N?[y,I,N]:[y,I])}function ut(y,I,N,te){return Ro(\"Reflect\",\"set\",te?[y,I,N,te]:[y,I,N])}function Lt(y,I,N){return N?(y.push(Tm(I,N)),!0):!1}function dn(y,I){let N=[];Lt(N,\"enumerable\",Fv(y.enumerable)),Lt(N,\"configurable\",Fv(y.configurable));let te=Lt(N,\"writable\",Fv(y.writable));te=Lt(N,\"value\",y.value)||te;let Me=Lt(N,\"get\",y.get);return Me=Lt(N,\"set\",y.set)||Me,L.assert(!(te&&Me),\"A PropertyDescriptor may not be both an accessor descriptor and a data descriptor.\"),vo(N,!I)}function Er(y,I){switch(y.kind){case 214:return gi(y,I);case 213:return mr(y,y.type,I);case 231:return mv(y,I,y.type);case 235:return Wh(y,I,y.type);case 232:return p1(y,I);case 356:return ci(y,I)}}function ii(y){return ud(y)&&ws(y)&&ws(pb(y))&&ws(sm(y))&&!vt(u2(y))&&!vt(iO(y))}function li(y,I,N=15){return y&&S3(y,N)&&!ii(y)?Er(y,li(y.expression,I)):I}function di(y,I,N){if(!I)return y;let te=g1(I,I.label,J0(I.statement)?di(y,I.statement):y);return N&&N(I),te}function ma(y,I){let N=vs(y);switch(N.kind){case 79:return I;case 108:case 8:case 9:case 10:return!1;case 206:return N.elements.length!==0;case 207:return N.properties.length>0;default:return!0}}function is(y,I,N,te=!1){let Me=ql(y,15),Pt,Tr;return Pu(Me)?(Pt=_t(),Tr=Me):gL(Me)?(Pt=_t(),Tr=N!==void 0&&N<2?it(_e(\"_super\"),Me):Me):Ya(Me)&8192?(Pt=Sm(),Tr=i().parenthesizeLeftSideOfAccess(Me,!1)):br(Me)?ma(Me.expression,te)?(Pt=ge(I),Tr=Uc(it(P.createAssignment(Pt,Me.expression),Me.expression),Me.name),it(Tr,Me)):(Pt=Me.expression,Tr=Me):Vs(Me)?ma(Me.expression,te)?(Pt=ge(I),Tr=hd(it(P.createAssignment(Pt,Me.expression),Me.expression),Me.argumentExpression),it(Tr,Me)):(Pt=Me.expression,Tr=Me):(Pt=Sm(),Tr=i().parenthesizeLeftSideOfAccess(y,!1)),{target:Tr,thisArg:Pt}}function ao(y,I){return Uc(Vr(vo([$(void 0,\"value\",[ui(void 0,void 0,y,void 0,void 0,void 0)],zh([yv(I)]))])),\"value\")}function Oo(y){return y.length>10?Ti(y):ou(y,P.createComma)}function id(y,I,N,te=0){let Me=sa(y);if(Me&&Re(Me)&&!tc(Me)){let Pt=go(it(qf(Me),Me),Me.parent);return te|=Ya(Me),N||(te|=96),I||(te|=3072),te&&Jn(Pt,te),Pt}return we(y)}function tp(y,I,N){return id(y,I,N,98304)}function Op(y,I,N){return id(y,I,N,32768)}function cg(y,I,N){return id(y,I,N,16384)}function Xf(y,I,N){return id(y,I,N)}function my(y,I,N,te){let Me=Uc(y,ws(I)?I:qf(I));it(Me,I);let Pt=0;return te||(Pt|=96),N||(Pt|=3072),Pt&&Jn(Me,Pt),Me}function Gx(y,I,N,te){return y&&Mr(I,1)?my(y,id(I),N,te):cg(I,N,te)}function GE(y,I,N,te){let Me=Mv(y,I,0,N);return pC(y,I,Me,te)}function _C(y){return yo(y.expression)&&y.expression.text===\"use strict\"}function L_(){return mu(yv(Q(\"use strict\")))}function Mv(y,I,N=0,te){L.assert(I.length===0,\"Prologue directives should be at the first statement in the target statements array\");let Me=!1,Pt=y.length;for(;N<Pt;){let Tr=y[N];if(G_(Tr))_C(Tr)&&(Me=!0),I.push(Tr);else break;N++}return te&&!Me&&I.push(L_()),N}function pC(y,I,N,te,Me=h0){let Pt=y.length;for(;N!==void 0&&N<Pt;){let Tr=y[N];if(Ya(Tr)&2097152&&Me(Tr))Sn(I,te?$e(Tr,te,ca):Tr);else break;N++}return N}function cf(y){return tJ(y)?y:it(F([L_(),...y]),y)}function Bx(y){return L.assert(Ji(y,Ese),\"Cannot lift nodes to a Block.\"),Wp(y)||zh(y)}function hy(y,I,N){let te=N;for(;te<y.length&&I(y[te]);)te++;return te}function Hk(y,I){if(!vt(I))return y;let N=hy(y,G_,0),te=hy(y,C6,N),Me=hy(y,I6,te),Pt=hy(I,G_,0),Tr=hy(I,C6,Pt),Fi=hy(I,I6,Tr),Da=hy(I,A6,Fi);L.assert(Da===I.length,\"Expected declarations to be valid standard or custom prologues\");let Vd=C0(y)?y.slice():y;if(Da>Fi&&Vd.splice(Me,0,...I.slice(Fi,Da)),Fi>Tr&&Vd.splice(te,0,...I.slice(Tr,Fi)),Tr>Pt&&Vd.splice(N,0,...I.slice(Pt,Tr)),Pt>0)if(N===0)Vd.splice(0,0,...I.slice(0,Pt));else{let lg=new Map;for(let ug=0;ug<N;ug++){let dg=y[ug];lg.set(dg.expression.text,!0)}for(let ug=Pt-1;ug>=0;ug--){let dg=I[ug];lg.has(dg.expression.text)||Vd.unshift(dg)}}return C0(y)?it(F(Vd,y.hasTrailingComma),y):y}function Wk(y,I){var N;let te;return typeof I==\"number\"?te=zt(I):te=I,_c(y)?$n(y,te,y.name,y.constraint,y.default):ha(y)?Ni(y,te,y.dotDotDotToken,y.name,y.questionToken,y.type,y.initializer):vL(y)?Hn(y,te,y.typeParameters,y.parameters,y.type):Yd(y)?nn(y,te,y.name,y.questionToken,y.type):Na(y)?An(y,te,y.name,(N=y.questionToken)!=null?N:y.exclamationToken,y.type,y.initializer):zm(y)?hi(y,te,y.name,y.questionToken,y.typeParameters,y.parameters,y.type):Nc(y)?gn(y,te,y.asteriskToken,y.name,y.questionToken,y.typeParameters,y.parameters,y.type,y.body):Ec(y)?at(y,te,y.parameters,y.body):__(y)?nt(y,te,y.name,y.parameters,y.type,y.body):Tf(y)?ue(y,te,y.name,y.parameters,y.body):DS(y)?ln(y,te,y.parameters,y.type):ms(y)?bo(y,te,y.asteriskToken,y.name,y.typeParameters,y.parameters,y.type,y.body):xs(y)?Cs(y,te,y.typeParameters,y.parameters,y.type,y.equalsGreaterThanToken,y.body):_u(y)?Mc(y,te,y.name,y.typeParameters,y.heritageClauses,y.members):Bc(y)?dE(y,te,y.declarationList):Jc(y)?Sv(y,te,y.asteriskToken,y.name,y.typeParameters,y.parameters,y.type,y.body):sl(y)?wo(y,te,y.name,y.typeParameters,y.heritageClauses,y.members):ku(y)?gE(y,te,y.name,y.typeParameters,y.heritageClauses,y.members):Ep(y)?th(y,te,y.name,y.typeParameters,y.type):hb(y)?A_(y,te,y.name,y.members):Tc(y)?Ml(y,te,y.name,y.body):Nl(y)?yE(y,te,y.isTypeOnly,y.name,y.moduleReference):gl(y)?nh(y,te,y.importClause,y.moduleSpecifier,y.assertClause):pc(y)?$_(y,te,y.expression):Il(y)?Cx(y,te,y.isTypeOnly,y.exportClause,y.moduleSpecifier,y.assertClause):L.assertNever(y)}function oo(y){return y?F(y):void 0}function Zs(y){return typeof y==\"string\"?_e(y):y}function Fv(y){return typeof y==\"string\"?Q(y):typeof y==\"number\"?Y(y):typeof y==\"boolean\"?y?Rt():We():y}function gy(y){return y&&i().parenthesizeExpressionForDisallowedComma(y)}function zk(y){return typeof y==\"number\"?Le(y):y}function ad(y){return y&&Gz(y)?it(Ir(fE(),y),y):y}function Jk(y){return typeof y==\"string\"||y&&!wi(y)?Fe(y,void 0,void 0,void 0):y}}function CRe(e,t){return e!==t&&it(e,t),e}function IRe(e,t){return e!==t&&(Ir(e,t),it(e,t)),e}function w4(e){switch(e){case 347:return\"type\";case 345:return\"returns\";case 346:return\"this\";case 343:return\"enum\";case 333:return\"author\";case 335:return\"class\";case 336:return\"public\";case 337:return\"private\";case 338:return\"protected\";case 339:return\"readonly\";case 340:return\"override\";case 348:return\"template\";case 349:return\"typedef\";case 344:return\"param\";case 351:return\"prop\";case 341:return\"callback\";case 342:return\"overload\";case 331:return\"augments\";case 332:return\"implements\";default:return L.fail(`Unsupported kind: ${L.formatSyntaxKind(e)}`)}}function LRe(e,t){switch(Ph||(Ph=kg(99,!1,0)),e){case 14:Ph.setText(\"`\"+t+\"`\");break;case 15:Ph.setText(\"`\"+t+\"${\");break;case 16:Ph.setText(\"}\"+t+\"${\");break;case 17:Ph.setText(\"}\"+t+\"`\");break}let r=Ph.scan();if(r===19&&(r=Ph.reScanTemplateToken(!1)),Ph.isUnterminated())return Ph.setText(void 0),gz;let i;switch(r){case 14:case 15:case 16:case 17:i=Ph.getTokenValue();break}return i===void 0||Ph.scan()!==1?(Ph.setText(void 0),gz):(Ph.setText(void 0),i)}function Gg(e){return e&&Re(e)?_L(e):tr(e)}function _L(e){return tr(e)&-67108865}function kRe(e,t){return t|e.transformFlags&134234112}function tr(e){if(!e)return 0;let t=e.transformFlags&~uue(e.kind);return zl(e)&&Ys(e.name)?kRe(e.name,t):t}function fo(e){return e?e.transformFlags:0}function lue(e){let t=0;for(let r of e)t|=tr(r);e.transformFlags=t}function uue(e){if(e>=179&&e<=202)return-2;switch(e){case 210:case 211:case 206:return-2147450880;case 264:return-1941676032;case 166:return-2147483648;case 216:return-2072174592;case 215:case 259:return-1937940480;case 258:return-2146893824;case 260:case 228:return-2147344384;case 173:return-1937948672;case 169:return-2013249536;case 171:case 174:case 175:return-2005057536;case 131:case 148:case 160:case 144:case 152:case 149:case 134:case 153:case 114:case 165:case 168:case 170:case 176:case 177:case 178:case 261:case 262:return-2;case 207:return-2147278848;case 295:return-2147418112;case 203:case 204:return-2147450880;case 213:case 235:case 231:case 356:case 214:case 106:return-2147483648;case 208:case 209:return-2147483648;default:return-2147483648}}function QR(e){return e.flags|=8,e}function fz(e,t,r){let i,o,s,l,f,d,g,m,v,S;Ta(e)?(s=\"\",l=e,f=e.length,d=t,g=r):(L.assert(t===\"js\"||t===\"dts\"),s=(t===\"js\"?e.javascriptPath:e.declarationPath)||\"\",d=t===\"js\"?e.javascriptMapPath:e.declarationMapPath,m=()=>t===\"js\"?e.javascriptText:e.declarationText,v=()=>t===\"js\"?e.javascriptMapText:e.declarationMapText,f=()=>m().length,e.buildInfo&&e.buildInfo.bundle&&(L.assert(r===void 0||typeof r==\"boolean\"),i=r,o=t===\"js\"?e.buildInfo.bundle.js:e.buildInfo.bundle.dts,S=e.oldFileOfCurrentEmit));let x=S?wRe(L.checkDefined(o)):DRe(o,i,f);return x.fileName=s,x.sourceMapPath=d,x.oldFileOfCurrentEmit=S,m&&v?(Object.defineProperty(x,\"text\",{get:m}),Object.defineProperty(x,\"sourceMapText\",{get:v})):(L.assert(!S),x.text=l??\"\",x.sourceMapText=g),x}function DRe(e,t,r){let i,o,s,l,f,d,g,m;for(let S of e?e.sections:Je)switch(S.kind){case\"prologue\":i=Sn(i,it(D.createUnparsedPrologue(S.data),S));break;case\"emitHelpers\":o=Sn(o,xz().get(S.data));break;case\"no-default-lib\":m=!0;break;case\"reference\":s=Sn(s,{pos:-1,end:-1,fileName:S.data});break;case\"type\":l=Sn(l,{pos:-1,end:-1,fileName:S.data});break;case\"type-import\":l=Sn(l,{pos:-1,end:-1,fileName:S.data,resolutionMode:99});break;case\"type-require\":l=Sn(l,{pos:-1,end:-1,fileName:S.data,resolutionMode:1});break;case\"lib\":f=Sn(f,{pos:-1,end:-1,fileName:S.data});break;case\"prepend\":let x;for(let A of S.texts)(!t||A.kind!==\"internal\")&&(x=Sn(x,it(D.createUnparsedTextLike(A.data,A.kind===\"internal\"),A)));d=si(d,x),g=Sn(g,D.createUnparsedPrepend(S.data,x??Je));break;case\"internal\":if(t){g||(g=[]);break}case\"text\":g=Sn(g,it(D.createUnparsedTextLike(S.data,S.kind===\"internal\"),S));break;default:L.assertNever(S)}if(!g){let S=D.createUnparsedTextLike(void 0,!1);sL(S,0,typeof r==\"function\"?r():r),g=[S]}let v=fm.createUnparsedSource(i??Je,void 0,g);return a2(i,v),a2(g,v),a2(d,v),v.hasNoDefaultLib=m,v.helpers=o,v.referencedFiles=s||Je,v.typeReferenceDirectives=l,v.libReferenceDirectives=f||Je,v}function wRe(e){let t,r;for(let o of e.sections)switch(o.kind){case\"internal\":case\"text\":t=Sn(t,it(D.createUnparsedTextLike(o.data,o.kind===\"internal\"),o));break;case\"no-default-lib\":case\"reference\":case\"type\":case\"type-import\":case\"type-require\":case\"lib\":r=Sn(r,it(D.createUnparsedSyntheticReference(o),o));break;case\"prologue\":case\"emitHelpers\":case\"prepend\":break;default:L.assertNever(o)}let i=D.createUnparsedSource(Je,r,t??Je);return a2(r,i),a2(t,i),i.helpers=on(e.sources&&e.sources.helpers,o=>xz().get(o)),i}function RRe(e,t,r,i,o,s){return Ta(e)?pz(void 0,e,r,i,void 0,t,o,s):_z(e,t,r,i,o,s)}function _z(e,t,r,i,o,s,l,f){let d=fm.createInputFiles();d.javascriptPath=t,d.javascriptMapPath=r,d.declarationPath=i,d.declarationMapPath=o,d.buildInfoPath=s;let g=new Map,m=A=>{if(A===void 0)return;let w=g.get(A);return w===void 0&&(w=e(A),g.set(A,w!==void 0?w:!1)),w!==!1?w:void 0},v=A=>{let w=m(A);return w!==void 0?w:`/* Input file ${A} was missing */\\r\n`},S;return Object.defineProperties(d,{javascriptText:{get:()=>v(t)},javascriptMapText:{get:()=>m(r)},declarationText:{get:()=>v(L.checkDefined(i))},declarationMapText:{get:()=>m(o)},buildInfo:{get:()=>{var A,w;if(S===void 0&&s)if(l?.getBuildInfo)S=(A=l.getBuildInfo(s,f.configFilePath))!=null?A:!1;else{let C=m(s);S=C!==void 0&&(w=IF(s,C))!=null?w:!1}return S||void 0}}}),d}function pz(e,t,r,i,o,s,l,f,d,g,m){let v=fm.createInputFiles();return v.javascriptPath=e,v.javascriptText=t,v.javascriptMapPath=r,v.javascriptMapText=i,v.declarationPath=o,v.declarationText=s,v.declarationMapPath=l,v.declarationMapText=f,v.buildInfoPath=d,v.buildInfo=g,v.oldFileOfCurrentEmit=m,v}function ORe(e,t,r){return new(fue||(fue=ml.getSourceMapSourceConstructor()))(e,t,r)}function Ir(e,t){if(e.original=t,t){let r=t.emitNode;r&&(e.emitNode=NRe(r,e.emitNode))}return e}function NRe(e,t){let{flags:r,internalFlags:i,leadingComments:o,trailingComments:s,commentRange:l,sourceMapRange:f,tokenSourceMapRanges:d,constantValue:g,helpers:m,startsOnNewLine:v,snippetElement:S}=e;if(t||(t={}),o&&(t.leadingComments=si(o.slice(),t.leadingComments)),s&&(t.trailingComments=si(s.slice(),t.trailingComments)),r&&(t.flags=r),i&&(t.internalFlags=i&-9),l&&(t.commentRange=l),f&&(t.sourceMapRange=f),d&&(t.tokenSourceMapRanges=PRe(d,t.tokenSourceMapRanges)),g!==void 0&&(t.constantValue=g),m)for(let x of m)t.helpers=xg(t.helpers,x);return v!==void 0&&(t.startsOnNewLine=v),S!==void 0&&(t.snippetElement=S),t}function PRe(e,t){t||(t=[]);for(let r in e)t[r]=e[r];return t}var ZR,mz,hz,Ph,gz,pL,due,D,fue,MRe=gt({\"src/compiler/factory/nodeFactory.ts\"(){\"use strict\";fa(),ZR=0,mz=(e=>(e[e.None=0]=\"None\",e[e.NoParenthesizerRules=1]=\"NoParenthesizerRules\",e[e.NoNodeConverters=2]=\"NoNodeConverters\",e[e.NoIndentationOnFreshPropertyAccess=4]=\"NoIndentationOnFreshPropertyAccess\",e[e.NoOriginalNode=8]=\"NoOriginalNode\",e))(mz||{}),hz=[],gz={},pL=oue(),due={createBaseSourceFileNode:e=>QR(pL.createBaseSourceFileNode(e)),createBaseIdentifierNode:e=>QR(pL.createBaseIdentifierNode(e)),createBasePrivateIdentifierNode:e=>QR(pL.createBasePrivateIdentifierNode(e)),createBaseTokenNode:e=>QR(pL.createBaseTokenNode(e)),createBaseNode:e=>QR(pL.createBaseNode(e))},D=$R(4,due)}});function Lu(e){var t;if(e.emitNode)L.assert(!(e.emitNode.internalFlags&8),\"Invalid attempt to mutate an immutable node.\");else{if(fI(e)){if(e.kind===308)return e.emitNode={annotatedNodes:[e]};let r=(t=Gn(ea(Gn(e))))!=null?t:L.fail(\"Could not determine parsed source file.\");Lu(r).annotatedNodes.push(e)}e.emitNode={}}return e.emitNode}function yz(e){var t,r;let i=(r=(t=Gn(ea(e)))==null?void 0:t.emitNode)==null?void 0:r.annotatedNodes;if(i)for(let o of i)o.emitNode=void 0}function eO(e){let t=Lu(e);return t.flags|=3072,t.leadingComments=void 0,t.trailingComments=void 0,e}function Jn(e,t){return Lu(e).flags=t,e}function bp(e,t){let r=Lu(e);return r.flags=r.flags|t,e}function tO(e,t){return Lu(e).internalFlags=t,e}function xS(e,t){let r=Lu(e);return r.internalFlags=r.internalFlags|t,e}function pb(e){var t,r;return(r=(t=e.emitNode)==null?void 0:t.sourceMapRange)!=null?r:e}function Ho(e,t){return Lu(e).sourceMapRange=t,e}function FRe(e,t){var r,i;return(i=(r=e.emitNode)==null?void 0:r.tokenSourceMapRanges)==null?void 0:i[t]}function _ue(e,t,r){var i;let o=Lu(e),s=(i=o.tokenSourceMapRanges)!=null?i:o.tokenSourceMapRanges=[];return s[t]=r,e}function nO(e){var t;return(t=e.emitNode)==null?void 0:t.startsOnNewLine}function vz(e,t){return Lu(e).startsOnNewLine=t,e}function sm(e){var t,r;return(r=(t=e.emitNode)==null?void 0:t.commentRange)!=null?r:e}function hl(e,t){return Lu(e).commentRange=t,e}function u2(e){var t;return(t=e.emitNode)==null?void 0:t.leadingComments}function W0(e,t){return Lu(e).leadingComments=t,e}function rO(e,t,r,i){return W0(e,Sn(u2(e),{kind:t,pos:-1,end:-1,hasTrailingNewLine:i,text:r}))}function iO(e){var t;return(t=e.emitNode)==null?void 0:t.trailingComments}function d2(e,t){return Lu(e).trailingComments=t,e}function R4(e,t,r,i){return d2(e,Sn(iO(e),{kind:t,pos:-1,end:-1,hasTrailingNewLine:i,text:r}))}function pue(e,t){W0(e,u2(t)),d2(e,iO(t));let r=Lu(t);return r.leadingComments=void 0,r.trailingComments=void 0,e}function mue(e){var t;return(t=e.emitNode)==null?void 0:t.constantValue}function hue(e,t){let r=Lu(e);return r.constantValue=t,e}function AS(e,t){let r=Lu(e);return r.helpers=Sn(r.helpers,t),e}function Bg(e,t){if(vt(t)){let r=Lu(e);for(let i of t)r.helpers=xg(r.helpers,i)}return e}function GRe(e,t){var r;let i=(r=e.emitNode)==null?void 0:r.helpers;return i?m8(i,t):!1}function O4(e){var t;return(t=e.emitNode)==null?void 0:t.helpers}function gue(e,t,r){let i=e.emitNode,o=i&&i.helpers;if(!vt(o))return;let s=Lu(t),l=0;for(let f=0;f<o.length;f++){let d=o[f];r(d)?(l++,s.helpers=xg(s.helpers,d)):l>0&&(o[f-l]=d)}l>0&&(o.length-=l)}function bz(e){var t;return(t=e.emitNode)==null?void 0:t.snippetElement}function Ez(e,t){let r=Lu(e);return r.snippetElement=t,e}function Tz(e){return Lu(e).internalFlags|=4,e}function yue(e,t){let r=Lu(e);return r.typeNode=t,e}function vue(e){var t;return(t=e.emitNode)==null?void 0:t.typeNode}function Ug(e,t){return Lu(e).identifierTypeArguments=t,e}function PT(e){var t;return(t=e.emitNode)==null?void 0:t.identifierTypeArguments}function aO(e,t){return Lu(e).autoGenerate=t,e}function BRe(e){var t;return(t=e.emitNode)==null?void 0:t.autoGenerate}function bue(e,t){return Lu(e).generatedImportReference=t,e}function Eue(e){var t;return(t=e.emitNode)==null?void 0:t.generatedImportReference}var URe=gt({\"src/compiler/factory/emitNode.ts\"(){\"use strict\";fa()}});function Tue(e){let t=e.factory,r=zu(()=>tO(t.createTrue(),8)),i=zu(()=>tO(t.createFalse(),8));return{getUnscopedHelperName:o,createDecorateHelper:s,createMetadataHelper:l,createParamHelper:f,createESDecorateHelper:w,createRunInitializersHelper:C,createAssignHelper:P,createAwaitHelper:F,createAsyncGeneratorHelper:B,createAsyncDelegatorHelper:q,createAsyncValuesHelper:W,createRestHelper:Y,createAwaiterHelper:R,createExtendsHelper:ie,createTemplateObjectHelper:Q,createSpreadArrayHelper:fe,createPropKeyHelper:Z,createSetFunctionNameHelper:U,createValuesHelper:re,createReadHelper:le,createGeneratorHelper:_e,createCreateBindingHelper:ge,createImportStarHelper:X,createImportStarCallbackHelper:Ve,createImportDefaultHelper:we,createExportStarHelper:ke,createClassPrivateFieldGetHelper:Pe,createClassPrivateFieldSetHelper:Ce,createClassPrivateFieldInHelper:Ie};function o(Be){return Jn(t.createIdentifier(Be),8196)}function s(Be,Ne,Le,Ye){e.requestEmitHelper(N4);let _t=[];return _t.push(t.createArrayLiteralExpression(Be,!0)),_t.push(Ne),Le&&(_t.push(Le),Ye&&_t.push(Ye)),t.createCallExpression(o(\"__decorate\"),void 0,_t)}function l(Be,Ne){return e.requestEmitHelper(P4),t.createCallExpression(o(\"__metadata\"),void 0,[t.createStringLiteral(Be),Ne])}function f(Be,Ne,Le){return e.requestEmitHelper(M4),it(t.createCallExpression(o(\"__param\"),void 0,[t.createNumericLiteral(Ne+\"\"),Be]),Le)}function d(Be){return t.createObjectLiteralExpression([t.createPropertyAssignment(t.createIdentifier(\"kind\"),t.createStringLiteral(\"class\")),t.createPropertyAssignment(t.createIdentifier(\"name\"),Be.name)])}function g(Be){let Ne=Be.computed?t.createElementAccessExpression(t.createIdentifier(\"obj\"),Be.name):t.createPropertyAccessExpression(t.createIdentifier(\"obj\"),Be.name);return t.createPropertyAssignment(\"get\",t.createArrowFunction(void 0,void 0,[t.createParameterDeclaration(void 0,void 0,t.createIdentifier(\"obj\"))],void 0,void 0,Ne))}function m(Be){let Ne=Be.computed?t.createElementAccessExpression(t.createIdentifier(\"obj\"),Be.name):t.createPropertyAccessExpression(t.createIdentifier(\"obj\"),Be.name);return t.createPropertyAssignment(\"set\",t.createArrowFunction(void 0,void 0,[t.createParameterDeclaration(void 0,void 0,t.createIdentifier(\"obj\")),t.createParameterDeclaration(void 0,void 0,t.createIdentifier(\"value\"))],void 0,void 0,t.createBlock([t.createExpressionStatement(t.createAssignment(Ne,t.createIdentifier(\"value\")))])))}function v(Be){let Ne=Be.computed?Be.name:Re(Be.name)?t.createStringLiteralFromNode(Be.name):Be.name;return t.createPropertyAssignment(\"has\",t.createArrowFunction(void 0,void 0,[t.createParameterDeclaration(void 0,void 0,t.createIdentifier(\"obj\"))],void 0,void 0,t.createBinaryExpression(Ne,101,t.createIdentifier(\"obj\"))))}function S(Be,Ne){let Le=[];return Le.push(v(Be)),Ne.get&&Le.push(g(Be)),Ne.set&&Le.push(m(Be)),t.createObjectLiteralExpression(Le)}function x(Be){return t.createObjectLiteralExpression([t.createPropertyAssignment(t.createIdentifier(\"kind\"),t.createStringLiteral(Be.kind)),t.createPropertyAssignment(t.createIdentifier(\"name\"),Be.name.computed?Be.name.name:t.createStringLiteralFromNode(Be.name.name)),t.createPropertyAssignment(t.createIdentifier(\"static\"),Be.static?t.createTrue():t.createFalse()),t.createPropertyAssignment(t.createIdentifier(\"private\"),Be.private?t.createTrue():t.createFalse()),t.createPropertyAssignment(t.createIdentifier(\"access\"),S(Be.name,Be.access))])}function A(Be){return Be.kind===\"class\"?d(Be):x(Be)}function w(Be,Ne,Le,Ye,_t,ct){return e.requestEmitHelper(F4),t.createCallExpression(o(\"__esDecorate\"),void 0,[Be??t.createNull(),Ne??t.createNull(),Le,A(Ye),_t,ct])}function C(Be,Ne,Le){return e.requestEmitHelper(G4),t.createCallExpression(o(\"__runInitializers\"),void 0,Le?[Be,Ne,Le]:[Be,Ne])}function P(Be){return Do(e.getCompilerOptions())>=2?t.createCallExpression(t.createPropertyAccessExpression(t.createIdentifier(\"Object\"),\"assign\"),void 0,Be):(e.requestEmitHelper(B4),t.createCallExpression(o(\"__assign\"),void 0,Be))}function F(Be){return e.requestEmitHelper(CS),t.createCallExpression(o(\"__await\"),void 0,[Be])}function B(Be,Ne){return e.requestEmitHelper(CS),e.requestEmitHelper(U4),(Be.emitNode||(Be.emitNode={})).flags|=1572864,t.createCallExpression(o(\"__asyncGenerator\"),void 0,[Ne?t.createThis():t.createVoidZero(),t.createIdentifier(\"arguments\"),Be])}function q(Be){return e.requestEmitHelper(CS),e.requestEmitHelper(V4),t.createCallExpression(o(\"__asyncDelegator\"),void 0,[Be])}function W(Be){return e.requestEmitHelper(j4),t.createCallExpression(o(\"__asyncValues\"),void 0,[Be])}function Y(Be,Ne,Le,Ye){e.requestEmitHelper(H4);let _t=[],ct=0;for(let Rt=0;Rt<Ne.length-1;Rt++){let We=rJ(Ne[Rt]);if(We)if(ts(We)){L.assertIsDefined(Le,\"Encountered computed property name but 'computedTempVariables' argument was not provided.\");let qe=Le[ct];ct++,_t.push(t.createConditionalExpression(t.createTypeCheck(qe,\"symbol\"),void 0,qe,void 0,t.createAdd(qe,t.createStringLiteral(\"\"))))}else _t.push(t.createStringLiteralFromNode(We))}return t.createCallExpression(o(\"__rest\"),void 0,[Be,it(t.createArrayLiteralExpression(_t),Ye)])}function R(Be,Ne,Le,Ye){e.requestEmitHelper(W4);let _t=t.createFunctionExpression(void 0,t.createToken(41),void 0,void 0,[],void 0,Ye);return(_t.emitNode||(_t.emitNode={})).flags|=1572864,t.createCallExpression(o(\"__awaiter\"),void 0,[Be?t.createThis():t.createVoidZero(),Ne?t.createIdentifier(\"arguments\"):t.createVoidZero(),Le?TO(t,Le):t.createVoidZero(),_t])}function ie(Be){return e.requestEmitHelper(z4),t.createCallExpression(o(\"__extends\"),void 0,[Be,t.createUniqueName(\"_super\",48)])}function Q(Be,Ne){return e.requestEmitHelper(J4),t.createCallExpression(o(\"__makeTemplateObject\"),void 0,[Be,Ne])}function fe(Be,Ne,Le){return e.requestEmitHelper(q4),t.createCallExpression(o(\"__spreadArray\"),void 0,[Be,Ne,Le?r():i()])}function Z(Be){return e.requestEmitHelper(X4),t.createCallExpression(o(\"__propKey\"),void 0,[Be])}function U(Be,Ne,Le){return e.requestEmitHelper(Y4),e.factory.createCallExpression(o(\"__setFunctionName\"),void 0,Le?[Be,Ne,e.factory.createStringLiteral(Le)]:[Be,Ne])}function re(Be){return e.requestEmitHelper($4),t.createCallExpression(o(\"__values\"),void 0,[Be])}function le(Be,Ne){return e.requestEmitHelper(K4),t.createCallExpression(o(\"__read\"),void 0,Ne!==void 0?[Be,t.createNumericLiteral(Ne+\"\")]:[Be])}function _e(Be){return e.requestEmitHelper(Q4),t.createCallExpression(o(\"__generator\"),void 0,[t.createThis(),Be])}function ge(Be,Ne,Le){return e.requestEmitHelper(f2),t.createCallExpression(o(\"__createBinding\"),void 0,[t.createIdentifier(\"exports\"),Be,Ne,...Le?[Le]:[]])}function X(Be){return e.requestEmitHelper(oO),t.createCallExpression(o(\"__importStar\"),void 0,[Be])}function Ve(){return e.requestEmitHelper(oO),o(\"__importStar\")}function we(Be){return e.requestEmitHelper(e3),t.createCallExpression(o(\"__importDefault\"),void 0,[Be])}function ke(Be,Ne=t.createIdentifier(\"exports\")){return e.requestEmitHelper(t3),e.requestEmitHelper(f2),t.createCallExpression(o(\"__exportStar\"),void 0,[Be,Ne])}function Pe(Be,Ne,Le,Ye){e.requestEmitHelper(n3);let _t;return Ye?_t=[Be,Ne,t.createStringLiteral(Le),Ye]:_t=[Be,Ne,t.createStringLiteral(Le)],t.createCallExpression(o(\"__classPrivateFieldGet\"),void 0,_t)}function Ce(Be,Ne,Le,Ye,_t){e.requestEmitHelper(r3);let ct;return _t?ct=[Be,Ne,Le,t.createStringLiteral(Ye),_t]:ct=[Be,Ne,Le,t.createStringLiteral(Ye)],t.createCallExpression(o(\"__classPrivateFieldSet\"),void 0,ct)}function Ie(Be,Ne){return e.requestEmitHelper(i3),t.createCallExpression(o(\"__classPrivateFieldIn\"),void 0,[Be,Ne])}}function Sue(e,t){return e===t||e.priority===t.priority?0:e.priority===void 0?1:t.priority===void 0?-1:Es(e.priority,t.priority)}function Sz(e,...t){return r=>{let i=\"\";for(let o=0;o<t.length;o++)i+=e[o],i+=r(t[o]);return i+=e[e.length-1],i}}function xz(){return xue||(xue=p0([N4,P4,M4,F4,G4,B4,CS,U4,V4,j4,H4,W4,z4,J4,q4,$4,K4,X4,Y4,Q4,oO,e3,t3,n3,r3,i3,f2,Z4],e=>e.name))}function mL(e,t){return Pa(e)&&Re(e.expression)&&(Ya(e.expression)&8192)!==0&&e.expression.escapedText===t}var Az,N4,P4,M4,F4,G4,B4,CS,U4,V4,j4,H4,W4,z4,J4,K4,q4,X4,Y4,$4,Q4,f2,Z4,oO,e3,t3,n3,r3,i3,xue,sO,cO,VRe=gt({\"src/compiler/factory/emitHelpers.ts\"(){\"use strict\";fa(),Az=(e=>(e.Field=\"f\",e.Method=\"m\",e.Accessor=\"a\",e))(Az||{}),N4={name:\"typescript:decorate\",importName:\"__decorate\",scoped:!1,priority:2,text:`\n            var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n                var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n                if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n                else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n                return c > 3 && r && Object.defineProperty(target, key, r), r;\n            };`},P4={name:\"typescript:metadata\",importName:\"__metadata\",scoped:!1,priority:3,text:`\n            var __metadata = (this && this.__metadata) || function (k, v) {\n                if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n            };`},M4={name:\"typescript:param\",importName:\"__param\",scoped:!1,priority:4,text:`\n            var __param = (this && this.__param) || function (paramIndex, decorator) {\n                return function (target, key) { decorator(target, key, paramIndex); }\n            };`},F4={name:\"typescript:esDecorate\",importName:\"__esDecorate\",scoped:!1,priority:2,text:`\n        var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n            function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n            var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n            var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n            var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n            var _, done = false;\n            for (var i = decorators.length - 1; i >= 0; i--) {\n                var context = {};\n                for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n                for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n                context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n                var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n                if (kind === \"accessor\") {\n                    if (result === void 0) continue;\n                    if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n                    if (_ = accept(result.get)) descriptor.get = _;\n                    if (_ = accept(result.set)) descriptor.set = _;\n                    if (_ = accept(result.init)) initializers.push(_);\n                }\n                else if (_ = accept(result)) {\n                    if (kind === \"field\") initializers.push(_);\n                    else descriptor[key] = _;\n                }\n            }\n            if (target) Object.defineProperty(target, contextIn.name, descriptor);\n            done = true;\n        };`},G4={name:\"typescript:runInitializers\",importName:\"__runInitializers\",scoped:!1,priority:2,text:`\n        var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {\n            var useValue = arguments.length > 2;\n            for (var i = 0; i < initializers.length; i++) {\n                value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n            }\n            return useValue ? value : void 0;\n        };`},B4={name:\"typescript:assign\",importName:\"__assign\",scoped:!1,priority:1,text:`\n            var __assign = (this && this.__assign) || function () {\n                __assign = Object.assign || function(t) {\n                    for (var s, i = 1, n = arguments.length; i < n; i++) {\n                        s = arguments[i];\n                        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                            t[p] = s[p];\n                    }\n                    return t;\n                };\n                return __assign.apply(this, arguments);\n            };`},CS={name:\"typescript:await\",importName:\"__await\",scoped:!1,text:`\n            var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }`},U4={name:\"typescript:asyncGenerator\",importName:\"__asyncGenerator\",scoped:!1,dependencies:[CS],text:`\n            var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n                if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n                var g = generator.apply(thisArg, _arguments || []), i, q = [];\n                return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n                function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n                function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n                function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n                function fulfill(value) { resume(\"next\", value); }\n                function reject(value) { resume(\"throw\", value); }\n                function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n            };`},V4={name:\"typescript:asyncDelegator\",importName:\"__asyncDelegator\",scoped:!1,dependencies:[CS],text:`\n            var __asyncDelegator = (this && this.__asyncDelegator) || function (o) {\n                var i, p;\n                return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n                function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n            };`},j4={name:\"typescript:asyncValues\",importName:\"__asyncValues\",scoped:!1,text:`\n            var __asyncValues = (this && this.__asyncValues) || function (o) {\n                if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n                var m = o[Symbol.asyncIterator], i;\n                return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n                function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n                function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n            };`},H4={name:\"typescript:rest\",importName:\"__rest\",scoped:!1,text:`\n            var __rest = (this && this.__rest) || function (s, e) {\n                var t = {};\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n                    t[p] = s[p];\n                if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n                    for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n                        if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                            t[p[i]] = s[p[i]];\n                    }\n                return t;\n            };`},W4={name:\"typescript:awaiter\",importName:\"__awaiter\",scoped:!1,priority:5,text:`\n            var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n                function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n                return new (P || (P = Promise))(function (resolve, reject) {\n                    function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n                    function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n                    function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n                    step((generator = generator.apply(thisArg, _arguments || [])).next());\n                });\n            };`},z4={name:\"typescript:extends\",importName:\"__extends\",scoped:!1,priority:0,text:`\n            var __extends = (this && this.__extends) || (function () {\n                var extendStatics = function (d, b) {\n                    extendStatics = Object.setPrototypeOf ||\n                        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n                        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n                    return extendStatics(d, b);\n                };\n\n                return function (d, b) {\n                    if (typeof b !== \"function\" && b !== null)\n                        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n                    extendStatics(d, b);\n                    function __() { this.constructor = d; }\n                    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n                };\n            })();`},J4={name:\"typescript:makeTemplateObject\",importName:\"__makeTemplateObject\",scoped:!1,priority:0,text:`\n            var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n                if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n                return cooked;\n            };`},K4={name:\"typescript:read\",importName:\"__read\",scoped:!1,text:`\n            var __read = (this && this.__read) || function (o, n) {\n                var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n                if (!m) return o;\n                var i = m.call(o), r, ar = [], e;\n                try {\n                    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n                }\n                catch (error) { e = { error: error }; }\n                finally {\n                    try {\n                        if (r && !r.done && (m = i[\"return\"])) m.call(i);\n                    }\n                    finally { if (e) throw e.error; }\n                }\n                return ar;\n            };`},q4={name:\"typescript:spreadArray\",importName:\"__spreadArray\",scoped:!1,text:`\n            var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n                if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n                    if (ar || !(i in from)) {\n                        if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n                        ar[i] = from[i];\n                    }\n                }\n                return to.concat(ar || Array.prototype.slice.call(from));\n            };`},X4={name:\"typescript:propKey\",importName:\"__propKey\",scoped:!1,text:`\n        var __propKey = (this && this.__propKey) || function (x) {\n            return typeof x === \"symbol\" ? x : \"\".concat(x);\n        };`},Y4={name:\"typescript:setFunctionName\",importName:\"__setFunctionName\",scoped:!1,text:`\n        var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {\n            if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n            return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n        };`},$4={name:\"typescript:values\",importName:\"__values\",scoped:!1,text:`\n            var __values = (this && this.__values) || function(o) {\n                var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n                if (m) return m.call(o);\n                if (o && typeof o.length === \"number\") return {\n                    next: function () {\n                        if (o && i >= o.length) o = void 0;\n                        return { value: o && o[i++], done: !o };\n                    }\n                };\n                throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n            };`},Q4={name:\"typescript:generator\",importName:\"__generator\",scoped:!1,priority:6,text:`\n            var __generator = (this && this.__generator) || function (thisArg, body) {\n                var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n                return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n                function verb(n) { return function (v) { return step([n, v]); }; }\n                function step(op) {\n                    if (f) throw new TypeError(\"Generator is already executing.\");\n                    while (g && (g = 0, op[0] && (_ = 0)), _) try {\n                        if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n                        if (y = 0, t) op = [op[0] & 2, t.value];\n                        switch (op[0]) {\n                            case 0: case 1: t = op; break;\n                            case 4: _.label++; return { value: op[1], done: false };\n                            case 5: _.label++; y = op[1]; op = [0]; continue;\n                            case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                            default:\n                                if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                                if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                                if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                                if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                                if (t[2]) _.ops.pop();\n                                _.trys.pop(); continue;\n                        }\n                        op = body.call(thisArg, _);\n                    } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n                    if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n                }\n            };`},f2={name:\"typescript:commonjscreatebinding\",importName:\"__createBinding\",scoped:!1,priority:1,text:`\n            var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n                if (k2 === undefined) k2 = k;\n                var desc = Object.getOwnPropertyDescriptor(m, k);\n                if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n                  desc = { enumerable: true, get: function() { return m[k]; } };\n                }\n                Object.defineProperty(o, k2, desc);\n            }) : (function(o, m, k, k2) {\n                if (k2 === undefined) k2 = k;\n                o[k2] = m[k];\n            }));`},Z4={name:\"typescript:commonjscreatevalue\",importName:\"__setModuleDefault\",scoped:!1,priority:1,text:`\n            var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n                Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n            }) : function(o, v) {\n                o[\"default\"] = v;\n            });`},oO={name:\"typescript:commonjsimportstar\",importName:\"__importStar\",scoped:!1,dependencies:[f2,Z4],priority:2,text:`\n            var __importStar = (this && this.__importStar) || function (mod) {\n                if (mod && mod.__esModule) return mod;\n                var result = {};\n                if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n                __setModuleDefault(result, mod);\n                return result;\n            };`},e3={name:\"typescript:commonjsimportdefault\",importName:\"__importDefault\",scoped:!1,text:`\n            var __importDefault = (this && this.__importDefault) || function (mod) {\n                return (mod && mod.__esModule) ? mod : { \"default\": mod };\n            };`},t3={name:\"typescript:export-star\",importName:\"__exportStar\",scoped:!1,dependencies:[f2],priority:2,text:`\n            var __exportStar = (this && this.__exportStar) || function(m, exports) {\n                for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n            };`},n3={name:\"typescript:classPrivateFieldGet\",importName:\"__classPrivateFieldGet\",scoped:!1,text:`\n            var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n                if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n                if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n                return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n            };`},r3={name:\"typescript:classPrivateFieldSet\",importName:\"__classPrivateFieldSet\",scoped:!1,text:`\n            var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n                if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n                if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n                if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n                return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n            };`},i3={name:\"typescript:classPrivateFieldIn\",importName:\"__classPrivateFieldIn\",scoped:!1,text:`\n            var __classPrivateFieldIn = (this && this.__classPrivateFieldIn) || function(state, receiver) {\n                if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n                return typeof state === \"function\" ? receiver === state : state.has(receiver);\n            };`},sO={name:\"typescript:async-super\",scoped:!0,text:Sz`\n            const ${\"_superIndex\"} = name => super[name];`},cO={name:\"typescript:advanced-async-super\",scoped:!0,text:Sz`\n            const ${\"_superIndex\"} = (function (geti, seti) {\n                const cache = Object.create(null);\n                return name => cache[name] || (cache[name] = { get value() { return geti(name); }, set value(v) { seti(name, v); } });\n            })(name => super[name], (name, value) => super[name] = value);`}}});function Uf(e){return e.kind===8}function a3(e){return e.kind===9}function yo(e){return e.kind===10}function IS(e){return e.kind===11}function Cz(e){return e.kind===13}function LS(e){return e.kind===14}function _2(e){return e.kind===15}function Aue(e){return e.kind===16}function Iz(e){return e.kind===17}function o3(e){return e.kind===25}function Cue(e){return e.kind===27}function Lz(e){return e.kind===39}function kz(e){return e.kind===40}function lO(e){return e.kind===41}function uO(e){return e.kind===53}function ev(e){return e.kind===57}function Iue(e){return e.kind===58}function s3(e){return e.kind===28}function Lue(e){return e.kind===38}function Re(e){return e.kind===79}function pi(e){return e.kind===80}function c3(e){return e.kind===93}function kue(e){return e.kind===88}function hL(e){return e.kind===132}function Due(e){return e.kind===129}function Dz(e){return e.kind===133}function wue(e){return e.kind===146}function kS(e){return e.kind===124}function Rue(e){return e.kind===126}function Oue(e){return e.kind===161}function Nue(e){return e.kind===127}function gL(e){return e.kind===106}function yL(e){return e.kind===100}function Pue(e){return e.kind===82}function Yu(e){return e.kind===163}function ts(e){return e.kind===164}function _c(e){return e.kind===165}function ha(e){return e.kind===166}function du(e){return e.kind===167}function Yd(e){return e.kind===168}function Na(e){return e.kind===169}function zm(e){return e.kind===170}function Nc(e){return e.kind===171}function oc(e){return e.kind===172}function Ec(e){return e.kind===173}function __(e){return e.kind===174}function Tf(e){return e.kind===175}function p2(e){return e.kind===176}function dO(e){return e.kind===177}function DS(e){return e.kind===178}function l3(e){return e.kind===179}function p_(e){return e.kind===180}function Jm(e){return e.kind===181}function vL(e){return e.kind===182}function bL(e){return e.kind===183}function Rd(e){return e.kind===184}function wz(e){return e.kind===185}function m2(e){return e.kind===186}function EL(e){return e.kind===199}function Rz(e){return e.kind===187}function Oz(e){return e.kind===188}function wS(e){return e.kind===189}function fO(e){return e.kind===190}function h2(e){return e.kind===191}function g2(e){return e.kind===192}function RS(e){return e.kind===193}function u3(e){return e.kind===194}function OS(e){return e.kind===195}function NS(e){return e.kind===196}function TL(e){return e.kind===197}function mb(e){return e.kind===198}function Mh(e){return e.kind===202}function Mue(e){return e.kind===201}function jRe(e){return e.kind===200}function cm(e){return e.kind===203}function y2(e){return e.kind===204}function Wo(e){return e.kind===205}function fu(e){return e.kind===206}function rs(e){return e.kind===207}function br(e){return e.kind===208}function Vs(e){return e.kind===209}function Pa(e){return e.kind===210}function z0(e){return e.kind===211}function MT(e){return e.kind===212}function Fue(e){return e.kind===213}function ud(e){return e.kind===214}function ms(e){return e.kind===215}function xs(e){return e.kind===216}function Gue(e){return e.kind===217}function v2(e){return e.kind===218}function PS(e){return e.kind===219}function b2(e){return e.kind===220}function tv(e){return e.kind===221}function Nz(e){return e.kind===222}function ar(e){return e.kind===223}function E2(e){return e.kind===224}function d3(e){return e.kind===225}function f3(e){return e.kind===226}function Km(e){return e.kind===227}function _u(e){return e.kind===228}function ol(e){return e.kind===229}function Vg(e){return e.kind===230}function _O(e){return e.kind===231}function HRe(e){return e.kind===235}function MS(e){return e.kind===232}function SL(e){return e.kind===233}function WRe(e){return e.kind===234}function _3(e){return e.kind===356}function xL(e){return e.kind===357}function AL(e){return e.kind===236}function Bue(e){return e.kind===237}function Va(e){return e.kind===238}function Bc(e){return e.kind===240}function Pz(e){return e.kind===239}function Ol(e){return e.kind===241}function FT(e){return e.kind===242}function zRe(e){return e.kind===243}function JRe(e){return e.kind===244}function GT(e){return e.kind===245}function Mz(e){return e.kind===246}function pO(e){return e.kind===247}function KRe(e){return e.kind===248}function qRe(e){return e.kind===249}function V_(e){return e.kind===250}function Uue(e){return e.kind===251}function mO(e){return e.kind===252}function J0(e){return e.kind===253}function Fz(e){return e.kind===254}function hO(e){return e.kind===255}function XRe(e){return e.kind===256}function wi(e){return e.kind===257}function pu(e){return e.kind===258}function Jc(e){return e.kind===259}function sl(e){return e.kind===260}function ku(e){return e.kind===261}function Ep(e){return e.kind===262}function hb(e){return e.kind===263}function Tc(e){return e.kind===264}function Tp(e){return e.kind===265}function gO(e){return e.kind===266}function yO(e){return e.kind===267}function Nl(e){return e.kind===268}function gl(e){return e.kind===269}function lm(e){return e.kind===270}function Vue(e){return e.kind===298}function p3(e){return e.kind===296}function jue(e){return e.kind===297}function nv(e){return e.kind===271}function qm(e){return e.kind===277}function jg(e){return e.kind===272}function $u(e){return e.kind===273}function pc(e){return e.kind===274}function Il(e){return e.kind===275}function m_(e){return e.kind===276}function Mu(e){return e.kind===278}function YRe(e){return e.kind===279}function Gz(e){return e.kind===355}function FS(e){return e.kind===360}function $Re(e){return e.kind===358}function QRe(e){return e.kind===359}function um(e){return e.kind===280}function Hg(e){return e.kind===281}function GS(e){return e.kind===282}function Xm(e){return e.kind===283}function BS(e){return e.kind===284}function US(e){return e.kind===285}function VS(e){return e.kind===286}function Hue(e){return e.kind===287}function Sp(e){return e.kind===288}function K0(e){return e.kind===289}function BT(e){return e.kind===290}function CL(e){return e.kind===291}function IL(e){return e.kind===292}function vO(e){return e.kind===293}function dd(e){return e.kind===294}function T2(e){return e.kind===295}function yl(e){return e.kind===299}function Sf(e){return e.kind===300}function jS(e){return e.kind===301}function q0(e){return e.kind===302}function Wue(e){return e.kind===304}function Li(e){return e.kind===308}function Bz(e){return e.kind===309}function UT(e){return e.kind===310}function VT(e){return e.kind===312}function LL(e){return e.kind===313}function gb(e){return e.kind===314}function zue(e){return e.kind===327}function Jue(e){return e.kind===328}function ZRe(e){return e.kind===329}function Kue(e){return e.kind===315}function que(e){return e.kind===316}function S2(e){return e.kind===317}function m3(e){return e.kind===318}function Uz(e){return e.kind===319}function x2(e){return e.kind===320}function h3(e){return e.kind===321}function eOe(e){return e.kind===322}function dm(e){return e.kind===323}function kL(e){return e.kind===325}function X0(e){return e.kind===326}function A2(e){return e.kind===331}function tOe(e){return e.kind===333}function Xue(e){return e.kind===335}function Vz(e){return e.kind===341}function jz(e){return e.kind===336}function Hz(e){return e.kind===337}function Wz(e){return e.kind===338}function zz(e){return e.kind===339}function g3(e){return e.kind===340}function DL(e){return e.kind===342}function Jz(e){return e.kind===334}function nOe(e){return e.kind===350}function bO(e){return e.kind===343}function xp(e){return e.kind===344}function y3(e){return e.kind===345}function Yue(e){return e.kind===346}function wL(e){return e.kind===347}function j_(e){return e.kind===348}function Kz(e){return e.kind===349}function rOe(e){return e.kind===330}function $ue(e){return e.kind===351}function qz(e){return e.kind===332}function v3(e){return e.kind===353}function iOe(e){return e.kind===352}function C2(e){return e.kind===354}var aOe=gt({\"src/compiler/factory/nodeTests.ts\"(){\"use strict\";fa()}});function EO(e){return e.createExportDeclaration(void 0,!1,e.createNamedExports([]),void 0)}function jT(e,t,r,i){if(ts(r))return it(e.createElementAccessExpression(t,r.expression),i);{let o=it(Ah(r)?e.createPropertyAccessExpression(t,r):e.createElementAccessExpression(t,r),r);return bp(o,128),o}}function Xz(e,t){let r=fm.createIdentifier(e||\"React\");return go(r,ea(t)),r}function Yz(e,t,r){if(Yu(t)){let i=Yz(e,t.left,r),o=e.createIdentifier(vr(t.right));return o.escapedText=t.right.escapedText,e.createPropertyAccessExpression(i,o)}else return Xz(vr(t),r)}function $z(e,t,r,i){return t?Yz(e,t,i):e.createPropertyAccessExpression(Xz(r,i),\"createElement\")}function oOe(e,t,r,i){return t?Yz(e,t,i):e.createPropertyAccessExpression(Xz(r,i),\"Fragment\")}function Que(e,t,r,i,o,s){let l=[r];if(i&&l.push(i),o&&o.length>0)if(i||l.push(e.createNull()),o.length>1)for(let f of o)mu(f),l.push(f);else l.push(o[0]);return it(e.createCallExpression(t,void 0,l),s)}function Zue(e,t,r,i,o,s,l){let d=[oOe(e,r,i,s),e.createNull()];if(o&&o.length>0)if(o.length>1)for(let g of o)mu(g),d.push(g);else d.push(o[0]);return it(e.createCallExpression($z(e,t,i,s),void 0,d),l)}function Qz(e,t,r){if(pu(t)){let i=Vo(t.declarations),o=e.updateVariableDeclaration(i,i.name,void 0,void 0,r);return it(e.createVariableStatement(void 0,e.updateVariableDeclarationList(t,[o])),t)}else{let i=it(e.createAssignment(t,r),t);return it(e.createExpressionStatement(i),t)}}function sOe(e,t,r){return Va(t)?e.updateBlock(t,it(e.createNodeArray([r,...t.statements]),t.statements)):e.createBlock(e.createNodeArray([t,r]),!0)}function TO(e,t){if(Yu(t)){let r=TO(e,t.left),i=go(it(e.cloneNode(t.right),t.right),t.right.parent);return it(e.createPropertyAccessExpression(r,i),t)}else return go(it(e.cloneNode(t),t),t.parent)}function Zz(e,t){return Re(t)?e.createStringLiteralFromNode(t):ts(t)?go(it(e.cloneNode(t.expression),t.expression),t.expression.parent):go(it(e.cloneNode(t),t),t.parent)}function cOe(e,t,r,i,o){let{firstAccessor:s,getAccessor:l,setAccessor:f}=DT(t,r);if(r===s)return it(e.createObjectDefinePropertyCall(i,Zz(e,r.name),e.createPropertyDescriptor({enumerable:e.createFalse(),configurable:!0,get:l&&it(Ir(e.createFunctionExpression(dT(l),void 0,void 0,void 0,l.parameters,void 0,l.body),l),l),set:f&&it(Ir(e.createFunctionExpression(dT(f),void 0,void 0,void 0,f.parameters,void 0,f.body),f),f)},!o)),s)}function lOe(e,t,r){return Ir(it(e.createAssignment(jT(e,r,t.name,t.name),t.initializer),t),t)}function uOe(e,t,r){return Ir(it(e.createAssignment(jT(e,r,t.name,t.name),e.cloneNode(t.name)),t),t)}function dOe(e,t,r){return Ir(it(e.createAssignment(jT(e,r,t.name,t.name),Ir(it(e.createFunctionExpression(dT(t),t.asteriskToken,void 0,void 0,t.parameters,void 0,t.body),t),t)),t),t)}function ede(e,t,r,i){switch(r.name&&pi(r.name)&&L.failBadSyntaxKind(r.name,\"Private identifiers are not allowed in object literals.\"),r.kind){case 174:case 175:return cOe(e,t.properties,r,i,!!t.multiLine);case 299:return lOe(e,r,i);case 300:return uOe(e,r,i);case 171:return dOe(e,r,i)}}function b3(e,t,r,i,o){let s=t.operator;L.assert(s===45||s===46,\"Expected 'node' to be a pre- or post-increment or pre- or post-decrement expression\");let l=e.createTempVariable(i);r=e.createAssignment(l,r),it(r,t.operand);let f=tv(t)?e.createPrefixUnaryExpression(s,l):e.createPostfixUnaryExpression(l,s);return it(f,t),o&&(f=e.createAssignment(o,f),it(f,t)),r=e.createComma(r,f),it(r,t),Nz(t)&&(r=e.createComma(r,l),it(r,t)),r}function eJ(e){return(Ya(e)&65536)!==0}function rv(e){return(Ya(e)&32768)!==0}function E3(e){return(Ya(e)&16384)!==0}function tde(e){return yo(e.expression)&&e.expression.text===\"use strict\"}function tJ(e){for(let t of e)if(G_(t)){if(tde(t))return t}else break}function nde(e){let t=Sl(e);return t!==void 0&&G_(t)&&tde(t)}function SO(e){return e.kind===223&&e.operatorToken.kind===27}function RL(e){return SO(e)||xL(e)}function OL(e){return ud(e)&&Yn(e)&&!!x0(e)}function T3(e){let t=Vy(e);return L.assertIsDefined(t),t}function S3(e,t=15){switch(e.kind){case 214:return t&16&&OL(e)?!1:(t&1)!==0;case 213:case 231:case 230:case 235:return(t&2)!==0;case 232:return(t&4)!==0;case 356:return(t&8)!==0}return!1}function ql(e,t=15){for(;S3(e,t);)e=e.expression;return e}function rde(e,t=15){let r=e.parent;for(;S3(r,t);)r=r.parent,L.assert(r);return r}function fOe(e){return ql(e,6)}function mu(e){return vz(e,!0)}function xO(e){let t=ec(e,Li),r=t&&t.emitNode;return r&&r.externalHelpersModuleName}function ide(e){let t=ec(e,Li),r=t&&t.emitNode;return!!r&&(!!r.externalHelpersModuleName||!!r.externalHelpers)}function nJ(e,t,r,i,o,s,l){if(i.importHelpers&&oS(r,i)){let f,d=Rl(i);if(d>=5&&d<=99||r.impliedNodeFormat===99){let g=O4(r);if(g){let m=[];for(let v of g)if(!v.scoped){let S=v.importName;S&&Rf(m,S)}if(vt(m)){m.sort(su),f=e.createNamedImports(on(m,x=>g6(r,x)?e.createImportSpecifier(!1,void 0,e.createIdentifier(x)):e.createImportSpecifier(!1,e.createIdentifier(x),t.getUnscopedHelperName(x))));let v=ec(r,Li),S=Lu(v);S.externalHelpers=!0}}}else{let g=ade(e,r,i,o,s||l);g&&(f=e.createNamespaceImport(g))}if(f){let g=e.createImportDeclaration(void 0,e.createImportClause(!1,void 0,f),e.createStringLiteral(_b),void 0);return xS(g,2),g}}}function ade(e,t,r,i,o){if(r.importHelpers&&oS(t,r)){let s=xO(t);if(s)return s;let l=Rl(r),f=(i||d_(r)&&o)&&l!==4&&(l<5||t.impliedNodeFormat===1);if(!f){let d=O4(t);if(d){for(let g of d)if(!g.scoped){f=!0;break}}}if(f){let d=ec(t,Li),g=Lu(d);return g.externalHelpersModuleName||(g.externalHelpersModuleName=e.createUniqueName(_b))}}}function I2(e,t,r){let i=jA(t);if(i&&!uS(t)&&!v6(t)){let o=i.name;return tc(o)?o:e.createIdentifier(k0(r,o)||vr(o))}if(t.kind===269&&t.importClause||t.kind===275&&t.moduleSpecifier)return e.getGeneratedNameForNode(t)}function HS(e,t,r,i,o,s){let l=VA(t);if(l&&yo(l))return pOe(t,i,e,o,s)||_Oe(e,l,r)||e.cloneNode(l)}function _Oe(e,t,r){let i=r.renamedDependencies&&r.renamedDependencies.get(t.text);return i?e.createStringLiteral(i):void 0}function AO(e,t,r,i){if(!!t){if(t.moduleName)return e.createStringLiteral(t.moduleName);if(!t.isDeclarationFile&&Ss(i))return e.createStringLiteral(YH(r,t.fileName))}}function pOe(e,t,r,i,o){return AO(r,i.getExternalModuleFileFromDeclaration(e),t,o)}function CO(e){if(kw(e))return e.initializer;if(yl(e)){let t=e.initializer;return Iu(t,!0)?t.right:void 0}if(Sf(e))return e.objectAssignmentInitializer;if(Iu(e,!0))return e.right;if(Km(e))return CO(e.expression)}function iv(e){if(kw(e))return e.name;if(Og(e)){switch(e.kind){case 299:return iv(e.initializer);case 300:return e.name;case 301:return iv(e.expression)}return}return Iu(e,!0)?iv(e.left):Km(e)?iv(e.expression):e}function x3(e){switch(e.kind){case 166:case 205:return e.dotDotDotToken;case 227:case 301:return e}}function rJ(e){let t=A3(e);return L.assert(!!t||jS(e),\"Invalid property name for binding element.\"),t}function A3(e){switch(e.kind){case 205:if(e.propertyName){let r=e.propertyName;return pi(r)?L.failBadSyntaxKind(r):ts(r)&&ode(r.expression)?r.expression:r}break;case 299:if(e.name){let r=e.name;return pi(r)?L.failBadSyntaxKind(r):ts(r)&&ode(r.expression)?r.expression:r}break;case 301:return e.name&&pi(e.name)?L.failBadSyntaxKind(e.name):e.name}let t=iv(e);if(t&&Ys(t))return t}function ode(e){let t=e.kind;return t===10||t===8}function L2(e){switch(e.kind){case 203:case 204:case 206:return e.elements;case 207:return e.properties}}function iJ(e){if(e){let t=e;for(;;){if(Re(t)||!t.body)return Re(t)?t:t.name;t=t.body}}}function mOe(e){let t=e.kind;return t===173||t===175}function sde(e){let t=e.kind;return t===173||t===174||t===175}function aJ(e){let t=e.kind;return t===299||t===300||t===259||t===173||t===178||t===172||t===279||t===240||t===261||t===262||t===263||t===264||t===268||t===269||t===267||t===275||t===274}function cde(e){let t=e.kind;return t===172||t===299||t===300||t===279||t===267}function lde(e){return ev(e)||uO(e)}function ude(e){return Re(e)||u3(e)}function dde(e){return wue(e)||Lz(e)||kz(e)}function fde(e){return ev(e)||Lz(e)||kz(e)}function _de(e){return Re(e)||yo(e)}function hOe(e){let t=e.kind;return t===104||t===110||t===95||_T(e)||tv(e)}function gOe(e){return e===42}function yOe(e){return e===41||e===43||e===44}function vOe(e){return gOe(e)||yOe(e)}function bOe(e){return e===39||e===40}function EOe(e){return bOe(e)||vOe(e)}function TOe(e){return e===47||e===48||e===49}function SOe(e){return TOe(e)||EOe(e)}function xOe(e){return e===29||e===32||e===31||e===33||e===102||e===101}function AOe(e){return xOe(e)||SOe(e)}function COe(e){return e===34||e===36||e===35||e===37}function IOe(e){return COe(e)||AOe(e)}function LOe(e){return e===50||e===51||e===52}function kOe(e){return LOe(e)||IOe(e)}function DOe(e){return e===55||e===56}function wOe(e){return DOe(e)||kOe(e)}function ROe(e){return e===60||wOe(e)||Mg(e)}function OOe(e){return ROe(e)||e===27}function pde(e){return OOe(e.kind)}function C3(e,t,r,i,o,s){let l=new bde(e,t,r,i,o,s);return f;function f(d,g){let m={value:void 0},v=[k3.enter],S=[d],x=[void 0],A=0;for(;v[A]!==k3.done;)A=v[A](l,A,v,S,x,m,g);return L.assertEqual(A,0),m.value}}function mde(e){return e===93||e===88}function oJ(e){let t=e.kind;return mde(t)}function NOe(e){let t=e.kind;return Rg(t)&&!mde(t)}function hde(e,t){if(t!==void 0)return t.length===0?t:it(e.createNodeArray([],t.hasTrailingComma),t)}function I3(e){var t;let r=e.emitNode.autoGenerate;if(r.flags&4){let i=r.id,o=e,s=o.original;for(;s;){o=s;let l=(t=o.emitNode)==null?void 0:t.autoGenerate;if(Ah(o)&&(l===void 0||!!(l.flags&4)&&l.id!==i))break;s=o.original}return o}return e}function k2(e,t){return typeof e==\"object\"?HT(!1,e.prefix,e.node,e.suffix,t):typeof e==\"string\"?e.length>0&&e.charCodeAt(0)===35?e.slice(1):e:\"\"}function POe(e,t){return typeof e==\"string\"?e:MOe(e,L.checkDefined(t))}function MOe(e,t){return nS(e)?t(e).slice(1):tc(e)?t(e):pi(e)?e.escapedText.slice(1):vr(e)}function HT(e,t,r,i,o){return t=k2(t,o),i=k2(i,o),r=POe(r,o),`${e?\"#\":\"\"}${t}${r}${i}`}function sJ(e,t,r,i){return e.updatePropertyDeclaration(t,r,e.getGeneratedPrivateNameForNode(t.name,void 0,\"_accessor_storage\"),void 0,void 0,i)}function gde(e,t,r,i){return e.createGetAccessorDeclaration(r,i,[],void 0,e.createBlock([e.createReturnStatement(e.createPropertyAccessExpression(e.createThis(),e.getGeneratedPrivateNameForNode(t.name,void 0,\"_accessor_storage\")))]))}function yde(e,t,r,i){return e.createSetAccessorDeclaration(r,i,[e.createParameterDeclaration(void 0,void 0,\"value\")],e.createBlock([e.createExpressionStatement(e.createAssignment(e.createPropertyAccessExpression(e.createThis(),e.getGeneratedPrivateNameForNode(t.name,void 0,\"_accessor_storage\")),e.createIdentifier(\"value\")))]))}function L3(e){let t=e.expression;for(;;){if(t=ql(t),xL(t)){t=To(t.elements);continue}if(SO(t)){t=t.right;continue}if(Iu(t,!0)&&tc(t.left))return t;break}}function FOe(e){return ud(e)&&ws(e)&&!e.emitNode}function IO(e,t){if(FOe(e))IO(e.expression,t);else if(SO(e))IO(e.left,t),IO(e.right,t);else if(xL(e))for(let r of e.elements)IO(r,t);else t.push(e)}function vde(e){let t=[];return IO(e,t),t}function LO(e){if(e.transformFlags&65536)return!0;if(e.transformFlags&128)for(let t of L2(e)){let r=iv(t);if(r&&bI(r)&&(r.transformFlags&65536||r.transformFlags&128&&LO(r)))return!0}return!1}var k3,bde,GOe=gt({\"src/compiler/factory/utilities.ts\"(){\"use strict\";fa(),(e=>{function t(m,v,S,x,A,w,C){let P=v>0?A[v-1]:void 0;return L.assertEqual(S[v],t),A[v]=m.onEnter(x[v],P,C),S[v]=f(m,t),v}e.enter=t;function r(m,v,S,x,A,w,C){L.assertEqual(S[v],r),L.assertIsDefined(m.onLeft),S[v]=f(m,r);let P=m.onLeft(x[v].left,A[v],x[v]);return P?(g(v,x,P),d(v,S,x,A,P)):v}e.left=r;function i(m,v,S,x,A,w,C){return L.assertEqual(S[v],i),L.assertIsDefined(m.onOperator),S[v]=f(m,i),m.onOperator(x[v].operatorToken,A[v],x[v]),v}e.operator=i;function o(m,v,S,x,A,w,C){L.assertEqual(S[v],o),L.assertIsDefined(m.onRight),S[v]=f(m,o);let P=m.onRight(x[v].right,A[v],x[v]);return P?(g(v,x,P),d(v,S,x,A,P)):v}e.right=o;function s(m,v,S,x,A,w,C){L.assertEqual(S[v],s),S[v]=f(m,s);let P=m.onExit(x[v],A[v]);if(v>0){if(v--,m.foldState){let F=S[v]===s?\"right\":\"left\";A[v]=m.foldState(A[v],P,F)}}else w.value=P;return v}e.exit=s;function l(m,v,S,x,A,w,C){return L.assertEqual(S[v],l),v}e.done=l;function f(m,v){switch(v){case t:if(m.onLeft)return r;case r:if(m.onOperator)return i;case i:if(m.onRight)return o;case o:return s;case s:return l;case l:return l;default:L.fail(\"Invalid state\")}}e.nextState=f;function d(m,v,S,x,A){return m++,v[m]=t,S[m]=A,x[m]=void 0,m}function g(m,v,S){if(L.shouldAssert(2))for(;m>=0;)L.assert(v[m]!==S,\"Circular traversal detected.\"),m--}})(k3||(k3={})),bde=class{constructor(e,t,r,i,o,s){this.onEnter=e,this.onLeft=t,this.onOperator=r,this.onRight=i,this.onExit=o,this.foldState=s}}}});function it(e,t){return t?om(e,t.pos,t.end):e}function h_(e){let t=e.kind;return t===165||t===166||t===168||t===169||t===170||t===171||t===173||t===174||t===175||t===178||t===182||t===215||t===216||t===228||t===240||t===259||t===260||t===261||t===262||t===263||t===264||t===268||t===269||t===274||t===275}function WS(e){let t=e.kind;return t===166||t===169||t===171||t===174||t===175||t===228||t===260}var BOe=gt({\"src/compiler/factory/utilitiesPublic.ts\"(){\"use strict\";fa()}});function Mt(e,t){return t&&e(t)}function fi(e,t,r){if(r){if(t)return t(r);for(let i of r){let o=e(i);if(o)return o}}}function cJ(e,t){return e.charCodeAt(t+1)===42&&e.charCodeAt(t+2)===42&&e.charCodeAt(t+3)!==47}function kO(e){return mn(e.statements,UOe)||VOe(e)}function UOe(e){return h_(e)&&jOe(e,93)||Nl(e)&&um(e.moduleReference)||gl(e)||pc(e)||Il(e)?e:void 0}function VOe(e){return e.flags&4194304?Ede(e):void 0}function Ede(e){return HOe(e)?e:pa(e,Ede)}function jOe(e,t){return vt(e.modifiers,r=>r.kind===t)}function HOe(e){return SL(e)&&e.keywordToken===100&&e.name.escapedText===\"meta\"}function Tde(e,t,r){return fi(t,r,e.typeParameters)||fi(t,r,e.parameters)||Mt(t,e.type)}function Sde(e,t,r){return fi(t,r,e.types)}function xde(e,t,r){return Mt(t,e.type)}function Ade(e,t,r){return fi(t,r,e.elements)}function Cde(e,t,r){return Mt(t,e.expression)||Mt(t,e.questionDotToken)||fi(t,r,e.typeArguments)||fi(t,r,e.arguments)}function Ide(e,t,r){return fi(t,r,e.statements)}function Lde(e,t,r){return Mt(t,e.label)}function kde(e,t,r){return fi(t,r,e.modifiers)||Mt(t,e.name)||fi(t,r,e.typeParameters)||fi(t,r,e.heritageClauses)||fi(t,r,e.members)}function Dde(e,t,r){return fi(t,r,e.elements)}function wde(e,t,r){return Mt(t,e.propertyName)||Mt(t,e.name)}function Rde(e,t,r){return Mt(t,e.tagName)||fi(t,r,e.typeArguments)||Mt(t,e.attributes)}function D2(e,t,r){return Mt(t,e.type)}function Ode(e,t,r){return Mt(t,e.tagName)||(e.isNameFirst?Mt(t,e.name)||Mt(t,e.typeExpression):Mt(t,e.typeExpression)||Mt(t,e.name))||(typeof e.comment==\"string\"?void 0:fi(t,r,e.comment))}function w2(e,t,r){return Mt(t,e.tagName)||Mt(t,e.typeExpression)||(typeof e.comment==\"string\"?void 0:fi(t,r,e.comment))}function lJ(e,t,r){return Mt(t,e.name)}function zS(e,t,r){return Mt(t,e.tagName)||(typeof e.comment==\"string\"?void 0:fi(t,r,e.comment))}function WOe(e,t,r){return Mt(t,e.expression)}function pa(e,t,r){if(e===void 0||e.kind<=162)return;let i=Hde[e.kind];return i===void 0?void 0:i(e,t,r)}function DO(e,t,r){let i=Nde(e),o=[];for(;o.length<i.length;)o.push(e);for(;i.length!==0;){let s=i.pop(),l=o.pop();if(ba(s)){if(r){let f=r(s,l);if(f){if(f===\"skip\")continue;return f}}for(let f=s.length-1;f>=0;--f)i.push(s[f]),o.push(l)}else{let f=t(s,l);if(f){if(f===\"skip\")continue;return f}if(s.kind>=163)for(let d of Nde(s))i.push(d),o.push(s)}}}function Nde(e){let t=[];return pa(e,r,r),t;function r(i){t.unshift(i)}}function Pde(e){e.externalModuleIndicator=kO(e)}function wO(e,t,r,i=!1,o){var s,l;(s=ai)==null||s.push(ai.Phase.Parse,\"createSourceFile\",{path:e},!0),Fs(\"beforeParse\");let f;fp.logStartParseSourceFile(e);let{languageVersion:d,setExternalModuleIndicator:g,impliedNodeFormat:m}=typeof r==\"object\"?r:{languageVersion:r};if(d===100)f=av.parseSourceFile(e,t,d,void 0,i,6,Ba);else{let v=m===void 0?g:S=>(S.impliedNodeFormat=m,(g||Pde)(S));f=av.parseSourceFile(e,t,d,void 0,i,o,v)}return fp.logStopParseSourceFile(),Fs(\"afterParse\"),mf(\"Parse\",\"beforeParse\",\"afterParse\"),(l=ai)==null||l.pop(),f}function JS(e,t){return av.parseIsolatedEntityName(e,t)}function RO(e,t){return av.parseJsonText(e,t)}function Lc(e){return e.externalModuleIndicator!==void 0}function uJ(e,t,r,i=!1){let o=D3.updateSourceFile(e,t,r,i);return o.flags|=e.flags&6291456,o}function Mde(e,t,r){let i=av.JSDocParser.parseIsolatedJSDocComment(e,t,r);return i&&i.jsDoc&&av.fixupParentReferences(i.jsDoc),i}function zOe(e,t,r){return av.JSDocParser.parseJSDocTypeExpressionForTests(e,t,r)}function Fu(e){return $c(e,I4)||Gc(e,\".ts\")&&jl(Hl(e),\".d.\")}function JOe(e,t,r,i){if(!!e){if(e===\"import\")return 99;if(e===\"require\")return 1;i(t,r-t,_.resolution_mode_should_be_either_require_or_import)}}function dJ(e,t){let r=[];for(let i of Nm(t,0)||Je){let o=t.substring(i.pos,i.end);qOe(r,i,o)}e.pragmas=new Map;for(let i of r){if(e.pragmas.has(i.name)){let o=e.pragmas.get(i.name);o instanceof Array?o.push(i.args):e.pragmas.set(i.name,[o,i.args]);continue}e.pragmas.set(i.name,i.args)}}function fJ(e,t){e.checkJsDirective=void 0,e.referencedFiles=[],e.typeReferenceDirectives=[],e.libReferenceDirectives=[],e.amdDependencies=[],e.hasNoDefaultLib=!1,e.pragmas.forEach((r,i)=>{switch(i){case\"reference\":{let o=e.referencedFiles,s=e.typeReferenceDirectives,l=e.libReferenceDirectives;mn(XD(r),f=>{let{types:d,lib:g,path:m,[\"resolution-mode\"]:v}=f.arguments;if(f.arguments[\"no-default-lib\"])e.hasNoDefaultLib=!0;else if(d){let S=JOe(v,d.pos,d.end,t);s.push({pos:d.pos,end:d.end,fileName:d.value,...S?{resolutionMode:S}:{}})}else g?l.push({pos:g.pos,end:g.end,fileName:g.value}):m?o.push({pos:m.pos,end:m.end,fileName:m.value}):t(f.range.pos,f.range.end-f.range.pos,_.Invalid_reference_directive_syntax)});break}case\"amd-dependency\":{e.amdDependencies=on(XD(r),o=>({name:o.arguments.name,path:o.arguments.path}));break}case\"amd-module\":{if(r instanceof Array)for(let o of r)e.moduleName&&t(o.range.pos,o.range.end-o.range.pos,_.An_AMD_module_cannot_have_multiple_name_assignments),e.moduleName=o.arguments.name;else e.moduleName=r.arguments.name;break}case\"ts-nocheck\":case\"ts-check\":{mn(XD(r),o=>{(!e.checkJsDirective||o.range.pos>e.checkJsDirective.pos)&&(e.checkJsDirective={enabled:i===\"ts-check\",end:o.range.end,pos:o.range.pos})});break}case\"jsx\":case\"jsxfrag\":case\"jsximportsource\":case\"jsxruntime\":return;default:L.fail(\"Unhandled pragma kind\")}})}function KOe(e){if(w3.has(e))return w3.get(e);let t=new RegExp(`(\\\\s${e}\\\\s*=\\\\s*)(?:(?:'([^']*)')|(?:\"([^\"]*)\"))`,\"im\");return w3.set(e,t),t}function qOe(e,t,r){let i=t.kind===2&&Wde.exec(r);if(i){let s=i[1].toLowerCase(),l=aw[s];if(!l||!(l.kind&1))return;if(l.args){let f={};for(let d of l.args){let m=KOe(d.name).exec(r);if(!m&&!d.optional)return;if(m){let v=m[2]||m[3];if(d.captureSpan){let S=t.pos+m.index+m[1].length+1;f[d.name]={value:v,pos:S,end:S+v.length}}else f[d.name]=v}}e.push({name:s,args:{arguments:f,range:t}})}else e.push({name:s,args:{arguments:{},range:t}});return}let o=t.kind===2&&zde.exec(r);if(o)return Fde(e,t,2,o);if(t.kind===3){let s=/@(\\S+)(\\s+.*)?$/gim,l;for(;l=s.exec(r);)Fde(e,t,4,l)}}function Fde(e,t,r,i){if(!i)return;let o=i[1].toLowerCase(),s=aw[o];if(!s||!(s.kind&r))return;let l=i[2],f=XOe(s,l);f!==\"fail\"&&e.push({name:o,args:{arguments:f,range:t}})}function XOe(e,t){if(!t)return{};if(!e.args)return{};let r=v0(t).split(/\\s+/),i={};for(let o=0;o<e.args.length;o++){let s=e.args[o];if(!r[o]&&!s.optional)return\"fail\";if(s.captureSpan)return L.fail(\"Capture spans not yet implemented for non-xml pragmas\");i[s.name]=r[o]}return i}function yb(e,t){return e.kind!==t.kind?!1:e.kind===79?e.escapedText===t.escapedText:e.kind===108?!0:e.name.escapedText===t.name.escapedText&&yb(e.expression,t.expression)}var Gde,Bde,Ude,Vde,jde,_J,fm,Hde,av,D3,w3,Wde,zde,YOe=gt({\"src/compiler/parser.ts\"(){\"use strict\";fa(),fa(),E0(),_J={createBaseSourceFileNode:e=>new(jde||(jde=ml.getSourceFileConstructor()))(e,-1,-1),createBaseIdentifierNode:e=>new(Ude||(Ude=ml.getIdentifierConstructor()))(e,-1,-1),createBasePrivateIdentifierNode:e=>new(Vde||(Vde=ml.getPrivateIdentifierConstructor()))(e,-1,-1),createBaseTokenNode:e=>new(Bde||(Bde=ml.getTokenConstructor()))(e,-1,-1),createBaseNode:e=>new(Gde||(Gde=ml.getNodeConstructor()))(e,-1,-1)},fm=$R(1,_J),Hde={[163]:function(t,r,i){return Mt(r,t.left)||Mt(r,t.right)},[165]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||Mt(r,t.constraint)||Mt(r,t.default)||Mt(r,t.expression)},[300]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||Mt(r,t.questionToken)||Mt(r,t.exclamationToken)||Mt(r,t.equalsToken)||Mt(r,t.objectAssignmentInitializer)},[301]:function(t,r,i){return Mt(r,t.expression)},[166]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.dotDotDotToken)||Mt(r,t.name)||Mt(r,t.questionToken)||Mt(r,t.type)||Mt(r,t.initializer)},[169]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||Mt(r,t.questionToken)||Mt(r,t.exclamationToken)||Mt(r,t.type)||Mt(r,t.initializer)},[168]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||Mt(r,t.questionToken)||Mt(r,t.type)||Mt(r,t.initializer)},[299]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||Mt(r,t.questionToken)||Mt(r,t.exclamationToken)||Mt(r,t.initializer)},[257]:function(t,r,i){return Mt(r,t.name)||Mt(r,t.exclamationToken)||Mt(r,t.type)||Mt(r,t.initializer)},[205]:function(t,r,i){return Mt(r,t.dotDotDotToken)||Mt(r,t.propertyName)||Mt(r,t.name)||Mt(r,t.initializer)},[178]:function(t,r,i){return fi(r,i,t.modifiers)||fi(r,i,t.typeParameters)||fi(r,i,t.parameters)||Mt(r,t.type)},[182]:function(t,r,i){return fi(r,i,t.modifiers)||fi(r,i,t.typeParameters)||fi(r,i,t.parameters)||Mt(r,t.type)},[181]:function(t,r,i){return fi(r,i,t.modifiers)||fi(r,i,t.typeParameters)||fi(r,i,t.parameters)||Mt(r,t.type)},[176]:Tde,[177]:Tde,[171]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.asteriskToken)||Mt(r,t.name)||Mt(r,t.questionToken)||Mt(r,t.exclamationToken)||fi(r,i,t.typeParameters)||fi(r,i,t.parameters)||Mt(r,t.type)||Mt(r,t.body)},[170]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||Mt(r,t.questionToken)||fi(r,i,t.typeParameters)||fi(r,i,t.parameters)||Mt(r,t.type)},[173]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||fi(r,i,t.typeParameters)||fi(r,i,t.parameters)||Mt(r,t.type)||Mt(r,t.body)},[174]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||fi(r,i,t.typeParameters)||fi(r,i,t.parameters)||Mt(r,t.type)||Mt(r,t.body)},[175]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||fi(r,i,t.typeParameters)||fi(r,i,t.parameters)||Mt(r,t.type)||Mt(r,t.body)},[259]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.asteriskToken)||Mt(r,t.name)||fi(r,i,t.typeParameters)||fi(r,i,t.parameters)||Mt(r,t.type)||Mt(r,t.body)},[215]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.asteriskToken)||Mt(r,t.name)||fi(r,i,t.typeParameters)||fi(r,i,t.parameters)||Mt(r,t.type)||Mt(r,t.body)},[216]:function(t,r,i){return fi(r,i,t.modifiers)||fi(r,i,t.typeParameters)||fi(r,i,t.parameters)||Mt(r,t.type)||Mt(r,t.equalsGreaterThanToken)||Mt(r,t.body)},[172]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.body)},[180]:function(t,r,i){return Mt(r,t.typeName)||fi(r,i,t.typeArguments)},[179]:function(t,r,i){return Mt(r,t.assertsModifier)||Mt(r,t.parameterName)||Mt(r,t.type)},[183]:function(t,r,i){return Mt(r,t.exprName)||fi(r,i,t.typeArguments)},[184]:function(t,r,i){return fi(r,i,t.members)},[185]:function(t,r,i){return Mt(r,t.elementType)},[186]:function(t,r,i){return fi(r,i,t.elements)},[189]:Sde,[190]:Sde,[191]:function(t,r,i){return Mt(r,t.checkType)||Mt(r,t.extendsType)||Mt(r,t.trueType)||Mt(r,t.falseType)},[192]:function(t,r,i){return Mt(r,t.typeParameter)},[202]:function(t,r,i){return Mt(r,t.argument)||Mt(r,t.assertions)||Mt(r,t.qualifier)||fi(r,i,t.typeArguments)},[298]:function(t,r,i){return Mt(r,t.assertClause)},[193]:xde,[195]:xde,[196]:function(t,r,i){return Mt(r,t.objectType)||Mt(r,t.indexType)},[197]:function(t,r,i){return Mt(r,t.readonlyToken)||Mt(r,t.typeParameter)||Mt(r,t.nameType)||Mt(r,t.questionToken)||Mt(r,t.type)||fi(r,i,t.members)},[198]:function(t,r,i){return Mt(r,t.literal)},[199]:function(t,r,i){return Mt(r,t.dotDotDotToken)||Mt(r,t.name)||Mt(r,t.questionToken)||Mt(r,t.type)},[203]:Ade,[204]:Ade,[206]:function(t,r,i){return fi(r,i,t.elements)},[207]:function(t,r,i){return fi(r,i,t.properties)},[208]:function(t,r,i){return Mt(r,t.expression)||Mt(r,t.questionDotToken)||Mt(r,t.name)},[209]:function(t,r,i){return Mt(r,t.expression)||Mt(r,t.questionDotToken)||Mt(r,t.argumentExpression)},[210]:Cde,[211]:Cde,[212]:function(t,r,i){return Mt(r,t.tag)||Mt(r,t.questionDotToken)||fi(r,i,t.typeArguments)||Mt(r,t.template)},[213]:function(t,r,i){return Mt(r,t.type)||Mt(r,t.expression)},[214]:function(t,r,i){return Mt(r,t.expression)},[217]:function(t,r,i){return Mt(r,t.expression)},[218]:function(t,r,i){return Mt(r,t.expression)},[219]:function(t,r,i){return Mt(r,t.expression)},[221]:function(t,r,i){return Mt(r,t.operand)},[226]:function(t,r,i){return Mt(r,t.asteriskToken)||Mt(r,t.expression)},[220]:function(t,r,i){return Mt(r,t.expression)},[222]:function(t,r,i){return Mt(r,t.operand)},[223]:function(t,r,i){return Mt(r,t.left)||Mt(r,t.operatorToken)||Mt(r,t.right)},[231]:function(t,r,i){return Mt(r,t.expression)||Mt(r,t.type)},[232]:function(t,r,i){return Mt(r,t.expression)},[235]:function(t,r,i){return Mt(r,t.expression)||Mt(r,t.type)},[233]:function(t,r,i){return Mt(r,t.name)},[224]:function(t,r,i){return Mt(r,t.condition)||Mt(r,t.questionToken)||Mt(r,t.whenTrue)||Mt(r,t.colonToken)||Mt(r,t.whenFalse)},[227]:function(t,r,i){return Mt(r,t.expression)},[238]:Ide,[265]:Ide,[308]:function(t,r,i){return fi(r,i,t.statements)||Mt(r,t.endOfFileToken)},[240]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.declarationList)},[258]:function(t,r,i){return fi(r,i,t.declarations)},[241]:function(t,r,i){return Mt(r,t.expression)},[242]:function(t,r,i){return Mt(r,t.expression)||Mt(r,t.thenStatement)||Mt(r,t.elseStatement)},[243]:function(t,r,i){return Mt(r,t.statement)||Mt(r,t.expression)},[244]:function(t,r,i){return Mt(r,t.expression)||Mt(r,t.statement)},[245]:function(t,r,i){return Mt(r,t.initializer)||Mt(r,t.condition)||Mt(r,t.incrementor)||Mt(r,t.statement)},[246]:function(t,r,i){return Mt(r,t.initializer)||Mt(r,t.expression)||Mt(r,t.statement)},[247]:function(t,r,i){return Mt(r,t.awaitModifier)||Mt(r,t.initializer)||Mt(r,t.expression)||Mt(r,t.statement)},[248]:Lde,[249]:Lde,[250]:function(t,r,i){return Mt(r,t.expression)},[251]:function(t,r,i){return Mt(r,t.expression)||Mt(r,t.statement)},[252]:function(t,r,i){return Mt(r,t.expression)||Mt(r,t.caseBlock)},[266]:function(t,r,i){return fi(r,i,t.clauses)},[292]:function(t,r,i){return Mt(r,t.expression)||fi(r,i,t.statements)},[293]:function(t,r,i){return fi(r,i,t.statements)},[253]:function(t,r,i){return Mt(r,t.label)||Mt(r,t.statement)},[254]:function(t,r,i){return Mt(r,t.expression)},[255]:function(t,r,i){return Mt(r,t.tryBlock)||Mt(r,t.catchClause)||Mt(r,t.finallyBlock)},[295]:function(t,r,i){return Mt(r,t.variableDeclaration)||Mt(r,t.block)},[167]:function(t,r,i){return Mt(r,t.expression)},[260]:kde,[228]:kde,[261]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||fi(r,i,t.typeParameters)||fi(r,i,t.heritageClauses)||fi(r,i,t.members)},[262]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||fi(r,i,t.typeParameters)||Mt(r,t.type)},[263]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||fi(r,i,t.members)},[302]:function(t,r,i){return Mt(r,t.name)||Mt(r,t.initializer)},[264]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||Mt(r,t.body)},[268]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)||Mt(r,t.moduleReference)},[269]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.importClause)||Mt(r,t.moduleSpecifier)||Mt(r,t.assertClause)},[270]:function(t,r,i){return Mt(r,t.name)||Mt(r,t.namedBindings)},[296]:function(t,r,i){return fi(r,i,t.elements)},[297]:function(t,r,i){return Mt(r,t.name)||Mt(r,t.value)},[267]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.name)},[271]:function(t,r,i){return Mt(r,t.name)},[277]:function(t,r,i){return Mt(r,t.name)},[272]:Dde,[276]:Dde,[275]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.exportClause)||Mt(r,t.moduleSpecifier)||Mt(r,t.assertClause)},[273]:wde,[278]:wde,[274]:function(t,r,i){return fi(r,i,t.modifiers)||Mt(r,t.expression)},[225]:function(t,r,i){return Mt(r,t.head)||fi(r,i,t.templateSpans)},[236]:function(t,r,i){return Mt(r,t.expression)||Mt(r,t.literal)},[200]:function(t,r,i){return Mt(r,t.head)||fi(r,i,t.templateSpans)},[201]:function(t,r,i){return Mt(r,t.type)||Mt(r,t.literal)},[164]:function(t,r,i){return Mt(r,t.expression)},[294]:function(t,r,i){return fi(r,i,t.types)},[230]:function(t,r,i){return Mt(r,t.expression)||fi(r,i,t.typeArguments)},[280]:function(t,r,i){return Mt(r,t.expression)},[279]:function(t,r,i){return fi(r,i,t.modifiers)},[357]:function(t,r,i){return fi(r,i,t.elements)},[281]:function(t,r,i){return Mt(r,t.openingElement)||fi(r,i,t.children)||Mt(r,t.closingElement)},[285]:function(t,r,i){return Mt(r,t.openingFragment)||fi(r,i,t.children)||Mt(r,t.closingFragment)},[282]:Rde,[283]:Rde,[289]:function(t,r,i){return fi(r,i,t.properties)},[288]:function(t,r,i){return Mt(r,t.name)||Mt(r,t.initializer)},[290]:function(t,r,i){return Mt(r,t.expression)},[291]:function(t,r,i){return Mt(r,t.dotDotDotToken)||Mt(r,t.expression)},[284]:function(t,r,i){return Mt(r,t.tagName)},[187]:D2,[188]:D2,[312]:D2,[318]:D2,[317]:D2,[319]:D2,[321]:D2,[320]:function(t,r,i){return fi(r,i,t.parameters)||Mt(r,t.type)},[323]:function(t,r,i){return(typeof t.comment==\"string\"?void 0:fi(r,i,t.comment))||fi(r,i,t.tags)},[350]:function(t,r,i){return Mt(r,t.tagName)||Mt(r,t.name)||(typeof t.comment==\"string\"?void 0:fi(r,i,t.comment))},[313]:function(t,r,i){return Mt(r,t.name)},[314]:function(t,r,i){return Mt(r,t.left)||Mt(r,t.right)},[344]:Ode,[351]:Ode,[333]:function(t,r,i){return Mt(r,t.tagName)||(typeof t.comment==\"string\"?void 0:fi(r,i,t.comment))},[332]:function(t,r,i){return Mt(r,t.tagName)||Mt(r,t.class)||(typeof t.comment==\"string\"?void 0:fi(r,i,t.comment))},[331]:function(t,r,i){return Mt(r,t.tagName)||Mt(r,t.class)||(typeof t.comment==\"string\"?void 0:fi(r,i,t.comment))},[348]:function(t,r,i){return Mt(r,t.tagName)||Mt(r,t.constraint)||fi(r,i,t.typeParameters)||(typeof t.comment==\"string\"?void 0:fi(r,i,t.comment))},[349]:function(t,r,i){return Mt(r,t.tagName)||(t.typeExpression&&t.typeExpression.kind===312?Mt(r,t.typeExpression)||Mt(r,t.fullName)||(typeof t.comment==\"string\"?void 0:fi(r,i,t.comment)):Mt(r,t.fullName)||Mt(r,t.typeExpression)||(typeof t.comment==\"string\"?void 0:fi(r,i,t.comment)))},[341]:function(t,r,i){return Mt(r,t.tagName)||Mt(r,t.fullName)||Mt(r,t.typeExpression)||(typeof t.comment==\"string\"?void 0:fi(r,i,t.comment))},[345]:w2,[347]:w2,[346]:w2,[343]:w2,[353]:w2,[352]:w2,[342]:w2,[326]:function(t,r,i){return mn(t.typeParameters,r)||mn(t.parameters,r)||Mt(r,t.type)},[327]:lJ,[328]:lJ,[329]:lJ,[325]:function(t,r,i){return mn(t.jsDocPropertyTags,r)},[330]:zS,[335]:zS,[336]:zS,[337]:zS,[338]:zS,[339]:zS,[334]:zS,[340]:zS,[356]:WOe},(e=>{var t=kg(99,!0),r=20480,i,o,s,l,f;function d(V){return We++,V}var g={createBaseSourceFileNode:V=>d(new f(V,0,0)),createBaseIdentifierNode:V=>d(new s(V,0,0)),createBasePrivateIdentifierNode:V=>d(new l(V,0,0)),createBaseTokenNode:V=>d(new o(V,0,0)),createBaseNode:V=>d(new i(V,0,0))},m=$R(11,g),{createNodeArray:v,createNumericLiteral:S,createStringLiteral:x,createLiteralLikeNode:A,createIdentifier:w,createPrivateIdentifier:C,createToken:P,createArrayLiteralExpression:F,createObjectLiteralExpression:B,createPropertyAccessExpression:q,createPropertyAccessChain:W,createElementAccessExpression:Y,createElementAccessChain:R,createCallExpression:ie,createCallChain:Q,createNewExpression:fe,createParenthesizedExpression:Z,createBlock:U,createVariableStatement:re,createExpressionStatement:le,createIfStatement:_e,createWhileStatement:ge,createForStatement:X,createForOfStatement:Ve,createVariableDeclaration:we,createVariableDeclarationList:ke}=m,Pe,Ce,Ie,Be,Ne,Le,Ye,_t,ct,Rt,We,qe,zt,Qt,tn,kn,_n=!0,Gt=!1;function $n(V,me,Ue,ut,Lt=!1,dn,Er){var ii;if(dn=h4(V,dn),dn===6){let di=Ni(V,me,Ue,ut,Lt);return MO(di,(ii=di.statements[0])==null?void 0:ii.expression,di.parseDiagnostics,!1,void 0,void 0),di.referencedFiles=Je,di.typeReferenceDirectives=Je,di.libReferenceDirectives=Je,di.amdDependencies=Je,di.hasNoDefaultLib=!1,di.pragmas=b8,di}Pi(V,me,Ue,ut,dn);let li=pt(Ue,Lt,dn,Er||Pde);return gr(),li}e.parseSourceFile=$n;function ui(V,me){Pi(\"\",V,me,void 0,1),Qe();let Ue=Io(!0),ut=j()===1&&!Ye.length;return gr(),ut?Ue:void 0}e.parseIsolatedEntityName=ui;function Ni(V,me,Ue=2,ut,Lt=!1){Pi(V,me,Ue,ut,6),Ce=kn,Qe();let dn=z(),Er,ii;if(j()===1)Er=As([],dn,dn),ii=Pc();else{let ma;for(;j()!==1;){let Oo;switch(j()){case 22:Oo=ay();break;case 110:case 95:case 104:Oo=Pc();break;case 40:Nr(()=>Qe()===8&&Qe()!==58)?Oo=S1():Oo=wc();break;case 8:case 10:if(Nr(()=>Qe()!==58)){Oo=oa();break}default:Oo=wc();break}ma&&ba(ma)?ma.push(Oo):ma?ma=[ma,Oo]:(ma=Oo,j()!==1&&rt(_.Unexpected_token))}let is=ba(ma)?jt(F(ma),dn):L.checkDefined(ma),ao=le(is);jt(ao,dn),Er=As([ao],dn),ii=Ll(1,_.Unexpected_token)}let li=hi(V,2,6,!1,Er,ii,Ce,Ba);Lt&&Kn(li),li.nodeCount=We,li.identifierCount=zt,li.identifiers=qe,li.parseDiagnostics=bS(Ye,li),_t&&(li.jsDocDiagnostics=bS(_t,li));let di=li;return gr(),di}e.parseJsonText=Ni;function Pi(V,me,Ue,ut,Lt){switch(i=ml.getNodeConstructor(),o=ml.getTokenConstructor(),s=ml.getIdentifierConstructor(),l=ml.getPrivateIdentifierConstructor(),f=ml.getSourceFileConstructor(),Pe=So(V),Ie=me,Be=Ue,ct=ut,Ne=Lt,Le=OR(Lt),Ye=[],Qt=0,qe=new Map,zt=0,We=0,Ce=0,_n=!0,Ne){case 1:case 2:kn=262144;break;case 6:kn=67371008;break;default:kn=0;break}Gt=!1,t.setText(Ie),t.setOnError(pe),t.setScriptTarget(Be),t.setLanguageVariant(Le)}function gr(){t.clearCommentDirectives(),t.setText(\"\"),t.setOnError(void 0),Ie=void 0,Be=void 0,ct=void 0,Ne=void 0,Le=void 0,Ce=0,Ye=void 0,_t=void 0,Qt=0,qe=void 0,tn=void 0,_n=!0}function pt(V,me,Ue,ut){let Lt=Fu(Pe);Lt&&(kn|=16777216),Ce=kn,Qe();let dn=ee(0,af);L.assert(j()===1);let Er=pn(Pc()),ii=hi(Pe,V,Ue,Lt,dn,Er,Ce,ut);return dJ(ii,Ie),fJ(ii,li),ii.commentDirectives=t.getCommentDirectives(),ii.nodeCount=We,ii.identifierCount=zt,ii.identifiers=qe,ii.parseDiagnostics=bS(Ye,ii),_t&&(ii.jsDocDiagnostics=bS(_t,ii)),me&&Kn(ii),ii;function li(di,ma,is){Ye.push(n2(Pe,di,ma,is))}}function nn(V,me){return me?pn(V):V}let Dt=!1;function pn(V){L.assert(!V.jsDoc);let me=Zi(EH(V,Ie),Ue=>Fx.parseJSDocComment(V,Ue.pos,Ue.end-Ue.pos));return me.length&&(V.jsDoc=me),Dt&&(Dt=!1,V.flags|=268435456),V}function An(V){let me=ct,Ue=D3.createSyntaxCursor(V);ct={currentNode:ma};let ut=[],Lt=Ye;Ye=[];let dn=0,Er=li(V.statements,0);for(;Er!==-1;){let is=V.statements[dn],ao=V.statements[Er];si(ut,V.statements,dn,Er),dn=di(V.statements,Er);let Oo=Yc(Lt,tp=>tp.start>=is.pos),id=Oo>=0?Yc(Lt,tp=>tp.start>=ao.pos,Oo):-1;Oo>=0&&si(Ye,Lt,Oo,id>=0?id:void 0),xi(()=>{let tp=kn;for(kn|=32768,t.setTextPos(ao.pos),Qe();j()!==1;){let Op=t.getStartPos(),cg=Ze(0,af);if(ut.push(cg),Op===t.getStartPos()&&Qe(),dn>=0){let Xf=V.statements[dn];if(cg.end===Xf.pos)break;cg.end>Xf.pos&&(dn=di(V.statements,dn+1))}}kn=tp},2),Er=dn>=0?li(V.statements,dn):-1}if(dn>=0){let is=V.statements[dn];si(ut,V.statements,dn);let ao=Yc(Lt,Oo=>Oo.start>=is.pos);ao>=0&&si(Ye,Lt,ao)}return ct=me,m.updateSourceFile(V,it(v(ut),V.statements));function ii(is){return!(is.flags&32768)&&!!(is.transformFlags&67108864)}function li(is,ao){for(let Oo=ao;Oo<is.length;Oo++)if(ii(is[Oo]))return Oo;return-1}function di(is,ao){for(let Oo=ao;Oo<is.length;Oo++)if(!ii(is[Oo]))return Oo;return-1}function ma(is){let ao=Ue.currentNode(is);return _n&&ao&&ii(ao)&&(ao.intersectsChange=!0),ao}}function Kn(V){Zy(V,!0)}e.fixupParentReferences=Kn;function hi(V,me,Ue,ut,Lt,dn,Er,ii){let li=m.createSourceFile(Lt,dn,Er);return sL(li,0,Ie.length),di(li),!ut&&Lc(li)&&li.transformFlags&67108864&&(li=An(li),di(li)),li;function di(ma){ma.text=Ie,ma.bindDiagnostics=[],ma.bindSuggestionDiagnostics=void 0,ma.languageVersion=me,ma.fileName=V,ma.languageVariant=OR(Ue),ma.isDeclarationFile=ut,ma.scriptKind=Ue,ii(ma),ma.setExternalModuleIndicator=ii}}function ri(V,me){V?kn|=me:kn&=~me}function gn(V){ri(V,4096)}function Ht(V){ri(V,8192)}function En(V){ri(V,16384)}function dr(V){ri(V,32768)}function Cr(V,me){let Ue=V&kn;if(Ue){ri(!1,Ue);let ut=me();return ri(!0,Ue),ut}return me()}function Se(V,me){let Ue=V&~kn;if(Ue){ri(!0,Ue);let ut=me();return ri(!1,Ue),ut}return me()}function at(V){return Cr(4096,V)}function Tt(V){return Se(4096,V)}function ve(V){return Cr(65536,V)}function nt(V){return Se(65536,V)}function ce(V){return Se(8192,V)}function $(V){return Se(16384,V)}function ue(V){return Se(32768,V)}function G(V){return Cr(32768,V)}function Oe(V){return Se(40960,V)}function je(V){return Cr(40960,V)}function Ge(V){return(kn&V)!==0}function kt(){return Ge(8192)}function Kt(){return Ge(4096)}function ln(){return Ge(65536)}function ir(){return Ge(16384)}function ae(){return Ge(32768)}function rt(V,me){return Ke(t.getTokenPos(),t.getTextPos(),V,me)}function Ot(V,me,Ue,ut){let Lt=Os(Ye),dn;return(!Lt||V!==Lt.start)&&(dn=n2(Pe,V,me,Ue,ut),Ye.push(dn)),Gt=!0,dn}function Ke(V,me,Ue,ut){return Ot(V,me-V,Ue,ut)}function oe(V,me,Ue){Ke(V.pos,V.end,me,Ue)}function pe(V,me){Ot(t.getTextPos(),me,V)}function z(){return t.getStartPos()}function Te(){return t.hasPrecedingJSDocComment()}function j(){return Rt}function yt(){return Rt=t.scan()}function lt(V){return Qe(),V()}function Qe(){return Xu(Rt)&&(t.hasUnicodeEscape()||t.hasExtendedUnicodeEscape())&&Ke(t.getTokenPos(),t.getTextPos(),_.Keywords_cannot_contain_escape_characters),yt()}function Vt(){return Rt=t.scanJsDocToken()}function Hn(){return Rt=t.reScanGreaterToken()}function jr(){return Rt=t.reScanSlashToken()}function ei(V){return Rt=t.reScanTemplateToken(V)}function Kr(){return Rt=t.reScanTemplateHeadOrNoSubstitutionTemplate()}function Si(){return Rt=t.reScanLessThanToken()}function Ja(){return Rt=t.reScanHashToken()}function Za(){return Rt=t.scanJsxIdentifier()}function Fa(){return Rt=t.scanJsxToken()}function Hi(){return Rt=t.scanJsxAttributeValue()}function xi(V,me){let Ue=Rt,ut=Ye.length,Lt=Gt,dn=kn,Er=me!==0?t.lookAhead(V):t.tryScan(V);return L.assert(dn===kn),(!Er||me!==0)&&(Rt=Ue,me!==2&&(Ye.length=ut),Gt=Lt),Er}function Nr(V){return xi(V,1)}function Fo(V){return xi(V,0)}function Qr(){return j()===79?!0:j()>116}function Wi(){return j()===79?!0:j()===125&&kt()||j()===133&&ae()?!1:j()>116}function yn(V,me,Ue=!0){return j()===V?(Ue&&Qe(),!0):(me?rt(me):rt(_._0_expected,Xa(V)),!1)}let Ki=Object.keys(Tw).filter(V=>V.length>2);function kc(V){var me;if(MT(V)){Ke(xo(Ie,V.template.pos),V.template.end,_.Module_declaration_names_may_only_use_or_quoted_strings);return}let Ue=Re(V)?vr(V):void 0;if(!Ue||!r_(Ue,Be)){rt(_._0_expected,Xa(26));return}let ut=xo(Ie,V.pos);switch(Ue){case\"const\":case\"let\":case\"var\":Ke(ut,V.end,_.Variable_declaration_not_allowed_at_this_location);return;case\"declare\":return;case\"interface\":Ps(_.Interface_name_cannot_be_0,_.Interface_must_be_given_a_name,18);return;case\"is\":Ke(ut,t.getTextPos(),_.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods);return;case\"module\":case\"namespace\":Ps(_.Namespace_name_cannot_be_0,_.Namespace_must_be_given_a_name,18);return;case\"type\":Ps(_.Type_alias_name_cannot_be_0,_.Type_alias_must_be_given_a_name,63);return}let Lt=(me=QC(Ue,Ki,dn=>dn))!=null?me:mc(Ue);if(Lt){Ke(ut,V.end,_.Unknown_keyword_or_identifier_Did_you_mean_0,Lt);return}j()!==0&&Ke(ut,V.end,_.Unexpected_keyword_or_identifier)}function Ps(V,me,Ue){j()===Ue?rt(me):rt(V,t.getTokenValue())}function mc(V){for(let me of Ki)if(V.length>me.length+2&&na(V,me))return`${me} ${V.slice(me.length)}`}function xc(V,me,Ue){if(j()===59&&!t.hasPrecedingLineBreak()){rt(_.Decorators_must_precede_the_name_and_all_keywords_of_property_declarations);return}if(j()===20){rt(_.Cannot_start_a_function_call_in_a_type_annotation),Qe();return}if(me&&!ss()){Ue?rt(_._0_expected,Xa(26)):rt(_.Expected_for_property_initializer);return}if(!qs()){if(Ue){rt(_._0_expected,Xa(26));return}kc(V)}}function hc(V){return j()===V?(Vt(),!0):(rt(_._0_expected,Xa(V)),!1)}function ro(V,me,Ue,ut){if(j()===me){Qe();return}let Lt=rt(_._0_expected,Xa(me));!Ue||Lt&&Ao(Lt,n2(Pe,ut,1,_.The_parser_expected_to_find_a_1_to_match_the_0_token_here,Xa(V),Xa(me)))}function aa(V){return j()===V?(Qe(),!0):!1}function Co(V){if(j()===V)return Pc()}function gc(V){if(j()===V)return bl()}function Ll(V,me,Ue){return Co(V)||yc(V,!1,me||_._0_expected,Ue||Xa(V))}function md(V){return gc(V)||yc(V,!1,_._0_expected,Xa(V))}function Pc(){let V=z(),me=j();return Qe(),jt(P(me),V)}function bl(){let V=z(),me=j();return Vt(),jt(P(me),V)}function ss(){return j()===26?!0:j()===19||j()===1||t.hasPrecedingLineBreak()}function qs(){return ss()?(j()===26&&Qe(),!0):!1}function Rs(){return qs()||yn(26)}function As(V,me,Ue,ut){let Lt=v(V,ut);return om(Lt,me,Ue??t.getStartPos()),Lt}function jt(V,me,Ue){return om(V,me,Ue??t.getStartPos()),kn&&(V.flags|=kn),Gt&&(Gt=!1,V.flags|=131072),V}function yc(V,me,Ue,ut){me?Ot(t.getStartPos(),0,Ue,ut):Ue&&rt(Ue,ut);let Lt=z(),dn=V===79?w(\"\",void 0):Hy(V)?m.createTemplateLiteralLikeNode(V,\"\",\"\",void 0):V===8?S(\"\",void 0):V===10?x(\"\",void 0):V===279?m.createMissingDeclaration():P(V);return jt(dn,Lt)}function Ql(V){let me=qe.get(V);return me===void 0&&qe.set(V,me=V),me}function yu(V,me,Ue){if(V){zt++;let ii=z(),li=j(),di=Ql(t.getTokenValue()),ma=t.hasExtendedUnicodeEscape();return yt(),jt(w(di,li,ma),ii)}if(j()===80)return rt(Ue||_.Private_identifiers_are_not_allowed_outside_class_bodies),yu(!0);if(j()===0&&t.tryScan(()=>t.reScanInvalidIdentifier()===79))return yu(!0);zt++;let ut=j()===1,Lt=t.isReservedWord(),dn=t.getTokenText(),Er=Lt?_.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here:_.Identifier_expected;return yc(79,ut,me||Er,dn)}function se(V){return yu(Qr(),void 0,V)}function ht(V,me){return yu(Wi(),V,me)}function wt(V){return yu(Su(j()),V)}function K(){return Su(j())||j()===10||j()===8}function Xe(){return Su(j())||j()===10}function ft(V){if(j()===10||j()===8){let me=oa();return me.text=Ql(me.text),me}return V&&j()===22?pr():j()===80?yr():wt()}function Yt(){return ft(!0)}function pr(){let V=z();yn(22);let me=at(Ml);return yn(23),jt(m.createComputedPropertyName(me),V)}function yr(){let V=z(),me=C(Ql(t.getTokenValue()));return Qe(),jt(me,V)}function ta(V){return j()===V&&Fo(Ka)}function Go(){return Qe(),t.hasPrecedingLineBreak()?!1:Uc()}function Ka(){switch(j()){case 85:return Qe()===92;case 93:return Qe(),j()===88?Nr(Gu):j()===154?Nr(ka):vo();case 88:return Gu();case 124:case 137:case 151:return Qe(),Uc();default:return Go()}}function vo(){return j()===59||j()!==41&&j()!==128&&j()!==18&&Uc()}function ka(){return Qe(),vo()}function Hs(){return Rg(j())&&Fo(Ka)}function Uc(){return j()===22||j()===18||j()===41||j()===25||K()}function Gu(){return Qe(),j()===84||j()===98||j()===118||j()===59||j()===126&&Nr(Em)||j()===132&&Nr(Jb)}function $o(V,me){if(At(V))return!0;switch(V){case 0:case 1:case 3:return!(j()===26&&me)&&I1();case 2:return j()===82||j()===88;case 4:return Nr(dE);case 5:return Nr(rd)||j()===26&&!me;case 6:return j()===22||K();case 12:switch(j()){case 22:case 41:case 25:case 24:return!0;default:return K()}case 18:return K();case 9:return j()===22||j()===25||K();case 24:return Xe();case 7:return j()===18?Nr(jo):me?Wi()&&!tf():Pb()&&!tf();case 8:return IE();case 10:return j()===27||j()===25||IE();case 19:return j()===101||j()===85||Wi();case 15:switch(j()){case 27:case 24:return!0}case 11:return j()===25||A_();case 16:return Cb(!1);case 17:return Cb(!0);case 20:case 21:return j()===27||qh();case 22:return lh();case 23:return Su(j());case 13:return Su(j())||j()===18;case 14:return!0}return L.fail(\"Non-exhaustive case in 'isListElement'.\")}function jo(){if(L.assert(j()===18),Qe()===19){let V=Qe();return V===27||V===18||V===94||V===117}return!0}function Ws(){return Qe(),Wi()}function hd(){return Qe(),Su(j())}function vc(){return Qe(),moe(j())}function tf(){return j()===117||j()===94?Nr(ye):!1}function ye(){return Qe(),A_()}function Et(){return Qe(),qh()}function bn(V){if(j()===1)return!0;switch(V){case 1:case 2:case 4:case 5:case 6:case 12:case 9:case 23:case 24:return j()===19;case 3:return j()===19||j()===82||j()===88;case 7:return j()===18||j()===94||j()===117;case 8:return Ri();case 19:return j()===31||j()===20||j()===18||j()===94||j()===117;case 11:return j()===21||j()===26;case 15:case 21:case 10:return j()===23;case 17:case 16:case 18:return j()===21||j()===23;case 20:return j()!==27;case 22:return j()===18||j()===19;case 13:return j()===31||j()===43;case 14:return j()===29&&Nr(Wa);default:return!1}}function Ri(){return!!(ss()||E1(j())||j()===38)}function io(){for(let V=0;V<25;V++)if(Qt&1<<V&&($o(V,!0)||bn(V)))return!0;return!1}function ee(V,me){let Ue=Qt;Qt|=1<<V;let ut=[],Lt=z();for(;!bn(V);){if($o(V,!1)){ut.push(Ze(V,me));continue}if(Bu(V))break}return Qt=Ue,As(ut,Lt)}function Ze(V,me){let Ue=At(V);return Ue?xt(Ue):me()}function At(V,me){var Ue;if(!ct||!qt(V)||Gt)return;let ut=ct.currentNode(me??t.getStartPos());if(!(rc(ut)||ut.intersectsChange||Bw(ut)||(ut.flags&50720768)!==kn)&&!!Ln(ut,V))return uR(ut)&&((Ue=ut.jsDoc)==null?void 0:Ue.jsDocCache)&&(ut.jsDoc.jsDocCache=void 0),ut}function xt(V){return t.setTextPos(V.end),Qe(),V}function qt(V){switch(V){case 5:case 2:case 0:case 1:case 3:case 6:case 4:case 8:case 17:case 16:return!0}return!1}function Ln(V,me){switch(me){case 5:return mr(V);case 2:return Vr(V);case 0:case 1:case 3:return gi(V);case 6:return Ea(V);case 4:return bo(V);case 8:return Qo(V);case 17:case 16:return Cs(V)}return!1}function mr(V){if(V)switch(V.kind){case 173:case 178:case 174:case 175:case 169:case 237:return!0;case 171:let me=V;return!(me.name.kind===79&&me.name.escapedText===\"constructor\")}return!1}function Vr(V){if(V)switch(V.kind){case 292:case 293:return!0}return!1}function gi(V){if(V)switch(V.kind){case 259:case 240:case 238:case 242:case 241:case 254:case 250:case 252:case 249:case 248:case 246:case 247:case 245:case 244:case 251:case 239:case 255:case 253:case 243:case 256:case 269:case 268:case 275:case 274:case 264:case 260:case 261:case 263:case 262:return!0}return!1}function Ea(V){return V.kind===302}function bo(V){if(V)switch(V.kind){case 177:case 170:case 178:case 168:case 176:return!0}return!1}function Qo(V){return V.kind!==257?!1:V.initializer===void 0}function Cs(V){return V.kind!==166?!1:V.initializer===void 0}function Bu(V){return Pd(V),io()?!0:(Qe(),!1)}function Pd(V){switch(V){case 0:return j()===88?rt(_._0_expected,Xa(93)):rt(_.Declaration_or_statement_expected);case 1:return rt(_.Declaration_or_statement_expected);case 2:return rt(_.case_or_default_expected);case 3:return rt(_.Statement_expected);case 18:case 4:return rt(_.Property_or_signature_expected);case 5:return rt(_.Unexpected_token_A_constructor_method_accessor_or_property_was_expected);case 6:return rt(_.Enum_member_expected);case 7:return rt(_.Expression_expected);case 8:return Xu(j())?rt(_._0_is_not_allowed_as_a_variable_declaration_name,Xa(j())):rt(_.Variable_declaration_expected);case 9:return rt(_.Property_destructuring_pattern_expected);case 10:return rt(_.Array_element_destructuring_pattern_expected);case 11:return rt(_.Argument_expression_expected);case 12:return rt(_.Property_assignment_expected);case 15:return rt(_.Expression_or_comma_expected);case 17:return rt(_.Parameter_declaration_expected);case 16:return Xu(j())?rt(_._0_is_not_allowed_as_a_parameter_name,Xa(j())):rt(_.Parameter_declaration_expected);case 19:return rt(_.Type_parameter_declaration_expected);case 20:return rt(_.Type_argument_expected);case 21:return rt(_.Type_expected);case 22:return rt(_.Unexpected_token_expected);case 23:return rt(_.Identifier_expected);case 13:return rt(_.Identifier_expected);case 14:return rt(_.Identifier_expected);case 24:return rt(_.Identifier_or_string_literal_expected);case 25:return L.fail(\"ParsingContext.Count used as a context\");default:L.assertNever(V)}}function Dc(V,me,Ue){let ut=Qt;Qt|=1<<V;let Lt=[],dn=z(),Er=-1;for(;;){if($o(V,!1)){let ii=t.getStartPos(),li=Ze(V,me);if(!li){Qt=ut;return}if(Lt.push(li),Er=t.getTokenPos(),aa(27))continue;if(Er=-1,bn(V))break;yn(27,gd(V)),Ue&&j()===26&&!t.hasPrecedingLineBreak()&&Qe(),ii===t.getStartPos()&&Qe();continue}if(bn(V)||Bu(V))break}return Qt=ut,As(Lt,dn,void 0,Er>=0)}function gd(V){return V===6?_.An_enum_member_name_must_be_followed_by_a_or:void 0}function Zl(){let V=As([],z());return V.isMissingList=!0,V}function Md(V){return!!V.isMissingList}function Wf(V,me,Ue,ut){if(yn(Ue)){let Lt=Dc(V,me);return yn(ut),Lt}return Zl()}function Io(V,me){let Ue=z(),ut=V?wt(me):ht(me);for(;aa(24)&&j()!==29;)ut=jt(m.createQualifiedName(ut,Fd(V,!1)),Ue);return ut}function zf(V,me){return jt(m.createQualifiedName(V,me),V.pos)}function Fd(V,me){if(t.hasPrecedingLineBreak()&&Su(j())&&Nr(Vu))return yc(79,!0,_.Identifier_expected);if(j()===80){let Ue=yr();return me?Ue:yc(79,!0,_.Identifier_expected)}return V?wt():ht()}function b_(V){let me=z(),Ue=[],ut;do ut=la(V),Ue.push(ut);while(ut.literal.kind===16);return As(Ue,me)}function X_(V){let me=z();return jt(m.createTemplateExpression(be(V),b_(V)),me)}function M(){let V=z();return jt(m.createTemplateLiteralType(be(!1),He()),V)}function He(){let V=z(),me=[],Ue;do Ue=Nt(),me.push(Ue);while(Ue.literal.kind===16);return As(me,V)}function Nt(){let V=z();return jt(m.createTemplateLiteralTypeSpan(Kc(),Pn(!1)),V)}function Pn(V){return j()===19?(ei(V),De()):Ll(17,_._0_expected,Xa(19))}function la(V){let me=z();return jt(m.createTemplateSpan(at(Ml),Pn(V)),me)}function oa(){return St(j())}function be(V){V&&Kr();let me=St(j());return L.assert(me.kind===15,\"Template head has wrong token kind\"),me}function De(){let V=St(j());return L.assert(V.kind===16||V.kind===17,\"Template fragment has wrong token kind\"),V}function mt(V){let me=V===14||V===17,Ue=t.getTokenText();return Ue.substring(1,Ue.length-(t.isUnterminated()?0:me?1:2))}function St(V){let me=z(),Ue=Hy(V)?m.createTemplateLiteralLikeNode(V,t.getTokenValue(),mt(V),t.getTokenFlags()&2048):V===8?S(t.getTokenValue(),t.getNumericLiteralFlags()):V===10?x(t.getTokenValue(),void 0,t.hasExtendedUnicodeEscape()):yI(V)?A(V,t.getTokenValue()):L.fail();return t.hasExtendedUnicodeEscape()&&(Ue.hasExtendedUnicodeEscape=!0),t.isUnterminated()&&(Ue.isUnterminated=!0),Qe(),jt(Ue,me)}function Zt(){return Io(!0,_.Type_expected)}function rn(){if(!t.hasPrecedingLineBreak()&&Si()===29)return Wf(20,Kc,29,31)}function sn(){let V=z();return jt(m.createTypeReferenceNode(Zt(),rn()),V)}function Dn(V){switch(V.kind){case 180:return rc(V.typeName);case 181:case 182:{let{parameters:me,type:Ue}=V;return Md(me)||Dn(Ue)}case 193:return Dn(V.type);default:return!1}}function kr(V){return Qe(),jt(m.createTypePredicateNode(void 0,V,Kc()),V.pos)}function ki(){let V=z();return Qe(),jt(m.createThisTypeNode(),V)}function Vn(){let V=z();return Qe(),jt(m.createJSDocAllType(),V)}function $t(){let V=z();return Qe(),jt(m.createJSDocNonNullableType(wb(),!1),V)}function Xn(){let V=z();return Qe(),j()===27||j()===19||j()===21||j()===31||j()===63||j()===51?jt(m.createJSDocUnknownType(),V):jt(m.createJSDocNullableType(Kc(),!1),V)}function ra(){let V=z(),me=Te();if(Nr(qr)){Qe();let Ue=Y_(36),ut=T_(58,!1);return nn(jt(m.createJSDocFunctionType(Ue,ut),V),me)}return jt(m.createTypeReferenceNode(wt(),void 0),V)}function Is(){let V=z(),me;return(j()===108||j()===103)&&(me=wt(),yn(58)),jt(m.createParameterDeclaration(void 0,void 0,me,void 0,Mc(),void 0),V)}function Mc(){t.setInJSDocType(!0);let V=z();if(aa(142)){let ut=m.createJSDocNamepathType(void 0);e:for(;;)switch(j()){case 19:case 1:case 27:case 5:break e;default:Vt()}return t.setInJSDocType(!1),jt(ut,V)}let me=aa(25),Ue=wo();return t.setInJSDocType(!1),me&&(Ue=jt(m.createJSDocVariadicType(Ue),V)),j()===63?(Qe(),jt(m.createJSDocOptionalType(Ue),V)):Ue}function mm(){let V=z();yn(112);let me=Io(!0),Ue=t.hasPrecedingLineBreak()?void 0:bd();return jt(m.createTypeQueryNode(me,Ue),V)}function Hh(){let V=z(),me=ls(!1,!0),Ue=ht(),ut,Lt;aa(94)&&(qh()||!A_()?ut=Kc():Lt=$_());let dn=aa(63)?Kc():void 0,Er=m.createTypeParameterDeclaration(me,Ue,ut,dn);return Er.expression=Lt,jt(Er,V)}function E_(){if(j()===29)return Wf(19,Hh,29,31)}function Cb(V){return j()===25||IE()||Rg(j())||j()===59||qh(!V)}function mv(V){let me=cy(_.Private_identifiers_cannot_be_used_as_parameters);return Gw(me)===0&&!vt(V)&&Rg(j())&&Qe(),me}function yx(){return Qr()||j()===22||j()===18}function p1(V){return Wh(V)}function vx(V){return Wh(V,!1)}function Wh(V,me=!0){let Ue=z(),ut=Te(),Lt=V?ue(()=>ls(!0)):G(()=>ls(!0));if(j()===108){let li=m.createParameterDeclaration(Lt,void 0,yu(!0),void 0,th(),void 0),di=Sl(Lt);return di&&oe(di,_.Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters),nn(jt(li,Ue),ut)}let dn=_n;_n=!1;let Er=Co(25);if(!me&&!yx())return;let ii=nn(jt(m.createParameterDeclaration(Lt,Er,mv(Lt),Co(57),th(),Yh()),Ue),ut);return _n=dn,ii}function T_(V,me){if(hv(V,me))return ve(wo)}function hv(V,me){return V===38?(yn(V),!0):aa(58)?!0:me&&j()===38?(rt(_._0_expected,Xa(58)),Qe(),!0):!1}function eh(V,me){let Ue=kt(),ut=ae();Ht(!!(V&1)),dr(!!(V&2));let Lt=V&32?Dc(17,Is):Dc(16,()=>me?p1(ut):vx(ut));return Ht(Ue),dr(ut),Lt}function Y_(V){if(!yn(20))return Zl();let me=eh(V,!0);return yn(21),me}function gv(){aa(27)||Rs()}function lE(V){let me=z(),Ue=Te();V===177&&yn(103);let ut=E_(),Lt=Y_(4),dn=T_(58,!0);gv();let Er=V===176?m.createCallSignature(ut,Lt,dn):m.createConstructSignature(ut,Lt,dn);return nn(jt(Er,me),Ue)}function Ib(){return j()===22&&Nr(zh)}function zh(){if(Qe(),j()===25||j()===23)return!0;if(Rg(j())){if(Qe(),Wi())return!0}else if(Wi())Qe();else return!1;return j()===58||j()===27?!0:j()!==57?!1:(Qe(),j()===58||j()===27||j()===23)}function m1(V,me,Ue){let ut=Wf(16,()=>p1(!1),22,23),Lt=th();gv();let dn=m.createIndexSignature(Ue,ut,Lt);return nn(jt(dn,V),me)}function uE(V,me,Ue){let ut=Yt(),Lt=Co(57),dn;if(j()===20||j()===29){let Er=E_(),ii=Y_(4),li=T_(58,!0);dn=m.createMethodSignature(Ue,ut,Lt,Er,ii,li)}else{let Er=th();dn=m.createPropertySignature(Ue,ut,Lt,Er),j()===63&&(dn.initializer=Yh())}return gv(),nn(jt(dn,V),me)}function dE(){if(j()===20||j()===29||j()===137||j()===151)return!0;let V=!1;for(;Rg(j());)V=!0,Qe();return j()===22?!0:(K()&&(V=!0,Qe()),V?j()===20||j()===29||j()===57||j()===58||j()===27||ss():!1)}function fE(){if(j()===20||j()===29)return lE(176);if(j()===103&&Nr(yv))return lE(177);let V=z(),me=Te(),Ue=ls(!1);return ta(137)?Tm(V,me,Ue,174,4):ta(151)?Tm(V,me,Ue,175,4):Ib()?m1(V,me,Ue):uE(V,me,Ue)}function yv(){return Qe(),j()===20||j()===29}function bx(){return Qe()===24}function _E(){switch(Qe()){case 20:case 29:case 24:return!0}return!1}function pE(){let V=z();return jt(m.createTypeLiteralNode(vv()),V)}function vv(){let V;return yn(18)?(V=ee(4,fE),yn(19)):V=Zl(),V}function Lb(){return Qe(),j()===39||j()===40?Qe()===146:(j()===146&&Qe(),j()===22&&Ws()&&Qe()===101)}function bv(){let V=z(),me=wt();yn(101);let Ue=Kc();return jt(m.createTypeParameterDeclaration(void 0,me,Ue,void 0),V)}function h1(){let V=z();yn(18);let me;(j()===146||j()===39||j()===40)&&(me=Pc(),me.kind!==146&&yn(146)),yn(22);let Ue=bv(),ut=aa(128)?Kc():void 0;yn(23);let Lt;(j()===57||j()===39||j()===40)&&(Lt=Pc(),Lt.kind!==57&&yn(57));let dn=th();Rs();let Er=ee(4,fE);return yn(19),jt(m.createMappedTypeNode(me,Ue,ut,Lt,dn,Er),V)}function Jh(){let V=z();if(aa(25))return jt(m.createRestTypeNode(Kc()),V);let me=Kc();if(S2(me)&&me.pos===me.type.pos){let Ue=m.createOptionalTypeNode(me.type);return it(Ue,me),Ue.flags=me.flags,Ue}return me}function Lo(){return Qe()===58||j()===57&&Qe()===58}function mE(){return j()===25?Su(Qe())&&Lo():Su(j())&&Lo()}function cC(){if(Nr(mE)){let V=z(),me=Te(),Ue=Co(25),ut=wt(),Lt=Co(57);yn(58);let dn=Jh(),Er=m.createNamedTupleMember(Ue,ut,Lt,dn);return nn(jt(Er,V),me)}return Jh()}function Zg(){let V=z();return jt(m.createTupleTypeNode(Wf(21,cC,22,23)),V)}function Kh(){let V=z();yn(20);let me=Kc();return yn(21),jt(m.createParenthesizedType(me),V)}function hm(){let V;if(j()===126){let me=z();Qe();let Ue=jt(P(126),me);V=As([Ue],me)}return V}function S_(){let V=z(),me=Te(),Ue=hm(),ut=aa(103);L.assert(!Ue||ut,\"Per isStartOfFunctionOrConstructorType, a function type cannot have modifiers.\");let Lt=E_(),dn=Y_(4),Er=T_(38,!1),ii=ut?m.createConstructorTypeNode(Ue,Lt,dn,Er):m.createFunctionTypeNode(Lt,dn,Er);return nn(jt(ii,V),me)}function Zu(){let V=Pc();return j()===24?void 0:V}function ed(V){let me=z();V&&Qe();let Ue=j()===110||j()===95||j()===104?Pc():St(j());return V&&(Ue=jt(m.createPrefixUnaryExpression(40,Ue),me)),jt(m.createLiteralTypeNode(Ue),me)}function td(){return Qe(),j()===100}function kb(){let V=z(),me=t.getTokenPos();yn(18);let Ue=t.hasPrecedingLineBreak();yn(130),yn(58);let ut=fy(!0);if(!yn(19)){let Lt=Os(Ye);Lt&&Lt.code===_._0_expected.code&&Ao(Lt,n2(Pe,me,1,_.The_parser_expected_to_find_a_1_to_match_the_0_token_here,\"{\",\"}\"))}return jt(m.createImportTypeAssertionContainer(ut,Ue),V)}function Db(){Ce|=2097152;let V=z(),me=aa(112);yn(100),yn(20);let Ue=Kc(),ut;aa(27)&&(ut=kb()),yn(21);let Lt=aa(24)?Zt():void 0,dn=rn();return jt(m.createImportTypeNode(Ue,ut,Lt,dn,me),V)}function Ex(){return Qe(),j()===8||j()===9}function wb(){switch(j()){case 131:case 157:case 152:case 148:case 160:case 153:case 134:case 155:case 144:case 149:return Fo(Zu)||sn();case 66:t.reScanAsteriskEqualsToken();case 41:return Vn();case 60:t.reScanQuestionToken();case 57:return Xn();case 98:return ra();case 53:return $t();case 14:case 10:case 8:case 9:case 110:case 95:case 104:return ed();case 40:return Nr(Ex)?ed(!0):sn();case 114:return Pc();case 108:{let V=ki();return j()===140&&!t.hasPrecedingLineBreak()?kr(V):V}case 112:return Nr(td)?Db():mm();case 18:return Nr(Lb)?h1():pE();case 22:return Zg();case 20:return Kh();case 100:return Db();case 129:return Nr(Vu)?gE():sn();case 15:return M();default:return sn()}}function qh(V){switch(j()){case 131:case 157:case 152:case 148:case 160:case 134:case 146:case 153:case 156:case 114:case 155:case 104:case 108:case 112:case 144:case 18:case 22:case 29:case 51:case 50:case 103:case 10:case 8:case 9:case 110:case 95:case 149:case 41:case 57:case 53:case 25:case 138:case 100:case 129:case 14:case 15:return!0;case 98:return!V;case 40:return!V&&Nr(Ex);case 20:return!V&&Nr(Rb);default:return Wi()}}function Rb(){return Qe(),j()===21||Cb(!1)||qh()}function g1(){let V=z(),me=wb();for(;!t.hasPrecedingLineBreak();)switch(j()){case 53:Qe(),me=jt(m.createJSDocNonNullableType(me,!0),V);break;case 57:if(Nr(Et))return me;Qe(),me=jt(m.createJSDocNullableType(me,!0),V);break;case 22:if(yn(22),qh()){let Ue=Kc();yn(23),me=jt(m.createIndexedAccessTypeNode(me,Ue),V)}else yn(23),me=jt(m.createArrayTypeNode(me),V);break;default:return me}return me}function Ob(V){let me=z();return yn(V),jt(m.createTypeOperatorNode(V,hE()),me)}function lC(){if(aa(94)){let V=nt(Kc);if(ln()||j()!==57)return V}}function Tx(){let V=z(),me=ht(),Ue=Fo(lC),ut=m.createTypeParameterDeclaration(void 0,me,Ue);return jt(ut,V)}function Ev(){let V=z();return yn(138),jt(m.createInferTypeNode(Tx()),V)}function hE(){let V=j();switch(V){case 141:case 156:case 146:return Ob(V);case 138:return Ev()}return ve(g1)}function Fe(V){if(Sv()){let me=S_(),Ue;return Jm(me)?Ue=V?_.Function_type_notation_must_be_parenthesized_when_used_in_a_union_type:_.Function_type_notation_must_be_parenthesized_when_used_in_an_intersection_type:Ue=V?_.Constructor_type_notation_must_be_parenthesized_when_used_in_a_union_type:_.Constructor_type_notation_must_be_parenthesized_when_used_in_an_intersection_type,oe(me,Ue),me}}function ey(V,me,Ue){let ut=z(),Lt=V===51,dn=aa(V),Er=dn&&Fe(Lt)||me();if(j()===V||dn){let ii=[Er];for(;aa(V);)ii.push(Fe(Lt)||me());Er=jt(Ue(As(ii,ut)),ut)}return Er}function Ip(){return ey(50,hE,m.createIntersectionTypeNode)}function Tv(){return ey(51,Ip,m.createUnionTypeNode)}function Nb(){return Qe(),j()===103}function Sv(){return j()===29||j()===20&&Nr(y1)?!0:j()===103||j()===126&&Nr(Nb)}function Xh(){if(Rg(j())&&ls(!1),Wi()||j()===108)return Qe(),!0;if(j()===22||j()===18){let V=Ye.length;return cy(),V===Ye.length}return!1}function y1(){return Qe(),!!(j()===21||j()===25||Xh()&&(j()===58||j()===27||j()===57||j()===63||j()===21&&(Qe(),j()===38)))}function wo(){let V=z(),me=Wi()&&Fo(x_),Ue=Kc();return me?jt(m.createTypePredicateNode(void 0,me,Ue),V):Ue}function x_(){let V=ht();if(j()===140&&!t.hasPrecedingLineBreak())return Qe(),V}function gE(){let V=z(),me=Ll(129),Ue=j()===108?ki():ht(),ut=aa(140)?Kc():void 0;return jt(m.createTypePredicateNode(me,Ue,ut),V)}function Kc(){if(kn&40960)return Cr(40960,Kc);if(Sv())return S_();let V=z(),me=Tv();if(!ln()&&!t.hasPrecedingLineBreak()&&aa(94)){let Ue=nt(Kc);yn(57);let ut=ve(Kc);yn(58);let Lt=ve(Kc);return jt(m.createConditionalTypeNode(me,Ue,ut,Lt),V)}return me}function th(){return aa(58)?Kc():void 0}function Pb(){switch(j()){case 108:case 106:case 104:case 110:case 95:case 8:case 9:case 10:case 14:case 15:case 20:case 22:case 18:case 98:case 84:case 103:case 43:case 68:case 79:return!0;case 100:return Nr(_E);default:return Wi()}}function A_(){if(Pb())return!0;switch(j()){case 39:case 40:case 54:case 53:case 89:case 112:case 114:case 45:case 46:case 29:case 133:case 125:case 80:case 59:return!0;default:return Sx()?!0:Wi()}}function Mb(){return j()!==18&&j()!==98&&j()!==84&&j()!==59&&A_()}function Ml(){let V=ir();V&&En(!1);let me=z(),Ue=ll(!0),ut;for(;ut=Co(27);)Ue=xv(Ue,ut,ll(!0),me);return V&&En(!0),Ue}function Yh(){return aa(63)?ll(!0):void 0}function ll(V){if(v1())return Ai();let me=gm(V)||nh(V);if(me)return me;let Ue=z(),ut=Gb(0);return ut.kind===79&&j()===38?Rr(Ue,ut,V,void 0):Ju(ut)&&Mg(Hn())?xv(ut,Pc(),ll(V),Ue):b1(ut,Ue,V)}function v1(){return j()===125?kt()?!0:Nr(Lv):!1}function uC(){return Qe(),!t.hasPrecedingLineBreak()&&Wi()}function Ai(){let V=z();return Qe(),!t.hasPrecedingLineBreak()&&(j()===41||A_())?jt(m.createYieldExpression(Co(41),ll(!0)),V):jt(m.createYieldExpression(void 0,void 0),V)}function Rr(V,me,Ue,ut){L.assert(j()===38,\"parseSimpleArrowFunctionExpression should only have been called if we had a =>\");let Lt=m.createParameterDeclaration(void 0,void 0,me,void 0,void 0,void 0);jt(Lt,me.pos);let dn=As([Lt],Lt.pos,Lt.end),Er=Ll(38),ii=Fb(!!ut,Ue),li=m.createArrowFunction(ut,void 0,dn,void 0,Er,ii);return pn(jt(li,V))}function gm(V){let me=yd();if(me!==0)return me===1?zs(!0,!0):Fo(()=>$h(V))}function yd(){return j()===20||j()===29||j()===132?Nr(yE):j()===38?1:0}function yE(){if(j()===132&&(Qe(),t.hasPrecedingLineBreak()||j()!==20&&j()!==29))return 0;let V=j(),me=Qe();if(V===20){if(me===21)switch(Qe()){case 38:case 58:case 18:return 1;default:return 0}if(me===22||me===18)return 2;if(me===25)return 1;if(Rg(me)&&me!==132&&Nr(Ws))return Qe()===128?0:1;if(!Wi()&&me!==108)return 0;switch(Qe()){case 58:return 1;case 57:return Qe(),j()===58||j()===27||j()===63||j()===21?1:0;case 27:case 63:case 21:return 2}return 0}else return L.assert(V===29),!Wi()&&j()!==85?0:Le===1?Nr(()=>{aa(85);let ut=Qe();if(ut===94)switch(Qe()){case 63:case 31:case 43:return!1;default:return!0}else if(ut===27||ut===63)return!0;return!1})?1:0:2}function $h(V){let me=t.getTokenPos();if(tn?.has(me))return;let Ue=zs(!1,V);return Ue||(tn||(tn=new Set)).add(me),Ue}function nh(V){if(j()===132&&Nr(ym)===1){let me=z(),Ue=kE(),ut=Gb(0);return Rr(me,ut,V,Ue)}}function ym(){if(j()===132){if(Qe(),t.hasPrecedingLineBreak()||j()===38)return 0;let V=Gb(0);if(!t.hasPrecedingLineBreak()&&V.kind===79&&j()===38)return 1}return 0}function zs(V,me){let Ue=z(),ut=Te(),Lt=kE(),dn=vt(Lt,hL)?2:0,Er=E_(),ii;if(yn(20)){if(V)ii=eh(dn,V);else{let Op=eh(dn,V);if(!Op)return;ii=Op}if(!yn(21)&&!V)return}else{if(!V)return;ii=Zl()}let li=j()===58,di=T_(58,!1);if(di&&!V&&Dn(di))return;let ma=di;for(;ma?.kind===193;)ma=ma.type;let is=ma&&x2(ma);if(!V&&j()!==38&&(is||j()!==18))return;let ao=j(),Oo=Ll(38),id=ao===38||ao===18?Fb(vt(Lt,hL),me):ht();if(!me&&li&&j()!==58)return;let tp=m.createArrowFunction(Lt,Er,ii,di,Oo,id);return nn(jt(tp,Ue),ut)}function Fb(V,me){if(j()===18)return nd(V?2:0);if(j()!==26&&j()!==98&&j()!==84&&I1()&&!Mb())return nd(16|(V?2:0));let Ue=_n;_n=!1;let ut=V?ue(()=>ll(me)):G(()=>ll(me));return _n=Ue,ut}function b1(V,me,Ue){let ut=Co(57);if(!ut)return V;let Lt;return jt(m.createConditionalExpression(V,ut,Cr(r,()=>ll(!1)),Lt=Ll(58),Nf(Lt)?ll(Ue):yc(79,!1,_._0_expected,Xa(58))),me)}function Gb(V){let me=z(),Ue=$_();return Af(V,Ue,me)}function E1(V){return V===101||V===162}function Af(V,me,Ue){for(;;){Hn();let ut=bR(j());if(!(j()===42?ut>=V:ut>V)||j()===101&&Kt())break;if(j()===128||j()===150){if(t.hasPrecedingLineBreak())break;{let dn=j();Qe(),me=dn===150?xx(me,Kc()):T1(me,Kc())}}else me=xv(me,Pc(),Gb(ut),Ue)}return me}function Sx(){return Kt()&&j()===101?!1:bR(j())>0}function xx(V,me){return jt(m.createSatisfiesExpression(V,me),V.pos)}function xv(V,me,Ue,ut){return jt(m.createBinaryExpression(V,me,Ue),ut)}function T1(V,me){return jt(m.createAsExpression(V,me),V.pos)}function S1(){let V=z();return jt(m.createPrefixUnaryExpression(j(),lt(C_)),V)}function Ax(){let V=z();return jt(m.createDeleteExpression(lt(C_)),V)}function Bb(){let V=z();return jt(m.createTypeOfExpression(lt(C_)),V)}function x1(){let V=z();return jt(m.createVoidExpression(lt(C_)),V)}function nf(){return j()===133?ae()?!0:Nr(Lv):!1}function Qh(){let V=z();return jt(m.createAwaitExpression(lt(C_)),V)}function $_(){if(Cx()){let Ue=z(),ut=Ub();return j()===42?Af(bR(j()),ut,Ue):ut}let V=j(),me=C_();if(j()===42){let Ue=xo(Ie,me.pos),{end:ut}=me;me.kind===213?Ke(Ue,ut,_.A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses):Ke(Ue,ut,_.An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses,Xa(V))}return me}function C_(){switch(j()){case 39:case 40:case 54:case 53:return S1();case 89:return Ax();case 112:return Bb();case 114:return x1();case 29:return Le===1?Zh(!0):Lx();case 133:if(nf())return Qh();default:return Ub()}}function Cx(){switch(j()){case 39:case 40:case 54:case 53:case 89:case 112:case 114:case 133:return!1;case 29:if(Le!==1)return!1;default:return!0}}function Ub(){if(j()===45||j()===46){let me=z();return jt(m.createPrefixUnaryExpression(j(),lt(Lp)),me)}else if(Le===1&&j()===29&&Nr(vc))return Zh(!0);let V=Lp();if(L.assert(Ju(V)),(j()===45||j()===46)&&!t.hasPrecedingLineBreak()){let me=j();return Qe(),jt(m.createPostfixUnaryExpression(V,me),V.pos)}return V}function Lp(){let V=z(),me;return j()===100?Nr(yv)?(Ce|=2097152,me=Pc()):Nr(bx)?(Qe(),Qe(),me=jt(m.createMetaProperty(100,wt()),V),Ce|=4194304):me=A1():me=j()===106?Uu():A1(),Wn(V,me)}function A1(){let V=z(),me=Jf();return rf(V,me,!0)}function Uu(){let V=z(),me=Pc();if(j()===29){let Ue=z(),ut=Fo(ry);ut!==void 0&&(Ke(Ue,z(),_.super_may_not_use_type_arguments),Av()||(me=m.createExpressionWithTypeArguments(me,ut)))}return j()===20||j()===24||j()===22?me:(Ll(24,_.super_must_be_followed_by_an_argument_list_or_member_access),jt(q(me,Fd(!0,!0)),V))}function Zh(V,me,Ue){let ut=z(),Lt=C1(V),dn;if(Lt.kind===283){let Er=eg(Lt),ii,li=Er[Er.length-1];if(li?.kind===281&&!yb(li.openingElement.tagName,li.closingElement.tagName)&&yb(Lt.tagName,li.closingElement.tagName)){let di=li.children.end,ma=jt(m.createJsxElement(li.openingElement,li.children,jt(m.createJsxClosingElement(jt(w(\"\"),di,di)),di,di)),li.openingElement.pos,di);Er=As([...Er.slice(0,Er.length-1),ma],Er.pos,di),ii=li.closingElement}else ii=Vb(Lt,V),yb(Lt.tagName,ii.tagName)||(Ue&&Xm(Ue)&&yb(ii.tagName,Ue.tagName)?oe(Lt.tagName,_.JSX_element_0_has_no_corresponding_closing_tag,CI(Ie,Lt.tagName)):oe(ii.tagName,_.Expected_corresponding_JSX_closing_tag_for_0,CI(Ie,Lt.tagName)));dn=jt(m.createJsxElement(Lt,Er,ii),ut)}else Lt.kind===286?dn=jt(m.createJsxFragment(Lt,eg(Lt),jb(V)),ut):(L.assert(Lt.kind===282),dn=Lt);if(V&&j()===29){let Er=typeof me>\"u\"?dn.pos:me,ii=Fo(()=>Zh(!0,Er));if(ii){let li=yc(27,!1);return sL(li,ii.pos,0),Ke(xo(Ie,Er),ii.end,_.JSX_expressions_must_have_one_parent_element),jt(m.createBinaryExpression(dn,li,ii),ut)}}return dn}function kp(){let V=z(),me=m.createJsxText(t.getTokenValue(),Rt===12);return Rt=t.scanJsxToken(),jt(me,V)}function Dp(V,me){switch(me){case 1:if(VS(V))oe(V,_.JSX_fragment_has_no_corresponding_closing_tag);else{let Ue=V.tagName,ut=xo(Ie,Ue.pos);Ke(ut,Ue.end,_.JSX_element_0_has_no_corresponding_closing_tag,CI(Ie,V.tagName))}return;case 30:case 7:return;case 11:case 12:return kp();case 18:return bE(!1);case 29:return Zh(!1,void 0,V);default:return L.assertNever(me)}}function eg(V){let me=[],Ue=z(),ut=Qt;for(Qt|=1<<14;;){let Lt=Dp(V,Rt=t.reScanJsxToken());if(!Lt||(me.push(Lt),Xm(V)&&Lt?.kind===281&&!yb(Lt.openingElement.tagName,Lt.closingElement.tagName)&&yb(V.tagName,Lt.closingElement.tagName)))break}return Qt=ut,As(me,Ue)}function vE(){let V=z();return jt(m.createJsxAttributes(ee(13,cs)),V)}function C1(V){let me=z();if(yn(29),j()===31)return Fa(),jt(m.createJsxOpeningFragment(),me);let Ue=ty(),ut=(kn&262144)===0?bd():void 0,Lt=vE(),dn;return j()===31?(Fa(),dn=m.createJsxOpeningElement(Ue,ut,Lt)):(yn(43),yn(31,void 0,!1)&&(V?Qe():Fa()),dn=m.createJsxSelfClosingElement(Ue,ut,Lt)),jt(dn,me)}function ty(){let V=z();Za();let me=j()===108?Pc():wt();for(;aa(24);)me=jt(q(me,Fd(!0,!1)),V);return me}function bE(V){let me=z();if(!yn(18))return;let Ue,ut;return j()!==19&&(Ue=Co(25),ut=Ml()),V?yn(19):yn(19,void 0,!1)&&Fa(),jt(m.createJsxExpression(Ue,ut),me)}function cs(){if(j()===18)return Ix();Za();let V=z();return jt(m.createJsxAttribute(wt(),ny()),V)}function ny(){if(j()===63){if(Hi()===10)return oa();if(j()===18)return bE(!0);if(j()===29)return Zh(!0);rt(_.or_JSX_element_expected)}}function Ix(){let V=z();yn(18),yn(25);let me=Ml();return yn(19),jt(m.createJsxSpreadAttribute(me),V)}function Vb(V,me){let Ue=z();yn(30);let ut=ty();return yn(31,void 0,!1)&&(me||!yb(V.tagName,ut)?Qe():Fa()),jt(m.createJsxClosingElement(ut),Ue)}function jb(V){let me=z();return yn(30),yn(31,_.Expected_corresponding_closing_tag_for_JSX_fragment,!1)&&(V?Qe():Fa()),jt(m.createJsxJsxClosingFragment(),me)}function Lx(){L.assert(Le!==1,\"Type assertions should never be parsed in JSX; they should be parsed as comparisons or JSX elements/fragments.\");let V=z();yn(29);let me=Kc();yn(31);let Ue=C_();return jt(m.createTypeAssertion(me,Ue),V)}function dC(){return Qe(),Su(j())||j()===22||Av()}function kx(){return j()===28&&Nr(dC)}function Qn(V){if(V.flags&32)return!0;if(MS(V)){let me=V.expression;for(;MS(me)&&!(me.flags&32);)me=me.expression;if(me.flags&32){for(;MS(V);)V.flags|=32,V=V.expression;return!0}}return!1}function lc(V,me,Ue){let ut=Fd(!0,!0),Lt=Ue||Qn(me),dn=Lt?W(me,Ue,ut):q(me,ut);if(Lt&&pi(dn.name)&&oe(dn.name,_.An_optional_chain_cannot_contain_private_identifiers),Vg(me)&&me.typeArguments){let Er=me.typeArguments.pos-1,ii=xo(Ie,me.typeArguments.end)+1;Ke(Er,ii,_.An_instantiation_expression_cannot_be_followed_by_a_property_access)}return jt(dn,V)}function zi(V,me,Ue){let ut;if(j()===23)ut=yc(79,!0,_.An_element_access_expression_should_take_an_argument);else{let dn=at(Ml);gf(dn)&&(dn.text=Ql(dn.text)),ut=dn}yn(23);let Lt=Ue||Qn(me)?R(me,Ue,ut):Y(me,ut);return jt(Lt,V)}function rf(V,me,Ue){for(;;){let ut,Lt=!1;if(Ue&&kx()?(ut=Ll(28),Lt=Su(j())):Lt=aa(24),Lt){me=lc(V,me,ut);continue}if((ut||!ir())&&aa(22)){me=zi(V,me,ut);continue}if(Av()){me=!ut&&me.kind===230?vm(V,me.expression,ut,me.typeArguments):vm(V,me,ut,void 0);continue}if(!ut){if(j()===53&&!t.hasPrecedingLineBreak()){Qe(),me=jt(m.createNonNullExpression(me),V);continue}let dn=Fo(ry);if(dn){me=jt(m.createExpressionWithTypeArguments(me,dn),V);continue}}return me}}function Av(){return j()===14||j()===15}function vm(V,me,Ue,ut){let Lt=m.createTaggedTemplateExpression(me,ut,j()===14?(Kr(),oa()):X_(!0));return(Ue||me.flags&32)&&(Lt.flags|=32),Lt.questionDotToken=Ue,jt(Lt,V)}function Wn(V,me){for(;;){me=rf(V,me,!0);let Ue,ut=Co(28);if(ut&&(Ue=Fo(ry),Av())){me=vm(V,me,ut,Ue);continue}if(Ue||j()===20){!ut&&me.kind===230&&(Ue=me.typeArguments,me=me.expression);let Lt=Dx(),dn=ut||Qn(me)?Q(me,ut,Ue,Lt):ie(me,Ue,Lt);me=jt(dn,V);continue}if(ut){let Lt=yc(79,!1,_.Identifier_expected);me=jt(W(me,ut,Lt),V)}break}return me}function Dx(){yn(20);let V=Dc(11,I_);return yn(21),V}function ry(){if((kn&262144)!==0||Si()!==29)return;Qe();let V=Dc(20,Kc);if(Hn()===31)return Qe(),V&&nl()?V:void 0}function nl(){switch(j()){case 20:case 14:case 15:return!0;case 29:case 31:case 39:case 40:return!1}return t.hasPrecedingLineBreak()||Sx()||!A_()}function Jf(){switch(j()){case 8:case 9:case 10:case 14:return oa();case 108:case 106:case 104:case 110:case 95:return Pc();case 20:return Q_();case 22:return ay();case 18:return wc();case 132:if(!Nr(Jb))break;return tg();case 59:return og();case 84:return Rv();case 98:return tg();case 103:return Kf();case 43:case 68:if(jr()===13)return oa();break;case 15:return X_(!1);case 80:return yr()}return ht(_.Expression_expected)}function Q_(){let V=z(),me=Te();yn(20);let Ue=at(Ml);return yn(21),nn(jt(Z(Ue),V),me)}function iy(){let V=z();yn(25);let me=ll(!0);return jt(m.createSpreadElement(me),V)}function EE(){return j()===25?iy():j()===27?jt(m.createOmittedExpression(),z()):ll(!0)}function I_(){return Cr(r,EE)}function ay(){let V=z(),me=t.getTokenPos(),Ue=yn(22),ut=t.hasPrecedingLineBreak(),Lt=Dc(15,EE);return ro(22,23,Ue,me),jt(F(Lt,ut),V)}function Ac(){let V=z(),me=Te();if(Co(25)){let ma=ll(!0);return nn(jt(m.createSpreadAssignment(ma),V),me)}let Ue=ls(!0);if(ta(137))return Tm(V,me,Ue,174,0);if(ta(151))return Tm(V,me,Ue,175,0);let ut=Co(41),Lt=Wi(),dn=Yt(),Er=Co(57),ii=Co(53);if(ut||j()===20||j()===29)return k1(V,me,Ue,ut,dn,Er,ii);let li;if(Lt&&j()!==58){let ma=Co(63),is=ma?at(()=>ll(!0)):void 0;li=m.createShorthandPropertyAssignment(dn,is),li.equalsToken=ma}else{yn(58);let ma=at(()=>ll(!0));li=m.createPropertyAssignment(dn,ma)}return li.modifiers=Ue,li.questionToken=Er,li.exclamationToken=ii,nn(jt(li,V),me)}function wc(){let V=z(),me=t.getTokenPos(),Ue=yn(18),ut=t.hasPrecedingLineBreak(),Lt=Dc(12,Ac,!0);return ro(18,19,Ue,me),jt(B(Lt,ut),V)}function tg(){let V=ir();En(!1);let me=z(),Ue=Te(),ut=ls(!1);yn(98);let Lt=Co(41),dn=Lt?1:0,Er=vt(ut,hL)?2:0,ii=dn&&Er?Oe(Fl):dn?ce(Fl):Er?ue(Fl):Fl(),li=E_(),di=Y_(dn|Er),ma=T_(58,!1),is=nd(dn|Er);En(V);let ao=m.createFunctionExpression(ut,Lt,ii,li,di,ma,is);return nn(jt(ao,me),Ue)}function Fl(){return Qr()?se():void 0}function Kf(){let V=z();if(yn(103),aa(24)){let dn=wt();return jt(m.createMetaProperty(103,dn),V)}let me=z(),Ue=rf(me,Jf(),!1),ut;Ue.kind===230&&(ut=Ue.typeArguments,Ue=Ue.expression),j()===28&&rt(_.Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0,CI(Ie,Ue));let Lt=j()===20?Dx():void 0;return jt(fe(Ue,ut,Lt),V)}function bm(V,me){let Ue=z(),ut=Te(),Lt=t.getTokenPos(),dn=yn(18,me);if(dn||V){let Er=t.hasPrecedingLineBreak(),ii=ee(1,af);ro(18,19,dn,Lt);let li=nn(jt(U(ii,Er),Ue),ut);return j()===63&&(rt(_.Declaration_or_statement_expected_This_follows_a_block_of_statements_so_if_you_intended_to_write_a_destructuring_assignment_you_might_need_to_wrap_the_whole_assignment_in_parentheses),Qe()),li}else{let Er=Zl();return nn(jt(U(Er,void 0),Ue),ut)}}function nd(V,me){let Ue=kt();Ht(!!(V&1));let ut=ae();dr(!!(V&2));let Lt=_n;_n=!1;let dn=ir();dn&&En(!1);let Er=bm(!!(V&16),me);return dn&&En(!0),_n=Lt,Ht(Ue),dr(ut),Er}function TE(){let V=z(),me=Te();return yn(26),nn(jt(m.createEmptyStatement(),V),me)}function Hb(){let V=z(),me=Te();yn(99);let Ue=t.getTokenPos(),ut=yn(20),Lt=at(Ml);ro(20,21,ut,Ue);let dn=af(),Er=aa(91)?af():void 0;return nn(jt(_e(Lt,dn,Er),V),me)}function Wb(){let V=z(),me=Te();yn(90);let Ue=af();yn(115);let ut=t.getTokenPos(),Lt=yn(20),dn=at(Ml);return ro(20,21,Lt,ut),aa(26),nn(jt(m.createDoStatement(Ue,dn),V),me)}function Z_(){let V=z(),me=Te();yn(115);let Ue=t.getTokenPos(),ut=yn(20),Lt=at(Ml);ro(20,21,ut,Ue);let dn=af();return nn(jt(ge(Lt,dn),V),me)}function rh(){let V=z(),me=Te();yn(97);let Ue=Co(133);yn(20);let ut;j()!==26&&(j()===113||j()===119||j()===85?ut=wp(!0):ut=Tt(Ml));let Lt;if(Ue?yn(162):aa(162)){let dn=at(()=>ll(!0));yn(21),Lt=Ve(Ue,ut,dn,af())}else if(aa(101)){let dn=at(Ml);yn(21),Lt=m.createForInStatement(ut,dn,af())}else{yn(26);let dn=j()!==26&&j()!==21?at(Ml):void 0;yn(26);let Er=j()!==21?at(Ml):void 0;yn(21),Lt=X(ut,dn,Er,af())}return nn(jt(Lt,V),me)}function SE(V){let me=z(),Ue=Te();yn(V===249?81:86);let ut=ss()?void 0:ht();Rs();let Lt=V===249?m.createBreakStatement(ut):m.createContinueStatement(ut);return nn(jt(Lt,me),Ue)}function oy(){let V=z(),me=Te();yn(105);let Ue=ss()?void 0:at(Ml);return Rs(),nn(jt(m.createReturnStatement(Ue),V),me)}function uc(){let V=z(),me=Te();yn(116);let Ue=t.getTokenPos(),ut=yn(20),Lt=at(Ml);ro(20,21,ut,Ue);let dn=Se(33554432,af);return nn(jt(m.createWithStatement(Lt,dn),V),me)}function ng(){let V=z(),me=Te();yn(82);let Ue=at(Ml);yn(58);let ut=ee(3,af);return nn(jt(m.createCaseClause(Ue,ut),V),me)}function ih(){let V=z();yn(88),yn(58);let me=ee(3,af);return jt(m.createDefaultClause(me),V)}function Cv(){return j()===82?ng():ih()}function Iv(){let V=z();yn(18);let me=ee(2,Cv);return yn(19),jt(m.createCaseBlock(me),V)}function Gl(){let V=z(),me=Te();yn(107),yn(20);let Ue=at(Ml);yn(21);let ut=Iv();return nn(jt(m.createSwitchStatement(Ue,ut),V),me)}function ah(){let V=z(),me=Te();yn(109);let Ue=t.hasPrecedingLineBreak()?void 0:at(Ml);return Ue===void 0&&(zt++,Ue=jt(w(\"\"),z())),qs()||kc(Ue),nn(jt(m.createThrowStatement(Ue),V),me)}function qc(){let V=z(),me=Te();yn(111);let Ue=bm(!1),ut=j()===83?xE():void 0,Lt;return(!ut||j()===96)&&(yn(96,_.catch_or_finally_expected),Lt=bm(!1)),nn(jt(m.createTryStatement(Ue,ut,Lt),V),me)}function xE(){let V=z();yn(83);let me;aa(20)?(me=ly(),yn(21)):me=void 0;let Ue=bm(!1);return jt(m.createCatchClause(me,Ue),V)}function oh(){let V=z(),me=Te();return yn(87),Rs(),nn(jt(m.createDebuggerStatement(),V),me)}function zb(){let V=z(),me=Te(),Ue,ut=j()===20,Lt=at(Ml);return Re(Lt)&&aa(58)?Ue=m.createLabeledStatement(Lt,af()):(qs()||kc(Lt),Ue=le(Lt),ut&&(me=!1)),nn(jt(Ue,V),me)}function Vu(){return Qe(),Su(j())&&!t.hasPrecedingLineBreak()}function Em(){return Qe(),j()===84&&!t.hasPrecedingLineBreak()}function Jb(){return Qe(),j()===98&&!t.hasPrecedingLineBreak()}function Lv(){return Qe(),(Su(j())||j()===8||j()===9||j()===10)&&!t.hasPrecedingLineBreak()}function AE(){for(;;)switch(j()){case 113:case 119:case 85:case 98:case 84:case 92:return!0;case 118:case 154:return uC();case 142:case 143:return wx();case 126:case 127:case 132:case 136:case 121:case 122:case 123:case 146:if(Qe(),t.hasPrecedingLineBreak())return!1;continue;case 159:return Qe(),j()===18||j()===79||j()===93;case 100:return Qe(),j()===10||j()===41||j()===18||Su(j());case 93:let V=Qe();if(V===154&&(V=Nr(Qe)),V===63||V===41||V===18||V===88||V===128||V===59)return!0;continue;case 124:Qe();continue;default:return!1}}function sy(){return Nr(AE)}function I1(){switch(j()){case 59:case 26:case 18:case 113:case 119:case 98:case 84:case 92:case 99:case 90:case 115:case 97:case 86:case 81:case 105:case 116:case 107:case 109:case 111:case 87:case 83:case 96:return!0;case 100:return sy()||Nr(_E);case 85:case 93:return sy();case 132:case 136:case 118:case 142:case 143:case 154:case 159:return!0;case 127:case 123:case 121:case 122:case 124:case 146:return sy()||!Nr(Vu);default:return A_()}}function kv(){return Qe(),Qr()||j()===18||j()===22}function rg(){return Nr(kv)}function af(){switch(j()){case 26:return TE();case 18:return bm(!1);case 113:return ig(z(),Te(),void 0);case 119:if(rg())return ig(z(),Te(),void 0);break;case 98:return wv(z(),Te(),void 0);case 84:return D1(z(),Te(),void 0);case 99:return Hb();case 90:return Wb();case 115:return Z_();case 97:return rh();case 86:return SE(248);case 81:return SE(249);case 105:return oy();case 116:return uc();case 107:return Gl();case 109:return ah();case 111:case 83:case 96:return qc();case 87:return oh();case 59:return Gd();case 132:case 118:case 154:case 142:case 143:case 136:case 85:case 92:case 93:case 100:case 121:case 122:case 123:case 126:case 127:case 124:case 146:case 159:if(sy())return Gd();break}return zb()}function CE(V){return V.kind===136}function Gd(){let V=z(),me=Te(),Ue=ls(!0);if(vt(Ue,CE)){let Lt=sh(V);if(Lt)return Lt;for(let dn of Ue)dn.flags|=16777216;return Se(16777216,()=>Dv(V,me,Ue))}else return Dv(V,me,Ue)}function sh(V){return Se(16777216,()=>{let me=At(Qt,V);if(me)return xt(me)})}function Dv(V,me,Ue){switch(j()){case 113:case 119:case 85:return ig(V,me,Ue);case 98:return wv(V,me,Ue);case 84:return D1(V,me,Ue);case 118:return sg(V,me,Ue);case 154:return Nx(V,me,Ue);case 92:return E(V,me,Ue);case 159:case 142:case 143:return lr(V,me,Ue);case 100:return Ed(V,me,Ue);case 93:switch(Qe(),j()){case 88:case 63:return Zo(V,me,Ue);case 128:return kl(V,me,Ue);default:return qP(V,me,Ue)}default:if(Ue){let ut=yc(279,!0,_.Declaration_expected);return oL(ut,V),ut.modifiers=Ue,ut}return}}function wx(){return Qe(),!t.hasPrecedingLineBreak()&&(Wi()||j()===10)}function No(V,me){if(j()!==18){if(V&4){gv();return}if(ss()){Rs();return}}return nd(V,me)}function fr(){let V=z();if(j()===27)return jt(m.createOmittedExpression(),V);let me=Co(25),Ue=cy(),ut=Yh();return jt(m.createBindingElement(me,void 0,Ue,ut),V)}function vd(){let V=z(),me=Co(25),Ue=Qr(),ut=Yt(),Lt;Ue&&j()!==58?(Lt=ut,ut=void 0):(yn(58),Lt=cy());let dn=Yh();return jt(m.createBindingElement(me,ut,Lt,dn),V)}function ju(){let V=z();yn(18);let me=Dc(9,vd);return yn(19),jt(m.createObjectBindingPattern(me),V)}function L1(){let V=z();yn(22);let me=Dc(10,fr);return yn(23),jt(m.createArrayBindingPattern(me),V)}function IE(){return j()===18||j()===22||j()===80||Qr()}function cy(V){return j()===22?L1():j()===18?ju():se(V)}function Rx(){return ly(!0)}function ly(V){let me=z(),Ue=Te(),ut=cy(_.Private_identifiers_are_not_allowed_in_variable_declarations),Lt;V&&ut.kind===79&&j()===53&&!t.hasPrecedingLineBreak()&&(Lt=Pc());let dn=th(),Er=E1(j())?void 0:Yh(),ii=we(ut,Lt,dn,Er);return nn(jt(ii,me),Ue)}function wp(V){let me=z(),Ue=0;switch(j()){case 113:break;case 119:Ue|=1;break;case 85:Ue|=2;break;default:L.fail()}Qe();let ut;if(j()===162&&Nr(ep))ut=Zl();else{let Lt=Kt();gn(V),ut=Dc(8,V?ly:Rx),gn(Lt)}return jt(ke(ut,Ue),me)}function ep(){return Ws()&&Qe()===21}function ig(V,me,Ue){let ut=wp(!1);Rs();let Lt=re(Ue,ut);return nn(jt(Lt,V),me)}function wv(V,me,Ue){let ut=ae(),Lt=im(Ue);yn(98);let dn=Co(41),Er=Lt&1024?Fl():se(),ii=dn?1:0,li=Lt&512?2:0,di=E_();Lt&1&&dr(!0);let ma=Y_(ii|li),is=T_(58,!1),ao=No(ii|li,_.or_expected);dr(ut);let Oo=m.createFunctionDeclaration(Ue,dn,Er,di,ma,is,ao);return nn(jt(Oo,V),me)}function ch(){if(j()===135)return yn(135);if(j()===10&&Nr(Qe)===20)return Fo(()=>{let V=oa();return V.text===\"constructor\"?V:void 0})}function Rp(V,me,Ue){return Fo(()=>{if(ch()){let ut=E_(),Lt=Y_(0),dn=T_(58,!1),Er=No(0,_.or_expected),ii=m.createConstructorDeclaration(Ue,Lt,Er);return ii.typeParameters=ut,ii.type=dn,nn(jt(ii,V),me)}})}function k1(V,me,Ue,ut,Lt,dn,Er,ii){let li=ut?1:0,di=vt(Ue,hL)?2:0,ma=E_(),is=Y_(li|di),ao=T_(58,!1),Oo=No(li|di,ii),id=m.createMethodDeclaration(Ue,ut,Lt,dn,ma,is,ao,Oo);return id.exclamationToken=Er,nn(jt(id,V),me)}function Cc(V,me,Ue,ut,Lt){let dn=!Lt&&!t.hasPrecedingLineBreak()?Co(53):void 0,Er=th(),ii=Cr(45056,Yh);xc(ut,Er,ii);let li=m.createPropertyDeclaration(Ue,ut,Lt||dn,Er,ii);return nn(jt(li,V),me)}function Bd(V,me,Ue){let ut=Co(41),Lt=Yt(),dn=Co(57);return ut||j()===20||j()===29?k1(V,me,Ue,ut,Lt,dn,void 0,_.or_expected):Cc(V,me,Ue,Lt,dn)}function Tm(V,me,Ue,ut,Lt){let dn=Yt(),Er=E_(),ii=Y_(0),li=T_(58,!1),di=No(Lt),ma=ut===174?m.createGetAccessorDeclaration(Ue,dn,ii,li,di):m.createSetAccessorDeclaration(Ue,dn,ii,di);return ma.typeParameters=Er,Tf(ma)&&(ma.type=li),nn(jt(ma,V),me)}function rd(){let V;if(j()===59)return!0;for(;Rg(j());){if(V=j(),Gj(V))return!0;Qe()}if(j()===41||(K()&&(V=j(),Qe()),j()===22))return!0;if(V!==void 0){if(!Xu(V)||V===151||V===137)return!0;switch(j()){case 20:case 29:case 53:case 58:case 63:case 57:return!0;default:return ss()}}return!1}function LE(V,me,Ue){Ll(124);let ut=uy(),Lt=nn(jt(m.createClassStaticBlockDeclaration(ut),V),me);return Lt.modifiers=Ue,Lt}function uy(){let V=kt(),me=ae();Ht(!1),dr(!0);let Ue=bm(!1);return Ht(V),dr(me),Ue}function ag(){if(ae()&&j()===133){let V=z(),me=ht(_.Expression_expected);Qe();let Ue=rf(V,me,!0);return Wn(V,Ue)}return Lp()}function Ox(){let V=z();if(!aa(59))return;let me=$(ag);return jt(m.createDecorator(me),V)}function of(V,me,Ue){let ut=z(),Lt=j();if(j()===85&&me){if(!Fo(Go))return}else{if(Ue&&j()===124&&Nr(Ti))return;if(V&&j()===124)return;if(!Hs())return}return jt(P(Lt),ut)}function ls(V,me,Ue){let ut=z(),Lt,dn,Er,ii=!1,li=!1,di=!1;if(V&&j()===59)for(;dn=Ox();)Lt=Sn(Lt,dn);for(;Er=of(ii,me,Ue);)Er.kind===124&&(ii=!0),Lt=Sn(Lt,Er),li=!0;if(li&&V&&j()===59)for(;dn=Ox();)Lt=Sn(Lt,dn),di=!0;if(di)for(;Er=of(ii,me,Ue);)Er.kind===124&&(ii=!0),Lt=Sn(Lt,Er);return Lt&&As(Lt,ut)}function kE(){let V;if(j()===132){let me=z();Qe();let Ue=jt(P(132),me);V=As([Ue],me)}return V}function DE(){let V=z();if(j()===26)return Qe(),jt(m.createSemicolonClassElement(),V);let me=Te(),Ue=ls(!0,!0,!0);if(j()===124&&Nr(Ti))return LE(V,me,Ue);if(ta(137))return Tm(V,me,Ue,174,0);if(ta(151))return Tm(V,me,Ue,175,0);if(j()===135||j()===10){let ut=Rp(V,me,Ue);if(ut)return ut}if(Ib())return m1(V,me,Ue);if(Su(j())||j()===10||j()===8||j()===41||j()===22)if(vt(Ue,CE)){for(let Lt of Ue)Lt.flags|=16777216;return Se(16777216,()=>Bd(V,me,Ue))}else return Bd(V,me,Ue);if(Ue){let ut=yc(79,!0,_.Declaration_expected);return Cc(V,me,Ue,ut,void 0)}return L.fail(\"Should not have attempted to parse class member declaration.\")}function og(){let V=z(),me=Te(),Ue=ls(!0);if(j()===84)return wE(V,me,Ue,228);let ut=yc(279,!0,_.Expression_expected);return oL(ut,V),ut.modifiers=Ue,ut}function Rv(){return wE(z(),Te(),void 0,228)}function D1(V,me,Ue){return wE(V,me,Ue,260)}function wE(V,me,Ue,ut){let Lt=ae();yn(84);let dn=RE(),Er=E_();vt(Ue,c3)&&dr(!0);let ii=NE(),li;yn(18)?(li=fC(),yn(19)):li=Zl(),dr(Lt);let di=ut===260?m.createClassDeclaration(Ue,dn,Er,ii,li):m.createClassExpression(Ue,dn,Er,ii,li);return nn(jt(di,V),me)}function RE(){return Qr()&&!OE()?yu(Qr()):void 0}function OE(){return j()===117&&Nr(hd)}function NE(){if(lh())return ee(22,PE)}function PE(){let V=z(),me=j();L.assert(me===94||me===117),Qe();let Ue=Dc(7,dy);return jt(m.createHeritageClause(me,Ue),V)}function dy(){let V=z(),me=Lp();if(me.kind===230)return me;let Ue=bd();return jt(m.createExpressionWithTypeArguments(me,Ue),V)}function bd(){return j()===29?Wf(20,Kc,29,31):void 0}function lh(){return j()===94||j()===117}function fC(){return ee(5,DE)}function sg(V,me,Ue){yn(118);let ut=ht(),Lt=E_(),dn=NE(),Er=vv(),ii=m.createInterfaceDeclaration(Ue,ut,Lt,dn,Er);return nn(jt(ii,V),me)}function Nx(V,me,Ue){yn(154);let ut=ht(),Lt=E_();yn(63);let dn=j()===139&&Fo(Zu)||Kc();Rs();let Er=m.createTypeAliasDeclaration(Ue,ut,Lt,dn);return nn(jt(Er,V),me)}function Px(){let V=z(),me=Te(),Ue=Yt(),ut=at(Yh);return nn(jt(m.createEnumMember(Ue,ut),V),me)}function E(V,me,Ue){yn(92);let ut=ht(),Lt;yn(18)?(Lt=je(()=>Dc(6,Px)),yn(19)):Lt=Zl();let dn=m.createEnumDeclaration(Ue,ut,Lt);return nn(jt(dn,V),me)}function ne(){let V=z(),me;return yn(18)?(me=ee(1,af),yn(19)):me=Zl(),jt(m.createModuleBlock(me),V)}function Ee(V,me,Ue,ut){let Lt=ut&16,dn=ht(),Er=aa(24)?Ee(z(),!1,void 0,4|Lt):ne(),ii=m.createModuleDeclaration(Ue,dn,Er,ut);return nn(jt(ii,V),me)}function Wt(V,me,Ue){let ut=0,Lt;j()===159?(Lt=ht(),ut|=1024):(Lt=oa(),Lt.text=Ql(Lt.text));let dn;j()===18?dn=ne():Rs();let Er=m.createModuleDeclaration(Ue,Lt,dn,ut);return nn(jt(Er,V),me)}function lr(V,me,Ue){let ut=0;if(j()===159)return Wt(V,me,Ue);if(aa(143))ut|=16;else if(yn(142),j()===10)return Wt(V,me,Ue);return Ee(V,me,Ue,ut)}function ci(){return j()===147&&Nr(qr)}function qr(){return Qe()===20}function Ti(){return Qe()===18}function Wa(){return Qe()===43}function kl(V,me,Ue){yn(128),yn(143);let ut=ht();Rs();let Lt=m.createNamespaceExportDeclaration(ut);return Lt.modifiers=Ue,nn(jt(Lt,V),me)}function Ed(V,me,Ue){yn(100);let ut=t.getStartPos(),Lt;Wi()&&(Lt=ht());let dn=!1;if(j()!==158&&Lt?.escapedText===\"type\"&&(Wi()||Td())&&(dn=!0,Lt=Wi()?ht():void 0),Lt&&!Ov())return Nv(V,me,Ue,Lt,dn);let Er;(Lt||j()===41||j()===18)&&(Er=_y(Lt,ut,dn),yn(158));let ii=sf(),li;j()===130&&!t.hasPrecedingLineBreak()&&(li=fy()),Rs();let di=m.createImportDeclaration(Ue,Er,ii,li);return nn(jt(di,V),me)}function Ud(){let V=z(),me=Su(j())?wt():St(10);yn(58);let Ue=ll(!0);return jt(m.createAssertEntry(me,Ue),V)}function fy(V){let me=z();V||yn(130);let Ue=t.getTokenPos();if(yn(18)){let ut=t.hasPrecedingLineBreak(),Lt=Dc(24,Ud,!0);if(!yn(19)){let dn=Os(Ye);dn&&dn.code===_._0_expected.code&&Ao(dn,n2(Pe,Ue,1,_.The_parser_expected_to_find_a_1_to_match_the_0_token_here,\"{\",\"}\"))}return jt(m.createAssertClause(Lt,ut),me)}else{let ut=As([],z(),void 0,!1);return jt(m.createAssertClause(ut,!1),me)}}function Td(){return j()===41||j()===18}function Ov(){return j()===27||j()===158}function Nv(V,me,Ue,ut,Lt){yn(63);let dn=qf();Rs();let Er=m.createImportEqualsDeclaration(Ue,Lt,ut,dn);return nn(jt(Er,V),me)}function _y(V,me,Ue){let ut;return(!V||aa(27))&&(ut=j()===41?Sm():py(272)),jt(m.createImportClause(Ue,V,ut),me)}function qf(){return ci()?ME():Io(!1)}function ME(){let V=z();yn(147),yn(20);let me=sf();return yn(21),jt(m.createExternalModuleReference(me),V)}function sf(){if(j()===10){let V=oa();return V.text=Ql(V.text),V}else return Ml()}function Sm(){let V=z();yn(41),yn(128);let me=ht();return jt(m.createNamespaceImport(me),V)}function py(V){let me=z(),Ue=V===272?m.createNamedImports(Wf(23,FE,18,19)):m.createNamedExports(Wf(23,Cf,18,19));return jt(Ue,me)}function Cf(){let V=Te();return nn(Pv(278),V)}function FE(){return Pv(273)}function Pv(V){let me=z(),Ue=Xu(j())&&!Wi(),ut=t.getTokenPos(),Lt=t.getTextPos(),dn=!1,Er,ii=!0,li=wt();if(li.escapedText===\"type\")if(j()===128){let is=wt();if(j()===128){let ao=wt();Su(j())?(dn=!0,Er=is,li=ma(),ii=!1):(Er=li,li=ao,ii=!1)}else Su(j())?(Er=li,ii=!1,li=ma()):(dn=!0,li=is)}else Su(j())&&(dn=!0,li=ma());ii&&j()===128&&(Er=li,yn(128),li=ma()),V===273&&Ue&&Ke(ut,Lt,_.Identifier_expected);let di=V===273?m.createImportSpecifier(dn,Er,li):m.createExportSpecifier(dn,Er,li);return jt(di,me);function ma(){return Ue=Xu(j())&&!Wi(),ut=t.getTokenPos(),Lt=t.getTextPos(),wt()}}function Vc(V){return jt(m.createNamespaceExport(wt()),V)}function qP(V,me,Ue){let ut=ae();dr(!0);let Lt,dn,Er,ii=aa(154),li=z();aa(41)?(aa(128)&&(Lt=Vc(li)),yn(158),dn=sf()):(Lt=py(276),(j()===158||j()===10&&!t.hasPrecedingLineBreak())&&(yn(158),dn=sf())),dn&&j()===130&&!t.hasPrecedingLineBreak()&&(Er=fy()),Rs(),dr(ut);let di=m.createExportDeclaration(Ue,ii,Lt,dn,Er);return nn(jt(di,V),me)}function Zo(V,me,Ue){let ut=ae();dr(!0);let Lt;aa(63)?Lt=!0:yn(88);let dn=ll(!0);Rs(),dr(ut);let Er=m.createExportAssignment(Ue,Lt,dn);return nn(jt(Er,V),me)}let Ro;(V=>{V[V.SourceElements=0]=\"SourceElements\",V[V.BlockStatements=1]=\"BlockStatements\",V[V.SwitchClauses=2]=\"SwitchClauses\",V[V.SwitchClauseStatements=3]=\"SwitchClauseStatements\",V[V.TypeMembers=4]=\"TypeMembers\",V[V.ClassMembers=5]=\"ClassMembers\",V[V.EnumMembers=6]=\"EnumMembers\",V[V.HeritageClauseElement=7]=\"HeritageClauseElement\",V[V.VariableDeclarations=8]=\"VariableDeclarations\",V[V.ObjectBindingElements=9]=\"ObjectBindingElements\",V[V.ArrayBindingElements=10]=\"ArrayBindingElements\",V[V.ArgumentExpressions=11]=\"ArgumentExpressions\",V[V.ObjectLiteralMembers=12]=\"ObjectLiteralMembers\",V[V.JsxAttributes=13]=\"JsxAttributes\",V[V.JsxChildren=14]=\"JsxChildren\",V[V.ArrayLiteralMembers=15]=\"ArrayLiteralMembers\",V[V.Parameters=16]=\"Parameters\",V[V.JSDocParameters=17]=\"JSDocParameters\",V[V.RestProperties=18]=\"RestProperties\",V[V.TypeParameters=19]=\"TypeParameters\",V[V.TypeArguments=20]=\"TypeArguments\",V[V.TupleElementTypes=21]=\"TupleElementTypes\",V[V.HeritageClauses=22]=\"HeritageClauses\",V[V.ImportOrExportSpecifiers=23]=\"ImportOrExportSpecifiers\",V[V.AssertEntries=24]=\"AssertEntries\",V[V.Count=25]=\"Count\"})(Ro||(Ro={}));let Mx;(V=>{V[V.False=0]=\"False\",V[V.True=1]=\"True\",V[V.Unknown=2]=\"Unknown\"})(Mx||(Mx={}));let Fx;(V=>{function me(di,ma,is){Pi(\"file.js\",di,99,void 0,1),t.setText(di,ma,is),Rt=t.scan();let ao=Ue(),Oo=hi(\"file.js\",99,1,!1,[],P(1),0,Ba),id=bS(Ye,Oo);return _t&&(Oo.jsDocDiagnostics=bS(_t,Oo)),gr(),ao?{jsDocTypeExpression:ao,diagnostics:id}:void 0}V.parseJSDocTypeExpressionForTests=me;function Ue(di){let ma=z(),is=(di?aa:yn)(18),ao=Se(8388608,Mc);(!di||is)&&hc(19);let Oo=m.createJSDocTypeExpression(ao);return Kn(Oo),jt(Oo,ma)}V.parseJSDocTypeExpression=Ue;function ut(){let di=z(),ma=aa(18),is=z(),ao=Io(!1);for(;j()===80;)Ja(),Vt(),ao=jt(m.createJSDocMemberName(ao,ht()),is);ma&&hc(19);let Oo=m.createJSDocNameReference(ao);return Kn(Oo),jt(Oo,di)}V.parseJSDocNameReference=ut;function Lt(di,ma,is){Pi(\"\",di,99,void 0,1);let ao=Se(8388608,()=>li(ma,is)),id=bS(Ye,{languageVariant:0,text:di});return gr(),ao?{jsDoc:ao,diagnostics:id}:void 0}V.parseIsolatedJSDocComment=Lt;function dn(di,ma,is){let ao=Rt,Oo=Ye.length,id=Gt,tp=Se(8388608,()=>li(ma,is));return go(tp,di),kn&262144&&(_t||(_t=[]),_t.push(...Ye)),Rt=ao,Ye.length=Oo,Gt=id,tp}V.parseJSDocComment=dn;let Er;(di=>{di[di.BeginningOfLine=0]=\"BeginningOfLine\",di[di.SawAsterisk=1]=\"SawAsterisk\",di[di.SavingComments=2]=\"SavingComments\",di[di.SavingBackticks=3]=\"SavingBackticks\"})(Er||(Er={}));let ii;(di=>{di[di.Property=1]=\"Property\",di[di.Parameter=2]=\"Parameter\",di[di.CallbackParameter=4]=\"CallbackParameter\"})(ii||(ii={}));function li(di=0,ma){let is=Ie,ao=ma===void 0?is.length:di+ma;if(ma=ao-di,L.assert(di>=0),L.assert(di<=ao),L.assert(ao<=is.length),!cJ(is,di))return;let Oo,id,tp,Op,cg,Xf=[],my=[];return t.scanRange(di+3,ma-5,()=>{let vn=1,Or,xr=di-(is.lastIndexOf(`\n`,di)+1)+4;function Wr(eo){Or||(Or=xr),Xf.push(eo),xr+=eo.length}for(Vt();w1(5););w1(4)&&(vn=0,xr=0);e:for(;;){switch(j()){case 59:vn===0||vn===1?(GE(Xf),cg||(cg=z()),Fv(pC(xr)),vn=0,Or=void 0):Wr(t.getTokenText());break;case 4:Xf.push(t.getTokenText()),vn=0,xr=0;break;case 41:let eo=t.getTokenText();vn===1||vn===2?(vn=2,Wr(eo)):(vn=1,xr+=eo.length);break;case 5:let _o=t.getTokenText();vn===2?Xf.push(_o):Or!==void 0&&xr+_o.length>Or&&Xf.push(_o.slice(Or-xr)),xr+=_o.length;break;case 1:break e;case 18:vn=2;let jd=t.getStartPos(),k_=t.getTextPos()-1,uh=Hk(k_);if(uh){Op||Gx(Xf),my.push(jt(m.createJSDocText(Xf.join(\"\")),Op??di,jd)),my.push(uh),Xf=[],Op=t.getTextPos();break}default:vn=2,Wr(t.getTokenText());break}Vt()}GE(Xf),my.length&&Xf.length&&my.push(jt(m.createJSDocText(Xf.join(\"\")),Op??di,cg)),my.length&&Oo&&L.assertIsDefined(cg,\"having parsed tags implies that the end of the comment span should be set\");let Ci=Oo&&As(Oo,id,tp);return jt(m.createJSDocComment(my.length?As(my,di,cg):Xf.length?Xf.join(\"\"):void 0,Ci),di,ao)});function Gx(vn){for(;vn.length&&(vn[0]===`\n`||vn[0]===\"\\r\");)vn.shift()}function GE(vn){for(;vn.length&&vn[vn.length-1].trim()===\"\";)vn.pop()}function _C(){for(;;){if(Vt(),j()===1)return!0;if(!(j()===5||j()===4))return!1}}function L_(){if(!((j()===5||j()===4)&&Nr(_C)))for(;j()===5||j()===4;)Vt()}function Mv(){if((j()===5||j()===4)&&Nr(_C))return\"\";let vn=t.hasPrecedingLineBreak(),Or=!1,xr=\"\";for(;vn&&j()===41||j()===5||j()===4;)xr+=t.getTokenText(),j()===4?(vn=!0,Or=!0,xr=\"\"):j()===41&&(vn=!1),Vt();return Or?xr:\"\"}function pC(vn){L.assert(j()===59);let Or=t.getTokenPos();Vt();let xr=Uv(void 0),Wr=Mv(),Ci;switch(xr.escapedText){case\"author\":Ci=Pt(Or,xr,vn,Wr);break;case\"implements\":Ci=Fi(Or,xr,vn,Wr);break;case\"augments\":case\"extends\":Ci=Da(Or,xr,vn,Wr);break;case\"class\":case\"constructor\":Ci=dg(Or,m.createJSDocClassTag,xr,vn,Wr);break;case\"public\":Ci=dg(Or,m.createJSDocPublicTag,xr,vn,Wr);break;case\"private\":Ci=dg(Or,m.createJSDocPrivateTag,xr,vn,Wr);break;case\"protected\":Ci=dg(Or,m.createJSDocProtectedTag,xr,vn,Wr);break;case\"readonly\":Ci=dg(Or,m.createJSDocReadonlyTag,xr,vn,Wr);break;case\"override\":Ci=dg(Or,m.createJSDocOverrideTag,xr,vn,Wr);break;case\"deprecated\":Dt=!0,Ci=dg(Or,m.createJSDocDeprecatedTag,xr,vn,Wr);break;case\"this\":Ci=wte(Or,xr,vn,Wr);break;case\"enum\":Ci=Rte(Or,xr,vn,Wr);break;case\"arg\":case\"argument\":case\"param\":return Jk(Or,xr,2,vn);case\"return\":case\"returns\":Ci=I(Or,xr,vn,Wr);break;case\"template\":Ci=yy(Or,xr,vn,Wr);break;case\"type\":Ci=N(Or,xr,vn,Wr);break;case\"typedef\":Ci=mC(Or,xr,vn,Wr);break;case\"callback\":Ci=zn(Or,xr,vn,Wr);break;case\"overload\":Ci=Gv(Or,xr,vn,Wr);break;case\"satisfies\":Ci=Vd(Or,xr,vn,Wr);break;case\"see\":Ci=te(Or,xr,vn,Wr);break;case\"exception\":case\"throws\":Ci=Me(Or,xr,vn,Wr);break;default:Ci=Zs(Or,xr,vn,Wr);break}return Ci}function cf(vn,Or,xr,Wr){return Wr||(xr+=Or-vn),Bx(xr,Wr.slice(xr))}function Bx(vn,Or){let xr=z(),Wr=[],Ci=[],eo,_o=0,jd=!0,k_;function uh(dh){k_||(k_=vn),Wr.push(dh),vn+=dh.length}Or!==void 0&&(Or!==\"\"&&uh(Or),_o=1);let xm=j();e:for(;;){switch(xm){case 4:_o=0,Wr.push(t.getTokenText()),vn=0;break;case 59:if(_o===3||_o===2&&(!jd||Nr(hy))){Wr.push(t.getTokenText());break}t.setTextPos(t.getTextPos()-1);case 1:break e;case 5:if(_o===2||_o===3)uh(t.getTokenText());else{let Kb=t.getTokenText();k_!==void 0&&vn+Kb.length>k_&&Wr.push(Kb.slice(k_-vn)),vn+=Kb.length}break;case 18:_o=2;let dh=t.getStartPos(),yC=t.getTextPos()-1,vu=Hk(yC);vu?(Ci.push(jt(m.createJSDocText(Wr.join(\"\")),eo??xr,dh)),Ci.push(vu),Wr=[],eo=t.getTextPos()):uh(t.getTokenText());break;case 61:_o===3?_o=2:_o=3,uh(t.getTokenText());break;case 41:if(_o===0){_o=1,vn+=1;break}default:_o!==3&&(_o=2),uh(t.getTokenText());break}jd=j()===5,xm=Vt()}if(Gx(Wr),GE(Wr),Ci.length)return Wr.length&&Ci.push(jt(m.createJSDocText(Wr.join(\"\")),eo??xr)),As(Ci,xr,t.getTextPos());if(Wr.length)return Wr.join(\"\")}function hy(){let vn=Vt();return vn===5||vn===4}function Hk(vn){let Or=Fo(Wk);if(!Or)return;Vt(),L_();let xr=z(),Wr=Su(j())?Io(!0):void 0;if(Wr)for(;j()===80;)Ja(),Vt(),Wr=jt(m.createJSDocMemberName(Wr,ht()),xr);let Ci=[];for(;j()!==19&&j()!==4&&j()!==1;)Ci.push(t.getTokenText()),Vt();let eo=Or===\"link\"?m.createJSDocLink:Or===\"linkcode\"?m.createJSDocLinkCode:m.createJSDocLinkPlain;return jt(eo(Wr,Ci.join(\"\")),vn,t.getTextPos())}function Wk(){if(Mv(),j()===18&&Vt()===59&&Su(Vt())){let vn=t.getTokenValue();if(oo(vn))return vn}}function oo(vn){return vn===\"link\"||vn===\"linkcode\"||vn===\"linkplain\"}function Zs(vn,Or,xr,Wr){return jt(m.createJSDocUnknownTag(Or,cf(vn,z(),xr,Wr)),vn)}function Fv(vn){!vn||(Oo?Oo.push(vn):(Oo=[vn],id=vn.pos),tp=vn.end)}function gy(){return Mv(),j()===18?Ue():void 0}function zk(){let vn=w1(22);vn&&L_();let Or=w1(61),xr=YP();return Or&&md(61),vn&&(L_(),Co(63)&&Ml(),yn(23)),{name:xr,isBracketed:vn}}function ad(vn){switch(vn.kind){case 149:return!0;case 185:return ad(vn.elementType);default:return p_(vn)&&Re(vn.typeName)&&vn.typeName.escapedText===\"Object\"&&!vn.typeArguments}}function Jk(vn,Or,xr,Wr){let Ci=gy(),eo=!Ci;Mv();let{name:_o,isBracketed:jd}=zk(),k_=Mv();eo&&!Nr(Wk)&&(Ci=gy());let uh=cf(vn,z(),Wr,k_),xm=xr!==4&&y(Ci,_o,xr,Wr);xm&&(Ci=xm,eo=!0);let dh=xr===1?m.createJSDocPropertyTag(Or,_o,jd,Ci,eo,uh):m.createJSDocParameterTag(Or,_o,jd,Ci,eo,uh);return jt(dh,vn)}function y(vn,Or,xr,Wr){if(vn&&ad(vn.type)){let Ci=z(),eo,_o;for(;eo=Fo(()=>BE(xr,Wr,Or));)(eo.kind===344||eo.kind===351)&&(_o=Sn(_o,eo));if(_o){let jd=jt(m.createJSDocTypeLiteral(_o,vn.type.kind===185),Ci);return jt(m.createJSDocTypeExpression(jd),Ci)}}}function I(vn,Or,xr,Wr){vt(Oo,y3)&&Ke(Or.pos,t.getTokenPos(),_._0_tag_already_specified,Or.escapedText);let Ci=gy();return jt(m.createJSDocReturnTag(Or,Ci,cf(vn,z(),xr,Wr)),vn)}function N(vn,Or,xr,Wr){vt(Oo,wL)&&Ke(Or.pos,t.getTokenPos(),_._0_tag_already_specified,Or.escapedText);let Ci=Ue(!0),eo=xr!==void 0&&Wr!==void 0?cf(vn,z(),xr,Wr):void 0;return jt(m.createJSDocTypeTag(Or,Ci,eo),vn)}function te(vn,Or,xr,Wr){let eo=j()===22||Nr(()=>Vt()===59&&Su(Vt())&&oo(t.getTokenValue()))?void 0:ut(),_o=xr!==void 0&&Wr!==void 0?cf(vn,z(),xr,Wr):void 0;return jt(m.createJSDocSeeTag(Or,eo,_o),vn)}function Me(vn,Or,xr,Wr){let Ci=gy(),eo=cf(vn,z(),xr,Wr);return jt(m.createJSDocThrowsTag(Or,Ci,eo),vn)}function Pt(vn,Or,xr,Wr){let Ci=z(),eo=Tr(),_o=t.getStartPos(),jd=cf(vn,_o,xr,Wr);jd||(_o=t.getStartPos());let k_=typeof jd!=\"string\"?As(Qi([jt(eo,Ci,_o)],jd),Ci):eo.text+jd;return jt(m.createJSDocAuthorTag(Or,k_),vn)}function Tr(){let vn=[],Or=!1,xr=t.getToken();for(;xr!==1&&xr!==4;){if(xr===29)Or=!0;else{if(xr===59&&!Or)break;if(xr===31&&Or){vn.push(t.getTokenText()),t.setTextPos(t.getTokenPos()+1);break}}vn.push(t.getTokenText()),xr=Vt()}return m.createJSDocText(vn.join(\"\"))}function Fi(vn,Or,xr,Wr){let Ci=lg();return jt(m.createJSDocImplementsTag(Or,Ci,cf(vn,z(),xr,Wr)),vn)}function Da(vn,Or,xr,Wr){let Ci=lg();return jt(m.createJSDocAugmentsTag(Or,Ci,cf(vn,z(),xr,Wr)),vn)}function Vd(vn,Or,xr,Wr){let Ci=Ue(!1),eo=xr!==void 0&&Wr!==void 0?cf(vn,z(),xr,Wr):void 0;return jt(m.createJSDocSatisfiesTag(Or,Ci,eo),vn)}function lg(){let vn=aa(18),Or=z(),xr=ug(),Wr=bd(),Ci=m.createExpressionWithTypeArguments(xr,Wr),eo=jt(Ci,Or);return vn&&yn(19),eo}function ug(){let vn=z(),Or=Uv();for(;aa(24);){let xr=Uv();Or=jt(q(Or,xr),vn)}return Or}function dg(vn,Or,xr,Wr,Ci){return jt(Or(xr,cf(vn,z(),Wr,Ci)),vn)}function wte(vn,Or,xr,Wr){let Ci=Ue(!0);return L_(),jt(m.createJSDocThisTag(Or,Ci,cf(vn,z(),xr,Wr)),vn)}function Rte(vn,Or,xr,Wr){let Ci=Ue(!0);return L_(),jt(m.createJSDocEnumTag(Or,Ci,cf(vn,z(),xr,Wr)),vn)}function mC(vn,Or,xr,Wr){var Ci;let eo=gy();Mv();let _o=Kk();L_();let jd=Bx(xr),k_;if(!eo||ad(eo.type)){let xm,dh,yC,vu=!1;for(;xm=Fo(()=>Ux(xr));)if(vu=!0,xm.kind===347)if(dh){let Kb=rt(_.A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags);Kb&&Ao(Kb,n2(Pe,0,0,_.The_tag_was_first_specified_here));break}else dh=xm;else yC=Sn(yC,xm);if(vu){let Kb=eo&&eo.type.kind===185,qk=m.createJSDocTypeLiteral(yC,Kb);eo=dh&&dh.typeExpression&&!ad(dh.typeExpression.type)?dh.typeExpression:jt(qk,vn),k_=eo.end}}k_=k_||jd!==void 0?z():((Ci=_o??eo)!=null?Ci:Or).end,jd||(jd=cf(vn,k_,xr,Wr));let uh=m.createJSDocTypedefTag(Or,eo,_o,jd);return jt(uh,vn,k_)}function Kk(vn){let Or=t.getTokenPos();if(!Su(j()))return;let xr=Uv();if(aa(24)){let Wr=Kk(!0),Ci=m.createModuleDeclaration(void 0,xr,Wr,vn?4:void 0);return jt(Ci,Or)}return vn&&(xr.flags|=2048),xr}function Ote(vn){let Or=z(),xr,Wr;for(;xr=Fo(()=>BE(4,vn));)Wr=Sn(Wr,xr);return As(Wr||[],Or)}function hC(vn,Or){let xr=Ote(Or),Wr=Fo(()=>{if(w1(59)){let Ci=pC(Or);if(Ci&&Ci.kind===345)return Ci}});return jt(m.createJSDocSignature(void 0,xr,Wr),vn)}function zn(vn,Or,xr,Wr){let Ci=Kk();L_();let eo=Bx(xr),_o=hC(vn,xr);eo||(eo=cf(vn,z(),xr,Wr));let jd=eo!==void 0?z():_o.end;return jt(m.createJSDocCallbackTag(Or,_o,Ci,eo),vn,jd)}function Gv(vn,Or,xr,Wr){L_();let Ci=Bx(xr),eo=hC(vn,xr);Ci||(Ci=cf(vn,z(),xr,Wr));let _o=Ci!==void 0?z():eo.end;return jt(m.createJSDocOverloadTag(Or,eo,Ci),vn,_o)}function Bv(vn,Or){for(;!Re(vn)||!Re(Or);)if(!Re(vn)&&!Re(Or)&&vn.right.escapedText===Or.right.escapedText)vn=vn.left,Or=Or.left;else return!1;return vn.escapedText===Or.escapedText}function Ux(vn){return BE(1,vn)}function BE(vn,Or,xr){let Wr=!0,Ci=!1;for(;;)switch(Vt()){case 59:if(Wr){let eo=XP(vn,Or);return eo&&(eo.kind===344||eo.kind===351)&&vn!==4&&xr&&(Re(eo.name)||!Bv(xr,eo.name.left))?!1:eo}Ci=!1;break;case 4:Wr=!0,Ci=!1;break;case 41:Ci&&(Wr=!1),Ci=!0;break;case 79:Wr=!1;break;case 1:return!1}}function XP(vn,Or){L.assert(j()===59);let xr=t.getStartPos();Vt();let Wr=Uv();L_();let Ci;switch(Wr.escapedText){case\"type\":return vn===1&&N(xr,Wr);case\"prop\":case\"property\":Ci=1;break;case\"arg\":case\"argument\":case\"param\":Ci=6;break;default:return!1}return vn&Ci?Jk(xr,Wr,vn,Or):!1}function gC(){let vn=z(),Or=w1(22);Or&&L_();let xr=Uv(_.Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces),Wr;if(Or&&(L_(),yn(63),Wr=Se(8388608,Mc),yn(23)),!rc(xr))return jt(m.createTypeParameterDeclaration(void 0,xr,void 0,Wr),vn)}function WG(){let vn=z(),Or=[];do{L_();let xr=gC();xr!==void 0&&Or.push(xr),Mv()}while(w1(27));return As(Or,vn)}function yy(vn,Or,xr,Wr){let Ci=j()===18?Ue():void 0,eo=WG();return jt(m.createJSDocTemplateTag(Or,Ci,eo,cf(vn,z(),xr,Wr)),vn)}function w1(vn){return j()===vn?(Vt(),!0):!1}function YP(){let vn=Uv();for(aa(22)&&yn(23);aa(24);){let Or=Uv();aa(22)&&yn(23),vn=zf(vn,Or)}return vn}function Uv(vn){if(!Su(j()))return yc(79,!vn,vn||_.Identifier_expected);zt++;let Or=t.getTokenPos(),xr=t.getTextPos(),Wr=j(),Ci=Ql(t.getTokenValue()),eo=jt(w(Ci,Wr),Or,xr);return Vt(),eo}}})(Fx=e.JSDocParser||(e.JSDocParser={}))})(av||(av={})),(e=>{function t(x,A,w,C){if(C=C||L.shouldAssert(2),m(x,A,w,C),Moe(w))return x;if(x.statements.length===0)return av.parseSourceFile(x.fileName,A,x.languageVersion,void 0,!0,x.scriptKind,x.setExternalModuleIndicator);let P=x;L.assert(!P.hasBeenIncrementallyParsed),P.hasBeenIncrementallyParsed=!0,av.fixupParentReferences(P);let F=x.text,B=v(x),q=d(x,w);m(x,A,q,C),L.assert(q.span.start<=w.span.start),L.assert(wl(q.span)===wl(w.span)),L.assert(wl(dI(q))===wl(dI(w)));let W=dI(q).length-q.span.length;f(P,q.span.start,wl(q.span),wl(dI(q)),W,F,A,C);let Y=av.parseSourceFile(x.fileName,A,x.languageVersion,B,!0,x.scriptKind,x.setExternalModuleIndicator);return Y.commentDirectives=r(x.commentDirectives,Y.commentDirectives,q.span.start,wl(q.span),W,F,A,C),Y.impliedNodeFormat=x.impliedNodeFormat,Y}e.updateSourceFile=t;function r(x,A,w,C,P,F,B,q){if(!x)return A;let W,Y=!1;for(let ie of x){let{range:Q,type:fe}=ie;if(Q.end<w)W=Sn(W,ie);else if(Q.pos>C){R();let Z={range:{pos:Q.pos+P,end:Q.end+P},type:fe};W=Sn(W,Z),q&&L.assert(F.substring(Q.pos,Q.end)===B.substring(Z.range.pos,Z.range.end))}}return R(),W;function R(){Y||(Y=!0,W?A&&W.push(...A):W=A)}}function i(x,A,w,C,P,F){A?q(x):B(x);return;function B(W){let Y=\"\";if(F&&o(W)&&(Y=C.substring(W.pos,W.end)),W._children&&(W._children=void 0),om(W,W.pos+w,W.end+w),F&&o(W)&&L.assert(Y===P.substring(W.pos,W.end)),pa(W,B,q),Jd(W))for(let R of W.jsDoc)B(R);l(W,F)}function q(W){W._children=void 0,om(W,W.pos+w,W.end+w);for(let Y of W)B(Y)}}function o(x){switch(x.kind){case 10:case 8:case 79:return!0}return!1}function s(x,A,w,C,P){L.assert(x.end>=A,\"Adjusting an element that was entirely before the change range\"),L.assert(x.pos<=w,\"Adjusting an element that was entirely after the change range\"),L.assert(x.pos<=x.end);let F=Math.min(x.pos,C),B=x.end>=w?x.end+P:Math.min(x.end,C);L.assert(F<=B),x.parent&&(L.assertGreaterThanOrEqual(F,x.parent.pos),L.assertLessThanOrEqual(B,x.parent.end)),om(x,F,B)}function l(x,A){if(A){let w=x.pos,C=P=>{L.assert(P.pos>=w),w=P.end};if(Jd(x))for(let P of x.jsDoc)C(P);pa(x,C),L.assert(w<=x.end)}}function f(x,A,w,C,P,F,B,q){W(x);return;function W(R){if(L.assert(R.pos<=R.end),R.pos>w){i(R,!1,P,F,B,q);return}let ie=R.end;if(ie>=A){if(R.intersectsChange=!0,R._children=void 0,s(R,A,w,C,P),pa(R,W,Y),Jd(R))for(let Q of R.jsDoc)W(Q);l(R,q);return}L.assert(ie<A)}function Y(R){if(L.assert(R.pos<=R.end),R.pos>w){i(R,!0,P,F,B,q);return}let ie=R.end;if(ie>=A){R.intersectsChange=!0,R._children=void 0,s(R,A,w,C,P);for(let Q of R)W(Q);return}L.assert(ie<A)}}function d(x,A){let C=A.span.start;for(let B=0;C>0&&B<=1;B++){let q=g(x,C);L.assert(q.pos<=C);let W=q.pos;C=Math.max(0,W-1)}let P=Wc(C,wl(A.span)),F=A.newLength+(A.span.start-C);return xw(P,F)}function g(x,A){let w=x,C;if(pa(x,F),C){let B=P(C);B.pos>w.pos&&(w=B)}return w;function P(B){for(;;){let q=yW(B);if(q)B=q;else return B}}function F(B){if(!rc(B))if(B.pos<=A){if(B.pos>=w.pos&&(w=B),A<B.end)return pa(B,F),!0;L.assert(B.end<=A),C=B}else return L.assert(B.pos>A),!0}}function m(x,A,w,C){let P=x.text;if(w&&(L.assert(P.length-w.span.length+w.newLength===A.length),C||L.shouldAssert(3))){let F=P.substr(0,w.span.start),B=A.substr(0,w.span.start);L.assert(F===B);let q=P.substring(wl(w.span),P.length),W=A.substring(wl(dI(w)),A.length);L.assert(q===W)}}function v(x){let A=x.statements,w=0;L.assert(w<A.length);let C=A[w],P=-1;return{currentNode(B){return B!==P&&(C&&C.end===B&&w<A.length-1&&(w++,C=A[w]),(!C||C.pos!==B)&&F(B)),P=B,L.assert(!C||C.pos===B),C}};function F(B){A=void 0,w=-1,C=void 0,pa(x,q,W);return;function q(Y){return B>=Y.pos&&B<Y.end?(pa(Y,q,W),!0):!1}function W(Y){if(B>=Y.pos&&B<Y.end)for(let R=0;R<Y.length;R++){let ie=Y[R];if(ie){if(ie.pos===B)return A=Y,w=R,C=ie,!0;if(ie.pos<B&&B<ie.end)return pa(ie,q,W),!0}}return!1}}}e.createSyntaxCursor=v;let S;(x=>{x[x.Value=-1]=\"Value\"})(S||(S={}))})(D3||(D3={})),w3=new Map,Wde=/^\\/\\/\\/\\s*<(\\S+)\\s.*?\\/>/im,zde=/^\\/\\/\\/?\\s*@(\\S+)\\s*(.*)\\s*$/im}});function R3(e){let t=new Map,r=new Map;return mn(e,i=>{t.set(i.name.toLowerCase(),i),i.shortName&&r.set(i.shortName,i.name)}),{optionsNameMap:t,shortOptionNames:r}}function R2(){return Efe||(Efe=R3(Fh))}function pJ(e){return Jde(e,ps)}function Jde(e,t){let r=lo(e.type.keys()),i=(e.deprecatedKeys?r.filter(o=>!e.deprecatedKeys.has(o)):r).map(o=>`'${o}'`).join(\", \");return t(_.Argument_for_0_option_must_be_Colon_1,`--${e.name}`,i)}function O3(e,t,r){return mfe(e,v0(t||\"\"),r)}function Kde(e,t=\"\",r){if(t=v0(t),na(t,\"-\"))return;if(e.type===\"listOrElement\"&&!jl(t,\",\"))return WT(e,t,r);if(t===\"\")return[];let i=t.split(\",\");switch(e.element.type){case\"number\":return Zi(i,o=>WT(e.element,parseInt(o),r));case\"string\":return Zi(i,o=>WT(e.element,o||\"\",r));case\"boolean\":case\"object\":return L.fail(`List of ${e.element.type} is not yet supported.`);default:return Zi(i,o=>O3(e.element,o,r))}}function qde(e){return e.name}function mJ(e,t,r,i){var o;if((o=t.alternateMode)!=null&&o.getOptionsNameMap().optionsNameMap.has(e.toLowerCase()))return r(t.alternateMode.diagnostic,e);let s=QC(e,t.optionDeclarations,qde);return s?r(t.unknownDidYouMeanDiagnostic,i||e,s.name):r(t.unknownOptionDiagnostic,i||e)}function hJ(e,t,r){let i={},o,s=[],l=[];return f(t),{options:i,watchOptions:o,fileNames:s,errors:l};function f(g){let m=0;for(;m<g.length;){let v=g[m];if(m++,v.charCodeAt(0)===64)d(v.slice(1));else if(v.charCodeAt(0)===45){let S=v.slice(v.charCodeAt(1)===45?2:1),x=yJ(e.getOptionsNameMap,S,!0);if(x)m=Xde(g,m,e,x,i,l);else{let A=yJ(qO.getOptionsNameMap,S,!0);A?m=Xde(g,m,qO,A,o||(o={}),l):l.push(mJ(S,e,ps,v))}}else s.push(v)}}function d(g){let m=PO(g,r||(x=>xl.readFile(x)));if(!Ta(m)){l.push(m);return}let v=[],S=0;for(;;){for(;S<m.length&&m.charCodeAt(S)<=32;)S++;if(S>=m.length)break;let x=S;if(m.charCodeAt(x)===34){for(S++;S<m.length&&m.charCodeAt(S)!==34;)S++;S<m.length?(v.push(m.substring(x+1,S)),S++):l.push(ps(_.Unterminated_quoted_string_in_response_file_0,g))}else{for(;m.charCodeAt(S)>32;)S++;v.push(m.substring(x,S))}}f(v)}}function Xde(e,t,r,i,o,s){if(i.isTSConfigOnly){let l=e[t];l===\"null\"?(o[i.name]=void 0,t++):i.type===\"boolean\"?l===\"false\"?(o[i.name]=WT(i,!1,s),t++):(l===\"true\"&&t++,s.push(ps(_.Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_false_or_null_on_command_line,i.name))):(s.push(ps(_.Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_null_on_command_line,i.name)),l&&!na(l,\"-\")&&t++)}else if(!e[t]&&i.type!==\"boolean\"&&s.push(ps(r.optionTypeMismatchDiagnostic,i.name,NL(i))),e[t]!==\"null\")switch(i.type){case\"number\":o[i.name]=WT(i,parseInt(e[t]),s),t++;break;case\"boolean\":let l=e[t];o[i.name]=WT(i,l!==\"false\",s),(l===\"false\"||l===\"true\")&&t++;break;case\"string\":o[i.name]=WT(i,e[t]||\"\",s),t++;break;case\"list\":let f=Kde(i,e[t],s);o[i.name]=f||[],f&&t++;break;case\"listOrElement\":L.fail(\"listOrElement not supported here\");break;default:o[i.name]=O3(i,e[t],s),t++;break}else o[i.name]=void 0,t++;return t}function $Oe(e,t){return hJ(KO,e,t)}function gJ(e,t){return yJ(R2,e,t)}function yJ(e,t,r=!1){t=t.toLowerCase();let{optionsNameMap:i,shortOptionNames:o}=e();if(r){let s=o.get(t);s!==void 0&&(t=s)}return i.get(t)}function Yde(){return Sfe||(Sfe=R3(j3))}function QOe(e){let{options:t,watchOptions:r,fileNames:i,errors:o}=hJ(Afe,e),s=t;return i.length===0&&i.push(\".\"),s.clean&&s.force&&o.push(ps(_.Options_0_and_1_cannot_be_combined,\"clean\",\"force\")),s.clean&&s.verbose&&o.push(ps(_.Options_0_and_1_cannot_be_combined,\"clean\",\"verbose\")),s.clean&&s.watch&&o.push(ps(_.Options_0_and_1_cannot_be_combined,\"clean\",\"watch\")),s.watch&&s.dry&&o.push(ps(_.Options_0_and_1_cannot_be_combined,\"watch\",\"dry\")),{buildOptions:s,watchOptions:r,projects:i,errors:o}}function ZOe(e,...t){return ps.apply(void 0,arguments).messageText}function OO(e,t,r,i,o,s){let l=PO(e,g=>r.readFile(g));if(!Ta(l)){r.onUnRecoverableConfigFileDiagnostic(l);return}let f=RO(e,l),d=r.getCurrentDirectory();return f.path=Ts(e,d,Dl(r.useCaseSensitiveFileNames)),f.resolvedPath=f.path,f.originalFileName=f.fileName,FO(f,r,_a(ni(e),d),t,_a(e,d),void 0,s,i,o)}function NO(e,t){let r=PO(e,t);return Ta(r)?vJ(e,r):{config:{},error:r}}function vJ(e,t){let r=RO(e,t);return{config:nfe(r,r.parseDiagnostics,!1,void 0),error:r.parseDiagnostics.length?r.parseDiagnostics[0]:void 0}}function $de(e,t){let r=PO(e,t);return Ta(r)?RO(e,r):{fileName:e,parseDiagnostics:[r]}}function PO(e,t){let r;try{r=t(e)}catch(i){return ps(_.Cannot_read_file_0_Colon_1,e,i.message)}return r===void 0?ps(_.Cannot_read_file_0,e):r}function N3(e){return p0(e,qde)}function Qde(){return Cfe||(Cfe=R3(WO))}function Zde(){return Ife||(Ife=N3(Fh))}function efe(){return Lfe||(Lfe=N3(WO))}function tfe(){return kfe||(kfe=N3(H3))}function eNe(){return jJ===void 0&&(jJ={name:void 0,type:\"object\",elementOptions:N3([{name:\"compilerOptions\",type:\"object\",elementOptions:Zde(),extraKeyDiagnostics:KO},{name:\"watchOptions\",type:\"object\",elementOptions:efe(),extraKeyDiagnostics:qO},{name:\"typeAcquisition\",type:\"object\",elementOptions:tfe(),extraKeyDiagnostics:VJ},XO,{name:\"references\",type:\"list\",element:{name:\"references\",type:\"object\"},category:_.Projects},{name:\"files\",type:\"list\",element:{name:\"files\",type:\"string\"},category:_.File_Management},{name:\"include\",type:\"list\",element:{name:\"include\",type:\"string\"},category:_.File_Management,defaultValueDescription:_.if_files_is_specified_otherwise_Asterisk_Asterisk_Slash_Asterisk},{name:\"exclude\",type:\"list\",element:{name:\"exclude\",type:\"string\"},category:_.File_Management,defaultValueDescription:_.node_modules_bower_components_jspm_packages_plus_the_value_of_outDir_if_one_is_specified},VO])}),jJ}function nfe(e,t,r,i){var o;let s=(o=e.statements[0])==null?void 0:o.expression,l=r?eNe():void 0;if(s&&s.kind!==207){if(t.push(Nu(e,s,_.The_root_value_of_a_0_file_must_be_an_object,Hl(e.fileName)===\"jsconfig.json\"?\"jsconfig.json\":\"tsconfig.json\")),fu(s)){let f=wr(s.elements,rs);if(f)return MO(e,f,t,!0,l,i)}return{}}return MO(e,s,t,!0,l,i)}function rfe(e,t){var r;return MO(e,(r=e.statements[0])==null?void 0:r.expression,t,!0,void 0,void 0)}function MO(e,t,r,i,o,s){if(!t)return i?{}:void 0;return g(t,o);function l(v){return o&&o.elementOptions===v}function f(v,S,x,A){let w=i?{}:void 0;for(let C of v.properties){if(C.kind!==299){r.push(Nu(e,C,_.Property_assignment_expected));continue}C.questionToken&&r.push(Nu(e,C.questionToken,_.The_0_modifier_can_only_be_used_in_TypeScript_files,\"?\")),m(C.name)||r.push(Nu(e,C.name,_.String_literal_with_double_quotes_expected));let P=jw(C.name)?void 0:RA(C.name),F=P&&Gi(P),B=F&&S?S.get(F):void 0;F&&x&&!B&&(S?r.push(mJ(F,x,(W,Y,R)=>Nu(e,C.name,W,Y,R))):r.push(Nu(e,C.name,x.unknownOptionDiagnostic,F)));let q=g(C.initializer,B);if(typeof F<\"u\"&&(i&&(w[F]=q),s&&(A||l(S)))){let W=P3(B,q);A?W&&s.onSetValidOptionKeyValueInParent(A,B,q):l(S)&&(W?s.onSetValidOptionKeyValueInRoot(F,C.name,q,C.initializer):B||s.onSetUnknownOptionKeyValueInRoot(F,C.name,q,C.initializer))}}return w}function d(v,S){if(!i){v.forEach(x=>g(x,S));return}return Pr(v.map(x=>g(x,S)),x=>x!==void 0)}function g(v,S){let x;switch(v.kind){case 110:return w(S&&S.type!==\"boolean\"&&(S.type!==\"listOrElement\"||S.element.type!==\"boolean\")),A(!0);case 95:return w(S&&S.type!==\"boolean\"&&(S.type!==\"listOrElement\"||S.element.type!==\"boolean\")),A(!1);case 104:return w(S&&S.name===\"extends\"),A(null);case 10:m(v)||r.push(Nu(e,v,_.String_literal_with_double_quotes_expected)),w(S&&Ta(S.type)&&S.type!==\"string\"&&(S.type!==\"listOrElement\"||Ta(S.element.type)&&S.element.type!==\"string\"));let C=v.text;if(S&&L.assert(S.type!==\"listOrElement\"||S.element.type===\"string\",\"Only string or array of string is handled for now\"),S&&!Ta(S.type)){let F=S;F.type.has(C.toLowerCase())||(r.push(Jde(F,(B,q,W)=>Nu(e,v,B,q,W))),x=!0)}return A(C);case 8:return w(S&&S.type!==\"number\"&&(S.type!==\"listOrElement\"||S.element.type!==\"number\")),A(Number(v.text));case 221:if(v.operator!==40||v.operand.kind!==8)break;return w(S&&S.type!==\"number\"&&(S.type!==\"listOrElement\"||S.element.type!==\"number\")),A(-Number(v.operand.text));case 207:w(S&&S.type!==\"object\"&&(S.type!==\"listOrElement\"||S.element.type!==\"object\"));let P=v;if(S){let{elementOptions:F,extraKeyDiagnostics:B,name:q}=S;return A(f(P,F,B,q))}else return A(f(P,void 0,void 0,void 0));case 206:return w(S&&S.type!==\"list\"&&S.type!==\"listOrElement\"),A(d(v.elements,S&&S.element))}S?w(!0):r.push(Nu(e,v,_.Property_value_can_only_be_string_literal_numeric_literal_true_false_null_object_literal_or_array_literal));return;function A(C){var P;if(!x){let F=(P=S?.extraValidation)==null?void 0:P.call(S,C);if(F){r.push(Nu(e,v,...F));return}}return C}function w(C){C&&(r.push(Nu(e,v,_.Compiler_option_0_requires_a_value_of_type_1,S.name,NL(S))),x=!0)}}function m(v){return yo(v)&&V6(v,e)}}function NL(e){return e.type===\"listOrElement\"?`${NL(e.element)} or Array`:e.type===\"list\"?\"Array\":Ta(e.type)?e.type:\"string\"}function P3(e,t){if(e){if(O2(t))return!0;if(e.type===\"list\")return ba(t);if(e.type===\"listOrElement\")return ba(t)||P3(e.element,t);let r=Ta(e.type)?e.type:\"string\";return typeof t===r}return!1}function tNe(e,t,r){var i,o,s;let l=Dl(r.useCaseSensitiveFileNames),f=on(Pr(e.fileNames,(o=(i=e.options.configFile)==null?void 0:i.configFileSpecs)!=null&&o.validatedIncludeSpecs?rNe(t,e.options.configFile.configFileSpecs.validatedIncludeSpecs,e.options.configFile.configFileSpecs.validatedExcludeSpecs,r):h0),v=>pw(_a(t,r.getCurrentDirectory()),_a(v,r.getCurrentDirectory()),l)),d=TJ(e.options,{configFilePath:_a(t,r.getCurrentDirectory()),useCaseSensitiveFileNames:r.useCaseSensitiveFileNames}),g=e.watchOptions&&iNe(e.watchOptions);return{compilerOptions:{...bJ(d),showConfig:void 0,configFile:void 0,configFilePath:void 0,help:void 0,init:void 0,listFiles:void 0,listEmittedFiles:void 0,project:void 0,build:void 0,version:void 0},watchOptions:g&&bJ(g),references:on(e.projectReferences,v=>({...v,path:v.originalPath?v.originalPath:\"\",originalPath:void 0})),files:Fn(f)?f:void 0,...(s=e.options.configFile)!=null&&s.configFileSpecs?{include:nNe(e.options.configFile.configFileSpecs.validatedIncludeSpecs),exclude:e.options.configFile.configFileSpecs.validatedExcludeSpecs}:{},compileOnSave:e.compileOnSave?!0:void 0}}function bJ(e){return{...lo(e.entries()).reduce((t,r)=>({...t,[r[0]]:r[1]}),{})}}function nNe(e){if(!!Fn(e)){if(Fn(e)!==1)return e;if(e[0]!==z3)return e}}function rNe(e,t,r,i){if(!t)return h0;let o=nL(e,r,t,i.useCaseSensitiveFileNames,i.getCurrentDirectory()),s=o.excludePattern&&Qy(o.excludePattern,i.useCaseSensitiveFileNames),l=o.includeFilePattern&&Qy(o.includeFilePattern,i.useCaseSensitiveFileNames);return l?s?f=>!(l.test(f)&&!s.test(f)):f=>!l.test(f):s?f=>s.test(f):h0}function ife(e){switch(e.type){case\"string\":case\"number\":case\"boolean\":case\"object\":return;case\"list\":case\"listOrElement\":return ife(e.element);default:return e.type}}function EJ(e,t){return Ld(t,(r,i)=>{if(r===e)return i})}function TJ(e,t){return afe(e,R2(),t)}function iNe(e){return afe(e,Qde())}function afe(e,{optionsNameMap:t},r){let i=new Map,o=r&&Dl(r.useCaseSensitiveFileNames);for(let s in e)if(fs(e,s)){if(t.has(s)&&(t.get(s).category===_.Command_line_Options||t.get(s).category===_.Output_Formatting))continue;let l=e[s],f=t.get(s.toLowerCase());if(f){L.assert(f.type!==\"listOrElement\");let d=ife(f);d?f.type===\"list\"?i.set(s,l.map(g=>EJ(g,d))):i.set(s,EJ(l,d)):r&&f.isFilePath?i.set(s,pw(r.configFilePath,_a(l,ni(r.configFilePath)),o)):i.set(s,l)}}return i}function aNe(e,t){let r=ofe(e);return o();function i(s){return Array(s+1).join(\" \")}function o(){let s=[],l=i(2);return B3.forEach(f=>{if(!r.has(f.name))return;let d=r.get(f.name),g=wJ(f);d!==g?s.push(`${l}${f.name}: ${d}`):fs(W3,f.name)&&s.push(`${l}${f.name}: ${g}`)}),s.join(t)+t}}function ofe(e){let t=d8(e,W3);return TJ(t)}function oNe(e,t,r){let i=ofe(e);return l();function o(f){return Array(f+1).join(\" \")}function s({category:f,name:d,isCommandLineOnly:g}){let m=[_.Command_line_Options,_.Editor_Support,_.Compiler_Diagnostics,_.Backwards_Compatibility,_.Watch_and_Build_Modes,_.Output_Formatting];return!g&&f!==void 0&&(!m.includes(f)||i.has(d))}function l(){let f=new Map;f.set(_.Projects,[]),f.set(_.Language_and_Environment,[]),f.set(_.Modules,[]),f.set(_.JavaScript_Support,[]),f.set(_.Emit,[]),f.set(_.Interop_Constraints,[]),f.set(_.Type_Checking,[]),f.set(_.Completeness,[]);for(let x of Fh)if(s(x)){let A=f.get(x.category);A||f.set(x.category,A=[]),A.push(x)}let d=0,g=0,m=[];f.forEach((x,A)=>{m.length!==0&&m.push({value:\"\"}),m.push({value:`/* ${uo(A)} */`});for(let w of x){let C;i.has(w.name)?C=`\"${w.name}\": ${JSON.stringify(i.get(w.name))}${(g+=1)===i.size?\"\":\",\"}`:C=`// \"${w.name}\": ${JSON.stringify(wJ(w))},`,m.push({value:C,description:`/* ${w.description&&uo(w.description)||w.name} */`}),d=Math.max(C.length,d)}});let v=o(2),S=[];S.push(\"{\"),S.push(`${v}\"compilerOptions\": {`),S.push(`${v}${v}/* ${uo(_.Visit_https_Colon_Slash_Slashaka_ms_Slashtsconfig_to_read_more_about_this_file)} */`),S.push(\"\");for(let x of m){let{value:A,description:w=\"\"}=x;S.push(A&&`${v}${v}${A}${w&&o(d-A.length+2)+w}`)}if(t.length){S.push(`${v}},`),S.push(`${v}\"files\": [`);for(let x=0;x<t.length;x++)S.push(`${v}${v}${JSON.stringify(t[x])}${x===t.length-1?\"\":\",\"}`);S.push(`${v}]`)}else S.push(`${v}}`);return S.push(\"}\"),S.join(r)+r}}function SJ(e,t){let r={},i=R2().optionsNameMap;for(let o in e)fs(e,o)&&(r[o]=sNe(i.get(o.toLowerCase()),e[o],t));return r.configFilePath&&(r.configFilePath=t(r.configFilePath)),r}function sNe(e,t,r){if(e&&!O2(t)){if(e.type===\"list\"){let i=t;if(e.element.isFilePath&&i.length)return i.map(r)}else if(e.isFilePath)return r(t);L.assert(e.type!==\"listOrElement\")}return t}function cNe(e,t,r,i,o,s,l,f,d){return sfe(e,void 0,t,r,i,d,o,s,l,f)}function FO(e,t,r,i,o,s,l,f,d){var g,m;(g=ai)==null||g.push(ai.Phase.Parse,\"parseJsonSourceFileConfigFileContent\",{path:e.fileName});let v=sfe(void 0,e,t,r,i,d,o,s,l,f);return(m=ai)==null||m.pop(),v}function xJ(e,t){t&&Object.defineProperty(e,\"configFile\",{enumerable:!1,writable:!1,value:t})}function O2(e){return e==null}function AJ(e,t){return ni(_a(e,t))}function sfe(e,t,r,i,o={},s,l,f=[],d=[],g){L.assert(e===void 0&&t!==void 0||e!==void 0&&t===void 0);let m=[],v=ufe(e,t,r,i,l,f,m,g),{raw:S}=v,x=d8(o,v.options||{}),A=s&&v.watchOptions?d8(s,v.watchOptions):v.watchOptions||s;x.configFilePath=l&&Al(l);let w=P();t&&(t.configFileSpecs=w),xJ(x,t);let C=So(l?AJ(l,i):i);return{options:x,watchOptions:A,fileNames:F(C),projectReferences:B(C),typeAcquisition:v.typeAcquisition||F3(),raw:S,errors:m,wildcardDirectories:yNe(w,C,r.useCaseSensitiveFileNames),compileOnSave:!!S.compileOnSave};function P(){let ie=Y(\"references\",ge=>typeof ge==\"object\",\"object\"),Q=q(W(\"files\"));if(Q){let ge=ie===\"no-prop\"||ba(ie)&&ie.length===0,X=fs(S,\"extends\");if(Q.length===0&&ge&&!X)if(t){let Ve=l||\"tsconfig.json\",we=_.The_files_list_in_config_file_0_is_empty,ke=ks(Ww(t,\"files\"),Ce=>Ce.initializer),Pe=ke?Nu(t,ke,we,Ve):ps(we,Ve);m.push(Pe)}else R(_.The_files_list_in_config_file_0_is_empty,l||\"tsconfig.json\")}let fe=q(W(\"include\")),Z=W(\"exclude\"),U=!1,re=q(Z);if(Z===\"no-prop\"&&S.compilerOptions){let ge=S.compilerOptions.outDir,X=S.compilerOptions.declarationDir;(ge||X)&&(re=[ge,X].filter(Ve=>!!Ve))}Q===void 0&&fe===void 0&&(fe=[z3],U=!0);let le,_e;return fe&&(le=bfe(fe,m,!0,t,\"include\")),re&&(_e=bfe(re,m,!1,t,\"exclude\")),{filesSpecs:Q,includeSpecs:fe,excludeSpecs:re,validatedFilesSpec:Pr(Q,Ta),validatedIncludeSpecs:le,validatedExcludeSpecs:_e,pathPatterns:void 0,isDefaultIncludeSpec:U}}function F(ie){let Q=UO(w,ie,x,r,d);return lfe(Q,GO(S),f)&&m.push(cfe(w,l)),Q}function B(ie){let Q,fe=Y(\"references\",Z=>typeof Z==\"object\",\"object\");if(ba(fe))for(let Z of fe)typeof Z.path!=\"string\"?R(_.Compiler_option_0_requires_a_value_of_type_1,\"reference.path\",\"string\"):(Q||(Q=[])).push({path:_a(Z.path,ie),originalPath:Z.path,prepend:Z.prepend,circular:Z.circular});return Q}function q(ie){return ba(ie)?ie:void 0}function W(ie){return Y(ie,Ta,\"string\")}function Y(ie,Q,fe){if(fs(S,ie)&&!O2(S[ie]))if(ba(S[ie])){let Z=S[ie];return!t&&!Ji(Z,Q)&&m.push(ps(_.Compiler_option_0_requires_a_value_of_type_1,ie,fe)),Z}else return R(_.Compiler_option_0_requires_a_value_of_type_1,ie,\"Array\"),\"not-array\";return\"no-prop\"}function R(ie,Q,fe){t||m.push(ps(ie,Q,fe))}}function lNe(e){return e.code===_.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2.code}function cfe({includeSpecs:e,excludeSpecs:t},r){return ps(_.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2,r||\"tsconfig.json\",JSON.stringify(e||[]),JSON.stringify(t||[]))}function lfe(e,t,r){return e.length===0&&t&&(!r||r.length===0)}function GO(e){return!fs(e,\"files\")&&!fs(e,\"references\")}function CJ(e,t,r,i,o){let s=i.length;return lfe(e,o)?i.push(cfe(r,t)):wU(i,l=>!lNe(l)),s!==i.length}function uNe(e){return!!e.options}function ufe(e,t,r,i,o,s,l,f){var d;i=Al(i);let g=_a(o||\"\",i);if(s.indexOf(g)>=0)return l.push(ps(_.Circularity_detected_while_resolving_configuration_Colon_0,[...s,g].join(\" -> \"))),{raw:e||rfe(t,l)};let m=e?dNe(e,r,i,o,l):fNe(t,r,i,o,l);if((d=m.options)!=null&&d.paths&&(m.options.pathsBasePath=i),m.extendedConfigPath){s=s.concat([g]);let S={options:{}};Ta(m.extendedConfigPath)?v(S,m.extendedConfigPath):m.extendedConfigPath.forEach(x=>v(S,x)),!m.raw.include&&S.include&&(m.raw.include=S.include),!m.raw.exclude&&S.exclude&&(m.raw.exclude=S.exclude),!m.raw.files&&S.files&&(m.raw.files=S.files),m.raw.compileOnSave===void 0&&S.compileOnSave&&(m.raw.compileOnSave=S.compileOnSave),t&&S.extendedSourceFiles&&(t.extendedSourceFiles=lo(S.extendedSourceFiles.keys())),m.options=KD(S.options,m.options),m.watchOptions=m.watchOptions&&S.watchOptions?KD(S.watchOptions,m.watchOptions):m.watchOptions||S.watchOptions}return m;function v(S,x){let A=_Ne(t,x,r,s,l,f,S);if(A&&uNe(A)){let w=A.raw,C,P=F=>{w[F]&&(S[F]=on(w[F],B=>qp(B)?B:vi(C||(C=iI(ni(x),i,Dl(r.useCaseSensitiveFileNames))),B)))};P(\"include\"),P(\"exclude\"),P(\"files\"),w.compileOnSave!==void 0&&(S.compileOnSave=w.compileOnSave),KD(S.options,A.options),S.watchOptions=S.watchOptions&&A.watchOptions?KD({},S.watchOptions,A.watchOptions):S.watchOptions||A.watchOptions}}}function dNe(e,t,r,i,o){fs(e,\"excludes\")&&o.push(ps(_.Unknown_option_excludes_Did_you_mean_exclude));let s=ffe(e.compilerOptions,r,o,i),l=_fe(e.typeAcquisition,r,o,i),f=gNe(e.watchOptions,r,o);e.compileOnSave=pNe(e,r,o);let d;if(e.extends||e.extends===\"\")if(!P3(XO,e.extends))o.push(ps(_.Compiler_option_0_requires_a_value_of_type_1,\"extends\",NL(XO)));else{let g=i?AJ(i,r):r;if(Ta(e.extends))d=M3(e.extends,t,g,o,ps);else{d=[];for(let m of e.extends)Ta(m)?d=Sn(d,M3(m,t,g,o,ps)):o.push(ps(_.Compiler_option_0_requires_a_value_of_type_1,\"extends\",NL(XO.element)))}}return{raw:e,options:s,watchOptions:f,typeAcquisition:l,extendedConfigPath:d}}function fNe(e,t,r,i,o){let s=dfe(i),l,f,d,g,v=nfe(e,o,!0,{onSetValidOptionKeyValueInParent(S,x,A){let w;switch(S){case\"compilerOptions\":w=s;break;case\"watchOptions\":w=f||(f={});break;case\"typeAcquisition\":w=l||(l=F3(i));break;default:L.fail(\"Unknown option\")}w[x.name]=LJ(x,r,A)},onSetValidOptionKeyValueInRoot(S,x,A,w){switch(S){case\"extends\":let C=i?AJ(i,r):r;if(Ta(A))d=M3(A,t,C,o,(P,F)=>Nu(e,w,P,F));else{d=[];for(let P=0;P<A.length;P++){let F=A[P];Ta(F)&&(d=Sn(d,M3(F,t,C,o,(B,q)=>Nu(e,w.elements[P],B,q))))}}return}},onSetUnknownOptionKeyValueInRoot(S,x,A,w){S===\"excludes\"&&o.push(Nu(e,x,_.Unknown_option_excludes_Did_you_mean_exclude)),wr(B3,C=>C.name===S)&&(g=Sn(g,x))}});return l||(l=F3(i)),g&&v&&v.compilerOptions===void 0&&o.push(Nu(e,g[0],_._0_should_be_set_inside_the_compilerOptions_object_of_the_config_json_file,RA(g[0]))),{raw:v,options:s,watchOptions:f,typeAcquisition:l,extendedConfigPath:d}}function M3(e,t,r,i,o){if(e=Al(e),qp(e)||na(e,\"./\")||na(e,\"../\")){let l=_a(e,r);if(!t.fileExists(l)&&!Oc(l,\".json\")&&(l=`${l}.json`,!t.fileExists(l))){i.push(o(_.File_0_not_found,e));return}return l}let s=Jfe(e,vi(r,\"tsconfig.json\"),t);if(s.resolvedModule)return s.resolvedModule.resolvedFileName;e===\"\"?i.push(o(_.Compiler_option_0_cannot_be_given_an_empty_string,\"extends\")):i.push(o(_.File_0_not_found,e))}function _Ne(e,t,r,i,o,s,l){var f;let d=r.useCaseSensitiveFileNames?t:t_(t),g,m,v;if(s&&(g=s.get(d))?{extendedResult:m,extendedConfig:v}=g:(m=$de(t,S=>r.readFile(S)),m.parseDiagnostics.length||(v=ufe(void 0,m,r,ni(t),Hl(t),i,o,s)),s&&s.set(d,{extendedResult:m,extendedConfig:v})),e&&(((f=l.extendedSourceFiles)!=null?f:l.extendedSourceFiles=new Set).add(m.fileName),m.extendedSourceFiles))for(let S of m.extendedSourceFiles)l.extendedSourceFiles.add(S);if(m.parseDiagnostics.length){o.push(...m.parseDiagnostics);return}return v}function pNe(e,t,r){if(!fs(e,VO.name))return!1;let i=BO(VO,e.compileOnSave,t,r);return typeof i==\"boolean\"&&i}function mNe(e,t,r){let i=[];return{options:ffe(e,t,i,r),errors:i}}function hNe(e,t,r){let i=[];return{options:_fe(e,t,i,r),errors:i}}function dfe(e){return e&&Hl(e)===\"jsconfig.json\"?{allowJs:!0,maxNodeModuleJsDepth:2,allowSyntheticDefaultImports:!0,skipLibCheck:!0,noEmit:!0}:{}}function ffe(e,t,r,i){let o=dfe(i);return IJ(Zde(),e,t,o,KO,r),i&&(o.configFilePath=Al(i)),o}function F3(e){return{enable:!!e&&Hl(e)===\"jsconfig.json\",include:[],exclude:[]}}function _fe(e,t,r,i){let o=F3(i);return IJ(tfe(),e,t,o,VJ,r),o}function gNe(e,t,r){return IJ(efe(),e,t,void 0,qO,r)}function IJ(e,t,r,i,o,s){if(!!t){for(let l in t){let f=e.get(l);f?(i||(i={}))[f.name]=BO(f,t[l],r,s):s.push(mJ(l,o,ps))}return i}}function BO(e,t,r,i){if(P3(e,t)){let o=e.type;if(o===\"list\"&&ba(t))return hfe(e,t,r,i);if(o===\"listOrElement\")return ba(t)?hfe(e,t,r,i):BO(e.element,t,r,i);if(!Ta(e.type))return mfe(e,t,i);let s=WT(e,t,i);return O2(s)?s:pfe(e,r,s)}else i.push(ps(_.Compiler_option_0_requires_a_value_of_type_1,e.name,NL(e)))}function LJ(e,t,r){if(!O2(r)){if(e.type===\"listOrElement\"&&!ba(r))return LJ(e.element,t,r);if(e.type===\"list\"||e.type===\"listOrElement\"){let i=e;return i.element.isFilePath||!Ta(i.element.type)?Pr(on(r,o=>LJ(i.element,t,o)),o=>i.listPreserveFalsyValues?!0:!!o):r}else if(!Ta(e.type))return e.type.get(Ta(r)?r.toLowerCase():r);return pfe(e,t,r)}}function pfe(e,t,r){return e.isFilePath&&(r=_a(r,t),r===\"\"&&(r=\".\")),r}function WT(e,t,r){var i;if(O2(t))return;let o=(i=e.extraValidation)==null?void 0:i.call(e,t);if(!o)return t;r.push(ps(...o))}function mfe(e,t,r){if(O2(t))return;let i=t.toLowerCase(),o=e.type.get(i);if(o!==void 0)return WT(e,o,r);r.push(pJ(e))}function hfe(e,t,r,i){return Pr(on(t,o=>BO(e.element,o,r,i)),o=>e.listPreserveFalsyValues?!0:!!o)}function UO(e,t,r,i,o=Je){t=So(t);let s=Dl(i.useCaseSensitiveFileNames),l=new Map,f=new Map,d=new Map,{validatedFilesSpec:g,validatedIncludeSpecs:m,validatedExcludeSpecs:v}=e,S=rL(r,o),x=GR(r,S);if(g)for(let P of g){let F=_a(P,t);l.set(s(F),F)}let A;if(m&&m.length>0)for(let P of i.readDirectory(t,e_(x),v,m,void 0)){if(Gc(P,\".json\")){if(!A){let q=m.filter(Y=>Oc(Y,\".json\")),W=on(m4(q,t,\"files\"),Y=>`^${Y}$`);A=W?W.map(Y=>Qy(Y,i.useCaseSensitiveFileNames)):Je}if(Yc(A,q=>q.test(P))!==-1){let q=s(P);!l.has(q)&&!d.has(q)&&d.set(q,P)}continue}if(bNe(P,l,f,S,s))continue;ENe(P,f,S,s);let F=s(P);!l.has(F)&&!f.has(F)&&f.set(F,P)}let w=lo(l.values()),C=lo(f.values());return w.concat(C,lo(d.values()))}function gfe(e,t,r,i,o){let{validatedFilesSpec:s,validatedIncludeSpecs:l,validatedExcludeSpecs:f}=t;if(!Fn(l)||!Fn(f))return!1;r=So(r);let d=Dl(i);if(s){for(let g of s)if(d(_a(g,r))===e)return!1}return vfe(e,f,i,o,r)}function yfe(e){let t=na(e,\"**/\")?0:e.indexOf(\"/**/\");return t===-1?!1:(Oc(e,\"/..\")?e.length:e.lastIndexOf(\"/../\"))>t}function G3(e,t,r,i){return vfe(e,Pr(t,o=>!yfe(o)),r,i)}function vfe(e,t,r,i,o){let s=tL(t,vi(So(i),o),\"exclude\"),l=s&&Qy(s,r);return l?l.test(e)?!0:!yA(e)&&l.test(cu(e)):!1}function bfe(e,t,r,i,o){return e.filter(l=>{if(!Ta(l))return!1;let f=kJ(l,r);return f!==void 0&&t.push(s(...f)),f===void 0});function s(l,f){let d=w6(i,o,f);return d?Nu(i,d,l,f):ps(l,f)}}function kJ(e,t){if(L.assert(typeof e==\"string\"),t&&Dfe.test(e))return[_.File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0,e];if(yfe(e))return[_.File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0,e]}function yNe({validatedIncludeSpecs:e,validatedExcludeSpecs:t},r,i){let o=tL(t,r,\"exclude\"),s=o&&new RegExp(o,i?\"\":\"i\"),l={};if(e!==void 0){let f=[];for(let d of e){let g=So(vi(r,d));if(s&&s.test(g))continue;let m=vNe(g,i);if(m){let{key:v,flags:S}=m,x=l[v];(x===void 0||x<S)&&(l[v]=S,S===1&&f.push(v))}}for(let d in l)if(fs(l,d))for(let g of f)d!==g&&Gy(g,d,r,!i)&&delete l[d]}return l}function vNe(e,t){let r=wfe.exec(e);if(r){let i=e.indexOf(\"?\"),o=e.indexOf(\"*\"),s=e.lastIndexOf(_s);return{key:t?r[0]:t_(r[0]),flags:i!==-1&&i<s||o!==-1&&o<s?1:0}}if(LW(e.substring(e.lastIndexOf(_s)+1)))return{key:cT(t?e:t_(e)),flags:1}}function bNe(e,t,r,i,o){let s=mn(i,l=>$c(e,l)?l:void 0);if(!s)return!1;for(let l of s){if(Gc(e,l))return!1;let f=o(V0(e,l));if(t.has(f)||r.has(f)){if(l===\".d.ts\"&&(Gc(e,\".js\")||Gc(e,\".jsx\")))continue;return!0}}return!1}function ENe(e,t,r,i){let o=mn(r,s=>$c(e,s)?s:void 0);if(!!o)for(let s=o.length-1;s>=0;s--){let l=o[s];if(Gc(e,l))return;let f=i(V0(e,l));t.delete(f)}}function TNe(e){let t={};for(let r in e)if(fs(e,r)){let i=gJ(r);i!==void 0&&(t[r]=DJ(e[r],i))}return t}function DJ(e,t){switch(t.type){case\"object\":return\"\";case\"string\":return\"\";case\"number\":return typeof e==\"number\"?e:\"\";case\"boolean\":return typeof e==\"boolean\"?e:\"\";case\"listOrElement\":if(!ba(e))return DJ(e,t.element);case\"list\":let r=t.element;return ba(e)?e.map(i=>DJ(i,r)):\"\";default:return Ld(t.type,(i,o)=>{if(i===e)return o})}}function wJ(e){switch(e.type){case\"number\":return 1;case\"boolean\":return!0;case\"string\":let t=e.defaultValueDescription;return e.isFilePath?`./${t&&typeof t==\"string\"?t:\"\"}`:\"\";case\"list\":return[];case\"listOrElement\":return wJ(e.element);case\"object\":return{};default:let r=u8(e.type.keys());return r!==void 0?r:L.fail(\"Expected 'option.type' to have entries.\")}}var VO,RJ,PL,OJ,jO,HO,WO,zO,JO,NJ,B3,Fh,PJ,MJ,FJ,U3,V3,GJ,BJ,UJ,j3,H3,Efe,Tfe,W3,KO,Sfe,xfe,Afe,VJ,Cfe,qO,Ife,Lfe,kfe,XO,jJ,z3,Dfe,wfe,SNe=gt({\"src/compiler/commandLineParser.ts\"(){\"use strict\";fa(),VO={name:\"compileOnSave\",type:\"boolean\",defaultValueDescription:!1},RJ=new Map(Object.entries({preserve:1,\"react-native\":3,react:2,\"react-jsx\":4,\"react-jsxdev\":5})),PL=new Map(RU(RJ.entries(),([e,t])=>[\"\"+t,e])),OJ=[[\"es5\",\"lib.es5.d.ts\"],[\"es6\",\"lib.es2015.d.ts\"],[\"es2015\",\"lib.es2015.d.ts\"],[\"es7\",\"lib.es2016.d.ts\"],[\"es2016\",\"lib.es2016.d.ts\"],[\"es2017\",\"lib.es2017.d.ts\"],[\"es2018\",\"lib.es2018.d.ts\"],[\"es2019\",\"lib.es2019.d.ts\"],[\"es2020\",\"lib.es2020.d.ts\"],[\"es2021\",\"lib.es2021.d.ts\"],[\"es2022\",\"lib.es2022.d.ts\"],[\"es2023\",\"lib.es2023.d.ts\"],[\"esnext\",\"lib.esnext.d.ts\"],[\"dom\",\"lib.dom.d.ts\"],[\"dom.iterable\",\"lib.dom.iterable.d.ts\"],[\"webworker\",\"lib.webworker.d.ts\"],[\"webworker.importscripts\",\"lib.webworker.importscripts.d.ts\"],[\"webworker.iterable\",\"lib.webworker.iterable.d.ts\"],[\"scripthost\",\"lib.scripthost.d.ts\"],[\"es2015.core\",\"lib.es2015.core.d.ts\"],[\"es2015.collection\",\"lib.es2015.collection.d.ts\"],[\"es2015.generator\",\"lib.es2015.generator.d.ts\"],[\"es2015.iterable\",\"lib.es2015.iterable.d.ts\"],[\"es2015.promise\",\"lib.es2015.promise.d.ts\"],[\"es2015.proxy\",\"lib.es2015.proxy.d.ts\"],[\"es2015.reflect\",\"lib.es2015.reflect.d.ts\"],[\"es2015.symbol\",\"lib.es2015.symbol.d.ts\"],[\"es2015.symbol.wellknown\",\"lib.es2015.symbol.wellknown.d.ts\"],[\"es2016.array.include\",\"lib.es2016.array.include.d.ts\"],[\"es2017.object\",\"lib.es2017.object.d.ts\"],[\"es2017.sharedmemory\",\"lib.es2017.sharedmemory.d.ts\"],[\"es2017.string\",\"lib.es2017.string.d.ts\"],[\"es2017.intl\",\"lib.es2017.intl.d.ts\"],[\"es2017.typedarrays\",\"lib.es2017.typedarrays.d.ts\"],[\"es2018.asyncgenerator\",\"lib.es2018.asyncgenerator.d.ts\"],[\"es2018.asynciterable\",\"lib.es2018.asynciterable.d.ts\"],[\"es2018.intl\",\"lib.es2018.intl.d.ts\"],[\"es2018.promise\",\"lib.es2018.promise.d.ts\"],[\"es2018.regexp\",\"lib.es2018.regexp.d.ts\"],[\"es2019.array\",\"lib.es2019.array.d.ts\"],[\"es2019.object\",\"lib.es2019.object.d.ts\"],[\"es2019.string\",\"lib.es2019.string.d.ts\"],[\"es2019.symbol\",\"lib.es2019.symbol.d.ts\"],[\"es2019.intl\",\"lib.es2019.intl.d.ts\"],[\"es2020.bigint\",\"lib.es2020.bigint.d.ts\"],[\"es2020.date\",\"lib.es2020.date.d.ts\"],[\"es2020.promise\",\"lib.es2020.promise.d.ts\"],[\"es2020.sharedmemory\",\"lib.es2020.sharedmemory.d.ts\"],[\"es2020.string\",\"lib.es2020.string.d.ts\"],[\"es2020.symbol.wellknown\",\"lib.es2020.symbol.wellknown.d.ts\"],[\"es2020.intl\",\"lib.es2020.intl.d.ts\"],[\"es2020.number\",\"lib.es2020.number.d.ts\"],[\"es2021.promise\",\"lib.es2021.promise.d.ts\"],[\"es2021.string\",\"lib.es2021.string.d.ts\"],[\"es2021.weakref\",\"lib.es2021.weakref.d.ts\"],[\"es2021.intl\",\"lib.es2021.intl.d.ts\"],[\"es2022.array\",\"lib.es2022.array.d.ts\"],[\"es2022.error\",\"lib.es2022.error.d.ts\"],[\"es2022.intl\",\"lib.es2022.intl.d.ts\"],[\"es2022.object\",\"lib.es2022.object.d.ts\"],[\"es2022.sharedmemory\",\"lib.es2022.sharedmemory.d.ts\"],[\"es2022.string\",\"lib.es2022.string.d.ts\"],[\"es2022.regexp\",\"lib.es2022.regexp.d.ts\"],[\"es2023.array\",\"lib.es2023.array.d.ts\"],[\"esnext.array\",\"lib.es2023.array.d.ts\"],[\"esnext.symbol\",\"lib.es2019.symbol.d.ts\"],[\"esnext.asynciterable\",\"lib.es2018.asynciterable.d.ts\"],[\"esnext.intl\",\"lib.esnext.intl.d.ts\"],[\"esnext.bigint\",\"lib.es2020.bigint.d.ts\"],[\"esnext.string\",\"lib.es2022.string.d.ts\"],[\"esnext.promise\",\"lib.es2021.promise.d.ts\"],[\"esnext.weakref\",\"lib.es2021.weakref.d.ts\"],[\"decorators\",\"lib.decorators.d.ts\"],[\"decorators.legacy\",\"lib.decorators.legacy.d.ts\"]],jO=OJ.map(e=>e[0]),HO=new Map(OJ),WO=[{name:\"watchFile\",type:new Map(Object.entries({fixedpollinginterval:0,prioritypollinginterval:1,dynamicprioritypolling:2,fixedchunksizepolling:3,usefsevents:4,usefseventsonparentdirectory:5})),category:_.Watch_and_Build_Modes,description:_.Specify_how_the_TypeScript_watch_mode_works,defaultValueDescription:4},{name:\"watchDirectory\",type:new Map(Object.entries({usefsevents:0,fixedpollinginterval:1,dynamicprioritypolling:2,fixedchunksizepolling:3})),category:_.Watch_and_Build_Modes,description:_.Specify_how_directories_are_watched_on_systems_that_lack_recursive_file_watching_functionality,defaultValueDescription:0},{name:\"fallbackPolling\",type:new Map(Object.entries({fixedinterval:0,priorityinterval:1,dynamicpriority:2,fixedchunksize:3})),category:_.Watch_and_Build_Modes,description:_.Specify_what_approach_the_watcher_should_use_if_the_system_runs_out_of_native_file_watchers,defaultValueDescription:1},{name:\"synchronousWatchDirectory\",type:\"boolean\",category:_.Watch_and_Build_Modes,description:_.Synchronously_call_callbacks_and_update_the_state_of_directory_watchers_on_platforms_that_don_t_support_recursive_watching_natively,defaultValueDescription:!1},{name:\"excludeDirectories\",type:\"list\",element:{name:\"excludeDirectory\",type:\"string\",isFilePath:!0,extraValidation:kJ},category:_.Watch_and_Build_Modes,description:_.Remove_a_list_of_directories_from_the_watch_process},{name:\"excludeFiles\",type:\"list\",element:{name:\"excludeFile\",type:\"string\",isFilePath:!0,extraValidation:kJ},category:_.Watch_and_Build_Modes,description:_.Remove_a_list_of_files_from_the_watch_mode_s_processing}],zO=[{name:\"help\",shortName:\"h\",type:\"boolean\",showInSimplifiedHelpView:!0,isCommandLineOnly:!0,category:_.Command_line_Options,description:_.Print_this_message,defaultValueDescription:!1},{name:\"help\",shortName:\"?\",type:\"boolean\",isCommandLineOnly:!0,category:_.Command_line_Options,defaultValueDescription:!1},{name:\"watch\",shortName:\"w\",type:\"boolean\",showInSimplifiedHelpView:!0,isCommandLineOnly:!0,category:_.Command_line_Options,description:_.Watch_input_files,defaultValueDescription:!1},{name:\"preserveWatchOutput\",type:\"boolean\",showInSimplifiedHelpView:!1,category:_.Output_Formatting,description:_.Disable_wiping_the_console_in_watch_mode,defaultValueDescription:!1},{name:\"listFiles\",type:\"boolean\",category:_.Compiler_Diagnostics,description:_.Print_all_of_the_files_read_during_the_compilation,defaultValueDescription:!1},{name:\"explainFiles\",type:\"boolean\",category:_.Compiler_Diagnostics,description:_.Print_files_read_during_the_compilation_including_why_it_was_included,defaultValueDescription:!1},{name:\"listEmittedFiles\",type:\"boolean\",category:_.Compiler_Diagnostics,description:_.Print_the_names_of_emitted_files_after_a_compilation,defaultValueDescription:!1},{name:\"pretty\",type:\"boolean\",showInSimplifiedHelpView:!0,category:_.Output_Formatting,description:_.Enable_color_and_formatting_in_TypeScript_s_output_to_make_compiler_errors_easier_to_read,defaultValueDescription:!0},{name:\"traceResolution\",type:\"boolean\",category:_.Compiler_Diagnostics,description:_.Log_paths_used_during_the_moduleResolution_process,defaultValueDescription:!1},{name:\"diagnostics\",type:\"boolean\",category:_.Compiler_Diagnostics,description:_.Output_compiler_performance_information_after_building,defaultValueDescription:!1},{name:\"extendedDiagnostics\",type:\"boolean\",category:_.Compiler_Diagnostics,description:_.Output_more_detailed_compiler_performance_information_after_building,defaultValueDescription:!1},{name:\"generateCpuProfile\",type:\"string\",isFilePath:!0,paramType:_.FILE_OR_DIRECTORY,category:_.Compiler_Diagnostics,description:_.Emit_a_v8_CPU_profile_of_the_compiler_run_for_debugging,defaultValueDescription:\"profile.cpuprofile\"},{name:\"generateTrace\",type:\"string\",isFilePath:!0,isCommandLineOnly:!0,paramType:_.DIRECTORY,category:_.Compiler_Diagnostics,description:_.Generates_an_event_trace_and_a_list_of_types},{name:\"incremental\",shortName:\"i\",type:\"boolean\",category:_.Projects,description:_.Save_tsbuildinfo_files_to_allow_for_incremental_compilation_of_projects,transpileOptionValue:void 0,defaultValueDescription:_.false_unless_composite_is_set},{name:\"declaration\",shortName:\"d\",type:\"boolean\",affectsBuildInfo:!0,showInSimplifiedHelpView:!0,category:_.Emit,transpileOptionValue:void 0,description:_.Generate_d_ts_files_from_TypeScript_and_JavaScript_files_in_your_project,defaultValueDescription:_.false_unless_composite_is_set},{name:\"declarationMap\",type:\"boolean\",affectsBuildInfo:!0,showInSimplifiedHelpView:!0,category:_.Emit,transpileOptionValue:void 0,defaultValueDescription:!1,description:_.Create_sourcemaps_for_d_ts_files},{name:\"emitDeclarationOnly\",type:\"boolean\",affectsBuildInfo:!0,showInSimplifiedHelpView:!0,category:_.Emit,description:_.Only_output_d_ts_files_and_not_JavaScript_files,transpileOptionValue:void 0,defaultValueDescription:!1},{name:\"sourceMap\",type:\"boolean\",affectsBuildInfo:!0,showInSimplifiedHelpView:!0,category:_.Emit,defaultValueDescription:!1,description:_.Create_source_map_files_for_emitted_JavaScript_files},{name:\"inlineSourceMap\",type:\"boolean\",affectsBuildInfo:!0,category:_.Emit,description:_.Include_sourcemap_files_inside_the_emitted_JavaScript,defaultValueDescription:!1},{name:\"assumeChangesOnlyAffectDirectDependencies\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsEmit:!0,affectsBuildInfo:!0,category:_.Watch_and_Build_Modes,description:_.Have_recompiles_in_projects_that_use_incremental_and_watch_mode_assume_that_changes_within_a_file_will_only_affect_files_directly_depending_on_it,defaultValueDescription:!1},{name:\"locale\",type:\"string\",category:_.Command_line_Options,isCommandLineOnly:!0,description:_.Set_the_language_of_the_messaging_from_TypeScript_This_does_not_affect_emit,defaultValueDescription:_.Platform_specific}],JO={name:\"target\",shortName:\"t\",type:new Map(Object.entries({es3:0,es5:1,es6:2,es2015:2,es2016:3,es2017:4,es2018:5,es2019:6,es2020:7,es2021:8,es2022:9,esnext:99})),affectsSourceFile:!0,affectsModuleResolution:!0,affectsEmit:!0,affectsBuildInfo:!0,paramType:_.VERSION,showInSimplifiedHelpView:!0,category:_.Language_and_Environment,description:_.Set_the_JavaScript_language_version_for_emitted_JavaScript_and_include_compatible_library_declarations,defaultValueDescription:1},NJ={name:\"module\",shortName:\"m\",type:new Map(Object.entries({none:0,commonjs:1,amd:2,system:4,umd:3,es6:5,es2015:5,es2020:6,es2022:7,esnext:99,node16:100,nodenext:199})),affectsModuleResolution:!0,affectsEmit:!0,affectsBuildInfo:!0,paramType:_.KIND,showInSimplifiedHelpView:!0,category:_.Modules,description:_.Specify_what_module_code_is_generated,defaultValueDescription:void 0},B3=[{name:\"all\",type:\"boolean\",showInSimplifiedHelpView:!0,category:_.Command_line_Options,description:_.Show_all_compiler_options,defaultValueDescription:!1},{name:\"version\",shortName:\"v\",type:\"boolean\",showInSimplifiedHelpView:!0,category:_.Command_line_Options,description:_.Print_the_compiler_s_version,defaultValueDescription:!1},{name:\"init\",type:\"boolean\",showInSimplifiedHelpView:!0,category:_.Command_line_Options,description:_.Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file,defaultValueDescription:!1},{name:\"project\",shortName:\"p\",type:\"string\",isFilePath:!0,showInSimplifiedHelpView:!0,category:_.Command_line_Options,paramType:_.FILE_OR_DIRECTORY,description:_.Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json},{name:\"build\",type:\"boolean\",shortName:\"b\",showInSimplifiedHelpView:!0,category:_.Command_line_Options,description:_.Build_one_or_more_projects_and_their_dependencies_if_out_of_date,defaultValueDescription:!1},{name:\"showConfig\",type:\"boolean\",showInSimplifiedHelpView:!0,category:_.Command_line_Options,isCommandLineOnly:!0,description:_.Print_the_final_configuration_instead_of_building,defaultValueDescription:!1},{name:\"listFilesOnly\",type:\"boolean\",category:_.Command_line_Options,isCommandLineOnly:!0,description:_.Print_names_of_files_that_are_part_of_the_compilation_and_then_stop_processing,defaultValueDescription:!1},JO,NJ,{name:\"lib\",type:\"list\",element:{name:\"lib\",type:HO,defaultValueDescription:void 0},affectsProgramStructure:!0,showInSimplifiedHelpView:!0,category:_.Language_and_Environment,description:_.Specify_a_set_of_bundled_library_declaration_files_that_describe_the_target_runtime_environment,transpileOptionValue:void 0},{name:\"allowJs\",type:\"boolean\",affectsModuleResolution:!0,showInSimplifiedHelpView:!0,category:_.JavaScript_Support,description:_.Allow_JavaScript_files_to_be_a_part_of_your_program_Use_the_checkJS_option_to_get_errors_from_these_files,defaultValueDescription:!1},{name:\"checkJs\",type:\"boolean\",showInSimplifiedHelpView:!0,category:_.JavaScript_Support,description:_.Enable_error_reporting_in_type_checked_JavaScript_files,defaultValueDescription:!1},{name:\"jsx\",type:RJ,affectsSourceFile:!0,affectsEmit:!0,affectsBuildInfo:!0,affectsModuleResolution:!0,paramType:_.KIND,showInSimplifiedHelpView:!0,category:_.Language_and_Environment,description:_.Specify_what_JSX_code_is_generated,defaultValueDescription:void 0},{name:\"outFile\",type:\"string\",affectsEmit:!0,affectsBuildInfo:!0,affectsDeclarationPath:!0,isFilePath:!0,paramType:_.FILE,showInSimplifiedHelpView:!0,category:_.Emit,description:_.Specify_a_file_that_bundles_all_outputs_into_one_JavaScript_file_If_declaration_is_true_also_designates_a_file_that_bundles_all_d_ts_output,transpileOptionValue:void 0},{name:\"outDir\",type:\"string\",affectsEmit:!0,affectsBuildInfo:!0,affectsDeclarationPath:!0,isFilePath:!0,paramType:_.DIRECTORY,showInSimplifiedHelpView:!0,category:_.Emit,description:_.Specify_an_output_folder_for_all_emitted_files},{name:\"rootDir\",type:\"string\",affectsEmit:!0,affectsBuildInfo:!0,affectsDeclarationPath:!0,isFilePath:!0,paramType:_.LOCATION,category:_.Modules,description:_.Specify_the_root_folder_within_your_source_files,defaultValueDescription:_.Computed_from_the_list_of_input_files},{name:\"composite\",type:\"boolean\",affectsBuildInfo:!0,isTSConfigOnly:!0,category:_.Projects,transpileOptionValue:void 0,defaultValueDescription:!1,description:_.Enable_constraints_that_allow_a_TypeScript_project_to_be_used_with_project_references},{name:\"tsBuildInfoFile\",type:\"string\",affectsEmit:!0,affectsBuildInfo:!0,isFilePath:!0,paramType:_.FILE,category:_.Projects,transpileOptionValue:void 0,defaultValueDescription:\".tsbuildinfo\",description:_.Specify_the_path_to_tsbuildinfo_incremental_compilation_file},{name:\"removeComments\",type:\"boolean\",affectsEmit:!0,affectsBuildInfo:!0,showInSimplifiedHelpView:!0,category:_.Emit,defaultValueDescription:!1,description:_.Disable_emitting_comments},{name:\"noEmit\",type:\"boolean\",showInSimplifiedHelpView:!0,category:_.Emit,description:_.Disable_emitting_files_from_a_compilation,transpileOptionValue:void 0,defaultValueDescription:!1},{name:\"importHelpers\",type:\"boolean\",affectsEmit:!0,affectsBuildInfo:!0,category:_.Emit,description:_.Allow_importing_helper_functions_from_tslib_once_per_project_instead_of_including_them_per_file,defaultValueDescription:!1},{name:\"importsNotUsedAsValues\",type:new Map(Object.entries({remove:0,preserve:1,error:2})),affectsEmit:!0,affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Emit,description:_.Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types,defaultValueDescription:0},{name:\"downlevelIteration\",type:\"boolean\",affectsEmit:!0,affectsBuildInfo:!0,category:_.Emit,description:_.Emit_more_compliant_but_verbose_and_less_performant_JavaScript_for_iteration,defaultValueDescription:!1},{name:\"isolatedModules\",type:\"boolean\",category:_.Interop_Constraints,description:_.Ensure_that_each_file_can_be_safely_transpiled_without_relying_on_other_imports,transpileOptionValue:!0,defaultValueDescription:!1},{name:\"verbatimModuleSyntax\",type:\"boolean\",category:_.Interop_Constraints,description:_.Do_not_transform_or_elide_any_imports_or_exports_not_marked_as_type_only_ensuring_they_are_written_in_the_output_file_s_format_based_on_the_module_setting,defaultValueDescription:!1},{name:\"strict\",type:\"boolean\",affectsBuildInfo:!0,showInSimplifiedHelpView:!0,category:_.Type_Checking,description:_.Enable_all_strict_type_checking_options,defaultValueDescription:!1},{name:\"noImplicitAny\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,strictFlag:!0,category:_.Type_Checking,description:_.Enable_error_reporting_for_expressions_and_declarations_with_an_implied_any_type,defaultValueDescription:_.false_unless_strict_is_set},{name:\"strictNullChecks\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,strictFlag:!0,category:_.Type_Checking,description:_.When_type_checking_take_into_account_null_and_undefined,defaultValueDescription:_.false_unless_strict_is_set},{name:\"strictFunctionTypes\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,strictFlag:!0,category:_.Type_Checking,description:_.When_assigning_functions_check_to_ensure_parameters_and_the_return_values_are_subtype_compatible,defaultValueDescription:_.false_unless_strict_is_set},{name:\"strictBindCallApply\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,strictFlag:!0,category:_.Type_Checking,description:_.Check_that_the_arguments_for_bind_call_and_apply_methods_match_the_original_function,defaultValueDescription:_.false_unless_strict_is_set},{name:\"strictPropertyInitialization\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,strictFlag:!0,category:_.Type_Checking,description:_.Check_for_class_properties_that_are_declared_but_not_set_in_the_constructor,defaultValueDescription:_.false_unless_strict_is_set},{name:\"noImplicitThis\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,strictFlag:!0,category:_.Type_Checking,description:_.Enable_error_reporting_when_this_is_given_the_type_any,defaultValueDescription:_.false_unless_strict_is_set},{name:\"useUnknownInCatchVariables\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,strictFlag:!0,category:_.Type_Checking,description:_.Default_catch_clause_variables_as_unknown_instead_of_any,defaultValueDescription:!1},{name:\"alwaysStrict\",type:\"boolean\",affectsSourceFile:!0,affectsEmit:!0,affectsBuildInfo:!0,strictFlag:!0,category:_.Type_Checking,description:_.Ensure_use_strict_is_always_emitted,defaultValueDescription:_.false_unless_strict_is_set},{name:\"noUnusedLocals\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Type_Checking,description:_.Enable_error_reporting_when_local_variables_aren_t_read,defaultValueDescription:!1},{name:\"noUnusedParameters\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Type_Checking,description:_.Raise_an_error_when_a_function_parameter_isn_t_read,defaultValueDescription:!1},{name:\"exactOptionalPropertyTypes\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Type_Checking,description:_.Interpret_optional_property_types_as_written_rather_than_adding_undefined,defaultValueDescription:!1},{name:\"noImplicitReturns\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Type_Checking,description:_.Enable_error_reporting_for_codepaths_that_do_not_explicitly_return_in_a_function,defaultValueDescription:!1},{name:\"noFallthroughCasesInSwitch\",type:\"boolean\",affectsBindDiagnostics:!0,affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Type_Checking,description:_.Enable_error_reporting_for_fallthrough_cases_in_switch_statements,defaultValueDescription:!1},{name:\"noUncheckedIndexedAccess\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Type_Checking,description:_.Add_undefined_to_a_type_when_accessed_using_an_index,defaultValueDescription:!1},{name:\"noImplicitOverride\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Type_Checking,description:_.Ensure_overriding_members_in_derived_classes_are_marked_with_an_override_modifier,defaultValueDescription:!1},{name:\"noPropertyAccessFromIndexSignature\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,showInSimplifiedHelpView:!1,category:_.Type_Checking,description:_.Enforces_using_indexed_accessors_for_keys_declared_using_an_indexed_type,defaultValueDescription:!1},{name:\"moduleResolution\",type:new Map(Object.entries({node10:2,node:2,classic:1,node16:3,nodenext:99,bundler:100})),deprecatedKeys:new Set([\"node\"]),affectsModuleResolution:!0,paramType:_.STRATEGY,category:_.Modules,description:_.Specify_how_TypeScript_looks_up_a_file_from_a_given_module_specifier,defaultValueDescription:_.module_AMD_or_UMD_or_System_or_ES6_then_Classic_Otherwise_Node},{name:\"baseUrl\",type:\"string\",affectsModuleResolution:!0,isFilePath:!0,category:_.Modules,description:_.Specify_the_base_directory_to_resolve_non_relative_module_names},{name:\"paths\",type:\"object\",affectsModuleResolution:!0,isTSConfigOnly:!0,category:_.Modules,description:_.Specify_a_set_of_entries_that_re_map_imports_to_additional_lookup_locations,transpileOptionValue:void 0},{name:\"rootDirs\",type:\"list\",isTSConfigOnly:!0,element:{name:\"rootDirs\",type:\"string\",isFilePath:!0},affectsModuleResolution:!0,category:_.Modules,description:_.Allow_multiple_folders_to_be_treated_as_one_when_resolving_modules,transpileOptionValue:void 0,defaultValueDescription:_.Computed_from_the_list_of_input_files},{name:\"typeRoots\",type:\"list\",element:{name:\"typeRoots\",type:\"string\",isFilePath:!0},affectsModuleResolution:!0,category:_.Modules,description:_.Specify_multiple_folders_that_act_like_Slashnode_modules_Slash_types},{name:\"types\",type:\"list\",element:{name:\"types\",type:\"string\"},affectsProgramStructure:!0,showInSimplifiedHelpView:!0,category:_.Modules,description:_.Specify_type_package_names_to_be_included_without_being_referenced_in_a_source_file,transpileOptionValue:void 0},{name:\"allowSyntheticDefaultImports\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Interop_Constraints,description:_.Allow_import_x_from_y_when_a_module_doesn_t_have_a_default_export,defaultValueDescription:_.module_system_or_esModuleInterop},{name:\"esModuleInterop\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsEmit:!0,affectsBuildInfo:!0,showInSimplifiedHelpView:!0,category:_.Interop_Constraints,description:_.Emit_additional_JavaScript_to_ease_support_for_importing_CommonJS_modules_This_enables_allowSyntheticDefaultImports_for_type_compatibility,defaultValueDescription:!1},{name:\"preserveSymlinks\",type:\"boolean\",category:_.Interop_Constraints,description:_.Disable_resolving_symlinks_to_their_realpath_This_correlates_to_the_same_flag_in_node,defaultValueDescription:!1},{name:\"allowUmdGlobalAccess\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Modules,description:_.Allow_accessing_UMD_globals_from_modules,defaultValueDescription:!1},{name:\"moduleSuffixes\",type:\"list\",element:{name:\"suffix\",type:\"string\"},listPreserveFalsyValues:!0,affectsModuleResolution:!0,category:_.Modules,description:_.List_of_file_name_suffixes_to_search_when_resolving_a_module},{name:\"allowImportingTsExtensions\",type:\"boolean\",affectsSemanticDiagnostics:!0,category:_.Modules,description:_.Allow_imports_to_include_TypeScript_file_extensions_Requires_moduleResolution_bundler_and_either_noEmit_or_emitDeclarationOnly_to_be_set,defaultValueDescription:!1},{name:\"resolvePackageJsonExports\",type:\"boolean\",affectsModuleResolution:!0,category:_.Modules,description:_.Use_the_package_json_exports_field_when_resolving_package_imports,defaultValueDescription:_.true_when_moduleResolution_is_node16_nodenext_or_bundler_otherwise_false},{name:\"resolvePackageJsonImports\",type:\"boolean\",affectsModuleResolution:!0,category:_.Modules,description:_.Use_the_package_json_imports_field_when_resolving_imports,defaultValueDescription:_.true_when_moduleResolution_is_node16_nodenext_or_bundler_otherwise_false},{name:\"customConditions\",type:\"list\",element:{name:\"condition\",type:\"string\"},affectsModuleResolution:!0,category:_.Modules,description:_.Conditions_to_set_in_addition_to_the_resolver_specific_defaults_when_resolving_imports},{name:\"sourceRoot\",type:\"string\",affectsEmit:!0,affectsBuildInfo:!0,paramType:_.LOCATION,category:_.Emit,description:_.Specify_the_root_path_for_debuggers_to_find_the_reference_source_code},{name:\"mapRoot\",type:\"string\",affectsEmit:!0,affectsBuildInfo:!0,paramType:_.LOCATION,category:_.Emit,description:_.Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations},{name:\"inlineSources\",type:\"boolean\",affectsEmit:!0,affectsBuildInfo:!0,category:_.Emit,description:_.Include_source_code_in_the_sourcemaps_inside_the_emitted_JavaScript,defaultValueDescription:!1},{name:\"experimentalDecorators\",type:\"boolean\",affectsEmit:!0,affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Language_and_Environment,description:_.Enable_experimental_support_for_legacy_experimental_decorators,defaultValueDescription:!1},{name:\"emitDecoratorMetadata\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsEmit:!0,affectsBuildInfo:!0,category:_.Language_and_Environment,description:_.Emit_design_type_metadata_for_decorated_declarations_in_source_files,defaultValueDescription:!1},{name:\"jsxFactory\",type:\"string\",category:_.Language_and_Environment,description:_.Specify_the_JSX_factory_function_used_when_targeting_React_JSX_emit_e_g_React_createElement_or_h,defaultValueDescription:\"`React.createElement`\"},{name:\"jsxFragmentFactory\",type:\"string\",category:_.Language_and_Environment,description:_.Specify_the_JSX_Fragment_reference_used_for_fragments_when_targeting_React_JSX_emit_e_g_React_Fragment_or_Fragment,defaultValueDescription:\"React.Fragment\"},{name:\"jsxImportSource\",type:\"string\",affectsSemanticDiagnostics:!0,affectsEmit:!0,affectsBuildInfo:!0,affectsModuleResolution:!0,category:_.Language_and_Environment,description:_.Specify_module_specifier_used_to_import_the_JSX_factory_functions_when_using_jsx_Colon_react_jsx_Asterisk,defaultValueDescription:\"react\"},{name:\"resolveJsonModule\",type:\"boolean\",affectsModuleResolution:!0,category:_.Modules,description:_.Enable_importing_json_files,defaultValueDescription:!1},{name:\"allowArbitraryExtensions\",type:\"boolean\",affectsProgramStructure:!0,category:_.Modules,description:_.Enable_importing_files_with_any_extension_provided_a_declaration_file_is_present,defaultValueDescription:!1},{name:\"out\",type:\"string\",affectsEmit:!0,affectsBuildInfo:!0,affectsDeclarationPath:!0,isFilePath:!1,category:_.Backwards_Compatibility,paramType:_.FILE,transpileOptionValue:void 0,description:_.Deprecated_setting_Use_outFile_instead},{name:\"reactNamespace\",type:\"string\",affectsEmit:!0,affectsBuildInfo:!0,category:_.Language_and_Environment,description:_.Specify_the_object_invoked_for_createElement_This_only_applies_when_targeting_react_JSX_emit,defaultValueDescription:\"`React`\"},{name:\"skipDefaultLibCheck\",type:\"boolean\",affectsBuildInfo:!0,category:_.Completeness,description:_.Skip_type_checking_d_ts_files_that_are_included_with_TypeScript,defaultValueDescription:!1},{name:\"charset\",type:\"string\",category:_.Backwards_Compatibility,description:_.No_longer_supported_In_early_versions_manually_set_the_text_encoding_for_reading_files,defaultValueDescription:\"utf8\"},{name:\"emitBOM\",type:\"boolean\",affectsEmit:!0,affectsBuildInfo:!0,category:_.Emit,description:_.Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files,defaultValueDescription:!1},{name:\"newLine\",type:new Map(Object.entries({crlf:0,lf:1})),affectsEmit:!0,affectsBuildInfo:!0,paramType:_.NEWLINE,category:_.Emit,description:_.Set_the_newline_character_for_emitting_files,defaultValueDescription:\"lf\"},{name:\"noErrorTruncation\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Output_Formatting,description:_.Disable_truncating_types_in_error_messages,defaultValueDescription:!1},{name:\"noLib\",type:\"boolean\",category:_.Language_and_Environment,affectsProgramStructure:!0,description:_.Disable_including_any_library_files_including_the_default_lib_d_ts,transpileOptionValue:!0,defaultValueDescription:!1},{name:\"noResolve\",type:\"boolean\",affectsModuleResolution:!0,category:_.Modules,description:_.Disallow_import_s_require_s_or_reference_s_from_expanding_the_number_of_files_TypeScript_should_add_to_a_project,transpileOptionValue:!0,defaultValueDescription:!1},{name:\"stripInternal\",type:\"boolean\",affectsEmit:!0,affectsBuildInfo:!0,category:_.Emit,description:_.Disable_emitting_declarations_that_have_internal_in_their_JSDoc_comments,defaultValueDescription:!1},{name:\"disableSizeLimit\",type:\"boolean\",affectsProgramStructure:!0,category:_.Editor_Support,description:_.Remove_the_20mb_cap_on_total_source_code_size_for_JavaScript_files_in_the_TypeScript_language_server,defaultValueDescription:!1},{name:\"disableSourceOfProjectReferenceRedirect\",type:\"boolean\",isTSConfigOnly:!0,category:_.Projects,description:_.Disable_preferring_source_files_instead_of_declaration_files_when_referencing_composite_projects,defaultValueDescription:!1},{name:\"disableSolutionSearching\",type:\"boolean\",isTSConfigOnly:!0,category:_.Projects,description:_.Opt_a_project_out_of_multi_project_reference_checking_when_editing,defaultValueDescription:!1},{name:\"disableReferencedProjectLoad\",type:\"boolean\",isTSConfigOnly:!0,category:_.Projects,description:_.Reduce_the_number_of_projects_loaded_automatically_by_TypeScript,defaultValueDescription:!1},{name:\"noImplicitUseStrict\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Backwards_Compatibility,description:_.Disable_adding_use_strict_directives_in_emitted_JavaScript_files,defaultValueDescription:!1},{name:\"noEmitHelpers\",type:\"boolean\",affectsEmit:!0,affectsBuildInfo:!0,category:_.Emit,description:_.Disable_generating_custom_helper_functions_like_extends_in_compiled_output,defaultValueDescription:!1},{name:\"noEmitOnError\",type:\"boolean\",affectsEmit:!0,affectsBuildInfo:!0,category:_.Emit,transpileOptionValue:void 0,description:_.Disable_emitting_files_if_any_type_checking_errors_are_reported,defaultValueDescription:!1},{name:\"preserveConstEnums\",type:\"boolean\",affectsEmit:!0,affectsBuildInfo:!0,category:_.Emit,description:_.Disable_erasing_const_enum_declarations_in_generated_code,defaultValueDescription:!1},{name:\"declarationDir\",type:\"string\",affectsEmit:!0,affectsBuildInfo:!0,affectsDeclarationPath:!0,isFilePath:!0,paramType:_.DIRECTORY,category:_.Emit,transpileOptionValue:void 0,description:_.Specify_the_output_directory_for_generated_declaration_files},{name:\"skipLibCheck\",type:\"boolean\",affectsBuildInfo:!0,category:_.Completeness,description:_.Skip_type_checking_all_d_ts_files,defaultValueDescription:!1},{name:\"allowUnusedLabels\",type:\"boolean\",affectsBindDiagnostics:!0,affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Type_Checking,description:_.Disable_error_reporting_for_unused_labels,defaultValueDescription:void 0},{name:\"allowUnreachableCode\",type:\"boolean\",affectsBindDiagnostics:!0,affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Type_Checking,description:_.Disable_error_reporting_for_unreachable_code,defaultValueDescription:void 0},{name:\"suppressExcessPropertyErrors\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Backwards_Compatibility,description:_.Disable_reporting_of_excess_property_errors_during_the_creation_of_object_literals,defaultValueDescription:!1},{name:\"suppressImplicitAnyIndexErrors\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Backwards_Compatibility,description:_.Suppress_noImplicitAny_errors_when_indexing_objects_that_lack_index_signatures,defaultValueDescription:!1},{name:\"forceConsistentCasingInFileNames\",type:\"boolean\",affectsModuleResolution:!0,category:_.Interop_Constraints,description:_.Ensure_that_casing_is_correct_in_imports,defaultValueDescription:!0},{name:\"maxNodeModuleJsDepth\",type:\"number\",affectsModuleResolution:!0,category:_.JavaScript_Support,description:_.Specify_the_maximum_folder_depth_used_for_checking_JavaScript_files_from_node_modules_Only_applicable_with_allowJs,defaultValueDescription:0},{name:\"noStrictGenericChecks\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsBuildInfo:!0,category:_.Backwards_Compatibility,description:_.Disable_strict_checking_of_generic_signatures_in_function_types,defaultValueDescription:!1},{name:\"useDefineForClassFields\",type:\"boolean\",affectsSemanticDiagnostics:!0,affectsEmit:!0,affectsBuildInfo:!0,category:_.Language_and_Environment,description:_.Emit_ECMAScript_standard_compliant_class_fields,defaultValueDescription:_.true_for_ES2022_and_above_including_ESNext},{name:\"preserveValueImports\",type:\"boolean\",affectsEmit:!0,affectsBuildInfo:!0,category:_.Emit,description:_.Preserve_unused_imported_values_in_the_JavaScript_output_that_would_otherwise_be_removed,defaultValueDescription:!1},{name:\"keyofStringsOnly\",type:\"boolean\",category:_.Backwards_Compatibility,description:_.Make_keyof_only_return_strings_instead_of_string_numbers_or_symbols_Legacy_option,defaultValueDescription:!1},{name:\"plugins\",type:\"list\",isTSConfigOnly:!0,element:{name:\"plugin\",type:\"object\"},description:_.Specify_a_list_of_language_service_plugins_to_include,category:_.Editor_Support},{name:\"moduleDetection\",type:new Map(Object.entries({auto:2,legacy:1,force:3})),affectsModuleResolution:!0,description:_.Control_what_method_is_used_to_detect_module_format_JS_files,category:_.Language_and_Environment,defaultValueDescription:_.auto_Colon_Treat_files_with_imports_exports_import_meta_jsx_with_jsx_Colon_react_jsx_or_esm_format_with_module_Colon_node16_as_modules},{name:\"ignoreDeprecations\",type:\"string\",defaultValueDescription:void 0}],Fh=[...zO,...B3],PJ=Fh.filter(e=>!!e.affectsSemanticDiagnostics),MJ=Fh.filter(e=>!!e.affectsEmit),FJ=Fh.filter(e=>!!e.affectsDeclarationPath),U3=Fh.filter(e=>!!e.affectsModuleResolution),V3=Fh.filter(e=>!!e.affectsSourceFile||!!e.affectsModuleResolution||!!e.affectsBindDiagnostics),GJ=Fh.filter(e=>!!e.affectsProgramStructure),BJ=Fh.filter(e=>fs(e,\"transpileOptionValue\")),UJ=[{name:\"verbose\",shortName:\"v\",category:_.Command_line_Options,description:_.Enable_verbose_logging,type:\"boolean\",defaultValueDescription:!1},{name:\"dry\",shortName:\"d\",category:_.Command_line_Options,description:_.Show_what_would_be_built_or_deleted_if_specified_with_clean,type:\"boolean\",defaultValueDescription:!1},{name:\"force\",shortName:\"f\",category:_.Command_line_Options,description:_.Build_all_projects_including_those_that_appear_to_be_up_to_date,type:\"boolean\",defaultValueDescription:!1},{name:\"clean\",category:_.Command_line_Options,description:_.Delete_the_outputs_of_all_projects,type:\"boolean\",defaultValueDescription:!1}],j3=[...zO,...UJ],H3=[{name:\"enable\",type:\"boolean\",defaultValueDescription:!1},{name:\"include\",type:\"list\",element:{name:\"include\",type:\"string\"}},{name:\"exclude\",type:\"list\",element:{name:\"exclude\",type:\"string\"}},{name:\"disableFilenameBasedTypeAcquisition\",type:\"boolean\",defaultValueDescription:!1}],Tfe={diagnostic:_.Compiler_option_0_may_only_be_used_with_build,getOptionsNameMap:Yde},W3={module:1,target:3,strict:!0,esModuleInterop:!0,forceConsistentCasingInFileNames:!0,skipLibCheck:!0},KO={alternateMode:Tfe,getOptionsNameMap:R2,optionDeclarations:Fh,unknownOptionDiagnostic:_.Unknown_compiler_option_0,unknownDidYouMeanDiagnostic:_.Unknown_compiler_option_0_Did_you_mean_1,optionTypeMismatchDiagnostic:_.Compiler_option_0_expects_an_argument},xfe={diagnostic:_.Compiler_option_0_may_not_be_used_with_build,getOptionsNameMap:R2},Afe={alternateMode:xfe,getOptionsNameMap:Yde,optionDeclarations:j3,unknownOptionDiagnostic:_.Unknown_build_option_0,unknownDidYouMeanDiagnostic:_.Unknown_build_option_0_Did_you_mean_1,optionTypeMismatchDiagnostic:_.Build_option_0_requires_a_value_of_type_1},VJ={optionDeclarations:H3,unknownOptionDiagnostic:_.Unknown_type_acquisition_option_0,unknownDidYouMeanDiagnostic:_.Unknown_type_acquisition_option_0_Did_you_mean_1},qO={getOptionsNameMap:Qde,optionDeclarations:WO,unknownOptionDiagnostic:_.Unknown_watch_option_0,unknownDidYouMeanDiagnostic:_.Unknown_watch_option_0_Did_you_mean_1,optionTypeMismatchDiagnostic:_.Watch_option_0_requires_a_value_of_type_1},XO={name:\"extends\",type:\"listOrElement\",element:{name:\"extends\",type:\"string\"},category:_.File_Management},z3=\"**/*\",Dfe=/(^|\\/)\\*\\*\\/?$/,wfe=/^[^*?]*(?=\\/[^/]*[*?])/}});function Xi(e){e.trace(TW.apply(void 0,arguments))}function ov(e,t){return!!e.traceResolution&&t.trace!==void 0}function N2(e,t){let r;if(t&&e){let i=e.contents.packageJsonContent;typeof i.name==\"string\"&&typeof i.version==\"string\"&&(r={name:i.name,subModuleName:t.path.slice(e.packageDirectory.length+_s.length),version:i.version})}return t&&{path:t.path,extension:t.ext,packageId:r,resolvedUsingTsExtension:t.resolvedUsingTsExtension}}function J3(e){return N2(void 0,e)}function Rfe(e){if(e)return L.assert(e.packageId===void 0),{path:e.path,ext:e.extension,resolvedUsingTsExtension:e.resolvedUsingTsExtension}}function Ofe(e){let t=[];return e&1&&t.push(\"TypeScript\"),e&2&&t.push(\"JavaScript\"),e&4&&t.push(\"Declaration\"),e&8&&t.push(\"JSON\"),t.join(\", \")}function Nfe(e){if(!!e)return L.assert(y4(e.extension)),{fileName:e.path,packageId:e.packageId}}function Pfe(e,t,r,i,o,s,l,f){if(!l.resultFromCache&&!l.compilerOptions.preserveSymlinks&&t&&r&&!t.originalPath&&!fl(e)){let{resolvedFileName:d,originalPath:g}=Gfe(t.path,l.host,l.traceEnabled);g&&(t={...t,path:d,originalPath:g})}return Mfe(t,r,i,o,s,l.resultFromCache,f)}function Mfe(e,t,r,i,o,s,l){return s?(s.failedLookupLocations=P2(s.failedLookupLocations,r),s.affectingLocations=P2(s.affectingLocations,i),s.resolutionDiagnostics=P2(s.resolutionDiagnostics,o),s):{resolvedModule:e&&{resolvedFileName:e.path,originalPath:e.originalPath===!0?void 0:e.originalPath,extension:e.extension,isExternalLibraryImport:t,packageId:e.packageId,resolvedUsingTsExtension:!!e.resolvedUsingTsExtension},failedLookupLocations:ML(r),affectingLocations:ML(i),resolutionDiagnostics:ML(o),node10Result:l}}function ML(e){return e.length?e:void 0}function P2(e,t){return t?.length?e?.length?(e.push(...t),e):t:e}function Ffe(e,t,r,i){if(!fs(e,t)){i.traceEnabled&&Xi(i.host,_.package_json_does_not_have_a_0_field,t);return}let o=e[t];if(typeof o!==r||o===null){i.traceEnabled&&Xi(i.host,_.Expected_type_of_0_field_in_package_json_to_be_1_got_2,t,r,o===null?\"null\":typeof o);return}return o}function K3(e,t,r,i){let o=Ffe(e,t,\"string\",i);if(o===void 0)return;if(!o){i.traceEnabled&&Xi(i.host,_.package_json_had_a_falsy_0_field,t);return}let s=So(vi(r,o));return i.traceEnabled&&Xi(i.host,_.package_json_has_0_field_1_that_references_2,t,o,s),s}function xNe(e,t,r){return K3(e,\"typings\",t,r)||K3(e,\"types\",t,r)}function ANe(e,t,r){return K3(e,\"tsconfig\",t,r)}function CNe(e,t,r){return K3(e,\"main\",t,r)}function INe(e,t){let r=Ffe(e,\"typesVersions\",\"object\",t);if(r!==void 0)return t.traceEnabled&&Xi(t.host,_.package_json_has_a_typesVersions_field_with_version_specific_path_mappings),r}function LNe(e,t){let r=INe(e,t);if(r===void 0)return;if(t.traceEnabled)for(let l in r)fs(r,l)&&!hA.tryParse(l)&&Xi(t.host,_.package_json_has_a_typesVersions_entry_0_that_is_not_a_valid_semver_range,l);let i=q3(r);if(!i){t.traceEnabled&&Xi(t.host,_.package_json_does_not_have_a_typesVersions_entry_that_matches_version_0,Sg);return}let{version:o,paths:s}=i;if(typeof s!=\"object\"){t.traceEnabled&&Xi(t.host,_.Expected_type_of_0_field_in_package_json_to_be_1_got_2,`typesVersions['${o}']`,\"object\",typeof s);return}return i}function q3(e){rK||(rK=new n_(wf));for(let t in e){if(!fs(e,t))continue;let r=hA.tryParse(t);if(r!==void 0&&r.test(rK))return{version:t,paths:e[t]}}}function YO(e,t){if(e.typeRoots)return e.typeRoots;let r;if(e.configFilePath?r=ni(e.configFilePath):t.getCurrentDirectory&&(r=t.getCurrentDirectory()),r!==void 0)return kNe(r,t)}function kNe(e,t){if(!t.directoryExists)return[vi(e,iK)];let r;return Th(So(e),i=>{let o=vi(i,iK);t.directoryExists(o)&&(r||(r=[])).push(o)}),r}function DNe(e,t,r){let i=typeof r.useCaseSensitiveFileNames==\"function\"?r.useCaseSensitiveFileNames():r.useCaseSensitiveFileNames;return lT(e,t,!i)===0}function Gfe(e,t,r){let i=WNe(e,t,r),o=DNe(e,i,t);return{resolvedFileName:o?e:i,originalPath:o?void 0:e}}function HJ(e,t,r,i,o,s,l){L.assert(typeof e==\"string\",\"Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself.\");let f=ov(r,i);o&&(r=o.commandLine.options);let d=t?ni(t):void 0,g=d?s?.getFromDirectoryCache(e,l,d,o):void 0;if(!g&&d&&!fl(e)&&(g=s?.getFromNonRelativeNameCache(e,l,d,o)),g)return f&&(Xi(i,_.Resolving_type_reference_directive_0_containing_file_1,e,t),o&&Xi(i,_.Using_compiler_options_of_project_reference_redirect_0,o.sourceFile.fileName),Xi(i,_.Resolution_for_type_reference_directive_0_was_found_in_cache_from_location_1,e,d),q(g)),g;let m=YO(r,i);f&&(t===void 0?m===void 0?Xi(i,_.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set,e):Xi(i,_.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1,e,m):m===void 0?Xi(i,_.Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set,e,t):Xi(i,_.Resolving_type_reference_directive_0_containing_file_1_root_directory_2,e,t,m),o&&Xi(i,_.Using_compiler_options_of_project_reference_redirect_0,o.sourceFile.fileName));let v=[],S=[],x=WJ(r);l===99&&($s(r)===3||$s(r)===99)&&(x|=32);let A=x&8?M2(r,!!(x&32)):[],w=[],C={compilerOptions:r,host:i,traceEnabled:f,failedLookupLocations:v,affectingLocations:S,packageJsonInfoCache:s,features:x,conditions:A,requestContainingDirectory:d,reportDiagnostic:R=>void w.push(R),isConfigLookup:!1,candidateIsFromPackageJsonField:!1},P=W(),F=!0;P||(P=Y(),F=!1);let B;if(P){let{fileName:R,packageId:ie}=P,Q=R,fe;r.preserveSymlinks||({resolvedFileName:Q,originalPath:fe}=Gfe(R,i,f)),B={primary:F,resolvedFileName:Q,originalPath:fe,packageId:ie,isExternalLibraryImport:KS(R)}}return g={resolvedTypeReferenceDirective:B,failedLookupLocations:ML(v),affectingLocations:ML(S),resolutionDiagnostics:ML(w)},d&&(s?.getOrCreateCacheForDirectory(d,o).set(e,l,g),fl(e)||s?.getOrCreateCacheForNonRelativeName(e,l,o).set(d,g)),f&&q(g),g;function q(R){var ie;(ie=R.resolvedTypeReferenceDirective)!=null&&ie.resolvedFileName?R.resolvedTypeReferenceDirective.packageId?Xi(i,_.Type_reference_directive_0_was_successfully_resolved_to_1_with_Package_ID_2_primary_Colon_3,e,R.resolvedTypeReferenceDirective.resolvedFileName,gT(R.resolvedTypeReferenceDirective.packageId),R.resolvedTypeReferenceDirective.primary):Xi(i,_.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2,e,R.resolvedTypeReferenceDirective.resolvedFileName,R.resolvedTypeReferenceDirective.primary):Xi(i,_.Type_reference_directive_0_was_not_resolved,e)}function W(){if(m&&m.length)return f&&Xi(i,_.Resolving_with_primary_search_path_0,m.join(\", \")),ks(m,R=>{let ie=vi(R,e),Q=ni(ie),fe=gp(Q,i);return!fe&&f&&Xi(i,_.Directory_0_does_not_exist_skipping_all_lookups_in_it,Q),Nfe(Qfe(4,ie,!fe,C))});f&&Xi(i,_.Root_directory_cannot_be_determined_skipping_primary_search_paths)}function Y(){let R=t&&ni(t);if(R!==void 0){f&&Xi(i,_.Looking_up_in_node_modules_folder_initial_location_0,R);let ie;if(fl(e)){let{path:Q}=Kfe(R,e);ie=Q3(4,Q,!1,C,!0)}else{let Q=t_e(4,e,R,C,void 0,void 0);ie=Q&&Q.value}return Nfe(ie)}else f&&Xi(i,_.Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder)}}function WJ(e){let t=0;switch($s(e)){case 3:t=30;break;case 99:t=30;break;case 100:t=30;break}return e.resolvePackageJsonExports?t|=8:e.resolvePackageJsonExports===!1&&(t&=-9),e.resolvePackageJsonImports?t|=2:e.resolvePackageJsonImports===!1&&(t&=-3),t}function M2(e,t){let r=t||$s(e)===100?[\"import\"]:[\"require\"];return e.noDtsResolution||r.push(\"types\"),$s(e)!==100&&r.push(\"node\"),Qi(r,e.customConditions)}function wNe(e,t,r,i,o){let s=Z3(o?.getPackageJsonInfoCache(),i,r);return Th(t,l=>{if(Hl(l)!==\"node_modules\"){let f=vi(l,\"node_modules\"),d=vi(f,e);return qS(d,!1,s)}})}function X3(e,t){if(e.types)return e.types;let r=[];if(t.directoryExists&&t.getDirectories){let i=YO(e,t);if(i){for(let o of i)if(t.directoryExists(o))for(let s of t.getDirectories(o)){let l=So(s),f=vi(o,l,\"package.json\");if(!(t.fileExists(f)&&KI(f,t).typings===null)){let g=Hl(l);g.charCodeAt(0)!==46&&r.push(g)}}}}return r}function zJ(e){var t;if(e===null||typeof e!=\"object\")return\"\"+e;if(ba(e))return`[${(t=e.map(i=>zJ(i)))==null?void 0:t.join(\",\")}]`;let r=\"{\";for(let i in e)fs(e,i)&&(r+=`${i}: ${zJ(e[i])}`);return r+\"}\"}function JJ(e,t){return t.map(r=>zJ(f4(e,r))).join(\"|\")+(e.pathsBasePath?`|${e.pathsBasePath}`:void 0)}function KJ(e){let t=new Map,r=new Map,i=new Map,o=new Map;return e&&t.set(e,o),{getMapOfCacheRedirects:s,getOrCreateMapOfCacheRedirects:l,update:f,clear:g};function s(v){return v?d(v.commandLine.options,!1):o}function l(v){return v?d(v.commandLine.options,!0):o}function f(v){e!==v&&(e?o=d(v,!0):t.set(v,o),e=v)}function d(v,S){let x=t.get(v);if(x)return x;let A=m(v);if(x=i.get(A),!x){if(e){let w=m(e);w===A?x=o:i.has(w)||i.set(w,o)}S&&(x??(x=new Map)),x&&i.set(A,x)}return x&&t.set(v,x),x}function g(){let v=e&&r.get(e);o.clear(),t.clear(),r.clear(),i.clear(),e&&(v&&r.set(e,v),t.set(e,o))}function m(v){let S=r.get(v);return S||r.set(v,S=JJ(v,U3)),S}}function RNe(e,t){let r;return{getPackageJsonInfo:i,setPackageJsonInfo:o,clear:s,entries:l,getInternalMap:f};function i(d){return r?.get(Ts(d,e,t))}function o(d,g){(r||(r=new Map)).set(Ts(d,e,t),g)}function s(){r=void 0}function l(){let d=r?.entries();return d?lo(d):[]}function f(){return r}}function Bfe(e,t,r,i){let o=e.getOrCreateMapOfCacheRedirects(t),s=o.get(r);return s||(s=i(),o.set(r,s)),s}function ONe(e,t,r){let i=KJ(r);return{getFromDirectoryCache:f,getOrCreateCacheForDirectory:l,clear:o,update:s};function o(){i.clear()}function s(d){i.update(d)}function l(d,g){let m=Ts(d,e,t);return Bfe(i,g,m,()=>zT())}function f(d,g,m,v){var S,x;let A=Ts(m,e,t);return(x=(S=i.getMapOfCacheRedirects(v))==null?void 0:S.get(A))==null?void 0:x.get(d,g)}}function FL(e,t){return t===void 0?e:`${t}|${e}`}function zT(){let e=new Map,t=new Map,r={get(o,s){return e.get(i(o,s))},set(o,s,l){return e.set(i(o,s),l),r},delete(o,s){return e.delete(i(o,s)),r},has(o,s){return e.has(i(o,s))},forEach(o){return e.forEach((s,l)=>{let[f,d]=t.get(l);return o(s,f,d)})},size(){return e.size}};return r;function i(o,s){let l=FL(o,s);return t.set(l,[o,s]),l}}function qJ(e,t,r,i){L.assert(t.length===r.length);let o=zT();for(let s=0;s<t.length;++s){let l=t[s];o.set(i.getName(l),i.getMode(l,e),r[s])}return o}function NNe(e){return e.resolvedModule&&(e.resolvedModule.originalPath||e.resolvedModule.resolvedFileName)}function PNe(e){return e.resolvedTypeReferenceDirective&&(e.resolvedTypeReferenceDirective.originalPath||e.resolvedTypeReferenceDirective.resolvedFileName)}function MNe(e,t,r,i){let o=KJ(r);return{getFromNonRelativeNameCache:f,getOrCreateCacheForNonRelativeName:d,clear:s,update:l};function s(){o.clear()}function l(m){o.update(m)}function f(m,v,S,x){var A,w;return L.assert(!fl(m)),(w=(A=o.getMapOfCacheRedirects(x))==null?void 0:A.get(FL(m,v)))==null?void 0:w.get(S)}function d(m,v,S){return L.assert(!fl(m)),Bfe(o,S,FL(m,v),g)}function g(){let m=new Map;return{get:v,set:S};function v(A){return m.get(Ts(A,e,t))}function S(A,w){let C=Ts(A,e,t);if(m.has(C))return;m.set(C,w);let P=i(w),F=P&&x(C,P),B=C;for(;B!==F;){let q=ni(B);if(q===B||m.has(q))break;m.set(q,w),B=q}}function x(A,w){let C=Ts(ni(w),e,t),P=0,F=Math.min(A.length,C.length);for(;P<F&&A.charCodeAt(P)===C.charCodeAt(P);)P++;if(P===A.length&&(C.length===P||C[P]===_s))return A;let B=_p(A);if(P<B)return;let q=A.lastIndexOf(_s,P-1);if(q!==-1)return A.substr(0,Math.max(q,B))}}}function Ufe(e,t,r,i,o){let s=ONe(e,t,r),l=MNe(e,t,r,o);return i??(i=RNe(e,t)),{...i,...s,...l,clear:f,update:g,getPackageJsonInfoCache:()=>i,clearAllExceptPackageJsonInfoCache:d};function f(){d(),i.clear()}function d(){s.clear(),l.clear()}function g(m){s.update(m),l.update(m)}}function Y3(e,t,r){let i=Ufe(e,t,r,void 0,NNe);return i.getOrCreateCacheForModuleName=(o,s,l)=>i.getOrCreateCacheForNonRelativeName(o,s,l),i}function $3(e,t,r,i){return Ufe(e,t,r,i,PNe)}function FNe(e,t,r,i){let o=ni(t);return r.getFromDirectoryCache(e,i,o,void 0)}function GL(e,t,r,i,o,s,l){let f=ov(r,i);s&&(r=s.commandLine.options),f&&(Xi(i,_.Resolving_module_0_from_1,e,t),s&&Xi(i,_.Using_compiler_options_of_project_reference_redirect_0,s.sourceFile.fileName));let d=ni(t),g=o?.getFromDirectoryCache(e,l,d,s);if(g)f&&Xi(i,_.Resolution_for_module_0_was_found_in_cache_from_location_1,e,d);else{let m=r.moduleResolution;if(m===void 0){switch(Rl(r)){case 1:m=2;break;case 100:m=3;break;case 199:m=99;break;default:m=1;break}f&&Xi(i,_.Module_resolution_kind_is_not_specified_using_0,iw[m])}else f&&Xi(i,_.Explicitly_specified_module_resolution_kind_Colon_0,iw[m]);switch(fp.logStartResolveModule(e),m){case 3:g=VNe(e,t,r,i,o,s,l);break;case 99:g=jNe(e,t,r,i,o,s,l);break;case 2:g=zfe(e,t,r,i,o,s);break;case 1:g=o_e(e,t,r,i,o,s);break;case 100:g=Wfe(e,t,r,i,o,s);break;default:return L.fail(`Unexpected moduleResolution: ${m}`)}g&&g.resolvedModule&&fp.logInfoEvent(`Module \"${e}\" resolved to \"${g.resolvedModule.resolvedFileName}\"`),fp.logStopResolveModule(g&&g.resolvedModule?\"\"+g.resolvedModule.resolvedFileName:\"null\"),o?.getOrCreateCacheForDirectory(d,s).set(e,l,g),fl(e)||o?.getOrCreateCacheForNonRelativeName(e,l,s).set(d,g)}return f&&(g.resolvedModule?g.resolvedModule.packageId?Xi(i,_.Module_name_0_was_successfully_resolved_to_1_with_Package_ID_2,e,g.resolvedModule.resolvedFileName,gT(g.resolvedModule.packageId)):Xi(i,_.Module_name_0_was_successfully_resolved_to_1,e,g.resolvedModule.resolvedFileName):Xi(i,_.Module_name_0_was_not_resolved,e)),g}function Vfe(e,t,r,i,o){let s=GNe(e,t,i,o);return s?s.value:fl(t)?BNe(e,t,r,i,o):UNe(e,t,i,o)}function GNe(e,t,r,i){var o;let{baseUrl:s,paths:l,configFile:f}=i.compilerOptions;if(l&&!zd(t)){i.traceEnabled&&(s&&Xi(i.host,_.baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1,s,t),Xi(i.host,_.paths_option_is_specified_looking_for_a_pattern_to_match_module_name_0,t));let d=ZH(i.compilerOptions,i.host),g=f?.configFileSpecs?(o=f.configFileSpecs).pathPatterns||(o.pathPatterns=g4(l)):void 0;return nK(e,t,d,l,g,r,!1,i)}}function BNe(e,t,r,i,o){if(!o.compilerOptions.rootDirs)return;o.traceEnabled&&Xi(o.host,_.rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0,t);let s=So(vi(r,t)),l,f;for(let d of o.compilerOptions.rootDirs){let g=So(d);Oc(g,_s)||(g+=_s);let m=na(s,g)&&(f===void 0||f.length<g.length);o.traceEnabled&&Xi(o.host,_.Checking_if_0_is_the_longest_matching_prefix_for_1_2,g,s,m),m&&(f=g,l=d)}if(f){o.traceEnabled&&Xi(o.host,_.Longest_matching_prefix_for_0_is_1,s,f);let d=s.substr(f.length);o.traceEnabled&&Xi(o.host,_.Loading_0_from_the_root_dir_1_candidate_location_2,d,f,s);let g=i(e,s,!gp(r,o.host),o);if(g)return g;o.traceEnabled&&Xi(o.host,_.Trying_other_entries_in_rootDirs);for(let m of o.compilerOptions.rootDirs){if(m===l)continue;let v=vi(So(m),d);o.traceEnabled&&Xi(o.host,_.Loading_0_from_the_root_dir_1_candidate_location_2,d,m,v);let S=ni(v),x=i(e,v,!gp(S,o.host),o);if(x)return x}o.traceEnabled&&Xi(o.host,_.Module_resolution_using_rootDirs_has_failed)}}function UNe(e,t,r,i){let{baseUrl:o}=i.compilerOptions;if(!o)return;i.traceEnabled&&Xi(i.host,_.baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1,o,t);let s=So(vi(o,t));return i.traceEnabled&&Xi(i.host,_.Resolving_module_name_0_relative_to_base_url_1_2,t,o,s),r(e,s,!gp(ni(s),i.host),i)}function jfe(e,t,r){let{resolvedModule:i,failedLookupLocations:o}=HNe(e,t,r);if(!i)throw new Error(`Could not resolve JS module '${e}' starting at '${t}'. Looked in: ${o?.join(\", \")}`);return i.resolvedFileName}function VNe(e,t,r,i,o,s,l){return Hfe(30,e,t,r,i,o,s,l)}function jNe(e,t,r,i,o,s,l){return Hfe(30,e,t,r,i,o,s,l)}function Hfe(e,t,r,i,o,s,l,f){let d=ni(r),g=f===99?32:0,m=i.noDtsResolution?3:7;return OT(i)&&(m|=8),BL(e|g,t,d,i,o,s,m,!1,l)}function HNe(e,t,r){return BL(0,e,t,{moduleResolution:2,allowJs:!0},r,void 0,2,!1,void 0)}function Wfe(e,t,r,i,o,s){let l=ni(t),f=r.noDtsResolution?3:7;return OT(r)&&(f|=8),BL(WJ(r),e,l,r,i,o,f,!1,s)}function zfe(e,t,r,i,o,s,l){let f;return l?f=8:r.noDtsResolution?(f=3,OT(r)&&(f|=8)):f=OT(r)?15:7,BL(0,e,ni(t),r,i,o,f,!!l,s)}function Jfe(e,t,r){return BL(8,e,ni(t),{moduleResolution:99},r,void 0,8,!0,void 0)}function BL(e,t,r,i,o,s,l,f,d){var g,m,v,S;let x=ov(i,o),A=[],w=[],C=M2(i,!!(e&32)),P=[],F={compilerOptions:i,host:o,traceEnabled:x,failedLookupLocations:A,affectingLocations:w,packageJsonInfoCache:s,features:e,conditions:C,requestContainingDirectory:r,reportDiagnostic:Y=>void P.push(Y),isConfigLookup:f,candidateIsFromPackageJsonField:!1};x&&ES($s(i))&&Xi(o,_.Resolving_in_0_mode_with_conditions_1,e&32?\"ESM\":\"CJS\",C.map(Y=>`'${Y}'`).join(\", \"));let B;if($s(i)===2){let Y=l&5,R=l&-6;B=Y&&W(Y,F)||R&&W(R,F)||void 0}else B=W(l,F);let q;if(((g=B?.value)==null?void 0:g.isExternalLibraryImport)&&!f&&l&5&&e&8&&!fl(t)&&!QJ(5,B.value.resolved.extension)&&C.indexOf(\"import\")>-1){Y0(F,_.Resolution_of_non_relative_name_failed_trying_with_modern_Node_resolution_features_disabled_to_see_if_npm_library_needs_configuration_update);let Y={...F,features:F.features&-9,failedLookupLocations:[],affectingLocations:[],reportDiagnostic:Ba},R=W(l&5,Y);(m=R?.value)!=null&&m.isExternalLibraryImport&&(q=R.value.resolved.path)}return Pfe(t,(v=B?.value)==null?void 0:v.resolved,(S=B?.value)==null?void 0:S.isExternalLibraryImport,A,w,P,F,q);function W(Y,R){let Q=Vfe(Y,t,r,(fe,Z,U,re)=>Q3(fe,Z,U,re,!0),R);if(Q)return xf({resolved:Q,isExternalLibraryImport:KS(Q.path)});if(fl(t)){let{path:fe,parts:Z}=Kfe(r,t),U=Q3(Y,fe,!1,R,!0);return U&&xf({resolved:U,isExternalLibraryImport:ya(Z,\"node_modules\")})}else{let fe;return e&2&&na(t,\"#\")&&(fe=YNe(Y,t,r,R,s,d)),!fe&&e&4&&(fe=XNe(Y,t,r,R,s,d)),fe||(x&&Xi(o,_.Loading_module_0_from_node_modules_folder_target_file_types_Colon_1,t,Ofe(Y)),fe=t_e(Y,t,r,R,s,d)),fe&&{value:fe.value&&{resolved:fe.value,isExternalLibraryImport:!0}}}}}function Kfe(e,t){let r=vi(e,t),i=Ou(r),o=Os(i);return{path:o===\".\"||o===\"..\"?cu(So(r)):So(r),parts:i}}function WNe(e,t,r){if(!t.realpath)return e;let i=So(t.realpath(e));return r&&Xi(t,_.Resolving_real_path_for_0_result_1,e,i),L.assert(t.fileExists(i),`${e} linked to nonexistent file ${i}`),i}function Q3(e,t,r,i,o){if(i.traceEnabled&&Xi(i.host,_.Loading_module_as_file_Slash_folder_candidate_module_location_0_target_file_types_Colon_1,t,Ofe(e)),!My(t)){if(!r){let l=ni(t);gp(l,i.host)||(i.traceEnabled&&Xi(i.host,_.Directory_0_does_not_exist_skipping_all_lookups_in_it,l),r=!0)}let s=UL(e,t,r,i);if(s){let l=o?XJ(s.path):void 0,f=l?qS(l,!1,i):void 0;return N2(f,s)}}if(r||gp(t,i.host)||(i.traceEnabled&&Xi(i.host,_.Directory_0_does_not_exist_skipping_all_lookups_in_it,t),r=!0),!(i.features&32))return Qfe(e,t,r,i,o)}function KS(e){return jl(e,Wg)}function XJ(e){let t=So(e),r=t.lastIndexOf(Wg);if(r===-1)return;let i=r+Wg.length,o=qfe(t,i);return t.charCodeAt(i)===64&&(o=qfe(t,o)),t.slice(0,o)}function qfe(e,t){let r=e.indexOf(_s,t+1);return r===-1?t:r}function YJ(e,t,r,i){return J3(UL(e,t,r,i))}function UL(e,t,r,i){let o=Xfe(e,t,r,i);if(o)return o;if(!(i.features&32)){let s=Yfe(t,e,\"\",r,i);if(s)return s}}function Xfe(e,t,r,i){if(Hl(t).indexOf(\".\")===-1)return;let s=ld(t);s===t&&(s=t.substring(0,t.lastIndexOf(\".\")));let l=t.substring(s.length);return i.traceEnabled&&Xi(i.host,_.File_name_0_has_a_1_extension_stripping_it,t,l),Yfe(s,e,l,r,i)}function $J(e,t,r,i){return e&1&&$c(t,L4)||e&4&&$c(t,I4)?$O(t,r,i)!==void 0?{path:t,ext:r4(t),resolvedUsingTsExtension:void 0}:void 0:i.isConfigLookup&&e===8&&Gc(t,\".json\")?$O(t,r,i)!==void 0?{path:t,ext:\".json\",resolvedUsingTsExtension:void 0}:void 0:Xfe(e,t,r,i)}function Yfe(e,t,r,i,o){if(!i){let l=ni(e);l&&(i=!gp(l,o.host))}switch(r){case\".mjs\":case\".mts\":case\".d.mts\":return t&1&&s(\".mts\",r===\".mts\"||r===\".d.mts\")||t&4&&s(\".d.mts\",r===\".mts\"||r===\".d.mts\")||t&2&&s(\".mjs\")||void 0;case\".cjs\":case\".cts\":case\".d.cts\":return t&1&&s(\".cts\",r===\".cts\"||r===\".d.cts\")||t&4&&s(\".d.cts\",r===\".cts\"||r===\".d.cts\")||t&2&&s(\".cjs\")||void 0;case\".json\":return t&4&&s(\".d.json.ts\")||t&8&&s(\".json\")||void 0;case\".tsx\":case\".jsx\":return t&1&&(s(\".tsx\",r===\".tsx\")||s(\".ts\",r===\".tsx\"))||t&4&&s(\".d.ts\",r===\".tsx\")||t&2&&(s(\".jsx\")||s(\".js\"))||void 0;case\".ts\":case\".d.ts\":case\".js\":case\"\":return t&1&&(s(\".ts\",r===\".ts\"||r===\".d.ts\")||s(\".tsx\",r===\".ts\"||r===\".d.ts\"))||t&4&&s(\".d.ts\",r===\".ts\"||r===\".d.ts\")||t&2&&(s(\".js\")||s(\".jsx\"))||o.isConfigLookup&&s(\".json\")||void 0;default:return t&4&&!Fu(e+r)&&s(`.d${r}.ts`)||void 0}function s(l,f){let d=$O(e+l,i,o);return d===void 0?void 0:{path:d,ext:l,resolvedUsingTsExtension:!o.candidateIsFromPackageJsonField&&f}}}function $O(e,t,r){var i,o;if(!((i=r.compilerOptions.moduleSuffixes)!=null&&i.length))return $fe(e,t,r);let s=(o=Hm(e))!=null?o:\"\",l=s?VR(e,s):e;return mn(r.compilerOptions.moduleSuffixes,f=>$fe(l+f+s,t,r))}function $fe(e,t,r){if(!t){if(r.host.fileExists(e))return r.traceEnabled&&Xi(r.host,_.File_0_exists_use_it_as_a_name_resolution_result,e),e;r.traceEnabled&&Xi(r.host,_.File_0_does_not_exist,e)}r.failedLookupLocations.push(e)}function Qfe(e,t,r,i,o=!0){let s=o?qS(t,r,i):void 0,l=s&&s.contents.packageJsonContent,f=s&&QO(s,i);return N2(s,tF(e,t,r,i,l,f))}function zNe(e,t,r,i,o){if(!o&&e.contents.resolvedEntrypoints!==void 0)return e.contents.resolvedEntrypoints;let s,l=5|(o?2:0),f=WJ(t),d=Z3(i?.getPackageJsonInfoCache(),r,t);d.conditions=M2(t),d.requestContainingDirectory=e.packageDirectory;let g=tF(l,e.packageDirectory,!1,d,e.contents.packageJsonContent,QO(e,d));if(s=Sn(s,g?.path),f&8&&e.contents.packageJsonContent.exports){let m=_A([M2(t,!0),M2(t,!1)],up);for(let v of m){let S={...d,failedLookupLocations:[],conditions:v},x=JNe(e,e.contents.packageJsonContent.exports,S,l);if(x)for(let A of x)s=xg(s,A.path)}}return e.contents.resolvedEntrypoints=s||!1}function JNe(e,t,r,i){let o;if(ba(t))for(let l of t)s(l);else if(typeof t==\"object\"&&t!==null&&nF(t))for(let l in t)s(t[l]);else s(t);return o;function s(l){var f,d;if(typeof l==\"string\"&&na(l,\"./\")&&l.indexOf(\"*\")===-1){let g=Ou(l).slice(2);if(g.indexOf(\"..\")>=0||g.indexOf(\".\")>=0||g.indexOf(\"node_modules\")>=0)return!1;let m=vi(e.packageDirectory,l),v=_a(m,(d=(f=r.host).getCurrentDirectory)==null?void 0:d.call(f)),S=$J(i,v,!1,r);if(S)return o=xg(o,S,(x,A)=>x.path===A.path),!0}else if(Array.isArray(l)){for(let g of l)if(s(g))return!0}else if(typeof l==\"object\"&&l!==null)return mn(bh(l),g=>{if(g===\"default\"||ya(r.conditions,g)||ZO(r.conditions,g))return s(l[g]),!0})}}function Z3(e,t,r){return{host:t,compilerOptions:r,traceEnabled:ov(r,t),failedLookupLocations:E8,affectingLocations:E8,packageJsonInfoCache:e,features:0,conditions:Je,requestContainingDirectory:void 0,reportDiagnostic:Ba,isConfigLookup:!1,candidateIsFromPackageJsonField:!1}}function eF(e,t){let r=Ou(e);for(r.pop();r.length>0;){let i=qS(T0(r),!1,t);if(i)return i;r.pop()}}function QO(e,t){return e.contents.versionPaths===void 0&&(e.contents.versionPaths=LNe(e.contents.packageJsonContent,t)||!1),e.contents.versionPaths||void 0}function qS(e,t,r){var i,o,s;let{host:l,traceEnabled:f}=r,d=vi(e,\"package.json\");if(t){r.failedLookupLocations.push(d);return}let g=(i=r.packageJsonInfoCache)==null?void 0:i.getPackageJsonInfo(d);if(g!==void 0){if(typeof g!=\"boolean\")return f&&Xi(l,_.File_0_exists_according_to_earlier_cached_lookups,d),r.affectingLocations.push(d),g.packageDirectory===e?g:{packageDirectory:e,contents:g.contents};g&&f&&Xi(l,_.File_0_does_not_exist_according_to_earlier_cached_lookups,d),r.failedLookupLocations.push(d);return}let m=gp(e,l);if(m&&l.fileExists(d)){let v=KI(d,l);f&&Xi(l,_.Found_package_json_at_0,d);let S={packageDirectory:e,contents:{packageJsonContent:v,versionPaths:void 0,resolvedEntrypoints:void 0}};return(o=r.packageJsonInfoCache)==null||o.setPackageJsonInfo(d,S),r.affectingLocations.push(d),S}else m&&f&&Xi(l,_.File_0_does_not_exist,d),(s=r.packageJsonInfoCache)==null||s.setPackageJsonInfo(d,m),r.failedLookupLocations.push(d)}function tF(e,t,r,i,o,s){let l;o&&(i.isConfigLookup?l=ANe(o,t,i):l=e&4&&xNe(o,t,i)||e&7&&CNe(o,t,i)||void 0);let f=(S,x,A,w)=>{let C=$O(x,A,w);if(C){let W=KNe(S,C);if(W)return J3(W);w.traceEnabled&&Xi(w.host,_.File_0_has_an_unsupported_extension_so_skipping_it,C)}let P=S===4?5:S,F=w.features,B=w.candidateIsFromPackageJsonField;w.candidateIsFromPackageJsonField=!0,o?.type!==\"module\"&&(w.features&=-33);let q=Q3(P,x,A,w,!1);return w.features=F,w.candidateIsFromPackageJsonField=B,q},d=l?!gp(ni(l),i.host):void 0,g=r||!gp(t,i.host),m=vi(t,i.isConfigLookup?\"tsconfig\":\"index\");if(s&&(!l||Gy(t,l))){let S=Xp(t,l||m,!1);i.traceEnabled&&Xi(i.host,_.package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2,s.version,wf,S);let x=nK(e,S,t,s.paths,void 0,f,d||g,i);if(x)return Rfe(x.value)}let v=l&&Rfe(f(e,l,d,i));if(v)return v;if(!(i.features&32))return UL(e,m,g,i)}function KNe(e,t,r){let i=Hm(t);return i!==void 0&&QJ(e,i)?{path:t,ext:i,resolvedUsingTsExtension:r}:void 0}function QJ(e,t){return e&2&&(t===\".js\"||t===\".jsx\"||t===\".mjs\"||t===\".cjs\")||e&1&&(t===\".ts\"||t===\".tsx\"||t===\".mts\"||t===\".cts\")||e&4&&(t===\".d.ts\"||t===\".d.mts\"||t===\".d.cts\")||e&8&&t===\".json\"||!1}function ZJ(e){let t=e.indexOf(_s);return e[0]===\"@\"&&(t=e.indexOf(_s,t+1)),t===-1?{packageName:e,rest:\"\"}:{packageName:e.slice(0,t),rest:e.slice(t+1)}}function nF(e){return Ji(bh(e),t=>na(t,\".\"))}function qNe(e){return!vt(bh(e),t=>na(t,\".\"))}function XNe(e,t,r,i,o,s){var l,f;let d=_a(vi(r,\"dummy\"),(f=(l=i.host).getCurrentDirectory)==null?void 0:f.call(l)),g=eF(d,i);if(!g||!g.contents.packageJsonContent.exports||typeof g.contents.packageJsonContent.name!=\"string\")return;let m=Ou(t),v=Ou(g.contents.packageJsonContent.name);if(!Ji(v,(C,P)=>m[P]===C))return;let S=m.slice(v.length),x=Fn(S)?`.${_s}${S.join(_s)}`:\".\",A=e&5,w=e&-6;return eK(g,A,x,i,o,s)||eK(g,w,x,i,o,s)}function eK(e,t,r,i,o,s){if(!!e.contents.packageJsonContent.exports){if(r===\".\"){let l;if(typeof e.contents.packageJsonContent.exports==\"string\"||Array.isArray(e.contents.packageJsonContent.exports)||typeof e.contents.packageJsonContent.exports==\"object\"&&qNe(e.contents.packageJsonContent.exports)?l=e.contents.packageJsonContent.exports:fs(e.contents.packageJsonContent.exports,\".\")&&(l=e.contents.packageJsonContent.exports[\".\"]),l)return e_e(t,i,o,s,r,e,!1)(l,\"\",!1,\".\")}else if(nF(e.contents.packageJsonContent.exports)){if(typeof e.contents.packageJsonContent.exports!=\"object\")return i.traceEnabled&&Xi(i.host,_.Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1,r,e.packageDirectory),xf(void 0);let l=Zfe(t,i,o,s,r,e.contents.packageJsonContent.exports,e,!1);if(l)return l}return i.traceEnabled&&Xi(i.host,_.Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1,r,e.packageDirectory),xf(void 0)}}function YNe(e,t,r,i,o,s){var l,f;if(t===\"#\"||na(t,\"#/\"))return i.traceEnabled&&Xi(i.host,_.Invalid_import_specifier_0_has_no_possible_resolutions,t),xf(void 0);let d=_a(vi(r,\"dummy\"),(f=(l=i.host).getCurrentDirectory)==null?void 0:f.call(l)),g=eF(d,i);if(!g)return i.traceEnabled&&Xi(i.host,_.Directory_0_has_no_containing_package_json_scope_Imports_will_not_resolve,d),xf(void 0);if(!g.contents.packageJsonContent.imports)return i.traceEnabled&&Xi(i.host,_.package_json_scope_0_has_no_imports_defined,g.packageDirectory),xf(void 0);let m=Zfe(e,i,o,s,t,g.contents.packageJsonContent.imports,g,!0);return m||(i.traceEnabled&&Xi(i.host,_.Import_specifier_0_does_not_exist_in_package_json_scope_at_path_1,t,g.packageDirectory),xf(void 0))}function tK(e,t){let r=e.indexOf(\"*\"),i=t.indexOf(\"*\"),o=r===-1?e.length:r+1,s=i===-1?t.length:i+1;return o>s?-1:s>o||r===-1?1:i===-1||e.length>t.length?-1:t.length>e.length?1:0}function Zfe(e,t,r,i,o,s,l,f){let d=e_e(e,t,r,i,o,l,f);if(!Oc(o,_s)&&o.indexOf(\"*\")===-1&&fs(s,o)){let v=s[o];return d(v,\"\",!1,o)}let g=YC(Pr(bh(s),v=>v.indexOf(\"*\")!==-1||Oc(v,\"/\")),tK);for(let v of g)if(t.features&16&&m(v,o)){let S=s[v],x=v.indexOf(\"*\"),A=o.substring(v.substring(0,x).length,o.length-(v.length-1-x));return d(S,A,!0,v)}else if(Oc(v,\"*\")&&na(o,v.substring(0,v.length-1))){let S=s[v],x=o.substring(v.length-1);return d(S,x,!0,v)}else if(na(o,v)){let S=s[v],x=o.substring(v.length);return d(S,x,!1,v)}function m(v,S){if(Oc(v,\"*\"))return!1;let x=v.indexOf(\"*\");return x===-1?!1:na(S,v.substring(0,x))&&Oc(S,v.substring(x+1))}}function e_e(e,t,r,i,o,s,l){return f;function f(d,g,m,v){if(typeof d==\"string\"){if(!m&&g.length>0&&!Oc(d,\"/\"))return t.traceEnabled&&Xi(t.host,_.package_json_scope_0_has_invalid_type_for_target_of_specifier_1,s.packageDirectory,o),xf(void 0);if(!na(d,\"./\")){if(l&&!na(d,\"../\")&&!na(d,\"/\")&&!qp(d)){let Y=m?d.replace(/\\*/g,g):d+g;Y0(t,_.Using_0_subpath_1_with_target_2,\"imports\",v,Y),Y0(t,_.Resolving_module_0_from_1,Y,s.packageDirectory+\"/\");let R=BL(t.features,Y,s.packageDirectory+\"/\",t.compilerOptions,t.host,r,e,!1,i);return xf(R.resolvedModule?{path:R.resolvedModule.resolvedFileName,extension:R.resolvedModule.extension,packageId:R.resolvedModule.packageId,originalPath:R.resolvedModule.originalPath,resolvedUsingTsExtension:R.resolvedModule.resolvedUsingTsExtension}:void 0)}return t.traceEnabled&&Xi(t.host,_.package_json_scope_0_has_invalid_type_for_target_of_specifier_1,s.packageDirectory,o),xf(void 0)}let P=(zd(d)?Ou(d).slice(1):Ou(d)).slice(1);if(P.indexOf(\"..\")>=0||P.indexOf(\".\")>=0||P.indexOf(\"node_modules\")>=0)return t.traceEnabled&&Xi(t.host,_.package_json_scope_0_has_invalid_type_for_target_of_specifier_1,s.packageDirectory,o),xf(void 0);let F=vi(s.packageDirectory,d),B=Ou(g);if(B.indexOf(\"..\")>=0||B.indexOf(\".\")>=0||B.indexOf(\"node_modules\")>=0)return t.traceEnabled&&Xi(t.host,_.package_json_scope_0_has_invalid_type_for_target_of_specifier_1,s.packageDirectory,o),xf(void 0);t.traceEnabled&&Xi(t.host,_.Using_0_subpath_1_with_target_2,l?\"imports\":\"exports\",v,m?d.replace(/\\*/g,g):d+g);let q=S(m?F.replace(/\\*/g,g):F+g),W=w(q,g,vi(s.packageDirectory,\"package.json\"),l);return W||xf(N2(s,$J(e,q,!1,t)))}else if(typeof d==\"object\"&&d!==null)if(Array.isArray(d)){if(!Fn(d))return t.traceEnabled&&Xi(t.host,_.package_json_scope_0_has_invalid_type_for_target_of_specifier_1,s.packageDirectory,o),xf(void 0);for(let C of d){let P=f(C,g,m,v);if(P)return P}}else{Y0(t,_.Entering_conditional_exports);for(let C of bh(d))if(C===\"default\"||t.conditions.indexOf(C)>=0||ZO(t.conditions,C)){Y0(t,_.Matched_0_condition_1,l?\"imports\":\"exports\",C);let P=d[C],F=f(P,g,m,v);if(F)return Y0(t,_.Resolved_under_condition_0,C),Y0(t,_.Exiting_conditional_exports),F;Y0(t,_.Failed_to_resolve_under_condition_0,C)}else Y0(t,_.Saw_non_matching_condition_0,C);Y0(t,_.Exiting_conditional_exports);return}else if(d===null)return t.traceEnabled&&Xi(t.host,_.package_json_scope_0_explicitly_maps_specifier_1_to_null,s.packageDirectory,o),xf(void 0);return t.traceEnabled&&Xi(t.host,_.package_json_scope_0_has_invalid_type_for_target_of_specifier_1,s.packageDirectory,o),xf(void 0);function S(C){var P,F;return C===void 0?C:_a(C,(F=(P=t.host).getCurrentDirectory)==null?void 0:F.call(P))}function x(C,P){return cu(vi(C,P))}function A(){return t.host.useCaseSensitiveFileNames?typeof t.host.useCaseSensitiveFileNames==\"boolean\"?t.host.useCaseSensitiveFileNames:t.host.useCaseSensitiveFileNames():!0}function w(C,P,F,B){var q,W,Y,R;if(!t.isConfigLookup&&(t.compilerOptions.declarationDir||t.compilerOptions.outDir)&&C.indexOf(\"/node_modules/\")===-1&&(t.compilerOptions.configFile?Gy(s.packageDirectory,S(t.compilerOptions.configFile.fileName),!A()):!0)){let Q=lb({useCaseSensitiveFileNames:A}),fe=[];if(t.compilerOptions.rootDir||t.compilerOptions.composite&&t.compilerOptions.configFilePath){let Z=S(dN(t.compilerOptions,()=>[],((W=(q=t.host).getCurrentDirectory)==null?void 0:W.call(q))||\"\",Q));fe.push(Z)}else if(t.requestContainingDirectory){let Z=S(vi(t.requestContainingDirectory,\"index.ts\")),U=S(dN(t.compilerOptions,()=>[Z,S(F)],((R=(Y=t.host).getCurrentDirectory)==null?void 0:R.call(Y))||\"\",Q));fe.push(U);let re=cu(U);for(;re&&re.length>1;){let le=Ou(re);le.pop();let _e=T0(le);fe.unshift(_e),re=cu(_e)}}fe.length>1&&t.reportDiagnostic(ps(B?_.The_project_root_is_ambiguous_but_is_required_to_resolve_import_map_entry_0_in_file_1_Supply_the_rootDir_compiler_option_to_disambiguate:_.The_project_root_is_ambiguous_but_is_required_to_resolve_export_map_entry_0_in_file_1_Supply_the_rootDir_compiler_option_to_disambiguate,P===\"\"?\".\":P,F));for(let Z of fe){let U=ie(Z);for(let re of U)if(Gy(re,C,!A())){let le=C.slice(re.length+1),_e=vi(Z,le),ge=[\".mjs\",\".cjs\",\".js\",\".json\",\".d.mts\",\".d.cts\",\".d.ts\"];for(let X of ge)if(Gc(_e,X)){let Ve=Oce(_e);for(let we of Ve){if(!QJ(e,we))continue;let ke=uj(_e,we,X,!A());if(t.host.fileExists(ke))return xf(N2(s,$J(e,ke,!1,t)))}}}}}return;function ie(Q){var fe,Z;let U=t.compilerOptions.configFile?((Z=(fe=t.host).getCurrentDirectory)==null?void 0:Z.call(fe))||\"\":Q,re=[];return t.compilerOptions.declarationDir&&re.push(S(x(U,t.compilerOptions.declarationDir))),t.compilerOptions.outDir&&t.compilerOptions.outDir!==t.compilerOptions.declarationDir&&re.push(S(x(U,t.compilerOptions.outDir))),re}}}}function ZO(e,t){if(e.indexOf(\"types\")===-1||!na(t,\"types@\"))return!1;let r=hA.tryParse(t.substring(6));return r?r.test(wf):!1}function t_e(e,t,r,i,o,s){return n_e(e,t,r,i,!1,o,s)}function $Ne(e,t,r){return n_e(4,e,t,r,!0,void 0,void 0)}function n_e(e,t,r,i,o,s,l){let f=i.features===0?void 0:i.features&32?99:1,d=e&5,g=e&-6;if(d){let v=m(d);if(v)return v}if(g&&!o)return m(g);function m(v){return Th(Al(r),S=>{if(Hl(S)!==\"node_modules\"){let x=a_e(s,t,f,S,l,i);return x||xf(r_e(v,t,S,i,o,s,l))}})}}function r_e(e,t,r,i,o,s,l){let f=vi(r,\"node_modules\"),d=gp(f,i.host);if(!d&&i.traceEnabled&&Xi(i.host,_.Directory_0_does_not_exist_skipping_all_lookups_in_it,f),!o){let g=i_e(e,t,f,d,i,s,l);if(g)return g}if(e&4){let g=vi(f,\"@types\"),m=d;return d&&!gp(g,i.host)&&(i.traceEnabled&&Xi(i.host,_.Directory_0_does_not_exist_skipping_all_lookups_in_it,g),m=!1),i_e(4,QNe(t,i),g,m,i,s,l)}}function i_e(e,t,r,i,o,s,l){var f,d,g;let m=So(vi(r,t)),{packageName:v,rest:S}=ZJ(t),x=vi(r,v),A,w=qS(m,!i,o);if(S!==\"\"&&w&&(!(o.features&8)||!fs((d=(f=A=qS(x,!i,o))==null?void 0:f.contents.packageJsonContent)!=null?d:Je,\"exports\"))){let F=UL(e,m,!i,o);if(F)return J3(F);let B=tF(e,m,!i,o,w.contents.packageJsonContent,QO(w,o));return N2(w,B)}let C=(F,B,q,W)=>{let Y=UL(F,B,q,W)||tF(F,B,q,W,w&&w.contents.packageJsonContent,w&&QO(w,W));return!Y&&w&&(w.contents.packageJsonContent.exports===void 0||w.contents.packageJsonContent.exports===null)&&W.features&32&&(Y=UL(F,vi(B,\"index.js\"),q,W)),N2(w,Y)};if(S!==\"\"&&(w=A??qS(x,!i,o)),w&&w.contents.packageJsonContent.exports&&o.features&8)return(g=eK(w,e,vi(\".\",S),o,s,l))==null?void 0:g.value;let P=S!==\"\"&&w?QO(w,o):void 0;if(P){o.traceEnabled&&Xi(o.host,_.package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2,P.version,wf,S);let F=i&&gp(x,o.host),B=nK(e,S,x,P.paths,void 0,C,!F,o);if(B)return B.value}return C(e,m,!i,o)}function nK(e,t,r,i,o,s,l,f){o||(o=g4(i));let d=NW(o,t);if(d){let g=Ta(d)?void 0:Dae(d,t),m=Ta(d)?d:kae(d);return f.traceEnabled&&Xi(f.host,_.Module_name_0_matched_pattern_1,t,m),{value:mn(i[m],S=>{let x=g?S.replace(\"*\",g):S,A=So(vi(r,x));f.traceEnabled&&Xi(f.host,_.Trying_substitution_0_candidate_module_location_Colon_1,S,x);let w=Hm(S);if(w!==void 0){let C=$O(A,l,f);if(C!==void 0)return J3({path:C,ext:w,resolvedUsingTsExtension:void 0})}return s(e,A,l||!gp(ni(A),f.host),f)})}}}function QNe(e,t){let r=VL(e);return t.traceEnabled&&r!==e&&Xi(t.host,_.Scoped_package_detected_looking_in_0,r),r}function rF(e){return`@types/${VL(e)}`}function VL(e){if(na(e,\"@\")){let t=e.replace(_s,aF);if(t!==e)return t.slice(1)}return e}function eN(e){let t=ZC(e,\"@types/\");return t!==e?iF(t):e}function iF(e){return jl(e,aF)?\"@\"+e.replace(aF,_s):e}function a_e(e,t,r,i,o,s){let l=e&&e.getFromNonRelativeNameCache(t,r,i,o);if(l)return s.traceEnabled&&Xi(s.host,_.Resolution_for_module_0_was_found_in_cache_from_location_1,t,i),s.resultFromCache=l,{value:l.resolvedModule&&{path:l.resolvedModule.resolvedFileName,originalPath:l.resolvedModule.originalPath||!0,extension:l.resolvedModule.extension,packageId:l.resolvedModule.packageId,resolvedUsingTsExtension:l.resolvedModule.resolvedUsingTsExtension}}}function o_e(e,t,r,i,o,s){let l=ov(r,i),f=[],d=[],g=ni(t),m=[],v={compilerOptions:r,host:i,traceEnabled:l,failedLookupLocations:f,affectingLocations:d,packageJsonInfoCache:o,features:0,conditions:[],requestContainingDirectory:g,reportDiagnostic:A=>void m.push(A),isConfigLookup:!1,candidateIsFromPackageJsonField:!1},S=x(5)||x(2|(r.resolveJsonModule?8:0));return Pfe(e,S&&S.value,S?.value&&KS(S.value.path),f,d,m,v);function x(A){let w=Vfe(A,e,g,YJ,v);if(w)return{value:w};if(fl(e)){let C=So(vi(g,e));return xf(YJ(A,C,!1,v))}else{let C=Th(g,P=>{let F=a_e(o,e,void 0,P,s,v);if(F)return F;let B=So(vi(P,e));return xf(YJ(A,B,!1,v))});if(C)return C;if(A&5)return $Ne(e,g,v)}}}function jL(e,t){return!!e.allowImportingTsExtensions||t&&Fu(t)}function s_e(e,t,r,i,o,s){let l=ov(r,i);l&&Xi(i,_.Auto_discovery_for_typings_is_enabled_in_project_0_Running_extra_resolution_pass_for_module_1_using_cache_location_2,t,e,o);let f=[],d=[],g=[],m={compilerOptions:r,host:i,traceEnabled:l,failedLookupLocations:f,affectingLocations:d,packageJsonInfoCache:s,features:0,conditions:[],requestContainingDirectory:void 0,reportDiagnostic:S=>void g.push(S),isConfigLookup:!1,candidateIsFromPackageJsonField:!1},v=r_e(4,e,o,m,!1,void 0,void 0);return Mfe(v,!0,f,d,g,m.resultFromCache)}function xf(e){return e!==void 0?{value:e}:void 0}function Y0(e,t,...r){e.traceEnabled&&Xi(e.host,t,...r)}var rK,iK,aK,Wg,aF,ZNe=gt({\"src/compiler/moduleNameResolver.ts\"(){\"use strict\";fa(),iK=vi(\"node_modules\",\"@types\"),aK=(e=>(e[e.None=0]=\"None\",e[e.Imports=2]=\"Imports\",e[e.SelfName=4]=\"SelfName\",e[e.Exports=8]=\"Exports\",e[e.ExportsPatternTrailers=16]=\"ExportsPatternTrailers\",e[e.AllFeatures=30]=\"AllFeatures\",e[e.Node16Default=30]=\"Node16Default\",e[e.NodeNextDefault=30]=\"NodeNextDefault\",e[e.BundlerDefault=30]=\"BundlerDefault\",e[e.EsmMode=32]=\"EsmMode\",e))(aK||{}),Wg=\"/node_modules/\",aF=\"__\"}});function Gh(e,t){return e.body&&!e.body.parent&&(go(e.body,e),Zy(e.body,!1)),e.body?oK(e.body,t):1}function oK(e,t=new Map){let r=zo(e);if(t.has(r))return t.get(r)||0;t.set(r,void 0);let i=ePe(e,t);return t.set(r,i),i}function ePe(e,t){switch(e.kind){case 261:case 262:return 0;case 263:if(R0(e))return 2;break;case 269:case 268:if(!Mr(e,1))return 0;break;case 275:let r=e;if(!r.moduleSpecifier&&r.exportClause&&r.exportClause.kind===276){let i=0;for(let o of r.exportClause.elements){let s=tPe(o,t);if(s>i&&(i=s),i===1)return i}return i}break;case 265:{let i=0;return pa(e,o=>{let s=oK(o,t);switch(s){case 0:return;case 2:i=2;return;case 1:return i=1,!0;default:L.assertNever(s)}}),i}case 264:return Gh(e,t);case 79:if(e.flags&2048)return 0}return 1}function tPe(e,t){let r=e.propertyName||e.name,i=e.parent;for(;i;){if(Va(i)||Tp(i)||Li(i)){let o=i.statements,s;for(let l of o)if(Aw(l,r)){l.parent||(go(l,i),Zy(l,!1));let f=oK(l,t);if((s===void 0||f>s)&&(s=f),s===1)return s}if(s!==void 0)return s}i=i.parent}return 1}function JT(e){return L.attachFlowNodeDebugInfo(e),e}function c_e(e,t){Fs(\"beforeBind\"),fp.logStartBindFile(\"\"+e.fileName),d_e(e,t),fp.logStopBindFile(),Fs(\"afterBind\"),mf(\"Bind\",\"beforeBind\",\"afterBind\")}function nPe(){var e,t,r,i,o,s,l,f,d,g,m,v,S,x,A,w,C,P,F,B,q,W,Y=!1,R=0,ie,Q,fe={flags:1},Z={flags:1},U=Ot();return le;function re(M,He,Nt,Pn,la){return Nu(Gn(M)||e,M,He,Nt,Pn,la)}function le(M,He){var Nt,Pn;e=M,t=He,r=Do(t),W=_e(e,He),Q=new Set,R=0,ie=ml.getSymbolConstructor(),L.attachFlowNodeDebugInfo(fe),L.attachFlowNodeDebugInfo(Z),e.locals||((Nt=ai)==null||Nt.push(ai.Phase.Bind,\"bindSourceFile\",{path:e.path},!0),ft(e),(Pn=ai)==null||Pn.pop(),e.symbolCount=R,e.classifiableNames=Q,hc()),e=void 0,t=void 0,r=void 0,i=void 0,o=void 0,s=void 0,l=void 0,f=void 0,d=void 0,g=!1,m=void 0,v=void 0,S=void 0,x=void 0,A=void 0,w=void 0,C=void 0,F=void 0,B=!1,Y=!1,q=0}function _e(M,He){return Bf(He,\"alwaysStrict\")&&!M.isDeclarationFile?!0:!!M.externalModuleIndicator}function ge(M,He){return R++,new ie(M,He)}function X(M,He,Nt){M.flags|=Nt,He.symbol=M,M.declarations=xg(M.declarations,He),Nt&1955&&!M.exports&&(M.exports=Ua()),Nt&6240&&!M.members&&(M.members=Ua()),M.constEnumOnlyModule&&M.flags&304&&(M.constEnumOnlyModule=!1),Nt&111551&&iR(M,He)}function Ve(M){if(M.kind===274)return M.isExportEquals?\"export=\":\"default\";let He=sa(M);if(He){if(lu(M)){let Nt=c_(He);return mp(M)?\"__global\":`\"${Nt}\"`}if(He.kind===164){let Nt=He.expression;if(gf(Nt))return Bs(Nt.text);if(X6(Nt))return Xa(Nt.operator)+Nt.operand.text;L.fail(\"Only computed properties with literal names have declaration names\")}if(pi(He)){let Nt=Zc(M);if(!Nt)return;let Pn=Nt.symbol;return gR(Pn,He.escapedText)}return s_(He)?FI(He):void 0}switch(M.kind){case 173:return\"__constructor\";case 181:case 176:case 326:return\"__call\";case 182:case 177:return\"__new\";case 178:return\"__index\";case 275:return\"__export\";case 308:return\"export=\";case 223:if(ic(M)===2)return\"export=\";L.fail(\"Unknown binary declaration kind\");break;case 320:return HA(M)?\"__new\":\"__call\";case 166:L.assert(M.parent.kind===320,\"Impossible parameter parent kind\",()=>`parent is: ${L.formatSyntaxKind(M.parent.kind)}, expected JSDocFunctionType`);let Pn=M.parent.parameters.indexOf(M);return\"arg\"+Pn}}function we(M){return zl(M)?os(M.name):Gi(L.checkDefined(Ve(M)))}function ke(M,He,Nt,Pn,la,oa,be){L.assert(be||!Xy(Nt));let De=Mr(Nt,1024)||Mu(Nt)&&Nt.name.escapedText===\"default\",mt=be?\"__computed\":De&&He?\"default\":Ve(Nt),St;if(mt===void 0)St=ge(0,\"__missing\");else if(St=M.get(mt),Pn&2885600&&Q.add(mt),!St)M.set(mt,St=ge(0,mt)),oa&&(St.isReplaceableByMethod=!0);else{if(oa&&!St.isReplaceableByMethod)return St;if(St.flags&la){if(St.isReplaceableByMethod)M.set(mt,St=ge(0,mt));else if(!(Pn&3&&St.flags&67108864)){zl(Nt)&&go(Nt.name,Nt);let Zt=St.flags&2?_.Cannot_redeclare_block_scoped_variable_0:_.Duplicate_identifier_0,rn=!0;(St.flags&384||Pn&384)&&(Zt=_.Enum_declarations_can_only_merge_with_namespace_or_other_enum_declarations,rn=!1);let sn=!1;Fn(St.declarations)&&(De||St.declarations&&St.declarations.length&&Nt.kind===274&&!Nt.isExportEquals)&&(Zt=_.A_module_cannot_have_multiple_default_exports,rn=!1,sn=!0);let Dn=[];Ep(Nt)&&rc(Nt.type)&&Mr(Nt,1)&&St.flags&2887656&&Dn.push(re(Nt,_.Did_you_mean_0,`export type { ${Gi(Nt.name.escapedText)} }`));let kr=sa(Nt)||Nt;mn(St.declarations,(Vn,$t)=>{let Xn=sa(Vn)||Vn,ra=re(Xn,Zt,rn?we(Vn):void 0);e.bindDiagnostics.push(sn?Ao(ra,re(kr,$t===0?_.Another_export_default_is_here:_.and_here)):ra),sn&&Dn.push(re(Xn,_.The_first_export_default_is_here))});let ki=re(kr,Zt,rn?we(Nt):void 0);e.bindDiagnostics.push(Ao(ki,...Dn)),St=ge(0,mt)}}}return X(St,Nt,Pn),St.parent?L.assert(St.parent===He,\"Existing symbol parent should match new one\"):St.parent=He,St}function Pe(M,He,Nt){let Pn=!!(wg(M)&1)||Ce(M);if(He&2097152)return M.kind===278||M.kind===268&&Pn?ke(o.symbol.exports,o.symbol,M,He,Nt):(L.assertNode(o,Qp),ke(o.locals,void 0,M,He,Nt));if(Mf(M)&&L.assert(Yn(M)),!lu(M)&&(Pn||o.flags&64)){if(!Qp(o)||!o.locals||Mr(M,1024)&&!Ve(M))return ke(o.symbol.exports,o.symbol,M,He,Nt);let la=He&111551?1048576:0,oa=ke(o.locals,void 0,M,la,Nt);return oa.exportSymbol=ke(o.symbol.exports,o.symbol,M,He,Nt),M.localSymbol=oa,oa}else return L.assertNode(o,Qp),ke(o.locals,void 0,M,He,Nt)}function Ce(M){if(M.parent&&Tc(M)&&(M=M.parent),!Mf(M))return!1;if(!bO(M)&&!!M.fullName)return!0;let He=sa(M);return He?!!(kR(He.parent)&&Vr(He.parent)||Kl(He.parent)&&wg(He.parent)&1):!1}function Ie(M,He){let Nt=o,Pn=s,la=l;if(He&1?(M.kind!==216&&(s=o),o=l=M,He&32&&(o.locals=Ua(),Za(o))):He&2&&(l=M,He&32&&(l.locals=void 0)),He&4){let oa=m,be=v,De=S,mt=x,St=C,Zt=F,rn=B,sn=He&16&&!Mr(M,512)&&!M.asteriskToken&&!!TT(M)||M.kind===172;sn||(m=JT({flags:2}),He&144&&(m.node=M)),x=sn||M.kind===173||Yn(M)&&(M.kind===259||M.kind===215)?tn():void 0,C=void 0,v=void 0,S=void 0,F=void 0,B=!1,Ye(M),M.flags&=-2817,!(m.flags&1)&&He&8&&Nf(M.body)&&(M.flags|=256,B&&(M.flags|=512),M.endFlowNode=m),M.kind===308&&(M.flags|=q,M.endFlowNode=m),x&&($n(x,m),m=pt(x),(M.kind===173||M.kind===172||Yn(M)&&(M.kind===259||M.kind===215))&&(M.returnFlowNode=m)),sn||(m=oa),v=be,S=De,x=mt,C=St,F=Zt,B=rn}else He&64?(g=!1,Ye(M),L.assertNotNode(M,Re),M.flags=g?M.flags|128:M.flags&-129):Ye(M);o=Nt,s=Pn,l=la}function Be(M){Ne(M,He=>He.kind===259?ft(He):void 0),Ne(M,He=>He.kind!==259?ft(He):void 0)}function Ne(M,He=ft){M!==void 0&&mn(M,He)}function Le(M){pa(M,ft,Ne)}function Ye(M){let He=Y;if(Y=!1,X_(M)){Le(M),Yt(M),Y=He;return}switch(M.kind>=240&&M.kind<=256&&!t.allowUnreachableCode&&(M.flowNode=m),M.kind){case 244:Ht(M);break;case 243:En(M);break;case 245:dr(M);break;case 246:case 247:Cr(M);break;case 242:Se(M);break;case 250:case 254:at(M);break;case 249:case 248:nt(M);break;case 255:ce(M);break;case 252:$(M);break;case 266:ue(M);break;case 292:G(M);break;case 241:Oe(M);break;case 253:Ge(M);break;case 221:ir(M);break;case 222:ae(M);break;case 223:if(Fg(M)){Y=He,rt(M);return}U(M);break;case 217:Ke(M);break;case 224:oe(M);break;case 257:z(M);break;case 208:case 209:Si(M);break;case 210:Ja(M);break;case 232:Kr(M);break;case 349:case 341:case 343:lt(M);break;case 308:{Be(M.statements),ft(M.endOfFileToken);break}case 238:case 265:Be(M.statements);break;case 205:Te(M);break;case 166:j(M);break;case 207:case 206:case 299:case 227:Y=He;default:Le(M);break}Yt(M),Y=He}function _t(M){switch(M.kind){case 79:case 80:case 108:case 208:case 209:return Rt(M);case 210:return We(M);case 214:case 232:return _t(M.expression);case 223:return zt(M);case 221:return M.operator===53&&_t(M.operand);case 218:return _t(M.expression)}return!1}function ct(M){return zI(M)||(br(M)||MS(M)||ud(M))&&ct(M.expression)||ar(M)&&M.operatorToken.kind===27&&ct(M.right)||Vs(M)&&(gf(M.argumentExpression)||bc(M.argumentExpression))&&ct(M.expression)||Iu(M)&&ct(M.left)}function Rt(M){return ct(M)||Jl(M)&&Rt(M.expression)}function We(M){if(M.arguments){for(let He of M.arguments)if(Rt(He))return!0}return!!(M.expression.kind===208&&Rt(M.expression.expression))}function qe(M,He){return v2(M)&&Qt(M.expression)&&es(He)}function zt(M){switch(M.operatorToken.kind){case 63:case 75:case 76:case 77:return Rt(M.left);case 34:case 35:case 36:case 37:return Qt(M.left)||Qt(M.right)||qe(M.right,M.left)||qe(M.left,M.right);case 102:return Qt(M.left);case 101:return _t(M.right);case 27:return _t(M.right)}return!1}function Qt(M){switch(M.kind){case 214:return Qt(M.expression);case 223:switch(M.operatorToken.kind){case 63:return Qt(M.left);case 27:return Qt(M.right)}}return Rt(M)}function tn(){return JT({flags:4,antecedents:void 0})}function kn(){return JT({flags:8,antecedents:void 0})}function _n(M,He,Nt){return JT({flags:1024,target:M,antecedents:He,antecedent:Nt})}function Gt(M){M.flags|=M.flags&2048?4096:2048}function $n(M,He){!(He.flags&1)&&!ya(M.antecedents,He)&&((M.antecedents||(M.antecedents=[])).push(He),Gt(He))}function ui(M,He,Nt){return He.flags&1?He:Nt?(Nt.kind===110&&M&64||Nt.kind===95&&M&32)&&!r6(Nt)&&!wj(Nt.parent)?fe:_t(Nt)?(Gt(He),JT({flags:M,antecedent:He,node:Nt})):He:M&32?He:fe}function Ni(M,He,Nt,Pn){return Gt(M),JT({flags:128,antecedent:M,switchStatement:He,clauseStart:Nt,clauseEnd:Pn})}function Pi(M,He,Nt){Gt(He);let Pn=JT({flags:M,antecedent:He,node:Nt});return C&&$n(C,Pn),Pn}function gr(M,He){return Gt(M),JT({flags:512,antecedent:M,node:He})}function pt(M){let He=M.antecedents;return He?He.length===1?He[0]:M:fe}function nn(M){let He=M.parent;switch(He.kind){case 242:case 244:case 243:return He.expression===M;case 245:case 224:return He.condition===M}return!1}function Dt(M){for(;;)if(M.kind===214)M=M.expression;else if(M.kind===221&&M.operator===53)M=M.operand;else return IR(M)}function pn(M){return cW(vs(M))}function An(M){for(;ud(M.parent)||tv(M.parent)&&M.parent.operator===53;)M=M.parent;return!nn(M)&&!Dt(M.parent)&&!(Jl(M.parent)&&M.parent.expression===M)}function Kn(M,He,Nt,Pn){let la=A,oa=w;A=Nt,w=Pn,M(He),A=la,w=oa}function hi(M,He,Nt){Kn(ft,M,He,Nt),(!M||!pn(M)&&!Dt(M)&&!(Jl(M)&&hI(M)))&&($n(He,ui(32,m,M)),$n(Nt,ui(64,m,M)))}function ri(M,He,Nt){let Pn=v,la=S;v=He,S=Nt,ft(M),v=Pn,S=la}function gn(M,He){let Nt=F;for(;Nt&&M.parent.kind===253;)Nt.continueTarget=He,Nt=Nt.next,M=M.parent;return He}function Ht(M){let He=gn(M,kn()),Nt=tn(),Pn=tn();$n(He,m),m=He,hi(M.expression,Nt,Pn),m=pt(Nt),ri(M.statement,Pn,He),$n(He,m),m=pt(Pn)}function En(M){let He=kn(),Nt=gn(M,tn()),Pn=tn();$n(He,m),m=He,ri(M.statement,Pn,Nt),$n(Nt,m),m=pt(Nt),hi(M.expression,He,Pn),m=pt(Pn)}function dr(M){let He=gn(M,kn()),Nt=tn(),Pn=tn();ft(M.initializer),$n(He,m),m=He,hi(M.condition,Nt,Pn),m=pt(Nt),ri(M.statement,Pn,He),ft(M.incrementor),$n(He,m),m=pt(Pn)}function Cr(M){let He=gn(M,kn()),Nt=tn();ft(M.expression),$n(He,m),m=He,M.kind===247&&ft(M.awaitModifier),$n(Nt,m),ft(M.initializer),M.initializer.kind!==258&&Kt(M.initializer),ri(M.statement,Nt,He),$n(He,m),m=pt(Nt)}function Se(M){let He=tn(),Nt=tn(),Pn=tn();hi(M.expression,He,Nt),m=pt(He),ft(M.thenStatement),$n(Pn,m),m=pt(Nt),ft(M.elseStatement),$n(Pn,m),m=pt(Pn)}function at(M){ft(M.expression),M.kind===250&&(B=!0,x&&$n(x,m)),m=fe}function Tt(M){for(let He=F;He;He=He.next)if(He.name===M)return He}function ve(M,He,Nt){let Pn=M.kind===249?He:Nt;Pn&&($n(Pn,m),m=fe)}function nt(M){if(ft(M.label),M.label){let He=Tt(M.label.escapedText);He&&(He.referenced=!0,ve(M,He.breakTarget,He.continueTarget))}else ve(M,v,S)}function ce(M){let He=x,Nt=C,Pn=tn(),la=tn(),oa=tn();if(M.finallyBlock&&(x=la),$n(oa,m),C=oa,ft(M.tryBlock),$n(Pn,m),M.catchClause&&(m=pt(oa),oa=tn(),$n(oa,m),C=oa,ft(M.catchClause),$n(Pn,m)),x=He,C=Nt,M.finallyBlock){let be=tn();be.antecedents=Qi(Qi(Pn.antecedents,oa.antecedents),la.antecedents),m=be,ft(M.finallyBlock),m.flags&1?m=fe:(x&&la.antecedents&&$n(x,_n(be,la.antecedents,m)),C&&oa.antecedents&&$n(C,_n(be,oa.antecedents,m)),m=Pn.antecedents?_n(be,Pn.antecedents,m):fe)}else m=pt(Pn)}function $(M){let He=tn();ft(M.expression);let Nt=v,Pn=P;v=He,P=m,ft(M.caseBlock),$n(He,m);let la=mn(M.caseBlock.clauses,oa=>oa.kind===293);M.possiblyExhaustive=!la&&!He.antecedents,la||$n(He,Ni(P,M,0,0)),v=Nt,P=Pn,m=pt(He)}function ue(M){let He=M.clauses,Nt=_t(M.parent.expression),Pn=fe;for(let la=0;la<He.length;la++){let oa=la;for(;!He[la].statements.length&&la+1<He.length;)ft(He[la]),la++;let be=tn();$n(be,Nt?Ni(P,M.parent,oa,la+1):P),$n(be,Pn),m=pt(be);let De=He[la];ft(De),Pn=m,!(m.flags&1)&&la!==He.length-1&&t.noFallthroughCasesInSwitch&&(De.fallthroughFlowNode=m)}}function G(M){let He=m;m=P,ft(M.expression),m=He,Ne(M.statements)}function Oe(M){ft(M.expression),je(M.expression)}function je(M){if(M.kind===210){let He=M;He.expression.kind!==106&&zI(He.expression)&&(m=gr(m,He))}}function Ge(M){let He=tn();F={next:F,name:M.label.escapedText,breakTarget:He,continueTarget:void 0,referenced:!1},ft(M.label),ft(M.statement),!F.referenced&&!t.allowUnusedLabels&&wt(Sle(t),M.label,_.Unused_label),F=F.next,$n(He,m),m=pt(He)}function kt(M){M.kind===223&&M.operatorToken.kind===63?Kt(M.left):Kt(M)}function Kt(M){if(ct(M))m=Pi(16,m,M);else if(M.kind===206)for(let He of M.elements)He.kind===227?Kt(He.expression):kt(He);else if(M.kind===207)for(let He of M.properties)He.kind===299?kt(He.initializer):He.kind===300?Kt(He.name):He.kind===301&&Kt(He.expression)}function ln(M,He,Nt){let Pn=tn();M.operatorToken.kind===55||M.operatorToken.kind===76?hi(M.left,Pn,Nt):hi(M.left,He,Pn),m=pt(Pn),ft(M.operatorToken),WI(M.operatorToken.kind)?(Kn(ft,M.right,He,Nt),Kt(M.left),$n(He,ui(32,m,M)),$n(Nt,ui(64,m,M))):hi(M.right,He,Nt)}function ir(M){if(M.operator===53){let He=A;A=w,w=He,Le(M),w=A,A=He}else Le(M),(M.operator===45||M.operator===46)&&Kt(M.operand)}function ae(M){Le(M),(M.operator===45||M.operator===46)&&Kt(M.operand)}function rt(M){Y?(Y=!1,ft(M.operatorToken),ft(M.right),Y=!0,ft(M.left)):(Y=!0,ft(M.left),Y=!1,ft(M.operatorToken),ft(M.right)),Kt(M.left)}function Ot(){return C3(M,He,Nt,Pn,la,void 0);function M(be,De){if(De){De.stackIndex++,go(be,i);let St=W;ta(be);let Zt=i;i=be,De.skip=!1,De.inStrictModeStack[De.stackIndex]=St,De.parentStack[De.stackIndex]=Zt}else De={stackIndex:0,skip:!1,inStrictModeStack:[void 0],parentStack:[void 0]};let mt=be.operatorToken.kind;if(CR(mt)||WI(mt)){if(An(be)){let St=tn();ln(be,St,St),m=pt(St)}else ln(be,A,w);De.skip=!0}return De}function He(be,De,mt){if(!De.skip){let St=oa(be);return mt.operatorToken.kind===27&&je(be),St}}function Nt(be,De,mt){De.skip||ft(be)}function Pn(be,De,mt){if(!De.skip){let St=oa(be);return mt.operatorToken.kind===27&&je(be),St}}function la(be,De){if(!De.skip){let Zt=be.operatorToken.kind;if(Mg(Zt)&&!Um(be)&&(Kt(be.left),Zt===63&&be.left.kind===209)){let rn=be.left;Qt(rn.expression)&&(m=Pi(256,m,be))}}let mt=De.inStrictModeStack[De.stackIndex],St=De.parentStack[De.stackIndex];mt!==void 0&&(W=mt),St!==void 0&&(i=St),De.skip=!1,De.stackIndex--}function oa(be){if(be&&ar(be)&&!Fg(be))return be;ft(be)}}function Ke(M){Le(M),M.expression.kind===208&&Kt(M.expression)}function oe(M){let He=tn(),Nt=tn(),Pn=tn();hi(M.condition,He,Nt),m=pt(He),ft(M.questionToken),ft(M.whenTrue),$n(Pn,m),m=pt(Nt),ft(M.colonToken),ft(M.whenFalse),$n(Pn,m),m=pt(Pn)}function pe(M){let He=ol(M)?void 0:M.name;if(La(He))for(let Nt of He.elements)pe(Nt);else m=Pi(16,m,M)}function z(M){Le(M),(M.initializer||IA(M.parent.parent))&&pe(M)}function Te(M){ft(M.dotDotDotToken),ft(M.propertyName),yt(M.initializer),ft(M.name)}function j(M){Ne(M.modifiers),ft(M.dotDotDotToken),ft(M.questionToken),ft(M.type),yt(M.initializer),ft(M.name)}function yt(M){if(!M)return;let He=m;if(ft(M),He===fe||He===m)return;let Nt=tn();$n(Nt,He),$n(Nt,m),m=pt(Nt)}function lt(M){ft(M.tagName),M.kind!==343&&M.fullName&&(go(M.fullName,M),Zy(M.fullName,!1)),typeof M.comment!=\"string\"&&Ne(M.comment)}function Qe(M){Le(M);let He=sb(M);He&&He.kind!==171&&X(He.symbol,He,32)}function Vt(M,He,Nt){Kn(ft,M,He,Nt),(!Jl(M)||hI(M))&&($n(He,ui(32,m,M)),$n(Nt,ui(64,m,M)))}function Hn(M){switch(M.kind){case 208:ft(M.questionDotToken),ft(M.name);break;case 209:ft(M.questionDotToken),ft(M.argumentExpression);break;case 210:ft(M.questionDotToken),Ne(M.typeArguments),Ne(M.arguments);break}}function jr(M,He,Nt){let Pn=mI(M)?tn():void 0;Vt(M.expression,Pn||He,Nt),Pn&&(m=pt(Pn)),Kn(Hn,M,He,Nt),hI(M)&&($n(He,ui(32,m,M)),$n(Nt,ui(64,m,M)))}function ei(M){if(An(M)){let He=tn();jr(M,He,He),m=pt(He)}else jr(M,A,w)}function Kr(M){Jl(M)?ei(M):Le(M)}function Si(M){Jl(M)?ei(M):Le(M)}function Ja(M){if(Jl(M))ei(M);else{let He=vs(M.expression);He.kind===215||He.kind===216?(Ne(M.typeArguments),Ne(M.arguments),ft(M.expression)):(Le(M),M.expression.kind===106&&(m=gr(m,M)))}if(M.expression.kind===208){let He=M.expression;Re(He.name)&&Qt(He.expression)&&jH(He.name)&&(m=Pi(256,m,M))}}function Za(M){f&&(f.nextContainer=M),f=M}function Fa(M,He,Nt){switch(o.kind){case 264:return Pe(M,He,Nt);case 308:return xi(M,He,Nt);case 228:case 260:return Hi(M,He,Nt);case 263:return ke(o.symbol.exports,o.symbol,M,He,Nt);case 184:case 325:case 207:case 261:case 289:return ke(o.symbol.members,o.symbol,M,He,Nt);case 181:case 182:case 176:case 177:case 326:case 178:case 171:case 170:case 173:case 174:case 175:case 259:case 215:case 216:case 320:case 172:case 262:case 197:return o.locals&&L.assertNode(o,Qp),ke(o.locals,void 0,M,He,Nt)}}function Hi(M,He,Nt){return Ca(M)?ke(o.symbol.exports,o.symbol,M,He,Nt):ke(o.symbol.members,o.symbol,M,He,Nt)}function xi(M,He,Nt){return Lc(e)?Pe(M,He,Nt):ke(e.locals,void 0,M,He,Nt)}function Nr(M){let He=Li(M)?M:zr(M.body,Tp);return!!He&&He.statements.some(Nt=>Il(Nt)||pc(Nt))}function Fo(M){M.flags&16777216&&!Nr(M)?M.flags|=64:M.flags&=-65}function Qr(M){if(Fo(M),lu(M))if(Mr(M,1)&&ht(M,_.export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always_visible),uH(M))Wi(M);else{let He;if(M.name.kind===10){let{text:Pn}=M.name;He=r2(Pn),He===void 0&&ht(M.name,_.Pattern_0_can_have_at_most_one_Asterisk_character,Pn)}let Nt=Fa(M,512,110735);e.patternAmbientModules=Sn(e.patternAmbientModules,He&&!Ta(He)?{pattern:He,symbol:Nt}:void 0)}else{let He=Wi(M);if(He!==0){let{symbol:Nt}=M;Nt.constEnumOnlyModule=!(Nt.flags&304)&&He===2&&Nt.constEnumOnlyModule!==!1}}}function Wi(M){let He=Gh(M),Nt=He!==0;return Fa(M,Nt?512:1024,Nt?110735:0),He}function yn(M){let He=ge(131072,Ve(M));X(He,M,131072);let Nt=ge(2048,\"__type\");X(Nt,M,2048),Nt.members=Ua(),Nt.members.set(He.escapedName,He)}function Ki(M){return mc(M,4096,\"__object\")}function kc(M){return mc(M,4096,\"__jsxAttributes\")}function Ps(M,He,Nt){return Fa(M,He,Nt)}function mc(M,He,Nt){let Pn=ge(He,Nt);return He&106508&&(Pn.parent=o.symbol),X(Pn,M,He),Pn}function xc(M,He,Nt){switch(l.kind){case 264:Pe(M,He,Nt);break;case 308:if(kd(o)){Pe(M,He,Nt);break}default:L.assertNode(l,Qp),l.locals||(l.locals=Ua(),Za(l)),ke(l.locals,void 0,M,He,Nt)}}function hc(){if(!d)return;let M=o,He=f,Nt=l,Pn=i,la=m;for(let oa of d){let be=oa.parent.parent;o=jn(be.parent,mt=>!!(u_e(mt)&1))||e,l=tm(be)||e,m=JT({flags:2}),i=oa,ft(oa.typeExpression);let De=sa(oa);if((bO(oa)||!oa.fullName)&&De&&kR(De.parent)){let mt=Vr(De.parent);if(mt){Ln(e.symbol,De.parent,mt,!!jn(De,Zt=>br(Zt)&&Zt.name.escapedText===\"prototype\"),!1);let St=o;switch(nR(De.parent)){case 1:case 2:kd(e)?o=e:o=void 0;break;case 4:o=De.parent.expression;break;case 3:o=De.parent.expression.name;break;case 5:o=$0(e,De.parent.expression)?e:br(De.parent.expression)?De.parent.expression.name:De.parent.expression;break;case 0:return L.fail(\"Shouldn't have detected typedef or enum on non-assignment declaration\")}o&&Pe(oa,524288,788968),o=St}}else bO(oa)||!oa.fullName||oa.fullName.kind===79?(i=oa.parent,xc(oa,524288,788968)):ft(oa.fullName)}o=M,f=He,l=Nt,i=Pn,m=la}function ro(M){if(!e.parseDiagnostics.length&&!(M.flags&16777216)&&!(M.flags&8388608)&&!Sce(M)){let He=nb(M);if(He===void 0)return;W&&He>=117&&He<=125?e.bindDiagnostics.push(re(M,aa(M),os(M))):He===133?Lc(e)&&O6(M)?e.bindDiagnostics.push(re(M,_.Identifier_expected_0_is_a_reserved_word_at_the_top_level_of_a_module,os(M))):M.flags&32768&&e.bindDiagnostics.push(re(M,_.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here,os(M))):He===125&&M.flags&8192&&e.bindDiagnostics.push(re(M,_.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here,os(M)))}}function aa(M){return Zc(M)?_.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode:e.externalModuleIndicator?_.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode:_.Identifier_expected_0_is_a_reserved_word_in_strict_mode}function Co(M){M.escapedText===\"#constructor\"&&(e.parseDiagnostics.length||e.bindDiagnostics.push(re(M,_.constructor_is_a_reserved_word,os(M))))}function gc(M){W&&Ju(M.left)&&Mg(M.operatorToken.kind)&&bl(M,M.left)}function Ll(M){W&&M.variableDeclaration&&bl(M,M.variableDeclaration.name)}function md(M){if(W&&M.expression.kind===79){let He=w0(e,M.expression);e.bindDiagnostics.push(al(e,He.start,He.length,_.delete_cannot_be_called_on_an_identifier_in_strict_mode))}}function Pc(M){return Re(M)&&(M.escapedText===\"eval\"||M.escapedText===\"arguments\")}function bl(M,He){if(He&&He.kind===79){let Nt=He;if(Pc(Nt)){let Pn=w0(e,He);e.bindDiagnostics.push(al(e,Pn.start,Pn.length,ss(M),vr(Nt)))}}}function ss(M){return Zc(M)?_.Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of_0_For_more_information_see_https_Colon_Slash_Slashdeveloper_mozilla_org_Slashen_US_Slashdocs_SlashWeb_SlashJavaScript_SlashReference_SlashStrict_mode:e.externalModuleIndicator?_.Invalid_use_of_0_Modules_are_automatically_in_strict_mode:_.Invalid_use_of_0_in_strict_mode}function qs(M){W&&bl(M,M.name)}function Rs(M){return Zc(M)?_.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_definitions_are_automatically_in_strict_mode:e.externalModuleIndicator?_.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_are_automatically_in_strict_mode:_.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5}function As(M){if(r<2&&l.kind!==308&&l.kind!==264&&!xA(l)){let He=w0(e,M);e.bindDiagnostics.push(al(e,He.start,He.length,Rs(M)))}}function jt(M){r<1&&W&&M.numericLiteralFlags&32&&e.bindDiagnostics.push(re(M,_.Octal_literals_are_not_allowed_in_strict_mode))}function yc(M){W&&bl(M,M.operand)}function Ql(M){W&&(M.operator===45||M.operator===46)&&bl(M,M.operand)}function yu(M){W&&ht(M,_.with_statements_are_not_allowed_in_strict_mode)}function se(M){W&&Do(t)>=2&&(bse(M.statement)||Bc(M.statement))&&ht(M.label,_.A_label_is_not_allowed_here)}function ht(M,He,Nt,Pn,la){let oa=Pg(e,M.pos);e.bindDiagnostics.push(al(e,oa.start,oa.length,He,Nt,Pn,la))}function wt(M,He,Nt){K(M,He,He,Nt)}function K(M,He,Nt,Pn){Xe(M,{pos:yT(He,e),end:Nt.end},Pn)}function Xe(M,He,Nt){let Pn=al(e,He.pos,He.end-He.pos,Nt);M?e.bindDiagnostics.push(Pn):e.bindSuggestionDiagnostics=Sn(e.bindSuggestionDiagnostics,{...Pn,category:2})}function ft(M){if(!M)return;go(M,i),ai&&(M.tracingPath=e.path);let He=W;if(ta(M),M.kind>162){let Nt=i;i=M;let Pn=u_e(M);Pn===0?Ye(M):Ie(M,Pn),i=Nt}else{let Nt=i;M.kind===1&&(i=M),Yt(M),i=Nt}W=He}function Yt(M){if(Jd(M))if(Yn(M))for(let He of M.jsDoc)ft(He);else for(let He of M.jsDoc)go(He,M),Zy(He,!1)}function pr(M){if(!W)for(let He of M){if(!G_(He))return;if(yr(He)){W=!0;return}}}function yr(M){let He=k0(e,M.expression);return He==='\"use strict\"'||He===\"'use strict'\"}function ta(M){switch(M.kind){case 79:if(M.flags&2048){let be=M.parent;for(;be&&!Mf(be);)be=be.parent;xc(be,524288,788968);break}case 108:return m&&(ot(M)||i.kind===300)&&(M.flowNode=m),ro(M);case 163:m&&G6(M)&&(M.flowNode=m);break;case 233:case 106:M.flowNode=m;break;case 80:return Co(M);case 208:case 209:let He=M;m&&ct(He)&&(He.flowNode=m),fce(He)&&Ri(He),Yn(He)&&e.commonJsModuleIndicator&&Bm(He)&&!tN(l,\"module\")&&ke(e.locals,void 0,He.expression,134217729,111550);break;case 223:switch(ic(M)){case 1:hd(M);break;case 2:vc(M);break;case 3:Ze(M.left,M);break;case 6:io(M);break;case 4:ye(M);break;case 5:let be=M.left.expression;if(Yn(M)&&Re(be)){let De=tN(l,be.escapedText);if(N6(De?.valueDeclaration)){ye(M);break}}xt(M);break;case 0:break;default:L.fail(\"Unknown binary expression special property assignment kind\")}return gc(M);case 295:return Ll(M);case 217:return md(M);case 8:return jt(M);case 222:return yc(M);case 221:return Ql(M);case 251:return yu(M);case 253:return se(M);case 194:g=!0;return;case 179:break;case 165:return Fd(M);case 166:return Zl(M);case 257:return gd(M);case 205:return M.flowNode=m,gd(M);case 169:case 168:return Go(M);case 299:case 300:return Io(M,4,0);case 302:return Io(M,8,900095);case 176:case 177:case 178:return Fa(M,131072,0);case 171:case 170:return Io(M,8192|(M.questionToken?16777216:0),o_(M)?0:103359);case 259:return Md(M);case 173:return Fa(M,16384,0);case 174:return Io(M,32768,46015);case 175:return Io(M,65536,78783);case 181:case 320:case 326:case 182:return yn(M);case 184:case 325:case 197:return Ka(M);case 335:return Qe(M);case 207:return Ki(M);case 215:case 216:return Wf(M);case 210:switch(ic(M)){case 7:return At(M);case 8:return Ws(M);case 9:return ee(M);case 0:break;default:return L.fail(\"Unknown call expression assignment declaration kind\")}Yn(M)&&Bu(M);break;case 228:case 260:return W=!0,Pd(M);case 261:return xc(M,64,788872);case 262:return xc(M,524288,788968);case 263:return Dc(M);case 264:return Qr(M);case 289:return kc(M);case 288:return Ps(M,4,0);case 268:case 271:case 273:case 278:return Fa(M,2097152,2097152);case 267:return Uc(M);case 270:return $o(M);case 275:return Gu(M);case 274:return Hs(M);case 308:return pr(M.statements),vo();case 238:if(!xA(M.parent))return;case 265:return pr(M.statements);case 344:if(M.parent.kind===326)return Zl(M);if(M.parent.kind!==325)break;case 351:let la=M,oa=la.isBracketed||la.typeExpression&&la.typeExpression.type.kind===319?16777220:4;return Fa(la,oa,0);case 349:case 341:case 343:return(d||(d=[])).push(M);case 342:return ft(M.typeExpression)}}function Go(M){let He=Id(M),Nt=He?98304:4,Pn=He?13247:0;return Io(M,Nt|(M.questionToken?16777216:0),Pn)}function Ka(M){return mc(M,2048,\"__type\")}function vo(){if(Fo(e),Lc(e))ka();else if(Pf(e)){ka();let M=e.symbol;ke(e.symbol.exports,e.symbol,e,4,67108863),e.symbol=M}}function ka(){mc(e,512,`\"${ld(e.fileName)}\"`)}function Hs(M){if(!o.symbol||!o.symbol.exports)mc(M,111551,Ve(M));else{let He=JA(M)?2097152:4,Nt=ke(o.symbol.exports,o.symbol,M,He,67108863);M.isExportEquals&&iR(Nt,M)}}function Uc(M){vt(M.modifiers)&&e.bindDiagnostics.push(re(M,_.Modifiers_cannot_appear_here));let He=Li(M.parent)?Lc(M.parent)?M.parent.isDeclarationFile?void 0:_.Global_module_exports_may_only_appear_in_declaration_files:_.Global_module_exports_may_only_appear_in_module_files:_.Global_module_exports_may_only_appear_at_top_level;He?e.bindDiagnostics.push(re(M,He)):(e.symbol.globalExports=e.symbol.globalExports||Ua(),ke(e.symbol.globalExports,e.symbol,M,2097152,2097152))}function Gu(M){!o.symbol||!o.symbol.exports?mc(M,8388608,Ve(M)):M.exportClause?qm(M.exportClause)&&(go(M.exportClause,M),ke(o.symbol.exports,o.symbol,M.exportClause,2097152,2097152)):ke(o.symbol.exports,o.symbol,M,8388608,0)}function $o(M){M.name&&Fa(M,2097152,2097152)}function jo(M){return e.externalModuleIndicator&&e.externalModuleIndicator!==!0?!1:(e.commonJsModuleIndicator||(e.commonJsModuleIndicator=M,e.externalModuleIndicator||ka()),!0)}function Ws(M){if(!jo(M))return;let He=Cs(M.arguments[0],void 0,(Nt,Pn)=>(Pn&&X(Pn,Nt,67110400),Pn));He&&ke(He.exports,He,M,1048580,0)}function hd(M){if(!jo(M))return;let He=Cs(M.left.expression,void 0,(Nt,Pn)=>(Pn&&X(Pn,Nt,67110400),Pn));if(He){let Pn=mR(M.right)&&(ST(M.left.expression)||Bm(M.left.expression))?2097152:1048580;go(M.left,M),ke(He.exports,He,M.left,Pn,0)}}function vc(M){if(!jo(M))return;let He=Zw(M.right);if(dW(He)||o===e&&$0(e,He))return;if(rs(He)&&Ji(He.properties,Sf)){mn(He.properties,tf);return}let Nt=JA(M)?2097152:1049092,Pn=ke(e.symbol.exports,e.symbol,M,Nt|67108864,0);iR(Pn,M)}function tf(M){ke(e.symbol.exports,e.symbol,M,69206016,0)}function ye(M){if(L.assert(Yn(M)),ar(M)&&br(M.left)&&pi(M.left.name)||br(M)&&pi(M.name))return;let Nt=Ku(M,!1,!1);switch(Nt.kind){case 259:case 215:let Pn=Nt.symbol;if(ar(Nt.parent)&&Nt.parent.operatorToken.kind===63){let be=Nt.parent.left;xT(be)&&ub(be.expression)&&(Pn=Qo(be.expression.expression,s))}Pn&&Pn.valueDeclaration&&(Pn.members=Pn.members||Ua(),Xy(M)?Et(M,Pn,Pn.members):ke(Pn.members,Pn,M,67108868,0),X(Pn,Pn.valueDeclaration,32));break;case 173:case 169:case 171:case 174:case 175:case 172:let la=Nt.parent,oa=Ca(Nt)?la.symbol.exports:la.symbol.members;Xy(M)?Et(M,la.symbol,oa):ke(oa,la.symbol,M,67108868,0,!0);break;case 308:if(Xy(M))break;Nt.commonJsModuleIndicator?ke(Nt.symbol.exports,Nt.symbol,M,1048580,0):Fa(M,1,111550);break;default:L.failBadSyntaxKind(Nt)}}function Et(M,He,Nt){ke(Nt,He,M,4,0,!0,!0),bn(M,He)}function bn(M,He){He&&(He.assignmentDeclarationMembers||(He.assignmentDeclarationMembers=new Map)).set(zo(M),M)}function Ri(M){M.expression.kind===108?ye(M):xT(M)&&M.parent.parent.kind===308&&(ub(M.expression)?Ze(M,M.parent):qt(M))}function io(M){go(M.left,M),go(M.right,M),gi(M.left.expression,M.left,!1,!0)}function ee(M){let He=Qo(M.arguments[0].expression);He&&He.valueDeclaration&&X(He,He.valueDeclaration,32),mr(M,He,!0)}function Ze(M,He){let Nt=M.expression,Pn=Nt.expression;go(Pn,Nt),go(Nt,M),go(M,He),gi(Pn,M,!0,!0)}function At(M){let He=Qo(M.arguments[0]),Nt=M.parent.parent.kind===308;He=Ln(He,M.arguments[0],Nt,!1,!1),mr(M,He,!1)}function xt(M){var He;let Nt=Qo(M.left.expression,o)||Qo(M.left.expression,l);if(!Yn(M)&&!_ce(Nt))return;let Pn=QI(M.left);if(!(Re(Pn)&&((He=tN(o,Pn.escapedText))==null?void 0:He.flags)&2097152))if(go(M.left,M),go(M.right,M),Re(M.left.expression)&&o===e&&$0(e,M.left.expression))hd(M);else if(Xy(M)){mc(M,67108868,\"__computed\");let la=Ln(Nt,M.left.expression,Vr(M.left),!1,!1);bn(M,la)}else qt(Ga(M.left,lS))}function qt(M){L.assert(!Re(M)),go(M.expression,M),gi(M.expression,M,!1,!1)}function Ln(M,He,Nt,Pn,la){return M?.flags&2097152||(Nt&&!Pn&&(M=Cs(He,M,(De,mt,St)=>{if(mt)return X(mt,De,67110400),mt;{let Zt=St?St.exports:e.jsGlobalAugmentations||(e.jsGlobalAugmentations=Ua());return ke(Zt,St,De,67110400,110735)}})),la&&M&&M.valueDeclaration&&X(M,M.valueDeclaration,32)),M}function mr(M,He,Nt){if(!He||!Ea(He))return;let Pn=Nt?He.members||(He.members=Ua()):He.exports||(He.exports=Ua()),la=0,oa=0;Ds(sS(M))?(la=8192,oa=103359):Pa(M)&&cS(M)&&(vt(M.arguments[2].properties,be=>{let De=sa(be);return!!De&&Re(De)&&vr(De)===\"set\"})&&(la|=65540,oa|=78783),vt(M.arguments[2].properties,be=>{let De=sa(be);return!!De&&Re(De)&&vr(De)===\"get\"})&&(la|=32772,oa|=46015)),la===0&&(la=4,oa=0),ke(Pn,He,M,la|67108864,oa&-67108865)}function Vr(M){return ar(M.parent)?bo(M.parent).parent.kind===308:M.parent.parent.kind===308}function gi(M,He,Nt,Pn){let la=Qo(M,o)||Qo(M,l),oa=Vr(He);la=Ln(la,He.expression,oa,Nt,Pn),mr(He,la,Nt)}function Ea(M){if(M.flags&1072)return!0;let He=M.valueDeclaration;if(He&&Pa(He))return!!sS(He);let Nt=He?wi(He)?He.initializer:ar(He)?He.right:br(He)&&ar(He.parent)?He.parent.right:void 0:void 0;if(Nt=Nt&&Zw(Nt),Nt){let Pn=ub(wi(He)?He.name:ar(He)?He.left:He);return!!ob(ar(Nt)&&(Nt.operatorToken.kind===56||Nt.operatorToken.kind===60)?Nt.right:Nt,Pn)}return!1}function bo(M){for(;ar(M.parent);)M=M.parent;return M.parent}function Qo(M,He=o){if(Re(M))return tN(He,M.escapedText);{let Nt=Qo(M.expression);return Nt&&Nt.exports&&Nt.exports.get(wh(M))}}function Cs(M,He,Nt){if($0(e,M))return e.symbol;if(Re(M))return Nt(M,Qo(M),He);{let Pn=Cs(M.expression,He,Nt),la=tR(M);return pi(la)&&L.fail(\"unexpected PrivateIdentifier\"),Nt(la,Pn&&Pn.exports&&Pn.exports.get(wh(M)),Pn)}}function Bu(M){!e.commonJsModuleIndicator&&qu(M,!1)&&jo(M)}function Pd(M){if(M.kind===260)xc(M,32,899503);else{let la=M.name?M.name.escapedText:\"__class\";mc(M,32,la),M.name&&Q.add(M.name.escapedText)}let{symbol:He}=M,Nt=ge(4194308,\"prototype\"),Pn=He.exports.get(Nt.escapedName);Pn&&(M.name&&go(M.name,M),e.bindDiagnostics.push(re(Pn.declarations[0],_.Duplicate_identifier_0,fc(Nt)))),He.exports.set(Nt.escapedName,Nt),Nt.parent=He}function Dc(M){return R0(M)?xc(M,128,899967):xc(M,256,899327)}function gd(M){if(W&&bl(M,M.name),!La(M.name)){let He=M.kind===257?M:M.parent.parent;Yn(M)&&$s(t)!==100&&N0(He)&&!x0(M)&&!(wg(M)&1)?Fa(M,2097152,2097152):sH(M)?xc(M,2,111551):IT(M)?Fa(M,1,111551):Fa(M,1,111550)}}function Zl(M){if(!(M.kind===344&&o.kind!==326)&&(W&&!(M.flags&16777216)&&bl(M,M.name),La(M.name)?mc(M,1,\"__\"+M.parent.parameters.indexOf(M)):Fa(M,1,111551),Ad(M,M.parent))){let He=M.parent.parent;ke(He.symbol.members,He.symbol,M,4|(M.questionToken?16777216:0),0)}}function Md(M){!e.isDeclarationFile&&!(M.flags&16777216)&&XA(M)&&(q|=2048),qs(M),W?(As(M),xc(M,16,110991)):Fa(M,16,110991)}function Wf(M){!e.isDeclarationFile&&!(M.flags&16777216)&&XA(M)&&(q|=2048),m&&(M.flowNode=m),qs(M);let He=M.name?M.name.escapedText:\"__function\";return mc(M,16,He)}function Io(M,He,Nt){return!e.isDeclarationFile&&!(M.flags&16777216)&&XA(M)&&(q|=2048),m&&D6(M)&&(M.flowNode=m),Xy(M)?mc(M,He,\"__computed\"):Fa(M,He,Nt)}function zf(M){let He=jn(M,Nt=>Nt.parent&&h2(Nt.parent)&&Nt.parent.extendsType===Nt);return He&&He.parent}function Fd(M){var He,Nt;if(j_(M.parent)){let Pn=J6(M.parent);Pn?(L.assertNode(Pn,Qp),(He=Pn.locals)!=null||(Pn.locals=Ua()),ke(Pn.locals,void 0,M,262144,526824)):Fa(M,262144,526824)}else if(M.parent.kind===192){let Pn=zf(M.parent);Pn?(L.assertNode(Pn,Qp),(Nt=Pn.locals)!=null||(Pn.locals=Ua()),ke(Pn.locals,void 0,M,262144,526824)):mc(M,262144,Ve(M))}else Fa(M,262144,526824)}function b_(M){let He=Gh(M);return He===1||He===2&&U0(t)}function X_(M){if(!(m.flags&1))return!1;if(m===fe&&(Pw(M)&&M.kind!==239||M.kind===260||M.kind===264&&b_(M))&&(m=Z,!t.allowUnreachableCode)){let Nt=Tle(t)&&!(M.flags&16777216)&&(!Bc(M)||!!(F_(M.declarationList)&3)||M.declarationList.declarations.some(Pn=>!!Pn.initializer));rPe(M,(Pn,la)=>K(Nt,Pn,la,_.Unreachable_code_detected))}return!0}}function rPe(e,t){if(ca(e)&&l_e(e)&&Va(e.parent)){let{statements:r}=e.parent,i=PW(r,e);PU(i,l_e,(o,s)=>t(i[o],i[s-1]))}else t(e,e)}function l_e(e){return!Jc(e)&&!iPe(e)&&!hb(e)&&!(Bc(e)&&!(F_(e)&3)&&e.declarationList.declarations.some(t=>!t.initializer))}function iPe(e){switch(e.kind){case 261:case 262:return!0;case 264:return Gh(e)!==1;case 263:return Mr(e,2048);default:return!1}}function $0(e,t){let r=0,i=HU();for(i.enqueue(t);!i.isEmpty()&&r<100;){if(r++,t=i.dequeue(),ST(t)||Bm(t))return!0;if(Re(t)){let o=tN(e,t.escapedText);if(!!o&&!!o.valueDeclaration&&wi(o.valueDeclaration)&&!!o.valueDeclaration.initializer){let s=o.valueDeclaration.initializer;i.enqueue(s),Iu(s,!0)&&(i.enqueue(s.left),i.enqueue(s.right))}}}return!1}function u_e(e){switch(e.kind){case 228:case 260:case 263:case 207:case 184:case 325:case 289:return 1;case 261:return 65;case 264:case 262:case 197:case 178:return 33;case 308:return 37;case 174:case 175:case 171:if(D6(e))return 173;case 173:case 259:case 170:case 176:case 326:case 320:case 181:case 177:case 182:case 172:return 45;case 215:case 216:return 61;case 265:return 4;case 169:return e.initializer?4:0;case 295:case 245:case 246:case 247:case 266:return 34;case 238:return Ia(e.parent)||oc(e.parent)?0:34}return 0}function tN(e,t){var r,i,o,s,l;let f=(i=(r=zr(e,Qp))==null?void 0:r.locals)==null?void 0:i.get(t);if(f)return(o=f.exportSymbol)!=null?o:f;if(Li(e)&&e.jsGlobalAugmentations&&e.jsGlobalAugmentations.has(t))return e.jsGlobalAugmentations.get(t);if($p(e))return(l=(s=e.symbol)==null?void 0:s.exports)==null?void 0:l.get(t)}var sK,d_e,aPe=gt({\"src/compiler/binder.ts\"(){\"use strict\";fa(),E0(),sK=(e=>(e[e.NonInstantiated=0]=\"NonInstantiated\",e[e.Instantiated=1]=\"Instantiated\",e[e.ConstEnumOnly=2]=\"ConstEnumOnly\",e))(sK||{}),d_e=nPe()}});function f_e(e,t,r,i,o,s,l,f,d,g){return m;function m(v=()=>!0){let S=[],x=[];return{walkType:Q=>{try{return A(Q),{visitedTypes:W1(S),visitedSymbols:W1(x)}}finally{Om(S),Om(x)}},walkSymbol:Q=>{try{return ie(Q),{visitedTypes:W1(S),visitedSymbols:W1(x)}}finally{Om(S),Om(x)}}};function A(Q){if(!(!Q||S[Q.id]||(S[Q.id]=Q,ie(Q.symbol)))){if(Q.flags&524288){let Z=Q,U=Z.objectFlags;U&4&&w(Q),U&32&&q(Q),U&3&&Y(Q),U&24&&R(Z)}Q.flags&262144&&C(Q),Q.flags&3145728&&P(Q),Q.flags&4194304&&F(Q),Q.flags&8388608&&B(Q)}}function w(Q){A(Q.target),mn(g(Q),A)}function C(Q){A(f(Q))}function P(Q){mn(Q.types,A)}function F(Q){A(Q.type)}function B(Q){A(Q.objectType),A(Q.indexType),A(Q.constraint)}function q(Q){A(Q.typeParameter),A(Q.constraintType),A(Q.templateType),A(Q.modifiersType)}function W(Q){let fe=t(Q);fe&&A(fe.type),mn(Q.typeParameters,A);for(let Z of Q.parameters)ie(Z);A(e(Q)),A(r(Q))}function Y(Q){R(Q),mn(Q.typeParameters,A),mn(i(Q),A),A(Q.thisType)}function R(Q){let fe=o(Q);for(let Z of fe.indexInfos)A(Z.keyType),A(Z.type);for(let Z of fe.callSignatures)W(Z);for(let Z of fe.constructSignatures)W(Z);for(let Z of fe.properties)ie(Z)}function ie(Q){if(!Q)return!1;let fe=$a(Q);if(x[fe])return!1;if(x[fe]=Q,!v(Q))return!0;let Z=s(Q);return A(Z),Q.exports&&Q.exports.forEach(ie),mn(Q.declarations,U=>{if(U.type&&U.type.kind===183){let re=U.type,le=l(d(re.exprName));ie(le)}}),!1}}}var oPe=gt({\"src/compiler/symbolWalker.ts\"(){\"use strict\";fa()}});function oF({importModuleSpecifierPreference:e,importModuleSpecifierEnding:t},r,i,o){let s=l();return{relativePreference:o!==void 0?fl(o)?0:1:e===\"relative\"?0:e===\"non-relative\"?1:e===\"project-relative\"?3:2,getAllowedEndingsInPreferredOrder:f=>{if((f??i.impliedNodeFormat)===99)return jL(r,i.fileName)?[3,2]:[2];if($s(r)===1)return[1,2];switch(s){case 2:return[2,0,1];case 3:return[3,0,2,1];case 1:return[1,0,2];case 0:return[0,1,2];default:L.assertNever(s)}}};function l(){if(o!==void 0){if(TS(o))return 2;if(Oc(o,\"/index\"))return 1}return OW(t,i.impliedNodeFormat,r,i)}}function sPe(e,t,r,i,o,s,l={}){let f=__e(e,t,r,i,o,oF({},e,t,s),{},l);if(f!==s)return f}function sF(e,t,r,i,o,s={}){return __e(e,t,r,i,o,oF({},e,t),{},s)}function cPe(e,t,r,i,o,s={}){let l=cK(t.path,i),f=E_e(t.path,r,i,o,s);return ks(f,d=>lK(d,l,t,i,e,o,!0,s.overrideImportMode))}function __e(e,t,r,i,o,s,l,f={}){let d=cK(r,o),g=E_e(r,i,o,l,f);return ks(g,m=>lK(m,d,t,o,e,l,void 0,f.overrideImportMode))||g_e(i,d,e,o,f.overrideImportMode||t.impliedNodeFormat,s)}function lPe(e,t,r,i,o={}){return p_e(e,t,r,i,o)[0]}function p_e(e,t,r,i,o={}){var s;let l=m6(e);if(!l)return Je;let f=(s=r.getModuleSpecifierCache)==null?void 0:s.call(r),d=f?.get(t.path,l.path,i,o);return[d?.moduleSpecifiers,l,d?.modulePaths,f]}function m_e(e,t,r,i,o,s,l={}){return h_e(e,t,r,i,o,s,l).moduleSpecifiers}function h_e(e,t,r,i,o,s,l={}){let f=!1,d=dPe(e,t);if(d)return{moduleSpecifiers:[d],computedWithoutCache:f};let[g,m,v,S]=p_e(e,i,o,s,l);if(g)return{moduleSpecifiers:g,computedWithoutCache:f};if(!m)return{moduleSpecifiers:Je,computedWithoutCache:f};f=!0,v||(v=T_e(i.path,m.originalFileName,o));let x=uPe(v,r,i,o,s,l);return S?.set(i.path,m.path,s,l,v,x),{moduleSpecifiers:x,computedWithoutCache:f}}function uPe(e,t,r,i,o,s={}){let l=cK(r.path,i),f=oF(o,t,r),d=mn(e,A=>mn(i.getFileIncludeReasons().get(Ts(A.path,i.getCurrentDirectory(),l.getCanonicalFileName)),w=>{if(w.kind!==3||w.file!==r.path||r.impliedNodeFormat&&r.impliedNodeFormat!==aq(r,w.index))return;let C=GF(r,w.index).text;return f.relativePreference!==1||!zd(C)?C:void 0}));if(d)return[d];let g=vt(e,A=>A.isInNodeModules),m,v,S,x;for(let A of e){let w=A.isInNodeModules?lK(A,l,r,i,t,o,void 0,s.overrideImportMode):void 0;if(m=Sn(m,w),w&&A.isRedirect)return m;if(!w){let C=g_e(A.path,l,t,i,s.overrideImportMode||r.impliedNodeFormat,f,A.isRedirect);if(!C)continue;A.isRedirect?S=Sn(S,C):cj(C)?v=Sn(v,C):(!g||A.isInNodeModules)&&(x=Sn(x,C))}}return v?.length?v:S?.length?S:m?.length?m:L.checkDefined(x)}function cK(e,t){let r=Dl(t.useCaseSensitiveFileNames?t.useCaseSensitiveFileNames():!0),i=ni(e);return{getCanonicalFileName:r,importingSourceFileName:e,sourceDirectory:i}}function g_e(e,t,r,i,o,{getAllowedEndingsInPreferredOrder:s,relativePreference:l},f){let{baseUrl:d,paths:g,rootDirs:m}=r;if(f&&!g)return;let{sourceDirectory:v,getCanonicalFileName:S}=t,x=s(o),A=m&&fPe(m,e,v,S,x,r)||HL(S0(Xp(v,e,S)),x,r);if(!d&&!g||l===0)return f?void 0:A;let w=_a(ZH(r,i)||d,i.getCurrentDirectory()),C=C_e(e,w,S);if(!C)return f?void 0:A;let P=g&&S_e(C,g,x,i,r);if(f)return P;let F=P===void 0&&d!==void 0?HL(C,x,r):P;if(!F)return A;if(l===1&&!zd(F))return F;if(l===3&&!zd(F)){let B=r.configFilePath?Ts(ni(r.configFilePath),i.getCurrentDirectory(),t.getCanonicalFileName):t.getCanonicalFileName(i.getCurrentDirectory()),q=Ts(e,B,S),W=na(v,B),Y=na(q,B);if(W&&!Y||!W&&Y)return F;let R=v_e(i,ni(q));return v_e(i,v)!==R?F:A}return I_e(F)||nN(A)<nN(F)?A:F}function nN(e){let t=0;for(let r=na(e,\"./\")?2:0;r<e.length;r++)e.charCodeAt(r)===47&&t++;return t}function y_e(e,t){return g0(t.isRedirect,e.isRedirect)||UR(e.path,t.path)}function v_e(e,t){return e.getNearestAncestorDirectoryWithPackageJson?e.getNearestAncestorDirectoryWithPackageJson(t):!!Th(t,r=>e.fileExists(vi(r,\"package.json\"))?!0:void 0)}function b_e(e,t,r,i,o){var s;let l=lb(r),f=r.getCurrentDirectory(),d=r.isSourceOfProjectReferenceRedirect(t)?r.getProjectReferenceRedirect(t):void 0,g=Ts(t,f,l),m=r.redirectTargetsMap.get(g)||Je,S=[...d?[d]:Je,t,...m].map(P=>_a(P,f)),x=!Ji(S,cL);if(!i){let P=mn(S,F=>!(x&&cL(F))&&o(F,d===F));if(P)return P}let A=(s=r.getSymlinkCache)==null?void 0:s.call(r).getSymlinkedDirectoriesByRealpath(),w=_a(t,f);return A&&Th(ni(w),P=>{let F=A.get(cu(Ts(P,f,l)));if(!!F)return fj(e,P,l)?!1:mn(S,B=>{if(!fj(B,P,l))return;let q=Xp(P,B,l);for(let W of F){let Y=Fy(W,q),R=o(Y,B===d);if(x=!0,R)return R}})})||(i?mn(S,P=>x&&cL(P)?void 0:o(P,P===d)):void 0)}function E_e(e,t,r,i,o={}){var s;let l=Ts(t,r.getCurrentDirectory(),lb(r)),f=(s=r.getModuleSpecifierCache)==null?void 0:s.call(r);if(f){let g=f.get(e,l,i,o);if(g?.modulePaths)return g.modulePaths}let d=T_e(e,t,r);return f&&f.setModulePaths(e,l,i,o,d),d}function T_e(e,t,r){let i=lb(r),o=new Map,s=!1;b_e(e,t,r,!0,(f,d)=>{let g=KS(f);o.set(f,{path:i(f),isRedirect:d,isInNodeModules:g}),s=s||g});let l=[];for(let f=ni(e);o.size!==0;){let d=cu(f),g;o.forEach(({path:v,isRedirect:S,isInNodeModules:x},A)=>{na(v,d)&&((g||(g=[])).push({path:A,isRedirect:S,isInNodeModules:x}),o.delete(A))}),g&&(g.length>1&&g.sort(y_e),l.push(...g));let m=ni(f);if(m===f)break;f=m}if(o.size){let f=lo(o.values());f.length>1&&f.sort(y_e),l.push(...f)}return l}function dPe(e,t){var r;let i=(r=e.declarations)==null?void 0:r.find(l=>lH(l)&&(!D0(l)||!fl(c_(l.name))));if(i)return i.name.text;let s=Zi(e.declarations,l=>{var f,d,g,m;if(!Tc(l))return;let v=w(l);if(!(((f=v?.parent)==null?void 0:f.parent)&&Tp(v.parent)&&lu(v.parent.parent)&&Li(v.parent.parent.parent)))return;let S=(m=(g=(d=v.parent.parent.symbol.exports)==null?void 0:d.get(\"export=\"))==null?void 0:g.valueDeclaration)==null?void 0:m.expression;if(!S)return;let x=t.getSymbolAtLocation(S);if(!x)return;if((x?.flags&2097152?t.getAliasedSymbol(x):x)===l.symbol)return v.parent.parent;function w(C){for(;C.flags&4;)C=C.parent;return C}})[0];if(s)return s.name.text}function S_e(e,t,r,i,o){for(let l in t)for(let f of t[l]){let d=So(f),g=d.indexOf(\"*\"),m=r.map(v=>({ending:v,value:HL(e,[v],o)}));if(Hm(d)&&m.push({ending:void 0,value:e}),g!==-1){let v=d.substring(0,g),S=d.substring(g+1);for(let{ending:x,value:A}of m)if(A.length>=v.length+S.length&&na(A,v)&&Oc(A,S)&&s({ending:x,value:A})){let w=A.substring(v.length,A.length-S.length);return l.replace(\"*\",w)}}else if(vt(m,v=>v.ending!==0&&d===v.value)||vt(m,v=>v.ending===0&&d===v.value&&s(v)))return l}function s({ending:l,value:f}){return l!==0||f===HL(e,[l],o,i)}}function cF(e,t,r,i,o,s,l=0){if(typeof o==\"string\"){let f=_a(vi(r,o),void 0),d=BR(t)?ld(t)+lF(t,e):void 0;switch(l){case 0:if(lT(t,f)===0||d&&lT(d,f)===0)return{moduleFileToTry:i};break;case 1:if(Gy(f,t)){let S=Xp(f,t,!1);return{moduleFileToTry:_a(vi(vi(i,o),S),void 0)}}break;case 2:let g=f.indexOf(\"*\"),m=f.slice(0,g),v=f.slice(g+1);if(na(t,m)&&Oc(t,v)){let S=t.slice(m.length,t.length-v.length);return{moduleFileToTry:i.replace(\"*\",S)}}if(d&&na(d,m)&&Oc(d,v)){let S=d.slice(m.length,d.length-v.length);return{moduleFileToTry:i.replace(\"*\",S)}}break}}else{if(Array.isArray(o))return mn(o,f=>cF(e,t,r,i,f,s));if(typeof o==\"object\"&&o!==null){if(nF(o))return mn(bh(o),f=>{let d=_a(vi(i,f),void 0),g=Oc(f,\"/\")?1:jl(f,\"*\")?2:0;return cF(e,t,r,d,o[f],s,g)});for(let f of bh(o))if(f===\"default\"||s.indexOf(f)>=0||ZO(s,f)){let d=o[f],g=cF(e,t,r,i,d,s);if(g)return g}}}}function fPe(e,t,r,i,o,s){let l=x_e(t,e,i);if(l===void 0)return;let f=x_e(r,e,i),d=Uo(f,m=>on(l,v=>S0(Xp(m,v,i)))),g=WU(d,UR);if(!!g)return HL(g,o,s)}function lK({path:e,isRedirect:t},{getCanonicalFileName:r,sourceDirectory:i},o,s,l,f,d,g){if(!s.fileExists||!s.readFile)return;let m=jW(e);if(!m)return;let S=oF(f,l,o).getAllowedEndingsInPreferredOrder(),x=e,A=!1;if(!d){let q=m.packageRootIndex,W;for(;;){let{moduleFileToTry:Y,packageRootPath:R,blockedByExports:ie,verbatimFromExports:Q}=B(q);if($s(l)!==1){if(ie)return;if(Q)return Y}if(R){x=R,A=!0;break}if(W||(W=Y),q=e.indexOf(_s,q+1),q===-1){x=HL(W,S,l,s);break}}}if(t&&!A)return;let w=s.getGlobalTypingsCacheLocation&&s.getGlobalTypingsCacheLocation(),C=r(x.substring(0,m.topLevelNodeModulesIndex));if(!(na(i,C)||w&&na(r(w),C)))return;let P=x.substring(m.topLevelPackageNameIndex+1),F=eN(P);return $s(l)===1&&F===P?void 0:F;function B(q){var W,Y;let R=e.substring(0,q),ie=vi(R,\"package.json\"),Q=e,fe=!1,Z=(Y=(W=s.getPackageJsonInfoCache)==null?void 0:W.call(s))==null?void 0:Y.getPackageJsonInfo(ie);if(typeof Z==\"object\"||Z===void 0&&s.fileExists(ie)){let U=Z?.contents.packageJsonContent||JSON.parse(s.readFile(ie)),re=g||o.impliedNodeFormat;if(xW(l)){let ge=R.substring(m.topLevelPackageNameIndex+1),X=eN(ge),Ve=M2(l,re===99),we=U.exports?cF(l,e,R,X,U.exports,Ve):void 0;if(we)return{...BR(we.moduleFileToTry)?{moduleFileToTry:ld(we.moduleFileToTry)+lF(we.moduleFileToTry,l)}:we,verbatimFromExports:!0};if(U.exports)return{moduleFileToTry:e,blockedByExports:!0}}let le=U.typesVersions?q3(U.typesVersions):void 0;if(le){let ge=e.slice(R.length+1),X=S_e(ge,le.paths,S,s,l);X===void 0?fe=!0:Q=vi(R,X)}let _e=U.typings||U.types||U.main||\"index.js\";if(Ta(_e)&&!(fe&&NW(g4(le.paths),_e))){let ge=Ts(_e,R,r);if(ld(ge)===ld(r(Q)))return{packageRootPath:R,moduleFileToTry:Q}}}else{let U=r(Q.substring(m.packageRootIndex+1));if(U===\"index.d.ts\"||U===\"index.js\"||U===\"index.ts\"||U===\"index.tsx\")return{moduleFileToTry:Q,packageRootPath:R}}return{moduleFileToTry:Q}}}function _Pe(e,t){if(!e.fileExists)return;let r=e_(rL({allowJs:!0},[{extension:\"node\",isMixedContent:!1},{extension:\"json\",isMixedContent:!1,scriptKind:6}]));for(let i of r){let o=t+i;if(e.fileExists(o))return o}}function x_e(e,t,r){return Zi(t,i=>{let o=C_e(e,i,r);return o!==void 0&&I_e(o)?void 0:o})}function HL(e,t,r,i){if($c(e,[\".json\",\".mjs\",\".cjs\"]))return e;let o=ld(e);if(e===o)return e;if($c(e,[\".d.mts\",\".mts\",\".d.cts\",\".cts\"]))return o+uK(e,r);if(!$c(e,[\".d.ts\"])&&$c(e,[\".ts\"])&&jl(e,\".d.\"))return A_e(e);switch(t[0]){case 0:let s=mA(o,\"/index\");return i&&s!==o&&_Pe(i,s)?o:s;case 1:return o;case 2:return o+uK(e,r);case 3:if(Fu(e)){let l=t.findIndex(d=>d===0||d===1),f=t.indexOf(2);return l!==-1&&l<f?o:o+uK(e,r)}return e;default:return L.assertNever(t[0])}}function A_e(e){let t=Hl(e);if(!Oc(e,\".ts\")||!jl(t,\".d.\")||$c(t,[\".d.ts\"]))return;let r=VR(e,\".ts\"),i=r.substring(r.lastIndexOf(\".\"));return r.substring(0,r.indexOf(\".d.\"))+i}function uK(e,t){var r;return(r=lF(e,t))!=null?r:L.fail(`Extension ${HR(e)} is unsupported:: FileName:: ${e}`)}function lF(e,t){let r=Hm(e);switch(r){case\".ts\":case\".d.ts\":return\".js\";case\".tsx\":return t.jsx===1?\".jsx\":\".js\";case\".js\":case\".jsx\":case\".json\":return r;case\".d.mts\":case\".mts\":case\".mjs\":return\".mjs\";case\".d.cts\":case\".cts\":case\".cjs\":return\".cjs\";default:return}}function C_e(e,t,r){let i=Z1(t,e,t,r,!1);return qp(i)?void 0:i}function I_e(e){return na(e,\"..\")}var L_e=gt({\"src/compiler/moduleSpecifiers.ts\"(){\"use strict\";fa()}}),Q0={};Mo(Q0,{countPathComponents:()=>nN,forEachFileNameOfModule:()=>b_e,getModuleSpecifier:()=>sF,getModuleSpecifiers:()=>m_e,getModuleSpecifiersWithCacheInfo:()=>h_e,getNodeModulesPackageName:()=>cPe,tryGetJSExtensionForFile:()=>lF,tryGetModuleSpecifiersFromCache:()=>lPe,tryGetRealFileNameForNonJsDeclarationFileName:()=>A_e,updateModuleSpecifier:()=>sPe});var dK=gt({\"src/compiler/_namespaces/ts.moduleSpecifiers.ts\"(){\"use strict\";L_e()}});function pPe(){this.flags=0}function zo(e){return e.id||(e.id=mK,mK++),e.id}function $a(e){return e.id||(e.id=pK,pK++),e.id}function fK(e,t){let r=Gh(e);return r===1||t&&r===2}function k_e(e){var t=zu(()=>{var n=new Map;return e.getSourceFiles().forEach(a=>{!a.resolvedModules||a.resolvedModules.forEach(({resolvedModule:c})=>{c?.packageId&&n.set(c.packageId.name,c.extension===\".d.ts\"||!!n.get(c.packageId.name))})}),n}),r=[],i=n=>{r.push(n)},o,s=new Set,l,f,d=ml.getSymbolConstructor(),g=ml.getTypeConstructor(),m=ml.getSignatureConstructor(),v=0,S=0,x=0,A=0,w=0,C=0,P,F,B=!1,q=Ua(),W=[1],Y=e.getCompilerOptions(),R=Do(Y),ie=Rl(Y),Q=!!Y.experimentalDecorators,fe=FR(Y),Z=RT(Y),U=Bf(Y,\"strictNullChecks\"),re=Bf(Y,\"strictFunctionTypes\"),le=Bf(Y,\"strictBindCallApply\"),_e=Bf(Y,\"strictPropertyInitialization\"),ge=Bf(Y,\"noImplicitAny\"),X=Bf(Y,\"noImplicitThis\"),Ve=Bf(Y,\"useUnknownInCatchVariables\"),we=!!Y.keyofStringsOnly,ke=Y.suppressExcessPropertyErrors?0:8192,Pe=Y.exactOptionalPropertyTypes,Ce=FZe(),Ie=hrt(),Be=Wa(),Ne=Ua(),Le=wo(4,\"undefined\");Le.declarations=[];var Ye=wo(1536,\"globalThis\",8);Ye.exports=Ne,Ye.declarations=[],Ne.set(Ye.escapedName,Ye);var _t=wo(4,\"arguments\"),ct=wo(4,\"require\"),Rt=Y.verbatimModuleSyntax?\"verbatimModuleSyntax\":\"isolatedModules\",We;let qe={getNodeCount:()=>ou(e.getSourceFiles(),(n,a)=>n+a.nodeCount,0),getIdentifierCount:()=>ou(e.getSourceFiles(),(n,a)=>n+a.identifierCount,0),getSymbolCount:()=>ou(e.getSourceFiles(),(n,a)=>n+a.symbolCount,S),getTypeCount:()=>v,getInstantiationCount:()=>x,getRelationCacheSizes:()=>({assignable:Zu.size,identity:td.size,subtype:hm.size,strictSubtype:S_.size}),isUndefinedSymbol:n=>n===Le,isArgumentsSymbol:n=>n===_t,isUnknownSymbol:n=>n===Ht,getMergedSymbol:No,getDiagnostics:HLe,getGlobalDiagnostics:Nnt,getRecursionIdentity:CC,getUnmatchedProperties:lre,getTypeOfSymbolAtLocation:(n,a)=>{let c=ea(a);return c?RYe(n,c):ve},getTypeOfSymbol:zn,getSymbolsOfParameterPropertyDeclaration:(n,a)=>{let c=ea(n,ha);return c===void 0?L.fail(\"Cannot get symbols of a synthetic parameter that cannot be resolved to a parse-tree node.\"):(L.assert(Ad(c,c.parent)),yE(c,Bs(a)))},getDeclaredTypeOfSymbol:gs,getPropertiesOfType:Jo,getPropertyOfType:(n,a)=>ja(n,Bs(a)),getPrivateIdentifierPropertyOfType:(n,a,c)=>{let u=ea(c);if(!u)return;let p=Bs(a),h=JB(p,u);return h?zre(n,h):void 0},getTypeOfPropertyOfType:(n,a)=>Vc(n,Bs(a)),getIndexInfoOfType:(n,a)=>Cm(n,a===0?ae:rt),getIndexInfosOfType:tu,getIndexInfosOfIndexSymbol:one,getSignaturesOfType:xa,getIndexTypeOfType:(n,a)=>fg(n,a===0?ae:rt),getIndexType:n=>Gp(n),getBaseTypes:_o,getBaseTypeOfLiteralType:ky,getWidenedType:Sd,getTypeFromTypeNode:n=>{let a=ea(n,bi);return a?$r(a):ve},getParameterType:N_,getParameterIdentifierNameAtPosition:ZQe,getPromisedTypeOfPromise:RD,getAwaitedType:n=>rT(n),getReturnTypeOfSignature:qo,isNullableType:zB,getNullableType:TB,getNonNullableType:yg,getNonOptionalType:ere,getTypeArguments:Ko,typeToTypeNode:Be.typeToTypeNode,indexInfoToIndexSignatureDeclaration:Be.indexInfoToIndexSignatureDeclaration,signatureToSignatureDeclaration:Be.signatureToSignatureDeclaration,symbolToEntityName:Be.symbolToEntityName,symbolToExpression:Be.symbolToExpression,symbolToNode:Be.symbolToNode,symbolToTypeParameterDeclarations:Be.symbolToTypeParameterDeclarations,symbolToParameterDeclaration:Be.symbolToParameterDeclaration,typeParameterToDeclaration:Be.typeParameterToDeclaration,getSymbolsInScope:(n,a)=>{let c=ea(n);return c?Pnt(c,a):[]},getSymbolAtLocation:n=>{let a=ea(n);return a?Qf(a,!0):void 0},getIndexInfosAtLocation:n=>{let a=ea(n);return a?jnt(a):void 0},getShorthandAssignmentValueSymbol:n=>{let a=ea(n);return a?Hnt(a):void 0},getExportSpecifierLocalTargetSymbol:n=>{let a=ea(n,Mu);return a?Wnt(a):void 0},getExportSymbolOfSymbol(n){return No(n.exportSymbol||n)},getTypeAtLocation:n=>{let a=ea(n);return a?B1(a):ve},getTypeOfAssignmentPattern:n=>{let a=ea(n,bI);return a&&bU(a)||ve},getPropertySymbolOfDestructuringAssignment:n=>{let a=ea(n,Re);return a?znt(a):void 0},signatureToString:(n,a,c,u)=>ne(n,ea(a),c,u),typeToString:(n,a,c)=>Ee(n,ea(a),c),symbolToString:(n,a,c,u)=>E(n,ea(a),c,u),typePredicateToString:(n,a,c)=>kl(n,ea(a),c),writeSignature:(n,a,c,u,p)=>ne(n,ea(a),c,u,p),writeType:(n,a,c,u)=>Ee(n,ea(a),c,u),writeSymbol:(n,a,c,u,p)=>E(n,ea(a),c,u,p),writeTypePredicate:(n,a,c,u)=>kl(n,ea(a),c,u),getAugmentedPropertiesOfType:Wie,getRootSymbols:YLe,getSymbolOfExpando:eU,getContextualType:(n,a)=>{let c=ea(n,ot);if(!!c)return a&4?Qt(c,()=>Ru(c,a)):Ru(c,a)},getContextualTypeForObjectLiteralElement:n=>{let a=ea(n,Og);return a?Rre(a,void 0):void 0},getContextualTypeForArgumentAtIndex:(n,a)=>{let c=ea(n,iS);return c&&wre(c,a)},getContextualTypeForJsxAttribute:n=>{let a=ea(n,d6);return a&&_Ce(a,void 0)},isContextSensitive:Yf,getTypeOfPropertyOfContextualType:eT,getFullyQualifiedName:rh,getResolvedSignature:(n,a,c)=>tn(n,a,c,0),getResolvedSignatureForStringLiteralCompletions:(n,a,c)=>Qt(a,()=>tn(n,c,void 0,32)),getResolvedSignatureForSignatureHelp:(n,a,c)=>zt(n,()=>tn(n,a,c,16)),getExpandedParameters:Txe,hasEffectiveRestParameter:jp,containsArgumentsReference:nne,getConstantValue:n=>{let a=ea(n,tke);return a?zie(a):void 0},isValidPropertyAccess:(n,a)=>{let c=ea(n,dse);return!!c&&dQe(c,Bs(a))},isValidPropertyAccessForCompletions:(n,a,c)=>{let u=ea(n,br);return!!u&&HCe(u,a,c)},getSignatureFromDeclaration:n=>{let a=ea(n,Ia);return a?rp(a):void 0},isImplementationOfOverload:n=>{let a=ea(n,Ia);return a?ZLe(a):void 0},getImmediateAliasedSymbol:Mre,getAliasedSymbol:wc,getEmitResolver:lC,getExportsOfModule:sy,getExportsAndPropertiesOfModule:I1,forEachExportAndPropertyOfModule:kv,getSymbolWalker:f_e(tKe,If,qo,_o,w_,zn,$f,eu,Xd,Ko),getAmbientModules:oit,getJsxIntrinsicTagNamesAt:W$e,isOptionalParameter:n=>{let a=ea(n,ha);return a?Zk(a):!1},tryGetMemberInModuleExports:(n,a)=>rg(Bs(n),a),tryGetMemberInModuleExportsAndProperties:(n,a)=>af(Bs(n),a),tryFindAmbientModule:n=>tne(n,!0),tryFindAmbientModuleWithoutAugmentations:n=>tne(n,!1),getApparentType:Eu,getUnionType:Gr,isTypeAssignableTo:to,createAnonymousType:ls,createSignature:Am,createSymbol:wo,createIndexInfo:Fp,getAnyType:()=>Se,getStringType:()=>ae,getNumberType:()=>rt,createPromiseType:HM,createArrayType:nu,getElementTypeOfArrayType:Xne,getBooleanType:()=>Te,getFalseType:n=>n?Ke:oe,getTrueType:n=>n?pe:z,getVoidType:()=>yt,getUndefinedType:()=>Oe,getNullType:()=>ln,getESSymbolType:()=>j,getNeverType:()=>lt,getOptionalType:()=>Kt,getPromiseType:()=>sM(!1),getPromiseLikeType:()=>aAe(!1),getAsyncIterableType:()=>{let n=ZG(!1);if(n!==ro)return n},isSymbolAccessible:dy,isArrayType:ff,isTupleType:po,isArrayLikeType:Kv,isEmptyAnonymousObjectType:hh,isTypeInvalidDueToUnionDiscriminant:FJe,getExactOptionalProperties:cXe,getAllPossiblePropertiesOfTypes:GJe,getSuggestedSymbolForNonexistentProperty:qre,getSuggestionForNonexistentProperty:Xre,getSuggestedSymbolForNonexistentJSXAttribute:VCe,getSuggestedSymbolForNonexistentSymbol:(n,a,c)=>Yre(n,Bs(a),c),getSuggestionForNonexistentSymbol:(n,a,c)=>sQe(n,Bs(a),c),getSuggestedSymbolForNonexistentModule:qB,getSuggestionForNonexistentExport:cQe,getSuggestedSymbolForNonexistentClassMember:UCe,getBaseConstraintOfType:bu,getDefaultFromTypeParameter:n=>n&&n.flags&262144?jE(n):void 0,resolveName(n,a,c,u){return zs(a,Bs(n),c,void 0,void 0,!1,u)},getJsxNamespace:n=>Gi(Rb(n)),getJsxFragmentFactory:n=>{let a=Kie(n);return a&&Gi(Xd(a).escapedText)},getAccessibleSymbolChain:Rv,getTypePredicateOfSignature:If,resolveExternalModuleName:n=>{let a=ea(n,ot);return a&&Gl(a,a,!0)},resolveExternalModuleSymbol:Vu,tryGetThisTypeAt:(n,a,c)=>{let u=ea(n);return u&&Cre(u,a,c)},getTypeArgumentConstraint:n=>{let a=ea(n,bi);return a&&get(a)},getSuggestionDiagnostics:(n,a)=>{let c=ea(n,Li)||L.fail(\"Could not determine parsed source file.\");if(iL(c,Y,e))return Je;let u;try{return o=a,jie(c),L.assert(!!(Rr(c).flags&1)),u=si(u,mE.getDiagnostics(c.fileName)),rLe(jLe(c),(p,h,T)=>{!Bw(p)&&!VLe(h,!!(p.flags&16777216))&&(u||(u=[])).push({...T,category:2})}),u||Je}finally{o=void 0}},runWithCancellationToken:(n,a)=>{try{return o=n,a(qe)}finally{o=void 0}},getLocalTypeParametersOfClassOrInterfaceOrTypeAlias:yy,isDeclarationVisible:qf,isPropertyAccessible:Qre,getTypeOnlyAliasDeclaration:nd,getMemberOverrideModifierStatus:Xtt,isTypeParameterPossiblyReferenced:_M,typeHasCallOrConstructSignatures:EU};function zt(n,a){let c=jn(n,iS),u=c&&Rr(c).resolvedSignature;c&&(Rr(c).resolvedSignature=void 0);let p=a();return c&&(Rr(c).resolvedSignature=u),p}function Qt(n,a){let c=jn(n,iS);if(c){let p=n;do Rr(p).skipDirectInference=!0,p=p.parent;while(p&&p!==c)}B=!0;let u=zt(n,a);if(B=!1,c){let p=n;do Rr(p).skipDirectInference=void 0,p=p.parent;while(p&&p!==c)}return u}function tn(n,a,c,u){let p=ea(n,iS);We=c;let h=p?FC(p,a,u):void 0;return We=void 0,h}var kn=new Map,_n=new Map,Gt=new Map,$n=new Map,ui=new Map,Ni=new Map,Pi=new Map,gr=new Map,pt=new Map,nn=new Map,Dt=new Map,pn=new Map,An=new Map,Kn=new Map,hi=[],ri=new Map,gn=new Set,Ht=wo(4,\"unknown\"),En=wo(0,\"__resolving__\"),dr=new Map,Cr=new Map,Se=Cc(1,\"any\"),at=Cc(1,\"any\",262144),Tt=Cc(1,\"any\"),ve=Cc(1,\"error\"),nt=Cc(1,\"unresolved\"),ce=Cc(1,\"any\",65536),$=Cc(1,\"intrinsic\"),ue=Cc(2,\"unknown\"),G=Cc(2,\"unknown\"),Oe=Cc(32768,\"undefined\"),je=U?Oe:Cc(32768,\"undefined\",65536),Ge=Cc(32768,\"undefined\"),kt=Pe?Ge:Oe,Kt=Cc(32768,\"undefined\"),ln=Cc(65536,\"null\"),ir=U?ln:Cc(65536,\"null\",65536),ae=Cc(4,\"string\"),rt=Cc(8,\"number\"),Ot=Cc(64,\"bigint\"),Ke=Cc(512,\"false\"),oe=Cc(512,\"false\"),pe=Cc(512,\"true\"),z=Cc(512,\"true\");pe.regularType=z,pe.freshType=pe,z.regularType=z,z.freshType=pe,Ke.regularType=oe,Ke.freshType=Ke,oe.regularType=oe,oe.freshType=Ke;var Te=Gr([oe,z]),j=Cc(4096,\"symbol\"),yt=Cc(16384,\"void\"),lt=Cc(131072,\"never\"),Qe=Cc(131072,\"never\",262144),Vt=Cc(131072,\"never\"),Hn=Cc(131072,\"never\"),jr=Cc(67108864,\"object\"),ei=Gr([ae,rt]),Kr=Gr([ae,rt,j]),Si=we?ae:Kr,Ja=Gr([rt,Ot]),Za=Gr([ae,rt,Te,Ot,ln,Oe]),Fa=WE([\"\",\"\"],[rt]),Hi=fM(n=>n.flags&262144?Pqe(n):n,()=>\"(restrictive mapper)\"),xi=fM(n=>n.flags&262144?Tt:n,()=>\"(permissive mapper)\"),Nr=Cc(131072,\"never\"),Fo=fM(n=>n.flags&262144?Nr:n,()=>\"(unique literal mapper)\"),Qr,Wi=fM(n=>(Qr&&(n===md||n===Pc||n===bl)&&Qr(!0),n),()=>\"(unmeasurable reporter)\"),yn=fM(n=>(Qr&&(n===md||n===Pc||n===bl)&&Qr(!1),n),()=>\"(unreliable reporter)\"),Ki=ls(void 0,q,Je,Je,Je),kc=ls(void 0,q,Je,Je,Je);kc.objectFlags|=2048;var Ps=wo(2048,\"__type\");Ps.members=Ua();var mc=ls(Ps,q,Je,Je,Je),xc=ls(void 0,q,Je,Je,Je),hc=U?Gr([Oe,ln,xc]):ue,ro=ls(void 0,q,Je,Je,Je);ro.instantiations=new Map;var aa=ls(void 0,q,Je,Je,Je);aa.objectFlags|=262144;var Co=ls(void 0,q,Je,Je,Je),gc=ls(void 0,q,Je,Je,Je),Ll=ls(void 0,q,Je,Je,Je),md=rd(),Pc=rd();Pc.constraint=md;var bl=rd(),ss=rd(),qs=rd();qs.constraint=ss;var Rs=aM(1,\"<<unresolved>>\",0,Se),As=Am(void 0,void 0,void 0,Je,Se,void 0,0,0),jt=Am(void 0,void 0,void 0,Je,ve,void 0,0,0),yc=Am(void 0,void 0,void 0,Je,Se,void 0,0,0),Ql=Am(void 0,void 0,void 0,Je,Qe,void 0,0,0),yu=Fp(rt,ae,!0),se=new Map,ht={get yieldType(){return L.fail(\"Not supported\")},get returnType(){return L.fail(\"Not supported\")},get nextType(){return L.fail(\"Not supported\")}},wt=Eg(Se,Se,Se),K=Eg(Se,Se,ue),Xe=Eg(lt,Se,Oe),ft={iterableCacheKey:\"iterationTypesOfAsyncIterable\",iteratorCacheKey:\"iterationTypesOfAsyncIterator\",iteratorSymbolName:\"asyncIterator\",getGlobalIteratorType:hKe,getGlobalIterableType:ZG,getGlobalIterableIteratorType:gKe,getGlobalGeneratorType:yKe,resolveIterationType:rT,mustHaveANextMethodDiagnostic:_.An_async_iterator_must_have_a_next_method,mustBeAMethodDiagnostic:_.The_0_property_of_an_async_iterator_must_be_a_method,mustHaveAValueDiagnostic:_.The_type_returned_by_the_0_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_property},Yt={iterableCacheKey:\"iterationTypesOfIterable\",iteratorCacheKey:\"iterationTypesOfIterator\",iteratorSymbolName:\"iterator\",getGlobalIteratorType:vKe,getGlobalIterableType:pne,getGlobalIterableIteratorType:bKe,getGlobalGeneratorType:EKe,resolveIterationType:(n,a)=>n,mustHaveANextMethodDiagnostic:_.An_iterator_must_have_a_next_method,mustBeAMethodDiagnostic:_.The_0_property_of_an_iterator_must_be_a_method,mustHaveAValueDiagnostic:_.The_type_returned_by_the_0_method_of_an_iterator_must_have_a_value_property},pr,yr=new Map,ta=!1,Go,Ka,vo,ka,Hs,Uc,Gu,$o,jo,Ws,hd,vc,tf,ye,Et,bn,Ri,io,ee,Ze,At,xt,qt,Ln,mr,Vr,gi,Ea,bo,Qo,Cs,Bu,Pd,Dc,gd,Zl,Md,Wf,Io,zf,Fd,b_,X_,M,He,Nt,Pn,la,oa,be,De,mt,St,Zt,rn=new Map,sn=0,Dn=0,kr=0,ki=!1,Vn=0,$t,Xn,ra,Is=[],Mc=[],mm=[],Hh=0,E_=[],Cb=[],mv=0,yx=df(\"\"),p1=ap(0),vx=aB({negative:!1,base10Value:\"0\"}),Wh=[],T_=[],hv=[],eh=0,Y_=10,gv=[],lE=[],Ib=[],zh=[],m1=[],uE=[],dE=[],fE=[],yv=[],bx=[],_E=[],pE=[],vv=[],Lb=[],bv=[],h1=[],Jh=[],Lo=YA(),mE=YA(),cC=Tm(),Zg,Kh,hm=new Map,S_=new Map,Zu=new Map,ed=new Map,td=new Map,kb=new Map,Db=Ua();Db.set(Le.escapedName,Le);var Ex=[[\".mts\",\".mjs\"],[\".ts\",\".js\"],[\".cts\",\".cjs\"],[\".mjs\",\".mjs\"],[\".js\",\".js\"],[\".cjs\",\".cjs\"],[\".tsx\",Y.jsx===1?\".jsx\":\".js\"],[\".jsx\",\".jsx\"],[\".json\",\".json\"]];return grt(),qe;function wb(n){return n?Kn.get(n):void 0}function qh(n,a){return n&&Kn.set(n,a),a}function Rb(n){if(n){let a=Gn(n);if(a)if(VS(n)){if(a.localJsxFragmentNamespace)return a.localJsxFragmentNamespace;let c=a.pragmas.get(\"jsxfrag\");if(c){let p=ba(c)?c[0]:c;if(a.localJsxFragmentFactory=JS(p.arguments.factory,R),$e(a.localJsxFragmentFactory,Ob,Cd),a.localJsxFragmentFactory)return a.localJsxFragmentNamespace=Xd(a.localJsxFragmentFactory).escapedText}let u=Kie(n);if(u)return a.localJsxFragmentFactory=u,a.localJsxFragmentNamespace=Xd(u).escapedText}else{let c=g1(a);if(c)return a.localJsxNamespace=c}}return Zg||(Zg=\"React\",Y.jsxFactory?(Kh=JS(Y.jsxFactory,R),$e(Kh,Ob),Kh&&(Zg=Xd(Kh).escapedText)):Y.reactNamespace&&(Zg=Bs(Y.reactNamespace))),Kh||(Kh=D.createQualifiedName(D.createIdentifier(Gi(Zg)),\"createElement\")),Zg}function g1(n){if(n.localJsxNamespace)return n.localJsxNamespace;let a=n.pragmas.get(\"jsx\");if(a){let c=ba(a)?a[0]:a;if(n.localJsxFactory=JS(c.arguments.factory,R),$e(n.localJsxFactory,Ob,Cd),n.localJsxFactory)return n.localJsxNamespace=Xd(n.localJsxFactory).escapedText}}function Ob(n){return om(n,-1,-1),xn(n,Ob,Bh)}function lC(n,a){return HLe(n,a),Ie}function Tx(n,a,c,u,p,h){let T=n?hr(n,a,c,u,p,h):ps(a,c,u,p,h),k=Lo.lookup(T);return k||(Lo.add(T),T)}function Ev(n,a,c,u,p,h,T){let k=Fe(a,c,u,p,h,T);return k.skippedOn=n,k}function hE(n,a,c,u,p,h){return n?hr(n,a,c,u,p,h):ps(a,c,u,p,h)}function Fe(n,a,c,u,p,h){let T=hE(n,a,c,u,p,h);return Lo.add(T),T}function ey(n,a){n?Lo.add(a):mE.add({...a,category:2})}function Ip(n,a,c,u,p,h,T){if(a.pos<0||a.end<0){if(!n)return;let k=Gn(a);ey(n,\"message\"in c?al(k,0,0,c,u,p,h,T):yH(k,c));return}ey(n,\"message\"in c?hr(a,c,u,p,h,T):Lh(Gn(a),a,c))}function Tv(n,a,c,u,p,h,T){let k=Fe(n,c,u,p,h,T);if(a){let O=hr(n,_.Did_you_forget_to_use_await);Ao(k,O)}return k}function Nb(n,a){let c=Array.isArray(n)?mn(n,Cj):Cj(n);return c&&Ao(a,hr(c,_.The_declaration_was_marked_as_deprecated_here)),mE.add(a),a}function Sv(n){if(Fn(n.declarations)>1){let a=ju(n);if(a&&a.flags&64)return vt(n.declarations,c=>!!(F_(c)&268435456))}return!!(WB(n)&268435456)}function Xh(n,a,c){let u=hr(n,_._0_is_deprecated,c);return Nb(a,u)}function y1(n,a,c,u){let p=c?hr(n,_.The_signature_0_of_1_is_deprecated,u,c):hr(n,_._0_is_deprecated,u);return Nb(a,p)}function wo(n,a,c){S++;let u=new d(n|33554432,a);return u.links=new yK,u.links.checkFlags=c||0,u}function x_(n,a){let c=wo(1,n);return c.links.type=a,c}function gE(n,a){let c=wo(4,n);return c.links.type=a,c}function Kc(n){let a=0;return n&2&&(a|=111551),n&1&&(a|=111550),n&4&&(a|=0),n&8&&(a|=900095),n&16&&(a|=110991),n&32&&(a|=899503),n&64&&(a|=788872),n&256&&(a|=899327),n&128&&(a|=899967),n&512&&(a|=110735),n&8192&&(a|=103359),n&32768&&(a|=46015),n&65536&&(a|=78783),n&262144&&(a|=526824),n&524288&&(a|=788968),n&2097152&&(a|=2097152),a}function th(n,a){a.mergeId||(a.mergeId=hK,hK++),gv[a.mergeId]=n}function Pb(n){let a=wo(n.flags,n.escapedName);return a.declarations=n.declarations?n.declarations.slice():[],a.parent=n.parent,n.valueDeclaration&&(a.valueDeclaration=n.valueDeclaration),n.constEnumOnlyModule&&(a.constEnumOnlyModule=!0),n.members&&(a.members=new Map(n.members)),n.exports&&(a.exports=new Map(n.exports)),th(a,n),a}function A_(n,a,c=!1){if(!(n.flags&Kc(a.flags))||(a.flags|n.flags)&67108864){if(a===n)return n;if(!(n.flags&33554432)){let p=Ac(n);if(p===Ht)return a;n=Pb(p)}a.flags&512&&n.flags&512&&n.constEnumOnlyModule&&!a.constEnumOnlyModule&&(n.constEnumOnlyModule=!1),n.flags|=a.flags,a.valueDeclaration&&iR(n,a.valueDeclaration),si(n.declarations,a.declarations),a.members&&(n.members||(n.members=Ua()),ll(n.members,a.members,c)),a.exports&&(n.exports||(n.exports=Ua()),ll(n.exports,a.exports,c)),c||th(n,a)}else if(n.flags&1024)n!==Ye&&Fe(a.declarations&&sa(a.declarations[0]),_.Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity,E(n));else{let p=!!(n.flags&384||a.flags&384),h=!!(n.flags&2||a.flags&2),T=p?_.Enum_declarations_can_only_merge_with_namespace_or_other_enum_declarations:h?_.Cannot_redeclare_block_scoped_variable_0:_.Duplicate_identifier_0,k=a.declarations&&Gn(a.declarations[0]),O=n.declarations&&Gn(n.declarations[0]),H=h6(k,Y.checkJs),J=h6(O,Y.checkJs),de=E(a);if(k&&O&&pr&&!p&&k!==O){let Ae=lT(k.path,O.path)===-1?k:O,xe=Ae===k?O:k,tt=jD(pr,`${Ae.path}|${xe.path}`,()=>({firstFile:Ae,secondFile:xe,conflictingSymbols:new Map})),It=jD(tt.conflictingSymbols,de,()=>({isBlockScoped:h,firstFileLocations:[],secondFileLocations:[]}));H||u(It.firstFileLocations,a),J||u(It.secondFileLocations,n)}else H||Mb(a,T,de,n),J||Mb(n,T,de,a)}return n;function u(p,h){if(h.declarations)for(let T of h.declarations)Rf(p,T)}}function Mb(n,a,c,u){mn(n.declarations,p=>{Ml(p,a,c,u.declarations)})}function Ml(n,a,c,u){let p=(ob(n,!1)?wH(n):sa(n))||n,h=Tx(p,a,c);for(let T of u||Je){let k=(ob(T,!1)?wH(T):sa(T))||T;if(k===p)continue;h.relatedInformation=h.relatedInformation||[];let O=hr(k,_._0_was_also_declared_here,c),H=hr(k,_.and_here);Fn(h.relatedInformation)>=5||vt(h.relatedInformation,J=>eL(J,H)===0||eL(J,O)===0)||Ao(h,Fn(h.relatedInformation)?H:O)}}function Yh(n,a){if(!n?.size)return a;if(!a?.size)return n;let c=Ua();return ll(c,n),ll(c,a),c}function ll(n,a,c=!1){a.forEach((u,p)=>{let h=n.get(p);n.set(p,h?A_(h,u,c):No(u))})}function v1(n){var a,c,u;let p=n.parent;if(((a=p.symbol.declarations)==null?void 0:a[0])!==p){L.assert(p.symbol.declarations.length>1);return}if(mp(p))ll(Ne,p.symbol.exports);else{let h=n.parent.parent.flags&16777216?void 0:_.Invalid_module_name_in_augmentation_module_0_cannot_be_found,T=ah(n,n,h,!0);if(!T)return;if(T=Vu(T),T.flags&1920)if(vt(Ka,k=>T===k.symbol)){let k=A_(p.symbol,T,!0);vo||(vo=new Map),vo.set(n.text,k)}else{if(((c=T.exports)==null?void 0:c.get(\"__export\"))&&((u=p.symbol.exports)==null?void 0:u.size)){let k=Mte(T,\"resolvedExports\");for(let[O,H]of lo(p.symbol.exports.entries()))k.has(O)&&!T.exports.has(O)&&A_(k.get(O),H)}A_(T,p.symbol)}else Fe(n,_.Cannot_augment_module_0_because_it_resolves_to_a_non_module_entity,n.text)}}function uC(n,a,c){a.forEach((p,h)=>{let T=n.get(h);T?mn(T.declarations,u(Gi(h),c)):n.set(h,p)});function u(p,h){return T=>Lo.add(hr(T,h,p))}}function Ai(n){var a;if(n.flags&33554432)return n.links;let c=$a(n);return(a=lE[c])!=null?a:lE[c]=new yK}function Rr(n){let a=zo(n);return Ib[a]||(Ib[a]=new pPe)}function gm(n){return n.kind===308&&!kd(n)}function yd(n,a,c){if(c){let u=No(n.get(a));if(u&&(L.assert((ac(u)&1)===0,\"Should never get an instantiated symbol here.\"),u.flags&c||u.flags&2097152&&Fl(u)&c))return u}}function yE(n,a){let c=n.parent,u=n.parent.parent,p=yd(c.locals,a,111551),h=yd(vy(u.symbol),a,111551);return p&&h?[p,h]:L.fail(\"There should exist two symbols, one as property declaration and one as parameter declaration\")}function $h(n,a){let c=Gn(n),u=Gn(a),p=tm(n);if(c!==u){if(ie&&(c.externalModuleIndicator||u.externalModuleIndicator)||!Ss(Y)||DC(a)||n.flags&16777216||T(a,n))return!0;let O=e.getSourceFiles();return O.indexOf(c)<=O.indexOf(u)}if(n.pos<=a.pos&&!(Na(n)&&Jw(a.parent)&&!n.initializer&&!n.exclamationToken)){if(n.kind===205){let O=cb(a,205);return O?jn(O,Wo)!==jn(n,Wo)||n.pos<O.pos:$h(cb(n,257),a)}else{if(n.kind===257)return!h(n,a);if(sl(n))return!jn(a,O=>ts(O)&&O.parent.parent===n);if(Na(n))return!k(n,a,!1);if(Ad(n,n.parent))return!(Do(Y)===99&&fe&&Zc(n)===Zc(a)&&T(a,n))}return!0}if(a.parent.kind===278||a.parent.kind===274&&a.parent.isExportEquals||a.kind===274&&a.isExportEquals||!!(a.flags&8388608)||DC(a)||k2e(a))return!0;if(T(a,n))return Do(Y)===99&&fe&&Zc(n)&&(Na(n)||Ad(n,n.parent))?!k(n,a,!0):!0;return!1;function h(O,H){switch(O.parent.parent.kind){case 240:case 245:case 247:if(Lp(H,O,p))return!0;break}let J=O.parent.parent;return IA(J)&&Lp(H,J.expression,p)}function T(O,H){return!!jn(O,J=>{if(J===p)return\"quit\";if(Ia(J))return!0;if(oc(J))return H.pos<O.pos;let de=zr(J.parent,Na);if(de&&de.initializer===J){if(Ca(J.parent)){if(H.kind===171)return!0;if(Na(H)&&Zc(O)===Zc(H)){let xe=H.name;if(Re(xe)||pi(xe)){let tt=zn(fr(H)),It=Pr(H.parent.members,oc);if(tnt(xe,tt,It,H.parent.pos,J.pos))return!0}}}else if(!(H.kind===169&&!Ca(H))||Zc(O)!==Zc(H))return!0}return!1})}function k(O,H,J){return H.end>O.end?!1:jn(H,Ae=>{if(Ae===O)return\"quit\";switch(Ae.kind){case 216:return!0;case 169:return J&&(Na(O)&&Ae.parent===O.parent||Ad(O,O.parent)&&Ae.parent===O.parent.parent)?\"quit\":!0;case 238:switch(Ae.parent.kind){case 174:case 171:case 175:return!0;default:return!1}default:return!1}})===void 0}}function nh(n,a,c){let u=Do(Y),p=a;if(ha(c)&&p.body&&n.valueDeclaration&&n.valueDeclaration.pos>=p.body.pos&&n.valueDeclaration.end<=p.body.end&&u>=2){let k=Rr(p);return k.declarationRequiresScopeChange===void 0&&(k.declarationRequiresScopeChange=mn(p.parameters,h)||!1),!k.declarationRequiresScopeChange}return!1;function h(k){return T(k.name)||!!k.initializer&&T(k.initializer)}function T(k){switch(k.kind){case 216:case 215:case 259:case 173:return!1;case 171:case 174:case 175:case 299:return T(k.name);case 169:return zc(k)?u<99||!fe:T(k.name);default:return wj(k)||Jl(k)?u<7:Wo(k)&&k.dotDotDotToken&&cm(k.parent)?u<4:bi(k)?!1:pa(k,T)||!1}}}function ym(n){return mT(n)&&Ch(n.type)||wL(n)&&Ch(n.typeExpression)}function zs(n,a,c,u,p,h,T=!1,k=!0){return Fb(n,a,c,u,p,h,T,k,yd)}function Fb(n,a,c,u,p,h,T,k,O){var H,J,de;let Ae=n,xe,tt,It,Tn,un,Nn=!1,en=n,cn,rr=!1;e:for(;n;){if(a===\"const\"&&ym(n))return;if(Qp(n)&&n.locals&&!gm(n)&&(xe=O(n.locals,a,c))){let Cn=!0;if(Ia(n)&&tt&&tt!==n.body?(c&xe.flags&788968&&tt.kind!==323&&(Cn=xe.flags&262144?tt===n.type||tt.kind===166||tt.kind===344||tt.kind===345||tt.kind===165:!1),c&xe.flags&3&&(nh(xe,n,tt)?Cn=!1:xe.flags&1&&(Cn=tt.kind===166||tt===n.type&&!!jn(xe.valueDeclaration,ha)))):n.kind===191&&(Cn=tt===n.trueType),Cn)break e;xe=void 0}switch(Nn=Nn||Gb(n,tt),n.kind){case 308:if(!kd(n))break;rr=!0;case 264:let Cn=((H=fr(n))==null?void 0:H.exports)||q;if(n.kind===308||Tc(n)&&n.flags&16777216&&!mp(n)){if(xe=Cn.get(\"default\")){let Hr=ZA(xe);if(Hr&&xe.flags&c&&Hr.escapedName===a)break e;xe=void 0}let Br=Cn.get(a);if(Br&&Br.flags===2097152&&(nc(Br,278)||nc(Br,277)))break}if(a!==\"default\"&&(xe=O(Cn,a,c&2623475)))if(Li(n)&&n.commonJsModuleIndicator&&!((J=xe.declarations)!=null&&J.some(Mf)))xe=void 0;else break e;break;case 263:if(xe=O(((de=fr(n))==null?void 0:de.exports)||q,a,c&8)){u&&u_(Y)&&!(n.flags&16777216)&&Gn(n)!==Gn(xe.valueDeclaration)&&Fe(en,_.Cannot_access_0_from_another_file_without_qualification_when_1_is_enabled_Use_2_instead,Gi(a),Rt,`${Gi(vd(n).escapedName)}.${Gi(a)}`);break e}break;case 169:if(!Ca(n)){let Br=wv(n.parent);Br&&Br.locals&&O(Br.locals,a,c&111551)&&(L.assertNode(n,Na),Tn=n)}break;case 260:case 228:case 261:if(xe=O(fr(n).members||q,a,c&788968)){if(!Sx(xe,n)){xe=void 0;break}if(tt&&Ca(tt)){u&&Fe(en,_.Static_members_cannot_reference_class_type_parameters);return}break e}if(_u(n)&&c&32){let Br=n.name;if(Br&&a===Br.escapedText){xe=n.symbol;break e}}break;case 230:if(tt===n.expression&&n.parent.token===94){let Br=n.parent.parent;if(Yr(Br)&&(xe=O(fr(Br).members,a,c&788968))){u&&Fe(en,_.Base_class_expressions_cannot_reference_class_type_parameters);return}}break;case 164:if(cn=n.parent.parent,(Yr(cn)||cn.kind===261)&&(xe=O(fr(cn).members,a,c&788968))){u&&Fe(en,_.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type);return}break;case 216:if(Do(Y)>=2)break;case 171:case 173:case 174:case 175:case 259:if(c&3&&a===\"arguments\"){xe=_t;break e}break;case 215:if(c&3&&a===\"arguments\"){xe=_t;break e}if(c&16){let Br=n.name;if(Br&&a===Br.escapedText){xe=n.symbol;break e}}break;case 167:n.parent&&n.parent.kind===166&&(n=n.parent),n.parent&&(_l(n.parent)||n.parent.kind===260)&&(n=n.parent);break;case 349:case 341:case 343:let Rn=NI(n);Rn&&(n=Rn.parent);break;case 166:tt&&(tt===n.initializer||tt===n.name&&La(tt))&&(un||(un=n));break;case 205:tt&&(tt===n.initializer||tt===n.name&&La(tt))&&IT(n)&&!un&&(un=n);break;case 192:if(c&262144){let Br=n.typeParameter.name;if(Br&&a===Br.escapedText){xe=n.typeParameter.symbol;break e}}break}E1(n)&&(It=n),tt=n,n=j_(n)?J6(n)||n.parent:(xp(n)||y3(n))&&sb(n)||n.parent}if(h&&xe&&(!It||xe!==It.symbol)&&(xe.isReferenced|=c),!xe){if(tt&&(L.assertNode(tt,Li),tt.commonJsModuleIndicator&&a===\"exports\"&&c&tt.symbol.flags))return tt.symbol;T||(xe=O(Ne,a,c))}if(!xe&&Ae&&Yn(Ae)&&Ae.parent&&qu(Ae.parent,!1))return ct;function Jt(){return Tn&&!(fe&&Do(Y)>=9)?(Fe(en,en&&Tn.type&&Y8(Tn.type,en.pos)?_.Type_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor:_.Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor,os(Tn.name),Af(p)),!0):!1}if(xe){if(u&&Jt())return}else{u&&i(()=>{if(!en||!xx(en,a,p)&&!Jt()&&!xv(en)&&!S1(en,a,c)&&!x1(en,a)&&!Cx(en,a,c)&&!nf(en,a,c)&&!Ax(en,a,c)){let Cn,Rn;if(p&&(Rn=aQe(p),Rn&&Fe(en,u,Af(p),Rn)),!Rn&&k&&eh<Y_&&(Cn=Yre(Ae,a,c),Cn?.valueDeclaration&&lu(Cn.valueDeclaration)&&mp(Cn.valueDeclaration)&&(Cn=void 0),Cn)){let Hr=E(Cn),qi=Kre(Ae,Cn,!1),wa=c===1920||p&&typeof p!=\"string\"&&ws(p)?_.Cannot_find_namespace_0_Did_you_mean_1:qi?_.Could_not_find_name_0_Did_you_mean_1:_.Cannot_find_name_0_Did_you_mean_1,Xc=hE(en,wa,Af(p),Hr);ey(!qi,Xc),Cn.valueDeclaration&&Ao(Xc,hr(Cn.valueDeclaration,_._0_is_declared_here,Hr))}!Cn&&!Rn&&p&&Fe(en,u,Af(p)),eh++}});return}return u&&i(()=>{if(en&&(c&2||(c&32||c&384)&&(c&111551)===111551)){let Cn=ep(xe);(Cn.flags&2||Cn.flags&32||Cn.flags&384)&&Ub(Cn,en)}if(xe&&rr&&(c&111551)===111551&&!(Ae.flags&8388608)){let Cn=No(xe);Fn(Cn.declarations)&&Ji(Cn.declarations,Rn=>yO(Rn)||Li(Rn)&&!!Rn.symbol.globalExports)&&Ip(!Y.allowUmdGlobalAccess,en,_._0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead,Gi(a))}if(xe&&un&&!Nn&&(c&111551)===111551){let Cn=No(zG(xe)),Rn=nm(un);Cn===fr(un)?Fe(en,_.Parameter_0_cannot_reference_itself,os(un.name)):Cn.valueDeclaration&&Cn.valueDeclaration.pos>un.pos&&Rn.parent.locals&&O(Rn.parent.locals,Cn.escapedName,c)===Cn&&Fe(en,_.Parameter_0_cannot_reference_identifier_1_declared_after_it,os(un.name),os(en))}if(xe&&en&&c&111551&&xe.flags&2097152&&!(xe.flags&111551)&&!SS(en)){let Cn=nd(xe,111551);if(Cn){let Rn=Cn.kind===278||Cn.kind===275||Cn.kind===277?_._0_cannot_be_used_as_a_value_because_it_was_exported_using_export_type:_._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type,Br=Gi(a);b1(Fe(en,Rn,Br),Cn,Br)}}}),xe}function b1(n,a,c){return a?Ao(n,hr(a,a.kind===278||a.kind===275||a.kind===277?_._0_was_exported_here:_._0_was_imported_here,c)):n}function Gb(n,a){return n.kind!==216&&n.kind!==215?bL(n)||(Ds(n)||n.kind===169&&!Ca(n))&&(!a||a!==n.name):a&&a===n.name?!1:n.asteriskToken||Mr(n,512)?!0:!TT(n)}function E1(n){switch(n.kind){case 259:case 260:case 261:case 263:case 262:case 264:return!0;default:return!1}}function Af(n){return Ta(n)?Gi(n):os(n)}function Sx(n,a){if(n.declarations){for(let c of n.declarations)if(c.kind===165&&(j_(c.parent)?fS(c.parent):c.parent)===a)return!(j_(c.parent)&&wr(c.parent.parent.tags,Mf))}return!1}function xx(n,a,c){if(!Re(n)||n.escapedText!==a||WLe(n)||DC(n))return!1;let u=Ku(n,!1,!1),p=u;for(;p;){if(Yr(p.parent)){let h=fr(p.parent);if(!h)break;let T=zn(h);if(ja(T,a))return Fe(n,_.Cannot_find_name_0_Did_you_mean_the_static_member_1_0,Af(c),E(h)),!0;if(p===u&&!Ca(p)){let k=gs(h).thisType;if(ja(k,a))return Fe(n,_.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0,Af(c)),!0}}p=p.parent}return!1}function xv(n){let a=T1(n);return a&&uc(a,64,!0)?(Fe(n,_.Cannot_extend_an_interface_0_Did_you_mean_implements,Qc(a)),!0):!1}function T1(n){switch(n.kind){case 79:case 208:return n.parent?T1(n.parent):void 0;case 230:if(bc(n.expression))return n.expression;default:return}}function S1(n,a,c){let u=1920|(Yn(n)?111551:0);if(c===u){let p=Ac(zs(n,a,788968&~u,void 0,void 0,!1)),h=n.parent;if(p){if(Yu(h)){L.assert(h.left===n,\"Should only be resolving left side of qualified name as a namespace\");let T=h.right.escapedText;if(ja(gs(p),T))return Fe(h,_.Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1,Gi(a),Gi(T)),!0}return Fe(n,_._0_only_refers_to_a_type_but_is_being_used_as_a_namespace_here,Gi(a)),!0}}return!1}function Ax(n,a,c){if(c&788584){let u=Ac(zs(n,a,111127,void 0,void 0,!1));if(u&&!(u.flags&1920))return Fe(n,_._0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0,Gi(a)),!0}return!1}function Bb(n){return n===\"any\"||n===\"string\"||n===\"number\"||n===\"boolean\"||n===\"never\"||n===\"unknown\"}function x1(n,a){return Bb(a)&&n.parent.kind===278?(Fe(n,_.Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module,a),!0):!1}function nf(n,a,c){if(c&111551){if(Bb(a))return Qh(n)?Fe(n,_.An_interface_cannot_extend_a_primitive_type_like_0_an_interface_can_only_extend_named_types_and_classes,Gi(a)):Fe(n,_._0_only_refers_to_a_type_but_is_being_used_as_a_value_here,Gi(a)),!0;let u=Ac(zs(n,a,788544,void 0,void 0,!1)),p=u&&Fl(u);if(u&&p!==void 0&&!(p&111551)){let h=Gi(a);return C_(a)?Fe(n,_._0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_es2015_or_later,h):$_(n,u)?Fe(n,_._0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Did_you_mean_to_use_1_in_0,h,h===\"K\"?\"P\":\"K\"):Fe(n,_._0_only_refers_to_a_type_but_is_being_used_as_a_value_here,h),!0}}return!1}function Qh(n){let a=n.parent.parent,c=a.parent;if(a&&c){let u=dd(a)&&a.token===94,p=ku(c);return u&&p}return!1}function $_(n,a){let c=jn(n.parent,u=>ts(u)||Yd(u)?!1:Rd(u)||\"quit\");if(c&&c.members.length===1){let u=gs(a);return!!(u.flags&1048576)&&JM(u,384,!0)}return!1}function C_(n){switch(n){case\"Promise\":case\"Symbol\":case\"Map\":case\"WeakMap\":case\"Set\":case\"WeakSet\":return!0}return!1}function Cx(n,a,c){if(c&111127){if(Ac(zs(n,a,1024,void 0,void 0,!1)))return Fe(n,_.Cannot_use_namespace_0_as_a_value,Gi(a)),!0}else if(c&788544&&Ac(zs(n,a,1536,void 0,void 0,!1)))return Fe(n,_.Cannot_use_namespace_0_as_a_type,Gi(a)),!0;return!1}function Ub(n,a){var c;if(L.assert(!!(n.flags&2||n.flags&32||n.flags&384)),n.flags&67108881&&n.flags&32)return;let u=(c=n.declarations)==null?void 0:c.find(p=>sH(p)||Yr(p)||p.kind===263);if(u===void 0)return L.fail(\"checkResolvedBlockScopedVariable could not find block-scoped declaration\");if(!(u.flags&16777216)&&!$h(u,a)){let p,h=os(sa(u));n.flags&2?p=Fe(a,_.Block_scoped_variable_0_used_before_its_declaration,h):n.flags&32?p=Fe(a,_.Class_0_used_before_its_declaration,h):n.flags&256?p=Fe(a,_.Enum_0_used_before_its_declaration,h):(L.assert(!!(n.flags&128)),U0(Y)&&(p=Fe(a,_.Enum_0_used_before_its_declaration,h))),p&&Ao(p,hr(u,_._0_is_declared_here,h))}}function Lp(n,a,c){return!!a&&!!jn(n,u=>u===a||(u===c||Ia(u)&&(!TT(u)||XA(u))?\"quit\":!1))}function A1(n){switch(n.kind){case 268:return n;case 270:return n.parent;case 271:return n.parent.parent;case 273:return n.parent.parent.parent;default:return}}function Uu(n){return n.declarations&&fA(n.declarations,Zh)}function Zh(n){return n.kind===268||n.kind===267||n.kind===270&&!!n.name||n.kind===271||n.kind===277||n.kind===273||n.kind===278||n.kind===274&&JA(n)||ar(n)&&ic(n)===2&&JA(n)||Us(n)&&ar(n.parent)&&n.parent.left===n&&n.parent.operatorToken.kind===63&&kp(n.parent.right)||n.kind===300||n.kind===299&&kp(n.initializer)||n.kind===257&&N0(n)||n.kind===205&&N0(n.parent.parent)}function kp(n){return mR(n)||ms(n)&&sp(n)}function Dp(n,a){let c=ry(n);if(c){let p=QI(c.expression).arguments[0];return Re(c.name)?Ac(ja(Fxe(p),c.name.escapedText)):void 0}if(wi(n)||n.moduleReference.kind===280){let p=Gl(n,IH(n)||RI(n)),h=Vu(p);return Kf(n,p,h,!1),h}let u=Z_(n.moduleReference,a);return eg(n,u),u}function eg(n,a){if(Kf(n,void 0,a,!1)&&!n.isTypeOnly){let c=nd(fr(n)),u=c.kind===278||c.kind===275,p=u?_.An_import_alias_cannot_reference_a_declaration_that_was_exported_using_export_type:_.An_import_alias_cannot_reference_a_declaration_that_was_imported_using_import_type,h=u?_._0_was_exported_here:_._0_was_imported_here,T=c.kind===275?\"*\":Gi(c.name.escapedText);Ao(Fe(n.moduleReference,p),hr(c,h,T))}}function vE(n,a,c,u){let p=n.exports.get(\"export=\"),h=p?ja(zn(p),a,!0):n.exports.get(a),T=Ac(h,u);return Kf(c,h,T,!1),T}function C1(n){return pc(n)&&!n.isExportEquals||Mr(n,1024)||Mu(n)}function ty(n){return es(n)?H_(Gn(n),n):void 0}function bE(n,a){return n===99&&a===1}function cs(n){return ty(n)===99&&Oc(n.text,\".json\")}function ny(n,a,c,u){let p=n&&ty(u);if(n&&p!==void 0){let h=bE(p,n.impliedNodeFormat);if(p===99||h)return h}if(!Z)return!1;if(!n||n.isDeclarationFile){let h=vE(a,\"default\",void 0,!0);return!(h&&vt(h.declarations,C1)||vE(a,Bs(\"__esModule\"),void 0,c))}return Cu(n)?typeof n.externalModuleIndicator!=\"object\"&&!vE(a,Bs(\"__esModule\"),void 0,c):AE(a)}function Ix(n,a){let c=Gl(n,n.parent.moduleSpecifier);if(c)return Vb(c,n,a)}function Vb(n,a,c){var u;let p;II(n)?p=n:p=vE(n,\"default\",a,c);let h=(u=n.declarations)==null?void 0:u.find(Li),T=jb(a);if(!T)return p;let k=cs(T),O=ny(h,n,c,T);if(!p&&!O&&!k)if(AE(n)&&!(RT(Y)||d_(Y))){let H=ie>=5?\"allowSyntheticDefaultImports\":\"esModuleInterop\",de=n.exports.get(\"export=\").valueDeclaration,Ae=Fe(a.name,_.Module_0_can_only_be_default_imported_using_the_1_flag,E(n),H);de&&Ao(Ae,hr(de,_.This_module_is_declared_with_export_and_can_only_be_used_with_a_default_import_when_using_the_0_flag,H))}else lm(a)?Lx(n,a):Av(n,n,a,tS(a)&&a.propertyName||a.name);else if(O||k){let H=Vu(n,c)||Ac(n,c);return Kf(a,n,H,!1),H}return Kf(a,p,void 0,!1),p}function jb(n){switch(n.kind){case 270:return n.parent.moduleSpecifier;case 268:return um(n.moduleReference)?n.moduleReference.expression:void 0;case 271:return n.parent.parent.moduleSpecifier;case 273:return n.parent.parent.parent.moduleSpecifier;case 278:return n.parent.parent.moduleSpecifier;default:return L.assertNever(n)}}function Lx(n,a){var c,u,p;if((c=n.exports)!=null&&c.has(a.symbol.escapedName))Fe(a.name,_.Module_0_has_no_default_export_Did_you_mean_to_use_import_1_from_0_instead,E(n),E(a.symbol));else{let h=Fe(a.name,_.Module_0_has_no_default_export,E(n)),T=(u=n.exports)==null?void 0:u.get(\"__export\");if(T){let k=(p=T.declarations)==null?void 0:p.find(O=>{var H,J;return!!(Il(O)&&O.moduleSpecifier&&((J=(H=Gl(O,O.moduleSpecifier))==null?void 0:H.exports)==null?void 0:J.has(\"default\")))});k&&Ao(h,hr(k,_.export_Asterisk_does_not_re_export_a_default))}}}function dC(n,a){let c=n.parent.parent.moduleSpecifier,u=Gl(n,c),p=Jb(u,c,a,!1);return Kf(n,u,p,!1),p}function kx(n,a){let c=n.parent.moduleSpecifier,u=c&&Gl(n,c),p=c&&Jb(u,c,a,!1);return Kf(n,u,p,!1),p}function Qn(n,a){if(n===Ht&&a===Ht)return Ht;if(n.flags&790504)return n;let c=wo(n.flags|a.flags,n.escapedName);return L.assert(n.declarations||a.declarations),c.declarations=_A(Qi(n.declarations,a.declarations),Zv),c.parent=n.parent||a.parent,n.valueDeclaration&&(c.valueDeclaration=n.valueDeclaration),a.members&&(c.members=new Map(a.members)),n.exports&&(c.exports=new Map(n.exports)),c}function lc(n,a,c,u){var p;if(n.flags&1536){let h=Gd(n).get(a.escapedText),T=Ac(h,u),k=(p=Ai(n).typeOnlyExportStarMap)==null?void 0:p.get(a.escapedText);return Kf(c,h,T,!1,k,a.escapedText),T}}function zi(n,a){if(n.flags&3){let c=n.valueDeclaration.type;if(c)return Ac(ja($r(c),a))}}function rf(n,a,c=!1){var u;let p=IH(n)||n.moduleSpecifier,h=Gl(n,p),T=!br(a)&&a.propertyName||a.name;if(!Re(T))return;let k=T.escapedText===\"default\"&&!!(Y.allowSyntheticDefaultImports||d_(Y)),O=Jb(h,p,!1,k);if(O&&T.escapedText){if(II(h))return h;let H;h&&h.exports&&h.exports.get(\"export=\")?H=ja(zn(O),T.escapedText,!0):H=zi(O,T.escapedText),H=Ac(H,c);let J=lc(O,T,a,c);if(J===void 0&&T.escapedText===\"default\"){let Ae=(u=h.declarations)==null?void 0:u.find(Li);(cs(p)||ny(Ae,h,c,p))&&(J=Vu(h,c)||Ac(h,c))}let de=J&&H&&J!==H?Qn(H,J):J||H;return de||Av(h,O,n,T),de}}function Av(n,a,c,u){var p;let h=rh(n,c),T=os(u),k=qB(u,a);if(k!==void 0){let O=E(k),H=Fe(u,_._0_has_no_exported_member_named_1_Did_you_mean_2,h,T,O);k.valueDeclaration&&Ao(H,hr(k.valueDeclaration,_._0_is_declared_here,O))}else(p=n.exports)!=null&&p.has(\"default\")?Fe(u,_.Module_0_has_no_exported_member_1_Did_you_mean_to_use_import_1_from_0_instead,h,T):vm(c,u,T,n,h)}function vm(n,a,c,u,p){var h,T;let k=(T=(h=zr(u.valueDeclaration,Qp))==null?void 0:h.locals)==null?void 0:T.get(a.escapedText),O=u.exports;if(k){let H=O?.get(\"export=\");if(H)wp(H,k)?Wn(n,a,c,p):Fe(a,_.Module_0_has_no_exported_member_1,p,c);else{let J=O?wr(ene(O),Ae=>!!wp(Ae,k)):void 0,de=J?Fe(a,_.Module_0_declares_1_locally_but_it_is_exported_as_2,p,c,E(J)):Fe(a,_.Module_0_declares_1_locally_but_it_is_not_exported,p,c);k.declarations&&Ao(de,...on(k.declarations,(Ae,xe)=>hr(Ae,xe===0?_._0_is_declared_here:_.and_here,c)))}}else Fe(a,_.Module_0_has_no_exported_member_1,p,c)}function Wn(n,a,c,u){if(ie>=5){let p=d_(Y)?_._0_can_only_be_imported_by_using_a_default_import:_._0_can_only_be_imported_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import;Fe(a,p,c)}else if(Yn(n)){let p=d_(Y)?_._0_can_only_be_imported_by_using_a_require_call_or_by_using_a_default_import:_._0_can_only_be_imported_by_using_a_require_call_or_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import;Fe(a,p,c)}else{let p=d_(Y)?_._0_can_only_be_imported_by_using_import_1_require_2_or_a_default_import:_._0_can_only_be_imported_by_using_import_1_require_2_or_by_turning_on_the_esModuleInterop_flag_and_using_a_default_import;Fe(a,p,c,c,u)}}function Dx(n,a){if($u(n)&&vr(n.propertyName||n.name)===\"default\"){let T=jb(n),k=T&&Gl(n,T);if(k)return Vb(k,n,a)}let c=Wo(n)?nm(n):n.parent.parent.parent,u=ry(c),p=rf(c,u||n,a),h=n.propertyName||n.name;return u&&p&&Re(h)?Ac(ja(zn(p),h.escapedText),a):(Kf(n,void 0,p,!1),p)}function ry(n){if(wi(n)&&n.initializer&&br(n.initializer))return n.initializer}function nl(n,a){if($p(n.parent)){let c=Vu(n.parent.symbol,a);return Kf(n,void 0,c,!1),c}}function Jf(n,a,c){if(vr(n.propertyName||n.name)===\"default\"){let p=jb(n),h=p&&Gl(n,p);if(h)return Vb(h,n,!!c)}let u=n.parent.parent.moduleSpecifier?rf(n.parent.parent,n,c):uc(n.propertyName||n.name,a,!1,c);return Kf(n,void 0,u,!1),u}function Q_(n,a){let c=pc(n)?n.expression:n.right,u=iy(c,a);return Kf(n,void 0,u,!1),u}function iy(n,a){if(_u(n))return Ic(n).symbol;if(!Cd(n)&&!bc(n))return;let c=uc(n,901119,!0,a);return c||(Ic(n),Rr(n).resolvedSymbol)}function EE(n,a){if(!!(ar(n.parent)&&n.parent.left===n&&n.parent.operatorToken.kind===63))return iy(n.parent.right,a)}function I_(n,a=!1){switch(n.kind){case 268:case 257:return Dp(n,a);case 270:return Ix(n,a);case 271:return dC(n,a);case 277:return kx(n,a);case 273:case 205:return Dx(n,a);case 278:return Jf(n,901119,a);case 274:case 223:return Q_(n,a);case 267:return nl(n,a);case 300:return uc(n.name,901119,!0,a);case 299:return iy(n.initializer,a);case 209:case 208:return EE(n,a);default:return L.fail()}}function ay(n,a=901119){return n?(n.flags&(2097152|a))===2097152||!!(n.flags&2097152&&n.flags&67108864):!1}function Ac(n,a){return!a&&ay(n)?wc(n):n}function wc(n){L.assert((n.flags&2097152)!==0,\"Should only get Alias here.\");let a=Ai(n);if(a.aliasTarget)a.aliasTarget===En&&(a.aliasTarget=Ht);else{a.aliasTarget=En;let c=Uu(n);if(!c)return L.fail();let u=I_(c);a.aliasTarget===En?a.aliasTarget=u||Ht:Fe(c,_.Circular_definition_of_import_alias_0,E(n))}return a.aliasTarget}function tg(n){if(Ai(n).aliasTarget!==En)return wc(n)}function Fl(n){let a=n.flags,c;for(;n.flags&2097152;){let u=wc(n);if(u===Ht)return 67108863;if(u===n||c?.has(u))break;u.flags&2097152&&(c?c.add(u):c=new Set([n,u])),a|=u.flags,n=u}return a}function Kf(n,a,c,u,p,h){if(!n||br(n))return!1;let T=fr(n);if(I0(n)){let O=Ai(T);return O.typeOnlyDeclaration=n,!0}if(p){let O=Ai(T);return O.typeOnlyDeclaration=p,T.escapedName!==h&&(O.typeOnlyExportStarName=h),!0}let k=Ai(T);return bm(k,a,u)||bm(k,c,u)}function bm(n,a,c){var u,p,h;if(a&&(n.typeOnlyDeclaration===void 0||c&&n.typeOnlyDeclaration===!1)){let T=(p=(u=a.exports)==null?void 0:u.get(\"export=\"))!=null?p:a,k=T.declarations&&wr(T.declarations,I0);n.typeOnlyDeclaration=(h=k??Ai(T).typeOnlyDeclaration)!=null?h:!1}return!!n.typeOnlyDeclaration}function nd(n,a){if(!(n.flags&2097152))return;let c=Ai(n);if(a===void 0)return c.typeOnlyDeclaration||void 0;if(c.typeOnlyDeclaration){let u=c.typeOnlyDeclaration.kind===275?Ac(sh(c.typeOnlyDeclaration.symbol.parent).get(c.typeOnlyExportStarName||n.escapedName)):wc(c.typeOnlyDeclaration.symbol);return Fl(u)&a?c.typeOnlyDeclaration:void 0}}function TE(n){if(Y.verbatimModuleSyntax)return;let a=fr(n),c=wc(a);c&&(c===Ht||Fl(c)&111551&&!FD(c)&&!nd(a,111551))&&Hb(a)}function Hb(n){L.assert(!Y.verbatimModuleSyntax);let a=Ai(n);if(!a.referenced){a.referenced=!0;let c=Uu(n);if(!c)return L.fail();BA(c)&&Fl(Ac(n))&111551&&Ic(c.moduleReference)}}function Wb(n){let a=Ai(n);a.constEnumReferenced||(a.constEnumReferenced=!0)}function Z_(n,a){return n.kind===79&&JI(n)&&(n=n.parent),n.kind===79||n.parent.kind===163?uc(n,1920,!1,a):(L.assert(n.parent.kind===268),uc(n,901119,!1,a))}function rh(n,a){return n.parent?rh(n.parent,a)+\".\"+E(n):E(n,a,void 0,36)}function SE(n){for(;Yu(n.parent);)n=n.parent;return n}function oy(n){let a=Xd(n),c=zs(a,a.escapedText,111551,void 0,a,!0);if(!!c){for(;Yu(a.parent);){let u=zn(c);if(c=ja(u,a.parent.right.escapedText),!c)return;a=a.parent}return c}}function uc(n,a,c,u,p){if(rc(n))return;let h=1920|(Yn(n)?a&111551:0),T;if(n.kind===79){let k=a===h||ws(n)?_.Cannot_find_namespace_0:L2e(Xd(n)),O=Yn(n)&&!ws(n)?ng(n,a):void 0;if(T=No(zs(p||n,n.escapedText,a,c||O?void 0:k,n,!0,!1)),!T)return No(O)}else if(n.kind===163||n.kind===208){let k=n.kind===163?n.left:n.expression,O=n.kind===163?n.right:n.name,H=uc(k,h,c,!1,p);if(!H||rc(O))return;if(H===Ht)return H;if(H.valueDeclaration&&Yn(H.valueDeclaration)&&$s(Y)!==100&&wi(H.valueDeclaration)&&H.valueDeclaration.initializer&&dIe(H.valueDeclaration.initializer)){let J=H.valueDeclaration.initializer.arguments[0],de=Gl(J,J);if(de){let Ae=Vu(de);Ae&&(H=Ae)}}if(T=No(yd(Gd(H),O.escapedText,a)),!T){if(!c){let J=rh(H),de=os(O),Ae=qB(O,H);if(Ae){Fe(O,_._0_has_no_exported_member_named_1_Did_you_mean_2,J,de,E(Ae));return}let xe=Yu(n)&&SE(n);if(ka&&a&788968&&xe&&!v2(xe.parent)&&oy(xe)){Fe(xe,_._0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0,Kd(xe));return}if(a&1920&&Yu(n.parent)){let It=No(yd(Gd(H),O.escapedText,788968));if(It){Fe(n.parent.right,_.Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1,E(It),Gi(n.parent.right.escapedText));return}}Fe(O,_.Namespace_0_has_no_exported_member_1,J,de)}return}}else throw L.assertNever(n,\"Unknown entity name kind.\");return L.assert((ac(T)&1)===0,\"Should never get an instantiated symbol here.\"),!ws(n)&&Cd(n)&&(T.flags&2097152||n.parent.kind===274)&&Kf(BH(n),T,void 0,!0),T.flags&a||u?T:wc(T)}function ng(n,a){if($G(n.parent)){let c=ih(n.parent);if(c)return zs(c,n.escapedText,a,void 0,n,!0)}}function ih(n){if(jn(n,p=>LA(p)||p.flags&8388608?Mf(p):\"quit\"))return;let c=fS(n);if(c&&Ol(c)&&rR(c.expression)){let p=fr(c.expression.left);if(p)return Cv(p)}if(c&&ms(c)&&rR(c.parent)&&Ol(c.parent.parent)){let p=fr(c.parent.left);if(p)return Cv(p)}if(c&&(o_(c)||yl(c))&&ar(c.parent.parent)&&ic(c.parent.parent)===6){let p=fr(c.parent.parent.left);if(p)return Cv(p)}let u=zA(n);if(u&&Ia(u)){let p=fr(u);return p&&p.valueDeclaration}}function Cv(n){let a=n.parent.valueDeclaration;return a?(OI(a)?sS(a):hT(a)?Qw(a):void 0)||a:void 0}function Iv(n){let a=n.valueDeclaration;if(!a||!Yn(a)||n.flags&524288||ob(a,!1))return;let c=wi(a)?Qw(a):sS(a);if(c){let u=vd(c);if(u)return oie(u,n)}}function Gl(n,a,c){let p=$s(Y)===1?_.Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_nodenext_or_to_add_aliases_to_the_paths_option:_.Cannot_find_module_0_or_its_corresponding_type_declarations;return ah(n,a,c?void 0:p)}function ah(n,a,c,u=!1){return es(a)?qc(n,a.text,c,a,u):void 0}function qc(n,a,c,u,p=!1){var h,T,k,O,H,J,de,Ae,xe;if(na(a,\"@types/\")){let Cn=_.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1,Rn=ZC(a,\"@types/\");Fe(u,Cn,Rn,a)}let tt=tne(a,!0);if(tt)return tt;let It=Gn(n),Tn=es(n)?n:((h=jn(n,Dd))==null?void 0:h.arguments[0])||((T=jn(n,gl))==null?void 0:T.moduleSpecifier)||((k=jn(n,ab))==null?void 0:k.moduleReference.expression)||((O=jn(n,Il))==null?void 0:O.moduleSpecifier)||((H=Tc(n)?n:n.parent&&Tc(n.parent)&&n.parent.name===n?n.parent:void 0)==null?void 0:H.name)||((J=ib(n)?n:void 0)==null?void 0:J.argument.literal),un=Tn&&es(Tn)?H_(It,Tn):It.impliedNodeFormat,Nn=$s(Y),en=DA(It,a,un),cn=en&&_q(Y,en,It),rr=en&&(!cn||cn===_.Module_0_was_resolved_to_1_but_jsx_is_not_set)&&e.getSourceFile(en.resolvedFileName);if(rr){if(cn&&Fe(u,cn,a,en.resolvedFileName),en.resolvedUsingTsExtension&&Fu(a)){let Cn=((de=jn(n,gl))==null?void 0:de.importClause)||jn(n,Kp(Nl,Il));(Cn&&!Cn.isTypeOnly||jn(n,Dd))&&Fe(u,_.A_declaration_file_cannot_be_imported_without_import_type_Did_you_mean_to_import_an_implementation_file_0_instead,Jt(L.checkDefined(r4(a))))}else if(en.resolvedUsingTsExtension&&!jL(Y,It.fileName)){let Cn=L.checkDefined(r4(a));Fe(u,_.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled,Cn)}if(rr.symbol){if(en.isExternalLibraryImport&&!jR(en.extension)&&xE(!1,u,It,un,en,a),Nn===3||Nn===99){let Cn=It.impliedNodeFormat===1&&!jn(n,Dd)||!!jn(n,Nl),Rn=jn(n,Hr=>Mh(Hr)||Il(Hr)||gl(Hr)),Br=Rn&&Mh(Rn)?(Ae=Rn.assertions)==null?void 0:Ae.assertClause:Rn?.assertClause;if(Cn&&rr.impliedNodeFormat===99&&!XS(Br))if(jn(n,Nl))Fe(u,_.Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_with_require_Use_an_ECMAScript_import_instead,a);else{let Hr,qi=Hm(It.fileName);if(qi===\".ts\"||qi===\".js\"||qi===\".tsx\"||qi===\".jsx\"){let wa=It.packageJsonScope,Xc=qi===\".ts\"?\".mts\":qi===\".js\"?\".mjs\":void 0;wa&&!wa.contents.packageJsonContent.type?Xc?Hr=da(void 0,_.To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Colon_module_to_1,Xc,vi(wa.packageDirectory,\"package.json\")):Hr=da(void 0,_.To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0,vi(wa.packageDirectory,\"package.json\")):Xc?Hr=da(void 0,_.To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_create_a_local_package_json_file_with_type_Colon_module,Xc):Hr=da(void 0,_.To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module)}Lo.add(Lh(Gn(u),u,da(Hr,_.The_current_file_is_a_CommonJS_module_whose_imports_will_produce_require_calls_however_the_referenced_file_is_an_ECMAScript_module_and_cannot_be_imported_with_require_Consider_writing_a_dynamic_import_0_call_instead,a)))}}return No(rr.symbol)}c&&Fe(u,_.File_0_is_not_a_module,rr.fileName);return}if(Ka){let Cn=JU(Ka,Rn=>Rn.pattern,a);if(Cn){let Rn=vo&&vo.get(a);return No(Rn||Cn.symbol)}}if(en&&!jR(en.extension)&&cn===void 0||cn===_.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type){if(p){let Cn=_.Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augmented;Fe(u,Cn,a,en.resolvedFileName)}else xE(ge&&!!c,u,It,un,en,a);return}if(c){if(en){let Cn=e.getProjectReferenceRedirect(en.resolvedFileName);if(Cn){Fe(u,_.Output_file_0_has_not_been_built_from_source_file_1,Cn,en.resolvedFileName);return}}if(cn)Fe(u,cn,a,en.resolvedFileName);else{let Cn=zd(a)&&!yA(a),Rn=Nn===3||Nn===99;if(!OT(Y)&&Gc(a,\".json\")&&Nn!==1&&l4(Y))Fe(u,_.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension,a);else if(un===99&&Rn&&Cn){let Br=_a(a,ni(It.path)),Hr=(xe=Ex.find(([qi,wa])=>e.fileExists(Br+qi)))==null?void 0:xe[1];Hr?Fe(u,_.Relative_import_paths_need_explicit_file_extensions_in_EcmaScript_imports_when_moduleResolution_is_node16_or_nodenext_Did_you_mean_0,a+Hr):Fe(u,_.Relative_import_paths_need_explicit_file_extensions_in_EcmaScript_imports_when_moduleResolution_is_node16_or_nodenext_Consider_adding_an_extension_to_the_import_path)}else Fe(u,c,a)}}return;function Jt(Cn){let Rn=VR(a,Cn);if(SW(ie)||un===99){let Br=Fu(a)&&jL(Y);return Rn+(Cn===\".mts\"||Cn===\".d.mts\"?Br?\".mts\":\".mjs\":Cn===\".cts\"||Cn===\".d.mts\"?Br?\".cts\":\".cjs\":Br?\".ts\":\".js\")}return Rn}}function xE(n,a,c,u,{packageId:p,resolvedFileName:h},T){var k,O;let H;if(!fl(T)&&p){let J=(O=(k=c.resolvedModules)==null?void 0:k.get(T,u))==null?void 0:O.node10Result;H=J?da(void 0,_.There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The_1_library_may_need_to_update_its_package_json_or_typings,J,J.indexOf(Wg+\"@types/\")>-1?`@types/${VL(p.name)}`:p.name):oh(p.name)?da(void 0,_.If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1,p.name,VL(p.name)):zb(p.name)?da(void 0,_.If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1,p.name,T):da(void 0,_.Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0,T,VL(p.name))}Ip(n,a,da(H,_.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type,T,h))}function oh(n){return t().has(rF(n))}function zb(n){return!!t().get(n)}function Vu(n,a){if(n?.exports){let c=Ac(n.exports.get(\"export=\"),a),u=Em(No(c),No(n));return No(u)||n}}function Em(n,a){if(!n||n===Ht||n===a||a.exports.size===1||n.flags&2097152)return n;let c=Ai(n);if(c.cjsExportMerged)return c.cjsExportMerged;let u=n.flags&33554432?n:Pb(n);return u.flags=u.flags|512,u.exports===void 0&&(u.exports=Ua()),a.exports.forEach((p,h)=>{h!==\"export=\"&&u.exports.set(h,u.exports.has(h)?A_(u.exports.get(h),p):p)}),Ai(u).cjsExportMerged=u,c.cjsExportMerged=u}function Jb(n,a,c,u){var p;let h=Vu(n,c);if(!c&&h){if(!u&&!(h.flags&1539)&&!nc(h,308)){let k=ie>=5?\"allowSyntheticDefaultImports\":\"esModuleInterop\";return Fe(a,_.This_module_can_only_be_referenced_with_ECMAScript_imports_Slashexports_by_turning_on_the_0_flag_and_referencing_its_default_export,k),h}let T=a.parent;if(gl(T)&&jA(T)||Dd(T)){let k=Dd(T)?T.arguments[0]:T.moduleSpecifier,O=zn(h),H=lIe(O,h,n,k);if(H)return Lv(h,H,T);let J=(p=n?.declarations)==null?void 0:p.find(Li),de=J&&bE(ty(k),J.impliedNodeFormat);if(d_(Y)||de){let Ae=rM(O,0);if((!Ae||!Ae.length)&&(Ae=rM(O,1)),Ae&&Ae.length||ja(O,\"default\",!0)||de){let xe=uIe(O,h,n,k);return Lv(h,xe,T)}}}}return h}function Lv(n,a,c){let u=wo(n.flags,n.escapedName);u.declarations=n.declarations?n.declarations.slice():[],u.parent=n.parent,u.links.target=n,u.links.originatingImport=c,n.valueDeclaration&&(u.valueDeclaration=n.valueDeclaration),n.constEnumOnlyModule&&(u.constEnumOnlyModule=!0),n.members&&(u.members=new Map(n.members)),n.exports&&(u.exports=new Map(n.exports));let p=w_(a);return u.links.type=ls(u,p.members,Je,Je,p.indexInfos),u}function AE(n){return n.exports.get(\"export=\")!==void 0}function sy(n){return ene(sh(n))}function I1(n){let a=sy(n),c=Vu(n);if(c!==n){let u=zn(c);CE(u)&&si(a,Jo(u))}return a}function kv(n,a){sh(n).forEach((p,h)=>{LE(h)||a(p,h)});let u=Vu(n);if(u!==n){let p=zn(u);CE(p)&&MJe(p,(h,T)=>{a(h,T)})}}function rg(n,a){let c=sh(a);if(c)return c.get(n)}function af(n,a){let c=rg(n,a);if(c)return c;let u=Vu(a);if(u===a)return;let p=zn(u);return CE(p)?ja(p,n):void 0}function CE(n){return!(n.flags&134348796||Ur(n)&1||ff(n)||po(n))}function Gd(n){return n.flags&6256?Mte(n,\"resolvedExports\"):n.flags&1536?sh(n):n.exports||q}function sh(n){let a=Ai(n);if(!a.resolvedExports){let{exports:c,typeOnlyExportStarMap:u}=wx(n);a.resolvedExports=c,a.typeOnlyExportStarMap=u}return a.resolvedExports}function Dv(n,a,c,u){!a||a.forEach((p,h)=>{if(h===\"default\")return;let T=n.get(h);if(!T)n.set(h,p),c&&u&&c.set(h,{specifierText:Qc(u.moduleSpecifier)});else if(c&&u&&T&&Ac(T)!==Ac(p)){let k=c.get(h);k.exportsWithDuplicate?k.exportsWithDuplicate.push(u):k.exportsWithDuplicate=[u]}})}function wx(n){let a=[],c,u=new Set;n=Vu(n);let p=h(n)||q;return c&&u.forEach(T=>c.delete(T)),{exports:p,typeOnlyExportStarMap:c};function h(T,k,O){if(!O&&T?.exports&&T.exports.forEach((de,Ae)=>u.add(Ae)),!(T&&T.exports&&Rf(a,T)))return;let H=new Map(T.exports),J=T.exports.get(\"__export\");if(J){let de=Ua(),Ae=new Map;if(J.declarations)for(let xe of J.declarations){let tt=Gl(xe,xe.moduleSpecifier),It=h(tt,xe,O||xe.isTypeOnly);Dv(de,It,Ae,xe)}Ae.forEach(({exportsWithDuplicate:xe},tt)=>{if(!(tt===\"export=\"||!(xe&&xe.length)||H.has(tt)))for(let It of xe)Lo.add(hr(It,_.Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity,Ae.get(tt).specifierText,Gi(tt)))}),Dv(H,de)}return k?.isTypeOnly&&(c??(c=new Map),H.forEach((de,Ae)=>c.set(Ae,k))),H}}function No(n){let a;return n&&n.mergeId&&(a=gv[n.mergeId])?a:n}function fr(n){return No(n.symbol&&zG(n.symbol))}function vd(n){return $p(n)?fr(n):void 0}function ju(n){return No(n.parent&&zG(n.parent))}function L1(n,a){let c=Gn(a),u=zo(c),p=Ai(n),h;if(p.extendedContainersByFile&&(h=p.extendedContainersByFile.get(u)))return h;if(c&&c.imports){for(let k of c.imports){if(ws(k))continue;let O=Gl(a,k,!0);!O||!ly(O,n)||(h=Sn(h,O))}if(Fn(h))return(p.extendedContainersByFile||(p.extendedContainersByFile=new Map)).set(u,h),h}if(p.extendedContainers)return p.extendedContainers;let T=e.getSourceFiles();for(let k of T){if(!Lc(k))continue;let O=fr(k);!ly(O,n)||(h=Sn(h,O))}return p.extendedContainers=h||Je}function IE(n,a,c){let u=ju(n);if(u&&!(n.flags&262144)){let T=Zi(u.declarations,h),k=a&&L1(n,a),O=cy(u,c);if(a&&u.flags&og(c)&&Rv(u,a,1920,!1))return Sn(Qi(Qi([u],T),k),O);let H=!(u.flags&og(c))&&u.flags&788968&&gs(u).flags&524288&&c===111551?DE(a,de=>Ld(de,Ae=>{if(Ae.flags&og(c)&&zn(Ae)===gs(u))return Ae})):void 0,J=H?[H,...T,u]:[...T,u];return J=Sn(J,O),J=si(J,k),J}let p=Zi(n.declarations,T=>{if(!lu(T)&&T.parent){if(sg(T.parent))return fr(T.parent);if(Tp(T.parent)&&T.parent.parent&&Vu(fr(T.parent.parent))===n)return fr(T.parent.parent)}if(_u(T)&&ar(T.parent)&&T.parent.operatorToken.kind===63&&Us(T.parent.left)&&bc(T.parent.left.expression))return Bm(T.parent.left)||ST(T.parent.left.expression)?fr(Gn(T)):(Ic(T.parent.left.expression),Rr(T.parent.left.expression).resolvedSymbol)});if(!Fn(p))return;return Zi(p,T=>ly(T,n)?T:void 0);function h(T){return u&&Rx(T,u)}}function cy(n,a){let c=!!Fn(n.declarations)&&Vo(n.declarations);if(a&111551&&c&&c.parent&&wi(c.parent)&&(rs(c)&&c===c.parent.initializer||Rd(c)&&c===c.parent.type))return fr(c.parent)}function Rx(n,a){let c=lh(n),u=c&&c.exports&&c.exports.get(\"export=\");return u&&wp(u,a)?c:void 0}function ly(n,a){if(n===ju(a))return a;let c=n.exports&&n.exports.get(\"export=\");if(c&&wp(c,a))return n;let u=Gd(n),p=u.get(a.escapedName);return p&&wp(p,a)?p:Ld(u,h=>{if(wp(h,a))return h})}function wp(n,a){if(No(Ac(No(n)))===No(Ac(No(a))))return n}function ep(n){return No(n&&(n.flags&1048576)!==0&&n.exportSymbol||n)}function ig(n,a){return!!(n.flags&111551||n.flags&2097152&&Fl(n)&111551&&(a||!nd(n)))}function wv(n){let a=n.members;for(let c of a)if(c.kind===173&&Nf(c.body))return c}function ch(n){var a;let c=new g(qe,n);return v++,c.id=v,(a=ai)==null||a.recordType(c),c}function Rp(n,a){let c=ch(n);return c.symbol=a,c}function k1(n){return new g(qe,n)}function Cc(n,a,c=0){let u=ch(n);return u.intrinsicName=a,u.objectFlags=c,u}function Bd(n,a){let c=Rp(524288,a);return c.objectFlags=n,c.members=void 0,c.properties=void 0,c.callSignatures=void 0,c.constructSignatures=void 0,c.indexInfos=void 0,c}function Tm(){return Gr(lo(fF.keys(),df))}function rd(n){return Rp(262144,n)}function LE(n){return n.charCodeAt(0)===95&&n.charCodeAt(1)===95&&n.charCodeAt(2)!==95&&n.charCodeAt(2)!==64&&n.charCodeAt(2)!==35}function uy(n){let a;return n.forEach((c,u)=>{ag(c,u)&&(a||(a=[])).push(c)}),a||Je}function ag(n,a){return!LE(a)&&ig(n)}function Ox(n){let a=uy(n),c=ane(n);return c?Qi(a,[c]):a}function of(n,a,c,u,p){let h=n;return h.members=a,h.properties=Je,h.callSignatures=c,h.constructSignatures=u,h.indexInfos=p,a!==q&&(h.properties=uy(a)),h}function ls(n,a,c,u,p){return of(Bd(16,n),a,c,u,p)}function kE(n){if(n.constructSignatures.length===0)return n;if(n.objectTypeWithoutAbstractConstructSignatures)return n.objectTypeWithoutAbstractConstructSignatures;let a=Pr(n.constructSignatures,u=>!(u.flags&4));if(n.constructSignatures===a)return n;let c=ls(n.symbol,n.members,n.callSignatures,vt(a)?a:Je,n.indexInfos);return n.objectTypeWithoutAbstractConstructSignatures=c,c.objectTypeWithoutAbstractConstructSignatures=c,c}function DE(n,a){let c;for(let u=n;u;u=u.parent){if(Qp(u)&&u.locals&&!gm(u)&&(c=a(u.locals,void 0,!0,u)))return c;switch(u.kind){case 308:if(!kd(u))break;case 264:let p=fr(u);if(c=a(p?.exports||q,void 0,!0,u))return c;break;case 260:case 228:case 261:let h;if((fr(u).members||q).forEach((T,k)=>{T.flags&788968&&(h||(h=Ua())).set(k,T)}),h&&(c=a(h,void 0,!1,u)))return c;break}}return a(Ne,void 0,!0)}function og(n){return n===111551?111551:1920}function Rv(n,a,c,u,p=new Map){if(!(n&&!wE(n)))return;let h=Ai(n),T=h.accessibleChainCache||(h.accessibleChainCache=new Map),k=DE(a,(un,Nn,en,cn)=>cn),O=`${u?0:1}|${k&&zo(k)}|${c}`;if(T.has(O))return T.get(O);let H=$a(n),J=p.get(H);J||p.set(H,J=[]);let de=DE(a,Ae);return T.set(O,de),de;function Ae(un,Nn,en){if(!Rf(J,un))return;let cn=It(un,Nn,en);return J.pop(),cn}function xe(un,Nn){return!D1(un,a,Nn)||!!Rv(un.parent,a,og(Nn),u,p)}function tt(un,Nn,en){return(n===(Nn||un)||No(n)===No(Nn||un))&&!vt(un.declarations,sg)&&(en||xe(No(un),c))}function It(un,Nn,en){return tt(un.get(n.escapedName),void 0,Nn)?[n]:Ld(un,rr=>{if(rr.flags&2097152&&rr.escapedName!==\"export=\"&&rr.escapedName!==\"default\"&&!(o4(rr)&&a&&Lc(Gn(a)))&&(!u||vt(rr.declarations,ab))&&(en?!vt(rr.declarations,cce):!0)&&(Nn||!nc(rr,278))){let Jt=wc(rr),Cn=Tn(rr,Jt,Nn);if(Cn)return Cn}if(rr.escapedName===n.escapedName&&rr.exportSymbol&&tt(No(rr.exportSymbol),void 0,Nn))return[n]})||(un===Ne?Tn(Ye,Ye,Nn):void 0)}function Tn(un,Nn,en){if(tt(un,Nn,en))return[un];let cn=Gd(Nn),rr=cn&&Ae(cn,!0);if(rr&&xe(un,og(c)))return[un].concat(rr)}}function D1(n,a,c){let u=!1;return DE(a,p=>{let h=No(p.get(n.escapedName));if(!h)return!1;if(h===n)return!0;let T=h.flags&2097152&&!nc(h,278);return h=T?wc(h):h,(T?Fl(h):h.flags)&c?(u=!0,!0):!1}),u}function wE(n){if(n.declarations&&n.declarations.length){for(let a of n.declarations)switch(a.kind){case 169:case 171:case 174:case 175:continue;default:return!1}return!0}return!1}function RE(n,a){return bd(n,a,788968,!1,!0).accessibility===0}function OE(n,a){return bd(n,a,111551,!1,!0).accessibility===0}function NE(n,a,c){return bd(n,a,c,!1,!1).accessibility===0}function PE(n,a,c,u,p,h){if(!Fn(n))return;let T,k=!1;for(let O of n){let H=Rv(O,a,u,!1);if(H){T=O;let Ae=Nx(H[0],p);if(Ae)return Ae}if(h&&vt(O.declarations,sg)){if(p){k=!0;continue}return{accessibility:0}}let J=IE(O,a,u),de=PE(J,a,c,c===O?og(u):u,p,h);if(de)return de}if(k)return{accessibility:0};if(T)return{accessibility:1,errorSymbolName:E(c,a,u),errorModuleName:T!==c?E(T,a,1920):void 0}}function dy(n,a,c,u){return bd(n,a,c,u,!0)}function bd(n,a,c,u,p){if(n&&a){let h=PE([n],a,n,c,u,p);if(h)return h;let T=mn(n.declarations,lh);if(T){let k=lh(a);if(T!==k)return{accessibility:2,errorSymbolName:E(n,a,c),errorModuleName:E(T),errorNode:Yn(a)?a:void 0}}return{accessibility:1,errorSymbolName:E(n,a,c)}}return{accessibility:0}}function lh(n){let a=jn(n,fC);return a&&fr(a)}function fC(n){return lu(n)||n.kind===308&&kd(n)}function sg(n){return b6(n)||n.kind===308&&kd(n)}function Nx(n,a){let c;if(!Ji(Pr(n.declarations,h=>h.kind!==79),u))return;return{accessibility:0,aliasesToMakeVisible:c};function u(h){var T,k;if(!qf(h)){let O=A1(h);if(O&&!Mr(O,1)&&qf(O.parent))return p(h,O);if(wi(h)&&Bc(h.parent.parent)&&!Mr(h.parent.parent,1)&&qf(h.parent.parent.parent))return p(h,h.parent.parent);if(E6(h)&&!Mr(h,1)&&qf(h.parent))return p(h,h);if(Wo(h)){if(n.flags&2097152&&Yn(h)&&((T=h.parent)==null?void 0:T.parent)&&wi(h.parent.parent)&&((k=h.parent.parent.parent)==null?void 0:k.parent)&&Bc(h.parent.parent.parent.parent)&&!Mr(h.parent.parent.parent.parent,1)&&h.parent.parent.parent.parent.parent&&qf(h.parent.parent.parent.parent.parent))return p(h,h.parent.parent.parent.parent);if(n.flags&2){let H=jn(h,Bc);return Mr(H,1)?!0:qf(H.parent)?p(h,H):!1}}return!1}return!0}function p(h,T){return a&&(Rr(h).isVisible=!0,c=xg(c,T)),!0}}function Px(n,a){let c;n.parent.kind===183||n.parent.kind===230&&!Gm(n.parent)||n.parent.kind===164?c=1160127:n.kind===163||n.kind===208||n.parent.kind===268?c=1920:c=788968;let u=Xd(n),p=zs(a,u.escapedText,c,void 0,void 0,!1);return p&&p.flags&262144&&c&788968?{accessibility:0}:!p&&kT(u)&&dy(fr(Ku(u,!1,!1)),u,c,!1).accessibility===0?{accessibility:0}:p&&Nx(p,!0)||{accessibility:1,errorSymbolName:Qc(u),errorNode:u}}function E(n,a,c,u=4,p){let h=70221824;u&2&&(h|=128),u&1&&(h|=512),u&8&&(h|=16384),u&32&&(h|=134217728),u&16&&(h|=1073741824);let T=u&4?Be.symbolToNode:Be.symbolToEntityName;return p?k(p).getText():xI(k);function k(O){let H=T(n,c,a,h),J=a?.kind===308?XK():rE(),de=a&&Gn(a);return J.writeNode(4,H,de,O),O}}function ne(n,a,c=0,u,p){return p?h(p).getText():xI(h);function h(T){let k;c&262144?k=u===1?182:181:k=u===1?177:176;let O=Be.signatureToSignatureDeclaration(n,k,a,qr(c)|70221824|512),H=_N(),J=a&&Gn(a);return H.writeNode(4,O,J,XH(T)),T}}function Ee(n,a,c=1064960,u=xR(\"\")){let p=Y.noErrorTruncation||c&1,h=Be.typeToTypeNode(n,a,qr(c)|70221824|(p?1:0));if(h===void 0)return L.fail(\"should always get typenode\");let T=n!==nt?rE():qK(),k=a&&Gn(a);T.writeNode(4,h,k,u);let O=u.getText(),H=p?x4*2:qR*2;return H&&O&&O.length>=H?O.substr(0,H-3)+\"...\":O}function Wt(n,a){let c=ci(n.symbol)?Ee(n,n.symbol.valueDeclaration):Ee(n),u=ci(a.symbol)?Ee(a,a.symbol.valueDeclaration):Ee(a);return c===u&&(c=lr(n),u=lr(a)),[c,u]}function lr(n){return Ee(n,void 0,64)}function ci(n){return n&&!!n.valueDeclaration&&ot(n.valueDeclaration)&&!Yf(n.valueDeclaration)}function qr(n=0){return n&848330091}function Ti(n){return!!n.symbol&&!!(n.symbol.flags&32)&&(n===vu(n.symbol)||!!(n.flags&524288)&&!!(Ur(n)&16777216))}function Wa(){return{typeToTypeNode:(et,he,Bn,Mn)=>a(he,Bn,Mn,or=>u(et,or)),indexInfoToIndexSignatureDeclaration:(et,he,Bn,Mn)=>a(he,Bn,Mn,or=>J(et,or,void 0)),signatureToSignatureDeclaration:(et,he,Bn,Mn,or)=>a(Bn,Mn,or,_r=>de(et,he,_r)),symbolToEntityName:(et,he,Bn,Mn,or)=>a(Bn,Mn,or,_r=>qi(et,_r,he,!1)),symbolToExpression:(et,he,Bn,Mn,or)=>a(Bn,Mn,or,_r=>wa(et,_r,he)),symbolToTypeParameterDeclarations:(et,he,Bn,Mn)=>a(he,Bn,Mn,or=>en(et,or)),symbolToParameterDeclaration:(et,he,Bn,Mn)=>a(he,Bn,Mn,or=>It(et,or)),typeParameterToDeclaration:(et,he,Bn,Mn)=>a(he,Bn,Mn,or=>tt(et,or)),symbolTableToDeclarationStatements:(et,he,Bn,Mn,or)=>a(he,Bn,Mn,_r=>Tu(et,_r,or)),symbolToNode:(et,he,Bn,Mn,or)=>a(Bn,Mn,or,_r=>n(et,_r,he))};function n(et,he,Bn){if(he.flags&1073741824){if(et.valueDeclaration){let or=sa(et.valueDeclaration);if(or&&ts(or))return or}let Mn=Ai(et).nameType;if(Mn&&Mn.flags&9216)return he.enclosingDeclaration=Mn.symbol.valueDeclaration,D.createComputedPropertyName(wa(Mn.symbol,he,Bn))}return wa(et,he,Bn)}function a(et,he,Bn,Mn){L.assert(et===void 0||(et.flags&8)===0);let or=Bn?.trackSymbol?Bn.moduleResolverHost:he&134217728?hPe(e):void 0,_r={enclosingDeclaration:et,flags:he||0,tracker:void 0,encounteredError:!1,reportedDiagnostic:!1,visitedTypes:void 0,symbolDepth:void 0,inferTypeParameters:void 0,approximateLength:0};_r.tracker=new aN(_r,Bn,or);let ua=Mn(_r);return _r.truncating&&_r.flags&1&&_r.tracker.reportTruncationError(),_r.encounteredError?void 0:ua}function c(et){return et.truncating?et.truncating:et.truncating=et.approximateLength>(et.flags&1?x4:qR)}function u(et,he){let Bn=he.flags,Mn=p(et,he);return he.flags=Bn,Mn}function p(et,he){var Bn,Mn;o&&o.throwIfCancellationRequested&&o.throwIfCancellationRequested();let or=he.flags&8388608;if(he.flags&=-8388609,!et){if(!(he.flags&262144)){he.encounteredError=!0;return}return he.approximateLength+=3,D.createKeywordTypeNode(131)}if(he.flags&536870912||(et=R_(et)),et.flags&1)return et.aliasSymbol?D.createTypeReferenceNode(Cn(et.aliasSymbol),O(et.aliasTypeArguments,he)):et===nt?rO(D.createKeywordTypeNode(131),3,\"unresolved\"):(he.approximateLength+=3,D.createKeywordTypeNode(et===$?139:131));if(et.flags&2)return D.createKeywordTypeNode(157);if(et.flags&4)return he.approximateLength+=6,D.createKeywordTypeNode(152);if(et.flags&8)return he.approximateLength+=6,D.createKeywordTypeNode(148);if(et.flags&64)return he.approximateLength+=6,D.createKeywordTypeNode(160);if(et.flags&16&&!et.aliasSymbol)return he.approximateLength+=7,D.createKeywordTypeNode(134);if(et.flags&1056){if(et.symbol.flags&8){let Xt=ju(et.symbol),er=Rn(Xt,he,788968);if(gs(Xt)===et)return er;let Sr=fc(et.symbol);return r_(Sr,0)?Un(er,D.createTypeReferenceNode(Sr,void 0)):Mh(er)?(er.isTypeOf=!0,D.createIndexedAccessTypeNode(er,D.createLiteralTypeNode(D.createStringLiteral(Sr)))):p_(er)?D.createIndexedAccessTypeNode(D.createTypeQueryNode(er.typeName),D.createLiteralTypeNode(D.createStringLiteral(Sr))):L.fail(\"Unhandled type node kind returned from `symbolToTypeNode`.\")}return Rn(et.symbol,he,788968)}if(et.flags&128)return he.approximateLength+=et.value.length+2,D.createLiteralTypeNode(Jn(D.createStringLiteral(et.value,!!(he.flags&268435456)),33554432));if(et.flags&256){let Xt=et.value;return he.approximateLength+=(\"\"+Xt).length,D.createLiteralTypeNode(Xt<0?D.createPrefixUnaryExpression(40,D.createNumericLiteral(-Xt)):D.createNumericLiteral(Xt))}if(et.flags&2048)return he.approximateLength+=j0(et.value).length+1,D.createLiteralTypeNode(D.createBigIntLiteral(et.value));if(et.flags&512)return he.approximateLength+=et.intrinsicName.length,D.createLiteralTypeNode(et.intrinsicName===\"true\"?D.createTrue():D.createFalse());if(et.flags&8192){if(!(he.flags&1048576)){if(OE(et.symbol,he.enclosingDeclaration))return he.approximateLength+=6,Rn(et.symbol,he,111551);he.tracker.reportInaccessibleUniqueSymbolError&&he.tracker.reportInaccessibleUniqueSymbolError()}return he.approximateLength+=13,D.createTypeOperatorNode(156,D.createKeywordTypeNode(153))}if(et.flags&16384)return he.approximateLength+=4,D.createKeywordTypeNode(114);if(et.flags&32768)return he.approximateLength+=9,D.createKeywordTypeNode(155);if(et.flags&65536)return he.approximateLength+=4,D.createLiteralTypeNode(D.createNull());if(et.flags&131072)return he.approximateLength+=5,D.createKeywordTypeNode(144);if(et.flags&4096)return he.approximateLength+=6,D.createKeywordTypeNode(153);if(et.flags&67108864)return he.approximateLength+=6,D.createKeywordTypeNode(149);if(uL(et))return he.flags&4194304&&(!he.encounteredError&&!(he.flags&32768)&&(he.encounteredError=!0),(Mn=(Bn=he.tracker).reportInaccessibleThisError)==null||Mn.call(Bn)),he.approximateLength+=4,D.createThisTypeNode();if(!or&&et.aliasSymbol&&(he.flags&16384||RE(et.aliasSymbol,he.enclosingDeclaration))){let Xt=O(et.aliasTypeArguments,he);return LE(et.aliasSymbol.escapedName)&&!(et.aliasSymbol.flags&32)?D.createTypeReferenceNode(D.createIdentifier(\"\"),Xt):Fn(Xt)===1&&et.aliasSymbol===$o.symbol?D.createArrayTypeNode(Xt[0]):Rn(et.aliasSymbol,he,788968,Xt)}let _r=Ur(et);if(_r&4)return L.assert(!!(et.flags&524288)),et.node?Bt(et,hn):hn(et);if(et.flags&262144||_r&3){if(et.flags&262144&&ya(he.inferTypeParameters,et)){he.approximateLength+=fc(et.symbol).length+6;let er,Sr=eu(et);if(Sr){let Dr=jxe(et,!0);Dr&&ph(Sr,Dr)||(he.approximateLength+=9,er=Sr&&u(Sr,he))}return D.createInferTypeNode(xe(et,he,er))}if(he.flags&4&&et.flags&262144&&!RE(et.symbol,he.enclosingDeclaration)){let er=Hr(et,he);return he.approximateLength+=vr(er).length,D.createTypeReferenceNode(D.createIdentifier(vr(er)),void 0)}if(et.symbol)return Rn(et.symbol,he,788968);let Xt=(et===ss||et===qs)&&F&&F.symbol?(et===qs?\"sub-\":\"super-\")+fc(F.symbol):\"?\";return D.createTypeReferenceNode(D.createIdentifier(Xt),void 0)}if(et.flags&1048576&&et.origin&&(et=et.origin),et.flags&3145728){let Xt=et.flags&1048576?Ed(et.types):et.types;if(Fn(Xt)===1)return u(Xt[0],he);let er=O(Xt,he,!0);if(er&&er.length>0)return et.flags&1048576?D.createUnionTypeNode(er):D.createIntersectionTypeNode(er);!he.encounteredError&&!(he.flags&262144)&&(he.encounteredError=!0);return}if(_r&48)return L.assert(!!(et.flags&524288)),Ct(et);if(et.flags&4194304){let Xt=et.type;he.approximateLength+=6;let er=u(Xt,he);return D.createTypeOperatorNode(141,er)}if(et.flags&134217728){let Xt=et.texts,er=et.types,Sr=D.createTemplateHead(Xt[0]),Dr=D.createNodeArray(on(er,(Ii,Bo)=>D.createTemplateLiteralTypeSpan(u(Ii,he),(Bo<er.length-1?D.createTemplateMiddle:D.createTemplateTail)(Xt[Bo+1]))));return he.approximateLength+=2,D.createTemplateLiteralType(Sr,Dr)}if(et.flags&268435456){let Xt=u(et.type,he);return Rn(et.symbol,he,788968,[Xt])}if(et.flags&8388608){let Xt=u(et.objectType,he),er=u(et.indexType,he);return he.approximateLength+=2,D.createIndexedAccessTypeNode(Xt,er)}if(et.flags&16777216)return Bt(et,Xt=>ua(Xt));if(et.flags&33554432)return u(et.baseType,he);return L.fail(\"Should be unreachable.\");function ua(Xt){let er=u(Xt.checkType,he);if(he.approximateLength+=15,he.flags&4&&Xt.root.isDistributive&&!(Xt.checkType.flags&262144)){let ys=rd(wo(262144,\"T\")),ds=Hr(ys,he),Bl=D.createTypeReferenceNode(ds);he.approximateLength+=37;let ze=N1(Xt.root.checkType,ys,Xt.mapper),dt=he.inferTypeParameters;he.inferTypeParameters=Xt.root.inferTypeParameters;let Ut=u(Oi(Xt.root.extendsType,ze),he);he.inferTypeParameters=dt;let wn=_i(Oi($r(Xt.root.node.trueType),ze)),Zn=_i(Oi($r(Xt.root.node.falseType),ze));return D.createConditionalTypeNode(er,D.createInferTypeNode(D.createTypeParameterDeclaration(void 0,D.cloneNode(Bl.typeName))),D.createConditionalTypeNode(D.createTypeReferenceNode(D.cloneNode(ds)),u(Xt.checkType,he),D.createConditionalTypeNode(Bl,Ut,wn,Zn),D.createKeywordTypeNode(144)),D.createKeywordTypeNode(144))}let Sr=he.inferTypeParameters;he.inferTypeParameters=Xt.root.inferTypeParameters;let Dr=u(Xt.extendsType,he);he.inferTypeParameters=Sr;let Ii=_i(Hv(Xt)),Bo=_i(Wv(Xt));return D.createConditionalTypeNode(er,Dr,Ii,Bo)}function _i(Xt){var er,Sr,Dr;return Xt.flags&1048576?(er=he.visitedTypes)!=null&&er.has(ru(Xt))?(he.flags&131072||(he.encounteredError=!0,(Dr=(Sr=he.tracker)==null?void 0:Sr.reportCyclicStructureError)==null||Dr.call(Sr)),h(he)):Bt(Xt,Ii=>u(Ii,he)):u(Xt,he)}function ur(Xt){return $k(Xt)&&!(vC(Xt).flags&262144)}function st(Xt){L.assert(!!(Xt.flags&524288));let er=Xt.declaration.readonlyToken?D.createToken(Xt.declaration.readonlyToken.kind):void 0,Sr=Xt.declaration.questionToken?D.createToken(Xt.declaration.questionToken.kind):void 0,Dr,Ii;if($k(Xt)){if(ur(Xt)&&he.flags&4){let dt=rd(wo(262144,\"T\")),Ut=Hr(dt,he);Ii=D.createTypeReferenceNode(Ut)}Dr=D.createTypeOperatorNode(141,Ii||u(vC(Xt),he))}else Dr=u(np(Xt),he);let Bo=xe(D_(Xt),he,Dr),ys=Xt.declaration.nameType?u(by(Xt),he):void 0,ds=u(KE(_h(Xt),!!(Pp(Xt)&4)),he),Bl=D.createMappedTypeNode(er,Bo,ys,Sr,ds,void 0);he.approximateLength+=10;let ze=Jn(Bl,1);if(ur(Xt)&&he.flags&4){let dt=Oi(eu($r(Xt.declaration.typeParameter.constraint.type))||ue,Xt.mapper);return D.createConditionalTypeNode(u(vC(Xt),he),D.createInferTypeNode(D.createTypeParameterDeclaration(void 0,D.cloneNode(Ii.typeName),dt.flags&2?void 0:u(dt,he))),ze,D.createKeywordTypeNode(144))}return ze}function Ct(Xt){var er,Sr;let Dr=Xt.id,Ii=Xt.symbol;if(Ii){let ys=Ti(Xt)?788968:111551;if(sp(Ii.valueDeclaration))return Rn(Ii,he,ys);if(Ii.flags&32&&!Da(Ii)&&!(Ii.valueDeclaration&&Yr(Ii.valueDeclaration)&&he.flags&2048&&(!sl(Ii.valueDeclaration)||dy(Ii,he.enclosingDeclaration,ys,!1).accessibility!==0))||Ii.flags&896||Bo())return Rn(Ii,he,ys);if((er=he.visitedTypes)!=null&&er.has(Dr)){let ds=fy(Xt);return ds?Rn(ds,he,788968):h(he)}else return Bt(Xt,Ft)}else{if(!!(Ur(Xt)&8388608)){let ds=Xt;if(bL(ds.node)){let Bl=no(he,ds.node);if(Bl)return Bl}return(Sr=he.visitedTypes)!=null&&Sr.has(Dr)?h(he):Bt(Xt,Ft)}return Ft(Xt)}function Bo(){var ys;let ds=!!(Ii.flags&8192)&&vt(Ii.declarations,ze=>Ca(ze)),Bl=!!(Ii.flags&16)&&(Ii.parent||mn(Ii.declarations,ze=>ze.parent.kind===308||ze.parent.kind===265));if(ds||Bl)return(!!(he.flags&4096)||((ys=he.visitedTypes)==null?void 0:ys.has(Dr)))&&(!(he.flags&8)||OE(Ii,he.enclosingDeclaration))}}function Bt(Xt,er){var Sr,Dr;let Ii=Xt.id,Bo=Ur(Xt)&16&&Xt.symbol&&Xt.symbol.flags&32,ys=Ur(Xt)&4&&Xt.node?\"N\"+zo(Xt.node):Xt.flags&16777216?\"N\"+zo(Xt.root.node):Xt.symbol?(Bo?\"+\":\"\")+$a(Xt.symbol):void 0;he.visitedTypes||(he.visitedTypes=new Set),ys&&!he.symbolDepth&&(he.symbolDepth=new Map);let ds=he.enclosingDeclaration&&Rr(he.enclosingDeclaration),Bl=`${ru(Xt)}|${he.flags}`;ds&&(ds.serializedTypes||(ds.serializedTypes=new Map));let ze=(Sr=ds?.serializedTypes)==null?void 0:Sr.get(Bl);if(ze)return ze.truncating&&(he.truncating=!0),he.approximateLength+=ze.addedLength,fn(ze.node);let dt;if(ys){if(dt=he.symbolDepth.get(ys)||0,dt>10)return h(he);he.symbolDepth.set(ys,dt+1)}he.visitedTypes.add(Ii);let Ut=he.approximateLength,wn=er(Xt),Zn=he.approximateLength-Ut;return!he.reportedDiagnostic&&!he.encounteredError&&((Dr=ds?.serializedTypes)==null||Dr.set(Bl,{node:wn,truncating:he.truncating,addedLength:Zn})),he.visitedTypes.delete(Ii),ys&&he.symbolDepth.set(ys,dt),wn;function fn(Ar){return!ws(Ar)&&ea(Ar)===Ar?Ar:it(D.cloneNode(xn(Ar,fn,Bh,sr)),Ar)}function sr(Ar,Ei,ia,Aa,Ra){return Ar&&Ar.length===0?it(D.createNodeArray(void 0,Ar.hasTrailingComma),Ar):On(Ar,Ei,ia,Aa,Ra)}}function Ft(Xt){if(uf(Xt)||Xt.containsError)return st(Xt);let er=w_(Xt);if(!er.properties.length&&!er.indexInfos.length){if(!er.callSignatures.length&&!er.constructSignatures.length)return he.approximateLength+=2,Jn(D.createTypeLiteralNode(void 0),1);if(er.callSignatures.length===1&&!er.constructSignatures.length){let ys=er.callSignatures[0];return de(ys,181,he)}if(er.constructSignatures.length===1&&!er.callSignatures.length){let ys=er.constructSignatures[0];return de(ys,182,he)}}let Sr=Pr(er.constructSignatures,ys=>!!(ys.flags&4));if(vt(Sr)){let ys=on(Sr,HE);return er.callSignatures.length+(er.constructSignatures.length-Sr.length)+er.indexInfos.length+(he.flags&2048?Oy(er.properties,Bl=>!(Bl.flags&4194304)):Fn(er.properties))&&ys.push(kE(er)),u(so(ys),he)}let Dr=he.flags;he.flags|=4194304;let Ii=Di(er);he.flags=Dr;let Bo=D.createTypeLiteralNode(Ii);return he.approximateLength+=2,Jn(Bo,he.flags&1024?0:1),Bo}function hn(Xt){let er=Ko(Xt);if(Xt.target===$o||Xt.target===jo){if(he.flags&2){let Ii=u(er[0],he);return D.createTypeReferenceNode(Xt.target===$o?\"Array\":\"ReadonlyArray\",[Ii])}let Sr=u(er[0],he),Dr=D.createArrayTypeNode(Sr);return Xt.target===$o?Dr:D.createTypeOperatorNode(146,Dr)}else if(Xt.target.objectFlags&8){if(er=Tl(er,(Sr,Dr)=>KE(Sr,!!(Xt.target.elementFlags[Dr]&2))),er.length>0){let Sr=Vv(Xt),Dr=O(er.slice(0,Sr),he);if(Dr){if(Xt.target.labeledElementDeclarations)for(let Bo=0;Bo<Dr.length;Bo++){let ys=Xt.target.elementFlags[Bo];Dr[Bo]=D.createNamedTupleMember(ys&12?D.createToken(25):void 0,D.createIdentifier(Gi(nU(Xt.target.labeledElementDeclarations[Bo]))),ys&2?D.createToken(57):void 0,ys&4?D.createArrayTypeNode(Dr[Bo]):Dr[Bo])}else for(let Bo=0;Bo<Math.min(Sr,Dr.length);Bo++){let ys=Xt.target.elementFlags[Bo];Dr[Bo]=ys&12?D.createRestTypeNode(ys&4?D.createArrayTypeNode(Dr[Bo]):Dr[Bo]):ys&2?D.createOptionalTypeNode(Dr[Bo]):Dr[Bo]}let Ii=Jn(D.createTupleTypeNode(Dr),1);return Xt.target.readonly?D.createTypeOperatorNode(146,Ii):Ii}}if(he.encounteredError||he.flags&524288){let Sr=Jn(D.createTupleTypeNode([]),1);return Xt.target.readonly?D.createTypeOperatorNode(146,Sr):Sr}he.encounteredError=!0;return}else{if(he.flags&2048&&Xt.symbol.valueDeclaration&&Yr(Xt.symbol.valueDeclaration)&&!OE(Xt.symbol,he.enclosingDeclaration))return Ct(Xt);{let Sr=Xt.target.outerTypeParameters,Dr=0,Ii;if(Sr){let Bl=Sr.length;for(;Dr<Bl;){let ze=Dr,dt=Hxe(Sr[Dr]);do Dr++;while(Dr<Bl&&Hxe(Sr[Dr])===dt);if(!GU(Sr,er,ze,Dr)){let Ut=O(er.slice(ze,Dr),he),wn=he.flags;he.flags|=16;let Zn=Rn(dt,he,788968,Ut);he.flags=wn,Ii=Ii?Un(Ii,Zn):Zn}}}let Bo;if(er.length>0){let Bl=(Xt.target.typeParameters||Je).length;Bo=O(er.slice(Dr,Bl),he)}let ys=he.flags;he.flags|=16;let ds=Rn(Xt.symbol,he,788968,Bo);return he.flags=ys,Ii?Un(Ii,ds):ds}}}function Un(Xt,er){if(Mh(Xt)){let Sr=Xt.typeArguments,Dr=Xt.qualifier;Dr&&(Re(Dr)?Sr!==PT(Dr)&&(Dr=Ug(D.cloneNode(Dr),Sr)):Sr!==PT(Dr.right)&&(Dr=D.updateQualifiedName(Dr,Dr.left,Ug(D.cloneNode(Dr.right),Sr)))),Sr=er.typeArguments;let Ii=yi(er);for(let Bo of Ii)Dr=Dr?D.createQualifiedName(Dr,Bo):Bo;return D.updateImportTypeNode(Xt,Xt.argument,Xt.assertions,Dr,Sr,Xt.isTypeOf)}else{let Sr=Xt.typeArguments,Dr=Xt.typeName;Re(Dr)?Sr!==PT(Dr)&&(Dr=Ug(D.cloneNode(Dr),Sr)):Sr!==PT(Dr.right)&&(Dr=D.updateQualifiedName(Dr,Dr.left,Ug(D.cloneNode(Dr.right),Sr))),Sr=er.typeArguments;let Ii=yi(er);for(let Bo of Ii)Dr=D.createQualifiedName(Dr,Bo);return D.updateTypeReferenceNode(Xt,Dr,Sr)}}function yi(Xt){let er=Xt.typeName,Sr=[];for(;!Re(er);)Sr.unshift(er.right),er=er.left;return Sr.unshift(er),Sr}function Di(Xt){if(c(he))return[D.createPropertySignature(void 0,\"...\",void 0,void 0)];let er=[];for(let Ii of Xt.callSignatures)er.push(de(Ii,176,he));for(let Ii of Xt.constructSignatures)Ii.flags&4||er.push(de(Ii,177,he));for(let Ii of Xt.indexInfos)er.push(J(Ii,he,Xt.objectFlags&1024?h(he):void 0));let Sr=Xt.properties;if(!Sr)return er;let Dr=0;for(let Ii of Sr){if(Dr++,he.flags&2048){if(Ii.flags&4194304)continue;bf(Ii)&24&&he.tracker.reportPrivateInBaseOfClassExpression&&he.tracker.reportPrivateInBaseOfClassExpression(Gi(Ii.escapedName))}if(c(he)&&Dr+2<Sr.length-1){er.push(D.createPropertySignature(void 0,`... ${Sr.length-Dr} more ...`,void 0,void 0)),k(Sr[Sr.length-1],he,er);break}k(Ii,he,er)}return er.length?er:void 0}}function h(et){return et.approximateLength+=3,et.flags&1?D.createKeywordTypeNode(131):D.createTypeReferenceNode(D.createIdentifier(\"...\"),void 0)}function T(et,he){var Bn;return!!(ac(et)&8192)&&(ya(he.reverseMappedStack,et)||((Bn=he.reverseMappedStack)==null?void 0:Bn[0])&&!(Ur(To(he.reverseMappedStack).links.propertyType)&16))}function k(et,he,Bn){var Mn;let or=!!(ac(et)&8192),_r=T(et,he)?Se:Gv(et),ua=he.enclosingDeclaration;if(he.enclosingDeclaration=void 0,he.tracker.canTrackSymbol&&Xk(et.escapedName))if(et.declarations){let Ct=Vo(et.declarations);if(QP(Ct))if(ar(Ct)){let Bt=sa(Ct);Bt&&Vs(Bt)&&kR(Bt.argumentExpression)&&Tn(Bt.argumentExpression,ua,he)}else Tn(Ct.name.expression,ua,he)}else he.tracker.reportNonSerializableProperty(E(et));he.enclosingDeclaration=et.valueDeclaration||((Mn=et.declarations)==null?void 0:Mn[0])||ua;let _i=Hd(et,he);he.enclosingDeclaration=ua,he.approximateLength+=fc(et).length+1;let ur=et.flags&16777216?D.createToken(57):void 0;if(et.flags&8208&&!Ey(_r).length&&!P_(et)){let Ct=xa(jc(_r,Bt=>!(Bt.flags&32768)),0);for(let Bt of Ct){let Ft=de(Bt,170,he,{name:_i,questionToken:ur});Bn.push(st(Ft))}}else{let Ct;T(et,he)?Ct=h(he):(or&&(he.reverseMappedStack||(he.reverseMappedStack=[]),he.reverseMappedStack.push(et)),Ct=_r?Bi(he,_r,et,ua):D.createKeywordTypeNode(131),or&&he.reverseMappedStack.pop());let Bt=P_(et)?[D.createToken(146)]:void 0;Bt&&(he.approximateLength+=9);let Ft=D.createPropertySignature(Bt,_i,ur,Ct);Bn.push(st(Ft))}function st(Ct){var Bt;if(vt(et.declarations,Ft=>Ft.kind===351)){let Ft=(Bt=et.declarations)==null?void 0:Bt.find(Un=>Un.kind===351),hn=Iw(Ft.comment);hn&&W0(Ct,[{kind:3,text:`*\n * `+hn.replace(/\\n/g,`\n * `)+`\n `,pos:-1,end:-1,hasTrailingNewLine:!0}])}else et.valueDeclaration&&hl(Ct,et.valueDeclaration);return Ct}}function O(et,he,Bn){if(vt(et)){if(c(he))if(Bn){if(et.length>2)return[u(et[0],he),D.createTypeReferenceNode(`... ${et.length-2} more ...`,void 0),u(et[et.length-1],he)]}else return[D.createTypeReferenceNode(\"...\",void 0)];let or=!(he.flags&64)?vae():void 0,_r=[],ua=0;for(let _i of et){if(ua++,c(he)&&ua+2<et.length-1){_r.push(D.createTypeReferenceNode(`... ${et.length-ua} more ...`,void 0));let st=u(et[et.length-1],he);st&&_r.push(st);break}he.approximateLength+=2;let ur=u(_i,he);ur&&(_r.push(ur),or&&Mle(ur)&&or.add(ur.typeName.escapedText,[_i,_r.length-1]))}if(or){let _i=he.flags;he.flags|=64,or.forEach(ur=>{if(!Fle(ur,([st],[Ct])=>H(st,Ct)))for(let[st,Ct]of ur)_r[Ct]=u(st,he)}),he.flags=_i}return _r}}function H(et,he){return et===he||!!et.symbol&&et.symbol===he.symbol||!!et.aliasSymbol&&et.aliasSymbol===he.aliasSymbol}function J(et,he,Bn){let Mn=Kse(et)||\"x\",or=u(et.keyType,he),_r=D.createParameterDeclaration(void 0,void 0,Mn,void 0,or,void 0);return Bn||(Bn=u(et.type||Se,he)),!et.type&&!(he.flags&2097152)&&(he.encounteredError=!0),he.approximateLength+=Mn.length+4,D.createIndexSignature(et.isReadonly?[D.createToken(146)]:void 0,[_r],Bn)}function de(et,he,Bn,Mn){var or,_r,ua,_i,ur;let st=Bn.flags&256;st&&(Bn.flags&=-257),Bn.approximateLength+=3;let Ct,Bt;Bn.flags&32&&et.target&&et.mapper&&et.target.typeParameters?Bt=et.target.typeParameters.map(Ii=>u(Oi(Ii,et.mapper),Bn)):Ct=et.typeParameters&&et.typeParameters.map(Ii=>tt(Ii,Bn));let Ft=Txe(et,!0)[0],hn;if(Bn.enclosingDeclaration&&et.declaration&&et.declaration!==Bn.enclosingDeclaration&&!Yn(et.declaration)&&vt(Ft)){let Ii=Rr(Bn.enclosingDeclaration).fakeScopeForSignatureDeclaration?Bn.enclosingDeclaration:void 0;L.assertOptionalNode(Ii,Va);let Bo=(or=Ii?.locals)!=null?or:Ua(),ys;for(let ds of Ft)Bo.has(ds.escapedName)||(ys=Sn(ys,ds.escapedName),Bo.set(ds.escapedName,ds));if(ys){let ds=function(){mn(ys,Bl=>Bo.delete(Bl))};var Un=ds;if(Ii)hn=ds;else{let Bl=fm.createBlock(Je);Rr(Bl).fakeScopeForSignatureDeclaration=!0,Bl.locals=Bo;let ze=Bn.enclosingDeclaration;go(Bl,ze),Bn.enclosingDeclaration=Bl,hn=()=>{Bn.enclosingDeclaration=ze,ds()}}}}let yi=(vt(Ft,Ii=>Ii!==Ft[Ft.length-1]&&!!(ac(Ii)&32768))?et.parameters:Ft).map(Ii=>It(Ii,Bn,he===173,Mn?.privateSymbolVisitor,Mn?.bundledImports)),Di=Bn.flags&33554432?void 0:Ae(et,Bn);Di&&yi.unshift(Di);let Xt,er=If(et);if(er){let Ii=er.kind===2||er.kind===3?D.createToken(129):void 0,Bo=er.kind===1||er.kind===3?Jn(D.createIdentifier(er.parameterName),33554432):D.createThisTypeNode(),ys=er.type&&u(er.type,Bn);Xt=D.createTypePredicateNode(Ii,Bo,ys)}else{let Ii=qo(et);Ii&&!(st&&Zo(Ii))?Xt=us(Bn,Ii,et,Mn?.privateSymbolVisitor,Mn?.bundledImports):st||(Xt=D.createKeywordTypeNode(131))}let Sr=Mn?.modifiers;if(he===182&&et.flags&4){let Ii=im(Sr);Sr=D.createModifiersFromModifierFlags(Ii|256)}let Dr=he===176?D.createCallSignature(Ct,yi,Xt):he===177?D.createConstructSignature(Ct,yi,Xt):he===170?D.createMethodSignature(Sr,(_r=Mn?.name)!=null?_r:D.createIdentifier(\"\"),Mn?.questionToken,Ct,yi,Xt):he===171?D.createMethodDeclaration(Sr,void 0,(ua=Mn?.name)!=null?ua:D.createIdentifier(\"\"),void 0,Ct,yi,Xt,void 0):he===173?D.createConstructorDeclaration(Sr,yi,void 0):he===174?D.createGetAccessorDeclaration(Sr,(_i=Mn?.name)!=null?_i:D.createIdentifier(\"\"),yi,Xt,void 0):he===175?D.createSetAccessorDeclaration(Sr,(ur=Mn?.name)!=null?ur:D.createIdentifier(\"\"),yi,void 0):he===178?D.createIndexSignature(Sr,yi,Xt):he===320?D.createJSDocFunctionType(yi,Xt):he===181?D.createFunctionTypeNode(Ct,yi,Xt??D.createTypeReferenceNode(D.createIdentifier(\"\"))):he===182?D.createConstructorTypeNode(Sr,Ct,yi,Xt??D.createTypeReferenceNode(D.createIdentifier(\"\"))):he===259?D.createFunctionDeclaration(Sr,void 0,Mn?.name?Ga(Mn.name,Re):D.createIdentifier(\"\"),Ct,yi,Xt,void 0):he===215?D.createFunctionExpression(Sr,void 0,Mn?.name?Ga(Mn.name,Re):D.createIdentifier(\"\"),Ct,yi,Xt,D.createBlock([])):he===216?D.createArrowFunction(Sr,Ct,yi,Xt,void 0,D.createBlock([])):L.assertNever(he);return Bt&&(Dr.typeArguments=D.createNodeArray(Bt)),hn?.(),Dr}function Ae(et,he){if(et.thisParameter)return It(et.thisParameter,he);if(et.declaration&&Yn(et.declaration)){let Bn=e6(et.declaration);if(Bn&&Bn.typeExpression)return D.createParameterDeclaration(void 0,void 0,\"this\",void 0,u($r(Bn.typeExpression),he))}}function xe(et,he,Bn){let Mn=he.flags;he.flags&=-513;let or=D.createModifiersFromModifierFlags(Jne(et)),_r=Hr(et,he),ua=jE(et),_i=ua&&u(ua,he);return he.flags=Mn,D.createTypeParameterDeclaration(or,_r,Bn,_i)}function tt(et,he,Bn=eu(et)){let Mn=Bn&&u(Bn,he);return xe(et,he,Mn)}function It(et,he,Bn,Mn,or){let _r=nc(et,166);!_r&&!Zp(et)&&(_r=nc(et,344));let ua=zn(et);_r&&eke(_r)&&(ua=gg(ua));let _i=Bi(he,ua,et,he.enclosingDeclaration,Mn,or),ur=!(he.flags&8192)&&Bn&&_r&&h_(_r)?on(dT(_r),D.cloneNode):void 0,Ct=_r&&Fm(_r)||ac(et)&32768?D.createToken(25):void 0,Bt=_r&&_r.name?_r.name.kind===79?Jn(D.cloneNode(_r.name),33554432):_r.name.kind===163?Jn(D.cloneNode(_r.name.right),33554432):yi(_r.name):fc(et),hn=_r&&Zk(_r)||ac(et)&16384?D.createToken(57):void 0,Un=D.createParameterDeclaration(ur,Ct,Bt,hn,_i,void 0);return he.approximateLength+=fc(et).length+3,Un;function yi(Di){return Xt(Di);function Xt(er){he.tracker.canTrackSymbol&&ts(er)&&Pte(er)&&Tn(er.expression,he.enclosingDeclaration,he);let Sr=xn(er,Xt,Bh,void 0,Xt);return Wo(Sr)&&(Sr=D.updateBindingElement(Sr,Sr.dotDotDotToken,Sr.propertyName,Sr.name,void 0)),ws(Sr)||(Sr=D.cloneNode(Sr)),Jn(Sr,33554433)}}}function Tn(et,he,Bn){if(!Bn.tracker.canTrackSymbol)return;let Mn=Xd(et),or=zs(Mn,Mn.escapedText,1160127,void 0,void 0,!0);or&&Bn.tracker.trackSymbol(or,he,111551)}function un(et,he,Bn,Mn){return he.tracker.trackSymbol(et,he.enclosingDeclaration,Bn),Nn(et,he,Bn,Mn)}function Nn(et,he,Bn,Mn){let or;return!(et.flags&262144)&&(he.enclosingDeclaration||he.flags&64)&&!(he.flags&134217728)?(or=L.checkDefined(ua(et,Bn,!0)),L.assert(or&&or.length>0)):or=[et],or;function ua(_i,ur,st){let Ct=Rv(_i,he.enclosingDeclaration,ur,!!(he.flags&128)),Bt;if(!Ct||D1(Ct[0],he.enclosingDeclaration,Ct.length===1?ur:og(ur))){let hn=IE(Ct?Ct[0]:_i,he.enclosingDeclaration,ur);if(Fn(hn)){Bt=hn.map(Di=>vt(Di.declarations,sg)?Jt(Di,he):void 0);let Un=hn.map((Di,Xt)=>Xt);Un.sort(Ft);let yi=Un.map(Di=>hn[Di]);for(let Di of yi){let Xt=ua(Di,og(ur),!1);if(Xt){if(Di.exports&&Di.exports.get(\"export=\")&&wp(Di.exports.get(\"export=\"),_i)){Ct=Xt;break}Ct=Xt.concat(Ct||[ly(Di,_i)||_i]);break}}}}if(Ct)return Ct;if(st||!(_i.flags&6144))return!st&&!Mn&&!!mn(_i.declarations,sg)?void 0:[_i];function Ft(hn,Un){let yi=Bt[hn],Di=Bt[Un];if(yi&&Di){let Xt=zd(Di);return zd(yi)===Xt?nN(yi)-nN(Di):Xt?-1:1}return 0}}}function en(et,he){let Bn;return sA(et).flags&524384&&(Bn=D.createNodeArray(on(yy(et),or=>tt(or,he)))),Bn}function cn(et,he,Bn){var Mn;L.assert(et&&0<=he&&he<et.length);let or=et[he],_r=$a(or);if((Mn=Bn.typeParameterSymbolList)!=null&&Mn.has(_r))return;(Bn.typeParameterSymbolList||(Bn.typeParameterSymbolList=new Set)).add(_r);let ua;if(Bn.flags&512&&he<et.length-1){let _i=or,ur=et[he+1];if(ac(ur)&1){let st=w1(_i.flags&2097152?wc(_i):_i);ua=O(on(st,Ct=>zv(Ct,ur.links.mapper)),Bn)}else ua=en(or,Bn)}return ua}function rr(et){return NS(et.objectType)?rr(et.objectType):et}function Jt(et,he,Bn){var Mn;let or=nc(et,308);if(!or){let Ct=ks(et.declarations,Bt=>Rx(Bt,et));Ct&&(or=nc(Ct,308))}if(or&&or.moduleName!==void 0)return or.moduleName;if(!or){if(he.tracker.trackReferencedAmbientModule){let Ct=Pr(et.declarations,lu);if(Fn(Ct))for(let Bt of Ct)he.tracker.trackReferencedAmbientModule(Bt,et)}if(uF.test(et.escapedName))return et.escapedName.substring(1,et.escapedName.length-1)}if(!he.enclosingDeclaration||!he.tracker.moduleResolverHost)return uF.test(et.escapedName)?et.escapedName.substring(1,et.escapedName.length-1):Gn(dH(et)).fileName;let _r=Gn(ec(he.enclosingDeclaration)),ua=Bn||_r?.impliedNodeFormat,_i=FL(_r.path,ua),ur=Ai(et),st=ur.specifierCache&&ur.specifierCache.get(_i);if(!st){let Ct=!!Ss(Y),{moduleResolverHost:Bt}=he.tracker,Ft=Ct?{...Y,baseUrl:Bt.getCommonSourceDirectory()}:Y;st=Vo(m_e(et,qe,Ft,_r,Bt,{importModuleSpecifierPreference:Ct?\"non-relative\":\"project-relative\",importModuleSpecifierEnding:Ct?\"minimal\":ua===99?\"js\":void 0},{overrideImportMode:Bn})),(Mn=ur.specifierCache)!=null||(ur.specifierCache=new Map),ur.specifierCache.set(_i,st)}return st}function Cn(et){let he=D.createIdentifier(Gi(et.escapedName));return et.parent?D.createQualifiedName(Cn(et.parent),he):he}function Rn(et,he,Bn,Mn){var or,_r,ua,_i;let ur=un(et,he,Bn,!(he.flags&16384)),st=Bn===111551;if(vt(ur[0].declarations,sg)){let Ft=ur.length>1?Bt(ur,ur.length-1,1):void 0,hn=Mn||cn(ur,0,he),Un=Gn(ec(he.enclosingDeclaration)),yi=m6(ur[0]),Di,Xt;if(($s(Y)===3||$s(Y)===99)&&yi?.impliedNodeFormat===99&&yi.impliedNodeFormat!==Un?.impliedNodeFormat&&(Di=Jt(ur[0],he,99),Xt=D.createImportTypeAssertionContainer(D.createAssertClause(D.createNodeArray([D.createAssertEntry(D.createStringLiteral(\"resolution-mode\"),D.createStringLiteral(\"import\"))]))),(_r=(or=he.tracker).reportImportTypeNodeResolutionModeOverride)==null||_r.call(or)),Di||(Di=Jt(ur[0],he)),!(he.flags&67108864)&&$s(Y)!==1&&Di.indexOf(\"/node_modules/\")>=0){let Sr=Di;if($s(Y)===3||$s(Y)===99){let Dr=Un?.impliedNodeFormat===99?1:99;Di=Jt(ur[0],he,Dr),Di.indexOf(\"/node_modules/\")>=0?Di=Sr:(Xt=D.createImportTypeAssertionContainer(D.createAssertClause(D.createNodeArray([D.createAssertEntry(D.createStringLiteral(\"resolution-mode\"),D.createStringLiteral(Dr===99?\"import\":\"require\"))]))),(_i=(ua=he.tracker).reportImportTypeNodeResolutionModeOverride)==null||_i.call(ua))}Xt||(he.encounteredError=!0,he.tracker.reportLikelyUnsafeImportRequiredError&&he.tracker.reportLikelyUnsafeImportRequiredError(Sr))}let er=D.createLiteralTypeNode(D.createStringLiteral(Di));if(he.tracker.trackExternalModuleSymbolOfImportTypeNode&&he.tracker.trackExternalModuleSymbolOfImportTypeNode(ur[0]),he.approximateLength+=Di.length+10,!Ft||Cd(Ft)){if(Ft){let Sr=Re(Ft)?Ft:Ft.right;Ug(Sr,void 0)}return D.createImportTypeNode(er,Xt,Ft,hn,st)}else{let Sr=rr(Ft),Dr=Sr.objectType.typeName;return D.createIndexedAccessTypeNode(D.createImportTypeNode(er,Xt,Dr,hn,st),Sr.indexType)}}let Ct=Bt(ur,ur.length-1,0);if(NS(Ct))return Ct;if(st)return D.createTypeQueryNode(Ct);{let Ft=Re(Ct)?Ct:Ct.right,hn=PT(Ft);return Ug(Ft,void 0),D.createTypeReferenceNode(Ct,hn)}function Bt(Ft,hn,Un){let yi=hn===Ft.length-1?Mn:cn(Ft,hn,he),Di=Ft[hn],Xt=Ft[hn-1],er;if(hn===0)he.flags|=16777216,er=_y(Di,he),he.approximateLength+=(er?er.length:0)+1,he.flags^=16777216;else if(Xt&&Gd(Xt)){let Dr=Gd(Xt);Ld(Dr,(Ii,Bo)=>{if(wp(Ii,Di)&&!Xk(Bo)&&Bo!==\"export=\")return er=Gi(Bo),!0})}if(er===void 0){let Dr=ks(Di.declarations,sa);if(Dr&&ts(Dr)&&Cd(Dr.expression)){let Ii=Bt(Ft,hn-1,Un);return Cd(Ii)?D.createIndexedAccessTypeNode(D.createParenthesizedType(D.createTypeQueryNode(Ii)),D.createTypeQueryNode(Dr.expression)):Ii}er=_y(Di,he)}if(he.approximateLength+=er.length+1,!(he.flags&16)&&Xt&&vy(Xt)&&vy(Xt).get(Di.escapedName)&&wp(vy(Xt).get(Di.escapedName),Di)){let Dr=Bt(Ft,hn-1,Un);return NS(Dr)?D.createIndexedAccessTypeNode(Dr,D.createLiteralTypeNode(D.createStringLiteral(er))):D.createIndexedAccessTypeNode(D.createTypeReferenceNode(Dr,yi),D.createLiteralTypeNode(D.createStringLiteral(er)))}let Sr=Jn(D.createIdentifier(er),33554432);if(yi&&Ug(Sr,D.createNodeArray(yi)),Sr.symbol=Di,hn>Un){let Dr=Bt(Ft,hn-1,Un);return Cd(Dr)?D.createQualifiedName(Dr,Sr):L.fail(\"Impossible construct - an export of an indexed access cannot be reachable\")}return Sr}}function Br(et,he,Bn){let Mn=zs(he.enclosingDeclaration,et,788968,void 0,et,!1);return Mn?!(Mn.flags&262144&&Mn===Bn.symbol):!1}function Hr(et,he){var Bn,Mn;if(he.flags&4&&he.typeParameterNames){let _r=he.typeParameterNames.get(ru(et));if(_r)return _r}let or=qi(et.symbol,he,788968,!0);if(!(or.kind&79))return D.createIdentifier(\"(Missing type parameter)\");if(he.flags&4){let _r=or.escapedText,ua=((Bn=he.typeParameterNamesByTextNextNameCount)==null?void 0:Bn.get(_r))||0,_i=_r;for(;((Mn=he.typeParameterNamesByText)==null?void 0:Mn.has(_i))||Br(_i,he,et);)ua++,_i=`${_r}_${ua}`;if(_i!==_r){let ur=PT(or);or=D.createIdentifier(_i),Ug(or,ur)}(he.typeParameterNamesByTextNextNameCount||(he.typeParameterNamesByTextNextNameCount=new Map)).set(_r,ua),(he.typeParameterNames||(he.typeParameterNames=new Map)).set(ru(et),or),(he.typeParameterNamesByText||(he.typeParameterNamesByText=new Set)).add(_r)}return or}function qi(et,he,Bn,Mn){let or=un(et,he,Bn);return Mn&&or.length!==1&&!he.encounteredError&&!(he.flags&65536)&&(he.encounteredError=!0),_r(or,or.length-1);function _r(ua,_i){let ur=cn(ua,_i,he),st=ua[_i];_i===0&&(he.flags|=16777216);let Ct=_y(st,he);_i===0&&(he.flags^=16777216);let Bt=Jn(D.createIdentifier(Ct),33554432);return ur&&Ug(Bt,D.createNodeArray(ur)),Bt.symbol=st,_i>0?D.createQualifiedName(_r(ua,_i-1),Bt):Bt}}function wa(et,he,Bn){let Mn=un(et,he,Bn);return or(Mn,Mn.length-1);function or(_r,ua){let _i=cn(_r,ua,he),ur=_r[ua];ua===0&&(he.flags|=16777216);let st=_y(ur,he);ua===0&&(he.flags^=16777216);let Ct=st.charCodeAt(0);if(Yw(Ct)&&vt(ur.declarations,sg))return D.createStringLiteral(Jt(ur,he));if(ua===0||HW(st,R)){let Bt=Jn(D.createIdentifier(st),33554432);return _i&&Ug(Bt,D.createNodeArray(_i)),Bt.symbol=ur,ua>0?D.createPropertyAccessExpression(or(_r,ua-1),Bt):Bt}else{Ct===91&&(st=st.substring(1,st.length-1),Ct=st.charCodeAt(0));let Bt;if(Yw(Ct)&&!(ur.flags&8)?Bt=D.createStringLiteral(l_(st).replace(/\\\\./g,Ft=>Ft.substring(1)),Ct===39):\"\"+ +st===st&&(Bt=D.createNumericLiteral(+st)),!Bt){let Ft=Jn(D.createIdentifier(st),33554432);_i&&Ug(Ft,D.createNodeArray(_i)),Ft.symbol=ur,Bt=Ft}return D.createElementAccessExpression(or(_r,ua-1),Bt)}}}function Xc(et){let he=sa(et);return!!he&&yo(he)}function _f(et){let he=sa(et);return!!(he&&yo(he)&&(he.singleQuote||!ws(he)&&na(Qc(he,!1),\"'\")))}function Hd(et,he){let Bn=!!Fn(et.declarations)&&Ji(et.declarations,Xc),Mn=!!Fn(et.declarations)&&Ji(et.declarations,_f),or=ji(et,he,Mn,Bn);if(or)return or;let _r=Gi(et.escapedName);return E4(_r,Do(Y),Mn,Bn)}function ji(et,he,Bn,Mn){let or=Ai(et).nameType;if(or){if(or.flags&384){let _r=\"\"+or.value;return!r_(_r,Do(Y))&&(Mn||!Wm(_r))?D.createStringLiteral(_r,!!Bn):Wm(_r)&&na(_r,\"-\")?D.createComputedPropertyName(D.createNumericLiteral(+_r)):E4(_r,Do(Y))}if(or.flags&8192)return D.createComputedPropertyName(wa(or.symbol,he,111551))}}function In(et){let he={...et};return he.typeParameterNames&&(he.typeParameterNames=new Map(he.typeParameterNames)),he.typeParameterNamesByText&&(he.typeParameterNamesByText=new Set(he.typeParameterNamesByText)),he.typeParameterSymbolList&&(he.typeParameterSymbolList=new Set(he.typeParameterSymbolList)),he.tracker=new aN(he,he.tracker.inner,he.tracker.moduleResolverHost),he}function qn(et,he){return et.declarations&&wr(et.declarations,Bn=>!!Cl(Bn)&&(!he||!!jn(Bn,Mn=>Mn===he)))}function Mi(et,he){return!(Ur(he)&4)||!p_(et)||Fn(et.typeArguments)>=Mp(he.target.typeParameters)}function ga(et){return Rr(et).fakeScopeForSignatureDeclaration?et.parent:et}function Bi(et,he,Bn,Mn,or,_r){if(!Ro(he)&&Mn){let ur=qn(Bn,ga(Mn));if(ur&&!Ds(ur)&&!__(ur)){let st=Cl(ur);if(ko(st,ur,he)&&Mi(st,he)){let Ct=no(et,st,or,_r);if(Ct)return Ct}}}let ua=et.flags;he.flags&8192&&he.symbol===Bn&&(!et.enclosingDeclaration||vt(Bn.declarations,ur=>Gn(ur)===Gn(et.enclosingDeclaration)))&&(et.flags|=1048576);let _i=u(he,et);return et.flags=ua,_i}function ko(et,he,Bn){let Mn=$r(et);return Mn===Bn?!0:ha(he)&&he.questionToken?Df(Bn,524288)===Mn:!1}function us(et,he,Bn,Mn,or){if(!Ro(he)&&et.enclosingDeclaration){let _r=Bn.declaration&&B_(Bn.declaration),ua=ga(et.enclosingDeclaration);if(!!jn(_r,_i=>_i===ua)&&_r){let _i=$r(_r);if((_i.flags&262144&&_i.isThisType?Oi(_i,Bn.mapper):_i)===he&&Mi(_r,he)){let st=no(et,_r,Mn,or);if(st)return st}}}return u(he,et)}function Xs(et,he,Bn){let Mn=!1,or=Xd(et);if(Yn(et)&&(ST(or)||Bm(or.parent)||Yu(or.parent)&&RH(or.parent.left)&&ST(or.parent.right)))return Mn=!0,{introducesError:Mn,node:et};let _r=uc(or,67108863,!0,!0);if(_r&&(dy(_r,he.enclosingDeclaration,67108863,!1).accessibility!==0?Mn=!0:(he.tracker.trackSymbol(_r,he.enclosingDeclaration,67108863),Bn?.(_r)),Re(et))){let ua=gs(_r),_i=_r.flags&262144&&!RE(ua.symbol,he.enclosingDeclaration)?Hr(ua,he):D.cloneNode(et);return _i.symbol=_r,{introducesError:Mn,node:Jn(Ir(_i,et),33554432)}}return{introducesError:Mn,node:et}}function no(et,he,Bn,Mn){o&&o.throwIfCancellationRequested&&o.throwIfCancellationRequested();let or=!1,_r=Gn(he),ua=$e(he,_i,bi);if(or)return;return ua===he?it(D.cloneNode(he),he):ua;function _i(ur){if(Kue(ur)||ur.kind===322)return D.createKeywordTypeNode(131);if(que(ur))return D.createKeywordTypeNode(157);if(S2(ur))return D.createUnionTypeNode([$e(ur.type,_i,bi),D.createLiteralTypeNode(D.createNull())]);if(Uz(ur))return D.createUnionTypeNode([$e(ur.type,_i,bi),D.createKeywordTypeNode(155)]);if(m3(ur))return $e(ur.type,_i);if(h3(ur))return D.createArrayTypeNode($e(ur.type,_i,bi));if(kL(ur))return D.createTypeLiteralNode(on(ur.jsDocPropertyTags,Ft=>{let hn=Re(Ft.name)?Ft.name:Ft.name.right,Un=Vc($r(ur),hn.escapedText),yi=Un&&Ft.typeExpression&&$r(Ft.typeExpression.type)!==Un?u(Un,et):void 0;return D.createPropertySignature(void 0,hn,Ft.isBracketed||Ft.typeExpression&&Uz(Ft.typeExpression.type)?D.createToken(57):void 0,yi||Ft.typeExpression&&$e(Ft.typeExpression.type,_i,bi)||D.createKeywordTypeNode(131))}));if(p_(ur)&&Re(ur.typeName)&&ur.typeName.escapedText===\"\")return Ir(D.createKeywordTypeNode(131),ur);if((Vg(ur)||p_(ur))&&U6(ur))return D.createTypeLiteralNode([D.createIndexSignature(void 0,[D.createParameterDeclaration(void 0,void 0,\"x\",void 0,$e(ur.typeArguments[0],_i,bi))],$e(ur.typeArguments[1],_i,bi))]);if(x2(ur))if(HA(ur)){let Ft;return D.createConstructorTypeNode(void 0,On(ur.typeParameters,_i,_c),Zi(ur.parameters,(hn,Un)=>hn.name&&Re(hn.name)&&hn.name.escapedText===\"new\"?(Ft=hn.type,void 0):D.createParameterDeclaration(void 0,st(hn),Ct(hn,Un),hn.questionToken,$e(hn.type,_i,bi),void 0)),$e(Ft||ur.type,_i,bi)||D.createKeywordTypeNode(131))}else return D.createFunctionTypeNode(On(ur.typeParameters,_i,_c),on(ur.parameters,(Ft,hn)=>D.createParameterDeclaration(void 0,st(Ft),Ct(Ft,hn),Ft.questionToken,$e(Ft.type,_i,bi),void 0)),$e(ur.type,_i,bi)||D.createKeywordTypeNode(131));if(p_(ur)&&Xw(ur)&&(!Mi(ur,$r(ur))||Yxe(ur)||Ht===qx(ur,788968,!0)))return Ir(u($r(ur),et),ur);if(ib(ur)){let Ft=Rr(ur).resolvedSymbol;return Xw(ur)&&Ft&&(!ur.isTypeOf&&!(Ft.flags&788968)||!(Fn(ur.typeArguments)>=Mp(yy(Ft))))?Ir(u($r(ur),et),ur):D.updateImportTypeNode(ur,D.updateLiteralTypeNode(ur.argument,Bt(ur,ur.argument.literal)),ur.assertions,ur.qualifier,On(ur.typeArguments,_i,bi),ur.isTypeOf)}if(Cd(ur)||bc(ur)){let{introducesError:Ft,node:hn}=Xs(ur,et,Bn);if(or=or||Ft,hn!==ur)return hn}return _r&&m2(ur)&&Gs(_r,ur.pos).line===Gs(_r,ur.end).line&&Jn(ur,1),xn(ur,_i,Bh);function st(Ft){return Ft.dotDotDotToken||(Ft.type&&h3(Ft.type)?D.createToken(25):void 0)}function Ct(Ft,hn){return Ft.name&&Re(Ft.name)&&Ft.name.escapedText===\"this\"?\"this\":st(Ft)?\"args\":`arg${hn}`}function Bt(Ft,hn){if(Mn){if(et.tracker&&et.tracker.moduleResolverHost){let Un=qie(Ft);if(Un){let Di={getCanonicalFileName:Dl(!!e.useCaseSensitiveFileNames),getCurrentDirectory:()=>et.tracker.moduleResolverHost.getCurrentDirectory(),getCommonSourceDirectory:()=>et.tracker.moduleResolverHost.getCommonSourceDirectory()},Xt=Z6(Di,Un);return D.createStringLiteral(Xt)}}}else if(et.tracker&&et.tracker.trackExternalModuleSymbolOfImportTypeNode){let Un=ah(hn,hn,void 0);Un&&et.tracker.trackExternalModuleSymbolOfImportTypeNode(Un)}return hn}}}function Tu(et,he,Bn){let Mn=M_(D.createPropertyDeclaration,171,!0),or=M_((bt,cr,oi,Jr)=>D.createPropertySignature(bt,cr,oi,Jr),170,!1),_r=he.enclosingDeclaration,ua=[],_i=new Set,ur=[],st=he;he={...st,usedSymbolNames:new Set(st.usedSymbolNames),remappedSymbolNames:new Map,tracker:void 0};let Ct={...st.tracker.inner,trackSymbol:(bt,cr,oi)=>{var Jr;if(dy(bt,cr,oi,!1).accessibility===0){let Po=Nn(bt,he,oi);bt.flags&4||ds(Po[0])}else if((Jr=st.tracker.inner)!=null&&Jr.trackSymbol)return st.tracker.inner.trackSymbol(bt,cr,oi);return!1}};he.tracker=new aN(he,Ct,st.tracker.moduleResolverHost),Ld(et,(bt,cr)=>{let oi=Gi(cr);sd(bt,oi)});let Bt=!Bn,Ft=et.get(\"export=\");return Ft&&et.size>1&&Ft.flags&2097152&&(et=Ua(),et.set(\"export=\",Ft)),Ii(et),er(ua);function hn(bt){return!!bt&&bt.kind===79}function Un(bt){return Bc(bt)?Pr(on(bt.declarationList.declarations,sa),hn):Pr([sa(bt)],hn)}function yi(bt){let cr=wr(bt,pc),oi=Yc(bt,Tc),Jr=oi!==-1?bt[oi]:void 0;if(Jr&&cr&&cr.isExportEquals&&Re(cr.expression)&&Re(Jr.name)&&vr(Jr.name)===vr(cr.expression)&&Jr.body&&Tp(Jr.body)){let Xr=Pr(bt,Ui=>!!(uu(Ui)&1)),Po=Jr.name,va=Jr.body;if(Fn(Xr)&&(Jr=D.updateModuleDeclaration(Jr,Jr.modifiers,Jr.name,va=D.updateModuleBlock(va,D.createNodeArray([...Jr.body.statements,D.createExportDeclaration(void 0,!1,D.createNamedExports(on(Uo(Xr,Ui=>Un(Ui)),Ui=>D.createExportSpecifier(!1,void 0,Ui))),void 0)]))),bt=[...bt.slice(0,oi),Jr,...bt.slice(oi+1)]),!wr(bt,Ui=>Ui!==Jr&&Aw(Ui,Po))){ua=[];let Ui=!vt(va.statements,Eo=>Mr(Eo,1)||pc(Eo)||Il(Eo));mn(va.statements,Eo=>{ze(Eo,Ui?1:0)}),bt=[...Pr(bt,Eo=>Eo!==Jr&&Eo!==cr),...ua]}}return bt}function Di(bt){let cr=Pr(bt,Jr=>Il(Jr)&&!Jr.moduleSpecifier&&!!Jr.exportClause&&m_(Jr.exportClause));Fn(cr)>1&&(bt=[...Pr(bt,Xr=>!Il(Xr)||!!Xr.moduleSpecifier||!Xr.exportClause),D.createExportDeclaration(void 0,!1,D.createNamedExports(Uo(cr,Xr=>Ga(Xr.exportClause,m_).elements)),void 0)]);let oi=Pr(bt,Jr=>Il(Jr)&&!!Jr.moduleSpecifier&&!!Jr.exportClause&&m_(Jr.exportClause));if(Fn(oi)>1){let Jr=$C(oi,Xr=>yo(Xr.moduleSpecifier)?\">\"+Xr.moduleSpecifier.text:\">\");if(Jr.length!==oi.length)for(let Xr of Jr)Xr.length>1&&(bt=[...Pr(bt,Po=>Xr.indexOf(Po)===-1),D.createExportDeclaration(void 0,!1,D.createNamedExports(Uo(Xr,Po=>Ga(Po.exportClause,m_).elements)),Xr[0].moduleSpecifier)])}return bt}function Xt(bt){let cr=Yc(bt,oi=>Il(oi)&&!oi.moduleSpecifier&&!oi.assertClause&&!!oi.exportClause&&m_(oi.exportClause));if(cr>=0){let oi=bt[cr],Jr=Zi(oi.exportClause.elements,Xr=>{if(!Xr.propertyName){let Po=HD(bt),va=Pr(Po,Ui=>Aw(bt[Ui],Xr.name));if(Fn(va)&&Ji(va,Ui=>zR(bt[Ui]))){for(let Ui of va)bt[Ui]=Sr(bt[Ui]);return}}return Xr});Fn(Jr)?bt[cr]=D.updateExportDeclaration(oi,oi.modifiers,oi.isTypeOnly,D.updateNamedExports(oi.exportClause,Jr),oi.moduleSpecifier,oi.assertClause):y0(bt,cr)}return bt}function er(bt){return bt=yi(bt),bt=Di(bt),bt=Xt(bt),_r&&(Li(_r)&&kd(_r)||Tc(_r))&&(!vt(bt,Ow)||!yse(bt)&&vt(bt,l6))&&bt.push(EO(D)),bt}function Sr(bt){let cr=(uu(bt)|1)&-3;return D.updateModifiers(bt,cr)}function Dr(bt){let cr=uu(bt)&-2;return D.updateModifiers(bt,cr)}function Ii(bt,cr,oi){cr||ur.push(new Map),bt.forEach(Jr=>{Bo(Jr,!1,!!oi)}),cr||(ur[ur.length-1].forEach(Jr=>{Bo(Jr,!0,!!oi)}),ur.pop())}function Bo(bt,cr,oi){let Jr=No(bt);if(_i.has($a(Jr)))return;if(_i.add($a(Jr)),!cr||!!Fn(bt.declarations)&&vt(bt.declarations,Po=>!!jn(Po,va=>va===_r))){let Po=he;he=In(he),ys(bt,cr,oi),he.reportedDiagnostic&&(st.reportedDiagnostic=he.reportedDiagnostic),he=Po}}function ys(bt,cr,oi){var Jr,Xr,Po,va;let Ui=Gi(bt.escapedName),Eo=bt.escapedName===\"default\";if(cr&&!(he.flags&131072)&&_S(Ui)&&!Eo){he.encounteredError=!0;return}let Xo=Eo&&!!(bt.flags&-113||bt.flags&16&&Fn(Jo(zn(bt))))&&!(bt.flags&2097152),Rc=!Xo&&!cr&&_S(Ui)&&!Eo;(Xo||Rc)&&(cr=!0);let rl=(cr?0:1)|(Eo&&!Xo?1024:0),Wd=bt.flags&1536&&bt.flags&7&&bt.escapedName!==\"export=\",Vl=Wd&&Ul(zn(bt),bt);if((bt.flags&8208||Vl)&&Ar(zn(bt),bt,sd(bt,Ui),rl),bt.flags&524288&&dt(bt,Ui,rl),bt.flags&7&&bt.escapedName!==\"export=\"&&!(bt.flags&4194304)&&!(bt.flags&32)&&!(bt.flags&8192)&&!Vl)if(oi)as(bt)&&(Rc=!1,Xo=!1);else{let bs=zn(bt),dc=sd(bt,Ui);if(!(bt.flags&16)&&Ul(bs,bt))Ar(bs,bt,dc,rl);else{let Tg=bt.flags&2?RC(bt)?2:1:((Jr=bt.parent)==null?void 0:Jr.valueDeclaration)&&Li((Xr=bt.parent)==null?void 0:Xr.valueDeclaration)?2:void 0,wm=Xo||!(bt.flags&4)?dc:uA(dc,bt),Rm=bt.declarations&&wr(bt.declarations,Ry=>wi(Ry));Rm&&pu(Rm.parent)&&Rm.parent.declarations.length===1&&(Rm=Rm.parent.parent);let j1=(Po=bt.declarations)==null?void 0:Po.find(br);if(j1&&ar(j1.parent)&&Re(j1.parent.right)&&((va=bs.symbol)==null?void 0:va.valueDeclaration)&&Li(bs.symbol.valueDeclaration)){let Ry=dc===j1.parent.right.escapedText?void 0:j1.parent.right;ze(D.createExportDeclaration(void 0,!1,D.createNamedExports([D.createExportSpecifier(!1,Ry,dc)])),0),he.tracker.trackSymbol(bs.symbol,he.enclosingDeclaration,111551)}else{let Ry=it(D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(wm,void 0,Bi(he,bs,bt,_r,ds,Bn))],Tg)),Rm);ze(Ry,wm!==dc?rl&-2:rl),wm!==dc&&!cr&&(ze(D.createExportDeclaration(void 0,!1,D.createNamedExports([D.createExportSpecifier(!1,wm,dc)])),0),Rc=!1,Xo=!1)}}}if(bt.flags&384&&sr(bt,Ui,rl),bt.flags&32&&(bt.flags&4&&bt.valueDeclaration&&ar(bt.valueDeclaration.parent)&&_u(bt.valueDeclaration.parent.right)?mo(bt,sd(bt,Ui),rl):Zr(bt,sd(bt,Ui),rl)),(bt.flags&1536&&(!Wd||Zn(bt))||Vl)&&fn(bt,Ui,rl),bt.flags&64&&!(bt.flags&32)&&Ut(bt,Ui,rl),bt.flags&2097152&&mo(bt,sd(bt,Ui),rl),bt.flags&4&&bt.escapedName===\"export=\"&&as(bt),bt.flags&8388608&&bt.declarations)for(let bs of bt.declarations){let dc=Gl(bs,bs.moduleSpecifier);!dc||ze(D.createExportDeclaration(void 0,bs.isTypeOnly,void 0,D.createStringLiteral(Jt(dc,he))),0)}Xo?ze(D.createExportAssignment(void 0,!1,D.createIdentifier(sd(bt,Ui))),0):Rc&&ze(D.createExportDeclaration(void 0,!1,D.createNamedExports([D.createExportSpecifier(!1,sd(bt,Ui),Ui)])),0)}function ds(bt){if(vt(bt.declarations,IT))return;L.assertIsDefined(ur[ur.length-1]),uA(Gi(bt.escapedName),bt);let cr=!!(bt.flags&2097152)&&!vt(bt.declarations,oi=>!!jn(oi,Il)||qm(oi)||Nl(oi)&&!um(oi.moduleReference));ur[cr?0:ur.length-1].set($a(bt),bt)}function Bl(bt){return Li(bt)&&(kd(bt)||Pf(bt))||lu(bt)&&!mp(bt)}function ze(bt,cr){if(h_(bt)){let oi=0,Jr=he.enclosingDeclaration&&(Mf(he.enclosingDeclaration)?Gn(he.enclosingDeclaration):he.enclosingDeclaration);cr&1&&Jr&&(Bl(Jr)||Tc(Jr))&&zR(bt)&&(oi|=1),Bt&&!(oi&1)&&(!Jr||!(Jr.flags&16777216))&&(hb(bt)||Bc(bt)||Jc(bt)||sl(bt)||Tc(bt))&&(oi|=2),cr&1024&&(sl(bt)||ku(bt)||Jc(bt))&&(oi|=1024),oi&&(bt=D.updateModifiers(bt,oi|uu(bt)))}ua.push(bt)}function dt(bt,cr,oi){var Jr;let Xr=Kb(bt),Po=Ai(bt).typeParameters,va=on(Po,Wd=>tt(Wd,he)),Ui=(Jr=bt.declarations)==null?void 0:Jr.find(Mf),Eo=Iw(Ui?Ui.comment||Ui.parent.comment:void 0),Xo=he.flags;he.flags|=8388608;let Rc=he.enclosingDeclaration;he.enclosingDeclaration=Ui;let rl=Ui&&Ui.typeExpression&&VT(Ui.typeExpression)&&no(he,Ui.typeExpression.type,ds,Bn)||u(Xr,he);ze(W0(D.createTypeAliasDeclaration(void 0,sd(bt,cr),va,rl),Eo?[{kind:3,text:`*\n * `+Eo.replace(/\\n/g,`\n * `)+`\n `,pos:-1,end:-1,hasTrailingNewLine:!0}]:[]),oi),he.flags=Xo,he.enclosingDeclaration=Rc}function Ut(bt,cr,oi){let Jr=vu(bt),Xr=yy(bt),Po=on(Xr,Vl=>tt(Vl,he)),va=_o(Jr),Ui=Fn(va)?so(va):void 0,Eo=Uo(Jo(Jr),Vl=>Dm(Vl,Ui)),Xo=$v(0,Jr,Ui,176),Rc=$v(1,Jr,Ui,177),rl=V1(Jr,Ui),Wd=Fn(va)?[D.createHeritageClause(94,Zi(va,Vl=>Hp(Vl,111551)))]:void 0;ze(D.createInterfaceDeclaration(void 0,sd(bt,cr),Po,Wd,[...rl,...Rc,...Xo,...Eo]),oi)}function wn(bt){return bt.exports?Pr(lo(bt.exports.values()),Aa):[]}function Zn(bt){return Ji(wn(bt),cr=>!(Fl(Ac(cr))&111551))}function fn(bt,cr,oi){let Jr=wn(bt),Xr=qD(Jr,Ui=>Ui.parent&&Ui.parent===bt?\"real\":\"merged\"),Po=Xr.get(\"real\")||Je,va=Xr.get(\"merged\")||Je;if(Fn(Po)){let Ui=sd(bt,cr);ia(Po,Ui,oi,!!(bt.flags&67108880))}if(Fn(va)){let Ui=Gn(he.enclosingDeclaration),Eo=sd(bt,cr),Xo=D.createModuleBlock([D.createExportDeclaration(void 0,!1,D.createNamedExports(Zi(Pr(va,Rc=>Rc.escapedName!==\"export=\"),Rc=>{var rl,Wd;let Vl=Gi(Rc.escapedName),bs=sd(Rc,Vl),dc=Rc.declarations&&Uu(Rc);if(Ui&&(dc?Ui!==Gn(dc):!vt(Rc.declarations,Rm=>Gn(Rm)===Ui))){(Wd=(rl=he.tracker)==null?void 0:rl.reportNonlocalAugmentation)==null||Wd.call(rl,Ui,bt,Rc);return}let Tg=dc&&I_(dc,!0);ds(Tg||Rc);let wm=Tg?sd(Tg,Gi(Tg.escapedName)):bs;return D.createExportSpecifier(!1,Vl===wm?void 0:wm,Vl)})))]);ze(D.createModuleDeclaration(void 0,D.createIdentifier(Eo),Xo,16),0)}}function sr(bt,cr,oi){ze(D.createEnumDeclaration(D.createModifiersFromModifierFlags(gie(bt)?2048:0),sd(bt,cr),on(Pr(Jo(zn(bt)),Jr=>!!(Jr.flags&8)),Jr=>{let Xr=Jr.declarations&&Jr.declarations[0]&&q0(Jr.declarations[0])?zie(Jr.declarations[0]):void 0;return D.createEnumMember(Gi(Jr.escapedName),Xr===void 0?void 0:typeof Xr==\"string\"?D.createStringLiteral(Xr):D.createNumericLiteral(Xr))})),oi)}function Ar(bt,cr,oi,Jr){let Xr=xa(bt,0);for(let Po of Xr){let va=de(Po,259,he,{name:D.createIdentifier(oi),privateSymbolVisitor:ds,bundledImports:Bn});ze(it(va,Ei(Po)),Jr)}if(!(cr.flags&1536&&!!cr.exports&&!!cr.exports.size)){let Po=Pr(Jo(bt),Aa);ia(Po,oi,Jr,!0)}}function Ei(bt){if(bt.declaration&&bt.declaration.parent){if(ar(bt.declaration.parent)&&ic(bt.declaration.parent)===5)return bt.declaration.parent;if(wi(bt.declaration.parent)&&bt.declaration.parent.parent)return bt.declaration.parent.parent}return bt.declaration}function ia(bt,cr,oi,Jr){if(Fn(bt)){let Po=qD(bt,bs=>!Fn(bs.declarations)||vt(bs.declarations,dc=>Gn(dc)===Gn(he.enclosingDeclaration))?\"local\":\"remote\").get(\"local\")||Je,va=fm.createModuleDeclaration(void 0,D.createIdentifier(cr),D.createModuleBlock([]),16);go(va,_r),va.locals=Ua(bt),va.symbol=bt[0].parent;let Ui=ua;ua=[];let Eo=Bt;Bt=!1;let Xo={...he,enclosingDeclaration:va},Rc=he;he=Xo,Ii(Ua(Po),Jr,!0),he=Rc,Bt=Eo;let rl=ua;ua=Ui;let Wd=on(rl,bs=>pc(bs)&&!bs.isExportEquals&&Re(bs.expression)?D.createExportDeclaration(void 0,!1,D.createNamedExports([D.createExportSpecifier(!1,bs.expression,D.createIdentifier(\"default\"))])):bs),Vl=Ji(Wd,bs=>Mr(bs,1))?on(Wd,Dr):Wd;va=D.updateModuleDeclaration(va,va.modifiers,va.name,D.createModuleBlock(Vl)),ze(va,oi)}}function Aa(bt){return!!(bt.flags&2887656)||!(bt.flags&4194304||bt.escapedName===\"prototype\"||bt.valueDeclaration&&Ca(bt.valueDeclaration)&&Yr(bt.valueDeclaration.parent))}function Ra(bt){let cr=Zi(bt,oi=>{let Jr=he.enclosingDeclaration;he.enclosingDeclaration=oi;let Xr=oi.expression;if(bc(Xr)){if(Re(Xr)&&vr(Xr)===\"\")return Po(void 0);let va;if({introducesError:va,node:Xr}=Xs(Xr,he,ds),va)return Po(void 0)}return Po(D.createExpressionWithTypeArguments(Xr,on(oi.typeArguments,va=>no(he,va,ds,Bn)||u($r(va),he))));function Po(va){return he.enclosingDeclaration=Jr,va}});if(cr.length===bt.length)return cr}function Zr(bt,cr,oi){var Jr,Xr;let Po=(Jr=bt.declarations)==null?void 0:Jr.find(Yr),va=he.enclosingDeclaration;he.enclosingDeclaration=Po||va;let Ui=yy(bt),Eo=on(Ui,cp=>tt(cp,he)),Xo=vu(bt),Rc=_o(Xo),rl=Po&&KA(Po),Wd=rl&&Ra(rl)||Zi(Ci(Xo),lA),Vl=zn(bt),bs=!!((Xr=Vl.symbol)!=null&&Xr.valueDeclaration)&&Yr(Vl.symbol.valueDeclaration),dc=bs?Wr(Vl):Se,Tg=[...Fn(Rc)?[D.createHeritageClause(94,on(Rc,cp=>qC(cp,dc,cr)))]:[],...Fn(Wd)?[D.createHeritageClause(117,Wd)]:[]],wm=Qtt(Xo,Rc,Jo(Xo)),Rm=Pr(wm,cp=>{let XC=cp.valueDeclaration;return!!XC&&!(zl(XC)&&pi(XC.name))}),Ry=vt(wm,cp=>{let XC=cp.valueDeclaration;return!!XC&&zl(XC)&&pi(XC.name)})?[D.createPropertyDeclaration(void 0,D.createPrivateIdentifier(\"#private\"),void 0,void 0,void 0)]:Je,tae=Uo(Rm,cp=>Mn(cp,!1,Rc[0])),nae=Uo(Pr(Jo(Vl),cp=>!(cp.flags&4194304)&&cp.escapedName!==\"prototype\"&&!Aa(cp)),cp=>Mn(cp,!0,dc)),pit=!bs&&!!bt.valueDeclaration&&Yn(bt.valueDeclaration)&&!vt(xa(Vl,1))?[D.createConstructorDeclaration(D.createModifiersFromModifierFlags(8),[],void 0)]:$v(1,Vl,dc,173),mit=V1(Xo,Rc[0]);he.enclosingDeclaration=va,ze(it(D.createClassDeclaration(void 0,cr,Eo,Tg,[...mit,...nae,...pit,...tae,...Ry]),bt.declarations&&Pr(bt.declarations,cp=>sl(cp)||_u(cp))[0]),oi)}function Oa(bt){return ks(bt,cr=>{if($u(cr)||Mu(cr))return vr(cr.propertyName||cr.name);if(ar(cr)||pc(cr)){let oi=pc(cr)?cr.expression:cr.right;if(br(oi))return vr(oi.name)}if(Zh(cr)){let oi=sa(cr);if(oi&&Re(oi))return vr(oi)}})}function mo(bt,cr,oi){var Jr,Xr,Po,va,Ui;let Eo=Uu(bt);if(!Eo)return L.fail();let Xo=No(I_(Eo,!0));if(!Xo)return;let Rc=II(Xo)&&Oa(bt.declarations)||Gi(Xo.escapedName);Rc===\"export=\"&&(d_(Y)||Y.allowSyntheticDefaultImports)&&(Rc=\"default\");let rl=sd(Xo,Rc);switch(ds(Xo),Eo.kind){case 205:if(((Xr=(Jr=Eo.parent)==null?void 0:Jr.parent)==null?void 0:Xr.kind)===257){let bs=Jt(Xo.parent||Xo,he),{propertyName:dc}=Eo;ze(D.createImportDeclaration(void 0,D.createImportClause(!1,void 0,D.createNamedImports([D.createImportSpecifier(!1,dc&&Re(dc)?D.createIdentifier(vr(dc)):void 0,D.createIdentifier(cr))])),D.createStringLiteral(bs),void 0),0);break}L.failBadSyntaxKind(((Po=Eo.parent)==null?void 0:Po.parent)||Eo,\"Unhandled binding element grandparent kind in declaration serialization\");break;case 300:((Ui=(va=Eo.parent)==null?void 0:va.parent)==null?void 0:Ui.kind)===223&&co(Gi(bt.escapedName),rl);break;case 257:if(br(Eo.initializer)){let bs=Eo.initializer,dc=D.createUniqueName(cr),Tg=Jt(Xo.parent||Xo,he);ze(D.createImportEqualsDeclaration(void 0,!1,dc,D.createExternalModuleReference(D.createStringLiteral(Tg))),0),ze(D.createImportEqualsDeclaration(void 0,!1,D.createIdentifier(cr),D.createQualifiedName(dc,bs.name)),oi);break}case 268:if(Xo.escapedName===\"export=\"&&vt(Xo.declarations,bs=>Li(bs)&&Pf(bs))){as(bt);break}let Wd=!(Xo.flags&512)&&!wi(Eo);ze(D.createImportEqualsDeclaration(void 0,!1,D.createIdentifier(cr),Wd?qi(Xo,he,67108863,!1):D.createExternalModuleReference(D.createStringLiteral(Jt(Xo,he)))),Wd?oi:0);break;case 267:ze(D.createNamespaceExportDeclaration(vr(Eo.name)),0);break;case 270:{let bs=Jt(Xo.parent||Xo,he),dc=Bn?D.createStringLiteral(bs):Eo.parent.moduleSpecifier;ze(D.createImportDeclaration(void 0,D.createImportClause(!1,D.createIdentifier(cr),void 0),dc,Eo.parent.assertClause),0);break}case 271:{let bs=Jt(Xo.parent||Xo,he),dc=Bn?D.createStringLiteral(bs):Eo.parent.parent.moduleSpecifier;ze(D.createImportDeclaration(void 0,D.createImportClause(!1,void 0,D.createNamespaceImport(D.createIdentifier(cr))),dc,Eo.parent.parent.assertClause),0);break}case 277:ze(D.createExportDeclaration(void 0,!1,D.createNamespaceExport(D.createIdentifier(cr)),D.createStringLiteral(Jt(Xo,he))),0);break;case 273:{let bs=Jt(Xo.parent||Xo,he),dc=Bn?D.createStringLiteral(bs):Eo.parent.parent.parent.moduleSpecifier;ze(D.createImportDeclaration(void 0,D.createImportClause(!1,void 0,D.createNamedImports([D.createImportSpecifier(!1,cr!==Rc?D.createIdentifier(Rc):void 0,D.createIdentifier(cr))])),dc,Eo.parent.parent.parent.assertClause),0);break}case 278:let Vl=Eo.parent.parent.moduleSpecifier;co(Gi(bt.escapedName),Vl?Rc:rl,Vl&&es(Vl)?D.createStringLiteral(Vl.text):void 0);break;case 274:as(bt);break;case 223:case 208:case 209:bt.escapedName===\"default\"||bt.escapedName===\"export=\"?as(bt):co(cr,rl);break;default:return L.failBadSyntaxKind(Eo,\"Unhandled alias declaration kind in symbol serializer!\")}}function co(bt,cr,oi){ze(D.createExportDeclaration(void 0,!1,D.createNamedExports([D.createExportSpecifier(!1,bt!==cr?cr:void 0,bt)]),oi),0)}function as(bt){if(bt.flags&4194304)return!1;let cr=Gi(bt.escapedName),oi=cr===\"export=\",Xr=oi||cr===\"default\",Po=bt.declarations&&Uu(bt),va=Po&&I_(Po,!0);if(va&&Fn(va.declarations)&&vt(va.declarations,Ui=>Gn(Ui)===Gn(_r))){let Ui=Po&&(pc(Po)||ar(Po)?UH(Po):xce(Po)),Eo=Ui&&bc(Ui)?_nt(Ui):void 0,Xo=Eo&&uc(Eo,67108863,!0,!0,_r);(Xo||va)&&ds(Xo||va);let Rc=he.tracker.disableTrackSymbol;if(he.tracker.disableTrackSymbol=!0,Xr)ua.push(D.createExportAssignment(void 0,oi,wa(va,he,67108863)));else if(Eo===Ui&&Eo)co(cr,vr(Eo));else if(Ui&&_u(Ui))co(cr,sd(va,fc(va)));else{let rl=uA(cr,bt);ze(D.createImportEqualsDeclaration(void 0,!1,D.createIdentifier(rl),qi(va,he,67108863,!1)),0),co(cr,rl)}return he.tracker.disableTrackSymbol=Rc,!0}else{let Ui=uA(cr,bt),Eo=Sd(zn(No(bt)));if(Ul(Eo,bt))Ar(Eo,bt,Ui,Xr?0:1);else{let Xo=D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(Ui,void 0,Bi(he,Eo,bt,_r,ds,Bn))],2));ze(Xo,va&&va.flags&4&&va.escapedName===\"export=\"?2:cr===Ui?1:0)}return Xr?(ua.push(D.createExportAssignment(void 0,oi,D.createIdentifier(Ui))),!0):cr!==Ui?(co(cr,Ui),!0):!1}}function Ul(bt,cr){let oi=Gn(he.enclosingDeclaration);return Ur(bt)&48&&!Fn(tu(bt))&&!Ti(bt)&&!!(Fn(Pr(Jo(bt),Aa))||Fn(xa(bt,0)))&&!Fn(xa(bt,1))&&!qn(cr,_r)&&!(bt.symbol&&vt(bt.symbol.declarations,Jr=>Gn(Jr)!==oi))&&!vt(Jo(bt),Jr=>Xk(Jr.escapedName))&&!vt(Jo(bt),Jr=>vt(Jr.declarations,Xr=>Gn(Xr)!==oi))&&Ji(Jo(bt),Jr=>r_(fc(Jr),R))}function M_(bt,cr,oi){return function(Xr,Po,va){var Ui,Eo,Xo,Rc,rl;let Wd=bf(Xr),Vl=!!(Wd&8);if(Po&&Xr.flags&2887656)return[];if(Xr.flags&4194304||va&&ja(va,Xr.escapedName)&&P_(ja(va,Xr.escapedName))===P_(Xr)&&(Xr.flags&16777216)===(ja(va,Xr.escapedName).flags&16777216)&&ph(zn(Xr),Vc(va,Xr.escapedName)))return[];let bs=Wd&-513|(Po?32:0),dc=Hd(Xr,he),Tg=(Ui=Xr.declarations)==null?void 0:Ui.find(Kp(Na,rb,wi,Yd,ar,br));if(Xr.flags&98304&&oi){let wm=[];if(Xr.flags&65536&&wm.push(it(D.createSetAccessorDeclaration(D.createModifiersFromModifierFlags(bs),dc,[D.createParameterDeclaration(void 0,void 0,\"arg\",void 0,Vl?void 0:Bi(he,zn(Xr),Xr,_r,ds,Bn))],void 0),((Eo=Xr.declarations)==null?void 0:Eo.find(Ng))||Tg)),Xr.flags&32768){let Rm=Wd&8;wm.push(it(D.createGetAccessorDeclaration(D.createModifiersFromModifierFlags(bs),dc,[],Rm?void 0:Bi(he,zn(Xr),Xr,_r,ds,Bn),void 0),((Xo=Xr.declarations)==null?void 0:Xo.find(zy))||Tg))}return wm}else if(Xr.flags&98311)return it(bt(D.createModifiersFromModifierFlags((P_(Xr)?64:0)|bs),dc,Xr.flags&16777216?D.createToken(57):void 0,Vl?void 0:Bi(he,hC(Xr),Xr,_r,ds,Bn),void 0),((Rc=Xr.declarations)==null?void 0:Rc.find(Kp(Na,wi)))||Tg);if(Xr.flags&8208){let wm=zn(Xr),Rm=xa(wm,0);if(bs&8)return it(bt(D.createModifiersFromModifierFlags((P_(Xr)?64:0)|bs),dc,Xr.flags&16777216?D.createToken(57):void 0,void 0,void 0),((rl=Xr.declarations)==null?void 0:rl.find(Ds))||Rm[0]&&Rm[0].declaration||Xr.declarations&&Xr.declarations[0]);let j1=[];for(let Ry of Rm){let tae=de(Ry,cr,he,{name:dc,questionToken:Xr.flags&16777216?D.createToken(57):void 0,modifiers:bs?D.createModifiersFromModifierFlags(bs):void 0}),nae=Ry.declaration&&rR(Ry.declaration.parent)?Ry.declaration.parent:Ry.declaration;j1.push(it(tae,nae))}return j1}return L.fail(`Unhandled class member kind! ${Xr.__debugFlags||Xr.flags}`)}}function Dm(bt,cr){return or(bt,!1,cr)}function $v(bt,cr,oi,Jr){let Xr=xa(cr,bt);if(bt===1){if(!oi&&Ji(Xr,Ui=>Fn(Ui.parameters)===0))return[];if(oi){let Ui=xa(oi,1);if(!Fn(Ui)&&Ji(Xr,Eo=>Fn(Eo.parameters)===0))return[];if(Ui.length===Xr.length){let Eo=!1;for(let Xo=0;Xo<Ui.length;Xo++)if(!bM(Xr[Xo],Ui[Xo],!1,!1,!0,cD)){Eo=!0;break}if(!Eo)return[]}}let va=0;for(let Ui of Xr)Ui.declaration&&(va|=gS(Ui.declaration,24));if(va)return[it(D.createConstructorDeclaration(D.createModifiersFromModifierFlags(va),[],void 0),Xr[0].declaration)]}let Po=[];for(let va of Xr){let Ui=de(va,Jr,he);Po.push(it(Ui,va.declaration))}return Po}function V1(bt,cr){let oi=[];for(let Jr of tu(bt)){if(cr){let Xr=Cm(cr,Jr.keyType);if(Xr&&ph(Jr.type,Xr.type))continue}oi.push(J(Jr,he,void 0))}return oi}function qC(bt,cr,oi){let Jr=Hp(bt,111551);if(Jr)return Jr;let Xr=uA(`${oi}_base`),Po=D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(Xr,void 0,u(cr,he))],2));return ze(Po,0),D.createExpressionWithTypeArguments(D.createIdentifier(Xr),void 0)}function Hp(bt,cr){let oi,Jr;if(bt.target&&NE(bt.target.symbol,_r,cr)?(oi=on(Ko(bt),Xr=>u(Xr,he)),Jr=wa(bt.target.symbol,he,788968)):bt.symbol&&NE(bt.symbol,_r,cr)&&(Jr=wa(bt.symbol,he,788968)),Jr)return D.createExpressionWithTypeArguments(Jr,oi)}function lA(bt){let cr=Hp(bt,788968);if(cr)return cr;if(bt.symbol)return D.createExpressionWithTypeArguments(wa(bt.symbol,he,788968),void 0)}function uA(bt,cr){var oi,Jr;let Xr=cr?$a(cr):void 0;if(Xr&&he.remappedSymbolNames.has(Xr))return he.remappedSymbolNames.get(Xr);cr&&(bt=iT(cr,bt));let Po=0,va=bt;for(;(oi=he.usedSymbolNames)!=null&&oi.has(bt);)Po++,bt=`${va}_${Po}`;return(Jr=he.usedSymbolNames)==null||Jr.add(bt),Xr&&he.remappedSymbolNames.set(Xr,bt),bt}function iT(bt,cr){if(cr===\"default\"||cr===\"__class\"||cr===\"__function\"){let oi=he.flags;he.flags|=16777216;let Jr=_y(bt,he);he.flags=oi,cr=Jr.length>0&&Yw(Jr.charCodeAt(0))?l_(Jr):Jr}return cr===\"default\"?cr=\"_default\":cr===\"export=\"&&(cr=\"_exports\"),cr=r_(cr,R)&&!_S(cr)?cr:\"_\"+cr.replace(/[^a-zA-Z0-9]/g,\"_\"),cr}function sd(bt,cr){let oi=$a(bt);return he.remappedSymbolNames.has(oi)?he.remappedSymbolNames.get(oi):(cr=iT(bt,cr),he.remappedSymbolNames.set(oi,cr),cr)}}}function kl(n,a,c=16384,u){return u?p(u).getText():xI(p);function p(h){let T=D.createTypePredicateNode(n.kind===2||n.kind===3?D.createToken(129):void 0,n.kind===1||n.kind===3?D.createIdentifier(n.parameterName):D.createThisTypeNode(),n.type&&Be.typeToTypeNode(n.type,a,qr(c)|70221824|512)),k=rE(),O=a&&Gn(a);return k.writeNode(4,T,O,h),h}}function Ed(n){let a=[],c=0;for(let u=0;u<n.length;u++){let p=n[u];if(c|=p.flags,!(p.flags&98304)){if(p.flags&1568){let h=p.flags&512?Te:qk(p);if(h.flags&1048576){let T=h.types.length;if(u+T<=n.length&&Hu(n[u+T-1])===Hu(h.types[T-1])){a.push(h),u+=T-1;continue}}}a.push(p)}}return c&65536&&a.push(ln),c&32768&&a.push(Oe),a||n}function Ud(n){return n===8?\"private\":n===16?\"protected\":\"public\"}function fy(n){if(n.symbol&&n.symbol.flags&2048&&n.symbol.declarations){let a=fR(n.symbol.declarations[0].parent);if(Ep(a))return fr(a)}}function Td(n){return n&&n.parent&&n.parent.kind===265&&D0(n.parent.parent)}function Ov(n){return n.kind===308||lu(n)}function Nv(n,a){let c=Ai(n).nameType;if(c){if(c.flags&384){let u=\"\"+c.value;return!r_(u,Do(Y))&&!Wm(u)?`\"${pS(u,34)}\"`:Wm(u)&&na(u,\"-\")?`[${u}]`:u}if(c.flags&8192)return`[${_y(c.symbol,a)}]`}}function _y(n,a){if(a&&n.escapedName===\"default\"&&!(a.flags&16384)&&(!(a.flags&16777216)||!n.declarations||a.enclosingDeclaration&&jn(n.declarations[0],Ov)!==jn(a.enclosingDeclaration,Ov)))return\"default\";if(n.declarations&&n.declarations.length){let u=ks(n.declarations,h=>sa(h)?h:void 0),p=u&&sa(u);if(u&&p){if(Pa(u)&&cS(u))return fc(n);if(ts(p)&&!(ac(n)&4096)){let h=Ai(n).nameType;if(h&&h.flags&384){let T=Nv(n,a);if(T!==void 0)return T}}return os(p)}if(u||(u=n.declarations[0]),u.parent&&u.parent.kind===257)return os(u.parent.name);switch(u.kind){case 228:case 215:case 216:return a&&!a.encounteredError&&!(a.flags&131072)&&(a.encounteredError=!0),u.kind===228?\"(Anonymous class)\":\"(Anonymous function)\"}}let c=Nv(n,a);return c!==void 0?c:fc(n)}function qf(n){if(n){let c=Rr(n);return c.isVisible===void 0&&(c.isVisible=!!a()),c.isVisible}return!1;function a(){switch(n.kind){case 341:case 349:case 343:return!!(n.parent&&n.parent.parent&&n.parent.parent.parent&&Li(n.parent.parent.parent));case 205:return qf(n.parent.parent);case 257:if(La(n.name)&&!n.name.elements.length)return!1;case 264:case 260:case 261:case 262:case 259:case 263:case 268:if(D0(n))return!0;let c=FE(n);return!(wg(n)&1)&&!(n.kind!==268&&c.kind!==308&&c.flags&16777216)?gm(c):qf(c);case 169:case 168:case 174:case 175:case 171:case 170:if(cd(n,24))return!1;case 173:case 177:case 176:case 178:case 166:case 265:case 181:case 182:case 184:case 180:case 185:case 186:case 189:case 190:case 193:case 199:return qf(n.parent);case 270:case 271:case 273:return!1;case 165:case 308:case 267:return!0;case 274:return!1;default:return!1}}}function ME(n,a){let c;n.parent&&n.parent.kind===274?c=zs(n,n.escapedText,2998271,void 0,n,!1):n.parent.kind===278&&(c=Jf(n.parent,2998271));let u,p;return c&&(p=new Set,p.add($a(c)),h(c.declarations)),u;function h(T){mn(T,k=>{let O=A1(k)||k;if(a?Rr(k).isVisible=!0:(u=u||[],Rf(u,O)),BA(k)){let H=k.moduleReference,J=Xd(H),de=zs(k,J.escapedText,901119,void 0,void 0,!1);de&&p&&_0(p,$a(de))&&h(de.declarations)}})}}function sf(n,a){let c=Sm(n,a);if(c>=0){let{length:u}=Wh;for(let p=c;p<u;p++)T_[p]=!1;return!1}return Wh.push(n),T_.push(!0),hv.push(a),!0}function Sm(n,a){for(let c=Wh.length-1;c>=0;c--){if(py(Wh[c],hv[c]))return-1;if(Wh[c]===n&&hv[c]===a)return c}return-1}function py(n,a){switch(a){case 0:return!!Ai(n).type;case 5:return!!Rr(n).resolvedEnumType;case 2:return!!Ai(n).declaredType;case 1:return!!n.resolvedBaseConstructorType;case 3:return!!n.resolvedReturnType;case 4:return!!n.immediateBaseConstraint;case 6:return!!n.resolvedTypeArguments;case 7:return!!n.baseTypesResolved;case 8:return!!Ai(n).writeType;case 9:return Rr(n).parameterInitializerContainsUndefined!==void 0}return L.assertNever(a)}function Cf(){return Wh.pop(),hv.pop(),T_.pop()}function FE(n){return jn(nm(n),a=>{switch(a.kind){case 257:case 258:case 273:case 272:case 271:case 270:return!1;default:return!0}}).parent}function Pv(n){let a=gs(ju(n));return a.typeParameters?_g(a,on(a.typeParameters,c=>Se)):a}function Vc(n,a){let c=ja(n,a);return c?zn(c):void 0}function qP(n,a){var c;return Vc(n,a)||((c=Hx(n,a))==null?void 0:c.type)||ue}function Zo(n){return n&&(n.flags&1)!==0}function Ro(n){return n===ve||!!(n.flags&1&&n.aliasSymbol)}function Mx(n,a){if(a!==0)return Oo(n,!1,a);let c=fr(n);return c&&Ai(c).type||Oo(n,!1,a)}function Fx(n,a,c){if(n=jc(n,O=>!(O.flags&98304)),n.flags&131072)return Ki;if(n.flags&1048576)return Ls(n,O=>Fx(O,a,c));let u=Gr(on(a,pg)),p=[],h=[];for(let O of Jo(n)){let H=SC(O,8576);!to(H,u)&&!(bf(O)&24)&&iB(O)?p.push(O):h.push(H)}if(Zb(n)||jv(u)){if(h.length&&(u=Gr([u,...h])),u.flags&131072)return n;let O=AKe();return O?Kx(O,[n,u]):ve}let T=Ua();for(let O of p)T.set(O.escapedName,Dne(O,!1));let k=ls(c,T,Je,Je,tu(n));return k.objectFlags|=4194304,k}function V(n){return!!(n.flags&465829888)&&Js(bu(n)||ue,32768)}function me(n){let a=yh(n,V)?Ls(n,c=>c.flags&465829888?Ty(c):c):n;return Df(a,524288)}function Ue(n,a){let c=ut(n);return c?Yv(c,a):a}function ut(n){let a=Lt(n);if(a&&lR(a)&&a.flowNode){let c=dn(n);if(c){let u=it(fm.createStringLiteral(c),n),p=Ju(a)?a:fm.createParenthesizedExpression(a),h=it(fm.createElementAccessExpression(p,u),n);return go(u,h),go(h,n),p!==a&&go(p,h),h.flowNode=a.flowNode,h}}}function Lt(n){let a=n.parent.parent;switch(a.kind){case 205:case 299:return ut(a);case 206:return ut(n.parent);case 257:return a.initializer;case 223:return a.right}}function dn(n){let a=n.parent;return n.kind===205&&a.kind===203?Er(n.propertyName||n.name):n.kind===299||n.kind===300?Er(n.name):\"\"+a.elements.indexOf(n)}function Er(n){let a=pg(n);return a.flags&384?\"\"+a.value:void 0}function ii(n){let a=n.dotDotDotToken?64:0,c=Mx(n.parent.parent,a);return c&&li(n,c)}function li(n,a){if(Zo(a))return a;let c=n.parent;U&&n.flags&16777216&&IT(n)?a=yg(a):U&&c.parent.initializer&&!(iu(V2e(c.parent.initializer))&65536)&&(a=Df(a,524288));let u;if(c.kind===203)if(n.dotDotDotToken){if(a=R_(a),a.flags&2||!OM(a))return Fe(n,_.Rest_types_may_only_be_created_from_object_types),ve;let p=[];for(let h of c.elements)h.dotDotDotToken||p.push(h.propertyName||h.name);u=Fx(a,p,n.symbol)}else{let p=n.propertyName||n.name,h=pg(p),T=od(a,h,32,p);u=Ue(n,T)}else{let p=wy(65|(n.dotDotDotToken?0:128),a,Oe,c),h=c.elements.indexOf(n);if(n.dotDotDotToken){let T=Ty(a);u=Im(T,po)?Ls(T,k=>TC(k,h)):nu(p)}else if(Kv(a)){let T=ap(h),k=32|(OC(n)?16:0),O=Ay(a,T,k,n.name)||ve;u=Ue(n,O)}else u=p}return n.initializer?Cl(EA(n))?U&&!(iu(LD(n,0))&16777216)?me(u):u:vie(n,Gr([me(u),LD(n,0)],2)):u}function di(n){let a=Vy(n);if(a)return $r(a)}function ma(n){let a=vs(n,!0);return a.kind===104||a.kind===79&&$f(a)===Le}function is(n){let a=vs(n,!0);return a.kind===206&&a.elements.length===0}function ao(n,a=!1,c=!0){return U&&c?gg(n,a):n}function Oo(n,a,c){if(wi(n)&&n.parent.parent.kind===246){let T=Gp(Wre(Yi(n.parent.parent.expression,c)));return T.flags&4456448?AAe(T):ae}if(wi(n)&&n.parent.parent.kind===247){let T=n.parent.parent;return t8(T)||Se}if(La(n.parent))return ii(n);let u=Na(n)&&!rm(n)||Yd(n)||$ue(n),p=a&&WW(n),h=ad(n);if(cH(n))return h?Zo(h)||h===ue?h:ve:Ve?ue:Se;if(h)return ao(h,u,p);if((ge||Yn(n))&&wi(n)&&!La(n.name)&&!(wg(n)&1)&&!(n.flags&16777216)){if(!(F_(n)&2)&&(!n.initializer||ma(n.initializer)))return at;if(n.initializer&&is(n.initializer))return bn}if(ha(n)){let T=n.parent;if(T.kind===175&&Vx(T)){let H=nc(fr(n.parent),174);if(H){let J=rp(H),de=Qie(T);return de&&n===de?(L.assert(!de.type),zn(J.thisParameter)):qo(J)}}let k=QJe(T,n);if(k)return k;let O=n.symbol.escapedName===\"this\"?oCe(T):sCe(n);if(O)return ao(O,!1,p)}if(hT(n)&&!!n.initializer){if(Yn(n)&&!ha(n)){let k=_C(n,fr(n),Qw(n));if(k)return k}let T=vie(n,LD(n,c));return ao(T,u,p)}if(Na(n)&&(ge||Yn(n)))if(zc(n)){let T=Pr(n.parent.members,oc),k=T.length?Xf(n.symbol,T):uu(n)&2?yB(n.symbol):void 0;return k&&ao(k,!0,p)}else{let T=wv(n.parent),k=T?my(n.symbol,T):uu(n)&2?yB(n.symbol):void 0;return k&&ao(k,!0,p)}if(Sp(n))return pe;if(La(n.name))return oo(n.name,!1,!0)}function id(n){if(n.valueDeclaration&&ar(n.valueDeclaration)){let a=Ai(n);return a.isConstructorDeclaredProperty===void 0&&(a.isConstructorDeclaredProperty=!1,a.isConstructorDeclaredProperty=!!Op(n)&&Ji(n.declarations,c=>ar(c)&&GB(c)&&(c.left.kind!==209||gf(c.left.argumentExpression))&&!L_(void 0,c,n,c))),a.isConstructorDeclaredProperty}return!1}function tp(n){let a=n.valueDeclaration;return a&&Na(a)&&!Cl(a)&&!a.initializer&&(ge||Yn(a))}function Op(n){if(!!n.declarations)for(let a of n.declarations){let c=Ku(a,!1,!1);if(c&&(c.kind===173||sp(c)))return c}}function cg(n){let a=Gn(n.declarations[0]),c=Gi(n.escapedName),u=n.declarations.every(h=>Yn(h)&&Us(h)&&Bm(h.expression)),p=u?D.createPropertyAccessExpression(D.createPropertyAccessExpression(D.createIdentifier(\"module\"),D.createIdentifier(\"exports\")),c):D.createPropertyAccessExpression(D.createIdentifier(\"exports\"),c);return u&&go(p.expression.expression,p.expression),go(p.expression,p),go(p,a),p.flowNode=a.endFlowNode,Yv(p,at,Oe)}function Xf(n,a){let c=na(n.escapedName,\"__#\")?D.createPrivateIdentifier(n.escapedName.split(\"@\")[1]):Gi(n.escapedName);for(let u of a){let p=D.createPropertyAccessExpression(D.createThis(),c);go(p.expression,p),go(p,u),p.flowNode=u.returnFlowNode;let h=Gx(p,n);if(ge&&(h===at||h===bn)&&Fe(n.valueDeclaration,_.Member_0_implicitly_has_an_1_type,E(n),Ee(h)),!Im(h,zB))return MD(h)}}function my(n,a){let c=na(n.escapedName,\"__#\")?D.createPrivateIdentifier(n.escapedName.split(\"@\")[1]):Gi(n.escapedName),u=D.createPropertyAccessExpression(D.createThis(),c);go(u.expression,u),go(u,a),u.flowNode=a.returnFlowNode;let p=Gx(u,n);return ge&&(p===at||p===bn)&&Fe(n.valueDeclaration,_.Member_0_implicitly_has_an_1_type,E(n),Ee(p)),Im(p,zB)?void 0:MD(p)}function Gx(n,a){let c=a?.valueDeclaration&&(!tp(a)||uu(a.valueDeclaration)&2)&&yB(a)||Oe;return Yv(n,at,c)}function GE(n,a){let c=sS(n.valueDeclaration);if(c){let k=Yn(c)?x0(c):void 0;return k&&k.typeExpression?$r(k.typeExpression):n.valueDeclaration&&_C(n.valueDeclaration,n,c)||i0(Ic(c))}let u,p=!1,h=!1;if(id(n)&&(u=my(n,Op(n))),!u){let k;if(n.declarations){let O;for(let H of n.declarations){let J=ar(H)||Pa(H)?H:Us(H)?ar(H.parent)?H.parent:H:void 0;if(!J)continue;let de=Us(J)?nR(J):ic(J);(de===4||ar(J)&&GB(J,de))&&(cf(J)?p=!0:h=!0),Pa(J)||(O=L_(O,J,n,H)),O||(k||(k=[])).push(ar(J)||Pa(J)?Mv(n,a,J,de):lt)}u=O}if(!u){if(!Fn(k))return ve;let O=p&&n.declarations?Bx(k,n.declarations):void 0;if(h){let J=yB(n);J&&((O||(O=[])).push(J),p=!0)}let H=vt(O,J=>!!(J.flags&-98305))?O:k;u=Gr(H)}}let T=Sd(ao(u,!1,h&&!p));return n.valueDeclaration&&jc(T,k=>!!(k.flags&-98305))===lt?(qv(n.valueDeclaration,Se),Se):T}function _C(n,a,c){var u,p;if(!Yn(n)||!c||!rs(c)||c.properties.length)return;let h=Ua();for(;ar(n)||br(n);){let O=vd(n);(u=O?.exports)!=null&&u.size&&ll(h,O.exports),n=ar(n)?n.parent:n.parent.parent}let T=vd(n);(p=T?.exports)!=null&&p.size&&ll(h,T.exports);let k=ls(a,h,Je,Je,Je);return k.objectFlags|=4096,k}function L_(n,a,c,u){var p;let h=Cl(a.parent);if(h){let T=Sd($r(h));if(n)!Ro(n)&&!Ro(T)&&!ph(n,T)&&cLe(void 0,n,u,T);else return T}if((p=c.parent)!=null&&p.valueDeclaration){let T=Cl(c.parent.valueDeclaration);if(T){let k=ja($r(T),c.escapedName);if(k)return Gv(k)}}return n}function Mv(n,a,c,u){if(Pa(c)){if(a)return zn(a);let T=Ic(c.arguments[2]),k=Vc(T,\"value\");if(k)return k;let O=Vc(T,\"get\");if(O){let J=G1(O);if(J)return qo(J)}let H=Vc(T,\"set\");if(H){let J=G1(H);if(J)return uie(J)}return Se}if(pC(c.left,c.right))return Se;let p=u===1&&(br(c.left)||Vs(c.left))&&(Bm(c.left.expression)||Re(c.left.expression)&&ST(c.left.expression)),h=a?zn(a):p?Hu(Ic(c.right)):i0(Ic(c.right));if(h.flags&524288&&u===2&&n.escapedName===\"export=\"){let T=w_(h),k=Ua();Fw(T.members,k);let O=k.size;a&&!a.exports&&(a.exports=Ua()),(a||n).exports.forEach((J,de)=>{var Ae;let xe=k.get(de);if(xe&&xe!==J&&!(J.flags&2097152))if(J.flags&111551&&xe.flags&111551){if(J.valueDeclaration&&xe.valueDeclaration&&Gn(J.valueDeclaration)!==Gn(xe.valueDeclaration)){let It=Gi(J.escapedName),Tn=((Ae=zr(xe.valueDeclaration,zl))==null?void 0:Ae.name)||xe.valueDeclaration;Ao(Fe(J.valueDeclaration,_.Duplicate_identifier_0,It),hr(Tn,_._0_was_also_declared_here,It)),Ao(Fe(Tn,_.Duplicate_identifier_0,It),hr(J.valueDeclaration,_._0_was_also_declared_here,It))}let tt=wo(J.flags|xe.flags,de);tt.links.type=Gr([zn(J),zn(xe)]),tt.valueDeclaration=xe.valueDeclaration,tt.declarations=Qi(xe.declarations,J.declarations),k.set(de,tt)}else k.set(de,A_(J,xe));else k.set(de,J)});let H=ls(O!==k.size?void 0:T.symbol,k,T.callSignatures,T.constructSignatures,T.indexInfos);if(O===k.size&&(h.aliasSymbol&&(H.aliasSymbol=h.aliasSymbol,H.aliasTypeArguments=h.aliasTypeArguments),Ur(h)&4)){H.aliasSymbol=h.symbol;let J=Ko(h);H.aliasTypeArguments=Fn(J)?J:void 0}return H.objectFlags|=Ur(h)&4096,H.symbol&&H.symbol.flags&32&&h===vu(H.symbol)&&(H.objectFlags|=16777216),H}return bB(h)?(qv(c,Et),Et):h}function pC(n,a){return br(n)&&n.expression.kind===108&&DO(a,c=>El(n,c))}function cf(n){let a=Ku(n,!1,!1);return a.kind===173||a.kind===259||a.kind===215&&!rR(a.parent)}function Bx(n,a){return L.assert(n.length===a.length),n.filter((c,u)=>{let p=a[u],h=ar(p)?p:ar(p.parent)?p.parent:void 0;return h&&cf(h)})}function hy(n,a,c){if(n.initializer){let u=La(n.name)?oo(n.name,!0,!1):ue;return ao(vie(n,LD(n,0,u)))}return La(n.name)?oo(n.name,a,c):(c&&!zk(n)&&qv(n,Se),a?ce:Se)}function Hk(n,a,c){let u=Ua(),p,h=131200;mn(n.elements,k=>{let O=k.propertyName||k.name;if(k.dotDotDotToken){p=Fp(ae,Se,!1);return}let H=pg(O);if(!fh(H)){h|=512;return}let J=Np(H),de=4|(k.initializer?16777216:0),Ae=wo(de,J);Ae.links.type=hy(k,a,c),Ae.links.bindingElement=k,u.set(Ae.escapedName,Ae)});let T=ls(void 0,u,Je,Je,p?[p]:Je);return T.objectFlags|=h,a&&(T.pattern=n,T.objectFlags|=131072),T}function Wk(n,a,c){let u=n.elements,p=Os(u),h=p&&p.kind===205&&p.dotDotDotToken?p:void 0;if(u.length===0||u.length===1&&h)return R>=2?cAe(Se):Et;let T=on(u,J=>ol(J)?Se:hy(J,a,c)),k=s8(u,J=>!(J===h||ol(J)||OC(J)),u.length-1)+1,O=on(u,(J,de)=>J===h?4:de>=k?2:1),H=ip(T,O);return a&&(H=Wxe(H),H.pattern=n,H.objectFlags|=131072),H}function oo(n,a=!1,c=!1){return n.kind===203?Hk(n,a,c):Wk(n,a,c)}function Zs(n,a){return gy(Oo(n,!0,0),n,a)}function Fv(n){let a=vd(n),c=pKe(!1);return c&&a&&a===c}function gy(n,a,c){return n?(n.flags&4096&&Fv(a.parent)&&(n=wne(a)),c&&CB(a,n),n.flags&8192&&(Wo(a)||!a.type)&&n.symbol!==fr(a)&&(n=j),Sd(n)):(n=ha(a)&&a.dotDotDotToken?Et:Se,c&&(zk(a)||qv(a,n)),n)}function zk(n){let a=nm(n),c=a.kind===166?a.parent:a;return XM(c)}function ad(n){let a=Cl(n);if(a)return $r(a)}function Jk(n){let a=n.valueDeclaration;return a?(Wo(a)&&(a=EA(a)),ha(a)?fB(a.parent):!1):!1}function y(n){let a=Ai(n);if(!a.type){let c=I(n);return!a.type&&!Jk(n)&&(a.type=c),c}return a.type}function I(n){if(n.flags&4194304)return Pv(n);if(n===ct)return Se;if(n.flags&134217728&&n.valueDeclaration){let u=fr(Gn(n.valueDeclaration)),p=wo(u.flags,\"exports\");p.declarations=u.declarations?u.declarations.slice():[],p.parent=n,p.links.target=u,u.valueDeclaration&&(p.valueDeclaration=u.valueDeclaration),u.members&&(p.members=new Map(u.members)),u.exports&&(p.exports=new Map(u.exports));let h=Ua();return h.set(\"exports\",p),ls(n,h,Je,Je,Je)}L.assertIsDefined(n.valueDeclaration);let a=n.valueDeclaration;if(Li(a)&&Pf(a))return a.statements.length?Sd(i0(Yi(a.statements[0].expression))):Ki;if(rb(a))return Tr(n);if(!sf(n,0))return n.flags&512&&!(n.flags&67108864)?Vd(n):mC(n);let c;if(a.kind===274)c=gy(ad(a)||Ic(a.expression),a);else if(ar(a)||Yn(a)&&(Pa(a)||(br(a)||H6(a))&&ar(a.parent)))c=GE(n);else if(br(a)||Vs(a)||Re(a)||es(a)||Uf(a)||sl(a)||Jc(a)||Nc(a)&&!o_(a)||zm(a)||Li(a)){if(n.flags&9136)return Vd(n);c=ar(a.parent)?GE(n):ad(a)||Se}else if(yl(a))c=ad(a)||NIe(a);else if(Sp(a))c=ad(a)||bCe(a);else if(Sf(a))c=ad(a)||UC(a.name,0);else if(o_(a))c=ad(a)||PIe(a,0);else if(ha(a)||Na(a)||Yd(a)||wi(a)||Wo(a)||a6(a))c=Zs(a,!0);else if(hb(a))c=Vd(n);else if(q0(a))c=ug(n);else return L.fail(\"Unhandled declaration kind! \"+L.formatSyntaxKind(a.kind)+\" for \"+L.formatSymbol(n));return Cf()?c:n.flags&512&&!(n.flags&67108864)?Vd(n):mC(n)}function N(n){if(n)switch(n.kind){case 174:return B_(n);case 175:return Fce(n);case 169:return L.assert(rm(n)),Cl(n)}}function te(n){let a=N(n);return a&&$r(a)}function Me(n){let a=Qie(n);return a&&a.symbol}function Pt(n){return Yb(rp(n))}function Tr(n){let a=Ai(n);if(!a.type){if(!sf(n,0))return ve;let c=nc(n,174),u=nc(n,175),p=zr(nc(n,169),Id),h=c&&Yn(c)&&di(c)||te(c)||te(u)||te(p)||c&&c.body&&rU(c)||p&&p.initializer&&Zs(p,!0);h||(u&&!XM(u)?Ip(ge,u,_.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation,E(n)):c&&!XM(c)?Ip(ge,c,_.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation,E(n)):p&&!XM(p)&&Ip(ge,p,_.Member_0_implicitly_has_an_1_type,E(n),\"any\"),h=Se),Cf()||(N(c)?Fe(c,_._0_is_referenced_directly_or_indirectly_in_its_own_type_annotation,E(n)):N(u)||N(p)?Fe(u,_._0_is_referenced_directly_or_indirectly_in_its_own_type_annotation,E(n)):c&&ge&&Fe(c,_._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions,E(n)),h=Se),a.type=h}return a.type}function Fi(n){var a;let c=Ai(n);if(!c.writeType){if(!sf(n,8))return ve;let u=(a=nc(n,175))!=null?a:zr(nc(n,169),Id),p=te(u);Cf()||(N(u)&&Fe(u,_._0_is_referenced_directly_or_indirectly_in_its_own_type_annotation,E(n)),p=Se),c.writeType=p||Tr(n)}return c.writeType}function Da(n){let a=Wr(vu(n));return a.flags&8650752?a:a.flags&2097152?wr(a.types,c=>!!(c.flags&8650752)):void 0}function Vd(n){let a=Ai(n),c=a;if(!a.type){let u=n.valueDeclaration&&eU(n.valueDeclaration,!1);if(u){let p=oie(n,u);p&&(n=p,a=p.links)}c.type=a.type=lg(n)}return a.type}function lg(n){let a=n.valueDeclaration;if(n.flags&1536&&II(n))return Se;if(a&&(a.kind===223||Us(a)&&a.parent.kind===223))return GE(n);if(n.flags&512&&a&&Li(a)&&a.commonJsModuleIndicator){let u=Vu(n);if(u!==n){if(!sf(n,0))return ve;let p=No(n.exports.get(\"export=\")),h=GE(p,p===u?void 0:u);return Cf()?h:mC(n)}}let c=Bd(16,n);if(n.flags&32){let u=Da(n);return u?so([c,u]):c}else return U&&n.flags&16777216?gg(c):c}function ug(n){let a=Ai(n);return a.type||(a.type=_xe(n))}function dg(n){let a=Ai(n);if(!a.type){let c=wc(n),u=n.declarations&&I_(Uu(n),!0),p=ks(u?.declarations,h=>pc(h)?ad(h):void 0);a.type=u?.declarations&&yU(u.declarations)&&n.declarations.length?cg(u):yU(n.declarations)?at:p||(Fl(c)&111551?zn(c):ve)}return a.type}function wte(n){let a=Ai(n);return a.type||(a.type=Oi(zn(a.target),a.mapper))}function Rte(n){let a=Ai(n);return a.writeType||(a.writeType=Oi(hC(a.target),a.mapper))}function mC(n){let a=n.valueDeclaration;return Cl(a)?(Fe(n.valueDeclaration,_._0_is_referenced_directly_or_indirectly_in_its_own_type_annotation,E(n)),ve):(ge&&(a.kind!==166||a.initializer)&&Fe(n.valueDeclaration,_._0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer,E(n)),Se)}function Kk(n){let a=Ai(n);return a.type||(L.assertIsDefined(a.deferralParent),L.assertIsDefined(a.deferralConstituents),a.type=a.deferralParent.flags&1048576?Gr(a.deferralConstituents):so(a.deferralConstituents)),a.type}function Ote(n){let a=Ai(n);return!a.writeType&&a.deferralWriteConstituents&&(L.assertIsDefined(a.deferralParent),L.assertIsDefined(a.deferralConstituents),a.writeType=a.deferralParent.flags&1048576?Gr(a.deferralWriteConstituents):so(a.deferralWriteConstituents)),a.writeType}function hC(n){let a=ac(n);return n.flags&4?a&2?a&65536?Ote(n)||Kk(n):n.links.writeType||n.links.type:zn(n):n.flags&98304?a&1?Rte(n):Fi(n):zn(n)}function zn(n){let a=ac(n);return a&65536?Kk(n):a&1?wte(n):a&262144?NJe(n):a&8192?JXe(n):n.flags&7?y(n):n.flags&9136?Vd(n):n.flags&8?ug(n):n.flags&98304?Tr(n):n.flags&2097152?dg(n):ve}function Gv(n){return KE(zn(n),!!(n.flags&16777216))}function Bv(n,a){return n!==void 0&&a!==void 0&&(Ur(n)&4)!==0&&n.target===a}function Ux(n){return Ur(n)&4?n.target:n}function BE(n,a){return c(n);function c(u){if(Ur(u)&7){let p=Ux(u);return p===a||vt(_o(p),c)}else if(u.flags&2097152)return vt(u.types,c);return!1}}function XP(n,a){for(let c of a)n=xg(n,UE(fr(c)));return n}function gC(n,a){for(;;){if(n=n.parent,n&&ar(n)){let c=ic(n);if(c===6||c===3){let u=fr(n.left);u&&u.parent&&!jn(u.parent.valueDeclaration,p=>n===p)&&(n=u.parent.valueDeclaration)}}if(!n)return;switch(n.kind){case 260:case 228:case 261:case 176:case 177:case 170:case 181:case 182:case 320:case 259:case 171:case 215:case 216:case 262:case 348:case 349:case 343:case 341:case 197:case 191:{let u=gC(n,a);if(n.kind===197)return Sn(u,UE(fr(n.typeParameter)));if(n.kind===191)return Qi(u,PAe(n));let p=XP(u,jy(n)),h=a&&(n.kind===260||n.kind===228||n.kind===261||sp(n))&&vu(fr(n)).thisType;return h?Sn(p,h):p}case 344:let c=dR(n);c&&(n=c.valueDeclaration);break;case 323:{let u=gC(n,a);return n.tags?XP(u,Uo(n.tags,p=>j_(p)?p.typeParameters:void 0)):u}}}}function WG(n){var a;let c=n.flags&32||n.flags&16?n.valueDeclaration:(a=n.declarations)==null?void 0:a.find(u=>{if(u.kind===261)return!0;if(u.kind!==257)return!1;let p=u.initializer;return!!p&&(p.kind===215||p.kind===216)});return L.assert(!!c,\"Class was missing valueDeclaration -OR- non-class had no interface declarations\"),gC(c)}function yy(n){if(!n.declarations)return;let a;for(let c of n.declarations)(c.kind===261||c.kind===260||c.kind===228||sp(c)||cR(c))&&(a=XP(a,jy(c)));return a}function w1(n){return Qi(WG(n),yy(n))}function YP(n){let a=xa(n,1);if(a.length===1){let c=a[0];if(!c.typeParameters&&c.parameters.length===1&&Xl(c)){let u=VM(c.parameters[0]);return Zo(u)||Xne(u)===Se}}return!1}function Uv(n){if(xa(n,1).length>0)return!0;if(n.flags&8650752){let a=bu(n);return!!a&&YP(a)}return!1}function vn(n){let a=Nh(n.symbol);return a&&hp(a)}function Or(n,a,c){let u=Fn(a),p=Yn(c);return Pr(xa(n,1),h=>(p||u>=Mp(h.typeParameters))&&u<=Fn(h.typeParameters))}function xr(n,a,c){let u=Or(n,a,c),p=on(a,$r);return Tl(u,h=>vt(h.typeParameters)?tD(h,p,Yn(c)):h)}function Wr(n){if(!n.resolvedBaseConstructorType){let a=Nh(n.symbol),c=a&&hp(a),u=vn(n);if(!u)return n.resolvedBaseConstructorType=Oe;if(!sf(n,1))return ve;let p=Yi(u.expression);if(c&&u!==c&&(L.assert(!c.typeArguments),Yi(c.expression)),p.flags&2621440&&w_(p),!Cf())return Fe(n.symbol.valueDeclaration,_._0_is_referenced_directly_or_indirectly_in_its_own_base_expression,E(n.symbol)),n.resolvedBaseConstructorType=ve;if(!(p.flags&1)&&p!==ir&&!Uv(p)){let h=Fe(u.expression,_.Type_0_is_not_a_constructor_function_type,Ee(p));if(p.flags&262144){let T=EC(p),k=ue;if(T){let O=xa(T,1);O[0]&&(k=qo(O[0]))}p.symbol.declarations&&Ao(h,hr(p.symbol.declarations[0],_.Did_you_mean_for_0_to_be_constrained_to_type_new_args_Colon_any_1,E(p.symbol),Ee(k)))}return n.resolvedBaseConstructorType=ve}n.resolvedBaseConstructorType=p}return n.resolvedBaseConstructorType}function Ci(n){let a=Je;if(n.symbol.declarations)for(let c of n.symbol.declarations){let u=KA(c);if(!!u)for(let p of u){let h=$r(p);Ro(h)||(a===Je?a=[h]:a.push(h))}}return a}function eo(n,a){Fe(n,_.Type_0_recursively_references_itself_as_a_base_type,Ee(a,void 0,2))}function _o(n){if(!n.baseTypesResolved){if(sf(n,7)&&(n.objectFlags&8?n.resolvedBaseTypes=[jd(n)]:n.symbol.flags&96?(n.symbol.flags&32&&k_(n),n.symbol.flags&64&&dh(n)):L.fail(\"type must be class or interface\"),!Cf()&&n.symbol.declarations))for(let a of n.symbol.declarations)(a.kind===260||a.kind===261)&&eo(a,n);n.baseTypesResolved=!0}return n.resolvedBaseTypes}function jd(n){let a=Tl(n.typeParameters,(c,u)=>n.elementFlags[u]&8?od(c,rt):c);return nu(Gr(a||Je),n.readonly)}function k_(n){n.resolvedBaseTypes=S4;let a=Eu(Wr(n));if(!(a.flags&2621441))return n.resolvedBaseTypes=Je;let c=vn(n),u,p=a.symbol?gs(a.symbol):void 0;if(a.symbol&&a.symbol.flags&32&&uh(p))u=zxe(c,a.symbol);else if(a.flags&1)u=a;else{let T=xr(a,c.typeArguments,c);if(!T.length)return Fe(c.expression,_.No_base_constructor_has_the_specified_number_of_type_arguments),n.resolvedBaseTypes=Je;u=qo(T[0])}if(Ro(u))return n.resolvedBaseTypes=Je;let h=R_(u);if(!xm(h)){let T=Xte(void 0,u),k=da(T,_.Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_known_members,Ee(h));return Lo.add(Lh(Gn(c.expression),c.expression,k)),n.resolvedBaseTypes=Je}return n===h||BE(h,n)?(Fe(n.symbol.valueDeclaration,_.Type_0_recursively_references_itself_as_a_base_type,Ee(n,void 0,2)),n.resolvedBaseTypes=Je):(n.resolvedBaseTypes===S4&&(n.members=void 0),n.resolvedBaseTypes=[h])}function uh(n){let a=n.outerTypeParameters;if(a){let c=a.length-1,u=Ko(n);return a[c].symbol!==u[c].symbol}return!0}function xm(n){if(n.flags&262144){let a=bu(n);if(a)return xm(a)}return!!(n.flags&67633153&&!uf(n)||n.flags&2097152&&Ji(n.types,xm))}function dh(n){if(n.resolvedBaseTypes=n.resolvedBaseTypes||Je,n.symbol.declarations){for(let a of n.symbol.declarations)if(a.kind===261&&MI(a))for(let c of MI(a)){let u=R_($r(c));Ro(u)||(xm(u)?n!==u&&!BE(u,n)?n.resolvedBaseTypes===Je?n.resolvedBaseTypes=[u]:n.resolvedBaseTypes.push(u):eo(a,n):Fe(c,_.An_interface_can_only_extend_an_object_type_or_intersection_of_object_types_with_statically_known_members))}}}function yC(n){if(!n.declarations)return!0;for(let a of n.declarations)if(a.kind===261){if(a.flags&128)return!1;let c=MI(a);if(c){for(let u of c)if(bc(u.expression)){let p=uc(u.expression,788968,!0);if(!p||!(p.flags&64)||vu(p).thisType)return!1}}}return!0}function vu(n){let a=Ai(n),c=a;if(!a.declaredType){let u=n.flags&32?1:2,p=oie(n,n.valueDeclaration&&jQe(n.valueDeclaration));p&&(n=p,a=p.links);let h=c.declaredType=a.declaredType=Bd(u,n),T=WG(n),k=yy(n);(T||k||u===1||!yC(n))&&(h.objectFlags|=4,h.typeParameters=Qi(T,k),h.outerTypeParameters=T,h.localTypeParameters=k,h.instantiations=new Map,h.instantiations.set(Lf(h.typeParameters),h),h.target=h,h.resolvedTypeArguments=h.typeParameters,h.thisType=rd(n),h.thisType.isThisType=!0,h.thisType.constraint=h)}return a.declaredType}function Kb(n){var a;let c=Ai(n);if(!c.declaredType){if(!sf(n,2))return ve;let u=L.checkDefined((a=n.declarations)==null?void 0:a.find(cR),\"Type alias symbol with no valid declaration found\"),p=Mf(u)?u.typeExpression:u.type,h=p?$r(p):ve;if(Cf()){let T=yy(n);T&&(c.typeParameters=T,c.instantiations=new Map,c.instantiations.set(Lf(T),h))}else h=ve,u.kind===343?Fe(u.typeExpression.type,_.Type_alias_0_circularly_references_itself,E(n)):Fe(zl(u)&&u.name||u,_.Type_alias_0_circularly_references_itself,E(n));c.declaredType=h}return c.declaredType}function qk(n){return n.flags&1056&&n.symbol.flags&8?gs(ju(n.symbol)):n}function dxe(n){let a=Ai(n);if(!a.declaredType){let c=[];if(n.declarations){for(let p of n.declarations)if(p.kind===263){for(let h of p.members)if(Vx(h)){let T=fr(h),k=xU(h),O=$x(k!==void 0?Iqe(k,$a(n),T):fxe(T));Ai(T).declaredType=O,c.push(Hu(O))}}}let u=c.length?Gr(c,1,n,void 0):fxe(n);u.flags&1048576&&(u.flags|=1024,u.symbol=n),a.declaredType=u}return a.declaredType}function fxe(n){let a=Rp(32,n),c=Rp(32,n);return a.regularType=a,a.freshType=c,c.regularType=a,c.freshType=c,a}function _xe(n){let a=Ai(n);if(!a.declaredType){let c=dxe(ju(n));a.declaredType||(a.declaredType=c)}return a.declaredType}function UE(n){let a=Ai(n);return a.declaredType||(a.declaredType=rd(n))}function fJe(n){let a=Ai(n);return a.declaredType||(a.declaredType=gs(wc(n)))}function gs(n){return pxe(n)||ve}function pxe(n){if(n.flags&96)return vu(n);if(n.flags&524288)return Kb(n);if(n.flags&262144)return UE(n);if(n.flags&384)return dxe(n);if(n.flags&8)return _xe(n);if(n.flags&2097152)return fJe(n)}function $P(n){switch(n.kind){case 131:case 157:case 152:case 148:case 160:case 134:case 153:case 149:case 114:case 155:case 144:case 198:return!0;case 185:return $P(n.elementType);case 180:return!n.typeArguments||n.typeArguments.every($P)}return!1}function _Je(n){let a=TA(n);return!a||$P(a)}function mxe(n){let a=Cl(n);return a?$P(a):!Jy(n)}function pJe(n){let a=B_(n),c=jy(n);return(n.kind===173||!!a&&$P(a))&&n.parameters.every(mxe)&&c.every(_Je)}function mJe(n){if(n.declarations&&n.declarations.length===1){let a=n.declarations[0];if(a)switch(a.kind){case 169:case 168:return mxe(a);case 171:case 170:case 173:case 174:case 175:return pJe(a)}}return!1}function hxe(n,a,c){let u=Ua();for(let p of n)u.set(p.escapedName,c&&mJe(p)?p:One(p,a));return u}function gxe(n,a){for(let c of a)!n.has(c.escapedName)&&!yxe(c)&&n.set(c.escapedName,c)}function yxe(n){return!!n.valueDeclaration&&xu(n.valueDeclaration)&&Ca(n.valueDeclaration)}function Nte(n){if(!n.declaredProperties){let a=n.symbol,c=vy(a);n.declaredProperties=uy(c),n.declaredCallSignatures=Je,n.declaredConstructSignatures=Je,n.declaredIndexInfos=Je,n.declaredCallSignatures=Xb(c.get(\"__call\")),n.declaredConstructSignatures=Xb(c.get(\"__new\")),n.declaredIndexInfos=Vxe(a)}return n}function fh(n){return!!(n.flags&8576)}function Pte(n){if(!ts(n)&&!Vs(n))return!1;let a=ts(n)?n.expression:n.argumentExpression;return bc(a)&&fh(ts(n)?vg(n):Ic(a))}function Xk(n){return n.charCodeAt(0)===95&&n.charCodeAt(1)===95&&n.charCodeAt(2)===64}function QP(n){let a=sa(n);return!!a&&Pte(a)}function Vx(n){return!Xy(n)||QP(n)}function hJe(n){return Y6(n)&&!Pte(n)}function Np(n){return n.flags&8192?n.escapedName:n.flags&384?Bs(\"\"+n.value):L.fail()}function gJe(n,a,c){L.assert(!!(ac(n)&4096),\"Expected a late-bound symbol.\"),n.flags|=c,Ai(a.symbol).lateSymbol=n,n.declarations?a.symbol.isReplaceableByMethod||n.declarations.push(a):n.declarations=[a],c&111551&&(!n.valueDeclaration||n.valueDeclaration.kind!==a.kind)&&(n.valueDeclaration=a)}function vxe(n,a,c,u){L.assert(!!u.symbol,\"The member is expected to have a symbol.\");let p=Rr(u);if(!p.resolvedSymbol){p.resolvedSymbol=u.symbol;let h=ar(u)?u.left:u.name,T=Vs(h)?Ic(h.argumentExpression):vg(h);if(fh(T)){let k=Np(T),O=u.symbol.flags,H=c.get(k);H||c.set(k,H=wo(0,k,4096));let J=a&&a.get(k);if(H.flags&Kc(O)||J){let de=J?Qi(J.declarations,H.declarations):H.declarations,Ae=!(T.flags&8192)&&Gi(k)||os(h);mn(de,xe=>Fe(sa(xe)||xe,_.Property_0_was_also_declared_here,Ae)),Fe(h||u,_.Duplicate_property_0,Ae),H=wo(0,k,4096)}return H.links.nameType=T,gJe(H,u,O),H.parent?L.assert(H.parent===n,\"Existing symbol parent should match new one\"):H.parent=n,p.resolvedSymbol=H}}return p.resolvedSymbol}function Mte(n,a){let c=Ai(n);if(!c[a]){let u=a===\"resolvedExports\",p=u?n.flags&1536?wx(n).exports:n.exports:n.members;c[a]=p||q;let h=Ua();for(let k of n.declarations||Je){let O=$se(k);if(O)for(let H of O)u===zc(H)&&QP(H)&&vxe(n,p,h,H)}let T=n.assignmentDeclarationMembers;if(T){let k=lo(T.values());for(let O of k){let H=ic(O),J=H===3||ar(O)&&GB(O,H)||H===9||H===6;u===!J&&QP(O)&&vxe(n,p,h,O)}}c[a]=Yh(p,h)||q}return c[a]}function vy(n){return n.flags&6256?Mte(n,\"resolvedMembers\"):n.members||q}function zG(n){if(n.flags&106500&&n.escapedName===\"__computed\"){let a=Ai(n);if(!a.lateSymbol&&vt(n.declarations,QP)){let c=No(n.parent);vt(n.declarations,zc)?Gd(c):vy(c)}return a.lateSymbol||(a.lateSymbol=n)}return n}function lf(n,a,c){if(Ur(n)&4){let u=n.target,p=Ko(n);if(Fn(u.typeParameters)===Fn(p)){let h=_g(u,Qi(p,[a||u.thisType]));return c?Eu(h):h}}else if(n.flags&2097152){let u=Tl(n.types,p=>lf(p,a,c));return u!==n.types?so(u):n}return c?Eu(n):n}function bxe(n,a,c,u){let p,h,T,k,O;GU(c,u,0,c.length)?(h=a.symbol?vy(a.symbol):Ua(a.declaredProperties),T=a.declaredCallSignatures,k=a.declaredConstructSignatures,O=a.declaredIndexInfos):(p=Wu(c,u),h=hxe(a.declaredProperties,p,c.length===1),T=cB(a.declaredCallSignatures,p),k=cB(a.declaredConstructSignatures,p),O=VAe(a.declaredIndexInfos,p));let H=_o(a);if(H.length){a.symbol&&h===vy(a.symbol)&&(h=Ua(a.declaredProperties)),of(n,h,T,k,O);let J=Os(u);for(let de of H){let Ae=J?lf(Oi(de,p),J):de;gxe(h,Jo(Ae)),T=Qi(T,xa(Ae,0)),k=Qi(k,xa(Ae,1));let xe=Ae!==Se?tu(Ae):[Fp(ae,Se,!1)];O=Qi(O,Pr(xe,tt=>!Yte(O,tt.keyType)))}}of(n,h,T,k,O)}function yJe(n){bxe(n,Nte(n),Je,Je)}function vJe(n){let a=Nte(n.target),c=Qi(a.typeParameters,[a.thisType]),u=Ko(n),p=u.length===c.length?u:Qi(u,[n]);bxe(n,a,c,p)}function Am(n,a,c,u,p,h,T,k){let O=new m(qe,k);return O.declaration=n,O.typeParameters=a,O.parameters=u,O.thisParameter=c,O.resolvedReturnType=p,O.resolvedTypePredicate=h,O.minArgumentCount=T,O.resolvedMinArgumentCount=void 0,O.target=void 0,O.mapper=void 0,O.compositeSignatures=void 0,O.compositeKind=void 0,O}function Yk(n){let a=Am(n.declaration,n.typeParameters,n.thisParameter,n.parameters,void 0,void 0,n.minArgumentCount,n.flags&39);return a.target=n.target,a.mapper=n.mapper,a.compositeSignatures=n.compositeSignatures,a.compositeKind=n.compositeKind,a}function Exe(n,a){let c=Yk(n);return c.compositeSignatures=a,c.compositeKind=1048576,c.target=void 0,c.mapper=void 0,c}function bJe(n,a){if((n.flags&24)===a)return n;n.optionalCallSignatureCache||(n.optionalCallSignatureCache={});let c=a===8?\"inner\":\"outer\";return n.optionalCallSignatureCache[c]||(n.optionalCallSignatureCache[c]=EJe(n,a))}function EJe(n,a){L.assert(a===8||a===16,\"An optional call signature can either be for an inner call chain or an outer call chain, but not both.\");let c=Yk(n);return c.flags|=a,c}function Txe(n,a){if(Xl(n)){let u=n.parameters.length-1,p=zn(n.parameters[u]);if(po(p))return[c(p,u)];if(!a&&p.flags&1048576&&Ji(p.types,po))return on(p.types,h=>c(h,u))}return[n.parameters];function c(u,p){let h=Ko(u),T=u.target.labeledElementDeclarations,k=on(h,(O,H)=>{let de=!!T&&nU(T[H])||GC(n,p+H,u),Ae=u.target.elementFlags[H],xe=Ae&12?32768:Ae&2?16384:0,tt=wo(1,de,xe);return tt.links.type=Ae&4?nu(O):O,tt});return Qi(n.parameters.slice(0,p),k)}}function TJe(n){let a=Wr(n),c=xa(a,1),u=Nh(n.symbol),p=!!u&&Mr(u,256);if(c.length===0)return[Am(void 0,n.localTypeParameters,void 0,Je,n,void 0,0,p?4:0)];let h=vn(n),T=Yn(h),k=oM(h),O=Fn(k),H=[];for(let J of c){let de=Mp(J.typeParameters),Ae=Fn(J.typeParameters);if(T||O>=de&&O<=Ae){let xe=Ae?JG(J,Sy(k,J.typeParameters,de,T)):Yk(J);xe.typeParameters=n.localTypeParameters,xe.resolvedReturnType=n,xe.flags=p?xe.flags|4:xe.flags&-5,H.push(xe)}}return H}function Fte(n,a,c,u,p){for(let h of n)if(bM(h,a,c,u,p,c?Kqe:cD))return h}function SJe(n,a,c){if(a.typeParameters){if(c>0)return;for(let p=1;p<n.length;p++)if(!Fte(n[p],a,!1,!1,!1))return;return[a]}let u;for(let p=0;p<n.length;p++){let h=p===c?a:Fte(n[p],a,!0,!1,!0);if(!h)return;u=xg(u,h)}return u}function Gte(n){let a,c;for(let u=0;u<n.length;u++){if(n[u].length===0)return Je;n[u].length>1&&(c=c===void 0?u:-1);for(let p of n[u])if(!a||!Fte(a,p,!1,!1,!0)){let h=SJe(n,p,u);if(h){let T=p;if(h.length>1){let k=p.thisParameter,O=mn(h,H=>H.thisParameter);if(O){let H=so(Zi(h,J=>J.thisParameter&&zn(J.thisParameter)));k=qE(O,H)}T=Exe(p,h),T.thisParameter=k}(a||(a=[])).push(T)}}}if(!Fn(a)&&c!==-1){let u=n[c!==void 0?c:0],p=u.slice();for(let h of n)if(h!==u){let T=h[0];if(L.assert(!!T,\"getUnionSignatures bails early on empty signature lists and should not have empty lists on second pass\"),p=!!T.typeParameters&&vt(p,k=>!!k.typeParameters&&!Sxe(T.typeParameters,k.typeParameters))?void 0:on(p,k=>CJe(k,T)),!p)break}a=p}return a||Je}function Sxe(n,a){if(Fn(n)!==Fn(a))return!1;if(!n||!a)return!0;let c=Wu(a,n);for(let u=0;u<n.length;u++){let p=n[u],h=a[u];if(p!==h&&!ph(EC(p)||ue,Oi(EC(h)||ue,c)))return!1}return!0}function xJe(n,a,c){if(!n||!a)return n||a;let u=so([zn(n),Oi(zn(a),c)]);return qE(n,u)}function AJe(n,a,c){let u=xd(n),p=xd(a),h=u>=p?n:a,T=h===n?a:n,k=h===n?u:p,O=jp(n)||jp(a),H=O&&!jp(h),J=new Array(k+(H?1:0));for(let de=0;de<k;de++){let Ae=tT(h,de);h===a&&(Ae=Oi(Ae,c));let xe=tT(T,de)||ue;T===a&&(xe=Oi(xe,c));let tt=so([Ae,xe]),It=O&&!H&&de===k-1,Tn=de>=Vp(h)&&de>=Vp(T),un=de>=u?void 0:GC(n,de),Nn=de>=p?void 0:GC(a,de),en=un===Nn?un:un?Nn?void 0:un:Nn,cn=wo(1|(Tn&&!It?16777216:0),en||`arg${de}`);cn.links.type=It?nu(tt):tt,J[de]=cn}if(H){let de=wo(1,\"args\");de.links.type=nu(N_(T,k)),T===a&&(de.links.type=Oi(de.links.type,c)),J[k]=de}return J}function CJe(n,a){let c=n.typeParameters||a.typeParameters,u;n.typeParameters&&a.typeParameters&&(u=Wu(a.typeParameters,n.typeParameters));let p=n.declaration,h=AJe(n,a,u),T=xJe(n.thisParameter,a.thisParameter,u),k=Math.max(n.minArgumentCount,a.minArgumentCount),O=Am(p,c,T,h,void 0,void 0,k,(n.flags|a.flags)&39);return O.compositeKind=1048576,O.compositeSignatures=Qi(n.compositeKind!==2097152&&n.compositeSignatures||[n],[a]),u&&(O.mapper=n.compositeKind!==2097152&&n.mapper&&n.compositeSignatures?Jv(n.mapper,u):u),O}function xxe(n){let a=tu(n[0]);if(a){let c=[];for(let u of a){let p=u.keyType;Ji(n,h=>!!Cm(h,p))&&c.push(Fp(p,Gr(on(n,h=>fg(h,p))),vt(n,h=>Cm(h,p).isReadonly)))}return c}return Je}function IJe(n){let a=Gte(on(n.types,p=>p===Hs?[jt]:xa(p,0))),c=Gte(on(n.types,p=>xa(p,1))),u=xxe(n.types);of(n,q,a,c,u)}function ZP(n,a){return n?a?so([n,a]):n:a}function Axe(n){let a=Oy(n,u=>xa(u,1).length>0),c=on(n,YP);if(a>0&&a===Oy(c,u=>u)){let u=c.indexOf(!0);c[u]=!1}return c}function LJe(n,a,c,u){let p=[];for(let h=0;h<a.length;h++)h===u?p.push(n):c[h]&&p.push(qo(xa(a[h],1)[0]));return so(p)}function kJe(n){let a,c,u,p=n.types,h=Axe(p),T=Oy(h,k=>k);for(let k=0;k<p.length;k++){let O=n.types[k];if(!h[k]){let H=xa(O,1);H.length&&T>0&&(H=on(H,J=>{let de=Yk(J);return de.resolvedReturnType=LJe(qo(J),p,h,k),de})),c=Cxe(c,H)}a=Cxe(a,xa(O,0)),u=ou(tu(O),(H,J)=>Ixe(H,J,!1),u)}of(n,q,a||Je,c||Je,u||Je)}function Cxe(n,a){for(let c of a)(!n||Ji(n,u=>!bM(u,c,!1,!1,!1,cD)))&&(n=Sn(n,c));return n}function Ixe(n,a,c){if(n)for(let u=0;u<n.length;u++){let p=n[u];if(p.keyType===a.keyType)return n[u]=Fp(p.keyType,c?Gr([p.type,a.type]):so([p.type,a.type]),c?p.isReadonly||a.isReadonly:p.isReadonly&&a.isReadonly),n}return Sn(n,a)}function DJe(n){if(n.target){of(n,q,Je,Je,Je);let T=hxe(Ey(n.target),n.mapper,!1),k=cB(xa(n.target,0),n.mapper),O=cB(xa(n.target,1),n.mapper),H=VAe(tu(n.target),n.mapper);of(n,T,k,O,H);return}let a=No(n.symbol);if(a.flags&2048){of(n,q,Je,Je,Je);let T=vy(a),k=Xb(T.get(\"__call\")),O=Xb(T.get(\"__new\")),H=Vxe(a);of(n,T,k,O,H);return}let c=q,u;if(a.exports&&(c=Gd(a),a===Ye)){let T=new Map;c.forEach(k=>{var O;!(k.flags&418)&&!(k.flags&512&&((O=k.declarations)==null?void 0:O.length)&&Ji(k.declarations,lu))&&T.set(k.escapedName,k)}),c=T}let p;if(of(n,c,Je,Je,Je),a.flags&32){let T=vu(a),k=Wr(T);k.flags&11272192?(c=Ua(Ox(c)),gxe(c,Jo(k))):k===Se&&(p=Fp(ae,Se,!1))}let h=ane(c);if(h?u=one(h):(p&&(u=Sn(u,p)),a.flags&384&&(gs(a).flags&32||vt(n.properties,T=>!!(zn(T).flags&296)))&&(u=Sn(u,yu))),of(n,c,Je,Je,u||Je),a.flags&8208&&(n.callSignatures=Xb(a)),a.flags&32){let T=vu(a),k=a.members?Xb(a.members.get(\"__constructor\")):Je;a.flags&16&&(k=si(k.slice(),Zi(n.callSignatures,O=>sp(O.declaration)?Am(O.declaration,O.typeParameters,O.thisParameter,O.parameters,T,void 0,O.minArgumentCount,O.flags&39):void 0))),k.length||(k=TJe(T)),n.constructSignatures=k}}function wJe(n,a,c){return Oi(n,Wu([a.indexType,a.objectType],[ap(0),ip([c])]))}function RJe(n){let a=Cm(n.source,ae),c=Pp(n.mappedType),u=!(c&1),p=c&4?0:16777216,h=a?[Fp(ae,LB(a.type,n.mappedType,n.constraintType),u&&a.isReadonly)]:Je,T=Ua();for(let k of Jo(n.source)){let O=8192|(u&&P_(k)?8:0),H=wo(4|k.flags&p,k.escapedName,O);if(H.declarations=k.declarations,H.links.nameType=Ai(k).nameType,H.links.propertyType=zn(k),n.constraintType.type.flags&8388608&&n.constraintType.type.objectType.flags&262144&&n.constraintType.type.indexType.flags&262144){let J=n.constraintType.type.objectType,de=wJe(n.mappedType,n.constraintType.type,J);H.links.mappedType=de,H.links.constraintType=Gp(J)}else H.links.mappedType=n.mappedType,H.links.constraintType=n.constraintType;T.set(k.escapedName,H)}of(n,T,Je,Je,h)}function eM(n){if(n.flags&4194304){let a=Eu(n.type);return Zx(a)?_Ae(a):Gp(a)}if(n.flags&16777216){if(n.root.isDistributive){let a=n.checkType,c=eM(a);if(c!==a)return Fne(n,N1(n.root.checkType,c,n.mapper))}return n}if(n.flags&1048576)return Ls(n,eM,!0);if(n.flags&2097152){let a=n.types;return a.length===2&&!!(a[0].flags&76)&&a[1]===mc?n:so(Tl(n.types,eM))}return n}function Bte(n){return ac(n)&4096}function Ute(n,a,c,u){for(let p of Jo(n))u(SC(p,a));if(n.flags&1)u(ae);else for(let p of tu(n))(!c||p.keyType.flags&134217732)&&u(p.keyType)}function OJe(n){let a=Ua(),c;of(n,q,Je,Je,Je);let u=D_(n),p=np(n),h=by(n.target||n),T=h&&to(h,u),k=_h(n.target||n),O=Eu(vC(n)),H=Pp(n),J=we?128:8576;$k(n)?Ute(O,J,we,de):QE(eM(p),de),of(n,a,Je,Je,c||Je);function de(xe){let tt=h?Oi(h,sD(n.mapper,u,xe)):xe;QE(tt,It=>Ae(xe,It))}function Ae(xe,tt){if(fh(tt)){let It=Np(tt),Tn=a.get(It);if(Tn)Tn.links.nameType=Gr([Tn.links.nameType,tt]),Tn.links.keyType=Gr([Tn.links.keyType,xe]);else{let un=fh(xe)?ja(O,Np(xe)):void 0,Nn=!!(H&4||!(H&8)&&un&&un.flags&16777216),en=!!(H&1||!(H&2)&&un&&P_(un)),cn=U&&!Nn&&un&&un.flags&16777216,rr=un?Bte(un):0,Jt=wo(4|(Nn?16777216:0),It,rr|262144|(en?8:0)|(cn?524288:0));Jt.links.mappedType=n,Jt.links.nameType=tt,Jt.links.keyType=xe,un&&(Jt.links.syntheticOrigin=un,Jt.declarations=!h||T?un.declarations:void 0),a.set(It,Jt)}}else if(KG(tt)||tt.flags&33){let It=tt.flags&5?ae:tt.flags&40?rt:tt,Tn=Oi(k,sD(n.mapper,u,xe)),un=Fp(It,Tn,!!(H&1));c=Ixe(c,un,!0)}}}function NJe(n){if(!n.links.type){let a=n.links.mappedType;if(!sf(n,0))return a.containsError=!0,ve;let c=_h(a.target||a),u=sD(a.mapper,D_(a),n.links.keyType),p=Oi(c,u),h=U&&n.flags&16777216&&!Js(p,49152)?gg(p,!0):n.links.checkFlags&524288?tre(p):p;Cf()||(Fe(P,_.Type_of_property_0_circularly_references_itself_in_mapped_type_1,E(n),Ee(a)),h=ve),n.links.type=h}return n.links.type}function D_(n){return n.typeParameter||(n.typeParameter=UE(fr(n.declaration.typeParameter)))}function np(n){return n.constraintType||(n.constraintType=eu(D_(n))||ve)}function by(n){return n.declaration.nameType?n.nameType||(n.nameType=Oi($r(n.declaration.nameType),n.mapper)):void 0}function _h(n){return n.templateType||(n.templateType=n.declaration.type?Oi(ao($r(n.declaration.type),!0,!!(Pp(n)&4)),n.mapper):ve)}function Lxe(n){return TA(n.declaration.typeParameter)}function $k(n){let a=Lxe(n);return a.kind===195&&a.operator===141}function vC(n){if(!n.modifiersType)if($k(n))n.modifiersType=Oi($r(Lxe(n).type),n.mapper);else{let a=Cne(n.declaration),c=np(a),u=c&&c.flags&262144?eu(c):c;n.modifiersType=u&&u.flags&4194304?Oi(u.type,n.mapper):ue}return n.modifiersType}function Pp(n){let a=n.declaration;return(a.readonlyToken?a.readonlyToken.kind===40?2:1:0)|(a.questionToken?a.questionToken.kind===40?8:4:0)}function kxe(n){let a=Pp(n);return a&8?-1:a&4?1:0}function Vte(n){let a=kxe(n),c=vC(n);return a||(uf(c)?kxe(c):0)}function PJe(n){return!!(Ur(n)&32&&Pp(n)&4)}function uf(n){if(Ur(n)&32){let a=np(n);if(jv(a))return!0;let c=by(n);if(c&&jv(Oi(c,n0(D_(n),a))))return!0}return!1}function w_(n){return n.members||(n.flags&524288?n.objectFlags&4?vJe(n):n.objectFlags&3?yJe(n):n.objectFlags&1024?RJe(n):n.objectFlags&16?DJe(n):n.objectFlags&32?OJe(n):L.fail(\"Unhandled object type \"+L.formatObjectFlags(n.objectFlags)):n.flags&1048576?IJe(n):n.flags&2097152?kJe(n):L.fail(\"Unhandled type \"+L.formatTypeFlags(n.flags))),n}function Ey(n){return n.flags&524288?w_(n).properties:Je}function qb(n,a){if(n.flags&524288){let u=w_(n).members.get(a);if(u&&ig(u))return u}}function tM(n){if(!n.resolvedProperties){let a=Ua();for(let c of n.types){for(let u of Jo(c))if(!a.has(u.escapedName)){let p=qte(n,u.escapedName);p&&a.set(u.escapedName,p)}if(n.flags&1048576&&tu(c).length===0)break}n.resolvedProperties=uy(a)}return n.resolvedProperties}function Jo(n){return n=bC(n),n.flags&3145728?tM(n):Ey(n)}function MJe(n,a){n=bC(n),n.flags&3670016&&w_(n).members.forEach((c,u)=>{ag(c,u)&&a(c,u)})}function FJe(n,a){return a.properties.some(u=>{let p=u.name&&pg(u.name),h=p&&fh(p)?Np(p):void 0,T=h===void 0?void 0:Vc(n,h);return!!T&&dD(T)&&!to(B1(u),T)})}function GJe(n){let a=Gr(n);if(!(a.flags&1048576))return Wie(a);let c=Ua();for(let u of n)for(let{escapedName:p}of Wie(u))if(!c.has(p)){let h=Oxe(a,p);h&&c.set(p,h)}return lo(c.values())}function VE(n){return n.flags&262144?eu(n):n.flags&8388608?BJe(n):n.flags&16777216?VJe(n):bu(n)}function eu(n){return Qk(n)?EC(n):void 0}function nM(n){var a;return!!(n.flags&262144&&vt((a=n.symbol)==null?void 0:a.declarations,c=>Mr(c,2048))||Zx(n)&&Yc(Ko(n),(c,u)=>!!(n.target.elementFlags[u]&8)&&nM(c))>=0||n.flags&8388608&&nM(n.objectType))}function BJe(n){return Qk(n)?UJe(n):void 0}function jte(n){let a=mg(n,!1);return a!==n?a:VE(n)}function UJe(n){if(Jte(n))return nB(n.objectType,n.indexType);let a=jte(n.indexType);if(a&&a!==n.indexType){let u=Ay(n.objectType,a,n.accessFlags);if(u)return u}let c=jte(n.objectType);if(c&&c!==n.objectType)return Ay(c,n.indexType,n.accessFlags)}function Hte(n){if(!n.resolvedDefaultConstraint){let a=Eqe(n),c=Wv(n);n.resolvedDefaultConstraint=Zo(a)?c:Zo(c)?a:Gr([a,c])}return n.resolvedDefaultConstraint}function Dxe(n){if(n.root.isDistributive&&n.restrictiveInstantiation!==n){let a=mg(n.checkType,!1),c=a===n.checkType?VE(a):a;if(c&&c!==n.checkType){let u=Fne(n,N1(n.root.checkType,c,n.mapper));if(!(u.flags&131072))return u}}}function wxe(n){return Dxe(n)||Hte(n)}function VJe(n){return Qk(n)?wxe(n):void 0}function jJe(n,a){let c,u=!1;for(let p of n)if(p.flags&465829888){let h=VE(p);for(;h&&h.flags&21233664;)h=VE(h);h&&(c=Sn(c,h),a&&(c=Sn(c,p)))}else(p.flags&469892092||hh(p))&&(u=!0);if(c&&(a||u)){if(u)for(let p of n)(p.flags&469892092||hh(p))&&(c=Sn(c,p));return hM(so(c),!1)}}function bu(n){if(n.flags&464781312){let a=Wte(n);return a!==Co&&a!==gc?a:void 0}return n.flags&4194304?Si:void 0}function Ty(n){return bu(n)||n}function Qk(n){return Wte(n)!==gc}function Wte(n){if(n.resolvedBaseConstraint)return n.resolvedBaseConstraint;let a=[];return n.resolvedBaseConstraint=lf(c(n),n);function c(h){if(!h.immediateBaseConstraint){if(!sf(h,4))return gc;let T,k=CC(h);if((a.length<10||a.length<50&&!ya(a,k))&&(a.push(k),T=p(mg(h,!1)),a.pop()),!Cf()){if(h.flags&262144){let O=sne(h);if(O){let H=Fe(O,_.Type_parameter_0_has_a_circular_constraint,Ee(h));P&&!CT(O,P)&&!CT(P,O)&&Ao(H,hr(P,_.Circularity_originates_in_type_at_this_location))}}T=gc}h.immediateBaseConstraint=T||Co}return h.immediateBaseConstraint}function u(h){let T=c(h);return T!==Co&&T!==gc?T:void 0}function p(h){if(h.flags&262144){let T=EC(h);return h.isThisType||!T?T:u(T)}if(h.flags&3145728){let T=h.types,k=[],O=!1;for(let H of T){let J=u(H);J?(J!==H&&(O=!0),k.push(J)):O=!0}return O?h.flags&1048576&&k.length===T.length?Gr(k):h.flags&2097152&&k.length?so(k):void 0:h}if(h.flags&4194304)return Si;if(h.flags&134217728){let T=h.types,k=Zi(T,u);return k.length===T.length?WE(h.texts,k):ae}if(h.flags&268435456){let T=u(h.type);return T&&T!==h.type?R1(h.symbol,T):ae}if(h.flags&8388608){if(Jte(h))return u(nB(h.objectType,h.indexType));let T=u(h.objectType),k=u(h.indexType),O=T&&k&&Ay(T,k,h.accessFlags);return O&&u(O)}if(h.flags&16777216){let T=wxe(h);return T&&u(T)}return h.flags&33554432?u(une(h)):h}}function HJe(n){return n.resolvedApparentType||(n.resolvedApparentType=lf(n,n,!0))}function zte(n){if(n.default)n.default===Ll&&(n.default=gc);else if(n.target){let a=zte(n.target);n.default=a?Oi(a,n.mapper):Co}else{n.default=Ll;let a=n.symbol&&mn(n.symbol.declarations,u=>_c(u)&&u.default),c=a?$r(a):Co;n.default===Ll&&(n.default=c)}return n.default}function jE(n){let a=zte(n);return a!==Co&&a!==gc?a:void 0}function WJe(n){return zte(n)!==gc}function Rxe(n){return!!(n.symbol&&mn(n.symbol.declarations,a=>_c(a)&&a.default))}function zJe(n){return n.resolvedApparentType||(n.resolvedApparentType=JJe(n))}function JJe(n){let a=Nne(n);if(a&&!n.declaration.nameType){let c=eu(a);if(c&&JE(c))return Oi(n,N1(a,c,n.mapper))}return n}function Jte(n){let a;return!!(n.flags&8388608&&Ur(a=n.objectType)&32&&!uf(a)&&jv(n.indexType)&&!(Pp(a)&8)&&!a.declaration.nameType)}function Eu(n){let a=n.flags&465829888?bu(n)||ue:n;return Ur(a)&32?zJe(a):a.flags&2097152?HJe(a):a.flags&402653316?Ws:a.flags&296?hd:a.flags&2112?CKe():a.flags&528?vc:a.flags&12288?iAe():a.flags&67108864?Ki:a.flags&4194304?Si:a.flags&2&&!U?Ki:a}function bC(n){return R_(Eu(R_(n)))}function Oxe(n,a,c){var u,p,h;let T,k,O,H=n.flags&1048576,J,de=4,Ae=H?0:8,xe=!1;for(let Cn of n.types){let Rn=Eu(Cn);if(!(Ro(Rn)||Rn.flags&131072)){let Br=ja(Rn,a,c),Hr=Br?bf(Br):0;if(Br){if(Br.flags&106500&&(J??(J=H?0:16777216),H?J|=Br.flags&16777216:J&=Br.flags),!T)T=Br;else if(Br!==T)if((sA(Br)||Br)===(sA(T)||T)&&qne(T,Br,(wa,Xc)=>wa===Xc?-1:0)===-1)xe=!!T.parent&&!!Fn(yy(T.parent));else{k||(k=new Map,k.set($a(T),T));let wa=$a(Br);k.has(wa)||k.set(wa,Br)}H&&P_(Br)?Ae|=8:!H&&!P_(Br)&&(Ae&=-9),Ae|=(Hr&24?0:256)|(Hr&16?512:0)|(Hr&8?1024:0)|(Hr&32?2048:0),jre(Br)||(de=2)}else if(H){let qi=!Xk(a)&&Hx(Rn,a);qi?(Ae|=32|(qi.isReadonly?8:0),O=Sn(O,po(Rn)?EM(Rn)||Oe:qi.type)):Xv(Rn)&&!(Ur(Rn)&2097152)?(Ae|=32,O=Sn(O,Oe)):Ae|=16}}}if(!T||H&&(k||Ae&48)&&Ae&1536&&!(k&&KJe(k.values())))return;if(!k&&!(Ae&16)&&!O)if(xe){let Cn=(u=zr(T,Zp))==null?void 0:u.links,Rn=qE(T,Cn?.type);return Rn.parent=(h=(p=T.valueDeclaration)==null?void 0:p.symbol)==null?void 0:h.parent,Rn.links.containingType=n,Rn.links.mapper=Cn?.mapper,Rn}else return T;let tt=k?lo(k.values()):[T],It,Tn,un,Nn=[],en,cn,rr=!1;for(let Cn of tt){cn?Cn.valueDeclaration&&Cn.valueDeclaration!==cn&&(rr=!0):cn=Cn.valueDeclaration,It=si(It,Cn.declarations);let Rn=zn(Cn);Tn||(Tn=Rn,un=Ai(Cn).nameType);let Br=hC(Cn);en||Br!==Rn?en=Sn(en||Nn.slice(),Br):Rn!==Tn&&(Ae|=64),(dD(Rn)||Xx(Rn)||Rn===Nr)&&(Ae|=128),Rn.flags&131072&&Rn!==Nr&&(Ae|=131072),Nn.push(Rn)}si(Nn,O);let Jt=wo(4|(J??0),a,de|Ae);return Jt.links.containingType=n,!rr&&cn&&(Jt.valueDeclaration=cn,cn.symbol.parent&&(Jt.parent=cn.symbol.parent)),Jt.declarations=It,Jt.links.nameType=un,Nn.length>2?(Jt.links.checkFlags|=65536,Jt.links.deferralParent=n,Jt.links.deferralConstituents=Nn,Jt.links.deferralWriteConstituents=en):(Jt.links.type=H?Gr(Nn):so(Nn),en&&(Jt.links.writeType=H?Gr(en):so(en))),Jt}function Kte(n,a,c){var u,p;let h=((u=n.propertyCacheWithoutObjectFunctionPropertyAugment)==null?void 0:u.get(a))||!c?(p=n.propertyCache)==null?void 0:p.get(a):void 0;return h||(h=Oxe(n,a,c),h&&(c?n.propertyCacheWithoutObjectFunctionPropertyAugment||(n.propertyCacheWithoutObjectFunctionPropertyAugment=Ua()):n.propertyCache||(n.propertyCache=Ua())).set(a,h)),h}function KJe(n){let a;for(let c of n){if(!c.declarations)return;if(!a){a=new Set(c.declarations);continue}if(a.forEach(u=>{ya(c.declarations,u)||a.delete(u)}),a.size===0)return}return a}function qte(n,a,c){let u=Kte(n,a,c);return u&&!(ac(u)&16)?u:void 0}function R_(n){return n.flags&1048576&&n.objectFlags&16777216?n.resolvedReducedType||(n.resolvedReducedType=qJe(n)):n.flags&2097152?(n.objectFlags&16777216||(n.objectFlags|=16777216|(vt(tM(n),XJe)?33554432:0)),n.objectFlags&33554432?lt:n):n}function qJe(n){let a=Tl(n.types,R_);if(a===n.types)return n;let c=Gr(a);return c.flags&1048576&&(c.resolvedReducedType=c),c}function XJe(n){return Nxe(n)||Pxe(n)}function Nxe(n){return!(n.flags&16777216)&&(ac(n)&131264)===192&&!!(zn(n).flags&131072)}function Pxe(n){return!n.valueDeclaration&&!!(ac(n)&1024)}function Xte(n,a){if(a.flags&2097152&&Ur(a)&33554432){let c=wr(tM(a),Nxe);if(c)return da(n,_.The_intersection_0_was_reduced_to_never_because_property_1_has_conflicting_types_in_some_constituents,Ee(a,void 0,536870912),E(c));let u=wr(tM(a),Pxe);if(u)return da(n,_.The_intersection_0_was_reduced_to_never_because_property_1_exists_in_multiple_constituents_and_is_private_in_some,Ee(a,void 0,536870912),E(u))}return n}function ja(n,a,c,u){if(n=bC(n),n.flags&524288){let p=w_(n),h=p.members.get(a);if(h&&ig(h,u))return h;if(c)return;let T=p===aa?Hs:p.callSignatures.length?Uc:p.constructSignatures.length?Gu:void 0;if(T){let k=qb(T,a);if(k)return k}return qb(ka,a)}if(n.flags&3145728)return qte(n,a,c)}function rM(n,a){if(n.flags&3670016){let c=w_(n);return a===0?c.callSignatures:c.constructSignatures}return Je}function xa(n,a){return rM(bC(n),a)}function Yte(n,a){return wr(n,c=>c.keyType===a)}function $te(n,a){let c,u,p;for(let h of n)h.keyType===ae?c=h:jx(a,h.keyType)&&(u?(p||(p=[u])).push(h):u=h);return p?Fp(ue,so(on(p,h=>h.type)),ou(p,(h,T)=>h&&T.isReadonly,!0)):u||(c&&jx(a,ae)?c:void 0)}function jx(n,a){return to(n,a)||a===ae&&to(n,rt)||a===rt&&(n===Fa||!!(n.flags&128)&&Wm(n.value))}function Qte(n){return n.flags&3670016?w_(n).indexInfos:Je}function tu(n){return Qte(bC(n))}function Cm(n,a){return Yte(tu(n),a)}function fg(n,a){var c;return(c=Cm(n,a))==null?void 0:c.type}function Zte(n,a){return tu(n).filter(c=>jx(a,c.keyType))}function iM(n,a){return $te(tu(n),a)}function Hx(n,a){return iM(n,Xk(a)?j:df(Gi(a)))}function Mxe(n){var a;let c;for(let u of jy(n))c=xg(c,UE(u.symbol));return c?.length?c:Jc(n)?(a=eD(n))==null?void 0:a.typeParameters:void 0}function ene(n){let a=[];return n.forEach((c,u)=>{LE(u)||a.push(c)}),a}function tne(n,a){if(fl(n))return;let c=yd(Ne,'\"'+n+'\"',512);return c&&a?No(c):c}function Zk(n){if(dS(n)||JR(n)||KR(n))return!0;if(n.initializer){let c=rp(n.parent),u=n.parent.parameters.indexOf(n);return L.assert(u>=0),u>=Vp(c,3)}let a=TT(n.parent);return a?!n.type&&!n.dotDotDotToken&&n.parent.parameters.indexOf(n)>=a.arguments.length:!1}function YJe(n){return Na(n)&&!rm(n)&&n.questionToken}function aM(n,a,c,u){return{kind:n,parameterName:a,parameterIndex:c,type:u}}function Mp(n){let a=0;if(n)for(let c=0;c<n.length;c++)Rxe(n[c])||(a=c+1);return a}function Sy(n,a,c,u){let p=Fn(a);if(!p)return[];let h=Fn(n);if(u||h>=c&&h<=p){let T=n?n.slice():[];for(let O=h;O<p;O++)T[O]=ve;let k=hre(u);for(let O=h;O<p;O++){let H=jE(a[O]);u&&H&&(ph(H,ue)||ph(H,Ki))&&(H=Se),T[O]=H?Oi(H,Wu(a,T)):k}return T.length=a.length,T}return n&&n.slice()}function rp(n){let a=Rr(n);if(!a.resolvedSignature){let c=[],u=0,p=0,h,T=!1,k=TT(n),O=HA(n);!k&&Yn(n)&&bce(n)&&!Joe(n)&&!Vy(n)&&(u|=32);for(let Ae=O?1:0;Ae<n.parameters.length;Ae++){let xe=n.parameters[Ae],tt=xe.symbol,It=xp(xe)?xe.typeExpression&&xe.typeExpression.type:xe.type;tt&&!!(tt.flags&4)&&!La(xe.name)&&(tt=zs(xe,tt.escapedName,111551,void 0,void 0,!1)),Ae===0&&tt.escapedName===\"this\"?(T=!0,h=xe.symbol):c.push(tt),It&&It.kind===198&&(u|=2),JR(xe)||xe.initializer||xe.questionToken||Fm(xe)||k&&c.length>k.arguments.length&&!It||KR(xe)||(p=c.length)}if((n.kind===174||n.kind===175)&&Vx(n)&&(!T||!h)){let Ae=n.kind===174?175:174,xe=nc(fr(n),Ae);xe&&(h=Me(xe))}if(Yn(n)){let Ae=e6(n);Ae&&Ae.typeExpression&&(h=qE(wo(1,\"this\"),$r(Ae.typeExpression)))}let J=n.kind===173?vu(No(n.parent.symbol)):void 0,de=J?J.localTypeParameters:Mxe(n);(Yj(n)||Yn(n)&&$Je(n,c))&&(u|=1),(vL(n)&&Mr(n,256)||Ec(n)&&Mr(n.parent,256))&&(u|=4),a.resolvedSignature=Am(n,de,h,c,void 0,void 0,p,u)}return a.resolvedSignature}function $Je(n,a){if(X0(n)||!nne(n))return!1;let c=Os(n.parameters),u=c?_I(c):A0(n).filter(xp),p=ks(u,T=>T.typeExpression&&h3(T.typeExpression.type)?T.typeExpression.type:void 0),h=wo(3,\"args\",32768);return p?h.links.type=nu($r(p.type)):(h.links.checkFlags|=65536,h.links.deferralParent=lt,h.links.deferralConstituents=[Et],h.links.deferralWriteConstituents=[Et]),p&&a.pop(),a.push(h),!0}function eD(n){if(!(Yn(n)&&Ds(n)))return;let a=x0(n);return a?.typeExpression&&G1($r(a.typeExpression))}function QJe(n,a){let c=eD(n);if(!c)return;let u=n.parameters.indexOf(a);return a.dotDotDotToken?xD(c,u):N_(c,u)}function ZJe(n){let a=eD(n);return a&&qo(a)}function nne(n){let a=Rr(n);return a.containsArgumentsReference===void 0&&(a.flags&512?a.containsArgumentsReference=!0:a.containsArgumentsReference=c(n.body)),a.containsArgumentsReference;function c(u){if(!u)return!1;switch(u.kind){case 79:return u.escapedText===_t.escapedName&&a8(u)===_t;case 169:case 171:case 174:case 175:return u.name.kind===164&&c(u.name);case 208:case 209:return c(u.expression);case 299:return c(u.initializer);default:return!HH(u)&&!Gm(u)&&!!pa(u,c)}}}function Xb(n){if(!n||!n.declarations)return Je;let a=[];for(let c=0;c<n.declarations.length;c++){let u=n.declarations[c];if(!!Ia(u)){if(c>0&&u.body){let p=n.declarations[c-1];if(u.parent===p.parent&&u.kind===p.kind&&u.pos===p.end)continue}if(Yn(u)&&u.jsDoc){let p=!1;for(let h of u.jsDoc)if(h.tags){for(let T of h.tags)if(DL(T)){let k=T.typeExpression;k.type===void 0&&!Ec(u)&&qv(k,Se),a.push(rp(k)),p=!0}}if(p)continue}a.push(!o2(u)&&!o_(u)&&eD(u)||rp(u))}}return a}function Fxe(n){let a=Gl(n,n);if(a){let c=Vu(a);if(c)return zn(c)}return Se}function Yb(n){if(n.thisParameter)return zn(n.thisParameter)}function If(n){if(!n.resolvedTypePredicate){if(n.target){let a=If(n.target);n.resolvedTypePredicate=a?Mqe(a,n.mapper):Rs}else if(n.compositeSignatures)n.resolvedTypePredicate=qKe(n.compositeSignatures,n.compositeKind)||Rs;else{let a=n.declaration&&B_(n.declaration),c;if(!a){let u=eD(n.declaration);u&&n!==u&&(c=If(u))}n.resolvedTypePredicate=a&&l3(a)?eKe(a,n):c||Rs}L.assert(!!n.resolvedTypePredicate)}return n.resolvedTypePredicate===Rs?void 0:n.resolvedTypePredicate}function eKe(n,a){let c=n.parameterName,u=n.type&&$r(n.type);return c.kind===194?aM(n.assertsModifier?2:0,void 0,void 0,u):aM(n.assertsModifier?3:1,c.escapedText,Yc(a.parameters,p=>p.escapedName===c.escapedText),u)}function Gxe(n,a,c){return a!==2097152?Gr(n,c):so(n)}function qo(n){if(!n.resolvedReturnType){if(!sf(n,3))return ve;let a=n.target?Oi(qo(n.target),n.mapper):n.compositeSignatures?Oi(Gxe(on(n.compositeSignatures,qo),n.compositeKind,2),n.mapper):Wx(n.declaration)||(rc(n.declaration.body)?Se:rU(n.declaration));if(n.flags&8?a=h2e(a):n.flags&16&&(a=gg(a)),!Cf()){if(n.declaration){let c=B_(n.declaration);if(c)Fe(c,_.Return_type_annotation_circularly_references_itself);else if(ge){let u=n.declaration,p=sa(u);p?Fe(p,_._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions,os(p)):Fe(u,_.Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions)}}a=Se}n.resolvedReturnType=a}return n.resolvedReturnType}function Wx(n){if(n.kind===173)return vu(No(n.parent.symbol));if(X0(n)){let c=NI(n);if(c&&Ec(c.parent))return vu(No(c.parent.parent.symbol))}if(HA(n))return $r(n.parameters[0].type);let a=B_(n);if(a)return $r(a);if(n.kind===174&&Vx(n)){let c=Yn(n)&&di(n);if(c)return c;let u=nc(fr(n),175),p=te(u);if(p)return p}return ZJe(n)}function rne(n){return!n.resolvedReturnType&&Sm(n,3)>=0}function tKe(n){return Bxe(n)||Se}function Bxe(n){if(Xl(n)){let a=zn(n.parameters[n.parameters.length-1]),c=po(a)?EM(a):a;return c&&fg(c,rt)}}function tD(n,a,c,u){let p=ine(n,Sy(a,n.typeParameters,Mp(n.typeParameters),c));if(u){let h=KCe(qo(p));if(h){let T=Yk(h);T.typeParameters=u;let k=Yk(p);return k.resolvedReturnType=HE(T),k}}return p}function ine(n,a){let c=n.instantiations||(n.instantiations=new Map),u=Lf(a),p=c.get(u);return p||c.set(u,p=JG(n,a)),p}function JG(n,a){return Qx(n,nKe(n,a),!0)}function nKe(n,a){return Wu(n.typeParameters,a)}function nD(n){return n.typeParameters?n.erasedSignatureCache||(n.erasedSignatureCache=rKe(n)):n}function rKe(n){return Qx(n,jAe(n.typeParameters),!0)}function iKe(n){return n.typeParameters?n.canonicalSignatureCache||(n.canonicalSignatureCache=aKe(n)):n}function aKe(n){return tD(n,on(n.typeParameters,a=>a.target&&!eu(a.target)?a.target:a),Yn(n.declaration))}function oKe(n){let a=n.typeParameters;if(a){if(n.baseSignatureCache)return n.baseSignatureCache;let c=jAe(a),u=Wu(a,on(a,h=>eu(h)||ue)),p=on(a,h=>Oi(h,u)||ue);for(let h=0;h<a.length-1;h++)p=hg(p,u);return p=hg(p,c),n.baseSignatureCache=Qx(n,Wu(a,p),!0)}return n}function HE(n){var a;if(!n.isolatedSignatureType){let c=(a=n.declaration)==null?void 0:a.kind,u=c===void 0||c===173||c===177||c===182,p=Bd(16);p.members=q,p.properties=Je,p.callSignatures=u?Je:[n],p.constructSignatures=u?[n]:Je,p.indexInfos=Je,n.isolatedSignatureType=p}return n.isolatedSignatureType}function Uxe(n){return n.members?ane(n.members):void 0}function ane(n){return n.get(\"__index\")}function Fp(n,a,c,u){return{keyType:n,type:a,isReadonly:c,declaration:u}}function Vxe(n){let a=Uxe(n);return a?one(a):Je}function one(n){if(n.declarations){let a=[];for(let c of n.declarations)if(c.parameters.length===1){let u=c.parameters[0];u.type&&QE($r(u.type),p=>{KG(p)&&!Yte(a,p)&&a.push(Fp(p,c.type?$r(c.type):Se,cd(c,64),c))})}return a}return Je}function KG(n){return!!(n.flags&4108)||Xx(n)||!!(n.flags&2097152)&&!xC(n)&&vt(n.types,KG)}function sne(n){return Zi(Pr(n.symbol&&n.symbol.declarations,_c),TA)[0]}function jxe(n,a){var c;let u;if((c=n.symbol)!=null&&c.declarations){for(let p of n.symbol.declarations)if(p.parent.kind===192){let[h=p.parent,T]=Tce(p.parent.parent);if(T.kind===180&&!a){let k=T,O=xie(k);if(O){let H=k.typeArguments.indexOf(h);if(H<O.length){let J=eu(O[H]);if(J){let de=Rne(O,O.map((xe,tt)=>()=>met(k,O,tt))),Ae=Oi(J,de);Ae!==n&&(u=Sn(u,Ae))}}}}else if(T.kind===166&&T.dotDotDotToken||T.kind===188||T.kind===199&&T.dotDotDotToken)u=Sn(u,nu(ue));else if(T.kind===201)u=Sn(u,ae);else if(T.kind===165&&T.parent.kind===197)u=Sn(u,Si);else if(T.kind===197&&T.type&&vs(T.type)===p.parent&&T.parent.kind===191&&T.parent.extendsType===T&&T.parent.checkType.kind===197&&T.parent.checkType.type){let k=T.parent.checkType,O=$r(k.type);u=Sn(u,Oi(O,n0(UE(fr(k.typeParameter)),k.typeParameter.constraint?$r(k.typeParameter.constraint):Si)))}}}return u&&so(u)}function EC(n){if(!n.constraint)if(n.target){let a=eu(n.target);n.constraint=a?Oi(a,n.mapper):Co}else{let a=sne(n);if(!a)n.constraint=jxe(n)||Co;else{let c=$r(a);c.flags&1&&!Ro(c)&&(c=a.parent.parent.kind===197?Si:ue),n.constraint=c}}return n.constraint===Co?void 0:n.constraint}function Hxe(n){let a=nc(n.symbol,165),c=j_(a.parent)?J6(a.parent):a.parent;return c&&vd(c)}function Lf(n){let a=\"\";if(n){let c=n.length,u=0;for(;u<c;){let p=n[u].id,h=1;for(;u+h<c&&n[u+h].id===p+h;)h++;a.length&&(a+=\",\"),a+=p,h>1&&(a+=\":\"+h),u+=h}}return a}function zx(n,a){return n?`@${$a(n)}`+(a?`:${Lf(a)}`:\"\"):\"\"}function qG(n,a){let c=0;for(let u of n)(a===void 0||!(u.flags&a))&&(c|=Ur(u));return c&458752}function Jx(n,a){return vt(a)&&n===ro?ue:_g(n,a)}function _g(n,a){let c=Lf(a),u=n.instantiations.get(c);return u||(u=Bd(4,n.symbol),n.instantiations.set(c,u),u.objectFlags|=a?qG(a):0,u.target=n,u.resolvedTypeArguments=a),u}function Wxe(n){let a=Rp(n.flags,n.symbol);return a.objectFlags=n.objectFlags,a.target=n.target,a.resolvedTypeArguments=n.resolvedTypeArguments,a}function cne(n,a,c,u,p){if(!u){u=O1(a);let T=Yx(u);p=c?hg(T,c):T}let h=Bd(4,n.symbol);return h.target=n,h.node=a,h.mapper=c,h.aliasSymbol=u,h.aliasTypeArguments=p,h}function Ko(n){var a,c;if(!n.resolvedTypeArguments){if(!sf(n,6))return((a=n.target.localTypeParameters)==null?void 0:a.map(()=>ve))||Je;let u=n.node,p=u?u.kind===180?Qi(n.target.outerTypeParameters,oU(u,n.target.localTypeParameters)):u.kind===185?[$r(u.elementType)]:on(u.elements,$r):Je;Cf()?n.resolvedTypeArguments=n.mapper?hg(p,n.mapper):p:(n.resolvedTypeArguments=((c=n.target.localTypeParameters)==null?void 0:c.map(()=>ve))||Je,Fe(n.node||P,n.target.symbol?_.Type_arguments_for_0_circularly_reference_themselves:_.Tuple_type_arguments_circularly_reference_themselves,n.target.symbol&&E(n.target.symbol)))}return n.resolvedTypeArguments}function Vv(n){return Fn(n.target.typeParameters)}function zxe(n,a){let c=gs(No(a)),u=c.localTypeParameters;if(u){let p=Fn(n.typeArguments),h=Mp(u),T=Yn(n);if(!(!ge&&T)&&(p<h||p>u.length)){let H=T&&Vg(n)&&!A2(n.parent),J=h===u.length?H?_.Expected_0_type_arguments_provide_these_with_an_extends_tag:_.Generic_type_0_requires_1_type_argument_s:H?_.Expected_0_1_type_arguments_provide_these_with_an_extends_tag:_.Generic_type_0_requires_between_1_and_2_type_arguments,de=Ee(c,void 0,2);if(Fe(n,J,de,h,u.length),!T)return ve}if(n.kind===180&&uAe(n,Fn(n.typeArguments)!==u.length))return cne(c,n,void 0);let O=Qi(c.outerTypeParameters,Sy(oM(n),u,h,T));return _g(c,O)}return $b(n,a)?c:ve}function Kx(n,a,c,u){let p=gs(n);if(p===$&&iN.has(n.escapedName)&&a&&a.length===1)return R1(n,a[0]);let h=Ai(n),T=h.typeParameters,k=Lf(a)+zx(c,u),O=h.instantiations.get(k);return O||h.instantiations.set(k,O=zAe(p,Wu(T,Sy(a,T,Mp(T),Yn(n.valueDeclaration))),c,u)),O}function sKe(n,a){if(ac(a)&1048576){let p=oM(n),h=zx(a,p),T=Cr.get(h);return T||(T=Cc(1,\"error\"),T.aliasSymbol=a,T.aliasTypeArguments=p,Cr.set(h,T)),T}let c=gs(a),u=Ai(a).typeParameters;if(u){let p=Fn(n.typeArguments),h=Mp(u);if(p<h||p>u.length)return Fe(n,h===u.length?_.Generic_type_0_requires_1_type_argument_s:_.Generic_type_0_requires_between_1_and_2_type_arguments,E(a),h,u.length),ve;let T=O1(n),k=T&&(Jxe(a)||!Jxe(T))?T:void 0,O;if(k)O=Yx(k);else if(_6(n)){let H=qx(n,2097152,!0);if(H&&H!==Ht){let J=wc(H);J&&J.flags&524288&&(k=J,O=oM(n)||(u?[]:void 0))}}return Kx(a,oM(n),k,O)}return $b(n,a)?c:ve}function Jxe(n){var a;let c=(a=n.declarations)==null?void 0:a.find(cR);return!!(c&&qd(c))}function cKe(n){switch(n.kind){case 180:return n.typeName;case 230:let a=n.expression;if(bc(a))return a}}function Kxe(n){return n.parent?`${Kxe(n.parent)}.${n.escapedName}`:n.escapedName}function XG(n){let c=(n.kind===163?n.right:n.kind===208?n.name:n).escapedText;if(c){let u=n.kind===163?XG(n.left):n.kind===208?XG(n.expression):void 0,p=u?`${Kxe(u)}.${c}`:c,h=dr.get(p);return h||(dr.set(p,h=wo(524288,c,1048576)),h.parent=u,h.links.declaredType=nt),h}return Ht}function qx(n,a,c){let u=cKe(n);if(!u)return Ht;let p=uc(u,a,c);return p&&p!==Ht?p:c?Ht:XG(u)}function YG(n,a){if(a===Ht)return ve;if(a=Iv(a)||a,a.flags&96)return zxe(n,a);if(a.flags&524288)return sKe(n,a);let c=pxe(a);if(c)return $b(n,a)?Hu(c):ve;if(a.flags&111551&&$G(n)){let u=lKe(n,a);return u||(qx(n,788968),zn(a))}return ve}function lKe(n,a){let c=Rr(n);if(!c.resolvedJSDocType){let u=zn(a),p=u;if(a.valueDeclaration){let h=n.kind===202&&n.qualifier;u.symbol&&u.symbol!==a&&h&&(p=YG(n,u.symbol))}c.resolvedJSDocType=p}return c.resolvedJSDocType}function lne(n,a){if(a.flags&3||a===n||n.flags&1)return n;let c=`${ru(n)}>${ru(a)}`,u=Dt.get(c);if(u)return u;let p=ch(33554432);return p.baseType=n,p.constraint=a,Dt.set(c,p),p}function une(n){return so([n.constraint,n.baseType])}function qxe(n){return n.kind===186&&n.elements.length===1}function Xxe(n,a,c){return qxe(a)&&qxe(c)?Xxe(n,a.elements[0],c.elements[0]):Cy($r(a))===Cy(n)?$r(c):void 0}function uKe(n,a){let c,u=!0;for(;a&&!ca(a)&&a.kind!==323;){let p=a.parent;if(p.kind===166&&(u=!u),(u||n.flags&8650752)&&p.kind===191&&a===p.trueType){let h=Xxe(n,p.checkType,p.extendsType);h&&(c=Sn(c,h))}else if(n.flags&262144&&p.kind===197&&a===p.type){let h=$r(p);if(D_(h)===Cy(n)){let T=Nne(h);if(T){let k=eu(T);k&&Im(k,JE)&&(c=Sn(c,Gr([rt,Fa])))}}}a=p}return c?lne(n,so(c)):n}function $G(n){return!!(n.flags&8388608)&&(n.kind===180||n.kind===202)}function $b(n,a){return n.typeArguments?(Fe(n,_.Type_0_is_not_generic,a?E(a):n.typeName?os(n.typeName):rN),!1):!0}function Yxe(n){if(Re(n.typeName)){let a=n.typeArguments;switch(n.typeName.escapedText){case\"String\":return $b(n),ae;case\"Number\":return $b(n),rt;case\"Boolean\":return $b(n),Te;case\"Void\":return $b(n),yt;case\"Undefined\":return $b(n),Oe;case\"Null\":return $b(n),ln;case\"Function\":case\"function\":return $b(n),Hs;case\"array\":return(!a||!a.length)&&!ge?Et:void 0;case\"promise\":return(!a||!a.length)&&!ge?HM(Se):void 0;case\"Object\":if(a&&a.length===2){if(U6(n)){let c=$r(a[0]),u=$r(a[1]),p=c===ae||c===rt?[Fp(c,u,!1)]:Je;return ls(void 0,q,Je,Je,p)}return Se}return $b(n),ge?void 0:Se}}}function dKe(n){let a=$r(n.type);return U?TB(a,65536):a}function dne(n){let a=Rr(n);if(!a.resolvedType){if(Ch(n)&&mT(n.parent))return a.resolvedSymbol=Ht,a.resolvedType=Ic(n.parent.expression);let c,u,p=788968;$G(n)&&(u=Yxe(n),u||(c=qx(n,p,!0),c===Ht?c=qx(n,p|111551):qx(n,p),u=YG(n,c))),u||(c=qx(n,p),u=YG(n,c)),a.resolvedSymbol=c,a.resolvedType=u}return a.resolvedType}function oM(n){return on(n.typeArguments,$r)}function $xe(n){let a=Rr(n);if(!a.resolvedType){let c=_Ie(n);a.resolvedType=Hu(Sd(c))}return a.resolvedType}function Qxe(n,a){function c(p){let h=p.declarations;if(h)for(let T of h)switch(T.kind){case 260:case 261:case 263:return T}}if(!n)return a?ro:Ki;let u=gs(n);return u.flags&524288?Fn(u.typeParameters)!==a?(Fe(c(n),_.Global_type_0_must_have_1_type_parameter_s,fc(n),a),a?ro:Ki):u:(Fe(c(n),_.Global_type_0_must_be_a_class_or_interface_type,fc(n)),a?ro:Ki)}function fne(n,a){return rD(n,111551,a?_.Cannot_find_global_value_0:void 0)}function Zxe(n,a){return rD(n,788968,a?_.Cannot_find_global_type_0:void 0)}function QG(n,a,c){let u=rD(n,788968,c?_.Cannot_find_global_type_0:void 0);if(u&&(gs(u),Fn(Ai(u).typeParameters)!==a)){let p=u.declarations&&wr(u.declarations,Ep);Fe(p,_.Global_type_0_must_have_1_type_parameter_s,fc(u),a);return}return u}function rD(n,a,c){return zs(void 0,n,a,c,n,!1,!1,!1)}function Fc(n,a,c){let u=Zxe(n,c);return u||c?Qxe(u,a):void 0}function fKe(){return xt||(xt=Fc(\"TypedPropertyDescriptor\",1,!0)||ro)}function _Ke(){return Md||(Md=Fc(\"TemplateStringsArray\",0,!0)||Ki)}function eAe(){return Wf||(Wf=Fc(\"ImportMeta\",0,!0)||Ki)}function tAe(){if(!Io){let n=wo(0,\"ImportMetaExpression\"),a=eAe(),c=wo(4,\"meta\",8);c.parent=n,c.links.type=a;let u=Ua([c]);n.members=u,Io=ls(n,u,Je,Je,Je)}return Io}function nAe(n){return zf||(zf=Fc(\"ImportCallOptions\",0,n))||Ki}function rAe(n){return ee||(ee=fne(\"Symbol\",n))}function pKe(n){return Ze||(Ze=Zxe(\"SymbolConstructor\",n))}function iAe(){return At||(At=Fc(\"Symbol\",0,!1))||Ki}function sM(n){return qt||(qt=Fc(\"Promise\",1,n))||ro}function aAe(n){return Ln||(Ln=Fc(\"PromiseLike\",1,n))||ro}function _ne(n){return mr||(mr=fne(\"Promise\",n))}function mKe(n){return Vr||(Vr=Fc(\"PromiseConstructorLike\",0,n))||Ki}function ZG(n){return Pd||(Pd=Fc(\"AsyncIterable\",1,n))||ro}function hKe(n){return Dc||(Dc=Fc(\"AsyncIterator\",3,n))||ro}function gKe(n){return gd||(gd=Fc(\"AsyncIterableIterator\",1,n))||ro}function yKe(n){return Zl||(Zl=Fc(\"AsyncGenerator\",3,n))||ro}function pne(n){return gi||(gi=Fc(\"Iterable\",1,n))||ro}function vKe(n){return Ea||(Ea=Fc(\"Iterator\",3,n))||ro}function bKe(n){return bo||(bo=Fc(\"IterableIterator\",1,n))||ro}function EKe(n){return Qo||(Qo=Fc(\"Generator\",3,n))||ro}function TKe(n){return Cs||(Cs=Fc(\"IteratorYieldResult\",1,n))||ro}function SKe(n){return Bu||(Bu=Fc(\"IteratorReturnResult\",1,n))||ro}function oAe(n,a=0){let c=rD(n,788968,void 0);return c&&Qxe(c,a)}function xKe(){return Fd||(Fd=QG(\"Extract\",2,!0)||Ht),Fd===Ht?void 0:Fd}function AKe(){return b_||(b_=QG(\"Omit\",2,!0)||Ht),b_===Ht?void 0:b_}function mne(n){return X_||(X_=QG(\"Awaited\",1,n)||(n?Ht:void 0)),X_===Ht?void 0:X_}function CKe(){return M||(M=Fc(\"BigInt\",0,!1))||Ki}function IKe(n){var a;return(a=Pn??(Pn=Fc(\"ClassDecoratorContext\",1,n)))!=null?a:ro}function LKe(n){var a;return(a=la??(la=Fc(\"ClassMethodDecoratorContext\",2,n)))!=null?a:ro}function kKe(n){var a;return(a=oa??(oa=Fc(\"ClassGetterDecoratorContext\",2,n)))!=null?a:ro}function DKe(n){var a;return(a=be??(be=Fc(\"ClassSetterDecoratorContext\",2,n)))!=null?a:ro}function wKe(n){var a;return(a=De??(De=Fc(\"ClassAccessorDecoratorContext\",2,n)))!=null?a:ro}function RKe(n){var a;return(a=mt??(mt=Fc(\"ClassAccessorDecoratorTarget\",2,n)))!=null?a:ro}function OKe(n){var a;return(a=St??(St=Fc(\"ClassAccessorDecoratorResult\",2,n)))!=null?a:ro}function NKe(n){var a;return(a=Zt??(Zt=Fc(\"ClassFieldDecoratorContext\",2,n)))!=null?a:ro}function PKe(){return He||(He=fne(\"NaN\",!1))}function MKe(){return Nt||(Nt=QG(\"Record\",2,!0)||Ht),Nt===Ht?void 0:Nt}function iD(n,a){return n!==ro?_g(n,a):Ki}function sAe(n){return iD(fKe(),[n])}function cAe(n){return iD(pne(!0),[n])}function nu(n,a){return iD(a?jo:$o,[n])}function hne(n){switch(n.kind){case 187:return 2;case 188:return lAe(n);case 199:return n.questionToken?2:n.dotDotDotToken?lAe(n):1;default:return 1}}function lAe(n){return dM(n.type)?4:8}function FKe(n){let a=BKe(n.parent);if(dM(n))return a?jo:$o;let u=on(n.elements,hne),p=vt(n.elements,h=>h.kind!==199);return gne(u,a,p?void 0:n.elements)}function uAe(n,a){return!!O1(n)||dAe(n)&&(n.kind===185?xy(n.elementType):n.kind===186?vt(n.elements,xy):a||vt(n.typeArguments,xy))}function dAe(n){let a=n.parent;switch(a.kind){case 193:case 199:case 180:case 189:case 190:case 196:case 191:case 195:case 185:case 186:return dAe(a);case 262:return!0}return!1}function xy(n){switch(n.kind){case 180:return $G(n)||!!(qx(n,788968).flags&524288);case 183:return!0;case 195:return n.operator!==156&&xy(n.type);case 193:case 187:case 199:case 319:case 317:case 318:case 312:return xy(n.type);case 188:return n.type.kind!==185||xy(n.type.elementType);case 189:case 190:return vt(n.types,xy);case 196:return xy(n.objectType)||xy(n.indexType);case 191:return xy(n.checkType)||xy(n.extendsType)||xy(n.trueType)||xy(n.falseType)}return!1}function GKe(n){let a=Rr(n);if(!a.resolvedType){let c=FKe(n);if(c===ro)a.resolvedType=Ki;else if(!(n.kind===186&&vt(n.elements,u=>!!(hne(u)&8)))&&uAe(n))a.resolvedType=n.kind===186&&n.elements.length===0?c:cne(c,n,void 0);else{let u=n.kind===185?[$r(n.elementType)]:on(n.elements,$r);a.resolvedType=yne(c,u)}}return a.resolvedType}function BKe(n){return OS(n)&&n.operator===146}function ip(n,a,c=!1,u){let p=gne(a||on(n,h=>1),c,u);return p===ro?Ki:n.length?yne(p,n):p}function gne(n,a,c){if(n.length===1&&n[0]&4)return a?jo:$o;let u=on(n,h=>h&1?\"#\":h&2?\"?\":h&4?\".\":\"*\").join()+(a?\"R\":\"\")+(c&&c.length?\",\"+on(c,zo).join(\",\"):\"\"),p=kn.get(u);return p||kn.set(u,p=UKe(n,a,c)),p}function UKe(n,a,c){let u=n.length,p=Oy(n,de=>!!(de&9)),h,T=[],k=0;if(u){h=new Array(u);for(let de=0;de<u;de++){let Ae=h[de]=rd(),xe=n[de];if(k|=xe,!(k&12)){let tt=wo(4|(xe&2?16777216:0),\"\"+de,a?8:0);tt.links.tupleLabelDeclaration=c?.[de],tt.links.type=Ae,T.push(tt)}}}let O=T.length,H=wo(4,\"length\",a?8:0);if(k&12)H.links.type=rt;else{let de=[];for(let Ae=p;Ae<=u;Ae++)de.push(ap(Ae));H.links.type=Gr(de)}T.push(H);let J=Bd(12);return J.typeParameters=h,J.outerTypeParameters=void 0,J.localTypeParameters=h,J.instantiations=new Map,J.instantiations.set(Lf(J.typeParameters),J),J.target=J,J.resolvedTypeArguments=J.typeParameters,J.thisType=rd(),J.thisType.isThisType=!0,J.thisType.constraint=J,J.declaredProperties=T,J.declaredCallSignatures=Je,J.declaredConstructSignatures=Je,J.declaredIndexInfos=Je,J.elementFlags=n,J.minLength=p,J.fixedLength=O,J.hasRestElement=!!(k&12),J.combinedFlags=k,J.readonly=a,J.labeledElementDeclarations=c,J}function yne(n,a){return n.objectFlags&8?fAe(n,a):_g(n,a)}function fAe(n,a){var c,u,p;if(!(n.combinedFlags&14))return _g(n,a);if(n.combinedFlags&8){let xe=Yc(a,(tt,It)=>!!(n.elementFlags[It]&8&&tt.flags&1179648));if(xe>=0)return lM(on(a,(tt,It)=>n.elementFlags[It]&8?tt:ue))?Ls(a[xe],tt=>fAe(n,UU(a,xe,tt))):ve}let h=[],T=[],k=[],O=-1,H=-1,J=-1;for(let xe=0;xe<a.length;xe++){let tt=a[xe],It=n.elementFlags[xe];if(It&8)if(tt.flags&58982400||uf(tt))Ae(tt,8,(c=n.labeledElementDeclarations)==null?void 0:c[xe]);else if(po(tt)){let Tn=Ko(tt);if(Tn.length+h.length>=1e4)return Fe(P,Gm(P)?_.Type_produces_a_tuple_type_that_is_too_large_to_represent:_.Expression_produces_a_tuple_type_that_is_too_large_to_represent),ve;mn(Tn,(un,Nn)=>{var en;return Ae(un,tt.target.elementFlags[Nn],(en=tt.target.labeledElementDeclarations)==null?void 0:en[Nn])})}else Ae(Kv(tt)&&fg(tt,rt)||ve,4,(u=n.labeledElementDeclarations)==null?void 0:u[xe]);else Ae(tt,It,(p=n.labeledElementDeclarations)==null?void 0:p[xe])}for(let xe=0;xe<O;xe++)T[xe]&2&&(T[xe]=1);H>=0&&H<J&&(h[H]=Gr(Tl(h.slice(H,J+1),(xe,tt)=>T[H+tt]&8?od(xe,rt):xe)),h.splice(H+1,J-H),T.splice(H+1,J-H),k?.splice(H+1,J-H));let de=gne(T,n.readonly,k);return de===ro?Ki:T.length?_g(de,h):de;function Ae(xe,tt,It){tt&1&&(O=T.length),tt&4&&H<0&&(H=T.length),tt&6&&(J=T.length),h.push(tt&2?ao(xe,!0):xe),T.push(tt),k&&It?k.push(It):k=void 0}}function TC(n,a,c=0){let u=n.target,p=Vv(n)-c;return a>u.fixedLength?IXe(n)||ip(Je):ip(Ko(n).slice(a,p),u.elementFlags.slice(a,p),!1,u.labeledElementDeclarations&&u.labeledElementDeclarations.slice(a,p))}function _Ae(n){return Gr(Sn(mae(n.target.fixedLength,a=>df(\"\"+a)),Gp(n.target.readonly?jo:$o)))}function VKe(n,a){let c=Yc(n.elementFlags,u=>!(u&a));return c>=0?c:n.elementFlags.length}function cM(n,a){return n.elementFlags.length-s8(n.elementFlags,c=>!(c&a))-1}function jKe(n){return ao($r(n.type),!0)}function ru(n){return n.id}function Qb(n,a){return Py(n,a,ru,Es)>=0}function vne(n,a){let c=Py(n,a,ru,Es);return c<0?(n.splice(~c,0,a),!0):!1}function HKe(n,a,c){let u=c.flags;if(u&1048576)return pAe(n,a|(KKe(c)?1048576:0),c.types);if(!(u&131072))if(a|=u&205258751,u&465829888&&(a|=33554432),c===Tt&&(a|=8388608),!U&&u&98304)Ur(c)&65536||(a|=4194304);else{let p=n.length,h=p&&c.id>n[p-1].id?~p:Py(n,c,ru,Es);h<0&&n.splice(~h,0,c)}return a}function pAe(n,a,c){for(let u of c)a=HKe(n,a,u);return a}function WKe(n,a){var c;if(n.length<2)return n;let u=Lf(n),p=pn.get(u);if(p)return p;let h=a&&vt(n,H=>!!(H.flags&524288)&&!uf(H)&&Vne(w_(H))),T=n.length,k=T,O=0;for(;k>0;){k--;let H=n[k];if(h||H.flags&469499904){let J=H.flags&61603840?wr(Jo(H),Ae=>O_(zn(Ae))):void 0,de=J&&Hu(zn(J));for(let Ae of n)if(H!==Ae){if(O===1e5&&O/(T-k)*T>1e6){(c=ai)==null||c.instant(ai.Phase.CheckTypes,\"removeSubtypes_DepthLimit\",{typeIds:n.map(tt=>tt.id)}),Fe(P,_.Expression_produces_a_union_type_that_is_too_complex_to_represent);return}if(O++,J&&Ae.flags&61603840){let xe=Vc(Ae,J.escapedName);if(xe&&O_(xe)&&Hu(xe)!==de)continue}if(Bp(H,Ae,S_)&&(!(Ur(Ux(H))&1)||!(Ur(Ux(Ae))&1)||r0(H,Ae))){y0(n,k);break}}}}return pn.set(u,n),n}function zKe(n,a,c){let u=n.length;for(;u>0;){u--;let p=n[u],h=p.flags;(h&402653312&&a&4||h&256&&a&8||h&2048&&a&64||h&8192&&a&4096||c&&h&32768&&a&16384||t0(p)&&Qb(n,p.regularType))&&y0(n,u)}}function JKe(n){let a=Pr(n,c=>!!(c.flags&134217728)&&Xx(c));if(a.length){let c=n.length;for(;c>0;){c--;let u=n[c];u.flags&128&&vt(a,p=>_re(u,p))&&y0(n,c)}}}function KKe(n){return!!(n.flags&1048576&&(n.aliasSymbol||n.origin))}function mAe(n,a){for(let c of a)if(c.flags&1048576){let u=c.origin;c.aliasSymbol||u&&!(u.flags&1048576)?Rf(n,c):u&&u.flags&1048576&&mAe(n,u.types)}}function bne(n,a){let c=k1(n);return c.types=a,c}function Gr(n,a=1,c,u,p){if(n.length===0)return lt;if(n.length===1)return n[0];let h=[],T=pAe(h,0,n);if(a!==0){if(T&3)return T&1?T&8388608?Tt:Se:T&65536||Qb(h,ue)?ue:G;if(T&32768&&h.length>=2&&h[0]===Oe&&h[1]===Ge&&y0(h,1),(T&402664352||T&16384&&T&32768)&&zKe(h,T,!!(a&2)),T&128&&T&134217728&&JKe(h),a===2&&(h=WKe(h,!!(T&524288)),!h))return ve;if(h.length===0)return T&65536?T&4194304?ln:ir:T&32768?T&4194304?Oe:je:lt}if(!p&&T&1048576){let O=[];mAe(O,n);let H=[];for(let de of h)vt(O,Ae=>Qb(Ae.types,de))||H.push(de);if(!c&&O.length===1&&H.length===0)return O[0];if(ou(O,(de,Ae)=>de+Ae.types.length,0)+H.length===h.length){for(let de of O)vne(H,de);p=bne(1048576,H)}}let k=(T&36323363?0:32768)|(T&2097152?16777216:0);return Tne(h,k,c,u,p)}function qKe(n,a){let c,u=[];for(let h of n){let T=If(h);if(!T||T.kind===2||T.kind===3){if(a!==2097152)continue;return}if(c){if(!Ene(c,T))return}else c=T;u.push(T.type)}if(!c)return;let p=Gxe(u,a);return aM(c.kind,c.parameterName,c.parameterIndex,p)}function Ene(n,a){return n.kind===a.kind&&n.parameterIndex===a.parameterIndex}function Tne(n,a,c,u,p){if(n.length===0)return lt;if(n.length===1)return n[0];let T=(p?p.flags&1048576?`|${Lf(p.types)}`:p.flags&2097152?`&${Lf(p.types)}`:`#${p.type.id}|${Lf(n)}`:Lf(n))+zx(c,u),k=_n.get(T);return k||(k=ch(1048576),k.objectFlags=a|qG(n,98304),k.types=n,k.origin=p,k.aliasSymbol=c,k.aliasTypeArguments=u,n.length===2&&n[0].flags&512&&n[1].flags&512&&(k.flags|=16,k.intrinsicName=\"boolean\"),_n.set(T,k)),k}function XKe(n){let a=Rr(n);if(!a.resolvedType){let c=O1(n);a.resolvedType=Gr(on(n.types,$r),1,c,Yx(c))}return a.resolvedType}function YKe(n,a,c){let u=c.flags;return u&2097152?hAe(n,a,c.types):(hh(c)?a&16777216||(a|=16777216,n.set(c.id.toString(),c)):(u&3?c===Tt&&(a|=8388608):(U||!(u&98304))&&(c===Ge&&(a|=262144,c=Oe),n.has(c.id.toString())||(c.flags&109472&&a&109472&&(a|=67108864),n.set(c.id.toString(),c))),a|=u&205258751),a)}function hAe(n,a,c){for(let u of c)a=YKe(n,a,Hu(u));return a}function $Ke(n,a){let c=n.length;for(;c>0;){c--;let u=n[c];(u.flags&4&&a&402653312||u.flags&8&&a&256||u.flags&64&&a&2048||u.flags&4096&&a&8192||u.flags&16384&&a&32768||hh(u)&&a&470302716)&&y0(n,c)}}function QKe(n,a){for(let c of n)if(!Qb(c.types,a)){let u=a.flags&128?ae:a.flags&256?rt:a.flags&2048?Ot:a.flags&8192?j:void 0;if(!u||!Qb(c.types,u))return!1}return!0}function ZKe(n){let a=n.length,c=Pr(n,u=>!!(u.flags&128));for(;a>0;){a--;let u=n[a];if(!!(u.flags&134217728)){for(let p of c)if(Iy(p,u)){y0(n,a);break}else if(Xx(u))return!0}}return!1}function gAe(n,a){return Ji(n,c=>!!(c.flags&1048576)&&vt(c.types,u=>!!(u.flags&a)))}function yAe(n,a){for(let c=0;c<n.length;c++)n[c]=jc(n[c],u=>!(u.flags&a))}function eqe(n){let a,c=Yc(n,T=>!!(Ur(T)&32768));if(c<0)return!1;let u=c+1;for(;u<n.length;){let T=n[u];Ur(T)&32768?((a||(a=[n[c]])).push(T),y0(n,u)):u++}if(!a)return!1;let p=[],h=[];for(let T of a)for(let k of T.types)vne(p,k)&&QKe(a,k)&&vne(h,k);return n[c]=Tne(h,32768),!0}function tqe(n,a,c){let u=ch(2097152);return u.objectFlags=qG(n,98304),u.types=n,u.aliasSymbol=a,u.aliasTypeArguments=c,u}function so(n,a,c,u){let p=new Map,h=hAe(p,0,n),T=lo(p.values());if(h&131072)return ya(T,Qe)?Qe:lt;if(U&&h&98304&&h&84410368||h&67108864&&h&402783228||h&402653316&&h&67238776||h&296&&h&469891796||h&2112&&h&469889980||h&12288&&h&469879804||h&49152&&h&469842940||h&134217728&&h&128&&ZKe(T))return lt;if(h&1)return h&8388608?Tt:Se;if(!U&&h&98304)return h&16777216?lt:h&32768?Oe:ln;if((h&4&&h&402653312||h&8&&h&256||h&64&&h&2048||h&4096&&h&8192||h&16384&&h&32768||h&16777216&&h&470302716)&&(u||$Ke(T,h)),h&262144&&(T[T.indexOf(Oe)]=Ge),T.length===0)return ue;if(T.length===1)return T[0];let k=Lf(T)+zx(a,c),O=Gt.get(k);if(!O){if(h&1048576)if(eqe(T))O=so(T,a,c);else if(gAe(T,32768)){let H=vt(T,_D)?Ge:Oe;yAe(T,32768),O=Gr([so(T),H],1,a,c)}else if(gAe(T,65536))yAe(T,65536),O=Gr([so(T),ln],1,a,c);else{if(!lM(T))return ve;let H=nqe(T),J=vt(H,de=>!!(de.flags&2097152))&&Sne(H)>Sne(T)?bne(2097152,T):void 0;O=Gr(H,1,a,c,J)}else O=tqe(T,a,c);Gt.set(k,O)}return O}function vAe(n){return ou(n,(a,c)=>c.flags&1048576?a*c.types.length:c.flags&131072?0:a,1)}function lM(n){var a;let c=vAe(n);return c>=1e5?((a=ai)==null||a.instant(ai.Phase.CheckTypes,\"checkCrossProductUnion_DepthLimit\",{typeIds:n.map(u=>u.id),size:c}),Fe(P,_.Expression_produces_a_union_type_that_is_too_complex_to_represent),!1):!0}function nqe(n){let a=vAe(n),c=[];for(let u=0;u<a;u++){let p=n.slice(),h=u;for(let k=n.length-1;k>=0;k--)if(n[k].flags&1048576){let O=n[k].types,H=O.length;p[k]=O[h%H],h=Math.floor(h/H)}let T=so(p);T.flags&131072||c.push(T)}return c}function bAe(n){return!(n.flags&3145728)||n.aliasSymbol?1:n.flags&1048576&&n.origin?bAe(n.origin):Sne(n.types)}function Sne(n){return ou(n,(a,c)=>a+bAe(c),0)}function rqe(n){let a=Rr(n);if(!a.resolvedType){let c=O1(n),u=on(n.types,$r),p=u.length===2&&!!(u[0].flags&76)&&u[1]===mc;a.resolvedType=so(u,c,Yx(c),p)}return a.resolvedType}function EAe(n,a){let c=ch(4194304);return c.type=n,c.stringsOnly=a,c}function iqe(n){let a=k1(4194304);return a.type=n,a}function TAe(n,a){return a?n.resolvedStringIndexType||(n.resolvedStringIndexType=EAe(n,!0)):n.resolvedIndexType||(n.resolvedIndexType=EAe(n,!1))}function aqe(n,a,c){let u=D_(n),p=np(n),h=by(n.target||n);if(!h&&!c)return p;let T=[];if($k(n)){if(jv(p))return TAe(n,a);{let H=Eu(vC(n));Ute(H,8576,a,O)}}else QE(eM(p),O);jv(p)&&QE(p,O);let k=c?jc(Gr(T),H=>!(H.flags&5)):Gr(T);if(k.flags&1048576&&p.flags&1048576&&Lf(k.types)===Lf(p.types))return p;return k;function O(H){let J=h?Oi(h,sD(n.mapper,u,H)):H;T.push(J===ae?ei:J)}}function oqe(n){let a=D_(n);return c(by(n)||a);function c(u){return u.flags&202375167?!0:u.flags&16777216?u.root.isDistributive&&u.checkType===a:u.flags&137363456?Ji(u.types,c):u.flags&8388608?c(u.objectType)&&c(u.indexType):u.flags&33554432?c(u.baseType)&&c(u.constraint):u.flags&268435456?c(u.type):!1}}function pg(n){return pi(n)?lt:Re(n)?df(Gi(n.escapedText)):Hu(ts(n)?vg(n):Yi(n))}function SC(n,a,c){if(c||!(bf(n)&24)){let u=Ai(zG(n)).nameType;if(!u){let p=sa(n.valueDeclaration);u=n.escapedName===\"default\"?df(\"default\"):p&&pg(p)||(yR(n)?void 0:df(fc(n)))}if(u&&u.flags&a)return u}return lt}function SAe(n,a){return!!(n.flags&a||n.flags&2097152&&vt(n.types,c=>SAe(c,a)))}function sqe(n,a,c){let u=c&&(Ur(n)&7||n.aliasSymbol)?iqe(n):void 0,p=on(Jo(n),T=>SC(T,a)),h=on(tu(n),T=>T!==yu&&SAe(T.keyType,a)?T.keyType===ae&&a&8?ei:T.keyType:lt);return Gr(Qi(p,h),1,void 0,void 0,u)}function cqe(n){let a=Wqe(n);return R_(a)!==a}function xAe(n){return!!(n.flags&58982400||Zx(n)||uf(n)&&!oqe(n)||n.flags&1048576&&vt(n.types,cqe)||n.flags&2097152&&Js(n,465829888)&&vt(n.types,hh))}function Gp(n,a=we,c){return n=R_(n),xAe(n)?TAe(n,a):n.flags&1048576?so(on(n.types,u=>Gp(u,a,c))):n.flags&2097152?Gr(on(n.types,u=>Gp(u,a,c))):Ur(n)&32?aqe(n,a,c):n===Tt?Tt:n.flags&2?lt:n.flags&131073?Si:sqe(n,(c?128:402653316)|(a?0:12584),a===we&&!c)}function AAe(n){if(we)return n;let a=xKe();return a?Kx(a,[n,ae]):ae}function lqe(n){let a=AAe(Gp(n));return a.flags&131072?ae:a}function uqe(n){let a=Rr(n);if(!a.resolvedType)switch(n.operator){case 141:a.resolvedType=Gp($r(n.type));break;case 156:a.resolvedType=n.type.kind===153?wne(fR(n.parent)):ve;break;case 146:a.resolvedType=$r(n.type);break;default:throw L.assertNever(n.operator)}return a.resolvedType}function dqe(n){let a=Rr(n);return a.resolvedType||(a.resolvedType=WE([n.head.text,...on(n.templateSpans,c=>c.literal.text)],on(n.templateSpans,c=>$r(c.type)))),a.resolvedType}function WE(n,a){let c=Yc(a,H=>!!(H.flags&1179648));if(c>=0)return lM(a)?Ls(a[c],H=>WE(n,UU(a,c,H))):ve;if(ya(a,Tt))return Tt;let u=[],p=[],h=n[0];if(!O(n,a))return ae;if(u.length===0)return df(h);if(p.push(h),Ji(p,H=>H===\"\")){if(Ji(u,H=>!!(H.flags&4)))return ae;if(u.length===1&&Xx(u[0]))return u[0]}let T=`${Lf(u)}|${on(p,H=>H.length).join(\",\")}|${p.join(\"\")}`,k=pt.get(T);return k||pt.set(T,k=_qe(p,u)),k;function O(H,J){let de=ba(H);for(let Ae=0;Ae<J.length;Ae++){let xe=J[Ae],tt=de?H[Ae+1]:H;if(xe.flags&101248){if(h+=fqe(xe)||\"\",h+=tt,!de)return!0}else if(xe.flags&134217728){if(h+=xe.texts[0],!O(xe.texts,xe.types))return!1;if(h+=tt,!de)return!0}else if(jv(xe)||tB(xe))u.push(xe),p.push(h),h=tt;else if(xe.flags&2097152){if(!O(H[Ae+1],xe.types))return!1}else if(de)return!1}return!0}}function fqe(n){return n.flags&128?n.value:n.flags&256?\"\"+n.value:n.flags&2048?j0(n.value):n.flags&98816?n.intrinsicName:void 0}function _qe(n,a){let c=ch(134217728);return c.texts=n,c.types=a,c}function R1(n,a){return a.flags&1179648?Ls(a,c=>R1(n,c)):a.flags&128?df(CAe(n,a.value)):a.flags&134217728?WE(...pqe(n,a.texts,a.types)):a.flags&268435456&&n===a.symbol?a:a.flags&268435461||jv(a)?IAe(n,a):tB(a)?IAe(n,WE([\"\",\"\"],[a])):a}function CAe(n,a){switch(iN.get(n.escapedName)){case 0:return a.toUpperCase();case 1:return a.toLowerCase();case 2:return a.charAt(0).toUpperCase()+a.slice(1);case 3:return a.charAt(0).toLowerCase()+a.slice(1)}return a}function pqe(n,a,c){switch(iN.get(n.escapedName)){case 0:return[a.map(u=>u.toUpperCase()),c.map(u=>R1(n,u))];case 1:return[a.map(u=>u.toLowerCase()),c.map(u=>R1(n,u))];case 2:return[a[0]===\"\"?a:[a[0].charAt(0).toUpperCase()+a[0].slice(1),...a.slice(1)],a[0]===\"\"?[R1(n,c[0]),...c.slice(1)]:c];case 3:return[a[0]===\"\"?a:[a[0].charAt(0).toLowerCase()+a[0].slice(1),...a.slice(1)],a[0]===\"\"?[R1(n,c[0]),...c.slice(1)]:c]}return[a,c]}function IAe(n,a){let c=`${$a(n)},${ru(a)}`,u=nn.get(c);return u||nn.set(c,u=mqe(n,a)),u}function mqe(n,a){let c=Rp(268435456,n);return c.type=a,c}function hqe(n,a,c,u,p){let h=ch(8388608);return h.objectType=n,h.indexType=a,h.accessFlags=c,h.aliasSymbol=u,h.aliasTypeArguments=p,h}function aD(n){if(ge)return!1;if(Ur(n)&4096)return!0;if(n.flags&1048576)return Ji(n.types,aD);if(n.flags&2097152)return vt(n.types,aD);if(n.flags&465829888){let a=Wte(n);return a!==n&&aD(a)}return!1}function eB(n,a){return fh(n)?Np(n):a&&Ys(a)?M0(a):void 0}function xne(n,a){if(a.flags&8208){let c=jn(n.parent,u=>!Us(u))||n.parent;return iS(c)?Ih(c)&&Re(n)&&P2e(c,n):Ji(a.declarations,u=>!Ia(u)||!!(F_(u)&268435456))}return!0}function LAe(n,a,c,u,p,h){var T;let k=p&&p.kind===209?p:void 0,O=p&&pi(p)?void 0:eB(c,p);if(O!==void 0){if(h&256)return eT(a,O)||Se;let J=ja(a,O);if(J){if(h&64&&p&&J.declarations&&Sv(J)&&xne(p,J)){let Ae=(T=k?.argumentExpression)!=null?T:NS(p)?p.indexType:p;Xh(Ae,J.declarations,O)}if(k){if(FM(J,k,jCe(k.expression,a.symbol)),LIe(k,J,AT(k))){Fe(k.argumentExpression,_.Cannot_assign_to_0_because_it_is_a_read_only_property,E(J));return}if(h&8&&(Rr(p).resolvedSymbol=J),PCe(k,J))return at}let de=zn(J);return k&&AT(k)!==1?Yv(k,de):p&&NS(p)&&_D(de)?Gr([de,Oe]):de}if(Im(a,po)&&Wm(O)){let de=+O;if(p&&Im(a,Ae=>!Ae.target.hasRestElement)&&!(h&16)){let Ae=Ane(p);if(po(a)){if(de<0)return Fe(Ae,_.A_tuple_type_cannot_be_indexed_with_a_negative_value),Oe;Fe(Ae,_.Tuple_type_0_of_length_1_has_no_element_at_index_2,Ee(a),Vv(a),Gi(O))}else Fe(Ae,_.Property_0_does_not_exist_on_type_1,Gi(O),Ee(a))}if(de>=0)return H(Cm(a,rt)),Ls(a,Ae=>{let xe=EM(Ae)||Oe;return h&1?Gr([xe,Ge]):xe})}}if(!(c.flags&98304)&&ul(c,402665900)){if(a.flags&131073)return a;let J=iM(a,c)||Cm(a,ae);if(J){if(h&2&&J.keyType!==rt){k&&Fe(k,_.Type_0_cannot_be_used_to_index_type_1,Ee(c),Ee(n));return}if(p&&J.keyType===ae&&!ul(c,12)){let de=Ane(p);return Fe(de,_.Type_0_cannot_be_used_as_an_index_type,Ee(c)),h&1?Gr([J.type,Ge]):J.type}return H(J),h&1&&!(a.symbol&&a.symbol.flags&384&&c.symbol&&c.flags&1024&&ju(c.symbol)===a.symbol)?Gr([J.type,Ge]):J.type}if(c.flags&131072)return lt;if(aD(a))return Se;if(k&&!hie(a)){if(Xv(a)){if(ge&&c.flags&384)return Lo.add(hr(k,_.Property_0_does_not_exist_on_type_1,c.value,Ee(a))),Oe;if(c.flags&12){let de=on(a.properties,Ae=>zn(Ae));return Gr(Sn(de,Oe))}}if(a.symbol===Ye&&O!==void 0&&Ye.exports.has(O)&&Ye.exports.get(O).flags&418)Fe(k,_.Property_0_does_not_exist_on_type_1,Gi(O),Ee(a));else if(ge&&!Y.suppressImplicitAnyIndexErrors&&!(h&128))if(O!==void 0&&BCe(O,a)){let de=Ee(a);Fe(k,_.Property_0_does_not_exist_on_type_1_Did_you_mean_to_access_the_static_member_2_instead,O,de,de+\"[\"+Qc(k.argumentExpression)+\"]\")}else if(fg(a,rt))Fe(k.argumentExpression,_.Element_implicitly_has_an_any_type_because_index_expression_is_not_of_type_number);else{let de;if(O!==void 0&&(de=Xre(O,a)))de!==void 0&&Fe(k.argumentExpression,_.Property_0_does_not_exist_on_type_1_Did_you_mean_2,O,Ee(a),de);else{let Ae=lQe(a,k,c);if(Ae!==void 0)Fe(k,_.Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_Did_you_mean_to_call_1,Ee(a),Ae);else{let xe;if(c.flags&1024)xe=da(void 0,_.Property_0_does_not_exist_on_type_1,\"[\"+Ee(c)+\"]\",Ee(a));else if(c.flags&8192){let tt=rh(c.symbol,k);xe=da(void 0,_.Property_0_does_not_exist_on_type_1,\"[\"+tt+\"]\",Ee(a))}else c.flags&128||c.flags&256?xe=da(void 0,_.Property_0_does_not_exist_on_type_1,c.value,Ee(a)):c.flags&12&&(xe=da(void 0,_.No_index_signature_with_a_parameter_of_type_0_was_found_on_type_1,Ee(c),Ee(a)));xe=da(xe,_.Element_implicitly_has_an_any_type_because_expression_of_type_0_can_t_be_used_to_index_type_1,Ee(u),Ee(a)),Lo.add(Lh(Gn(k),k,xe))}}}return}}if(aD(a))return Se;if(p){let J=Ane(p);c.flags&384?Fe(J,_.Property_0_does_not_exist_on_type_1,\"\"+c.value,Ee(a)):c.flags&12?Fe(J,_.Type_0_has_no_matching_index_signature_for_type_1,Ee(a),Ee(c)):Fe(J,_.Type_0_cannot_be_used_as_an_index_type,Ee(c))}if(Zo(c))return c;return;function H(J){J&&J.isReadonly&&k&&(Um(k)||GH(k))&&Fe(k,_.Index_signature_in_type_0_only_permits_reading,Ee(a))}}function Ane(n){return n.kind===209?n.argumentExpression:n.kind===196?n.indexType:n.kind===164?n.expression:n}function tB(n){return!!(n.flags&77)||Xx(n)}function Xx(n){return!!(n.flags&134217728)&&Ji(n.types,tB)||!!(n.flags&268435456)&&tB(n.type)}function xC(n){return!!oD(n)}function Zb(n){return!!(oD(n)&4194304)}function jv(n){return!!(oD(n)&8388608)}function oD(n){return n.flags&3145728?(n.objectFlags&2097152||(n.objectFlags|=2097152|ou(n.types,(a,c)=>a|oD(c),0)),n.objectFlags&12582912):n.flags&33554432?(n.objectFlags&2097152||(n.objectFlags|=2097152|oD(n.baseType)|oD(n.constraint)),n.objectFlags&12582912):(n.flags&58982400||uf(n)||Zx(n)?4194304:0)|(n.flags&465829888&&!Xx(n)?8388608:0)}function mg(n,a){return n.flags&8388608?yqe(n,a):n.flags&16777216?vqe(n,a):n}function kAe(n,a,c){if(n.flags&1048576||n.flags&2097152&&!xAe(n)){let u=on(n.types,p=>mg(od(p,a),c));return n.flags&2097152||c?so(u):Gr(u)}}function gqe(n,a,c){if(a.flags&1048576){let u=on(a.types,p=>mg(od(n,p),c));return c?so(u):Gr(u)}}function yqe(n,a){let c=a?\"simplifiedForWriting\":\"simplifiedForReading\";if(n[c])return n[c]===gc?n:n[c];n[c]=gc;let u=mg(n.objectType,a),p=mg(n.indexType,a),h=gqe(u,p,a);if(h)return n[c]=h;if(!(p.flags&465829888)){let T=kAe(u,p,a);if(T)return n[c]=T}if(Zx(u)&&p.flags&296){let T=kC(u,p.flags&8?0:u.target.fixedLength,0,a);if(T)return n[c]=T}if(uf(u)){let T=by(u);if(!T||to(T,D_(u)))return n[c]=Ls(nB(u,n.indexType),k=>mg(k,a))}return n[c]=n}function vqe(n,a){let c=n.checkType,u=n.extendsType,p=Hv(n),h=Wv(n);if(h.flags&131072&&Cy(p)===Cy(c)){if(c.flags&1||to(zE(c),zE(u)))return mg(p,a);if(DAe(c,u))return lt}else if(p.flags&131072&&Cy(h)===Cy(c)){if(!(c.flags&1)&&to(zE(c),zE(u)))return lt;if(c.flags&1||DAe(c,u))return mg(h,a)}return n}function DAe(n,a){return!!(Gr([ZP(n,a),lt]).flags&131072)}function nB(n,a){let c=Wu([D_(n)],[a]),u=Jv(n.mapper,c);return Oi(_h(n.target||n),u)}function od(n,a,c=0,u,p,h){return Ay(n,a,c,u,p,h)||(u?ve:ue)}function wAe(n,a){return Im(n,c=>{if(c.flags&384){let u=Np(c);if(Wm(u)){let p=+u;return p>=0&&p<a}}return!1})}function Ay(n,a,c=0,u,p,h){if(n===Tt||a===Tt)return Tt;if(t2e(n)&&!(a.flags&98304)&&ul(a,12)&&(a=ae),Y.noUncheckedIndexedAccess&&c&32&&(c|=1),jv(a)||(u&&u.kind!==196?Zx(n)&&!wAe(a,n.target.fixedLength):Zb(n)&&!(po(n)&&wAe(a,n.target.fixedLength)))){if(n.flags&3)return n;let k=c&1,O=n.id+\",\"+a.id+\",\"+k+zx(p,h),H=gr.get(O);return H||gr.set(O,H=hqe(n,a,k,p,h)),H}let T=bC(n);if(a.flags&1048576&&!(a.flags&16)){let k=[],O=!1;for(let H of a.types){let J=LAe(n,T,H,a,u,c|(O?128:0));if(J)k.push(J);else if(u)O=!0;else return}return O?void 0:c&4?so(k,p,h):Gr(k,1,p,h)}return LAe(n,T,a,a,u,c|8|64)}function RAe(n){let a=Rr(n);if(!a.resolvedType){let c=$r(n.objectType),u=$r(n.indexType),p=O1(n);a.resolvedType=od(c,u,0,n,p,Yx(p))}return a.resolvedType}function Cne(n){let a=Rr(n);if(!a.resolvedType){let c=Bd(32,n.symbol);c.declaration=n,c.aliasSymbol=O1(n),c.aliasTypeArguments=Yx(c.aliasSymbol),a.resolvedType=c,np(c)}return a.resolvedType}function Cy(n){return n.flags&33554432?Cy(n.baseType):n.flags&8388608&&(n.objectType.flags&33554432||n.indexType.flags&33554432)?od(Cy(n.objectType),Cy(n.indexType)):n}function bqe(n){let a=eu(n);return a&&(Zb(a)||jv(a))?uB(n):n}function OAe(n){return m2(n)&&Fn(n.elements)>0&&!vt(n.elements,a=>Rz(a)||Oz(a)||EL(a)&&!!(a.questionToken||a.dotDotDotToken))}function NAe(n,a){return xC(n)||a&&po(n)&&vt(Ko(n),xC)}function Ine(n,a,c,u){let p,h,T=0;for(;;){if(T===1e3){Fe(P,_.Type_instantiation_is_excessively_deep_and_possibly_infinite),p=ve;break}let O=OAe(n.node.checkType)&&OAe(n.node.extendsType)&&Fn(n.node.checkType.elements)===Fn(n.node.extendsType.elements),H=Oi(Cy(n.checkType),a),J=NAe(H,O),de=Oi(n.extendsType,a);if(H===Tt||de===Tt)return Tt;let Ae;if(n.inferTypeParameters){let tt=Tl(n.inferTypeParameters,bqe),It=tt!==n.inferTypeParameters?Wu(n.inferTypeParameters,tt):void 0,Tn=pD(tt,void 0,0);if(It){let Nn=Jv(a,It);for(let en of tt)n.inferTypeParameters.indexOf(en)===-1&&(en.mapper=Nn)}J||gh(Tn.inferences,H,Oi(de,It),1536);let un=Jv(It,Tn.mapper);Ae=a?Jv(un,a):un}let xe=Ae?Oi(n.extendsType,Ae):de;if(!J&&!NAe(xe,O)){if(!(xe.flags&3)&&(H.flags&1||!to(dB(H),dB(xe)))){H.flags&1&&(h||(h=[])).push(Oi($r(n.node.trueType),Ae||a));let tt=$r(n.node.falseType);if(tt.flags&16777216){let It=tt.root;if(It.node.parent===n.node&&(!It.isDistributive||It.checkType===n.checkType)){n=It;continue}if(k(tt,a))continue}p=Oi(tt,a);break}if(xe.flags&3||to(zE(H),zE(xe))){let tt=$r(n.node.trueType),It=Ae||a;if(k(tt,It))continue;p=Oi(tt,It);break}}p=ch(16777216),p.root=n,p.checkType=Oi(n.checkType,a),p.extendsType=Oi(n.extendsType,a),p.mapper=a,p.combinedMapper=Ae,p.aliasSymbol=c||n.aliasSymbol,p.aliasTypeArguments=c?u:hg(n.aliasTypeArguments,a);break}return h?Gr(Sn(h,p)):p;function k(O,H){if(O.flags&16777216&&H){let J=O.root;if(J.outerTypeParameters){let de=Jv(O.mapper,H),Ae=on(J.outerTypeParameters,It=>zv(It,de)),xe=Wu(J.outerTypeParameters,Ae),tt=J.isDistributive?zv(J.checkType,xe):void 0;if(!tt||tt===J.checkType||!(tt.flags&1179648))return n=J,a=xe,c=void 0,u=void 0,J.aliasSymbol&&T++,!0}}return!1}}function Hv(n){return n.resolvedTrueType||(n.resolvedTrueType=Oi($r(n.root.node.trueType),n.mapper))}function Wv(n){return n.resolvedFalseType||(n.resolvedFalseType=Oi($r(n.root.node.falseType),n.mapper))}function Eqe(n){return n.resolvedInferredTrueType||(n.resolvedInferredTrueType=n.combinedMapper?Oi($r(n.root.node.trueType),n.combinedMapper):Hv(n))}function PAe(n){let a;return n.locals&&n.locals.forEach(c=>{c.flags&262144&&(a=Sn(a,gs(c)))}),a}function Tqe(n){return n.isDistributive&&(_M(n.checkType,n.node.trueType)||_M(n.checkType,n.node.falseType))}function Sqe(n){let a=Rr(n);if(!a.resolvedType){let c=$r(n.checkType),u=O1(n),p=Yx(u),h=gC(n,!0),T=p?h:Pr(h,O=>_M(O,n)),k={node:n,checkType:c,extendsType:$r(n.extendsType),isDistributive:!!(c.flags&262144),inferTypeParameters:PAe(n),outerTypeParameters:T,instantiations:void 0,aliasSymbol:u,aliasTypeArguments:p};a.resolvedType=Ine(k,void 0),T&&(k.instantiations=new Map,k.instantiations.set(Lf(T),a.resolvedType))}return a.resolvedType}function xqe(n){let a=Rr(n);return a.resolvedType||(a.resolvedType=UE(fr(n.typeParameter))),a.resolvedType}function MAe(n){return Re(n)?[n]:Sn(MAe(n.left),n.right)}function Aqe(n){var a;let c=Rr(n);if(!c.resolvedType){if(!ib(n))return Fe(n.argument,_.String_literal_expected),c.resolvedSymbol=Ht,c.resolvedType=ve;let u=n.isTypeOf?111551:n.flags&8388608?900095:788968,p=Gl(n,n.argument.literal);if(!p)return c.resolvedSymbol=Ht,c.resolvedType=ve;let h=!!((a=p.exports)!=null&&a.get(\"export=\")),T=Vu(p,!1);if(rc(n.qualifier))if(T.flags&u)c.resolvedType=FAe(n,c,T,u);else{let k=u===111551?_.Module_0_does_not_refer_to_a_value_but_is_used_as_a_value_here:_.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0;Fe(n,k,n.argument.literal.text),c.resolvedSymbol=Ht,c.resolvedType=ve}else{let k=MAe(n.qualifier),O=T,H;for(;H=k.shift();){let J=k.length?1920:u,de=No(Ac(O)),Ae=n.isTypeOf||Yn(n)&&h?ja(zn(de),H.escapedText,!1,!0):void 0,xe=n.isTypeOf?void 0:yd(Gd(de),H.escapedText,J),tt=xe??Ae;if(!tt)return Fe(H,_.Namespace_0_has_no_exported_member_1,rh(O),os(H)),c.resolvedType=ve;Rr(H).resolvedSymbol=tt,Rr(H.parent).resolvedSymbol=tt,O=tt}c.resolvedType=FAe(n,c,O,u)}}return c.resolvedType}function FAe(n,a,c,u){let p=Ac(c);return a.resolvedSymbol=p,u===111551?pIe(zn(c),n):YG(n,p)}function GAe(n){let a=Rr(n);if(!a.resolvedType){let c=O1(n);if(vy(n.symbol).size===0&&!c)a.resolvedType=mc;else{let u=Bd(16,n.symbol);u.aliasSymbol=c,u.aliasTypeArguments=Yx(c),kL(n)&&n.isArrayType&&(u=nu(u)),a.resolvedType=u}}return a.resolvedType}function O1(n){let a=n.parent;for(;RS(a)||VT(a)||OS(a)&&a.operator===146;)a=a.parent;return cR(a)?fr(a):void 0}function Yx(n){return n?yy(n):void 0}function rB(n){return!!(n.flags&524288)&&!uf(n)}function Lne(n){return mh(n)||!!(n.flags&474058748)}function kne(n,a){if(!(n.flags&1048576))return n;if(Ji(n.types,Lne))return wr(n.types,mh)||Ki;let c=wr(n.types,h=>!Lne(h));if(!c||wr(n.types,h=>h!==c&&!Lne(h)))return n;return p(c);function p(h){let T=Ua();for(let O of Jo(h))if(!(bf(O)&24)){if(iB(O)){let H=O.flags&65536&&!(O.flags&32768),de=wo(16777220,O.escapedName,Bte(O)|(a?8:0));de.links.type=H?Oe:ao(zn(O),!0),de.declarations=O.declarations,de.links.nameType=Ai(O).nameType,de.links.syntheticOrigin=O,T.set(O.escapedName,de)}}let k=ls(h.symbol,T,Je,Je,tu(h));return k.objectFlags|=131200,k}}function e0(n,a,c,u,p){if(n.flags&1||a.flags&1)return Se;if(n.flags&2||a.flags&2)return ue;if(n.flags&131072)return a;if(a.flags&131072)return n;if(n=kne(n,p),n.flags&1048576)return lM([n,a])?Ls(n,H=>e0(H,a,c,u,p)):ve;if(a=kne(a,p),a.flags&1048576)return lM([n,a])?Ls(a,H=>e0(n,H,c,u,p)):ve;if(a.flags&473960444)return n;if(Zb(n)||Zb(a)){if(mh(n))return a;if(n.flags&2097152){let H=n.types,J=H[H.length-1];if(rB(J)&&rB(a))return so(Qi(H.slice(0,H.length-1),[e0(J,a,c,u,p)]))}return so([n,a])}let h=Ua(),T=new Set,k=n===Ki?tu(a):xxe([n,a]);for(let H of Jo(a))bf(H)&24?T.add(H.escapedName):iB(H)&&h.set(H.escapedName,Dne(H,p));for(let H of Jo(n))if(!(T.has(H.escapedName)||!iB(H)))if(h.has(H.escapedName)){let J=h.get(H.escapedName),de=zn(J);if(J.flags&16777216){let Ae=Qi(H.declarations,J.declarations),xe=4|H.flags&16777216,tt=wo(xe,H.escapedName);tt.links.type=Gr([zn(H),tre(de)],2),tt.links.leftSpread=H,tt.links.rightSpread=J,tt.declarations=Ae,tt.links.nameType=Ai(H).nameType,h.set(H.escapedName,tt)}}else h.set(H.escapedName,Dne(H,p));let O=ls(c,h,Je,Je,Tl(k,H=>Cqe(H,p)));return O.objectFlags|=2228352|u,O}function iB(n){var a;return!vt(n.declarations,xu)&&(!(n.flags&106496)||!((a=n.declarations)!=null&&a.some(c=>Yr(c.parent))))}function Dne(n,a){let c=n.flags&65536&&!(n.flags&32768);if(!c&&a===P_(n))return n;let u=4|n.flags&16777216,p=wo(u,n.escapedName,Bte(n)|(a?8:0));return p.links.type=c?Oe:zn(n),p.declarations=n.declarations,p.links.nameType=Ai(n).nameType,p.links.syntheticOrigin=n,p}function Cqe(n,a){return n.isReadonly!==a?Fp(n.keyType,n.type,a,n.declaration):n}function uM(n,a,c,u){let p=Rp(n,c);return p.value=a,p.regularType=u||p,p}function $x(n){if(n.flags&2976){if(!n.freshType){let a=uM(n.flags,n.value,n.symbol,n);a.freshType=a,n.freshType=a}return n.freshType}return n}function Hu(n){return n.flags&2976?n.regularType:n.flags&1048576?n.regularType||(n.regularType=Ls(n,Hu)):n}function t0(n){return!!(n.flags&2976)&&n.freshType===n}function df(n){let a;return $n.get(n)||($n.set(n,a=uM(128,n)),a)}function ap(n){let a;return ui.get(n)||(ui.set(n,a=uM(256,n)),a)}function aB(n){let a,c=j0(n);return Ni.get(c)||(Ni.set(c,a=uM(2048,n)),a)}function Iqe(n,a,c){let u,p=`${a}${typeof n==\"string\"?\"@\":\"#\"}${n}`,h=1024|(typeof n==\"string\"?128:256);return Pi.get(p)||(Pi.set(p,u=uM(h,n,c)),u)}function Lqe(n){if(n.literal.kind===104)return ln;let a=Rr(n);return a.resolvedType||(a.resolvedType=Hu(Yi(n.literal))),a.resolvedType}function kqe(n){let a=Rp(8192,n);return a.escapedName=`__@${a.symbol.escapedName}@${$a(a.symbol)}`,a}function wne(n){if(ece(n)){let a=k6(n)?vd(n.left):vd(n);if(a){let c=Ai(a);return c.uniqueESSymbolType||(c.uniqueESSymbolType=kqe(a))}}return j}function Dqe(n){let a=Ku(n,!1,!1),c=a&&a.parent;if(c&&(Yr(c)||c.kind===261)&&!Ca(a)&&(!Ec(a)||CT(n,a.body)))return vu(fr(c)).thisType;if(c&&rs(c)&&ar(c.parent)&&ic(c.parent)===6)return vu(vd(c.parent.left).parent).thisType;let u=n.flags&8388608?sb(n):void 0;return u&&ms(u)&&ar(u.parent)&&ic(u.parent)===3?vu(vd(u.parent.left).parent).thisType:sp(a)&&CT(n,a.body)?vu(fr(a)).thisType:(Fe(n,_.A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface),ve)}function oB(n){let a=Rr(n);return a.resolvedType||(a.resolvedType=Dqe(n)),a.resolvedType}function BAe(n){return $r(dM(n.type)||n.type)}function dM(n){switch(n.kind){case 193:return dM(n.type);case 186:if(n.elements.length===1&&(n=n.elements[0],n.kind===188||n.kind===199&&n.dotDotDotToken))return dM(n.type);break;case 185:return n.elementType}}function wqe(n){let a=Rr(n);return a.resolvedType||(a.resolvedType=n.dotDotDotToken?BAe(n):ao($r(n.type),!0,!!n.questionToken))}function $r(n){return uKe(UAe(n),n)}function UAe(n){switch(n.kind){case 131:case 315:case 316:return Se;case 157:return ue;case 152:return ae;case 148:return rt;case 160:return Ot;case 134:return Te;case 153:return j;case 114:return yt;case 155:return Oe;case 104:return ln;case 144:return lt;case 149:return n.flags&262144&&!ge?Se:jr;case 139:return $;case 194:case 108:return oB(n);case 198:return Lqe(n);case 180:return dne(n);case 179:return n.assertsModifier?yt:Te;case 230:return dne(n);case 183:return $xe(n);case 185:case 186:return GKe(n);case 187:return jKe(n);case 189:return XKe(n);case 190:return rqe(n);case 317:return dKe(n);case 319:return ao($r(n.type));case 199:return wqe(n);case 193:case 318:case 312:return $r(n.type);case 188:return BAe(n);case 321:return Lnt(n);case 181:case 182:case 184:case 325:case 320:case 326:return GAe(n);case 195:return uqe(n);case 196:return RAe(n);case 197:return Cne(n);case 191:return Sqe(n);case 192:return xqe(n);case 200:return dqe(n);case 202:return Aqe(n);case 79:case 163:case 208:let a=Qf(n);return a?gs(a):ve;default:return ve}}function sB(n,a,c){if(n&&n.length)for(let u=0;u<n.length;u++){let p=n[u],h=c(p,a);if(p!==h){let T=u===0?[]:n.slice(0,u);for(T.push(h),u++;u<n.length;u++)T.push(c(n[u],a));return T}}return n}function hg(n,a){return sB(n,a,Oi)}function cB(n,a){return sB(n,a,Qx)}function VAe(n,a){return sB(n,a,zqe)}function Wu(n,a){return n.length===1?n0(n[0],a?a[0]:Se):Rqe(n,a)}function zv(n,a){switch(a.kind){case 0:return n===a.source?a.target:n;case 1:{let u=a.sources,p=a.targets;for(let h=0;h<u.length;h++)if(n===u[h])return p?p[h]:Se;return n}case 2:{let u=a.sources,p=a.targets;for(let h=0;h<u.length;h++)if(n===u[h])return p[h]();return n}case 3:return a.func(n);case 4:case 5:let c=zv(n,a.mapper1);return c!==n&&a.kind===4?Oi(c,a.mapper2):zv(c,a.mapper2)}}function n0(n,a){return L.attachDebugPrototypeIfDebug({kind:0,source:n,target:a})}function Rqe(n,a){return L.attachDebugPrototypeIfDebug({kind:1,sources:n,targets:a})}function fM(n,a){return L.attachDebugPrototypeIfDebug({kind:3,func:n,debugInfo:L.isDebugging?a:void 0})}function Rne(n,a){return L.attachDebugPrototypeIfDebug({kind:2,sources:n,targets:a})}function lB(n,a,c){return L.attachDebugPrototypeIfDebug({kind:n,mapper1:a,mapper2:c})}function jAe(n){return Wu(n,void 0)}function Oqe(n,a){let c=n.inferences.slice(a);return Wu(on(c,u=>u.typeParameter),on(c,()=>ue))}function Jv(n,a){return n?lB(4,n,a):a}function Nqe(n,a){return n?lB(5,n,a):a}function N1(n,a,c){return c?lB(5,n0(n,a),c):n0(n,a)}function sD(n,a,c){return n?lB(5,n,n0(a,c)):n0(a,c)}function Pqe(n){return!n.constraint&&!sne(n)||n.constraint===Co?n:n.restrictiveInstantiation||(n.restrictiveInstantiation=rd(n.symbol),n.restrictiveInstantiation.constraint=Co,n.restrictiveInstantiation)}function uB(n){let a=rd(n.symbol);return a.target=n,a}function Mqe(n,a){return aM(n.kind,n.parameterName,n.parameterIndex,Oi(n.type,a))}function Qx(n,a,c){let u;if(n.typeParameters&&!c){u=on(n.typeParameters,uB),a=Jv(Wu(n.typeParameters,u),a);for(let h of u)h.mapper=a}let p=Am(n.declaration,u,n.thisParameter&&One(n.thisParameter,a),sB(n.parameters,a,One),void 0,void 0,n.minArgumentCount,n.flags&39);return p.target=n,p.mapper=a,p}function One(n,a){let c=Ai(n);if(c.type&&!XE(c.type))return n;ac(n)&1&&(n=c.target,a=Jv(c.mapper,a));let u=wo(n.flags,n.escapedName,1|ac(n)&53256);return u.declarations=n.declarations,u.parent=n.parent,u.links.target=n,u.links.mapper=a,n.valueDeclaration&&(u.valueDeclaration=n.valueDeclaration),c.nameType&&(u.links.nameType=c.nameType),u}function Fqe(n,a,c,u){let p=n.objectFlags&4||n.objectFlags&8388608?n.node:n.symbol.declarations[0],h=Rr(p),T=n.objectFlags&4?h.resolvedType:n.objectFlags&64?n.target:n,k=h.outerTypeParameters;if(!k){let O=gC(p,!0);if(sp(p)){let J=Mxe(p);O=si(O,J)}k=O||Je;let H=n.objectFlags&8388612?[p]:n.symbol.declarations;k=(T.objectFlags&8388612||T.symbol.flags&8192||T.symbol.flags&2048)&&!T.aliasTypeArguments?Pr(k,J=>vt(H,de=>_M(J,de))):k,h.outerTypeParameters=k}if(k.length){let O=Jv(n.mapper,a),H=on(k,tt=>zv(tt,O)),J=c||n.aliasSymbol,de=c?u:hg(n.aliasTypeArguments,a),Ae=Lf(H)+zx(J,de);T.instantiations||(T.instantiations=new Map,T.instantiations.set(Lf(k)+zx(T.aliasSymbol,T.aliasTypeArguments),T));let xe=T.instantiations.get(Ae);if(!xe){let tt=Wu(k,H);xe=T.objectFlags&4?cne(n.target,n.node,tt,J,de):T.objectFlags&32?HAe(T,tt,J,de):Mne(T,tt,J,de),T.instantiations.set(Ae,xe)}return xe}return n}function Gqe(n){return!(n.parent.kind===180&&n.parent.typeArguments&&n===n.parent.typeName||n.parent.kind===202&&n.parent.typeArguments&&n===n.parent.qualifier)}function _M(n,a){if(n.symbol&&n.symbol.declarations&&n.symbol.declarations.length===1){let u=n.symbol.declarations[0].parent;for(let p=a;p!==u;p=p.parent)if(!p||p.kind===238||p.kind===191&&pa(p.extendsType,c))return!0;return c(a)}return!0;function c(u){switch(u.kind){case 194:return!!n.isThisType;case 79:return!n.isThisType&&Gm(u)&&Gqe(u)&&UAe(u)===n;case 183:let p=u.exprName,h=Xd(p),T=$f(h),k=n.symbol.declarations[0],O;if(k.kind===165)O=k.parent;else if(n.isThisType)O=k;else return!0;return T.declarations?vt(T.declarations,H=>CT(H,O))||vt(u.typeArguments,c):!0;case 171:case 170:return!u.type&&!!u.body||vt(u.typeParameters,c)||vt(u.parameters,c)||!!u.type&&c(u.type)}return!!pa(u,c)}}function Nne(n){let a=np(n);if(a.flags&4194304){let c=Cy(a.type);if(c.flags&262144)return c}}function HAe(n,a,c,u){let p=Nne(n);if(p){let h=Oi(p,a);if(p!==h)return z2e(R_(h),T=>{if(T.flags&61603843&&T!==Tt&&!Ro(T)){if(!n.declaration.nameType){let k;if(ff(T)||T.flags&1&&Sm(p,4)<0&&(k=eu(p))&&Im(k,JE))return Uqe(T,n,N1(p,T,a));if(Zx(T))return Bqe(T,n,p,a);if(po(T))return Vqe(T,n,N1(p,T,a))}return Mne(n,N1(p,T,a))}return T},c,u)}return Oi(np(n),a)===Tt?Tt:Mne(n,a,c,u)}function Pne(n,a){return a&1?!0:a&2?!1:n}function Bqe(n,a,c,u){let p=n.target.elementFlags,h=on(Ko(n),(k,O)=>{let H=p[O]&8?k:p[O]&4?nu(k):ip([k],[p[O]]);return HAe(a,N1(c,H,u))}),T=Pne(n.target.readonly,Pp(a));return ip(h,on(h,k=>8),T)}function Uqe(n,a,c){let u=WAe(a,rt,!0,c);return Ro(u)?ve:nu(u,Pne(IC(n),Pp(a)))}function Vqe(n,a,c){let u=n.target.elementFlags,p=on(Ko(n),(O,H)=>WAe(a,df(\"\"+H),!!(u[H]&2),c)),h=Pp(a),T=h&4?on(u,O=>O&1?2:O):h&8?on(u,O=>O&2?1:O):u,k=Pne(n.target.readonly,h);return ya(p,ve)?ve:ip(p,T,k,n.target.labeledElementDeclarations)}function WAe(n,a,c,u){let p=sD(u,D_(n),a),h=Oi(_h(n.target||n),p),T=Pp(n);return U&&T&4&&!Js(h,49152)?gg(h,!0):U&&T&8&&c?Df(h,524288):h}function Mne(n,a,c,u){let p=Bd(n.objectFlags|64,n.symbol);if(n.objectFlags&32){p.declaration=n.declaration;let h=D_(n),T=uB(h);p.typeParameter=T,a=Jv(n0(h,T),a),T.mapper=a}return n.objectFlags&8388608&&(p.node=n.node),p.target=n,p.mapper=a,p.aliasSymbol=c||n.aliasSymbol,p.aliasTypeArguments=c?u:hg(n.aliasTypeArguments,a),p.objectFlags|=p.aliasTypeArguments?qG(p.aliasTypeArguments):0,p}function Fne(n,a,c,u){let p=n.root;if(p.outerTypeParameters){let h=on(p.outerTypeParameters,O=>zv(O,a)),T=Lf(h)+zx(c,u),k=p.instantiations.get(T);if(!k){let O=Wu(p.outerTypeParameters,h),H=p.checkType,J=p.isDistributive?zv(H,O):void 0;k=J&&H!==J&&J.flags&1179648?z2e(R_(J),de=>Ine(p,N1(H,de,O)),c,u):Ine(p,O,c,u),p.instantiations.set(T,k)}return k}return n}function Oi(n,a){return n&&a?zAe(n,a,void 0,void 0):n}function zAe(n,a,c,u){var p;if(!XE(n))return n;if(w===100||A>=5e6)return(p=ai)==null||p.instant(ai.Phase.CheckTypes,\"instantiateType_DepthLimit\",{typeId:n.id,instantiationDepth:w,instantiationCount:A}),Fe(P,_.Type_instantiation_is_excessively_deep_and_possibly_infinite),ve;x++,A++,w++;let h=jqe(n,a,c,u);return w--,h}function jqe(n,a,c,u){let p=n.flags;if(p&262144)return zv(n,a);if(p&524288){let h=n.objectFlags;if(h&52){if(h&4&&!n.node){let T=n.resolvedTypeArguments,k=hg(T,a);return k!==T?yne(n.target,k):n}return h&1024?Hqe(n,a):Fqe(n,a,c,u)}return n}if(p&3145728){let h=n.flags&1048576?n.origin:void 0,T=h&&h.flags&3145728?h.types:n.types,k=hg(T,a);if(k===T&&c===n.aliasSymbol)return n;let O=c||n.aliasSymbol,H=c?u:hg(n.aliasTypeArguments,a);return p&2097152||h&&h.flags&2097152?so(k,O,H):Gr(k,1,O,H)}if(p&4194304)return Gp(Oi(n.type,a));if(p&134217728)return WE(n.texts,hg(n.types,a));if(p&268435456)return R1(n.symbol,Oi(n.type,a));if(p&8388608){let h=c||n.aliasSymbol,T=c?u:hg(n.aliasTypeArguments,a);return od(Oi(n.objectType,a),Oi(n.indexType,a),n.accessFlags,void 0,h,T)}if(p&16777216)return Fne(n,Jv(n.mapper,a),c,u);if(p&33554432){let h=Oi(n.baseType,a),T=Oi(n.constraint,a);return h.flags&8650752&&xC(T)?lne(h,T):T.flags&3||to(zE(h),zE(T))?h:h.flags&8650752?lne(h,T):so([T,h])}return n}function Hqe(n,a){let c=Oi(n.mappedType,a);if(!(Ur(c)&32))return n;let u=Oi(n.constraintType,a);if(!(u.flags&4194304))return n;let p=T2e(Oi(n.source,a),c,u);return p||n}function Wqe(n){return n.flags&134479871?n:n.uniqueLiteralFilledInstantiation||(n.uniqueLiteralFilledInstantiation=Oi(n,Fo))}function dB(n){return n.flags&134479871?n:n.permissiveInstantiation||(n.permissiveInstantiation=Oi(n,xi))}function zE(n){return n.flags&134479871?n:(n.restrictiveInstantiation||(n.restrictiveInstantiation=Oi(n,Hi),n.restrictiveInstantiation.restrictiveInstantiation=n.restrictiveInstantiation),n.restrictiveInstantiation)}function zqe(n,a){return Fp(n.keyType,Oi(n.type,a),n.isReadonly,n.declaration)}function Yf(n){switch(L.assert(n.kind!==171||o_(n)),n.kind){case 215:case 216:case 171:case 259:return JAe(n);case 207:return vt(n.properties,Yf);case 206:return vt(n.elements,Yf);case 224:return Yf(n.whenTrue)||Yf(n.whenFalse);case 223:return(n.operatorToken.kind===56||n.operatorToken.kind===60)&&(Yf(n.left)||Yf(n.right));case 299:return Yf(n.initializer);case 214:return Yf(n.expression);case 289:return vt(n.properties,Yf)||Xm(n.parent)&&vt(n.parent.parent.children,Yf);case 288:{let{initializer:a}=n;return!!a&&Yf(a)}case 291:{let{expression:a}=n;return!!a&&Yf(a)}}return!1}function JAe(n){return b4(n)||Jqe(n)}function Jqe(n){return!n.typeParameters&&!B_(n)&&!!n.body&&n.body.kind!==238&&Yf(n.body)}function fB(n){return(o2(n)||o_(n))&&JAe(n)}function KAe(n){if(n.flags&524288){let a=w_(n);if(a.constructSignatures.length||a.callSignatures.length){let c=Bd(16,n.symbol);return c.members=a.members,c.properties=a.properties,c.callSignatures=Je,c.constructSignatures=Je,c.indexInfos=Je,c}}else if(n.flags&2097152)return so(on(n.types,KAe));return n}function ph(n,a){return Bp(n,a,td)}function cD(n,a){return Bp(n,a,td)?-1:0}function Gne(n,a){return Bp(n,a,Zu)?-1:0}function Kqe(n,a){return Bp(n,a,hm)?-1:0}function Iy(n,a){return Bp(n,a,hm)}function qAe(n,a){return Bp(n,a,S_)}function to(n,a){return Bp(n,a,Zu)}function r0(n,a){return n.flags&1048576?Ji(n.types,c=>r0(c,a)):a.flags&1048576?vt(a.types,c=>r0(n,c)):n.flags&2097152?vt(n.types,c=>r0(c,a)):n.flags&58982400?r0(bu(n)||ue,a):hh(a)?!!(n.flags&67633152):a===ka?!!(n.flags&67633152)&&!hh(n):a===Hs?!!(n.flags&524288)&&vre(n):BE(n,Ux(a))||ff(a)&&!IC(a)&&r0(n,jo)}function _B(n,a){return Bp(n,a,ed)}function pM(n,a){return _B(n,a)||_B(a,n)}function wu(n,a,c,u,p,h){return kf(n,a,Zu,c,u,p,h)}function Ly(n,a,c,u,p,h){return Bne(n,a,Zu,c,u,p,h,void 0)}function Bne(n,a,c,u,p,h,T,k){return Bp(n,a,c)?!0:!u||!lD(p,n,a,c,h,T,k)?kf(n,a,c,u,h,T,k):!1}function XAe(n){return!!(n.flags&16777216||n.flags&2097152&&vt(n.types,XAe))}function lD(n,a,c,u,p,h,T){if(!n||XAe(c))return!1;if(!kf(a,c,u,void 0)&&qqe(n,a,c,u,p,h,T))return!0;switch(n.kind){case 291:case 214:return lD(n.expression,a,c,u,p,h,T);case 223:switch(n.operatorToken.kind){case 63:case 27:return lD(n.right,a,c,u,p,h,T)}break;case 207:return nXe(n,a,c,u,h,T);case 206:return eXe(n,a,c,u,h,T);case 289:return Zqe(n,a,c,u,h,T);case 216:return Xqe(n,a,c,u,h,T)}return!1}function qqe(n,a,c,u,p,h,T){let k=xa(a,0),O=xa(a,1);for(let H of[O,k])if(vt(H,J=>{let de=qo(J);return!(de.flags&131073)&&kf(de,c,u,void 0)})){let J=T||{};wu(a,c,n,p,h,J);let de=J.errors[J.errors.length-1];return Ao(de,hr(n,H===O?_.Did_you_mean_to_use_new_with_this_expression:_.Did_you_mean_to_call_this_expression)),!0}return!1}function Xqe(n,a,c,u,p,h){if(Va(n.body)||vt(n.parameters,f6))return!1;let T=G1(a);if(!T)return!1;let k=xa(c,0);if(!Fn(k))return!1;let O=n.body,H=qo(T),J=Gr(on(k,qo));if(!kf(H,J,u,void 0)){let de=O&&lD(O,H,J,u,void 0,p,h);if(de)return de;let Ae=h||{};if(kf(H,J,u,O,void 0,p,Ae),Ae.errors)return c.symbol&&Fn(c.symbol.declarations)&&Ao(Ae.errors[Ae.errors.length-1],hr(c.symbol.declarations[0],_.The_expected_type_comes_from_the_return_type_of_this_signature)),(pl(n)&2)===0&&!Vc(H,\"then\")&&kf(HM(H),J,u,void 0)&&Ao(Ae.errors[Ae.errors.length-1],hr(n,_.Did_you_mean_to_mark_this_function_as_async)),!0}return!1}function YAe(n,a,c){let u=Ay(a,c);if(u)return u;if(a.flags&1048576){let p=i2e(n,a);if(p)return Ay(p,c)}}function $Ae(n,a){RM(n,a,!1);let c=UC(n,1);return bD(),c}function mM(n,a,c,u,p,h){let T=!1;for(let k of n){let{errorNode:O,innerExpression:H,nameType:J,errorMessage:de}=k,Ae=YAe(a,c,J);if(!Ae||Ae.flags&8388608)continue;let xe=Ay(a,J);if(!xe)continue;let tt=eB(J,void 0);if(!kf(xe,Ae,u,void 0)){let It=H&&lD(H,xe,Ae,u,void 0,p,h);if(T=!0,!It){let Tn=h||{},un=H?$Ae(H,xe):xe;if(Pe&&mB(un,Ae)){let Nn=hr(O,_.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target,Ee(un),Ee(Ae));Lo.add(Nn),Tn.errors=[Nn]}else{let Nn=!!(tt&&(ja(c,tt)||Ht).flags&16777216),en=!!(tt&&(ja(a,tt)||Ht).flags&16777216);Ae=KE(Ae,Nn),xe=KE(xe,Nn&&en),kf(un,Ae,u,O,de,p,Tn)&&un!==xe&&kf(xe,Ae,u,O,de,p,Tn)}if(Tn.errors){let Nn=Tn.errors[Tn.errors.length-1],en=fh(J)?Np(J):void 0,cn=en!==void 0?ja(c,en):void 0,rr=!1;if(!cn){let Jt=iM(c,J);Jt&&Jt.declaration&&!Gn(Jt.declaration).hasNoDefaultLib&&(rr=!0,Ao(Nn,hr(Jt.declaration,_.The_expected_type_comes_from_this_index_signature)))}if(!rr&&(cn&&Fn(cn.declarations)||c.symbol&&Fn(c.symbol.declarations))){let Jt=cn&&Fn(cn.declarations)?cn.declarations[0]:c.symbol.declarations[0];Gn(Jt).hasNoDefaultLib||Ao(Nn,hr(Jt,_.The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1,en&&!(J.flags&8192)?Gi(en):Ee(J),Ee(c)))}}}}}return T}function Yqe(n,a,c,u,p,h){let T=jc(c,EB),k=jc(c,J=>!EB(J)),O=k!==lt?Oie(13,0,k,void 0):void 0,H=!1;for(let J=n.next();!J.done;J=n.next()){let{errorNode:de,innerExpression:Ae,nameType:xe,errorMessage:tt}=J.value,It=O,Tn=T!==lt?YAe(a,T,xe):void 0;if(Tn&&!(Tn.flags&8388608)&&(It=O?Gr([O,Tn]):Tn),!It)continue;let un=Ay(a,xe);if(!un)continue;let Nn=eB(xe,void 0);if(!kf(un,It,u,void 0)){let en=Ae&&lD(Ae,un,It,u,void 0,p,h);if(H=!0,!en){let cn=h||{},rr=Ae?$Ae(Ae,un):un;if(Pe&&mB(rr,It)){let Jt=hr(de,_.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target,Ee(rr),Ee(It));Lo.add(Jt),cn.errors=[Jt]}else{let Jt=!!(Nn&&(ja(T,Nn)||Ht).flags&16777216),Cn=!!(Nn&&(ja(a,Nn)||Ht).flags&16777216);It=KE(It,Jt),un=KE(un,Jt&&Cn),kf(rr,It,u,de,tt,p,cn)&&rr!==un&&kf(un,It,u,de,tt,p,cn)}}}}return H}function*$qe(n){if(!!Fn(n.properties))for(let a of n.properties)BT(a)||Fre(vr(a.name))||(yield{errorNode:a.name,innerExpression:a.initializer,nameType:df(vr(a.name))})}function*Qqe(n,a){if(!Fn(n.children))return;let c=0;for(let u=0;u<n.children.length;u++){let p=n.children[u],h=ap(u-c),T=QAe(p,h,a);T?yield T:c++}}function QAe(n,a,c){switch(n.kind){case 291:return{errorNode:n,innerExpression:n.expression,nameType:a};case 11:if(n.containsOnlyTriviaWhiteSpaces)break;return{errorNode:n,innerExpression:void 0,nameType:a,errorMessage:c()};case 281:case 282:case 285:return{errorNode:n,innerExpression:n,nameType:a};default:return L.assertNever(n,\"Found invalid jsx child\")}}function Zqe(n,a,c,u,p,h){let T=mM($qe(n),a,c,u,p,h),k;if(Xm(n.parent)&&Hg(n.parent.parent)){let H=n.parent.parent,J=HB(nA(n)),de=J===void 0?\"children\":Gi(J),Ae=df(de),xe=od(c,Ae),tt=ER(H.children);if(!Fn(tt))return T;let It=Fn(tt)>1,Tn,un;if(pne(!1)!==ro){let en=cAe(Se);Tn=jc(xe,cn=>to(cn,en)),un=jc(xe,cn=>!to(cn,en))}else Tn=jc(xe,EB),un=jc(xe,en=>!EB(en));if(It){if(Tn!==lt){let en=ip(jB(H,0)),cn=Qqe(H,O);T=Yqe(cn,en,Tn,u,p,h)||T}else if(!Bp(od(a,Ae),xe,u)){T=!0;let en=Fe(H.openingElement.tagName,_.This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided,de,Ee(xe));h&&h.skipLogging&&(h.errors||(h.errors=[])).push(en)}}else if(un!==lt){let en=tt[0],cn=QAe(en,Ae,O);cn&&(T=mM(function*(){yield cn}(),a,c,u,p,h)||T)}else if(!Bp(od(a,Ae),xe,u)){T=!0;let en=Fe(H.openingElement.tagName,_.This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_provided,de,Ee(xe));h&&h.skipLogging&&(h.errors||(h.errors=[])).push(en)}}return T;function O(){if(!k){let H=Qc(n.parent.tagName),J=HB(nA(n)),de=J===void 0?\"children\":Gi(J),Ae=od(c,df(de)),xe=_._0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_type_of_1_is_2;k={...xe,key:\"!!ALREADY FORMATTED!!\",message:TW(void 0,xe,H,de,Ee(Ae))}}return k}}function*ZAe(n,a){let c=Fn(n.elements);if(!!c)for(let u=0;u<c;u++){if(LC(a)&&!ja(a,\"\"+u))continue;let p=n.elements[u];if(ol(p))continue;let h=ap(u);yield{errorNode:p,innerExpression:p,nameType:h}}}function eXe(n,a,c,u,p,h){if(c.flags&134479868)return!1;if(LC(a))return mM(ZAe(n,c),a,c,u,p,h);RM(n,c,!1);let T=gCe(n,1,!0);return bD(),LC(T)?mM(ZAe(n,c),T,c,u,p,h):!1}function*tXe(n){if(!!Fn(n.properties))for(let a of n.properties){if(jS(a))continue;let c=SC(fr(a),8576);if(!(!c||c.flags&131072))switch(a.kind){case 175:case 174:case 171:case 300:yield{errorNode:a.name,innerExpression:void 0,nameType:c};break;case 299:yield{errorNode:a.name,innerExpression:a.initializer,nameType:c,errorMessage:jw(a.name)?_.Type_of_computed_property_s_value_is_0_which_is_not_assignable_to_type_1:void 0};break;default:L.assertNever(a)}}}function nXe(n,a,c,u,p,h){return c.flags&134479868?!1:mM(tXe(n),a,c,u,p,h)}function e2e(n,a,c,u,p){return kf(n,a,ed,c,u,p)}function rXe(n,a,c){return Une(n,a,c?4:0,!1,void 0,void 0,Gne,void 0)!==0}function pB(n){if(!n.typeParameters&&(!n.thisParameter||Zo(VM(n.thisParameter)))&&n.parameters.length===1&&Xl(n)){let a=VM(n.parameters[0]);return!!((ff(a)?Ko(a)[0]:a).flags&131073&&qo(n).flags&3)}return!1}function Une(n,a,c,u,p,h,T,k){if(n===a||!(c&16&&pB(n))&&pB(a))return-1;if(c&16&&pB(n)&&!pB(a))return 0;let O=xd(a);if(!jp(a)&&(c&8?jp(n)||xd(n)>O:Vp(n)>O))return 0;n.typeParameters&&n.typeParameters!==a.typeParameters&&(a=iKe(a),n=qCe(n,a,void 0,T));let J=xd(n),de=CD(n),Ae=CD(a);(de||Ae)&&Oi(de||Ae,k);let xe=a.declaration?a.declaration.kind:0,tt=!(c&3)&&re&&xe!==171&&xe!==170&&xe!==173,It=-1,Tn=Yb(n);if(Tn&&Tn!==yt){let en=Yb(a);if(en){let cn=!tt&&T(Tn,en,!1)||T(en,Tn,u);if(!cn)return u&&p(_.The_this_types_of_each_signature_are_incompatible),0;It&=cn}}let un=de||Ae?Math.min(J,O):Math.max(J,O),Nn=de||Ae?un-1:-1;for(let en=0;en<un;en++){let cn=en===Nn?xD(n,en):tT(n,en),rr=en===Nn?xD(a,en):tT(a,en);if(cn&&rr){let Jt=c&3?void 0:G1(yg(cn)),Cn=c&3?void 0:G1(yg(rr)),Br=Jt&&Cn&&!If(Jt)&&!If(Cn)&&(iu(cn)&50331648)===(iu(rr)&50331648)?Une(Cn,Jt,c&8|(tt?2:1),u,p,h,T,k):!(c&3)&&!tt&&T(cn,rr,!1)||T(rr,cn,u);if(Br&&c&8&&en>=Vp(n)&&en<Vp(a)&&T(cn,rr,!1)&&(Br=0),!Br)return u&&p(_.Types_of_parameters_0_and_1_are_incompatible,Gi(GC(n,en)),Gi(GC(a,en))),0;It&=Br}}if(!(c&4)){let en=rne(a)?Se:a.declaration&&sp(a.declaration)?vu(No(a.declaration.symbol)):qo(a);if(en===yt||en===Se)return It;let cn=rne(n)?Se:n.declaration&&sp(n.declaration)?vu(No(n.declaration.symbol)):qo(n),rr=If(a);if(rr){let Jt=If(n);if(Jt)It&=iXe(Jt,rr,u,p,T);else if(nce(rr))return u&&p(_.Signature_0_must_be_a_type_predicate,ne(n)),0}else It&=c&1&&T(en,cn,!1)||T(cn,en,u),!It&&u&&h&&h(cn,en)}return It}function iXe(n,a,c,u,p){if(n.kind!==a.kind)return c&&(u(_.A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard),u(_.Type_predicate_0_is_not_assignable_to_1,kl(n),kl(a))),0;if((n.kind===1||n.kind===3)&&n.parameterIndex!==a.parameterIndex)return c&&(u(_.Parameter_0_is_not_in_the_same_position_as_parameter_1,n.parameterName,a.parameterName),u(_.Type_predicate_0_is_not_assignable_to_1,kl(n),kl(a))),0;let h=n.type===a.type?-1:n.type&&a.type?p(n.type,a.type,c):0;return h===0&&c&&u(_.Type_predicate_0_is_not_assignable_to_1,kl(n),kl(a)),h}function aXe(n,a){let c=nD(n),u=nD(a),p=qo(c),h=qo(u);return h===yt||Bp(h,p,Zu)||Bp(p,h,Zu)?rXe(c,u,!0):!1}function Vne(n){return n!==aa&&n.properties.length===0&&n.callSignatures.length===0&&n.constructSignatures.length===0&&n.indexInfos.length===0}function mh(n){return n.flags&524288?!uf(n)&&Vne(w_(n)):n.flags&67108864?!0:n.flags&1048576?vt(n.types,mh):n.flags&2097152?Ji(n.types,mh):!1}function hh(n){return!!(Ur(n)&16&&(n.members&&Vne(n)||n.symbol&&n.symbol.flags&2048&&vy(n.symbol).size===0))}function oXe(n){if(U&&n.flags&1048576){if(!(n.objectFlags&33554432)){let a=n.types;n.objectFlags|=33554432|(a.length>=3&&a[0].flags&32768&&a[1].flags&65536&&vt(a,hh)?67108864:0)}return!!(n.objectFlags&67108864)}return!1}function AC(n){return!!((n.flags&1048576?n.types[0]:n).flags&32768)}function t2e(n){return n.flags&524288&&!uf(n)&&Jo(n).length===0&&tu(n).length===1&&!!Cm(n,ae)||n.flags&3145728&&Ji(n.types,t2e)||!1}function jne(n,a,c){let u=n.flags&8?ju(n):n,p=a.flags&8?ju(a):a;if(u===p)return!0;if(u.escapedName!==p.escapedName||!(u.flags&256)||!(p.flags&256))return!1;let h=$a(u)+\",\"+$a(p),T=kb.get(h);if(T!==void 0&&!(!(T&4)&&T&2&&c))return!!(T&1);let k=zn(p);for(let O of Jo(zn(u)))if(O.flags&8){let H=ja(k,O.escapedName);if(!H||!(H.flags&8))return c?(c(_.Property_0_is_missing_in_type_1,fc(O),Ee(gs(p),void 0,64)),kb.set(h,6)):kb.set(h,2),!1}return kb.set(h,1),!0}function uD(n,a,c,u){let p=n.flags,h=a.flags;return h&1||p&131072||n===Tt||h&2&&!(c===S_&&p&1)?!0:h&131072?!1:!!(p&402653316&&h&4||p&128&&p&1024&&h&128&&!(h&1024)&&n.value===a.value||p&296&&h&8||p&256&&p&1024&&h&256&&!(h&1024)&&n.value===a.value||p&2112&&h&64||p&528&&h&16||p&12288&&h&4096||p&32&&h&32&&n.symbol.escapedName===a.symbol.escapedName&&jne(n.symbol,a.symbol,u)||p&1024&&h&1024&&(p&1048576&&h&1048576&&jne(n.symbol,a.symbol,u)||p&2944&&h&2944&&n.value===a.value&&jne(n.symbol,a.symbol,u))||p&32768&&(!U&&!(h&3145728)||h&49152)||p&65536&&(!U&&!(h&3145728)||h&65536)||p&524288&&h&67108864&&!(c===S_&&hh(n)&&!(Ur(n)&8192))||(c===Zu||c===ed)&&(p&1||p&8&&(h&32||h&256&&h&1024)||p&256&&!(p&1024)&&(h&32||h&256&&h&1024&&n.value===a.value)||oXe(a)))}function Bp(n,a,c){if(t0(n)&&(n=n.regularType),t0(a)&&(a=a.regularType),n===a)return!0;if(c!==td){if(c===ed&&!(a.flags&131072)&&uD(a,n,c)||uD(n,a,c))return!0}else if(!((n.flags|a.flags)&61865984)){if(n.flags!==a.flags)return!1;if(n.flags&67358815)return!0}if(n.flags&524288&&a.flags&524288){let u=c.get(Kne(n,a,0,c,!1));if(u!==void 0)return!!(u&1)}return n.flags&469499904||a.flags&469499904?kf(n,a,c,void 0):!1}function n2e(n,a){return Ur(n)&2048&&Fre(a.escapedName)}function hM(n,a){for(;;){let c=t0(n)?n.regularType:Ur(n)&4?n.node?_g(n.target,Ko(n)):Yne(n)||n:n.flags&3145728?sXe(n,a):n.flags&33554432?a?n.baseType:une(n):n.flags&25165824?mg(n,a):n;if(c===n)return c;n=c}}function sXe(n,a){let c=R_(n);if(c!==n)return c;if(n.flags&2097152&&vt(n.types,hh)){let u=Tl(n.types,p=>hM(p,a));if(u!==n.types)return so(u)}return n}function kf(n,a,c,u,p,h,T){var k;let O,H,J,de,Ae,xe=0,tt=0,It=0,Tn=0,un=!1,Nn=0,en,cn;L.assert(c!==td||!u,\"no error reporting in identity checking\");let rr=ji(n,a,3,!!u,p);if(cn&&Br(),un){(k=ai)==null||k.instant(ai.Phase.CheckTypes,\"checkTypeRelatedTo_DepthLimit\",{sourceId:n.id,targetId:a.id,depth:tt,targetDepth:It});let ze=Fe(u||P,_.Excessive_stack_depth_comparing_types_0_and_1,Ee(n),Ee(a));T&&(T.errors||(T.errors=[])).push(ze)}else if(O){if(h){let Ut=h();Ut&&(gle(Ut,O),O=Ut)}let ze;if(p&&u&&!rr&&n.symbol){let Ut=Ai(n.symbol);if(Ut.originatingImport&&!Dd(Ut.originatingImport)&&kf(zn(Ut.target),a,c,void 0)){let Zn=hr(Ut.originatingImport,_.Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cause_a_failure_at_runtime_Consider_using_a_default_import_or_import_require_here_instead);ze=Sn(ze,Zn)}}let dt=Lh(Gn(u),u,O,ze);H&&Ao(dt,...H),T&&(T.errors||(T.errors=[])).push(dt),(!T||!T.skipLogging)&&Lo.add(dt)}return u&&T&&T.skipLogging&&rr===0&&L.assert(!!T.errors,\"missed opportunity to interact with error.\"),rr!==0;function Jt(ze){O=ze.errorInfo,en=ze.lastSkippedInfo,cn=ze.incompatibleStack,Nn=ze.overrideNextErrorInfo,H=ze.relatedInfo}function Cn(){return{errorInfo:O,lastSkippedInfo:en,incompatibleStack:cn?.slice(),overrideNextErrorInfo:Nn,relatedInfo:H?.slice()}}function Rn(ze,dt,Ut,wn,Zn){Nn++,en=void 0,(cn||(cn=[])).push([ze,dt,Ut,wn,Zn])}function Br(){let ze=cn||[];cn=void 0;let dt=en;if(en=void 0,ze.length===1){Hr(...ze[0]),dt&&wa(void 0,...dt);return}let Ut=\"\",wn=[];for(;ze.length;){let[Zn,...fn]=ze.pop();switch(Zn.code){case _.Types_of_property_0_are_incompatible.code:{Ut.indexOf(\"new \")===0&&(Ut=`(${Ut})`);let sr=\"\"+fn[0];Ut.length===0?Ut=`${sr}`:r_(sr,Do(Y))?Ut=`${Ut}.${sr}`:sr[0]===\"[\"&&sr[sr.length-1]===\"]\"?Ut=`${Ut}${sr}`:Ut=`${Ut}[${sr}]`;break}case _.Call_signature_return_types_0_and_1_are_incompatible.code:case _.Construct_signature_return_types_0_and_1_are_incompatible.code:case _.Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code:case _.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code:{if(Ut.length===0){let sr=Zn;Zn.code===_.Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code?sr=_.Call_signature_return_types_0_and_1_are_incompatible:Zn.code===_.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code&&(sr=_.Construct_signature_return_types_0_and_1_are_incompatible),wn.unshift([sr,fn[0],fn[1]])}else{let sr=Zn.code===_.Construct_signature_return_types_0_and_1_are_incompatible.code||Zn.code===_.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code?\"new \":\"\",Ar=Zn.code===_.Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code||Zn.code===_.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code?\"\":\"...\";Ut=`${sr}${Ut}(${Ar})`}break}case _.Type_at_position_0_in_source_is_not_compatible_with_type_at_position_1_in_target.code:{wn.unshift([_.Type_at_position_0_in_source_is_not_compatible_with_type_at_position_1_in_target,fn[0],fn[1]]);break}case _.Type_at_positions_0_through_1_in_source_is_not_compatible_with_type_at_position_2_in_target.code:{wn.unshift([_.Type_at_positions_0_through_1_in_source_is_not_compatible_with_type_at_position_2_in_target,fn[0],fn[1],fn[2]]);break}default:return L.fail(`Unhandled Diagnostic: ${Zn.code}`)}}Ut?Hr(Ut[Ut.length-1]===\")\"?_.The_types_returned_by_0_are_incompatible_between_these_types:_.The_types_of_0_are_incompatible_between_these_types,Ut):wn.shift();for(let[Zn,...fn]of wn){let sr=Zn.elidedInCompatabilityPyramid;Zn.elidedInCompatabilityPyramid=!1,Hr(Zn,...fn),Zn.elidedInCompatabilityPyramid=sr}dt&&wa(void 0,...dt)}function Hr(ze,dt,Ut,wn,Zn){L.assert(!!u),cn&&Br(),!ze.elidedInCompatabilityPyramid&&(O=da(O,ze,dt,Ut,wn,Zn))}function qi(ze){L.assert(!!O),H?H.push(ze):H=[ze]}function wa(ze,dt,Ut){cn&&Br();let[wn,Zn]=Wt(dt,Ut),fn=dt,sr=wn;if(dD(dt)&&!Hne(Ut)&&(fn=ky(dt),L.assert(!to(fn,Ut),\"generalized source shouldn't be assignable\"),sr=lr(fn)),(Ut.flags&8388608&&!(dt.flags&8388608)?Ut.objectType.flags:Ut.flags)&262144&&Ut!==ss&&Ut!==qs){let Ei=bu(Ut),ia;Ei&&(to(fn,Ei)||(ia=to(dt,Ei)))?Hr(_._0_is_assignable_to_the_constraint_of_type_1_but_1_could_be_instantiated_with_a_different_subtype_of_constraint_2,ia?wn:sr,Zn,Ee(Ei)):(O=void 0,Hr(_._0_could_be_instantiated_with_an_arbitrary_type_which_could_be_unrelated_to_1,Zn,sr))}if(ze)ze===_.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1&&Pe&&r2e(dt,Ut).length&&(ze=_.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties);else if(c===ed)ze=_.Type_0_is_not_comparable_to_type_1;else if(wn===Zn)ze=_.Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated;else if(Pe&&r2e(dt,Ut).length)ze=_.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties;else{if(dt.flags&128&&Ut.flags&1048576){let Ei=uQe(dt,Ut);if(Ei){Hr(_.Type_0_is_not_assignable_to_type_1_Did_you_mean_2,sr,Zn,Ee(Ei));return}}ze=_.Type_0_is_not_assignable_to_type_1}Hr(ze,sr,Zn)}function Xc(ze,dt){let Ut=ci(ze.symbol)?Ee(ze,ze.symbol.valueDeclaration):Ee(ze),wn=ci(dt.symbol)?Ee(dt,dt.symbol.valueDeclaration):Ee(dt);(Ws===ze&&ae===dt||hd===ze&&rt===dt||vc===ze&&Te===dt||iAe()===ze&&j===dt)&&Hr(_._0_is_a_primitive_but_1_is_a_wrapper_object_Prefer_using_0_when_possible,wn,Ut)}function _f(ze,dt,Ut){return po(ze)?ze.target.readonly&&vB(dt)?(Ut&&Hr(_.The_type_0_is_readonly_and_cannot_be_assigned_to_the_mutable_type_1,Ee(ze),Ee(dt)),!1):JE(dt):IC(ze)&&vB(dt)?(Ut&&Hr(_.The_type_0_is_readonly_and_cannot_be_assigned_to_the_mutable_type_1,Ee(ze),Ee(dt)),!1):po(dt)?ff(ze):!0}function Hd(ze,dt,Ut){return ji(ze,dt,3,Ut)}function ji(ze,dt,Ut=3,wn=!1,Zn,fn=0){if(ze.flags&524288&&dt.flags&134348796)return c===ed&&!(dt.flags&131072)&&uD(dt,ze,c)||uD(ze,dt,c,wn?Hr:void 0)?-1:(wn&&In(ze,dt,ze,dt,Zn),0);let sr=hM(ze,!1),Ar=hM(dt,!0);if(sr===Ar)return-1;if(c===td)return sr.flags!==Ar.flags?0:sr.flags&67358815?-1:(qn(sr,Ar),Mn(sr,Ar,!1,0,Ut));if(sr.flags&262144&&VE(sr)===Ar)return-1;if(sr.flags&470302716&&Ar.flags&1048576){let Ei=Ar.types,ia=Ei.length===2&&Ei[0].flags&98304?Ei[1]:Ei.length===3&&Ei[0].flags&98304&&Ei[1].flags&98304?Ei[2]:void 0;if(ia&&!(ia.flags&98304)&&(Ar=hM(ia,!0),sr===Ar))return-1}if(c===ed&&!(Ar.flags&131072)&&uD(Ar,sr,c)||uD(sr,Ar,c,wn?Hr:void 0))return-1;if(sr.flags&469499904||Ar.flags&469499904){if(!(fn&2)&&Xv(sr)&&Ur(sr)&8192&&ga(sr,Ar,wn))return wn&&wa(Zn,sr,dt.aliasSymbol?dt:Ar),0;let ia=(c!==ed||O_(sr))&&!(fn&2)&&sr.flags&136970236&&sr!==ka&&Ar.flags&2621440&&a2e(Ar)&&(Jo(sr).length>0||EU(sr)),Aa=!!(Ur(sr)&2048);if(ia&&!lXe(sr,Ar,Aa)){if(wn){let Oa=Ee(ze.aliasSymbol?ze:sr),mo=Ee(dt.aliasSymbol?dt:Ar),co=xa(sr,0),as=xa(sr,1);co.length>0&&ji(qo(co[0]),Ar,1,!1)||as.length>0&&ji(qo(as[0]),Ar,1,!1)?Hr(_.Value_of_type_0_has_no_properties_in_common_with_type_1_Did_you_mean_to_call_it,Oa,mo):Hr(_.Type_0_has_no_properties_in_common_with_type_1,Oa,mo)}return 0}qn(sr,Ar);let Zr=sr.flags&1048576&&sr.types.length<4&&!(Ar.flags&1048576)||Ar.flags&1048576&&Ar.types.length<4&&!(sr.flags&469499904)?ko(sr,Ar,wn,fn):Mn(sr,Ar,wn,fn,Ut);if(Zr)return Zr}return wn&&In(ze,dt,sr,Ar,Zn),0}function In(ze,dt,Ut,wn,Zn){var fn,sr;let Ar=!!Yne(ze),Ei=!!Yne(dt);Ut=ze.aliasSymbol||Ar?ze:Ut,wn=dt.aliasSymbol||Ei?dt:wn;let ia=Nn>0;if(ia&&Nn--,Ut.flags&524288&&wn.flags&524288){let Aa=O;_f(Ut,wn,!0),O!==Aa&&(ia=!!O)}if(Ut.flags&524288&&wn.flags&134348796)Xc(Ut,wn);else if(Ut.symbol&&Ut.flags&524288&&ka===Ut)Hr(_.The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead);else if(Ur(Ut)&2048&&wn.flags&2097152){let Aa=wn.types,Ra=s0($d.IntrinsicAttributes,u),Zr=s0($d.IntrinsicClassAttributes,u);if(!Ro(Ra)&&!Ro(Zr)&&(ya(Aa,Ra)||ya(Aa,Zr)))return}else O=Xte(O,dt);if(!Zn&&ia){en=[Ut,wn];return}if(wa(Zn,Ut,wn),Ut.flags&262144&&((sr=(fn=Ut.symbol)==null?void 0:fn.declarations)==null?void 0:sr[0])&&!VE(Ut)){let Aa=uB(Ut);if(Aa.constraint=Oi(wn,n0(Ut,Aa)),Qk(Aa)){let Ra=Ee(wn,Ut.symbol.declarations[0]);qi(hr(Ut.symbol.declarations[0],_.This_type_parameter_might_need_an_extends_0_constraint,Ra))}}}function qn(ze,dt){if(!!ai&&ze.flags&3145728&&dt.flags&3145728){let Ut=ze,wn=dt;if(Ut.objectFlags&wn.objectFlags&32768)return;let Zn=Ut.types.length,fn=wn.types.length;Zn*fn>1e6&&ai.instant(ai.Phase.CheckTypes,\"traceUnionsOrIntersectionsTooLarge_DepthLimit\",{sourceId:ze.id,sourceSize:Zn,targetId:dt.id,targetSize:fn,pos:u?.pos,end:u?.end})}}function Mi(ze,dt){return Gr(ou(ze,(wn,Zn)=>{var fn;Zn=Eu(Zn);let sr=Zn.flags&3145728?qte(Zn,dt):qb(Zn,dt),Ar=sr&&zn(sr)||((fn=Hx(Zn,dt))==null?void 0:fn.type)||Oe;return Sn(wn,Ar)},void 0)||Je)}function ga(ze,dt,Ut){var wn;if(!PM(dt)||!ge&&Ur(dt)&4096)return!1;let Zn=!!(Ur(ze)&2048);if((c===Zu||c===ed)&&(yD(ka,dt)||!Zn&&mh(dt)))return!1;let fn=dt,sr;dt.flags&1048576&&(fn=mke(ze,dt,ji)||_it(dt),sr=fn.flags&1048576?fn.types:[fn]);for(let Ar of Jo(ze))if(Bi(Ar,ze.symbol)&&!n2e(ze,Ar)){if(!Vre(fn,Ar.escapedName,Zn)){if(Ut){let Ei=jc(fn,PM);if(!u)return L.fail();if(K0(u)||Au(u)||Au(u.parent)){Ar.valueDeclaration&&Sp(Ar.valueDeclaration)&&Gn(u)===Gn(Ar.valueDeclaration.name)&&(u=Ar.valueDeclaration.name);let ia=E(Ar),Aa=VCe(ia,Ei),Ra=Aa?E(Aa):void 0;Ra?Hr(_.Property_0_does_not_exist_on_type_1_Did_you_mean_2,ia,Ee(Ei),Ra):Hr(_.Property_0_does_not_exist_on_type_1,ia,Ee(Ei))}else{let ia=((wn=ze.symbol)==null?void 0:wn.declarations)&&Sl(ze.symbol.declarations),Aa;if(Ar.valueDeclaration&&jn(Ar.valueDeclaration,Ra=>Ra===ia)&&Gn(ia)===Gn(u)){let Ra=Ar.valueDeclaration;L.assertNode(Ra,Og),u=Ra;let Zr=Ra.name;Re(Zr)&&(Aa=Xre(Zr,Ei))}Aa!==void 0?Hr(_.Object_literal_may_only_specify_known_properties_but_0_does_not_exist_in_type_1_Did_you_mean_to_write_2,E(Ar),Ee(Ei),Aa):Hr(_.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1,E(Ar),Ee(Ei))}}return!0}if(sr&&!ji(zn(Ar),Mi(sr,Ar.escapedName),3,Ut))return Ut&&Rn(_.Types_of_property_0_are_incompatible,E(Ar)),!0}return!1}function Bi(ze,dt){return ze.valueDeclaration&&dt.valueDeclaration&&ze.valueDeclaration.parent===dt.valueDeclaration}function ko(ze,dt,Ut,wn){if(ze.flags&1048576)return c===ed?Tu(ze,dt,Ut&&!(ze.flags&134348796),wn):he(ze,dt,Ut&&!(ze.flags&134348796),wn);if(dt.flags&1048576)return Xs(TM(ze),dt,Ut&&!(ze.flags&134348796)&&!(dt.flags&134348796));if(dt.flags&2097152)return no(ze,dt,Ut,2);if(c===ed&&dt.flags&134348796){let Zn=Tl(ze.types,fn=>fn.flags&465829888?bu(fn)||ue:fn);if(Zn!==ze.types){if(ze=so(Zn),ze.flags&131072)return 0;if(!(ze.flags&2097152))return ji(ze,dt,1,!1)||ji(dt,ze,1,!1)}}return Tu(ze,dt,!1,1)}function us(ze,dt){let Ut=-1,wn=ze.types;for(let Zn of wn){let fn=Xs(Zn,dt,!1);if(!fn)return 0;Ut&=fn}return Ut}function Xs(ze,dt,Ut){let wn=dt.types;if(dt.flags&1048576){if(Qb(wn,ze))return-1;let Zn=O2e(dt,ze);if(Zn){let fn=ji(ze,Zn,2,!1);if(fn)return fn}}for(let Zn of wn){let fn=ji(ze,Zn,2,!1);if(fn)return fn}if(Ut){let Zn=i2e(ze,dt,ji);Zn&&ji(ze,Zn,2,!0)}return 0}function no(ze,dt,Ut,wn){let Zn=-1,fn=dt.types;for(let sr of fn){let Ar=ji(ze,sr,2,Ut,void 0,wn);if(!Ar)return 0;Zn&=Ar}return Zn}function Tu(ze,dt,Ut,wn){let Zn=ze.types;if(ze.flags&1048576&&Qb(Zn,dt))return-1;let fn=Zn.length;for(let sr=0;sr<fn;sr++){let Ar=ji(Zn[sr],dt,1,Ut&&sr===fn-1,void 0,wn);if(Ar)return Ar}return 0}function et(ze,dt){return ze.flags&1048576&&dt.flags&1048576&&!(ze.types[0].flags&32768)&&dt.types[0].flags&32768?wC(dt,-32769):dt}function he(ze,dt,Ut,wn){let Zn=-1,fn=ze.types,sr=et(ze,dt);for(let Ar=0;Ar<fn.length;Ar++){let Ei=fn[Ar];if(sr.flags&1048576&&fn.length>=sr.types.length&&fn.length%sr.types.length===0){let Aa=ji(Ei,sr.types[Ar%sr.types.length],3,!1,void 0,wn);if(Aa){Zn&=Aa;continue}}let ia=ji(Ei,dt,1,Ut,void 0,wn);if(!ia)return 0;Zn&=ia}return Zn}function Bn(ze=Je,dt=Je,Ut=Je,wn,Zn){if(ze.length!==dt.length&&c===td)return 0;let fn=ze.length<=dt.length?ze.length:dt.length,sr=-1;for(let Ar=0;Ar<fn;Ar++){let Ei=Ar<Ut.length?Ut[Ar]:1,ia=Ei&7;if(ia!==4){let Aa=ze[Ar],Ra=dt[Ar],Zr=-1;if(Ei&8?Zr=c===td?ji(Aa,Ra,3,!1):cD(Aa,Ra):ia===1?Zr=ji(Aa,Ra,3,wn,void 0,Zn):ia===2?Zr=ji(Ra,Aa,3,wn,void 0,Zn):ia===3?(Zr=ji(Ra,Aa,3,!1),Zr||(Zr=ji(Aa,Ra,3,wn,void 0,Zn))):(Zr=ji(Aa,Ra,3,wn,void 0,Zn),Zr&&(Zr&=ji(Ra,Aa,3,wn,void 0,Zn))),!Zr)return 0;sr&=Zr}}return sr}function Mn(ze,dt,Ut,wn,Zn){var fn,sr,Ar;if(un)return 0;let Ei=Kne(ze,dt,wn,c,!1),ia=c.get(Ei);if(ia!==void 0&&!(Ut&&ia&2&&!(ia&4))){if(Qr){let co=ia&24;co&8&&Oi(ze,yn),co&16&&Oi(ze,Wi)}return ia&1?-1:0}if(!J)J=[],de=[],Ae=[];else{let co=Ei.startsWith(\"*\")?Kne(ze,dt,wn,c,!0):void 0;for(let as=0;as<xe;as++)if(Ei===J[as]||co&&co===J[as])return 3;if(tt===100||It===100)return un=!0,0}let Aa=xe;J[xe]=Ei,xe++;let Ra=Tn;Zn&1&&(de[tt]=ze,tt++,!(Tn&1)&&vM(ze,de,tt)&&(Tn|=1)),Zn&2&&(Ae[It]=dt,It++,!(Tn&2)&&vM(dt,Ae,It)&&(Tn|=2));let Zr,Oa=0;Qr&&(Zr=Qr,Qr=co=>(Oa|=co?16:8,Zr(co)));let mo;if(Tn===3?((fn=ai)==null||fn.instant(ai.Phase.CheckTypes,\"recursiveTypeRelatedTo_DepthLimit\",{sourceId:ze.id,sourceIdStack:de.map(co=>co.id),targetId:dt.id,targetIdStack:Ae.map(co=>co.id),depth:tt,targetDepth:It}),mo=3):((sr=ai)==null||sr.push(ai.Phase.CheckTypes,\"structuredTypeRelatedTo\",{sourceId:ze.id,targetId:dt.id}),mo=or(ze,dt,Ut,wn),(Ar=ai)==null||Ar.pop()),Qr&&(Qr=Zr),Zn&1&&tt--,Zn&2&&It--,Tn=Ra,mo){if(mo===-1||tt===0&&It===0){if(mo===-1||mo===3)for(let co=Aa;co<xe;co++)c.set(J[co],1|Oa);xe=Aa}}else c.set(Ei,(Ut?4:0)|2|Oa),xe=Aa;return mo}function or(ze,dt,Ut,wn){let Zn=Cn(),fn=_r(ze,dt,Ut,wn,Zn);if(c!==td){if(!fn&&(ze.flags&2097152||ze.flags&262144&&dt.flags&1048576)){let sr=jJe(ze.flags&2097152?ze.types:[ze],!!(dt.flags&1048576));sr&&Im(sr,Ar=>Ar!==ze)&&(fn=ji(sr,dt,1,!1,void 0,wn))}fn&&!(wn&2)&&dt.flags&2097152&&!Zb(dt)&&ze.flags&2621440?(fn&=Ft(ze,dt,Ut,void 0,!1,0),fn&&Xv(ze)&&Ur(ze)&8192&&(fn&=Bo(ze,dt,!1,Ut,0))):fn&&rB(dt)&&!JE(dt)&&ze.flags&2097152&&Eu(ze).flags&3670016&&!vt(ze.types,sr=>sr===dt||!!(Ur(sr)&262144))&&(fn&=Ft(ze,dt,Ut,void 0,!0,wn))}return fn&&Jt(Zn),fn}function _r(ze,dt,Ut,wn,Zn){let fn,sr,Ar=!1,Ei=ze.flags,ia=dt.flags;if(c===td){if(Ei&3145728){let Zr=us(ze,dt);return Zr&&(Zr&=us(dt,ze)),Zr}if(Ei&4194304)return ji(ze.type,dt.type,3,!1);if(Ei&8388608&&(fn=ji(ze.objectType,dt.objectType,3,!1))&&(fn&=ji(ze.indexType,dt.indexType,3,!1))||Ei&16777216&&ze.root.isDistributive===dt.root.isDistributive&&(fn=ji(ze.checkType,dt.checkType,3,!1))&&(fn&=ji(ze.extendsType,dt.extendsType,3,!1))&&(fn&=ji(Hv(ze),Hv(dt),3,!1))&&(fn&=ji(Wv(ze),Wv(dt),3,!1))||Ei&33554432&&(fn=ji(ze.baseType,dt.baseType,3,!1))&&(fn&=ji(ze.constraint,dt.constraint,3,!1)))return fn;if(!(Ei&524288))return 0}else if(Ei&3145728||ia&3145728){if(fn=ko(ze,dt,Ut,wn))return fn;if(!(Ei&465829888||Ei&524288&&ia&1048576||Ei&2097152&&ia&467402752))return 0}if(Ei&17301504&&ze.aliasSymbol&&ze.aliasTypeArguments&&ze.aliasSymbol===dt.aliasSymbol&&!(hB(ze)||hB(dt))){let Zr=o2e(ze.aliasSymbol);if(Zr===Je)return 1;let Oa=Ai(ze.aliasSymbol).typeParameters,mo=Mp(Oa),co=Sy(ze.aliasTypeArguments,Oa,mo,Yn(ze.aliasSymbol.valueDeclaration)),as=Sy(dt.aliasTypeArguments,Oa,mo,Yn(ze.aliasSymbol.valueDeclaration)),Ul=Ra(co,as,Zr,wn);if(Ul!==void 0)return Ul}if(_2e(ze)&&!ze.target.readonly&&(fn=ji(Ko(ze)[0],dt,1))||_2e(dt)&&(dt.target.readonly||vB(bu(ze)||ze))&&(fn=ji(ze,Ko(dt)[0],2)))return fn;if(ia&262144){if(Ur(ze)&32&&!ze.declaration.nameType&&ji(Gp(dt),np(ze),3)&&!(Pp(ze)&4)){let Zr=_h(ze),Oa=od(dt,D_(ze));if(fn=ji(Zr,Oa,3,Ut))return fn}if(c===ed&&Ei&262144){let Zr=eu(ze);if(Zr&&Qk(ze))for(;Zr&&yh(Zr,Oa=>!!(Oa.flags&262144));){if(fn=ji(Zr,dt,1,!1))return fn;Zr=eu(Zr)}return 0}}else if(ia&4194304){let Zr=dt.type;if(Ei&4194304&&(fn=ji(Zr,ze.type,3,!1)))return fn;if(po(Zr)){if(fn=ji(ze,_Ae(Zr),2,Ut))return fn}else{let Oa=jte(Zr);if(Oa){if(ji(ze,Gp(Oa,dt.stringsOnly),2,Ut)===-1)return-1}else if(uf(Zr)){let mo=by(Zr),co=np(Zr),as;if(mo&&$k(Zr)){let Ul=Eu(vC(Zr)),M_=[];Ute(Ul,8576,!1,Dm=>void M_.push(Oi(mo,sD(Zr.mapper,D_(Zr),Dm)))),as=Gr([...M_,mo])}else as=mo||co;if(ji(ze,as,2,Ut)===-1)return-1}}}else if(ia&8388608){if(Ei&8388608){if((fn=ji(ze.objectType,dt.objectType,3,Ut))&&(fn&=ji(ze.indexType,dt.indexType,3,Ut)),fn)return fn;Ut&&(sr=O)}if(c===Zu||c===ed){let Zr=dt.objectType,Oa=dt.indexType,mo=bu(Zr)||Zr,co=bu(Oa)||Oa;if(!Zb(mo)&&!jv(co)){let as=4|(mo!==Zr?2:0),Ul=Ay(mo,co,as);if(Ul){if(Ut&&sr&&Jt(Zn),fn=ji(ze,Ul,2,Ut,void 0,wn))return fn;Ut&&sr&&O&&(O=Aa([sr])<=Aa([O])?sr:O)}}}Ut&&(sr=void 0)}else if(uf(dt)&&c!==td){let Zr=!!dt.declaration.nameType,Oa=_h(dt),mo=Pp(dt);if(!(mo&8)){if(!Zr&&Oa.flags&8388608&&Oa.objectType===ze&&Oa.indexType===D_(dt))return-1;if(!uf(ze)){let co=Zr?by(dt):np(dt),as=Gp(ze,void 0,!0),Ul=mo&4,M_=Ul?ZP(co,as):void 0;if(Ul?!(M_.flags&131072):ji(co,as,3)){let Dm=_h(dt),$v=D_(dt),V1=wC(Dm,-98305);if(!Zr&&V1.flags&8388608&&V1.indexType===$v){if(fn=ji(ze,V1.objectType,2,Ut))return fn}else{let qC=Zr?M_||co:M_?so([M_,$v]):$v,Hp=od(ze,qC);if(fn=ji(Hp,Dm,3,Ut))return fn}}sr=O,Jt(Zn)}}}else if(ia&16777216){if(vM(dt,Ae,It,10))return 3;let Zr=dt;if(!Zr.root.inferTypeParameters&&!Tqe(Zr.root)){let Oa=!to(dB(Zr.checkType),dB(Zr.extendsType)),mo=!Oa&&to(zE(Zr.checkType),zE(Zr.extendsType));if((fn=Oa?-1:ji(ze,Hv(Zr),2,!1,void 0,wn))&&(fn&=mo?-1:ji(ze,Wv(Zr),2,!1,void 0,wn),fn))return fn}}else if(ia&134217728){if(Ei&134217728){if(c===ed)return XXe(ze,dt)?0:-1;Oi(ze,Wi)}if(_re(ze,dt))return-1}else if(dt.flags&268435456&&!(ze.flags&268435456)&&fre(ze,dt))return-1;if(Ei&8650752){if(!(Ei&8388608&&ia&8388608)){let Zr=VE(ze)||ue;if(fn=ji(Zr,dt,1,!1,void 0,wn))return fn;if(fn=ji(lf(Zr,ze),dt,1,Ut&&Zr!==ue&&!(ia&Ei&262144),void 0,wn))return fn;if(Jte(ze)){let Oa=VE(ze.indexType);if(Oa&&(fn=ji(od(ze.objectType,Oa),dt,1,Ut)))return fn}}}else if(Ei&4194304){if(fn=ji(Si,dt,1,Ut))return fn}else if(Ei&134217728&&!(ia&524288)){if(!(ia&134217728)){let Zr=bu(ze);if(Zr&&Zr!==ze&&(fn=ji(Zr,dt,1,Ut)))return fn}}else if(Ei&268435456)if(ia&268435456){if(ze.symbol!==dt.symbol)return 0;if(fn=ji(ze.type,dt.type,3,Ut))return fn}else{let Zr=bu(ze);if(Zr&&(fn=ji(Zr,dt,1,Ut)))return fn}else if(Ei&16777216){if(vM(ze,de,tt,10))return 3;if(ia&16777216){let Oa=ze.root.inferTypeParameters,mo=ze.extendsType,co;if(Oa){let as=pD(Oa,void 0,0,Hd);gh(as.inferences,dt.extendsType,mo,1536),mo=Oi(mo,as.mapper),co=as.mapper}if(ph(mo,dt.extendsType)&&(ji(ze.checkType,dt.checkType,3)||ji(dt.checkType,ze.checkType,3))&&((fn=ji(Oi(Hv(ze),co),Hv(dt),3,Ut))&&(fn&=ji(Wv(ze),Wv(dt),3,Ut)),fn))return fn}else{let Oa=Qk(ze)?Dxe(ze):void 0;if(Oa&&(fn=ji(Oa,dt,1,Ut)))return fn}let Zr=Hte(ze);if(Zr&&(fn=ji(Zr,dt,1,Ut)))return fn}else{if(c!==hm&&c!==S_&&PJe(dt)&&mh(ze))return-1;if(uf(dt))return uf(ze)&&(fn=ua(ze,dt,Ut))?fn:0;let Zr=!!(Ei&134348796);if(c!==td)ze=Eu(ze),Ei=ze.flags;else if(uf(ze))return 0;if(Ur(ze)&4&&Ur(dt)&4&&ze.target===dt.target&&!po(ze)&&!(hB(ze)||hB(dt))){if(bB(ze))return-1;let Oa=zne(ze.target);if(Oa===Je)return 1;let mo=Ra(Ko(ze),Ko(dt),Oa,wn);if(mo!==void 0)return mo}else{if(IC(dt)?JE(ze):ff(dt)&&po(ze)&&!ze.target.readonly)return c!==td?ji(fg(ze,rt)||Se,fg(dt,rt)||Se,3,Ut):0;if((c===hm||c===S_)&&mh(dt)&&Ur(dt)&8192&&!mh(ze))return 0}if(Ei&2621440&&ia&524288){let Oa=Ut&&O===Zn.errorInfo&&!Zr;if(fn=Ft(ze,dt,Oa,void 0,!1,wn),fn&&(fn&=Un(ze,dt,0,Oa,wn),fn&&(fn&=Un(ze,dt,1,Oa,wn),fn&&(fn&=Bo(ze,dt,Zr,Oa,wn)))),Ar&&fn)O=sr||O||Zn.errorInfo;else if(fn)return fn}if(Ei&2621440&&ia&1048576){let Oa=wC(dt,36175872);if(Oa.flags&1048576){let mo=_i(ze,Oa);if(mo)return mo}}}return 0;function Aa(Zr){return Zr?ou(Zr,(Oa,mo)=>Oa+1+Aa(mo.next),0):0}function Ra(Zr,Oa,mo,co){if(fn=Bn(Zr,Oa,mo,Ut,co))return fn;if(vt(mo,Ul=>!!(Ul&24))){sr=void 0,Jt(Zn);return}let as=Oa&&uXe(Oa,mo);if(Ar=!as,mo!==Je&&!as){if(Ar&&!(Ut&&vt(mo,Ul=>(Ul&7)===0)))return 0;sr=O,Jt(Zn)}}}function ua(ze,dt,Ut){if(c===ed||(c===td?Pp(ze)===Pp(dt):Vte(ze)<=Vte(dt))){let Zn,fn=np(dt),sr=Oi(np(ze),Vte(ze)<0?yn:Wi);if(Zn=ji(fn,sr,3,Ut)){let Ar=Wu([D_(ze)],[D_(dt)]);if(Oi(by(ze),Ar)===Oi(by(dt),Ar))return Zn&ji(Oi(_h(ze),Ar),_h(dt),3,Ut)}}return 0}function _i(ze,dt){var Ut;let wn=Jo(ze),Zn=R2e(wn,dt);if(!Zn)return 0;let fn=1;for(let Ra of Zn)if(fn*=SYe(Gv(Ra)),fn>25)return(Ut=ai)==null||Ut.instant(ai.Phase.CheckTypes,\"typeRelatedToDiscriminatedType_DepthLimit\",{sourceId:ze.id,targetId:dt.id,numCombinations:fn}),0;let sr=new Array(Zn.length),Ar=new Set;for(let Ra=0;Ra<Zn.length;Ra++){let Zr=Zn[Ra],Oa=Gv(Zr);sr[Ra]=Oa.flags&1048576?Oa.types:[Oa],Ar.add(Zr.escapedName)}let Ei=Rae(sr),ia=[];for(let Ra of Ei){let Zr=!1;e:for(let Oa of dt.types){for(let mo=0;mo<Zn.length;mo++){let co=Zn[mo],as=ja(Oa,co.escapedName);if(!as)continue e;if(co===as)continue;if(!Ct(ze,dt,co,as,M_=>Ra[mo],!1,0,U||c===ed))continue e}Rf(ia,Oa,Zv),Zr=!0}if(!Zr)return 0}let Aa=-1;for(let Ra of ia)if(Aa&=Ft(ze,Ra,!1,Ar,!1,0),Aa&&(Aa&=Un(ze,Ra,0,!1,0),Aa&&(Aa&=Un(ze,Ra,1,!1,0),Aa&&!(po(ze)&&po(Ra))&&(Aa&=Bo(ze,Ra,!1,!1,0)))),!Aa)return Aa;return Aa}function ur(ze,dt){if(!dt||ze.length===0)return ze;let Ut;for(let wn=0;wn<ze.length;wn++)dt.has(ze[wn].escapedName)?Ut||(Ut=ze.slice(0,wn)):Ut&&Ut.push(ze[wn]);return Ut||ze}function st(ze,dt,Ut,wn,Zn){let fn=U&&!!(ac(dt)&48),sr=ao(Gv(dt),!1,fn),Ar=Ut(ze);return ji(Ar,sr,3,wn,void 0,Zn)}function Ct(ze,dt,Ut,wn,Zn,fn,sr,Ar){let Ei=bf(Ut),ia=bf(wn);if(Ei&8||ia&8){if(Ut.valueDeclaration!==wn.valueDeclaration)return fn&&(Ei&8&&ia&8?Hr(_.Types_have_separate_declarations_of_a_private_property_0,E(wn)):Hr(_.Property_0_is_private_in_type_1_but_not_in_type_2,E(wn),Ee(Ei&8?ze:dt),Ee(Ei&8?dt:ze))),0}else if(ia&16){if(!mXe(Ut,wn))return fn&&Hr(_.Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2,E(wn),Ee(P1(Ut)||ze),Ee(P1(wn)||dt)),0}else if(Ei&16)return fn&&Hr(_.Property_0_is_protected_in_type_1_but_public_in_type_2,E(wn),Ee(ze),Ee(dt)),0;if(c===S_&&P_(Ut)&&!P_(wn))return 0;let Aa=st(Ut,wn,Zn,fn,sr);return Aa?!Ar&&Ut.flags&16777216&&wn.flags&106500&&!(wn.flags&16777216)?(fn&&Hr(_.Property_0_is_optional_in_type_1_but_required_in_type_2,E(wn),Ee(ze),Ee(dt)),0):Aa:(fn&&Rn(_.Types_of_property_0_are_incompatible,E(wn)),0)}function Bt(ze,dt,Ut,wn){let Zn=!1;if(Ut.valueDeclaration&&zl(Ut.valueDeclaration)&&pi(Ut.valueDeclaration.name)&&ze.symbol&&ze.symbol.flags&32){let sr=Ut.valueDeclaration.name.escapedText,Ar=gR(ze.symbol,sr);if(Ar&&ja(ze,Ar)){let Ei=D.getDeclarationName(ze.symbol.valueDeclaration),ia=D.getDeclarationName(dt.symbol.valueDeclaration);Hr(_.Property_0_in_type_1_refers_to_a_different_member_that_cannot_be_accessed_from_within_type_2,Af(sr),Af(Ei.escapedText===\"\"?rN:Ei),Af(ia.escapedText===\"\"?rN:ia));return}}let fn=lo(lre(ze,dt,wn,!1));if((!p||p.code!==_.Class_0_incorrectly_implements_interface_1.code&&p.code!==_.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code)&&(Zn=!0),fn.length===1){let sr=E(Ut,void 0,0,20);Hr(_.Property_0_is_missing_in_type_1_but_required_in_type_2,sr,...Wt(ze,dt)),Fn(Ut.declarations)&&qi(hr(Ut.declarations[0],_._0_is_declared_here,sr)),Zn&&O&&Nn++}else _f(ze,dt,!1)&&(fn.length>5?Hr(_.Type_0_is_missing_the_following_properties_from_type_1_Colon_2_and_3_more,Ee(ze),Ee(dt),on(fn.slice(0,4),sr=>E(sr)).join(\", \"),fn.length-4):Hr(_.Type_0_is_missing_the_following_properties_from_type_1_Colon_2,Ee(ze),Ee(dt),on(fn,sr=>E(sr)).join(\", \")),Zn&&O&&Nn++)}function Ft(ze,dt,Ut,wn,Zn,fn){if(c===td)return hn(ze,dt,wn);let sr=-1;if(po(dt)){if(JE(ze)){if(!dt.target.readonly&&(IC(ze)||po(ze)&&ze.target.readonly))return 0;let Ra=Vv(ze),Zr=Vv(dt),Oa=po(ze)?ze.target.combinedFlags&4:4,mo=dt.target.combinedFlags&4,co=po(ze)?ze.target.minLength:0,as=dt.target.minLength;if(!Oa&&Ra<as)return Ut&&Hr(_.Source_has_0_element_s_but_target_requires_1,Ra,as),0;if(!mo&&Zr<co)return Ut&&Hr(_.Source_has_0_element_s_but_target_allows_only_1,co,Zr),0;if(!mo&&(Oa||Zr<Ra))return Ut&&(co<as?Hr(_.Target_requires_0_element_s_but_source_may_have_fewer,as):Hr(_.Target_allows_only_0_element_s_but_source_may_have_more,Zr)),0;let Ul=Ko(ze),M_=Ko(dt),Dm=VKe(dt.target,11),$v=cM(dt.target,11),V1=dt.target.hasRestElement,qC=!!wn;for(let Hp=0;Hp<Ra;Hp++){let lA=po(ze)?ze.target.elementFlags[Hp]:4,uA=Ra-1-Hp,iT=V1&&Hp>=Dm?Zr-1-Math.min(uA,$v):Hp,sd=dt.target.elementFlags[iT];if(sd&8&&!(lA&8))return Ut&&Hr(_.Source_provides_no_match_for_variadic_element_at_position_0_in_target,iT),0;if(lA&8&&!(sd&12))return Ut&&Hr(_.Variadic_element_at_position_0_in_source_does_not_match_element_at_position_1_in_target,Hp,iT),0;if(sd&1&&!(lA&1))return Ut&&Hr(_.Source_provides_no_match_for_required_element_at_position_0_in_target,iT),0;if(qC&&((lA&12||sd&12)&&(qC=!1),qC&&wn?.has(\"\"+Hp)))continue;let bt=KE(Ul[Hp],!!(lA&sd&2)),cr=M_[iT],oi=lA&8&&sd&4?nu(cr):KE(cr,!!(sd&2)),Jr=ji(bt,oi,3,Ut,void 0,fn);if(!Jr)return Ut&&(Zr>1||Ra>1)&&(V1&&Hp>=Dm&&uA>=$v&&Dm!==Ra-$v-1?Rn(_.Type_at_positions_0_through_1_in_source_is_not_compatible_with_type_at_position_2_in_target,Dm,Ra-$v-1,iT):Rn(_.Type_at_position_0_in_source_is_not_compatible_with_type_at_position_1_in_target,Hp,iT)),0;sr&=Jr}return sr}if(dt.target.combinedFlags&12)return 0}let Ar=(c===hm||c===S_)&&!Xv(ze)&&!bB(ze)&&!po(ze),Ei=ure(ze,dt,Ar,!1);if(Ei)return Ut&&yi(ze,dt)&&Bt(ze,dt,Ei,Ar),0;if(Xv(dt)){for(let Ra of ur(Jo(ze),wn))if(!qb(dt,Ra.escapedName)&&!(zn(Ra).flags&32768))return Ut&&Hr(_.Property_0_does_not_exist_on_type_1,E(Ra),Ee(dt)),0}let ia=Jo(dt),Aa=po(ze)&&po(dt);for(let Ra of ur(ia,wn)){let Zr=Ra.escapedName;if(!(Ra.flags&4194304)&&(!Aa||Wm(Zr)||Zr===\"length\")&&(!Zn||Ra.flags&16777216)){let Oa=ja(ze,Zr);if(Oa&&Oa!==Ra){let mo=Ct(ze,dt,Oa,Ra,Gv,Ut,fn,c===ed);if(!mo)return 0;sr&=mo}}}return sr}function hn(ze,dt,Ut){if(!(ze.flags&524288&&dt.flags&524288))return 0;let wn=ur(Ey(ze),Ut),Zn=ur(Ey(dt),Ut);if(wn.length!==Zn.length)return 0;let fn=-1;for(let sr of wn){let Ar=qb(dt,sr.escapedName);if(!Ar)return 0;let Ei=qne(sr,Ar,ji);if(!Ei)return 0;fn&=Ei}return fn}function Un(ze,dt,Ut,wn,Zn){var fn,sr;if(c===td)return Sr(ze,dt,Ut);if(dt===aa||ze===aa)return-1;let Ar=ze.symbol&&sp(ze.symbol.valueDeclaration),Ei=dt.symbol&&sp(dt.symbol.valueDeclaration),ia=xa(ze,Ar&&Ut===1?0:Ut),Aa=xa(dt,Ei&&Ut===1?0:Ut);if(Ut===1&&ia.length&&Aa.length){let co=!!(ia[0].flags&4),as=!!(Aa[0].flags&4);if(co&&!as)return wn&&Hr(_.Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type),0;if(!Bl(ia[0],Aa[0],wn))return 0}let Ra=-1,Zr=Ut===1?Xt:Di,Oa=Ur(ze),mo=Ur(dt);if(Oa&64&&mo&64&&ze.symbol===dt.symbol||Oa&4&&mo&4&&ze.target===dt.target)for(let co=0;co<Aa.length;co++){let as=er(ia[co],Aa[co],!0,wn,Zn,Zr(ia[co],Aa[co]));if(!as)return 0;Ra&=as}else if(ia.length===1&&Aa.length===1){let co=c===ed||!!Y.noStrictGenericChecks,as=Vo(ia),Ul=Vo(Aa);if(Ra=er(as,Ul,co,wn,Zn,Zr(as,Ul)),!Ra&&wn&&Ut===1&&Oa&mo&&(((fn=Ul.declaration)==null?void 0:fn.kind)===173||((sr=as.declaration)==null?void 0:sr.kind)===173)){let M_=Dm=>ne(Dm,void 0,262144,Ut);return Hr(_.Type_0_is_not_assignable_to_type_1,M_(as),M_(Ul)),Hr(_.Types_of_construct_signatures_are_incompatible),Ra}}else{e:for(let co of Aa){let as=Cn(),Ul=wn;for(let M_ of ia){let Dm=er(M_,co,!0,Ul,Zn,Zr(M_,co));if(Dm){Ra&=Dm,Jt(as);continue e}Ul=!1}return Ul&&Hr(_.Type_0_provides_no_match_for_the_signature_1,Ee(ze),ne(co,void 0,void 0,Ut)),0}}return Ra}function yi(ze,dt){let Ut=rM(ze,0),wn=rM(ze,1),Zn=Ey(ze);return(Ut.length||wn.length)&&!Zn.length?!!(xa(dt,0).length&&Ut.length||xa(dt,1).length&&wn.length):!0}function Di(ze,dt){return ze.parameters.length===0&&dt.parameters.length===0?(Ut,wn)=>Rn(_.Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1,Ee(Ut),Ee(wn)):(Ut,wn)=>Rn(_.Call_signature_return_types_0_and_1_are_incompatible,Ee(Ut),Ee(wn))}function Xt(ze,dt){return ze.parameters.length===0&&dt.parameters.length===0?(Ut,wn)=>Rn(_.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1,Ee(Ut),Ee(wn)):(Ut,wn)=>Rn(_.Construct_signature_return_types_0_and_1_are_incompatible,Ee(Ut),Ee(wn))}function er(ze,dt,Ut,wn,Zn,fn){let sr=c===hm?16:c===S_?24:0;return Une(Ut?nD(ze):ze,Ut?nD(dt):dt,sr,wn,Hr,fn,Ar,Wi);function Ar(Ei,ia,Aa){return ji(Ei,ia,3,Aa,void 0,Zn)}}function Sr(ze,dt,Ut){let wn=xa(ze,Ut),Zn=xa(dt,Ut);if(wn.length!==Zn.length)return 0;let fn=-1;for(let sr=0;sr<wn.length;sr++){let Ar=bM(wn[sr],Zn[sr],!1,!1,!1,ji);if(!Ar)return 0;fn&=Ar}return fn}function Dr(ze,dt,Ut,wn){let Zn=-1,fn=dt.keyType,sr=ze.flags&2097152?tM(ze):Ey(ze);for(let Ar of sr)if(!n2e(ze,Ar)&&jx(SC(Ar,8576),fn)){let Ei=Gv(Ar),ia=Pe||Ei.flags&32768||fn===rt||!(Ar.flags&16777216)?Ei:Df(Ei,524288),Aa=ji(ia,dt.type,3,Ut,void 0,wn);if(!Aa)return Ut&&Hr(_.Property_0_is_incompatible_with_index_signature,E(Ar)),0;Zn&=Aa}for(let Ar of tu(ze))if(jx(Ar.keyType,fn)){let Ei=Ii(Ar,dt,Ut,wn);if(!Ei)return 0;Zn&=Ei}return Zn}function Ii(ze,dt,Ut,wn){let Zn=ji(ze.type,dt.type,3,Ut,void 0,wn);return!Zn&&Ut&&(ze.keyType===dt.keyType?Hr(_._0_index_signatures_are_incompatible,Ee(ze.keyType)):Hr(_._0_and_1_index_signatures_are_incompatible,Ee(ze.keyType),Ee(dt.keyType))),Zn}function Bo(ze,dt,Ut,wn,Zn){if(c===td)return ds(ze,dt);let fn=tu(dt),sr=vt(fn,Ei=>Ei.keyType===ae),Ar=-1;for(let Ei of fn){let ia=!Ut&&sr&&Ei.type.flags&1?-1:uf(ze)&&sr?ji(_h(ze),Ei.type,3,wn):ys(ze,Ei,wn,Zn);if(!ia)return 0;Ar&=ia}return Ar}function ys(ze,dt,Ut,wn){let Zn=iM(ze,dt.keyType);return Zn?Ii(Zn,dt,Ut,wn):!(wn&1)&&(c!==S_||Ur(ze)&8192)&&xB(ze)?Dr(ze,dt,Ut,wn):(Ut&&Hr(_.Index_signature_for_type_0_is_missing_in_type_1,Ee(dt.keyType),Ee(ze)),0)}function ds(ze,dt){let Ut=tu(ze),wn=tu(dt);if(Ut.length!==wn.length)return 0;for(let Zn of wn){let fn=Cm(ze,Zn.keyType);if(!(fn&&ji(fn.type,Zn.type,3)&&fn.isReadonly===Zn.isReadonly))return 0}return-1}function Bl(ze,dt,Ut){if(!ze.declaration||!dt.declaration)return!0;let wn=gS(ze.declaration,24),Zn=gS(dt.declaration,24);return Zn===8||Zn===16&&wn!==8||Zn!==16&&!wn?!0:(Ut&&Hr(_.Cannot_assign_a_0_constructor_type_to_a_1_constructor_type,Ud(wn),Ud(Zn)),!1)}}function Hne(n){if(n.flags&16)return!1;if(n.flags&3145728)return!!mn(n.types,Hne);if(n.flags&465829888){let a=VE(n);if(a&&a!==n)return Hne(a)}return O_(n)||!!(n.flags&134217728)||!!(n.flags&268435456)}function r2e(n,a){return po(n)&&po(a)?Je:Jo(a).filter(c=>mB(Vc(n,c.escapedName),zn(c)))}function mB(n,a){return!!n&&!!a&&Js(n,32768)&&!!_D(a)}function cXe(n){return Jo(n).filter(a=>_D(zn(a)))}function i2e(n,a,c=Gne){return mke(n,a,c,!0)||lit(n,a)||uit(n,a)||dit(n,a)||fit(n,a)}function Wne(n,a,c,u,p){let h=n.types.map(O=>{});for(let[O,H]of a){let J=Kte(n,H);if(p&&J&&ac(J)&16)continue;let de=0;for(let Ae of n.types){let xe=Vc(Ae,H);xe&&c(O(),xe)?h[de]=h[de]===void 0?!0:h[de]:h[de]=!1,de++}}let T=h.indexOf(!0);if(T===-1)return u;let k=h.indexOf(!0,T+1);for(;k!==-1;){if(!ph(n.types[T],n.types[k]))return u;k=h.indexOf(!0,k+1)}return n.types[T]}function a2e(n){if(n.flags&524288){let a=w_(n);return a.callSignatures.length===0&&a.constructSignatures.length===0&&a.indexInfos.length===0&&a.properties.length>0&&Ji(a.properties,c=>!!(c.flags&16777216))}return n.flags&2097152?Ji(n.types,a2e):!1}function lXe(n,a,c){for(let u of Jo(n))if(Vre(a,u.escapedName,c))return!0;return!1}function zne(n){return n===$o||n===jo||n.objectFlags&8?W:s2e(n.symbol,n.typeParameters)}function o2e(n){return s2e(n,Ai(n).typeParameters)}function s2e(n,a=Je){var c,u;let p=Ai(n);if(!p.variances){(c=ai)==null||c.push(ai.Phase.CheckTypes,\"getVariancesWorker\",{arity:a.length,id:ru(gs(n))}),p.variances=Je;let h=[];for(let T of a){let k=Jne(T),O=k&65536?k&32768?0:1:k&32768?2:void 0;if(O===void 0){let H=!1,J=!1,de=Qr;Qr=tt=>tt?J=!0:H=!0;let Ae=gM(n,T,md),xe=gM(n,T,Pc);O=(to(xe,Ae)?1:0)|(to(Ae,xe)?2:0),O===3&&to(gM(n,T,bl),Ae)&&(O=4),Qr=de,(H||J)&&(H&&(O|=8),J&&(O|=16))}h.push(O)}p.variances=h,(u=ai)==null||u.pop({variances:h.map(L.formatVariance)})}return p.variances}function gM(n,a,c){let u=n0(a,c),p=gs(n);if(Ro(p))return p;let h=n.flags&524288?Kx(n,hg(Ai(n).typeParameters,u)):_g(p,hg(p.typeParameters,u));return gn.add(ru(h)),h}function hB(n){return gn.has(ru(n))}function Jne(n){var a;return ou((a=n.symbol)==null?void 0:a.declarations,(c,u)=>c|uu(u),0)&100352}function uXe(n,a){for(let c=0;c<a.length;c++)if((a[c]&7)===1&&n[c].flags&16384)return!0;return!1}function dXe(n){return n.flags&262144&&!eu(n)}function fXe(n){return!!(Ur(n)&4)&&!n.node}function gB(n){return fXe(n)&&vt(Ko(n),a=>!!(a.flags&262144)||gB(a))}function _Xe(n,a,c,u){let p=[],h=\"\",T=O(n,0),k=O(a,0);return`${h}${T},${k}${c}`;function O(H,J=0){let de=\"\"+H.target.id;for(let Ae of Ko(H)){if(Ae.flags&262144){if(u||dXe(Ae)){let xe=p.indexOf(Ae);xe<0&&(xe=p.length,p.push(Ae)),de+=\"=\"+xe;continue}h=\"*\"}else if(J<4&&gB(Ae)){de+=\"<\"+O(Ae,J+1)+\">\";continue}de+=\"-\"+Ae.id}return de}}function Kne(n,a,c,u,p){if(u===td&&n.id>a.id){let T=n;n=a,a=T}let h=c?\":\"+c:\"\";return gB(n)&&gB(a)?_Xe(n,a,h,p):`${n.id},${a.id}${h}`}function yM(n,a){if(ac(n)&6){for(let c of n.links.containingType.types){let u=ja(c,n.escapedName),p=u&&yM(u,a);if(p)return p}return}return a(n)}function P1(n){return n.parent&&n.parent.flags&32?gs(ju(n)):void 0}function yB(n){let a=P1(n),c=a&&_o(a)[0];return c&&Vc(c,n.escapedName)}function pXe(n,a){return yM(n,c=>{let u=P1(c);return u?BE(u,a):!1})}function mXe(n,a){return!yM(a,c=>bf(c)&16?!pXe(n,P1(c)):!1)}function c2e(n,a,c){return yM(a,u=>bf(u,c)&16?!BE(n,P1(u)):!1)?void 0:n}function vM(n,a,c,u=3){if(c>=u){if(n.flags&2097152)return vt(n.types,k=>vM(k,a,c,u));let p=CC(n),h=0,T=0;for(let k=0;k<c;k++){let O=a[k];if(O.flags&2097152?vt(O.types,H=>CC(H)===p):CC(O)===p){if(O.id>=T&&(h++,h>=u))return!0;T=O.id}}}return!1}function CC(n){if(n.flags&524288&&!pre(n)){if(Ur(n)&&4&&n.node)return n.node;if(n.symbol&&!(Ur(n)&16&&n.symbol.flags&32))return n.symbol;if(po(n))return n.target}if(n.flags&262144)return n.symbol;if(n.flags&8388608){do n=n.objectType;while(n.flags&8388608);return n}return n.flags&16777216?n.root:n}function hXe(n,a){return qne(n,a,cD)!==0}function qne(n,a,c){if(n===a)return-1;let u=bf(n)&24,p=bf(a)&24;if(u!==p)return 0;if(u){if(sA(n)!==sA(a))return 0}else if((n.flags&16777216)!==(a.flags&16777216))return 0;return P_(n)!==P_(a)?0:c(zn(n),zn(a))}function gXe(n,a,c){let u=xd(n),p=xd(a),h=Vp(n),T=Vp(a),k=jp(n),O=jp(a);return!!(u===p&&h===T&&k===O||c&&h<=T)}function bM(n,a,c,u,p,h){if(n===a)return-1;if(!gXe(n,a,c)||Fn(n.typeParameters)!==Fn(a.typeParameters))return 0;if(a.typeParameters){let O=Wu(n.typeParameters,a.typeParameters);for(let H=0;H<a.typeParameters.length;H++){let J=n.typeParameters[H],de=a.typeParameters[H];if(!(J===de||h(Oi(EC(J),O)||ue,EC(de)||ue)&&h(Oi(jE(J),O)||ue,jE(de)||ue)))return 0}n=Qx(n,O,!0)}let T=-1;if(!u){let O=Yb(n);if(O){let H=Yb(a);if(H){let J=h(O,H);if(!J)return 0;T&=J}}}let k=xd(a);for(let O=0;O<k;O++){let H=N_(n,O),J=N_(a,O),de=h(J,H);if(!de)return 0;T&=de}if(!p){let O=If(n),H=If(a);T&=O||H?yXe(O,H,h):h(qo(n),qo(a))}return T}function yXe(n,a,c){return n&&a&&Ene(n,a)?n.type===a.type?-1:n.type&&a.type?c(n.type,a.type):0:0}function vXe(n){let a;for(let c of n)if(!(c.flags&131072)){let u=ky(c);if(a??(a=u),u===c||u!==a)return!1}return!0}function l2e(n){return ou(n,(a,c)=>a|(c.flags&1048576?l2e(c.types):c.flags),0)}function bXe(n){if(n.length===1)return n[0];let a=U?Tl(n,u=>jc(u,p=>!(p.flags&98304))):n,c=vXe(a)?Gr(a):ou(a,(u,p)=>Iy(u,p)?p:u);return a===n?c:TB(c,l2e(n)&98304)}function EXe(n){return ou(n,(a,c)=>Iy(c,a)?c:a)}function ff(n){return!!(Ur(n)&4)&&(n.target===$o||n.target===jo)}function IC(n){return!!(Ur(n)&4)&&n.target===jo}function JE(n){return ff(n)||po(n)}function vB(n){return ff(n)&&!IC(n)||po(n)&&!n.target.readonly}function Xne(n){return ff(n)?Ko(n)[0]:void 0}function Kv(n){return ff(n)||!(n.flags&98304)&&to(n,Ri)}function Yne(n){if(!(Ur(n)&4)||!(Ur(n.target)&3))return;if(Ur(n)&33554432)return Ur(n)&67108864?n.cachedEquivalentBaseType:void 0;n.objectFlags|=33554432;let a=n.target;if(Ur(a)&1){let p=vn(a);if(p&&p.expression.kind!==79&&p.expression.kind!==208)return}let c=_o(a);if(c.length!==1||vy(n.symbol).size)return;let u=Fn(a.typeParameters)?Oi(c[0],Wu(a.typeParameters,Ko(n).slice(0,a.typeParameters.length))):c[0];return Fn(Ko(n))>Fn(a.typeParameters)&&(u=lf(u,To(Ko(n)))),n.objectFlags|=67108864,n.cachedEquivalentBaseType=u}function u2e(n){return U?n===Vt:n===je}function bB(n){let a=Xne(n);return!!a&&u2e(a)}function LC(n){return po(n)||!!ja(n,\"0\")}function EB(n){return Kv(n)||LC(n)}function TXe(n,a){let c=Vc(n,\"\"+a);if(c)return c;if(Im(n,po))return Ls(n,u=>{let p=u,h=EM(p);return h?Y.noUncheckedIndexedAccess&&a>=p.target.fixedLength+cM(p.target,3)?Gr([h,Oe]):h:Oe})}function SXe(n){return!(n.flags&240544)}function O_(n){return!!(n.flags&109472)}function d2e(n){let a=Ty(n);return a.flags&2097152?vt(a.types,O_):O_(a)}function xXe(n){return n.flags&2097152&&wr(n.types,O_)||n}function dD(n){return n.flags&16?!0:n.flags&1048576?n.flags&1024?!0:Ji(n.types,O_):O_(n)}function ky(n){return n.flags&1056?qk(n):n.flags&402653312?ae:n.flags&256?rt:n.flags&2048?Ot:n.flags&512?Te:n.flags&1048576?AXe(n):n}function AXe(n){var a;let c=`B${ru(n)}`;return(a=wb(c))!=null?a:qh(c,Ls(n,ky))}function $ne(n){return n.flags&402653312?ae:n.flags&288?rt:n.flags&2048?Ot:n.flags&512?Te:n.flags&1048576?Ls(n,$ne):n}function i0(n){return n.flags&1056&&t0(n)?qk(n):n.flags&128&&t0(n)?ae:n.flags&256&&t0(n)?rt:n.flags&2048&&t0(n)?Ot:n.flags&512&&t0(n)?Te:n.flags&1048576?Ls(n,i0):n}function f2e(n){return n.flags&8192?j:n.flags&1048576?Ls(n,f2e):n}function Qne(n,a){return aU(n,a)||(n=f2e(i0(n))),Hu(n)}function CXe(n,a,c){if(n&&O_(n)){let u=a?c?RD(a):a:void 0;n=Qne(n,u)}return n}function Zne(n,a,c,u){if(n&&O_(n)){let p=a?c0(c,a,u):void 0;n=Qne(n,p)}return n}function po(n){return!!(Ur(n)&4&&n.target.objectFlags&8)}function Zx(n){return po(n)&&!!(n.target.combinedFlags&8)}function _2e(n){return Zx(n)&&n.target.elementFlags.length===1}function EM(n){return kC(n,n.target.fixedLength)}function IXe(n){let a=EM(n);return a&&nu(a)}function kC(n,a,c=0,u=!1,p=!1){let h=Vv(n)-c;if(a<h){let T=Ko(n),k=[];for(let O=a;O<h;O++){let H=T[O];k.push(n.target.elementFlags[O]&8?od(H,rt):H)}return u?so(k):Gr(k,p?0:1)}}function LXe(n,a){return Vv(n)===Vv(a)&&Ji(n.target.elementFlags,(c,u)=>(c&12)===(a.target.elementFlags[u]&12))}function p2e({value:n}){return n.base10Value===\"0\"}function m2e(n){return jc(n,a=>!!(iu(a)&4194304))}function kXe(n){return Ls(n,DXe)}function DXe(n){return n.flags&4?yx:n.flags&8?p1:n.flags&64?vx:n===oe||n===Ke||n.flags&114691||n.flags&128&&n.value===\"\"||n.flags&256&&n.value===0||n.flags&2048&&p2e(n)?n:lt}function TB(n,a){let c=a&~n.flags&98304;return c===0?n:Gr(c===32768?[n,Oe]:c===65536?[n,ln]:[n,Oe,ln])}function gg(n,a=!1){L.assert(U);let c=a?kt:Oe;return n===c||n.flags&1048576&&n.types[0]===c?n:Gr([n,c])}function wXe(n){return io||(io=rD(\"NonNullable\",524288,void 0)||Ht),io!==Ht?Kx(io,[n]):so([n,Ki])}function yg(n){return U?$E(n,2097152):n}function h2e(n){return U?Gr([n,Kt]):n}function ere(n){return U?wB(n,Kt):n}function SB(n,a,c){return c?hI(a)?gg(n):h2e(n):n}function fD(n,a){return r6(a)?yg(n):Jl(a)?ere(n):n}function KE(n,a){return Pe&&a?wB(n,Ge):n}function _D(n){return n===Ge||!!(n.flags&1048576)&&n.types[0]===Ge}function tre(n){return Pe?wB(n,Ge):Df(n,524288)}function RXe(n,a){return(n.flags&524)!==0&&(a.flags&28)!==0}function xB(n){let a=Ur(n);return n.flags&2097152?Ji(n.types,xB):!!(n.symbol&&(n.symbol.flags&7040)!==0&&!(n.symbol.flags&32)&&!EU(n))||!!(a&4194304)||!!(a&1024&&xB(n.source))}function qE(n,a){let c=wo(n.flags,n.escapedName,ac(n)&8);c.declarations=n.declarations,c.parent=n.parent,c.links.type=a,c.links.target=n,n.valueDeclaration&&(c.valueDeclaration=n.valueDeclaration);let u=Ai(n).nameType;return u&&(c.links.nameType=u),c}function OXe(n,a){let c=Ua();for(let u of Ey(n)){let p=zn(u),h=a(p);c.set(u.escapedName,h===p?u:qE(u,h))}return c}function TM(n){if(!(Xv(n)&&Ur(n)&8192))return n;let a=n.regularType;if(a)return a;let c=n,u=OXe(n,TM),p=ls(c.symbol,u,c.callSignatures,c.constructSignatures,c.indexInfos);return p.flags=c.flags,p.objectFlags|=c.objectFlags&-8193,n.regularType=p,p}function g2e(n,a,c){return{parent:n,propertyName:a,siblings:c,resolvedProperties:void 0}}function y2e(n){if(!n.siblings){let a=[];for(let c of y2e(n.parent))if(Xv(c)){let u=qb(c,n.propertyName);u&&QE(zn(u),p=>{a.push(p)})}n.siblings=a}return n.siblings}function NXe(n){if(!n.resolvedProperties){let a=new Map;for(let c of y2e(n))if(Xv(c)&&!(Ur(c)&2097152))for(let u of Jo(c))a.set(u.escapedName,u);n.resolvedProperties=lo(a.values())}return n.resolvedProperties}function PXe(n,a){if(!(n.flags&4))return n;let c=zn(n),u=a&&g2e(a,n.escapedName,void 0),p=nre(c,u);return p===c?n:qE(n,p)}function MXe(n){let a=ri.get(n.escapedName);if(a)return a;let c=qE(n,kt);return c.flags|=16777216,ri.set(n.escapedName,c),c}function FXe(n,a){let c=Ua();for(let p of Ey(n))c.set(p.escapedName,PXe(p,a));if(a)for(let p of NXe(a))c.has(p.escapedName)||c.set(p.escapedName,MXe(p));let u=ls(n.symbol,c,Je,Je,Tl(tu(n),p=>Fp(p.keyType,Sd(p.type),p.isReadonly)));return u.objectFlags|=Ur(n)&266240,u}function Sd(n){return nre(n,void 0)}function nre(n,a){if(Ur(n)&196608){if(a===void 0&&n.widened)return n.widened;let c;if(n.flags&98305)c=Se;else if(Xv(n))c=FXe(n,a);else if(n.flags&1048576){let u=a||g2e(void 0,void 0,n.types),p=Tl(n.types,h=>h.flags&98304?h:nre(h,u));c=Gr(p,vt(p,mh)?2:1)}else n.flags&2097152?c=so(Tl(n.types,Sd)):JE(n)&&(c=_g(n.target,Tl(Ko(n),Sd)));return c&&a===void 0&&(n.widened=c),c||n}return n}function AB(n){let a=!1;if(Ur(n)&65536){if(n.flags&1048576)if(vt(n.types,mh))a=!0;else for(let c of n.types)AB(c)&&(a=!0);if(JE(n))for(let c of Ko(n))AB(c)&&(a=!0);if(Xv(n))for(let c of Ey(n)){let u=zn(c);Ur(u)&65536&&(AB(u)||Fe(c.valueDeclaration,_.Object_literal_s_property_0_implicitly_has_an_1_type,E(c),Ee(Sd(u))),a=!0)}}return a}function qv(n,a,c){let u=Ee(Sd(a));if(Yn(n)&&!WR(Gn(n),Y))return;let p;switch(n.kind){case 223:case 169:case 168:p=ge?_.Member_0_implicitly_has_an_1_type:_.Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage;break;case 166:let h=n;if(Re(h.name)){let T=nb(h.name);if((p2(h.parent)||zm(h.parent)||Jm(h.parent))&&h.parent.parameters.indexOf(h)>-1&&(zs(h,h.name.escapedText,788968,void 0,h.name.escapedText,!0)||T&&vW(T))){let k=\"arg\"+h.parent.parameters.indexOf(h),O=os(h.name)+(h.dotDotDotToken?\"[]\":\"\");Ip(ge,n,_.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1,k,O);return}}p=n.dotDotDotToken?ge?_.Rest_parameter_0_implicitly_has_an_any_type:_.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage:ge?_.Parameter_0_implicitly_has_an_1_type:_.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage;break;case 205:if(p=_.Binding_element_0_implicitly_has_an_1_type,!ge)return;break;case 320:Fe(n,_.Function_type_which_lacks_return_type_annotation_implicitly_has_an_0_return_type,u);return;case 326:ge&&DL(n.parent)&&Fe(n.parent.tagName,_.This_overload_implicitly_returns_the_type_0_because_it_lacks_a_return_type_annotation,u);return;case 259:case 171:case 170:case 174:case 175:case 215:case 216:if(ge&&!n.name){c===3?Fe(n,_.Generator_implicitly_has_yield_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_return_type_annotation,u):Fe(n,_.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type,u);return}p=ge?c===3?_._0_which_lacks_return_type_annotation_implicitly_has_an_1_yield_type:_._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type:_._0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage;break;case 197:ge&&Fe(n,_.Mapped_object_type_implicitly_has_an_any_template_type);return;default:p=ge?_.Variable_0_implicitly_has_an_1_type:_.Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage}Ip(ge,n,p,os(sa(n)),u)}function CB(n,a,c){i(()=>{ge&&Ur(a)&65536&&(!c||!Nre(n))&&(AB(a)||qv(n,a,c))})}function rre(n,a,c){let u=xd(n),p=xd(a),h=AD(n),T=AD(a),k=T?p-1:p,O=h?k:Math.min(u,k),H=Yb(n);if(H){let J=Yb(a);J&&c(H,J)}for(let J=0;J<O;J++)c(N_(n,J),N_(a,J));T&&c(xD(n,O),T)}function ire(n,a,c){let u=If(n),p=If(a);u&&p&&Ene(u,p)&&u.type&&p.type?c(u.type,p.type):c(qo(n),qo(a))}function pD(n,a,c,u){return are(n.map(ore),a,c,u||Gne)}function GXe(n,a=0){return n&&are(on(n.inferences,b2e),n.signature,n.flags|a,n.compareTypes)}function are(n,a,c,u){let p={inferences:n,signature:a,flags:c,compareTypes:u,mapper:yn,nonFixingMapper:yn};return p.mapper=BXe(p),p.nonFixingMapper=UXe(p),p}function BXe(n){return Rne(on(n.inferences,a=>a.typeParameter),on(n.inferences,(a,c)=>()=>(a.isFixed||(VXe(n),IB(n.inferences),a.isFixed=!0),mre(n,c))))}function UXe(n){return Rne(on(n.inferences,a=>a.typeParameter),on(n.inferences,(a,c)=>()=>mre(n,c)))}function IB(n){for(let a of n)a.isFixed||(a.inferredType=void 0)}function v2e(n,a,c){var u;((u=n.intraExpressionInferenceSites)!=null?u:n.intraExpressionInferenceSites=[]).push({node:a,type:c})}function VXe(n){if(n.intraExpressionInferenceSites){for(let{node:a,type:c}of n.intraExpressionInferenceSites){let u=a.kind===171?dCe(a,2):Ru(a,2);u&&gh(n.inferences,c,u)}n.intraExpressionInferenceSites=void 0}}function ore(n){return{typeParameter:n,candidates:void 0,contraCandidates:void 0,inferredType:void 0,priority:void 0,topLevel:!0,isFixed:!1,impliedArity:void 0}}function b2e(n){return{typeParameter:n.typeParameter,candidates:n.candidates&&n.candidates.slice(),contraCandidates:n.contraCandidates&&n.contraCandidates.slice(),inferredType:n.inferredType,priority:n.priority,topLevel:n.topLevel,isFixed:n.isFixed,impliedArity:n.impliedArity}}function jXe(n){let a=Pr(n.inferences,aA);return a.length?are(on(a,b2e),n.signature,n.flags,n.compareTypes):void 0}function sre(n){return n&&n.mapper}function XE(n){let a=Ur(n);if(a&524288)return!!(a&1048576);let c=!!(n.flags&465829888||n.flags&524288&&!E2e(n)&&(a&4&&(n.node||mn(Ko(n),XE))||a&16&&n.symbol&&n.symbol.flags&14384&&n.symbol.declarations||a&12583968)||n.flags&3145728&&!(n.flags&1024)&&!E2e(n)&&vt(n.types,XE));return n.flags&3899393&&(n.objectFlags|=524288|(c?1048576:0)),c}function E2e(n){if(n.aliasSymbol&&!n.aliasTypeArguments){let a=nc(n.aliasSymbol,262);return!!(a&&jn(a.parent,c=>c.kind===308?!0:c.kind===264?!1:\"quit\"))}return!1}function mD(n,a,c=0){return!!(n===a||n.flags&3145728&&vt(n.types,u=>mD(u,a,c))||c<3&&n.flags&16777216&&(mD(Hv(n),a,c+1)||mD(Wv(n),a,c+1)))}function HXe(n,a){let c=If(n);return c?!!c.type&&mD(c.type,a):mD(qo(n),a)}function WXe(n){let a=Ua();QE(n,u=>{if(!(u.flags&128))return;let p=Bs(u.value),h=wo(4,p);h.links.type=Se,u.symbol&&(h.declarations=u.symbol.declarations,h.valueDeclaration=u.symbol.valueDeclaration),a.set(p,h)});let c=n.flags&4?[Fp(ae,Ki,!1)]:Je;return ls(void 0,a,Je,Je,c)}function T2e(n,a,c){if(ta)return;let u=n.id+\",\"+a.id+\",\"+c.id;if(yr.has(u))return yr.get(u);ta=!0;let p=zXe(n,a,c);return ta=!1,yr.set(u,p),p}function cre(n){return!(Ur(n)&262144)||Xv(n)&&vt(Jo(n),a=>cre(zn(a)))||po(n)&&vt(Ko(n),cre)}function zXe(n,a,c){if(!(Cm(n,ae)||Jo(n).length!==0&&cre(n)))return;if(ff(n))return nu(LB(Ko(n)[0],a,c),IC(n));if(po(n)){let p=on(Ko(n),T=>LB(T,a,c)),h=Pp(a)&4?Tl(n.target.elementFlags,T=>T&2?1:T):n.target.elementFlags;return ip(p,h,n.target.readonly,n.target.labeledElementDeclarations)}let u=Bd(1040,void 0);return u.source=n,u.mappedType=a,u.constraintType=c,u}function JXe(n){let a=Ai(n);return a.type||(a.type=LB(n.links.propertyType,n.links.mappedType,n.links.constraintType)),a.type}function LB(n,a,c){let u=od(c.type,D_(a)),p=_h(a),h=ore(u);return gh([h],n,p),S2e(h)||ue}function*lre(n,a,c,u){let p=Jo(a);for(let h of p)if(!yxe(h)&&(c||!(h.flags&16777216||ac(h)&48))){let T=ja(n,h.escapedName);if(!T)yield h;else if(u){let k=zn(h);if(k.flags&109472){let O=zn(T);O.flags&1||Hu(O)===Hu(k)||(yield h)}}}}function ure(n,a,c,u){return u8(lre(n,a,c,u))}function KXe(n,a){return!(a.target.combinedFlags&8)&&a.target.minLength>n.target.minLength||!a.target.hasRestElement&&(n.target.hasRestElement||a.target.fixedLength<n.target.fixedLength)}function qXe(n,a){return po(n)&&po(a)?KXe(n,a):!!ure(n,a,!1,!0)&&!!ure(a,n,!1,!1)}function S2e(n){return n.candidates?Gr(n.candidates,2):n.contraCandidates?so(n.contraCandidates):void 0}function dre(n){return!!Rr(n).skipDirectInference}function x2e(n){return!!(n.symbol&&vt(n.symbol.declarations,dre))}function XXe(n,a){let c=n.texts[0],u=a.texts[0],p=n.texts[n.texts.length-1],h=a.texts[a.texts.length-1],T=Math.min(c.length,u.length),k=Math.min(p.length,h.length);return c.slice(0,T)!==u.slice(0,T)||p.slice(p.length-k)!==h.slice(h.length-k)}function A2e(n,a){if(n===\"\")return!1;let c=+n;return isFinite(c)&&(!a||\"\"+c===n)}function YXe(n){return aB(BW(n))}function fre(n,a){if(a.flags&1)return!0;if(a.flags&134217732)return to(n,a);if(a.flags&268435456){let c=[];for(;a.flags&268435456;)c.unshift(a.symbol),a=a.type;return ou(c,(p,h)=>R1(h,p),n)===n&&fre(n,a)}return!1}function $Xe(n,a){if(n===a||a.flags&5)return!0;if(n.flags&128){let c=n.value;return!!(a.flags&8&&A2e(c,!1)||a.flags&64&&v4(c,!1)||a.flags&98816&&c===a.intrinsicName||a.flags&268435456&&fre(df(c),a))}if(n.flags&134217728){let c=n.texts;return c.length===2&&c[0]===\"\"&&c[1]===\"\"&&to(n.types[0],a)}return to(n,a)}function C2e(n,a){return n.flags&128?I2e([n.value],Je,a):n.flags&134217728?BD(n.texts,a.texts)?on(n.types,QXe):I2e(n.texts,n.types,a):void 0}function _re(n,a){let c=C2e(n,a);return!!c&&Ji(c,(u,p)=>$Xe(u,a.types[p]))}function QXe(n){return n.flags&402653317?n:WE([\"\",\"\"],[n])}function I2e(n,a,c){let u=n.length-1,p=n[0],h=n[u],T=c.texts,k=T.length-1,O=T[0],H=T[k];if(u===0&&p.length<O.length+H.length||!p.startsWith(O)||!h.endsWith(H))return;let J=h.slice(0,h.length-H.length),de=[],Ae=0,xe=O.length;for(let Tn=1;Tn<k;Tn++){let un=T[Tn];if(un.length>0){let Nn=Ae,en=xe;for(;en=tt(Nn).indexOf(un,en),!(en>=0);){if(Nn++,Nn===n.length)return;en=0}It(Nn,en),xe+=un.length}else if(xe<tt(Ae).length)It(Ae,xe+1);else if(Ae<u)It(Ae+1,0);else return}return It(u,tt(u).length),de;function tt(Tn){return Tn<u?n[Tn]:J}function It(Tn,un){let Nn=Tn===Ae?df(tt(Tn).slice(xe,un)):WE([n[Ae].slice(xe),...n.slice(Ae+1,Tn),tt(Tn).slice(0,un)],a.slice(Ae,Tn));de.push(Nn),Ae=Tn,xe=un}}function gh(n,a,c,u=0,p=!1){let h=!1,T,k=2048,O=!0,H,J,de,Ae=0;xe(a,c);function xe(In,qn){if(!!XE(qn)){if(In===Tt){let Mi=T;T=In,xe(qn,qn),T=Mi;return}if(In.aliasSymbol&&In.aliasSymbol===qn.aliasSymbol){if(In.aliasTypeArguments){let Mi=Ai(In.aliasSymbol).typeParameters,ga=Mp(Mi),Bi=Sy(In.aliasTypeArguments,Mi,ga,Yn(In.aliasSymbol.valueDeclaration)),ko=Sy(qn.aliasTypeArguments,Mi,ga,Yn(In.aliasSymbol.valueDeclaration));en(Bi,ko,o2e(In.aliasSymbol))}return}if(In===qn&&In.flags&3145728){for(let Mi of In.types)xe(Mi,Mi);return}if(qn.flags&1048576){let[Mi,ga]=Nn(In.flags&1048576?In.types:[In],qn.types,ZXe),[Bi,ko]=Nn(Mi,ga,eYe);if(ko.length===0)return;if(qn=Gr(ko),Bi.length===0){tt(In,qn,1);return}In=Gr(Bi)}else if(qn.flags&2097152&&!Ji(qn.types,rB)){if(!(In.flags&1048576)){let[Mi,ga]=Nn(In.flags&2097152?In.types:[In],qn.types,ph);if(Mi.length===0||ga.length===0)return;In=so(Mi),qn=so(ga)}}else qn.flags&41943040&&(qn=Cy(qn));if(qn.flags&8650752){if(x2e(In))return;let Mi=Jt(qn);if(Mi){if(Ur(In)&262144||In===ce)return;if(!Mi.isFixed){if((Mi.priority===void 0||u<Mi.priority)&&(Mi.candidates=void 0,Mi.contraCandidates=void 0,Mi.topLevel=!0,Mi.priority=u),u===Mi.priority){let Bi=T||In;p&&!h?ya(Mi.contraCandidates,Bi)||(Mi.contraCandidates=Sn(Mi.contraCandidates,Bi),IB(n)):ya(Mi.candidates,Bi)||(Mi.candidates=Sn(Mi.candidates,Bi),IB(n))}!(u&128)&&qn.flags&262144&&Mi.topLevel&&!mD(c,qn)&&(Mi.topLevel=!1,IB(n))}k=Math.min(k,u);return}let ga=mg(qn,!1);if(ga!==qn)xe(In,ga);else if(qn.flags&8388608){let Bi=mg(qn.indexType,!1);if(Bi.flags&465829888){let ko=kAe(mg(qn.objectType,!1),Bi,!1);ko&&ko!==qn&&xe(In,ko)}}}if(Ur(In)&4&&Ur(qn)&4&&(In.target===qn.target||ff(In)&&ff(qn))&&!(In.node&&qn.node))en(Ko(In),Ko(qn),zne(In.target));else if(In.flags&4194304&&qn.flags&4194304)cn(In.type,qn.type);else if((dD(In)||In.flags&4)&&qn.flags&4194304){let Mi=WXe(In);It(Mi,qn.type,256)}else if(In.flags&8388608&&qn.flags&8388608)xe(In.objectType,qn.objectType),xe(In.indexType,qn.indexType);else if(In.flags&268435456&&qn.flags&268435456)In.symbol===qn.symbol&&xe(In.type,qn.type);else if(In.flags&33554432)xe(In.baseType,qn),tt(une(In),qn,4);else if(qn.flags&16777216)un(In,qn,Hr);else if(qn.flags&3145728)Rn(In,qn.types,qn.flags);else if(In.flags&1048576){let Mi=In.types;for(let ga of Mi)xe(ga,qn)}else if(qn.flags&134217728)qi(In,qn);else{if(In=R_(In),!(u&512&&In.flags&467927040)){let Mi=Eu(In);if(Mi!==In&&O&&!(Mi.flags&2621440))return O=!1,xe(Mi,qn);In=Mi}In.flags&2621440&&un(In,qn,wa)}}}function tt(In,qn,Mi){let ga=u;u|=Mi,xe(In,qn),u=ga}function It(In,qn,Mi){let ga=u;u|=Mi,cn(In,qn),u=ga}function Tn(In,qn,Mi,ga){let Bi=u;u|=ga,Rn(In,qn,Mi),u=Bi}function un(In,qn,Mi){let ga=In.id+\",\"+qn.id,Bi=H&&H.get(ga);if(Bi!==void 0){k=Math.min(k,Bi);return}(H||(H=new Map)).set(ga,-1);let ko=k;k=2048;let us=Ae,Xs=CC(In),no=CC(qn);ya(J,Xs)&&(Ae|=1),ya(de,no)&&(Ae|=2),Ae!==3?((J||(J=[])).push(Xs),(de||(de=[])).push(no),Mi(In,qn),de.pop(),J.pop()):k=-1,Ae=us,H.set(ga,k),k=Math.min(k,ko)}function Nn(In,qn,Mi){let ga,Bi;for(let ko of qn)for(let us of In)Mi(us,ko)&&(xe(us,ko),ga=xg(ga,us),Bi=xg(Bi,ko));return[ga?Pr(In,ko=>!ya(ga,ko)):In,Bi?Pr(qn,ko=>!ya(Bi,ko)):qn]}function en(In,qn,Mi){let ga=In.length<qn.length?In.length:qn.length;for(let Bi=0;Bi<ga;Bi++)Bi<Mi.length&&(Mi[Bi]&7)===2?cn(In[Bi],qn[Bi]):xe(In[Bi],qn[Bi])}function cn(In,qn){p=!p,xe(In,qn),p=!p}function rr(In,qn){re||u&1024?cn(In,qn):xe(In,qn)}function Jt(In){if(In.flags&8650752){for(let qn of n)if(In===qn.typeParameter)return qn}}function Cn(In){let qn;for(let Mi of In){let ga=Mi.flags&2097152&&wr(Mi.types,Bi=>!!Jt(Bi));if(!ga||qn&&ga!==qn)return;qn=ga}return qn}function Rn(In,qn,Mi){let ga=0;if(Mi&1048576){let Bi,ko=In.flags&1048576?In.types:[In],us=new Array(ko.length),Xs=!1;for(let no of qn)if(Jt(no))Bi=no,ga++;else for(let Tu=0;Tu<ko.length;Tu++){let et=k;k=2048,xe(ko[Tu],no),k===u&&(us[Tu]=!0),Xs=Xs||k===-1,k=Math.min(k,et)}if(ga===0){let no=Cn(qn);no&&tt(In,no,1);return}if(ga===1&&!Xs){let no=Uo(ko,(Tu,et)=>us[et]?void 0:Tu);if(no.length){xe(Gr(no),Bi);return}}}else for(let Bi of qn)Jt(Bi)?ga++:xe(In,Bi);if(Mi&2097152?ga===1:ga>0)for(let Bi of qn)Jt(Bi)&&tt(In,Bi,1)}function Br(In,qn,Mi){if(Mi.flags&1048576){let ga=!1;for(let Bi of Mi.types)ga=Br(In,qn,Bi)||ga;return ga}if(Mi.flags&4194304){let ga=Jt(Mi.type);if(ga&&!ga.isFixed&&!x2e(In)){let Bi=T2e(In,qn,Mi);Bi&&tt(Bi,ga.typeParameter,Ur(In)&262144?16:8)}return!0}if(Mi.flags&262144){tt(Gp(In),Mi,32);let ga=VE(Mi);if(ga&&Br(In,qn,ga))return!0;let Bi=on(Jo(In),zn),ko=on(tu(In),us=>us!==yu?us.type:lt);return xe(Gr(Qi(Bi,ko)),_h(qn)),!0}return!1}function Hr(In,qn){if(In.flags&16777216)xe(In.checkType,qn.checkType),xe(In.extendsType,qn.extendsType),xe(Hv(In),Hv(qn)),xe(Wv(In),Wv(qn));else{let Mi=[Hv(qn),Wv(qn)];Tn(In,Mi,qn.flags,p?64:0)}}function qi(In,qn){let Mi=C2e(In,qn),ga=qn.types;if(Mi||Ji(qn.texts,Bi=>Bi.length===0))for(let Bi=0;Bi<ga.length;Bi++){let ko=Mi?Mi[Bi]:lt,us=ga[Bi];if(ko.flags&128&&us.flags&8650752){let Xs=Jt(us),no=Xs?bu(Xs.typeParameter):void 0;if(no&&!Zo(no)){let Tu=no.flags&1048576?no.types:[no],et=ou(Tu,(he,Bn)=>he|Bn.flags,0);if(!(et&4)){let he=ko.value;et&296&&!A2e(he,!0)&&(et&=-297),et&2112&&!v4(he,!0)&&(et&=-2113);let Bn=ou(Tu,(Mn,or)=>or.flags&et?Mn.flags&4?Mn:or.flags&4?ko:Mn.flags&134217728?Mn:or.flags&134217728&&_re(ko,or)?ko:Mn.flags&268435456?Mn:or.flags&268435456&&he===CAe(or.symbol,he)?ko:Mn.flags&128?Mn:or.flags&128&&or.value===he?or:Mn.flags&8?Mn:or.flags&8?ap(+he):Mn.flags&32?Mn:or.flags&32?ap(+he):Mn.flags&256?Mn:or.flags&256&&or.value===+he?or:Mn.flags&64?Mn:or.flags&64?YXe(he):Mn.flags&2048?Mn:or.flags&2048&&j0(or.value)===he?or:Mn.flags&16?Mn:or.flags&16?he===\"true\"?pe:he===\"false\"?Ke:Te:Mn.flags&512?Mn:or.flags&512&&or.intrinsicName===he?or:Mn.flags&32768?Mn:or.flags&32768&&or.intrinsicName===he?or:Mn.flags&65536?Mn:or.flags&65536&&or.intrinsicName===he?or:Mn:Mn,lt);if(!(Bn.flags&131072)){xe(Bn,us);continue}}}}xe(ko,us)}}function wa(In,qn){var Mi,ga;if(Ur(In)&4&&Ur(qn)&4&&(In.target===qn.target||ff(In)&&ff(qn))){en(Ko(In),Ko(qn),zne(In.target));return}if(uf(In)&&uf(qn)){xe(np(In),np(qn)),xe(_h(In),_h(qn));let Bi=by(In),ko=by(qn);Bi&&ko&&xe(Bi,ko)}if(Ur(qn)&32&&!qn.declaration.nameType){let Bi=np(qn);if(Br(In,qn,Bi))return}if(!qXe(In,qn)){if(JE(In)){if(po(qn)){let Bi=Vv(In),ko=Vv(qn),us=Ko(qn),Xs=qn.target.elementFlags;if(po(In)&&LXe(In,qn)){for(let et=0;et<ko;et++)xe(Ko(In)[et],us[et]);return}let no=po(In)?Math.min(In.target.fixedLength,qn.target.fixedLength):0,Tu=Math.min(po(In)?cM(In.target,3):0,qn.target.hasRestElement?cM(qn.target,3):0);for(let et=0;et<no;et++)xe(Ko(In)[et],us[et]);if(!po(In)||Bi-no-Tu===1&&In.target.elementFlags[no]&4){let et=Ko(In)[no];for(let he=no;he<ko-Tu;he++)xe(Xs[he]&8?nu(et):et,us[he])}else{let et=ko-no-Tu;if(et===2){if(Xs[no]&Xs[no+1]&8){let he=Jt(us[no]);he&&he.impliedArity!==void 0&&(xe(TC(In,no,Tu+Bi-he.impliedArity),us[no]),xe(TC(In,no+he.impliedArity,Tu),us[no+1]))}else if(Xs[no]&8&&Xs[no+1]&4){let he=(Mi=Jt(us[no]))==null?void 0:Mi.typeParameter,Bn=he&&bu(he);if(Bn&&po(Bn)&&!Bn.target.hasRestElement){let Mn=Bn.target.fixedLength;xe(TC(In,no,Bi-(no+Mn)),us[no]),xe(kC(In,no+Mn,Tu),us[no+1])}}else if(Xs[no]&4&&Xs[no+1]&8){let he=(ga=Jt(us[no+1]))==null?void 0:ga.typeParameter,Bn=he&&bu(he);if(Bn&&po(Bn)&&!Bn.target.hasRestElement){let Mn=Bn.target.fixedLength,or=Bi-cM(qn.target,3),_r=or-Mn,ua=ip(Ko(In).slice(_r,or),In.target.elementFlags.slice(_r,or),!1,In.target.labeledElementDeclarations&&In.target.labeledElementDeclarations.slice(_r,or));xe(kC(In,no,Tu+Mn),us[no]),xe(ua,us[no+1])}}}else if(et===1&&Xs[no]&8){let he=qn.target.elementFlags[ko-1]&2,Bn=TC(In,no,Tu);tt(Bn,us[no],he?2:0)}else if(et===1&&Xs[no]&4){let he=kC(In,no,Tu);he&&xe(he,us[no])}}for(let et=0;et<Tu;et++)xe(Ko(In)[Bi-et-1],us[ko-et-1]);return}if(ff(qn)){ji(In,qn);return}}Xc(In,qn),_f(In,qn,0),_f(In,qn,1),ji(In,qn)}}function Xc(In,qn){let Mi=Ey(qn);for(let ga of Mi){let Bi=ja(In,ga.escapedName);Bi&&!vt(Bi.declarations,dre)&&xe(zn(Bi),zn(ga))}}function _f(In,qn,Mi){let ga=xa(In,Mi),Bi=xa(qn,Mi),ko=ga.length,us=Bi.length,Xs=ko<us?ko:us;for(let no=0;no<Xs;no++)Hd(oKe(ga[ko-Xs+no]),nD(Bi[us-Xs+no]))}function Hd(In,qn){let Mi=h,ga=qn.declaration?qn.declaration.kind:0;h=h||ga===171||ga===170||ga===173,rre(In,qn,rr),h=Mi,ire(In,qn,xe)}function ji(In,qn){let Mi=Ur(In)&Ur(qn)&32?8:0,ga=tu(qn);if(xB(In))for(let Bi of ga){let ko=[];for(let us of Jo(In))if(jx(SC(us,8576),Bi.keyType)){let Xs=zn(us);ko.push(us.flags&16777216?tre(Xs):Xs)}for(let us of tu(In))jx(us.keyType,Bi.keyType)&&ko.push(us.type);ko.length&&tt(Gr(ko),Bi.type,Mi)}for(let Bi of ga){let ko=iM(In,Bi.keyType);ko&&tt(ko.type,Bi.type,Mi)}}}function ZXe(n,a){return a===Ge?n===a:ph(n,a)||!!(a.flags&4&&n.flags&128||a.flags&8&&n.flags&256)}function eYe(n,a){return!!(n.flags&524288&&a.flags&524288&&n.symbol&&n.symbol===a.symbol||n.aliasSymbol&&n.aliasTypeArguments&&n.aliasSymbol===a.aliasSymbol)}function tYe(n){let a=eu(n);return!!a&&Js(a.flags&16777216?Hte(a):a,406978556)}function Xv(n){return!!(Ur(n)&128)}function pre(n){return!!(Ur(n)&16512)}function nYe(n){if(n.length>1){let a=Pr(n,pre);if(a.length){let c=Gr(a,2);return Qi(Pr(n,u=>!pre(u)),[c])}}return n}function rYe(n){return n.priority&416?so(n.contraCandidates):EXe(n.contraCandidates)}function iYe(n,a){let c=nYe(n.candidates),u=tYe(n.typeParameter)||nM(n.typeParameter),p=!u&&n.topLevel&&(n.isFixed||!HXe(a,n.typeParameter)),h=u?Tl(c,Hu):p?Tl(c,i0):c,T=n.priority&416?Gr(h,2):bXe(h);return Sd(T)}function mre(n,a){let c=n.inferences[a];if(!c.inferredType){let u,p=n.signature;if(p){let T=c.candidates?iYe(c,p):void 0;if(c.contraCandidates)u=T&&!(T.flags&131072)&&vt(c.contraCandidates,O=>Iy(T,O))&&Ji(n.inferences,O=>O!==c&&eu(O.typeParameter)!==c.typeParameter||Ji(O.candidates,H=>Iy(H,T)))?T:rYe(c);else if(T)u=T;else if(n.flags&1)u=Qe;else{let k=jE(c.typeParameter);k&&(u=Oi(k,Nqe(Oqe(n,a),n.nonFixingMapper)))}}else u=S2e(c);c.inferredType=u||hre(!!(n.flags&2));let h=eu(c.typeParameter);if(h){let T=Oi(h,n.nonFixingMapper);(!u||!n.compareTypes(u,lf(T,u)))&&(c.inferredType=u=T)}}return c.inferredType}function hre(n){return n?Se:ue}function gre(n){let a=[];for(let c=0;c<n.inferences.length;c++)a.push(mre(n,c));return a}function L2e(n){switch(n.escapedText){case\"document\":case\"console\":return _.Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_include_dom;case\"$\":return Y.types?_.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_save_dev_types_Slashjquery_and_then_add_jquery_to_the_types_field_in_your_tsconfig:_.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_save_dev_types_Slashjquery;case\"describe\":case\"suite\":case\"it\":case\"test\":return Y.types?_.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_types_Slashjest_or_npm_i_save_dev_types_Slashmocha_and_then_add_jest_or_mocha_to_the_types_field_in_your_tsconfig:_.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_save_dev_types_Slashjest_or_npm_i_save_dev_types_Slashmocha;case\"process\":case\"require\":case\"Buffer\":case\"module\":return Y.types?_.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashnode_and_then_add_node_to_the_types_field_in_your_tsconfig:_.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashnode;case\"Map\":case\"Set\":case\"Promise\":case\"Symbol\":case\"WeakMap\":case\"WeakSet\":case\"Iterator\":case\"AsyncIterator\":case\"SharedArrayBuffer\":case\"Atomics\":case\"AsyncIterable\":case\"AsyncIterableIterator\":case\"AsyncGenerator\":case\"AsyncGeneratorFunction\":case\"BigInt\":case\"Reflect\":case\"BigInt64Array\":case\"BigUint64Array\":return _.Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_1_or_later;case\"await\":if(Pa(n.parent))return _.Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function;default:return n.parent.kind===300?_.No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer:_.Cannot_find_name_0}}function $f(n){let a=Rr(n);return a.resolvedSymbol||(a.resolvedSymbol=!rc(n)&&zs(n,n.escapedText,1160127,L2e(n),n,!hW(n),!1)||Ht),a.resolvedSymbol}function DC(n){return!!jn(n,a=>a.kind===183?!0:a.kind===79||a.kind===163?!1:\"quit\")}function k2e(n){return!!(n.flags&16777216||jn(n,a=>ku(a)||Rd(a)))}function kB(n,a,c,u){switch(n.kind){case 79:if(!hS(n)){let T=$f(n);return T!==Ht?`${u?zo(u):\"-1\"}|${ru(a)}|${ru(c)}|${$a(T)}`:void 0}case 108:return`0|${u?zo(u):\"-1\"}|${ru(a)}|${ru(c)}`;case 232:case 214:return kB(n.expression,a,c,u);case 163:let p=kB(n.left,a,c,u);return p&&p+\".\"+n.right.escapedText;case 208:case 209:let h=YE(n);if(h!==void 0){let T=kB(n.expression,a,c,u);return T&&T+\".\"+h}break;case 203:case 204:case 259:case 215:case 216:case 171:return`${zo(n)}#${ru(a)}`}}function El(n,a){switch(a.kind){case 214:case 232:return El(n,a.expression);case 223:return Iu(a)&&El(n,a.left)||ar(a)&&a.operatorToken.kind===27&&El(n,a.right)}switch(n.kind){case 233:return a.kind===233&&n.keywordToken===a.keywordToken&&n.name.escapedText===a.name.escapedText;case 79:case 80:return hS(n)?a.kind===108:a.kind===79&&$f(n)===$f(a)||(wi(a)||Wo(a))&&ep($f(n))===fr(a);case 108:return a.kind===108;case 106:return a.kind===106;case 232:case 214:return El(n.expression,a);case 208:case 209:let c=YE(n),u=Us(a)?YE(a):void 0;return c!==void 0&&u!==void 0&&u===c&&El(n.expression,a.expression);case 163:return Us(a)&&n.right.escapedText===YE(a)&&El(n.left,a.expression);case 223:return ar(n)&&n.operatorToken.kind===27&&El(n.right,a)}return!1}function YE(n){if(br(n))return n.name.escapedText;if(Vs(n))return aYe(n);if(Wo(n)){let a=dn(n);return a?Bs(a):void 0}if(ha(n))return\"\"+n.parent.parameters.indexOf(n)}function D2e(n){return n.flags&8192?n.escapedName:n.flags&384?Bs(\"\"+n.value):void 0}function aYe(n){if(gf(n.argumentExpression))return Bs(n.argumentExpression.text);if(bc(n.argumentExpression)){let a=uc(n.argumentExpression,111551,!0);if(!a||!(RC(a)||a.flags&8))return;let c=a.valueDeclaration;if(c===void 0)return;let u=ad(c);if(u){let p=D2e(u);if(p!==void 0)return p}if(hT(c)&&$h(c,n.argumentExpression)){let p=$w(c);if(p)return D2e(au(p));if(q0(c))return RA(c.name)}}}function w2e(n,a){for(;Us(n);)if(n=n.expression,El(n,a))return!0;return!1}function M1(n,a){for(;Jl(n);)if(n=n.expression,El(n,a))return!0;return!1}function hD(n,a){if(n&&n.flags&1048576){let c=Kte(n,a);if(c&&ac(c)&2)return c.links.isDiscriminantProperty===void 0&&(c.links.isDiscriminantProperty=(c.links.checkFlags&192)===192&&!xC(zn(c))),!!c.links.isDiscriminantProperty}return!1}function R2e(n,a){let c;for(let u of n)if(hD(a,u.escapedName)){if(c){c.push(u);continue}c=[u]}return c}function oYe(n,a){let c=new Map,u=0;for(let p of n)if(p.flags&61603840){let h=Vc(p,a);if(h){if(!dD(h))return;let T=!1;QE(h,k=>{let O=ru(Hu(k)),H=c.get(O);H?H!==ue&&(c.set(O,ue),T=!0):c.set(O,p)}),T||u++}}return u>=10&&u*2>=n.length?c:void 0}function SM(n){let a=n.types;if(!(a.length<10||Ur(n)&32768||Oy(a,c=>!!(c.flags&59506688))<10)){if(n.keyPropertyName===void 0){let c=mn(a,p=>p.flags&59506688?mn(Jo(p),h=>O_(zn(h))?h.escapedName:void 0):void 0),u=c&&oYe(a,c);n.keyPropertyName=u?c:\"\",n.constituentMap=u}return n.keyPropertyName.length?n.keyPropertyName:void 0}}function xM(n,a){var c;let u=(c=n.constituentMap)==null?void 0:c.get(ru(Hu(a)));return u!==ue?u:void 0}function O2e(n,a){let c=SM(n),u=c&&Vc(a,c);return u&&xM(n,u)}function sYe(n,a){let c=SM(n),u=c&&wr(a.properties,h=>h.symbol&&h.kind===299&&h.symbol.escapedName===c&&wM(h.initializer)),p=u&&qM(u.initializer);return p&&xM(n,p)}function N2e(n,a){return El(n,a)||w2e(n,a)}function P2e(n,a){if(n.arguments){for(let c of n.arguments)if(N2e(a,c))return!0}return!!(n.expression.kind===208&&N2e(a,n.expression.expression))}function yre(n){return(!n.id||n.id<0)&&(n.id=gK,gK++),n.id}function cYe(n,a){if(!(n.flags&1048576))return to(n,a);for(let c of n.types)if(to(c,a))return!0;return!1}function lYe(n,a){var c;if(n===a)return n;if(a.flags&131072)return a;let u=`A${ru(n)},${ru(a)}`;return(c=wb(u))!=null?c:qh(u,uYe(n,a))}function uYe(n,a){let c=jc(n,p=>cYe(a,p)),u=a.flags&512&&t0(a)?Ls(c,$x):c;return to(a,u)?u:n}function vre(n){let a=w_(n);return!!(a.callSignatures.length||a.constructSignatures.length||a.members.get(\"bind\")&&Iy(n,Hs))}function iu(n){n.flags&467927040&&(n=bu(n)||ue);let a=n.flags;if(a&268435460)return U?16317953:16776705;if(a&134217856){let c=a&128&&n.value===\"\";return U?c?12123649:7929345:c?12582401:16776705}if(a&40)return U?16317698:16776450;if(a&256){let c=n.value===0;return U?c?12123394:7929090:c?12582146:16776450}if(a&64)return U?16317188:16775940;if(a&2048){let c=p2e(n);return U?c?12122884:7928580:c?12581636:16775940}return a&16?U?16316168:16774920:a&528?U?n===Ke||n===oe?12121864:7927560:n===Ke||n===oe?12580616:16774920:a&524288?Ur(n)&16&&mh(n)?U?83427327:83886079:vre(n)?U?7880640:16728e3:U?7888800:16736160:a&16384?9830144:a&32768?26607360:a&65536?42917664:a&12288?U?7925520:16772880:a&67108864?U?7888800:16736160:a&131072?0:a&1048576?ou(n.types,(c,u)=>c|iu(u),0):a&2097152?dYe(n):83886079}function dYe(n){let a=Js(n,134348796),c=0,u=134217727;for(let p of n.types)if(!(a&&p.flags&524288)){let h=iu(p);c|=h,u&=h}return c&8256|u&134209471}function Df(n,a){return jc(n,c=>(iu(c)&a)!==0)}function $E(n,a){let c=M2e(Df(U&&n.flags&2?hc:n,a));if(U)switch(a){case 524288:return Ls(c,u=>iu(u)&65536?so([u,iu(u)&131072&&!Js(c,65536)?Gr([Ki,ln]):Ki]):u);case 1048576:return Ls(c,u=>iu(u)&131072?so([u,iu(u)&65536&&!Js(c,32768)?Gr([Ki,Oe]):Ki]):u);case 2097152:case 4194304:return Ls(c,u=>iu(u)&262144?wXe(u):u)}return c}function M2e(n){return n===hc?ue:n}function bre(n,a){return a?Gr([me(n),au(a)]):n}function F2e(n,a){var c;let u=pg(a);if(!fh(u))return ve;let p=Np(u);return Vc(n,p)||gD((c=Hx(n,p))==null?void 0:c.type)||ve}function G2e(n,a){return Im(n,LC)&&TXe(n,a)||gD(wy(65,n,Oe,void 0))||ve}function gD(n){return n&&(Y.noUncheckedIndexedAccess?Gr([n,Ge]):n)}function B2e(n){return nu(wy(65,n,Oe,void 0)||ve)}function fYe(n){return n.parent.kind===206&&Ere(n.parent)||n.parent.kind===299&&Ere(n.parent.parent)?bre(AM(n),n.right):au(n.right)}function Ere(n){return n.parent.kind===223&&n.parent.left===n||n.parent.kind===247&&n.parent.initializer===n}function _Ye(n,a){return G2e(AM(n),n.elements.indexOf(a))}function pYe(n){return B2e(AM(n.parent))}function U2e(n){return F2e(AM(n.parent),n.name)}function mYe(n){return bre(U2e(n),n.objectAssignmentInitializer)}function AM(n){let{parent:a}=n;switch(a.kind){case 246:return ae;case 247:return t8(a)||ve;case 223:return fYe(a);case 217:return Oe;case 206:return _Ye(a,n);case 227:return pYe(a);case 299:return U2e(a);case 300:return mYe(a)}return ve}function hYe(n){let a=n.parent,c=j2e(a.parent),u=a.kind===203?F2e(c,n.propertyName||n.name):n.dotDotDotToken?B2e(c):G2e(c,a.elements.indexOf(n));return bre(u,n.initializer)}function V2e(n){return Rr(n).resolvedType||au(n)}function gYe(n){return n.initializer?V2e(n.initializer):n.parent.parent.kind===246?ae:n.parent.parent.kind===247&&t8(n.parent.parent)||ve}function j2e(n){return n.kind===257?gYe(n):hYe(n)}function yYe(n){return n.kind===257&&n.initializer&&is(n.initializer)||n.kind!==205&&n.parent.kind===223&&is(n.parent.right)}function a0(n){switch(n.kind){case 214:return a0(n.expression);case 223:switch(n.operatorToken.kind){case 63:case 75:case 76:case 77:return a0(n.left);case 27:return a0(n.right)}}return n}function H2e(n){let{parent:a}=n;return a.kind===214||a.kind===223&&a.operatorToken.kind===63&&a.left===n||a.kind===223&&a.operatorToken.kind===27&&a.right===n?H2e(a):n}function vYe(n){return n.kind===292?Hu(au(n.expression)):lt}function DB(n){let a=Rr(n);if(!a.switchTypes){a.switchTypes=[];for(let c of n.caseBlock.clauses)a.switchTypes.push(vYe(c))}return a.switchTypes}function W2e(n){if(vt(n.caseBlock.clauses,c=>c.kind===292&&!es(c.expression)))return;let a=[];for(let c of n.caseBlock.clauses){let u=c.kind===292?c.expression.text:void 0;a.push(u&&!ya(a,u)?u:void 0)}return a}function bYe(n,a){return n.flags&1048576?!mn(n.types,c=>!ya(a,c)):ya(a,n)}function yD(n,a){return n===a||a.flags&1048576&&EYe(n,a)}function EYe(n,a){if(n.flags&1048576){for(let c of n.types)if(!Qb(a.types,c))return!1;return!0}return n.flags&1056&&qk(n)===a?!0:Qb(a.types,n)}function QE(n,a){return n.flags&1048576?mn(n.types,a):a(n)}function yh(n,a){return n.flags&1048576?vt(n.types,a):a(n)}function Im(n,a){return n.flags&1048576?Ji(n.types,a):a(n)}function TYe(n,a){return n.flags&3145728?Ji(n.types,a):a(n)}function jc(n,a){if(n.flags&1048576){let c=n.types,u=Pr(c,a);if(u===c)return n;let p=n.origin,h;if(p&&p.flags&1048576){let T=p.types,k=Pr(T,O=>!!(O.flags&1048576)||a(O));if(T.length-k.length===c.length-u.length){if(k.length===1)return k[0];h=bne(1048576,k)}}return Tne(u,n.objectFlags&16809984,void 0,void 0,h)}return n.flags&131072||a(n)?n:lt}function wB(n,a){return jc(n,c=>c!==a)}function SYe(n){return n.flags&1048576?n.types.length:1}function Ls(n,a,c){if(n.flags&131072)return n;if(!(n.flags&1048576))return a(n);let u=n.origin,p=u&&u.flags&1048576?u.types:n.types,h,T=!1;for(let k of p){let O=k.flags&1048576?Ls(k,a,c):a(k);T||(T=k!==O),O&&(h?h.push(O):h=[O])}return T?h&&Gr(h,c?0:1):n}function z2e(n,a,c,u){return n.flags&1048576&&c?Gr(on(n.types,a),1,c,u):Ls(n,a)}function wC(n,a){return jc(n,c=>(c.flags&a)!==0)}function J2e(n,a){return Js(n,134217804)&&Js(a,402655616)?Ls(n,c=>c.flags&4?wC(a,402653316):Xx(c)&&!Js(a,402653188)?wC(a,128):c.flags&8?wC(a,264):c.flags&64?wC(a,2112):c):n}function eA(n){return n.flags===0}function ZE(n){return n.flags===0?n.type:n}function tA(n,a){return a?{flags:0,type:n.flags&131072?Qe:n}:n}function xYe(n){let a=Bd(256);return a.elementType=n,a}function Tre(n){return hi[n.id]||(hi[n.id]=xYe(n))}function K2e(n,a){let c=TM(ky(qM(a)));return yD(c,n.elementType)?n:Tre(Gr([n.elementType,c]))}function AYe(n){return n.flags&131072?bn:nu(n.flags&1048576?Gr(n.types,2):n)}function CYe(n){return n.finalArrayType||(n.finalArrayType=AYe(n.elementType))}function CM(n){return Ur(n)&256?CYe(n):n}function IYe(n){return Ur(n)&256?n.elementType:lt}function LYe(n){let a=!1;for(let c of n)if(!(c.flags&131072)){if(!(Ur(c)&256))return!1;a=!0}return a}function q2e(n){let a=H2e(n),c=a.parent,u=br(c)&&(c.name.escapedText===\"length\"||c.parent.kind===210&&Re(c.name)&&jH(c.name)),p=c.kind===209&&c.expression===a&&c.parent.kind===223&&c.parent.operatorToken.kind===63&&c.parent.left===c&&!Um(c.parent)&&ul(au(c.argumentExpression),296);return u||p}function kYe(n){return(wi(n)||Na(n)||Yd(n)||ha(n))&&!!(Cl(n)||Yn(n)&&Jy(n)&&n.initializer&&o2(n.initializer)&&B_(n.initializer))}function RB(n,a){if(n=Ac(n),n.flags&8752)return zn(n);if(n.flags&7){if(ac(n)&262144){let u=n.links.syntheticOrigin;if(u&&RB(u))return zn(n)}let c=n.valueDeclaration;if(c){if(kYe(c))return zn(n);if(wi(c)&&c.parent.parent.kind===247){let u=c.parent.parent,p=IM(u.expression,void 0);if(p){let h=u.awaitModifier?15:13;return wy(h,p,Oe,void 0)}}a&&Ao(a,hr(c,_._0_needs_an_explicit_type_annotation,E(n)))}}}function IM(n,a){if(!(n.flags&33554432))switch(n.kind){case 79:let c=ep($f(n));return RB(c,a);case 108:return qYe(n);case 106:return Ire(n);case 208:{let u=IM(n.expression,a);if(u){let p=n.name,h;if(pi(p)){if(!u.symbol)return;h=ja(u,gR(u.symbol,p.escapedText))}else h=ja(u,p.escapedText);return h&&RB(h,a)}return}case 214:return IM(n.expression,a)}}function OB(n){let a=Rr(n),c=a.effectsSignature;if(c===void 0){let u;n.parent.kind===241?u=IM(n.expression,void 0):n.expression.kind!==106&&(Jl(n)?u=op(fD(Yi(n.expression),n.expression),n.expression):u=PC(n.expression));let p=xa(u&&Eu(u)||ue,0),h=p.length===1&&!p[0].typeParameters?p[0]:vt(p,X2e)?FC(n):void 0;c=a.effectsSignature=h&&X2e(h)?h:jt}return c===jt?void 0:c}function X2e(n){return!!(If(n)||n.declaration&&(Wx(n.declaration)||ue).flags&131072)}function DYe(n,a){if(n.kind===1||n.kind===3)return a.arguments[n.parameterIndex];let c=vs(a.expression);return Us(c)?vs(c.expression):void 0}function wYe(n){let a=jn(n,Bj),c=Gn(n),u=Pg(c,a.statements.pos);Lo.add(al(c,u.start,u.length,_.The_containing_function_or_module_body_is_too_large_for_control_flow_analysis))}function LM(n){let a=NB(n,!1);return $t=n,Xn=a,a}function kM(n){let a=vs(n,!0);return a.kind===95||a.kind===223&&(a.operatorToken.kind===55&&(kM(a.left)||kM(a.right))||a.operatorToken.kind===56&&kM(a.left)&&kM(a.right))}function NB(n,a){for(;;){if(n===$t)return Xn;let c=n.flags;if(c&4096){if(!a){let u=yre(n),p=bx[u];return p!==void 0?p:bx[u]=NB(n,!0)}a=!1}if(c&368)n=n.antecedent;else if(c&512){let u=OB(n.node);if(u){let p=If(u);if(p&&p.kind===3&&!p.type){let h=n.node.arguments[p.parameterIndex];if(h&&kM(h))return!1}if(qo(u).flags&131072)return!1}n=n.antecedent}else{if(c&4)return vt(n.antecedents,u=>NB(u,!1));if(c&8){let u=n.antecedents;if(u===void 0||u.length===0)return!1;n=u[0]}else if(c&128){if(n.clauseStart===n.clauseEnd&&xIe(n.switchStatement))return!1;n=n.antecedent}else if(c&1024){$t=void 0;let u=n.target,p=u.antecedents;u.antecedents=n.antecedents;let h=NB(n.antecedent,!1);return u.antecedents=p,h}else return!(c&1)}}}function PB(n,a){for(;;){let c=n.flags;if(c&4096){if(!a){let u=yre(n),p=_E[u];return p!==void 0?p:_E[u]=PB(n,!0)}a=!1}if(c&496)n=n.antecedent;else if(c&512){if(n.node.expression.kind===106)return!0;n=n.antecedent}else{if(c&4)return Ji(n.antecedents,u=>PB(u,!1));if(c&8)n=n.antecedents[0];else if(c&1024){let u=n.target,p=u.antecedents;u.antecedents=n.antecedents;let h=PB(n.antecedent,!1);return u.antecedents=p,h}else return!!(c&1)}}}function Y2e(n){switch(n.kind){case 79:if(!hS(n)){let a=$f(n);return RC(a)||VW(a)&&!MB(a)}break;case 208:case 209:return Y2e(n.expression)&&P_(Rr(n).resolvedSymbol||Ht)}return!1}function Yv(n,a,c=a,u,p=(h=>(h=zr(n,lR))==null?void 0:h.flowNode)()){let h,T=!1,k=0;if(ki)return ve;if(!p)return a;Vn++;let O=kr,H=ZE(Ae(p));kr=O;let J=Ur(H)&256&&q2e(n)?bn:CM(H);if(J===Hn||n.parent&&n.parent.kind===232&&!(J.flags&131072)&&Df(J,2097152).flags&131072)return a;return J===G?ue:J;function de(){return T?h:(T=!0,h=kB(n,a,c,u))}function Ae(st){var Ct;if(k===2e3)return(Ct=ai)==null||Ct.instant(ai.Phase.CheckTypes,\"getTypeAtFlowNode_DepthLimit\",{flowId:st.id}),ki=!0,wYe(n),ve;k++;let Bt;for(;;){let Ft=st.flags;if(Ft&4096){for(let Un=O;Un<kr;Un++)if(fE[Un]===st)return k--,yv[Un];Bt=st}let hn;if(Ft&16){if(hn=tt(st),!hn){st=st.antecedent;continue}}else if(Ft&512){if(hn=Tn(st),!hn){st=st.antecedent;continue}}else if(Ft&96)hn=Nn(st);else if(Ft&128)hn=en(st);else if(Ft&12){if(st.antecedents.length===1){st=st.antecedents[0];continue}hn=Ft&4?cn(st):rr(st)}else if(Ft&256){if(hn=un(st),!hn){st=st.antecedent;continue}}else if(Ft&1024){let Un=st.target,yi=Un.antecedents;Un.antecedents=st.antecedents,hn=Ae(st.antecedent),Un.antecedents=yi}else if(Ft&2){let Un=st.node;if(Un&&Un!==u&&n.kind!==208&&n.kind!==209&&n.kind!==108){st=Un.flowNode;continue}hn=c}else hn=MD(a);return Bt&&(fE[kr]=Bt,yv[kr]=hn,kr++),k--,hn}}function xe(st){let Ct=st.node;return Sre(Ct.kind===257||Ct.kind===205?j2e(Ct):AM(Ct),n)}function tt(st){let Ct=st.node;if(El(n,Ct)){if(!LM(st))return Hn;if(AT(Ct)===2){let Bt=Ae(st.antecedent);return tA(ky(ZE(Bt)),eA(Bt))}if(a===at||a===bn){if(yYe(Ct))return Tre(lt);let Bt=i0(xe(st));return to(Bt,a)?Bt:Et}return a.flags&1048576?lYe(a,xe(st)):a}if(w2e(n,Ct)){if(!LM(st))return Hn;if(wi(Ct)&&(Yn(Ct)||kh(Ct))){let Bt=Qw(Ct);if(Bt&&(Bt.kind===215||Bt.kind===216))return Ae(st.antecedent)}return a}if(wi(Ct)&&Ct.parent.parent.kind===246&&(El(n,Ct.parent.parent.expression)||M1(Ct.parent.parent.expression,n)))return Wre(CM(ZE(Ae(st.antecedent))))}function It(st,Ct){let Bt=vs(Ct,!0);if(Bt.kind===95)return Hn;if(Bt.kind===223){if(Bt.operatorToken.kind===55)return It(It(st,Bt.left),Bt.right);if(Bt.operatorToken.kind===56)return Gr([It(st,Bt.left),It(st,Bt.right)])}return _i(st,Bt,!0)}function Tn(st){let Ct=OB(st.node);if(Ct){let Bt=If(Ct);if(Bt&&(Bt.kind===2||Bt.kind===3)){let Ft=Ae(st.antecedent),hn=CM(ZE(Ft)),Un=Bt.type?ua(hn,Bt,st.node,!0):Bt.kind===3&&Bt.parameterIndex>=0&&Bt.parameterIndex<st.node.arguments.length?It(hn,st.node.arguments[Bt.parameterIndex]):hn;return Un===hn?Ft:tA(Un,eA(Ft))}if(qo(Ct).flags&131072)return Hn}}function un(st){if(a===at||a===bn){let Ct=st.node,Bt=Ct.kind===210?Ct.expression.expression:Ct.left.expression;if(El(n,a0(Bt))){let Ft=Ae(st.antecedent),hn=ZE(Ft);if(Ur(hn)&256){let Un=hn;if(Ct.kind===210)for(let yi of Ct.arguments)Un=K2e(Un,yi);else{let yi=qM(Ct.left.argumentExpression);ul(yi,296)&&(Un=K2e(Un,Ct.right))}return Un===hn?Ft:tA(Un,eA(Ft))}return Ft}}}function Nn(st){let Ct=Ae(st.antecedent),Bt=ZE(Ct);if(Bt.flags&131072)return Ct;let Ft=(st.flags&32)!==0,hn=CM(Bt),Un=_i(hn,st.node,Ft);return Un===hn?Ct:tA(Un,eA(Ct))}function en(st){let Ct=st.switchStatement.expression,Bt=Ae(st.antecedent),Ft=ZE(Bt);if(El(n,Ct))Ft=ko(Ft,st.switchStatement,st.clauseStart,st.clauseEnd);else if(Ct.kind===218&&El(n,Ct.expression))Ft=no(Ft,st.switchStatement,st.clauseStart,st.clauseEnd);else{U&&(M1(Ct,n)?Ft=Bi(Ft,st.switchStatement,st.clauseStart,st.clauseEnd,Un=>!(Un.flags&163840)):Ct.kind===218&&M1(Ct.expression,n)&&(Ft=Bi(Ft,st.switchStatement,st.clauseStart,st.clauseEnd,Un=>!(Un.flags&131072||Un.flags&128&&Un.value===\"undefined\"))));let hn=Rn(Ct,Ft);hn&&(Ft=qi(Ft,hn,st.switchStatement,st.clauseStart,st.clauseEnd))}return tA(Ft,eA(Bt))}function cn(st){let Ct=[],Bt=!1,Ft=!1,hn;for(let Un of st.antecedents){if(!hn&&Un.flags&128&&Un.clauseStart===Un.clauseEnd){hn=Un;continue}let yi=Ae(Un),Di=ZE(yi);if(Di===a&&a===c)return Di;Rf(Ct,Di),yD(Di,a)||(Bt=!0),eA(yi)&&(Ft=!0)}if(hn){let Un=Ae(hn),yi=ZE(Un);if(!(yi.flags&131072)&&!ya(Ct,yi)&&!xIe(hn.switchStatement)){if(yi===a&&a===c)return yi;Ct.push(yi),yD(yi,a)||(Bt=!0),eA(Un)&&(Ft=!0)}}return tA(Jt(Ct,Bt?2:1),Ft)}function rr(st){let Ct=yre(st),Bt=zh[Ct]||(zh[Ct]=new Map),Ft=de();if(!Ft)return a;let hn=Bt.get(Ft);if(hn)return hn;for(let er=sn;er<Dn;er++)if(m1[er]===st&&uE[er]===Ft&&dE[er].length)return tA(Jt(dE[er],1),!0);let Un=[],yi=!1,Di;for(let er of st.antecedents){let Sr;if(!Di)Sr=Di=Ae(er);else{m1[Dn]=st,uE[Dn]=Ft,dE[Dn]=Un,Dn++;let Ii=ra;ra=void 0,Sr=Ae(er),ra=Ii,Dn--;let Bo=Bt.get(Ft);if(Bo)return Bo}let Dr=ZE(Sr);if(Rf(Un,Dr),yD(Dr,a)||(yi=!0),Dr===a)break}let Xt=Jt(Un,yi?2:1);return eA(Di)?tA(Xt,!0):(Bt.set(Ft,Xt),Xt)}function Jt(st,Ct){if(LYe(st))return Tre(Gr(on(st,IYe)));let Bt=M2e(Gr(Tl(st,CM),Ct));return Bt!==a&&Bt.flags&a.flags&1048576&&BD(Bt.types,a.types)?a:Bt}function Cn(st){if(La(n)||o2(n)||o_(n)){if(Re(st)){let Bt=$f(st).valueDeclaration;if(Bt&&(Wo(Bt)||ha(Bt))&&n===Bt.parent&&!Bt.initializer&&!Bt.dotDotDotToken)return Bt}}else if(Us(st)){if(El(n,st.expression))return st}else if(Re(st)){let Ct=$f(st);if(RC(Ct)){let Bt=Ct.valueDeclaration;if(wi(Bt)&&!Bt.type&&Bt.initializer&&Us(Bt.initializer)&&El(n,Bt.initializer.expression))return Bt.initializer;if(Wo(Bt)&&!Bt.initializer){let Ft=Bt.parent.parent;if(wi(Ft)&&!Ft.type&&Ft.initializer&&(Re(Ft.initializer)||Us(Ft.initializer))&&El(n,Ft.initializer))return Bt}}}}function Rn(st,Ct){let Bt=a.flags&1048576?a:Ct;if(Bt.flags&1048576){let Ft=Cn(st);if(Ft){let hn=YE(Ft);if(hn&&hD(Bt,hn))return Ft}}}function Br(st,Ct,Bt){let Ft=YE(Ct);if(Ft===void 0)return st;let hn=Jl(Ct),Un=U&&(hn||Hle(Ct))&&Js(st,98304),yi=Vc(Un?Df(st,2097152):st,Ft);if(!yi)return st;yi=Un&&hn?gg(yi):yi;let Di=Bt(yi);return jc(st,Xt=>{let er=qP(Xt,Ft);return!(er.flags&131072)&&!(Di.flags&131072)&&pM(Di,er)})}function Hr(st,Ct,Bt,Ft,hn){if((Bt===36||Bt===37)&&st.flags&1048576){let Un=SM(st);if(Un&&Un===YE(Ct)){let yi=xM(st,au(Ft));if(yi)return Bt===(hn?36:37)?yi:O_(Vc(yi,Un)||ue)?wB(st,yi):st}}return Br(st,Ct,Un=>qn(Un,Bt,Ft,hn))}function qi(st,Ct,Bt,Ft,hn){if(Ft<hn&&st.flags&1048576&&SM(st)===YE(Ct)){let Un=DB(Bt).slice(Ft,hn),yi=Gr(on(Un,Di=>xM(st,Di)||ue));if(yi!==ue)return yi}return Br(st,Ct,Un=>ko(Un,Bt,Ft,hn))}function wa(st,Ct,Bt){if(El(n,Ct))return $E(st,Bt?4194304:8388608);U&&Bt&&M1(Ct,n)&&(st=$E(st,2097152));let Ft=Rn(Ct,st);return Ft?Br(st,Ft,hn=>Df(hn,Bt?4194304:8388608)):st}function Xc(st,Ct,Bt){let Ft=ja(st,Ct);return Ft?!!(Ft.flags&16777216)||Bt:!!Hx(st,Ct)||!Bt}function _f(st,Ct,Bt){let Ft=Np(Ct);if(yh(st,Un=>Xc(Un,Ft,!0)))return jc(st,Un=>Xc(Un,Ft,Bt));if(Bt){let Un=MKe();if(Un)return so([st,Kx(Un,[Ct,ue])])}return st}function Hd(st,Ct,Bt){switch(Ct.operatorToken.kind){case 63:case 75:case 76:case 77:return wa(_i(st,Ct.right,Bt),Ct.left,Bt);case 34:case 35:case 36:case 37:let Ft=Ct.operatorToken.kind,hn=a0(Ct.left),Un=a0(Ct.right);if(hn.kind===218&&es(Un))return Mi(st,hn,Ft,Un,Bt);if(Un.kind===218&&es(hn))return Mi(st,Un,Ft,hn,Bt);if(El(n,hn))return qn(st,Ft,Un,Bt);if(El(n,Un))return qn(st,Ft,hn,Bt);U&&(M1(hn,n)?st=In(st,Ft,Un,Bt):M1(Un,n)&&(st=In(st,Ft,hn,Bt)));let yi=Rn(hn,st);if(yi)return Hr(st,yi,Ft,Un,Bt);let Di=Rn(Un,st);if(Di)return Hr(st,Di,Ft,hn,Bt);if(Tu(hn))return et(st,Ft,Un,Bt);if(Tu(Un))return et(st,Ft,hn,Bt);break;case 102:return he(st,Ct,Bt);case 101:if(pi(Ct.left))return ji(st,Ct,Bt);let Xt=a0(Ct.right),er=au(Ct.left);if(er.flags&8576){if(_D(st)&&Us(n)&&El(n.expression,Xt)&&YE(n)===Np(er))return Df(st,Bt?524288:65536);if(El(n,Xt))return _f(st,er,Bt)}break;case 27:return _i(st,Ct.right,Bt);case 55:return Bt?_i(_i(st,Ct.left,!0),Ct.right,!0):Gr([_i(st,Ct.left,!1),_i(st,Ct.right,!1)]);case 56:return Bt?Gr([_i(st,Ct.left,!0),_i(st,Ct.right,!0)]):_i(_i(st,Ct.left,!1),Ct.right,!1)}return st}function ji(st,Ct,Bt){let Ft=a0(Ct.right);if(!El(n,Ft))return st;L.assertNode(Ct.left,pi);let hn=KB(Ct.left);if(hn===void 0)return st;let Un=hn.parent,yi=zc(L.checkDefined(hn.valueDeclaration,\"should always have a declaration\"))?zn(Un):gs(Un);return Mn(st,yi,Bt,!0)}function In(st,Ct,Bt,Ft){let hn=Ct===34||Ct===36,Un=Ct===34||Ct===35?98304:32768,yi=au(Bt);return hn!==Ft&&Im(yi,Xt=>!!(Xt.flags&Un))||hn===Ft&&Im(yi,Xt=>!(Xt.flags&(3|Un)))?$E(st,2097152):st}function qn(st,Ct,Bt,Ft){if(st.flags&1)return st;(Ct===35||Ct===37)&&(Ft=!Ft);let hn=au(Bt),Un=Ct===34||Ct===35;if(hn.flags&98304){if(!U)return st;let yi=Un?Ft?262144:2097152:hn.flags&65536?Ft?131072:1048576:Ft?65536:524288;return $E(st,yi)}if(Ft){if(!Un&&(st.flags&2||yh(st,hh))){if(hn.flags&201457660||hh(hn))return hn;if(hn.flags&524288)return jr}let yi=jc(st,Di=>pM(Di,hn)||Un&&RXe(Di,hn));return J2e(yi,hn)}return O_(hn)?jc(st,yi=>!(d2e(yi)&&pM(yi,hn))):st}function Mi(st,Ct,Bt,Ft,hn){(Bt===35||Bt===37)&&(hn=!hn);let Un=a0(Ct.expression);if(!El(n,Un)){U&&M1(Un,n)&&hn===(Ft.text!==\"undefined\")&&(st=$E(st,2097152));let yi=Rn(Un,st);return yi?Br(st,yi,Di=>ga(Di,Ft,hn)):st}return ga(st,Ft,hn)}function ga(st,Ct,Bt){return Bt?us(st,Ct.text):$E(st,fF.get(Ct.text)||32768)}function Bi(st,Ct,Bt,Ft,hn){return Bt!==Ft&&Ji(DB(Ct).slice(Bt,Ft),hn)?Df(st,2097152):st}function ko(st,Ct,Bt,Ft){let hn=DB(Ct);if(!hn.length)return st;let Un=hn.slice(Bt,Ft),yi=Bt===Ft||ya(Un,lt);if(st.flags&2&&!yi){let Sr;for(let Dr=0;Dr<Un.length;Dr+=1){let Ii=Un[Dr];if(Ii.flags&201457660)Sr!==void 0&&Sr.push(Ii);else if(Ii.flags&524288)Sr===void 0&&(Sr=Un.slice(0,Dr)),Sr.push(jr);else return st}return Gr(Sr===void 0?Un:Sr)}let Di=Gr(Un),Xt=Di.flags&131072?lt:J2e(jc(st,Sr=>pM(Di,Sr)),Di);if(!yi)return Xt;let er=jc(st,Sr=>!(d2e(Sr)&&ya(hn,Hu(xXe(Sr)))));return Xt.flags&131072?er:Gr([Xt,er])}function us(st,Ct){switch(Ct){case\"string\":return Xs(st,ae,1);case\"number\":return Xs(st,rt,2);case\"bigint\":return Xs(st,Ot,4);case\"boolean\":return Xs(st,Te,8);case\"symbol\":return Xs(st,j,16);case\"object\":return st.flags&1?st:Gr([Xs(st,jr,32),Xs(st,ln,131072)]);case\"function\":return st.flags&1?st:Xs(st,Hs,64);case\"undefined\":return Xs(st,Oe,65536)}return Xs(st,jr,128)}function Xs(st,Ct,Bt){return Ls(st,Ft=>Bp(Ft,Ct,S_)?iu(Ft)&Bt?Ft:lt:Iy(Ct,Ft)?Ct:iu(Ft)&Bt?so([Ft,Ct]):lt)}function no(st,Ct,Bt,Ft){let hn=W2e(Ct);if(!hn)return st;let Un=Yc(Ct.caseBlock.clauses,Xt=>Xt.kind===293);if(Bt===Ft||Un>=Bt&&Un<Ft){let Xt=SIe(Bt,Ft,hn);return jc(st,er=>(iu(er)&Xt)===Xt)}let Di=hn.slice(Bt,Ft);return Gr(on(Di,Xt=>Xt?us(st,Xt):lt))}function Tu(st){return(br(st)&&vr(st.name)===\"constructor\"||Vs(st)&&es(st.argumentExpression)&&st.argumentExpression.text===\"constructor\")&&El(n,st.expression)}function et(st,Ct,Bt,Ft){if(Ft?Ct!==34&&Ct!==36:Ct!==35&&Ct!==37)return st;let hn=au(Bt);if(!Jie(hn)&&!Uv(hn))return st;let Un=ja(hn,\"prototype\");if(!Un)return st;let yi=zn(Un),Di=Zo(yi)?void 0:yi;if(!Di||Di===ka||Di===Hs)return st;if(Zo(st))return Di;return jc(st,er=>Xt(er,Di));function Xt(er,Sr){return er.flags&524288&&Ur(er)&1||Sr.flags&524288&&Ur(Sr)&1?er.symbol===Sr.symbol:Iy(er,Sr)}}function he(st,Ct,Bt){let Ft=a0(Ct.left);if(!El(n,Ft))return Bt&&U&&M1(Ft,n)?$E(st,2097152):st;let hn=au(Ct.right);if(!r0(hn,Hs))return st;let Un=Ls(hn,Bn);return Zo(st)&&(Un===ka||Un===Hs)||!Bt&&!(Un.flags&524288&&!hh(Un))?st:Mn(st,Un,Bt,!0)}function Bn(st){let Ct=Vc(st,\"prototype\");if(Ct&&!Zo(Ct))return Ct;let Bt=xa(st,1);return Bt.length?Gr(on(Bt,Ft=>qo(nD(Ft)))):Ki}function Mn(st,Ct,Bt,Ft){var hn;let Un=st.flags&1048576?`N${ru(st)},${ru(Ct)},${(Bt?1:0)|(Ft?2:0)}`:void 0;return(hn=wb(Un))!=null?hn:qh(Un,or(st,Ct,Bt,Ft))}function or(st,Ct,Bt,Ft){if(!Bt){if(Ft)return jc(st,Xt=>!r0(Xt,Ct));let Di=Mn(st,Ct,!0,!1);return jc(st,Xt=>!yD(Xt,Di))}if(st.flags&3)return Ct;let hn=Ft?r0:Iy,Un=st.flags&1048576?SM(st):void 0,yi=Ls(Ct,Di=>{let Xt=Un&&Vc(Di,Un),er=Xt&&xM(st,Xt),Sr=Ls(er||st,Ft?Dr=>r0(Dr,Di)?Dr:r0(Di,Dr)?Di:lt:Dr=>qAe(Dr,Di)?Dr:qAe(Di,Dr)?Di:Iy(Dr,Di)?Dr:Iy(Di,Dr)?Di:lt);return Sr.flags&131072?Ls(st,Dr=>Js(Dr,465829888)&&hn(Di,bu(Dr)||ue)?so([Dr,Di]):lt):Sr});return yi.flags&131072?Iy(Ct,st)?Ct:to(st,Ct)?st:to(Ct,st)?Ct:so([st,Ct]):yi}function _r(st,Ct,Bt){if(P2e(Ct,n)){let Ft=Bt||!fT(Ct)?OB(Ct):void 0,hn=Ft&&If(Ft);if(hn&&(hn.kind===0||hn.kind===1))return ua(st,hn,Ct,Bt)}if(_D(st)&&Us(n)&&br(Ct.expression)){let Ft=Ct.expression;if(El(n.expression,a0(Ft.expression))&&Re(Ft.name)&&Ft.name.escapedText===\"hasOwnProperty\"&&Ct.arguments.length===1){let hn=Ct.arguments[0];if(es(hn)&&YE(n)===Bs(hn.text))return Df(st,Bt?524288:65536)}}return st}function ua(st,Ct,Bt,Ft){if(Ct.type&&!(Zo(st)&&(Ct.type===ka||Ct.type===Hs))){let hn=DYe(Ct,Bt);if(hn){if(El(n,hn))return Mn(st,Ct.type,Ft,!1);U&&Ft&&M1(hn,n)&&!(iu(Ct.type)&65536)&&(st=$E(st,2097152));let Un=Rn(hn,st);if(Un)return Br(st,Un,yi=>Mn(yi,Ct.type,Ft,!1))}}return st}function _i(st,Ct,Bt){if(r6(Ct)||ar(Ct.parent)&&(Ct.parent.operatorToken.kind===60||Ct.parent.operatorToken.kind===77)&&Ct.parent.left===Ct)return ur(st,Ct,Bt);switch(Ct.kind){case 79:if(!El(n,Ct)&&C<5){let Ft=$f(Ct);if(RC(Ft)){let hn=Ft.valueDeclaration;if(hn&&wi(hn)&&!hn.type&&hn.initializer&&Y2e(n)){C++;let Un=_i(st,hn.initializer,Bt);return C--,Un}}}case 108:case 106:case 208:case 209:return wa(st,Ct,Bt);case 210:return _r(st,Ct,Bt);case 214:case 232:return _i(st,Ct.expression,Bt);case 223:return Hd(st,Ct,Bt);case 221:if(Ct.operator===53)return _i(st,Ct.operand,!Bt);break}return st}function ur(st,Ct,Bt){if(El(n,Ct))return $E(st,Bt?2097152:262144);let Ft=Rn(Ct,st);return Ft?Br(st,Ft,hn=>Df(hn,Bt?2097152:262144)):st}}function RYe(n,a){if(n=ep(n),(a.kind===79||a.kind===80)&&(JI(a)&&(a=a.parent),Dh(a)&&(!Um(a)||$I(a)))){let c=au(a);if(ep(Rr(a).resolvedSymbol)===n)return c}return Rh(a)&&Ng(a.parent)&&N(a.parent)?Fi(a.parent.symbol):Gv(n)}function vD(n){return jn(n.parent,a=>Ia(a)&&!TT(a)||a.kind===265||a.kind===308||a.kind===169)}function MB(n){if(!n.valueDeclaration)return!1;let a=nm(n.valueDeclaration).parent,c=Rr(a);return c.flags&524288||(c.flags|=524288,OYe(a)||$2e(a)),n.isAssigned||!1}function OYe(n){return!!jn(n.parent,a=>(Ia(a)||T2(a))&&!!(Rr(a).flags&524288))}function $2e(n){if(n.kind===79){if(Um(n)){let a=$f(n);VW(a)&&(a.isAssigned=!0)}}else pa(n,$2e)}function RC(n){return n.flags&3&&(WB(n)&2)!==0}function NYe(n){let a=Rr(n);if(a.parameterInitializerContainsUndefined===void 0){if(!sf(n,9))return mC(n.symbol),!0;let c=!!(iu(LD(n,0))&16777216);if(!Cf())return mC(n.symbol),!0;a.parameterInitializerContainsUndefined=c}return a.parameterInitializerContainsUndefined}function PYe(n,a){return U&&a.kind===166&&a.initializer&&iu(n)&16777216&&!NYe(a)?Df(n,524288):n}function MYe(n,a){let c=a.parent;return c.kind===208||c.kind===163||c.kind===210&&c.expression===a||c.kind===209&&c.expression===a&&!(yh(n,Z2e)&&jv(au(c.argumentExpression)))}function Q2e(n){return n.flags&2097152?vt(n.types,Q2e):!!(n.flags&465829888&&Ty(n).flags&1146880)}function Z2e(n){return n.flags&2097152?vt(n.types,Z2e):!!(n.flags&465829888&&!Js(Ty(n),98304))}function FYe(n,a){let c=(Re(n)||br(n)||Vs(n))&&!((Xm(n.parent)||GS(n.parent))&&n.parent.tagName===n)&&(a&&a&64?Ru(n,8):Ru(n,void 0));return c&&!xC(c)}function Sre(n,a,c){return!(c&&c&2)&&yh(n,Q2e)&&(MYe(n,a)||FYe(a,c))?Ls(n,Ty):n}function eCe(n){return!!jn(n,a=>{let c=a.parent;return c===void 0?\"quit\":pc(c)?c.expression===a&&bc(a):Mu(c)?c.name===a||c.propertyName===a:!1})}function FB(n,a){if(!Y.verbatimModuleSyntax&&ay(n,111551)&&!DC(a)&&!nd(n,111551)){let c=wc(n);Fl(c)&1160127&&(u_(Y)||U0(Y)&&eCe(a)||!FD(ep(c))?Hb(n):Wb(n))}}function GYe(n,a){var c;let u=zn(n),p=n.valueDeclaration;if(p){if(Wo(p)&&!p.initializer&&!p.dotDotDotToken&&p.parent.elements.length>=2){let h=p.parent.parent;if(h.kind===257&&F_(p)&2||h.kind===166){let T=Rr(h);if(!(T.flags&16777216)){T.flags|=16777216;let k=Mx(h,0),O=k&&Ls(k,Ty);if(T.flags&=-16777217,O&&O.flags&1048576&&!(h.kind===166&&MB(n))){let H=p.parent,J=Yv(H,O,O,void 0,a.flowNode);return J.flags&131072?lt:li(p,J)}}}}if(ha(p)&&!p.type&&!p.initializer&&!p.dotDotDotToken){let h=p.parent;if(h.parameters.length>=2&&fB(h)){let T=ED(h);if(T&&T.parameters.length===1&&Xl(T)){let k=bC(Oi(zn(T.parameters[0]),(c=F1(h))==null?void 0:c.nonFixingMapper));if(k.flags&1048576&&Im(k,po)&&!MB(n)){let O=Yv(h,k,k,void 0,a.flowNode),H=h.parameters.indexOf(p)-(F0(h)?1:0);return od(O,ap(H))}}}}}return u}function BYe(n,a){if(hS(n))return DM(n);let c=$f(n);if(c===Ht)return ve;if(c===_t){if(FCe(n))return Fe(n,_.arguments_cannot_be_referenced_in_property_initializers),ve;let Nn=qd(n);return R<2&&(Nn.kind===216?Fe(n,_.The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression):Mr(Nn,512)&&Fe(n,_.The_arguments_object_cannot_be_referenced_in_an_async_function_or_method_in_ES3_and_ES5_Consider_using_a_standard_function_or_method)),Rr(Nn).flags|=512,zn(c)}VYe(n)&&FB(c,n);let u=ep(c),p=MLe(u,n);Sv(p)&&xne(n,p)&&p.declarations&&Xh(n,p.declarations,n.escapedText);let h=u.valueDeclaration;if(h&&u.flags&32){if(h.kind===260&&GA(Q,h)){let Nn=Zc(n);for(;Nn!==void 0;){if(Nn===h&&Nn.name!==n){Rr(h).flags|=1048576,Rr(n).flags|=2097152;break}Nn=Zc(Nn)}}else if(h.kind===228){let Nn=Ku(n,!1,!1);for(;Nn.kind!==308;){if(Nn.parent===h){(Na(Nn)&&Ca(Nn)||oc(Nn))&&(Rr(h).flags|=1048576,Rr(n).flags|=2097152);break}Nn=Ku(Nn,!1,!1)}}}WYe(n,c);let T=GYe(u,n),k=AT(n);if(k){if(!(u.flags&3)&&!(Yn(n)&&u.flags&512)){let Nn=u.flags&384?_.Cannot_assign_to_0_because_it_is_an_enum:u.flags&32?_.Cannot_assign_to_0_because_it_is_a_class:u.flags&1536?_.Cannot_assign_to_0_because_it_is_a_namespace:u.flags&16?_.Cannot_assign_to_0_because_it_is_a_function:u.flags&2097152?_.Cannot_assign_to_0_because_it_is_an_import:_.Cannot_assign_to_0_because_it_is_not_a_variable;return Fe(n,Nn,E(c)),ve}if(P_(u))return u.flags&3?Fe(n,_.Cannot_assign_to_0_because_it_is_a_constant,E(c)):Fe(n,_.Cannot_assign_to_0_because_it_is_a_read_only_property,E(c)),ve}let O=u.flags&2097152;if(u.flags&3){if(k===1)return T}else if(O)h=Uu(c);else return T;if(!h)return T;T=Sre(T,n,a);let H=nm(h).kind===166,J=vD(h),de=vD(n),Ae=de!==J,xe=n.parent&&n.parent.parent&&jS(n.parent)&&Ere(n.parent.parent),tt=c.flags&134217728;for(;de!==J&&(de.kind===215||de.kind===216||D6(de))&&(RC(u)&&T!==bn||H&&!MB(u));)de=vD(de);let It=H||O||Ae||xe||tt||UYe(n,h)||T!==at&&T!==bn&&(!U||(T.flags&16387)!==0||DC(n)||k2e(n)||n.parent.kind===278)||n.parent.kind===232||h.kind===257&&h.exclamationToken||h.flags&16777216,Tn=It?H?PYe(T,h):T:T===at||T===bn?Oe:gg(T),un=Yv(n,T,Tn,de);if(!q2e(n)&&(T===at||T===bn)){if(un===at||un===bn)return ge&&(Fe(sa(h),_.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined,E(c),Ee(un)),Fe(n,_.Variable_0_implicitly_has_an_1_type,E(c),Ee(un))),MD(un)}else if(!It&&!AC(T)&&AC(un))return Fe(n,_.Variable_0_is_used_before_being_assigned,E(c)),T;return k?ky(un):un}function UYe(n,a){if(Wo(a)){let c=jn(n,Wo);return c&&nm(c)===nm(a)}}function VYe(n){var a;let c=n.parent;if(c){if(br(c)&&c.expression===n||Mu(c)&&c.isTypeOnly)return!1;let u=(a=c.parent)==null?void 0:a.parent;if(u&&Il(u)&&u.isTypeOnly)return!1}return!0}function jYe(n,a){return!!jn(n,c=>c===a?\"quit\":Ia(c)||c.parent&&Na(c.parent)&&!zc(c.parent)&&c.parent.initializer===c)}function HYe(n,a){return jn(n,c=>c===a?\"quit\":c===a.initializer||c===a.condition||c===a.incrementor||c===a.statement)}function xre(n){return jn(n,a=>!a||HH(a)?\"quit\":Wy(a,!1))}function WYe(n,a){if(R>=2||(a.flags&34)===0||!a.valueDeclaration||Li(a.valueDeclaration)||a.valueDeclaration.parent.kind===295)return;let c=tm(a.valueDeclaration),u=jYe(n,c),p=xre(c);if(p){if(u){let h=!0;if(GT(c)){let T=cb(a.valueDeclaration,258);if(T&&T.parent===c){let k=HYe(n.parent,c);if(k){let O=Rr(k);O.flags|=8192;let H=O.capturedBlockScopeBindings||(O.capturedBlockScopeBindings=[]);Rf(H,a),k===c.initializer&&(h=!1)}}}h&&(Rr(p).flags|=4096)}if(GT(c)){let h=cb(a.valueDeclaration,258);h&&h.parent===c&&JYe(n,c)&&(Rr(a.valueDeclaration).flags|=262144)}Rr(a.valueDeclaration).flags|=32768}u&&(Rr(a.valueDeclaration).flags|=16384)}function zYe(n,a){let c=Rr(n);return!!c&&ya(c.capturedBlockScopeBindings,fr(a))}function JYe(n,a){let c=n;for(;c.parent.kind===214;)c=c.parent;let u=!1;if(Um(c))u=!0;else if(c.parent.kind===221||c.parent.kind===222){let p=c.parent;u=p.operator===45||p.operator===46}return u?!!jn(c,p=>p===a?\"quit\":p===a.statement):!1}function Are(n,a){if(Rr(n).flags|=2,a.kind===169||a.kind===173){let c=a.parent;Rr(c).flags|=4}else Rr(a).flags|=4}function tCe(n){return NA(n)?n:Ia(n)?void 0:pa(n,tCe)}function nCe(n){let a=fr(n),c=gs(a);return Wr(c)===ir}function rCe(n,a,c){let u=a.parent;P0(u)&&!nCe(u)&&lR(n)&&n.flowNode&&!PB(n.flowNode,!1)&&Fe(n,c)}function KYe(n,a){Na(a)&&zc(a)&&Q&&a.initializer&&Y8(a.initializer,n.pos)&&vf(a.parent)&&Fe(n,_.Cannot_use_this_in_a_static_property_initializer_of_a_decorated_class)}function DM(n){let a=DC(n),c=Ku(n,!0,!0),u=!1,p=!1;for(c.kind===173&&rCe(n,c,_.super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class);;){if(c.kind===216&&(c=Ku(c,!1,!p),u=!0),c.kind===164){c=Ku(c,!u,!1),p=!0;continue}break}if(KYe(n,c),p)Fe(n,_.this_cannot_be_referenced_in_a_computed_property_name);else switch(c.kind){case 264:Fe(n,_.this_cannot_be_referenced_in_a_module_or_namespace_body);break;case 263:Fe(n,_.this_cannot_be_referenced_in_current_location);break;case 173:iCe(n,c)&&Fe(n,_.this_cannot_be_referenced_in_constructor_arguments);break}!a&&u&&R<2&&Are(n,c);let h=Cre(n,!0,c);if(X){let T=zn(Ye);if(h===T&&u)Fe(n,_.The_containing_arrow_function_captures_the_global_value_of_this);else if(!h){let k=Fe(n,_.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation);if(!Li(c)){let O=Cre(c);O&&O!==T&&Ao(k,hr(c,_.An_outer_value_of_this_is_shadowed_by_this_container))}}}return h||Se}function Cre(n,a=!0,c=Ku(n,!1,!1)){let u=Yn(n);if(Ia(c)&&(!kre(n)||F0(c))){let p=Pt(c)||u&&YYe(c);if(!p){let h=XYe(c);if(u&&h){let T=Yi(h).symbol;T&&T.members&&T.flags&16&&(p=gs(T).thisType)}else sp(c)&&(p=gs(No(c.symbol)).thisType);p||(p=oCe(c))}if(p)return Yv(n,p)}if(Yr(c.parent)){let p=fr(c.parent),h=Ca(c)?zn(p):gs(p).thisType;return Yv(n,h)}if(Li(c))if(c.commonJsModuleIndicator){let p=fr(c);return p&&zn(p)}else{if(c.externalModuleIndicator)return Oe;if(a)return zn(Ye)}}function qYe(n){let a=Ku(n,!1,!1);if(Ia(a)){let c=rp(a);if(c.thisParameter)return RB(c.thisParameter)}if(Yr(a.parent)){let c=fr(a.parent);return Ca(a)?zn(c):gs(c).thisType}}function XYe(n){if(n.kind===215&&ar(n.parent)&&ic(n.parent)===3)return n.parent.left.expression.expression;if(n.kind===171&&n.parent.kind===207&&ar(n.parent.parent)&&ic(n.parent.parent)===6)return n.parent.parent.left.expression;if(n.kind===215&&n.parent.kind===299&&n.parent.parent.kind===207&&ar(n.parent.parent.parent)&&ic(n.parent.parent.parent)===6)return n.parent.parent.parent.left.expression;if(n.kind===215&&yl(n.parent)&&Re(n.parent.name)&&(n.parent.name.escapedText===\"value\"||n.parent.name.escapedText===\"get\"||n.parent.name.escapedText===\"set\")&&rs(n.parent.parent)&&Pa(n.parent.parent.parent)&&n.parent.parent.parent.arguments[2]===n.parent.parent&&ic(n.parent.parent.parent)===9)return n.parent.parent.parent.arguments[0].expression;if(Nc(n)&&Re(n.name)&&(n.name.escapedText===\"value\"||n.name.escapedText===\"get\"||n.name.escapedText===\"set\")&&rs(n.parent)&&Pa(n.parent.parent)&&n.parent.parent.arguments[2]===n.parent&&ic(n.parent.parent)===9)return n.parent.parent.arguments[0].expression}function YYe(n){let a=Vy(n);if(a&&a.kind===320){let u=a;if(u.parameters.length>0&&u.parameters[0].name&&u.parameters[0].name.escapedText===\"this\")return $r(u.parameters[0].type)}let c=e6(n);if(c&&c.typeExpression)return $r(c.typeExpression)}function iCe(n,a){return!!jn(n,c=>Ds(c)?\"quit\":c.kind===166&&c.parent===a)}function Ire(n){let a=n.parent.kind===210&&n.parent.expression===n,c=zw(n,!0),u=c,p=!1,h=!1;if(!a){for(;u&&u.kind===216;)Mr(u,512)&&(h=!0),u=zw(u,!0),p=R<2;u&&Mr(u,512)&&(h=!0)}let T=0;if(!u||!J(u)){let de=jn(n,Ae=>Ae===u?\"quit\":Ae.kind===164);return de&&de.kind===164?Fe(n,_.super_cannot_be_referenced_in_a_computed_property_name):a?Fe(n,_.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors):!u||!u.parent||!(Yr(u.parent)||u.parent.kind===207)?Fe(n,_.super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions):Fe(n,_.super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class),ve}if(!a&&c.kind===173&&rCe(n,u,_.super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class),Ca(u)||a?(T=32,!a&&R>=2&&R<=8&&(Na(u)||oc(u))&&Jse(n.parent,de=>{(!Li(de)||kd(de))&&(Rr(de).flags|=8388608)})):T=16,Rr(n).flags|=T,u.kind===171&&h&&(Pu(n.parent)&&Um(n.parent)?Rr(u).flags|=256:Rr(u).flags|=128),p&&Are(n.parent,u),u.parent.kind===207)return R<2?(Fe(n,_.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher),ve):Se;let k=u.parent;if(!P0(k))return Fe(n,_.super_can_only_be_referenced_in_a_derived_class),ve;let O=gs(fr(k)),H=O&&_o(O)[0];if(!H)return ve;if(u.kind===173&&iCe(n,u))return Fe(n,_.super_cannot_be_referenced_in_constructor_arguments),ve;return T===32?Wr(O):lf(H,O.thisType);function J(de){return a?de.kind===173:Yr(de.parent)||de.parent.kind===207?Ca(de)?de.kind===171||de.kind===170||de.kind===174||de.kind===175||de.kind===169||de.kind===172:de.kind===171||de.kind===170||de.kind===174||de.kind===175||de.kind===169||de.kind===168||de.kind===173:!1}}function $Ye(n){return(n.kind===171||n.kind===174||n.kind===175)&&n.parent.kind===207?n.parent:n.kind===215&&n.parent.kind===299?n.parent.parent:void 0}function aCe(n){return Ur(n)&4&&n.target===ye?Ko(n)[0]:void 0}function QYe(n){return Ls(n,a=>a.flags&2097152?mn(a.types,aCe):aCe(a))}function oCe(n){if(n.kind===216)return;if(fB(n)){let c=ED(n);if(c){let u=c.thisParameter;if(u)return zn(u)}}let a=Yn(n);if(X||a){let c=$Ye(n);if(c){let p=o0(c,void 0),h=c,T=p;for(;T;){let k=QYe(T);if(k)return Oi(k,sre(F1(c)));if(h.parent.kind!==299)break;h=h.parent.parent,T=o0(h,void 0)}return Sd(p?yg(p):Ic(c))}let u=qy(n.parent);if(u.kind===223&&u.operatorToken.kind===63){let p=u.left;if(Us(p)){let{expression:h}=p;if(a&&Re(h)){let T=Gn(u);if(T.commonJsModuleIndicator&&$f(h)===T.symbol)return}return Sd(Ic(h))}}}}function sCe(n){let a=n.parent;if(!fB(a))return;let c=TT(a);if(c&&c.arguments){let p=rie(c),h=a.parameters.indexOf(n);if(n.dotDotDotToken)return tie(p,h,p.length,Se,void 0,0);let T=Rr(c),k=T.resolvedSignature;T.resolvedSignature=As;let O=h<p.length?i0(Yi(p[h])):n.initializer?void 0:je;return T.resolvedSignature=k,O}let u=ED(a);if(u){let p=a.parameters.indexOf(n)-(F0(a)?1:0);return n.dotDotDotToken&&Os(a.parameters)===n?xD(u,p):tT(u,p)}}function Lre(n,a){let c=Cl(n)||(Yn(n)?T4(n):void 0);if(c)return $r(c);switch(n.kind){case 166:return sCe(n);case 205:return ZYe(n,a);case 169:if(Ca(n))return e$e(n,a)}}function ZYe(n,a){let c=n.parent.parent,u=n.propertyName||n.name,p=Lre(c,a)||c.kind!==205&&c.initializer&&LD(c,n.dotDotDotToken?64:0);if(!p||La(u)||jw(u))return;if(c.name.kind===204){let T=wA(n.parent.elements,n);return T<0?void 0:fCe(p,T)}let h=pg(u);if(fh(h)){let T=Np(h);return Vc(p,T)}}function e$e(n,a){let c=ot(n.parent)&&Ru(n.parent,a);if(!!c)return eT(c,fr(n).escapedName)}function t$e(n,a){let c=n.parent;if(Jy(c)&&n===c.initializer){let u=Lre(c,a);if(u)return u;if(!(a&8)&&La(c.name)&&c.name.elements.length>0)return oo(c.name,!0,!1)}}function n$e(n,a){let c=qd(n);if(c){let u=Dre(c,a);if(u){let p=pl(c);if(p&1){let h=(p&2)!==0;u.flags&1048576&&(u=jc(u,k=>!!c0(1,k,h)));let T=c0(1,u,(p&2)!==0);if(!T)return;u=T}if(p&2){let h=Ls(u,bg);return h&&Gr([h,bIe(h)])}return u}}}function r$e(n,a){let c=Ru(n,a);if(c){let u=bg(c);return u&&Gr([u,bIe(u)])}}function i$e(n,a){let c=qd(n);if(c){let u=pl(c),p=Dre(c,a);if(p){let h=(u&2)!==0;return!n.asteriskToken&&p.flags&1048576&&(p=jc(p,T=>!!c0(1,T,h))),n.asteriskToken?p:c0(0,p,h)}}}function kre(n){let a=!1;for(;n.parent&&!Ia(n.parent);){if(ha(n.parent)&&(a||n.parent.initializer===n))return!0;Wo(n.parent)&&n.parent.initializer===n&&(a=!0),n=n.parent}return!1}function cCe(n,a){let c=!!(pl(a)&2),u=Dre(a,void 0);if(u)return c0(n,u,c)||void 0}function Dre(n,a){let c=Wx(n);if(c)return c;let u=Nre(n);if(u&&!rne(u))return qo(u);let p=TT(n);if(p)return Ru(p,a)}function lCe(n,a){let u=rie(n).indexOf(a);return u===-1?void 0:wre(n,u)}function wre(n,a){if(Dd(n))return a===0?ae:a===1?nAe(!1):Se;let c=Rr(n).resolvedSignature===yc?yc:FC(n);if(Au(n)&&a===0)return VB(c,n);let u=c.parameters.length-1;return Xl(c)&&a>=u?od(zn(c.parameters[u]),ap(a-u),256):N_(c,a)}function a$e(n){let a=_ie(n);return a?HE(a):void 0}function o$e(n,a){if(n.parent.kind===212)return lCe(n.parent,a)}function s$e(n,a){let c=n.parent,{left:u,operatorToken:p,right:h}=c;switch(p.kind){case 63:case 76:case 75:case 77:return n===h?l$e(c):void 0;case 56:case 60:let T=Ru(c,a);return n===h&&(T&&T.pattern||!T&&!dce(c))?au(u):T;case 55:case 27:return n===h?Ru(c,a):void 0;default:return}}function c$e(n){if($p(n)&&n.symbol)return n.symbol;if(Re(n))return $f(n);if(br(n)){let c=au(n.expression);return pi(n.name)?a(c,n.name):ja(c,n.name.escapedText)}if(Vs(n)){let c=Ic(n.argumentExpression);if(!fh(c))return;let u=au(n.expression);return ja(u,Np(c))}return;function a(c,u){let p=JB(u.escapedText,u);return p&&zre(c,p)}}function l$e(n){var a,c;let u=ic(n);switch(u){case 0:case 4:let p=c$e(n.left),h=p&&p.valueDeclaration;if(h&&(Na(h)||Yd(h))){let O=Cl(h);return O&&Oi($r(O),Ai(p).mapper)||(Na(h)?h.initializer&&au(n.left):void 0)}return u===0?au(n.left):uCe(n);case 5:if(GB(n,u))return uCe(n);if(!$p(n.left)||!n.left.symbol)return au(n.left);{let O=n.left.symbol.valueDeclaration;if(!O)return;let H=Ga(n.left,Us),J=Cl(O);if(J)return $r(J);if(Re(H.expression)){let de=H.expression,Ae=zs(de,de.escapedText,111551,void 0,de.escapedText,!0);if(Ae){let xe=Ae.valueDeclaration&&Cl(Ae.valueDeclaration);if(xe){let tt=wh(H);if(tt!==void 0)return eT($r(xe),tt)}return}}return Yn(O)?void 0:au(n.left)}case 1:case 6:case 3:case 2:let T;u!==2&&(T=$p(n.left)?(a=n.left.symbol)==null?void 0:a.valueDeclaration:void 0),T||(T=(c=n.symbol)==null?void 0:c.valueDeclaration);let k=T&&Cl(T);return k?$r(k):void 0;case 7:case 8:case 9:return L.fail(\"Does not apply\");default:return L.assertNever(u)}}function GB(n,a=ic(n)){if(a===4)return!0;if(!Yn(n)||a!==5||!Re(n.left.expression))return!1;let c=n.left.expression.escapedText,u=zs(n.left,c,111551,void 0,void 0,!0,!0);return N6(u?.valueDeclaration)}function uCe(n){if(!n.symbol)return au(n.left);if(n.symbol.valueDeclaration){let p=Cl(n.symbol.valueDeclaration);if(p){let h=$r(p);if(h)return h}}let a=Ga(n.left,Us);if(!o_(Ku(a.expression,!1,!1)))return;let c=DM(a.expression),u=wh(a);return u!==void 0&&eT(c,u)||void 0}function u$e(n){return!!(ac(n)&262144&&!n.links.type&&Sm(n,0)>=0)}function eT(n,a,c){return Ls(n,u=>{var p;if(uf(u)&&!u.declaration.nameType){let h=np(u),T=bu(h)||h,k=c||df(Gi(a));if(to(k,T))return nB(u,k)}else if(u.flags&3670016){let h=ja(u,a);if(h)return u$e(h)?void 0:zn(h);if(po(u)&&Wm(a)&&+a>=0){let T=kC(u,u.target.fixedLength,0,!1,!0);if(T)return T}return(p=$te(Qte(u),c||df(Gi(a))))==null?void 0:p.type}},!0)}function dCe(n,a){if(L.assert(o_(n)),!(n.flags&33554432))return Rre(n,a)}function Rre(n,a){let c=n.parent,u=yl(n)&&Lre(n,a);if(u)return u;let p=o0(c,a);if(p){if(Vx(n)){let h=fr(n);return eT(p,h.escapedName,Ai(h).nameType)}if(n.name){let h=pg(n.name);return Ls(p,T=>{var k;return(k=$te(Qte(T),h))==null?void 0:k.type},!0)}}}function fCe(n,a){return n&&(a>=0&&eT(n,\"\"+a)||Ls(n,c=>po(c)?kC(c,0,0,!1,!0):Rie(1,c,Oe,void 0,!1),!0))}function d$e(n,a){let c=n.parent;return n===c.whenTrue||n===c.whenFalse?Ru(c,a):void 0}function f$e(n,a,c){let u=o0(n.openingElement.tagName,c),p=HB(nA(n));if(!(u&&!Zo(u)&&p&&p!==\"\"))return;let h=ER(n.children),T=h.indexOf(a),k=eT(u,p);return k&&(h.length===1?k:Ls(k,O=>Kv(O)?od(O,ap(T)):O,!0))}function _$e(n,a){let c=n.parent;return d6(c)?Ru(n,a):Hg(c)?f$e(c,n,a):void 0}function _Ce(n,a){if(Sp(n)){let c=o0(n.parent,a);return!c||Zo(c)?void 0:eT(c,n.name.escapedText)}else return Ru(n.parent,a)}function wM(n){switch(n.kind){case 10:case 8:case 9:case 14:case 110:case 95:case 104:case 79:case 155:return!0;case 208:case 214:return wM(n.expression);case 291:return!n.expression||wM(n.expression)}return!1}function p$e(n,a){return sYe(a,n)||Wne(a,Qi(on(Pr(n.properties,c=>!!c.symbol&&c.kind===299&&wM(c.initializer)&&hD(a,c.symbol.escapedName)),c=>[()=>qM(c.initializer),c.symbol.escapedName]),on(Pr(Jo(a),c=>{var u;return!!(c.flags&16777216)&&!!((u=n?.symbol)!=null&&u.members)&&!n.symbol.members.has(c.escapedName)&&hD(a,c.escapedName)}),c=>[()=>Oe,c.escapedName])),to,a)}function m$e(n,a){return Wne(a,Qi(on(Pr(n.properties,c=>!!c.symbol&&c.kind===288&&hD(a,c.symbol.escapedName)&&(!c.initializer||wM(c.initializer))),c=>[c.initializer?()=>qM(c.initializer):()=>pe,c.symbol.escapedName]),on(Pr(Jo(a),c=>{var u;return!!(c.flags&16777216)&&!!((u=n?.symbol)!=null&&u.members)&&!n.symbol.members.has(c.escapedName)&&hD(a,c.escapedName)}),c=>[()=>Oe,c.escapedName])),to,a)}function o0(n,a){let c=o_(n)?dCe(n,a):Ru(n,a),u=BB(c,n,a);if(u&&!(a&&a&2&&u.flags&8650752)){let p=Ls(u,Eu,!0);return p.flags&1048576&&rs(n)?p$e(n,p):p.flags&1048576&&K0(n)?m$e(n,p):p}}function BB(n,a,c){if(n&&Js(n,465829888)){let u=F1(a);if(u&&c&1&&vt(u.inferences,qZe))return UB(n,u.nonFixingMapper);if(u?.returnMapper){let p=UB(n,u.returnMapper);return p.flags&1048576&&Qb(p.types,oe)&&Qb(p.types,z)?jc(p,h=>h!==oe&&h!==z):p}}return n}function UB(n,a){return n.flags&465829888?Oi(n,a):n.flags&1048576?Gr(on(n.types,c=>UB(c,a)),0):n.flags&2097152?so(on(n.types,c=>UB(c,a))):n}function Ru(n,a){var c,u;if(n.flags&33554432)return;let p=mCe(n,!a);if(p>=0)return Mc[p];let{parent:h}=n;switch(h.kind){case 257:case 166:case 169:case 168:case 205:return t$e(n,a);case 216:case 250:return n$e(n,a);case 226:return i$e(h,a);case 220:return r$e(h,a);case 210:case 211:return lCe(h,n);case 167:return a$e(h);case 213:case 231:return Ch(h.type)?Ru(h,a):$r(h.type);case 223:return s$e(n,a);case 299:case 300:return Rre(h,a);case 301:return Ru(h.parent,a);case 206:{let T=h,k=o0(T,a),O=(u=(c=Rr(T)).firstSpreadIndex)!=null?u:c.firstSpreadIndex=Yc(T.elements,Km),H=wA(T.elements,n);return fCe(k,O<0||H<O?H:-1)}case 224:return d$e(n,a);case 236:return L.assert(h.parent.kind===225),o$e(h.parent,n);case 214:{if(Yn(h)){if(zW(h))return $r(JW(h));let T=x0(h);if(T&&!Ch(T.typeExpression.type))return $r(T.typeExpression.type)}return Ru(h,a)}case 232:return Ru(h,a);case 235:return $r(h.type);case 274:return ad(h);case 291:return _$e(h,a);case 288:case 290:return _Ce(h,a);case 283:case 282:return y$e(h,a)}}function pCe(n){RM(n,Ru(n,void 0),!0)}function RM(n,a,c){Is[Hh]=n,Mc[Hh]=a,mm[Hh]=c,Hh++}function bD(){Hh--}function mCe(n,a){for(let c=Hh-1;c>=0;c--)if(n===Is[c]&&(a||!mm[c]))return c;return-1}function h$e(n,a){E_[mv]=n,Cb[mv]=a,mv++}function g$e(){mv--}function F1(n){for(let a=mv-1;a>=0;a--)if(CT(n,E_[a]))return Cb[a]}function y$e(n,a){if(Xm(n)&&a!==4){let c=mCe(n.parent,!a);if(c>=0)return Mc[c]}return wre(n,0)}function VB(n,a){return $Ce(a)!==0?v$e(n,a):T$e(n,a)}function v$e(n,a){let c=die(n,ue);c=hCe(a,nA(a),c);let u=s0($d.IntrinsicAttributes,a);return Ro(u)||(c=ZP(u,c)),c}function b$e(n,a){if(n.compositeSignatures){let u=[];for(let p of n.compositeSignatures){let h=qo(p);if(Zo(h))return h;let T=Vc(h,a);if(!T)return;u.push(T)}return so(u)}let c=qo(n);return Zo(c)?c:Vc(c,a)}function E$e(n){if(NC(n.tagName)){let c=ACe(n),u=ZB(n,c);return HE(u)}let a=Ic(n.tagName);if(a.flags&128){let c=xCe(a,n);if(!c)return ve;let u=ZB(n,c);return HE(u)}return a}function hCe(n,a,c){let u=V$e(a);if(u){let p=gs(u),h=E$e(n);if(u.flags&524288){let T=Ai(u).typeParameters;if(Fn(T)>=2){let k=Sy([h,c],T,2,Yn(n));return Kx(u,k)}}if(Fn(p.typeParameters)>=2){let T=Sy([h,c],p.typeParameters,2,Yn(n));return _g(p,T)}}return c}function T$e(n,a){let c=nA(a),u=j$e(c),p=u===void 0?die(n,ue):u===\"\"?qo(n):b$e(n,u);if(!p)return!!u&&!!Fn(a.attributes.properties)&&Fe(a,_.JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property,Gi(u)),ue;if(p=hCe(a,c,p),Zo(p))return p;{let h=p,T=s0($d.IntrinsicClassAttributes,a);if(!Ro(T)){let O=yy(T.symbol),H=qo(n),J;if(O){let de=Sy([H],O,Mp(O),Yn(a));J=Oi(T,Wu(O,de))}else J=T;h=ZP(J,h)}let k=s0($d.IntrinsicAttributes,a);return Ro(k)||(h=ZP(k,h)),h}}function S$e(n){return Bf(Y,\"noImplicitAny\")?ou(n,(a,c)=>a===c||!a?a:Sxe(a.typeParameters,c.typeParameters)?C$e(a,c):void 0):void 0}function x$e(n,a,c){if(!n||!a)return n||a;let u=Gr([zn(n),Oi(zn(a),c)]);return qE(n,u)}function A$e(n,a,c){let u=xd(n),p=xd(a),h=u>=p?n:a,T=h===n?a:n,k=h===n?u:p,O=jp(n)||jp(a),H=O&&!jp(h),J=new Array(k+(H?1:0));for(let de=0;de<k;de++){let Ae=tT(h,de);h===a&&(Ae=Oi(Ae,c));let xe=tT(T,de)||ue;T===a&&(xe=Oi(xe,c));let tt=Gr([Ae,xe]),It=O&&!H&&de===k-1,Tn=de>=Vp(h)&&de>=Vp(T),un=de>=u?void 0:GC(n,de),Nn=de>=p?void 0:GC(a,de),en=un===Nn?un:un?Nn?void 0:un:Nn,cn=wo(1|(Tn&&!It?16777216:0),en||`arg${de}`);cn.links.type=It?nu(tt):tt,J[de]=cn}if(H){let de=wo(1,\"args\");de.links.type=nu(N_(T,k)),T===a&&(de.links.type=Oi(de.links.type,c)),J[k]=de}return J}function C$e(n,a){let c=n.typeParameters||a.typeParameters,u;n.typeParameters&&a.typeParameters&&(u=Wu(a.typeParameters,n.typeParameters));let p=n.declaration,h=A$e(n,a,u),T=x$e(n.thisParameter,a.thisParameter,u),k=Math.max(n.minArgumentCount,a.minArgumentCount),O=Am(p,c,T,h,void 0,void 0,k,(n.flags|a.flags)&39);return O.compositeKind=2097152,O.compositeSignatures=Qi(n.compositeKind===2097152&&n.compositeSignatures||[n],[a]),u&&(O.mapper=n.compositeKind===2097152&&n.mapper&&n.compositeSignatures?Jv(n.mapper,u):u),O}function Ore(n,a){let c=xa(n,0),u=Pr(c,p=>!I$e(p,a));return u.length===1?u[0]:S$e(u)}function I$e(n,a){let c=0;for(;c<a.parameters.length;c++){let u=a.parameters[c];if(u.initializer||u.questionToken||u.dotDotDotToken||KR(u))break}return a.parameters.length&&G0(a.parameters[0])&&c--,!jp(n)&&xd(n)<c}function Nre(n){return o2(n)||o_(n)?ED(n):void 0}function ED(n){L.assert(n.kind!==171||o_(n));let a=eD(n);if(a)return a;let c=o0(n,1);if(!c)return;if(!(c.flags&1048576))return Ore(c,n);let u,p=c.types;for(let h of p){let T=Ore(h,n);if(T)if(!u)u=[T];else if(bM(u[0],T,!1,!0,!0,cD))u.push(T);else return}if(u)return u.length===1?u[0]:Exe(u[0],u)}function L$e(n,a){R<2&&Hc(n,Y.downlevelIteration?1536:1024);let c=Yi(n.expression,a);return wy(33,c,Oe,n.expression)}function k$e(n){return n.isSpread?od(n.type,rt):n.type}function OC(n){return n.kind===205&&!!n.initializer||n.kind===223&&n.operatorToken.kind===63}function gCe(n,a,c){let u=n.elements,p=u.length,h=[],T=[];pCe(n);let k=Um(n),O=BC(n),H=o0(n,void 0),J=!!H&&yh(H,LC),de=!1;for(let Ae=0;Ae<p;Ae++){let xe=u[Ae];if(xe.kind===227){R<2&&Hc(xe,Y.downlevelIteration?1536:1024);let tt=Yi(xe.expression,a,c);if(Kv(tt))h.push(tt),T.push(8);else if(k){let It=fg(tt,rt)||Rie(65,tt,Oe,void 0,!1)||ue;h.push(It),T.push(4)}else h.push(wy(33,tt,Oe,xe.expression)),T.push(4)}else if(Pe&&xe.kind===229)de=!0,h.push(kt),T.push(2);else{let tt=UC(xe,a,c);if(h.push(ao(tt,!0,de)),T.push(de?2:1),J&&a&&a&2&&!(a&4)&&Yf(xe)){let It=F1(n);L.assert(It),v2e(It,xe,tt)}}}return bD(),k?ip(h,T):yCe(c||O||J?ip(h,T,O):nu(h.length?Gr(Tl(h,(Ae,xe)=>T[xe]&8?Ay(Ae,rt)||Se:Ae),2):U?Vt:je,O))}function yCe(n){if(!(Ur(n)&4))return n;let a=n.literalType;return a||(a=n.literalType=Wxe(n),a.objectFlags|=147456),a}function D$e(n){switch(n.kind){case 164:return w$e(n);case 79:return Wm(n.escapedText);case 8:case 10:return Wm(n.text);default:return!1}}function w$e(n){return ul(vg(n),296)}function vg(n){let a=Rr(n.expression);if(!a.resolvedType){if((Rd(n.parent.parent)||Yr(n.parent.parent)||ku(n.parent.parent))&&ar(n.expression)&&n.expression.operatorToken.kind===101&&n.parent.kind!==174&&n.parent.kind!==175)return a.resolvedType=ve;if(a.resolvedType=Yi(n.expression),Na(n.parent)&&!zc(n.parent)&&_u(n.parent.parent)){let c=tm(n.parent.parent),u=xre(c);u&&(Rr(u).flags|=4096,Rr(n).flags|=32768,Rr(n.parent.parent).flags|=32768)}(a.resolvedType.flags&98304||!ul(a.resolvedType,402665900)&&!to(a.resolvedType,Kr))&&Fe(n,_.A_computed_property_name_must_be_of_type_string_number_symbol_or_any)}return a.resolvedType}function R$e(n){var a;let c=(a=n.declarations)==null?void 0:a[0];return Wm(n.escapedName)||c&&zl(c)&&D$e(c.name)}function vCe(n){var a;let c=(a=n.declarations)==null?void 0:a[0];return yR(n)||c&&zl(c)&&ts(c.name)&&ul(vg(c.name),4096)}function Pre(n,a,c,u){let p=[];for(let T=a;T<c.length;T++){let k=c[T];(u===ae&&!vCe(k)||u===rt&&R$e(k)||u===j&&vCe(k))&&p.push(zn(c[T]))}let h=p.length?Gr(p,2):Oe;return Fp(u,h,BC(n))}function Mre(n){L.assert((n.flags&2097152)!==0,\"Should only get Alias here.\");let a=Ai(n);if(!a.immediateTarget){let c=Uu(n);if(!c)return L.fail();a.immediateTarget=I_(c,!0)}return a.immediateTarget}function O$e(n,a){var c;let u=Um(n);Mrt(n,u);let p=U?Ua():void 0,h=Ua(),T=[],k=Ki;pCe(n);let O=o0(n,void 0),H=O&&O.pattern&&(O.pattern.kind===203||O.pattern.kind===207),J=BC(n),de=J?8:0,Ae=Yn(n)&&!B6(n),xe=Ij(n),tt=!O&&Ae&&!xe,It=ke,Tn=!1,un=!1,Nn=!1,en=!1;for(let Jt of n.properties)Jt.name&&ts(Jt.name)&&vg(Jt.name);let cn=0;for(let Jt of n.properties){let Cn=fr(Jt),Rn=Jt.name&&Jt.name.kind===164?vg(Jt.name):void 0;if(Jt.kind===299||Jt.kind===300||o_(Jt)){let Br=Jt.kind===299?NIe(Jt,a):Jt.kind===300?UC(!u&&Jt.objectAssignmentInitializer?Jt.objectAssignmentInitializer:Jt.name,a):PIe(Jt,a);if(Ae){let wa=di(Jt);wa?(wu(Br,wa,Jt),Br=wa):xe&&xe.typeExpression&&wu(Br,$r(xe.typeExpression),Jt)}It|=Ur(Br)&458752;let Hr=Rn&&fh(Rn)?Rn:void 0,qi=Hr?wo(4|Cn.flags,Np(Hr),de|4096):wo(4|Cn.flags,Cn.escapedName,de);if(Hr&&(qi.links.nameType=Hr),u)(Jt.kind===299&&OC(Jt.initializer)||Jt.kind===300&&Jt.objectAssignmentInitializer)&&(qi.flags|=16777216);else if(H&&!(Ur(O)&512)){let wa=ja(O,Cn.escapedName);wa?qi.flags|=wa.flags&16777216:!Y.suppressExcessPropertyErrors&&!Cm(O,ae)&&Fe(Jt.name,_.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1,E(Cn),Ee(O))}if(qi.declarations=Cn.declarations,qi.parent=Cn.parent,Cn.valueDeclaration&&(qi.valueDeclaration=Cn.valueDeclaration),qi.links.type=Br,qi.links.target=Cn,Cn=qi,p?.set(qi.escapedName,qi),O&&a&&a&2&&!(a&4)&&(Jt.kind===299||Jt.kind===171)&&Yf(Jt)){let wa=F1(n);L.assert(wa);let Xc=Jt.kind===299?Jt.initializer:Jt;v2e(wa,Xc,Br)}}else if(Jt.kind===301){R<2&&Hc(Jt,2),T.length>0&&(k=e0(k,rr(),n.symbol,It,J),T=[],h=Ua(),un=!1,Nn=!1,en=!1);let Br=R_(Yi(Jt.expression));if(OM(Br)){let Hr=kne(Br,J);if(p&&ECe(Hr,p,Jt),cn=T.length,Ro(k))continue;k=e0(k,Hr,n.symbol,It,J)}else Fe(Jt,_.Spread_types_may_only_be_created_from_object_types),k=ve;continue}else L.assert(Jt.kind===174||Jt.kind===175),JC(Jt);Rn&&!(Rn.flags&8576)?to(Rn,Kr)&&(to(Rn,rt)?Nn=!0:to(Rn,j)?en=!0:un=!0,u&&(Tn=!0)):h.set(Cn.escapedName,Cn),T.push(Cn)}if(bD(),H){let Jt=jn(O.pattern.parent,Rn=>Rn.kind===257||Rn.kind===223||Rn.kind===166);if(jn(n,Rn=>Rn===Jt||Rn.kind===301).kind!==301)for(let Rn of Jo(O))!h.get(Rn.escapedName)&&!ja(k,Rn.escapedName)&&(Rn.flags&16777216||Fe(Rn.valueDeclaration||((c=zr(Rn,Zp))==null?void 0:c.links.bindingElement),_.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value),h.set(Rn.escapedName,Rn),T.push(Rn))}if(Ro(k))return ve;if(k!==Ki)return T.length>0&&(k=e0(k,rr(),n.symbol,It,J),T=[],h=Ua(),un=!1,Nn=!1),Ls(k,Jt=>Jt===Ki?rr():Jt);return rr();function rr(){let Jt=[];un&&Jt.push(Pre(n,cn,T,ae)),Nn&&Jt.push(Pre(n,cn,T,rt)),en&&Jt.push(Pre(n,cn,T,j));let Cn=ls(n.symbol,h,Je,Je,Jt);return Cn.objectFlags|=It|128|131072,tt&&(Cn.objectFlags|=4096),Tn&&(Cn.objectFlags|=512),u&&(Cn.pattern=n),Cn}}function OM(n){let a=m2e(Ls(n,Ty));return!!(a.flags&126615553||a.flags&3145728&&Ji(a.types,OM))}function N$e(n){Ure(n)}function P$e(n,a){return JC(n),NM(n)||Se}function M$e(n){Ure(n.openingElement),NC(n.closingElement.tagName)?Gre(n.closingElement):Yi(n.closingElement.tagName),jB(n)}function F$e(n,a){return JC(n),NM(n)||Se}function G$e(n){Ure(n.openingFragment);let a=Gn(n);return AW(Y)&&(Y.jsxFactory||a.pragmas.has(\"jsx\"))&&!Y.jsxFragmentFactory&&!a.pragmas.has(\"jsxfrag\")&&Fe(n,Y.jsxFactory?_.The_jsxFragmentFactory_compiler_option_must_be_provided_to_use_JSX_fragments_with_the_jsxFactory_compiler_option:_.An_jsxFrag_pragma_is_required_when_using_an_jsx_pragma_with_JSX_fragments),jB(n),NM(n)||Se}function Fre(n){return jl(n,\"-\")}function NC(n){return n.kind===79&&BI(n.escapedText)}function bCe(n,a){return n.initializer?UC(n.initializer,a):pe}function B$e(n,a){let c=n.attributes,u=Ru(c,0),p=U?Ua():void 0,h=Ua(),T=kc,k=!1,O,H=!1,J=2048,de=HB(nA(n));for(let tt of c.properties){let It=tt.symbol;if(Sp(tt)){let Tn=bCe(tt,a);J|=Ur(Tn)&458752;let un=wo(4|It.flags,It.escapedName);if(un.declarations=It.declarations,un.parent=It.parent,It.valueDeclaration&&(un.valueDeclaration=It.valueDeclaration),un.links.type=Tn,un.links.target=It,h.set(un.escapedName,un),p?.set(un.escapedName,un),tt.name.escapedText===de&&(H=!0),u){let Nn=ja(u,It.escapedName);Nn&&Nn.declarations&&Sv(Nn)&&Xh(tt.name,Nn.declarations,tt.name.escapedText)}}else{L.assert(tt.kind===290),h.size>0&&(T=e0(T,xe(),c.symbol,J,!1),h=Ua());let Tn=R_(Ic(tt.expression,a));Zo(Tn)&&(k=!0),OM(Tn)?(T=e0(T,Tn,c.symbol,J,!1),p&&ECe(Tn,p,tt)):(Fe(tt.expression,_.Spread_types_may_only_be_created_from_object_types),O=O?so([O,Tn]):Tn)}}k||h.size>0&&(T=e0(T,xe(),c.symbol,J,!1));let Ae=n.parent.kind===281?n.parent:void 0;if(Ae&&Ae.openingElement===n&&Ae.children.length>0){let tt=jB(Ae,a);if(!k&&de&&de!==\"\"){H&&Fe(c,_._0_are_specified_twice_The_attribute_named_0_will_be_overwritten,Gi(de));let It=o0(n.attributes,void 0),Tn=It&&eT(It,de),un=wo(4,de);un.links.type=tt.length===1?tt[0]:Tn&&yh(Tn,LC)?ip(tt):nu(Gr(tt)),un.valueDeclaration=D.createPropertySignature(void 0,Gi(de),void 0,void 0),go(un.valueDeclaration,c),un.valueDeclaration.symbol=un;let Nn=Ua();Nn.set(de,un),T=e0(T,ls(c.symbol,Nn,Je,Je,Je),c.symbol,J,!1)}}if(k)return Se;if(O&&T!==kc)return so([O,T]);return O||(T===kc?xe():T);function xe(){J|=ke;let tt=ls(c.symbol,h,Je,Je,Je);return tt.objectFlags|=J|128|131072,tt}}function jB(n,a){let c=[];for(let u of n.children)if(u.kind===11)u.containsOnlyTriviaWhiteSpaces||c.push(ae);else{if(u.kind===291&&!u.expression)continue;c.push(UC(u,a))}return c}function ECe(n,a,c){for(let u of Jo(n))if(!(u.flags&16777216)){let p=a.get(u.escapedName);if(p){let h=Fe(p.valueDeclaration,_._0_is_specified_more_than_once_so_this_usage_will_be_overwritten,Gi(p.escapedName));Ao(h,hr(c,_.This_spread_always_overwrites_this_property))}}}function U$e(n,a){return B$e(n.parent,a)}function s0(n,a){let c=nA(a),u=c&&Gd(c),p=u&&yd(u,n,788968);return p?gs(p):ve}function Gre(n){let a=Rr(n);if(!a.resolvedSymbol){let c=s0($d.IntrinsicElements,n);if(Ro(c))return ge&&Fe(n,_.JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists,Gi($d.IntrinsicElements)),a.resolvedSymbol=Ht;{if(!Re(n.tagName))return L.fail();let u=ja(c,n.tagName.escapedText);return u?(a.jsxFlags|=1,a.resolvedSymbol=u):fg(c,ae)?(a.jsxFlags|=2,a.resolvedSymbol=c.symbol):(Fe(n,_.Property_0_does_not_exist_on_type_1,vr(n.tagName),\"JSX.\"+$d.IntrinsicElements),a.resolvedSymbol=Ht)}}return a.resolvedSymbol}function Bre(n){let a=n&&Gn(n),c=a&&Rr(a);if(c&&c.jsxImplicitImportContainer===!1)return;if(c&&c.jsxImplicitImportContainer)return c.jsxImplicitImportContainer;let u=p4(_4(Y,a),Y);if(!u)return;let h=$s(Y)===1?_.Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_nodenext_or_to_add_aliases_to_the_paths_option:_.Cannot_find_module_0_or_its_corresponding_type_declarations,T=qc(n,u,h,n),k=T&&T!==Ht?No(Ac(T)):void 0;return c&&(c.jsxImplicitImportContainer=k||!1),k}function nA(n){let a=n&&Rr(n);if(a&&a.jsxNamespace)return a.jsxNamespace;if(!a||a.jsxNamespace!==!1){let u=Bre(n);if(!u||u===Ht){let p=Rb(n);u=zs(n,p,1920,void 0,p,!1)}if(u){let p=Ac(yd(Gd(Ac(u)),$d.JSX,1920));if(p&&p!==Ht)return a&&(a.jsxNamespace=p),p}a&&(a.jsxNamespace=!1)}let c=Ac(rD($d.JSX,1920,void 0));if(c!==Ht)return c}function TCe(n,a){let c=a&&yd(a.exports,n,788968),u=c&&gs(c),p=u&&Jo(u);if(p){if(p.length===0)return\"\";if(p.length===1)return p[0].escapedName;p.length>1&&c.declarations&&Fe(c.declarations[0],_.The_global_type_JSX_0_may_not_have_more_than_one_property,Gi(n))}}function V$e(n){return n&&yd(n.exports,$d.LibraryManagedAttributes,788968)}function j$e(n){return TCe($d.ElementAttributesPropertyNameContainer,n)}function HB(n){return TCe($d.ElementChildrenAttributeNameContainer,n)}function SCe(n,a){if(n.flags&4)return[As];if(n.flags&128){let p=xCe(n,a);return p?[ZB(a,p)]:(Fe(a,_.Property_0_does_not_exist_on_type_1,n.value,\"JSX.\"+$d.IntrinsicElements),Je)}let c=Eu(n),u=xa(c,1);return u.length===0&&(u=xa(c,0)),u.length===0&&c.flags&1048576&&(u=Gte(on(c.types,p=>SCe(p,a)))),u}function xCe(n,a){let c=s0($d.IntrinsicElements,a);if(!Ro(c)){let u=n.value,p=ja(c,Bs(u));if(p)return zn(p);let h=fg(c,ae);return h||void 0}return Se}function H$e(n,a,c){if(n===1){let p=ICe(c);p&&kf(a,p,Zu,c.tagName,_.Its_return_type_0_is_not_a_valid_JSX_element,u)}else if(n===0){let p=CCe(c);p&&kf(a,p,Zu,c.tagName,_.Its_instance_type_0_is_not_a_valid_JSX_element,u)}else{let p=ICe(c),h=CCe(c);if(!p||!h)return;let T=Gr([p,h]);kf(a,T,Zu,c.tagName,_.Its_element_type_0_is_not_a_valid_JSX_element,u)}function u(){let p=Qc(c.tagName);return da(void 0,_._0_cannot_be_used_as_a_JSX_component,p)}}function ACe(n){L.assert(NC(n.tagName));let a=Rr(n);if(!a.resolvedJsxElementAttributesType){let c=Gre(n);return a.jsxFlags&1?a.resolvedJsxElementAttributesType=zn(c)||ve:a.jsxFlags&2?a.resolvedJsxElementAttributesType=fg(s0($d.IntrinsicElements,n),ae)||ve:a.resolvedJsxElementAttributesType=ve}return a.resolvedJsxElementAttributesType}function CCe(n){let a=s0($d.ElementClass,n);if(!Ro(a))return a}function NM(n){return s0($d.Element,n)}function ICe(n){let a=NM(n);if(a)return Gr([a,ln])}function W$e(n){let a=s0($d.IntrinsicElements,n);return a?Jo(a):Je}function z$e(n){(Y.jsx||0)===0&&Fe(n,_.Cannot_use_JSX_unless_the_jsx_flag_is_provided),NM(n)===void 0&&ge&&Fe(n,_.JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist)}function Ure(n){let a=Au(n);if(a&&Frt(n),z$e(n),!Bre(n)){let c=Lo&&Y.jsx===2?_.Cannot_find_name_0:void 0,u=Rb(n),p=a?n.tagName:n,h;if(VS(n)&&u===\"null\"||(h=zs(p,u,111551,c,u,!0)),h&&(h.isReferenced=67108863,!Y.verbatimModuleSyntax&&h.flags&2097152&&!nd(h)&&Hb(h)),VS(n)){let T=Gn(n),k=g1(T);k&&zs(p,k,111551,c,k,!0)}}if(a){let c=n,u=FC(c);tU(u,n),H$e($Ce(c),qo(u),c)}}function Vre(n,a,c){if(n.flags&524288){if(qb(n,a)||Hx(n,a)||Xk(a)&&Cm(n,ae)||c&&Fre(a))return!0}else if(n.flags&3145728&&PM(n)){for(let u of n.types)if(Vre(u,a,c))return!0}return!1}function PM(n){return!!(n.flags&524288&&!(Ur(n)&512)||n.flags&67108864||n.flags&1048576&&vt(n.types,PM)||n.flags&2097152&&Ji(n.types,PM))}function J$e(n,a){if(Brt(n),n.expression){let c=Yi(n.expression,a);return n.dotDotDotToken&&c!==Se&&!ff(c)&&Fe(n,_.JSX_spread_child_must_be_an_array_type),c}else return ve}function WB(n){return n.valueDeclaration?F_(n.valueDeclaration):0}function jre(n){if(n.flags&8192||ac(n)&4)return!0;if(Yn(n.valueDeclaration)){let a=n.valueDeclaration.parent;return a&&ar(a)&&ic(a)===3}}function Hre(n,a,c,u,p,h=!0){let T=h?n.kind===163?n.right:n.kind===202?n:n.kind===205&&n.propertyName?n.propertyName:n.name:void 0;return LCe(n,a,c,u,p,T)}function LCe(n,a,c,u,p,h){let T=bf(p,c);if(a){if(R<2&&kCe(p))return h&&Fe(h,_.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword),!1;if(T&256)return h&&Fe(h,_.Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression,E(p),Ee(P1(p))),!1}if(T&256&&kCe(p)&&(Jw(n)||sce(n)||cm(n.parent)&&N6(n.parent.parent))){let O=Nh(ju(p));if(O&&Gnt(n))return h&&Fe(h,_.Abstract_property_0_in_class_1_cannot_be_accessed_in_the_constructor,E(p),c_(O.name)),!1}if(!(T&24))return!0;if(T&8){let O=Nh(ju(p));return Hie(n,O)?!0:(h&&Fe(h,_.Property_0_is_private_and_only_accessible_within_class_1,E(p),Ee(P1(p))),!1)}if(a)return!0;let k=zLe(n,O=>{let H=gs(fr(O));return c2e(H,p,c)});return!k&&(k=K$e(n),k=k&&c2e(k,p,c),T&32||!k)?(h&&Fe(h,_.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses,E(p),Ee(P1(p)||u)),!1):T&32?!0:(u.flags&262144&&(u=u.isThisType?eu(u):bu(u)),!u||!BE(u,k)?(h&&Fe(h,_.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1_This_is_an_instance_of_class_2,E(p),Ee(k),Ee(u)),!1):!0)}function K$e(n){let a=q$e(n),c=a?.type&&$r(a.type);if(c&&c.flags&262144&&(c=eu(c)),c&&Ur(c)&7)return Ux(c)}function q$e(n){let a=Ku(n,!1,!1);return a&&Ia(a)?F0(a):void 0}function kCe(n){return!!yM(n,a=>!(a.flags&8192))}function PC(n){return op(Yi(n),n)}function zB(n){return!!(iu(n)&50331648)}function Wre(n){return zB(n)?yg(n):n}function X$e(n,a){let c=bc(n)?Kd(n):void 0;if(n.kind===104){Fe(n,_.The_value_0_cannot_be_used_here,\"null\");return}if(c!==void 0&&c.length<100){if(Re(n)&&c===\"undefined\"){Fe(n,_.The_value_0_cannot_be_used_here,\"undefined\");return}Fe(n,a&16777216?a&33554432?_._0_is_possibly_null_or_undefined:_._0_is_possibly_undefined:_._0_is_possibly_null,c)}else Fe(n,a&16777216?a&33554432?_.Object_is_possibly_null_or_undefined:_.Object_is_possibly_undefined:_.Object_is_possibly_null)}function Y$e(n,a){Fe(n,a&16777216?a&33554432?_.Cannot_invoke_an_object_which_is_possibly_null_or_undefined:_.Cannot_invoke_an_object_which_is_possibly_undefined:_.Cannot_invoke_an_object_which_is_possibly_null)}function DCe(n,a,c){if(U&&n.flags&2){if(bc(a)){let p=Kd(a);if(p.length<100)return Fe(a,_._0_is_of_type_unknown,p),ve}return Fe(a,_.Object_is_of_type_unknown),ve}let u=iu(n);if(u&50331648){c(a,u);let p=yg(n);return p.flags&229376?ve:p}return n}function op(n,a){return DCe(n,a,X$e)}function wCe(n,a){let c=op(n,a);if(c.flags&16384){if(bc(a)){let u=Kd(a);if(Re(a)&&u===\"undefined\")return Fe(a,_.The_value_0_cannot_be_used_here,u),c;if(u.length<100)return Fe(a,_._0_is_possibly_undefined,u),c}Fe(a,_.Object_is_possibly_undefined)}return c}function RCe(n,a){return n.flags&32?$$e(n,a):Jre(n,n.expression,PC(n.expression),n.name,a)}function $$e(n,a){let c=Yi(n.expression),u=fD(c,n.expression);return SB(Jre(n,n.expression,op(u,n.expression),n.name,a),n,u!==c)}function OCe(n,a){let c=G6(n)&&kT(n.left)?op(DM(n.left),n.left):PC(n.left);return Jre(n,n.left,c,n.right,a)}function NCe(n){for(;n.parent.kind===214;)n=n.parent;return Ih(n.parent)&&n.parent.expression===n}function JB(n,a){for(let c=Zc(a);c;c=Zc(c)){let{symbol:u}=c,p=gR(u,n),h=u.members&&u.members.get(p)||u.exports&&u.exports.get(p);if(h)return h}}function Q$e(n){if(!Zc(n))return an(n,_.Private_identifiers_are_not_allowed_outside_class_bodies);if(!Mz(n.parent)){if(!Dh(n))return an(n,_.Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression);let a=ar(n.parent)&&n.parent.operatorToken.kind===101;if(!KB(n)&&!a)return an(n,_.Cannot_find_name_0,vr(n))}return!1}function Z$e(n){Q$e(n);let a=KB(n);return a&&FM(a,void 0,!1),Se}function KB(n){if(!Dh(n))return;let a=Rr(n);return a.resolvedSymbol===void 0&&(a.resolvedSymbol=JB(n.escapedText,n)),a.resolvedSymbol}function zre(n,a){return ja(n,a.escapedName)}function eQe(n,a,c){let u,p=Jo(n);p&&mn(p,T=>{let k=T.valueDeclaration;if(k&&zl(k)&&pi(k.name)&&k.name.escapedText===a.escapedText)return u=T,!0});let h=Af(a);if(u){let T=L.checkDefined(u.valueDeclaration),k=L.checkDefined(Zc(T));if(c?.valueDeclaration){let O=c.valueDeclaration,H=Zc(O);if(L.assert(!!H),jn(H,J=>k===J)){let J=Fe(a,_.The_property_0_cannot_be_accessed_on_type_1_within_this_class_because_it_is_shadowed_by_another_private_identifier_with_the_same_spelling,h,Ee(n));return Ao(J,hr(O,_.The_shadowing_declaration_of_0_is_defined_here,h),hr(T,_.The_declaration_of_0_that_you_probably_intended_to_use_is_defined_here,h)),!0}}return Fe(a,_.Property_0_is_not_accessible_outside_class_1_because_it_has_a_private_identifier,h,Af(k.name||rN)),!0}return!1}function PCe(n,a){return(id(a)||Jw(n)&&tp(a))&&Ku(n,!0,!1)===Op(a)}function Jre(n,a,c,u,p){let h=Rr(a).resolvedSymbol,T=AT(n),k=Eu(T!==0||NCe(n)?Sd(c):c),O=Zo(k)||k===Qe,H;if(pi(u)){R<99&&(T!==0&&Hc(n,1048576),T!==1&&Hc(n,524288));let de=JB(u.escapedText,u);if(T&&de&&de.valueDeclaration&&Nc(de.valueDeclaration)&&an(u,_.Cannot_assign_to_private_method_0_Private_methods_are_not_writable,vr(u)),O){if(de)return Ro(k)?ve:k;if(!Zc(u))return an(u,_.Private_identifiers_are_not_allowed_outside_class_bodies),Se}if(H=de?zre(c,de):void 0,!H&&eQe(c,u,de))return ve;H&&H.flags&65536&&!(H.flags&32768)&&T!==1&&Fe(n,_.Private_accessor_was_defined_without_a_getter)}else{if(O)return Re(a)&&h&&FB(h,n),Ro(k)?ve:k;H=ja(k,u.escapedText,!1,n.kind===163)}Re(a)&&h&&(u_(Y)||!(H&&(FD(H)||H.flags&8&&n.parent.kind===302))||U0(Y)&&eCe(n))&&FB(h,n);let J;if(H){Sv(H)&&xne(n,H)&&H.declarations&&Xh(u,H.declarations,u.escapedText),tQe(H,n,u),FM(H,n,jCe(a,h)),Rr(n).resolvedSymbol=H;let de=$I(n);if(Hre(n,a.kind===106,de,k,H),LIe(n,H,T))return Fe(u,_.Cannot_assign_to_0_because_it_is_a_read_only_property,vr(u)),ve;J=PCe(n,H)?at:de?hC(H):zn(H)}else{let de=!pi(u)&&(T===0||!Zb(c)||uL(c))?Hx(k,u.escapedText):void 0;if(!(de&&de.type)){let Ae=Kre(n,c.symbol,!0);return!Ae&&aD(c)?Se:c.symbol===Ye?(Ye.exports.has(u.escapedText)&&Ye.exports.get(u.escapedText).flags&418?Fe(u,_.Property_0_does_not_exist_on_type_1,Gi(u.escapedText),Ee(c)):ge&&Fe(u,_.Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature,Ee(c)),Se):(u.escapedText&&!xv(n)&&GCe(u,uL(c)?k:c,Ae),ve)}de.isReadonly&&(Um(n)||GH(n))&&Fe(n,_.Index_signature_in_type_0_only_permits_reading,Ee(k)),J=Y.noUncheckedIndexedAccess&&!Um(n)?Gr([de.type,Ge]):de.type,Y.noPropertyAccessFromIndexSignature&&br(n)&&Fe(u,_.Property_0_comes_from_an_index_signature_so_it_must_be_accessed_with_0,Gi(u.escapedText)),de.declaration&&F_(de.declaration)&268435456&&Xh(u,[de.declaration],u.escapedText)}return MCe(n,H,J,u,p)}function Kre(n,a,c){let u=Gn(n);if(u&&Y.checkJs===void 0&&u.checkJsDirective===void 0&&(u.scriptKind===1||u.scriptKind===2)){let p=mn(a?.declarations,Gn);return!(u!==p&&!!p&&gm(p))&&!(c&&a&&a.flags&32)&&!(!!n&&c&&br(n)&&n.expression.kind===108)}return!1}function MCe(n,a,c,u,p){let h=AT(n);if(h===1)return KE(c,!!(a&&a.flags&16777216));if(a&&!(a.flags&98311)&&!(a.flags&8192&&c.flags&1048576)&&!yU(a.declarations))return c;if(c===at)return Gx(n,a);c=Sre(c,n,p);let T=!1;if(U&&_e&&Us(n)&&n.expression.kind===108){let O=a&&a.valueDeclaration;if(O&&wLe(O)&&!Ca(O)){let H=vD(n);H.kind===173&&H.parent===O.parent&&!(O.flags&16777216)&&(T=!0)}}else U&&a&&a.valueDeclaration&&br(a.valueDeclaration)&&nR(a.valueDeclaration)&&vD(n)===vD(a.valueDeclaration)&&(T=!0);let k=Yv(n,c,T?gg(c):c);return T&&!AC(c)&&AC(k)?(Fe(u,_.Property_0_is_used_before_being_assigned,E(a)),c):h?ky(k):k}function tQe(n,a,c){let{valueDeclaration:u}=n;if(!u||Gn(a).isDeclarationFile)return;let p,h=vr(c);FCe(a)&&!YJe(u)&&!(Us(a)&&Us(a.expression))&&!$h(u,c)&&!(Nc(u)&&wg(u)&32)&&(Y.useDefineForClassFields||!nQe(n))?p=Fe(c,_.Property_0_is_used_before_its_initialization,h):u.kind===260&&a.parent.kind!==180&&!(u.flags&16777216)&&!$h(u,c)&&(p=Fe(c,_.Class_0_used_before_its_declaration,h)),p&&Ao(p,hr(u,_._0_is_declared_here,h))}function FCe(n){return!!jn(n,a=>{switch(a.kind){case 169:return!0;case 299:case 171:case 174:case 175:case 301:case 164:case 236:case 291:case 288:case 289:case 290:case 283:case 230:case 294:return!1;case 216:case 241:return Va(a.parent)&&oc(a.parent.parent)?!0:\"quit\";default:return Dh(a)?!1:\"quit\"}})}function nQe(n){if(!(n.parent.flags&32))return!1;let a=zn(n.parent);for(;;){if(a=a.symbol&&rQe(a),!a)return!1;let c=ja(a,n.escapedName);if(c&&c.valueDeclaration)return!0}}function rQe(n){let a=_o(n);if(a.length!==0)return so(a)}function GCe(n,a,c){let u,p;if(!pi(n)&&a.flags&1048576&&!(a.flags&134348796)){for(let T of a.types)if(!ja(T,n.escapedText)&&!Hx(T,n.escapedText)){u=da(u,_.Property_0_does_not_exist_on_type_1,os(n),Ee(T));break}}if(BCe(n.escapedText,a)){let T=os(n),k=Ee(a);u=da(u,_.Property_0_does_not_exist_on_type_1_Did_you_mean_to_access_the_static_member_2_instead,T,k,k+\".\"+T)}else{let T=RD(a);if(T&&ja(T,n.escapedText))u=da(u,_.Property_0_does_not_exist_on_type_1,os(n),Ee(a)),p=hr(n,_.Did_you_forget_to_use_await);else{let k=os(n),O=Ee(a),H=oQe(k,a);if(H!==void 0)u=da(u,_.Property_0_does_not_exist_on_type_1_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_2_or_later,k,O,H);else{let J=qre(n,a);if(J!==void 0){let de=fc(J),Ae=c?_.Property_0_may_not_exist_on_type_1_Did_you_mean_2:_.Property_0_does_not_exist_on_type_1_Did_you_mean_2;u=da(u,Ae,k,O,de),p=J.valueDeclaration&&hr(J.valueDeclaration,_._0_is_declared_here,de)}else{let de=iQe(a)?_.Property_0_does_not_exist_on_type_1_Try_changing_the_lib_compiler_option_to_include_dom:_.Property_0_does_not_exist_on_type_1;u=da(Xte(u,a),de,k,O)}}}}let h=Lh(Gn(n),n,u);p&&Ao(h,p),ey(!c||u.code!==_.Property_0_may_not_exist_on_type_1_Did_you_mean_2.code,h)}function iQe(n){return Y.lib&&!Y.lib.includes(\"dom\")&&TYe(n,a=>a.symbol&&/^(EventTarget|Node|((HTML[a-zA-Z]*)?Element))$/.test(Gi(a.symbol.escapedName)))&&mh(n)}function BCe(n,a){let c=a.symbol&&ja(zn(a.symbol),n);return c!==void 0&&!!c.valueDeclaration&&Ca(c.valueDeclaration)}function aQe(n){let a=Af(n),u=oH().get(a);return u&&pae(u.keys())}function oQe(n,a){let c=Eu(a).symbol;if(!c)return;let u=fc(c),h=oH().get(u);if(h){for(let[T,k]of h)if(ya(k,n))return T}}function UCe(n,a){return MM(n,Jo(a),106500)}function qre(n,a){let c=Jo(a);if(typeof n!=\"string\"){let u=n.parent;br(u)&&(c=Pr(c,p=>HCe(u,a,p))),n=vr(n)}return MM(n,c,111551)}function VCe(n,a){let c=Ta(n)?n:vr(n),u=Jo(a),p=c===\"for\"?wr(u,h=>fc(h)===\"htmlFor\"):c===\"class\"?wr(u,h=>fc(h)===\"className\"):void 0;return p??MM(c,u,111551)}function Xre(n,a){let c=qre(n,a);return c&&fc(c)}function Yre(n,a,c){return L.assert(a!==void 0,\"outername should always be defined\"),Fb(n,a,c,void 0,a,!1,!1,!0,(p,h,T)=>{L.assertEqual(a,h,\"name should equal outerName\");let k=yd(p,h,T);if(k)return k;let O;return p===Ne?O=Zi([\"string\",\"number\",\"boolean\",\"object\",\"bigint\",\"symbol\"],J=>p.has(J.charAt(0).toUpperCase()+J.slice(1))?wo(524288,J):void 0).concat(lo(p.values())):O=lo(p.values()),MM(Gi(h),O,T)})}function sQe(n,a,c){let u=Yre(n,a,c);return u&&fc(u)}function qB(n,a){return a.exports&&MM(vr(n),sy(a),2623475)}function cQe(n,a){let c=qB(n,a);return c&&fc(c)}function lQe(n,a,c){function u(T){let k=qb(n,T);if(k){let O=G1(zn(k));return!!O&&Vp(O)>=1&&to(c,N_(O,0))}return!1}let p=Um(a)?\"set\":\"get\";if(!u(p))return;let h=DR(a.expression);return h===void 0?h=p:h+=\".\"+p,h}function uQe(n,a){let c=a.types.filter(u=>!!(u.flags&128));return QC(n.value,c,u=>u.value)}function MM(n,a,c){return QC(n,a,u);function u(p){let h=fc(p);if(!na(h,'\"')){if(p.flags&c)return h;if(p.flags&2097152){let T=tg(p);if(T&&T.flags&c)return h}}}}function FM(n,a,c){let u=n&&n.flags&106500&&n.valueDeclaration;if(!u)return;let p=cd(u,8),h=n.valueDeclaration&&zl(n.valueDeclaration)&&pi(n.valueDeclaration.name);if(!(!p&&!h)&&!(a&&hW(a)&&!(n.flags&65536))){if(c){let T=jn(a,Ds);if(T&&T.symbol===n)return}(ac(n)&1?Ai(n).target:n).isReferenced=67108863}}function jCe(n,a){return n.kind===108||!!a&&bc(n)&&a===$f(Xd(n))}function dQe(n,a){switch(n.kind){case 208:return $re(n,n.expression.kind===106,a,Sd(Yi(n.expression)));case 163:return $re(n,!1,a,Sd(Yi(n.left)));case 202:return $re(n,!1,a,$r(n))}}function HCe(n,a,c){return Qre(n,n.kind===208&&n.expression.kind===106,!1,a,c)}function $re(n,a,c,u){if(Zo(u))return!0;let p=ja(u,c);return!!p&&Qre(n,a,!1,u,p)}function Qre(n,a,c,u,p){if(Zo(u))return!0;if(p.valueDeclaration&&xu(p.valueDeclaration)){let h=Zc(p.valueDeclaration);return!Jl(n)&&!!jn(n,T=>T===h)}return LCe(n,a,c,u,p)}function fQe(n){let a=n.initializer;if(a.kind===258){let c=a.declarations[0];if(c&&!La(c.name))return fr(c)}else if(a.kind===79)return $f(a)}function _Qe(n){return tu(n).length===1&&!!Cm(n,rt)}function pQe(n){let a=vs(n);if(a.kind===79){let c=$f(a);if(c.flags&3){let u=n,p=n.parent;for(;p;){if(p.kind===246&&u===p.statement&&fQe(p)===c&&_Qe(au(p.expression)))return!0;u=p,p=p.parent}}}return!1}function mQe(n,a){return n.flags&32?hQe(n,a):WCe(n,PC(n.expression),a)}function hQe(n,a){let c=Yi(n.expression),u=fD(c,n.expression);return SB(WCe(n,op(u,n.expression),a),n,u!==c)}function WCe(n,a,c){let u=AT(n)!==0||NCe(n)?Sd(a):a,p=n.argumentExpression,h=Yi(p);if(Ro(u)||u===Qe)return u;if(hie(u)&&!es(p))return Fe(p,_.A_const_enum_member_can_only_be_accessed_using_a_string_literal),ve;let T=pQe(p)?rt:h,k=Um(n)?4|(Zb(u)&&!uL(u)?2:0):32,O=Ay(u,T,k,n)||ve;return qIe(MCe(n,Rr(n).resolvedSymbol,O,p,c),n)}function zCe(n){return Ih(n)||MT(n)||Au(n)}function rA(n){return zCe(n)&&mn(n.typeArguments,qa),n.kind===212?Yi(n.template):Au(n)?Yi(n.attributes):n.kind!==167&&mn(n.arguments,a=>{Yi(a)}),As}function Up(n){return rA(n),jt}function gQe(n,a,c){let u,p,h=0,T,k=-1,O;L.assert(!a.length);for(let H of n){let J=H.declaration&&fr(H.declaration),de=H.declaration&&H.declaration.parent;!p||J===p?u&&de===u?T=T+1:(u=de,T=h):(T=h=a.length,u=de),p=J,_K(H)?(k++,O=k,h++):O=T,a.splice(O,0,c?bJe(H,c):H)}}function XB(n){return!!n&&(n.kind===227||n.kind===234&&n.isSpread)}function YB(n){return Yc(n,XB)}function JCe(n){return!!(n.flags&16384)}function yQe(n){return!!(n.flags&49155)}function $B(n,a,c,u=!1){let p,h=!1,T=xd(c),k=Vp(c);if(n.kind===212)if(p=a.length,n.template.kind===225){let O=To(n.template.templateSpans);h=rc(O.literal)||!!O.literal.isUnterminated}else{let O=n.template;L.assert(O.kind===14),h=!!O.isUnterminated}else if(n.kind===167)p=ZCe(n,c);else if(Au(n)){if(h=n.attributes.end===n.end,h)return!0;p=k===0?a.length:1,T=a.length===0?T:1,k=Math.min(k,1)}else if(n.arguments){p=u?a.length+1:a.length,h=n.arguments.end===n.end;let O=YB(a);if(O>=0)return O>=Vp(c)&&(jp(c)||O<xd(c))}else return L.assert(n.kind===211),Vp(c)===0;if(!jp(c)&&p>T)return!1;if(h||p>=k)return!0;for(let O=p;O<k;O++){let H=N_(c,O);if(jc(H,Yn(n)&&!U?yQe:JCe).flags&131072)return!1}return!0}function Zre(n,a){let c=Fn(n.typeParameters),u=Mp(n.typeParameters);return!vt(a)||a.length>=u&&a.length<=c}function G1(n){return TD(n,0,!1)}function KCe(n){return TD(n,0,!1)||TD(n,1,!1)}function TD(n,a,c){if(n.flags&524288){let u=w_(n);if(c||u.properties.length===0&&u.indexInfos.length===0){if(a===0&&u.callSignatures.length===1&&u.constructSignatures.length===0)return u.callSignatures[0];if(a===1&&u.constructSignatures.length===1&&u.callSignatures.length===0)return u.constructSignatures[0]}}}function qCe(n,a,c,u){let p=pD(n.typeParameters,n,0,u),h=AD(a),T=c&&(h&&h.flags&262144?c.nonFixingMapper:c.mapper),k=T?Qx(a,T):a;return rre(k,n,(O,H)=>{gh(p.inferences,O,H)}),c||ire(a,n,(O,H)=>{gh(p.inferences,O,H,128)}),tD(n,gre(p),Yn(a.declaration))}function vQe(n,a,c,u){let p=VB(a,n),h=iA(n.attributes,p,u,c);return gh(u.inferences,h,p),gre(u)}function XCe(n){if(!n)return yt;let a=Yi(n);return mI(n.parent)?yg(a):Jl(n.parent)?ere(a):a}function eie(n,a,c,u,p){if(Au(n))return vQe(n,a,u,p);if(n.kind!==167){let O=Ji(a.typeParameters,J=>!!jE(J)),H=Ru(n,O?8:0);if(H){let J=qo(a);if(XE(J)){let de=F1(n);if(!(!O&&Ru(n,8)!==H)){let It=sre(GXe(de,1)),Tn=Oi(H,It),un=G1(Tn),Nn=un&&un.typeParameters?HE(ine(un,un.typeParameters)):Tn;gh(p.inferences,Nn,J,128)}let xe=pD(a.typeParameters,a,p.flags),tt=Oi(H,de&&de.returnMapper);gh(xe.inferences,tt,J),p.returnMapper=vt(xe.inferences,aA)?sre(jXe(xe)):void 0}}}let h=CD(a),T=h?Math.min(xd(a)-1,c.length):c.length;if(h&&h.flags&262144){let O=wr(p.inferences,H=>H.typeParameter===h);O&&(O.impliedArity=Yc(c,XB,T)<0?c.length-T:void 0)}let k=Yb(a);if(k&&XE(k)){let O=QCe(n);gh(p.inferences,XCe(O),k)}for(let O=0;O<T;O++){let H=c[O];if(H.kind!==229&&!(u&32&&dre(H))){let J=N_(a,O);if(XE(J)){let de=iA(H,J,p,u);gh(p.inferences,de,J)}}}if(h&&XE(h)){let O=tie(c,T,c.length,h,p,u);gh(p.inferences,O,h)}return gre(p)}function YCe(n){return n.flags&1048576?Ls(n,YCe):n.flags&1||vB(bu(n)||n)?n:po(n)?ip(Ko(n),n.target.elementFlags,!1,n.target.labeledElementDeclarations):ip([n],[8])}function tie(n,a,c,u,p,h){if(a>=c-1){let J=n[c-1];if(XB(J))return YCe(J.kind===234?J.type:iA(J.expression,u,p,h))}let T=[],k=[],O=[],H=nM(u);for(let J=a;J<c;J++){let de=n[J];if(XB(de)){let Ae=de.kind===234?de.type:Yi(de.expression);Kv(Ae)?(T.push(Ae),k.push(8)):(T.push(wy(33,Ae,Oe,de.kind===227?de.expression:de)),k.push(4))}else{let Ae=od(u,ap(J-a),256),xe=iA(de,Ae,p,h),tt=H||Js(Ae,406978556);T.push(tt?Hu(xe):i0(xe)),k.push(1)}de.kind===234&&de.tupleNameSource&&O.push(de.tupleNameSource)}return ip(T,k,H,Fn(O)===Fn(T)?O:void 0)}function nie(n,a,c,u){let p=Yn(n.declaration),h=n.typeParameters,T=Sy(on(a,$r),h,Mp(h),p),k;for(let O=0;O<a.length;O++){L.assert(h[O]!==void 0,\"Should not call checkTypeArguments with too many type arguments\");let H=eu(h[O]);if(H){let J=c&&u?()=>da(void 0,_.Type_0_does_not_satisfy_the_constraint_1):void 0,de=u||_.Type_0_does_not_satisfy_the_constraint_1;k||(k=Wu(h,T));let Ae=T[O];if(!wu(Ae,lf(Oi(H,k),Ae),c?a[O]:void 0,de,J))return}}return T}function $Ce(n){if(NC(n.tagName))return 2;let a=Eu(Yi(n.tagName));return Fn(xa(a,1))?0:Fn(xa(a,0))?1:2}function bQe(n,a,c,u,p,h,T){let k=VB(a,n),O=iA(n.attributes,k,void 0,u);return H()&&Bne(O,k,c,p?n.tagName:void 0,n.attributes,void 0,h,T);function H(){var J;if(Bre(n))return!0;let de=Xm(n)||GS(n)&&!NC(n.tagName)?Yi(n.tagName):void 0;if(!de)return!0;let Ae=xa(de,0);if(!Fn(Ae))return!0;let xe=nke(n);if(!xe)return!0;let tt=uc(xe,111551,!0,!1,n);if(!tt)return!0;let It=zn(tt),Tn=xa(It,0);if(!Fn(Tn))return!0;let un=!1,Nn=0;for(let cn of Tn){let rr=N_(cn,0),Jt=xa(rr,0);if(!!Fn(Jt))for(let Cn of Jt){if(un=!0,jp(Cn))return!0;let Rn=xd(Cn);Rn>Nn&&(Nn=Rn)}}if(!un)return!0;let en=1/0;for(let cn of Ae){let rr=Vp(cn);rr<en&&(en=rr)}if(en<=Nn)return!0;if(p){let cn=hr(n.tagName,_.Tag_0_expects_at_least_1_arguments_but_the_JSX_factory_2_provides_at_most_3,Kd(n.tagName),en,Kd(xe),Nn),rr=(J=Qf(n.tagName))==null?void 0:J.valueDeclaration;rr&&Ao(cn,hr(rr,_._0_is_declared_here,Kd(n.tagName))),T&&T.skipLogging&&(T.errors||(T.errors=[])).push(cn),T.skipLogging||Lo.add(cn)}return!1}}function GM(n,a,c,u,p,h,T){let k={errors:void 0,skipLogging:!0};if(Au(n))return bQe(n,c,u,p,h,T,k)?void 0:(L.assert(!h||!!k.errors,\"jsx should have errors when reporting errors\"),k.errors||Je);let O=Yb(c);if(O&&O!==yt&&!(z0(n)||Pa(n)&&Pu(n.expression))){let xe=QCe(n),tt=XCe(xe),It=h?xe||n:void 0,Tn=_.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1;if(!kf(tt,O,u,It,Tn,T,k))return L.assert(!h||!!k.errors,\"this parameter should have errors when reporting errors\"),k.errors||Je}let H=_.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1,J=CD(c),de=J?Math.min(xd(c)-1,a.length):a.length;for(let xe=0;xe<de;xe++){let tt=a[xe];if(tt.kind!==229){let It=N_(c,xe),Tn=iA(tt,It,void 0,p),un=p&4?TM(Tn):Tn;if(!Bne(un,It,u,h?tt:void 0,tt,H,T,k))return L.assert(!h||!!k.errors,\"parameter should have errors when reporting errors\"),Ae(tt,un,It),k.errors||Je}}if(J){let xe=tie(a,de,a.length,J,void 0,p),tt=a.length-de,It=h?tt===0?n:tt===1?a[de]:om(BM(n,xe),a[de].pos,a[a.length-1].end):void 0;if(!kf(xe,J,u,It,H,void 0,k))return L.assert(!h||!!k.errors,\"rest parameter should have errors when reporting errors\"),Ae(It,xe,J),k.errors||Je}return;function Ae(xe,tt,It){if(xe&&h&&k.errors&&k.errors.length){if(wD(It))return;let Tn=wD(tt);Tn&&Bp(Tn,It,u)&&Ao(k.errors[0],hr(xe,_.Did_you_forget_to_use_await))}}}function QCe(n){let a=n.kind===210?n.expression:n.kind===212?n.tag:void 0;if(a){let c=ql(a);if(Us(c))return c.expression}}function BM(n,a,c,u){let p=fm.createSyntheticExpression(a,c,u);return it(p,n),go(p,n),p}function rie(n){if(n.kind===212){let u=n.template,p=[BM(u,_Ke())];return u.kind===225&&mn(u.templateSpans,h=>{p.push(h.expression)}),p}if(n.kind===167)return EQe(n);if(Au(n))return n.attributes.properties.length>0||Xm(n)&&n.parent.children.length>0?[n.attributes]:Je;let a=n.arguments||Je,c=YB(a);if(c>=0){let u=a.slice(0,c);for(let p=c;p<a.length;p++){let h=a[p],T=h.kind===227&&(Dn?Yi(h.expression):Ic(h.expression));T&&po(T)?mn(Ko(T),(k,O)=>{var H;let J=T.target.elementFlags[O],de=BM(h,J&4?nu(k):k,!!(J&12),(H=T.target.labeledElementDeclarations)==null?void 0:H[O]);u.push(de)}):u.push(h)}return u}return a}function EQe(n){let a=n.expression,c=_ie(n);if(c){let u=[];for(let p of c.parameters){let h=zn(p);u.push(BM(a,h))}return u}return L.fail()}function ZCe(n,a){return Y.experimentalDecorators?TQe(n,a):2}function TQe(n,a){switch(n.parent.kind){case 260:case 228:return 1;case 169:return rm(n.parent)?3:2;case 171:case 174:case 175:return R===0||a.parameters.length<=2?2:3;case 166:return 3;default:return L.fail()}}function eIe(n,a){let c,u,p=Gn(n);if(br(n.expression)){let h=w0(p,n.expression.name);c=h.start,u=a?h.length:n.end-c}else{let h=w0(p,n.expression);c=h.start,u=a?h.length:n.end-c}return{start:c,length:u,sourceFile:p}}function SD(n,a,c,u,p,h){if(Pa(n)){let{sourceFile:T,start:k,length:O}=eIe(n);return\"message\"in a?al(T,k,O,a,c,u,p,h):yH(T,a)}else return\"message\"in a?hr(n,a,c,u,p,h):Lh(Gn(n),n,a)}function SQe(n){if(!Pa(n)||!Re(n.expression))return!1;let a=zs(n.expression,n.expression.escapedText,111551,void 0,void 0,!1),c=a?.valueDeclaration;if(!c||!ha(c)||!o2(c.parent)||!z0(c.parent.parent)||!Re(c.parent.parent.expression))return!1;let u=_ne(!1);return u?Qf(c.parent.parent.expression,!0)===u:!1}function tIe(n,a,c,u){var p;let h=YB(c);if(h>-1)return hr(c[h],_.A_spread_argument_must_either_have_a_tuple_type_or_be_passed_to_a_rest_parameter);let T=Number.POSITIVE_INFINITY,k=Number.NEGATIVE_INFINITY,O=Number.NEGATIVE_INFINITY,H=Number.POSITIVE_INFINITY,J;for(let It of a){let Tn=Vp(It),un=xd(It);Tn<T&&(T=Tn,J=It),k=Math.max(k,un),Tn<c.length&&Tn>O&&(O=Tn),c.length<un&&un<H&&(H=un)}let de=vt(a,jp),Ae=de?T:T<k?T+\"-\"+k:T,xe=!de&&Ae===1&&c.length===0&&SQe(n);if(xe&&Yn(n))return SD(n,_.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments);let tt=du(n)?de?_.The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_at_least_0:_.The_runtime_will_invoke_the_decorator_with_1_arguments_but_the_decorator_expects_0:de?_.Expected_at_least_0_arguments_but_got_1:xe?_.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise:_.Expected_0_arguments_but_got_1;if(T<c.length&&c.length<k){if(u){let It=da(void 0,_.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments,c.length,O,H);return It=da(It,u),SD(n,It)}return SD(n,_.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments,c.length,O,H)}else if(c.length<T){let It;if(u){let un=da(void 0,tt,Ae,c.length);un=da(un,u),It=SD(n,un)}else It=SD(n,tt,Ae,c.length);let Tn=(p=J?.declaration)==null?void 0:p.parameters[J.thisParameter?c.length+1:c.length];if(Tn){let un=hr(Tn,La(Tn.name)?_.An_argument_matching_this_binding_pattern_was_not_provided:Fm(Tn)?_.Arguments_for_the_rest_parameter_0_were_not_provided:_.An_argument_for_0_was_not_provided,Tn.name?La(Tn.name)?void 0:vr(Xd(Tn.name)):c.length);return Ao(It,un)}return It}else{let It=D.createNodeArray(c.slice(k)),Tn=Vo(It).pos,un=To(It).end;if(un===Tn&&un++,om(It,Tn,un),u){let Nn=da(void 0,tt,Ae,c.length);return Nn=da(Nn,u),Hw(Gn(n),It,Nn)}return OA(Gn(n),It,tt,Ae,c.length)}}function xQe(n,a,c,u){let p=c.length;if(a.length===1){let k=a[0],O=Mp(k.typeParameters),H=Fn(k.typeParameters);if(u){let J=da(void 0,_.Expected_0_type_arguments_but_got_1,O<H?O+\"-\"+H:O,p);return J=da(J,u),Hw(Gn(n),c,J)}return OA(Gn(n),c,_.Expected_0_type_arguments_but_got_1,O<H?O+\"-\"+H:O,p)}let h=-1/0,T=1/0;for(let k of a){let O=Mp(k.typeParameters),H=Fn(k.typeParameters);O>p?T=Math.min(T,O):H<p&&(h=Math.max(h,H))}if(h!==-1/0&&T!==1/0){if(u){let k=da(void 0,_.No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments,p,h,T);return k=da(k,u),Hw(Gn(n),c,k)}return OA(Gn(n),c,_.No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments,p,h,T)}if(u){let k=da(void 0,_.Expected_0_type_arguments_but_got_1,h===-1/0?T:h,p);return k=da(k,u),Hw(Gn(n),c,k)}return OA(Gn(n),c,_.Expected_0_type_arguments_but_got_1,h===-1/0?T:h,p)}function MC(n,a,c,u,p,h){let T=n.kind===212,k=n.kind===167,O=Au(n),H=!B&&!c,J;!k&&!NA(n)&&(J=n.typeArguments,(T||O||n.expression.kind!==106)&&mn(J,qa));let de=c||[];if(gQe(a,de,p),!de.length)return H&&Lo.add(SD(n,_.Call_target_does_not_contain_any_signatures)),Up(n);let Ae=rie(n),xe=de.length===1&&!de[0].typeParameters,tt=!k&&!xe&&vt(Ae,Yf)?4:0;tt|=u&32;let It,Tn,un,Nn,en=!!(u&16)&&n.kind===210&&n.arguments.hasTrailingComma;if(de.length>1&&(Nn=rr(de,hm,xe,en)),Nn||(Nn=rr(de,Zu,xe,en)),Nn)return Nn;if(Nn=AQe(n,de,Ae,!!c,u),Rr(n).resolvedSignature=Nn,H)if(It)if(It.length===1||It.length>3){let Jt=It[It.length-1],Cn;It.length>3&&(Cn=da(Cn,_.The_last_overload_gave_the_following_error),Cn=da(Cn,_.No_overload_matches_this_call)),h&&(Cn=da(Cn,h));let Rn=GM(n,Ae,Jt,Zu,0,!0,()=>Cn);if(Rn)for(let Br of Rn)Jt.declaration&&It.length>3&&Ao(Br,hr(Jt.declaration,_.The_last_overload_is_declared_here)),cn(Jt,Br),Lo.add(Br);else L.fail(\"No error for last overload signature\")}else{let Jt=[],Cn=0,Rn=Number.MAX_VALUE,Br=0,Hr=0;for(let Hd of It){let In=GM(n,Ae,Hd,Zu,0,!0,()=>da(void 0,_.Overload_0_of_1_2_gave_the_following_error,Hr+1,de.length,ne(Hd)));In?(In.length<=Rn&&(Rn=In.length,Br=Hr),Cn=Math.max(Cn,In.length),Jt.push(In)):L.fail(\"No error for 3 or fewer overload signatures\"),Hr++}let qi=Cn>1?Jt[Br]:e_(Jt);L.assert(qi.length>0,\"No errors reported for 3 or fewer overload signatures\");let wa=da(on(qi,qse),_.No_overload_matches_this_call);h&&(wa=da(wa,h));let Xc=[...Uo(qi,Hd=>Hd.relatedInformation)],_f;if(Ji(qi,Hd=>Hd.start===qi[0].start&&Hd.length===qi[0].length&&Hd.file===qi[0].file)){let{file:Hd,start:ji,length:In}=qi[0];_f={file:Hd,start:ji,length:In,code:wa.code,category:wa.category,messageText:wa,relatedInformation:Xc}}else _f=Lh(Gn(n),n,wa,Xc);cn(It[0],_f),Lo.add(_f)}else if(Tn)Lo.add(tIe(n,[Tn],Ae,h));else if(un)nie(un,n.typeArguments,!0,h);else{let Jt=Pr(a,Cn=>Zre(Cn,J));Jt.length===0?Lo.add(xQe(n,a,J,h)):Lo.add(tIe(n,Jt,Ae,h))}return Nn;function cn(Jt,Cn){var Rn,Br;let Hr=It,qi=Tn,wa=un,Xc=((Br=(Rn=Jt.declaration)==null?void 0:Rn.symbol)==null?void 0:Br.declarations)||Je,Hd=Xc.length>1?wr(Xc,ji=>Ds(ji)&&Nf(ji.body)):void 0;if(Hd){let ji=rp(Hd),In=!ji.typeParameters;rr([ji],Zu,In)&&Ao(Cn,hr(Hd,_.The_call_would_have_succeeded_against_this_implementation_but_implementation_signatures_of_overloads_are_not_externally_visible))}It=Hr,Tn=qi,un=wa}function rr(Jt,Cn,Rn,Br=!1){if(It=void 0,Tn=void 0,un=void 0,Rn){let Hr=Jt[0];if(vt(J)||!$B(n,Ae,Hr,Br))return;if(GM(n,Ae,Hr,Cn,0,!1,void 0)){It=[Hr];return}return Hr}for(let Hr=0;Hr<Jt.length;Hr++){let qi=Jt[Hr];if(!Zre(qi,J)||!$B(n,Ae,qi,Br))continue;let wa,Xc;if(qi.typeParameters){let _f;if(vt(J)){if(_f=nie(qi,J,!1),!_f){un=qi;continue}}else Xc=pD(qi.typeParameters,qi,Yn(n)?2:0),_f=eie(n,qi,Ae,tt|8,Xc),tt|=Xc.flags&4?8:0;if(wa=tD(qi,_f,Yn(qi.declaration),Xc&&Xc.inferredTypeParameters),CD(qi)&&!$B(n,Ae,wa,Br)){Tn=wa;continue}}else wa=qi;if(GM(n,Ae,wa,Cn,tt,!1,void 0)){(It||(It=[])).push(wa);continue}if(tt){if(tt=u&32,Xc){let _f=eie(n,qi,Ae,tt,Xc);if(wa=tD(qi,_f,Yn(qi.declaration),Xc.inferredTypeParameters),CD(qi)&&!$B(n,Ae,wa,Br)){Tn=wa;continue}}if(GM(n,Ae,wa,Cn,tt,!1,void 0)){(It||(It=[])).push(wa);continue}}return Jt[Hr]=wa,wa}}}function AQe(n,a,c,u,p){return L.assert(a.length>0),JC(n),u||a.length===1||a.some(h=>!!h.typeParameters)?LQe(n,a,c,p):CQe(a)}function CQe(n){let a=Zi(n,O=>O.thisParameter),c;a.length&&(c=nIe(a,a.map(VM)));let{min:u,max:p}=Nle(n,IQe),h=[];for(let O=0;O<p;O++){let H=Zi(n,J=>Xl(J)?O<J.parameters.length-1?J.parameters[O]:To(J.parameters):O<J.parameters.length?J.parameters[O]:void 0);L.assert(H.length!==0),h.push(nIe(H,Zi(n,J=>tT(J,O))))}let T=Zi(n,O=>Xl(O)?To(O.parameters):void 0),k=0;if(T.length!==0){let O=nu(Gr(Zi(n,Bxe),2));h.push(rIe(T,O)),k|=1}return n.some(_K)&&(k|=2),Am(n[0].declaration,void 0,c,h,so(n.map(qo)),void 0,u,k)}function IQe(n){let a=n.parameters.length;return Xl(n)?a-1:a}function nIe(n,a){return rIe(n,Gr(a,2))}function rIe(n,a){return qE(Vo(n),a)}function LQe(n,a,c,u){let p=wQe(a,We===void 0?c.length:We),h=a[p],{typeParameters:T}=h;if(!T)return h;let k=zCe(n)?n.typeArguments:void 0,O=k?JG(h,kQe(k,T,Yn(n))):DQe(n,T,h,c,u);return a[p]=O,O}function kQe(n,a,c){let u=n.map(B1);for(;u.length>a.length;)u.pop();for(;u.length<a.length;)u.push(jE(a[u.length])||eu(a[u.length])||hre(c));return u}function DQe(n,a,c,u,p){let h=pD(a,c,Yn(n)?2:0),T=eie(n,c,u,p|4|8,h);return JG(c,T)}function wQe(n,a){let c=-1,u=-1;for(let p=0;p<n.length;p++){let h=n[p],T=xd(h);if(jp(h)||T>=a)return p;T>u&&(u=T,c=p)}return c}function RQe(n,a,c){if(n.expression.kind===106){let O=Ire(n.expression);if(Zo(O)){for(let H of n.arguments)Yi(H);return As}if(!Ro(O)){let H=hp(Zc(n));if(H){let J=xr(O,H.typeArguments,H);return MC(n,J,a,c,0)}}return rA(n)}let u,p=Yi(n.expression);if(fT(n)){let O=fD(p,n.expression);u=O===p?0:hI(n)?16:8,p=O}else u=0;if(p=DCe(p,n.expression,Y$e),p===Qe)return Ql;let h=Eu(p);if(Ro(h))return Up(n);let T=xa(h,0),k=xa(h,1).length;if(QB(p,h,T.length,k))return!Ro(p)&&n.typeArguments&&Fe(n,_.Untyped_function_calls_may_not_accept_type_arguments),rA(n);if(!T.length){if(k)Fe(n,_.Value_of_type_0_is_not_callable_Did_you_mean_to_include_new,Ee(p));else{let O;if(n.arguments.length===1){let H=Gn(n).text;Wl(H.charCodeAt(xo(H,n.expression.end,!0)-1))&&(O=hr(n.expression,_.Are_you_missing_a_semicolon))}aie(n.expression,h,0,O)}return Up(n)}return c&8&&!n.typeArguments&&T.some(OQe)?(FIe(n,c),yc):T.some(O=>Yn(O.declaration)&&!!Aj(O.declaration))?(Fe(n,_.Value_of_type_0_is_not_callable_Did_you_mean_to_include_new,Ee(p)),Up(n)):MC(n,T,a,c,u)}function OQe(n){return!!(n.typeParameters&&Jie(qo(n)))}function QB(n,a,c,u){return Zo(n)||Zo(a)&&!!(n.flags&262144)||!c&&!u&&!(a.flags&1048576)&&!(R_(a).flags&131072)&&to(n,Hs)}function NQe(n,a,c){if(n.arguments&&R<1){let T=YB(n.arguments);T>=0&&Fe(n.arguments[T],_.Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher)}let u=PC(n.expression);if(u===Qe)return Ql;if(u=Eu(u),Ro(u))return Up(n);if(Zo(u))return n.typeArguments&&Fe(n,_.Untyped_function_calls_may_not_accept_type_arguments),rA(n);let p=xa(u,1);if(p.length){if(!PQe(n,p[0]))return Up(n);if(iIe(p,k=>!!(k.flags&4)))return Fe(n,_.Cannot_create_an_instance_of_an_abstract_class),Up(n);let T=u.symbol&&Nh(u.symbol);return T&&Mr(T,256)?(Fe(n,_.Cannot_create_an_instance_of_an_abstract_class),Up(n)):MC(n,p,a,c,0)}let h=xa(u,0);if(h.length){let T=MC(n,h,a,c,0);return ge||(T.declaration&&!sp(T.declaration)&&qo(T)!==yt&&Fe(n,_.Only_a_void_function_can_be_called_with_the_new_keyword),Yb(T)===yt&&Fe(n,_.A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void)),T}return aie(n.expression,u,1),Up(n)}function iIe(n,a){return ba(n)?vt(n,c=>iIe(c,a)):n.compositeKind===1048576?vt(n.compositeSignatures,a):a(n)}function iie(n,a){let c=_o(a);if(!Fn(c))return!1;let u=c[0];if(u.flags&2097152){let p=u.types,h=Axe(p),T=0;for(let k of u.types){if(!h[T]&&Ur(k)&3&&(k.symbol===n||iie(n,k)))return!0;T++}return!1}return u.symbol===n?!0:iie(n,u)}function PQe(n,a){if(!a||!a.declaration)return!0;let c=a.declaration,u=gS(c,24);if(!u||c.kind!==173)return!0;let p=Nh(c.parent.symbol),h=gs(c.parent.symbol);if(!Hie(n,p)){let T=Zc(n);if(T&&u&16){let k=B1(T);if(iie(c.parent.symbol,k))return!0}return u&8&&Fe(n,_.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration,Ee(h)),u&16&&Fe(n,_.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration,Ee(h)),!1}return!0}function aIe(n,a,c){let u,p=c===0,h=rT(a),T=h&&xa(h,c).length>0;if(a.flags&1048576){let O=a.types,H=!1;for(let J of O)if(xa(J,c).length!==0){if(H=!0,u)break}else if(u||(u=da(u,p?_.Type_0_has_no_call_signatures:_.Type_0_has_no_construct_signatures,Ee(J)),u=da(u,p?_.Not_all_constituents_of_type_0_are_callable:_.Not_all_constituents_of_type_0_are_constructable,Ee(a))),H)break;H||(u=da(void 0,p?_.No_constituent_of_type_0_is_callable:_.No_constituent_of_type_0_is_constructable,Ee(a))),u||(u=da(u,p?_.Each_member_of_the_union_type_0_has_signatures_but_none_of_those_signatures_are_compatible_with_each_other:_.Each_member_of_the_union_type_0_has_construct_signatures_but_none_of_those_signatures_are_compatible_with_each_other,Ee(a)))}else u=da(u,p?_.Type_0_has_no_call_signatures:_.Type_0_has_no_construct_signatures,Ee(a));let k=p?_.This_expression_is_not_callable:_.This_expression_is_not_constructable;if(Pa(n.parent)&&n.parent.arguments.length===0){let{resolvedSymbol:O}=Rr(n);O&&O.flags&32768&&(k=_.This_expression_is_not_callable_because_it_is_a_get_accessor_Did_you_mean_to_use_it_without)}return{messageChain:da(u,k),relatedMessage:T?_.Did_you_forget_to_use_await:void 0}}function aie(n,a,c,u){let{messageChain:p,relatedMessage:h}=aIe(n,a,c),T=Lh(Gn(n),n,p);if(h&&Ao(T,hr(n,h)),Pa(n.parent)){let{start:k,length:O}=eIe(n.parent,!0);T.start=k,T.length=O}Lo.add(T),oIe(a,c,u?Ao(T,u):T)}function oIe(n,a,c){if(!n.symbol)return;let u=Ai(n.symbol).originatingImport;if(u&&!Dd(u)){let p=xa(zn(Ai(n.symbol).target),a);if(!p||!p.length)return;Ao(c,hr(u,_.Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cause_a_failure_at_runtime_Consider_using_a_default_import_or_import_require_here_instead))}}function MQe(n,a,c){let u=Yi(n.tag),p=Eu(u);if(Ro(p))return Up(n);let h=xa(p,0),T=xa(p,1).length;if(QB(u,p,h.length,T))return rA(n);if(!h.length){if(fu(n.parent)){let k=hr(n.tag,_.It_is_likely_that_you_are_missing_a_comma_to_separate_these_two_template_expressions_They_form_a_tagged_template_expression_which_cannot_be_invoked);return Lo.add(k),Up(n)}return aie(n.tag,p,0),Up(n)}return MC(n,h,a,c,0)}function FQe(n){switch(n.parent.kind){case 260:case 228:return _.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression;case 166:return _.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression;case 169:return _.Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression;case 171:case 174:case 175:return _.Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression;default:return L.fail()}}function GQe(n,a,c){let u=Yi(n.expression),p=Eu(u);if(Ro(p))return Up(n);let h=xa(p,0),T=xa(p,1).length;if(QB(u,p,h.length,T))return rA(n);if(UQe(n,h)&&!ud(n.expression)){let O=Qc(n.expression,!1);return Fe(n,_._0_accepts_too_few_arguments_to_be_used_as_a_decorator_here_Did_you_mean_to_call_it_first_and_write_0,O),Up(n)}let k=FQe(n);if(!h.length){let O=aIe(n.expression,p,0),H=da(O.messageChain,k),J=Lh(Gn(n.expression),n.expression,H);return O.relatedMessage&&Ao(J,hr(n.expression,O.relatedMessage)),Lo.add(J),oIe(p,0,J),Up(n)}return MC(n,h,a,c,0,k)}function ZB(n,a){let c=nA(n),u=c&&Gd(c),p=u&&yd(u,$d.Element,788968),h=p&&Be.symbolToEntityName(p,788968,n),T=D.createFunctionTypeNode(void 0,[D.createParameterDeclaration(void 0,void 0,\"props\",void 0,Be.typeToTypeNode(a,n))],h?D.createTypeReferenceNode(h,void 0):D.createKeywordTypeNode(131)),k=wo(1,\"props\");return k.links.type=a,Am(T,void 0,void 0,[k],p?gs(p):ve,void 0,1,0)}function BQe(n,a,c){if(NC(n.tagName)){let T=ACe(n),k=ZB(n,T);return Ly(iA(n.attributes,VB(k,n),void 0,0),T,n.tagName,n.attributes),Fn(n.typeArguments)&&(mn(n.typeArguments,qa),Lo.add(OA(Gn(n),n.typeArguments,_.Expected_0_type_arguments_but_got_1,0,Fn(n.typeArguments)))),k}let u=Yi(n.tagName),p=Eu(u);if(Ro(p))return Up(n);let h=SCe(u,n);return QB(u,p,h.length,0)?rA(n):h.length===0?(Fe(n.tagName,_.JSX_element_type_0_does_not_have_any_construct_or_call_signatures,Qc(n.tagName)),Up(n)):MC(n,h,a,c,0)}function UQe(n,a){return a.length&&Ji(a,c=>c.minArgumentCount===0&&!Xl(c)&&c.parameters.length<ZCe(n,c))}function VQe(n,a,c){switch(n.kind){case 210:return RQe(n,a,c);case 211:return NQe(n,a,c);case 212:return MQe(n,a,c);case 167:return GQe(n,a,c);case 283:case 282:return BQe(n,a,c)}throw L.assertNever(n,\"Branch in 'resolveSignature' should be unreachable.\")}function FC(n,a,c){let u=Rr(n),p=u.resolvedSignature;if(p&&p!==yc&&!a)return p;u.resolvedSignature=yc;let h=VQe(n,a,c||0);return h!==yc&&(u.resolvedSignature=sn===Dn?h:p),h}function sp(n){var a;if(!n||!Yn(n))return!1;let c=Jc(n)||ms(n)?n:(wi(n)||yl(n))&&n.initializer&&ms(n.initializer)?n.initializer:void 0;if(c){if(Aj(n))return!0;if(yl(qy(c.parent)))return!1;let u=fr(c);return!!((a=u?.members)!=null&&a.size)}return!1}function oie(n,a){var c,u;if(a){let p=Ai(a);if(!p.inferredClassSymbol||!p.inferredClassSymbol.has($a(n))){let h=Zp(n)?n:Pb(n);return h.exports=h.exports||Ua(),h.members=h.members||Ua(),h.flags|=a.flags&32,(c=a.exports)!=null&&c.size&&ll(h.exports,a.exports),(u=a.members)!=null&&u.size&&ll(h.members,a.members),(p.inferredClassSymbol||(p.inferredClassSymbol=new Map)).set($a(h),h),h}return p.inferredClassSymbol.get($a(n))}}function jQe(n){var a;let c=n&&eU(n,!0),u=(a=c?.exports)==null?void 0:a.get(\"prototype\"),p=u?.valueDeclaration&&HQe(u.valueDeclaration);return p?fr(p):void 0}function eU(n,a){if(!n.parent)return;let c,u;if(wi(n.parent)&&n.parent.initializer===n){if(!Yn(n)&&!(kh(n.parent)&&Ds(n)))return;c=n.parent.name,u=n.parent}else if(ar(n.parent)){let p=n.parent,h=n.parent.operatorToken.kind;if(h===63&&(a||p.right===n))c=p.left,u=c;else if((h===56||h===60)&&(wi(p.parent)&&p.parent.initializer===p?(c=p.parent.name,u=p.parent):ar(p.parent)&&p.parent.operatorToken.kind===63&&(a||p.parent.right===p)&&(c=p.parent.left,u=c),!c||!lS(c)||!UA(c,p.left)))return}else a&&Jc(n)&&(c=n.name,u=n);if(!(!u||!c||!a&&!ob(n,ub(c))))return vd(u)}function HQe(n){if(!n.parent)return!1;let a=n.parent;for(;a&&a.kind===208;)a=a.parent;if(a&&ar(a)&&ub(a.left)&&a.operatorToken.kind===63){let c=OH(a);return rs(c)&&c}}function WQe(n,a){var c,u,p;o8(n,n.typeArguments);let h=FC(n,void 0,a);if(h===yc)return Qe;if(tU(h,n),n.expression.kind===106)return yt;if(n.kind===211){let k=h.declaration;if(k&&k.kind!==173&&k.kind!==177&&k.kind!==182&&!(X0(k)&&((u=(c=NI(k))==null?void 0:c.parent)==null?void 0:u.kind)===173)&&!HA(k)&&!sp(k))return ge&&Fe(n,_.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type),Se}if(Yn(n)&&$s(Y)!==100&&dIe(n))return Fxe(n.arguments[0]);let T=qo(h);if(T.flags&12288&&sIe(n))return wne(qy(n.parent));if(n.kind===210&&!n.questionDotToken&&n.parent.kind===241&&T.flags&16384&&If(h)){if(!zI(n.expression))Fe(n.expression,_.Assertions_require_the_call_target_to_be_an_identifier_or_qualified_name);else if(!OB(n)){let k=Fe(n.expression,_.Assertions_require_every_name_in_the_call_target_to_be_declared_with_an_explicit_type_annotation);IM(n.expression,k)}}if(Yn(n)){let k=eU(n,!1);if((p=k?.exports)!=null&&p.size){let O=ls(k,k.exports,Je,Je,Je);return O.objectFlags|=4096,so([T,O])}}return T}function tU(n,a){if(n.declaration&&n.declaration.flags&268435456){let c=UM(a),u=DR(P6(a));y1(c,n.declaration,u,ne(n))}}function UM(n){switch(n=vs(n),n.kind){case 210:case 167:case 211:return UM(n.expression);case 212:return UM(n.tag);case 283:case 282:return UM(n.tagName);case 209:return n.argumentExpression;case 208:return n.name;case 180:let a=n;return Yu(a.typeName)?a.typeName.right:a;default:return n}}function sIe(n){if(!Pa(n))return!1;let a=n.expression;if(br(a)&&a.name.escapedText===\"for\"&&(a=a.expression),!Re(a)||a.escapedText!==\"Symbol\")return!1;let c=rAe(!1);return c?c===zs(a,\"Symbol\",111551,void 0,void 0,!1):!1}function zQe(n){if(cit(n),n.arguments.length===0)return WM(n,Se);let a=n.arguments[0],c=Ic(a),u=n.arguments.length>1?Ic(n.arguments[1]):void 0;for(let h=2;h<n.arguments.length;++h)Ic(n.arguments[h]);if((c.flags&32768||c.flags&65536||!to(c,ae))&&Fe(a,_.Dynamic_import_s_specifier_must_be_of_type_string_but_here_has_type_0,Ee(c)),u){let h=nAe(!0);h!==Ki&&wu(u,TB(h,32768),n.arguments[1])}let p=Gl(n,a);if(p){let h=Jb(p,a,!0,!1);if(h)return WM(n,lIe(zn(h),h,p,a)||uIe(zn(h),h,p,a))}return WM(n,Se)}function cIe(n,a,c){let u=Ua(),p=wo(2097152,\"default\");return p.parent=a,p.links.nameType=df(\"default\"),p.links.aliasTarget=Ac(n),u.set(\"default\",p),ls(c,u,Je,Je,Je)}function lIe(n,a,c,u){if(cs(u)&&n&&!Ro(n)){let h=n;if(!h.defaultOnlyType){let T=cIe(a,c);h.defaultOnlyType=T}return h.defaultOnlyType}}function uIe(n,a,c,u){var p;if(Z&&n&&!Ro(n)){let h=n;if(!h.syntheticType){let T=(p=c.declarations)==null?void 0:p.find(Li);if(ny(T,c,!1,u)){let O=wo(2048,\"__type\"),H=cIe(a,c,O);O.links.type=H,h.syntheticType=OM(n)?e0(n,H,O,0,!1):H}else h.syntheticType=n}return h.syntheticType}return n}function dIe(n){if(!qu(n,!0))return!1;if(!Re(n.expression))return L.fail();let a=zs(n.expression,n.expression.escapedText,111551,void 0,void 0,!0);if(a===ct)return!0;if(a.flags&2097152)return!1;let c=a.flags&16?259:a.flags&3?257:0;if(c!==0){let u=nc(a,c);return!!u&&!!(u.flags&16777216)}return!1}function JQe(n){Ort(n)||o8(n,n.typeArguments),R<2&&Hc(n,262144);let a=FC(n);return tU(a,n),qo(a)}function KQe(n){if(n.kind===213){let a=Gn(n);a&&$c(a.fileName,[\".cts\",\".mts\"])&&an(n,_.This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Use_an_as_expression_instead)}return fIe(n,n.type,n.expression)}function sie(n){switch(n.kind){case 10:case 14:case 8:case 9:case 110:case 95:case 206:case 207:case 225:return!0;case 214:return sie(n.expression);case 221:let a=n.operator,c=n.operand;return a===40&&(c.kind===8||c.kind===9)||a===39&&c.kind===8;case 208:case 209:let u=vs(n.expression),p=bc(u)?uc(u,111551,!0):void 0;return!!(p&&p.flags&384)}return!1}function fIe(n,a,c,u){let p=Yi(c,u);if(Ch(a))return sie(c)||Fe(c,_.A_const_assertions_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array_or_object_literals),Hu(p);qa(a),p=TM(ky(p));let h=$r(a);return Ro(h)||i(()=>{let T=Sd(p);_B(h,T)||e2e(p,h,n,_.Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the_other_If_this_was_intentional_convert_the_expression_to_unknown_first)}),h}function qQe(n){let a=Yi(n.expression),c=fD(a,n.expression);return SB(yg(c),n,c!==a)}function XQe(n){return n.flags&32?qQe(n):yg(Yi(n.expression))}function _Ie(n){ake(n),mn(n.typeArguments,qa);let a=n.kind===230?Yi(n.expression):kT(n.exprName)?DM(n.exprName):Yi(n.exprName);return pIe(a,n)}function pIe(n,a){let c=a.typeArguments;if(n===Qe||Ro(n)||!vt(c))return n;let u=!1,p,h=k(n),T=u?p:n;return T&&Lo.add(OA(Gn(a),c,_.Type_0_has_no_signatures_for_which_the_type_argument_list_is_applicable,Ee(T))),h;function k(H){let J=!1,de=!1,Ae=xe(H);return u||(u=de),J&&!de&&(p??(p=H)),Ae;function xe(tt){if(tt.flags&524288){let It=w_(tt),Tn=O(It.callSignatures),un=O(It.constructSignatures);if(J||(J=It.callSignatures.length!==0||It.constructSignatures.length!==0),de||(de=Tn.length!==0||un.length!==0),Tn!==It.callSignatures||un!==It.constructSignatures){let Nn=ls(void 0,It.members,Tn,un,It.indexInfos);return Nn.objectFlags|=8388608,Nn.node=a,Nn}}else if(tt.flags&58982400){let It=bu(tt);if(It){let Tn=xe(It);if(Tn!==It)return Tn}}else{if(tt.flags&1048576)return Ls(tt,k);if(tt.flags&2097152)return so(Tl(tt.types,xe))}return tt}}function O(H){let J=Pr(H,de=>!!de.typeParameters&&Zre(de,c));return Tl(J,de=>{let Ae=nie(de,c,!0);return Ae?tD(de,Ae,Yn(de.declaration)):de})}}function YQe(n){return qa(n.type),cie(n.expression,n.type)}function cie(n,a,c){let u=Yi(n,c),p=$r(a);return Ro(p)?p:(Ly(u,p,a,n,_.Type_0_does_not_satisfy_the_expected_type_1),u)}function $Qe(n){return Xrt(n),n.keywordToken===103?lie(n):n.keywordToken===100?QQe(n):L.assertNever(n.keywordToken)}function mIe(n){switch(n.keywordToken){case 100:return tAe();case 103:let a=lie(n);return Ro(a)?ve:hZe(a);default:L.assertNever(n.keywordToken)}}function lie(n){let a=oce(n);if(a)if(a.kind===173){let c=fr(a.parent);return zn(c)}else{let c=fr(a);return zn(c)}else return Fe(n,_.Meta_property_0_is_only_allowed_in_the_body_of_a_function_declaration_function_expression_or_constructor,\"new.target\"),ve}function QQe(n){ie===100||ie===199?Gn(n).impliedNodeFormat!==99&&Fe(n,_.The_import_meta_meta_property_is_not_allowed_in_files_which_will_build_into_CommonJS_output):ie<6&&ie!==4&&Fe(n,_.The_import_meta_meta_property_is_only_allowed_when_the_module_option_is_es2020_es2022_esnext_system_node16_or_nodenext);let a=Gn(n);return L.assert(!!(a.flags&4194304),\"Containing file is missing import meta node flag.\"),n.name.escapedText===\"meta\"?eAe():ve}function VM(n){let a=zn(n);if(U){let c=n.valueDeclaration;if(c&&Jy(c))return gg(a)}return a}function nU(n){return L.assert(Re(n.name)),n.name.escapedText}function GC(n,a,c){let u=n.parameters.length-(Xl(n)?1:0);if(a<u)return n.parameters[a].escapedName;let p=n.parameters[u]||Ht,h=c||zn(p);if(po(h)){let T=h.target.labeledElementDeclarations,k=a-u;return T&&nU(T[k])||p.escapedName+\"_\"+k}return p.escapedName}function ZQe(n,a){var c;if(((c=n.declaration)==null?void 0:c.kind)===320)return;let u=n.parameters.length-(Xl(n)?1:0);if(a<u){let T=n.parameters[a];return hIe(T)?[T.escapedName,!1]:void 0}let p=n.parameters[u]||Ht;if(!hIe(p))return;let h=zn(p);if(po(h)){let T=h.target.labeledElementDeclarations,k=a-u,O=T?.[k],H=!!O?.dotDotDotToken;return O?[nU(O),H]:void 0}if(a===u)return[p.escapedName,!0]}function hIe(n){return n.valueDeclaration&&ha(n.valueDeclaration)&&Re(n.valueDeclaration.name)}function gIe(n){return n.kind===199||ha(n)&&n.name&&Re(n.name)}function eZe(n,a){let c=n.parameters.length-(Xl(n)?1:0);if(a<c){let h=n.parameters[a].valueDeclaration;return h&&gIe(h)?h:void 0}let u=n.parameters[c]||Ht,p=zn(u);if(po(p)){let h=p.target.labeledElementDeclarations,T=a-c;return h&&h[T]}return u.valueDeclaration&&gIe(u.valueDeclaration)?u.valueDeclaration:void 0}function N_(n,a){return tT(n,a)||Se}function tT(n,a){let c=n.parameters.length-(Xl(n)?1:0);if(a<c)return VM(n.parameters[a]);if(Xl(n)){let u=zn(n.parameters[c]),p=a-c;if(!po(u)||u.target.hasRestElement||p<u.target.fixedLength)return od(u,ap(p))}}function xD(n,a){let c=xd(n),u=Vp(n),p=AD(n);if(p&&a>=c-1)return a===c-1?p:nu(od(p,rt));let h=[],T=[],k=[];for(let O=a;O<c;O++){!p||O<c-1?(h.push(N_(n,O)),T.push(O<u?1:2)):(h.push(p),T.push(8));let H=eZe(n,O);H&&k.push(H)}return ip(h,T,!1,Fn(k)===Fn(h)?k:void 0)}function xd(n){let a=n.parameters.length;if(Xl(n)){let c=zn(n.parameters[a-1]);if(po(c))return a+c.target.fixedLength-(c.target.hasRestElement?0:1)}return a}function Vp(n,a){let c=a&1,u=a&2;if(u||n.resolvedMinArgumentCount===void 0){let p;if(Xl(n)){let h=zn(n.parameters[n.parameters.length-1]);if(po(h)){let T=Yc(h.target.elementFlags,O=>!(O&1)),k=T<0?h.target.fixedLength:T;k>0&&(p=n.parameters.length-1+k)}}if(p===void 0){if(!c&&n.flags&32)return 0;p=n.minArgumentCount}if(u)return p;for(let h=p-1;h>=0;h--){let T=N_(n,h);if(jc(T,JCe).flags&131072)break;p=h}n.resolvedMinArgumentCount=p}return n.resolvedMinArgumentCount}function jp(n){if(Xl(n)){let a=zn(n.parameters[n.parameters.length-1]);return!po(a)||a.target.hasRestElement}return!1}function AD(n){if(Xl(n)){let a=zn(n.parameters[n.parameters.length-1]);if(!po(a))return a;if(a.target.hasRestElement)return TC(a,a.target.fixedLength)}}function CD(n){let a=AD(n);return a&&!ff(a)&&!Zo(a)&&(R_(a).flags&131072)===0?a:void 0}function uie(n){return die(n,lt)}function die(n,a){return n.parameters.length>0?N_(n,0):a}function tZe(n,a,c){let u=n.parameters.length-(Xl(n)?1:0);for(let p=0;p<u;p++){let h=n.parameters[p].valueDeclaration;if(h.type){let T=Cl(h);T&&gh(c.inferences,$r(T),N_(a,p))}}}function nZe(n,a){if(a.typeParameters)if(!n.typeParameters)n.typeParameters=a.typeParameters;else return;if(a.thisParameter){let u=n.thisParameter;(!u||u.valueDeclaration&&!u.valueDeclaration.type)&&(u||(n.thisParameter=qE(a.thisParameter,void 0)),jM(n.thisParameter,zn(a.thisParameter)))}let c=n.parameters.length-(Xl(n)?1:0);for(let u=0;u<c;u++){let p=n.parameters[u];if(!Cl(p.valueDeclaration)){let h=tT(a,u);jM(p,h)}}if(Xl(n)){let u=To(n.parameters);if(u.valueDeclaration?!Cl(u.valueDeclaration):!!(ac(u)&65536)){let p=xD(a,c);jM(u,p)}}}function rZe(n){n.thisParameter&&jM(n.thisParameter);for(let a of n.parameters)jM(a)}function jM(n,a){let c=Ai(n);if(c.type)a&&L.assertEqual(c.type,a,\"Parameter symbol already has a cached type which differs from newly assigned type\");else{let u=n.valueDeclaration;c.type=a||(u?Zs(u,!0):zn(n)),u&&u.name.kind!==79&&(c.type===ue&&(c.type=oo(u.name)),yIe(u.name,c.type))}}function yIe(n,a){for(let c of n.elements)if(!ol(c)){let u=li(c,a);c.name.kind===79?Ai(fr(c)).type=u:yIe(c.name,u)}}function iZe(n){return Jx(IKe(!0),[n])}function aZe(n,a){return Jx(LKe(!0),[n,a])}function oZe(n,a){return Jx(kKe(!0),[n,a])}function sZe(n,a){return Jx(DKe(!0),[n,a])}function cZe(n,a){return Jx(wKe(!0),[n,a])}function lZe(n,a){return Jx(NKe(!0),[n,a])}function uZe(n,a,c){let u=`${a?\"p\":\"P\"}${c?\"s\":\"S\"}${n.id}`,p=An.get(u);if(!p){let h=Ua();h.set(\"name\",gE(\"name\",n)),h.set(\"private\",gE(\"private\",a?pe:Ke)),h.set(\"static\",gE(\"static\",c?pe:Ke)),p=ls(void 0,h,Je,Je,Je),An.set(u,p)}return p}function vIe(n,a,c){let u=zc(n),p=pi(n.name),h=p?df(vr(n.name)):pg(n.name),T=Nc(n)?aZe(a,c):__(n)?oZe(a,c):Tf(n)?sZe(a,c):Id(n)?cZe(a,c):Na(n)?lZe(a,c):L.failBadSyntaxKind(n),k=uZe(h,p,u);return so([T,k])}function dZe(n,a){return Jx(RKe(!0),[n,a])}function fZe(n,a){return Jx(OKe(!0),[n,a])}function _Ze(n,a){let c=x_(\"this\",n),u=x_(\"value\",a);return Cie(void 0,c,[u],a,void 0,1)}function fie(n,a,c){let u=x_(\"target\",n),p=x_(\"context\",a),h=Gr([c,yt]);return ND(void 0,void 0,[u,p],h)}function pZe(n){let{parent:a}=n,c=Rr(a);if(!c.decoratorSignature)switch(c.decoratorSignature=As,a.kind){case 260:case 228:{let p=zn(fr(a)),h=iZe(p);c.decoratorSignature=fie(p,h,p);break}case 171:case 174:case 175:{let u=a;if(!Yr(u.parent))break;let p=Nc(u)?HE(rp(u)):B1(u),h=zc(u)?zn(fr(u.parent)):vu(fr(u.parent)),T=__(u)?$Ie(p):Tf(u)?QIe(p):p,k=vIe(u,h,p),O=__(u)?$Ie(p):Tf(u)?QIe(p):p;c.decoratorSignature=fie(T,k,O);break}case 169:{let u=a;if(!Yr(u.parent))break;let p=B1(u),h=zc(u)?zn(fr(u.parent)):vu(fr(u.parent)),T=rm(u)?dZe(h,p):Oe,k=vIe(u,h,p),O=rm(u)?fZe(h,p):_Ze(h,p);c.decoratorSignature=fie(T,k,O);break}}return c.decoratorSignature===As?void 0:c.decoratorSignature}function mZe(n){let{parent:a}=n,c=Rr(a);if(!c.decoratorSignature)switch(c.decoratorSignature=As,a.kind){case 260:case 228:{let p=zn(fr(a)),h=x_(\"target\",p);c.decoratorSignature=ND(void 0,void 0,[h],Gr([p,yt]));break}case 166:{let u=a;if(!Ec(u.parent)&&!(Nc(u.parent)||Tf(u.parent)&&Yr(u.parent.parent))||F0(u.parent)===u)break;let p=F0(u.parent)?u.parent.parameters.indexOf(u)-1:u.parent.parameters.indexOf(u);L.assert(p>=0);let h=Ec(u.parent)?zn(fr(u.parent.parent)):qLe(u.parent),T=Ec(u.parent)?Oe:XLe(u.parent),k=ap(p),O=x_(\"target\",h),H=x_(\"propertyKey\",T),J=x_(\"parameterIndex\",k);c.decoratorSignature=ND(void 0,void 0,[O,H,J],yt);break}case 171:case 174:case 175:case 169:{let u=a;if(!Yr(u.parent))break;let p=qLe(u),h=x_(\"target\",p),T=XLe(u),k=x_(\"propertyKey\",T),O=Na(u)?yt:sAe(B1(u));if(R!==0&&(!Na(a)||rm(a))){let J=sAe(B1(u)),de=x_(\"descriptor\",J);c.decoratorSignature=ND(void 0,void 0,[h,k,de],Gr([O,yt]))}else c.decoratorSignature=ND(void 0,void 0,[h,k],Gr([O,yt]));break}}return c.decoratorSignature===As?void 0:c.decoratorSignature}function _ie(n){return Q?mZe(n):pZe(n)}function HM(n){let a=sM(!0);return a!==ro?(n=bg(VC(n))||ue,_g(a,[n])):ue}function bIe(n){let a=aAe(!0);return a!==ro?(n=bg(VC(n))||ue,_g(a,[n])):ue}function WM(n,a){let c=HM(a);return c===ue?(Fe(n,Dd(n)?_.A_dynamic_import_call_returns_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option:_.An_async_function_or_method_must_return_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option),ve):(_ne(!0)||Fe(n,Dd(n)?_.A_dynamic_import_call_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option:_.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option),c)}function hZe(n){let a=wo(0,\"NewTargetExpression\"),c=wo(4,\"target\",8);c.parent=a,c.links.type=n;let u=Ua([c]);return a.members=u,ls(a,u,Je,Je,Je)}function rU(n,a){if(!n.body)return ve;let c=pl(n),u=(c&2)!==0,p=(c&1)!==0,h,T,k,O=yt;if(n.body.kind!==238)h=Ic(n.body,a&&a&-9),u&&(h=VC(OD(h,!1,n,_.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member)));else if(p){let H=CIe(n,a);H?H.length>0&&(h=Gr(H,2)):O=lt;let{yieldTypes:J,nextTypes:de}=gZe(n,a);T=vt(J)?Gr(J,2):void 0,k=vt(de)?so(de):void 0}else{let H=CIe(n,a);if(!H)return c&2?WM(n,lt):lt;if(H.length===0)return c&2?WM(n,yt):yt;h=Gr(H,2)}if(h||T||k){if(T&&CB(n,T,3),h&&CB(n,h,1),k&&CB(n,k,2),h&&O_(h)||T&&O_(T)||k&&O_(k)){let H=Nre(n),J=H?H===rp(n)?p?void 0:h:BB(qo(H),n,void 0):void 0;p?(T=Zne(T,J,0,u),h=Zne(h,J,1,u),k=Zne(k,J,2,u)):h=CXe(h,J,u)}T&&(T=Sd(T)),h&&(h=Sd(h)),k&&(k=Sd(k))}return p?EIe(T||lt,h||O,k||cCe(2,n)||ue,u):u?HM(h||O):h||O}function EIe(n,a,c,u){let p=u?ft:Yt,h=p.getGlobalGeneratorType(!1);if(n=p.resolveIterationType(n,void 0)||ue,a=p.resolveIterationType(a,void 0)||ue,c=p.resolveIterationType(c,void 0)||ue,h===ro){let T=p.getGlobalIterableIteratorType(!1),k=T!==ro?pLe(T,p):void 0,O=k?k.returnType:Se,H=k?k.nextType:Oe;return to(a,O)&&to(H,c)?T!==ro?iD(T,[n]):(p.getGlobalIterableIteratorType(!0),Ki):(p.getGlobalGeneratorType(!0),Ki)}return iD(h,[n,a,c])}function gZe(n,a){let c=[],u=[],p=(pl(n)&2)!==0;return Yse(n.body,h=>{let T=h.expression?Yi(h.expression,a):je;Rf(c,TIe(h,T,Se,p));let k;if(h.asteriskToken){let O=_U(T,p?19:17,h.expression);k=O&&O.nextType}else k=Ru(h,void 0);k&&Rf(u,k)}),{yieldTypes:c,nextTypes:u}}function TIe(n,a,c,u){let p=n.expression||n,h=n.asteriskToken?wy(u?19:17,a,c,p):a;return u?rT(h,p,n.asteriskToken?_.Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:_.Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member):h}function SIe(n,a,c){let u=0;for(let p=0;p<c.length;p++){let h=p<n||p>=a?c[p]:void 0;u|=h!==void 0?fF.get(h)||32768:0}return u}function xIe(n){let a=Rr(n);if(a.isExhaustive===void 0){a.isExhaustive=0;let c=yZe(n);a.isExhaustive===0&&(a.isExhaustive=c)}else a.isExhaustive===0&&(a.isExhaustive=!1);return a.isExhaustive}function yZe(n){if(n.expression.kind===218){let u=W2e(n);if(!u)return!1;let p=Ty(Ic(n.expression.expression)),h=SIe(0,0,u);return p.flags&3?(556800&h)===556800:!yh(p,T=>(iu(T)&h)===h)}let a=Ic(n.expression);if(!dD(a))return!1;let c=DB(n);return!c.length||vt(c,SXe)?!1:bYe(Ls(a,Hu),c)}function AIe(n){return n.endFlowNode&&LM(n.endFlowNode)}function CIe(n,a){let c=pl(n),u=[],p=AIe(n),h=!1;if(bT(n.body,T=>{let k=T.expression;if(k){let O=Ic(k,a&&a&-9);c&2&&(O=VC(OD(O,!1,n,_.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member))),O.flags&131072&&(h=!0),Rf(u,O)}else p=!0}),!(u.length===0&&!p&&(h||vZe(n))))return U&&u.length&&p&&!(sp(n)&&u.some(T=>T.symbol===n.symbol))&&Rf(u,Oe),u}function vZe(n){switch(n.kind){case 215:case 216:return!0;case 171:return n.parent.kind===207;default:return!1}}function pie(n,a){i(c);return;function c(){let u=pl(n),p=a&&pU(a,u);if(p&&Js(p,16385)||n.kind===170||rc(n.body)||n.body.kind!==238||!AIe(n))return;let h=n.flags&512,T=B_(n)||n;if(p&&p.flags&131072)Fe(T,_.A_function_returning_never_cannot_have_a_reachable_end_point);else if(p&&!h)Fe(T,_.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value);else if(p&&U&&!to(Oe,p))Fe(T,_.Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined);else if(Y.noImplicitReturns){if(!p){if(!h)return;let k=qo(rp(n));if(ELe(n,k))return}Fe(T,_.Not_all_code_paths_return_a_value)}}}function IIe(n,a){if(L.assert(n.kind!==171||o_(n)),JC(n),ms(n)&&HC(n,n.name),a&&a&4&&Yf(n)){if(!B_(n)&&!b4(n)){let u=ED(n);if(u&&XE(qo(u))){let p=Rr(n);if(p.contextFreeType)return p.contextFreeType;let h=rU(n,a),T=Am(void 0,void 0,void 0,Je,h,void 0,0,0),k=ls(n.symbol,q,[T],Je,Je);return k.objectFlags|=262144,p.contextFreeType=k}}return aa}return!AU(n)&&n.kind===215&&Yie(n),bZe(n,a),zn(fr(n))}function bZe(n,a){let c=Rr(n);if(!(c.flags&64)){let u=ED(n);if(!(c.flags&64)){c.flags|=64;let p=Sl(xa(zn(fr(n)),0));if(!p)return;if(Yf(n))if(u){let h=F1(n),T;if(a&&a&2){tZe(p,u,h);let k=AD(u);k&&k.flags&262144&&(T=Qx(u,h.nonFixingMapper))}T||(T=h?Qx(u,h.mapper):u),nZe(p,T)}else rZe(p);if(u&&!Wx(n)&&!p.resolvedReturnType){let h=rU(n,a);p.resolvedReturnType||(p.resolvedReturnType=h)}kD(n)}}}function EZe(n){L.assert(n.kind!==171||o_(n));let a=pl(n),c=Wx(n);if(pie(n,c),n.body)if(B_(n)||qo(rp(n)),n.body.kind===238)qa(n.body);else{let u=Yi(n.body),p=c&&pU(c,a);if(p)if((a&3)===2){let h=OD(u,!1,n.body,_.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member);Ly(h,p,n.body,n.body)}else Ly(u,p,n.body,n.body)}}function iU(n,a,c,u=!1){if(!to(a,Ja)){let p=u&&wD(a);return Tv(n,!!p&&to(p,Ja),c),!1}return!0}function TZe(n){if(!Pa(n)||!cS(n))return!1;let a=Ic(n.arguments[2]);if(Vc(a,\"value\")){let p=ja(a,\"writable\"),h=p&&zn(p);if(!h||h===Ke||h===oe)return!0;if(p&&p.valueDeclaration&&yl(p.valueDeclaration)){let T=p.valueDeclaration.initializer,k=Yi(T);if(k===Ke||k===oe)return!0}return!1}return!ja(a,\"set\")}function P_(n){return!!(ac(n)&8||n.flags&4&&bf(n)&64||n.flags&3&&WB(n)&2||n.flags&98304&&!(n.flags&65536)||n.flags&8||vt(n.declarations,TZe))}function LIe(n,a,c){var u,p;if(c===0)return!1;if(P_(a)){if(a.flags&4&&Us(n)&&n.expression.kind===108){let h=qd(n);if(!(h&&(h.kind===173||sp(h))))return!0;if(a.valueDeclaration){let T=ar(a.valueDeclaration),k=h.parent===a.valueDeclaration.parent,O=h===a.valueDeclaration.parent,H=T&&((u=a.parent)==null?void 0:u.valueDeclaration)===h.parent,J=T&&((p=a.parent)==null?void 0:p.valueDeclaration)===h;return!(k||O||H||J)}}return!0}if(Us(n)){let h=vs(n.expression);if(h.kind===79){let T=Rr(h).resolvedSymbol;if(T.flags&2097152){let k=Uu(T);return!!k&&k.kind===271}}}return!1}function ID(n,a,c){let u=ql(n,7);return u.kind!==79&&!Us(u)?(Fe(n,a),!1):u.flags&32?(Fe(n,c),!1):!0}function SZe(n){Yi(n.expression);let a=vs(n.expression);if(!Us(a))return Fe(a,_.The_operand_of_a_delete_operator_must_be_a_property_reference),Te;br(a)&&pi(a.name)&&Fe(a,_.The_operand_of_a_delete_operator_cannot_be_a_private_identifier);let c=Rr(a),u=ep(c.resolvedSymbol);return u&&(P_(u)&&Fe(a,_.The_operand_of_a_delete_operator_cannot_be_a_read_only_property),xZe(a,u)),Te}function xZe(n,a){let c=zn(a);U&&!(c.flags&131075)&&!(Pe?a.flags&16777216:iu(c)&16777216)&&Fe(n,_.The_operand_of_a_delete_operator_must_be_optional)}function AZe(n){return Yi(n.expression),cC}function CZe(n){return Yi(n.expression),je}function IZe(n){let a=R6(n);if(a&&oc(a))Fe(n,_.Await_expression_cannot_be_used_inside_a_class_static_block);else if(!(n.flags&32768))if(O6(n)){let c=Gn(n);if(!l0(c)){let u;if(!oS(c,Y)){u??(u=Pg(c,n.pos));let p=al(c,u.start,u.length,_.await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module);Lo.add(p)}switch(ie){case 100:case 199:if(c.impliedNodeFormat===1){u??(u=Pg(c,n.pos)),Lo.add(al(c,u.start,u.length,_.The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level));break}case 7:case 99:case 4:if(R>=4)break;default:u??(u=Pg(c,n.pos)),Lo.add(al(c,u.start,u.length,_.Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher));break}}}else{let c=Gn(n);if(!l0(c)){let u=Pg(c,n.pos),p=al(c,u.start,u.length,_.await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules);if(a&&a.kind!==173&&(pl(a)&2)===0){let h=hr(a,_.Did_you_mean_to_mark_this_function_as_async);Ao(p,h)}Lo.add(p)}}kre(n)&&Fe(n,_.await_expressions_cannot_be_used_in_a_parameter_initializer)}function LZe(n){i(()=>IZe(n));let a=Yi(n.expression),c=OD(a,!0,n,_.Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member);return c===a&&!Ro(c)&&!(a.flags&3)&&ey(!1,hr(n,_.await_has_no_effect_on_the_type_of_this_expression)),c}function kZe(n){let a=Yi(n.operand);if(a===Qe)return Qe;switch(n.operand.kind){case 8:switch(n.operator){case 40:return $x(ap(-n.operand.text));case 39:return $x(ap(+n.operand.text))}break;case 9:if(n.operator===40)return $x(aB({negative:!0,base10Value:aL(n.operand.text)}))}switch(n.operator){case 39:case 40:case 54:return op(a,n.operand),zM(a,12288)&&Fe(n.operand,_.The_0_operator_cannot_be_applied_to_type_symbol,Xa(n.operator)),n.operator===39?(zM(a,2112)&&Fe(n.operand,_.Operator_0_cannot_be_applied_to_type_1,Xa(n.operator),Ee(ky(a))),rt):mie(a);case 53:oA(n.operand);let c=iu(a)&12582912;return c===4194304?Ke:c===8388608?pe:Te;case 45:case 46:return iU(n.operand,op(a,n.operand),_.An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type)&&ID(n.operand,_.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access,_.The_operand_of_an_increment_or_decrement_operator_may_not_be_an_optional_property_access),mie(a)}return ve}function DZe(n){let a=Yi(n.operand);return a===Qe?Qe:(iU(n.operand,op(a,n.operand),_.An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type)&&ID(n.operand,_.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access,_.The_operand_of_an_increment_or_decrement_operator_may_not_be_an_optional_property_access),mie(a))}function mie(n){return Js(n,2112)?ul(n,3)||Js(n,296)?Ja:Ot:rt}function zM(n,a){if(Js(n,a))return!0;let c=Ty(n);return!!c&&Js(c,a)}function Js(n,a){if(n.flags&a)return!0;if(n.flags&3145728){let c=n.types;for(let u of c)if(Js(u,a))return!0}return!1}function ul(n,a,c){return n.flags&a?!0:c&&n.flags&114691?!1:!!(a&296)&&to(n,rt)||!!(a&2112)&&to(n,Ot)||!!(a&402653316)&&to(n,ae)||!!(a&528)&&to(n,Te)||!!(a&16384)&&to(n,yt)||!!(a&131072)&&to(n,lt)||!!(a&65536)&&to(n,ln)||!!(a&32768)&&to(n,Oe)||!!(a&4096)&&to(n,j)||!!(a&67108864)&&to(n,jr)}function JM(n,a,c){return n.flags&1048576?Ji(n.types,u=>JM(u,a,c)):ul(n,a,c)}function hie(n){return!!(Ur(n)&16)&&!!n.symbol&&gie(n.symbol)}function gie(n){return(n.flags&128)!==0}function wZe(n,a,c,u){return c===Qe||u===Qe?Qe:(!Zo(c)&&JM(c,134348796)&&Fe(n,_.The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter),Zo(u)||EU(u)||Iy(u,Hs)||Fe(a,_.The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type),Te)}function RZe(n){return yh(n,a=>a===xc||!!(a.flags&2097152)&&hh(Ty(a)))}function OZe(n,a,c,u){if(c===Qe||u===Qe)return Qe;if(pi(n)){if(R<99&&Hc(n,2097152),!Rr(n).resolvedSymbol&&Zc(n)){let p=Kre(n,u.symbol,!0);GCe(n,u,p)}}else wu(op(c,n),Kr,n);return wu(op(u,a),jr,a)&&RZe(u)&&Fe(a,_.Type_0_may_represent_a_primitive_value_which_is_not_permitted_as_the_right_operand_of_the_in_operator,Ee(u)),Te}function NZe(n,a,c){let u=n.properties;if(U&&u.length===0)return op(a,n);for(let p=0;p<u.length;p++)kIe(n,a,p,u,c);return a}function kIe(n,a,c,u,p=!1){let h=n.properties,T=h[c];if(T.kind===299||T.kind===300){let k=T.name,O=pg(k);if(fh(O)){let de=Np(O),Ae=ja(a,de);Ae&&(FM(Ae,T,p),Hre(T,!1,!0,a,Ae))}let H=od(a,O,32,k),J=Ue(T,H);return nT(T.kind===300?T:T.initializer,J)}else if(T.kind===301)if(c<h.length-1)Fe(T,_.A_rest_element_must_be_last_in_a_destructuring_pattern);else{R<99&&Hc(T,4);let k=[];if(u)for(let H of u)jS(H)||k.push(H.name);let O=Fx(a,k,a.symbol);return U1(u,_.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma),nT(T.expression,O)}else Fe(T,_.Property_assignment_expected)}function PZe(n,a,c){let u=n.elements;R<2&&Y.downlevelIteration&&Hc(n,512);let p=wy(193,a,Oe,n)||ve,h=Y.noUncheckedIndexedAccess?void 0:p;for(let T=0;T<u.length;T++){let k=p;n.elements[T].kind===227&&(k=h=h??(wy(65,a,Oe,n)||ve)),DIe(n,a,T,k,c)}return a}function DIe(n,a,c,u,p){let h=n.elements,T=h[c];if(T.kind!==229){if(T.kind!==227){let k=ap(c);if(Kv(a)){let O=32|(OC(T)?16:0),H=Ay(a,k,O,BM(T,k))||ve,J=OC(T)?Df(H,524288):H,de=Ue(T,J);return nT(T,de,p)}return nT(T,u,p)}if(c<h.length-1)Fe(T,_.A_rest_element_must_be_last_in_a_destructuring_pattern);else{let k=T.expression;if(k.kind===223&&k.operatorToken.kind===63)Fe(k.operatorToken,_.A_rest_element_cannot_have_an_initializer);else{U1(n.elements,_.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma);let O=Im(a,po)?Ls(a,H=>TC(H,c)):nu(u);return nT(k,O,p)}}}}function nT(n,a,c,u){let p;if(n.kind===300){let h=n;h.objectAssignmentInitializer&&(U&&!(iu(Yi(h.objectAssignmentInitializer))&16777216)&&(a=Df(a,524288)),BZe(h.name,h.equalsToken,h.objectAssignmentInitializer,c)),p=n.name}else p=n;return p.kind===223&&p.operatorToken.kind===63&&(Ce(p,c),p=p.left,U&&(a=Df(a,524288))),p.kind===207?NZe(p,a,u):p.kind===206?PZe(p,a,c):MZe(p,a,c)}function MZe(n,a,c){let u=Yi(n,c),p=n.parent.kind===301?_.The_target_of_an_object_rest_assignment_must_be_a_variable_or_a_property_access:_.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access,h=n.parent.kind===301?_.The_target_of_an_object_rest_assignment_may_not_be_an_optional_property_access:_.The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access;return ID(n,p,h)&&Ly(a,u,n,n),SA(n)&&Hc(n.parent,1048576),a}function KM(n){switch(n=vs(n),n.kind){case 79:case 10:case 13:case 212:case 225:case 14:case 8:case 9:case 110:case 95:case 104:case 155:case 215:case 228:case 216:case 206:case 207:case 218:case 232:case 282:case 281:return!0;case 224:return KM(n.whenTrue)&&KM(n.whenFalse);case 223:return Mg(n.operatorToken.kind)?!1:KM(n.left)&&KM(n.right);case 221:case 222:switch(n.operator){case 53:case 39:case 40:case 54:return!0}return!1;case 219:case 213:case 231:default:return!1}}function yie(n,a){return(a.flags&98304)!==0||_B(n,a)}function FZe(){let n=C3(a,c,u,p,h,T);return(Ae,xe)=>{let tt=n(Ae,xe);return L.assertIsDefined(tt),tt};function a(Ae,xe,tt){return xe?(xe.stackIndex++,xe.skip=!1,H(xe,void 0),de(xe,void 0)):xe={checkMode:tt,skip:!1,stackIndex:0,typeStack:[void 0,void 0]},Yn(Ae)&&sS(Ae)?(xe.skip=!0,de(xe,Yi(Ae.right,tt)),xe):(GZe(Ae),Ae.operatorToken.kind===63&&(Ae.left.kind===207||Ae.left.kind===206)&&(xe.skip=!0,de(xe,nT(Ae.left,Yi(Ae.right,tt),tt,Ae.right.kind===108))),xe)}function c(Ae,xe,tt){if(!xe.skip)return k(xe,Ae)}function u(Ae,xe,tt){if(!xe.skip){let It=J(xe);L.assertIsDefined(It),H(xe,It),de(xe,void 0);let Tn=Ae.kind;if(CR(Tn)){let un=tt.parent;for(;un.kind===214||IR(un);)un=un.parent;(Tn===55||FT(un))&&wie(tt.left,It,FT(un)?un.thenStatement:void 0),uLe(It,tt.left)}}}function p(Ae,xe,tt){if(!xe.skip)return k(xe,Ae)}function h(Ae,xe){let tt;if(xe.skip)tt=J(xe);else{let It=O(xe);L.assertIsDefined(It);let Tn=J(xe);L.assertIsDefined(Tn),tt=wIe(Ae.left,Ae.operatorToken,Ae.right,It,Tn,Ae)}return xe.skip=!1,H(xe,void 0),de(xe,void 0),xe.stackIndex--,tt}function T(Ae,xe,tt){return de(Ae,xe),Ae}function k(Ae,xe){if(ar(xe))return xe;de(Ae,Yi(xe,Ae.checkMode))}function O(Ae){return Ae.typeStack[Ae.stackIndex]}function H(Ae,xe){Ae.typeStack[Ae.stackIndex]=xe}function J(Ae){return Ae.typeStack[Ae.stackIndex+1]}function de(Ae,xe){Ae.typeStack[Ae.stackIndex+1]=xe}}function GZe(n){let{left:a,operatorToken:c,right:u}=n;c.kind===60&&(ar(a)&&(a.operatorToken.kind===56||a.operatorToken.kind===55)&&an(a,_._0_and_1_operations_cannot_be_mixed_without_parentheses,Xa(a.operatorToken.kind),Xa(c.kind)),ar(u)&&(u.operatorToken.kind===56||u.operatorToken.kind===55)&&an(u,_._0_and_1_operations_cannot_be_mixed_without_parentheses,Xa(u.operatorToken.kind),Xa(c.kind)))}function BZe(n,a,c,u,p){let h=a.kind;if(h===63&&(n.kind===207||n.kind===206))return nT(n,Yi(c,u),u,c.kind===108);let T;CR(h)?T=oA(n,u):T=Yi(n,u);let k=Yi(c,u);return wIe(n,a,c,T,k,p)}function wIe(n,a,c,u,p,h){let T=a.kind;switch(T){case 41:case 42:case 66:case 67:case 43:case 68:case 44:case 69:case 40:case 65:case 47:case 70:case 48:case 71:case 49:case 72:case 51:case 74:case 52:case 78:case 50:case 73:if(u===Qe||p===Qe)return Qe;u=op(u,n),p=op(p,c);let en;if(u.flags&528&&p.flags&528&&(en=de(a.kind))!==void 0)return Fe(h||a,_.The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead,Xa(a.kind),Xa(en)),rt;{let Jt=iU(n,u,_.The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type,!0),Cn=iU(c,p,_.The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type,!0),Rn;if(ul(u,3)&&ul(p,3)||!(Js(u,2112)||Js(p,2112)))Rn=rt;else if(k(u,p)){switch(T){case 49:case 72:It();break;case 42:case 67:R<3&&Fe(h,_.Exponentiation_cannot_be_performed_on_bigint_values_unless_the_target_option_is_set_to_es2016_or_later)}Rn=Ot}else It(k),Rn=ve;return Jt&&Cn&&Ae(Rn),Rn}case 39:case 64:if(u===Qe||p===Qe)return Qe;!ul(u,402653316)&&!ul(p,402653316)&&(u=op(u,n),p=op(p,c));let cn;return ul(u,296,!0)&&ul(p,296,!0)?cn=rt:ul(u,2112,!0)&&ul(p,2112,!0)?cn=Ot:ul(u,402653316,!0)||ul(p,402653316,!0)?cn=ae:(Zo(u)||Zo(p))&&(cn=Ro(u)||Ro(p)?ve:Se),cn&&!J(T)?cn:cn?(T===64&&Ae(cn),cn):(It((Cn,Rn)=>ul(Cn,402655727)&&ul(Rn,402655727)),Se);case 29:case 31:case 32:case 33:return J(T)&&(u=$ne(op(u,n)),p=$ne(op(p,c)),tt((Jt,Cn)=>{if(Zo(Jt)||Zo(Cn))return!0;let Rn=to(Jt,Ja),Br=to(Cn,Ja);return Rn&&Br||!Rn&&!Br&&pM(Jt,Cn)})),Te;case 34:case 35:case 36:case 37:if(Pj(n)||Pj(c)){let Jt=T===34||T===36;Fe(h,_.This_condition_will_always_return_0_since_JavaScript_compares_objects_by_reference_not_value,Jt?\"false\":\"true\")}return un(h,T,n,c),tt((Jt,Cn)=>yie(Jt,Cn)||yie(Cn,Jt)),Te;case 102:return wZe(n,c,u,p);case 101:return OZe(n,c,u,p);case 55:case 76:{let Jt=iu(u)&4194304?Gr([kXe(U?u:ky(p)),p]):u;return T===76&&Ae(p),Jt}case 56:case 75:{let Jt=iu(u)&8388608?Gr([yg(m2e(u)),p],2):u;return T===75&&Ae(p),Jt}case 60:case 77:{let Jt=iu(u)&262144?Gr([yg(u),p],2):u;return T===77&&Ae(p),Jt}case 63:let rr=ar(n.parent)?ic(n.parent):0;return O(rr,p),xe(rr)?((!(p.flags&524288)||rr!==2&&rr!==6&&!mh(p)&&!vre(p)&&!(Ur(p)&1))&&Ae(p),u):(Ae(p),p);case 27:if(!Y.allowUnreachableCode&&KM(n)&&!H(n.parent)){let Jt=Gn(n),Cn=Jt.text,Rn=xo(Cn,n.pos);Jt.parseDiagnostics.some(Hr=>Hr.code!==_.JSX_expressions_must_have_one_parent_element.code?!1:bj(Hr,Rn))||Fe(n,_.Left_side_of_comma_operator_is_unused_and_has_no_side_effects)}return p;default:return L.fail()}function k(en,cn){return ul(en,2112)&&ul(cn,2112)}function O(en,cn){if(en===2)for(let rr of Ey(cn)){let Jt=zn(rr);if(Jt.symbol&&Jt.symbol.flags&32){let Cn=rr.escapedName,Rn=zs(rr.valueDeclaration,Cn,788968,void 0,Cn,!1);Rn?.declarations&&Rn.declarations.some(Kz)&&(Mb(Rn,_.Duplicate_identifier_0,Gi(Cn),rr),Mb(rr,_.Duplicate_identifier_0,Gi(Cn),Rn))}}}function H(en){return en.parent.kind===214&&Uf(en.left)&&en.left.text===\"0\"&&(Pa(en.parent.parent)&&en.parent.parent.expression===en.parent||en.parent.parent.kind===212)&&(Us(en.right)||Re(en.right)&&en.right.escapedText===\"eval\")}function J(en){let cn=zM(u,12288)?n:zM(p,12288)?c:void 0;return cn?(Fe(cn,_.The_0_operator_cannot_be_applied_to_type_symbol,Xa(en)),!1):!0}function de(en){switch(en){case 51:case 74:return 56;case 52:case 78:return 37;case 50:case 73:return 55;default:return}}function Ae(en){Mg(T)&&i(cn);function cn(){if(ID(n,_.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access,_.The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access)){let rr;if(Pe&&br(n)&&Js(en,32768)){let Jt=Vc(au(n.expression),n.name.escapedText);mB(en,Jt)&&(rr=_.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target)}Ly(en,u,n,c,rr)}}}function xe(en){var cn;switch(en){case 2:return!0;case 1:case 5:case 6:case 3:case 4:let rr=vd(n),Jt=sS(c);return!!Jt&&rs(Jt)&&!!((cn=rr?.exports)!=null&&cn.size);default:return!1}}function tt(en){return en(u,p)?!1:(It(en),!0)}function It(en){let cn=!1,rr=h||a;if(en){let Hr=bg(u),qi=bg(p);cn=!(Hr===u&&qi===p)&&!!(Hr&&qi)&&en(Hr,qi)}let Jt=u,Cn=p;!cn&&en&&([Jt,Cn]=UZe(u,p,en));let[Rn,Br]=Wt(Jt,Cn);Tn(rr,cn,Rn,Br)||Tv(rr,cn,_.Operator_0_cannot_be_applied_to_types_1_and_2,Xa(a.kind),Rn,Br)}function Tn(en,cn,rr,Jt){switch(a.kind){case 36:case 34:case 37:case 35:return Tv(en,cn,_.This_comparison_appears_to_be_unintentional_because_the_types_0_and_1_have_no_overlap,rr,Jt);default:return}}function un(en,cn,rr,Jt){let Cn=Nn(vs(rr)),Rn=Nn(vs(Jt));if(Cn||Rn){let Br=Fe(en,_.This_condition_will_always_return_0,Xa(cn===36||cn===34?95:110));if(Cn&&Rn)return;let Hr=cn===37||cn===35?Xa(53):\"\",qi=Cn?Jt:rr,wa=vs(qi);Ao(Br,hr(qi,_.Did_you_mean_0,`${Hr}Number.isNaN(${bc(wa)?Kd(wa):\"...\"})`))}}function Nn(en){if(Re(en)&&en.escapedText===\"NaN\"){let cn=PKe();return!!cn&&cn===$f(en)}return!1}}function UZe(n,a,c){let u=n,p=a,h=ky(n),T=ky(a);return c(h,T)||(u=h,p=T),[u,p]}function VZe(n){i(Ae);let a=qd(n);if(!a)return Se;let c=pl(a);if(!(c&1))return Se;let u=(c&2)!==0;n.asteriskToken&&(u&&R<99&&Hc(n,26624),!u&&R<2&&Y.downlevelIteration&&Hc(n,256));let p=Wx(a),h=p&&bLe(p,u),T=h&&h.yieldType||Se,k=h&&h.nextType||Se,O=u?rT(k)||Se:k,H=n.expression?Yi(n.expression):je,J=TIe(n,H,O,u);if(p&&J&&Ly(J,T,n.expression||n,n.expression),n.asteriskToken)return Oie(u?19:17,1,H,n.expression)||Se;if(p)return c0(2,p,u)||Se;let de=cCe(2,a);return de||(de=Se,i(()=>{if(ge&&!Ble(n)){let xe=Ru(n,void 0);(!xe||Zo(xe))&&Fe(n,_.yield_expression_implicitly_results_in_an_any_type_because_its_containing_generator_lacks_a_return_type_annotation)}})),de;function Ae(){n.flags&8192||dl(n,_.A_yield_expression_is_only_allowed_in_a_generator_body),kre(n)&&Fe(n,_.yield_expressions_cannot_be_used_in_a_parameter_initializer)}}function jZe(n,a){let c=oA(n.condition);wie(n.condition,c,n.whenTrue);let u=Yi(n.whenTrue,a),p=Yi(n.whenFalse,a);return Gr([u,p],2)}function RIe(n){let a=n.parent;return ud(a)&&RIe(a)||Vs(a)&&a.argumentExpression===n}function HZe(n){let a=[n.head.text],c=[];for(let u of n.templateSpans){let p=Yi(u.expression);zM(p,12288)&&Fe(u.expression,_.Implicit_conversion_of_a_symbol_to_a_string_will_fail_at_runtime_Consider_wrapping_this_expression_in_String),a.push(u.literal.text),c.push(to(p,Za)?p:ae)}return BC(n)||RIe(n)||yh(Ru(n,void 0)||ue,WZe)?WE(a,c):ae}function WZe(n){return!!(n.flags&134217856||n.flags&58982400&&Js(bu(n)||ue,402653316))}function zZe(n){return K0(n)&&!GS(n.parent)?n.parent.parent:n}function iA(n,a,c,u){let p=zZe(n);RM(p,a,!1),h$e(p,c);let h=Yi(n,u|1|(c?2:0));c&&c.intraExpressionInferenceSites&&(c.intraExpressionInferenceSites=void 0);let T=Js(h,2944)&&aU(h,BB(a,n,void 0))?Hu(h):h;return g$e(),bD(),T}function Ic(n,a){if(a)return Yi(n,a);let c=Rr(n);if(!c.resolvedType){let u=sn,p=ra;sn=Dn,ra=void 0,c.resolvedType=Yi(n,a),ra=p,sn=u}return c.resolvedType}function OIe(n){return n=vs(n,!0),n.kind===213||n.kind===231||OL(n)}function LD(n,a,c){let u=$w(n);if(Yn(n)){let h=T4(n);if(h)return cie(u,h,a)}let p=Eie(u)||(c?iA(u,c,void 0,a||0):Ic(u,a));return ha(n)&&n.name.kind===204&&po(p)&&!p.target.hasRestElement&&Vv(p)<n.name.elements.length?JZe(p,n.name):p}function JZe(n,a){let c=a.elements,u=Ko(n).slice(),p=n.target.elementFlags.slice();for(let h=Vv(n);h<c.length;h++){let T=c[h];(h<c.length-1||!(T.kind===205&&T.dotDotDotToken))&&(u.push(!ol(T)&&OC(T)?hy(T,!1,!1):Se),p.push(2),!ol(T)&&!OC(T)&&qv(T,Se))}return ip(u,p,n.target.readonly)}function vie(n,a){let c=F_(n)&2||x6(n)?a:i0(a);if(Yn(n)){if(u2e(c))return qv(n,Se),Se;if(bB(c))return qv(n,Et),Et}return c}function aU(n,a){if(a){if(a.flags&3145728){let c=a.types;return vt(c,u=>aU(n,u))}if(a.flags&58982400){let c=bu(a)||ue;return Js(c,4)&&Js(n,128)||Js(c,8)&&Js(n,256)||Js(c,64)&&Js(n,2048)||Js(c,4096)&&Js(n,8192)||aU(n,c)}return!!(a.flags&406847616&&Js(n,128)||a.flags&256&&Js(n,256)||a.flags&2048&&Js(n,2048)||a.flags&512&&Js(n,512)||a.flags&8192&&Js(n,8192))}return!1}function BC(n){let a=n.parent;return mT(a)&&Ch(a.type)||OL(a)&&Ch(T3(a))||sie(n)&&KZe(n)||(ud(a)||fu(a)||Km(a))&&BC(a)||(yl(a)||Sf(a)||AL(a))&&BC(a.parent)}function KZe(n){let a=Ru(n,0);return!!a&&yh(a,nM)}function UC(n,a,c){let u=Yi(n,a,c);return BC(n)||Zse(n)?Hu(u):OIe(n)?u:Qne(u,BB(Ru(n,void 0),n,void 0))}function NIe(n,a){return n.name.kind===164&&vg(n.name),UC(n.initializer,a)}function PIe(n,a){cke(n),n.name.kind===164&&vg(n.name);let c=IIe(n,a);return MIe(n,c,a)}function MIe(n,a,c){if(c&&c&10){let u=TD(a,0,!0),p=TD(a,1,!0),h=u||p;if(h&&h.typeParameters){let T=o0(n,2);if(T){let k=TD(yg(T),u?0:1,!1);if(k&&!k.typeParameters){if(c&8)return FIe(n,c),aa;let O=F1(n),H=O.signature&&qo(O.signature),J=H&&KCe(H);if(J&&!J.typeParameters&&!Ji(O.inferences,aA)){let de=$Ze(O,h.typeParameters),Ae=ine(h,de),xe=on(O.inferences,tt=>ore(tt.typeParameter));if(rre(Ae,k,(tt,It)=>{gh(xe,tt,It,0,!0)}),vt(xe,aA)&&(ire(Ae,k,(tt,It)=>{gh(xe,tt,It)}),!XZe(O.inferences,xe)))return YZe(O.inferences,xe),O.inferredTypeParameters=Qi(O.inferredTypeParameters,de),HE(Ae)}return HE(qCe(h,k,O))}}}}return a}function FIe(n,a){if(a&2){let c=F1(n);c.flags|=4}}function aA(n){return!!(n.candidates||n.contraCandidates)}function qZe(n){return!!(n.candidates||n.contraCandidates||Rxe(n.typeParameter))}function XZe(n,a){for(let c=0;c<n.length;c++)if(aA(n[c])&&aA(a[c]))return!0;return!1}function YZe(n,a){for(let c=0;c<n.length;c++)!aA(n[c])&&aA(a[c])&&(n[c]=a[c])}function $Ze(n,a){let c=[],u,p;for(let h of a){let T=h.symbol.escapedName;if(bie(n.inferredTypeParameters,T)||bie(c,T)){let k=QZe(Qi(n.inferredTypeParameters,c),T),O=wo(262144,k),H=rd(O);H.target=h,u=Sn(u,h),p=Sn(p,H),c.push(H)}else c.push(h)}if(p){let h=Wu(u,p);for(let T of p)T.mapper=h}return c}function bie(n,a){return vt(n,c=>c.symbol.escapedName===a)}function QZe(n,a){let c=a.length;for(;c>1&&a.charCodeAt(c-1)>=48&&a.charCodeAt(c-1)<=57;)c--;let u=a.slice(0,c);for(let p=1;;p++){let h=u+p;if(!bie(n,h))return h}}function GIe(n){let a=G1(n);if(a&&!a.typeParameters)return qo(a)}function ZZe(n){let a=Yi(n.expression),c=fD(a,n.expression),u=GIe(a);return u&&SB(u,n,c!==a)}function au(n){let a=Eie(n);if(a)return a;if(n.flags&134217728&&ra){let p=ra[zo(n)];if(p)return p}let c=Vn,u=Yi(n);if(Vn!==c){let p=ra||(ra=[]);p[zo(n)]=u,Gle(n,n.flags|134217728)}return u}function Eie(n){let a=vs(n,!0);if(OL(a)){let c=T3(a);if(!Ch(c))return $r(c)}if(a=vs(n),b2(a)){let c=Eie(a.expression);return c?rT(c):void 0}if(Pa(a)&&a.expression.kind!==106&&!qu(a,!0)&&!sIe(a))return fT(a)?ZZe(a):GIe(PC(a.expression));if(mT(a)&&!Ch(a.type))return $r(a.type);if(_T(n)||ose(n))return Yi(n)}function qM(n){let a=Rr(n);if(a.contextFreeType)return a.contextFreeType;RM(n,Se,!1);let c=a.contextFreeType=Yi(n,4);return bD(),c}function Yi(n,a,c){var u,p;(u=ai)==null||u.push(ai.Phase.Check,\"checkExpression\",{kind:n.kind,pos:n.pos,end:n.end,path:n.tracingPath});let h=P;P=n,A=0;let T=net(n,a,c),k=MIe(n,T,a);return hie(k)&&eet(n,k),P=h,(p=ai)==null||p.pop(),k}function eet(n,a){n.parent.kind===208&&n.parent.expression===n||n.parent.kind===209&&n.parent.expression===n||(n.kind===79||n.kind===163)&&vU(n)||n.parent.kind===183&&n.parent.exprName===n||n.parent.kind===278||Fe(n,_.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment_or_type_query),u_(Y)&&(L.assert(!!(a.symbol.flags&128)),a.symbol.valueDeclaration.flags&16777216&&Fe(n,_.Cannot_access_ambient_const_enums_when_0_is_enabled,Rt))}function tet(n,a){if(Jd(n)){if(zW(n))return cie(n.expression,JW(n),a);if(OL(n)){let c=T3(n);return fIe(c,c,n.expression,a)}}return Yi(n.expression,a)}function net(n,a,c){let u=n.kind;if(o)switch(u){case 228:case 215:case 216:o.throwIfCancellationRequested()}switch(u){case 79:return BYe(n,a);case 80:return Z$e(n);case 108:return DM(n);case 106:return Ire(n);case 104:return ir;case 14:case 10:return $x(df(n.text));case 8:return eae(n),$x(ap(+n.text));case 9:return iit(n),$x(aB({negative:!1,base10Value:aL(n.text)}));case 110:return pe;case 95:return Ke;case 225:return HZe(n);case 13:return tf;case 206:return gCe(n,a,c);case 207:return O$e(n,a);case 208:return RCe(n,a);case 163:return OCe(n,a);case 209:return mQe(n,a);case 210:if(n.expression.kind===100)return zQe(n);case 211:return WQe(n,a);case 212:return JQe(n);case 214:return tet(n,a);case 228:return Wtt(n);case 215:case 216:return IIe(n,a);case 218:return AZe(n);case 213:case 231:return KQe(n);case 232:return XQe(n);case 230:return _Ie(n);case 235:return YQe(n);case 233:return $Qe(n);case 217:return SZe(n);case 219:return CZe(n);case 220:return LZe(n);case 221:return kZe(n);case 222:return DZe(n);case 223:return Ce(n,a);case 224:return jZe(n,a);case 227:return L$e(n,a);case 229:return je;case 226:return VZe(n);case 234:return k$e(n);case 291:return J$e(n,a);case 281:return F$e(n,a);case 282:return P$e(n,a);case 285:return G$e(n);case 289:return U$e(n,a);case 283:L.fail(\"Shouldn't ever directly check a JsxOpeningElement\")}return ve}function BIe(n){km(n),n.expression&&dl(n.expression,_.Type_expected),qa(n.constraint),qa(n.default);let a=UE(fr(n));bu(a),WJe(a)||Fe(n.default,_.Type_parameter_0_has_a_circular_default,Ee(a));let c=eu(a),u=jE(a);c&&u&&wu(u,lf(Oi(c,n0(a,u)),u),n.default,_.Type_0_does_not_satisfy_the_constraint_1),JC(n),i(()=>WC(n.name,_.Type_parameter_name_cannot_be_0))}function ret(n){var a,c;if(ku(n.parent)||Yr(n.parent)||Ep(n.parent)){let u=UE(fr(n)),p=Jne(u)&98304;if(p){let h=fr(n.parent);if(Ep(n.parent)&&!(Ur(gs(h))&48))Fe(n,_.Variance_annotations_are_only_supported_in_type_aliases_for_object_function_constructor_and_mapped_types);else if(p===32768||p===65536){(a=ai)==null||a.push(ai.Phase.CheckTypes,\"checkTypeParameterDeferred\",{parent:ru(gs(h)),id:ru(u)});let T=gM(h,u,p===65536?qs:ss),k=gM(h,u,p===65536?ss:qs),O=u;F=u,wu(T,k,n,_.Type_0_is_not_assignable_to_type_1_as_implied_by_variance_annotation),F=O,(c=ai)==null||c.pop()}}}}function UIe(n){km(n),e8(n);let a=qd(n);Mr(n,16476)&&(a.kind===173&&Nf(a.body)||Fe(n,_.A_parameter_property_is_only_allowed_in_a_constructor_implementation),a.kind===173&&Re(n.name)&&n.name.escapedText===\"constructor\"&&Fe(n.name,_.constructor_cannot_be_used_as_a_parameter_property_name)),!n.initializer&&WW(n)&&La(n.name)&&a.body&&Fe(n,_.A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature),n.name&&Re(n.name)&&(n.name.escapedText===\"this\"||n.name.escapedText===\"new\")&&(a.parameters.indexOf(n)!==0&&Fe(n,_.A_0_parameter_must_be_the_first_parameter,n.name.escapedText),(a.kind===173||a.kind===177||a.kind===182)&&Fe(n,_.A_constructor_cannot_have_a_this_parameter),a.kind===216&&Fe(n,_.An_arrow_function_cannot_have_a_this_parameter),(a.kind===174||a.kind===175)&&Fe(n,_.get_and_set_accessors_cannot_declare_this_parameters)),n.dotDotDotToken&&!La(n.name)&&!to(R_(zn(n.symbol)),Ri)&&Fe(n,_.A_rest_parameter_must_be_of_an_array_type)}function iet(n){let a=aet(n);if(!a){Fe(n,_.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods);return}let c=rp(a),u=If(c);if(!u)return;qa(n.type);let{parameterName:p}=n;if(u.kind===0||u.kind===2)oB(p);else if(u.parameterIndex>=0){if(Xl(c)&&u.parameterIndex===c.parameters.length-1)Fe(p,_.A_type_predicate_cannot_reference_a_rest_parameter);else if(u.type){let h=()=>da(void 0,_.A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type);wu(u.type,zn(c.parameters[u.parameterIndex]),n.type,void 0,h)}}else if(p){let h=!1;for(let{name:T}of a.parameters)if(La(T)&&VIe(T,p,u.parameterName)){h=!0;break}h||Fe(n.parameterName,_.Cannot_find_parameter_0,u.parameterName)}}function aet(n){switch(n.parent.kind){case 216:case 176:case 259:case 215:case 181:case 171:case 170:let a=n.parent;if(n===a.type)return a}}function VIe(n,a,c){for(let u of n.elements){if(ol(u))continue;let p=u.name;if(p.kind===79&&p.escapedText===c)return Fe(a,_.A_type_predicate_cannot_reference_element_0_in_a_binding_pattern,c),!0;if((p.kind===204||p.kind===203)&&VIe(p,a,c))return!0}}function kD(n){n.kind===178?wrt(n):(n.kind===181||n.kind===259||n.kind===182||n.kind===176||n.kind===173||n.kind===177)&&AU(n);let a=pl(n);a&4||((a&3)===3&&R<99&&Hc(n,6144),(a&3)===2&&R<4&&Hc(n,64),(a&3)!==0&&R<2&&Hc(n,128)),n8(jy(n)),Vtt(n),mn(n.parameters,UIe),n.type&&qa(n.type),i(c);function c(){itt(n);let u=B_(n);if(ge&&!u)switch(n.kind){case 177:Fe(n,_.Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type);break;case 176:Fe(n,_.Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type);break}if(u){let p=pl(n);if((p&5)===1){let h=$r(u);if(h===yt)Fe(u,_.A_generator_cannot_have_a_void_type_annotation);else{let T=c0(0,h,(p&2)!==0)||Se,k=c0(1,h,(p&2)!==0)||T,O=c0(2,h,(p&2)!==0)||ue,H=EIe(T,k,O,!!(p&2));wu(H,h,u)}}else(p&3)===2&&Get(n,u)}n.kind!==178&&n.kind!==320&&Dy(n)}}function oet(n){let a=new Map,c=new Map,u=new Map;for(let h of n.members)if(h.kind===173)for(let T of h.parameters)Ad(T,h)&&!La(T.name)&&p(a,T.name,T.name.escapedText,3);else{let T=Ca(h),k=h.name;if(!k)continue;let O=pi(k),H=O&&T?16:0,J=O?u:T?c:a,de=k&&M0(k);if(de)switch(h.kind){case 174:p(J,k,de,1|H);break;case 175:p(J,k,de,2|H);break;case 169:p(J,k,de,3|H);break;case 171:p(J,k,de,8|H);break}}function p(h,T,k,O){let H=h.get(k);if(H)if((H&16)!==(O&16))Fe(T,_.Duplicate_identifier_0_Static_and_instance_elements_cannot_share_the_same_private_name,Qc(T));else{let J=!!(H&8),de=!!(O&8);J||de?J!==de&&Fe(T,_.Duplicate_identifier_0,Qc(T)):H&O&-17?Fe(T,_.Duplicate_identifier_0,Qc(T)):h.set(k,H|O)}else h.set(k,O)}}function set(n){for(let a of n.members){let c=a.name;if(Ca(a)&&c){let p=M0(c);switch(p){case\"name\":case\"length\":case\"caller\":case\"arguments\":case\"prototype\":let h=_.Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1,T=_y(fr(n));Fe(c,h,p,T);break}}}}function jIe(n){let a=new Map;for(let c of n.members)if(c.kind===168){let u,p=c.name;switch(p.kind){case 10:case 8:u=p.text;break;case 79:u=vr(p);break;default:continue}a.get(u)?(Fe(sa(c.symbol.valueDeclaration),_.Duplicate_identifier_0,u),Fe(c.name,_.Duplicate_identifier_0,u)):a.set(u,!0)}}function Tie(n){if(n.kind===261){let c=fr(n);if(c.declarations&&c.declarations.length>0&&c.declarations[0]!==n)return}let a=Uxe(fr(n));if(a?.declarations){let c=new Map;for(let u of a.declarations)u.parameters.length===1&&u.parameters[0].type&&QE($r(u.parameters[0].type),p=>{let h=c.get(ru(p));h?h.declarations.push(u):c.set(ru(p),{type:p,declarations:[u]})});c.forEach(u=>{if(u.declarations.length>1)for(let p of u.declarations)Fe(p,_.Duplicate_index_signature_for_type_0,Ee(u.type))})}}function HIe(n){!km(n)&&!Zrt(n)&&CU(n.name),e8(n),Sie(n),Mr(n,256)&&n.kind===169&&n.initializer&&Fe(n,_.Property_0_cannot_have_an_initializer_because_it_is_marked_abstract,os(n.name))}function cet(n){return pi(n.name)&&Fe(n,_.Private_identifiers_are_not_allowed_outside_class_bodies),HIe(n)}function uet(n){cke(n)||CU(n.name),Nc(n)&&n.asteriskToken&&Re(n.name)&&vr(n.name)===\"constructor\"&&Fe(n.name,_.Class_constructor_may_not_be_a_generator),nLe(n),Mr(n,256)&&n.kind===171&&n.body&&Fe(n,_.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract,os(n.name)),pi(n.name)&&!Zc(n)&&Fe(n,_.Private_identifiers_are_not_allowed_outside_class_bodies),Sie(n)}function Sie(n){if(pi(n.name)&&R<99){for(let a=tm(n);a;a=tm(a))Rr(a).flags|=4194304;if(_u(n.parent)){let a=xre(n.parent);a&&(Rr(n.name).flags|=32768,Rr(a).flags|=4096)}}}function det(n){km(n),pa(n,qa)}function fet(n){kD(n),$rt(n)||Qrt(n),qa(n.body);let a=fr(n),c=nc(a,n.kind);if(n===c&&cU(a),rc(n.body))return;i(p);return;function u(h){return xu(h)?!0:h.kind===169&&!Ca(h)&&!!h.initializer}function p(){let h=n.parent;if(P0(h)){Are(n.parent,h);let T=nCe(h),k=tCe(n.body);if(k){if(T&&Fe(k,_.A_constructor_cannot_contain_a_super_call_when_its_class_extends_null),(Do(Y)!==99||!fe)&&(vt(n.parent.members,u)||vt(n.parameters,H=>Mr(H,16476))))if(!_et(k,n.body))Fe(k,_.A_super_call_must_be_a_root_level_statement_within_a_constructor_of_a_derived_class_that_contains_initialized_properties_parameter_properties_or_private_identifiers);else{let H;for(let J of n.body.statements){if(Ol(J)&&NA(ql(J.expression))){H=J;break}if(WIe(J))break}H===void 0&&Fe(n,_.A_super_call_must_be_the_first_statement_in_the_constructor_to_refer_to_super_or_this_when_a_derived_class_contains_initialized_properties_parameter_properties_or_private_identifiers)}}else T||Fe(n,_.Constructors_for_derived_classes_must_contain_a_super_call)}}}function _et(n,a){let c=qy(n.parent);return Ol(c)&&c.parent===a}function WIe(n){return n.kind===106||n.kind===108?!0:ace(n)?!1:!!pa(n,WIe)}function zIe(n){Re(n.name)&&vr(n.name)===\"constructor\"&&Fe(n.name,_.Class_constructor_may_not_be_an_accessor),i(a),qa(n.body),Sie(n);function a(){if(!AU(n)&&!Urt(n)&&CU(n.name),YM(n),kD(n),n.kind===174&&!(n.flags&16777216)&&Nf(n.body)&&n.flags&256&&(n.flags&512||Fe(n.name,_.A_get_accessor_must_return_a_value)),n.name.kind===164&&vg(n.name),Vx(n)){let u=fr(n),p=nc(u,174),h=nc(u,175);if(p&&h&&!(cA(p)&1)){Rr(p).flags|=1;let T=uu(p),k=uu(h);(T&256)!==(k&256)&&(Fe(p.name,_.Accessors_must_both_be_abstract_or_non_abstract),Fe(h.name,_.Accessors_must_both_be_abstract_or_non_abstract)),(T&16&&!(k&24)||T&8&&!(k&8))&&(Fe(p.name,_.A_get_accessor_must_be_at_least_as_accessible_as_the_setter),Fe(h.name,_.A_get_accessor_must_be_at_least_as_accessible_as_the_setter));let O=te(p),H=te(h);O&&H&&wu(O,H,p,_.The_return_type_of_a_get_accessor_must_be_assignable_to_its_set_accessor_type)}}let c=Tr(fr(n));n.kind===174&&pie(n,c)}}function pet(n){YM(n)}function met(n,a,c){return n.typeArguments&&c<n.typeArguments.length?$r(n.typeArguments[c]):oU(n,a)[c]}function oU(n,a){return Sy(on(n.typeArguments,$r),a,Mp(a),Yn(n))}function JIe(n,a){let c,u,p=!0;for(let h=0;h<a.length;h++){let T=eu(a[h]);T&&(c||(c=oU(n,a),u=Wu(a,c)),p=p&&wu(c[h],Oi(T,u),n.typeArguments[h],_.Type_0_does_not_satisfy_the_constraint_1))}return p}function het(n,a){if(!Ro(n))return a.flags&524288&&Ai(a).typeParameters||(Ur(n)&4?n.target.localTypeParameters:void 0)}function xie(n){let a=$r(n);if(!Ro(a)){let c=Rr(n).resolvedSymbol;if(c)return het(a,c)}}function Aie(n){if(o8(n,n.typeArguments),n.kind===180&&!Yn(n)&&!Xw(n)&&n.typeArguments&&n.typeName.end!==n.typeArguments.pos){let a=Gn(n);Xse(a,n.typeName.end)===24&&u0(n,xo(a.text,n.typeName.end),1,_.JSDoc_types_can_only_be_used_inside_documentation_comments)}mn(n.typeArguments,qa),KIe(n)}function KIe(n){let a=$r(n);if(!Ro(a)){n.typeArguments&&i(()=>{let u=xie(n);u&&JIe(n,u)});let c=Rr(n).resolvedSymbol;c&&vt(c.declarations,u=>s2(u)&&!!(u.flags&268435456))&&Xh(UM(n),c.declarations,c.escapedName)}}function get(n){let a=zr(n.parent,_6);if(!a)return;let c=xie(a);if(!c)return;let u=eu(c[a.typeArguments.indexOf(n)]);return u&&Oi(u,Wu(c,oU(a,c)))}function yet(n){$xe(n)}function vet(n){mn(n.members,qa),i(a);function a(){let c=GAe(n);mU(c,c.symbol),Tie(n),jIe(n)}}function bet(n){qa(n.elementType)}function Eet(n){let a=n.elements,c=!1,u=!1,p=vt(a,EL);for(let h of a){if(h.kind!==199&&p){an(h,_.Tuple_members_must_all_have_names_or_all_not_have_names);break}let T=hne(h);if(T&8){let k=$r(h.type);if(!Kv(k)){Fe(h,_.A_rest_element_type_must_be_an_array_type);break}(ff(k)||po(k)&&k.target.combinedFlags&4)&&(u=!0)}else if(T&4){if(u){an(h,_.A_rest_element_cannot_follow_another_rest_element);break}u=!0}else if(T&2){if(u){an(h,_.An_optional_element_cannot_follow_a_rest_element);break}c=!0}else if(c){an(h,_.A_required_element_cannot_follow_an_optional_element);break}}mn(n.elements,qa),$r(n)}function Tet(n){mn(n.types,qa),$r(n)}function qIe(n,a){if(!(n.flags&8388608))return n;let c=n.objectType,u=n.indexType;if(to(u,Gp(c,!1)))return a.kind===209&&Um(a)&&Ur(c)&32&&Pp(c)&1&&Fe(a,_.Index_signature_in_type_0_only_permits_reading,Ee(c)),n;let p=Eu(c);if(Cm(p,rt)&&ul(u,296))return n;if(Zb(c)){let h=eB(u,a);if(h){let T=QE(p,k=>ja(k,h));if(T&&bf(T)&24)return Fe(a,_.Private_or_protected_member_0_cannot_be_accessed_on_a_type_parameter,Gi(h)),ve}}return Fe(a,_.Type_0_cannot_be_used_to_index_type_1,Ee(u),Ee(c)),ve}function xet(n){qa(n.objectType),qa(n.indexType),qIe(RAe(n),n)}function Aet(n){Cet(n),qa(n.typeParameter),qa(n.nameType),qa(n.type),n.type||qv(n,Se);let a=Cne(n),c=by(a);if(c)wu(c,Si,n.nameType);else{let u=np(a);wu(u,Si,TA(n.typeParameter))}}function Cet(n){var a;if((a=n.members)!=null&&a.length)return an(n.members[0],_.A_mapped_type_may_not_declare_properties_or_methods)}function Iet(n){oB(n)}function Let(n){jrt(n),qa(n.type)}function ket(n){pa(n,qa)}function Det(n){jn(n,c=>c.parent&&c.parent.kind===191&&c.parent.extendsType===c)||an(n,_.infer_declarations_are_only_permitted_in_the_extends_clause_of_a_conditional_type),qa(n.typeParameter);let a=fr(n.typeParameter);if(a.declarations&&a.declarations.length>1){let c=Ai(a);if(!c.typeParametersChecked){c.typeParametersChecked=!0;let u=UE(a),p=Ase(a,165);if(!xLe(p,[u],h=>[h])){let h=E(a);for(let T of p)Fe(T.name,_.All_declarations_of_0_must_have_identical_constraints,h)}}}Dy(n)}function wet(n){for(let a of n.templateSpans){qa(a.type);let c=$r(a.type);wu(c,Za,a.type)}$r(n)}function Ret(n){qa(n.argument),n.assertions&&XS(n.assertions.assertClause,an)&&(SR()||an(n.assertions.assertClause,_.resolution_mode_assertions_are_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next),$s(Y)!==3&&$s(Y)!==99&&an(n.assertions.assertClause,_.resolution_mode_assertions_are_only_supported_when_moduleResolution_is_node16_or_nodenext)),KIe(n)}function Oet(n){n.dotDotDotToken&&n.questionToken&&an(n,_.A_tuple_member_cannot_be_both_optional_and_rest),n.type.kind===187&&an(n.type,_.A_labeled_tuple_element_is_declared_as_optional_with_a_question_mark_after_the_name_and_before_the_colon_rather_than_after_the_type),n.type.kind===188&&an(n.type,_.A_labeled_tuple_element_is_declared_as_rest_with_a_before_the_name_rather_than_before_the_type),qa(n.type),$r(n)}function XM(n){return(cd(n,8)||xu(n))&&!!(n.flags&16777216)}function sU(n,a){let c=wg(n);return n.parent.kind!==261&&n.parent.kind!==260&&n.parent.kind!==228&&n.flags&16777216&&(!(c&2)&&!(Tp(n.parent)&&Tc(n.parent.parent)&&mp(n.parent.parent))&&(c|=1),c|=2),c&a}function cU(n){i(()=>Net(n))}function Net(n){function a(cn,rr){return rr!==void 0&&rr.parent===cn[0].parent?rr:cn[0]}function c(cn,rr,Jt,Cn,Rn){if((Cn^Rn)!==0){let Hr=sU(a(cn,rr),Jt);mn(cn,qi=>{let wa=sU(qi,Jt)^Hr;wa&1?Fe(sa(qi),_.Overload_signatures_must_all_be_exported_or_non_exported):wa&2?Fe(sa(qi),_.Overload_signatures_must_all_be_ambient_or_non_ambient):wa&24?Fe(sa(qi)||qi,_.Overload_signatures_must_all_be_public_private_or_protected):wa&256&&Fe(sa(qi),_.Overload_signatures_must_all_be_abstract_or_non_abstract)})}}function u(cn,rr,Jt,Cn){if(Jt!==Cn){let Rn=dS(a(cn,rr));mn(cn,Br=>{dS(Br)!==Rn&&Fe(sa(Br),_.Overload_signatures_must_all_be_optional_or_required)})}}let p=283,h=0,T=p,k=!1,O=!0,H=!1,J,de,Ae,xe=n.declarations,tt=(n.flags&16384)!==0;function It(cn){if(cn.name&&rc(cn.name))return;let rr=!1,Jt=pa(cn.parent,Rn=>{if(rr)return Rn;rr=Rn===cn});if(Jt&&Jt.pos===cn.end&&Jt.kind===cn.kind){let Rn=Jt.name||Jt,Br=Jt.name;if(cn.name&&Br&&(pi(cn.name)&&pi(Br)&&cn.name.escapedText===Br.escapedText||ts(cn.name)&&ts(Br)||s_(cn.name)&&s_(Br)&&FI(cn.name)===FI(Br))){if((cn.kind===171||cn.kind===170)&&Ca(cn)!==Ca(Jt)){let qi=Ca(cn)?_.Function_overload_must_be_static:_.Function_overload_must_not_be_static;Fe(Rn,qi)}return}if(Nf(Jt.body)){Fe(Rn,_.Function_implementation_name_must_be_0,os(cn.name));return}}let Cn=cn.name||cn;tt?Fe(Cn,_.Constructor_implementation_is_missing):Mr(cn,256)?Fe(Cn,_.All_declarations_of_an_abstract_method_must_be_consecutive):Fe(Cn,_.Function_implementation_is_missing_or_not_immediately_following_the_declaration)}let Tn=!1,un=!1,Nn=!1,en=[];if(xe)for(let cn of xe){let rr=cn,Jt=rr.flags&16777216,Cn=rr.parent&&(rr.parent.kind===261||rr.parent.kind===184)||Jt;if(Cn&&(Ae=void 0),(rr.kind===260||rr.kind===228)&&!Jt&&(Nn=!0),rr.kind===259||rr.kind===171||rr.kind===170||rr.kind===173){en.push(rr);let Rn=sU(rr,p);h|=Rn,T&=Rn,k=k||dS(rr),O=O&&dS(rr);let Br=Nf(rr.body);Br&&J?tt?un=!0:Tn=!0:Ae?.parent===rr.parent&&Ae.end!==rr.pos&&It(Ae),Br?J||(J=rr):H=!0,Ae=rr,Cn||(de=rr)}if(Yn(cn)&&Ia(cn)&&cn.jsDoc){for(let Rn of cn.jsDoc)if(Rn.tags)for(let Br of Rn.tags)DL(Br)&&(H=!0)}}if(un&&mn(en,cn=>{Fe(cn,_.Multiple_constructor_implementations_are_not_allowed)}),Tn&&mn(en,cn=>{Fe(sa(cn)||cn,_.Duplicate_function_implementation)}),Nn&&!tt&&n.flags&16&&xe){let cn=Pr(xe,rr=>rr.kind===260).map(rr=>hr(rr,_.Consider_adding_a_declare_modifier_to_this_class));mn(xe,rr=>{let Jt=rr.kind===260?_.Class_declaration_cannot_implement_overload_list_for_0:rr.kind===259?_.Function_with_bodies_can_only_merge_with_classes_that_are_ambient:void 0;Jt&&Ao(Fe(sa(rr)||rr,Jt,fc(n)),...cn)})}if(de&&!de.body&&!Mr(de,256)&&!de.questionToken&&It(de),H&&(xe&&(c(xe,J,p,h,T),u(xe,J,k,O)),J)){let cn=Xb(n),rr=rp(J);for(let Jt of cn)if(!aXe(rr,Jt)){let Cn=Jt.declaration&&X0(Jt.declaration)?Jt.declaration.parent.tagName:Jt.declaration;Ao(Fe(Cn,_.This_overload_signature_is_not_compatible_with_its_implementation_signature),hr(J,_.The_implementation_signature_is_declared_here));break}}}function DD(n){i(()=>Pet(n))}function Pet(n){let a=n.localSymbol;if(!a&&(a=fr(n),!a.exportSymbol)||nc(a,n.kind)!==n)return;let c=0,u=0,p=0;for(let H of a.declarations){let J=O(H),de=sU(H,1025);de&1?de&1024?p|=J:c|=J:u|=J}let h=c|u,T=c&u,k=p&h;if(T||k)for(let H of a.declarations){let J=O(H),de=sa(H);J&k?Fe(de,_.Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead,os(de)):J&T&&Fe(de,_.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local,os(de))}function O(H){let J=H;switch(J.kind){case 261:case 262:case 349:case 341:case 343:return 2;case 264:return lu(J)||Gh(J)!==0?5:4;case 260:case 263:case 302:return 3;case 308:return 7;case 274:case 223:let de=J,Ae=pc(de)?de.expression:de.right;if(!bc(Ae))return 1;J=Ae;case 268:case 271:case 270:let xe=0,tt=wc(fr(J));return mn(tt.declarations,It=>{xe|=O(It)}),xe;case 257:case 205:case 259:case 273:case 79:return 1;case 170:case 168:return 2;default:return L.failBadSyntaxKind(J)}}}function wD(n,a,c,u){let p=RD(n,a);return p&&rT(p,a,c,u)}function RD(n,a,c){if(Zo(n))return;let u=n;if(u.promisedTypeOfPromise)return u.promisedTypeOfPromise;if(Bv(n,sM(!1)))return u.promisedTypeOfPromise=Ko(n)[0];if(JM(Ty(n),134479868))return;let p=Vc(n,\"then\");if(Zo(p))return;let h=p?xa(p,0):Je;if(h.length===0){a&&Fe(a,_.A_promise_must_have_a_then_method);return}let T,k;for(let J of h){let de=Yb(J);de&&de!==yt&&!Bp(n,de,hm)?T=de:k=Sn(k,J)}if(!k){L.assertIsDefined(T),c&&(c.value=T),a&&Fe(a,_.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1,Ee(n),Ee(T));return}let O=Df(Gr(on(k,uie)),2097152);if(Zo(O))return;let H=xa(O,0);if(H.length===0){a&&Fe(a,_.The_first_parameter_of_the_then_method_of_a_promise_must_be_a_callback);return}return u.promisedTypeOfPromise=Gr(on(H,uie),2)}function OD(n,a,c,u,p){return(a?rT(n,c,u,p):bg(n,c,u,p))||ve}function XIe(n){if(JM(Ty(n),134479868))return!1;let a=Vc(n,\"then\");return!!a&&xa(Df(a,2097152),0).length>0}function lU(n){var a;if(n.flags&16777216){let c=mne(!1);return!!c&&n.aliasSymbol===c&&((a=n.aliasTypeArguments)==null?void 0:a.length)===1}return!1}function VC(n){return n.flags&1048576?Ls(n,VC):lU(n)?n.aliasTypeArguments[0]:n}function YIe(n){if(Zo(n)||lU(n))return!1;if(Zb(n)){let a=bu(n);if(a?a.flags&3||mh(a)||yh(a,XIe):Js(n,8650752))return!0}return!1}function Met(n){let a=mne(!0);if(a)return Kx(a,[VC(n)])}function Fet(n){if(YIe(n)){let a=Met(n);if(a)return a}return L.assert(lU(n)||RD(n)===void 0,\"type provided should not be a non-generic 'promise'-like.\"),n}function rT(n,a,c,u){let p=bg(n,a,c,u);return p&&Fet(p)}function bg(n,a,c,u){if(Zo(n)||lU(n))return n;let p=n;if(p.awaitedTypeOfType)return p.awaitedTypeOfType;if(n.flags&1048576){if(Jh.lastIndexOf(n.id)>=0){a&&Fe(a,_.Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method);return}let k=a?H=>bg(H,a,c,u):bg;Jh.push(n.id);let O=Ls(n,k);return Jh.pop(),p.awaitedTypeOfType=O}if(YIe(n))return p.awaitedTypeOfType=n;let h={value:void 0},T=RD(n,void 0,h);if(T){if(n.id===T.id||Jh.lastIndexOf(T.id)>=0){a&&Fe(a,_.Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method);return}Jh.push(n.id);let k=bg(T,a,c,u);return Jh.pop(),k?p.awaitedTypeOfType=k:void 0}if(XIe(n)){if(a){L.assertIsDefined(c);let k;h.value&&(k=da(k,_.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1,Ee(n),Ee(h.value))),k=da(k,c,u),Lo.add(Lh(Gn(a),a,k))}return}return p.awaitedTypeOfType=n}function Get(n,a){let c=$r(a);if(R>=2){if(Ro(c))return;let u=sM(!0);if(u!==ro&&!Bv(c,u)){Fe(a,_.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0,Ee(bg(c)||yt));return}}else{if(Uet(a),Ro(c))return;let u=Kw(a);if(u===void 0){Fe(a,_.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value,Ee(c));return}let p=uc(u,111551,!0),h=p?zn(p):ve;if(Ro(h)){u.kind===79&&u.escapedText===\"Promise\"&&Ux(c)===sM(!1)?Fe(a,_.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option):Fe(a,_.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value,Kd(u));return}let T=mKe(!0);if(T===Ki){Fe(a,_.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value,Kd(u));return}if(!wu(h,T,a,_.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value))return;let k=u&&Xd(u),O=yd(n.locals,k.escapedText,111551);if(O){Fe(O.valueDeclaration,_.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions,vr(k),Kd(u));return}}OD(c,!1,n,_.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member)}function Bet(n){let a=FC(n);tU(a,n);let c=qo(a);if(c.flags&1)return;let u=_ie(n);if(!u?.resolvedReturnType)return;let p,h=u.resolvedReturnType;switch(n.parent.kind){case 260:case 228:p=_.Decorator_function_return_type_0_is_not_assignable_to_type_1;break;case 169:if(!Q){p=_.Decorator_function_return_type_0_is_not_assignable_to_type_1;break}case 166:p=_.Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any;break;case 171:case 174:case 175:p=_.Decorator_function_return_type_0_is_not_assignable_to_type_1;break;default:return L.failBadSyntaxKind(n.parent)}wu(c,h,n.expression,p)}function ND(n,a,c,u,p,h=c.length,T=0){let k=D.createFunctionTypeNode(void 0,Je,D.createKeywordTypeNode(131));return Am(k,n,a,c,u,p,h,T)}function Cie(n,a,c,u,p,h,T){let k=ND(n,a,c,u,p,h,T);return HE(k)}function $Ie(n){return Cie(void 0,void 0,Je,n)}function QIe(n){let a=x_(\"value\",n);return Cie(void 0,void 0,[a],yt)}function Uet(n){ZIe(n&&Kw(n),!1)}function ZIe(n,a){if(!n)return;let c=Xd(n),u=(n.kind===79?788968:1920)|2097152,p=zs(c,c.escapedText,u,void 0,void 0,!0);if(p&&p.flags&2097152){if(!Y.verbatimModuleSyntax&&ig(p)&&!FD(wc(p))&&!nd(p))Hb(p);else if(a&&u_(Y)&&Rl(Y)>=5&&!ig(p)&&!vt(p.declarations,I0)){let h=Fe(n,_.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled),T=wr(p.declarations||Je,Zh);T&&Ao(h,hr(T,_._0_was_imported_here,vr(c)))}}}function jC(n){let a=Iie(n);a&&Cd(a)&&ZIe(a,!0)}function Iie(n){if(n)switch(n.kind){case 190:case 189:return eLe(n.types);case 191:return eLe([n.trueType,n.falseType]);case 193:case 199:return Iie(n.type);case 180:return n.typeName}}function eLe(n){let a;for(let c of n){for(;c.kind===193||c.kind===199;)c=c.type;if(c.kind===144||!U&&(c.kind===198&&c.literal.kind===104||c.kind===155))continue;let u=Iie(c);if(!u)return;if(a){if(!Re(a)||!Re(u)||a.escapedText!==u.escapedText)return}else a=u}return a}function uU(n){let a=Cl(n);return Fm(n)?SH(a):a}function YM(n){if(!WS(n)||!vf(n)||!n.modifiers||!M6(Q,n,n.parent,n.parent.parent))return;let a=wr(n.modifiers,du);if(!!a){if(Q?(Hc(a,8),n.kind===166&&Hc(a,32)):R<99&&(Hc(a,8),sl(n)?n.name?ALe(n)&&Hc(a,8388608):Hc(a,8388608):_u(n)||(pi(n.name)&&(Nc(n)||rb(n)||Id(n))&&Hc(a,8388608),ts(n.name)&&Hc(a,16777216))),Y.emitDecoratorMetadata)switch(Hc(a,16),n.kind){case 260:let c=Vm(n);if(c)for(let T of c.parameters)jC(uU(T));break;case 174:case 175:let u=n.kind===174?175:174,p=nc(fr(n),u);jC(N(n)||p&&N(p));break;case 171:for(let T of n.parameters)jC(uU(T));jC(B_(n));break;case 169:jC(Cl(n));break;case 166:jC(uU(n));let h=n.parent;for(let T of h.parameters)jC(uU(T));break}for(let c of n.modifiers)du(c)&&Bet(c)}}function Vet(n){i(a);function a(){nLe(n),Yie(n),HC(n,n.name)}}function jet(n){n.typeExpression||Fe(n.name,_.JSDoc_typedef_tag_should_either_have_a_type_annotation_or_be_followed_by_property_or_member_tags),n.name&&WC(n.name,_.Type_alias_name_cannot_be_0),qa(n.typeExpression),n8(jy(n))}function Het(n){qa(n.constraint);for(let a of n.typeParameters)qa(a)}function Wet(n){qa(n.typeExpression)}function zet(n){qa(n.typeExpression);let a=zA(n);if(a){let c=kj(a,v3);if(Fn(c)>1)for(let u=1;u<Fn(c);u++){let p=c[u].tagName;Fe(p,_._0_tag_already_specified,vr(p))}}}function Jet(n){n.name&&i8(n.name,!0)}function Ket(n){qa(n.typeExpression)}function qet(n){qa(n.typeExpression)}function Xet(n){i(a),kD(n);function a(){!n.type&&!HA(n)&&qv(n,Se)}}function Yet(n){let a=zA(n);(!a||!sl(a)&&!_u(a))&&Fe(a,_.JSDoc_0_is_not_attached_to_a_class,vr(n.tagName))}function $et(n){let a=zA(n);if(!a||!sl(a)&&!_u(a)){Fe(a,_.JSDoc_0_is_not_attached_to_a_class,vr(n.tagName));return}let c=A0(a).filter(A2);L.assert(c.length>0),c.length>1&&Fe(c[1],_.Class_declarations_cannot_have_more_than_one_augments_or_extends_tag);let u=tLe(n.class.expression),p=P0(a);if(p){let h=tLe(p.expression);h&&u.escapedText!==h.escapedText&&Fe(u,_.JSDoc_0_1_does_not_match_the_extends_2_clause,vr(n.tagName),vr(u),vr(h))}}function Qet(n){let a=fS(n);a&&xu(a)&&Fe(n,_.An_accessibility_modifier_cannot_be_used_with_a_private_identifier)}function tLe(n){switch(n.kind){case 79:return n;case 208:return n.name;default:return}}function nLe(n){var a;YM(n),kD(n);let c=pl(n);if(n.name&&n.name.kind===164&&vg(n.name),Vx(n)){let h=fr(n),T=n.localSymbol||h,k=(a=T.declarations)==null?void 0:a.find(O=>O.kind===n.kind&&!(O.flags&262144));n===k&&cU(T),h.parent&&cU(h)}let u=n.kind===170?void 0:n.body;if(qa(u),pie(n,Wx(n)),i(p),Yn(n)){let h=x0(n);h&&h.typeExpression&&!Ore($r(h.typeExpression),n)&&Fe(h.typeExpression.type,_.The_type_of_a_function_declaration_must_match_the_function_s_signature)}function p(){B_(n)||(rc(u)&&!XM(n)&&qv(n,Se),c&1&&Nf(u)&&qo(rp(n)))}}function Dy(n){i(a);function a(){let c=Gn(n),u=rn.get(c.path);u||(u=[],rn.set(c.path,u)),u.push(n)}}function rLe(n,a){for(let c of n)switch(c.kind){case 260:case 228:Zet(c,a),Lie(c,a);break;case 308:case 264:case 238:case 266:case 245:case 246:case 247:oLe(c,a);break;case 173:case 215:case 259:case 216:case 171:case 174:case 175:c.body&&oLe(c,a),Lie(c,a);break;case 170:case 176:case 177:case 181:case 182:case 262:case 261:Lie(c,a);break;case 192:ett(c,a);break;default:L.assertNever(c,\"Node should not have been registered for unused identifiers check\")}}function iLe(n,a,c){let u=sa(n)||n,p=s2(n)?_._0_is_declared_but_never_used:_._0_is_declared_but_its_value_is_never_read;c(n,0,hr(u,p,a))}function $M(n){return Re(n)&&vr(n).charCodeAt(0)===95}function Zet(n,a){for(let c of n.members)switch(c.kind){case 171:case 169:case 174:case 175:if(c.kind===175&&c.symbol.flags&32768)break;let u=fr(c);!u.isReferenced&&(cd(c,8)||zl(c)&&pi(c.name))&&!(c.flags&16777216)&&a(c,0,hr(c.name,_._0_is_declared_but_its_value_is_never_read,E(u)));break;case 173:for(let p of c.parameters)!p.symbol.isReferenced&&Mr(p,8)&&a(p,0,hr(p.name,_.Property_0_is_declared_but_its_value_is_never_read,fc(p.symbol)));break;case 178:case 237:case 172:break;default:L.fail(\"Unexpected class member\")}}function ett(n,a){let{typeParameter:c}=n;kie(c)&&a(n,1,hr(n,_._0_is_declared_but_its_value_is_never_read,vr(c.name)))}function Lie(n,a){let c=fr(n).declarations;if(!c||To(c)!==n)return;let u=jy(n),p=new Set;for(let h of u){if(!kie(h))continue;let T=vr(h.name),{parent:k}=h;if(k.kind!==192&&k.typeParameters.every(kie)){if(_0(p,k)){let O=Gn(k),H=j_(k)?MW(k):FW(O,k.typeParameters),J=k.typeParameters.length===1,de=J?_._0_is_declared_but_its_value_is_never_read:_.All_type_parameters_are_unused,Ae=J?T:void 0;a(h,1,al(O,H.pos,H.end-H.pos,de,Ae))}}else a(h,1,hr(h,_._0_is_declared_but_its_value_is_never_read,T))}}function kie(n){return!(No(n.symbol).isReferenced&262144)&&!$M(n.name)}function QM(n,a,c,u){let p=String(u(a)),h=n.get(p);h?h[1].push(c):n.set(p,[a,[c]])}function aLe(n){return zr(nm(n),ha)}function ttt(n){return Wo(n)?cm(n.parent)?!!(n.propertyName&&$M(n.name)):$M(n.name):lu(n)||(wi(n)&&IA(n.parent.parent)||sLe(n))&&$M(n.name)}function oLe(n,a){let c=new Map,u=new Map,p=new Map;n.locals.forEach(h=>{if(!(h.flags&262144?!(h.flags&3&&!(h.isReferenced&3)):h.isReferenced||h.exportSymbol)&&h.declarations){for(let T of h.declarations)if(!ttt(T))if(sLe(T))QM(c,rtt(T),T,zo);else if(Wo(T)&&cm(T.parent)){let k=To(T.parent.elements);(T===k||!To(T.parent.elements).dotDotDotToken)&&QM(u,T.parent,T,zo)}else if(wi(T))QM(p,T.parent,T,zo);else{let k=h.valueDeclaration&&aLe(h.valueDeclaration),O=h.valueDeclaration&&sa(h.valueDeclaration);k&&O?!Ad(k,k.parent)&&!G0(k)&&!$M(O)&&(Wo(T)&&y2(T.parent)?QM(u,T.parent,T,zo):a(k,1,hr(O,_._0_is_declared_but_its_value_is_never_read,fc(h)))):iLe(T,fc(h),a)}}}),c.forEach(([h,T])=>{let k=h.parent;if((h.name?1:0)+(h.namedBindings?h.namedBindings.kind===271?1:h.namedBindings.elements.length:0)===T.length)a(k,0,T.length===1?hr(k,_._0_is_declared_but_its_value_is_never_read,vr(Vo(T).name)):hr(k,_.All_imports_in_import_declaration_are_unused));else for(let H of T)iLe(H,vr(H.name),a)}),u.forEach(([h,T])=>{let k=aLe(h.parent)?1:0;if(h.elements.length===T.length)T.length===1&&h.parent.kind===257&&h.parent.parent.kind===258?QM(p,h.parent.parent,h.parent,zo):a(h,k,T.length===1?hr(h,_._0_is_declared_but_its_value_is_never_read,ZM(Vo(T).name)):hr(h,_.All_destructured_elements_are_unused));else for(let O of T)a(O,k,hr(O,_._0_is_declared_but_its_value_is_never_read,ZM(O.name)))}),p.forEach(([h,T])=>{if(h.declarations.length===T.length)a(h,0,T.length===1?hr(Vo(T).name,_._0_is_declared_but_its_value_is_never_read,ZM(Vo(T).name)):hr(h.parent.kind===240?h.parent:h,_.All_variables_are_unused));else for(let k of T)a(k,0,hr(k,_._0_is_declared_but_its_value_is_never_read,ZM(k.name)))})}function ntt(){var n;for(let a of h1)if(!((n=fr(a))!=null&&n.isReferenced)){let c=EA(a);L.assert(IT(c),\"Only parameter declaration should be checked here\");let u=hr(a.name,_._0_is_an_unused_renaming_of_1_Did_you_intend_to_use_it_as_a_type_annotation,os(a.name),os(a.propertyName));c.type||Ao(u,al(Gn(c),c.end,1,_.We_can_only_write_a_type_for_0_by_adding_a_type_for_the_entire_parameter_here,os(a.propertyName))),Lo.add(u)}}function ZM(n){switch(n.kind){case 79:return vr(n);case 204:case 203:return ZM(Ga(Vo(n.elements),Wo).name);default:return L.assertNever(n)}}function sLe(n){return n.kind===270||n.kind===273||n.kind===271}function rtt(n){return n.kind===270?n:n.kind===271?n.parent:n.parent.parent}function dU(n){if(n.kind===238&&vh(n),Bj(n)){let a=ki;mn(n.statements,qa),ki=a}else mn(n.statements,qa);n.locals&&Dy(n)}function itt(n){R>=2||!Yj(n)||n.flags&16777216||rc(n.body)||mn(n.parameters,a=>{a.name&&!La(a.name)&&a.name.escapedText===_t.escapedName&&Ev(\"noEmit\",a,_.Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters)})}function PD(n,a,c){if(a?.escapedText!==c||n.kind===169||n.kind===168||n.kind===171||n.kind===170||n.kind===174||n.kind===175||n.kind===299||n.flags&16777216||(lm(n)||Nl(n)||$u(n))&&I0(n))return!1;let u=nm(n);return!(ha(u)&&rc(u.parent.body))}function att(n){jn(n,a=>cA(a)&4?(n.kind!==79?Fe(sa(n),_.Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference):Fe(n,_.Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference),!0):!1)}function ott(n){jn(n,a=>cA(a)&8?(n.kind!==79?Fe(sa(n),_.Duplicate_identifier_newTarget_Compiler_uses_variable_declaration_newTarget_to_capture_new_target_meta_property_reference):Fe(n,_.Expression_resolves_to_variable_declaration_newTarget_that_compiler_uses_to_capture_new_target_meta_property_reference),!0):!1)}function stt(n,a){if(ie>=5&&!(ie>=100&&Gn(n).impliedNodeFormat===1)||!a||!PD(n,a,\"require\")&&!PD(n,a,\"exports\")||Tc(n)&&Gh(n)!==1)return;let c=FE(n);c.kind===308&&kd(c)&&Ev(\"noEmit\",a,_.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module,os(a),os(a))}function ctt(n,a){if(!a||R>=4||!PD(n,a,\"Promise\")||Tc(n)&&Gh(n)!==1)return;let c=FE(n);c.kind===308&&kd(c)&&c.flags&2048&&Ev(\"noEmit\",a,_.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions,os(a),os(a))}function ltt(n,a){R<=8&&(PD(n,a,\"WeakMap\")||PD(n,a,\"WeakSet\"))&&Lb.push(n)}function utt(n){let a=tm(n);cA(a)&4194304&&(L.assert(zl(n)&&Re(n.name)&&typeof n.name.escapedText==\"string\",\"The target of a WeakMap/WeakSet collision check should be an identifier\"),Ev(\"noEmit\",n,_.Compiler_reserves_name_0_when_emitting_private_identifier_downlevel,n.name.escapedText))}function dtt(n,a){a&&R>=2&&R<=8&&PD(n,a,\"Reflect\")&&bv.push(n)}function ftt(n){let a=!1;if(_u(n)){for(let c of n.members)if(cA(c)&8388608){a=!0;break}}else if(ms(n))cA(n)&8388608&&(a=!0);else{let c=tm(n);c&&cA(c)&8388608&&(a=!0)}a&&(L.assert(zl(n)&&Re(n.name),\"The target of a Reflect collision check should be an identifier\"),Ev(\"noEmit\",n,_.Duplicate_identifier_0_Compiler_reserves_name_1_when_emitting_super_references_in_static_initializers,os(n.name),\"Reflect\"))}function HC(n,a){!a||(stt(n,a),ctt(n,a),ltt(n,a),dtt(n,a),Yr(n)?(WC(a,_.Class_name_cannot_be_0),n.flags&16777216||Utt(a)):hb(n)&&WC(a,_.Enum_name_cannot_be_0))}function _tt(n){if((F_(n)&3)!==0||IT(n)||n.kind===257&&!n.initializer)return;let a=fr(n);if(a.flags&1){if(!Re(n.name))return L.fail();let c=zs(n,n.name.escapedText,3,void 0,void 0,!1);if(c&&c!==a&&c.flags&2&&WB(c)&3){let u=cb(c.valueDeclaration,258),p=u.parent.kind===240&&u.parent.parent?u.parent.parent:void 0;if(!(p&&(p.kind===238&&Ia(p.parent)||p.kind===265||p.kind===264||p.kind===308))){let T=E(c);Fe(n,_.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1,T,T)}}}}function MD(n){return n===at?Se:n===bn?Et:n}function e8(n){var a;if(YM(n),Wo(n)||qa(n.type),!n.name)return;if(n.name.kind===164&&(vg(n.name),hT(n)&&n.initializer&&Ic(n.initializer)),Wo(n)){if(n.propertyName&&Re(n.name)&&IT(n)&&rc(qd(n).body)){h1.push(n);return}cm(n.parent)&&n.dotDotDotToken&&R<5&&Hc(n,4),n.propertyName&&n.propertyName.kind===164&&vg(n.propertyName);let p=n.parent.parent,h=n.dotDotDotToken?64:0,T=Mx(p,h),k=n.propertyName||n.name;if(T&&!La(k)){let O=pg(k);if(fh(O)){let H=Np(O),J=ja(T,H);J&&(FM(J,void 0,!1),Hre(n,!!p.initializer&&p.initializer.kind===106,!1,T,J))}}}if(La(n.name)&&(n.name.kind===204&&R<2&&Y.downlevelIteration&&Hc(n,512),mn(n.name.elements,qa)),ha(n)&&n.initializer&&rc(qd(n).body)){Fe(n,_.A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation);return}if(La(n.name)){let p=hT(n)&&n.initializer&&n.parent.parent.kind!==246,h=!vt(n.name.elements,y8(ol));if(p||h){let T=Zs(n);if(p){let k=Ic(n.initializer);U&&h?wCe(k,n):Ly(k,Zs(n),n,n.initializer)}h&&(y2(n.name)?wy(65,T,Oe,n):U&&wCe(T,n))}return}let c=fr(n);if(c.flags&2097152&&(N0(n)||lce(n))){hU(n);return}let u=MD(zn(c));if(n===c.valueDeclaration){let p=hT(n)&&$w(n);p&&!(Yn(n)&&rs(p)&&(p.properties.length===0||ub(n.name))&&!!((a=c.exports)!=null&&a.size))&&n.parent.parent.kind!==246&&Ly(Ic(p),u,n,p,void 0),c.declarations&&c.declarations.length>1&&vt(c.declarations,h=>h!==n&&MA(h)&&!lLe(h,n))&&Fe(n.name,_.All_declarations_of_0_must_have_identical_modifiers,os(n.name))}else{let p=MD(Zs(n));!Ro(u)&&!Ro(p)&&!ph(u,p)&&!(c.flags&67108864)&&cLe(c.valueDeclaration,u,n,p),hT(n)&&n.initializer&&Ly(Ic(n.initializer),p,n,n.initializer,void 0),c.valueDeclaration&&!lLe(n,c.valueDeclaration)&&Fe(n.name,_.All_declarations_of_0_must_have_identical_modifiers,os(n.name))}n.kind!==169&&n.kind!==168&&(DD(n),(n.kind===257||n.kind===205)&&_tt(n),HC(n,n.name))}function cLe(n,a,c,u){let p=sa(c),h=c.kind===169||c.kind===168?_.Subsequent_property_declarations_must_have_the_same_type_Property_0_must_be_of_type_1_but_here_has_type_2:_.Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2,T=os(p),k=Fe(p,h,T,Ee(a),Ee(u));n&&Ao(k,hr(n,_._0_was_also_declared_here,T))}function lLe(n,a){if(n.kind===166&&a.kind===257||n.kind===257&&a.kind===166)return!0;if(dS(n)!==dS(a))return!1;let c=888;return gS(n,c)===gS(a,c)}function Die(n){var a,c;(a=ai)==null||a.push(ai.Phase.Check,\"checkVariableDeclaration\",{kind:n.kind,pos:n.pos,end:n.end,path:n.tracingPath}),Krt(n),e8(n),(c=ai)==null||c.pop()}function ptt(n){return Wrt(n),e8(n)}function mtt(n){!km(n)&&!Zie(n.declarationList)&&qrt(n),mn(n.declarationList.declarations,qa)}function htt(n){vh(n),Yi(n.expression)}function gtt(n){vh(n);let a=oA(n.expression);wie(n.expression,a,n.thenStatement),qa(n.thenStatement),n.thenStatement.kind===239&&Fe(n.thenStatement,_.The_body_of_an_if_statement_cannot_be_the_empty_statement),qa(n.elseStatement)}function wie(n,a,c){if(!U)return;u(n,c);function u(h,T){for(h=vs(h),p(h,T);ar(h)&&(h.operatorToken.kind===56||h.operatorToken.kind===60);)h=vs(h.left),p(h,T)}function p(h,T){let k=IR(h)?vs(h.right):h;if(Bm(k))return;if(IR(k)){u(k,T);return}let O=k===h?a:oA(k),H=br(k)&&OIe(k.expression);if(!(iu(O)&4194304)||H)return;let J=xa(O,0),de=!!wD(O);if(J.length===0&&!de)return;let Ae=Re(k)?k:br(k)?k.name:void 0,xe=Ae&&Qf(Ae);if(!xe&&!de)return;xe&&ar(h.parent)&&vtt(h.parent,xe)||xe&&T&&ytt(h,T,Ae,xe)||(de?Tv(k,!0,_.This_condition_will_always_return_true_since_this_0_is_always_defined,lr(O)):Fe(k,_.This_condition_will_always_return_true_since_this_function_is_always_defined_Did_you_mean_to_call_it_instead))}}function ytt(n,a,c,u){return!!pa(a,function p(h){if(Re(h)){let T=Qf(h);if(T&&T===u){if(Re(n)||Re(c)&&ar(c.parent))return!0;let k=c.parent,O=h.parent;for(;k&&O;){if(Re(k)&&Re(O)||k.kind===108&&O.kind===108)return Qf(k)===Qf(O);if(br(k)&&br(O)){if(Qf(k.name)!==Qf(O.name))return!1;O=O.expression,k=k.expression}else if(Pa(k)&&Pa(O))O=O.expression,k=k.expression;else return!1}}}return pa(h,p)})}function vtt(n,a){for(;ar(n)&&n.operatorToken.kind===55;){if(pa(n.right,function u(p){if(Re(p)){let h=Qf(p);if(h&&h===a)return!0}return pa(p,u)}))return!0;n=n.parent}return!1}function btt(n){vh(n),qa(n.statement),oA(n.expression)}function Ett(n){vh(n),oA(n.expression),qa(n.statement)}function uLe(n,a){return n.flags&16384&&Fe(a,_.An_expression_of_type_void_cannot_be_tested_for_truthiness),n}function oA(n,a){return uLe(Yi(n,a),n)}function Ttt(n){vh(n)||n.initializer&&n.initializer.kind===258&&Zie(n.initializer),n.initializer&&(n.initializer.kind===258?mn(n.initializer.declarations,Die):Yi(n.initializer)),n.condition&&oA(n.condition),n.incrementor&&Yi(n.incrementor),qa(n.statement),n.locals&&Dy(n)}function Stt(n){ske(n);let a=R6(n);if(n.awaitModifier?a&&oc(a)?an(n.awaitModifier,_.For_await_loops_cannot_be_used_inside_a_class_static_block):(pl(a)&6)===2&&R<99&&Hc(n,16384):Y.downlevelIteration&&R<2&&Hc(n,256),n.initializer.kind===258)dLe(n);else{let c=n.initializer,u=t8(n);if(c.kind===206||c.kind===207)nT(c,u||ve);else{let p=Yi(c);ID(c,_.The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access,_.The_left_hand_side_of_a_for_of_statement_may_not_be_an_optional_property_access),u&&Ly(u,p,c,n.expression)}}qa(n.statement),n.locals&&Dy(n)}function xtt(n){ske(n);let a=Wre(Yi(n.expression));if(n.initializer.kind===258){let c=n.initializer.declarations[0];c&&La(c.name)&&Fe(c.name,_.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern),dLe(n)}else{let c=n.initializer,u=Yi(c);c.kind===206||c.kind===207?Fe(c,_.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern):to(lqe(a),u)?ID(c,_.The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access,_.The_left_hand_side_of_a_for_in_statement_may_not_be_an_optional_property_access):Fe(c,_.The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any)}(a===lt||!ul(a,126091264))&&Fe(n.expression,_.The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter_but_here_has_type_0,Ee(a)),qa(n.statement),n.locals&&Dy(n)}function dLe(n){let a=n.initializer;if(a.declarations.length>=1){let c=a.declarations[0];Die(c)}}function t8(n){let a=n.awaitModifier?15:13;return wy(a,PC(n.expression),Oe,n.expression)}function wy(n,a,c,u){return Zo(a)?a:Rie(n,a,c,u,!0)||Se}function Rie(n,a,c,u,p){let h=(n&2)!==0;if(a===lt){Fie(u,a,h);return}let T=R>=2,k=!T&&Y.downlevelIteration,O=Y.noUncheckedIndexedAccess&&!!(n&128);if(T||k||h){let tt=_U(a,n,T?u:void 0);if(p&&tt){let It=n&8?_.Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_for_of_will_always_send_0:n&32?_.Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_spread_will_always_send_0:n&64?_.Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_destructuring_will_always_send_0:n&16?_.Cannot_delegate_iteration_to_value_because_the_next_method_of_its_iterator_expects_type_1_but_the_containing_generator_will_always_send_0:void 0;It&&wu(c,tt.nextType,u,It)}if(tt||T)return O?gD(tt&&tt.yieldType):tt&&tt.yieldType}let H=a,J=!1,de=!1;if(n&4){if(H.flags&1048576){let tt=a.types,It=Pr(tt,Tn=>!(Tn.flags&402653316));It!==tt&&(H=Gr(It,2))}else H.flags&402653316&&(H=lt);if(de=H!==a,de&&(R<1&&u&&(Fe(u,_.Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher),J=!0),H.flags&131072))return O?gD(ae):ae}if(!Kv(H)){if(u&&!J){let tt=!!(n&4)&&!de,[It,Tn]=xe(tt,k);Tv(u,Tn&&!!wD(H),It,Ee(H))}return de?O?gD(ae):ae:void 0}let Ae=fg(H,rt);if(de&&Ae)return Ae.flags&402653316&&!Y.noUncheckedIndexedAccess?ae:Gr(O?[Ae,ae,Oe]:[Ae,ae],2);return n&128?gD(Ae):Ae;function xe(tt,It){var Tn;return It?tt?[_.Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator,!0]:[_.Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator,!0]:Oie(n,0,a,void 0)?[_.Type_0_can_only_be_iterated_through_when_using_the_downlevelIteration_flag_or_with_a_target_of_es2015_or_higher,!1]:Att((Tn=a.symbol)==null?void 0:Tn.escapedName)?[_.Type_0_can_only_be_iterated_through_when_using_the_downlevelIteration_flag_or_with_a_target_of_es2015_or_higher,!0]:tt?[_.Type_0_is_not_an_array_type_or_a_string_type,!0]:[_.Type_0_is_not_an_array_type,!0]}}function Att(n){switch(n){case\"Float32Array\":case\"Float64Array\":case\"Int16Array\":case\"Int32Array\":case\"Int8Array\":case\"NodeList\":case\"Uint16Array\":case\"Uint32Array\":case\"Uint8Array\":case\"Uint8ClampedArray\":return!0}return!1}function Oie(n,a,c,u){if(Zo(c))return;let p=_U(c,n,u);return p&&p[R_e(a)]}function Eg(n=lt,a=lt,c=ue){if(n.flags&67359327&&a.flags&180227&&c.flags&180227){let u=Lf([n,a,c]),p=se.get(u);return p||(p={yieldType:n,returnType:a,nextType:c},se.set(u,p)),p}return{yieldType:n,returnType:a,nextType:c}}function fLe(n){let a,c,u;for(let p of n)if(!(p===void 0||p===ht)){if(p===wt)return wt;a=Sn(a,p.yieldType),c=Sn(c,p.returnType),u=Sn(u,p.nextType)}return a||c||u?Eg(a&&Gr(a),c&&Gr(c),u&&so(u)):ht}function fU(n,a){return n[a]}function Lm(n,a,c){return n[a]=c}function _U(n,a,c){var u,p;if(Zo(n))return wt;if(!(n.flags&1048576)){let H=c?{errors:void 0}:void 0,J=_Le(n,a,c,H);if(J===ht){if(c){let de=Fie(c,n,!!(a&2));H?.errors&&Ao(de,...H.errors)}return}else if((u=H?.errors)!=null&&u.length)for(let de of H.errors)Lo.add(de);return J}let h=a&2?\"iterationTypesOfAsyncIterable\":\"iterationTypesOfIterable\",T=fU(n,h);if(T)return T===ht?void 0:T;let k;for(let H of n.types){let J=c?{errors:void 0}:void 0,de=_Le(H,a,c,J);if(de===ht){if(c){let Ae=Fie(c,n,!!(a&2));J?.errors&&Ao(Ae,...J.errors)}Lm(n,h,ht);return}else if((p=J?.errors)!=null&&p.length)for(let Ae of J.errors)Lo.add(Ae);k=Sn(k,de)}let O=k?fLe(k):ht;return Lm(n,h,O),O===ht?void 0:O}function Nie(n,a){if(n===ht)return ht;if(n===wt)return wt;let{yieldType:c,returnType:u,nextType:p}=n;return a&&mne(!0),Eg(rT(c,a)||Se,rT(u,a)||Se,p)}function _Le(n,a,c,u){if(Zo(n))return wt;let p=!1;if(a&2){let h=Pie(n,ft)||mLe(n,ft);if(h)if(h===ht&&c)p=!0;else return a&8?Nie(h,c):h}if(a&1){let h=Pie(n,Yt)||mLe(n,Yt);if(h)if(h===ht&&c)p=!0;else if(a&2){if(h!==ht)return h=Nie(h,c),p?h:Lm(n,\"iterationTypesOfAsyncIterable\",h)}else return h}if(a&2){let h=Mie(n,ft,c,u,p);if(h!==ht)return h}if(a&1){let h=Mie(n,Yt,c,u,p);if(h!==ht)return a&2?(h=Nie(h,c),p?h:Lm(n,\"iterationTypesOfAsyncIterable\",h)):h}return ht}function Pie(n,a){return fU(n,a.iterableCacheKey)}function pLe(n,a){let c=Pie(n,a)||Mie(n,a,void 0,void 0,!1);return c===ht?Xe:c}function mLe(n,a){let c;if(Bv(n,c=a.getGlobalIterableType(!1))||Bv(n,c=a.getGlobalIterableIteratorType(!1))){let[u]=Ko(n),{returnType:p,nextType:h}=pLe(c,a);return Lm(n,a.iterableCacheKey,Eg(a.resolveIterationType(u,void 0)||u,a.resolveIterationType(p,void 0)||p,h))}if(Bv(n,a.getGlobalGeneratorType(!1))){let[u,p,h]=Ko(n);return Lm(n,a.iterableCacheKey,Eg(a.resolveIterationType(u,void 0)||u,a.resolveIterationType(p,void 0)||p,h))}}function Ctt(n){let a=rAe(!1),c=a&&Vc(zn(a),Bs(n));return c&&fh(c)?Np(c):`__@${n}`}function Mie(n,a,c,u,p){var h;let T=ja(n,Ctt(a.iteratorSymbolName)),k=T&&!(T.flags&16777216)?zn(T):void 0;if(Zo(k))return p?wt:Lm(n,a.iterableCacheKey,wt);let O=k?xa(k,0):void 0;if(!vt(O))return p?ht:Lm(n,a.iterableCacheKey,ht);let H=so(on(O,qo)),J=(h=hLe(H,a,c,u,p))!=null?h:ht;return p?J:Lm(n,a.iterableCacheKey,J)}function Fie(n,a,c){let u=c?_.Type_0_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator:_.Type_0_must_have_a_Symbol_iterator_method_that_returns_an_iterator,p=!!wD(a)||!c&&pO(n.parent)&&n.parent.expression===n&&ZG(!1)!==ro&&to(a,ZG(!1));return Tv(n,p,u,Ee(a))}function Itt(n,a,c,u){return hLe(n,a,c,u,!1)}function hLe(n,a,c,u,p){if(Zo(n))return wt;let h=gLe(n,a)||Ltt(n,a);return h===ht&&c&&(h=void 0,p=!0),h??(h=vLe(n,a,c,u,p)),h===ht?void 0:h}function gLe(n,a){return fU(n,a.iteratorCacheKey)}function Ltt(n,a){let c=a.getGlobalIterableIteratorType(!1);if(Bv(n,c)){let[u]=Ko(n),p=gLe(c,a)||vLe(c,a,void 0,void 0,!1),{returnType:h,nextType:T}=p===ht?Xe:p;return Lm(n,a.iteratorCacheKey,Eg(u,h,T))}if(Bv(n,a.getGlobalIteratorType(!1))||Bv(n,a.getGlobalGeneratorType(!1))){let[u,p,h]=Ko(n);return Lm(n,a.iteratorCacheKey,Eg(u,p,h))}}function yLe(n,a){let c=Vc(n,\"done\")||Ke;return to(a===0?Ke:pe,c)}function ktt(n){return yLe(n,0)}function Dtt(n){return yLe(n,1)}function wtt(n){if(Zo(n))return wt;let a=fU(n,\"iterationTypesOfIteratorResult\");if(a)return a;if(Bv(n,TKe(!1))){let T=Ko(n)[0];return Lm(n,\"iterationTypesOfIteratorResult\",Eg(T,void 0,void 0))}if(Bv(n,SKe(!1))){let T=Ko(n)[0];return Lm(n,\"iterationTypesOfIteratorResult\",Eg(void 0,T,void 0))}let c=jc(n,ktt),u=c!==lt?Vc(c,\"value\"):void 0,p=jc(n,Dtt),h=p!==lt?Vc(p,\"value\"):void 0;return!u&&!h?Lm(n,\"iterationTypesOfIteratorResult\",ht):Lm(n,\"iterationTypesOfIteratorResult\",Eg(u,h||yt,void 0))}function Gie(n,a,c,u,p){var h,T,k,O,H,J;let de=ja(n,c);if(!de&&c!==\"next\")return;let Ae=de&&!(c===\"next\"&&de.flags&16777216)?c===\"next\"?zn(de):Df(zn(de),2097152):void 0;if(Zo(Ae))return c===\"next\"?wt:K;let xe=Ae?xa(Ae,0):Je;if(xe.length===0){if(u){let Jt=c===\"next\"?a.mustHaveANextMethodDiagnostic:a.mustBeAMethodDiagnostic;p?((h=p.errors)!=null||(p.errors=[]),p.errors.push(hr(u,Jt,c))):Fe(u,Jt,c)}return c===\"next\"?ht:void 0}if(Ae?.symbol&&xe.length===1){let Jt=a.getGlobalGeneratorType(!1),Cn=a.getGlobalIteratorType(!1),Rn=((k=(T=Jt.symbol)==null?void 0:T.members)==null?void 0:k.get(c))===Ae.symbol,Br=!Rn&&((H=(O=Cn.symbol)==null?void 0:O.members)==null?void 0:H.get(c))===Ae.symbol;if(Rn||Br){let Hr=Rn?Jt:Cn,{mapper:qi}=Ae;return Eg(zv(Hr.typeParameters[0],qi),zv(Hr.typeParameters[1],qi),c===\"next\"?zv(Hr.typeParameters[2],qi):void 0)}}let tt,It;for(let Jt of xe)c!==\"throw\"&&vt(Jt.parameters)&&(tt=Sn(tt,N_(Jt,0))),It=Sn(It,qo(Jt));let Tn,un;if(c!==\"throw\"){let Jt=tt?Gr(tt):ue;if(c===\"next\")un=Jt;else if(c===\"return\"){let Cn=a.resolveIterationType(Jt,u)||Se;Tn=Sn(Tn,Cn)}}let Nn,en=It?so(It):lt,cn=a.resolveIterationType(en,u)||Se,rr=wtt(cn);return rr===ht?(u&&(p?((J=p.errors)!=null||(p.errors=[]),p.errors.push(hr(u,a.mustHaveAValueDiagnostic,c))):Fe(u,a.mustHaveAValueDiagnostic,c)),Nn=Se,Tn=Sn(Tn,Se)):(Nn=rr.yieldType,Tn=Sn(Tn,rr.returnType)),Eg(Nn,Gr(Tn),un)}function vLe(n,a,c,u,p){let h=fLe([Gie(n,a,\"next\",c,u),Gie(n,a,\"return\",c,u),Gie(n,a,\"throw\",c,u)]);return p?h:Lm(n,a.iteratorCacheKey,h)}function c0(n,a,c){if(Zo(a))return;let u=bLe(a,c);return u&&u[R_e(n)]}function bLe(n,a){if(Zo(n))return wt;let c=a?2:1,u=a?ft:Yt;return _U(n,c,void 0)||Itt(n,u,void 0,void 0)}function Rtt(n){vh(n)||Hrt(n)}function pU(n,a){let c=!!(a&1),u=!!(a&2);if(c){let p=c0(1,n,u);return p?u?bg(VC(p)):p:ve}return u?bg(n)||ve:n}function ELe(n,a){let c=pU(a,pl(n));return!!c&&Js(c,16387)}function Ott(n){var a;if(vh(n))return;let c=R6(n);if(c&&oc(c)){dl(n,_.A_return_statement_cannot_be_used_inside_a_class_static_block);return}if(!c){dl(n,_.A_return_statement_can_only_be_used_within_a_function_body);return}let u=rp(c),p=qo(u),h=pl(c);if(U||n.expression||p.flags&131072){let T=n.expression?Ic(n.expression):Oe;if(c.kind===175)n.expression&&Fe(n,_.Setters_cannot_return_a_value);else if(c.kind===173)n.expression&&!Ly(T,p,n,n.expression)&&Fe(n,_.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class);else if(Wx(c)){let k=(a=pU(p,h))!=null?a:p,O=h&2?OD(T,!1,n,_.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member):T;k&&Ly(O,k,n,n.expression)}}else c.kind!==173&&Y.noImplicitReturns&&!ELe(c,p)&&Fe(n,_.Not_all_code_paths_return_a_value)}function Ntt(n){vh(n)||n.flags&32768&&dl(n,_.with_statements_are_not_allowed_in_an_async_function_block),Yi(n.expression);let a=Gn(n);if(!l0(a)){let c=Pg(a,n.pos).start,u=n.statement.pos;u0(a,c,u-c,_.The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any)}}function Ptt(n){vh(n);let a,c=!1,u=Yi(n.expression);mn(n.caseBlock.clauses,p=>{p.kind===293&&!c&&(a===void 0?a=p:(an(p,_.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement),c=!0)),p.kind===292&&i(h(p)),mn(p.statements,qa),Y.noFallthroughCasesInSwitch&&p.fallthroughFlowNode&&LM(p.fallthroughFlowNode)&&Fe(p,_.Fallthrough_case_in_switch);function h(T){return()=>{let k=Yi(T.expression);yie(u,k)||e2e(k,u,T.expression,void 0)}}}),n.caseBlock.locals&&Dy(n.caseBlock)}function Mtt(n){vh(n)||jn(n.parent,a=>Ia(a)?\"quit\":a.kind===253&&a.label.escapedText===n.label.escapedText?(an(n.label,_.Duplicate_label_0,Qc(n.label)),!0):!1),qa(n.statement)}function Ftt(n){vh(n)||Re(n.expression)&&!n.expression.escapedText&&ait(n,_.Line_break_not_permitted_here),n.expression&&Yi(n.expression)}function Gtt(n){vh(n),dU(n.tryBlock);let a=n.catchClause;if(a){if(a.variableDeclaration){let c=a.variableDeclaration;e8(c);let u=Cl(c);if(u){let p=$r(u);p&&!(p.flags&3)&&dl(u,_.Catch_clause_variable_type_annotation_must_be_any_or_unknown_if_specified)}else if(c.initializer)dl(c.initializer,_.Catch_clause_variable_cannot_have_an_initializer);else{let p=a.block.locals;p&&SI(a.locals,h=>{let T=p.get(h);T?.valueDeclaration&&(T.flags&2)!==0&&an(T.valueDeclaration,_.Cannot_redeclare_identifier_0_in_catch_clause,h)})}}dU(a.block)}n.finallyBlock&&dU(n.finallyBlock)}function mU(n,a,c){let u=tu(n);if(u.length===0)return;for(let h of Ey(n))c&&h.flags&4194304||TLe(n,h,SC(h,8576,!0),Gv(h));let p=a.valueDeclaration;if(p&&Yr(p)){for(let h of p.members)if(!Ca(h)&&!Vx(h)){let T=fr(h);TLe(n,T,au(h.name.expression),Gv(T))}}if(u.length>1)for(let h of u)Btt(n,h)}function TLe(n,a,c,u){let p=a.valueDeclaration,h=sa(p);if(h&&pi(h))return;let T=Zte(n,c),k=Ur(n)&2?nc(n.symbol,261):void 0,O=p&&p.kind===223||h&&h.kind===164?p:void 0,H=ju(a)===n.symbol?p:void 0;for(let J of T){let de=J.declaration&&ju(fr(J.declaration))===n.symbol?J.declaration:void 0,Ae=H||de||(k&&!vt(_o(n),xe=>!!qb(xe,a.escapedName)&&!!fg(xe,J.keyType))?k:void 0);if(Ae&&!to(u,J.type)){let xe=hE(Ae,_.Property_0_of_type_1_is_not_assignable_to_2_index_type_3,E(a),Ee(u),Ee(J.keyType),Ee(J.type));O&&Ae!==O&&Ao(xe,hr(O,_._0_is_declared_here,E(a))),Lo.add(xe)}}}function Btt(n,a){let c=a.declaration,u=Zte(n,a.keyType),p=Ur(n)&2?nc(n.symbol,261):void 0,h=c&&ju(fr(c))===n.symbol?c:void 0;for(let T of u){if(T===a)continue;let k=T.declaration&&ju(fr(T.declaration))===n.symbol?T.declaration:void 0,O=h||k||(p&&!vt(_o(n),H=>!!Cm(H,a.keyType)&&!!fg(H,T.keyType))?p:void 0);O&&!to(a.type,T.type)&&Fe(O,_._0_index_type_1_is_not_assignable_to_2_index_type_3,Ee(a.keyType),Ee(a.type),Ee(T.keyType),Ee(T.type))}}function WC(n,a){switch(n.escapedText){case\"any\":case\"unknown\":case\"never\":case\"number\":case\"bigint\":case\"boolean\":case\"string\":case\"symbol\":case\"void\":case\"object\":Fe(n,a,n.escapedText)}}function Utt(n){R>=1&&n.escapedText===\"Object\"&&(ie<5||Gn(n).impliedNodeFormat===1)&&Fe(n,_.Class_name_cannot_be_Object_when_targeting_ES5_with_module_0,F8[ie])}function Vtt(n){let a=Pr(A0(n),xp);if(!Fn(a))return;let c=Yn(n),u=new Set,p=new Set;if(mn(n.parameters,({name:T},k)=>{Re(T)&&u.add(T.escapedText),La(T)&&p.add(k)}),nne(n)){let T=a.length-1,k=a[T];c&&k&&Re(k.name)&&k.typeExpression&&k.typeExpression.type&&!u.has(k.name.escapedText)&&!p.has(T)&&!ff($r(k.typeExpression.type))&&Fe(k.name,_.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_It_would_match_arguments_if_it_had_an_array_type,vr(k.name))}else mn(a,({name:T,isNameFirst:k},O)=>{p.has(O)||Re(T)&&u.has(T.escapedText)||(Yu(T)?c&&Fe(T,_.Qualified_name_0_is_not_allowed_without_a_leading_param_object_1,Kd(T),Kd(T.left)):k||Ip(c,T,_.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name,vr(T)))})}function n8(n){let a=!1;if(n)for(let u=0;u<n.length;u++){let p=n[u];BIe(p),i(c(p,u))}function c(u,p){return()=>{u.default?(a=!0,jtt(u.default,n,p)):a&&Fe(u,_.Required_type_parameters_may_not_follow_optional_type_parameters);for(let h=0;h<p;h++)n[h].symbol===u.symbol&&Fe(u.name,_.Duplicate_identifier_0,os(u.name))}}}function jtt(n,a,c){u(n);function u(p){if(p.kind===180){let h=dne(p);if(h.flags&262144)for(let T=c;T<a.length;T++)h.symbol===fr(a[T])&&Fe(p,_.Type_parameter_defaults_can_only_reference_previously_declared_type_parameters)}pa(p,u)}}function SLe(n){if(n.declarations&&n.declarations.length===1)return;let a=Ai(n);if(!a.typeParametersChecked){a.typeParametersChecked=!0;let c=Ytt(n);if(!c||c.length<=1)return;let u=gs(n);if(!xLe(c,u.localTypeParameters,jy)){let p=E(n);for(let h of c)Fe(h.name,_.All_declarations_of_0_must_have_identical_type_parameters,p)}}}function xLe(n,a,c){let u=Fn(a),p=Mp(a);for(let h of n){let T=c(h),k=T.length;if(k<p||k>u)return!1;for(let O=0;O<k;O++){let H=T[O],J=a[O];if(H.name.escapedText!==J.symbol.escapedName)return!1;let de=TA(H),Ae=de&&$r(de),xe=eu(J);if(Ae&&xe&&!ph(Ae,xe))return!1;let tt=H.default&&$r(H.default),It=jE(J);if(tt&&It&&!ph(tt,It))return!1}}return!0}function ALe(n){var a;let c=!Q&&R<99&&O0(!1,n),u=R<=9,p=!fe||R<9;if(c||u)for(let h of n.members){if(c&&AH(!1,h,n))return(a=Sl(Uy(n)))!=null?a:n;if(u){if(oc(h))return h;if(Ca(h)&&(xu(h)||p&&cN(h)))return h}}}function Htt(n){var a;if(n.name)return;let c=rde(n);if(!VH(c))return;let u=!Q&&R<99,p;u&&O0(!1,n)?p=(a=Sl(Uy(n)))!=null?a:n:p=ALe(n),p&&(Hc(p,8388608),(yl(c)||Na(c)||Wo(c))&&ts(c.name)&&Hc(p,16777216))}function Wtt(n){return CLe(n),JC(n),Htt(n),zn(fr(n))}function ztt(n){mn(n.members,qa),Dy(n)}function Jtt(n){let a=wr(n.modifiers,du);Q&&a&&vt(n.members,c=>zc(c)&&xu(c))&&an(a,_.Class_decorators_can_t_be_used_with_static_private_identifier_Consider_removing_the_experimental_decorator),!n.name&&!Mr(n,1024)&&dl(n,_.A_class_declaration_without_the_default_modifier_must_have_a_name),CLe(n),mn(n.members,qa),Dy(n)}function CLe(n){Lrt(n),YM(n),HC(n,n.name),n8(jy(n)),DD(n);let a=fr(n),c=gs(a),u=lf(c),p=zn(a);SLe(a),cU(a),oet(n),!!(n.flags&16777216)||set(n);let T=hp(n);if(T){mn(T.typeArguments,qa),R<2&&Hc(T.parent,1);let H=P0(n);H&&H!==T&&Yi(H.expression);let J=_o(c);J.length&&i(()=>{let de=J[0],Ae=Wr(c),xe=Eu(Ae);if(qtt(xe,T),qa(T.expression),vt(T.typeArguments)){mn(T.typeArguments,qa);for(let It of Or(xe,T.typeArguments,T))if(!JIe(T,It.typeParameters))break}let tt=lf(de,c.thisType);if(wu(u,tt,void 0)?wu(p,KAe(xe),n.name||n,_.Class_static_side_0_incorrectly_extends_base_class_static_side_1):kLe(n,u,tt,_.Class_0_incorrectly_extends_base_class_1),Ae.flags&8650752&&(YP(p)?xa(Ae,1).some(Tn=>Tn.flags&4)&&!Mr(n,256)&&Fe(n.name||n,_.A_mixin_class_that_extends_from_a_type_variable_containing_an_abstract_construct_signature_must_also_be_declared_abstract):Fe(n.name||n,_.A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any)),!(xe.symbol&&xe.symbol.flags&32)&&!(Ae.flags&8650752)){let It=xr(xe,T.typeArguments,T);mn(It,Tn=>!sp(Tn.declaration)&&!ph(qo(Tn),de))&&Fe(T.expression,_.Base_constructors_must_all_have_the_same_return_type)}$tt(c,de)})}Ktt(n,c,u,p);let k=KA(n);if(k)for(let H of k)(!bc(H.expression)||Jl(H.expression))&&Fe(H.expression,_.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments),Aie(H),i(O(H));i(()=>{mU(c,a),mU(p,a,!0),Tie(n),ent(n)});function O(H){return()=>{let J=R_($r(H));if(!Ro(J))if(xm(J)){let de=J.symbol&&J.symbol.flags&32?_.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass:_.Class_0_incorrectly_implements_interface_1,Ae=lf(J,c.thisType);wu(u,Ae,void 0)||kLe(n,u,Ae,de)}else Fe(H,_.A_class_can_only_implement_an_object_type_or_intersection_of_object_types_with_statically_known_members)}}}function Ktt(n,a,c,u){let h=hp(n)&&_o(a),T=h?.length?lf(Vo(h),a.thisType):void 0,k=Wr(a);for(let O of n.members)aW(O)||(Ec(O)&&mn(O.parameters,H=>{Ad(H,O)&&ILe(n,u,k,T,a,c,H,!0)}),ILe(n,u,k,T,a,c,O,!1))}function ILe(n,a,c,u,p,h,T,k,O=!0){let H=T.name&&Qf(T.name)||Qf(T);return H?LLe(n,a,c,u,p,h,iW(T),B0(T),Ca(T),k,fc(H),O?T:void 0):0}function LLe(n,a,c,u,p,h,T,k,O,H,J,de){let Ae=Yn(n),xe=!!(n.flags&16777216);if(u&&(T||Y.noImplicitOverride)){let tt=Bs(J),It=O?a:h,Tn=O?c:u,un=ja(It,tt),Nn=ja(Tn,tt),en=Ee(u);if(un&&!Nn&&T){if(de){let cn=UCe(J,Tn);cn?Fe(de,Ae?_.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1:_.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1,en,E(cn)):Fe(de,Ae?_.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0:_.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0,en)}return 2}else if(un&&Nn?.declarations&&Y.noImplicitOverride&&!xe){let cn=vt(Nn.declarations,B0);if(T)return 0;if(cn){if(k&&cn)return de&&Fe(de,_.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0,en),1}else{if(de){let rr=H?Ae?_.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0:_.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0:Ae?_.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0:_.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0;Fe(de,rr,en)}return 1}}}else if(T){if(de){let tt=Ee(p);Fe(de,Ae?_.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class:_.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class,tt)}return 2}return 0}function kLe(n,a,c,u){let p=!1;for(let h of n.members){if(Ca(h))continue;let T=h.name&&Qf(h.name)||Qf(h);if(T){let k=ja(a,T.escapedName),O=ja(c,T.escapedName);if(k&&O){let H=()=>da(void 0,_.Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2,E(T),Ee(a),Ee(c));wu(zn(k),zn(O),h.name||h,void 0,H)||(p=!0)}}}p||wu(a,c,n.name||n,u)}function qtt(n,a){let c=xa(n,1);if(c.length){let u=c[0].declaration;if(u&&cd(u,8)){let p=Nh(n.symbol);Hie(a,p)||Fe(a,_.Cannot_extend_a_class_0_Class_constructor_is_marked_as_private,rh(n.symbol))}}}function Xtt(n,a,c){if(!a.name)return 0;let u=fr(n),p=gs(u),h=lf(p),T=zn(u),O=hp(n)&&_o(p),H=O?.length?lf(Vo(O),p.thisType):void 0,J=Wr(p),de=a.parent?iW(a):Mr(a,16384);return LLe(n,T,J,H,p,h,de,B0(a),Ca(a),!1,fc(c))}function sA(n){return ac(n)&1?n.links.target:n}function Ytt(n){return Pr(n.declarations,a=>a.kind===260||a.kind===261)}function $tt(n,a){var c,u,p,h;let T=Jo(a);e:for(let k of T){let O=sA(k);if(O.flags&4194304)continue;let H=qb(n,O.escapedName);if(!H)continue;let J=sA(H),de=bf(O);if(L.assert(!!J,\"derived should point to something, even if it is the base class' declaration.\"),J===O){let Ae=Nh(n.symbol);if(de&256&&(!Ae||!Mr(Ae,256))){for(let xe of _o(n)){if(xe===a)continue;let tt=qb(xe,O.escapedName),It=tt&&sA(tt);if(It&&It!==O)continue e}Ae.kind===228?Fe(Ae,_.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1,E(k),Ee(a)):Fe(Ae,_.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2,Ee(n),E(k),Ee(a))}}else{let Ae=bf(J);if(de&8||Ae&8)continue;let xe,tt=O.flags&98308,It=J.flags&98308;if(tt&&It){if((ac(O)&6?(c=O.declarations)==null?void 0:c.some(Nn=>DLe(Nn,de)):(u=O.declarations)==null?void 0:u.every(Nn=>DLe(Nn,de)))||ac(O)&262144||J.valueDeclaration&&ar(J.valueDeclaration))continue;let Tn=tt!==4&&It===4;if(Tn||tt===4&&It!==4){let Nn=Tn?_._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property:_._0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor;Fe(sa(J.valueDeclaration)||J.valueDeclaration,Nn,E(O),Ee(a),Ee(n))}else if(fe){let Nn=(p=J.declarations)==null?void 0:p.find(en=>en.kind===169&&!en.initializer);if(Nn&&!(J.flags&33554432)&&!(de&256)&&!(Ae&256)&&!((h=J.declarations)!=null&&h.some(en=>!!(en.flags&16777216)))){let en=wv(Nh(n.symbol)),cn=Nn.name;if(Nn.exclamationToken||!en||!Re(cn)||!U||!RLe(cn,n,en)){let rr=_.Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_add_a_declare_modifier_or_remove_the_redundant_declaration;Fe(sa(J.valueDeclaration)||J.valueDeclaration,rr,E(O),Ee(a))}}}continue}else if(jre(O)){if(jre(J)||J.flags&4)continue;L.assert(!!(J.flags&98304)),xe=_.Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor}else O.flags&98304?xe=_.Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function:xe=_.Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function;Fe(sa(J.valueDeclaration)||J.valueDeclaration,xe,Ee(a),E(O),Ee(n))}}}function DLe(n,a){return a&256&&(!Na(n)||!n.initializer)||ku(n.parent)}function Qtt(n,a,c){if(!Fn(a))return c;let u=new Map;mn(c,p=>{u.set(p.escapedName,p)});for(let p of a){let h=Jo(lf(p,n.thisType));for(let T of h){let k=u.get(T.escapedName);k&&T.parent===k.parent&&u.delete(T.escapedName)}}return lo(u.values())}function Ztt(n,a){let c=_o(n);if(c.length<2)return!0;let u=new Map;mn(Nte(n).declaredProperties,h=>{u.set(h.escapedName,{prop:h,containingType:n})});let p=!0;for(let h of c){let T=Jo(lf(h,n.thisType));for(let k of T){let O=u.get(k.escapedName);if(!O)u.set(k.escapedName,{prop:k,containingType:h});else if(O.containingType!==n&&!hXe(O.prop,k)){p=!1;let J=Ee(O.containingType),de=Ee(h),Ae=da(void 0,_.Named_property_0_of_types_1_and_2_are_not_identical,E(k),J,de);Ae=da(Ae,_.Interface_0_cannot_simultaneously_extend_types_1_and_2,Ee(n),J,de),Lo.add(Lh(Gn(a),a,Ae))}}}return p}function ent(n){if(!U||!_e||n.flags&16777216)return;let a=wv(n);for(let c of n.members)if(!(uu(c)&2)&&!Ca(c)&&wLe(c)){let u=c.name;if(Re(u)||pi(u)||ts(u)){let p=zn(fr(c));p.flags&3||AC(p)||(!a||!RLe(u,p,a))&&Fe(c.name,_.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor,os(u))}}}function wLe(n){return n.kind===169&&!B0(n)&&!n.exclamationToken&&!n.initializer}function tnt(n,a,c,u,p){for(let h of c)if(h.pos>=u&&h.pos<=p){let T=D.createPropertyAccessExpression(D.createThis(),n);go(T.expression,T),go(T,h),T.flowNode=h.returnFlowNode;let k=Yv(T,a,gg(a));if(!AC(k))return!0}return!1}function RLe(n,a,c){let u=ts(n)?D.createElementAccessExpression(D.createThis(),n.expression):D.createPropertyAccessExpression(D.createThis(),n);go(u.expression,u),go(u,c),u.flowNode=c.returnFlowNode;let p=Yv(u,a,gg(a));return!AC(p)}function nnt(n){km(n)||Prt(n),n8(n.typeParameters),i(()=>{WC(n.name,_.Interface_name_cannot_be_0),DD(n);let a=fr(n);SLe(a);let c=nc(a,261);if(n===c){let u=gs(a),p=lf(u);if(Ztt(u,n.name)){for(let h of _o(u))wu(p,lf(h,u.thisType),n.name,_.Interface_0_incorrectly_extends_interface_1);mU(u,a)}}jIe(n)}),mn(MI(n),a=>{(!bc(a.expression)||Jl(a.expression))&&Fe(a.expression,_.An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments),Aie(a)}),mn(n.members,qa),i(()=>{Tie(n),Dy(n)})}function rnt(n){km(n),WC(n.name,_.Type_alias_name_cannot_be_0),DD(n),n8(n.typeParameters),n.type.kind===139?(!iN.has(n.name.escapedText)||Fn(n.typeParameters)!==1)&&Fe(n.type,_.The_intrinsic_keyword_can_only_be_used_to_declare_compiler_provided_intrinsic_types):(qa(n.type),Dy(n))}function OLe(n){let a=Rr(n);if(!(a.flags&1024)){a.flags|=1024;let c=0;for(let u of n.members){let p=int(u,c);Rr(u).enumMemberValue=p,c=typeof p==\"number\"?p+1:void 0}}}function int(n,a){if(jw(n.name))Fe(n.name,_.Computed_property_names_are_not_allowed_in_enums);else{let c=RA(n.name);Wm(c)&&!lL(c)&&Fe(n.name,_.An_enum_member_cannot_have_a_numeric_name)}if(n.initializer)return ant(n);if(!(n.parent.flags&16777216&&!R0(n.parent))){if(a!==void 0)return a;Fe(n.name,_.Enum_member_must_have_initializer)}}function ant(n){let a=R0(n.parent),c=n.initializer,u=zC(c,n);return u!==void 0?a&&typeof u==\"number\"&&!isFinite(u)&&Fe(c,isNaN(u)?_.const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN:_.const_enum_member_initializer_was_evaluated_to_a_non_finite_value):a?Fe(c,_.const_enum_member_initializers_must_be_constant_expressions):n.parent.flags&16777216?Fe(c,_.In_ambient_enum_declarations_member_initializer_must_be_constant_expression):wu(Yi(c),rt,c,_.Type_0_is_not_assignable_to_type_1_as_required_for_computed_enum_member_values),u}function zC(n,a){switch(n.kind){case 221:let c=zC(n.operand,a);if(typeof c==\"number\")switch(n.operator){case 39:return c;case 40:return-c;case 54:return~c}break;case 223:let u=zC(n.left,a),p=zC(n.right,a);if(typeof u==\"number\"&&typeof p==\"number\")switch(n.operatorToken.kind){case 51:return u|p;case 50:return u&p;case 48:return u>>p;case 49:return u>>>p;case 47:return u<<p;case 52:return u^p;case 41:return u*p;case 43:return u/p;case 39:return u+p;case 40:return u-p;case 44:return u%p;case 42:return u**p}else if((typeof u==\"string\"||typeof u==\"number\")&&(typeof p==\"string\"||typeof p==\"number\")&&n.operatorToken.kind===39)return\"\"+u+p;break;case 10:case 14:return n.text;case 225:return ont(n,a);case 8:return eae(n),+n.text;case 214:return zC(n.expression,a);case 79:if(lL(n.escapedText))return+n.escapedText;case 208:if(bc(n)){let T=uc(n,111551,!0);if(T){if(T.flags&8)return NLe(n,T,a);if(RC(T)){let k=T.valueDeclaration;if(k&&!k.type&&k.initializer&&k!==a&&$h(k,a))return zC(k.initializer,k)}}}break;case 209:let h=n.expression;if(bc(h)&&es(n.argumentExpression)){let T=uc(h,111551,!0);if(T&&T.flags&384){let k=Bs(n.argumentExpression.text),O=T.exports.get(k);if(O)return NLe(n,O,a)}}break}}function NLe(n,a,c){let u=a.valueDeclaration;if(!u||u===c){Fe(n,_.Property_0_is_used_before_being_assigned,E(a));return}return $h(u,c)?xU(u):(Fe(n,_.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums),0)}function ont(n,a){let c=n.head.text;for(let u of n.templateSpans){let p=zC(u.expression,a);if(p===void 0)return;c+=p,c+=u.literal.text}return c}function snt(n){i(()=>cnt(n))}function cnt(n){km(n),HC(n,n.name),DD(n),n.members.forEach(lnt),OLe(n);let a=fr(n),c=nc(a,n.kind);if(n===c){if(a.declarations&&a.declarations.length>1){let p=R0(n);mn(a.declarations,h=>{hb(h)&&R0(h)!==p&&Fe(sa(h),_.Enum_declarations_must_all_be_const_or_non_const)})}let u=!1;mn(a.declarations,p=>{if(p.kind!==263)return!1;let h=p;if(!h.members.length)return!1;let T=h.members[0];T.initializer||(u?Fe(T.name,_.In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element):u=!0)})}}function lnt(n){pi(n.name)&&Fe(n,_.An_enum_member_cannot_be_named_with_a_private_identifier),n.initializer&&Yi(n.initializer)}function unt(n){let a=n.declarations;if(a){for(let c of a)if((c.kind===260||c.kind===259&&Nf(c.body))&&!(c.flags&16777216))return c}}function dnt(n,a){let c=tm(n),u=tm(a);return gm(c)?gm(u):gm(u)?!1:c===u}function fnt(n){n.body&&(qa(n.body),mp(n)||Dy(n)),i(a);function a(){var c,u;let p=mp(n),h=n.flags&16777216;p&&!h&&Fe(n.name,_.Augmentations_for_the_global_scope_should_have_declare_modifier_unless_they_appear_in_already_ambient_context);let T=lu(n),k=T?_.An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file:_.A_namespace_declaration_is_only_allowed_at_the_top_level_of_a_namespace_or_module;if(r8(n,k))return;km(n)||!h&&n.name.kind===10&&an(n.name,_.Only_ambient_modules_can_use_quoted_names),Re(n.name)&&HC(n,n.name),DD(n);let O=fr(n);if(O.flags&512&&!h&&fK(n,U0(Y))){if(u_(Y)&&!Gn(n).externalModuleIndicator&&Fe(n.name,_.Namespaces_are_not_allowed_in_global_script_files_when_0_is_enabled_If_this_file_is_not_intended_to_be_a_global_script_set_moduleDetection_to_force_or_add_an_empty_export_statement,Rt),((c=O.declarations)==null?void 0:c.length)>1){let H=unt(O);H&&(Gn(n)!==Gn(H)?Fe(n.name,_.A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged):n.pos<H.pos&&Fe(n.name,_.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged));let J=nc(O,260);J&&dnt(n,J)&&(Rr(n).flags|=2048)}if(Y.verbatimModuleSyntax&&n.parent.kind===308&&(ie===1||n.parent.impliedNodeFormat===1)){let H=(u=n.modifiers)==null?void 0:u.find(J=>J.kind===93);H&&Fe(H,_.A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled)}}if(T)if(D0(n)){if((p||fr(n).flags&33554432)&&n.body)for(let J of n.body.statements)Bie(J,p)}else gm(n.parent)?p?Fe(n.name,_.Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_declarations):fl(c_(n.name))&&Fe(n.name,_.Ambient_module_declaration_cannot_specify_relative_module_name):p?Fe(n.name,_.Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_declarations):Fe(n.name,_.Ambient_modules_cannot_be_nested_in_other_modules_or_namespaces)}}function Bie(n,a){switch(n.kind){case 240:for(let u of n.declarationList.declarations)Bie(u,a);break;case 274:case 275:dl(n,_.Exports_and_export_assignments_are_not_permitted_in_module_augmentations);break;case 268:case 269:dl(n,_.Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_module);break;case 205:case 257:let c=n.name;if(La(c)){for(let u of c.elements)Bie(u,a);break}case 260:case 263:case 259:case 261:case 264:case 262:if(a)return;break}}function _nt(n){switch(n.kind){case 79:return n;case 163:do n=n.left;while(n.kind!==79);return n;case 208:do{if(Bm(n.expression)&&!pi(n.name))return n.name;n=n.expression}while(n.kind!==79);return n}}function Uie(n){let a=VA(n);if(!a||rc(a))return!1;if(!yo(a))return Fe(a,_.String_literal_expected),!1;let c=n.parent.kind===265&&lu(n.parent.parent);if(n.parent.kind!==308&&!c)return Fe(a,n.kind===275?_.Export_declarations_are_not_permitted_in_a_namespace:_.Import_declarations_in_a_namespace_cannot_reference_a_module),!1;if(c&&fl(a.text)&&!Td(n))return Fe(n,_.Import_or_export_declaration_in_an_ambient_module_declaration_cannot_reference_module_through_relative_module_name),!1;if(!Nl(n)&&n.assertClause){let u=!1;for(let p of n.assertClause.elements)yo(p.value)||(u=!0,Fe(p.value,_.Import_assertion_values_must_be_string_literal_expressions));return!u}return!0}function hU(n){var a,c,u,p,h;let T=fr(n),k=wc(T);if(k!==Ht){if(T=No(T.exportSymbol||T),Yn(n)&&!(k.flags&111551)&&!I0(n)){let J=tS(n)?n.propertyName||n.name:zl(n)?n.name:n;if(L.assert(n.kind!==277),n.kind===278){let de=Fe(J,_.Types_cannot_appear_in_export_declarations_in_JavaScript_files),Ae=(c=(a=Gn(n).symbol)==null?void 0:a.exports)==null?void 0:c.get((n.propertyName||n.name).escapedText);if(Ae===k){let xe=(u=Ae.declarations)==null?void 0:u.find(LA);xe&&Ao(de,hr(xe,_._0_is_automatically_exported_here,Gi(Ae.escapedName)))}}else{L.assert(n.kind!==257);let de=jn(n,Kp(gl,Nl)),Ae=(h=de&&((p=aR(de))==null?void 0:p.text))!=null?h:\"...\",xe=Gi(Re(J)?J.escapedText:T.escapedName);Fe(J,_._0_is_a_type_and_cannot_be_imported_in_JavaScript_files_Use_1_in_a_JSDoc_type_annotation,xe,`import(\"${Ae}\").${xe}`)}return}let O=Fl(k),H=(T.flags&1160127?111551:0)|(T.flags&788968?788968:0)|(T.flags&1920?1920:0);if(O&H){let J=n.kind===278?_.Export_declaration_conflicts_with_exported_declaration_of_0:_.Import_declaration_conflicts_with_local_declaration_of_0;Fe(n,J,E(T))}if(u_(Y)&&!I0(n)&&!(n.flags&16777216)){let J=nd(T),de=!(O&111551);if(de||J)switch(n.kind){case 270:case 273:case 268:{if(Y.preserveValueImports||Y.verbatimModuleSyntax){L.assertIsDefined(n.name,\"An ImportClause with a symbol should have a name\");let Ae=Y.verbatimModuleSyntax&&BA(n)?_.An_import_alias_cannot_resolve_to_a_type_or_type_only_declaration_when_verbatimModuleSyntax_is_enabled:de?Y.verbatimModuleSyntax?_._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled:_._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled:Y.verbatimModuleSyntax?_._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled:_._0_resolves_to_a_type_only_declaration_and_must_be_imported_using_a_type_only_import_when_preserveValueImports_and_isolatedModules_are_both_enabled,xe=vr(n.kind===273&&n.propertyName||n.name);b1(Fe(n,Ae,xe),de?void 0:J,xe)}de&&n.kind===268&&cd(n,1)&&Fe(n,_.Cannot_use_export_import_on_a_type_or_type_only_namespace_when_0_is_enabled,Rt);break}case 278:if(Y.verbatimModuleSyntax||Gn(J)!==Gn(n)){let Ae=vr(n.propertyName||n.name),xe=de?Fe(n,_.Re_exporting_a_type_when_0_is_enabled_requires_using_export_type,Rt):Fe(n,_._0_resolves_to_a_type_only_declaration_and_must_be_re_exported_using_a_type_only_re_export_when_1_is_enabled,Ae,Rt);b1(xe,de?void 0:J,Ae);break}}Y.verbatimModuleSyntax&&n.kind!==268&&!Yn(n)&&(ie===1||Gn(n).impliedNodeFormat===1)&&Fe(n,_.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled)}if($u(n)){let J=MLe(T,n);PLe(J)&&J.declarations&&Xh(n,J.declarations,J.escapedName)}}}function PLe(n){return!!n.declarations&&Ji(n.declarations,a=>!!(F_(a)&268435456))}function MLe(n,a){if(!(n.flags&2097152))return n;let c=wc(n);if(c===Ht)return c;for(;n.flags&2097152;){let u=Mre(n);if(u){if(u===c)break;if(u.declarations&&Fn(u.declarations))if(PLe(u)){Xh(a,u.declarations,u.escapedName);break}else{if(n===c)break;n=u}}else break}return c}function gU(n){HC(n,n.name),hU(n),n.kind===273&&vr(n.propertyName||n.name)===\"default\"&&d_(Y)&&ie!==4&&(ie<5||Gn(n).impliedNodeFormat===1)&&Hc(n,131072)}function FLe(n){var a;if(n.assertClause){let c=oq(n),u=XS(n.assertClause,c?an:void 0);if(c&&u)return SR()||an(n.assertClause,_.resolution_mode_assertions_are_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next),$s(Y)!==3&&$s(Y)!==99?an(n.assertClause,_.resolution_mode_assertions_are_only_supported_when_moduleResolution_is_node16_or_nodenext):void 0;if((ie===199&&n.moduleSpecifier&&ty(n.moduleSpecifier))!==99&&ie!==99)return an(n.assertClause,ie===199?_.Import_assertions_are_not_allowed_on_statements_that_transpile_to_commonjs_require_calls:_.Import_assertions_are_only_supported_when_the_module_option_is_set_to_esnext_or_nodenext);if(gl(n)?(a=n.importClause)==null?void 0:a.isTypeOnly:n.isTypeOnly)return an(n.assertClause,_.Import_assertions_cannot_be_used_with_type_only_imports_or_exports);if(u)return an(n.assertClause,_.resolution_mode_can_only_be_set_for_type_only_imports)}}function pnt(n){if(!r8(n,Yn(n)?_.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module:_.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)){if(!km(n)&&n4(n)&&dl(n,_.An_import_declaration_cannot_have_modifiers),Uie(n)){let a=n.importClause;a&&!sit(a)&&(a.name&&gU(a),a.namedBindings&&(a.namedBindings.kind===271?(gU(a.namedBindings),ie!==4&&(ie<5||Gn(n).impliedNodeFormat===1)&&d_(Y)&&Hc(n,65536)):Gl(n,n.moduleSpecifier)&&mn(a.namedBindings.elements,gU)))}FLe(n)}}function mnt(n){if(!r8(n,Yn(n)?_.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module:_.An_import_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)&&(km(n),BA(n)||Uie(n)))if(gU(n),Mr(n,1)&&TE(n),n.moduleReference.kind!==280){let a=wc(fr(n));if(a!==Ht){let c=Fl(a);if(c&111551){let u=Xd(n.moduleReference);uc(u,112575).flags&1920||Fe(u,_.Module_0_is_hidden_by_a_local_declaration_with_the_same_name,os(u))}c&788968&&WC(n.name,_.Import_name_cannot_be_0)}n.isTypeOnly&&an(n,_.An_import_alias_cannot_use_import_type)}else ie>=5&&Gn(n).impliedNodeFormat===void 0&&!n.isTypeOnly&&!(n.flags&16777216)&&an(n,_.Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead)}function hnt(n){if(!r8(n,Yn(n)?_.An_export_declaration_can_only_be_used_at_the_top_level_of_a_module:_.An_export_declaration_can_only_be_used_at_the_top_level_of_a_namespace_or_module)){if(!km(n)&&Wce(n)&&dl(n,_.An_export_declaration_cannot_have_modifiers),n.moduleSpecifier&&n.exportClause&&m_(n.exportClause)&&Fn(n.exportClause.elements)&&R===0&&Hc(n,4194304),gnt(n),!n.moduleSpecifier||Uie(n))if(n.exportClause&&!qm(n.exportClause)){mn(n.exportClause.elements,Snt);let a=n.parent.kind===265&&lu(n.parent.parent),c=!a&&n.parent.kind===265&&!n.moduleSpecifier&&n.flags&16777216;n.parent.kind!==308&&!a&&!c&&Fe(n,_.Export_declarations_are_not_permitted_in_a_namespace)}else{let a=Gl(n,n.moduleSpecifier);a&&AE(a)?Fe(n.moduleSpecifier,_.Module_0_uses_export_and_cannot_be_used_with_export_Asterisk,E(a)):n.exportClause&&hU(n.exportClause),ie!==4&&(ie<5||Gn(n).impliedNodeFormat===1)&&(n.exportClause?d_(Y)&&Hc(n,65536):Hc(n,32768))}FLe(n)}}function gnt(n){var a;return n.isTypeOnly&&((a=n.exportClause)==null?void 0:a.kind)===276?pke(n.exportClause):!1}function r8(n,a){let c=n.parent.kind===308||n.parent.kind===265||n.parent.kind===264;return c||dl(n,a),!c}function ynt(n){return z6(n,a=>!!fr(a).isReferenced)}function vnt(n){return z6(n,a=>!!Ai(fr(a)).constEnumReferenced)}function bnt(n){return gl(n)&&n.importClause&&!n.importClause.isTypeOnly&&ynt(n.importClause)&&!SU(n.importClause,!0)&&!vnt(n.importClause)}function Ent(n){return Nl(n)&&um(n.moduleReference)&&!n.isTypeOnly&&fr(n).isReferenced&&!SU(n,!1)&&!Ai(fr(n)).constEnumReferenced}function Tnt(n){for(let a of n.statements)(bnt(a)||Ent(a))&&Fe(a,_.This_import_is_never_used_as_a_value_and_must_use_import_type_because_importsNotUsedAsValues_is_set_to_error)}function Snt(n){if(hU(n),f_(Y)&&ME(n.propertyName||n.name,!0),n.parent.parent.moduleSpecifier)d_(Y)&&ie!==4&&(ie<5||Gn(n).impliedNodeFormat===1)&&vr(n.propertyName||n.name)===\"default\"&&Hc(n,131072);else{let a=n.propertyName||n.name,c=zs(a,a.escapedText,2998271,void 0,void 0,!0);if(c&&(c===Le||c===Ye||c.declarations&&gm(FE(c.declarations[0]))))Fe(a,_.Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module,vr(a));else{!n.isTypeOnly&&!n.parent.parent.isTypeOnly&&TE(n);let u=c&&(c.flags&2097152?wc(c):c);(!u||Fl(u)&111551)&&Ic(n.propertyName||n.name)}}}function xnt(n){let a=n.isExportEquals?_.An_export_assignment_must_be_at_the_top_level_of_a_file_or_module_declaration:_.A_default_export_must_be_at_the_top_level_of_a_file_or_module_declaration;if(r8(n,a))return;let c=n.parent.kind===308?n.parent:n.parent.parent;if(c.kind===264&&!lu(c)){n.isExportEquals?Fe(n,_.An_export_assignment_cannot_be_used_in_a_namespace):Fe(n,_.A_default_export_can_only_be_used_in_an_ECMAScript_style_module);return}!km(n)&&n4(n)&&dl(n,_.An_export_assignment_cannot_have_modifiers);let u=Cl(n);u&&wu(Ic(n.expression),$r(u),n.expression);let p=!n.isExportEquals&&!(n.flags&16777216)&&Y.verbatimModuleSyntax&&(ie===1||Gn(n).impliedNodeFormat===1);if(n.expression.kind===79){let h=n.expression,T=ep(uc(h,67108863,!0,!0,n));T?(FB(T,h),Fl(T)&111551?(Ic(h),!p&&Y.verbatimModuleSyntax&&nd(T,111551)&&Fe(h,n.isExportEquals?_.An_export_declaration_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration:_.An_export_default_must_reference_a_real_value_when_verbatimModuleSyntax_is_enabled_but_0_resolves_to_a_type_only_declaration,vr(h))):!p&&Y.verbatimModuleSyntax&&Fe(h,n.isExportEquals?_.An_export_declaration_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type:_.An_export_default_must_reference_a_value_when_verbatimModuleSyntax_is_enabled_but_0_only_refers_to_a_type,vr(h))):Ic(h),f_(Y)&&ME(h,!0)}else Ic(n.expression);p&&Fe(n,_.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled),GLe(c),n.flags&16777216&&!bc(n.expression)&&an(n.expression,_.The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context),n.isExportEquals&&(ie>=5&&(n.flags&16777216&&Gn(n).impliedNodeFormat===99||!(n.flags&16777216)&&Gn(n).impliedNodeFormat!==1)?an(n,_.Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or_another_module_format_instead):ie===4&&!(n.flags&16777216)&&an(n,_.Export_assignment_is_not_supported_when_module_flag_is_system))}function Ant(n){return Ld(n.exports,(a,c)=>c!==\"export=\")}function GLe(n){let a=fr(n),c=Ai(a);if(!c.exportsChecked){let u=a.exports.get(\"export=\");if(u&&Ant(a)){let h=Uu(u)||u.valueDeclaration;h&&!Td(h)&&!Yn(h)&&Fe(h,_.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements)}let p=sh(a);p&&p.forEach(({declarations:h,flags:T},k)=>{if(k===\"__export\"||T&1920)return;let O=Oy(h,g8(O_e,y8(ku)));if(!(T&524288&&O<=2)&&O>1&&!yU(h))for(let H of h)D_e(H)&&Lo.add(hr(H,_.Cannot_redeclare_exported_variable_0,Gi(k)))}),c.exportsChecked=!0}}function yU(n){return n&&n.length>1&&n.every(a=>Yn(a)&&Us(a)&&(ST(a.expression)||Bm(a.expression)))}function qa(n){if(n){let a=P;P=n,A=0,Cnt(n),P=a}}function Cnt(n){uR(n)&&mn(n.jsDoc,({comment:c,tags:u})=>{BLe(c),mn(u,p=>{BLe(p.comment),Yn(n)&&qa(p)})});let a=n.kind;if(o)switch(a){case 264:case 260:case 261:case 259:o.throwIfCancellationRequested()}switch(a>=240&&a<=256&&lR(n)&&n.flowNode&&!LM(n.flowNode)&&Ip(Y.allowUnreachableCode===!1,n,_.Unreachable_code_detected),a){case 165:return BIe(n);case 166:return UIe(n);case 169:return HIe(n);case 168:return cet(n);case 182:case 181:case 176:case 177:case 178:return kD(n);case 171:case 170:return uet(n);case 172:return det(n);case 173:return fet(n);case 174:case 175:return zIe(n);case 180:return Aie(n);case 179:return iet(n);case 183:return yet(n);case 184:return vet(n);case 185:return bet(n);case 186:return Eet(n);case 189:case 190:return Tet(n);case 193:case 187:case 188:return qa(n.type);case 194:return Iet(n);case 195:return Let(n);case 191:return ket(n);case 192:return Det(n);case 200:return wet(n);case 202:return Ret(n);case 199:return Oet(n);case 331:return $et(n);case 332:return Yet(n);case 349:case 341:case 343:return jet(n);case 348:return Het(n);case 347:return Wet(n);case 327:case 328:case 329:return Jet(n);case 344:return Ket(n);case 351:return qet(n);case 320:Xet(n);case 318:case 317:case 315:case 316:case 325:ULe(n),pa(n,qa);return;case 321:Int(n);return;case 312:return qa(n.type);case 336:case 338:case 337:return Qet(n);case 353:return zet(n);case 196:return xet(n);case 197:return Aet(n);case 259:return Vet(n);case 238:case 265:return dU(n);case 240:return mtt(n);case 241:return htt(n);case 242:return gtt(n);case 243:return btt(n);case 244:return Ett(n);case 245:return Ttt(n);case 246:return xtt(n);case 247:return Stt(n);case 248:case 249:return Rtt(n);case 250:return Ott(n);case 251:return Ntt(n);case 252:return Ptt(n);case 253:return Mtt(n);case 254:return Ftt(n);case 255:return Gtt(n);case 257:return Die(n);case 205:return ptt(n);case 260:return Jtt(n);case 261:return nnt(n);case 262:return rnt(n);case 263:return snt(n);case 264:return fnt(n);case 269:return pnt(n);case 268:return mnt(n);case 275:return hnt(n);case 274:return xnt(n);case 239:case 256:vh(n);return;case 279:return pet(n)}}function BLe(n){ba(n)&&mn(n,a=>{aS(a)&&qa(a)})}function ULe(n){if(!Yn(n))if(m3(n)||S2(n)){let a=Xa(m3(n)?53:57),c=n.postfix?_._0_at_the_end_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1:_._0_at_the_start_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1,u=n.type,p=$r(u);an(n,c,a,Ee(S2(n)&&!(p===lt||p===yt)?Gr(Sn([p,Oe],n.postfix?void 0:ln)):p))}else an(n,_.JSDoc_types_can_only_be_used_inside_documentation_comments)}function Int(n){ULe(n),qa(n.type);let{parent:a}=n;if(ha(a)&&x2(a.parent)){To(a.parent.parameters)!==a&&Fe(n,_.A_rest_parameter_must_be_last_in_a_parameter_list);return}VT(a)||Fe(n,_.JSDoc_may_only_appear_in_the_last_parameter_of_a_signature);let c=n.parent.parent;if(!xp(c)){Fe(n,_.JSDoc_may_only_appear_in_the_last_parameter_of_a_signature);return}let u=dR(c);if(!u)return;let p=sb(c);(!p||To(p.parameters).symbol!==u)&&Fe(n,_.A_rest_parameter_must_be_last_in_a_parameter_list)}function Lnt(n){let a=$r(n.type),{parent:c}=n,u=n.parent.parent;if(VT(n.parent)&&xp(u)){let p=sb(u),h=Vz(u.parent.parent);if(p||h){let T=Os(h?u.parent.parent.typeExpression.parameters:p.parameters),k=dR(u);if(!T||k&&T.symbol===k&&Fm(T))return nu(a)}}return ha(c)&&x2(c.parent)?nu(a):ao(a)}function JC(n){let a=Gn(n),c=Rr(a);c.flags&1?L.assert(!c.deferredNodes,\"A type-checked file should have no deferred nodes.\"):(c.deferredNodes||(c.deferredNodes=new Set),c.deferredNodes.add(n))}function knt(n){let a=Rr(n);a.deferredNodes&&a.deferredNodes.forEach(Dnt),a.deferredNodes=void 0}function Dnt(n){var a,c;(a=ai)==null||a.push(ai.Phase.Check,\"checkDeferredNode\",{kind:n.kind,pos:n.pos,end:n.end,path:n.tracingPath});let u=P;switch(P=n,A=0,n.kind){case 210:case 211:case 212:case 167:case 283:rA(n);break;case 215:case 216:case 171:case 170:EZe(n);break;case 174:case 175:zIe(n);break;case 228:ztt(n);break;case 165:ret(n);break;case 282:N$e(n);break;case 281:M$e(n);break}P=u,(c=ai)==null||c.pop()}function wnt(n){var a,c;(a=ai)==null||a.push(ai.Phase.Check,\"checkSourceFile\",{path:n.path},!0),Fs(\"beforeCheck\"),Rnt(n),Fs(\"afterCheck\"),mf(\"Check\",\"beforeCheck\",\"afterCheck\"),(c=ai)==null||c.pop()}function VLe(n,a){if(a)return!1;switch(n){case 0:return!!Y.noUnusedLocals;case 1:return!!Y.noUnusedParameters;default:return L.assertNever(n)}}function jLe(n){return rn.get(n.path)||Je}function Rnt(n){let a=Rr(n);if(!(a.flags&1)){if(iL(n,Y,e))return;nit(n),Om(pE),Om(vv),Om(Lb),Om(bv),Om(h1),mn(n.statements,qa),qa(n.endOfFileToken),knt(n),kd(n)&&Dy(n),i(()=>{!n.isDeclarationFile&&(Y.noUnusedLocals||Y.noUnusedParameters)&&rLe(jLe(n),(c,u,p)=>{!Bw(c)&&VLe(u,!!(c.flags&16777216))&&Lo.add(p)}),n.isDeclarationFile||ntt()}),Y.importsNotUsedAsValues===2&&!n.isDeclarationFile&&Lc(n)&&Tnt(n),kd(n)&&GLe(n),pE.length&&(mn(pE,att),Om(pE)),vv.length&&(mn(vv,ott),Om(vv)),Lb.length&&(mn(Lb,utt),Om(Lb)),bv.length&&(mn(bv,ftt),Om(bv)),a.flags|=1}}function HLe(n,a){try{return o=a,Ont(n)}finally{o=void 0}}function Vie(){for(let n of r)n();r=[]}function jie(n){Vie();let a=i;i=c=>c(),wnt(n),i=a}function Ont(n){if(n){Vie();let a=Lo.getGlobalDiagnostics(),c=a.length;jie(n);let u=Lo.getDiagnostics(n.fileName),p=Lo.getGlobalDiagnostics();if(p!==a){let h=fae(a,p,eL);return Qi(h,u)}else if(c===0&&p.length>0)return Qi(p,u);return u}return mn(e.getSourceFiles(),jie),Lo.getDiagnostics()}function Nnt(){return Vie(),Lo.getGlobalDiagnostics()}function Pnt(n,a){if(n.flags&33554432)return[];let c=Ua(),u=!1;return p(),c.delete(\"this\"),ene(c);function p(){for(;n;){switch(Qp(n)&&n.locals&&!gm(n)&&T(n.locals,a),n.kind){case 308:if(!Lc(n))break;case 264:k(fr(n).exports,a&2623475);break;case 263:T(fr(n).exports,a&8);break;case 228:n.name&&h(n.symbol,a);case 260:case 261:u||T(vy(fr(n)),a&788968);break;case 215:n.name&&h(n.symbol,a);break}tce(n)&&h(_t,a),u=Ca(n),n=n.parent}T(Ne,a)}function h(O,H){if(YI(O)&H){let J=O.escapedName;c.has(J)||c.set(J,O)}}function T(O,H){H&&O.forEach(J=>{h(J,H)})}function k(O,H){H&&O.forEach(J=>{!nc(J,278)&&!nc(J,277)&&h(J,H)})}}function Mnt(n){return n.kind===79&&s2(n.parent)&&sa(n.parent)===n}function WLe(n){for(;n.parent.kind===163;)n=n.parent;return n.parent.kind===180}function Fnt(n){for(;n.parent.kind===208;)n=n.parent;return n.parent.kind===230}function zLe(n,a){let c,u=Zc(n);for(;u&&!(c=a(u));)u=Zc(u);return c}function Gnt(n){return!!jn(n,a=>Ec(a)&&Nf(a.body)||Na(a)?!0:Yr(a)||Ds(a)?\"quit\":!1)}function Hie(n,a){return!!zLe(n,c=>c===a)}function Bnt(n){for(;n.parent.kind===163;)n=n.parent;if(n.parent.kind===268)return n.parent.moduleReference===n?n.parent:void 0;if(n.parent.kind===274)return n.parent.expression===n?n.parent:void 0}function vU(n){return Bnt(n)!==void 0}function Unt(n){switch(ic(n.parent.parent)){case 1:case 3:return vd(n.parent);case 4:case 2:case 5:return fr(n.parent.parent)}}function Vnt(n){let a=n.parent;for(;Yu(a);)n=a,a=a.parent;if(a&&a.kind===202&&a.qualifier===n)return a}function JLe(n){if(Rh(n))return vd(n.parent);if(Yn(n)&&n.parent.kind===208&&n.parent===n.parent.parent.left&&!pi(n)&&!gb(n)){let a=Unt(n);if(a)return a}if(n.parent.kind===274&&bc(n)){let a=uc(n,2998271,!0);if(a&&a!==Ht)return a}else if(Cd(n)&&vU(n)){let a=cb(n,268);return L.assert(a!==void 0),Z_(n,!0)}if(Cd(n)){let a=Vnt(n);if(a){$r(a);let c=Rr(n).resolvedSymbol;return c===Ht?void 0:c}}for(;Qce(n);)n=n.parent;if(Fnt(n)){let a=0;n.parent.kind===230?(a=Gm(n)?788968:111551,LR(n.parent)&&(a|=111551)):a=1920,a|=2097152;let c=bc(n)?uc(n,a):void 0;if(c)return c}if(n.parent.kind===344)return dR(n.parent);if(n.parent.kind===165&&n.parent.parent.kind===348){L.assert(!Yn(n));let a=yce(n.parent);return a&&a.symbol}if(Dh(n)){if(rc(n))return;let a=jn(n,Kp(aS,LL,gb)),c=a?901119:111551;if(n.kind===79){if(wI(n)&&NC(n)){let p=Gre(n.parent);return p===Ht?void 0:p}let u=uc(n,c,!1,!0,sb(n));if(!u&&a){let p=jn(n,Kp(Yr,ku));if(p)return i8(n,!1,fr(p))}if(u&&a){let p=fS(n);if(p&&q0(p)&&p===u.valueDeclaration)return uc(n,c,!0,!0,Gn(p))||u}return u}else{if(pi(n))return KB(n);if(n.kind===208||n.kind===163){let u=Rr(n);if(u.resolvedSymbol)return u.resolvedSymbol;if(n.kind===208){if(RCe(n,0),!u.resolvedSymbol){let p=Ic(n.expression),h=Zte(p,pg(n.name));if(h.length&&p.members){let k=w_(p).members.get(\"__index\");if(h===tu(p))u.resolvedSymbol=k;else if(k){let O=Ai(k),H=Zi(h,de=>de.declaration),J=on(H,zo).join(\",\");if(O.filteredIndexSymbolCache||(O.filteredIndexSymbolCache=new Map),O.filteredIndexSymbolCache.has(J))u.resolvedSymbol=O.filteredIndexSymbolCache.get(J);else{let de=wo(131072,\"__index\");de.declarations=Zi(h,Ae=>Ae.declaration),de.parent=p.aliasSymbol?p.aliasSymbol:p.symbol?p.symbol:Qf(de.declarations[0].parent),O.filteredIndexSymbolCache.set(J,de),u.resolvedSymbol=O.filteredIndexSymbolCache.get(J)}}}}}else OCe(n,0);return!u.resolvedSymbol&&a&&Yu(n)?i8(n):u.resolvedSymbol}else if(gb(n))return i8(n)}}else if(WLe(n)){let a=n.parent.kind===180?788968:1920,c=uc(n,a,!1,!0);return c&&c!==Ht?c:XG(n)}if(n.parent.kind===179)return uc(n,1)}function i8(n,a,c){if(Cd(n)){let T=uc(n,901119,a,!0,sb(n));if(!T&&Re(n)&&c&&(T=No(yd(Gd(c),n.escapedText,901119))),T)return T}let u=Re(n)?c:i8(n.left,a,c),p=Re(n)?n.escapedText:n.right.escapedText;if(u){let h=u.flags&111551&&ja(zn(u),\"prototype\"),T=h?zn(h):gs(u);return ja(T,p)}}function Qf(n,a){if(Li(n))return Lc(n)?No(n.symbol):void 0;let{parent:c}=n,u=c.parent;if(!(n.flags&33554432)){if(w_e(n)){let p=fr(c);return tS(n.parent)&&n.parent.propertyName===n?Mre(p):p}else if(pR(n))return fr(c.parent);if(n.kind===79){if(vU(n))return JLe(n);if(c.kind===205&&u.kind===203&&n===c.propertyName){let p=B1(u),h=ja(p,n.escapedText);if(h)return h}else if(SL(c)&&c.name===n)return c.keywordToken===103&&vr(n)===\"target\"?lie(c).symbol:c.keywordToken===100&&vr(n)===\"meta\"?tAe().members.get(\"meta\"):void 0}switch(n.kind){case 79:case 80:case 208:case 163:if(!hS(n))return JLe(n);case 108:let p=Ku(n,!1,!1);if(Ia(p)){let k=rp(p);if(k.thisParameter)return k.thisParameter}if(F6(n))return Yi(n).symbol;case 194:return oB(n).symbol;case 106:return Yi(n).symbol;case 135:let h=n.parent;return h&&h.kind===173?h.parent.symbol:void 0;case 10:case 14:if(ab(n.parent.parent)&&RI(n.parent.parent)===n||(n.parent.kind===269||n.parent.kind===275)&&n.parent.moduleSpecifier===n||Yn(n)&&$s(Y)!==100&&qu(n.parent,!1)||Dd(n.parent)||mb(n.parent)&&ib(n.parent.parent)&&n.parent.parent.argument===n.parent)return Gl(n,n,a);if(Pa(c)&&cS(c)&&c.arguments[1]===n)return fr(c);case 8:let T=Vs(c)?c.argumentExpression===n?au(c.expression):void 0:mb(c)&&NS(u)?$r(u.objectType):void 0;return T&&ja(T,Bs(n.text));case 88:case 98:case 38:case 84:return vd(n.parent);case 202:return ib(n)?Qf(n.argument.literal,a):void 0;case 93:return pc(n.parent)?L.checkDefined(n.parent.symbol):void 0;case 100:case 103:return SL(n.parent)?mIe(n.parent).symbol:void 0;case 233:return Yi(n).symbol;default:return}}}function jnt(n){if(Re(n)&&br(n.parent)&&n.parent.name===n){let a=pg(n),c=au(n.parent.expression),u=c.flags&1048576?c.types:[c];return Uo(u,p=>Pr(tu(p),h=>jx(a,h.keyType)))}}function Hnt(n){if(n&&n.kind===300)return uc(n.name,2208703)}function Wnt(n){return Mu(n)?n.parent.parent.moduleSpecifier?rf(n.parent.parent,n):uc(n.propertyName||n.name,2998271):uc(n,2998271)}function B1(n){if(Li(n)&&!Lc(n)||n.flags&33554432)return ve;let a=uW(n),c=a&&vu(fr(a.class));if(Gm(n)){let u=$r(n);return c?lf(u,c.thisType):u}if(Dh(n))return KLe(n);if(c&&!a.isImplements){let u=Sl(_o(c));return u?lf(u,c.thisType):ve}if(s2(n)){let u=fr(n);return gs(u)}if(Mnt(n)){let u=Qf(n);return u?gs(u):ve}if(Kl(n)){let u=fr(n);return u?zn(u):ve}if(w_e(n)){let u=Qf(n);return u?zn(u):ve}if(La(n))return Oo(n.parent,!0,0)||ve;if(vU(n)){let u=Qf(n);if(u){let p=gs(u);return Ro(p)?zn(u):p}}return SL(n.parent)&&n.parent.keywordToken===n.kind?mIe(n.parent):ve}function bU(n){if(L.assert(n.kind===207||n.kind===206),n.parent.kind===247){let p=t8(n.parent);return nT(n,p||ve)}if(n.parent.kind===223){let p=au(n.parent.right);return nT(n,p||ve)}if(n.parent.kind===299){let p=Ga(n.parent.parent,rs),h=bU(p)||ve,T=wA(p.properties,n.parent);return kIe(p,h,T)}let a=Ga(n.parent,fu),c=bU(a)||ve,u=wy(65,c,Oe,n.parent)||ve;return DIe(a,c,a.elements.indexOf(n),u)}function znt(n){let a=bU(Ga(n.parent.parent,bI));return a&&ja(a,n.escapedText)}function KLe(n){return JI(n)&&(n=n.parent),Hu(au(n))}function qLe(n){let a=vd(n.parent);return Ca(n)?zn(a):gs(a)}function XLe(n){let a=n.name;switch(a.kind){case 79:return df(vr(a));case 8:case 10:return df(a.text);case 164:let c=vg(a);return ul(c,12288)?c:ae;default:return L.fail(\"Unsupported property name.\")}}function Wie(n){n=Eu(n);let a=Ua(Jo(n)),c=xa(n,0).length?Uc:xa(n,1).length?Gu:void 0;return c&&mn(Jo(c),u=>{a.has(u.escapedName)||a.set(u.escapedName,u)}),uy(a)}function EU(n){return xa(n,0).length!==0||xa(n,1).length!==0}function YLe(n){let a=Jnt(n);return a?Uo(a,YLe):[n]}function Jnt(n){if(ac(n)&6)return Zi(Ai(n).containingType.types,a=>ja(a,n.escapedName));if(n.flags&33554432){let{links:{leftSpread:a,rightSpread:c,syntheticOrigin:u}}=n;return a?[a,c]:u?[u]:oT(Knt(n))}}function Knt(n){let a,c=n;for(;c=Ai(c).target;)a=c;return a}function qnt(n){if(tc(n))return!1;let a=ea(n,Re);if(!a)return!1;let c=a.parent;return c?!((br(c)||yl(c))&&c.name===a)&&a8(a)===_t:!1}function Xnt(n){let a=Gl(n.parent,n);if(!a||II(a))return!0;let c=AE(a);a=Vu(a);let u=Ai(a);return u.exportsSomeValue===void 0&&(u.exportsSomeValue=c?!!(a.flags&111551):Ld(sh(a),p)),u.exportsSomeValue;function p(h){return h=Ac(h),h&&!!(Fl(h)&111551)}}function Ynt(n){return Nw(n.parent)&&n===n.parent.name}function $nt(n,a){var c;let u=ea(n,Re);if(u){let p=a8(u,Ynt(u));if(p){if(p.flags&1048576){let T=No(p.exportSymbol);if(!a&&T.flags&944&&!(T.flags&3))return;p=T}let h=ju(p);if(h){if(h.flags&512&&((c=h.valueDeclaration)==null?void 0:c.kind)===308){let T=h.valueDeclaration,k=Gn(u);return T!==k?void 0:T}return jn(u.parent,T=>Nw(T)&&fr(T)===h)}}}}function Qnt(n){let a=Eue(n);if(a)return a;let c=ea(n,Re);if(c){let u=drt(c);if(ay(u,111551)&&!nd(u,111551))return Uu(u)}}function Znt(n){return n.valueDeclaration&&Wo(n.valueDeclaration)&&EA(n.valueDeclaration).parent.kind===295}function $Le(n){if(n.flags&418&&n.valueDeclaration&&!Li(n.valueDeclaration)){let a=Ai(n);if(a.isDeclarationWithCollidingName===void 0){let c=tm(n.valueDeclaration);if(Ose(c)||Znt(n)){let u=Rr(n.valueDeclaration);if(zs(c.parent,n.escapedName,111551,void 0,void 0,!1))a.isDeclarationWithCollidingName=!0;else if(u.flags&16384){let p=u.flags&32768,h=Wy(c,!1),T=c.kind===238&&Wy(c.parent,!1);a.isDeclarationWithCollidingName=!Hse(c)&&(!p||!h&&!T)}else a.isDeclarationWithCollidingName=!1}}return a.isDeclarationWithCollidingName}return!1}function ert(n){if(!tc(n)){let a=ea(n,Re);if(a){let c=a8(a);if(c&&$Le(c))return c.valueDeclaration}}}function trt(n){let a=ea(n,Kl);if(a){let c=fr(a);if(c)return $Le(c)}return!1}function QLe(n){switch(L.assert(!Y.verbatimModuleSyntax),n.kind){case 268:return TU(fr(n));case 270:case 271:case 273:case 278:let a=fr(n);return!!a&&TU(a)&&!nd(a,111551);case 275:let c=n.exportClause;return!!c&&(qm(c)||vt(c.elements,QLe));case 274:return n.expression&&n.expression.kind===79?TU(fr(n)):!0}return!1}function nrt(n){let a=ea(n,Nl);return a===void 0||a.parent.kind!==308||!BA(a)?!1:TU(fr(a))&&a.moduleReference&&!rc(a.moduleReference)}function TU(n){var a;if(!n)return!1;let c=ep(wc(n));return c===Ht?!0:!!(((a=Fl(c))!=null?a:-1)&111551)&&(U0(Y)||!FD(c))}function FD(n){return gie(n)||!!n.constEnumOnlyModule}function SU(n,a){if(L.assert(!Y.verbatimModuleSyntax),Zh(n)){let c=fr(n),u=c&&Ai(c);if(u?.referenced)return!0;let p=Ai(c).aliasTarget;if(p&&uu(n)&1&&Fl(p)&111551&&(U0(Y)||!FD(p)))return!0}return a?!!pa(n,c=>SU(c,a)):!1}function ZLe(n){if(Nf(n.body)){if(zy(n)||Ng(n))return!1;let a=fr(n),c=Xb(a);return c.length>1||c.length===1&&c[0].declaration!==n}return!1}function eke(n){return!!U&&!Zk(n)&&!xp(n)&&!!n.initializer&&!Mr(n,16476)}function rrt(n){return U&&Zk(n)&&!n.initializer&&Mr(n,16476)}function irt(n){let a=ea(n,Jc);if(!a)return!1;let c=fr(a);return!c||!(c.flags&16)?!1:!!Ld(Gd(c),u=>u.flags&111551&&u.valueDeclaration&&br(u.valueDeclaration))}function art(n){let a=ea(n,Jc);if(!a)return Je;let c=fr(a);return c&&Jo(zn(c))||Je}function cA(n){var a;let c=n.id||0;return c<0||c>=Ib.length?0:((a=Ib[c])==null?void 0:a.flags)||0}function xU(n){return OLe(n.parent),Rr(n).enumMemberValue}function tke(n){switch(n.kind){case 302:case 208:case 209:return!0}return!1}function zie(n){if(n.kind===302)return xU(n);let a=Rr(n).resolvedSymbol;if(a&&a.flags&8){let c=a.valueDeclaration;if(R0(c.parent))return xU(c)}}function Jie(n){return!!(n.flags&524288)&&xa(n,0).length>0}function ort(n,a){var c;let u=ea(n,Cd);if(!u||a&&(a=ea(a),!a))return 0;let p=!1;if(Yu(u)){let H=uc(Xd(u),111551,!0,!0,a);p=!!((c=H?.declarations)!=null&&c.every(I0))}let h=uc(u,111551,!0,!0,a),T=h&&h.flags&2097152?wc(h):h;p||(p=!!(h&&nd(h,111551)));let k=uc(u,788968,!0,!1,a);if(T&&T===k){let H=_ne(!1);if(H&&T===H)return 9;let J=zn(T);if(J&&Uv(J))return p?10:1}if(!k)return p?11:0;let O=gs(k);return Ro(O)?p?11:0:O.flags&3?11:ul(O,245760)?2:ul(O,528)?6:ul(O,296)?3:ul(O,2112)?4:ul(O,402653316)?5:po(O)?7:ul(O,12288)?8:Jie(O)?10:ff(O)?7:11}function srt(n,a,c,u,p){let h=ea(n,Qse);if(!h)return D.createToken(131);let T=fr(h),k=T&&!(T.flags&133120)?i0(zn(T)):ve;return k.flags&8192&&k.symbol===T&&(c|=1048576),p&&(k=gg(k)),Be.typeToTypeNode(k,a,c|1024,u)}function crt(n,a,c,u){let p=ea(n,Ia);if(!p)return D.createToken(131);let h=rp(p);return Be.typeToTypeNode(qo(h),a,c|1024,u)}function lrt(n,a,c,u){let p=ea(n,ot);if(!p)return D.createToken(131);let h=Sd(KLe(p));return Be.typeToTypeNode(h,a,c|1024,u)}function urt(n){return Ne.has(Bs(n))}function a8(n,a){let c=Rr(n).resolvedSymbol;if(c)return c;let u=n;if(a){let p=n.parent;Kl(p)&&n===p.name&&(u=FE(p))}return zs(u,n.escapedText,3257279,void 0,void 0,!0)}function drt(n){let a=Rr(n).resolvedSymbol;return a&&a!==Ht?a:zs(n,n.escapedText,3257279,void 0,void 0,!0,void 0,void 0)}function frt(n){if(!tc(n)){let a=ea(n,Re);if(a){let c=a8(a);if(c)return ep(c).valueDeclaration}}}function _rt(n){return x6(n)||wi(n)&&kh(n)?t0(zn(fr(n))):!1}function prt(n,a,c){let u=n.flags&1056?Be.symbolToExpression(n.symbol,111551,a,void 0,c):n===pe?D.createTrue():n===Ke&&D.createFalse();if(u)return u;let p=n.value;return typeof p==\"object\"?D.createBigIntLiteral(p):typeof p==\"number\"?D.createNumericLiteral(p):D.createStringLiteral(p)}function mrt(n,a){let c=zn(fr(n));return prt(c,n,a)}function nke(n){return n?(Rb(n),Gn(n).localJsxFactory||Kh):Kh}function Kie(n){if(n){let a=Gn(n);if(a){if(a.localJsxFragmentFactory)return a.localJsxFragmentFactory;let c=a.pragmas.get(\"jsxfrag\"),u=ba(c)?c[0]:c;if(u)return a.localJsxFragmentFactory=JS(u.arguments.factory,R),a.localJsxFragmentFactory}}if(Y.jsxFragmentFactory)return JS(Y.jsxFragmentFactory,R)}function hrt(){let n=e.getResolvedTypeReferenceDirectives(),a;return n&&(a=new Map,n.forEach(({resolvedTypeReferenceDirective:O},H,J)=>{if(!O?.resolvedFileName)return;let de=e.getSourceFile(O.resolvedFileName);de&&k(de,H,J)})),{getReferencedExportContainer:$nt,getReferencedImportDeclaration:Qnt,getReferencedDeclarationWithCollidingName:ert,isDeclarationWithCollidingName:trt,isValueAliasDeclaration:O=>{let H=ea(O);return H?QLe(H):!0},hasGlobalName:urt,isReferencedAliasDeclaration:(O,H)=>{let J=ea(O);return J?SU(J,H):!0},getNodeCheckFlags:O=>{let H=ea(O);return H?cA(H):0},isTopLevelValueImportEqualsWithEntityName:nrt,isDeclarationVisible:qf,isImplementationOfOverload:ZLe,isRequiredInitializedParameter:eke,isOptionalUninitializedParameterProperty:rrt,isExpandoFunctionDeclaration:irt,getPropertiesOfContainerFunction:art,createTypeOfDeclaration:srt,createReturnTypeOfSignatureDeclaration:crt,createTypeOfExpression:lrt,createLiteralConstValue:mrt,isSymbolAccessible:dy,isEntityNameVisible:Px,getConstantValue:O=>{let H=ea(O,tke);return H?zie(H):void 0},collectLinkedAliases:ME,getReferencedValueDeclaration:frt,getTypeReferenceSerializationKind:ort,isOptionalParameter:Zk,moduleExportsSomeValue:Xnt,isArgumentsLocalBinding:qnt,getExternalModuleFileFromDeclaration:O=>{let H=ea(O,zse);return H&&qie(H)},getTypeReferenceDirectivesForEntityName:p,getTypeReferenceDirectivesForSymbol:h,isLiteralConstDeclaration:_rt,isLateBound:O=>{let H=ea(O,Kl),J=H&&fr(H);return!!(J&&ac(J)&4096)},getJsxFactoryEntity:nke,getJsxFragmentFactoryEntity:Kie,getAllAccessorDeclarations(O){O=ea(O,t6);let H=O.kind===175?174:175,J=nc(fr(O),H),de=J&&J.pos<O.pos?J:O,Ae=J&&J.pos<O.pos?O:J,xe=O.kind===175?O:J,tt=O.kind===174?O:J;return{firstAccessor:de,secondAccessor:Ae,setAccessor:xe,getAccessor:tt}},getSymbolOfExternalModuleSpecifier:O=>ah(O,O,void 0),isBindingCapturedByNode:(O,H)=>{let J=ea(O),de=ea(H);return!!J&&!!de&&(wi(de)||Wo(de))&&zYe(J,de)},getDeclarationStatementsForSourceFile:(O,H,J,de)=>{let Ae=ea(O);L.assert(Ae&&Ae.kind===308,\"Non-sourcefile node passed into getDeclarationsForSourceFile\");let xe=fr(O);return xe?xe.exports?Be.symbolTableToDeclarationStatements(xe.exports,O,H,J,de):[]:O.locals?Be.symbolTableToDeclarationStatements(O.locals,O,H,J,de):[]},isImportRequiredByAugmentation:c};function c(O){let H=Gn(O);if(!H.symbol)return!1;let J=qie(O);if(!J||J===H)return!1;let de=sh(H.symbol);for(let Ae of lo(de.values()))if(Ae.mergeId){let xe=No(Ae);if(xe.declarations){for(let tt of xe.declarations)if(Gn(tt)===J)return!0}}return!1}function u(O){return O.parent&&O.parent.kind===230&&O.parent.parent&&O.parent.parent.kind===294}function p(O){if(!a)return;let H;O.parent.kind===164?H=1160127:(H=790504,(O.kind===79&&DC(O)||O.kind===208&&!u(O))&&(H=1160127));let J=uc(O,H,!0);return J&&J!==Ht?h(J,H):void 0}function h(O,H){if(!a||!T(O))return;let J;for(let de of O.declarations)if(de.symbol&&de.symbol.flags&H){let Ae=Gn(de),xe=a.get(Ae.path);if(xe)(J||(J=[])).push(xe);else return}return J}function T(O){if(!O.declarations)return!1;let H=O;for(;;){let J=ju(H);if(J)H=J;else break}if(H.valueDeclaration&&H.valueDeclaration.kind===308&&H.flags&512)return!1;for(let J of O.declarations){let de=Gn(J);if(a.has(de.path))return!0}return!1}function k(O,H,J){if(!a.has(O.path)){a.set(O.path,[H,J]);for(let{fileName:de,resolutionMode:Ae}of O.referencedFiles){let xe=wF(de,O.fileName),tt=e.getSourceFile(xe);tt&&k(tt,H,Ae||O.impliedNodeFormat)}}}}function qie(n){let a=n.kind===264?zr(n.name,yo):VA(n),c=ah(a,a,void 0);if(!!c)return nc(c,308)}function grt(){for(let a of e.getSourceFiles())c_e(a,Y);pr=new Map;let n;for(let a of e.getSourceFiles())if(!a.redirectInfo){if(!kd(a)){let c=a.locals.get(\"globalThis\");if(c?.declarations)for(let u of c.declarations)Lo.add(hr(u,_.Declaration_name_conflicts_with_built_in_global_identifier_0,\"globalThis\"));ll(Ne,a.locals)}a.jsGlobalAugmentations&&ll(Ne,a.jsGlobalAugmentations),a.patternAmbientModules&&a.patternAmbientModules.length&&(Ka=Qi(Ka,a.patternAmbientModules)),a.moduleAugmentations.length&&(n||(n=[])).push(a.moduleAugmentations),a.symbol&&a.symbol.globalExports&&a.symbol.globalExports.forEach((u,p)=>{Ne.has(p)||Ne.set(p,u)})}if(n)for(let a of n)for(let c of a)!mp(c.parent)||v1(c);if(uC(Ne,Db,_.Declaration_name_conflicts_with_built_in_global_identifier_0),Ai(Le).type=je,Ai(_t).type=Fc(\"IArguments\",0,!0),Ai(Ht).type=ve,Ai(Ye).type=Bd(16,Ye),$o=Fc(\"Array\",1,!0),ka=Fc(\"Object\",0,!0),Hs=Fc(\"Function\",0,!0),Uc=le&&Fc(\"CallableFunction\",0,!0)||Hs,Gu=le&&Fc(\"NewableFunction\",0,!0)||Hs,Ws=Fc(\"String\",0,!0),hd=Fc(\"Number\",0,!0),vc=Fc(\"Boolean\",0,!0),tf=Fc(\"RegExp\",0,!0),Et=nu(Se),bn=nu(at),bn===Ki&&(bn=ls(void 0,q,Je,Je,Je)),jo=oAe(\"ReadonlyArray\",1)||$o,Ri=jo?iD(jo,[Se]):Et,ye=oAe(\"ThisType\",1),n)for(let a of n)for(let c of a)mp(c.parent)||v1(c);pr.forEach(({firstFile:a,secondFile:c,conflictingSymbols:u})=>{if(u.size<8)u.forEach(({isBlockScoped:p,firstFileLocations:h,secondFileLocations:T},k)=>{let O=p?_.Cannot_redeclare_block_scoped_variable_0:_.Duplicate_identifier_0;for(let H of h)Ml(H,O,k,T);for(let H of T)Ml(H,O,k,h)});else{let p=lo(u.keys()).join(\", \");Lo.add(Ao(hr(a,_.Definitions_of_the_following_identifiers_conflict_with_those_in_another_file_Colon_0,p),hr(c,_.Conflicts_are_in_this_file))),Lo.add(Ao(hr(c,_.Definitions_of_the_following_identifiers_conflict_with_those_in_another_file_Colon_0,p),hr(a,_.Conflicts_are_in_this_file)))}}),pr=void 0}function Hc(n,a){if((l&a)!==a&&Y.importHelpers){let c=Gn(n);if(oS(c,Y)&&!(n.flags&16777216)){let u=vrt(c,n);if(u!==Ht){let p=a&~l;for(let h=1;h<=16777216;h<<=1)if(p&h)for(let T of yrt(h)){if(s.has(T))continue;s.add(T);let k=yd(u.exports,Bs(T),111551);k?h&524288?vt(Xb(k),O=>xd(O)>3)||Fe(n,_.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0,_b,T,4):h&1048576?vt(Xb(k),O=>xd(O)>4)||Fe(n,_.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0,_b,T,5):h&1024&&(vt(Xb(k),O=>xd(O)>2)||Fe(n,_.This_syntax_requires_an_imported_helper_named_1_with_2_parameters_which_is_not_compatible_with_the_one_in_0_Consider_upgrading_your_version_of_0,_b,T,3)):Fe(n,_.This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0,_b,T)}}l|=a}}}function yrt(n){switch(n){case 1:return[\"__extends\"];case 2:return[\"__assign\"];case 4:return[\"__rest\"];case 8:return Q?[\"__decorate\"]:[\"__esDecorate\",\"__runInitializers\"];case 16:return[\"__metadata\"];case 32:return[\"__param\"];case 64:return[\"__awaiter\"];case 128:return[\"__generator\"];case 256:return[\"__values\"];case 512:return[\"__read\"];case 1024:return[\"__spreadArray\"];case 2048:return[\"__await\"];case 4096:return[\"__asyncGenerator\"];case 8192:return[\"__asyncDelegator\"];case 16384:return[\"__asyncValues\"];case 32768:return[\"__exportStar\"];case 65536:return[\"__importStar\"];case 131072:return[\"__importDefault\"];case 262144:return[\"__makeTemplateObject\"];case 524288:return[\"__classPrivateFieldGet\"];case 1048576:return[\"__classPrivateFieldSet\"];case 2097152:return[\"__classPrivateFieldIn\"];case 4194304:return[\"__createBinding\"];case 8388608:return[\"__setFunctionName\"];case 16777216:return[\"__propKey\"];default:return L.fail(\"Unrecognized helper\")}}function vrt(n,a){return f||(f=qc(n,_b,_.This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found,a)||Ht),f}function km(n){let a=Trt(n)||brt(n);if(a!==void 0)return a;if(ha(n)&&G0(n))return dl(n,_.Neither_decorators_nor_modifiers_may_be_applied_to_this_parameters);let c,u,p,h,T,k=0,O=!1,H=!1;for(let J of n.modifiers)if(du(J)){if(M6(Q,n,n.parent,n.parent.parent)){if(Q&&(n.kind===174||n.kind===175)){let de=DT(n.parent.members,n);if(vf(de.firstAccessor)&&n===de.secondAccessor)return dl(n,_.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name)}}else return n.kind===171&&!Nf(n.body)?dl(n,_.A_decorator_can_only_decorate_a_method_implementation_not_an_overload):dl(n,_.Decorators_are_not_valid_here);if(k&-132098)return an(J,_.Decorators_are_not_valid_here);if(H&&k&126975){L.assertIsDefined(T);let de=Gn(J);return l0(de)?!1:(Ao(Fe(J,_.Decorators_may_not_appear_after_export_or_export_default_if_they_also_appear_before_export),hr(T,_.Decorator_used_before_export_here)),!0)}k|=131072,k&126975?k&1&&(O=!0):H=!0,T??(T=J)}else{if(J.kind!==146){if(n.kind===168||n.kind===170)return an(J,_._0_modifier_cannot_appear_on_a_type_member,Xa(J.kind));if(n.kind===178&&(J.kind!==124||!Yr(n.parent)))return an(J,_._0_modifier_cannot_appear_on_an_index_signature,Xa(J.kind))}if(J.kind!==101&&J.kind!==145&&J.kind!==85&&n.kind===165)return an(J,_._0_modifier_cannot_appear_on_a_type_parameter,Xa(J.kind));switch(J.kind){case 85:if(n.kind!==263&&n.kind!==165)return an(n,_.A_class_member_cannot_have_the_0_keyword,Xa(85));let de=n.parent;if(n.kind===165&&!(Ds(de)||Yr(de)||Jm(de)||vL(de)||p2(de)||dO(de)||zm(de)))return an(J,_._0_modifier_can_only_appear_on_a_type_parameter_of_a_function_method_or_class,Xa(J.kind));break;case 161:if(k&16384)return an(J,_._0_modifier_already_seen,\"override\");if(k&2)return an(J,_._0_modifier_cannot_be_used_with_1_modifier,\"override\",\"declare\");if(k&64)return an(J,_._0_modifier_must_precede_1_modifier,\"override\",\"readonly\");if(k&128)return an(J,_._0_modifier_must_precede_1_modifier,\"override\",\"accessor\");if(k&512)return an(J,_._0_modifier_must_precede_1_modifier,\"override\",\"async\");k|=16384,h=J;break;case 123:case 122:case 121:let Ae=Ud(yS(J.kind));if(k&28)return an(J,_.Accessibility_modifier_already_seen);if(k&16384)return an(J,_._0_modifier_must_precede_1_modifier,Ae,\"override\");if(k&32)return an(J,_._0_modifier_must_precede_1_modifier,Ae,\"static\");if(k&128)return an(J,_._0_modifier_must_precede_1_modifier,Ae,\"accessor\");if(k&64)return an(J,_._0_modifier_must_precede_1_modifier,Ae,\"readonly\");if(k&512)return an(J,_._0_modifier_must_precede_1_modifier,Ae,\"async\");if(n.parent.kind===265||n.parent.kind===308)return an(J,_._0_modifier_cannot_appear_on_a_module_or_namespace_element,Ae);if(k&256)return J.kind===121?an(J,_._0_modifier_cannot_be_used_with_1_modifier,Ae,\"abstract\"):an(J,_._0_modifier_must_precede_1_modifier,Ae,\"abstract\");if(xu(n))return an(J,_.An_accessibility_modifier_cannot_be_used_with_a_private_identifier);k|=yS(J.kind);break;case 124:if(k&32)return an(J,_._0_modifier_already_seen,\"static\");if(k&64)return an(J,_._0_modifier_must_precede_1_modifier,\"static\",\"readonly\");if(k&512)return an(J,_._0_modifier_must_precede_1_modifier,\"static\",\"async\");if(k&128)return an(J,_._0_modifier_must_precede_1_modifier,\"static\",\"accessor\");if(n.parent.kind===265||n.parent.kind===308)return an(J,_._0_modifier_cannot_appear_on_a_module_or_namespace_element,\"static\");if(n.kind===166)return an(J,_._0_modifier_cannot_appear_on_a_parameter,\"static\");if(k&256)return an(J,_._0_modifier_cannot_be_used_with_1_modifier,\"static\",\"abstract\");if(k&16384)return an(J,_._0_modifier_must_precede_1_modifier,\"static\",\"override\");k|=32,c=J;break;case 127:if(k&128)return an(J,_._0_modifier_already_seen,\"accessor\");if(k&64)return an(J,_._0_modifier_cannot_be_used_with_1_modifier,\"accessor\",\"readonly\");if(k&2)return an(J,_._0_modifier_cannot_be_used_with_1_modifier,\"accessor\",\"declare\");if(n.kind!==169)return an(J,_.accessor_modifier_can_only_appear_on_a_property_declaration);k|=128;break;case 146:if(k&64)return an(J,_._0_modifier_already_seen,\"readonly\");if(n.kind!==169&&n.kind!==168&&n.kind!==178&&n.kind!==166)return an(J,_.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature);if(k&128)return an(J,_._0_modifier_cannot_be_used_with_1_modifier,\"readonly\",\"accessor\");k|=64;break;case 93:if(Y.verbatimModuleSyntax&&!(n.flags&16777216)&&n.kind!==262&&n.kind!==261&&n.kind!==264&&n.parent.kind===308&&(ie===1||Gn(n).impliedNodeFormat===1))return an(J,_.A_top_level_export_modifier_cannot_be_used_on_value_declarations_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled);if(k&1)return an(J,_._0_modifier_already_seen,\"export\");if(k&2)return an(J,_._0_modifier_must_precede_1_modifier,\"export\",\"declare\");if(k&256)return an(J,_._0_modifier_must_precede_1_modifier,\"export\",\"abstract\");if(k&512)return an(J,_._0_modifier_must_precede_1_modifier,\"export\",\"async\");if(Yr(n.parent))return an(J,_._0_modifier_cannot_appear_on_class_elements_of_this_kind,\"export\");if(n.kind===166)return an(J,_._0_modifier_cannot_appear_on_a_parameter,\"export\");k|=1;break;case 88:let xe=n.parent.kind===308?n.parent:n.parent.parent;if(xe.kind===264&&!lu(xe))return an(J,_.A_default_export_can_only_be_used_in_an_ECMAScript_style_module);if(k&1){if(O)return an(T,_.Decorators_are_not_valid_here)}else return an(J,_._0_modifier_must_precede_1_modifier,\"export\",\"default\");k|=1024;break;case 136:if(k&2)return an(J,_._0_modifier_already_seen,\"declare\");if(k&512)return an(J,_._0_modifier_cannot_be_used_in_an_ambient_context,\"async\");if(k&16384)return an(J,_._0_modifier_cannot_be_used_in_an_ambient_context,\"override\");if(Yr(n.parent)&&!Na(n))return an(J,_._0_modifier_cannot_appear_on_class_elements_of_this_kind,\"declare\");if(n.kind===166)return an(J,_._0_modifier_cannot_appear_on_a_parameter,\"declare\");if(n.parent.flags&16777216&&n.parent.kind===265)return an(J,_.A_declare_modifier_cannot_be_used_in_an_already_ambient_context);if(xu(n))return an(J,_._0_modifier_cannot_be_used_with_a_private_identifier,\"declare\");if(k&128)return an(J,_._0_modifier_cannot_be_used_with_1_modifier,\"declare\",\"accessor\");k|=2,u=J;break;case 126:if(k&256)return an(J,_._0_modifier_already_seen,\"abstract\");if(n.kind!==260&&n.kind!==182){if(n.kind!==171&&n.kind!==169&&n.kind!==174&&n.kind!==175)return an(J,_.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration);if(!(n.parent.kind===260&&Mr(n.parent,256)))return an(J,_.Abstract_methods_can_only_appear_within_an_abstract_class);if(k&32)return an(J,_._0_modifier_cannot_be_used_with_1_modifier,\"static\",\"abstract\");if(k&8)return an(J,_._0_modifier_cannot_be_used_with_1_modifier,\"private\",\"abstract\");if(k&512&&p)return an(p,_._0_modifier_cannot_be_used_with_1_modifier,\"async\",\"abstract\");if(k&16384)return an(J,_._0_modifier_must_precede_1_modifier,\"abstract\",\"override\");if(k&128)return an(J,_._0_modifier_must_precede_1_modifier,\"abstract\",\"accessor\")}if(zl(n)&&n.name.kind===80)return an(J,_._0_modifier_cannot_be_used_with_a_private_identifier,\"abstract\");k|=256;break;case 132:if(k&512)return an(J,_._0_modifier_already_seen,\"async\");if(k&2||n.parent.flags&16777216)return an(J,_._0_modifier_cannot_be_used_in_an_ambient_context,\"async\");if(n.kind===166)return an(J,_._0_modifier_cannot_appear_on_a_parameter,\"async\");if(k&256)return an(J,_._0_modifier_cannot_be_used_with_1_modifier,\"async\",\"abstract\");k|=512,p=J;break;case 101:case 145:let tt=J.kind===101?32768:65536,It=J.kind===101?\"in\":\"out\";if(n.kind!==165||!(ku(n.parent)||Yr(n.parent)||Ep(n.parent)))return an(J,_._0_modifier_can_only_appear_on_a_type_parameter_of_a_class_interface_or_type_alias,It);if(k&tt)return an(J,_._0_modifier_already_seen,It);if(tt&32768&&k&65536)return an(J,_._0_modifier_must_precede_1_modifier,\"in\",\"out\");k|=tt;break}}return n.kind===173?k&32?an(c,_._0_modifier_cannot_appear_on_a_constructor_declaration,\"static\"):k&16384?an(h,_._0_modifier_cannot_appear_on_a_constructor_declaration,\"override\"):k&512?an(p,_._0_modifier_cannot_appear_on_a_constructor_declaration,\"async\"):!1:(n.kind===269||n.kind===268)&&k&2?an(u,_.A_0_modifier_cannot_be_used_with_an_import_declaration,\"declare\"):n.kind===166&&k&16476&&La(n.name)?an(n,_.A_parameter_property_may_not_be_declared_using_a_binding_pattern):n.kind===166&&k&16476&&n.dotDotDotToken?an(n,_.A_parameter_property_cannot_be_declared_using_a_rest_parameter):k&512?xrt(n,p):!1}function brt(n){if(!n.modifiers)return!1;let a=Ert(n);return a&&dl(a,_.Modifiers_cannot_appear_here)}function Xie(n,a){let c=wr(n.modifiers,Ha);return c&&c.kind!==a?c:void 0}function Ert(n){switch(n.kind){case 174:case 175:case 173:case 169:case 168:case 171:case 170:case 178:case 264:case 269:case 268:case 275:case 274:case 215:case 216:case 166:case 165:return;case 172:case 299:case 300:case 267:case 279:return wr(n.modifiers,Ha);default:if(n.parent.kind===265||n.parent.kind===308)return;switch(n.kind){case 259:return Xie(n,132);case 260:case 182:return Xie(n,126);case 228:case 261:case 240:case 262:return wr(n.modifiers,Ha);case 263:return Xie(n,85);default:L.assertNever(n)}}}function Trt(n){let a=Srt(n);return a&&dl(a,_.Decorators_are_not_valid_here)}function Srt(n){return aJ(n)?wr(n.modifiers,du):void 0}function xrt(n,a){switch(n.kind){case 171:case 259:case 215:case 216:return!1}return an(a,_._0_modifier_cannot_be_used_here,\"async\")}function U1(n,a=_.Trailing_comma_not_allowed){return n&&n.hasTrailingComma?u0(n[0],n.end-1,1,a):!1}function rke(n,a){if(n&&n.length===0){let c=n.pos-1,u=xo(a.text,n.end)+1;return u0(a,c,u-c,_.Type_parameter_list_cannot_be_empty)}return!1}function Art(n){let a=!1,c=n.length;for(let u=0;u<c;u++){let p=n[u];if(p.dotDotDotToken){if(u!==c-1)return an(p.dotDotDotToken,_.A_rest_parameter_must_be_last_in_a_parameter_list);if(p.flags&16777216||U1(n,_.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma),p.questionToken)return an(p.questionToken,_.A_rest_parameter_cannot_be_optional);if(p.initializer)return an(p.name,_.A_rest_parameter_cannot_have_an_initializer)}else if(Zk(p)){if(a=!0,p.questionToken&&p.initializer)return an(p.name,_.Parameter_cannot_have_question_mark_and_initializer)}else if(a&&!p.initializer)return an(p.name,_.A_required_parameter_cannot_follow_an_optional_parameter)}}function Crt(n){return Pr(n,a=>!!a.initializer||La(a.name)||Fm(a))}function Irt(n){if(R>=3){let a=n.body&&Va(n.body)&&tJ(n.body.statements);if(a){let c=Crt(n.parameters);if(Fn(c)){mn(c,p=>{Ao(Fe(p,_.This_parameter_is_not_allowed_with_use_strict_directive),hr(a,_.use_strict_directive_used_here))});let u=c.map((p,h)=>h===0?hr(p,_.Non_simple_parameter_declared_here):hr(p,_.and_here));return Ao(Fe(a,_.use_strict_directive_cannot_be_used_with_non_simple_parameter_list),...u),!0}}}return!1}function AU(n){let a=Gn(n);return km(n)||rke(n.typeParameters,a)||Art(n.parameters)||krt(n,a)||Ds(n)&&Irt(n)}function Lrt(n){let a=Gn(n);return Nrt(n)||rke(n.typeParameters,a)}function krt(n,a){if(!xs(n))return!1;n.typeParameters&&!(Fn(n.typeParameters)>1||n.typeParameters.hasTrailingComma||n.typeParameters[0].constraint)&&a&&$c(a.fileName,[\".mts\",\".cts\"])&&an(n.typeParameters[0],_.This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Add_a_trailing_comma_or_explicit_constraint);let{equalsGreaterThanToken:c}=n,u=Gs(a,c.pos).line,p=Gs(a,c.end).line;return u!==p&&an(c,_.Line_terminator_not_permitted_before_arrow)}function Drt(n){let a=n.parameters[0];if(n.parameters.length!==1)return an(a?a.name:n,_.An_index_signature_must_have_exactly_one_parameter);if(U1(n.parameters,_.An_index_signature_cannot_have_a_trailing_comma),a.dotDotDotToken)return an(a.dotDotDotToken,_.An_index_signature_cannot_have_a_rest_parameter);if(n4(a))return an(a.name,_.An_index_signature_parameter_cannot_have_an_accessibility_modifier);if(a.questionToken)return an(a.questionToken,_.An_index_signature_parameter_cannot_have_a_question_mark);if(a.initializer)return an(a.name,_.An_index_signature_parameter_cannot_have_an_initializer);if(!a.type)return an(a.name,_.An_index_signature_parameter_must_have_a_type_annotation);let c=$r(a.type);return yh(c,u=>!!(u.flags&8576))||xC(c)?an(a.name,_.An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead):Im(c,KG)?n.type?!1:an(n,_.An_index_signature_must_have_a_type_annotation):an(a.name,_.An_index_signature_parameter_type_must_be_string_number_symbol_or_a_template_literal_type)}function wrt(n){return km(n)||Drt(n)}function Rrt(n,a){if(a&&a.length===0){let c=Gn(n),u=a.pos-1,p=xo(c.text,a.end)+1;return u0(c,u,p-u,_.Type_argument_list_cannot_be_empty)}return!1}function o8(n,a){return U1(a)||Rrt(n,a)}function Ort(n){return n.questionDotToken||n.flags&32?an(n.template,_.Tagged_template_expressions_are_not_permitted_in_an_optional_chain):!1}function ike(n){let a=n.types;if(U1(a))return!0;if(a&&a.length===0){let c=Xa(n.token);return u0(n,a.pos,0,_._0_list_cannot_be_empty,c)}return vt(a,ake)}function ake(n){return Vg(n)&&yL(n.expression)&&n.typeArguments?an(n,_.This_use_of_import_is_invalid_import_calls_can_be_written_but_they_must_have_parentheses_and_cannot_have_type_arguments):o8(n,n.typeArguments)}function Nrt(n){let a=!1,c=!1;if(!km(n)&&n.heritageClauses)for(let u of n.heritageClauses){if(u.token===94){if(a)return dl(u,_.extends_clause_already_seen);if(c)return dl(u,_.extends_clause_must_precede_implements_clause);if(u.types.length>1)return dl(u.types[1],_.Classes_can_only_extend_a_single_class);a=!0}else{if(L.assert(u.token===117),c)return dl(u,_.implements_clause_already_seen);c=!0}ike(u)}}function Prt(n){let a=!1;if(n.heritageClauses)for(let c of n.heritageClauses){if(c.token===94){if(a)return dl(c,_.extends_clause_already_seen);a=!0}else return L.assert(c.token===117),dl(c,_.Interface_declaration_cannot_have_implements_clause);ike(c)}return!1}function CU(n){if(n.kind!==164)return!1;let a=n;return a.expression.kind===223&&a.expression.operatorToken.kind===27?an(a.expression,_.A_comma_expression_is_not_allowed_in_a_computed_property_name):!1}function Yie(n){if(n.asteriskToken){if(L.assert(n.kind===259||n.kind===215||n.kind===171),n.flags&16777216)return an(n.asteriskToken,_.Generators_are_not_allowed_in_an_ambient_context);if(!n.body)return an(n.asteriskToken,_.An_overload_signature_cannot_be_declared_as_a_generator)}}function $ie(n,a){return!!n&&an(n,a)}function oke(n,a){return!!n&&an(n,a)}function Mrt(n,a){let c=new Map;for(let u of n.properties){if(u.kind===301){if(a){let T=vs(u.expression);if(fu(T)||rs(T))return an(u.expression,_.A_rest_element_cannot_contain_a_binding_pattern)}continue}let p=u.name;if(p.kind===164&&CU(p),u.kind===300&&!a&&u.objectAssignmentInitializer&&an(u.equalsToken,_.Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_part_of_a_destructuring_pattern),p.kind===80&&an(p,_.Private_identifiers_are_not_allowed_outside_class_bodies),h_(u)&&u.modifiers)for(let T of u.modifiers)Ha(T)&&(T.kind!==132||u.kind!==171)&&an(T,_._0_modifier_cannot_be_used_here,Qc(T));else if(cde(u)&&u.modifiers)for(let T of u.modifiers)Ha(T)&&an(T,_._0_modifier_cannot_be_used_here,Qc(T));let h;switch(u.kind){case 300:case 299:oke(u.exclamationToken,_.A_definite_assignment_assertion_is_not_permitted_in_this_context),$ie(u.questionToken,_.An_object_member_cannot_be_declared_optional),p.kind===8&&eae(p),h=4;break;case 171:h=8;break;case 174:h=1;break;case 175:h=2;break;default:throw L.assertNever(u,\"Unexpected syntax kind:\"+u.kind)}if(!a){let T=M0(p);if(T===void 0)continue;let k=c.get(T);if(!k)c.set(T,h);else if(h&8&&k&8)an(p,_.Duplicate_identifier_0,Qc(p));else if(h&4&&k&4)an(p,_.An_object_literal_cannot_have_multiple_properties_with_the_same_name,Qc(p));else if(h&3&&k&3)if(k!==3&&h!==k)c.set(T,h|k);else return an(p,_.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name);else return an(p,_.An_object_literal_cannot_have_property_and_accessor_with_the_same_name)}}}function Frt(n){Grt(n.tagName),o8(n,n.typeArguments);let a=new Map;for(let c of n.attributes.properties){if(c.kind===290)continue;let{name:u,initializer:p}=c;if(!a.get(u.escapedText))a.set(u.escapedText,!0);else return an(u,_.JSX_elements_cannot_have_multiple_attributes_with_the_same_name);if(p&&p.kind===291&&!p.expression)return an(p,_.JSX_attributes_must_only_be_assigned_a_non_empty_expression)}}function Grt(n){if(br(n)){let c=n;do{let p=a(c.name);if(p)return p;c=c.expression}while(br(c));let u=a(c);if(u)return u}function a(c){if(Re(c)&&vr(c).indexOf(\":\")!==-1)return an(c,_.JSX_property_access_expressions_cannot_include_JSX_namespace_names)}}function Brt(n){if(n.expression&&RL(n.expression))return an(n.expression,_.JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array)}function ske(n){if(vh(n))return!0;if(n.kind===247&&n.awaitModifier&&!(n.flags&32768)){let a=Gn(n);if(O6(n)){if(!l0(a))switch(oS(a,Y)||Lo.add(hr(n.awaitModifier,_.for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module)),ie){case 100:case 199:if(a.impliedNodeFormat===1){Lo.add(hr(n.awaitModifier,_.The_current_file_is_a_CommonJS_module_and_cannot_use_await_at_the_top_level));break}case 7:case 99:case 4:if(R>=4)break;default:Lo.add(hr(n.awaitModifier,_.Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher));break}}else if(!l0(a)){let c=hr(n.awaitModifier,_.for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules),u=qd(n);if(u&&u.kind!==173){L.assert((pl(u)&2)===0,\"Enclosing function should never be an async function.\");let p=hr(u,_.Did_you_mean_to_mark_this_function_as_async);Ao(c,p)}return Lo.add(c),!0}return!1}if(pO(n)&&!(n.flags&32768)&&Re(n.initializer)&&n.initializer.escapedText===\"async\")return an(n.initializer,_.The_left_hand_side_of_a_for_of_statement_may_not_be_async),!1;if(n.initializer.kind===258){let a=n.initializer;if(!Zie(a)){let c=a.declarations;if(!c.length)return!1;if(c.length>1){let p=n.kind===246?_.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement:_.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement;return dl(a.declarations[1],p)}let u=c[0];if(u.initializer){let p=n.kind===246?_.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer:_.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer;return an(u.name,p)}if(u.type){let p=n.kind===246?_.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation:_.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation;return an(u,p)}}}return!1}function Urt(n){if(!(n.flags&16777216)&&n.parent.kind!==184&&n.parent.kind!==261){if(R<1)return an(n.name,_.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher);if(R<2&&pi(n.name))return an(n.name,_.Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher);if(n.body===void 0&&!Mr(n,256))return u0(n,n.end-1,1,_._0_expected,\"{\")}if(n.body){if(Mr(n,256))return an(n,_.An_abstract_accessor_cannot_have_an_implementation);if(n.parent.kind===184||n.parent.kind===261)return an(n.body,_.An_implementation_cannot_be_declared_in_ambient_contexts)}if(n.typeParameters)return an(n.name,_.An_accessor_cannot_have_type_parameters);if(!Vrt(n))return an(n.name,n.kind===174?_.A_get_accessor_cannot_have_parameters:_.A_set_accessor_must_have_exactly_one_parameter);if(n.kind===175){if(n.type)return an(n.name,_.A_set_accessor_cannot_have_a_return_type_annotation);let a=L.checkDefined(jI(n),\"Return value does not match parameter count assertion.\");if(a.dotDotDotToken)return an(a.dotDotDotToken,_.A_set_accessor_cannot_have_rest_parameter);if(a.questionToken)return an(a.questionToken,_.A_set_accessor_cannot_have_an_optional_parameter);if(a.initializer)return an(n.name,_.A_set_accessor_parameter_cannot_have_an_initializer)}return!1}function Vrt(n){return Qie(n)||n.parameters.length===(n.kind===174?0:1)}function Qie(n){if(n.parameters.length===(n.kind===174?1:2))return F0(n)}function jrt(n){if(n.operator===156){if(n.type.kind!==153)return an(n.type,_._0_expected,Xa(153));let a=fR(n.parent);if(Yn(a)&&VT(a)){let c=fS(a);c&&(a=WA(c)||c)}switch(a.kind){case 257:let c=a;if(c.name.kind!==79)return an(n,_.unique_symbol_types_may_not_be_used_on_a_variable_declaration_with_a_binding_name);if(!L6(c))return an(n,_.unique_symbol_types_are_only_allowed_on_variables_in_a_variable_statement);if(!(c.parent.flags&2))return an(a.name,_.A_variable_whose_type_is_a_unique_symbol_type_must_be_const);break;case 169:if(!Ca(a)||!HI(a))return an(a.name,_.A_property_of_a_class_whose_type_is_a_unique_symbol_type_must_be_both_static_and_readonly);break;case 168:if(!Mr(a,64))return an(a.name,_.A_property_of_an_interface_or_type_literal_whose_type_is_a_unique_symbol_type_must_be_readonly);break;default:return an(n,_.unique_symbol_types_are_not_allowed_here)}}else if(n.operator===146&&n.type.kind!==185&&n.type.kind!==186)return dl(n,_.readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types,Xa(153))}function KC(n,a){if(hJe(n))return an(n,a)}function cke(n){if(AU(n))return!0;if(n.kind===171){if(n.parent.kind===207){if(n.modifiers&&!(n.modifiers.length===1&&Vo(n.modifiers).kind===132))return dl(n,_.Modifiers_cannot_appear_here);if($ie(n.questionToken,_.An_object_member_cannot_be_declared_optional))return!0;if(oke(n.exclamationToken,_.A_definite_assignment_assertion_is_not_permitted_in_this_context))return!0;if(n.body===void 0)return u0(n,n.end-1,1,_._0_expected,\"{\")}if(Yie(n))return!0}if(Yr(n.parent)){if(R<2&&pi(n.name))return an(n.name,_.Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher);if(n.flags&16777216)return KC(n.name,_.A_computed_property_name_in_an_ambient_context_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type);if(n.kind===171&&!n.body)return KC(n.name,_.A_computed_property_name_in_a_method_overload_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type)}else{if(n.parent.kind===261)return KC(n.name,_.A_computed_property_name_in_an_interface_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type);if(n.parent.kind===184)return KC(n.name,_.A_computed_property_name_in_a_type_literal_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type)}}function Hrt(n){let a=n;for(;a;){if(xA(a))return an(n,_.Jump_target_cannot_cross_function_boundary);switch(a.kind){case 253:if(n.label&&a.label.escapedText===n.label.escapedText)return n.kind===248&&!Wy(a.statement,!0)?an(n,_.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement):!1;break;case 252:if(n.kind===249&&!n.label)return!1;break;default:if(Wy(a,!1)&&!n.label)return!1;break}a=a.parent}if(n.label){let c=n.kind===249?_.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement:_.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement;return an(n,c)}else{let c=n.kind===249?_.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement:_.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement;return an(n,c)}}function Wrt(n){if(n.dotDotDotToken){let a=n.parent.elements;if(n!==To(a))return an(n,_.A_rest_element_must_be_last_in_a_destructuring_pattern);if(U1(a,_.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma),n.propertyName)return an(n.name,_.A_rest_element_cannot_have_a_property_name)}if(n.dotDotDotToken&&n.initializer)return u0(n,n.initializer.pos-1,1,_.A_rest_element_cannot_have_an_initializer)}function lke(n){return gf(n)||n.kind===221&&n.operator===40&&n.operand.kind===8}function zrt(n){return n.kind===9||n.kind===221&&n.operator===40&&n.operand.kind===9}function Jrt(n){if((br(n)||Vs(n)&&lke(n.argumentExpression))&&bc(n.expression))return!!(Ic(n).flags&1056)}function uke(n){let a=n.initializer;if(a){let c=!(lke(a)||Jrt(a)||a.kind===110||a.kind===95||zrt(a));if((x6(n)||wi(n)&&kh(n))&&!n.type){if(c)return an(a,_.A_const_initializer_in_an_ambient_context_must_be_a_string_or_numeric_literal_or_literal_enum_reference)}else return an(a,_.Initializers_are_not_allowed_in_ambient_contexts)}}function Krt(n){if(n.parent.parent.kind!==246&&n.parent.parent.kind!==247){if(n.flags&16777216)uke(n);else if(!n.initializer){if(La(n.name)&&!La(n.parent))return an(n,_.A_destructuring_declaration_must_have_an_initializer);if(kh(n))return an(n,_.const_declarations_must_be_initialized)}}if(n.exclamationToken&&(n.parent.parent.kind!==240||!n.type||n.initializer||n.flags&16777216)){let c=n.initializer?_.Declarations_with_initializers_cannot_also_have_definite_assignment_assertions:n.type?_.A_definite_assignment_assertion_is_not_permitted_in_this_context:_.Declarations_with_definite_assignment_assertions_must_also_have_type_annotations;return an(n.exclamationToken,c)}return(ie<5||Gn(n).impliedNodeFormat===1)&&ie!==4&&!(n.parent.parent.flags&16777216)&&Mr(n.parent.parent,1)&&dke(n.name),(LI(n)||kh(n))&&fke(n.name)}function dke(n){if(n.kind===79){if(vr(n)===\"__esModule\")return Yrt(\"noEmit\",n,_.Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules)}else{let a=n.elements;for(let c of a)if(!ol(c))return dke(c.name)}return!1}function fke(n){if(n.kind===79){if(n.escapedText===\"let\")return an(n,_.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations)}else{let a=n.elements;for(let c of a)ol(c)||fke(c.name)}return!1}function Zie(n){let a=n.declarations;return U1(n.declarations)?!0:n.declarations.length?!1:u0(n,a.pos,a.end-a.pos,_.Variable_declaration_list_cannot_be_empty)}function _ke(n){switch(n.kind){case 242:case 243:case 244:case 251:case 245:case 246:case 247:return!1;case 253:return _ke(n.parent)}return!0}function qrt(n){if(!_ke(n.parent)){if(LI(n.declarationList))return an(n,_.let_declarations_can_only_be_declared_inside_a_block);if(kh(n.declarationList))return an(n,_.const_declarations_can_only_be_declared_inside_a_block)}}function Xrt(n){let a=n.name.escapedText;switch(n.keywordToken){case 103:if(a!==\"target\")return an(n.name,_._0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2,n.name.escapedText,Xa(n.keywordToken),\"target\");break;case 100:if(a!==\"meta\")return an(n.name,_._0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2,n.name.escapedText,Xa(n.keywordToken),\"meta\");break}}function l0(n){return n.parseDiagnostics.length>0}function dl(n,a,c,u,p){let h=Gn(n);if(!l0(h)){let T=Pg(h,n.pos);return Lo.add(al(h,T.start,T.length,a,c,u,p)),!0}return!1}function u0(n,a,c,u,p,h,T){let k=Gn(n);return l0(k)?!1:(Lo.add(al(k,a,c,u,p,h,T)),!0)}function Yrt(n,a,c,u,p,h){let T=Gn(a);return l0(T)?!1:(Ev(n,a,c,u,p,h),!0)}function an(n,a,c,u,p){let h=Gn(n);return l0(h)?!1:(Lo.add(hr(n,a,c,u,p)),!0)}function $rt(n){let a=Yn(n)?t4(n):void 0,c=n.typeParameters||a&&Sl(a);if(c){let u=c.pos===c.end?c.pos:xo(Gn(n).text,c.pos);return u0(n,u,c.end-u,_.Type_parameters_cannot_appear_on_a_constructor_declaration)}}function Qrt(n){let a=n.type||B_(n);if(a)return an(a,_.Type_annotation_cannot_appear_on_a_constructor_declaration)}function Zrt(n){if(ts(n.name)&&ar(n.name.expression)&&n.name.expression.operatorToken.kind===101)return an(n.parent.members[0],_.A_mapped_type_may_not_declare_properties_or_methods);if(Yr(n.parent)){if(yo(n.name)&&n.name.text===\"constructor\")return an(n.name,_.Classes_may_not_have_a_field_named_constructor);if(KC(n.name,_.A_computed_property_name_in_a_class_property_declaration_must_have_a_simple_literal_type_or_a_unique_symbol_type))return!0;if(R<2&&pi(n.name))return an(n.name,_.Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher);if(R<2&&Id(n))return an(n.name,_.Properties_with_the_accessor_modifier_are_only_available_when_targeting_ECMAScript_2015_and_higher);if(Id(n)&&$ie(n.questionToken,_.An_accessor_property_cannot_be_declared_optional))return!0}else if(n.parent.kind===261){if(KC(n.name,_.A_computed_property_name_in_an_interface_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type))return!0;if(L.assertNode(n,Yd),n.initializer)return an(n.initializer,_.An_interface_property_cannot_have_an_initializer)}else if(Rd(n.parent)){if(KC(n.name,_.A_computed_property_name_in_a_type_literal_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type))return!0;if(L.assertNode(n,Yd),n.initializer)return an(n.initializer,_.A_type_literal_property_cannot_have_an_initializer)}if(n.flags&16777216&&uke(n),Na(n)&&n.exclamationToken&&(!Yr(n.parent)||!n.type||n.initializer||n.flags&16777216||Ca(n)||B0(n))){let a=n.initializer?_.Declarations_with_initializers_cannot_also_have_definite_assignment_assertions:n.type?_.A_definite_assignment_assertion_is_not_permitted_in_this_context:_.Declarations_with_definite_assignment_assertions_must_also_have_type_annotations;return an(n.exclamationToken,a)}}function eit(n){return n.kind===261||n.kind===262||n.kind===269||n.kind===268||n.kind===275||n.kind===274||n.kind===267||Mr(n,1027)?!1:dl(n,_.Top_level_declarations_in_d_ts_files_must_start_with_either_a_declare_or_export_modifier)}function tit(n){for(let a of n.statements)if((Kl(a)||a.kind===240)&&eit(a))return!0;return!1}function nit(n){return!!(n.flags&16777216)&&tit(n)}function vh(n){if(n.flags&16777216){if(!Rr(n).hasReportedStatementInAmbientContext&&(Ia(n.parent)||rb(n.parent)))return Rr(n).hasReportedStatementInAmbientContext=dl(n,_.An_implementation_cannot_be_declared_in_ambient_contexts);if(n.parent.kind===238||n.parent.kind===265||n.parent.kind===308){let c=Rr(n.parent);if(!c.hasReportedStatementInAmbientContext)return c.hasReportedStatementInAmbientContext=dl(n,_.Statements_are_not_allowed_in_ambient_contexts)}}return!1}function eae(n){if(n.numericLiteralFlags&32){let a;if(R>=1?a=_.Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher_Use_the_syntax_0:TH(n,198)?a=_.Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0:TH(n,302)&&(a=_.Octal_literals_are_not_allowed_in_enums_members_initializer_Use_the_syntax_0),a){let c=tv(n.parent)&&n.parent.operator===40,u=(c?\"-\":\"\")+\"0o\"+n.text;return an(c?n.parent:n,a,u)}}return rit(n),!1}function rit(n){let a=Qc(n).indexOf(\".\")!==-1,c=n.numericLiteralFlags&16;a||c||+n.text<=2**53-1||ey(!1,hr(n,_.Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers))}function iit(n){return!!(!(mb(n.parent)||tv(n.parent)&&mb(n.parent.parent))&&R<7&&an(n,_.BigInt_literals_are_not_available_when_targeting_lower_than_ES2020))}function ait(n,a,c,u,p){let h=Gn(n);if(!l0(h)){let T=Pg(h,n.pos);return Lo.add(al(h,wl(T),0,a,c,u,p)),!0}return!1}function oit(){return Go||(Go=[],Ne.forEach((n,a)=>{uF.test(a)&&Go.push(n)})),Go}function sit(n){var a;return n.isTypeOnly&&n.name&&n.namedBindings?an(n,_.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both):n.isTypeOnly&&((a=n.namedBindings)==null?void 0:a.kind)===272?pke(n.namedBindings):!1}function pke(n){return!!mn(n.elements,a=>{if(a.isTypeOnly)return dl(a,a.kind===273?_.The_type_modifier_cannot_be_used_on_a_named_import_when_import_type_is_used_on_its_import_statement:_.The_type_modifier_cannot_be_used_on_a_named_export_when_export_type_is_used_on_its_export_statement)})}function cit(n){if(Y.verbatimModuleSyntax&&ie===1)return an(n,_.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_verbatimModuleSyntax_is_enabled);if(ie===5)return an(n,_.Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_es2020_es2022_esnext_commonjs_amd_system_umd_node16_or_nodenext);if(n.typeArguments)return an(n,_.This_use_of_import_is_invalid_import_calls_can_be_written_but_they_must_have_parentheses_and_cannot_have_type_arguments);let a=n.arguments;if(ie!==99&&ie!==199&&ie!==100&&(U1(a),a.length>1)){let u=a[1];return an(u,_.Dynamic_imports_only_support_a_second_argument_when_the_module_option_is_set_to_esnext_node16_or_nodenext)}if(a.length===0||a.length>2)return an(n,_.Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments);let c=wr(a,Km);return c?an(c,_.Argument_of_dynamic_import_cannot_be_spread_element):!1}function lit(n,a){let c=Ur(n);if(c&20&&a.flags&1048576)return wr(a.types,u=>{if(u.flags&524288){let p=c&Ur(u);if(p&4)return n.target===u.target;if(p&16)return!!n.aliasSymbol&&n.aliasSymbol===u.aliasSymbol}return!1})}function uit(n,a){if(Ur(n)&128&&yh(a,Kv))return wr(a.types,c=>!Kv(c))}function dit(n,a){let c=0;if(xa(n,c).length>0||(c=1,xa(n,c).length>0))return wr(a.types,p=>xa(p,c).length>0)}function fit(n,a){let c;if(!(n.flags&406978556)){let u=0;for(let p of a.types)if(!(p.flags&406978556)){let h=so([Gp(n),Gp(p)]);if(h.flags&4194304)return p;if(O_(h)||h.flags&1048576){let T=h.flags&1048576?Oy(h.types,O_):1;T>=u&&(c=p,u=T)}}}return c}function _it(n){if(Js(n,67108864)){let a=jc(n,c=>!(c.flags&134348796));if(!(a.flags&131072))return a}return n}function mke(n,a,c,u){if(a.flags&1048576&&n.flags&2621440){let p=O2e(a,n);if(p)return p;let h=Jo(n);if(h){let T=R2e(h,a);if(T)return Wne(a,on(T,k=>[()=>zn(k),k.escapedName]),c,void 0,u)}}}}function mPe(e){return!rb(e)}function D_e(e){return e.kind!==259&&e.kind!==171||!!e.body}function w_e(e){switch(e.parent.kind){case 273:case 278:return Re(e);default:return Rh(e)}}function R_e(e){switch(e){case 0:return\"yieldType\";case 1:return\"returnType\";case 2:return\"nextType\"}}function Xl(e){return!!(e.flags&1)}function _K(e){return!!(e.flags&2)}function hPe(e){return{getCommonSourceDirectory:e.getCommonSourceDirectory?()=>e.getCommonSourceDirectory():()=>\"\",getCurrentDirectory:()=>e.getCurrentDirectory(),getSymlinkCache:ho(e,e.getSymlinkCache),getPackageJsonInfoCache:()=>{var t;return(t=e.getPackageJsonInfoCache)==null?void 0:t.call(e)},useCaseSensitiveFileNames:ho(e,e.useCaseSensitiveFileNames),redirectTargetsMap:e.redirectTargetsMap,getProjectReferenceRedirect:t=>e.getProjectReferenceRedirect(t),isSourceOfProjectReferenceRedirect:t=>e.isSourceOfProjectReferenceRedirect(t),fileExists:t=>e.fileExists(t),getFileIncludeReasons:()=>e.getFileIncludeReasons(),readFile:e.readFile?t=>e.readFile(t):void 0}}var uF,rN,pK,mK,hK,gK,dF,fF,_F,pF,O_e,iN,yK,$d,aN,gPe=gt({\"src/compiler/checker.ts\"(){\"use strict\";fa(),dK(),E0(),uF=/^\".+\"$/,rN=\"(anonymous)\",pK=1,mK=1,hK=1,gK=1,dF=(e=>(e[e.None=0]=\"None\",e[e.TypeofEQString=1]=\"TypeofEQString\",e[e.TypeofEQNumber=2]=\"TypeofEQNumber\",e[e.TypeofEQBigInt=4]=\"TypeofEQBigInt\",e[e.TypeofEQBoolean=8]=\"TypeofEQBoolean\",e[e.TypeofEQSymbol=16]=\"TypeofEQSymbol\",e[e.TypeofEQObject=32]=\"TypeofEQObject\",e[e.TypeofEQFunction=64]=\"TypeofEQFunction\",e[e.TypeofEQHostObject=128]=\"TypeofEQHostObject\",e[e.TypeofNEString=256]=\"TypeofNEString\",e[e.TypeofNENumber=512]=\"TypeofNENumber\",e[e.TypeofNEBigInt=1024]=\"TypeofNEBigInt\",e[e.TypeofNEBoolean=2048]=\"TypeofNEBoolean\",e[e.TypeofNESymbol=4096]=\"TypeofNESymbol\",e[e.TypeofNEObject=8192]=\"TypeofNEObject\",e[e.TypeofNEFunction=16384]=\"TypeofNEFunction\",e[e.TypeofNEHostObject=32768]=\"TypeofNEHostObject\",e[e.EQUndefined=65536]=\"EQUndefined\",e[e.EQNull=131072]=\"EQNull\",e[e.EQUndefinedOrNull=262144]=\"EQUndefinedOrNull\",e[e.NEUndefined=524288]=\"NEUndefined\",e[e.NENull=1048576]=\"NENull\",e[e.NEUndefinedOrNull=2097152]=\"NEUndefinedOrNull\",e[e.Truthy=4194304]=\"Truthy\",e[e.Falsy=8388608]=\"Falsy\",e[e.IsUndefined=16777216]=\"IsUndefined\",e[e.IsNull=33554432]=\"IsNull\",e[e.IsUndefinedOrNull=50331648]=\"IsUndefinedOrNull\",e[e.All=134217727]=\"All\",e[e.BaseStringStrictFacts=3735041]=\"BaseStringStrictFacts\",e[e.BaseStringFacts=12582401]=\"BaseStringFacts\",e[e.StringStrictFacts=16317953]=\"StringStrictFacts\",e[e.StringFacts=16776705]=\"StringFacts\",e[e.EmptyStringStrictFacts=12123649]=\"EmptyStringStrictFacts\",e[e.EmptyStringFacts=12582401]=\"EmptyStringFacts\",e[e.NonEmptyStringStrictFacts=7929345]=\"NonEmptyStringStrictFacts\",e[e.NonEmptyStringFacts=16776705]=\"NonEmptyStringFacts\",e[e.BaseNumberStrictFacts=3734786]=\"BaseNumberStrictFacts\",e[e.BaseNumberFacts=12582146]=\"BaseNumberFacts\",e[e.NumberStrictFacts=16317698]=\"NumberStrictFacts\",e[e.NumberFacts=16776450]=\"NumberFacts\",e[e.ZeroNumberStrictFacts=12123394]=\"ZeroNumberStrictFacts\",e[e.ZeroNumberFacts=12582146]=\"ZeroNumberFacts\",e[e.NonZeroNumberStrictFacts=7929090]=\"NonZeroNumberStrictFacts\",e[e.NonZeroNumberFacts=16776450]=\"NonZeroNumberFacts\",e[e.BaseBigIntStrictFacts=3734276]=\"BaseBigIntStrictFacts\",e[e.BaseBigIntFacts=12581636]=\"BaseBigIntFacts\",e[e.BigIntStrictFacts=16317188]=\"BigIntStrictFacts\",e[e.BigIntFacts=16775940]=\"BigIntFacts\",e[e.ZeroBigIntStrictFacts=12122884]=\"ZeroBigIntStrictFacts\",e[e.ZeroBigIntFacts=12581636]=\"ZeroBigIntFacts\",e[e.NonZeroBigIntStrictFacts=7928580]=\"NonZeroBigIntStrictFacts\",e[e.NonZeroBigIntFacts=16775940]=\"NonZeroBigIntFacts\",e[e.BaseBooleanStrictFacts=3733256]=\"BaseBooleanStrictFacts\",e[e.BaseBooleanFacts=12580616]=\"BaseBooleanFacts\",e[e.BooleanStrictFacts=16316168]=\"BooleanStrictFacts\",e[e.BooleanFacts=16774920]=\"BooleanFacts\",e[e.FalseStrictFacts=12121864]=\"FalseStrictFacts\",e[e.FalseFacts=12580616]=\"FalseFacts\",e[e.TrueStrictFacts=7927560]=\"TrueStrictFacts\",e[e.TrueFacts=16774920]=\"TrueFacts\",e[e.SymbolStrictFacts=7925520]=\"SymbolStrictFacts\",e[e.SymbolFacts=16772880]=\"SymbolFacts\",e[e.ObjectStrictFacts=7888800]=\"ObjectStrictFacts\",e[e.ObjectFacts=16736160]=\"ObjectFacts\",e[e.FunctionStrictFacts=7880640]=\"FunctionStrictFacts\",e[e.FunctionFacts=16728e3]=\"FunctionFacts\",e[e.VoidFacts=9830144]=\"VoidFacts\",e[e.UndefinedFacts=26607360]=\"UndefinedFacts\",e[e.NullFacts=42917664]=\"NullFacts\",e[e.EmptyObjectStrictFacts=83427327]=\"EmptyObjectStrictFacts\",e[e.EmptyObjectFacts=83886079]=\"EmptyObjectFacts\",e[e.UnknownFacts=83886079]=\"UnknownFacts\",e[e.AllTypeofNE=556800]=\"AllTypeofNE\",e[e.OrFactsMask=8256]=\"OrFactsMask\",e[e.AndFactsMask=134209471]=\"AndFactsMask\",e))(dF||{}),fF=new Map(Object.entries({string:256,number:512,bigint:1024,boolean:2048,symbol:4096,undefined:524288,object:8192,function:16384})),_F=(e=>(e[e.Normal=0]=\"Normal\",e[e.Contextual=1]=\"Contextual\",e[e.Inferential=2]=\"Inferential\",e[e.SkipContextSensitive=4]=\"SkipContextSensitive\",e[e.SkipGenericFunctions=8]=\"SkipGenericFunctions\",e[e.IsForSignatureHelp=16]=\"IsForSignatureHelp\",e[e.IsForStringLiteralArgumentCompletions=32]=\"IsForStringLiteralArgumentCompletions\",e[e.RestBindingElement=64]=\"RestBindingElement\",e))(_F||{}),pF=(e=>(e[e.None=0]=\"None\",e[e.BivariantCallback=1]=\"BivariantCallback\",e[e.StrictCallback=2]=\"StrictCallback\",e[e.IgnoreReturnTypes=4]=\"IgnoreReturnTypes\",e[e.StrictArity=8]=\"StrictArity\",e[e.StrictTopSignature=16]=\"StrictTopSignature\",e[e.Callback=3]=\"Callback\",e))(pF||{}),O_e=g8(D_e,mPe),iN=new Map(Object.entries({Uppercase:0,Lowercase:1,Capitalize:2,Uncapitalize:3})),yK=class{},(e=>{e.JSX=\"JSX\",e.IntrinsicElements=\"IntrinsicElements\",e.ElementClass=\"ElementClass\",e.ElementAttributesPropertyNameContainer=\"ElementAttributesProperty\",e.ElementChildrenAttributeNameContainer=\"ElementChildrenAttribute\",e.Element=\"Element\",e.IntrinsicAttributes=\"IntrinsicAttributes\",e.IntrinsicClassAttributes=\"IntrinsicClassAttributes\",e.LibraryManagedAttributes=\"LibraryManagedAttributes\"})($d||($d={})),aN=class{constructor(e,t,r){this.moduleResolverHost=void 0,this.inner=void 0,this.disableTrackSymbol=!1;for(var i;t instanceof aN;)t=t.inner;this.inner=t,this.moduleResolverHost=r,this.context=e,this.canTrackSymbol=!!((i=this.inner)!=null&&i.trackSymbol)}trackSymbol(e,t,r){var i;return((i=this.inner)==null?void 0:i.trackSymbol)&&!this.disableTrackSymbol&&this.inner.trackSymbol(e,t,r)?(this.onDiagnosticReported(),!0):!1}reportInaccessibleThisError(){var e;(e=this.inner)!=null&&e.reportInaccessibleThisError&&(this.onDiagnosticReported(),this.inner.reportInaccessibleThisError())}reportPrivateInBaseOfClassExpression(e){var t;(t=this.inner)!=null&&t.reportPrivateInBaseOfClassExpression&&(this.onDiagnosticReported(),this.inner.reportPrivateInBaseOfClassExpression(e))}reportInaccessibleUniqueSymbolError(){var e;(e=this.inner)!=null&&e.reportInaccessibleUniqueSymbolError&&(this.onDiagnosticReported(),this.inner.reportInaccessibleUniqueSymbolError())}reportCyclicStructureError(){var e;(e=this.inner)!=null&&e.reportCyclicStructureError&&(this.onDiagnosticReported(),this.inner.reportCyclicStructureError())}reportLikelyUnsafeImportRequiredError(e){var t;(t=this.inner)!=null&&t.reportLikelyUnsafeImportRequiredError&&(this.onDiagnosticReported(),this.inner.reportLikelyUnsafeImportRequiredError(e))}reportTruncationError(){var e;(e=this.inner)!=null&&e.reportTruncationError&&(this.onDiagnosticReported(),this.inner.reportTruncationError())}trackReferencedAmbientModule(e,t){var r;(r=this.inner)!=null&&r.trackReferencedAmbientModule&&(this.onDiagnosticReported(),this.inner.trackReferencedAmbientModule(e,t))}trackExternalModuleSymbolOfImportTypeNode(e){var t;(t=this.inner)!=null&&t.trackExternalModuleSymbolOfImportTypeNode&&(this.onDiagnosticReported(),this.inner.trackExternalModuleSymbolOfImportTypeNode(e))}reportNonlocalAugmentation(e,t,r){var i;(i=this.inner)!=null&&i.reportNonlocalAugmentation&&(this.onDiagnosticReported(),this.inner.reportNonlocalAugmentation(e,t,r))}reportNonSerializableProperty(e){var t;(t=this.inner)!=null&&t.reportNonSerializableProperty&&(this.onDiagnosticReported(),this.inner.reportNonSerializableProperty(e))}reportImportTypeNodeResolutionModeOverride(){var e;(e=this.inner)!=null&&e.reportImportTypeNodeResolutionModeOverride&&(this.onDiagnosticReported(),this.inner.reportImportTypeNodeResolutionModeOverride())}onDiagnosticReported(){this.context.reportedDiagnostic=!0}}}});function $e(e,t,r,i){if(e===void 0)return e;let o=t(e),s;if(o!==void 0)return ba(o)?s=(i||TPe)(o):s=o,L.assertNode(s,r),s}function On(e,t,r,i,o){if(e===void 0)return e;let s=e.length;(i===void 0||i<0)&&(i=0),(o===void 0||o>s-i)&&(o=s-i);let l,f=-1,d=-1;i>0||o<s?l=e.hasTrailingComma&&i+o===s:(f=e.pos,d=e.end,l=e.hasTrailingComma);let g=N_e(e,t,r,i,o);if(g!==e){let m=D.createNodeArray(g,l);return om(m,f,d),m}return e}function vK(e,t,r,i,o){if(e===void 0)return e;let s=e.length;return(i===void 0||i<0)&&(i=0),(o===void 0||o>s-i)&&(o=s-i),N_e(e,t,r,i,o)}function N_e(e,t,r,i,o){let s,l=e.length;(i>0||o<l)&&(s=[]);for(let f=0;f<o;f++){let d=e[f+i],g=d!==void 0?t?t(d):d:void 0;if((s!==void 0||g===void 0||g!==d)&&(s===void 0&&(s=e.slice(0,f),L.assertEachNode(s,r)),g))if(ba(g))for(let m of g)L.assertNode(m,r),s.push(m);else L.assertNode(g,r),s.push(g)}return s||(L.assertEachNode(e,r),e)}function mF(e,t,r,i,o,s=On){return r.startLexicalEnvironment(),e=s(e,t,ca,i),o&&(e=r.factory.ensureUseStrict(e)),D.mergeLexicalEnvironment(e,r.endLexicalEnvironment())}function Sc(e,t,r,i=On){let o;return r.startLexicalEnvironment(),e&&(r.setLexicalEnvironmentFlags(1,!0),o=i(e,t,ha),r.getLexicalEnvironmentFlags()&2&&Do(r.getCompilerOptions())>=2&&(o=yPe(o,r)),r.setLexicalEnvironmentFlags(1,!1)),r.suspendLexicalEnvironment(),o}function yPe(e,t){let r;for(let i=0;i<e.length;i++){let o=e[i],s=vPe(o,t);(r||s!==o)&&(r||(r=e.slice(0,i)),r[i]=s)}return r?it(t.factory.createNodeArray(r,e.hasTrailingComma),e):e}function vPe(e,t){return e.dotDotDotToken?e:La(e.name)?bPe(e,t):e.initializer?EPe(e,e.name,e.initializer,t):e}function bPe(e,t){let{factory:r}=t;return t.addInitializationStatement(r.createVariableStatement(void 0,r.createVariableDeclarationList([r.createVariableDeclaration(e.name,void 0,e.type,e.initializer?r.createConditionalExpression(r.createStrictEquality(r.getGeneratedNameForNode(e),r.createVoidZero()),void 0,e.initializer,void 0,r.getGeneratedNameForNode(e)):r.getGeneratedNameForNode(e))]))),r.updateParameterDeclaration(e,e.modifiers,e.dotDotDotToken,r.getGeneratedNameForNode(e),e.questionToken,e.type,void 0)}function EPe(e,t,r,i){let o=i.factory;return i.addInitializationStatement(o.createIfStatement(o.createTypeCheck(o.cloneNode(t),\"undefined\"),Jn(it(o.createBlock([o.createExpressionStatement(Jn(it(o.createAssignment(Jn(o.cloneNode(t),96),Jn(r,96|Ya(r)|3072)),e),3072))]),e),3905))),o.updateParameterDeclaration(e,e.modifiers,e.dotDotDotToken,e.name,e.questionToken,e.type,void 0)}function Qd(e,t,r,i=$e){r.resumeLexicalEnvironment();let o=i(e,t,u6),s=r.endLexicalEnvironment();if(vt(s)){if(!o)return r.factory.createBlock(s);let l=r.factory.converters.convertToFunctionBlock(o),f=D.mergeLexicalEnvironment(l.statements,s);return r.factory.updateBlock(l,f)}return o}function Vf(e,t,r,i=$e){r.startBlockScope();let o=i(e,t,ca,r.factory.liftToBlock);L.assert(o);let s=r.endBlockScope();return vt(s)?Va(o)?(s.push(...o.statements),r.factory.updateBlock(o,s)):(s.push(o),r.factory.createBlock(s)):o}function oN(e,t,r=t){if(r===t||e.length<=1)return On(e,t,ot);let i=0,o=e.length;return On(e,s=>{let l=i<o-1;return i++,l?r(s):t(s)},ot)}function xn(e,t,r,i=On,o,s=$e){if(e===void 0)return;let l=P_e[e.kind];return l===void 0?e:l(e,t,r,i,s,o)}function TPe(e){return L.assert(e.length<=1,\"Too many nodes written to output.\"),Wp(e)}var P_e,SPe=gt({\"src/compiler/visitorPublic.ts\"(){\"use strict\";fa(),P_e={[163]:function(t,r,i,o,s,l){return i.factory.updateQualifiedName(t,L.checkDefined(s(t.left,r,Cd)),L.checkDefined(s(t.right,r,Re)))},[164]:function(t,r,i,o,s,l){return i.factory.updateComputedPropertyName(t,L.checkDefined(s(t.expression,r,ot)))},[165]:function(t,r,i,o,s,l){return i.factory.updateTypeParameterDeclaration(t,o(t.modifiers,r,Ha),L.checkDefined(s(t.name,r,Re)),s(t.constraint,r,bi),s(t.default,r,bi))},[166]:function(t,r,i,o,s,l){return i.factory.updateParameterDeclaration(t,o(t.modifiers,r,Ns),l?s(t.dotDotDotToken,l,o3):t.dotDotDotToken,L.checkDefined(s(t.name,r,Mm)),l?s(t.questionToken,l,ev):t.questionToken,s(t.type,r,bi),s(t.initializer,r,ot))},[167]:function(t,r,i,o,s,l){return i.factory.updateDecorator(t,L.checkDefined(s(t.expression,r,ot)))},[168]:function(t,r,i,o,s,l){return i.factory.updatePropertySignature(t,o(t.modifiers,r,Ha),L.checkDefined(s(t.name,r,Ys)),l?s(t.questionToken,l,ev):t.questionToken,s(t.type,r,bi))},[169]:function(t,r,i,o,s,l){var f,d;return i.factory.updatePropertyDeclaration(t,o(t.modifiers,r,Ns),L.checkDefined(s(t.name,r,Ys)),l?s((f=t.questionToken)!=null?f:t.exclamationToken,l,lde):(d=t.questionToken)!=null?d:t.exclamationToken,s(t.type,r,bi),s(t.initializer,r,ot))},[170]:function(t,r,i,o,s,l){return i.factory.updateMethodSignature(t,o(t.modifiers,r,Ha),L.checkDefined(s(t.name,r,Ys)),l?s(t.questionToken,l,ev):t.questionToken,o(t.typeParameters,r,_c),o(t.parameters,r,ha),s(t.type,r,bi))},[171]:function(t,r,i,o,s,l){return i.factory.updateMethodDeclaration(t,o(t.modifiers,r,Ns),l?s(t.asteriskToken,l,lO):t.asteriskToken,L.checkDefined(s(t.name,r,Ys)),l?s(t.questionToken,l,ev):t.questionToken,o(t.typeParameters,r,_c),Sc(t.parameters,r,i,o),s(t.type,r,bi),Qd(t.body,r,i,s))},[173]:function(t,r,i,o,s,l){return i.factory.updateConstructorDeclaration(t,o(t.modifiers,r,Ns),Sc(t.parameters,r,i,o),Qd(t.body,r,i,s))},[174]:function(t,r,i,o,s,l){return i.factory.updateGetAccessorDeclaration(t,o(t.modifiers,r,Ns),L.checkDefined(s(t.name,r,Ys)),Sc(t.parameters,r,i,o),s(t.type,r,bi),Qd(t.body,r,i,s))},[175]:function(t,r,i,o,s,l){return i.factory.updateSetAccessorDeclaration(t,o(t.modifiers,r,Ns),L.checkDefined(s(t.name,r,Ys)),Sc(t.parameters,r,i,o),Qd(t.body,r,i,s))},[172]:function(t,r,i,o,s,l){return i.startLexicalEnvironment(),i.suspendLexicalEnvironment(),i.factory.updateClassStaticBlockDeclaration(t,Qd(t.body,r,i,s))},[176]:function(t,r,i,o,s,l){return i.factory.updateCallSignature(t,o(t.typeParameters,r,_c),o(t.parameters,r,ha),s(t.type,r,bi))},[177]:function(t,r,i,o,s,l){return i.factory.updateConstructSignature(t,o(t.typeParameters,r,_c),o(t.parameters,r,ha),s(t.type,r,bi))},[178]:function(t,r,i,o,s,l){return i.factory.updateIndexSignature(t,o(t.modifiers,r,Ns),o(t.parameters,r,ha),L.checkDefined(s(t.type,r,bi)))},[179]:function(t,r,i,o,s,l){return i.factory.updateTypePredicateNode(t,s(t.assertsModifier,r,Due),L.checkDefined(s(t.parameterName,r,ude)),s(t.type,r,bi))},[180]:function(t,r,i,o,s,l){return i.factory.updateTypeReferenceNode(t,L.checkDefined(s(t.typeName,r,Cd)),o(t.typeArguments,r,bi))},[181]:function(t,r,i,o,s,l){return i.factory.updateFunctionTypeNode(t,o(t.typeParameters,r,_c),o(t.parameters,r,ha),L.checkDefined(s(t.type,r,bi)))},[182]:function(t,r,i,o,s,l){return i.factory.updateConstructorTypeNode(t,o(t.modifiers,r,Ha),o(t.typeParameters,r,_c),o(t.parameters,r,ha),L.checkDefined(s(t.type,r,bi)))},[183]:function(t,r,i,o,s,l){return i.factory.updateTypeQueryNode(t,L.checkDefined(s(t.exprName,r,Cd)),o(t.typeArguments,r,bi))},[184]:function(t,r,i,o,s,l){return i.factory.updateTypeLiteralNode(t,o(t.members,r,pT))},[185]:function(t,r,i,o,s,l){return i.factory.updateArrayTypeNode(t,L.checkDefined(s(t.elementType,r,bi)))},[186]:function(t,r,i,o,s,l){return i.factory.updateTupleTypeNode(t,o(t.elements,r,bi))},[187]:function(t,r,i,o,s,l){return i.factory.updateOptionalTypeNode(t,L.checkDefined(s(t.type,r,bi)))},[188]:function(t,r,i,o,s,l){return i.factory.updateRestTypeNode(t,L.checkDefined(s(t.type,r,bi)))},[189]:function(t,r,i,o,s,l){return i.factory.updateUnionTypeNode(t,o(t.types,r,bi))},[190]:function(t,r,i,o,s,l){return i.factory.updateIntersectionTypeNode(t,o(t.types,r,bi))},[191]:function(t,r,i,o,s,l){return i.factory.updateConditionalTypeNode(t,L.checkDefined(s(t.checkType,r,bi)),L.checkDefined(s(t.extendsType,r,bi)),L.checkDefined(s(t.trueType,r,bi)),L.checkDefined(s(t.falseType,r,bi)))},[192]:function(t,r,i,o,s,l){return i.factory.updateInferTypeNode(t,L.checkDefined(s(t.typeParameter,r,_c)))},[202]:function(t,r,i,o,s,l){return i.factory.updateImportTypeNode(t,L.checkDefined(s(t.argument,r,bi)),s(t.assertions,r,Vue),s(t.qualifier,r,Cd),o(t.typeArguments,r,bi),t.isTypeOf)},[298]:function(t,r,i,o,s,l){return i.factory.updateImportTypeAssertionContainer(t,L.checkDefined(s(t.assertClause,r,p3)),t.multiLine)},[199]:function(t,r,i,o,s,l){return i.factory.updateNamedTupleMember(t,l?s(t.dotDotDotToken,l,o3):t.dotDotDotToken,L.checkDefined(s(t.name,r,Re)),l?s(t.questionToken,l,ev):t.questionToken,L.checkDefined(s(t.type,r,bi)))},[193]:function(t,r,i,o,s,l){return i.factory.updateParenthesizedType(t,L.checkDefined(s(t.type,r,bi)))},[195]:function(t,r,i,o,s,l){return i.factory.updateTypeOperatorNode(t,L.checkDefined(s(t.type,r,bi)))},[196]:function(t,r,i,o,s,l){return i.factory.updateIndexedAccessTypeNode(t,L.checkDefined(s(t.objectType,r,bi)),L.checkDefined(s(t.indexType,r,bi)))},[197]:function(t,r,i,o,s,l){return i.factory.updateMappedTypeNode(t,l?s(t.readonlyToken,l,dde):t.readonlyToken,L.checkDefined(s(t.typeParameter,r,_c)),s(t.nameType,r,bi),l?s(t.questionToken,l,fde):t.questionToken,s(t.type,r,bi),o(t.members,r,pT))},[198]:function(t,r,i,o,s,l){return i.factory.updateLiteralTypeNode(t,L.checkDefined(s(t.literal,r,hse)))},[200]:function(t,r,i,o,s,l){return i.factory.updateTemplateLiteralType(t,L.checkDefined(s(t.head,r,_2)),o(t.templateSpans,r,Mue))},[201]:function(t,r,i,o,s,l){return i.factory.updateTemplateLiteralTypeSpan(t,L.checkDefined(s(t.type,r,bi)),L.checkDefined(s(t.literal,r,o6)))},[203]:function(t,r,i,o,s,l){return i.factory.updateObjectBindingPattern(t,o(t.elements,r,Wo))},[204]:function(t,r,i,o,s,l){return i.factory.updateArrayBindingPattern(t,o(t.elements,r,c6))},[205]:function(t,r,i,o,s,l){return i.factory.updateBindingElement(t,l?s(t.dotDotDotToken,l,o3):t.dotDotDotToken,s(t.propertyName,r,Ys),L.checkDefined(s(t.name,r,Mm)),s(t.initializer,r,ot))},[206]:function(t,r,i,o,s,l){return i.factory.updateArrayLiteralExpression(t,o(t.elements,r,ot))},[207]:function(t,r,i,o,s,l){return i.factory.updateObjectLiteralExpression(t,o(t.properties,r,Og))},[208]:function(t,r,i,o,s,l){return n6(t)?i.factory.updatePropertyAccessChain(t,L.checkDefined(s(t.expression,r,ot)),l?s(t.questionDotToken,l,s3):t.questionDotToken,L.checkDefined(s(t.name,r,Ah))):i.factory.updatePropertyAccessExpression(t,L.checkDefined(s(t.expression,r,ot)),L.checkDefined(s(t.name,r,Ah)))},[209]:function(t,r,i,o,s,l){return Dj(t)?i.factory.updateElementAccessChain(t,L.checkDefined(s(t.expression,r,ot)),l?s(t.questionDotToken,l,s3):t.questionDotToken,L.checkDefined(s(t.argumentExpression,r,ot))):i.factory.updateElementAccessExpression(t,L.checkDefined(s(t.expression,r,ot)),L.checkDefined(s(t.argumentExpression,r,ot)))},[210]:function(t,r,i,o,s,l){return fT(t)?i.factory.updateCallChain(t,L.checkDefined(s(t.expression,r,ot)),l?s(t.questionDotToken,l,s3):t.questionDotToken,o(t.typeArguments,r,bi),o(t.arguments,r,ot)):i.factory.updateCallExpression(t,L.checkDefined(s(t.expression,r,ot)),o(t.typeArguments,r,bi),o(t.arguments,r,ot))},[211]:function(t,r,i,o,s,l){return i.factory.updateNewExpression(t,L.checkDefined(s(t.expression,r,ot)),o(t.typeArguments,r,bi),o(t.arguments,r,ot))},[212]:function(t,r,i,o,s,l){return i.factory.updateTaggedTemplateExpression(t,L.checkDefined(s(t.tag,r,ot)),o(t.typeArguments,r,bi),L.checkDefined(s(t.template,r,CA)))},[213]:function(t,r,i,o,s,l){return i.factory.updateTypeAssertion(t,L.checkDefined(s(t.type,r,bi)),L.checkDefined(s(t.expression,r,ot)))},[214]:function(t,r,i,o,s,l){return i.factory.updateParenthesizedExpression(t,L.checkDefined(s(t.expression,r,ot)))},[215]:function(t,r,i,o,s,l){return i.factory.updateFunctionExpression(t,o(t.modifiers,r,Ha),l?s(t.asteriskToken,l,lO):t.asteriskToken,s(t.name,r,Re),o(t.typeParameters,r,_c),Sc(t.parameters,r,i,o),s(t.type,r,bi),Qd(t.body,r,i,s))},[216]:function(t,r,i,o,s,l){return i.factory.updateArrowFunction(t,o(t.modifiers,r,Ha),o(t.typeParameters,r,_c),Sc(t.parameters,r,i,o),s(t.type,r,bi),l?L.checkDefined(s(t.equalsGreaterThanToken,l,Lue)):t.equalsGreaterThanToken,Qd(t.body,r,i,s))},[217]:function(t,r,i,o,s,l){return i.factory.updateDeleteExpression(t,L.checkDefined(s(t.expression,r,ot)))},[218]:function(t,r,i,o,s,l){return i.factory.updateTypeOfExpression(t,L.checkDefined(s(t.expression,r,ot)))},[219]:function(t,r,i,o,s,l){return i.factory.updateVoidExpression(t,L.checkDefined(s(t.expression,r,ot)))},[220]:function(t,r,i,o,s,l){return i.factory.updateAwaitExpression(t,L.checkDefined(s(t.expression,r,ot)))},[221]:function(t,r,i,o,s,l){return i.factory.updatePrefixUnaryExpression(t,L.checkDefined(s(t.operand,r,ot)))},[222]:function(t,r,i,o,s,l){return i.factory.updatePostfixUnaryExpression(t,L.checkDefined(s(t.operand,r,ot)))},[223]:function(t,r,i,o,s,l){return i.factory.updateBinaryExpression(t,L.checkDefined(s(t.left,r,ot)),l?L.checkDefined(s(t.operatorToken,l,pde)):t.operatorToken,L.checkDefined(s(t.right,r,ot)))},[224]:function(t,r,i,o,s,l){return i.factory.updateConditionalExpression(t,L.checkDefined(s(t.condition,r,ot)),l?L.checkDefined(s(t.questionToken,l,ev)):t.questionToken,L.checkDefined(s(t.whenTrue,r,ot)),l?L.checkDefined(s(t.colonToken,l,Iue)):t.colonToken,L.checkDefined(s(t.whenFalse,r,ot)))},[225]:function(t,r,i,o,s,l){return i.factory.updateTemplateExpression(t,L.checkDefined(s(t.head,r,_2)),o(t.templateSpans,r,AL))},[226]:function(t,r,i,o,s,l){return i.factory.updateYieldExpression(t,l?s(t.asteriskToken,l,lO):t.asteriskToken,s(t.expression,r,ot))},[227]:function(t,r,i,o,s,l){return i.factory.updateSpreadElement(t,L.checkDefined(s(t.expression,r,ot)))},[228]:function(t,r,i,o,s,l){return i.factory.updateClassExpression(t,o(t.modifiers,r,Ns),s(t.name,r,Re),o(t.typeParameters,r,_c),o(t.heritageClauses,r,dd),o(t.members,r,_l))},[230]:function(t,r,i,o,s,l){return i.factory.updateExpressionWithTypeArguments(t,L.checkDefined(s(t.expression,r,ot)),o(t.typeArguments,r,bi))},[231]:function(t,r,i,o,s,l){return i.factory.updateAsExpression(t,L.checkDefined(s(t.expression,r,ot)),L.checkDefined(s(t.type,r,bi)))},[235]:function(t,r,i,o,s,l){return i.factory.updateSatisfiesExpression(t,L.checkDefined(s(t.expression,r,ot)),L.checkDefined(s(t.type,r,bi)))},[232]:function(t,r,i,o,s,l){return Jl(t)?i.factory.updateNonNullChain(t,L.checkDefined(s(t.expression,r,ot))):i.factory.updateNonNullExpression(t,L.checkDefined(s(t.expression,r,ot)))},[233]:function(t,r,i,o,s,l){return i.factory.updateMetaProperty(t,L.checkDefined(s(t.name,r,Re)))},[236]:function(t,r,i,o,s,l){return i.factory.updateTemplateSpan(t,L.checkDefined(s(t.expression,r,ot)),L.checkDefined(s(t.literal,r,o6)))},[238]:function(t,r,i,o,s,l){return i.factory.updateBlock(t,o(t.statements,r,ca))},[240]:function(t,r,i,o,s,l){return i.factory.updateVariableStatement(t,o(t.modifiers,r,Ns),L.checkDefined(s(t.declarationList,r,pu)))},[241]:function(t,r,i,o,s,l){return i.factory.updateExpressionStatement(t,L.checkDefined(s(t.expression,r,ot)))},[242]:function(t,r,i,o,s,l){return i.factory.updateIfStatement(t,L.checkDefined(s(t.expression,r,ot)),L.checkDefined(s(t.thenStatement,r,ca,i.factory.liftToBlock)),s(t.elseStatement,r,ca,i.factory.liftToBlock))},[243]:function(t,r,i,o,s,l){return i.factory.updateDoStatement(t,Vf(t.statement,r,i,s),L.checkDefined(s(t.expression,r,ot)))},[244]:function(t,r,i,o,s,l){return i.factory.updateWhileStatement(t,L.checkDefined(s(t.expression,r,ot)),Vf(t.statement,r,i,s))},[245]:function(t,r,i,o,s,l){return i.factory.updateForStatement(t,s(t.initializer,r,pp),s(t.condition,r,ot),s(t.incrementor,r,ot),Vf(t.statement,r,i,s))},[246]:function(t,r,i,o,s,l){return i.factory.updateForInStatement(t,L.checkDefined(s(t.initializer,r,pp)),L.checkDefined(s(t.expression,r,ot)),Vf(t.statement,r,i,s))},[247]:function(t,r,i,o,s,l){return i.factory.updateForOfStatement(t,l?s(t.awaitModifier,l,Dz):t.awaitModifier,L.checkDefined(s(t.initializer,r,pp)),L.checkDefined(s(t.expression,r,ot)),Vf(t.statement,r,i,s))},[248]:function(t,r,i,o,s,l){return i.factory.updateContinueStatement(t,s(t.label,r,Re))},[249]:function(t,r,i,o,s,l){return i.factory.updateBreakStatement(t,s(t.label,r,Re))},[250]:function(t,r,i,o,s,l){return i.factory.updateReturnStatement(t,s(t.expression,r,ot))},[251]:function(t,r,i,o,s,l){return i.factory.updateWithStatement(t,L.checkDefined(s(t.expression,r,ot)),L.checkDefined(s(t.statement,r,ca,i.factory.liftToBlock)))},[252]:function(t,r,i,o,s,l){return i.factory.updateSwitchStatement(t,L.checkDefined(s(t.expression,r,ot)),L.checkDefined(s(t.caseBlock,r,gO)))},[253]:function(t,r,i,o,s,l){return i.factory.updateLabeledStatement(t,L.checkDefined(s(t.label,r,Re)),L.checkDefined(s(t.statement,r,ca,i.factory.liftToBlock)))},[254]:function(t,r,i,o,s,l){return i.factory.updateThrowStatement(t,L.checkDefined(s(t.expression,r,ot)))},[255]:function(t,r,i,o,s,l){return i.factory.updateTryStatement(t,L.checkDefined(s(t.tryBlock,r,Va)),s(t.catchClause,r,T2),s(t.finallyBlock,r,Va))},[257]:function(t,r,i,o,s,l){return i.factory.updateVariableDeclaration(t,L.checkDefined(s(t.name,r,Mm)),l?s(t.exclamationToken,l,uO):t.exclamationToken,s(t.type,r,bi),s(t.initializer,r,ot))},[258]:function(t,r,i,o,s,l){return i.factory.updateVariableDeclarationList(t,o(t.declarations,r,wi))},[259]:function(t,r,i,o,s,l){return i.factory.updateFunctionDeclaration(t,o(t.modifiers,r,Ha),l?s(t.asteriskToken,l,lO):t.asteriskToken,s(t.name,r,Re),o(t.typeParameters,r,_c),Sc(t.parameters,r,i,o),s(t.type,r,bi),Qd(t.body,r,i,s))},[260]:function(t,r,i,o,s,l){return i.factory.updateClassDeclaration(t,o(t.modifiers,r,Ns),s(t.name,r,Re),o(t.typeParameters,r,_c),o(t.heritageClauses,r,dd),o(t.members,r,_l))},[261]:function(t,r,i,o,s,l){return i.factory.updateInterfaceDeclaration(t,o(t.modifiers,r,Ns),L.checkDefined(s(t.name,r,Re)),o(t.typeParameters,r,_c),o(t.heritageClauses,r,dd),o(t.members,r,pT))},[262]:function(t,r,i,o,s,l){return i.factory.updateTypeAliasDeclaration(t,o(t.modifiers,r,Ns),L.checkDefined(s(t.name,r,Re)),o(t.typeParameters,r,_c),L.checkDefined(s(t.type,r,bi)))},[263]:function(t,r,i,o,s,l){return i.factory.updateEnumDeclaration(t,o(t.modifiers,r,Ns),L.checkDefined(s(t.name,r,Re)),o(t.members,r,q0))},[264]:function(t,r,i,o,s,l){return i.factory.updateModuleDeclaration(t,o(t.modifiers,r,Ns),L.checkDefined(s(t.name,r,_de)),s(t.body,r,vse))},[265]:function(t,r,i,o,s,l){return i.factory.updateModuleBlock(t,o(t.statements,r,ca))},[266]:function(t,r,i,o,s,l){return i.factory.updateCaseBlock(t,o(t.clauses,r,Kj))},[267]:function(t,r,i,o,s,l){return i.factory.updateNamespaceExportDeclaration(t,L.checkDefined(s(t.name,r,Re)))},[268]:function(t,r,i,o,s,l){return i.factory.updateImportEqualsDeclaration(t,o(t.modifiers,r,Ns),t.isTypeOnly,L.checkDefined(s(t.name,r,Re)),L.checkDefined(s(t.moduleReference,r,Tse)))},[269]:function(t,r,i,o,s,l){return i.factory.updateImportDeclaration(t,o(t.modifiers,r,Ns),s(t.importClause,r,lm),L.checkDefined(s(t.moduleSpecifier,r,ot)),s(t.assertClause,r,p3))},[296]:function(t,r,i,o,s,l){return i.factory.updateAssertClause(t,o(t.elements,r,jue),t.multiLine)},[297]:function(t,r,i,o,s,l){return i.factory.updateAssertEntry(t,L.checkDefined(s(t.name,r,ase)),L.checkDefined(s(t.value,r,ot)))},[270]:function(t,r,i,o,s,l){return i.factory.updateImportClause(t,t.isTypeOnly,s(t.name,r,Re),s(t.namedBindings,r,Wj))},[271]:function(t,r,i,o,s,l){return i.factory.updateNamespaceImport(t,L.checkDefined(s(t.name,r,Re)))},[277]:function(t,r,i,o,s,l){return i.factory.updateNamespaceExport(t,L.checkDefined(s(t.name,r,Re)))},[272]:function(t,r,i,o,s,l){return i.factory.updateNamedImports(t,o(t.elements,r,$u))},[273]:function(t,r,i,o,s,l){return i.factory.updateImportSpecifier(t,t.isTypeOnly,s(t.propertyName,r,Re),L.checkDefined(s(t.name,r,Re)))},[274]:function(t,r,i,o,s,l){return i.factory.updateExportAssignment(t,o(t.modifiers,r,Ns),L.checkDefined(s(t.expression,r,ot)))},[275]:function(t,r,i,o,s,l){return i.factory.updateExportDeclaration(t,o(t.modifiers,r,Ns),t.isTypeOnly,s(t.exportClause,r,Rj),s(t.moduleSpecifier,r,ot),s(t.assertClause,r,p3))},[276]:function(t,r,i,o,s,l){return i.factory.updateNamedExports(t,o(t.elements,r,Mu))},[278]:function(t,r,i,o,s,l){return i.factory.updateExportSpecifier(t,t.isTypeOnly,s(t.propertyName,r,Re),L.checkDefined(s(t.name,r,Re)))},[280]:function(t,r,i,o,s,l){return i.factory.updateExternalModuleReference(t,L.checkDefined(s(t.expression,r,ot)))},[281]:function(t,r,i,o,s,l){return i.factory.updateJsxElement(t,L.checkDefined(s(t.openingElement,r,Xm)),o(t.children,r,Mw),L.checkDefined(s(t.closingElement,r,BS)))},[282]:function(t,r,i,o,s,l){return i.factory.updateJsxSelfClosingElement(t,L.checkDefined(s(t.tagName,r,EI)),o(t.typeArguments,r,bi),L.checkDefined(s(t.attributes,r,K0)))},[283]:function(t,r,i,o,s,l){return i.factory.updateJsxOpeningElement(t,L.checkDefined(s(t.tagName,r,EI)),o(t.typeArguments,r,bi),L.checkDefined(s(t.attributes,r,K0)))},[284]:function(t,r,i,o,s,l){return i.factory.updateJsxClosingElement(t,L.checkDefined(s(t.tagName,r,EI)))},[285]:function(t,r,i,o,s,l){return i.factory.updateJsxFragment(t,L.checkDefined(s(t.openingFragment,r,VS)),o(t.children,r,Mw),L.checkDefined(s(t.closingFragment,r,Hue)))},[288]:function(t,r,i,o,s,l){return i.factory.updateJsxAttribute(t,L.checkDefined(s(t.name,r,Re)),s(t.initializer,r,Sse))},[289]:function(t,r,i,o,s,l){return i.factory.updateJsxAttributes(t,o(t.properties,r,d6))},[290]:function(t,r,i,o,s,l){return i.factory.updateJsxSpreadAttribute(t,L.checkDefined(s(t.expression,r,ot)))},[291]:function(t,r,i,o,s,l){return i.factory.updateJsxExpression(t,s(t.expression,r,ot))},[292]:function(t,r,i,o,s,l){return i.factory.updateCaseClause(t,L.checkDefined(s(t.expression,r,ot)),o(t.statements,r,ca))},[293]:function(t,r,i,o,s,l){return i.factory.updateDefaultClause(t,o(t.statements,r,ca))},[294]:function(t,r,i,o,s,l){return i.factory.updateHeritageClause(t,o(t.types,r,Vg))},[295]:function(t,r,i,o,s,l){return i.factory.updateCatchClause(t,s(t.variableDeclaration,r,wi),L.checkDefined(s(t.block,r,Va)))},[299]:function(t,r,i,o,s,l){return i.factory.updatePropertyAssignment(t,L.checkDefined(s(t.name,r,Ys)),L.checkDefined(s(t.initializer,r,ot)))},[300]:function(t,r,i,o,s,l){return i.factory.updateShorthandPropertyAssignment(t,L.checkDefined(s(t.name,r,Re)),s(t.objectAssignmentInitializer,r,ot))},[301]:function(t,r,i,o,s,l){return i.factory.updateSpreadAssignment(t,L.checkDefined(s(t.expression,r,ot)))},[302]:function(t,r,i,o,s,l){return i.factory.updateEnumMember(t,L.checkDefined(s(t.name,r,Ys)),s(t.initializer,r,ot))},[308]:function(t,r,i,o,s,l){return i.factory.updateSourceFile(t,mF(t.statements,r,i))},[356]:function(t,r,i,o,s,l){return i.factory.updatePartiallyEmittedExpression(t,L.checkDefined(s(t.expression,r,ot)))},[357]:function(t,r,i,o,s,l){return i.factory.updateCommaListExpression(t,o(t.elements,r,ot))}}}});function M_e(e,t,r,i,o){var{enter:s,exit:l}=o.extendedDiagnostics?x8(\"Source Map\",\"beforeSourcemap\",\"afterSourcemap\"):A8,f=[],d=[],g=new Map,m,v=[],S,x=[],A=\"\",w=0,C=0,P=0,F=0,B=0,q=0,W=!1,Y=0,R=0,ie=0,Q=0,fe=0,Z=0,U=!1,re=!1,le=!1;return{getSources:()=>f,addSource:_e,setSourceContent:ge,addName:X,addMapping:ke,appendSourceMap:Pe,toJSON:Le,toString:()=>JSON.stringify(Le())};function _e(_t){s();let ct=Z1(i,_t,e.getCurrentDirectory(),e.getCanonicalFileName,!0),Rt=g.get(ct);return Rt===void 0&&(Rt=d.length,d.push(ct),f.push(_t),g.set(ct,Rt)),l(),Rt}function ge(_t,ct){if(s(),ct!==null){for(m||(m=[]);m.length<_t;)m.push(null);m[_t]=ct}l()}function X(_t){s(),S||(S=new Map);let ct=S.get(_t);return ct===void 0&&(ct=v.length,v.push(_t),S.set(_t,ct)),l(),ct}function Ve(_t,ct){return!U||Y!==_t||R!==ct}function we(_t,ct,Rt){return _t!==void 0&&ct!==void 0&&Rt!==void 0&&ie===_t&&(Q>ct||Q===ct&&fe>Rt)}function ke(_t,ct,Rt,We,qe,zt){L.assert(_t>=Y,\"generatedLine cannot backtrack\"),L.assert(ct>=0,\"generatedCharacter cannot be negative\"),L.assert(Rt===void 0||Rt>=0,\"sourceIndex cannot be negative\"),L.assert(We===void 0||We>=0,\"sourceLine cannot be negative\"),L.assert(qe===void 0||qe>=0,\"sourceCharacter cannot be negative\"),s(),(Ve(_t,ct)||we(Rt,We,qe))&&(Be(),Y=_t,R=ct,re=!1,le=!1,U=!0),Rt!==void 0&&We!==void 0&&qe!==void 0&&(ie=Rt,Q=We,fe=qe,re=!0,zt!==void 0&&(Z=zt,le=!0)),l()}function Pe(_t,ct,Rt,We,qe,zt){L.assert(_t>=Y,\"generatedLine cannot backtrack\"),L.assert(ct>=0,\"generatedCharacter cannot be negative\"),s();let Qt=[],tn,kn=EK(Rt.mappings);for(let _n of kn){if(zt&&(_n.generatedLine>zt.line||_n.generatedLine===zt.line&&_n.generatedCharacter>zt.character))break;if(qe&&(_n.generatedLine<qe.line||qe.line===_n.generatedLine&&_n.generatedCharacter<qe.character))continue;let Gt,$n,ui,Ni;if(_n.sourceIndex!==void 0){if(Gt=Qt[_n.sourceIndex],Gt===void 0){let Dt=Rt.sources[_n.sourceIndex],pn=Rt.sourceRoot?vi(Rt.sourceRoot,Dt):Dt,An=vi(ni(We),pn);Qt[_n.sourceIndex]=Gt=_e(An),Rt.sourcesContent&&typeof Rt.sourcesContent[_n.sourceIndex]==\"string\"&&ge(Gt,Rt.sourcesContent[_n.sourceIndex])}$n=_n.sourceLine,ui=_n.sourceCharacter,Rt.names&&_n.nameIndex!==void 0&&(tn||(tn=[]),Ni=tn[_n.nameIndex],Ni===void 0&&(tn[_n.nameIndex]=Ni=X(Rt.names[_n.nameIndex])))}let Pi=_n.generatedLine-(qe?qe.line:0),gr=Pi+_t,pt=qe&&qe.line===_n.generatedLine?_n.generatedCharacter-qe.character:_n.generatedCharacter,nn=Pi===0?pt+ct:pt;ke(gr,nn,Gt,$n,ui,Ni)}l()}function Ce(){return!W||w!==Y||C!==R||P!==ie||F!==Q||B!==fe||q!==Z}function Ie(_t){x.push(_t),x.length>=1024&&Ne()}function Be(){if(!(!U||!Ce())){if(s(),w<Y){do Ie(59),w++;while(w<Y);C=0}else L.assertEqual(w,Y,\"generatedLine cannot backtrack\"),W&&Ie(44);Ye(R-C),C=R,re&&(Ye(ie-P),P=ie,Ye(Q-F),F=Q,Ye(fe-B),B=fe,le&&(Ye(Z-q),q=Z)),W=!0,l()}}function Ne(){x.length>0&&(A+=String.fromCharCode.apply(void 0,x),x.length=0)}function Le(){return Be(),Ne(),{version:3,file:t,sourceRoot:r,sources:d,names:v,mappings:A,sourcesContent:m}}function Ye(_t){_t<0?_t=(-_t<<1)+1:_t=_t<<1;do{let ct=_t&31;_t=_t>>5,_t>0&&(ct=ct|32),Ie(CPe(ct))}while(_t>0)}}function F_e(e,t){return{getLineCount:()=>t.length,getLineText:r=>e.substring(t[r],t[r+1])}}function G_e(e){for(let t=e.getLineCount()-1;t>=0;t--){let r=e.getLineText(t),i=hF.exec(r);if(i)return QD(i[1]);if(!r.match(gF))break}}function xPe(e){return typeof e==\"string\"||e===null}function B_e(e){return e!==null&&typeof e==\"object\"&&e.version===3&&typeof e.file==\"string\"&&typeof e.mappings==\"string\"&&ba(e.sources)&&Ji(e.sources,Ta)&&(e.sourceRoot===void 0||e.sourceRoot===null||typeof e.sourceRoot==\"string\")&&(e.sourcesContent===void 0||e.sourcesContent===null||ba(e.sourcesContent)&&Ji(e.sourcesContent,xPe))&&(e.names===void 0||e.names===null||ba(e.names)&&Ji(e.names,Ta))}function bK(e){try{let t=JSON.parse(e);if(B_e(t))return t}catch{}}function EK(e){let t=!1,r=0,i=0,o=0,s=0,l=0,f=0,d=0,g;return{get pos(){return r},get error(){return g},get state(){return m(!0,!0)},next(){for(;!t&&r<e.length;){let P=e.charCodeAt(r);if(P===59){i++,o=0,r++;continue}if(P===44){r++;continue}let F=!1,B=!1;if(o+=C(),A())return v();if(o<0)return x(\"Invalid generatedCharacter found\");if(!w()){if(F=!0,s+=C(),A())return v();if(s<0)return x(\"Invalid sourceIndex found\");if(w())return x(\"Unsupported Format: No entries after sourceIndex\");if(l+=C(),A())return v();if(l<0)return x(\"Invalid sourceLine found\");if(w())return x(\"Unsupported Format: No entries after sourceLine\");if(f+=C(),A())return v();if(f<0)return x(\"Invalid sourceCharacter found\");if(!w()){if(B=!0,d+=C(),A())return v();if(d<0)return x(\"Invalid nameIndex found\");if(!w())return x(\"Unsupported Error Format: Entries after nameIndex\")}}return{value:m(F,B),done:t}}return v()},[Symbol.iterator](){return this}};function m(P,F){return{generatedLine:i,generatedCharacter:o,sourceIndex:P?s:void 0,sourceLine:P?l:void 0,sourceCharacter:P?f:void 0,nameIndex:F?d:void 0}}function v(){return t=!0,{value:void 0,done:!0}}function S(P){g===void 0&&(g=P)}function x(P){return S(P),v()}function A(){return g!==void 0}function w(){return r===e.length||e.charCodeAt(r)===44||e.charCodeAt(r)===59}function C(){let P=!0,F=0,B=0;for(;P;r++){if(r>=e.length)return S(\"Error in decoding base64VLQFormatDecode, past the mapping string\"),-1;let q=IPe(e.charCodeAt(r));if(q===-1)return S(\"Invalid character in VLQ\"),-1;P=(q&32)!==0,B=B|(q&31)<<F,F+=5}return(B&1)===0?B=B>>1:(B=B>>1,B=-B),B}}function APe(e,t){return e===t||e.generatedLine===t.generatedLine&&e.generatedCharacter===t.generatedCharacter&&e.sourceIndex===t.sourceIndex&&e.sourceLine===t.sourceLine&&e.sourceCharacter===t.sourceCharacter&&e.nameIndex===t.nameIndex}function U_e(e){return e.sourceIndex!==void 0&&e.sourceLine!==void 0&&e.sourceCharacter!==void 0}function CPe(e){return e>=0&&e<26?65+e:e>=26&&e<52?97+e-26:e>=52&&e<62?48+e-52:e===62?43:e===63?47:L.fail(`${e}: not a base64 value`)}function IPe(e){return e>=65&&e<=90?e-65:e>=97&&e<=122?e-97+26:e>=48&&e<=57?e-48+52:e===43?62:e===47?63:-1}function V_e(e){return e.sourceIndex!==void 0&&e.sourcePosition!==void 0}function j_e(e,t){return e.generatedPosition===t.generatedPosition&&e.sourceIndex===t.sourceIndex&&e.sourcePosition===t.sourcePosition}function LPe(e,t){return L.assert(e.sourceIndex===t.sourceIndex),Es(e.sourcePosition,t.sourcePosition)}function kPe(e,t){return Es(e.generatedPosition,t.generatedPosition)}function DPe(e){return e.sourcePosition}function wPe(e){return e.generatedPosition}function H_e(e,t,r){let i=ni(r),o=t.sourceRoot?_a(t.sourceRoot,i):i,s=_a(t.file,i),l=e.getSourceFileLike(s),f=t.sources.map(F=>_a(F,o)),d=new Map(f.map((F,B)=>[e.getCanonicalFileName(F),B])),g,m,v;return{getSourcePosition:P,getGeneratedPosition:C};function S(F){let B=l!==void 0?yw(l,F.generatedLine,F.generatedCharacter,!0):-1,q,W;if(U_e(F)){let Y=e.getSourceFileLike(f[F.sourceIndex]);q=t.sources[F.sourceIndex],W=Y!==void 0?yw(Y,F.sourceLine,F.sourceCharacter,!0):-1}return{generatedPosition:B,source:q,sourceIndex:F.sourceIndex,sourcePosition:W,nameIndex:F.nameIndex}}function x(){if(g===void 0){let F=EK(t.mappings),B=lo(F,S);F.error!==void 0?(e.log&&e.log(`Encountered error while decoding sourcemap: ${F.error}`),g=Je):g=B}return g}function A(F){if(v===void 0){let B=[];for(let q of x()){if(!V_e(q))continue;let W=B[q.sourceIndex];W||(B[q.sourceIndex]=W=[]),W.push(q)}v=B.map(q=>WD(q,LPe,j_e))}return v[F]}function w(){if(m===void 0){let F=[];for(let B of x())F.push(B);m=WD(F,kPe,j_e)}return m}function C(F){let B=d.get(e.getCanonicalFileName(F.fileName));if(B===void 0)return F;let q=A(B);if(!vt(q))return F;let W=H1(q,F.pos,DPe,Es);W<0&&(W=~W);let Y=q[W];return Y===void 0||Y.sourceIndex!==B?F:{fileName:s,pos:Y.generatedPosition}}function P(F){let B=w();if(!vt(B))return F;let q=H1(B,F.pos,wPe,Es);q<0&&(q=~q);let W=B[q];return W===void 0||!V_e(W)?F:{fileName:f[W.sourceIndex],pos:W.sourcePosition}}}var TK,hF,gF,yF,RPe=gt({\"src/compiler/sourcemap.ts\"(){\"use strict\";fa(),E0(),TK=/\\/\\/[@#] source[M]appingURL=(.+)\\r?\\n?$/,hF=/^\\/\\/[@#] source[M]appingURL=(.+)\\r?\\n?$/,gF=/^\\s*(\\/\\/[@#] .*)?$/,yF={getSourcePosition:Ks,getGeneratedPosition:Ks}}});function sc(e){return e=ec(e),e?zo(e):0}function OPe(e){return!e||!jg(e)?!1:vt(e.elements,W_e)}function W_e(e){return e.propertyName!==void 0&&e.propertyName.escapedText===\"default\"}function g_(e,t){return r;function r(o){return o.kind===308?t(o):i(o)}function i(o){return e.factory.createBundle(on(o.sourceFiles,t),o.prepends)}}function z_e(e){return!!jA(e)}function vF(e){if(jA(e))return!0;let t=e.importClause&&e.importClause.namedBindings;if(!t||!jg(t))return!1;let r=0;for(let i of t.elements)W_e(i)&&r++;return r>0&&r!==t.elements.length||!!(t.elements.length-r)&&uS(e)}function SK(e){return!vF(e)&&(uS(e)||!!e.importClause&&jg(e.importClause.namedBindings)&&OPe(e.importClause.namedBindings))}function xK(e,t,r,i){let o=[],s=Of(),l=[],f=new Map,d,g=!1,m,v=!1,S=!1,x=!1;for(let C of t.statements)switch(C.kind){case 269:o.push(C),!S&&vF(C)&&(S=!0),!x&&SK(C)&&(x=!0);break;case 268:C.moduleReference.kind===280&&o.push(C);break;case 275:if(C.moduleSpecifier)if(!C.exportClause)o.push(C),v=!0;else if(o.push(C),m_(C.exportClause))w(C);else{let P=C.exportClause.name;f.get(vr(P))||(WL(l,sc(C),P),f.set(vr(P),!0),d=Sn(d,P)),S=!0}else w(C);break;case 274:C.isExportEquals&&!m&&(m=C);break;case 240:if(Mr(C,1))for(let P of C.declarationList.declarations)d=J_e(P,f,d);break;case 259:if(Mr(C,1))if(Mr(C,1024))g||(WL(l,sc(C),e.factory.getDeclarationName(C)),g=!0);else{let P=C.name;f.get(vr(P))||(WL(l,sc(C),P),f.set(vr(P),!0),d=Sn(d,P))}break;case 260:if(Mr(C,1))if(Mr(C,1024))g||(WL(l,sc(C),e.factory.getDeclarationName(C)),g=!0);else{let P=C.name;P&&!f.get(vr(P))&&(WL(l,sc(C),P),f.set(vr(P),!0),d=Sn(d,P))}break}let A=nJ(e.factory,e.getEmitHelperFactory(),t,i,v,S,x);return A&&o.unshift(A),{externalImports:o,exportSpecifiers:s,exportEquals:m,hasExportStarsToExportValues:v,exportedBindings:l,exportedNames:d,externalHelpersImportDeclaration:A};function w(C){for(let P of Ga(C.exportClause,m_).elements)if(!f.get(vr(P.name))){let F=P.propertyName||P.name;C.moduleSpecifier||s.add(vr(F),P);let B=r.getReferencedImportDeclaration(F)||r.getReferencedValueDeclaration(F);B&&WL(l,sc(B),P.name),f.set(vr(P.name),!0),d=Sn(d,P.name)}}}function J_e(e,t,r){if(La(e.name))for(let i of e.name.elements)ol(i)||(r=J_e(i,t,r));else if(!tc(e.name)){let i=vr(e.name);t.get(i)||(t.set(i,!0),r=Sn(r,e.name))}return r}function WL(e,t,r){let i=e[t];return i?i.push(r):e[t]=i=[r],i}function Z0(e){return es(e)||e.kind===8||Xu(e.kind)||Re(e)}function Ap(e){return!Re(e)&&Z0(e)}function sN(e){return e>=64&&e<=78}function zL(e){switch(e){case 64:return 39;case 65:return 40;case 66:return 41;case 67:return 42;case 68:return 43;case 69:return 44;case 70:return 47;case 71:return 48;case 72:return 49;case 73:return 50;case 74:return 51;case 78:return 52;case 75:return 56;case 76:return 55;case 77:return 60}}function AK(e){if(!Ol(e))return;let t=vs(e.expression);return NA(t)?t:void 0}function bF(e,t){for(let r=t;r<e.length;r+=1){let i=e[r];if(AK(i))return r}return-1}function CK(e,t,r){return Pr(e.members,i=>PPe(i,t,r))}function NPe(e){return MPe(e)||oc(e)}function EF(e){return Pr(e.members,NPe)}function PPe(e,t,r){return Na(e)&&(!!e.initializer||!t)&&zc(e)===r}function MPe(e){return Na(e)&&zc(e)}function cN(e){return e.kind===169&&e.initializer!==void 0}function K_e(e){return!Ca(e)&&(AA(e)||Id(e))&&pi(e.name)}function IK(e){let t;if(e){let r=e.parameters,i=r.length>0&&G0(r[0]),o=i?1:0,s=i?r.length-1:r.length;for(let l=0;l<s;l++){let f=r[l+o];(t||vf(f))&&(t||(t=new Array(s)),t[l]=Uy(f))}}return t}function LK(e){let t=Uy(e),r=IK(Vm(e));if(!(!vt(t)&&!vt(r)))return{decorators:t,parameters:r}}function TF(e,t,r){switch(e.kind){case 174:case 175:return r?FPe(e,t):q_e(e);case 171:return q_e(e);case 169:return GPe(e);default:return}}function FPe(e,t){if(!e.body)return;let{firstAccessor:r,secondAccessor:i,getAccessor:o,setAccessor:s}=DT(t.members,e),l=vf(r)?r:i&&vf(i)?i:void 0;if(!l||e!==l)return;let f=Uy(l),d=IK(s);if(!(!vt(f)&&!vt(d)))return{decorators:f,parameters:d,getDecorators:o&&Uy(o),setDecorators:s&&Uy(s)}}function q_e(e){if(!e.body)return;let t=Uy(e),r=IK(e);if(!(!vt(t)&&!vt(r)))return{decorators:t,parameters:r}}function GPe(e){let t=Uy(e);if(!!vt(t))return{decorators:t}}function X_e(e,t){for(;e;){let r=t(e);if(r!==void 0)return r;e=e.previous}}function Y_e(e){return{data:e}}function kK(e,t){var r,i;return nS(t)?(r=e?.generatedIdentifiers)==null?void 0:r.get(I3(t)):(i=e?.identifiers)==null?void 0:i.get(t.escapedText)}function KT(e,t,r){var i,o;nS(t)?((i=e.generatedIdentifiers)!=null||(e.generatedIdentifiers=new Map),e.generatedIdentifiers.set(I3(t),r)):((o=e.identifiers)!=null||(e.identifiers=new Map),e.identifiers.set(t.escapedText,r))}function $_e(e,t){return X_e(e,r=>kK(r.privateEnv,t))}var BPe=gt({\"src/compiler/transformers/utilities.ts\"(){\"use strict\";fa()}});function qT(e,t,r,i,o,s){let l=e,f;if(Fg(e))for(f=e.right;Zce(e.left)||dW(e.left);)if(Fg(f))l=e=f,f=e.right;else return L.checkDefined($e(f,t,ot));let d,g={context:r,level:i,downlevelIteration:!!r.getCompilerOptions().downlevelIteration,hoistTempVariables:!0,emitExpression:m,emitBindingOrAssignment:v,createArrayBindingOrAssignmentPattern:S=>KPe(r.factory,S),createObjectBindingOrAssignmentPattern:S=>XPe(r.factory,S),createArrayBindingOrAssignmentElement:$Pe,visitor:t};if(f&&(f=$e(f,t,ot),L.assert(f),Re(f)&&DK(e,f.escapedText)||wK(e)?f=XT(g,f,!1,l):o?f=XT(g,f,!0,l):ws(e)&&(l=f)),F2(g,e,f,l,Fg(e)),f&&o){if(!vt(d))return f;d.push(f)}return r.factory.inlineExpressions(d)||r.factory.createOmittedExpression();function m(S){d=Sn(d,S)}function v(S,x,A,w){L.assertNode(S,s?Re:ot);let C=s?s(S,x,A):it(r.factory.createAssignment(L.checkDefined($e(S,t,ot)),x),A);C.original=w,m(C)}}function DK(e,t){let r=iv(e);return Dw(r)?UPe(r,t):Re(r)?r.escapedText===t:!1}function UPe(e,t){let r=L2(e);for(let i of r)if(DK(i,t))return!0;return!1}function wK(e){let t=A3(e);if(t&&ts(t)&&!_T(t.expression))return!0;let r=iv(e);return!!r&&Dw(r)&&VPe(r)}function VPe(e){return!!mn(L2(e),wK)}function eE(e,t,r,i,o,s=!1,l){let f,d=[],g=[],m={context:r,level:i,downlevelIteration:!!r.getCompilerOptions().downlevelIteration,hoistTempVariables:s,emitExpression:v,emitBindingOrAssignment:S,createArrayBindingOrAssignmentPattern:x=>JPe(r.factory,x),createObjectBindingOrAssignmentPattern:x=>qPe(r.factory,x),createArrayBindingOrAssignmentElement:x=>YPe(r.factory,x),visitor:t};if(wi(e)){let x=CO(e);x&&(Re(x)&&DK(e,x.escapedText)||wK(e))&&(x=XT(m,L.checkDefined($e(x,m.visitor,ot)),!1,x),e=r.factory.updateVariableDeclaration(e,e.name,void 0,void 0,x))}if(F2(m,e,o,e,l),f){let x=r.factory.createTempVariable(void 0);if(s){let A=r.factory.inlineExpressions(f);f=void 0,S(x,A,void 0,void 0)}else{r.hoistVariableDeclaration(x);let A=To(d);A.pendingExpressions=Sn(A.pendingExpressions,r.factory.createAssignment(x,A.value)),si(A.pendingExpressions,f),A.value=x}}for(let{pendingExpressions:x,name:A,value:w,location:C,original:P}of d){let F=r.factory.createVariableDeclaration(A,void 0,void 0,x?r.factory.inlineExpressions(Sn(x,w)):w);F.original=P,it(F,C),g.push(F)}return g;function v(x){f=Sn(f,x)}function S(x,A,w,C){L.assertNode(x,Mm),f&&(A=r.factory.inlineExpressions(Sn(f,A)),f=void 0),d.push({pendingExpressions:f,name:x,value:A,location:w,original:C})}}function F2(e,t,r,i,o){let s=iv(t);if(!o){let l=$e(CO(t),e.visitor,ot);l?r?(r=WPe(e,r,l,i),!Ap(l)&&Dw(s)&&(r=XT(e,r,!0,i))):r=l:r||(r=e.context.factory.createVoidZero())}Uj(s)?jPe(e,t,s,r,i):Vj(s)?HPe(e,t,s,r,i):e.emitBindingOrAssignment(s,r,i,t)}function jPe(e,t,r,i,o){let s=L2(r),l=s.length;if(l!==1){let g=!kw(t)||l!==0;i=XT(e,i,g,o)}let f,d;for(let g=0;g<l;g++){let m=s[g];if(x3(m)){if(g===l-1){f&&(e.emitBindingOrAssignment(e.createObjectBindingOrAssignmentPattern(f),i,o,r),f=void 0);let v=e.context.getEmitHelperFactory().createRestHelper(i,s,d,r);F2(e,m,v,m)}}else{let v=rJ(m);if(e.level>=1&&!(m.transformFlags&98304)&&!(iv(m).transformFlags&98304)&&!ts(v))f=Sn(f,$e(m,e.visitor,use));else{f&&(e.emitBindingOrAssignment(e.createObjectBindingOrAssignmentPattern(f),i,o,r),f=void 0);let S=zPe(e,i,v);ts(v)&&(d=Sn(d,S.argumentExpression)),F2(e,m,S,m)}}}f&&e.emitBindingOrAssignment(e.createObjectBindingOrAssignmentPattern(f),i,o,r)}function HPe(e,t,r,i,o){let s=L2(r),l=s.length;if(e.level<1&&e.downlevelIteration)i=XT(e,it(e.context.getEmitHelperFactory().createReadHelper(i,l>0&&x3(s[l-1])?void 0:l),o),!1,o);else if(l!==1&&(e.level<1||l===0)||Ji(s,ol)){let g=!kw(t)||l!==0;i=XT(e,i,g,o)}let f,d;for(let g=0;g<l;g++){let m=s[g];if(e.level>=1)if(m.transformFlags&65536||e.hasTransformedPriorElement&&!Q_e(m)){e.hasTransformedPriorElement=!0;let v=e.context.factory.createTempVariable(void 0);e.hoistTempVariables&&e.context.hoistVariableDeclaration(v),d=Sn(d,[v,m]),f=Sn(f,e.createArrayBindingOrAssignmentElement(v))}else f=Sn(f,m);else{if(ol(m))continue;if(x3(m)){if(g===l-1){let v=e.context.factory.createArraySliceCall(i,g);F2(e,m,v,m)}}else{let v=e.context.factory.createElementAccessExpression(i,g);F2(e,m,v,m)}}}if(f&&e.emitBindingOrAssignment(e.createArrayBindingOrAssignmentPattern(f),i,o,r),d)for(let[g,m]of d)F2(e,m,g,m)}function Q_e(e){let t=iv(e);if(!t||ol(t))return!0;let r=A3(e);if(r&&!s_(r))return!1;let i=CO(e);return i&&!Ap(i)?!1:Dw(t)?Ji(L2(t),Q_e):Re(t)}function WPe(e,t,r,i){return t=XT(e,t,!0,i),e.context.factory.createConditionalExpression(e.context.factory.createTypeCheck(t,\"undefined\"),void 0,r,void 0,t)}function zPe(e,t,r){if(ts(r)){let i=XT(e,L.checkDefined($e(r.expression,e.visitor,ot)),!1,r);return e.context.factory.createElementAccessExpression(t,i)}else if(gf(r)){let i=D.cloneNode(r);return e.context.factory.createElementAccessExpression(t,i)}else{let i=e.context.factory.createIdentifier(vr(r));return e.context.factory.createPropertyAccessExpression(t,i)}}function XT(e,t,r,i){if(Re(t)&&r)return t;{let o=e.context.factory.createTempVariable(void 0);return e.hoistTempVariables?(e.context.hoistVariableDeclaration(o),e.emitExpression(it(e.context.factory.createAssignment(o,t),i))):e.emitBindingOrAssignment(o,t,i,void 0),o}}function JPe(e,t){return L.assertEachNode(t,c6),e.createArrayBindingPattern(t)}function KPe(e,t){return L.assertEachNode(t,Rw),e.createArrayLiteralExpression(on(t,e.converters.convertToArrayAssignmentElement))}function qPe(e,t){return L.assertEachNode(t,Wo),e.createObjectBindingPattern(t)}function XPe(e,t){return L.assertEachNode(t,ww),e.createObjectLiteralExpression(on(t,e.converters.convertToObjectAssignmentElement))}function YPe(e,t){return e.createBindingElement(void 0,void 0,t)}function $Pe(e){return e}var RK,QPe=gt({\"src/compiler/transformers/destructuring.ts\"(){\"use strict\";fa(),RK=(e=>(e[e.All=0]=\"All\",e[e.ObjectRest=1]=\"ObjectRest\",e))(RK||{})}});function OK(e,t,r,i,o,s){let l=$e(t.tag,r,ot);L.assert(l);let f=[void 0],d=[],g=[],m=t.template;if(s===0&&!KH(m))return xn(t,r,e);if(LS(m))d.push(NK(m)),g.push(PK(m,i));else{d.push(NK(m.head)),g.push(PK(m.head,i));for(let S of m.templateSpans)d.push(NK(S.literal)),g.push(PK(S.literal,i)),f.push(L.checkDefined($e(S.expression,r,ot)))}let v=e.getEmitHelperFactory().createTemplateObjectHelper(D.createArrayLiteralExpression(d),D.createArrayLiteralExpression(g));if(Lc(i)){let S=D.createUniqueName(\"templateObject\");o(S),f[0]=D.createLogicalOr(S,D.createAssignment(S,v))}else f[0]=v;return D.createCallExpression(l,void 0,f)}function NK(e){return e.templateFlags?D.createVoidZero():D.createStringLiteral(e.text)}function PK(e,t){let r=e.rawText;if(r===void 0){L.assertIsDefined(t,\"Template literal node is missing 'rawText' and does not have a source file. Possibly bad transform.\"),r=k0(t,e);let i=e.kind===14||e.kind===17;r=r.substring(1,r.length-(i?1:2))}return r=r.replace(/\\r\\n?/g,`\n`),it(D.createStringLiteral(r),e)}var MK,ZPe=gt({\"src/compiler/transformers/taggedTemplate.ts\"(){\"use strict\";fa(),MK=(e=>(e[e.LiftRestriction=0]=\"LiftRestriction\",e[e.All=1]=\"All\",e))(MK||{})}});function Z_e(e){let{factory:t,getEmitHelperFactory:r,startLexicalEnvironment:i,resumeLexicalEnvironment:o,endLexicalEnvironment:s,hoistVariableDeclaration:l}=e,f=e.getEmitResolver(),d=e.getCompilerOptions(),g=Do(d),m=Rl(d),v=!!d.experimentalDecorators,S=d.emitDecoratorMetadata?npe(e):void 0,x=e.onEmitNode,A=e.onSubstituteNode;e.onEmitNode=bl,e.onSubstituteNode=ss,e.enableSubstitution(208),e.enableSubstitution(209);let w,C,P,F,B,q,W,Y;return R;function R(K){return K.kind===309?ie(K):Q(K)}function ie(K){return t.createBundle(K.sourceFiles.map(Q),Zi(K.prepends,Xe=>Xe.kind===311?fz(Xe,\"js\"):Xe))}function Q(K){if(K.isDeclarationFile)return K;w=K;let Xe=fe(K,Ye);return Bg(Xe,e.readEmitHelpers()),w=void 0,Xe}function fe(K,Xe){let ft=F,Yt=B,pr=q;Z(K);let yr=Xe(K);return F!==ft&&(B=Yt),F=ft,q=pr,yr}function Z(K){switch(K.kind){case 308:case 266:case 265:case 238:F=K,B=void 0;break;case 260:case 259:if(Mr(K,2))break;K.name?Te(K):L.assert(K.kind===260||Mr(K,1024));break}}function U(K){return fe(K,re)}function re(K){return K.transformFlags&1?Le(K):K}function le(K){return fe(K,_e)}function _e(K){switch(K.kind){case 269:case 268:case 274:case 275:return ge(K);default:return re(K)}}function ge(K){if(ea(K)!==K)return K.transformFlags&1?xn(K,U,e):K;switch(K.kind){case 269:return jr(K);case 268:return Qr(K);case 274:return Ja(K);case 275:return Za(K);default:L.fail(\"Unhandled ellided statement\")}}function X(K){return fe(K,Ve)}function Ve(K){if(!(K.kind===275||K.kind===269||K.kind===270||K.kind===268&&K.moduleReference.kind===280))return K.transformFlags&1||Mr(K,1)?Le(K):K}function we(K){return Xe=>fe(Xe,ft=>ke(ft,K))}function ke(K,Xe){switch(K.kind){case 173:return hi(K);case 169:return Kn(K,Xe);case 174:return dr(K,Xe);case 175:return Cr(K,Xe);case 171:return Ht(K,Xe);case 172:return xn(K,U,e);case 237:return K;case 178:return;default:return L.failBadSyntaxKind(K)}}function Pe(K){return Xe=>fe(Xe,ft=>Ce(ft,K))}function Ce(K,Xe){switch(K.kind){case 299:case 300:case 301:return U(K);case 174:return dr(K,Xe);case 175:return Cr(K,Xe);case 171:return Ht(K,Xe);default:return L.failBadSyntaxKind(K)}}function Ie(K){return du(K)?void 0:U(K)}function Be(K){return Ha(K)?void 0:U(K)}function Ne(K){if(!du(K)&&!(yS(K.kind)&117086)&&!(C&&K.kind===93))return K}function Le(K){if(ca(K)&&Mr(K,2))return t.createNotEmittedStatement(K);switch(K.kind){case 93:case 88:return C?void 0:K;case 123:case 121:case 122:case 126:case 161:case 85:case 136:case 146:case 101:case 145:case 185:case 186:case 187:case 188:case 184:case 179:case 165:case 131:case 157:case 134:case 152:case 148:case 144:case 114:case 153:case 182:case 181:case 183:case 180:case 189:case 190:case 191:case 193:case 194:case 195:case 196:case 197:case 198:case 178:return;case 262:return t.createNotEmittedStatement(K);case 267:return;case 261:return t.createNotEmittedStatement(K);case 260:return qe(K);case 228:return Qt(K);case 294:return Dt(K);case 230:return pn(K);case 207:return _t(K);case 173:case 169:case 171:case 174:case 175:case 172:return L.fail(\"Class and object literal elements must be visited with their respective visitors\");case 259:return Se(K);case 215:return at(K);case 216:return Tt(K);case 166:return ve(K);case 214:return ue(K);case 213:case 231:return G(K);case 235:return je(K);case 210:return Ge(K);case 211:return kt(K);case 212:return Kt(K);case 232:return Oe(K);case 263:return rt(K);case 240:return nt(K);case 257:return $(K);case 264:return Qe(K);case 268:return Qr(K);case 282:return ln(K);case 283:return ir(K);default:return xn(K,U,e)}}function Ye(K){let Xe=Bf(d,\"alwaysStrict\")&&!(Lc(K)&&m>=5)&&!Pf(K);return t.updateSourceFile(K,mF(K.statements,le,e,0,Xe))}function _t(K){return t.updateObjectLiteralExpression(K,On(K.properties,Pe(K),Og))}function ct(K){let Xe=0;vt(CK(K,!0,!0))&&(Xe|=1);let ft=hp(K);return ft&&ql(ft.expression).kind!==104&&(Xe|=64),O0(v,K)&&(Xe|=2),DI(v,K)&&(Xe|=4),Wi(K)?Xe|=8:kc(K)?Xe|=32:Ki(K)&&(Xe|=16),Xe}function Rt(K){return!!(K.transformFlags&8192)}function We(K){return vf(K)||vt(K.typeParameters)||vt(K.heritageClauses,Rt)||vt(K.members,Rt)}function qe(K){var Xe;let ft=ct(K),Yt=g<=1&&!!(ft&7);if(!We(K)&&!O0(v,K)&&!Wi(K))return t.updateClassDeclaration(K,On(K.modifiers,Ne,Ha),K.name,void 0,On(K.heritageClauses,U,dd),On(K.members,we(K),_l));Yt&&e.startLexicalEnvironment();let pr=Yt||ft&8||ft&2&&v||ft&1,yr=pr?On(K.modifiers,Be,Ns):On(K.modifiers,U,Ns);ft&2&&(yr=kn(yr,K));let Go=pr&&!K.name||ft&4||ft&1?(Xe=K.name)!=null?Xe:t.getGeneratedNameForNode(K):K.name,Ka=t.updateClassDeclaration(K,yr,Go,void 0,On(K.heritageClauses,U,dd),tn(K)),vo=Ya(K);ft&1&&(vo|=64),Jn(Ka,vo);let ka;if(Yt){let Hs=[Ka],Uc=_W(xo(w.text,K.members.end),19),Gu=t.getInternalName(K),$o=t.createPartiallyEmittedExpression(Gu);i2($o,Uc.end),Jn($o,3072);let jo=t.createReturnStatement($o);oL(jo,Uc.pos),Jn(jo,3840),Hs.push(jo),em(Hs,e.endLexicalEnvironment());let Ws=t.createImmediatelyInvokedArrowFunction(Hs);tO(Ws,1);let hd=ft&16?t.createModifiersFromModifierFlags(1):void 0,vc=t.createVariableStatement(hd,t.createVariableDeclarationList([t.createVariableDeclaration(t.getLocalName(K,!1,!1),void 0,void 0,Ws)],1));Ir(vc,K),hl(vc,K),Ho(vc,$y(K)),mu(vc),ka=vc}else ka=Ka;if(pr){if(ft&8)return zt(ka,Ps(K));if(ft&32)return zt(ka,t.createExportDefault(t.getLocalName(K,!1,!0)));if(ft&16&&!Yt)return zt(ka,t.createExternalModuleExport(t.getLocalName(K,!1,!0)))}return ka}function zt(K,Xe){return bp(K,8388608),[K,Xe,t.createEndOfDeclarationMarker(K)]}function Qt(K){let Xe=On(K.modifiers,Be,Ns);return O0(v,K)&&(Xe=kn(Xe,K)),t.updateClassExpression(K,Xe,K.name,void 0,On(K.heritageClauses,U,dd),tn(K))}function tn(K){let Xe=On(K.members,we(K),_l),ft,Yt=Vm(K),pr=Yt&&Pr(Yt.parameters,yr=>Ad(yr,Yt));if(pr)for(let yr of pr){let ta=t.createPropertyDeclaration(void 0,yr.name,void 0,void 0,void 0);Ir(ta,yr),ft=Sn(ft,ta)}return ft?(ft=si(ft,Xe),it(t.createNodeArray(ft),K.members)):Xe}function kn(K,Xe){let ft=Gt(Xe,Xe);if(vt(ft)){let Yt=[];si(Yt,v8(K,oJ)),si(Yt,Pr(K,du)),si(Yt,ft),si(Yt,Pr(Nae(K,oJ),Ha)),K=it(t.createNodeArray(Yt),K)}return K}function _n(K,Xe,ft){if(Yr(ft)&&AH(v,Xe,ft)){let Yt=Gt(Xe,ft);if(vt(Yt)){let pr=[];si(pr,Pr(K,du)),si(pr,Yt),si(pr,Pr(K,Ha)),K=it(t.createNodeArray(pr),K)}}return K}function Gt(K,Xe){if(!!v)return epe?ui(K,Xe):$n(K,Xe)}function $n(K,Xe){if(S){let ft;if(Ni(K)){let Yt=r().createMetadataHelper(\"design:type\",S.serializeTypeOfNode({currentLexicalScope:F,currentNameScope:Xe},K));ft=Sn(ft,t.createDecorator(Yt))}if(gr(K)){let Yt=r().createMetadataHelper(\"design:paramtypes\",S.serializeParameterTypesOfNode({currentLexicalScope:F,currentNameScope:Xe},K,Xe));ft=Sn(ft,t.createDecorator(Yt))}if(Pi(K)){let Yt=r().createMetadataHelper(\"design:returntype\",S.serializeReturnTypeOfNode({currentLexicalScope:F,currentNameScope:Xe},K));ft=Sn(ft,t.createDecorator(Yt))}return ft}}function ui(K,Xe){if(S){let ft;if(Ni(K)){let Yt=t.createPropertyAssignment(\"type\",t.createArrowFunction(void 0,void 0,[],void 0,t.createToken(38),S.serializeTypeOfNode({currentLexicalScope:F,currentNameScope:Xe},K)));ft=Sn(ft,Yt)}if(gr(K)){let Yt=t.createPropertyAssignment(\"paramTypes\",t.createArrowFunction(void 0,void 0,[],void 0,t.createToken(38),S.serializeParameterTypesOfNode({currentLexicalScope:F,currentNameScope:Xe},K,Xe)));ft=Sn(ft,Yt)}if(Pi(K)){let Yt=t.createPropertyAssignment(\"returnType\",t.createArrowFunction(void 0,void 0,[],void 0,t.createToken(38),S.serializeReturnTypeOfNode({currentLexicalScope:F,currentNameScope:Xe},K)));ft=Sn(ft,Yt)}if(ft){let Yt=r().createMetadataHelper(\"design:typeinfo\",t.createObjectLiteralExpression(ft,!0));return[t.createDecorator(Yt)]}}}function Ni(K){let Xe=K.kind;return Xe===171||Xe===174||Xe===175||Xe===169}function Pi(K){return K.kind===171}function gr(K){switch(K.kind){case 260:case 228:return Vm(K)!==void 0;case 171:case 174:case 175:return!0}return!1}function pt(K,Xe){let ft=K.name;return pi(ft)?t.createIdentifier(\"\"):ts(ft)?Xe&&!Ap(ft.expression)?t.getGeneratedNameForNode(ft):ft.expression:Re(ft)?t.createStringLiteral(vr(ft)):t.cloneNode(ft)}function nn(K){let Xe=K.name;if(ts(Xe)&&(!zc(K)&&q||vf(K)&&v)){let ft=$e(Xe.expression,U,ot);L.assert(ft);let Yt=i_(ft);if(!Ap(Yt)){let pr=t.getGeneratedNameForNode(Xe);return l(pr),t.updateComputedPropertyName(Xe,t.createAssignment(pr,ft))}}return L.checkDefined($e(Xe,U,Ys))}function Dt(K){if(K.token!==117)return xn(K,U,e)}function pn(K){return t.updateExpressionWithTypeArguments(K,L.checkDefined($e(K.expression,U,Ju)),void 0)}function An(K){return!rc(K.body)}function Kn(K,Xe){let ft=K.flags&16777216||Mr(K,256);if(ft&&!(v&&vf(K)))return;let Yt=Yr(Xe)?ft?On(K.modifiers,Be,Ns):On(K.modifiers,U,Ns):On(K.modifiers,Ie,Ns);return Yt=_n(Yt,K,Xe),ft?t.updatePropertyDeclaration(K,Qi(Yt,t.createModifiersFromModifierFlags(2)),L.checkDefined($e(K.name,U,Ys)),void 0,void 0,void 0):t.updatePropertyDeclaration(K,Yt,nn(K),void 0,void 0,$e(K.initializer,U,ot))}function hi(K){if(!!An(K))return t.updateConstructorDeclaration(K,void 0,Sc(K.parameters,U,e),ri(K.body,K))}function ri(K,Xe){let ft=Xe&&Pr(Xe.parameters,vo=>Ad(vo,Xe));if(!vt(ft))return Qd(K,U,e);let Yt=[];o();let pr=t.copyPrologue(K.statements,Yt,!1,U),yr=bF(K.statements,pr);yr>=0&&si(Yt,On(K.statements,U,ca,pr,yr+1-pr));let ta=Zi(ft,gn);yr>=0?si(Yt,ta):Yt=[...Yt.slice(0,pr),...ta,...Yt.slice(pr)];let Go=yr>=0?yr+1:pr;si(Yt,On(K.statements,U,ca,Go)),Yt=t.mergeLexicalEnvironment(Yt,s());let Ka=t.createBlock(it(t.createNodeArray(Yt),K.statements),!0);return it(Ka,K),Ir(Ka,K),Ka}function gn(K){let Xe=K.name;if(!Re(Xe))return;let ft=go(it(t.cloneNode(Xe),Xe),Xe.parent);Jn(ft,3168);let Yt=go(it(t.cloneNode(Xe),Xe),Xe.parent);return Jn(Yt,3072),mu(eO(it(Ir(t.createExpressionStatement(t.createAssignment(it(t.createPropertyAccessExpression(t.createThis(),ft),K.name),Yt)),K),fb(K,-1))))}function Ht(K,Xe){if(!(K.transformFlags&1))return K;if(!An(K))return;let ft=Yr(Xe)?On(K.modifiers,U,Ns):On(K.modifiers,Ie,Ns);return ft=_n(ft,K,Xe),t.updateMethodDeclaration(K,ft,K.asteriskToken,nn(K),void 0,void 0,Sc(K.parameters,U,e),void 0,Qd(K.body,U,e))}function En(K){return!(rc(K.body)&&Mr(K,256))}function dr(K,Xe){if(!(K.transformFlags&1))return K;if(!En(K))return;let ft=Yr(Xe)?On(K.modifiers,U,Ns):On(K.modifiers,Ie,Ns);return ft=_n(ft,K,Xe),t.updateGetAccessorDeclaration(K,ft,nn(K),Sc(K.parameters,U,e),void 0,Qd(K.body,U,e)||t.createBlock([]))}function Cr(K,Xe){if(!(K.transformFlags&1))return K;if(!En(K))return;let ft=Yr(Xe)?On(K.modifiers,U,Ns):On(K.modifiers,Ie,Ns);return ft=_n(ft,K,Xe),t.updateSetAccessorDeclaration(K,ft,nn(K),Sc(K.parameters,U,e),Qd(K.body,U,e)||t.createBlock([]))}function Se(K){if(!An(K))return t.createNotEmittedStatement(K);let Xe=t.updateFunctionDeclaration(K,On(K.modifiers,Ne,Ha),K.asteriskToken,K.name,void 0,Sc(K.parameters,U,e),void 0,Qd(K.body,U,e)||t.createBlock([]));if(Wi(K)){let ft=[Xe];return mc(ft,K),ft}return Xe}function at(K){return An(K)?t.updateFunctionExpression(K,On(K.modifiers,Ne,Ha),K.asteriskToken,K.name,void 0,Sc(K.parameters,U,e),void 0,Qd(K.body,U,e)||t.createBlock([])):t.createOmittedExpression()}function Tt(K){return t.updateArrowFunction(K,On(K.modifiers,Ne,Ha),void 0,Sc(K.parameters,U,e),void 0,K.equalsGreaterThanToken,Qd(K.body,U,e))}function ve(K){if(G0(K))return;let Xe=t.updateParameterDeclaration(K,On(K.modifiers,ft=>du(ft)?U(ft):void 0,Ns),K.dotDotDotToken,L.checkDefined($e(K.name,U,Mm)),void 0,void 0,$e(K.initializer,U,ot));return Xe!==K&&(hl(Xe,K),it(Xe,yp(K)),Ho(Xe,yp(K)),Jn(Xe.name,64)),Xe}function nt(K){if(Wi(K)){let Xe=XI(K.declarationList);return Xe.length===0?void 0:it(t.createExpressionStatement(t.inlineExpressions(on(Xe,ce))),K)}else return xn(K,U,e)}function ce(K){let Xe=K.name;return La(Xe)?qT(K,U,e,0,!1,hc):it(t.createAssignment(ro(Xe),L.checkDefined($e(K.initializer,U,ot))),K)}function $(K){let Xe=t.updateVariableDeclaration(K,L.checkDefined($e(K.name,U,Mm)),void 0,void 0,$e(K.initializer,U,ot));return K.type&&yue(Xe.name,K.type),Xe}function ue(K){let Xe=ql(K.expression,-7);if(mT(Xe)){let ft=$e(K.expression,U,ot);return L.assert(ft),t.createPartiallyEmittedExpression(ft,K)}return xn(K,U,e)}function G(K){let Xe=$e(K.expression,U,ot);return L.assert(Xe),t.createPartiallyEmittedExpression(Xe,K)}function Oe(K){let Xe=$e(K.expression,U,Ju);return L.assert(Xe),t.createPartiallyEmittedExpression(Xe,K)}function je(K){let Xe=$e(K.expression,U,ot);return L.assert(Xe),t.createPartiallyEmittedExpression(Xe,K)}function Ge(K){return t.updateCallExpression(K,L.checkDefined($e(K.expression,U,ot)),void 0,On(K.arguments,U,ot))}function kt(K){return t.updateNewExpression(K,L.checkDefined($e(K.expression,U,ot)),void 0,On(K.arguments,U,ot))}function Kt(K){return t.updateTaggedTemplateExpression(K,L.checkDefined($e(K.tag,U,ot)),void 0,L.checkDefined($e(K.template,U,CA)))}function ln(K){return t.updateJsxSelfClosingElement(K,L.checkDefined($e(K.tagName,U,EI)),void 0,L.checkDefined($e(K.attributes,U,K0)))}function ir(K){return t.updateJsxOpeningElement(K,L.checkDefined($e(K.tagName,U,EI)),void 0,L.checkDefined($e(K.attributes,U,K0)))}function ae(K){return!R0(K)||U0(d)}function rt(K){if(!ae(K))return t.createNotEmittedStatement(K);let Xe=[],ft=4,Yt=lt(Xe,K);Yt&&(m!==4||F!==w)&&(ft|=1024);let pr=aa(K),yr=Co(K),ta=Mr(K,1)?t.getExternalModuleOrNamespaceExportName(P,K,!1,!0):t.getLocalName(K,!1,!0),Go=t.createLogicalOr(ta,t.createAssignment(ta,t.createObjectLiteralExpression()));if(z(K)){let vo=t.getLocalName(K,!1,!0);Go=t.createAssignment(vo,Go)}let Ka=t.createExpressionStatement(t.createCallExpression(t.createFunctionExpression(void 0,void 0,void 0,void 0,[t.createParameterDeclaration(void 0,void 0,pr)],void 0,Ot(K,yr)),void 0,[Go]));return Ir(Ka,K),Yt&&(W0(Ka,void 0),d2(Ka,void 0)),it(Ka,K),bp(Ka,ft),Xe.push(Ka),Xe.push(t.createEndOfDeclarationMarker(K)),Xe}function Ot(K,Xe){let ft=P;P=Xe;let Yt=[];i();let pr=on(K.members,Ke);return em(Yt,s()),si(Yt,pr),P=ft,t.createBlock(it(t.createNodeArray(Yt),K.members),!0)}function Ke(K){let Xe=pt(K,!1),ft=oe(K),Yt=t.createAssignment(t.createElementAccessExpression(P,Xe),ft),pr=ft.kind===10?Yt:t.createAssignment(t.createElementAccessExpression(P,Yt),Xe);return it(t.createExpressionStatement(it(pr,K)),K)}function oe(K){let Xe=f.getConstantValue(K);return Xe!==void 0?typeof Xe==\"string\"?t.createStringLiteral(Xe):t.createNumericLiteral(Xe):(gc(),K.initializer?L.checkDefined($e(K.initializer,U,ot)):t.createVoidZero())}function pe(K){let Xe=ea(K,Tc);return Xe?fK(Xe,U0(d)):!0}function z(K){return Wi(K)||yn(K)&&m!==5&&m!==6&&m!==7&&m!==99&&m!==4}function Te(K){B||(B=new Map);let Xe=yt(K);B.has(Xe)||B.set(Xe,K)}function j(K){if(B){let Xe=yt(K);return B.get(Xe)===K}return!0}function yt(K){return L.assertNode(K.name,Re),K.name.escapedText}function lt(K,Xe){let ft=t.createVariableStatement(On(Xe.modifiers,Ne,Ha),t.createVariableDeclarationList([t.createVariableDeclaration(t.getLocalName(Xe,!1,!0))],F.kind===308?0:1));if(Ir(ft,Xe),Te(Xe),j(Xe))return Xe.kind===263?Ho(ft.declarationList,Xe):Ho(ft,Xe),hl(ft,Xe),bp(ft,8390656),K.push(ft),!0;{let Yt=t.createMergeDeclarationMarker(ft);return Jn(Yt,8391680),K.push(Yt),!1}}function Qe(K){if(!pe(K))return t.createNotEmittedStatement(K);L.assertNode(K.name,Re,\"A TypeScript namespace should have an Identifier name.\"),Ll();let Xe=[],ft=4,Yt=lt(Xe,K);Yt&&(m!==4||F!==w)&&(ft|=1024);let pr=aa(K),yr=Co(K),ta=Mr(K,1)?t.getExternalModuleOrNamespaceExportName(P,K,!1,!0):t.getLocalName(K,!1,!0),Go=t.createLogicalOr(ta,t.createAssignment(ta,t.createObjectLiteralExpression()));if(z(K)){let vo=t.getLocalName(K,!1,!0);Go=t.createAssignment(vo,Go)}let Ka=t.createExpressionStatement(t.createCallExpression(t.createFunctionExpression(void 0,void 0,void 0,void 0,[t.createParameterDeclaration(void 0,void 0,pr)],void 0,Vt(K,yr)),void 0,[Go]));return Ir(Ka,K),Yt&&(W0(Ka,void 0),d2(Ka,void 0)),it(Ka,K),bp(Ka,ft),Xe.push(Ka),Xe.push(t.createEndOfDeclarationMarker(K)),Xe}function Vt(K,Xe){let ft=P,Yt=C,pr=B;P=Xe,C=K,B=void 0;let yr=[];i();let ta,Go;if(K.body)if(K.body.kind===265)fe(K.body,vo=>si(yr,On(vo.statements,X,ca))),ta=K.body.statements,Go=K.body;else{let vo=Qe(K.body);vo&&(ba(vo)?si(yr,vo):yr.push(vo));let ka=Hn(K).body;ta=fb(ka.statements,-1)}em(yr,s()),P=ft,C=Yt,B=pr;let Ka=t.createBlock(it(t.createNodeArray(yr),ta),!0);return it(Ka,Go),(!K.body||K.body.kind!==265)&&Jn(Ka,Ya(Ka)|3072),Ka}function Hn(K){if(K.body.kind===264)return Hn(K.body)||K.body}function jr(K){if(!K.importClause)return K;if(K.importClause.isTypeOnly)return;let Xe=$e(K.importClause,ei,lm);return Xe||d.importsNotUsedAsValues===1||d.importsNotUsedAsValues===2?t.updateImportDeclaration(K,void 0,Xe,K.moduleSpecifier,K.assertClause):void 0}function ei(K){L.assert(!K.isTypeOnly);let Xe=wt(K)?K.name:void 0,ft=$e(K.namedBindings,Kr,Wj);return Xe||ft?t.updateImportClause(K,!1,Xe,ft):void 0}function Kr(K){if(K.kind===271)return wt(K)?K:void 0;{let Xe=d.verbatimModuleSyntax||d.preserveValueImports&&(d.importsNotUsedAsValues===1||d.importsNotUsedAsValues===2),ft=On(K.elements,Si,$u);return Xe||vt(ft)?t.updateNamedImports(K,ft):void 0}}function Si(K){return!K.isTypeOnly&&wt(K)?K:void 0}function Ja(K){return d.verbatimModuleSyntax||f.isValueAliasDeclaration(K)?xn(K,U,e):void 0}function Za(K){if(K.isTypeOnly)return;if(!K.exportClause||qm(K.exportClause))return K;let Xe=d.verbatimModuleSyntax||!!K.moduleSpecifier&&(d.importsNotUsedAsValues===1||d.importsNotUsedAsValues===2),ft=$e(K.exportClause,Yt=>xi(Yt,Xe),Rj);return ft?t.updateExportDeclaration(K,void 0,K.isTypeOnly,ft,K.moduleSpecifier,K.assertClause):void 0}function Fa(K,Xe){let ft=On(K.elements,Nr,Mu);return Xe||vt(ft)?t.updateNamedExports(K,ft):void 0}function Hi(K){return t.updateNamespaceExport(K,L.checkDefined($e(K.name,U,Re)))}function xi(K,Xe){return qm(K)?Hi(K):Fa(K,Xe)}function Nr(K){return!K.isTypeOnly&&(d.verbatimModuleSyntax||f.isValueAliasDeclaration(K))?K:void 0}function Fo(K){return wt(K)||!Lc(w)&&f.isTopLevelValueImportEqualsWithEntityName(K)}function Qr(K){if(K.isTypeOnly)return;if(ab(K)){let ft=wt(K);return!ft&&d.importsNotUsedAsValues===1?Ir(it(t.createImportDeclaration(void 0,void 0,K.moduleReference.expression,void 0),K),K):ft?xn(K,U,e):void 0}if(!Fo(K))return;let Xe=TO(t,K.moduleReference);return Jn(Xe,7168),Ki(K)||!Wi(K)?Ir(it(t.createVariableStatement(On(K.modifiers,Ne,Ha),t.createVariableDeclarationList([Ir(t.createVariableDeclaration(K.name,void 0,void 0,Xe),K)])),K),K):Ir(xc(K.name,Xe,K),K)}function Wi(K){return C!==void 0&&Mr(K,1)}function yn(K){return C===void 0&&Mr(K,1)}function Ki(K){return yn(K)&&!Mr(K,1024)}function kc(K){return yn(K)&&Mr(K,1024)}function Ps(K){let Xe=t.createAssignment(t.getExternalModuleOrNamespaceExportName(P,K,!1,!0),t.getLocalName(K));Ho(Xe,Ff(K.name?K.name.pos:K.pos,K.end));let ft=t.createExpressionStatement(Xe);return Ho(ft,Ff(-1,K.end)),ft}function mc(K,Xe){K.push(Ps(Xe))}function xc(K,Xe,ft){return it(t.createExpressionStatement(t.createAssignment(t.getNamespaceMemberName(P,K,!1,!0),Xe)),ft)}function hc(K,Xe,ft){return it(t.createAssignment(ro(K),Xe),ft)}function ro(K){return t.getNamespaceMemberName(P,K,!1,!0)}function aa(K){let Xe=t.getGeneratedNameForNode(K);return Ho(Xe,K.name),Xe}function Co(K){return t.getGeneratedNameForNode(K)}function gc(){(W&8)===0&&(W|=8,e.enableSubstitution(79))}function Ll(){(W&2)===0&&(W|=2,e.enableSubstitution(79),e.enableSubstitution(300),e.enableEmitNotification(264))}function md(K){return ec(K).kind===264}function Pc(K){return ec(K).kind===263}function bl(K,Xe,ft){let Yt=Y,pr=w;Li(Xe)&&(w=Xe),W&2&&md(Xe)&&(Y|=2),W&8&&Pc(Xe)&&(Y|=8),x(K,Xe,ft),Y=Yt,w=pr}function ss(K,Xe){return Xe=A(K,Xe),K===1?Rs(Xe):Sf(Xe)?qs(Xe):Xe}function qs(K){if(W&2){let Xe=K.name,ft=jt(Xe);if(ft){if(K.objectAssignmentInitializer){let Yt=t.createAssignment(ft,K.objectAssignmentInitializer);return it(t.createPropertyAssignment(Xe,Yt),K)}return it(t.createPropertyAssignment(Xe,ft),K)}}return K}function Rs(K){switch(K.kind){case 79:return As(K);case 208:return yc(K);case 209:return Ql(K)}return K}function As(K){return jt(K)||K}function jt(K){if(W&Y&&!tc(K)&&!rv(K)){let Xe=f.getReferencedExportContainer(K,!1);if(Xe&&Xe.kind!==308&&(Y&2&&Xe.kind===264||Y&8&&Xe.kind===263))return it(t.createPropertyAccessExpression(t.getGeneratedNameForNode(Xe),K),K)}}function yc(K){return se(K)}function Ql(K){return se(K)}function yu(K){return K.replace(/\\*\\//g,\"*_/\")}function se(K){let Xe=ht(K);if(Xe!==void 0){hue(K,Xe);let ft=typeof Xe==\"string\"?t.createStringLiteral(Xe):t.createNumericLiteral(Xe);if(!d.removeComments){let Yt=ec(K,Us);R4(ft,3,` ${yu(Qc(Yt))} `)}return ft}return K}function ht(K){if(!u_(d))return br(K)||Vs(K)?f.getConstantValue(K):void 0}function wt(K){return d.verbatimModuleSyntax||Yn(K)||(d.preserveValueImports?f.isValueAliasDeclaration(K):f.isReferencedAliasDeclaration(K))}}var epe,eMe=gt({\"src/compiler/transformers/ts.ts\"(){\"use strict\";fa(),epe=!1}});function tpe(e){let{factory:t,getEmitHelperFactory:r,hoistVariableDeclaration:i,endLexicalEnvironment:o,startLexicalEnvironment:s,resumeLexicalEnvironment:l,addBlockScopedVariable:f}=e,d=e.getEmitResolver(),g=e.getCompilerOptions(),m=Do(g),v=FR(g),S=!!g.experimentalDecorators,x=!v,A=v&&m<9,w=x||A,C=m<9,P=m<99?-1:v?0:3,F=m<9,B=F&&m>=2,q=w||C||P===-1,W=e.onSubstituteNode;e.onSubstituteNode=As;let Y=e.onEmitNode;e.onEmitNode=Rs;let R=!1,ie,Q,fe,Z,U,re=new Map,le,_e,ge=!1,X=!1;return g_(e,Ve);function Ve(se){if(se.isDeclarationFile||(U=void 0,R=!!(a_(se)&32),!q&&!R))return se;let ht=xn(se,ke,e);return Bg(ht,e.readEmitHelpers()),ht}function we(se){switch(se.kind){case 127:return Kn()?void 0:se;default:return zr(se,Ha)}}function ke(se){if(!(se.transformFlags&16777216)&&!(se.transformFlags&134234112))return se;switch(se.kind){case 127:return L.fail(\"Use `modifierVisitor` instead.\");case 260:return ae(se);case 228:return Ot(se,void 0);case 172:case 169:return L.fail(\"Use `classElementVisitor` instead.\");case 299:return We(se);case 240:return qe(se);case 257:return Qt(se);case 166:return tn(se);case 205:return kn(se);case 274:return _n(se);case 80:return ct(se);case 208:return Ht(se);case 209:return En(se);case 221:case 222:return dr(se,!1);case 223:return $(se,!1);case 214:return G(se,!1,void 0);case 210:return Tt(se);case 241:return Se(se);case 212:return ve(se);case 245:return Cr(se);case 259:case 215:case 173:case 171:case 174:case 175:return gr(void 0,Pe,se);default:return Pe(se)}}function Pe(se){return xn(se,ke,e)}function Ce(se,ht){switch(se.kind){case 356:return Oe(se,!1,ht);case 214:return G(se,!1,ht);case 228:return Ot(se,ht);default:return ke(se)}}function Ie(se){switch(se.kind){case 221:case 222:return dr(se,!0);case 223:return $(se,!0);case 357:return ue(se,!0);case 214:return G(se,!0,void 0);default:return ke(se)}}function Be(se){switch(se.kind){case 294:return xn(se,Be,e);case 230:return ln(se);default:return ke(se)}}function Ne(se){switch(se.kind){case 207:case 206:return qs(se);default:return ke(se)}}function Le(se){switch(se.kind){case 173:return ui(se);case 174:case 175:case 171:return gr(void 0,Pi,se);case 169:return gr(void 0,hi,se);case 172:return oe(se);case 164:return $n(se);case 237:return se;default:return Ns(se)?we(se):ke(se)}}function Ye(se){switch(se.kind){case 164:return $n(se);default:return ke(se)}}function _t(se){switch(se.kind){case 169:return An(se);case 174:case 175:return Le(se);default:L.assertMissingNode(se,\"Expected node to either be a PropertyDeclaration, GetAccessorDeclaration, or SetAccessorDeclaration\");break}}function ct(se){return!C||ca(se.parent)?se:Ir(t.createIdentifier(\"\"),se)}function Rt(se){let ht=hc(se.left);if(ht){let wt=$e(se.right,ke,ot);return Ir(r().createClassPrivateFieldInHelper(ht.brandCheckIdentifier,wt),se)}return xn(se,ke,e)}function We(se){if(yf(se,ce)){let{referencedName:ht,name:wt}=je(se.name),K=$e(se.initializer,Xe=>Ce(Xe,ht),ot);return t.updatePropertyAssignment(se,wt,K)}return xn(se,ke,e)}function qe(se){let ht=Z;Z=[];let wt=xn(se,ke,e),K=vt(Z)?[wt,...Z]:wt;return Z=ht,K}function zt(se,ht){let wt=ec(ht,Yr);return wt&&!wt.name&&Mr(wt,1024)?t.createStringLiteral(\"default\"):t.createStringLiteralFromNode(se)}function Qt(se){if(yf(se,ce)){let ht=zt(se.name,se.initializer),wt=$e(se.name,ke,Mm),K=$e(se.initializer,Xe=>Ce(Xe,ht),ot);return t.updateVariableDeclaration(se,wt,void 0,void 0,K)}return xn(se,ke,e)}function tn(se){if(yf(se,ce)){let ht=zt(se.name,se.initializer),wt=$e(se.name,ke,Mm),K=$e(se.initializer,Xe=>Ce(Xe,ht),ot);return t.updateParameterDeclaration(se,void 0,void 0,wt,void 0,void 0,K)}return xn(se,ke,e)}function kn(se){if(yf(se,ce)){let ht=zt(se.name,se.initializer),wt=$e(se.propertyName,ke,Ys),K=$e(se.name,ke,Mm),Xe=$e(se.initializer,ft=>Ce(ft,ht),ot);return t.updateBindingElement(se,void 0,wt,K,Xe)}return xn(se,ke,e)}function _n(se){if(yf(se,ce)){let ht=t.createStringLiteral(se.isExportEquals?\"\":\"default\"),wt=On(se.modifiers,we,Ha),K=$e(se.expression,Xe=>Ce(Xe,ht),ot);return t.updateExportAssignment(se,wt,K)}return xn(se,ke,e)}function Gt(se){return vt(fe)&&(ud(se)?(fe.push(se.expression),se=t.updateParenthesizedExpression(se,t.inlineExpressions(fe))):(fe.push(se),se=t.inlineExpressions(fe)),fe=void 0),se}function $n(se){let ht=$e(se.expression,ke,ot);return t.updateComputedPropertyName(se,Gt(ht))}function ui(se){return le?Te(se,le):Pe(se)}function Ni(se){return!!(C||zc(se)&&a_(se)&32)}function Pi(se){if(L.assert(!vf(se)),!xu(se)||!Ni(se))return xn(se,Le,e);let ht=hc(se.name);if(L.assert(ht,\"Undeclared private name for property declaration.\"),!ht.isValid)return se;let wt=pt(se);wt&&Nr().push(t.createAssignment(wt,t.createFunctionExpression(Pr(se.modifiers,K=>Ha(K)&&!kS(K)&&!Nue(K)),se.asteriskToken,wt,void 0,Sc(se.parameters,ke,e),void 0,Qd(se.body,ke,e))))}function gr(se,ht,wt){let K=_e;_e=se;let Xe=ht(wt);return _e=K,Xe}function pt(se){L.assert(pi(se.name));let ht=hc(se.name);if(L.assert(ht,\"Undeclared private name for property declaration.\"),ht.kind===\"m\")return ht.methodName;if(ht.kind===\"a\"){if(zy(se))return ht.getterName;if(Ng(se))return ht.setterName}}function nn(se){let ht=sm(se),wt=pb(se),K=se.name,Xe=K,ft=K;if(ts(K)&&!Ap(K.expression)){let Go=L3(K);if(Go)Xe=t.updateComputedPropertyName(K,$e(K.expression,ke,ot)),ft=t.updateComputedPropertyName(K,Go.left);else{let Ka=t.createTempVariable(i);Ho(Ka,K.expression);let vo=$e(K.expression,ke,ot),ka=t.createAssignment(Ka,vo);Ho(ka,K.expression),Xe=t.updateComputedPropertyName(K,ka),ft=t.updateComputedPropertyName(K,Ka)}}let Yt=On(se.modifiers,we,Ha),pr=sJ(t,se,Yt,se.initializer);Ir(pr,se),Jn(pr,3072),Ho(pr,wt);let yr=gde(t,se,Yt,Xe);Ir(yr,se),hl(yr,ht),Ho(yr,wt);let ta=yde(t,se,Yt,ft);return Ir(ta,se),Jn(ta,3072),Ho(ta,wt),vK([pr,yr,ta],_t,_l)}function Dt(se){if(Ni(se)){let ht=hc(se.name);if(L.assert(ht,\"Undeclared private name for property declaration.\"),!ht.isValid)return se;if(ht.isStatic&&!C){let wt=lt(se,t.createThis());if(wt)return t.createClassStaticBlockDeclaration(t.createBlock([wt],!0))}return}if(x&&!Ca(se)&&U?.data&&U.data.facts&16)return t.updatePropertyDeclaration(se,On(se.modifiers,ke,Ns),se.name,void 0,void 0,void 0);if(yf(se,ce)){let{referencedName:ht,name:wt}=je(se.name);return t.updatePropertyDeclaration(se,On(se.modifiers,we,Ha),wt,void 0,void 0,$e(se.initializer,K=>Ce(K,ht),ot))}return t.updatePropertyDeclaration(se,On(se.modifiers,we,Ha),$e(se.name,Ye,Ys),void 0,void 0,$e(se.initializer,ke,ot))}function pn(se){if(w&&!Id(se)){let ht=Ja(se.name,!!se.initializer||v,yf(se,ce));if(ht&&Nr().push(...vde(ht)),Ca(se)&&!C){let wt=lt(se,t.createThis());if(wt){let K=t.createClassStaticBlockDeclaration(t.createBlock([wt]));return Ir(K,se),hl(K,se),hl(wt,{pos:-1,end:-1}),W0(wt,void 0),d2(wt,void 0),K}}return}return t.updatePropertyDeclaration(se,On(se.modifiers,we,Ha),$e(se.name,Ye,Ys),void 0,void 0,$e(se.initializer,ke,ot))}function An(se){return L.assert(!vf(se),\"Decorators should already have been transformed and elided.\"),xu(se)?Dt(se):pn(se)}function Kn(){return P===-1||P===3&&!!U?.data&&!!(U.data.facts&16)}function hi(se){return Id(se)&&(Kn()||zc(se)&&a_(se)&32)?nn(se):An(se)}function ri(se,ht){return gn(se,$e(ht,ke,ot))}function gn(se,ht){switch(hl(ht,fb(ht,-1)),se.kind){case\"a\":return r().createClassPrivateFieldGetHelper(ht,se.brandCheckIdentifier,se.kind,se.getterName);case\"m\":return r().createClassPrivateFieldGetHelper(ht,se.brandCheckIdentifier,se.kind,se.methodName);case\"f\":return r().createClassPrivateFieldGetHelper(ht,se.brandCheckIdentifier,se.kind,se.isStatic?se.variableName:void 0);case\"untransformed\":return L.fail(\"Access helpers should not be created for untransformed private elements\");default:L.assertNever(se,\"Unknown private element type\")}}function Ht(se){if(pi(se.name)){let ht=hc(se.name);if(ht)return it(Ir(ri(ht,se.expression),se),se)}if(B&&Pu(se)&&Re(se.name)&&_e&&U?.data){let{classConstructor:ht,superClassReference:wt,facts:K}=U.data;if(K&1)return Si(se);if(ht&&wt){let Xe=t.createReflectGetCall(wt,t.createStringLiteralFromNode(se.name),ht);return Ir(Xe,se.expression),it(Xe,se.expression),Xe}}return xn(se,ke,e)}function En(se){if(B&&Pu(se)&&_e&&U?.data){let{classConstructor:ht,superClassReference:wt,facts:K}=U.data;if(K&1)return Si(se);if(ht&&wt){let Xe=t.createReflectGetCall(wt,$e(se.argumentExpression,ke,ot),ht);return Ir(Xe,se.expression),it(Xe,se.expression),Xe}}return xn(se,ke,e)}function dr(se,ht){if(se.operator===45||se.operator===46){let wt=vs(se.operand);if(SA(wt)){let K;if(K=hc(wt.name)){let Xe=$e(wt.expression,ke,ot),{readExpression:ft,initializeExpression:Yt}=at(Xe),pr=ri(K,ft),yr=tv(se)||ht?void 0:t.createTempVariable(i);return pr=b3(t,se,pr,i,yr),pr=Ge(K,Yt||ft,pr,63),Ir(pr,se),it(pr,se),yr&&(pr=t.createComma(pr,yr),it(pr,se)),pr}}else if(B&&Pu(wt)&&_e&&U?.data){let{classConstructor:K,superClassReference:Xe,facts:ft}=U.data;if(ft&1){let Yt=Si(wt);return tv(se)?t.updatePrefixUnaryExpression(se,Yt):t.updatePostfixUnaryExpression(se,Yt)}if(K&&Xe){let Yt,pr;if(br(wt)?Re(wt.name)&&(pr=Yt=t.createStringLiteralFromNode(wt.name)):Ap(wt.argumentExpression)?pr=Yt=wt.argumentExpression:(pr=t.createTempVariable(i),Yt=t.createAssignment(pr,$e(wt.argumentExpression,ke,ot))),Yt&&pr){let yr=t.createReflectGetCall(Xe,pr,K);it(yr,wt);let ta=ht?void 0:t.createTempVariable(i);return yr=b3(t,se,yr,i,ta),yr=t.createReflectSetCall(Xe,Yt,yr,K),Ir(yr,se),it(yr,se),ta&&(yr=t.createComma(yr,ta),it(yr,se)),yr}}}}return xn(se,ke,e)}function Cr(se){return t.updateForStatement(se,$e(se.initializer,Ie,pp),$e(se.condition,ke,ot),$e(se.incrementor,Ie,ot),Vf(se.statement,ke,e))}function Se(se){return t.updateExpressionStatement(se,$e(se.expression,Ie,ot))}function at(se){let ht=ws(se)?se:t.cloneNode(se);if(Ap(se))return{readExpression:ht,initializeExpression:void 0};let wt=t.createTempVariable(i),K=t.createAssignment(wt,ht);return{readExpression:wt,initializeExpression:K}}function Tt(se){var ht;if(SA(se.expression)&&hc(se.expression.name)){let{thisArg:wt,target:K}=t.createCallBinding(se.expression,i,m);return fT(se)?t.updateCallChain(se,t.createPropertyAccessChain($e(K,ke,ot),se.questionDotToken,\"call\"),void 0,void 0,[$e(wt,ke,ot),...On(se.arguments,ke,ot)]):t.updateCallExpression(se,t.createPropertyAccessExpression($e(K,ke,ot),\"call\"),void 0,[$e(wt,ke,ot),...On(se.arguments,ke,ot)])}if(B&&Pu(se.expression)&&_e&&((ht=U?.data)==null?void 0:ht.classConstructor)){let wt=t.createFunctionCallCall($e(se.expression,ke,ot),U.data.classConstructor,On(se.arguments,ke,ot));return Ir(wt,se),it(wt,se),wt}return xn(se,ke,e)}function ve(se){var ht;if(SA(se.tag)&&hc(se.tag.name)){let{thisArg:wt,target:K}=t.createCallBinding(se.tag,i,m);return t.updateTaggedTemplateExpression(se,t.createCallExpression(t.createPropertyAccessExpression($e(K,ke,ot),\"bind\"),void 0,[$e(wt,ke,ot)]),void 0,$e(se.template,ke,CA))}if(B&&Pu(se.tag)&&_e&&((ht=U?.data)==null?void 0:ht.classConstructor)){let wt=t.createFunctionBindCall($e(se.tag,ke,ot),U.data.classConstructor,[]);return Ir(wt,se),it(wt,se),t.updateTaggedTemplateExpression(se,wt,void 0,$e(se.template,ke,CA))}return xn(se,ke,e)}function nt(se){if(U&&re.set(ec(se),U),C){s();let ht=gr(se,K=>On(K,ke,ca),se.body.statements);ht=t.mergeLexicalEnvironment(ht,o());let wt=t.createImmediatelyInvokedArrowFunction(ht);return Ir(wt,se),it(wt,se),bp(wt,4),wt}}function ce(se){if(_u(se)&&!se.name){let ht=EF(se),wt=wr(ht,oc);if(wt){for(let Xe of wt.body.statements)if(Ol(Xe)&&mL(Xe.expression,\"___setFunctionName\"))return!1}return(C||!!a_(se))&&vt(ht,Xe=>oc(Xe)||xu(Xe)||w&&cN(Xe))}return!1}function $(se,ht){if(Fg(se)){let wt=fe;fe=void 0,se=t.updateBinaryExpression(se,$e(se.left,Ne,ot),se.operatorToken,$e(se.right,ke,ot));let K=vt(fe)?t.inlineExpressions(zD([...fe,se])):se;return fe=wt,K}if(Iu(se)){if(yf(se,ce)){let wt=zt(se.left,se.right),K=$e(se.left,ke,ot),Xe=$e(se.right,ft=>Ce(ft,wt),ot);return t.updateBinaryExpression(se,K,se.operatorToken,Xe)}if(SA(se.left)){let wt=hc(se.left.name);if(wt)return it(Ir(Ge(wt,se.left.expression,se.right,se.operatorToken.kind),se),se)}else if(B&&Pu(se.left)&&_e&&U?.data){let{classConstructor:wt,superClassReference:K,facts:Xe}=U.data;if(Xe&1)return t.updateBinaryExpression(se,Si(se.left),se.operatorToken,$e(se.right,ke,ot));if(wt&&K){let ft=Vs(se.left)?$e(se.left.argumentExpression,ke,ot):Re(se.left.name)?t.createStringLiteralFromNode(se.left.name):void 0;if(ft){let Yt=$e(se.right,ke,ot);if(sN(se.operatorToken.kind)){let yr=ft;Ap(ft)||(yr=t.createTempVariable(i),ft=t.createAssignment(yr,ft));let ta=t.createReflectGetCall(K,yr,wt);Ir(ta,se.left),it(ta,se.left),Yt=t.createBinaryExpression(ta,zL(se.operatorToken.kind),Yt),it(Yt,se)}let pr=ht?void 0:t.createTempVariable(i);return pr&&(Yt=t.createAssignment(pr,Yt),it(pr,se)),Yt=t.createReflectSetCall(K,ft,Yt,wt),Ir(Yt,se),it(Yt,se),pr&&(Yt=t.createComma(Yt,pr),it(Yt,se)),Yt}}}}return aMe(se)?Rt(se):xn(se,ke,e)}function ue(se,ht){let wt=ht?oN(se.elements,Ie):oN(se.elements,ke,Ie);return t.updateCommaListExpression(se,wt)}function G(se,ht,wt){let K=ht?Ie:wt?ft=>Ce(ft,wt):ke,Xe=$e(se.expression,K,ot);return t.updateParenthesizedExpression(se,Xe)}function Oe(se,ht,wt){let K=ht?Ie:wt?ft=>Ce(ft,wt):ke,Xe=$e(se.expression,K,ot);return t.updatePartiallyEmittedExpression(se,Xe)}function je(se){if(s_(se)||pi(se)){let ft=t.createStringLiteralFromNode(se),Yt=$e(se,ke,Ys);return{referencedName:ft,name:Yt}}if(s_(se.expression)&&!Re(se.expression)){let ft=t.createStringLiteralFromNode(se.expression),Yt=$e(se,ke,Ys);return{referencedName:ft,name:Yt}}let ht=t.createTempVariable(i),wt=r().createPropKeyHelper($e(se.expression,ke,ot)),K=t.createAssignment(ht,wt),Xe=t.updateComputedPropertyName(se,Gt(K));return{referencedName:ht,name:Xe}}function Ge(se,ht,wt,K){if(ht=$e(ht,ke,ot),wt=$e(wt,ke,ot),sN(K)){let{readExpression:Xe,initializeExpression:ft}=at(ht);ht=ft||Xe,wt=t.createBinaryExpression(gn(se,Xe),zL(K),wt)}switch(hl(ht,fb(ht,-1)),se.kind){case\"a\":return r().createClassPrivateFieldSetHelper(ht,se.brandCheckIdentifier,wt,se.kind,se.setterName);case\"m\":return r().createClassPrivateFieldSetHelper(ht,se.brandCheckIdentifier,wt,se.kind,void 0);case\"f\":return r().createClassPrivateFieldSetHelper(ht,se.brandCheckIdentifier,wt,se.kind,se.isStatic?se.variableName:void 0);case\"untransformed\":return L.fail(\"Access helpers should not be created for untransformed private elements\");default:L.assertNever(se,\"Unknown private element type\")}}function kt(se){return Pr(se.members,K_e)}function Kt(se){let ht=0,wt=ec(se);sl(wt)&&O0(S,wt)&&(ht|=1);let K=!1,Xe=!1,ft=!1,Yt=!1;for(let yr of se.members)Ca(yr)?(yr.name&&(pi(yr.name)||Id(yr))&&C&&(ht|=2),(Na(yr)||oc(yr))&&(F&&yr.transformFlags&16384&&(ht|=8,ht&1||(ht|=2)),B&&yr.transformFlags&134217728&&(ht&1||(ht|=6)))):B0(ec(yr))||(Id(yr)?(Yt=!0,ft||(ft=xu(yr))):xu(yr)?ft=!0:Na(yr)&&(K=!0,Xe||(Xe=!!yr.initializer)));return(A&&K||x&&Xe||C&&ft||C&&Yt&&P===-1)&&(ht|=16),ht}function ln(se){var ht;if((((ht=U?.data)==null?void 0:ht.facts)||0)&4){let K=t.createTempVariable(i,!0);return Hi().superClassReference=K,t.updateExpressionWithTypeArguments(se,t.createAssignment(K,$e(se.expression,ke,ot)),void 0)}return xn(se,ke,e)}function ir(se,ht,wt){let K=le,Xe=fe,ft=U;le=se,fe=void 0,Za();let Yt=a_(se)&32;if(C||Yt){let ta=sa(se);ta&&Re(ta)&&(xi().data.className=ta)}if(C){let ta=kt(se);vt(ta)&&(xi().data.weakSetName=mc(\"instances\",ta[0].name))}let pr=Kt(se);pr&&(Hi().facts=pr),pr&8&&ei();let yr=wt(se,pr,ht);return Fa(),L.assert(U===ft),le=K,fe=Xe,yr}function ae(se){return ir(se,void 0,rt)}function rt(se,ht){var wt,K;let Xe;if(ht&2){if(C&&((wt=se.emitNode)==null?void 0:wt.classThis))Hi().classConstructor=se.emitNode.classThis,Xe=t.createAssignment(se.emitNode.classThis,t.getInternalName(se));else{let Ka=t.createTempVariable(i,!0);Hi().classConstructor=t.cloneNode(Ka),Xe=t.createAssignment(Ka,t.getInternalName(se))}(K=se.emitNode)!=null&&K.classThis&&(Hi().classThis=se.emitNode.classThis)}let ft=On(se.modifiers,we,Ha),Yt=On(se.heritageClauses,Be,dd),{members:pr,prologue:yr}=pe(se),ta=t.updateClassDeclaration(se,ft,se.name,void 0,Yt,pr),Go=[];if(yr&&Go.push(t.createExpressionStatement(yr)),Go.push(ta),Xe&&Nr().unshift(Xe),vt(fe)&&Go.push(t.createExpressionStatement(t.inlineExpressions(fe))),x||C||a_(se)&32){let Ka=EF(se);vt(Ka)&&yt(Go,Ka,t.getInternalName(se))}return Go}function Ot(se,ht){return ir(se,ht,Ke)}function Ke(se,ht,wt){var K,Xe,ft,Yt,pr,yr;let ta=!!(ht&1),Go=EF(se),Ka=d.getNodeCheckFlags(se)&1048576,vo;function ka(){var vc;if(C&&((vc=se.emitNode)==null?void 0:vc.classThis))return Hi().classConstructor=se.emitNode.classThis;let tf=d.getNodeCheckFlags(se),ye=tf&1048576,Et=tf&32768,bn=t.createTempVariable(Et?f:i,!!ye);return Hi().classConstructor=t.cloneNode(bn),bn}(K=se.emitNode)!=null&&K.classThis&&(Hi().classThis=se.emitNode.classThis),ht&2&&(vo??(vo=ka()));let Hs=On(se.modifiers,we,Ha),Uc=On(se.heritageClauses,Be,dd),{members:Gu,prologue:$o}=pe(se),jo=t.updateClassExpression(se,Hs,se.name,void 0,Uc,Gu),Ws=[];if($o&&Ws.push($o),(C||a_(se)&32)&&vt(Go,vc=>oc(vc)||xu(vc)||w&&cN(vc))||vt(fe)||wt)if(ta){if(L.assertIsDefined(Z,\"Decorated classes transformed by TypeScript are expected to be within a variable declaration.\"),vt(fe)&&si(Z,on(fe,t.createExpressionStatement)),wt)if(C){let vc=r().createSetFunctionNameHelper((ft=vo??((Xe=se.emitNode)==null?void 0:Xe.classThis))!=null?ft:t.getInternalName(se),wt);Z.push(t.createExpressionStatement(vc))}else{let vc=r().createSetFunctionNameHelper(t.createThis(),wt);jo=t.updateClassExpression(jo,jo.modifiers,jo.name,jo.typeParameters,jo.heritageClauses,[t.createClassStaticBlockDeclaration(t.createBlock([t.createExpressionStatement(vc)])),...jo.members])}vt(Go)&&yt(Z,Go,(pr=(Yt=se.emitNode)==null?void 0:Yt.classThis)!=null?pr:t.getInternalName(se)),vo?Ws.push(t.createAssignment(vo,jo)):C&&((yr=se.emitNode)==null?void 0:yr.classThis)?Ws.push(t.createAssignment(se.emitNode.classThis,jo)):Ws.push(jo)}else{if(vo??(vo=ka()),Ka){jr();let vc=t.cloneNode(vo);vc.emitNode.autoGenerate.flags&=-9,Q[sc(se)]=vc}Ws.push(t.createAssignment(vo,jo)),si(Ws,fe),wt&&Ws.push(r().createSetFunctionNameHelper(vo,wt)),si(Ws,Qe(Go,vo)),Ws.push(t.cloneNode(vo))}else Ws.push(jo);return Ws.length>1&&(bp(jo,131072),Ws.forEach(mu)),t.inlineExpressions(Ws)}function oe(se){if(!C)return xn(se,ke,e)}function pe(se){let ht=!!(a_(se)&32);if(C||R){for(let Yt of se.members)if(xu(Yt))if(Ni(Yt))Ps(Yt,Yt.name,Fo);else{let pr=xi();KT(pr,Yt.name,{kind:\"untransformed\"})}if(C&&vt(kt(se))&&z(),Kn()){for(let Yt of se.members)if(Id(Yt)){let pr=t.getGeneratedPrivateNameForNode(Yt.name,void 0,\"_accessor_storage\");if(C||ht&&zc(Yt))Ps(Yt,pr,Qr);else{let yr=xi();KT(yr,pr,{kind:\"untransformed\"})}}}}let wt=On(se.members,Le,_l),K;vt(wt,Ec)||(K=Te(void 0,se));let Xe,ft;if(!C&&vt(fe)){let Yt=t.createExpressionStatement(t.inlineExpressions(fe));if(Yt.transformFlags&134234112){let yr=t.createTempVariable(i),ta=t.createArrowFunction(void 0,void 0,[],void 0,void 0,t.createBlock([Yt]));Xe=t.createAssignment(yr,ta),Yt=t.createExpressionStatement(t.createCallExpression(yr,void 0,[]))}let pr=t.createBlock([Yt]);ft=t.createClassStaticBlockDeclaration(pr),fe=void 0}if(K||ft){let Yt;Yt=Sn(Yt,K),Yt=Sn(Yt,ft),Yt=si(Yt,wt),wt=it(t.createNodeArray(Yt),se.members)}return{members:wt,prologue:Xe}}function z(){let{weakSetName:se}=xi().data;L.assert(se,\"weakSetName should be set in private identifier environment\"),Nr().push(t.createAssignment(se,t.createNewExpression(t.createIdentifier(\"WeakSet\"),void 0,[])))}function Te(se,ht){if(se=$e(se,ke,Ec),!U?.data||!(U.data.facts&16))return se;let wt=hp(ht),K=!!(wt&&ql(wt.expression).kind!==104),Xe=Sc(se?se.parameters:void 0,ke,e),ft=j(ht,se,K);return ft?se?(L.assert(Xe),t.updateConstructorDeclaration(se,void 0,Xe,ft)):mu(Ir(it(t.createConstructorDeclaration(void 0,Xe??[],ft),se||ht),se)):se}function j(se,ht,wt){var K,Xe;let ft=CK(se,!1,!1),Yt=ft;v||(Yt=Pr(Yt,$o=>!!$o.initializer||pi($o.name)||rm($o)));let pr=kt(se),yr=vt(Yt)||vt(pr);if(!ht&&!yr)return Qd(void 0,ke,e);l();let ta=!ht&&wt,Go=0,Ka=0,vo=-1,ka=[];(K=ht?.body)!=null&&K.statements&&(Ka=t.copyPrologue(ht.body.statements,ka,!1,ke),vo=bF(ht.body.statements,Ka),vo>=0?(Go=vo+1,ka=[...ka.slice(0,Ka),...On(ht.body.statements,ke,ca,Ka,Go-Ka),...ka.slice(Ka)]):Ka>=0&&(Go=Ka)),ta&&ka.push(t.createExpressionStatement(t.createCallExpression(t.createSuper(),void 0,[t.createSpreadElement(t.createIdentifier(\"arguments\"))])));let Hs=0;if(ht?.body){for(let $o=Go;$o<ht.body.statements.length;$o++){let jo=ht.body.statements[$o];if(Ad(ec(jo),ht))Hs++;else break}Hs>0&&(Go+=Hs)}let Uc=t.createThis();if(Kr(ka,pr,Uc),ht){let $o=Pr(ft,Ws=>Ad(ec(Ws),ht)),jo=Pr(Yt,Ws=>!Ad(ec(Ws),ht));yt(ka,$o,Uc),yt(ka,jo,Uc)}else yt(ka,Yt,Uc);if(ht&&si(ka,On(ht.body.statements,ke,ca,Go)),ka=t.mergeLexicalEnvironment(ka,o()),ka.length===0&&!ht)return;let Gu=ht?.body&&ht.body.statements.length>=ka.length&&(Xe=ht.body.multiLine)!=null?Xe:ka.length>0;return it(t.createBlock(it(t.createNodeArray(ka),ht?ht.body.statements:se.members),Gu),ht?ht.body:void 0)}function yt(se,ht,wt){for(let K of ht){if(Ca(K)&&!C)continue;let Xe=lt(K,wt);!Xe||se.push(Xe)}}function lt(se,ht){let wt=oc(se)?nt(se):Vt(se,ht);if(!wt)return;let K=t.createExpressionStatement(wt);Ir(K,se),bp(K,Ya(se)&3072),hl(K,se);let Xe=ec(se);return ha(Xe)?(Ho(K,Xe),eO(K)):Ho(K,yp(se)),W0(wt,void 0),d2(wt,void 0),rm(Xe)&&bp(K,3072),K}function Qe(se,ht){let wt=[];for(let K of se){let Xe=oc(K)?nt(K):Vt(K,ht);!Xe||(mu(Xe),Ir(Xe,K),bp(Xe,Ya(K)&3072),Ho(Xe,yp(K)),hl(Xe,K),wt.push(Xe))}return wt}function Vt(se,ht){var wt;let K=_e,Xe=Hn(se,ht);return Xe&&zc(se)&&((wt=U?.data)==null?void 0:wt.facts)&&(Ir(Xe,se),bp(Xe,4),Ho(Xe,pb(se.name)),re.set(ec(se),U)),_e=K,Xe}function Hn(se,ht){let wt=!v,K;yf(se,ce)&&(s_(se.name)||pi(se.name)?K=t.createStringLiteralFromNode(se.name):s_(se.name.expression)&&!Re(se.name.expression)?K=t.createStringLiteralFromNode(se.name.expression):K=t.getGeneratedNameForNode(se.name));let Xe=rm(se)?t.getGeneratedPrivateNameForNode(se.name):ts(se.name)&&!Ap(se.name.expression)?t.updateComputedPropertyName(se.name,t.getGeneratedNameForNode(se.name)):se.name;zc(se)&&(_e=se);let ft=K?yr=>Ce(yr,K):ke;if(pi(Xe)&&Ni(se)){let yr=hc(Xe);if(yr)return yr.kind===\"f\"?yr.isStatic?tMe(yr.variableName,$e(se.initializer,ft,ot)):nMe(ht,$e(se.initializer,ft,ot),yr.brandCheckIdentifier):void 0;L.fail(\"Undeclared private name for property declaration.\")}if((pi(Xe)||zc(se))&&!se.initializer)return;let Yt=ec(se);if(Mr(Yt,256))return;let pr=$e(se.initializer,ft,ot);if(Ad(Yt,Yt.parent)&&Re(Xe)){let yr=t.cloneNode(Xe);pr?(ud(pr)&&SO(pr.expression)&&mL(pr.expression.left,\"___runInitializers\")&&PS(pr.expression.right)&&Uf(pr.expression.right.expression)&&(pr=pr.expression.left),pr=t.inlineExpressions([pr,yr])):pr=yr,Jn(Xe,3168),Ho(yr,Yt.name),Jn(yr,3072)}else pr??(pr=t.createVoidZero());if(wt||pi(Xe)){let yr=jT(t,ht,Xe,Xe);return bp(yr,1024),t.createAssignment(yr,pr)}else{let yr=ts(Xe)?Xe.expression:Re(Xe)?t.createStringLiteral(Gi(Xe.escapedText)):Xe,ta=t.createPropertyDescriptor({value:pr,configurable:!0,writable:!0,enumerable:!0});return t.createObjectDefinePropertyCall(ht,yr,ta)}}function jr(){(ie&1)===0&&(ie|=1,e.enableSubstitution(79),Q=[])}function ei(){(ie&2)===0&&(ie|=2,e.enableSubstitution(108),e.enableEmitNotification(259),e.enableEmitNotification(215),e.enableEmitNotification(173),e.enableEmitNotification(174),e.enableEmitNotification(175),e.enableEmitNotification(171),e.enableEmitNotification(169),e.enableEmitNotification(164))}function Kr(se,ht,wt){if(!C||!vt(ht))return;let{weakSetName:K}=xi().data;L.assert(K,\"weakSetName should be set in private identifier environment\"),se.push(t.createExpressionStatement(rMe(wt,K)))}function Si(se){return br(se)?t.updatePropertyAccessExpression(se,t.createVoidZero(),se.name):t.updateElementAccessExpression(se,t.createVoidZero(),$e(se.argumentExpression,ke,ot))}function Ja(se,ht,wt){if(ts(se)){let K=L3(se),Xe=$e(se.expression,ke,ot),ft=i_(Xe),Yt=Ap(ft);if(!(!!K||Iu(ft)&&tc(ft.left))&&!Yt&&ht){let yr=t.getGeneratedNameForNode(se);return d.getNodeCheckFlags(se)&32768?f(yr):i(yr),wt&&(Xe=r().createPropKeyHelper(Xe)),t.createAssignment(yr,Xe)}return Yt||Re(ft)?void 0:Xe}}function Za(){U={previous:U,data:void 0}}function Fa(){U=U?.previous}function Hi(){var se;return L.assert(U),(se=U.data)!=null?se:U.data={facts:0,classConstructor:void 0,classThis:void 0,superClassReference:void 0}}function xi(){var se;return L.assert(U),(se=U.privateEnv)!=null?se:U.privateEnv=Y_e({className:void 0,weakSetName:void 0})}function Nr(){return fe??(fe=[])}function Fo(se,ht,wt,K,Xe,ft,Yt){Id(se)?kc(se,ht,wt,K,Xe,ft,Yt):Na(se)?Qr(se,ht,wt,K,Xe,ft,Yt):Nc(se)?Wi(se,ht,wt,K,Xe,ft,Yt):__(se)?yn(se,ht,wt,K,Xe,ft,Yt):Tf(se)&&Ki(se,ht,wt,K,Xe,ft,Yt)}function Qr(se,ht,wt,K,Xe,ft,Yt){var pr;if(Xe){let yr=L.checkDefined((pr=wt.classThis)!=null?pr:wt.classConstructor,\"classConstructor should be set in private identifier environment\"),ta=xc(ht);KT(K,ht,{kind:\"f\",isStatic:!0,brandCheckIdentifier:yr,variableName:ta,isValid:ft})}else{let yr=xc(ht);KT(K,ht,{kind:\"f\",isStatic:!1,brandCheckIdentifier:yr,isValid:ft}),Nr().push(t.createAssignment(yr,t.createNewExpression(t.createIdentifier(\"WeakMap\"),void 0,[])))}}function Wi(se,ht,wt,K,Xe,ft,Yt){var pr;let yr=xc(ht),ta=Xe?L.checkDefined((pr=wt.classThis)!=null?pr:wt.classConstructor,\"classConstructor should be set in private identifier environment\"):L.checkDefined(K.data.weakSetName,\"weakSetName should be set in private identifier environment\");KT(K,ht,{kind:\"m\",methodName:yr,brandCheckIdentifier:ta,isStatic:Xe,isValid:ft})}function yn(se,ht,wt,K,Xe,ft,Yt){var pr;let yr=xc(ht,\"_get\"),ta=Xe?L.checkDefined((pr=wt.classThis)!=null?pr:wt.classConstructor,\"classConstructor should be set in private identifier environment\"):L.checkDefined(K.data.weakSetName,\"weakSetName should be set in private identifier environment\");Yt?.kind===\"a\"&&Yt.isStatic===Xe&&!Yt.getterName?Yt.getterName=yr:KT(K,ht,{kind:\"a\",getterName:yr,setterName:void 0,brandCheckIdentifier:ta,isStatic:Xe,isValid:ft})}function Ki(se,ht,wt,K,Xe,ft,Yt){var pr;let yr=xc(ht,\"_set\"),ta=Xe?L.checkDefined((pr=wt.classThis)!=null?pr:wt.classConstructor,\"classConstructor should be set in private identifier environment\"):L.checkDefined(K.data.weakSetName,\"weakSetName should be set in private identifier environment\");Yt?.kind===\"a\"&&Yt.isStatic===Xe&&!Yt.setterName?Yt.setterName=yr:KT(K,ht,{kind:\"a\",getterName:void 0,setterName:yr,brandCheckIdentifier:ta,isStatic:Xe,isValid:ft})}function kc(se,ht,wt,K,Xe,ft,Yt){var pr;let yr=xc(ht,\"_get\"),ta=xc(ht,\"_set\"),Go=Xe?L.checkDefined((pr=wt.classThis)!=null?pr:wt.classConstructor,\"classConstructor should be set in private identifier environment\"):L.checkDefined(K.data.weakSetName,\"weakSetName should be set in private identifier environment\");KT(K,ht,{kind:\"a\",getterName:yr,setterName:ta,brandCheckIdentifier:Go,isStatic:Xe,isValid:ft})}function Ps(se,ht,wt){let K=Hi(),Xe=xi(),ft=kK(Xe,ht),Yt=zc(se),pr=!iMe(ht)&&ft===void 0;wt(se,ht,K,Xe,Yt,pr,ft)}function mc(se,ht,wt){let{className:K}=xi().data,Xe=K?{prefix:\"_\",node:K,suffix:\"_\"}:\"_\",ft=typeof se==\"object\"?t.getGeneratedNameForNode(se,24,Xe,wt):typeof se==\"string\"?t.createUniqueName(se,16,Xe,wt):t.createTempVariable(void 0,!0,Xe,wt);return d.getNodeCheckFlags(ht)&32768?f(ft):i(ft),ft}function xc(se,ht){var wt;let K=T6(se);return mc((wt=K?.substring(1))!=null?wt:se,se,ht)}function hc(se){let ht=$_e(U,se);return ht?.kind===\"untransformed\"?void 0:ht}function ro(se){let ht=t.getGeneratedNameForNode(se),wt=hc(se.name);if(!wt)return xn(se,ke,e);let K=se.expression;return(Jw(se)||Pu(se)||!Z0(se.expression))&&(K=t.createTempVariable(i,!0),Nr().push(t.createBinaryExpression(K,63,$e(se.expression,ke,ot)))),t.createAssignmentTargetWrapper(ht,Ge(wt,K,ht,63))}function aa(se){if(rs(se)||fu(se))return qs(se);if(SA(se))return ro(se);if(B&&Pu(se)&&_e&&U?.data){let{classConstructor:ht,superClassReference:wt,facts:K}=U.data;if(K&1)return Si(se);if(ht&&wt){let Xe=Vs(se)?$e(se.argumentExpression,ke,ot):Re(se.name)?t.createStringLiteralFromNode(se.name):void 0;if(Xe){let ft=t.createTempVariable(void 0);return t.createAssignmentTargetWrapper(ft,t.createReflectSetCall(wt,Xe,ft,ht))}}}return xn(se,ke,e)}function Co(se){if(yf(se,ce)){let ht=aa(se.left),wt=zt(se.left,se.right),K=$e(se.right,Xe=>Ce(Xe,wt),ot);return t.updateBinaryExpression(se,ht,se.operatorToken,K)}if(Iu(se,!0)){let ht=aa(se.left),wt=$e(se.right,ke,ot);return t.updateBinaryExpression(se,ht,se.operatorToken,wt)}return aa(se)}function gc(se){if(Ju(se.expression)){let ht=aa(se.expression);return t.updateSpreadElement(se,ht)}return xn(se,ke,e)}function Ll(se){return L.assertNode(se,Rw),Km(se)?gc(se):ol(se)?xn(se,ke,e):Co(se)}function md(se){let ht=$e(se.name,ke,Ys);if(Iu(se.initializer,!0)){let wt=Co(se.initializer);return t.updatePropertyAssignment(se,ht,wt)}if(Ju(se.initializer)){let wt=aa(se.initializer);return t.updatePropertyAssignment(se,ht,wt)}return xn(se,ke,e)}function Pc(se){if(yf(se,ce)){let ht=zt(se.name,se.objectAssignmentInitializer),wt=$e(se.objectAssignmentInitializer,K=>Ce(K,ht),ot);return t.updateShorthandPropertyAssignment(se,se.name,wt)}return xn(se,ke,e)}function bl(se){if(Ju(se.expression)){let ht=aa(se.expression);return t.updateSpreadAssignment(se,ht)}return xn(se,ke,e)}function ss(se){return L.assertNode(se,ww),jS(se)?bl(se):Sf(se)?Pc(se):yl(se)?md(se):xn(se,ke,e)}function qs(se){return fu(se)?t.updateArrayLiteralExpression(se,On(se.elements,Ll,ot)):t.updateObjectLiteralExpression(se,On(se.properties,ss,Og))}function Rs(se,ht,wt){let K=ec(ht),Xe=re.get(K);if(Xe){let ft=U,Yt=X;U=Xe,X=ge,ge=!oc(K)||!(a_(K)&32),Y(se,ht,wt),ge=X,X=Yt,U=ft;return}switch(ht.kind){case 215:if(xs(K)||Ya(ht)&524288)break;case 259:case 173:case 174:case 175:case 171:case 169:{let ft=U,Yt=X;U=void 0,X=ge,ge=!1,Y(se,ht,wt),ge=X,X=Yt,U=ft;return}case 164:{let ft=U,Yt=ge;U=U?.previous,ge=X,Y(se,ht,wt),ge=Yt,U=ft;return}}Y(se,ht,wt)}function As(se,ht){return ht=W(se,ht),se===1?jt(ht):ht}function jt(se){switch(se.kind){case 79:return Ql(se);case 108:return yc(se)}return se}function yc(se){if(ie&2&&U?.data){let{facts:ht,classConstructor:wt,classThis:K}=U.data;if(ht&1&&S)return t.createParenthesizedExpression(t.createVoidZero());let Xe=ge?K??wt:wt;if(Xe)return it(Ir(t.cloneNode(Xe),se),se)}return se}function Ql(se){return yu(se)||se}function yu(se){if(ie&1&&d.getNodeCheckFlags(se)&2097152){let ht=d.getReferencedValueDeclaration(se);if(ht){let wt=Q[ht.id];if(wt){let K=t.cloneNode(wt);return Ho(K,se),hl(K,se),K}}}}}function tMe(e,t){return D.createAssignment(e,D.createObjectLiteralExpression([D.createPropertyAssignment(\"value\",t||D.createVoidZero())]))}function nMe(e,t,r){return D.createCallExpression(D.createPropertyAccessExpression(r,\"set\"),void 0,[e,t||D.createVoidZero()])}function rMe(e,t){return D.createCallExpression(D.createPropertyAccessExpression(t,\"add\"),void 0,[e])}function iMe(e){return!nS(e)&&e.escapedText===\"#constructor\"}function aMe(e){return pi(e.left)&&e.operatorToken.kind===101}var oMe=gt({\"src/compiler/transformers/classFields.ts\"(){\"use strict\";fa()}});function npe(e){let{hoistVariableDeclaration:t}=e,r=e.getEmitResolver(),i=e.getCompilerOptions(),o=Do(i),s=Bf(i,\"strictNullChecks\"),l,f;return{serializeTypeNode:(Q,fe)=>d(Q,A,fe),serializeTypeOfNode:(Q,fe)=>d(Q,m,fe),serializeParameterTypesOfNode:(Q,fe,Z)=>d(Q,v,fe,Z),serializeReturnTypeOfNode:(Q,fe)=>d(Q,x,fe)};function d(Q,fe,Z,U){let re=l,le=f;l=Q.currentLexicalScope,f=Q.currentNameScope;let _e=U===void 0?fe(Z):fe(Z,U);return l=re,f=le,_e}function g(Q){let fe=r.getAllAccessorDeclarations(Q);return fe.setAccessor&&Pce(fe.setAccessor)||fe.getAccessor&&B_(fe.getAccessor)}function m(Q){switch(Q.kind){case 169:case 166:return A(Q.type);case 175:case 174:return A(g(Q));case 260:case 228:case 171:return D.createIdentifier(\"Function\");default:return D.createVoidZero()}}function v(Q,fe){let Z=Yr(Q)?Vm(Q):Ia(Q)&&Nf(Q.body)?Q:void 0,U=[];if(Z){let re=S(Z,fe),le=re.length;for(let _e=0;_e<le;_e++){let ge=re[_e];_e===0&&Re(ge.name)&&ge.name.escapedText===\"this\"||(ge.dotDotDotToken?U.push(A(SH(ge.type))):U.push(m(ge)))}}return D.createArrayLiteralExpression(U)}function S(Q,fe){if(fe&&Q.kind===174){let{setAccessor:Z}=DT(fe.members,Q);if(Z)return Z.parameters}return Q.parameters}function x(Q){return Ia(Q)&&Q.type?A(Q.type):XA(Q)?D.createIdentifier(\"Promise\"):D.createVoidZero()}function A(Q){if(Q===void 0)return D.createIdentifier(\"Object\");switch(Q=FH(Q),Q.kind){case 114:case 155:case 144:return D.createVoidZero();case 181:case 182:return D.createIdentifier(\"Function\");case 185:case 186:return D.createIdentifier(\"Array\");case 179:return Q.assertsModifier?D.createVoidZero():D.createIdentifier(\"Boolean\");case 134:return D.createIdentifier(\"Boolean\");case 200:case 152:return D.createIdentifier(\"String\");case 149:return D.createIdentifier(\"Object\");case 198:return w(Q.literal);case 148:return D.createIdentifier(\"Number\");case 160:return ie(\"BigInt\",7);case 153:return ie(\"Symbol\",2);case 180:return F(Q);case 190:return C(Q.types,!0);case 189:return C(Q.types,!1);case 191:return C([Q.trueType,Q.falseType],!1);case 195:if(Q.operator===146)return A(Q.type);break;case 183:case 196:case 197:case 184:case 131:case 157:case 194:case 202:break;case 315:case 316:case 320:case 321:case 322:break;case 317:case 318:case 319:return A(Q.type);default:return L.failBadSyntaxKind(Q)}return D.createIdentifier(\"Object\")}function w(Q){switch(Q.kind){case 10:case 14:return D.createIdentifier(\"String\");case 221:{let fe=Q.operand;switch(fe.kind){case 8:case 9:return w(fe);default:return L.failBadSyntaxKind(fe)}}case 8:return D.createIdentifier(\"Number\");case 9:return ie(\"BigInt\",7);case 110:case 95:return D.createIdentifier(\"Boolean\");case 104:return D.createVoidZero();default:return L.failBadSyntaxKind(Q)}}function C(Q,fe){let Z;for(let U of Q){if(U=FH(U),U.kind===144){if(fe)return D.createVoidZero();continue}if(U.kind===157){if(!fe)return D.createIdentifier(\"Object\");continue}if(U.kind===131)return D.createIdentifier(\"Object\");if(!s&&(mb(U)&&U.literal.kind===104||U.kind===155))continue;let re=A(U);if(Re(re)&&re.escapedText===\"Object\")return re;if(Z){if(!P(Z,re))return D.createIdentifier(\"Object\")}else Z=re}return Z??D.createVoidZero()}function P(Q,fe){return tc(Q)?tc(fe):Re(Q)?Re(fe)&&Q.escapedText===fe.escapedText:br(Q)?br(fe)&&P(Q.expression,fe.expression)&&P(Q.name,fe.name):PS(Q)?PS(fe)&&Uf(Q.expression)&&Q.expression.text===\"0\"&&Uf(fe.expression)&&fe.expression.text===\"0\":yo(Q)?yo(fe)&&Q.text===fe.text:v2(Q)?v2(fe)&&P(Q.expression,fe.expression):ud(Q)?ud(fe)&&P(Q.expression,fe.expression):E2(Q)?E2(fe)&&P(Q.condition,fe.condition)&&P(Q.whenTrue,fe.whenTrue)&&P(Q.whenFalse,fe.whenFalse):ar(Q)?ar(fe)&&Q.operatorToken.kind===fe.operatorToken.kind&&P(Q.left,fe.left)&&P(Q.right,fe.right):!1}function F(Q){let fe=r.getTypeReferenceSerializationKind(Q.typeName,f??l);switch(fe){case 0:if(jn(Q,re=>re.parent&&h2(re.parent)&&(re.parent.trueType===re||re.parent.falseType===re)))return D.createIdentifier(\"Object\");let Z=q(Q.typeName),U=D.createTempVariable(t);return D.createConditionalExpression(D.createTypeCheck(D.createAssignment(U,Z),\"function\"),void 0,U,void 0,D.createIdentifier(\"Object\"));case 1:return W(Q.typeName);case 2:return D.createVoidZero();case 4:return ie(\"BigInt\",7);case 6:return D.createIdentifier(\"Boolean\");case 3:return D.createIdentifier(\"Number\");case 5:return D.createIdentifier(\"String\");case 7:return D.createIdentifier(\"Array\");case 8:return ie(\"Symbol\",2);case 10:return D.createIdentifier(\"Function\");case 9:return D.createIdentifier(\"Promise\");case 11:return D.createIdentifier(\"Object\");default:return L.assertNever(fe)}}function B(Q,fe){return D.createLogicalAnd(D.createStrictInequality(D.createTypeOfExpression(Q),D.createStringLiteral(\"undefined\")),fe)}function q(Q){if(Q.kind===79){let U=W(Q);return B(U,U)}if(Q.left.kind===79)return B(W(Q.left),W(Q));let fe=q(Q.left),Z=D.createTempVariable(t);return D.createLogicalAnd(D.createLogicalAnd(fe.left,D.createStrictInequality(D.createAssignment(Z,fe.right),D.createVoidZero())),D.createPropertyAccessExpression(Z,Q.right))}function W(Q){switch(Q.kind){case 79:let fe=go(it(fm.cloneNode(Q),Q),Q.parent);return fe.original=void 0,go(fe,ea(l)),fe;case 163:return Y(Q)}}function Y(Q){return D.createPropertyAccessExpression(W(Q.left),Q.right)}function R(Q){return D.createConditionalExpression(D.createTypeCheck(D.createIdentifier(Q),\"function\"),void 0,D.createIdentifier(Q),void 0,D.createIdentifier(\"Object\"))}function ie(Q,fe){return o<fe?R(Q):D.createIdentifier(Q)}}var sMe=gt({\"src/compiler/transformers/typeSerializer.ts\"(){\"use strict\";fa()}});function rpe(e){let{factory:t,getEmitHelperFactory:r,hoistVariableDeclaration:i}=e,o=e.getEmitResolver(),s=e.getCompilerOptions(),l=Do(s),f=e.onSubstituteNode;e.onSubstituteNode=Ye;let d;return g_(e,g);function g(We){let qe=xn(We,v,e);return Bg(qe,e.readEmitHelpers()),qe}function m(We){return du(We)?void 0:We}function v(We){if(!(We.transformFlags&33554432))return We;switch(We.kind){case 167:return;case 260:return S(We);case 228:return B(We);case 173:return q(We);case 171:return Y(We);case 175:return ie(We);case 174:return R(We);case 169:return Q(We);case 166:return fe(We);default:return xn(We,v,e)}}function S(We){if(!(O0(!0,We)||DI(!0,We)))return xn(We,v,e);let qe=O0(!0,We)?F(We,We.name):P(We,We.name);return qe.length>1&&(qe.push(t.createEndOfDeclarationMarker(We)),Jn(qe[0],Ya(qe[0])|8388608)),zp(qe)}function x(We){return!!(We.transformFlags&536870912)}function A(We){return vt(We,x)}function w(We){for(let qe of We.members){if(!WS(qe))continue;let zt=TF(qe,We,!0);if(vt(zt?.decorators,x)||vt(zt?.parameters,A))return!0}return!1}function C(We,qe){let zt=[];return re(zt,We,!1),re(zt,We,!0),w(We)&&(qe=it(t.createNodeArray([...qe,t.createClassStaticBlockDeclaration(t.createBlock(zt,!0))]),qe),zt=void 0),{decorationStatements:zt,members:qe}}function P(We,qe){let zt=On(We.modifiers,m,Ha),Qt=On(We.heritageClauses,v,dd),tn=On(We.members,v,_l),kn=[];({members:tn,decorationStatements:kn}=C(We,tn));let _n=t.updateClassDeclaration(We,zt,qe,void 0,Qt,tn);return si([_n],kn)}function F(We,qe){let zt=yp(We),Qt=Be(We),tn=l<=2?t.getInternalName(We,!1,!0):t.getLocalName(We,!1,!0),kn=On(We.heritageClauses,v,dd),_n=On(We.members,v,_l),Gt=[];({members:_n,decorationStatements:Gt}=C(We,_n));let $n=t.createClassExpression(void 0,qe&&tc(qe)?void 0:qe,void 0,kn,_n);Ir($n,We),it($n,zt);let ui=t.createVariableStatement(void 0,t.createVariableDeclarationList([t.createVariableDeclaration(tn,void 0,void 0,Qt?t.createAssignment(Qt,$n):$n)],1));Ir(ui,We),it(ui,zt),hl(ui,We);let Ni=[ui];return si(Ni,Gt),Ve(Ni,We),Ni}function B(We){return t.updateClassExpression(We,On(We.modifiers,m,Ha),We.name,void 0,On(We.heritageClauses,v,dd),On(We.members,v,_l))}function q(We){return t.updateConstructorDeclaration(We,On(We.modifiers,m,Ha),On(We.parameters,v,ha),$e(We.body,v,Va))}function W(We,qe){return We!==qe&&(hl(We,qe),Ho(We,yp(qe))),We}function Y(We){return W(t.updateMethodDeclaration(We,On(We.modifiers,m,Ha),We.asteriskToken,L.checkDefined($e(We.name,v,Ys)),void 0,void 0,On(We.parameters,v,ha),void 0,$e(We.body,v,Va)),We)}function R(We){return W(t.updateGetAccessorDeclaration(We,On(We.modifiers,m,Ha),L.checkDefined($e(We.name,v,Ys)),On(We.parameters,v,ha),void 0,$e(We.body,v,Va)),We)}function ie(We){return W(t.updateSetAccessorDeclaration(We,On(We.modifiers,m,Ha),L.checkDefined($e(We.name,v,Ys)),On(We.parameters,v,ha),$e(We.body,v,Va)),We)}function Q(We){if(!(We.flags&16777216||Mr(We,2)))return W(t.updatePropertyDeclaration(We,On(We.modifiers,m,Ha),L.checkDefined($e(We.name,v,Ys)),void 0,void 0,$e(We.initializer,v,ot)),We)}function fe(We){let qe=t.updateParameterDeclaration(We,hde(t,We.modifiers),We.dotDotDotToken,L.checkDefined($e(We.name,v,Mm)),void 0,void 0,$e(We.initializer,v,ot));return qe!==We&&(hl(qe,We),it(qe,yp(We)),Ho(qe,yp(We)),Jn(qe.name,64)),qe}function Z(We){return mL(We.expression,\"___metadata\")}function U(We){if(!We)return;let{false:qe,true:zt}=yae(We.decorators,Z),Qt=[];return si(Qt,on(qe,ke)),si(Qt,Uo(We.parameters,Pe)),si(Qt,on(zt,ke)),Qt}function re(We,qe,zt){si(We,on(ge(qe,zt),Qt=>t.createExpressionStatement(Qt)))}function le(We,qe,zt){return qw(!0,We,zt)&&qe===Ca(We)}function _e(We,qe){return Pr(We.members,zt=>le(zt,qe,We))}function ge(We,qe){let zt=_e(We,qe),Qt;for(let tn of zt)Qt=Sn(Qt,X(We,tn));return Qt}function X(We,qe){let zt=TF(qe,We,!0),Qt=U(zt);if(!Qt)return;let tn=Le(We,qe),kn=Ce(qe,!Mr(qe,2)),_n=l>0?Na(qe)&&!rm(qe)?t.createVoidZero():t.createNull():void 0,Gt=r().createDecorateHelper(Qt,tn,kn,_n);return Jn(Gt,3072),Ho(Gt,yp(qe)),Gt}function Ve(We,qe){let zt=we(qe);zt&&We.push(Ir(t.createExpressionStatement(zt),qe))}function we(We){let qe=LK(We),zt=U(qe);if(!zt)return;let Qt=d&&d[sc(We)],tn=l<=2?t.getInternalName(We,!1,!0):t.getLocalName(We,!1,!0),kn=r().createDecorateHelper(zt,tn),_n=t.createAssignment(tn,Qt?t.createAssignment(Qt,kn):kn);return Jn(_n,3072),Ho(_n,yp(We)),_n}function ke(We){return L.checkDefined($e(We.expression,v,ot))}function Pe(We,qe){let zt;if(We){zt=[];for(let Qt of We){let tn=r().createParamHelper(ke(Qt),qe);it(tn,Qt.expression),Jn(tn,3072),zt.push(tn)}}return zt}function Ce(We,qe){let zt=We.name;return pi(zt)?t.createIdentifier(\"\"):ts(zt)?qe&&!Ap(zt.expression)?t.getGeneratedNameForNode(zt):zt.expression:Re(zt)?t.createStringLiteral(vr(zt)):t.cloneNode(zt)}function Ie(){d||(e.enableSubstitution(79),d=[])}function Be(We){if(o.getNodeCheckFlags(We)&1048576){Ie();let qe=t.createUniqueName(We.name&&!tc(We.name)?vr(We.name):\"default\");return d[sc(We)]=qe,i(qe),qe}}function Ne(We){return t.createPropertyAccessExpression(t.getDeclarationName(We),\"prototype\")}function Le(We,qe){return Ca(qe)?t.getDeclarationName(We):Ne(We)}function Ye(We,qe){return qe=f(We,qe),We===1?_t(qe):qe}function _t(We){switch(We.kind){case 79:return ct(We)}return We}function ct(We){var qe;return(qe=Rt(We))!=null?qe:We}function Rt(We){if(d&&o.getNodeCheckFlags(We)&2097152){let qe=o.getReferencedValueDeclaration(We);if(qe){let zt=d[qe.id];if(zt){let Qt=t.cloneNode(zt);return Ho(Qt,We),hl(Qt,We),Qt}}}}}var cMe=gt({\"src/compiler/transformers/legacyDecorators.ts\"(){\"use strict\";fa()}});function ipe(e){let{factory:t,getEmitHelperFactory:r,startLexicalEnvironment:i,endLexicalEnvironment:o,hoistVariableDeclaration:s}=e,l,f,d,g,m,v;return g_(e,S);function S(ae){l=void 0,v=!1;let rt=xn(ae,R,e);return Bg(rt,e.readEmitHelpers()),v&&(xS(rt,32),v=!1),rt}function x(){switch(f=void 0,d=void 0,g=void 0,l?.kind){case\"class\":f=l.classInfo;break;case\"class-element\":f=l.next.classInfo,d=l.classThis,g=l.classSuper;break;case\"name\":let ae=l.next.next.next;ae?.kind===\"class-element\"&&(f=ae.next.classInfo,d=ae.classThis,g=ae.classSuper);break}}function A(ae){l={kind:\"class\",next:l,classInfo:ae,savedPendingExpressions:m},m=void 0,x()}function w(){L.assert(l?.kind===\"class\",\"Incorrect value for top.kind.\",()=>`Expected top.kind to be 'class' but got '${l?.kind}' instead.`),m=l.savedPendingExpressions,l=l.next,x()}function C(ae){var rt,Ot;L.assert(l?.kind===\"class\",\"Incorrect value for top.kind.\",()=>`Expected top.kind to be 'class' but got '${l?.kind}' instead.`),l={kind:\"class-element\",next:l},(oc(ae)||Na(ae)&&zc(ae))&&(l.classThis=(rt=l.next.classInfo)==null?void 0:rt.classThis,l.classSuper=(Ot=l.next.classInfo)==null?void 0:Ot.classSuper),x()}function P(){var ae;L.assert(l?.kind===\"class-element\",\"Incorrect value for top.kind.\",()=>`Expected top.kind to be 'class-element' but got '${l?.kind}' instead.`),L.assert(((ae=l.next)==null?void 0:ae.kind)===\"class\",\"Incorrect value for top.next.kind.\",()=>{var rt;return`Expected top.next.kind to be 'class' but got '${(rt=l.next)==null?void 0:rt.kind}' instead.`}),l=l.next,x()}function F(){L.assert(l?.kind===\"class-element\",\"Incorrect value for top.kind.\",()=>`Expected top.kind to be 'class-element' but got '${l?.kind}' instead.`),l={kind:\"name\",next:l},x()}function B(){L.assert(l?.kind===\"name\",\"Incorrect value for top.kind.\",()=>`Expected top.kind to be 'name' but got '${l?.kind}' instead.`),l=l.next,x()}function q(){l?.kind===\"other\"?(L.assert(!m),l.depth++):(l={kind:\"other\",next:l,depth:0,savedPendingExpressions:m},m=void 0,x())}function W(){L.assert(l?.kind===\"other\",\"Incorrect value for top.kind.\",()=>`Expected top.kind to be 'other' but got '${l?.kind}' instead.`),l.depth>0?(L.assert(!m),l.depth--):(m=l.savedPendingExpressions,l=l.next,x())}function Y(ae){return!!(ae.transformFlags&33554432)||!!d&&!!(ae.transformFlags&16384)||!!d&&!!g&&!!(ae.transformFlags&134217728)}function R(ae){if(!Y(ae))return ae;switch(ae.kind){case 167:return L.fail(\"Use `modifierVisitor` instead.\");case 260:return ke(ae);case 228:return Pe(ae,void 0);case 173:case 169:case 172:return L.fail(\"Not supported outside of a class. Use 'classElementVisitor' instead.\");case 166:return kn(ae);case 223:return ui(ae,!1);case 299:return Dt(ae);case 257:return pn(ae);case 205:return An(ae);case 274:return at(ae);case 108:return We(ae);case 245:return Gt(ae);case 241:return $n(ae);case 357:return Pi(ae,!1);case 214:return Tt(ae,!1,void 0);case 356:return ve(ae,!1,void 0);case 210:return qe(ae);case 212:return zt(ae);case 221:case 222:return Ni(ae,!1);case 208:return Qt(ae);case 209:return tn(ae);case 164:return nn(ae);case 171:case 175:case 174:case 215:case 259:{q();let rt=xn(ae,ie,e);return W(),rt}default:return xn(ae,ie,e)}}function ie(ae){switch(ae.kind){case 167:return;default:return R(ae)}}function Q(ae){switch(ae.kind){case 167:return;default:return ae}}function fe(ae){switch(ae.kind){case 173:return Ie(ae);case 171:return Le(ae);case 174:return Ye(ae);case 175:return _t(ae);case 169:return Rt(ae);case 172:return ct(ae);default:return R(ae)}}function Z(ae,rt){switch(ae.kind){case 356:return ve(ae,!1,rt);case 214:return Tt(ae,!1,rt);case 228:return Pe(ae,rt);default:return R(ae)}}function U(ae){switch(ae.kind){case 221:case 222:return Ni(ae,!0);case 223:return ui(ae,!0);case 357:return Pi(ae,!0);case 214:return Tt(ae,!0,void 0);default:return R(ae)}}function re(ae){let rt=ae.name&&Re(ae.name)&&!tc(ae.name)?vr(ae.name):ae.name&&pi(ae.name)&&!tc(ae.name)?vr(ae.name).slice(1):ae.name&&yo(ae.name)&&r_(ae.name.text,99)?ae.name.text:Yr(ae)?\"class\":\"member\";return zy(ae)&&(rt=`get_${rt}`),Ng(ae)&&(rt=`set_${rt}`),ae.name&&pi(ae.name)&&(rt=`private_${rt}`),Ca(ae)&&(rt=`static_${rt}`),\"_\"+rt}function le(ae,rt){return t.createUniqueName(`${re(ae)}_${rt}`,24)}function _e(ae,rt){return t.createVariableStatement(void 0,t.createVariableDeclarationList([t.createVariableDeclaration(ae,void 0,void 0,rt)],1))}function ge(ae){let rt,Ot,Ke=!1,oe=!1,pe=!1;for(let z of ae.members)if(cse(z)&&qw(!1,z,ae)&&(zc(z)?Ot??(Ot=t.createUniqueName(\"_staticExtraInitializers\",16)):rt??(rt=t.createUniqueName(\"_instanceExtraInitializers\",16))),oc(z)?Ke=!0:Na(z)&&(zc(z)?Ke||(Ke=!!z.initializer||vf(z)):oe||(oe=!_H(z))),(xu(z)||Id(z))&&zc(z)&&(pe=!0),Ot&&rt&&Ke&&oe&&pe)break;return{class:ae,instanceExtraInitializersName:rt,staticExtraInitializersName:Ot,hasStaticInitializers:Ke,hasNonAmbientInstanceFields:oe,hasStaticPrivateClassElements:pe}}function X(ae){for(let rt of ae.members)if((oc(rt)||Na(rt)&&zc(rt))&&rt.transformFlags&134217728)return!0;return!1}function Ve(ae,rt){var Ot,Ke,oe,pe,z;i();let Te=(Ot=ae.name)!=null?Ot:t.getGeneratedNameForNode(ae),j=ge(ae),yt=[],lt,Qe,Vt,Hn,jr=!1,ei=ce(LK(ae));if(ei&&(j.classDecoratorsName=t.createUniqueName(\"_classDecorators\",16),j.classDescriptorName=t.createUniqueName(\"_classDescriptor\",16),j.classExtraInitializersName=t.createUniqueName(\"_classExtraInitializers\",16),j.classThis=t.createUniqueName(\"_classThis\",16),yt.push(_e(j.classDecoratorsName,t.createArrayLiteralExpression(ei)),_e(j.classDescriptorName),_e(j.classExtraInitializersName,t.createArrayLiteralExpression()),_e(j.classThis)),j.hasStaticPrivateClassElements&&(jr=!0,v=!0)),ei&&X(ae)){let xi=hR(ae.heritageClauses,94),Nr=xi&&Sl(xi.types),Fo=Nr&&$e(Nr.expression,R,ot);if(Fo){j.classSuper=t.createUniqueName(\"_classSuper\",16);let Qr=ql(Fo),Wi=_u(Qr)&&!Qr.name||ms(Qr)&&!Qr.name||xs(Qr)?t.createComma(t.createNumericLiteral(0),Fo):Fo;yt.push(_e(j.classSuper,Wi));let yn=t.updateExpressionWithTypeArguments(Nr,j.classSuper,void 0),Ki=t.updateHeritageClause(xi,[yn]);Hn=t.createNodeArray([Ki])}}else Hn=On(ae.heritageClauses,R,dd);let Kr=(Ke=j.classThis)!=null?Ke:t.createThis();if(!((oe=ec(ae,Yr))!=null&&oe.name)&&(ei||!yo(rt)||!CH(rt))){let xi=r().createSetFunctionNameHelper(t.createThis(),rt);lt=Sn(lt,t.createExpressionStatement(xi))}A(j);let Ja=On(ae.members,fe,_l);if(m){let xi;for(let Nr of m){Nr=$e(Nr,function Qr(Wi){if(!(Wi.transformFlags&16384))return Wi;switch(Wi.kind){case 108:return xi||(xi=t.createUniqueName(\"_outerThis\",16),yt.unshift(_e(xi,t.createThis()))),xi;default:return xn(Wi,Qr,e)}},ot);let Fo=t.createExpressionStatement(Nr);lt=Sn(lt,Fo)}m=void 0}if(w(),j.instanceExtraInitializersName&&!Vm(ae)){let xi=Ce(ae,j);if(xi){let Nr=hp(ae),Fo=!!(Nr&&ql(Nr.expression).kind!==104),Qr=[];if(Fo){let yn=t.createSpreadElement(t.createIdentifier(\"arguments\")),Ki=t.createCallExpression(t.createSuper(),void 0,[yn]);Qr.push(t.createExpressionStatement(Ki))}si(Qr,xi);let Wi=t.createBlock(Qr,!0);Vt=t.createConstructorDeclaration(void 0,[],Wi)}}if(j.staticExtraInitializersName&&yt.push(_e(j.staticExtraInitializersName,t.createArrayLiteralExpression())),j.instanceExtraInitializersName&&yt.push(_e(j.instanceExtraInitializersName,t.createArrayLiteralExpression())),j.memberInfos&&Ld(j.memberInfos,(xi,Nr)=>{Ca(Nr)&&(yt.push(_e(xi.memberDecoratorsName)),xi.memberInitializersName&&yt.push(_e(xi.memberInitializersName,t.createArrayLiteralExpression())),xi.memberDescriptorName&&yt.push(_e(xi.memberDescriptorName)))}),j.memberInfos&&Ld(j.memberInfos,(xi,Nr)=>{Ca(Nr)||(yt.push(_e(xi.memberDecoratorsName)),xi.memberInitializersName&&yt.push(_e(xi.memberInitializersName,t.createArrayLiteralExpression())),xi.memberDescriptorName&&yt.push(_e(xi.memberDescriptorName)))}),lt=si(lt,j.staticNonFieldDecorationStatements),lt=si(lt,j.nonStaticNonFieldDecorationStatements),lt=si(lt,j.staticFieldDecorationStatements),lt=si(lt,j.nonStaticFieldDecorationStatements),j.classDescriptorName&&j.classDecoratorsName&&j.classExtraInitializersName&&j.classThis){lt??(lt=[]);let xi=t.createPropertyAssignment(\"value\",t.createThis()),Nr=t.createObjectLiteralExpression([xi]),Fo=t.createAssignment(j.classDescriptorName,Nr),Qr=t.createPropertyAccessExpression(t.createThis(),\"name\"),Wi=r().createESDecorateHelper(t.createNull(),Fo,j.classDecoratorsName,{kind:\"class\",name:Qr},t.createNull(),j.classExtraInitializersName),yn=t.createExpressionStatement(Wi);Ho(yn,$y(ae)),lt.push(yn);let Ki=t.createPropertyAccessExpression(j.classDescriptorName,\"value\"),kc=t.createAssignment(j.classThis,Ki),Ps=t.createAssignment(Te,kc);lt.push(t.createExpressionStatement(Ps))}if(j.staticExtraInitializersName){let xi=r().createRunInitializersHelper(Kr,j.staticExtraInitializersName),Nr=t.createExpressionStatement(xi);Ho(Nr,(pe=ae.name)!=null?pe:$y(ae)),lt=Sn(lt,Nr)}if(j.classExtraInitializersName){let xi=r().createRunInitializersHelper(Kr,j.classExtraInitializersName),Nr=t.createExpressionStatement(xi);Ho(Nr,(z=ae.name)!=null?z:$y(ae)),Qe=Sn(Qe,Nr)}lt&&Qe&&!j.hasStaticInitializers&&(si(lt,Qe),Qe=void 0);let Za=Ja;if(lt){let xi=t.createBlock(lt,!0),Nr=t.createClassStaticBlockDeclaration(xi);jr&&tO(Nr,32),Za=[Nr,...Za]}if(Vt&&(Za=[...Za,Vt]),Qe){let xi=t.createBlock(Qe,!0),Nr=t.createClassStaticBlockDeclaration(xi);Za=[...Za,Nr]}Za!==Ja&&(Ja=it(t.createNodeArray(Za),Ja));let Fa=o(),Hi;if(ei){Hi=t.createClassExpression(void 0,void 0,void 0,Hn,Ja);let xi=t.createVariableDeclaration(Te,void 0,void 0,Hi),Nr=t.createVariableDeclarationList([xi]),Fo=j.classThis?t.createAssignment(Te,j.classThis):Te;yt.push(t.createVariableStatement(void 0,Nr),t.createReturnStatement(Fo))}else Hi=t.createClassExpression(void 0,ae.name,void 0,Hn,Ja),yt.push(t.createReturnStatement(Hi));if(jr){xS(Hi,32);for(let xi of Hi.members)(xu(xi)||Id(xi))&&zc(xi)&&xS(xi,32)}return Ir(Hi,ae),Lu(Hi).classThis=j.classThis,t.createImmediatelyInvokedArrowFunction(t.mergeLexicalEnvironment(yt,Fa))}function we(ae){return O0(!1,ae)||DI(!1,ae)}function ke(ae){var rt;if(we(ae))if(Mr(ae,1)&&Mr(ae,1024)){let Ot=(rt=ec(ae,Yr))!=null?rt:ae,Ke=Ot.name?t.createStringLiteralFromNode(Ot.name):t.createStringLiteral(\"default\"),oe=Ve(ae,Ke),pe=t.createExportDefault(oe);return Ir(pe,ae),hl(pe,sm(ae)),Ho(pe,$y(ae)),pe}else{L.assertIsDefined(ae.name,\"A class declaration that is not a default export must have a name.\");let Ot=Ve(ae,t.createStringLiteralFromNode(ae.name)),Ke=On(ae.modifiers,Q,Ha),oe=t.createVariableDeclaration(ae.name,void 0,void 0,Ot),pe=t.createVariableDeclarationList([oe],1),z=t.createVariableStatement(Ke,pe);return Ir(z,ae),hl(z,sm(ae)),z}else{let Ot=On(ae.modifiers,Q,Ha),Ke=On(ae.heritageClauses,R,dd);A(void 0);let oe=On(ae.members,fe,_l);return w(),t.updateClassDeclaration(ae,Ot,ae.name,void 0,Ke,oe)}}function Pe(ae,rt){if(we(ae)){let Ot=ae.name?t.createStringLiteralFromNode(ae.name):rt??t.createStringLiteral(\"\"),Ke=Ve(ae,Ot);return Ir(Ke,ae),Ke}else{let Ot=On(ae.modifiers,Q,Ha),Ke=On(ae.heritageClauses,R,dd);A(void 0);let oe=On(ae.members,fe,_l);return w(),t.updateClassExpression(ae,Ot,ae.name,void 0,Ke,oe)}}function Ce(ae,rt){if(rt.instanceExtraInitializersName&&!rt.hasNonAmbientInstanceFields){let Ot=[];return Ot.push(t.createExpressionStatement(r().createRunInitializersHelper(t.createThis(),rt.instanceExtraInitializersName))),Ot}}function Ie(ae){C(ae);let rt=On(ae.modifiers,Q,Ha),Ot=On(ae.parameters,R,ha),Ke;if(ae.body&&f){let oe=Ce(f.class,f);if(oe){let pe=[],z=t.copyPrologue(ae.body.statements,pe,!1,R),Te=bF(ae.body.statements,z),j=Te>=0?Te+1:void 0;si(pe,On(ae.body.statements,R,ca,z,j?j-z:void 0)),si(pe,oe),si(pe,On(ae.body.statements,R,ca,j)),Ke=t.createBlock(pe,!0),Ir(Ke,ae.body),it(Ke,ae.body)}}return Ke??(Ke=$e(ae.body,R,Va)),P(),t.updateConstructorDeclaration(ae,rt,Ot,Ke)}function Be(ae,rt){return ae!==rt&&(hl(ae,rt),Ho(ae,$y(rt))),ae}function Ne(ae,rt,Ot,Ke){var oe,pe,z,Te,j,yt,lt,Qe;let Vt,Hn,jr,ei,Kr;if(!Ot){let Za=On(ae.modifiers,Q,Ha);return F(),rt?{referencedName:Vt,name:Hn}=gr(ae.name):Hn=pt(ae.name),B(),{modifiers:Za,referencedName:Vt,name:Hn,initializersName:jr,descriptorName:Kr,thisArg:ei}}let Si=ce(TF(ae,Ot.class,!1)),Ja=On(ae.modifiers,Q,Ha);if(Si){let Za=le(ae,\"decorators\"),Fa=t.createArrayLiteralExpression(Si),Hi=t.createAssignment(Za,Fa),xi={memberDecoratorsName:Za};(oe=Ot.memberInfos)!=null||(Ot.memberInfos=new Map),Ot.memberInfos.set(ae,xi),m??(m=[]),m.push(Hi);let Nr=AA(ae)||Id(ae)?Ca(ae)?(pe=Ot.staticNonFieldDecorationStatements)!=null?pe:Ot.staticNonFieldDecorationStatements=[]:(z=Ot.nonStaticNonFieldDecorationStatements)!=null?z:Ot.nonStaticNonFieldDecorationStatements=[]:Na(ae)&&!Id(ae)?Ca(ae)?(Te=Ot.staticFieldDecorationStatements)!=null?Te:Ot.staticFieldDecorationStatements=[]:(j=Ot.nonStaticFieldDecorationStatements)!=null?j:Ot.nonStaticFieldDecorationStatements=[]:L.fail(),Fo=__(ae)?\"getter\":Tf(ae)?\"setter\":Nc(ae)?\"method\":Id(ae)?\"accessor\":Na(ae)?\"field\":L.fail(),Qr;if(Re(ae.name)||pi(ae.name))Qr={computed:!1,name:ae.name};else if(s_(ae.name))Qr={computed:!0,name:t.createStringLiteralFromNode(ae.name)};else{let Ki=ae.name.expression;s_(Ki)&&!Re(Ki)?Qr={computed:!0,name:t.createStringLiteralFromNode(Ki)}:(F(),{referencedName:Vt,name:Hn}=gr(ae.name),Qr={computed:!0,name:Vt},B())}let Wi={kind:Fo,name:Qr,static:Ca(ae),private:pi(ae.name),access:{get:Na(ae)||__(ae)||Nc(ae),set:Na(ae)||Tf(ae)}},yn=Ca(ae)?(yt=Ot.staticExtraInitializersName)!=null?yt:Ot.staticExtraInitializersName=t.createUniqueName(\"_staticExtraInitializers\",16):(lt=Ot.instanceExtraInitializersName)!=null?lt:Ot.instanceExtraInitializersName=t.createUniqueName(\"_instanceExtraInitializers\",16);if(AA(ae)){let Ki;xu(ae)&&Ke&&(Ki=Ke(ae,On(Ja,mc=>zr(mc,hL),Ha)),xi.memberDescriptorName=Kr=le(ae,\"descriptor\"),Ki=t.createAssignment(Kr,Ki));let kc=r().createESDecorateHelper(t.createThis(),Ki??t.createNull(),Za,Wi,t.createNull(),yn),Ps=t.createExpressionStatement(kc);Ho(Ps,$y(ae)),Nr.push(Ps)}else if(Na(ae)){jr=(Qe=xi.memberInitializersName)!=null?Qe:xi.memberInitializersName=le(ae,\"initializers\"),Ca(ae)&&(ei=Ot.classThis);let Ki;xu(ae)&&rm(ae)&&Ke&&(Ki=Ke(ae,void 0),xi.memberDescriptorName=Kr=le(ae,\"descriptor\"),Ki=t.createAssignment(Kr,Ki));let kc=r().createESDecorateHelper(Id(ae)?t.createThis():t.createNull(),Ki??t.createNull(),Za,Wi,jr,yn),Ps=t.createExpressionStatement(kc);Ho(Ps,$y(ae)),Nr.push(Ps)}}return Hn===void 0&&(F(),rt?{referencedName:Vt,name:Hn}=gr(ae.name):Hn=pt(ae.name),B()),!vt(Ja)&&(Nc(ae)||Na(ae))&&Jn(Hn,1024),{modifiers:Ja,referencedName:Vt,name:Hn,initializersName:jr,descriptorName:Kr,thisArg:ei}}function Le(ae){C(ae);let{modifiers:rt,name:Ot,descriptorName:Ke}=Ne(ae,!1,f,G);if(Ke)return P(),Be(kt(rt,Ot,Ke),ae);{let oe=On(ae.parameters,R,ha),pe=$e(ae.body,R,Va);return P(),Be(t.updateMethodDeclaration(ae,rt,ae.asteriskToken,Ot,void 0,void 0,oe,void 0,pe),ae)}}function Ye(ae){C(ae);let{modifiers:rt,name:Ot,descriptorName:Ke}=Ne(ae,!1,f,Oe);if(Ke)return P(),Be(Kt(rt,Ot,Ke),ae);{let oe=On(ae.parameters,R,ha),pe=$e(ae.body,R,Va);return P(),Be(t.updateGetAccessorDeclaration(ae,rt,Ot,oe,void 0,pe),ae)}}function _t(ae){C(ae);let{modifiers:rt,name:Ot,descriptorName:Ke}=Ne(ae,!1,f,je);if(Ke)return P(),Be(ln(rt,Ot,Ke),ae);{let oe=On(ae.parameters,R,ha),pe=$e(ae.body,R,Va);return P(),Be(t.updateSetAccessorDeclaration(ae,rt,Ot,oe,pe),ae)}}function ct(ae){C(ae),f&&(f.hasStaticInitializers=!0);let rt=xn(ae,R,e);return P(),rt}function Rt(ae){C(ae),L.assert(!_H(ae),\"Not yet implemented.\");let rt=yf(ae,_n),{modifiers:Ot,name:Ke,referencedName:oe,initializersName:pe,descriptorName:z,thisArg:Te}=Ne(ae,rt,f,rm(ae)?Ge:void 0);i();let j=oe?$e(ae.initializer,lt=>Z(lt,oe),ot):$e(ae.initializer,R,ot);pe&&(j=r().createRunInitializersHelper(Te??t.createThis(),pe,j??t.createVoidZero())),!Ca(ae)&&f?.instanceExtraInitializersName&&!f?.hasInjectedInstanceInitializers&&(f.hasInjectedInstanceInitializers=!0,j??(j=t.createVoidZero()),j=t.createParenthesizedExpression(t.createComma(r().createRunInitializersHelper(t.createThis(),f.instanceExtraInitializersName),j))),Ca(ae)&&f&&j&&(f.hasStaticInitializers=!0);let yt=o();if(vt(yt)&&(j=t.createImmediatelyInvokedArrowFunction([...yt,t.createReturnStatement(j)])),P(),rm(ae)&&z){let lt=sm(ae),Qe=pb(ae),Vt=ae.name,Hn=Vt,jr=Vt;if(ts(Vt)&&!Ap(Vt.expression)){let Za=L3(Vt);if(Za)Hn=t.updateComputedPropertyName(Vt,$e(Vt.expression,R,ot)),jr=t.updateComputedPropertyName(Vt,Za.left);else{let Fa=t.createTempVariable(s);Ho(Fa,Vt.expression);let Hi=$e(Vt.expression,R,ot),xi=t.createAssignment(Fa,Hi);Ho(xi,Vt.expression),Hn=t.updateComputedPropertyName(Vt,xi),jr=t.updateComputedPropertyName(Vt,Fa)}}let ei=On(Ot,Za=>Za.kind!==127?Za:void 0,Ha),Kr=sJ(t,ae,ei,j);Ir(Kr,ae),Jn(Kr,3072),Ho(Kr,Qe),Ho(Kr.name,ae.name);let Si=Kt(ei,Hn,z);Ir(Si,ae),hl(Si,lt),Ho(Si,Qe);let Ja=ln(ei,jr,z);return Ir(Ja,ae),Jn(Ja,3072),Ho(Ja,Qe),[Kr,Si,Ja]}return Be(t.updatePropertyDeclaration(ae,Ot,Ke,void 0,void 0,j),ae)}function We(ae){return d??ae}function qe(ae){if(Pu(ae.expression)&&d){let rt=$e(ae.expression,R,ot),Ot=On(ae.arguments,R,ot),Ke=t.createFunctionCallCall(rt,d,Ot);return Ir(Ke,ae),it(Ke,ae),Ke}return xn(ae,R,e)}function zt(ae){if(Pu(ae.tag)&&d){let rt=$e(ae.tag,R,ot),Ot=t.createFunctionBindCall(rt,d,[]);Ir(Ot,ae),it(Ot,ae);let Ke=$e(ae.template,R,CA);return t.updateTaggedTemplateExpression(ae,Ot,void 0,Ke)}return xn(ae,R,e)}function Qt(ae){if(Pu(ae)&&Re(ae.name)&&d&&g){let rt=t.createStringLiteralFromNode(ae.name),Ot=t.createReflectGetCall(g,rt,d);return Ir(Ot,ae.expression),it(Ot,ae.expression),Ot}return xn(ae,R,e)}function tn(ae){if(Pu(ae)&&d&&g){let rt=$e(ae.argumentExpression,R,ot),Ot=t.createReflectGetCall(g,rt,d);return Ir(Ot,ae.expression),it(Ot,ae.expression),Ot}return xn(ae,R,e)}function kn(ae){let rt;if(yf(ae,_n)){let Ot=ir(ae.name,ae.initializer),Ke=$e(ae.name,R,Mm),oe=$e(ae.initializer,pe=>Z(pe,Ot),ot);rt=t.updateParameterDeclaration(ae,void 0,void 0,Ke,void 0,void 0,oe)}else rt=t.updateParameterDeclaration(ae,void 0,ae.dotDotDotToken,$e(ae.name,R,Mm),void 0,void 0,$e(ae.initializer,R,ot));return rt!==ae&&(hl(rt,ae),it(rt,yp(ae)),Ho(rt,yp(ae)),Jn(rt.name,64)),rt}function _n(ae){return _u(ae)&&!ae.name&&we(ae)}function Gt(ae){return t.updateForStatement(ae,$e(ae.initializer,U,pp),$e(ae.condition,R,ot),$e(ae.incrementor,U,ot),Vf(ae.statement,R,e))}function $n(ae){return xn(ae,U,e)}function ui(ae,rt){if(Fg(ae)){let Ot=Se(ae.left),Ke=$e(ae.right,R,ot);return t.updateBinaryExpression(ae,Ot,ae.operatorToken,Ke)}if(Iu(ae)){if(yf(ae,_n)){let Ot=ir(ae.left,ae.right),Ke=$e(ae.left,R,ot),oe=$e(ae.right,pe=>Z(pe,Ot),ot);return t.updateBinaryExpression(ae,Ke,ae.operatorToken,oe)}if(Pu(ae.left)&&d&&g){let Ot=Vs(ae.left)?$e(ae.left.argumentExpression,R,ot):Re(ae.left.name)?t.createStringLiteralFromNode(ae.left.name):void 0;if(Ot){let Ke=$e(ae.right,R,ot);if(sN(ae.operatorToken.kind)){let pe=Ot;Ap(Ot)||(pe=t.createTempVariable(s),Ot=t.createAssignment(pe,Ot));let z=t.createReflectGetCall(g,pe,d);Ir(z,ae.left),it(z,ae.left),Ke=t.createBinaryExpression(z,zL(ae.operatorToken.kind),Ke),it(Ke,ae)}let oe=rt?void 0:t.createTempVariable(s);return oe&&(Ke=t.createAssignment(oe,Ke),it(oe,ae)),Ke=t.createReflectSetCall(g,Ot,Ke,d),Ir(Ke,ae),it(Ke,ae),oe&&(Ke=t.createComma(Ke,oe),it(Ke,ae)),Ke}}}if(ae.operatorToken.kind===27){let Ot=$e(ae.left,U,ot),Ke=$e(ae.right,rt?U:R,ot);return t.updateBinaryExpression(ae,Ot,ae.operatorToken,Ke)}return xn(ae,R,e)}function Ni(ae,rt){if(ae.operator===45||ae.operator===46){let Ot=vs(ae.operand);if(Pu(Ot)&&d&&g){let Ke=Vs(Ot)?$e(Ot.argumentExpression,R,ot):Re(Ot.name)?t.createStringLiteralFromNode(Ot.name):void 0;if(Ke){let oe=Ke;Ap(Ke)||(oe=t.createTempVariable(s),Ke=t.createAssignment(oe,Ke));let pe=t.createReflectGetCall(g,oe,d);Ir(pe,ae),it(pe,ae);let z=rt?void 0:t.createTempVariable(s);return pe=b3(t,ae,pe,s,z),pe=t.createReflectSetCall(g,Ke,pe,d),Ir(pe,ae),it(pe,ae),z&&(pe=t.createComma(pe,z),it(pe,ae)),pe}}}return xn(ae,R,e)}function Pi(ae,rt){let Ot=rt?oN(ae.elements,U):oN(ae.elements,R,U);return t.updateCommaListExpression(ae,Ot)}function gr(ae){if(s_(ae)||pi(ae)){let pe=t.createStringLiteralFromNode(ae),z=$e(ae,R,Ys);return{referencedName:pe,name:z}}if(s_(ae.expression)&&!Re(ae.expression)){let pe=t.createStringLiteralFromNode(ae.expression),z=$e(ae,R,Ys);return{referencedName:pe,name:z}}let rt=t.getGeneratedNameForNode(ae);s(rt);let Ot=r().createPropKeyHelper($e(ae.expression,R,ot)),Ke=t.createAssignment(rt,Ot),oe=t.updateComputedPropertyName(ae,nt(Ke));return{referencedName:rt,name:oe}}function pt(ae){return ts(ae)?nn(ae):$e(ae,R,Ys)}function nn(ae){let rt=$e(ae.expression,R,ot);return Ap(rt)||(rt=nt(rt)),t.updateComputedPropertyName(ae,rt)}function Dt(ae){if(yf(ae,_n)){let{referencedName:rt,name:Ot}=gr(ae.name),Ke=$e(ae.initializer,oe=>Z(oe,rt),ot);return t.updatePropertyAssignment(ae,Ot,Ke)}return xn(ae,R,e)}function pn(ae){if(yf(ae,_n)){let rt=ir(ae.name,ae.initializer),Ot=$e(ae.name,R,Mm),Ke=$e(ae.initializer,oe=>Z(oe,rt),ot);return t.updateVariableDeclaration(ae,Ot,void 0,void 0,Ke)}return xn(ae,R,e)}function An(ae){if(yf(ae,_n)){let rt=ir(ae.name,ae.initializer),Ot=$e(ae.propertyName,R,Ys),Ke=$e(ae.name,R,Mm),oe=$e(ae.initializer,pe=>Z(pe,rt),ot);return t.updateBindingElement(ae,void 0,Ot,Ke,oe)}return xn(ae,R,e)}function Kn(ae){if(rs(ae)||fu(ae))return Se(ae);if(Pu(ae)&&d&&g){let rt=Vs(ae)?$e(ae.argumentExpression,R,ot):Re(ae.name)?t.createStringLiteralFromNode(ae.name):void 0;if(rt){let Ot=t.createTempVariable(void 0),Ke=t.createAssignmentTargetWrapper(Ot,t.createReflectSetCall(g,rt,Ot,d));return Ir(Ke,ae),it(Ke,ae),Ke}}return xn(ae,R,e)}function hi(ae){if(Iu(ae,!0)){let rt=Kn(ae.left),Ot;if(yf(ae,_n)){let Ke=ir(ae.left,ae.right);Ot=$e(ae.right,oe=>Z(oe,Ke),ot)}else Ot=$e(ae.right,R,ot);return t.updateBinaryExpression(ae,rt,ae.operatorToken,Ot)}else return Kn(ae)}function ri(ae){if(Ju(ae.expression)){let rt=Kn(ae.expression);return t.updateSpreadElement(ae,rt)}return xn(ae,R,e)}function gn(ae){return L.assertNode(ae,Rw),Km(ae)?ri(ae):ol(ae)?xn(ae,R,e):hi(ae)}function Ht(ae){let rt=$e(ae.name,R,Ys);if(Iu(ae.initializer,!0)){let Ot=hi(ae.initializer);return t.updatePropertyAssignment(ae,rt,Ot)}if(Ju(ae.initializer)){let Ot=Kn(ae.initializer);return t.updatePropertyAssignment(ae,rt,Ot)}return xn(ae,R,e)}function En(ae){if(yf(ae,_n)){let rt=ir(ae.name,ae.objectAssignmentInitializer),Ot=$e(ae.name,R,Re),Ke=$e(ae.objectAssignmentInitializer,oe=>Z(oe,rt),ot);return t.updateShorthandPropertyAssignment(ae,Ot,Ke)}return xn(ae,R,e)}function dr(ae){if(Ju(ae.expression)){let rt=Kn(ae.expression);return t.updateSpreadAssignment(ae,rt)}return xn(ae,R,e)}function Cr(ae){return L.assertNode(ae,ww),jS(ae)?dr(ae):Sf(ae)?En(ae):yl(ae)?Ht(ae):xn(ae,R,e)}function Se(ae){if(fu(ae)){let rt=On(ae.elements,gn,ot);return t.updateArrayLiteralExpression(ae,rt)}else{let rt=On(ae.properties,Cr,Og);return t.updateObjectLiteralExpression(ae,rt)}}function at(ae){if(yf(ae,_n)){let rt=t.createStringLiteral(ae.isExportEquals?\"\":\"default\"),Ot=On(ae.modifiers,Q,Ha),Ke=$e(ae.expression,oe=>Z(oe,rt),ot);return t.updateExportAssignment(ae,Ot,Ke)}return xn(ae,R,e)}function Tt(ae,rt,Ot){let Ke=rt?U:Ot?pe=>Z(pe,Ot):R,oe=$e(ae.expression,Ke,ot);return t.updateParenthesizedExpression(ae,oe)}function ve(ae,rt,Ot){let Ke=rt?U:Ot?pe=>Z(pe,Ot):R,oe=$e(ae.expression,Ke,ot);return t.updatePartiallyEmittedExpression(ae,oe)}function nt(ae){return vt(m)&&(ud(ae)?(m.push(ae.expression),ae=t.updateParenthesizedExpression(ae,t.inlineExpressions(m))):(m.push(ae),ae=t.inlineExpressions(m)),m=void 0),ae}function ce(ae){if(!ae)return;let rt=[];return si(rt,on(ae.decorators,$)),rt}function $(ae){let rt=$e(ae.expression,R,ot);return Jn(rt,3072),rt}function ue(ae,rt,Ot,Ke,oe,pe,z){let Te=t.createFunctionExpression(Ot,Ke,void 0,void 0,pe,void 0,z??t.createBlock([]));Ir(Te,ae),Ho(Te,$y(ae)),Jn(Te,3072);let j=oe===\"get\"||oe===\"set\"?oe:void 0,yt=t.createStringLiteralFromNode(rt,void 0),lt=r().createSetFunctionNameHelper(Te,yt,j),Qe=t.createPropertyAssignment(t.createIdentifier(oe),lt);return Ir(Qe,ae),Ho(Qe,$y(ae)),Jn(Qe,3072),Qe}function G(ae,rt){return t.createObjectLiteralExpression([ue(ae,ae.name,rt,ae.asteriskToken,\"value\",On(ae.parameters,R,ha),$e(ae.body,R,Va))])}function Oe(ae,rt){return t.createObjectLiteralExpression([ue(ae,ae.name,rt,void 0,\"get\",[],$e(ae.body,R,Va))])}function je(ae,rt){return t.createObjectLiteralExpression([ue(ae,ae.name,rt,void 0,\"set\",On(ae.parameters,R,ha),$e(ae.body,R,Va))])}function Ge(ae,rt){return t.createObjectLiteralExpression([ue(ae,ae.name,rt,void 0,\"get\",[],t.createBlock([t.createReturnStatement(t.createPropertyAccessExpression(t.createThis(),t.getGeneratedPrivateNameForNode(ae.name)))])),ue(ae,ae.name,rt,void 0,\"set\",[t.createParameterDeclaration(void 0,void 0,\"value\")],t.createBlock([t.createExpressionStatement(t.createAssignment(t.createPropertyAccessExpression(t.createThis(),t.getGeneratedPrivateNameForNode(ae.name)),t.createIdentifier(\"value\")))]))])}function kt(ae,rt,Ot){return ae=On(ae,Ke=>kS(Ke)?Ke:void 0,Ha),t.createGetAccessorDeclaration(ae,rt,[],void 0,t.createBlock([t.createReturnStatement(t.createPropertyAccessExpression(Ot,t.createIdentifier(\"value\")))]))}function Kt(ae,rt,Ot){return ae=On(ae,Ke=>kS(Ke)?Ke:void 0,Ha),t.createGetAccessorDeclaration(ae,rt,[],void 0,t.createBlock([t.createReturnStatement(t.createFunctionCallCall(t.createPropertyAccessExpression(Ot,t.createIdentifier(\"get\")),t.createThis(),[]))]))}function ln(ae,rt,Ot){return ae=On(ae,Ke=>kS(Ke)?Ke:void 0,Ha),t.createSetAccessorDeclaration(ae,rt,[t.createParameterDeclaration(void 0,void 0,\"value\")],t.createBlock([t.createReturnStatement(t.createFunctionCallCall(t.createPropertyAccessExpression(Ot,t.createIdentifier(\"set\")),t.createThis(),[t.createIdentifier(\"value\")]))]))}function ir(ae,rt){let Ot=ec(rt,Yr);return Ot&&!Ot.name&&Mr(Ot,1024)?t.createStringLiteral(\"default\"):t.createStringLiteralFromNode(ae)}}var lMe=gt({\"src/compiler/transformers/esDecorators.ts\"(){\"use strict\";fa()}});function ape(e){let{factory:t,getEmitHelperFactory:r,resumeLexicalEnvironment:i,endLexicalEnvironment:o,hoistVariableDeclaration:s}=e,l=e.getEmitResolver(),f=e.getCompilerOptions(),d=Do(f),g,m=0,v,S,x,A=[],w=0,C=e.onEmitNode,P=e.onSubstituteNode;return e.onEmitNode=kn,e.onSubstituteNode=_n,g_(e,F);function F(pt){if(pt.isDeclarationFile)return pt;B(1,!1),B(2,!fH(pt,f));let nn=xn(pt,Q,e);return Bg(nn,e.readEmitHelpers()),nn}function B(pt,nn){w=nn?w|pt:w&~pt}function q(pt){return(w&pt)!==0}function W(){return!q(1)}function Y(){return q(2)}function R(pt,nn,Dt){let pn=pt&~w;if(pn){B(pn,!0);let An=nn(Dt);return B(pn,!1),An}return nn(Dt)}function ie(pt){return xn(pt,Q,e)}function Q(pt){if((pt.transformFlags&256)===0)return pt;switch(pt.kind){case 132:return;case 220:return ge(pt);case 171:return R(3,Ve,pt);case 259:return R(3,Pe,pt);case 215:return R(3,Ce,pt);case 216:return R(1,Ie,pt);case 208:return S&&br(pt)&&pt.expression.kind===106&&S.add(pt.name.escapedText),xn(pt,Q,e);case 209:return S&&pt.expression.kind===106&&(x=!0),xn(pt,Q,e);case 174:return R(3,we,pt);case 175:return R(3,ke,pt);case 173:return R(3,X,pt);case 260:case 228:return R(3,ie,pt);default:return xn(pt,Q,e)}}function fe(pt){if(vce(pt))switch(pt.kind){case 240:return U(pt);case 245:return _e(pt);case 246:return re(pt);case 247:return le(pt);case 295:return Z(pt);case 238:case 252:case 266:case 292:case 293:case 255:case 243:case 244:case 242:case 251:case 253:return xn(pt,fe,e);default:return L.assertNever(pt,\"Unhandled node.\")}return Q(pt)}function Z(pt){let nn=new Set;Be(pt.variableDeclaration,nn);let Dt;if(nn.forEach((pn,An)=>{v.has(An)&&(Dt||(Dt=new Set(v)),Dt.delete(An))}),Dt){let pn=v;v=Dt;let An=xn(pt,fe,e);return v=pn,An}else return xn(pt,fe,e)}function U(pt){if(Ne(pt.declarationList)){let nn=Le(pt.declarationList,!1);return nn?t.createExpressionStatement(nn):void 0}return xn(pt,Q,e)}function re(pt){return t.updateForInStatement(pt,Ne(pt.initializer)?Le(pt.initializer,!0):L.checkDefined($e(pt.initializer,Q,pp)),L.checkDefined($e(pt.expression,Q,ot)),Vf(pt.statement,fe,e))}function le(pt){return t.updateForOfStatement(pt,$e(pt.awaitModifier,Q,Dz),Ne(pt.initializer)?Le(pt.initializer,!0):L.checkDefined($e(pt.initializer,Q,pp)),L.checkDefined($e(pt.expression,Q,ot)),Vf(pt.statement,fe,e))}function _e(pt){let nn=pt.initializer;return t.updateForStatement(pt,Ne(nn)?Le(nn,!1):$e(pt.initializer,Q,pp),$e(pt.condition,Q,ot),$e(pt.incrementor,Q,ot),Vf(pt.statement,fe,e))}function ge(pt){return W()?xn(pt,Q,e):Ir(it(t.createYieldExpression(void 0,$e(pt.expression,Q,ot)),pt),pt)}function X(pt){return t.updateConstructorDeclaration(pt,On(pt.modifiers,Q,Ha),Sc(pt.parameters,Q,e),We(pt))}function Ve(pt){return t.updateMethodDeclaration(pt,On(pt.modifiers,Q,Ns),pt.asteriskToken,pt.name,void 0,void 0,Sc(pt.parameters,Q,e),void 0,pl(pt)&2?qe(pt):We(pt))}function we(pt){return t.updateGetAccessorDeclaration(pt,On(pt.modifiers,Q,Ns),pt.name,Sc(pt.parameters,Q,e),void 0,We(pt))}function ke(pt){return t.updateSetAccessorDeclaration(pt,On(pt.modifiers,Q,Ns),pt.name,Sc(pt.parameters,Q,e),We(pt))}function Pe(pt){return t.updateFunctionDeclaration(pt,On(pt.modifiers,Q,Ns),pt.asteriskToken,pt.name,void 0,Sc(pt.parameters,Q,e),void 0,pl(pt)&2?qe(pt):Qd(pt.body,Q,e))}function Ce(pt){return t.updateFunctionExpression(pt,On(pt.modifiers,Q,Ha),pt.asteriskToken,pt.name,void 0,Sc(pt.parameters,Q,e),void 0,pl(pt)&2?qe(pt):Qd(pt.body,Q,e))}function Ie(pt){return t.updateArrowFunction(pt,On(pt.modifiers,Q,Ha),void 0,Sc(pt.parameters,Q,e),void 0,pt.equalsGreaterThanToken,pl(pt)&2?qe(pt):Qd(pt.body,Q,e))}function Be({name:pt},nn){if(Re(pt))nn.add(pt.escapedText);else for(let Dt of pt.elements)ol(Dt)||Be(Dt,nn)}function Ne(pt){return!!pt&&pu(pt)&&!(pt.flags&3)&&pt.declarations.some(Rt)}function Le(pt,nn){Ye(pt);let Dt=XI(pt);return Dt.length===0?nn?$e(t.converters.convertToAssignmentElementTarget(pt.declarations[0].name),Q,ot):void 0:t.inlineExpressions(on(Dt,ct))}function Ye(pt){mn(pt.declarations,_t)}function _t({name:pt}){if(Re(pt))s(pt);else for(let nn of pt.elements)ol(nn)||_t(nn)}function ct(pt){let nn=Ho(t.createAssignment(t.converters.convertToAssignmentElementTarget(pt.name),pt.initializer),pt);return L.checkDefined($e(nn,Q,ot))}function Rt({name:pt}){if(Re(pt))return v.has(pt.escapedText);for(let nn of pt.elements)if(!ol(nn)&&Rt(nn))return!0;return!1}function We(pt){L.assertIsDefined(pt.body);let nn=S,Dt=x;S=new Set,x=!1;let pn=Qd(pt.body,Q,e),An=ec(pt,Ds);if(d>=2&&l.getNodeCheckFlags(pt)&384&&(pl(An)&3)!==3){if(tn(),S.size){let hi=SF(t,l,pt,S);A[zo(hi)]=!0;let ri=pn.statements.slice();em(ri,[hi]),pn=t.updateBlock(pn,ri)}x&&(l.getNodeCheckFlags(pt)&256?AS(pn,cO):l.getNodeCheckFlags(pt)&128&&AS(pn,sO))}return S=nn,x=Dt,pn}function qe(pt){i();let Dt=ec(pt,Ia).type,pn=d<2?Qt(Dt):void 0,An=pt.kind===216,Kn=(l.getNodeCheckFlags(pt)&512)!==0,hi=v;v=new Set;for(let En of pt.parameters)Be(En,v);let ri=S,gn=x;An||(S=new Set,x=!1);let Ht;if(An){let En=r().createAwaiterHelper(Y(),Kn,pn,zt(pt.body)),dr=o();if(vt(dr)){let Cr=t.converters.convertToFunctionBlock(En);Ht=t.updateBlock(Cr,it(t.createNodeArray(Qi(dr,Cr.statements)),Cr.statements))}else Ht=En}else{let En=[],dr=t.copyPrologue(pt.body.statements,En,!1,Q);En.push(t.createReturnStatement(r().createAwaiterHelper(Y(),Kn,pn,zt(pt.body,dr)))),em(En,o());let Cr=d>=2&&l.getNodeCheckFlags(pt)&384;if(Cr&&(tn(),S.size)){let at=SF(t,l,pt,S);A[zo(at)]=!0,em(En,[at])}let Se=t.createBlock(En,!0);it(Se,pt.body),Cr&&x&&(l.getNodeCheckFlags(pt)&256?AS(Se,cO):l.getNodeCheckFlags(pt)&128&&AS(Se,sO)),Ht=Se}return v=hi,An||(S=ri,x=gn),Ht}function zt(pt,nn){return Va(pt)?t.updateBlock(pt,On(pt.statements,fe,ca,nn)):t.converters.convertToFunctionBlock(L.checkDefined($e(pt,fe,u6)))}function Qt(pt){let nn=pt&&Kw(pt);if(nn&&Cd(nn)){let Dt=l.getTypeReferenceSerializationKind(nn);if(Dt===1||Dt===0)return nn}}function tn(){(g&1)===0&&(g|=1,e.enableSubstitution(210),e.enableSubstitution(208),e.enableSubstitution(209),e.enableEmitNotification(260),e.enableEmitNotification(171),e.enableEmitNotification(174),e.enableEmitNotification(175),e.enableEmitNotification(173),e.enableEmitNotification(240))}function kn(pt,nn,Dt){if(g&1&&Pi(nn)){let pn=l.getNodeCheckFlags(nn)&384;if(pn!==m){let An=m;m=pn,C(pt,nn,Dt),m=An;return}}else if(g&&A[zo(nn)]){let pn=m;m=0,C(pt,nn,Dt),m=pn;return}C(pt,nn,Dt)}function _n(pt,nn){return nn=P(pt,nn),pt===1&&m?Gt(nn):nn}function Gt(pt){switch(pt.kind){case 208:return $n(pt);case 209:return ui(pt);case 210:return Ni(pt)}return pt}function $n(pt){return pt.expression.kind===106?it(t.createPropertyAccessExpression(t.createUniqueName(\"_super\",48),pt.name),pt):pt}function ui(pt){return pt.expression.kind===106?gr(pt.argumentExpression,pt):pt}function Ni(pt){let nn=pt.expression;if(Pu(nn)){let Dt=br(nn)?$n(nn):ui(nn);return t.createCallExpression(t.createPropertyAccessExpression(Dt,\"call\"),void 0,[t.createThis(),...pt.arguments])}return pt}function Pi(pt){let nn=pt.kind;return nn===260||nn===173||nn===171||nn===174||nn===175}function gr(pt,nn){return m&256?it(t.createPropertyAccessExpression(t.createCallExpression(t.createUniqueName(\"_superIndex\",48),void 0,[pt]),\"value\"),nn):it(t.createCallExpression(t.createUniqueName(\"_superIndex\",48),void 0,[pt]),nn)}}function SF(e,t,r,i){let o=(t.getNodeCheckFlags(r)&256)!==0,s=[];return i.forEach((l,f)=>{let d=Gi(f),g=[];g.push(e.createPropertyAssignment(\"get\",e.createArrowFunction(void 0,void 0,[],void 0,void 0,Jn(e.createPropertyAccessExpression(Jn(e.createSuper(),8),d),8)))),o&&g.push(e.createPropertyAssignment(\"set\",e.createArrowFunction(void 0,void 0,[e.createParameterDeclaration(void 0,void 0,\"v\",void 0,void 0,void 0)],void 0,void 0,e.createAssignment(Jn(e.createPropertyAccessExpression(Jn(e.createSuper(),8),d),8),e.createIdentifier(\"v\"))))),s.push(e.createPropertyAssignment(d,e.createObjectLiteralExpression(g)))}),e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(e.createUniqueName(\"_super\",48),void 0,void 0,e.createCallExpression(e.createPropertyAccessExpression(e.createIdentifier(\"Object\"),\"create\"),void 0,[e.createNull(),e.createObjectLiteralExpression(s,!0)]))],2))}var uMe=gt({\"src/compiler/transformers/es2017.ts\"(){\"use strict\";fa()}});function ope(e){let{factory:t,getEmitHelperFactory:r,resumeLexicalEnvironment:i,endLexicalEnvironment:o,hoistVariableDeclaration:s}=e,l=e.getEmitResolver(),f=e.getCompilerOptions(),d=Do(f),g=e.onEmitNode;e.onEmitNode=En;let m=e.onSubstituteNode;e.onSubstituteNode=dr;let v=!1,S,x,A,w=0,C=0,P,F,B,q,W=[];return g_(e,fe);function Y(ce,$){return C!==(C&~ce|$)}function R(ce,$){let ue=C;return C=(C&~ce|$)&3,ue}function ie(ce){C=ce}function Q(ce){F=Sn(F,t.createVariableDeclaration(ce))}function fe(ce){if(ce.isDeclarationFile)return ce;P=ce;let $=Ne(ce);return Bg($,e.readEmitHelpers()),P=void 0,F=void 0,$}function Z(ce){return ge(ce,!1)}function U(ce){return ge(ce,!0)}function re(ce){if(ce.kind!==132)return ce}function le(ce,$,ue,G){if(Y(ue,G)){let Oe=R(ue,G),je=ce($);return ie(Oe),je}return ce($)}function _e(ce){return xn(ce,Z,e)}function ge(ce,$){if((ce.transformFlags&128)===0)return ce;switch(ce.kind){case 220:return X(ce);case 226:return Ve(ce);case 250:return we(ce);case 253:return ke(ce);case 207:return Ce(ce);case 223:return Ye(ce,$);case 357:return _t(ce,$);case 295:return ct(ce);case 240:return Rt(ce);case 257:return We(ce);case 243:case 244:case 246:return le(_e,ce,0,2);case 247:return tn(ce,void 0);case 245:return le(zt,ce,0,2);case 219:return Qt(ce);case 173:return le(gr,ce,2,1);case 171:return le(Dt,ce,2,1);case 174:return le(pt,ce,2,1);case 175:return le(nn,ce,2,1);case 259:return le(pn,ce,2,1);case 215:return le(Kn,ce,2,1);case 216:return le(An,ce,2,0);case 166:return Ni(ce);case 241:return Ie(ce);case 214:return Be(ce,$);case 212:return Le(ce);case 208:return B&&br(ce)&&ce.expression.kind===106&&B.add(ce.name.escapedText),xn(ce,Z,e);case 209:return B&&ce.expression.kind===106&&(q=!0),xn(ce,Z,e);case 260:case 228:return le(_e,ce,2,1);default:return xn(ce,Z,e)}}function X(ce){return x&2&&x&1?Ir(it(t.createYieldExpression(void 0,r().createAwaitHelper($e(ce.expression,Z,ot))),ce),ce):xn(ce,Z,e)}function Ve(ce){if(x&2&&x&1){if(ce.asteriskToken){let $=$e(L.checkDefined(ce.expression),Z,ot);return Ir(it(t.createYieldExpression(void 0,r().createAwaitHelper(t.updateYieldExpression(ce,ce.asteriskToken,it(r().createAsyncDelegatorHelper(it(r().createAsyncValuesHelper($),$)),$)))),ce),ce)}return Ir(it(t.createYieldExpression(void 0,Gt(ce.expression?$e(ce.expression,Z,ot):t.createVoidZero())),ce),ce)}return xn(ce,Z,e)}function we(ce){return x&2&&x&1?t.updateReturnStatement(ce,Gt(ce.expression?$e(ce.expression,Z,ot):t.createVoidZero())):xn(ce,Z,e)}function ke(ce){if(x&2){let $=xH(ce);return $.kind===247&&$.awaitModifier?tn($,ce):t.restoreEnclosingLabel($e($,Z,ca,t.liftToBlock),ce)}return xn(ce,Z,e)}function Pe(ce){let $,ue=[];for(let G of ce)if(G.kind===301){$&&(ue.push(t.createObjectLiteralExpression($)),$=void 0);let Oe=G.expression;ue.push($e(Oe,Z,ot))}else $=Sn($,G.kind===299?t.createPropertyAssignment(G.name,$e(G.initializer,Z,ot)):$e(G,Z,Og));return $&&ue.push(t.createObjectLiteralExpression($)),ue}function Ce(ce){if(ce.transformFlags&65536){let $=Pe(ce.properties);$.length&&$[0].kind!==207&&$.unshift(t.createObjectLiteralExpression());let ue=$[0];if($.length>1){for(let G=1;G<$.length;G++)ue=r().createAssignHelper([ue,$[G]]);return ue}else return r().createAssignHelper($)}return xn(ce,Z,e)}function Ie(ce){return xn(ce,U,e)}function Be(ce,$){return xn(ce,$?U:Z,e)}function Ne(ce){let $=R(2,fH(ce,f)?0:1);v=!1;let ue=xn(ce,Z,e),G=Qi(ue.statements,F&&[t.createVariableStatement(void 0,t.createVariableDeclarationList(F))]),Oe=t.updateSourceFile(ue,it(t.createNodeArray(G),ce.statements));return ie($),Oe}function Le(ce){return OK(e,ce,Z,P,Q,0)}function Ye(ce,$){return Fg(ce)&&LO(ce.left)?qT(ce,Z,e,1,!$):ce.operatorToken.kind===27?t.updateBinaryExpression(ce,$e(ce.left,U,ot),ce.operatorToken,$e(ce.right,$?U:Z,ot)):xn(ce,Z,e)}function _t(ce,$){if($)return xn(ce,U,e);let ue;for(let Oe=0;Oe<ce.elements.length;Oe++){let je=ce.elements[Oe],Ge=$e(je,Oe<ce.elements.length-1?U:Z,ot);(ue||Ge!==je)&&(ue||(ue=ce.elements.slice(0,Oe)),ue.push(Ge))}let G=ue?it(t.createNodeArray(ue),ce.elements):ce.elements;return t.updateCommaListExpression(ce,G)}function ct(ce){if(ce.variableDeclaration&&La(ce.variableDeclaration.name)&&ce.variableDeclaration.name.transformFlags&65536){let $=t.getGeneratedNameForNode(ce.variableDeclaration.name),ue=t.updateVariableDeclaration(ce.variableDeclaration,ce.variableDeclaration.name,void 0,void 0,$),G=eE(ue,Z,e,1),Oe=$e(ce.block,Z,Va);return vt(G)&&(Oe=t.updateBlock(Oe,[t.createVariableStatement(void 0,G),...Oe.statements])),t.updateCatchClause(ce,t.updateVariableDeclaration(ce.variableDeclaration,$,void 0,void 0,void 0),Oe)}return xn(ce,Z,e)}function Rt(ce){if(Mr(ce,1)){let $=v;v=!0;let ue=xn(ce,Z,e);return v=$,ue}return xn(ce,Z,e)}function We(ce){if(v){let $=v;v=!1;let ue=qe(ce,!0);return v=$,ue}return qe(ce,!1)}function qe(ce,$){return La(ce.name)&&ce.name.transformFlags&65536?eE(ce,Z,e,1,void 0,$):xn(ce,Z,e)}function zt(ce){return t.updateForStatement(ce,$e(ce.initializer,U,pp),$e(ce.condition,Z,ot),$e(ce.incrementor,U,ot),Vf(ce.statement,Z,e))}function Qt(ce){return xn(ce,U,e)}function tn(ce,$){let ue=R(0,2);(ce.initializer.transformFlags&65536||bI(ce.initializer)&&LO(ce.initializer))&&(ce=kn(ce));let G=ce.awaitModifier?$n(ce,$,ue):t.restoreEnclosingLabel(xn(ce,Z,e),$);return ie(ue),G}function kn(ce){let $=vs(ce.initializer);if(pu($)||bI($)){let ue,G,Oe=t.createTempVariable(void 0),je=[Qz(t,$,Oe)];return Va(ce.statement)?(si(je,ce.statement.statements),ue=ce.statement,G=ce.statement.statements):ce.statement&&(Sn(je,ce.statement),ue=ce.statement,G=ce.statement),t.updateForOfStatement(ce,ce.awaitModifier,it(t.createVariableDeclarationList([it(t.createVariableDeclaration(Oe),ce.initializer)],1),ce.initializer),ce.expression,it(t.createBlock(it(t.createNodeArray(je),G),!0),ue))}return ce}function _n(ce,$,ue){let G=t.createTempVariable(s),Oe=t.createAssignment(G,$),je=t.createExpressionStatement(Oe);Ho(je,ce.expression);let Ge=t.createAssignment(ue,t.createFalse()),kt=t.createExpressionStatement(Ge);Ho(kt,ce.expression);let Kt=t.createAssignment(ue,t.createTrue()),ln=t.createExpressionStatement(Kt);Ho(kt,ce.expression);let ir=[],ae=Qz(t,ce.initializer,G);ir.push($e(ae,Z,ca));let rt,Ot,Ke=Vf(ce.statement,Z,e);Va(Ke)?(si(ir,Ke.statements),rt=Ke,Ot=Ke.statements):ir.push(Ke);let oe=Jn(it(t.createBlock(it(t.createNodeArray(ir),Ot),!0),rt),864);return t.createBlock([je,kt,t.createTryStatement(oe,void 0,t.createBlock([ln]))])}function Gt(ce){return x&1?t.createYieldExpression(void 0,r().createAwaitHelper(ce)):t.createAwaitExpression(ce)}function $n(ce,$,ue){let G=$e(ce.expression,Z,ot),Oe=Re(G)?t.getGeneratedNameForNode(G):t.createTempVariable(void 0),je=Re(G)?t.getGeneratedNameForNode(Oe):t.createTempVariable(void 0),Ge=t.createTempVariable(void 0),kt=t.createTempVariable(s),Kt=t.createUniqueName(\"e\"),ln=t.getGeneratedNameForNode(Kt),ir=t.createTempVariable(void 0),ae=it(r().createAsyncValuesHelper(G),ce.expression),rt=t.createCallExpression(t.createPropertyAccessExpression(Oe,\"next\"),void 0,[]),Ot=t.createPropertyAccessExpression(je,\"done\"),Ke=t.createPropertyAccessExpression(je,\"value\"),oe=t.createFunctionCallCall(ir,Oe,[]);s(Kt),s(ir);let pe=ue&2?t.inlineExpressions([t.createAssignment(Kt,t.createVoidZero()),ae]):ae,z=Jn(it(t.createForStatement(Jn(it(t.createVariableDeclarationList([t.createVariableDeclaration(Ge,void 0,void 0,t.createTrue()),it(t.createVariableDeclaration(Oe,void 0,void 0,pe),ce.expression),t.createVariableDeclaration(je)]),ce.expression),4194304),t.inlineExpressions([t.createAssignment(je,Gt(rt)),t.createAssignment(kt,Ot),t.createLogicalNot(kt)]),void 0,_n(ce,Ke,Ge)),ce),512);return Ir(z,ce),t.createTryStatement(t.createBlock([t.restoreEnclosingLabel(z,$)]),t.createCatchClause(t.createVariableDeclaration(ln),Jn(t.createBlock([t.createExpressionStatement(t.createAssignment(Kt,t.createObjectLiteralExpression([t.createPropertyAssignment(\"error\",ln)])))]),1)),t.createBlock([t.createTryStatement(t.createBlock([Jn(t.createIfStatement(t.createLogicalAnd(t.createLogicalAnd(t.createLogicalNot(Ge),t.createLogicalNot(kt)),t.createAssignment(ir,t.createPropertyAccessExpression(Oe,\"return\"))),t.createExpressionStatement(Gt(oe))),1)]),void 0,Jn(t.createBlock([Jn(t.createIfStatement(Kt,t.createThrowStatement(t.createPropertyAccessExpression(Kt,\"error\"))),1)]),1))]))}function ui(ce){return L.assertNode(ce,ha),Ni(ce)}function Ni(ce){return A?.has(ce)?t.updateParameterDeclaration(ce,void 0,ce.dotDotDotToken,La(ce.name)?t.getGeneratedNameForNode(ce):ce.name,void 0,void 0,void 0):ce.transformFlags&65536?t.updateParameterDeclaration(ce,void 0,ce.dotDotDotToken,t.getGeneratedNameForNode(ce),void 0,void 0,$e(ce.initializer,Z,ot)):xn(ce,Z,e)}function Pi(ce){let $;for(let ue of ce.parameters)$?$.add(ue):ue.transformFlags&65536&&($=new Set);return $}function gr(ce){let $=x,ue=A;x=pl(ce),A=Pi(ce);let G=t.updateConstructorDeclaration(ce,ce.modifiers,Sc(ce.parameters,ui,e),ri(ce));return x=$,A=ue,G}function pt(ce){let $=x,ue=A;x=pl(ce),A=Pi(ce);let G=t.updateGetAccessorDeclaration(ce,ce.modifiers,$e(ce.name,Z,Ys),Sc(ce.parameters,ui,e),void 0,ri(ce));return x=$,A=ue,G}function nn(ce){let $=x,ue=A;x=pl(ce),A=Pi(ce);let G=t.updateSetAccessorDeclaration(ce,ce.modifiers,$e(ce.name,Z,Ys),Sc(ce.parameters,ui,e),ri(ce));return x=$,A=ue,G}function Dt(ce){let $=x,ue=A;x=pl(ce),A=Pi(ce);let G=t.updateMethodDeclaration(ce,x&1?On(ce.modifiers,re,Ns):ce.modifiers,x&2?void 0:ce.asteriskToken,$e(ce.name,Z,Ys),$e(void 0,Z,ev),void 0,Sc(ce.parameters,ui,e),void 0,x&2&&x&1?hi(ce):ri(ce));return x=$,A=ue,G}function pn(ce){let $=x,ue=A;x=pl(ce),A=Pi(ce);let G=t.updateFunctionDeclaration(ce,x&1?On(ce.modifiers,re,Ha):ce.modifiers,x&2?void 0:ce.asteriskToken,ce.name,void 0,Sc(ce.parameters,ui,e),void 0,x&2&&x&1?hi(ce):ri(ce));return x=$,A=ue,G}function An(ce){let $=x,ue=A;x=pl(ce),A=Pi(ce);let G=t.updateArrowFunction(ce,ce.modifiers,void 0,Sc(ce.parameters,ui,e),void 0,ce.equalsGreaterThanToken,ri(ce));return x=$,A=ue,G}function Kn(ce){let $=x,ue=A;x=pl(ce),A=Pi(ce);let G=t.updateFunctionExpression(ce,x&1?On(ce.modifiers,re,Ha):ce.modifiers,x&2?void 0:ce.asteriskToken,ce.name,void 0,Sc(ce.parameters,ui,e),void 0,x&2&&x&1?hi(ce):ri(ce));return x=$,A=ue,G}function hi(ce){i();let $=[],ue=t.copyPrologue(ce.body.statements,$,!1,Z);gn($,ce);let G=B,Oe=q;B=new Set,q=!1;let je=t.createReturnStatement(r().createAsyncGeneratorHelper(t.createFunctionExpression(void 0,t.createToken(41),ce.name&&t.getGeneratedNameForNode(ce.name),void 0,[],void 0,t.updateBlock(ce.body,mF(ce.body.statements,Z,e,ue))),!!(C&1))),Ge=d>=2&&l.getNodeCheckFlags(ce)&384;if(Ge){Ht();let Kt=SF(t,l,ce,B);W[zo(Kt)]=!0,em($,[Kt])}$.push(je),em($,o());let kt=t.updateBlock(ce.body,$);return Ge&&q&&(l.getNodeCheckFlags(ce)&256?AS(kt,cO):l.getNodeCheckFlags(ce)&128&&AS(kt,sO)),B=G,q=Oe,kt}function ri(ce){var $;i();let ue=0,G=[],Oe=($=$e(ce.body,Z,u6))!=null?$:t.createBlock([]);Va(Oe)&&(ue=t.copyPrologue(Oe.statements,G,!1,Z)),si(G,gn(void 0,ce));let je=o();if(ue>0||vt(G)||vt(je)){let Ge=t.converters.convertToFunctionBlock(Oe,!0);return em(G,je),si(G,Ge.statements.slice(ue)),t.updateBlock(Ge,it(t.createNodeArray(G),Ge.statements))}return Oe}function gn(ce,$){let ue=!1;for(let G of $.parameters)if(ue){if(La(G.name)){if(G.name.elements.length>0){let Oe=eE(G,Z,e,0,t.getGeneratedNameForNode(G));if(vt(Oe)){let je=t.createVariableDeclarationList(Oe),Ge=t.createVariableStatement(void 0,je);Jn(Ge,2097152),ce=Sn(ce,Ge)}}else if(G.initializer){let Oe=t.getGeneratedNameForNode(G),je=$e(G.initializer,Z,ot),Ge=t.createAssignment(Oe,je),kt=t.createExpressionStatement(Ge);Jn(kt,2097152),ce=Sn(ce,kt)}}else if(G.initializer){let Oe=t.cloneNode(G.name);it(Oe,G.name),Jn(Oe,96);let je=$e(G.initializer,Z,ot);bp(je,3168);let Ge=t.createAssignment(Oe,je);it(Ge,G),Jn(Ge,3072);let kt=t.createBlock([t.createExpressionStatement(Ge)]);it(kt,G),Jn(kt,3905);let Kt=t.createTypeCheck(t.cloneNode(G.name),\"undefined\"),ln=t.createIfStatement(Kt,kt);mu(ln),it(ln,G),Jn(ln,2101056),ce=Sn(ce,ln)}}else if(G.transformFlags&65536){ue=!0;let Oe=eE(G,Z,e,1,t.getGeneratedNameForNode(G),!1,!0);if(vt(Oe)){let je=t.createVariableDeclarationList(Oe),Ge=t.createVariableStatement(void 0,je);Jn(Ge,2097152),ce=Sn(ce,Ge)}}return ce}function Ht(){(S&1)===0&&(S|=1,e.enableSubstitution(210),e.enableSubstitution(208),e.enableSubstitution(209),e.enableEmitNotification(260),e.enableEmitNotification(171),e.enableEmitNotification(174),e.enableEmitNotification(175),e.enableEmitNotification(173),e.enableEmitNotification(240))}function En(ce,$,ue){if(S&1&&ve($)){let G=l.getNodeCheckFlags($)&384;if(G!==w){let Oe=w;w=G,g(ce,$,ue),w=Oe;return}}else if(S&&W[zo($)]){let G=w;w=0,g(ce,$,ue),w=G;return}g(ce,$,ue)}function dr(ce,$){return $=m(ce,$),ce===1&&w?Cr($):$}function Cr(ce){switch(ce.kind){case 208:return Se(ce);case 209:return at(ce);case 210:return Tt(ce)}return ce}function Se(ce){return ce.expression.kind===106?it(t.createPropertyAccessExpression(t.createUniqueName(\"_super\",48),ce.name),ce):ce}function at(ce){return ce.expression.kind===106?nt(ce.argumentExpression,ce):ce}function Tt(ce){let $=ce.expression;if(Pu($)){let ue=br($)?Se($):at($);return t.createCallExpression(t.createPropertyAccessExpression(ue,\"call\"),void 0,[t.createThis(),...ce.arguments])}return ce}function ve(ce){let $=ce.kind;return $===260||$===173||$===171||$===174||$===175}function nt(ce,$){return w&256?it(t.createPropertyAccessExpression(t.createCallExpression(t.createIdentifier(\"_superIndex\"),void 0,[ce]),\"value\"),$):it(t.createCallExpression(t.createIdentifier(\"_superIndex\"),void 0,[ce]),$)}}var dMe=gt({\"src/compiler/transformers/es2018.ts\"(){\"use strict\";fa()}});function spe(e){let t=e.factory;return g_(e,r);function r(s){return s.isDeclarationFile?s:xn(s,i,e)}function i(s){if((s.transformFlags&64)===0)return s;switch(s.kind){case 295:return o(s);default:return xn(s,i,e)}}function o(s){return s.variableDeclaration?xn(s,i,e):t.updateCatchClause(s,t.createVariableDeclaration(t.createTempVariable(void 0)),$e(s.block,i,Va))}}var fMe=gt({\"src/compiler/transformers/es2019.ts\"(){\"use strict\";fa()}});function cpe(e){let{factory:t,hoistVariableDeclaration:r}=e;return g_(e,i);function i(A){return A.isDeclarationFile?A:xn(A,o,e)}function o(A){if((A.transformFlags&32)===0)return A;switch(A.kind){case 210:{let w=d(A,!1);return L.assertNotNode(w,FS),w}case 208:case 209:if(Jl(A)){let w=m(A,!1,!1);return L.assertNotNode(w,FS),w}return xn(A,o,e);case 223:return A.operatorToken.kind===60?S(A):xn(A,o,e);case 217:return x(A);default:return xn(A,o,e)}}function s(A){L.assertNotNode(A,i6);let w=[A];for(;!A.questionDotToken&&!MT(A);)A=Ga(i_(A.expression),Jl),L.assertNotNode(A,i6),w.unshift(A);return{expression:A.expression,chain:w}}function l(A,w,C){let P=g(A.expression,w,C);return FS(P)?t.createSyntheticReferenceExpression(t.updateParenthesizedExpression(A,P.expression),P.thisArg):t.updateParenthesizedExpression(A,P)}function f(A,w,C){if(Jl(A))return m(A,w,C);let P=$e(A.expression,o,ot);L.assertNotNode(P,FS);let F;return w&&(Z0(P)?F=P:(F=t.createTempVariable(r),P=t.createAssignment(F,P))),P=A.kind===208?t.updatePropertyAccessExpression(A,P,$e(A.name,o,Re)):t.updateElementAccessExpression(A,P,$e(A.argumentExpression,o,ot)),F?t.createSyntheticReferenceExpression(P,F):P}function d(A,w){if(Jl(A))return m(A,w,!1);if(ud(A.expression)&&Jl(vs(A.expression))){let C=l(A.expression,!0,!1),P=On(A.arguments,o,ot);return FS(C)?it(t.createFunctionCallCall(C.expression,C.thisArg,P),A):t.updateCallExpression(A,C,void 0,P)}return xn(A,o,e)}function g(A,w,C){switch(A.kind){case 214:return l(A,w,C);case 208:case 209:return f(A,w,C);case 210:return d(A,w);default:return $e(A,o,ot)}}function m(A,w,C){let{expression:P,chain:F}=s(A),B=g(i_(P),fT(F[0]),!1),q=FS(B)?B.thisArg:void 0,W=FS(B)?B.expression:B,Y=t.restoreOuterExpressions(P,W,8);Z0(W)||(W=t.createTempVariable(r),Y=t.createAssignment(W,Y));let R=W,ie;for(let fe=0;fe<F.length;fe++){let Z=F[fe];switch(Z.kind){case 208:case 209:fe===F.length-1&&w&&(Z0(R)?ie=R:(ie=t.createTempVariable(r),R=t.createAssignment(ie,R))),R=Z.kind===208?t.createPropertyAccessExpression(R,$e(Z.name,o,Re)):t.createElementAccessExpression(R,$e(Z.argumentExpression,o,ot));break;case 210:fe===0&&q?(tc(q)||(q=t.cloneNode(q),bp(q,3072)),R=t.createFunctionCallCall(R,q.kind===106?t.createThis():q,On(Z.arguments,o,ot))):R=t.createCallExpression(R,void 0,On(Z.arguments,o,ot));break}Ir(R,Z)}let Q=C?t.createConditionalExpression(v(Y,W,!0),void 0,t.createTrue(),void 0,t.createDeleteExpression(R)):t.createConditionalExpression(v(Y,W,!0),void 0,t.createVoidZero(),void 0,R);return it(Q,A),ie?t.createSyntheticReferenceExpression(Q,ie):Q}function v(A,w,C){return t.createBinaryExpression(t.createBinaryExpression(A,t.createToken(C?36:37),t.createNull()),t.createToken(C?56:55),t.createBinaryExpression(w,t.createToken(C?36:37),t.createVoidZero()))}function S(A){let w=$e(A.left,o,ot),C=w;return Z0(w)||(C=t.createTempVariable(r),w=t.createAssignment(C,w)),it(t.createConditionalExpression(v(w,C),void 0,C,void 0,$e(A.right,o,ot)),A)}function x(A){return Jl(vs(A.expression))?Ir(g(A.expression,!1,!0),A):t.updateDeleteExpression(A,$e(A.expression,o,ot))}}var _Me=gt({\"src/compiler/transformers/es2020.ts\"(){\"use strict\";fa()}});function lpe(e){let{hoistVariableDeclaration:t,factory:r}=e;return g_(e,i);function i(l){return l.isDeclarationFile?l:xn(l,o,e)}function o(l){return(l.transformFlags&16)===0?l:cW(l)?s(l):xn(l,o,e)}function s(l){let f=l.operatorToken,d=zL(f.kind),g=vs($e(l.left,o,Ju)),m=g,v=vs($e(l.right,o,ot));if(Us(g)){let S=Z0(g.expression),x=S?g.expression:r.createTempVariable(t),A=S?g.expression:r.createAssignment(x,g.expression);if(br(g))m=r.createPropertyAccessExpression(x,g.name),g=r.createPropertyAccessExpression(A,g.name);else{let w=Z0(g.argumentExpression),C=w?g.argumentExpression:r.createTempVariable(t);m=r.createElementAccessExpression(x,C),g=r.createElementAccessExpression(A,w?g.argumentExpression:r.createAssignment(C,g.argumentExpression))}}return r.createBinaryExpression(g,d,r.createParenthesizedExpression(r.createAssignment(m,v)))}}var pMe=gt({\"src/compiler/transformers/es2021.ts\"(){\"use strict\";fa()}});function upe(e){return g_(e,t);function t(i){return i.isDeclarationFile?i:xn(i,r,e)}function r(i){if((i.transformFlags&4)===0)return i;switch(i.kind){default:return xn(i,r,e)}}}var mMe=gt({\"src/compiler/transformers/esnext.ts\"(){\"use strict\";fa()}});function dpe(e){let{factory:t,getEmitHelperFactory:r}=e,i=e.getCompilerOptions(),o,s;return g_(e,v);function l(){if(s.filenameDeclaration)return s.filenameDeclaration.name;let Le=t.createVariableDeclaration(t.createUniqueName(\"_jsxFileName\",48),void 0,void 0,t.createStringLiteral(o.fileName));return s.filenameDeclaration=Le,s.filenameDeclaration.name}function f(Le){return i.jsx===5?\"jsxDEV\":Le?\"jsxs\":\"jsx\"}function d(Le){let Ye=f(Le);return m(Ye)}function g(){return m(\"Fragment\")}function m(Le){var Ye,_t;let ct=Le===\"createElement\"?s.importSpecifier:p4(s.importSpecifier,i),Rt=(_t=(Ye=s.utilizedImplicitRuntimeImports)==null?void 0:Ye.get(ct))==null?void 0:_t.get(Le);if(Rt)return Rt.name;s.utilizedImplicitRuntimeImports||(s.utilizedImplicitRuntimeImports=new Map);let We=s.utilizedImplicitRuntimeImports.get(ct);We||(We=new Map,s.utilizedImplicitRuntimeImports.set(ct,We));let qe=t.createUniqueName(`_${Le}`,112),zt=t.createImportSpecifier(!1,t.createIdentifier(Le),qe);return bue(qe,zt),We.set(Le,zt),qe}function v(Le){if(Le.isDeclarationFile)return Le;o=Le,s={},s.importSpecifier=_4(i,Le);let Ye=xn(Le,S,e);Bg(Ye,e.readEmitHelpers());let _t=Ye.statements;if(s.filenameDeclaration&&(_t=L0(_t.slice(),t.createVariableStatement(void 0,t.createVariableDeclarationList([s.filenameDeclaration],2)))),s.utilizedImplicitRuntimeImports){for(let[ct,Rt]of lo(s.utilizedImplicitRuntimeImports.entries()))if(Lc(Le)){let We=t.createImportDeclaration(void 0,t.createImportClause(!1,void 0,t.createNamedImports(lo(Rt.values()))),t.createStringLiteral(ct),void 0);Zy(We,!1),_t=L0(_t.slice(),We)}else if(kd(Le)){let We=t.createVariableStatement(void 0,t.createVariableDeclarationList([t.createVariableDeclaration(t.createObjectBindingPattern(lo(Rt.values(),qe=>t.createBindingElement(void 0,qe.propertyName,qe.name))),void 0,void 0,t.createCallExpression(t.createIdentifier(\"require\"),void 0,[t.createStringLiteral(ct)]))],2));Zy(We,!1),_t=L0(_t.slice(),We)}}return _t!==Ye.statements&&(Ye=t.updateSourceFile(Ye,_t)),s=void 0,Ye}function S(Le){return Le.transformFlags&2?x(Le):Le}function x(Le){switch(Le.kind){case 281:return P(Le,!1);case 282:return F(Le,!1);case 285:return B(Le,!1);case 291:return Ne(Le);default:return xn(Le,S,e)}}function A(Le){switch(Le.kind){case 11:return Ve(Le);case 291:return Ne(Le);case 281:return P(Le,!0);case 282:return F(Le,!0);case 285:return B(Le,!0);default:return L.failBadSyntaxKind(Le)}}function w(Le){let Ye=!1;for(let _t of Le.attributes.properties)if(BT(_t))Ye=!0;else if(Ye&&Sp(_t)&&_t.name.escapedText===\"key\")return!0;return!1}function C(Le){return s.importSpecifier===void 0||w(Le)}function P(Le,Ye){return(C(Le.openingElement)?ie:Y)(Le.openingElement,Le.children,Ye,Le)}function F(Le,Ye){return(C(Le)?ie:Y)(Le,void 0,Ye,Le)}function B(Le,Ye){return(s.importSpecifier===void 0?fe:Q)(Le.openingFragment,Le.children,Ye,Le)}function q(Le){let Ye=W(Le);return Ye&&t.createObjectLiteralExpression([Ye])}function W(Le){let Ye=ER(Le);if(Fn(Ye)===1&&!Ye[0].dotDotDotToken){let ct=A(Ye[0]);return ct&&t.createPropertyAssignment(\"children\",ct)}let _t=Zi(Le,A);return Fn(_t)?t.createPropertyAssignment(\"children\",t.createArrayLiteralExpression(_t)):void 0}function Y(Le,Ye,_t,ct){let Rt=Ie(Le),We=Ye&&Ye.length?W(Ye):void 0,qe=wr(Le.attributes.properties,tn=>!!tn.name&&Re(tn.name)&&tn.name.escapedText===\"key\"),zt=qe?Pr(Le.attributes.properties,tn=>tn!==qe):Le.attributes.properties,Qt=Fn(zt)?U(zt,We):t.createObjectLiteralExpression(We?[We]:Je);return R(Rt,Qt,qe,Ye||Je,_t,ct)}function R(Le,Ye,_t,ct,Rt,We){var qe;let zt=ER(ct),Qt=Fn(zt)>1||!!((qe=zt[0])!=null&&qe.dotDotDotToken),tn=[Le,Ye];if(_t&&tn.push(X(_t.initializer)),i.jsx===5){let _n=ec(o);if(_n&&Li(_n)){_t===void 0&&tn.push(t.createVoidZero()),tn.push(Qt?t.createTrue():t.createFalse());let Gt=Gs(_n,We.pos);tn.push(t.createObjectLiteralExpression([t.createPropertyAssignment(\"fileName\",l()),t.createPropertyAssignment(\"lineNumber\",t.createNumericLiteral(Gt.line+1)),t.createPropertyAssignment(\"columnNumber\",t.createNumericLiteral(Gt.character+1))])),tn.push(t.createThis())}}let kn=it(t.createCallExpression(d(Qt),void 0,tn),We);return Rt&&mu(kn),kn}function ie(Le,Ye,_t,ct){let Rt=Ie(Le),We=Le.attributes.properties,qe=Fn(We)?U(We):t.createNull(),zt=s.importSpecifier===void 0?$z(t,e.getEmitResolver().getJsxFactoryEntity(o),i.reactNamespace,Le):m(\"createElement\"),Qt=Que(t,zt,Rt,qe,Zi(Ye,A),ct);return _t&&mu(Qt),Qt}function Q(Le,Ye,_t,ct){let Rt;if(Ye&&Ye.length){let We=q(Ye);We&&(Rt=We)}return R(g(),Rt||t.createObjectLiteralExpression([]),void 0,Ye,_t,ct)}function fe(Le,Ye,_t,ct){let Rt=Zue(t,e.getEmitResolver().getJsxFactoryEntity(o),e.getEmitResolver().getJsxFragmentFactoryEntity(o),i.reactNamespace,Zi(Ye,A),Le,ct);return _t&&mu(Rt),Rt}function Z(Le){return t.createSpreadAssignment(L.checkDefined($e(Le.expression,S,ot)))}function U(Le,Ye){let _t=Do(i);return _t&&_t>=5?t.createObjectLiteralExpression(re(Le,Ye)):le(Le,Ye)}function re(Le,Ye){let _t=e_(c8(Le,BT,(ct,Rt)=>on(ct,We=>Rt?Z(We):ge(We))));return Ye&&_t.push(Ye),_t}function le(Le,Ye){let _t=e_(c8(Le,BT,(ct,Rt)=>Rt?on(ct,_e):t.createObjectLiteralExpression(on(ct,ge))));return BT(Le[0])&&_t.unshift(t.createObjectLiteralExpression()),Ye&&_t.push(t.createObjectLiteralExpression([Ye])),Wp(_t)||r().createAssignHelper(_t)}function _e(Le){return L.checkDefined($e(Le.expression,S,ot))}function ge(Le){let Ye=Be(Le),_t=X(Le.initializer);return t.createPropertyAssignment(Ye,_t)}function X(Le){if(Le===void 0)return t.createTrue();if(Le.kind===10){let Ye=Le.singleQuote!==void 0?Le.singleQuote:!V6(Le,o),_t=t.createStringLiteral(Ce(Le.text)||Le.text,Ye);return it(_t,Le)}return Le.kind===291?Le.expression===void 0?t.createTrue():L.checkDefined($e(Le.expression,S,ot)):Hg(Le)?P(Le,!1):GS(Le)?F(Le,!1):US(Le)?B(Le,!1):L.failBadSyntaxKind(Le)}function Ve(Le){let Ye=we(Le.text);return Ye===void 0?void 0:t.createStringLiteral(Ye)}function we(Le){let Ye,_t=0,ct=-1;for(let Rt=0;Rt<Le.length;Rt++){let We=Le.charCodeAt(Rt);Wl(We)?(_t!==-1&&ct!==-1&&(Ye=ke(Ye,Le.substr(_t,ct-_t+1))),_t=-1):Yp(We)||(ct=Rt,_t===-1&&(_t=Rt))}return _t!==-1?ke(Ye,Le.substr(_t)):Ye}function ke(Le,Ye){let _t=Pe(Ye);return Le===void 0?_t:Le+\" \"+_t}function Pe(Le){return Le.replace(/&((#((\\d+)|x([\\da-fA-F]+)))|(\\w+));/g,(Ye,_t,ct,Rt,We,qe,zt)=>{if(We)return uI(parseInt(We,10));if(qe)return uI(parseInt(qe,16));{let Qt=fpe.get(zt);return Qt?uI(Qt):Ye}})}function Ce(Le){let Ye=Pe(Le);return Ye===Le?void 0:Ye}function Ie(Le){if(Le.kind===281)return Ie(Le.openingElement);{let Ye=Le.tagName;return Re(Ye)&&BI(Ye.escapedText)?t.createStringLiteral(vr(Ye)):TO(t,Ye)}}function Be(Le){let Ye=Le.name,_t=vr(Ye);return/^[A-Za-z_]\\w*$/.test(_t)?Ye:t.createStringLiteral(_t)}function Ne(Le){let Ye=$e(Le.expression,S,ot);return Le.dotDotDotToken?t.createSpreadElement(Ye):Ye}}var fpe,hMe=gt({\"src/compiler/transformers/jsx.ts\"(){\"use strict\";fa(),fpe=new Map(Object.entries({quot:34,amp:38,apos:39,lt:60,gt:62,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,copy:169,ordf:170,laquo:171,not:172,shy:173,reg:174,macr:175,deg:176,plusmn:177,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,sup1:185,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,Agrave:192,Aacute:193,Acirc:194,Atilde:195,Auml:196,Aring:197,AElig:198,Ccedil:199,Egrave:200,Eacute:201,Ecirc:202,Euml:203,Igrave:204,Iacute:205,Icirc:206,Iuml:207,ETH:208,Ntilde:209,Ograve:210,Oacute:211,Ocirc:212,Otilde:213,Ouml:214,times:215,Oslash:216,Ugrave:217,Uacute:218,Ucirc:219,Uuml:220,Yacute:221,THORN:222,szlig:223,agrave:224,aacute:225,acirc:226,atilde:227,auml:228,aring:229,aelig:230,ccedil:231,egrave:232,eacute:233,ecirc:234,euml:235,igrave:236,iacute:237,icirc:238,iuml:239,eth:240,ntilde:241,ograve:242,oacute:243,ocirc:244,otilde:245,ouml:246,divide:247,oslash:248,ugrave:249,uacute:250,ucirc:251,uuml:252,yacute:253,thorn:254,yuml:255,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830}))}});function _pe(e){let{factory:t,hoistVariableDeclaration:r}=e;return g_(e,i);function i(d){return d.isDeclarationFile?d:xn(d,o,e)}function o(d){if((d.transformFlags&512)===0)return d;switch(d.kind){case 223:return s(d);default:return xn(d,o,e)}}function s(d){switch(d.operatorToken.kind){case 67:return l(d);case 42:return f(d);default:return xn(d,o,e)}}function l(d){let g,m,v=$e(d.left,o,ot),S=$e(d.right,o,ot);if(Vs(v)){let x=t.createTempVariable(r),A=t.createTempVariable(r);g=it(t.createElementAccessExpression(it(t.createAssignment(x,v.expression),v.expression),it(t.createAssignment(A,v.argumentExpression),v.argumentExpression)),v),m=it(t.createElementAccessExpression(x,A),v)}else if(br(v)){let x=t.createTempVariable(r);g=it(t.createPropertyAccessExpression(it(t.createAssignment(x,v.expression),v.expression),v.name),v),m=it(t.createPropertyAccessExpression(x,v.name),v)}else g=v,m=v;return it(t.createAssignment(g,it(t.createGlobalMethodCall(\"Math\",\"pow\",[m,S]),d)),d)}function f(d){let g=$e(d.left,o,ot),m=$e(d.right,o,ot);return it(t.createGlobalMethodCall(\"Math\",\"pow\",[g,m]),d)}}var gMe=gt({\"src/compiler/transformers/es2016.ts\"(){\"use strict\";fa()}});function ppe(e,t){return{kind:e,expression:t}}function mpe(e){let{factory:t,getEmitHelperFactory:r,startLexicalEnvironment:i,resumeLexicalEnvironment:o,endLexicalEnvironment:s,hoistVariableDeclaration:l}=e,f=e.getCompilerOptions(),d=e.getEmitResolver(),g=e.onSubstituteNode,m=e.onEmitNode;e.onEmitNode=Gu,e.onSubstituteNode=Ws;let v,S,x,A;function w(ee){A=Sn(A,t.createVariableDeclaration(ee))}let C,P;return g_(e,F);function F(ee){if(ee.isDeclarationFile)return ee;v=ee,S=ee.text;let Ze=re(ee);return Bg(Ze,e.readEmitHelpers()),v=void 0,S=void 0,A=void 0,x=0,Ze}function B(ee,Ze){let At=x;return x=(x&~ee|Ze)&32767,At}function q(ee,Ze,At){x=(x&~Ze|At)&-32768|ee}function W(ee){return(x&8192)!==0&&ee.kind===250&&!ee.expression}function Y(ee){return ee.transformFlags&4194304&&(V_(ee)||FT(ee)||Uue(ee)||mO(ee)||gO(ee)||IL(ee)||vO(ee)||hO(ee)||T2(ee)||J0(ee)||Wy(ee,!1)||Va(ee))}function R(ee){return(ee.transformFlags&1024)!==0||C!==void 0||x&8192&&Y(ee)||Wy(ee,!1)&&jr(ee)||(a_(ee)&1)!==0}function ie(ee){return R(ee)?U(ee,!1):ee}function Q(ee){return R(ee)?U(ee,!0):ee}function fe(ee){if(R(ee)){let Ze=ec(ee);if(Na(Ze)&&zc(Ze)){let At=B(32670,16449),xt=U(ee,!1);return q(At,98304,0),xt}return U(ee,!1)}return ee}function Z(ee){return ee.kind===106?Hs(!0):ie(ee)}function U(ee,Ze){switch(ee.kind){case 124:return;case 260:return Ce(ee);case 228:return Ie(ee);case 166:return tn(ee);case 259:return Ht(ee);case 216:return ri(ee);case 215:return gn(ee);case 257:return je(ee);case 79:return ke(ee);case 258:return $(ee);case 252:return le(ee);case 266:return _e(ee);case 238:return Cr(ee,!1);case 249:case 248:return Pe(ee);case 253:return Kt(ee);case 243:case 244:return ae(ee,void 0);case 245:return rt(ee,void 0);case 246:return Ke(ee,void 0);case 247:return oe(ee,void 0);case 241:return Se(ee);case 207:return yt(ee);case 295:return Pc(ee);case 300:return Rs(ee);case 164:return As(ee);case 206:return yc(ee);case 210:return Ql(ee);case 211:return wt(ee);case 214:return at(ee,Ze);case 223:return Tt(ee,Ze);case 357:return ve(ee,Ze);case 14:case 15:case 16:case 17:return ta(ee);case 10:return Go(ee);case 8:return Ka(ee);case 212:return vo(ee);case 225:return ka(ee);case 226:return jt(ee);case 227:return yr(ee);case 106:return Hs(!1);case 108:return Ve(ee);case 233:return Uc(ee);case 171:return ss(ee);case 174:case 175:return qs(ee);case 240:return ce(ee);case 250:return X(ee);case 219:return we(ee);default:return xn(ee,ie,e)}}function re(ee){let Ze=B(8064,64),At=[],xt=[];i();let qt=t.copyPrologue(ee.statements,At,!1,ie);return si(xt,On(ee.statements,ie,ca,qt)),A&&xt.push(t.createVariableStatement(void 0,t.createVariableDeclarationList(A))),t.mergeLexicalEnvironment(At,s()),Pi(At,ee),q(Ze,0,0),t.updateSourceFile(ee,it(t.createNodeArray(Qi(At,xt)),ee.statements))}function le(ee){if(C!==void 0){let Ze=C.allowedNonLabeledJumps;C.allowedNonLabeledJumps|=2;let At=xn(ee,ie,e);return C.allowedNonLabeledJumps=Ze,At}return xn(ee,ie,e)}function _e(ee){let Ze=B(7104,0),At=xn(ee,ie,e);return q(Ze,0,0),At}function ge(ee){return Ir(t.createReturnStatement(t.createUniqueName(\"_this\",48)),ee)}function X(ee){return C?(C.nonLocalJumps|=8,W(ee)&&(ee=ge(ee)),t.createReturnStatement(t.createObjectLiteralExpression([t.createPropertyAssignment(t.createIdentifier(\"value\"),ee.expression?L.checkDefined($e(ee.expression,ie,ot)):t.createVoidZero())]))):W(ee)?ge(ee):xn(ee,ie,e)}function Ve(ee){return x&2&&!(x&16384)&&(x|=65536),C?x&2?(C.containsLexicalThis=!0,ee):C.thisName||(C.thisName=t.createUniqueName(\"this\")):ee}function we(ee){return xn(ee,Q,e)}function ke(ee){return C&&d.isArgumentsLocalBinding(ee)?C.argumentsName||(C.argumentsName=t.createUniqueName(\"arguments\")):ee.flags&128?Ir(it(t.createIdentifier(Gi(ee.escapedText)),ee),ee):ee}function Pe(ee){if(C){let Ze=ee.kind===249?2:4;if(!(ee.label&&C.labels&&C.labels.get(vr(ee.label))||!ee.label&&C.allowedNonLabeledJumps&Ze)){let xt,qt=ee.label;qt?ee.kind===249?(xt=`break-${qt.escapedText}`,hc(C,!0,vr(qt),xt)):(xt=`continue-${qt.escapedText}`,hc(C,!1,vr(qt),xt)):ee.kind===249?(C.nonLocalJumps|=2,xt=\"break\"):(C.nonLocalJumps|=4,xt=\"continue\");let Ln=t.createStringLiteral(xt);if(C.loopOutParameters.length){let mr=C.loopOutParameters,Vr;for(let gi=0;gi<mr.length;gi++){let Ea=kc(mr[gi],1);gi===0?Vr=Ea:Vr=t.createBinaryExpression(Vr,27,Ea)}Ln=t.createBinaryExpression(Vr,27,Ln)}return t.createReturnStatement(Ln)}}return xn(ee,ie,e)}function Ce(ee){let Ze=t.createVariableDeclaration(t.getLocalName(ee,!0),void 0,void 0,Be(ee));Ir(Ze,ee);let At=[],xt=t.createVariableStatement(void 0,t.createVariableDeclarationList([Ze]));if(Ir(xt,ee),it(xt,ee),mu(xt),At.push(xt),Mr(ee,1)){let Ln=Mr(ee,1024)?t.createExportDefault(t.getLocalName(ee)):t.createExternalModuleExport(t.getLocalName(ee));Ir(Ln,xt),At.push(Ln)}let qt=Ya(ee);return(qt&8388608)===0&&(At.push(t.createEndOfDeclarationMarker(ee)),Jn(xt,qt|8388608)),zp(At)}function Ie(ee){return Be(ee)}function Be(ee){ee.name&&$o();let Ze=P0(ee),At=t.createFunctionExpression(void 0,void 0,void 0,void 0,Ze?[t.createParameterDeclaration(void 0,void 0,t.createUniqueName(\"_super\",48))]:[],void 0,Ne(ee,Ze));Jn(At,Ya(ee)&131072|1048576);let xt=t.createPartiallyEmittedExpression(At);i2(xt,ee.end),Jn(xt,3072);let qt=t.createPartiallyEmittedExpression(xt);i2(qt,xo(S,ee.pos)),Jn(qt,3072);let Ln=t.createParenthesizedExpression(t.createCallExpression(qt,void 0,Ze?[L.checkDefined($e(Ze.expression,ie,ot))]:[]));return rO(Ln,3,\"* @class \"),Ln}function Ne(ee,Ze){let At=[],xt=t.getInternalName(ee),qt=q6(xt)?t.getGeneratedNameForNode(xt):xt;i(),Le(At,ee,Ze),Ye(At,ee,qt,Ze),Dt(At,ee);let Ln=_W(xo(S,ee.members.end),19),mr=t.createPartiallyEmittedExpression(qt);i2(mr,Ln.end),Jn(mr,3072);let Vr=t.createReturnStatement(mr);oL(Vr,Ln.pos),Jn(Vr,3840),At.push(Vr),em(At,s());let gi=t.createBlock(it(t.createNodeArray(At),ee.members),!0);return Jn(gi,3072),gi}function Le(ee,Ze,At){At&&ee.push(it(t.createExpressionStatement(r().createExtendsHelper(t.getInternalName(Ze))),At))}function Ye(ee,Ze,At,xt){let qt=C;C=void 0;let Ln=B(32662,73),mr=Vm(Ze),Vr=io(mr,xt!==void 0),gi=t.createFunctionDeclaration(void 0,void 0,At,void 0,_t(mr,Vr),void 0,Rt(mr,Ze,xt,Vr));it(gi,mr||Ze),xt&&Jn(gi,16),ee.push(gi),q(Ln,98304,0),C=qt}function _t(ee,Ze){return Sc(ee&&!Ze?ee.parameters:void 0,ie,e)||[]}function ct(ee,Ze){let At=[];o(),t.mergeLexicalEnvironment(At,s()),Ze&&At.push(t.createReturnStatement(Qt()));let xt=t.createNodeArray(At);it(xt,ee.members);let qt=t.createBlock(xt,!0);return it(qt,ee),Jn(qt,3072),qt}function Rt(ee,Ze,At,xt){let qt=!!At&&ql(At.expression).kind!==104;if(!ee)return ct(Ze,qt);let Ln=[],mr=[];o();let Vr=v8(ee.body.statements,G_),{superCall:gi,superStatementIndex:Ea}=We(ee.body.statements,Vr),bo=Ea===-1?Vr.length:Ea+1,Qo=bo;xt||(Qo=t.copyStandardPrologue(ee.body.statements,Ln,Qo,!1)),xt||(Qo=t.copyCustomPrologue(ee.body.statements,mr,Qo,ie,void 0));let Cs;if(xt?Cs=Qt():gi&&(Cs=se(gi)),Cs&&(x|=8192),_n(Ln,ee),Ni(Ln,ee,xt),si(mr,On(ee.body.statements,ie,ca,Qo)),t.mergeLexicalEnvironment(Ln,s()),nn(Ln,ee,!1),qt||Cs)if(Cs&&bo===ee.body.statements.length&&!(ee.body.transformFlags&16384)){let Pd=Ga(Ga(Cs,ar).left,Pa),Dc=t.createReturnStatement(Cs);hl(Dc,sm(Pd)),Jn(Pd,3072),mr.push(Dc)}else Ea<=Vr.length?pt(mr,ee,Cs||zt()):(pt(Ln,ee,zt()),Cs&&gr(mr,Cs)),qe(ee.body)||mr.push(t.createReturnStatement(t.createUniqueName(\"_this\",48)));else Pi(Ln,ee);let Bu=t.createBlock(it(t.createNodeArray([...Vr,...Ln,...Ea<=Vr.length?Je:On(ee.body.statements,ie,ca,Vr.length,Ea-Vr.length),...mr]),ee.body.statements),!0);return it(Bu,ee.body),Bu}function We(ee,Ze){for(let At=Ze.length;At<ee.length;At+=1){let xt=AK(ee[At]);if(xt)return{superCall:xt,superStatementIndex:At}}return{superStatementIndex:-1}}function qe(ee){if(ee.kind===250)return!0;if(ee.kind===242){let Ze=ee;if(Ze.elseStatement)return qe(Ze.thenStatement)&&qe(Ze.elseStatement)}else if(ee.kind===238){let Ze=Os(ee.statements);if(Ze&&qe(Ze))return!0}return!1}function zt(){return Jn(t.createThis(),8)}function Qt(){return t.createLogicalOr(t.createLogicalAnd(t.createStrictInequality(t.createUniqueName(\"_super\",48),t.createNull()),t.createFunctionApplyCall(t.createUniqueName(\"_super\",48),zt(),t.createIdentifier(\"arguments\"))),zt())}function tn(ee){if(!ee.dotDotDotToken)return La(ee.name)?Ir(it(t.createParameterDeclaration(void 0,void 0,t.getGeneratedNameForNode(ee),void 0,void 0,void 0),ee),ee):ee.initializer?Ir(it(t.createParameterDeclaration(void 0,void 0,ee.name,void 0,void 0,void 0),ee),ee):ee}function kn(ee){return ee.initializer!==void 0||La(ee.name)}function _n(ee,Ze){if(!vt(Ze.parameters,kn))return!1;let At=!1;for(let xt of Ze.parameters){let{name:qt,initializer:Ln,dotDotDotToken:mr}=xt;mr||(La(qt)?At=Gt(ee,xt,qt,Ln)||At:Ln&&($n(ee,xt,qt,Ln),At=!0))}return At}function Gt(ee,Ze,At,xt){return At.elements.length>0?(L0(ee,Jn(t.createVariableStatement(void 0,t.createVariableDeclarationList(eE(Ze,ie,e,0,t.getGeneratedNameForNode(Ze)))),2097152)),!0):xt?(L0(ee,Jn(t.createExpressionStatement(t.createAssignment(t.getGeneratedNameForNode(Ze),L.checkDefined($e(xt,ie,ot)))),2097152)),!0):!1}function $n(ee,Ze,At,xt){xt=L.checkDefined($e(xt,ie,ot));let qt=t.createIfStatement(t.createTypeCheck(t.cloneNode(At),\"undefined\"),Jn(it(t.createBlock([t.createExpressionStatement(Jn(it(t.createAssignment(Jn(go(it(t.cloneNode(At),At),At.parent),96),Jn(xt,96|Ya(xt)|3072)),Ze),3072))]),Ze),3905));mu(qt),it(qt,Ze),Jn(qt,2101056),L0(ee,qt)}function ui(ee,Ze){return!!(ee&&ee.dotDotDotToken&&!Ze)}function Ni(ee,Ze,At){let xt=[],qt=Os(Ze.parameters);if(!ui(qt,At))return!1;let Ln=qt.name.kind===79?go(it(t.cloneNode(qt.name),qt.name),qt.name.parent):t.createTempVariable(void 0);Jn(Ln,96);let mr=qt.name.kind===79?t.cloneNode(qt.name):Ln,Vr=Ze.parameters.length-1,gi=t.createLoopVariable();xt.push(Jn(it(t.createVariableStatement(void 0,t.createVariableDeclarationList([t.createVariableDeclaration(Ln,void 0,void 0,t.createArrayLiteralExpression([]))])),qt),2097152));let Ea=t.createForStatement(it(t.createVariableDeclarationList([t.createVariableDeclaration(gi,void 0,void 0,t.createNumericLiteral(Vr))]),qt),it(t.createLessThan(gi,t.createPropertyAccessExpression(t.createIdentifier(\"arguments\"),\"length\")),qt),it(t.createPostfixIncrement(gi),qt),t.createBlock([mu(it(t.createExpressionStatement(t.createAssignment(t.createElementAccessExpression(mr,Vr===0?gi:t.createSubtract(gi,t.createNumericLiteral(Vr))),t.createElementAccessExpression(t.createIdentifier(\"arguments\"),gi))),qt))]));return Jn(Ea,2097152),mu(Ea),xt.push(Ea),qt.name.kind!==79&&xt.push(Jn(it(t.createVariableStatement(void 0,t.createVariableDeclarationList(eE(qt,ie,e,0,mr))),qt),2097152)),rH(ee,xt),!0}function Pi(ee,Ze){return x&65536&&Ze.kind!==216?(pt(ee,Ze,t.createThis()),!0):!1}function gr(ee,Ze){jo();let At=t.createExpressionStatement(t.createBinaryExpression(t.createThis(),63,Ze));L0(ee,At),hl(At,ec(Ze).parent)}function pt(ee,Ze,At){jo();let xt=t.createVariableStatement(void 0,t.createVariableDeclarationList([t.createVariableDeclaration(t.createUniqueName(\"_this\",48),void 0,void 0,At)]));Jn(xt,2100224),Ho(xt,Ze),L0(ee,xt)}function nn(ee,Ze,At){if(x&32768){let xt;switch(Ze.kind){case 216:return ee;case 171:case 174:case 175:xt=t.createVoidZero();break;case 173:xt=t.createPropertyAccessExpression(Jn(t.createThis(),8),\"constructor\");break;case 259:case 215:xt=t.createConditionalExpression(t.createLogicalAnd(Jn(t.createThis(),8),t.createBinaryExpression(Jn(t.createThis(),8),102,t.getLocalName(Ze))),void 0,t.createPropertyAccessExpression(Jn(t.createThis(),8),\"constructor\"),void 0,t.createVoidZero());break;default:return L.failBadSyntaxKind(Ze)}let qt=t.createVariableStatement(void 0,t.createVariableDeclarationList([t.createVariableDeclaration(t.createUniqueName(\"_newTarget\",48),void 0,void 0,xt)]));Jn(qt,2100224),At&&(ee=ee.slice()),L0(ee,qt)}return ee}function Dt(ee,Ze){for(let At of Ze.members)switch(At.kind){case 237:ee.push(pn(At));break;case 171:ee.push(An(Ri(Ze,At),At,Ze));break;case 174:case 175:let xt=DT(Ze.members,At);At===xt.firstAccessor&&ee.push(Kn(Ri(Ze,At),xt,Ze));break;case 173:case 172:break;default:L.failBadSyntaxKind(At,v&&v.fileName);break}}function pn(ee){return it(t.createEmptyStatement(),ee)}function An(ee,Ze,At){let xt=sm(Ze),qt=pb(Ze),Ln=En(Ze,Ze,void 0,At),mr=$e(Ze.name,ie,Ys);L.assert(mr);let Vr;if(!pi(mr)&&FR(e.getCompilerOptions())){let Ea=ts(mr)?mr.expression:Re(mr)?t.createStringLiteral(Gi(mr.escapedText)):mr;Vr=t.createObjectDefinePropertyCall(ee,Ea,t.createPropertyDescriptor({value:Ln,enumerable:!1,writable:!0,configurable:!0}))}else{let Ea=jT(t,ee,mr,Ze.name);Vr=t.createAssignment(Ea,Ln)}Jn(Ln,3072),Ho(Ln,qt);let gi=it(t.createExpressionStatement(Vr),Ze);return Ir(gi,Ze),hl(gi,xt),Jn(gi,96),gi}function Kn(ee,Ze,At){let xt=t.createExpressionStatement(hi(ee,Ze,At,!1));return Jn(xt,3072),Ho(xt,pb(Ze.firstAccessor)),xt}function hi(ee,{firstAccessor:Ze,getAccessor:At,setAccessor:xt},qt,Ln){let mr=go(it(t.cloneNode(ee),ee),ee.parent);Jn(mr,3136),Ho(mr,Ze.name);let Vr=$e(Ze.name,ie,Ys);if(L.assert(Vr),pi(Vr))return L.failBadSyntaxKind(Vr,\"Encountered unhandled private identifier while transforming ES2015.\");let gi=Zz(t,Vr);Jn(gi,3104),Ho(gi,Ze.name);let Ea=[];if(At){let Qo=En(At,void 0,void 0,qt);Ho(Qo,pb(At)),Jn(Qo,1024);let Cs=t.createPropertyAssignment(\"get\",Qo);hl(Cs,sm(At)),Ea.push(Cs)}if(xt){let Qo=En(xt,void 0,void 0,qt);Ho(Qo,pb(xt)),Jn(Qo,1024);let Cs=t.createPropertyAssignment(\"set\",Qo);hl(Cs,sm(xt)),Ea.push(Cs)}Ea.push(t.createPropertyAssignment(\"enumerable\",At||xt?t.createFalse():t.createTrue()),t.createPropertyAssignment(\"configurable\",t.createTrue()));let bo=t.createCallExpression(t.createPropertyAccessExpression(t.createIdentifier(\"Object\"),\"defineProperty\"),void 0,[mr,gi,t.createObjectLiteralExpression(Ea,!0)]);return Ln&&mu(bo),bo}function ri(ee){ee.transformFlags&16384&&!(x&16384)&&(x|=65536);let Ze=C;C=void 0;let At=B(15232,66),xt=t.createFunctionExpression(void 0,void 0,void 0,void 0,Sc(ee.parameters,ie,e),void 0,dr(ee));return it(xt,ee),Ir(xt,ee),Jn(xt,16),q(At,0,0),C=Ze,xt}function gn(ee){let Ze=Ya(ee)&524288?B(32662,69):B(32670,65),At=C;C=void 0;let xt=Sc(ee.parameters,ie,e),qt=dr(ee),Ln=x&32768?t.getLocalName(ee):ee.name;return q(Ze,98304,0),C=At,t.updateFunctionExpression(ee,void 0,ee.asteriskToken,Ln,void 0,xt,void 0,qt)}function Ht(ee){let Ze=C;C=void 0;let At=B(32670,65),xt=Sc(ee.parameters,ie,e),qt=dr(ee),Ln=x&32768?t.getLocalName(ee):ee.name;return q(At,98304,0),C=Ze,t.updateFunctionDeclaration(ee,On(ee.modifiers,ie,Ha),ee.asteriskToken,Ln,void 0,xt,void 0,qt)}function En(ee,Ze,At,xt){let qt=C;C=void 0;let Ln=xt&&Yr(xt)&&!Ca(ee)?B(32670,73):B(32670,65),mr=Sc(ee.parameters,ie,e),Vr=dr(ee);return x&32768&&!At&&(ee.kind===259||ee.kind===215)&&(At=t.getGeneratedNameForNode(ee)),q(Ln,98304,0),C=qt,Ir(it(t.createFunctionExpression(void 0,ee.asteriskToken,At,void 0,mr,void 0,Vr),Ze),ee)}function dr(ee){let Ze=!1,At=!1,xt,qt,Ln=[],mr=[],Vr=ee.body,gi;if(o(),Va(Vr)&&(gi=t.copyStandardPrologue(Vr.statements,Ln,0,!1),gi=t.copyCustomPrologue(Vr.statements,mr,gi,ie,C6),gi=t.copyCustomPrologue(Vr.statements,mr,gi,ie,I6)),Ze=_n(mr,ee)||Ze,Ze=Ni(mr,ee,!1)||Ze,Va(Vr))gi=t.copyCustomPrologue(Vr.statements,mr,gi,ie),xt=Vr.statements,si(mr,On(Vr.statements,ie,ca,gi)),!Ze&&Vr.multiLine&&(Ze=!0);else{L.assert(ee.kind===216),xt=i4(Vr,-1);let bo=ee.equalsGreaterThanToken;!ws(bo)&&!ws(Vr)&&(wR(bo,Vr,v)?At=!0:Ze=!0);let Qo=$e(Vr,ie,ot),Cs=t.createReturnStatement(Qo);it(Cs,Vr),pue(Cs,Vr),Jn(Cs,2880),mr.push(Cs),qt=Vr}if(t.mergeLexicalEnvironment(Ln,s()),nn(Ln,ee,!1),Pi(Ln,ee),vt(Ln)&&(Ze=!0),mr.unshift(...Ln),Va(Vr)&&up(mr,Vr.statements))return Vr;let Ea=t.createBlock(it(t.createNodeArray(mr),xt),Ze);return it(Ea,ee.body),!Ze&&At&&Jn(Ea,1),qt&&_ue(Ea,19,qt),Ir(Ea,ee.body),Ea}function Cr(ee,Ze){if(Ze)return xn(ee,ie,e);let At=x&256?B(7104,512):B(6976,128),xt=xn(ee,ie,e);return q(At,0,0),xt}function Se(ee){return xn(ee,Q,e)}function at(ee,Ze){return xn(ee,Ze?Q:ie,e)}function Tt(ee,Ze){return Fg(ee)?qT(ee,ie,e,0,!Ze):ee.operatorToken.kind===27?t.updateBinaryExpression(ee,L.checkDefined($e(ee.left,Q,ot)),ee.operatorToken,L.checkDefined($e(ee.right,Ze?Q:ie,ot))):xn(ee,ie,e)}function ve(ee,Ze){if(Ze)return xn(ee,Q,e);let At;for(let qt=0;qt<ee.elements.length;qt++){let Ln=ee.elements[qt],mr=$e(Ln,qt<ee.elements.length-1?Q:ie,ot);(At||mr!==Ln)&&(At||(At=ee.elements.slice(0,qt)),L.assert(mr),At.push(mr))}let xt=At?it(t.createNodeArray(At),ee.elements):ee.elements;return t.updateCommaListExpression(ee,xt)}function nt(ee){return ee.declarationList.declarations.length===1&&!!ee.declarationList.declarations[0].initializer&&!!(a_(ee.declarationList.declarations[0].initializer)&1)}function ce(ee){let Ze=B(0,Mr(ee,1)?32:0),At;if(C&&(ee.declarationList.flags&3)===0&&!nt(ee)){let xt;for(let qt of ee.declarationList.declarations)if(Kr(C,qt),qt.initializer){let Ln;La(qt.name)?Ln=qT(qt,ie,e,0):(Ln=t.createBinaryExpression(qt.name,63,L.checkDefined($e(qt.initializer,ie,ot))),it(Ln,qt)),xt=Sn(xt,Ln)}xt?At=it(t.createExpressionStatement(t.inlineExpressions(xt)),ee):At=void 0}else At=xn(ee,ie,e);return q(Ze,0,0),At}function $(ee){if(ee.flags&3||ee.transformFlags&524288){ee.flags&3&&$o();let Ze=On(ee.declarations,ee.flags&1?Oe:je,wi),At=t.createVariableDeclarationList(Ze);return Ir(At,ee),it(At,ee),hl(At,ee),ee.transformFlags&524288&&(La(ee.declarations[0].name)||La(To(ee.declarations).name))&&Ho(At,ue(Ze)),At}return xn(ee,ie,e)}function ue(ee){let Ze=-1,At=-1;for(let xt of ee)Ze=Ze===-1?xt.pos:xt.pos===-1?Ze:Math.min(Ze,xt.pos),At=Math.max(At,xt.end);return Ff(Ze,At)}function G(ee){let Ze=d.getNodeCheckFlags(ee),At=Ze&16384,xt=Ze&32768;return!((x&64)!==0||At&&xt&&(x&512)!==0)&&(x&4096)===0&&(!d.isDeclarationWithCollidingName(ee)||xt&&!At&&(x&6144)===0)}function Oe(ee){let Ze=ee.name;return La(Ze)?je(ee):!ee.initializer&&G(ee)?t.updateVariableDeclaration(ee,ee.name,void 0,void 0,t.createVoidZero()):xn(ee,ie,e)}function je(ee){let Ze=B(32,0),At;return La(ee.name)?At=eE(ee,ie,e,0,void 0,(Ze&32)!==0):At=xn(ee,ie,e),q(Ze,0,0),At}function Ge(ee){C.labels.set(vr(ee.label),!0)}function kt(ee){C.labels.set(vr(ee.label),!1)}function Kt(ee){C&&!C.labels&&(C.labels=new Map);let Ze=xH(ee,C&&Ge);return Wy(Ze,!1)?ln(Ze,ee):t.restoreEnclosingLabel(L.checkDefined($e(Ze,ie,ca,t.liftToBlock)),ee,C&&kt)}function ln(ee,Ze){switch(ee.kind){case 243:case 244:return ae(ee,Ze);case 245:return rt(ee,Ze);case 246:return Ke(ee,Ze);case 247:return oe(ee,Ze)}}function ir(ee,Ze,At,xt,qt){let Ln=B(ee,Ze),mr=Si(At,xt,Ln,qt);return q(Ln,0,0),mr}function ae(ee,Ze){return ir(0,1280,ee,Ze)}function rt(ee,Ze){return ir(5056,3328,ee,Ze)}function Ot(ee){return t.updateForStatement(ee,$e(ee.initializer,Q,pp),$e(ee.condition,ie,ot),$e(ee.incrementor,Q,ot),L.checkDefined($e(ee.statement,ie,ca,t.liftToBlock)))}function Ke(ee,Ze){return ir(3008,5376,ee,Ze)}function oe(ee,Ze){return ir(3008,5376,ee,Ze,f.downlevelIteration?j:Te)}function pe(ee,Ze,At){let xt=[],qt=ee.initializer;if(pu(qt)){ee.initializer.flags&3&&$o();let Ln=Sl(qt.declarations);if(Ln&&La(Ln.name)){let mr=eE(Ln,ie,e,0,Ze),Vr=it(t.createVariableDeclarationList(mr),ee.initializer);Ir(Vr,ee.initializer),Ho(Vr,Ff(mr[0].pos,To(mr).end)),xt.push(t.createVariableStatement(void 0,Vr))}else xt.push(it(t.createVariableStatement(void 0,Ir(it(t.createVariableDeclarationList([t.createVariableDeclaration(Ln?Ln.name:t.createTempVariable(void 0),void 0,void 0,Ze)]),fb(qt,-1)),qt)),i4(qt,-1)))}else{let Ln=t.createAssignment(qt,Ze);Fg(Ln)?xt.push(t.createExpressionStatement(Tt(Ln,!0))):(i2(Ln,qt.end),xt.push(it(t.createExpressionStatement(L.checkDefined($e(Ln,ie,ot))),i4(qt,-1))))}if(At)return z(si(xt,At));{let Ln=$e(ee.statement,ie,ca,t.liftToBlock);return L.assert(Ln),Va(Ln)?t.updateBlock(Ln,it(t.createNodeArray(Qi(xt,Ln.statements)),Ln.statements)):(xt.push(Ln),z(xt))}}function z(ee){return Jn(t.createBlock(t.createNodeArray(ee),!0),864)}function Te(ee,Ze,At){let xt=$e(ee.expression,ie,ot);L.assert(xt);let qt=t.createLoopVariable(),Ln=Re(xt)?t.getGeneratedNameForNode(xt):t.createTempVariable(void 0);Jn(xt,96|Ya(xt));let mr=it(t.createForStatement(Jn(it(t.createVariableDeclarationList([it(t.createVariableDeclaration(qt,void 0,void 0,t.createNumericLiteral(0)),fb(ee.expression,-1)),it(t.createVariableDeclaration(Ln,void 0,void 0,xt),ee.expression)]),ee.expression),4194304),it(t.createLessThan(qt,t.createPropertyAccessExpression(Ln,\"length\")),ee.expression),it(t.createPostfixIncrement(qt),ee.expression),pe(ee,t.createElementAccessExpression(Ln,qt),At)),ee);return Jn(mr,512),it(mr,ee),t.restoreEnclosingLabel(mr,Ze,C&&kt)}function j(ee,Ze,At,xt){let qt=$e(ee.expression,ie,ot);L.assert(qt);let Ln=Re(qt)?t.getGeneratedNameForNode(qt):t.createTempVariable(void 0),mr=Re(qt)?t.getGeneratedNameForNode(Ln):t.createTempVariable(void 0),Vr=t.createUniqueName(\"e\"),gi=t.getGeneratedNameForNode(Vr),Ea=t.createTempVariable(void 0),bo=it(r().createValuesHelper(qt),ee.expression),Qo=t.createCallExpression(t.createPropertyAccessExpression(Ln,\"next\"),void 0,[]);l(Vr),l(Ea);let Cs=xt&1024?t.inlineExpressions([t.createAssignment(Vr,t.createVoidZero()),bo]):bo,Bu=Jn(it(t.createForStatement(Jn(it(t.createVariableDeclarationList([it(t.createVariableDeclaration(Ln,void 0,void 0,Cs),ee.expression),t.createVariableDeclaration(mr,void 0,void 0,Qo)]),ee.expression),4194304),t.createLogicalNot(t.createPropertyAccessExpression(mr,\"done\")),t.createAssignment(mr,Qo),pe(ee,t.createPropertyAccessExpression(mr,\"value\"),At)),ee),512);return t.createTryStatement(t.createBlock([t.restoreEnclosingLabel(Bu,Ze,C&&kt)]),t.createCatchClause(t.createVariableDeclaration(gi),Jn(t.createBlock([t.createExpressionStatement(t.createAssignment(Vr,t.createObjectLiteralExpression([t.createPropertyAssignment(\"error\",gi)])))]),1)),t.createBlock([t.createTryStatement(t.createBlock([Jn(t.createIfStatement(t.createLogicalAnd(t.createLogicalAnd(mr,t.createLogicalNot(t.createPropertyAccessExpression(mr,\"done\"))),t.createAssignment(Ea,t.createPropertyAccessExpression(Ln,\"return\"))),t.createExpressionStatement(t.createFunctionCallCall(Ea,Ln,[]))),1)]),void 0,Jn(t.createBlock([Jn(t.createIfStatement(Vr,t.createThrowStatement(t.createPropertyAccessExpression(Vr,\"error\"))),1)]),1))]))}function yt(ee){let Ze=ee.properties,At=-1,xt=!1;for(let Vr=0;Vr<Ze.length;Vr++){let gi=Ze[Vr];if(gi.transformFlags&1048576&&x&4||(xt=L.checkDefined(gi.name).kind===164)){At=Vr;break}}if(At<0)return xn(ee,ie,e);let qt=t.createTempVariable(l),Ln=[],mr=t.createAssignment(qt,Jn(t.createObjectLiteralExpression(On(Ze,ie,Og,0,At),ee.multiLine),xt?131072:0));return ee.multiLine&&mu(mr),Ln.push(mr),Co(Ln,ee,qt,At),Ln.push(ee.multiLine?mu(go(it(t.cloneNode(qt),qt),qt.parent)):qt),t.inlineExpressions(Ln)}function lt(ee){return(d.getNodeCheckFlags(ee)&8192)!==0}function Qe(ee){return GT(ee)&&!!ee.initializer&&lt(ee.initializer)}function Vt(ee){return GT(ee)&&!!ee.condition&&lt(ee.condition)}function Hn(ee){return GT(ee)&&!!ee.incrementor&&lt(ee.incrementor)}function jr(ee){return ei(ee)||Qe(ee)}function ei(ee){return(d.getNodeCheckFlags(ee)&4096)!==0}function Kr(ee,Ze){ee.hoistedLocalVariables||(ee.hoistedLocalVariables=[]),At(Ze.name);function At(xt){if(xt.kind===79)ee.hoistedLocalVariables.push(xt);else for(let qt of xt.elements)ol(qt)||At(qt.name)}}function Si(ee,Ze,At,xt){if(!jr(ee)){let bo;C&&(bo=C.allowedNonLabeledJumps,C.allowedNonLabeledJumps=6);let Qo=xt?xt(ee,Ze,void 0,At):t.restoreEnclosingLabel(GT(ee)?Ot(ee):xn(ee,ie,e),Ze,C&&kt);return C&&(C.allowedNonLabeledJumps=bo),Qo}let qt=Fo(ee),Ln=[],mr=C;C=qt;let Vr=Qe(ee)?yn(ee,qt):void 0,gi=ei(ee)?Ki(ee,qt,mr):void 0;C=mr,Vr&&Ln.push(Vr.functionDeclaration),gi&&Ln.push(gi.functionDeclaration),Qr(Ln,qt,mr),Vr&&Ln.push(mc(Vr.functionName,Vr.containsYield));let Ea;if(gi)if(xt)Ea=xt(ee,Ze,gi.part,At);else{let bo=Ja(ee,Vr,t.createBlock(gi.part,!0));Ea=t.restoreEnclosingLabel(bo,Ze,C&&kt)}else{let bo=Ja(ee,Vr,L.checkDefined($e(ee.statement,ie,ca,t.liftToBlock)));Ea=t.restoreEnclosingLabel(bo,Ze,C&&kt)}return Ln.push(Ea),Ln}function Ja(ee,Ze,At){switch(ee.kind){case 245:return Za(ee,Ze,At);case 246:return Hi(ee,At);case 247:return Fa(ee,At);case 243:return xi(ee,At);case 244:return Nr(ee,At);default:return L.failBadSyntaxKind(ee,\"IterationStatement expected\")}}function Za(ee,Ze,At){let xt=ee.condition&&lt(ee.condition),qt=xt||ee.incrementor&&lt(ee.incrementor);return t.updateForStatement(ee,$e(Ze?Ze.part:ee.initializer,Q,pp),$e(xt?void 0:ee.condition,ie,ot),$e(qt?void 0:ee.incrementor,Q,ot),At)}function Fa(ee,Ze){return t.updateForOfStatement(ee,void 0,L.checkDefined($e(ee.initializer,ie,pp)),L.checkDefined($e(ee.expression,ie,ot)),Ze)}function Hi(ee,Ze){return t.updateForInStatement(ee,L.checkDefined($e(ee.initializer,ie,pp)),L.checkDefined($e(ee.expression,ie,ot)),Ze)}function xi(ee,Ze){return t.updateDoStatement(ee,Ze,L.checkDefined($e(ee.expression,ie,ot)))}function Nr(ee,Ze){return t.updateWhileStatement(ee,L.checkDefined($e(ee.expression,ie,ot)),Ze)}function Fo(ee){let Ze;switch(ee.kind){case 245:case 246:case 247:let Ln=ee.initializer;Ln&&Ln.kind===258&&(Ze=Ln);break}let At=[],xt=[];if(Ze&&F_(Ze)&3){let Ln=Qe(ee)||Vt(ee)||Hn(ee);for(let mr of Ze.declarations)aa(ee,mr,At,xt,Ln)}let qt={loopParameters:At,loopOutParameters:xt};return C&&(C.argumentsName&&(qt.argumentsName=C.argumentsName),C.thisName&&(qt.thisName=C.thisName),C.hoistedLocalVariables&&(qt.hoistedLocalVariables=C.hoistedLocalVariables)),qt}function Qr(ee,Ze,At){let xt;if(Ze.argumentsName&&(At?At.argumentsName=Ze.argumentsName:(xt||(xt=[])).push(t.createVariableDeclaration(Ze.argumentsName,void 0,void 0,t.createIdentifier(\"arguments\")))),Ze.thisName&&(At?At.thisName=Ze.thisName:(xt||(xt=[])).push(t.createVariableDeclaration(Ze.thisName,void 0,void 0,t.createIdentifier(\"this\")))),Ze.hoistedLocalVariables)if(At)At.hoistedLocalVariables=Ze.hoistedLocalVariables;else{xt||(xt=[]);for(let qt of Ze.hoistedLocalVariables)xt.push(t.createVariableDeclaration(qt))}if(Ze.loopOutParameters.length){xt||(xt=[]);for(let qt of Ze.loopOutParameters)xt.push(t.createVariableDeclaration(qt.outParamName))}Ze.conditionVariable&&(xt||(xt=[]),xt.push(t.createVariableDeclaration(Ze.conditionVariable,void 0,void 0,t.createFalse()))),xt&&ee.push(t.createVariableStatement(void 0,t.createVariableDeclarationList(xt)))}function Wi(ee){return t.createVariableDeclaration(ee.originalName,void 0,void 0,ee.outParamName)}function yn(ee,Ze){let At=t.createUniqueName(\"_loop_init\"),xt=(ee.initializer.transformFlags&1048576)!==0,qt=0;Ze.containsLexicalThis&&(qt|=16),xt&&x&4&&(qt|=524288);let Ln=[];Ln.push(t.createVariableStatement(void 0,ee.initializer)),Ps(Ze.loopOutParameters,2,1,Ln);let mr=t.createVariableStatement(void 0,Jn(t.createVariableDeclarationList([t.createVariableDeclaration(At,void 0,void 0,Jn(t.createFunctionExpression(void 0,xt?t.createToken(41):void 0,void 0,void 0,void 0,void 0,L.checkDefined($e(t.createBlock(Ln,!0),ie,Va))),qt))]),4194304)),Vr=t.createVariableDeclarationList(on(Ze.loopOutParameters,Wi));return{functionName:At,containsYield:xt,functionDeclaration:mr,part:Vr}}function Ki(ee,Ze,At){let xt=t.createUniqueName(\"_loop\");i();let qt=$e(ee.statement,ie,ca,t.liftToBlock),Ln=s(),mr=[];(Vt(ee)||Hn(ee))&&(Ze.conditionVariable=t.createUniqueName(\"inc\"),ee.incrementor?mr.push(t.createIfStatement(Ze.conditionVariable,t.createExpressionStatement(L.checkDefined($e(ee.incrementor,ie,ot))),t.createExpressionStatement(t.createAssignment(Ze.conditionVariable,t.createTrue())))):mr.push(t.createIfStatement(t.createLogicalNot(Ze.conditionVariable),t.createExpressionStatement(t.createAssignment(Ze.conditionVariable,t.createTrue())))),Vt(ee)&&mr.push(t.createIfStatement(t.createPrefixUnaryExpression(53,L.checkDefined($e(ee.condition,ie,ot))),L.checkDefined($e(t.createBreakStatement(),ie,ca))))),L.assert(qt),Va(qt)?si(mr,qt.statements):mr.push(qt),Ps(Ze.loopOutParameters,1,1,mr),em(mr,Ln);let Vr=t.createBlock(mr,!0);Va(qt)&&Ir(Vr,qt);let gi=(ee.statement.transformFlags&1048576)!==0,Ea=1048576;Ze.containsLexicalThis&&(Ea|=16),gi&&(x&4)!==0&&(Ea|=524288);let bo=t.createVariableStatement(void 0,Jn(t.createVariableDeclarationList([t.createVariableDeclaration(xt,void 0,void 0,Jn(t.createFunctionExpression(void 0,gi?t.createToken(41):void 0,void 0,void 0,Ze.loopParameters,void 0,Vr),Ea))]),4194304)),Qo=xc(xt,Ze,At,gi);return{functionName:xt,containsYield:gi,functionDeclaration:bo,part:Qo}}function kc(ee,Ze){let At=Ze===0?ee.outParamName:ee.originalName,xt=Ze===0?ee.originalName:ee.outParamName;return t.createBinaryExpression(xt,63,At)}function Ps(ee,Ze,At,xt){for(let qt of ee)qt.flags&Ze&&xt.push(t.createExpressionStatement(kc(qt,At)))}function mc(ee,Ze){let At=t.createCallExpression(ee,void 0,[]),xt=Ze?t.createYieldExpression(t.createToken(41),Jn(At,16777216)):At;return t.createExpressionStatement(xt)}function xc(ee,Ze,At,xt){let qt=[],Ln=!(Ze.nonLocalJumps&-5)&&!Ze.labeledNonLocalBreaks&&!Ze.labeledNonLocalContinues,mr=t.createCallExpression(ee,void 0,on(Ze.loopParameters,gi=>gi.name)),Vr=xt?t.createYieldExpression(t.createToken(41),Jn(mr,16777216)):mr;if(Ln)qt.push(t.createExpressionStatement(Vr)),Ps(Ze.loopOutParameters,1,0,qt);else{let gi=t.createUniqueName(\"state\"),Ea=t.createVariableStatement(void 0,t.createVariableDeclarationList([t.createVariableDeclaration(gi,void 0,void 0,Vr)]));if(qt.push(Ea),Ps(Ze.loopOutParameters,1,0,qt),Ze.nonLocalJumps&8){let bo;At?(At.nonLocalJumps|=8,bo=t.createReturnStatement(gi)):bo=t.createReturnStatement(t.createPropertyAccessExpression(gi,\"value\")),qt.push(t.createIfStatement(t.createTypeCheck(gi,\"object\"),bo))}if(Ze.nonLocalJumps&2&&qt.push(t.createIfStatement(t.createStrictEquality(gi,t.createStringLiteral(\"break\")),t.createBreakStatement())),Ze.labeledNonLocalBreaks||Ze.labeledNonLocalContinues){let bo=[];ro(Ze.labeledNonLocalBreaks,!0,gi,At,bo),ro(Ze.labeledNonLocalContinues,!1,gi,At,bo),qt.push(t.createSwitchStatement(gi,t.createCaseBlock(bo)))}}return qt}function hc(ee,Ze,At,xt){Ze?(ee.labeledNonLocalBreaks||(ee.labeledNonLocalBreaks=new Map),ee.labeledNonLocalBreaks.set(At,xt)):(ee.labeledNonLocalContinues||(ee.labeledNonLocalContinues=new Map),ee.labeledNonLocalContinues.set(At,xt))}function ro(ee,Ze,At,xt,qt){!ee||ee.forEach((Ln,mr)=>{let Vr=[];if(!xt||xt.labels&&xt.labels.get(mr)){let gi=t.createIdentifier(mr);Vr.push(Ze?t.createBreakStatement(gi):t.createContinueStatement(gi))}else hc(xt,Ze,mr,Ln),Vr.push(t.createReturnStatement(At));qt.push(t.createCaseClause(t.createStringLiteral(Ln),Vr))})}function aa(ee,Ze,At,xt,qt){let Ln=Ze.name;if(La(Ln))for(let mr of Ln.elements)ol(mr)||aa(ee,mr,At,xt,qt);else{At.push(t.createParameterDeclaration(void 0,void 0,Ln));let mr=d.getNodeCheckFlags(Ze);if(mr&262144||qt){let Vr=t.createUniqueName(\"out_\"+vr(Ln)),gi=0;mr&262144&&(gi|=1),GT(ee)&&(ee.initializer&&d.isBindingCapturedByNode(ee.initializer,Ze)&&(gi|=2),(ee.condition&&d.isBindingCapturedByNode(ee.condition,Ze)||ee.incrementor&&d.isBindingCapturedByNode(ee.incrementor,Ze))&&(gi|=1)),xt.push({flags:gi,originalName:Ln,outParamName:Vr})}}}function Co(ee,Ze,At,xt){let qt=Ze.properties,Ln=qt.length;for(let mr=xt;mr<Ln;mr++){let Vr=qt[mr];switch(Vr.kind){case 174:case 175:let gi=DT(Ze.properties,Vr);Vr===gi.firstAccessor&&ee.push(hi(At,gi,Ze,!!Ze.multiLine));break;case 171:ee.push(md(Vr,At,Ze,Ze.multiLine));break;case 299:ee.push(gc(Vr,At,Ze.multiLine));break;case 300:ee.push(Ll(Vr,At,Ze.multiLine));break;default:L.failBadSyntaxKind(Ze);break}}}function gc(ee,Ze,At){let xt=t.createAssignment(jT(t,Ze,L.checkDefined($e(ee.name,ie,Ys))),L.checkDefined($e(ee.initializer,ie,ot)));return it(xt,ee),At&&mu(xt),xt}function Ll(ee,Ze,At){let xt=t.createAssignment(jT(t,Ze,L.checkDefined($e(ee.name,ie,Ys))),t.cloneNode(ee.name));return it(xt,ee),At&&mu(xt),xt}function md(ee,Ze,At,xt){let qt=t.createAssignment(jT(t,Ze,L.checkDefined($e(ee.name,ie,Ys))),En(ee,ee,void 0,At));return it(qt,ee),xt&&mu(qt),qt}function Pc(ee){let Ze=B(7104,0),At;if(L.assert(!!ee.variableDeclaration,\"Catch clause variable should always be present when downleveling ES2015.\"),La(ee.variableDeclaration.name)){let xt=t.createTempVariable(void 0),qt=t.createVariableDeclaration(xt);it(qt,ee.variableDeclaration);let Ln=eE(ee.variableDeclaration,ie,e,0,xt),mr=t.createVariableDeclarationList(Ln);it(mr,ee.variableDeclaration);let Vr=t.createVariableStatement(void 0,mr);At=t.updateCatchClause(ee,qt,bl(ee.block,Vr))}else At=xn(ee,ie,e);return q(Ze,0,0),At}function bl(ee,Ze){let At=On(ee.statements,ie,ca);return t.updateBlock(ee,[Ze,...At])}function ss(ee){L.assert(!ts(ee.name));let Ze=En(ee,fb(ee,-1),void 0,void 0);return Jn(Ze,1024|Ya(Ze)),it(t.createPropertyAssignment(ee.name,Ze),ee)}function qs(ee){L.assert(!ts(ee.name));let Ze=C;C=void 0;let At=B(32670,65),xt,qt=Sc(ee.parameters,ie,e),Ln=dr(ee);return ee.kind===174?xt=t.updateGetAccessorDeclaration(ee,ee.modifiers,ee.name,qt,ee.type,Ln):xt=t.updateSetAccessorDeclaration(ee,ee.modifiers,ee.name,qt,Ln),q(At,98304,0),C=Ze,xt}function Rs(ee){return it(t.createPropertyAssignment(ee.name,ke(t.cloneNode(ee.name))),ee)}function As(ee){return xn(ee,ie,e)}function jt(ee){return xn(ee,ie,e)}function yc(ee){return vt(ee.elements,Km)?K(ee.elements,!1,!!ee.multiLine,!!ee.elements.hasTrailingComma):xn(ee,ie,e)}function Ql(ee){if(a_(ee)&1)return yu(ee);let Ze=ql(ee.expression);return Ze.kind===106||Pu(Ze)||vt(ee.arguments,Km)?ht(ee,!0):t.updateCallExpression(ee,L.checkDefined($e(ee.expression,Z,ot)),void 0,On(ee.arguments,ie,ot))}function yu(ee){let Ze=Ga(Ga(ql(ee.expression),xs).body,Va),At=Md=>Bc(Md)&&!!Vo(Md.declarationList.declarations).initializer,xt=C;C=void 0;let qt=On(Ze.statements,fe,ca);C=xt;let Ln=Pr(qt,At),mr=Pr(qt,Md=>!At(Md)),gi=Ga(Vo(Ln),Bc).declarationList.declarations[0],Ea=ql(gi.initializer),bo=zr(Ea,Iu);!bo&&ar(Ea)&&Ea.operatorToken.kind===27&&(bo=zr(Ea.left,Iu));let Qo=Ga(bo?ql(bo.right):Ea,Pa),Cs=Ga(ql(Qo.expression),ms),Bu=Cs.body.statements,Pd=0,Dc=-1,gd=[];if(bo){let Md=zr(Bu[Pd],Ol);Md&&(gd.push(Md),Pd++),gd.push(Bu[Pd]),Pd++,gd.push(t.createExpressionStatement(t.createAssignment(bo.left,Ga(gi.name,Re))))}for(;!V_(Ig(Bu,Dc));)Dc--;si(gd,Bu,Pd,Dc),Dc<-1&&si(gd,Bu,Dc+1);let Zl=zr(Ig(Bu,Dc),V_);for(let Md of mr)V_(Md)&&Zl?.expression&&!Re(Zl.expression)?gd.push(Zl):gd.push(Md);return si(gd,Ln,1),t.restoreOuterExpressions(ee.expression,t.restoreOuterExpressions(gi.initializer,t.restoreOuterExpressions(bo&&bo.right,t.updateCallExpression(Qo,t.restoreOuterExpressions(Qo.expression,t.updateFunctionExpression(Cs,void 0,void 0,void 0,void 0,Cs.parameters,void 0,t.updateBlock(Cs.body,gd))),void 0,Qo.arguments))))}function se(ee){return ht(ee,!1)}function ht(ee,Ze){if(ee.transformFlags&32768||ee.expression.kind===106||Pu(ql(ee.expression))){let{target:At,thisArg:xt}=t.createCallBinding(ee.expression,l);ee.expression.kind===106&&Jn(xt,8);let qt;if(ee.transformFlags&32768?qt=t.createFunctionApplyCall(L.checkDefined($e(At,Z,ot)),ee.expression.kind===106?xt:L.checkDefined($e(xt,ie,ot)),K(ee.arguments,!0,!1,!1)):qt=it(t.createFunctionCallCall(L.checkDefined($e(At,Z,ot)),ee.expression.kind===106?xt:L.checkDefined($e(xt,ie,ot)),On(ee.arguments,ie,ot)),ee),ee.expression.kind===106){let Ln=t.createLogicalOr(qt,zt());qt=Ze?t.createAssignment(t.createUniqueName(\"_this\",48),Ln):Ln}return Ir(qt,ee)}return xn(ee,ie,e)}function wt(ee){if(vt(ee.arguments,Km)){let{target:Ze,thisArg:At}=t.createCallBinding(t.createPropertyAccessExpression(ee.expression,\"bind\"),l);return t.createNewExpression(t.createFunctionApplyCall(L.checkDefined($e(Ze,ie,ot)),At,K(t.createNodeArray([t.createVoidZero(),...ee.arguments]),!0,!1,!1)),void 0,[])}return xn(ee,ie,e)}function K(ee,Ze,At,xt){let qt=ee.length,Ln=e_(c8(ee,Xe,(Ea,bo,Qo,Cs)=>bo(Ea,At,xt&&Cs===qt)));if(Ln.length===1){let Ea=Ln[0];if(Ze&&!f.downlevelIteration||UW(Ea.expression)||mL(Ea.expression,\"___spreadArray\"))return Ea.expression}let mr=r(),Vr=Ln[0].kind!==0,gi=Vr?t.createArrayLiteralExpression():Ln[0].expression;for(let Ea=Vr?0:1;Ea<Ln.length;Ea++){let bo=Ln[Ea];gi=mr.createSpreadArrayHelper(gi,bo.expression,bo.kind===1&&!Ze)}return gi}function Xe(ee){return Km(ee)?ft:pr}function ft(ee){return on(ee,Yt)}function Yt(ee){L.assertNode(ee,Km);let Ze=$e(ee.expression,ie,ot);L.assert(Ze);let At=mL(Ze,\"___read\"),xt=At||UW(Ze)?2:1;return f.downlevelIteration&&xt===1&&!fu(Ze)&&!At&&(Ze=r().createReadHelper(Ze,void 0),xt=2),ppe(xt,Ze)}function pr(ee,Ze,At){let xt=t.createArrayLiteralExpression(On(t.createNodeArray(ee,At),ie,ot),Ze);return ppe(0,xt)}function yr(ee){return $e(ee.expression,ie,ot)}function ta(ee){return it(t.createStringLiteral(ee.text),ee)}function Go(ee){return ee.hasExtendedUnicodeEscape?it(t.createStringLiteral(ee.text),ee):ee}function Ka(ee){return ee.numericLiteralFlags&384?it(t.createNumericLiteral(ee.text),ee):ee}function vo(ee){return OK(e,ee,ie,v,w,1)}function ka(ee){let Ze=t.createStringLiteral(ee.head.text);for(let At of ee.templateSpans){let xt=[L.checkDefined($e(At.expression,ie,ot))];At.literal.text.length>0&&xt.push(t.createStringLiteral(At.literal.text)),Ze=t.createCallExpression(t.createPropertyAccessExpression(Ze,\"concat\"),void 0,xt)}return it(Ze,ee)}function Hs(ee){return x&8&&!ee?t.createPropertyAccessExpression(t.createUniqueName(\"_super\",48),\"prototype\"):t.createUniqueName(\"_super\",48)}function Uc(ee){return ee.keywordToken===103&&ee.name.escapedText===\"target\"?(x|=32768,t.createUniqueName(\"_newTarget\",48)):ee}function Gu(ee,Ze,At){if(P&1&&Ia(Ze)){let xt=B(32670,Ya(Ze)&16?81:65);m(ee,Ze,At),q(xt,0,0);return}m(ee,Ze,At)}function $o(){(P&2)===0&&(P|=2,e.enableSubstitution(79))}function jo(){(P&1)===0&&(P|=1,e.enableSubstitution(108),e.enableEmitNotification(173),e.enableEmitNotification(171),e.enableEmitNotification(174),e.enableEmitNotification(175),e.enableEmitNotification(216),e.enableEmitNotification(215),e.enableEmitNotification(259))}function Ws(ee,Ze){return Ze=g(ee,Ze),ee===1?tf(Ze):Re(Ze)?hd(Ze):Ze}function hd(ee){if(P&2&&!eJ(ee)){let Ze=ea(ee,Re);if(Ze&&vc(Ze))return it(t.getGeneratedNameForNode(Ze),ee)}return ee}function vc(ee){switch(ee.parent.kind){case 205:case 260:case 263:case 257:return ee.parent.name===ee&&d.isDeclarationWithCollidingName(ee.parent)}return!1}function tf(ee){switch(ee.kind){case 79:return ye(ee);case 108:return bn(ee)}return ee}function ye(ee){if(P&2&&!eJ(ee)){let Ze=d.getReferencedDeclarationWithCollidingName(ee);if(Ze&&!(Yr(Ze)&&Et(Ze,ee)))return it(t.getGeneratedNameForNode(sa(Ze)),ee)}return ee}function Et(ee,Ze){let At=ea(Ze);if(!At||At===ee||At.end<=ee.pos||At.pos>=ee.end)return!1;let xt=tm(ee);for(;At;){if(At===xt||At===ee)return!1;if(_l(At)&&At.parent===ee)return!0;At=At.parent}return!1}function bn(ee){return P&1&&x&16?it(t.createUniqueName(\"_this\",48),ee):ee}function Ri(ee,Ze){return Ca(Ze)?t.getInternalName(ee):t.createPropertyAccessExpression(t.getInternalName(ee),\"prototype\")}function io(ee,Ze){if(!ee||!Ze||vt(ee.parameters))return!1;let At=Sl(ee.body.statements);if(!At||!ws(At)||At.kind!==241)return!1;let xt=At.expression;if(!ws(xt)||xt.kind!==210)return!1;let qt=xt.expression;if(!ws(qt)||qt.kind!==106)return!1;let Ln=Wp(xt.arguments);if(!Ln||!ws(Ln)||Ln.kind!==227)return!1;let mr=Ln.expression;return Re(mr)&&mr.escapedText===\"arguments\"}}var yMe=gt({\"src/compiler/transformers/es2015.ts\"(){\"use strict\";fa()}});function hpe(e){let{factory:t}=e,r=e.getCompilerOptions(),i,o;(r.jsx===1||r.jsx===3)&&(i=e.onEmitNode,e.onEmitNode=f,e.enableEmitNotification(283),e.enableEmitNotification(284),e.enableEmitNotification(282),o=[]);let s=e.onSubstituteNode;return e.onSubstituteNode=d,e.enableSubstitution(208),e.enableSubstitution(299),g_(e,l);function l(S){return S}function f(S,x,A){switch(x.kind){case 283:case 284:case 282:let w=x.tagName;o[sc(w)]=!0;break}i(S,x,A)}function d(S,x){return x.id&&o&&o[x.id]?s(S,x):(x=s(S,x),br(x)?g(x):yl(x)?m(x):x)}function g(S){if(pi(S.name))return S;let x=v(S.name);return x?it(t.createElementAccessExpression(S.expression,x),S):S}function m(S){let x=Re(S.name)&&v(S.name);return x?t.updatePropertyAssignment(S,x,S.initializer):S}function v(S){let x=nb(S);if(x!==void 0&&x>=81&&x<=116)return it(t.createStringLiteralFromNode(S),S)}}var vMe=gt({\"src/compiler/transformers/es5.ts\"(){\"use strict\";fa()}});function bMe(e){switch(e){case 2:return\"return\";case 3:return\"break\";case 4:return\"yield\";case 5:return\"yield*\";case 7:return\"endfinally\";default:return}}function gpe(e){let{factory:t,getEmitHelperFactory:r,resumeLexicalEnvironment:i,endLexicalEnvironment:o,hoistFunctionDeclaration:s,hoistVariableDeclaration:l}=e,f=e.getCompilerOptions(),d=Do(f),g=e.getEmitResolver(),m=e.onSubstituteNode;e.onSubstituteNode=oe;let v,S,x,A,w,C,P,F,B,q,W=1,Y,R,ie,Q,fe=0,Z=0,U,re,le,_e,ge,X,Ve,we;return g_(e,ke);function ke(ye){if(ye.isDeclarationFile||(ye.transformFlags&2048)===0)return ye;let Et=xn(ye,Pe,e);return Bg(Et,e.readEmitHelpers()),Et}function Pe(ye){let Et=ye.transformFlags;return A?Ce(ye):x?Ie(ye):Ds(ye)&&ye.asteriskToken?Ne(ye):Et&2048?xn(ye,Pe,e):ye}function Ce(ye){switch(ye.kind){case 243:return dr(ye);case 244:return Se(ye);case 252:return Kt(ye);case 253:return ir(ye);default:return Ie(ye)}}function Ie(ye){switch(ye.kind){case 259:return Le(ye);case 215:return Ye(ye);case 174:case 175:return _t(ye);case 240:return Rt(ye);case 245:return Tt(ye);case 246:return nt(ye);case 249:return G(ye);case 248:return $(ye);case 250:return je(ye);default:return ye.transformFlags&1048576?Be(ye):ye.transformFlags&4196352?xn(ye,Pe,e):ye}}function Be(ye){switch(ye.kind){case 223:return We(ye);case 357:return tn(ye);case 224:return _n(ye);case 226:return Gt(ye);case 206:return $n(ye);case 207:return Ni(ye);case 209:return Pi(ye);case 210:return gr(ye);case 211:return pt(ye);default:return xn(ye,Pe,e)}}function Ne(ye){switch(ye.kind){case 259:return Le(ye);case 215:return Ye(ye);default:return L.failBadSyntaxKind(ye)}}function Le(ye){if(ye.asteriskToken)ye=Ir(it(t.createFunctionDeclaration(ye.modifiers,void 0,ye.name,void 0,Sc(ye.parameters,Pe,e),void 0,ct(ye.body)),ye),ye);else{let Et=x,bn=A;x=!1,A=!1,ye=xn(ye,Pe,e),x=Et,A=bn}if(x){s(ye);return}else return ye}function Ye(ye){if(ye.asteriskToken)ye=Ir(it(t.createFunctionExpression(void 0,void 0,ye.name,void 0,Sc(ye.parameters,Pe,e),void 0,ct(ye.body)),ye),ye);else{let Et=x,bn=A;x=!1,A=!1,ye=xn(ye,Pe,e),x=Et,A=bn}return ye}function _t(ye){let Et=x,bn=A;return x=!1,A=!1,ye=xn(ye,Pe,e),x=Et,A=bn,ye}function ct(ye){let Et=[],bn=x,Ri=A,io=w,ee=C,Ze=P,At=F,xt=B,qt=q,Ln=W,mr=Y,Vr=R,gi=ie,Ea=Q;x=!0,A=!1,w=void 0,C=void 0,P=void 0,F=void 0,B=void 0,q=void 0,W=1,Y=void 0,R=void 0,ie=void 0,Q=t.createTempVariable(void 0),i();let bo=t.copyPrologue(ye.statements,Et,!1,Pe);nn(ye.statements,bo);let Qo=K();return em(Et,o()),Et.push(t.createReturnStatement(Qo)),x=bn,A=Ri,w=io,C=ee,P=Ze,F=At,B=xt,q=qt,W=Ln,Y=mr,R=Vr,ie=gi,Q=Ea,it(t.createBlock(Et,ye.multiLine),ye)}function Rt(ye){if(ye.transformFlags&1048576){ri(ye.declarationList);return}else{if(Ya(ye)&2097152)return ye;for(let bn of ye.declarationList.declarations)l(bn.name);let Et=XI(ye.declarationList);return Et.length===0?void 0:Ho(t.createExpressionStatement(t.inlineExpressions(on(Et,gn))),ye)}}function We(ye){let Et=WH(ye);switch(Et){case 0:return zt(ye);case 1:return qe(ye);default:return L.assertNever(Et)}}function qe(ye){let{left:Et,right:bn}=ye;if(Ot(bn)){let Ri;switch(Et.kind){case 208:Ri=t.updatePropertyAccessExpression(Et,Te(L.checkDefined($e(Et.expression,Pe,Ju))),Et.name);break;case 209:Ri=t.updateElementAccessExpression(Et,Te(L.checkDefined($e(Et.expression,Pe,Ju))),Te(L.checkDefined($e(Et.argumentExpression,Pe,ot))));break;default:Ri=L.checkDefined($e(Et,Pe,ot));break}let io=ye.operatorToken.kind;return sN(io)?it(t.createAssignment(Ri,it(t.createBinaryExpression(Te(Ri),zL(io),L.checkDefined($e(bn,Pe,ot))),ye)),ye):t.updateBinaryExpression(ye,Ri,ye.operatorToken,L.checkDefined($e(bn,Pe,ot)))}return xn(ye,Pe,e)}function zt(ye){return Ot(ye.right)?Yce(ye.operatorToken.kind)?kn(ye):ye.operatorToken.kind===27?Qt(ye):t.updateBinaryExpression(ye,Te(L.checkDefined($e(ye.left,Pe,ot))),ye.operatorToken,L.checkDefined($e(ye.right,Pe,ot))):xn(ye,Pe,e)}function Qt(ye){let Et=[];return bn(ye.left),bn(ye.right),t.inlineExpressions(Et);function bn(Ri){ar(Ri)&&Ri.operatorToken.kind===27?(bn(Ri.left),bn(Ri.right)):(Ot(Ri)&&Et.length>0&&(wt(1,[t.createExpressionStatement(t.inlineExpressions(Et))]),Et=[]),Et.push(L.checkDefined($e(Ri,Pe,ot))))}}function tn(ye){let Et=[];for(let bn of ye.elements)ar(bn)&&bn.operatorToken.kind===27?Et.push(Qt(bn)):(Ot(bn)&&Et.length>0&&(wt(1,[t.createExpressionStatement(t.inlineExpressions(Et))]),Et=[]),Et.push(L.checkDefined($e(bn,Pe,ot))));return t.inlineExpressions(Et)}function kn(ye){let Et=yt(),bn=j();return qs(bn,L.checkDefined($e(ye.left,Pe,ot)),ye.left),ye.operatorToken.kind===55?jt(Et,bn,ye.left):As(Et,bn,ye.left),qs(bn,L.checkDefined($e(ye.right,Pe,ot)),ye.right),lt(Et),bn}function _n(ye){if(Ot(ye.whenTrue)||Ot(ye.whenFalse)){let Et=yt(),bn=yt(),Ri=j();return jt(Et,L.checkDefined($e(ye.condition,Pe,ot)),ye.condition),qs(Ri,L.checkDefined($e(ye.whenTrue,Pe,ot)),ye.whenTrue),Rs(bn),lt(Et),qs(Ri,L.checkDefined($e(ye.whenFalse,Pe,ot)),ye.whenFalse),lt(bn),Ri}return xn(ye,Pe,e)}function Gt(ye){let Et=yt(),bn=$e(ye.expression,Pe,ot);if(ye.asteriskToken){let Ri=(Ya(ye.expression)&16777216)===0?it(r().createValuesHelper(bn),ye):bn;yc(Ri,ye)}else Ql(bn,ye);return lt(Et),Pc(ye)}function $n(ye){return ui(ye.elements,void 0,void 0,ye.multiLine)}function ui(ye,Et,bn,Ri){let io=Ke(ye),ee;if(io>0){ee=j();let xt=On(ye,Pe,ot,0,io);qs(ee,t.createArrayLiteralExpression(Et?[Et,...xt]:xt)),Et=void 0}let Ze=ou(ye,At,[],io);return ee?t.createArrayConcatCall(ee,[t.createArrayLiteralExpression(Ze,Ri)]):it(t.createArrayLiteralExpression(Et?[Et,...Ze]:Ze,Ri),bn);function At(xt,qt){if(Ot(qt)&&xt.length>0){let Ln=ee!==void 0;ee||(ee=j()),qs(ee,Ln?t.createArrayConcatCall(ee,[t.createArrayLiteralExpression(xt,Ri)]):t.createArrayLiteralExpression(Et?[Et,...xt]:xt,Ri)),Et=void 0,xt=[]}return xt.push(L.checkDefined($e(qt,Pe,ot))),xt}}function Ni(ye){let Et=ye.properties,bn=ye.multiLine,Ri=Ke(Et),io=j();qs(io,t.createObjectLiteralExpression(On(Et,Pe,Og,0,Ri),bn));let ee=ou(Et,Ze,[],Ri);return ee.push(bn?mu(go(it(t.cloneNode(io),io),io.parent)):io),t.inlineExpressions(ee);function Ze(At,xt){Ot(xt)&&At.length>0&&(ss(t.createExpressionStatement(t.inlineExpressions(At))),At=[]);let qt=ede(t,ye,xt,io),Ln=$e(qt,Pe,ot);return Ln&&(bn&&mu(Ln),At.push(Ln)),At}}function Pi(ye){return Ot(ye.argumentExpression)?t.updateElementAccessExpression(ye,Te(L.checkDefined($e(ye.expression,Pe,Ju))),L.checkDefined($e(ye.argumentExpression,Pe,ot))):xn(ye,Pe,e)}function gr(ye){if(!Dd(ye)&&mn(ye.arguments,Ot)){let{target:Et,thisArg:bn}=t.createCallBinding(ye.expression,l,d,!0);return Ir(it(t.createFunctionApplyCall(Te(L.checkDefined($e(Et,Pe,Ju))),bn,ui(ye.arguments)),ye),ye)}return xn(ye,Pe,e)}function pt(ye){if(mn(ye.arguments,Ot)){let{target:Et,thisArg:bn}=t.createCallBinding(t.createPropertyAccessExpression(ye.expression,\"bind\"),l);return Ir(it(t.createNewExpression(t.createFunctionApplyCall(Te(L.checkDefined($e(Et,Pe,ot))),bn,ui(ye.arguments,t.createVoidZero())),void 0,[]),ye),ye)}return xn(ye,Pe,e)}function nn(ye,Et=0){let bn=ye.length;for(let Ri=Et;Ri<bn;Ri++)pn(ye[Ri])}function Dt(ye){Va(ye)?nn(ye.statements):pn(ye)}function pn(ye){let Et=A;A||(A=Ot(ye)),An(ye),A=Et}function An(ye){switch(ye.kind){case 238:return Kn(ye);case 241:return hi(ye);case 242:return Ht(ye);case 243:return En(ye);case 244:return Cr(ye);case 245:return at(ye);case 246:return ve(ye);case 248:return ce(ye);case 249:return ue(ye);case 250:return Oe(ye);case 251:return Ge(ye);case 252:return kt(ye);case 253:return ln(ye);case 254:return ae(ye);case 255:return rt(ye);default:return ss($e(ye,Pe,ca))}}function Kn(ye){Ot(ye)?nn(ye.statements):ss($e(ye,Pe,ca))}function hi(ye){ss($e(ye,Pe,ca))}function ri(ye){for(let ee of ye.declarations){let Ze=t.cloneNode(ee.name);hl(Ze,ee.name),l(Ze)}let Et=XI(ye),bn=Et.length,Ri=0,io=[];for(;Ri<bn;){for(let ee=Ri;ee<bn;ee++){let Ze=Et[ee];if(Ot(Ze.initializer)&&io.length>0)break;io.push(gn(Ze))}io.length&&(ss(t.createExpressionStatement(t.inlineExpressions(io))),Ri+=io.length,io=[])}}function gn(ye){return Ho(t.createAssignment(Ho(t.cloneNode(ye.name),ye.name),L.checkDefined($e(ye.initializer,Pe,ot))),ye)}function Ht(ye){if(Ot(ye))if(Ot(ye.thenStatement)||Ot(ye.elseStatement)){let Et=yt(),bn=ye.elseStatement?yt():void 0;jt(ye.elseStatement?bn:Et,L.checkDefined($e(ye.expression,Pe,ot)),ye.expression),Dt(ye.thenStatement),ye.elseStatement&&(Rs(Et),lt(bn),Dt(ye.elseStatement)),lt(Et)}else ss($e(ye,Pe,ca));else ss($e(ye,Pe,ca))}function En(ye){if(Ot(ye)){let Et=yt(),bn=yt();xi(Et),lt(bn),Dt(ye.statement),lt(Et),As(bn,L.checkDefined($e(ye.expression,Pe,ot))),Nr()}else ss($e(ye,Pe,ca))}function dr(ye){return A?(Hi(),ye=xn(ye,Pe,e),Nr(),ye):xn(ye,Pe,e)}function Cr(ye){if(Ot(ye)){let Et=yt(),bn=xi(Et);lt(Et),jt(bn,L.checkDefined($e(ye.expression,Pe,ot))),Dt(ye.statement),Rs(Et),Nr()}else ss($e(ye,Pe,ca))}function Se(ye){return A?(Hi(),ye=xn(ye,Pe,e),Nr(),ye):xn(ye,Pe,e)}function at(ye){if(Ot(ye)){let Et=yt(),bn=yt(),Ri=xi(bn);if(ye.initializer){let io=ye.initializer;pu(io)?ri(io):ss(it(t.createExpressionStatement(L.checkDefined($e(io,Pe,ot))),io))}lt(Et),ye.condition&&jt(Ri,L.checkDefined($e(ye.condition,Pe,ot))),Dt(ye.statement),lt(bn),ye.incrementor&&ss(it(t.createExpressionStatement(L.checkDefined($e(ye.incrementor,Pe,ot))),ye.incrementor)),Rs(Et),Nr()}else ss($e(ye,Pe,ca))}function Tt(ye){A&&Hi();let Et=ye.initializer;if(Et&&pu(Et)){for(let Ri of Et.declarations)l(Ri.name);let bn=XI(Et);ye=t.updateForStatement(ye,bn.length>0?t.inlineExpressions(on(bn,gn)):void 0,$e(ye.condition,Pe,ot),$e(ye.incrementor,Pe,ot),Vf(ye.statement,Pe,e))}else ye=xn(ye,Pe,e);return A&&Nr(),ye}function ve(ye){if(Ot(ye)){let Et=j(),bn=j(),Ri=j(),io=t.createLoopVariable(),ee=ye.initializer;l(io),qs(Et,L.checkDefined($e(ye.expression,Pe,ot))),qs(bn,t.createArrayLiteralExpression()),ss(t.createForInStatement(Ri,Et,t.createExpressionStatement(t.createCallExpression(t.createPropertyAccessExpression(bn,\"push\"),void 0,[Ri])))),qs(io,t.createNumericLiteral(0));let Ze=yt(),At=yt(),xt=xi(At);lt(Ze),jt(xt,t.createLessThan(io,t.createPropertyAccessExpression(bn,\"length\"))),qs(Ri,t.createElementAccessExpression(bn,io)),jt(At,t.createBinaryExpression(Ri,101,Et));let qt;if(pu(ee)){for(let Ln of ee.declarations)l(Ln.name);qt=t.cloneNode(ee.declarations[0].name)}else qt=L.checkDefined($e(ee,Pe,ot)),L.assert(Ju(qt));qs(qt,Ri),Dt(ye.statement),lt(At),ss(t.createExpressionStatement(t.createPostfixIncrement(io))),Rs(Ze),Nr()}else ss($e(ye,Pe,ca))}function nt(ye){A&&Hi();let Et=ye.initializer;if(pu(Et)){for(let bn of Et.declarations)l(bn.name);ye=t.updateForInStatement(ye,Et.declarations[0].name,L.checkDefined($e(ye.expression,Pe,ot)),L.checkDefined($e(ye.statement,Pe,ca,t.liftToBlock)))}else ye=xn(ye,Pe,e);return A&&Nr(),ye}function ce(ye){let Et=aa(ye.label?vr(ye.label):void 0);Et>0?Rs(Et,ye):ss(ye)}function $(ye){if(A){let Et=aa(ye.label&&vr(ye.label));if(Et>0)return Ll(Et,ye)}return xn(ye,Pe,e)}function ue(ye){let Et=ro(ye.label?vr(ye.label):void 0);Et>0?Rs(Et,ye):ss(ye)}function G(ye){if(A){let Et=ro(ye.label&&vr(ye.label));if(Et>0)return Ll(Et,ye)}return xn(ye,Pe,e)}function Oe(ye){yu($e(ye.expression,Pe,ot),ye)}function je(ye){return md($e(ye.expression,Pe,ot),ye)}function Ge(ye){Ot(ye)?(ei(Te(L.checkDefined($e(ye.expression,Pe,ot)))),Dt(ye.statement),Kr()):ss($e(ye,Pe,ca))}function kt(ye){if(Ot(ye.caseBlock)){let Et=ye.caseBlock,bn=Et.clauses.length,Ri=Qr(),io=Te(L.checkDefined($e(ye.expression,Pe,ot))),ee=[],Ze=-1;for(let qt=0;qt<bn;qt++){let Ln=Et.clauses[qt];ee.push(yt()),Ln.kind===293&&Ze===-1&&(Ze=qt)}let At=0,xt=[];for(;At<bn;){let qt=0;for(let Ln=At;Ln<bn;Ln++){let mr=Et.clauses[Ln];if(mr.kind===292){if(Ot(mr.expression)&&xt.length>0)break;xt.push(t.createCaseClause(L.checkDefined($e(mr.expression,Pe,ot)),[Ll(ee[Ln],mr.expression)]))}else qt++}xt.length&&(ss(t.createSwitchStatement(io,t.createCaseBlock(xt))),At+=xt.length,xt=[]),qt>0&&(At+=qt,qt=0)}Ze>=0?Rs(ee[Ze]):Rs(Ri);for(let qt=0;qt<bn;qt++)lt(ee[qt]),nn(Et.clauses[qt].statements);Wi()}else ss($e(ye,Pe,ca))}function Kt(ye){return A&&Fo(),ye=xn(ye,Pe,e),A&&Wi(),ye}function ln(ye){Ot(ye)?(Ki(vr(ye.label)),Dt(ye.statement),kc()):ss($e(ye,Pe,ca))}function ir(ye){return A&&yn(vr(ye.label)),ye=xn(ye,Pe,e),A&&kc(),ye}function ae(ye){var Et;se(L.checkDefined($e((Et=ye.expression)!=null?Et:t.createVoidZero(),Pe,ot)),ye)}function rt(ye){Ot(ye)?(Si(),Dt(ye.tryBlock),ye.catchClause&&(Ja(ye.catchClause.variableDeclaration),Dt(ye.catchClause.block)),ye.finallyBlock&&(Za(),Dt(ye.finallyBlock)),Fa()):ss(xn(ye,Pe,e))}function Ot(ye){return!!ye&&(ye.transformFlags&1048576)!==0}function Ke(ye){let Et=ye.length;for(let bn=0;bn<Et;bn++)if(Ot(ye[bn]))return bn;return-1}function oe(ye,Et){return Et=m(ye,Et),ye===1?pe(Et):Et}function pe(ye){return Re(ye)?z(ye):ye}function z(ye){if(!tc(ye)&&v&&v.has(vr(ye))){let Et=ec(ye);if(Re(Et)&&Et.parent){let bn=g.getReferencedValueDeclaration(Et);if(bn){let Ri=S[sc(bn)];if(Ri){let io=go(it(t.cloneNode(Ri),Ri),Ri.parent);return Ho(io,ye),hl(io,ye),io}}}}return ye}function Te(ye){if(tc(ye)||Ya(ye)&8192)return ye;let Et=t.createTempVariable(l);return qs(Et,ye,ye),Et}function j(ye){let Et=ye?t.createUniqueName(ye):t.createTempVariable(void 0);return l(Et),Et}function yt(){B||(B=[]);let ye=W;return W++,B[ye]=-1,ye}function lt(ye){L.assert(B!==void 0,\"No labels were defined.\"),B[ye]=Y?Y.length:0}function Qe(ye){w||(w=[],P=[],C=[],F=[]);let Et=P.length;return P[Et]=0,C[Et]=Y?Y.length:0,w[Et]=ye,F.push(ye),Et}function Vt(){let ye=Hn();if(ye===void 0)return L.fail(\"beginBlock was never called.\");let Et=P.length;return P[Et]=1,C[Et]=Y?Y.length:0,w[Et]=ye,F.pop(),ye}function Hn(){return Os(F)}function jr(){let ye=Hn();return ye&&ye.kind}function ei(ye){let Et=yt(),bn=yt();lt(Et),Qe({kind:1,expression:ye,startLabel:Et,endLabel:bn})}function Kr(){L.assert(jr()===1);let ye=Vt();lt(ye.endLabel)}function Si(){let ye=yt(),Et=yt();return lt(ye),Qe({kind:0,state:0,startLabel:ye,endLabel:Et}),bl(),Et}function Ja(ye){L.assert(jr()===0);let Et;if(tc(ye.name))Et=ye.name,l(ye.name);else{let ee=vr(ye.name);Et=j(ee),v||(v=new Map,S=[],e.enableSubstitution(79)),v.set(ee,!0),S[sc(ye)]=Et}let bn=Hn();L.assert(bn.state<1);let Ri=bn.endLabel;Rs(Ri);let io=yt();lt(io),bn.state=1,bn.catchVariable=Et,bn.catchLabel=io,qs(Et,t.createCallExpression(t.createPropertyAccessExpression(Q,\"sent\"),void 0,[])),bl()}function Za(){L.assert(jr()===0);let ye=Hn();L.assert(ye.state<2);let Et=ye.endLabel;Rs(Et);let bn=yt();lt(bn),ye.state=2,ye.finallyLabel=bn}function Fa(){L.assert(jr()===0);let ye=Vt();ye.state<2?Rs(ye.endLabel):ht(),lt(ye.endLabel),bl(),ye.state=3}function Hi(){Qe({kind:3,isScript:!0,breakLabel:-1,continueLabel:-1})}function xi(ye){let Et=yt();return Qe({kind:3,isScript:!1,breakLabel:Et,continueLabel:ye}),Et}function Nr(){L.assert(jr()===3);let ye=Vt(),Et=ye.breakLabel;ye.isScript||lt(Et)}function Fo(){Qe({kind:2,isScript:!0,breakLabel:-1})}function Qr(){let ye=yt();return Qe({kind:2,isScript:!1,breakLabel:ye}),ye}function Wi(){L.assert(jr()===2);let ye=Vt(),Et=ye.breakLabel;ye.isScript||lt(Et)}function yn(ye){Qe({kind:4,isScript:!0,labelText:ye,breakLabel:-1})}function Ki(ye){let Et=yt();Qe({kind:4,isScript:!1,labelText:ye,breakLabel:Et})}function kc(){L.assert(jr()===4);let ye=Vt();ye.isScript||lt(ye.breakLabel)}function Ps(ye){return ye.kind===2||ye.kind===3}function mc(ye){return ye.kind===4}function xc(ye){return ye.kind===3}function hc(ye,Et){for(let bn=Et;bn>=0;bn--){let Ri=F[bn];if(mc(Ri)){if(Ri.labelText===ye)return!0}else break}return!1}function ro(ye){if(F)if(ye)for(let Et=F.length-1;Et>=0;Et--){let bn=F[Et];if(mc(bn)&&bn.labelText===ye)return bn.breakLabel;if(Ps(bn)&&hc(ye,Et-1))return bn.breakLabel}else for(let Et=F.length-1;Et>=0;Et--){let bn=F[Et];if(Ps(bn))return bn.breakLabel}return 0}function aa(ye){if(F)if(ye)for(let Et=F.length-1;Et>=0;Et--){let bn=F[Et];if(xc(bn)&&hc(ye,Et-1))return bn.continueLabel}else for(let Et=F.length-1;Et>=0;Et--){let bn=F[Et];if(xc(bn))return bn.continueLabel}return 0}function Co(ye){if(ye!==void 0&&ye>0){q===void 0&&(q=[]);let Et=t.createNumericLiteral(-1);return q[ye]===void 0?q[ye]=[Et]:q[ye].push(Et),Et}return t.createOmittedExpression()}function gc(ye){let Et=t.createNumericLiteral(ye);return R4(Et,3,bMe(ye)),Et}function Ll(ye,Et){return L.assertLessThan(0,ye,\"Invalid label\"),it(t.createReturnStatement(t.createArrayLiteralExpression([gc(3),Co(ye)])),Et)}function md(ye,Et){return it(t.createReturnStatement(t.createArrayLiteralExpression(ye?[gc(2),ye]:[gc(2)])),Et)}function Pc(ye){return it(t.createCallExpression(t.createPropertyAccessExpression(Q,\"sent\"),void 0,[]),ye)}function bl(){wt(0)}function ss(ye){ye?wt(1,[ye]):bl()}function qs(ye,Et,bn){wt(2,[ye,Et],bn)}function Rs(ye,Et){wt(3,[ye],Et)}function As(ye,Et,bn){wt(4,[ye,Et],bn)}function jt(ye,Et,bn){wt(5,[ye,Et],bn)}function yc(ye,Et){wt(7,[ye],Et)}function Ql(ye,Et){wt(6,[ye],Et)}function yu(ye,Et){wt(8,[ye],Et)}function se(ye,Et){wt(9,[ye],Et)}function ht(){wt(10)}function wt(ye,Et,bn){Y===void 0&&(Y=[],R=[],ie=[]),B===void 0&&lt(yt());let Ri=Y.length;Y[Ri]=ye,R[Ri]=Et,ie[Ri]=bn}function K(){fe=0,Z=0,U=void 0,re=!1,le=!1,_e=void 0,ge=void 0,X=void 0,Ve=void 0,we=void 0;let ye=Xe();return r().createGeneratorHelper(Jn(t.createFunctionExpression(void 0,void 0,void 0,void 0,[t.createParameterDeclaration(void 0,void 0,Q)],void 0,t.createBlock(ye,ye.length>0)),1048576))}function Xe(){if(Y){for(let ye=0;ye<Y.length;ye++)vo(ye);Yt(Y.length)}else Yt(0);if(_e){let ye=t.createPropertyAccessExpression(Q,\"label\"),Et=t.createSwitchStatement(ye,t.createCaseBlock(_e));return[mu(Et)]}return ge||[]}function ft(){!ge||(yr(!re),re=!1,le=!1,Z++)}function Yt(ye){pr(ye)&&(ta(ye),we=void 0,Gu(void 0,void 0)),ge&&_e&&yr(!1),Go()}function pr(ye){if(!le)return!0;if(!B||!q)return!1;for(let Et=0;Et<B.length;Et++)if(B[Et]===ye&&q[Et])return!0;return!1}function yr(ye){if(_e||(_e=[]),ge){if(we)for(let Et=we.length-1;Et>=0;Et--){let bn=we[Et];ge=[t.createWithStatement(bn.expression,t.createBlock(ge))]}if(Ve){let{startLabel:Et,catchLabel:bn,finallyLabel:Ri,endLabel:io}=Ve;ge.unshift(t.createExpressionStatement(t.createCallExpression(t.createPropertyAccessExpression(t.createPropertyAccessExpression(Q,\"trys\"),\"push\"),void 0,[t.createArrayLiteralExpression([Co(Et),Co(bn),Co(Ri),Co(io)])]))),Ve=void 0}ye&&ge.push(t.createExpressionStatement(t.createAssignment(t.createPropertyAccessExpression(Q,\"label\"),t.createNumericLiteral(Z+1))))}_e.push(t.createCaseClause(t.createNumericLiteral(Z),ge||[])),ge=void 0}function ta(ye){if(!!B)for(let Et=0;Et<B.length;Et++)B[Et]===ye&&(ft(),U===void 0&&(U=[]),U[Z]===void 0?U[Z]=[Et]:U[Z].push(Et))}function Go(){if(q!==void 0&&U!==void 0)for(let ye=0;ye<U.length;ye++){let Et=U[ye];if(Et!==void 0)for(let bn of Et){let Ri=q[bn];if(Ri!==void 0)for(let io of Ri)io.text=String(ye)}}}function Ka(ye){if(w)for(;fe<P.length&&C[fe]<=ye;fe++){let Et=w[fe],bn=P[fe];switch(Et.kind){case 0:bn===0?(X||(X=[]),ge||(ge=[]),X.push(Ve),Ve=Et):bn===1&&(Ve=X.pop());break;case 1:bn===0?(we||(we=[]),we.push(Et)):bn===1&&we.pop();break}}}function vo(ye){if(ta(ye),Ka(ye),re)return;re=!1,le=!1;let Et=Y[ye];if(Et===0)return;if(Et===10)return tf();let bn=R[ye];if(Et===1)return ka(bn[0]);let Ri=ie[ye];switch(Et){case 2:return Hs(bn[0],bn[1],Ri);case 3:return $o(bn[0],Ri);case 4:return jo(bn[0],bn[1],Ri);case 5:return Ws(bn[0],bn[1],Ri);case 6:return hd(bn[0],Ri);case 7:return vc(bn[0],Ri);case 8:return Gu(bn[0],Ri);case 9:return Uc(bn[0],Ri)}}function ka(ye){ye&&(ge?ge.push(ye):ge=[ye])}function Hs(ye,Et,bn){ka(it(t.createExpressionStatement(t.createAssignment(ye,Et)),bn))}function Uc(ye,Et){re=!0,le=!0,ka(it(t.createThrowStatement(ye),Et))}function Gu(ye,Et){re=!0,le=!0,ka(Jn(it(t.createReturnStatement(t.createArrayLiteralExpression(ye?[gc(2),ye]:[gc(2)])),Et),768))}function $o(ye,Et){re=!0,ka(Jn(it(t.createReturnStatement(t.createArrayLiteralExpression([gc(3),Co(ye)])),Et),768))}function jo(ye,Et,bn){ka(Jn(t.createIfStatement(Et,Jn(it(t.createReturnStatement(t.createArrayLiteralExpression([gc(3),Co(ye)])),bn),768)),1))}function Ws(ye,Et,bn){ka(Jn(t.createIfStatement(t.createLogicalNot(Et),Jn(it(t.createReturnStatement(t.createArrayLiteralExpression([gc(3),Co(ye)])),bn),768)),1))}function hd(ye,Et){re=!0,ka(Jn(it(t.createReturnStatement(t.createArrayLiteralExpression(ye?[gc(4),ye]:[gc(4)])),Et),768))}function vc(ye,Et){re=!0,ka(Jn(it(t.createReturnStatement(t.createArrayLiteralExpression([gc(5),ye])),Et),768))}function tf(){re=!0,ka(t.createReturnStatement(t.createArrayLiteralExpression([gc(7)])))}}var EMe=gt({\"src/compiler/transformers/generators.ts\"(){\"use strict\";fa()}});function FK(e){function t($){switch($){case 2:return R;case 3:return ie;default:return Y}}let{factory:r,getEmitHelperFactory:i,startLexicalEnvironment:o,endLexicalEnvironment:s,hoistVariableDeclaration:l}=e,f=e.getCompilerOptions(),d=e.getEmitResolver(),g=e.getEmitHost(),m=Do(f),v=Rl(f),S=e.onSubstituteNode,x=e.onEmitNode;e.onSubstituteNode=dr,e.onEmitNode=En,e.enableSubstitution(210),e.enableSubstitution(212),e.enableSubstitution(79),e.enableSubstitution(223),e.enableSubstitution(300),e.enableEmitNotification(308);let A=[],w=[],C,P,F=[],B;return g_(e,q);function q($){if($.isDeclarationFile||!(oS($,f)||$.transformFlags&8388608||Pf($)&&l4(f)&&Ss(f)))return $;C=$,P=xK(e,$,d,f),A[sc($)]=P;let G=t(v)($);return C=void 0,P=void 0,B=!1,G}function W(){return!!(!P.exportEquals&&Lc(C))}function Y($){o();let ue=[],G=Bf(f,\"alwaysStrict\")||!f.noImplicitUseStrict&&Lc(C),Oe=r.copyPrologue($.statements,ue,G&&!Pf($),re);if(W()&&Sn(ue,hi()),Fn(P.exportedNames))for(let kt=0;kt<P.exportedNames.length;kt+=50)Sn(ue,r.createExpressionStatement(ou(P.exportedNames.slice(kt,kt+50),(Kt,ln)=>r.createAssignment(r.createPropertyAccessExpression(r.createIdentifier(\"exports\"),r.createIdentifier(vr(ln))),Kt),r.createVoidZero())));Sn(ue,$e(P.externalHelpersImportDeclaration,re,ca)),si(ue,On($.statements,re,ca,Oe)),U(ue,!1),em(ue,s());let je=r.updateSourceFile($,it(r.createNodeArray(ue),$.statements));return Bg(je,e.readEmitHelpers()),je}function R($){let ue=r.createIdentifier(\"define\"),G=AO(r,$,g,f),Oe=Pf($)&&$,{aliasedModuleNames:je,unaliasedModuleNames:Ge,importAliasNames:kt}=Q($,!0),Kt=r.updateSourceFile($,it(r.createNodeArray([r.createExpressionStatement(r.createCallExpression(ue,void 0,[...G?[G]:[],r.createArrayLiteralExpression(Oe?Je:[r.createStringLiteral(\"require\"),r.createStringLiteral(\"exports\"),...je,...Ge]),Oe?Oe.statements.length?Oe.statements[0].expression:r.createObjectLiteralExpression():r.createFunctionExpression(void 0,void 0,void 0,void 0,[r.createParameterDeclaration(void 0,void 0,\"require\"),r.createParameterDeclaration(void 0,void 0,\"exports\"),...kt],void 0,Z($))]))]),$.statements));return Bg(Kt,e.readEmitHelpers()),Kt}function ie($){let{aliasedModuleNames:ue,unaliasedModuleNames:G,importAliasNames:Oe}=Q($,!1),je=AO(r,$,g,f),Ge=r.createFunctionExpression(void 0,void 0,void 0,void 0,[r.createParameterDeclaration(void 0,void 0,\"factory\")],void 0,it(r.createBlock([r.createIfStatement(r.createLogicalAnd(r.createTypeCheck(r.createIdentifier(\"module\"),\"object\"),r.createTypeCheck(r.createPropertyAccessExpression(r.createIdentifier(\"module\"),\"exports\"),\"object\")),r.createBlock([r.createVariableStatement(void 0,[r.createVariableDeclaration(\"v\",void 0,void 0,r.createCallExpression(r.createIdentifier(\"factory\"),void 0,[r.createIdentifier(\"require\"),r.createIdentifier(\"exports\")]))]),Jn(r.createIfStatement(r.createStrictInequality(r.createIdentifier(\"v\"),r.createIdentifier(\"undefined\")),r.createExpressionStatement(r.createAssignment(r.createPropertyAccessExpression(r.createIdentifier(\"module\"),\"exports\"),r.createIdentifier(\"v\")))),1)]),r.createIfStatement(r.createLogicalAnd(r.createTypeCheck(r.createIdentifier(\"define\"),\"function\"),r.createPropertyAccessExpression(r.createIdentifier(\"define\"),\"amd\")),r.createBlock([r.createExpressionStatement(r.createCallExpression(r.createIdentifier(\"define\"),void 0,[...je?[je]:[],r.createArrayLiteralExpression([r.createStringLiteral(\"require\"),r.createStringLiteral(\"exports\"),...ue,...G]),r.createIdentifier(\"factory\")]))])))],!0),void 0)),kt=r.updateSourceFile($,it(r.createNodeArray([r.createExpressionStatement(r.createCallExpression(Ge,void 0,[r.createFunctionExpression(void 0,void 0,void 0,void 0,[r.createParameterDeclaration(void 0,void 0,\"require\"),r.createParameterDeclaration(void 0,void 0,\"exports\"),...Oe],void 0,Z($))]))]),$.statements));return Bg(kt,e.readEmitHelpers()),kt}function Q($,ue){let G=[],Oe=[],je=[];for(let Ge of $.amdDependencies)Ge.name?(G.push(r.createStringLiteral(Ge.path)),je.push(r.createParameterDeclaration(void 0,void 0,Ge.name))):Oe.push(r.createStringLiteral(Ge.path));for(let Ge of P.externalImports){let kt=HS(r,Ge,C,g,d,f),Kt=I2(r,Ge,C);kt&&(ue&&Kt?(Jn(Kt,8),G.push(kt),je.push(r.createParameterDeclaration(void 0,void 0,Kt))):Oe.push(kt))}return{aliasedModuleNames:G,unaliasedModuleNames:Oe,importAliasNames:je}}function fe($){if(Nl($)||Il($)||!HS(r,$,C,g,d,f))return;let ue=I2(r,$,C),G=ct($,ue);if(G!==ue)return r.createExpressionStatement(r.createAssignment(ue,G))}function Z($){o();let ue=[],G=r.copyPrologue($.statements,ue,!f.noImplicitUseStrict,re);W()&&Sn(ue,hi()),Fn(P.exportedNames)&&Sn(ue,r.createExpressionStatement(ou(P.exportedNames,(je,Ge)=>r.createAssignment(r.createPropertyAccessExpression(r.createIdentifier(\"exports\"),r.createIdentifier(vr(Ge))),je),r.createVoidZero()))),Sn(ue,$e(P.externalHelpersImportDeclaration,re,ca)),v===2&&si(ue,Zi(P.externalImports,fe)),si(ue,On($.statements,re,ca,G)),U(ue,!0),em(ue,s());let Oe=r.createBlock(ue,!0);return B&&AS(Oe,ype),Oe}function U($,ue){if(P.exportEquals){let G=$e(P.exportEquals.expression,_e,ot);if(G)if(ue){let Oe=r.createReturnStatement(G);it(Oe,P.exportEquals),Jn(Oe,3840),$.push(Oe)}else{let Oe=r.createExpressionStatement(r.createAssignment(r.createPropertyAccessExpression(r.createIdentifier(\"module\"),\"exports\"),G));it(Oe,P.exportEquals),Jn(Oe,3072),$.push(Oe)}}}function re($){switch($.kind){case 269:return Rt($);case 268:return qe($);case 275:return zt($);case 274:return Qt($);case 240:return _n($);case 259:return tn($);case 260:return kn($);case 358:return ui($);case 359:return Pi($);default:return _e($)}}function le($,ue){if(!($.transformFlags&276828160))return $;switch($.kind){case 245:return we($);case 241:return ke($);case 214:return Pe($,ue);case 356:return Ce($,ue);case 210:if(Dd($)&&C.impliedNodeFormat===void 0)return Be($);break;case 223:if(Fg($))return Ve($,ue);break;case 221:case 222:return Ie($,ue)}return xn($,_e,e)}function _e($){return le($,!1)}function ge($){return le($,!0)}function X($){if(rs($))for(let ue of $.properties)switch(ue.kind){case 299:if(X(ue.initializer))return!0;break;case 300:if(X(ue.name))return!0;break;case 301:if(X(ue.expression))return!0;break;case 171:case 174:case 175:return!1;default:L.assertNever(ue,\"Unhandled object member kind\")}else if(fu($)){for(let ue of $.elements)if(Km(ue)){if(X(ue.expression))return!0}else if(X(ue))return!0}else if(Re($))return Fn(ce($))>(E3($)?1:0);return!1}function Ve($,ue){return X($.left)?qT($,_e,e,0,!ue,Gt):xn($,_e,e)}function we($){return r.updateForStatement($,$e($.initializer,ge,pp),$e($.condition,_e,ot),$e($.incrementor,ge,ot),Vf($.statement,_e,e))}function ke($){return r.updateExpressionStatement($,$e($.expression,ge,ot))}function Pe($,ue){return r.updateParenthesizedExpression($,$e($.expression,ue?ge:_e,ot))}function Ce($,ue){return r.updatePartiallyEmittedExpression($,$e($.expression,ue?ge:_e,ot))}function Ie($,ue){if(($.operator===45||$.operator===46)&&Re($.operand)&&!tc($.operand)&&!rv($.operand)&&!RR($.operand)){let G=ce($.operand);if(G){let Oe,je=$e($.operand,_e,ot);tv($)?je=r.updatePrefixUnaryExpression($,je):(je=r.updatePostfixUnaryExpression($,je),ue||(Oe=r.createTempVariable(l),je=r.createAssignment(Oe,je),it(je,$)),je=r.createComma(je,r.cloneNode($.operand)),it(je,$));for(let Ge of G)F[zo(je)]=!0,je=gn(Ge,je),it(je,$);return Oe&&(F[zo(je)]=!0,je=r.createComma(je,Oe),it(je,$)),je}}return xn($,_e,e)}function Be($){if(v===0&&m>=7)return xn($,_e,e);let ue=HS(r,$,C,g,d,f),G=$e(Sl($.arguments),_e,ot),Oe=ue&&(!G||!yo(G)||G.text!==ue.text)?ue:G,je=!!($.transformFlags&16384);switch(f.module){case 2:return Le(Oe,je);case 3:return Ne(Oe??r.createVoidZero(),je);case 1:default:return Ye(Oe)}}function Ne($,ue){if(B=!0,Z0($)){let G=tc($)?$:yo($)?r.createStringLiteralFromNode($):Jn(it(r.cloneNode($),$),3072);return r.createConditionalExpression(r.createIdentifier(\"__syncRequire\"),void 0,Ye($),void 0,Le(G,ue))}else{let G=r.createTempVariable(l);return r.createComma(r.createAssignment(G,$),r.createConditionalExpression(r.createIdentifier(\"__syncRequire\"),void 0,Ye(G,!0),void 0,Le(G,ue)))}}function Le($,ue){let G=r.createUniqueName(\"resolve\"),Oe=r.createUniqueName(\"reject\"),je=[r.createParameterDeclaration(void 0,void 0,G),r.createParameterDeclaration(void 0,void 0,Oe)],Ge=r.createBlock([r.createExpressionStatement(r.createCallExpression(r.createIdentifier(\"require\"),void 0,[r.createArrayLiteralExpression([$||r.createOmittedExpression()]),G,Oe]))]),kt;m>=2?kt=r.createArrowFunction(void 0,void 0,je,void 0,void 0,Ge):(kt=r.createFunctionExpression(void 0,void 0,void 0,void 0,je,void 0,Ge),ue&&Jn(kt,16));let Kt=r.createNewExpression(r.createIdentifier(\"Promise\"),void 0,[kt]);return d_(f)?r.createCallExpression(r.createPropertyAccessExpression(Kt,r.createIdentifier(\"then\")),void 0,[i().createImportStarCallbackHelper()]):Kt}function Ye($,ue){let G=$&&!Ap($)&&!ue,Oe=r.createCallExpression(r.createPropertyAccessExpression(r.createIdentifier(\"Promise\"),\"resolve\"),void 0,G?m>=2?[r.createTemplateExpression(r.createTemplateHead(\"\"),[r.createTemplateSpan($,r.createTemplateTail(\"\"))])]:[r.createCallExpression(r.createPropertyAccessExpression(r.createStringLiteral(\"\"),\"concat\"),void 0,[$])]:[]),je=r.createCallExpression(r.createIdentifier(\"require\"),void 0,G?[r.createIdentifier(\"s\")]:$?[$]:[]);d_(f)&&(je=i().createImportStarHelper(je));let Ge=G?[r.createParameterDeclaration(void 0,void 0,\"s\")]:[],kt;return m>=2?kt=r.createArrowFunction(void 0,void 0,Ge,void 0,void 0,je):kt=r.createFunctionExpression(void 0,void 0,void 0,void 0,Ge,void 0,r.createBlock([r.createReturnStatement(je)])),r.createCallExpression(r.createPropertyAccessExpression(Oe,\"then\"),void 0,[kt])}function _t($,ue){return!d_(f)||a_($)&2?ue:z_e($)?i().createImportStarHelper(ue):ue}function ct($,ue){return!d_(f)||a_($)&2?ue:vF($)?i().createImportStarHelper(ue):SK($)?i().createImportDefaultHelper(ue):ue}function Rt($){let ue,G=jA($);if(v!==2)if($.importClause){let Oe=[];G&&!uS($)?Oe.push(r.createVariableDeclaration(r.cloneNode(G.name),void 0,void 0,ct($,We($)))):(Oe.push(r.createVariableDeclaration(r.getGeneratedNameForNode($),void 0,void 0,ct($,We($)))),G&&uS($)&&Oe.push(r.createVariableDeclaration(r.cloneNode(G.name),void 0,void 0,r.getGeneratedNameForNode($)))),ue=Sn(ue,Ir(it(r.createVariableStatement(void 0,r.createVariableDeclarationList(Oe,m>=2?2:0)),$),$))}else return Ir(it(r.createExpressionStatement(We($)),$),$);else G&&uS($)&&(ue=Sn(ue,r.createVariableStatement(void 0,r.createVariableDeclarationList([Ir(it(r.createVariableDeclaration(r.cloneNode(G.name),void 0,void 0,r.getGeneratedNameForNode($)),$),$)],m>=2?2:0))));if(Ni($)){let Oe=sc($);w[Oe]=gr(w[Oe],$)}else ue=gr(ue,$);return zp(ue)}function We($){let ue=HS(r,$,C,g,d,f),G=[];return ue&&G.push(ue),r.createCallExpression(r.createIdentifier(\"require\"),void 0,G)}function qe($){L.assert(ab($),\"import= for internal module references should be handled in an earlier transformer.\");let ue;if(v!==2?Mr($,1)?ue=Sn(ue,Ir(it(r.createExpressionStatement(gn($.name,We($))),$),$)):ue=Sn(ue,Ir(it(r.createVariableStatement(void 0,r.createVariableDeclarationList([r.createVariableDeclaration(r.cloneNode($.name),void 0,void 0,We($))],m>=2?2:0)),$),$)):Mr($,1)&&(ue=Sn(ue,Ir(it(r.createExpressionStatement(gn(r.getExportName($),r.getLocalName($))),$),$))),Ni($)){let G=sc($);w[G]=pt(w[G],$)}else ue=pt(ue,$);return zp(ue)}function zt($){if(!$.moduleSpecifier)return;let ue=r.getGeneratedNameForNode($);if($.exportClause&&m_($.exportClause)){let G=[];v!==2&&G.push(Ir(it(r.createVariableStatement(void 0,r.createVariableDeclarationList([r.createVariableDeclaration(ue,void 0,void 0,We($))])),$),$));for(let Oe of $.exportClause.elements)if(m===0)G.push(Ir(it(r.createExpressionStatement(i().createCreateBindingHelper(ue,r.createStringLiteralFromNode(Oe.propertyName||Oe.name),Oe.propertyName?r.createStringLiteralFromNode(Oe.name):void 0)),Oe),Oe));else{let je=!!d_(f)&&!(a_($)&2)&&vr(Oe.propertyName||Oe.name)===\"default\",Ge=r.createPropertyAccessExpression(je?i().createImportDefaultHelper(ue):ue,Oe.propertyName||Oe.name);G.push(Ir(it(r.createExpressionStatement(gn(r.getExportName(Oe),Ge,void 0,!0)),Oe),Oe))}return zp(G)}else if($.exportClause){let G=[];return G.push(Ir(it(r.createExpressionStatement(gn(r.cloneNode($.exportClause.name),_t($,v!==2?We($):v6($)?ue:r.createIdentifier(vr($.exportClause.name))))),$),$)),zp(G)}else return Ir(it(r.createExpressionStatement(i().createExportStarHelper(v!==2?We($):ue)),$),$)}function Qt($){if($.isExportEquals)return;let ue,G=$.original;if(G&&Ni(G)){let Oe=sc($);w[Oe]=Kn(w[Oe],r.createIdentifier(\"default\"),$e($.expression,_e,ot),$,!0)}else ue=Kn(ue,r.createIdentifier(\"default\"),$e($.expression,_e,ot),$,!0);return zp(ue)}function tn($){let ue;if(Mr($,1)?ue=Sn(ue,Ir(it(r.createFunctionDeclaration(On($.modifiers,Ht,Ha),$.asteriskToken,r.getDeclarationName($,!0,!0),void 0,On($.parameters,_e,ha),void 0,xn($.body,_e,e)),$),$)):ue=Sn(ue,xn($,_e,e)),Ni($)){let G=sc($);w[G]=pn(w[G],$)}else ue=pn(ue,$);return zp(ue)}function kn($){let ue;if(Mr($,1)?ue=Sn(ue,Ir(it(r.createClassDeclaration(On($.modifiers,Ht,Ns),r.getDeclarationName($,!0,!0),void 0,On($.heritageClauses,_e,dd),On($.members,_e,_l)),$),$)):ue=Sn(ue,xn($,_e,e)),Ni($)){let G=sc($);w[G]=pn(w[G],$)}else ue=pn(ue,$);return zp(ue)}function _n($){let ue,G,Oe;if(Mr($,1)){let je,Ge=!1;for(let kt of $.declarationList.declarations)if(Re(kt.name)&&rv(kt.name))if(je||(je=On($.modifiers,Ht,Ha)),kt.initializer){let Kt=r.updateVariableDeclaration(kt,kt.name,void 0,void 0,gn(kt.name,$e(kt.initializer,_e,ot)));G=Sn(G,Kt)}else G=Sn(G,kt);else if(kt.initializer)if(!La(kt.name)&&(xs(kt.initializer)||ms(kt.initializer)||_u(kt.initializer))){let Kt=r.createAssignment(it(r.createPropertyAccessExpression(r.createIdentifier(\"exports\"),kt.name),kt.name),r.createIdentifier(c_(kt.name))),ln=r.createVariableDeclaration(kt.name,kt.exclamationToken,kt.type,$e(kt.initializer,_e,ot));G=Sn(G,ln),Oe=Sn(Oe,Kt),Ge=!0}else Oe=Sn(Oe,$n(kt));if(G&&(ue=Sn(ue,r.updateVariableStatement($,je,r.updateVariableDeclarationList($.declarationList,G)))),Oe){let kt=Ir(it(r.createExpressionStatement(r.inlineExpressions(Oe)),$),$);Ge&&eO(kt),ue=Sn(ue,kt)}}else ue=Sn(ue,xn($,_e,e));if(Ni($)){let je=sc($);w[je]=nn(w[je],$)}else ue=nn(ue,$);return zp(ue)}function Gt($,ue,G){let Oe=ce($);if(Oe){let je=E3($)?ue:r.createAssignment($,ue);for(let Ge of Oe)Jn(je,8),je=gn(Ge,je,G);return je}return r.createAssignment($,ue)}function $n($){return La($.name)?qT($e($,_e,mW),_e,e,0,!1,Gt):r.createAssignment(it(r.createPropertyAccessExpression(r.createIdentifier(\"exports\"),$.name),$.name),$.initializer?$e($.initializer,_e,ot):r.createVoidZero())}function ui($){if(Ni($)&&$.original.kind===240){let ue=sc($);w[ue]=nn(w[ue],$.original)}return $}function Ni($){return(Ya($)&8388608)!==0}function Pi($){let ue=sc($),G=w[ue];return G?(delete w[ue],Sn(G,$)):$}function gr($,ue){if(P.exportEquals)return $;let G=ue.importClause;if(!G)return $;G.name&&($=An($,G));let Oe=G.namedBindings;if(Oe)switch(Oe.kind){case 271:$=An($,Oe);break;case 272:for(let je of Oe.elements)$=An($,je,!0);break}return $}function pt($,ue){return P.exportEquals?$:An($,ue)}function nn($,ue){if(P.exportEquals)return $;for(let G of ue.declarationList.declarations)$=Dt($,G);return $}function Dt($,ue){if(P.exportEquals)return $;if(La(ue.name))for(let G of ue.name.elements)ol(G)||($=Dt($,G));else tc(ue.name)||($=An($,ue));return $}function pn($,ue){if(P.exportEquals)return $;if(Mr(ue,1)){let G=Mr(ue,1024)?r.createIdentifier(\"default\"):r.getDeclarationName(ue);$=Kn($,G,r.getLocalName(ue),ue)}return ue.name&&($=An($,ue)),$}function An($,ue,G){let Oe=r.getDeclarationName(ue),je=P.exportSpecifiers.get(vr(Oe));if(je)for(let Ge of je)$=Kn($,Ge.name,Oe,Ge.name,void 0,G);return $}function Kn($,ue,G,Oe,je,Ge){return $=Sn($,ri(ue,G,Oe,je,Ge)),$}function hi(){let $;return m===0?$=r.createExpressionStatement(gn(r.createIdentifier(\"__esModule\"),r.createTrue())):$=r.createExpressionStatement(r.createCallExpression(r.createPropertyAccessExpression(r.createIdentifier(\"Object\"),\"defineProperty\"),void 0,[r.createIdentifier(\"exports\"),r.createStringLiteral(\"__esModule\"),r.createObjectLiteralExpression([r.createPropertyAssignment(\"value\",r.createTrue())])])),Jn($,2097152),$}function ri($,ue,G,Oe,je){let Ge=it(r.createExpressionStatement(gn($,ue,void 0,je)),G);return mu(Ge),Oe||Jn(Ge,3072),Ge}function gn($,ue,G,Oe){return it(Oe&&m!==0?r.createCallExpression(r.createPropertyAccessExpression(r.createIdentifier(\"Object\"),\"defineProperty\"),void 0,[r.createIdentifier(\"exports\"),r.createStringLiteralFromNode($),r.createObjectLiteralExpression([r.createPropertyAssignment(\"enumerable\",r.createTrue()),r.createPropertyAssignment(\"get\",r.createFunctionExpression(void 0,void 0,void 0,void 0,[],void 0,r.createBlock([r.createReturnStatement(ue)])))])]):r.createAssignment(r.createPropertyAccessExpression(r.createIdentifier(\"exports\"),r.cloneNode($)),ue),G)}function Ht($){switch($.kind){case 93:case 88:return}return $}function En($,ue,G){ue.kind===308?(C=ue,P=A[sc(C)],x($,ue,G),C=void 0,P=void 0):x($,ue,G)}function dr($,ue){return ue=S($,ue),ue.id&&F[ue.id]?ue:$===1?Se(ue):Sf(ue)?Cr(ue):ue}function Cr($){let ue=$.name,G=ve(ue);if(G!==ue){if($.objectAssignmentInitializer){let Oe=r.createAssignment(G,$.objectAssignmentInitializer);return it(r.createPropertyAssignment(ue,Oe),$)}return it(r.createPropertyAssignment(ue,G),$)}return $}function Se($){switch($.kind){case 79:return ve($);case 210:return at($);case 212:return Tt($);case 223:return nt($)}return $}function at($){if(Re($.expression)){let ue=ve($.expression);if(F[zo(ue)]=!0,!Re(ue)&&!(Ya($.expression)&8192))return xS(r.updateCallExpression($,ue,void 0,$.arguments),16)}return $}function Tt($){if(Re($.tag)){let ue=ve($.tag);if(F[zo(ue)]=!0,!Re(ue)&&!(Ya($.tag)&8192))return xS(r.updateTaggedTemplateExpression($,ue,void 0,$.template),16)}return $}function ve($){var ue,G;if(Ya($)&8192){let Oe=xO(C);return Oe?r.createPropertyAccessExpression(Oe,$):$}else if(!(tc($)&&!($.emitNode.autoGenerate.flags&64))&&!rv($)){let Oe=d.getReferencedExportContainer($,E3($));if(Oe&&Oe.kind===308)return it(r.createPropertyAccessExpression(r.createIdentifier(\"exports\"),r.cloneNode($)),$);let je=d.getReferencedImportDeclaration($);if(je){if(lm(je))return it(r.createPropertyAccessExpression(r.getGeneratedNameForNode(je.parent),r.createIdentifier(\"default\")),$);if($u(je)){let Ge=je.propertyName||je.name;return it(r.createPropertyAccessExpression(r.getGeneratedNameForNode(((G=(ue=je.parent)==null?void 0:ue.parent)==null?void 0:G.parent)||je),r.cloneNode(Ge)),$)}}}return $}function nt($){if(Mg($.operatorToken.kind)&&Re($.left)&&!tc($.left)&&!rv($.left)&&!RR($.left)){let ue=ce($.left);if(ue){let G=$;for(let Oe of ue)F[zo(G)]=!0,G=gn(Oe,G,$);return G}}return $}function ce($){if(!tc($)){let ue=d.getReferencedImportDeclaration($)||d.getReferencedValueDeclaration($);if(ue)return P&&P.exportedBindings[sc(ue)]}}}var ype,TMe=gt({\"src/compiler/transformers/module/module.ts\"(){\"use strict\";fa(),ype={name:\"typescript:dynamicimport-sync-require\",scoped:!0,text:`\n            var __syncRequire = typeof module === \"object\" && typeof module.exports === \"object\";`}}});function vpe(e){let{factory:t,startLexicalEnvironment:r,endLexicalEnvironment:i,hoistVariableDeclaration:o}=e,s=e.getCompilerOptions(),l=e.getEmitResolver(),f=e.getEmitHost(),d=e.onSubstituteNode,g=e.onEmitNode;e.onSubstituteNode=je,e.onEmitNode=Oe,e.enableSubstitution(79),e.enableSubstitution(300),e.enableSubstitution(223),e.enableSubstitution(233),e.enableEmitNotification(308);let m=[],v=[],S=[],x=[],A=[],w,C,P,F,B,q,W;return g_(e,Y);function Y(oe){if(oe.isDeclarationFile||!(oS(oe,s)||oe.transformFlags&8388608))return oe;let pe=sc(oe);w=oe,q=oe,C=m[pe]=xK(e,oe,l,s),P=t.createUniqueName(\"exports\"),S[pe]=P,F=A[pe]=t.createUniqueName(\"context\");let z=R(C.externalImports),Te=ie(oe,z),j=t.createFunctionExpression(void 0,void 0,void 0,void 0,[t.createParameterDeclaration(void 0,void 0,P),t.createParameterDeclaration(void 0,void 0,F)],void 0,Te),yt=AO(t,oe,f,s),lt=t.createArrayLiteralExpression(on(z,Vt=>Vt.name)),Qe=Jn(t.updateSourceFile(oe,it(t.createNodeArray([t.createExpressionStatement(t.createCallExpression(t.createPropertyAccessExpression(t.createIdentifier(\"System\"),\"register\"),void 0,yt?[yt,lt,j]:[lt,j]))]),oe.statements)),2048);return Ss(s)||gue(Qe,Te,Vt=>!Vt.scoped),W&&(x[pe]=W,W=void 0),w=void 0,C=void 0,P=void 0,F=void 0,B=void 0,q=void 0,Qe}function R(oe){let pe=new Map,z=[];for(let Te of oe){let j=HS(t,Te,w,f,l,s);if(j){let yt=j.text,lt=pe.get(yt);lt!==void 0?z[lt].externalImports.push(Te):(pe.set(yt,z.length),z.push({name:j,externalImports:[Te]}))}}return z}function ie(oe,pe){let z=[];r();let Te=Bf(s,\"alwaysStrict\")||!s.noImplicitUseStrict&&Lc(w),j=t.copyPrologue(oe.statements,z,Te,U);z.push(t.createVariableStatement(void 0,t.createVariableDeclarationList([t.createVariableDeclaration(\"__moduleName\",void 0,void 0,t.createLogicalAnd(F,t.createPropertyAccessExpression(F,\"id\")))]))),$e(C.externalHelpersImportDeclaration,U,ca);let yt=On(oe.statements,U,ca,j);si(z,B),em(z,i());let lt=Q(z),Qe=oe.transformFlags&2097152?t.createModifiersFromModifierFlags(512):void 0,Vt=t.createObjectLiteralExpression([t.createPropertyAssignment(\"setters\",Z(lt,pe)),t.createPropertyAssignment(\"execute\",t.createFunctionExpression(Qe,void 0,void 0,void 0,[],void 0,t.createBlock(yt,!0)))],!0);return z.push(t.createReturnStatement(Vt)),t.createBlock(z,!0)}function Q(oe){if(!C.hasExportStarsToExportValues)return;if(!C.exportedNames&&C.exportSpecifiers.size===0){let j=!1;for(let yt of C.externalImports)if(yt.kind===275&&yt.exportClause){j=!0;break}if(!j){let yt=fe(void 0);return oe.push(yt),yt.name}}let pe=[];if(C.exportedNames)for(let j of C.exportedNames)j.escapedText!==\"default\"&&pe.push(t.createPropertyAssignment(t.createStringLiteralFromNode(j),t.createTrue()));let z=t.createUniqueName(\"exportedNames\");oe.push(t.createVariableStatement(void 0,t.createVariableDeclarationList([t.createVariableDeclaration(z,void 0,void 0,t.createObjectLiteralExpression(pe,!0))])));let Te=fe(z);return oe.push(Te),Te.name}function fe(oe){let pe=t.createUniqueName(\"exportStar\"),z=t.createIdentifier(\"m\"),Te=t.createIdentifier(\"n\"),j=t.createIdentifier(\"exports\"),yt=t.createStrictInequality(Te,t.createStringLiteral(\"default\"));return oe&&(yt=t.createLogicalAnd(yt,t.createLogicalNot(t.createCallExpression(t.createPropertyAccessExpression(oe,\"hasOwnProperty\"),void 0,[Te])))),t.createFunctionDeclaration(void 0,void 0,pe,void 0,[t.createParameterDeclaration(void 0,void 0,z)],void 0,t.createBlock([t.createVariableStatement(void 0,t.createVariableDeclarationList([t.createVariableDeclaration(j,void 0,void 0,t.createObjectLiteralExpression([]))])),t.createForInStatement(t.createVariableDeclarationList([t.createVariableDeclaration(Te)]),z,t.createBlock([Jn(t.createIfStatement(yt,t.createExpressionStatement(t.createAssignment(t.createElementAccessExpression(j,Te),t.createElementAccessExpression(z,Te)))),1)])),t.createExpressionStatement(t.createCallExpression(P,void 0,[j]))],!0))}function Z(oe,pe){let z=[];for(let Te of pe){let j=mn(Te.externalImports,Qe=>I2(t,Qe,w)),yt=j?t.getGeneratedNameForNode(j):t.createUniqueName(\"\"),lt=[];for(let Qe of Te.externalImports){let Vt=I2(t,Qe,w);switch(Qe.kind){case 269:if(!Qe.importClause)break;case 268:L.assert(Vt!==void 0),lt.push(t.createExpressionStatement(t.createAssignment(Vt,yt))),Mr(Qe,1)&&lt.push(t.createExpressionStatement(t.createCallExpression(P,void 0,[t.createStringLiteral(vr(Vt)),yt])));break;case 275:if(L.assert(Vt!==void 0),Qe.exportClause)if(m_(Qe.exportClause)){let Hn=[];for(let jr of Qe.exportClause.elements)Hn.push(t.createPropertyAssignment(t.createStringLiteral(vr(jr.name)),t.createElementAccessExpression(yt,t.createStringLiteral(vr(jr.propertyName||jr.name)))));lt.push(t.createExpressionStatement(t.createCallExpression(P,void 0,[t.createObjectLiteralExpression(Hn,!0)])))}else lt.push(t.createExpressionStatement(t.createCallExpression(P,void 0,[t.createStringLiteral(vr(Qe.exportClause.name)),yt])));else lt.push(t.createExpressionStatement(t.createCallExpression(oe,void 0,[yt])));break}}z.push(t.createFunctionExpression(void 0,void 0,void 0,void 0,[t.createParameterDeclaration(void 0,void 0,yt)],void 0,t.createBlock(lt,!0)))}return t.createArrayLiteralExpression(z,!0)}function U(oe){switch(oe.kind){case 269:return re(oe);case 268:return _e(oe);case 275:return le(oe);case 274:return ge(oe);default:return Gt(oe)}}function re(oe){let pe;if(oe.importClause&&o(I2(t,oe,w)),Ye(oe)){let z=sc(oe);v[z]=ct(v[z],oe)}else pe=ct(pe,oe);return zp(pe)}function le(oe){L.assertIsDefined(oe)}function _e(oe){L.assert(ab(oe),\"import= for internal module references should be handled in an earlier transformer.\");let pe;if(o(I2(t,oe,w)),Ye(oe)){let z=sc(oe);v[z]=Rt(v[z],oe)}else pe=Rt(pe,oe);return zp(pe)}function ge(oe){if(oe.isExportEquals)return;let pe=$e(oe.expression,Cr,ot),z=oe.original;if(z&&Ye(z)){let Te=sc(oe);v[Te]=tn(v[Te],t.createIdentifier(\"default\"),pe,!0)}else return kn(t.createIdentifier(\"default\"),pe,!0)}function X(oe){if(Mr(oe,1)?B=Sn(B,t.updateFunctionDeclaration(oe,On(oe.modifiers,G,Ns),oe.asteriskToken,t.getDeclarationName(oe,!0,!0),void 0,On(oe.parameters,Cr,ha),void 0,$e(oe.body,Cr,Va))):B=Sn(B,xn(oe,Cr,e)),Ye(oe)){let pe=sc(oe);v[pe]=zt(v[pe],oe)}else B=zt(B,oe)}function Ve(oe){let pe,z=t.getLocalName(oe);if(o(z),pe=Sn(pe,it(t.createExpressionStatement(t.createAssignment(z,it(t.createClassExpression(On(oe.modifiers,G,Ns),oe.name,void 0,On(oe.heritageClauses,Cr,dd),On(oe.members,Cr,_l)),oe))),oe)),Ye(oe)){let Te=sc(oe);v[Te]=zt(v[Te],oe)}else pe=zt(pe,oe);return zp(pe)}function we(oe){if(!Pe(oe.declarationList))return $e(oe,Cr,ca);let pe,z=Mr(oe,1),Te=Ye(oe);for(let yt of oe.declarationList.declarations)yt.initializer?pe=Sn(pe,Ce(yt,z&&!Te)):ke(yt);let j;if(pe&&(j=Sn(j,it(t.createExpressionStatement(t.inlineExpressions(pe)),oe))),Te){let yt=sc(oe);v[yt]=We(v[yt],oe,z)}else j=We(j,oe,!1);return zp(j)}function ke(oe){if(La(oe.name))for(let pe of oe.name.elements)ol(pe)||ke(pe);else o(t.cloneNode(oe.name))}function Pe(oe){return(Ya(oe)&4194304)===0&&(q.kind===308||(ec(oe).flags&3)===0)}function Ce(oe,pe){let z=pe?Ie:Be;return La(oe.name)?qT(oe,Cr,e,0,!1,z):oe.initializer?z(oe.name,$e(oe.initializer,Cr,ot)):oe.name}function Ie(oe,pe,z){return Ne(oe,pe,z,!0)}function Be(oe,pe,z){return Ne(oe,pe,z,!1)}function Ne(oe,pe,z,Te){return o(t.cloneNode(oe)),Te?_n(oe,Ot(it(t.createAssignment(oe,pe),z))):Ot(it(t.createAssignment(oe,pe),z))}function Le(oe){if(Ye(oe)&&oe.original.kind===240){let pe=sc(oe),z=Mr(oe.original,1);v[pe]=We(v[pe],oe.original,z)}return oe}function Ye(oe){return(Ya(oe)&8388608)!==0}function _t(oe){let pe=sc(oe),z=v[pe];if(z)return delete v[pe],Sn(z,oe);{let Te=ec(oe);if(Nw(Te))return Sn(Qt(z,Te),oe)}return oe}function ct(oe,pe){if(C.exportEquals)return oe;let z=pe.importClause;if(!z)return oe;z.name&&(oe=Qt(oe,z));let Te=z.namedBindings;if(Te)switch(Te.kind){case 271:oe=Qt(oe,Te);break;case 272:for(let j of Te.elements)oe=Qt(oe,j);break}return oe}function Rt(oe,pe){return C.exportEquals?oe:Qt(oe,pe)}function We(oe,pe,z){if(C.exportEquals)return oe;for(let Te of pe.declarationList.declarations)(Te.initializer||z)&&(oe=qe(oe,Te,z));return oe}function qe(oe,pe,z){if(C.exportEquals)return oe;if(La(pe.name))for(let Te of pe.name.elements)ol(Te)||(oe=qe(oe,Te,z));else if(!tc(pe.name)){let Te;z&&(oe=tn(oe,pe.name,t.getLocalName(pe)),Te=vr(pe.name)),oe=Qt(oe,pe,Te)}return oe}function zt(oe,pe){if(C.exportEquals)return oe;let z;if(Mr(pe,1)){let Te=Mr(pe,1024)?t.createStringLiteral(\"default\"):pe.name;oe=tn(oe,Te,t.getLocalName(pe)),z=c_(Te)}return pe.name&&(oe=Qt(oe,pe,z)),oe}function Qt(oe,pe,z){if(C.exportEquals)return oe;let Te=t.getDeclarationName(pe),j=C.exportSpecifiers.get(vr(Te));if(j)for(let yt of j)yt.name.escapedText!==z&&(oe=tn(oe,yt.name,Te));return oe}function tn(oe,pe,z,Te){return oe=Sn(oe,kn(pe,z,Te)),oe}function kn(oe,pe,z){let Te=t.createExpressionStatement(_n(oe,pe));return mu(Te),z||Jn(Te,3072),Te}function _n(oe,pe){let z=Re(oe)?t.createStringLiteralFromNode(oe):oe;return Jn(pe,Ya(pe)|3072),hl(t.createCallExpression(P,void 0,[z,pe]),pe)}function Gt(oe){switch(oe.kind){case 240:return we(oe);case 259:return X(oe);case 260:return Ve(oe);case 245:return $n(oe,!0);case 246:return ui(oe);case 247:return Ni(oe);case 243:return pt(oe);case 244:return nn(oe);case 253:return Dt(oe);case 251:return pn(oe);case 252:return An(oe);case 266:return Kn(oe);case 292:return hi(oe);case 293:return ri(oe);case 255:return gn(oe);case 295:return Ht(oe);case 238:return En(oe);case 358:return Le(oe);case 359:return _t(oe);default:return Cr(oe)}}function $n(oe,pe){let z=q;return q=oe,oe=t.updateForStatement(oe,$e(oe.initializer,pe?gr:Se,pp),$e(oe.condition,Cr,ot),$e(oe.incrementor,Se,ot),Vf(oe.statement,pe?Gt:Cr,e)),q=z,oe}function ui(oe){let pe=q;return q=oe,oe=t.updateForInStatement(oe,gr(oe.initializer),$e(oe.expression,Cr,ot),Vf(oe.statement,Gt,e)),q=pe,oe}function Ni(oe){let pe=q;return q=oe,oe=t.updateForOfStatement(oe,oe.awaitModifier,gr(oe.initializer),$e(oe.expression,Cr,ot),Vf(oe.statement,Gt,e)),q=pe,oe}function Pi(oe){return pu(oe)&&Pe(oe)}function gr(oe){if(Pi(oe)){let pe;for(let z of oe.declarations)pe=Sn(pe,Ce(z,!1)),z.initializer||ke(z);return pe?t.inlineExpressions(pe):t.createOmittedExpression()}else return $e(oe,Se,pp)}function pt(oe){return t.updateDoStatement(oe,Vf(oe.statement,Gt,e),$e(oe.expression,Cr,ot))}function nn(oe){return t.updateWhileStatement(oe,$e(oe.expression,Cr,ot),Vf(oe.statement,Gt,e))}function Dt(oe){return t.updateLabeledStatement(oe,oe.label,L.checkDefined($e(oe.statement,Gt,ca,t.liftToBlock)))}function pn(oe){return t.updateWithStatement(oe,$e(oe.expression,Cr,ot),L.checkDefined($e(oe.statement,Gt,ca,t.liftToBlock)))}function An(oe){return t.updateSwitchStatement(oe,$e(oe.expression,Cr,ot),L.checkDefined($e(oe.caseBlock,Gt,gO)))}function Kn(oe){let pe=q;return q=oe,oe=t.updateCaseBlock(oe,On(oe.clauses,Gt,Kj)),q=pe,oe}function hi(oe){return t.updateCaseClause(oe,$e(oe.expression,Cr,ot),On(oe.statements,Gt,ca))}function ri(oe){return xn(oe,Gt,e)}function gn(oe){return xn(oe,Gt,e)}function Ht(oe){let pe=q;return q=oe,oe=t.updateCatchClause(oe,oe.variableDeclaration,L.checkDefined($e(oe.block,Gt,Va))),q=pe,oe}function En(oe){let pe=q;return q=oe,oe=xn(oe,Gt,e),q=pe,oe}function dr(oe,pe){if(!(oe.transformFlags&276828160))return oe;switch(oe.kind){case 245:return $n(oe,!1);case 241:return at(oe);case 214:return Tt(oe,pe);case 356:return ve(oe,pe);case 223:if(Fg(oe))return ce(oe,pe);break;case 210:if(Dd(oe))return nt(oe);break;case 221:case 222:return ue(oe,pe)}return xn(oe,Cr,e)}function Cr(oe){return dr(oe,!1)}function Se(oe){return dr(oe,!0)}function at(oe){return t.updateExpressionStatement(oe,$e(oe.expression,Se,ot))}function Tt(oe,pe){return t.updateParenthesizedExpression(oe,$e(oe.expression,pe?Se:Cr,ot))}function ve(oe,pe){return t.updatePartiallyEmittedExpression(oe,$e(oe.expression,pe?Se:Cr,ot))}function nt(oe){let pe=HS(t,oe,w,f,l,s),z=$e(Sl(oe.arguments),Cr,ot),Te=pe&&(!z||!yo(z)||z.text!==pe.text)?pe:z;return t.createCallExpression(t.createPropertyAccessExpression(F,t.createIdentifier(\"import\")),void 0,Te?[Te]:[])}function ce(oe,pe){return $(oe.left)?qT(oe,Cr,e,0,!pe):xn(oe,Cr,e)}function $(oe){if(Iu(oe,!0))return $(oe.left);if(Km(oe))return $(oe.expression);if(rs(oe))return vt(oe.properties,$);if(fu(oe))return vt(oe.elements,$);if(Sf(oe))return $(oe.name);if(yl(oe))return $(oe.initializer);if(Re(oe)){let pe=l.getReferencedExportContainer(oe);return pe!==void 0&&pe.kind===308}else return!1}function ue(oe,pe){if((oe.operator===45||oe.operator===46)&&Re(oe.operand)&&!tc(oe.operand)&&!rv(oe.operand)&&!RR(oe.operand)){let z=rt(oe.operand);if(z){let Te,j=$e(oe.operand,Cr,ot);tv(oe)?j=t.updatePrefixUnaryExpression(oe,j):(j=t.updatePostfixUnaryExpression(oe,j),pe||(Te=t.createTempVariable(o),j=t.createAssignment(Te,j),it(j,oe)),j=t.createComma(j,t.cloneNode(oe.operand)),it(j,oe));for(let yt of z)j=_n(yt,Ot(j));return Te&&(j=t.createComma(j,Te),it(j,oe)),j}}return xn(oe,Cr,e)}function G(oe){switch(oe.kind){case 93:case 88:return}return oe}function Oe(oe,pe,z){if(pe.kind===308){let Te=sc(pe);w=pe,C=m[Te],P=S[Te],W=x[Te],F=A[Te],W&&delete x[Te],g(oe,pe,z),w=void 0,C=void 0,P=void 0,F=void 0,W=void 0}else g(oe,pe,z)}function je(oe,pe){return pe=d(oe,pe),Ke(pe)?pe:oe===1?Kt(pe):oe===4?Ge(pe):pe}function Ge(oe){switch(oe.kind){case 300:return kt(oe)}return oe}function kt(oe){var pe,z;let Te=oe.name;if(!tc(Te)&&!rv(Te)){let j=l.getReferencedImportDeclaration(Te);if(j){if(lm(j))return it(t.createPropertyAssignment(t.cloneNode(Te),t.createPropertyAccessExpression(t.getGeneratedNameForNode(j.parent),t.createIdentifier(\"default\"))),oe);if($u(j))return it(t.createPropertyAssignment(t.cloneNode(Te),t.createPropertyAccessExpression(t.getGeneratedNameForNode(((z=(pe=j.parent)==null?void 0:pe.parent)==null?void 0:z.parent)||j),t.cloneNode(j.propertyName||j.name))),oe)}}return oe}function Kt(oe){switch(oe.kind){case 79:return ln(oe);case 223:return ir(oe);case 233:return ae(oe)}return oe}function ln(oe){var pe,z;if(Ya(oe)&8192){let Te=xO(w);return Te?t.createPropertyAccessExpression(Te,oe):oe}if(!tc(oe)&&!rv(oe)){let Te=l.getReferencedImportDeclaration(oe);if(Te){if(lm(Te))return it(t.createPropertyAccessExpression(t.getGeneratedNameForNode(Te.parent),t.createIdentifier(\"default\")),oe);if($u(Te))return it(t.createPropertyAccessExpression(t.getGeneratedNameForNode(((z=(pe=Te.parent)==null?void 0:pe.parent)==null?void 0:z.parent)||Te),t.cloneNode(Te.propertyName||Te.name)),oe)}}return oe}function ir(oe){if(Mg(oe.operatorToken.kind)&&Re(oe.left)&&!tc(oe.left)&&!rv(oe.left)&&!RR(oe.left)){let pe=rt(oe.left);if(pe){let z=oe;for(let Te of pe)z=_n(Te,Ot(z));return z}}return oe}function ae(oe){return PA(oe)?t.createPropertyAccessExpression(F,t.createIdentifier(\"meta\")):oe}function rt(oe){let pe;if(!tc(oe)){let z=l.getReferencedImportDeclaration(oe)||l.getReferencedValueDeclaration(oe);if(z){let Te=l.getReferencedExportContainer(oe,!1);Te&&Te.kind===308&&(pe=Sn(pe,t.getDeclarationName(z))),pe=si(pe,C&&C.exportedBindings[sc(z)])}}return pe}function Ot(oe){return W===void 0&&(W=[]),W[zo(oe)]=!0,oe}function Ke(oe){return W&&oe.id&&W[oe.id]}}var SMe=gt({\"src/compiler/transformers/module/system.ts\"(){\"use strict\";fa()}});function GK(e){let{factory:t,getEmitHelperFactory:r}=e,i=e.getEmitHost(),o=e.getEmitResolver(),s=e.getCompilerOptions(),l=Do(s),f=e.onEmitNode,d=e.onSubstituteNode;e.onEmitNode=q,e.onSubstituteNode=W,e.enableEmitNotification(308),e.enableSubstitution(79);let g,m,v;return g_(e,S);function S(R){if(R.isDeclarationFile)return R;if(Lc(R)||u_(s)){m=R,v=void 0;let ie=x(R);return m=void 0,v&&(ie=t.updateSourceFile(ie,it(t.createNodeArray(rH(ie.statements.slice(),v)),ie.statements))),!Lc(R)||vt(ie.statements,Ow)?ie:t.updateSourceFile(ie,it(t.createNodeArray([...ie.statements,EO(t)]),ie.statements))}return R}function x(R){let ie=nJ(t,r(),R,s);if(ie){let Q=[],fe=t.copyPrologue(R.statements,Q);return Sn(Q,ie),si(Q,On(R.statements,A,ca,fe)),t.updateSourceFile(R,it(t.createNodeArray(Q),R.statements))}else return xn(R,A,e)}function A(R){switch(R.kind){case 268:return Rl(s)>=100?C(R):void 0;case 274:return F(R);case 275:return B(R)}return R}function w(R){let ie=HS(t,R,L.checkDefined(m),i,o,s),Q=[];if(ie&&Q.push(ie),!v){let Z=t.createUniqueName(\"_createRequire\",48),U=t.createImportDeclaration(void 0,t.createImportClause(!1,void 0,t.createNamedImports([t.createImportSpecifier(!1,t.createIdentifier(\"createRequire\"),Z)])),t.createStringLiteral(\"module\")),re=t.createUniqueName(\"__require\",48),le=t.createVariableStatement(void 0,t.createVariableDeclarationList([t.createVariableDeclaration(re,void 0,void 0,t.createCallExpression(t.cloneNode(Z),void 0,[t.createPropertyAccessExpression(t.createMetaProperty(100,t.createIdentifier(\"meta\")),t.createIdentifier(\"url\"))]))],l>=2?2:0));v=[U,le]}let fe=v[1].declarationList.declarations[0].name;return L.assertNode(fe,Re),t.createCallExpression(t.cloneNode(fe),void 0,Q)}function C(R){L.assert(ab(R),\"import= for internal module references should be handled in an earlier transformer.\");let ie;return ie=Sn(ie,Ir(it(t.createVariableStatement(void 0,t.createVariableDeclarationList([t.createVariableDeclaration(t.cloneNode(R.name),void 0,void 0,w(R))],l>=2?2:0)),R),R)),ie=P(ie,R),zp(ie)}function P(R,ie){return Mr(ie,1)&&(R=Sn(R,t.createExportDeclaration(void 0,ie.isTypeOnly,t.createNamedExports([t.createExportSpecifier(!1,void 0,vr(ie.name))])))),R}function F(R){return R.isExportEquals?void 0:R}function B(R){if(s.module!==void 0&&s.module>5||!R.exportClause||!qm(R.exportClause)||!R.moduleSpecifier)return R;let ie=R.exportClause.name,Q=t.getGeneratedNameForNode(ie),fe=t.createImportDeclaration(void 0,t.createImportClause(!1,void 0,t.createNamespaceImport(Q)),R.moduleSpecifier,R.assertClause);Ir(fe,R.exportClause);let Z=v6(R)?t.createExportDefault(Q):t.createExportDeclaration(void 0,!1,t.createNamedExports([t.createExportSpecifier(!1,Q,ie)]));return Ir(Z,R),[fe,Z]}function q(R,ie,Q){Li(ie)?((Lc(ie)||u_(s))&&s.importHelpers&&(g=new Map),f(R,ie,Q),g=void 0):f(R,ie,Q)}function W(R,ie){return ie=d(R,ie),g&&Re(ie)&&Ya(ie)&8192?Y(ie):ie}function Y(R){let ie=vr(R),Q=g.get(ie);return Q||g.set(ie,Q=t.createUniqueName(ie,48)),Q}}var xMe=gt({\"src/compiler/transformers/module/esnextAnd2015.ts\"(){\"use strict\";fa()}});function bpe(e){let t=e.onSubstituteNode,r=e.onEmitNode,i=GK(e),o=e.onSubstituteNode,s=e.onEmitNode;e.onSubstituteNode=t,e.onEmitNode=r;let l=FK(e),f=e.onSubstituteNode,d=e.onEmitNode;e.onSubstituteNode=m,e.onEmitNode=v,e.enableSubstitution(308),e.enableEmitNotification(308);let g;return A;function m(C,P){return Li(P)?(g=P,t(C,P)):g?g.impliedNodeFormat===99?o(C,P):f(C,P):t(C,P)}function v(C,P,F){return Li(P)&&(g=P),g?g.impliedNodeFormat===99?s(C,P,F):d(C,P,F):r(C,P,F)}function S(C){return C.impliedNodeFormat===99?i:l}function x(C){if(C.isDeclarationFile)return C;g=C;let P=S(C)(C);return g=void 0,L.assert(Li(P)),P}function A(C){return C.kind===308?x(C):w(C)}function w(C){return e.factory.createBundle(on(C.sourceFiles,x),C.prepends)}}var AMe=gt({\"src/compiler/transformers/module/node.ts\"(){\"use strict\";fa()}});function xF(e){return wi(e)||Na(e)||Yd(e)||Wo(e)||Ng(e)||zy(e)||dO(e)||p2(e)||Nc(e)||zm(e)||Jc(e)||ha(e)||_c(e)||Vg(e)||Nl(e)||Ep(e)||Ec(e)||DS(e)||br(e)||Mf(e)}function Epe(e){if(Ng(e)||zy(e))return t;return zm(e)||Nc(e)?i:zg(e);function t(s){let l=r(s);return l!==void 0?{diagnosticMessage:l,errorNode:e,typeName:e.name}:void 0}function r(s){return Ca(e)?s.errorModuleName?s.accessibility===2?_.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:_.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1:e.parent.kind===260?s.errorModuleName?s.accessibility===2?_.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:_.Public_property_0_of_exported_class_has_or_is_using_private_name_1:s.errorModuleName?_.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2:_.Property_0_of_exported_interface_has_or_is_using_private_name_1}function i(s){let l=o(s);return l!==void 0?{diagnosticMessage:l,errorNode:e,typeName:e.name}:void 0}function o(s){return Ca(e)?s.errorModuleName?s.accessibility===2?_.Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:_.Public_static_method_0_of_exported_class_has_or_is_using_private_name_1:e.parent.kind===260?s.errorModuleName?s.accessibility===2?_.Public_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Public_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:_.Public_method_0_of_exported_class_has_or_is_using_private_name_1:s.errorModuleName?_.Method_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2:_.Method_0_of_exported_interface_has_or_is_using_private_name_1}}function zg(e){if(wi(e)||Na(e)||Yd(e)||br(e)||Wo(e)||Ec(e))return r;return Ng(e)||zy(e)?i:dO(e)||p2(e)||Nc(e)||zm(e)||Jc(e)||DS(e)?o:ha(e)?Ad(e,e.parent)&&Mr(e.parent,8)?r:s:_c(e)?f:Vg(e)?d:Nl(e)?g:Ep(e)||Mf(e)?m:L.assertNever(e,`Attempted to set a declaration diagnostic context for unhandled node kind: ${L.formatSyntaxKind(e.kind)}`);function t(v){if(e.kind===257||e.kind===205)return v.errorModuleName?v.accessibility===2?_.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Exported_variable_0_has_or_is_using_name_1_from_private_module_2:_.Exported_variable_0_has_or_is_using_private_name_1;if(e.kind===169||e.kind===208||e.kind===168||e.kind===166&&Mr(e.parent,8))return Ca(e)?v.errorModuleName?v.accessibility===2?_.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:_.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1:e.parent.kind===260||e.kind===166?v.errorModuleName?v.accessibility===2?_.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:_.Public_property_0_of_exported_class_has_or_is_using_private_name_1:v.errorModuleName?_.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2:_.Property_0_of_exported_interface_has_or_is_using_private_name_1}function r(v){let S=t(v);return S!==void 0?{diagnosticMessage:S,errorNode:e,typeName:e.name}:void 0}function i(v){let S;return e.kind===175?Ca(e)?S=v.errorModuleName?_.Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:_.Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_private_name_1:S=v.errorModuleName?_.Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:_.Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_private_name_1:Ca(e)?S=v.errorModuleName?v.accessibility===2?_.Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:_.Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_private_name_1:S=v.errorModuleName?v.accessibility===2?_.Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:_.Return_type_of_public_getter_0_from_exported_class_has_or_is_using_private_name_1,{diagnosticMessage:S,errorNode:e.name,typeName:e.name}}function o(v){let S;switch(e.kind){case 177:S=v.errorModuleName?_.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:_.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0;break;case 176:S=v.errorModuleName?_.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:_.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0;break;case 178:S=v.errorModuleName?_.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:_.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0;break;case 171:case 170:Ca(e)?S=v.errorModuleName?v.accessibility===2?_.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:_.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1:_.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0:e.parent.kind===260?S=v.errorModuleName?v.accessibility===2?_.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:_.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1:_.Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0:S=v.errorModuleName?_.Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1:_.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0;break;case 259:S=v.errorModuleName?v.accessibility===2?_.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:_.Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1:_.Return_type_of_exported_function_has_or_is_using_private_name_0;break;default:return L.fail(\"This is unknown kind for signature: \"+e.kind)}return{diagnosticMessage:S,errorNode:e.name||e}}function s(v){let S=l(v);return S!==void 0?{diagnosticMessage:S,errorNode:e,typeName:e.name}:void 0}function l(v){switch(e.parent.kind){case 173:return v.errorModuleName?v.accessibility===2?_.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2:_.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1;case 177:case 182:return v.errorModuleName?_.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:_.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1;case 176:return v.errorModuleName?_.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:_.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1;case 178:return v.errorModuleName?_.Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:_.Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_private_name_1;case 171:case 170:return Ca(e.parent)?v.errorModuleName?v.accessibility===2?_.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2:_.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1:e.parent.parent.kind===260?v.errorModuleName?v.accessibility===2?_.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2:_.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1:v.errorModuleName?_.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2:_.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1;case 259:case 181:return v.errorModuleName?v.accessibility===2?_.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2:_.Parameter_0_of_exported_function_has_or_is_using_private_name_1;case 175:case 174:return v.errorModuleName?v.accessibility===2?_.Parameter_0_of_accessor_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:_.Parameter_0_of_accessor_has_or_is_using_name_1_from_private_module_2:_.Parameter_0_of_accessor_has_or_is_using_private_name_1;default:return L.fail(`Unknown parent for parameter: ${L.formatSyntaxKind(e.parent.kind)}`)}}function f(){let v;switch(e.parent.kind){case 260:v=_.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1;break;case 261:v=_.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1;break;case 197:v=_.Type_parameter_0_of_exported_mapped_object_type_is_using_private_name_1;break;case 182:case 177:v=_.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1;break;case 176:v=_.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1;break;case 171:case 170:Ca(e.parent)?v=_.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1:e.parent.parent.kind===260?v=_.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1:v=_.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1;break;case 181:case 259:v=_.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1;break;case 192:v=_.Extends_clause_for_inferred_type_0_has_or_is_using_private_name_1;break;case 262:v=_.Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1;break;default:return L.fail(\"This is unknown parent for type parameter: \"+e.parent.kind)}return{diagnosticMessage:v,errorNode:e,typeName:e.name}}function d(){let v;return sl(e.parent.parent)?v=dd(e.parent)&&e.parent.token===117?_.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1:e.parent.parent.name?_.extends_clause_of_exported_class_0_has_or_is_using_private_name_1:_.extends_clause_of_exported_class_has_or_is_using_private_name_0:v=_.extends_clause_of_exported_interface_0_has_or_is_using_private_name_1,{diagnosticMessage:v,errorNode:e,typeName:sa(e.parent.parent)}}function g(){return{diagnosticMessage:_.Import_declaration_0_is_using_private_name_1,errorNode:e,typeName:e.name}}function m(v){return{diagnosticMessage:v.errorModuleName?_.Exported_type_alias_0_has_or_is_using_private_name_1_from_module_2:_.Exported_type_alias_0_has_or_is_using_private_name_1,errorNode:Mf(e)?L.checkDefined(e.typeExpression):e.type,typeName:Mf(e)?sa(e):e.name}}}var CMe=gt({\"src/compiler/transformers/declarations/diagnostics.ts\"(){\"use strict\";fa()}});function Tpe(e,t,r){let i=e.getCompilerOptions();return uN(t,e,D,i,r?[r]:Pr(e.getSourceFiles(),LH),[UK],!1).diagnostics}function Spe(e,t){let r=t.text.substring(e.pos,e.end);return jl(r,\"@internal\")}function BK(e,t){let r=ea(e);if(r&&r.kind===166){let o=r.parent.parameters.indexOf(r),s=o>0?r.parent.parameters[o-1]:void 0,l=t.text,f=s?Qi(eb(l,xo(l,s.end+1,!1,!0)),Nm(l,e.pos)):eb(l,xo(l,e.pos,!1,!0));return f&&f.length&&Spe(To(f),t)}let i=r&&bH(r,t);return!!mn(i,o=>Spe(o,t))}function UK(e){let t=()=>L.fail(\"Diagnostic emitted without context\"),r=t,i=!0,o=!1,s=!1,l=!1,f=!1,d,g,m,v,S,x,{factory:A}=e,w=e.getEmitHost(),C={trackSymbol:_e,reportInaccessibleThisError:ke,reportInaccessibleUniqueSymbolError:Ve,reportCyclicStructureError:we,reportPrivateInBaseOfClassExpression:ge,reportLikelyUnsafeImportRequiredError:Pe,reportTruncationError:Ce,moduleResolverHost:w,trackReferencedAmbientModule:U,trackExternalModuleSymbolOfImportTypeNode:le,reportNonlocalAugmentation:Ie,reportNonSerializableProperty:Be,reportImportTypeNodeResolutionModeOverride:Ne},P,F,B,q,W,Y,R=e.getEmitResolver(),ie=e.getCompilerOptions(),{noResolve:Q,stripInternal:fe}=ie;return Ye;function Z(G){if(!!G){g=g||new Set;for(let Oe of G)g.add(Oe)}}function U(G,Oe){let je=R.getTypeReferenceDirectivesForSymbol(Oe,67108863);if(Fn(je))return Z(je);let Ge=Gn(G);q.set(sc(Ge),Ge)}function re(G){if(G.accessibility===0){if(G&&G.aliasesToMakeVisible)if(!m)m=G.aliasesToMakeVisible;else for(let Oe of G.aliasesToMakeVisible)Rf(m,Oe)}else{let Oe=r(G);if(Oe)return Oe.typeName?e.addDiagnostic(hr(G.errorNode||Oe.errorNode,Oe.diagnosticMessage,Qc(Oe.typeName),G.errorSymbolName,G.errorModuleName)):e.addDiagnostic(hr(G.errorNode||Oe.errorNode,Oe.diagnosticMessage,G.errorSymbolName,G.errorModuleName)),!0}return!1}function le(G){o||(x||(x=[])).push(G)}function _e(G,Oe,je){if(G.flags&262144)return!1;let Ge=re(R.isSymbolAccessible(G,Oe,je,!0));return Z(R.getTypeReferenceDirectivesForSymbol(G,je)),Ge}function ge(G){(P||F)&&e.addDiagnostic(hr(P||F,_.Property_0_of_exported_class_expression_may_not_be_private_or_protected,G))}function X(){return P?os(P):F&&sa(F)?os(sa(F)):F&&pc(F)?F.isExportEquals?\"export=\":\"default\":\"(Missing)\"}function Ve(){(P||F)&&e.addDiagnostic(hr(P||F,_.The_inferred_type_of_0_references_an_inaccessible_1_type_A_type_annotation_is_necessary,X(),\"unique symbol\"))}function we(){(P||F)&&e.addDiagnostic(hr(P||F,_.The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialized_A_type_annotation_is_necessary,X()))}function ke(){(P||F)&&e.addDiagnostic(hr(P||F,_.The_inferred_type_of_0_references_an_inaccessible_1_type_A_type_annotation_is_necessary,X(),\"this\"))}function Pe(G){(P||F)&&e.addDiagnostic(hr(P||F,_.The_inferred_type_of_0_cannot_be_named_without_a_reference_to_1_This_is_likely_not_portable_A_type_annotation_is_necessary,X(),G))}function Ce(){(P||F)&&e.addDiagnostic(hr(P||F,_.The_inferred_type_of_this_node_exceeds_the_maximum_length_the_compiler_will_serialize_An_explicit_type_annotation_is_needed))}function Ie(G,Oe,je){var Ge;let kt=(Ge=Oe.declarations)==null?void 0:Ge.find(ln=>Gn(ln)===G),Kt=Pr(je.declarations,ln=>Gn(ln)!==G);if(kt&&Kt)for(let ln of Kt)e.addDiagnostic(Ao(hr(ln,_.Declaration_augments_declaration_in_another_file_This_cannot_be_serialized),hr(kt,_.This_is_the_declaration_being_augmented_Consider_moving_the_augmenting_declaration_into_the_same_file)))}function Be(G){(P||F)&&e.addDiagnostic(hr(P||F,_.The_type_of_this_node_cannot_be_serialized_because_its_property_0_cannot_be_serialized,G))}function Ne(){!SR()&&(P||F)&&e.addDiagnostic(hr(P||F,_.The_type_of_this_expression_cannot_be_named_without_a_resolution_mode_assertion_which_is_an_unstable_feature_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next))}function Le(G,Oe){let je=r;r=kt=>kt.errorNode&&xF(kt.errorNode)?zg(kt.errorNode)(kt):{diagnosticMessage:kt.errorModuleName?_.Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit:_.Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_declaration_emit,errorNode:kt.errorNode||G};let Ge=R.getDeclarationStatementsForSourceFile(G,tE,C,Oe);return r=je,Ge}function Ye(G){if(G.kind===308&&G.isDeclarationFile)return G;if(G.kind===309){o=!0,q=new Map,W=new Map;let Ot=!1,Ke=A.createBundle(on(G.sourceFiles,z=>{if(z.isDeclarationFile)return;if(Ot=Ot||z.hasNoDefaultLib,B=z,d=z,m=void 0,S=!1,v=new Map,r=t,l=!1,f=!1,_t(z,q),ct(z,W),kd(z)||Pf(z)){s=!1,i=!1;let j=Cu(z)?A.createNodeArray(Le(z,!0)):On(z.statements,ri,ca);return A.updateSourceFile(z,[A.createModuleDeclaration([A.createModifier(136)],A.createStringLiteral(Z6(e.getEmitHost(),z)),A.createModuleBlock(it(A.createNodeArray(An(j)),z.statements)))],!0,[],[],!1,[])}i=!0;let Te=Cu(z)?A.createNodeArray(Le(z)):On(z.statements,ri,ca);return A.updateSourceFile(z,An(Te),!0,[],[],!1,[])}),Zi(G.prepends,z=>{if(z.kind===311){let Te=fz(z,\"dts\",fe);return Ot=Ot||!!Te.hasNoDefaultLib,_t(Te,q),Z(on(Te.typeReferenceDirectives,j=>[j.fileName,j.resolutionMode])),ct(Te,W),Te}return z}));Ke.syntheticFileReferences=[],Ke.syntheticTypeReferences=ir(),Ke.syntheticLibReferences=ln(),Ke.hasNoDefaultLib=Ot;let oe=ni(Al(qL(G,w,!0).declarationFilePath)),pe=rt(Ke.syntheticFileReferences,oe);return q.forEach(pe),Ke}i=!0,l=!1,f=!1,d=G,B=G,r=t,o=!1,s=!1,S=!1,m=void 0,v=new Map,g=void 0,q=_t(B,new Map),W=ct(B,new Map);let Oe=[],je=ni(Al(qL(G,w,!0).declarationFilePath)),Ge=rt(Oe,je),kt;if(Cu(B))kt=A.createNodeArray(Le(G)),q.forEach(Ge),Y=Pr(kt,vT);else{let Ot=On(G.statements,ri,ca);kt=it(A.createNodeArray(An(Ot)),G.statements),q.forEach(Ge),Y=Pr(kt,vT),Lc(G)&&(!s||l&&!f)&&(kt=it(A.createNodeArray([...kt,EO(A)]),kt))}let Kt=A.updateSourceFile(G,kt,!0,Oe,ir(),G.hasNoDefaultLib,ln());return Kt.exportedModulesFromDeclarationEmit=x,Kt;function ln(){return lo(W.keys(),Ot=>({fileName:Ot,pos:-1,end:-1}))}function ir(){return g?Zi(lo(g.keys()),ae):[]}function ae([Ot,Ke]){if(Y){for(let oe of Y)if(Nl(oe)&&um(oe.moduleReference)){let pe=oe.moduleReference.expression;if(es(pe)&&pe.text===Ot)return}else if(gl(oe)&&yo(oe.moduleSpecifier)&&oe.moduleSpecifier.text===Ot)return}return{fileName:Ot,pos:-1,end:-1,...Ke?{resolutionMode:Ke}:void 0}}function rt(Ot,Ke){return oe=>{let pe;if(oe.isDeclarationFile)pe=oe.fileName;else{if(o&&ya(G.sourceFiles,oe))return;let z=qL(oe,w,!0);pe=z.declarationFilePath||z.jsFilePath||oe.fileName}if(pe){let z=sF(ie,B,Ts(Ke,w.getCurrentDirectory(),w.getCanonicalFileName),Ts(pe,w.getCurrentDirectory(),w.getCanonicalFileName),w);if(!zd(z)){Z([[z,void 0]]);return}let Te=Z1(Ke,pe,w.getCurrentDirectory(),w.getCanonicalFileName,!1);if(na(Te,\"./\")&&yA(Te)&&(Te=Te.substring(2)),na(Te,\"node_modules/\")||KS(Te))return;Ot.push({pos:-1,end:-1,fileName:Te})}}}}function _t(G,Oe){return Q||!UT(G)&&Cu(G)||mn(G.referencedFiles,je=>{let Ge=w.getSourceFileFromReference(G,je);Ge&&Oe.set(sc(Ge),Ge)}),Oe}function ct(G,Oe){return mn(G.libReferenceDirectives,je=>{w.getLibFileFromReference(je)&&Oe.set(t_(je.fileName),!0)}),Oe}function Rt(G){if(G.kind===79)return G;return G.kind===204?A.updateArrayBindingPattern(G,On(G.elements,Oe,c6)):A.updateObjectBindingPattern(G,On(G.elements,Oe,Wo));function Oe(je){return je.kind===229?je:je.propertyName&&Re(je.propertyName)&&Re(je.name)&&!je.symbol.isReferenced&&!q6(je.propertyName)?A.updateBindingElement(je,je.dotDotDotToken,void 0,je.propertyName,qe(je)?je.initializer:void 0):A.updateBindingElement(je,je.dotDotDotToken,je.propertyName,Rt(je.name),qe(je)?je.initializer:void 0)}}function We(G,Oe,je){let Ge;S||(Ge=r,r=zg(G));let kt=A.updateParameterDeclaration(G,LMe(G,Oe),G.dotDotDotToken,Rt(G.name),R.isOptionalParameter(G)?G.questionToken||A.createToken(57):void 0,Qt(G,je||G.type,!0),zt(G));return S||(r=Ge),kt}function qe(G){return kMe(G)&&R.isLiteralConstDeclaration(ea(G))}function zt(G){if(qe(G))return R.createLiteralConstValue(ea(G),C)}function Qt(G,Oe,je){if(!je&&cd(G,8)||qe(G))return;let Ge=G.kind===166&&(R.isRequiredInitializedParameter(G)||R.isOptionalUninitializedParameterProperty(G));if(Oe&&!Ge)return $e(Oe,Kn,bi);if(!ea(G))return Oe?$e(Oe,Kn,bi):A.createKeywordTypeNode(131);if(G.kind===175)return A.createKeywordTypeNode(131);P=G.name;let kt;if(S||(kt=r,r=zg(G)),G.kind===257||G.kind===205)return Kt(R.createTypeOfDeclaration(G,d,tE,C));if(G.kind===166||G.kind===169||G.kind===168)return Yd(G)||!G.initializer?Kt(R.createTypeOfDeclaration(G,d,tE,C,Ge)):Kt(R.createTypeOfDeclaration(G,d,tE,C,Ge)||R.createTypeOfExpression(G.initializer,d,tE,C));return Kt(R.createReturnTypeOfSignatureDeclaration(G,d,tE,C));function Kt(ln){return P=void 0,S||(r=kt),ln||A.createKeywordTypeNode(131)}}function tn(G){switch(G=ea(G),G.kind){case 259:case 264:case 261:case 260:case 262:case 263:return!R.isDeclarationVisible(G);case 257:return!_n(G);case 268:case 269:case 275:case 274:return!1;case 172:return!0}return!1}function kn(G){var Oe;if(G.body)return!0;let je=(Oe=G.symbol.declarations)==null?void 0:Oe.filter(Ge=>Jc(Ge)&&!Ge.body);return!je||je.indexOf(G)===je.length-1}function _n(G){return ol(G)?!1:La(G.name)?vt(G.name.elements,_n):R.isDeclarationVisible(G)}function Gt(G,Oe,je){if(cd(G,8))return A.createNodeArray();let Ge=on(Oe,kt=>We(kt,je));return Ge?A.createNodeArray(Ge,Oe.hasTrailingComma):A.createNodeArray()}function $n(G,Oe){let je;if(!Oe){let Ge=F0(G);Ge&&(je=[We(Ge)])}if(Tf(G)){let Ge;if(!Oe){let kt=jI(G);if(kt){let Kt=$(G,R.getAllAccessorDeclarations(G));Ge=We(kt,void 0,Kt)}}Ge||(Ge=A.createParameterDeclaration(void 0,void 0,\"value\")),je=Sn(je,Ge)}return A.createNodeArray(je||Je)}function ui(G,Oe){return cd(G,8)?void 0:On(Oe,Kn,_c)}function Ni(G){return Li(G)||Ep(G)||Tc(G)||sl(G)||ku(G)||Ia(G)||DS(G)||TL(G)}function Pi(G,Oe){let je=R.isEntityNameVisible(G,Oe);re(je),Z(R.getTypeReferenceDirectivesForEntityName(G))}function gr(G,Oe){return Jd(G)&&Jd(Oe)&&(G.jsDoc=Oe.jsDoc),hl(G,sm(Oe))}function pt(G,Oe){if(!!Oe){if(s=s||G.kind!==264&&G.kind!==202,es(Oe))if(o){let je=Dce(e.getEmitHost(),R,G);if(je)return A.createStringLiteral(je)}else{let je=R.getSymbolOfExternalModuleSpecifier(Oe);je&&(x||(x=[])).push(je)}return Oe}}function nn(G){if(!!R.isDeclarationVisible(G))if(G.moduleReference.kind===280){let Oe=RI(G);return A.updateImportEqualsDeclaration(G,G.modifiers,G.isTypeOnly,G.name,A.updateExternalModuleReference(G.moduleReference,pt(G,Oe)))}else{let Oe=r;return r=zg(G),Pi(G.moduleReference,d),r=Oe,G}}function Dt(G){if(!G.importClause)return A.updateImportDeclaration(G,G.modifiers,G.importClause,pt(G,G.moduleSpecifier),pn(G.assertClause));let Oe=G.importClause&&G.importClause.name&&R.isDeclarationVisible(G.importClause)?G.importClause.name:void 0;if(!G.importClause.namedBindings)return Oe&&A.updateImportDeclaration(G,G.modifiers,A.updateImportClause(G.importClause,G.importClause.isTypeOnly,Oe,void 0),pt(G,G.moduleSpecifier),pn(G.assertClause));if(G.importClause.namedBindings.kind===271){let Ge=R.isDeclarationVisible(G.importClause.namedBindings)?G.importClause.namedBindings:void 0;return Oe||Ge?A.updateImportDeclaration(G,G.modifiers,A.updateImportClause(G.importClause,G.importClause.isTypeOnly,Oe,Ge),pt(G,G.moduleSpecifier),pn(G.assertClause)):void 0}let je=Zi(G.importClause.namedBindings.elements,Ge=>R.isDeclarationVisible(Ge)?Ge:void 0);if(je&&je.length||Oe)return A.updateImportDeclaration(G,G.modifiers,A.updateImportClause(G.importClause,G.importClause.isTypeOnly,Oe,je&&je.length?A.updateNamedImports(G.importClause.namedBindings,je):void 0),pt(G,G.moduleSpecifier),pn(G.assertClause));if(R.isImportRequiredByAugmentation(G))return A.updateImportDeclaration(G,G.modifiers,void 0,pt(G,G.moduleSpecifier),pn(G.assertClause))}function pn(G){if(XS(G)!==void 0)return SR()||e.addDiagnostic(hr(G,_.resolution_mode_assertions_are_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next)),G}function An(G){for(;Fn(m);){let je=m.shift();if(!E6(je))return L.fail(`Late replaced statement was found which is not handled by the declaration transformer!: ${L.formatSyntaxKind(je.kind)}`);let Ge=i;i=je.parent&&Li(je.parent)&&!(Lc(je.parent)&&o);let kt=Ht(je);i=Ge,v.set(sc(je),kt)}return On(G,Oe,ca);function Oe(je){if(E6(je)){let Ge=sc(je);if(v.has(Ge)){let kt=v.get(Ge);return v.delete(Ge),kt&&((ba(kt)?vt(kt,l6):l6(kt))&&(l=!0),Li(je.parent)&&(ba(kt)?vt(kt,Ow):Ow(kt))&&(s=!0)),kt}}return je}}function Kn(G){if(at(G)||Kl(G)&&(tn(G)||Xy(G)&&!R.isLateBound(ea(G)))||Ia(G)&&R.isImplementationOfOverload(G)||Bue(G))return;let Oe;Ni(G)&&(Oe=d,d=G);let je=r,Ge=xF(G),kt=S,Kt=(G.kind===184||G.kind===197)&&G.parent.kind!==262;if((Nc(G)||zm(G))&&cd(G,8))return G.symbol&&G.symbol.declarations&&G.symbol.declarations[0]!==G?void 0:ln(A.createPropertyDeclaration(nt(G),G.name,void 0,void 0,void 0));if(Ge&&!S&&(r=zg(G)),bL(G)&&Pi(G.exprName,d),Kt&&(S=!0),wMe(G))switch(G.kind){case 230:{(Cd(G.expression)||bc(G.expression))&&Pi(G.expression,d);let ir=xn(G,Kn,e);return ln(A.updateExpressionWithTypeArguments(ir,ir.expression,ir.typeArguments))}case 180:{Pi(G.typeName,d);let ir=xn(G,Kn,e);return ln(A.updateTypeReferenceNode(ir,ir.typeName,ir.typeArguments))}case 177:return ln(A.updateConstructSignature(G,ui(G,G.typeParameters),Gt(G,G.parameters),Qt(G,G.type)));case 173:{let ir=A.createConstructorDeclaration(nt(G),Gt(G,G.parameters,0),void 0);return ln(ir)}case 171:{if(pi(G.name))return ln(void 0);let ir=A.createMethodDeclaration(nt(G),void 0,G.name,G.questionToken,ui(G,G.typeParameters),Gt(G,G.parameters),Qt(G,G.type),void 0);return ln(ir)}case 174:{if(pi(G.name))return ln(void 0);let ir=$(G,R.getAllAccessorDeclarations(G));return ln(A.updateGetAccessorDeclaration(G,nt(G),G.name,$n(G,cd(G,8)),Qt(G,ir),void 0))}case 175:return pi(G.name)?ln(void 0):ln(A.updateSetAccessorDeclaration(G,nt(G),G.name,$n(G,cd(G,8)),void 0));case 169:return pi(G.name)?ln(void 0):ln(A.updatePropertyDeclaration(G,nt(G),G.name,G.questionToken,Qt(G,G.type),zt(G)));case 168:return pi(G.name)?ln(void 0):ln(A.updatePropertySignature(G,nt(G),G.name,G.questionToken,Qt(G,G.type)));case 170:return pi(G.name)?ln(void 0):ln(A.updateMethodSignature(G,nt(G),G.name,G.questionToken,ui(G,G.typeParameters),Gt(G,G.parameters),Qt(G,G.type)));case 176:return ln(A.updateCallSignature(G,ui(G,G.typeParameters),Gt(G,G.parameters),Qt(G,G.type)));case 178:return ln(A.updateIndexSignature(G,nt(G),Gt(G,G.parameters),$e(G.type,Kn,bi)||A.createKeywordTypeNode(131)));case 257:return La(G.name)?dr(G.name):(Kt=!0,S=!0,ln(A.updateVariableDeclaration(G,G.name,void 0,Qt(G,G.type),zt(G))));case 165:return hi(G)&&(G.default||G.constraint)?ln(A.updateTypeParameterDeclaration(G,G.modifiers,G.name,void 0,void 0)):ln(xn(G,Kn,e));case 191:{let ir=$e(G.checkType,Kn,bi),ae=$e(G.extendsType,Kn,bi),rt=d;d=G.trueType;let Ot=$e(G.trueType,Kn,bi);d=rt;let Ke=$e(G.falseType,Kn,bi);return L.assert(ir),L.assert(ae),L.assert(Ot),L.assert(Ke),ln(A.updateConditionalTypeNode(G,ir,ae,Ot,Ke))}case 181:return ln(A.updateFunctionTypeNode(G,On(G.typeParameters,Kn,_c),Gt(G,G.parameters),L.checkDefined($e(G.type,Kn,bi))));case 182:return ln(A.updateConstructorTypeNode(G,nt(G),On(G.typeParameters,Kn,_c),Gt(G,G.parameters),L.checkDefined($e(G.type,Kn,bi))));case 202:return ib(G)?ln(A.updateImportTypeNode(G,A.updateLiteralTypeNode(G.argument,pt(G,G.argument.literal)),G.assertions,G.qualifier,On(G.typeArguments,Kn,bi),G.isTypeOf)):ln(G);default:L.assertNever(G,`Attempted to process unhandled node kind: ${L.formatSyntaxKind(G.kind)}`)}return m2(G)&&Gs(B,G.pos).line===Gs(B,G.end).line&&Jn(G,1),ln(xn(G,Kn,e));function ln(ir){return ir&&Ge&&Xy(G)&&Se(G),Ni(G)&&(d=Oe),Ge&&!S&&(r=je),Kt&&(S=kt),ir===G?ir:ir&&Ir(gr(ir,G),G)}}function hi(G){return G.parent.kind===171&&cd(G.parent,8)}function ri(G){if(!DMe(G)||at(G))return;switch(G.kind){case 275:return Li(G.parent)&&(s=!0),f=!0,A.updateExportDeclaration(G,G.modifiers,G.isTypeOnly,G.exportClause,pt(G,G.moduleSpecifier),XS(G.assertClause)?G.assertClause:void 0);case 274:{if(Li(G.parent)&&(s=!0),f=!0,G.expression.kind===79)return G;{let je=A.createUniqueName(\"_default\",16);r=()=>({diagnosticMessage:_.Default_export_of_the_module_has_or_is_using_private_name_0,errorNode:G}),F=G;let Ge=A.createVariableDeclaration(je,void 0,R.createTypeOfExpression(G.expression,G,tE,C),void 0);F=void 0;let kt=A.createVariableStatement(i?[A.createModifier(136)]:[],A.createVariableDeclarationList([Ge],2));return gr(kt,G),eO(G),[kt,A.updateExportAssignment(G,G.modifiers,je)]}}}let Oe=Ht(G);return v.set(sc(G),Oe),G}function gn(G){if(Nl(G)||cd(G,1024)||!h_(G))return G;let Oe=A.createModifiersFromModifierFlags(uu(G)&258046);return A.updateModifiers(G,Oe)}function Ht(G){if(m)for(;m8(m,G););if(at(G))return;switch(G.kind){case 268:return nn(G);case 269:return Dt(G)}if(Kl(G)&&tn(G)||Ia(G)&&R.isImplementationOfOverload(G))return;let Oe;Ni(G)&&(Oe=d,d=G);let je=xF(G),Ge=r;je&&(r=zg(G));let kt=i;switch(G.kind){case 262:{i=!1;let ln=Kt(A.updateTypeAliasDeclaration(G,nt(G),G.name,On(G.typeParameters,Kn,_c),L.checkDefined($e(G.type,Kn,bi))));return i=kt,ln}case 261:return Kt(A.updateInterfaceDeclaration(G,nt(G),G.name,ui(G,G.typeParameters),ue(G.heritageClauses),On(G.members,Kn,pT)));case 259:{let ln=Kt(A.updateFunctionDeclaration(G,nt(G),void 0,G.name,ui(G,G.typeParameters),Gt(G,G.parameters),Qt(G,G.type),void 0));if(ln&&R.isExpandoFunctionDeclaration(G)&&kn(G)){let ir=R.getPropertiesOfContainerFunction(G),ae=fm.createModuleDeclaration(void 0,ln.name||A.createIdentifier(\"_default\"),A.createModuleBlock([]),16);go(ae,d),ae.locals=Ua(ir),ae.symbol=ir[0].parent;let rt=[],Ot=Zi(ir,j=>{if(!j.valueDeclaration||!br(j.valueDeclaration))return;r=zg(j.valueDeclaration);let yt=R.createTypeOfDeclaration(j.valueDeclaration,ae,tE,C);r=Ge;let lt=Gi(j.escapedName),Qe=_S(lt),Vt=Qe?A.getGeneratedNameForNode(j.valueDeclaration):A.createIdentifier(lt);Qe&&rt.push([Vt,lt]);let Hn=A.createVariableDeclaration(Vt,void 0,yt,void 0);return A.createVariableStatement(Qe?void 0:[A.createToken(93)],A.createVariableDeclarationList([Hn]))});rt.length?Ot.push(A.createExportDeclaration(void 0,!1,A.createNamedExports(on(rt,([j,yt])=>A.createExportSpecifier(!1,j,yt))))):Ot=Zi(Ot,j=>A.updateModifiers(j,0));let Ke=A.createModuleDeclaration(nt(G),G.name,A.createModuleBlock(Ot),16);if(!cd(ln,1024))return[ln,Ke];let oe=A.createModifiersFromModifierFlags(uu(ln)&-1026|2),pe=A.updateFunctionDeclaration(ln,oe,void 0,ln.name,ln.typeParameters,ln.parameters,ln.type,void 0),z=A.updateModuleDeclaration(Ke,oe,Ke.name,Ke.body),Te=A.createExportAssignment(void 0,!1,Ke.name);return Li(G.parent)&&(s=!0),f=!0,[pe,z,Te]}else return ln}case 264:{i=!1;let ln=G.body;if(ln&&ln.kind===265){let ir=l,ae=f;f=!1,l=!1;let rt=On(ln.statements,ri,ca),Ot=An(rt);G.flags&16777216&&(l=!1),!mp(G)&&!ve(Ot)&&!f&&(l?Ot=A.createNodeArray([...Ot,EO(A)]):Ot=On(Ot,gn,ca));let Ke=A.updateModuleBlock(ln,Ot);i=kt,l=ir,f=ae;let oe=nt(G);return Kt(A.updateModuleDeclaration(G,oe,D0(G)?pt(G,G.name):G.name,Ke))}else{i=kt;let ir=nt(G);i=!1,$e(ln,ri);let ae=sc(ln),rt=v.get(ae);return v.delete(ae),Kt(A.updateModuleDeclaration(G,ir,G.name,rt))}}case 260:{P=G.name,F=G;let ln=A.createNodeArray(nt(G)),ir=ui(G,G.typeParameters),ae=Vm(G),rt;if(ae){let Te=r;rt=zD(Uo(ae.parameters,j=>{if(!Mr(j,16476)||at(j))return;if(r=zg(j),j.name.kind===79)return gr(A.createPropertyDeclaration(nt(j),j.name,j.questionToken,Qt(j,j.type),zt(j)),j);return yt(j.name);function yt(lt){let Qe;for(let Vt of lt.elements)ol(Vt)||(La(Vt.name)&&(Qe=Qi(Qe,yt(Vt.name))),Qe=Qe||[],Qe.push(A.createPropertyDeclaration(nt(j),Vt.name,void 0,Qt(Vt,void 0),void 0)));return Qe}})),r=Te}let Ke=vt(G.members,Te=>!!Te.name&&pi(Te.name))?[A.createPropertyDeclaration(void 0,A.createPrivateIdentifier(\"#private\"),void 0,void 0,void 0)]:void 0,oe=Qi(Qi(Ke,rt),On(G.members,Kn,_l)),pe=A.createNodeArray(oe),z=hp(G);if(z&&!bc(z.expression)&&z.expression.kind!==104){let Te=G.name?Gi(G.name.escapedText):\"default\",j=A.createUniqueName(`${Te}_base`,16);r=()=>({diagnosticMessage:_.extends_clause_of_exported_class_0_has_or_is_using_private_name_1,errorNode:z,typeName:G.name});let yt=A.createVariableDeclaration(j,void 0,R.createTypeOfExpression(z.expression,G,tE,C),void 0),lt=A.createVariableStatement(i?[A.createModifier(136)]:[],A.createVariableDeclarationList([yt],2)),Qe=A.createNodeArray(on(G.heritageClauses,Vt=>{if(Vt.token===94){let Hn=r;r=zg(Vt.types[0]);let jr=A.updateHeritageClause(Vt,on(Vt.types,ei=>A.updateExpressionWithTypeArguments(ei,j,On(ei.typeArguments,Kn,bi))));return r=Hn,jr}return A.updateHeritageClause(Vt,On(A.createNodeArray(Pr(Vt.types,Hn=>bc(Hn.expression)||Hn.expression.kind===104)),Kn,Vg))}));return[lt,Kt(A.updateClassDeclaration(G,ln,G.name,ir,Qe,pe))]}else{let Te=ue(G.heritageClauses);return Kt(A.updateClassDeclaration(G,ln,G.name,ir,Te,pe))}}case 240:return Kt(En(G));case 263:return Kt(A.updateEnumDeclaration(G,A.createNodeArray(nt(G)),G.name,A.createNodeArray(Zi(G.members,ln=>{if(at(ln))return;let ir=R.getConstantValue(ln);return gr(A.updateEnumMember(ln,ln.name,ir!==void 0?typeof ir==\"string\"?A.createStringLiteral(ir):A.createNumericLiteral(ir):void 0),ln)}))))}return L.assertNever(G,`Unhandled top-level node in declaration emit: ${L.formatSyntaxKind(G.kind)}`);function Kt(ln){return Ni(G)&&(d=Oe),je&&(r=Ge),G.kind===264&&(i=kt),ln===G?ln:(F=void 0,P=void 0,ln&&Ir(gr(ln,G),G))}}function En(G){if(!mn(G.declarationList.declarations,_n))return;let Oe=On(G.declarationList.declarations,Kn,wi);if(!!Fn(Oe))return A.updateVariableStatement(G,A.createNodeArray(nt(G)),A.updateVariableDeclarationList(G.declarationList,Oe))}function dr(G){return e_(Zi(G.elements,Oe=>Cr(Oe)))}function Cr(G){if(G.kind!==229&&G.name)return _n(G)?La(G.name)?dr(G.name):A.createVariableDeclaration(G.name,void 0,Qt(G,void 0),void 0):void 0}function Se(G){let Oe;S||(Oe=r,r=Epe(G)),P=G.name,L.assert(R.isLateBound(ea(G)));let Ge=G.name.expression;Pi(Ge,d),S||(r=Oe),P=void 0}function at(G){return!!fe&&!!G&&BK(G,B)}function Tt(G){return pc(G)||Il(G)}function ve(G){return vt(G,Tt)}function nt(G){let Oe=uu(G),je=ce(G);return Oe===je?vK(G.modifiers,Ge=>zr(Ge,Ha),Ha):A.createModifiersFromModifierFlags(je)}function ce(G){let Oe=241147,je=i&&!IMe(G)?2:0,Ge=G.parent.kind===308;return(!Ge||o&&Ge&&Lc(G.parent))&&(Oe^=2,je=0),xpe(G,Oe,je)}function $(G,Oe){let je=VK(G);return!je&&G!==Oe.firstAccessor&&(je=VK(Oe.firstAccessor),r=zg(Oe.firstAccessor)),!je&&Oe.secondAccessor&&G!==Oe.secondAccessor&&(je=VK(Oe.secondAccessor),r=zg(Oe.secondAccessor)),je}function ue(G){return A.createNodeArray(Pr(on(G,Oe=>A.updateHeritageClause(Oe,On(A.createNodeArray(Pr(Oe.types,je=>bc(je.expression)||Oe.token===94&&je.expression.kind===104)),Kn,Vg))),Oe=>Oe.types&&!!Oe.types.length))}}function IMe(e){return e.kind===261}function LMe(e,t,r){return D.createModifiersFromModifierFlags(xpe(e,t,r))}function xpe(e,t=258043,r=0){let i=uu(e)&t|r;return i&1024&&!(i&1)&&(i^=1),i&1024&&i&2&&(i^=2),i}function VK(e){if(e)return e.kind===174?e.type:e.parameters.length>0?e.parameters[0].type:void 0}function kMe(e){switch(e.kind){case 169:case 168:return!cd(e,8);case 166:case 257:return!0}return!1}function DMe(e){switch(e.kind){case 259:case 264:case 268:case 261:case 260:case 262:case 263:case 240:case 269:case 275:case 274:return!0}return!1}function wMe(e){switch(e.kind){case 177:case 173:case 171:case 174:case 175:case 169:case 168:case 170:case 176:case 178:case 257:case 165:case 230:case 180:case 191:case 181:case 182:case 202:return!0}return!1}var tE,RMe=gt({\"src/compiler/transformers/declarations.ts\"(){\"use strict\";fa(),dK(),tE=531469}});function OMe(e){switch(e){case 99:case 7:case 6:case 5:return GK;case 4:return vpe;case 100:case 199:return bpe;default:return FK}}function jK(e,t,r){return{scriptTransformers:NMe(e,t,r),declarationTransformers:PMe(t)}}function NMe(e,t,r){if(r)return Je;let i=Do(e),o=Rl(e),s=FR(e),l=[];return si(l,t&&on(t.before,Cpe)),l.push(Z_e),e.experimentalDecorators?l.push(rpe):(i<99||!s)&&l.push(ipe),l.push(tpe),AW(e)&&l.push(dpe),i<99&&l.push(upe),i<8&&l.push(lpe),i<7&&l.push(cpe),i<6&&l.push(spe),i<5&&l.push(ope),i<4&&l.push(ape),i<3&&l.push(_pe),i<2&&(l.push(mpe),l.push(gpe)),l.push(OMe(o)),i<1&&l.push(hpe),si(l,t&&on(t.after,Cpe)),l}function PMe(e){let t=[];return t.push(UK),si(t,e&&on(e.afterDeclarations,FMe)),t}function MMe(e){return t=>Bz(t)?e.transformBundle(t):e.transformSourceFile(t)}function Ape(e,t){return r=>{let i=e(r);return typeof i==\"function\"?t(r,i):MMe(i)}}function Cpe(e){return Ape(e,g_)}function FMe(e){return Ape(e,(t,r)=>r)}function JL(e,t){return t}function lN(e,t,r){r(e,t)}function uN(e,t,r,i,o,s,l){var f,d;let g=new Array(361),m,v,S,x=0,A=[],w=[],C=[],P=[],F=0,B=!1,q=[],W=0,Y,R,ie=JL,Q=lN,fe=0,Z=[],U={factory:r,getCompilerOptions:()=>i,getEmitResolver:()=>e,getEmitHost:()=>t,getEmitHelperFactory:zu(()=>Tue(U)),startLexicalEnvironment:Le,suspendLexicalEnvironment:Ye,resumeLexicalEnvironment:_t,endLexicalEnvironment:ct,setLexicalEnvironmentFlags:Rt,getLexicalEnvironmentFlags:We,hoistVariableDeclaration:Ie,hoistFunctionDeclaration:Be,addInitializationStatement:Ne,startBlockScope:qe,endBlockScope:zt,addBlockScopedVariable:Qt,requestEmitHelper:tn,readEmitHelpers:kn,enableSubstitution:X,enableEmitNotification:ke,isSubstitutionEnabled:Ve,isEmitNotificationEnabled:Pe,get onSubstituteNode(){return ie},set onSubstituteNode(Gt){L.assert(fe<1,\"Cannot modify transformation hooks after initialization has completed.\"),L.assert(Gt!==void 0,\"Value must not be 'undefined'\"),ie=Gt},get onEmitNode(){return Q},set onEmitNode(Gt){L.assert(fe<1,\"Cannot modify transformation hooks after initialization has completed.\"),L.assert(Gt!==void 0,\"Value must not be 'undefined'\"),Q=Gt},addDiagnostic(Gt){Z.push(Gt)}};for(let Gt of o)yz(Gn(ea(Gt)));Fs(\"beforeTransform\");let re=s.map(Gt=>Gt(U)),le=Gt=>{for(let $n of re)Gt=$n(Gt);return Gt};fe=1;let _e=[];for(let Gt of o)(f=ai)==null||f.push(ai.Phase.Emit,\"transformNodes\",Gt.kind===308?{path:Gt.path}:{kind:Gt.kind,pos:Gt.pos,end:Gt.end}),_e.push((l?le:ge)(Gt)),(d=ai)==null||d.pop();return fe=2,Fs(\"afterTransform\"),mf(\"transformTime\",\"beforeTransform\",\"afterTransform\"),{transformed:_e,substituteNode:we,emitNodeWithNotification:Ce,isEmitNotificationEnabled:Pe,dispose:_n,diagnostics:Z};function ge(Gt){return Gt&&(!Li(Gt)||!Gt.isDeclarationFile)?le(Gt):Gt}function X(Gt){L.assert(fe<2,\"Cannot modify the transformation context after transformation has completed.\"),g[Gt]|=1}function Ve(Gt){return(g[Gt.kind]&1)!==0&&(Ya(Gt)&8)===0}function we(Gt,$n){return L.assert(fe<3,\"Cannot substitute a node after the result is disposed.\"),$n&&Ve($n)&&ie(Gt,$n)||$n}function ke(Gt){L.assert(fe<2,\"Cannot modify the transformation context after transformation has completed.\"),g[Gt]|=2}function Pe(Gt){return(g[Gt.kind]&2)!==0||(Ya(Gt)&4)!==0}function Ce(Gt,$n,ui){L.assert(fe<3,\"Cannot invoke TransformationResult callbacks after the result is disposed.\"),$n&&(Pe($n)?Q(Gt,$n,ui):ui(Gt,$n))}function Ie(Gt){L.assert(fe>0,\"Cannot modify the lexical environment during initialization.\"),L.assert(fe<2,\"Cannot modify the lexical environment after transformation has completed.\");let $n=Jn(r.createVariableDeclaration(Gt),128);m?m.push($n):m=[$n],x&1&&(x|=2)}function Be(Gt){L.assert(fe>0,\"Cannot modify the lexical environment during initialization.\"),L.assert(fe<2,\"Cannot modify the lexical environment after transformation has completed.\"),Jn(Gt,2097152),v?v.push(Gt):v=[Gt]}function Ne(Gt){L.assert(fe>0,\"Cannot modify the lexical environment during initialization.\"),L.assert(fe<2,\"Cannot modify the lexical environment after transformation has completed.\"),Jn(Gt,2097152),S?S.push(Gt):S=[Gt]}function Le(){L.assert(fe>0,\"Cannot modify the lexical environment during initialization.\"),L.assert(fe<2,\"Cannot modify the lexical environment after transformation has completed.\"),L.assert(!B,\"Lexical environment is suspended.\"),A[F]=m,w[F]=v,C[F]=S,P[F]=x,F++,m=void 0,v=void 0,S=void 0,x=0}function Ye(){L.assert(fe>0,\"Cannot modify the lexical environment during initialization.\"),L.assert(fe<2,\"Cannot modify the lexical environment after transformation has completed.\"),L.assert(!B,\"Lexical environment is already suspended.\"),B=!0}function _t(){L.assert(fe>0,\"Cannot modify the lexical environment during initialization.\"),L.assert(fe<2,\"Cannot modify the lexical environment after transformation has completed.\"),L.assert(B,\"Lexical environment is not suspended.\"),B=!1}function ct(){L.assert(fe>0,\"Cannot modify the lexical environment during initialization.\"),L.assert(fe<2,\"Cannot modify the lexical environment after transformation has completed.\"),L.assert(!B,\"Lexical environment is suspended.\");let Gt;if(m||v||S){if(v&&(Gt=[...v]),m){let $n=r.createVariableStatement(void 0,r.createVariableDeclarationList(m));Jn($n,2097152),Gt?Gt.push($n):Gt=[$n]}S&&(Gt?Gt=[...Gt,...S]:Gt=[...S])}return F--,m=A[F],v=w[F],S=C[F],x=P[F],F===0&&(A=[],w=[],C=[],P=[]),Gt}function Rt(Gt,$n){x=$n?x|Gt:x&~Gt}function We(){return x}function qe(){L.assert(fe>0,\"Cannot start a block scope during initialization.\"),L.assert(fe<2,\"Cannot start a block scope after transformation has completed.\"),q[W]=Y,W++,Y=void 0}function zt(){L.assert(fe>0,\"Cannot end a block scope during initialization.\"),L.assert(fe<2,\"Cannot end a block scope after transformation has completed.\");let Gt=vt(Y)?[r.createVariableStatement(void 0,r.createVariableDeclarationList(Y.map($n=>r.createVariableDeclaration($n)),1))]:void 0;return W--,Y=q[W],W===0&&(q=[]),Gt}function Qt(Gt){L.assert(W>0,\"Cannot add a block scoped variable outside of an iteration body.\"),(Y||(Y=[])).push(Gt)}function tn(Gt){if(L.assert(fe>0,\"Cannot modify the transformation context during initialization.\"),L.assert(fe<2,\"Cannot modify the transformation context after transformation has completed.\"),L.assert(!Gt.scoped,\"Cannot request a scoped emit helper.\"),Gt.dependencies)for(let $n of Gt.dependencies)tn($n);R=Sn(R,Gt)}function kn(){L.assert(fe>0,\"Cannot modify the transformation context during initialization.\"),L.assert(fe<2,\"Cannot modify the transformation context after transformation has completed.\");let Gt=R;return R=void 0,Gt}function _n(){if(fe<3){for(let Gt of o)yz(Gn(ea(Gt)));m=void 0,A=void 0,v=void 0,w=void 0,ie=void 0,Q=void 0,R=void 0,fe=3}}}var HK,Bh,GMe=gt({\"src/compiler/transformer.ts\"(){\"use strict\";fa(),E0(),HK={scriptTransformers:Je,declarationTransformers:Je},Bh={factory:D,getCompilerOptions:()=>({}),getEmitResolver:Sa,getEmitHost:Sa,getEmitHelperFactory:Sa,startLexicalEnvironment:Ba,resumeLexicalEnvironment:Ba,suspendLexicalEnvironment:Ba,endLexicalEnvironment:Qv,setLexicalEnvironmentFlags:Ba,getLexicalEnvironmentFlags:()=>0,hoistVariableDeclaration:Ba,hoistFunctionDeclaration:Ba,addInitializationStatement:Ba,startBlockScope:Ba,endBlockScope:Qv,addBlockScopedVariable:Ba,requestEmitHelper:Ba,readEmitHelpers:Sa,enableSubstitution:Ba,enableEmitNotification:Ba,isSubstitutionEnabled:Sa,isEmitNotificationEnabled:Sa,onSubstituteNode:JL,onEmitNode:lN,addDiagnostic:Ba}}});function Ipe(e){return Gc(e,\".tsbuildinfo\")}function WK(e,t,r,i=!1,o,s){let l=ba(r)?r:eW(e,r,i),f=e.getCompilerOptions();if(Ss(f)){let d=e.getPrependNodes();if(l.length||d.length){let g=D.createBundle(l,d),m=t(qL(g,e,i),g);if(m)return m}}else{if(!o)for(let d of l){let g=t(qL(d,e,i),d);if(g)return g}if(s){let d=Jg(f);if(d)return t({buildInfoPath:d},void 0)}}}function Jg(e){let t=e.configFilePath;if(!PR(e))return;if(e.tsBuildInfoFile)return e.tsBuildInfoFile;let r=Ss(e),i;if(r)i=ld(r);else{if(!t)return;let o=ld(t);i=e.outDir?e.rootDir?Fy(e.outDir,Xp(e.rootDir,o,!0)):vi(e.outDir,Hl(o)):o}return i+\".tsbuildinfo\"}function KL(e,t){let r=Ss(e),i=e.emitDeclarationOnly?void 0:r,o=i&&Lpe(i,e),s=t||f_(e)?ld(r)+\".d.ts\":void 0,l=s&&d4(e)?s+\".map\":void 0,f=Jg(e);return{jsFilePath:i,sourceMapFilePath:o,declarationFilePath:s,declarationMapPath:l,buildInfoPath:f}}function qL(e,t,r){let i=t.getCompilerOptions();if(e.kind===309)return KL(i,r);{let o=wce(e.fileName,t,zK(e.fileName,i)),s=Pf(e),l=s&&lT(e.fileName,o,t.getCurrentDirectory(),!t.useCaseSensitiveFileNames())===0,f=i.emitDeclarationOnly||l?void 0:o,d=!f||Pf(e)?void 0:Lpe(f,i),g=r||f_(i)&&!s?Rce(e.fileName,t):void 0,m=g&&d4(i)?g+\".map\":void 0;return{jsFilePath:f,sourceMapFilePath:d,declarationFilePath:g,declarationMapPath:m,buildInfoPath:void 0}}}function Lpe(e,t){return t.sourceMap&&!t.inlineSourceMap?e+\".map\":void 0}function zK(e,t){return Gc(e,\".json\")?\".json\":t.jsx===1&&$c(e,[\".jsx\",\".tsx\"])?\".jsx\":$c(e,[\".mts\",\".mjs\"])?\".mjs\":$c(e,[\".cts\",\".cjs\"])?\".cjs\":\".js\"}function kpe(e,t,r,i,o){return i?Fy(i,Xp(o?o():YL(t,r),e,r)):e}function XL(e,t,r,i){return V0(kpe(e,t,r,t.options.declarationDir||t.options.outDir,i),QH(e))}function Dpe(e,t,r,i){if(t.options.emitDeclarationOnly)return;let o=Gc(e,\".json\"),s=V0(kpe(e,t,r,t.options.outDir,i),zK(e,t.options));return!o||lT(e,s,L.checkDefined(t.options.configFilePath),r)!==0?s:void 0}function wpe(){let e;return{addOutput:t,getOutputs:r};function t(i){i&&(e||(e=[])).push(i)}function r(){return e||Je}}function Rpe(e,t){let{jsFilePath:r,sourceMapFilePath:i,declarationFilePath:o,declarationMapPath:s,buildInfoPath:l}=KL(e.options,!1);t(r),t(i),t(o),t(s),t(l)}function Ope(e,t,r,i,o){if(Fu(t))return;let s=Dpe(t,e,r,o);if(i(s),!Gc(t,\".json\")&&(s&&e.options.sourceMap&&i(`${s}.map`),f_(e.options))){let l=XL(t,e,r,o);i(l),e.options.declarationMap&&i(`${l}.map`)}}function dN(e,t,r,i,o){let s;return e.rootDir?(s=_a(e.rootDir,r),o?.(e.rootDir)):e.composite&&e.configFilePath?(s=ni(Al(e.configFilePath)),o?.(s)):s=jpe(t(),r,i),s&&s[s.length-1]!==_s&&(s+=_s),s}function YL({options:e,fileNames:t},r){return dN(e,()=>Pr(t,i=>!(e.noEmitForJsFiles&&$c(i,fL))&&!Fu(i)),ni(Al(L.checkDefined(e.configFilePath))),Dl(!r))}function AF(e,t){let{addOutput:r,getOutputs:i}=wpe();if(Ss(e.options))Rpe(e,r);else{let o=zu(()=>YL(e,t));for(let s of e.fileNames)Ope(e,s,t,r,o);r(Jg(e.options))}return i()}function BMe(e,t,r){t=So(t),L.assert(ya(e.fileNames,t),\"Expected fileName to be present in command line\");let{addOutput:i,getOutputs:o}=wpe();return Ss(e.options)?Rpe(e,i):Ope(e,t,r,i),o()}function JK(e,t){if(Ss(e.options)){let{jsFilePath:o,declarationFilePath:s}=KL(e.options,!1);return L.checkDefined(o||s,`project ${e.options.configFilePath} expected to have at least one output`)}let r=zu(()=>YL(e,t));for(let o of e.fileNames){if(Fu(o))continue;let s=Dpe(o,e,t,r);if(s)return s;if(!Gc(o,\".json\")&&f_(e.options))return XL(o,e,t,r)}let i=Jg(e.options);return i||L.fail(`project ${e.options.configFilePath} expected to have at least one output`)}function CF(e,t,r,{scriptTransformers:i,declarationTransformers:o},s,l,f){var d=t.getCompilerOptions(),g=d.sourceMap||d.inlineSourceMap||d4(d)?[]:void 0,m=d.listEmittedFiles?[]:void 0,v=YA(),S=db(d),x=xR(S),{enter:A,exit:w}=x8(\"printTime\",\"beforePrint\",\"afterPrint\"),C,P=!1;return A(),WK(t,F,eW(t,r,f),f,l,!r),w(),{emitSkipped:P,diagnostics:v.getDiagnostics(),emittedFiles:m,sourceMaps:g};function F({jsFilePath:U,sourceMapFilePath:re,declarationFilePath:le,declarationMapPath:_e,buildInfoPath:ge},X){var Ve,we,ke,Pe,Ce,Ie;let Be;ge&&X&&Bz(X)&&(Be=ni(_a(ge,t.getCurrentDirectory())),C={commonSourceDirectory:Ne(t.getCommonSourceDirectory()),sourceFiles:X.sourceFiles.map(Le=>Ne(_a(Le.fileName,t.getCurrentDirectory())))}),(Ve=ai)==null||Ve.push(ai.Phase.Emit,\"emitJsFileOrBundle\",{jsFilePath:U}),q(X,U,re,Ne),(we=ai)==null||we.pop(),(ke=ai)==null||ke.push(ai.Phase.Emit,\"emitDeclarationFileOrBundle\",{declarationFilePath:le}),W(X,le,_e,Ne),(Pe=ai)==null||Pe.pop(),(Ce=ai)==null||Ce.push(ai.Phase.Emit,\"emitBuildInfo\",{buildInfoPath:ge}),B(C,ge),(Ie=ai)==null||Ie.pop(),!P&&m&&(s||(U&&m.push(U),re&&m.push(re),ge&&m.push(ge)),s!==0&&(le&&m.push(le),_e&&m.push(_e)));function Ne(Le){return S0(Xp(Be,Le,t.getCanonicalFileName))}}function B(U,re){if(!re||r||P)return;if(t.isEmitBlocked(re)){P=!0;return}let le=t.getBuildInfo(U)||fN(void 0,U);UI(t,v,re,Npe(le),!1,void 0,{buildInfo:le})}function q(U,re,le,_e){if(!U||s||!re)return;if(t.isEmitBlocked(re)||d.noEmit){P=!0;return}let ge=uN(e,t,D,d,[U],i,!1),X={removeComments:d.removeComments,newLine:d.newLine,noEmitHelpers:d.noEmitHelpers,module:d.module,target:d.target,sourceMap:d.sourceMap,inlineSourceMap:d.inlineSourceMap,inlineSources:d.inlineSources,extendedDiagnostics:d.extendedDiagnostics,writeBundleFileInfo:!!C,relativeToBuildInfo:_e},Ve=nE(X,{hasGlobalName:e.hasGlobalName,onEmitNode:ge.emitNodeWithNotification,isEmitNotificationEnabled:ge.isEmitNotificationEnabled,substituteNode:ge.substituteNode});L.assert(ge.transformed.length===1,\"Should only see one output from the transform\"),R(re,le,ge,Ve,d),ge.dispose(),C&&(C.js=Ve.bundleFileInfo)}function W(U,re,le,_e){if(!U||s===0)return;if(!re){(s||d.emitDeclarationOnly)&&(P=!0);return}let ge=Li(U)?[U]:U.sourceFiles,X=f?ge:Pr(ge,LH),Ve=Ss(d)?[D.createBundle(X,Li(U)?void 0:U.prepends)]:X;s&&!f_(d)&&X.forEach(Y);let we=uN(e,t,D,d,Ve,o,!1);if(Fn(we.diagnostics))for(let Ie of we.diagnostics)v.add(Ie);let ke={removeComments:d.removeComments,newLine:d.newLine,noEmitHelpers:!0,module:d.module,target:d.target,sourceMap:!f&&d.declarationMap,inlineSourceMap:d.inlineSourceMap,extendedDiagnostics:d.extendedDiagnostics,onlyPrintJsDocStyle:!0,writeBundleFileInfo:!!C,recordInternalSection:!!C,relativeToBuildInfo:_e},Pe=nE(ke,{hasGlobalName:e.hasGlobalName,onEmitNode:we.emitNodeWithNotification,isEmitNotificationEnabled:we.isEmitNotificationEnabled,substituteNode:we.substituteNode}),Ce=!!we.diagnostics&&!!we.diagnostics.length||!!t.isEmitBlocked(re)||!!d.noEmit;P=P||Ce,(!Ce||f)&&(L.assert(we.transformed.length===1,\"Should only see one output from the decl transform\"),R(re,le,we,Pe,{sourceMap:ke.sourceMap,sourceRoot:d.sourceRoot,mapRoot:d.mapRoot,extendedDiagnostics:d.extendedDiagnostics})),we.dispose(),C&&(C.dts=Pe.bundleFileInfo)}function Y(U){if(pc(U)){U.expression.kind===79&&e.collectLinkedAliases(U.expression,!0);return}else if(Mu(U)){e.collectLinkedAliases(U.propertyName||U.name,!0);return}pa(U,Y)}function R(U,re,le,_e,ge){let X=le.transformed[0],Ve=X.kind===309?X:void 0,we=X.kind===308?X:void 0,ke=Ve?Ve.sourceFiles:[we],Pe;ie(ge,X)&&(Pe=M_e(t,Hl(Al(U)),Q(ge),fe(ge,U,we),ge)),Ve?_e.writeBundle(Ve,x,Pe):_e.writeFile(we,x,Pe);let Ce;if(Pe){g&&g.push({inputSourceFileNames:Pe.getSources(),sourceMap:Pe.toJSON()});let Be=Z(ge,Pe,U,re,we);if(Be&&(x.isAtStartOfLine()||x.rawWrite(S),Ce=x.getTextPos(),x.writeComment(`//# sourceMappingURL=${Be}`)),re){let Ne=Pe.toString();UI(t,v,re,Ne,!1,ke),_e.bundleFileInfo&&(_e.bundleFileInfo.mapHash=$T(Ne,t))}}else x.writeLine();let Ie=x.getText();UI(t,v,U,Ie,!!d.emitBOM,ke,{sourceMapUrlPos:Ce,diagnostics:le.diagnostics}),_e.bundleFileInfo&&(_e.bundleFileInfo.hash=$T(Ie,t)),x.clear()}function ie(U,re){return(U.sourceMap||U.inlineSourceMap)&&(re.kind!==308||!Gc(re.fileName,\".json\"))}function Q(U){let re=Al(U.sourceRoot||\"\");return re&&cu(re)}function fe(U,re,le){if(U.sourceRoot)return t.getCommonSourceDirectory();if(U.mapRoot){let _e=Al(U.mapRoot);return le&&(_e=ni(e4(le.fileName,t,_e))),_p(_e)===0&&(_e=vi(t.getCommonSourceDirectory(),_e)),_e}return ni(So(re))}function Z(U,re,le,_e,ge){if(U.inlineSourceMap){let Ve=re.toString();return`data:application/json;base64,${tle(xl,Ve)}`}let X=Hl(Al(L.checkDefined(_e)));if(U.mapRoot){let Ve=Al(U.mapRoot);return ge&&(Ve=ni(e4(ge.fileName,t,Ve))),_p(Ve)===0?(Ve=vi(t.getCommonSourceDirectory(),Ve),encodeURI(Z1(ni(So(le)),vi(Ve,X),t.getCurrentDirectory(),t.getCanonicalFileName,!0))):encodeURI(vi(Ve,X))}return encodeURI(X)}}function fN(e,t){return{bundle:t,program:e,version:wf}}function Npe(e){return JSON.stringify(e)}function IF(e,t){return fW(e,t)}function UMe(e,t,r){var i;let o=L.checkDefined(e.js),s=((i=o.sources)==null?void 0:i.prologues)&&p0(o.sources.prologues,l=>l.file);return e.sourceFiles.map((l,f)=>{var d,g;let m=s?.get(f),v=m?.directives.map(A=>{let w=it(D.createStringLiteral(A.expression.text),A.expression),C=it(D.createExpressionStatement(w),A);return go(w,C),C}),S=D.createToken(1),x=D.createSourceFile(v??[],S,0);return x.fileName=Xp(r.getCurrentDirectory(),_a(l,t),!r.useCaseSensitiveFileNames()),x.text=(d=m?.text)!=null?d:\"\",sL(x,0,(g=m?.text.length)!=null?g:0),a2(x.statements,x),sL(S,x.end,0),go(S,x),x})}function Ppe(e,t,r,i){var o,s;(o=ai)==null||o.push(ai.Phase.Emit,\"emitUsingBuildInfo\",{},!0),ew.mark(\"beforeEmit\");let l=VMe(e,t,r,i);return ew.mark(\"afterEmit\"),ew.measure(\"Emit\",\"beforeEmit\",\"afterEmit\"),(s=ai)==null||s.pop(),l}function VMe(e,t,r,i){let{buildInfoPath:o,jsFilePath:s,sourceMapFilePath:l,declarationFilePath:f,declarationMapPath:d}=KL(e.options,!1),g=t.getBuildInfo(o,e.options.configFilePath);if(!g||!g.bundle||!g.bundle.js||f&&!g.bundle.dts)return o;let m=t.readFile(L.checkDefined(s));if(!m||$T(m,t)!==g.bundle.js.hash)return s;let v=l&&t.readFile(l);if(l&&!v||e.options.inlineSourceMap)return l||\"inline sourcemap decoding\";if(l&&$T(v,t)!==g.bundle.js.mapHash)return l;let S=f&&t.readFile(f);if(f&&!S||f&&$T(S,t)!==g.bundle.dts.hash)return f;let x=d&&t.readFile(d);if(d&&!x||e.options.inlineSourceMap)return d||\"inline sourcemap decoding\";if(d&&$T(x,t)!==g.bundle.dts.mapHash)return d;let A=ni(_a(o,t.getCurrentDirectory())),w=pz(s,m,l,v,f,S,d,x,o,g,!0),C=[],P=fq(e.projectReferences,r,Y=>t.readFile(Y),t),F=UMe(g.bundle,A,t),B,q,W={getPrependNodes:zu(()=>[...P,w]),getCanonicalFileName:t.getCanonicalFileName,getCommonSourceDirectory:()=>_a(g.bundle.commonSourceDirectory,A),getCompilerOptions:()=>e.options,getCurrentDirectory:()=>t.getCurrentDirectory(),getSourceFile:Qv,getSourceFileByPath:Qv,getSourceFiles:()=>F,getLibFileFromReference:Sa,isSourceFileFromExternalLibrary:m0,getResolvedProjectReferenceToRedirect:Qv,getProjectReferenceRedirect:Qv,isSourceOfProjectReferenceRedirect:m0,writeFile:(Y,R,ie,Q,fe,Z)=>{switch(Y){case s:if(m===R)return;break;case l:if(v===R)return;break;case o:break;case f:if(S===R)return;B=R,q=Z;break;case d:if(x===R)return;break;default:L.fail(`Unexpected path: ${Y}`)}C.push({name:Y,text:R,writeByteOrderMark:ie,data:Z})},isEmitBlocked:m0,readFile:Y=>t.readFile(Y),fileExists:Y=>t.fileExists(Y),useCaseSensitiveFileNames:()=>t.useCaseSensitiveFileNames(),getBuildInfo:Y=>{let R=g.program;R&&B!==void 0&&e.options.composite&&(R.outSignature=$T(B,t,q));let{js:ie,dts:Q,sourceFiles:fe}=g.bundle;return Y.js.sources=ie.sources,Q&&(Y.dts.sources=Q.sources),Y.sourceFiles=fe,fN(R,Y)},getSourceFileFromReference:Qv,redirectTargetsMap:Of(),getFileIncludeReasons:Sa,createHash:ho(t,t.createHash)};return CF(LF,W,void 0,jK(e.options,i)),C}function nE(e={},t={}){var{hasGlobalName:r,onEmitNode:i=lN,isEmitNotificationEnabled:o,substituteNode:s=JL,onBeforeEmitNode:l,onAfterEmitNode:f,onBeforeEmitNodeArray:d,onAfterEmitNodeArray:g,onBeforeEmitToken:m,onAfterEmitToken:v}=t,S=!!e.extendedDiagnostics,x=db(e),A=Rl(e),w=new Map,C,P,F,B,q,W,Y,R,ie,Q,fe,Z,U,re,le,_e=e.preserveSourceNewlines,ge,X,Ve,we=dC,ke,Pe=e.writeBundleFileInfo?{sections:[]}:void 0,Ce=Pe?L.checkDefined(e.relativeToBuildInfo):void 0,Ie=e.recordInternalSection,Be=0,Ne=\"text\",Le=!0,Ye,_t,ct=-1,Rt,We=-1,qe=-1,zt=-1,Qt=-1,tn,kn,_n=!1,Gt=!!e.removeComments,$n,ui,{enter:Ni,exit:Pi}=Zae(S,\"commentTime\",\"beforeComment\",\"afterComment\"),gr=D.parenthesizer,pt={select:E=>E===0?gr.parenthesizeLeadingTypeArgument:void 0},nn=Dc();return Oe(),{printNode:Dt,printList:pn,printFile:Kn,printBundle:An,writeNode:ri,writeList:gn,writeFile:ve,writeBundle:at,bundleFileInfo:Pe};function Dt(E,ne,Ee){switch(E){case 0:L.assert(Li(ne),\"Expected a SourceFile node.\");break;case 2:L.assert(Re(ne),\"Expected an Identifier node.\");break;case 1:L.assert(ot(ne),\"Expected an Expression node.\");break}switch(ne.kind){case 308:return Kn(ne);case 309:return An(ne);case 310:return hi(ne)}return ri(E,ne,Ee,nt()),ce()}function pn(E,ne,Ee){return gn(E,ne,Ee,nt()),ce()}function An(E){return at(E,nt(),void 0),ce()}function Kn(E){return ve(E,nt(),void 0),ce()}function hi(E){return Tt(E,nt()),ce()}function ri(E,ne,Ee,Wt){let lr=X;G(Wt,void 0),$(E,ne,Ee),Oe(),X=lr}function gn(E,ne,Ee,Wt){let lr=X;G(Wt,void 0),Ee&&ue(Ee),cs(void 0,ne,E),Oe(),X=lr}function Ht(){return X.getTextPosWithWriteLine?X.getTextPosWithWriteLine():X.getTextPos()}function En(E,ne,Ee){let Wt=Os(Pe.sections);Wt&&Wt.kind===Ee?Wt.end=ne:Pe.sections.push({pos:E,end:ne,kind:Ee})}function dr(E){if(Ie&&Pe&&C&&(Kl(E)||Bc(E))&&BK(E,C)&&Ne!==\"internal\"){let ne=Ne;return Se(X.getTextPos()),Be=Ht(),Ne=\"internal\",ne}}function Cr(E){E&&(Se(X.getTextPos()),Be=Ht(),Ne=E)}function Se(E){return Be<E?(En(Be,E,Ne),!0):!1}function at(E,ne,Ee){ke=!1;let Wt=X;G(ne,Ee),Bb(E),S1(E),Vt(E),b1(E);for(let lr of E.prepends){nl();let ci=X.getTextPos(),qr=Pe&&Pe.sections;if(qr&&(Pe.sections=[]),$(4,lr,void 0),Pe){let Ti=Pe.sections;Pe.sections=qr,lr.oldFileOfCurrentEmit?Pe.sections.push(...Ti):(Ti.forEach(Wa=>L.assert(dle(Wa))),Pe.sections.push({pos:ci,end:X.getTextPos(),kind:\"prepend\",data:Ce(lr.fileName),texts:Ti}))}}Be=Ht();for(let lr of E.sourceFiles)$(0,lr,lr);if(Pe&&E.sourceFiles.length){let lr=X.getTextPos();if(Se(lr)){let ci=Ax(E);ci&&(Pe.sources||(Pe.sources={}),Pe.sources.prologues=ci);let qr=Qe(E);qr&&(Pe.sources||(Pe.sources={}),Pe.sources.helpers=qr)}}Oe(),X=Wt}function Tt(E,ne){let Ee=X;G(ne,void 0),$(4,E,void 0),Oe(),X=Ee}function ve(E,ne,Ee){ke=!0;let Wt=X;G(ne,Ee),Bb(E),S1(E),$(0,E,E),Oe(),X=Wt}function nt(){return Ve||(Ve=xR(x))}function ce(){let E=Ve.getText();return Ve.clear(),E}function $(E,ne,Ee){Ee&&ue(Ee),rt(E,ne,void 0)}function ue(E){C=E,tn=void 0,kn=void 0,E&&sg(E)}function G(E,ne){E&&e.omitTrailingSemicolon&&(E=XH(E)),X=E,Ye=ne,Le=!X||!Ye}function Oe(){P=[],F=[],B=[],q=new Set,W=[],Y=new Map,R=[],ie=0,Q=[],fe=0,Z=[],U=void 0,re=[],le=void 0,C=void 0,tn=void 0,kn=void 0,G(void 0,void 0)}function je(){return tn||(tn=Sh(L.checkDefined(C)))}function Ge(E,ne){if(E===void 0)return;let Ee=dr(E);rt(4,E,ne),Cr(Ee)}function kt(E){E!==void 0&&rt(2,E,void 0)}function Kt(E,ne){E!==void 0&&rt(1,E,ne)}function ln(E){rt(yo(E)?6:4,E)}function ir(E){_e&&a_(E)&4&&(_e=!1)}function ae(E){_e=E}function rt(E,ne,Ee){ui=Ee,oe(0,E,ne)(E,ne),ui=void 0}function Ot(E){return!Gt&&!Li(E)}function Ke(E){return!Le&&!Li(E)&&!B6(E)&&!UT(E)&&!Wue(E)}function oe(E,ne,Ee){switch(E){case 0:if(i!==lN&&(!o||o(Ee)))return z;case 1:if(s!==JL&&($n=s(ne,Ee)||Ee)!==Ee)return ui&&($n=ui($n)),lt;case 2:if(Ot(Ee))return vd;case 3:if(Ke(Ee))return OE;case 4:return Te;default:return L.assertNever(E)}}function pe(E,ne,Ee){return oe(E+1,ne,Ee)}function z(E,ne){let Ee=pe(0,E,ne);i(E,ne,Ee)}function Te(E,ne){if(l?.(ne),_e){let Ee=_e;ir(ne),j(E,ne),ae(Ee)}else j(E,ne);f?.(ne),ui=void 0}function j(E,ne,Ee=!0){if(Ee){let Wt=bz(ne);if(Wt)return Fa(E,ne,Wt)}if(E===0)return Fb(Ga(ne,Li));if(E===2)return Nr(Ga(ne,Re));if(E===6)return ei(Ga(ne,yo),!0);if(E===3)return yt(Ga(ne,_c));if(E===5)return L.assertNode(ne,Pz),oa(!0);if(E===4){switch(ne.kind){case 15:case 16:case 17:return ei(ne,!1);case 79:return Nr(ne);case 80:return Fo(ne);case 163:return Qr(ne);case 164:return yn(ne);case 165:return Ki(ne);case 166:return kc(ne);case 167:return Ps(ne);case 168:return mc(ne);case 169:return xc(ne);case 170:return hc(ne);case 171:return ro(ne);case 172:return aa(ne);case 173:return Co(ne);case 174:case 175:return gc(ne);case 176:return Ll(ne);case 177:return md(ne);case 178:return Pc(ne);case 179:return qs(ne);case 180:return Rs(ne);case 181:return As(ne);case 182:return se(ne);case 183:return ht(ne);case 184:return wt(ne);case 185:return K(ne);case 186:return ft(ne);case 187:return pr(ne);case 189:return yr(ne);case 190:return ta(ne);case 191:return Go(ne);case 192:return Ka(ne);case 193:return vo(ne);case 230:return zf(ne);case 194:return ka();case 195:return Hs(ne);case 196:return Uc(ne);case 197:return Gu(ne);case 198:return $o(ne);case 199:return Yt(ne);case 200:return jo(ne);case 201:return bl(ne);case 202:return Ws(ne);case 203:return hd(ne);case 204:return vc(ne);case 205:return tf(ne);case 236:return He(ne);case 237:return ss();case 238:return Nt(ne);case 240:return la(ne);case 239:return oa(!1);case 241:return be(ne);case 242:return De(ne);case 243:return St(ne);case 244:return Zt(ne);case 245:return rn(ne);case 246:return sn(ne);case 247:return Dn(ne);case 248:return ki(ne);case 249:return Vn(ne);case 250:return mm(ne);case 251:return Hh(ne);case 252:return E_(ne);case 253:return Cb(ne);case 254:return mv(ne);case 255:return yx(ne);case 256:return p1(ne);case 257:return vx(ne);case 258:return Wh(ne);case 259:return T_(ne);case 260:return m1(ne);case 261:return dE(ne);case 262:return fE(ne);case 263:return yv(ne);case 264:return bx(ne);case 265:return _E(ne);case 266:return pE(ne);case 267:return S_(ne);case 268:return vv(ne);case 269:return bv(ne);case 270:return h1(ne);case 271:return Jh(ne);case 277:return Zu(ne);case 272:return Lo(ne);case 273:return mE(ne);case 274:return cC(ne);case 275:return Zg(ne);case 276:return ed(ne);case 278:return td(ne);case 296:return Kh(ne);case 297:return hm(ne);case 279:return;case 280:return Ex(ne);case 11:return Ob(ne);case 283:case 286:return g1(ne);case 284:case 287:return lC(ne);case 288:return Ev(ne);case 289:return Tx(ne);case 290:return hE(ne);case 291:return Tv(ne);case 292:return Sv(ne);case 293:return Xh(ne);case 294:return wo(ne);case 295:return x_(ne);case 299:return gE(ne);case 300:return Kc(ne);case 301:return th(ne);case 302:return Pb(ne);case 303:return Si(ne);case 310:case 304:return Kr(ne);case 305:case 306:return Ja(ne);case 307:return Za(ne);case 308:return Fb(ne);case 309:return L.fail(\"Bundles should be printed using printBundle\");case 311:return L.fail(\"InputFiles should not be printed\");case 312:return zs(ne);case 313:return Yh(ne);case 315:return Qn(\"*\");case 316:return Qn(\"?\");case 317:return yc(ne);case 318:return Ql(ne);case 319:return yu(ne);case 320:return jt(ne);case 188:case 321:return Xe(ne);case 322:return;case 323:return A_(ne);case 325:return yd(ne);case 326:return yE(ne);case 330:case 335:case 340:return gm(ne);case 331:case 332:return ll(ne);case 333:case 334:return;case 336:case 337:case 338:case 339:return;case 341:return Ai(ne);case 342:return Rr(ne);case 344:case 351:return $h(ne);case 343:case 345:case 346:case 347:case 352:case 353:return Mb(ne);case 348:return v1(ne);case 349:return uC(ne);case 350:return Ml(ne);case 355:case 359:case 358:return}if(ot(ne)&&(E=1,s!==JL)){let Wt=s(E,ne)||ne;Wt!==ne&&(ne=Wt,ui&&(ne=ui(ne)))}}if(E===1)switch(ne.kind){case 8:case 9:return jr(ne);case 10:case 13:case 14:return ei(ne,!1);case 79:return Nr(ne);case 80:return Fo(ne);case 206:return ye(ne);case 207:return Et(ne);case 208:return bn(ne);case 209:return io(ne);case 210:return ee(ne);case 211:return Ze(ne);case 212:return At(ne);case 213:return xt(ne);case 214:return qt(ne);case 215:return Ln(ne);case 216:return mr(ne);case 217:return gi(ne);case 218:return Ea(ne);case 219:return bo(ne);case 220:return Qo(ne);case 221:return Cs(ne);case 222:return Pd(ne);case 223:return nn(ne);case 224:return gd(ne);case 225:return Zl(ne);case 226:return Md(ne);case 227:return Wf(ne);case 228:return Io(ne);case 229:return;case 231:return Fd(ne);case 232:return b_(ne);case 230:return zf(ne);case 235:return X_(ne);case 233:return M(ne);case 234:return L.fail(\"SyntheticExpression should never be printed.\");case 279:return;case 281:return wb(ne);case 282:return qh(ne);case 285:return Rb(ne);case 354:return L.fail(\"SyntaxList should not be printed\");case 355:return;case 356:return Sx(ne);case 357:return xx(ne);case 358:case 359:return;case 360:return L.fail(\"SyntheticReferenceExpression should not be printed\")}if(Xu(ne.kind))return EE(ne,zi);if(Nj(ne.kind))return EE(ne,Qn);L.fail(`Unhandled SyntaxKind: ${L.formatSyntaxKind(ne.kind)}.`)}function yt(E){Ge(E.name),Wn(),zi(\"in\"),Wn(),Ge(E.constraint)}function lt(E,ne){let Ee=pe(1,E,ne);L.assertIsDefined($n),ne=$n,$n=void 0,Ee(E,ne)}function Qe(E){let ne;if(A===0||e.noEmitHelpers)return;let Ee=new Map;for(let Wt of E.sourceFiles){let lr=xO(Wt)!==void 0,ci=Hn(Wt);if(!!ci)for(let qr of ci)!qr.scoped&&!lr&&!Ee.get(qr.name)&&(Ee.set(qr.name,!0),(ne||(ne=[])).push(qr.name))}return ne}function Vt(E){let ne=!1,Ee=E.kind===309?E:void 0;if(Ee&&A===0)return;let Wt=Ee?Ee.prepends.length:0,lr=Ee?Ee.sourceFiles.length+Wt:1;for(let ci=0;ci<lr;ci++){let qr=Ee?ci<Wt?Ee.prepends[ci]:Ee.sourceFiles[ci-Wt]:E,Ti=Li(qr)?qr:UT(qr)?void 0:C,Wa=e.noEmitHelpers||!!Ti&&ide(Ti),kl=(Li(qr)||UT(qr))&&!ke,Ed=UT(qr)?qr.helpers:Hn(qr);if(Ed)for(let Ud of Ed){if(Ud.scoped){if(Ee)continue}else{if(Wa)continue;if(kl){if(w.get(Ud.name))continue;w.set(Ud.name,!0)}}let fy=Ht();typeof Ud.text==\"string\"?Ac(Ud.text):Ac(Ud.text(af)),Pe&&Pe.sections.push({pos:fy,end:X.getTextPos(),kind:\"emitHelpers\",data:Ud.name}),ne=!0}}return ne}function Hn(E){let ne=O4(E);return ne&&Ag(ne,Sue)}function jr(E){ei(E,!1)}function ei(E,ne){let Ee=uc(E,e.neverAsciiEscape,ne);(e.sourceMap||e.inlineSourceMap)&&(E.kind===10||Hy(E.kind))?jb(Ee):Lx(Ee)}function Kr(E){for(let ne of E.texts)nl(),Ge(ne)}function Si(E){X.rawWrite(E.parent.text.substring(E.pos,E.end))}function Ja(E){let ne=Ht();Si(E),Pe&&En(ne,X.getTextPos(),E.kind===305?\"text\":\"internal\")}function Za(E){let ne=Ht();if(Si(E),Pe){let Ee=VU(E.section);Ee.pos=ne,Ee.end=X.getTextPos(),Pe.sections.push(Ee)}}function Fa(E,ne,Ee){switch(Ee.kind){case 1:Hi(E,ne,Ee);break;case 0:xi(E,ne,Ee);break}}function Hi(E,ne,Ee){ry(`\\${${Ee.order}:`),j(E,ne,!1),ry(\"}\")}function xi(E,ne,Ee){L.assert(ne.kind===239,`A tab stop cannot be attached to a node of kind ${L.formatSyntaxKind(ne.kind)}.`),L.assert(E!==5,\"A tab stop cannot be attached to an embedded statement.\"),ry(`$${Ee.order}`)}function Nr(E){(E.symbol?kx:we)(oy(E,!1),E.symbol),cs(E,PT(E),53776)}function Fo(E){we(oy(E,!1))}function Qr(E){Wi(E.left),Qn(\".\"),Ge(E.right)}function Wi(E){E.kind===79?Kt(E):Ge(E)}function yn(E){let ne=ie,Ee=le;Gl(),Qn(\"[\"),Kt(E.expression,gr.parenthesizeExpressionOfComputedPropertyName),Qn(\"]\"),Iv(ne,Ee)}function Ki(E){Qh(E,E.modifiers),Ge(E.name),E.constraint&&(Wn(),zi(\"extends\"),Wn(),Ge(E.constraint)),E.default&&(Wn(),rf(\"=\"),Wn(),Ge(E.default))}function kc(E){nf(E,E.modifiers,!0),Ge(E.dotDotDotToken),x1(E.name,Av),Ge(E.questionToken),E.parent&&E.parent.kind===320&&!E.name?Ge(E.type):$_(E.type),C_(E.initializer,E.type?E.type.end:E.questionToken?E.questionToken.end:E.name?E.name.end:E.modifiers?E.modifiers.end:E.pos,E,gr.parenthesizeExpressionForDisallowedComma)}function Ps(E){Qn(\"@\"),Kt(E.expression,gr.parenthesizeLeftSideOfAccess)}function mc(E){Qh(E,E.modifiers),x1(E.name,Dx),Ge(E.questionToken),$_(E.type),lc()}function xc(E){nf(E,E.modifiers,!0),Ge(E.name),Ge(E.questionToken),Ge(E.exclamationToken),$_(E.type),C_(E.initializer,E.type?E.type.end:E.questionToken?E.questionToken.end:E.name.end,E),lc()}function hc(E){ng(E),Qh(E,E.modifiers),Ge(E.name),Ge(E.questionToken),Dp(E,E.typeParameters),eg(E,E.parameters),$_(E.type),lc(),ih(E)}function ro(E){nf(E,E.modifiers,!0),Ge(E.asteriskToken),Ge(E.name),Ge(E.questionToken),eh(E,Y_)}function aa(E){zi(\"static\"),lE(E.body)}function Co(E){nf(E,E.modifiers,!1),zi(\"constructor\"),eh(E,Y_)}function gc(E){let ne=nf(E,E.modifiers,!0),Ee=E.kind===174?137:151;$t(Ee,ne,zi,E),Wn(),Ge(E.name),eh(E,Y_)}function Ll(E){ng(E),Dp(E,E.typeParameters),eg(E,E.parameters),$_(E.type),lc(),ih(E)}function md(E){ng(E),zi(\"new\"),Wn(),Dp(E,E.typeParameters),eg(E,E.parameters),$_(E.type),lc(),ih(E)}function Pc(E){nf(E,E.modifiers,!1),ty(E,E.parameters),$_(E.type),lc()}function bl(E){Ge(E.type),Ge(E.literal)}function ss(){lc()}function qs(E){E.assertsModifier&&(Ge(E.assertsModifier),Wn()),Ge(E.parameterName),E.type&&(Wn(),zi(\"is\"),Wn(),Ge(E.type))}function Rs(E){Ge(E.typeName),kp(E,E.typeArguments)}function As(E){ng(E),Dp(E,E.typeParameters),C1(E,E.parameters),Wn(),Qn(\"=>\"),Wn(),Ge(E.type),ih(E)}function jt(E){zi(\"function\"),eg(E,E.parameters),Qn(\":\"),Ge(E.type)}function yc(E){Qn(\"?\"),Ge(E.type)}function Ql(E){Qn(\"!\"),Ge(E.type)}function yu(E){Ge(E.type),Qn(\"=\")}function se(E){ng(E),Qh(E,E.modifiers),zi(\"new\"),Wn(),Dp(E,E.typeParameters),eg(E,E.parameters),Wn(),Qn(\"=>\"),Wn(),Ge(E.type),ih(E)}function ht(E){zi(\"typeof\"),Wn(),Ge(E.exprName),kp(E,E.typeArguments)}function wt(E){Iv(0,void 0),Qn(\"{\");let ne=Ya(E)&1?768:32897;cs(E,E.members,ne|524288),Qn(\"}\"),Gl()}function K(E){Ge(E.elementType,gr.parenthesizeNonArrayTypeOfPostfixType),Qn(\"[\"),Qn(\"]\")}function Xe(E){Qn(\"...\"),Ge(E.type)}function ft(E){$t(22,E.pos,Qn,E);let ne=Ya(E)&1?528:657;cs(E,E.elements,ne|524288,gr.parenthesizeElementTypeOfTupleType),$t(23,E.elements.end,Qn,E)}function Yt(E){Ge(E.dotDotDotToken),Ge(E.name),Ge(E.questionToken),$t(58,E.name.end,Qn,E),Wn(),Ge(E.type)}function pr(E){Ge(E.type,gr.parenthesizeTypeOfOptionalType),Qn(\"?\")}function yr(E){cs(E,E.types,516,gr.parenthesizeConstituentTypeOfUnionType)}function ta(E){cs(E,E.types,520,gr.parenthesizeConstituentTypeOfIntersectionType)}function Go(E){Ge(E.checkType,gr.parenthesizeCheckTypeOfConditionalType),Wn(),zi(\"extends\"),Wn(),Ge(E.extendsType,gr.parenthesizeExtendsTypeOfConditionalType),Wn(),Qn(\"?\"),Wn(),Ge(E.trueType),Wn(),Qn(\":\"),Wn(),Ge(E.falseType)}function Ka(E){zi(\"infer\"),Wn(),Ge(E.typeParameter)}function vo(E){Qn(\"(\"),Ge(E.type),Qn(\")\")}function ka(){zi(\"this\")}function Hs(E){I_(E.operator,zi),Wn();let ne=E.operator===146?gr.parenthesizeOperandOfReadonlyTypeOperator:gr.parenthesizeOperandOfTypeOperator;Ge(E.type,ne)}function Uc(E){Ge(E.objectType,gr.parenthesizeNonArrayTypeOfPostfixType),Qn(\"[\"),Ge(E.indexType),Qn(\"]\")}function Gu(E){let ne=Ya(E);Qn(\"{\"),ne&1?Wn():(nl(),Jf()),E.readonlyToken&&(Ge(E.readonlyToken),E.readonlyToken.kind!==146&&zi(\"readonly\"),Wn()),Qn(\"[\"),rt(3,E.typeParameter),E.nameType&&(Wn(),zi(\"as\"),Wn(),Ge(E.nameType)),Qn(\"]\"),E.questionToken&&(Ge(E.questionToken),E.questionToken.kind!==57&&Qn(\"?\")),Qn(\":\"),Wn(),Ge(E.type),lc(),ne&1?Wn():(nl(),Q_()),cs(E,E.members,2),Qn(\"}\")}function $o(E){Kt(E.literal)}function jo(E){Ge(E.head),cs(E,E.templateSpans,262144)}function Ws(E){if(E.isTypeOf&&(zi(\"typeof\"),Wn()),zi(\"import\"),Qn(\"(\"),Ge(E.argument),E.assertions){Qn(\",\"),Wn(),Qn(\"{\"),Wn(),zi(\"assert\"),Qn(\":\"),Wn();let ne=E.assertions.assertClause.elements;cs(E.assertions.assertClause,ne,526226),Wn(),Qn(\"}\")}Qn(\")\"),E.qualifier&&(Qn(\".\"),Ge(E.qualifier)),kp(E,E.typeArguments)}function hd(E){Qn(\"{\"),cs(E,E.elements,525136),Qn(\"}\")}function vc(E){Qn(\"[\"),cs(E,E.elements,524880),Qn(\"]\")}function tf(E){Ge(E.dotDotDotToken),E.propertyName&&(Ge(E.propertyName),Qn(\":\"),Wn()),Ge(E.name),C_(E.initializer,E.name.end,E,gr.parenthesizeExpressionForDisallowedComma)}function ye(E){let ne=E.elements,Ee=E.multiLine?65536:0;ny(E,ne,8914|Ee,gr.parenthesizeExpressionForDisallowedComma)}function Et(E){Iv(0,void 0),mn(E.properties,xE);let ne=Ya(E)&131072;ne&&Jf();let Ee=E.multiLine?65536:0,Wt=C&&C.languageVersion>=1&&!Pf(C)?64:0;cs(E,E.properties,526226|Wt|Ee),ne&&Q_(),Gl()}function bn(E){Kt(E.expression,gr.parenthesizeLeftSideOfAccess);let ne=E.questionDotToken||om(D.createToken(24),E.expression.end,E.name.pos),Ee=Z_(E,E.expression,ne),Wt=Z_(E,ne,E.name);wc(Ee,!1),ne.kind!==28&&Ri(E.expression)&&!X.hasTrailingComment()&&!X.hasTrailingWhitespace()&&Qn(\".\"),E.questionDotToken?Ge(ne):$t(ne.kind,E.expression.end,Qn,E),wc(Wt,!1),Ge(E.name),tg(Ee,Wt)}function Ri(E){if(E=i_(E),Uf(E)){let ne=uc(E,!0,!1);return!E.numericLiteralFlags&&!jl(ne,Xa(24))}else if(Us(E)){let ne=mue(E);return typeof ne==\"number\"&&isFinite(ne)&&Math.floor(ne)===ne}}function io(E){Kt(E.expression,gr.parenthesizeLeftSideOfAccess),Ge(E.questionDotToken),$t(22,E.expression.end,Qn,E),Kt(E.argumentExpression),$t(23,E.argumentExpression.end,Qn,E)}function ee(E){let ne=a_(E)&16;ne&&(Qn(\"(\"),jb(\"0\"),Qn(\",\"),Wn()),Kt(E.expression,gr.parenthesizeLeftSideOfAccess),ne&&Qn(\")\"),Ge(E.questionDotToken),kp(E,E.typeArguments),ny(E,E.arguments,2576,gr.parenthesizeExpressionForDisallowedComma)}function Ze(E){$t(103,E.pos,zi,E),Wn(),Kt(E.expression,gr.parenthesizeExpressionOfNew),kp(E,E.typeArguments),ny(E,E.arguments,18960,gr.parenthesizeExpressionForDisallowedComma)}function At(E){let ne=a_(E)&16;ne&&(Qn(\"(\"),jb(\"0\"),Qn(\",\"),Wn()),Kt(E.tag,gr.parenthesizeLeftSideOfAccess),ne&&Qn(\")\"),kp(E,E.typeArguments),Wn(),Kt(E.template)}function xt(E){Qn(\"<\"),Ge(E.type),Qn(\">\"),Kt(E.expression,gr.parenthesizeOperandOfPrefixUnary)}function qt(E){let ne=$t(20,E.pos,Qn,E),Ee=TE(E.expression,E);Kt(E.expression,void 0),Hb(E.expression,E),tg(Ee),$t(21,E.expression?E.expression.end:ne,Qn,E)}function Ln(E){oh(E.name),hv(E)}function mr(E){Qh(E,E.modifiers),eh(E,Vr)}function Vr(E){Dp(E,E.typeParameters),C1(E,E.parameters),$_(E.type),Wn(),Ge(E.equalsGreaterThanToken)}function gi(E){$t(89,E.pos,zi,E),Wn(),Kt(E.expression,gr.parenthesizeOperandOfPrefixUnary)}function Ea(E){$t(112,E.pos,zi,E),Wn(),Kt(E.expression,gr.parenthesizeOperandOfPrefixUnary)}function bo(E){$t(114,E.pos,zi,E),Wn(),Kt(E.expression,gr.parenthesizeOperandOfPrefixUnary)}function Qo(E){$t(133,E.pos,zi,E),Wn(),Kt(E.expression,gr.parenthesizeOperandOfPrefixUnary)}function Cs(E){I_(E.operator,rf),Bu(E)&&Wn(),Kt(E.operand,gr.parenthesizeOperandOfPrefixUnary)}function Bu(E){let ne=E.operand;return ne.kind===221&&(E.operator===39&&(ne.operator===39||ne.operator===45)||E.operator===40&&(ne.operator===40||ne.operator===46))}function Pd(E){Kt(E.operand,gr.parenthesizeOperandOfPostfixUnary),I_(E.operator,rf)}function Dc(){return C3(E,ne,Ee,Wt,lr,void 0);function E(qr,Ti){if(Ti){Ti.stackIndex++,Ti.preserveSourceNewlinesStack[Ti.stackIndex]=_e,Ti.containerPosStack[Ti.stackIndex]=qe,Ti.containerEndStack[Ti.stackIndex]=zt,Ti.declarationListContainerEndStack[Ti.stackIndex]=Qt;let Wa=Ti.shouldEmitCommentsStack[Ti.stackIndex]=Ot(qr),kl=Ti.shouldEmitSourceMapsStack[Ti.stackIndex]=Ke(qr);l?.(qr),Wa&&ju(qr),kl&&NE(qr),ir(qr)}else Ti={stackIndex:0,preserveSourceNewlinesStack:[void 0],containerPosStack:[-1],containerEndStack:[-1],declarationListContainerEndStack:[-1],shouldEmitCommentsStack:[!1],shouldEmitSourceMapsStack:[!1]};return Ti}function ne(qr,Ti,Wa){return ci(qr,Wa,\"left\")}function Ee(qr,Ti,Wa){let kl=qr.kind!==27,Ed=Z_(Wa,Wa.left,qr),Ud=Z_(Wa,qr,Wa.right);wc(Ed,kl),rd(qr.pos),EE(qr,qr.kind===101?zi:rf),ag(qr.end,!0),wc(Ud,!0)}function Wt(qr,Ti,Wa){return ci(qr,Wa,\"right\")}function lr(qr,Ti){let Wa=Z_(qr,qr.left,qr.operatorToken),kl=Z_(qr,qr.operatorToken,qr.right);if(tg(Wa,kl),Ti.stackIndex>0){let Ed=Ti.preserveSourceNewlinesStack[Ti.stackIndex],Ud=Ti.containerPosStack[Ti.stackIndex],fy=Ti.containerEndStack[Ti.stackIndex],Td=Ti.declarationListContainerEndStack[Ti.stackIndex],Ov=Ti.shouldEmitCommentsStack[Ti.stackIndex],Nv=Ti.shouldEmitSourceMapsStack[Ti.stackIndex];ae(Ed),Nv&&PE(qr),Ov&&L1(qr,Ud,fy,Td),f?.(qr),Ti.stackIndex--}}function ci(qr,Ti,Wa){let kl=Wa===\"left\"?gr.getParenthesizeLeftSideOfBinaryForOperator(Ti.operatorToken.kind):gr.getParenthesizeRightSideOfBinaryForOperator(Ti.operatorToken.kind),Ed=oe(0,1,qr);if(Ed===lt&&(L.assertIsDefined($n),qr=kl(Ga($n,ot)),Ed=pe(1,1,qr),$n=void 0),(Ed===vd||Ed===OE||Ed===Te)&&ar(qr))return qr;ui=kl,Ed(1,qr)}}function gd(E){let ne=Z_(E,E.condition,E.questionToken),Ee=Z_(E,E.questionToken,E.whenTrue),Wt=Z_(E,E.whenTrue,E.colonToken),lr=Z_(E,E.colonToken,E.whenFalse);Kt(E.condition,gr.parenthesizeConditionOfConditionalExpression),wc(ne,!0),Ge(E.questionToken),wc(Ee,!0),Kt(E.whenTrue,gr.parenthesizeBranchOfConditionalExpression),tg(ne,Ee),wc(Wt,!0),Ge(E.colonToken),wc(lr,!0),Kt(E.whenFalse,gr.parenthesizeBranchOfConditionalExpression),tg(Wt,lr)}function Zl(E){Ge(E.head),cs(E,E.templateSpans,262144)}function Md(E){$t(125,E.pos,zi,E),Ge(E.asteriskToken),Lp(E.expression&&Is(E.expression),Mc)}function Wf(E){$t(25,E.pos,Qn,E),Kt(E.expression,gr.parenthesizeExpressionForDisallowedComma)}function Io(E){oh(E.name),uE(E)}function zf(E){Kt(E.expression,gr.parenthesizeLeftSideOfAccess),kp(E,E.typeArguments)}function Fd(E){Kt(E.expression,void 0),E.type&&(Wn(),zi(\"as\"),Wn(),Ge(E.type))}function b_(E){Kt(E.expression,gr.parenthesizeLeftSideOfAccess),rf(\"!\")}function X_(E){Kt(E.expression,void 0),E.type&&(Wn(),zi(\"satisfies\"),Wn(),Ge(E.type))}function M(E){iy(E.keywordToken,E.pos,Qn),Qn(\".\"),Ge(E.name)}function He(E){Kt(E.expression),Ge(E.literal)}function Nt(E){Pn(E,!E.multiLine&&rh(E))}function Pn(E,ne){$t(18,E.pos,Qn,E);let Ee=ne||Ya(E)&1?768:129;cs(E,E.statements,Ee),$t(19,E.statements.end,Qn,E,!!(Ee&1))}function la(E){nf(E,E.modifiers,!1),Ge(E.declarationList),lc()}function oa(E){E?Qn(\";\"):lc()}function be(E){Kt(E.expression,gr.parenthesizeExpressionOfExpressionStatement),(!C||!Pf(C)||ws(E.expression))&&lc()}function De(E){let ne=$t(99,E.pos,zi,E);Wn(),$t(20,ne,Qn,E),Kt(E.expression),$t(21,E.expression.end,Qn,E),Uu(E,E.thenStatement),E.elseStatement&&(ay(E,E.thenStatement,E.elseStatement),$t(91,E.thenStatement.end,zi,E),E.elseStatement.kind===242?(Wn(),Ge(E.elseStatement)):Uu(E,E.elseStatement))}function mt(E,ne){let Ee=$t(115,ne,zi,E);Wn(),$t(20,Ee,Qn,E),Kt(E.expression),$t(21,E.expression.end,Qn,E)}function St(E){$t(90,E.pos,zi,E),Uu(E,E.statement),Va(E.statement)&&!_e?Wn():ay(E,E.statement,E.expression),mt(E,E.statement.end),lc()}function Zt(E){mt(E,E.pos),Uu(E,E.statement)}function rn(E){let ne=$t(97,E.pos,zi,E);Wn();let Ee=$t(20,ne,Qn,E);kr(E.initializer),Ee=$t(26,E.initializer?E.initializer.end:Ee,Qn,E),Lp(E.condition),Ee=$t(26,E.condition?E.condition.end:Ee,Qn,E),Lp(E.incrementor),$t(21,E.incrementor?E.incrementor.end:Ee,Qn,E),Uu(E,E.statement)}function sn(E){let ne=$t(97,E.pos,zi,E);Wn(),$t(20,ne,Qn,E),kr(E.initializer),Wn(),$t(101,E.initializer.end,zi,E),Wn(),Kt(E.expression),$t(21,E.expression.end,Qn,E),Uu(E,E.statement)}function Dn(E){let ne=$t(97,E.pos,zi,E);Wn(),A1(E.awaitModifier),$t(20,ne,Qn,E),kr(E.initializer),Wn(),$t(162,E.initializer.end,zi,E),Wn(),Kt(E.expression),$t(21,E.expression.end,Qn,E),Uu(E,E.statement)}function kr(E){E!==void 0&&(E.kind===258?Ge(E):Kt(E))}function ki(E){$t(86,E.pos,zi,E),Ub(E.label),lc()}function Vn(E){$t(81,E.pos,zi,E),Ub(E.label),lc()}function $t(E,ne,Ee,Wt,lr){let ci=ea(Wt),qr=ci&&ci.kind===Wt.kind,Ti=ne;if(qr&&C&&(ne=xo(C.text,ne)),qr&&Wt.pos!==Ti){let Wa=lr&&C&&!Gf(Ti,ne,C);Wa&&Jf(),rd(Ti),Wa&&Q_()}if(ne=I_(E,Ee,ne),qr&&Wt.end!==ne){let Wa=Wt.kind===291;ag(ne,!Wa,Wa)}return ne}function Xn(E){return E.kind===2||!!E.hasTrailingNewLine}function ra(E){return C?vt(Nm(C.text,E.pos),Xn)||vt(u2(E),Xn)?!0:_3(E)?E.pos!==E.expression.pos&&vt(eb(C.text,E.expression.pos),Xn)?!0:ra(E.expression):!1:!1}function Is(E){if(!Gt&&_3(E)&&ra(E)){let ne=ea(E);if(ne&&ud(ne)){let Ee=D.createParenthesizedExpression(E.expression);return Ir(Ee,E),it(Ee,ne),Ee}return D.createParenthesizedExpression(E)}return E}function Mc(E){return Is(gr.parenthesizeExpressionForDisallowedComma(E))}function mm(E){$t(105,E.pos,zi,E),Lp(E.expression&&Is(E.expression),Is),lc()}function Hh(E){let ne=$t(116,E.pos,zi,E);Wn(),$t(20,ne,Qn,E),Kt(E.expression),$t(21,E.expression.end,Qn,E),Uu(E,E.statement)}function E_(E){let ne=$t(107,E.pos,zi,E);Wn(),$t(20,ne,Qn,E),Kt(E.expression),$t(21,E.expression.end,Qn,E),Wn(),Ge(E.caseBlock)}function Cb(E){Ge(E.label),$t(58,E.label.end,Qn,E),Wn(),Ge(E.statement)}function mv(E){$t(109,E.pos,zi,E),Lp(Is(E.expression),Is),lc()}function yx(E){$t(111,E.pos,zi,E),Wn(),Ge(E.tryBlock),E.catchClause&&(ay(E,E.tryBlock,E.catchClause),Ge(E.catchClause)),E.finallyBlock&&(ay(E,E.catchClause||E.tryBlock,E.finallyBlock),$t(96,(E.catchClause||E.tryBlock).end,zi,E),Wn(),Ge(E.finallyBlock))}function p1(E){iy(87,E.pos,zi),lc()}function vx(E){var ne,Ee,Wt,lr,ci;Ge(E.name),Ge(E.exclamationToken),$_(E.type),C_(E.initializer,(ci=(lr=(ne=E.type)==null?void 0:ne.end)!=null?lr:(Wt=(Ee=E.name.emitNode)==null?void 0:Ee.typeNode)==null?void 0:Wt.end)!=null?ci:E.name.end,E,gr.parenthesizeExpressionForDisallowedComma)}function Wh(E){zi(LI(E)?\"let\":kh(E)?\"const\":\"var\"),Wn(),cs(E,E.declarations,528)}function T_(E){hv(E)}function hv(E){nf(E,E.modifiers,!1),zi(\"function\"),Ge(E.asteriskToken),Wn(),kt(E.name),eh(E,Y_)}function eh(E,ne){let Ee=E.body;if(Ee)if(Va(Ee)){let Wt=Ya(E)&131072;Wt&&Jf(),ng(E),mn(E.parameters,qc),qc(E.body),ne(E),lE(Ee),ih(E),Wt&&Q_()}else ne(E),Wn(),Kt(Ee,gr.parenthesizeConciseBodyOfArrowFunction);else ne(E),lc()}function Y_(E){Dp(E,E.typeParameters),eg(E,E.parameters),$_(E.type)}function gv(E){if(Ya(E)&1)return!0;if(E.multiLine||!ws(E)&&C&&!wT(E,C)||Fl(E,Sl(E.statements),2)||bm(E,Os(E.statements),2,E.statements))return!1;let ne;for(let Ee of E.statements){if(Kf(ne,Ee,2)>0)return!1;ne=Ee}return!0}function lE(E){l?.(E),Wn(),Qn(\"{\"),Jf();let ne=gv(E)?Ib:zh;ig(E,E.statements,ne),Q_(),iy(19,E.statements.end,Qn,E),f?.(E)}function Ib(E){zh(E,!0)}function zh(E,ne){let Ee=xv(E.statements),Wt=X.getTextPos();Vt(E),Ee===0&&Wt===X.getTextPos()&&ne?(Q_(),cs(E,E.statements,768),Jf()):cs(E,E.statements,1,void 0,Ee)}function m1(E){uE(E)}function uE(E){Iv(0,void 0),mn(E.members,xE),nf(E,E.modifiers,!0),$t(84,yp(E).pos,zi,E),E.name&&(Wn(),kt(E.name));let ne=Ya(E)&131072;ne&&Jf(),Dp(E,E.typeParameters),cs(E,E.heritageClauses,0),Wn(),Qn(\"{\"),cs(E,E.members,129),Qn(\"}\"),ne&&Q_(),Gl()}function dE(E){Iv(0,void 0),nf(E,E.modifiers,!1),zi(\"interface\"),Wn(),Ge(E.name),Dp(E,E.typeParameters),cs(E,E.heritageClauses,512),Wn(),Qn(\"{\"),cs(E,E.members,129),Qn(\"}\"),Gl()}function fE(E){nf(E,E.modifiers,!1),zi(\"type\"),Wn(),Ge(E.name),Dp(E,E.typeParameters),Wn(),Qn(\"=\"),Wn(),Ge(E.type),lc()}function yv(E){nf(E,E.modifiers,!1),zi(\"enum\"),Wn(),Ge(E.name),Wn(),Qn(\"{\"),cs(E,E.members,145),Qn(\"}\")}function bx(E){nf(E,E.modifiers,!1),~E.flags&1024&&(zi(E.flags&16?\"namespace\":\"module\"),Wn()),Ge(E.name);let ne=E.body;if(!ne)return lc();for(;ne&&Tc(ne);)Qn(\".\"),Ge(ne.name),ne=ne.body;Wn(),Ge(ne)}function _E(E){ng(E),mn(E.statements,qc),Pn(E,rh(E)),ih(E)}function pE(E){$t(18,E.pos,Qn,E),cs(E,E.clauses,129),$t(19,E.clauses.end,Qn,E,!0)}function vv(E){nf(E,E.modifiers,!1),$t(100,E.modifiers?E.modifiers.end:E.pos,zi,E),Wn(),E.isTypeOnly&&($t(154,E.pos,zi,E),Wn()),Ge(E.name),Wn(),$t(63,E.name.end,Qn,E),Wn(),Lb(E.moduleReference),lc()}function Lb(E){E.kind===79?Kt(E):Ge(E)}function bv(E){nf(E,E.modifiers,!1),$t(100,E.modifiers?E.modifiers.end:E.pos,zi,E),Wn(),E.importClause&&(Ge(E.importClause),Wn(),$t(158,E.importClause.end,zi,E),Wn()),Kt(E.moduleSpecifier),E.assertClause&&Ub(E.assertClause),lc()}function h1(E){E.isTypeOnly&&($t(154,E.pos,zi,E),Wn()),Ge(E.name),E.name&&E.namedBindings&&($t(27,E.name.end,Qn,E),Wn()),Ge(E.namedBindings)}function Jh(E){let ne=$t(41,E.pos,Qn,E);Wn(),$t(128,ne,zi,E),Wn(),Ge(E.name)}function Lo(E){kb(E)}function mE(E){Db(E)}function cC(E){let ne=$t(93,E.pos,zi,E);Wn(),E.isExportEquals?$t(63,ne,rf,E):$t(88,ne,zi,E),Wn(),Kt(E.expression,E.isExportEquals?gr.getParenthesizeRightSideOfBinaryForOperator(63):gr.parenthesizeExpressionOfExportDefault),lc()}function Zg(E){nf(E,E.modifiers,!1);let ne=$t(93,E.pos,zi,E);if(Wn(),E.isTypeOnly&&(ne=$t(154,ne,zi,E),Wn()),E.exportClause?Ge(E.exportClause):ne=$t(41,ne,Qn,E),E.moduleSpecifier){Wn();let Ee=E.exportClause?E.exportClause.end:ne;$t(158,Ee,zi,E),Wn(),Kt(E.moduleSpecifier)}E.assertClause&&Ub(E.assertClause),lc()}function Kh(E){$t(130,E.pos,zi,E),Wn();let ne=E.elements;cs(E,ne,526226)}function hm(E){Ge(E.name),Qn(\":\"),Wn();let ne=E.value;if((Ya(ne)&1024)===0){let Ee=sm(ne);ag(Ee.pos)}Ge(ne)}function S_(E){let ne=$t(93,E.pos,zi,E);Wn(),ne=$t(128,ne,zi,E),Wn(),ne=$t(143,ne,zi,E),Wn(),Ge(E.name),lc()}function Zu(E){let ne=$t(41,E.pos,Qn,E);Wn(),$t(128,ne,zi,E),Wn(),Ge(E.name)}function ed(E){kb(E)}function td(E){Db(E)}function kb(E){Qn(\"{\"),cs(E,E.elements,525136),Qn(\"}\")}function Db(E){E.isTypeOnly&&(zi(\"type\"),Wn()),E.propertyName&&(Ge(E.propertyName),Wn(),$t(128,E.propertyName.end,zi,E),Wn()),Ge(E.name)}function Ex(E){zi(\"require\"),Qn(\"(\"),Kt(E.expression),Qn(\")\")}function wb(E){Ge(E.openingElement),cs(E,E.children,262144),Ge(E.closingElement)}function qh(E){Qn(\"<\"),Nb(E.tagName),kp(E,E.typeArguments),Wn(),Ge(E.attributes),Qn(\"/>\")}function Rb(E){Ge(E.openingFragment),cs(E,E.children,262144),Ge(E.closingFragment)}function g1(E){if(Qn(\"<\"),Xm(E)){let ne=TE(E.tagName,E);Nb(E.tagName),kp(E,E.typeArguments),E.attributes.properties&&E.attributes.properties.length>0&&Wn(),Ge(E.attributes),Hb(E.attributes,E),tg(ne)}Qn(\">\")}function Ob(E){X.writeLiteral(E.text)}function lC(E){Qn(\"</\"),BS(E)&&Nb(E.tagName),Qn(\">\")}function Tx(E){cs(E,E.properties,262656)}function Ev(E){Ge(E.name),Cx(\"=\",Qn,E.initializer,ln)}function hE(E){Qn(\"{...\"),Kt(E.expression),Qn(\"}\")}function Fe(E){let ne=!1;return Ew(C?.text||\"\",E+1,()=>ne=!0),ne}function ey(E){let ne=!1;return bw(C?.text||\"\",E+1,()=>ne=!0),ne}function Ip(E){return Fe(E)||ey(E)}function Tv(E){var ne;if(E.expression||!Gt&&!ws(E)&&Ip(E.pos)){let Ee=C&&!ws(E)&&Gs(C,E.pos).line!==Gs(C,E.end).line;Ee&&X.increaseIndent();let Wt=$t(18,E.pos,Qn,E);Ge(E.dotDotDotToken),Kt(E.expression),$t(19,((ne=E.expression)==null?void 0:ne.end)||Wt,Qn,E),Ee&&X.decreaseIndent()}}function Nb(E){E.kind===79?Kt(E):Ge(E)}function Sv(E){$t(82,E.pos,zi,E),Wn(),Kt(E.expression,gr.parenthesizeExpressionForDisallowedComma),y1(E,E.statements,E.expression.end)}function Xh(E){let ne=$t(88,E.pos,zi,E);y1(E,E.statements,ne)}function y1(E,ne,Ee){let Wt=ne.length===1&&(!C||ws(E)||ws(ne[0])||a4(E,ne[0],C)),lr=163969;Wt?(iy(58,Ee,Qn,E),Wn(),lr&=-130):$t(58,Ee,Qn,E),cs(E,ne,lr)}function wo(E){Wn(),I_(E.token,zi),Wn(),cs(E,E.types,528)}function x_(E){let ne=$t(83,E.pos,zi,E);Wn(),E.variableDeclaration&&($t(20,ne,Qn,E),Ge(E.variableDeclaration),$t(21,E.variableDeclaration.end,Qn,E),Wn()),Ge(E.block)}function gE(E){Ge(E.name),Qn(\":\"),Wn();let ne=E.initializer;if((Ya(ne)&1024)===0){let Ee=sm(ne);ag(Ee.pos)}Kt(ne,gr.parenthesizeExpressionForDisallowedComma)}function Kc(E){Ge(E.name),E.objectAssignmentInitializer&&(Wn(),Qn(\"=\"),Wn(),Kt(E.objectAssignmentInitializer,gr.parenthesizeExpressionForDisallowedComma))}function th(E){E.expression&&($t(25,E.pos,Qn,E),Kt(E.expression,gr.parenthesizeExpressionForDisallowedComma))}function Pb(E){Ge(E.name),C_(E.initializer,E.name.end,E,gr.parenthesizeExpressionForDisallowedComma)}function A_(E){if(we(\"/**\"),E.comment){let ne=Iw(E.comment);if(ne){let Ee=ne.split(/\\r\\n?|\\n/g);for(let Wt of Ee)nl(),Wn(),Qn(\"*\"),Wn(),we(Wt)}}E.tags&&(E.tags.length===1&&E.tags[0].kind===347&&!E.comment?(Wn(),Ge(E.tags[0])):cs(E,E.tags,33)),Wn(),we(\"*/\")}function Mb(E){nh(E.tagName),zs(E.typeExpression),ym(E.comment)}function Ml(E){nh(E.tagName),Ge(E.name),ym(E.comment)}function Yh(E){Wn(),Qn(\"{\"),Ge(E.name),Qn(\"}\")}function ll(E){nh(E.tagName),Wn(),Qn(\"{\"),Ge(E.class),Qn(\"}\"),ym(E.comment)}function v1(E){nh(E.tagName),zs(E.constraint),Wn(),cs(E,E.typeParameters,528),ym(E.comment)}function uC(E){nh(E.tagName),E.typeExpression&&(E.typeExpression.kind===312?zs(E.typeExpression):(Wn(),Qn(\"{\"),we(\"Object\"),E.typeExpression.isArrayType&&(Qn(\"[\"),Qn(\"]\")),Qn(\"}\"))),E.fullName&&(Wn(),Ge(E.fullName)),ym(E.comment),E.typeExpression&&E.typeExpression.kind===325&&yd(E.typeExpression)}function Ai(E){nh(E.tagName),E.name&&(Wn(),Ge(E.name)),ym(E.comment),yE(E.typeExpression)}function Rr(E){ym(E.comment),yE(E.typeExpression)}function gm(E){nh(E.tagName),ym(E.comment)}function yd(E){cs(E,D.createNodeArray(E.jsDocPropertyTags),33)}function yE(E){E.typeParameters&&cs(E,D.createNodeArray(E.typeParameters),33),E.parameters&&cs(E,D.createNodeArray(E.parameters),33),E.type&&(nl(),Wn(),Qn(\"*\"),Wn(),Ge(E.type))}function $h(E){nh(E.tagName),zs(E.typeExpression),Wn(),E.isBracketed&&Qn(\"[\"),Ge(E.name),E.isBracketed&&Qn(\"]\"),ym(E.comment)}function nh(E){Qn(\"@\"),Ge(E)}function ym(E){let ne=Iw(E);ne&&(Wn(),we(ne))}function zs(E){E&&(Wn(),Qn(\"{\"),Ge(E.type),Qn(\"}\"))}function Fb(E){nl();let ne=E.statements;if(ne.length===0||!G_(ne[0])||ws(ne[0])){ig(E,ne,Af);return}Af(E)}function b1(E){E1(!!E.hasNoDefaultLib,E.syntheticFileReferences||[],E.syntheticTypeReferences||[],E.syntheticLibReferences||[]);for(let ne of E.prepends)if(UT(ne)&&ne.syntheticReferences)for(let Ee of ne.syntheticReferences)Ge(Ee),nl()}function Gb(E){E.isDeclarationFile&&E1(E.hasNoDefaultLib,E.referencedFiles,E.typeReferenceDirectives,E.libReferenceDirectives)}function E1(E,ne,Ee,Wt){if(E){let lr=X.getTextPos();vm('/// <reference no-default-lib=\"true\"/>'),Pe&&Pe.sections.push({pos:lr,end:X.getTextPos(),kind:\"no-default-lib\"}),nl()}if(C&&C.moduleName&&(vm(`/// <amd-module name=\"${C.moduleName}\" />`),nl()),C&&C.amdDependencies)for(let lr of C.amdDependencies)lr.name?vm(`/// <amd-dependency name=\"${lr.name}\" path=\"${lr.path}\" />`):vm(`/// <amd-dependency path=\"${lr.path}\" />`),nl();for(let lr of ne){let ci=X.getTextPos();vm(`/// <reference path=\"${lr.fileName}\" />`),Pe&&Pe.sections.push({pos:ci,end:X.getTextPos(),kind:\"reference\",data:lr.fileName}),nl()}for(let lr of Ee){let ci=X.getTextPos(),qr=lr.resolutionMode&&lr.resolutionMode!==C?.impliedNodeFormat?`resolution-mode=\"${lr.resolutionMode===99?\"import\":\"require\"}\"`:\"\";vm(`/// <reference types=\"${lr.fileName}\" ${qr}/>`),Pe&&Pe.sections.push({pos:ci,end:X.getTextPos(),kind:lr.resolutionMode?lr.resolutionMode===99?\"type-import\":\"type-require\":\"type\",data:lr.fileName}),nl()}for(let lr of Wt){let ci=X.getTextPos();vm(`/// <reference lib=\"${lr.fileName}\" />`),Pe&&Pe.sections.push({pos:ci,end:X.getTextPos(),kind:\"lib\",data:lr.fileName}),nl()}}function Af(E){let ne=E.statements;ng(E),mn(E.statements,qc),Vt(E);let Ee=Yc(ne,Wt=>!G_(Wt));Gb(E),cs(E,ne,1,void 0,Ee===-1?ne.length:Ee),ih(E)}function Sx(E){let ne=Ya(E);!(ne&1024)&&E.pos!==E.expression.pos&&ag(E.expression.pos),Kt(E.expression),!(ne&2048)&&E.end!==E.expression.end&&rd(E.expression.end)}function xx(E){ny(E,E.elements,528,void 0)}function xv(E,ne,Ee,Wt){let lr=!!ne;for(let ci=0;ci<E.length;ci++){let qr=E[ci];if(G_(qr)){if(Ee?!Ee.has(qr.expression.text):!0){lr&&(lr=!1,ue(ne)),nl();let Wa=X.getTextPos();Ge(qr),Wt&&Pe&&Pe.sections.push({pos:Wa,end:X.getTextPos(),kind:\"prologue\",data:qr.expression.text}),Ee&&Ee.add(qr.expression.text)}}else return ci}return E.length}function T1(E,ne){for(let Ee of E)if(!ne.has(Ee.data)){nl();let Wt=X.getTextPos();Ge(Ee),Pe&&Pe.sections.push({pos:Wt,end:X.getTextPos(),kind:\"prologue\",data:Ee.data}),ne&&ne.add(Ee.data)}}function S1(E){if(Li(E))xv(E.statements,E);else{let ne=new Set;for(let Ee of E.prepends)T1(Ee.prologues,ne);for(let Ee of E.sourceFiles)xv(Ee.statements,Ee,ne,!0);ue(void 0)}}function Ax(E){let ne=new Set,Ee;for(let Wt=0;Wt<E.sourceFiles.length;Wt++){let lr=E.sourceFiles[Wt],ci,qr=0;for(let Ti of lr.statements){if(!G_(Ti))break;ne.has(Ti.expression.text)||(ne.add(Ti.expression.text),(ci||(ci=[])).push({pos:Ti.pos,end:Ti.end,expression:{pos:Ti.expression.pos,end:Ti.expression.end,text:Ti.expression.text}}),qr=qr<Ti.end?Ti.end:qr)}ci&&(Ee||(Ee=[])).push({file:Wt,text:lr.text.substring(0,qr),directives:ci})}return Ee}function Bb(E){if(Li(E)||UT(E)){let ne=K8(E.text);if(ne)return vm(ne),nl(),!0}else{for(let ne of E.prepends)if(L.assertNode(ne,UT),Bb(ne))return!0;for(let ne of E.sourceFiles)if(Bb(ne))return!0}}function x1(E,ne){if(!E)return;let Ee=we;we=ne,Ge(E),we=Ee}function nf(E,ne,Ee){if(ne?.length){if(Ji(ne,Ha))return Qh(E,ne);if(Ji(ne,du))return Ee?Zh(E,ne):E.pos;d?.(ne);let Wt,lr,ci=0,qr=0,Ti;for(;ci<ne.length;){for(;qr<ne.length;){if(Ti=ne[qr],lr=du(Ti)?\"decorators\":\"modifiers\",Wt===void 0)Wt=lr;else if(lr!==Wt)break;qr++}let Wa={pos:-1,end:-1};ci===0&&(Wa.pos=ne.pos),qr===ne.length-1&&(Wa.end=ne.end),(Wt===\"modifiers\"||Ee)&&Vb(Ge,E,ne,Wt===\"modifiers\"?2359808:2146305,void 0,ci,qr-ci,!1,Wa),ci=qr,Wt=lr,qr++}if(g?.(ne),Ti&&!vp(Ti.end))return Ti.end}return E.pos}function Qh(E,ne){cs(E,ne,2359808);let Ee=Os(ne);return Ee&&!vp(Ee.end)?Ee.end:E.pos}function $_(E){E&&(Qn(\":\"),Wn(),Ge(E))}function C_(E,ne,Ee,Wt){E&&(Wn(),$t(63,ne,rf,Ee),Wn(),Kt(E,Wt))}function Cx(E,ne,Ee,Wt){Ee&&(ne(E),Wt(Ee))}function Ub(E){E&&(Wn(),Ge(E))}function Lp(E,ne){E&&(Wn(),Kt(E,ne))}function A1(E){E&&(Ge(E),Wn())}function Uu(E,ne){Va(ne)||Ya(E)&1?(Wn(),Ge(ne)):(nl(),Jf(),Pz(ne)?rt(5,ne):Ge(ne),Q_())}function Zh(E,ne){cs(E,ne,2146305);let Ee=Os(ne);return Ee&&!vp(Ee.end)?Ee.end:E.pos}function kp(E,ne){cs(E,ne,53776,pt)}function Dp(E,ne){if(Ia(E)&&E.typeArguments)return kp(E,E.typeArguments);cs(E,ne,53776)}function eg(E,ne){cs(E,ne,2576)}function vE(E,ne){let Ee=Wp(ne);return Ee&&Ee.pos===E.pos&&xs(E)&&!E.type&&!vt(E.modifiers)&&!vt(E.typeParameters)&&!vt(Ee.modifiers)&&!Ee.dotDotDotToken&&!Ee.questionToken&&!Ee.type&&!Ee.initializer&&Re(Ee.name)}function C1(E,ne){vE(E,ne)?cs(E,ne,528):eg(E,ne)}function ty(E,ne){cs(E,ne,8848)}function bE(E){switch(E&60){case 0:break;case 16:Qn(\",\");break;case 4:Wn(),Qn(\"|\");break;case 32:Wn(),Qn(\"*\"),Wn();break;case 8:Wn(),Qn(\"&\");break}}function cs(E,ne,Ee,Wt,lr,ci){Ix(Ge,E,ne,Ee|(E&&Ya(E)&2?65536:0),Wt,lr,ci)}function ny(E,ne,Ee,Wt,lr,ci){Ix(Kt,E,ne,Ee,Wt,lr,ci)}function Ix(E,ne,Ee,Wt,lr,ci=0,qr=Ee?Ee.length-ci:0){if(Ee===void 0&&Wt&16384)return;let Wa=Ee===void 0||ci>=Ee.length||qr===0;if(Wa&&Wt&32768){d?.(Ee),g?.(Ee);return}Wt&15360&&(Qn(HMe(Wt)),Wa&&Ee&&ag(Ee.pos,!0)),d?.(Ee),Wa?Wt&1&&!(_e&&(!ne||C&&wT(ne,C)))?nl():Wt&256&&!(Wt&524288)&&Wn():Vb(E,ne,Ee,Wt,lr,ci,qr,Ee.hasTrailingComma,Ee),g?.(Ee),Wt&15360&&(Wa&&Ee&&rd(Ee.end),Qn(WMe(Wt)))}function Vb(E,ne,Ee,Wt,lr,ci,qr,Ti,Wa){let kl=(Wt&262144)===0,Ed=kl,Ud=Fl(ne,Ee[ci],Wt);Ud?(nl(Ud),Ed=!1):Wt&256&&Wn(),Wt&128&&Jf();let fy=qMe(E,lr),Td,Ov,Nv=!1;for(let Sm=0;Sm<qr;Sm++){let py=Ee[ci+Sm];if(Wt&32)nl(),bE(Wt);else if(Td){Wt&60&&Td.end!==(ne?ne.end:-1)&&(Ya(Td)&2048||rd(Td.end)),bE(Wt),Cr(Ov);let Cf=Kf(Td,py,Wt);Cf>0?((Wt&131)===0&&(Jf(),Nv=!0),nl(Cf),Ed=!1):Td&&Wt&512&&Wn()}if(Ov=dr(py),Ed){let Cf=sm(py);ag(Cf.pos)}else Ed=kl;ge=py.pos,fy(py,E,lr,Sm),Nv&&(Q_(),Nv=!1),Td=py}let _y=Td?Ya(Td):0,qf=Gt||!!(_y&2048),ME=Ti&&Wt&64&&Wt&16;ME&&(Td&&!qf?$t(27,Td.end,Qn,Td):Qn(\",\")),Td&&(ne?ne.end:-1)!==Td.end&&Wt&60&&!qf&&rd(ME&&Wa?.end?Wa.end:Td.end),Wt&128&&Q_(),Cr(Ov);let sf=bm(ne,Ee[ci+qr-1],Wt,Wa);sf?nl(sf):Wt&2097408&&Wn()}function jb(E){X.writeLiteral(E)}function Lx(E){X.writeStringLiteral(E)}function dC(E){X.write(E)}function kx(E,ne){X.writeSymbol(E,ne)}function Qn(E){X.writePunctuation(E)}function lc(){X.writeTrailingSemicolon(\";\")}function zi(E){X.writeKeyword(E)}function rf(E){X.writeOperator(E)}function Av(E){X.writeParameter(E)}function vm(E){X.writeComment(E)}function Wn(){X.writeSpace(\" \")}function Dx(E){X.writeProperty(E)}function ry(E){X.nonEscapingWrite?X.nonEscapingWrite(E):X.write(E)}function nl(E=1){for(let ne=0;ne<E;ne++)X.writeLine(ne>0)}function Jf(){X.increaseIndent()}function Q_(){X.decreaseIndent()}function iy(E,ne,Ee,Wt){return Le?I_(E,Ee,ne):fC(Wt,E,Ee,ne,I_)}function EE(E,ne){m&&m(E),ne(Xa(E.kind)),v&&v(E)}function I_(E,ne,Ee){let Wt=Xa(E);return ne(Wt),Ee<0?Ee:Ee+Wt.length}function ay(E,ne,Ee){if(Ya(E)&1)Wn();else if(_e){let Wt=Z_(E,ne,Ee);Wt?nl(Wt):Wn()}else nl()}function Ac(E){let ne=E.split(/\\r\\n?|\\n/g),Ee=xse(ne);for(let Wt of ne){let lr=Ee?Wt.slice(Ee):Wt;lr.length&&(nl(),we(lr))}}function wc(E,ne){E?(Jf(),nl(E)):ne&&Wn()}function tg(E,ne){E&&Q_(),ne&&Q_()}function Fl(E,ne,Ee){if(Ee&2||_e){if(Ee&65536)return 1;if(ne===void 0)return!E||C&&wT(E,C)?0:1;if(ne.pos===ge||ne.kind===11)return 0;if(C&&E&&!vp(E.pos)&&!ws(ne)&&(!ne.parent||ec(ne.parent)===ec(E)))return _e?nd(Wt=>ole(ne.pos,E.pos,C,Wt)):a4(E,ne,C)?0:1;if(Wb(ne,Ee))return 1}return Ee&1?1:0}function Kf(E,ne,Ee){if(Ee&2||_e){if(E===void 0||ne===void 0||ne.kind===11)return 0;if(C&&!ws(E)&&!ws(ne))return _e&&ch(E,ne)?nd(Wt=>pW(E,ne,C,Wt)):!_e&&wv(E,ne)?wR(E,ne,C)?0:1:Ee&65536?1:0;if(Wb(E,Ee)||Wb(ne,Ee))return 1}else if(nO(ne))return 1;return Ee&1?1:0}function bm(E,ne,Ee,Wt){if(Ee&2||_e){if(Ee&65536)return 1;if(ne===void 0)return!E||C&&wT(E,C)?0:1;if(C&&E&&!vp(E.pos)&&!ws(ne)&&(!ne.parent||ne.parent===E)){if(_e){let lr=Wt&&!vp(Wt.end)?Wt.end:ne.end;return nd(ci=>sle(lr,E.end,C,ci))}return rle(E,ne,C)?0:1}if(Wb(ne,Ee))return 1}return Ee&1&&!(Ee&131072)?1:0}function nd(E){L.assert(!!_e);let ne=E(!0);return ne===0?E(!1):ne}function TE(E,ne){let Ee=_e&&Fl(ne,E,0);return Ee&&wc(Ee,!1),!!Ee}function Hb(E,ne){let Ee=_e&&bm(ne,E,0,void 0);Ee&&nl(Ee)}function Wb(E,ne){if(ws(E)){let Ee=nO(E);return Ee===void 0?(ne&65536)!==0:Ee}return(ne&65536)!==0}function Z_(E,ne,Ee){return Ya(E)&262144?0:(E=SE(E),ne=SE(ne),Ee=SE(Ee),nO(Ee)?1:C&&!ws(E)&&!ws(ne)&&!ws(Ee)?_e?nd(Wt=>pW(ne,Ee,C,Wt)):wR(ne,Ee,C)?0:1:0)}function rh(E){return E.statements.length===0&&(!C||wR(E,E,C))}function SE(E){for(;E.kind===214&&ws(E);)E=E.expression;return E}function oy(E,ne){if(tc(E)||nS(E))return zb(E);if(yo(E)&&E.textSourceNode)return oy(E.textSourceNode,ne);let Ee=C,Wt=!!Ee&&!!E.parent&&!ws(E);if(Ah(E)){if(!Wt||Gn(E)!==ec(Ee))return vr(E)}else if(L.assertNode(E,_T),!Wt)return E.text;return k0(Ee,E,ne)}function uc(E,ne,Ee){if(E.kind===10&&E.textSourceNode){let lr=E.textSourceNode;if(Re(lr)||pi(lr)||Uf(lr)){let ci=Uf(lr)?lr.text:oy(lr);return Ee?`\"${qH(ci)}\"`:ne||Ya(E)&33554432?`\"${pS(ci)}\"`:`\"${TR(ci)}\"`}else return uc(lr,ne,Ee)}let Wt=(ne?1:0)|(Ee?2:0)|(e.terminateUnterminatedLiterals?4:0)|(e.target&&e.target===99?8:0);return Bse(E,C,Wt)}function ng(E){E&&Ya(E)&1048576||(Q.push(fe),fe=0,W.push(Y),Y=void 0,Z.push(U))}function ih(E){E&&Ya(E)&1048576||(fe=Q.pop(),Y=W.pop(),U=Z.pop())}function Cv(E){(!U||U===Os(Z))&&(U=new Set),U.add(E)}function Iv(E,ne){R.push(ie),ie=E,re.push(U),le=ne}function Gl(){ie=R.pop(),le=re.pop()}function ah(E){(!le||le===Os(re))&&(le=new Set),le.add(E)}function qc(E){if(!!E)switch(E.kind){case 238:mn(E.statements,qc);break;case 253:case 251:case 243:case 244:qc(E.statement);break;case 242:qc(E.thenStatement),qc(E.elseStatement);break;case 245:case 247:case 246:qc(E.initializer),qc(E.statement);break;case 252:qc(E.caseBlock);break;case 266:mn(E.clauses,qc);break;case 292:case 293:mn(E.statements,qc);break;case 255:qc(E.tryBlock),qc(E.catchClause),qc(E.finallyBlock);break;case 295:qc(E.variableDeclaration),qc(E.block);break;case 240:qc(E.declarationList);break;case 258:mn(E.declarations,qc);break;case 257:case 166:case 205:case 260:oh(E.name);break;case 259:oh(E.name),Ya(E)&1048576&&(mn(E.parameters,qc),qc(E.body));break;case 203:case 204:mn(E.elements,qc);break;case 269:qc(E.importClause);break;case 270:oh(E.name),qc(E.namedBindings);break;case 271:oh(E.name);break;case 277:oh(E.name);break;case 272:mn(E.elements,qc);break;case 273:oh(E.propertyName||E.name);break}}function xE(E){if(!!E)switch(E.kind){case 299:case 300:case 169:case 171:case 174:case 175:oh(E.name);break}}function oh(E){E&&(tc(E)||nS(E)?zb(E):La(E)&&qc(E))}function zb(E){let ne=E.emitNode.autoGenerate;if((ne.flags&7)===4)return Vu(I3(E),pi(E),ne.flags,ne.prefix,ne.suffix);{let Ee=ne.id;return B[Ee]||(B[Ee]=fr(E))}}function Vu(E,ne,Ee,Wt,lr){let ci=zo(E),qr=ne?F:P;return qr[ci]||(qr[ci]=No(E,ne,Ee??0,k2(Wt,zb),k2(lr)))}function Em(E,ne){return Lv(E,ne)&&!Jb(E,ne)&&!q.has(E)}function Jb(E,ne){return ne?!!le?.has(E):!!U?.has(E)}function Lv(E,ne){return C?g6(C,E,r):!0}function AE(E,ne){for(let Ee=ne;Ee&&CT(Ee,ne);Ee=Ee.nextContainer)if(Qp(Ee)&&Ee.locals){let Wt=Ee.locals.get(Bs(E));if(Wt&&Wt.flags&3257279)return!1}return!0}function sy(E){var ne;switch(E){case\"\":return fe;case\"#\":return ie;default:return(ne=Y?.get(E))!=null?ne:0}}function I1(E,ne){switch(E){case\"\":fe=ne;break;case\"#\":ie=ne;break;default:Y??(Y=new Map),Y.set(E,ne);break}}function kv(E,ne,Ee,Wt,lr){Wt.length>0&&Wt.charCodeAt(0)===35&&(Wt=Wt.slice(1));let ci=HT(Ee,Wt,\"\",lr),qr=sy(ci);if(E&&!(qr&E)){let Wa=HT(Ee,Wt,E===268435456?\"_i\":\"_n\",lr);if(Em(Wa,Ee))return qr|=E,Ee?ah(Wa):ne&&Cv(Wa),I1(ci,qr),Wa}for(;;){let Ti=qr&268435455;if(qr++,Ti!==8&&Ti!==13){let Wa=Ti<26?\"_\"+String.fromCharCode(97+Ti):\"_\"+(Ti-26),kl=HT(Ee,Wt,Wa,lr);if(Em(kl,Ee))return Ee?ah(kl):ne&&Cv(kl),I1(ci,qr),kl}}}function rg(E,ne=Em,Ee,Wt,lr,ci,qr){if(E.length>0&&E.charCodeAt(0)===35&&(E=E.slice(1)),ci.length>0&&ci.charCodeAt(0)===35&&(ci=ci.slice(1)),Ee){let Wa=HT(lr,ci,E,qr);if(ne(Wa,lr))return lr?ah(Wa):Wt?Cv(Wa):q.add(Wa),Wa}E.charCodeAt(E.length-1)!==95&&(E+=\"_\");let Ti=1;for(;;){let Wa=HT(lr,ci,E+Ti,qr);if(ne(Wa,lr))return lr?ah(Wa):Wt?Cv(Wa):q.add(Wa),Wa;Ti++}}function af(E){return rg(E,Lv,!0,!1,!1,\"\",\"\")}function CE(E){let ne=oy(E.name);return AE(ne,zr(E,Qp))?ne:rg(ne,Em,!1,!1,!1,\"\",\"\")}function Gd(E){let ne=VA(E),Ee=yo(ne)?Vse(ne.text):\"module\";return rg(Ee,Em,!1,!1,!1,\"\",\"\")}function sh(){return rg(\"default\",Em,!1,!1,!1,\"\",\"\")}function Dv(){return rg(\"class\",Em,!1,!1,!1,\"\",\"\")}function wx(E,ne,Ee,Wt){return Re(E.name)?Vu(E.name,ne):kv(0,!1,ne,Ee,Wt)}function No(E,ne,Ee,Wt,lr){switch(E.kind){case 79:case 80:return rg(oy(E),Em,!!(Ee&16),!!(Ee&8),ne,Wt,lr);case 264:case 263:return L.assert(!Wt&&!lr&&!ne),CE(E);case 269:case 275:return L.assert(!Wt&&!lr&&!ne),Gd(E);case 259:case 260:{L.assert(!Wt&&!lr&&!ne);let ci=E.name;return ci&&!tc(ci)?No(ci,!1,Ee,Wt,lr):sh()}case 274:return L.assert(!Wt&&!lr&&!ne),sh();case 228:return L.assert(!Wt&&!lr&&!ne),Dv();case 171:case 174:case 175:return wx(E,ne,Wt,lr);case 164:return kv(0,!0,ne,Wt,lr);default:return kv(0,!1,ne,Wt,lr)}}function fr(E){let ne=E.emitNode.autoGenerate,Ee=k2(ne.prefix,zb),Wt=k2(ne.suffix);switch(ne.flags&7){case 1:return kv(0,!!(ne.flags&8),pi(E),Ee,Wt);case 2:return L.assertNode(E,Re),kv(268435456,!!(ne.flags&8),!1,Ee,Wt);case 3:return rg(vr(E),ne.flags&32?Lv:Em,!!(ne.flags&16),!!(ne.flags&8),pi(E),Ee,Wt)}return L.fail(`Unsupported GeneratedIdentifierKind: ${L.formatEnum(ne.flags&7,w8,!0)}.`)}function vd(E,ne){let Ee=pe(2,E,ne),Wt=qe,lr=zt,ci=Qt;ju(ne),Ee(E,ne),L1(ne,Wt,lr,ci)}function ju(E){let ne=Ya(E),Ee=sm(E);IE(E,ne,Ee.pos,Ee.end),ne&4096&&(Gt=!0)}function L1(E,ne,Ee,Wt){let lr=Ya(E),ci=sm(E);lr&4096&&(Gt=!1),cy(E,lr,ci.pos,ci.end,ne,Ee,Wt);let qr=vue(E);qr&&cy(E,lr,qr.pos,qr.end,ne,Ee,Wt)}function IE(E,ne,Ee,Wt){Ni(),_n=!1;let lr=Ee<0||(ne&1024)!==0||E.kind===11,ci=Wt<0||(ne&2048)!==0||E.kind===11;(Ee>0||Wt>0)&&Ee!==Wt&&(lr||Rp(Ee,E.kind!==355),(!lr||Ee>=0&&(ne&1024)!==0)&&(qe=Ee),(!ci||Wt>=0&&(ne&2048)!==0)&&(zt=Wt,E.kind===258&&(Qt=Wt))),mn(u2(E),Rx),Pi()}function cy(E,ne,Ee,Wt,lr,ci,qr){Ni();let Ti=Wt<0||(ne&2048)!==0||E.kind===11;mn(iO(E),ly),(Ee>0||Wt>0)&&Ee!==Wt&&(qe=lr,zt=ci,Qt=qr,!Ti&&E.kind!==355&&LE(Wt)),Pi()}function Rx(E){(E.hasLeadingNewline||E.kind===2)&&X.writeLine(),wp(E),E.hasTrailingNewLine||E.kind===2?X.writeLine():X.writeSpace(\" \")}function ly(E){X.isAtStartOfLine()||X.writeSpace(\" \"),wp(E),E.hasTrailingNewLine&&X.writeLine()}function wp(E){let ne=ep(E),Ee=E.kind===3?gw(ne):void 0;QA(ne,Ee,X,0,ne.length,x)}function ep(E){return E.kind===3?`/*${E.text}*/`:`//${E.text}`}function ig(E,ne,Ee){Ni();let{pos:Wt,end:lr}=ne,ci=Ya(E),qr=Wt<0||(ci&1024)!==0,Ti=Gt||lr<0||(ci&2048)!==0;qr||Rv(ne),Pi(),ci&4096&&!Gt?(Gt=!0,Ee(E),Gt=!1):Ee(E),Ni(),Ti||(Rp(ne.end,!0),_n&&!X.isAtStartOfLine()&&X.writeLine()),Pi()}function wv(E,ne){return E=ec(E),E.parent&&E.parent===ec(ne).parent}function ch(E,ne){if(ne.pos<E.end)return!1;E=ec(E),ne=ec(ne);let Ee=E.parent;if(!Ee||Ee!==ne.parent)return!1;let Wt=Ule(E),lr=Wt?.indexOf(E);return lr!==void 0&&lr>-1&&Wt.indexOf(ne)===lr+1}function Rp(E,ne){_n=!1,ne?E===0&&C?.isDeclarationFile?ls(E,Cc):ls(E,Tm):E===0&&ls(E,k1)}function k1(E,ne,Ee,Wt,lr){wE(E,ne)&&Tm(E,ne,Ee,Wt,lr)}function Cc(E,ne,Ee,Wt,lr){wE(E,ne)||Tm(E,ne,Ee,Wt,lr)}function Bd(E,ne){return e.onlyPrintJsDocStyle?cJ(E,ne)||y6(E,ne):!0}function Tm(E,ne,Ee,Wt,lr){!C||!Bd(C.text,E)||(_n||(Uce(je(),X,lr,E),_n=!0),bd(E),QA(C.text,je(),X,E,ne,x),bd(ne),Wt?X.writeLine():Ee===3&&X.writeSpace(\" \"))}function rd(E){Gt||E===-1||Rp(E,!0)}function LE(E){kE(E,uy)}function uy(E,ne,Ee,Wt){!C||!Bd(C.text,E)||(X.isAtStartOfLine()||X.writeSpace(\" \"),bd(E),QA(C.text,je(),X,E,ne,x),bd(ne),Wt&&X.writeLine())}function ag(E,ne,Ee){Gt||(Ni(),kE(E,ne?uy:Ee?Ox:of),Pi())}function Ox(E,ne,Ee){!C||(bd(E),QA(C.text,je(),X,E,ne,x),bd(ne),Ee===2&&X.writeLine())}function of(E,ne,Ee,Wt){!C||(bd(E),QA(C.text,je(),X,E,ne,x),bd(ne),Wt?X.writeLine():X.writeSpace(\" \"))}function ls(E,ne){C&&(qe===-1||E!==qe)&&(DE(E)?og(ne):bw(C.text,E,ne,E))}function kE(E,ne){C&&(zt===-1||E!==zt&&E!==Qt)&&Ew(C.text,E,ne)}function DE(E){return kn!==void 0&&To(kn).nodePos===E}function og(E){if(!C)return;let ne=To(kn).detachedCommentEndPos;kn.length-1?kn.pop():kn=void 0,bw(C.text,ne,E,ne)}function Rv(E){let ne=C&&jce(C.text,je(),X,D1,E,x,Gt);ne&&(kn?kn.push(ne):kn=[ne])}function D1(E,ne,Ee,Wt,lr,ci){!C||!Bd(C.text,Wt)||(bd(Wt),QA(E,ne,Ee,Wt,lr,ci),bd(lr))}function wE(E,ne){return!!C&&iH(C.text,E,ne)}function RE(E){return E.parsedSourceMap===void 0&&E.sourceMapText!==void 0&&(E.parsedSourceMap=bK(E.sourceMapText)||!1),E.parsedSourceMap||void 0}function OE(E,ne){let Ee=pe(3,E,ne);NE(ne),Ee(E,ne),PE(ne)}function NE(E){let ne=Ya(E),Ee=pb(E);if(Oj(E)){L.assertIsDefined(E.parent,\"UnparsedNodes must have parent pointers\");let Wt=RE(E.parent);Wt&&Ye&&Ye.appendSourceMap(X.getLine(),X.getColumn(),Wt,E.parent.sourceMapPath,E.parent.getLineAndCharacterOfPosition(E.pos),E.parent.getLineAndCharacterOfPosition(E.end))}else{let Wt=Ee.source||_t;E.kind!==355&&(ne&32)===0&&Ee.pos>=0&&lh(Ee.source||_t,dy(Wt,Ee.pos)),ne&128&&(Le=!0)}}function PE(E){let ne=Ya(E),Ee=pb(E);Oj(E)||(ne&128&&(Le=!1),E.kind!==355&&(ne&64)===0&&Ee.end>=0&&lh(Ee.source||_t,Ee.end))}function dy(E,ne){return E.skipTrivia?E.skipTrivia(ne):xo(E.text,ne)}function bd(E){if(Le||vp(E)||Px(_t))return;let{line:ne,character:Ee}=Gs(_t,E);Ye.addMapping(X.getLine(),X.getColumn(),ct,ne,Ee,void 0)}function lh(E,ne){if(E!==_t){let Ee=_t,Wt=ct;sg(E),bd(ne),Nx(Ee,Wt)}else bd(ne)}function fC(E,ne,Ee,Wt,lr){if(Le||E&&B6(E))return lr(ne,Ee,Wt);let ci=E&&E.emitNode,qr=ci&&ci.flags||0,Ti=ci&&ci.tokenSourceMapRanges&&ci.tokenSourceMapRanges[ne],Wa=Ti&&Ti.source||_t;return Wt=dy(Wa,Ti?Ti.pos:Wt),(qr&256)===0&&Wt>=0&&lh(Wa,Wt),Wt=lr(ne,Ee,Wt),Ti&&(Wt=Ti.end),(qr&512)===0&&Wt>=0&&lh(Wa,Wt),Wt}function sg(E){if(!Le){if(_t=E,E===Rt){ct=We;return}Px(E)||(ct=Ye.addSource(E.fileName),e.inlineSources&&Ye.setSourceContent(ct,E.text),Rt=E,We=ct)}}function Nx(E,ne){_t=E,ct=ne}function Px(E){return Gc(E.fileName,\".json\")}}function jMe(){let e=[];return e[1024]=[\"{\",\"}\"],e[2048]=[\"(\",\")\"],e[4096]=[\"<\",\">\"],e[8192]=[\"[\",\"]\"],e}function HMe(e){return KK[e&15360][0]}function WMe(e){return KK[e&15360][1]}function zMe(e,t,r,i){t(e)}function JMe(e,t,r,i){t(e,r.select(i))}function KMe(e,t,r,i){t(e,r)}function qMe(e,t){return e.length===1?zMe:typeof t==\"object\"?JMe:KMe}var KK,LF,qK,rE,XK,_N,XMe=gt({\"src/compiler/emitter.ts\"(){\"use strict\";fa(),fa(),E0(),KK=jMe(),LF={hasGlobalName:Sa,getReferencedExportContainer:Sa,getReferencedImportDeclaration:Sa,getReferencedDeclarationWithCollidingName:Sa,isDeclarationWithCollidingName:Sa,isValueAliasDeclaration:Sa,isReferencedAliasDeclaration:Sa,isTopLevelValueImportEqualsWithEntityName:Sa,getNodeCheckFlags:Sa,isDeclarationVisible:Sa,isLateBound:e=>!1,collectLinkedAliases:Sa,isImplementationOfOverload:Sa,isRequiredInitializedParameter:Sa,isOptionalUninitializedParameterProperty:Sa,isExpandoFunctionDeclaration:Sa,getPropertiesOfContainerFunction:Sa,createTypeOfDeclaration:Sa,createReturnTypeOfSignatureDeclaration:Sa,createTypeOfExpression:Sa,createLiteralConstValue:Sa,isSymbolAccessible:Sa,isEntityNameVisible:Sa,getConstantValue:Sa,getReferencedValueDeclaration:Sa,getTypeReferenceSerializationKind:Sa,isOptionalParameter:Sa,moduleExportsSomeValue:Sa,isArgumentsLocalBinding:Sa,getExternalModuleFileFromDeclaration:Sa,getTypeReferenceDirectivesForEntityName:Sa,getTypeReferenceDirectivesForSymbol:Sa,isLiteralConstDeclaration:Sa,getJsxFactoryEntity:Sa,getJsxFragmentFactoryEntity:Sa,getAllAccessorDeclarations:Sa,getSymbolOfExternalModuleSpecifier:Sa,isBindingCapturedByNode:Sa,getDeclarationStatementsForSourceFile:Sa,isImportRequiredByAugmentation:Sa},qK=zu(()=>nE({})),rE=zu(()=>nE({removeComments:!0})),XK=zu(()=>nE({removeComments:!0,neverAsciiEscape:!0})),_N=zu(()=>nE({removeComments:!0,omitTrailingSemicolon:!0}))}});function Mpe(e,t,r){if(!e.getDirectories||!e.readDirectory)return;let i=new Map,o=Dl(r);return{useCaseSensitiveFileNames:r,fileExists:x,readFile:(R,ie)=>e.readFile(R,ie),directoryExists:e.directoryExists&&A,getDirectories:C,readDirectory:P,createDirectory:e.createDirectory&&w,writeFile:e.writeFile&&S,addOrDeleteFileOrDirectory:B,addOrDeleteFile:q,clearCache:Y,realpath:e.realpath&&F};function s(R){return Ts(R,t,o)}function l(R){return i.get(cu(R))}function f(R){let ie=l(ni(R));return ie&&(ie.sortedAndCanonicalizedFiles||(ie.sortedAndCanonicalizedFiles=ie.files.map(o).sort(),ie.sortedAndCanonicalizedDirectories=ie.directories.map(o).sort()),ie)}function d(R){return Hl(So(R))}function g(R,ie){var Q;if(!e.realpath||cu(s(e.realpath(R)))===ie){let fe={files:on(e.readDirectory(R,void 0,void 0,[\"*.*\"]),d)||[],directories:e.getDirectories(R)||[]};return i.set(cu(ie),fe),fe}if((Q=e.directoryExists)!=null&&Q.call(e,R))return i.set(ie,!1),!1}function m(R,ie){ie=cu(ie);let Q=l(ie);if(Q)return Q;try{return g(R,ie)}catch{L.assert(!i.has(cu(ie)));return}}function v(R,ie){return Py(R,ie,Ks,su)>=0}function S(R,ie,Q){let fe=s(R),Z=f(fe);return Z&&W(Z,d(R),!0),e.writeFile(R,ie,Q)}function x(R){let ie=s(R),Q=f(ie);return Q&&v(Q.sortedAndCanonicalizedFiles,o(d(R)))||e.fileExists(R)}function A(R){let ie=s(R);return i.has(cu(ie))||e.directoryExists(R)}function w(R){let ie=s(R),Q=f(ie);if(Q){let fe=d(R),Z=o(fe),U=Q.sortedAndCanonicalizedDirectories;Ny(U,Z,su)&&Q.directories.push(fe)}e.createDirectory(R)}function C(R){let ie=s(R),Q=m(R,ie);return Q?Q.directories.slice():e.getDirectories(R)}function P(R,ie,Q,fe,Z){let U=s(R),re=m(R,U),le;if(re!==void 0)return wW(R,ie,Q,fe,r,t,Z,_e,F);return e.readDirectory(R,ie,Q,fe,Z);function _e(X){let Ve=s(X);if(Ve===U)return re||ge(X,Ve);let we=m(X,Ve);return we!==void 0?we||ge(X,Ve):D4}function ge(X,Ve){if(le&&Ve===U)return le;let we={files:on(e.readDirectory(X,void 0,void 0,[\"*.*\"]),d)||Je,directories:e.getDirectories(X)||Je};return Ve===U&&(le=we),we}}function F(R){return e.realpath?e.realpath(R):R}function B(R,ie){if(l(ie)!==void 0){Y();return}let fe=f(ie);if(!fe)return;if(!e.directoryExists){Y();return}let Z=d(R),U={fileExists:e.fileExists(ie),directoryExists:e.directoryExists(ie)};return U.directoryExists||v(fe.sortedAndCanonicalizedDirectories,o(Z))?Y():W(fe,Z,U.fileExists),U}function q(R,ie,Q){if(Q===1)return;let fe=f(ie);fe&&W(fe,d(R),Q===0)}function W(R,ie,Q){let fe=R.sortedAndCanonicalizedFiles,Z=o(ie);if(Q)Ny(fe,Z,su)&&R.files.push(ie);else{let U=Py(fe,Z,Ks,su);if(U>=0){fe.splice(U,1);let re=R.files.findIndex(le=>o(le)===Z);R.files.splice(re,1)}}}function Y(){i.clear()}}function YK(e,t,r,i,o){var s;let l=p0(((s=t?.configFile)==null?void 0:s.extendedSourceFiles)||Je,o);r.forEach((f,d)=>{l.has(d)||(f.projects.delete(e),f.close())}),l.forEach((f,d)=>{let g=r.get(d);g?g.projects.add(e):r.set(d,{projects:new Set([e]),watcher:i(f,d),close:()=>{let m=r.get(d);!m||m.projects.size!==0||(m.watcher.close(),r.delete(d))}})})}function Fpe(e,t){t.forEach(r=>{r.projects.delete(e)&&r.close()})}function $K(e,t,r){!e.delete(t)||e.forEach(({extendedResult:i},o)=>{var s;(s=i.extendedSourceFiles)!=null&&s.some(l=>r(l)===t)&&$K(e,o,r)})}function YMe(e,t,r){let i=new Map(e);t2(t,i,{createNewValue:r,onDeleteValue:am})}function Gpe(e,t,r){let i=e.getMissingFilePaths(),o=p0(i,Ks,h0);t2(t,o,{createNewValue:r,onDeleteValue:am})}function kF(e,t,r){t2(e,t,{createNewValue:i,onDeleteValue:_m,onExistingValue:o});function i(s,l){return{watcher:r(s,l),flags:l}}function o(s,l,f){s.flags!==l&&(s.watcher.close(),e.set(f,i(f,l)))}}function DF({watchedDirPath:e,fileOrDirectory:t,fileOrDirectoryPath:r,configFileName:i,options:o,program:s,extraFileExtensions:l,currentDirectory:f,useCaseSensitiveFileNames:d,writeLog:g,toPath:m}){let v=Dq(r);if(!v)return g(`Project: ${i} Detected ignored path: ${t}`),!0;if(r=v,r===e)return!1;if(yA(r)&&!wle(t,o,l))return g(`Project: ${i} Detected file add/remove of non supported extension: ${t}`),!0;if(gfe(t,o.configFile.configFileSpecs,_a(ni(i),f),d,f))return g(`Project: ${i} Detected excluded file: ${t}`),!0;if(!s||Ss(o)||o.outDir)return!1;if(Fu(r)){if(o.declarationDir)return!1}else if(!$c(r,fL))return!1;let S=ld(r),x=ba(s)?void 0:$Me(s)?s.getProgramOrUndefined():s,A=!x&&!ba(s)?s:void 0;if(w(S+\".ts\")||w(S+\".tsx\"))return g(`Project: ${i} Detected output file: ${t}`),!0;return!1;function w(C){return x?!!x.getSourceFileByPath(C):A?A.getState().fileInfos.has(C):!!wr(s,P=>m(P)===C)}}function $Me(e){return!!e.getState}function Bpe(e,t){return e?e.isEmittedFile(t):!1}function Upe(e,t,r,i){ooe(t===2?r:Ba);let o={watchFile:(w,C,P,F)=>e.watchFile(w,C,P,F),watchDirectory:(w,C,P,F)=>e.watchDirectory(w,C,(P&1)!==0,F)},s=t!==0?{watchFile:x(\"watchFile\"),watchDirectory:x(\"watchDirectory\")}:void 0,l=t===2?{watchFile:v,watchDirectory:S}:s||o,f=t===2?m:SN;return{watchFile:d(\"watchFile\"),watchDirectory:d(\"watchDirectory\")};function d(w){return(C,P,F,B,q,W)=>{var Y;return G3(C,w===\"watchFile\"?B?.excludeFiles:B?.excludeDirectories,g(),((Y=e.getCurrentDirectory)==null?void 0:Y.call(e))||\"\")?f(C,F,B,q,W):l[w].call(void 0,C,P,F,B,q,W)}}function g(){return typeof e.useCaseSensitiveFileNames==\"boolean\"?e.useCaseSensitiveFileNames:e.useCaseSensitiveFileNames()}function m(w,C,P,F,B){return r(`ExcludeWatcher:: Added:: ${A(w,C,P,F,B,i)}`),{close:()=>r(`ExcludeWatcher:: Close:: ${A(w,C,P,F,B,i)}`)}}function v(w,C,P,F,B,q){r(`FileWatcher:: Added:: ${A(w,P,F,B,q,i)}`);let W=s.watchFile(w,C,P,F,B,q);return{close:()=>{r(`FileWatcher:: Close:: ${A(w,P,F,B,q,i)}`),W.close()}}}function S(w,C,P,F,B,q){let W=`DirectoryWatcher:: Added:: ${A(w,P,F,B,q,i)}`;r(W);let Y=Ms(),R=s.watchDirectory(w,C,P,F,B,q),ie=Ms()-Y;return r(`Elapsed:: ${ie}ms ${W}`),{close:()=>{let Q=`DirectoryWatcher:: Close:: ${A(w,P,F,B,q,i)}`;r(Q);let fe=Ms();R.close();let Z=Ms()-fe;r(`Elapsed:: ${Z}ms ${Q}`)}}}function x(w){return(C,P,F,B,q,W)=>o[w].call(void 0,C,(...Y)=>{let R=`${w===\"watchFile\"?\"FileWatcher\":\"DirectoryWatcher\"}:: Triggered with ${Y[0]} ${Y[1]!==void 0?Y[1]:\"\"}:: ${A(C,F,B,q,W,i)}`;r(R);let ie=Ms();P.call(void 0,...Y);let Q=Ms()-ie;r(`Elapsed:: ${Q}ms ${R}`)},F,B,q,W)}function A(w,C,P,F,B,q){return`WatchInfo: ${w} ${C} ${JSON.stringify(P)} ${q?q(F,B):B===void 0?F:`${F} ${B}`}`}}function pN(e){let t=e?.fallbackPolling;return{watchFile:t!==void 0?t:1}}function _m(e){e.watcher.close()}var QK,ZK,QMe=gt({\"src/compiler/watchUtilities.ts\"(){\"use strict\";fa(),fa(),QK=(e=>(e[e.None=0]=\"None\",e[e.Partial=1]=\"Partial\",e[e.Full=2]=\"Full\",e))(QK||{}),ZK=(e=>(e[e.None=0]=\"None\",e[e.TriggerOnly=1]=\"TriggerOnly\",e[e.Verbose=2]=\"Verbose\",e))(ZK||{})}});function Vpe(e,t,r=\"tsconfig.json\"){return Th(e,i=>{let o=vi(i,r);return t(o)?o:void 0})}function wF(e,t){let r=ni(t),i=qp(e)?e:vi(r,e);return So(i)}function jpe(e,t,r){let i;return mn(e,s=>{let l=_w(s,t);if(l.pop(),!i){i=l;return}let f=Math.min(i.length,l.length);for(let d=0;d<f;d++)if(r(i[d])!==r(l[d])){if(d===0)return!0;i.length=d;break}l.length<i.length&&(i.length=l.length)})?\"\":i?T0(i):t}function Hpe(e,t){return nq(e,t)}function eq(e,t,r){return(i,o,s)=>{let l;try{Fs(\"beforeIORead\"),l=e(i,t().charset),Fs(\"afterIORead\"),mf(\"I/O Read\",\"beforeIORead\",\"afterIORead\")}catch(f){s&&s(f.message),l=\"\"}return l!==void 0?wO(i,l,o,r):void 0}}function tq(e,t,r){return(i,o,s,l)=>{try{Fs(\"beforeIOWrite\"),nW(i,o,s,e,t,r),Fs(\"afterIOWrite\"),mf(\"I/O Write\",\"beforeIOWrite\",\"afterIOWrite\")}catch(f){l&&l(f.message)}}}function nq(e,t,r=xl){let i=new Map,o=Dl(r.useCaseSensitiveFileNames);function s(m){return i.has(m)?!0:(g.directoryExists||r.directoryExists)(m)?(i.set(m,!0),!0):!1}function l(){return ni(So(r.getExecutingFilePath()))}let f=db(e),d=r.realpath&&(m=>r.realpath(m)),g={getSourceFile:eq(m=>g.readFile(m),()=>e,t),getDefaultLibLocation:l,getDefaultLibFileName:m=>vi(l(),X8(m)),writeFile:tq((m,v,S)=>r.writeFile(m,v,S),m=>(g.createDirectory||r.createDirectory)(m),m=>s(m)),getCurrentDirectory:zu(()=>r.getCurrentDirectory()),useCaseSensitiveFileNames:()=>r.useCaseSensitiveFileNames,getCanonicalFileName:o,getNewLine:()=>f,fileExists:m=>r.fileExists(m),readFile:m=>r.readFile(m),trace:m=>r.write(m+f),directoryExists:m=>r.directoryExists(m),getEnvironmentVariable:m=>r.getEnvironmentVariable?r.getEnvironmentVariable(m):\"\",getDirectories:m=>r.getDirectories(m),realpath:d,readDirectory:(m,v,S,x,A)=>r.readDirectory(m,v,S,x,A),createDirectory:m=>r.createDirectory(m),createHash:ho(r,r.createHash)};return g}function mN(e,t,r){let i=e.readFile,o=e.fileExists,s=e.directoryExists,l=e.createDirectory,f=e.writeFile,d=new Map,g=new Map,m=new Map,v=new Map,S=w=>{let C=t(w),P=d.get(C);return P!==void 0?P!==!1?P:void 0:x(C,w)},x=(w,C)=>{let P=i.call(e,C);return d.set(w,P!==void 0?P:!1),P};e.readFile=w=>{let C=t(w),P=d.get(C);return P!==void 0?P!==!1?P:void 0:!Gc(w,\".json\")&&!Ipe(w)?i.call(e,w):x(C,w)};let A=r?(w,C,P,F)=>{let B=t(w),q=typeof C==\"object\"?C.impliedNodeFormat:void 0,W=v.get(q),Y=W?.get(B);if(Y)return Y;let R=r(w,C,P,F);return R&&(Fu(w)||Gc(w,\".json\"))&&v.set(q,(W||new Map).set(B,R)),R}:void 0;return e.fileExists=w=>{let C=t(w),P=g.get(C);if(P!==void 0)return P;let F=o.call(e,w);return g.set(C,!!F),F},f&&(e.writeFile=(w,C,...P)=>{let F=t(w);g.delete(F);let B=d.get(F);B!==void 0&&B!==C?(d.delete(F),v.forEach(q=>q.delete(F))):A&&v.forEach(q=>{let W=q.get(F);W&&W.text!==C&&q.delete(F)}),f.call(e,w,C,...P)}),s&&(e.directoryExists=w=>{let C=t(w),P=m.get(C);if(P!==void 0)return P;let F=s.call(e,w);return m.set(C,!!F),F},l&&(e.createDirectory=w=>{let C=t(w);m.delete(C),l.call(e,w)})),{originalReadFile:i,originalFileExists:o,originalDirectoryExists:s,originalCreateDirectory:l,originalWriteFile:f,getSourceFileWithCache:A,readFileWithCache:S}}function ZMe(e,t,r){let i;return i=si(i,e.getConfigFileParsingDiagnostics()),i=si(i,e.getOptionsDiagnostics(r)),i=si(i,e.getSyntacticDiagnostics(t,r)),i=si(i,e.getGlobalDiagnostics(r)),i=si(i,e.getSemanticDiagnostics(t,r)),f_(e.getCompilerOptions())&&(i=si(i,e.getDeclarationDiagnostics(t,r))),bA(i||Je)}function e8e(e,t){let r=\"\";for(let i of e)r+=rq(i,t);return r}function rq(e,t){let r=`${C8(e)} TS${e.code}: ${sv(e.messageText,t.getNewLine())}${t.getNewLine()}`;if(e.file){let{line:i,character:o}=Gs(e.file,e.start),s=e.file.fileName;return`${iI(s,t.getCurrentDirectory(),f=>t.getCanonicalFileName(f))}(${i+1},${o+1}): `+r}return r}function Wpe(e){switch(e){case 1:return\"\\x1B[91m\";case 0:return\"\\x1B[93m\";case 2:return L.fail(\"Should never get an Info diagnostic on the command line.\");case 3:return\"\\x1B[94m\"}}function iE(e,t){return t+e+mq}function zpe(e,t,r,i,o,s){let{line:l,character:f}=Gs(e,t),{line:d,character:g}=Gs(e,t+r),m=Gs(e,e.text.length).line,v=d-l>=4,S=(d+1+\"\").length;v&&(S=Math.max(hq.length,S));let x=\"\";for(let A=l;A<=d;A++){x+=s.getNewLine(),v&&l+1<A&&A<d-1&&(x+=i+iE(K1(hq,S),BF)+UF+s.getNewLine(),A=d-1);let w=yw(e,A,0),C=A<m?yw(e,A+1,0):e.text.length,P=e.text.slice(w,C);if(P=QD(P),P=P.replace(/\\t/g,\" \"),x+=i+iE(K1(A+1+\"\",S),BF)+UF,x+=P+s.getNewLine(),x+=i+iE(K1(\"\",S),BF)+UF,x+=o,A===l){let F=A===d?g:void 0;x+=P.slice(0,f).replace(/\\S/g,\" \"),x+=P.slice(f,F).replace(/./g,\"~\")}else A===d?x+=P.slice(0,g).replace(/./g,\"~\"):x+=P.replace(/./g,\"~\");x+=mq}return x}function iq(e,t,r,i=iE){let{line:o,character:s}=Gs(e,t),l=r?iI(e.fileName,r.getCurrentDirectory(),d=>r.getCanonicalFileName(d)):e.fileName,f=\"\";return f+=i(l,\"\\x1B[96m\"),f+=\":\",f+=i(`${o+1}`,\"\\x1B[93m\"),f+=\":\",f+=i(`${s+1}`,\"\\x1B[93m\"),f}function Jpe(e,t){let r=\"\";for(let i of e){if(i.file){let{file:o,start:s}=i;r+=iq(o,s,t),r+=\" - \"}if(r+=iE(C8(i),Wpe(i.category)),r+=iE(` TS${i.code}: `,\"\\x1B[90m\"),r+=sv(i.messageText,t.getNewLine()),i.file&&(r+=t.getNewLine(),r+=zpe(i.file,i.start,i.length,\"\",Wpe(i.category),t)),i.relatedInformation){r+=t.getNewLine();for(let{file:o,start:s,length:l,messageText:f}of i.relatedInformation)o&&(r+=t.getNewLine(),r+=Xpe+iq(o,s,t),r+=zpe(o,s,l,gq,\"\\x1B[96m\",t)),r+=t.getNewLine(),r+=gq+sv(f,t.getNewLine())}r+=t.getNewLine()}return r}function sv(e,t,r=0){if(Ta(e))return e;if(e===void 0)return\"\";let i=\"\";if(r){i+=t;for(let o=0;o<r;o++)i+=\"  \"}if(i+=e.messageText,r++,e.next)for(let o of e.next)i+=sv(o,t,r);return i}function hN(e,t){return(Ta(e)?t:e.resolutionMode)||t}function aq(e,t){if(e.impliedNodeFormat!==void 0)return H_(e,GF(e,t))}function oq(e){var t;return Il(e)?e.isTypeOnly:!!((t=e.importClause)!=null&&t.isTypeOnly)}function H_(e,t){var r,i;if(e.impliedNodeFormat===void 0)return;if((gl(t.parent)||Il(t.parent))&&oq(t.parent)){let l=XS(t.parent.assertClause);if(l)return l}if(t.parent.parent&&Mh(t.parent.parent)){let s=XS((r=t.parent.parent.assertions)==null?void 0:r.assertClause);if(s)return s}if(e.impliedNodeFormat!==99)return Dd(qy(t.parent))?99:1;let o=(i=qy(t.parent))==null?void 0:i.parent;return o&&Nl(o)?1:99}function XS(e,t){if(!e)return;if(Fn(e.elements)!==1){t?.(e,_.Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require);return}let r=e.elements[0];if(!!es(r.name)){if(r.name.text!==\"resolution-mode\"){t?.(r.name,_.resolution_mode_is_the_only_valid_key_for_type_import_assertions);return}if(!!es(r.value)){if(r.value.text!==\"import\"&&r.value.text!==\"require\"){t?.(r.value,_.resolution_mode_should_be_either_require_or_import);return}return r.value.text===\"import\"?99:1}}}function sq(e){return e.text}function cq(e,t,r,i,o){return{nameAndMode:ZL,resolve:(s,l)=>GL(s,e,r,i,o,t,l)}}function RF(e){return Ta(e)?e:t_(e.fileName)}function OF(e,t,r,i,o){return{nameAndMode:vN,resolve:(s,l)=>HJ(s,e,r,i,t,o,l)}}function gN(e,t,r,i,o,s,l,f){if(e.length===0)return Je;let d=[],g=new Map,m=f(t,r,i,s,l);for(let v of e){let S=m.nameAndMode.getName(v),x=m.nameAndMode.getMode(v,o),A=FL(S,x),w=g.get(A);w||g.set(A,w=m.resolve(S,x)),d.push(w)}return d}function Kpe(e,t){return yN(void 0,e,(r,i)=>r&&t(r,i))}function yN(e,t,r,i){let o;return s(e,t,void 0);function s(l,f,d){if(i){let g=i(l,d);if(g)return g}return mn(f,(g,m)=>{if(g&&o?.has(g.sourceFile.path))return;let v=r(g,d,m);return v||!g?v:((o||(o=new Set)).add(g.sourceFile.path),s(g.commandLine.projectReferences,g.references,g))})}}function vb(e){switch(e?.kind){case 3:case 4:case 5:case 7:return!0;default:return!1}}function G2(e){return e.pos!==void 0}function $L(e,t){var r,i,o,s,l,f;let d=L.checkDefined(e(t.file)),{kind:g,index:m}=t,v,S,x,A;switch(g){case 3:let w=GF(d,m);if(x=(o=(i=(r=d.resolvedModules)==null?void 0:r.get(w.text,aq(d,m)))==null?void 0:i.resolvedModule)==null?void 0:o.packageId,w.pos===-1)return{file:d,packageId:x,text:w.text};v=xo(d.text,w.pos),S=w.end;break;case 4:({pos:v,end:S}=d.referencedFiles[m]);break;case 5:({pos:v,end:S,resolutionMode:A}=d.typeReferenceDirectives[m]),x=(f=(l=(s=d.resolvedTypeReferenceDirectiveNames)==null?void 0:s.get(t_(d.typeReferenceDirectives[m].fileName),A||d.impliedNodeFormat))==null?void 0:l.resolvedTypeReferenceDirective)==null?void 0:f.packageId;break;case 7:({pos:v,end:S}=d.libReferenceDirectives[m]);break;default:return L.assertNever(g)}return{file:d,pos:v,end:S,packageId:x}}function lq(e,t,r,i,o,s,l,f,d){if(!e||l?.()||!up(e.getRootFileNames(),t))return!1;let g;if(!up(e.getProjectReferences(),d,x)||e.getSourceFiles().some(v)||e.getMissingFilePaths().some(o))return!1;let m=e.getCompilerOptions();if(!gW(m,r))return!1;if(m.configFile&&r.configFile)return m.configFile.text===r.configFile.text;return!0;function v(w){return!S(w)||s(w.path)}function S(w){return w.version===i(w.resolvedPath,w.fileName)}function x(w,C,P){return tH(w,C)&&A(e.getResolvedProjectReferences()[P],w)}function A(w,C){if(w){if(ya(g,w))return!0;let F=QL(C),B=f(F);return!B||w.commandLine.options.configFile!==B.options.configFile||!up(w.commandLine.fileNames,B.fileNames)?!1:((g||(g=[])).push(w),!mn(w.references,(q,W)=>!A(q,w.commandLine.projectReferences[W])))}let P=QL(C);return!f(P)}}function YT(e){return e.options.configFile?[...e.options.configFile.parseDiagnostics,...e.errors]:e.errors}function NF(e,t,r,i){let o=uq(e,t,r,i);return typeof o==\"object\"?o.impliedNodeFormat:o}function uq(e,t,r,i){switch($s(i)){case 3:case 99:return $c(e,[\".d.mts\",\".mts\",\".mjs\"])?99:$c(e,[\".d.cts\",\".cts\",\".cjs\"])?1:$c(e,[\".d.ts\",\".ts\",\".tsx\",\".js\",\".jsx\"])?o():void 0;default:return}function o(){let s=Z3(t,r,i),l=[];s.failedLookupLocations=l,s.affectingLocations=l;let f=eF(e,s);return{impliedNodeFormat:f?.contents.packageJsonContent.type===\"module\"?99:1,packageJsonLocations:l,packageJsonScope:f}}}function t8e(e,t){return e?kA(e.getCompilerOptions(),t,V3):!1}function n8e(e,t,r,i,o,s){return{rootNames:e,options:t,host:r,oldProgram:i,configFileParsingDiagnostics:o,typeScriptVersion:s}}function PF(e,t,r,i,o){var s,l,f,d,g,m,v,S,x,A,w,C,P,F,B,q;let W=ba(e)?n8e(e,t,r,i,o):e,{rootNames:Y,options:R,configFileParsingDiagnostics:ie,projectReferences:Q,typeScriptVersion:fe}=W,{oldProgram:Z}=W,U=zu(()=>zf(\"ignoreDeprecations\",_.Invalid_value_for_ignoreDeprecations)),re,le,_e,ge,X,Ve,we,ke=new Map,Pe=Of(),Ce={},Ie={},Be=zT(),Ne,Le,Ye,_t=typeof R.maxNodeModuleJsDepth==\"number\"?R.maxNodeModuleJsDepth:0,ct=0,Rt=new Map,We=new Map;(s=ai)==null||s.push(ai.Phase.Program,\"createProgram\",{configFilePath:R.configFilePath,rootDir:R.rootDir},!0),Fs(\"beforeProgram\");let qe=W.host||Hpe(R),zt=FF(qe),Qt=R.noLib,tn=zu(()=>qe.getDefaultLibFileName(R)),kn=qe.getDefaultLibLocation?qe.getDefaultLibLocation():ni(tn()),_n=YA(),Gt=qe.getCurrentDirectory(),$n=rL(R),ui=GR(R,$n),Ni=new Map,Pi,gr,pt,nn=qe.hasInvalidatedResolutions||m0;qe.resolveModuleNameLiterals?(pt=qe.resolveModuleNameLiterals.bind(qe),gr=(l=qe.getModuleResolutionCache)==null?void 0:l.call(qe)):qe.resolveModuleNames?(pt=(be,De,mt,St,Zt,rn)=>qe.resolveModuleNames(be.map(sq),De,rn?.map(sq),mt,St,Zt).map(sn=>sn?sn.extension!==void 0?{resolvedModule:sn}:{resolvedModule:{...sn,extension:HR(sn.resolvedFileName)}}:yq),gr=(f=qe.getModuleResolutionCache)==null?void 0:f.call(qe)):(gr=Y3(Gt,ee,R),pt=(be,De,mt,St,Zt)=>gN(be,De,mt,St,Zt,qe,gr,cq));let Dt;if(qe.resolveTypeReferenceDirectiveReferences)Dt=qe.resolveTypeReferenceDirectiveReferences.bind(qe);else if(qe.resolveTypeReferenceDirectives)Dt=(be,De,mt,St,Zt)=>qe.resolveTypeReferenceDirectives(be.map(RF),De,mt,St,Zt?.impliedNodeFormat).map(rn=>({resolvedTypeReferenceDirective:rn}));else{let be=$3(Gt,ee,void 0,gr?.getPackageJsonInfoCache());Dt=(De,mt,St,Zt,rn)=>gN(De,mt,St,Zt,rn,qe,be,OF)}let pn=new Map,An=new Map,Kn=Of(),hi=!1,ri=new Map,gn,Ht=qe.useCaseSensitiveFileNames()?new Map:void 0,En,dr,Cr,Se,at=!!((d=qe.useSourceOfProjectReferenceRedirect)!=null&&d.call(qe))&&!R.disableSourceOfProjectReferenceRedirect,{onProgramCreateComplete:Tt,fileExists:ve,directoryExists:nt}=r8e({compilerHost:qe,getSymlinkCache:oa,useSourceOfProjectReferenceRedirect:at,toPath:rt,getResolvedProjectReferences:Qe,getSourceOfProjectReferenceRedirect:Ws,forEachResolvedProjectReference:jo}),ce=qe.readFile.bind(qe);(g=ai)==null||g.push(ai.Phase.Program,\"shouldProgramCreateNewSourceFiles\",{hasOldProgram:!!Z});let $=t8e(Z,R);(m=ai)==null||m.pop();let ue;if((v=ai)==null||v.push(ai.Phase.Program,\"tryReuseStructureFromOldProgram\",{}),ue=Te(),(S=ai)==null||S.pop(),ue!==2){if(re=[],le=[],Q&&(En||(En=Q.map(xt)),Y.length&&En?.forEach((be,De)=>{if(!be)return;let mt=Ss(be.commandLine.options);if(at){if(mt||Rl(be.commandLine.options)===0)for(let St of be.commandLine.fileNames)Yt(St,{kind:1,index:De})}else if(mt)Yt(V0(mt,\".d.ts\"),{kind:2,index:De});else if(Rl(be.commandLine.options)===0){let St=zu(()=>YL(be.commandLine,!qe.useCaseSensitiveFileNames()));for(let Zt of be.commandLine.fileNames)!Fu(Zt)&&!Gc(Zt,\".json\")&&Yt(XL(Zt,be.commandLine,!qe.useCaseSensitiveFileNames(),St),{kind:2,index:De})}})),(x=ai)==null||x.push(ai.Phase.Program,\"processRootFiles\",{count:Y.length}),mn(Y,(be,De)=>yc(be,!1,!1,{kind:0,index:De})),(A=ai)==null||A.pop(),Le??(Le=Y.length?X3(R,qe):Je),Ye=zT(),Le.length){(w=ai)==null||w.push(ai.Phase.Program,\"processTypeReferences\",{count:Le.length});let be=R.configFilePath?ni(R.configFilePath):qe.getCurrentDirectory(),De=vi(be,VF),mt=pe(Le,De);for(let St=0;St<Le.length;St++)Ye.set(Le[St],void 0,mt[St]),Et(Le[St],void 0,mt[St],{kind:8,typeReference:Le[St],packageId:(P=(C=mt[St])==null?void 0:C.resolvedTypeReferenceDirective)==null?void 0:P.packageId});(F=ai)==null||F.pop()}if(Y.length&&!Qt){let be=tn();!R.lib&&be?yc(be,!0,!1,{kind:6}):mn(R.lib,(De,mt)=>{yc(Ri(De),!0,!1,{kind:6,index:mt})})}gn=lo(VD(ri.entries(),([be,De])=>De===void 0?be:void 0)),_e=Ag(re,ir).concat(le),re=void 0,le=void 0}if(L.assert(!!gn),Z&&qe.onReleaseOldSourceFile){let be=Z.getSourceFiles();for(let De of be){let mt=Hi(De.resolvedPath);($||!mt||mt.impliedNodeFormat!==De.impliedNodeFormat||De.resolvedPath===De.path&&mt.resolvedPath!==De.path)&&qe.onReleaseOldSourceFile(De,Z.getCompilerOptions(),!!Hi(De.path))}qe.getParsedCommandLine||Z.forEachResolvedProjectReference(De=>{vc(De.sourceFile.path)||qe.onReleaseOldSourceFile(De.sourceFile,Z.getCompilerOptions(),!1)})}Z&&qe.onReleaseParsedCommandLine&&yN(Z.getProjectReferences(),Z.getResolvedProjectReferences(),(be,De,mt)=>{let St=De?.commandLine.projectReferences[mt]||Z.getProjectReferences()[mt],Zt=QL(St);dr?.has(rt(Zt))||qe.onReleaseParsedCommandLine(Zt,be,Z.getCompilerOptions())}),Z=void 0;let G={getRootFileNames:()=>Y,getSourceFile:Fa,getSourceFileByPath:Hi,getSourceFiles:()=>_e,getMissingFilePaths:()=>gn,getModuleResolutionCache:()=>gr,getFilesByNameMap:()=>ri,getCompilerOptions:()=>R,getSyntacticDiagnostics:Nr,getOptionsDiagnostics:qs,getGlobalDiagnostics:As,getSemanticDiagnostics:Fo,getCachedSemanticDiagnostics:Qr,getSuggestionDiagnostics:Co,getDeclarationDiagnostics:Ki,getBindAndCheckDiagnostics:Wi,getProgramDiagnostics:yn,getTypeChecker:Kr,getClassifiableNames:Ke,getCommonSourceDirectory:Ot,emit:Si,getCurrentDirectory:()=>Gt,getNodeCount:()=>Kr().getNodeCount(),getIdentifierCount:()=>Kr().getIdentifierCount(),getSymbolCount:()=>Kr().getSymbolCount(),getTypeCount:()=>Kr().getTypeCount(),getInstantiationCount:()=>Kr().getInstantiationCount(),getRelationCacheSizes:()=>Kr().getRelationCacheSizes(),getFileProcessingDiagnostics:()=>Ne,getResolvedTypeReferenceDirectives:()=>Be,getAutomaticTypeDirectiveNames:()=>Le,getAutomaticTypeDirectiveResolutions:()=>Ye,isSourceFileFromExternalLibrary:jr,isSourceFileDefaultLibrary:ei,getSourceFileFromReference:K,getLibFileFromReference:wt,sourceFileToPackageName:An,redirectTargetsMap:Kn,usesUriStyleNodeCoreModules:hi,isEmittedFile:Pn,getConfigFileParsingDiagnostics:jt,getProjectReferences:Vt,getResolvedProjectReferences:Qe,getProjectReferenceRedirect:Hs,getResolvedProjectReferenceToRedirect:$o,getResolvedProjectReferenceByPath:vc,forEachResolvedProjectReference:jo,isSourceOfProjectReferenceRedirect:hd,emitBuildInfo:lt,fileExists:ve,readFile:ce,directoryExists:nt,getSymlinkCache:oa,realpath:(B=qe.realpath)==null?void 0:B.bind(qe),useCaseSensitiveFileNames:()=>qe.useCaseSensitiveFileNames(),getCanonicalFileName:ee,getFileIncludeReasons:()=>Pe,structureIsReused:ue,writeFile:yt};return Tt(),Ne?.forEach(be=>{switch(be.kind){case 1:return _n.add(Ea(be.file&&Hi(be.file),be.fileProcessingReason,be.diagnostic,be.args||Je));case 0:let{file:De,pos:mt,end:St}=$L(Hi,be.reason);return _n.add(al(De,L.checkDefined(mt),L.checkDefined(St)-mt,be.diagnostic,...be.args||Je));case 2:return be.diagnostics.forEach(Zt=>_n.add(Zt));default:L.assertNever(be)}}),qt(),Fs(\"afterProgram\"),mf(\"Program\",\"beforeProgram\",\"afterProgram\"),(q=ai)==null||q.pop(),G;function Oe(be){var De;!((De=be.resolutionDiagnostics)!=null&&De.length)||(Ne??(Ne=[])).push({kind:2,diagnostics:be.resolutionDiagnostics})}function je(be,De,mt,St){if(qe.resolveModuleNameLiterals||!qe.resolveModuleNames)return Oe(mt);if(!gr||fl(De))return;let Zt=_a(be.originalFileName,Gt),rn=ni(Zt),sn=Kt(be),Dn=gr.getFromNonRelativeNameCache(De,St,rn,sn);Dn&&Oe(Dn)}function Ge(be,De,mt){var St,Zt;if(!be.length)return Je;let rn=_a(De.originalFileName,Gt),sn=Kt(De);(St=ai)==null||St.push(ai.Phase.Program,\"resolveModuleNamesWorker\",{containingFileName:rn}),Fs(\"beforeResolveModule\");let Dn=pt(be,rn,sn,R,De,mt);return Fs(\"afterResolveModule\"),mf(\"ResolveModule\",\"beforeResolveModule\",\"afterResolveModule\"),(Zt=ai)==null||Zt.pop(),Dn}function kt(be,De,mt){var St,Zt;if(!be.length)return[];let rn=Ta(De)?void 0:De,sn=Ta(De)?De:_a(De.originalFileName,Gt),Dn=rn&&Kt(rn);(St=ai)==null||St.push(ai.Phase.Program,\"resolveTypeReferenceDirectiveNamesWorker\",{containingFileName:sn}),Fs(\"beforeResolveTypeReference\");let kr=Dt(be,sn,Dn,R,rn,mt);return Fs(\"afterResolveTypeReference\"),mf(\"ResolveTypeReference\",\"beforeResolveTypeReference\",\"afterResolveTypeReference\"),(Zt=ai)==null||Zt.pop(),kr}function Kt(be){let De=$o(be.originalFileName);if(De||!Fu(be.originalFileName))return De;let mt=ln(be.path);if(mt)return mt;if(!qe.realpath||!R.preserveSymlinks||!jl(be.originalFileName,Wg))return;let St=rt(qe.realpath(be.originalFileName));return St===be.path?void 0:ln(St)}function ln(be){let De=Ws(be);if(Ta(De))return $o(De);if(!!De)return jo(mt=>{let St=Ss(mt.commandLine.options);if(!!St)return rt(St)===be?mt:void 0})}function ir(be,De){return Es(ae(be),ae(De))}function ae(be){if(Gy(kn,be.fileName,!1)){let De=Hl(be.fileName);if(De===\"lib.d.ts\"||De===\"lib.es6.d.ts\")return 0;let mt=mA(ZC(De,\"lib.\"),\".d.ts\"),St=jO.indexOf(mt);if(St!==-1)return St+1}return jO.length+2}function rt(be){return Ts(be,Gt,ee)}function Ot(){if(X===void 0){let be=Pr(_e,De=>mS(De,G));X=dN(R,()=>Zi(be,De=>De.isDeclarationFile?void 0:De.fileName),Gt,ee,De=>At(be,De))}return X}function Ke(){var be;if(!we){Kr(),we=new Set;for(let De of _e)(be=De.classifiableNames)==null||be.forEach(mt=>we.add(mt))}return we}function oe(be,De){var mt;if(ue===0&&!De.ambientModuleNames.length)return Ge(be,De,void 0);let St=Z&&Z.getSourceFile(De.fileName);if(St!==De&&De.resolvedModules){let $t=[];for(let Xn of be){let ra=De.resolvedModules.get(Xn.text,H_(De,Xn));$t.push(ra)}return $t}let Zt,rn,sn,Dn=yq;for(let $t=0;$t<be.length;$t++){let Xn=be[$t];if(De===St&&!nn(St.path)){let Is=H_(De,Xn),Mc=(mt=St.resolvedModules)==null?void 0:mt.get(Xn.text,Is);if(Mc?.resolvedModule){ov(R,qe)&&Xi(qe,Mc.resolvedModule.packageId?_.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3:_.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2,Xn.text,_a(De.originalFileName,Gt),Mc.resolvedModule.resolvedFileName,Mc.resolvedModule.packageId&&gT(Mc.resolvedModule.packageId)),(rn??(rn=new Array(be.length)))[$t]=Mc,(sn??(sn=[])).push(Xn);continue}}let ra=!1;ya(De.ambientModuleNames,Xn.text)?(ra=!0,ov(R,qe)&&Xi(qe,_.Module_0_was_resolved_as_locally_declared_ambient_module_in_file_1,Xn.text,_a(De.originalFileName,Gt))):ra=Vn(Xn),ra?(rn||(rn=new Array(be.length)))[$t]=Dn:(Zt??(Zt=[])).push(Xn)}let kr=Zt&&Zt.length?Ge(Zt,De,sn):Je;if(!rn)return L.assert(kr.length===be.length),kr;let ki=0;for(let $t=0;$t<rn.length;$t++)rn[$t]||(rn[$t]=kr[ki],ki++);return L.assert(ki===kr.length),rn;function Vn($t){let Xn=DA(St,$t.text,H_(De,$t)),ra=Xn&&Z.getSourceFile(Xn.resolvedFileName);if(Xn&&ra)return!1;let Is=ke.get($t.text);return Is?(ov(R,qe)&&Xi(qe,_.Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified,$t.text,Is),!0):!1}}function pe(be,De){var mt;if(ue===0)return kt(be,De,void 0);let St=Ta(De)?void 0:Z&&Z.getSourceFile(De.fileName);if(!Ta(De)&&St!==De&&De.resolvedTypeReferenceDirectiveNames){let $t=[];for(let Xn of be){let ra=De.resolvedTypeReferenceDirectiveNames.get(RF(Xn),hN(Xn,De.impliedNodeFormat));$t.push(ra)}return $t}let Zt,rn,sn,Dn=Ta(De)?void 0:De,kr=Ta(De)?!nn(rt(De)):De===St&&!nn(St.path);for(let $t=0;$t<be.length;$t++){let Xn=be[$t];if(kr){let ra=RF(Xn),Is=hN(Xn,Dn?.impliedNodeFormat),Mc=(mt=Ta(De)?Z?.getAutomaticTypeDirectiveResolutions():St?.resolvedTypeReferenceDirectiveNames)==null?void 0:mt.get(ra,Is);if(Mc?.resolvedTypeReferenceDirective){ov(R,qe)&&Xi(qe,Mc.resolvedTypeReferenceDirective.packageId?_.Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3:_.Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved_to_2,ra,Ta(De)?De:_a(De.originalFileName,Gt),Mc.resolvedTypeReferenceDirective.resolvedFileName,Mc.resolvedTypeReferenceDirective.packageId&&gT(Mc.resolvedTypeReferenceDirective.packageId)),(rn??(rn=new Array(be.length)))[$t]=Mc,(sn??(sn=[])).push(Xn);continue}}(Zt??(Zt=[])).push(Xn)}if(!Zt)return rn||Je;let ki=kt(Zt,De,sn);if(!rn)return L.assert(ki.length===be.length),ki;let Vn=0;for(let $t=0;$t<rn.length;$t++)rn[$t]||(rn[$t]=ki[Vn],Vn++);return L.assert(Vn===ki.length),rn}function z(){return!yN(Z.getProjectReferences(),Z.getResolvedProjectReferences(),(be,De,mt)=>{let St=(De?De.commandLine.projectReferences:Q)[mt],Zt=xt(St);return be?!Zt||Zt.sourceFile!==be.sourceFile||!up(be.commandLine.fileNames,Zt.commandLine.fileNames):Zt!==void 0},(be,De)=>{let mt=De?vc(De.sourceFile.path).commandLine.projectReferences:Q;return!up(be,mt,tH)})}function Te(){var be;if(!Z)return 0;let De=Z.getCompilerOptions();if(eH(De,R))return 0;let mt=Z.getRootFileNames();if(!up(mt,Y)||!z())return 0;Q&&(En=Q.map(xt));let St=[],Zt=[];if(ue=2,Z.getMissingFilePaths().some(Vn=>qe.fileExists(Vn)))return 0;let rn=Z.getSourceFiles(),sn;(Vn=>{Vn[Vn.Exists=0]=\"Exists\",Vn[Vn.Modified=1]=\"Modified\"})(sn||(sn={}));let Dn=new Map;for(let Vn of rn){let $t=Go(Vn.fileName,gr,qe,R),Xn=qe.getSourceFileByPath?qe.getSourceFileByPath(Vn.fileName,Vn.resolvedPath,$t,void 0,$||$t.impliedNodeFormat!==Vn.impliedNodeFormat):qe.getSourceFile(Vn.fileName,$t,void 0,$||$t.impliedNodeFormat!==Vn.impliedNodeFormat);if(!Xn)return 0;Xn.packageJsonLocations=(be=$t.packageJsonLocations)!=null&&be.length?$t.packageJsonLocations:void 0,Xn.packageJsonScope=$t.packageJsonScope,L.assert(!Xn.redirectInfo,\"Host should not return a redirect source file from `getSourceFile`\");let ra;if(Vn.redirectInfo){if(Xn!==Vn.redirectInfo.unredirected)return 0;ra=!1,Xn=Vn}else if(Z.redirectTargetsMap.has(Vn.path)){if(Xn!==Vn)return 0;ra=!1}else ra=Xn!==Vn;Xn.path=Vn.path,Xn.originalFileName=Vn.originalFileName,Xn.resolvedPath=Vn.resolvedPath,Xn.fileName=Vn.fileName;let Is=Z.sourceFileToPackageName.get(Vn.path);if(Is!==void 0){let Mc=Dn.get(Is),mm=ra?1:0;if(Mc!==void 0&&mm===1||Mc===1)return 0;Dn.set(Is,mm)}ra?(Vn.impliedNodeFormat!==Xn.impliedNodeFormat?ue=1:up(Vn.libReferenceDirectives,Xn.libReferenceDirectives,Ql)?Vn.hasNoDefaultLib!==Xn.hasNoDefaultLib?ue=1:up(Vn.referencedFiles,Xn.referencedFiles,Ql)?(ht(Xn),up(Vn.imports,Xn.imports,yu)&&up(Vn.moduleAugmentations,Xn.moduleAugmentations,yu)?(Vn.flags&6291456)!==(Xn.flags&6291456)?ue=1:up(Vn.typeReferenceDirectives,Xn.typeReferenceDirectives,Ql)||(ue=1):ue=1):ue=1:ue=1,Zt.push({oldFile:Vn,newFile:Xn})):nn(Vn.path)&&(ue=1,Zt.push({oldFile:Vn,newFile:Xn})),St.push(Xn)}if(ue!==2)return ue;let kr=Zt.map(Vn=>Vn.oldFile);for(let Vn of rn)if(!ya(kr,Vn))for(let $t of Vn.ambientModuleNames)ke.set($t,Vn.fileName);for(let{oldFile:Vn,newFile:$t}of Zt){let Xn=qpe($t),ra=oe(Xn,$t);nH(Xn,$t,ra,Vn.resolvedModules,wse,ZL)?(ue=1,$t.resolvedModules=qJ($t,Xn,ra,ZL)):$t.resolvedModules=Vn.resolvedModules;let Mc=$t.typeReferenceDirectives,mm=pe(Mc,$t);nH(Mc,$t,mm,Vn.resolvedTypeReferenceDirectiveNames,Rse,vN)?(ue=1,$t.resolvedTypeReferenceDirectiveNames=qJ($t,Mc,mm,vN)):$t.resolvedTypeReferenceDirectiveNames=Vn.resolvedTypeReferenceDirectiveNames}if(ue!==2)return ue;if(Ise(De,R))return 1;if(qe.hasChangedAutomaticTypeDirectiveNames){if(qe.hasChangedAutomaticTypeDirectiveNames())return 1}else if(Le=X3(R,qe),!up(Z.getAutomaticTypeDirectiveNames(),Le))return 1;gn=Z.getMissingFilePaths(),L.assert(St.length===Z.getSourceFiles().length);for(let Vn of St)ri.set(Vn.path,Vn);return Z.getFilesByNameMap().forEach((Vn,$t)=>{if(!Vn){ri.set($t,Vn);return}if(Vn.path===$t){Z.isSourceFileFromExternalLibrary(Vn)&&We.set(Vn.path,!0);return}ri.set($t,ri.get(Vn.path))}),_e=St,Pe=Z.getFileIncludeReasons(),Ne=Z.getFileProcessingDiagnostics(),Be=Z.getResolvedTypeReferenceDirectives(),Le=Z.getAutomaticTypeDirectiveNames(),Ye=Z.getAutomaticTypeDirectiveResolutions(),An=Z.sourceFileToPackageName,Kn=Z.redirectTargetsMap,hi=Z.usesUriStyleNodeCoreModules,2}function j(be){return{getPrependNodes:Hn,getCanonicalFileName:ee,getCommonSourceDirectory:G.getCommonSourceDirectory,getCompilerOptions:G.getCompilerOptions,getCurrentDirectory:()=>Gt,getSourceFile:G.getSourceFile,getSourceFileByPath:G.getSourceFileByPath,getSourceFiles:G.getSourceFiles,getLibFileFromReference:G.getLibFileFromReference,isSourceFileFromExternalLibrary:jr,getResolvedProjectReferenceToRedirect:$o,getProjectReferenceRedirect:Hs,isSourceOfProjectReferenceRedirect:hd,getSymlinkCache:oa,writeFile:be||yt,isEmitBlocked:Ja,readFile:De=>qe.readFile(De),fileExists:De=>{let mt=rt(De);return Hi(mt)?!0:ya(gn,mt)?!1:qe.fileExists(De)},useCaseSensitiveFileNames:()=>qe.useCaseSensitiveFileNames(),getBuildInfo:De=>{var mt;return(mt=G.getBuildInfo)==null?void 0:mt.call(G,De)},getSourceFileFromReference:(De,mt)=>G.getSourceFileFromReference(De,mt),redirectTargetsMap:Kn,getFileIncludeReasons:G.getFileIncludeReasons,createHash:ho(qe,qe.createHash)}}function yt(be,De,mt,St,Zt,rn){qe.writeFile(be,De,mt,St,Zt,rn)}function lt(be){var De,mt;L.assert(!Ss(R)),(De=ai)==null||De.push(ai.Phase.Emit,\"emitBuildInfo\",{},!0),Fs(\"beforeEmit\");let St=CF(LF,j(be),void 0,HK,!1,!0);return Fs(\"afterEmit\"),mf(\"Emit\",\"beforeEmit\",\"afterEmit\"),(mt=ai)==null||mt.pop(),St}function Qe(){return En}function Vt(){return Q}function Hn(){return fq(Q,(be,De)=>{var mt;return(mt=En[De])==null?void 0:mt.commandLine},be=>{let De=rt(be),mt=Hi(De);return mt?mt.text:ri.has(De)?void 0:qe.readFile(De)},qe)}function jr(be){return!!We.get(be.path)}function ei(be){if(!be.isDeclarationFile)return!1;if(be.hasNoDefaultLib)return!0;if(!R.noLib)return!1;let De=qe.useCaseSensitiveFileNames()?J1:z1;return R.lib?vt(R.lib,mt=>De(be.fileName,Ri(mt))):De(be.fileName,tn())}function Kr(){return Ve||(Ve=k_e(G))}function Si(be,De,mt,St,Zt,rn){var sn,Dn;(sn=ai)==null||sn.push(ai.Phase.Emit,\"emit\",{path:be?.path},!0);let kr=Ps(()=>Za(G,be,De,mt,St,Zt,rn));return(Dn=ai)==null||Dn.pop(),kr}function Ja(be){return Ni.has(rt(be))}function Za(be,De,mt,St,Zt,rn,sn){if(!sn){let ki=dq(be,De,mt,St);if(ki)return ki}let Dn=Kr().getEmitResolver(Ss(R)?void 0:De,St);Fs(\"beforeEmit\");let kr=CF(Dn,j(mt),De,jK(R,rn,Zt),Zt,!1,sn);return Fs(\"afterEmit\"),mf(\"Emit\",\"beforeEmit\",\"afterEmit\"),kr}function Fa(be){return Hi(rt(be))}function Hi(be){return ri.get(be)||void 0}function xi(be,De,mt){return bA(be?De(be,mt):Uo(G.getSourceFiles(),St=>(mt&&mt.throwIfCancellationRequested(),De(St,mt))))}function Nr(be,De){return xi(be,kc,De)}function Fo(be,De){return xi(be,mc,De)}function Qr(be){var De;return be?(De=Ce.perFile)==null?void 0:De.get(be.path):Ce.allDiagnostics}function Wi(be,De){return xc(be,De)}function yn(be){var De;if(iL(be,R,G))return Je;let mt=_n.getDiagnostics(be.fileName);return(De=be.commentDirectives)!=null&&De.length?aa(be,be.commentDirectives,mt).diagnostics:mt}function Ki(be,De){let mt=G.getCompilerOptions();return!be||Ss(mt)?md(be,De):xi(be,ss,De)}function kc(be){return Cu(be)?(be.additionalSyntacticDiagnostics||(be.additionalSyntacticDiagnostics=Ll(be)),Qi(be.additionalSyntacticDiagnostics,be.parseDiagnostics)):be.parseDiagnostics}function Ps(be){try{return be()}catch(De){throw De instanceof nI&&(Ve=void 0),De}}function mc(be,De){return Qi(MF(xc(be,De),R),yn(be))}function xc(be,De){return bl(be,De,Ce,hc)}function hc(be,De){return Ps(()=>{if(iL(be,R,G))return Je;let mt=Kr();L.assert(!!be.bindDiagnostics);let Zt=(be.scriptKind===1||be.scriptKind===2)&&WR(be,R),rn=h6(be,R.checkJs),Dn=!(!!be.checkJsDirective&&be.checkJsDirective.enabled===!1)&&(be.scriptKind===3||be.scriptKind===4||be.scriptKind===5||rn||Zt||be.scriptKind===7),kr=Dn?be.bindDiagnostics:Je,ki=Dn?mt.getDiagnostics(be,De):Je;return rn&&(kr=Pr(kr,Vn=>jF.has(Vn.code)),ki=Pr(ki,Vn=>jF.has(Vn.code))),ro(be,Dn&&!rn,kr,ki,Zt?be.jsDocDiagnostics:void 0)})}function ro(be,De,...mt){var St;let Zt=e_(mt);if(!De||!((St=be.commentDirectives)!=null&&St.length))return Zt;let{diagnostics:rn,directives:sn}=aa(be,be.commentDirectives,Zt);for(let Dn of sn.getUnusedExpectations())rn.push(vH(be,Dn.range,_.Unused_ts_expect_error_directive));return rn}function aa(be,De,mt){let St=Gse(be,De);return{diagnostics:mt.filter(rn=>gc(rn,St)===-1),directives:St}}function Co(be,De){return Ps(()=>Kr().getSuggestionDiagnostics(be,De))}function gc(be,De){let{file:mt,start:St}=be;if(!mt)return-1;let Zt=Sh(mt),rn=vw(Zt,St).line-1;for(;rn>=0;){if(De.markUsed(rn))return rn;let sn=mt.text.slice(Zt[rn],Zt[rn+1]).trim();if(sn!==\"\"&&!/^(\\s*)\\/\\/(.*)$/.test(sn))return-1;rn--}return-1}function Ll(be){return Ps(()=>{let De=[];return mt(be,be),DO(be,mt,St),De;function mt(Dn,kr){switch(kr.kind){case 166:case 169:case 171:if(kr.questionToken===Dn)return De.push(sn(Dn,_.The_0_modifier_can_only_be_used_in_TypeScript_files,\"?\")),\"skip\";case 170:case 173:case 174:case 175:case 215:case 259:case 216:case 257:if(kr.type===Dn)return De.push(sn(Dn,_.Type_annotations_can_only_be_used_in_TypeScript_files)),\"skip\"}switch(Dn.kind){case 270:if(Dn.isTypeOnly)return De.push(sn(kr,_._0_declarations_can_only_be_used_in_TypeScript_files,\"import type\")),\"skip\";break;case 275:if(Dn.isTypeOnly)return De.push(sn(Dn,_._0_declarations_can_only_be_used_in_TypeScript_files,\"export type\")),\"skip\";break;case 273:case 278:if(Dn.isTypeOnly)return De.push(sn(Dn,_._0_declarations_can_only_be_used_in_TypeScript_files,$u(Dn)?\"import...type\":\"export...type\")),\"skip\";break;case 268:return De.push(sn(Dn,_.import_can_only_be_used_in_TypeScript_files)),\"skip\";case 274:if(Dn.isExportEquals)return De.push(sn(Dn,_.export_can_only_be_used_in_TypeScript_files)),\"skip\";break;case 294:if(Dn.token===117)return De.push(sn(Dn,_.implements_clauses_can_only_be_used_in_TypeScript_files)),\"skip\";break;case 261:let Vn=Xa(118);return L.assertIsDefined(Vn),De.push(sn(Dn,_._0_declarations_can_only_be_used_in_TypeScript_files,Vn)),\"skip\";case 264:let $t=Dn.flags&16?Xa(143):Xa(142);return L.assertIsDefined($t),De.push(sn(Dn,_._0_declarations_can_only_be_used_in_TypeScript_files,$t)),\"skip\";case 262:return De.push(sn(Dn,_.Type_aliases_can_only_be_used_in_TypeScript_files)),\"skip\";case 263:let Xn=L.checkDefined(Xa(92));return De.push(sn(Dn,_._0_declarations_can_only_be_used_in_TypeScript_files,Xn)),\"skip\";case 232:return De.push(sn(Dn,_.Non_null_assertions_can_only_be_used_in_TypeScript_files)),\"skip\";case 231:return De.push(sn(Dn.type,_.Type_assertion_expressions_can_only_be_used_in_TypeScript_files)),\"skip\";case 235:return De.push(sn(Dn.type,_.Type_satisfaction_expressions_can_only_be_used_in_TypeScript_files)),\"skip\";case 213:L.fail()}}function St(Dn,kr){if(aJ(kr)){let ki=wr(kr.modifiers,du);ki&&De.push(sn(ki,_.Decorators_are_not_valid_here))}else if(WS(kr)&&kr.modifiers){let ki=Yc(kr.modifiers,du);if(ki>=0){if(ha(kr)&&!R.experimentalDecorators)De.push(sn(kr.modifiers[ki],_.Decorators_are_not_valid_here));else if(sl(kr)){let Vn=Yc(kr.modifiers,c3);if(Vn>=0){let $t=Yc(kr.modifiers,kue);if(ki>Vn&&$t>=0&&ki<$t)De.push(sn(kr.modifiers[ki],_.Decorators_are_not_valid_here));else if(Vn>=0&&ki<Vn){let Xn=Yc(kr.modifiers,du,Vn);Xn>=0&&De.push(Ao(sn(kr.modifiers[Xn],_.Decorators_may_not_appear_after_export_or_export_default_if_they_also_appear_before_export),sn(kr.modifiers[ki],_.Decorator_used_before_export_here)))}}}}}switch(kr.kind){case 260:case 228:case 171:case 173:case 174:case 175:case 215:case 259:case 216:if(Dn===kr.typeParameters)return De.push(rn(Dn,_.Type_parameter_declarations_can_only_be_used_in_TypeScript_files)),\"skip\";case 240:if(Dn===kr.modifiers)return Zt(kr.modifiers,kr.kind===240),\"skip\";break;case 169:if(Dn===kr.modifiers){for(let ki of Dn)Ha(ki)&&ki.kind!==124&&ki.kind!==127&&De.push(sn(ki,_.The_0_modifier_can_only_be_used_in_TypeScript_files,Xa(ki.kind)));return\"skip\"}break;case 166:if(Dn===kr.modifiers&&vt(Dn,Ha))return De.push(rn(Dn,_.Parameter_modifiers_can_only_be_used_in_TypeScript_files)),\"skip\";break;case 210:case 211:case 230:case 282:case 283:case 212:if(Dn===kr.typeArguments)return De.push(rn(Dn,_.Type_arguments_can_only_be_used_in_TypeScript_files)),\"skip\";break}}function Zt(Dn,kr){for(let ki of Dn)switch(ki.kind){case 85:if(kr)continue;case 123:case 121:case 122:case 146:case 136:case 126:case 161:case 101:case 145:De.push(sn(ki,_.The_0_modifier_can_only_be_used_in_TypeScript_files,Xa(ki.kind)));break;case 124:case 93:case 88:case 127:}}function rn(Dn,kr,ki,Vn,$t){let Xn=Dn.pos;return al(be,Xn,Dn.end-Xn,kr,ki,Vn,$t)}function sn(Dn,kr,ki,Vn,$t){return Nu(be,Dn,kr,ki,Vn,$t)}})}function md(be,De){return bl(be,De,Ie,Pc)}function Pc(be,De){return Ps(()=>{let mt=Kr().getEmitResolver(be,De);return Tpe(j(Ba),mt,be)||Je})}function bl(be,De,mt,St){var Zt;let rn=be?(Zt=mt.perFile)==null?void 0:Zt.get(be.path):mt.allDiagnostics;if(rn)return rn;let sn=St(be,De);return be?(mt.perFile||(mt.perFile=new Map)).set(be.path,sn):mt.allDiagnostics=sn,sn}function ss(be,De){return be.isDeclarationFile?[]:md(be,De)}function qs(){return bA(Qi(_n.getGlobalDiagnostics(),Rs()))}function Rs(){if(!R.configFile)return Je;let be=_n.getDiagnostics(R.configFile.fileName);return jo(De=>{be=Qi(be,_n.getDiagnostics(De.sourceFile.fileName))}),be}function As(){return Y.length?bA(Kr().getGlobalDiagnostics().slice()):Je}function jt(){return ie||Je}function yc(be,De,mt,St){ft(So(be),De,mt,void 0,St)}function Ql(be,De){return be.fileName===De.fileName}function yu(be,De){return be.kind===79?De.kind===79&&be.escapedText===De.escapedText:De.kind===10&&be.text===De.text}function se(be,De){let mt=D.createStringLiteral(be),St=D.createImportDeclaration(void 0,void 0,mt,void 0);return xS(St,2),go(mt,St),go(St,De),mt.flags&=-9,St.flags&=-9,mt}function ht(be){if(be.imports)return;let De=Cu(be),mt=Lc(be),St,Zt,rn;if((u_(R)||mt)&&!be.isDeclarationFile){R.importHelpers&&(St=[se(_b,be)]);let Vn=p4(_4(R,be),R);Vn&&(St||(St=[])).push(se(Vn,be))}for(let Vn of be.statements)Dn(Vn,!1);let sn=De&&$s(R)!==100;(be.flags&2097152||sn)&&kr(be),be.imports=St||Je,be.moduleAugmentations=Zt||Je,be.ambientModuleNames=rn||Je;return;function Dn(Vn,$t){if(Vw(Vn)){let Xn=VA(Vn);Xn&&yo(Xn)&&Xn.text&&(!$t||!fl(Xn.text))&&(Zy(Vn,!1),St=Sn(St,Xn),!hi&&ct===0&&!be.isDeclarationFile&&(hi=na(Xn.text,\"node:\")))}else if(Tc(Vn)&&lu(Vn)&&($t||Mr(Vn,2)||be.isDeclarationFile)){Vn.name.parent=Vn;let Xn=c_(Vn.name);if(mt||$t&&!fl(Xn))(Zt||(Zt=[])).push(Vn.name);else if(!$t){be.isDeclarationFile&&(rn||(rn=[])).push(Xn);let ra=Vn.body;if(ra)for(let Is of ra.statements)Dn(Is,!0)}}}function kr(Vn){let $t=/import|require/g;for(;$t.exec(Vn.text)!==null;){let Xn=ki(Vn,$t.lastIndex);sn&&qu(Xn,!0)||Dd(Xn)&&Xn.arguments.length>=1&&es(Xn.arguments[0])?(Zy(Xn,!1),St=Sn(St,Xn.arguments[0])):ib(Xn)&&(Zy(Xn,!1),St=Sn(St,Xn.argument.literal))}}function ki(Vn,$t){let Xn=Vn,ra=Is=>{if(Is.pos<=$t&&($t<Is.end||$t===Is.end&&Is.kind===1))return Is};for(;;){let Is=De&&Jd(Xn)&&mn(Xn.jsDoc,ra)||pa(Xn,ra);if(!Is)return Xn;Xn=Is}}}function wt(be){let De=t_(be.fileName),mt=HO.get(De);if(mt)return Fa(Ri(mt))}function K(be,De){return Xe(wF(De.fileName,be.fileName),Fa)}function Xe(be,De,mt,St){if(yA(be)){let Zt=qe.getCanonicalFileName(be);if(!R.allowNonTsExtensions&&!mn(e_(ui),sn=>Gc(Zt,sn))){mt&&(TS(Zt)?mt(_.File_0_is_a_JavaScript_file_Did_you_mean_to_enable_the_allowJs_option,be):mt(_.File_0_has_an_unsupported_extension_The_only_supported_extensions_are_1,be,\"'\"+e_($n).join(\"', '\")+\"'\"));return}let rn=De(be);if(mt)if(rn)vb(St)&&Zt===qe.getCanonicalFileName(Hi(St.file).fileName)&&mt(_.A_file_cannot_have_a_reference_to_itself);else{let sn=Hs(be);sn?mt(_.Output_file_0_has_not_been_built_from_source_file_1,sn,be):mt(_.File_0_not_found,be)}return rn}else{let Zt=R.allowNonTsExtensions&&De(be);if(Zt)return Zt;if(mt&&R.allowNonTsExtensions){mt(_.File_0_not_found,be);return}let rn=mn($n[0],sn=>De(be+sn));return mt&&!rn&&mt(_.Could_not_resolve_the_path_0_with_the_extensions_Colon_1,be,\"'\"+e_($n).join(\"', '\")+\"'\"),rn}}function ft(be,De,mt,St,Zt){Xe(be,rn=>ta(rn,De,mt,Zt,St),(rn,...sn)=>bo(void 0,Zt,rn,sn),Zt)}function Yt(be,De){return ft(be,!1,!1,void 0,De)}function pr(be,De,mt){!vb(mt)&&vt(Pe.get(De.path),vb)?bo(De,mt,_.Already_included_file_name_0_differs_from_file_name_1_only_in_casing,[De.fileName,be]):bo(De,mt,_.File_name_0_differs_from_already_included_file_name_1_only_in_casing,[be,De.fileName])}function yr(be,De,mt,St,Zt,rn,sn){var Dn;let kr=fm.createRedirectedSourceFile({redirectTarget:be,unredirected:De});return kr.fileName=mt,kr.path=St,kr.resolvedPath=Zt,kr.originalFileName=rn,kr.packageJsonLocations=(Dn=sn.packageJsonLocations)!=null&&Dn.length?sn.packageJsonLocations:void 0,kr.packageJsonScope=sn.packageJsonScope,We.set(St,ct>0),kr}function ta(be,De,mt,St,Zt){var rn,sn;(rn=ai)==null||rn.push(ai.Phase.Program,\"findSourceFile\",{fileName:be,isDefaultLib:De||void 0,fileIncludeKind:R8[St.kind]});let Dn=Ka(be,De,mt,St,Zt);return(sn=ai)==null||sn.pop(),Dn}function Go(be,De,mt,St){let Zt=uq(_a(be,Gt),De?.getPackageJsonInfoCache(),mt,St),rn=Do(St),sn=NR(St);return typeof Zt==\"object\"?{...Zt,languageVersion:rn,setExternalModuleIndicator:sn}:{languageVersion:rn,impliedNodeFormat:Zt,setExternalModuleIndicator:sn}}function Ka(be,De,mt,St,Zt){var rn,sn;let Dn=rt(be);if(at){let Xn=Ws(Dn);if(!Xn&&qe.realpath&&R.preserveSymlinks&&Fu(be)&&jl(be,Wg)){let ra=rt(qe.realpath(be));ra!==Dn&&(Xn=Ws(ra))}if(Xn){let ra=Ta(Xn)?ta(Xn,De,mt,St,Zt):void 0;return ra&&ka(ra,Dn,void 0),ra}}let kr=be;if(ri.has(Dn)){let Xn=ri.get(Dn);if(vo(Xn||void 0,St),Xn&&R.forceConsistentCasingInFileNames!==!1){let ra=Xn.fileName;rt(ra)!==rt(be)&&(be=Hs(be)||be);let Mc=lj(ra,Gt),mm=lj(be,Gt);Mc!==mm&&pr(be,Xn,St)}return Xn&&We.get(Xn.path)&&ct===0?(We.set(Xn.path,!1),R.noResolve||(tf(Xn,De),ye(Xn)),R.noLib||io(Xn),Rt.set(Xn.path,!1),Ze(Xn)):Xn&&Rt.get(Xn.path)&&ct<_t&&(Rt.set(Xn.path,!1),Ze(Xn)),Xn||void 0}let ki;if(vb(St)&&!at){let Xn=Uc(be);if(Xn){if(Ss(Xn.commandLine.options))return;let ra=Gu(Xn,be);be=ra,ki=rt(ra)}}let Vn=Go(be,gr,qe,R),$t=qe.getSourceFile(be,Vn,Xn=>bo(void 0,St,_.Cannot_read_file_0_Colon_1,[be,Xn]),$||((rn=Z?.getSourceFileByPath(rt(be)))==null?void 0:rn.impliedNodeFormat)!==Vn.impliedNodeFormat);if(Zt){let Xn=gT(Zt),ra=pn.get(Xn);if(ra){let Is=yr(ra,$t,be,Dn,rt(be),kr,Vn);return Kn.add(ra.path,be),ka(Is,Dn,ki),vo(Is,St),An.set(Dn,p6(Zt)),le.push(Is),Is}else $t&&(pn.set(Xn,$t),An.set(Dn,p6(Zt)))}if(ka($t,Dn,ki),$t){if(We.set(Dn,ct>0),$t.fileName=be,$t.path=Dn,$t.resolvedPath=rt(be),$t.originalFileName=kr,$t.packageJsonLocations=(sn=Vn.packageJsonLocations)!=null&&sn.length?Vn.packageJsonLocations:void 0,$t.packageJsonScope=Vn.packageJsonScope,vo($t,St),qe.useCaseSensitiveFileNames()){let Xn=t_(Dn),ra=Ht.get(Xn);ra?pr(be,ra,St):Ht.set(Xn,$t)}Qt=Qt||$t.hasNoDefaultLib&&!mt,R.noResolve||(tf($t,De),ye($t)),R.noLib||io($t),Ze($t),De?re.push($t):le.push($t)}return $t}function vo(be,De){be&&Pe.add(be.path,De)}function ka(be,De,mt){mt?(ri.set(mt,be),ri.set(De,be||!1)):ri.set(De,be)}function Hs(be){let De=Uc(be);return De&&Gu(De,be)}function Uc(be){if(!(!En||!En.length||Fu(be)||Gc(be,\".json\")))return $o(be)}function Gu(be,De){let mt=Ss(be.commandLine.options);return mt?V0(mt,\".d.ts\"):XL(De,be.commandLine,!qe.useCaseSensitiveFileNames())}function $o(be){Cr===void 0&&(Cr=new Map,jo(mt=>{rt(R.configFilePath)!==mt.sourceFile.path&&mt.commandLine.fileNames.forEach(St=>Cr.set(rt(St),mt.sourceFile.path))}));let De=Cr.get(rt(be));return De&&vc(De)}function jo(be){return Kpe(En,be)}function Ws(be){if(!!Fu(be))return Se===void 0&&(Se=new Map,jo(De=>{let mt=Ss(De.commandLine.options);if(mt){let St=V0(mt,\".d.ts\");Se.set(rt(St),!0)}else{let St=zu(()=>YL(De.commandLine,!qe.useCaseSensitiveFileNames()));mn(De.commandLine.fileNames,Zt=>{if(!Fu(Zt)&&!Gc(Zt,\".json\")){let rn=XL(Zt,De.commandLine,!qe.useCaseSensitiveFileNames(),St);Se.set(rt(rn),Zt)}})}})),Se.get(be)}function hd(be){return at&&!!$o(be)}function vc(be){if(!!dr)return dr.get(be)||void 0}function tf(be,De){mn(be.referencedFiles,(mt,St)=>{ft(wF(mt.fileName,be.fileName),De,!1,void 0,{kind:4,file:be.path,index:St})})}function ye(be){let De=be.typeReferenceDirectives;if(!De.length){be.resolvedTypeReferenceDirectiveNames=void 0;return}let mt=pe(De,be);for(let St=0;St<De.length;St++){let Zt=be.typeReferenceDirectives[St],rn=mt[St],sn=t_(Zt.fileName);Dse(be,sn,rn,hN(Zt,be.impliedNodeFormat));let Dn=Zt.resolutionMode||be.impliedNodeFormat;Dn&&$s(R)!==3&&$s(R)!==99&&(Ne??(Ne=[])).push({kind:2,diagnostics:[vH(be,Zt,_.resolution_mode_assertions_are_only_supported_when_moduleResolution_is_node16_or_nodenext)]}),Et(sn,Dn,rn,{kind:5,file:be.path,index:St})}}function Et(be,De,mt,St){var Zt,rn;(Zt=ai)==null||Zt.push(ai.Phase.Program,\"processTypeReferenceDirective\",{directive:be,hasResolved:!!mt.resolvedTypeReferenceDirective,refKind:St.kind,refPath:vb(St)?St.file:void 0}),bn(be,De,mt,St),(rn=ai)==null||rn.pop()}function bn(be,De,mt,St){var Zt;Oe(mt);let rn=(Zt=Be.get(be,De))==null?void 0:Zt.resolvedTypeReferenceDirective;if(rn&&rn.primary)return;let sn=!0,{resolvedTypeReferenceDirective:Dn}=mt;if(Dn){if(Dn.isExternalLibraryImport&&ct++,Dn.primary)ft(Dn.resolvedFileName,!1,!1,Dn.packageId,St);else if(rn){if(Dn.resolvedFileName!==rn.resolvedFileName){let kr=qe.readFile(Dn.resolvedFileName),ki=Fa(rn.resolvedFileName);kr!==ki.text&&bo(ki,St,_.Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_library_to_resolve_the_conflict,[be,Dn.resolvedFileName,rn.resolvedFileName])}sn=!1}else ft(Dn.resolvedFileName,!1,!1,Dn.packageId,St);Dn.isExternalLibraryImport&&ct--}else bo(void 0,St,_.Cannot_find_type_definition_file_for_0,[be]);sn&&Be.set(be,De,mt)}function Ri(be){let De=be.split(\".\"),mt=De[1],St=2;for(;De[St]&&De[St]!==\"d\";)mt+=(St===2?\"/\":\"-\")+De[St],St++;let Zt=vi(Gt,`__lib_node_modules_lookup_${be}__.ts`),rn=GL(\"@typescript/lib-\"+mt,Zt,{moduleResolution:2},qe,gr);return rn?.resolvedModule?rn.resolvedModule.resolvedFileName:vi(kn,be)}function io(be){mn(be.libReferenceDirectives,(De,mt)=>{let St=t_(De.fileName),Zt=HO.get(St);if(Zt)yc(Ri(Zt),!0,!0,{kind:7,file:be.path,index:mt});else{let rn=mA(ZC(St,\"lib.\"),\".d.ts\"),sn=QC(rn,jO,Ks),Dn=sn?_.Cannot_find_lib_definition_for_0_Did_you_mean_1:_.Cannot_find_lib_definition_for_0;(Ne||(Ne=[])).push({kind:0,reason:{kind:7,file:be.path,index:mt},diagnostic:Dn,args:[St,sn]})}})}function ee(be){return qe.getCanonicalFileName(be)}function Ze(be){var De;if(ht(be),be.imports.length||be.moduleAugmentations.length){let mt=qpe(be),St=oe(mt,be);L.assert(St.length===mt.length);let Zt=(at?(De=Kt(be))==null?void 0:De.commandLine.options:void 0)||R;for(let rn=0;rn<mt.length;rn++){let sn=St[rn].resolvedModule,Dn=mt[rn].text,kr=H_(be,mt[rn]);if(kse(be,Dn,St[rn],kr),je(be,Dn,St[rn],kr),!sn)continue;let ki=sn.isExternalLibraryImport,Vn=!jR(sn.extension),$t=ki&&Vn,Xn=sn.resolvedFileName;ki&&ct++;let ra=$t&&ct>_t,Is=Xn&&!_q(Zt,sn,be)&&!Zt.noResolve&&rn<be.imports.length&&!ra&&!(Vn&&!MR(Zt))&&(Yn(be.imports[rn])||!(be.imports[rn].flags&8388608));ra?Rt.set(be.path,!0):Is&&ta(Xn,!1,!1,{kind:3,file:be.path,index:rn},sn.packageId),ki&&ct--}}else be.resolvedModules=void 0}function At(be,De){let mt=!0,St=qe.getCanonicalFileName(_a(De,Gt));for(let Zt of be)Zt.isDeclarationFile||qe.getCanonicalFileName(_a(Zt.fileName,Gt)).indexOf(St)!==0&&(Qo(Zt,_.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files,[Zt.fileName,De]),mt=!1);return mt}function xt(be){dr||(dr=new Map);let De=QL(be),mt=rt(De),St=dr.get(mt);if(St!==void 0)return St||void 0;let Zt,rn;if(qe.getParsedCommandLine){if(Zt=qe.getParsedCommandLine(De),!Zt){ka(void 0,mt,void 0),dr.set(mt,!1);return}rn=L.checkDefined(Zt.options.configFile),L.assert(!rn.path||rn.path===mt),ka(rn,mt,void 0)}else{let Dn=_a(ni(De),qe.getCurrentDirectory());if(rn=qe.getSourceFile(De,100),ka(rn,mt,void 0),rn===void 0){dr.set(mt,!1);return}Zt=FO(rn,zt,Dn,void 0,De)}rn.fileName=De,rn.path=mt,rn.resolvedPath=mt,rn.originalFileName=De;let sn={commandLine:Zt,sourceFile:rn};return dr.set(mt,sn),Zt.projectReferences&&(sn.references=Zt.projectReferences.map(xt)),sn}function qt(){R.strictPropertyInitialization&&!Bf(R,\"strictNullChecks\")&&Io(_.Option_0_cannot_be_specified_without_specifying_option_1,\"strictPropertyInitialization\",\"strictNullChecks\"),R.exactOptionalPropertyTypes&&!Bf(R,\"strictNullChecks\")&&Io(_.Option_0_cannot_be_specified_without_specifying_option_1,\"exactOptionalPropertyTypes\",\"strictNullChecks\"),(R.isolatedModules||R.verbatimModuleSyntax)&&(R.out&&Io(_.Option_0_cannot_be_specified_with_option_1,\"out\",R.verbatimModuleSyntax?\"verbatimModuleSyntax\":\"isolatedModules\"),R.outFile&&Io(_.Option_0_cannot_be_specified_with_option_1,\"outFile\",R.verbatimModuleSyntax?\"verbatimModuleSyntax\":\"isolatedModules\")),R.inlineSourceMap&&(R.sourceMap&&Io(_.Option_0_cannot_be_specified_with_option_1,\"sourceMap\",\"inlineSourceMap\"),R.mapRoot&&Io(_.Option_0_cannot_be_specified_with_option_1,\"mapRoot\",\"inlineSourceMap\")),R.composite&&(R.declaration===!1&&Io(_.Composite_projects_may_not_disable_declaration_emit,\"declaration\"),R.incremental===!1&&Io(_.Composite_projects_may_not_disable_incremental_compilation,\"declaration\"));let be=Ss(R);if(R.tsBuildInfoFile?PR(R)||Io(_.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2,\"tsBuildInfoFile\",\"incremental\",\"composite\"):R.incremental&&!be&&!R.configFilePath&&_n.add(ps(_.Option_incremental_can_only_be_specified_using_tsconfig_emitting_to_single_file_or_when_option_tsBuildInfoFile_is_specified)),Vr(),Bu(),R.composite){let sn=new Set(Y.map(rt));for(let Dn of _e)mS(Dn,G)&&!sn.has(Dn.path)&&Qo(Dn,_.File_0_is_not_listed_within_the_file_list_of_project_1_Projects_must_list_all_files_or_use_an_include_pattern,[Dn.fileName,R.configFilePath||\"\"])}if(R.paths){for(let sn in R.paths)if(!!fs(R.paths,sn))if(CW(sn)||Dc(!0,sn,_.Pattern_0_can_have_at_most_one_Asterisk_character,sn),ba(R.paths[sn])){let Dn=R.paths[sn].length;Dn===0&&Dc(!1,sn,_.Substitutions_for_pattern_0_shouldn_t_be_an_empty_array,sn);for(let kr=0;kr<Dn;kr++){let ki=R.paths[sn][kr],Vn=typeof ki;Vn===\"string\"?(CW(ki)||Pd(sn,kr,_.Substitution_0_in_pattern_1_can_have_at_most_one_Asterisk_character,ki,sn),!R.baseUrl&&!zd(ki)&&!rI(ki)&&Pd(sn,kr,_.Non_relative_paths_are_not_allowed_when_baseUrl_is_not_set_Did_you_forget_a_leading_Slash)):Pd(sn,kr,_.Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2,ki,sn,Vn)}}else Dc(!1,sn,_.Substitutions_for_pattern_0_should_be_an_array,sn)}!R.sourceMap&&!R.inlineSourceMap&&(R.inlineSources&&Io(_.Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided,\"inlineSources\"),R.sourceRoot&&Io(_.Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided,\"sourceRoot\")),R.out&&R.outFile&&Io(_.Option_0_cannot_be_specified_with_option_1,\"out\",\"outFile\"),R.mapRoot&&!(R.sourceMap||R.declarationMap)&&Io(_.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2,\"mapRoot\",\"sourceMap\",\"declarationMap\"),R.declarationDir&&(f_(R)||Io(_.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2,\"declarationDir\",\"declaration\",\"composite\"),be&&Io(_.Option_0_cannot_be_specified_with_option_1,\"declarationDir\",R.out?\"out\":\"outFile\")),R.declarationMap&&!f_(R)&&Io(_.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2,\"declarationMap\",\"declaration\",\"composite\"),R.lib&&R.noLib&&Io(_.Option_0_cannot_be_specified_with_option_1,\"lib\",\"noLib\"),R.noImplicitUseStrict&&Bf(R,\"alwaysStrict\")&&Io(_.Option_0_cannot_be_specified_with_option_1,\"noImplicitUseStrict\",\"alwaysStrict\");let De=Do(R),mt=wr(_e,sn=>Lc(sn)&&!sn.isDeclarationFile);if(R.isolatedModules||R.verbatimModuleSyntax)R.module===0&&De<2&&R.isolatedModules&&Io(_.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher,\"isolatedModules\",\"target\"),R.preserveConstEnums===!1&&Io(_.Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled,R.verbatimModuleSyntax?\"verbatimModuleSyntax\":\"isolatedModules\",\"preserveConstEnums\");else if(mt&&De<2&&R.module===0){let sn=w0(mt,typeof mt.externalModuleIndicator==\"boolean\"?mt:mt.externalModuleIndicator);_n.add(al(mt,sn.start,sn.length,_.Cannot_use_imports_exports_or_module_augmentations_when_module_is_none))}if(be&&!R.emitDeclarationOnly){if(R.module&&!(R.module===2||R.module===4))Io(_.Only_amd_and_system_modules_are_supported_alongside_0,R.out?\"out\":\"outFile\",\"module\");else if(R.module===void 0&&mt){let sn=w0(mt,typeof mt.externalModuleIndicator==\"boolean\"?mt:mt.externalModuleIndicator);_n.add(al(mt,sn.start,sn.length,_.Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system,R.out?\"out\":\"outFile\"))}}if(OT(R)&&($s(R)===1?Io(_.Option_resolveJsonModule_cannot_be_specified_when_moduleResolution_is_set_to_classic,\"resolveJsonModule\"):l4(R)||Io(_.Option_resolveJsonModule_can_only_be_specified_when_module_code_generation_is_commonjs_amd_es2015_or_esNext,\"resolveJsonModule\",\"module\")),R.outDir||R.rootDir||R.sourceRoot||R.mapRoot){let sn=Ot();R.outDir&&sn===\"\"&&_e.some(Dn=>_p(Dn.fileName)>1)&&Io(_.Cannot_find_the_common_subdirectory_path_for_the_input_files,\"outDir\")}R.useDefineForClassFields&&De===0&&Io(_.Option_0_cannot_be_specified_when_option_target_is_ES3,\"useDefineForClassFields\"),R.checkJs&&!MR(R)&&_n.add(ps(_.Option_0_cannot_be_specified_without_specifying_option_1,\"checkJs\",\"allowJs\")),R.emitDeclarationOnly&&(f_(R)||Io(_.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2,\"emitDeclarationOnly\",\"declaration\",\"composite\"),R.noEmit&&Io(_.Option_0_cannot_be_specified_with_option_1,\"emitDeclarationOnly\",\"noEmit\")),R.emitDecoratorMetadata&&!R.experimentalDecorators&&Io(_.Option_0_cannot_be_specified_without_specifying_option_1,\"emitDecoratorMetadata\",\"experimentalDecorators\"),R.jsxFactory?(R.reactNamespace&&Io(_.Option_0_cannot_be_specified_with_option_1,\"reactNamespace\",\"jsxFactory\"),(R.jsx===4||R.jsx===5)&&Io(_.Option_0_cannot_be_specified_when_option_jsx_is_1,\"jsxFactory\",PL.get(\"\"+R.jsx)),JS(R.jsxFactory,De)||zf(\"jsxFactory\",_.Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name,R.jsxFactory)):R.reactNamespace&&!r_(R.reactNamespace,De)&&zf(\"reactNamespace\",_.Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier,R.reactNamespace),R.jsxFragmentFactory&&(R.jsxFactory||Io(_.Option_0_cannot_be_specified_without_specifying_option_1,\"jsxFragmentFactory\",\"jsxFactory\"),(R.jsx===4||R.jsx===5)&&Io(_.Option_0_cannot_be_specified_when_option_jsx_is_1,\"jsxFragmentFactory\",PL.get(\"\"+R.jsx)),JS(R.jsxFragmentFactory,De)||zf(\"jsxFragmentFactory\",_.Invalid_value_for_jsxFragmentFactory_0_is_not_a_valid_identifier_or_qualified_name,R.jsxFragmentFactory)),R.reactNamespace&&(R.jsx===4||R.jsx===5)&&Io(_.Option_0_cannot_be_specified_when_option_jsx_is_1,\"reactNamespace\",PL.get(\"\"+R.jsx)),R.jsxImportSource&&R.jsx===2&&Io(_.Option_0_cannot_be_specified_when_option_jsx_is_1,\"jsxImportSource\",PL.get(\"\"+R.jsx)),R.preserveValueImports&&Rl(R)<5&&Io(_.Option_0_can_only_be_used_when_module_is_set_to_es2015_or_later,\"preserveValueImports\");let St=Rl(R);R.verbatimModuleSyntax&&((St===2||St===3||St===4)&&Io(_.Option_verbatimModuleSyntax_cannot_be_used_when_module_is_set_to_UMD_AMD_or_System,\"verbatimModuleSyntax\"),R.isolatedModules&&He(\"isolatedModules\",\"verbatimModuleSyntax\"),R.preserveValueImports&&He(\"preserveValueImports\",\"verbatimModuleSyntax\"),R.importsNotUsedAsValues&&He(\"importsNotUsedAsValues\",\"verbatimModuleSyntax\")),R.allowImportingTsExtensions&&!(R.noEmit||R.emitDeclarationOnly)&&zf(\"allowImportingTsExtensions\",_.Option_allowImportingTsExtensions_can_only_be_used_when_either_noEmit_or_emitDeclarationOnly_is_set);let Zt=$s(R);if(R.resolvePackageJsonExports&&!ES(Zt)&&Io(_.Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler,\"resolvePackageJsonExports\"),R.resolvePackageJsonImports&&!ES(Zt)&&Io(_.Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler,\"resolvePackageJsonImports\"),R.customConditions&&!ES(Zt)&&Io(_.Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler,\"customConditions\"),Zt===100&&!SW(St)&&zf(\"moduleResolution\",_.Option_0_can_only_be_used_when_module_is_set_to_es2015_or_later,\"bundler\"),!R.noEmit&&!R.suppressOutputPathCheck){let sn=j(),Dn=new Set;WK(sn,kr=>{R.emitDeclarationOnly||rn(kr.jsFilePath,Dn),rn(kr.declarationFilePath,Dn)})}function rn(sn,Dn){if(sn){let kr=rt(sn);if(ri.has(kr)){let Vn;R.configFilePath||(Vn=da(void 0,_.Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript_files_Learn_more_at_https_Colon_Slash_Slashaka_ms_Slashtsconfig)),Vn=da(Vn,_.Cannot_write_file_0_because_it_would_overwrite_input_file,sn),Nt(sn,s4(Vn))}let ki=qe.useCaseSensitiveFileNames()?kr:t_(kr);Dn.has(ki)?Nt(sn,ps(_.Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files,sn)):Dn.add(ki)}}}function Ln(){let be=R.ignoreDeprecations;if(be){if(be===\"5.0\")return new n_(be);U()}return n_.zero}function mr(be,De,mt,St){let Zt=new n_(be),rn=new n_(De),sn=new n_(fe||Sg),Dn=Ln(),kr=rn.compareTo(sn)!==1,ki=!kr&&Dn.compareTo(Zt)===-1;(kr||ki)&&St((Vn,$t,Xn)=>{kr?$t===void 0?mt(Vn,$t,Xn,_.Option_0_has_been_removed_Please_remove_it_from_your_configuration,Vn):mt(Vn,$t,Xn,_.Option_0_1_has_been_removed_Please_remove_it_from_your_configuration,Vn,$t):$t===void 0?mt(Vn,$t,Xn,_.Option_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_compilerOption_ignoreDeprecations_Colon_2_to_silence_this_error,Vn,De,be):mt(Vn,$t,Xn,_.Option_0_1_is_deprecated_and_will_stop_functioning_in_TypeScript_2_Specify_compilerOption_ignoreDeprecations_Colon_3_to_silence_this_error,Vn,$t,De,be)})}function Vr(){function be(De,mt,St,Zt,rn,sn,Dn,kr){if(St){let ki=da(void 0,_.Use_0_instead,St),Vn=da(ki,Zt,rn,sn,Dn,kr);b_(!mt,De,void 0,Vn)}else b_(!mt,De,void 0,Zt,rn,sn,Dn,kr)}mr(\"5.0\",\"5.5\",be,De=>{R.target===0&&De(\"target\",\"ES3\"),R.noImplicitUseStrict&&De(\"noImplicitUseStrict\"),R.keyofStringsOnly&&De(\"keyofStringsOnly\"),R.suppressExcessPropertyErrors&&De(\"suppressExcessPropertyErrors\"),R.suppressImplicitAnyIndexErrors&&De(\"suppressImplicitAnyIndexErrors\"),R.noStrictGenericChecks&&De(\"noStrictGenericChecks\"),R.charset&&De(\"charset\"),R.out&&De(\"out\",void 0,\"outFile\"),R.importsNotUsedAsValues&&De(\"importsNotUsedAsValues\",void 0,\"verbatimModuleSyntax\"),R.preserveValueImports&&De(\"preserveValueImports\",void 0,\"verbatimModuleSyntax\")})}function gi(be,De,mt){function St(Zt,rn,sn,Dn,kr,ki,Vn,$t){Fd(De,mt,Dn,kr,ki,Vn,$t)}mr(\"5.0\",\"5.5\",St,Zt=>{be.prepend&&Zt(\"prepend\")})}function Ea(be,De,mt,St){var Zt;let rn,sn,Dn=vb(De)?De:void 0;be&&((Zt=Pe.get(be.path))==null||Zt.forEach(Xn)),De&&Xn(De),Dn&&rn?.length===1&&(rn=void 0);let kr=Dn&&$L(Hi,Dn),ki=rn&&da(rn,_.The_file_is_in_the_program_because_Colon),Vn=be&&Oq(be),$t=da(Vn?ki?[ki,...Vn]:Vn:ki,mt,...St||Je);return kr&&G2(kr)?S6(kr.file,kr.pos,kr.end-kr.pos,$t,sn):s4($t,sn);function Xn(ra){(rn||(rn=[])).push(Mq(G,ra)),!Dn&&vb(ra)?Dn=ra:Dn!==ra&&(sn=Sn(sn,Cs(ra))),ra===De&&(De=void 0)}}function bo(be,De,mt,St){(Ne||(Ne=[])).push({kind:1,file:be&&be.path,fileProcessingReason:De,diagnostic:mt,args:St})}function Qo(be,De,mt){_n.add(Ea(be,void 0,De,mt))}function Cs(be){if(vb(be)){let St=$L(Hi,be),Zt;switch(be.kind){case 3:Zt=_.File_is_included_via_import_here;break;case 4:Zt=_.File_is_included_via_reference_here;break;case 5:Zt=_.File_is_included_via_type_library_reference_here;break;case 7:Zt=_.File_is_included_via_library_reference_here;break;default:L.assertNever(be)}return G2(St)?al(St.file,St.pos,St.end-St.pos,Zt):void 0}if(!R.configFile)return;let De,mt;switch(be.kind){case 0:if(!R.configFile.configFileSpecs)return;let St=_a(Y[be.index],Gt),Zt=Nq(G,St);if(Zt){De=w6(R.configFile,\"files\",Zt),mt=_.File_is_matched_by_files_list_specified_here;break}let rn=Pq(G,St);if(!rn||!Ta(rn))return;De=w6(R.configFile,\"include\",rn),mt=_.File_is_matched_by_include_pattern_specified_here;break;case 1:case 2:let sn=L.checkDefined(En?.[be.index]),Dn=yN(Q,En,(Xn,ra,Is)=>Xn===sn?{sourceFile:ra?.sourceFile||R.configFile,index:Is}:void 0);if(!Dn)return;let{sourceFile:kr,index:ki}=Dn,Vn=ks(Ww(kr,\"references\"),Xn=>fu(Xn.initializer)?Xn.initializer:void 0);return Vn&&Vn.elements.length>ki?Nu(kr,Vn.elements[ki],be.kind===2?_.File_is_output_from_referenced_project_specified_here:_.File_is_source_from_referenced_project_specified_here):void 0;case 8:if(!R.types)return;De=Wf(\"types\",be.typeReference),mt=_.File_is_entry_point_of_type_library_specified_here;break;case 6:if(be.index!==void 0){De=Wf(\"lib\",R.lib[be.index]),mt=_.File_is_library_specified_here;break}let $t=Ld(JO.type,(Xn,ra)=>Xn===Do(R)?ra:void 0);De=$t?Md(\"target\",$t):void 0,mt=_.File_is_default_library_for_target_specified_here;break;default:L.assertNever(be)}return De&&Nu(R.configFile,De,mt)}function Bu(){let be=R.suppressOutputPathCheck?void 0:Jg(R);yN(Q,En,(De,mt,St)=>{let Zt=(mt?mt.commandLine.projectReferences:Q)[St],rn=mt&&mt.sourceFile;if(gi(Zt,rn,St),!De){Fd(rn,St,_.File_0_not_found,Zt.path);return}let sn=De.commandLine.options;if((!sn.composite||sn.noEmit)&&(mt?mt.commandLine.fileNames:Y).length&&(sn.composite||Fd(rn,St,_.Referenced_project_0_must_have_setting_composite_Colon_true,Zt.path),sn.noEmit&&Fd(rn,St,_.Referenced_project_0_may_not_disable_emit,Zt.path)),Zt.prepend){let Dn=Ss(sn);Dn?qe.fileExists(Dn)||Fd(rn,St,_.Output_file_0_from_project_1_does_not_exist,Dn,Zt.path):Fd(rn,St,_.Cannot_prepend_project_0_because_it_does_not_have_outFile_set,Zt.path)}!mt&&be&&be===Jg(sn)&&(Fd(rn,St,_.Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1,be,Zt.path),Ni.set(rt(be),!0))})}function Pd(be,De,mt,St,Zt,rn){let sn=!0,Dn=Zl();for(let kr of Dn)if(rs(kr.initializer))for(let ki of FA(kr.initializer,be)){let Vn=ki.initializer;fu(Vn)&&Vn.elements.length>De&&(_n.add(Nu(R.configFile,Vn.elements[De],mt,St,Zt,rn)),sn=!1)}sn&&_n.add(ps(mt,St,Zt,rn))}function Dc(be,De,mt,St){let Zt=!0,rn=Zl();for(let sn of rn)rs(sn.initializer)&&M(sn.initializer,be,De,void 0,mt,St)&&(Zt=!1);Zt&&_n.add(ps(mt,St))}function gd(be){let De=X_();return De&&FA(De,be)}function Zl(){return gd(\"paths\")||Je}function Md(be,De){let mt=gd(be);return mt&&ks(mt,St=>yo(St.initializer)&&St.initializer.text===De?St.initializer:void 0)}function Wf(be,De){let mt=X_();return mt&&rce(mt,be,De)}function Io(be,De,mt,St){b_(!0,De,mt,be,De,mt,St)}function zf(be,De,mt,St){b_(!1,be,void 0,De,mt,St)}function Fd(be,De,mt,St,Zt,rn,sn){let Dn=ks(Ww(be||R.configFile,\"references\"),kr=>fu(kr.initializer)?kr.initializer:void 0);Dn&&Dn.elements.length>De?_n.add(Nu(be||R.configFile,Dn.elements[De],mt,St,Zt,rn,sn)):_n.add(ps(mt,St,Zt,rn,sn))}function b_(be,De,mt,St,Zt,rn,sn,Dn){let kr=X_();(!kr||!M(kr,be,De,mt,St,Zt,rn,sn,Dn))&&(\"messageText\"in St?_n.add(s4(St)):_n.add(ps(St,Zt,rn,sn,Dn)))}function X_(){if(Pi===void 0){Pi=!1;let be=kI(R.configFile);if(be){for(let De of FA(be,\"compilerOptions\"))if(rs(De.initializer)){Pi=De.initializer;break}}}return Pi||void 0}function M(be,De,mt,St,Zt,rn,sn,Dn,kr){let ki=FA(be,mt,St);for(let Vn of ki)\"messageText\"in Zt?_n.add(Lh(R.configFile,De?Vn.name:Vn.initializer,Zt)):_n.add(Nu(R.configFile,De?Vn.name:Vn.initializer,Zt,rn,sn,Dn,kr));return!!ki.length}function He(be,De){let mt=X_();mt?M(mt,!0,be,void 0,_.Option_0_is_redundant_and_cannot_be_specified_with_option_1,be,De):Io(_.Option_0_is_redundant_and_cannot_be_specified_with_option_1,be,De)}function Nt(be,De){Ni.set(rt(be),!0),_n.add(De)}function Pn(be){if(R.noEmit)return!1;let De=rt(be);if(Hi(De))return!1;let mt=Ss(R);if(mt)return la(De,mt)||la(De,ld(mt)+\".d.ts\");if(R.declarationDir&&Gy(R.declarationDir,De,Gt,!qe.useCaseSensitiveFileNames()))return!0;if(R.outDir)return Gy(R.outDir,De,Gt,!qe.useCaseSensitiveFileNames());if($c(De,fL)||Fu(De)){let St=ld(De);return!!Hi(St+\".ts\")||!!Hi(St+\".tsx\")}return!1}function la(be,De){return lT(be,De,Gt,!qe.useCaseSensitiveFileNames())===0}function oa(){return qe.getSymlinkCache?qe.getSymlinkCache():(ge||(ge=Ile(Gt,ee)),_e&&Ye&&!ge.hasProcessedResolutions()&&ge.setSymlinksFromResolutions(_e,Ye),ge)}}function r8e(e){let t,r=e.compilerHost.fileExists,i=e.compilerHost.directoryExists,o=e.compilerHost.getDirectories,s=e.compilerHost.realpath;if(!e.useSourceOfProjectReferenceRedirect)return{onProgramCreateComplete:Ba,fileExists:d};e.compilerHost.fileExists=d;let l;return i&&(l=e.compilerHost.directoryExists=x=>i.call(e.compilerHost,x)?(v(x),!0):e.getResolvedProjectReferences()?(t||(t=new Set,e.forEachResolvedProjectReference(A=>{let w=Ss(A.commandLine.options);if(w)t.add(ni(e.toPath(w)));else{let C=A.commandLine.options.declarationDir||A.commandLine.options.outDir;C&&t.add(e.toPath(C))}})),S(x,!1)):!1),o&&(e.compilerHost.getDirectories=x=>!e.getResolvedProjectReferences()||i&&i.call(e.compilerHost,x)?o.call(e.compilerHost,x):[]),s&&(e.compilerHost.realpath=x=>{var A;return((A=e.getSymlinkCache().getSymlinkedFiles())==null?void 0:A.get(e.toPath(x)))||s.call(e.compilerHost,x)}),{onProgramCreateComplete:f,fileExists:d,directoryExists:l};function f(){e.compilerHost.fileExists=r,e.compilerHost.directoryExists=i,e.compilerHost.getDirectories=o}function d(x){return r.call(e.compilerHost,x)?!0:!e.getResolvedProjectReferences()||!Fu(x)?!1:S(x,!0)}function g(x){let A=e.getSourceOfProjectReferenceRedirect(e.toPath(x));return A!==void 0?Ta(A)?r.call(e.compilerHost,A):!0:void 0}function m(x){let A=e.toPath(x),w=`${A}${_s}`;return SI(t,C=>A===C||na(C,w)||na(A,`${C}/`))}function v(x){var A;if(!e.getResolvedProjectReferences()||cL(x)||!s||!jl(x,Wg))return;let w=e.getSymlinkCache(),C=cu(e.toPath(x));if((A=w.getSymlinkedDirectories())!=null&&A.has(C))return;let P=So(s.call(e.compilerHost,x)),F;if(P===x||(F=cu(e.toPath(P)))===C){w.setSymlinkedDirectory(C,!1);return}w.setSymlinkedDirectory(x,{real:cu(P),realPath:F})}function S(x,A){var w;let C=A?W=>g(W):W=>m(W),P=C(x);if(P!==void 0)return P;let F=e.getSymlinkCache(),B=F.getSymlinkedDirectories();if(!B)return!1;let q=e.toPath(x);return jl(q,Wg)?A&&((w=F.getSymlinkedFiles())==null?void 0:w.has(q))?!0:GD(B.entries(),([W,Y])=>{if(!Y||!na(q,W))return;let R=C(q.replace(W,Y.realPath));if(A&&R){let ie=_a(x,e.compilerHost.getCurrentDirectory());F.setSymlinkedFile(q,`${Y.real}${ie.replace(new RegExp(W,\"i\"),\"\")}`)}return R})||!1:!1}}function dq(e,t,r,i){let o=e.getCompilerOptions();if(o.noEmit)return e.getSemanticDiagnostics(t,i),t||Ss(o)?HF:e.emitBuildInfo(r,i);if(!o.noEmitOnError)return;let s=[...e.getOptionsDiagnostics(i),...e.getSyntacticDiagnostics(t,i),...e.getGlobalDiagnostics(i),...e.getSemanticDiagnostics(t,i)];if(s.length===0&&f_(e.getCompilerOptions())&&(s=e.getDeclarationDiagnostics(void 0,i)),!s.length)return;let l;if(!t&&!Ss(o)){let f=e.emitBuildInfo(r,i);f.diagnostics&&(s=[...s,...f.diagnostics]),l=f.emittedFiles}return{diagnostics:s,sourceMaps:void 0,emittedFiles:l,emitSkipped:!0}}function MF(e,t){return Pr(e,r=>!r.skippedOn||!t[r.skippedOn])}function FF(e,t=e){return{fileExists:r=>t.fileExists(r),readDirectory(r,i,o,s,l){return L.assertIsDefined(t.readDirectory,\"'CompilerHost.readDirectory' must be implemented to correctly process 'projectReferences'\"),t.readDirectory(r,i,o,s,l)},readFile:r=>t.readFile(r),useCaseSensitiveFileNames:e.useCaseSensitiveFileNames(),getCurrentDirectory:()=>e.getCurrentDirectory(),onUnRecoverableConfigFileDiagnostic:e.onUnRecoverableConfigFileDiagnostic||Qv,trace:e.trace?r=>e.trace(r):void 0}}function fq(e,t,r,i){if(!e)return Je;let o;for(let s=0;s<e.length;s++){let l=e[s],f=t(l,s);if(l.prepend&&f&&f.options){if(!Ss(f.options))continue;let{jsFilePath:g,sourceMapFilePath:m,declarationFilePath:v,declarationMapPath:S,buildInfoPath:x}=KL(f.options,!0),A=_z(r,g,m,v,S,x,i,f.options);(o||(o=[])).push(A)}}return o||Je}function QL(e){return Hq(e.path)}function _q(e,{extension:t},{isDeclarationFile:r}){switch(t){case\".ts\":case\".d.ts\":case\".mts\":case\".d.mts\":case\".cts\":case\".d.cts\":return;case\".tsx\":return i();case\".jsx\":return i()||o();case\".js\":case\".mjs\":case\".cjs\":return o();case\".json\":return s();default:return l()}function i(){return e.jsx?void 0:_.Module_0_was_resolved_to_1_but_jsx_is_not_set}function o(){return MR(e)||!Bf(e,\"noImplicitAny\")?void 0:_.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type}function s(){return OT(e)?void 0:_.Module_0_was_resolved_to_1_but_resolveJsonModule_is_not_used}function l(){return r||e.allowArbitraryExtensions?void 0:_.Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set}}function qpe({imports:e,moduleAugmentations:t}){let r=e.map(i=>i);for(let i of t)i.kind===10&&r.push(i);return r}function GF({imports:e,moduleAugmentations:t},r){if(r<e.length)return e[r];let i=e.length;for(let o of t)if(o.kind===10){if(r===i)return o;i++}L.fail(\"should never ask for module name at index higher than possible module name\")}var pq,BF,UF,mq,hq,Xpe,gq,yq,ZL,vN,VF,jF,HF,i8e=gt({\"src/compiler/program.ts\"(){\"use strict\";fa(),fa(),E0(),pq=(e=>(e.Grey=\"\\x1B[90m\",e.Red=\"\\x1B[91m\",e.Yellow=\"\\x1B[93m\",e.Blue=\"\\x1B[94m\",e.Cyan=\"\\x1B[96m\",e))(pq||{}),BF=\"\\x1B[7m\",UF=\" \",mq=\"\\x1B[0m\",hq=\"...\",Xpe=\"  \",gq=\"    \",yq={resolvedModule:void 0,resolvedTypeReferenceDirective:void 0},ZL={getName:sq,getMode:(e,t)=>H_(t,e)},vN={getName:RF,getMode:(e,t)=>hN(e,t?.impliedNodeFormat)},VF=\"__inferred type names__.ts\",jF=new Set([_.Cannot_redeclare_block_scoped_variable_0.code,_.A_module_cannot_have_multiple_default_exports.code,_.Another_export_default_is_here.code,_.The_first_export_default_is_here.code,_.Identifier_expected_0_is_a_reserved_word_at_the_top_level_of_a_module.code,_.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode.code,_.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here.code,_.constructor_is_a_reserved_word.code,_.delete_cannot_be_called_on_an_identifier_in_strict_mode.code,_.Code_contained_in_a_class_is_evaluated_in_JavaScript_s_strict_mode_which_does_not_allow_this_use_of_0_For_more_information_see_https_Colon_Slash_Slashdeveloper_mozilla_org_Slashen_US_Slashdocs_SlashWeb_SlashJavaScript_SlashReference_SlashStrict_mode.code,_.Invalid_use_of_0_Modules_are_automatically_in_strict_mode.code,_.Invalid_use_of_0_in_strict_mode.code,_.A_label_is_not_allowed_here.code,_.Octal_literals_are_not_allowed_in_strict_mode.code,_.with_statements_are_not_allowed_in_strict_mode.code,_.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement.code,_.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement.code,_.A_class_declaration_without_the_default_modifier_must_have_a_name.code,_.A_class_member_cannot_have_the_0_keyword.code,_.A_comma_expression_is_not_allowed_in_a_computed_property_name.code,_.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement.code,_.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement.code,_.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement.code,_.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement.code,_.A_default_export_must_be_at_the_top_level_of_a_file_or_module_declaration.code,_.A_definite_assignment_assertion_is_not_permitted_in_this_context.code,_.A_destructuring_declaration_must_have_an_initializer.code,_.A_get_accessor_cannot_have_parameters.code,_.A_rest_element_cannot_contain_a_binding_pattern.code,_.A_rest_element_cannot_have_a_property_name.code,_.A_rest_element_cannot_have_an_initializer.code,_.A_rest_element_must_be_last_in_a_destructuring_pattern.code,_.A_rest_parameter_cannot_have_an_initializer.code,_.A_rest_parameter_must_be_last_in_a_parameter_list.code,_.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma.code,_.A_return_statement_cannot_be_used_inside_a_class_static_block.code,_.A_set_accessor_cannot_have_rest_parameter.code,_.A_set_accessor_must_have_exactly_one_parameter.code,_.An_export_declaration_can_only_be_used_at_the_top_level_of_a_module.code,_.An_export_declaration_cannot_have_modifiers.code,_.An_import_declaration_can_only_be_used_at_the_top_level_of_a_module.code,_.An_import_declaration_cannot_have_modifiers.code,_.An_object_member_cannot_be_declared_optional.code,_.Argument_of_dynamic_import_cannot_be_spread_element.code,_.Cannot_assign_to_private_method_0_Private_methods_are_not_writable.code,_.Cannot_redeclare_identifier_0_in_catch_clause.code,_.Catch_clause_variable_cannot_have_an_initializer.code,_.Class_decorators_can_t_be_used_with_static_private_identifier_Consider_removing_the_experimental_decorator.code,_.Classes_can_only_extend_a_single_class.code,_.Classes_may_not_have_a_field_named_constructor.code,_.Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_part_of_a_destructuring_pattern.code,_.Duplicate_label_0.code,_.Dynamic_imports_can_only_accept_a_module_specifier_and_an_optional_assertion_as_arguments.code,_.For_await_loops_cannot_be_used_inside_a_class_static_block.code,_.JSX_attributes_must_only_be_assigned_a_non_empty_expression.code,_.JSX_elements_cannot_have_multiple_attributes_with_the_same_name.code,_.JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array.code,_.JSX_property_access_expressions_cannot_include_JSX_namespace_names.code,_.Jump_target_cannot_cross_function_boundary.code,_.Line_terminator_not_permitted_before_arrow.code,_.Modifiers_cannot_appear_here.code,_.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement.code,_.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement.code,_.Private_identifiers_are_not_allowed_outside_class_bodies.code,_.Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression.code,_.Property_0_is_not_accessible_outside_class_1_because_it_has_a_private_identifier.code,_.Tagged_template_expressions_are_not_permitted_in_an_optional_chain.code,_.The_left_hand_side_of_a_for_of_statement_may_not_be_async.code,_.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer.code,_.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer.code,_.Trailing_comma_not_allowed.code,_.Variable_declaration_list_cannot_be_empty.code,_._0_and_1_operations_cannot_be_mixed_without_parentheses.code,_._0_expected.code,_._0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2.code,_._0_list_cannot_be_empty.code,_._0_modifier_already_seen.code,_._0_modifier_cannot_appear_on_a_constructor_declaration.code,_._0_modifier_cannot_appear_on_a_module_or_namespace_element.code,_._0_modifier_cannot_appear_on_a_parameter.code,_._0_modifier_cannot_appear_on_class_elements_of_this_kind.code,_._0_modifier_cannot_be_used_here.code,_._0_modifier_must_precede_1_modifier.code,_.const_declarations_can_only_be_declared_inside_a_block.code,_.const_declarations_must_be_initialized.code,_.extends_clause_already_seen.code,_.let_declarations_can_only_be_declared_inside_a_block.code,_.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations.code,_.Class_constructor_may_not_be_a_generator.code,_.Class_constructor_may_not_be_an_accessor.code,_.await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code]),HF={diagnostics:Je,sourceMaps:void 0,emittedFiles:void 0,emitSkipped:!0}}}),a8e=gt({\"src/compiler/builderStatePublic.ts\"(){\"use strict\"}});function Ype(e,t,r,i,o,s){let l=[],{emitSkipped:f,diagnostics:d}=e.emit(t,g,i,r,o,s);return{outputFiles:l,emitSkipped:f,diagnostics:d};function g(m,v,S){l.push({name:m,writeByteOrderMark:S,text:v})}}var pm,o8e=gt({\"src/compiler/builderState.ts\"(){\"use strict\";fa(),(e=>{function t(){function Z(U,re,le){let _e={getKeys:ge=>re.get(ge),getValues:ge=>U.get(ge),keys:()=>U.keys(),deleteKey:ge=>{(le||(le=new Set)).add(ge);let X=U.get(ge);return X?(X.forEach(Ve=>i(re,Ve,ge)),U.delete(ge),!0):!1},set:(ge,X)=>{le?.delete(ge);let Ve=U.get(ge);return U.set(ge,X),Ve?.forEach(we=>{X.has(we)||i(re,we,ge)}),X.forEach(we=>{Ve?.has(we)||r(re,we,ge)}),_e}};return _e}return Z(new Map,new Map,void 0)}e.createManyToManyPathMap=t;function r(Z,U,re){let le=Z.get(U);le||(le=new Set,Z.set(U,le)),le.add(re)}function i(Z,U,re){let le=Z.get(U);return le?.delete(re)?(le.size||Z.delete(U),!0):!1}function o(Z){return Zi(Z.declarations,U=>{var re;return(re=Gn(U))==null?void 0:re.resolvedPath})}function s(Z,U){let re=Z.getSymbolAtLocation(U);return re&&o(re)}function l(Z,U,re,le){return Ts(Z.getProjectReferenceRedirect(U)||U,re,le)}function f(Z,U,re){let le;if(U.imports&&U.imports.length>0){let Ve=Z.getTypeChecker();for(let we of U.imports){let ke=s(Ve,we);ke?.forEach(X)}}let _e=ni(U.resolvedPath);if(U.referencedFiles&&U.referencedFiles.length>0)for(let Ve of U.referencedFiles){let we=l(Z,Ve.fileName,_e,re);X(we)}if(U.resolvedTypeReferenceDirectiveNames&&U.resolvedTypeReferenceDirectiveNames.forEach(({resolvedTypeReferenceDirective:Ve})=>{if(!Ve)return;let we=Ve.resolvedFileName,ke=l(Z,we,_e,re);X(ke)}),U.moduleAugmentations.length){let Ve=Z.getTypeChecker();for(let we of U.moduleAugmentations){if(!yo(we))continue;let ke=Ve.getSymbolAtLocation(we);!ke||ge(ke)}}for(let Ve of Z.getTypeChecker().getAmbientModules())Ve.declarations&&Ve.declarations.length>1&&ge(Ve);return le;function ge(Ve){if(!!Ve.declarations)for(let we of Ve.declarations){let ke=Gn(we);ke&&ke!==U&&X(ke.resolvedPath)}}function X(Ve){(le||(le=new Set)).add(Ve)}}function d(Z,U){return U&&!U.referencedMap==!Z}e.canReuseOldState=d;function g(Z,U,re){var le,_e,ge;let X=new Map,Ve=Z.getCompilerOptions(),we=Ss(Ve),ke=Ve.module!==0&&!we?t():void 0,Pe=ke?t():void 0,Ce=d(ke,U);Z.getTypeChecker();for(let Ie of Z.getSourceFiles()){let Be=L.checkDefined(Ie.version,\"Program intended to be used with Builder should have source files with versions set\"),Ne=Ce?(le=U.oldSignatures)==null?void 0:le.get(Ie.resolvedPath):void 0,Le=Ne===void 0?Ce?(_e=U.fileInfos.get(Ie.resolvedPath))==null?void 0:_e.signature:void 0:Ne||void 0;if(ke){let Ye=f(Z,Ie,Z.getCanonicalFileName);if(Ye&&ke.set(Ie.resolvedPath,Ye),Ce){let _t=(ge=U.oldExportedModulesMap)==null?void 0:ge.get(Ie.resolvedPath),ct=_t===void 0?U.exportedModulesMap.getValues(Ie.resolvedPath):_t||void 0;ct&&Pe.set(Ie.resolvedPath,ct)}}X.set(Ie.resolvedPath,{version:Be,signature:Le,affectsGlobalScope:we?void 0:R(Ie)||void 0,impliedFormat:Ie.impliedNodeFormat})}return{fileInfos:X,referencedMap:ke,exportedModulesMap:Pe,useFileVersionAsSignature:!re&&!Ce}}e.create=g;function m(Z){Z.allFilesExcludingDefaultLibraryFile=void 0,Z.allFileNames=void 0}e.releaseCache=m;function v(Z,U,re,le,_e){var ge,X;let Ve=S(Z,U,re,le,_e);return(ge=Z.oldSignatures)==null||ge.clear(),(X=Z.oldExportedModulesMap)==null||X.clear(),Ve}e.getFilesAffectedBy=v;function S(Z,U,re,le,_e){let ge=U.getSourceFileByPath(re);return ge?w(Z,U,ge,le,_e)?(Z.referencedMap?fe:Q)(Z,U,ge,le,_e):[ge]:Je}e.getFilesAffectedByWithOldState=S;function x(Z,U,re){Z.fileInfos.get(re).signature=U,(Z.hasCalledUpdateShapeSignature||(Z.hasCalledUpdateShapeSignature=new Set)).add(re)}e.updateSignatureOfFile=x;function A(Z,U,re,le,_e){Z.emit(U,(ge,X,Ve,we,ke,Pe)=>{L.assert(Fu(ge),`File extension for signature expected to be dts: Got:: ${ge}`),_e(Tq(Z,U,X,le,Pe),ke)},re,!0,void 0,!0)}e.computeDtsSignature=A;function w(Z,U,re,le,_e,ge=Z.useFileVersionAsSignature){var X;if((X=Z.hasCalledUpdateShapeSignature)!=null&&X.has(re.resolvedPath))return!1;let Ve=Z.fileInfos.get(re.resolvedPath),we=Ve.signature,ke;if(!re.isDeclarationFile&&!ge&&A(U,re,le,_e,(Pe,Ce)=>{ke=Pe,ke!==we&&C(Z,re,Ce[0].exportedModulesFromDeclarationEmit)}),ke===void 0&&(ke=re.version,Z.exportedModulesMap&&ke!==we)){(Z.oldExportedModulesMap||(Z.oldExportedModulesMap=new Map)).set(re.resolvedPath,Z.exportedModulesMap.getValues(re.resolvedPath)||!1);let Pe=Z.referencedMap?Z.referencedMap.getValues(re.resolvedPath):void 0;Pe?Z.exportedModulesMap.set(re.resolvedPath,Pe):Z.exportedModulesMap.deleteKey(re.resolvedPath)}return(Z.oldSignatures||(Z.oldSignatures=new Map)).set(re.resolvedPath,we||!1),(Z.hasCalledUpdateShapeSignature||(Z.hasCalledUpdateShapeSignature=new Set)).add(re.resolvedPath),Ve.signature=ke,ke!==we}e.updateShapeSignature=w;function C(Z,U,re){if(!Z.exportedModulesMap)return;(Z.oldExportedModulesMap||(Z.oldExportedModulesMap=new Map)).set(U.resolvedPath,Z.exportedModulesMap.getValues(U.resolvedPath)||!1);let le=P(re);le?Z.exportedModulesMap.set(U.resolvedPath,le):Z.exportedModulesMap.deleteKey(U.resolvedPath)}e.updateExportedModules=C;function P(Z){let U;return Z?.forEach(re=>o(re).forEach(le=>(U??(U=new Set)).add(le))),U}e.getExportedModules=P;function F(Z,U,re){let le=U.getCompilerOptions();if(Ss(le)||!Z.referencedMap||R(re))return B(Z,U);let _e=new Set,ge=[re.resolvedPath];for(;ge.length;){let X=ge.pop();if(!_e.has(X)){_e.add(X);let Ve=Z.referencedMap.getValues(X);if(Ve)for(let we of Ve.keys())ge.push(we)}}return lo(VD(_e.keys(),X=>{var Ve,we;return(we=(Ve=U.getSourceFileByPath(X))==null?void 0:Ve.fileName)!=null?we:X}))}e.getAllDependencies=F;function B(Z,U){if(!Z.allFileNames){let re=U.getSourceFiles();Z.allFileNames=re===Je?Je:re.map(le=>le.fileName)}return Z.allFileNames}function q(Z,U){let re=Z.referencedMap.getKeys(U);return re?lo(re.keys()):[]}e.getReferencedByPaths=q;function W(Z){for(let U of Z.statements)if(!b6(U))return!1;return!0}function Y(Z){return vt(Z.moduleAugmentations,U=>mp(U.parent))}function R(Z){return Y(Z)||!kd(Z)&&!Pf(Z)&&!W(Z)}function ie(Z,U,re){if(Z.allFilesExcludingDefaultLibraryFile)return Z.allFilesExcludingDefaultLibraryFile;let le;re&&_e(re);for(let ge of U.getSourceFiles())ge!==re&&_e(ge);return Z.allFilesExcludingDefaultLibraryFile=le||Je,Z.allFilesExcludingDefaultLibraryFile;function _e(ge){U.isSourceFileDefaultLibrary(ge)||(le||(le=[])).push(ge)}}e.getAllFilesExcludingDefaultLibraryFile=ie;function Q(Z,U,re){let le=U.getCompilerOptions();return le&&Ss(le)?[re]:ie(Z,U,re)}function fe(Z,U,re,le,_e){if(R(re))return ie(Z,U,re);let ge=U.getCompilerOptions();if(ge&&(u_(ge)||Ss(ge)))return[re];let X=new Map;X.set(re.resolvedPath,re);let Ve=q(Z,re.resolvedPath);for(;Ve.length>0;){let we=Ve.pop();if(!X.has(we)){let ke=U.getSourceFileByPath(we);X.set(we,ke),ke&&w(Z,U,ke,le,_e)&&Ve.push(...q(Z,ke.resolvedPath))}}return lo(VD(X.values(),we=>we))}})(pm||(pm={}))}});function cv(e){let t=1;return e.sourceMap&&(t=t|2),e.inlineSourceMap&&(t=t|4),f_(e)&&(t=t|8),e.declarationMap&&(t=t|16),e.emitDeclarationOnly&&(t=t&24),t}function B2(e,t){let r=t&&(Cg(t)?t:cv(t)),i=Cg(e)?e:cv(e);if(r===i)return 0;if(!r||!i)return i;let o=r^i,s=0;return o&7&&(s=i&7),o&24&&(s=s|i&24),s}function s8e(e,t){return e===t||e!==void 0&&t!==void 0&&e.size===t.size&&!SI(e,r=>!t.has(r))}function c8e(e,t){var r,i;let o=pm.create(e,t,!1);o.program=e;let s=e.getCompilerOptions();o.compilerOptions=s;let l=Ss(s);l?s.composite&&t?.outSignature&&l===Ss(t?.compilerOptions)&&(o.outSignature=t.outSignature&&Qpe(s,t.compilerOptions,t.outSignature)):o.semanticDiagnosticsPerFile=new Map,o.changedFilesSet=new Set,o.latestChangedDtsFile=s.composite?t?.latestChangedDtsFile:void 0;let f=pm.canReuseOldState(o.referencedMap,t),d=f?t.compilerOptions:void 0,g=f&&t.semanticDiagnosticsPerFile&&!!o.semanticDiagnosticsPerFile&&!xle(s,d),m=s.composite&&t?.emitSignatures&&!l&&!Cle(s,t.compilerOptions);f?((r=t.changedFilesSet)==null||r.forEach(w=>o.changedFilesSet.add(w)),!l&&((i=t.affectedFilesPendingEmit)==null?void 0:i.size)&&(o.affectedFilesPendingEmit=new Map(t.affectedFilesPendingEmit),o.seenAffectedFiles=new Set),o.programEmitPending=t.programEmitPending):o.buildInfoEmitPending=!0;let v=o.referencedMap,S=f?t.referencedMap:void 0,x=g&&!s.skipLibCheck==!d.skipLibCheck,A=x&&!s.skipDefaultLibCheck==!d.skipDefaultLibCheck;if(o.fileInfos.forEach((w,C)=>{var P;let F,B;if(!f||!(F=t.fileInfos.get(C))||F.version!==w.version||F.impliedFormat!==w.impliedFormat||!s8e(B=v&&v.getValues(C),S&&S.getValues(C))||B&&SI(B,q=>!o.fileInfos.has(q)&&t.fileInfos.has(q)))$pe(o,C);else if(g){let q=e.getSourceFileByPath(C);if(q.isDeclarationFile&&!x||q.hasNoDefaultLib&&!A)return;let W=t.semanticDiagnosticsPerFile.get(C);W&&(o.semanticDiagnosticsPerFile.set(C,t.hasReusableDiagnostic?l8e(W,e):W),o.semanticDiagnosticsFromOldState||(o.semanticDiagnosticsFromOldState=new Set),o.semanticDiagnosticsFromOldState.add(C))}if(m){let q=t.emitSignatures.get(C);q&&((P=o.emitSignatures)!=null?P:o.emitSignatures=new Map).set(C,Qpe(s,t.compilerOptions,q))}}),f&&Ld(t.fileInfos,(w,C)=>o.fileInfos.has(C)?!1:l||w.affectsGlobalScope?!0:(o.buildInfoEmitPending=!0,!1)))pm.getAllFilesExcludingDefaultLibraryFile(o,e,void 0).forEach(w=>$pe(o,w.resolvedPath));else if(d){let w=Ale(s,d)?cv(s):B2(s,d);w!==0&&(l?o.programEmitPending=o.programEmitPending?o.programEmitPending|w:w:(e.getSourceFiles().forEach(C=>{o.changedFilesSet.has(C.resolvedPath)||xq(o,C.resolvedPath,w)}),L.assert(!o.seenAffectedFiles||!o.seenAffectedFiles.size),o.seenAffectedFiles=o.seenAffectedFiles||new Set,o.buildInfoEmitPending=!0))}return l&&!o.changedFilesSet.size&&(f&&(o.bundle=t.bundle),vt(e.getProjectReferences(),w=>!!w.prepend)&&(o.programEmitPending=cv(s))),o}function $pe(e,t){e.changedFilesSet.add(t),e.buildInfoEmitPending=!0,e.programEmitPending=void 0}function Qpe(e,t,r){return!!e.declarationMap==!!t.declarationMap?r:Ta(r)?[r]:r[0]}function l8e(e,t){if(!e.length)return Je;let r;return e.map(o=>{let s=Zpe(o,t,i);s.reportsUnnecessary=o.reportsUnnecessary,s.reportsDeprecated=o.reportDeprecated,s.source=o.source,s.skippedOn=o.skippedOn;let{relatedInformation:l}=o;return s.relatedInformation=l?l.length?l.map(f=>Zpe(f,t,i)):[]:void 0,s});function i(o){return r??(r=ni(_a(Jg(t.getCompilerOptions()),t.getCurrentDirectory()))),Ts(o,r,t.getCanonicalFileName)}}function Zpe(e,t,r){let{file:i}=e;return{...e,file:i?t.getSourceFileByPath(r(i)):void 0}}function u8e(e){pm.releaseCache(e),e.program=void 0}function d8e(e){let t=Ss(e.compilerOptions);return L.assert(!e.changedFilesSet.size||t),{affectedFilesPendingEmit:e.affectedFilesPendingEmit&&new Map(e.affectedFilesPendingEmit),seenEmittedFiles:e.seenEmittedFiles&&new Map(e.seenEmittedFiles),programEmitPending:e.programEmitPending,emitSignatures:e.emitSignatures&&new Map(e.emitSignatures),outSignature:e.outSignature,latestChangedDtsFile:e.latestChangedDtsFile,hasChangedEmitSignature:e.hasChangedEmitSignature,changedFilesSet:t?new Set(e.changedFilesSet):void 0}}function f8e(e,t){e.affectedFilesPendingEmit=t.affectedFilesPendingEmit,e.seenEmittedFiles=t.seenEmittedFiles,e.programEmitPending=t.programEmitPending,e.emitSignatures=t.emitSignatures,e.outSignature=t.outSignature,e.latestChangedDtsFile=t.latestChangedDtsFile,e.hasChangedEmitSignature=t.hasChangedEmitSignature,t.changedFilesSet&&(e.changedFilesSet=t.changedFilesSet)}function eme(e,t){L.assert(!t||!e.affectedFiles||e.affectedFiles[e.affectedFilesIndex-1]!==t||!e.semanticDiagnosticsPerFile.has(t.resolvedPath))}function tme(e,t,r){for(var i,o;;){let{affectedFiles:s}=e;if(s){let g=e.seenAffectedFiles,m=e.affectedFilesIndex;for(;m<s.length;){let v=s[m];if(!g.has(v.resolvedPath))return e.affectedFilesIndex=m,xq(e,v.resolvedPath,cv(e.compilerOptions)),m8e(e,v,t,r),v;m++}e.changedFilesSet.delete(e.currentChangedFilePath),e.currentChangedFilePath=void 0,(i=e.oldSignatures)==null||i.clear(),(o=e.oldExportedModulesMap)==null||o.clear(),e.affectedFiles=void 0}let l=e.changedFilesSet.keys().next();if(l.done)return;let f=L.checkDefined(e.program),d=f.getCompilerOptions();if(Ss(d))return L.assert(!e.semanticDiagnosticsPerFile),f;e.affectedFiles=pm.getFilesAffectedByWithOldState(e,f,l.value,t,r),e.currentChangedFilePath=l.value,e.affectedFilesIndex=0,e.seenAffectedFiles||(e.seenAffectedFiles=new Set)}}function _8e(e,t){var r;if(!!((r=e.affectedFilesPendingEmit)!=null&&r.size)){if(!t)return e.affectedFilesPendingEmit=void 0;e.affectedFilesPendingEmit.forEach((i,o)=>{let s=i&7;s?e.affectedFilesPendingEmit.set(o,s):e.affectedFilesPendingEmit.delete(o)})}}function p8e(e,t){var r;if(!!((r=e.affectedFilesPendingEmit)!=null&&r.size))return Ld(e.affectedFilesPendingEmit,(i,o)=>{var s;let l=e.program.getSourceFileByPath(o);if(!l||!mS(l,e.program)){e.affectedFilesPendingEmit.delete(o);return}let f=(s=e.seenEmittedFiles)==null?void 0:s.get(l.resolvedPath),d=B2(i,f);if(t&&(d=d&24),d)return{affectedFile:l,emitKind:d}})}function nme(e){if(!e.cleanedDiagnosticsOfLibFiles){e.cleanedDiagnosticsOfLibFiles=!0;let t=L.checkDefined(e.program),r=t.getCompilerOptions();mn(t.getSourceFiles(),i=>t.isSourceFileDefaultLibrary(i)&&!iL(i,r,t)&&vq(e,i.resolvedPath))}}function m8e(e,t,r,i){if(vq(e,t.resolvedPath),e.allFilesExcludingDefaultLibraryFile===e.affectedFiles){nme(e),pm.updateShapeSignature(e,L.checkDefined(e.program),t,r,i);return}e.compilerOptions.assumeChangesOnlyAffectDirectDependencies||h8e(e,t,r,i)}function WF(e,t,r,i){if(vq(e,t),!e.changedFilesSet.has(t)){let o=L.checkDefined(e.program),s=o.getSourceFileByPath(t);s&&(pm.updateShapeSignature(e,o,s,r,i,!0),f_(e.compilerOptions)&&xq(e,t,e.compilerOptions.declarationMap?24:8))}}function vq(e,t){return e.semanticDiagnosticsFromOldState?(e.semanticDiagnosticsFromOldState.delete(t),e.semanticDiagnosticsPerFile.delete(t),!e.semanticDiagnosticsFromOldState.size):!0}function rme(e,t){let r=L.checkDefined(e.oldSignatures).get(t)||void 0;return L.checkDefined(e.fileInfos.get(t)).signature!==r}function bq(e,t,r,i){var o;return(o=e.fileInfos.get(t))!=null&&o.affectsGlobalScope?(pm.getAllFilesExcludingDefaultLibraryFile(e,e.program,void 0).forEach(s=>WF(e,s.resolvedPath,r,i)),nme(e),!0):!1}function h8e(e,t,r,i){var o;if(!e.exportedModulesMap||!e.changedFilesSet.has(t.resolvedPath)||!rme(e,t.resolvedPath))return;if(u_(e.compilerOptions)){let l=new Map;l.set(t.resolvedPath,!0);let f=pm.getReferencedByPaths(e,t.resolvedPath);for(;f.length>0;){let d=f.pop();if(!l.has(d)){if(l.set(d,!0),bq(e,d,r,i))return;if(WF(e,d,r,i),rme(e,d)){let g=L.checkDefined(e.program).getSourceFileByPath(d);f.push(...pm.getReferencedByPaths(e,g.resolvedPath))}}}}let s=new Set;(o=e.exportedModulesMap.getKeys(t.resolvedPath))==null||o.forEach(l=>{if(bq(e,l,r,i))return!0;let f=e.referencedMap.getKeys(l);return f&&SI(f,d=>ime(e,d,s,r,i))})}function ime(e,t,r,i,o){var s,l;if(!!_0(r,t)){if(bq(e,t,i,o))return!0;WF(e,t,i,o),(s=e.exportedModulesMap.getKeys(t))==null||s.forEach(f=>ime(e,f,r,i,o)),(l=e.referencedMap.getKeys(t))==null||l.forEach(f=>!r.has(f)&&WF(e,f,i,o))}}function Eq(e,t,r){return Qi(g8e(e,t,r),L.checkDefined(e.program).getProgramDiagnostics(t))}function g8e(e,t,r){let i=t.resolvedPath;if(e.semanticDiagnosticsPerFile){let s=e.semanticDiagnosticsPerFile.get(i);if(s)return MF(s,e.compilerOptions)}let o=L.checkDefined(e.program).getBindAndCheckDiagnostics(t,r);return e.semanticDiagnosticsPerFile&&e.semanticDiagnosticsPerFile.set(i,o),MF(o,e.compilerOptions)}function ame(e){return!!Ss(e.options||{})}function y8e(e,t){var r,i,o;let s=L.checkDefined(e.program).getCurrentDirectory(),l=ni(_a(Jg(e.compilerOptions),s)),f=e.latestChangedDtsFile?W(e.latestChangedDtsFile):void 0,d=[],g=new Map,m=[];if(Ss(e.compilerOptions)){let Z=lo(e.fileInfos.entries(),([X,Ve])=>{let we=R(X);return Q(X,we),Ve.impliedFormat?{version:Ve.version,impliedFormat:Ve.impliedFormat,signature:void 0,affectsGlobalScope:void 0}:Ve.version}),U={fileNames:d,fileInfos:Z,root:m,options:fe(e.compilerOptions),outSignature:e.outSignature,latestChangedDtsFile:f,pendingEmit:e.programEmitPending?e.programEmitPending===cv(e.compilerOptions)?!1:e.programEmitPending:void 0},{js:re,dts:le,commonSourceDirectory:_e,sourceFiles:ge}=t;return e.bundle=t={commonSourceDirectory:_e,sourceFiles:ge,js:re||(e.compilerOptions.emitDeclarationOnly||(r=e.bundle)==null?void 0:r.js),dts:le||(f_(e.compilerOptions)?(i=e.bundle)==null?void 0:i.dts:void 0)},fN(U,t)}let v,S,x,A=lo(e.fileInfos.entries(),([Z,U])=>{var re,le;let _e=R(Z);Q(Z,_e),L.assert(d[_e-1]===Y(Z));let ge=(re=e.oldSignatures)==null?void 0:re.get(Z),X=ge!==void 0?ge||void 0:U.signature;if(e.compilerOptions.composite){let Ve=e.program.getSourceFileByPath(Z);if(!Pf(Ve)&&mS(Ve,e.program)){let we=(le=e.emitSignatures)==null?void 0:le.get(Z);we!==X&&(x||(x=[])).push(we===void 0?_e:[_e,!Ta(we)&&we[0]===X?Je:we])}}return U.version===X?U.affectsGlobalScope||U.impliedFormat?{version:U.version,signature:void 0,affectsGlobalScope:U.affectsGlobalScope,impliedFormat:U.impliedFormat}:U.version:X!==void 0?ge===void 0?U:{version:U.version,signature:X,affectsGlobalScope:U.affectsGlobalScope,impliedFormat:U.impliedFormat}:{version:U.version,signature:!1,affectsGlobalScope:U.affectsGlobalScope,impliedFormat:U.impliedFormat}}),w;e.referencedMap&&(w=lo(e.referencedMap.keys()).sort(su).map(Z=>[R(Z),ie(e.referencedMap.getValues(Z))]));let C;e.exportedModulesMap&&(C=Zi(lo(e.exportedModulesMap.keys()).sort(su),Z=>{var U;let re=(U=e.oldExportedModulesMap)==null?void 0:U.get(Z);if(re===void 0)return[R(Z),ie(e.exportedModulesMap.getValues(Z))];if(re)return[R(Z),ie(re)]}));let P;if(e.semanticDiagnosticsPerFile)for(let Z of lo(e.semanticDiagnosticsPerFile.keys()).sort(su)){let U=e.semanticDiagnosticsPerFile.get(Z);(P||(P=[])).push(U.length?[R(Z),b8e(U,Y)]:R(Z))}let F;if((o=e.affectedFilesPendingEmit)!=null&&o.size){let Z=cv(e.compilerOptions),U=new Set;for(let re of lo(e.affectedFilesPendingEmit.keys()).sort(su))if(_0(U,re)){let le=e.program.getSourceFileByPath(re);if(!le||!mS(le,e.program))continue;let _e=R(re),ge=e.affectedFilesPendingEmit.get(re);(F||(F=[])).push(ge===Z?_e:ge===8?[_e]:[_e,ge])}}let B;if(e.changedFilesSet.size)for(let Z of lo(e.changedFilesSet.keys()).sort(su))(B||(B=[])).push(R(Z));let q={fileNames:d,fileInfos:A,root:m,options:fe(e.compilerOptions),fileIdsList:v,referencedMap:w,exportedModulesMap:C,semanticDiagnosticsPerFile:P,affectedFilesPendingEmit:F,changeFileSet:B,emitSignatures:x,latestChangedDtsFile:f};return fN(q,t);function W(Z){return Y(_a(Z,s))}function Y(Z){return S0(Xp(l,Z,e.program.getCanonicalFileName))}function R(Z){let U=g.get(Z);return U===void 0&&(d.push(Y(Z)),g.set(Z,U=d.length)),U}function ie(Z){let U=lo(Z.keys(),R).sort(Es),re=U.join(),le=S?.get(re);return le===void 0&&((v||(v=[])).push(U),(S||(S=new Map)).set(re,le=v.length)),le}function Q(Z,U){let re=e.program.getSourceFile(Z);if(!e.program.getFileIncludeReasons().get(re.path).some(X=>X.kind===0))return;if(!m.length)return m.push(U);let le=m[m.length-1],_e=ba(le);if(_e&&le[1]===U-1)return le[1]=U;if(_e||m.length===1||le!==U-1)return m.push(U);let ge=m[m.length-2];return!Cg(ge)||ge!==le-1?m.push(U):(m[m.length-2]=[ge,U],m.length=m.length-1)}function fe(Z){let U,{optionsNameMap:re}=R2();for(let le of bh(Z).sort(su)){let _e=re.get(le.toLowerCase());_e?.affectsBuildInfo&&((U||(U={}))[le]=v8e(_e,Z[le],W))}return U}}function v8e(e,t,r){if(e){if(L.assert(e.type!==\"listOrElement\"),e.type===\"list\"){let i=t;if(e.element.isFilePath&&i.length)return i.map(r)}else if(e.isFilePath)return r(t)}return t}function b8e(e,t){return L.assert(!!e.length),e.map(r=>{let i=ome(r,t);i.reportsUnnecessary=r.reportsUnnecessary,i.reportDeprecated=r.reportsDeprecated,i.source=r.source,i.skippedOn=r.skippedOn;let{relatedInformation:o}=r;return i.relatedInformation=o?o.length?o.map(s=>ome(s,t)):[]:void 0,i})}function ome(e,t){let{file:r}=e;return{...e,file:r?t(r.resolvedPath):void 0}}function zF(e,t,r,i,o,s){let l,f,d;return e===void 0?(L.assert(t===void 0),l=r,d=i,L.assert(!!d),f=d.getProgram()):ba(e)?(d=i,f=PF({rootNames:e,options:t,host:r,oldProgram:d&&d.getProgramOrUndefined(),configFileParsingDiagnostics:o,projectReferences:s}),l=r):(f=e,l=t,d=r,o=i),{host:l,newProgram:f,oldProgram:d,configFileParsingDiagnostics:o||Je}}function sme(e,t){return t?.sourceMapUrlPos!==void 0?e.substring(0,t.sourceMapUrlPos):e}function Tq(e,t,r,i,o){var s,l;r=sme(r,o);let f;return(s=o?.diagnostics)!=null&&s.length&&(r+=o.diagnostics.map(m=>`${g(m)}${rw[m.category]}${m.code}: ${d(m.messageText)}`).join(`\n`)),((l=i.createHash)!=null?l:ow)(r);function d(m){return Ta(m)?m:m===void 0?\"\":m.next?m.messageText+m.next.map(d).join(`\n`):m.messageText}function g(m){return m.file.resolvedPath===t.resolvedPath?`(${m.start},${m.length})`:(f===void 0&&(f=ni(t.resolvedPath)),`${S0(Xp(f,m.file.resolvedPath,e.getCanonicalFileName))}(${m.start},${m.length})`)}}function $T(e,t,r){var i;return((i=t.createHash)!=null?i:ow)(sme(e,r))}function Sq(e,{newProgram:t,host:r,oldProgram:i,configFileParsingDiagnostics:o}){let s=i&&i.getState();if(s&&t===s.program&&o===t.getConfigFileParsingDiagnostics())return t=void 0,s=void 0,i;let l=c8e(t,s);t.getBuildInfo=w=>y8e(l,w),t=void 0,i=void 0,s=void 0;let f=()=>l,d=Cq(f,o);return d.getState=f,d.saveEmitState=()=>d8e(l),d.restoreEmitState=w=>f8e(l,w),d.hasChangedEmitSignature=()=>!!l.hasChangedEmitSignature,d.getAllDependencies=w=>pm.getAllDependencies(l,L.checkDefined(l.program),w),d.getSemanticDiagnostics=A,d.emit=S,d.releaseProgram=()=>u8e(l),e===0?d.getSemanticDiagnosticsOfNextAffectedFile=x:e===1?(d.getSemanticDiagnosticsOfNextAffectedFile=x,d.emitNextAffectedFile=m,d.emitBuildInfo=g):Sa(),d;function g(w,C){if(l.buildInfoEmitPending){let P=L.checkDefined(l.program).emitBuildInfo(w||ho(r,r.writeFile),C);return l.buildInfoEmitPending=!1,P}return HF}function m(w,C,P,F){var B,q,W,Y,R;let ie=tme(l,C,r),Q=cv(l.compilerOptions),fe=P?Q&24:Q;if(!ie)if(Ss(l.compilerOptions)){if(!l.programEmitPending||(fe=l.programEmitPending,P&&(fe=fe&24),!fe))return;ie=l.program}else{let re=p8e(l,P);if(!re){if(!l.buildInfoEmitPending)return;let le=l.program,_e=le.emitBuildInfo(w||ho(r,r.writeFile),C);return l.buildInfoEmitPending=!1,{result:_e,affected:le}}({affectedFile:ie,emitKind:fe}=re)}let Z;fe&7&&(Z=0),fe&24&&(Z=Z===void 0?1:void 0),ie===l.program&&(l.programEmitPending=l.changedFilesSet.size?B2(Q,fe):l.programEmitPending?B2(l.programEmitPending,fe):void 0);let U=l.program.emit(ie===l.program?void 0:ie,v(w,F),C,Z,F);if(ie!==l.program){let re=ie;l.seenAffectedFiles.add(re.resolvedPath),l.affectedFilesIndex!==void 0&&l.affectedFilesIndex++,l.buildInfoEmitPending=!0;let le=((B=l.seenEmittedFiles)==null?void 0:B.get(re.resolvedPath))||0;((q=l.seenEmittedFiles)!=null?q:l.seenEmittedFiles=new Map).set(re.resolvedPath,fe|le);let _e=((W=l.affectedFilesPendingEmit)==null?void 0:W.get(re.resolvedPath))||Q,ge=B2(_e,fe|le);ge?((Y=l.affectedFilesPendingEmit)!=null?Y:l.affectedFilesPendingEmit=new Map).set(re.resolvedPath,ge):(R=l.affectedFilesPendingEmit)==null||R.delete(re.resolvedPath)}else l.changedFilesSet.clear();return{result:U,affected:ie}}function v(w,C){return f_(l.compilerOptions)?(P,F,B,q,W,Y)=>{var R,ie,Q,fe,Z,U,re;if(Fu(P))if(Ss(l.compilerOptions)){if(l.compilerOptions.composite){let _e=le(l.outSignature,void 0);if(!_e)return;l.outSignature=_e}}else{L.assert(W?.length===1);let _e;if(!C){let ge=W[0],X=l.fileInfos.get(ge.resolvedPath);if(X.signature===ge.version){let Ve=Tq(l.program,ge,F,r,Y);(R=Y?.diagnostics)!=null&&R.length||(_e=Ve),Ve!==ge.version&&(r.storeFilesChangingSignatureDuringEmit&&((ie=l.filesChangingSignature)!=null?ie:l.filesChangingSignature=new Set).add(ge.resolvedPath),l.exportedModulesMap&&pm.updateExportedModules(l,ge,ge.exportedModulesFromDeclarationEmit),l.affectedFiles?(((Q=l.oldSignatures)==null?void 0:Q.get(ge.resolvedPath))===void 0&&((fe=l.oldSignatures)!=null?fe:l.oldSignatures=new Map).set(ge.resolvedPath,X.signature||!1),X.signature=Ve):(X.signature=Ve,(Z=l.oldExportedModulesMap)==null||Z.clear()))}}if(l.compilerOptions.composite){let ge=W[0].resolvedPath;if(_e=le((U=l.emitSignatures)==null?void 0:U.get(ge),_e),!_e)return;((re=l.emitSignatures)!=null?re:l.emitSignatures=new Map).set(ge,_e)}}w?w(P,F,B,q,W,Y):r.writeFile?r.writeFile(P,F,B,q,W,Y):l.program.writeFile(P,F,B,q,W,Y);function le(_e,ge){let X=!_e||Ta(_e)?_e:_e[0];if(ge??(ge=$T(F,r,Y)),ge===X){if(_e===X)return;Y?Y.differsOnlyInMap=!0:Y={differsOnlyInMap:!0}}else l.hasChangedEmitSignature=!0,l.latestChangedDtsFile=P;return ge}}:w||ho(r,r.writeFile)}function S(w,C,P,F,B){e===1&&eme(l,w);let q=dq(d,w,C,P);if(q)return q;if(!w)if(e===1){let W=[],Y=!1,R,ie=[],Q;for(;Q=m(C,P,F,B);)Y=Y||Q.result.emitSkipped,R=si(R,Q.result.diagnostics),ie=si(ie,Q.result.emittedFiles),W=si(W,Q.result.sourceMaps);return{emitSkipped:Y,diagnostics:R||Je,emittedFiles:ie,sourceMaps:W}}else _8e(l,F);return L.checkDefined(l.program).emit(w,v(C,B),P,F,B)}function x(w,C){for(;;){let P=tme(l,w,r),F;if(P)if(P!==l.program){let B=P;if((!C||!C(B))&&(F=Eq(l,B,w)),l.seenAffectedFiles.add(B.resolvedPath),l.affectedFilesIndex++,l.buildInfoEmitPending=!0,!F)continue}else F=l.program.getSemanticDiagnostics(void 0,w),l.changedFilesSet.clear(),l.programEmitPending=cv(l.compilerOptions);else return;return{result:F,affected:P}}}function A(w,C){eme(l,w);let P=L.checkDefined(l.program).getCompilerOptions();if(Ss(P))return L.assert(!l.semanticDiagnosticsPerFile),L.checkDefined(l.program).getSemanticDiagnostics(w,C);if(w)return Eq(l,w,C);for(;x(C););let F;for(let B of L.checkDefined(l.program).getSourceFiles())F=si(F,Eq(l,B,C));return F||Je}}function xq(e,t,r){var i,o;let s=((i=e.affectedFilesPendingEmit)==null?void 0:i.get(t))||0;((o=e.affectedFilesPendingEmit)!=null?o:e.affectedFilesPendingEmit=new Map).set(t,s|r)}function cme(e){return Ta(e)?{version:e,signature:e,affectsGlobalScope:void 0,impliedFormat:void 0}:Ta(e.signature)?e:{version:e.version,signature:e.signature===!1?void 0:e.version,affectsGlobalScope:e.affectsGlobalScope,impliedFormat:e.impliedFormat}}function lme(e,t){return Cg(e)?t:e[1]||8}function ume(e,t){return e||cv(t||{})}function dme(e,t,r){var i,o,s,l;let f=e.program,d=ni(_a(t,r.getCurrentDirectory())),g=Dl(r.useCaseSensitiveFileNames()),m,v=(i=f.fileNames)==null?void 0:i.map(A),S,x=f.latestChangedDtsFile?w(f.latestChangedDtsFile):void 0;if(ame(f)){let B=new Map;f.fileInfos.forEach((q,W)=>{let Y=C(W+1);B.set(Y,Ta(q)?{version:q,signature:void 0,affectsGlobalScope:void 0,impliedFormat:void 0}:q)}),m={fileInfos:B,compilerOptions:f.options?SJ(f.options,w):{},latestChangedDtsFile:x,outSignature:f.outSignature,programEmitPending:f.pendingEmit===void 0?void 0:ume(f.pendingEmit,f.options),bundle:e.bundle}}else{S=(o=f.fileIdsList)==null?void 0:o.map(Y=>new Set(Y.map(C)));let B=new Map,q=((s=f.options)==null?void 0:s.composite)&&!Ss(f.options)?new Map:void 0;f.fileInfos.forEach((Y,R)=>{let ie=C(R+1),Q=cme(Y);B.set(ie,Q),q&&Q.signature&&q.set(ie,Q.signature)}),(l=f.emitSignatures)==null||l.forEach(Y=>{if(Cg(Y))q.delete(C(Y));else{let R=C(Y[0]);q.set(R,!Ta(Y[1])&&!Y[1].length?[q.get(R)]:Y[1])}});let W=f.affectedFilesPendingEmit?cv(f.options||{}):void 0;m={fileInfos:B,compilerOptions:f.options?SJ(f.options,w):{},referencedMap:F(f.referencedMap),exportedModulesMap:F(f.exportedModulesMap),semanticDiagnosticsPerFile:f.semanticDiagnosticsPerFile&&p0(f.semanticDiagnosticsPerFile,Y=>C(Cg(Y)?Y:Y[0]),Y=>Cg(Y)?Je:Y[1]),hasReusableDiagnostic:!0,affectedFilesPendingEmit:f.affectedFilesPendingEmit&&p0(f.affectedFilesPendingEmit,Y=>C(Cg(Y)?Y:Y[0]),Y=>lme(Y,W)),changedFilesSet:new Set(on(f.changeFileSet,C)),latestChangedDtsFile:x,emitSignatures:q?.size?q:void 0}}return{getState:()=>m,saveEmitState:Ba,restoreEmitState:Ba,getProgram:Sa,getProgramOrUndefined:Qv,releaseProgram:Ba,getCompilerOptions:()=>m.compilerOptions,getSourceFile:Sa,getSourceFiles:Sa,getOptionsDiagnostics:Sa,getGlobalDiagnostics:Sa,getConfigFileParsingDiagnostics:Sa,getSyntacticDiagnostics:Sa,getDeclarationDiagnostics:Sa,getSemanticDiagnostics:Sa,emit:Sa,getAllDependencies:Sa,getCurrentDirectory:Sa,emitNextAffectedFile:Sa,getSemanticDiagnosticsOfNextAffectedFile:Sa,emitBuildInfo:Sa,close:Ba,hasChangedEmitSignature:m0};function A(B){return Ts(B,d,g)}function w(B){return _a(B,d)}function C(B){return v[B-1]}function P(B){return S[B-1]}function F(B){if(!B)return;let q=pm.createManyToManyPathMap();return B.forEach(([W,Y])=>q.set(C(W),P(Y))),q}}function Aq(e,t,r){let i=ni(_a(t,r.getCurrentDirectory())),o=Dl(r.useCaseSensitiveFileNames()),s=new Map,l=0,f=[];return e.fileInfos.forEach((d,g)=>{let m=Ts(e.fileNames[g],i,o),v=Ta(d)?d:d.version;if(s.set(m,v),l<e.root.length){let S=e.root[l],x=g+1;ba(S)?S[0]<=x&&x<=S[1]&&(f.push(m),S[1]===x&&l++):S===x&&(f.push(m),l++)}}),{fileInfos:s,roots:f}}function Cq(e,t){return{getState:Sa,saveEmitState:Ba,restoreEmitState:Ba,getProgram:r,getProgramOrUndefined:()=>e().program,releaseProgram:()=>e().program=void 0,getCompilerOptions:()=>e().compilerOptions,getSourceFile:i=>r().getSourceFile(i),getSourceFiles:()=>r().getSourceFiles(),getOptionsDiagnostics:i=>r().getOptionsDiagnostics(i),getGlobalDiagnostics:i=>r().getGlobalDiagnostics(i),getConfigFileParsingDiagnostics:()=>t,getSyntacticDiagnostics:(i,o)=>r().getSyntacticDiagnostics(i,o),getDeclarationDiagnostics:(i,o)=>r().getDeclarationDiagnostics(i,o),getSemanticDiagnostics:(i,o)=>r().getSemanticDiagnostics(i,o),emit:(i,o,s,l,f)=>r().emit(i,o,s,l,f),emitBuildInfo:(i,o)=>r().emitBuildInfo(i,o),getAllDependencies:Sa,getCurrentDirectory:()=>r().getCurrentDirectory(),close:Ba};function r(){return L.checkDefined(e().program)}}var Iq,Lq,E8e=gt({\"src/compiler/builder.ts\"(){\"use strict\";fa(),fa(),Iq=(e=>(e[e.None=0]=\"None\",e[e.Js=1]=\"Js\",e[e.JsMap=2]=\"JsMap\",e[e.JsInlineMap=4]=\"JsInlineMap\",e[e.Dts=8]=\"Dts\",e[e.DtsMap=16]=\"DtsMap\",e[e.AllJs=7]=\"AllJs\",e[e.AllDts=24]=\"AllDts\",e[e.All=31]=\"All\",e))(Iq||{}),Lq=(e=>(e[e.SemanticDiagnosticsBuilderProgram=0]=\"SemanticDiagnosticsBuilderProgram\",e[e.EmitAndSemanticDiagnosticsBuilderProgram=1]=\"EmitAndSemanticDiagnosticsBuilderProgram\",e))(Lq||{})}});function T8e(e,t,r,i,o,s){return Sq(0,zF(e,t,r,i,o,s))}function kq(e,t,r,i,o,s){return Sq(1,zF(e,t,r,i,o,s))}function S8e(e,t,r,i,o,s){let{newProgram:l,configFileParsingDiagnostics:f}=zF(e,t,r,i,o,s);return Cq(()=>({program:l,compilerOptions:l.getCompilerOptions()}),f)}var x8e=gt({\"src/compiler/builderPublic.ts\"(){\"use strict\";fa()}});function Dq(e){return Oc(e,\"/node_modules/.staging\")?mA(e,\"/.staging\"):vt(dw,t=>jl(e,t))?void 0:e}function bN(e){let t=_p(e);if(e.length===t)return!1;let r=e.indexOf(_s,t);if(r===-1)return!1;let i=e.substring(t,r+1),o=t>1||e.charCodeAt(0)!==47;if(o&&e.search(/[a-zA-Z]:/)!==0&&i.search(/[a-zA-Z]\\$\\//)===0){if(r=e.indexOf(_s,r+1),r===-1)return!1;i=e.substring(t+i.length,r+1)}if(o&&i.search(/users\\//i)!==0)return!0;for(let s=r+1,l=2;l>0;l--)if(s=e.indexOf(_s,s)+1,s===0)return!1;return!0}function fme(e,t,r){let i,o,s,l=Of(),f=new Set,d=new Set,g=new Map,m=new Map,v=!1,S,x,A,w,C,P=zu(()=>e.getCurrentDirectory()),F=e.getCachedDirectoryStructureHost(),B=new Map,q=Y3(P(),e.getCanonicalFileName,e.getCompilationSettings()),W=new Map,Y=$3(P(),e.getCanonicalFileName,e.getCompilationSettings(),q.getPackageJsonInfoCache()),R=[\".ts\",\".tsx\",\".js\",\".jsx\",\".json\"],ie=new Map,Q=new Map,fe=new Map,Z=t&&cT(_a(t,P())),U=Z&&e.toPath(Z),re=U!==void 0?U.split(_s).length:0,le=new Map;return{getModuleResolutionCache:()=>q,startRecordingFilesWithChangedResolutions:we,finishRecordingFilesWithChangedResolutions:ke,startCachingPerDirectoryResolution:Ie,finishCachingPerDirectoryResolution:Be,resolveModuleNameLiterals:ct,resolveTypeReferenceDirectiveReferences:_t,resolveSingleModuleNameWithoutWatching:Rt,removeResolutionsFromProjectReferenceRedirects:nn,removeResolutionsOfFile:Dt,hasChangedAutomaticTypeDirectiveNames:()=>v,invalidateResolutionOfFile:An,invalidateResolutionsOfFailedLookupLocations:ri,setFilesWithInvalidatedNonRelativeUnresolvedImports:Kn,createHasInvalidatedResolutions:Ce,isFileWithInvalidatedNonRelativeUnresolvedImports:Pe,updateTypeRootsWatch:at,closeTypeRootsWatch:dr,clear:Ve};function _e(ve){return ve.resolvedModule}function ge(ve){return ve.resolvedTypeReferenceDirective}function X(ve,nt){return ve===void 0||nt.length<=ve.length?!1:na(nt,ve)&&nt[ve.length]===_s}function Ve(){Ef(Q,_m),Ef(fe,_m),ie.clear(),l.clear(),dr(),B.clear(),W.clear(),g.clear(),f.clear(),d.clear(),A=void 0,w=void 0,C=void 0,x=void 0,S=void 0,q.clear(),Y.clear(),q.update(e.getCompilationSettings()),Y.update(e.getCompilationSettings()),m.clear(),v=!1}function we(){i=[]}function ke(){let ve=i;return i=void 0,ve}function Pe(ve){if(!s)return!1;let nt=s.get(ve);return!!nt&&!!nt.length}function Ce(ve){ri();let nt=o;return o=void 0,ce=>ve(ce)||!!nt?.has(ce)||Pe(ce)}function Ie(){q.clearAllExceptPackageJsonInfoCache(),Y.clearAllExceptPackageJsonInfoCache(),l.forEach($n),l.clear()}function Be(ve,nt){s=void 0,l.forEach($n),l.clear(),ve!==nt&&(ve?.getSourceFiles().forEach(ce=>{var $,ue,G;let Oe=kd(ce)&&(ue=($=ce.packageJsonLocations)==null?void 0:$.length)!=null?ue:0,je=(G=m.get(ce.path))!=null?G:Je;for(let Ge=je.length;Ge<Oe;Ge++)Gt(ce.packageJsonLocations[Ge],!1);if(je.length>Oe)for(let Ge=Oe;Ge<je.length;Ge++)fe.get(je[Ge]).files--;Oe?m.set(ce.path,ce.packageJsonLocations):m.delete(ce.path)}),m.forEach((ce,$)=>{ve?.getSourceFileByPath($)||(ce.forEach(ue=>fe.get(ue).files--),m.delete($))})),Q.forEach((ce,$)=>{ce.refCount===0&&(Q.delete($),ce.watcher.close())}),fe.forEach((ce,$)=>{ce.files===0&&ce.resolutions===0&&(fe.delete($),ce.watcher.close())}),v=!1}function Ne(ve,nt,ce,$,ue){var G;let Oe=((G=e.getCompilerHost)==null?void 0:G.call(e))||e,je=GL(ve,nt,ce,Oe,q,$,ue);if(!e.getGlobalCache)return je;let Ge=e.getGlobalCache();if(Ge!==void 0&&!fl(ve)&&!(je.resolvedModule&&y4(je.resolvedModule.extension))){let{resolvedModule:kt,failedLookupLocations:Kt,affectingLocations:ln,resolutionDiagnostics:ir}=s_e(L.checkDefined(e.globalCacheResolutionModuleName)(ve),e.projectName,ce,Oe,Ge,q);if(kt)return je.resolvedModule=kt,je.failedLookupLocations=P2(je.failedLookupLocations,Kt),je.affectingLocations=P2(je.affectingLocations,ln),je.resolutionDiagnostics=P2(je.resolutionDiagnostics,ir),je}return je}function Le(ve,nt,ce){return{nameAndMode:ZL,resolve:($,ue)=>Ne($,ve,ce,nt,ue)}}function Ye({entries:ve,containingFile:nt,containingSourceFile:ce,redirectedReference:$,options:ue,perFileCache:G,reusedNames:Oe,loader:je,getResolutionWithResolvedFileName:Ge,shouldRetryResolution:kt,logChanges:Kt}){var ln;let ir=e.toPath(nt),ae=G.get(ir)||G.set(ir,zT()).get(ir),rt=[],Ot=Kt&&Pe(ir),Ke=e.getCurrentProgram(),oe=Ke&&Ke.getResolvedProjectReferenceToRedirect(nt),pe=oe?!$||$.sourceFile.path!==oe.sourceFile.path:!!$,z=zT();for(let j of ve){let yt=je.nameAndMode.getName(j),lt=je.nameAndMode.getMode(j,ce),Qe=ae.get(yt,lt);if(!z.has(yt,lt)&&pe||!Qe||Qe.isInvalidated||Ot&&!fl(yt)&&kt(Qe)){let Vt=Qe;Qe=je.resolve(yt,lt),e.onDiscoveredSymlink&&A8e(Qe)&&e.onDiscoveredSymlink(),ae.set(yt,lt,Qe),tn(yt,Qe,ir,Ge),Vt&&Ni(Vt,ir,Ge),Kt&&i&&!Te(Vt,Qe)&&(i.push(ir),Kt=!1)}else{let Vt=((ln=e.getCompilerHost)==null?void 0:ln.call(e))||e;if(ov(ue,Vt)&&!z.has(yt,lt)){let Hn=Ge(Qe);Xi(Vt,G===B?Hn?.resolvedFileName?Hn.packageId?_.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3:_.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_successfully_resolved_to_2:_.Reusing_resolution_of_module_0_from_1_of_old_program_it_was_not_resolved:Hn?.resolvedFileName?Hn.packageId?_.Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved_to_2_with_Package_ID_3:_.Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_successfully_resolved_to_2:_.Reusing_resolution_of_type_reference_directive_0_from_1_of_old_program_it_was_not_resolved,yt,nt,Hn?.resolvedFileName,Hn?.packageId&&gT(Hn.packageId))}}L.assert(Qe!==void 0&&!Qe.isInvalidated),z.set(yt,lt,!0),rt.push(Qe)}return Oe?.forEach(j=>z.set(je.nameAndMode.getName(j),je.nameAndMode.getMode(j,ce),!0)),ae.size()!==z.size()&&ae.forEach((j,yt,lt)=>{z.has(yt,lt)||(Ni(j,ir,Ge),ae.delete(yt,lt))}),rt;function Te(j,yt){if(j===yt)return!0;if(!j||!yt)return!1;let lt=Ge(j),Qe=Ge(yt);return lt===Qe?!0:!lt||!Qe?!1:lt.resolvedFileName===Qe.resolvedFileName}}function _t(ve,nt,ce,$,ue,G){var Oe;return Ye({entries:ve,containingFile:nt,containingSourceFile:ue,redirectedReference:ce,options:$,reusedNames:G,perFileCache:W,loader:OF(nt,ce,$,((Oe=e.getCompilerHost)==null?void 0:Oe.call(e))||e,Y),getResolutionWithResolvedFileName:ge,shouldRetryResolution:je=>je.resolvedTypeReferenceDirective===void 0})}function ct(ve,nt,ce,$,ue,G){return Ye({entries:ve,containingFile:nt,containingSourceFile:ue,redirectedReference:ce,options:$,reusedNames:G,perFileCache:B,loader:Le(nt,ce,$),getResolutionWithResolvedFileName:_e,shouldRetryResolution:Oe=>!Oe.resolvedModule||!jR(Oe.resolvedModule.extension),logChanges:r})}function Rt(ve,nt){let ce=e.toPath(nt),$=B.get(ce),ue=$?.get(ve,void 0);return ue&&!ue.isInvalidated?ue:Ne(ve,nt,e.getCompilationSettings())}function We(ve){return Oc(ve,\"/node_modules/@types\")}function qe(ve,nt){if(X(U,nt)){ve=qp(ve)?So(ve):_a(ve,P());let ce=nt.split(_s),$=ve.split(_s);return L.assert($.length===ce.length,`FailedLookup: ${ve} failedLookupLocationPath: ${nt}`),ce.length>re+1?{dir:$.slice(0,re+1).join(_s),dirPath:ce.slice(0,re+1).join(_s)}:{dir:Z,dirPath:U,nonRecursive:!1}}return zt(ni(_a(ve,P())),ni(nt))}function zt(ve,nt){for(;KS(nt);)ve=ni(ve),nt=ni(nt);if(H8(nt))return bN(ni(nt))?{dir:ve,dirPath:nt}:void 0;let ce=!0,$,ue;if(U!==void 0)for(;!X(nt,U);){let G=ni(nt);if(G===nt)break;ce=!1,$=nt,ue=ve,nt=G,ve=ni(ve)}return bN(nt)?{dir:ue||ve,dirPath:$||nt,nonRecursive:ce}:void 0}function Qt(ve){return $c(ve,R)}function tn(ve,nt,ce,$){var ue,G;if(nt.refCount)nt.refCount++,L.assertIsDefined(nt.files);else{nt.refCount=1,L.assert(!((ue=nt.files)!=null&&ue.size)),fl(ve)?kn(nt):l.add(ve,nt);let Oe=$(nt);if(Oe&&Oe.resolvedFileName){let je=e.toPath(Oe.resolvedFileName),Ge=g.get(je);Ge||g.set(je,Ge=new Set),Ge.add(nt)}}((G=nt.files)!=null?G:nt.files=new Set).add(ce)}function kn(ve){L.assert(!!ve.refCount);let{failedLookupLocations:nt,affectingLocations:ce}=ve;if(!nt?.length&&!ce?.length)return;nt?.length&&f.add(ve);let $=!1;if(nt){for(let ue of nt){let G=e.toPath(ue),Oe=qe(ue,G);if(Oe){let{dir:je,dirPath:Ge,nonRecursive:kt}=Oe;if(!Qt(G)){let Kt=ie.get(G)||0;ie.set(G,Kt+1)}Ge===U?(L.assert(!kt),$=!0):ui(je,Ge,kt)}}$&&ui(Z,U,!0)}_n(ve,!nt?.length)}function _n(ve,nt){L.assert(!!ve.refCount);let{affectingLocations:ce}=ve;if(!!ce?.length){nt&&d.add(ve);for(let $ of ce)Gt($,!0)}}function Gt(ve,nt){let ce=fe.get(ve);if(ce){nt?ce.resolutions++:ce.files++;return}let $=ve;if(e.realpath&&($=e.realpath(ve),ve!==$)){let je=fe.get($);if(je){nt?je.resolutions++:je.files++,je.paths.add(ve),fe.set(ve,je);return}}let ue=new Set;ue.add($);let G=bN(e.toPath($))?e.watchAffectingFileLocation($,(je,Ge)=>{F?.addOrDeleteFile(je,e.toPath($),Ge);let kt=q.getPackageJsonInfoCache().getInternalMap();ue.forEach(Kt=>{Oe.resolutions&&(x??(x=new Set)).add(Kt),Oe.files&&(S??(S=new Set)).add(Kt),kt?.delete(e.toPath(Kt))}),e.scheduleInvalidateResolutionsOfFailedLookupLocations()}):U2,Oe={watcher:G!==U2?{close:()=>{G.close(),G=U2}}:G,resolutions:nt?1:0,files:nt?0:1,paths:ue};fe.set($,Oe),ve!==$&&(fe.set(ve,Oe),ue.add(ve))}function $n(ve,nt){let ce=e.getCurrentProgram();!ce||!ce.getTypeChecker().tryFindAmbientModuleWithoutAugmentations(nt)?ve.forEach(kn):ve.forEach($=>_n($,!0))}function ui(ve,nt,ce){let $=Q.get(nt);$?(L.assert(!!ce==!!$.nonRecursive),$.refCount++):Q.set(nt,{watcher:gr(ve,nt,ce),refCount:1,nonRecursive:ce})}function Ni(ve,nt,ce){if(L.checkDefined(ve.files).delete(nt),ve.refCount--,ve.refCount)return;let $=ce(ve);if($&&$.resolvedFileName){let Oe=e.toPath($.resolvedFileName),je=g.get(Oe);je?.delete(ve)&&!je.size&&g.delete(Oe)}let{failedLookupLocations:ue,affectingLocations:G}=ve;if(f.delete(ve)){let Oe=!1;for(let je of ue){let Ge=e.toPath(je),kt=qe(je,Ge);if(kt){let{dirPath:Kt}=kt,ln=ie.get(Ge);ln&&(ln===1?ie.delete(Ge):(L.assert(ln>1),ie.set(Ge,ln-1))),Kt===U?Oe=!0:Pi(Kt)}}Oe&&Pi(U)}else G?.length&&d.delete(ve);if(G)for(let Oe of G){let je=fe.get(Oe);je.resolutions--}}function Pi(ve){let nt=Q.get(ve);nt.refCount--}function gr(ve,nt,ce){return e.watchDirectoryOfFailedLookupLocation(ve,$=>{let ue=e.toPath($);F&&F.addOrDeleteFileOrDirectory($,ue),hi(ue,nt===ue)},ce?0:1)}function pt(ve,nt,ce){let $=ve.get(nt);$&&($.forEach(ue=>Ni(ue,nt,ce)),ve.delete(nt))}function nn(ve){if(!Gc(ve,\".json\"))return;let nt=e.getCurrentProgram();if(!nt)return;let ce=nt.getResolvedProjectReferenceByPath(ve);!ce||ce.commandLine.fileNames.forEach($=>Dt(e.toPath($)))}function Dt(ve){pt(B,ve,_e),pt(W,ve,ge)}function pn(ve,nt){if(!ve)return!1;let ce=!1;return ve.forEach($=>{if(!($.isInvalidated||!nt($))){$.isInvalidated=ce=!0;for(let ue of L.checkDefined($.files))(o??(o=new Set)).add(ue),v=v||Oc(ue,VF)}}),ce}function An(ve){Dt(ve);let nt=v;pn(g.get(ve),h0)&&v&&!nt&&e.onChangedAutomaticTypeDirectiveNames()}function Kn(ve){L.assert(s===ve||s===void 0),s=ve}function hi(ve,nt){if(nt)(C||(C=new Set)).add(ve);else{let ce=Dq(ve);if(!ce||(ve=ce,e.fileIsOpen(ve)))return!1;let $=ni(ve);if(We(ve)||H8(ve)||We($)||H8($))(A||(A=new Set)).add(ve),(w||(w=new Set)).add(ve);else{if(!Qt(ve)&&!ie.has(ve)||Bpe(e.getCurrentProgram(),ve))return!1;(A||(A=new Set)).add(ve);let ue=XJ(ve);ue&&(w||(w=new Set)).add(ue)}}e.scheduleInvalidateResolutionsOfFailedLookupLocations()}function ri(){var ve;let nt=!1;if(S&&((ve=e.getCurrentProgram())==null||ve.getSourceFiles().forEach($=>{vt($.packageJsonLocations,ue=>S.has(ue))&&((o??(o=new Set)).add($.path),nt=!0)}),S=void 0),!A&&!w&&!C&&!x)return nt;nt=pn(f,gn)||nt;let ce=q.getPackageJsonInfoCache().getInternalMap();return ce&&(A||w||C)&&ce.forEach(($,ue)=>Ht(ue)?ce.delete(ue):void 0),A=void 0,w=void 0,C=void 0,nt=pn(d,En)||nt,x=void 0,nt}function gn(ve){var nt;return En(ve)?!0:!A&&!w&&!C?!1:(nt=ve.failedLookupLocations)==null?void 0:nt.some(ce=>Ht(e.toPath(ce)))}function Ht(ve){return A?.has(ve)||GD(w?.keys()||[],nt=>na(ve,nt)?!0:void 0)||GD(C?.keys()||[],nt=>X(nt,ve)?!0:void 0)}function En(ve){var nt;return!!x&&((nt=ve.affectingLocations)==null?void 0:nt.some(ce=>x.has(ce)))}function dr(){Ef(le,am)}function Cr(ve,nt){if(X(U,nt))return U;let ce=zt(ve,nt);return ce&&Q.has(ce.dirPath)?ce.dirPath:void 0}function Se(ve,nt){return e.watchTypeRootsDirectory(nt,ce=>{let $=e.toPath(ce);F&&F.addOrDeleteFileOrDirectory(ce,$),v=!0,e.onChangedAutomaticTypeDirectiveNames();let ue=Cr(nt,ve);ue&&hi($,ue===$)},1)}function at(){let ve=e.getCompilationSettings();if(ve.types){dr();return}let nt=YO(ve,{directoryExists:Tt,getCurrentDirectory:P});nt?t2(le,p0(nt,ce=>e.toPath(ce)),{createNewValue:Se,onDeleteValue:am}):dr()}function Tt(ve){let nt=ni(ni(ve)),ce=e.toPath(nt);return ce===U||bN(ce)}}function A8e(e){var t,r;return!!(((t=e.resolvedModule)==null?void 0:t.originalPath)||((r=e.resolvedTypeReferenceDirective)==null?void 0:r.originalPath))}var C8e=gt({\"src/compiler/resolutionCache.ts\"(){\"use strict\";fa(),fa()}});function EN(e,t){let r=e===xl&&Vq?Vq:{getCurrentDirectory:()=>e.getCurrentDirectory(),getNewLine:()=>e.newLine,getCanonicalFileName:Dl(e.useCaseSensitiveFileNames)};if(!t)return o=>e.write(rq(o,r));let i=new Array(1);return o=>{i[0]=o,e.write(Jpe(i,r)+r.getNewLine()),i[0]=void 0}}function _me(e,t,r){return e.clearScreen&&!r.preserveWatchOutput&&!r.extendedDiagnostics&&!r.diagnostics&&ya($F,t.code)?(e.clearScreen(),!0):!1}function I8e(e,t){return ya($F,e.code)?t+t:t}function TN(e){return e.now?e.now().toLocaleTimeString(\"en-US\",{timeZone:\"UTC\"}).replace(\"\\u202F\",\" \"):new Date().toLocaleTimeString()}function pme(e,t){return t?(r,i,o)=>{_me(e,r,o);let s=`[${iE(TN(e),\"\\x1B[90m\")}] `;s+=`${sv(r.messageText,e.newLine)}${i+i}`,e.write(s)}:(r,i,o)=>{let s=\"\";_me(e,r,o)||(s+=i),s+=`${TN(e)} - `,s+=`${sv(r.messageText,e.newLine)}${I8e(r,i)}`,e.write(s)}}function L8e(e,t,r,i,o,s){let l=o;l.onUnRecoverableConfigFileDiagnostic=d=>Eme(o,s,d);let f=OO(e,t,l,r,i);return l.onUnRecoverableConfigFileDiagnostic=void 0,f}function JF(e){return Oy(e,t=>t.category===1)}function KF(e){return Pr(e,r=>r.category===1).map(r=>{if(r.file!==void 0)return`${r.file.fileName}`}).map(r=>{if(r===void 0)return;let i=wr(e,o=>o.file!==void 0&&o.file.fileName===r);if(i!==void 0){let{line:o}=Gs(i.file,i.start);return{fileName:r,line:o+1}}})}function wq(e){return e===1?_.Found_1_error_Watching_for_file_changes:_.Found_0_errors_Watching_for_file_changes}function mme(e,t){let r=iE(\":\"+e.line,\"\\x1B[90m\");return rI(e.fileName)&&rI(t)?Xp(t,e.fileName,!1)+r:e.fileName+r}function hme(e,t,r,i){if(e===0)return\"\";let o=t.filter(g=>g!==void 0),s=o.map(g=>`${g.fileName}:${g.line}`).filter((g,m,v)=>v.indexOf(g)===m),l=o[0]&&mme(o[0],i.getCurrentDirectory()),f=e===1?ps(t[0]!==void 0?_.Found_1_error_in_1:_.Found_1_error,e,l):ps(s.length===0?_.Found_0_errors:s.length===1?_.Found_0_errors_in_the_same_file_starting_at_Colon_1:_.Found_0_errors_in_1_files,e,s.length===1?l:s.length),d=s.length>1?k8e(o,i):\"\";return`${r}${sv(f.messageText,r)}${r}${r}${d}`}function k8e(e,t){let r=e.filter((v,S,x)=>S===x.findIndex(A=>A?.fileName===v?.fileName));if(r.length===0)return\"\";let i=v=>Math.log(v)*Math.LOG10E+1,o=r.map(v=>[v,Oy(e,S=>S.fileName===v.fileName)]),s=o.reduce((v,S)=>Math.max(v,S[1]||0),0),l=_.Errors_Files.message,f=l.split(\" \")[0].length,d=Math.max(f,i(s)),g=Math.max(i(s)-f,0),m=\"\";return m+=\" \".repeat(g)+l+`\n`,o.forEach(v=>{let[S,x]=v,A=Math.log(x)*Math.LOG10E+1|0,w=A<d?\" \".repeat(d-A):\"\",C=mme(S,t.getCurrentDirectory());m+=`${w}${x}  ${C}\n`}),m}function gme(e){return!!e.getState}function Rq(e,t){let r=e.getCompilerOptions();r.explainFiles?yme(gme(e)?e.getProgram():e,t):(r.listFiles||r.listFilesOnly)&&mn(e.getSourceFiles(),i=>{t(i.fileName)})}function yme(e,t){var r,i;let o=e.getFileIncludeReasons(),s=l=>iI(l,e.getCurrentDirectory(),e.getCanonicalFileName);for(let l of e.getSourceFiles())t(`${YS(l,s)}`),(r=o.get(l.path))==null||r.forEach(f=>t(`  ${Mq(e,f,s).messageText}`)),(i=Oq(l,s))==null||i.forEach(f=>t(`  ${f.messageText}`))}function Oq(e,t){var r;let i;if(e.path!==e.resolvedPath&&(i??(i=[])).push(da(void 0,_.File_is_output_of_project_reference_source_0,YS(e.originalFileName,t))),e.redirectInfo&&(i??(i=[])).push(da(void 0,_.File_redirects_to_file_0,YS(e.redirectInfo.redirectTarget,t))),kd(e))switch(e.impliedNodeFormat){case 99:e.packageJsonScope&&(i??(i=[])).push(da(void 0,_.File_is_ECMAScript_module_because_0_has_field_type_with_value_module,YS(To(e.packageJsonLocations),t)));break;case 1:e.packageJsonScope?(i??(i=[])).push(da(void 0,e.packageJsonScope.contents.packageJsonContent.type?_.File_is_CommonJS_module_because_0_has_field_type_whose_value_is_not_module:_.File_is_CommonJS_module_because_0_does_not_have_field_type,YS(To(e.packageJsonLocations),t))):(r=e.packageJsonLocations)!=null&&r.length&&(i??(i=[])).push(da(void 0,_.File_is_CommonJS_module_because_package_json_was_not_found));break}return i}function Nq(e,t){var r;let i=e.getCompilerOptions().configFile;if(!((r=i?.configFileSpecs)!=null&&r.validatedFilesSpec))return;let o=e.getCanonicalFileName(t),s=ni(_a(i.fileName,e.getCurrentDirectory()));return wr(i.configFileSpecs.validatedFilesSpec,l=>e.getCanonicalFileName(_a(l,s))===o)}function Pq(e,t){var r,i;let o=e.getCompilerOptions().configFile;if(!((r=o?.configFileSpecs)!=null&&r.validatedIncludeSpecs))return;if(o.configFileSpecs.isDefaultIncludeSpec)return!0;let s=Gc(t,\".json\"),l=ni(_a(o.fileName,e.getCurrentDirectory())),f=e.useCaseSensitiveFileNames();return wr((i=o?.configFileSpecs)==null?void 0:i.validatedIncludeSpecs,d=>{if(s&&!Oc(d,\".json\"))return!1;let g=kW(d,l,\"files\");return!!g&&Qy(`(${g})$`,f).test(t)})}function Mq(e,t,r){var i,o;let s=e.getCompilerOptions();if(vb(t)){let l=$L(g=>e.getSourceFileByPath(g),t),f=G2(l)?l.file.text.substring(l.pos,l.end):`\"${l.text}\"`,d;switch(L.assert(G2(l)||t.kind===3,\"Only synthetic references are imports\"),t.kind){case 3:G2(l)?d=l.packageId?_.Imported_via_0_from_file_1_with_packageId_2:_.Imported_via_0_from_file_1:l.text===_b?d=l.packageId?_.Imported_via_0_from_file_1_with_packageId_2_to_import_importHelpers_as_specified_in_compilerOptions:_.Imported_via_0_from_file_1_to_import_importHelpers_as_specified_in_compilerOptions:d=l.packageId?_.Imported_via_0_from_file_1_with_packageId_2_to_import_jsx_and_jsxs_factory_functions:_.Imported_via_0_from_file_1_to_import_jsx_and_jsxs_factory_functions;break;case 4:L.assert(!l.packageId),d=_.Referenced_via_0_from_file_1;break;case 5:d=l.packageId?_.Type_library_referenced_via_0_from_file_1_with_packageId_2:_.Type_library_referenced_via_0_from_file_1;break;case 7:L.assert(!l.packageId),d=_.Library_referenced_via_0_from_file_1;break;default:L.assertNever(t)}return da(void 0,d,f,YS(l.file,r),l.packageId&&gT(l.packageId))}switch(t.kind){case 0:if(!((i=s.configFile)!=null&&i.configFileSpecs))return da(void 0,_.Root_file_specified_for_compilation);let l=_a(e.getRootFileNames()[t.index],e.getCurrentDirectory());if(Nq(e,l))return da(void 0,_.Part_of_files_list_in_tsconfig_json);let d=Pq(e,l);return Ta(d)?da(void 0,_.Matched_by_include_pattern_0_in_1,d,YS(s.configFile,r)):da(void 0,d?_.Matched_by_default_include_pattern_Asterisk_Asterisk_Slash_Asterisk:_.Root_file_specified_for_compilation);case 1:case 2:let g=t.kind===2,m=L.checkDefined((o=e.getResolvedProjectReferences())==null?void 0:o[t.index]);return da(void 0,Ss(s)?g?_.Output_from_referenced_project_0_included_because_1_specified:_.Source_from_referenced_project_0_included_because_1_specified:g?_.Output_from_referenced_project_0_included_because_module_is_specified_as_none:_.Source_from_referenced_project_0_included_because_module_is_specified_as_none,YS(m.sourceFile.fileName,r),s.outFile?\"--outFile\":\"--out\");case 8:return da(void 0,s.types?t.packageId?_.Entry_point_of_type_library_0_specified_in_compilerOptions_with_packageId_1:_.Entry_point_of_type_library_0_specified_in_compilerOptions:t.packageId?_.Entry_point_for_implicit_type_library_0_with_packageId_1:_.Entry_point_for_implicit_type_library_0,t.typeReference,t.packageId&&gT(t.packageId));case 6:if(t.index!==void 0)return da(void 0,_.Library_0_specified_in_compilerOptions,s.lib[t.index]);let v=Ld(JO.type,(S,x)=>S===Do(s)?x:void 0);return da(void 0,v?_.Default_library_for_target_0:_.Default_library,v);default:L.assertNever(t)}}function YS(e,t){let r=Ta(e)?e:e.fileName;return t?t(r):r}function qF(e,t,r,i,o,s,l,f){let d=!!e.getCompilerOptions().listFilesOnly,g=e.getConfigFileParsingDiagnostics().slice(),m=g.length;si(g,e.getSyntacticDiagnostics(void 0,s)),g.length===m&&(si(g,e.getOptionsDiagnostics(s)),d||(si(g,e.getGlobalDiagnostics(s)),g.length===m&&si(g,e.getSemanticDiagnostics(void 0,s))));let v=d?{emitSkipped:!0,diagnostics:Je}:e.emit(void 0,o,s,l,f),{emittedFiles:S,diagnostics:x}=v;si(g,x);let A=bA(g);if(A.forEach(t),r){let w=e.getCurrentDirectory();mn(S,C=>{let P=_a(C,w);r(`TSFILE: ${P}`)}),Rq(e,r)}return i&&i(JF(A),KF(A)),{emitResult:v,diagnostics:A}}function vme(e,t,r,i,o,s,l,f){let{emitResult:d,diagnostics:g}=qF(e,t,r,i,o,s,l,f);return d.emitSkipped&&g.length>0?1:g.length>0?2:0}function Fq(e=xl,t){return{onWatchStatusChange:t||pme(e),watchFile:ho(e,e.watchFile)||SN,watchDirectory:ho(e,e.watchDirectory)||SN,setTimeout:ho(e,e.setTimeout)||Ba,clearTimeout:ho(e,e.clearTimeout)||Ba}}function Gq(e,t){let r=e.trace?t.extendedDiagnostics?2:t.diagnostics?1:0:0,i=r!==0?s=>e.trace(s):Ba,o=Upe(e,r,i);return o.writeLog=i,o}function Bq(e,t,r=e){let i=e.useCaseSensitiveFileNames(),o={getSourceFile:eq((s,l)=>l?e.readFile(s,l):o.readFile(s),t,void 0),getDefaultLibLocation:ho(e,e.getDefaultLibLocation),getDefaultLibFileName:s=>e.getDefaultLibFileName(s),writeFile:tq((s,l,f)=>e.writeFile(s,l,f),s=>e.createDirectory(s),s=>e.directoryExists(s)),getCurrentDirectory:zu(()=>e.getCurrentDirectory()),useCaseSensitiveFileNames:()=>i,getCanonicalFileName:Dl(i),getNewLine:()=>db(t()),fileExists:s=>e.fileExists(s),readFile:s=>e.readFile(s),trace:ho(e,e.trace),directoryExists:ho(r,r.directoryExists),getDirectories:ho(r,r.getDirectories),realpath:ho(e,e.realpath),getEnvironmentVariable:ho(e,e.getEnvironmentVariable)||(()=>\"\"),createHash:ho(e,e.createHash),readDirectory:ho(e,e.readDirectory),storeFilesChangingSignatureDuringEmit:e.storeFilesChangingSignatureDuringEmit};return o}function XF(e,t){if(t.match(TK)){let r=t.length,i=r;for(let o=r-1;o>=0;o--){let s=t.charCodeAt(o);switch(s){case 10:o&&t.charCodeAt(o-1)===13&&o--;case 13:break;default:if(s<127||!Wl(s)){i=o;continue}break}let l=t.substring(i,r);if(l.match(hF)){t=t.substring(0,i);break}else if(!l.match(gF))break;r=i}}return(e.createHash||ow)(t)}function YF(e){let t=e.getSourceFile;e.getSourceFile=(...r)=>{let i=t.call(e,...r);return i&&(i.version=XF(e,i.text)),i}}function Uq(e,t){let r=zu(()=>ni(So(e.getExecutingFilePath())));return{useCaseSensitiveFileNames:()=>e.useCaseSensitiveFileNames,getNewLine:()=>e.newLine,getCurrentDirectory:zu(()=>e.getCurrentDirectory()),getDefaultLibLocation:r,getDefaultLibFileName:i=>vi(r(),X8(i)),fileExists:i=>e.fileExists(i),readFile:(i,o)=>e.readFile(i,o),directoryExists:i=>e.directoryExists(i),getDirectories:i=>e.getDirectories(i),readDirectory:(i,o,s,l,f)=>e.readDirectory(i,o,s,l,f),realpath:ho(e,e.realpath),getEnvironmentVariable:ho(e,e.getEnvironmentVariable),trace:i=>e.write(i+e.newLine),createDirectory:i=>e.createDirectory(i),writeFile:(i,o,s)=>e.writeFile(i,o,s),createHash:ho(e,e.createHash),createProgram:t||kq,storeFilesChangingSignatureDuringEmit:e.storeFilesChangingSignatureDuringEmit,now:ho(e,e.now)}}function bme(e=xl,t,r,i){let o=l=>e.write(l+e.newLine),s=Uq(e,t);return jU(s,Fq(e,i)),s.afterProgramCreate=l=>{let f=l.getCompilerOptions(),d=db(f);qF(l,r,o,g=>s.onWatchStatusChange(ps(wq(g),g),d,f,g))},s}function Eme(e,t,r){t(r),e.exit(1)}function Tme({configFileName:e,optionsToExtend:t,watchOptionsToExtend:r,extraFileExtensions:i,system:o,createProgram:s,reportDiagnostic:l,reportWatchStatus:f}){let d=l||EN(o),g=bme(o,s,d,f);return g.onUnRecoverableConfigFileDiagnostic=m=>Eme(o,d,m),g.configFileName=e,g.optionsToExtend=t,g.watchOptionsToExtend=r,g.extraFileExtensions=i,g}function Sme({rootFiles:e,options:t,watchOptions:r,projectReferences:i,system:o,createProgram:s,reportDiagnostic:l,reportWatchStatus:f}){let d=bme(o,s,l||EN(o),f);return d.rootFiles=e,d.options=t,d.watchOptions=r,d.projectReferences=i,d}function D8e(e){let t=e.system||xl,r=e.host||(e.host=jq(e.options,t)),i=xme(e),o=vme(i,e.reportDiagnostic||EN(t),s=>r.trace&&r.trace(s),e.reportErrorSummary||e.options.pretty?(s,l)=>t.write(hme(s,l,t.newLine,r)):void 0);return e.afterProgramEmitAndDiagnostics&&e.afterProgramEmitAndDiagnostics(i),o}var Vq,$F,U2,SN,jf,w8e=gt({\"src/compiler/watch.ts\"(){\"use strict\";fa(),Vq=xl?{getCurrentDirectory:()=>xl.getCurrentDirectory(),getNewLine:()=>xl.newLine,getCanonicalFileName:Dl(xl.useCaseSensitiveFileNames)}:void 0,$F=[_.Starting_compilation_in_watch_mode.code,_.File_change_detected_Starting_incremental_compilation.code],U2={close:Ba},SN=()=>U2,jf={ConfigFile:\"Config file\",ExtendedConfigFile:\"Extended config file\",SourceFile:\"Source file\",MissingFile:\"Missing file\",WildcardDirectory:\"Wild card directory\",FailedLookupLocations:\"Failed Lookup Locations\",AffectingFileLocation:\"File location affecting resolution\",TypeRoots:\"Type roots\",ConfigFileOfReferencedProject:\"Config file of referened project\",ExtendedConfigOfReferencedProject:\"Extended config file of referenced project\",WildcardDirectoryOfReferencedProject:\"Wild card directory of referenced project\",PackageJson:\"package.json file\",ClosedScriptInfo:\"Closed Script info\",ConfigFileForInferredRoot:\"Config file for the inferred project root\",NodeModules:\"node_modules for closed script infos and package.jsons affecting module specifier cache\",MissingSourceMapFile:\"Missing source map file\",NoopConfigFileForInferredRoot:\"Noop Config file for the inferred project root\",MissingGeneratedFile:\"Missing generated file\",NodeModulesForModuleSpecifierCache:\"node_modules for module specifier cache invalidation\"}}});function QF(e,t){let r=Jg(e);if(!r)return;let i;if(t.getBuildInfo)i=t.getBuildInfo(r,e.configFilePath);else{let o=t.readFile(r);if(!o)return;i=IF(r,o)}if(!(!i||i.version!==wf||!i.program))return dme(i,r,t)}function jq(e,t=xl){let r=nq(e,void 0,t);return r.createHash=ho(t,t.createHash),r.storeFilesChangingSignatureDuringEmit=t.storeFilesChangingSignatureDuringEmit,YF(r),mN(r,i=>Ts(i,r.getCurrentDirectory(),r.getCanonicalFileName)),r}function xme({rootNames:e,options:t,configFileParsingDiagnostics:r,projectReferences:i,host:o,createProgram:s}){o=o||jq(t),s=s||kq;let l=QF(t,o);return s(e,t,o,l,r,i)}function R8e(e,t,r,i,o,s,l,f){return ba(e)?Sme({rootFiles:e,options:t,watchOptions:f,projectReferences:l,system:r,createProgram:i,reportDiagnostic:o,reportWatchStatus:s}):Tme({configFileName:e,optionsToExtend:t,watchOptionsToExtend:l,extraFileExtensions:f,system:r,createProgram:i,reportDiagnostic:o,reportWatchStatus:s})}function O8e(e){let t,r,i,o,s,l,f,d,g=e.extendedConfigCache,m=!1,v=new Map,S,x=!1,A=e.useCaseSensitiveFileNames(),w=e.getCurrentDirectory(),{configFileName:C,optionsToExtend:P={},watchOptionsToExtend:F,extraFileExtensions:B,createProgram:q}=e,{rootFiles:W,options:Y,watchOptions:R,projectReferences:ie}=e,Q,fe,Z=!1,U=!1,re=C===void 0?void 0:Mpe(e,w,A),le=re||e,_e=FF(e,le),ge=zt();C&&e.configFileParsingResult&&(En(e.configFileParsingResult),ge=zt()),Pi(_.Starting_compilation_in_watch_mode),C&&!e.configFileParsingResult&&(ge=db(P),L.assert(!W),Ht(),ge=zt()),L.assert(Y),L.assert(W);let{watchFile:X,watchDirectory:Ve,writeLog:we}=Gq(e,Y),ke=Dl(A);we(`Current directory: ${w} CaseSensitiveFileNames: ${A}`);let Pe;C&&(Pe=X(C,An,2e3,R,jf.ConfigFile));let Ce=Bq(e,()=>Y,le);YF(Ce);let Ie=Ce.getSourceFile;Ce.getSourceFile=(je,...Ge)=>Gt(je,Qt(je),...Ge),Ce.getSourceFileByPath=Gt,Ce.getNewLine=()=>ge,Ce.fileExists=_n,Ce.onReleaseOldSourceFile=Ni,Ce.onReleaseParsedCommandLine=Se,Ce.toPath=Qt,Ce.getCompilationSettings=()=>Y,Ce.useSourceOfProjectReferenceRedirect=ho(e,e.useSourceOfProjectReferenceRedirect),Ce.watchDirectoryOfFailedLookupLocation=(je,Ge,kt)=>Ve(je,Ge,kt,R,jf.FailedLookupLocations),Ce.watchAffectingFileLocation=(je,Ge)=>X(je,Ge,2e3,R,jf.AffectingFileLocation),Ce.watchTypeRootsDirectory=(je,Ge,kt)=>Ve(je,Ge,kt,R,jf.TypeRoots),Ce.getCachedDirectoryStructureHost=()=>re,Ce.scheduleInvalidateResolutionsOfFailedLookupLocations=nn,Ce.onInvalidatedResolution=pn,Ce.onChangedAutomaticTypeDirectiveNames=pn,Ce.fileIsOpen=m0,Ce.getCurrentProgram=ct,Ce.writeLog=we,Ce.getParsedCommandLine=dr;let Be=fme(Ce,C?ni(_a(C,w)):w,!1);Ce.resolveModuleNameLiterals=ho(e,e.resolveModuleNameLiterals),Ce.resolveModuleNames=ho(e,e.resolveModuleNames),!Ce.resolveModuleNameLiterals&&!Ce.resolveModuleNames&&(Ce.resolveModuleNameLiterals=Be.resolveModuleNameLiterals.bind(Be)),Ce.resolveTypeReferenceDirectiveReferences=ho(e,e.resolveTypeReferenceDirectiveReferences),Ce.resolveTypeReferenceDirectives=ho(e,e.resolveTypeReferenceDirectives),!Ce.resolveTypeReferenceDirectiveReferences&&!Ce.resolveTypeReferenceDirectives&&(Ce.resolveTypeReferenceDirectiveReferences=Be.resolveTypeReferenceDirectiveReferences.bind(Be)),Ce.getModuleResolutionCache=e.resolveModuleNameLiterals||e.resolveModuleNames?ho(e,e.getModuleResolutionCache):()=>Be.getModuleResolutionCache();let Le=!!e.resolveModuleNameLiterals||!!e.resolveTypeReferenceDirectiveReferences||!!e.resolveModuleNames||!!e.resolveTypeReferenceDirectives?ho(e,e.hasInvalidatedResolutions)||h0:m0;return t=QF(Y,Ce),Rt(),$(),C&&G(Qt(C),Y,R,jf.ExtendedConfigFile),C?{getCurrentProgram:_t,getProgram:hi,close:Ye}:{getCurrentProgram:_t,getProgram:hi,updateRootFileNames:qe,close:Ye};function Ye(){pt(),Be.clear(),Ef(v,je=>{je&&je.fileWatcher&&(je.fileWatcher.close(),je.fileWatcher=void 0)}),Pe&&(Pe.close(),Pe=void 0),g?.clear(),g=void 0,d&&(Ef(d,_m),d=void 0),o&&(Ef(o,_m),o=void 0),i&&(Ef(i,am),i=void 0),f&&(Ef(f,je=>{var Ge;(Ge=je.watcher)==null||Ge.close(),je.watcher=void 0,je.watchedDirectories&&Ef(je.watchedDirectories,_m),je.watchedDirectories=void 0}),f=void 0)}function _t(){return t}function ct(){return t&&t.getProgramOrUndefined()}function Rt(){we(\"Synchronizing program\"),L.assert(Y),L.assert(W),pt();let je=_t();x&&(ge=zt(),je&&eH(je.getCompilerOptions(),Y)&&Be.clear());let Ge=Be.createHasInvalidatedResolutions(Le),{originalReadFile:kt,originalFileExists:Kt,originalDirectoryExists:ln,originalCreateDirectory:ir,originalWriteFile:ae,readFileWithCache:rt}=mN(Ce,Qt);return lq(ct(),W,Y,Ot=>ui(Ot,rt),Ot=>Ce.fileExists(Ot),Ge,gr,dr,ie)?U&&(m&&Pi(_.File_change_detected_Starting_incremental_compilation),t=q(void 0,void 0,Ce,t,fe,ie),U=!1):(m&&Pi(_.File_change_detected_Starting_incremental_compilation),We(Ge)),m=!1,e.afterProgramCreate&&je!==t&&e.afterProgramCreate(t),Ce.readFile=kt,Ce.fileExists=Kt,Ce.directoryExists=ln,Ce.createDirectory=ir,Ce.writeFile=ae,t}function We(je){we(\"CreatingProgramWith::\"),we(`  roots: ${JSON.stringify(W)}`),we(`  options: ${JSON.stringify(Y)}`),ie&&we(`  projectReferences: ${JSON.stringify(ie)}`);let Ge=x||!ct();x=!1,U=!1,Be.startCachingPerDirectoryResolution(),Ce.hasInvalidatedResolutions=je,Ce.hasChangedAutomaticTypeDirectiveNames=gr;let kt=ct();if(t=q(W,Y,Ce,t,fe,ie),Be.finishCachingPerDirectoryResolution(t.getProgram(),kt),Gpe(t.getProgram(),i||(i=new Map),nt),Ge&&Be.updateTypeRootsWatch(),S){for(let Kt of S)i.has(Kt)||v.delete(Kt);S=void 0}}function qe(je){L.assert(!C,\"Cannot update root file names with config file watch mode\"),W=je,pn()}function zt(){return db(Y||P)}function Qt(je){return Ts(je,w,ke)}function tn(je){return typeof je==\"boolean\"}function kn(je){return typeof je.version==\"boolean\"}function _n(je){let Ge=Qt(je);return tn(v.get(Ge))?!1:le.fileExists(je)}function Gt(je,Ge,kt,Kt,ln){let ir=v.get(Ge);if(!tn(ir)){if(ir===void 0||ln||kn(ir)){let ae=Ie(je,kt,Kt);if(ir)ae?(ir.sourceFile=ae,ir.version=ae.version,ir.fileWatcher||(ir.fileWatcher=at(Ge,je,Tt,250,R,jf.SourceFile))):(ir.fileWatcher&&ir.fileWatcher.close(),v.set(Ge,!1));else if(ae){let rt=at(Ge,je,Tt,250,R,jf.SourceFile);v.set(Ge,{sourceFile:ae,version:ae.version,fileWatcher:rt})}else v.set(Ge,!1);return ae}return ir.sourceFile}}function $n(je){let Ge=v.get(je);Ge!==void 0&&(tn(Ge)?v.set(je,{version:!1}):Ge.version=!1)}function ui(je,Ge){let kt=v.get(je);if(!kt)return;if(kt.version)return kt.version;let Kt=Ge(je);return Kt!==void 0?XF(Ce,Kt):void 0}function Ni(je,Ge,kt){let Kt=v.get(je.resolvedPath);Kt!==void 0&&(tn(Kt)?(S||(S=[])).push(je.path):Kt.sourceFile===je&&(Kt.fileWatcher&&Kt.fileWatcher.close(),v.delete(je.resolvedPath),kt||Be.removeResolutionsOfFile(je.path)))}function Pi(je){e.onWatchStatusChange&&e.onWatchStatusChange(ps(je),ge,Y||P)}function gr(){return Be.hasChangedAutomaticTypeDirectiveNames()}function pt(){return l?(e.clearTimeout(l),l=void 0,!0):!1}function nn(){if(!e.setTimeout||!e.clearTimeout)return Be.invalidateResolutionsOfFailedLookupLocations();let je=pt();we(`Scheduling invalidateFailedLookup${je?\", Cancelled earlier one\":\"\"}`),l=e.setTimeout(Dt,250)}function Dt(){l=void 0,Be.invalidateResolutionsOfFailedLookupLocations()&&pn()}function pn(){!e.setTimeout||!e.clearTimeout||(s&&e.clearTimeout(s),we(\"Scheduling update\"),s=e.setTimeout(Kn,250))}function An(){L.assert(!!C),r=2,pn()}function Kn(){s=void 0,m=!0,hi()}function hi(){switch(r){case 1:fp.logStartUpdateProgram(\"PartialConfigReload\"),ri();break;case 2:fp.logStartUpdateProgram(\"FullConfigReload\"),gn();break;default:fp.logStartUpdateProgram(\"SynchronizeProgram\"),Rt();break}return fp.logStopUpdateProgram(\"Done\"),_t()}function ri(){we(\"Reloading new file names and options\"),L.assert(Y),L.assert(C),r=0,W=UO(Y.configFile.configFileSpecs,_a(ni(C),w),Y,_e,B),CJ(W,_a(C,w),Y.configFile.configFileSpecs,fe,Z)&&(U=!0),Rt()}function gn(){L.assert(C),we(`Reloading config file: ${C}`),r=0,re&&re.clearCache(),Ht(),x=!0,Rt(),$(),G(Qt(C),Y,R,jf.ExtendedConfigFile)}function Ht(){L.assert(C),En(OO(C,P,_e,g||(g=new Map),F,B))}function En(je){W=je.fileNames,Y=je.options,R=je.watchOptions,ie=je.projectReferences,Q=je.wildcardDirectories,fe=YT(je).slice(),Z=GO(je.raw),U=!0}function dr(je){let Ge=Qt(je),kt=f?.get(Ge);if(kt){if(!kt.reloadLevel)return kt.parsedCommandLine;if(kt.parsedCommandLine&&kt.reloadLevel===1&&!e.getParsedCommandLine){we(\"Reloading new file names and options\"),L.assert(Y);let ln=UO(kt.parsedCommandLine.options.configFile.configFileSpecs,_a(ni(je),w),Y,_e);return kt.parsedCommandLine={...kt.parsedCommandLine,fileNames:ln},kt.reloadLevel=void 0,kt.parsedCommandLine}}we(`Loading config file: ${je}`);let Kt=e.getParsedCommandLine?e.getParsedCommandLine(je):Cr(je);return kt?(kt.parsedCommandLine=Kt,kt.reloadLevel=void 0):(f||(f=new Map)).set(Ge,kt={parsedCommandLine:Kt}),Oe(je,Ge,kt),Kt}function Cr(je){let Ge=_e.onUnRecoverableConfigFileDiagnostic;_e.onUnRecoverableConfigFileDiagnostic=Ba;let kt=OO(je,void 0,_e,g||(g=new Map),F);return _e.onUnRecoverableConfigFileDiagnostic=Ge,kt}function Se(je){var Ge;let kt=Qt(je),Kt=f?.get(kt);!Kt||(f.delete(kt),Kt.watchedDirectories&&Ef(Kt.watchedDirectories,_m),(Ge=Kt.watcher)==null||Ge.close(),Fpe(kt,d))}function at(je,Ge,kt,Kt,ln,ir){return X(Ge,(ae,rt)=>kt(ae,rt,je),Kt,ln,ir)}function Tt(je,Ge,kt){ve(je,kt,Ge),Ge===2&&v.has(kt)&&Be.invalidateResolutionOfFile(kt),$n(kt),pn()}function ve(je,Ge,kt){re&&re.addOrDeleteFile(je,Ge,kt)}function nt(je){return f?.has(je)?U2:at(je,je,ce,500,R,jf.MissingFile)}function ce(je,Ge,kt){ve(je,kt,Ge),Ge===0&&i.has(kt)&&(i.get(kt).close(),i.delete(kt),$n(kt),pn())}function $(){Q?kF(o||(o=new Map),new Map(Object.entries(Q)),ue):o&&Ef(o,_m)}function ue(je,Ge){return Ve(je,kt=>{L.assert(C),L.assert(Y);let Kt=Qt(kt);re&&re.addOrDeleteFileOrDirectory(kt,Kt),$n(Kt),!DF({watchedDirPath:Qt(je),fileOrDirectory:kt,fileOrDirectoryPath:Kt,configFileName:C,extraFileExtensions:B,options:Y,program:_t()||W,currentDirectory:w,useCaseSensitiveFileNames:A,writeLog:we,toPath:Qt})&&r!==2&&(r=1,pn())},Ge,R,jf.WildcardDirectory)}function G(je,Ge,kt,Kt){L.assert(C),YK(je,Ge,d||(d=new Map),(ln,ir)=>X(ln,(ae,rt)=>{var Ot;ve(ln,ir,rt),g&&$K(g,ir,Qt);let Ke=(Ot=d.get(ir))==null?void 0:Ot.projects;!Ke?.size||Ke.forEach(oe=>{if(Qt(C)===oe)r=2;else{let pe=f?.get(oe);pe&&(pe.reloadLevel=2),Be.removeResolutionsFromProjectReferenceRedirects(oe)}pn()})},2e3,kt,Kt),Qt)}function Oe(je,Ge,kt){var Kt,ln,ir,ae,rt;kt.watcher||(kt.watcher=X(je,(Ot,Ke)=>{ve(je,Ge,Ke);let oe=f?.get(Ge);oe&&(oe.reloadLevel=2),Be.removeResolutionsFromProjectReferenceRedirects(Ge),pn()},2e3,((Kt=kt.parsedCommandLine)==null?void 0:Kt.watchOptions)||R,jf.ConfigFileOfReferencedProject)),(ln=kt.parsedCommandLine)!=null&&ln.wildcardDirectories?kF(kt.watchedDirectories||(kt.watchedDirectories=new Map),new Map(Object.entries((ir=kt.parsedCommandLine)==null?void 0:ir.wildcardDirectories)),(Ot,Ke)=>{var oe;return Ve(Ot,pe=>{let z=Qt(pe);re&&re.addOrDeleteFileOrDirectory(pe,z),$n(z);let Te=f?.get(Ge);!Te?.parsedCommandLine||DF({watchedDirPath:Qt(Ot),fileOrDirectory:pe,fileOrDirectoryPath:z,configFileName:je,options:Te.parsedCommandLine.options,program:Te.parsedCommandLine.fileNames,currentDirectory:w,useCaseSensitiveFileNames:A,writeLog:we,toPath:Qt})||Te.reloadLevel!==2&&(Te.reloadLevel=1,pn())},Ke,((oe=kt.parsedCommandLine)==null?void 0:oe.watchOptions)||R,jf.WildcardDirectoryOfReferencedProject)}):kt.watchedDirectories&&(Ef(kt.watchedDirectories,_m),kt.watchedDirectories=void 0),G(Ge,(ae=kt.parsedCommandLine)==null?void 0:ae.options,((rt=kt.parsedCommandLine)==null?void 0:rt.watchOptions)||R,jf.ExtendedConfigOfReferencedProject)}}var N8e=gt({\"src/compiler/watchPublic.ts\"(){\"use strict\";fa(),fa()}});function Hq(e){return Gc(e,\".json\")?e:vi(e,\"tsconfig.json\")}var Wq,P8e=gt({\"src/compiler/tsbuild.ts\"(){\"use strict\";fa(),Wq=(e=>(e[e.Unbuildable=0]=\"Unbuildable\",e[e.UpToDate=1]=\"UpToDate\",e[e.UpToDateWithUpstreamTypes=2]=\"UpToDateWithUpstreamTypes\",e[e.OutOfDateWithPrepend=3]=\"OutOfDateWithPrepend\",e[e.OutputMissing=4]=\"OutputMissing\",e[e.ErrorReadingFile=5]=\"ErrorReadingFile\",e[e.OutOfDateWithSelf=6]=\"OutOfDateWithSelf\",e[e.OutOfDateWithUpstream=7]=\"OutOfDateWithUpstream\",e[e.OutOfDateBuildInfo=8]=\"OutOfDateBuildInfo\",e[e.OutOfDateOptions=9]=\"OutOfDateOptions\",e[e.OutOfDateRoots=10]=\"OutOfDateRoots\",e[e.UpstreamOutOfDate=11]=\"UpstreamOutOfDate\",e[e.UpstreamBlocked=12]=\"UpstreamBlocked\",e[e.ComputingUpstream=13]=\"ComputingUpstream\",e[e.TsVersionOutputOfDate=14]=\"TsVersionOutputOfDate\",e[e.UpToDateWithInputFileText=15]=\"UpToDateWithInputFileText\",e[e.ContainerOnly=16]=\"ContainerOnly\",e[e.ForceBuild=17]=\"ForceBuild\",e))(Wq||{})}});function M8e(e,t,r){let i=e.get(t),o;return i||(o=r(),e.set(t,o)),i||o}function zq(e,t){return M8e(e,t,()=>new Map)}function xN(e){return e.now?e.now():new Date}function $S(e){return!!e&&!!e.buildOrder}function ZF(e){return $S(e)?e.buildOrder:e}function Ame(e,t){return r=>{let i=t?`[${iE(TN(e),\"\\x1B[90m\")}] `:`${TN(e)} - `;i+=`${sv(r.messageText,e.newLine)}${e.newLine+e.newLine}`,e.write(i)}}function Cme(e,t,r,i){let o=Uq(e,t);return o.getModifiedTime=e.getModifiedTime?s=>e.getModifiedTime(s):Qv,o.setModifiedTime=e.setModifiedTime?(s,l)=>e.setModifiedTime(s,l):Ba,o.deleteFile=e.deleteFile?s=>e.deleteFile(s):Ba,o.reportDiagnostic=r||EN(e),o.reportSolutionBuilderStatus=i||Ame(e),o.now=ho(e,e.now),o}function F8e(e=xl,t,r,i,o){let s=Cme(e,t,r,i);return s.reportErrorSummary=o,s}function G8e(e=xl,t,r,i,o){let s=Cme(e,t,r,i),l=Fq(e,o);return jU(s,l),s}function B8e(e){let t={};return zO.forEach(r=>{fs(e,r.name)&&(t[r.name]=e[r.name])}),t}function U8e(e,t,r){return Xme(!1,e,t,r)}function V8e(e,t,r,i){return Xme(!0,e,t,r,i)}function j8e(e,t,r,i,o){let s=t,l=t,f=B8e(i),d=Bq(s,()=>A.projectCompilerOptions);YF(d),d.getParsedCommandLine=w=>QT(A,w,W_(A,w)),d.resolveModuleNameLiterals=ho(s,s.resolveModuleNameLiterals),d.resolveTypeReferenceDirectiveReferences=ho(s,s.resolveTypeReferenceDirectiveReferences),d.resolveModuleNames=ho(s,s.resolveModuleNames),d.resolveTypeReferenceDirectives=ho(s,s.resolveTypeReferenceDirectives),d.getModuleResolutionCache=ho(s,s.getModuleResolutionCache);let g,m;!d.resolveModuleNameLiterals&&!d.resolveModuleNames&&(g=Y3(d.getCurrentDirectory(),d.getCanonicalFileName),d.resolveModuleNameLiterals=(w,C,P,F,B)=>gN(w,C,P,F,B,s,g,cq),d.getModuleResolutionCache=()=>g),!d.resolveTypeReferenceDirectiveReferences&&!d.resolveTypeReferenceDirectives&&(m=$3(d.getCurrentDirectory(),d.getCanonicalFileName,void 0,g?.getPackageJsonInfoCache()),d.resolveTypeReferenceDirectiveReferences=(w,C,P,F,B)=>gN(w,C,P,F,B,s,m,OF)),d.getBuildInfo=(w,C)=>Ume(A,w,W_(A,C),void 0);let{watchFile:v,watchDirectory:S,writeLog:x}=Gq(l,i),A={host:s,hostWithWatch:l,parseConfigFileHost:FF(s),write:ho(s,s.trace),options:i,baseCompilerOptions:f,rootNames:r,baseWatchOptions:o,resolvedConfigFilePaths:new Map,configFileCache:new Map,projectStatus:new Map,extendedConfigCache:new Map,buildInfoCache:new Map,outputTimeStamps:new Map,builderPrograms:new Map,diagnostics:new Map,projectPendingBuild:new Map,projectErrorsReported:new Map,compilerHost:d,moduleResolutionCache:g,typeReferenceDirectiveResolutionCache:m,buildOrder:void 0,readFileWithCache:w=>s.readFile(w),projectCompilerOptions:f,cache:void 0,allProjectBuildPending:!0,needsSummary:!0,watchAllProjectsPending:e,watch:e,allWatchedWildcardDirectories:new Map,allWatchedInputFiles:new Map,allWatchedConfigFiles:new Map,allWatchedExtendedConfigFiles:new Map,allWatchedPackageJsonFiles:new Map,filesWatched:new Map,lastCachedPackageJsonLookups:new Map,timerToBuildInvalidatedProject:void 0,reportFileChangeDetected:!1,watchFile:v,watchDirectory:S,writeLog:x};return A}function fd(e,t){return Ts(t,e.compilerHost.getCurrentDirectory(),e.compilerHost.getCanonicalFileName)}function W_(e,t){let{resolvedConfigFilePaths:r}=e,i=r.get(t);if(i!==void 0)return i;let o=fd(e,t);return r.set(t,o),o}function Ime(e){return!!e.options}function H8e(e,t){let r=e.configFileCache.get(t);return r&&Ime(r)?r:void 0}function QT(e,t,r){let{configFileCache:i}=e,o=i.get(r);if(o)return Ime(o)?o:void 0;Fs(\"SolutionBuilder::beforeConfigFileParsing\");let s,{parseConfigFileHost:l,baseCompilerOptions:f,baseWatchOptions:d,extendedConfigCache:g,host:m}=e,v;return m.getParsedCommandLine?(v=m.getParsedCommandLine(t),v||(s=ps(_.File_0_not_found,t))):(l.onUnRecoverableConfigFileDiagnostic=S=>s=S,v=OO(t,f,l,g,d),l.onUnRecoverableConfigFileDiagnostic=Ba),i.set(r,v||s),Fs(\"SolutionBuilder::afterConfigFileParsing\"),mf(\"SolutionBuilder::Config file parsing\",\"SolutionBuilder::beforeConfigFileParsing\",\"SolutionBuilder::afterConfigFileParsing\"),v}function V2(e,t){return Hq(Fy(e.compilerHost.getCurrentDirectory(),t))}function Lme(e,t){let r=new Map,i=new Map,o=[],s,l;for(let d of t)f(d);return l?{buildOrder:s||Je,circularDiagnostics:l}:s||Je;function f(d,g){let m=W_(e,d);if(i.has(m))return;if(r.has(m)){g||(l||(l=[])).push(ps(_.Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0,o.join(`\\r\n`)));return}r.set(m,!0),o.push(d);let v=QT(e,d,m);if(v&&v.projectReferences)for(let S of v.projectReferences){let x=V2(e,S.path);f(x,g||S.circular)}o.pop(),i.set(m,!0),(s||(s=[])).push(d)}}function AN(e){return e.buildOrder||W8e(e)}function W8e(e){let t=Lme(e,e.rootNames.map(o=>V2(e,o)));e.resolvedConfigFilePaths.clear();let r=new Map(ZF(t).map(o=>[W_(e,o),!0])),i={onDeleteValue:Ba};return Oh(e.configFileCache,r,i),Oh(e.projectStatus,r,i),Oh(e.builderPrograms,r,i),Oh(e.diagnostics,r,i),Oh(e.projectPendingBuild,r,i),Oh(e.projectErrorsReported,r,i),Oh(e.buildInfoCache,r,i),Oh(e.outputTimeStamps,r,i),e.watch&&(Oh(e.allWatchedConfigFiles,r,{onDeleteValue:am}),e.allWatchedExtendedConfigFiles.forEach(o=>{o.projects.forEach(s=>{r.has(s)||o.projects.delete(s)}),o.close()}),Oh(e.allWatchedWildcardDirectories,r,{onDeleteValue:o=>o.forEach(_m)}),Oh(e.allWatchedInputFiles,r,{onDeleteValue:o=>o.forEach(am)}),Oh(e.allWatchedPackageJsonFiles,r,{onDeleteValue:o=>o.forEach(am)})),e.buildOrder=t}function kme(e,t,r){let i=t&&V2(e,t),o=AN(e);if($S(o))return o;if(i){let l=W_(e,i);if(Yc(o,d=>W_(e,d)===l)===-1)return}let s=i?Lme(e,[i]):o;return L.assert(!$S(s)),L.assert(!r||i!==void 0),L.assert(!r||s[s.length-1]===i),r?s.slice(0,s.length-1):s}function Dme(e){e.cache&&Jq(e);let{compilerHost:t,host:r}=e,i=e.readFileWithCache,o=t.getSourceFile,{originalReadFile:s,originalFileExists:l,originalDirectoryExists:f,originalCreateDirectory:d,originalWriteFile:g,getSourceFileWithCache:m,readFileWithCache:v}=mN(r,S=>fd(e,S),(...S)=>o.call(t,...S));e.readFileWithCache=v,t.getSourceFile=m,e.cache={originalReadFile:s,originalFileExists:l,originalDirectoryExists:f,originalCreateDirectory:d,originalWriteFile:g,originalReadFileWithCache:i,originalGetSourceFile:o}}function Jq(e){if(!e.cache)return;let{cache:t,host:r,compilerHost:i,extendedConfigCache:o,moduleResolutionCache:s,typeReferenceDirectiveResolutionCache:l}=e;r.readFile=t.originalReadFile,r.fileExists=t.originalFileExists,r.directoryExists=t.originalDirectoryExists,r.createDirectory=t.originalCreateDirectory,r.writeFile=t.originalWriteFile,i.getSourceFile=t.originalGetSourceFile,e.readFileWithCache=t.originalReadFileWithCache,o.clear(),s?.clear(),l?.clear(),e.cache=void 0}function wme(e,t){e.projectStatus.delete(t),e.diagnostics.delete(t)}function Rme({projectPendingBuild:e},t,r){let i=e.get(t);(i===void 0||i<r)&&e.set(t,r)}function Ome(e,t){if(!e.allProjectBuildPending)return;e.allProjectBuildPending=!1,e.options.watch&&iX(e,_.Starting_compilation_in_watch_mode),Dme(e),ZF(AN(e)).forEach(i=>e.projectPendingBuild.set(W_(e,i),0)),t&&t.throwIfCancellationRequested()}function Nme(e,t){return e.projectPendingBuild.delete(t),e.diagnostics.has(t)?1:0}function z8e(e,t,r,i,o){let s=!0;return{kind:2,project:t,projectPath:r,buildOrder:o,getCompilerOptions:()=>i.options,getCurrentDirectory:()=>e.compilerHost.getCurrentDirectory(),updateOutputFileStatmps:()=>{jme(e,i,r),s=!1},done:()=>(s&&jme(e,i,r),Fs(\"SolutionBuilder::Timestamps only updates\"),Nme(e,r))}}function Pme(e,t,r,i,o,s,l){let f=e===0?0:4,d,g,m;return e===0?{kind:e,project:r,projectPath:i,buildOrder:l,getCompilerOptions:()=>s.options,getCurrentDirectory:()=>t.compilerHost.getCurrentDirectory(),getBuilderProgram:()=>S(Ks),getProgram:()=>S(R=>R.getProgramOrUndefined()),getSourceFile:R=>S(ie=>ie.getSourceFile(R)),getSourceFiles:()=>x(R=>R.getSourceFiles()),getOptionsDiagnostics:R=>x(ie=>ie.getOptionsDiagnostics(R)),getGlobalDiagnostics:R=>x(ie=>ie.getGlobalDiagnostics(R)),getConfigFileParsingDiagnostics:()=>x(R=>R.getConfigFileParsingDiagnostics()),getSyntacticDiagnostics:(R,ie)=>x(Q=>Q.getSyntacticDiagnostics(R,ie)),getAllDependencies:R=>x(ie=>ie.getAllDependencies(R)),getSemanticDiagnostics:(R,ie)=>x(Q=>Q.getSemanticDiagnostics(R,ie)),getSemanticDiagnosticsOfNextAffectedFile:(R,ie)=>S(Q=>Q.getSemanticDiagnosticsOfNextAffectedFile&&Q.getSemanticDiagnosticsOfNextAffectedFile(R,ie)),emit:(R,ie,Q,fe,Z)=>{if(R||fe)return S(U=>{var re,le;return U.emit(R,ie,Q,fe,Z||((le=(re=t.host).getCustomTransformers)==null?void 0:le.call(re,r)))});if(Y(2,Q),f===5)return B(ie,Q);if(f===3)return F(ie,Q,Z)},done:v}:{kind:e,project:r,projectPath:i,buildOrder:l,getCompilerOptions:()=>s.options,getCurrentDirectory:()=>t.compilerHost.getCurrentDirectory(),emit:(R,ie)=>f!==4?m:W(R,ie),done:v};function v(R,ie,Q){return Y(8,R,ie,Q),Fs(e===0?\"SolutionBuilder::Projects built\":\"SolutionBuilder::Bundles updated\"),Nme(t,i)}function S(R){return Y(0),d&&R(d)}function x(R){return S(R)||Je}function A(){var R,ie;if(L.assert(d===void 0),t.options.dry){hu(t,_.A_non_dry_build_would_build_project_0,r),g=1,f=7;return}if(t.options.verbose&&hu(t,_.Building_project_0,r),s.fileNames.length===0){j2(t,i,YT(s)),g=0,f=7;return}let{host:Q,compilerHost:fe}=t;t.projectCompilerOptions=s.options,(R=t.moduleResolutionCache)==null||R.update(s.options),(ie=t.typeReferenceDirectiveResolutionCache)==null||ie.update(s.options),d=Q.createProgram(s.fileNames,s.options,fe,K8e(t,i,s),YT(s),s.projectReferences),t.watch&&(t.lastCachedPackageJsonLookups.set(i,t.moduleResolutionCache&&on(t.moduleResolutionCache.getPackageJsonInfoCache().entries(),([Z,U])=>[t.host.realpath&&U?fd(t,t.host.realpath(Z)):Z,U])),t.builderPrograms.set(i,d)),f++}function w(R,ie,Q){R.length?{buildResult:g,step:f}=Xq(t,i,d,s,R,ie,Q):f++}function C(R){L.assertIsDefined(d),w([...d.getConfigFileParsingDiagnostics(),...d.getOptionsDiagnostics(R),...d.getGlobalDiagnostics(R),...d.getSyntacticDiagnostics(void 0,R)],8,\"Syntactic\")}function P(R){w(L.checkDefined(d).getSemanticDiagnostics(void 0,R),16,\"Semantic\")}function F(R,ie,Q){var fe,Z,U;L.assertIsDefined(d),L.assert(f===3);let re=d.saveEmitState(),le,_e=Ye=>(le||(le=[])).push(Ye),ge=[],{emitResult:X}=qF(d,_e,void 0,void 0,(Ye,_t,ct,Rt,We,qe)=>ge.push({name:Ye,text:_t,writeByteOrderMark:ct,data:qe}),ie,!1,Q||((Z=(fe=t.host).getCustomTransformers)==null?void 0:Z.call(fe,r)));if(le)return d.restoreEmitState(re),{buildResult:g,step:f}=Xq(t,i,d,s,le,32,\"Declaration file\"),{emitSkipped:!0,diagnostics:X.diagnostics};let{host:Ve,compilerHost:we}=t,ke=(U=d.hasChangedEmitSignature)!=null&&U.call(d)?0:2,Pe=YA(),Ce=new Map,Ie=d.getCompilerOptions(),Be=PR(Ie),Ne,Le;return ge.forEach(({name:Ye,text:_t,writeByteOrderMark:ct,data:Rt})=>{let We=fd(t,Ye);Ce.set(fd(t,Ye),Ye),Rt?.buildInfo&&$q(t,Rt.buildInfo,i,Ie,ke);let qe=Rt?.differsOnlyInMap?Q1(t.host,Ye):void 0;UI(R?{writeFile:R}:we,Pe,Ye,_t,ct),Rt?.differsOnlyInMap?t.host.setModifiedTime(Ye,qe):!Be&&t.watch&&(Ne||(Ne=Yq(t,i))).set(We,Le||(Le=xN(t.host)))}),q(Pe,Ce,ge.length?ge[0].name:JK(s,!Ve.useCaseSensitiveFileNames()),ke),X}function B(R,ie){L.assertIsDefined(d),L.assert(f===5);let Q=d.emitBuildInfo((fe,Z,U,re,le,_e)=>{_e?.buildInfo&&$q(t,_e.buildInfo,i,d.getCompilerOptions(),2),R?R(fe,Z,U,re,le,_e):t.compilerHost.writeFile(fe,Z,U,re,le,_e)},ie);return Q.diagnostics.length&&(IN(t,Q.diagnostics),t.diagnostics.set(i,[...t.diagnostics.get(i),...Q.diagnostics]),g=64&g),Q.emittedFiles&&t.write&&Q.emittedFiles.forEach(fe=>Gme(t,s,fe)),qq(t,d,s),f=7,Q}function q(R,ie,Q,fe){let Z=R.getDiagnostics();return Z.length?({buildResult:g,step:f}=Xq(t,i,d,s,Z,64,\"Emit\"),Z):(t.write&&ie.forEach(U=>Gme(t,s,U)),Vme(t,s,i,_.Updating_unchanged_output_timestamps_of_project_0,ie),t.diagnostics.delete(i),t.projectStatus.set(i,{type:1,oldestOutputFileName:Q}),qq(t,d,s),f=7,g=fe,Z)}function W(R,ie){var Q,fe,Z,U;if(L.assert(e===1),t.options.dry){hu(t,_.A_non_dry_build_would_update_output_of_project_0,r),g=1,f=7;return}t.options.verbose&&hu(t,_.Updating_output_of_project_0,r);let{compilerHost:re}=t;t.projectCompilerOptions=s.options,(fe=(Q=t.host).beforeEmitBundle)==null||fe.call(Q,s);let le=Ppe(s,re,ke=>{let Pe=V2(t,ke.path);return QT(t,Pe,W_(t,Pe))},ie||((U=(Z=t.host).getCustomTransformers)==null?void 0:U.call(Z,r)));if(Ta(le))return hu(t,_.Cannot_update_output_of_project_0_because_there_was_error_reading_file_1,r,cl(t,le)),f=6,m=Pme(0,t,r,i,o,s,l);L.assert(!!le.length);let _e=YA(),ge=new Map,X=2,Ve=t.buildInfoCache.get(i).buildInfo||void 0;le.forEach(({name:ke,text:Pe,writeByteOrderMark:Ce,data:Ie})=>{var Be,Ne;ge.set(fd(t,ke),ke),Ie?.buildInfo&&(((Be=Ie.buildInfo.program)==null?void 0:Be.outSignature)!==((Ne=Ve?.program)==null?void 0:Ne.outSignature)&&(X&=-3),$q(t,Ie.buildInfo,i,s.options,X)),UI(R?{writeFile:R}:re,_e,ke,Pe,Ce)});let we=q(_e,ge,le[0].name,X);return{emitSkipped:!1,diagnostics:we}}function Y(R,ie,Q,fe){for(;f<=R&&f<8;){let Z=f;switch(f){case 0:A();break;case 1:C(ie);break;case 2:P(ie);break;case 3:F(Q,ie,fe);break;case 5:B(Q,ie);break;case 4:W(Q,fe);break;case 6:L.checkDefined(m).done(ie,Q,fe),f=8;break;case 7:$8e(t,r,i,o,s,l,L.checkDefined(g)),f++;break;case 8:default:}L.assert(f>Z)}}}function J8e({options:e},t,r){return t.type!==3||e.force?!0:r.fileNames.length===0||!!YT(r).length||!PR(r.options)}function Mme(e,t,r){if(!e.projectPendingBuild.size||$S(t))return;let{options:i,projectPendingBuild:o}=e;for(let s=0;s<t.length;s++){let l=t[s],f=W_(e,l),d=e.projectPendingBuild.get(f);if(d===void 0)continue;r&&(r=!1,Qme(e,t));let g=QT(e,l,f);if(!g){Yme(e,f),o.delete(f);continue}d===2?(Jme(e,l,f,g),Kme(e,f,g),qme(e,l,f,g),nX(e,l,f,g),rX(e,l,f,g)):d===1&&(g.fileNames=UO(g.options.configFile.configFileSpecs,ni(l),g.options,e.parseConfigFileHost),CJ(g.fileNames,l,g.options.configFile.configFileSpecs,g.errors,GO(g.raw)),nX(e,l,f,g),rX(e,l,f,g));let m=eX(e,g,f);if(!i.force){if(m.type===1){n7(e,l,m),j2(e,f,YT(g)),o.delete(f),i.dry&&hu(e,_.Project_0_is_up_to_date,l);continue}if(m.type===2||m.type===15)return j2(e,f,YT(g)),{kind:2,status:m,project:l,projectPath:f,projectIndex:s,config:g}}if(m.type===12){n7(e,l,m),j2(e,f,YT(g)),o.delete(f),i.verbose&&hu(e,m.upstreamProjectBlocked?_.Skipping_build_of_project_0_because_its_dependency_1_was_not_built:_.Skipping_build_of_project_0_because_its_dependency_1_has_errors,l,m.upstreamProjectName);continue}if(m.type===16){n7(e,l,m),j2(e,f,YT(g)),o.delete(f);continue}return{kind:J8e(e,m,g)?0:1,status:m,project:l,projectPath:f,projectIndex:s,config:g}}}function Fme(e,t,r){return n7(e,t.project,t.status),t.kind!==2?Pme(t.kind,e,t.project,t.projectPath,t.projectIndex,t.config,r):z8e(e,t.project,t.projectPath,t.config,r)}function Kq(e,t,r){let i=Mme(e,t,r);return i&&Fme(e,i,t)}function Gme({write:e},t,r){e&&t.options.listEmittedFiles&&e(`TSFILE: ${r}`)}function K8e({options:e,builderPrograms:t,compilerHost:r},i,o){if(e.force)return;let s=t.get(i);return s||QF(o.options,r)}function qq(e,t,r){t?(e.write&&Rq(t,e.write),e.host.afterProgramEmitAndDiagnostics&&e.host.afterProgramEmitAndDiagnostics(t),t.releaseProgram()):e.host.afterEmitBundle&&e.host.afterEmitBundle(r),e.projectCompilerOptions=e.baseCompilerOptions}function Xq(e,t,r,i,o,s,l){let f=r&&!Ss(r.getCompilerOptions());return j2(e,t,o),e.projectStatus.set(t,{type:0,reason:`${l} errors`}),f?{buildResult:s,step:5}:(qq(e,r,i),{buildResult:s,step:7})}function e7(e){return!!e.watcher}function Bme(e,t){let r=fd(e,t),i=e.filesWatched.get(r);if(e.watch&&!!i){if(!e7(i))return i;if(i.modifiedTime)return i.modifiedTime}let o=Q1(e.host,t);return e.watch&&(i?i.modifiedTime=o:e.filesWatched.set(r,o)),o}function t7(e,t,r,i,o,s,l){let f=fd(e,t),d=e.filesWatched.get(f);if(d&&e7(d))d.callbacks.push(r);else{let g=e.watchFile(t,(m,v,S)=>{let x=L.checkDefined(e.filesWatched.get(f));L.assert(e7(x)),x.modifiedTime=S,x.callbacks.forEach(A=>A(m,v,S))},i,o,s,l);e.filesWatched.set(f,{callbacks:[r],watcher:g,modifiedTime:d})}return{close:()=>{let g=L.checkDefined(e.filesWatched.get(f));L.assert(e7(g)),g.callbacks.length===1?(e.filesWatched.delete(f),_m(g)):$D(g.callbacks,r)}}}function Yq(e,t){if(!e.watch)return;let r=e.outputTimeStamps.get(t);return r||e.outputTimeStamps.set(t,r=new Map),r}function $q(e,t,r,i,o){let s=Jg(i),l=Qq(e,s,r),f=xN(e.host);l?(l.buildInfo=t,l.modifiedTime=f,o&2||(l.latestChangedDtsTime=f)):e.buildInfoCache.set(r,{path:fd(e,s),buildInfo:t,modifiedTime:f,latestChangedDtsTime:o&2?void 0:f})}function Qq(e,t,r){let i=fd(e,t),o=e.buildInfoCache.get(r);return o?.path===i?o:void 0}function Ume(e,t,r,i){let o=fd(e,t),s=e.buildInfoCache.get(r);if(s!==void 0&&s.path===o)return s.buildInfo||void 0;let l=e.readFileWithCache(t),f=l?IF(t,l):void 0;return e.buildInfoCache.set(r,{path:o,buildInfo:f||!1,modifiedTime:i||Eh}),f}function Zq(e,t,r,i){let o=Bme(e,t);if(r<o)return{type:6,outOfDateOutputFileName:i,newerInputFileName:t}}function q8e(e,t,r){var i,o;if(!t.fileNames.length&&!GO(t.raw))return{type:16};let s,l=!!e.options.force;if(t.projectReferences){e.projectStatus.set(r,{type:13});for(let Q of t.projectReferences){let fe=QL(Q),Z=W_(e,fe),U=QT(e,fe,Z),re=eX(e,U,Z);if(!(re.type===13||re.type===16)){if(re.type===0||re.type===12)return{type:12,upstreamProjectName:Q.path,upstreamProjectBlocked:re.type===12};if(re.type!==1)return{type:11,upstreamProjectName:Q.path};l||(s||(s=[])).push({ref:Q,refStatus:re,resolvedRefPath:Z,resolvedConfig:U})}}}if(l)return{type:17};let{host:f}=e,d=Jg(t.options),g,m=ehe,v,S,x;if(d){let Q=Qq(e,d,r);if(v=Q?.modifiedTime||Q1(f,d),v===Eh)return Q||e.buildInfoCache.set(r,{path:fd(e,d),buildInfo:!1,modifiedTime:v}),{type:4,missingOutputFileName:d};let fe=Ume(e,d,r,v);if(!fe)return{type:5,fileName:d};if((fe.bundle||fe.program)&&fe.version!==wf)return{type:14,version:fe.version};if(fe.program){if(((i=fe.program.changeFileSet)==null?void 0:i.length)||(t.options.noEmit?vt(fe.program.semanticDiagnosticsPerFile,ba):(o=fe.program.affectedFilesPendingEmit)==null?void 0:o.length))return{type:8,buildInfoFile:d};if(!t.options.noEmit&&B2(t.options,fe.program.options||{}))return{type:9,buildInfoFile:d};S=fe.program}m=v,g=d}let A,w=Zme,C=!1,P=new Set;for(let Q of t.fileNames){let fe=Bme(e,Q);if(fe===Eh)return{type:0,reason:`${Q} does not exist`};if(v&&v<fe){let Z,U;if(S){x||(x=Aq(S,d,f)),Z=x.fileInfos.get(fd(e,Q));let re=Z?e.readFileWithCache(Q):void 0;U=re!==void 0?XF(f,re):void 0,Z&&Z===U&&(C=!0)}if(!Z||Z!==U)return{type:6,outOfDateOutputFileName:d,newerInputFileName:Q}}fe>w&&(A=Q,w=fe),S&&P.add(fd(e,Q))}if(S){x||(x=Aq(S,d,f));for(let Q of x.roots)if(!P.has(Q))return{type:10,buildInfoFile:d,inputFile:Q}}if(!d){let Q=AF(t,!f.useCaseSensitiveFileNames()),fe=Yq(e,r);for(let Z of Q){let U=fd(e,Z),re=fe?.get(U);if(re||(re=Q1(e.host,Z),fe?.set(U,re)),re===Eh)return{type:4,missingOutputFileName:Z};if(re<w)return{type:6,outOfDateOutputFileName:Z,newerInputFileName:A};re<m&&(m=re,g=Z)}}let F=e.buildInfoCache.get(r),B=!1,q=!1,W;if(s)for(let{ref:Q,refStatus:fe,resolvedConfig:Z,resolvedRefPath:U}of s){if(q=q||!!Q.prepend,fe.newestInputFileTime&&fe.newestInputFileTime<=m)continue;if(F&&X8e(e,F,U))return{type:7,outOfDateOutputFileName:d,newerProjectName:Q.path};let re=Y8e(e,Z.options,U);if(re&&re<=m){B=!0,W=Q.path;continue}return L.assert(g!==void 0,\"Should have an oldest output filename here\"),{type:7,outOfDateOutputFileName:g,newerProjectName:Q.path}}let Y=Zq(e,t.options.configFilePath,m,g);if(Y)return Y;let R=mn(t.options.configFile.extendedSourceFiles||Je,Q=>Zq(e,Q,m,g));if(R)return R;let ie=mn(e.lastCachedPackageJsonLookups.get(r)||Je,([Q])=>Zq(e,Q,m,g));return ie||(q&&B?{type:3,outOfDateOutputFileName:g,newerProjectName:W}:{type:B?2:C?15:1,newestInputFileTime:w,newestInputFileName:A,oldestOutputFileName:g})}function X8e(e,t,r){return e.buildInfoCache.get(r).path===t.path}function eX(e,t,r){if(t===void 0)return{type:0,reason:\"File deleted mid-build\"};let i=e.projectStatus.get(r);if(i!==void 0)return i;Fs(\"SolutionBuilder::beforeUpToDateCheck\");let o=q8e(e,t,r);return Fs(\"SolutionBuilder::afterUpToDateCheck\"),mf(\"SolutionBuilder::Up-to-date check\",\"SolutionBuilder::beforeUpToDateCheck\",\"SolutionBuilder::afterUpToDateCheck\"),e.projectStatus.set(r,o),o}function Vme(e,t,r,i,o){if(t.options.noEmit)return;let s,l=Jg(t.options);if(l){o?.has(fd(e,l))||(e.options.verbose&&hu(e,i,t.options.configFilePath),e.host.setModifiedTime(l,s=xN(e.host)),Qq(e,l,r).modifiedTime=s),e.outputTimeStamps.delete(r);return}let{host:f}=e,d=AF(t,!f.useCaseSensitiveFileNames()),g=Yq(e,r),m=g?new Set:void 0;if(!o||d.length!==o.size){let v=!!e.options.verbose;for(let S of d){let x=fd(e,S);o?.has(x)||(v&&(v=!1,hu(e,i,t.options.configFilePath)),f.setModifiedTime(S,s||(s=xN(e.host))),g&&(g.set(x,s),m.add(x)))}}g?.forEach((v,S)=>{!o?.has(S)&&!m.has(S)&&g.delete(S)})}function Y8e(e,t,r){if(!t.composite)return;let i=L.checkDefined(e.buildInfoCache.get(r));if(i.latestChangedDtsTime!==void 0)return i.latestChangedDtsTime||void 0;let o=i.buildInfo&&i.buildInfo.program&&i.buildInfo.program.latestChangedDtsFile?e.host.getModifiedTime(_a(i.buildInfo.program.latestChangedDtsFile,ni(i.path))):void 0;return i.latestChangedDtsTime=o||!1,o}function jme(e,t,r){if(e.options.dry)return hu(e,_.A_non_dry_build_would_update_timestamps_for_output_of_project_0,t.options.configFilePath);Vme(e,t,r,_.Updating_output_timestamps_of_project_0),e.projectStatus.set(r,{type:1,oldestOutputFileName:JK(t,!e.host.useCaseSensitiveFileNames())})}function $8e(e,t,r,i,o,s,l){if(!(l&124)&&!!o.options.composite)for(let f=i+1;f<s.length;f++){let d=s[f],g=W_(e,d);if(e.projectPendingBuild.has(g))continue;let m=QT(e,d,g);if(!(!m||!m.projectReferences))for(let v of m.projectReferences){let S=V2(e,v.path);if(W_(e,S)!==r)continue;let x=e.projectStatus.get(g);if(x)switch(x.type){case 1:if(l&2){v.prepend?e.projectStatus.set(g,{type:3,outOfDateOutputFileName:x.oldestOutputFileName,newerProjectName:t}):x.type=2;break}case 15:case 2:case 3:l&2||e.projectStatus.set(g,{type:7,outOfDateOutputFileName:x.type===3?x.outOfDateOutputFileName:x.oldestOutputFileName,newerProjectName:t});break;case 12:W_(e,V2(e,x.upstreamProjectName))===r&&wme(e,g);break}Rme(e,g,0);break}}}function Hme(e,t,r,i,o,s){Fs(\"SolutionBuilder::beforeBuild\");let l=Q8e(e,t,r,i,o,s);return Fs(\"SolutionBuilder::afterBuild\"),mf(\"SolutionBuilder::Build\",\"SolutionBuilder::beforeBuild\",\"SolutionBuilder::afterBuild\"),l}function Q8e(e,t,r,i,o,s){let l=kme(e,t,s);if(!l)return 3;Ome(e,r);let f=!0,d=0;for(;;){let g=Kq(e,l,f);if(!g)break;f=!1,g.done(r,i,o?.(g.project)),e.diagnostics.has(g.projectPath)||d++}return Jq(e),$me(e,l),n6e(e,l),$S(l)?4:l.some(g=>e.diagnostics.has(W_(e,g)))?d?2:1:0}function Wme(e,t,r){Fs(\"SolutionBuilder::beforeClean\");let i=Z8e(e,t,r);return Fs(\"SolutionBuilder::afterClean\"),mf(\"SolutionBuilder::Clean\",\"SolutionBuilder::beforeClean\",\"SolutionBuilder::afterClean\"),i}function Z8e(e,t,r){let i=kme(e,t,r);if(!i)return 3;if($S(i))return IN(e,i.circularDiagnostics),4;let{options:o,host:s}=e,l=o.dry?[]:void 0;for(let f of i){let d=W_(e,f),g=QT(e,f,d);if(g===void 0){Yme(e,d);continue}let m=AF(g,!s.useCaseSensitiveFileNames());if(!m.length)continue;let v=new Set(g.fileNames.map(S=>fd(e,S)));for(let S of m)v.has(fd(e,S))||s.fileExists(S)&&(l?l.push(S):(s.deleteFile(S),tX(e,d,0)))}return l&&hu(e,_.A_non_dry_build_would_delete_the_following_files_Colon_0,l.map(f=>`\\r\n * ${f}`).join(\"\")),0}function tX(e,t,r){e.host.getParsedCommandLine&&r===1&&(r=2),r===2&&(e.configFileCache.delete(t),e.buildOrder=void 0),e.needsSummary=!0,wme(e,t),Rme(e,t,r),Dme(e)}function CN(e,t,r){e.reportFileChangeDetected=!0,tX(e,t,r),zme(e,250,!0)}function zme(e,t,r){let{hostWithWatch:i}=e;!i.setTimeout||!i.clearTimeout||(e.timerToBuildInvalidatedProject&&i.clearTimeout(e.timerToBuildInvalidatedProject),e.timerToBuildInvalidatedProject=i.setTimeout(e6e,t,e,r))}function e6e(e,t){Fs(\"SolutionBuilder::beforeBuild\");let r=t6e(e,t);Fs(\"SolutionBuilder::afterBuild\"),mf(\"SolutionBuilder::Build\",\"SolutionBuilder::beforeBuild\",\"SolutionBuilder::afterBuild\"),r&&$me(e,r)}function t6e(e,t){e.timerToBuildInvalidatedProject=void 0,e.reportFileChangeDetected&&(e.reportFileChangeDetected=!1,e.projectErrorsReported.clear(),iX(e,_.File_change_detected_Starting_incremental_compilation));let r=0,i=AN(e),o=Kq(e,i,!1);if(o)for(o.done(),r++;e.projectPendingBuild.size;){if(e.timerToBuildInvalidatedProject)return;let s=Mme(e,i,!1);if(!s)break;if(s.kind!==2&&(t||r===5)){zme(e,100,!1);return}Fme(e,s,i).done(),s.kind!==2&&r++}return Jq(e),i}function Jme(e,t,r,i){!e.watch||e.allWatchedConfigFiles.has(r)||e.allWatchedConfigFiles.set(r,t7(e,t,()=>CN(e,r,2),2e3,i?.watchOptions,jf.ConfigFile,t))}function Kme(e,t,r){YK(t,r?.options,e.allWatchedExtendedConfigFiles,(i,o)=>t7(e,i,()=>{var s;return(s=e.allWatchedExtendedConfigFiles.get(o))==null?void 0:s.projects.forEach(l=>CN(e,l,2))},2e3,r?.watchOptions,jf.ExtendedConfigFile),i=>fd(e,i))}function qme(e,t,r,i){!e.watch||kF(zq(e.allWatchedWildcardDirectories,r),new Map(Object.entries(i.wildcardDirectories)),(o,s)=>e.watchDirectory(o,l=>{var f;DF({watchedDirPath:fd(e,o),fileOrDirectory:l,fileOrDirectoryPath:fd(e,l),configFileName:t,currentDirectory:e.compilerHost.getCurrentDirectory(),options:i.options,program:e.builderPrograms.get(r)||((f=H8e(e,r))==null?void 0:f.fileNames),useCaseSensitiveFileNames:e.parseConfigFileHost.useCaseSensitiveFileNames,writeLog:d=>e.writeLog(d),toPath:d=>fd(e,d)})||CN(e,r,1)},s,i?.watchOptions,jf.WildcardDirectory,t))}function nX(e,t,r,i){!e.watch||t2(zq(e.allWatchedInputFiles,r),p0(i.fileNames,o=>fd(e,o)),{createNewValue:(o,s)=>t7(e,s,()=>CN(e,r,0),250,i?.watchOptions,jf.SourceFile,t),onDeleteValue:am})}function rX(e,t,r,i){!e.watch||!e.lastCachedPackageJsonLookups||t2(zq(e.allWatchedPackageJsonFiles,r),new Map(e.lastCachedPackageJsonLookups.get(r)),{createNewValue:(o,s)=>t7(e,o,()=>CN(e,r,0),2e3,i?.watchOptions,jf.PackageJson,t),onDeleteValue:am})}function n6e(e,t){if(!!e.watchAllProjectsPending){Fs(\"SolutionBuilder::beforeWatcherCreation\"),e.watchAllProjectsPending=!1;for(let r of ZF(t)){let i=W_(e,r),o=QT(e,r,i);Jme(e,r,i,o),Kme(e,i,o),o&&(qme(e,r,i,o),nX(e,r,i,o),rX(e,r,i,o))}Fs(\"SolutionBuilder::afterWatcherCreation\"),mf(\"SolutionBuilder::Watcher creation\",\"SolutionBuilder::beforeWatcherCreation\",\"SolutionBuilder::afterWatcherCreation\")}}function r6e(e){Ef(e.allWatchedConfigFiles,am),Ef(e.allWatchedExtendedConfigFiles,_m),Ef(e.allWatchedWildcardDirectories,t=>Ef(t,_m)),Ef(e.allWatchedInputFiles,t=>Ef(t,am)),Ef(e.allWatchedPackageJsonFiles,t=>Ef(t,am))}function Xme(e,t,r,i,o){let s=j8e(e,t,r,i,o);return{build:(l,f,d,g)=>Hme(s,l,f,d,g),clean:l=>Wme(s,l),buildReferences:(l,f,d,g)=>Hme(s,l,f,d,g,!0),cleanReferences:l=>Wme(s,l,!0),getNextInvalidatedProject:l=>(Ome(s,l),Kq(s,AN(s),!1)),getBuildOrder:()=>AN(s),getUpToDateStatusOfProject:l=>{let f=V2(s,l),d=W_(s,f);return eX(s,QT(s,f,d),d)},invalidateProject:(l,f)=>tX(s,l,f||0),close:()=>r6e(s)}}function cl(e,t){return iI(t,e.compilerHost.getCurrentDirectory(),e.compilerHost.getCanonicalFileName)}function hu(e,t,...r){e.host.reportSolutionBuilderStatus(ps(t,...r))}function iX(e,t,...r){var i,o;(o=(i=e.hostWithWatch).onWatchStatusChange)==null||o.call(i,ps(t,...r),e.host.getNewLine(),e.baseCompilerOptions)}function IN({host:e},t){t.forEach(r=>e.reportDiagnostic(r))}function j2(e,t,r){IN(e,r),e.projectErrorsReported.set(t,!0),r.length&&e.diagnostics.set(t,r)}function Yme(e,t){j2(e,t,[e.configFileCache.get(t)])}function $me(e,t){if(!e.needsSummary)return;e.needsSummary=!1;let r=e.watch||!!e.host.reportErrorSummary,{diagnostics:i}=e,o=0,s=[];$S(t)?(Qme(e,t.buildOrder),IN(e,t.circularDiagnostics),r&&(o+=JF(t.circularDiagnostics)),r&&(s=[...s,...KF(t.circularDiagnostics)])):(t.forEach(l=>{let f=W_(e,l);e.projectErrorsReported.has(f)||IN(e,i.get(f)||Je)}),r&&i.forEach(l=>o+=JF(l)),r&&i.forEach(l=>[...s,...KF(l)])),e.watch?iX(e,wq(o),o):e.host.reportErrorSummary&&e.host.reportErrorSummary(o,s)}function Qme(e,t){e.options.verbose&&hu(e,_.Projects_in_this_build_Colon_0,t.map(r=>`\\r\n    * `+cl(e,r)).join(\"\"))}function i6e(e,t,r){switch(r.type){case 6:return hu(e,_.Project_0_is_out_of_date_because_output_1_is_older_than_input_2,cl(e,t),cl(e,r.outOfDateOutputFileName),cl(e,r.newerInputFileName));case 7:return hu(e,_.Project_0_is_out_of_date_because_output_1_is_older_than_input_2,cl(e,t),cl(e,r.outOfDateOutputFileName),cl(e,r.newerProjectName));case 4:return hu(e,_.Project_0_is_out_of_date_because_output_file_1_does_not_exist,cl(e,t),cl(e,r.missingOutputFileName));case 5:return hu(e,_.Project_0_is_out_of_date_because_there_was_error_reading_file_1,cl(e,t),cl(e,r.fileName));case 8:return hu(e,_.Project_0_is_out_of_date_because_buildinfo_file_1_indicates_that_some_of_the_changes_were_not_emitted,cl(e,t),cl(e,r.buildInfoFile));case 9:return hu(e,_.Project_0_is_out_of_date_because_buildinfo_file_1_indicates_there_is_change_in_compilerOptions,cl(e,t),cl(e,r.buildInfoFile));case 10:return hu(e,_.Project_0_is_out_of_date_because_buildinfo_file_1_indicates_that_file_2_was_root_file_of_compilation_but_not_any_more,cl(e,t),cl(e,r.buildInfoFile),cl(e,r.inputFile));case 1:if(r.newestInputFileTime!==void 0)return hu(e,_.Project_0_is_up_to_date_because_newest_input_1_is_older_than_output_2,cl(e,t),cl(e,r.newestInputFileName||\"\"),cl(e,r.oldestOutputFileName||\"\"));break;case 3:return hu(e,_.Project_0_is_out_of_date_because_output_of_its_dependency_1_has_changed,cl(e,t),cl(e,r.newerProjectName));case 2:return hu(e,_.Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies,cl(e,t));case 15:return hu(e,_.Project_0_is_up_to_date_but_needs_to_update_timestamps_of_output_files_that_are_older_than_input_files,cl(e,t));case 11:return hu(e,_.Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date,cl(e,t),cl(e,r.upstreamProjectName));case 12:return hu(e,r.upstreamProjectBlocked?_.Project_0_can_t_be_built_because_its_dependency_1_was_not_built:_.Project_0_can_t_be_built_because_its_dependency_1_has_errors,cl(e,t),cl(e,r.upstreamProjectName));case 0:return hu(e,_.Failed_to_parse_file_0_Colon_1,cl(e,t),r.reason);case 14:return hu(e,_.Project_0_is_out_of_date_because_output_for_it_was_generated_with_version_1_that_differs_with_current_version_2,cl(e,t),r.version,wf);case 17:return hu(e,_.Project_0_is_being_forcibly_rebuilt,cl(e,t));case 16:case 13:break;default:}}function n7(e,t,r){e.options.verbose&&i6e(e,t,r)}var Zme,ehe,aX,a6e=gt({\"src/compiler/tsbuildPublic.ts\"(){\"use strict\";fa(),fa(),E0(),Zme=new Date(-864e13),ehe=new Date(864e13),aX=(e=>(e[e.Build=0]=\"Build\",e[e.UpdateBundle=1]=\"UpdateBundle\",e[e.UpdateOutputFileStamps=2]=\"UpdateOutputFileStamps\",e))(aX||{})}}),fa=gt({\"src/compiler/_namespaces/ts.ts\"(){\"use strict\";gke(),Gke(),Bke(),Xke(),Qke(),Zke(),uDe(),noe(),EDe(),kDe(),DDe(),PDe(),nwe(),ERe(),TRe(),SRe(),xRe(),MRe(),URe(),VRe(),aOe(),GOe(),BOe(),YOe(),SNe(),ZNe(),aPe(),oPe(),gPe(),SPe(),RPe(),BPe(),QPe(),ZPe(),eMe(),oMe(),sMe(),cMe(),lMe(),uMe(),dMe(),fMe(),_Me(),pMe(),mMe(),hMe(),gMe(),yMe(),vMe(),EMe(),TMe(),SMe(),xMe(),AMe(),CMe(),RMe(),GMe(),XMe(),QMe(),i8e(),a8e(),o8e(),E8e(),x8e(),C8e(),w8e(),N8e(),P8e(),a6e(),dK(),E0()}});function the(e,t){return new n_(JD(t,`ts${Sg}`)||JD(t,\"latest\")).compareTo(e.version)<=0}function nhe(e){return uX.has(e)?\"node\":e}function o6e(e,t){let r=NO(t,i=>e.readFile(i));return new Map(Object.entries(r.config))}function s6e(e,t){var r;let i=NO(t,o=>e.readFile(o));if((r=i.config)!=null&&r.simpleMap)return new Map(Object.entries(i.config.simpleMap))}function c6e(e,t,r,i,o,s,l,f,d,g){if(!l||!l.enable)return{cachedTypingPaths:[],newTypingNames:[],filesToWatch:[]};let m=new Map;r=Zi(r,q=>{let W=So(q);if(TS(W))return W});let v=[];l.include&&P(l.include,\"Explicitly included types\");let S=l.exclude||[];if(!g.types){let q=new Set(r.map(ni));q.add(i),q.forEach(W=>{F(W,\"bower.json\",\"bower_components\",v),F(W,\"package.json\",\"node_modules\",v)})}if(l.disableFilenameBasedTypeAcquisition||B(r),f){let q=_A(f.map(nhe),J1,su);P(q,\"Inferred typings from unresolved imports\")}s.forEach((q,W)=>{let Y=d.get(W);m.has(W)&&m.get(W)===void 0&&Y!==void 0&&the(q,Y)&&m.set(W,q.typingLocation)});for(let q of S)m.delete(q)&&t&&t(`Typing for ${q} is in exclude list, will be ignored.`);let x=[],A=[];m.forEach((q,W)=>{q!==void 0?A.push(q):x.push(W)});let w={cachedTypingPaths:A,newTypingNames:x,filesToWatch:v};return t&&t(`Result: ${JSON.stringify(w)}`),w;function C(q){m.has(q)||m.set(q,void 0)}function P(q,W){t&&t(`${W}: ${JSON.stringify(q)}`),mn(q,C)}function F(q,W,Y,R){let ie=vi(q,W),Q,fe;e.fileExists(ie)&&(R.push(ie),Q=NO(ie,le=>e.readFile(le)).config,fe=Uo([Q.dependencies,Q.devDependencies,Q.optionalDependencies,Q.peerDependencies],bh),P(fe,`Typing names in '${ie}' dependencies`));let Z=vi(q,Y);if(R.push(Z),!e.directoryExists(Z))return;let U=[],re=fe?fe.map(le=>vi(Z,le,W)):e.readDirectory(Z,[\".json\"],void 0,void 0,3).filter(le=>{if(Hl(le)!==W)return!1;let _e=Ou(So(le)),ge=_e[_e.length-3][0]===\"@\";return ge&&t_(_e[_e.length-4])===Y||!ge&&t_(_e[_e.length-3])===Y});t&&t(`Searching for typing names in ${Z}; all files: ${JSON.stringify(re)}`);for(let le of re){let _e=So(le),X=NO(_e,we=>e.readFile(we)).config;if(!X.name)continue;let Ve=X.types||X.typings;if(Ve){let we=_a(Ve,ni(_e));e.fileExists(we)?(t&&t(`    Package '${X.name}' provides its own types.`),m.set(X.name,we)):t&&t(`    Package '${X.name}' provides its own types but they are missing.`)}else U.push(X.name)}P(U,\"    Found package names\")}function B(q){let W=Zi(q,R=>{if(!TS(R))return;let ie=ld(t_(Hl(R))),Q=Lae(ie);return o.get(Q)});W.length&&P(W,\"Inferred typings from file names\"),vt(q,R=>Gc(R,\".jsx\"))&&(t&&t(\"Inferred 'react' typings due to presence of '.jsx' extension\"),C(\"react\"))}}function l6e(e){return oX(e,!0)}function oX(e,t){if(!e)return 1;if(e.length>fX)return 2;if(e.charCodeAt(0)===46)return 3;if(e.charCodeAt(0)===95)return 4;if(t){let r=/^@([^/]+)\\/([^/]+)$/.exec(e);if(r){let i=oX(r[1],!1);if(i!==0)return{name:r[1],isScopeName:!0,result:i};let o=oX(r[2],!1);return o!==0?{name:r[2],isScopeName:!1,result:o}:0}}return encodeURIComponent(e)!==e?5:0}function u6e(e,t){return typeof e==\"object\"?rhe(t,e.result,e.name,e.isScopeName):rhe(t,e,t,!1)}function rhe(e,t,r,i){let o=i?\"Scope\":\"Package\";switch(t){case 1:return`'${e}':: ${o} name '${r}' cannot be empty`;case 2:return`'${e}':: ${o} name '${r}' should be less than ${fX} characters`;case 3:return`'${e}':: ${o} name '${r}' cannot start with '.'`;case 4:return`'${e}':: ${o} name '${r}' cannot start with '_'`;case 5:return`'${e}':: ${o} name '${r}' contains non URI safe characters`;case 0:return L.fail();default:throw L.assertNever(t)}}var sX,cX,lX,uX,dX,fX,d6e=gt({\"src/jsTyping/jsTyping.ts\"(){\"use strict\";r7(),sX=[\"assert\",\"assert/strict\",\"async_hooks\",\"buffer\",\"child_process\",\"cluster\",\"console\",\"constants\",\"crypto\",\"dgram\",\"diagnostics_channel\",\"dns\",\"dns/promises\",\"domain\",\"events\",\"fs\",\"fs/promises\",\"http\",\"https\",\"http2\",\"inspector\",\"module\",\"net\",\"os\",\"path\",\"perf_hooks\",\"process\",\"punycode\",\"querystring\",\"readline\",\"repl\",\"stream\",\"stream/promises\",\"string_decoder\",\"timers\",\"timers/promises\",\"tls\",\"trace_events\",\"tty\",\"url\",\"util\",\"util/types\",\"v8\",\"vm\",\"wasi\",\"worker_threads\",\"zlib\"],cX=sX.map(e=>`node:${e}`),lX=[...sX,...cX],uX=new Set(lX),dX=(e=>(e[e.Ok=0]=\"Ok\",e[e.EmptyName=1]=\"EmptyName\",e[e.NameTooLong=2]=\"NameTooLong\",e[e.NameStartsWithDot=3]=\"NameStartsWithDot\",e[e.NameStartsWithUnderscore=4]=\"NameStartsWithUnderscore\",e[e.NameContainsNonURISafeCharacters=5]=\"NameContainsNonURISafeCharacters\",e))(dX||{}),fX=214}}),ZT={};Mo(ZT,{NameValidationResult:()=>dX,discoverTypings:()=>c6e,isTypingUpToDate:()=>the,loadSafeList:()=>o6e,loadTypesMap:()=>s6e,nodeCoreModuleList:()=>lX,nodeCoreModules:()=>uX,nonRelativeModuleNameForTypingCache:()=>nhe,prefixedNodeCoreModuleList:()=>cX,renderPackageNameValidationFailure:()=>u6e,validatePackageName:()=>l6e});var f6e=gt({\"src/jsTyping/_namespaces/ts.JsTyping.ts\"(){\"use strict\";d6e()}});function _6e(e){return xl.args.indexOf(e)>=0}function p6e(e){let t=xl.args.indexOf(e);return t>=0&&t<xl.args.length-1?xl.args[t+1]:void 0}function m6e(){let e=new Date;return`${K1(e.getHours().toString(),2,\"0\")}:${K1(e.getMinutes().toString(),2,\"0\")}:${K1(e.getSeconds().toString(),2,\"0\")}.${K1(e.getMilliseconds().toString(),3,\"0\")}`}var ihe,ahe,ohe,she,che,lhe,uhe,_X,h6e=gt({\"src/jsTyping/shared.ts\"(){\"use strict\";r7(),ihe=\"action::set\",ahe=\"action::invalidate\",ohe=\"action::packageInstalled\",she=\"event::typesRegistry\",che=\"event::beginInstallTypes\",lhe=\"event::endInstallTypes\",uhe=\"event::initializationFailed\",(e=>{e.GlobalCacheLocation=\"--globalTypingsCacheLocation\",e.LogFile=\"--logFile\",e.EnableTelemetry=\"--enableTelemetry\",e.TypingSafeListLocation=\"--typingSafeListLocation\",e.TypesMapLocation=\"--typesMapLocation\",e.NpmLocation=\"--npmLocation\",e.ValidateDefaultNpmLocation=\"--validateDefaultNpmLocation\"})(_X||(_X={}))}}),g6e=gt({\"src/jsTyping/types.ts\"(){\"use strict\"}}),dhe={};Mo(dhe,{ActionInvalidate:()=>ahe,ActionPackageInstalled:()=>ohe,ActionSet:()=>ihe,Arguments:()=>_X,EventBeginInstallTypes:()=>che,EventEndInstallTypes:()=>lhe,EventInitializationFailed:()=>uhe,EventTypesRegistry:()=>she,findArgument:()=>p6e,hasArgument:()=>_6e,nowString:()=>m6e});var y6e=gt({\"src/jsTyping/_namespaces/ts.server.ts\"(){\"use strict\";h6e(),g6e()}}),r7=gt({\"src/jsTyping/_namespaces/ts.ts\"(){\"use strict\";fa(),f6e(),y6e()}});function fhe(e){return{indentSize:4,tabSize:4,newLineCharacter:e||`\n`,convertTabsToSpaces:!0,indentStyle:2,insertSpaceAfterConstructor:!1,insertSpaceAfterCommaDelimiter:!0,insertSpaceAfterSemicolonInForStatements:!0,insertSpaceBeforeAndAfterBinaryOperators:!0,insertSpaceAfterKeywordsInControlFlowStatements:!0,insertSpaceAfterFunctionKeywordForAnonymousFunctions:!1,insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis:!1,insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets:!1,insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces:!0,insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces:!1,insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces:!1,insertSpaceBeforeFunctionParenthesis:!1,placeOpenBraceOnNewLineForFunctions:!1,placeOpenBraceOnNewLineForControlBlocks:!1,semicolons:\"ignore\",trimTrailingWhitespace:!0}}var pX,mX,hX,gX,Cp,yX,vX,bX,EX,TX,SX,xX,_he,LN,AX,CX,IX,LX,kX,DX,wX,RX,OX,v6e=gt({\"src/services/types.ts\"(){\"use strict\";(e=>{class t{constructor(o){this.text=o}getText(o,s){return o===0&&s===this.text.length?this.text:this.text.substring(o,s)}getLength(){return this.text.length}getChangeRange(){}}function r(i){return new t(i)}e.fromString=r})(pX||(pX={})),mX=(e=>(e[e.Dependencies=1]=\"Dependencies\",e[e.DevDependencies=2]=\"DevDependencies\",e[e.PeerDependencies=4]=\"PeerDependencies\",e[e.OptionalDependencies=8]=\"OptionalDependencies\",e[e.All=15]=\"All\",e))(mX||{}),hX=(e=>(e[e.Off=0]=\"Off\",e[e.On=1]=\"On\",e[e.Auto=2]=\"Auto\",e))(hX||{}),gX=(e=>(e[e.Semantic=0]=\"Semantic\",e[e.PartialSemantic=1]=\"PartialSemantic\",e[e.Syntactic=2]=\"Syntactic\",e))(gX||{}),Cp={},yX=(e=>(e.Original=\"original\",e.TwentyTwenty=\"2020\",e))(yX||{}),vX=(e=>(e.All=\"All\",e.SortAndCombine=\"SortAndCombine\",e.RemoveUnused=\"RemoveUnused\",e))(vX||{}),bX=(e=>(e[e.Invoked=1]=\"Invoked\",e[e.TriggerCharacter=2]=\"TriggerCharacter\",e[e.TriggerForIncompleteCompletions=3]=\"TriggerForIncompleteCompletions\",e))(bX||{}),EX=(e=>(e.Type=\"Type\",e.Parameter=\"Parameter\",e.Enum=\"Enum\",e))(EX||{}),TX=(e=>(e.none=\"none\",e.definition=\"definition\",e.reference=\"reference\",e.writtenReference=\"writtenReference\",e))(TX||{}),SX=(e=>(e[e.None=0]=\"None\",e[e.Block=1]=\"Block\",e[e.Smart=2]=\"Smart\",e))(SX||{}),xX=(e=>(e.Ignore=\"ignore\",e.Insert=\"insert\",e.Remove=\"remove\",e))(xX||{}),_he=fhe(`\n`),LN=(e=>(e[e.aliasName=0]=\"aliasName\",e[e.className=1]=\"className\",e[e.enumName=2]=\"enumName\",e[e.fieldName=3]=\"fieldName\",e[e.interfaceName=4]=\"interfaceName\",e[e.keyword=5]=\"keyword\",e[e.lineBreak=6]=\"lineBreak\",e[e.numericLiteral=7]=\"numericLiteral\",e[e.stringLiteral=8]=\"stringLiteral\",e[e.localName=9]=\"localName\",e[e.methodName=10]=\"methodName\",e[e.moduleName=11]=\"moduleName\",e[e.operator=12]=\"operator\",e[e.parameterName=13]=\"parameterName\",e[e.propertyName=14]=\"propertyName\",e[e.punctuation=15]=\"punctuation\",e[e.space=16]=\"space\",e[e.text=17]=\"text\",e[e.typeParameterName=18]=\"typeParameterName\",e[e.enumMemberName=19]=\"enumMemberName\",e[e.functionName=20]=\"functionName\",e[e.regularExpressionLiteral=21]=\"regularExpressionLiteral\",e[e.link=22]=\"link\",e[e.linkName=23]=\"linkName\",e[e.linkText=24]=\"linkText\",e))(LN||{}),AX=(e=>(e[e.None=0]=\"None\",e[e.MayIncludeAutoImports=1]=\"MayIncludeAutoImports\",e[e.IsImportStatementCompletion=2]=\"IsImportStatementCompletion\",e[e.IsContinuation=4]=\"IsContinuation\",e[e.ResolvedModuleSpecifiers=8]=\"ResolvedModuleSpecifiers\",e[e.ResolvedModuleSpecifiersBeyondLimit=16]=\"ResolvedModuleSpecifiersBeyondLimit\",e[e.MayIncludeMethodSnippets=32]=\"MayIncludeMethodSnippets\",e))(AX||{}),CX=(e=>(e.Comment=\"comment\",e.Region=\"region\",e.Code=\"code\",e.Imports=\"imports\",e))(CX||{}),IX=(e=>(e[e.JavaScript=0]=\"JavaScript\",e[e.SourceMap=1]=\"SourceMap\",e[e.Declaration=2]=\"Declaration\",e))(IX||{}),LX=(e=>(e[e.None=0]=\"None\",e[e.InMultiLineCommentTrivia=1]=\"InMultiLineCommentTrivia\",e[e.InSingleQuoteStringLiteral=2]=\"InSingleQuoteStringLiteral\",e[e.InDoubleQuoteStringLiteral=3]=\"InDoubleQuoteStringLiteral\",e[e.InTemplateHeadOrNoSubstitutionTemplate=4]=\"InTemplateHeadOrNoSubstitutionTemplate\",e[e.InTemplateMiddleOrTail=5]=\"InTemplateMiddleOrTail\",e[e.InTemplateSubstitutionPosition=6]=\"InTemplateSubstitutionPosition\",e))(LX||{}),kX=(e=>(e[e.Punctuation=0]=\"Punctuation\",e[e.Keyword=1]=\"Keyword\",e[e.Operator=2]=\"Operator\",e[e.Comment=3]=\"Comment\",e[e.Whitespace=4]=\"Whitespace\",e[e.Identifier=5]=\"Identifier\",e[e.NumberLiteral=6]=\"NumberLiteral\",e[e.BigIntLiteral=7]=\"BigIntLiteral\",e[e.StringLiteral=8]=\"StringLiteral\",e[e.RegExpLiteral=9]=\"RegExpLiteral\",e))(kX||{}),DX=(e=>(e.unknown=\"\",e.warning=\"warning\",e.keyword=\"keyword\",e.scriptElement=\"script\",e.moduleElement=\"module\",e.classElement=\"class\",e.localClassElement=\"local class\",e.interfaceElement=\"interface\",e.typeElement=\"type\",e.enumElement=\"enum\",e.enumMemberElement=\"enum member\",e.variableElement=\"var\",e.localVariableElement=\"local var\",e.functionElement=\"function\",e.localFunctionElement=\"local function\",e.memberFunctionElement=\"method\",e.memberGetAccessorElement=\"getter\",e.memberSetAccessorElement=\"setter\",e.memberVariableElement=\"property\",e.memberAccessorVariableElement=\"accessor\",e.constructorImplementationElement=\"constructor\",e.callSignatureElement=\"call\",e.indexSignatureElement=\"index\",e.constructSignatureElement=\"construct\",e.parameterElement=\"parameter\",e.typeParameterElement=\"type parameter\",e.primitiveType=\"primitive type\",e.label=\"label\",e.alias=\"alias\",e.constElement=\"const\",e.letElement=\"let\",e.directory=\"directory\",e.externalModuleName=\"external module name\",e.jsxAttribute=\"JSX attribute\",e.string=\"string\",e.link=\"link\",e.linkName=\"link name\",e.linkText=\"link text\",e))(DX||{}),wX=(e=>(e.none=\"\",e.publicMemberModifier=\"public\",e.privateMemberModifier=\"private\",e.protectedMemberModifier=\"protected\",e.exportedModifier=\"export\",e.ambientModifier=\"declare\",e.staticModifier=\"static\",e.abstractModifier=\"abstract\",e.optionalModifier=\"optional\",e.deprecatedModifier=\"deprecated\",e.dtsModifier=\".d.ts\",e.tsModifier=\".ts\",e.tsxModifier=\".tsx\",e.jsModifier=\".js\",e.jsxModifier=\".jsx\",e.jsonModifier=\".json\",e.dmtsModifier=\".d.mts\",e.mtsModifier=\".mts\",e.mjsModifier=\".mjs\",e.dctsModifier=\".d.cts\",e.ctsModifier=\".cts\",e.cjsModifier=\".cjs\",e))(wX||{}),RX=(e=>(e.comment=\"comment\",e.identifier=\"identifier\",e.keyword=\"keyword\",e.numericLiteral=\"number\",e.bigintLiteral=\"bigint\",e.operator=\"operator\",e.stringLiteral=\"string\",e.whiteSpace=\"whitespace\",e.text=\"text\",e.punctuation=\"punctuation\",e.className=\"class name\",e.enumName=\"enum name\",e.interfaceName=\"interface name\",e.moduleName=\"module name\",e.typeParameterName=\"type parameter name\",e.typeAliasName=\"type alias name\",e.parameterName=\"parameter name\",e.docCommentTagName=\"doc comment tag name\",e.jsxOpenTagName=\"jsx open tag name\",e.jsxCloseTagName=\"jsx close tag name\",e.jsxSelfClosingTagName=\"jsx self closing tag name\",e.jsxAttribute=\"jsx attribute\",e.jsxText=\"jsx text\",e.jsxAttributeStringLiteralValue=\"jsx attribute string literal value\",e))(RX||{}),OX=(e=>(e[e.comment=1]=\"comment\",e[e.identifier=2]=\"identifier\",e[e.keyword=3]=\"keyword\",e[e.numericLiteral=4]=\"numericLiteral\",e[e.operator=5]=\"operator\",e[e.stringLiteral=6]=\"stringLiteral\",e[e.regularExpressionLiteral=7]=\"regularExpressionLiteral\",e[e.whiteSpace=8]=\"whiteSpace\",e[e.text=9]=\"text\",e[e.punctuation=10]=\"punctuation\",e[e.className=11]=\"className\",e[e.enumName=12]=\"enumName\",e[e.interfaceName=13]=\"interfaceName\",e[e.moduleName=14]=\"moduleName\",e[e.typeParameterName=15]=\"typeParameterName\",e[e.typeAliasName=16]=\"typeAliasName\",e[e.parameterName=17]=\"parameterName\",e[e.docCommentTagName=18]=\"docCommentTagName\",e[e.jsxOpenTagName=19]=\"jsxOpenTagName\",e[e.jsxCloseTagName=20]=\"jsxCloseTagName\",e[e.jsxSelfClosingTagName=21]=\"jsxSelfClosingTagName\",e[e.jsxAttribute=22]=\"jsxAttribute\",e[e.jsxText=23]=\"jsxText\",e[e.jsxAttributeStringLiteralValue=24]=\"jsxAttributeStringLiteralValue\",e[e.bigintLiteral=25]=\"bigintLiteral\",e))(OX||{})}});function kN(e){switch(e.kind){case 257:return Yn(e)&&Ij(e)?7:1;case 166:case 205:case 169:case 168:case 299:case 300:case 171:case 170:case 173:case 174:case 175:case 259:case 215:case 216:case 295:case 288:return 1;case 165:case 261:case 262:case 184:return 2;case 349:return e.name===void 0?3:2;case 302:case 260:return 3;case 264:return lu(e)||Gh(e)===1?5:4;case 263:case 272:case 273:case 268:case 269:case 274:case 275:return 7;case 308:return 5}return 7}function e1(e){e=zX(e);let t=e.parent;return e.kind===308?1:pc(t)||Mu(t)||um(t)||$u(t)||lm(t)||Nl(t)&&e===t.name?7:i7(e)?b6e(e):Rh(e)?kN(t):Cd(e)&&jn(e,Kp(LL,aS,gb))?7:x6e(e)?2:E6e(e)?4:_c(t)?(L.assert(j_(t.parent)),2):mb(t)?3:1}function b6e(e){let t=e.kind===163?e:Yu(e.parent)&&e.parent.right===e?e.parent:void 0;return t&&t.parent.kind===268?7:4}function i7(e){for(;e.parent.kind===163;)e=e.parent;return BA(e.parent)&&e.parent.moduleReference===e}function E6e(e){return T6e(e)||S6e(e)}function T6e(e){let t=e,r=!0;if(t.parent.kind===163){for(;t.parent&&t.parent.kind===163;)t=t.parent;r=t.right===e}return t.parent.kind===180&&!r}function S6e(e){let t=e,r=!0;if(t.parent.kind===208){for(;t.parent&&t.parent.kind===208;)t=t.parent;r=t.name===e}if(!r&&t.parent.kind===230&&t.parent.parent.kind===294){let i=t.parent.parent.parent;return i.kind===260&&t.parent.parent.token===117||i.kind===261&&t.parent.parent.token===94}return!1}function x6e(e){switch(JI(e)&&(e=e.parent),e.kind){case 108:return!Dh(e);case 194:return!0}switch(e.parent.kind){case 180:return!0;case 202:return!e.parent.isTypeOf;case 230:return Gm(e.parent)}return!1}function NX(e,t=!1,r=!1){return tk(e,Pa,a7,t,r)}function ek(e,t=!1,r=!1){return tk(e,z0,a7,t,r)}function PX(e,t=!1,r=!1){return tk(e,Ih,a7,t,r)}function phe(e,t=!1,r=!1){return tk(e,MT,A6e,t,r)}function mhe(e,t=!1,r=!1){return tk(e,du,a7,t,r)}function hhe(e,t=!1,r=!1){return tk(e,Au,C6e,t,r)}function a7(e){return e.expression}function A6e(e){return e.tag}function C6e(e){return e.tagName}function tk(e,t,r,i,o){let s=i?ghe(e):o7(e);return o&&(s=ql(s)),!!s&&!!s.parent&&t(s.parent)&&r(s.parent)===s}function o7(e){return H2(e)?e.parent:e}function ghe(e){return H2(e)||BX(e)?e.parent:e}function s7(e,t){for(;e;){if(e.kind===253&&e.label.escapedText===t)return e.label;e=e.parent}}function DN(e,t){return br(e.expression)?e.expression.name.text===t:!1}function wN(e){var t;return Re(e)&&((t=zr(e.parent,gI))==null?void 0:t.label)===e}function MX(e){var t;return Re(e)&&((t=zr(e.parent,J0))==null?void 0:t.label)===e}function FX(e){return MX(e)||wN(e)}function GX(e){var t;return((t=zr(e.parent,TI))==null?void 0:t.tagName)===e}function yhe(e){var t;return((t=zr(e.parent,Yu))==null?void 0:t.right)===e}function H2(e){var t;return((t=zr(e.parent,br))==null?void 0:t.name)===e}function BX(e){var t;return((t=zr(e.parent,Vs))==null?void 0:t.argumentExpression)===e}function UX(e){var t;return((t=zr(e.parent,Tc))==null?void 0:t.name)===e}function VX(e){var t;return Re(e)&&((t=zr(e.parent,Ia))==null?void 0:t.name)===e}function c7(e){switch(e.parent.kind){case 169:case 168:case 299:case 302:case 171:case 170:case 174:case 175:case 264:return sa(e.parent)===e;case 209:return e.parent.argumentExpression===e;case 164:return!0;case 198:return e.parent.parent.kind===196;default:return!1}}function vhe(e){return ab(e.parent.parent)&&RI(e.parent.parent)===e}function t1(e){for(Mf(e)&&(e=e.parent.parent);;){if(e=e.parent,!e)return;switch(e.kind){case 308:case 171:case 170:case 259:case 215:case 174:case 175:case 260:case 261:case 263:case 264:return e}}}function aE(e){switch(e.kind){case 308:return Lc(e)?\"module\":\"script\";case 264:return\"module\";case 260:case 228:return\"class\";case 261:return\"interface\";case 262:case 341:case 349:return\"type\";case 263:return\"enum\";case 257:return t(e);case 205:return t(nm(e));case 216:case 259:case 215:return\"function\";case 174:return\"getter\";case 175:return\"setter\";case 171:case 170:return\"method\";case 299:let{initializer:r}=e;return Ia(r)?\"method\":\"property\";case 169:case 168:case 300:case 301:return\"property\";case 178:return\"index\";case 177:return\"construct\";case 176:return\"call\";case 173:case 172:return\"constructor\";case 165:return\"type parameter\";case 302:return\"enum member\";case 166:return Mr(e,16476)?\"property\":\"parameter\";case 268:case 273:case 278:case 271:case 277:return\"alias\";case 223:let i=ic(e),{right:o}=e;switch(i){case 7:case 8:case 9:case 0:return\"\";case 1:case 2:let l=aE(o);return l===\"\"?\"const\":l;case 3:return ms(o)?\"method\":\"property\";case 4:return\"property\";case 5:return ms(o)?\"method\":\"property\";case 6:return\"local class\";default:return\"\"}case 79:return lm(e.parent)?\"alias\":\"\";case 274:let s=aE(e.expression);return s===\"\"?\"const\":s;default:return\"\"}function t(r){return kh(r)?\"const\":LI(r)?\"let\":\"var\"}}function W2(e){switch(e.kind){case 108:return!0;case 79:return rW(e)&&e.parent.kind===166;default:return!1}}function Hf(e,t){let r=Sh(t),i=t.getLineAndCharacterOfPosition(e).line;return r[i]}function Od(e,t){return jX(e.pos,e.end,t)}function bhe(e,t){return ON(e,t.pos)&&ON(e,t.end)}function RN(e,t){return e.pos<=t&&t<=e.end}function ON(e,t){return e.pos<t&&t<e.end}function jX(e,t,r){return e<=r.pos&&t>=r.end}function NN(e,t,r){return e.pos<=t&&e.end>=r}function nk(e,t,r){return l7(e.pos,e.end,t,r)}function HX(e,t,r,i){return l7(e.getStart(t),e.end,r,i)}function l7(e,t,r,i){let o=Math.max(e,r),s=Math.min(t,i);return o<s}function WX(e,t,r){return L.assert(e.pos<=t),t<e.end||!y_(e,r)}function y_(e,t){if(e===void 0||rc(e))return!1;switch(e.kind){case 260:case 261:case 263:case 207:case 203:case 184:case 238:case 265:case 266:case 272:case 276:return u7(e,19,t);case 295:return y_(e.block,t);case 211:if(!e.arguments)return!0;case 210:case 214:case 193:return u7(e,21,t);case 181:case 182:return y_(e.type,t);case 173:case 174:case 175:case 259:case 215:case 171:case 170:case 177:case 176:case 216:return e.body?y_(e.body,t):e.type?y_(e.type,t):PN(e,21,t);case 264:return!!e.body&&y_(e.body,t);case 242:return e.elseStatement?y_(e.elseStatement,t):y_(e.thenStatement,t);case 241:return y_(e.expression,t)||PN(e,26,t);case 206:case 204:case 209:case 164:case 186:return u7(e,23,t);case 178:return e.type?y_(e.type,t):PN(e,23,t);case 292:case 293:return!1;case 245:case 246:case 247:case 244:return y_(e.statement,t);case 243:return PN(e,115,t)?u7(e,21,t):y_(e.statement,t);case 183:return y_(e.exprName,t);case 218:case 217:case 219:case 226:case 227:return y_(e.expression,t);case 212:return y_(e.template,t);case 225:let i=Os(e.templateSpans);return y_(i,t);case 236:return Nf(e.literal);case 275:case 269:return Nf(e.moduleSpecifier);case 221:return y_(e.operand,t);case 223:return y_(e.right,t);case 224:return y_(e.whenFalse,t);default:return!0}}function u7(e,t,r){let i=e.getChildren(r);if(i.length){let o=To(i);if(o.kind===t)return!0;if(o.kind===26&&i.length!==1)return i[i.length-2].kind===t}return!1}function Ehe(e){let t=d7(e);if(!t)return;let r=t.getChildren();return{listItemIndex:wA(r,e),list:t}}function PN(e,t,r){return!!Yo(e,t,r)}function Yo(e,t,r){return wr(e.getChildren(r),i=>i.kind===t)}function d7(e){let t=wr(e.parent.getChildren(),r=>C2(r)&&Od(r,e));return L.assert(!t||ya(t.getChildren(),e)),t}function The(e){return e.kind===88}function I6e(e){return e.kind===84}function L6e(e){return e.kind===98}function k6e(e){if(zl(e))return e.name;if(sl(e)){let t=e.modifiers&&wr(e.modifiers,The);if(t)return t}if(_u(e)){let t=wr(e.getChildren(),I6e);if(t)return t}}function D6e(e){if(zl(e))return e.name;if(Jc(e)){let t=wr(e.modifiers,The);if(t)return t}if(ms(e)){let t=wr(e.getChildren(),L6e);if(t)return t}}function w6e(e){let t;return jn(e,r=>(bi(r)&&(t=r),!Yu(r.parent)&&!bi(r.parent)&&!pT(r.parent))),t}function f7(e,t){if(e.flags&8388608)return;let r=w7(e,t);if(r)return r;let i=w6e(e);return i&&t.getTypeAtLocation(i)}function R6e(e,t){if(!t)switch(e.kind){case 260:case 228:return k6e(e);case 259:case 215:return D6e(e);case 173:return e}if(zl(e))return e.name}function She(e,t){if(e.importClause){if(e.importClause.name&&e.importClause.namedBindings)return;if(e.importClause.name)return e.importClause.name;if(e.importClause.namedBindings){if(jg(e.importClause.namedBindings)){let r=Wp(e.importClause.namedBindings.elements);return r?r.name:void 0}else if(nv(e.importClause.namedBindings))return e.importClause.namedBindings.name}}if(!t)return e.moduleSpecifier}function xhe(e,t){if(e.exportClause){if(m_(e.exportClause))return Wp(e.exportClause.elements)?e.exportClause.elements[0].name:void 0;if(qm(e.exportClause))return e.exportClause.name}if(!t)return e.moduleSpecifier}function O6e(e){if(e.types.length===1)return e.types[0].expression}function Ahe(e,t){let{parent:r}=e;if(Ha(e)&&(t||e.kind!==88)?h_(r)&&ya(r.modifiers,e):e.kind===84?sl(r)||_u(e):e.kind===98?Jc(r)||ms(e):e.kind===118?ku(r):e.kind===92?hb(r):e.kind===154?Ep(r):e.kind===143||e.kind===142?Tc(r):e.kind===100?Nl(r):e.kind===137?__(r):e.kind===151&&Tf(r)){let i=R6e(r,t);if(i)return i}if((e.kind===113||e.kind===85||e.kind===119)&&pu(r)&&r.declarations.length===1){let i=r.declarations[0];if(Re(i.name))return i.name}if(e.kind===154){if(lm(r)&&r.isTypeOnly){let i=She(r.parent,t);if(i)return i}if(Il(r)&&r.isTypeOnly){let i=xhe(r,t);if(i)return i}}if(e.kind===128){if($u(r)&&r.propertyName||Mu(r)&&r.propertyName||nv(r)||qm(r))return r.name;if(Il(r)&&r.exportClause&&qm(r.exportClause))return r.exportClause.name}if(e.kind===100&&gl(r)){let i=She(r,t);if(i)return i}if(e.kind===93){if(Il(r)){let i=xhe(r,t);if(i)return i}if(pc(r))return ql(r.expression)}if(e.kind===147&&um(r))return r.expression;if(e.kind===158&&(gl(r)||Il(r))&&r.moduleSpecifier)return r.moduleSpecifier;if((e.kind===94||e.kind===117)&&dd(r)&&r.token===e.kind){let i=O6e(r);if(i)return i}if(e.kind===94){if(_c(r)&&r.constraint&&p_(r.constraint))return r.constraint.typeName;if(h2(r)&&p_(r.extendsType))return r.extendsType.typeName}if(e.kind===138&&g2(r))return r.typeParameter.name;if(e.kind===101&&_c(r)&&TL(r.parent))return r.name;if(e.kind===141&&OS(r)&&r.operator===141&&p_(r.type))return r.type.typeName;if(e.kind===146&&OS(r)&&r.operator===146&&wz(r.type)&&p_(r.type.elementType))return r.type.elementType.typeName;if(!t){if((e.kind===103&&z0(r)||e.kind===114&&PS(r)||e.kind===112&&v2(r)||e.kind===133&&b2(r)||e.kind===125&&f3(r)||e.kind===89&&Gue(r))&&r.expression)return ql(r.expression);if((e.kind===101||e.kind===102)&&ar(r)&&r.operatorToken===e)return ql(r.right);if(e.kind===128&&_O(r)&&p_(r.type))return r.type.typeName;if(e.kind===101&&Mz(r)||e.kind===162&&pO(r))return ql(r.expression)}return e}function zX(e){return Ahe(e,!1)}function _7(e){return Ahe(e,!0)}function Zd(e,t){return rk(e,t,r=>s_(r)||Xu(r.kind)||pi(r))}function rk(e,t,r){return Che(e,t,!1,r,!1)}function Vi(e,t){return Che(e,t,!0,void 0,!1)}function Che(e,t,r,i,o){let s=e,l;e:for(;;){let d=s.getChildren(e),g=H1(d,t,(m,v)=>v,(m,v)=>{let S=d[m].getEnd();if(S<t)return-1;let x=r?d[m].getFullStart():d[m].getStart(e,!0);return x>t?1:f(d[m],x,S)?d[m-1]&&f(d[m-1])?1:0:i&&x===t&&d[m-1]&&d[m-1].getEnd()===t&&f(d[m-1])?1:-1});if(l)return l;if(g>=0&&d[g]){s=d[g];continue e}return s}function f(d,g,m){if(m??(m=d.getEnd()),m<t||(g??(g=r?d.getFullStart():d.getStart(e,!0)),g>t))return!1;if(t<m||t===m&&(d.kind===1||o))return!0;if(i&&m===t){let v=el(t,e,d);if(v&&i(v))return l=v,!0}return!1}}function Ihe(e,t){let r=Vi(e,t);for(;MN(r);){let i=n1(r,r.parent,e);if(!i)return;r=i}return r}function p7(e,t){let r=Vi(e,t);return eS(r)&&t>r.getStart(e)&&t<r.getEnd()?r:el(t,e)}function n1(e,t,r){return i(t);function i(o){return eS(o)&&o.pos===e.end?o:ks(o.getChildren(r),s=>(s.pos<=e.pos&&s.end>e.end||s.pos===e.end)&&$X(s,r)?i(s):void 0)}}function el(e,t,r,i){let o=s(r||t);return L.assert(!(o&&MN(o))),o;function s(l){if(Lhe(l)&&l.kind!==1)return l;let f=l.getChildren(t),d=H1(f,e,(m,v)=>v,(m,v)=>e<f[m].end?!f[m-1]||e>=f[m-1].end?0:1:-1);if(d>=0&&f[d]){let m=f[d];if(e<m.end)if(m.getStart(t,!i)>=e||!$X(m,t)||MN(m)){let x=KX(f,d,t,l.kind);return x&&JX(x,t)}else return s(m)}L.assert(r!==void 0||l.kind===308||l.kind===1||qj(l));let g=KX(f,f.length,t,l.kind);return g&&JX(g,t)}}function Lhe(e){return eS(e)&&!MN(e)}function JX(e,t){if(Lhe(e))return e;let r=e.getChildren(t);if(r.length===0)return e;let i=KX(r,r.length,t,e.kind);return i&&JX(i,t)}function KX(e,t,r,i){for(let o=t-1;o>=0;o--){let s=e[o];if(MN(s))o===0&&(i===11||i===282)&&L.fail(\"`JsxText` tokens should not be the first child of `JsxElement | JsxSelfClosingElement`\");else if($X(e[o],r))return e[o]}}function r1(e,t,r=el(t,e)){if(r&&Fj(r)){let i=r.getStart(e),o=r.getEnd();if(i<t&&t<o)return!0;if(t===o)return!!r.isUnterminated}return!1}function khe(e,t){let r=Vi(e,t);return r?!!(r.kind===11||r.kind===29&&r.parent.kind===11||r.kind===29&&r.parent.kind===291||r&&r.kind===19&&r.parent.kind===291||r.kind===29&&r.parent.kind===284):!1}function MN(e){return IS(e)&&e.containsOnlyTriviaWhiteSpaces}function qX(e,t){let r=Vi(e,t);return Hy(r.kind)&&t>r.getStart(e)}function Dhe(e,t){let r=Vi(e,t);return!!(IS(r)||r.kind===18&&CL(r.parent)&&Hg(r.parent.parent)||r.kind===29&&Au(r.parent)&&Hg(r.parent.parent))}function m7(e,t){function r(i){for(;i;)if(i.kind>=282&&i.kind<=291||i.kind===11||i.kind===29||i.kind===31||i.kind===79||i.kind===19||i.kind===18||i.kind===43)i=i.parent;else if(i.kind===281){if(t>i.getStart(e))return!0;i=i.parent}else return!1;return!1}return r(Vi(e,t))}function h7(e,t,r){let i=Xa(e.kind),o=Xa(t),s=e.getFullStart(),l=r.text.lastIndexOf(o,s);if(l===-1)return;if(r.text.lastIndexOf(i,s-1)<l){let g=el(l+1,r);if(g&&g.kind===t)return g}let f=e.kind,d=0;for(;;){let g=el(e.getFullStart(),r);if(!g)return;if(e=g,e.kind===t){if(d===0)return e;d--}else e.kind===f&&d++}}function whe(e,t,r){return t?e.getNonNullableType():r?e.getNonOptionalType():e}function FN(e,t,r){let i=YX(e,t);return i!==void 0&&(Gm(i.called)||XX(i.called,i.nTypeArguments,r).length!==0||FN(i.called,t,r))}function XX(e,t,r){let i=r.getTypeAtLocation(e);return Jl(e.parent)&&(i=whe(i,mI(e.parent),!0)),(z0(e.parent)?i.getConstructSignatures():i.getCallSignatures()).filter(s=>!!s.typeParameters&&s.typeParameters.length>=t)}function YX(e,t){if(t.text.lastIndexOf(\"<\",e?e.pos:t.text.length)===-1)return;let r=e,i=0,o=0;for(;r;){switch(r.kind){case 29:if(r=el(r.getFullStart(),t),r&&r.kind===28&&(r=el(r.getFullStart(),t)),!r||!Re(r))return;if(!i)return Rh(r)?void 0:{called:r,nTypeArguments:o};i--;break;case 49:i=3;break;case 48:i=2;break;case 31:i++;break;case 19:if(r=h7(r,18,t),!r)return;break;case 21:if(r=h7(r,20,t),!r)return;break;case 23:if(r=h7(r,22,t),!r)return;break;case 27:o++;break;case 38:case 79:case 10:case 8:case 9:case 110:case 95:case 112:case 94:case 141:case 24:case 51:case 57:case 58:break;default:if(bi(r))break;return}r=el(r.getFullStart(),t)}}function Kg(e,t,r){return tl.getRangeOfEnclosingComment(e,t,void 0,r)}function Rhe(e,t){let r=Vi(e,t);return!!jn(r,dm)}function $X(e,t){return e.kind===1?!!e.jsDoc:e.getWidth(t)!==0}function ik(e,t=0){let r=[],i=Kl(e)?Tj(e)&~t:0;return i&8&&r.push(\"private\"),i&16&&r.push(\"protected\"),i&4&&r.push(\"public\"),(i&32||oc(e))&&r.push(\"static\"),i&256&&r.push(\"abstract\"),i&1&&r.push(\"export\"),i&8192&&r.push(\"deprecated\"),e.flags&16777216&&r.push(\"declare\"),e.kind===274&&r.push(\"export\"),r.length>0?r.join(\",\"):\"\"}function Ohe(e){if(e.kind===180||e.kind===210)return e.typeArguments;if(Ia(e)||e.kind===260||e.kind===261)return e.typeParameters}function g7(e){return e===2||e===3}function QX(e){return!!(e===10||e===13||Hy(e))}function Nhe(e){if(!e.isIntersection())return!1;let{types:t,checker:r}=e;return t.length===2&&t[0].flags&4&&r.isEmptyAnonymousObjectType(t[1])}function Phe(e){return 18<=e&&e<=78}function GN(e,t,r){return Hy(e.kind)&&e.getStart(r)<t&&t<e.end||!!e.isUnterminated&&t===e.end}function ZX(e){switch(e){case 123:case 121:case 122:return!0}return!1}function Mhe(e){let t=VU(e);return xJ(t,e&&e.configFile),t}function qg(e){return!!((e.kind===206||e.kind===207)&&(e.parent.kind===223&&e.parent.left===e&&e.parent.operatorToken.kind===63||e.parent.kind===247&&e.parent.initializer===e||qg(e.parent.kind===299?e.parent.parent:e.parent)))}function Fhe(e,t){return Bhe(e,t,!0)}function Ghe(e,t){return Bhe(e,t,!1)}function Bhe(e,t,r){let i=Kg(e,t,void 0);return!!i&&r===bge.test(e.text.substring(i.pos,i.end))}function eY(e){if(!!e)switch(e.kind){case 10:case 14:return tY(e);default:return Du(e)}}function Du(e,t,r){return Wc(e.getStart(t),(r||e).getEnd())}function tY(e){if(!e.isUnterminated)return Wc(e.getStart()+1,e.getEnd()-1)}function nY(e,t){return Ff(e.getStart(t),e.end)}function lv(e){return Wc(e.pos,e.end)}function y7(e){return Ff(e.start,e.start+e.length)}function v7(e,t,r){return BN(il(e,t),r)}function BN(e,t){return{span:e,newText:t}}function ak(e){return ya(K7,e)}function rY(e){return e.kind===154}function b7(e){return rY(e)||Re(e)&&e.text===\"type\"}function UN(e){return!!(e.flags&1536)&&e.name.charCodeAt(0)===34}function z2(){let e=[];return t=>{let r=zo(t);return!e[r]&&(e[r]=!0)}}function E7(e){return e.getText(0,e.getLength())}function VN(e,t){let r=\"\";for(let i=0;i<t;i++)r+=e;return r}function iY(e){return e.isTypeParameter()&&e.getConstraint()||e}function jN(e){return e.kind===164?gf(e.expression)?e.expression.text:void 0:pi(e)?vr(e):c_(e)}function Uhe(e){return e.getSourceFiles().some(t=>!t.isDeclarationFile&&!e.isSourceFileFromExternalLibrary(t)&&!!(t.externalModuleIndicator||t.commonJsModuleIndicator))}function Vhe(e){return e.getSourceFiles().some(t=>!t.isDeclarationFile&&!e.isSourceFileFromExternalLibrary(t)&&!!t.externalModuleIndicator)}function aY(e){return!!e.module||Do(e)>=2||!!e.noEmit}function QS(e,t){return{fileExists:r=>e.fileExists(r),getCurrentDirectory:()=>t.getCurrentDirectory(),readFile:ho(t,t.readFile),useCaseSensitiveFileNames:ho(t,t.useCaseSensitiveFileNames),getSymlinkCache:ho(t,t.getSymlinkCache)||e.getSymlinkCache,getModuleSpecifierCache:ho(t,t.getModuleSpecifierCache),getPackageJsonInfoCache:()=>{var r;return(r=e.getModuleResolutionCache())==null?void 0:r.getPackageJsonInfoCache()},getGlobalTypingsCacheLocation:ho(t,t.getGlobalTypingsCacheLocation),redirectTargetsMap:e.redirectTargetsMap,getProjectReferenceRedirect:r=>e.getProjectReferenceRedirect(r),isSourceOfProjectReferenceRedirect:r=>e.isSourceOfProjectReferenceRedirect(r),getNearestAncestorDirectoryWithPackageJson:ho(t,t.getNearestAncestorDirectoryWithPackageJson),getFileIncludeReasons:()=>e.getFileIncludeReasons()}}function oY(e,t){return{...QS(e,t),getCommonSourceDirectory:()=>e.getCommonSourceDirectory()}}function T7(e){return e===2||e>=3&&e<=99||e===100}function jhe(e,t,r,i){return e||t&&t.length?Xg(e,t,r,i):void 0}function Xg(e,t,r,i,o){return D.createImportDeclaration(void 0,e||t?D.createImportClause(!!o,e,t&&t.length?D.createNamedImports(t):void 0):void 0,typeof r==\"string\"?S7(r,i):r,void 0)}function S7(e,t){return D.createStringLiteral(e,t===0)}function sY(e,t){return V6(e,t)?1:0}function z_(e,t){if(t.quotePreference&&t.quotePreference!==\"auto\")return t.quotePreference===\"single\"?0:1;{let r=e.imports&&wr(e.imports,i=>yo(i)&&!ws(i.parent));return r?sY(r,e):1}}function Hhe(e){switch(e){case 0:return\"'\";case 1:return'\"';default:return L.assertNever(e)}}function x7(e){let t=A7(e);return t===void 0?void 0:Gi(t)}function A7(e){return e.escapedName!==\"default\"?e.escapedName:ks(e.declarations,t=>{let r=sa(t);return r&&r.kind===79?r.escapedText:void 0})}function C7(e){return es(e)&&(um(e.parent)||gl(e.parent)||qu(e.parent,!1)&&e.parent.arguments[0]===e||Dd(e.parent)&&e.parent.arguments[0]===e)}function HN(e){return Wo(e)&&cm(e.parent)&&Re(e.name)&&!e.propertyName}function I7(e,t){let r=e.getTypeAtLocation(t.parent);return r&&e.getPropertyOfType(r,t.name.text)}function WN(e,t,r){if(!!e)for(;e.parent;){if(Li(e.parent)||!N6e(r,e.parent,t))return e;e=e.parent}}function N6e(e,t,r){return bj(e,t.getStart(r))&&t.getEnd()<=wl(e)}function J2(e,t){return h_(e)?wr(e.modifiers,r=>r.kind===t):void 0}function L7(e,t,r,i,o){let l=(ba(r)?r[0]:r).kind===240?DH:vT,f=Pr(t.statements,l),d=ba(r)?v_.detectImportDeclarationSorting(r,o):3,g=v_.getOrganizeImportsComparer(o,d===2),m=ba(r)?Ag(r,(v,S)=>v_.compareImportsOrRequireStatements(v,S,g)):[r];if(!f.length)e.insertNodesAtTopOfFile(t,m,i);else if(f&&(d=v_.detectImportDeclarationSorting(f,o))){let v=v_.getOrganizeImportsComparer(o,d===2);for(let S of m){let x=v_.getImportDeclarationInsertionIndex(f,S,v);if(x===0){let A=f[0]===t.statements[0]?{leadingTriviaOption:nr.LeadingTriviaOption.Exclude}:{};e.insertNodeBefore(t,f[0],S,!1,A)}else{let A=f[x-1];e.insertNodeAfter(t,A,S)}}}else{let v=Os(f);v?e.insertNodesAfter(t,v,m):e.insertNodesAtTopOfFile(t,m,i)}}function cY(e,t){return L.assert(e.isTypeOnly),Ga(e.getChildAt(0,t),rY)}function K2(e,t){return!!e&&!!t&&e.start===t.start&&e.length===t.length}function P6e(e,t){return e.fileName===t.fileName&&K2(e.textSpan,t.textSpan)}function lY(e,t){if(e){for(let r=0;r<e.length;r++)if(e.indexOf(e[r])===r){let i=t(e[r],r);if(i)return i}}}function Whe(e,t,r){for(let i=t;i<r;i++)if(!xh(e.charCodeAt(i)))return!1;return!0}function zN(e,t,r){let i=t.tryGetSourcePosition(e);return i&&(!r||r(So(i.fileName))?i:void 0)}function uY(e,t,r){let{fileName:i,textSpan:o}=e,s=zN({fileName:i,pos:o.start},t,r);if(!s)return;let l=zN({fileName:i,pos:o.start+o.length},t,r),f=l?l.pos-s.pos:o.length;return{fileName:s.fileName,textSpan:{start:s.pos,length:f},originalFileName:e.fileName,originalTextSpan:e.textSpan,contextSpan:zhe(e,t,r),originalContextSpan:e.contextSpan}}function zhe(e,t,r){let i=e.contextSpan&&zN({fileName:e.fileName,pos:e.contextSpan.start},t,r),o=e.contextSpan&&zN({fileName:e.fileName,pos:e.contextSpan.start+e.contextSpan.length},t,r);return i&&o?{start:i.pos,length:o.pos-i.pos}:void 0}function dY(e){let t=e.declarations?Sl(e.declarations):void 0;return!!jn(t,r=>ha(r)?!0:Wo(r)||cm(r)||y2(r)?!1:\"quit\")}function M6e(){let e=qR*10,t,r,i,o;m();let s=v=>f(v,17);return{displayParts:()=>{let v=t.length&&t[t.length-1].text;return o>e&&v&&v!==\"...\"&&(xh(v.charCodeAt(v.length-1))||t.push(Qu(\" \",16)),t.push(Qu(\"...\",15))),t},writeKeyword:v=>f(v,5),writeOperator:v=>f(v,12),writePunctuation:v=>f(v,15),writeTrailingSemicolon:v=>f(v,15),writeSpace:v=>f(v,16),writeStringLiteral:v=>f(v,8),writeParameter:v=>f(v,13),writeProperty:v=>f(v,14),writeLiteral:v=>f(v,8),writeSymbol:d,writeLine:g,write:s,writeComment:s,getText:()=>\"\",getTextPos:()=>0,getColumn:()=>0,getLine:()=>0,isAtStartOfLine:()=>!1,hasTrailingWhitespace:()=>!1,hasTrailingComment:()=>!1,rawWrite:Sa,getIndent:()=>i,increaseIndent:()=>{i++},decreaseIndent:()=>{i--},clear:m};function l(){if(!(o>e)&&r){let v=Q6(i);v&&(o+=v.length,t.push(Qu(v,16))),r=!1}}function f(v,S){o>e||(l(),o+=v.length,t.push(Qu(v,S)))}function d(v,S){o>e||(l(),o+=v.length,t.push(Jhe(v,S)))}function g(){o>e||(o+=1,t.push(q2()),r=!0)}function m(){t=[],r=!0,i=0,o=0}}function Jhe(e,t){return Qu(e,r(t));function r(i){let o=i.flags;return o&3?dY(i)?13:9:o&4||o&32768||o&65536?14:o&8?19:o&16?20:o&32?1:o&64?4:o&384?2:o&1536?11:o&8192?10:o&262144?18:o&524288||o&2097152?0:17}}function Qu(e,t){return{text:e,kind:LN[t]}}function Qs(){return Qu(\" \",16)}function _d(e){return Qu(Xa(e),5)}function Yl(e){return Qu(Xa(e),15)}function ok(e){return Qu(Xa(e),12)}function Khe(e){return Qu(e,13)}function qhe(e){return Qu(e,14)}function fY(e){let t=uT(e);return t===void 0?ef(e):_d(t)}function ef(e){return Qu(e,17)}function Xhe(e){return Qu(e,0)}function Yhe(e){return Qu(e,18)}function k7(e){return Qu(e,24)}function $he(e,t){return{text:e,kind:LN[23],target:{fileName:Gn(t).fileName,textSpan:Du(t)}}}function _Y(e){return Qu(e,22)}function Qhe(e,t){var r;let i=zue(e)?\"link\":Jue(e)?\"linkcode\":\"linkplain\",o=[_Y(`{@${i} `)];if(!e.name)e.text&&o.push(k7(e.text));else{let s=t?.getSymbolAtLocation(e.name),l=G6e(e.text),f=Qc(e.name)+e.text.slice(0,l),d=F6e(e.text.slice(l)),g=s?.valueDeclaration||((r=s?.declarations)==null?void 0:r[0]);g?(o.push($he(f,g)),d&&o.push(k7(d))):o.push(k7(f+(l?\"\":\" \")+d))}return o.push(_Y(\"}\")),o}function F6e(e){let t=0;if(e.charCodeAt(t++)===124){for(;t<e.length&&e.charCodeAt(t)===32;)t++;return e.slice(t)}return e}function G6e(e){let t=e.indexOf(\"://\");if(t===0){for(;t<e.length&&e.charCodeAt(t)!==124;)t++;return t}if(e.indexOf(\"()\")===0)return 2;if(e.charAt(0)===\"<\"){let r=0,i=0;for(;i<e.length;)if(e[i]===\"<\"&&r++,e[i]===\">\"&&r--,i++,!r)return i}return 0}function bb(e,t){var r;return t?.newLineCharacter||((r=e.getNewLine)==null?void 0:r.call(e))||Ege}function q2(){return Qu(`\n`,6)}function uv(e){try{return e(q7),q7.displayParts()}finally{q7.clear()}}function JN(e,t,r,i=0){return uv(o=>{e.writeType(t,r,i|1024|16384,o)})}function sk(e,t,r,i,o=0){return uv(s=>{e.writeSymbol(t,r,i,o|8,s)})}function pY(e,t,r,i=0){return i|=25632,uv(o=>{e.writeSignature(t,r,i,void 0,o)})}function B6e(e,t){let r=t.getSourceFile();return uv(i=>{_N().writeNode(4,e,r,i)})}function Zhe(e){return!!e.parent&&tS(e.parent)&&e.parent.propertyName===e}function mY(e,t){return h4(e,t.getScriptKind&&t.getScriptKind(e))}function ege(e,t){let r=e;for(;U6e(r)||Zp(r)&&r.links.target;)Zp(r)&&r.links.target?r=r.links.target:r=wd(r,t);return r}function U6e(e){return(e.flags&2097152)!==0}function tge(e,t){return $a(wd(e,t))}function nge(e,t){for(;xh(e.charCodeAt(t));)t+=1;return t}function hY(e,t){for(;t>-1&&Yp(e.charCodeAt(t));)t-=1;return t+1}function cc(e,t=!0){let r=e&&rge(e);return r&&!t&&pd(r),r}function KN(e,t,r){let i=r(e);return i?Ir(i,e):i=rge(e,r),i&&!t&&pd(i),i}function rge(e,t){let r=t?s=>KN(s,!0,t):cc,o=xn(e,r,Bh,t?s=>s&&gY(s,!0,t):s=>s&&oE(s),r);if(o===e){let s=yo(e)?Ir(D.createStringLiteralFromNode(e),e):Uf(e)?Ir(D.createNumericLiteral(e.text,e.numericLiteralFlags),e):D.cloneNode(e);return it(s,e)}return o.parent=void 0,o}function oE(e,t=!0){return e&&D.createNodeArray(e.map(r=>cc(r,t)),e.hasTrailingComma)}function gY(e,t,r){return D.createNodeArray(e.map(i=>KN(i,t,r)),e.hasTrailingComma)}function pd(e){D7(e),ige(e)}function D7(e){yY(e,1024,j6e)}function ige(e){yY(e,2048,yW)}function i1(e,t){let r=e.getSourceFile(),i=r.text;V6e(e,i)?X2(e,t,r):XN(e,t,r),ck(e,t,r)}function V6e(e,t){let r=e.getFullStart(),i=e.getStart();for(let o=r;o<i;o++)if(t.charCodeAt(o)===10)return!0;return!1}function yY(e,t,r){bp(e,t);let i=r(e);i&&yY(i,t,r)}function j6e(e){return e.forEachChild(t=>t)}function a1(e,t){let r=e;for(let i=1;!g6(t,r);i++)r=`${e}_${i}`;return r}function qN(e,t,r,i){let o=0,s=-1;for(let{fileName:l,textChanges:f}of e){L.assert(l===t);for(let d of f){let{span:g,newText:m}=d,v=H6e(m,pS(r));if(v!==-1&&(s=g.start+o+v,!i))return s;o+=m.length-g.length}}return L.assert(i),L.assert(s>=0),s}function X2(e,t,r,i,o){bw(r.text,e.pos,vY(t,r,i,o,rO))}function ck(e,t,r,i,o){Ew(r.text,e.end,vY(t,r,i,o,R4))}function XN(e,t,r,i,o){Ew(r.text,e.pos,vY(t,r,i,o,rO))}function vY(e,t,r,i,o){return(s,l,f,d)=>{f===3?(s+=2,l-=2):s+=2,o(e,r||f,t.text.slice(s,l),i!==void 0?i:d)}}function H6e(e,t){if(na(e,t))return 0;let r=e.indexOf(\" \"+t);return r===-1&&(r=e.indexOf(\".\"+t)),r===-1&&(r=e.indexOf('\"'+t)),r===-1?-1:r+1}function bY(e){return ar(e)&&e.operatorToken.kind===27||rs(e)||_O(e)&&rs(e.expression)}function w7(e,t,r){let i=qy(e.parent);switch(i.kind){case 211:return t.getContextualType(i,r);case 223:{let{left:o,operatorToken:s,right:l}=i;return R7(s.kind)?t.getTypeAtLocation(e===l?o:l):t.getContextualType(e,r)}case 292:return TY(i,t);default:return t.getContextualType(e,r)}}function lk(e,t,r){let i=z_(e,t),o=JSON.stringify(r);return i===0?`'${l_(o).replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')}'`:o}function R7(e){switch(e){case 36:case 34:case 37:case 35:return!0;default:return!1}}function age(e){switch(e.kind){case 10:case 14:case 225:case 212:return!0;default:return!1}}function EY(e){return!!e.getStringIndexType()||!!e.getNumberIndexType()}function TY(e,t){return t.getTypeAtLocation(e.parent.parent.expression)}function uk(e,t,r,i){let o=r.getTypeChecker(),s=!0,l=()=>s=!1,f=o.typeToTypeNode(e,t,1,{trackSymbol:(d,g,m)=>(s=s&&o.isSymbolAccessible(d,g,m,!1).accessibility===0,!s),reportInaccessibleThisError:l,reportPrivateInBaseOfClassExpression:l,reportInaccessibleUniqueSymbolError:l,moduleResolverHost:oY(r,i)});return s?f:void 0}function SY(e){return e===176||e===177||e===178||e===168||e===170}function oge(e){return e===259||e===173||e===171||e===174||e===175}function sge(e){return e===264}function O7(e){return e===240||e===241||e===243||e===248||e===249||e===250||e===254||e===256||e===169||e===262||e===269||e===268||e===275||e===267||e===274}function W6e(e,t){let r=e.getLastToken(t);if(r&&r.kind===26)return!1;if(SY(e.kind)){if(r&&r.kind===27)return!1}else if(sge(e.kind)){let f=To(e.getChildren(t));if(f&&Tp(f))return!1}else if(oge(e.kind)){let f=To(e.getChildren(t));if(f&&ET(f))return!1}else if(!O7(e.kind))return!1;if(e.kind===243)return!0;let i=jn(e,f=>!f.parent),o=n1(e,i,t);if(!o||o.kind===19)return!0;let s=t.getLineAndCharacterOfPosition(e.getEnd()).line,l=t.getLineAndCharacterOfPosition(o.getStart(t)).line;return s!==l}function N7(e,t,r){let i=jn(t,o=>o.end!==e?\"quit\":NY(o.kind));return!!i&&W6e(i,r)}function P7(e){let t=0,r=0,i=5;return pa(e,function o(s){if(O7(s.kind)){let l=s.getLastToken(e);l?.kind===26?t++:r++}else if(SY(s.kind)){let l=s.getLastToken(e);if(l?.kind===26)t++;else if(l&&l.kind!==27){let f=Gs(e,l.getStart(e)).line,d=Gs(e,Pg(e,l.end).start).line;f!==d&&r++}}return t+r>=i?!0:pa(s,o)}),t===0&&r<=1?!0:t/r>1/i}function M7(e,t){return U7(e,e.getDirectories,t)||[]}function xY(e,t,r,i,o){return U7(e,e.readDirectory,t,r,i,o)||Je}function F7(e,t){return U7(e,e.fileExists,t)}function G7(e,t){return B7(()=>gp(t,e))||!1}function B7(e){try{return e()}catch{return}}function U7(e,t,...r){return B7(()=>t&&t.apply(e,r))}function AY(e,t,r){let i=[];return Th(e,o=>{if(o===r)return!0;let s=vi(o,\"package.json\");F7(t,s)&&i.push(s)}),i}function cge(e,t){let r;return Th(e,i=>{if(i===\"node_modules\"||(r=Vpe(i,o=>F7(t,o),\"package.json\"),r))return!0}),r}function lge(e,t){if(!t.fileExists)return[];let r=[];return Th(ni(e),i=>{let o=vi(i,\"package.json\");if(t.fileExists(o)){let s=uge(o,t);s&&r.push(s)}}),r}function uge(e,t){if(!t.readFile)return;let r=[\"dependencies\",\"devDependencies\",\"optionalDependencies\",\"peerDependencies\"],i=t.readFile(e)||\"\",o=z6e(i),s={};if(o)for(let d of r){let g=o[d];if(!g)continue;let m=new Map;for(let v in g)m.set(v,g[v]);s[d]=m}let l=[[1,s.dependencies],[2,s.devDependencies],[8,s.optionalDependencies],[4,s.peerDependencies]];return{...s,parseable:!!o,fileName:e,get:f,has(d,g){return!!f(d,g)}};function f(d,g=15){for(let[m,v]of l)if(v&&g&m){let S=v.get(d);if(S!==void 0)return S}}}function dk(e,t,r){let i=(r.getPackageJsonsVisibleToFile&&r.getPackageJsonsVisibleToFile(e.fileName)||lge(e.fileName,r)).filter(A=>A.parseable),o,s,l;return{allowsImportingAmbientModule:d,allowsImportingSourceFile:g,allowsImportingSpecifier:m};function f(A){let w=x(A);for(let C of i)if(C.has(w)||C.has(rF(w)))return!0;return!1}function d(A,w){if(!i.length||!A.valueDeclaration)return!0;if(!s)s=new Map;else{let q=s.get(A);if(q!==void 0)return q}let C=l_(A.getName());if(v(C))return s.set(A,!0),!0;let P=A.valueDeclaration.getSourceFile(),F=S(P.fileName,w);if(typeof F>\"u\")return s.set(A,!0),!0;let B=f(F)||f(C);return s.set(A,B),B}function g(A,w){if(!i.length)return!0;if(!l)l=new Map;else{let F=l.get(A);if(F!==void 0)return F}let C=S(A.fileName,w);if(!C)return l.set(A,!0),!0;let P=f(C);return l.set(A,P),P}function m(A){return!i.length||v(A)||zd(A)||qp(A)?!0:f(A)}function v(A){return!!(Cu(e)&&ZT.nodeCoreModules.has(A)&&(o===void 0&&(o=V7(e)),o))}function S(A,w){if(!jl(A,\"node_modules\"))return;let C=Q0.getNodeModulesPackageName(r.getCompilationSettings(),e,A,w,t);if(!!C&&!zd(C)&&!qp(C))return x(C)}function x(A){let w=Ou(eN(A)).slice(1);return na(w[0],\"@\")?`${w[0]}/${w[1]}`:w[0]}}function z6e(e){try{return JSON.parse(e)}catch{return}}function V7(e){return vt(e.imports,({text:t})=>ZT.nodeCoreModules.has(t))}function dge(e){return ya(Ou(e),\"node_modules\")}function CY(e){return e.file!==void 0&&e.start!==void 0&&e.length!==void 0}function fge(e,t){let r=Du(e),i=H1(t,r,Ks,f8);if(i>=0){let o=t[i];return L.assertEqual(o.file,e.getSourceFile(),\"Diagnostics proided to 'findDiagnosticForNode' must be from a single SourceFile\"),Ga(o,CY)}}function _ge(e,t){var r;let i=H1(t,e.start,l=>l.start,Es);for(i<0&&(i=~i);((r=t[i-1])==null?void 0:r.start)===e.start;)i--;let o=[],s=wl(e);for(;;){let l=zr(t[i],CY);if(!l||l.start>s)break;Roe(e,l)&&o.push(l),i++}return o}function ZS({startPosition:e,endPosition:t}){return Wc(e,t===void 0?e:t)}function IY(e,t){let r=Vi(e,t.start);return jn(r,o=>o.getStart(e)<t.start||o.getEnd()>wl(t)?\"quit\":ot(o)&&K2(t,Du(o,e)))}function pge(e,t,r=Ks){return e?ba(e)?r(on(e,t)):t(e,0):void 0}function LY(e){return ba(e)?Vo(e):e}function mge(e,t){if(hge(e)){let r=gge(e);if(r)return r;let i=gu.moduleSymbolToValidIdentifier(kY(e),t,!1),o=gu.moduleSymbolToValidIdentifier(kY(e),t,!0);return i===o?i:[i,o]}return e.name}function j7(e,t,r){return hge(e)?gge(e)||gu.moduleSymbolToValidIdentifier(kY(e),t,!!r):e.name}function hge(e){return!(e.flags&33554432)&&(e.escapedName===\"export=\"||e.escapedName===\"default\")}function gge(e){return ks(e.declarations,t=>{var r,i;return pc(t)?(r=zr(ql(t.expression),Re))==null?void 0:r.text:(i=zr(sa(t),Re))==null?void 0:i.text})}function kY(e){var t;return L.checkDefined(e.parent,`Symbol parent was undefined. Flags: ${L.formatSymbolFlags(e.flags)}. Declarations: ${(t=e.declarations)==null?void 0:t.map(r=>{let i=L.formatSyntaxKind(r.kind),o=Yn(r),{expression:s}=r;return(o?\"[JS]\":\"\")+i+(s?` (expression: ${L.formatSyntaxKind(s.kind)})`:\"\")}).join(\", \")}.`)}function yge(e,t,r){let i=t.length;if(i+r>e.length)return!1;for(let o=0;o<i;o++)if(t.charCodeAt(o)!==e.charCodeAt(o+r))return!1;return!0}function DY(e){return e.charCodeAt(0)===95}function J6e(e){return!vge(e)}function vge(e){let t=e.getSourceFile();return!t.externalModuleIndicator&&!t.commonJsModuleIndicator?!1:Yn(e)||!jn(e,r=>Tc(r)&&mp(r))}function H7(e){return!!(Tj(e)&8192)}function W7(e,t){let r=ks(e.imports,i=>{if(ZT.nodeCoreModules.has(i.text))return na(i.text,\"node:\")});return r??t.usesUriStyleNodeCoreModules}function YN(e){return e===`\n`?1:0}function ex(e){return ba(e)?jm(uo(e[0]),e.slice(1)):uo(e)}function z7({options:e},t){let r=!e.semicolons||e.semicolons===\"ignore\",i=e.semicolons===\"remove\"||r&&!P7(t);return{...e,semicolons:i?\"remove\":\"ignore\"}}function wY(e){return e===2||e===3}function fk(e,t){return e.isSourceFileFromExternalLibrary(t)||e.isSourceFileDefaultLibrary(t)}function J7(e,t){let r=new Set,i=new Set,o=new Set;for(let f of t)if(!vO(f)){let d=vs(f.expression);if(_T(d))switch(d.kind){case 14:case 10:r.add(d.text);break;case 8:i.add(parseInt(d.text));break;case 9:let g=Ple(Oc(d.text,\"n\")?d.text.slice(0,-1):d.text);g&&o.add(j0(g));break}else{let g=e.getSymbolAtLocation(f.expression);if(g&&g.valueDeclaration&&q0(g.valueDeclaration)){let m=e.getConstantValue(g.valueDeclaration);m!==void 0&&s(m)}}}return{addValue:s,hasValue:l};function s(f){switch(typeof f){case\"string\":r.add(f);break;case\"number\":i.add(f)}}function l(f){switch(typeof f){case\"string\":return r.has(f);case\"number\":return i.has(f);case\"object\":return o.has(j0(f))}}}var $l,RY,bge,K7,OY,q7,Ege,X7,NY,K6e=gt({\"src/services/utilities.ts\"(){\"use strict\";Fr(),$l=kg(99,!0),RY=(e=>(e[e.None=0]=\"None\",e[e.Value=1]=\"Value\",e[e.Type=2]=\"Type\",e[e.Namespace=4]=\"Namespace\",e[e.All=7]=\"All\",e))(RY||{}),bge=/^\\/\\/\\/\\s*</,K7=[131,129,160,134,95,138,141,144,104,148,149,146,152,153,110,114,155,156,157],OY=(e=>(e[e.Single=0]=\"Single\",e[e.Double=1]=\"Double\",e))(OY||{}),q7=M6e(),Ege=`\n`,X7=\"anonymous function\",NY=Kp(SY,oge,sge,O7)}});function Tge(e){let t=1,r=Of(),i=new Map,o=new Map,s,l={isUsableByFile:x=>x===s,isEmpty:()=>!r.size,clear:()=>{r.clear(),i.clear(),s=void 0},add:(x,A,w,C,P,F,B,q)=>{x!==s&&(l.clear(),s=x);let W;if(P){let ge=jW(P.fileName);if(ge){let{topLevelNodeModulesIndex:X,topLevelPackageNameIndex:Ve,packageRootIndex:we}=ge;if(W=iF(eN(P.fileName.substring(Ve+1,we))),na(x,P.path.substring(0,X))){let ke=o.get(W),Pe=P.fileName.substring(0,Ve+1);if(ke){let Ce=ke.indexOf(Wg);X>Ce&&o.set(W,Pe)}else o.set(W,Pe)}}}let R=F===1&&ZA(A)||A,ie=F===0||UN(R)?Gi(w):mge(R,void 0),Q=typeof ie==\"string\"?ie:ie[0],fe=typeof ie==\"string\"?void 0:ie[1],Z=l_(C.name),U=t++,re=wd(A,q),le=A.flags&33554432?void 0:A,_e=C.flags&33554432?void 0:C;(!le||!_e)&&i.set(U,[A,C]),r.add(d(Q,A,fl(Z)?void 0:Z,q),{id:U,symbolTableKey:w,symbolName:Q,capitalizedSymbolName:fe,moduleName:Z,moduleFile:P,moduleFileName:P?.fileName,packageName:W,exportKind:F,targetFlags:re.flags,isFromPackageJson:B,symbol:le,moduleSymbol:_e})},get:(x,A)=>{if(x!==s)return;let w=r.get(A);return w?.map(f)},search:(x,A,w,C)=>{if(x===s)return Ld(r,(P,F)=>{let{symbolName:B,ambientModuleName:q}=g(F),W=A&&P[0].capitalizedSymbolName||B;if(w(W,P[0].targetFlags)){let R=P.map(f).filter((ie,Q)=>S(ie,P[Q].packageName));if(R.length){let ie=C(R,W,!!q,F);if(ie!==void 0)return ie}}})},releaseSymbols:()=>{i.clear()},onFileChanged:(x,A,w)=>m(x)&&m(A)?!1:s&&s!==A.path||w&&V7(x)!==V7(A)||!up(x.moduleAugmentations,A.moduleAugmentations)||!v(x,A)?(l.clear(),!0):(s=A.path,!1)};return L.isDebugging&&Object.defineProperty(l,\"__cache\",{get:()=>r}),l;function f(x){if(x.symbol&&x.moduleSymbol)return x;let{id:A,exportKind:w,targetFlags:C,isFromPackageJson:P,moduleFileName:F}=x,[B,q]=i.get(A)||Je;if(B&&q)return{symbol:B,moduleSymbol:q,moduleFileName:F,exportKind:w,targetFlags:C,isFromPackageJson:P};let W=(P?e.getPackageJsonAutoImportProvider():e.getCurrentProgram()).getTypeChecker(),Y=x.moduleSymbol||q||L.checkDefined(x.moduleFile?W.getMergedSymbol(x.moduleFile.symbol):W.tryFindAmbientModule(x.moduleName)),R=x.symbol||B||L.checkDefined(w===2?W.resolveExternalModuleSymbol(Y):W.tryGetMemberInModuleExportsAndProperties(Gi(x.symbolTableKey),Y),`Could not find symbol '${x.symbolName}' by key '${x.symbolTableKey}' in module ${Y.name}`);return i.set(A,[R,Y]),{symbol:R,moduleSymbol:Y,moduleFileName:F,exportKind:w,targetFlags:C,isFromPackageJson:P}}function d(x,A,w,C){let P=w||\"\";return`${x}|${$a(wd(A,C))}|${P}`}function g(x){let A=x.substring(0,x.indexOf(\"|\")),w=x.substring(x.lastIndexOf(\"|\")+1);return{symbolName:A,ambientModuleName:w===\"\"?void 0:w}}function m(x){return!x.commonJsModuleIndicator&&!x.externalModuleIndicator&&!x.moduleAugmentations&&!x.ambientModuleNames}function v(x,A){if(!up(x.ambientModuleNames,A.ambientModuleNames))return!1;let w=-1,C=-1;for(let P of A.ambientModuleNames){let F=B=>lH(B)&&B.name.text===P;if(w=Yc(x.statements,F,w+1),C=Yc(A.statements,F,C+1),x.statements[w]!==A.statements[C])return!1}return!0}function S(x,A){if(!A||!x.moduleFileName)return!0;let w=e.getGlobalTypingsCacheLocation();if(w&&na(x.moduleFileName,w))return!0;let C=o.get(A);return!C||na(x.moduleFileName,C)}}function PY(e,t,r,i,o,s,l){var f;if(t===r)return!1;let d=l?.get(t.path,r.path,i,{});if(d?.isBlockedByPackageJsonDependencies!==void 0)return!d.isBlockedByPackageJsonDependencies;let g=lb(s),m=(f=s.getGlobalTypingsCacheLocation)==null?void 0:f.call(s),v=!!Q0.forEachFileNameOfModule(t.fileName,r.fileName,s,!1,S=>{let x=e.getSourceFile(S);return(x===r||!x)&&q6e(t.fileName,S,g,m)});if(o){let S=v&&o.allowsImportingSourceFile(r,s);return l?.setBlockedByPackageJsonDependencies(t.path,r.path,i,{},!S),S}return v}function q6e(e,t,r,i){let o=Th(t,l=>Hl(l)===\"node_modules\"?l:void 0),s=o&&ni(r(o));return s===void 0||na(r(e),s)||!!i&&na(r(i),s)}function MY(e,t,r,i,o){var s,l;let f=AR(t),d=r.autoImportFileExcludePatterns&&Zi(r.autoImportFileExcludePatterns,m=>{let v=kW(m,\"\",\"exclude\");return v?Qy(v,f):void 0});Sge(e.getTypeChecker(),e.getSourceFiles(),d,(m,v)=>o(m,v,e,!1));let g=i&&((s=t.getPackageJsonAutoImportProvider)==null?void 0:s.call(t));if(g){let m=Ms(),v=e.getTypeChecker();Sge(g.getTypeChecker(),g.getSourceFiles(),d,(S,x)=>{(x&&!e.getSourceFile(x.fileName)||!x&&!v.resolveName(S.name,void 0,1536,!1))&&o(S,x,g,!0)}),(l=t.log)==null||l.call(t,`forEachExternalModuleToImportFrom autoImportProvider: ${Ms()-m}`)}}function Sge(e,t,r,i){var o;let s=r&&(l=>r.some(f=>f.test(l)));for(let l of e.getAmbientModules())!jl(l.name,\"*\")&&!(r&&((o=l.declarations)==null?void 0:o.every(f=>s(f.getSourceFile().fileName))))&&i(l,void 0);for(let l of t)kd(l)&&!s?.(l.fileName)&&i(e.getMergedSymbol(l.symbol),l)}function $N(e,t,r,i,o){var s,l,f,d,g;let m=Ms();(s=t.getPackageJsonAutoImportProvider)==null||s.call(t);let v=((l=t.getCachedExportInfoMap)==null?void 0:l.call(t))||Tge({getCurrentProgram:()=>r,getPackageJsonAutoImportProvider:()=>{var A;return(A=t.getPackageJsonAutoImportProvider)==null?void 0:A.call(t)},getGlobalTypingsCacheLocation:()=>{var A;return(A=t.getGlobalTypingsCacheLocation)==null?void 0:A.call(t)}});if(v.isUsableByFile(e.path))return(f=t.log)==null||f.call(t,\"getExportInfoMap: cache hit\"),v;(d=t.log)==null||d.call(t,\"getExportInfoMap: cache miss or empty; calculating new results\");let S=r.getCompilerOptions(),x=0;try{MY(r,t,i,!0,(A,w,C,P)=>{++x%100===0&&o?.throwIfCancellationRequested();let F=new Map,B=C.getTypeChecker(),q=Y7(A,B,S);q&&xge(q.symbol,B)&&v.add(e.path,q.symbol,q.exportKind===1?\"default\":\"export=\",A,w,q.exportKind,P,B),B.forEachExportAndPropertyOfModule(A,(W,Y)=>{W!==q?.symbol&&xge(W,B)&&U_(F,Y)&&v.add(e.path,W,Y,A,w,0,P,B)})})}catch(A){throw v.clear(),A}return(g=t.log)==null||g.call(t,`getExportInfoMap: done in ${Ms()-m} ms`),v}function Y7(e,t,r){let i=X6e(e,t);if(!i)return;let{symbol:o,exportKind:s}=i,l=$7(o,t,r);return l&&{symbol:o,exportKind:s,...l}}function xge(e,t){return!t.isUndefinedSymbol(e)&&!t.isUnknownSymbol(e)&&!yR(e)&&!Cce(e)}function X6e(e,t){let r=t.resolveExternalModuleSymbol(e);if(r!==e)return{symbol:r,exportKind:2};let i=t.tryGetMemberInModuleExports(\"default\",e);if(i)return{symbol:i,exportKind:1}}function $7(e,t,r){let i=ZA(e);if(i)return{resolvedSymbol:i,name:i.name};let o=Y6e(e);if(o!==void 0)return{resolvedSymbol:e,name:o};if(e.flags&2097152){let s=t.getImmediateAliasedSymbol(e);if(s&&s.parent)return $7(s,t,r)}return e.escapedName!==\"default\"&&e.escapedName!==\"export=\"?{resolvedSymbol:e,name:e.getName()}:{resolvedSymbol:e,name:j7(e,r.target)}}function Y6e(e){return e.declarations&&ks(e.declarations,t=>{var r;if(pc(t))return(r=zr(ql(t.expression),Re))==null?void 0:r.text;if(Mu(t))return L.assert(t.name.text===\"default\",\"Expected the specifier to be a default export\"),t.propertyName&&t.propertyName.text})}var FY,GY,$6e=gt({\"src/services/exportInfoMap.ts\"(){\"use strict\";Fr(),FY=(e=>(e[e.Named=0]=\"Named\",e[e.Default=1]=\"Default\",e[e.Namespace=2]=\"Namespace\",e[e.CommonJS=3]=\"CommonJS\",e))(FY||{}),GY=(e=>(e[e.Named=0]=\"Named\",e[e.Default=1]=\"Default\",e[e.ExportEquals=2]=\"ExportEquals\",e[e.UMD=3]=\"UMD\",e))(GY||{})}});function Age(){let e=kg(99,!1);function t(i,o,s){return e4e(r(i,o,s),i)}function r(i,o,s){let l=0,f=0,d=[],{prefix:g,pushTemplate:m}=r4e(o);i=g+i;let v=g.length;m&&d.push(15),e.setText(i);let S=0,x=[],A=0;do{l=e.scan(),qA(l)||(w(),f=l);let C=e.getTextPos();if(Z6e(e.getTokenPos(),C,v,o4e(l),x),C>=i.length){let P=Q6e(e,l,Os(d));P!==void 0&&(S=P)}}while(l!==1);function w(){switch(l){case 43:case 68:!wge[f]&&e.reScanSlashToken()===13&&(l=13);break;case 29:f===79&&A++;break;case 31:A>0&&A--;break;case 131:case 152:case 148:case 134:case 153:A>0&&!s&&(l=79);break;case 15:d.push(l);break;case 18:d.length>0&&d.push(l);break;case 19:if(d.length>0){let C=Os(d);C===15?(l=e.reScanTemplateToken(!1),l===17?d.pop():L.assertEqual(l,16,\"Should have been a template middle.\")):(L.assertEqual(C,18,\"Should have been an open brace\"),d.pop())}break;default:if(!Xu(l))break;(f===24||Xu(f)&&Xu(l)&&!n4e(f,l))&&(l=79)}}return{endOfLineState:S,spans:x}}return{getClassificationsForLine:t,getEncodedLexicalClassifications:r}}function Q6e(e,t,r){switch(t){case 10:{if(!e.isUnterminated())return;let i=e.getTokenText(),o=i.length-1,s=0;for(;i.charCodeAt(o-s)===92;)s++;return(s&1)===0?void 0:i.charCodeAt(0)===34?3:2}case 3:return e.isUnterminated()?1:void 0;default:if(Hy(t)){if(!e.isUnterminated())return;switch(t){case 17:return 5;case 14:return 4;default:return L.fail(\"Only 'NoSubstitutionTemplateLiteral's and 'TemplateTail's can be unterminated; got SyntaxKind #\"+t)}}return r===15?6:void 0}}function Z6e(e,t,r,i,o){if(i===8)return;e===0&&r>0&&(e+=r);let s=t-e;s>0&&o.push(e-r,s,i)}function e4e(e,t){let r=[],i=e.spans,o=0;for(let l=0;l<i.length;l+=3){let f=i[l],d=i[l+1],g=i[l+2];if(o>=0){let m=f-o;m>0&&r.push({length:m,classification:4})}r.push({length:d,classification:t4e(g)}),o=f+d}let s=t.length-o;return s>0&&r.push({length:s,classification:4}),{entries:r,finalLexState:e.endOfLineState}}function t4e(e){switch(e){case 1:return 3;case 3:return 1;case 4:return 6;case 25:return 7;case 5:return 2;case 6:return 8;case 8:return 4;case 10:return 0;case 2:case 11:case 12:case 13:case 14:case 15:case 16:case 9:case 17:return 5;default:return}}function n4e(e,t){if(!ZX(e))return!0;switch(t){case 137:case 151:case 135:case 124:case 127:return!0;default:return!1}}function r4e(e){switch(e){case 3:return{prefix:`\"\\\\\n`};case 2:return{prefix:`'\\\\\n`};case 1:return{prefix:`/*\n`};case 4:return{prefix:\"`\\n\"};case 5:return{prefix:`}\n`,pushTemplate:!0};case 6:return{prefix:\"\",pushTemplate:!0};case 0:return{prefix:\"\"};default:return L.assertNever(e)}}function i4e(e){switch(e){case 41:case 43:case 44:case 39:case 40:case 47:case 48:case 49:case 29:case 31:case 32:case 33:case 102:case 101:case 128:case 150:case 34:case 35:case 36:case 37:case 50:case 52:case 51:case 55:case 56:case 74:case 73:case 78:case 70:case 71:case 72:case 64:case 65:case 66:case 68:case 69:case 63:case 27:case 60:case 75:case 76:case 77:return!0;default:return!1}}function a4e(e){switch(e){case 39:case 40:case 54:case 53:case 45:case 46:return!0;default:return!1}}function o4e(e){if(Xu(e))return 3;if(i4e(e)||a4e(e))return 5;if(e>=18&&e<=78)return 10;switch(e){case 8:return 4;case 9:return 25;case 10:return 6;case 13:return 7;case 7:case 3:case 2:return 1;case 5:case 4:return 8;case 79:default:return Hy(e)?6:2}}function Cge(e,t,r,i,o){return kge(BY(e,t,r,i,o))}function Ige(e,t){switch(t){case 264:case 260:case 261:case 259:case 228:case 215:case 216:e.throwIfCancellationRequested()}}function BY(e,t,r,i,o){let s=[];return r.forEachChild(function f(d){if(!(!d||!$8(o,d.pos,d.getFullWidth()))){if(Ige(t,d.kind),Re(d)&&!rc(d)&&i.has(d.escapedText)){let g=e.getSymbolAtLocation(d),m=g&&Lge(g,e1(d),e);m&&l(d.getStart(r),d.getEnd(),m)}d.forEachChild(f)}}),{spans:s,endOfLineState:0};function l(f,d,g){let m=d-f;L.assert(m>0,`Classification had non-positive length of ${m}`),s.push(f),s.push(m),s.push(g)}}function Lge(e,t,r){let i=e.getFlags();if((i&2885600)!==0)return i&32?11:i&384?12:i&524288?16:i&1536?t&4||t&1&&s4e(e)?14:void 0:i&2097152?Lge(r.getAliasedSymbol(e),t,r):t&2?i&64?13:i&262144?15:void 0:void 0}function s4e(e){return vt(e.declarations,t=>Tc(t)&&Gh(t)===1)}function c4e(e){switch(e){case 1:return\"comment\";case 2:return\"identifier\";case 3:return\"keyword\";case 4:return\"number\";case 25:return\"bigint\";case 5:return\"operator\";case 6:return\"string\";case 8:return\"whitespace\";case 9:return\"text\";case 10:return\"punctuation\";case 11:return\"class name\";case 12:return\"enum name\";case 13:return\"interface name\";case 14:return\"module name\";case 15:return\"type parameter name\";case 16:return\"type alias name\";case 17:return\"parameter name\";case 18:return\"doc comment tag name\";case 19:return\"jsx open tag name\";case 20:return\"jsx close tag name\";case 21:return\"jsx self closing tag name\";case 22:return\"jsx attribute\";case 23:return\"jsx text\";case 24:return\"jsx attribute string literal value\";default:return}}function kge(e){L.assert(e.spans.length%3===0);let t=e.spans,r=[];for(let i=0;i<t.length;i+=3)r.push({textSpan:il(t[i],t[i+1]),classificationType:c4e(t[i+2])});return r}function Dge(e,t,r){return kge(UY(e,t,r))}function UY(e,t,r){let i=r.start,o=r.length,s=kg(99,!1,t.languageVariant,t.text),l=kg(99,!1,t.languageVariant,t.text),f=[];return q(t),{spans:f,endOfLineState:0};function d(W,Y,R){f.push(W),f.push(Y),f.push(R)}function g(W){for(s.setTextPos(W.pos);;){let Y=s.getTextPos();if(!hoe(t.text,Y))return Y;let R=s.scan(),ie=s.getTextPos(),Q=ie-Y;if(!qA(R))return Y;switch(R){case 4:case 5:continue;case 2:case 3:m(W,R,Y,Q),s.setTextPos(ie);continue;case 7:let fe=t.text,Z=fe.charCodeAt(Y);if(Z===60||Z===62){d(Y,Q,1);continue}L.assert(Z===124||Z===61),w(fe,Y,ie);break;case 6:break;default:L.assertNever(R)}}}function m(W,Y,R,ie){if(Y===3){let Q=Mde(t.text,R,ie);if(Q&&Q.jsDoc){go(Q.jsDoc,W),S(Q.jsDoc);return}}else if(Y===2&&x(R,ie))return;v(R,ie)}function v(W,Y){d(W,Y,1)}function S(W){var Y,R,ie,Q,fe,Z,U,re;let le=W.pos;if(W.tags)for(let ge of W.tags){ge.pos!==le&&v(le,ge.pos-le),d(ge.pos,1,10),d(ge.tagName.pos,ge.tagName.end-ge.tagName.pos,18),le=ge.tagName.end;let X=ge.tagName.end;switch(ge.kind){case 344:let Ve=ge;_e(Ve),X=Ve.isNameFirst&&((Y=Ve.typeExpression)==null?void 0:Y.end)||Ve.name.end;break;case 351:let we=ge;X=we.isNameFirst&&((R=we.typeExpression)==null?void 0:R.end)||we.name.end;break;case 348:A(ge),le=ge.end,X=ge.typeParameters.end;break;case 349:let ke=ge;X=((ie=ke.typeExpression)==null?void 0:ie.kind)===312&&((Q=ke.fullName)==null?void 0:Q.end)||((fe=ke.typeExpression)==null?void 0:fe.end)||X;break;case 341:X=ge.typeExpression.end;break;case 347:q(ge.typeExpression),le=ge.end,X=ge.typeExpression.end;break;case 346:case 343:X=ge.typeExpression.end;break;case 345:q(ge.typeExpression),le=ge.end,X=((Z=ge.typeExpression)==null?void 0:Z.end)||X;break;case 350:X=((U=ge.name)==null?void 0:U.end)||X;break;case 331:case 332:X=ge.class.end;break;case 352:q(ge.typeExpression),le=ge.end,X=((re=ge.typeExpression)==null?void 0:re.end)||X;break}typeof ge.comment==\"object\"?v(ge.comment.pos,ge.comment.end-ge.comment.pos):typeof ge.comment==\"string\"&&v(X,ge.end-X)}le!==W.end&&v(le,W.end-le);return;function _e(ge){ge.isNameFirst&&(v(le,ge.name.pos-le),d(ge.name.pos,ge.name.end-ge.name.pos,17),le=ge.name.end),ge.typeExpression&&(v(le,ge.typeExpression.pos-le),q(ge.typeExpression),le=ge.typeExpression.end),ge.isNameFirst||(v(le,ge.name.pos-le),d(ge.name.pos,ge.name.end-ge.name.pos,17),le=ge.name.end)}}function x(W,Y){let R=/^(\\/\\/\\/\\s*)(<)(?:(\\S+)((?:[^/]|\\/[^>])*)(\\/>)?)?/im,ie=/(\\s)(\\S+)(\\s*)(=)(\\s*)('[^']+'|\"[^\"]+\")/img,Q=t.text.substr(W,Y),fe=R.exec(Q);if(!fe||!fe[3]||!(fe[3]in aw))return!1;let Z=W;v(Z,fe[1].length),Z+=fe[1].length,d(Z,fe[2].length,10),Z+=fe[2].length,d(Z,fe[3].length,21),Z+=fe[3].length;let U=fe[4],re=Z;for(;;){let _e=ie.exec(U);if(!_e)break;let ge=Z+_e.index+_e[1].length;ge>re&&(v(re,ge-re),re=ge),d(re,_e[2].length,22),re+=_e[2].length,_e[3].length&&(v(re,_e[3].length),re+=_e[3].length),d(re,_e[4].length,5),re+=_e[4].length,_e[5].length&&(v(re,_e[5].length),re+=_e[5].length),d(re,_e[6].length,24),re+=_e[6].length}Z+=fe[4].length,Z>re&&v(re,Z-re),fe[5]&&(d(Z,fe[5].length,10),Z+=fe[5].length);let le=W+Y;return Z<le&&v(Z,le-Z),!0}function A(W){for(let Y of W.getChildren())q(Y)}function w(W,Y,R){let ie;for(ie=Y;ie<R&&!Wl(W.charCodeAt(ie));ie++);for(d(Y,ie-Y,1),l.setTextPos(ie);l.getTextPos()<R;)C()}function C(){let W=l.getTextPos(),Y=l.scan(),R=l.getTextPos(),ie=B(Y);ie&&d(W,R-W,ie)}function P(W){if(dm(W)||rc(W))return!0;let Y=F(W);if(!eS(W)&&W.kind!==11&&Y===void 0)return!1;let R=W.kind===11?W.pos:g(W),ie=W.end-R;if(L.assert(ie>=0),ie>0){let Q=Y||B(W.kind,W);Q&&d(R,ie,Q)}return!0}function F(W){switch(W.parent&&W.parent.kind){case 283:if(W.parent.tagName===W)return 19;break;case 284:if(W.parent.tagName===W)return 20;break;case 282:if(W.parent.tagName===W)return 21;break;case 288:if(W.parent.name===W)return 22;break}}function B(W,Y){if(Xu(W))return 3;if((W===29||W===31)&&Y&&Ohe(Y.parent))return 10;if(Phe(W)){if(Y){let R=Y.parent;if(W===63&&(R.kind===257||R.kind===169||R.kind===166||R.kind===288)||R.kind===223||R.kind===221||R.kind===222||R.kind===224)return 5}return 10}else{if(W===8)return 4;if(W===9)return 25;if(W===10)return Y&&Y.parent.kind===288?24:6;if(W===13)return 6;if(Hy(W))return 6;if(W===11)return 23;if(W===79){if(Y){switch(Y.parent.kind){case 260:return Y.parent.name===Y?11:void 0;case 165:return Y.parent.name===Y?15:void 0;case 261:return Y.parent.name===Y?13:void 0;case 263:return Y.parent.name===Y?12:void 0;case 264:return Y.parent.name===Y?14:void 0;case 166:return Y.parent.name===Y?kT(Y)?3:17:void 0}if(Ch(Y.parent))return 3}return 2}}}function q(W){if(!!W&&Q8(i,o,W.pos,W.getFullWidth())){Ige(e,W.kind);for(let Y of W.getChildren(t))P(Y)||q(Y)}}}var wge,l4e=gt({\"src/services/classifier.ts\"(){\"use strict\";Fr(),wge=gae([79,10,8,9,13,108,45,46,21,23,19,110,95],e=>e,()=>!0)}}),Q7,u4e=gt({\"src/services/documentHighlights.ts\"(){\"use strict\";Fr(),(e=>{function t(Z,U,re,le,_e){let ge=Zd(re,le);if(ge.parent&&(Xm(ge.parent)&&ge.parent.tagName===ge||BS(ge.parent))){let{openingElement:X,closingElement:Ve}=ge.parent.parent,we=[X,Ve].map(({tagName:ke})=>r(ke,re));return[{fileName:re.fileName,highlightSpans:we}]}return i(le,ge,Z,U,_e)||o(ge,re)}e.getDocumentHighlights=t;function r(Z,U){return{fileName:U.fileName,textSpan:Du(Z,U),kind:\"none\"}}function i(Z,U,re,le,_e){let ge=new Set(_e.map(ke=>ke.fileName)),X=js.getReferenceEntriesForNode(Z,U,re,_e,le,void 0,ge);if(!X)return;let Ve=qD(X.map(js.toHighlightSpan),ke=>ke.fileName,ke=>ke.span),we=Dl(re.useCaseSensitiveFileNames());return lo(VD(Ve.entries(),([ke,Pe])=>{if(!ge.has(ke)){if(!re.redirectTargetsMap.has(Ts(ke,re.getCurrentDirectory(),we)))return;let Ce=re.getSourceFile(ke);ke=wr(_e,Be=>!!Be.redirectInfo&&Be.redirectInfo.redirectTarget===Ce).fileName,L.assert(ge.has(ke))}return{fileName:ke,highlightSpans:Pe}}))}function o(Z,U){let re=s(Z,U);return re&&[{fileName:U.fileName,highlightSpans:re}]}function s(Z,U){switch(Z.kind){case 99:case 91:return FT(Z.parent)?ie(Z.parent,U):void 0;case 105:return le(Z.parent,V_,q);case 109:return le(Z.parent,Fz,B);case 111:case 83:case 96:let ge=Z.kind===83?Z.parent.parent:Z.parent;return le(ge,hO,F);case 107:return le(Z.parent,mO,P);case 82:case 88:return vO(Z.parent)||IL(Z.parent)?le(Z.parent.parent.parent,mO,P):void 0;case 81:case 86:return le(Z.parent,gI,C);case 97:case 115:case 90:return le(Z.parent,X=>Wy(X,!0),w);case 135:return re(Ec,[135]);case 137:case 151:return re(rb,[137,151]);case 133:return le(Z.parent,b2,W);case 132:return _e(W(Z));case 125:return _e(Y(Z));case 101:return;default:return Rg(Z.kind)&&(Kl(Z.parent)||Bc(Z.parent))?_e(S(Z.kind,Z.parent)):void 0}function re(ge,X){return le(Z.parent,ge,Ve=>{var we;return Zi((we=zr(Ve,$p))==null?void 0:we.symbol.declarations,ke=>ge(ke)?wr(ke.getChildren(U),Pe=>ya(X,Pe.kind)):void 0)})}function le(ge,X,Ve){return X(ge)?_e(Ve(ge,U)):void 0}function _e(ge){return ge&&ge.map(X=>r(X,U))}}function l(Z){return Fz(Z)?[Z]:hO(Z)?Qi(Z.catchClause?l(Z.catchClause):Z.tryBlock&&l(Z.tryBlock),Z.finallyBlock&&l(Z.finallyBlock)):Ia(Z)?void 0:g(Z,l)}function f(Z){let U=Z;for(;U.parent;){let re=U.parent;if(ET(re)||re.kind===308)return re;if(hO(re)&&re.tryBlock===U&&re.catchClause)return U;U=re}}function d(Z){return gI(Z)?[Z]:Ia(Z)?void 0:g(Z,d)}function g(Z,U){let re=[];return Z.forEachChild(le=>{let _e=U(le);_e!==void 0&&re.push(...XD(_e))}),re}function m(Z,U){let re=v(U);return!!re&&re===Z}function v(Z){return jn(Z,U=>{switch(U.kind){case 252:if(Z.kind===248)return!1;case 245:case 246:case 247:case 244:case 243:return!Z.label||fe(U,Z.label.escapedText);default:return Ia(U)&&\"quit\"}})}function S(Z,U){return Zi(x(U,yS(Z)),re=>J2(re,Z))}function x(Z,U){let re=Z.parent;switch(re.kind){case 265:case 308:case 238:case 292:case 293:return U&256&&sl(Z)?[...Z.members,Z]:re.statements;case 173:case 171:case 259:return[...re.parameters,...Yr(re.parent)?re.parent.members:[]];case 260:case 228:case 261:case 184:let le=re.members;if(U&92){let _e=wr(re.members,Ec);if(_e)return[...le,..._e.parameters]}else if(U&256)return[...le,re];return le;case 207:return;default:L.assertNever(re,\"Invalid container kind.\")}}function A(Z,U,...re){return U&&ya(re,U.kind)?(Z.push(U),!0):!1}function w(Z){let U=[];if(A(U,Z.getFirstToken(),97,115,90)&&Z.kind===243){let re=Z.getChildren();for(let le=re.length-1;le>=0&&!A(U,re[le],115);le--);}return mn(d(Z.statement),re=>{m(Z,re)&&A(U,re.getFirstToken(),81,86)}),U}function C(Z){let U=v(Z);if(U)switch(U.kind){case 245:case 246:case 247:case 243:case 244:return w(U);case 252:return P(U)}}function P(Z){let U=[];return A(U,Z.getFirstToken(),107),mn(Z.caseBlock.clauses,re=>{A(U,re.getFirstToken(),82,88),mn(d(re),le=>{m(Z,le)&&A(U,le.getFirstToken(),81)})}),U}function F(Z,U){let re=[];if(A(re,Z.getFirstToken(),111),Z.catchClause&&A(re,Z.catchClause.getFirstToken(),83),Z.finallyBlock){let le=Yo(Z,96,U);A(re,le,96)}return re}function B(Z,U){let re=f(Z);if(!re)return;let le=[];return mn(l(re),_e=>{le.push(Yo(_e,109,U))}),ET(re)&&bT(re,_e=>{le.push(Yo(_e,105,U))}),le}function q(Z,U){let re=qd(Z);if(!re)return;let le=[];return bT(Ga(re.body,Va),_e=>{le.push(Yo(_e,105,U))}),mn(l(re.body),_e=>{le.push(Yo(_e,109,U))}),le}function W(Z){let U=qd(Z);if(!U)return;let re=[];return U.modifiers&&U.modifiers.forEach(le=>{A(re,le,132)}),pa(U,le=>{R(le,_e=>{b2(_e)&&A(re,_e.getFirstToken(),133)})}),re}function Y(Z){let U=qd(Z);if(!U)return;let re=[];return pa(U,le=>{R(le,_e=>{f3(_e)&&A(re,_e.getFirstToken(),125)})}),re}function R(Z,U){U(Z),!Ia(Z)&&!Yr(Z)&&!ku(Z)&&!Tc(Z)&&!Ep(Z)&&!bi(Z)&&pa(Z,re=>R(re,U))}function ie(Z,U){let re=Q(Z,U),le=[];for(let _e=0;_e<re.length;_e++){if(re[_e].kind===91&&_e<re.length-1){let ge=re[_e],X=re[_e+1],Ve=!0;for(let we=X.getStart(U)-1;we>=ge.end;we--)if(!Yp(U.text.charCodeAt(we))){Ve=!1;break}if(Ve){le.push({fileName:U.fileName,textSpan:Wc(ge.getStart(),X.end),kind:\"reference\"}),_e++;continue}}le.push(r(re[_e],U))}return le}function Q(Z,U){let re=[];for(;FT(Z.parent)&&Z.parent.elseStatement===Z;)Z=Z.parent;for(;;){let le=Z.getChildren(U);A(re,le[0],99);for(let _e=le.length-1;_e>=0&&!A(re,le[_e],91);_e--);if(!Z.elseStatement||!FT(Z.elseStatement))break;Z=Z.elseStatement}return re}function fe(Z,U){return!!jn(Z.parent,re=>J0(re)?re.label.escapedText===U:\"quit\")}})(Q7||(Q7={}))}});function Z7(e){return!!e.sourceFile}function VY(e,t){return Rge(e,t)}function Rge(e,t=\"\",r){let i=new Map,o=Dl(!!e);function s(){let C=lo(i.keys()).filter(P=>P&&P.charAt(0)===\"_\").map(P=>{let F=i.get(P),B=[];return F.forEach((q,W)=>{Z7(q)?B.push({name:W,scriptKind:q.sourceFile.scriptKind,refCount:q.languageServiceRefCount}):q.forEach((Y,R)=>B.push({name:W,scriptKind:R,refCount:Y.languageServiceRefCount}))}),B.sort((q,W)=>W.refCount-q.refCount),{bucket:P,sourceFiles:B}});return JSON.stringify(C,void 0,2)}function l(C){return typeof C.getCompilationSettings==\"function\"?C.getCompilationSettings():C}function f(C,P,F,B,q,W){let Y=Ts(C,t,o),R=e5(l(P));return d(C,Y,P,R,F,B,q,W)}function d(C,P,F,B,q,W,Y,R){return S(C,P,F,B,q,W,!0,Y,R)}function g(C,P,F,B,q,W){let Y=Ts(C,t,o),R=e5(l(P));return m(C,Y,P,R,F,B,q,W)}function m(C,P,F,B,q,W,Y,R){return S(C,P,l(F),B,q,W,!1,Y,R)}function v(C,P){let F=Z7(C)?C:C.get(L.checkDefined(P,\"If there are more than one scriptKind's for same document the scriptKind should be provided\"));return L.assert(P===void 0||!F||F.sourceFile.scriptKind===P,`Script kind should match provided ScriptKind:${P} and sourceFile.scriptKind: ${F?.sourceFile.scriptKind}, !entry: ${!F}`),F}function S(C,P,F,B,q,W,Y,R,ie){var Q,fe,Z,U;R=h4(C,R);let re=l(F),le=F===re?void 0:F,_e=R===6?100:Do(re),ge=typeof ie==\"object\"?ie:{languageVersion:_e,impliedNodeFormat:le&&NF(P,(U=(Z=(fe=(Q=le.getCompilerHost)==null?void 0:Q.call(le))==null?void 0:fe.getModuleResolutionCache)==null?void 0:Z.call(fe))==null?void 0:U.getPackageJsonInfoCache(),le,re),setExternalModuleIndicator:NR(re)};ge.languageVersion=_e;let X=i.size,Ve=Oge(B,ge.impliedNodeFormat),we=jD(i,Ve,()=>new Map);if(ai){i.size>X&&ai.instant(ai.Phase.Session,\"createdDocumentRegistryBucket\",{configFilePath:re.configFilePath,key:Ve});let Ie=!Fu(P)&&Ld(i,(Be,Ne)=>Ne!==Ve&&Be.has(P)&&Ne);Ie&&ai.instant(ai.Phase.Session,\"documentRegistryBucketOverlap\",{path:P,key1:Ie,key2:Ve})}let ke=we.get(P),Pe=ke&&v(ke,R);if(!Pe&&r){let Ie=r.getDocument(Ve,P);Ie&&(L.assert(Y),Pe={sourceFile:Ie,languageServiceRefCount:0},Ce())}if(Pe)Pe.sourceFile.version!==W&&(Pe.sourceFile=_$(Pe.sourceFile,q,W,q.getChangeRange(Pe.sourceFile.scriptSnapshot)),r&&r.setDocument(Ve,P,Pe.sourceFile)),Y&&Pe.languageServiceRefCount++;else{let Ie=f5(C,q,ge,W,!1,R);r&&r.setDocument(Ve,P,Ie),Pe={sourceFile:Ie,languageServiceRefCount:1},Ce()}return L.assert(Pe.languageServiceRefCount!==0),Pe.sourceFile;function Ce(){if(!ke)we.set(P,Pe);else if(Z7(ke)){let Ie=new Map;Ie.set(ke.sourceFile.scriptKind,ke),Ie.set(R,Pe),we.set(P,Ie)}else ke.set(R,Pe)}}function x(C,P,F,B){let q=Ts(C,t,o),W=e5(P);return A(q,W,F,B)}function A(C,P,F,B){let q=L.checkDefined(i.get(Oge(P,B))),W=q.get(C),Y=v(W,F);Y.languageServiceRefCount--,L.assert(Y.languageServiceRefCount>=0),Y.languageServiceRefCount===0&&(Z7(W)?q.delete(C):(W.delete(F),W.size===1&&q.set(C,GD(W.values(),Ks))))}function w(C,P){return lo(i.entries(),([F,B])=>{let q=B.get(C),W=q&&v(q,P);return[F,W&&W.languageServiceRefCount]})}return{acquireDocument:f,acquireDocumentWithKey:d,updateDocument:g,updateDocumentWithKey:m,releaseDocument:x,releaseDocumentWithKey:A,getLanguageServiceRefCounts:w,reportStats:s,getKeyForCompilationSettings:e5}}function e5(e){return JJ(e,V3)}function Oge(e,t){return t?`${e}|${t}`:e}var d4e=gt({\"src/services/documentRegistry.ts\"(){\"use strict\";Fr()}});function Nge(e,t,r,i,o,s,l){let f=AR(i),d=Dl(f),g=jY(t,r,d,l),m=jY(r,t,d,l);return nr.ChangeTracker.with({host:i,formatContext:o,preferences:s},v=>{_4e(e,v,g,t,r,i.getCurrentDirectory(),f),p4e(e,v,g,m,i,d)})}function jY(e,t,r,i){let o=r(e);return l=>{let f=i&&i.tryGetSourcePosition({fileName:l,pos:0}),d=s(f?f.fileName:l);return f?d===void 0?void 0:f4e(f.fileName,d,l,r):d};function s(l){if(r(l)===o)return t;let f=IW(l,o,r);return f===void 0?void 0:t+\"/\"+f}}function f4e(e,t,r,i){let o=pw(e,t,i);return HY(ni(r),o)}function _4e(e,t,r,i,o,s,l){let{configFile:f}=e.getCompilerOptions();if(!f)return;let d=ni(f.fileName),g=kI(f);if(!g)return;WY(g,(x,A)=>{switch(A){case\"files\":case\"include\":case\"exclude\":{if(m(x)||A!==\"include\"||!fu(x.initializer))return;let C=Zi(x.initializer.elements,F=>yo(F)?F.text:void 0);if(C.length===0)return;let P=nL(d,[],C,l,s);Qy(L.checkDefined(P.includeFilePattern),l).test(i)&&!Qy(L.checkDefined(P.includeFilePattern),l).test(o)&&t.insertNodeAfter(f,To(x.initializer.elements),D.createStringLiteral(S(o)));return}case\"compilerOptions\":WY(x.initializer,(w,C)=>{let P=gJ(C);L.assert(P?.type!==\"listOrElement\"),P&&(P.isFilePath||P.type===\"list\"&&P.element.isFilePath)?m(w):C===\"paths\"&&WY(w.initializer,F=>{if(!!fu(F.initializer))for(let B of F.initializer.elements)v(B)})});return}});function m(x){let A=fu(x.initializer)?x.initializer.elements:[x.initializer],w=!1;for(let C of A)w=v(C)||w;return w}function v(x){if(!yo(x))return!1;let A=HY(d,x.text),w=r(A);return w!==void 0?(t.replaceRangeWithText(f,Mge(x,f),S(w)),!0):!1}function S(x){return Xp(d,x,!l)}}function p4e(e,t,r,i,o,s){let l=e.getSourceFiles();for(let f of l){let d=r(f.fileName),g=d??f.fileName,m=ni(g),v=i(f.fileName),S=v||f.fileName,x=ni(S),A=d!==void 0||v!==void 0;g4e(f,t,w=>{if(!zd(w))return;let C=HY(x,w),P=r(C);return P===void 0?void 0:S0(Xp(m,P,s))},w=>{let C=e.getTypeChecker().getSymbolAtLocation(w);if(C?.declarations&&C.declarations.some(F=>lu(F)))return;let P=v!==void 0?Pge(w,GL(w.text,S,e.getCompilerOptions(),o),r,l):h4e(C,w,f,e,o,r);return P!==void 0&&(P.updated||A&&zd(w.text))?Q0.updateModuleSpecifier(e.getCompilerOptions(),f,s(g),P.newFileName,QS(e,o),w.text):void 0})}}function m4e(e,t){return So(vi(e,t))}function HY(e,t){return S0(m4e(e,t))}function h4e(e,t,r,i,o,s){var l;if(e){let f=wr(e.declarations,Li).fileName,d=s(f);return d===void 0?{newFileName:f,updated:!1}:{newFileName:d,updated:!0}}else{let f=H_(r,t),d=o.resolveModuleNameLiterals||!o.resolveModuleNames?(l=r.resolvedModules)==null?void 0:l.get(t.text,f):o.getResolvedModuleWithFailedLookupLocationsFromCache&&o.getResolvedModuleWithFailedLookupLocationsFromCache(t.text,r.fileName,f);return Pge(t,d,s,i.getSourceFiles())}}function Pge(e,t,r,i){if(!t)return;if(t.resolvedModule){let d=f(t.resolvedModule.resolvedFileName);if(d)return d}let o=mn(t.failedLookupLocations,s)||zd(e.text)&&mn(t.failedLookupLocations,l);if(o)return o;return t.resolvedModule&&{newFileName:t.resolvedModule.resolvedFileName,updated:!1};function s(d){let g=r(d);return g&&wr(i,m=>m.fileName===g)?l(d):void 0}function l(d){return Oc(d,\"/package.json\")?void 0:f(d)}function f(d){let g=r(d);return g&&{newFileName:g,updated:!0}}}function g4e(e,t,r,i){for(let o of e.referencedFiles||Je){let s=r(o.fileName);s!==void 0&&s!==e.text.slice(o.pos,o.end)&&t.replaceRangeWithText(e,o,s)}for(let o of e.imports){let s=i(o);s!==void 0&&s!==o.text&&t.replaceRangeWithText(e,Mge(o,e),s)}}function Mge(e,t){return Ff(e.getStart(t)+1,e.end-1)}function WY(e,t){if(!!rs(e))for(let r of e.properties)yl(r)&&yo(r.name)&&t(r,r.name.text)}var y4e=gt({\"src/services/getEditsForFileRename.ts\"(){\"use strict\";Fr()}});function QN(e,t){return{kind:e,isCaseSensitive:t}}function Fge(e){let t=new Map,r=e.trim().split(\".\").map(i=>T4e(i.trim()));if(!r.some(i=>!i.subWordTextChunks.length))return{getFullMatch:(i,o)=>v4e(i,o,r,t),getMatchForLastSegmentOfPattern:i=>zY(i,To(r),t),patternContainsDots:r.length>1}}function v4e(e,t,r,i){if(!zY(t,To(r),i)||r.length-1>e.length)return;let s;for(let l=r.length-2,f=e.length-1;l>=0;l-=1,f-=1)s=Uge(s,zY(e[f],r[l],i));return s}function Gge(e,t){let r=t.get(e);return r||t.set(e,r=Wge(e)),r}function Bge(e,t,r){let i=S4e(e,t.textLowerCase);if(i===0)return QN(t.text.length===e.length?0:1,na(e,t.text));if(t.isLowerCase){if(i===-1)return;let o=Gge(e,r);for(let s of o)if(JY(e,s,t.text,!0))return QN(2,JY(e,s,t.text,!1));if(t.text.length<e.length&&tx(e.charCodeAt(i)))return QN(2,!1)}else{if(e.indexOf(t.text)>0)return QN(2,!0);if(t.characterSpans.length>0){let o=Gge(e,r),s=Vge(e,o,t,!1)?!0:Vge(e,o,t,!0)?!1:void 0;if(s!==void 0)return QN(3,s)}}}function zY(e,t,r){if(t5(t.totalTextChunk.text,s=>s!==32&&s!==42)){let s=Bge(e,t.totalTextChunk,r);if(s)return s}let i=t.subWordTextChunks,o;for(let s of i)o=Uge(o,Bge(e,s,r));return o}function Uge(e,t){return WU([e,t],b4e)}function b4e(e,t){return e===void 0?1:t===void 0?-1:Es(e.kind,t.kind)||g0(!e.isCaseSensitive,!t.isCaseSensitive)}function JY(e,t,r,i,o={start:0,length:r.length}){return o.length<=t.length&&Kge(0,o.length,s=>E4e(r.charCodeAt(o.start+s),e.charCodeAt(t.start+s),i))}function E4e(e,t,r){return r?KY(e)===KY(t):e===t}function Vge(e,t,r,i){let o=r.characterSpans,s=0,l=0,f,d;for(;;){if(l===o.length)return!0;if(s===t.length)return!1;let g=t[s],m=!1;for(;l<o.length;l++){let v=o[l];if(m&&(!tx(r.text.charCodeAt(o[l-1].start))||!tx(r.text.charCodeAt(o[l].start)))||!JY(e,g,r.text,i,v))break;m=!0,f=f===void 0?s:f,d=d===void 0?!0:d,g=il(g.start+v.length,g.length-v.length)}!m&&d!==void 0&&(d=!1),s++}}function T4e(e){return{totalTextChunk:XY(e),subWordTextChunks:A4e(e)}}function tx(e){if(e>=65&&e<=90)return!0;if(e<127||!W8(e,99))return!1;let t=String.fromCharCode(e);return t===t.toUpperCase()}function jge(e){if(e>=97&&e<=122)return!0;if(e<127||!W8(e,99))return!1;let t=String.fromCharCode(e);return t===t.toLowerCase()}function S4e(e,t){let r=e.length-t.length;for(let i=0;i<=r;i++)if(t5(t,(o,s)=>KY(e.charCodeAt(s+i))===o))return i;return-1}function KY(e){return e>=65&&e<=90?97+(e-65):e<127?e:String.fromCharCode(e).toLowerCase().charCodeAt(0)}function qY(e){return e>=48&&e<=57}function x4e(e){return tx(e)||jge(e)||qY(e)||e===95||e===36}function A4e(e){let t=[],r=0,i=0;for(let o=0;o<e.length;o++){let s=e.charCodeAt(o);x4e(s)?(i===0&&(r=o),i++):i>0&&(t.push(XY(e.substr(r,i))),i=0)}return i>0&&t.push(XY(e.substr(r,i))),t}function XY(e){let t=e.toLowerCase();return{text:e,textLowerCase:t,isLowerCase:e===t,characterSpans:Hge(e)}}function Hge(e){return zge(e,!1)}function Wge(e){return zge(e,!0)}function zge(e,t){let r=[],i=0;for(let o=1;o<e.length;o++){let s=qY(e.charCodeAt(o-1)),l=qY(e.charCodeAt(o)),f=I4e(e,t,o),d=t&&C4e(e,o,i);(YY(e.charCodeAt(o-1))||YY(e.charCodeAt(o))||s!==l||f||d)&&(Jge(e,i,o)||r.push(il(i,o-i)),i=o)}return Jge(e,i,e.length)||r.push(il(i,e.length-i)),r}function YY(e){switch(e){case 33:case 34:case 35:case 37:case 38:case 39:case 40:case 41:case 42:case 44:case 45:case 46:case 47:case 58:case 59:case 63:case 64:case 91:case 92:case 93:case 95:case 123:case 125:return!0}return!1}function Jge(e,t,r){return t5(e,i=>YY(i)&&i!==95,t,r)}function C4e(e,t,r){return t!==r&&t+1<e.length&&tx(e.charCodeAt(t))&&jge(e.charCodeAt(t+1))&&t5(e,tx,r,t)}function I4e(e,t,r){let i=tx(e.charCodeAt(r-1));return tx(e.charCodeAt(r))&&(!t||!i)}function Kge(e,t,r){for(let i=e;i<t;i++)if(!r(i))return!1;return!0}function t5(e,t,r=0,i=e.length){return Kge(r,i,o=>t(e.charCodeAt(o),o))}var n5,L4e=gt({\"src/services/patternMatcher.ts\"(){\"use strict\";Fr(),n5=(e=>(e[e.exact=0]=\"exact\",e[e.prefix=1]=\"prefix\",e[e.substring=2]=\"substring\",e[e.camelCase=3]=\"camelCase\",e))(n5||{})}});function qge(e,t=!0,r=!1){let i={languageVersion:1,pragmas:void 0,checkJsDirective:void 0,referencedFiles:[],typeReferenceDirectives:[],libReferenceDirectives:[],amdDependencies:[],hasNoDefaultLib:void 0,moduleName:void 0},o=[],s,l,f,d=0,g=!1;function m(){return l=f,f=$l.scan(),f===18?d++:f===19&&d--,f}function v(){let W=$l.getTokenValue(),Y=$l.getTokenPos();return{fileName:W,pos:Y,end:Y+W.length}}function S(){s||(s=[]),s.push({ref:v(),depth:d})}function x(){o.push(v()),A()}function A(){d===0&&(g=!0)}function w(){let W=$l.getToken();return W===136?(W=m(),W===142&&(W=m(),W===10&&S()),!0):!1}function C(){if(l===24)return!1;let W=$l.getToken();if(W===100){if(W=m(),W===20){if(W=m(),W===10||W===14)return x(),!0}else{if(W===10)return x(),!0;if(W===154&&$l.lookAhead(()=>{let R=$l.scan();return R!==158&&(R===41||R===18||R===79||Xu(R))})&&(W=m()),W===79||Xu(W))if(W=m(),W===158){if(W=m(),W===10)return x(),!0}else if(W===63){if(F(!0))return!0}else if(W===27)W=m();else return!0;if(W===18){for(W=m();W!==19&&W!==1;)W=m();W===19&&(W=m(),W===158&&(W=m(),W===10&&x()))}else W===41&&(W=m(),W===128&&(W=m(),(W===79||Xu(W))&&(W=m(),W===158&&(W=m(),W===10&&x()))))}return!0}return!1}function P(){let W=$l.getToken();if(W===93){if(A(),W=m(),W===154&&$l.lookAhead(()=>{let R=$l.scan();return R===41||R===18})&&(W=m()),W===18){for(W=m();W!==19&&W!==1;)W=m();W===19&&(W=m(),W===158&&(W=m(),W===10&&x()))}else if(W===41)W=m(),W===158&&(W=m(),W===10&&x());else if(W===100&&(W=m(),W===154&&$l.lookAhead(()=>{let R=$l.scan();return R===79||Xu(R)})&&(W=m()),(W===79||Xu(W))&&(W=m(),W===63&&F(!0))))return!0;return!0}return!1}function F(W,Y=!1){let R=W?m():$l.getToken();return R===147?(R=m(),R===20&&(R=m(),(R===10||Y&&R===14)&&x()),!0):!1}function B(){let W=$l.getToken();if(W===79&&$l.getTokenValue()===\"define\"){if(W=m(),W!==20)return!0;if(W=m(),W===10||W===14)if(W=m(),W===27)W=m();else return!0;if(W!==22)return!0;for(W=m();W!==23&&W!==1;)(W===10||W===14)&&x(),W=m();return!0}return!1}function q(){for($l.setText(e),m();$l.getToken()!==1;){if($l.getToken()===15){let W=[$l.getToken()];e:for(;Fn(W);){let Y=$l.scan();switch(Y){case 1:break e;case 100:C();break;case 15:W.push(Y);break;case 18:Fn(W)&&W.push(Y);break;case 19:Fn(W)&&(Os(W)===15?$l.reScanTemplateToken(!1)===17&&W.pop():W.pop());break}}m()}w()||C()||P()||r&&(F(!1,!0)||B())||m()}$l.setText(void 0)}if(t&&q(),dJ(i,e),fJ(i,Ba),g){if(s)for(let W of s)o.push(W.ref);return{referencedFiles:i.referencedFiles,typeReferenceDirectives:i.typeReferenceDirectives,libReferenceDirectives:i.libReferenceDirectives,importedFiles:o,isLibFile:!!i.hasNoDefaultLib,ambientExternalModules:void 0}}else{let W;if(s)for(let Y of s)Y.depth===0?(W||(W=[]),W.push(Y.ref.fileName)):o.push(Y.ref);return{referencedFiles:i.referencedFiles,typeReferenceDirectives:i.typeReferenceDirectives,libReferenceDirectives:i.libReferenceDirectives,importedFiles:o,isLibFile:!!i.hasNoDefaultLib,ambientExternalModules:W}}}var k4e=gt({\"src/services/preProcess.ts\"(){\"use strict\";Fr()}});function Xge(e){let t=Dl(e.useCaseSensitiveFileNames()),r=e.getCurrentDirectory(),i=new Map,o=new Map;return{tryGetSourcePosition:f,tryGetGeneratedPosition:d,toLineColumnOffset:S,clearCache:x};function s(A){return Ts(A,r,t)}function l(A,w){let C=s(A),P=o.get(C);if(P)return P;let F;if(e.getDocumentPositionMapper)F=e.getDocumentPositionMapper(A,w);else if(e.readFile){let B=v(A);F=B&&Yge({getSourceFileLike:v,getCanonicalFileName:t,log:q=>e.log(q)},A,F_e(B.text,Sh(B)),q=>!e.fileExists||e.fileExists(q)?e.readFile(q):void 0)}return o.set(C,F||yF),F||yF}function f(A){if(!Fu(A.fileName)||!g(A.fileName))return;let C=l(A.fileName).getSourcePosition(A);return!C||C===A?void 0:f(C)||C}function d(A){if(Fu(A.fileName))return;let w=g(A.fileName);if(!w)return;let C=e.getProgram();if(C.isSourceOfProjectReferenceRedirect(w.fileName))return;let P=C.getCompilerOptions(),F=Ss(P),B=F?ld(F)+\".d.ts\":$H(A.fileName,C.getCompilerOptions(),r,C.getCommonSourceDirectory(),t);if(B===void 0)return;let q=l(B,A.fileName).getGeneratedPosition(A);return q===A?void 0:q}function g(A){let w=e.getProgram();if(!w)return;let C=s(A),P=w.getSourceFileByPath(C);return P&&P.resolvedPath===C?P:void 0}function m(A){let w=s(A),C=i.get(w);if(C!==void 0)return C||void 0;if(!e.readFile||e.fileExists&&!e.fileExists(w)){i.set(w,!1);return}let P=e.readFile(w),F=P?D4e(P):!1;return i.set(w,F),F||void 0}function v(A){return e.getSourceFileLike?e.getSourceFileLike(A):g(A)||m(A)}function S(A,w){return v(A).getLineAndCharacterOfPosition(w)}function x(){i.clear(),o.clear()}}function Yge(e,t,r,i){let o=G_e(r);if(o){let f=Qge.exec(o);if(f){if(f[1]){let d=f[1];return $ge(e,nle(xl,d),t)}o=void 0}}let s=[];o&&s.push(o),s.push(t+\".map\");let l=o&&_a(o,ni(t));for(let f of s){let d=_a(f,ni(t)),g=i(d,l);if(Ta(g))return $ge(e,g,d);if(g!==void 0)return g||void 0}}function $ge(e,t,r){let i=bK(t);if(!(!i||!i.sources||!i.file||!i.mappings)&&!(i.sourcesContent&&i.sourcesContent.some(Ta)))return H_e(e,i,r)}function D4e(e,t){return{text:e,lineMap:t,getLineAndCharacterOfPosition(r){return vw(Sh(this),r)}}}var Qge,w4e=gt({\"src/services/sourcemaps.ts\"(){\"use strict\";Fr(),Fr(),Qge=/^data:(?:application\\/json(?:;charset=[uU][tT][fF]-8);base64,([A-Za-z0-9+\\/=]+)$)?/}});function $Y(e,t,r){t.getSemanticDiagnostics(e,r);let i=[],o=t.getTypeChecker();!(e.impliedNodeFormat===1||$c(e.fileName,[\".cts\",\".cjs\"]))&&e.commonJsModuleIndicator&&(Vhe(t)||aY(t.getCompilerOptions()))&&R4e(e)&&i.push(hr(M4e(e.commonJsModuleIndicator),_.File_is_a_CommonJS_module_it_may_be_converted_to_an_ES_module));let l=Cu(e);if(i5.clear(),f(e),RT(t.getCompilerOptions()))for(let d of e.imports){let g=oR(d),m=O4e(g);if(!m)continue;let v=DA(e,d.text,H_(e,d)),S=v&&t.getSourceFile(v.resolvedFileName);S&&S.externalModuleIndicator&&S.externalModuleIndicator!==!0&&pc(S.externalModuleIndicator)&&S.externalModuleIndicator.isExportEquals&&i.push(hr(m,_.Import_may_be_converted_to_a_default_import))}return si(i,e.bindSuggestionDiagnostics),si(i,t.getSuggestionDiagnostics(e,r)),i.sort((d,g)=>d.start-g.start);function f(d){if(l)G4e(d,o)&&i.push(hr(wi(d.parent)?d.parent.name:d,_.This_constructor_function_may_be_converted_to_a_class_declaration));else{if(Bc(d)&&d.parent===e&&d.declarationList.flags&2&&d.declarationList.declarations.length===1){let g=d.declarationList.declarations[0].initializer;g&&qu(g,!0)&&i.push(hr(g,_.require_call_may_be_converted_to_an_import))}gu.parameterShouldGetTypeFromJSDoc(d)&&i.push(hr(d.name||d,_.JSDoc_types_may_be_moved_to_TypeScript_types))}e$(d)&&N4e(d,o,i),d.forEachChild(f)}}function R4e(e){return e.statements.some(t=>{switch(t.kind){case 240:return t.declarationList.declarations.some(r=>!!r.initializer&&qu(Zge(r.initializer),!0));case 241:{let{expression:r}=t;if(!ar(r))return qu(r,!0);let i=ic(r);return i===1||i===2}default:return!1}})}function Zge(e){return br(e)?Zge(e.expression):e}function O4e(e){switch(e.kind){case 269:let{importClause:t,moduleSpecifier:r}=e;return t&&!t.name&&t.namedBindings&&t.namedBindings.kind===271&&yo(r)?t.namedBindings.name:void 0;case 268:return e.name;default:return}}function N4e(e,t,r){P4e(e,t)&&!i5.has(rye(e))&&r.push(hr(!e.name&&wi(e.parent)&&Re(e.parent.name)?e.parent.name:e,_.This_may_be_converted_to_an_async_function))}function P4e(e,t){return!XA(e)&&e.body&&Va(e.body)&&F4e(e.body,t)&&QY(e,t)}function QY(e,t){let r=t.getSignatureFromDeclaration(e),i=r?t.getReturnTypeOfSignature(r):void 0;return!!i&&!!t.getPromisedTypeOfPromise(i)}function M4e(e){return ar(e)?e.left:e}function F4e(e,t){return!!bT(e,r=>r5(r,t))}function r5(e,t){return V_(e)&&!!e.expression&&ZY(e.expression,t)}function ZY(e,t){if(!eye(e)||!tye(e)||!e.arguments.every(i=>nye(i,t)))return!1;let r=e.expression.expression;for(;eye(r)||br(r);)if(Pa(r)){if(!tye(r)||!r.arguments.every(i=>nye(i,t)))return!1;r=r.expression.expression}else r=r.expression;return!0}function eye(e){return Pa(e)&&(DN(e,\"then\")||DN(e,\"catch\")||DN(e,\"finally\"))}function tye(e){let t=e.expression.name.text,r=t===\"then\"?2:t===\"catch\"||t===\"finally\"?1:0;return e.arguments.length>r?!1:e.arguments.length<r?!0:r===1||vt(e.arguments,i=>i.kind===104||Re(i)&&i.text===\"undefined\")}function nye(e,t){switch(e.kind){case 259:case 215:if(pl(e)&1)return!1;case 216:i5.set(rye(e),!0);case 104:return!0;case 79:case 208:{let i=t.getSymbolAtLocation(e);return i?t.isUndefinedSymbol(i)||vt(wd(i,t).declarations,o=>Ia(o)||Jy(o)&&!!o.initializer&&Ia(o.initializer)):!1}default:return!1}}function rye(e){return`${e.pos.toString()}:${e.end.toString()}`}function G4e(e,t){var r,i,o,s;if(ms(e)){if(wi(e.parent)&&((r=e.symbol.members)==null?void 0:r.size))return!0;let l=t.getSymbolOfExpando(e,!1);return!!(l&&(((i=l.exports)==null?void 0:i.size)||((o=l.members)==null?void 0:o.size)))}return Jc(e)?!!((s=e.symbol.members)!=null&&s.size):!1}function e$(e){switch(e.kind){case 259:case 171:case 215:case 216:return!0;default:return!1}}var i5,B4e=gt({\"src/services/suggestionDiagnostics.ts\"(){\"use strict\";Fr(),i5=new Map}});function iye(e,t){let r=[],i=t.compilerOptions?t$(t.compilerOptions,r):{},o=d5();for(let S in o)fs(o,S)&&i[S]===void 0&&(i[S]=o[S]);for(let S of BJ)i.verbatimModuleSyntax&&aye.has(S.name)||(i[S.name]=S.transpileOptionValue);i.suppressOutputPathCheck=!0,i.allowNonTsExtensions=!0;let s=db(i),l={getSourceFile:S=>S===So(f)?d:void 0,writeFile:(S,x)=>{Gc(S,\".map\")?(L.assertEqual(m,void 0,\"Unexpected multiple source map outputs, file:\",S),m=x):(L.assertEqual(g,void 0,\"Unexpected multiple outputs, file:\",S),g=x)},getDefaultLibFileName:()=>\"lib.d.ts\",useCaseSensitiveFileNames:()=>!1,getCanonicalFileName:S=>S,getCurrentDirectory:()=>\"\",getNewLine:()=>s,fileExists:S=>S===f,readFile:()=>\"\",directoryExists:()=>!0,getDirectories:()=>[]},f=t.fileName||(t.compilerOptions&&t.compilerOptions.jsx?\"module.tsx\":\"module.ts\"),d=wO(f,e,{languageVersion:Do(i),impliedNodeFormat:NF(Ts(f,\"\",l.getCanonicalFileName),void 0,l,i),setExternalModuleIndicator:NR(i)});t.moduleName&&(d.moduleName=t.moduleName),t.renamedDependencies&&(d.renamedDependencies=new Map(Object.entries(t.renamedDependencies)));let g,m,v=PF([f],i,l);return t.reportDiagnostics&&(si(r,v.getSyntacticDiagnostics(d)),si(r,v.getOptionsDiagnostics())),v.emit(void 0,void 0,void 0,void 0,t.transformers),g===void 0?L.fail(\"Output generation failed\"):{outputText:g,diagnostics:r,sourceMapText:m}}function U4e(e,t,r,i,o){let s=iye(e,{compilerOptions:t,fileName:r,reportDiagnostics:!!i,moduleName:o});return si(i,s.diagnostics),s.outputText}function t$(e,t){n$=n$||Pr(Fh,r=>typeof r.type==\"object\"&&!Ld(r.type,i=>typeof i!=\"number\")),e=Mhe(e);for(let r of n$){if(!fs(e,r.name))continue;let i=e[r.name];Ta(i)?e[r.name]=O3(r,i,t):Ld(r.type,o=>o===i)||t.push(pJ(r))}return e}var aye,n$,V4e=gt({\"src/services/transpile.ts\"(){\"use strict\";Fr(),aye=new Set([\"isolatedModules\",\"preserveValueImports\",\"importsNotUsedAsValues\"])}});function oye(e,t,r,i,o,s){let l=Fge(i);if(!l)return Je;let f=[];for(let d of e)r.throwIfCancellationRequested(),!(s&&d.isDeclarationFile)&&d.getNamedDeclarations().forEach((g,m)=>{j4e(l,m,g,t,d.fileName,f)});return f.sort(J4e),(o===void 0?f:f.slice(0,o)).map(K4e)}function j4e(e,t,r,i,o,s){let l=e.getMatchForLastSegmentOfPattern(t);if(!!l){for(let f of r)if(!!H4e(f,i))if(e.patternContainsDots){let d=e.getFullMatch(z4e(f),t);d&&s.push({name:t,fileName:o,matchKind:d.kind,isCaseSensitive:d.isCaseSensitive,declaration:f})}else s.push({name:t,fileName:o,matchKind:l.kind,isCaseSensitive:l.isCaseSensitive,declaration:f})}}function H4e(e,t){switch(e.kind){case 270:case 273:case 268:let r=t.getSymbolAtLocation(e.name),i=t.getAliasedSymbol(r);return r.escapedName!==i.escapedName;default:return!0}}function W4e(e,t){let r=sa(e);return!!r&&(sye(r,t)||r.kind===164&&r$(r.expression,t))}function r$(e,t){return sye(e,t)||br(e)&&(t.push(e.name.text),!0)&&r$(e.expression,t)}function sye(e,t){return s_(e)&&(t.push(c_(e)),!0)}function z4e(e){let t=[],r=sa(e);if(r&&r.kind===164&&!r$(r.expression,t))return Je;t.shift();let i=t1(e);for(;i;){if(!W4e(i,t))return Je;i=t1(i)}return t.reverse()}function J4e(e,t){return Es(e.matchKind,t.matchKind)||YD(e.name,t.name)}function K4e(e){let t=e.declaration,r=t1(t),i=r&&sa(r);return{name:e.name,kind:aE(t),kindModifiers:ik(t),matchKind:n5[e.matchKind],isCaseSensitive:e.isCaseSensitive,fileName:e.fileName,textSpan:Du(t),containerName:i?i.text:\"\",containerKind:i?aE(r):\"\"}}var q4e=gt({\"src/services/navigateTo.ts\"(){\"use strict\";Fr()}}),cye={};Mo(cye,{getNavigateToItems:()=>oye});var lye=gt({\"src/services/_namespaces/ts.NavigateTo.ts\"(){\"use strict\";q4e()}});function uye(e,t){c5=t,_k=e;try{return on(Z4e(pye(e)),e3e)}finally{fye()}}function dye(e,t){c5=t,_k=e;try{return Sye(pye(e))}finally{fye()}}function fye(){_k=void 0,c5=void 0,pk=[],Uh=void 0,l5=[]}function ZN(e){return Y2(e.getText(_k))}function a5(e){return e.node.kind}function _ye(e,t){e.children?e.children.push(t):e.children=[t]}function pye(e){L.assert(!pk.length);let t={node:e,name:void 0,additionalNodes:void 0,parent:void 0,children:void 0,indent:0};Uh=t;for(let r of e.statements)o1(r);return dv(),L.assert(!Uh&&!pk.length),t}function Eb(e,t){_ye(Uh,i$(e,t))}function i$(e,t){return{node:e,name:t||(Kl(e)||ot(e)?sa(e):void 0),additionalNodes:void 0,parent:Uh,children:void 0,indent:Uh.indent+1}}function mye(e){nx||(nx=new Map),nx.set(e,!0)}function hye(e){for(let t=0;t<e;t++)dv()}function gye(e,t){let r=[];for(;!s_(t);){let i=tR(t),o=wh(t);t=t.expression,!(o===\"prototype\"||pi(i))&&r.push(i)}r.push(t);for(let i=r.length-1;i>0;i--){let o=r[i];Tb(e,o)}return[r.length-1,r[0]]}function Tb(e,t){let r=i$(e,t);_ye(Uh,r),pk.push(Uh),f$.push(nx),nx=void 0,Uh=r}function dv(){Uh.children&&(o5(Uh.children,Uh),s$(Uh.children)),Uh=pk.pop(),nx=f$.pop()}function fv(e,t,r){Tb(e,r),o1(t),dv()}function yye(e){e.initializer&&n3e(e.initializer)?(Tb(e),pa(e.initializer,o1),dv()):fv(e,e.initializer)}function a$(e){return!Xy(e)||e.kind!==223&&br(e.name.expression)&&Re(e.name.expression.expression)&&vr(e.name.expression.expression)===\"Symbol\"}function o1(e){if(c5.throwIfCancellationRequested(),!(!e||eS(e)))switch(e.kind){case 173:let t=e;fv(t,t.body);for(let l of t.parameters)Ad(l,t)&&Eb(l);break;case 171:case 174:case 175:case 170:a$(e)&&fv(e,e.body);break;case 169:a$(e)&&yye(e);break;case 168:a$(e)&&Eb(e);break;case 270:let r=e;r.name&&Eb(r.name);let{namedBindings:i}=r;if(i)if(i.kind===271)Eb(i);else for(let l of i.elements)Eb(l);break;case 300:fv(e,e.name);break;case 301:let{expression:o}=e;Re(o)?Eb(e,o):Eb(e);break;case 205:case 299:case 257:{let l=e;La(l.name)?o1(l.name):yye(l);break}case 259:let s=e.name;s&&Re(s)&&mye(s.text),fv(e,e.body);break;case 216:case 215:fv(e,e.body);break;case 263:Tb(e);for(let l of e.members)t3e(l)||Eb(l);dv();break;case 260:case 228:case 261:Tb(e);for(let l of e.members)o1(l);dv();break;case 264:fv(e,Aye(e).body);break;case 274:{let l=e.expression,f=rs(l)||Pa(l)?l:xs(l)||ms(l)?l.body:void 0;f?(Tb(e),o1(f),dv()):Eb(e);break}case 278:case 268:case 178:case 176:case 177:case 262:Eb(e);break;case 210:case 223:{let l=ic(e);switch(l){case 1:case 2:fv(e,e.right);return;case 6:case 3:{let f=e,d=f.left,g=l===3?d.expression:d,m=0,v;Re(g.expression)?(mye(g.expression.text),v=g.expression):[m,v]=gye(f,g.expression),l===6?rs(f.right)&&f.right.properties.length>0&&(Tb(f,v),pa(f.right,o1),dv()):ms(f.right)||xs(f.right)?fv(e,f.right,v):(Tb(f,v),fv(e,f.right,d.name),dv()),hye(m);return}case 7:case 9:{let f=e,d=l===7?f.arguments[0]:f.arguments[0].expression,g=f.arguments[1],[m,v]=gye(e,d);Tb(e,v),Tb(e,it(D.createIdentifier(g.text),g)),o1(e.arguments[2]),dv(),dv(),hye(m);return}case 5:{let f=e,d=f.left,g=d.expression;if(Re(g)&&wh(d)!==\"prototype\"&&nx&&nx.has(g.text)){ms(f.right)||xs(f.right)?fv(e,f.right,g):xT(d)&&(Tb(f,g),fv(f.left,f.right,tR(d)),dv());return}break}case 4:case 0:case 8:break;default:L.assertNever(l)}}default:Jd(e)&&mn(e.jsDoc,l=>{mn(l.tags,f=>{Mf(f)&&Eb(f)})}),pa(e,o1)}}function o5(e,t){let r=new Map;wU(e,(i,o)=>{let s=i.name||sa(i.node),l=s&&ZN(s);if(!l)return!0;let f=r.get(l);if(!f)return r.set(l,i),!0;if(f instanceof Array){for(let d of f)if(vye(d,i,o,t))return!1;return f.push(i),!0}else{let d=f;return vye(d,i,o,t)?!1:(r.set(l,[d,i]),!0)}})}function X4e(e,t,r,i){function o(f){return ms(f)||Jc(f)||wi(f)}let s=ar(t.node)||Pa(t.node)?ic(t.node):0,l=ar(e.node)||Pa(e.node)?ic(e.node):0;if($2[s]&&$2[l]||o(e.node)&&$2[s]||o(t.node)&&$2[l]||sl(e.node)&&o$(e.node)&&$2[s]||sl(t.node)&&$2[l]||sl(e.node)&&o$(e.node)&&o(t.node)||sl(t.node)&&o(e.node)&&o$(e.node)){let f=e.additionalNodes&&Os(e.additionalNodes)||e.node;if(!sl(e.node)&&!sl(t.node)||o(e.node)||o(t.node)){let g=o(e.node)?e.node:o(t.node)?t.node:void 0;if(g!==void 0){let m=it(D.createConstructorDeclaration(void 0,[],void 0),g),v=i$(m);v.indent=e.indent+1,v.children=e.node===g?e.children:t.children,e.children=e.node===g?Qi([v],t.children||[t]):Qi(e.children||[{...e}],[v])}else(e.children||t.children)&&(e.children=Qi(e.children||[{...e}],t.children||[t]),e.children&&(o5(e.children,e),s$(e.children)));f=e.node=it(D.createClassDeclaration(void 0,e.name||D.createIdentifier(\"__class__\"),void 0,void 0,[]),e.node)}else e.children=Qi(e.children,t.children),e.children&&o5(e.children,e);let d=t.node;return i.children[r-1].node.end===f.end?it(f,{pos:f.pos,end:d.end}):(e.additionalNodes||(e.additionalNodes=[]),e.additionalNodes.push(it(D.createClassDeclaration(void 0,e.name||D.createIdentifier(\"__class__\"),void 0,void 0,[]),t.node))),!0}return s!==0}function vye(e,t,r,i){return X4e(e,t,r,i)?!0:Y4e(e.node,t.node,i)?($4e(e,t),!0):!1}function Y4e(e,t,r){if(e.kind!==t.kind||e.parent!==t.parent&&!(bye(e,r)&&bye(t,r)))return!1;switch(e.kind){case 169:case 171:case 174:case 175:return Ca(e)===Ca(t);case 264:return Eye(e,t)&&u$(e)===u$(t);default:return!0}}function o$(e){return!!(e.flags&8)}function bye(e,t){let r=Tp(e.parent)?e.parent.parent:e.parent;return r===t.node||ya(t.additionalNodes,r)}function Eye(e,t){return!e.body||!t.body?e.body===t.body:e.body.kind===t.body.kind&&(e.body.kind!==264||Eye(e.body,t.body))}function $4e(e,t){e.additionalNodes=e.additionalNodes||[],e.additionalNodes.push(t.node),t.additionalNodes&&e.additionalNodes.push(...t.additionalNodes),e.children=Qi(e.children,t.children),e.children&&(o5(e.children,e),s$(e.children))}function s$(e){e.sort(Q4e)}function Q4e(e,t){return YD(Tye(e.node),Tye(t.node))||Es(a5(e),a5(t))}function Tye(e){if(e.kind===264)return xye(e);let t=sa(e);if(t&&Ys(t)){let r=M0(t);return r&&Gi(r)}switch(e.kind){case 215:case 216:case 228:return Iye(e);default:return}}function c$(e,t){if(e.kind===264)return Y2(xye(e));if(t){let r=Re(t)?t.text:Vs(t)?`[${ZN(t.argumentExpression)}]`:ZN(t);if(r.length>0)return Y2(r)}switch(e.kind){case 308:let r=e;return Lc(r)?`\"${pS(Hl(ld(So(r.fileName))))}\"`:\"<global>\";case 274:return pc(e)&&e.isExportEquals?\"export=\":\"default\";case 216:case 259:case 215:case 260:case 228:return Yy(e)&1024?\"default\":Iye(e);case 173:return\"constructor\";case 177:return\"new()\";case 176:return\"()\";case 178:return\"[]\";default:return\"<unknown>\"}}function Z4e(e){let t=[];function r(o){if(i(o)&&(t.push(o),o.children))for(let s of o.children)r(s)}return r(e),t;function i(o){if(o.children)return!0;switch(a5(o)){case 260:case 228:case 263:case 261:case 264:case 308:case 262:case 349:case 341:return!0;case 216:case 259:case 215:return s(o);default:return!1}function s(l){if(!l.node.body)return!1;switch(a5(l.parent)){case 265:case 308:case 171:case 173:return!0;default:return!1}}}}function Sye(e){return{text:c$(e.node,e.name),kind:aE(e.node),kindModifiers:Cye(e.node),spans:l$(e),nameSpan:e.name&&d$(e.name),childItems:on(e.children,Sye)}}function e3e(e){return{text:c$(e.node,e.name),kind:aE(e.node),kindModifiers:Cye(e.node),spans:l$(e),childItems:on(e.children,t)||l5,indent:e.indent,bolded:!1,grayed:!1};function t(r){return{text:c$(r.node,r.name),kind:aE(r.node),kindModifiers:ik(r.node),spans:l$(r),childItems:l5,indent:0,bolded:!1,grayed:!1}}}function l$(e){let t=[d$(e.node)];if(e.additionalNodes)for(let r of e.additionalNodes)t.push(d$(r));return t}function xye(e){return lu(e)?Qc(e.name):u$(e)}function u$(e){let t=[c_(e.name)];for(;e.body&&e.body.kind===264;)e=e.body,t.push(c_(e.name));return t.join(\".\")}function Aye(e){return e.body&&Tc(e.body)?Aye(e.body):e}function t3e(e){return!e.name||e.name.kind===164}function d$(e){return e.kind===308?lv(e):Du(e,_k)}function Cye(e){return e.parent&&e.parent.kind===257&&(e=e.parent),ik(e)}function Iye(e){let{parent:t}=e;if(e.name&&Gw(e.name)>0)return Y2(os(e.name));if(wi(t))return Y2(os(t.name));if(ar(t)&&t.operatorToken.kind===63)return ZN(t.left).replace(kye,\"\");if(yl(t))return ZN(t.name);if(Yy(e)&1024)return\"default\";if(Yr(e))return\"<class>\";if(Pa(t)){let r=Lye(t.expression);if(r!==void 0){if(r=Y2(r),r.length>s5)return`${r} callback`;let i=Y2(Zi(t.arguments,o=>es(o)?o.getText(_k):void 0).join(\", \"));return`${r}(${i}) callback`}}return\"<function>\"}function Lye(e){if(Re(e))return e.text;if(br(e)){let t=Lye(e.expression),r=e.name.text;return t===void 0?r:`${t}.${r}`}else return}function n3e(e){switch(e.kind){case 216:case 215:case 228:return!0;default:return!1}}function Y2(e){return e=e.length>s5?e.substring(0,s5)+\"...\":e,e.replace(/\\\\?(\\r?\\n|\\r|\\u2028|\\u2029)/g,\"\")}var kye,s5,c5,_k,pk,Uh,f$,nx,l5,$2,r3e=gt({\"src/services/navigationBar.ts\"(){\"use strict\";Fr(),kye=/\\s+/g,s5=150,pk=[],f$=[],l5=[],$2={[5]:!0,[3]:!0,[7]:!0,[9]:!0,[0]:!1,[1]:!1,[2]:!1,[8]:!1,[6]:!0,[4]:!1}}}),Dye={};Mo(Dye,{getNavigationBarItems:()=>uye,getNavigationTree:()=>dye});var wye=gt({\"src/services/_namespaces/ts.NavigationBar.ts\"(){\"use strict\";r3e()}});function Rye(e,t,r,i){let o=Lw(e)?new p5(e,t,r):e===79?new h5(79,t,r):e===80?new g5(80,t,r):new h$(e,t,r);return o.parent=i,o.flags=i.flags&50720768,o}function i3e(e,t){if(!Lw(e.kind))return Je;let r=[];if(qj(e))return e.forEachChild(l=>{r.push(l)}),r;$l.setText((t||e.getSourceFile()).text);let i=e.pos,o=l=>{eP(r,i,l.pos,e),r.push(l),i=l.end},s=l=>{eP(r,i,l.pos,e),r.push(a3e(l,e)),i=l.end};return mn(e.jsDoc,o),i=e.pos,e.forEachChild(o,s),eP(r,i,e.end,e),$l.setText(void 0),r}function eP(e,t,r,i){for($l.setTextPos(t);t<r;){let o=$l.scan(),s=$l.getTextPos();if(s<=r){if(o===79){if(jle(i))continue;L.fail(`Did not expect ${L.formatSyntaxKind(i.kind)} to have an Identifier in its trivia`)}e.push(Rye(o,t,s,i))}if(t=s,o===1)break}}function a3e(e,t){let r=Rye(354,e.pos,e.end,t);r._children=[];let i=e.pos;for(let o of e)eP(r._children,i,o.pos,t),r._children.push(o),i=o.end;return eP(r._children,i,e.end,t),r}function Oye(e){return A0(e).some(t=>t.tagName.text===\"inheritDoc\"||t.tagName.text===\"inheritdoc\")}function u5(e,t){if(!e)return Je;let r=xb.getJsDocTagsFromDeclarations(e,t);if(t&&(r.length===0||e.some(Oye))){let i=new Set;for(let o of e){let s=Nye(t,o,l=>{var f;if(!i.has(l))return i.add(l),o.kind===174||o.kind===175?l.getContextualJsDocTags(o,t):((f=l.declarations)==null?void 0:f.length)===1?l.getJsDocTags():void 0});s&&(r=[...s,...r])}}return r}function tP(e,t){if(!e)return Je;let r=xb.getJsDocCommentsFromDeclarations(e,t);if(t&&(r.length===0||e.some(Oye))){let i=new Set;for(let o of e){let s=Nye(t,o,l=>{if(!i.has(l))return i.add(l),o.kind===174||o.kind===175?l.getContextualDocumentationComment(o,t):l.getDocumentationComment(t)});s&&(r=r.length===0?s.slice():s.concat(q2(),r))}}return r}function Nye(e,t,r){var i;let o=((i=t.parent)==null?void 0:i.kind)===173?t.parent.parent:t.parent;if(!o)return;let s=zc(t);return ks(PI(o),l=>{let f=e.getTypeAtLocation(l),d=s&&f.symbol?e.getTypeOfSymbol(f.symbol):f,g=e.getPropertyOfType(d,t.symbol.name);return g?r(g):void 0})}function o3e(){return{getNodeConstructor:()=>p5,getTokenConstructor:()=>h$,getIdentifierConstructor:()=>h5,getPrivateIdentifierConstructor:()=>g5,getSourceFileConstructor:()=>Hye,getSymbolConstructor:()=>Uye,getTypeConstructor:()=>Vye,getSignatureConstructor:()=>jye,getSourceMapSourceConstructor:()=>Wye}}function nP(e){let t=!0;for(let i in e)if(fs(e,i)&&!Pye(i)){t=!1;break}if(t)return e;let r={};for(let i in e)if(fs(e,i)){let o=Pye(i)?i:i.charAt(0).toLowerCase()+i.substr(1);r[o]=e[i]}return r}function Pye(e){return!e.length||e.charAt(0)===e.charAt(0).toLowerCase()}function Mye(e){return e?on(e,t=>t.text).join(\"\"):\"\"}function d5(){return{target:1,jsx:1}}function Fye(){return gu.getSupportedErrorCodes()}function Gye(e,t,r){e.version=r,e.scriptSnapshot=t}function f5(e,t,r,i,o,s){let l=wO(e,E7(t),r,o,s);return Gye(l,t,i),l}function _$(e,t,r,i,o){if(i&&r!==e.version){let l,f=i.span.start!==0?e.text.substr(0,i.span.start):\"\",d=wl(i.span)!==e.text.length?e.text.substr(wl(i.span)):\"\";if(i.newLength===0)l=f&&d?f+d:f||d;else{let m=t.getText(i.span.start,i.span.start+i.newLength);l=f&&d?f+m+d:f?f+m:m+d}let g=uJ(e,l,i,o);return Gye(g,t,r),g.nameTable=void 0,e!==g&&e.scriptSnapshot&&(e.scriptSnapshot.dispose&&e.scriptSnapshot.dispose(),e.scriptSnapshot=void 0),g}let s={languageVersion:e.languageVersion,impliedNodeFormat:e.impliedNodeFormat,setExternalModuleIndicator:e.setExternalModuleIndicator};return f5(e.fileName,t,s,r,!0,e.scriptKind)}function Bye(e,t=VY(e.useCaseSensitiveFileNames&&e.useCaseSensitiveFileNames(),e.getCurrentDirectory()),r){var i;let o;r===void 0?o=0:typeof r==\"boolean\"?o=r?2:0:o=r;let s=new zye(e),l,f,d=0,g=e.getCancellationToken?new Kye(e.getCancellationToken()):Jye,m=e.getCurrentDirectory();mle((i=e.getLocalizedDiagnosticMessages)==null?void 0:i.bind(e));function v(Ke){e.log&&e.log(Ke)}let S=AR(e),x=Dl(S),A=Xge({useCaseSensitiveFileNames:()=>S,getCurrentDirectory:()=>m,getProgram:P,fileExists:ho(e,e.fileExists),readFile:ho(e,e.readFile),getDocumentPositionMapper:ho(e,e.getDocumentPositionMapper),getSourceFileLike:ho(e,e.getSourceFileLike),log:v});function w(Ke){let oe=l.getSourceFile(Ke);if(!oe){let pe=new Error(`Could not find source file: '${Ke}'.`);throw pe.ProgramFiles=l.getSourceFiles().map(z=>z.fileName),pe}return oe}function C(){var Ke,oe,pe;if(L.assert(o!==2),e.getProjectVersion){let Qr=e.getProjectVersion();if(Qr){if(f===Qr&&!((Ke=e.hasChangedAutomaticTypeDirectiveNames)!=null&&Ke.call(e)))return;f=Qr}}let z=e.getTypeRootsVersion?e.getTypeRootsVersion():0;d!==z&&(v(\"TypeRoots version has changed; provide new program\"),l=void 0,d=z);let Te=e.getScriptFileNames().slice(),j=e.getCompilationSettings()||d5(),yt=e.hasInvalidatedResolutions||m0,lt=ho(e,e.hasChangedAutomaticTypeDirectiveNames),Qe=(oe=e.getProjectReferences)==null?void 0:oe.call(e),Vt,Hn={getSourceFile:Nr,getSourceFileByPath:Fo,getCancellationToken:()=>g,getCanonicalFileName:x,useCaseSensitiveFileNames:()=>S,getNewLine:()=>db(j),getDefaultLibFileName:Qr=>e.getDefaultLibFileName(Qr),writeFile:Ba,getCurrentDirectory:()=>m,fileExists:Qr=>e.fileExists(Qr),readFile:Qr=>e.readFile&&e.readFile(Qr),getSymlinkCache:ho(e,e.getSymlinkCache),realpath:ho(e,e.realpath),directoryExists:Qr=>gp(Qr,e),getDirectories:Qr=>e.getDirectories?e.getDirectories(Qr):[],readDirectory:(Qr,Wi,yn,Ki,kc)=>(L.checkDefined(e.readDirectory,\"'LanguageServiceHost.readDirectory' must be implemented to correctly process 'projectReferences'\"),e.readDirectory(Qr,Wi,yn,Ki,kc)),onReleaseOldSourceFile:xi,onReleaseParsedCommandLine:Hi,hasInvalidatedResolutions:yt,hasChangedAutomaticTypeDirectiveNames:lt,trace:ho(e,e.trace),resolveModuleNames:ho(e,e.resolveModuleNames),getModuleResolutionCache:ho(e,e.getModuleResolutionCache),createHash:ho(e,e.createHash),resolveTypeReferenceDirectives:ho(e,e.resolveTypeReferenceDirectives),resolveModuleNameLiterals:ho(e,e.resolveModuleNameLiterals),resolveTypeReferenceDirectiveReferences:ho(e,e.resolveTypeReferenceDirectiveReferences),useSourceOfProjectReferenceRedirect:ho(e,e.useSourceOfProjectReferenceRedirect),getParsedCommandLine:Za},jr=Hn.getSourceFile,{getSourceFileWithCache:ei}=mN(Hn,Qr=>Ts(Qr,m,x),(...Qr)=>jr.call(Hn,...Qr));Hn.getSourceFile=ei,(pe=e.setCompilerHost)==null||pe.call(e,Hn);let Kr={useCaseSensitiveFileNames:S,fileExists:Qr=>Hn.fileExists(Qr),readFile:Qr=>Hn.readFile(Qr),readDirectory:(...Qr)=>Hn.readDirectory(...Qr),trace:Hn.trace,getCurrentDirectory:Hn.getCurrentDirectory,onUnRecoverableConfigFileDiagnostic:Ba},Si=t.getKeyForCompilationSettings(j);if(lq(l,Te,j,(Qr,Wi)=>e.getScriptVersion(Wi),Qr=>Hn.fileExists(Qr),yt,lt,Za,Qe))return;l=PF({rootNames:Te,options:j,host:Hn,oldProgram:l,projectReferences:Qe}),Hn=void 0,Vt=void 0,A.clearCache(),l.getTypeChecker();return;function Za(Qr){let Wi=Ts(Qr,m,x),yn=Vt?.get(Wi);if(yn!==void 0)return yn||void 0;let Ki=e.getParsedCommandLine?e.getParsedCommandLine(Qr):Fa(Qr);return(Vt||(Vt=new Map)).set(Wi,Ki||!1),Ki}function Fa(Qr){let Wi=Nr(Qr,100);if(!!Wi)return Wi.path=Ts(Qr,m,x),Wi.resolvedPath=Wi.path,Wi.originalFileName=Wi.fileName,FO(Wi,Kr,_a(ni(Qr),m),void 0,_a(Qr,m))}function Hi(Qr,Wi,yn){var Ki;e.getParsedCommandLine?(Ki=e.onReleaseParsedCommandLine)==null||Ki.call(e,Qr,Wi,yn):Wi&&xi(Wi.sourceFile,yn)}function xi(Qr,Wi){let yn=t.getKeyForCompilationSettings(Wi);t.releaseDocumentWithKey(Qr.resolvedPath,yn,Qr.scriptKind,Qr.impliedNodeFormat)}function Nr(Qr,Wi,yn,Ki){return Fo(Qr,Ts(Qr,m,x),Wi,yn,Ki)}function Fo(Qr,Wi,yn,Ki,kc){L.assert(Hn,\"getOrCreateSourceFileByPath called after typical CompilerHost lifetime, check the callstack something with a reference to an old host.\");let Ps=e.getScriptSnapshot(Qr);if(!Ps)return;let mc=mY(Qr,e),xc=e.getScriptVersion(Qr);if(!kc){let hc=l&&l.getSourceFileByPath(Wi);if(hc){if(mc===hc.scriptKind)return t.updateDocumentWithKey(Qr,Wi,e,Si,Ps,xc,mc,yn);t.releaseDocumentWithKey(hc.resolvedPath,t.getKeyForCompilationSettings(l.getCompilerOptions()),hc.scriptKind,hc.impliedNodeFormat)}}return t.acquireDocumentWithKey(Qr,Wi,e,Si,Ps,xc,mc,yn)}}function P(){if(o===2){L.assert(l===void 0);return}return C(),l}function F(){var Ke;return(Ke=e.getPackageJsonAutoImportProvider)==null?void 0:Ke.call(e)}function B(Ke,oe){let pe=l.getTypeChecker(),z=Te();if(!z)return!1;for(let yt of Ke)for(let lt of yt.references){let Qe=j(lt);if(L.assertIsDefined(Qe),oe.has(lt)||js.isDeclarationOfSymbol(Qe,z)){oe.add(lt),lt.isDefinition=!0;let Vt=uY(lt,A,ho(e,e.fileExists));Vt&&oe.add(Vt)}else lt.isDefinition=!1}return!0;function Te(){for(let yt of Ke)for(let lt of yt.references){if(oe.has(lt)){let Vt=j(lt);return L.assertIsDefined(Vt),pe.getSymbolAtLocation(Vt)}let Qe=uY(lt,A,ho(e,e.fileExists));if(Qe&&oe.has(Qe)){let Vt=j(Qe);if(Vt)return pe.getSymbolAtLocation(Vt)}}}function j(yt){let lt=l.getSourceFile(yt.fileName);if(!lt)return;let Qe=Zd(lt,yt.textSpan.start);return js.Core.getAdjustedNode(Qe,{use:js.FindReferencesUse.References})}}function q(){l=void 0}function W(){if(l){let Ke=t.getKeyForCompilationSettings(l.getCompilerOptions());mn(l.getSourceFiles(),oe=>t.releaseDocumentWithKey(oe.resolvedPath,Ke,oe.scriptKind,oe.impliedNodeFormat)),l=void 0}e=void 0}function Y(Ke){return C(),l.getSyntacticDiagnostics(w(Ke),g).slice()}function R(Ke){C();let oe=w(Ke),pe=l.getSemanticDiagnostics(oe,g);if(!f_(l.getCompilerOptions()))return pe.slice();let z=l.getDeclarationDiagnostics(oe,g);return[...pe,...z]}function ie(Ke){return C(),$Y(w(Ke),l,g)}function Q(){return C(),[...l.getOptionsDiagnostics(g),...l.getGlobalDiagnostics(g)]}function fe(Ke,oe,pe=Cp,z){let Te={...pe,includeCompletionsForModuleExports:pe.includeCompletionsForModuleExports||pe.includeExternalModuleExports,includeCompletionsWithInsertText:pe.includeCompletionsWithInsertText||pe.includeInsertTextCompletions};return C(),ux.getCompletionsAtPosition(e,l,v,w(Ke),oe,Te,pe.triggerCharacter,pe.triggerKind,g,z&&tl.getFormatContext(z,e),pe.includeSymbol)}function Z(Ke,oe,pe,z,Te,j=Cp,yt){return C(),ux.getCompletionEntryDetails(l,v,w(Ke),oe,{name:pe,source:Te,data:yt},e,z&&tl.getFormatContext(z,e),j,g)}function U(Ke,oe,pe,z,Te=Cp){return C(),ux.getCompletionEntrySymbol(l,v,w(Ke),oe,{name:pe,source:z},e,Te)}function re(Ke,oe){C();let pe=w(Ke),z=Zd(pe,oe);if(z===pe)return;let Te=l.getTypeChecker(),j=le(z),yt=u3e(j,Te);if(!yt||Te.isUnknownSymbol(yt)){let jr=_e(pe,j,oe)?Te.getTypeAtLocation(j):void 0;return jr&&{kind:\"\",kindModifiers:\"\",textSpan:Du(j,pe),displayParts:Te.runWithCancellationToken(g,ei=>JN(ei,jr,t1(j))),documentation:jr.symbol?jr.symbol.getDocumentationComment(Te):void 0,tags:jr.symbol?jr.symbol.getJsDocTags(Te):void 0}}let{symbolKind:lt,displayParts:Qe,documentation:Vt,tags:Hn}=Te.runWithCancellationToken(g,jr=>$g.getSymbolDisplayPartsDocumentationAndSymbolKind(jr,yt,pe,t1(j),j));return{kind:lt,kindModifiers:$g.getSymbolModifiers(Te,yt),textSpan:Du(j,pe),displayParts:Qe,documentation:Vt,tags:Hn}}function le(Ke){return z0(Ke.parent)&&Ke.pos===Ke.parent.pos?Ke.parent.expression:EL(Ke.parent)&&Ke.pos===Ke.parent.pos||PA(Ke.parent)&&Ke.parent.name===Ke?Ke.parent:Ke}function _e(Ke,oe,pe){switch(oe.kind){case 79:return!FX(oe)&&!GX(oe)&&!Ch(oe.parent);case 208:case 163:return!Kg(Ke,pe);case 108:case 194:case 106:case 199:return!0;case 233:return PA(oe);default:return!1}}function ge(Ke,oe,pe,z){return C(),Ak.getDefinitionAtPosition(l,w(Ke),oe,pe,z)}function X(Ke,oe){return C(),Ak.getDefinitionAndBoundSpan(l,w(Ke),oe)}function Ve(Ke,oe){return C(),Ak.getTypeDefinitionAtPosition(l.getTypeChecker(),w(Ke),oe)}function we(Ke,oe){return C(),js.getImplementationsAtPosition(l,g,l.getSourceFiles(),w(Ke),oe)}function ke(Ke,oe){return Uo(Pe(Ke,oe,[Ke]),pe=>pe.highlightSpans.map(z=>({fileName:pe.fileName,textSpan:z.textSpan,isWriteAccess:z.kind===\"writtenReference\",...z.isInString&&{isInString:!0},...z.contextSpan&&{contextSpan:z.contextSpan}})))}function Pe(Ke,oe,pe){let z=So(Ke);L.assert(pe.some(yt=>So(yt)===z)),C();let Te=Zi(pe,yt=>l.getSourceFile(yt)),j=w(Ke);return Q7.getDocumentHighlights(l,g,j,oe,Te)}function Ce(Ke,oe,pe,z,Te){C();let j=w(Ke),yt=_7(Zd(j,oe));if(!!RG.nodeIsEligibleForRename(yt))if(Re(yt)&&(Xm(yt.parent)||BS(yt.parent))&&BI(yt.escapedText)){let{openingElement:lt,closingElement:Qe}=yt.parent.parent;return[lt,Qe].map(Vt=>{let Hn=Du(Vt.tagName,j);return{fileName:j.fileName,textSpan:Hn,...js.toContextSpan(Hn,j,Vt.parent)}})}else return Be(yt,oe,{findInStrings:pe,findInComments:z,providePrefixAndSuffixTextForRename:Te,use:js.FindReferencesUse.Rename},(lt,Qe,Vt)=>js.toRenameLocation(lt,Qe,Vt,Te||!1))}function Ie(Ke,oe){return C(),Be(Zd(w(Ke),oe),oe,{use:js.FindReferencesUse.References},js.toReferenceEntry)}function Be(Ke,oe,pe,z){C();let Te=pe&&pe.use===js.FindReferencesUse.Rename?l.getSourceFiles().filter(j=>!l.isSourceFileDefaultLibrary(j)):l.getSourceFiles();return js.findReferenceOrRenameEntries(l,g,Te,Ke,oe,pe,z)}function Ne(Ke,oe){return C(),js.findReferencedSymbols(l,g,l.getSourceFiles(),w(Ke),oe)}function Le(Ke){return C(),js.Core.getReferencesForFileName(Ke,l,l.getSourceFiles()).map(js.toReferenceEntry)}function Ye(Ke,oe,pe,z=!1){C();let Te=pe?[w(pe)]:l.getSourceFiles();return oye(Te,l.getTypeChecker(),g,Ke,oe,z)}function _t(Ke,oe,pe){C();let z=w(Ke),Te=e.getCustomTransformers&&e.getCustomTransformers();return Ype(l,z,!!oe,g,Te,pe)}function ct(Ke,oe,{triggerReason:pe}=Cp){C();let z=w(Ke);return UP.getSignatureHelpItems(l,z,oe,pe,g)}function Rt(Ke){return s.getCurrentSourceFile(Ke)}function We(Ke,oe,pe){let z=s.getCurrentSourceFile(Ke),Te=Zd(z,oe);if(Te===z)return;switch(Te.kind){case 208:case 163:case 10:case 95:case 110:case 104:case 106:case 108:case 194:case 79:break;default:return}let j=Te;for(;;)if(H2(j)||yhe(j))j=j.parent;else if(UX(j))if(j.parent.parent.kind===264&&j.parent.parent.body===j.parent)j=j.parent.parent.name;else break;else break;return Wc(j.getStart(),Te.getEnd())}function qe(Ke,oe){let pe=s.getCurrentSourceFile(Ke);return x$.spanInSourceFileAtLocation(pe,oe)}function zt(Ke){return uye(s.getCurrentSourceFile(Ke),g)}function Qt(Ke){return dye(s.getCurrentSourceFile(Ke),g)}function tn(Ke,oe,pe){return C(),(pe||\"original\")===\"2020\"?T5.v2020.getSemanticClassifications(l,g,w(Ke),oe):Cge(l.getTypeChecker(),g,w(Ke),l.getClassifiableNames(),oe)}function kn(Ke,oe,pe){return C(),(pe||\"original\")===\"original\"?BY(l.getTypeChecker(),g,w(Ke),l.getClassifiableNames(),oe):T5.v2020.getEncodedSemanticClassifications(l,g,w(Ke),oe)}function _n(Ke,oe){return Dge(g,s.getCurrentSourceFile(Ke),oe)}function Gt(Ke,oe){return UY(g,s.getCurrentSourceFile(Ke),oe)}function $n(Ke){let oe=s.getCurrentSourceFile(Ke);return See.collectElements(oe,g)}let ui=new Map(Object.entries({[18]:19,[20]:21,[22]:23,[31]:29}));ui.forEach((Ke,oe)=>ui.set(Ke.toString(),Number(oe)));function Ni(Ke,oe){let pe=s.getCurrentSourceFile(Ke),z=rk(pe,oe),Te=z.getStart(pe)===oe?ui.get(z.kind.toString()):void 0,j=Te&&Yo(z.parent,Te,pe);return j?[Du(z,pe),Du(j,pe)].sort((yt,lt)=>yt.start-lt.start):Je}function Pi(Ke,oe,pe){let z=Ms(),Te=nP(pe),j=s.getCurrentSourceFile(Ke);v(\"getIndentationAtPosition: getCurrentSourceFile: \"+(Ms()-z)),z=Ms();let yt=tl.SmartIndenter.getIndentation(oe,j,Te);return v(\"getIndentationAtPosition: computeIndentation  : \"+(Ms()-z)),yt}function gr(Ke,oe,pe,z){let Te=s.getCurrentSourceFile(Ke);return tl.formatSelection(oe,pe,Te,tl.getFormatContext(nP(z),e))}function pt(Ke,oe){return tl.formatDocument(s.getCurrentSourceFile(Ke),tl.getFormatContext(nP(oe),e))}function nn(Ke,oe,pe,z){let Te=s.getCurrentSourceFile(Ke),j=tl.getFormatContext(nP(z),e);if(!Kg(Te,oe))switch(pe){case\"{\":return tl.formatOnOpeningCurly(oe,Te,j);case\"}\":return tl.formatOnClosingCurly(oe,Te,j);case\";\":return tl.formatOnSemicolon(oe,Te,j);case`\n`:return tl.formatOnEnter(oe,Te,j)}return[]}function Dt(Ke,oe,pe,z,Te,j=Cp){C();let yt=w(Ke),lt=Wc(oe,pe),Qe=tl.getFormatContext(Te,e);return Uo(_A(z,Zv,Es),Vt=>(g.throwIfCancellationRequested(),gu.getFixes({errorCode:Vt,sourceFile:yt,span:lt,program:l,host:e,cancellationToken:g,formatContext:Qe,preferences:j})))}function pn(Ke,oe,pe,z=Cp){C(),L.assert(Ke.type===\"file\");let Te=w(Ke.fileName),j=tl.getFormatContext(pe,e);return gu.getAllFixes({fixId:oe,sourceFile:Te,program:l,host:e,cancellationToken:g,formatContext:j,preferences:z})}function An(Ke,oe,pe=Cp){var z;C(),L.assert(Ke.type===\"file\");let Te=w(Ke.fileName),j=tl.getFormatContext(oe,e),yt=(z=Ke.mode)!=null?z:Ke.skipDestructiveCodeActions?\"SortAndCombine\":\"All\";return v_.organizeImports(Te,j,e,l,pe,yt)}function Kn(Ke,oe,pe,z=Cp){return Nge(P(),Ke,oe,e,tl.getFormatContext(pe,e),z,A)}function hi(Ke,oe){let pe=typeof Ke==\"string\"?oe:Ke;return ba(pe)?Promise.all(pe.map(z=>ri(z))):ri(pe)}function ri(Ke){let oe=pe=>Ts(pe,m,x);return L.assertEqual(Ke.type,\"install package\"),e.installPackage?e.installPackage({fileName:oe(Ke.file),packageName:Ke.packageName}):Promise.reject(\"Host does not implement `installPackage`\")}function gn(Ke,oe,pe,z){let Te=z?tl.getFormatContext(z,e).options:void 0;return xb.getDocCommentTemplateAtPosition(bb(e,Te),s.getCurrentSourceFile(Ke),oe,pe)}function Ht(Ke,oe,pe){if(pe===60)return!1;let z=s.getCurrentSourceFile(Ke);if(r1(z,oe))return!1;if(khe(z,oe))return pe===123;if(qX(z,oe))return!1;switch(pe){case 39:case 34:case 96:return!Kg(z,oe)}return!0}function En(Ke,oe){let pe=s.getCurrentSourceFile(Ke),z=el(oe,pe);if(!z)return;let Te=z.kind===31&&Xm(z.parent)?z.parent.parent:IS(z)&&Hg(z.parent)?z.parent:void 0;if(Te&&ve(Te))return{newText:`</${Te.openingElement.tagName.getText(pe)}>`};let j=z.kind===31&&VS(z.parent)?z.parent.parent:IS(z)&&US(z.parent)?z.parent:void 0;if(j&&nt(j))return{newText:\"</>\"}}function dr(Ke,oe){return{lineStarts:Ke.getLineStarts(),firstLine:Ke.getLineAndCharacterOfPosition(oe.pos).line,lastLine:Ke.getLineAndCharacterOfPosition(oe.end).line}}function Cr(Ke,oe,pe){let z=s.getCurrentSourceFile(Ke),Te=[],{lineStarts:j,firstLine:yt,lastLine:lt}=dr(z,oe),Qe=pe||!1,Vt=Number.MAX_VALUE,Hn=new Map,jr=new RegExp(/\\S/),ei=m7(z,j[yt]),Kr=ei?\"{/*\":\"//\";for(let Si=yt;Si<=lt;Si++){let Ja=z.text.substring(j[Si],z.getLineEndOfPosition(j[Si])),Za=jr.exec(Ja);Za&&(Vt=Math.min(Vt,Za.index),Hn.set(Si.toString(),Za.index),Ja.substr(Za.index,Kr.length)!==Kr&&(Qe=pe===void 0||pe))}for(let Si=yt;Si<=lt;Si++){if(yt!==lt&&j[Si]===oe.end)continue;let Ja=Hn.get(Si.toString());Ja!==void 0&&(ei?Te.push.apply(Te,Se(Ke,{pos:j[Si]+Vt,end:z.getLineEndOfPosition(j[Si])},Qe,ei)):Qe?Te.push({newText:Kr,span:{length:0,start:j[Si]+Vt}}):z.text.substr(j[Si]+Ja,Kr.length)===Kr&&Te.push({newText:\"\",span:{length:Kr.length,start:j[Si]+Ja}}))}return Te}function Se(Ke,oe,pe,z){var Te;let j=s.getCurrentSourceFile(Ke),yt=[],{text:lt}=j,Qe=!1,Vt=pe||!1,Hn=[],{pos:jr}=oe,ei=z!==void 0?z:m7(j,jr),Kr=ei?\"{/*\":\"/*\",Si=ei?\"*/}\":\"*/\",Ja=ei?\"\\\\{\\\\/\\\\*\":\"\\\\/\\\\*\",Za=ei?\"\\\\*\\\\/\\\\}\":\"\\\\*\\\\/\";for(;jr<=oe.end;){let Fa=lt.substr(jr,Kr.length)===Kr?Kr.length:0,Hi=Kg(j,jr+Fa);if(Hi)ei&&(Hi.pos--,Hi.end++),Hn.push(Hi.pos),Hi.kind===3&&Hn.push(Hi.end),Qe=!0,jr=Hi.end+1;else{let xi=lt.substring(jr,oe.end).search(`(${Ja})|(${Za})`);Vt=pe!==void 0?pe:Vt||!Whe(lt,jr,xi===-1?oe.end:jr+xi),jr=xi===-1?oe.end+1:jr+xi+Si.length}}if(Vt||!Qe){((Te=Kg(j,oe.pos))==null?void 0:Te.kind)!==2&&Ny(Hn,oe.pos,Es),Ny(Hn,oe.end,Es);let Fa=Hn[0];lt.substr(Fa,Kr.length)!==Kr&&yt.push({newText:Kr,span:{length:0,start:Fa}});for(let Hi=1;Hi<Hn.length-1;Hi++)lt.substr(Hn[Hi]-Si.length,Si.length)!==Si&&yt.push({newText:Si,span:{length:0,start:Hn[Hi]}}),lt.substr(Hn[Hi],Kr.length)!==Kr&&yt.push({newText:Kr,span:{length:0,start:Hn[Hi]}});yt.length%2!==0&&yt.push({newText:Si,span:{length:0,start:Hn[Hn.length-1]}})}else for(let Fa of Hn){let Hi=Fa-Si.length>0?Fa-Si.length:0,xi=lt.substr(Hi,Si.length)===Si?Si.length:0;yt.push({newText:\"\",span:{length:Kr.length,start:Fa-xi}})}return yt}function at(Ke,oe){let pe=s.getCurrentSourceFile(Ke),{firstLine:z,lastLine:Te}=dr(pe,oe);return z===Te&&oe.pos!==oe.end?Se(Ke,oe,!0):Cr(Ke,oe,!0)}function Tt(Ke,oe){let pe=s.getCurrentSourceFile(Ke),z=[],{pos:Te}=oe,{end:j}=oe;Te===j&&(j+=m7(pe,Te)?2:1);for(let yt=Te;yt<=j;yt++){let lt=Kg(pe,yt);if(lt){switch(lt.kind){case 2:z.push.apply(z,Cr(Ke,{end:lt.end,pos:lt.pos+1},!1));break;case 3:z.push.apply(z,Se(Ke,{end:lt.end,pos:lt.pos+1},!1))}yt=lt.end+1}}return z}function ve({openingElement:Ke,closingElement:oe,parent:pe}){return!yb(Ke.tagName,oe.tagName)||Hg(pe)&&yb(Ke.tagName,pe.openingElement.tagName)&&ve(pe)}function nt({closingFragment:Ke,parent:oe}){return!!(Ke.flags&131072)||US(oe)&&nt(oe)}function ce(Ke,oe,pe){let z=s.getCurrentSourceFile(Ke),Te=tl.getRangeOfEnclosingComment(z,oe);return Te&&(!pe||Te.kind===3)?lv(Te):void 0}function $(Ke,oe){C();let pe=w(Ke);g.throwIfCancellationRequested();let z=pe.text,Te=[];if(oe.length>0&&!Qe(pe.fileName)){let Vt=yt(),Hn;for(;Hn=Vt.exec(z);){g.throwIfCancellationRequested();let jr=3;L.assert(Hn.length===oe.length+jr);let ei=Hn[1],Kr=Hn.index+ei.length;if(!Kg(pe,Kr))continue;let Si;for(let Za=0;Za<oe.length;Za++)Hn[Za+jr]&&(Si=oe[Za]);if(Si===void 0)return L.fail();if(lt(z.charCodeAt(Kr+Si.text.length)))continue;let Ja=Hn[2];Te.push({descriptor:Si,message:Ja,position:Kr})}}return Te;function j(Vt){return Vt.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\")}function yt(){let Vt=/(?:\\/\\/+\\s*)/.source,Hn=/(?:\\/\\*+\\s*)/.source,jr=/(?:^(?:\\s|\\*)*)/.source,ei=\"(\"+jr+\"|\"+Vt+\"|\"+Hn+\")\",Kr=\"(?:\"+on(oe,Hi=>\"(\"+j(Hi.text)+\")\").join(\"|\")+\")\",Si=/(?:$|\\*\\/)/.source,Ja=/(?:.*?)/.source,Za=\"(\"+Kr+Ja+\")\",Fa=ei+Za+Si;return new RegExp(Fa,\"gim\")}function lt(Vt){return Vt>=97&&Vt<=122||Vt>=65&&Vt<=90||Vt>=48&&Vt<=57}function Qe(Vt){return jl(Vt,\"/node_modules/\")}}function ue(Ke,oe,pe){return C(),RG.getRenameInfo(l,w(Ke),oe,pe||{})}function G(Ke,oe,pe,z,Te,j){let[yt,lt]=typeof oe==\"number\"?[oe,void 0]:[oe.pos,oe.end];return{file:Ke,startPosition:yt,endPosition:lt,program:P(),host:e,formatContext:tl.getFormatContext(z,e),cancellationToken:g,preferences:pe,triggerReason:Te,kind:j}}function Oe(Ke,oe,pe){return{file:Ke,program:P(),host:e,span:oe,preferences:pe,cancellationToken:g}}function je(Ke,oe){return ete.getSmartSelectionRange(oe,s.getCurrentSourceFile(Ke))}function Ge(Ke,oe,pe=Cp,z,Te){C();let j=w(Ke);return Nk.getApplicableRefactors(G(j,oe,pe,Cp,z,Te))}function kt(Ke,oe,pe,z,Te,j=Cp){C();let yt=w(Ke);return Nk.getEditsForRefactor(G(yt,pe,j,oe),z,Te)}function Kt(Ke,oe){return oe===0?{line:0,character:0}:A.toLineColumnOffset(Ke,oe)}function ln(Ke,oe){C();let pe=ix.resolveCallHierarchyDeclaration(l,Zd(w(Ke),oe));return pe&&pge(pe,z=>ix.createCallHierarchyItem(l,z))}function ir(Ke,oe){C();let pe=w(Ke),z=LY(ix.resolveCallHierarchyDeclaration(l,oe===0?pe:Zd(pe,oe)));return z?ix.getIncomingCalls(l,z,g):[]}function ae(Ke,oe){C();let pe=w(Ke),z=LY(ix.resolveCallHierarchyDeclaration(l,oe===0?pe:Zd(pe,oe)));return z?ix.getOutgoingCalls(l,z):[]}function rt(Ke,oe,pe=Cp){C();let z=w(Ke);return fee.provideInlayHints(Oe(z,oe,pe))}let Ot={dispose:W,cleanupSemanticCache:q,getSyntacticDiagnostics:Y,getSemanticDiagnostics:R,getSuggestionDiagnostics:ie,getCompilerOptionsDiagnostics:Q,getSyntacticClassifications:_n,getSemanticClassifications:tn,getEncodedSyntacticClassifications:Gt,getEncodedSemanticClassifications:kn,getCompletionsAtPosition:fe,getCompletionEntryDetails:Z,getCompletionEntrySymbol:U,getSignatureHelpItems:ct,getQuickInfoAtPosition:re,getDefinitionAtPosition:ge,getDefinitionAndBoundSpan:X,getImplementationAtPosition:we,getTypeDefinitionAtPosition:Ve,getReferencesAtPosition:Ie,findReferences:Ne,getFileReferences:Le,getOccurrencesAtPosition:ke,getDocumentHighlights:Pe,getNameOrDottedNameSpan:We,getBreakpointStatementAtPosition:qe,getNavigateToItems:Ye,getRenameInfo:ue,getSmartSelectionRange:je,findRenameLocations:Ce,getNavigationBarItems:zt,getNavigationTree:Qt,getOutliningSpans:$n,getTodoComments:$,getBraceMatchingAtPosition:Ni,getIndentationAtPosition:Pi,getFormattingEditsForRange:gr,getFormattingEditsForDocument:pt,getFormattingEditsAfterKeystroke:nn,getDocCommentTemplateAtPosition:gn,isValidBraceCompletionAtPosition:Ht,getJsxClosingTagAtPosition:En,getSpanOfEnclosingComment:ce,getCodeFixesAtPosition:Dt,getCombinedCodeFix:pn,applyCodeActionCommand:hi,organizeImports:An,getEditsForFileRename:Kn,getEmitOutput:_t,getNonBoundSourceFile:Rt,getProgram:P,getCurrentProgram:()=>l,getAutoImportProvider:F,updateIsDefinitionOfReferencedSymbols:B,getApplicableRefactors:Ge,getEditsForRefactor:kt,toLineColumnOffset:Kt,getSourceMapper:()=>A,clearSourceMapperCache:()=>A.clearCache(),prepareCallHierarchy:ln,provideCallHierarchyIncomingCalls:ir,provideCallHierarchyOutgoingCalls:ae,toggleLineComment:Cr,toggleMultilineComment:Se,commentSelection:at,uncommentSelection:Tt,provideInlayHints:rt,getSupportedCodeFixes:Fye};switch(o){case 0:break;case 1:y$.forEach(Ke=>Ot[Ke]=()=>{throw new Error(`LanguageService Operation: ${Ke} not allowed in LanguageServiceMode.PartialSemantic`)});break;case 2:qye.forEach(Ke=>Ot[Ke]=()=>{throw new Error(`LanguageService Operation: ${Ke} not allowed in LanguageServiceMode.Syntactic`)});break;default:L.assertNever(o)}return Ot}function p$(e){return e.nameTable||s3e(e),e.nameTable}function s3e(e){let t=e.nameTable=new Map;e.forEachChild(function r(i){if(Re(i)&&!GX(i)&&i.escapedText||gf(i)&&c3e(i)){let o=FI(i);t.set(o,t.get(o)===void 0?i.pos:-1)}else if(pi(i)){let o=i.escapedText;t.set(o,t.get(o)===void 0?i.pos:-1)}if(pa(i,r),Jd(i))for(let o of i.jsDoc)pa(o,r)})}function c3e(e){return Rh(e)||e.parent.kind===280||d3e(e)||pR(e)}function rP(e){let t=l3e(e);return t&&(rs(t.parent)||K0(t.parent))?t:void 0}function l3e(e){switch(e.kind){case 10:case 14:case 8:if(e.parent.kind===164)return Xj(e.parent.parent)?e.parent.parent:void 0;case 79:return Xj(e.parent)&&(e.parent.parent.kind===207||e.parent.parent.kind===289)&&e.parent.name===e?e.parent:void 0}}function u3e(e,t){let r=rP(e);if(r){let i=t.getContextualType(r.parent),o=i&&_5(r,t,i,!1);if(o&&o.length===1)return Vo(o)}return t.getSymbolAtLocation(e)}function _5(e,t,r,i){let o=jN(e.name);if(!o)return Je;if(!r.isUnion()){let l=r.getProperty(o);return l?[l]:Je}let s=Zi(r.types,l=>(rs(e.parent)||K0(e.parent))&&t.isTypeInvalidDueToUnionDiscriminant(l,e.parent)?void 0:l.getProperty(o));if(i&&(s.length===0||s.length===r.types.length)){let l=r.getProperty(o);if(l)return[l]}return s.length===0?Zi(r.types,l=>l.getProperty(o)):s}function d3e(e){return e&&e.parent&&e.parent.kind===209&&e.parent.argumentExpression===e}function f3e(e){if(xl)return vi(ni(So(xl.getExecutingFilePath())),X8(e));throw new Error(\"getDefaultLibFilePath is only supported when consumed as a node module. \")}var m$,p5,m5,Uye,h$,h5,g5,Vye,jye,Hye,Wye,zye,Jye,Kye,g$,y$,qye,_3e=gt({\"src/services/services.ts\"(){\"use strict\";Fr(),Fr(),lye(),wye(),m$=\"0.8\",p5=class{constructor(e,t,r){this.pos=t,this.end=r,this.flags=0,this.modifierFlagsCache=0,this.transformFlags=0,this.parent=void 0,this.kind=e}assertHasRealPosition(e){L.assert(!vp(this.pos)&&!vp(this.end),e||\"Node must have a real position for this operation\")}getSourceFile(){return Gn(this)}getStart(e,t){return this.assertHasRealPosition(),yT(this,e,t)}getFullStart(){return this.assertHasRealPosition(),this.pos}getEnd(){return this.assertHasRealPosition(),this.end}getWidth(e){return this.assertHasRealPosition(),this.getEnd()-this.getStart(e)}getFullWidth(){return this.assertHasRealPosition(),this.end-this.pos}getLeadingTriviaWidth(e){return this.assertHasRealPosition(),this.getStart(e)-this.pos}getFullText(e){return this.assertHasRealPosition(),(e||this.getSourceFile()).text.substring(this.pos,this.end)}getText(e){return this.assertHasRealPosition(),e||(e=this.getSourceFile()),e.text.substring(this.getStart(e),this.getEnd())}getChildCount(e){return this.getChildren(e).length}getChildAt(e,t){return this.getChildren(t)[e]}getChildren(e){return this.assertHasRealPosition(\"Node without a real position cannot be scanned and thus has no token nodes - use forEachChild and collect the result if that's fine\"),this._children||(this._children=i3e(this,e))}getFirstToken(e){this.assertHasRealPosition();let t=this.getChildren(e);if(!t.length)return;let r=wr(t,i=>i.kind<312||i.kind>353);return r.kind<163?r:r.getFirstToken(e)}getLastToken(e){this.assertHasRealPosition();let t=this.getChildren(e),r=Os(t);if(!!r)return r.kind<163?r:r.getLastToken(e)}forEachChild(e,t){return pa(this,e,t)}},m5=class{constructor(e,t){this.pos=e,this.end=t,this.flags=0,this.modifierFlagsCache=0,this.transformFlags=0,this.parent=void 0}getSourceFile(){return Gn(this)}getStart(e,t){return yT(this,e,t)}getFullStart(){return this.pos}getEnd(){return this.end}getWidth(e){return this.getEnd()-this.getStart(e)}getFullWidth(){return this.end-this.pos}getLeadingTriviaWidth(e){return this.getStart(e)-this.pos}getFullText(e){return(e||this.getSourceFile()).text.substring(this.pos,this.end)}getText(e){return e||(e=this.getSourceFile()),e.text.substring(this.getStart(e),this.getEnd())}getChildCount(){return this.getChildren().length}getChildAt(e){return this.getChildren()[e]}getChildren(){return this.kind===1&&this.jsDoc||Je}getFirstToken(){}getLastToken(){}forEachChild(){}},Uye=class{constructor(e,t){this.id=0,this.mergeId=0,this.flags=e,this.escapedName=t}getFlags(){return this.flags}get name(){return fc(this)}getEscapedName(){return this.escapedName}getName(){return this.name}getDeclarations(){return this.declarations}getDocumentationComment(e){if(!this.documentationComment)if(this.documentationComment=Je,!this.declarations&&Zp(this)&&this.links.target&&Zp(this.links.target)&&this.links.target.links.tupleLabelDeclaration){let t=this.links.target.links.tupleLabelDeclaration;this.documentationComment=tP([t],e)}else this.documentationComment=tP(this.declarations,e);return this.documentationComment}getContextualDocumentationComment(e,t){if(e){if(zy(e)&&(this.contextualGetAccessorDocumentationComment||(this.contextualGetAccessorDocumentationComment=tP(Pr(this.declarations,zy),t)),Fn(this.contextualGetAccessorDocumentationComment)))return this.contextualGetAccessorDocumentationComment;if(Ng(e)&&(this.contextualSetAccessorDocumentationComment||(this.contextualSetAccessorDocumentationComment=tP(Pr(this.declarations,Ng),t)),Fn(this.contextualSetAccessorDocumentationComment)))return this.contextualSetAccessorDocumentationComment}return this.getDocumentationComment(t)}getJsDocTags(e){return this.tags===void 0&&(this.tags=u5(this.declarations,e)),this.tags}getContextualJsDocTags(e,t){if(e){if(zy(e)&&(this.contextualGetAccessorTags||(this.contextualGetAccessorTags=u5(Pr(this.declarations,zy),t)),Fn(this.contextualGetAccessorTags)))return this.contextualGetAccessorTags;if(Ng(e)&&(this.contextualSetAccessorTags||(this.contextualSetAccessorTags=u5(Pr(this.declarations,Ng),t)),Fn(this.contextualSetAccessorTags)))return this.contextualSetAccessorTags}return this.getJsDocTags(t)}},h$=class extends m5{constructor(e,t,r){super(t,r),this.kind=e}},h5=class extends m5{constructor(e,t,r){super(t,r),this.kind=79}get text(){return vr(this)}},h5.prototype.kind=79,g5=class extends m5{constructor(e,t,r){super(t,r),this.kind=80}get text(){return vr(this)}},g5.prototype.kind=80,Vye=class{constructor(e,t){this.checker=e,this.flags=t}getFlags(){return this.flags}getSymbol(){return this.symbol}getProperties(){return this.checker.getPropertiesOfType(this)}getProperty(e){return this.checker.getPropertyOfType(this,e)}getApparentProperties(){return this.checker.getAugmentedPropertiesOfType(this)}getCallSignatures(){return this.checker.getSignaturesOfType(this,0)}getConstructSignatures(){return this.checker.getSignaturesOfType(this,1)}getStringIndexType(){return this.checker.getIndexTypeOfType(this,0)}getNumberIndexType(){return this.checker.getIndexTypeOfType(this,1)}getBaseTypes(){return this.isClassOrInterface()?this.checker.getBaseTypes(this):void 0}isNullableType(){return this.checker.isNullableType(this)}getNonNullableType(){return this.checker.getNonNullableType(this)}getNonOptionalType(){return this.checker.getNonOptionalType(this)}getConstraint(){return this.checker.getBaseConstraintOfType(this)}getDefault(){return this.checker.getDefaultFromTypeParameter(this)}isUnion(){return!!(this.flags&1048576)}isIntersection(){return!!(this.flags&2097152)}isUnionOrIntersection(){return!!(this.flags&3145728)}isLiteral(){return!!(this.flags&2432)}isStringLiteral(){return!!(this.flags&128)}isNumberLiteral(){return!!(this.flags&256)}isTypeParameter(){return!!(this.flags&262144)}isClassOrInterface(){return!!(Ur(this)&3)}isClass(){return!!(Ur(this)&1)}isIndexType(){return!!(this.flags&4194304)}get typeArguments(){if(Ur(this)&4)return this.checker.getTypeArguments(this)}},jye=class{constructor(e,t){this.checker=e,this.flags=t}getDeclaration(){return this.declaration}getTypeParameters(){return this.typeParameters}getParameters(){return this.parameters}getReturnType(){return this.checker.getReturnTypeOfSignature(this)}getTypeParameterAtPosition(e){let t=this.checker.getParameterType(this,e);if(t.isIndexType()&&uL(t.type)){let r=t.type.getConstraint();if(r)return this.checker.getIndexType(r)}return t}getDocumentationComment(){return this.documentationComment||(this.documentationComment=tP(oT(this.declaration),this.checker))}getJsDocTags(){return this.jsDocTags||(this.jsDocTags=u5(oT(this.declaration),this.checker))}},Hye=class extends p5{constructor(e,t,r){super(e,t,r),this.kind=308}update(e,t){return uJ(this,e,t)}getLineAndCharacterOfPosition(e){return Gs(this,e)}getLineStarts(){return Sh(this)}getPositionOfLineAndCharacter(e,t,r){return mj(Sh(this),e,t,this.text,r)}getLineEndOfPosition(e){let{line:t}=this.getLineAndCharacterOfPosition(e),r=this.getLineStarts(),i;t+1>=r.length&&(i=this.getEnd()),i||(i=r[t+1]-1);let o=this.getFullText();return o[i]===`\n`&&o[i-1]===\"\\r\"?i-1:i}getNamedDeclarations(){return this.namedDeclarations||(this.namedDeclarations=this.computeNamedDeclarations()),this.namedDeclarations}computeNamedDeclarations(){let e=Of();return this.forEachChild(o),e;function t(s){let l=i(s);l&&e.add(l,s)}function r(s){let l=e.get(s);return l||e.set(s,l=[]),l}function i(s){let l=Sj(s);return l&&(ts(l)&&br(l.expression)?l.expression.name.text:Ys(l)?jN(l):void 0)}function o(s){switch(s.kind){case 259:case 215:case 171:case 170:let l=s,f=i(l);if(f){let m=r(f),v=Os(m);v&&l.parent===v.parent&&l.symbol===v.symbol?l.body&&!v.body&&(m[m.length-1]=l):m.push(l)}pa(s,o);break;case 260:case 228:case 261:case 262:case 263:case 264:case 268:case 278:case 273:case 270:case 271:case 174:case 175:case 184:t(s),pa(s,o);break;case 166:if(!Mr(s,16476))break;case 257:case 205:{let m=s;if(La(m.name)){pa(m.name,o);break}m.initializer&&o(m.initializer)}case 302:case 169:case 168:t(s);break;case 275:let d=s;d.exportClause&&(m_(d.exportClause)?mn(d.exportClause.elements,o):o(d.exportClause.name));break;case 269:let g=s.importClause;g&&(g.name&&t(g.name),g.namedBindings&&(g.namedBindings.kind===271?t(g.namedBindings):mn(g.namedBindings.elements,o)));break;case 223:ic(s)!==0&&t(s);default:pa(s,o)}}}},Wye=class{constructor(e,t,r){this.fileName=e,this.text=t,this.skipTrivia=r}getLineAndCharacterOfPosition(e){return Gs(this,e)}},zye=class{constructor(e){this.host=e}getCurrentSourceFile(e){var t,r,i,o,s,l,f,d;let g=this.host.getScriptSnapshot(e);if(!g)throw new Error(\"Could not find file: '\"+e+\"'.\");let m=mY(e,this.host),v=this.host.getScriptVersion(e),S;if(this.currentFileName!==e){let x={languageVersion:99,impliedNodeFormat:NF(Ts(e,this.host.getCurrentDirectory(),((i=(r=(t=this.host).getCompilerHost)==null?void 0:r.call(t))==null?void 0:i.getCanonicalFileName)||lb(this.host)),(d=(f=(l=(s=(o=this.host).getCompilerHost)==null?void 0:s.call(o))==null?void 0:l.getModuleResolutionCache)==null?void 0:f.call(l))==null?void 0:d.getPackageJsonInfoCache(),this.host,this.host.getCompilationSettings()),setExternalModuleIndicator:NR(this.host.getCompilationSettings())};S=f5(e,g,x,v,!0,m)}else if(this.currentFileVersion!==v){let x=g.getChangeRange(this.currentFileScriptSnapshot);S=_$(this.currentSourceFile,g,v,x)}return S&&(this.currentFileVersion=v,this.currentFileName=e,this.currentFileScriptSnapshot=g,this.currentSourceFile=S),this.currentSourceFile}},Jye={isCancellationRequested:m0,throwIfCancellationRequested:Ba},Kye=class{constructor(e){this.cancellationToken=e}isCancellationRequested(){return this.cancellationToken.isCancellationRequested()}throwIfCancellationRequested(){var e;if(this.isCancellationRequested())throw(e=ai)==null||e.instant(ai.Phase.Session,\"cancellationThrown\",{kind:\"CancellationTokenObject\"}),new nI}},g$=class{constructor(e,t=20){this.hostCancellationToken=e,this.throttleWaitMilliseconds=t,this.lastCancellationCheckTime=0}isCancellationRequested(){let e=Ms();return Math.abs(e-this.lastCancellationCheckTime)>=this.throttleWaitMilliseconds?(this.lastCancellationCheckTime=e,this.hostCancellationToken.isCancellationRequested()):!1}throwIfCancellationRequested(){var e;if(this.isCancellationRequested())throw(e=ai)==null||e.instant(ai.Phase.Session,\"cancellationThrown\",{kind:\"ThrottledCancellationToken\"}),new nI}},y$=[\"getSemanticDiagnostics\",\"getSuggestionDiagnostics\",\"getCompilerOptionsDiagnostics\",\"getSemanticClassifications\",\"getEncodedSemanticClassifications\",\"getCodeFixesAtPosition\",\"getCombinedCodeFix\",\"applyCodeActionCommand\",\"organizeImports\",\"getEditsForFileRename\",\"getEmitOutput\",\"getApplicableRefactors\",\"getEditsForRefactor\",\"prepareCallHierarchy\",\"provideCallHierarchyIncomingCalls\",\"provideCallHierarchyOutgoingCalls\",\"provideInlayHints\",\"getSupportedCodeFixes\"],qye=[...y$,\"getCompletionsAtPosition\",\"getCompletionEntryDetails\",\"getCompletionEntrySymbol\",\"getSignatureHelpItems\",\"getQuickInfoAtPosition\",\"getDefinitionAtPosition\",\"getDefinitionAndBoundSpan\",\"getImplementationAtPosition\",\"getTypeDefinitionAtPosition\",\"getReferencesAtPosition\",\"findReferences\",\"getOccurrencesAtPosition\",\"getDocumentHighlights\",\"getNavigateToItems\",\"getRenameInfo\",\"findRenameLocations\",\"getApplicableRefactors\"],_le(o3e())}});function p3e(e,t,r){let i=[];r=t$(r,i);let o=ba(e)?e:[e],s=uN(void 0,void 0,D,r,o,t,!0);return s.diagnostics=Qi(s.diagnostics,i),s}var m3e=gt({\"src/services/transform.ts\"(){\"use strict\";Fr()}});function y5(e,t){e&&e.log(\"*INTERNAL ERROR* - Exception in typescript services: \"+t.message)}function h3e(e,t,r,i){let o;i&&(e.log(t),o=Ms());let s=r();if(i){let l=Ms();if(e.log(`${t} completed in ${l-o} msec`),Ta(s)){let f=s;f.length>128&&(f=f.substring(0,128)+\"...\"),e.log(`  result.length=${f.length}, result='${JSON.stringify(f)}'`)}}return s}function v$(e,t,r,i){return Xye(e,t,!0,r,i)}function Xye(e,t,r,i,o){try{let s=h3e(e,t,i,o);return r?JSON.stringify({result:s}):s}catch(s){return s instanceof nI?JSON.stringify({canceled:!0}):(y5(e,s),s.description=t,JSON.stringify({error:s}))}}function b$(e,t){return e.map(r=>g3e(r,t))}function g3e(e,t){return{message:sv(e.messageText,t),start:e.start,length:e.length,category:C8(e),code:e.code,reportsUnnecessary:e.reportsUnnecessary,reportsDeprecated:e.reportsDeprecated}}function E$(e){return{spans:e.spans.join(\",\"),endOfLineState:e.endOfLineState}}var v5,Yye,T$,S$,b5,$ye,Qye,Zye,eve,y3e=gt({\"src/services/shims.ts\"(){\"use strict\";Fr(),v5=function(){return this}(),Yye=class{constructor(e){this.scriptSnapshotShim=e}getText(e,t){return this.scriptSnapshotShim.getText(e,t)}getLength(){return this.scriptSnapshotShim.getLength()}getChangeRange(e){let t=e,r=this.scriptSnapshotShim.getChangeRange(t.scriptSnapshotShim);if(r===null)return null;let i=JSON.parse(r);return xw(il(i.span.start,i.span.length),i.newLength)}dispose(){\"dispose\"in this.scriptSnapshotShim&&this.scriptSnapshotShim.dispose()}},T$=class{constructor(e){this.shimHost=e,this.loggingEnabled=!1,this.tracingEnabled=!1,\"getModuleResolutionsForFile\"in this.shimHost&&(this.resolveModuleNames=(t,r)=>{let i=JSON.parse(this.shimHost.getModuleResolutionsForFile(r));return on(t,o=>{let s=JD(i,o);return s?{resolvedFileName:s,extension:HR(s),isExternalLibraryImport:!1}:void 0})}),\"directoryExists\"in this.shimHost&&(this.directoryExists=t=>this.shimHost.directoryExists(t)),\"getTypeReferenceDirectiveResolutionsForFile\"in this.shimHost&&(this.resolveTypeReferenceDirectives=(t,r)=>{let i=JSON.parse(this.shimHost.getTypeReferenceDirectiveResolutionsForFile(r));return on(t,o=>JD(i,Ta(o)?o:t_(o.fileName)))})}log(e){this.loggingEnabled&&this.shimHost.log(e)}trace(e){this.tracingEnabled&&this.shimHost.trace(e)}error(e){this.shimHost.error(e)}getProjectVersion(){if(!!this.shimHost.getProjectVersion)return this.shimHost.getProjectVersion()}getTypeRootsVersion(){return this.shimHost.getTypeRootsVersion?this.shimHost.getTypeRootsVersion():0}useCaseSensitiveFileNames(){return this.shimHost.useCaseSensitiveFileNames?this.shimHost.useCaseSensitiveFileNames():!1}getCompilationSettings(){let e=this.shimHost.getCompilationSettings();if(e===null||e===\"\")throw Error(\"LanguageServiceShimHostAdapter.getCompilationSettings: empty compilationSettings\");let t=JSON.parse(e);return t.allowNonTsExtensions=!0,t}getScriptFileNames(){let e=this.shimHost.getScriptFileNames();return JSON.parse(e)}getScriptSnapshot(e){let t=this.shimHost.getScriptSnapshot(e);return t&&new Yye(t)}getScriptKind(e){return\"getScriptKind\"in this.shimHost?this.shimHost.getScriptKind(e):0}getScriptVersion(e){return this.shimHost.getScriptVersion(e)}getLocalizedDiagnosticMessages(){let e=this.shimHost.getLocalizedDiagnosticMessages();if(e===null||e===\"\")return null;try{return JSON.parse(e)}catch(t){return this.log(t.description||\"diagnosticMessages.generated.json has invalid JSON format\"),null}}getCancellationToken(){let e=this.shimHost.getCancellationToken();return new g$(e)}getCurrentDirectory(){return this.shimHost.getCurrentDirectory()}getDirectories(e){return JSON.parse(this.shimHost.getDirectories(e))}getDefaultLibFileName(e){return this.shimHost.getDefaultLibFileName(JSON.stringify(e))}readDirectory(e,t,r,i,o){let s=nL(e,r,i,this.shimHost.useCaseSensitiveFileNames(),this.shimHost.getCurrentDirectory());return JSON.parse(this.shimHost.readDirectory(e,JSON.stringify(t),JSON.stringify(s.basePaths),s.excludePattern,s.includeFilePattern,s.includeDirectoryPattern,o))}readFile(e,t){return this.shimHost.readFile(e,t)}fileExists(e){return this.shimHost.fileExists(e)}},S$=class{constructor(e){this.shimHost=e,this.useCaseSensitiveFileNames=this.shimHost.useCaseSensitiveFileNames?this.shimHost.useCaseSensitiveFileNames():!1,\"directoryExists\"in this.shimHost?this.directoryExists=t=>this.shimHost.directoryExists(t):this.directoryExists=void 0,\"realpath\"in this.shimHost?this.realpath=t=>this.shimHost.realpath(t):this.realpath=void 0}readDirectory(e,t,r,i,o){let s=nL(e,r,i,this.shimHost.useCaseSensitiveFileNames(),this.shimHost.getCurrentDirectory());return JSON.parse(this.shimHost.readDirectory(e,JSON.stringify(t),JSON.stringify(s.basePaths),s.excludePattern,s.includeFilePattern,s.includeDirectoryPattern,o))}fileExists(e){return this.shimHost.fileExists(e)}readFile(e){return this.shimHost.readFile(e)}getDirectories(e){return JSON.parse(this.shimHost.getDirectories(e))}},b5=class{constructor(e){this.factory=e,e.registerShim(this)}dispose(e){this.factory.unregisterShim(this)}},$ye=class extends b5{constructor(e,t,r){super(e),this.host=t,this.languageService=r,this.logPerformance=!1,this.logger=this.host}forwardJSONCall(e,t){return v$(this.logger,e,t,this.logPerformance)}dispose(e){this.logger.log(\"dispose()\"),this.languageService.dispose(),this.languageService=null,v5&&v5.CollectGarbage&&(v5.CollectGarbage(),this.logger.log(\"CollectGarbage()\")),this.logger=null,super.dispose(e)}refresh(e){this.forwardJSONCall(`refresh(${e})`,()=>null)}cleanupSemanticCache(){this.forwardJSONCall(\"cleanupSemanticCache()\",()=>(this.languageService.cleanupSemanticCache(),null))}realizeDiagnostics(e){let t=bb(this.host,void 0);return b$(e,t)}getSyntacticClassifications(e,t,r){return this.forwardJSONCall(`getSyntacticClassifications('${e}', ${t}, ${r})`,()=>this.languageService.getSyntacticClassifications(e,il(t,r)))}getSemanticClassifications(e,t,r){return this.forwardJSONCall(`getSemanticClassifications('${e}', ${t}, ${r})`,()=>this.languageService.getSemanticClassifications(e,il(t,r)))}getEncodedSyntacticClassifications(e,t,r){return this.forwardJSONCall(`getEncodedSyntacticClassifications('${e}', ${t}, ${r})`,()=>E$(this.languageService.getEncodedSyntacticClassifications(e,il(t,r))))}getEncodedSemanticClassifications(e,t,r){return this.forwardJSONCall(`getEncodedSemanticClassifications('${e}', ${t}, ${r})`,()=>E$(this.languageService.getEncodedSemanticClassifications(e,il(t,r))))}getSyntacticDiagnostics(e){return this.forwardJSONCall(`getSyntacticDiagnostics('${e}')`,()=>{let t=this.languageService.getSyntacticDiagnostics(e);return this.realizeDiagnostics(t)})}getSemanticDiagnostics(e){return this.forwardJSONCall(`getSemanticDiagnostics('${e}')`,()=>{let t=this.languageService.getSemanticDiagnostics(e);return this.realizeDiagnostics(t)})}getSuggestionDiagnostics(e){return this.forwardJSONCall(`getSuggestionDiagnostics('${e}')`,()=>this.realizeDiagnostics(this.languageService.getSuggestionDiagnostics(e)))}getCompilerOptionsDiagnostics(){return this.forwardJSONCall(\"getCompilerOptionsDiagnostics()\",()=>{let e=this.languageService.getCompilerOptionsDiagnostics();return this.realizeDiagnostics(e)})}getQuickInfoAtPosition(e,t){return this.forwardJSONCall(`getQuickInfoAtPosition('${e}', ${t})`,()=>this.languageService.getQuickInfoAtPosition(e,t))}getNameOrDottedNameSpan(e,t,r){return this.forwardJSONCall(`getNameOrDottedNameSpan('${e}', ${t}, ${r})`,()=>this.languageService.getNameOrDottedNameSpan(e,t,r))}getBreakpointStatementAtPosition(e,t){return this.forwardJSONCall(`getBreakpointStatementAtPosition('${e}', ${t})`,()=>this.languageService.getBreakpointStatementAtPosition(e,t))}getSignatureHelpItems(e,t,r){return this.forwardJSONCall(`getSignatureHelpItems('${e}', ${t})`,()=>this.languageService.getSignatureHelpItems(e,t,r))}getDefinitionAtPosition(e,t){return this.forwardJSONCall(`getDefinitionAtPosition('${e}', ${t})`,()=>this.languageService.getDefinitionAtPosition(e,t))}getDefinitionAndBoundSpan(e,t){return this.forwardJSONCall(`getDefinitionAndBoundSpan('${e}', ${t})`,()=>this.languageService.getDefinitionAndBoundSpan(e,t))}getTypeDefinitionAtPosition(e,t){return this.forwardJSONCall(`getTypeDefinitionAtPosition('${e}', ${t})`,()=>this.languageService.getTypeDefinitionAtPosition(e,t))}getImplementationAtPosition(e,t){return this.forwardJSONCall(`getImplementationAtPosition('${e}', ${t})`,()=>this.languageService.getImplementationAtPosition(e,t))}getRenameInfo(e,t,r){return this.forwardJSONCall(`getRenameInfo('${e}', ${t})`,()=>this.languageService.getRenameInfo(e,t,r))}getSmartSelectionRange(e,t){return this.forwardJSONCall(`getSmartSelectionRange('${e}', ${t})`,()=>this.languageService.getSmartSelectionRange(e,t))}findRenameLocations(e,t,r,i,o){return this.forwardJSONCall(`findRenameLocations('${e}', ${t}, ${r}, ${i}, ${o})`,()=>this.languageService.findRenameLocations(e,t,r,i,o))}getBraceMatchingAtPosition(e,t){return this.forwardJSONCall(`getBraceMatchingAtPosition('${e}', ${t})`,()=>this.languageService.getBraceMatchingAtPosition(e,t))}isValidBraceCompletionAtPosition(e,t,r){return this.forwardJSONCall(`isValidBraceCompletionAtPosition('${e}', ${t}, ${r})`,()=>this.languageService.isValidBraceCompletionAtPosition(e,t,r))}getSpanOfEnclosingComment(e,t,r){return this.forwardJSONCall(`getSpanOfEnclosingComment('${e}', ${t})`,()=>this.languageService.getSpanOfEnclosingComment(e,t,r))}getIndentationAtPosition(e,t,r){return this.forwardJSONCall(`getIndentationAtPosition('${e}', ${t})`,()=>{let i=JSON.parse(r);return this.languageService.getIndentationAtPosition(e,t,i)})}getReferencesAtPosition(e,t){return this.forwardJSONCall(`getReferencesAtPosition('${e}', ${t})`,()=>this.languageService.getReferencesAtPosition(e,t))}findReferences(e,t){return this.forwardJSONCall(`findReferences('${e}', ${t})`,()=>this.languageService.findReferences(e,t))}getFileReferences(e){return this.forwardJSONCall(`getFileReferences('${e})`,()=>this.languageService.getFileReferences(e))}getOccurrencesAtPosition(e,t){return this.forwardJSONCall(`getOccurrencesAtPosition('${e}', ${t})`,()=>this.languageService.getOccurrencesAtPosition(e,t))}getDocumentHighlights(e,t,r){return this.forwardJSONCall(`getDocumentHighlights('${e}', ${t})`,()=>{let i=this.languageService.getDocumentHighlights(e,t,JSON.parse(r)),o=t_(Al(e));return Pr(i,s=>t_(Al(s.fileName))===o)})}getCompletionsAtPosition(e,t,r,i){return this.forwardJSONCall(`getCompletionsAtPosition('${e}', ${t}, ${r}, ${i})`,()=>this.languageService.getCompletionsAtPosition(e,t,r,i))}getCompletionEntryDetails(e,t,r,i,o,s,l){return this.forwardJSONCall(`getCompletionEntryDetails('${e}', ${t}, '${r}')`,()=>{let f=i===void 0?void 0:JSON.parse(i);return this.languageService.getCompletionEntryDetails(e,t,r,f,o,s,l)})}getFormattingEditsForRange(e,t,r,i){return this.forwardJSONCall(`getFormattingEditsForRange('${e}', ${t}, ${r})`,()=>{let o=JSON.parse(i);return this.languageService.getFormattingEditsForRange(e,t,r,o)})}getFormattingEditsForDocument(e,t){return this.forwardJSONCall(`getFormattingEditsForDocument('${e}')`,()=>{let r=JSON.parse(t);return this.languageService.getFormattingEditsForDocument(e,r)})}getFormattingEditsAfterKeystroke(e,t,r,i){return this.forwardJSONCall(`getFormattingEditsAfterKeystroke('${e}', ${t}, '${r}')`,()=>{let o=JSON.parse(i);return this.languageService.getFormattingEditsAfterKeystroke(e,t,r,o)})}getDocCommentTemplateAtPosition(e,t,r,i){return this.forwardJSONCall(`getDocCommentTemplateAtPosition('${e}', ${t})`,()=>this.languageService.getDocCommentTemplateAtPosition(e,t,r,i))}getNavigateToItems(e,t,r){return this.forwardJSONCall(`getNavigateToItems('${e}', ${t}, ${r})`,()=>this.languageService.getNavigateToItems(e,t,r))}getNavigationBarItems(e){return this.forwardJSONCall(`getNavigationBarItems('${e}')`,()=>this.languageService.getNavigationBarItems(e))}getNavigationTree(e){return this.forwardJSONCall(`getNavigationTree('${e}')`,()=>this.languageService.getNavigationTree(e))}getOutliningSpans(e){return this.forwardJSONCall(`getOutliningSpans('${e}')`,()=>this.languageService.getOutliningSpans(e))}getTodoComments(e,t){return this.forwardJSONCall(`getTodoComments('${e}')`,()=>this.languageService.getTodoComments(e,JSON.parse(t)))}prepareCallHierarchy(e,t){return this.forwardJSONCall(`prepareCallHierarchy('${e}', ${t})`,()=>this.languageService.prepareCallHierarchy(e,t))}provideCallHierarchyIncomingCalls(e,t){return this.forwardJSONCall(`provideCallHierarchyIncomingCalls('${e}', ${t})`,()=>this.languageService.provideCallHierarchyIncomingCalls(e,t))}provideCallHierarchyOutgoingCalls(e,t){return this.forwardJSONCall(`provideCallHierarchyOutgoingCalls('${e}', ${t})`,()=>this.languageService.provideCallHierarchyOutgoingCalls(e,t))}provideInlayHints(e,t,r){return this.forwardJSONCall(`provideInlayHints('${e}', '${JSON.stringify(t)}', ${JSON.stringify(r)})`,()=>this.languageService.provideInlayHints(e,t,r))}getEmitOutput(e){return this.forwardJSONCall(`getEmitOutput('${e}')`,()=>{let{diagnostics:t,...r}=this.languageService.getEmitOutput(e);return{...r,diagnostics:this.realizeDiagnostics(t)}})}getEmitOutputObject(e){return Xye(this.logger,`getEmitOutput('${e}')`,!1,()=>this.languageService.getEmitOutput(e),this.logPerformance)}toggleLineComment(e,t){return this.forwardJSONCall(`toggleLineComment('${e}', '${JSON.stringify(t)}')`,()=>this.languageService.toggleLineComment(e,t))}toggleMultilineComment(e,t){return this.forwardJSONCall(`toggleMultilineComment('${e}', '${JSON.stringify(t)}')`,()=>this.languageService.toggleMultilineComment(e,t))}commentSelection(e,t){return this.forwardJSONCall(`commentSelection('${e}', '${JSON.stringify(t)}')`,()=>this.languageService.commentSelection(e,t))}uncommentSelection(e,t){return this.forwardJSONCall(`uncommentSelection('${e}', '${JSON.stringify(t)}')`,()=>this.languageService.uncommentSelection(e,t))}},Qye=class extends b5{constructor(e,t){super(e),this.logger=t,this.logPerformance=!1,this.classifier=Age()}getEncodedLexicalClassifications(e,t,r=!1){return v$(this.logger,\"getEncodedLexicalClassifications\",()=>E$(this.classifier.getEncodedLexicalClassifications(e,t,r)),this.logPerformance)}getClassificationsForLine(e,t,r=!1){let i=this.classifier.getClassificationsForLine(e,t,r),o=\"\";for(let s of i.entries)o+=s.length+`\n`,o+=s.classification+`\n`;return o+=i.finalLexState,o}},Zye=class extends b5{constructor(e,t,r){super(e),this.logger=t,this.host=r,this.logPerformance=!1}forwardJSONCall(e,t){return v$(this.logger,e,t,this.logPerformance)}resolveModuleName(e,t,r){return this.forwardJSONCall(`resolveModuleName('${e}')`,()=>{let i=JSON.parse(r),o=GL(t,Al(e),i,this.host),s=o.resolvedModule?o.resolvedModule.resolvedFileName:void 0;return o.resolvedModule&&o.resolvedModule.extension!==\".ts\"&&o.resolvedModule.extension!==\".tsx\"&&o.resolvedModule.extension!==\".d.ts\"&&(s=void 0),{resolvedFileName:s,failedLookupLocations:o.failedLookupLocations,affectingLocations:o.affectingLocations}})}resolveTypeReferenceDirective(e,t,r){return this.forwardJSONCall(`resolveTypeReferenceDirective(${e})`,()=>{let i=JSON.parse(r),o=HJ(t,Al(e),i,this.host);return{resolvedFileName:o.resolvedTypeReferenceDirective?o.resolvedTypeReferenceDirective.resolvedFileName:void 0,primary:o.resolvedTypeReferenceDirective?o.resolvedTypeReferenceDirective.primary:!0,failedLookupLocations:o.failedLookupLocations}})}getPreProcessedFileInfo(e,t){return this.forwardJSONCall(`getPreProcessedFileInfo('${e}')`,()=>{let r=qge(E7(t),!0,!0);return{referencedFiles:this.convertFileReferences(r.referencedFiles),importedFiles:this.convertFileReferences(r.importedFiles),ambientExternalModules:r.ambientExternalModules,isLibFile:r.isLibFile,typeReferenceDirectives:this.convertFileReferences(r.typeReferenceDirectives),libReferenceDirectives:this.convertFileReferences(r.libReferenceDirectives)}})}getAutomaticTypeDirectiveNames(e){return this.forwardJSONCall(`getAutomaticTypeDirectiveNames('${e}')`,()=>{let t=JSON.parse(e);return X3(t,this.host)})}convertFileReferences(e){if(!e)return;let t=[];for(let r of e)t.push({path:Al(r.fileName),position:r.pos,length:r.end-r.pos});return t}getTSConfigFileInfo(e,t){return this.forwardJSONCall(`getTSConfigFileInfo('${e}')`,()=>{let r=RO(e,E7(t)),i=Al(e),o=FO(r,this.host,ni(i),{},i);return{options:o.options,typeAcquisition:o.typeAcquisition,files:o.fileNames,raw:o.raw,errors:b$([...r.parseDiagnostics,...o.errors],`\\r\n`)}})}getDefaultCompilationSettings(){return this.forwardJSONCall(\"getDefaultCompilationSettings()\",()=>d5())}discoverTypings(e){let t=Dl(!1);return this.forwardJSONCall(\"discoverTypings()\",()=>{let r=JSON.parse(e);return this.safeList===void 0&&(this.safeList=ZT.loadSafeList(this.host,Ts(r.safeListPath,r.safeListPath,t))),ZT.discoverTypings(this.host,i=>this.logger.log(i),r.fileNames,Ts(r.projectRootPath,r.projectRootPath,t),this.safeList,r.packageNameToTypingLocation,r.typeAcquisition,r.unresolvedImports,r.typesRegistry,Cp)})}},eve=class{constructor(){this._shims=[]}getServicesVersion(){return m$}createLanguageServiceShim(e){try{this.documentRegistry===void 0&&(this.documentRegistry=VY(e.useCaseSensitiveFileNames&&e.useCaseSensitiveFileNames(),e.getCurrentDirectory()));let t=new T$(e),r=Bye(t,this.documentRegistry,!1);return new $ye(this,e,r)}catch(t){throw y5(e,t),t}}createClassifierShim(e){try{return new Qye(this,e)}catch(t){throw y5(e,t),t}}createCoreServicesShim(e){try{let t=new S$(e);return new Zye(this,e,t)}catch(t){throw y5(e,t),t}}close(){Om(this._shims),this.documentRegistry=void 0}registerShim(e){this._shims.push(e)}unregisterShim(e){for(let t=0;t<this._shims.length;t++)if(this._shims[t]===e){delete this._shims[t];return}throw new Error(\"Invalid operation\")}}}});function v3e(e,t){if(e.isDeclarationFile)return;let r=Vi(e,t),i=e.getLineAndCharacterOfPosition(t).line;if(e.getLineAndCharacterOfPosition(r.getStart(e)).line>i){let v=el(r.pos,e);if(!v||e.getLineAndCharacterOfPosition(v.getEnd()).line!==i)return;r=v}if(r.flags&16777216)return;return m(r);function o(v,S){let x=WS(v)?fA(v.modifiers,du):void 0,A=x?xo(e.text,x.end):v.getStart(e);return Wc(A,(S||v).getEnd())}function s(v,S){return o(v,n1(S,S.parent,e))}function l(v,S){return v&&i===e.getLineAndCharacterOfPosition(v.getStart(e)).line?m(v):m(S)}function f(v,S,x){if(v){let A=v.indexOf(S);if(A>=0){let w=A,C=A+1;for(;w>0&&x(v[w-1]);)w--;for(;C<v.length&&x(v[C]);)C++;return Wc(xo(e.text,v[w].pos),v[C-1].end)}}return o(S)}function d(v){return m(el(v.pos,e))}function g(v){return m(n1(v,v.parent,e))}function m(v){if(v){let{parent:X}=v;switch(v.kind){case 240:return x(v.declarationList.declarations[0]);case 257:case 169:case 168:return x(v);case 166:return w(v);case 259:case 171:case 170:case 174:case 175:case 173:case 215:case 216:return P(v);case 238:if(ET(v))return F(v);case 265:return B(v);case 295:return B(v.block);case 241:return o(v.expression);case 250:return o(v.getChildAt(0),v.expression);case 244:return s(v,v.expression);case 243:return m(v.statement);case 256:return o(v.getChildAt(0));case 242:return s(v,v.expression);case 253:return m(v.statement);case 249:case 248:return o(v.getChildAt(0),v.label);case 245:return W(v);case 246:return s(v,v.expression);case 247:return q(v);case 252:return s(v,v.expression);case 292:case 293:return m(v.statements[0]);case 255:return B(v.tryBlock);case 254:return o(v,v.expression);case 274:return o(v,v.expression);case 268:return o(v,v.moduleReference);case 269:return o(v,v.moduleSpecifier);case 275:return o(v,v.moduleSpecifier);case 264:if(Gh(v)!==1)return;case 260:case 263:case 302:case 205:return o(v);case 251:return m(v.statement);case 167:return f(X.modifiers,v,du);case 203:case 204:return Y(v);case 261:case 262:return;case 26:case 1:return l(el(v.pos,e));case 27:return d(v);case 18:return ie(v);case 19:return Q(v);case 23:return fe(v);case 20:return Z(v);case 21:return U(v);case 58:return re(v);case 31:case 29:return le(v);case 115:return _e(v);case 91:case 83:case 96:return g(v);case 162:return ge(v);default:if(qg(v))return R(v);if((v.kind===79||v.kind===227||v.kind===299||v.kind===300)&&qg(X))return o(v);if(v.kind===223){let{left:Ve,operatorToken:we}=v;if(qg(Ve))return R(Ve);if(we.kind===63&&qg(v.parent))return o(v);if(we.kind===27)return m(Ve)}if(Dh(v))switch(X.kind){case 243:return d(v);case 167:return m(v.parent);case 245:case 247:return o(v);case 223:if(v.parent.operatorToken.kind===27)return o(v);break;case 216:if(v.parent.body===v)return o(v);break}switch(v.parent.kind){case 299:if(v.parent.name===v&&!qg(v.parent.parent))return m(v.parent.initializer);break;case 213:if(v.parent.type===v)return g(v.parent.type);break;case 257:case 166:{let{initializer:Ve,type:we}=v.parent;if(Ve===v||we===v||Mg(v.kind))return d(v);break}case 223:{let{left:Ve}=v.parent;if(qg(Ve)&&v!==Ve)return d(v);break}default:if(Ia(v.parent)&&v.parent.type===v)return d(v)}return m(v.parent)}}function S(X){return pu(X.parent)&&X.parent.declarations[0]===X?o(el(X.pos,e,X.parent),X):o(X)}function x(X){if(X.parent.parent.kind===246)return m(X.parent.parent);let Ve=X.parent;if(La(X.name))return Y(X.name);if(hT(X)&&X.initializer||Mr(X,1)||Ve.parent.kind===247)return S(X);if(pu(X.parent)&&X.parent.declarations[0]!==X)return m(el(X.pos,e,X.parent))}function A(X){return!!X.initializer||X.dotDotDotToken!==void 0||Mr(X,12)}function w(X){if(La(X.name))return Y(X.name);if(A(X))return o(X);{let Ve=X.parent,we=Ve.parameters.indexOf(X);return L.assert(we!==-1),we!==0?w(Ve.parameters[we-1]):m(Ve.body)}}function C(X){return Mr(X,1)||X.parent.kind===260&&X.kind!==173}function P(X){if(!!X.body)return C(X)?o(X):m(X.body)}function F(X){let Ve=X.statements.length?X.statements[0]:X.getLastToken();return C(X.parent)?l(X.parent,Ve):m(Ve)}function B(X){switch(X.parent.kind){case 264:if(Gh(X.parent)!==1)return;case 244:case 242:case 246:return l(X.parent,X.statements[0]);case 245:case 247:return l(el(X.pos,e,X.parent),X.statements[0])}return m(X.statements[0])}function q(X){if(X.initializer.kind===258){let Ve=X.initializer;if(Ve.declarations.length>0)return m(Ve.declarations[0])}else return m(X.initializer)}function W(X){if(X.initializer)return q(X);if(X.condition)return o(X.condition);if(X.incrementor)return o(X.incrementor)}function Y(X){let Ve=mn(X.elements,we=>we.kind!==229?we:void 0);return Ve?m(Ve):X.parent.kind===205?o(X.parent):S(X.parent)}function R(X){L.assert(X.kind!==204&&X.kind!==203);let Ve=X.kind===206?X.elements:X.properties,we=mn(Ve,ke=>ke.kind!==229?ke:void 0);return we?m(we):o(X.parent.kind===223?X.parent:X)}function ie(X){switch(X.parent.kind){case 263:let Ve=X.parent;return l(el(X.pos,e,X.parent),Ve.members.length?Ve.members[0]:Ve.getLastToken(e));case 260:let we=X.parent;return l(el(X.pos,e,X.parent),we.members.length?we.members[0]:we.getLastToken(e));case 266:return l(X.parent.parent,X.parent.clauses[0])}return m(X.parent)}function Q(X){switch(X.parent.kind){case 265:if(Gh(X.parent.parent)!==1)return;case 263:case 260:return o(X);case 238:if(ET(X.parent))return o(X);case 295:return m(Os(X.parent.statements));case 266:let Ve=X.parent,we=Os(Ve.clauses);return we?m(Os(we.statements)):void 0;case 203:let ke=X.parent;return m(Os(ke.elements)||ke);default:if(qg(X.parent)){let Pe=X.parent;return o(Os(Pe.properties)||Pe)}return m(X.parent)}}function fe(X){switch(X.parent.kind){case 204:let Ve=X.parent;return o(Os(Ve.elements)||Ve);default:if(qg(X.parent)){let we=X.parent;return o(Os(we.elements)||we)}return m(X.parent)}}function Z(X){return X.parent.kind===243||X.parent.kind===210||X.parent.kind===211?d(X):X.parent.kind===214?g(X):m(X.parent)}function U(X){switch(X.parent.kind){case 215:case 259:case 216:case 171:case 170:case 174:case 175:case 173:case 244:case 243:case 245:case 247:case 210:case 211:case 214:return d(X);default:return m(X.parent)}}function re(X){return Ia(X.parent)||X.parent.kind===299||X.parent.kind===166?d(X):m(X.parent)}function le(X){return X.parent.kind===213?g(X):m(X.parent)}function _e(X){return X.parent.kind===243?s(X,X.parent.expression):m(X.parent)}function ge(X){return X.parent.kind===247?g(X):m(X.parent)}}}var b3e=gt({\"src/services/breakpoints.ts\"(){\"use strict\";Fr()}}),x$={};Mo(x$,{spanInSourceFileAtLocation:()=>v3e});var E3e=gt({\"src/services/_namespaces/ts.BreakpointResolver.ts\"(){\"use strict\";b3e()}});function T3e(e){return(ms(e)||_u(e))&&zl(e)}function mk(e){return(ms(e)||xs(e)||_u(e))&&wi(e.parent)&&e===e.parent.initializer&&Re(e.parent.name)&&!!(F_(e.parent)&2)}function tve(e){return Li(e)||Tc(e)||Jc(e)||ms(e)||sl(e)||_u(e)||oc(e)||Nc(e)||zm(e)||__(e)||Tf(e)}function rx(e){return Li(e)||Tc(e)&&Re(e.name)||Jc(e)||sl(e)||oc(e)||Nc(e)||zm(e)||__(e)||Tf(e)||T3e(e)||mk(e)}function nve(e){return Li(e)?e:zl(e)?e.name:mk(e)?e.parent.name:L.checkDefined(e.modifiers&&wr(e.modifiers,rve))}function rve(e){return e.kind===88}function ive(e,t){let r=nve(t);return r&&e.getSymbolAtLocation(r)}function S3e(e,t){if(Li(t))return{text:t.fileName,pos:0,end:0};if((Jc(t)||sl(t))&&!zl(t)){let o=t.modifiers&&wr(t.modifiers,rve);if(o)return{text:\"default\",pos:o.getStart(),end:o.getEnd()}}if(oc(t)){let o=t.getSourceFile(),s=xo(o.text,yp(t).pos),l=s+6,f=e.getTypeChecker(),d=f.getSymbolAtLocation(t.parent);return{text:`${d?`${f.symbolToString(d,t.parent)} `:\"\"}static {}`,pos:s,end:l}}let r=mk(t)?t.parent.name:L.checkDefined(sa(t),\"Expected call hierarchy item to have a name\"),i=Re(r)?vr(r):gf(r)?r.text:ts(r)&&gf(r.expression)?r.expression.text:void 0;if(i===void 0){let o=e.getTypeChecker(),s=o.getSymbolAtLocation(r);s&&(i=o.symbolToString(s,t))}if(i===void 0){let o=_N();i=xI(s=>o.writeNode(4,t,t.getSourceFile(),s))}return{text:i,pos:r.getStart(),end:r.getEnd()}}function x3e(e){var t,r;if(mk(e))return Tp(e.parent.parent.parent.parent)&&Re(e.parent.parent.parent.parent.parent.name)?e.parent.parent.parent.parent.parent.name.getText():void 0;switch(e.kind){case 174:case 175:case 171:return e.parent.kind===207?(t=xj(e.parent))==null?void 0:t.getText():(r=sa(e.parent))==null?void 0:r.getText();case 259:case 260:case 264:if(Tp(e.parent)&&Re(e.parent.parent.name))return e.parent.parent.name.getText()}}function ave(e,t){if(t.body)return t;if(Ec(t))return Vm(t.parent);if(Jc(t)||Nc(t)){let r=ive(e,t);return r&&r.valueDeclaration&&Ds(r.valueDeclaration)&&r.valueDeclaration.body?r.valueDeclaration:void 0}return t}function ove(e,t){let r=ive(e,t),i;if(r&&r.declarations){let o=HD(r.declarations),s=on(r.declarations,d=>({file:d.getSourceFile().fileName,pos:d.pos}));o.sort((d,g)=>su(s[d].file,s[g].file)||s[d].pos-s[g].pos);let l=on(o,d=>r.declarations[d]),f;for(let d of l)rx(d)&&((!f||f.parent!==d.parent||f.end!==d.pos)&&(i=Sn(i,d)),f=d)}return i}function E5(e,t){var r,i,o;return oc(t)?t:Ds(t)?(i=(r=ave(e,t))!=null?r:ove(e,t))!=null?i:t:(o=ove(e,t))!=null?o:t}function sve(e,t){let r=e.getTypeChecker(),i=!1;for(;;){if(rx(t))return E5(r,t);if(tve(t)){let o=jn(t,rx);return o&&E5(r,o)}if(Rh(t)){if(rx(t.parent))return E5(r,t.parent);if(tve(t.parent)){let o=jn(t.parent,rx);return o&&E5(r,o)}return wi(t.parent)&&t.parent.initializer&&mk(t.parent.initializer)?t.parent.initializer:void 0}if(Ec(t))return rx(t.parent)?t.parent:void 0;if(t.kind===124&&oc(t.parent)){t=t.parent;continue}if(wi(t)&&t.initializer&&mk(t.initializer))return t.initializer;if(!i){let o=r.getSymbolAtLocation(t);if(o&&(o.flags&2097152&&(o=r.getAliasedSymbol(o)),o.valueDeclaration)){i=!0,t=o.valueDeclaration;continue}}return}}function A$(e,t){let r=t.getSourceFile(),i=S3e(e,t),o=x3e(t),s=aE(t),l=ik(t),f=Wc(xo(r.text,t.getFullStart(),!1,!0),t.getEnd()),d=Wc(i.pos,i.end);return{file:r.fileName,kind:s,kindModifiers:l,name:i.text,containerName:o,span:f,selectionSpan:d}}function A3e(e){return e!==void 0}function C3e(e){if(e.kind===js.EntryKind.Node){let{node:t}=e;if(PX(t,!0,!0)||phe(t,!0,!0)||mhe(t,!0,!0)||hhe(t,!0,!0)||H2(t)||BX(t)){let r=t.getSourceFile();return{declaration:jn(t,rx)||r,range:nY(t,r)}}}}function cve(e){return zo(e.declaration)}function I3e(e,t){return{from:e,fromSpans:t}}function L3e(e,t){return I3e(A$(e,t[0].declaration),on(t,r=>lv(r.range)))}function k3e(e,t,r){if(Li(t)||Tc(t)||oc(t))return[];let i=nve(t),o=Pr(js.findReferenceOrRenameEntries(e,r,e.getSourceFiles(),i,0,{use:js.FindReferencesUse.References},C3e),A3e);return o?$C(o,cve,s=>L3e(e,s)):[]}function D3e(e,t){function r(o){let s=MT(o)?o.tag:Au(o)?o.tagName:Us(o)||oc(o)?o:o.expression,l=sve(e,s);if(l){let f=nY(s,o.getSourceFile());if(ba(l))for(let d of l)t.push({declaration:d,range:f});else t.push({declaration:l,range:f})}}function i(o){if(!!o&&!(o.flags&16777216)){if(rx(o)){if(Yr(o))for(let s of o.members)s.name&&ts(s.name)&&i(s.name.expression);return}switch(o.kind){case 79:case 268:case 269:case 275:case 261:case 262:return;case 172:r(o);return;case 213:case 231:i(o.expression);return;case 257:case 166:i(o.name),i(o.initializer);return;case 210:r(o),i(o.expression),mn(o.arguments,i);return;case 211:r(o),i(o.expression),mn(o.arguments,i);return;case 212:r(o),i(o.tag),i(o.template);return;case 283:case 282:r(o),i(o.tagName),i(o.attributes);return;case 167:r(o),i(o.expression);return;case 208:case 209:r(o),pa(o,i);break;case 235:i(o.expression);return}Gm(o)||pa(o,i)}}return i}function w3e(e,t){mn(e.statements,t)}function R3e(e,t){!Mr(e,2)&&e.body&&Tp(e.body)&&mn(e.body.statements,t)}function O3e(e,t,r){let i=ave(e,t);i&&(mn(i.parameters,r),r(i.body))}function N3e(e,t){t(e.body)}function P3e(e,t){mn(e.modifiers,t);let r=P0(e);r&&t(r.expression);for(let i of e.members)h_(i)&&mn(i.modifiers,t),Na(i)?t(i.initializer):Ec(i)&&i.body?(mn(i.parameters,t),t(i.body)):oc(i)&&t(i)}function M3e(e,t){let r=[],i=D3e(e,r);switch(t.kind){case 308:w3e(t,i);break;case 264:R3e(t,i);break;case 259:case 215:case 216:case 171:case 174:case 175:O3e(e.getTypeChecker(),t,i);break;case 260:case 228:P3e(t,i);break;case 172:N3e(t,i);break;default:L.assertNever(t)}return r}function F3e(e,t){return{to:e,fromSpans:t}}function G3e(e,t){return F3e(A$(e,t[0].declaration),on(t,r=>lv(r.range)))}function B3e(e,t){return t.flags&16777216||zm(t)?[]:$C(M3e(e,t),cve,r=>G3e(e,r))}var U3e=gt({\"src/services/callHierarchy.ts\"(){\"use strict\";Fr()}}),ix={};Mo(ix,{createCallHierarchyItem:()=>A$,getIncomingCalls:()=>k3e,getOutgoingCalls:()=>B3e,resolveCallHierarchyDeclaration:()=>sve});var V3e=gt({\"src/services/_namespaces/ts.CallHierarchy.ts\"(){\"use strict\";U3e()}});function j3e(e,t,r,i){let o=lve(e,t,r,i);L.assert(o.spans.length%3===0);let s=o.spans,l=[];for(let f=0;f<s.length;f+=3)l.push({textSpan:il(s[f],s[f+1]),classificationType:s[f+2]});return l}function lve(e,t,r,i){return{spans:H3e(e,r,i,t),endOfLineState:0}}function H3e(e,t,r,i){let o=[];return e&&t&&W3e(e,t,r,(l,f,d)=>{o.push(l.getStart(t),l.getWidth(t),(f+1<<8)+d)},i),o}function W3e(e,t,r,i,o){let s=e.getTypeChecker(),l=!1;function f(d){switch(d.kind){case 264:case 260:case 261:case 259:case 228:case 215:case 216:o.throwIfCancellationRequested()}if(!d||!$8(r,d.pos,d.getFullWidth())||d.getFullWidth()===0)return;let g=l;if((Hg(d)||GS(d))&&(l=!0),CL(d)&&(l=!1),Re(d)&&!l&&!q3e(d)&&!lL(d.escapedText)){let m=s.getSymbolAtLocation(d);if(m){m.flags&2097152&&(m=s.getAliasedSymbol(m));let v=z3e(m,e1(d));if(v!==void 0){let S=0;d.parent&&(Wo(d.parent)||k$.get(d.parent.kind)===v)&&d.parent.name===d&&(S=1<<0),v===6&&dve(d)&&(v=9),v=J3e(s,d,v);let x=m.valueDeclaration;if(x){let A=wg(x),w=F_(x);A&32&&(S|=1<<1),A&512&&(S|=1<<2),v!==0&&v!==2&&(A&64||w&2||m.getFlags()&8)&&(S|=1<<3),(v===7||v===10)&&K3e(x,t)&&(S|=1<<5),e.isSourceFileDefaultLibrary(x.getSourceFile())&&(S|=1<<4)}else m.declarations&&m.declarations.some(A=>e.isSourceFileDefaultLibrary(A.getSourceFile()))&&(S|=1<<4);i(d,v,S)}}}pa(d,f),l=g}f(t)}function z3e(e,t){let r=e.getFlags();if(r&32)return 0;if(r&384)return 1;if(r&524288)return 5;if(r&64){if(t&2)return 2}else if(r&262144)return 4;let i=e.valueDeclaration||e.declarations&&e.declarations[0];return i&&Wo(i)&&(i=uve(i)),i&&k$.get(i.kind)}function J3e(e,t,r){if(r===7||r===9||r===6){let i=e.getTypeAtLocation(t);if(i){let o=s=>s(i)||i.isUnion()&&i.types.some(s);if(r!==6&&o(s=>s.getConstructSignatures().length>0))return 0;if(o(s=>s.getCallSignatures().length>0)&&!o(s=>s.getProperties().length>0)||X3e(t))return r===9?11:10}}return r}function K3e(e,t){return Wo(e)&&(e=uve(e)),wi(e)?(!Li(e.parent.parent.parent)||T2(e.parent))&&e.getSourceFile()===t:Jc(e)?!Li(e.parent)&&e.getSourceFile()===t:!1}function uve(e){for(;;)if(Wo(e.parent.parent))e=e.parent.parent;else return e.parent.parent}function q3e(e){let t=e.parent;return t&&(lm(t)||$u(t)||nv(t))}function X3e(e){for(;dve(e);)e=e.parent;return Pa(e.parent)&&e.parent.expression===e}function dve(e){return Yu(e.parent)&&e.parent.right===e||br(e.parent)&&e.parent.name===e}var C$,I$,L$,k$,Y3e=gt({\"src/services/classifier2020.ts\"(){\"use strict\";Fr(),C$=(e=>(e[e.typeOffset=8]=\"typeOffset\",e[e.modifierMask=255]=\"modifierMask\",e))(C$||{}),I$=(e=>(e[e.class=0]=\"class\",e[e.enum=1]=\"enum\",e[e.interface=2]=\"interface\",e[e.namespace=3]=\"namespace\",e[e.typeParameter=4]=\"typeParameter\",e[e.type=5]=\"type\",e[e.parameter=6]=\"parameter\",e[e.variable=7]=\"variable\",e[e.enumMember=8]=\"enumMember\",e[e.property=9]=\"property\",e[e.function=10]=\"function\",e[e.member=11]=\"member\",e))(I$||{}),L$=(e=>(e[e.declaration=0]=\"declaration\",e[e.static=1]=\"static\",e[e.async=2]=\"async\",e[e.readonly=3]=\"readonly\",e[e.defaultLibrary=4]=\"defaultLibrary\",e[e.local=5]=\"local\",e))(L$||{}),k$=new Map([[257,7],[166,6],[169,9],[264,3],[263,1],[302,8],[260,0],[171,11],[259,10],[215,10],[170,11],[174,9],[175,9],[168,9],[261,2],[262,5],[165,4],[299,9],[300,9]])}}),fve={};Mo(fve,{TokenEncodingConsts:()=>C$,TokenModifier:()=>L$,TokenType:()=>I$,getEncodedSemanticClassifications:()=>lve,getSemanticClassifications:()=>j3e});var $3e=gt({\"src/services/_namespaces/ts.classifier.v2020.ts\"(){\"use strict\";Y3e()}}),T5={};Mo(T5,{v2020:()=>fve});var Q3e=gt({\"src/services/_namespaces/ts.classifier.ts\"(){\"use strict\";$3e()}});function J_(e,t,r){return w$(e,ex(r),t,void 0,void 0)}function Ma(e,t,r,i,o,s){return w$(e,ex(r),t,i,ex(o),s)}function D$(e,t,r,i,o,s){return w$(e,ex(r),t,i,o&&ex(o),s)}function w$(e,t,r,i,o,s){return{fixName:e,description:t,changes:r,fixId:i,fixAllDescription:o,commands:s?[s]:void 0}}function za(e){for(let t of e.errorCodes)S5.add(String(t),e);if(e.fixIds)for(let t of e.fixIds)L.assert(!x5.has(t)),x5.set(t,e)}function Z3e(){return lo(S5.keys())}function eFe(e,t){let{errorCodes:r}=e,i=0;for(let s of t)if(ya(r,s.code)&&i++,i>1)break;let o=i<2;return({fixId:s,fixAllDescription:l,...f})=>o?f:{...f,fixId:s,fixAllDescription:l}}function tFe(e){let t=pve(e),r=S5.get(String(e.errorCode));return Uo(r,i=>on(i.getCodeActions(e),eFe(i,t)))}function nFe(e){return x5.get(Ga(e.fixId,Ta)).getAllCodeActions(e)}function ax(e,t){return{changes:e,commands:t}}function _ve(e,t){return{fileName:e,textChanges:t}}function ns(e,t,r){let i=[],o=nr.ChangeTracker.with(e,s=>ox(e,t,l=>r(s,l,i)));return ax(o,i.length===0?void 0:i)}function ox(e,t,r){for(let i of pve(e))ya(t,i.code)&&r(i)}function pve({program:e,sourceFile:t,cancellationToken:r}){return[...e.getSemanticDiagnostics(t,r),...e.getSyntacticDiagnostics(t,r),...$Y(t,e,r)]}var S5,x5,rFe=gt({\"src/services/codeFixProvider.ts\"(){\"use strict\";Fr(),S5=Of(),x5=new Map}});function mve(e,t,r){let i=_O(r)?D.createAsExpression(r.expression,D.createKeywordTypeNode(157)):D.createTypeAssertion(D.createKeywordTypeNode(157),r.expression);e.replaceNode(t,r.expression,i)}function hve(e,t){if(!Yn(e))return jn(Vi(e,t),r=>_O(r)||Fue(r))}var A5,R$,iFe=gt({\"src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts\"(){\"use strict\";Fr(),Qa(),A5=\"addConvertToUnknownForNonOverlappingTypes\",R$=[_.Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the_other_If_this_was_intentional_convert_the_expression_to_unknown_first.code],za({errorCodes:R$,getCodeActions:function(t){let r=hve(t.sourceFile,t.span.start);if(r===void 0)return;let i=nr.ChangeTracker.with(t,o=>mve(o,t.sourceFile,r));return[Ma(A5,i,_.Add_unknown_conversion_for_non_overlapping_types,A5,_.Add_unknown_to_all_conversions_of_non_overlapping_types)]},fixIds:[A5],getAllCodeActions:e=>ns(e,R$,(t,r)=>{let i=hve(r.file,r.start);i&&mve(t,r.file,i)})})}}),aFe=gt({\"src/services/codefixes/addEmptyExportDeclaration.ts\"(){\"use strict\";Fr(),Qa(),za({errorCodes:[_.await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module.code,_.for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module.code],getCodeActions:function(t){let{sourceFile:r}=t,i=nr.ChangeTracker.with(t,o=>{let s=D.createExportDeclaration(void 0,!1,D.createNamedExports([]),void 0);o.insertNodeAtEndOfScope(r,r,s)});return[J_(\"addEmptyExportDeclaration\",i,_.Add_export_to_make_this_file_into_a_module)]}})}});function gve(e,t,r,i){let o=r(s=>oFe(s,e.sourceFile,t,i));return Ma(C5,o,_.Add_async_modifier_to_containing_function,C5,_.Add_all_missing_async_modifiers)}function oFe(e,t,r,i){if(i&&i.has(zo(r)))return;i?.add(zo(r));let o=D.updateModifiers(cc(r,!0),D.createNodeArray(D.createModifiersFromModifierFlags(Yy(r)|512)));e.replaceNode(t,r,o)}function yve(e,t){if(!t)return;let r=Vi(e,t.start);return jn(r,o=>o.getStart(e)<t.start||o.getEnd()>wl(t)?\"quit\":(xs(o)||Nc(o)||ms(o)||Jc(o))&&K2(t,Du(o,e)))}function sFe(e,t){return({start:r,length:i,relatedInformation:o,code:s})=>Cg(r)&&Cg(i)&&K2({start:r,length:i},e)&&s===t&&!!o&&vt(o,l=>l.code===_.Did_you_mean_to_mark_this_function_as_async.code)}var C5,O$,cFe=gt({\"src/services/codefixes/addMissingAsync.ts\"(){\"use strict\";Fr(),Qa(),C5=\"addMissingAsync\",O$=[_.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code,_.Type_0_is_not_assignable_to_type_1.code,_.Type_0_is_not_comparable_to_type_1.code],za({fixIds:[C5],errorCodes:O$,getCodeActions:function(t){let{sourceFile:r,errorCode:i,cancellationToken:o,program:s,span:l}=t,f=wr(s.getTypeChecker().getDiagnostics(r,o),sFe(l,i)),d=f&&f.relatedInformation&&wr(f.relatedInformation,v=>v.code===_.Did_you_mean_to_mark_this_function_as_async.code),g=yve(r,d);return g?[gve(t,g,v=>nr.ChangeTracker.with(t,v))]:void 0},getAllCodeActions:e=>{let{sourceFile:t}=e,r=new Set;return ns(e,O$,(i,o)=>{let s=o.relatedInformation&&wr(o.relatedInformation,d=>d.code===_.Did_you_mean_to_mark_this_function_as_async.code),l=yve(t,s);return l?gve(e,l,d=>(d(i),[]),r):void 0})}})}});function vve(e,t,r,i,o){let s=IY(e,r);return s&&lFe(e,t,r,i,o)&&Tve(s)?s:void 0}function bve(e,t,r,i,o,s){let{sourceFile:l,program:f,cancellationToken:d}=e,g=uFe(t,l,d,f,i);if(g){let m=o(v=>{mn(g.initializers,({expression:S})=>N$(v,r,l,i,S,s)),s&&g.needsSecondPassForFixAll&&N$(v,r,l,i,t,s)});return J_(\"addMissingAwaitToInitializer\",m,g.initializers.length===1?[_.Add_await_to_initializer_for_0,g.initializers[0].declarationSymbol.name]:_.Add_await_to_initializers)}}function Eve(e,t,r,i,o,s){let l=o(f=>N$(f,r,e.sourceFile,i,t,s));return Ma(I5,l,_.Add_await,I5,_.Fix_all_expressions_possibly_missing_await)}function lFe(e,t,r,i,o){let l=o.getTypeChecker().getDiagnostics(e,i);return vt(l,({start:f,length:d,relatedInformation:g,code:m})=>Cg(f)&&Cg(d)&&K2({start:f,length:d},r)&&m===t&&!!g&&vt(g,v=>v.code===_.Did_you_forget_to_use_await.code))}function uFe(e,t,r,i,o){let s=dFe(e,o);if(!s)return;let l=s.isCompleteFix,f;for(let d of s.identifiers){let g=o.getSymbolAtLocation(d);if(!g)continue;let m=zr(g.valueDeclaration,wi),v=m&&zr(m.name,Re),S=cb(m,240);if(!m||!S||m.type||!m.initializer||S.getSourceFile()!==t||Mr(S,1)||!v||!Tve(m.initializer)){l=!1;continue}let x=i.getSemanticDiagnostics(t,r);if(js.Core.eachSymbolReferenceInFile(v,o,t,w=>d!==w&&!fFe(w,x,t,o))){l=!1;continue}(f||(f=[])).push({expression:m.initializer,declarationSymbol:g})}return f&&{initializers:f,needsSecondPassForFixAll:!l}}function dFe(e,t){if(br(e.parent)&&Re(e.parent.expression))return{identifiers:[e.parent.expression],isCompleteFix:!0};if(Re(e))return{identifiers:[e],isCompleteFix:!0};if(ar(e)){let r,i=!0;for(let o of[e.left,e.right]){let s=t.getTypeAtLocation(o);if(t.getPromisedTypeOfPromise(s)){if(!Re(o)){i=!1;continue}(r||(r=[])).push(o)}}return r&&{identifiers:r,isCompleteFix:i}}}function fFe(e,t,r,i){let o=br(e.parent)?e.parent.name:ar(e.parent)?e.parent:e,s=wr(t,l=>l.start===o.getStart(r)&&l.start+l.length===o.getEnd());return s&&ya(L5,s.code)||i.getTypeAtLocation(o).flags&1}function Tve(e){return e.kind&32768||!!jn(e,t=>t.parent&&xs(t.parent)&&t.parent.body===t||Va(t)&&(t.parent.kind===259||t.parent.kind===215||t.parent.kind===216||t.parent.kind===171))}function N$(e,t,r,i,o,s){if(pO(o.parent)&&!o.parent.awaitModifier){let l=i.getTypeAtLocation(o),f=i.getAsyncIterableType();if(f&&i.isTypeAssignableTo(l,f)){let d=o.parent;e.replaceNode(r,d,D.updateForOfStatement(d,D.createToken(133),d.initializer,d.expression,d.statement));return}}if(ar(o))for(let l of[o.left,o.right]){if(s&&Re(l)){let g=i.getSymbolAtLocation(l);if(g&&s.has($a(g)))continue}let f=i.getTypeAtLocation(l),d=i.getPromisedTypeOfPromise(f)?D.createAwaitExpression(l):l;e.replaceNode(r,l,d)}else if(t===P$&&br(o.parent)){if(s&&Re(o.parent.expression)){let l=i.getSymbolAtLocation(o.parent.expression);if(l&&s.has($a(l)))return}e.replaceNode(r,o.parent.expression,D.createParenthesizedExpression(D.createAwaitExpression(o.parent.expression))),Sve(e,o.parent.expression,r)}else if(ya(M$,t)&&Ih(o.parent)){if(s&&Re(o)){let l=i.getSymbolAtLocation(o);if(l&&s.has($a(l)))return}e.replaceNode(r,o,D.createParenthesizedExpression(D.createAwaitExpression(o))),Sve(e,o,r)}else{if(s&&wi(o.parent)&&Re(o.parent.name)){let l=i.getSymbolAtLocation(o.parent.name);if(l&&!_0(s,$a(l)))return}e.replaceNode(r,o,D.createAwaitExpression(o))}}function Sve(e,t,r){let i=el(t.pos,r);i&&N7(i.end,i.parent,r)&&e.insertText(r,t.getStart(r),\";\")}var I5,P$,M$,L5,_Fe=gt({\"src/services/codefixes/addMissingAwait.ts\"(){\"use strict\";Fr(),Qa(),I5=\"addMissingAwait\",P$=_.Property_0_does_not_exist_on_type_1.code,M$=[_.This_expression_is_not_callable.code,_.This_expression_is_not_constructable.code],L5=[_.An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type.code,_.The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type.code,_.The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type.code,_.Operator_0_cannot_be_applied_to_type_1.code,_.Operator_0_cannot_be_applied_to_types_1_and_2.code,_.This_comparison_appears_to_be_unintentional_because_the_types_0_and_1_have_no_overlap.code,_.This_condition_will_always_return_true_since_this_0_is_always_defined.code,_.Type_0_is_not_an_array_type.code,_.Type_0_is_not_an_array_type_or_a_string_type.code,_.Type_0_can_only_be_iterated_through_when_using_the_downlevelIteration_flag_or_with_a_target_of_es2015_or_higher.code,_.Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator.code,_.Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator.code,_.Type_0_must_have_a_Symbol_iterator_method_that_returns_an_iterator.code,_.Type_0_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator.code,_.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code,P$,...M$],za({fixIds:[I5],errorCodes:L5,getCodeActions:function(t){let{sourceFile:r,errorCode:i,span:o,cancellationToken:s,program:l}=t,f=vve(r,i,o,s,l);if(!f)return;let d=t.program.getTypeChecker(),g=m=>nr.ChangeTracker.with(t,m);return zD([bve(t,f,i,d,g),Eve(t,f,i,d,g)])},getAllCodeActions:e=>{let{sourceFile:t,program:r,cancellationToken:i}=e,o=e.program.getTypeChecker(),s=new Set;return ns(e,L5,(l,f)=>{let d=vve(t,f.code,f,i,r);if(!d)return;let g=m=>(m(l),[]);return bve(e,d,f.code,o,g,s)||Eve(e,d,f.code,o,g,s)})}})}});function xve(e,t,r,i,o){let s=Vi(t,r),l=jn(s,g=>IA(g.parent)?g.parent.initializer===g:pFe(g)?!1:\"quit\");if(l)return k5(e,l,t,o);let f=s.parent;if(ar(f)&&f.operatorToken.kind===63&&Ol(f.parent))return k5(e,s,t,o);if(fu(f)){let g=i.getTypeChecker();return Ji(f.elements,m=>mFe(m,g))?k5(e,f,t,o):void 0}let d=jn(s,g=>Ol(g.parent)?!0:hFe(g)?!1:\"quit\");if(d){let g=i.getTypeChecker();return Ave(d,g)?k5(e,d,t,o):void 0}}function k5(e,t,r,i){(!i||_0(i,t))&&e.insertModifierBefore(r,85,t)}function pFe(e){switch(e.kind){case 79:case 206:case 207:case 299:case 300:return!0;default:return!1}}function mFe(e,t){let r=Re(e)?e:Iu(e,!0)&&Re(e.left)?e.left:void 0;return!!r&&!t.getSymbolAtLocation(r)}function hFe(e){switch(e.kind){case 79:case 223:case 27:return!0;default:return!1}}function Ave(e,t){return ar(e)?e.operatorToken.kind===27?Ji([e.left,e.right],r=>Ave(r,t)):e.operatorToken.kind===63&&Re(e.left)&&!t.getSymbolAtLocation(e.left):!1}var D5,F$,gFe=gt({\"src/services/codefixes/addMissingConst.ts\"(){\"use strict\";Fr(),Qa(),D5=\"addMissingConst\",F$=[_.Cannot_find_name_0.code,_.No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer.code],za({errorCodes:F$,getCodeActions:function(t){let r=nr.ChangeTracker.with(t,i=>xve(i,t.sourceFile,t.span.start,t.program));if(r.length>0)return[Ma(D5,r,_.Add_const_to_unresolved_variable,D5,_.Add_const_to_all_unresolved_variables)]},fixIds:[D5],getAllCodeActions:e=>{let t=new Set;return ns(e,F$,(r,i)=>xve(r,i.file,i.start,e.program,t))}})}});function Cve(e,t,r,i){let o=Vi(t,r);if(!Re(o))return;let s=o.parent;s.kind===169&&(!i||_0(i,s))&&e.insertModifierBefore(t,136,s)}var w5,G$,yFe=gt({\"src/services/codefixes/addMissingDeclareProperty.ts\"(){\"use strict\";Fr(),Qa(),w5=\"addMissingDeclareProperty\",G$=[_.Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_add_a_declare_modifier_or_remove_the_redundant_declaration.code],za({errorCodes:G$,getCodeActions:function(t){let r=nr.ChangeTracker.with(t,i=>Cve(i,t.sourceFile,t.span.start));if(r.length>0)return[Ma(w5,r,_.Prefix_with_declare,w5,_.Prefix_all_incorrect_property_declarations_with_declare)]},fixIds:[w5],getAllCodeActions:e=>{let t=new Set;return ns(e,G$,(r,i)=>Cve(r,i.file,i.start,t))}})}});function Ive(e,t,r){let i=Vi(t,r),o=jn(i,du);L.assert(!!o,\"Expected position to be owned by a decorator.\");let s=D.createCallExpression(o.expression,void 0,void 0);e.replaceNode(t,o.expression,s)}var R5,B$,vFe=gt({\"src/services/codefixes/addMissingInvocationForDecorator.ts\"(){\"use strict\";Fr(),Qa(),R5=\"addMissingInvocationForDecorator\",B$=[_._0_accepts_too_few_arguments_to_be_used_as_a_decorator_here_Did_you_mean_to_call_it_first_and_write_0.code],za({errorCodes:B$,getCodeActions:function(t){let r=nr.ChangeTracker.with(t,i=>Ive(i,t.sourceFile,t.span.start));return[Ma(R5,r,_.Call_decorator_expression,R5,_.Add_to_all_uncalled_decorators)]},fixIds:[R5],getAllCodeActions:e=>ns(e,B$,(t,r)=>Ive(t,r.file,r.start))})}});function Lve(e,t,r){let i=Vi(t,r),o=i.parent;if(!ha(o))return L.fail(\"Tried to add a parameter name to a non-parameter: \"+L.formatSyntaxKind(i.kind));let s=o.parent.parameters.indexOf(o);L.assert(!o.type,\"Tried to add a parameter name to a parameter that already had one.\"),L.assert(s>-1,\"Parameter not found in parent parameter list.\");let l=D.createTypeReferenceNode(o.name,void 0),f=D.createParameterDeclaration(o.modifiers,o.dotDotDotToken,\"arg\"+s,o.questionToken,o.dotDotDotToken?D.createArrayTypeNode(l):l,o.initializer);e.replaceNode(t,o,f)}var O5,U$,bFe=gt({\"src/services/codefixes/addNameToNamelessParameter.ts\"(){\"use strict\";Fr(),Qa(),O5=\"addNameToNamelessParameter\",U$=[_.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1.code],za({errorCodes:U$,getCodeActions:function(t){let r=nr.ChangeTracker.with(t,i=>Lve(i,t.sourceFile,t.span.start));return[Ma(O5,r,_.Add_parameter_name,O5,_.Add_names_to_all_parameters_without_names)]},fixIds:[O5],getAllCodeActions:e=>ns(e,U$,(t,r)=>Lve(t,r.file,r.start))})}});function EFe(e,t,r){var i,o;let s=kve(IY(e,t),r);if(!s)return Je;let{source:l,target:f}=s,d=TFe(l,f,r)?r.getTypeAtLocation(f.expression):r.getTypeAtLocation(f);return(o=(i=d.symbol)==null?void 0:i.declarations)!=null&&o.some(g=>Gn(g).fileName.match(/\\.d\\.ts$/))?Je:r.getExactOptionalProperties(d)}function TFe(e,t,r){return br(t)&&!!r.getExactOptionalProperties(r.getTypeAtLocation(t.expression)).length&&r.getTypeAtLocation(e)===r.getUndefinedType()}function kve(e,t){var r;if(e){if(ar(e.parent)&&e.parent.operatorToken.kind===63)return{source:e.parent.right,target:e.parent.left};if(wi(e.parent)&&e.parent.initializer)return{source:e.parent.initializer,target:e.parent.name};if(Pa(e.parent)){let i=t.getSymbolAtLocation(e.parent.expression);if(!i?.valueDeclaration||!rS(i.valueDeclaration.kind)||!ot(e))return;let o=e.parent.arguments.indexOf(e);if(o===-1)return;let s=i.valueDeclaration.parameters[o].name;if(Re(s))return{source:e,target:s}}else if(yl(e.parent)&&Re(e.parent.name)||Sf(e.parent)){let i=kve(e.parent.parent,t);if(!i)return;let o=t.getPropertyOfType(t.getTypeAtLocation(i.target),e.parent.name.text),s=(r=o?.declarations)==null?void 0:r[0];return s?{source:yl(e.parent)?e.parent.initializer:e.parent.name,target:s}:void 0}}else return}function SFe(e,t){for(let r of t){let i=r.valueDeclaration;if(i&&(Yd(i)||Na(i))&&i.type){let o=D.createUnionTypeNode([...i.type.kind===189?i.type.types:[i.type],D.createTypeReferenceNode(\"undefined\")]);e.replaceNode(i.getSourceFile(),i.type,o)}}}var V$,Dve,xFe=gt({\"src/services/codefixes/addOptionalPropertyUndefined.ts\"(){\"use strict\";Fr(),Qa(),V$=\"addOptionalPropertyUndefined\",Dve=[_.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target.code,_.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties.code,_.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties.code],za({errorCodes:Dve,getCodeActions(e){let t=e.program.getTypeChecker(),r=EFe(e.sourceFile,e.span,t);if(!r.length)return;let i=nr.ChangeTracker.with(e,o=>SFe(o,r));return[J_(V$,i,_.Add_undefined_to_optional_property_type)]},fixIds:[V$]})}});function wve(e,t){let r=Vi(e,t);return zr(ha(r.parent)?r.parent.parent:r.parent,Rve)}function Rve(e){return AFe(e)&&Ove(e)}function Ove(e){return Ds(e)?e.parameters.some(Ove)||!e.type&&!!Cw(e):!e.type&&!!Vy(e)}function Nve(e,t,r){if(Ds(r)&&(Cw(r)||r.parameters.some(i=>!!Vy(i)))){if(!r.typeParameters){let o=t4(r);o.length&&e.insertTypeParameters(t,r,o)}let i=xs(r)&&!Yo(r,20,t);i&&e.insertNodeBefore(t,Vo(r.parameters),D.createToken(20));for(let o of r.parameters)if(!o.type){let s=Vy(o);s&&e.tryInsertTypeAnnotation(t,o,$e(s,Sb,bi))}if(i&&e.insertNodeAfter(t,To(r.parameters),D.createToken(21)),!r.type){let o=Cw(r);o&&e.tryInsertTypeAnnotation(t,r,$e(o,Sb,bi))}}else{let i=L.checkDefined(Vy(r),\"A JSDocType for this declaration should exist\");L.assert(!r.type,\"The JSDocType decl should have a type\"),e.tryInsertTypeAnnotation(t,r,$e(i,Sb,bi))}}function AFe(e){return Ds(e)||e.kind===257||e.kind===168||e.kind===169}function Sb(e){switch(e.kind){case 315:case 316:return D.createTypeReferenceNode(\"any\",Je);case 319:return IFe(e);case 318:return Sb(e.type);case 317:return LFe(e);case 321:return kFe(e);case 320:return DFe(e);case 180:return RFe(e);case 325:return CFe(e);default:let t=xn(e,Sb,Bh);return Jn(t,1),t}}function CFe(e){let t=D.createTypeLiteralNode(on(e.jsDocPropertyTags,r=>D.createPropertySignature(void 0,Re(r.name)?r.name:r.name.right,JR(r)?D.createToken(57):void 0,r.typeExpression&&$e(r.typeExpression.type,Sb,bi)||D.createKeywordTypeNode(131))));return Jn(t,1),t}function IFe(e){return D.createUnionTypeNode([$e(e.type,Sb,bi),D.createTypeReferenceNode(\"undefined\",Je)])}function LFe(e){return D.createUnionTypeNode([$e(e.type,Sb,bi),D.createTypeReferenceNode(\"null\",Je)])}function kFe(e){return D.createArrayTypeNode($e(e.type,Sb,bi))}function DFe(e){var t;return D.createFunctionTypeNode(Je,e.parameters.map(wFe),(t=e.type)!=null?t:D.createKeywordTypeNode(131))}function wFe(e){let t=e.parent.parameters.indexOf(e),r=e.type.kind===321&&t===e.parent.parameters.length-1,i=e.name||(r?\"rest\":\"arg\"+t),o=r?D.createToken(25):e.dotDotDotToken;return D.createParameterDeclaration(e.modifiers,o,i,e.questionToken,$e(e.type,Sb,bi),e.initializer)}function RFe(e){let t=e.typeName,r=e.typeArguments;if(Re(e.typeName)){if(U6(e))return OFe(e);let i=e.typeName.text;switch(e.typeName.text){case\"String\":case\"Boolean\":case\"Object\":case\"Number\":i=i.toLowerCase();break;case\"array\":case\"date\":case\"promise\":i=i[0].toUpperCase()+i.slice(1);break}t=D.createIdentifier(i),(i===\"Array\"||i===\"Promise\")&&!e.typeArguments?r=D.createNodeArray([D.createTypeReferenceNode(\"any\",Je)]):r=On(e.typeArguments,Sb,bi)}return D.createTypeReferenceNode(t,r)}function OFe(e){let t=D.createParameterDeclaration(void 0,void 0,e.typeArguments[0].kind===148?\"n\":\"s\",void 0,D.createTypeReferenceNode(e.typeArguments[0].kind===148?\"number\":\"string\",[]),void 0),r=D.createTypeLiteralNode([D.createIndexSignature(void 0,[t],e.typeArguments[1])]);return Jn(r,1),r}var N5,j$,NFe=gt({\"src/services/codefixes/annotateWithTypeFromJSDoc.ts\"(){\"use strict\";Fr(),Qa(),N5=\"annotateWithTypeFromJSDoc\",j$=[_.JSDoc_types_may_be_moved_to_TypeScript_types.code],za({errorCodes:j$,getCodeActions(e){let t=wve(e.sourceFile,e.span.start);if(!t)return;let r=nr.ChangeTracker.with(e,i=>Nve(i,e.sourceFile,t));return[Ma(N5,r,_.Annotate_with_type_from_JSDoc,N5,_.Annotate_everything_with_types_from_JSDoc)]},fixIds:[N5],getAllCodeActions:e=>ns(e,j$,(t,r)=>{let i=wve(r.file,r.start);i&&Nve(t,r.file,i)})})}});function Pve(e,t,r,i,o,s){let l=i.getSymbolAtLocation(Vi(t,r));if(!l||!l.valueDeclaration||!(l.flags&19))return;let f=l.valueDeclaration;if(Jc(f)||ms(f))e.replaceNode(t,f,m(f));else if(wi(f)){let v=g(f);if(!v)return;let S=f.parent.parent;pu(f.parent)&&f.parent.declarations.length>1?(e.delete(t,f),e.insertNodeAfter(t,S,v)):e.replaceNode(t,S,v)}function d(v){let S=[];return v.exports&&v.exports.forEach(w=>{if(w.name===\"prototype\"&&w.declarations){let C=w.declarations[0];if(w.declarations.length===1&&br(C)&&ar(C.parent)&&C.parent.operatorToken.kind===63&&rs(C.parent.right)){let P=C.parent.right;A(P.symbol,void 0,S)}}else A(w,[D.createToken(124)],S)}),v.members&&v.members.forEach((w,C)=>{var P,F,B,q;if(C===\"constructor\"&&w.valueDeclaration){let W=(q=(B=(F=(P=v.exports)==null?void 0:P.get(\"prototype\"))==null?void 0:F.declarations)==null?void 0:B[0])==null?void 0:q.parent;W&&ar(W)&&rs(W.right)&&vt(W.right.properties,M5)||e.delete(t,w.valueDeclaration.parent);return}A(w,void 0,S)}),S;function x(w,C){return Us(w)?br(w)&&M5(w)?!0:Ia(C):Ji(w.properties,P=>!!(Nc(P)||t6(P)||yl(P)&&ms(P.initializer)&&!!P.name||M5(P)))}function A(w,C,P){if(!(w.flags&8192)&&!(w.flags&4096))return;let F=w.valueDeclaration,B=F.parent,q=B.right;if(!x(F,q)||vt(P,Q=>{let fe=sa(Q);return!!(fe&&Re(fe)&&vr(fe)===fc(w))}))return;let W=B.parent&&B.parent.kind===241?B.parent:B;if(e.delete(t,W),!q){P.push(D.createPropertyDeclaration(C,w.name,void 0,void 0,void 0));return}if(Us(F)&&(ms(q)||xs(q))){let Q=z_(t,o),fe=PFe(F,s,Q);fe&&Y(P,q,fe);return}else if(rs(q)){mn(q.properties,Q=>{(Nc(Q)||t6(Q))&&P.push(Q),yl(Q)&&ms(Q.initializer)&&Y(P,Q.initializer,Q.name),M5(Q)});return}else{if(Cu(t)||!br(F))return;let Q=D.createPropertyDeclaration(C,F.name,void 0,void 0,q);X2(B.parent,Q,t),P.push(Q);return}function Y(Q,fe,Z){return ms(fe)?R(Q,fe,Z):ie(Q,fe,Z)}function R(Q,fe,Z){let U=Qi(C,P5(fe,132)),re=D.createMethodDeclaration(U,void 0,Z,void 0,void 0,fe.parameters,void 0,fe.body);X2(B,re,t),Q.push(re)}function ie(Q,fe,Z){let U=fe.body,re;U.kind===238?re=U:re=D.createBlock([D.createReturnStatement(U)]);let le=Qi(C,P5(fe,132)),_e=D.createMethodDeclaration(le,void 0,Z,void 0,void 0,fe.parameters,void 0,re);X2(B,_e,t),Q.push(_e)}}}function g(v){let S=v.initializer;if(!S||!ms(S)||!Re(v.name))return;let x=d(v.symbol);S.body&&x.unshift(D.createConstructorDeclaration(void 0,S.parameters,S.body));let A=P5(v.parent.parent,93);return D.createClassDeclaration(A,v.name,void 0,void 0,x)}function m(v){let S=d(l);v.body&&S.unshift(D.createConstructorDeclaration(void 0,v.parameters,v.body));let x=P5(v,93);return D.createClassDeclaration(x,v.name,void 0,void 0,S)}}function P5(e,t){return h_(e)?Pr(e.modifiers,r=>r.kind===t):void 0}function M5(e){return e.name?!!(Re(e.name)&&e.name.text===\"constructor\"):!1}function PFe(e,t,r){if(br(e))return e.name;let i=e.argumentExpression;if(Uf(i))return i;if(es(i))return r_(i.text,Do(t))?D.createIdentifier(i.text):LS(i)?D.createStringLiteral(i.text,r===0):i}var F5,H$,MFe=gt({\"src/services/codefixes/convertFunctionToEs6Class.ts\"(){\"use strict\";Fr(),Qa(),F5=\"convertFunctionToEs6Class\",H$=[_.This_constructor_function_may_be_converted_to_a_class_declaration.code],za({errorCodes:H$,getCodeActions(e){let t=nr.ChangeTracker.with(e,r=>Pve(r,e.sourceFile,e.span.start,e.program.getTypeChecker(),e.preferences,e.program.getCompilerOptions()));return[Ma(F5,t,_.Convert_function_to_an_ES2015_class,F5,_.Convert_all_constructor_functions_to_classes)]},fixIds:[F5],getAllCodeActions:e=>ns(e,H$,(t,r)=>Pve(t,r.file,r.start,e.program.getTypeChecker(),e.preferences,e.program.getCompilerOptions()))})}});function Mve(e,t,r,i){let o=Vi(t,r),s;if(Re(o)&&wi(o.parent)&&o.parent.initializer&&Ds(o.parent.initializer)?s=o.parent.initializer:s=zr(qd(Vi(t,r)),e$),!s)return;let l=new Map,f=Yn(s),d=GFe(s,i),g=BFe(s,i,l);if(!QY(g,i))return;let m=g.body&&Va(g.body)?FFe(g.body,i):Je,v={checker:i,synthNamesMap:l,setOfExpressionsToReturn:d,isInJSFile:f};if(!m.length)return;let S=xo(t.text,yp(s).pos);e.insertModifierAt(t,S,132,{suffix:\" \"});for(let x of m)if(pa(x,function A(w){if(Pa(w)){let C=sx(w,w,v,!1);if(s1())return!0;e.replaceNodeWithNodes(t,x,C)}else if(!Ia(w)&&(pa(w,A),s1()))return!0}),s1())return}function FFe(e,t){let r=[];return bT(e,i=>{r5(i,t)&&r.push(i)}),r}function GFe(e,t){if(!e.body)return new Set;let r=new Set;return pa(e.body,function i(o){hk(o,t,\"then\")?(r.add(zo(o)),mn(o.arguments,i)):hk(o,t,\"catch\")||hk(o,t,\"finally\")?(r.add(zo(o)),pa(o,i)):Gve(o,t)?r.add(zo(o)):pa(o,i)}),r}function hk(e,t,r){if(!Pa(e))return!1;let o=DN(e,r)&&t.getTypeAtLocation(e);return!!(o&&t.getPromisedTypeOfPromise(o))}function Fve(e,t){return(Ur(e)&4)!==0&&e.target===t}function G5(e,t,r){if(e.expression.name.escapedText===\"finally\")return;let i=r.getTypeAtLocation(e.expression.expression);if(Fve(i,r.getPromiseType())||Fve(i,r.getPromiseLikeType()))if(e.expression.name.escapedText===\"then\"){if(t===Ig(e.arguments,0))return Ig(e.typeArguments,0);if(t===Ig(e.arguments,1))return Ig(e.typeArguments,1)}else return Ig(e.typeArguments,0)}function Gve(e,t){return ot(e)?!!t.getPromisedTypeOfPromise(t.getTypeAtLocation(e)):!1}function BFe(e,t,r){let i=new Map,o=Of();return pa(e,function s(l){if(!Re(l)){pa(l,s);return}let f=t.getSymbolAtLocation(l);if(f){let d=t.getTypeAtLocation(l),g=Wve(d,t),m=$a(f).toString();if(g&&!ha(l.parent)&&!Ds(l.parent)&&!r.has(m)){let v=Sl(g.parameters),S=v?.valueDeclaration&&ha(v.valueDeclaration)&&zr(v.valueDeclaration.name,Re)||D.createUniqueName(\"result\",16),x=Bve(S,o);r.set(m,x),o.add(S.text,f)}else if(l.parent&&(ha(l.parent)||wi(l.parent)||Wo(l.parent))){let v=l.text,S=o.get(v);if(S&&S.some(x=>x!==f)){let x=Bve(l,o);i.set(m,x.identifier),r.set(m,x),o.add(v,f)}else{let x=cc(l);r.set(m,Q2(x)),o.add(v,f)}}}}),KN(e,!0,s=>{if(Wo(s)&&Re(s.name)&&cm(s.parent)){let l=t.getSymbolAtLocation(s.name),f=l&&i.get(String($a(l)));if(f&&f.text!==(s.name||s.propertyName).getText())return D.createBindingElement(s.dotDotDotToken,s.propertyName||s.name,f,s.initializer)}else if(Re(s)){let l=t.getSymbolAtLocation(s),f=l&&i.get(String($a(l)));if(f)return D.createIdentifier(f.text)}})}function Bve(e,t){let r=(t.get(e.text)||Je).length,i=r===0?e:D.createIdentifier(e.text+\"_\"+r);return Q2(i)}function s1(){return!aP}function _v(){return aP=!1,Je}function sx(e,t,r,i,o){if(hk(t,r.checker,\"then\"))return jFe(t,Ig(t.arguments,0),Ig(t.arguments,1),r,i,o);if(hk(t,r.checker,\"catch\"))return jve(t,Ig(t.arguments,0),r,i,o);if(hk(t,r.checker,\"finally\"))return VFe(t,Ig(t.arguments,0),r,i,o);if(br(t))return sx(e,t.expression,r,i,o);let s=r.checker.getTypeAtLocation(t);return s&&r.checker.getPromisedTypeOfPromise(s)?(L.assertNode(ec(t).parent,br),HFe(e,t,r,i,o)):_v()}function B5({checker:e},t){if(t.kind===104)return!0;if(Re(t)&&!tc(t)&&vr(t)===\"undefined\"){let r=e.getSymbolAtLocation(t);return!r||e.isUndefinedSymbol(r)}return!1}function UFe(e){let t=D.createUniqueName(e.identifier.text,16);return Q2(t)}function Uve(e,t,r){let i;return r&&!yk(e,t)&&(gk(r)?(i=r,t.synthNamesMap.forEach((o,s)=>{if(o.identifier.text===r.identifier.text){let l=UFe(r);t.synthNamesMap.set(s,l)}})):i=Q2(D.createUniqueName(\"result\",16),r.types),K$(i)),i}function Vve(e,t,r,i,o){let s=[],l;if(i&&!yk(e,t)){l=cc(K$(i));let f=i.types,d=t.checker.getUnionType(f,2),g=t.isInJSFile?void 0:t.checker.typeToTypeNode(d,void 0,void 0),m=[D.createVariableDeclaration(l,void 0,g)],v=D.createVariableStatement(void 0,D.createVariableDeclarationList(m,1));s.push(v)}return s.push(r),o&&l&&JFe(o)&&s.push(D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(cc(qve(o)),void 0,void 0,l)],2))),s}function VFe(e,t,r,i,o){if(!t||B5(r,t))return sx(e,e.expression.expression,r,i,o);let s=Uve(e,r,o),l=sx(e,e.expression.expression,r,!0,s);if(s1())return _v();let f=z$(t,i,void 0,void 0,e,r);if(s1())return _v();let d=D.createBlock(l),g=D.createBlock(f),m=D.createTryStatement(d,void 0,g);return Vve(e,r,m,s,o)}function jve(e,t,r,i,o){if(!t||B5(r,t))return sx(e,e.expression.expression,r,i,o);let s=Jve(t,r),l=Uve(e,r,o),f=sx(e,e.expression.expression,r,!0,l);if(s1())return _v();let d=z$(t,i,l,s,e,r);if(s1())return _v();let g=D.createBlock(f),m=D.createCatchClause(s&&cc(iP(s)),D.createBlock(d)),v=D.createTryStatement(g,m,void 0);return Vve(e,r,v,l,o)}function jFe(e,t,r,i,o,s){if(!t||B5(i,t))return jve(e,r,i,o,s);if(r&&!B5(i,r))return _v();let l=Jve(t,i),f=sx(e.expression.expression,e.expression.expression,i,!0,l);if(s1())return _v();let d=z$(t,o,s,l,e,i);return s1()?_v():Qi(f,d)}function HFe(e,t,r,i,o){if(yk(e,r)){let s=cc(t);return i&&(s=D.createAwaitExpression(s)),[D.createReturnStatement(s)]}return U5(o,D.createAwaitExpression(t),void 0)}function U5(e,t,r){return!e||Kve(e)?[D.createExpressionStatement(t)]:gk(e)&&e.hasBeenDeclared?[D.createExpressionStatement(D.createAssignment(cc(J$(e)),t))]:[D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(cc(iP(e)),void 0,r,t)],2))]}function W$(e,t){if(t&&e){let r=D.createUniqueName(\"result\",16);return[...U5(Q2(r),e,t),D.createReturnStatement(r)]}return[D.createReturnStatement(e)]}function z$(e,t,r,i,o,s){var l;switch(e.kind){case 104:break;case 208:case 79:if(!i)break;let f=D.createCallExpression(cc(e),void 0,gk(i)?[J$(i)]:[]);if(yk(o,s))return W$(f,G5(o,e,s.checker));let d=s.checker.getTypeAtLocation(e),g=s.checker.getSignaturesOfType(d,0);if(!g.length)return _v();let m=g[0].getReturnType(),v=U5(r,D.createAwaitExpression(f),G5(o,e,s.checker));return r&&r.types.push(s.checker.getAwaitedType(m)||m),v;case 215:case 216:{let S=e.body,x=(l=Wve(s.checker.getTypeAtLocation(e),s.checker))==null?void 0:l.getReturnType();if(Va(S)){let A=[],w=!1;for(let C of S.statements)if(V_(C))if(w=!0,r5(C,s.checker))A=A.concat(zve(s,C,t,r));else{let P=x&&C.expression?Hve(s.checker,x,C.expression):C.expression;A.push(...W$(P,G5(o,e,s.checker)))}else{if(t&&bT(C,h0))return _v();A.push(C)}return yk(o,s)?A.map(C=>cc(C)):WFe(A,r,s,w)}else{let A=ZY(S,s.checker)?zve(s,D.createReturnStatement(S),t,r):Je;if(A.length>0)return A;if(x){let w=Hve(s.checker,x,S);if(yk(o,s))return W$(w,G5(o,e,s.checker));{let C=U5(r,w,void 0);return r&&r.types.push(s.checker.getAwaitedType(x)||x),C}}else return _v()}}default:return _v()}return Je}function Hve(e,t,r){let i=cc(r);return e.getPromisedTypeOfPromise(t)?D.createAwaitExpression(i):i}function Wve(e,t){let r=t.getSignaturesOfType(e,0);return Os(r)}function WFe(e,t,r,i){let o=[];for(let s of e)if(V_(s)){if(s.expression){let l=Gve(s.expression,r.checker)?D.createAwaitExpression(s.expression):s.expression;t===void 0?o.push(D.createExpressionStatement(l)):gk(t)&&t.hasBeenDeclared?o.push(D.createExpressionStatement(D.createAssignment(J$(t),l))):o.push(D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(iP(t),void 0,void 0,l)],2)))}}else o.push(cc(s));return!i&&t!==void 0&&o.push(D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(iP(t),void 0,void 0,D.createIdentifier(\"undefined\"))],2))),o}function zve(e,t,r,i){let o=[];return pa(t,function s(l){if(Pa(l)){let f=sx(l,l,e,r,i);if(o=o.concat(f),o.length>0)return}else Ia(l)||pa(l,s)}),o}function Jve(e,t){let r=[],i;if(Ds(e)){if(e.parameters.length>0){let d=e.parameters[0].name;i=o(d)}}else Re(e)?i=s(e):br(e)&&Re(e.name)&&(i=s(e.name));if(!i||\"identifier\"in i&&i.identifier.text===\"undefined\")return;return i;function o(d){if(Re(d))return s(d);let g=Uo(d.elements,m=>ol(m)?[]:[o(m.name)]);return zFe(d,g)}function s(d){let g=f(d),m=l(g);return m&&t.synthNamesMap.get($a(m).toString())||Q2(d,r)}function l(d){var g,m;return(m=(g=zr(d,$p))==null?void 0:g.symbol)!=null?m:t.checker.getSymbolAtLocation(d)}function f(d){return d.original?d.original:d}}function Kve(e){return e?gk(e)?!e.identifier.text:Ji(e.elements,Kve):!0}function Q2(e,t=[]){return{kind:0,identifier:e,types:t,hasBeenDeclared:!1,hasBeenReferenced:!1}}function zFe(e,t=Je,r=[]){return{kind:1,bindingPattern:e,elements:t,types:r}}function J$(e){return e.hasBeenReferenced=!0,e.identifier}function iP(e){return gk(e)?K$(e):qve(e)}function qve(e){for(let t of e.elements)iP(t);return e.bindingPattern}function K$(e){return e.hasBeenDeclared=!0,e.identifier}function gk(e){return e.kind===0}function JFe(e){return e.kind===1}function yk(e,t){return!!e.original&&t.setOfExpressionsToReturn.has(zo(e.original))}var V5,q$,aP,KFe=gt({\"src/services/codefixes/convertToAsyncFunction.ts\"(){\"use strict\";Fr(),Qa(),V5=\"convertToAsyncFunction\",q$=[_.This_may_be_converted_to_an_async_function.code],aP=!0,za({errorCodes:q$,getCodeActions(e){aP=!0;let t=nr.ChangeTracker.with(e,r=>Mve(r,e.sourceFile,e.span.start,e.program.getTypeChecker()));return aP?[Ma(V5,t,_.Convert_to_async_function,V5,_.Convert_all_to_async_functions)]:[]},fixIds:[V5],getAllCodeActions:e=>ns(e,q$,(t,r)=>Mve(t,r.file,r.start,e.program.getTypeChecker()))})}});function qFe(e,t,r,i){for(let o of e.imports){let s=DA(e,o.text,H_(e,o));if(!s||s.resolvedFileName!==t.fileName)continue;let l=oR(o);switch(l.kind){case 268:r.replaceNode(e,l,Xg(l.name,void 0,o,i));break;case 210:qu(l,!1)&&r.replaceNode(e,l,D.createPropertyAccessExpression(cc(l),\"default\"));break}}}function XFe(e,t,r,i,o){let s={original:c7e(e),additional:new Set},l=YFe(e,t,s);$Fe(e,l,r);let f=!1,d;for(let g of Pr(e.statements,Bc)){let m=Yve(e,g,r,t,s,i,o);m&&Fw(m,d??(d=new Map))}for(let g of Pr(e.statements,m=>!Bc(m))){let m=QFe(e,g,t,r,s,i,l,d,o);f=f||m}return d?.forEach((g,m)=>{r.replaceNode(e,m,g)}),f}function YFe(e,t,r){let i=new Map;return Xve(e,o=>{let{text:s}=o.name;!i.has(s)&&(q6(o.name)||t.resolveName(s,o,111551,!0))&&i.set(s,j5(`_${s}`,r))}),i}function $Fe(e,t,r){Xve(e,(i,o)=>{if(o)return;let{text:s}=i.name;r.replaceNode(e,i,D.createIdentifier(t.get(s)||s))})}function Xve(e,t){e.forEachChild(function r(i){if(br(i)&&$0(e,i.expression)&&Re(i.name)){let{parent:o}=i;t(i,ar(o)&&o.left===i&&o.operatorToken.kind===63)}i.forEachChild(r)})}function QFe(e,t,r,i,o,s,l,f,d){switch(t.kind){case 240:return Yve(e,t,i,r,o,s,d),!1;case 241:{let{expression:g}=t;switch(g.kind){case 210:return qu(g,!0)&&i.replaceNode(e,t,Xg(void 0,void 0,g.arguments[0],d)),!1;case 223:{let{operatorToken:m}=g;return m.kind===63&&e7e(e,r,g,i,l,f)}}}default:return!1}}function Yve(e,t,r,i,o,s,l){let{declarationList:f}=t,d=!1,g=on(f.declarations,m=>{let{name:v,initializer:S}=m;if(S){if($0(e,S))return d=!0,Z2([]);if(qu(S,!0))return d=!0,o7e(v,S.arguments[0],i,o,s,l);if(br(S)&&qu(S.expression,!0))return d=!0,ZFe(v,S.name.text,S.expression.arguments[0],o,l)}return Z2([D.createVariableStatement(void 0,D.createVariableDeclarationList([m],f.flags))])});if(d){r.replaceNodeWithNodes(e,t,Uo(g,v=>v.newImports));let m;return mn(g,v=>{v.useSitesToUnqualify&&Fw(v.useSitesToUnqualify,m??(m=new Map))}),m}}function ZFe(e,t,r,i,o){switch(e.kind){case 203:case 204:{let s=j5(t,i);return Z2([ebe(s,t,r,o),H5(void 0,e,D.createIdentifier(s))])}case 79:return Z2([ebe(e.text,t,r,o)]);default:return L.assertNever(e,`Convert to ES module got invalid syntax form ${e.kind}`)}}function e7e(e,t,r,i,o,s){let{left:l,right:f}=r;if(!br(l))return!1;if($0(e,l))if($0(e,f))i.delete(e,r.parent);else{let d=rs(f)?t7e(f,s):qu(f,!0)?r7e(f.arguments[0],t):void 0;return d?(i.replaceNodeWithNodes(e,r.parent,d[0]),d[1]):(i.replaceRangeWithText(e,Ff(l.getStart(e),f.pos),\"export default\"),!0)}else $0(e,l.expression)&&n7e(e,r,i,o);return!1}function t7e(e,t){let r=NU(e.properties,i=>{switch(i.kind){case 174:case 175:case 300:case 301:return;case 299:return Re(i.name)?a7e(i.name.text,i.initializer,t):void 0;case 171:return Re(i.name)?Zve(i.name.text,[D.createToken(93)],i,t):void 0;default:L.assertNever(i,`Convert to ES6 got invalid prop kind ${i.kind}`)}});return r&&[r,!1]}function n7e(e,t,r,i){let{text:o}=t.left.name,s=i.get(o);if(s!==void 0){let l=[H5(void 0,s,t.right),$$([D.createExportSpecifier(!1,s,o)])];r.replaceNodeWithNodes(e,t.parent,l)}else i7e(t,e,r)}function r7e(e,t){let r=e.text,i=t.getSymbolAtLocation(e),o=i?i.exports:b8;return o.has(\"export=\")?[[X$(r)],!0]:o.has(\"default\")?o.size>1?[[$ve(r),X$(r)],!0]:[[X$(r)],!0]:[[$ve(r)],!1]}function $ve(e){return $$(void 0,e)}function X$(e){return $$([D.createExportSpecifier(!1,void 0,\"default\")],e)}function i7e({left:e,right:t,parent:r},i,o){let s=e.name.text;if((ms(t)||xs(t)||_u(t))&&(!t.name||t.name.text===s)){o.replaceRange(i,{pos:e.getStart(i),end:t.getStart(i)},D.createToken(93),{suffix:\" \"}),t.name||o.insertName(i,t,s);let l=Yo(r,26,i);l&&o.delete(i,l)}else o.replaceNodeRangeWithNodes(i,e.expression,Yo(e,24,i),[D.createToken(93),D.createToken(85)],{joiner:\" \",suffix:\" \"})}function a7e(e,t,r){let i=[D.createToken(93)];switch(t.kind){case 215:{let{name:s}=t;if(s&&s.text!==e)return o()}case 216:return Zve(e,i,t,r);case 228:return u7e(e,i,t,r);default:return o()}function o(){return H5(i,D.createIdentifier(e),Y$(t,r))}}function Y$(e,t){if(!t||!vt(lo(t.keys()),i=>Od(e,i)))return e;return ba(e)?gY(e,!0,r):KN(e,!0,r);function r(i){if(i.kind===208){let o=t.get(i);return t.delete(i),o}}}function o7e(e,t,r,i,o,s){switch(e.kind){case 203:{let l=NU(e.elements,f=>f.dotDotDotToken||f.initializer||f.propertyName&&!Re(f.propertyName)||!Re(f.name)?void 0:tbe(f.propertyName&&f.propertyName.text,f.name.text));if(l)return Z2([Xg(void 0,l,t,s)])}case 204:{let l=j5(cQ(t.text,o),i);return Z2([Xg(D.createIdentifier(l),void 0,t,s),H5(void 0,cc(e),D.createIdentifier(l))])}case 79:return s7e(e,t,r,i,s);default:return L.assertNever(e,`Convert to ES module got invalid name kind ${e.kind}`)}}function s7e(e,t,r,i,o){let s=r.getSymbolAtLocation(e),l=new Map,f=!1,d;for(let m of i.original.get(e.text)){if(r.getSymbolAtLocation(m)!==s||m===e)continue;let{parent:v}=m;if(br(v)){let{name:{text:S}}=v;if(S===\"default\"){f=!0;let x=m.getText();(d??(d=new Map)).set(v,D.createIdentifier(x))}else{L.assert(v.expression===m,\"Didn't expect expression === use\");let x=l.get(S);x===void 0&&(x=j5(S,i),l.set(S,x)),(d??(d=new Map)).set(v,D.createIdentifier(x))}}else f=!0}let g=l.size===0?void 0:lo(RU(l.entries(),([m,v])=>D.createImportSpecifier(!1,m===v?void 0:D.createIdentifier(m),D.createIdentifier(v))));return g||(f=!0),Z2([Xg(f?cc(e):void 0,g,t,o)],d)}function j5(e,t){for(;t.original.has(e)||t.additional.has(e);)e=`_${e}`;return t.additional.add(e),e}function c7e(e){let t=Of();return Qve(e,r=>t.add(r.text,r)),t}function Qve(e,t){Re(e)&&l7e(e)&&t(e),e.forEachChild(r=>Qve(r,t))}function l7e(e){let{parent:t}=e;switch(t.kind){case 208:return t.name!==e;case 205:return t.propertyName!==e;case 273:return t.propertyName!==e;default:return!0}}function Zve(e,t,r,i){return D.createFunctionDeclaration(Qi(t,oE(r.modifiers)),cc(r.asteriskToken),e,oE(r.typeParameters),oE(r.parameters),cc(r.type),D.converters.convertToFunctionBlock(Y$(r.body,i)))}function u7e(e,t,r,i){return D.createClassDeclaration(Qi(t,oE(r.modifiers)),e,oE(r.typeParameters),oE(r.heritageClauses),Y$(r.members,i))}function ebe(e,t,r,i){return t===\"default\"?Xg(D.createIdentifier(e),void 0,r,i):Xg(void 0,[tbe(t,e)],r,i)}function tbe(e,t){return D.createImportSpecifier(!1,e!==void 0&&e!==t?D.createIdentifier(e):void 0,D.createIdentifier(t))}function H5(e,t,r){return D.createVariableStatement(e,D.createVariableDeclarationList([D.createVariableDeclaration(t,void 0,void 0,r)],2))}function $$(e,t){return D.createExportDeclaration(void 0,!1,e&&D.createNamedExports(e),t===void 0?void 0:D.createStringLiteral(t))}function Z2(e,t){return{newImports:e,useSitesToUnqualify:t}}var d7e=gt({\"src/services/codefixes/convertToEsModule.ts\"(){\"use strict\";Fr(),Qa(),za({errorCodes:[_.File_is_a_CommonJS_module_it_may_be_converted_to_an_ES_module.code],getCodeActions(e){let{sourceFile:t,program:r,preferences:i}=e,o=nr.ChangeTracker.with(e,s=>{if(XFe(t,r.getTypeChecker(),s,Do(r.getCompilerOptions()),z_(t,i)))for(let f of r.getSourceFiles())qFe(f,t,s,z_(f,i))});return[J_(\"convertToEsModule\",o,_.Convert_to_ES_module)]}})}});function nbe(e,t){let r=jn(Vi(e,t),Yu);return L.assert(!!r,\"Expected position to be owned by a qualified name.\"),Re(r.left)?r:void 0}function rbe(e,t,r){let i=r.right.text,o=D.createIndexedAccessTypeNode(D.createTypeReferenceNode(r.left,void 0),D.createLiteralTypeNode(D.createStringLiteral(i)));e.replaceNode(t,r,o)}var W5,Q$,f7e=gt({\"src/services/codefixes/correctQualifiedNameToIndexedAccessType.ts\"(){\"use strict\";Fr(),Qa(),W5=\"correctQualifiedNameToIndexedAccessType\",Q$=[_.Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1.code],za({errorCodes:Q$,getCodeActions(e){let t=nbe(e.sourceFile,e.span.start);if(!t)return;let r=nr.ChangeTracker.with(e,o=>rbe(o,e.sourceFile,t)),i=`${t.left.text}[\"${t.right.text}\"]`;return[Ma(W5,r,[_.Rewrite_as_the_indexed_access_type_0,i],W5,_.Rewrite_all_as_indexed_access_types)]},fixIds:[W5],getAllCodeActions:e=>ns(e,Q$,(t,r)=>{let i=nbe(r.file,r.start);i&&rbe(t,r.file,i)})})}});function ibe(e,t){return zr(Vi(t,e.start).parent,Mu)}function abe(e,t,r){if(!t)return;let i=t.parent,o=i.parent,s=_7e(t,r);if(s.length===i.elements.length)e.insertModifierBefore(r.sourceFile,154,i);else{let l=D.updateExportDeclaration(o,o.modifiers,!1,D.updateNamedExports(i,Pr(i.elements,d=>!ya(s,d))),o.moduleSpecifier,void 0),f=D.createExportDeclaration(void 0,!0,D.createNamedExports(s),o.moduleSpecifier,void 0);e.replaceNode(r.sourceFile,o,l,{leadingTriviaOption:nr.LeadingTriviaOption.IncludeAll,trailingTriviaOption:nr.TrailingTriviaOption.Exclude}),e.insertNodeAfter(r.sourceFile,o,f)}}function _7e(e,t){let r=e.parent;if(r.elements.length===1)return r.elements;let i=_ge(Du(r),t.program.getSemanticDiagnostics(t.sourceFile,t.cancellationToken));return Pr(r.elements,o=>{var s;return o===e||((s=fge(o,i))==null?void 0:s.code)===z5[0]})}var z5,J5,p7e=gt({\"src/services/codefixes/convertToTypeOnlyExport.ts\"(){\"use strict\";Fr(),Qa(),z5=[_.Re_exporting_a_type_when_0_is_enabled_requires_using_export_type.code],J5=\"convertToTypeOnlyExport\",za({errorCodes:z5,getCodeActions:function(t){let r=nr.ChangeTracker.with(t,i=>abe(i,ibe(t.span,t.sourceFile),t));if(r.length)return[Ma(J5,r,_.Convert_to_type_only_export,J5,_.Convert_all_re_exported_types_to_type_only_exports)]},fixIds:[J5],getAllCodeActions:function(t){let r=new Map;return ns(t,z5,(i,o)=>{let s=ibe(o,t.sourceFile);s&&U_(r,zo(s.parent.parent))&&abe(i,s,t)})}})}});function obe(e,t){let{parent:r}=Vi(e,t);return $u(r)||gl(r)&&r.importClause?r:void 0}function sbe(e,t,r){if($u(r))e.replaceNode(t,r,D.updateImportSpecifier(r,!0,r.propertyName,r.name));else{let i=r.importClause;if(i.name&&i.namedBindings)e.replaceNodeWithNodes(t,r,[D.createImportDeclaration(oE(r.modifiers,!0),D.createImportClause(!0,cc(i.name,!0),void 0),cc(r.moduleSpecifier,!0),cc(r.assertClause,!0)),D.createImportDeclaration(oE(r.modifiers,!0),D.createImportClause(!0,void 0,cc(i.namedBindings,!0)),cc(r.moduleSpecifier,!0),cc(r.assertClause,!0))]);else{let o=D.updateImportDeclaration(r,r.modifiers,D.updateImportClause(i,!0,i.name,i.namedBindings),r.moduleSpecifier,r.assertClause);e.replaceNode(t,r,o)}}}var Z$,K5,m7e=gt({\"src/services/codefixes/convertToTypeOnlyImport.ts\"(){\"use strict\";Fr(),Qa(),Z$=[_.This_import_is_never_used_as_a_value_and_must_use_import_type_because_importsNotUsedAsValues_is_set_to_error.code,_._0_is_a_type_and_must_be_imported_using_a_type_only_import_when_verbatimModuleSyntax_is_enabled.code],K5=\"convertToTypeOnlyImport\",za({errorCodes:Z$,getCodeActions:function(t){let r=obe(t.sourceFile,t.span.start);if(r){let i=nr.ChangeTracker.with(t,o=>sbe(o,t.sourceFile,r));return[Ma(K5,i,_.Convert_to_type_only_import,K5,_.Convert_all_imports_not_used_as_a_value_to_type_only_imports)]}},fixIds:[K5],getAllCodeActions:function(t){return ns(t,Z$,(r,i)=>{let o=obe(i.file,i.start);o&&sbe(r,i.file,o)})}})}});function cbe(e,t){let r=Vi(e,t);if(Re(r)){let i=Ga(r.parent.parent,Yd),o=r.getText(e);return{container:Ga(i.parent,Rd),typeNode:i.type,constraint:o,name:o===\"K\"?\"P\":\"K\"}}}function lbe(e,t,{container:r,typeNode:i,constraint:o,name:s}){e.replaceNode(t,r,D.createMappedTypeNode(void 0,D.createTypeParameterDeclaration(void 0,s,D.createTypeReferenceNode(o)),void 0,void 0,i,void 0))}var q5,eQ,h7e=gt({\"src/services/codefixes/convertLiteralTypeToMappedType.ts\"(){\"use strict\";Fr(),Qa(),q5=\"convertLiteralTypeToMappedType\",eQ=[_._0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Did_you_mean_to_use_1_in_0.code],za({errorCodes:eQ,getCodeActions:function(t){let{sourceFile:r,span:i}=t,o=cbe(r,i.start);if(!o)return;let{name:s,constraint:l}=o,f=nr.ChangeTracker.with(t,d=>lbe(d,r,o));return[Ma(q5,f,[_.Convert_0_to_1_in_0,l,s],q5,_.Convert_all_type_literals_to_mapped_type)]},fixIds:[q5],getAllCodeActions:e=>ns(e,eQ,(t,r)=>{let i=cbe(r.file,r.start);i&&lbe(t,r.file,i)})})}});function ube(e,t){return L.checkDefined(Zc(Vi(e,t)),\"There should be a containing class\")}function dbe(e){return!e.valueDeclaration||!(uu(e.valueDeclaration)&8)}function fbe(e,t,r,i,o,s){let l=e.program.getTypeChecker(),f=g7e(i,l),d=l.getTypeAtLocation(t),m=l.getPropertiesOfType(d).filter(g8(dbe,C=>!f.has(C.escapedName))),v=l.getTypeAtLocation(i),S=wr(i.members,C=>Ec(C));v.getNumberIndexType()||A(d,1),v.getStringIndexType()||A(d,0);let x=c1(r,e.program,s,e.host);oZ(i,m,r,e,s,x,C=>w(r,i,C)),x.writeFixes(o);function A(C,P){let F=l.getIndexInfoOfType(C,P);F&&w(r,i,l.indexInfoToIndexSignatureDeclaration(F,i,void 0,cx(e)))}function w(C,P,F){S?o.insertNodeAfter(C,S,F):o.insertMemberAtStart(C,P,F)}}function g7e(e,t){let r=hp(e);if(!r)return Ua();let i=t.getTypeAtLocation(r),o=t.getPropertiesOfType(i);return Ua(o.filter(dbe))}var tQ,X5,y7e=gt({\"src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts\"(){\"use strict\";Fr(),Qa(),tQ=[_.Class_0_incorrectly_implements_interface_1.code,_.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code],X5=\"fixClassIncorrectlyImplementsInterface\",za({errorCodes:tQ,getCodeActions(e){let{sourceFile:t,span:r}=e,i=ube(t,r.start);return Zi(KA(i),o=>{let s=nr.ChangeTracker.with(e,l=>fbe(e,o,t,i,l,e.preferences));return s.length===0?void 0:Ma(X5,s,[_.Implement_interface_0,o.getText(t)],X5,_.Implement_all_unimplemented_interfaces)})},fixIds:[X5],getAllCodeActions(e){let t=new Map;return ns(e,tQ,(r,i)=>{let o=ube(i.file,i.start);if(U_(t,zo(o)))for(let s of KA(o))fbe(e,s,i.file,o,r,e.preferences)})}})}});function c1(e,t,r,i,o){return _be(e,t,!1,r,i,o)}function _be(e,t,r,i,o,s){let l=t.getCompilerOptions(),f=[],d=[],g=new Map,m=new Map;return{addImportFromDiagnostic:v,addImportFromExportedSymbol:S,writeFixes:A,hasFixes:w};function v(C,P){let F=vbe(P,C.code,C.start,r);!F||!F.length||x(Vo(F))}function S(C,P){let F=L.checkDefined(C.parent),B=j7(C,Do(l)),q=t.getTypeChecker(),W=q.getMergedSymbol(wd(C,q)),Y=hbe(e,W,B,F,!1,t,o,i,s),R=$5(e,t),ie=pbe(e,L.checkDefined(Y),t,void 0,!!P,R,o,i);ie&&x({fix:ie,symbolName:B,errorIdentifierText:void 0})}function x(C){var P,F;let{fix:B,symbolName:q}=C;switch(B.kind){case 0:f.push(B);break;case 1:d.push(B);break;case 2:{let{importClauseOrBindingPattern:ie,importKind:Q,addAsTypeOnly:fe}=B,Z=String(zo(ie)),U=g.get(Z);if(U||g.set(Z,U={importClauseOrBindingPattern:ie,defaultImport:void 0,namedImports:new Map}),Q===0){let re=U?.namedImports.get(q);U.namedImports.set(q,W(re,fe))}else L.assert(U.defaultImport===void 0||U.defaultImport.name===q,\"(Add to Existing) Default import should be missing or match symbolName\"),U.defaultImport={name:q,addAsTypeOnly:W((P=U.defaultImport)==null?void 0:P.addAsTypeOnly,fe)};break}case 3:{let{moduleSpecifier:ie,importKind:Q,useRequire:fe,addAsTypeOnly:Z}=B,U=Y(ie,Q,fe,Z);switch(L.assert(U.useRequire===fe,\"(Add new) Tried to add an `import` and a `require` for the same module\"),Q){case 1:L.assert(U.defaultImport===void 0||U.defaultImport.name===q,\"(Add new) Default import should be missing or match symbolName\"),U.defaultImport={name:q,addAsTypeOnly:W((F=U.defaultImport)==null?void 0:F.addAsTypeOnly,Z)};break;case 0:let re=(U.namedImports||(U.namedImports=new Map)).get(q);U.namedImports.set(q,W(re,Z));break;case 3:case 2:L.assert(U.namespaceLikeImport===void 0||U.namespaceLikeImport.name===q,\"Namespacelike import shoudl be missing or match symbolName\"),U.namespaceLikeImport={importKind:Q,name:q,addAsTypeOnly:Z};break}break}case 4:break;default:L.assertNever(B,`fix wasn't never - got kind ${B.kind}`)}function W(ie,Q){return Math.max(ie??0,Q)}function Y(ie,Q,fe,Z){let U=R(ie,!0),re=R(ie,!1),le=m.get(U),_e=m.get(re),ge={defaultImport:void 0,namedImports:void 0,namespaceLikeImport:void 0,useRequire:fe};return Q===1&&Z===2?le||(m.set(U,ge),ge):Z===1&&(le||_e)?le||_e:_e||(m.set(re,ge),ge)}function R(ie,Q){return`${Q?1:0}|${ie}`}}function A(C){let P=z_(e,i);for(let B of f)oQ(C,e,B);for(let B of d)Cbe(C,e,B,P);g.forEach(({importClauseOrBindingPattern:B,defaultImport:q,namedImports:W})=>{Abe(C,e,B,q,lo(W.entries(),([Y,R])=>({addAsTypeOnly:R,name:Y})),l,i)});let F;m.forEach(({useRequire:B,defaultImport:q,namedImports:W,namespaceLikeImport:Y},R)=>{let ie=R.slice(2),fe=(B?kbe:Lbe)(ie,P,q,W&&lo(W.entries(),([Z,U])=>({addAsTypeOnly:U,name:Z})),Y,l);F=pA(F,fe)}),F&&L7(C,e,F,!0,i)}function w(){return f.length>0||d.length>0||g.size>0||m.size>0}}function v7e(e,t,r,i){let o=dk(e,i,r),s=gbe(t.getTypeChecker(),e,t.getCompilerOptions());return{getModuleSpecifierForBestExportInfo:l};function l(f,d,g,m){let{fixes:v,computedWithoutCacheCount:S}=Y5(f,d,g,!1,t,e,r,i,s,m),x=bbe(v,e,t,o,r);return x&&{...x,computedWithoutCacheCount:S}}}function b7e(e,t,r,i,o,s,l,f,d,g,m,v){let S=f.getCompilerOptions(),x;r?(x=$N(i,l,f,m,v).get(i.path,r),L.assertIsDefined(x,\"Some exportInfo should match the specified exportMapKey\")):(x=cj(l_(t.name))?[T7e(e,o,t,f,l)]:hbe(i,e,o,t,s,f,l,m,v),L.assertIsDefined(x,\"Some exportInfo should match the specified symbol / moduleSymbol\"));let A=$5(i,f),w=SS(Vi(i,g)),C=L.checkDefined(pbe(i,x,f,g,w,A,l,m));return{moduleSpecifier:C.moduleSpecifier,codeAction:mbe(aQ({host:l,formatContext:d,preferences:m},i,o,C,!1,S,m))}}function E7e(e,t,r,i,o,s){let l=r.getCompilerOptions(),f=BU(iQ(e,r.getTypeChecker(),t,l)),d=Sbe(e,t,f,r),g=f!==t.text;return d&&mbe(aQ({host:i,formatContext:o,preferences:s},e,f,d,g,l,s))}function pbe(e,t,r,i,o,s,l,f){let d=dk(e,f,l);return bbe(Y5(t,i,o,s,r,e,l,f).fixes,e,r,d,l)}function mbe({description:e,changes:t,commands:r}){return{description:e,changes:t,commands:r}}function hbe(e,t,r,i,o,s,l,f,d){let g=ybe(s,l);return $N(e,l,s,f,d).search(e.path,o,m=>m===r,m=>{if(wd(m[0].symbol,g(m[0].isFromPackageJson))===t&&m.some(v=>v.moduleSymbol===i||v.symbol.parent===i))return m})}function T7e(e,t,r,i,o){var s,l;let f=i.getCompilerOptions(),d=m(i.getTypeChecker(),!1);if(d)return d;let g=(l=(s=o.getPackageJsonAutoImportProvider)==null?void 0:s.call(o))==null?void 0:l.getTypeChecker();return L.checkDefined(g&&m(g,!0),\"Could not find symbol in specified module for code actions\");function m(v,S){let x=Y7(r,v,f);if(x&&wd(x.symbol,v)===e)return{symbol:x.symbol,moduleSymbol:r,moduleFileName:void 0,exportKind:x.exportKind,targetFlags:wd(e,v).flags,isFromPackageJson:S};let A=v.tryGetMemberInModuleExportsAndProperties(t,r);if(A&&wd(A,v)===e)return{symbol:A,moduleSymbol:r,moduleFileName:void 0,exportKind:0,targetFlags:wd(e,v).flags,isFromPackageJson:S}}}function Y5(e,t,r,i,o,s,l,f,d=gbe(o.getTypeChecker(),s,o.getCompilerOptions()),g){let m=o.getTypeChecker(),v=Uo(e,d.getImportsForExportInfo),S=t!==void 0&&S7e(v,t),x=A7e(v,r,m,o.getCompilerOptions());if(x)return{computedWithoutCacheCount:0,fixes:[...S?[S]:Je,x]};let{fixes:A,computedWithoutCacheCount:w=0}=I7e(e,v,o,s,t,r,i,l,f,g);return{computedWithoutCacheCount:w,fixes:[...S?[S]:Je,...A]}}function S7e(e,t){return ks(e,({declaration:r,importKind:i})=>{var o;if(i!==0)return;let s=x7e(r),l=s&&((o=aR(r))==null?void 0:o.text);if(l)return{kind:0,namespacePrefix:s,usagePosition:t,moduleSpecifier:l}})}function x7e(e){var t,r,i;switch(e.kind){case 257:return(t=zr(e.name,Re))==null?void 0:t.text;case 268:return e.name.text;case 269:return(i=zr((r=e.importClause)==null?void 0:r.namedBindings,nv))==null?void 0:i.name.text;default:return L.assertNever(e)}}function nQ(e,t,r,i,o,s){return e?t&&s.importsNotUsedAsValues===2||u4(s)&&(!(i&111551)||!!o.getTypeOnlyAliasDeclaration(r))?2:1:4}function A7e(e,t,r,i){return ks(e,({declaration:o,importKind:s,symbol:l,targetFlags:f})=>{if(s===3||s===2||o.kind===268)return;if(o.kind===257)return(s===0||s===1)&&o.name.kind===203?{kind:2,importClauseOrBindingPattern:o.name,importKind:s,moduleSpecifier:o.initializer.arguments[0].text,addAsTypeOnly:4}:void 0;let{importClause:d}=o;if(!d||!es(o.moduleSpecifier))return;let{name:g,namedBindings:m}=d;if(d.isTypeOnly&&!(s===0&&m))return;let v=nQ(t,!1,l,f,r,i);if(!(s===1&&(g||v===2&&m))&&!(s===0&&m?.kind===271))return{kind:2,importClauseOrBindingPattern:d,importKind:s,moduleSpecifier:o.moduleSpecifier.text,addAsTypeOnly:v}})}function gbe(e,t,r){let i;for(let o of t.imports){let s=oR(o);if(kH(s.parent)){let l=e.resolveExternalModuleName(o);l&&(i||(i=Of())).add($a(l),s.parent)}else if(s.kind===269||s.kind===268){let l=e.getSymbolAtLocation(o);l&&(i||(i=Of())).add($a(l),s)}}return{getImportsForExportInfo:({moduleSymbol:o,exportKind:s,targetFlags:l,symbol:f})=>{if(!(l&111551)&&Cu(t))return Je;let d=i?.get($a(o));if(!d)return Je;let g=rQ(t,s,r);return d.map(m=>({declaration:m,importKind:g,symbol:f,targetFlags:l}))}}}function $5(e,t){if(!Cu(e))return!1;if(e.commonJsModuleIndicator&&!e.externalModuleIndicator)return!0;if(e.externalModuleIndicator&&!e.commonJsModuleIndicator)return!1;let r=t.getCompilerOptions();if(r.configFile)return Rl(r)<5;for(let i of t.getSourceFiles())if(!(i===e||!Cu(i)||t.isSourceFileFromExternalLibrary(i))){if(i.commonJsModuleIndicator&&!i.externalModuleIndicator)return!0;if(i.externalModuleIndicator&&!i.commonJsModuleIndicator)return!1}return!0}function ybe(e,t){return Jp(r=>r?t.getPackageJsonAutoImportProvider().getTypeChecker():e.getTypeChecker())}function C7e(e,t,r,i,o,s,l,f,d){let g=Cu(t),m=e.getCompilerOptions(),v=QS(e,l),S=ybe(e,l),x=$s(m),A=T7(x),w=d?F=>({moduleSpecifiers:Q0.tryGetModuleSpecifiersFromCache(F,t,v,f),computedWithoutCache:!1}):(F,B)=>Q0.getModuleSpecifiersWithCacheInfo(F,B,m,t,v,f),C=0,P=Uo(s,(F,B)=>{let q=S(F.isFromPackageJson),{computedWithoutCache:W,moduleSpecifiers:Y}=w(F.moduleSymbol,q),R=!!(F.targetFlags&111551),ie=nQ(i,!0,F.symbol,F.targetFlags,q,m);return C+=W?1:0,Zi(Y,Q=>{var fe;if(A&&KS(Q))return;if(!R&&g&&r!==void 0)return{kind:1,moduleSpecifier:Q,usagePosition:r,exportInfo:F,isReExport:B>0};let Z=rQ(t,F.exportKind,m),U;if(r!==void 0&&Z===3&&F.exportKind===0){let re=q.resolveExternalModuleSymbol(F.moduleSymbol),le;re!==F.moduleSymbol&&(le=(fe=$7(re,q,m))==null?void 0:fe.name),le||(le=sQ(F.moduleSymbol,Do(m),!1)),U={namespacePrefix:le,usagePosition:r}}return{kind:3,moduleSpecifier:Q,importKind:Z,useRequire:o,addAsTypeOnly:ie,exportInfo:F,isReExport:B>0,qualification:U}})});return{computedWithoutCacheCount:C,fixes:P}}function I7e(e,t,r,i,o,s,l,f,d,g){let m=ks(t,v=>L7e(v,s,l,r.getTypeChecker(),r.getCompilerOptions()));return m?{fixes:[m]}:C7e(r,i,o,s,l,e,f,d,g)}function L7e({declaration:e,importKind:t,symbol:r,targetFlags:i},o,s,l,f){var d;let g=(d=aR(e))==null?void 0:d.text;if(g){let m=s?4:nQ(o,!0,r,i,l,f);return{kind:3,moduleSpecifier:g,importKind:t,addAsTypeOnly:m,useRequire:s}}}function vbe(e,t,r,i){let o=Vi(e.sourceFile,r),s;if(t===_._0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead.code)s=R7e(e,o);else if(Re(o))if(t===_._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type.code){let f=BU(iQ(e.sourceFile,e.program.getTypeChecker(),o,e.program.getCompilerOptions())),d=Sbe(e.sourceFile,o,f,e.program);return d&&[{fix:d,symbolName:f,errorIdentifierText:o.text}]}else s=P7e(e,o,i);else return;let l=dk(e.sourceFile,e.preferences,e.host);return s&&k7e(s,e.sourceFile,e.program,l,e.host)}function k7e(e,t,r,i,o){let s=l=>Ts(l,o.getCurrentDirectory(),lb(o));return YC(e,(l,f)=>g0(!!l.isJsxNamespaceFix,!!f.isJsxNamespaceFix)||Es(l.fix.kind,f.fix.kind)||Ebe(l.fix,f.fix,t,r,i.allowsImportingSpecifier,s))}function bbe(e,t,r,i,o){if(!!vt(e))return e[0].kind===0||e[0].kind===2?e[0]:e.reduce((s,l)=>Ebe(l,s,t,r,i.allowsImportingSpecifier,f=>Ts(f,o.getCurrentDirectory(),lb(o)))===-1?l:s)}function Ebe(e,t,r,i,o,s){return e.kind!==0&&t.kind!==0?g0(o(t.moduleSpecifier),o(e.moduleSpecifier))||w7e(e.moduleSpecifier,t.moduleSpecifier,r,i)||g0(Tbe(e,r,i.getCompilerOptions(),s),Tbe(t,r,i.getCompilerOptions(),s))||UR(e.moduleSpecifier,t.moduleSpecifier):0}function Tbe(e,t,r,i){var o;if(e.isReExport&&((o=e.exportInfo)==null?void 0:o.moduleFileName)&&$s(r)===2&&D7e(e.exportInfo.moduleFileName)){let s=i(ni(e.exportInfo.moduleFileName));return na(t.path,s)}return!1}function D7e(e){return Hl(e,[\".js\",\".jsx\",\".d.ts\",\".ts\",\".tsx\"],!0)===\"index\"}function w7e(e,t,r,i){return na(e,\"node:\")&&!na(t,\"node:\")?W7(r,i)?-1:1:na(t,\"node:\")&&!na(e,\"node:\")?W7(r,i)?1:-1:0}function R7e({sourceFile:e,program:t,host:r,preferences:i},o){let s=t.getTypeChecker(),l=O7e(o,s);if(!l)return;let f=s.getAliasedSymbol(l),d=l.name,g=[{symbol:l,moduleSymbol:f,moduleFileName:void 0,exportKind:3,targetFlags:f.flags,isFromPackageJson:!1}],m=$5(e,t);return Y5(g,void 0,!1,m,t,e,r,i).fixes.map(S=>{var x;return{fix:S,symbolName:d,errorIdentifierText:(x=zr(o,Re))==null?void 0:x.text}})}function O7e(e,t){let r=Re(e)?t.getSymbolAtLocation(e):void 0;if(o4(r))return r;let{parent:i}=e;if(Au(i)&&i.tagName===e||VS(i)){let o=t.resolveName(t.getJsxNamespace(i),Au(i)?e:i,111551,!1);if(o4(o))return o}}function rQ(e,t,r,i){if(r.verbatimModuleSyntax&&(Rl(r)===1||e.impliedNodeFormat===1))return 3;switch(t){case 0:return 0;case 1:return 1;case 2:return G7e(e,r,!!i);case 3:return N7e(e,r,!!i);default:return L.assertNever(t)}}function N7e(e,t,r){if(RT(t))return 1;let i=Rl(t);switch(i){case 2:case 1:case 3:return Yn(e)&&(Lc(e)||r)?2:3;case 4:case 5:case 6:case 7:case 99:case 0:return 2;case 100:case 199:return e.impliedNodeFormat===99?2:3;default:return L.assertNever(i,`Unexpected moduleKind ${i}`)}}function P7e({sourceFile:e,program:t,cancellationToken:r,host:i,preferences:o},s,l){let f=t.getTypeChecker(),d=t.getCompilerOptions();return Uo(iQ(e,f,s,d),g=>{if(g===\"default\")return;let m=SS(s),v=$5(e,t),S=F7e(g,wI(s),e1(s),r,e,t,l,i,o);return lo(OU(S.values(),x=>Y5(x,s.getStart(e),m,v,t,e,i,o).fixes),x=>({fix:x,symbolName:g,errorIdentifierText:s.text,isJsxNamespaceFix:g!==s.text}))})}function Sbe(e,t,r,i){let o=i.getTypeChecker(),s=o.resolveName(r,t,111551,!0);if(!s)return;let l=o.getTypeOnlyAliasDeclaration(s);if(!(!l||Gn(l)!==e))return{kind:4,typeOnlyAliasDeclaration:l}}function iQ(e,t,r,i){let o=r.parent;if((Au(o)||BS(o))&&o.tagName===r&&wY(i.jsx)){let s=t.getJsxNamespace(e);if(M7e(s,r,t))return!BI(r.text)&&!t.resolveName(r.text,r,111551,!1)?[r.text,s]:[s]}return[r.text]}function M7e(e,t,r){if(BI(t.text))return!0;let i=r.resolveName(e,t,111551,!0);return!i||vt(i.declarations,I0)&&!(i.flags&111551)}function F7e(e,t,r,i,o,s,l,f,d){var g;let m=Of(),v=dk(o,d,f),S=(g=f.getModuleSpecifierCache)==null?void 0:g.call(f),x=Jp(w=>QS(w?f.getPackageJsonAutoImportProvider():s,f));function A(w,C,P,F,B,q){let W=x(q);if(C&&PY(B,o,C,d,v,W,S)||!C&&v.allowsImportingAmbientModule(w,W)){let Y=B.getTypeChecker();m.add(tge(P,Y).toString(),{symbol:P,moduleSymbol:w,moduleFileName:C?.fileName,exportKind:F,targetFlags:wd(P,Y).flags,isFromPackageJson:q})}}return MY(s,f,d,l,(w,C,P,F)=>{let B=P.getTypeChecker();i.throwIfCancellationRequested();let q=P.getCompilerOptions(),W=Y7(w,B,q);W&&(W.name===e||sQ(w,Do(q),t)===e)&&wbe(W.resolvedSymbol,r)&&A(w,C,W.symbol,W.exportKind,P,F);let Y=B.tryGetMemberInModuleExportsAndProperties(e,w);Y&&wbe(Y,r)&&A(w,C,Y,0,P,F)}),m}function G7e(e,t,r){let i=RT(t),o=Yn(e);if(!o&&Rl(t)>=5)return i?1:2;if(o)return Lc(e)||r?i?1:2:3;for(let s of e.statements)if(Nl(s)&&!rc(s.moduleReference))return 3;return i?1:3}function aQ(e,t,r,i,o,s,l){let f,d=nr.ChangeTracker.with(e,g=>{f=B7e(g,t,r,i,o,s,l)});return Ma(lQ,d,f,uQ,_.Add_all_missing_imports)}function B7e(e,t,r,i,o,s,l){let f=z_(t,l);switch(i.kind){case 0:return oQ(e,t,i),[_.Change_0_to_1,r,`${i.namespacePrefix}.${r}`];case 1:return Cbe(e,t,i,f),[_.Change_0_to_1,r,Ibe(i.moduleSpecifier,f)+r];case 2:{let{importClauseOrBindingPattern:d,importKind:g,addAsTypeOnly:m,moduleSpecifier:v}=i;Abe(e,t,d,g===1?{name:r,addAsTypeOnly:m}:void 0,g===0?[{name:r,addAsTypeOnly:m}]:Je,s,l);let S=l_(v);return o?[_.Import_0_from_1,r,S]:[_.Update_import_from_0,S]}case 3:{let{importKind:d,moduleSpecifier:g,addAsTypeOnly:m,useRequire:v,qualification:S}=i,x=v?kbe:Lbe,A=d===1?{name:r,addAsTypeOnly:m}:void 0,w=d===0?[{name:r,addAsTypeOnly:m}]:void 0,C=d===2||d===3?{importKind:d,name:S?.namespacePrefix||r,addAsTypeOnly:m}:void 0;return L7(e,t,x(g,f,A,w,C,s),!0,l),S&&oQ(e,t,S),o?[_.Import_0_from_1,r,g]:[_.Add_import_from_0,g]}case 4:{let{typeOnlyAliasDeclaration:d}=i,g=U7e(e,d,s,t,l);return g.kind===273?[_.Remove_type_from_import_of_0_from_1,r,xbe(g.parent.parent)]:[_.Remove_type_from_import_declaration_from_0,xbe(g)]}default:return L.assertNever(i,`Unexpected fix kind ${i.kind}`)}}function xbe(e){var t,r;return e.kind===268?((r=zr((t=zr(e.moduleReference,um))==null?void 0:t.expression,es))==null?void 0:r.text)||e.moduleReference.getText():Ga(e.parent.moduleSpecifier,yo).text}function U7e(e,t,r,i,o){let s=u4(r);switch(t.kind){case 273:if(t.isTypeOnly){let f=v_.detectImportSpecifierSorting(t.parent.elements,o);if(t.parent.elements.length>1&&f){e.delete(i,t);let d=D.updateImportSpecifier(t,!1,t.propertyName,t.name),g=v_.getOrganizeImportsComparer(o,f===2),m=v_.getImportSpecifierInsertionIndex(t.parent.elements,d,g);e.insertImportSpecifierAtIndex(i,d,t.parent,m)}else e.deleteRange(i,t.getFirstToken());return t}else return L.assert(t.parent.parent.isTypeOnly),l(t.parent.parent),t.parent.parent;case 270:return l(t),t;case 271:return l(t.parent),t.parent;case 268:return e.deleteRange(i,t.getChildAt(1)),t;default:L.failBadSyntaxKind(t)}function l(f){if(e.delete(i,cY(f,i)),s){let d=zr(f.namedBindings,jg);if(d&&d.elements.length>1){v_.detectImportSpecifierSorting(d.elements,o)&&t.kind===273&&d.elements.indexOf(t)!==0&&(e.delete(i,t),e.insertImportSpecifierAtIndex(i,t,d,0));for(let g of d.elements)g!==t&&!g.isTypeOnly&&e.insertModifierBefore(i,154,g)}}}}function Abe(e,t,r,i,o,s,l){var f;if(r.kind===203){i&&v(r,i.name,\"default\");for(let S of o)v(r,S.name,void 0);return}let d=r.isTypeOnly&&vt([i,...o],S=>S?.addAsTypeOnly===4),g=r.namedBindings&&((f=zr(r.namedBindings,jg))==null?void 0:f.elements),m=d&&u4(s);if(i&&(L.assert(!r.name,\"Cannot add a default import to an import clause that already has one\"),e.insertNodeAt(t,r.getStart(t),D.createIdentifier(i.name),{suffix:\", \"})),o.length){let S;if(typeof l.organizeImportsIgnoreCase==\"boolean\")S=l.organizeImportsIgnoreCase;else if(g){let C=v_.detectImportSpecifierSorting(g,l);C!==3&&(S=C===2)}S===void 0&&(S=v_.detectSorting(t,l)===2);let x=v_.getOrganizeImportsComparer(l,S),A=Ag(o.map(C=>D.createImportSpecifier((!r.isTypeOnly||d)&&oP(C),void 0,D.createIdentifier(C.name))),(C,P)=>v_.compareImportOrExportSpecifiers(C,P,x)),w=g?.length&&v_.detectImportSpecifierSorting(g,l);if(w&&!(S&&w===1))for(let C of A){let P=m&&!C.isTypeOnly?0:v_.getImportSpecifierInsertionIndex(g,C,x);e.insertImportSpecifierAtIndex(t,C,r.namedBindings,P)}else if(g?.length)for(let C of A)e.insertNodeInListAfter(t,To(g),C,g);else if(A.length){let C=D.createNamedImports(A);r.namedBindings?e.replaceNode(t,r.namedBindings,C):e.insertNodeAfter(t,L.checkDefined(r.name,\"Import clause must have either named imports or a default import\"),C)}}if(d&&(e.delete(t,cY(r,t)),m&&g))for(let S of g)e.insertModifierBefore(t,154,S);function v(S,x,A){let w=D.createBindingElement(void 0,A,x);S.elements.length?e.insertNodeInListAfter(t,To(S.elements),w):e.replaceNode(t,S,D.createObjectBindingPattern([w]))}}function oQ(e,t,{namespacePrefix:r,usagePosition:i}){e.insertText(t,i,r+\".\")}function Cbe(e,t,{moduleSpecifier:r,usagePosition:i},o){e.insertText(t,i,Ibe(r,o))}function Ibe(e,t){let r=Hhe(t);return`import(${r}${e}${r}).`}function oP({addAsTypeOnly:e}){return e===2}function Lbe(e,t,r,i,o,s){let l=S7(e,t),f;if(r!==void 0||i?.length){let d=(!r||oP(r))&&Ji(i,oP)||s.verbatimModuleSyntax&&r?.addAsTypeOnly!==4&&!vt(i,g=>g.addAsTypeOnly===4);f=pA(f,Xg(r&&D.createIdentifier(r.name),i?.map(({addAsTypeOnly:g,name:m})=>D.createImportSpecifier(!d&&g===2,void 0,D.createIdentifier(m))),e,t,d))}if(o){let d=o.importKind===3?D.createImportEqualsDeclaration(void 0,oP(o),D.createIdentifier(o.name),D.createExternalModuleReference(l)):D.createImportDeclaration(void 0,D.createImportClause(oP(o),void 0,D.createNamespaceImport(D.createIdentifier(o.name))),l,void 0);f=pA(f,d)}return L.checkDefined(f)}function kbe(e,t,r,i,o){let s=S7(e,t),l;if(r||i?.length){let f=i?.map(({name:g})=>D.createBindingElement(void 0,void 0,g))||[];r&&f.unshift(D.createBindingElement(void 0,\"default\",r.name));let d=Dbe(D.createObjectBindingPattern(f),s);l=pA(l,d)}if(o){let f=Dbe(o.name,s);l=pA(l,f)}return L.checkDefined(l)}function Dbe(e,t){return D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(typeof e==\"string\"?D.createIdentifier(e):e,void 0,void 0,D.createCallExpression(D.createIdentifier(\"require\"),void 0,[t]))],2))}function wbe({declarations:e},t){return vt(e,r=>!!(kN(r)&t))}function sQ(e,t,r){return cQ(ld(l_(e.name)),t,r)}function cQ(e,t,r){let i=Hl(mA(e,\"/index\")),o=\"\",s=!0,l=i.charCodeAt(0);Pm(l,t)?(o+=String.fromCharCode(l),r&&(o=o.toUpperCase())):s=!1;for(let f=1;f<i.length;f++){let d=i.charCodeAt(f),g=tb(d,t);if(g){let m=String.fromCharCode(d);s||(m=m.toUpperCase()),o+=m}s=g}return _S(o)?`_${o}`:o||\"_\"}var lQ,uQ,dQ,V7e=gt({\"src/services/codefixes/importFixes.ts\"(){\"use strict\";Fr(),Qa(),lQ=\"import\",uQ=\"fixMissingImport\",dQ=[_.Cannot_find_name_0.code,_.Cannot_find_name_0_Did_you_mean_1.code,_.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code,_.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code,_.Cannot_find_namespace_0.code,_._0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead.code,_._0_only_refers_to_a_type_but_is_being_used_as_a_value_here.code,_.No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer.code,_._0_cannot_be_used_as_a_value_because_it_was_imported_using_import_type.code],za({errorCodes:dQ,getCodeActions(e){let{errorCode:t,preferences:r,sourceFile:i,span:o,program:s}=e,l=vbe(e,t,o.start,!0);if(!!l)return l.map(({fix:f,symbolName:d,errorIdentifierText:g})=>aQ(e,i,d,f,d!==g,s.getCompilerOptions(),r))},fixIds:[uQ],getAllCodeActions:e=>{let{sourceFile:t,program:r,preferences:i,host:o,cancellationToken:s}=e,l=_be(t,r,!0,i,o,s);return ox(e,dQ,f=>l.addImportFromDiagnostic(f,e)),ax(nr.ChangeTracker.with(e,l.writeFixes))}})}});function Rbe(e,t,r){let i=wr(e.getSemanticDiagnostics(t),l=>l.start===r.start&&l.length===r.length);if(i===void 0||i.relatedInformation===void 0)return;let o=wr(i.relatedInformation,l=>l.code===_.This_type_parameter_might_need_an_extends_0_constraint.code);if(o===void 0||o.file===void 0||o.start===void 0||o.length===void 0)return;let s=_Z(o.file,il(o.start,o.length));if(s!==void 0&&(Re(s)&&_c(s.parent)&&(s=s.parent),_c(s))){if(TL(s.parent))return;let l=Vi(t,r.start),f=e.getTypeChecker();return{constraint:H7e(f,l)||j7e(o.messageText),declaration:s,token:l}}}function Obe(e,t,r,i,o,s){let{declaration:l,constraint:f}=s,d=t.getTypeChecker();if(Ta(f))e.insertText(o,l.name.end,` extends ${f}`);else{let g=Do(t.getCompilerOptions()),m=cx({program:t,host:i}),v=c1(o,t,r,i),S=N9(d,v,f,void 0,g,void 0,m);S&&(e.replaceNode(o,l,D.updateTypeParameterDeclaration(l,void 0,l.name,S,l.default)),v.writeFixes(e))}}function j7e(e){let[t,r]=sv(e,`\n`,0).match(/`extends (.*)`/)||[];return r}function H7e(e,t){return bi(t.parent)?e.getTypeArgumentConstraint(t.parent):(ot(t)?e.getContextualType(t):void 0)||e.getTypeAtLocation(t)}var Q5,fQ,W7e=gt({\"src/services/codefixes/fixAddMissingConstraint.ts\"(){\"use strict\";Fr(),Qa(),Q5=\"addMissingConstraint\",fQ=[_.Type_0_is_not_comparable_to_type_1.code,_.Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated.code,_.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties.code,_.Type_0_is_not_assignable_to_type_1.code,_.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_types_of_the_target_s_properties.code,_.Property_0_is_incompatible_with_index_signature.code,_.Property_0_in_type_1_is_not_assignable_to_type_2.code,_.Type_0_does_not_satisfy_the_constraint_1.code],za({errorCodes:fQ,getCodeActions(e){let{sourceFile:t,span:r,program:i,preferences:o,host:s}=e,l=Rbe(i,t,r);if(l===void 0)return;let f=nr.ChangeTracker.with(e,d=>Obe(d,i,o,s,t,l));return[Ma(Q5,f,_.Add_extends_constraint,Q5,_.Add_extends_constraint_to_all_type_parameters)]},fixIds:[Q5],getAllCodeActions:e=>{let{program:t,preferences:r,host:i}=e,o=new Map;return ax(nr.ChangeTracker.with(e,s=>{ox(e,fQ,l=>{let f=Rbe(t,l.file,il(l.start,l.length));if(f&&U_(o,zo(f.declaration)))return Obe(s,t,r,i,l.file,f)})}))}})}});function Nbe(e,t,r,i){switch(r){case _.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code:case _.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code:case _.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code:case _.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code:case _.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code:return z7e(e,t.sourceFile,i);case _.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code:case _.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0.code:case _.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code:case _.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class.code:return J7e(e,t.sourceFile,i);default:L.fail(\"Unexpected error code: \"+r)}}function z7e(e,t,r){let i=Mbe(t,r);if(Cu(t)){e.addJSDocTags(t,i,[D.createJSDocOverrideTag(D.createIdentifier(\"override\"))]);return}let o=i.modifiers||Je,s=wr(o,kS),l=wr(o,Rue),f=wr(o,v=>ZX(v.kind)),d=fA(o,du),g=l?l.end:s?s.end:f?f.end:d?xo(t.text,d.end):i.getStart(t),m=f||s||l?{prefix:\" \"}:{suffix:\" \"};e.insertModifierAt(t,g,161,m)}function J7e(e,t,r){let i=Mbe(t,r);if(Cu(t)){e.filterJSDocTags(t,i,y8(g3));return}let o=wr(i.modifiers,Oue);L.assertIsDefined(o),e.deleteModifier(t,o)}function Pbe(e){switch(e.kind){case 173:case 169:case 171:case 174:case 175:return!0;case 166:return Ad(e,e.parent);default:return!1}}function Mbe(e,t){let r=Vi(e,t),i=jn(r,o=>Yr(o)?\"quit\":Pbe(o));return L.assert(i&&Pbe(i)),i}var _Q,eC,vk,pQ,mQ,K7e=gt({\"src/services/codefixes/fixOverrideModifier.ts\"(){\"use strict\";Fr(),Qa(),_Q=\"fixOverrideModifier\",eC=\"fixAddOverrideModifier\",vk=\"fixRemoveOverrideModifier\",pQ=[_.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code,_.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code,_.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code,_.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code,_.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code,_.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code,_.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class.code,_.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code,_.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0.code],mQ={[_.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code]:{descriptions:_.Add_override_modifier,fixId:eC,fixAllDescriptions:_.Add_all_missing_override_modifiers},[_.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code]:{descriptions:_.Add_override_modifier,fixId:eC,fixAllDescriptions:_.Add_all_missing_override_modifiers},[_.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code]:{descriptions:_.Remove_override_modifier,fixId:vk,fixAllDescriptions:_.Remove_all_unnecessary_override_modifiers},[_.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class.code]:{descriptions:_.Remove_override_modifier,fixId:vk,fixAllDescriptions:_.Remove_override_modifier},[_.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code]:{descriptions:_.Add_override_modifier,fixId:eC,fixAllDescriptions:_.Add_all_missing_override_modifiers},[_.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code]:{descriptions:_.Add_override_modifier,fixId:eC,fixAllDescriptions:_.Add_all_missing_override_modifiers},[_.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code]:{descriptions:_.Add_override_modifier,fixId:eC,fixAllDescriptions:_.Remove_all_unnecessary_override_modifiers},[_.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code]:{descriptions:_.Remove_override_modifier,fixId:vk,fixAllDescriptions:_.Remove_all_unnecessary_override_modifiers},[_.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0.code]:{descriptions:_.Remove_override_modifier,fixId:vk,fixAllDescriptions:_.Remove_all_unnecessary_override_modifiers}},za({errorCodes:pQ,getCodeActions:function(t){let{errorCode:r,span:i}=t,o=mQ[r];if(!o)return Je;let{descriptions:s,fixId:l,fixAllDescriptions:f}=o,d=nr.ChangeTracker.with(t,g=>Nbe(g,t,r,i.start));return[D$(_Q,d,s,l,f)]},fixIds:[_Q,eC,vk],getAllCodeActions:e=>ns(e,pQ,(t,r)=>{let{code:i,start:o}=r,s=mQ[i];!s||s.fixId!==e.fixId||Nbe(t,e,i,o)})})}});function Fbe(e,t,r,i){let o=z_(t,i),s=D.createStringLiteral(r.name.text,o===0);e.replaceNode(t,r,n6(r)?D.createElementAccessChain(r.expression,r.questionDotToken,s):D.createElementAccessExpression(r.expression,s))}function Gbe(e,t){return Ga(Vi(e,t).parent,br)}var Z5,hQ,q7e=gt({\"src/services/codefixes/fixNoPropertyAccessFromIndexSignature.ts\"(){\"use strict\";Fr(),Qa(),Z5=\"fixNoPropertyAccessFromIndexSignature\",hQ=[_.Property_0_comes_from_an_index_signature_so_it_must_be_accessed_with_0.code],za({errorCodes:hQ,fixIds:[Z5],getCodeActions(e){let{sourceFile:t,span:r,preferences:i}=e,o=Gbe(t,r.start),s=nr.ChangeTracker.with(e,l=>Fbe(l,e.sourceFile,o,i));return[Ma(Z5,s,[_.Use_element_access_for_0,o.name.text],Z5,_.Use_element_access_for_all_undeclared_properties)]},getAllCodeActions:e=>ns(e,hQ,(t,r)=>Fbe(t,r.file,Gbe(r.file,r.start),e.preferences))})}});function Bbe(e,t,r,i){let o=Vi(t,r);if(!W2(o))return;let s=Ku(o,!1,!1);if(!(!Jc(s)&&!ms(s))&&!Li(Ku(s,!1,!1))){let l=L.checkDefined(Yo(s,98,t)),{name:f}=s,d=L.checkDefined(s.body);return ms(s)?f&&js.Core.isSymbolReferencedInFile(f,i,t,d)?void 0:(e.delete(t,l),f&&e.delete(t,f),e.insertText(t,d.pos,\" =>\"),[_.Convert_function_expression_0_to_arrow_function,f?f.text:X7]):(e.replaceNode(t,l,D.createToken(85)),e.insertText(t,f.end,\" = \"),e.insertText(t,d.pos,\" =>\"),[_.Convert_function_declaration_0_to_arrow_function,f.text])}}var e9,gQ,X7e=gt({\"src/services/codefixes/fixImplicitThis.ts\"(){\"use strict\";Fr(),Qa(),e9=\"fixImplicitThis\",gQ=[_.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code],za({errorCodes:gQ,getCodeActions:function(t){let{sourceFile:r,program:i,span:o}=t,s,l=nr.ChangeTracker.with(t,f=>{s=Bbe(f,r,o.start,i.getTypeChecker())});return s?[Ma(e9,l,s,e9,_.Fix_all_implicit_this_errors)]:Je},fixIds:[e9],getAllCodeActions:e=>ns(e,gQ,(t,r)=>{Bbe(t,r.file,r.start,e.program.getTypeChecker())})})}});function Ube(e,t,r){var i;let o=Vi(e,t);if(Re(o)){let s=jn(o,gl);if(s===void 0)return;let l=yo(s.moduleSpecifier)?s.moduleSpecifier.text:void 0;if(l===void 0)return;let f=DA(e,l,void 0);if(f===void 0)return;let d=r.getSourceFile(f.resolvedFileName);if(d===void 0||fk(r,d))return;let g=d.symbol,m=(i=zr(g.valueDeclaration,Qp))==null?void 0:i.locals;if(m===void 0)return;let v=m.get(o.escapedText);if(v===void 0)return;let S=$7e(v);return S===void 0?void 0:{exportName:{node:o,isTypeOnly:s2(S)},node:S,moduleSourceFile:d,moduleSpecifier:l}}}function Y7e(e,t,{exportName:r,node:i,moduleSourceFile:o}){let s=t9(o,r.isTypeOnly);s?Vbe(e,t,o,s,[r]):zR(i)?e.insertExportModifier(o,i):jbe(e,t,o,[r])}function yQ(e,t,r,i,o){Fn(i)&&(o?Vbe(e,t,r,o,i):jbe(e,t,r,i))}function t9(e,t){let r=i=>Il(i)&&(t&&i.isTypeOnly||!i.isTypeOnly);return fA(e.statements,r)}function Vbe(e,t,r,i,o){let s=i.exportClause&&m_(i.exportClause)?i.exportClause.elements:D.createNodeArray([]),l=!i.isTypeOnly&&!!(u_(t.getCompilerOptions())||wr(s,f=>f.isTypeOnly));e.replaceNode(r,i,D.updateExportDeclaration(i,i.modifiers,i.isTypeOnly,D.createNamedExports(D.createNodeArray([...s,...Hbe(o,l)],s.hasTrailingComma)),i.moduleSpecifier,i.assertClause))}function jbe(e,t,r,i){e.insertNodeAtEndOfScope(r,r,D.createExportDeclaration(void 0,!1,D.createNamedExports(Hbe(i,u_(t.getCompilerOptions()))),void 0,void 0))}function Hbe(e,t){return D.createNodeArray(on(e,r=>D.createExportSpecifier(t&&r.isTypeOnly,void 0,r.node)))}function $7e(e){if(e.valueDeclaration===void 0)return Sl(e.declarations);let t=e.valueDeclaration,r=wi(t)?zr(t.parent.parent,Bc):void 0;return r&&Fn(r.declarationList.declarations)===1?r:t}var n9,vQ,Q7e=gt({\"src/services/codefixes/fixImportNonExportedMember.ts\"(){\"use strict\";Fr(),Qa(),n9=\"fixImportNonExportedMember\",vQ=[_.Module_0_declares_1_locally_but_it_is_not_exported.code],za({errorCodes:vQ,fixIds:[n9],getCodeActions(e){let{sourceFile:t,span:r,program:i}=e,o=Ube(t,r.start,i);if(o===void 0)return;let s=nr.ChangeTracker.with(e,l=>Y7e(l,i,o));return[Ma(n9,s,[_.Export_0_from_module_1,o.exportName.node.text,o.moduleSpecifier],n9,_.Export_all_referenced_locals)]},getAllCodeActions(e){let{program:t}=e;return ax(nr.ChangeTracker.with(e,r=>{let i=new Map;ox(e,vQ,o=>{let s=Ube(o.file,o.start,t);if(s===void 0)return;let{exportName:l,node:f,moduleSourceFile:d}=s;if(t9(d,l.isTypeOnly)===void 0&&zR(f))r.insertExportModifier(d,f);else{let g=i.get(d)||{typeOnlyExports:[],exports:[]};l.isTypeOnly?g.typeOnlyExports.push(l):g.exports.push(l),i.set(d,g)}}),i.forEach((o,s)=>{let l=t9(s,!0);l&&l.isTypeOnly?(yQ(r,t,s,o.typeOnlyExports,l),yQ(r,t,s,o.exports,t9(s,!1))):yQ(r,t,s,[...o.exports,...o.typeOnlyExports],l)})}))}})}});function Z7e(e,t){let r=Vi(e,t);return jn(r,i=>i.kind===199)}function e5e(e,t,r){if(!r)return;let i=r.type,o=!1,s=!1;for(;i.kind===187||i.kind===188||i.kind===193;)i.kind===187?o=!0:i.kind===188&&(s=!0),i=i.type;let l=D.updateNamedTupleMember(r,r.dotDotDotToken||(s?D.createToken(25):void 0),r.name,r.questionToken||(o?D.createToken(57):void 0),i);l!==r&&e.replaceNode(t,r,l)}var r9,Wbe,t5e=gt({\"src/services/codefixes/fixIncorrectNamedTupleSyntax.ts\"(){\"use strict\";Fr(),Qa(),r9=\"fixIncorrectNamedTupleSyntax\",Wbe=[_.A_labeled_tuple_element_is_declared_as_optional_with_a_question_mark_after_the_name_and_before_the_colon_rather_than_after_the_type.code,_.A_labeled_tuple_element_is_declared_as_rest_with_a_before_the_name_rather_than_before_the_type.code],za({errorCodes:Wbe,getCodeActions:function(t){let{sourceFile:r,span:i}=t,o=Z7e(r,i.start),s=nr.ChangeTracker.with(t,l=>e5e(l,r,o));return[Ma(r9,s,_.Move_labeled_tuple_element_modifiers_to_labels,r9,_.Move_labeled_tuple_element_modifiers_to_labels)]},fixIds:[r9]})}});function zbe(e,t,r,i){let o=Vi(e,t),s=o.parent;if((i===_.No_overload_matches_this_call.code||i===_.Type_0_is_not_assignable_to_type_1.code)&&!Sp(s))return;let l=r.program.getTypeChecker(),f;if(br(s)&&s.name===o){L.assert(Ah(o),\"Expected an identifier for spelling (property access)\");let d=l.getTypeAtLocation(s.expression);s.flags&32&&(d=l.getNonNullableType(d)),f=l.getSuggestedSymbolForNonexistentProperty(o,d)}else if(ar(s)&&s.operatorToken.kind===101&&s.left===o&&pi(o)){let d=l.getTypeAtLocation(s.right);f=l.getSuggestedSymbolForNonexistentProperty(o,d)}else if(Yu(s)&&s.right===o){let d=l.getSymbolAtLocation(s.left);d&&d.flags&1536&&(f=l.getSuggestedSymbolForNonexistentModule(s.right,d))}else if($u(s)&&s.name===o){L.assertNode(o,Re,\"Expected an identifier for spelling (import)\");let d=jn(o,gl),g=r5e(e,r,d);g&&g.symbol&&(f=l.getSuggestedSymbolForNonexistentModule(o,g.symbol))}else if(Sp(s)&&s.name===o){L.assertNode(o,Re,\"Expected an identifier for JSX attribute\");let d=jn(o,Au),g=l.getContextualTypeForArgumentAtIndex(d,0);f=l.getSuggestedSymbolForNonexistentJSXAttribute(o,g)}else if(Mr(s,16384)&&_l(s)&&s.name===o){let d=jn(o,Yr),g=d?hp(d):void 0,m=g?l.getTypeAtLocation(g):void 0;m&&(f=l.getSuggestedSymbolForNonexistentClassMember(Qc(o),m))}else{let d=e1(o),g=Qc(o);L.assert(g!==void 0,\"name should be defined\"),f=l.getSuggestedSymbolForNonexistentSymbol(o,g,n5e(d))}return f===void 0?void 0:{node:o,suggestedSymbol:f}}function Jbe(e,t,r,i,o){let s=fc(i);if(!r_(s,o)&&br(r.parent)){let l=i.valueDeclaration;l&&zl(l)&&pi(l.name)?e.replaceNode(t,r,D.createIdentifier(s)):e.replaceNode(t,r.parent,D.createElementAccessExpression(r.parent.expression,D.createStringLiteral(s)))}else e.replaceNode(t,r,D.createIdentifier(s))}function n5e(e){let t=0;return e&4&&(t|=1920),e&2&&(t|=788968),e&1&&(t|=111551),t}function r5e(e,t,r){if(!r||!es(r.moduleSpecifier))return;let i=DA(e,r.moduleSpecifier.text,H_(e,r.moduleSpecifier));if(!!i)return t.program.getSourceFile(i.resolvedFileName)}var bQ,EQ,i5e=gt({\"src/services/codefixes/fixSpelling.ts\"(){\"use strict\";Fr(),Qa(),bQ=\"fixSpelling\",EQ=[_.Property_0_does_not_exist_on_type_1_Did_you_mean_2.code,_.Property_0_may_not_exist_on_type_1_Did_you_mean_2.code,_.Cannot_find_name_0_Did_you_mean_1.code,_.Could_not_find_name_0_Did_you_mean_1.code,_.Cannot_find_namespace_0_Did_you_mean_1.code,_.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code,_.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code,_._0_has_no_exported_member_named_1_Did_you_mean_2.code,_.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1.code,_.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1.code,_.No_overload_matches_this_call.code,_.Type_0_is_not_assignable_to_type_1.code],za({errorCodes:EQ,getCodeActions(e){let{sourceFile:t,errorCode:r}=e,i=zbe(t,e.span.start,e,r);if(!i)return;let{node:o,suggestedSymbol:s}=i,l=Do(e.host.getCompilationSettings()),f=nr.ChangeTracker.with(e,d=>Jbe(d,t,o,s,l));return[Ma(\"spelling\",f,[_.Change_spelling_to_0,fc(s)],bQ,_.Fix_all_detected_spelling_errors)]},fixIds:[bQ],getAllCodeActions:e=>ns(e,EQ,(t,r)=>{let i=zbe(r.file,r.start,e,r.code),o=Do(e.host.getCompilationSettings());i&&Jbe(t,e.sourceFile,i.node,i.suggestedSymbol,o)})})}});function Kbe(e,t,r){let i=e.createSymbol(4,t.escapedText);i.links.type=e.getTypeAtLocation(r);let o=Ua([i]);return e.createAnonymousType(void 0,o,[],[],[])}function TQ(e,t,r,i){if(!t.body||!Va(t.body)||Fn(t.body.statements)!==1)return;let o=Vo(t.body.statements);if(Ol(o)&&SQ(e,t,e.getTypeAtLocation(o.expression),r,i))return{declaration:t,kind:0,expression:o.expression,statement:o,commentSource:o.expression};if(J0(o)&&Ol(o.statement)){let s=D.createObjectLiteralExpression([D.createPropertyAssignment(o.label,o.statement.expression)]),l=Kbe(e,o.label,o.statement.expression);if(SQ(e,t,l,r,i))return xs(t)?{declaration:t,kind:1,expression:s,statement:o,commentSource:o.statement.expression}:{declaration:t,kind:0,expression:s,statement:o,commentSource:o.statement.expression}}else if(Va(o)&&Fn(o.statements)===1){let s=Vo(o.statements);if(J0(s)&&Ol(s.statement)){let l=D.createObjectLiteralExpression([D.createPropertyAssignment(s.label,s.statement.expression)]),f=Kbe(e,s.label,s.statement.expression);if(SQ(e,t,f,r,i))return{declaration:t,kind:0,expression:l,statement:o,commentSource:s}}}}function SQ(e,t,r,i,o){if(o){let s=e.getSignatureFromDeclaration(t);if(s){Mr(t,512)&&(r=e.createPromiseType(r));let l=e.createSignature(t,s.typeParameters,s.thisParameter,s.parameters,r,void 0,s.minArgumentCount,s.flags);r=e.createAnonymousType(void 0,Ua(),[l],[],[])}else r=e.getAnyType()}return e.isTypeAssignableTo(r,i)}function qbe(e,t,r,i){let o=Vi(t,r);if(!o.parent)return;let s=jn(o.parent,Ds);switch(i){case _.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value.code:return!s||!s.body||!s.type||!Od(s.type,o)?void 0:TQ(e,s,e.getTypeFromTypeNode(s.type),!1);case _.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code:if(!s||!Pa(s.parent)||!s.body)return;let l=s.parent.arguments.indexOf(s),f=e.getContextualTypeForArgumentAtIndex(s.parent,l);return f?TQ(e,s,f,!0):void 0;case _.Type_0_is_not_assignable_to_type_1.code:if(!Rh(o)||!MA(o.parent)&&!Sp(o.parent))return;let d=a5e(o.parent);return!d||!Ds(d)||!d.body?void 0:TQ(e,d,e.getTypeAtLocation(o.parent),!0)}}function a5e(e){switch(e.kind){case 257:case 166:case 205:case 169:case 299:return e.initializer;case 288:return e.initializer&&(CL(e.initializer)?e.initializer.expression:void 0);case 300:case 168:case 302:case 351:case 344:return}}function Xbe(e,t,r,i){pd(r);let o=P7(t);e.replaceNode(t,i,D.createReturnStatement(r),{leadingTriviaOption:nr.LeadingTriviaOption.Exclude,trailingTriviaOption:nr.TrailingTriviaOption.Exclude,suffix:o?\";\":void 0})}function Ybe(e,t,r,i,o,s){let l=s||bY(i)?D.createParenthesizedExpression(i):i;pd(o),i1(o,l),e.replaceNode(t,r.body,l)}function $be(e,t,r,i){e.replaceNode(t,r.body,D.createParenthesizedExpression(i))}function o5e(e,t,r){let i=nr.ChangeTracker.with(e,o=>Xbe(o,e.sourceFile,t,r));return Ma(i9,i,_.Add_a_return_statement,a9,_.Add_all_missing_return_statement)}function s5e(e,t,r,i){let o=nr.ChangeTracker.with(e,s=>Ybe(s,e.sourceFile,t,r,i,!1));return Ma(i9,o,_.Remove_braces_from_arrow_function_body,o9,_.Remove_braces_from_all_arrow_function_bodies_with_relevant_issues)}function c5e(e,t,r){let i=nr.ChangeTracker.with(e,o=>$be(o,e.sourceFile,t,r));return Ma(i9,i,_.Wrap_the_following_body_with_parentheses_which_should_be_an_object_literal,s9,_.Wrap_all_object_literal_with_parentheses)}var i9,a9,o9,s9,xQ,l5e=gt({\"src/services/codefixes/returnValueCorrect.ts\"(){\"use strict\";Fr(),Qa(),i9=\"returnValueCorrect\",a9=\"fixAddReturnStatement\",o9=\"fixRemoveBracesFromArrowFunctionBody\",s9=\"fixWrapTheBlockWithParen\",xQ=[_.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value.code,_.Type_0_is_not_assignable_to_type_1.code,_.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code],za({errorCodes:xQ,fixIds:[a9,o9,s9],getCodeActions:function(t){let{program:r,sourceFile:i,span:{start:o},errorCode:s}=t,l=qbe(r.getTypeChecker(),i,o,s);if(!!l)return l.kind===0?Sn([o5e(t,l.expression,l.statement)],xs(l.declaration)?s5e(t,l.declaration,l.expression,l.commentSource):void 0):[c5e(t,l.declaration,l.expression)]},getAllCodeActions:e=>ns(e,xQ,(t,r)=>{let i=qbe(e.program.getTypeChecker(),r.file,r.start,r.code);if(!!i)switch(e.fixId){case a9:Xbe(t,r.file,i.expression,i.statement);break;case o9:if(!xs(i.declaration))return;Ybe(t,r.file,i.declaration,i.expression,i.commentSource,!1);break;case s9:if(!xs(i.declaration))return;$be(t,r.file,i.declaration,i.expression);break;default:L.fail(JSON.stringify(e.fixId))}})})}});function Qbe(e,t,r,i,o){var s;let l=Vi(e,t),f=l.parent;if(r===_.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code){if(!(l.kind===18&&rs(f)&&Pa(f.parent)))return;let x=Yc(f.parent.arguments,P=>P===f);if(x<0)return;let A=i.getResolvedSignature(f.parent);if(!(A&&A.declaration&&A.parameters[x]))return;let w=A.parameters[x].valueDeclaration;if(!(w&&ha(w)&&Re(w.name)))return;let C=lo(i.getUnmatchedProperties(i.getTypeAtLocation(f),i.getParameterType(A,x),!1,!1));return Fn(C)?{kind:3,token:w.name,properties:C,parentDeclaration:f}:void 0}if(!Ah(l))return;if(Re(l)&&Jy(f)&&f.initializer&&rs(f.initializer)){let x=lo(i.getUnmatchedProperties(i.getTypeAtLocation(f.initializer),i.getTypeAtLocation(l),!1,!1));return Fn(x)?{kind:3,token:l,properties:x,parentDeclaration:f.initializer}:void 0}if(Re(l)&&Au(l.parent)){let x=Do(o.getCompilerOptions()),A=h5e(i,x,l.parent);return Fn(A)?{kind:4,token:l,attributes:A,parentDeclaration:l.parent}:void 0}if(Re(l)){let x=(s=i.getContextualType(l))==null?void 0:s.getNonNullableType();if(x&&Ur(x)&16){let A=Sl(i.getSignaturesOfType(x,0));return A===void 0?void 0:{kind:5,token:l,signature:A,sourceFile:e,parentDeclaration:l0e(l)}}if(Pa(f)&&f.expression===l)return{kind:2,token:l,call:f,sourceFile:e,modifierFlags:0,parentDeclaration:l0e(l)}}if(!br(f))return;let d=iY(i.getTypeAtLocation(f.expression)),g=d.symbol;if(!g||!g.declarations)return;if(Re(l)&&Pa(f.parent)){let x=wr(g.declarations,Tc),A=x?.getSourceFile();if(x&&A&&!fk(o,A))return{kind:2,token:l,call:f.parent,sourceFile:e,modifierFlags:1,parentDeclaration:x};let w=wr(g.declarations,Li);if(e.commonJsModuleIndicator)return;if(w&&!fk(o,w))return{kind:2,token:l,call:f.parent,sourceFile:w,modifierFlags:1,parentDeclaration:w}}let m=wr(g.declarations,Yr);if(!m&&pi(l))return;let v=m||wr(g.declarations,x=>ku(x)||Rd(x));if(v&&!fk(o,v.getSourceFile())){let x=!Rd(v)&&(d.target||d)!==i.getDeclaredTypeOfSymbol(g);if(x&&(pi(l)||ku(v)))return;let A=v.getSourceFile(),w=Rd(v)?0:(x?32:0)|(DY(l.text)?8:0),C=Cu(A),P=zr(f.parent,Pa);return{kind:0,token:l,call:P,modifierFlags:w,parentDeclaration:v,declSourceFile:A,isJSFile:C}}let S=wr(g.declarations,hb);if(S&&!(d.flags&1056)&&!pi(l)&&!fk(o,S.getSourceFile()))return{kind:1,token:l,parentDeclaration:S}}function u5e(e,t){return t.isJSFile?oT(d5e(e,t)):f5e(e,t)}function d5e(e,{parentDeclaration:t,declSourceFile:r,modifierFlags:i,token:o}){if(ku(t)||Rd(t))return;let s=nr.ChangeTracker.with(e,f=>Zbe(f,r,t,o,!!(i&32)));if(s.length===0)return;let l=i&32?_.Initialize_static_property_0:pi(o)?_.Declare_a_private_field_named_0:_.Initialize_property_0_in_the_constructor;return Ma(Yg,s,[l,o.text],Yg,_.Add_all_missing_members)}function Zbe(e,t,r,i,o){let s=i.text;if(o){if(r.kind===228)return;let l=r.name.getText(),f=e0e(D.createIdentifier(l),s);e.insertNodeAfter(t,r,f)}else if(pi(i)){let l=D.createPropertyDeclaration(void 0,s,void 0,void 0,void 0),f=r0e(r);f?e.insertNodeAfter(t,f,l):e.insertMemberAtStart(t,r,l)}else{let l=Vm(r);if(!l)return;let f=e0e(D.createThis(),s);e.insertNodeAtConstructorEnd(t,l,f)}}function e0e(e,t){return D.createExpressionStatement(D.createAssignment(D.createPropertyAccessExpression(e,t),l1()))}function f5e(e,{parentDeclaration:t,declSourceFile:r,modifierFlags:i,token:o}){let s=o.text,l=i&32,f=t0e(e.program.getTypeChecker(),t,o),d=m=>nr.ChangeTracker.with(e,v=>n0e(v,r,t,s,f,m)),g=[Ma(Yg,d(i&32),[l?_.Declare_static_property_0:_.Declare_property_0,s],Yg,_.Add_all_missing_members)];return l||pi(o)||(i&8&&g.unshift(J_(Yg,d(8),[_.Declare_private_property_0,s])),g.push(_5e(e,r,t,o.text,f))),g}function t0e(e,t,r){let i;if(r.parent.parent.kind===223){let o=r.parent.parent,s=r.parent===o.left?o.right:o.left,l=e.getWidenedType(e.getBaseTypeOfLiteralType(e.getTypeAtLocation(s)));i=e.typeToTypeNode(l,t,1)}else{let o=e.getContextualType(r.parent);i=o?e.typeToTypeNode(o,void 0,1):void 0}return i||D.createKeywordTypeNode(131)}function n0e(e,t,r,i,o,s){let l=s?D.createNodeArray(D.createModifiersFromModifierFlags(s)):void 0,f=Yr(r)?D.createPropertyDeclaration(l,i,void 0,o,void 0):D.createPropertySignature(void 0,i,void 0,o),d=r0e(r);d?e.insertNodeAfter(t,d,f):e.insertMemberAtStart(t,r,f)}function r0e(e){let t;for(let r of e.members){if(!Na(r))break;t=r}return t}function _5e(e,t,r,i,o){let s=D.createKeywordTypeNode(152),l=D.createParameterDeclaration(void 0,void 0,\"x\",void 0,s,void 0),f=D.createIndexSignature(void 0,[l],o),d=nr.ChangeTracker.with(e,g=>g.insertMemberAtStart(t,r,f));return J_(Yg,d,[_.Add_index_signature_for_property_0,i])}function p5e(e,t){let{parentDeclaration:r,declSourceFile:i,modifierFlags:o,token:s,call:l}=t;if(l===void 0||pi(s))return;let f=s.text,d=m=>nr.ChangeTracker.with(e,v=>i0e(e,v,l,s,m,r,i)),g=[Ma(Yg,d(o&32),[o&32?_.Declare_static_method_0:_.Declare_method_0,f],Yg,_.Add_all_missing_members)];return o&8&&g.unshift(J_(Yg,d(8),[_.Declare_private_method_0,f])),g}function i0e(e,t,r,i,o,s,l){let f=c1(l,e.program,e.preferences,e.host),d=Yr(s)?171:170,g=sZ(d,e,f,r,i,o,s),m=g5e(s,r);m?t.insertNodeAfter(l,m,g):t.insertMemberAtStart(l,s,g),f.writeFixes(t)}function a0e(e,t,{token:r,parentDeclaration:i}){let o=vt(i.members,l=>{let f=t.getTypeAtLocation(l);return!!(f&&f.flags&402653316)}),s=D.createEnumMember(r,o?D.createStringLiteral(r.text):void 0);e.replaceNode(i.getSourceFile(),i,D.updateEnumDeclaration(i,i.modifiers,i.name,Qi(i.members,oT(s))),{leadingTriviaOption:nr.LeadingTriviaOption.IncludeAll,trailingTriviaOption:nr.TrailingTriviaOption.Exclude})}function o0e(e,t,r){let i=z_(t.sourceFile,t.preferences),o=c1(t.sourceFile,t.program,t.preferences,t.host),s=r.kind===2?sZ(259,t,o,r.call,vr(r.token),r.modifierFlags,r.parentDeclaration):O9(259,t,i,r.signature,_P(_.Function_not_implemented.message,i),r.token,void 0,void 0,void 0,o);s===void 0&&L.fail(\"fixMissingFunctionDeclaration codefix got unexpected error.\"),V_(r.parentDeclaration)?e.insertNodeBefore(r.sourceFile,r.parentDeclaration,s,!0):e.insertNodeAtEndOfScope(r.sourceFile,r.parentDeclaration,s),o.writeFixes(e)}function s0e(e,t,r){let i=c1(t.sourceFile,t.program,t.preferences,t.host),o=z_(t.sourceFile,t.preferences),s=t.program.getTypeChecker(),l=r.parentDeclaration.attributes,f=vt(l.properties,BT),d=on(r.attributes,v=>{let S=c9(t,s,i,o,s.getTypeOfSymbol(v),r.parentDeclaration),x=D.createIdentifier(v.name),A=D.createJsxAttribute(x,D.createJsxExpression(void 0,S));return go(x,A),A}),g=D.createJsxAttributes(f?[...d,...l.properties]:[...l.properties,...d]),m={prefix:l.pos===l.end?\" \":void 0};e.replaceNode(t.sourceFile,l,g,m),i.writeFixes(e)}function c0e(e,t,r){let i=c1(t.sourceFile,t.program,t.preferences,t.host),o=z_(t.sourceFile,t.preferences),s=Do(t.program.getCompilerOptions()),l=t.program.getTypeChecker(),f=on(r.properties,g=>{let m=c9(t,l,i,o,l.getTypeOfSymbol(g),r.parentDeclaration);return D.createPropertyAssignment(y5e(g,s,o,l),m)}),d={leadingTriviaOption:nr.LeadingTriviaOption.Exclude,trailingTriviaOption:nr.TrailingTriviaOption.Exclude,indentation:r.indentation};e.replaceNode(t.sourceFile,r.parentDeclaration,D.createObjectLiteralExpression([...r.parentDeclaration.properties,...f],!0),d),i.writeFixes(e)}function c9(e,t,r,i,o,s){if(o.flags&3)return l1();if(o.flags&134217732)return D.createStringLiteral(\"\",i===0);if(o.flags&8)return D.createNumericLiteral(0);if(o.flags&64)return D.createBigIntLiteral(\"0n\");if(o.flags&16)return D.createFalse();if(o.flags&1056){let l=o.symbol.exports?u8(o.symbol.exports.values()):o.symbol,f=t.symbolToExpression(o.symbol.parent?o.symbol.parent:o.symbol,111551,void 0,void 0);return l===void 0||f===void 0?D.createNumericLiteral(0):D.createPropertyAccessExpression(f,t.symbolToString(l))}if(o.flags&256)return D.createNumericLiteral(o.value);if(o.flags&2048)return D.createBigIntLiteral(o.value);if(o.flags&128)return D.createStringLiteral(o.value,i===0);if(o.flags&512)return o===t.getFalseType()||o===t.getFalseType(!0)?D.createFalse():D.createTrue();if(o.flags&65536)return D.createNull();if(o.flags&1048576){let l=ks(o.types,f=>c9(e,t,r,i,f,s));return l??l1()}if(t.isArrayLikeType(o))return D.createArrayLiteralExpression();if(m5e(o)){let l=on(t.getPropertiesOfType(o),f=>{let d=c9(e,t,r,i,t.getTypeOfSymbol(f),s);return D.createPropertyAssignment(f.name,d)});return D.createObjectLiteralExpression(l,!0)}if(Ur(o)&16){if(wr(o.symbol.declarations||Je,Kp(Jm,zm,Nc))===void 0)return l1();let f=t.getSignaturesOfType(o,0);if(f===void 0)return l1();let d=O9(215,e,i,f[0],_P(_.Function_not_implemented.message,i),void 0,void 0,void 0,s,r);return d??l1()}if(Ur(o)&1){let l=Nh(o.symbol);if(l===void 0||B0(l))return l1();let f=Vm(l);return f&&Fn(f.parameters)?l1():D.createNewExpression(D.createIdentifier(o.symbol.name),void 0,void 0)}return l1()}function l1(){return D.createIdentifier(\"undefined\")}function m5e(e){return e.flags&524288&&(Ur(e)&128||e.symbol&&zr(Wp(e.symbol.declarations),Rd))}function h5e(e,t,r){let i=e.getContextualType(r.attributes);if(i===void 0)return Je;let o=i.getProperties();if(!Fn(o))return Je;let s=new Set;for(let l of r.attributes.properties)if(Sp(l)&&s.add(l.name.escapedText),BT(l)){let f=e.getTypeAtLocation(l.expression);for(let d of f.getProperties())s.add(d.escapedName)}return Pr(o,l=>r_(l.name,t,1)&&!(l.flags&16777216||ac(l)&48||s.has(l.escapedName)))}function g5e(e,t){if(Rd(e))return;let r=jn(t,i=>Nc(i)||Ec(i));return r&&r.parent===e?r:void 0}function y5e(e,t,r,i){if(Zp(e)){let o=i.symbolToNode(e,111551,void 0,1073741824);if(o&&ts(o))return o}return E4(e.name,t,r===0)}function l0e(e){if(jn(e,CL)){let t=jn(e.parent,V_);if(t)return t}return Gn(e)}var Yg,sP,cP,lP,AQ,v5e=gt({\"src/services/codefixes/fixAddMissingMember.ts\"(){\"use strict\";Fr(),Qa(),Yg=\"fixMissingMember\",sP=\"fixMissingProperties\",cP=\"fixMissingAttributes\",lP=\"fixMissingFunctionDeclaration\",AQ=[_.Property_0_does_not_exist_on_type_1.code,_.Property_0_does_not_exist_on_type_1_Did_you_mean_2.code,_.Property_0_is_missing_in_type_1_but_required_in_type_2.code,_.Type_0_is_missing_the_following_properties_from_type_1_Colon_2.code,_.Type_0_is_missing_the_following_properties_from_type_1_Colon_2_and_3_more.code,_.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code,_.Cannot_find_name_0.code],za({errorCodes:AQ,getCodeActions(e){let t=e.program.getTypeChecker(),r=Qbe(e.sourceFile,e.span.start,e.errorCode,t,e.program);if(!!r){if(r.kind===3){let i=nr.ChangeTracker.with(e,o=>c0e(o,e,r));return[Ma(sP,i,_.Add_missing_properties,sP,_.Add_all_missing_properties)]}if(r.kind===4){let i=nr.ChangeTracker.with(e,o=>s0e(o,e,r));return[Ma(cP,i,_.Add_missing_attributes,cP,_.Add_all_missing_attributes)]}if(r.kind===2||r.kind===5){let i=nr.ChangeTracker.with(e,o=>o0e(o,e,r));return[Ma(lP,i,[_.Add_missing_function_declaration_0,r.token.text],lP,_.Add_all_missing_function_declarations)]}if(r.kind===1){let i=nr.ChangeTracker.with(e,o=>a0e(o,e.program.getTypeChecker(),r));return[Ma(Yg,i,[_.Add_missing_enum_member_0,r.token.text],Yg,_.Add_all_missing_members)]}return Qi(p5e(e,r),u5e(e,r))}},fixIds:[Yg,lP,sP,cP],getAllCodeActions:e=>{let{program:t,fixId:r}=e,i=t.getTypeChecker(),o=new Map,s=new Map;return ax(nr.ChangeTracker.with(e,l=>{ox(e,AQ,f=>{let d=Qbe(f.file,f.start,f.code,i,e.program);if(!(!d||!U_(o,zo(d.parentDeclaration)+\"#\"+d.token.text))){if(r===lP&&(d.kind===2||d.kind===5))o0e(l,e,d);else if(r===sP&&d.kind===3)c0e(l,e,d);else if(r===cP&&d.kind===4)s0e(l,e,d);else if(d.kind===1&&a0e(l,i,d),d.kind===0){let{parentDeclaration:g,token:m}=d,v=jD(s,g,()=>[]);v.some(S=>S.token.text===m.text)||v.push(d)}}}),s.forEach((f,d)=>{let g=Rd(d)?void 0:mZ(d,i);for(let m of f){if(g?.some(P=>{let F=s.get(P);return!!F&&F.some(({token:B})=>B.text===m.token.text)}))continue;let{parentDeclaration:v,declSourceFile:S,modifierFlags:x,token:A,call:w,isJSFile:C}=m;if(w&&!pi(A))i0e(e,l,w,A,x&32,v,S);else if(C&&!ku(v)&&!Rd(v))Zbe(l,S,v,A,!!(x&32));else{let P=t0e(i,v,A);n0e(l,S,v,A.text,P,x&32)}}})}))}})}});function u0e(e,t,r){let i=Ga(b5e(t,r),Pa),o=D.createNewExpression(i.expression,i.typeArguments,i.arguments);e.replaceNode(t,i,o)}function b5e(e,t){let r=Vi(e,t.start),i=wl(t);for(;r.end<i;)r=r.parent;return r}var l9,CQ,E5e=gt({\"src/services/codefixes/fixAddMissingNewOperator.ts\"(){\"use strict\";Fr(),Qa(),l9=\"addMissingNewOperator\",CQ=[_.Value_of_type_0_is_not_callable_Did_you_mean_to_include_new.code],za({errorCodes:CQ,getCodeActions(e){let{sourceFile:t,span:r}=e,i=nr.ChangeTracker.with(e,o=>u0e(o,t,r));return[Ma(l9,i,_.Add_missing_new_operator_to_call,l9,_.Add_missing_new_operator_to_all_calls)]},fixIds:[l9],getAllCodeActions:e=>ns(e,CQ,(t,r)=>u0e(t,e.sourceFile,r))})}});function d0e(e,t){return{type:\"install package\",file:e,packageName:t}}function f0e(e,t){let r=zr(Vi(e,t),yo);if(!r)return;let i=r.text,{packageName:o}=ZJ(i);return fl(o)?void 0:o}function _0e(e,t,r){var i;return r===IQ?ZT.nodeCoreModules.has(e)?\"@types/node\":void 0:(i=t.isKnownTypesPackageName)!=null&&i.call(t,e)?rF(e):void 0}var p0e,u9,IQ,LQ,T5e=gt({\"src/services/codefixes/fixCannotFindModule.ts\"(){\"use strict\";Fr(),Qa(),p0e=\"fixCannotFindModule\",u9=\"installTypesPackage\",IQ=_.Cannot_find_module_0_or_its_corresponding_type_declarations.code,LQ=[IQ,_.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type.code],za({errorCodes:LQ,getCodeActions:function(t){let{host:r,sourceFile:i,span:{start:o}}=t,s=f0e(i,o);if(s===void 0)return;let l=_0e(s,r,t.errorCode);return l===void 0?[]:[Ma(p0e,[],[_.Install_0,l],u9,_.Install_all_missing_types_packages,d0e(i.fileName,l))]},fixIds:[u9],getAllCodeActions:e=>ns(e,LQ,(t,r,i)=>{let o=f0e(r.file,r.start);if(o!==void 0)switch(e.fixId){case u9:{let s=_0e(o,e.host,r.code);s&&i.push(d0e(r.file.fileName,s));break}default:L.fail(`Bad fixId: ${e.fixId}`)}})})}});function m0e(e,t){let r=Vi(e,t);return Ga(r.parent,Yr)}function h0e(e,t,r,i,o){let s=hp(e),l=r.program.getTypeChecker(),f=l.getTypeAtLocation(s),d=l.getPropertiesOfType(f).filter(S5e),g=c1(t,r.program,o,r.host);oZ(e,d,t,r,o,g,m=>i.insertMemberAtStart(t,e,m)),g.writeFixes(i)}function S5e(e){let t=Yy(Vo(e.getDeclarations()));return!(t&8)&&!!(t&256)}var kQ,d9,x5e=gt({\"src/services/codefixes/fixClassDoesntImplementInheritedAbstractMember.ts\"(){\"use strict\";Fr(),Qa(),kQ=[_.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2.code,_.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1.code],d9=\"fixClassDoesntImplementInheritedAbstractMember\",za({errorCodes:kQ,getCodeActions:function(t){let{sourceFile:r,span:i}=t,o=nr.ChangeTracker.with(t,s=>h0e(m0e(r,i.start),r,t,s,t.preferences));return o.length===0?void 0:[Ma(d9,o,_.Implement_inherited_abstract_class,d9,_.Implement_all_inherited_abstract_classes)]},fixIds:[d9],getAllCodeActions:function(t){let r=new Map;return ns(t,kQ,(i,o)=>{let s=m0e(o.file,o.start);U_(r,zo(s))&&h0e(s,t.sourceFile,t,i,t.preferences)})}})}});function g0e(e,t,r,i){e.insertNodeAtConstructorStart(t,r,i),e.delete(t,i)}function y0e(e,t){let r=Vi(e,t);if(r.kind!==108)return;let i=qd(r),o=v0e(i.body);return o&&!o.expression.arguments.some(s=>br(s)&&s.expression===r)?{constructor:i,superCall:o}:void 0}function v0e(e){return Ol(e)&&NA(e.expression)?e:Ia(e)?void 0:pa(e,v0e)}var f9,DQ,A5e=gt({\"src/services/codefixes/fixClassSuperMustPrecedeThisAccess.ts\"(){\"use strict\";Fr(),Qa(),f9=\"classSuperMustPrecedeThisAccess\",DQ=[_.super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class.code],za({errorCodes:DQ,getCodeActions(e){let{sourceFile:t,span:r}=e,i=y0e(t,r.start);if(!i)return;let{constructor:o,superCall:s}=i,l=nr.ChangeTracker.with(e,f=>g0e(f,t,o,s));return[Ma(f9,l,_.Make_super_call_the_first_statement_in_the_constructor,f9,_.Make_all_super_calls_the_first_statement_in_their_constructor)]},fixIds:[f9],getAllCodeActions(e){let{sourceFile:t}=e,r=new Map;return ns(e,DQ,(i,o)=>{let s=y0e(o.file,o.start);if(!s)return;let{constructor:l,superCall:f}=s;U_(r,zo(l.parent))&&g0e(i,t,l,f)})}})}});function b0e(e,t){let r=Vi(e,t);return L.assert(Ec(r.parent),\"token should be at the constructor declaration\"),r.parent}function E0e(e,t,r){let i=D.createExpressionStatement(D.createCallExpression(D.createSuper(),void 0,Je));e.insertNodeAtConstructorStart(t,r,i)}var _9,wQ,C5e=gt({\"src/services/codefixes/fixConstructorForDerivedNeedSuperCall.ts\"(){\"use strict\";Fr(),Qa(),_9=\"constructorForDerivedNeedSuperCall\",wQ=[_.Constructors_for_derived_classes_must_contain_a_super_call.code],za({errorCodes:wQ,getCodeActions(e){let{sourceFile:t,span:r}=e,i=b0e(t,r.start),o=nr.ChangeTracker.with(e,s=>E0e(s,t,i));return[Ma(_9,o,_.Add_missing_super_call,_9,_.Add_all_missing_super_calls)]},fixIds:[_9],getAllCodeActions:e=>ns(e,wQ,(t,r)=>E0e(t,e.sourceFile,b0e(r.file,r.start)))})}});function T0e(e,t){dZ(e,t,\"jsx\",D.createStringLiteral(\"react\"))}var RQ,OQ,I5e=gt({\"src/services/codefixes/fixEnableJsxFlag.ts\"(){\"use strict\";Fr(),Qa(),RQ=\"fixEnableJsxFlag\",OQ=[_.Cannot_use_JSX_unless_the_jsx_flag_is_provided.code],za({errorCodes:OQ,getCodeActions:function(t){let{configFile:r}=t.program.getCompilerOptions();if(r===void 0)return;let i=nr.ChangeTracker.with(t,o=>T0e(o,r));return[J_(RQ,i,_.Enable_the_jsx_flag_in_your_configuration_file)]},fixIds:[RQ],getAllCodeActions:e=>ns(e,OQ,t=>{let{configFile:r}=e.program.getCompilerOptions();r!==void 0&&T0e(t,r)})})}});function S0e(e,t,r){let i=wr(e.getSemanticDiagnostics(t),l=>l.start===r.start&&l.length===r.length);if(i===void 0||i.relatedInformation===void 0)return;let o=wr(i.relatedInformation,l=>l.code===_.Did_you_mean_0.code);if(o===void 0||o.file===void 0||o.start===void 0||o.length===void 0)return;let s=_Z(o.file,il(o.start,o.length));if(s!==void 0&&ot(s)&&ar(s.parent))return{suggestion:L5e(o.messageText),expression:s.parent,arg:s}}function x0e(e,t,r,i){let o=D.createCallExpression(D.createPropertyAccessExpression(D.createIdentifier(\"Number\"),D.createIdentifier(\"isNaN\")),void 0,[r]),s=i.operatorToken.kind;e.replaceNode(t,i,s===37||s===35?D.createPrefixUnaryExpression(53,o):o)}function L5e(e){let[t,r]=sv(e,`\n`,0).match(/\\'(.*)\\'/)||[];return r}var p9,NQ,k5e=gt({\"src/services/codefixes/fixNaNEquality.ts\"(){\"use strict\";Fr(),Qa(),p9=\"fixNaNEquality\",NQ=[_.This_condition_will_always_return_0.code],za({errorCodes:NQ,getCodeActions(e){let{sourceFile:t,span:r,program:i}=e,o=S0e(i,t,r);if(o===void 0)return;let{suggestion:s,expression:l,arg:f}=o,d=nr.ChangeTracker.with(e,g=>x0e(g,t,f,l));return[Ma(p9,d,[_.Use_0,s],p9,_.Use_Number_isNaN_in_all_conditions)]},fixIds:[p9],getAllCodeActions:e=>ns(e,NQ,(t,r)=>{let i=S0e(e.program,r.file,il(r.start,r.length));i&&x0e(t,r.file,i.arg,i.expression)})})}}),D5e=gt({\"src/services/codefixes/fixModuleAndTargetOptions.ts\"(){\"use strict\";Fr(),Qa(),za({errorCodes:[_.Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher.code,_.Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_node16_or_nodenext_and_the_target_option_is_set_to_es2017_or_higher.code],getCodeActions:function(t){let r=t.program.getCompilerOptions(),{configFile:i}=r;if(i===void 0)return;let o=[],s=Rl(r);if(s>=5&&s<99){let g=nr.ChangeTracker.with(t,m=>{dZ(m,i,\"module\",D.createStringLiteral(\"esnext\"))});o.push(J_(\"fixModuleOption\",g,[_.Set_the_module_option_in_your_configuration_file_to_0,\"esnext\"]))}let f=Do(r);if(f<4||f>99){let g=nr.ChangeTracker.with(t,m=>{if(!kI(i))return;let S=[[\"target\",D.createStringLiteral(\"es2017\")]];s===1&&S.push([\"module\",D.createStringLiteral(\"commonjs\")]),uZ(m,i,S)});o.push(J_(\"fixTargetOption\",g,[_.Set_the_target_option_in_your_configuration_file_to_0,\"es2017\"]))}return o.length?o:void 0}})}});function A0e(e,t,r){e.replaceNode(t,r,D.createPropertyAssignment(r.name,r.objectAssignmentInitializer))}function C0e(e,t){return Ga(Vi(e,t).parent,Sf)}var m9,PQ,w5e=gt({\"src/services/codefixes/fixPropertyAssignment.ts\"(){\"use strict\";Fr(),Qa(),m9=\"fixPropertyAssignment\",PQ=[_.Did_you_mean_to_use_a_Colon_An_can_only_follow_a_property_name_when_the_containing_object_literal_is_part_of_a_destructuring_pattern.code],za({errorCodes:PQ,fixIds:[m9],getCodeActions(e){let{sourceFile:t,span:r}=e,i=C0e(t,r.start),o=nr.ChangeTracker.with(e,s=>A0e(s,e.sourceFile,i));return[Ma(m9,o,[_.Change_0_to_1,\"=\",\":\"],m9,[_.Switch_each_misused_0_to_1,\"=\",\":\"])]},getAllCodeActions:e=>ns(e,PQ,(t,r)=>A0e(t,r.file,C0e(r.file,r.start)))})}});function I0e(e,t){let r=Vi(e,t),i=Zc(r).heritageClauses,o=i[0].getFirstToken();return o.kind===94?{extendsToken:o,heritageClauses:i}:void 0}function L0e(e,t,r,i){if(e.replaceNode(t,r,D.createToken(117)),i.length===2&&i[0].token===94&&i[1].token===117){let o=i[1].getFirstToken(),s=o.getFullStart();e.replaceRange(t,{pos:s,end:s},D.createToken(27));let l=t.text,f=o.end;for(;f<l.length&&Yp(l.charCodeAt(f));)f++;e.deleteRange(t,{pos:o.getStart(),end:f})}}var h9,MQ,R5e=gt({\"src/services/codefixes/fixExtendsInterfaceBecomesImplements.ts\"(){\"use strict\";Fr(),Qa(),h9=\"extendsInterfaceBecomesImplements\",MQ=[_.Cannot_extend_an_interface_0_Did_you_mean_implements.code],za({errorCodes:MQ,getCodeActions(e){let{sourceFile:t}=e,r=I0e(t,e.span.start);if(!r)return;let{extendsToken:i,heritageClauses:o}=r,s=nr.ChangeTracker.with(e,l=>L0e(l,t,i,o));return[Ma(h9,s,_.Change_extends_to_implements,h9,_.Change_all_extended_interfaces_to_implements)]},fixIds:[h9],getAllCodeActions:e=>ns(e,MQ,(t,r)=>{let i=I0e(r.file,r.start);i&&L0e(t,r.file,i.extendsToken,i.heritageClauses)})})}});function k0e(e,t,r){let i=Vi(e,t);if(Re(i)||pi(i))return{node:i,className:r===FQ?Zc(i).name.text:void 0}}function D0e(e,t,{node:r,className:i}){pd(r),e.replaceNode(t,r,D.createPropertyAccessExpression(i?D.createIdentifier(i):D.createThis(),r))}var g9,FQ,GQ,O5e=gt({\"src/services/codefixes/fixForgottenThisPropertyAccess.ts\"(){\"use strict\";Fr(),Qa(),g9=\"forgottenThisPropertyAccess\",FQ=_.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code,GQ=[_.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code,_.Private_identifiers_are_only_allowed_in_class_bodies_and_may_only_be_used_as_part_of_a_class_member_declaration_property_access_or_on_the_left_hand_side_of_an_in_expression.code,FQ],za({errorCodes:GQ,getCodeActions(e){let{sourceFile:t}=e,r=k0e(t,e.span.start,e.errorCode);if(!r)return;let i=nr.ChangeTracker.with(e,o=>D0e(o,t,r));return[Ma(g9,i,[_.Add_0_to_unresolved_variable,r.className||\"this\"],g9,_.Add_qualifier_to_all_unresolved_variables_matching_a_member_name)]},fixIds:[g9],getAllCodeActions:e=>ns(e,GQ,(t,r)=>{let i=k0e(r.file,r.start,r.code);i&&D0e(t,e.sourceFile,i)})})}});function N5e(e){return fs(VQ,e)}function BQ(e,t,r,i,o){let s=r.getText()[i];if(!N5e(s))return;let l=o?VQ[s]:`{${lk(r,t,s)}}`;e.replaceRangeWithText(r,{pos:i,end:i+1},l)}var y9,uP,UQ,VQ,P5e=gt({\"src/services/codefixes/fixInvalidJsxCharacters.ts\"(){\"use strict\";Fr(),Qa(),y9=\"fixInvalidJsxCharacters_expression\",uP=\"fixInvalidJsxCharacters_htmlEntity\",UQ=[_.Unexpected_token_Did_you_mean_or_gt.code,_.Unexpected_token_Did_you_mean_or_rbrace.code],za({errorCodes:UQ,fixIds:[y9,uP],getCodeActions(e){let{sourceFile:t,preferences:r,span:i}=e,o=nr.ChangeTracker.with(e,l=>BQ(l,r,t,i.start,!1)),s=nr.ChangeTracker.with(e,l=>BQ(l,r,t,i.start,!0));return[Ma(y9,o,_.Wrap_invalid_character_in_an_expression_container,y9,_.Wrap_all_invalid_characters_in_an_expression_container),Ma(uP,s,_.Convert_invalid_character_to_its_html_entity_code,uP,_.Convert_all_invalid_characters_to_HTML_entity_code)]},getAllCodeActions(e){return ns(e,UQ,(t,r)=>BQ(t,e.preferences,r.file,r.start,e.fixId===uP))}}),VQ={\">\":\"&gt;\",\"}\":\"&rbrace;\"}}});function M5e(e,{name:t,jsDocHost:r,jsDocParameterTag:i}){let o=nr.ChangeTracker.with(e,s=>s.filterJSDocTags(e.sourceFile,r,l=>l!==i));return Ma(dP,o,[_.Delete_unused_param_tag_0,t.getText(e.sourceFile)],dP,_.Delete_all_unused_param_tags)}function F5e(e,{name:t,jsDocHost:r,signature:i,jsDocParameterTag:o}){if(!Fn(i.parameters))return;let s=e.sourceFile,l=A0(i),f=new Set;for(let v of l)xp(v)&&Re(v.name)&&f.add(v.name.escapedText);let d=ks(i.parameters,v=>Re(v.name)&&!f.has(v.name.escapedText)?v.name.getText(s):void 0);if(d===void 0)return;let g=D.updateJSDocParameterTag(o,o.tagName,D.createIdentifier(d),o.isBracketed,o.typeExpression,o.isNameFirst,o.comment),m=nr.ChangeTracker.with(e,v=>v.replaceJSDocComment(s,r,on(l,S=>S===o?g:S)));return J_(jQ,m,[_.Rename_param_tag_name_0_to_1,t.getText(s),d])}function w0e(e,t){let r=Vi(e,t);if(r.parent&&xp(r.parent)&&Re(r.parent.name)){let i=r.parent,o=fS(i),s=sb(i);if(o&&s)return{jsDocHost:o,signature:s,name:r.parent.name,jsDocParameterTag:i}}}var dP,jQ,HQ,G5e=gt({\"src/services/codefixes/fixUnmatchedParameter.ts\"(){\"use strict\";Fr(),Qa(),dP=\"deleteUnmatchedParameter\",jQ=\"renameUnmatchedParameter\",HQ=[_.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name.code],za({fixIds:[dP,jQ],errorCodes:HQ,getCodeActions:function(t){let{sourceFile:r,span:i}=t,o=[],s=w0e(r,i.start);if(s)return Sn(o,M5e(t,s)),Sn(o,F5e(t,s)),o},getAllCodeActions:function(t){let r=new Map;return ax(nr.ChangeTracker.with(t,i=>{ox(t,HQ,({file:o,start:s})=>{let l=w0e(o,s);l&&r.set(l.signature,Sn(r.get(l.signature),l.jsDocParameterTag))}),r.forEach((o,s)=>{if(t.fixId===dP){let l=new Set(o);i.filterJSDocTags(s.getSourceFile(),s,f=>!l.has(f))}})}))}})}});function B5e(e,t,r){let i=zr(Vi(e,r),Re);if(!i||i.parent.kind!==180)return;let s=t.getTypeChecker().getSymbolAtLocation(i);return wr(s?.declarations||Je,Kp(lm,$u,Nl))}function U5e(e,t,r,i){if(r.kind===268){e.insertModifierBefore(t,154,r.name);return}let o=r.kind===270?r:r.parent.parent;if(o.name&&o.namedBindings)return;let s=i.getTypeChecker();z6(o,f=>{if(wd(f.symbol,s).flags&111551)return!0})||e.insertModifierBefore(t,154,o)}function V5e(e,t,r,i){Nk.doChangeNamedToNamespaceOrDefault(t,i,e,r.parent)}var v9,R0e,j5e=gt({\"src/services/codefixes/fixUnreferenceableDecoratorMetadata.ts\"(){\"use strict\";Fr(),Qa(),v9=\"fixUnreferenceableDecoratorMetadata\",R0e=[_.A_type_referenced_in_a_decorated_signature_must_be_imported_with_import_type_or_a_namespace_import_when_isolatedModules_and_emitDecoratorMetadata_are_enabled.code],za({errorCodes:R0e,getCodeActions:e=>{let t=B5e(e.sourceFile,e.program,e.span.start);if(!t)return;let r=nr.ChangeTracker.with(e,s=>t.kind===273&&V5e(s,e.sourceFile,t,e.program)),i=nr.ChangeTracker.with(e,s=>U5e(s,e.sourceFile,t,e.program)),o;return r.length&&(o=Sn(o,J_(v9,r,_.Convert_named_imports_to_namespace_import))),i.length&&(o=Sn(o,J_(v9,i,_.Convert_to_type_only_import))),o},fixIds:[v9]})}});function O0e(e,t,r){e.replaceNode(t,r.parent,D.createKeywordTypeNode(157))}function bk(e,t){return Ma(Ek,e,t,T9,_.Delete_all_unused_declarations)}function N0e(e,t,r){e.delete(t,L.checkDefined(Ga(r.parent,hH).typeParameters,\"The type parameter to delete should exist\"))}function WQ(e){return e.kind===100||e.kind===79&&(e.parent.kind===273||e.parent.kind===270)}function P0e(e){return e.kind===100?zr(e.parent,gl):void 0}function M0e(e,t){return pu(t.parent)&&Vo(t.parent.getChildren(e))===t}function F0e(e,t,r){e.delete(t,r.parent.kind===240?r.parent:r)}function H5e(e,t,r){mn(r.elements,i=>e.delete(t,i))}function G0e(e,t,r,i){t!==_.Property_0_is_declared_but_its_value_is_never_read.code&&(i.kind===138&&(i=Ga(i.parent,g2).typeParameter.name),Re(i)&&W5e(i)&&(e.replaceNode(r,i,D.createIdentifier(`_${i.text}`)),ha(i.parent)&&_I(i.parent).forEach(o=>{Re(o.name)&&e.replaceNode(r,o.name,D.createIdentifier(`_${o.name.text}`))})))}function W5e(e){switch(e.parent.kind){case 166:case 165:return!0;case 257:switch(e.parent.parent.parent.kind){case 247:case 246:return!0}}return!1}function b9(e,t,r,i,o,s,l,f){z5e(t,r,e,i,o,s,l,f),Re(t)&&js.Core.eachSymbolReferenceInFile(t,i,e,d=>{br(d.parent)&&d.parent.name===d&&(d=d.parent),!f&&X5e(d)&&r.delete(e,d.parent.parent)})}function z5e(e,t,r,i,o,s,l,f){let{parent:d}=e;if(ha(d))J5e(t,r,d,i,o,s,l,f);else if(!(f&&Re(e)&&js.Core.isSymbolReferencedInFile(e,i,r))){let g=lm(d)?e:ts(d)?d.parent:d;L.assert(g!==r,\"should not delete whole source file\"),t.delete(r,g)}}function J5e(e,t,r,i,o,s,l,f=!1){if(K5e(i,t,r,o,s,l,f))if(r.modifiers&&r.modifiers.length>0&&(!Re(r.name)||js.Core.isSymbolReferencedInFile(r.name,i,t)))for(let d of r.modifiers)Ha(d)&&e.deleteModifier(t,d);else!r.initializer&&B0e(r,i,o)&&e.delete(t,r)}function B0e(e,t,r){let i=e.parent.parameters.indexOf(e);return!js.Core.someSignatureUsage(e.parent,r,t,(o,s)=>!s||s.arguments.length>i)}function K5e(e,t,r,i,o,s,l){let{parent:f}=r;switch(f.kind){case 171:case 173:let d=f.parameters.indexOf(r),g=Nc(f)?f.name:f,m=js.Core.getReferencedSymbolsForNode(f.pos,g,o,i,s);if(m){for(let v of m)for(let S of v.references)if(S.kind===js.EntryKind.Node){let x=gL(S.node)&&Pa(S.node.parent)&&S.node.parent.arguments.length>d,A=br(S.node.parent)&&gL(S.node.parent.expression)&&Pa(S.node.parent.parent)&&S.node.parent.parent.arguments.length>d,w=(Nc(S.node.parent)||zm(S.node.parent))&&S.node.parent!==r.parent&&S.node.parent.parameters.length>d;if(x||A||w)return!1}}return!0;case 259:return f.name&&q5e(e,t,f.name)?U0e(f,r,l):!0;case 215:case 216:return U0e(f,r,l);case 175:return!1;case 174:return!0;default:return L.failBadSyntaxKind(f)}}function q5e(e,t,r){return!!js.Core.eachSymbolReferenceInFile(r,e,t,i=>Re(i)&&Pa(i.parent)&&i.parent.arguments.indexOf(i)>=0)}function U0e(e,t,r){let i=e.parameters,o=i.indexOf(t);return L.assert(o!==-1,\"The parameter should already be in the list\"),r?i.slice(o+1).every(s=>Re(s.name)&&!s.symbol.isReferenced):o===i.length-1}function X5e(e){return(ar(e.parent)&&e.parent.left===e||(Nz(e.parent)||tv(e.parent))&&e.parent.operand===e)&&Ol(e.parent.parent)}var Ek,E9,T9,fP,S9,zQ,Y5e=gt({\"src/services/codefixes/fixUnusedIdentifier.ts\"(){\"use strict\";Fr(),Qa(),Ek=\"unusedIdentifier\",E9=\"unusedIdentifier_prefix\",T9=\"unusedIdentifier_delete\",fP=\"unusedIdentifier_deleteImports\",S9=\"unusedIdentifier_infer\",zQ=[_._0_is_declared_but_its_value_is_never_read.code,_._0_is_declared_but_never_used.code,_.Property_0_is_declared_but_its_value_is_never_read.code,_.All_imports_in_import_declaration_are_unused.code,_.All_destructured_elements_are_unused.code,_.All_variables_are_unused.code,_.All_type_parameters_are_unused.code],za({errorCodes:zQ,getCodeActions(e){let{errorCode:t,sourceFile:r,program:i,cancellationToken:o}=e,s=i.getTypeChecker(),l=i.getSourceFiles(),f=Vi(r,e.span.start);if(j_(f))return[bk(nr.ChangeTracker.with(e,v=>v.delete(r,f)),_.Remove_template_tag)];if(f.kind===29){let v=nr.ChangeTracker.with(e,S=>N0e(S,r,f));return[bk(v,_.Remove_type_parameters)]}let d=P0e(f);if(d){let v=nr.ChangeTracker.with(e,S=>S.delete(r,d));return[Ma(Ek,v,[_.Remove_import_from_0,lle(d)],fP,_.Delete_all_unused_imports)]}else if(WQ(f)){let v=nr.ChangeTracker.with(e,S=>b9(r,f,S,s,l,i,o,!1));if(v.length)return[Ma(Ek,v,[_.Remove_unused_declaration_for_Colon_0,f.getText(r)],fP,_.Delete_all_unused_imports)]}if(cm(f.parent)||y2(f.parent)){if(ha(f.parent.parent)){let v=f.parent.elements,S=[v.length>1?_.Remove_unused_declarations_for_Colon_0:_.Remove_unused_declaration_for_Colon_0,on(v,x=>x.getText(r)).join(\", \")];return[bk(nr.ChangeTracker.with(e,x=>H5e(x,r,f.parent)),S)]}return[bk(nr.ChangeTracker.with(e,v=>v.delete(r,f.parent.parent)),_.Remove_unused_destructuring_declaration)]}if(M0e(r,f))return[bk(nr.ChangeTracker.with(e,v=>F0e(v,r,f.parent)),_.Remove_variable_statement)];let g=[];if(f.kind===138){let v=nr.ChangeTracker.with(e,x=>O0e(x,r,f)),S=Ga(f.parent,g2).typeParameter.name.text;g.push(Ma(Ek,v,[_.Replace_infer_0_with_unknown,S],S9,_.Replace_all_unused_infer_with_unknown))}else{let v=nr.ChangeTracker.with(e,S=>b9(r,f,S,s,l,i,o,!1));if(v.length){let S=ts(f.parent)?f.parent:f;g.push(bk(v,[_.Remove_unused_declaration_for_Colon_0,S.getText(r)]))}}let m=nr.ChangeTracker.with(e,v=>G0e(v,t,r,f));return m.length&&g.push(Ma(Ek,m,[_.Prefix_0_with_an_underscore,f.getText(r)],E9,_.Prefix_all_unused_declarations_with_where_possible)),g},fixIds:[E9,T9,fP,S9],getAllCodeActions:e=>{let{sourceFile:t,program:r,cancellationToken:i}=e,o=r.getTypeChecker(),s=r.getSourceFiles();return ns(e,zQ,(l,f)=>{let d=Vi(t,f.start);switch(e.fixId){case E9:G0e(l,f.code,t,d);break;case fP:{let g=P0e(d);g?l.delete(t,g):WQ(d)&&b9(t,d,l,o,s,r,i,!0);break}case T9:{if(d.kind===138||WQ(d))break;if(j_(d))l.delete(t,d);else if(d.kind===29)N0e(l,t,d);else if(cm(d.parent)){if(d.parent.parent.initializer)break;(!ha(d.parent.parent)||B0e(d.parent.parent,o,s))&&l.delete(t,d.parent.parent)}else{if(y2(d.parent.parent)&&d.parent.parent.parent.initializer)break;M0e(t,d)?F0e(l,t,d.parent):b9(t,d,l,o,s,r,i,!0)}break}case S9:d.kind===138&&O0e(l,t,d);break;default:L.fail(JSON.stringify(e.fixId))}})}})}});function V0e(e,t,r,i,o){let s=Vi(t,r),l=jn(s,ca);if(l.getStart(t)!==s.getStart(t)){let d=JSON.stringify({statementKind:L.formatSyntaxKind(l.kind),tokenKind:L.formatSyntaxKind(s.kind),errorCode:o,start:r,length:i});L.fail(\"Token and statement should start at the same point. \"+d)}let f=(Va(l.parent)?l.parent:l).parent;if(!Va(l.parent)||l===Vo(l.parent.statements))switch(f.kind){case 242:if(f.elseStatement){if(Va(l.parent))break;e.replaceNode(t,l,D.createBlock(Je));return}case 244:case 245:e.delete(t,f);return}if(Va(l.parent)){let d=r+i,g=L.checkDefined($5e(PW(l.parent.statements,l),m=>m.pos<d),\"Some statement should be last\");e.deleteNodeRange(t,l,g)}else e.delete(t,l)}function $5e(e,t){let r;for(let i of e){if(!t(i))break;r=i}return r}var x9,JQ,Q5e=gt({\"src/services/codefixes/fixUnreachableCode.ts\"(){\"use strict\";Fr(),Qa(),x9=\"fixUnreachableCode\",JQ=[_.Unreachable_code_detected.code],za({errorCodes:JQ,getCodeActions(e){if(e.program.getSyntacticDiagnostics(e.sourceFile,e.cancellationToken).length)return;let r=nr.ChangeTracker.with(e,i=>V0e(i,e.sourceFile,e.span.start,e.span.length,e.errorCode));return[Ma(x9,r,_.Remove_unreachable_code,x9,_.Remove_all_unreachable_code)]},fixIds:[x9],getAllCodeActions:e=>ns(e,JQ,(t,r)=>V0e(t,r.file,r.start,r.length,r.code))})}});function j0e(e,t,r){let i=Vi(t,r),o=Ga(i.parent,J0),s=i.getStart(t),l=o.statement.getStart(t),f=Gf(s,l,t)?l:xo(t.text,Yo(o,58,t).end,!0);e.deleteRange(t,{pos:s,end:f})}var A9,KQ,Z5e=gt({\"src/services/codefixes/fixUnusedLabel.ts\"(){\"use strict\";Fr(),Qa(),A9=\"fixUnusedLabel\",KQ=[_.Unused_label.code],za({errorCodes:KQ,getCodeActions(e){let t=nr.ChangeTracker.with(e,r=>j0e(r,e.sourceFile,e.span.start));return[Ma(A9,t,_.Remove_unused_label,A9,_.Remove_all_unused_labels)]},fixIds:[A9],getAllCodeActions:e=>ns(e,KQ,(t,r)=>j0e(t,r.file,r.start))})}});function H0e(e,t,r,i,o){e.replaceNode(t,r,o.typeToTypeNode(i,r,void 0))}function W0e(e,t,r){let i=jn(Vi(e,t),e9e),o=i&&i.type;return o&&{typeNode:o,type:t9e(r,o)}}function e9e(e){switch(e.kind){case 231:case 176:case 177:case 259:case 174:case 178:case 197:case 171:case 170:case 166:case 169:case 168:case 175:case 262:case 213:case 257:return!0;default:return!1}}function t9e(e,t){if(S2(t)){let r=e.getTypeFromTypeNode(t.type);return r===e.getNeverType()||r===e.getVoidType()?r:e.getUnionType(Sn([r,e.getUndefinedType()],t.postfix?void 0:e.getNullType()))}return e.getTypeFromTypeNode(t)}var qQ,C9,XQ,n9e=gt({\"src/services/codefixes/fixJSDocTypes.ts\"(){\"use strict\";Fr(),Qa(),qQ=\"fixJSDocTypes_plain\",C9=\"fixJSDocTypes_nullable\",XQ=[_.JSDoc_types_can_only_be_used_inside_documentation_comments.code,_._0_at_the_end_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1.code,_._0_at_the_start_of_a_type_is_not_valid_TypeScript_syntax_Did_you_mean_to_write_1.code],za({errorCodes:XQ,getCodeActions(e){let{sourceFile:t}=e,r=e.program.getTypeChecker(),i=W0e(t,e.span.start,r);if(!i)return;let{typeNode:o,type:s}=i,l=o.getText(t),f=[d(s,qQ,_.Change_all_jsdoc_style_types_to_TypeScript)];return o.kind===317&&f.push(d(s,C9,_.Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types)),f;function d(g,m,v){let S=nr.ChangeTracker.with(e,x=>H0e(x,t,o,g,r));return Ma(\"jdocTypes\",S,[_.Change_0_to_1,l,r.typeToString(g)],m,v)}},fixIds:[qQ,C9],getAllCodeActions(e){let{fixId:t,program:r,sourceFile:i}=e,o=r.getTypeChecker();return ns(e,XQ,(s,l)=>{let f=W0e(l.file,l.start,o);if(!f)return;let{typeNode:d,type:g}=f,m=d.kind===317&&t===C9?o.getNullableType(g,32768):g;H0e(s,i,d,m,o)})}})}});function z0e(e,t,r){e.replaceNodeWithText(t,r,`${r.text}()`)}function J0e(e,t){let r=Vi(e,t);if(br(r.parent)){let i=r.parent;for(;br(i.parent);)i=i.parent;return i.name}if(Re(r))return r}var I9,YQ,r9e=gt({\"src/services/codefixes/fixMissingCallParentheses.ts\"(){\"use strict\";Fr(),Qa(),I9=\"fixMissingCallParentheses\",YQ=[_.This_condition_will_always_return_true_since_this_function_is_always_defined_Did_you_mean_to_call_it_instead.code],za({errorCodes:YQ,fixIds:[I9],getCodeActions(e){let{sourceFile:t,span:r}=e,i=J0e(t,r.start);if(!i)return;let o=nr.ChangeTracker.with(e,s=>z0e(s,e.sourceFile,i));return[Ma(I9,o,_.Add_missing_call_parentheses,I9,_.Add_all_missing_call_parentheses)]},getAllCodeActions:e=>ns(e,YQ,(t,r)=>{let i=J0e(r.file,r.start);i&&z0e(t,r.file,i)})})}});function i9e(e){if(e.type)return e.type;if(wi(e.parent)&&e.parent.type&&Jm(e.parent.type))return e.parent.type.type}function K0e(e,t){let r=Vi(e,t),i=qd(r);if(!i)return;let o;switch(i.kind){case 171:o=i.name;break;case 259:case 215:o=Yo(i,98,e);break;case 216:let s=i.typeParameters?29:20;o=Yo(i,s,e)||Vo(i.parameters);break;default:return}return o&&{insertBefore:o,returnType:i9e(i)}}function q0e(e,t,{insertBefore:r,returnType:i}){if(i){let o=Kw(i);(!o||o.kind!==79||o.text!==\"Promise\")&&e.replaceNode(t,i,D.createTypeReferenceNode(\"Promise\",D.createNodeArray([i])))}e.insertModifierBefore(t,132,r)}var L9,$Q,a9e=gt({\"src/services/codefixes/fixAwaitInSyncFunction.ts\"(){\"use strict\";Fr(),Qa(),L9=\"fixAwaitInSyncFunction\",$Q=[_.await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code,_.for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code,_.Cannot_find_name_0_Did_you_mean_to_write_this_in_an_async_function.code],za({errorCodes:$Q,getCodeActions(e){let{sourceFile:t,span:r}=e,i=K0e(t,r.start);if(!i)return;let o=nr.ChangeTracker.with(e,s=>q0e(s,t,i));return[Ma(L9,o,_.Add_async_modifier_to_containing_function,L9,_.Add_all_missing_async_modifiers)]},fixIds:[L9],getAllCodeActions:function(t){let r=new Map;return ns(t,$Q,(i,o)=>{let s=K0e(o.file,o.start);!s||!U_(r,zo(s.insertBefore))||q0e(i,t.sourceFile,s)})}})}});function X0e(e,t,r,i,o){let s,l;if(i===_._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property.code)s=t,l=t+r;else if(i===_._0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor.code){let f=o.program.getTypeChecker(),d=Vi(e,t).parent;L.assert(rb(d),\"error span of fixPropertyOverrideAccessor should only be on an accessor\");let g=d.parent;L.assert(Yr(g),\"erroneous accessors should only be inside classes\");let m=Wp(mZ(g,f));if(!m)return[];let v=Gi(RA(d.name)),S=f.getPropertyOfType(f.getTypeAtLocation(m),v);if(!S||!S.valueDeclaration)return[];s=S.valueDeclaration.pos,l=S.valueDeclaration.end,e=Gn(S.valueDeclaration)}else L.fail(\"fixPropertyOverrideAccessor codefix got unexpected error code \"+i);return uEe(e,o.program,s,l,o,_.Generate_get_and_set_accessors.message)}var QQ,k9,o9e=gt({\"src/services/codefixes/fixPropertyOverrideAccessor.ts\"(){\"use strict\";Fr(),Qa(),QQ=[_._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property.code,_._0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor.code],k9=\"fixPropertyOverrideAccessor\",za({errorCodes:QQ,getCodeActions(e){let t=X0e(e.sourceFile,e.span.start,e.span.length,e.errorCode,e);if(t)return[Ma(k9,t,_.Generate_get_and_set_accessors,k9,_.Generate_get_and_set_accessors_for_all_overriding_properties)]},fixIds:[k9],getAllCodeActions:e=>ns(e,QQ,(t,r)=>{let i=X0e(r.file,r.start,r.length,r.code,e);if(i)for(let o of i)t.pushRaw(e.sourceFile,o)})})}});function s9e(e,t){switch(e){case _.Parameter_0_implicitly_has_an_1_type.code:case _.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code:return Tf(qd(t))?_.Infer_type_of_0_from_usage:_.Infer_parameter_types_from_usage;case _.Rest_parameter_0_implicitly_has_an_any_type.code:case _.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage.code:return _.Infer_parameter_types_from_usage;case _.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code:return _.Infer_this_type_of_0_from_usage;default:return _.Infer_type_of_0_from_usage}}function c9e(e){switch(e){case _.Variable_0_implicitly_has_type_1_in_some_locations_but_a_better_type_may_be_inferred_from_usage.code:return _.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code;case _.Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code:return _.Variable_0_implicitly_has_an_1_type.code;case _.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code:return _.Parameter_0_implicitly_has_an_1_type.code;case _.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage.code:return _.Rest_parameter_0_implicitly_has_an_any_type.code;case _.Property_0_implicitly_has_type_any_but_a_better_type_for_its_get_accessor_may_be_inferred_from_usage.code:return _.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation.code;case _._0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage.code:return _._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type.code;case _.Property_0_implicitly_has_type_any_but_a_better_type_for_its_set_accessor_may_be_inferred_from_usage.code:return _.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation.code;case _.Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code:return _.Member_0_implicitly_has_an_1_type.code}return e}function Y0e(e,t,r,i,o,s,l,f,d){if(!vI(r.kind)&&r.kind!==79&&r.kind!==25&&r.kind!==108)return;let{parent:g}=r,m=c1(t,o,d,f);switch(i=c9e(i),i){case _.Member_0_implicitly_has_an_1_type.code:case _.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code:if(wi(g)&&l(g)||Na(g)||Yd(g))return $0e(e,m,t,g,o,f,s),m.writeFixes(e),g;if(br(g)){let x=Tk(g.name,o,s),A=uk(x,g,o,f);if(A){let w=D.createJSDocTypeTag(void 0,D.createJSDocTypeExpression(A),void 0);e.addJSDocTags(t,Ga(g.parent.parent,Ol),[w])}return m.writeFixes(e),g}return;case _.Variable_0_implicitly_has_an_1_type.code:{let x=o.getTypeChecker().getSymbolAtLocation(r);return x&&x.valueDeclaration&&wi(x.valueDeclaration)&&l(x.valueDeclaration)?($0e(e,m,Gn(x.valueDeclaration),x.valueDeclaration,o,f,s),m.writeFixes(e),x.valueDeclaration):void 0}}let v=qd(r);if(v===void 0)return;let S;switch(i){case _.Parameter_0_implicitly_has_an_1_type.code:if(Tf(v)){Q0e(e,m,t,v,o,f,s),S=v;break}case _.Rest_parameter_0_implicitly_has_an_any_type.code:if(l(v)){let x=Ga(g,ha);l9e(e,m,t,x,v,o,f,s),S=x}break;case _.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation.code:case _._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type.code:__(v)&&Re(v.name)&&(D9(e,m,t,v,Tk(v.name,o,s),o,f),S=v);break;case _.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation.code:Tf(v)&&(Q0e(e,m,t,v,o,f,s),S=v);break;case _.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code:nr.isThisTypeAnnotatable(v)&&l(v)&&(u9e(e,t,v,o,f,s),S=v);break;default:return L.fail(String(i))}return m.writeFixes(e),S}function $0e(e,t,r,i,o,s,l){Re(i.name)&&D9(e,t,r,i,Tk(i.name,o,l),o,s)}function l9e(e,t,r,i,o,s,l,f){if(!Re(i.name))return;let d=_9e(o,r,s,f);if(L.assert(o.parameters.length===d.length,\"Parameter count and inference count should match\"),Yn(o))Z0e(e,r,d,s,l);else{let g=xs(o)&&!Yo(o,20,r);g&&e.insertNodeBefore(r,Vo(o.parameters),D.createToken(20));for(let{declaration:m,type:v}of d)m&&!m.type&&!m.initializer&&D9(e,t,r,m,v,s,l);g&&e.insertNodeAfter(r,To(o.parameters),D.createToken(21))}}function u9e(e,t,r,i,o,s){let l=eEe(r,t,i,s);if(!l||!l.length)return;let f=eZ(i,l,s).thisParameter(),d=uk(f,r,i,o);!d||(Yn(r)?d9e(e,t,r,d):e.tryInsertThisTypeAnnotation(t,r,d))}function d9e(e,t,r,i){e.addJSDocTags(t,r,[D.createJSDocThisTag(void 0,D.createJSDocTypeExpression(i))])}function Q0e(e,t,r,i,o,s,l){let f=Sl(i.parameters);if(f&&Re(i.name)&&Re(f.name)){let d=Tk(i.name,o,l);d===o.getTypeChecker().getAnyType()&&(d=Tk(f.name,o,l)),Yn(i)?Z0e(e,r,[{declaration:f,type:d}],o,s):D9(e,t,r,f,d,o,s)}}function D9(e,t,r,i,o,s,l){let f=uk(o,i,s,l);if(f)if(Yn(r)&&i.kind!==168){let d=wi(i)?zr(i.parent.parent,Bc):i;if(!d)return;let g=D.createJSDocTypeExpression(f),m=__(i)?D.createJSDocReturnTag(void 0,g,void 0):D.createJSDocTypeTag(void 0,g,void 0);e.addJSDocTags(r,d,[m])}else f9e(f,i,r,e,t,Do(s.getCompilerOptions()))||e.tryInsertTypeAnnotation(r,i,f)}function f9e(e,t,r,i,o,s){let l=u1(e,s);return l&&i.tryInsertTypeAnnotation(r,t,l.typeNode)?(mn(l.symbols,f=>o.addImportFromExportedSymbol(f,!0)),!0):!1}function Z0e(e,t,r,i,o){let s=r.length&&r[0].declaration.parent;if(!s)return;let l=Zi(r,f=>{let d=f.declaration;if(d.initializer||Vy(d)||!Re(d.name))return;let g=f.type&&uk(f.type,d,i,o);if(g){let m=D.cloneNode(d.name);return Jn(m,7168),{name:D.cloneNode(d.name),param:d,isOptional:!!f.isOptional,typeNode:g}}});if(!!l.length)if(xs(s)||ms(s)){let f=xs(s)&&!Yo(s,20,t);f&&e.insertNodeBefore(t,Vo(s.parameters),D.createToken(20)),mn(l,({typeNode:d,param:g})=>{let m=D.createJSDocTypeTag(void 0,D.createJSDocTypeExpression(d)),v=D.createJSDocComment(void 0,[m]);e.insertNodeAt(t,g.getStart(t),v,{suffix:\" \"})}),f&&e.insertNodeAfter(t,To(s.parameters),D.createToken(21))}else{let f=on(l,({name:d,typeNode:g,isOptional:m})=>D.createJSDocParameterTag(void 0,d,!!m,D.createJSDocTypeExpression(g),!1,void 0));e.addJSDocTags(t,s,f)}}function ZQ(e,t,r){return Zi(js.getReferenceEntriesForNode(-1,e,t,t.getSourceFiles(),r),i=>i.kind!==js.EntryKind.Span?zr(i.node,Re):void 0)}function Tk(e,t,r){let i=ZQ(e,t,r);return eZ(t,i,r).single()}function _9e(e,t,r,i){let o=eEe(e,t,r,i);return o&&eZ(r,o,i).parameters(e)||e.parameters.map(s=>({declaration:s,type:Re(s.name)?Tk(s.name,r,i):r.getTypeChecker().getAnyType()}))}function eEe(e,t,r,i){let o;switch(e.kind){case 173:o=Yo(e,135,t);break;case 216:case 215:let s=e.parent;o=(wi(s)||Na(s))&&Re(s.name)?s.name:e.name;break;case 259:case 171:case 170:o=e.name;break}if(!!o)return ZQ(o,r,i)}function eZ(e,t,r){let i=e.getTypeChecker(),o={string:()=>i.getStringType(),number:()=>i.getNumberType(),Array:Ce=>i.createArrayType(Ce),Promise:Ce=>i.createPromiseType(Ce)},s=[i.getStringType(),i.getNumberType(),i.createArrayType(i.getAnyType()),i.createPromiseType(i.getAnyType())];return{single:d,parameters:g,thisParameter:m};function l(){return{isNumber:void 0,isString:void 0,isNumberOrString:void 0,candidateTypes:void 0,properties:void 0,calls:void 0,constructs:void 0,numberIndex:void 0,stringIndex:void 0,candidateThisTypes:void 0,inferredTypes:void 0}}function f(Ce){let Ie=new Map;for(let Ne of Ce)Ne.properties&&Ne.properties.forEach((Le,Ye)=>{Ie.has(Ye)||Ie.set(Ye,[]),Ie.get(Ye).push(Le)});let Be=new Map;return Ie.forEach((Ne,Le)=>{Be.set(Le,f(Ne))}),{isNumber:Ce.some(Ne=>Ne.isNumber),isString:Ce.some(Ne=>Ne.isString),isNumberOrString:Ce.some(Ne=>Ne.isNumberOrString),candidateTypes:Uo(Ce,Ne=>Ne.candidateTypes),properties:Be,calls:Uo(Ce,Ne=>Ne.calls),constructs:Uo(Ce,Ne=>Ne.constructs),numberIndex:mn(Ce,Ne=>Ne.numberIndex),stringIndex:mn(Ce,Ne=>Ne.stringIndex),candidateThisTypes:Uo(Ce,Ne=>Ne.candidateThisTypes),inferredTypes:void 0}}function d(){return Q(v(t))}function g(Ce){if(t.length===0||!Ce.parameters)return;let Ie=l();for(let Ne of t)r.throwIfCancellationRequested(),S(Ne,Ie);let Be=[...Ie.constructs||[],...Ie.calls||[]];return Ce.parameters.map((Ne,Le)=>{let Ye=[],_t=Fm(Ne),ct=!1;for(let We of Be)if(We.argumentTypes.length<=Le)ct=Yn(Ce),Ye.push(i.getUndefinedType());else if(_t)for(let qe=Le;qe<We.argumentTypes.length;qe++)Ye.push(i.getBaseTypeOfLiteralType(We.argumentTypes[qe]));else Ye.push(i.getBaseTypeOfLiteralType(We.argumentTypes[Le]));if(Re(Ne.name)){let We=v(ZQ(Ne.name,e,r));Ye.push(..._t?Zi(We,i.getElementTypeOfArrayType):We)}let Rt=Q(Ye);return{type:_t?i.createArrayType(Rt):Rt,isOptional:ct&&!_t,declaration:Ne}})}function m(){let Ce=l();for(let Ie of t)r.throwIfCancellationRequested(),S(Ie,Ce);return Q(Ce.candidateThisTypes||Je)}function v(Ce){let Ie=l();for(let Be of Ce)r.throwIfCancellationRequested(),S(Be,Ie);return Z(Ie)}function S(Ce,Ie){for(;JI(Ce);)Ce=Ce.parent;switch(Ce.parent.kind){case 241:A(Ce,Ie);break;case 222:Ie.isNumber=!0;break;case 221:w(Ce.parent,Ie);break;case 223:C(Ce,Ce.parent,Ie);break;case 292:case 293:P(Ce.parent,Ie);break;case 210:case 211:Ce.parent.expression===Ce?F(Ce.parent,Ie):x(Ce,Ie);break;case 208:B(Ce.parent,Ie);break;case 209:q(Ce.parent,Ce,Ie);break;case 299:case 300:W(Ce.parent,Ie);break;case 169:Y(Ce.parent,Ie);break;case 257:{let{name:Be,initializer:Ne}=Ce.parent;if(Ce===Be){Ne&&ke(Ie,i.getTypeAtLocation(Ne));break}}default:return x(Ce,Ie)}}function x(Ce,Ie){Dh(Ce)&&ke(Ie,i.getContextualType(Ce))}function A(Ce,Ie){ke(Ie,Pa(Ce)?i.getVoidType():i.getAnyType())}function w(Ce,Ie){switch(Ce.operator){case 45:case 46:case 40:case 54:Ie.isNumber=!0;break;case 39:Ie.isNumberOrString=!0;break}}function C(Ce,Ie,Be){switch(Ie.operatorToken.kind){case 42:case 41:case 43:case 44:case 47:case 48:case 49:case 50:case 51:case 52:case 65:case 67:case 66:case 68:case 69:case 73:case 74:case 78:case 70:case 72:case 71:case 40:case 29:case 32:case 31:case 33:let Ne=i.getTypeAtLocation(Ie.left===Ce?Ie.right:Ie.left);Ne.flags&1056?ke(Be,Ne):Be.isNumber=!0;break;case 64:case 39:let Le=i.getTypeAtLocation(Ie.left===Ce?Ie.right:Ie.left);Le.flags&1056?ke(Be,Le):Le.flags&296?Be.isNumber=!0:Le.flags&402653316?Be.isString=!0:Le.flags&1||(Be.isNumberOrString=!0);break;case 63:case 34:case 36:case 37:case 35:ke(Be,i.getTypeAtLocation(Ie.left===Ce?Ie.right:Ie.left));break;case 101:Ce===Ie.left&&(Be.isString=!0);break;case 56:case 60:Ce===Ie.left&&(Ce.parent.parent.kind===257||Iu(Ce.parent.parent,!0))&&ke(Be,i.getTypeAtLocation(Ie.right));break;case 55:case 27:case 102:break}}function P(Ce,Ie){ke(Ie,i.getTypeAtLocation(Ce.parent.parent.expression))}function F(Ce,Ie){let Be={argumentTypes:[],return_:l()};if(Ce.arguments)for(let Ne of Ce.arguments)Be.argumentTypes.push(i.getTypeAtLocation(Ne));S(Ce,Be.return_),Ce.kind===210?(Ie.calls||(Ie.calls=[])).push(Be):(Ie.constructs||(Ie.constructs=[])).push(Be)}function B(Ce,Ie){let Be=Bs(Ce.name.text);Ie.properties||(Ie.properties=new Map);let Ne=Ie.properties.get(Be)||l();S(Ce,Ne),Ie.properties.set(Be,Ne)}function q(Ce,Ie,Be){if(Ie===Ce.argumentExpression){Be.isNumberOrString=!0;return}else{let Ne=i.getTypeAtLocation(Ce.argumentExpression),Le=l();S(Ce,Le),Ne.flags&296?Be.numberIndex=Le:Be.stringIndex=Le}}function W(Ce,Ie){let Be=wi(Ce.parent.parent)?Ce.parent.parent:Ce.parent;Pe(Ie,i.getTypeAtLocation(Be))}function Y(Ce,Ie){Pe(Ie,i.getTypeAtLocation(Ce.parent))}function R(Ce,Ie){let Be=[];for(let Ne of Ce)for(let{high:Le,low:Ye}of Ie)Le(Ne)&&(L.assert(!Ye(Ne),\"Priority can't have both low and high\"),Be.push(Ye));return Ce.filter(Ne=>Be.every(Le=>!Le(Ne)))}function ie(Ce){return Q(Z(Ce))}function Q(Ce){if(!Ce.length)return i.getAnyType();let Ie=i.getUnionType([i.getStringType(),i.getNumberType()]),Ne=R(Ce,[{high:Ye=>Ye===i.getStringType()||Ye===i.getNumberType(),low:Ye=>Ye===Ie},{high:Ye=>!(Ye.flags&16385),low:Ye=>!!(Ye.flags&16385)},{high:Ye=>!(Ye.flags&114689)&&!(Ur(Ye)&16),low:Ye=>!!(Ur(Ye)&16)}]),Le=Ne.filter(Ye=>Ur(Ye)&16);return Le.length&&(Ne=Ne.filter(Ye=>!(Ur(Ye)&16)),Ne.push(fe(Le))),i.getWidenedType(i.getUnionType(Ne.map(i.getBaseTypeOfLiteralType),2))}function fe(Ce){if(Ce.length===1)return Ce[0];let Ie=[],Be=[],Ne=[],Le=[],Ye=!1,_t=!1,ct=Of();for(let qe of Ce){for(let tn of i.getPropertiesOfType(qe))ct.add(tn.name,tn.valueDeclaration?i.getTypeOfSymbolAtLocation(tn,tn.valueDeclaration):i.getAnyType());Ie.push(...i.getSignaturesOfType(qe,0)),Be.push(...i.getSignaturesOfType(qe,1));let zt=i.getIndexInfoOfType(qe,0);zt&&(Ne.push(zt.type),Ye=Ye||zt.isReadonly);let Qt=i.getIndexInfoOfType(qe,1);Qt&&(Le.push(Qt.type),_t=_t||Qt.isReadonly)}let Rt=uae(ct,(qe,zt)=>{let Qt=zt.length<Ce.length?16777216:0,tn=i.createSymbol(4|Qt,qe);return tn.links.type=i.getUnionType(zt),[qe,tn]}),We=[];return Ne.length&&We.push(i.createIndexInfo(i.getStringType(),i.getUnionType(Ne),Ye)),Le.length&&We.push(i.createIndexInfo(i.getNumberType(),i.getUnionType(Le),_t)),i.createAnonymousType(Ce[0].symbol,Rt,Ie,Be,We)}function Z(Ce){var Ie,Be,Ne;let Le=[];Ce.isNumber&&Le.push(i.getNumberType()),Ce.isString&&Le.push(i.getStringType()),Ce.isNumberOrString&&Le.push(i.getUnionType([i.getStringType(),i.getNumberType()])),Ce.numberIndex&&Le.push(i.createArrayType(ie(Ce.numberIndex))),(((Ie=Ce.properties)==null?void 0:Ie.size)||((Be=Ce.constructs)==null?void 0:Be.length)||Ce.stringIndex)&&Le.push(U(Ce));let Ye=(Ce.candidateTypes||[]).map(ct=>i.getBaseTypeOfLiteralType(ct)),_t=(Ne=Ce.calls)!=null&&Ne.length?U(Ce):void 0;return _t&&Ye?Le.push(i.getUnionType([_t,...Ye],2)):(_t&&Le.push(_t),Fn(Ye)&&Le.push(...Ye)),Le.push(...re(Ce)),Le}function U(Ce){let Ie=new Map;Ce.properties&&Ce.properties.forEach((Ye,_t)=>{let ct=i.createSymbol(4,_t);ct.links.type=ie(Ye),Ie.set(_t,ct)});let Be=Ce.calls?[we(Ce.calls)]:[],Ne=Ce.constructs?[we(Ce.constructs)]:[],Le=Ce.stringIndex?[i.createIndexInfo(i.getStringType(),ie(Ce.stringIndex),!1)]:[];return i.createAnonymousType(void 0,Ie,Be,Ne,Le)}function re(Ce){if(!Ce.properties||!Ce.properties.size)return[];let Ie=s.filter(Be=>le(Be,Ce));return 0<Ie.length&&Ie.length<3?Ie.map(Be=>_e(Be,Ce)):[]}function le(Ce,Ie){return Ie.properties?!Ld(Ie.properties,(Be,Ne)=>{let Le=i.getTypeOfPropertyOfType(Ce,Ne);return Le?Be.calls?!i.getSignaturesOfType(Le,0).length||!i.isTypeAssignableTo(Le,Ve(Be.calls)):!i.isTypeAssignableTo(Le,ie(Be)):!0}):!1}function _e(Ce,Ie){if(!(Ur(Ce)&4)||!Ie.properties)return Ce;let Be=Ce.target,Ne=Wp(Be.typeParameters);if(!Ne)return Ce;let Le=[];return Ie.properties.forEach((Ye,_t)=>{let ct=i.getTypeOfPropertyOfType(Be,_t);L.assert(!!ct,\"generic should have all the properties of its reference.\"),Le.push(...ge(ct,ie(Ye),Ne))}),o[Ce.symbol.escapedName](Q(Le))}function ge(Ce,Ie,Be){if(Ce===Be)return[Ie];if(Ce.flags&3145728)return Uo(Ce.types,Ye=>ge(Ye,Ie,Be));if(Ur(Ce)&4&&Ur(Ie)&4){let Ye=i.getTypeArguments(Ce),_t=i.getTypeArguments(Ie),ct=[];if(Ye&&_t)for(let Rt=0;Rt<Ye.length;Rt++)_t[Rt]&&ct.push(...ge(Ye[Rt],_t[Rt],Be));return ct}let Ne=i.getSignaturesOfType(Ce,0),Le=i.getSignaturesOfType(Ie,0);return Ne.length===1&&Le.length===1?X(Ne[0],Le[0],Be):[]}function X(Ce,Ie,Be){var Ne;let Le=[];for(let ct=0;ct<Ce.parameters.length;ct++){let Rt=Ce.parameters[ct],We=Ie.parameters[ct],qe=Ce.declaration&&Fm(Ce.declaration.parameters[ct]);if(!We)break;let zt=Rt.valueDeclaration?i.getTypeOfSymbolAtLocation(Rt,Rt.valueDeclaration):i.getAnyType(),Qt=qe&&i.getElementTypeOfArrayType(zt);Qt&&(zt=Qt);let tn=((Ne=zr(We,Zp))==null?void 0:Ne.links.type)||(We.valueDeclaration?i.getTypeOfSymbolAtLocation(We,We.valueDeclaration):i.getAnyType());Le.push(...ge(zt,tn,Be))}let Ye=i.getReturnTypeOfSignature(Ce),_t=i.getReturnTypeOfSignature(Ie);return Le.push(...ge(Ye,_t,Be)),Le}function Ve(Ce){return i.createAnonymousType(void 0,Ua(),[we(Ce)],Je,Je)}function we(Ce){let Ie=[],Be=Math.max(...Ce.map(Le=>Le.argumentTypes.length));for(let Le=0;Le<Be;Le++){let Ye=i.createSymbol(1,Bs(`arg${Le}`));Ye.links.type=Q(Ce.map(_t=>_t.argumentTypes[Le]||i.getUndefinedType())),Ce.some(_t=>_t.argumentTypes[Le]===void 0)&&(Ye.flags|=16777216),Ie.push(Ye)}let Ne=ie(f(Ce.map(Le=>Le.return_)));return i.createSignature(void 0,void 0,void 0,Ie,Ne,void 0,Be,0)}function ke(Ce,Ie){Ie&&!(Ie.flags&1)&&!(Ie.flags&131072)&&(Ce.candidateTypes||(Ce.candidateTypes=[])).push(Ie)}function Pe(Ce,Ie){Ie&&!(Ie.flags&1)&&!(Ie.flags&131072)&&(Ce.candidateThisTypes||(Ce.candidateThisTypes=[])).push(Ie)}}var w9,tZ,p9e=gt({\"src/services/codefixes/inferFromUsage.ts\"(){\"use strict\";Fr(),Qa(),w9=\"inferFromUsage\",tZ=[_.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code,_.Variable_0_implicitly_has_an_1_type.code,_.Parameter_0_implicitly_has_an_1_type.code,_.Rest_parameter_0_implicitly_has_an_any_type.code,_.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation.code,_._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type.code,_.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation.code,_.Member_0_implicitly_has_an_1_type.code,_.Variable_0_implicitly_has_type_1_in_some_locations_but_a_better_type_may_be_inferred_from_usage.code,_.Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code,_.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code,_.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage.code,_.Property_0_implicitly_has_type_any_but_a_better_type_for_its_get_accessor_may_be_inferred_from_usage.code,_._0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage.code,_.Property_0_implicitly_has_type_any_but_a_better_type_for_its_set_accessor_may_be_inferred_from_usage.code,_.Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code,_.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code],za({errorCodes:tZ,getCodeActions(e){let{sourceFile:t,program:r,span:{start:i},errorCode:o,cancellationToken:s,host:l,preferences:f}=e,d=Vi(t,i),g,m=nr.ChangeTracker.with(e,S=>{g=Y0e(S,t,d,o,r,s,h0,l,f)}),v=g&&sa(g);return!v||m.length===0?void 0:[Ma(w9,m,[s9e(o,d),Qc(v)],w9,_.Infer_all_types_from_usage)]},fixIds:[w9],getAllCodeActions(e){let{sourceFile:t,program:r,cancellationToken:i,host:o,preferences:s}=e,l=z2();return ns(e,tZ,(f,d)=>{Y0e(f,t,Vi(d.file,d.start),d.code,r,i,l,o,s)})}})}});function tEe(e,t,r){if(Yn(e))return;let i=Vi(e,r),o=jn(i,Ds),s=o?.type;if(!s)return;let l=t.getTypeFromTypeNode(s),f=t.getAwaitedType(l)||t.getVoidType(),d=t.typeToTypeNode(f,s,void 0);if(d)return{returnTypeNode:s,returnType:l,promisedTypeNode:d,promisedType:f}}function nEe(e,t,r,i){e.replaceNode(t,r,D.createTypeReferenceNode(\"Promise\",[i]))}var R9,nZ,m9e=gt({\"src/services/codefixes/fixReturnTypeInAsyncFunction.ts\"(){\"use strict\";Fr(),Qa(),R9=\"fixReturnTypeInAsyncFunction\",nZ=[_.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0.code],za({errorCodes:nZ,fixIds:[R9],getCodeActions:function(t){let{sourceFile:r,program:i,span:o}=t,s=i.getTypeChecker(),l=tEe(r,i.getTypeChecker(),o.start);if(!l)return;let{returnTypeNode:f,returnType:d,promisedTypeNode:g,promisedType:m}=l,v=nr.ChangeTracker.with(t,S=>nEe(S,r,f,g));return[Ma(R9,v,[_.Replace_0_with_Promise_1,s.typeToString(d),s.typeToString(m)],R9,_.Fix_all_incorrect_return_type_of_an_async_functions)]},getAllCodeActions:e=>ns(e,nZ,(t,r)=>{let i=tEe(r.file,e.program.getTypeChecker(),r.start);i&&nEe(t,r.file,i.returnTypeNode,i.promisedTypeNode)})})}});function rEe(e,t,r,i){let{line:o}=Gs(t,r);(!i||_0(i,o))&&e.insertCommentBeforeLine(t,o,r,\" @ts-ignore\")}var rZ,iZ,aZ,h9e=gt({\"src/services/codefixes/disableJsDiagnostics.ts\"(){\"use strict\";Fr(),Qa(),rZ=\"disableJsDiagnostics\",iZ=\"disableJsDiagnostics\",aZ=Zi(Object.keys(_),e=>{let t=_[e];return t.category===1?t.code:void 0}),za({errorCodes:aZ,getCodeActions:function(t){let{sourceFile:r,program:i,span:o,host:s,formatContext:l}=t;if(!Yn(r)||!WR(r,i.getCompilerOptions()))return;let f=r.checkJsDirective?\"\":bb(s,l.options),d=[J_(rZ,[_ve(r.fileName,[BN(r.checkJsDirective?Wc(r.checkJsDirective.pos,r.checkJsDirective.end):il(0,0),`// @ts-nocheck${f}`)])],_.Disable_checking_for_this_file)];return nr.isValidLocationToAddComment(r,o.start)&&d.unshift(Ma(rZ,nr.ChangeTracker.with(t,g=>rEe(g,r,o.start)),_.Ignore_this_error_message,iZ,_.Add_ts_ignore_to_all_error_messages)),d},fixIds:[iZ],getAllCodeActions:e=>{let t=new Set;return ns(e,aZ,(r,i)=>{nr.isValidLocationToAddComment(i.file,i.start)&&rEe(r,i.file,i.start,t)})}})}});function oZ(e,t,r,i,o,s,l){let f=e.symbol.members;for(let d of t)f.has(d.escapedName)||iEe(d,e,r,i,o,s,l,void 0)}function cx(e){return{trackSymbol:()=>!1,moduleResolverHost:oY(e.program,e.host)}}function iEe(e,t,r,i,o,s,l,f,d=3,g=!1){var m;let v=e.getDeclarations(),S=v?.[0],x=i.program.getTypeChecker(),A=Do(i.program.getCompilerOptions()),w=(m=S?.kind)!=null?m:168,C=cc(sa(S),!1),P=S?uu(S):0,F=P&4?4:P&16?16:0;S&&Id(S)&&(F|=128);let B=Q(),q=x.getWidenedType(x.getTypeOfSymbolAtLocation(e,t)),W=!!(e.flags&16777216),Y=!!(t.flags&16777216)||g,R=z_(r,o);switch(w){case 168:case 169:let le=R===0?268435456:void 0,_e=x.typeToTypeNode(q,t,le,cx(i));if(s){let X=u1(_e,A);X&&(_e=X.typeNode,lx(s,X.symbols))}l(D.createPropertyDeclaration(B,S?Z(C):e.getName(),W&&d&2?D.createToken(57):void 0,_e,void 0));break;case 174:case 175:{L.assertIsDefined(v);let X=x.typeToTypeNode(q,t,void 0,cx(i)),Ve=DT(v,S),we=Ve.secondAccessor?[Ve.firstAccessor,Ve.secondAccessor]:[Ve.firstAccessor];if(s){let ke=u1(X,A);ke&&(X=ke.typeNode,lx(s,ke.symbols))}for(let ke of we)if(__(ke))l(D.createGetAccessorDeclaration(B,Z(C),Je,re(X),U(f,R,Y)));else{L.assertNode(ke,Tf,\"The counterpart to a getter should be a setter\");let Pe=jI(ke),Ce=Pe&&Re(Pe.name)?vr(Pe.name):void 0;l(D.createSetAccessorDeclaration(B,Z(C),cZ(1,[Ce],[re(X)],1,!1),U(f,R,Y)))}break}case 170:case 171:L.assertIsDefined(v);let ge=q.isUnion()?Uo(q.types,X=>X.getCallSignatures()):q.getCallSignatures();if(!vt(ge))break;if(v.length===1){L.assert(ge.length===1,\"One declaration implies one signature\");let X=ge[0];ie(R,X,B,Z(C),U(f,R,Y));break}for(let X of ge)ie(R,X,B,Z(C));if(!Y)if(v.length>ge.length){let X=x.getSignatureFromDeclaration(v[v.length-1]);ie(R,X,B,Z(C),U(f,R))}else L.assert(v.length===ge.length,\"Declarations and signatures should match count\"),l(v9e(x,i,t,ge,Z(C),W&&!!(d&1),B,R,f));break}function ie(le,_e,ge,X,Ve){let we=O9(171,i,le,_e,Ve,X,ge,W&&!!(d&1),t,s);we&&l(we)}function Q(){let le;return F&&(le=pA(le,D.createModifiersFromModifierFlags(F))),fe()&&(le=Sn(le,D.createToken(161))),le&&D.createNodeArray(le)}function fe(){return!!(i.program.getCompilerOptions().noImplicitOverride&&S&&B0(S))}function Z(le){return Re(le)&&le.escapedText===\"constructor\"?D.createComputedPropertyName(D.createStringLiteral(vr(le),R===0)):cc(le,!1)}function U(le,_e,ge){return ge?void 0:cc(le,!1)||lZ(_e)}function re(le){return cc(le,!1)}}function O9(e,t,r,i,o,s,l,f,d,g){let m=t.program,v=m.getTypeChecker(),S=Do(m.getCompilerOptions()),x=Yn(d),A=524545|(r===0?268435456:0),w=v.signatureToSignatureDeclaration(i,e,d,A,cx(t));if(!w)return;let C=x?void 0:w.typeParameters,P=w.parameters,F=x?void 0:w.type;if(g){if(C){let Y=Tl(C,R=>{let ie=R.constraint,Q=R.default;if(ie){let fe=u1(ie,S);fe&&(ie=fe.typeNode,lx(g,fe.symbols))}if(Q){let fe=u1(Q,S);fe&&(Q=fe.typeNode,lx(g,fe.symbols))}return D.updateTypeParameterDeclaration(R,R.modifiers,R.name,ie,Q)});C!==Y&&(C=it(D.createNodeArray(Y,C.hasTrailingComma),C))}let W=Tl(P,Y=>{let R=x?void 0:Y.type;if(R){let ie=u1(R,S);ie&&(R=ie.typeNode,lx(g,ie.symbols))}return D.updateParameterDeclaration(Y,Y.modifiers,Y.dotDotDotToken,Y.name,x?void 0:Y.questionToken,R,Y.initializer)});if(P!==W&&(P=it(D.createNodeArray(W,P.hasTrailingComma),P)),F){let Y=u1(F,S);Y&&(F=Y.typeNode,lx(g,Y.symbols))}}let B=f?D.createToken(57):void 0,q=w.asteriskToken;if(ms(w))return D.updateFunctionExpression(w,l,w.asteriskToken,zr(s,Re),C,P,F,o??w.body);if(xs(w))return D.updateArrowFunction(w,l,C,P,F,w.equalsGreaterThanToken,o??w.body);if(Nc(w))return D.updateMethodDeclaration(w,l,q,s??D.createIdentifier(\"\"),B,C,P,F,o);if(Jc(w))return D.updateFunctionDeclaration(w,l,w.asteriskToken,zr(s,Re),C,P,F,o??w.body)}function sZ(e,t,r,i,o,s,l){let f=z_(t.sourceFile,t.preferences),d=Do(t.program.getCompilerOptions()),g=cx(t),m=t.program.getTypeChecker(),v=Yn(l),{typeArguments:S,arguments:x,parent:A}=i,w=v?void 0:m.getContextualType(i),C=on(x,Q=>Re(Q)?Q.text:br(Q)&&Re(Q.name)?Q.name.text:void 0),P=v?[]:on(x,Q=>m.getTypeAtLocation(Q)),{argumentTypeNodes:F,argumentTypeParameters:B}=sEe(m,r,P,l,d,void 0,g),q=s?D.createNodeArray(D.createModifiersFromModifierFlags(s)):void 0,W=f3(A)?D.createToken(41):void 0,Y=v?void 0:g9e(m,B,S),R=cZ(x.length,C,F,void 0,v),ie=v||w===void 0?void 0:m.typeToTypeNode(w,l,void 0,g);switch(e){case 171:return D.createMethodDeclaration(q,W,o,void 0,Y,R,ie,lZ(f));case 170:return D.createMethodSignature(q,o,void 0,Y,R,ie===void 0?D.createKeywordTypeNode(157):ie);case 259:return D.createFunctionDeclaration(q,W,o,Y,R,ie,_P(_.Function_not_implemented.message,f));default:L.fail(\"Unexpected kind\")}}function g9e(e,t,r){let i=new Set(t.map(s=>s[0])),o=new Map(t);if(r){let s=r.filter(f=>!t.some(d=>{var g;return e.getTypeAtLocation(f)===((g=d[1])==null?void 0:g.argumentType)})),l=i.size+s.length;for(let f=0;i.size<l;f+=1)i.add(aEe(f))}return lo(i.values(),s=>{var l;return D.createTypeParameterDeclaration(void 0,s,(l=o.get(s))==null?void 0:l.constraint)})}function aEe(e){return 84+e<=90?String.fromCharCode(84+e):`T${e}`}function N9(e,t,r,i,o,s,l){let f=e.typeToTypeNode(r,i,s,l);if(f&&Mh(f)){let d=u1(f,o);d&&(lx(t,d.symbols),f=d.typeNode)}return cc(f)}function oEe(e){return e.isUnionOrIntersection()?e.types.some(oEe):e.flags&262144}function sEe(e,t,r,i,o,s,l){let f=[],d=new Map;for(let g=0;g<r.length;g+=1){let m=r[g];if(m.isUnionOrIntersection()&&m.types.some(oEe)){let w=aEe(g);f.push(D.createTypeReferenceNode(w)),d.set(w,void 0);continue}let v=e.getBaseTypeOfLiteralType(m),S=N9(e,t,v,i,o,s,l);if(!S)continue;f.push(S);let x=cEe(m),A=m.isTypeParameter()&&m.constraint&&!y9e(m.constraint)?N9(e,t,m.constraint,i,o,s,l):void 0;x&&d.set(x,{argumentType:m,constraint:A})}return{argumentTypeNodes:f,argumentTypeParameters:lo(d.entries())}}function y9e(e){return e.flags&524288&&e.objectFlags===16}function cEe(e){var t;if(e.flags&3145728)for(let r of e.types){let i=cEe(r);if(i)return i}return e.flags&262144?(t=e.getSymbol())==null?void 0:t.getName():void 0}function cZ(e,t,r,i,o){let s=[],l=new Map;for(let f=0;f<e;f++){let d=t?.[f]||`arg${f}`,g=l.get(d);l.set(d,(g||0)+1);let m=D.createParameterDeclaration(void 0,void 0,d+(g||\"\"),i!==void 0&&f>=i?D.createToken(57):void 0,o?void 0:r?.[f]||D.createKeywordTypeNode(157),void 0);s.push(m)}return s}function v9e(e,t,r,i,o,s,l,f,d){let g=i[0],m=i[0].minArgumentCount,v=!1;for(let w of i)m=Math.min(w.minArgumentCount,m),Xl(w)&&(v=!0),w.parameters.length>=g.parameters.length&&(!Xl(w)||Xl(g))&&(g=w);let S=g.parameters.length-(Xl(g)?1:0),x=g.parameters.map(w=>w.name),A=cZ(S,x,void 0,m,!1);if(v){let w=D.createParameterDeclaration(void 0,D.createToken(25),x[S]||\"rest\",S>=m?D.createToken(57):void 0,D.createArrayTypeNode(D.createKeywordTypeNode(157)),void 0);A.push(w)}return E9e(l,o,s,void 0,A,b9e(i,e,t,r),f,d)}function b9e(e,t,r,i){if(Fn(e)){let o=t.getUnionType(on(e,t.getReturnTypeOfSignature));return t.typeToTypeNode(o,i,1,cx(r))}}function E9e(e,t,r,i,o,s,l,f){return D.createMethodDeclaration(e,void 0,t,r?D.createToken(57):void 0,i,o,s,f||lZ(l))}function lZ(e){return _P(_.Method_not_implemented.message,e)}function _P(e,t){return D.createBlock([D.createThrowStatement(D.createNewExpression(D.createIdentifier(\"Error\"),void 0,[D.createStringLiteral(e,t===0)]))],!0)}function uZ(e,t,r){let i=kI(t);if(!i)return;let o=fZ(i,\"compilerOptions\");if(o===void 0){e.insertNodeAtObjectStart(t,i,P9(\"compilerOptions\",D.createObjectLiteralExpression(r.map(([l,f])=>P9(l,f)),!0)));return}let s=o.initializer;if(!!rs(s))for(let[l,f]of r){let d=fZ(s,l);d===void 0?e.insertNodeAtObjectStart(t,s,P9(l,f)):e.replaceNode(t,d.initializer,f)}}function dZ(e,t,r,i){uZ(e,t,[[r,i]])}function P9(e,t){return D.createPropertyAssignment(D.createStringLiteral(e),t)}function fZ(e,t){return wr(e.properties,r=>yl(r)&&!!r.name&&yo(r.name)&&r.name.text===t)}function u1(e,t){let r,i=$e(e,o,bi);if(r&&i)return{typeNode:i,symbols:r};function o(s){if(ib(s)&&s.qualifier){let l=Xd(s.qualifier),f=j7(l.symbol,t),d=f!==l.text?lEe(s.qualifier,D.createIdentifier(f)):s.qualifier;r=Sn(r,l.symbol);let g=On(s.typeArguments,o,bi);return D.createTypeReferenceNode(d,g)}return xn(s,o,Bh)}}function lEe(e,t){return e.kind===79?t:D.createQualifiedName(lEe(e.left,t),e.right)}function lx(e,t){t.forEach(r=>e.addImportFromExportedSymbol(r,!0))}function _Z(e,t){let r=wl(t),i=Vi(e,t.start);for(;i.end<r;)i=i.parent;return i}var pZ,T9e=gt({\"src/services/codefixes/helpers.ts\"(){\"use strict\";Fr(),pZ=(e=>(e[e.Method=1]=\"Method\",e[e.Property=2]=\"Property\",e[e.All=3]=\"All\",e))(pZ||{})}});function uEe(e,t,r,i,o,s){let l=_Ee(e,t,r,i);if(!l||Nk.isRefactorErrorInfo(l))return;let f=nr.ChangeTracker.fromContext(o),{isStatic:d,isReadonly:g,fieldName:m,accessorName:v,originalName:S,type:x,container:A,declaration:w}=l;pd(m),pd(v),pd(w),pd(A);let C,P;if(Yr(A)){let B=uu(w);if(Cu(e)){let q=D.createModifiersFromModifierFlags(B);C=q,P=q}else C=D.createModifiersFromModifierFlags(A9e(B)),P=D.createModifiersFromModifierFlags(C9e(B));WS(w)&&(P=Qi(Uy(w),P))}w9e(f,e,w,x,m,P);let F=I9e(m,v,x,C,d,A);if(pd(F),pEe(f,e,F,w,A),g){let B=Vm(A);B&&R9e(f,e,B,m.text,S)}else{let B=L9e(m,v,x,C,d,A);pd(B),pEe(f,e,B,w,A)}return f.getChanges()}function S9e(e){return Re(e)||yo(e)}function x9e(e){return Ad(e,e.parent)||Na(e)||yl(e)}function dEe(e,t){return Re(t)?D.createIdentifier(e):D.createStringLiteral(e)}function fEe(e,t,r){let i=t?r.name:D.createThis();return Re(e)?D.createPropertyAccessExpression(i,e):D.createElementAccessExpression(i,D.createStringLiteralFromNode(e))}function A9e(e){return e&=-65,e&=-9,e&16||(e|=4),e}function C9e(e){return e&=-5,e&=-17,e|=8,e}function _Ee(e,t,r,i,o=!0){let s=Vi(e,r),l=r===i&&o,f=jn(s.parent,x9e),d=124;if(!f||!(HX(f.name,e,r,i)||l))return{error:uo(_.Could_not_find_property_for_which_to_generate_accessor)};if(!S9e(f.name))return{error:uo(_.Name_is_not_valid)};if((uu(f)&126975|d)!==d)return{error:uo(_.Can_only_convert_property_with_modifier)};let g=f.name.text,m=DY(g),v=dEe(m?g:a1(`_${g}`,e),f.name),S=dEe(m?a1(g.substring(1),e):g,f.name);return{isStatic:zc(f),isReadonly:HI(f),type:O9e(f,t),container:f.kind===166?f.parent.parent:f.parent,originalName:f.name.text,declaration:f,fieldName:v,accessorName:S,renameAccessor:m}}function I9e(e,t,r,i,o,s){return D.createGetAccessorDeclaration(i,t,[],r,D.createBlock([D.createReturnStatement(fEe(e,o,s))],!0))}function L9e(e,t,r,i,o,s){return D.createSetAccessorDeclaration(i,t,[D.createParameterDeclaration(void 0,void 0,D.createIdentifier(\"value\"),void 0,r)],D.createBlock([D.createExpressionStatement(D.createAssignment(fEe(e,o,s),D.createIdentifier(\"value\")))],!0))}function k9e(e,t,r,i,o,s){let l=D.updatePropertyDeclaration(r,s,o,r.questionToken||r.exclamationToken,i,r.initializer);e.replaceNode(t,r,l)}function D9e(e,t,r,i){let o=D.updatePropertyAssignment(r,i,r.initializer);(o.modifiers||o.questionToken||o.exclamationToken)&&(o===r&&(o=D.cloneNode(o)),o.modifiers=void 0,o.questionToken=void 0,o.exclamationToken=void 0),e.replacePropertyAssignment(t,r,o)}function w9e(e,t,r,i,o,s){Na(r)?k9e(e,t,r,i,o,s):yl(r)?D9e(e,t,r,o):e.replaceNode(t,r,D.updateParameterDeclaration(r,s,r.dotDotDotToken,Ga(o,Re),r.questionToken,r.type,r.initializer))}function pEe(e,t,r,i,o){Ad(i,i.parent)?e.insertMemberAtStart(t,o,r):yl(i)?e.insertNodeAfterComma(t,i,r):e.insertNodeAfter(t,i,r)}function R9e(e,t,r,i,o){!r.body||r.body.forEachChild(function s(l){Vs(l)&&l.expression.kind===108&&yo(l.argumentExpression)&&l.argumentExpression.text===o&&$I(l)&&e.replaceNode(t,l.argumentExpression,D.createStringLiteral(i)),br(l)&&l.expression.kind===108&&l.name.text===o&&$I(l)&&e.replaceNode(t,l.name,D.createIdentifier(i)),!Ia(l)&&!Yr(l)&&l.forEachChild(s)})}function O9e(e,t){let r=Mce(e);if(Na(e)&&r&&e.questionToken){let i=t.getTypeChecker(),o=i.getTypeFromTypeNode(r);if(!i.isTypeAssignableTo(i.getUndefinedType(),o)){let s=wS(r)?r.types:[r];return D.createUnionTypeNode([...s,D.createKeywordTypeNode(155)])}}return r}function mZ(e,t){let r=[];for(;e;){let i=P0(e),o=i&&t.getSymbolAtLocation(i.expression);if(!o)break;let s=o.flags&2097152?t.getAliasedSymbol(o):o,l=s.declarations&&wr(s.declarations,Yr);if(!l)break;r.push(l),e=l}return r}var N9e=gt({\"src/services/codefixes/generateAccessors.ts\"(){\"use strict\";Fr()}});function P9e(e,t){let r=Gn(t),i=jA(t),o=e.program.getCompilerOptions(),s=[];return s.push(mEe(e,r,t,Xg(i.name,void 0,t.moduleSpecifier,z_(r,e.preferences)))),Rl(o)===1&&s.push(mEe(e,r,t,D.createImportEqualsDeclaration(void 0,!1,i.name,D.createExternalModuleReference(t.moduleSpecifier)))),s}function mEe(e,t,r,i){let o=nr.ChangeTracker.with(e,s=>s.replaceNode(t,r,i));return J_(hZ,o,[_.Replace_import_with_0,o[0].textChanges[0].newText])}function M9e(e){let t=e.sourceFile,r=_.This_expression_is_not_callable.code===e.errorCode?210:211,i=jn(Vi(t,e.span.start),s=>s.kind===r);if(!i)return[];let o=i.expression;return hEe(e,o)}function F9e(e){let t=e.sourceFile,r=jn(Vi(t,e.span.start),i=>i.getStart()===e.span.start&&i.getEnd()===e.span.start+e.span.length);return r?hEe(e,r):[]}function hEe(e,t){let r=e.program.getTypeChecker().getTypeAtLocation(t);if(!(r.symbol&&Zp(r.symbol)&&r.symbol.links.originatingImport))return[];let i=[],o=r.symbol.links.originatingImport;if(Dd(o)||si(i,P9e(e,o)),ot(t)&&!(zl(t.parent)&&t.parent.name===t)){let s=e.sourceFile,l=nr.ChangeTracker.with(e,f=>f.replaceNode(s,t,D.createPropertyAccessExpression(t,\"default\"),{}));i.push(J_(hZ,l,_.Use_synthetic_default_member))}return i}var hZ,G9e=gt({\"src/services/codefixes/fixInvalidImportSyntax.ts\"(){\"use strict\";Fr(),Qa(),hZ=\"invalidImportSyntax\",za({errorCodes:[_.This_expression_is_not_callable.code,_.This_expression_is_not_constructable.code],getCodeActions:M9e}),za({errorCodes:[_.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code,_.Type_0_does_not_satisfy_the_constraint_1.code,_.Type_0_is_not_assignable_to_type_1.code,_.Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated.code,_.Type_predicate_0_is_not_assignable_to_1.code,_.Property_0_of_type_1_is_not_assignable_to_2_index_type_3.code,_._0_index_type_1_is_not_assignable_to_2_index_type_3.code,_.Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2.code,_.Property_0_in_type_1_is_not_assignable_to_type_2.code,_.Property_0_of_JSX_spread_attribute_is_not_assignable_to_target_property.code,_.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1.code],getCodeActions:F9e})}});function gEe(e,t){let r=Vi(e,t);if(Re(r)&&Na(r.parent)){let i=Cl(r.parent);if(i)return{type:i,prop:r.parent,isJs:Yn(r.parent)}}}function B9e(e,t){if(t.isJs)return;let r=nr.ChangeTracker.with(e,i=>yEe(i,e.sourceFile,t.prop));return Ma(M9,r,[_.Add_definite_assignment_assertion_to_property_0,t.prop.getText()],F9,_.Add_definite_assignment_assertions_to_all_uninitialized_properties)}function yEe(e,t,r){pd(r);let i=D.updatePropertyDeclaration(r,r.modifiers,r.name,D.createToken(53),r.type,r.initializer);e.replaceNode(t,r,i)}function U9e(e,t){let r=nr.ChangeTracker.with(e,i=>vEe(i,e.sourceFile,t));return Ma(M9,r,[_.Add_undefined_type_to_property_0,t.prop.name.getText()],G9,_.Add_undefined_type_to_all_uninitialized_properties)}function vEe(e,t,r){let i=D.createKeywordTypeNode(155),o=wS(r.type)?r.type.types.concat(i):[r.type,i],s=D.createUnionTypeNode(o);r.isJs?e.addJSDocTags(t,r.prop,[D.createJSDocTypeTag(void 0,D.createJSDocTypeExpression(s))]):e.replaceNode(t,r.type,s)}function V9e(e,t){if(t.isJs)return;let r=e.program.getTypeChecker(),i=EEe(r,t.prop);if(!i)return;let o=nr.ChangeTracker.with(e,s=>bEe(s,e.sourceFile,t.prop,i));return Ma(M9,o,[_.Add_initializer_to_property_0,t.prop.name.getText()],B9,_.Add_initializers_to_all_uninitialized_properties)}function bEe(e,t,r,i){pd(r);let o=D.updatePropertyDeclaration(r,r.modifiers,r.name,r.questionToken,r.type,i);e.replaceNode(t,r,o)}function EEe(e,t){return TEe(e,e.getTypeFromTypeNode(t.type))}function TEe(e,t){if(t.flags&512)return t===e.getFalseType()||t===e.getFalseType(!0)?D.createFalse():D.createTrue();if(t.isStringLiteral())return D.createStringLiteral(t.value);if(t.isNumberLiteral())return D.createNumericLiteral(t.value);if(t.flags&2048)return D.createBigIntLiteral(t.value);if(t.isUnion())return ks(t.types,r=>TEe(e,r));if(t.isClass()){let r=Nh(t.symbol);if(!r||Mr(r,256))return;let i=Vm(r);return i&&i.parameters.length?void 0:D.createNewExpression(D.createIdentifier(t.symbol.name),void 0,void 0)}else if(e.isArrayLikeType(t))return D.createArrayLiteralExpression()}var M9,F9,G9,B9,gZ,j9e=gt({\"src/services/codefixes/fixStrictClassInitialization.ts\"(){\"use strict\";Fr(),Qa(),M9=\"strictClassInitialization\",F9=\"addMissingPropertyDefiniteAssignmentAssertions\",G9=\"addMissingPropertyUndefinedType\",B9=\"addMissingPropertyInitializer\",gZ=[_.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor.code],za({errorCodes:gZ,getCodeActions:function(t){let r=gEe(t.sourceFile,t.span.start);if(!r)return;let i=[];return Sn(i,U9e(t,r)),Sn(i,B9e(t,r)),Sn(i,V9e(t,r)),i},fixIds:[F9,G9,B9],getAllCodeActions:e=>ns(e,gZ,(t,r)=>{let i=gEe(r.file,r.start);if(!!i)switch(e.fixId){case F9:yEe(t,r.file,i.prop);break;case G9:vEe(t,r.file,i);break;case B9:let o=e.program.getTypeChecker(),s=EEe(o,i.prop);if(!s)return;bEe(t,r.file,i.prop,s);break;default:L.fail(JSON.stringify(e.fixId))}})})}});function SEe(e,t,r){let{allowSyntheticDefaults:i,defaultImportName:o,namedImports:s,statement:l,required:f}=r;e.replaceNode(t,l,o&&!i?D.createImportEqualsDeclaration(void 0,!1,o,D.createExternalModuleReference(f)):D.createImportDeclaration(void 0,D.createImportClause(!1,o,s),f,void 0))}function xEe(e,t,r){let{parent:i}=Vi(e,r);if(!qu(i,!0))throw L.failBadSyntaxKind(i);let o=Ga(i.parent,wi),s=zr(o.name,Re),l=cm(o.name)?H9e(o.name):void 0;if(s||l)return{allowSyntheticDefaults:RT(t.getCompilerOptions()),defaultImportName:s,namedImports:l,statement:Ga(o.parent.parent,Bc),required:Vo(i.arguments)}}function H9e(e){let t=[];for(let r of e.elements){if(!Re(r.name)||r.initializer)return;t.push(D.createImportSpecifier(!1,zr(r.propertyName,Re),r.name))}if(t.length)return D.createNamedImports(t)}var U9,yZ,W9e=gt({\"src/services/codefixes/requireInTs.ts\"(){\"use strict\";Fr(),Qa(),U9=\"requireInTs\",yZ=[_.require_call_may_be_converted_to_an_import.code],za({errorCodes:yZ,getCodeActions(e){let t=xEe(e.sourceFile,e.program,e.span.start);if(!t)return;let r=nr.ChangeTracker.with(e,i=>SEe(i,e.sourceFile,t));return[Ma(U9,r,_.Convert_require_to_import,U9,_.Convert_all_require_to_import)]},fixIds:[U9],getAllCodeActions:e=>ns(e,yZ,(t,r)=>{let i=xEe(r.file,e.program,r.start);i&&SEe(t,e.sourceFile,i)})})}});function AEe(e,t){let r=Vi(e,t);if(!Re(r))return;let{parent:i}=r;if(Nl(i)&&um(i.moduleReference))return{importNode:i,name:r,moduleSpecifier:i.moduleReference.expression};if(nv(i)){let o=i.parent.parent;return{importNode:o,name:r,moduleSpecifier:o.moduleSpecifier}}}function CEe(e,t,r,i){e.replaceNode(t,r.importNode,Xg(r.name,void 0,r.moduleSpecifier,z_(t,i)))}var V9,vZ,z9e=gt({\"src/services/codefixes/useDefaultImport.ts\"(){\"use strict\";Fr(),Qa(),V9=\"useDefaultImport\",vZ=[_.Import_may_be_converted_to_a_default_import.code],za({errorCodes:vZ,getCodeActions(e){let{sourceFile:t,span:{start:r}}=e,i=AEe(t,r);if(!i)return;let o=nr.ChangeTracker.with(e,s=>CEe(s,t,i,e.preferences));return[Ma(V9,o,_.Convert_to_default_import,V9,_.Convert_all_to_default_imports)]},fixIds:[V9],getAllCodeActions:e=>ns(e,vZ,(t,r)=>{let i=AEe(r.file,r.start);i&&CEe(t,r.file,i,e.preferences)})})}});function IEe(e,t,r){let i=zr(Vi(t,r.start),Uf);if(!i)return;let o=i.getText(t)+\"n\";e.replaceNode(t,i,D.createBigIntLiteral(o))}var j9,bZ,J9e=gt({\"src/services/codefixes/useBigintLiteral.ts\"(){\"use strict\";Fr(),Qa(),j9=\"useBigintLiteral\",bZ=[_.Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers.code],za({errorCodes:bZ,getCodeActions:function(t){let r=nr.ChangeTracker.with(t,i=>IEe(i,t.sourceFile,t.span));if(r.length>0)return[Ma(j9,r,_.Convert_to_a_bigint_numeric_literal,j9,_.Convert_all_to_bigint_numeric_literals)]},fixIds:[j9],getAllCodeActions:e=>ns(e,bZ,(t,r)=>IEe(t,r.file,r))})}});function LEe(e,t){let r=Vi(e,t);return L.assert(r.kind===100,\"This token should be an ImportKeyword\"),L.assert(r.parent.kind===202,\"Token parent should be an ImportType\"),r.parent}function kEe(e,t,r){let i=D.updateImportTypeNode(r,r.argument,r.assertions,r.qualifier,r.typeArguments,!0);e.replaceNode(t,r,i)}var DEe,H9,EZ,K9e=gt({\"src/services/codefixes/fixAddModuleReferTypeMissingTypeof.ts\"(){\"use strict\";Fr(),Qa(),DEe=\"fixAddModuleReferTypeMissingTypeof\",H9=DEe,EZ=[_.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0.code],za({errorCodes:EZ,getCodeActions:function(t){let{sourceFile:r,span:i}=t,o=LEe(r,i.start),s=nr.ChangeTracker.with(t,l=>kEe(l,r,o));return[Ma(H9,s,_.Add_missing_typeof,H9,_.Add_missing_typeof)]},fixIds:[H9],getAllCodeActions:e=>ns(e,EZ,(t,r)=>kEe(t,e.sourceFile,LEe(r.file,r.start)))})}});function wEe(e,t){let o=Vi(e,t).parent.parent;if(!(!ar(o)&&(o=o.parent,!ar(o)))&&!!rc(o.operatorToken))return o}function REe(e,t,r){let i=q9e(r);i&&e.replaceNode(t,r,D.createJsxFragment(D.createJsxOpeningFragment(),i,D.createJsxJsxClosingFragment()))}function q9e(e){let t=[],r=e;for(;;)if(ar(r)&&rc(r.operatorToken)&&r.operatorToken.kind===27){if(t.push(r.left),Mw(r.right))return t.push(r.right),t;if(ar(r.right)){r=r.right;continue}else return}else return}var W9,TZ,X9e=gt({\"src/services/codefixes/wrapJsxInFragment.ts\"(){\"use strict\";Fr(),Qa(),W9=\"wrapJsxInFragment\",TZ=[_.JSX_expressions_must_have_one_parent_element.code],za({errorCodes:TZ,getCodeActions:function(t){let{sourceFile:r,span:i}=t,o=wEe(r,i.start);if(!o)return;let s=nr.ChangeTracker.with(t,l=>REe(l,r,o));return[Ma(W9,s,_.Wrap_in_JSX_fragment,W9,_.Wrap_all_unparented_JSX_in_JSX_fragment)]},fixIds:[W9],getAllCodeActions:e=>ns(e,TZ,(t,r)=>{let i=wEe(e.sourceFile,r.start);!i||REe(t,e.sourceFile,i)})})}});function OEe(e,t){let r=Vi(e,t),i=zr(r.parent.parent,DS);if(!i)return;let o=ku(i.parent)?i.parent:zr(i.parent.parent,Ep);if(!!o)return{indexSignature:i,container:o}}function Y9e(e,t){return D.createTypeAliasDeclaration(e.modifiers,e.name,e.typeParameters,t)}function NEe(e,t,{indexSignature:r,container:i}){let s=(ku(i)?i.members:i.type.members).filter(m=>!DS(m)),l=Vo(r.parameters),f=D.createTypeParameterDeclaration(void 0,Ga(l.name,Re),l.type),d=D.createMappedTypeNode(HI(r)?D.createModifier(146):void 0,f,void 0,r.questionToken,r.type,void 0),g=D.createIntersectionTypeNode([...PI(i),d,...s.length?[D.createTypeLiteralNode(s)]:Je]);e.replaceNode(t,i,Y9e(i,g))}var z9,SZ,$9e=gt({\"src/services/codefixes/convertToMappedObjectType.ts\"(){\"use strict\";Fr(),Qa(),z9=\"fixConvertToMappedObjectType\",SZ=[_.An_index_signature_parameter_type_cannot_be_a_literal_type_or_generic_type_Consider_using_a_mapped_object_type_instead.code],za({errorCodes:SZ,getCodeActions:function(t){let{sourceFile:r,span:i}=t,o=OEe(r,i.start);if(!o)return;let s=nr.ChangeTracker.with(t,f=>NEe(f,r,o)),l=vr(o.container.name);return[Ma(z9,s,[_.Convert_0_to_mapped_object_type,l],z9,[_.Convert_0_to_mapped_object_type,l])]},fixIds:[z9],getAllCodeActions:e=>ns(e,SZ,(t,r)=>{let i=OEe(r.file,r.start);i&&NEe(t,r.file,i)})})}}),xZ,PEe,Q9e=gt({\"src/services/codefixes/removeAccidentalCallParentheses.ts\"(){\"use strict\";Fr(),Qa(),xZ=\"removeAccidentalCallParentheses\",PEe=[_.This_expression_is_not_callable_because_it_is_a_get_accessor_Did_you_mean_to_use_it_without.code],za({errorCodes:PEe,getCodeActions(e){let t=jn(Vi(e.sourceFile,e.span.start),Pa);if(!t)return;let r=nr.ChangeTracker.with(e,i=>{i.deleteRange(e.sourceFile,{pos:t.expression.end,end:t.end})});return[J_(xZ,r,_.Remove_parentheses)]},fixIds:[xZ]})}});function MEe(e,t,r){let i=zr(Vi(t,r.start),f=>f.kind===133),o=i&&zr(i.parent,b2);if(!o)return;let s=o;if(ud(o.parent)){let f=ZI(o.expression,!1);if(Re(f)){let d=el(o.parent.pos,t);d&&d.kind!==103&&(s=o.parent)}}e.replaceNode(t,s,o.expression)}var J9,AZ,Z9e=gt({\"src/services/codefixes/removeUnnecessaryAwait.ts\"(){\"use strict\";Fr(),Qa(),J9=\"removeUnnecessaryAwait\",AZ=[_.await_has_no_effect_on_the_type_of_this_expression.code],za({errorCodes:AZ,getCodeActions:function(t){let r=nr.ChangeTracker.with(t,i=>MEe(i,t.sourceFile,t.span));if(r.length>0)return[Ma(J9,r,_.Remove_unnecessary_await,J9,_.Remove_all_unnecessary_uses_of_await)]},fixIds:[J9],getAllCodeActions:e=>ns(e,AZ,(t,r)=>MEe(t,r.file,r))})}});function FEe(e,t){return jn(Vi(e,t.start),gl)}function GEe(e,t,r){if(!t)return;let i=L.checkDefined(t.importClause);e.replaceNode(r.sourceFile,t,D.updateImportDeclaration(t,t.modifiers,D.updateImportClause(i,i.isTypeOnly,i.name,void 0),t.moduleSpecifier,t.assertClause)),e.insertNodeAfter(r.sourceFile,t,D.createImportDeclaration(void 0,D.updateImportClause(i,i.isTypeOnly,void 0,i.namedBindings),t.moduleSpecifier,t.assertClause))}var CZ,K9,eGe=gt({\"src/services/codefixes/splitTypeOnlyImport.ts\"(){\"use strict\";Fr(),Qa(),CZ=[_.A_type_only_import_can_specify_a_default_import_or_named_bindings_but_not_both.code],K9=\"splitTypeOnlyImport\",za({errorCodes:CZ,fixIds:[K9],getCodeActions:function(t){let r=nr.ChangeTracker.with(t,i=>GEe(i,FEe(t.sourceFile,t.span),t));if(r.length)return[Ma(K9,r,_.Split_into_two_separate_import_declarations,K9,_.Split_all_invalid_type_only_imports)]},getAllCodeActions:e=>ns(e,CZ,(t,r)=>{GEe(t,FEe(e.sourceFile,r),e)})})}});function BEe(e,t,r){var i;let s=r.getTypeChecker().getSymbolAtLocation(Vi(e,t));if(s===void 0)return;let l=zr((i=s?.valueDeclaration)==null?void 0:i.parent,pu);if(l===void 0)return;let f=Yo(l,85,e);if(f!==void 0)return{symbol:s,token:f}}function UEe(e,t,r){e.replaceNode(t,r,D.createToken(119))}var q9,IZ,tGe=gt({\"src/services/codefixes/convertConstToLet.ts\"(){\"use strict\";Fr(),Qa(),q9=\"fixConvertConstToLet\",IZ=[_.Cannot_assign_to_0_because_it_is_a_constant.code],za({errorCodes:IZ,getCodeActions:function(t){let{sourceFile:r,span:i,program:o}=t,s=BEe(r,i.start,o);if(s===void 0)return;let l=nr.ChangeTracker.with(t,f=>UEe(f,r,s.token));return[D$(q9,l,_.Convert_const_to_let,q9,_.Convert_all_const_to_let)]},getAllCodeActions:e=>{let{program:t}=e,r=new Map;return ax(nr.ChangeTracker.with(e,i=>{ox(e,IZ,o=>{let s=BEe(o.file,o.start,t);if(s&&U_(r,$a(s.symbol)))return UEe(i,o.file,s.token)})}))},fixIds:[q9]})}});function VEe(e,t,r){let i=Vi(e,t);return i.kind===26&&i.parent&&(rs(i.parent)||fu(i.parent))?{node:i}:void 0}function jEe(e,t,{node:r}){let i=D.createToken(27);e.replaceNode(t,r,i)}var X9,HEe,LZ,nGe=gt({\"src/services/codefixes/fixExpectedComma.ts\"(){\"use strict\";Fr(),Qa(),X9=\"fixExpectedComma\",HEe=_._0_expected.code,LZ=[HEe],za({errorCodes:LZ,getCodeActions(e){let{sourceFile:t}=e,r=VEe(t,e.span.start,e.errorCode);if(!r)return;let i=nr.ChangeTracker.with(e,o=>jEe(o,t,r));return[Ma(X9,i,[_.Change_0_to_1,\";\",\",\"],X9,[_.Change_0_to_1,\";\",\",\"])]},fixIds:[X9],getAllCodeActions:e=>ns(e,LZ,(t,r)=>{let i=VEe(r.file,r.start,r.code);i&&jEe(t,e.sourceFile,i)})})}});function WEe(e,t,r,i,o){let s=Vi(t,r.start);if(!Re(s)||!Pa(s.parent)||s.parent.expression!==s||s.parent.arguments.length!==0)return;let l=i.getTypeChecker(),f=l.getSymbolAtLocation(s),d=f?.valueDeclaration;if(!d||!ha(d)||!z0(d.parent.parent)||o?.has(d))return;o?.add(d);let g=rGe(d.parent.parent);if(vt(g)){let m=g[0],v=!wS(m)&&!RS(m)&&RS(D.createUnionTypeNode([m,D.createKeywordTypeNode(114)]).types[0]);v&&e.insertText(t,m.pos,\"(\"),e.insertText(t,m.end,v?\") | void\":\" | void\")}else{let m=l.getResolvedSignature(s.parent),v=m?.parameters[0],S=v&&l.getTypeOfSymbolAtLocation(v,d.parent.parent);Yn(d)?(!S||S.flags&3)&&(e.insertText(t,d.parent.parent.end,\")\"),e.insertText(t,xo(t.text,d.parent.parent.pos),\"/** @type {Promise<void>} */(\")):(!S||S.flags&2)&&e.insertText(t,d.parent.parent.expression.end,\"<void>\")}}function rGe(e){var t;if(Yn(e)){if(ud(e.parent)){let r=(t=x0(e.parent))==null?void 0:t.typeExpression.type;if(r&&p_(r)&&Re(r.typeName)&&vr(r.typeName)===\"Promise\")return r.typeArguments}}else return e.typeArguments}var zEe,kZ,DZ,iGe=gt({\"src/services/codefixes/fixAddVoidToPromise.ts\"(){\"use strict\";Fr(),Qa(),zEe=\"addVoidToPromise\",kZ=\"addVoidToPromise\",DZ=[_.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments.code,_.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise.code],za({errorCodes:DZ,fixIds:[kZ],getCodeActions(e){let t=nr.ChangeTracker.with(e,r=>WEe(r,e.sourceFile,e.span,e.program));if(t.length>0)return[Ma(zEe,t,_.Add_void_to_Promise_resolved_without_a_value,kZ,_.Add_void_to_all_Promises_resolved_without_a_value)]},getAllCodeActions(e){return ns(e,DZ,(t,r)=>WEe(t,r.file,r,e.program,new Set))}})}}),gu={};Mo(gu,{PreserveOptionalFlags:()=>pZ,addNewNodeForMemberSymbol:()=>iEe,codeFixAll:()=>ns,createCodeFixAction:()=>Ma,createCodeFixActionMaybeFixAll:()=>D$,createCodeFixActionWithoutFixAll:()=>J_,createCombinedCodeActions:()=>ax,createFileTextChanges:()=>_ve,createImportAdder:()=>c1,createImportSpecifierResolver:()=>v7e,createJsonPropertyAssignment:()=>P9,createMissingMemberNodes:()=>oZ,createSignatureDeclarationFromCallExpression:()=>sZ,createSignatureDeclarationFromSignature:()=>O9,createStubbedBody:()=>_P,eachDiagnostic:()=>ox,findAncestorMatchingSpan:()=>_Z,findJsonProperty:()=>fZ,generateAccessorFromProperty:()=>uEe,getAccessorConvertiblePropertyAtPosition:()=>_Ee,getAllFixes:()=>nFe,getAllSupers:()=>mZ,getArgumentTypesAndTypeParameters:()=>sEe,getFixes:()=>tFe,getImportCompletionAction:()=>b7e,getImportKind:()=>rQ,getNoopSymbolTrackerWithResolver:()=>cx,getPromoteTypeOnlyCompletionAction:()=>E7e,getSupportedErrorCodes:()=>Z3e,importFixName:()=>lQ,importSymbols:()=>lx,moduleSpecifierToValidIdentifier:()=>cQ,moduleSymbolToValidIdentifier:()=>sQ,parameterShouldGetTypeFromJSDoc:()=>Rve,registerCodeFix:()=>za,setJsonCompilerOptionValue:()=>dZ,setJsonCompilerOptionValues:()=>uZ,tryGetAutoImportableReferenceFromTypeNode:()=>u1,typeToAutoImportableTypeNode:()=>N9});var Qa=gt({\"src/services/_namespaces/ts.codefix.ts\"(){\"use strict\";rFe(),iFe(),aFe(),cFe(),_Fe(),gFe(),yFe(),vFe(),bFe(),xFe(),NFe(),MFe(),KFe(),d7e(),f7e(),p7e(),m7e(),h7e(),y7e(),V7e(),W7e(),K7e(),q7e(),X7e(),Q7e(),t5e(),i5e(),l5e(),v5e(),E5e(),T5e(),x5e(),A5e(),C5e(),I5e(),k5e(),D5e(),w5e(),R5e(),O5e(),P5e(),G5e(),j5e(),Y5e(),Q5e(),Z5e(),n9e(),r9e(),a9e(),o9e(),p9e(),m9e(),h9e(),T9e(),N9e(),G9e(),j9e(),W9e(),z9e(),J9e(),K9e(),X9e(),$9e(),Q9e(),Z9e(),eGe(),tGe(),nGe(),iGe()}});function aGe(e){return!!(e.kind&1)}function oGe(e){return!!(e.kind&2)}function pP(e){return!!(e&&e.kind&4)}function tC(e){return!!(e&&e.kind===32)}function sGe(e){return pP(e)||tC(e)||wZ(e)}function cGe(e){return(pP(e)||tC(e))&&!!e.isFromPackageJson}function lGe(e){return!!(e.kind&8)}function uGe(e){return!!(e.kind&16)}function JEe(e){return!!(e&&e.kind&64)}function KEe(e){return!!(e&&e.kind&128)}function dGe(e){return!!(e&&e.kind&256)}function wZ(e){return!!(e&&e.kind&512)}function qEe(e,t,r,i,o,s,l,f,d){var g,m,v;let S=Ms(),x=l||ES($s(i.getCompilerOptions())),A=!1,w=0,C=0,P=0,F=0,B=d({tryResolve:W,skippedAny:()=>A,resolvedAny:()=>C>0,resolvedBeyondLimit:()=>C>iG}),q=F?` (${(P/F*100).toFixed(1)}% hit rate)`:\"\";return(g=t.log)==null||g.call(t,`${e}: resolved ${C} module specifiers, plus ${w} ambient and ${P} from cache${q}`),(m=t.log)==null||m.call(t,`${e}: response is ${A?\"incomplete\":\"complete\"}`),(v=t.log)==null||v.call(t,`${e}: ${Ms()-S}`),B;function W(Y,R){if(R){let Z=r.getModuleSpecifierForBestExportInfo(Y,o,f);return Z&&w++,Z||\"failed\"}let ie=x||s.allowIncompleteCompletions&&C<iG,Q=!ie&&s.allowIncompleteCompletions&&F<jZ,fe=ie||Q?r.getModuleSpecifierForBestExportInfo(Y,o,f,Q):void 0;return(!ie&&!Q||Q&&!fe)&&(A=!0),C+=fe?.computedWithoutCacheCount||0,P+=Y.length-(fe?.computedWithoutCacheCount||0),Q&&F++,fe||(x?\"failed\":\"skipped\")}}function fGe(e,t,r,i,o,s,l,f,d,g,m=!1){var v;let{previousToken:S}=Q9(o,i);if(l&&!r1(i,o,S)&&!JGe(i,l,S,o))return;if(l===\" \")return s.includeCompletionsForImportStatements&&s.includeCompletionsWithInsertText?{isGlobalCompletion:!0,isMemberCompletion:!1,isNewIdentifierLocation:!0,isIncomplete:!0,entries:[]}:void 0;let x=t.getCompilerOptions(),A=s.allowIncompleteCompletions?(v=e.getIncompleteCompletionsCache)==null?void 0:v.call(e):void 0;if(A&&f===3&&S&&Re(S)){let P=_Ge(A,i,S,t,e,s,d,o);if(P)return P}else A?.clear();let w=aG.getStringLiteralCompletions(i,o,S,x,e,t,r,s,m);if(w)return w;if(S&&gI(S.parent)&&(S.kind===81||S.kind===86||S.kind===79))return wGe(S.parent);let C=iTe(t,r,i,x,o,s,void 0,e,g,d);if(!!C)switch(C.kind){case 0:let P=gGe(i,e,t,x,r,C,s,g,o,m);return P?.isIncomplete&&A?.set(P),P;case 1:return RZ(xb.getJSDocTagNameCompletions());case 2:return RZ(xb.getJSDocTagCompletions());case 3:return RZ(xb.getJSDocParameterNameCompletions(C.tag));case 4:return mGe(C.keywordCompletions,C.isNewIdentifierLocation);default:return L.assertNever(C)}}function mP(e,t){var r,i;let o=YD(e.sortText,t.sortText);return o===0&&(o=YD(e.name,t.name)),o===0&&((r=e.data)==null?void 0:r.moduleSpecifier)&&((i=t.data)==null?void 0:i.moduleSpecifier)&&(o=UR(e.data.moduleSpecifier,t.data.moduleSpecifier)),o===0?-1:o}function XEe(e){return!!e?.moduleSpecifier}function _Ge(e,t,r,i,o,s,l,f){let d=e.get();if(!d)return;let g=Zd(t,f),m=r.text.toLowerCase(),v=$N(t,o,i,s,l),S=qEe(\"continuePreviousIncompleteResponse\",o,gu.createImportSpecifierResolver(t,i,o,s),i,r.getStart(),s,!1,SS(r),x=>{let A=Zi(d.entries,w=>{var C;if(!w.hasAction||!w.source||!w.data||XEe(w.data))return w;if(!gTe(w.name,m))return;let{origin:P}=L.checkDefined(aTe(w.name,w.data,i,o)),F=v.get(t.path,w.data.exportMapKey),B=F&&x.tryResolve(F,!fl(l_(P.moduleSymbol.name)));if(B===\"skipped\")return w;if(!B||B===\"failed\"){(C=o.log)==null||C.call(o,`Unexpected failure resolving auto import for '${w.name}' from '${w.source}'`);return}let q={...P,kind:32,moduleSpecifier:B.moduleSpecifier};return w.data=tTe(q),w.source=PZ(q),w.sourceDisplay=[ef(q.moduleSpecifier)],w});return x.skippedAny()||(d.isIncomplete=void 0),A});return d.entries=S,d.flags=(d.flags||0)|4,d.optionalReplacementSpan=$Ee(g),d}function RZ(e){return{isGlobalCompletion:!1,isMemberCompletion:!1,isNewIdentifierLocation:!1,entries:e}}function pGe(e){return{name:Xa(e),kind:\"keyword\",kindModifiers:\"\",sortText:Pl.GlobalsOrKeywords}}function mGe(e,t){return{isGlobalCompletion:!1,isMemberCompletion:!1,isNewIdentifierLocation:t,entries:e.slice()}}function YEe(e,t,r){return{kind:4,keywordCompletions:oTe(e,t),isNewIdentifierLocation:r}}function hGe(e){switch(e){case 154:return 8;default:L.fail(\"Unknown mapping from SyntaxKind to KeywordCompletionFilters\")}}function $Ee(e){return e?.kind===79?Du(e):void 0}function gGe(e,t,r,i,o,s,l,f,d,g){let{symbols:m,contextToken:v,completionKind:S,isInSnippetScope:x,isNewIdentifierLocation:A,location:w,propertyAccessToConvert:C,keywordFilters:P,symbolToOriginInfoMap:F,recommendedCompletion:B,isJsxInitializer:q,isTypeOnlyLocation:W,isJsxIdentifierExpected:Y,isRightOfOpenTag:R,isRightOfDotOrQuestionDot:ie,importStatementCompletion:Q,insideJsDocTagTypeExpression:fe,symbolToSortTextMap:Z,hasUnresolvedAutoImports:U}=s,re=s.literals,le=r.getTypeChecker();if(OR(e.scriptKind)===1){let ke=vGe(w,e);if(ke)return ke}let _e=jn(v,IL);if(_e&&(Pue(v)||CT(v,_e.expression))){let ke=J7(le,_e.parent.clauses);re=re.filter(Pe=>!ke.hasValue(Pe)),m.forEach((Pe,Ce)=>{if(Pe.valueDeclaration&&q0(Pe.valueDeclaration)){let Ie=le.getConstantValue(Pe.valueDeclaration);Ie!==void 0&&ke.hasValue(Ie)&&(F[Ce]={kind:256})}})}let ge=MU(),X=QEe(e,i);if(X&&!A&&(!m||m.length===0)&&P===0)return;let Ve=MZ(m,ge,void 0,v,w,d,e,t,r,Do(i),o,S,l,i,f,W,C,Y,q,Q,B,F,Z,Y,R,g);if(P!==0)for(let ke of oTe(P,!fe&&Cu(e)))(W&&ak(uT(ke.name))||!Ve.has(ke.name))&&(Ve.add(ke.name),Ny(ge,ke,mP,!0));for(let ke of VGe(v,d))Ve.has(ke.name)||(Ve.add(ke.name),Ny(ge,ke,mP,!0));for(let ke of re){let Pe=EGe(e,l,ke);Ve.add(Pe.name),Ny(ge,Pe,mP,!0)}X||bGe(e,w.pos,Ve,Do(i),ge);let we;if(l.includeCompletionsWithInsertText&&v&&!R&&!ie&&(we=jn(v,gO))){let ke=ZEe(we,e,l,i,t,r,f);ke&&ge.push(ke.entry)}return{flags:s.flags,isGlobalCompletion:x,isIncomplete:l.allowIncompleteCompletions&&U?!0:void 0,isMemberCompletion:yGe(S),isNewIdentifierLocation:A,optionalReplacementSpan:$Ee(w),entries:ge}}function QEe(e,t){return!Cu(e)||!!WR(e,t)}function ZEe(e,t,r,i,o,s,l){let f=e.clauses,d=s.getTypeChecker(),g=d.getTypeAtLocation(e.parent.expression);if(g&&g.isUnion()&&Ji(g.types,m=>m.isLiteral())){let m=J7(d,f),v=Do(i),S=z_(t,r),x=gu.createImportAdder(t,s,r,o),A=[];for(let W of g.types)if(W.flags&1024){L.assert(W.symbol,\"An enum member type should have a symbol\"),L.assert(W.symbol.parent,\"An enum member type should have a parent symbol (the enum symbol)\");let Y=W.symbol.valueDeclaration&&d.getConstantValue(W.symbol.valueDeclaration);if(Y!==void 0){if(m.hasValue(Y))continue;m.addValue(Y)}let R=gu.typeToAutoImportableTypeNode(d,x,W,e,v);if(!R)return;let ie=Y9(R,v,S);if(!ie)return;A.push(ie)}else if(!m.hasValue(W.value))switch(typeof W.value){case\"object\":A.push(W.value.negative?D.createPrefixUnaryExpression(40,D.createBigIntLiteral({negative:!1,base10Value:W.value.base10Value})):D.createBigIntLiteral(W.value));break;case\"number\":A.push(W.value<0?D.createPrefixUnaryExpression(40,D.createNumericLiteral(-W.value)):D.createNumericLiteral(W.value));break;case\"string\":A.push(D.createStringLiteral(W.value,S===0));break}if(A.length===0)return;let w=on(A,W=>D.createCaseClause(W,[])),C=bb(o,l?.options),P=NZ({removeComments:!0,module:i.module,target:i.target,newLine:YN(C)}),F=l?W=>P.printAndFormatNode(4,W,t,l):W=>P.printNode(4,W,t),B=on(w,(W,Y)=>r.includeCompletionsWithSnippetText?`${F(W)}$${Y+1}`:`${F(W)}`).join(C);return{entry:{name:`${P.printNode(4,w[0],t)} ...`,kind:\"\",sortText:Pl.GlobalsOrKeywords,insertText:B,hasAction:x.hasFixes()||void 0,source:\"SwitchCases/\",isSnippet:r.includeCompletionsWithSnippetText?!0:void 0},importAdder:x}}}function Y9(e,t,r){switch(e.kind){case 180:let i=e.typeName;return $9(i,t,r);case 196:let o=Y9(e.objectType,t,r),s=Y9(e.indexType,t,r);return o&&s&&D.createElementAccessExpression(o,s);case 198:let l=e.literal;switch(l.kind){case 10:return D.createStringLiteral(l.text,r===0);case 8:return D.createNumericLiteral(l.text,l.numericLiteralFlags)}return;case 193:let f=Y9(e.type,t,r);return f&&(Re(f)?f:D.createParenthesizedExpression(f));case 183:return $9(e.exprName,t,r);case 202:L.fail(\"We should not get an import type after calling 'codefix.typeToAutoImportableTypeNode'.\")}}function $9(e,t,r){if(Re(e))return e;let i=Gi(e.right.escapedText);return HW(i,t)?D.createPropertyAccessExpression($9(e.left,t,r),i):D.createElementAccessExpression($9(e.left,t,r),D.createStringLiteral(i,r===0))}function yGe(e){switch(e){case 0:case 3:case 2:return!0;default:return!1}}function vGe(e,t){let r=jn(e,i=>{switch(i.kind){case 284:return!0;case 43:case 31:case 79:case 208:return!1;default:return\"quit\"}});if(r){let i=!!Yo(r,31,t),l=r.parent.openingElement.tagName.getText(t)+(i?\"\":\">\"),f=Du(r.tagName),d={name:l,kind:\"class\",kindModifiers:void 0,sortText:Pl.LocationPriority};return{isGlobalCompletion:!1,isMemberCompletion:!0,isNewIdentifierLocation:!1,optionalReplacementSpan:f,entries:[d]}}}function bGe(e,t,r,i,o){p$(e).forEach((s,l)=>{if(s===t)return;let f=Gi(l);!r.has(f)&&r_(f,i)&&(r.add(f),Ny(o,{name:f,kind:\"warning\",kindModifiers:\"\",sortText:Pl.JavascriptIdentifiers,isFromUncheckedFile:!0},mP))})}function OZ(e,t,r){return typeof r==\"object\"?j0(r)+\"n\":Ta(r)?lk(e,t,r):JSON.stringify(r)}function EGe(e,t,r){return{name:OZ(e,t,r),kind:\"string\",kindModifiers:\"\",sortText:Pl.LocationPriority}}function TGe(e,t,r,i,o,s,l,f,d,g,m,v,S,x,A,w,C,P,F,B,q,W,Y,R){let ie,Q=eY(r),fe,Z,U=PZ(v),re,le,_e,ge=d.getTypeChecker(),X=v&&uGe(v),Ve=v&&oGe(v)||m;if(v&&aGe(v))ie=m?`this${X?\"?.\":\"\"}[${nTe(l,F,g)}]`:`this${X?\"?.\":\".\"}${g}`;else if((Ve||X)&&x){ie=Ve?m?`[${nTe(l,F,g)}]`:`[${g}]`:g,(X||x.questionDotToken)&&(ie=`?.${ie}`);let we=Yo(x,24,l)||Yo(x,28,l);if(!we)return;let ke=na(g,x.name.text)?x.name.end:we.end;Q=Wc(we.getStart(l),ke)}if(A&&(ie===void 0&&(ie=g),ie=`{${ie}}`,typeof A!=\"boolean\"&&(Q=Du(A,l))),v&&lGe(v)&&x){ie===void 0&&(ie=g);let we=el(x.pos,l),ke=\"\";we&&N7(we.end,we.parent,l)&&(ke=\";\"),ke+=`(await ${x.expression.getText()})`,ie=m?`${ke}${ie}`:`${ke}${X?\"?.\":\".\"}${ie}`;let Ce=zr(x.parent,b2)?x.parent:x.expression;Q=Wc(Ce.getStart(l),x.end)}if(tC(v)&&(re=[ef(v.moduleSpecifier)],w&&({insertText:ie,replacementSpan:Q}=kGe(g,w,v,C,l,P,F),Z=F.includeCompletionsWithSnippetText?!0:void 0)),v?.kind===64&&(le=!0),F.includeCompletionsWithClassMemberSnippets&&F.includeCompletionsWithInsertText&&B===3&&SGe(e,o,l)){let we;({insertText:ie,isSnippet:Z,importAdder:we,replacementSpan:Q}=eTe(f,d,P,F,g,e,o,s,i,q)),t=Pl.ClassMemberSnippets,we?.hasFixes()&&(le=!0,U=\"ClassMemberSnippet/\")}if(v&&KEe(v)&&({insertText:ie,isSnippet:Z,labelDetails:_e}=v,F.useLabelDetailsInCompletionEntries||(g=g+_e.detail,_e=void 0),U=\"ObjectLiteralMethodSnippet/\",t=Pl.SortBelow(t)),W&&!Y&&F.includeCompletionsWithSnippetText&&F.jsxAttributeCompletionStyle&&F.jsxAttributeCompletionStyle!==\"none\"&&!(Sp(o.parent)&&o.parent.initializer)){let we=F.jsxAttributeCompletionStyle===\"braces\",ke=ge.getTypeOfSymbolAtLocation(e,o);F.jsxAttributeCompletionStyle===\"auto\"&&!(ke.flags&528)&&!(ke.flags&1048576&&wr(ke.types,Pe=>!!(Pe.flags&528)))&&(ke.flags&402653316||ke.flags&1048576&&Ji(ke.types,Pe=>!!(Pe.flags&402686084||Nhe(Pe)))?(ie=`${NT(g)}=${lk(l,F,\"$1\")}`,Z=!0):we=!0),we&&(ie=`${NT(g)}={$1}`,Z=!0)}if(!(ie!==void 0&&!F.includeCompletionsWithInsertText))return(pP(v)||tC(v))&&(fe=tTe(v),le=!w),{name:g,kind:$g.getSymbolKind(ge,e,o),kindModifiers:$g.getSymbolModifiers(ge,e),sortText:t,source:U,hasAction:le?!0:void 0,isRecommended:DGe(e,S,ge)||void 0,insertText:ie,replacementSpan:Q,sourceDisplay:re,labelDetails:_e,isSnippet:Z,isPackageJsonImport:cGe(v)||void 0,isImportStatementCompletion:!!w||void 0,data:fe,...R?{symbol:e}:void 0}}function SGe(e,t,r){if(Yn(t))return!1;let i=106500;return!!(e.flags&i)&&(Yr(t)||t.parent&&t.parent.parent&&_l(t.parent)&&t===t.parent.name&&t.parent.getLastToken(r)===t.parent.name&&Yr(t.parent.parent)||t.parent&&C2(t)&&Yr(t.parent))}function eTe(e,t,r,i,o,s,l,f,d,g){let m=jn(l,Yr);if(!m)return{insertText:o};let v,S,x=o,A=t.getTypeChecker(),w=l.getSourceFile(),C=NZ({removeComments:!0,module:r.module,target:r.target,omitTrailingSemicolon:!1,newLine:YN(bb(e,g?.options))}),P=gu.createImportAdder(w,t,i,e),F;if(i.includeCompletionsWithSnippetText){v=!0;let ie=D.createEmptyStatement();F=D.createBlock([ie],!0),Ez(ie,{kind:0,order:0})}else F=D.createBlock([],!0);let B=0,{modifiers:q,span:W}=xGe(d,w,f),Y=!!(q&256),R=[];return gu.addNewNodeForMemberSymbol(s,m,w,{program:t,host:e},i,P,ie=>{let Q=0;Y&&(Q|=256),_l(ie)&&A.getMemberOverrideModifierStatus(m,ie,s)===1&&(Q|=16384),R.length||(B=ie.modifierFlagsCache|Q|q),ie=D.updateModifiers(ie,B),R.push(ie)},F,gu.PreserveOptionalFlags.Property,Y),R.length&&(S=W,g?x=C.printAndFormatSnippetList(131073,D.createNodeArray(R),w,g):x=C.printSnippetList(131073,D.createNodeArray(R),w)),{insertText:x,isSnippet:v,importAdder:P,replacementSpan:S}}function xGe(e,t,r){if(!e||Gs(t,r).line>Gs(t,e.getEnd()).line)return{modifiers:0};let i=0,o,s;return(s=AGe(e))&&(i|=yS(s),o=Du(e)),Na(e.parent)&&(i|=im(e.parent.modifiers)&126975,o=Du(e.parent)),{modifiers:i,span:o}}function AGe(e){if(Ha(e))return e.kind;if(Re(e)){let t=nb(e);if(t&&Rg(t))return t}}function CGe(e,t,r,i,o,s,l,f){let d=l.includeCompletionsWithSnippetText||void 0,g=t,m=r.getSourceFile(),v=IGe(e,r,m,i,o,l);if(!v)return;let S=NZ({removeComments:!0,module:s.module,target:s.target,omitTrailingSemicolon:!1,newLine:YN(bb(o,f?.options))});f?g=S.printAndFormatSnippetList(80,D.createNodeArray([v],!0),m,f):g=S.printSnippetList(80,D.createNodeArray([v],!0),m);let x=nE({removeComments:!0,module:s.module,target:s.target,omitTrailingSemicolon:!0}),A=D.createMethodSignature(void 0,\"\",v.questionToken,v.typeParameters,v.parameters,v.type),w={detail:x.printNode(4,A,m)};return{isSnippet:d,insertText:g,labelDetails:w}}function IGe(e,t,r,i,o,s){let l=e.getDeclarations();if(!(l&&l.length))return;let f=i.getTypeChecker(),d=l[0],g=cc(sa(d),!1),m=f.getWidenedType(f.getTypeOfSymbolAtLocation(e,t)),v=z_(r,s),S=33554432|(v===0?268435456:0);switch(d.kind){case 168:case 169:case 170:case 171:{let x=m.flags&1048576&&m.types.length<10?f.getUnionType(m.types,2):m;if(x.flags&1048576){let F=Pr(x.types,B=>f.getSignaturesOfType(B,0).length>0);if(F.length===1)x=F[0];else return}if(f.getSignaturesOfType(x,0).length!==1)return;let w=f.typeToTypeNode(x,t,S,gu.getNoopSymbolTrackerWithResolver({program:i,host:o}));if(!w||!Jm(w))return;let C;if(s.includeCompletionsWithSnippetText){let F=D.createEmptyStatement();C=D.createBlock([F],!0),Ez(F,{kind:0,order:0})}else C=D.createBlock([],!0);let P=w.parameters.map(F=>D.createParameterDeclaration(void 0,F.dotDotDotToken,F.name,void 0,void 0,F.initializer));return D.createMethodDeclaration(void 0,void 0,g,void 0,void 0,P,void 0,C)}default:return}}function NZ(e){let t,r=nr.createWriter(db(e)),i=nE(e,r),o={...r,write:S=>s(S,()=>r.write(S)),nonEscapingWrite:r.write,writeLiteral:S=>s(S,()=>r.writeLiteral(S)),writeStringLiteral:S=>s(S,()=>r.writeStringLiteral(S)),writeSymbol:(S,x)=>s(S,()=>r.writeSymbol(S,x)),writeParameter:S=>s(S,()=>r.writeParameter(S)),writeComment:S=>s(S,()=>r.writeComment(S)),writeProperty:S=>s(S,()=>r.writeProperty(S))};return{printSnippetList:l,printAndFormatSnippetList:d,printNode:g,printAndFormatNode:v};function s(S,x){let A=NT(S);if(A!==S){let w=r.getTextPos();x();let C=r.getTextPos();t=Sn(t||(t=[]),{newText:A,span:{start:w,length:C-w}})}else x()}function l(S,x,A){let w=f(S,x,A);return t?nr.applyChanges(w,t):w}function f(S,x,A){return t=void 0,o.clear(),i.writeList(S,x,A,o),o.getText()}function d(S,x,A,w){let C={text:f(S,x,A),getLineAndCharacterOfPosition(q){return Gs(this,q)}},P=z7(w,A),F=Uo(x,q=>{let W=nr.assignPositionsToNode(q);return tl.formatNodeGivenIndentation(W,C,A.languageVariant,0,0,{...w,options:P})}),B=t?Ag(Qi(F,t),(q,W)=>f8(q.span,W.span)):F;return nr.applyChanges(C.text,B)}function g(S,x,A){let w=m(S,x,A);return t?nr.applyChanges(w,t):w}function m(S,x,A){return t=void 0,o.clear(),i.writeNode(S,x,A,o),o.getText()}function v(S,x,A,w){let C={text:m(S,x,A),getLineAndCharacterOfPosition(W){return Gs(this,W)}},P=z7(w,A),F=nr.assignPositionsToNode(x),B=tl.formatNodeGivenIndentation(F,C,A.languageVariant,0,0,{...w,options:P}),q=t?Ag(Qi(B,t),(W,Y)=>f8(W.span,Y.span)):B;return nr.applyChanges(C.text,q)}}function tTe(e){let t=e.fileName?void 0:l_(e.moduleSymbol.name),r=e.isFromPackageJson?!0:void 0;return tC(e)?{exportName:e.exportName,exportMapKey:e.exportMapKey,moduleSpecifier:e.moduleSpecifier,ambientModuleName:t,fileName:e.fileName,isPackageJsonImport:r}:{exportName:e.exportName,exportMapKey:e.exportMapKey,fileName:e.fileName,ambientModuleName:e.fileName?void 0:l_(e.moduleSymbol.name),isPackageJsonImport:e.isFromPackageJson?!0:void 0}}function LGe(e,t,r){let i=e.exportName===\"default\",o=!!e.isPackageJsonImport;return XEe(e)?{kind:32,exportName:e.exportName,exportMapKey:e.exportMapKey,moduleSpecifier:e.moduleSpecifier,symbolName:t,fileName:e.fileName,moduleSymbol:r,isDefaultExport:i,isFromPackageJson:o}:{kind:4,exportName:e.exportName,exportMapKey:e.exportMapKey,symbolName:t,fileName:e.fileName,moduleSymbol:r,isDefaultExport:i,isFromPackageJson:o}}function kGe(e,t,r,i,o,s,l){let f=t.replacementSpan,d=lk(o,l,NT(r.moduleSpecifier)),g=r.isDefaultExport?1:r.exportName===\"export=\"?2:0,m=l.includeCompletionsWithSnippetText?\"$1\":\"\",v=gu.getImportKind(o,g,s,!0),S=t.couldBeTypeOnlyImportSpecifier,x=t.isTopLevelTypeOnly?` ${Xa(154)} `:\" \",A=S?`${Xa(154)} `:\"\",w=i?\";\":\"\";switch(v){case 3:return{replacementSpan:f,insertText:`import${x}${NT(e)}${m} = require(${d})${w}`};case 1:return{replacementSpan:f,insertText:`import${x}${NT(e)}${m} from ${d}${w}`};case 2:return{replacementSpan:f,insertText:`import${x}* as ${NT(e)} from ${d}${w}`};case 0:return{replacementSpan:f,insertText:`import${x}{ ${A}${NT(e)}${m} } from ${d}${w}`}}}function nTe(e,t,r){return/^\\d+$/.test(r)?r:lk(e,t,r)}function DGe(e,t,r){return e===t||!!(e.flags&1048576)&&r.getExportSymbolOfSymbol(e)===t}function PZ(e){if(pP(e))return l_(e.moduleSymbol.name);if(tC(e))return e.moduleSpecifier;if(e?.kind===1)return\"ThisProperty/\";if(e?.kind===64)return\"TypeOnlyAlias/\"}function MZ(e,t,r,i,o,s,l,f,d,g,m,v,S,x,A,w,C,P,F,B,q,W,Y,R,ie,Q=!1){var fe;let Z=Ms(),U=$Ge(o),re=P7(l),le=d.getTypeChecker(),_e=new Map;for(let X=0;X<e.length;X++){let Ve=e[X],we=W?.[X],ke=Z9(Ve,g,we,v,!!P);if(!ke||_e.get(ke.name)&&(!we||!KEe(we))||v===1&&Y&&!ge(Ve,Y))continue;let{name:Pe,needsConvertPropertyAccess:Ce}=ke,Ie=(fe=Y?.[$a(Ve)])!=null?fe:Pl.LocationPriority,Be=ZGe(Ve,le)?Pl.Deprecated(Ie):Ie,Ne=TGe(Ve,Be,r,i,o,s,l,f,d,Pe,Ce,we,q,C,F,B,re,x,S,v,A,R,ie,Q);if(!Ne)continue;let Le=(!we||JEe(we))&&!(Ve.parent===void 0&&!vt(Ve.declarations,Ye=>Ye.getSourceFile()===o.getSourceFile()));_e.set(Pe,Le),Ny(t,Ne,mP,!0)}return m(\"getCompletionsAtPosition: getCompletionEntriesFromSymbols: \"+(Ms()-Z)),{has:X=>_e.has(X),add:X=>_e.set(X,!0)};function ge(X,Ve){let we=X.flags;if(!Li(o)){if(pc(o.parent))return!0;if(U&&X.valueDeclaration===U)return!1;let ke=wd(X,le);if(!!l.externalModuleIndicator&&!x.allowUmdGlobalAccess&&Ve[$a(X)]===Pl.GlobalsOrKeywords&&(Ve[$a(ke)]===Pl.AutoImportSuggestions||Ve[$a(ke)]===Pl.LocationPriority))return!1;if(we|=YI(ke),i7(o))return!!(we&1920);if(w)return VZ(X,le)}return!!(we&111551)}}function wGe(e){let t=RGe(e);if(t.length)return{isGlobalCompletion:!1,isMemberCompletion:!1,isNewIdentifierLocation:!1,entries:t}}function RGe(e){let t=[],r=new Map,i=e;for(;i&&!Ia(i);){if(J0(i)){let o=i.label.text;r.has(o)||(r.set(o,!0),t.push({name:o,kindModifiers:\"\",kind:\"label\",sortText:Pl.LocationPriority}))}i=i.parent}return t}function rTe(e,t,r,i,o,s,l){if(o.source===\"SwitchCases/\")return{type:\"cases\"};if(o.data){let B=aTe(o.name,o.data,e,s);if(B){let{contextToken:q,previousToken:W}=Q9(i,r);return{type:\"symbol\",symbol:B.symbol,location:Zd(r,i),previousToken:W,contextToken:q,isJsxInitializer:!1,isTypeOnlyLocation:!1,origin:B.origin}}}let f=e.getCompilerOptions(),d=iTe(e,t,r,f,i,{includeCompletionsForModuleExports:!0,includeCompletionsWithInsertText:!0},o,s,void 0);if(!d)return{type:\"none\"};if(d.kind!==0)return{type:\"request\",request:d};let{symbols:g,literals:m,location:v,completionKind:S,symbolToOriginInfoMap:x,contextToken:A,previousToken:w,isJsxInitializer:C,isTypeOnlyLocation:P}=d,F=wr(m,B=>OZ(r,l,B)===o.name);return F!==void 0?{type:\"literal\",literal:F}:ks(g,(B,q)=>{let W=x[q],Y=Z9(B,Do(f),W,S,d.isJsxIdentifierExpected);return Y&&Y.name===o.name&&(o.source===\"ClassMemberSnippet/\"&&B.flags&106500||o.source===\"ObjectLiteralMethodSnippet/\"&&B.flags&8196||PZ(W)===o.source)?{type:\"symbol\",symbol:B,location:v,origin:W,contextToken:A,previousToken:w,isJsxInitializer:C,isTypeOnlyLocation:P}:void 0})||{type:\"none\"}}function OGe(e,t,r,i,o,s,l,f,d){let g=e.getTypeChecker(),m=e.getCompilerOptions(),{name:v,source:S,data:x}=o,{previousToken:A,contextToken:w}=Q9(i,r);if(r1(r,i,A))return aG.getStringLiteralCompletionDetails(v,r,i,A,g,m,s,d,f);let C=rTe(e,t,r,i,o,s,f);switch(C.type){case\"request\":{let{request:P}=C;switch(P.kind){case 1:return xb.getJSDocTagNameCompletionDetails(v);case 2:return xb.getJSDocTagCompletionDetails(v);case 3:return xb.getJSDocParameterNameCompletionDetails(v);case 4:return vt(P.keywordCompletions,F=>F.name===v)?FZ(v,\"keyword\",5):void 0;default:return L.assertNever(P)}}case\"symbol\":{let{symbol:P,location:F,contextToken:B,origin:q,previousToken:W}=C,{codeActions:Y,sourceDisplay:R}=NGe(v,F,B,q,P,e,s,m,r,i,W,l,f,x,S,d),ie=wZ(q)?q.symbolName:P.name;return GZ(P,ie,g,r,F,d,Y,R)}case\"literal\":{let{literal:P}=C;return FZ(OZ(r,f,P),\"string\",typeof P==\"string\"?8:7)}case\"cases\":{let{entry:P,importAdder:F}=ZEe(w.parent,r,f,e.getCompilerOptions(),s,e,void 0);if(F.hasFixes()){let B=nr.ChangeTracker.with({host:s,formatContext:l,preferences:f},F.writeFixes);return{name:P.name,kind:\"\",kindModifiers:\"\",displayParts:[],sourceDisplay:void 0,codeActions:[{changes:B,description:ex([_.Includes_imports_of_types_referenced_by_0,v])}]}}return{name:P.name,kind:\"\",kindModifiers:\"\",displayParts:[],sourceDisplay:void 0}}case\"none\":return JZ().some(P=>P.name===v)?FZ(v,\"keyword\",5):void 0;default:L.assertNever(C)}}function FZ(e,t,r){return hP(e,\"\",t,[Qu(e,r)])}function GZ(e,t,r,i,o,s,l,f){let{displayParts:d,documentation:g,symbolKind:m,tags:v}=r.runWithCancellationToken(s,S=>$g.getSymbolDisplayPartsDocumentationAndSymbolKind(S,e,i,o,o,7));return hP(t,$g.getSymbolModifiers(r,e),m,d,g,v,l,f)}function hP(e,t,r,i,o,s,l,f){return{name:e,kindModifiers:t,kind:r,displayParts:i,documentation:o,tags:s,codeActions:l,source:f,sourceDisplay:f}}function NGe(e,t,r,i,o,s,l,f,d,g,m,v,S,x,A,w){if(x?.moduleSpecifier&&m&&_Te(r||m).replacementSpan)return{codeActions:void 0,sourceDisplay:[ef(x.moduleSpecifier)]};if(A===\"ClassMemberSnippet/\"){let{importAdder:Y}=eTe(l,s,f,S,e,o,t,g,r,v);if(Y){let R=nr.ChangeTracker.with({host:l,formatContext:v,preferences:S},Y.writeFixes);return{sourceDisplay:void 0,codeActions:[{changes:R,description:ex([_.Includes_imports_of_types_referenced_by_0,e])}]}}}if(JEe(i)){let Y=gu.getPromoteTypeOnlyCompletionAction(d,i.declaration.name,s,l,v,S);return L.assertIsDefined(Y,\"Expected to have a code action for promoting type-only alias\"),{codeActions:[Y],sourceDisplay:void 0}}if(!i||!(pP(i)||tC(i)))return{codeActions:void 0,sourceDisplay:void 0};let C=i.isFromPackageJson?l.getPackageJsonAutoImportProvider().getTypeChecker():s.getTypeChecker(),{moduleSymbol:P}=i,F=C.getMergedSymbol(wd(o.exportSymbol||o,C)),B=r?.kind===29&&Au(r.parent),{moduleSpecifier:q,codeAction:W}=gu.getImportCompletionAction(F,P,x?.exportMapKey,d,e,B,l,s,v,m&&Re(m)?m.getStart(d):g,S,w);return L.assert(!x?.moduleSpecifier||q===x.moduleSpecifier),{sourceDisplay:[ef(q)],codeActions:[W]}}function PGe(e,t,r,i,o,s,l){let f=rTe(e,t,r,i,o,s,l);return f.type===\"symbol\"?f.symbol:void 0}function MGe(e,t,r){return ks(t&&(t.isUnion()?t.types:[t]),i=>{let o=i&&i.symbol;return o&&o.flags&424&&!cle(o)?BZ(o,e,r):void 0})}function FGe(e,t,r,i){let{parent:o}=e;switch(e.kind){case 79:return w7(e,i);case 63:switch(o.kind){case 257:return i.getContextualType(o.initializer);case 223:return i.getTypeAtLocation(o.left);case 288:return i.getContextualTypeForJsxAttribute(o);default:return}case 103:return i.getContextualType(o);case 82:let s=zr(o,IL);return s?TY(s,i):void 0;case 18:return CL(o)&&!Hg(o.parent)&&!US(o.parent)?i.getContextualTypeForJsxAttribute(o.parent):void 0;default:let l=UP.getArgumentInfoForCompletions(e,t,r);return l?i.getContextualTypeForArgumentAtIndex(l.invocation,l.argumentIndex+(e.kind===27?1:0)):R7(e.kind)&&ar(o)&&R7(o.operatorToken.kind)?i.getTypeAtLocation(o.left):i.getContextualType(e)}}function BZ(e,t,r){let i=r.getAccessibleSymbolChain(e,t,67108863,!1);return i?Vo(i):e.parent&&(GGe(e.parent)?e:BZ(e.parent,t,r))}function GGe(e){var t;return!!((t=e.declarations)!=null&&t.some(r=>r.kind===308))}function iTe(e,t,r,i,o,s,l,f,d,g){let m=e.getTypeChecker(),v=QEe(r,i),S=Ms(),x=Vi(r,o);t(\"getCompletionData: Get current token: \"+(Ms()-S)),S=Ms();let A=Kg(r,o,x);t(\"getCompletionData: Is inside comment: \"+(Ms()-S));let w=!1,C=!1;if(A){if(Rhe(r,o)){if(r.text.charCodeAt(o-1)===64)return{kind:1};{let Te=Hf(o,r);if(!/[^\\*|\\s(/)]/.test(r.text.substring(Te,o)))return{kind:2}}}let z=jGe(x,o);if(z){if(z.tagName.pos<=o&&o<=z.tagName.end)return{kind:1};let Te=zt(z);if(Te&&(x=Vi(r,o),(!x||!Rh(x)&&(x.parent.kind!==351||x.parent.name!==x))&&(w=pe(Te))),!w&&xp(z)&&(rc(z.name)||z.name.pos<=o&&o<=z.name.end))return{kind:3,tag:z}}if(!w){t(\"Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.\");return}}S=Ms();let P=!w&&Cu(r),F=Q9(o,r),B=F.previousToken,q=F.contextToken;t(\"getCompletionData: Get previous token: \"+(Ms()-S));let W=x,Y,R=!1,ie=!1,Q=!1,fe=!1,Z=!1,U=!1,re,le=Zd(r,o),_e=0,ge=!1,X=0;if(q){let z=_Te(q);if(z.keywordCompletion){if(z.isKeywordOnlyCompletion)return{kind:4,keywordCompletions:[pGe(z.keywordCompletion)],isNewIdentifierLocation:z.isNewIdentifierLocation};_e=hGe(z.keywordCompletion)}if(z.replacementSpan&&s.includeCompletionsForImportStatements&&s.includeCompletionsWithInsertText&&(X|=2,re=z,ge=z.isNewIdentifierLocation),!z.replacementSpan&&Ht(q))return t(\"Returning an empty list because completion was requested in an invalid position.\"),_e?YEe(_e,P,dr()):void 0;let Te=q.parent;if(q.kind===24||q.kind===28)switch(R=q.kind===24,ie=q.kind===28,Te.kind){case 208:Y=Te,W=Y.expression;let j=QI(Y);if(rc(j)||(Pa(W)||Ia(W))&&W.end===q.pos&&W.getChildCount(r)&&To(W.getChildren(r)).kind!==21)return;break;case 163:W=Te.left;break;case 264:W=Te.name;break;case 202:W=Te;break;case 233:W=Te.getFirstToken(r),L.assert(W.kind===100||W.kind===103);break;default:return}else if(!re){if(Te&&Te.kind===208&&(q=Te,Te=Te.parent),x.parent===le)switch(x.kind){case 31:(x.parent.kind===281||x.parent.kind===283)&&(le=x);break;case 43:x.parent.kind===282&&(le=x);break}switch(Te.kind){case 284:q.kind===43&&(fe=!0,le=q);break;case 223:if(!fTe(Te))break;case 282:case 281:case 283:U=!0,q.kind===29&&(Q=!0,le=q);break;case 291:case 290:(B.kind===19||B.kind===79&&B.parent.kind===288)&&(U=!0);break;case 288:if(Te.initializer===B&&B.end<o){U=!0;break}switch(B.kind){case 63:Z=!0;break;case 79:U=!0,Te!==B.parent&&!Te.initializer&&Yo(Te,63,r)&&(Z=B)}break}}}let Ve=Ms(),we=5,ke=!1,Pe=!1,Ce=[],Ie,Be=[],Ne=[],Le=new Map,Ye=nn(),_t=Jp(z=>QS(z?f.getPackageJsonAutoImportProvider():e,f));if(R||ie)Qt();else if(Q)Ce=m.getJsxIntrinsicTagNamesAt(le),L.assertEachIsDefined(Ce,\"getJsxIntrinsicTagNames() should all be defined\"),Gt(),we=1,_e=0;else if(fe){let z=q.parent.parent.openingElement.tagName,Te=m.getSymbolAtLocation(z);Te&&(Ce=[Te]),we=1,_e=0}else if(!Gt())return _e?YEe(_e,P,ge):void 0;t(\"getCompletionData: Semantic work: \"+(Ms()-Ve));let ct=B&&FGe(B,o,r,m),Rt=Zi(ct&&(ct.isUnion()?ct.types:[ct]),z=>z.isLiteral()&&!(z.flags&1024)?z.value:void 0),We=B&&ct&&MGe(B,ct,m);return{kind:0,symbols:Ce,completionKind:we,isInSnippetScope:C,propertyAccessToConvert:Y,isNewIdentifierLocation:ge,location:le,keywordFilters:_e,literals:Rt,symbolToOriginInfoMap:Be,recommendedCompletion:We,previousToken:B,contextToken:q,isJsxInitializer:Z,insideJsDocTagTypeExpression:w,symbolToSortTextMap:Ne,isTypeOnlyLocation:Ye,isJsxIdentifierExpected:U,isRightOfOpenTag:Q,isRightOfDotOrQuestionDot:R||ie,importStatementCompletion:re,hasUnresolvedAutoImports:Pe,flags:X};function qe(z){switch(z.kind){case 344:case 351:case 345:case 347:case 349:case 352:case 353:return!0;case 348:return!!z.constraint;default:return!1}}function zt(z){if(qe(z)){let Te=j_(z)?z.constraint:z.typeExpression;return Te&&Te.kind===312?Te:void 0}if(A2(z)||qz(z))return z.class}function Qt(){we=2;let z=ib(W),Te=w||z&&!W.isTypeOf||Gm(W.parent)||FN(q,r,m),j=i7(W);if(Cd(W)||z||br(W)){let yt=Tc(W.parent);yt&&(ge=!0);let lt=m.getSymbolAtLocation(W);if(lt&&(lt=wd(lt,m),lt.flags&1920)){let Qe=m.getExportsOfModule(lt);L.assertEachIsDefined(Qe,\"getExportsOfModule() should all be defined\");let Vt=ei=>m.isValidPropertyAccess(z?W:W.parent,ei.name),Hn=ei=>VZ(ei,m),jr=yt?ei=>{var Kr;return!!(ei.flags&1920)&&!((Kr=ei.declarations)!=null&&Kr.every(Si=>Si.parent===W.parent))}:j?ei=>Hn(ei)||Vt(ei):Te?Hn:Vt;for(let ei of Qe)jr(ei)&&Ce.push(ei);if(!Te&&lt.declarations&&lt.declarations.some(ei=>ei.kind!==308&&ei.kind!==264&&ei.kind!==263)){let ei=m.getTypeOfSymbolAtLocation(lt,W).getNonOptionalType(),Kr=!1;if(ei.isNullableType()){let Si=R&&!ie&&s.includeAutomaticOptionalChainCompletions!==!1;(Si||ie)&&(ei=ei.getNonNullableType(),Si&&(Kr=!0))}tn(ei,!!(W.flags&32768),Kr)}return}}if(!Te){m.tryGetThisTypeAt(W,!1);let yt=m.getTypeAtLocation(W).getNonOptionalType(),lt=!1;if(yt.isNullableType()){let Qe=R&&!ie&&s.includeAutomaticOptionalChainCompletions!==!1;(Qe||ie)&&(yt=yt.getNonNullableType(),Qe&&(lt=!0))}tn(yt,!!(W.flags&32768),lt)}}function tn(z,Te,j){ge=!!z.getStringIndexType(),ie&&vt(z.getCallSignatures())&&(ge=!0);let yt=W.kind===202?W:W.parent;if(v)for(let lt of z.getApparentProperties())m.isValidPropertyAccessForCompletions(yt,z,lt)&&kn(lt,!1,j);else Ce.push(...Pr(nG(z,m),lt=>m.isValidPropertyAccessForCompletions(yt,z,lt)));if(Te&&s.includeCompletionsWithInsertText){let lt=m.getPromisedTypeOfPromise(z);if(lt)for(let Qe of lt.getApparentProperties())m.isValidPropertyAccessForCompletions(yt,lt,Qe)&&kn(Qe,!0,j)}}function kn(z,Te,j){var yt;let lt=ks(z.declarations,jr=>zr(sa(jr),ts));if(lt){let jr=_n(lt.expression),ei=jr&&m.getSymbolAtLocation(jr),Kr=ei&&BZ(ei,q,m);if(Kr&&U_(Le,$a(Kr))){let Si=Ce.length;Ce.push(Kr);let Ja=Kr.parent;if(!Ja||!UN(Ja)||m.tryGetMemberInModuleExportsAndProperties(Kr.name,Ja)!==Kr)Be[Si]={kind:Hn(2)};else{let Za=fl(l_(Ja.name))?(yt=m6(Ja))==null?void 0:yt.fileName:void 0,{moduleSpecifier:Fa}=(Ie||(Ie=gu.createImportSpecifierResolver(r,e,f,s))).getModuleSpecifierForBestExportInfo([{exportKind:0,moduleFileName:Za,isFromPackageJson:!1,moduleSymbol:Ja,symbol:Kr,targetFlags:wd(Kr,m).flags}],o,SS(le))||{};if(Fa){let Hi={kind:Hn(6),moduleSymbol:Ja,isDefaultExport:!1,symbolName:Kr.name,exportName:Kr.name,fileName:Za,moduleSpecifier:Fa};Be[Si]=Hi}}}else s.includeCompletionsWithInsertText&&(Vt(z),Qe(z),Ce.push(z))}else Vt(z),Qe(z),Ce.push(z);function Qe(jr){qGe(jr)&&(Ne[$a(jr)]=Pl.LocalDeclarationPriority)}function Vt(jr){s.includeCompletionsWithInsertText&&(Te&&U_(Le,$a(jr))?Be[Ce.length]={kind:Hn(8)}:j&&(Be[Ce.length]={kind:16}))}function Hn(jr){return j?jr|16:jr}}function _n(z){return Re(z)?z:br(z)?_n(z.expression):void 0}function Gt(){return(Se()||at()||Ni()||Tt()||ve()||$n()||nt()||ui()||(Pi(),1))===1}function $n(){return $(q)?(we=5,ge=!0,_e=4,1):0}function ui(){let z=G(q),Te=z&&m.getContextualType(z.attributes);if(!Te)return 0;let j=z&&m.getContextualType(z.attributes,4);return Ce=Qi(Ce,oe(tG(Te,j,z.attributes,m),z.attributes.properties)),ae(),we=3,ge=!1,1}function Ni(){return re?(ge=!0,An(),1):0}function Pi(){_e=ue(q)?5:1,we=1,ge=dr(),B!==q&&L.assert(!!B,\"Expected 'contextToken' to be defined when different from 'previousToken'.\");let z=B!==q?B.getStart():o,Te=gn(q,z,r)||r;C=pt(Te);let j=(Ye?0:111551)|788968|1920|2097152,yt=B&&!SS(B);Ce=Qi(Ce,m.getSymbolsInScope(Te,j)),L.assertEachIsDefined(Ce,\"getSymbolsInScope() should all be defined\");for(let lt=0;lt<Ce.length;lt++){let Qe=Ce[lt];if(!m.isArgumentsSymbol(Qe)&&!vt(Qe.declarations,Vt=>Vt.getSourceFile()===r)&&(Ne[$a(Qe)]=Pl.GlobalsOrKeywords),yt&&!(Qe.flags&111551)){let Vt=Qe.declarations&&wr(Qe.declarations,Mj);if(Vt){let Hn={kind:64,declaration:Vt};Be[lt]=Hn}}}if(s.includeCompletionsWithInsertText&&Te.kind!==308){let lt=m.tryGetThisTypeAt(Te,!1,Yr(Te.parent)?Te:void 0);if(lt&&!KGe(lt,r,m))for(let Qe of nG(lt,m))Be[Ce.length]={kind:1},Ce.push(Qe),Ne[$a(Qe)]=Pl.SuggestedClassMembers}An(),Ye&&(_e=q&&mT(q.parent)?6:7)}function gr(){return re?!0:ke||!s.includeCompletionsForModuleExports?!1:r.externalModuleIndicator||r.commonJsModuleIndicator||aY(e.getCompilerOptions())?!0:Uhe(e)}function pt(z){switch(z.kind){case 308:case 225:case 291:case 238:return!0;default:return ca(z)}}function nn(){return w||!!re&&I0(le.parent)||!Dt(q)&&(FN(q,r,m)||Gm(le)||pn(q))}function Dt(z){return z&&(z.kind===112&&(z.parent.kind===183||v2(z.parent))||z.kind===129&&z.parent.kind===179)}function pn(z){if(z){let Te=z.parent.kind;switch(z.kind){case 58:return Te===169||Te===168||Te===166||Te===257||rS(Te);case 63:return Te===262;case 128:return Te===231;case 29:return Te===180||Te===213;case 94:return Te===165;case 150:return Te===235}}return!1}function An(){var z,Te;if(!gr()||(L.assert(!l?.data,\"Should not run 'collectAutoImports' when faster path is available via `data`\"),l&&!l.source))return;X|=1;let yt=B===q&&re?\"\":B&&Re(B)?B.text.toLowerCase():\"\",lt=(z=f.getModuleSpecifierCache)==null?void 0:z.call(f),Qe=$N(r,f,e,s,g),Vt=(Te=f.getPackageJsonAutoImportProvider)==null?void 0:Te.call(f),Hn=l?void 0:dk(r,s,f);qEe(\"collectAutoImports\",f,Ie||(Ie=gu.createImportSpecifierResolver(r,e,f,s)),e,o,s,!!re,SS(le),ei=>{Qe.search(r.path,Q,(Kr,Si)=>{if(!r_(Kr,Do(f.getCompilationSettings()))||!l&&_S(Kr)||!Ye&&!re&&!(Si&111551)||Ye&&!(Si&790504))return!1;let Ja=Kr.charCodeAt(0);return Q&&(Ja<65||Ja>90)?!1:l?!0:gTe(Kr,yt)},(Kr,Si,Ja,Za)=>{if(l&&!vt(Kr,Qr=>l.source===l_(Qr.moduleSymbol.name))||(Kr=Pr(Kr,jr),!Kr.length))return;let Fa=ei.tryResolve(Kr,Ja)||{};if(Fa===\"failed\")return;let Hi=Kr[0],xi;Fa!==\"skipped\"&&({exportInfo:Hi=Kr[0],moduleSpecifier:xi}=Fa);let Nr=Hi.exportKind===1,Fo=Nr&&ZA(Hi.symbol)||Hi.symbol;Kn(Fo,{kind:xi?32:4,moduleSpecifier:xi,symbolName:Si,exportMapKey:Za,exportName:Hi.exportKind===2?\"export=\":Hi.symbol.name,fileName:Hi.moduleFileName,isDefaultExport:Nr,moduleSymbol:Hi.moduleSymbol,isFromPackageJson:Hi.isFromPackageJson})}),Pe=ei.skippedAny(),X|=ei.resolvedAny()?8:0,X|=ei.resolvedBeyondLimit()?16:0});function jr(ei){let Kr=zr(ei.moduleSymbol.valueDeclaration,Li);if(!Kr){let Si=l_(ei.moduleSymbol.name);return ZT.nodeCoreModules.has(Si)&&na(Si,\"node:\")!==W7(r,e)?!1:Hn?Hn.allowsImportingAmbientModule(ei.moduleSymbol,_t(ei.isFromPackageJson)):!0}return PY(ei.isFromPackageJson?Vt:e,r,Kr,s,Hn,_t(ei.isFromPackageJson),lt)}}function Kn(z,Te){let j=$a(z);Ne[j]!==Pl.GlobalsOrKeywords&&(Be[Ce.length]=Te,Ne[j]=re?Pl.LocationPriority:Pl.AutoImportSuggestions,Ce.push(z))}function hi(z,Te){Yn(le)||z.forEach(j=>{if(!ri(j))return;let yt=Z9(j,Do(i),void 0,0,!1);if(!yt)return;let{name:lt}=yt,Qe=CGe(j,lt,Te,e,f,i,s,d);if(!Qe)return;let Vt={kind:128,...Qe};X|=32,Be[Ce.length]=Vt,Ce.push(j)})}function ri(z){return!!(z.flags&8196)}function gn(z,Te,j){let yt=z;for(;yt&&!WX(yt,Te,j);)yt=yt.parent;return yt}function Ht(z){let Te=Ms(),j=Cr(z)||Oe(z)||kt(z)||En(z)||a3(z);return t(\"getCompletionsAtPosition: isCompletionListBlocker: \"+(Ms()-Te)),j}function En(z){if(z.kind===11)return!0;if(z.kind===31&&z.parent){if(le===z.parent&&(le.kind===283||le.kind===282))return!1;if(z.parent.kind===283)return le.parent.kind!==283;if(z.parent.kind===284||z.parent.kind===282)return!!z.parent.parent&&z.parent.parent.kind===281}return!1}function dr(){if(q){let z=q.parent.kind,Te=eG(q);switch(Te){case 27:return z===210||z===173||z===211||z===206||z===223||z===181||z===207;case 20:return z===210||z===173||z===211||z===214||z===193;case 22:return z===206||z===178||z===164;case 142:case 143:case 100:return!0;case 24:return z===264;case 18:return z===260||z===207;case 63:return z===257||z===223;case 15:return z===225;case 16:return z===236;case 132:return z===171||z===300;case 41:return z===171}if(gP(Te))return!0}return!1}function Cr(z){return(Cz(z)||Fj(z))&&(ON(z,o)||o===z.end&&(!!z.isUnterminated||Cz(z)))}function Se(){let z=zGe(q);if(!z)return 0;let j=(fO(z.parent)?z.parent:void 0)||z,yt=dTe(j,m);if(!yt)return 0;let lt=m.getTypeFromTypeNode(j),Qe=nG(yt,m),Vt=nG(lt,m),Hn=new Set;return Vt.forEach(jr=>Hn.add(jr.escapedName)),Ce=Qi(Ce,Pr(Qe,jr=>!Hn.has(jr.escapedName))),we=0,ge=!0,1}function at(){let z=Ce.length,Te=BGe(q);if(!Te)return 0;we=0;let j,yt;if(Te.kind===207){let lt=XGe(Te,m);if(lt===void 0)return Te.flags&33554432?2:(ke=!0,0);let Qe=m.getContextualType(Te,4),Vt=(Qe||lt).getStringIndexType(),Hn=(Qe||lt).getNumberIndexType();if(ge=!!Vt||!!Hn,j=tG(lt,Qe,Te,m),yt=Te.properties,j.length===0&&!Hn)return ke=!0,0}else{L.assert(Te.kind===203),ge=!1;let lt=nm(Te.parent);if(!MA(lt))return L.fail(\"Root declaration is not variable-like.\");let Qe=Jy(lt)||!!Cl(lt)||lt.parent.parent.kind===247;if(!Qe&&lt.kind===166&&(ot(lt.parent)?Qe=!!m.getContextualType(lt.parent):(lt.parent.kind===171||lt.parent.kind===175)&&(Qe=ot(lt.parent.parent)&&!!m.getContextualType(lt.parent.parent))),Qe){let Vt=m.getTypeAtLocation(Te);if(!Vt)return 2;j=m.getPropertiesOfType(Vt).filter(Hn=>m.isPropertyAccessible(Te,!1,!1,Vt,Hn)),yt=Te.elements}}if(j&&j.length>0){let lt=ln(j,L.checkDefined(yt));Ce=Qi(Ce,lt),ae(),Te.kind===207&&s.includeCompletionsWithObjectLiteralMethodSnippets&&s.includeCompletionsWithInsertText&&(Ot(z),hi(lt,Te))}return 1}function Tt(){if(!q)return 0;let z=q.kind===18||q.kind===27?zr(q.parent,bW):b7(q)?zr(q.parent.parent,bW):void 0;if(!z)return 0;b7(q)||(_e=8);let{moduleSpecifier:Te}=z.kind===272?z.parent.parent:z.parent;if(!Te)return ge=!0,z.kind===272?2:0;let j=m.getSymbolAtLocation(Te);if(!j)return ge=!0,2;we=3,ge=!1;let yt=m.getExportsAndPropertiesOfModule(j),lt=new Set(z.elements.filter(Vt=>!pe(Vt)).map(Vt=>(Vt.propertyName||Vt.name).escapedText)),Qe=yt.filter(Vt=>Vt.escapedName!==\"default\"&&!lt.has(Vt.escapedName));return Ce=Qi(Ce,Qe),Qe.length||(_e=0),1}function ve(){var z;let Te=q&&(q.kind===18||q.kind===27)?zr(q.parent,m_):void 0;if(!Te)return 0;let j=jn(Te,Kp(Li,Tc));return we=5,ge=!1,(z=j.locals)==null||z.forEach((yt,lt)=>{var Qe,Vt;Ce.push(yt),(Vt=(Qe=j.symbol)==null?void 0:Qe.exports)!=null&&Vt.has(lt)&&(Ne[$a(yt)]=Pl.OptionalMember)}),1}function nt(){let z=WGe(r,q,le,o);if(!z)return 0;if(we=3,ge=!0,_e=q.kind===41?0:Yr(z)?2:3,!Yr(z))return 1;let Te=q.kind===26?q.parent.parent:q.parent,j=_l(Te)?uu(Te):0;if(q.kind===79&&!pe(q))switch(q.getText()){case\"private\":j=j|8;break;case\"static\":j=j|32;break;case\"override\":j=j|16384;break}if(oc(Te)&&(j|=32),!(j&8)){let yt=Yr(z)&&j&16384?oT(hp(z)):PI(z),lt=Uo(yt,Qe=>{let Vt=m.getTypeAtLocation(Qe);return j&32?Vt?.symbol&&m.getPropertiesOfType(m.getTypeOfSymbolAtLocation(Vt.symbol,z)):Vt&&m.getPropertiesOfType(Vt)});Ce=Qi(Ce,Ke(lt,z.members,j)),mn(Ce,(Qe,Vt)=>{let Hn=Qe?.valueDeclaration;if(Hn&&_l(Hn)&&Hn.name&&ts(Hn.name)){let jr={kind:512,symbolName:m.symbolToString(Qe)};Be[Vt]=jr}})}return 1}function ce(z){return!!z.parent&&ha(z.parent)&&Ec(z.parent.parent)&&(vI(z.kind)||Rh(z))}function $(z){if(z){let Te=z.parent;switch(z.kind){case 20:case 27:return Ec(z.parent)?z.parent:void 0;default:if(ce(z))return Te.parent}}}function ue(z){if(z){let Te,j=jn(z.parent,yt=>Yr(yt)?\"quit\":Ds(yt)&&Te===yt.body?!0:(Te=yt,!1));return j&&j}}function G(z){if(z){let Te=z.parent;switch(z.kind){case 31:case 30:case 43:case 79:case 208:case 289:case 288:case 290:if(Te&&(Te.kind===282||Te.kind===283)){if(z.kind===31){let j=el(z.pos,r,void 0);if(!Te.typeArguments||j&&j.kind===43)break}return Te}else if(Te.kind===288)return Te.parent.parent;break;case 10:if(Te&&(Te.kind===288||Te.kind===290))return Te.parent.parent;break;case 19:if(Te&&Te.kind===291&&Te.parent&&Te.parent.kind===288)return Te.parent.parent.parent;if(Te&&Te.kind===290)return Te.parent.parent;break}}}function Oe(z){let Te=z.parent,j=Te.kind;switch(z.kind){case 27:return j===257||Kt(z)||j===240||j===263||Ge(j)||j===261||j===204||j===262||Yr(Te)&&!!Te.typeParameters&&Te.typeParameters.end>=z.pos;case 24:return j===204;case 58:return j===205;case 22:return j===204;case 20:return j===295||Ge(j);case 18:return j===263;case 29:return j===260||j===228||j===261||j===262||rS(j);case 124:return j===169&&!Yr(Te.parent);case 25:return j===166||!!Te.parent&&Te.parent.kind===204;case 123:case 121:case 122:return j===166&&!Ec(Te.parent);case 128:return j===273||j===278||j===271;case 137:case 151:return!rG(z);case 79:if(j===273&&z===Te.name&&z.text===\"type\")return!1;break;case 84:case 92:case 118:case 98:case 113:case 100:case 119:case 85:case 138:return!0;case 154:return j!==273;case 41:return Ia(z.parent)&&!Nc(z.parent)}if(gP(eG(z))&&rG(z)||ce(z)&&(!Re(z)||vI(eG(z))||pe(z)))return!1;switch(eG(z)){case 126:case 84:case 85:case 136:case 92:case 98:case 118:case 119:case 121:case 122:case 123:case 124:case 113:return!0;case 132:return Na(z.parent)}if(jn(z.parent,Yr)&&z===B&&je(z,o))return!1;let lt=cb(z.parent,169);if(lt&&z!==B&&Yr(B.parent.parent)&&o<=B.end){if(je(z,B.end))return!1;if(z.kind!==63&&(cN(lt)||f6(lt)))return!0}return Rh(z)&&!Sf(z.parent)&&!Sp(z.parent)&&!(Yr(z.parent)&&(z!==B||o>B.end))}function je(z,Te){return z.kind!==63&&(z.kind===26||!Gf(z.end,Te,r))}function Ge(z){return rS(z)&&z!==173}function kt(z){if(z.kind===8){let Te=z.getFullText();return Te.charAt(Te.length-1)===\".\"}return!1}function Kt(z){return z.parent.kind===258&&!FN(z,r,m)}function ln(z,Te){if(Te.length===0)return z;let j=new Set,yt=new Set;for(let Qe of Te){if(Qe.kind!==299&&Qe.kind!==300&&Qe.kind!==205&&Qe.kind!==171&&Qe.kind!==174&&Qe.kind!==175&&Qe.kind!==301||pe(Qe))continue;let Vt;if(jS(Qe))ir(Qe,j);else if(Wo(Qe)&&Qe.propertyName)Qe.propertyName.kind===79&&(Vt=Qe.propertyName.escapedText);else{let Hn=sa(Qe);Vt=Hn&&s_(Hn)?FI(Hn):void 0}Vt!==void 0&&yt.add(Vt)}let lt=z.filter(Qe=>!yt.has(Qe.escapedName));return rt(j,lt),lt}function ir(z,Te){let j=z.expression,yt=m.getSymbolAtLocation(j),lt=yt&&m.getTypeOfSymbolAtLocation(yt,j),Qe=lt&&lt.properties;Qe&&Qe.forEach(Vt=>{Te.add(Vt.name)})}function ae(){Ce.forEach(z=>{var Te;if(z.flags&16777216){let j=$a(z);Ne[j]=(Te=Ne[j])!=null?Te:Pl.OptionalMember}})}function rt(z,Te){if(z.size!==0)for(let j of Te)z.has(j.name)&&(Ne[$a(j)]=Pl.MemberDeclaredBySpreadAssignment)}function Ot(z){var Te;for(let j=z;j<Ce.length;j++){let yt=Ce[j],lt=$a(yt),Qe=Be?.[j],Vt=Do(i),Hn=Z9(yt,Vt,Qe,0,!1);if(Hn){let jr=(Te=Ne[lt])!=null?Te:Pl.LocationPriority,{name:ei}=Hn;Ne[lt]=Pl.ObjectLiteralProperty(jr,ei)}}}function Ke(z,Te,j){let yt=new Set;for(let lt of Te){if(lt.kind!==169&&lt.kind!==171&&lt.kind!==174&&lt.kind!==175||pe(lt)||cd(lt,8)||Ca(lt)!==!!(j&32))continue;let Qe=M0(lt.name);Qe&&yt.add(Qe)}return z.filter(lt=>!yt.has(lt.escapedName)&&!!lt.declarations&&!(bf(lt)&8)&&!(lt.valueDeclaration&&xu(lt.valueDeclaration)))}function oe(z,Te){let j=new Set,yt=new Set;for(let Qe of Te)pe(Qe)||(Qe.kind===288?j.add(Qe.name.escapedText):BT(Qe)&&ir(Qe,yt));let lt=z.filter(Qe=>!j.has(Qe.escapedName));return rt(yt,lt),lt}function pe(z){return z.getStart(r)<=o&&o<=z.getEnd()}}function BGe(e){if(e){let{parent:t}=e;switch(e.kind){case 18:case 27:if(rs(t)||cm(t))return t;break;case 41:return Nc(t)?zr(t.parent,rs):void 0;case 79:return e.text===\"async\"&&Sf(e.parent)?e.parent.parent:void 0}}}function Q9(e,t){let r=el(e,t);return r&&e<=r.end&&(Ah(r)||Xu(r.kind))?{contextToken:el(r.getFullStart(),t,void 0),previousToken:r}:{contextToken:r,previousToken:r}}function aTe(e,t,r,i){let o=t.isPackageJsonImport?i.getPackageJsonAutoImportProvider():r,s=o.getTypeChecker(),l=t.ambientModuleName?s.tryFindAmbientModule(t.ambientModuleName):t.fileName?s.getMergedSymbol(L.checkDefined(o.getSourceFile(t.fileName)).symbol):void 0;if(!l)return;let f=t.exportName===\"export=\"?s.resolveExternalModuleSymbol(l):s.tryGetMemberInModuleExportsAndProperties(t.exportName,l);return f?(f=t.exportName===\"default\"&&ZA(f)||f,{symbol:f,origin:LGe(t,e,l)}):void 0}function Z9(e,t,r,i,o){if(dGe(r))return;let s=sGe(r)?r.symbolName:e.name;if(s===void 0||e.flags&1536&&Yw(s.charCodeAt(0))||yR(e))return;let l={name:s,needsConvertPropertyAccess:!1};if(r_(s,t,o?1:0)||e.valueDeclaration&&xu(e.valueDeclaration))return l;switch(i){case 3:return wZ(r)?{name:r.symbolName,needsConvertPropertyAccess:!1}:void 0;case 0:return{name:JSON.stringify(s),needsConvertPropertyAccess:!1};case 2:case 1:return s.charCodeAt(0)===32?void 0:{name:s,needsConvertPropertyAccess:!0};case 5:case 4:return l;default:L.assertNever(i)}}function oTe(e,t){if(!t)return sTe(e);let r=e+8+1;return yP[r]||(yP[r]=sTe(e).filter(i=>!UGe(uT(i.name))))}function sTe(e){return yP[e]||(yP[e]=JZ().filter(t=>{let r=uT(t.name);switch(e){case 0:return!1;case 1:return lTe(r)||r===136||r===142||r===154||r===143||r===126||ak(r)&&r!==155;case 5:return lTe(r);case 2:return gP(r);case 3:return cTe(r);case 4:return vI(r);case 6:return ak(r)||r===85;case 7:return ak(r);case 8:return r===154;default:return L.assertNever(e)}}))}function UGe(e){switch(e){case 126:case 131:case 160:case 134:case 136:case 92:case 159:case 117:case 138:case 118:case 140:case 141:case 142:case 143:case 144:case 148:case 149:case 161:case 121:case 122:case 123:case 146:case 152:case 153:case 154:case 156:case 157:return!0;default:return!1}}function cTe(e){return e===146}function gP(e){switch(e){case 126:case 127:case 135:case 137:case 151:case 132:case 136:case 161:return!0;default:return Gj(e)}}function lTe(e){return e===132||e===133||e===128||e===150||e===154||!K6(e)&&!gP(e)}function eG(e){var t;return Re(e)?(t=nb(e))!=null?t:0:e.kind}function VGe(e,t){let r=[];if(e){let i=e.getSourceFile(),o=e.parent,s=i.getLineAndCharacterOfPosition(e.end).line,l=i.getLineAndCharacterOfPosition(t).line;(gl(o)||Il(o)&&o.moduleSpecifier)&&e===o.moduleSpecifier&&s===l&&r.push({name:Xa(130),kind:\"keyword\",kindModifiers:\"\",sortText:Pl.GlobalsOrKeywords})}return r}function jGe(e,t){return jn(e,r=>TI(r)&&RN(r,t)?!0:dm(r)?\"quit\":!1)}function tG(e,t,r,i){let o=t&&t!==e,s=o&&!(t.flags&3)?i.getUnionType([e,t]):e,l=HGe(s,r,i);return s.isClass()&&uTe(l)?[]:o?Pr(l,f):l;function f(d){return Fn(d.declarations)?vt(d.declarations,g=>g.parent!==r):!0}}function HGe(e,t,r){return e.isUnion()?r.getAllPossiblePropertiesOfTypes(Pr(e.types,i=>!(i.flags&134348796||r.isArrayLikeType(i)||r.isTypeInvalidDueToUnionDiscriminant(i,t)||r.typeHasCallOrConstructSignatures(i)||i.isClass()&&uTe(i.getApparentProperties())))):e.getApparentProperties()}function uTe(e){return vt(e,t=>!!(bf(t)&24))}function nG(e,t){return e.isUnion()?L.checkEachDefined(t.getAllPossiblePropertiesOfTypes(e.types),\"getAllPossiblePropertiesOfTypes() should all be defined\"):L.checkEachDefined(e.getApparentProperties(),\"getApparentProperties() should all be defined\")}function WGe(e,t,r,i){var o;switch(r.kind){case 354:return zr(r.parent,vS);case 1:let s=zr(Os(Ga(r.parent,Li).statements),vS);if(s&&!Yo(s,19,e))return s;break;case 79:{if(nb(r)||Na(r.parent)&&r.parent.initializer===r)return;if(rG(r))return jn(r,vS)}}if(!!t){if(r.kind===135||Re(t)&&Na(t.parent)&&Yr(r))return jn(t,Yr);switch(t.kind){case 63:return;case 26:case 19:return rG(r)&&r.parent.name===r?r.parent.parent:zr(r,vS);case 18:case 27:return zr(t.parent,vS);default:if(vS(r)){if(Gs(e,t.getEnd()).line!==Gs(e,i).line)return r;let s=Yr(t.parent.parent)?gP:cTe;return s(t.kind)||t.kind===41||Re(t)&&s((o=nb(t))!=null?o:0)?t.parent.parent:void 0}return}}}function zGe(e){if(!e)return;let t=e.parent;switch(e.kind){case 18:if(Rd(t))return t;break;case 26:case 27:case 79:if(t.kind===168&&Rd(t.parent))return t.parent;break}}function dTe(e,t){if(!e)return;if(bi(e)&&_6(e.parent))return t.getTypeArgumentConstraint(e);let r=dTe(e.parent,t);if(!!r)switch(e.kind){case 168:return t.getTypeOfPropertyOfContextualType(r,e.symbol.escapedName);case 190:case 184:case 189:return r}}function rG(e){return e.parent&&s6(e.parent)&&vS(e.parent.parent)}function JGe(e,t,r,i){switch(t){case\".\":case\"@\":return!0;case'\"':case\"'\":case\"`\":return!!r&&age(r)&&i===r.getStart(e)+1;case\"#\":return!!r&&pi(r)&&!!Zc(r);case\"<\":return!!r&&r.kind===29&&(!ar(r.parent)||fTe(r.parent));case\"/\":return!!r&&(es(r)?!!sR(r):r.kind===43&&BS(r.parent));case\" \":return!!r&&yL(r)&&r.parent.kind===308;default:return L.assertNever(t)}}function fTe({left:e}){return rc(e)}function KGe(e,t,r){let i=r.resolveName(\"self\",void 0,111551,!1);if(i&&r.getTypeOfSymbolAtLocation(i,t)===e)return!0;let o=r.resolveName(\"global\",void 0,111551,!1);if(o&&r.getTypeOfSymbolAtLocation(o,t)===e)return!0;let s=r.resolveName(\"globalThis\",void 0,111551,!1);return!!(s&&r.getTypeOfSymbolAtLocation(s,t)===e)}function qGe(e){return!!(e.valueDeclaration&&uu(e.valueDeclaration)&32&&Yr(e.valueDeclaration.parent))}function XGe(e,t){let r=t.getContextualType(e);if(r)return r;let i=qy(e.parent);if(ar(i)&&i.operatorToken.kind===63&&e===i.left)return t.getTypeAtLocation(i);if(ot(i))return t.getContextualType(i)}function _Te(e){var t,r,i;let o,s=!1,l=f();return{isKeywordOnlyCompletion:s,keywordCompletion:o,isNewIdentifierLocation:!!(l||o===154),isTopLevelTypeOnly:!!((r=(t=zr(l,gl))==null?void 0:t.importClause)!=null&&r.isTypeOnly)||!!((i=zr(l,Nl))!=null&&i.isTypeOnly),couldBeTypeOnlyImportSpecifier:!!l&&mTe(l,e),replacementSpan:YGe(l)};function f(){let d=e.parent;if(Nl(d))return o=e.kind===154?void 0:154,UZ(d.moduleReference)?d:void 0;if(mTe(d,e)&&hTe(d.parent))return d;if(jg(d)||nv(d)){if(!d.parent.isTypeOnly&&(e.kind===18||e.kind===100||e.kind===27)&&(o=154),hTe(d))if(e.kind===19||e.kind===79)s=!0,o=158;else return d.parent.parent;return}if(yL(e)&&Li(d))return o=154,e;if(yL(e)&&gl(d))return o=154,UZ(d.moduleSpecifier)?d:void 0}}function YGe(e){var t,r,i;if(!e)return;let o=(t=jn(e,Kp(gl,Nl)))!=null?t:e,s=o.getSourceFile();if(wT(o,s))return Du(o,s);L.assert(o.kind!==100&&o.kind!==273);let l=o.kind===269?(i=pTe((r=o.importClause)==null?void 0:r.namedBindings))!=null?i:o.moduleSpecifier:o.moduleReference,f={pos:o.getFirstToken().getStart(),end:l.pos};if(wT(f,s))return lv(f)}function pTe(e){var t;return wr((t=zr(e,jg))==null?void 0:t.elements,r=>{var i;return!r.propertyName&&_S(r.name.text)&&((i=el(r.name.pos,e.getSourceFile(),e))==null?void 0:i.kind)!==27})}function mTe(e,t){return $u(e)&&(e.isTypeOnly||t===e.name&&b7(t))}function hTe(e){if(!UZ(e.parent.parent.moduleSpecifier)||e.parent.name)return!1;if(jg(e)){let t=pTe(e);return(t?e.elements.indexOf(t):e.elements.length)<2}return!0}function UZ(e){var t;return rc(e)?!0:!((t=zr(um(e)?e.expression:e,es))!=null&&t.text)}function $Ge(e){return jn(e,r=>ET(r)||QGe(r)||La(r)?\"quit\":wi(r))}function QGe(e){return e.parent&&xs(e.parent)&&e.parent.body===e}function VZ(e,t,r=new Map){return i(e)||i(wd(e.exportSymbol||e,t));function i(o){return!!(o.flags&788968)||t.isUnknownSymbol(o)||!!(o.flags&1536)&&U_(r,$a(o))&&t.getExportsOfModule(o).some(s=>VZ(s,t,r))}}function ZGe(e,t){let r=wd(e,t).declarations;return!!Fn(r)&&Ji(r,H7)}function gTe(e,t){if(t.length===0)return!0;let r=!1,i,o=0,s=e.length;for(let l=0;l<s;l++){let f=e.charCodeAt(l),d=t.charCodeAt(o);if((f===d||f===eBe(d))&&(r||(r=i===void 0||97<=i&&i<=122&&65<=f&&f<=90||i===95&&f!==95),r&&o++,o===t.length))return!0;i=f}return!1}function eBe(e){return 97<=e&&e<=122?e-32:e}var iG,jZ,Pl,HZ,WZ,zZ,yP,JZ,tBe=gt({\"src/services/completions.ts\"(){\"use strict\";Fr(),QZ(),iG=100,jZ=1e3,Pl={LocalDeclarationPriority:\"10\",LocationPriority:\"11\",OptionalMember:\"12\",MemberDeclaredBySpreadAssignment:\"13\",SuggestedClassMembers:\"14\",GlobalsOrKeywords:\"15\",AutoImportSuggestions:\"16\",ClassMemberSnippets:\"17\",JavascriptIdentifiers:\"18\",Deprecated(e){return\"z\"+e},ObjectLiteralProperty(e,t){return`${e}\\0${t}\\0`},SortBelow(e){return e+\"1\"}},HZ=(e=>(e.ThisProperty=\"ThisProperty/\",e.ClassMemberSnippet=\"ClassMemberSnippet/\",e.TypeOnlyAlias=\"TypeOnlyAlias/\",e.ObjectLiteralMethodSnippet=\"ObjectLiteralMethodSnippet/\",e.SwitchCases=\"SwitchCases/\",e))(HZ||{}),WZ=(e=>(e[e.ThisType=1]=\"ThisType\",e[e.SymbolMember=2]=\"SymbolMember\",e[e.Export=4]=\"Export\",e[e.Promise=8]=\"Promise\",e[e.Nullable=16]=\"Nullable\",e[e.ResolvedExport=32]=\"ResolvedExport\",e[e.TypeOnlyAlias=64]=\"TypeOnlyAlias\",e[e.ObjectLiteralMethod=128]=\"ObjectLiteralMethod\",e[e.Ignore=256]=\"Ignore\",e[e.ComputedPropertyName=512]=\"ComputedPropertyName\",e[e.SymbolMemberNoExport=2]=\"SymbolMemberNoExport\",e[e.SymbolMemberExport=6]=\"SymbolMemberExport\",e))(WZ||{}),zZ=(e=>(e[e.ObjectPropertyDeclaration=0]=\"ObjectPropertyDeclaration\",e[e.Global=1]=\"Global\",e[e.PropertyAccess=2]=\"PropertyAccess\",e[e.MemberLike=3]=\"MemberLike\",e[e.String=4]=\"String\",e[e.None=5]=\"None\",e))(zZ||{}),yP=[],JZ=zu(()=>{let e=[];for(let t=81;t<=162;t++)e.push({name:Xa(t),kind:\"keyword\",kindModifiers:\"\",sortText:Pl.GlobalsOrKeywords});return e})}});function KZ(){let e=new Map;function t(r){let i=e.get(r.name);(!i||$Z[i.kind]<$Z[r.kind])&&e.set(r.name,r)}return{add:t,has:e.has.bind(e),values:e.values.bind(e)}}function nBe(e,t,r,i,o,s,l,f,d){if(Fhe(e,t)){let g=yBe(e,t,i,o);return g&&yTe(g)}if(r1(e,t,r)){if(!r||!es(r))return;let g=bTe(e,r,t,s.getTypeChecker(),i,o,f);return rBe(g,r,e,o,s,l,i,f,t,d)}}function rBe(e,t,r,i,o,s,l,f,d,g){if(e===void 0)return;let m=tY(t);switch(e.kind){case 0:return yTe(e.paths);case 1:{let v=MU();return MZ(e.symbols,v,t,t,r,d,r,i,o,99,s,4,f,l,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,g),{isGlobalCompletion:!1,isMemberCompletion:!0,isNewIdentifierLocation:e.hasIndexSignature,optionalReplacementSpan:m,entries:v}}case 2:{let v=e.types.map(S=>({name:S.value,kindModifiers:\"\",kind:\"string\",sortText:Pl.LocationPriority,replacementSpan:eY(t)}));return{isGlobalCompletion:!1,isMemberCompletion:!1,isNewIdentifierLocation:e.isNewIdentifier,optionalReplacementSpan:m,entries:v}}default:return L.assertNever(e)}}function iBe(e,t,r,i,o,s,l,f,d){if(!i||!es(i))return;let g=bTe(t,i,r,o,s,l,d);return g&&aBe(e,i,g,t,o,f)}function aBe(e,t,r,i,o,s){switch(r.kind){case 0:{let l=wr(r.paths,f=>f.name===e);return l&&hP(e,vTe(l.extension),l.kind,[ef(e)])}case 1:{let l=wr(r.symbols,f=>f.name===e);return l&&GZ(l,l.name,o,i,t,s)}case 2:return wr(r.types,l=>l.value===e)?hP(e,\"\",\"string\",[ef(e)]):void 0;default:return L.assertNever(r)}}function yTe(e){let i=e.map(({name:o,kind:s,span:l,extension:f})=>({name:o,kind:s,kindModifiers:vTe(f),sortText:Pl.LocationPriority,replacementSpan:l}));return{isGlobalCompletion:!1,isMemberCompletion:!1,isNewIdentifierLocation:!0,entries:i}}function vTe(e){switch(e){case\".d.ts\":return\".d.ts\";case\".js\":return\".js\";case\".json\":return\".json\";case\".jsx\":return\".jsx\";case\".ts\":return\".ts\";case\".tsx\":return\".tsx\";case\".d.mts\":return\".d.mts\";case\".mjs\":return\".mjs\";case\".mts\":return\".mts\";case\".d.cts\":return\".d.cts\";case\".cjs\":return\".cjs\";case\".cts\":return\".cts\";case\".tsbuildinfo\":return L.fail(\"Extension .tsbuildinfo is unsupported.\");case void 0:return\"\";default:return L.assertNever(e)}}function bTe(e,t,r,i,o,s,l){let f=ETe(t.parent);switch(f.kind){case 198:{let S=ETe(f.parent);switch(S.kind){case 230:case 180:{let w=jn(f,C=>C.parent===S);return w?{kind:2,types:vP(i.getTypeArgumentConstraint(w)),isNewIdentifier:!1}:void 0}case 196:let{indexType:x,objectType:A}=S;return RN(x,r)?TTe(i.getTypeFromTypeNode(A)):void 0;case 202:return{kind:0,paths:xTe(e,t,o,s,i,l)};case 189:{if(!p_(S.parent))return;let w=oBe(S,f),C=vP(i.getTypeArgumentConstraint(S)).filter(P=>!ya(w,P.value));return{kind:2,types:C,isNewIdentifier:!1}}default:return}}case 299:return rs(f.parent)&&f.name===t?cBe(i,f.parent):d()||d(0);case 209:{let{expression:S,argumentExpression:x}=f;return t===vs(x)?TTe(i.getTypeAtLocation(S)):void 0}case 210:case 211:case 288:if(!TBe(t)&&!Dd(f)){let S=UP.getArgumentInfoForCompletions(f.kind===288?f.parent:t,r,e);return S&&sBe(S.invocation,t,S,i)||d()}case 269:case 275:case 280:return{kind:0,paths:xTe(e,t,o,s,i,l)};case 292:let g=J7(i,f.parent.clauses),m=d();if(!m)return;let v=m.types.filter(S=>!g.hasValue(S.value));return{kind:2,types:v,isNewIdentifier:!1};default:return d()}function d(g=4){let m=vP(w7(t,i,g));if(!!m.length)return{kind:2,types:m,isNewIdentifier:!1}}}function ETe(e){switch(e.kind){case 193:return fR(e);case 214:return qy(e);default:return e}}function oBe(e,t){return Zi(e.types,r=>r!==t&&mb(r)&&yo(r.literal)?r.literal.text:void 0)}function sBe(e,t,r,i){let o=!1,s=new Map,l=[],f=Au(e)?L.checkDefined(jn(t.parent,Sp)):t;i.getResolvedSignatureForStringLiteralCompletions(e,f,l);let d=Uo(l,g=>{if(!Xl(g)&&r.argumentCount>g.parameters.length)return;let m=g.getTypeParameterAtPosition(r.argumentIndex);if(Au(e)){let v=i.getTypeOfPropertyOfType(m,f.name.text);v&&(m=v)}return o=o||!!(m.flags&4),vP(m,s)});return Fn(d)?{kind:2,types:d,isNewIdentifier:o}:void 0}function TTe(e){return e&&{kind:1,symbols:Pr(e.getApparentProperties(),t=>!(t.valueDeclaration&&xu(t.valueDeclaration))),hasIndexSignature:EY(e)}}function cBe(e,t){let r=e.getContextualType(t);if(!r)return;let i=e.getContextualType(t,4),o=tG(r,i,t,e);return{kind:1,symbols:o,hasIndexSignature:EY(r)}}function vP(e,t=new Map){return e?(e=iY(e),e.isUnion()?Uo(e.types,r=>vP(r,t)):e.isStringLiteral()&&!(e.flags&1024)&&U_(t,e.value)?[e]:Je):Je}function nC(e,t,r){return{name:e,kind:t,extension:r}}function qZ(e){return nC(e,\"directory\",void 0)}function STe(e,t,r){let i=bBe(e,t),o=e.length===0?void 0:il(t,e.length);return r.map(({name:s,kind:l,extension:f})=>Math.max(s.indexOf(_s),s.indexOf(mw))!==-1?{name:s,kind:l,extension:f,span:o}:{name:s,kind:l,extension:f,span:i})}function xTe(e,t,r,i,o,s){return STe(t.text,t.getStart(e)+1,lBe(e,t,r,i,o,s))}function lBe(e,t,r,i,o,s){let l=Al(t.text),f=es(t)?H_(e,t):void 0,d=e.path,g=ni(d),m=XZ(r,1,e,o,s,f);return EBe(l)||!r.baseUrl&&(qp(l)||doe(l))?uBe(l,g,r,i,d,m):pBe(l,g,f,r,i,m,o)}function XZ(e,t,r,i,o,s){return{extensionsToSearch:e_(dBe(e,i)),referenceKind:t,importingSourceFile:r,endingPreference:o?.importModuleSpecifierEnding,resolutionMode:s}}function uBe(e,t,r,i,o,s){return r.rootDirs?_Be(r.rootDirs,e,t,s,r,i,o):lo(Sk(e,t,s,i,!1,o).values())}function dBe(e,t){let r=t?Zi(t.getAmbientModules(),s=>{let l=s.name.slice(1,-1);if(!(!l.startsWith(\"*.\")||l.includes(\"/\")))return l.slice(1)}):[],i=[...rL(e),r],o=$s(e);return T7(o)?GR(e,i):i}function fBe(e,t,r,i){e=e.map(s=>So(qp(s)?s:vi(t,s)));let o=ks(e,s=>Gy(s,r,t,i)?r.substr(s.length):void 0);return _A([...e.map(s=>vi(s,o)),r],J1,su)}function _Be(e,t,r,i,o,s,l){let f=o.project||s.getCurrentDirectory(),d=!(s.useCaseSensitiveFileNames&&s.useCaseSensitiveFileNames()),g=fBe(e,f,r,d);return Uo(g,m=>lo(Sk(t,m,i,s,!0,l).values()))}function Sk(e,t,r,i,o,s,l=KZ()){var f;e===void 0&&(e=\"\"),e=Al(e),My(e)||(e=ni(e)),e===\"\"&&(e=\".\"+_s),e=cu(e);let d=Fy(t,e),g=My(d)?d:ni(d);if(!o){let x=cge(g,i);if(x){let w=KI(x,i).typesVersions;if(typeof w==\"object\"){let C=(f=q3(w))==null?void 0:f.paths;if(C){let P=ni(x),F=d.slice(cu(P).length);if(CTe(l,F,P,r,i,C))return l}}}}let m=!(i.useCaseSensitiveFileNames&&i.useCaseSensitiveFileNames());if(!G7(i,g))return l;let v=xY(i,g,r.extensionsToSearch,void 0,[\"./*\"]);if(v)for(let x of v){if(x=So(x),s&&lT(x,s,t,m)===0)continue;let{name:A,extension:w}=ATe(Hl(x),i.getCompilationSettings(),r);l.add(nC(A,\"script\",w))}let S=M7(i,g);if(S)for(let x of S){let A=Hl(So(x));A!==\"@types\"&&l.add(qZ(A))}return l}function ATe(e,t,r){let i=Q0.tryGetRealFileNameForNonJsDeclarationFileName(e);if(i)return{name:i,extension:Hm(i)};if(r.referenceKind===0)return{name:e,extension:Hm(e)};let o=OW(r.endingPreference,r.resolutionMode,t,r.importingSourceFile);if(o===3){if($c(e,L4))return{name:e,extension:Hm(e)};let l=Q0.tryGetJSExtensionForFile(e,t);return l?{name:V0(e,l),extension:l}:{name:e,extension:Hm(e)}}if((o===0||o===1)&&$c(e,[\".js\",\".jsx\",\".ts\",\".tsx\",\".d.ts\"]))return{name:ld(e),extension:Hm(e)};let s=Q0.tryGetJSExtensionForFile(e,t);return s?{name:V0(e,s),extension:s}:{name:e,extension:Hm(e)}}function CTe(e,t,r,i,o,s){let l=d=>s[d],f=(d,g)=>{let m=r2(d),v=r2(g),S=typeof m==\"object\"?m.prefix.length:d.length,x=typeof v==\"object\"?v.prefix.length:g.length;return Es(x,S)};return ITe(e,t,r,i,o,bh(s),l,f)}function ITe(e,t,r,i,o,s,l,f){let d=[],g;for(let m of s){if(m===\".\")continue;let v=m.replace(/^\\.\\//,\"\"),S=l(m);if(S){let x=r2(v);if(!x)continue;let A=typeof x==\"object\"&&h8(x,t);A&&(g===void 0||f(m,g)===-1)&&(g=m,d=d.filter(C=>!C.matchedPattern)),(typeof x==\"string\"||g===void 0||f(m,g)!==1)&&d.push({matchedPattern:A,results:mBe(v,S,t,r,i,o).map(({name:C,kind:P,extension:F})=>nC(C,P,F))})}}return d.forEach(m=>m.results.forEach(v=>e.add(v))),g!==void 0}function pBe(e,t,r,i,o,s,l){let{baseUrl:f,paths:d}=i,g=KZ(),m=$s(i);if(f){let S=i.project||o.getCurrentDirectory(),x=So(vi(S,f));Sk(e,x,s,o,!1,void 0,g),d&&CTe(g,e,x,s,o,d)}let v=kTe(e);for(let S of gBe(e,v,l))g.add(nC(S,\"external module name\",void 0));if(RTe(o,i,t,v,s,g),T7(m)){let S=!1;if(v===void 0)for(let x of vBe(o,t)){let A=nC(x,\"external module name\",void 0);g.has(A.name)||(S=!0,g.add(A))}if(!S){let x=A=>{let w=vi(A,\"node_modules\");G7(o,w)&&Sk(e,w,s,o,!1,void 0,g)};if(v&&xW(i)){let A=x;x=w=>{let C=Ou(e);C.shift();let P=C.shift();if(!P)return A(w);if(na(P,\"@\")){let q=C.shift();if(!q)return A(w);P=vi(P,q)}let F=vi(w,\"node_modules\",P),B=vi(F,\"package.json\");if(F7(o,B)){let W=KI(B,o).exports;if(W){if(typeof W!=\"object\"||W===null)return;let Y=bh(W),R=C.join(\"/\")+(C.length&&My(e)?\"/\":\"\"),ie=r===99?[\"node\",\"import\",\"types\"]:[\"node\",\"require\",\"types\"];ITe(g,R,F,s,o,Y,Q=>oT(LTe(W[Q],ie)),tK);return}}return A(w)}}Th(t,x)}}return lo(g.values())}function LTe(e,t){if(typeof e==\"string\")return e;if(e&&typeof e==\"object\"&&!ba(e)){for(let r in e)if(r===\"default\"||t.indexOf(r)>-1||ZO(t,r)){let i=e[r];return LTe(i,t)}}}function kTe(e){return YZ(e)?My(e)?e:ni(e):void 0}function mBe(e,t,r,i,o,s){if(!Oc(e,\"*\"))return jl(e,\"*\")?Je:d(e,\"script\");let l=e.slice(0,e.length-1),f=KU(r,l);if(f===void 0)return e[e.length-2]===\"/\"?d(l,\"directory\"):Uo(t,m=>{var v;return(v=DTe(\"\",i,m,o,s))==null?void 0:v.map(({name:S,...x})=>({name:l+S,...x}))});return Uo(t,g=>DTe(f,i,g,o,s));function d(g,m){return na(g,r)?[{name:cT(g),kind:m,extension:void 0}]:Je}}function DTe(e,t,r,i,o){if(!o.readDirectory)return;let s=r2(r);if(s===void 0||Ta(s))return;let l=Fy(s.prefix),f=My(s.prefix)?l:ni(l),d=My(s.prefix)?\"\":Hl(l),g=YZ(e),m=g?My(e)?e:ni(e):void 0,v=g?vi(f,d+m):f,S=So(s.suffix),x=So(vi(t,v)),A=g?x:cu(x)+d,w=S?\"**/*\"+S:\"./*\",C=Zi(xY(o,x,i.extensionsToSearch,void 0,[w]),B=>{let q=F(B);if(q){if(YZ(q))return qZ(Ou(wTe(q))[1]);let{name:W,extension:Y}=ATe(q,o.getCompilationSettings(),i);return nC(W,\"script\",Y)}}),P=S?Je:Zi(M7(o,x),B=>B===\"node_modules\"?void 0:qZ(B));return[...C,...P];function F(B){let q=hBe(So(B),A,S);return q===void 0?void 0:wTe(q)}}function hBe(e,t,r){return na(e,t)&&Oc(e,r)?e.slice(t.length,e.length-r.length):void 0}function wTe(e){return e[0]===_s?e.slice(1):e}function gBe(e,t,r){let o=r.getAmbientModules().map(s=>l_(s.name)).filter(s=>na(s,e)&&s.indexOf(\"*\")<0);if(t!==void 0){let s=cu(t);return o.map(l=>ZC(l,s))}return o}function yBe(e,t,r,i){let o=Vi(e,t),s=Nm(e.text,o.pos),l=s&&wr(s,A=>t>=A.pos&&t<=A.end);if(!l)return;let f=e.text.slice(l.pos,t),d=OTe.exec(f);if(!d)return;let[,g,m,v]=d,S=ni(e.path),x=m===\"path\"?Sk(v,S,XZ(r,0,e),i,!0,e.path):m===\"types\"?RTe(i,r,S,kTe(v),XZ(r,1,e)):L.fail();return STe(v,l.pos+g.length,lo(x.values()))}function RTe(e,t,r,i,o,s=KZ()){let l=new Map,f=B7(()=>YO(t,e))||Je;for(let g of f)d(g);for(let g of AY(r,e)){let m=vi(ni(g),\"node_modules/@types\");d(m)}return s;function d(g){if(!!G7(e,g))for(let m of M7(e,g)){let v=iF(m);if(!(t.types&&!ya(t.types,v)))if(i===void 0)l.has(v)||(s.add(nC(v,\"external module name\",void 0)),l.set(v,!0));else{let S=vi(g,m),x=IW(i,v,lb(e));x!==void 0&&Sk(x,S,o,e,!1,void 0,s)}}}}function vBe(e,t){if(!e.readFile||!e.fileExists)return Je;let r=[];for(let i of AY(t,e)){let o=KI(i,e);for(let s of NTe){let l=o[s];if(!!l)for(let f in l)fs(l,f)&&!na(f,\"@types/\")&&r.push(f)}}return r}function bBe(e,t){let r=Math.max(e.lastIndexOf(_s),e.lastIndexOf(mw)),i=r!==-1?r+1:0,o=e.length-i;return o===0||r_(e.substr(i,o),99)?void 0:il(t+i,o)}function EBe(e){if(e&&e.length>=2&&e.charCodeAt(0)===46){let t=e.length>=3&&e.charCodeAt(1)===46?2:1,r=e.charCodeAt(t);return r===47||r===92}return!1}function YZ(e){return jl(e,_s)}function TBe(e){return Pa(e.parent)&&Sl(e.parent.arguments)===e&&Re(e.parent.expression)&&e.parent.expression.escapedText===\"require\"}var $Z,OTe,NTe,SBe=gt({\"src/services/stringCompletions.ts\"(){\"use strict\";Fr(),QZ(),$Z={directory:0,script:1,[\"external module name\"]:2},OTe=/^(\\/\\/\\/\\s*<reference\\s+(path|types)\\s*=\\s*(?:'|\"))([^\\3\"]*)$/,NTe=[\"dependencies\",\"devDependencies\",\"peerDependencies\",\"optionalDependencies\"]}}),aG={};Mo(aG,{getStringLiteralCompletionDetails:()=>iBe,getStringLiteralCompletions:()=>nBe});var xBe=gt({\"src/services/_namespaces/ts.Completions.StringCompletions.ts\"(){\"use strict\";SBe()}}),ux={};Mo(ux,{CompletionKind:()=>zZ,CompletionSource:()=>HZ,SortText:()=>Pl,StringCompletions:()=>aG,SymbolOriginInfoKind:()=>WZ,createCompletionDetails:()=>hP,createCompletionDetailsForSymbol:()=>GZ,getCompletionEntriesFromSymbols:()=>MZ,getCompletionEntryDetails:()=>OGe,getCompletionEntrySymbol:()=>PGe,getCompletionsAtPosition:()=>fGe,getPropertiesForObjectExpression:()=>tG,moduleSpecifierResolutionCacheAttemptLimit:()=>jZ,moduleSpecifierResolutionLimit:()=>iG});var QZ=gt({\"src/services/_namespaces/ts.Completions.ts\"(){\"use strict\";tBe(),xBe()}});function ZZ(e,t,r,i){let o=LBe(e,r,i);return(s,l,f)=>{let{directImports:d,indirectUsers:g}=ABe(e,t,o,l,r,i);return{indirectUsers:g,...CBe(d,s,l.exportKind,r,f)}}}function ABe(e,t,r,{exportingModuleSymbol:i,exportKind:o},s,l){let f=z2(),d=z2(),g=[],m=!!i.globalExports,v=m?void 0:[];return x(i),{directImports:g,indirectUsers:S()};function S(){if(m)return e;if(i.declarations)for(let B of i.declarations)D0(B)&&t.has(B.getSourceFile().fileName)&&P(B);return v.map(Gn)}function x(B){let q=F(B);if(q){for(let W of q)if(!!f(W))switch(l&&l.throwIfCancellationRequested(),W.kind){case 210:if(Dd(W)){A(W);break}if(!m){let R=W.parent;if(o===2&&R.kind===257){let{name:ie}=R;if(ie.kind===79){g.push(ie);break}}}break;case 79:break;case 268:C(W,W.name,Mr(W,1),!1);break;case 269:g.push(W);let Y=W.importClause&&W.importClause.namedBindings;Y&&Y.kind===271?C(W,Y.name,!1,!0):!m&&uS(W)&&P(bP(W));break;case 275:W.exportClause?W.exportClause.kind===277?P(bP(W),!0):g.push(W):x(OBe(W,s));break;case 202:!m&&W.isTypeOf&&!W.qualifier&&w(W)&&P(W.getSourceFile(),!0),g.push(W);break;default:L.failBadSyntaxKind(W,\"Unexpected import kind.\")}}}function A(B){let q=jn(B,oG)||B.getSourceFile();P(q,!!w(B,!0))}function w(B,q=!1){return jn(B,W=>q&&oG(W)?\"quit\":h_(W)&&vt(W.modifiers,c3))}function C(B,q,W,Y){if(o===2)Y||g.push(B);else if(!m){let R=bP(B);L.assert(R.kind===308||R.kind===264),W||IBe(R,q,s)?P(R,!0):P(R)}}function P(B,q=!1){if(L.assert(!m),!d(B)||(v.push(B),!q))return;let Y=s.getMergedSymbol(B.symbol);if(!Y)return;L.assert(!!(Y.flags&1536));let R=F(Y);if(R)for(let ie of R)Mh(ie)||P(bP(ie),!0)}function F(B){return r.get($a(B).toString())}}function CBe(e,t,r,i,o){let s=[],l=[];function f(S,x){s.push([S,x])}if(e)for(let S of e)d(S);return{importSearches:s,singleReferences:l};function d(S){if(S.kind===268){tee(S)&&g(S.name);return}if(S.kind===79){g(S);return}if(S.kind===202){if(S.qualifier){let w=Xd(S.qualifier);w.escapedText===fc(t)&&l.push(w)}else r===2&&l.push(S.argument.literal);return}if(S.moduleSpecifier.kind!==10)return;if(S.kind===275){S.exportClause&&m_(S.exportClause)&&m(S.exportClause);return}let{name:x,namedBindings:A}=S.importClause||{name:void 0,namedBindings:void 0};if(A)switch(A.kind){case 271:g(A.name);break;case 272:(r===0||r===1)&&m(A);break;default:L.assertNever(A)}if(x&&(r===1||r===2)&&(!o||x.escapedText===A7(t))){let w=i.getSymbolAtLocation(x);f(x,w)}}function g(S){r===2&&(!o||v(S.escapedText))&&f(S,i.getSymbolAtLocation(S))}function m(S){if(!!S)for(let x of S.elements){let{name:A,propertyName:w}=x;if(!!v((w||A).escapedText))if(w)l.push(w),(!o||A.escapedText===t.escapedName)&&f(A,i.getSymbolAtLocation(A));else{let C=x.kind===278&&x.propertyName?i.getExportSpecifierLocalTargetSymbol(x):i.getSymbolAtLocation(A);f(A,C)}}}function v(S){return S===t.escapedName||r!==0&&S===\"default\"}}function IBe(e,t,r){let i=r.getSymbolAtLocation(t);return!!MTe(e,o=>{if(!Il(o))return;let{exportClause:s,moduleSpecifier:l}=o;return!l&&s&&m_(s)&&s.elements.some(f=>r.getExportSpecifierLocalTargetSymbol(f)===i)})}function PTe(e,t,r){var i;let o=[],s=e.getTypeChecker();for(let l of t){let f=r.valueDeclaration;if(f?.kind===308){for(let d of l.referencedFiles)e.getSourceFileFromReference(l,d)===f&&o.push({kind:\"reference\",referencingFile:l,ref:d});for(let d of l.typeReferenceDirectives){let g=(i=e.getResolvedTypeReferenceDirectives().get(d.fileName,d.resolutionMode||l.impliedNodeFormat))==null?void 0:i.resolvedTypeReferenceDirective;g!==void 0&&g.resolvedFileName===f.fileName&&o.push({kind:\"reference\",referencingFile:l,ref:d})}}FTe(l,(d,g)=>{s.getSymbolAtLocation(g)===r&&o.push({kind:\"import\",literal:g})})}return o}function LBe(e,t,r){let i=new Map;for(let o of e)r&&r.throwIfCancellationRequested(),FTe(o,(s,l)=>{let f=t.getSymbolAtLocation(l);if(f){let d=$a(f).toString(),g=i.get(d);g||i.set(d,g=[]),g.push(s)}});return i}function MTe(e,t){return mn(e.kind===308?e.statements:e.body.statements,r=>t(r)||oG(r)&&mn(r.body&&r.body.statements,t))}function FTe(e,t){if(e.externalModuleIndicator||e.imports!==void 0)for(let r of e.imports)t(oR(r),r);else MTe(e,r=>{switch(r.kind){case 275:case 269:{let i=r;i.moduleSpecifier&&yo(i.moduleSpecifier)&&t(i,i.moduleSpecifier);break}case 268:{let i=r;tee(i)&&t(i,i.moduleReference.expression);break}}})}function GTe(e,t,r,i){return i?o():o()||s();function o(){var d;let{parent:g}=e,m=g.parent;if(t.exportSymbol)return g.kind===208?((d=t.declarations)==null?void 0:d.some(x=>x===g))&&ar(m)?S(m,!1):void 0:l(t.exportSymbol,f(g));{let x=DBe(g,e);if(x&&Mr(x,1))if(Nl(x)&&x.moduleReference===e){if(i)return;let A=r.getSymbolAtLocation(x.name);return{kind:0,symbol:A}}else return l(t,f(x));else{if(qm(g))return l(t,0);if(pc(g))return v(g);if(pc(m))return v(m);if(ar(g))return S(g,!0);if(ar(m))return S(m,!0);if(Kz(g)||Vz(g))return l(t,0)}}function v(x){if(!x.symbol.parent)return;let A=x.isExportEquals?2:1;return{kind:1,symbol:t,exportInfo:{exportingModuleSymbol:x.symbol.parent,exportKind:A}}}function S(x,A){let w;switch(ic(x)){case 1:w=0;break;case 2:w=2;break;default:return}let C=A?r.getSymbolAtLocation(ule(Ga(x.left,Us))):t;return C&&l(C,w)}}function s(){if(!wBe(e))return;let g=r.getImmediateAliasedSymbol(t);if(!g||(g=RBe(g,r),g.escapedName===\"export=\"&&(g=kBe(g,r),g===void 0)))return;let m=A7(g);if(m===void 0||m===\"default\"||m===t.escapedName)return{kind:0,symbol:g}}function l(d,g){let m=eee(d,g,r);return m&&{kind:1,symbol:d,exportInfo:m}}function f(d){return Mr(d,1024)?1:0}}function kBe(e,t){var r,i;if(e.flags&2097152)return t.getImmediateAliasedSymbol(e);let o=L.checkDefined(e.valueDeclaration);if(pc(o))return(r=zr(o.expression,$p))==null?void 0:r.symbol;if(ar(o))return(i=zr(o.right,$p))==null?void 0:i.symbol;if(Li(o))return o.symbol}function DBe(e,t){let r=wi(e)?e:Wo(e)?EA(e):void 0;return r?e.name!==t||T2(r.parent)?void 0:Bc(r.parent.parent)?r.parent.parent:void 0:e}function wBe(e){let{parent:t}=e;switch(t.kind){case 268:return t.name===e&&tee(t);case 273:return!t.propertyName;case 270:case 271:return L.assert(t.name===e),!0;case 205:return Yn(e)&&N0(t.parent.parent);default:return!1}}function eee(e,t,r){let i=e.parent;if(!i)return;let o=r.getMergedSymbol(i);return UN(o)?{exportingModuleSymbol:o,exportKind:t}:void 0}function RBe(e,t){if(e.declarations)for(let r of e.declarations){if(Mu(r)&&!r.propertyName&&!r.parent.parent.moduleSpecifier)return t.getExportSpecifierLocalTargetSymbol(r)||e;if(br(r)&&Bm(r.expression)&&!pi(r.name))return t.getSymbolAtLocation(r);if(Sf(r)&&ar(r.parent.parent)&&ic(r.parent.parent)===2)return t.getExportSpecifierLocalTargetSymbol(r.name)}return e}function OBe(e,t){return t.getMergedSymbol(bP(e).symbol)}function bP(e){if(e.kind===210)return e.getSourceFile();let{parent:t}=e;return t.kind===308?t:(L.assert(t.kind===265),Ga(t.parent,oG))}function oG(e){return e.kind===264&&e.name.kind===10}function tee(e){return e.moduleReference.kind===280&&e.moduleReference.expression.kind===10}var nee,ree,NBe=gt({\"src/services/importTracker.ts\"(){\"use strict\";Fr(),nee=(e=>(e[e.Named=0]=\"Named\",e[e.Default=1]=\"Default\",e[e.ExportEquals=2]=\"ExportEquals\",e))(nee||{}),ree=(e=>(e[e.Import=0]=\"Import\",e[e.Export=1]=\"Export\",e))(ree||{})}});function Ym(e,t=1){return{kind:t,node:e.name||e,context:PBe(e)}}function BTe(e){return e&&e.kind===void 0}function PBe(e){if(Kl(e))return sE(e);if(!!e.parent){if(!Kl(e.parent)&&!pc(e.parent)){if(Yn(e)){let r=ar(e.parent)?e.parent:Us(e.parent)&&ar(e.parent.parent)&&e.parent.parent.left===e.parent?e.parent.parent:void 0;if(r&&ic(r)!==0)return sE(r)}if(Xm(e.parent)||BS(e.parent))return e.parent.parent;if(GS(e.parent)||J0(e.parent)||gI(e.parent))return e.parent;if(es(e)){let r=sR(e);if(r){let i=jn(r,o=>Kl(o)||ca(o)||TI(o));return Kl(i)?sE(i):i}}let t=jn(e,ts);return t?sE(t.parent):void 0}if(e.parent.name===e||Ec(e.parent)||pc(e.parent)||(tS(e.parent)||Wo(e.parent))&&e.parent.propertyName===e||e.kind===88&&Mr(e.parent,1025))return sE(e.parent)}}function sE(e){if(!!e)switch(e.kind){case 257:return!pu(e.parent)||e.parent.declarations.length!==1?e:Bc(e.parent.parent)?e.parent.parent:IA(e.parent.parent)?sE(e.parent.parent):e.parent;case 205:return sE(e.parent.parent);case 273:return e.parent.parent.parent;case 278:case 271:return e.parent.parent;case 270:case 277:return e.parent;case 223:return Ol(e.parent)?e.parent:e;case 247:case 246:return{start:e.initializer,end:e.expression};case 299:case 300:return qg(e.parent)?sE(jn(e.parent,t=>ar(t)||IA(t))):e;default:return e}}function iee(e,t,r){if(!r)return;let i=BTe(r)?TP(r.start,t,r.end):TP(r,t);return i.start!==e.start||i.length!==e.length?{contextSpan:i}:void 0}function MBe(e,t,r,i,o){let s=Zd(i,o),l={use:1},f=d1.getReferencedSymbolsForNode(o,s,e,r,t,l),d=e.getTypeChecker(),g=d1.getAdjustedNode(s,l),m=FBe(g)?d.getSymbolAtLocation(g):void 0;return!f||!f.length?void 0:Zi(f,({definition:v,references:S})=>v&&{definition:d.runWithCancellationToken(t,x=>UBe(v,x,s)),references:S.map(x=>jBe(x,m))})}function FBe(e){return e.kind===88||!!_R(e)||pR(e)||e.kind===135&&Ec(e.parent)}function GBe(e,t,r,i,o){let s=Zd(i,o),l,f=UTe(e,t,r,s,o);if(s.parent.kind===208||s.parent.kind===205||s.parent.kind===209||s.kind===106)l=f&&[...f];else if(f){let g=HU(f),m=new Map;for(;!g.isEmpty();){let v=g.dequeue();if(!U_(m,zo(v.node)))continue;l=Sn(l,v);let S=UTe(e,t,r,v.node,v.node.pos);S&&g.enqueue(...S)}}let d=e.getTypeChecker();return on(l,g=>WBe(g,d))}function UTe(e,t,r,i,o){if(i.kind===308)return;let s=e.getTypeChecker();if(i.parent.kind===300){let l=[];return d1.getReferenceEntriesForShorthandPropertyAssignment(i,s,f=>l.push(Ym(f))),l}else if(i.kind===106||Pu(i.parent)){let l=s.getSymbolAtLocation(i);return l.valueDeclaration&&[Ym(l.valueDeclaration)]}else return VTe(o,i,e,r,t,{implementations:!0,use:1})}function BBe(e,t,r,i,o,s,l){return on(jTe(d1.getReferencedSymbolsForNode(o,i,e,r,t,s)),f=>l(f,i,e.getTypeChecker()))}function VTe(e,t,r,i,o,s={},l=new Set(i.map(f=>f.fileName))){return jTe(d1.getReferencedSymbolsForNode(e,t,r,i,o,s,l))}function jTe(e){return e&&Uo(e,t=>t.references)}function UBe(e,t,r){let i=(()=>{switch(e.type){case 0:{let{symbol:m}=e,{displayParts:v,kind:S}=HTe(m,t,r),x=v.map(C=>C.text).join(\"\"),A=m.declarations&&Sl(m.declarations),w=A?sa(A)||A:r;return{...EP(w),name:x,kind:S,displayParts:v,context:sE(A)}}case 1:{let{node:m}=e;return{...EP(m),name:m.text,kind:\"label\",displayParts:[Qu(m.text,17)]}}case 2:{let{node:m}=e,v=Xa(m.kind);return{...EP(m),name:v,kind:\"keyword\",displayParts:[{text:v,kind:\"keyword\"}]}}case 3:{let{node:m}=e,v=t.getSymbolAtLocation(m),S=v&&$g.getSymbolDisplayPartsDocumentationAndSymbolKind(t,v,m.getSourceFile(),t1(m),m).displayParts||[ef(\"this\")];return{...EP(m),name:\"this\",kind:\"var\",displayParts:S}}case 4:{let{node:m}=e;return{...EP(m),name:m.text,kind:\"var\",displayParts:[Qu(Qc(m),8)]}}case 5:return{textSpan:lv(e.reference),sourceFile:e.file,name:e.reference.fileName,kind:\"string\",displayParts:[Qu(`\"${e.reference.fileName}\"`,8)]};default:return L.assertNever(e)}})(),{sourceFile:o,textSpan:s,name:l,kind:f,displayParts:d,context:g}=i;return{containerKind:\"\",containerName:\"\",fileName:o.fileName,kind:f,name:l,textSpan:s,displayParts:d,...iee(s,o,g)}}function EP(e){let t=e.getSourceFile();return{sourceFile:t,textSpan:TP(ts(e)?e.expression:e,t)}}function HTe(e,t,r){let i=d1.getIntersectingMeaningFromDeclarations(r,e),o=e.declarations&&Sl(e.declarations)||r,{displayParts:s,symbolKind:l}=$g.getSymbolDisplayPartsDocumentationAndSymbolKind(t,e,o.getSourceFile(),o,o,i);return{displayParts:s,kind:l}}function VBe(e,t,r,i){return{...sG(e),...i&&HBe(e,t,r)}}function jBe(e,t){let r=WTe(e);return t?{...r,isDefinition:e.kind!==0&&JTe(e.node,t)}:r}function WTe(e){let t=sG(e);if(e.kind===0)return{...t,isWriteAccess:!1};let{kind:r,node:i}=e;return{...t,isWriteAccess:zTe(i),isInString:r===2?!0:void 0}}function sG(e){if(e.kind===0)return{textSpan:e.textSpan,fileName:e.fileName};{let t=e.node.getSourceFile(),r=TP(e.node,t);return{textSpan:r,fileName:t.fileName,...iee(r,t,e.context)}}}function HBe(e,t,r){if(e.kind!==0&&Re(t)){let{node:i,kind:o}=e,s=i.parent,l=t.text,f=Sf(s);if(f||HN(s)&&s.name===i&&s.dotDotDotToken===void 0){let d={prefixText:l+\": \"},g={suffixText:\": \"+l};if(o===3)return d;if(o===4)return g;if(f){let m=s.parent;return rs(m)&&ar(m.parent)&&Bm(m.parent.left)?d:g}else return d}else if($u(s)&&!s.propertyName){let d=Mu(t.parent)?r.getExportSpecifierLocalTargetSymbol(t.parent):r.getSymbolAtLocation(t);return ya(d.declarations,s)?{prefixText:l+\" as \"}:Cp}else if(Mu(s)&&!s.propertyName)return t===e.node||r.getSymbolAtLocation(t)===r.getSymbolAtLocation(e.node)?{prefixText:l+\" as \"}:{suffixText:\" as \"+l}}return Cp}function WBe(e,t){let r=sG(e);if(e.kind!==0){let{node:i}=e;return{...r,...zBe(i,t)}}else return{...r,kind:\"\",displayParts:[]}}function zBe(e,t){let r=t.getSymbolAtLocation(Kl(e)&&e.name?e.name:e);return r?HTe(r,t,e):e.kind===207?{kind:\"interface\",displayParts:[Yl(20),ef(\"object literal\"),Yl(21)]}:e.kind===228?{kind:\"local class\",displayParts:[Yl(20),ef(\"anonymous local class\"),Yl(21)]}:{kind:aE(e),displayParts:[]}}function JBe(e){let t=sG(e);if(e.kind===0)return{fileName:t.fileName,span:{textSpan:t.textSpan,kind:\"reference\"}};let r=zTe(e.node),i={textSpan:t.textSpan,kind:r?\"writtenReference\":\"reference\",isInString:e.kind===2?!0:void 0,...t.contextSpan&&{contextSpan:t.contextSpan}};return{fileName:t.fileName,span:i}}function TP(e,t,r){let i=e.getStart(t),o=(r||e).getEnd();return es(e)&&o-i>2&&(L.assert(r===void 0),i+=1,o-=1),Wc(i,o)}function aee(e){return e.kind===0?e.textSpan:TP(e.node,e.node.getSourceFile())}function zTe(e){let t=_R(e);return!!t&&KBe(t)||e.kind===88||$I(e)}function JTe(e,t){var r;if(!t)return!1;let i=_R(e)||(e.kind===88?e.parent:pR(e)||e.kind===135&&Ec(e.parent)?e.parent.parent:void 0),o=i&&ar(i)?i.left:void 0;return!!(i&&((r=t.declarations)==null?void 0:r.some(s=>s===i||s===o)))}function KBe(e){if(e.flags&16777216)return!0;switch(e.kind){case 223:case 205:case 260:case 228:case 88:case 263:case 302:case 278:case 270:case 268:case 273:case 261:case 341:case 349:case 288:case 264:case 267:case 271:case 277:case 166:case 300:case 262:case 165:return!0;case 299:return!qg(e.parent);case 259:case 215:case 173:case 171:case 174:case 175:return!!e.body;case 257:case 169:return!!e.initializer||T2(e.parent);case 170:case 168:case 351:case 344:return!1;default:return L.failBadSyntaxKind(e)}}var oee,see,cee,d1,qBe=gt({\"src/services/findAllReferences.ts\"(){\"use strict\";Fr(),KTe(),oee=(e=>(e[e.Symbol=0]=\"Symbol\",e[e.Label=1]=\"Label\",e[e.Keyword=2]=\"Keyword\",e[e.This=3]=\"This\",e[e.String=4]=\"String\",e[e.TripleSlashReference=5]=\"TripleSlashReference\",e))(oee||{}),see=(e=>(e[e.Span=0]=\"Span\",e[e.Node=1]=\"Node\",e[e.StringLiteral=2]=\"StringLiteral\",e[e.SearchedLocalFoundProperty=3]=\"SearchedLocalFoundProperty\",e[e.SearchedPropertyFoundLocal=4]=\"SearchedPropertyFoundLocal\",e))(see||{}),cee=(e=>(e[e.Other=0]=\"Other\",e[e.References=1]=\"References\",e[e.Rename=2]=\"Rename\",e))(cee||{}),(e=>{function t(Se,at,Tt,ve,nt,ce={},$=new Set(ve.map(ue=>ue.fileName))){var ue,G,Oe;if(at=r(at,ce),Li(at)){let ae=Ak.getReferenceAtPosition(at,Se,Tt);if(!ae?.file)return;let rt=Tt.getTypeChecker().getMergedSymbol(ae.file.symbol);if(rt)return g(Tt,rt,!1,ve,$);let Ot=Tt.getFileIncludeReasons();return Ot?[{definition:{type:5,reference:ae.reference,file:at},references:o(ae.file,Ot,Tt)||Je}]:void 0}if(!ce.implementations){let ae=v(at,ve,nt);if(ae)return ae}let je=Tt.getTypeChecker(),Ge=je.getSymbolAtLocation(Ec(at)&&at.parent.name||at);if(!Ge){if(!ce.implementations&&es(at)){if(C7(at)){let ae=Tt.getFileIncludeReasons(),rt=(Oe=(G=(ue=at.getSourceFile().resolvedModules)==null?void 0:ue.get(at.text,H_(at.getSourceFile(),at)))==null?void 0:G.resolvedModule)==null?void 0:Oe.resolvedFileName,Ot=rt?Tt.getSourceFile(rt):void 0;if(Ot)return[{definition:{type:4,node:at},references:o(Ot,ae,Tt)||Je}]}return pt(at,ve,je,nt)}return}if(Ge.escapedName===\"export=\")return g(Tt,Ge.parent,!1,ve,$);let kt=l(Ge,Tt,ve,nt,ce,$);if(kt&&!(Ge.flags&33554432))return kt;let Kt=s(at,Ge,je),ln=Kt&&l(Kt,Tt,ve,nt,ce,$),ir=S(Ge,at,ve,$,je,nt,ce);return f(Tt,kt,ir,ln)}e.getReferencedSymbolsForNode=t;function r(Se,at){return at.use===1?Se=zX(Se):at.use===2&&(Se=_7(Se)),Se}e.getAdjustedNode=r;function i(Se,at,Tt,ve=new Set(Tt.map(nt=>nt.fileName))){var nt,ce;let $=(nt=at.getSourceFile(Se))==null?void 0:nt.symbol;if($)return((ce=g(at,$,!1,Tt,ve)[0])==null?void 0:ce.references)||Je;let ue=at.getFileIncludeReasons(),G=at.getSourceFile(Se);return G&&ue&&o(G,ue,at)||Je}e.getReferencesForFileName=i;function o(Se,at,Tt){let ve,nt=at.get(Se.path)||Je;for(let ce of nt)if(vb(ce)){let $=Tt.getSourceFileByPath(ce.file),ue=$L(Tt.getSourceFileByPath,ce);G2(ue)&&(ve=Sn(ve,{kind:0,fileName:$.fileName,textSpan:lv(ue)}))}return ve}function s(Se,at,Tt){if(Se.parent&&yO(Se.parent)){let ve=Tt.getAliasedSymbol(at),nt=Tt.getMergedSymbol(ve);if(ve!==nt)return nt}}function l(Se,at,Tt,ve,nt,ce){let $=Se.flags&1536&&Se.declarations&&wr(Se.declarations,Li);if(!$)return;let ue=Se.exports.get(\"export=\"),G=g(at,Se,!!ue,Tt,ce);if(!ue||!ce.has($.fileName))return G;let Oe=at.getTypeChecker();return Se=wd(ue,Oe),f(at,G,S(Se,void 0,Tt,ce,Oe,ve,nt))}function f(Se,...at){let Tt;for(let ve of at)if(!(!ve||!ve.length)){if(!Tt){Tt=ve;continue}for(let nt of ve){if(!nt.definition||nt.definition.type!==0){Tt.push(nt);continue}let ce=nt.definition.symbol,$=Yc(Tt,G=>!!G.definition&&G.definition.type===0&&G.definition.symbol===ce);if($===-1){Tt.push(nt);continue}let ue=Tt[$];Tt[$]={definition:ue.definition,references:ue.references.concat(nt.references).sort((G,Oe)=>{let je=d(Se,G),Ge=d(Se,Oe);if(je!==Ge)return Es(je,Ge);let kt=aee(G),Kt=aee(Oe);return kt.start!==Kt.start?Es(kt.start,Kt.start):Es(kt.length,Kt.length)})}}}return Tt}function d(Se,at){let Tt=at.kind===0?Se.getSourceFile(at.fileName):at.node.getSourceFile();return Se.getSourceFiles().indexOf(Tt)}function g(Se,at,Tt,ve,nt){L.assert(!!at.valueDeclaration);let ce=Zi(PTe(Se,ve,at),ue=>{if(ue.kind===\"import\"){let G=ue.literal.parent;if(mb(G)){let Oe=Ga(G.parent,Mh);if(Tt&&!Oe.qualifier)return}return Ym(ue.literal)}else return{kind:0,fileName:ue.referencingFile.fileName,textSpan:lv(ue.ref)}});if(at.declarations)for(let ue of at.declarations)switch(ue.kind){case 308:break;case 264:nt.has(ue.getSourceFile().fileName)&&ce.push(Ym(ue.name));break;default:L.assert(!!(at.flags&33554432),\"Expected a module symbol to be declared by a SourceFile or ModuleDeclaration.\")}let $=at.exports.get(\"export=\");if($?.declarations)for(let ue of $.declarations){let G=ue.getSourceFile();if(nt.has(G.fileName)){let Oe=ar(ue)&&br(ue.left)?ue.left.expression:pc(ue)?L.checkDefined(Yo(ue,93,G)):sa(ue)||ue;ce.push(Ym(Oe))}}return ce.length?[{definition:{type:0,symbol:at},references:ce}]:Je}function m(Se){return Se.kind===146&&OS(Se.parent)&&Se.parent.operator===146}function v(Se,at,Tt){if(ak(Se.kind))return Se.kind===114&&PS(Se.parent)||Se.kind===146&&!m(Se)?void 0:we(at,Se.kind,Tt,Se.kind===146?m:void 0);if(PA(Se.parent)&&Se.parent.name===Se)return Ve(at,Tt);if(kS(Se)&&oc(Se.parent))return[{definition:{type:2,node:Se},references:[Ym(Se)]}];if(wN(Se)){let ve=s7(Se.parent,Se.text);return ve&&ge(ve.parent,ve)}else if(MX(Se))return ge(Se.parent,Se);if(W2(Se))return gr(Se,at,Tt);if(Se.kind===106)return Ni(Se)}function S(Se,at,Tt,ve,nt,ce,$){let ue=at&&w(Se,at,nt,!Cr($))||Se,G=at?hi(at,ue):7,Oe=[],je=new F(Tt,ve,at?A(at):0,nt,ce,G,$,Oe),Ge=!Cr($)||!ue.declarations?void 0:wr(ue.declarations,Mu);if(Ge)Be(Ge.name,ue,Ge,je.createSearch(at,Se,void 0),je,!0,!0);else if(at&&at.kind===88&&ue.escapedName===\"default\"&&ue.parent)ct(at,ue,je),B(at,ue,{exportingModuleSymbol:ue.parent,exportKind:1},je);else{let kt=je.createSearch(at,ue,void 0,{allSearchSymbols:at?nn(ue,at,nt,$.use===2,!!$.providePrefixAndSuffixTextForRename,!!$.implementations):[ue]});x(ue,je,kt)}return Oe}function x(Se,at,Tt){let ve=Q(Se);if(ve)Pe(ve,ve.getSourceFile(),Tt,at,!(Li(ve)&&!ya(at.sourceFiles,ve)));else for(let nt of at.sourceFiles)at.cancellationToken.throwIfCancellationRequested(),R(nt,Tt,at)}function A(Se){switch(Se.kind){case 173:case 135:return 1;case 79:if(Yr(Se.parent))return L.assert(Se.parent.name===Se),2;default:return 0}}function w(Se,at,Tt,ve){let{parent:nt}=at;return Mu(nt)&&ve?Ne(at,Se,nt,Tt):ks(Se.declarations,ce=>{if(!ce.parent){if(Se.flags&33554432)return;L.fail(`Unexpected symbol at ${L.formatSyntaxKind(at.kind)}: ${L.formatSymbol(Se)}`)}return Rd(ce.parent)&&wS(ce.parent.parent)?Tt.getPropertyOfType(Tt.getTypeFromTypeNode(ce.parent.parent),Se.name):void 0})}let C;(Se=>{Se[Se.None=0]=\"None\",Se[Se.Constructor=1]=\"Constructor\",Se[Se.Class=2]=\"Class\"})(C||(C={}));function P(Se){if(!(Se.flags&33555968))return;let at=Se.declarations&&wr(Se.declarations,Tt=>!Li(Tt)&&!Tc(Tt));return at&&at.symbol}class F{constructor(at,Tt,ve,nt,ce,$,ue,G){this.sourceFiles=at,this.sourceFilesSet=Tt,this.specialSearchKind=ve,this.checker=nt,this.cancellationToken=ce,this.searchMeaning=$,this.options=ue,this.result=G,this.inheritsFromCache=new Map,this.markSeenContainingTypeReference=z2(),this.markSeenReExportRHS=z2(),this.symbolIdToReferences=[],this.sourceFileToSeenSymbols=[]}includesSourceFile(at){return this.sourceFilesSet.has(at.fileName)}getImportSearches(at,Tt){return this.importTracker||(this.importTracker=ZZ(this.sourceFiles,this.sourceFilesSet,this.checker,this.cancellationToken)),this.importTracker(at,Tt,this.options.use===2)}createSearch(at,Tt,ve,nt={}){let{text:ce=l_(fc(ZA(Tt)||P(Tt)||Tt)),allSearchSymbols:$=[Tt]}=nt,ue=Bs(ce),G=this.options.implementations&&at?dr(at,Tt,this.checker):void 0;return{symbol:Tt,comingFrom:ve,text:ce,escapedText:ue,parents:G,allSearchSymbols:$,includes:Oe=>ya($,Oe)}}referenceAdder(at){let Tt=$a(at),ve=this.symbolIdToReferences[Tt];return ve||(ve=this.symbolIdToReferences[Tt]=[],this.result.push({definition:{type:0,symbol:at},references:ve})),(nt,ce)=>ve.push(Ym(nt,ce))}addStringOrCommentReference(at,Tt){this.result.push({definition:void 0,references:[{kind:0,fileName:at,textSpan:Tt}]})}markSearchedSymbols(at,Tt){let ve=zo(at),nt=this.sourceFileToSeenSymbols[ve]||(this.sourceFileToSeenSymbols[ve]=new Set),ce=!1;for(let $ of Tt)ce=_0(nt,$a($))||ce;return ce}}function B(Se,at,Tt,ve){let{importSearches:nt,singleReferences:ce,indirectUsers:$}=ve.getImportSearches(at,Tt);if(ce.length){let ue=ve.referenceAdder(at);for(let G of ce)W(G,ve)&&ue(G)}for(let[ue,G]of nt)ke(ue.getSourceFile(),ve.createSearch(ue,G,1),ve);if($.length){let ue;switch(Tt.exportKind){case 0:ue=ve.createSearch(Se,at,1);break;case 1:ue=ve.options.use===2?void 0:ve.createSearch(Se,at,1,{text:\"default\"});break;case 2:break}if(ue)for(let G of $)R(G,ue,ve)}}function q(Se,at,Tt,ve,nt,ce,$,ue){let G=ZZ(Se,new Set(Se.map(kt=>kt.fileName)),at,Tt),{importSearches:Oe,indirectUsers:je,singleReferences:Ge}=G(ve,{exportKind:$?1:0,exportingModuleSymbol:nt},!1);for(let[kt]of Oe)ue(kt);for(let kt of Ge)Re(kt)&&Mh(kt.parent)&&ue(kt);for(let kt of je)for(let Kt of le(kt,$?\"default\":ce)){let ln=at.getSymbolAtLocation(Kt),ir=vt(ln?.declarations,ae=>!!zr(ae,pc));Re(Kt)&&!tS(Kt.parent)&&(ln===ve||ir)&&ue(Kt)}}e.eachExportReference=q;function W(Se,at){return Ce(Se,at)?at.options.use!==2?!0:Re(Se)?!(tS(Se.parent)&&Se.escapedText===\"default\"):!1:!1}function Y(Se,at){if(!!Se.declarations)for(let Tt of Se.declarations){let ve=Tt.getSourceFile();ke(ve,at.createSearch(Tt,Se,0),at,at.includesSourceFile(ve))}}function R(Se,at,Tt){p$(Se).get(at.escapedText)!==void 0&&ke(Se,at,Tt)}function ie(Se,at){return qg(Se.parent.parent)?at.getPropertySymbolOfDestructuringAssignment(Se):void 0}function Q(Se){let{declarations:at,flags:Tt,parent:ve,valueDeclaration:nt}=Se;if(nt&&(nt.kind===215||nt.kind===228))return nt;if(!at)return;if(Tt&8196){let ue=wr(at,G=>cd(G,8)||xu(G));return ue?cb(ue,260):void 0}if(at.some(HN))return;let ce=ve&&!(Se.flags&262144);if(ce&&!(UN(ve)&&!ve.globalExports))return;let $;for(let ue of at){let G=t1(ue);if($&&$!==G||!G||G.kind===308&&!kd(G))return;if($=G,ms($)){let Oe;for(;Oe=MH($);)$=Oe}}return ce?$.getSourceFile():$}function fe(Se,at,Tt,ve=Tt){return Z(Se,at,Tt,()=>!0,ve)||!1}e.isSymbolReferencedInFile=fe;function Z(Se,at,Tt,ve,nt=Tt){let ce=Ad(Se.parent,Se.parent.parent)?Vo(at.getSymbolsOfParameterPropertyDeclaration(Se.parent,Se.text)):at.getSymbolAtLocation(Se);if(!!ce)for(let $ of le(Tt,ce.name,nt)){if(!Re($)||$===Se||$.escapedText!==Se.escapedText)continue;let ue=at.getSymbolAtLocation($);if(ue===ce||at.getShorthandAssignmentValueSymbol($.parent)===ce||Mu($.parent)&&Ne($,ue,$.parent,at)===ce){let G=ve($);if(G)return G}}}e.eachSymbolReferenceInFile=Z;function U(Se,at){return Pr(le(at,Se),nt=>!!_R(nt)).reduce((nt,ce)=>{let $=ve(ce);return!vt(nt.declarationNames)||$===nt.depth?(nt.declarationNames.push(ce),nt.depth=$):$<nt.depth&&(nt.declarationNames=[ce],nt.depth=$),nt},{depth:1/0,declarationNames:[]}).declarationNames;function ve(nt){let ce=0;for(;nt;)nt=t1(nt),ce++;return ce}}e.getTopMostDeclarationNamesInFile=U;function re(Se,at,Tt,ve){if(!Se.name||!Re(Se.name))return!1;let nt=L.checkDefined(Tt.getSymbolAtLocation(Se.name));for(let ce of at)for(let $ of le(ce,nt.name)){if(!Re($)||$===Se.name||$.escapedText!==Se.name.escapedText)continue;let ue=o7($),G=Pa(ue.parent)&&ue.parent.expression===ue?ue.parent:void 0,Oe=Tt.getSymbolAtLocation($);if(Oe&&Tt.getRootSymbols(Oe).some(je=>je===nt)&&ve($,G))return!0}return!1}e.someSignatureUsage=re;function le(Se,at,Tt=Se){return _e(Se,at,Tt).map(ve=>Zd(Se,ve))}function _e(Se,at,Tt=Se){let ve=[];if(!at||!at.length)return ve;let nt=Se.text,ce=nt.length,$=at.length,ue=nt.indexOf(at,Tt.pos);for(;ue>=0&&!(ue>Tt.end);){let G=ue+$;(ue===0||!tb(nt.charCodeAt(ue-1),99))&&(G===ce||!tb(nt.charCodeAt(G),99))&&ve.push(ue),ue=nt.indexOf(at,ue+$+1)}return ve}function ge(Se,at){let Tt=Se.getSourceFile(),ve=at.text,nt=Zi(le(Tt,ve,Se),ce=>ce===at||wN(ce)&&s7(ce,ve)===at?Ym(ce):void 0);return[{definition:{type:1,node:at},references:nt}]}function X(Se,at){switch(Se.kind){case 80:if(gb(Se.parent))return!0;case 79:return Se.text.length===at.length;case 14:case 10:{let Tt=Se;return(c7(Tt)||UX(Se)||vhe(Se)||Pa(Se.parent)&&cS(Se.parent)&&Se.parent.arguments[1]===Se)&&Tt.text.length===at.length}case 8:return c7(Se)&&Se.text.length===at.length;case 88:return at.length===7;default:return!1}}function Ve(Se,at){let Tt=Uo(Se,ve=>(at.throwIfCancellationRequested(),Zi(le(ve,\"meta\",ve),nt=>{let ce=nt.parent;if(PA(ce))return Ym(ce)})));return Tt.length?[{definition:{type:2,node:Tt[0].node},references:Tt}]:void 0}function we(Se,at,Tt,ve){let nt=Uo(Se,ce=>(Tt.throwIfCancellationRequested(),Zi(le(ce,Xa(at),ce),$=>{if($.kind===at&&(!ve||ve($)))return Ym($)})));return nt.length?[{definition:{type:2,node:nt[0].node},references:nt}]:void 0}function ke(Se,at,Tt,ve=!0){return Tt.cancellationToken.throwIfCancellationRequested(),Pe(Se,Se,at,Tt,ve)}function Pe(Se,at,Tt,ve,nt){if(!!ve.markSearchedSymbols(at,Tt.allSearchSymbols))for(let ce of _e(at,Tt.text,Se))Ie(at,ce,Tt,ve,nt)}function Ce(Se,at){return!!(e1(Se)&at.searchMeaning)}function Ie(Se,at,Tt,ve,nt){let ce=Zd(Se,at);if(!X(ce,Tt.text)){!ve.options.implementations&&(ve.options.findInStrings&&r1(Se,at)||ve.options.findInComments&&Ghe(Se,at))&&ve.addStringOrCommentReference(Se.fileName,il(at,Tt.text.length));return}if(!Ce(ce,ve))return;let $=ve.checker.getSymbolAtLocation(ce);if(!$)return;let ue=ce.parent;if($u(ue)&&ue.propertyName===ce)return;if(Mu(ue)){L.assert(ce.kind===79),Be(ce,$,ue,Tt,ve,nt);return}let G=Kn(Tt,$,ce,ve);if(!G){_t($,Tt,ve);return}switch(ve.specialSearchKind){case 0:nt&&ct(ce,G,ve);break;case 1:Rt(ce,Se,Tt,ve);break;case 2:We(ce,Tt,ve);break;default:L.assertNever(ve.specialSearchKind)}Yn(ce)&&Wo(ce.parent)&&N0(ce.parent.parent.parent)&&($=ce.parent.symbol,!$)||Ye(ce,$,Tt,ve)}function Be(Se,at,Tt,ve,nt,ce,$){L.assert(!$||!!nt.options.providePrefixAndSuffixTextForRename,\"If alwaysGetReferences is true, then prefix/suffix text must be enabled\");let{parent:ue,propertyName:G,name:Oe}=Tt,je=ue.parent,Ge=Ne(Se,at,Tt,nt.checker);if(!$&&!ve.includes(Ge))return;if(G?Se===G?(je.moduleSpecifier||kt(),ce&&nt.options.use!==2&&nt.markSeenReExportRHS(Oe)&&ct(Oe,L.checkDefined(Tt.symbol),nt)):nt.markSeenReExportRHS(Se)&&kt():nt.options.use===2&&Oe.escapedText===\"default\"||kt(),!Cr(nt.options)||$){let ln=Se.escapedText===\"default\"||Tt.name.escapedText===\"default\"?1:0,ir=L.checkDefined(Tt.symbol),ae=eee(ir,ln,nt.checker);ae&&B(Se,ir,ae,nt)}if(ve.comingFrom!==1&&je.moduleSpecifier&&!G&&!Cr(nt.options)){let Kt=nt.checker.getExportSpecifierLocalTargetSymbol(Tt);Kt&&Y(Kt,nt)}function kt(){ce&&ct(Se,Ge,nt)}}function Ne(Se,at,Tt,ve){return Le(Se,Tt)&&ve.getExportSpecifierLocalTargetSymbol(Tt)||at}function Le(Se,at){let{parent:Tt,propertyName:ve,name:nt}=at;return L.assert(ve===Se||nt===Se),ve?ve===Se:!Tt.parent.moduleSpecifier}function Ye(Se,at,Tt,ve){let nt=GTe(Se,at,ve.checker,Tt.comingFrom===1);if(!nt)return;let{symbol:ce}=nt;nt.kind===0?Cr(ve.options)||Y(ce,ve):B(Se,ce,nt.exportInfo,ve)}function _t({flags:Se,valueDeclaration:at},Tt,ve){let nt=ve.checker.getShorthandAssignmentValueSymbol(at),ce=at&&sa(at);!(Se&33554432)&&ce&&Tt.includes(nt)&&ct(ce,nt,ve)}function ct(Se,at,Tt){let{kind:ve,symbol:nt}=\"kind\"in at?at:{kind:void 0,symbol:at};if(Tt.options.use===2&&Se.kind===88)return;let ce=Tt.referenceAdder(nt);Tt.options.implementations?_n(Se,ce,Tt):ce(Se,ve)}function Rt(Se,at,Tt,ve){ek(Se)&&ct(Se,Tt.symbol,ve);let nt=()=>ve.referenceAdder(Tt.symbol);if(Yr(Se.parent))L.assert(Se.kind===88||Se.parent.name===Se),qe(Tt.symbol,at,nt());else{let ce=En(Se);ce&&(Qt(ce,nt()),kn(ce,ve))}}function We(Se,at,Tt){ct(Se,at.symbol,Tt);let ve=Se.parent;if(Tt.options.use===2||!Yr(ve))return;L.assert(ve.name===Se);let nt=Tt.referenceAdder(at.symbol);for(let ce of ve.members)!(AA(ce)&&Ca(ce))||ce.body&&ce.body.forEachChild(function $(ue){ue.kind===108?nt(ue):!Ia(ue)&&!Yr(ue)&&ue.forEachChild($)})}function qe(Se,at,Tt){let ve=zt(Se);if(ve&&ve.declarations)for(let nt of ve.declarations){let ce=Yo(nt,135,at);L.assert(nt.kind===173&&!!ce),Tt(ce)}Se.exports&&Se.exports.forEach(nt=>{let ce=nt.valueDeclaration;if(ce&&ce.kind===171){let $=ce.body;$&&Ht($,108,ue=>{ek(ue)&&Tt(ue)})}})}function zt(Se){return Se.members&&Se.members.get(\"__constructor\")}function Qt(Se,at){let Tt=zt(Se.symbol);if(!!(Tt&&Tt.declarations))for(let ve of Tt.declarations){L.assert(ve.kind===173);let nt=ve.body;nt&&Ht(nt,106,ce=>{NX(ce)&&at(ce)})}}function tn(Se){return!!zt(Se.symbol)}function kn(Se,at){if(tn(Se))return;let Tt=Se.symbol,ve=at.createSearch(void 0,Tt,void 0);x(Tt,at,ve)}function _n(Se,at,Tt){if(Rh(Se)&&ri(Se.parent)){at(Se);return}if(Se.kind!==79)return;Se.parent.kind===300&&gn(Se,Tt.checker,at);let ve=Gt(Se);if(ve){at(ve);return}let nt=jn(Se,ue=>!Yu(ue.parent)&&!bi(ue.parent)&&!pT(ue.parent)),ce=nt.parent;if(f6(ce)&&ce.type===nt&&Tt.markSeenContainingTypeReference(ce))if(Jy(ce))$(ce.initializer);else if(Ia(ce)&&ce.body){let ue=ce.body;ue.kind===238?bT(ue,G=>{G.expression&&$(G.expression)}):$(ue)}else mT(ce)&&$(ce.expression);function $(ue){$n(ue)&&at(ue)}}function Gt(Se){return Re(Se)||br(Se)?Gt(Se.parent):Vg(Se)?zr(Se.parent.parent,Yr):void 0}function $n(Se){switch(Se.kind){case 214:return $n(Se.expression);case 216:case 215:case 207:case 228:case 206:return!0;default:return!1}}function ui(Se,at,Tt,ve){if(Se===at)return!0;let nt=$a(Se)+\",\"+$a(at),ce=Tt.get(nt);if(ce!==void 0)return ce;Tt.set(nt,!1);let $=!!Se.declarations&&Se.declarations.some(ue=>PI(ue).some(G=>{let Oe=ve.getTypeAtLocation(G);return!!Oe&&!!Oe.symbol&&ui(Oe.symbol,at,Tt,ve)}));return Tt.set(nt,$),$}function Ni(Se){let at=zw(Se,!1);if(!at)return;let Tt=32;switch(at.kind){case 169:case 168:case 171:case 170:case 173:case 174:case 175:Tt&=Yy(at),at=at.parent;break;default:return}let ve=at.getSourceFile(),nt=Zi(le(ve,\"super\",at),ce=>{if(ce.kind!==106)return;let $=zw(ce,!1);return $&&Ca($)===!!Tt&&$.parent.symbol===at.symbol?Ym(ce):void 0});return[{definition:{type:0,symbol:at.symbol},references:nt}]}function Pi(Se){return Se.kind===79&&Se.parent.kind===166&&Se.parent.name===Se}function gr(Se,at,Tt){let ve=Ku(Se,!1,!1),nt=32;switch(ve.kind){case 171:case 170:if(o_(ve)){nt&=Yy(ve),ve=ve.parent;break}case 169:case 168:case 173:case 174:case 175:nt&=Yy(ve),ve=ve.parent;break;case 308:if(Lc(ve)||Pi(Se))return;case 259:case 215:break;default:return}let ce=Uo(ve.kind===308?at:[ve.getSourceFile()],ue=>(Tt.throwIfCancellationRequested(),le(ue,\"this\",Li(ve)?ue:ve).filter(G=>{if(!W2(G))return!1;let Oe=Ku(G,!1,!1);if(!$p(Oe))return!1;switch(ve.kind){case 215:case 259:return ve.symbol===Oe.symbol;case 171:case 170:return o_(ve)&&ve.symbol===Oe.symbol;case 228:case 260:case 207:return Oe.parent&&$p(Oe.parent)&&ve.symbol===Oe.parent.symbol&&Ca(Oe)===!!nt;case 308:return Oe.kind===308&&!Lc(Oe)&&!Pi(G)}}))).map(ue=>Ym(ue)),$=ks(ce,ue=>ha(ue.node.parent)?ue.node:void 0);return[{definition:{type:3,node:$||Se},references:ce}]}function pt(Se,at,Tt,ve){let nt=f7(Se,Tt),ce=Uo(at,$=>(ve.throwIfCancellationRequested(),Zi(le($,Se.text),ue=>{if(es(ue)&&ue.text===Se.text)if(nt){let G=f7(ue,Tt);if(nt!==Tt.getStringType()&&nt===G)return Ym(ue,2)}else return LS(ue)&&!wT(ue,$)?void 0:Ym(ue,2)})));return[{definition:{type:4,node:Se},references:ce}]}function nn(Se,at,Tt,ve,nt,ce){let $=[];return Dt(Se,at,Tt,ve,!(ve&&nt),(ue,G,Oe)=>{Oe&&An(Se)!==An(Oe)&&(Oe=void 0),$.push(Oe||G||ue)},()=>!ce),$}function Dt(Se,at,Tt,ve,nt,ce,$){let ue=rP(at);if(ue){let ln=Tt.getShorthandAssignmentValueSymbol(at.parent);if(ln&&ve)return ce(ln,void 0,void 0,3);let ir=Tt.getContextualType(ue.parent),ae=ir&&ks(_5(ue,Tt,ir,!0),oe=>kt(oe,4));if(ae)return ae;let rt=ie(at,Tt),Ot=rt&&ce(rt,void 0,void 0,4);if(Ot)return Ot;let Ke=ln&&ce(ln,void 0,void 0,3);if(Ke)return Ke}let G=s(at,Se,Tt);if(G){let ln=ce(G,void 0,void 0,1);if(ln)return ln}let Oe=kt(Se);if(Oe)return Oe;if(Se.valueDeclaration&&Ad(Se.valueDeclaration,Se.valueDeclaration.parent)){let ln=Tt.getSymbolsOfParameterPropertyDeclaration(Ga(Se.valueDeclaration,ha),Se.name);return L.assert(ln.length===2&&!!(ln[0].flags&1)&&!!(ln[1].flags&4)),kt(Se.flags&1?ln[1]:ln[0])}let je=nc(Se,278);if(!ve||je&&!je.propertyName){let ln=je&&Tt.getExportSpecifierLocalTargetSymbol(je);if(ln){let ir=ce(ln,void 0,void 0,1);if(ir)return ir}}if(!ve){let ln;return nt?ln=HN(at.parent)?I7(Tt,at.parent):void 0:ln=Kt(Se,Tt),ln&&kt(ln,4)}if(L.assert(ve),nt){let ln=Kt(Se,Tt);return ln&&kt(ln,4)}function kt(ln,ir){return ks(Tt.getRootSymbols(ln),ae=>ce(ln,ae,void 0,ir)||(ae.parent&&ae.parent.flags&96&&$(ae)?pn(ae.parent,ae.name,Tt,rt=>ce(ln,ae,rt,ir)):void 0))}function Kt(ln,ir){let ae=nc(ln,205);if(ae&&HN(ae))return I7(ir,ae)}}function pn(Se,at,Tt,ve){let nt=new Map;return ce(Se);function ce($){if(!(!($.flags&96)||!U_(nt,$a($))))return ks($.declarations,ue=>ks(PI(ue),G=>{let Oe=Tt.getTypeAtLocation(G),je=Oe&&Oe.symbol&&Tt.getPropertyOfType(Oe,at);return Oe&&je&&(ks(Tt.getRootSymbols(je),ve)||ce(Oe.symbol))}))}}function An(Se){return Se.valueDeclaration?!!(uu(Se.valueDeclaration)&32):!1}function Kn(Se,at,Tt,ve){let{checker:nt}=ve;return Dt(at,Tt,nt,!1,ve.options.use!==2||!!ve.options.providePrefixAndSuffixTextForRename,(ce,$,ue,G)=>(ue&&An(at)!==An(ue)&&(ue=void 0),Se.includes(ue||$||ce)?{symbol:$&&!(ac(ce)&6)?$:ce,kind:G}:void 0),ce=>!(Se.parents&&!Se.parents.some($=>ui(ce.parent,$,ve.inheritsFromCache,nt))))}function hi(Se,at){let Tt=e1(Se),{declarations:ve}=at;if(ve){let nt;do{nt=Tt;for(let ce of ve){let $=kN(ce);$&Tt&&(Tt|=$)}}while(Tt!==nt)}return Tt}e.getIntersectingMeaningFromDeclarations=hi;function ri(Se){return Se.flags&16777216?!(ku(Se)||Ep(Se)):MA(Se)?Jy(Se):Ds(Se)?!!Se.body:Yr(Se)||Nw(Se)}function gn(Se,at,Tt){let ve=at.getSymbolAtLocation(Se),nt=at.getShorthandAssignmentValueSymbol(ve.valueDeclaration);if(nt)for(let ce of nt.getDeclarations())kN(ce)&1&&Tt(ce)}e.getReferenceEntriesForShorthandPropertyAssignment=gn;function Ht(Se,at,Tt){pa(Se,ve=>{ve.kind===at&&Tt(ve),Ht(ve,at,Tt)})}function En(Se){return lW(o7(Se).parent)}function dr(Se,at,Tt){let ve=H2(Se)?Se.parent:void 0,nt=ve&&Tt.getTypeAtLocation(ve.expression),ce=Zi(nt&&(nt.isUnionOrIntersection()?nt.types:nt.symbol===at.parent?void 0:[nt]),$=>$.symbol&&$.symbol.flags&96?$.symbol:void 0);return ce.length===0?void 0:ce}function Cr(Se){return Se.use===2&&Se.providePrefixAndSuffixTextForRename}})(d1||(d1={}))}}),js={};Mo(js,{Core:()=>d1,DefinitionKind:()=>oee,EntryKind:()=>see,ExportKind:()=>nee,FindReferencesUse:()=>cee,ImportExport:()=>ree,createImportTracker:()=>ZZ,findModuleReferences:()=>PTe,findReferenceOrRenameEntries:()=>BBe,findReferencedSymbols:()=>MBe,getContextNode:()=>sE,getExportInfo:()=>eee,getImplementationsAtPosition:()=>GBe,getImportOrExportSymbol:()=>GTe,getReferenceEntriesForNode:()=>VTe,getTextSpanOfEntry:()=>aee,isContextWithStartAndEndNode:()=>BTe,isDeclarationOfSymbol:()=>JTe,nodeEntry:()=>Ym,toContextSpan:()=>iee,toHighlightSpan:()=>JBe,toReferenceEntry:()=>WTe,toRenameLocation:()=>VBe});var KTe=gt({\"src/services/_namespaces/ts.FindAllReferences.ts\"(){\"use strict\";NBe(),qBe()}});function qTe(e,t,r,i,o){var s,l;let f=YTe(t,r,e),d=f&&[rUe(f.reference.fileName,f.fileName,f.unverified)]||Je;if(f?.file)return d;let g=Zd(t,r);if(g===t)return;let{parent:m}=g,v=e.getTypeChecker();if(g.kind===161||Re(g)&&g3(m)&&m.tagName===g)return YBe(v,g)||Je;if(wN(g)){let C=s7(g.parent,g.text);return C?[uee(v,C,\"label\",g.text,void 0)]:void 0}if(g.kind===105){let C=jn(g.parent,P=>oc(P)?\"quit\":Ds(P));return C?[SP(v,C)]:void 0}if(g.kind===133){let C=jn(g,F=>Ds(F));return C&&vt(C.modifiers,F=>F.kind===132)?[SP(v,C)]:void 0}if(g.kind===125){let C=jn(g,F=>Ds(F));return C&&C.asteriskToken?[SP(v,C)]:void 0}if(kS(g)&&oc(g.parent)){let C=g.parent.parent,{symbol:P,failedAliasResolution:F}=cG(C,v,o),B=Pr(C.members,oc),q=P?v.symbolToString(P,C):\"\",W=g.getSourceFile();return on(B,Y=>{let{pos:R}=yp(Y);return R=xo(W.text,R),uee(v,Y,\"constructor\",\"static {}\",q,!1,F,{start:R,length:6})})}let{symbol:S,failedAliasResolution:x}=cG(g,v,o),A=g;if(i&&x){let C=mn([g,...S?.declarations||Je],F=>jn(F,Wse)),P=C&&aR(C);P&&({symbol:S,failedAliasResolution:x}=cG(P,v,o),A=P)}if(!S&&C7(A)){let C=(l=(s=t.resolvedModules)==null?void 0:s.get(A.text,H_(t,A)))==null?void 0:l.resolvedModule;if(C)return[{name:A.text,fileName:C.resolvedFileName,containerName:void 0,containerKind:void 0,kind:\"script\",textSpan:il(0,0),failedAliasResolution:x,isAmbient:Fu(C.resolvedFileName),unverified:A!==g}]}if(!S)return Qi(d,eUe(g,v));if(i&&Ji(S.declarations,C=>C.getSourceFile().fileName===t.fileName))return;let w=aUe(v,g);if(w&&!(Au(g.parent)&&oUe(w))){let C=SP(v,w,x);if(v.getRootSymbols(S).some(P=>XBe(P,w)))return[C];{let P=rC(v,S,g,x,w)||Je;return g.kind===106?[C,...P]:[...P,C]}}if(g.parent.kind===300){let C=v.getShorthandAssignmentValueSymbol(S.valueDeclaration),P=C?.declarations?C.declarations.map(F=>xk(F,v,C,g,!1,x)):Je;return Qi(P,XTe(v,g)||Je)}if(Ys(g)&&Wo(m)&&cm(m.parent)&&g===(m.propertyName||m.name)){let C=jN(g),P=v.getTypeAtLocation(m.parent);return C===void 0?Je:Uo(P.isUnion()?P.types:[P],F=>{let B=F.getProperty(C);return B&&rC(v,B,g)})}return Qi(d,XTe(v,g)||rC(v,S,g,x))}function XBe(e,t){var r;return e===t.symbol||e===t.symbol.parent||Iu(t.parent)||!iS(t.parent)&&e===((r=zr(t.parent,$p))==null?void 0:r.symbol)}function XTe(e,t){let r=rP(t);if(r){let i=r&&e.getContextualType(r.parent);if(i)return Uo(_5(r,e,i,!1),o=>rC(e,o,t))}}function YBe(e,t){let r=jn(t,_l);if(!(r&&r.name))return;let i=jn(r,Yr);if(!i)return;let o=hp(i);if(!o)return;let s=vs(o.expression),l=_u(s)?s.symbol:e.getSymbolAtLocation(s);if(!l)return;let f=Gi(RA(r.name)),d=zc(r)?e.getPropertyOfType(e.getTypeOfSymbol(l),f):e.getPropertyOfType(e.getDeclaredTypeOfSymbol(l),f);if(!!d)return rC(e,d,t)}function YTe(e,t,r){var i,o,s,l;let f=iC(e.referencedFiles,t);if(f){let m=r.getSourceFileFromReference(e,f);return m&&{reference:f,fileName:m.fileName,file:m,unverified:!1}}let d=iC(e.typeReferenceDirectives,t);if(d){let m=(i=r.getResolvedTypeReferenceDirectives().get(d.fileName,d.resolutionMode||e.impliedNodeFormat))==null?void 0:i.resolvedTypeReferenceDirective,v=m&&r.getSourceFile(m.resolvedFileName);return v&&{reference:d,fileName:v.fileName,file:v,unverified:!1}}let g=iC(e.libReferenceDirectives,t);if(g){let m=r.getLibFileFromReference(g);return m&&{reference:g,fileName:m.fileName,file:m,unverified:!1}}if((o=e.resolvedModules)!=null&&o.size()){let m=rk(e,t);if(C7(m)&&fl(m.text)&&e.resolvedModules.has(m.text,H_(e,m))){let v=(l=(s=e.resolvedModules.get(m.text,H_(e,m)))==null?void 0:s.resolvedModule)==null?void 0:l.resolvedFileName,S=v||Fy(ni(e.fileName),m.text);return{file:r.getSourceFile(S),fileName:S,reference:{pos:m.getStart(),end:m.getEnd(),fileName:m.text},unverified:!v}}}}function $Be(e,t,r){let i=Zd(t,r);if(i===t)return;if(PA(i.parent)&&i.parent.name===i)return lee(e.getTypeAtLocation(i.parent),e,i.parent,!1);let{symbol:o,failedAliasResolution:s}=cG(i,e,!1);if(!o)return;let l=e.getTypeOfSymbolAtLocation(o,i),f=QBe(o,l,e),d=f&&lee(f,e,i,s),g=d&&d.length!==0?d:lee(l,e,i,s);return g.length?g:!(o.flags&111551)&&o.flags&788968?rC(e,wd(o,e),i,s):void 0}function lee(e,t,r,i){return Uo(e.isUnion()&&!(e.flags&32)?e.types:[e],o=>o.symbol&&rC(t,o.symbol,r,i))}function QBe(e,t,r){if(t.symbol===e||e.valueDeclaration&&t.symbol&&wi(e.valueDeclaration)&&e.valueDeclaration.initializer===t.symbol.valueDeclaration){let i=t.getCallSignatures();if(i.length===1)return r.getReturnTypeOfSignature(Vo(i))}}function ZBe(e,t,r){let i=qTe(e,t,r);if(!i||i.length===0)return;let o=iC(t.referencedFiles,r)||iC(t.typeReferenceDirectives,r)||iC(t.libReferenceDirectives,r);if(o)return{definitions:i,textSpan:lv(o)};let s=Zd(t,r),l=il(s.getStart(),s.getWidth());return{definitions:i,textSpan:l}}function eUe(e,t){return Zi(t.getIndexInfosAtLocation(e),r=>r.declaration&&SP(t,r.declaration))}function cG(e,t,r){let i=t.getSymbolAtLocation(e),o=!1;if(i?.declarations&&i.flags&2097152&&!r&&tUe(e,i.declarations[0])){let s=t.getAliasedSymbol(i);if(s.declarations)return{symbol:s};o=!0}return{symbol:i,failedAliasResolution:o}}function tUe(e,t){return e.kind!==79?!1:e.parent===t?!0:t.kind!==271}function nUe(e){if(!OI(e))return!1;let t=jn(e,r=>Iu(r)?!0:OI(r)?!1:\"quit\");return!!t&&ic(t)===5}function rC(e,t,r,i,o){let s=Pr(t.declarations,v=>v!==o),l=Pr(s,v=>!nUe(v)),f=vt(l)?l:s;return d()||g()||on(f,v=>xk(v,e,t,r,!1,i));function d(){if(t.flags&32&&!(t.flags&19)&&(ek(r)||r.kind===135)){let v=wr(s,Yr)||L.fail(\"Expected declaration to have at least one class-like declaration\");return m(v.members,!0)}}function g(){return PX(r)||VX(r)?m(s,!1):void 0}function m(v,S){if(!v)return;let x=v.filter(S?Ec:Ia),A=x.filter(w=>!!w.body);return x.length?A.length!==0?A.map(w=>xk(w,e,t,r)):[xk(To(x),e,t,r,!1,i)]:void 0}}function xk(e,t,r,i,o,s){let l=t.symbolToString(r),f=$g.getSymbolKind(t,r,i),d=r.parent?t.symbolToString(r.parent,i):\"\";return uee(t,e,f,l,d,o,s)}function uee(e,t,r,i,o,s,l,f){let d=t.getSourceFile();if(!f){let g=sa(t)||t;f=Du(g,d)}return{fileName:d.fileName,textSpan:f,kind:r,name:i,containerKind:void 0,containerName:o,...js.toContextSpan(f,d,js.getContextNode(t)),isLocal:!dee(e,t),isAmbient:!!(t.flags&16777216),unverified:s,failedAliasResolution:l}}function dee(e,t){if(e.isDeclarationVisible(t))return!0;if(!t.parent)return!1;if(Jy(t.parent)&&t.parent.initializer===t)return dee(e,t.parent);switch(t.kind){case 169:case 174:case 175:case 171:if(cd(t,8))return!1;case 173:case 299:case 300:case 207:case 228:case 216:case 215:return dee(e,t.parent);default:return!1}}function SP(e,t,r){return xk(t,e,t.symbol,t,!1,r)}function iC(e,t){return wr(e,r=>Y8(r,t))}function rUe(e,t,r){return{fileName:t,textSpan:Wc(0,0),kind:\"script\",name:e,containerName:void 0,containerKind:void 0,unverified:r}}function iUe(e){let t=jn(e,i=>!H2(i)),r=t?.parent;return r&&iS(r)&&P6(r)===t?r:void 0}function aUe(e,t){let r=iUe(t),i=r&&e.getResolvedSignature(r);return zr(i&&i.declaration,o=>Ia(o)&&!Jm(o))}function oUe(e){switch(e.kind){case 173:case 182:case 177:return!0;default:return!1}}var sUe=gt({\"src/services/goToDefinition.ts\"(){\"use strict\";Fr()}}),Ak={};Mo(Ak,{createDefinitionInfo:()=>xk,findReferenceInPosition:()=>iC,getDefinitionAndBoundSpan:()=>ZBe,getDefinitionAtPosition:()=>qTe,getReferenceAtPosition:()=>YTe,getTypeDefinitionAtPosition:()=>$Be});var cUe=gt({\"src/services/_namespaces/ts.GoToDefinition.ts\"(){\"use strict\";sUe()}});function lUe(e){return e.includeInlayParameterNameHints===\"literals\"||e.includeInlayParameterNameHints===\"all\"}function uUe(e){return e.includeInlayParameterNameHints===\"literals\"}function dUe(e){let{file:t,program:r,span:i,cancellationToken:o,preferences:s}=e,l=t.text,f=r.getCompilerOptions(),d=r.getTypeChecker(),g=[];return m(t),g;function m(le){if(!(!le||le.getFullWidth()===0)){switch(le.kind){case 264:case 260:case 261:case 259:case 228:case 215:case 171:case 216:o.throwIfCancellationRequested()}if(!!$8(i,le.pos,le.getFullWidth())&&!(bi(le)&&!Vg(le)))return s.includeInlayVariableTypeHints&&wi(le)||s.includeInlayPropertyDeclarationTypeHints&&Na(le)?P(le):s.includeInlayEnumMemberValueHints&&q0(le)?w(le):lUe(s)&&(Pa(le)||z0(le))?F(le):(s.includeInlayFunctionParameterTypeHints&&Ds(le)&&b4(le)&&ie(le),s.includeInlayFunctionLikeReturnTypeHints&&v(le)&&Y(le)),pa(le,m)}}function v(le){return xs(le)||ms(le)||Jc(le)||Nc(le)||__(le)}function S(le,_e,ge){g.push({text:`${ge?\"...\":\"\"}${fe(le,lG)}:`,position:_e,kind:\"Parameter\",whitespaceAfter:!0})}function x(le,_e){g.push({text:`: ${fe(le,lG)}`,position:_e,kind:\"Type\",whitespaceBefore:!0})}function A(le,_e){g.push({text:`= ${fe(le,lG)}`,position:_e,kind:\"Enum\",whitespaceBefore:!0})}function w(le){if(le.initializer)return;let _e=d.getConstantValue(le);_e!==void 0&&A(_e.toString(),le.end)}function C(le){return le.symbol&&le.symbol.flags&1536}function P(le){if(!le.initializer||La(le.name)||wi(le)&&!re(le)||Cl(le))return;let ge=d.getTypeAtLocation(le);if(C(ge))return;let X=Z(ge);if(X){if(s.includeInlayVariableTypeHintsWhenTypeMatchesName===!1&&z1(le.name.getText(),X))return;x(X,le.name.end)}}function F(le){let _e=le.arguments;if(!_e||!_e.length)return;let ge=[],X=d.getResolvedSignatureForSignatureHelp(le,ge);if(!(!X||!ge.length))for(let Ve=0;Ve<_e.length;++Ve){let we=_e[Ve],ke=vs(we);if(uUe(s)&&!W(ke))continue;let Pe=d.getParameterIdentifierNameAtPosition(X,Ve);if(Pe){let[Ce,Ie]=Pe;if(!(s.includeInlayParameterNameHintsWhenArgumentMatchesName||!B(ke,Ce))&&!Ie)continue;let Ne=Gi(Ce);if(q(ke,Ne))continue;S(Ne,we.getStart(),Ie)}}}function B(le,_e){return Re(le)?le.text===_e:br(le)?le.name.text===_e:!1}function q(le,_e){if(!r_(_e,f.target,OR(t.scriptKind)))return!1;let ge=Nm(l,le.pos);if(!ge?.length)return!1;let X=$Te(_e);return vt(ge,Ve=>X.test(l.substring(Ve.pos,Ve.end)))}function W(le){switch(le.kind){case 221:{let _e=le.operand;return _T(_e)||Re(_e)&&lL(_e.escapedText)}case 110:case 95:case 104:case 14:case 225:return!0;case 79:{let _e=le.escapedText;return U(_e)||lL(_e)}}return _T(le)}function Y(le){if(xs(le)&&!Yo(le,20,t)||B_(le)||!le.body)return;let ge=d.getSignatureFromDeclaration(le);if(!ge)return;let X=d.getReturnTypeOfSignature(ge);if(C(X))return;let Ve=Z(X);!Ve||x(Ve,R(le))}function R(le){let _e=Yo(le,21,t);return _e?_e.end:le.parameters.end}function ie(le){let _e=d.getSignatureFromDeclaration(le);if(!!_e)for(let ge=0;ge<le.parameters.length&&ge<_e.parameters.length;++ge){let X=le.parameters[ge];if(!re(X)||Cl(X))continue;let we=Q(_e.parameters[ge]);!we||x(we,X.questionToken?X.questionToken.end:X.name.end)}}function Q(le){let _e=le.valueDeclaration;if(!_e||!ha(_e))return;let ge=d.getTypeOfSymbolAtLocation(le,_e);if(!C(ge))return Z(ge)}function fe(le,_e){return le.length>_e?le.substr(0,_e-3)+\"...\":le}function Z(le){let ge=rE();return xI(X=>{let Ve=d.typeToTypeNode(le,void 0,71286784);L.assertIsDefined(Ve,\"should always get typenode\"),ge.writeNode(4,Ve,t,X)})}function U(le){return le===\"undefined\"}function re(le){if((IT(le)||wi(le)&&kh(le))&&le.initializer){let _e=vs(le.initializer);return!(W(_e)||z0(_e)||rs(_e)||mT(_e))}return!0}}var lG,$Te,fUe=gt({\"src/services/inlayHints.ts\"(){\"use strict\";Fr(),lG=30,$Te=e=>new RegExp(`^\\\\s?/\\\\*\\\\*?\\\\s?${e}\\\\s?\\\\*\\\\/\\\\s?$`)}}),fee={};Mo(fee,{provideInlayHints:()=>dUe});var _Ue=gt({\"src/services/_namespaces/ts.InlayHints.ts\"(){\"use strict\";fUe()}});function pUe(e,t){let r=[];return lY(e,i=>{for(let o of hUe(i)){let s=dm(o)&&o.tags&&wr(o.tags,f=>f.kind===330&&(f.tagName.escapedText===\"inheritDoc\"||f.tagName.escapedText===\"inheritdoc\"));if(o.comment===void 0&&!s||dm(o)&&i.kind!==349&&i.kind!==341&&o.tags&&o.tags.some(f=>f.kind===349||f.kind===341)&&!o.tags.some(f=>f.kind===344||f.kind===345))continue;let l=o.comment?dx(o.comment,t):[];s&&s.comment&&(l=l.concat(dx(s.comment,t))),ya(r,l,mUe)||r.push(l)}}),e_(DU(r,[q2()]))}function mUe(e,t){return BD(e,t,(r,i)=>r.kind===i.kind&&r.text===i.text)}function hUe(e){switch(e.kind){case 344:case 351:return[e];case 341:case 349:return[e,e.parent];default:return PH(e)}}function gUe(e,t){let r=[];return lY(e,i=>{let o=A0(i);if(!(o.some(s=>s.kind===349||s.kind===341)&&!o.some(s=>s.kind===344||s.kind===345)))for(let s of o)r.push({name:s.tagName.text,text:yUe(s,t)})}),r}function dx(e,t){return typeof e==\"string\"?[ef(e)]:Uo(e,r=>r.kind===324?[ef(r.text)]:Qhe(r,t))}function yUe(e,t){let{comment:r,kind:i}=e,o=vUe(i);switch(i){case 352:let f=e.typeExpression;return f?s(f):r===void 0?void 0:dx(r,t);case 332:return s(e.class);case 331:return s(e.class);case 348:let d=e,g=[];if(d.constraint&&g.push(ef(d.constraint.getText())),Fn(d.typeParameters)){Fn(g)&&g.push(Qs());let v=d.typeParameters[d.typeParameters.length-1];mn(d.typeParameters,S=>{g.push(o(S.getText())),v!==S&&g.push(Yl(27),Qs())})}return r&&g.push(Qs(),...dx(r,t)),g;case 347:case 353:return s(e.typeExpression);case 349:case 341:case 351:case 344:case 350:let{name:m}=e;return m?s(m):r===void 0?void 0:dx(r,t);default:return r===void 0?void 0:dx(r,t)}function s(f){return l(f.getText())}function l(f){return r?f.match(/^https?$/)?[ef(f),...dx(r,t)]:[o(f),Qs(),...dx(r,t)]:[ef(f)]}}function vUe(e){switch(e){case 344:return Khe;case 351:return qhe;case 348:return Yhe;case 349:case 341:return Xhe;default:return ef}}function bUe(){return ZTe||(ZTe=on(pee,e=>({name:e,kind:\"keyword\",kindModifiers:\"\",sortText:ux.SortText.LocationPriority})))}function EUe(){return e1e||(e1e=on(pee,e=>({name:`@${e}`,kind:\"keyword\",kindModifiers:\"\",sortText:ux.SortText.LocationPriority})))}function QTe(e){return{name:e,kind:\"\",kindModifiers:\"\",displayParts:[ef(e)],documentation:Je,tags:void 0,codeActions:void 0}}function TUe(e){if(!Re(e.name))return Je;let t=e.name.text,r=e.parent,i=r.parent;return Ia(i)?Zi(i.parameters,o=>{if(!Re(o.name))return;let s=o.name.text;if(!(r.tags.some(l=>l!==e&&xp(l)&&Re(l.name)&&l.name.escapedText===s)||t!==void 0&&!na(s,t)))return{name:s,kind:\"parameter\",kindModifiers:\"\",sortText:ux.SortText.LocationPriority}}):[]}function SUe(e){return{name:e,kind:\"parameter\",kindModifiers:\"\",displayParts:[ef(e)],documentation:Je,tags:void 0,codeActions:void 0}}function xUe(e,t,r,i){let o=Vi(t,r),s=jn(o,dm);if(s&&(s.comment!==void 0||Fn(s.tags)))return;let l=o.getStart(t);if(!s&&l<r)return;let f=LUe(o,i);if(!f)return;let{commentOwner:d,parameters:g,hasReturn:m}=f,v=Jd(d)&&d.jsDoc?d.jsDoc:void 0,S=Os(v);if(d.getStart(t)<r||S&&s&&S!==s)return;let x=AUe(t,r),A=TS(t.fileName),w=(g?CUe(g||[],A,x,e):\"\")+(m?IUe(x,e):\"\"),C=\"/**\",P=\" */\",F=(v||[]).some(B=>!!B.tags);if(w&&!F){let B=C+e+x+\" * \",q=l===r?e+x:\"\";return{newText:B+e+w+x+P+q,caretOffset:B.length}}return{newText:C+P,caretOffset:3}}function AUe(e,t){let{text:r}=e,i=Hf(t,e),o=i;for(;o<=t&&Yp(r.charCodeAt(o));o++);return r.slice(i,o)}function CUe(e,t,r,i){return e.map(({name:o,dotDotDotToken:s},l)=>{let f=o.kind===79?o.text:\"param\"+l;return`${r} * @param ${t?s?\"{...any} \":\"{any} \":\"\"}${f}${i}`}).join(\"\")}function IUe(e,t){return`${e} * @returns${t}`}function LUe(e,t){return Lse(e,r=>_ee(r,t))}function _ee(e,t){switch(e.kind){case 259:case 215:case 171:case 173:case 170:case 216:let r=e;return{commentOwner:e,parameters:r.parameters,hasReturn:xP(r,t)};case 299:return _ee(e.initializer,t);case 260:case 261:case 263:case 302:case 262:return{commentOwner:e};case 168:{let o=e;return o.type&&Jm(o.type)?{commentOwner:e,parameters:o.type.parameters,hasReturn:xP(o.type,t)}:{commentOwner:e}}case 240:{let s=e.declarationList.declarations,l=s.length===1&&s[0].initializer?kUe(s[0].initializer):void 0;return l?{commentOwner:e,parameters:l.parameters,hasReturn:xP(l,t)}:{commentOwner:e}}case 308:return\"quit\";case 264:return e.parent.kind===264?void 0:{commentOwner:e};case 241:return _ee(e.expression,t);case 223:{let o=e;return ic(o)===0?\"quit\":Ia(o.right)?{commentOwner:e,parameters:o.right.parameters,hasReturn:xP(o.right,t)}:{commentOwner:e}}case 169:let i=e.initializer;if(i&&(ms(i)||xs(i)))return{commentOwner:e,parameters:i.parameters,hasReturn:xP(i,t)}}}function xP(e,t){return!!t?.generateReturnInDocTemplate&&(Jm(e)||xs(e)&&ot(e.body)||Ds(e)&&e.body&&Va(e.body)&&!!bT(e.body,r=>r))}function kUe(e){for(;e.kind===214;)e=e.expression;switch(e.kind){case 215:case 216:return e;case 228:return wr(e.members,Ec)}}var pee,ZTe,e1e,t1e,DUe=gt({\"src/services/jsDoc.ts\"(){\"use strict\";Fr(),pee=[\"abstract\",\"access\",\"alias\",\"argument\",\"async\",\"augments\",\"author\",\"borrows\",\"callback\",\"class\",\"classdesc\",\"constant\",\"constructor\",\"constructs\",\"copyright\",\"default\",\"deprecated\",\"description\",\"emits\",\"enum\",\"event\",\"example\",\"exports\",\"extends\",\"external\",\"field\",\"file\",\"fileoverview\",\"fires\",\"function\",\"generator\",\"global\",\"hideconstructor\",\"host\",\"ignore\",\"implements\",\"inheritdoc\",\"inner\",\"instance\",\"interface\",\"kind\",\"lends\",\"license\",\"link\",\"linkcode\",\"linkplain\",\"listens\",\"member\",\"memberof\",\"method\",\"mixes\",\"module\",\"name\",\"namespace\",\"overload\",\"override\",\"package\",\"param\",\"private\",\"prop\",\"property\",\"protected\",\"public\",\"readonly\",\"requires\",\"returns\",\"satisfies\",\"see\",\"since\",\"static\",\"summary\",\"template\",\"this\",\"throws\",\"todo\",\"tutorial\",\"type\",\"typedef\",\"var\",\"variation\",\"version\",\"virtual\",\"yields\"],t1e=QTe}}),xb={};Mo(xb,{getDocCommentTemplateAtPosition:()=>xUe,getJSDocParameterNameCompletionDetails:()=>SUe,getJSDocParameterNameCompletions:()=>TUe,getJSDocTagCompletionDetails:()=>QTe,getJSDocTagCompletions:()=>EUe,getJSDocTagNameCompletionDetails:()=>t1e,getJSDocTagNameCompletions:()=>bUe,getJsDocCommentsFromDeclarations:()=>pUe,getJsDocTagsFromDeclarations:()=>gUe});var wUe=gt({\"src/services/_namespaces/ts.JsDoc.ts\"(){\"use strict\";DUe()}});function RUe(e,t,r,i,o,s){let l=nr.ChangeTracker.fromContext({host:r,formatContext:t,preferences:o}),f=s===\"SortAndCombine\"||s===\"All\",d=f,g=s===\"RemoveUnused\"||s===\"All\",m=mee(e,e.statements.filter(gl)),v=XUe(o,f?()=>i1e(m,o)===2:void 0),S=A=>(g&&(A=NUe(A,e,i)),d&&(A=n1e(A,v,e)),f&&(A=Ag(A,(w,C)=>bee(w,C,v))),A);if(m.forEach(A=>x(A,S)),s!==\"RemoveUnused\"){let A=e.statements.filter(Il);x(A,w=>hee(w,v))}for(let A of e.statements.filter(lu)){if(!A.body)continue;if(mee(e,A.body.statements.filter(gl)).forEach(C=>x(C,S)),s!==\"RemoveUnused\"){let C=A.body.statements.filter(Il);x(C,P=>hee(P,v))}}return l.getChanges();function x(A,w){if(Fn(A)===0)return;D7(A[0]);let C=d?$C(A,B=>AP(B.moduleSpecifier)):[A],P=f?Ag(C,(B,q)=>yee(B[0].moduleSpecifier,q[0].moduleSpecifier,v)):C,F=Uo(P,B=>AP(B[0].moduleSpecifier)?w(B):B);if(F.length===0)l.deleteNodes(e,A,{leadingTriviaOption:nr.LeadingTriviaOption.Exclude,trailingTriviaOption:nr.TrailingTriviaOption.Include},!0);else{let B={leadingTriviaOption:nr.LeadingTriviaOption.Exclude,trailingTriviaOption:nr.TrailingTriviaOption.Include,suffix:bb(r,t.options)};l.replaceNodeWithNodes(e,A[0],F,B);let q=l.nodeHasTrailingComment(e,A[0],B);l.deleteNodes(e,A.slice(1),{trailingTriviaOption:nr.TrailingTriviaOption.Include},q)}}}function mee(e,t){let r=kg(e.languageVersion,!1,e.languageVariant),i=[],o=0;for(let s of t)i[o]&&OUe(e,s,r)&&o++,i[o]||(i[o]=[]),i[o].push(s);return i}function OUe(e,t,r){let i=t.getFullStart(),o=t.getStart();r.setText(e.text,i,o-i);let s=0;for(;r.getTokenPos()<o;)if(r.scan()===4&&(s++,s>=2))return!0;return!1}function NUe(e,t,r){let i=r.getTypeChecker(),o=r.getCompilerOptions(),s=i.getJsxNamespace(t),l=i.getJsxFragmentFactory(t),f=!!(t.transformFlags&2),d=[];for(let m of e){let{importClause:v,moduleSpecifier:S}=m;if(!v){d.push(m);continue}let{name:x,namedBindings:A}=v;if(x&&!g(x)&&(x=void 0),A)if(nv(A))g(A.name)||(A=void 0);else{let w=A.elements.filter(C=>g(C.name));w.length<A.elements.length&&(A=w.length?D.updateNamedImports(A,w):void 0)}x||A?d.push(Ck(m,x,A)):PUe(t,S)&&(t.isDeclarationFile?d.push(D.createImportDeclaration(m.modifiers,void 0,S,void 0)):d.push(m))}return d;function g(m){return f&&(m.text===s||l&&m.text===l)&&wY(o.jsx)||js.Core.isSymbolReferencedInFile(m,i,t)}}function PUe(e,t){let r=yo(t)&&t.text;return Ta(r)&&vt(e.moduleAugmentations,i=>yo(i)&&i.text===r)}function AP(e){return e!==void 0&&es(e)?e.text:void 0}function MUe(e,t,r){let i=uG(t);return n1e(e,i,r)}function n1e(e,t,r){if(e.length===0)return e;let{importWithoutClause:i,typeOnlyImports:o,regularImports:s}=FUe(e),l=[];i&&l.push(i);for(let f of[s,o]){let d=f===o,{defaultImports:g,namespaceImports:m,namedImports:v}=f;if(!d&&g.length===1&&m.length===1&&v.length===0){let q=g[0];l.push(Ck(q,q.importClause.name,m[0].importClause.namedBindings));continue}let S=Ag(m,(q,W)=>t(q.importClause.namedBindings.name.text,W.importClause.namedBindings.name.text));for(let q of S)l.push(Ck(q,void 0,q.importClause.namedBindings));let x=Sl(g),A=Sl(v),w=x??A;if(!w)continue;let C,P=[];if(g.length===1)C=g[0].importClause.name;else for(let q of g)P.push(D.createImportSpecifier(!1,D.createIdentifier(\"default\"),q.importClause.name));P.push(...zUe(v));let F=D.createNodeArray(r1e(P,t),A?.importClause.namedBindings.elements.hasTrailingComma),B=F.length===0?C?void 0:D.createNamedImports(Je):A?D.updateNamedImports(A.importClause.namedBindings,F):D.createNamedImports(F);r&&B&&A?.importClause.namedBindings&&!wT(A.importClause.namedBindings,r)&&Jn(B,2),d&&C&&B?(l.push(Ck(w,C,void 0)),l.push(Ck(A??w,void 0,B))):l.push(Ck(w,C,B))}return l}function FUe(e){let t,r={defaultImports:[],namespaceImports:[],namedImports:[]},i={defaultImports:[],namespaceImports:[],namedImports:[]};for(let o of e){if(o.importClause===void 0){t=t||o;continue}let s=o.importClause.isTypeOnly?r:i,{name:l,namedBindings:f}=o.importClause;l&&s.defaultImports.push(o),f&&(nv(f)?s.namespaceImports.push(o):s.namedImports.push(o))}return{importWithoutClause:t,typeOnlyImports:r,regularImports:i}}function GUe(e,t){let r=uG(t);return hee(e,r)}function hee(e,t){if(e.length===0)return e;let{exportWithoutClause:r,namedExports:i,typeOnlyExports:o}=l(e),s=[];r&&s.push(r);for(let f of[i,o]){if(f.length===0)continue;let d=[];d.push(...Uo(f,v=>v.exportClause&&m_(v.exportClause)?v.exportClause.elements:Je));let g=r1e(d,t),m=f[0];s.push(D.updateExportDeclaration(m,m.modifiers,m.isTypeOnly,m.exportClause&&(m_(m.exportClause)?D.updateNamedExports(m.exportClause,g):D.updateNamespaceExport(m.exportClause,m.exportClause.name)),m.moduleSpecifier,m.assertClause))}return s;function l(f){let d,g=[],m=[];for(let v of f)v.exportClause===void 0?d=d||v:v.isTypeOnly?m.push(v):g.push(v);return{exportWithoutClause:d,namedExports:g,typeOnlyExports:m}}}function Ck(e,t,r){return D.updateImportDeclaration(e,e.modifiers,D.updateImportClause(e.importClause,e.importClause.isTypeOnly,t,r),e.moduleSpecifier,e.assertClause)}function r1e(e,t){return Ag(e,(r,i)=>gee(r,i,t))}function gee(e,t,r){return g0(e.isTypeOnly,t.isTypeOnly)||r(e.name.text,t.name.text)}function BUe(e,t,r){let i=uG(!!r);return yee(e,t,i)}function yee(e,t,r){let i=e===void 0?void 0:AP(e),o=t===void 0?void 0:AP(t);return g0(i===void 0,o===void 0)||g0(fl(i),fl(o))||r(i,o)}function vee(e){var t;switch(e.kind){case 268:return(t=zr(e.moduleReference,um))==null?void 0:t.expression;case 269:return e.moduleSpecifier;case 240:return e.declarationList.declarations[0].initializer.arguments[0]}}function UUe(e,t){return i1e(mee(e,e.statements.filter(gl)),t)}function i1e(e,t){let r=fx(t,!1),i=fx(t,!0),o=3,s=!1;for(let l of e){if(l.length>1){let d=l8(l,g=>{var m,v;return(v=(m=zr(g.moduleSpecifier,yo))==null?void 0:m.text)!=null?v:\"\"},r,i);if(d&&(o&=d,s=!0),!o)return o}let f=wr(l,d=>{var g,m;return((m=zr((g=d.importClause)==null?void 0:g.namedBindings,jg))==null?void 0:m.elements.length)>1});if(f){let d=Eee(f.importClause.namedBindings.elements,t);if(d&&(o&=d,s=!0),!o)return o}if(o!==3)return o}return s?0:o}function VUe(e,t){let r=fx(t,!1),i=fx(t,!0);return l8(e,o=>AP(vee(o))||\"\",r,i)}function jUe(e,t,r){let i=Py(e,t,Ks,(o,s)=>bee(o,s,r));return i<0?~i:i}function HUe(e,t,r){let i=Py(e,t,Ks,(o,s)=>gee(o,s,r));return i<0?~i:i}function bee(e,t,r){return yee(vee(e),vee(t),r)||WUe(e,t)}function WUe(e,t){return Es(a1e(e),a1e(t))}function a1e(e){var t;switch(e.kind){case 269:return e.importClause?e.importClause.isTypeOnly?1:((t=e.importClause.namedBindings)==null?void 0:t.kind)===271?2:e.importClause.name?3:4:0;case 268:return 5;case 240:return 6}}function zUe(e){return Uo(e,t=>on(JUe(t),r=>r.name&&r.propertyName&&r.name.escapedText===r.propertyName.escapedText?D.updateImportSpecifier(r,r.isTypeOnly,void 0,r.name):r))}function JUe(e){var t;return((t=e.importClause)==null?void 0:t.namedBindings)&&jg(e.importClause.namedBindings)?e.importClause.namedBindings.elements:void 0}function uG(e){return e?Sae:su}function KUe(e,t){var r,i,o;let s=qUe(t),l=(r=t.organizeImportsCaseFirst)!=null?r:!1,f=(i=t.organizeImportsNumericCollation)!=null?i:!1,d=(o=t.organizeImportsAccentCollation)!=null?o:!0,g=e?d?\"accent\":\"base\":d?\"variant\":\"case\";return new Intl.Collator(s,{usage:\"sort\",caseFirst:l||\"false\",sensitivity:g,numeric:f}).compare}function qUe(e){let t=e.organizeImportsLocale;t===\"auto\"&&(t=xae()),t===void 0&&(t=\"en\");let r=Intl.Collator.supportedLocalesOf(t);return r.length?r[0]:\"en\"}function fx(e,t){var r;return((r=e.organizeImportsCollation)!=null?r:\"ordinal\")===\"unicode\"?KUe(t,e):uG(t)}function XUe(e,t){var r;let i=typeof e.organizeImportsIgnoreCase==\"boolean\"?e.organizeImportsIgnoreCase:(r=t?.())!=null?r:!1;return fx(e,i)}var o1e,Eee,YUe=gt({\"src/services/organizeImports.ts\"(){\"use strict\";Fr(),o1e=class{has([e,t]){return this._lastPreferences!==t||!this._cache?!1:this._cache.has(e)}get([e,t]){if(!(this._lastPreferences!==t||!this._cache))return this._cache.get(e)}set([e,t],r){var i;this._lastPreferences!==t&&(this._lastPreferences=t,this._cache=void 0),(i=this._cache)!=null||(this._cache=new WeakMap),this._cache.set(e,r)}},Eee=Eae((e,t)=>{if(!dae(e,(o,s)=>g0(o.isTypeOnly,s.isTypeOnly)))return 0;let r=fx(t,!1),i=fx(t,!0);return l8(e,o=>o.name.text,r,i)},new o1e)}}),v_={};Mo(v_,{coalesceExports:()=>GUe,coalesceImports:()=>MUe,compareImportOrExportSpecifiers:()=>gee,compareImportsOrRequireStatements:()=>bee,compareModuleSpecifiers:()=>BUe,detectImportDeclarationSorting:()=>VUe,detectImportSpecifierSorting:()=>Eee,detectSorting:()=>UUe,getImportDeclarationInsertionIndex:()=>jUe,getImportSpecifierInsertionIndex:()=>HUe,getOrganizeImportsComparer:()=>fx,organizeImports:()=>RUe});var $Ue=gt({\"src/services/_namespaces/ts.OrganizeImports.ts\"(){\"use strict\";YUe()}});function QUe(e,t){let r=[];return ZUe(e,t,r),eVe(e,r),r.sort((i,o)=>i.textSpan.start-o.textSpan.start)}function ZUe(e,t,r){let i=40,o=0,s=[...e.statements,e.endOfFileToken],l=s.length;for(;o<l;){for(;o<l&&!vT(s[o]);)f(s[o]),o++;if(o===l)break;let d=o;for(;o<l&&vT(s[o]);)f(s[o]),o++;let g=o-1;g!==d&&r.push(CP(Yo(s[d],100,e).getStart(e),s[g].getEnd(),\"imports\"))}function f(d){var g;if(i===0)return;t.throwIfCancellationRequested(),(Kl(d)||Bc(d)||V_(d)||Ih(d)||d.kind===1)&&c1e(d,e,t,r),Ia(d)&&ar(d.parent)&&br(d.parent.left)&&c1e(d.parent.left,e,t,r),(Va(d)||Tp(d))&&Tee(d.statements.end,e,t,r),(Yr(d)||ku(d))&&Tee(d.members.end,e,t,r);let m=tVe(d,e);m&&r.push(m),i--,Pa(d)?(i++,f(d.expression),i--,d.arguments.forEach(f),(g=d.typeArguments)==null||g.forEach(f)):FT(d)&&d.elseStatement&&FT(d.elseStatement)?(f(d.expression),f(d.thenStatement),i++,f(d.elseStatement),i--):d.forEachChild(f),i++}}function eVe(e,t){let r=[],i=e.getLineStarts();for(let o of i){let s=e.getLineEndOfPosition(o),l=e.text.substring(o,s),f=s1e(l);if(!(!f||Kg(e,o)))if(f[1]){let d=r.pop();d&&(d.textSpan.length=s-d.textSpan.start,d.hintSpan.length=s-d.textSpan.start,t.push(d))}else{let d=Wc(e.text.indexOf(\"//\",o),s);r.push(f1(d,\"region\",d,!1,f[2]||\"#region\"))}}}function s1e(e){return e=eI(e),na(e,\"//\")?(e=v0(e.slice(2)),l1e.exec(e)):null}function Tee(e,t,r,i){let o=Nm(t.text,e);if(!o)return;let s=-1,l=-1,f=0,d=t.getFullText();for(let{kind:m,pos:v,end:S}of o)switch(r.throwIfCancellationRequested(),m){case 2:let x=d.slice(v,S);if(s1e(x)){g(),f=0;break}f===0&&(s=v),l=S,f++;break;case 3:g(),i.push(CP(v,S,\"comment\")),f=0;break;default:L.assertNever(m)}g();function g(){f>1&&i.push(CP(s,l,\"comment\"))}}function c1e(e,t,r,i){IS(e)||Tee(e.pos,t,r,i)}function CP(e,t,r){return f1(Wc(e,t),r)}function tVe(e,t){switch(e.kind){case 238:if(Ia(e.parent))return nVe(e.parent,e,t);switch(e.parent.kind){case 243:case 246:case 247:case 245:case 242:case 244:case 251:case 295:return m(e.parent);case 255:let x=e.parent;if(x.tryBlock===e)return m(e.parent);if(x.finallyBlock===e){let A=Yo(x,96,t);if(A)return m(A)}default:return f1(Du(e,t),\"code\")}case 265:return m(e.parent);case 260:case 228:case 261:case 263:case 266:case 184:case 203:return m(e);case 186:return m(e,!1,!m2(e.parent),22);case 292:case 293:return v(e.statements);case 207:return g(e);case 206:return g(e,22);case 281:return s(e);case 285:return l(e);case 282:case 283:return f(e.attributes);case 225:case 14:return d(e);case 204:return m(e,!1,!Wo(e.parent),22);case 216:return o(e);case 210:return i(e);case 214:return S(e);case 272:case 276:case 296:return r(e)}function r(x){if(!x.elements.length)return;let A=Yo(x,18,t),w=Yo(x,19,t);if(!(!A||!w||Gf(A.pos,w.pos,t)))return dG(A,w,x,t,!1,!1)}function i(x){if(!x.arguments.length)return;let A=Yo(x,20,t),w=Yo(x,21,t);if(!(!A||!w||Gf(A.pos,w.pos,t)))return dG(A,w,x,t,!1,!0)}function o(x){if(Va(x.body)||ud(x.body)||Gf(x.body.getFullStart(),x.body.getEnd(),t))return;let A=Wc(x.body.getFullStart(),x.body.getEnd());return f1(A,\"code\",Du(x))}function s(x){let A=Wc(x.openingElement.getStart(t),x.closingElement.getEnd()),w=x.openingElement.tagName.getText(t),C=\"<\"+w+\">...</\"+w+\">\";return f1(A,\"code\",A,!1,C)}function l(x){let A=Wc(x.openingFragment.getStart(t),x.closingFragment.getEnd());return f1(A,\"code\",A,!1,\"<>...</>\")}function f(x){if(x.properties.length!==0)return CP(x.getStart(t),x.getEnd(),\"code\")}function d(x){if(!(x.kind===14&&x.text.length===0))return CP(x.getStart(t),x.getEnd(),\"code\")}function g(x,A=18){return m(x,!1,!fu(x.parent)&&!Pa(x.parent),A)}function m(x,A=!1,w=!0,C=18,P=C===18?19:23){let F=Yo(e,C,t),B=Yo(e,P,t);return F&&B&&dG(F,B,x,t,A,w)}function v(x){return x.length?f1(lv(x),\"code\"):void 0}function S(x){if(Gf(x.getStart(),x.getEnd(),t))return;let A=Wc(x.getStart(),x.getEnd());return f1(A,\"code\",Du(x))}}function nVe(e,t,r){let i=rVe(e,t,r),o=Yo(t,19,r);return i&&o&&dG(i,o,e,r,e.kind!==216)}function dG(e,t,r,i,o=!1,s=!0){let l=Wc(s?e.getFullStart():e.getStart(i),t.getEnd());return f1(l,\"code\",Du(r,i),o)}function f1(e,t,r=e,i=!1,o=\"...\"){return{textSpan:e,kind:t,hintSpan:r,bannerText:o,autoCollapse:i}}function rVe(e,t,r){if(ale(e.parameters,r)){let i=Yo(e,20,r);if(i)return i}return Yo(t,18,r)}var l1e,iVe=gt({\"src/services/outliningElementsCollector.ts\"(){\"use strict\";Fr(),l1e=/^#(end)?region(?:\\s+(.*))?(?:\\r)?$/}}),See={};Mo(See,{collectElements:()=>QUe});var aVe=gt({\"src/services/_namespaces/ts.OutliningElementsCollector.ts\"(){\"use strict\";iVe()}});function Vh(e,t){fG.set(e,t)}function oVe(e){return lo(OU(fG.values(),t=>{var r;return e.cancellationToken&&e.cancellationToken.isCancellationRequested()||!((r=t.kinds)!=null&&r.some(i=>pv(i,e.kind)))?void 0:t.getAvailableActions(e)}))}function sVe(e,t,r){let i=fG.get(t);return i&&i.getEditsForAction(e,r)}var fG,cVe=gt({\"src/services/refactorProvider.ts\"(){\"use strict\";Fr(),Qm(),fG=new Map}});function u1e(e,t=!0){let{file:r,program:i}=e,o=ZS(e),s=Vi(r,o.start),l=!!(s.parent&&Yy(s.parent)&1)&&t?s.parent:WN(s,r,o);if(!l||!Li(l.parent)&&!(Tp(l.parent)&&lu(l.parent.parent)))return{error:uo(_.Could_not_find_export_statement)};let f=i.getTypeChecker(),d=pVe(l.parent,f),g=Yy(l)||(pc(l)&&!l.isExportEquals?1025:0),m=!!(g&1024);if(!(g&1)||!m&&d.exports.has(\"default\"))return{error:uo(_.This_file_already_has_a_default_export)};let v=S=>Re(S)&&f.getSymbolAtLocation(S)?void 0:{error:uo(_.Can_only_convert_named_export)};switch(l.kind){case 259:case 260:case 261:case 263:case 262:case 264:{let S=l;return S.name?v(S.name)||{exportNode:S,exportName:S.name,wasDefault:m,exportingModuleSymbol:d}:void 0}case 240:{let S=l;if(!(S.declarationList.flags&2)||S.declarationList.declarations.length!==1)return;let x=Vo(S.declarationList.declarations);return x.initializer?(L.assert(!m,\"Can't have a default flag here\"),v(x.name)||{exportNode:S,exportName:x.name,wasDefault:m,exportingModuleSymbol:d}):void 0}case 274:{let S=l;return S.isExportEquals?void 0:v(S.expression)||{exportNode:S,exportName:S.expression,wasDefault:m,exportingModuleSymbol:d}}default:return}}function lVe(e,t,r,i,o){uVe(e,r,i,t.getTypeChecker()),dVe(t,r,i,o)}function uVe(e,{wasDefault:t,exportNode:r,exportName:i},o,s){if(t)if(pc(r)&&!r.isExportEquals){let l=r.expression,f=d1e(l.text,l.text);o.replaceNode(e,r,D.createExportDeclaration(void 0,!1,D.createNamedExports([f])))}else o.delete(e,L.checkDefined(J2(r,88),\"Should find a default keyword in modifier list\"));else{let l=L.checkDefined(J2(r,93),\"Should find an export keyword in modifier list\");switch(r.kind){case 259:case 260:case 261:o.insertNodeAfter(e,l,D.createToken(88));break;case 240:let f=Vo(r.declarationList.declarations);if(!js.Core.isSymbolReferencedInFile(i,s,e)&&!f.type){o.replaceNode(e,r,D.createExportDefault(L.checkDefined(f.initializer,\"Initializer was previously known to be present\")));break}case 263:case 262:case 264:o.deleteModifier(e,l),o.insertNodeAfter(e,r,D.createExportDefault(D.createIdentifier(i.text)));break;default:L.fail(`Unexpected exportNode kind ${r.kind}`)}}}function dVe(e,{wasDefault:t,exportName:r,exportingModuleSymbol:i},o,s){let l=e.getTypeChecker(),f=L.checkDefined(l.getSymbolAtLocation(r),\"Export name should resolve to a symbol\");js.Core.eachExportReference(e.getSourceFiles(),l,s,f,i,r.text,t,d=>{if(r===d)return;let g=d.getSourceFile();t?fVe(g,d,o,r.text):_Ve(g,d,o)})}function fVe(e,t,r,i){let{parent:o}=t;switch(o.kind){case 208:r.replaceNode(e,t,D.createIdentifier(i));break;case 273:case 278:{let l=o;r.replaceNode(e,l,xee(i,l.name.text));break}case 270:{let l=o;L.assert(l.name===t,\"Import clause name should match provided ref\");let f=xee(i,t.text),{namedBindings:d}=l;if(!d)r.replaceNode(e,t,D.createNamedImports([f]));else if(d.kind===271){r.deleteRange(e,{pos:t.getStart(e),end:d.getStart(e)});let g=yo(l.parent.moduleSpecifier)?sY(l.parent.moduleSpecifier,e):1,m=Xg(void 0,[xee(i,t.text)],l.parent.moduleSpecifier,g);r.insertNodeAfter(e,l.parent,m)}else r.delete(e,t),r.insertNodeAtEndOfList(e,d.elements,f);break}case 202:let s=o;r.replaceNode(e,o,D.createImportTypeNode(s.argument,s.assertions,D.createIdentifier(i),s.typeArguments,s.isTypeOf));break;default:L.failBadSyntaxKind(o)}}function _Ve(e,t,r){let i=t.parent;switch(i.kind){case 208:r.replaceNode(e,t,D.createIdentifier(\"default\"));break;case 273:{let o=D.createIdentifier(i.name.text);i.parent.elements.length===1?r.replaceNode(e,i.parent,o):(r.delete(e,i),r.insertNodeBefore(e,i.parent,o));break}case 278:{r.replaceNode(e,i,d1e(\"default\",i.name.text));break}default:L.assertNever(i,`Unexpected parent kind ${i.kind}`)}}function xee(e,t){return D.createImportSpecifier(!1,e===t?void 0:D.createIdentifier(e),D.createIdentifier(t))}function d1e(e,t){return D.createExportSpecifier(!1,e===t?void 0:D.createIdentifier(e),D.createIdentifier(t))}function pVe(e,t){if(Li(e))return e.symbol;let r=e.parent.symbol;return r.valueDeclaration&&D0(r.valueDeclaration)?t.getMergedSymbol(r):r}var _G,IP,LP,mVe=gt({\"src/services/refactors/convertExport.ts\"(){\"use strict\";Fr(),Qm(),_G=\"Convert export\",IP={name:\"Convert default export to named export\",description:_.Convert_default_export_to_named_export.message,kind:\"refactor.rewrite.export.named\"},LP={name:\"Convert named export to default export\",description:_.Convert_named_export_to_default_export.message,kind:\"refactor.rewrite.export.default\"},Vh(_G,{kinds:[IP.kind,LP.kind],getAvailableActions:function(t){let r=u1e(t,t.triggerReason===\"invoked\");if(!r)return Je;if(!$m(r)){let i=r.wasDefault?IP:LP;return[{name:_G,description:i.description,actions:[i]}]}return t.preferences.provideRefactorNotApplicableReason?[{name:_G,description:_.Convert_default_export_to_named_export.message,actions:[{...IP,notApplicableReason:r.error},{...LP,notApplicableReason:r.error}]}]:Je},getEditsForAction:function(t,r){L.assert(r===IP.name||r===LP.name,\"Unexpected action name\");let i=u1e(t);return L.assert(i&&!$m(i),\"Expected applicable refactor info\"),{edits:nr.ChangeTracker.with(t,s=>lVe(t.file,t.program,i,s,t.cancellationToken)),renameFilename:void 0,renameLocation:void 0}}})}});function f1e(e,t=!0){let{file:r}=e,i=ZS(e),o=Vi(r,i.start),s=t?jn(o,gl):WN(o,r,i);if(!s||!gl(s))return{error:\"Selection is not an import declaration.\"};let l=i.start+i.length,f=n1(s,s.parent,r);if(f&&l>f.getStart())return;let{importClause:d}=s;return d?d.namedBindings?d.namedBindings.kind===271?{convertTo:0,import:d.namedBindings}:_1e(e.program,d)?{convertTo:1,import:d.namedBindings}:{convertTo:2,import:d.namedBindings}:{error:uo(_.Could_not_find_namespace_import_or_named_imports)}:{error:uo(_.Could_not_find_import_clause)}}function _1e(e,t){return RT(e.getCompilerOptions())&&vVe(t.parent.moduleSpecifier,e.getTypeChecker())}function hVe(e,t,r,i){let o=t.getTypeChecker();i.convertTo===0?gVe(e,o,r,i.import,RT(t.getCompilerOptions())):m1e(e,t,r,i.import,i.convertTo===1)}function gVe(e,t,r,i,o){let s=!1,l=[],f=new Map;js.Core.eachSymbolReferenceInFile(i.name,t,e,v=>{if(!fse(v.parent))s=!0;else{let S=p1e(v.parent).text;t.resolveName(S,v,67108863,!0)&&f.set(S,!0),L.assert(yVe(v.parent)===v,\"Parent expression should match id\"),l.push(v.parent)}});let d=new Map;for(let v of l){let S=p1e(v).text,x=d.get(S);x===void 0&&d.set(S,x=f.has(S)?a1(S,e):S),r.replaceNode(e,v,D.createIdentifier(x))}let g=[];d.forEach((v,S)=>{g.push(D.createImportSpecifier(!1,v===S?void 0:D.createIdentifier(S),D.createIdentifier(v)))});let m=i.parent.parent;s&&!o?r.insertNodeAfter(e,m,Aee(m,void 0,g)):r.replaceNode(e,m,Aee(m,s?D.createIdentifier(i.name.text):void 0,g))}function p1e(e){return br(e)?e.name:e.right}function yVe(e){return br(e)?e.expression:e.left}function m1e(e,t,r,i,o=_1e(t,i.parent)){let s=t.getTypeChecker(),l=i.parent.parent,{moduleSpecifier:f}=l,d=new Set;i.elements.forEach(A=>{let w=s.getSymbolAtLocation(A.name);w&&d.add(w)});let g=f&&yo(f)?gu.moduleSpecifierToValidIdentifier(f.text,99):\"module\";function m(A){return!!js.Core.eachSymbolReferenceInFile(A.name,s,e,w=>{let C=s.resolveName(g,w,67108863,!0);return C?d.has(C)?Mu(w.parent):!0:!1})}let S=i.elements.some(m)?a1(g,e):g,x=new Set;for(let A of i.elements){let w=(A.propertyName||A.name).text;js.Core.eachSymbolReferenceInFile(A.name,s,e,C=>{let P=D.createPropertyAccessExpression(D.createIdentifier(S),w);Sf(C.parent)?r.replaceNode(e,C.parent,D.createPropertyAssignment(C.text,P)):Mu(C.parent)?x.add(A):r.replaceNode(e,C,P)})}if(r.replaceNode(e,i,o?D.createIdentifier(S):D.createNamespaceImport(D.createIdentifier(S))),x.size){let A=lo(x.values(),w=>D.createImportSpecifier(w.isTypeOnly,w.propertyName&&D.createIdentifier(w.propertyName.text),D.createIdentifier(w.name.text)));r.insertNodeAfter(e,i.parent.parent,Aee(l,void 0,A))}}function vVe(e,t){let r=t.resolveExternalModuleName(e);if(!r)return!1;let i=t.resolveExternalModuleSymbol(r);return r!==i}function Aee(e,t,r){return D.createImportDeclaration(void 0,D.createImportClause(!1,t,r&&r.length?D.createNamedImports(r):void 0),e.moduleSpecifier,void 0)}var pG,kP,bVe=gt({\"src/services/refactors/convertImport.ts\"(){\"use strict\";Fr(),Qm(),pG=\"Convert import\",kP={[0]:{name:\"Convert namespace import to named imports\",description:_.Convert_namespace_import_to_named_imports.message,kind:\"refactor.rewrite.import.named\"},[2]:{name:\"Convert named imports to namespace import\",description:_.Convert_named_imports_to_namespace_import.message,kind:\"refactor.rewrite.import.namespace\"},[1]:{name:\"Convert named imports to default import\",description:_.Convert_named_imports_to_default_import.message,kind:\"refactor.rewrite.import.default\"}},Vh(pG,{kinds:W1(kP).map(e=>e.kind),getAvailableActions:function(t){let r=f1e(t,t.triggerReason===\"invoked\");if(!r)return Je;if(!$m(r)){let i=kP[r.convertTo];return[{name:pG,description:i.description,actions:[i]}]}return t.preferences.provideRefactorNotApplicableReason?W1(kP).map(i=>({name:pG,description:i.description,actions:[{...i,notApplicableReason:r.error}]})):Je},getEditsForAction:function(t,r){L.assert(vt(W1(kP),s=>s.name===r),\"Unexpected action name\");let i=f1e(t);return L.assert(i&&!$m(i),\"Expected applicable refactor info\"),{edits:nr.ChangeTracker.with(t,s=>hVe(t.file,t.program,s,i)),renameFilename:void 0,renameLocation:void 0}}})}});function h1e(e,t=!0){let{file:r,startPosition:i}=e,o=Cu(r),s=Vi(r,i),l=y7(ZS(e)),f=l.pos===l.end&&t,d=jn(s,x=>x.parent&&bi(x)&&!Ab(l,x.parent,r)&&(f||HX(s,r,l.pos,l.end)));if(!d||!bi(d))return{error:uo(_.Selection_is_not_a_valid_type_node)};let g=e.program.getTypeChecker(),m=AVe(d,o);if(m===void 0)return{error:uo(_.No_type_could_be_extracted_from_this_type_node)};let v=EVe(g,d,m,r);if(!v)return{error:uo(_.No_type_could_be_extracted_from_this_type_node)};let S=Cee(g,d);return{isJS:o,selection:d,enclosingNode:m,typeParameters:v,typeElements:S}}function Cee(e,t){if(!!t)if(fO(t)){let r=[],i=new Map;for(let o of t.types){let s=Cee(e,o);if(!s||!s.every(l=>l.name&&U_(i,jN(l.name))))return;si(r,s)}return r}else{if(RS(t))return Cee(e,t.type);if(Rd(t))return t.members}}function Ab(e,t,r){return NN(e,xo(r.text,t.pos),t.end)}function EVe(e,t,r,i){let o=[];return s(t)?void 0:o;function s(l){if(p_(l)){if(Re(l.typeName)){let f=l.typeName,d=e.resolveName(f.text,f,262144,!0);for(let g of d?.declarations||Je)if(_c(g)&&g.getSourceFile()===i){if(g.name.escapedText===f.escapedText&&Ab(g,t,i))return!0;if(Ab(r,g,i)&&!Ab(t,g,i)){Rf(o,g);break}}}}else if(g2(l)){let f=jn(l,d=>h2(d)&&Ab(d.extendsType,l,i));if(!f||!Ab(t,f,i))return!0}else if(l3(l)||u3(l)){let f=jn(l.parent,Ia);if(f&&f.type&&Ab(f.type,l,i)&&!Ab(t,f,i))return!0}else if(bL(l)){if(Re(l.exprName)){let f=e.resolveName(l.exprName.text,l.exprName,111551,!1);if(f?.valueDeclaration&&Ab(r,f.valueDeclaration,i)&&!Ab(t,f.valueDeclaration,i))return!0}else if(kT(l.exprName.left)&&!Ab(t,l.parent,i))return!0}return i&&m2(l)&&Gs(i,l.pos).line===Gs(i,l.end).line&&Jn(l,1),pa(l,s)}}function TVe(e,t,r,i){let{enclosingNode:o,selection:s,typeParameters:l}=i,f=D.createTypeAliasDeclaration(void 0,r,l.map(d=>D.updateTypeParameterDeclaration(d,d.modifiers,d.name,d.constraint,void 0)),s);e.insertNodeBefore(t,o,Tz(f),!0),e.replaceNode(t,s,D.createTypeReferenceNode(r,l.map(d=>D.createTypeReferenceNode(d.name,void 0))),{leadingTriviaOption:nr.LeadingTriviaOption.Exclude,trailingTriviaOption:nr.TrailingTriviaOption.ExcludeWhitespace})}function SVe(e,t,r,i){var o;let{enclosingNode:s,selection:l,typeParameters:f,typeElements:d}=i,g=D.createInterfaceDeclaration(void 0,r,f,void 0,d);it(g,(o=d[0])==null?void 0:o.parent),e.insertNodeBefore(t,s,Tz(g),!0),e.replaceNode(t,l,D.createTypeReferenceNode(r,f.map(m=>D.createTypeReferenceNode(m.name,void 0))),{leadingTriviaOption:nr.LeadingTriviaOption.Exclude,trailingTriviaOption:nr.TrailingTriviaOption.ExcludeWhitespace})}function xVe(e,t,r,i,o){var s;let{enclosingNode:l,selection:f,typeParameters:d}=o;Jn(f,7168);let g=D.createJSDocTypedefTag(D.createIdentifier(\"typedef\"),D.createJSDocTypeExpression(f),D.createIdentifier(i)),m=[];mn(d,S=>{let x=TA(S),A=D.createTypeParameterDeclaration(void 0,S.name),w=D.createJSDocTemplateTag(D.createIdentifier(\"template\"),x&&Ga(x,VT),[A]);m.push(w)});let v=D.createJSDocComment(void 0,D.createNodeArray(Qi(m,[g])));if(dm(l)){let S=l.getStart(r),x=bb(t.host,(s=t.formatContext)==null?void 0:s.options);e.insertNodeAt(r,l.getStart(r),v,{suffix:x+x+r.text.slice(hY(r.text,S-1),S)})}else e.insertNodeBefore(r,l,v,!0);e.replaceNode(r,f,D.createTypeReferenceNode(i,d.map(S=>D.createTypeReferenceNode(S.name,void 0))))}function AVe(e,t){return jn(e,ca)||(t?jn(e,dm):void 0)}var mG,DP,wP,RP,CVe=gt({\"src/services/refactors/extractType.ts\"(){\"use strict\";Fr(),Qm(),mG=\"Extract type\",DP={name:\"Extract to type alias\",description:uo(_.Extract_to_type_alias),kind:\"refactor.extract.type\"},wP={name:\"Extract to interface\",description:uo(_.Extract_to_interface),kind:\"refactor.extract.interface\"},RP={name:\"Extract to typedef\",description:uo(_.Extract_to_typedef),kind:\"refactor.extract.typedef\"},Vh(mG,{kinds:[DP.kind,wP.kind,RP.kind],getAvailableActions:function(t){let r=h1e(t,t.triggerReason===\"invoked\");return r?$m(r)?t.preferences.provideRefactorNotApplicableReason?[{name:mG,description:uo(_.Extract_type),actions:[{...RP,notApplicableReason:r.error},{...DP,notApplicableReason:r.error},{...wP,notApplicableReason:r.error}]}]:Je:[{name:mG,description:uo(_.Extract_type),actions:r.isJS?[RP]:Sn([DP],r.typeElements&&wP)}]:Je},getEditsForAction:function(t,r){let{file:i}=t,o=h1e(t);L.assert(o&&!$m(o),\"Expected to find a range to extract\");let s=a1(\"NewType\",i),l=nr.ChangeTracker.with(t,g=>{switch(r){case DP.name:return L.assert(!o.isJS,\"Invalid actionName/JS combo\"),TVe(g,i,s,o);case RP.name:return L.assert(o.isJS,\"Invalid actionName/JS combo\"),xVe(g,t,i,s,o);case wP.name:return L.assert(!o.isJS&&!!o.typeElements,\"Invalid actionName/JS combo\"),SVe(g,i,s,o);default:L.fail(\"Unexpected action name\")}}),f=i.fileName,d=qN(l,f,s,!1);return{edits:l,renameFilename:f,renameLocation:d}}})}});function $m(e){return e.error!==void 0}function pv(e,t){return t?e.substr(0,t.length)===t:!0}var IVe=gt({\"src/services/refactors/helpers.ts\"(){\"use strict\"}});function LVe(e){let{file:t}=e,r=y7(ZS(e)),{statements:i}=t,o=Yc(i,f=>f.end>r.pos);if(o===-1)return;let s=i[o];if(zl(s)&&s.name&&Od(s.name,r))return{toMove:[i[o]],afterLast:i[o+1]};if(r.pos>s.getStart(t))return;let l=Yc(i,f=>f.end>r.end,o);if(!(l!==-1&&(l===0||i[l].getStart(t)<r.end)))return{toMove:i.slice(o,l===-1?i.length:l),afterLast:l===-1?void 0:i[l]}}function kVe(e,t,r,i,o,s){let l=t.getTypeChecker(),f=JVe(e,r.all,l),d=ni(e.fileName),g=HR(e.fileName),m=vi(d,WVe(zVe(f.oldFileImportsFromNewFile,f.movedSymbols),g,d,o))+g;i.createNewFile(e,m,OVe(e,f,i,r,t,o,m,s)),RVe(t,i,e.fileName,m,lb(o))}function g1e(e){let t=LVe(e);if(t===void 0)return;let r=[],i=[],{toMove:o,afterLast:s}=t;return PU(o,DVe,(l,f)=>{for(let d=l;d<f;d++)r.push(o[d]);i.push({first:o[l],afterLast:s})}),r.length===0?void 0:{all:r,ranges:i}}function DVe(e){return!wVe(e)&&!G_(e)}function wVe(e){switch(e.kind){case 269:return!0;case 268:return!Mr(e,1);case 240:return e.declarationList.declarations.every(t=>!!t.initializer&&qu(t.initializer,!0));default:return!1}}function RVe(e,t,r,i,o){let s=e.getCompilerOptions().configFile;if(!s)return;let l=So(vi(r,\"..\",i)),f=pw(s.fileName,l,o),d=s.statements[0]&&zr(s.statements[0].expression,rs),g=d&&wr(d.properties,m=>yl(m)&&yo(m.name)&&m.name.text===\"files\");g&&fu(g.initializer)&&t.insertNodeInListAfter(s,To(g.initializer.elements),D.createStringLiteral(f),g.initializer.elements)}function OVe(e,t,r,i,o,s,l,f){let d=o.getTypeChecker(),g=v8(e.statements,G_);if(e.externalModuleIndicator===void 0&&e.commonJsModuleIndicator===void 0&&t.oldImportsNeededByNewFile.size()===0)return y1e(e,i.ranges,r),[...g,...i.all];let m=!!e.externalModuleIndicator,v=z_(e,f),S=BVe(e,t.oldFileImportsFromNewFile,l,o,s,m,v);S&&L7(r,e,S,!0,f),NVe(e,i.all,r,t.unusedImportsFromOldFile,d),y1e(e,i.ranges,r),PVe(r,o,s,e,t.movedSymbols,l);let x=HVe(e,t.oldImportsNeededByNewFile,t.newFileImportsFromOldFile,r,d,o,s,m,v),A=UVe(e,i.all,t.oldFileImportsFromNewFile,m);return x.length&&A.length?[...g,...x,4,...A]:[...g,...x,...A]}function y1e(e,t,r){for(let{first:i,afterLast:o}of t)r.deleteNodeRangeExcludingEnd(e,i,o)}function NVe(e,t,r,i,o){for(let s of e.statements)ya(t,s)||Iee(s,l=>T1e(e,l,r,f=>i.has(o.getSymbolAtLocation(f))))}function PVe(e,t,r,i,o,s){let l=t.getTypeChecker();for(let f of t.getSourceFiles())if(f!==i)for(let d of f.statements)Iee(d,g=>{if(l.getSymbolAtLocation(v1e(g))!==i.symbol)return;let m=w=>{let C=Wo(w.parent)?I7(l,w.parent):wd(l.getSymbolAtLocation(w),l);return!!C&&o.has(C)};T1e(f,g,e,m);let v=Fy(ni(i.path),s),S=sF(t.getCompilerOptions(),f,f.path,v,QS(t,r)),x=A1e(g,D.createStringLiteral(S),m);x&&e.insertNodeAfter(f,d,x);let A=MVe(g);A&&FVe(e,f,l,o,S,A,g)})}function MVe(e){switch(e.kind){case 269:return e.importClause&&e.importClause.namedBindings&&e.importClause.namedBindings.kind===271?e.importClause.namedBindings.name:void 0;case 268:return e.name;case 257:return zr(e.name,Re);default:return L.assertNever(e,`Unexpected node kind ${e.kind}`)}}function FVe(e,t,r,i,o,s,l){let f=gu.moduleSpecifierToValidIdentifier(o,99),d=!1,g=[];if(js.Core.eachSymbolReferenceInFile(s,r,t,m=>{!br(m.parent)||(d=d||!!r.resolveName(f,m,67108863,!0),i.has(r.getSymbolAtLocation(m.parent.name))&&g.push(m))}),g.length){let m=d?a1(f,t):f;for(let v of g)e.replaceNode(t,v,D.createIdentifier(m));e.insertNodeAfter(t,l,GVe(l,f,o))}}function GVe(e,t,r){let i=D.createIdentifier(t),o=D.createStringLiteral(r);switch(e.kind){case 269:return D.createImportDeclaration(void 0,D.createImportClause(!1,void 0,D.createNamespaceImport(i)),o,void 0);case 268:return D.createImportEqualsDeclaration(void 0,!1,i,D.createExternalModuleReference(o));case 257:return D.createVariableDeclaration(i,void 0,void 0,Lee(o));default:return L.assertNever(e,`Unexpected node kind ${e.kind}`)}}function v1e(e){return e.kind===269?e.moduleSpecifier:e.kind===268?e.moduleReference.expression:e.initializer.arguments[0]}function Iee(e,t){if(gl(e))yo(e.moduleSpecifier)&&t(e);else if(Nl(e))um(e.moduleReference)&&es(e.moduleReference.expression)&&t(e);else if(Bc(e))for(let r of e.declarationList.declarations)r.initializer&&qu(r.initializer,!0)&&t(r)}function BVe(e,t,r,i,o,s,l){let f,d=[];return t.forEach(g=>{g.escapedName===\"default\"?f=D.createIdentifier(x7(g)):d.push(g.name)}),b1e(e,f,d,r,i,o,s,l)}function b1e(e,t,r,i,o,s,l,f){let d=Fy(ni(e.path),i),g=sF(o.getCompilerOptions(),e,e.path,d,QS(o,s));if(l){let m=r.map(v=>D.createImportSpecifier(!1,void 0,D.createIdentifier(v)));return jhe(t,m,g,f)}else{L.assert(!t,\"No default import should exist\");let m=r.map(v=>D.createBindingElement(void 0,void 0,v));return m.length?E1e(D.createObjectBindingPattern(m),void 0,Lee(D.createStringLiteral(g))):void 0}}function E1e(e,t,r,i=2){return D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(e,void 0,t,r)],i))}function Lee(e){return D.createCallExpression(D.createIdentifier(\"require\"),void 0,[e])}function UVe(e,t,r,i){return Uo(t,o=>{if(YVe(o)&&!R1e(e,o,i)&&k1e(o,s=>{var l;return r.has(L.checkDefined((l=zr(s,$p))==null?void 0:l.symbol))})){let s=ZVe(o,i);if(s)return s}return o})}function T1e(e,t,r,i){switch(t.kind){case 269:VVe(e,t,r,i);break;case 268:i(t.name)&&r.delete(e,t);break;case 257:jVe(e,t,r,i);break;default:L.assertNever(t,`Unexpected import decl kind ${t.kind}`)}}function VVe(e,t,r,i){if(!t.importClause)return;let{name:o,namedBindings:s}=t.importClause,l=!o||i(o),f=!s||(s.kind===271?i(s.name):s.elements.length!==0&&s.elements.every(d=>i(d.name)));if(l&&f)r.delete(e,t);else if(o&&l&&r.delete(e,o),s){if(f)r.replaceNode(e,t.importClause,D.updateImportClause(t.importClause,t.importClause.isTypeOnly,o,void 0));else if(s.kind===272)for(let d of s.elements)i(d.name)&&r.delete(e,d)}}function jVe(e,t,r,i){let{name:o}=t;switch(o.kind){case 79:i(o)&&(t.initializer&&qu(t.initializer,!0)?r.delete(e,pu(t.parent)&&Fn(t.parent.declarations)===1?t.parent.parent:t):r.delete(e,o));break;case 204:break;case 203:if(o.elements.every(s=>Re(s.name)&&i(s.name)))r.delete(e,pu(t.parent)&&t.parent.declarations.length===1?t.parent.parent:t);else for(let s of o.elements)Re(s.name)&&i(s.name)&&r.delete(e,s.name);break}}function HVe(e,t,r,i,o,s,l,f,d){let g=[];for(let x of e.statements)Iee(x,A=>{Sn(g,A1e(A,v1e(A),w=>t.has(o.getSymbolAtLocation(w))))});let m,v=[],S=z2();return r.forEach(x=>{if(!!x.declarations)for(let A of x.declarations){if(!I1e(A))continue;let w=$Ve(A);if(!w)continue;let C=w1e(A);S(C)&&QVe(e,C,w,i,f),Mr(A,1024)?m=w:v.push(w.text)}}),Sn(g,b1e(e,m,v,Hl(e.fileName),s,l,f,d)),g}function WVe(e,t,r,i){let o=e;for(let s=1;;s++){let l=vi(r,o+t);if(!i.fileExists(l))return o;o=`${e}.${s}`}}function zVe(e,t){return e.forEachEntry(x7)||t.forEachEntry(x7)||\"newFile\"}function JVe(e,t,r){let i=new Lk,o=new Lk,s=new Lk,l=wr(t,v=>!!(v.transformFlags&2)),f=m(l);f&&o.add(f);for(let v of t)k1e(v,S=>{i.add(L.checkDefined(Ol(S)?r.getSymbolAtLocation(S.expression.left):S.symbol,\"Need a symbol here\"))});for(let v of t)C1e(v,r,S=>{if(!!S.declarations)for(let x of S.declarations)S1e(x)?o.add(S):I1e(x)&&XVe(x)===e&&!i.has(S)&&s.add(S)});let d=o.clone(),g=new Lk;for(let v of e.statements)ya(t,v)||(f&&!!(v.transformFlags&2)&&d.delete(f),C1e(v,r,S=>{i.has(S)&&g.add(S),d.delete(S)}));return{movedSymbols:i,newFileImportsFromOldFile:s,oldFileImportsFromNewFile:g,oldImportsNeededByNewFile:o,unusedImportsFromOldFile:d};function m(v){if(v===void 0)return;let S=r.getJsxNamespace(v),x=r.resolveName(S,v,1920,!0);return!!x&&vt(x.declarations,S1e)?x:void 0}}function S1e(e){switch(e.kind){case 268:case 273:case 270:case 271:return!0;case 257:return x1e(e);case 205:return wi(e.parent.parent)&&x1e(e.parent.parent);default:return!1}}function x1e(e){return Li(e.parent.parent.parent)&&!!e.initializer&&qu(e.initializer,!0)}function A1e(e,t,r){switch(e.kind){case 269:{let i=e.importClause;if(!i)return;let o=i.name&&r(i.name)?i.name:void 0,s=i.namedBindings&&KVe(i.namedBindings,r);return o||s?D.createImportDeclaration(void 0,D.createImportClause(i.isTypeOnly,o,s),t,void 0):void 0}case 268:return r(e.name)?e:void 0;case 257:{let i=qVe(e.name,r);return i?E1e(i,e.type,Lee(t),e.parent.flags):void 0}default:return L.assertNever(e,`Unexpected import kind ${e.kind}`)}}function KVe(e,t){if(e.kind===271)return t(e.name)?e:void 0;{let r=e.elements.filter(i=>t(i.name));return r.length?D.createNamedImports(r):void 0}}function qVe(e,t){switch(e.kind){case 79:return t(e)?e:void 0;case 204:return e;case 203:{let r=e.elements.filter(i=>i.propertyName||!Re(i.name)||t(i.name));return r.length?D.createObjectBindingPattern(r):void 0}}}function C1e(e,t,r){e.forEachChild(function i(o){if(Re(o)&&!Rh(o)){let s=t.getSymbolAtLocation(o);s&&r(s)}else o.forEachChild(i)})}function I1e(e){return L1e(e)&&Li(e.parent)||wi(e)&&Li(e.parent.parent.parent)}function XVe(e){return wi(e)?e.parent.parent.parent:e.parent}function YVe(e){return L.assert(Li(e.parent),\"Node parent should be a SourceFile\"),L1e(e)||Bc(e)}function L1e(e){switch(e.kind){case 259:case 260:case 264:case 263:case 262:case 261:case 268:return!0;default:return!1}}function k1e(e,t){switch(e.kind){case 259:case 260:case 264:case 263:case 262:case 261:case 268:return t(e);case 240:return ks(e.declarationList.declarations,r=>D1e(r.name,t));case 241:{let{expression:r}=e;return ar(r)&&ic(r)===1?t(e):void 0}}}function D1e(e,t){switch(e.kind){case 79:return t(Ga(e.parent,r=>wi(r)||Wo(r)));case 204:case 203:return ks(e.elements,r=>ol(r)?void 0:D1e(r.name,t));default:return L.assertNever(e,`Unexpected name kind ${e.kind}`)}}function $Ve(e){return Ol(e)?zr(e.expression.left.name,Re):zr(e.name,Re)}function w1e(e){switch(e.kind){case 257:return e.parent.parent;case 205:return w1e(Ga(e.parent.parent,t=>wi(t)||Wo(t)));default:return e}}function QVe(e,t,r,i,o){if(!R1e(e,t,o,r))if(o)Ol(t)||i.insertExportModifier(e,t);else{let s=kee(t);s.length!==0&&i.insertNodesAfter(e,t,s.map(O1e))}}function R1e(e,t,r,i){var o;return r?!Ol(t)&&Mr(t,1)||!!(i&&((o=e.symbol.exports)==null?void 0:o.has(i.escapedText))):!!e.symbol&&!!e.symbol.exports&&kee(t).some(s=>e.symbol.exports.has(Bs(s)))}function ZVe(e,t){return t?[eje(e)]:tje(e)}function eje(e){let t=h_(e)?Qi([D.createModifier(93)],dT(e)):void 0;switch(e.kind){case 259:return D.updateFunctionDeclaration(e,t,e.asteriskToken,e.name,e.typeParameters,e.parameters,e.type,e.body);case 260:let r=WS(e)?Uy(e):void 0;return D.updateClassDeclaration(e,Qi(r,t),e.name,e.typeParameters,e.heritageClauses,e.members);case 240:return D.updateVariableStatement(e,t,e.declarationList);case 264:return D.updateModuleDeclaration(e,t,e.name,e.body);case 263:return D.updateEnumDeclaration(e,t,e.name,e.members);case 262:return D.updateTypeAliasDeclaration(e,t,e.name,e.typeParameters,e.type);case 261:return D.updateInterfaceDeclaration(e,t,e.name,e.typeParameters,e.heritageClauses,e.members);case 268:return D.updateImportEqualsDeclaration(e,t,e.isTypeOnly,e.name,e.moduleReference);case 241:return L.fail();default:return L.assertNever(e,`Unexpected declaration kind ${e.kind}`)}}function tje(e){return[e,...kee(e).map(O1e)]}function kee(e){switch(e.kind){case 259:case 260:return[e.name.text];case 240:return Zi(e.declarationList.declarations,t=>Re(t.name)?t.name.text:void 0);case 264:case 263:case 262:case 261:case 268:return Je;case 241:return L.fail(\"Can't export an ExpressionStatement\");default:return L.assertNever(e,`Unexpected decl kind ${e.kind}`)}}function O1e(e){return D.createExpressionStatement(D.createBinaryExpression(D.createPropertyAccessExpression(D.createIdentifier(\"exports\"),D.createIdentifier(e)),63,D.createIdentifier(e)))}var Ik,hG,gG,Lk,nje=gt({\"src/services/refactors/moveToNewFile.ts\"(){\"use strict\";L_e(),Fr(),Qm(),Ik=\"Move to a new file\",hG=uo(_.Move_to_a_new_file),gG={name:Ik,description:hG,kind:\"refactor.move.newFile\"},Vh(Ik,{kinds:[gG.kind],getAvailableActions:function(t){let r=g1e(t);return t.preferences.allowTextChangesInNewFiles&&r?[{name:Ik,description:hG,actions:[gG]}]:t.preferences.provideRefactorNotApplicableReason?[{name:Ik,description:hG,actions:[{...gG,notApplicableReason:uo(_.Selection_is_not_a_valid_statement_or_statements)}]}]:Je},getEditsForAction:function(t,r){L.assert(r===Ik,\"Wrong refactor invoked\");let i=L.checkDefined(g1e(t));return{edits:nr.ChangeTracker.with(t,s=>kVe(t.file,t.program,i,s,t.host,t.preferences)),renameFilename:void 0,renameLocation:void 0}}}),Lk=class{constructor(){this.map=new Map}add(e){this.map.set(String($a(e)),e)}has(e){return this.map.has(String($a(e)))}delete(e){this.map.delete(String($a(e)))}forEach(e){this.map.forEach(e)}forEachEntry(e){return Ld(this.map,e)}clone(){let e=new Lk;return Fw(this.map,e.map),e}size(){return this.map.size}}}});function rje(e){let{file:t,startPosition:r,program:i}=e;return P1e(t,r,i)?[{name:yG,description:Dee,actions:[wee]}]:Je}function ije(e){let{file:t,startPosition:r,program:i}=e,o=P1e(t,r,i);if(!o)return;let s=i.getTypeChecker(),l=o[o.length-1],f=l;switch(l.kind){case 170:{f=D.updateMethodSignature(l,l.modifiers,l.name,l.questionToken,l.typeParameters,g(o),l.type);break}case 171:{f=D.updateMethodDeclaration(l,l.modifiers,l.asteriskToken,l.name,l.questionToken,l.typeParameters,g(o),l.type,l.body);break}case 176:{f=D.updateCallSignature(l,l.typeParameters,g(o),l.type);break}case 173:{f=D.updateConstructorDeclaration(l,l.modifiers,g(o),l.body);break}case 177:{f=D.updateConstructSignature(l,l.typeParameters,g(o),l.type);break}case 259:{f=D.updateFunctionDeclaration(l,l.modifiers,l.asteriskToken,l.name,l.typeParameters,g(o),l.type,l.body);break}default:return L.failBadSyntaxKind(l,\"Unhandled signature kind in overload list conversion refactoring\")}if(f===l)return;let d=nr.ChangeTracker.with(e,S=>{S.replaceNodeRange(t,o[0],o[o.length-1],f)});return{renameFilename:void 0,renameLocation:void 0,edits:d};function g(S){let x=S[S.length-1];return Ds(x)&&x.body&&(S=S.slice(0,S.length-1)),D.createNodeArray([D.createParameterDeclaration(void 0,D.createToken(25),\"args\",void 0,D.createUnionTypeNode(on(S,m)))])}function m(S){let x=on(S.parameters,v);return Jn(D.createTupleTypeNode(x),vt(x,A=>!!Fn(u2(A)))?0:1)}function v(S){L.assert(Re(S.name));let x=it(D.createNamedTupleMember(S.dotDotDotToken,S.name,S.questionToken,S.type||D.createKeywordTypeNode(131)),S),A=S.symbol&&S.symbol.getDocumentationComment(s);if(A){let w=Mye(A);w.length&&W0(x,[{text:`*\n${w.split(`\n`).map(C=>` * ${C}`).join(`\n`)}\n `,kind:3,pos:-1,end:-1,hasTrailingNewLine:!0,hasLeadingNewline:!0}])}return x}}function N1e(e){switch(e.kind){case 170:case 171:case 176:case 173:case 177:case 259:return!0}return!1}function P1e(e,t,r){let i=Vi(e,t),o=jn(i,N1e);if(!o||Ds(o)&&o.body&&RN(o.body,t))return;let s=r.getTypeChecker(),l=o.symbol;if(!l)return;let f=l.declarations;if(Fn(f)<=1||!Ji(f,S=>Gn(S)===e)||!N1e(f[0]))return;let d=f[0].kind;if(!Ji(f,S=>S.kind===d))return;let g=f;if(vt(g,S=>!!S.typeParameters||vt(S.parameters,x=>!!x.modifiers||!Re(x.name))))return;let m=Zi(g,S=>s.getSignatureFromDeclaration(S));if(Fn(m)!==Fn(f))return;let v=s.getReturnTypeOfSignature(m[0]);if(!!Ji(m,S=>s.getReturnTypeOfSignature(S)===v))return g}var yG,Dee,wee,aje=gt({\"src/services/refactors/convertOverloadListToSingleSignature.ts\"(){\"use strict\";Fr(),Qm(),yG=\"Convert overload list to single signature\",Dee=_.Convert_overload_list_to_single_signature.message,wee={name:yG,description:Dee,kind:\"refactor.rewrite.function.overloadList\"},Vh(yG,{kinds:[wee.kind],getEditsForAction:ije,getAvailableActions:rje})}});function oje(e){let{file:t,startPosition:r,triggerReason:i}=e,o=M1e(t,r,i===\"invoked\");return o?$m(o)?e.preferences.provideRefactorNotApplicableReason?[{name:vG,description:Ree,actions:[{...OP,notApplicableReason:o.error},{...kk,notApplicableReason:o.error}]}]:Je:[{name:vG,description:Ree,actions:[o.addBraces?OP:kk]}]:Je}function sje(e,t){let{file:r,startPosition:i}=e,o=M1e(r,i);L.assert(o&&!$m(o),\"Expected applicable refactor info\");let{expression:s,returnStatement:l,func:f}=o,d;if(t===OP.name){let m=D.createReturnStatement(s);d=D.createBlock([m],!0),X2(s,m,r,3,!0)}else if(t===kk.name&&l){let m=s||D.createVoidZero();d=bY(m)?D.createParenthesizedExpression(m):m,XN(l,d,r,3,!1),X2(l,d,r,3,!1),ck(l,d,r,3,!1)}else L.fail(\"invalid action\");let g=nr.ChangeTracker.with(e,m=>{m.replaceNode(r,f.body,d)});return{renameFilename:void 0,renameLocation:void 0,edits:g}}function M1e(e,t,r=!0,i){let o=Vi(e,t),s=qd(o);if(!s)return{error:uo(_.Could_not_find_a_containing_arrow_function)};if(!xs(s))return{error:uo(_.Containing_function_is_not_an_arrow_function)};if(!(!Od(s,o)||Od(s.body,o)&&!r)){if(pv(OP.kind,i)&&ot(s.body))return{func:s,addBraces:!0,expression:s.body};if(pv(kk.kind,i)&&Va(s.body)&&s.body.statements.length===1){let l=Vo(s.body.statements);if(V_(l))return{func:s,addBraces:!1,expression:l.expression,returnStatement:l}}}}var vG,Ree,OP,kk,cje=gt({\"src/services/refactors/addOrRemoveBracesToArrowFunction.ts\"(){\"use strict\";Fr(),Qm(),vG=\"Add or remove braces in an arrow function\",Ree=_.Add_or_remove_braces_in_an_arrow_function.message,OP={name:\"Add braces to arrow function\",description:_.Add_braces_to_arrow_function.message,kind:\"refactor.rewrite.arrow.braces.add\"},kk={name:\"Remove braces from arrow function\",description:_.Remove_braces_from_arrow_function.message,kind:\"refactor.rewrite.arrow.braces.remove\"},Vh(vG,{kinds:[kk.kind],getEditsForAction:sje,getAvailableActions:oje})}}),lje={},uje=gt({\"src/services/_namespaces/ts.refactor.addOrRemoveBracesToArrowFunction.ts\"(){\"use strict\";aje(),cje()}});function dje(e){let{file:t,startPosition:r,program:i,kind:o}=e,s=G1e(t,r,i);if(!s)return Je;let{selectedVariableDeclaration:l,func:f}=s,d=[],g=[];if(pv(wk.kind,o)){let m=l||xs(f)&&wi(f.parent)?void 0:uo(_.Could_not_convert_to_named_function);m?g.push({...wk,notApplicableReason:m}):d.push(wk)}if(pv(Dk.kind,o)){let m=!l&&xs(f)?void 0:uo(_.Could_not_convert_to_anonymous_function);m?g.push({...Dk,notApplicableReason:m}):d.push(Dk)}if(pv(Rk.kind,o)){let m=ms(f)?void 0:uo(_.Could_not_convert_to_arrow_function);m?g.push({...Rk,notApplicableReason:m}):d.push(Rk)}return[{name:Oee,description:V1e,actions:d.length===0&&e.preferences.provideRefactorNotApplicableReason?g:d}]}function fje(e,t){let{file:r,startPosition:i,program:o}=e,s=G1e(r,i,o);if(!s)return;let{func:l}=s,f=[];switch(t){case Dk.name:f.push(...hje(e,l));break;case wk.name:let d=mje(l);if(!d)return;f.push(...gje(e,l,d));break;case Rk.name:if(!ms(l))return;f.push(...yje(e,l));break;default:return L.fail(\"invalid action\")}return{renameFilename:void 0,renameLocation:void 0,edits:f}}function F1e(e){let t=!1;return e.forEachChild(function r(i){if(W2(i)){t=!0;return}!Yr(i)&&!Jc(i)&&!ms(i)&&pa(i,r)}),t}function G1e(e,t,r){let i=Vi(e,t),o=r.getTypeChecker(),s=pje(e,o,i.parent);if(s&&!F1e(s.body)&&!o.containsArgumentsReference(s))return{selectedVariableDeclaration:!0,func:s};let l=qd(i);if(l&&(ms(l)||xs(l))&&!Od(l.body,i)&&!F1e(l.body)&&!o.containsArgumentsReference(l))return ms(l)&&U1e(e,o,l)?void 0:{selectedVariableDeclaration:!1,func:l}}function _je(e){return wi(e)||pu(e)&&e.declarations.length===1}function pje(e,t,r){if(!_je(r))return;let o=(wi(r)?r:Vo(r.declarations)).initializer;if(o&&(xs(o)||ms(o)&&!U1e(e,t,o)))return o}function B1e(e){if(ot(e)){let t=D.createReturnStatement(e),r=e.getSourceFile();return it(t,e),pd(t),XN(e,t,r,void 0,!0),D.createBlock([t],!0)}else return e}function mje(e){let t=e.parent;if(!wi(t)||!L6(t))return;let r=t.parent,i=r.parent;if(!(!pu(r)||!Bc(i)||!Re(t.name)))return{variableDeclaration:t,variableDeclarationList:r,statement:i,name:t.name}}function hje(e,t){let{file:r}=e,i=B1e(t.body),o=D.createFunctionExpression(t.modifiers,t.asteriskToken,void 0,t.typeParameters,t.parameters,t.type,i);return nr.ChangeTracker.with(e,s=>s.replaceNode(r,t,o))}function gje(e,t,r){let{file:i}=e,o=B1e(t.body),{variableDeclaration:s,variableDeclarationList:l,statement:f,name:d}=r;D7(f);let g=wg(s)&1|uu(t),m=D.createModifiersFromModifierFlags(g),v=D.createFunctionDeclaration(Fn(m)?m:void 0,t.asteriskToken,d,t.typeParameters,t.parameters,t.type,o);return l.declarations.length===1?nr.ChangeTracker.with(e,S=>S.replaceNode(i,f,v)):nr.ChangeTracker.with(e,S=>{S.delete(i,s),S.insertNodeAfter(i,f,v)})}function yje(e,t){let{file:r}=e,o=t.body.statements[0],s;vje(t.body,o)?(s=o.expression,pd(s),i1(o,s)):s=t.body;let l=D.createArrowFunction(t.modifiers,t.typeParameters,t.parameters,t.type,D.createToken(38),s);return nr.ChangeTracker.with(e,f=>f.replaceNode(r,t,l))}function vje(e,t){return e.statements.length===1&&V_(t)&&!!t.expression}function U1e(e,t,r){return!!r.name&&js.Core.isSymbolReferencedInFile(r.name,t,e)}var Oee,V1e,Dk,wk,Rk,bje=gt({\"src/services/refactors/convertArrowFunctionOrFunctionExpression.ts\"(){\"use strict\";Fr(),Qm(),Oee=\"Convert arrow function or function expression\",V1e=uo(_.Convert_arrow_function_or_function_expression),Dk={name:\"Convert to anonymous function\",description:uo(_.Convert_to_anonymous_function),kind:\"refactor.rewrite.function.anonymous\"},wk={name:\"Convert to named function\",description:uo(_.Convert_to_named_function),kind:\"refactor.rewrite.function.named\"},Rk={name:\"Convert to arrow function\",description:uo(_.Convert_to_arrow_function),kind:\"refactor.rewrite.function.arrow\"},Vh(Oee,{kinds:[Dk.kind,wk.kind,Rk.kind],getEditsForAction:fje,getAvailableActions:dje})}}),Eje={},Tje=gt({\"src/services/_namespaces/ts.refactor.convertArrowFunctionOrFunctionExpression.ts\"(){\"use strict\";bje()}});function Sje(e){let{file:t,startPosition:r}=e;return Cu(t)||!W1e(t,r,e.program.getTypeChecker())?Je:[{name:PP,description:Fee,actions:[Gee]}]}function xje(e,t){L.assert(t===PP,\"Unexpected action name\");let{file:r,startPosition:i,program:o,cancellationToken:s,host:l}=e,f=W1e(r,i,o.getTypeChecker());if(!f||!s)return;let d=Cje(f,o,s);if(d.valid){let g=nr.ChangeTracker.with(e,m=>Aje(r,o,l,m,f,d));return{renameFilename:void 0,renameLocation:void 0,edits:g}}return{edits:[]}}function Aje(e,t,r,i,o,s){let l=s.signature,f=on(q1e(o,t,r),m=>cc(m));if(l){let m=on(q1e(l,t,r),v=>cc(v));g(l,m)}g(o,f);let d=WD(s.functionCalls,(m,v)=>Es(m.pos,v.pos));for(let m of d)if(m.arguments&&m.arguments.length){let v=cc(Mje(o,m.arguments),!0);i.replaceNodeRange(Gn(m),Vo(m.arguments),To(m.arguments),v,{leadingTriviaOption:nr.LeadingTriviaOption.IncludeAll,trailingTriviaOption:nr.TrailingTriviaOption.Include})}function g(m,v){i.replaceNodeRangeWithNodes(e,Vo(m.parameters),To(m.parameters),v,{joiner:\", \",indentation:0,leadingTriviaOption:nr.LeadingTriviaOption.IncludeAll,trailingTriviaOption:nr.TrailingTriviaOption.Include})}}function Cje(e,t,r){let i=Gje(e),o=Ec(e)?Fje(e):[],s=_A([...i,...o],Zv),l=t.getTypeChecker(),f=Uo(s,v=>js.getReferenceEntriesForNode(-1,v,t,t.getSourceFiles(),r)),d=g(f);return Ji(d.declarations,v=>ya(s,v))||(d.valid=!1),d;function g(v){let S={accessExpressions:[],typeUsages:[]},x={functionCalls:[],declarations:[],classReferences:S,valid:!0},A=on(i,m),w=on(o,m),C=Ec(e),P=on(i,F=>Nee(F,l));for(let F of v){if(F.kind===js.EntryKind.Span){x.valid=!1;continue}if(ya(P,m(F.node))){if(Dje(F.node.parent)){x.signature=F.node.parent;continue}let q=H1e(F);if(q){x.functionCalls.push(q);continue}}let B=Nee(F.node,l);if(B&&ya(P,B)){let q=Pee(F);if(q){x.declarations.push(q);continue}}if(ya(A,m(F.node))||ek(F.node)){if(j1e(F))continue;let W=Pee(F);if(W){x.declarations.push(W);continue}let Y=H1e(F);if(Y){x.functionCalls.push(Y);continue}}if(C&&ya(w,m(F.node))){if(j1e(F))continue;let W=Pee(F);if(W){x.declarations.push(W);continue}let Y=Ije(F);if(Y){S.accessExpressions.push(Y);continue}if(sl(e.parent)){let R=Lje(F);if(R){S.typeUsages.push(R);continue}}}x.valid=!1}return x}function m(v){let S=l.getSymbolAtLocation(v);return S&&ege(S,l)}}function Nee(e,t){let r=rP(e);if(r){let i=t.getContextualTypeForObjectLiteralElement(r),o=i?.getSymbol();if(o&&!(ac(o)&6))return o}}function j1e(e){let t=e.node;if($u(t.parent)||lm(t.parent)||Nl(t.parent)||nv(t.parent)||Mu(t.parent)||pc(t.parent))return t}function Pee(e){if(Kl(e.node.parent))return e.node}function H1e(e){if(e.node.parent){let t=e.node,r=t.parent;switch(r.kind){case 210:case 211:let i=zr(r,Ih);if(i&&i.expression===t)return i;break;case 208:let o=zr(r,br);if(o&&o.parent&&o.name===t){let l=zr(o.parent,Ih);if(l&&l.expression===o)return l}break;case 209:let s=zr(r,Vs);if(s&&s.parent&&s.argumentExpression===t){let l=zr(s.parent,Ih);if(l&&l.expression===s)return l}break}}}function Ije(e){if(e.node.parent){let t=e.node,r=t.parent;switch(r.kind){case 208:let i=zr(r,br);if(i&&i.expression===t)return i;break;case 209:let o=zr(r,Vs);if(o&&o.expression===t)return o;break}}}function Lje(e){let t=e.node;if(e1(t)===2||LR(t.parent))return t}function W1e(e,t,r){let i=rk(e,t),o=ice(i);if(!kje(i)&&o&&wje(o,r)&&Od(o,i)&&!(o.body&&Od(o.body,i)))return o}function kje(e){let t=jn(e,LA);if(t){let r=jn(t,i=>!LA(i));return!!r&&Ds(r)}return!1}function Dje(e){return zm(e)&&(ku(e.parent)||Rd(e.parent))}function wje(e,t){var r;if(!Rje(e.parameters,t))return!1;switch(e.kind){case 259:return z1e(e)&&NP(e,t);case 171:if(rs(e.parent)){let i=Nee(e.name,t);return((r=i?.declarations)==null?void 0:r.length)===1&&NP(e,t)}return NP(e,t);case 173:return sl(e.parent)?z1e(e.parent)&&NP(e,t):J1e(e.parent.parent)&&NP(e,t);case 215:case 216:return J1e(e.parent)}return!1}function NP(e,t){return!!e.body&&!t.isImplementationOfOverload(e)}function z1e(e){return e.name?!0:!!J2(e,88)}function Rje(e,t){return Nje(e)>=X1e&&Ji(e,r=>Oje(r,t))}function Oje(e,t){if(Fm(e)){let r=t.getTypeAtLocation(e);if(!t.isArrayType(r)&&!t.isTupleType(r))return!1}return!e.modifiers&&Re(e.name)}function J1e(e){return wi(e)&&kh(e)&&Re(e.name)&&!e.type}function Mee(e){return e.length>0&&W2(e[0].name)}function Nje(e){return Mee(e)?e.length-1:e.length}function K1e(e){return Mee(e)&&(e=D.createNodeArray(e.slice(1),e.hasTrailingComma)),e}function Pje(e,t){return Re(t)&&c_(t)===e?D.createShorthandPropertyAssignment(e):D.createPropertyAssignment(e,t)}function Mje(e,t){let r=K1e(e.parameters),i=Fm(To(r)),o=i?t.slice(0,r.length-1):t,s=on(o,(f,d)=>{let g=bG(r[d]),m=Pje(g,f);return pd(m.name),yl(m)&&pd(m.initializer),i1(f,m),m});if(i&&t.length>=r.length){let f=t.slice(r.length-1),d=D.createPropertyAssignment(bG(To(r)),D.createArrayLiteralExpression(f));s.push(d)}return D.createObjectLiteralExpression(s,!1)}function q1e(e,t,r){let i=t.getTypeChecker(),o=K1e(e.parameters),s=on(o,m),l=D.createObjectBindingPattern(s),f=v(o),d;Ji(o,A)&&(d=D.createObjectLiteralExpression());let g=D.createParameterDeclaration(void 0,void 0,l,void 0,f,d);if(Mee(e.parameters)){let w=e.parameters[0],C=D.createParameterDeclaration(void 0,void 0,w.name,void 0,w.type);return pd(C.name),i1(w.name,C.name),w.type&&(pd(C.type),i1(w.type,C.type)),D.createNodeArray([C,g])}return D.createNodeArray([g]);function m(w){let C=D.createBindingElement(void 0,void 0,bG(w),Fm(w)&&A(w)?D.createArrayLiteralExpression():w.initializer);return pd(C),w.initializer&&C.initializer&&i1(w.initializer,C.initializer),C}function v(w){let C=on(w,S);return bp(D.createTypeLiteralNode(C),1)}function S(w){let C=w.type;!C&&(w.initializer||Fm(w))&&(C=x(w));let P=D.createPropertySignature(void 0,bG(w),A(w)?D.createToken(57):w.questionToken,C);return pd(P),i1(w.name,P.name),w.type&&P.type&&i1(w.type,P.type),P}function x(w){let C=i.getTypeAtLocation(w);return uk(C,w,t,r)}function A(w){if(Fm(w)){let C=i.getTypeAtLocation(w);return!i.isTupleType(C)}return i.isOptionalParameter(w)}}function bG(e){return c_(e.name)}function Fje(e){switch(e.parent.kind){case 260:let t=e.parent;return t.name?[t.name]:[L.checkDefined(J2(t,88),\"Nameless class declaration should be a default export\")];case 228:let i=e.parent,o=e.parent.parent,s=i.name;return s?[s,o.name]:[o.name]}}function Gje(e){switch(e.kind){case 259:return e.name?[e.name]:[L.checkDefined(J2(e,88),\"Nameless function declaration should be a default export\")];case 171:return[e.name];case 173:let r=L.checkDefined(Yo(e,135,e.getSourceFile()),\"Constructor declaration should have constructor keyword\");return e.parent.kind===228?[e.parent.parent.name,r]:[r];case 216:return[e.parent.name];case 215:return e.name?[e.name,e.parent.name]:[e.parent.name];default:return L.assertNever(e,`Unexpected function declaration kind ${e.kind}`)}}var PP,X1e,Fee,Gee,Bje=gt({\"src/services/refactors/convertParamsToDestructuredObject.ts\"(){\"use strict\";Fr(),Qm(),PP=\"Convert parameters to destructured object\",X1e=1,Fee=uo(_.Convert_parameters_to_destructured_object),Gee={name:PP,description:Fee,kind:\"refactor.rewrite.parameters.toDestructured\"},Vh(PP,{kinds:[Gee.kind],getEditsForAction:xje,getAvailableActions:Sje})}}),Uje={},Vje=gt({\"src/services/_namespaces/ts.refactor.convertParamsToDestructuredObject.ts\"(){\"use strict\";Bje()}});function jje(e){let{file:t,startPosition:r}=e,i=Y1e(t,r),o=Bee(i),s={name:EG,description:TG,actions:[]};return ar(o)&&Uee(o).isValidConcatenation?(s.actions.push(SG),[s]):e.preferences.provideRefactorNotApplicableReason?(s.actions.push({...SG,notApplicableReason:uo(_.Can_only_convert_string_concatenation)}),[s]):Je}function Y1e(e,t){let r=Vi(e,t),i=Bee(r);return!Uee(i).isValidConcatenation&&ud(i.parent)&&ar(i.parent.parent)?i.parent.parent:r}function Hje(e,t){let{file:r,startPosition:i}=e,o=Y1e(r,i);switch(t){case TG:return{edits:Wje(e,o)};default:return L.fail(\"invalid action\")}}function Wje(e,t){let r=Bee(t),i=e.file,o=Kje(Uee(r),i),s=eb(i.text,r.end);if(s){let l=s[s.length-1],f={pos:s[0].pos,end:l.end};return nr.ChangeTracker.with(e,d=>{d.deleteRange(i,f),d.replaceNode(i,r,o)})}else return nr.ChangeTracker.with(e,l=>l.replaceNode(i,r,o))}function zje(e){return e.operatorToken.kind!==63}function Bee(e){return jn(e.parent,r=>{switch(r.kind){case 208:case 209:return!1;case 225:case 223:return!(ar(r.parent)&&zje(r.parent));default:return\"quit\"}})||e}function Uee(e){let t=l=>{if(!ar(l))return{nodes:[l],operators:[],validOperators:!0,hasString:yo(l)||LS(l)};let{nodes:f,operators:d,hasString:g,validOperators:m}=t(l.left);if(!(g||yo(l.right)||d3(l.right)))return{nodes:[l],operators:[],hasString:!1,validOperators:!0};let v=l.operatorToken.kind===39,S=m&&v;return f.push(l.right),d.push(l.operatorToken),{nodes:f,operators:d,hasString:!0,validOperators:S}},{nodes:r,operators:i,validOperators:o,hasString:s}=t(e);return{nodes:r,operators:i,isValidConcatenation:o&&s}}function Jje(e){return e.replace(/\\\\.|[$`]/g,t=>t[0]===\"\\\\\"?t:\"\\\\\"+t)}function $1e(e){let t=_2(e)||Aue(e)?-2:-1;return Qc(e).slice(1,t)}function Q1e(e,t){let r=[],i=\"\",o=\"\";for(;e<t.length;){let s=t[e];if(es(s))i+=s.text,o+=Jje(Qc(s).slice(1,-1)),r.push(e),e++;else if(d3(s)){i+=s.head.text,o+=$1e(s.head);break}else break}return[e,i,o,r]}function Kje({nodes:e,operators:t},r){let i=eSe(t,r),o=tSe(e,r,i),[s,l,f,d]=Q1e(0,e);if(s===e.length){let v=D.createNoSubstitutionTemplateLiteral(l,f);return o(d,v),v}let g=[],m=D.createTemplateHead(l,f);o(d,m);for(let v=s;v<e.length;v++){let S=qje(e[v]);i(v,S);let[x,A,w,C]=Q1e(v+1,e);v=x-1;let P=v===e.length-1;if(d3(S)){let F=on(S.templateSpans,(B,q)=>{Z1e(B);let W=q===S.templateSpans.length-1,Y=B.literal.text+(W?A:\"\"),R=$1e(B.literal)+(W?w:\"\");return D.createTemplateSpan(B.expression,P&&W?D.createTemplateTail(Y,R):D.createTemplateMiddle(Y,R))});g.push(...F)}else{let F=P?D.createTemplateTail(A,w):D.createTemplateMiddle(A,w);o(C,F),g.push(D.createTemplateSpan(S,F))}}return D.createTemplateExpression(m,g)}function Z1e(e){let t=e.getSourceFile();ck(e,e.expression,t,3,!1),XN(e.expression,e.expression,t,3,!1)}function qje(e){return ud(e)&&(Z1e(e),e=e.expression),e}var EG,TG,SG,eSe,tSe,Xje=gt({\"src/services/refactors/convertStringOrTemplateLiteral.ts\"(){\"use strict\";Fr(),Qm(),EG=\"Convert to template string\",TG=uo(_.Convert_to_template_string),SG={name:EG,description:TG,kind:\"refactor.rewrite.string\"},Vh(EG,{kinds:[SG.kind],getEditsForAction:Hje,getAvailableActions:jje}),eSe=(e,t)=>(r,i)=>{r<e.length&&ck(e[r],i,t,3,!1)},tSe=(e,t,r)=>(i,o)=>{for(;i.length>0;){let s=i.shift();ck(e[s],o,t,3,!1),r(s,o)}}}}),Yje={},$je=gt({\"src/services/_namespaces/ts.refactor.convertStringOrTemplateLiteral.ts\"(){\"use strict\";Xje()}});function Qje(e){let t=nSe(e,e.triggerReason===\"invoked\");return t?$m(t)?e.preferences.provideRefactorNotApplicableReason?[{name:MP,description:CG,actions:[{...IG,notApplicableReason:t.error}]}]:Je:[{name:MP,description:CG,actions:[IG]}]:Je}function Zje(e,t){let r=nSe(e);return L.assert(r&&!$m(r),\"Expected applicable refactor info\"),{edits:nr.ChangeTracker.with(e,o=>sHe(e.file,e.program.getTypeChecker(),o,r,t)),renameFilename:void 0,renameLocation:void 0}}function xG(e){return ar(e)||E2(e)}function eHe(e){return Ol(e)||V_(e)||Bc(e)}function AG(e){return xG(e)||eHe(e)}function nSe(e,t=!0){let{file:r,program:i}=e,o=ZS(e),s=o.length===0;if(s&&!t)return;let l=Vi(r,o.start),f=p7(r,o.start+o.length),d=Wc(l.pos,f&&f.end>=l.pos?f.getEnd():l.getEnd()),g=s?aHe(l):iHe(l,d),m=g&&AG(g)?oHe(g):void 0;if(!m)return{error:uo(_.Could_not_find_convertible_access_expression)};let v=i.getTypeChecker();return E2(m)?tHe(m,v):nHe(m)}function tHe(e,t){let r=e.condition,i=jee(e.whenTrue);if(!i||t.isNullableType(t.getTypeAtLocation(i)))return{error:uo(_.Could_not_find_convertible_access_expression)};if((br(r)||Re(r))&&Vee(r,i.expression))return{finalExpression:i,occurrences:[r],expression:e};if(ar(r)){let o=rSe(i.expression,r);return o?{finalExpression:i,occurrences:o,expression:e}:{error:uo(_.Could_not_find_matching_access_expressions)}}}function nHe(e){if(e.operatorToken.kind!==55)return{error:uo(_.Can_only_convert_logical_AND_access_chains)};let t=jee(e.right);if(!t)return{error:uo(_.Could_not_find_convertible_access_expression)};let r=rSe(t.expression,e.left);return r?{finalExpression:t,occurrences:r,expression:e}:{error:uo(_.Could_not_find_matching_access_expressions)}}function rSe(e,t){let r=[];for(;ar(t)&&t.operatorToken.kind===55;){let o=Vee(vs(e),vs(t.right));if(!o)break;r.push(o),e=o,t=t.left}let i=Vee(e,t);return i&&r.push(i),r.length>0?r:void 0}function Vee(e,t){if(!(!Re(t)&&!br(t)&&!Vs(t)))return rHe(e,t)?t:void 0}function rHe(e,t){for(;(Pa(e)||br(e)||Vs(e))&&Ok(e)!==Ok(t);)e=e.expression;for(;br(e)&&br(t)||Vs(e)&&Vs(t);){if(Ok(e)!==Ok(t))return!1;e=e.expression,t=t.expression}return Re(e)&&Re(t)&&e.getText()===t.getText()}function Ok(e){if(Re(e)||gf(e))return e.getText();if(br(e))return Ok(e.name);if(Vs(e))return Ok(e.argumentExpression)}function iHe(e,t){for(;e.parent;){if(AG(e)&&t.length!==0&&e.end>=t.start+t.length)return e;e=e.parent}}function aHe(e){for(;e.parent;){if(AG(e)&&!AG(e.parent))return e;e=e.parent}}function oHe(e){if(xG(e))return e;if(Bc(e)){let t=WA(e),r=t?.initializer;return r&&xG(r)?r:void 0}return e.expression&&xG(e.expression)?e.expression:void 0}function jee(e){if(e=vs(e),ar(e))return jee(e.left);if((br(e)||Vs(e)||Pa(e))&&!Jl(e))return e}function iSe(e,t,r){if(br(t)||Vs(t)||Pa(t)){let i=iSe(e,t.expression,r),o=r.length>0?r[r.length-1]:void 0,s=o?.getText()===t.expression.getText();if(s&&r.pop(),Pa(t))return s?D.createCallChain(i,D.createToken(28),t.typeArguments,t.arguments):D.createCallChain(i,t.questionDotToken,t.typeArguments,t.arguments);if(br(t))return s?D.createPropertyAccessChain(i,D.createToken(28),t.name):D.createPropertyAccessChain(i,t.questionDotToken,t.name);if(Vs(t))return s?D.createElementAccessChain(i,D.createToken(28),t.argumentExpression):D.createElementAccessChain(i,t.questionDotToken,t.argumentExpression)}return t}function sHe(e,t,r,i,o){let{finalExpression:s,occurrences:l,expression:f}=i,d=l[l.length-1],g=iSe(t,s,l);g&&(br(g)||Vs(g)||Pa(g))&&(ar(f)?r.replaceNodeRange(e,d,s,g):E2(f)&&r.replaceNode(e,f,D.createBinaryExpression(g,D.createToken(60),f.whenFalse)))}var MP,CG,IG,cHe=gt({\"src/services/refactors/convertToOptionalChainExpression.ts\"(){\"use strict\";Fr(),Qm(),MP=\"Convert to optional chain expression\",CG=uo(_.Convert_to_optional_chain_expression),IG={name:MP,description:CG,kind:\"refactor.rewrite.expression.optionalChain\"},Vh(MP,{kinds:[IG.kind],getEditsForAction:Zje,getAvailableActions:Qje})}}),lHe={},uHe=gt({\"src/services/_namespaces/ts.refactor.convertToOptionalChainExpression.ts\"(){\"use strict\";cHe()}});function aSe(e){let t=e.kind,r=Hee(e.file,ZS(e),e.triggerReason===\"invoked\"),i=r.targetRange;if(i===void 0){if(!r.errors||r.errors.length===0||!e.preferences.provideRefactorNotApplicableReason)return Je;let A=[];return pv(mx.kind,t)&&A.push({name:_x,description:mx.description,actions:[{...mx,notApplicableReason:x(r.errors)}]}),pv(px.kind,t)&&A.push({name:_x,description:px.description,actions:[{...px,notApplicableReason:x(r.errors)}]}),A}let o=hHe(i,e);if(o===void 0)return Je;let s=[],l=new Map,f,d=[],g=new Map,m,v=0;for(let{functionExtraction:A,constantExtraction:w}of o){if(pv(mx.kind,t)){let C=A.description;A.errors.length===0?l.has(C)||(l.set(C,!0),s.push({description:C,name:`function_scope_${v}`,kind:mx.kind})):f||(f={description:C,name:`function_scope_${v}`,notApplicableReason:x(A.errors),kind:mx.kind})}if(pv(px.kind,t)){let C=w.description;w.errors.length===0?g.has(C)||(g.set(C,!0),d.push({description:C,name:`constant_scope_${v}`,kind:px.kind})):m||(m={description:C,name:`constant_scope_${v}`,notApplicableReason:x(w.errors),kind:px.kind})}v++}let S=[];return s.length?S.push({name:_x,description:uo(_.Extract_function),actions:s}):e.preferences.provideRefactorNotApplicableReason&&f&&S.push({name:_x,description:uo(_.Extract_function),actions:[f]}),d.length?S.push({name:_x,description:uo(_.Extract_constant),actions:d}):e.preferences.provideRefactorNotApplicableReason&&m&&S.push({name:_x,description:uo(_.Extract_constant),actions:[m]}),S.length?S:Je;function x(A){let w=A[0].messageText;return typeof w!=\"string\"&&(w=w.messageText),w}}function oSe(e,t){let i=Hee(e.file,ZS(e)).targetRange,o=/^function_scope_(\\d+)$/.exec(t);if(o){let l=+o[1];return L.assert(isFinite(l),\"Expected to parse a finite number from the function scope index\"),pHe(i,e,l)}let s=/^constant_scope_(\\d+)$/.exec(t);if(s){let l=+s[1];return L.assert(isFinite(l),\"Expected to parse a finite number from the constant scope index\"),mHe(i,e,l)}L.fail(\"Unrecognized action name\")}function Hee(e,t,r=!0){let{length:i}=t;if(i===0&&!r)return{errors:[al(e,t.start,i,vl.cannotExtractEmpty)]};let o=i===0&&r,s=Ihe(e,t.start),l=p7(e,wl(t)),f=s&&l&&r?dHe(s,l,e):t,d=o?MHe(s):WN(s,e,f),g=o?d:WN(l,e,f),m=0,v;if(!d||!g)return{errors:[al(e,t.start,i,vl.cannotExtractRange)]};if(d.flags&8388608)return{errors:[al(e,t.start,i,vl.cannotExtractJSDoc)]};if(d.parent!==g.parent)return{errors:[al(e,t.start,i,vl.cannotExtractRange)]};if(d!==g){if(!cSe(d.parent))return{errors:[al(e,t.start,i,vl.cannotExtractRange)]};let F=[];for(let B of d.parent.statements){if(B===d||F.length){let q=P(B);if(q)return{errors:q};F.push(B)}if(B===g)break}return F.length?{targetRange:{range:F,facts:m,thisNode:v}}:{errors:[al(e,t.start,i,vl.cannotExtractRange)]}}if(V_(d)&&!d.expression)return{errors:[al(e,t.start,i,vl.cannotExtractRange)]};let S=A(d),x=w(S)||P(S);if(x)return{errors:x};return{targetRange:{range:fHe(S),facts:m,thisNode:v}};function A(F){if(V_(F)){if(F.expression)return F.expression}else if(Bc(F)||pu(F)){let B=Bc(F)?F.declarationList.declarations:F.declarations,q=0,W;for(let Y of B)Y.initializer&&(q++,W=Y.initializer);if(q===1)return W}else if(wi(F)&&F.initializer)return F.initializer;return F}function w(F){if(Re(Ol(F)?F.expression:F))return[hr(F,vl.cannotExtractIdentifier)]}function C(F,B){let q=F;for(;q!==B;){if(q.kind===169){Ca(q)&&(m|=32);break}else if(q.kind===166){qd(q).kind===173&&(m|=32);break}else q.kind===171&&Ca(q)&&(m|=32);q=q.parent}}function P(F){let B;if((Q=>{Q[Q.None=0]=\"None\",Q[Q.Break=1]=\"Break\",Q[Q.Continue=2]=\"Continue\",Q[Q.Return=4]=\"Return\"})(B||(B={})),L.assert(F.pos<=F.end,\"This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809 (1)\"),L.assert(!vp(F.pos),\"This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809 (2)\"),!ca(F)&&!(Dh(F)&&sSe(F))&&!qee(F))return[hr(F,vl.statementOrExpressionExpected)];if(F.flags&16777216)return[hr(F,vl.cannotExtractAmbientBlock)];let q=Zc(F);q&&C(F,q);let W,Y=4,R;if(ie(F),m&8){let Q=Ku(F,!1,!1);(Q.kind===259||Q.kind===171&&Q.parent.kind===207||Q.kind===215)&&(m|=16)}return W;function ie(Q){if(W)return!0;if(Kl(Q)){let Z=Q.kind===257?Q.parent.parent:Q;if(Mr(Z,1))return(W||(W=[])).push(hr(Q,vl.cannotExtractExportedEntity)),!0}switch(Q.kind){case 269:return(W||(W=[])).push(hr(Q,vl.cannotExtractImport)),!0;case 274:return(W||(W=[])).push(hr(Q,vl.cannotExtractExportedEntity)),!0;case 106:if(Q.parent.kind===210){let Z=Zc(Q);if(Z===void 0||Z.pos<t.start||Z.end>=t.start+t.length)return(W||(W=[])).push(hr(Q,vl.cannotExtractSuper)),!0}else m|=8,v=Q;break;case 216:pa(Q,function Z(U){if(W2(U))m|=8,v=Q;else{if(Yr(U)||Ia(U)&&!xs(U))return!1;pa(U,Z)}});case 260:case 259:Li(Q.parent)&&Q.parent.externalModuleIndicator===void 0&&(W||(W=[])).push(hr(Q,vl.functionWillNotBeVisibleInTheNewScope));case 228:case 215:case 171:case 173:case 174:case 175:return!1}let fe=Y;switch(Q.kind){case 242:Y&=-5;break;case 255:Y=0;break;case 238:Q.parent&&Q.parent.kind===255&&Q.parent.finallyBlock===Q&&(Y=4);break;case 293:case 292:Y|=1;break;default:Wy(Q,!1)&&(Y|=3);break}switch(Q.kind){case 194:case 108:m|=8,v=Q;break;case 253:{let Z=Q.label;(R||(R=[])).push(Z.escapedText),pa(Q,ie),R.pop();break}case 249:case 248:{let Z=Q.label;Z?ya(R,Z.escapedText)||(W||(W=[])).push(hr(Q,vl.cannotExtractRangeContainingLabeledBreakOrContinueStatementWithTargetOutsideOfTheRange)):Y&(Q.kind===249?1:2)||(W||(W=[])).push(hr(Q,vl.cannotExtractRangeContainingConditionalBreakOrContinueStatements));break}case 220:m|=4;break;case 226:m|=2;break;case 250:Y&4?m|=1:(W||(W=[])).push(hr(Q,vl.cannotExtractRangeContainingConditionalReturnStatement));break;default:pa(Q,ie);break}Y=fe}}}function dHe(e,t,r){let i=e.getStart(r),o=t.getEnd();return r.text.charCodeAt(o)===59&&o++,{start:i,length:o-i}}function fHe(e){if(ca(e))return[e];if(Dh(e))return Ol(e.parent)?[e.parent]:e;if(qee(e))return e}function Wee(e){return xs(e)?Hj(e.body):Ds(e)||Li(e)||Tp(e)||Yr(e)}function _He(e){let t=jh(e.range)?Vo(e.range):e.range;if(e.facts&8&&!(e.facts&16)){let i=Zc(t);if(i){let o=jn(t,Ds);return o?[o,i]:[i]}}let r=[];for(;;)if(t=t.parent,t.kind===166&&(t=jn(t,i=>Ds(i)).parent),Wee(t)&&(r.push(t),t.kind===308))return r}function pHe(e,t,r){let{scopes:i,readsAndWrites:{target:o,usagesPerScope:s,functionErrorsPerScope:l,exposedVariableDeclarations:f}}=zee(e,t);return L.assert(!l[r].length,\"The extraction went missing? How?\"),t.cancellationToken.throwIfCancellationRequested(),THe(o,i[r],s[r],f,e,t)}function mHe(e,t,r){let{scopes:i,readsAndWrites:{target:o,usagesPerScope:s,constantErrorsPerScope:l,exposedVariableDeclarations:f}}=zee(e,t);L.assert(!l[r].length,\"The extraction went missing? How?\"),L.assert(f.length===0,\"Extract constant accepted a range containing a variable declaration?\"),t.cancellationToken.throwIfCancellationRequested();let d=ot(o)?o:o.statements[0].expression;return SHe(d,i[r],s[r],e.facts,t)}function hHe(e,t){let{scopes:r,readsAndWrites:{functionErrorsPerScope:i,constantErrorsPerScope:o}}=zee(e,t);return r.map((l,f)=>{let d=gHe(l),g=yHe(l),m=Ds(l)?vHe(l):Yr(l)?bHe(l):EHe(l),v,S;return m===1?(v=jm(uo(_.Extract_to_0_in_1_scope),[d,\"global\"]),S=jm(uo(_.Extract_to_0_in_1_scope),[g,\"global\"])):m===0?(v=jm(uo(_.Extract_to_0_in_1_scope),[d,\"module\"]),S=jm(uo(_.Extract_to_0_in_1_scope),[g,\"module\"])):(v=jm(uo(_.Extract_to_0_in_1),[d,m]),S=jm(uo(_.Extract_to_0_in_1),[g,m])),f===0&&!Yr(l)&&(S=jm(uo(_.Extract_to_0_in_enclosing_scope),[g])),{functionExtraction:{description:v,errors:i[f]},constantExtraction:{description:S,errors:o[f]}}})}function zee(e,t){let{file:r}=t,i=_He(e),o=NHe(e,r),s=PHe(e,i,o,r,t.program.getTypeChecker(),t.cancellationToken);return{scopes:i,readsAndWrites:s}}function gHe(e){return Ds(e)?\"inner function\":Yr(e)?\"method\":\"function\"}function yHe(e){return Yr(e)?\"readonly field\":\"constant\"}function vHe(e){switch(e.kind){case 173:return\"constructor\";case 215:case 259:return e.name?`function '${e.name.text}'`:X7;case 216:return\"arrow function\";case 171:return`method '${e.name.getText()}'`;case 174:return`'get ${e.name.getText()}'`;case 175:return`'set ${e.name.getText()}'`;default:throw L.assertNever(e,`Unexpected scope kind ${e.kind}`)}}function bHe(e){return e.kind===260?e.name?`class '${e.name.text}'`:\"anonymous class declaration\":e.name?`class expression '${e.name.text}'`:\"anonymous class expression\"}function EHe(e){return e.kind===265?`namespace '${e.parent.name.getText()}'`:e.externalModuleIndicator?0:1}function THe(e,t,{usages:r,typeParameterUsages:i,substitutions:o},s,l,f){let d=f.program.getTypeChecker(),g=Do(f.program.getCompilerOptions()),m=gu.createImportAdder(f.file,f.program,f.preferences,f.host),v=t.getSourceFile(),S=a1(Yr(t)?\"newMethod\":\"newFunction\",v),x=Yn(t),A=D.createIdentifier(S),w,C=[],P=[],F;r.forEach((Ce,Ie)=>{let Be;if(!x){let Le=d.getTypeOfSymbolAtLocation(Ce.symbol,Ce.node);Le=d.getBaseTypeOfLiteralType(Le),Be=gu.typeToAutoImportableTypeNode(d,m,Le,t,g,1)}let Ne=D.createParameterDeclaration(void 0,void 0,Ie,void 0,Be);C.push(Ne),Ce.usage===2&&(F||(F=[])).push(Ce),P.push(D.createIdentifier(Ie))});let q=lo(i.values(),Ce=>({type:Ce,declaration:AHe(Ce)})).sort(CHe),W=q.length===0?void 0:q.map(Ce=>Ce.declaration),Y=W!==void 0?W.map(Ce=>D.createTypeReferenceNode(Ce.name,void 0)):void 0;if(ot(e)&&!x){let Ce=d.getContextualType(e);w=d.typeToTypeNode(Ce,t,1)}let{body:R,returnValueProperty:ie}=LHe(e,s,F,o,!!(l.facts&1));pd(R);let Q,fe=!!(l.facts&16);if(Yr(t)){let Ce=x?[]:[D.createModifier(121)];l.facts&32&&Ce.push(D.createModifier(124)),l.facts&4&&Ce.push(D.createModifier(132)),Q=D.createMethodDeclaration(Ce.length?Ce:void 0,l.facts&2?D.createToken(41):void 0,A,void 0,W,C,w,R)}else fe&&C.unshift(D.createParameterDeclaration(void 0,void 0,\"this\",void 0,d.typeToTypeNode(d.getTypeAtLocation(l.thisNode),t,1),void 0)),Q=D.createFunctionDeclaration(l.facts&4?[D.createToken(132)]:void 0,l.facts&2?D.createToken(41):void 0,A,W,C,w,R);let Z=nr.ChangeTracker.fromContext(f),U=(jh(l.range)?To(l.range):l.range).end,re=wHe(U,t);re?Z.insertNodeBefore(f.file,re,Q,!0):Z.insertNodeAtEndOfScope(f.file,t,Q),m.writeFixes(Z);let le=[],_e=IHe(t,l,S);fe&&P.unshift(D.createIdentifier(\"this\"));let ge=D.createCallExpression(fe?D.createPropertyAccessExpression(_e,\"call\"):_e,Y,P);if(l.facts&2&&(ge=D.createYieldExpression(D.createToken(41),ge)),l.facts&4&&(ge=D.createAwaitExpression(ge)),Kee(e)&&(ge=D.createJsxExpression(void 0,ge)),s.length&&!F)if(L.assert(!ie,\"Expected no returnValueProperty\"),L.assert(!(l.facts&1),\"Expected RangeFacts.HasReturn flag to be unset\"),s.length===1){let Ce=s[0];le.push(D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(cc(Ce.name),void 0,cc(Ce.type),ge)],Ce.parent.flags)))}else{let Ce=[],Ie=[],Be=s[0].parent.flags,Ne=!1;for(let Ye of s){Ce.push(D.createBindingElement(void 0,void 0,cc(Ye.name)));let _t=d.typeToTypeNode(d.getBaseTypeOfLiteralType(d.getTypeAtLocation(Ye)),t,1);Ie.push(D.createPropertySignature(void 0,Ye.symbol.name,void 0,_t)),Ne=Ne||Ye.type!==void 0,Be=Be&Ye.parent.flags}let Le=Ne?D.createTypeLiteralNode(Ie):void 0;Le&&Jn(Le,1),le.push(D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(D.createObjectBindingPattern(Ce),void 0,Le,ge)],Be)))}else if(s.length||F){if(s.length)for(let Ie of s){let Be=Ie.parent.flags;Be&2&&(Be=Be&-3|1),le.push(D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(Ie.symbol.name,void 0,Pe(Ie.type))],Be)))}ie&&le.push(D.createVariableStatement(void 0,D.createVariableDeclarationList([D.createVariableDeclaration(ie,void 0,Pe(w))],1)));let Ce=Jee(s,F);ie&&Ce.unshift(D.createShorthandPropertyAssignment(ie)),Ce.length===1?(L.assert(!ie,\"Shouldn't have returnValueProperty here\"),le.push(D.createExpressionStatement(D.createAssignment(Ce[0].name,ge))),l.facts&1&&le.push(D.createReturnStatement())):(le.push(D.createExpressionStatement(D.createAssignment(D.createObjectLiteralExpression(Ce),ge))),ie&&le.push(D.createReturnStatement(D.createIdentifier(ie))))}else l.facts&1?le.push(D.createReturnStatement(ge)):jh(l.range)?le.push(D.createExpressionStatement(ge)):le.push(ge);jh(l.range)?Z.replaceNodeRangeWithNodes(f.file,Vo(l.range),To(l.range),le):Z.replaceNodeWithNodes(f.file,l.range,le);let X=Z.getChanges(),we=(jh(l.range)?Vo(l.range):l.range).getSourceFile().fileName,ke=qN(X,we,S,!1);return{renameFilename:we,renameLocation:ke,edits:X};function Pe(Ce){if(Ce===void 0)return;let Ie=cc(Ce),Be=Ie;for(;RS(Be);)Be=Be.type;return wS(Be)&&wr(Be.types,Ne=>Ne.kind===155)?Ie:D.createUnionTypeNode([Ie,D.createKeywordTypeNode(155)])}}function SHe(e,t,{substitutions:r},i,o){let s=o.program.getTypeChecker(),l=t.getSourceFile(),f=br(e)&&!Yr(t)&&!s.resolveName(e.name.text,e,111551,!1)&&!pi(e.name)&&!nb(e.name)?e.name.text:a1(Yr(t)?\"newProperty\":\"newLocal\",l),d=Yn(t),g=d||!s.isContextSensitive(e)?void 0:s.typeToTypeNode(s.getContextualType(e),t,1),m=kHe(vs(e),r);({variableType:g,initializer:m}=w(g,m)),pd(m);let v=nr.ChangeTracker.fromContext(o);if(Yr(t)){L.assert(!d,\"Cannot extract to a JS class\");let C=[];C.push(D.createModifier(121)),i&32&&C.push(D.createModifier(124)),C.push(D.createModifier(146));let P=D.createPropertyDeclaration(C,f,void 0,g,m),F=D.createPropertyAccessExpression(i&32?D.createIdentifier(t.name.getText()):D.createThis(),D.createIdentifier(f));Kee(e)&&(F=D.createJsxExpression(void 0,F));let B=e.pos,q=RHe(B,t);v.insertNodeBefore(o.file,q,P,!0),v.replaceNode(o.file,e,F)}else{let C=D.createVariableDeclaration(f,void 0,g,m),P=xHe(e,t);if(P){v.insertNodeBefore(o.file,P,C);let F=D.createIdentifier(f);v.replaceNode(o.file,e,F)}else if(e.parent.kind===241&&t===jn(e,Wee)){let F=D.createVariableStatement(void 0,D.createVariableDeclarationList([C],2));v.replaceNode(o.file,e.parent,F)}else{let F=D.createVariableStatement(void 0,D.createVariableDeclarationList([C],2)),B=OHe(e,t);if(B.pos===0?v.insertNodeAtTopOfFile(o.file,F,!1):v.insertNodeBefore(o.file,B,F,!1),e.parent.kind===241)v.delete(o.file,e.parent);else{let q=D.createIdentifier(f);Kee(e)&&(q=D.createJsxExpression(void 0,q)),v.replaceNode(o.file,e,q)}}}let S=v.getChanges(),x=e.getSourceFile().fileName,A=qN(S,x,f,!0);return{renameFilename:x,renameLocation:A,edits:S};function w(C,P){if(C===void 0)return{variableType:C,initializer:P};if(!ms(P)&&!xs(P)||!!P.typeParameters)return{variableType:C,initializer:P};let F=s.getTypeAtLocation(e),B=Wp(s.getSignaturesOfType(F,0));if(!B)return{variableType:C,initializer:P};if(B.getTypeParameters())return{variableType:C,initializer:P};let q=[],W=!1;for(let Y of P.parameters)if(Y.type)q.push(Y);else{let R=s.getTypeAtLocation(Y);R===s.getAnyType()&&(W=!0),q.push(D.updateParameterDeclaration(Y,Y.modifiers,Y.dotDotDotToken,Y.name,Y.questionToken,Y.type||s.typeToTypeNode(R,t,1),Y.initializer))}if(W)return{variableType:C,initializer:P};if(C=void 0,xs(P))P=D.updateArrowFunction(P,h_(e)?dT(e):void 0,P.typeParameters,q,P.type||s.typeToTypeNode(B.getReturnType(),t,1),P.equalsGreaterThanToken,P.body);else{if(B&&!!B.thisParameter){let Y=Sl(q);if(!Y||Re(Y.name)&&Y.name.escapedText!==\"this\"){let R=s.getTypeOfSymbolAtLocation(B.thisParameter,e);q.splice(0,0,D.createParameterDeclaration(void 0,void 0,\"this\",void 0,s.typeToTypeNode(R,t,1)))}}P=D.updateFunctionExpression(P,h_(e)?dT(e):void 0,P.asteriskToken,P.name,P.typeParameters,q,P.type||s.typeToTypeNode(B.getReturnType(),t,1),P.body)}return{variableType:C,initializer:P}}}function xHe(e,t){let r;for(;e!==void 0&&e!==t;){if(wi(e)&&e.initializer===r&&pu(e.parent)&&e.parent.declarations.length>1)return e;r=e,e=e.parent}}function AHe(e){let t,r=e.symbol;if(r&&r.declarations)for(let i of r.declarations)(t===void 0||i.pos<t.pos)&&(t=i);return t}function CHe({type:e,declaration:t},{type:r,declaration:i}){return Cae(t,i,\"pos\",Es)||su(e.symbol?e.symbol.getName():\"\",r.symbol?r.symbol.getName():\"\")||Es(e.id,r.id)}function IHe(e,t,r){let i=D.createIdentifier(r);if(Yr(e)){let o=t.facts&32?D.createIdentifier(e.name.text):D.createThis();return D.createPropertyAccessExpression(o,i)}else return i}function LHe(e,t,r,i,o){let s=r!==void 0||t.length>0;if(Va(e)&&!s&&i.size===0)return{body:D.createBlock(e.statements,!0),returnValueProperty:void 0};let l,f=!1,d=D.createNodeArray(Va(e)?e.statements.slice(0):[ca(e)?e:D.createReturnStatement(vs(e))]);if(s||i.size){let m=On(d,g,ca).slice();if(s&&!o&&ca(e)){let v=Jee(t,r);v.length===1?m.push(D.createReturnStatement(v[0].name)):m.push(D.createReturnStatement(D.createObjectLiteralExpression(v)))}return{body:D.createBlock(m,!0),returnValueProperty:l}}else return{body:D.createBlock(d,!0),returnValueProperty:void 0};function g(m){if(!f&&V_(m)&&s){let v=Jee(t,r);return m.expression&&(l||(l=\"__return\"),v.unshift(D.createPropertyAssignment(l,$e(m.expression,g,ot)))),v.length===1?D.createReturnStatement(v[0].name):D.createReturnStatement(D.createObjectLiteralExpression(v))}else{let v=f;f=f||Ds(m)||Yr(m);let S=i.get(zo(m).toString()),x=S?cc(S):xn(m,g,Bh);return f=v,x}}}function kHe(e,t){return t.size?r(e):e;function r(i){let o=t.get(zo(i).toString());return o?cc(o):xn(i,r,Bh)}}function DHe(e){if(Ds(e)){let t=e.body;if(Va(t))return t.statements}else{if(Tp(e)||Li(e))return e.statements;if(Yr(e))return e.members;}return Je}function wHe(e,t){return wr(DHe(t),r=>r.pos>=e&&Ds(r)&&!Ec(r))}function RHe(e,t){let r=t.members;L.assert(r.length>0,\"Found no members\");let i,o=!0;for(let s of r){if(s.pos>e)return i||r[0];if(o&&!Na(s)){if(i!==void 0)return s;o=!1}i=s}return i===void 0?L.fail():i}function OHe(e,t){L.assert(!Yr(t));let r;for(let i=e;i!==t;i=i.parent)Wee(i)&&(r=i);for(let i=(r||e).parent;;i=i.parent){if(cSe(i)){let o;for(let s of i.statements){if(s.pos>e.pos)break;o=s}return!o&&IL(i)?(L.assert(mO(i.parent.parent),\"Grandparent isn't a switch statement\"),i.parent.parent):L.checkDefined(o,\"prevStatement failed to get set\")}L.assert(i!==t,\"Didn't encounter a block-like before encountering scope\")}}function Jee(e,t){let r=on(e,o=>D.createShorthandPropertyAssignment(o.symbol.name)),i=on(t,o=>D.createShorthandPropertyAssignment(o.symbol.name));return r===void 0?i:i===void 0?r:r.concat(i)}function jh(e){return ba(e)}function NHe(e,t){return jh(e.range)?{pos:Vo(e.range).getStart(t),end:To(e.range).getEnd()}:e.range}function PHe(e,t,r,i,o,s){let l=new Map,f=[],d=[],g=[],m=[],v=[],S=new Map,x=[],A,w=jh(e.range)?e.range.length===1&&Ol(e.range[0])?e.range[0].expression:void 0:e.range,C;if(w===void 0){let re=e.range,le=Vo(re).getStart(),_e=To(re).end;C=al(i,le,_e-le,vl.expressionExpected)}else o.getTypeAtLocation(w).flags&147456&&(C=hr(w,vl.uselessConstantType));for(let re of t){f.push({usages:new Map,typeParameterUsages:new Map,substitutions:new Map}),d.push(new Map),g.push([]);let le=[];C&&le.push(C),Yr(re)&&Yn(re)&&le.push(hr(re,vl.cannotExtractToJSClass)),xs(re)&&!Va(re.body)&&le.push(hr(re,vl.cannotExtractToExpressionArrowFunction)),m.push(le)}let P=new Map,F=jh(e.range)?D.createBlock(e.range):e.range,B=jh(e.range)?Vo(e.range):e.range,q=W(B);if(R(F),q&&!jh(e.range)&&!Sp(e.range)){let re=o.getContextualType(e.range);Y(re)}if(l.size>0){let re=new Map,le=0;for(let _e=B;_e!==void 0&&le<t.length;_e=_e.parent)if(_e===t[le]&&(re.forEach((ge,X)=>{f[le].typeParameterUsages.set(X,ge)}),le++),mH(_e))for(let ge of jy(_e)){let X=o.getTypeAtLocation(ge);l.has(X.id.toString())&&re.set(X.id.toString(),X)}L.assert(le===t.length,\"Should have iterated all scopes\")}if(v.length){let re=pH(t[0],t[0].parent)?t[0]:tm(t[0]);pa(re,fe)}for(let re=0;re<t.length;re++){let le=f[re];if(re>0&&(le.usages.size>0||le.typeParameterUsages.size>0)){let X=jh(e.range)?e.range[0]:e.range;m[re].push(hr(X,vl.cannotAccessVariablesFromNestedScopes))}e.facts&16&&Yr(t[re])&&g[re].push(hr(e.thisNode,vl.cannotExtractFunctionsContainingThisToMethod));let _e=!1,ge;if(f[re].usages.forEach(X=>{X.usage===2&&(_e=!0,X.symbol.flags&106500&&X.symbol.valueDeclaration&&cd(X.symbol.valueDeclaration,64)&&(ge=X.symbol.valueDeclaration))}),L.assert(jh(e.range)||x.length===0,\"No variable declarations expected if something was extracted\"),_e&&!jh(e.range)){let X=hr(e.range,vl.cannotWriteInExpression);g[re].push(X),m[re].push(X)}else if(ge&&re>0){let X=hr(ge,vl.cannotExtractReadonlyPropertyInitializerOutsideConstructor);g[re].push(X),m[re].push(X)}else if(A){let X=hr(A,vl.cannotExtractExportedEntity);g[re].push(X),m[re].push(X)}}return{target:F,usagesPerScope:f,functionErrorsPerScope:g,constantErrorsPerScope:m,exposedVariableDeclarations:x};function W(re){return!!jn(re,le=>mH(le)&&jy(le).length!==0)}function Y(re){let le=o.getSymbolWalker(()=>(s.throwIfCancellationRequested(),!0)),{visitedTypes:_e}=le.walkType(re);for(let ge of _e)ge.isTypeParameter()&&l.set(ge.id.toString(),ge)}function R(re,le=1){if(q){let _e=o.getTypeAtLocation(re);Y(_e)}if(Kl(re)&&re.symbol&&v.push(re),Iu(re))R(re.left,2),R(re.right);else if(mse(re))R(re.operand,2);else if(br(re)||Vs(re))pa(re,R);else if(Re(re)){if(!re.parent||Yu(re.parent)&&re!==re.parent.left||br(re.parent)&&re!==re.parent.expression)return;ie(re,le,Gm(re))}else pa(re,R)}function ie(re,le,_e){let ge=Q(re,le,_e);if(ge)for(let X=0;X<t.length;X++){let Ve=d[X].get(ge);Ve&&f[X].substitutions.set(zo(re).toString(),Ve)}}function Q(re,le,_e){let ge=Z(re);if(!ge)return;let X=$a(ge).toString(),Ve=P.get(X);if(Ve&&Ve>=le)return X;if(P.set(X,le),Ve){for(let Pe of f)Pe.usages.get(re.text)&&Pe.usages.set(re.text,{usage:le,symbol:ge,node:re});return X}let we=ge.getDeclarations(),ke=we&&wr(we,Pe=>Pe.getSourceFile()===i);if(!!ke&&!NN(r,ke.getStart(),ke.end)){if(e.facts&2&&le===2){let Pe=hr(re,vl.cannotExtractRangeThatContainsWritesToReferencesLocatedOutsideOfTheTargetRangeInGenerators);for(let Ce of g)Ce.push(Pe);for(let Ce of m)Ce.push(Pe)}for(let Pe=0;Pe<t.length;Pe++){let Ce=t[Pe];if(o.resolveName(ge.name,Ce,ge.flags,!1)!==ge&&!d[Pe].has(X)){let Be=U(ge.exportSymbol||ge,Ce,_e);if(Be)d[Pe].set(X,Be);else if(_e){if(!(ge.flags&262144)){let Ne=hr(re,vl.typeWillNotBeVisibleInTheNewScope);g[Pe].push(Ne),m[Pe].push(Ne)}}else f[Pe].usages.set(re.text,{usage:le,symbol:ge,node:re})}}return X}}function fe(re){if(re===e.range||jh(e.range)&&e.range.indexOf(re)>=0)return;let le=Re(re)?Z(re):o.getSymbolAtLocation(re);if(le){let _e=wr(v,ge=>ge.symbol===le);if(_e)if(wi(_e)){let ge=_e.symbol.id.toString();S.has(ge)||(x.push(_e),S.set(ge,!0))}else A=A||_e}pa(re,fe)}function Z(re){return re.parent&&Sf(re.parent)&&re.parent.name===re?o.getShorthandAssignmentValueSymbol(re.parent):o.getSymbolAtLocation(re)}function U(re,le,_e){if(!re)return;let ge=re.getDeclarations();if(ge&&ge.some(Ve=>Ve.parent===le))return D.createIdentifier(re.name);let X=U(re.parent,le,_e);if(X!==void 0)return _e?D.createQualifiedName(X,D.createIdentifier(re.name)):D.createPropertyAccessExpression(X,re.name)}}function MHe(e){return jn(e,t=>t.parent&&sSe(t)&&!ar(t.parent))}function sSe(e){let{parent:t}=e;switch(t.kind){case 302:return!1}switch(e.kind){case 10:return t.kind!==269&&t.kind!==273;case 227:case 203:case 205:return!1;case 79:return t.kind!==205&&t.kind!==273&&t.kind!==278}return!0}function cSe(e){switch(e.kind){case 238:case 308:case 265:case 292:return!0;default:return!1}}function Kee(e){return qee(e)||(Hg(e)||GS(e)||US(e))&&(Hg(e.parent)||US(e.parent))}function qee(e){return yo(e)&&e.parent&&Sp(e.parent)}var _x,px,mx,vl,Xee,FHe=gt({\"src/services/refactors/extractSymbol.ts\"(){\"use strict\";Fr(),Qm(),_x=\"Extract Symbol\",px={name:\"Extract Constant\",description:uo(_.Extract_constant),kind:\"refactor.extract.constant\"},mx={name:\"Extract Function\",description:uo(_.Extract_function),kind:\"refactor.extract.function\"},Vh(_x,{kinds:[px.kind,mx.kind],getEditsForAction:oSe,getAvailableActions:aSe}),(e=>{function t(r){return{message:r,code:0,category:3,key:r}}e.cannotExtractRange=t(\"Cannot extract range.\"),e.cannotExtractImport=t(\"Cannot extract import statement.\"),e.cannotExtractSuper=t(\"Cannot extract super call.\"),e.cannotExtractJSDoc=t(\"Cannot extract JSDoc.\"),e.cannotExtractEmpty=t(\"Cannot extract empty range.\"),e.expressionExpected=t(\"expression expected.\"),e.uselessConstantType=t(\"No reason to extract constant of type.\"),e.statementOrExpressionExpected=t(\"Statement or expression expected.\"),e.cannotExtractRangeContainingConditionalBreakOrContinueStatements=t(\"Cannot extract range containing conditional break or continue statements.\"),e.cannotExtractRangeContainingConditionalReturnStatement=t(\"Cannot extract range containing conditional return statement.\"),e.cannotExtractRangeContainingLabeledBreakOrContinueStatementWithTargetOutsideOfTheRange=t(\"Cannot extract range containing labeled break or continue with target outside of the range.\"),e.cannotExtractRangeThatContainsWritesToReferencesLocatedOutsideOfTheTargetRangeInGenerators=t(\"Cannot extract range containing writes to references located outside of the target range in generators.\"),e.typeWillNotBeVisibleInTheNewScope=t(\"Type will not visible in the new scope.\"),e.functionWillNotBeVisibleInTheNewScope=t(\"Function will not visible in the new scope.\"),e.cannotExtractIdentifier=t(\"Select more than a single identifier.\"),e.cannotExtractExportedEntity=t(\"Cannot extract exported declaration\"),e.cannotWriteInExpression=t(\"Cannot write back side-effects when extracting an expression\"),e.cannotExtractReadonlyPropertyInitializerOutsideConstructor=t(\"Cannot move initialization of read-only class property outside of the constructor\"),e.cannotExtractAmbientBlock=t(\"Cannot extract code from ambient contexts\"),e.cannotAccessVariablesFromNestedScopes=t(\"Cannot access variables from nested scopes\"),e.cannotExtractToJSClass=t(\"Cannot extract constant to a class scope in JS\"),e.cannotExtractToExpressionArrowFunction=t(\"Cannot extract constant to an arrow function without a block\"),e.cannotExtractFunctionsContainingThisToMethod=t(\"Cannot extract functions containing this to method\")})(vl||(vl={})),Xee=(e=>(e[e.None=0]=\"None\",e[e.HasReturn=1]=\"HasReturn\",e[e.IsGenerator=2]=\"IsGenerator\",e[e.IsAsyncFunction=4]=\"IsAsyncFunction\",e[e.UsesThis=8]=\"UsesThis\",e[e.UsesThisInFunction=16]=\"UsesThisInFunction\",e[e.InStaticRegion=32]=\"InStaticRegion\",e))(Xee||{})}}),lSe={};Mo(lSe,{Messages:()=>vl,RangeFacts:()=>Xee,getRangeToExtract:()=>Hee,getRefactorActionsToExtractSymbol:()=>aSe,getRefactorEditsToExtractSymbol:()=>oSe});var GHe=gt({\"src/services/_namespaces/ts.refactor.extractSymbol.ts\"(){\"use strict\";FHe()}}),FP,LG,kG,BHe=gt({\"src/services/refactors/generateGetAccessorAndSetAccessor.ts\"(){\"use strict\";Fr(),Qm(),FP=\"Generate 'get' and 'set' accessors\",LG=_.Generate_get_and_set_accessors.message,kG={name:FP,description:LG,kind:\"refactor.rewrite.property.generateAccessors\"},Vh(FP,{kinds:[kG.kind],getEditsForAction:function(t,r){if(!t.endPosition)return;let i=gu.getAccessorConvertiblePropertyAtPosition(t.file,t.program,t.startPosition,t.endPosition);L.assert(i&&!$m(i),\"Expected applicable refactor info\");let o=gu.generateAccessorFromProperty(t.file,t.program,t.startPosition,t.endPosition,t,r);if(!o)return;let s=t.file.fileName,l=i.renameAccessor?i.accessorName:i.fieldName,d=(Re(l)?0:-1)+qN(o,s,l.text,ha(i.declaration));return{renameFilename:s,renameLocation:d,edits:o}},getAvailableActions(e){if(!e.endPosition)return Je;let t=gu.getAccessorConvertiblePropertyAtPosition(e.file,e.program,e.startPosition,e.endPosition,e.triggerReason===\"invoked\");return t?$m(t)?e.preferences.provideRefactorNotApplicableReason?[{name:FP,description:LG,actions:[{...kG,notApplicableReason:t.error}]}]:Je:[{name:FP,description:LG,actions:[kG]}]:Je}})}}),UHe={},VHe=gt({\"src/services/_namespaces/ts.refactor.generateGetAccessorAndSetAccessor.ts\"(){\"use strict\";BHe()}});function jHe(e){let t=uSe(e);if(t&&!$m(t)){let r=nr.ChangeTracker.with(e,i=>WHe(e.file,i,t.declaration,t.returnTypeNode));return{renameFilename:void 0,renameLocation:void 0,edits:r}}}function HHe(e){let t=uSe(e);return t?$m(t)?e.preferences.provideRefactorNotApplicableReason?[{name:GP,description:DG,actions:[{...BP,notApplicableReason:t.error}]}]:Je:[{name:GP,description:DG,actions:[BP]}]:Je}function WHe(e,t,r,i){let o=Yo(r,21,e),s=xs(r)&&o===void 0,l=s?Vo(r.parameters):o;l&&(s&&(t.insertNodeBefore(e,l,D.createToken(20)),t.insertNodeAfter(e,l,D.createToken(21))),t.insertNodeAt(e,l.end,i,{prefix:\": \"}))}function uSe(e){if(Yn(e.file)||!pv(BP.kind,e.kind))return;let t=Vi(e.file,e.startPosition),r=jn(t,l=>Va(l)||l.parent&&xs(l.parent)&&(l.kind===38||l.parent.body===l)?\"quit\":zHe(l));if(!r||!r.body||r.type)return{error:uo(_.Return_type_must_be_inferred_from_a_function)};let i=e.program.getTypeChecker(),o=JHe(i,r);if(!o)return{error:uo(_.Could_not_determine_function_return_type)};let s=i.typeToTypeNode(o,r,1);if(s)return{declaration:r,returnTypeNode:s}}function zHe(e){switch(e.kind){case 259:case 215:case 216:case 171:return!0;default:return!1}}function JHe(e,t){if(e.isImplementationOfOverload(t)){let i=e.getTypeAtLocation(t).getCallSignatures();if(i.length>1)return e.getUnionType(Zi(i,o=>o.getReturnType()))}let r=e.getSignatureFromDeclaration(t);if(r)return e.getReturnTypeOfSignature(r)}var GP,DG,BP,KHe=gt({\"src/services/refactors/inferFunctionReturnType.ts\"(){\"use strict\";Fr(),Qm(),GP=\"Infer function return type\",DG=_.Infer_function_return_type.message,BP={name:GP,description:DG,kind:\"refactor.rewrite.function.returnType\"},Vh(GP,{kinds:[BP.kind],getEditsForAction:jHe,getAvailableActions:HHe})}}),qHe={},XHe=gt({\"src/services/_namespaces/ts.refactor.inferFunctionReturnType.ts\"(){\"use strict\";KHe()}}),Nk={};Mo(Nk,{addOrRemoveBracesToArrowFunction:()=>lje,convertArrowFunctionOrFunctionExpression:()=>Eje,convertParamsToDestructuredObject:()=>Uje,convertStringOrTemplateLiteral:()=>Yje,convertToOptionalChainExpression:()=>lHe,doChangeNamedToNamespaceOrDefault:()=>m1e,extractSymbol:()=>lSe,generateGetAccessorAndSetAccessor:()=>UHe,getApplicableRefactors:()=>oVe,getEditsForRefactor:()=>sVe,inferFunctionReturnType:()=>qHe,isRefactorErrorInfo:()=>$m,refactorKindBeginsWith:()=>pv,registerRefactor:()=>Vh});var Qm=gt({\"src/services/_namespaces/ts.refactor.ts\"(){\"use strict\";cVe(),mVe(),bVe(),CVe(),IVe(),nje(),uje(),Tje(),Vje(),$je(),uHe(),GHe(),VHe(),XHe()}});function YHe(e,t,r,i){let o=_7(Zd(t,r));if(fSe(o)){let s=$He(o,e.getTypeChecker(),t,e,i);if(s)return s}return wG(_.You_cannot_rename_this_element)}function $He(e,t,r,i,o){let s=t.getSymbolAtLocation(e);if(!s){if(es(e)){let S=f7(e,t);if(S&&(S.flags&128||S.flags&1048576&&Ji(S.types,x=>!!(x.flags&128))))return Yee(e.text,e.text,\"string\",\"\",e,r)}else if(FX(e)){let S=Qc(e);return Yee(S,S,\"label\",\"\",e,r)}return}let{declarations:l}=s;if(!l||l.length===0)return;if(l.some(S=>QHe(i,S)))return wG(_.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library);if(Re(e)&&e.escapedText===\"default\"&&s.parent&&s.parent.flags&1536)return;if(es(e)&&sR(e))return o.allowRenameOfImportPath?eWe(e,r,s):void 0;let f=ZHe(r,s,t,o);if(f)return wG(f);let d=$g.getSymbolKind(t,s,e),g=Zhe(e)||gf(e)&&e.parent.kind===164?l_(c_(e)):void 0,m=g||t.symbolToString(s),v=g||t.getFullyQualifiedName(s);return Yee(m,v,d,$g.getSymbolModifiers(t,s),e,r)}function QHe(e,t){let r=t.getSourceFile();return e.isSourceFileDefaultLibrary(r)&&Gc(r.fileName,\".d.ts\")}function ZHe(e,t,r,i){if(!i.providePrefixAndSuffixTextForRename&&t.flags&2097152){let l=t.declarations&&wr(t.declarations,f=>$u(f));l&&!l.propertyName&&(t=r.getAliasedSymbol(t))}let{declarations:o}=t;if(!o)return;let s=dSe(e.path);if(s===void 0)return vt(o,l=>dge(l.getSourceFile().path))?_.You_cannot_rename_elements_that_are_defined_in_a_node_modules_folder:void 0;for(let l of o){let f=dSe(l.getSourceFile().path);if(f){let d=Math.min(s.length,f.length);for(let g=0;g<=d;g++)if(su(s[g],f[g])!==0)return _.You_cannot_rename_elements_that_are_defined_in_another_node_modules_folder}}}function dSe(e){let t=Ou(e),r=t.lastIndexOf(\"node_modules\");if(r!==-1)return t.slice(0,r+2)}function eWe(e,t,r){if(!fl(e.text))return wG(_.You_cannot_rename_a_module_via_a_global_import);let i=r.declarations&&wr(r.declarations,Li);if(!i)return;let o=Oc(e.text,\"/index\")||Oc(e.text,\"/index.js\")?void 0:Iae(ld(i.fileName),\"/index\"),s=o===void 0?i.fileName:o,l=o===void 0?\"module\":\"directory\",f=e.text.lastIndexOf(\"/\")+1,d=il(e.getStart(t)+1+f,e.text.length-f);return{canRename:!0,fileToRename:s,kind:l,displayName:s,fullDisplayName:s,kindModifiers:\"\",triggerSpan:d}}function Yee(e,t,r,i,o,s){return{canRename:!0,fileToRename:void 0,kind:r,displayName:e,fullDisplayName:t,kindModifiers:i,triggerSpan:tWe(o,s)}}function wG(e){return{canRename:!1,localizedErrorMessage:uo(e)}}function tWe(e,t){let r=e.getStart(t),i=e.getWidth(t);return es(e)&&(r+=1,i-=2),il(r,i)}function fSe(e){switch(e.kind){case 79:case 80:case 10:case 14:case 108:return!0;case 8:return c7(e);default:return!1}}var nWe=gt({\"src/services/rename.ts\"(){\"use strict\";Fr()}}),RG={};Mo(RG,{getRenameInfo:()=>YHe,nodeIsEligibleForRename:()=>fSe});var rWe=gt({\"src/services/_namespaces/ts.Rename.ts\"(){\"use strict\";nWe()}});function iWe(e,t,r,i,o){let s=e.getTypeChecker(),l=p7(t,r);if(!l)return;let f=!!i&&i.kind===\"characterTyped\";if(f&&(r1(t,r,l)||Kg(t,r)))return;let d=!!i&&i.kind===\"invoked\",g=vWe(l,r,t,s,d);if(!g)return;o.throwIfCancellationRequested();let m=aWe(g,s,t,l,f);return o.throwIfCancellationRequested(),m?s.runWithCancellationToken(o,v=>m.kind===0?vSe(m.candidates,m.resolvedSignature,g,t,v):EWe(m.symbol,g,t,v)):Cu(t)?sWe(g,e,o):void 0}function aWe({invocation:e,argumentCount:t},r,i,o,s){switch(e.kind){case 0:{if(s&&!oWe(o,e.node,i))return;let l=[],f=r.getResolvedSignatureForSignatureHelp(e.node,l,t);return l.length===0?void 0:{kind:0,candidates:l,resolvedSignature:f}}case 1:{let{called:l}=e;if(s&&!_Se(o,i,Re(l)?l.parent:l))return;let f=XX(l,t,r);if(f.length!==0)return{kind:0,candidates:f,resolvedSignature:Vo(f)};let d=r.getSymbolAtLocation(l);return d&&{kind:1,symbol:d}}case 2:return{kind:0,candidates:[e.signature],resolvedSignature:e.signature};default:return L.assertNever(e)}}function oWe(e,t,r){if(!Ih(t))return!1;let i=t.getChildren(r);switch(e.kind){case 20:return ya(i,e);case 27:{let o=d7(e);return!!o&&ya(i,o)}case 29:return _Se(e,r,t.expression);default:return!1}}function sWe(e,t,r){if(e.invocation.kind===2)return;let i=gSe(e.invocation),o=br(i)?i.name.text:void 0,s=t.getTypeChecker();return o===void 0?void 0:ks(t.getSourceFiles(),l=>ks(l.getNamedDeclarations().get(o),f=>{let d=f.symbol&&s.getTypeOfSymbolAtLocation(f.symbol,f),g=d&&d.getCallSignatures();if(g&&g.length)return s.runWithCancellationToken(r,m=>vSe(g,g[0],e,l,m,!0))}))}function _Se(e,t,r){let i=e.getFullStart(),o=e.parent;for(;o;){let s=el(i,t,o,!0);if(s)return Od(r,s);o=o.parent}return L.fail(\"Could not find preceding token\")}function cWe(e,t,r){let i=mSe(e,t,r);return!i||i.isTypeParameterList||i.invocation.kind!==0?void 0:{invocation:i.invocation.node,argumentCount:i.argumentCount,argumentIndex:i.argumentIndex}}function pSe(e,t,r){let i=lWe(e,r);if(!i)return;let{list:o,argumentIndex:s}=i,l=mWe(o,r1(r,t,e));s!==0&&L.assertLessThan(s,l);let f=gWe(o,r);return{list:o,argumentIndex:s,argumentCount:l,argumentsSpan:f}}function lWe(e,t){if(e.kind===29||e.kind===20)return{list:bWe(e.parent,e,t),argumentIndex:0};{let r=d7(e);return r&&{list:r,argumentIndex:pWe(r,e)}}}function mSe(e,t,r){let{parent:i}=e;if(Ih(i)){let o=i,s=pSe(e,t,r);if(!s)return;let{list:l,argumentIndex:f,argumentCount:d,argumentsSpan:g}=s;return{isTypeParameterList:!!i.typeArguments&&i.typeArguments.pos===l.pos,invocation:{kind:0,node:o},argumentsSpan:g,argumentIndex:f,argumentCount:d}}else{if(LS(e)&&MT(i))return GN(e,t,r)?Qee(i,0,r):void 0;if(_2(e)&&i.parent.kind===212){let o=i,s=o.parent;L.assert(o.kind===225);let l=GN(e,t,r)?0:1;return Qee(s,l,r)}else if(AL(i)&&MT(i.parent.parent)){let o=i,s=i.parent.parent;if(Iz(e)&&!GN(e,t,r))return;let l=o.parent.templateSpans.indexOf(o),f=hWe(l,e,t,r);return Qee(s,f,r)}else if(Au(i)){let o=i.attributes.pos,s=xo(r.text,i.attributes.end,!1);return{isTypeParameterList:!1,invocation:{kind:0,node:i},argumentsSpan:il(o,s-o),argumentIndex:0,argumentCount:1}}else{let o=YX(e,r);if(o){let{called:s,nTypeArguments:l}=o,f={kind:1,called:s},d=Wc(s.getStart(r),e.end);return{isTypeParameterList:!0,invocation:f,argumentsSpan:d,argumentIndex:l,argumentCount:l+1}}return}}}function uWe(e,t,r,i){return dWe(e,t,r,i)||mSe(e,t,r)}function hSe(e){return ar(e.parent)?hSe(e.parent):e}function $ee(e){return ar(e.left)?$ee(e.left)+1:2}function dWe(e,t,r,i){let o=fWe(e,r,t,i);if(!o)return;let{contextualType:s,argumentIndex:l,argumentCount:f,argumentsSpan:d}=o,g=s.getNonNullableType(),m=g.symbol;if(m===void 0)return;let v=Os(g.getCallSignatures());if(v===void 0)return;let S={kind:2,signature:v,node:e,symbol:_We(m)};return{isTypeParameterList:!1,invocation:S,argumentsSpan:d,argumentIndex:l,argumentCount:f}}function fWe(e,t,r,i){if(e.kind!==20&&e.kind!==27)return;let{parent:o}=e;switch(o.kind){case 214:case 171:case 215:case 216:let s=pSe(e,r,t);if(!s)return;let{argumentIndex:l,argumentCount:f,argumentsSpan:d}=s,g=Nc(o)?i.getContextualTypeForObjectLiteralElement(o):i.getContextualType(o);return g&&{contextualType:g,argumentIndex:l,argumentCount:f,argumentsSpan:d};case 223:{let m=hSe(o),v=i.getContextualType(m),S=e.kind===20?0:$ee(o)-1,x=$ee(m);return v&&{contextualType:v,argumentIndex:S,argumentCount:x,argumentsSpan:Du(o)}}default:return}}function _We(e){return e.name===\"__type\"&&ks(e.declarations,t=>{var r;return Jm(t)?(r=zr(t.parent,$p))==null?void 0:r.symbol:void 0})||e}function pWe(e,t){let r=0;for(let i of e.getChildren()){if(i===t)break;i.kind!==27&&r++}return r}function mWe(e,t){let r=e.getChildren(),i=Oy(r,o=>o.kind!==27);return!t&&r.length>0&&To(r).kind===27&&i++,i}function hWe(e,t,r,i){return L.assert(r>=t.getStart(),\"Assumed 'position' could not occur before node.\"),rse(t)?GN(t,r,i)?0:e+2:e+1}function Qee(e,t,r){let i=LS(e.template)?1:e.template.templateSpans.length+1;return t!==0&&L.assertLessThan(t,i),{isTypeParameterList:!1,invocation:{kind:0,node:e},argumentsSpan:yWe(e,r),argumentIndex:t,argumentCount:i}}function gWe(e,t){let r=e.getFullStart(),i=xo(t.text,e.getEnd(),!1);return il(r,i-r)}function yWe(e,t){let r=e.template,i=r.getStart(),o=r.getEnd();return r.kind===225&&To(r.templateSpans).literal.getFullWidth()===0&&(o=xo(t.text,o,!1)),il(i,o-i)}function vWe(e,t,r,i,o){for(let s=e;!Li(s)&&(o||!Va(s));s=s.parent){L.assert(Od(s.parent,s),\"Not a subspan\",()=>`Child: ${L.formatSyntaxKind(s.kind)}, parent: ${L.formatSyntaxKind(s.parent.kind)}`);let l=uWe(s,t,r,i);if(l)return l}}function bWe(e,t,r){let i=e.getChildren(r),o=i.indexOf(t);return L.assert(o>=0&&i.length>o+1),i[o+1]}function gSe(e){return e.kind===0?P6(e.node):e.called}function ySe(e){return e.kind===0?e.node:e.kind===1?e.called:e.node}function vSe(e,t,{isTypeParameterList:r,argumentCount:i,argumentsSpan:o,invocation:s,argumentIndex:l},f,d,g){var m;let v=ySe(s),S=s.kind===2?s.symbol:d.getSymbolAtLocation(gSe(s))||g&&((m=t.declaration)==null?void 0:m.symbol),x=S?sk(d,S,g?f:void 0,void 0):Je,A=on(e,B=>SWe(B,x,r,d,v,f));l!==0&&L.assertLessThan(l,i);let w=0,C=0;for(let B=0;B<A.length;B++){let q=A[B];if(e[B]===t&&(w=C,q.length>1)){let W=0;for(let Y of q){if(Y.isVariadic||Y.parameters.length>=i){w=C+W;break}W++}}C+=q.length}L.assert(w!==-1);let P={items:UD(A,Ks),applicableSpan:o,selectedItemIndex:w,argumentIndex:l,argumentCount:i},F=P.items[w];if(F.isVariadic){let B=Yc(F.parameters,q=>!!q.isRest);-1<B&&B<F.parameters.length-1?P.argumentIndex=F.parameters.length:P.argumentIndex=Math.min(P.argumentIndex,F.parameters.length-1)}return P}function EWe(e,{argumentCount:t,argumentsSpan:r,invocation:i,argumentIndex:o},s,l){let f=l.getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(e);return f?{items:[TWe(e,f,l,ySe(i),s)],applicableSpan:r,selectedItemIndex:0,argumentIndex:o,argumentCount:t}:void 0}function TWe(e,t,r,i,o){let s=sk(r,e),l=rE(),f=t.map(v=>bSe(v,r,i,o,l)),d=e.getDocumentationComment(r),g=e.getJsDocTags(r),m=[...s,Yl(29)];return{isVariadic:!1,prefixDisplayParts:m,suffixDisplayParts:[Yl(31)],separatorDisplayParts:Zee,parameters:f,documentation:d,tags:g}}function SWe(e,t,r,i,o,s){let l=(r?AWe:CWe)(e,i,o,s);return on(l,({isVariadic:f,parameters:d,prefix:g,suffix:m})=>{let v=[...t,...g],S=[...m,...xWe(e,o,i)],x=e.getDocumentationComment(i),A=e.getJsDocTags();return{isVariadic:f,prefixDisplayParts:v,suffixDisplayParts:S,separatorDisplayParts:Zee,parameters:d,documentation:x,tags:A}})}function xWe(e,t,r){return uv(i=>{i.writePunctuation(\":\"),i.writeSpace(\" \");let o=r.getTypePredicateOfSignature(e);o?r.writeTypePredicate(o,t,void 0,i):r.writeType(r.getReturnTypeOfSignature(e),t,void 0,i)})}function AWe(e,t,r,i){let o=(e.target||e).typeParameters,s=rE(),l=(o||Je).map(d=>bSe(d,t,r,i,s)),f=e.thisParameter?[t.symbolToParameterDeclaration(e.thisParameter,r,Pk)]:[];return t.getExpandedParameters(e).map(d=>{let g=D.createNodeArray([...f,...on(d,v=>t.symbolToParameterDeclaration(v,r,Pk))]),m=uv(v=>{s.writeList(2576,g,i,v)});return{isVariadic:!1,parameters:l,prefix:[Yl(29)],suffix:[Yl(31),...m]}})}function CWe(e,t,r,i){let o=rE(),s=uv(d=>{if(e.typeParameters&&e.typeParameters.length){let g=D.createNodeArray(e.typeParameters.map(m=>t.typeParameterToDeclaration(m,r,Pk)));o.writeList(53776,g,i,d)}}),l=t.getExpandedParameters(e),f=t.hasEffectiveRestParameter(e)?l.length===1?d=>!0:d=>{var g;return!!(d.length&&((g=zr(d[d.length-1],Zp))==null?void 0:g.links.checkFlags)&32768)}:d=>!1;return l.map(d=>({isVariadic:f(d),parameters:d.map(g=>IWe(g,t,r,i,o)),prefix:[...s,Yl(20)],suffix:[Yl(21)]}))}function IWe(e,t,r,i,o){let s=uv(d=>{let g=t.symbolToParameterDeclaration(e,r,Pk);o.writeNode(4,g,i,d)}),l=t.isOptionalParameter(e.valueDeclaration),f=Zp(e)&&!!(e.links.checkFlags&32768);return{name:e.name,documentation:e.getDocumentationComment(t),displayParts:s,isOptional:l,isRest:f}}function bSe(e,t,r,i,o){let s=uv(l=>{let f=t.typeParameterToDeclaration(e,r,Pk);o.writeNode(4,f,i,l)});return{name:e.symbol.name,documentation:e.symbol.getDocumentationComment(t),displayParts:s,isOptional:!1,isRest:!1}}var Pk,Zee,LWe=gt({\"src/services/signatureHelp.ts\"(){\"use strict\";Fr(),Pk=70246400,Zee=[Yl(27),Qs()]}}),UP={};Mo(UP,{getArgumentInfoForCompletions:()=>cWe,getSignatureHelpItems:()=>iWe});var kWe=gt({\"src/services/_namespaces/ts.SignatureHelp.ts\"(){\"use strict\";LWe()}});function DWe(e,t){var r,i;let o={textSpan:Wc(t.getFullStart(),t.getEnd())},s=t;e:for(;;){let d=RWe(s);if(!d.length)break;for(let g=0;g<d.length;g++){let m=d[g-1],v=d[g],S=d[g+1];if(yT(v,t,!0)>e)break e;let x=Wp(eb(t.text,v.end));if(x&&x.kind===2&&f(x.pos,x.end),wWe(t,e,v)){if(Hj(v)&&Ds(s)&&!Gf(v.getStart(t),v.getEnd(),t)&&l(v.getStart(t),v.getEnd()),Va(v)||AL(v)||_2(v)||Iz(v)||m&&_2(m)||pu(v)&&Bc(s)||C2(v)&&pu(s)||wi(v)&&C2(s)&&d.length===1||VT(v)||X0(v)||kL(v)){s=v;break}if(AL(s)&&S&&o6(S)){let P=v.getFullStart()-2,F=S.getStart()+1;l(P,F)}let A=C2(v)&&OWe(m)&&NWe(S)&&!Gf(m.getStart(),S.getStart(),t),w=A?m.getEnd():v.getStart(),C=A?S.getStart():PWe(t,v);if(Jd(v)&&((r=v.jsDoc)==null?void 0:r.length)&&l(Vo(v.jsDoc).getStart(),C),C2(v)){let P=v.getChildren()[0];P&&Jd(P)&&((i=P.jsDoc)==null?void 0:i.length)&&P.getStart()!==v.pos&&(w=Math.min(w,Vo(P.jsDoc).getStart()))}l(w,C),(yo(v)||CA(v))&&l(w+1,C-1),s=v;break}if(g===d.length-1)break e}}return o;function l(d,g){if(d!==g){let m=Wc(d,g);(!o||!K2(m,o.textSpan)&&Noe(m,e))&&(o={textSpan:m,...o&&{parent:o}})}}function f(d,g){l(d,g);let m=d;for(;t.text.charCodeAt(m)===47;)m++;l(m,g)}}function wWe(e,t,r){return L.assert(r.pos<=t),t<r.end?!0:r.getEnd()===t?Zd(e,t).pos<r.end:!1}function RWe(e){var t;if(Li(e))return Mk(e.getChildAt(0).getChildren(),ESe);if(TL(e)){let[r,...i]=e.getChildren(),o=L.checkDefined(i.pop());L.assertEqual(r.kind,18),L.assertEqual(o.kind,19);let s=Mk(i,f=>f===e.readonlyToken||f.kind===146||f===e.questionToken||f.kind===57),l=Mk(s,({kind:f})=>f===22||f===165||f===23);return[r,Fk(OG(l,({kind:f})=>f===58)),o]}if(Yd(e)){let r=Mk(e.getChildren(),l=>l===e.name||ya(e.modifiers,l)),i=((t=r[0])==null?void 0:t.kind)===323?r[0]:void 0,o=i?r.slice(1):r,s=OG(o,({kind:l})=>l===58);return i?[i,Fk(s)]:s}if(ha(e)){let r=Mk(e.getChildren(),o=>o===e.dotDotDotToken||o===e.name),i=Mk(r,o=>o===r[0]||o===e.questionToken);return OG(i,({kind:o})=>o===63)}return Wo(e)?OG(e.getChildren(),({kind:r})=>r===63):e.getChildren()}function Mk(e,t){let r=[],i;for(let o of e)t(o)?(i=i||[],i.push(o)):(i&&(r.push(Fk(i)),i=void 0),r.push(o));return i&&r.push(Fk(i)),r}function OG(e,t,r=!0){if(e.length<2)return e;let i=Yc(e,t);if(i===-1)return e;let o=e.slice(0,i),s=e[i],l=To(e),f=r&&l.kind===26,d=e.slice(i+1,f?e.length-1:void 0),g=zD([o.length?Fk(o):void 0,s,d.length?Fk(d):void 0]);return f?g.concat(l):g}function Fk(e){return L.assertGreaterThanOrEqual(e.length,1),om(fm.createSyntaxList(e),e[0].pos,To(e).end)}function OWe(e){let t=e&&e.kind;return t===18||t===22||t===20||t===283}function NWe(e){let t=e&&e.kind;return t===19||t===23||t===21||t===284}function PWe(e,t){switch(t.kind){case 344:case 341:case 351:case 349:case 346:return e.getLineEndOfPosition(t.getStart());default:return t.getEnd()}}var ESe,MWe=gt({\"src/services/smartSelection.ts\"(){\"use strict\";Fr(),ESe=Kp(gl,Nl)}}),ete={};Mo(ete,{getSmartSelectionRange:()=>DWe});var FWe=gt({\"src/services/_namespaces/ts.SmartSelectionRange.ts\"(){\"use strict\";MWe()}});function TSe(e,t,r){let i=SSe(e,t,r);if(i!==\"\")return i;let o=YI(t);return o&32?nc(t,228)?\"local class\":\"class\":o&384?\"enum\":o&524288?\"type\":o&64?\"interface\":o&262144?\"type parameter\":o&8?\"enum member\":o&2097152?\"alias\":o&1536?\"module\":i}function SSe(e,t,r){let i=e.getRootSymbols(t);if(i.length===1&&Vo(i).flags&8192&&e.getTypeOfSymbolAtLocation(t,r).getNonNullableType().getCallSignatures().length!==0)return\"method\";if(e.isUndefinedSymbol(t))return\"var\";if(e.isArgumentsSymbol(t))return\"local var\";if(r.kind===108&&ot(r)||hS(r))return\"parameter\";let o=YI(t);if(o&3)return dY(t)?\"parameter\":t.valueDeclaration&&kh(t.valueDeclaration)?\"const\":mn(t.declarations,LI)?\"let\":CSe(t)?\"local var\":\"var\";if(o&16)return CSe(t)?\"local function\":\"function\";if(o&32768)return\"getter\";if(o&65536)return\"setter\";if(o&8192)return\"method\";if(o&16384)return\"constructor\";if(o&131072)return\"index\";if(o&4){if(o&33554432&&t.links.checkFlags&6){let s=mn(e.getRootSymbols(t),l=>{if(l.getFlags()&98311)return\"property\"});return s||(e.getTypeOfSymbolAtLocation(t,r).getCallSignatures().length?\"method\":\"property\")}return\"property\"}return\"\"}function xSe(e){if(e.declarations&&e.declarations.length){let[t,...r]=e.declarations,i=Fn(r)&&H7(t)&&vt(r,s=>!H7(s))?8192:0,o=ik(t,i);if(o)return o.split(\",\")}return[]}function GWe(e,t){if(!t)return\"\";let r=new Set(xSe(t));if(t.flags&2097152){let i=e.getAliasedSymbol(t);i!==t&&mn(xSe(i),o=>{r.add(o)})}return t.flags&16777216&&r.add(\"optional\"),r.size>0?lo(r.values()).join(\",\"):\"\"}function ASe(e,t,r,i,o,s=e1(o),l){var f;let d=[],g=[],m=[],v=YI(t),S=s&1?SSe(e,t,o):\"\",x=!1,A=o.kind===108&&F6(o)||hS(o),w,C,P,F=!1;if(o.kind===108&&!A)return{displayParts:[_d(108)],documentation:[],symbolKind:\"primitive type\",tags:void 0};if(S!==\"\"||v&32||v&2097152){if(S===\"getter\"||S===\"setter\"){let le=wr(t.declarations,_e=>_e.name===o);if(le)switch(le.kind){case 174:S=\"getter\";break;case 175:S=\"setter\";break;case 169:S=\"accessor\";break;default:L.assertNever(le)}else S=\"property\"}let U;if(w=A?e.getTypeAtLocation(o):e.getTypeOfSymbolAtLocation(t,o),o.parent&&o.parent.kind===208){let le=o.parent.name;(le===o||le&&le.getFullWidth()===0)&&(o=o.parent)}let re;if(Ih(o)?re=o:(NX(o)||ek(o)||o.parent&&(Au(o.parent)||MT(o.parent))&&Ia(t.valueDeclaration))&&(re=o.parent),re){U=e.getResolvedSignature(re);let le=re.kind===211||Pa(re)&&re.expression.kind===106,_e=le?w.getConstructSignatures():w.getCallSignatures();if(U&&!ya(_e,U.target)&&!ya(_e,U)&&(U=_e.length?_e[0]:void 0),U){switch(le&&v&32?(S=\"constructor\",ie(w.symbol,S)):v&2097152?(S=\"alias\",Q(S),d.push(Qs()),le&&(U.flags&4&&(d.push(_d(126)),d.push(Qs())),d.push(_d(103)),d.push(Qs())),R(t)):ie(t,S),S){case\"JSX attribute\":case\"property\":case\"var\":case\"const\":case\"let\":case\"parameter\":case\"local var\":d.push(Yl(58)),d.push(Qs()),!(Ur(w)&16)&&w.symbol&&(si(d,sk(e,w.symbol,i,void 0,5)),d.push(q2())),le&&(U.flags&4&&(d.push(_d(126)),d.push(Qs())),d.push(_d(103)),d.push(Qs())),fe(U,_e,262144);break;default:fe(U,_e)}x=!0,F=_e.length>1}}else if(VX(o)&&!(v&98304)||o.kind===135&&o.parent.kind===173){let le=o.parent;if(t.declarations&&wr(t.declarations,ge=>ge===(o.kind===135?le.parent:le))){let ge=le.kind===173?w.getNonNullableType().getConstructSignatures():w.getNonNullableType().getCallSignatures();e.isImplementationOfOverload(le)?U=ge[0]:U=e.getSignatureFromDeclaration(le),le.kind===173?(S=\"constructor\",ie(w.symbol,S)):ie(le.kind===176&&!(w.symbol.flags&2048||w.symbol.flags&4096)?w.symbol:t,S),U&&fe(U,ge),x=!0,F=ge.length>1}}}if(v&32&&!x&&!A&&(W(),nc(t,228)?Q(\"local class\"):d.push(_d(84)),d.push(Qs()),R(t),Z(t,r)),v&64&&s&2&&(q(),d.push(_d(118)),d.push(Qs()),R(t),Z(t,r)),v&524288&&s&2&&(q(),d.push(_d(154)),d.push(Qs()),R(t),Z(t,r),d.push(Qs()),d.push(ok(63)),d.push(Qs()),si(d,JN(e,Ch(o.parent)?e.getTypeAtLocation(o.parent):e.getDeclaredTypeOfSymbol(t),i,8388608))),v&384&&(q(),vt(t.declarations,U=>hb(U)&&R0(U))&&(d.push(_d(85)),d.push(Qs())),d.push(_d(92)),d.push(Qs()),R(t)),v&1536&&!A){q();let U=nc(t,264),re=U&&U.name&&U.name.kind===79;d.push(_d(re?143:142)),d.push(Qs()),R(t)}if(v&262144&&s&2)if(q(),d.push(Yl(20)),d.push(ef(\"type parameter\")),d.push(Yl(21)),d.push(Qs()),R(t),t.parent)Y(),R(t.parent,i),Z(t.parent,i);else{let U=nc(t,165);if(U===void 0)return L.fail();let re=U.parent;if(re)if(Ia(re)){Y();let le=e.getSignatureFromDeclaration(re);re.kind===177?(d.push(_d(103)),d.push(Qs())):re.kind!==176&&re.name&&R(re.symbol),si(d,pY(e,le,r,32))}else Ep(re)&&(Y(),d.push(_d(154)),d.push(Qs()),R(re.symbol),Z(re.symbol,r))}if(v&8){S=\"enum member\",ie(t,\"enum member\");let U=(f=t.declarations)==null?void 0:f[0];if(U?.kind===302){let re=e.getConstantValue(U);re!==void 0&&(d.push(Qs()),d.push(ok(63)),d.push(Qs()),d.push(Qu(Use(re),typeof re==\"number\"?7:8)))}}if(t.flags&2097152){if(q(),!x){let U=e.getAliasedSymbol(t);if(U!==t&&U.declarations&&U.declarations.length>0){let re=U.declarations[0],le=sa(re);if(le){let _e=b6(re)&&Mr(re,2),ge=t.name!==\"default\"&&!_e,X=ASe(e,U,Gn(re),re,le,s,ge?t:U);d.push(...X.displayParts),d.push(q2()),C=X.documentation,P=X.tags}else C=U.getContextualDocumentationComment(re,e),P=U.getJsDocTags(e)}}if(t.declarations)switch(t.declarations[0].kind){case 267:d.push(_d(93)),d.push(Qs()),d.push(_d(143));break;case 274:d.push(_d(93)),d.push(Qs()),d.push(_d(t.declarations[0].isExportEquals?63:88));break;case 278:d.push(_d(93));break;default:d.push(_d(100))}d.push(Qs()),R(t),mn(t.declarations,U=>{if(U.kind===268){let re=U;if(ab(re))d.push(Qs()),d.push(ok(63)),d.push(Qs()),d.push(_d(147)),d.push(Yl(20)),d.push(Qu(Qc(RI(re)),8)),d.push(Yl(21));else{let le=e.getSymbolAtLocation(re.moduleReference);le&&(d.push(Qs()),d.push(ok(63)),d.push(Qs()),R(le,i))}return!0}})}if(!x)if(S!==\"\"){if(w){if(A?(q(),d.push(_d(108))):ie(t,S),S===\"property\"||S===\"accessor\"||S===\"getter\"||S===\"setter\"||S===\"JSX attribute\"||v&3||S===\"local var\"||S===\"index\"||A){if(d.push(Yl(58)),d.push(Qs()),w.symbol&&w.symbol.flags&262144&&S!==\"index\"){let U=uv(re=>{let le=e.typeParameterToDeclaration(w,i,tte);B().writeNode(4,le,Gn(ea(i)),re)});si(d,U)}else si(d,JN(e,w,i));if(Zp(t)&&t.links.target&&Zp(t.links.target)&&t.links.target.links.tupleLabelDeclaration){let U=t.links.target.links.tupleLabelDeclaration;L.assertNode(U.name,Re),d.push(Qs()),d.push(Yl(20)),d.push(ef(vr(U.name))),d.push(Yl(21))}}else if(v&16||v&8192||v&16384||v&131072||v&98304||S===\"method\"){let U=w.getNonNullableType().getCallSignatures();U.length&&(fe(U[0],U),F=U.length>1)}}}else S=TSe(e,t,o);if(g.length===0&&!F&&(g=t.getContextualDocumentationComment(i,e)),g.length===0&&v&4&&t.parent&&t.declarations&&mn(t.parent.declarations,U=>U.kind===308))for(let U of t.declarations){if(!U.parent||U.parent.kind!==223)continue;let re=e.getSymbolAtLocation(U.parent.right);if(!!re&&(g=re.getDocumentationComment(e),m=re.getJsDocTags(e),g.length>0))break}if(g.length===0&&Re(o)&&t.valueDeclaration&&Wo(t.valueDeclaration)){let U=t.valueDeclaration,re=U.parent;if(Re(U.name)&&cm(re)){let le=c_(U.name),_e=e.getTypeAtLocation(re);g=ks(_e.isUnion()?_e.types:[_e],ge=>{let X=ge.getProperty(le);return X?X.getDocumentationComment(e):void 0})||Je}}return m.length===0&&!F&&(m=t.getContextualJsDocTags(i,e)),g.length===0&&C&&(g=C),m.length===0&&P&&(m=P),{displayParts:d,documentation:g,symbolKind:S,tags:m.length===0?void 0:m};function B(){return rE()}function q(){d.length&&d.push(q2()),W()}function W(){l&&(Q(\"alias\"),d.push(Qs()))}function Y(){d.push(Qs()),d.push(_d(101)),d.push(Qs())}function R(U,re){let le;l&&U===t&&(U=l),S===\"index\"&&(le=e.getIndexInfosOfIndexSymbol(U));let _e=[];U.flags&131072&&le?(U.parent&&(_e=sk(e,U.parent)),_e.push(Yl(22)),le.forEach((ge,X)=>{_e.push(...JN(e,ge.keyType)),X!==le.length-1&&(_e.push(Qs()),_e.push(Yl(51)),_e.push(Qs()))}),_e.push(Yl(23))):_e=sk(e,U,re||r,void 0,7),si(d,_e),t.flags&16777216&&d.push(Yl(57))}function ie(U,re){q(),re&&(Q(re),U&&!vt(U.declarations,le=>xs(le)||(ms(le)||_u(le))&&!le.name)&&(d.push(Qs()),R(U)))}function Q(U){switch(U){case\"var\":case\"function\":case\"let\":case\"const\":case\"constructor\":d.push(fY(U));return;default:d.push(Yl(20)),d.push(fY(U)),d.push(Yl(21));return}}function fe(U,re,le=0){si(d,pY(e,U,i,le|32)),re.length>1&&(d.push(Qs()),d.push(Yl(20)),d.push(ok(39)),d.push(Qu((re.length-1).toString(),7)),d.push(Qs()),d.push(ef(re.length===2?\"overload\":\"overloads\")),d.push(Yl(21))),g=U.getDocumentationComment(e),m=U.getJsDocTags(),re.length>1&&g.length===0&&m.length===0&&(g=re[0].getDocumentationComment(e),m=re[0].getJsDocTags().filter(_e=>_e.name!==\"deprecated\"))}function Z(U,re){let le=uv(_e=>{let ge=e.symbolToTypeParameterDeclarations(U,re,tte);B().writeList(53776,ge,Gn(ea(re)),_e)});si(d,le)}}function CSe(e){return e.parent?!1:mn(e.declarations,t=>{if(t.kind===215)return!0;if(t.kind!==257&&t.kind!==259)return!1;for(let r=t.parent;!ET(r);r=r.parent)if(r.kind===308||r.kind===265)return!1;return!0})}var tte,BWe=gt({\"src/services/symbolDisplay.ts\"(){\"use strict\";Fr(),tte=70246400}}),$g={};Mo($g,{getSymbolDisplayPartsDocumentationAndSymbolKind:()=>ASe,getSymbolKind:()=>TSe,getSymbolModifiers:()=>GWe});var UWe=gt({\"src/services/_namespaces/ts.SymbolDisplay.ts\"(){\"use strict\";BWe()}});function ISe(e){let t=e.__pos;return L.assert(typeof t==\"number\"),t}function nte(e,t){L.assert(typeof t==\"number\"),e.__pos=t}function LSe(e){let t=e.__end;return L.assert(typeof t==\"number\"),t}function rte(e,t){L.assert(typeof t==\"number\"),e.__end=t}function kSe(e,t){return xo(e,t,!1,!0)}function VWe(e,t){let r=t;for(;r<e.length;){let i=e.charCodeAt(r);if(Yp(i)){r++;continue}return i===47}return!1}function Gk(e,t,r,i){return{pos:_1(e,t,i),end:hx(e,r,i)}}function _1(e,t,r,i=!1){var o,s;let{leadingTriviaOption:l}=r;if(l===0)return t.getStart(e);if(l===3){let x=t.getStart(e),A=Hf(x,e);return RN(t,A)?A:x}if(l===2){let x=EH(t,e.text);if(x?.length)return Hf(x[0].pos,e)}let f=t.getFullStart(),d=t.getStart(e);if(f===d)return d;let g=Hf(f,e);if(Hf(d,e)===g)return l===1?f:d;if(i){let x=((o=Nm(e.text,f))==null?void 0:o[0])||((s=eb(e.text,f))==null?void 0:s[0]);if(x)return xo(e.text,x.end,!0,!0)}let v=f>0?1:0,S=Ky(VI(e,g)+v,e);return S=kSe(e.text,S),Ky(VI(e,S),e)}function ite(e,t,r){let{end:i}=t,{trailingTriviaOption:o}=r;if(o===2){let s=eb(e.text,i);if(s){let l=VI(e,t.end);for(let f of s){if(f.kind===2||VI(e,f.pos)>l)break;if(VI(e,f.end)>l)return xo(e.text,f.end,!0,!0)}}}}function hx(e,t,r){var i;let{end:o}=t,{trailingTriviaOption:s}=r;if(s===0)return o;if(s===1){let d=Qi(eb(e.text,o),Nm(e.text,o)),g=(i=d?.[d.length-1])==null?void 0:i.end;return g||o}let l=ite(e,t,r);if(l)return l;let f=xo(e.text,o,!0);return f!==o&&(s===2||Wl(e.text.charCodeAt(f-1)))?f:o}function NG(e,t){return!!t&&!!e.parent&&(t.kind===27||t.kind===26&&e.parent.kind===207)}function jWe(e){return ms(e)||Jc(e)}function HWe(e){if(e.kind!==216)return e;let t=e.parent.kind===169?e.parent:e.parent.parent;return t.jsDoc=e.jsDoc,t}function WWe(e,t){if(e.kind===t.kind)switch(e.kind){case 344:{let r=e,i=t;return Re(r.name)&&Re(i.name)&&r.name.escapedText===i.name.escapedText?D.createJSDocParameterTag(void 0,i.name,!1,i.typeExpression,i.isNameFirst,r.comment):void 0}case 345:return D.createJSDocReturnTag(void 0,t.typeExpression,e.comment);case 347:return D.createJSDocTypeTag(void 0,t.typeExpression,e.comment)}}function ate(e,t){return xo(e.text,_1(e,t,{leadingTriviaOption:1}),!1,!0)}function zWe(e,t,r,i){let o=ate(e,i);if(r===void 0||Gf(hx(e,t,{}),o,e))return o;let s=el(i.getStart(e),e);if(NG(t,s)){let l=el(t.getStart(e),e);if(NG(r,l)){let f=xo(e.text,s.getEnd(),!0,!0);if(Gf(l.getStart(e),s.getStart(e),e))return Wl(e.text.charCodeAt(f-1))?f-1:f;if(Wl(e.text.charCodeAt(f)))return f}}return o}function JWe(e,t){let r=Yo(e,18,t),i=Yo(e,19,t);return[r?.end,i?.end]}function PG(e){return rs(e)?e.properties:e.members}function KWe(e,t,r,i){return VP.newFileChangesWorker(void 0,t,e,r,i)}function ote(e,t){for(let r=t.length-1;r>=0;r--){let{span:i,newText:o}=t[r];e=`${e.substring(0,i.start)}${o}${e.substring(wl(i))}`}return e}function qWe(e){return xo(e,0)===e.length}function MG(e){let t=xn(e,MG,RSe,XWe,MG),r=ws(t)?t:Object.create(t);return om(r,ISe(e),LSe(e)),r}function XWe(e,t,r,i,o){let s=On(e,t,r,i,o);if(!s)return s;L.assert(e);let l=s===e?D.createNodeArray(s.slice(0)):s;return om(l,ISe(e),LSe(e)),l}function DSe(e){let t=0,r=xR(e),i=X=>{X&&nte(X,t)},o=X=>{X&&rte(X,t)},s=X=>{X&&nte(X,t)},l=X=>{X&&rte(X,t)},f=X=>{X&&nte(X,t)},d=X=>{X&&rte(X,t)};function g(X,Ve){if(Ve||!qWe(X)){t=r.getTextPos();let we=0;for(;xh(X.charCodeAt(X.length-we-1));)we++;t-=we}}function m(X){r.write(X),g(X,!1)}function v(X){r.writeComment(X)}function S(X){r.writeKeyword(X),g(X,!1)}function x(X){r.writeOperator(X),g(X,!1)}function A(X){r.writePunctuation(X),g(X,!1)}function w(X){r.writeTrailingSemicolon(X),g(X,!1)}function C(X){r.writeParameter(X),g(X,!1)}function P(X){r.writeProperty(X),g(X,!1)}function F(X){r.writeSpace(X),g(X,!1)}function B(X){r.writeStringLiteral(X),g(X,!1)}function q(X,Ve){r.writeSymbol(X,Ve),g(X,!1)}function W(X){r.writeLine(X)}function Y(){r.increaseIndent()}function R(){r.decreaseIndent()}function ie(){return r.getText()}function Q(X){r.rawWrite(X),g(X,!1)}function fe(X){r.writeLiteral(X),g(X,!0)}function Z(){return r.getTextPos()}function U(){return r.getLine()}function re(){return r.getColumn()}function le(){return r.getIndent()}function _e(){return r.isAtStartOfLine()}function ge(){r.clear(),t=0}return{onBeforeEmitNode:i,onAfterEmitNode:o,onBeforeEmitNodeArray:s,onAfterEmitNodeArray:l,onBeforeEmitToken:f,onAfterEmitToken:d,write:m,writeComment:v,writeKeyword:S,writeOperator:x,writePunctuation:A,writeTrailingSemicolon:w,writeParameter:C,writeProperty:P,writeSpace:F,writeStringLiteral:B,writeSymbol:q,writeLine:W,increaseIndent:Y,decreaseIndent:R,getText:ie,rawWrite:Q,writeLiteral:fe,getTextPos:Z,getLine:U,getColumn:re,getIndent:le,isAtStartOfLine:_e,hasTrailingComment:()=>r.hasTrailingComment(),hasTrailingWhitespace:()=>r.hasTrailingWhitespace(),clear:ge}}function YWe(e){let t;for(let g of e.statements)if(G_(g))t=g;else break;let r=0,i=e.text;if(t)return r=t.end,d(),r;let o=K8(i);o!==void 0&&(r=o.length,d());let s=Nm(i,r);if(!s)return r;let l,f;for(let g of s){if(g.kind===3){if(y6(i,g.pos)){l={range:g,pinnedOrTripleSlash:!0};continue}}else if(iH(i,g.pos,g.end)){l={range:g,pinnedOrTripleSlash:!0};continue}if(l){if(l.pinnedOrTripleSlash)break;let m=e.getLineAndCharacterOfPosition(g.pos).line,v=e.getLineAndCharacterOfPosition(l.range.end).line;if(m>=v+2)break}if(e.statements.length){f===void 0&&(f=e.getLineAndCharacterOfPosition(e.statements[0].getStart()).line);let m=e.getLineAndCharacterOfPosition(g.end).line;if(f<m+2)break}l={range:g,pinnedOrTripleSlash:!1}}return l&&(r=l.range.end,d()),r;function d(){if(r<i.length){let g=i.charCodeAt(r);Wl(g)&&(r++,r<i.length&&g===13&&i.charCodeAt(r)===10&&r++)}}}function wSe(e,t){return!Kg(e,t)&&!r1(e,t)&&!qX(e,t)&&!Dhe(e,t)}function $We(e,t){return(Yd(e)||Na(e))&&s6(t)&&t.name.kind===164||Pw(e)&&Pw(t)}function Zm(e,t,r,i={leadingTriviaOption:1}){let o=_1(t,r,i),s=hx(t,r,i);e.deleteRange(t,{pos:o,end:s})}function Bk(e,t,r,i){let o=L.checkDefined(tl.SmartIndenter.getContainingList(i,r)),s=wA(o,i);if(L.assert(s!==-1),o.length===1){Zm(e,r,i);return}L.assert(!t.has(i),\"Deleting a node twice\"),t.add(i),e.deleteRange(r,{pos:ate(r,i),end:s===o.length-1?hx(r,i,{}):zWe(r,i,o[s-1],o[s+1])})}var ste,cte,aC,FG,VP,RSe,lte,QWe=gt({\"src/services/textChanges.ts\"(){\"use strict\";Fr(),ste=(e=>(e[e.Exclude=0]=\"Exclude\",e[e.IncludeAll=1]=\"IncludeAll\",e[e.JSDoc=2]=\"JSDoc\",e[e.StartLine=3]=\"StartLine\",e))(ste||{}),cte=(e=>(e[e.Exclude=0]=\"Exclude\",e[e.ExcludeWhitespace=1]=\"ExcludeWhitespace\",e[e.Include=2]=\"Include\",e))(cte||{}),aC={leadingTriviaOption:0,trailingTriviaOption:0},FG=class{constructor(e,t){this.newLineCharacter=e,this.formatContext=t,this.changes=[],this.newFiles=[],this.classesWithNodesInsertedAtStart=new Map,this.deletedNodes=[]}static fromContext(e){return new FG(bb(e.host,e.formatContext.options),e.formatContext)}static with(e,t){let r=FG.fromContext(e);return t(r),r.getChanges()}pushRaw(e,t){L.assertEqual(e.fileName,t.fileName);for(let r of t.textChanges)this.changes.push({kind:3,sourceFile:e,text:r.newText,range:y7(r.span)})}deleteRange(e,t){this.changes.push({kind:0,sourceFile:e,range:t})}delete(e,t){this.deletedNodes.push({sourceFile:e,node:t})}deleteNode(e,t,r={leadingTriviaOption:1}){this.deleteRange(e,Gk(e,t,t,r))}deleteNodes(e,t,r={leadingTriviaOption:1},i){for(let o of t){let s=_1(e,o,r,i),l=hx(e,o,r);this.deleteRange(e,{pos:s,end:l}),i=!!ite(e,o,r)}}deleteModifier(e,t){this.deleteRange(e,{pos:t.getStart(e),end:xo(e.text,t.end,!0)})}deleteNodeRange(e,t,r,i={leadingTriviaOption:1}){let o=_1(e,t,i),s=hx(e,r,i);this.deleteRange(e,{pos:o,end:s})}deleteNodeRangeExcludingEnd(e,t,r,i={leadingTriviaOption:1}){let o=_1(e,t,i),s=r===void 0?e.text.length:_1(e,r,i);this.deleteRange(e,{pos:o,end:s})}replaceRange(e,t,r,i={}){this.changes.push({kind:1,sourceFile:e,range:t,options:i,node:r})}replaceNode(e,t,r,i=aC){this.replaceRange(e,Gk(e,t,t,i),r,i)}replaceNodeRange(e,t,r,i,o=aC){this.replaceRange(e,Gk(e,t,r,o),i,o)}replaceRangeWithNodes(e,t,r,i={}){this.changes.push({kind:2,sourceFile:e,range:t,options:i,nodes:r})}replaceNodeWithNodes(e,t,r,i=aC){this.replaceRangeWithNodes(e,Gk(e,t,t,i),r,i)}replaceNodeWithText(e,t,r){this.replaceRangeWithText(e,Gk(e,t,t,aC),r)}replaceNodeRangeWithNodes(e,t,r,i,o=aC){this.replaceRangeWithNodes(e,Gk(e,t,r,o),i,o)}nodeHasTrailingComment(e,t,r=aC){return!!ite(e,t,r)}nextCommaToken(e,t){let r=n1(t,t.parent,e);return r&&r.kind===27?r:void 0}replacePropertyAssignment(e,t,r){let i=this.nextCommaToken(e,t)?\"\":\",\"+this.newLineCharacter;this.replaceNode(e,t,r,{suffix:i})}insertNodeAt(e,t,r,i={}){this.replaceRange(e,Ff(t),r,i)}insertNodesAt(e,t,r,i={}){this.replaceRangeWithNodes(e,Ff(t),r,i)}insertNodeAtTopOfFile(e,t,r){this.insertAtTopOfFile(e,t,r)}insertNodesAtTopOfFile(e,t,r){this.insertAtTopOfFile(e,t,r)}insertAtTopOfFile(e,t,r){let i=YWe(e),o={prefix:i===0?void 0:this.newLineCharacter,suffix:(Wl(e.text.charCodeAt(i))?\"\":this.newLineCharacter)+(r?this.newLineCharacter:\"\")};ba(t)?this.insertNodesAt(e,i,t,o):this.insertNodeAt(e,i,t,o)}insertFirstParameter(e,t,r){let i=Sl(t);i?this.insertNodeBefore(e,i,r):this.insertNodeAt(e,t.pos,r)}insertNodeBefore(e,t,r,i=!1,o={}){this.insertNodeAt(e,_1(e,t,o),r,this.getOptionsForInsertNodeBefore(t,r,i))}insertModifierAt(e,t,r,i={}){this.insertNodeAt(e,t,D.createToken(r),i)}insertModifierBefore(e,t,r){return this.insertModifierAt(e,r.getStart(e),t,{suffix:\" \"})}insertCommentBeforeLine(e,t,r,i){let o=Ky(t,e),s=nge(e.text,o),l=wSe(e,s),f=rk(e,l?s:r),d=e.text.slice(o,s),g=`${l?\"\":this.newLineCharacter}//${i}${this.newLineCharacter}${d}`;this.insertText(e,f.getStart(e),g)}insertJsdocCommentBefore(e,t,r){let i=t.getStart(e);if(t.jsDoc)for(let l of t.jsDoc)this.deleteRange(e,{pos:Hf(l.getStart(e),e),end:hx(e,l,{})});let o=hY(e.text,i-1),s=e.text.slice(o,i);this.insertNodeAt(e,i,r,{suffix:this.newLineCharacter+s})}createJSDocText(e,t){let r=Uo(t.jsDoc,o=>Ta(o.comment)?D.createJSDocText(o.comment):o.comment),i=Wp(t.jsDoc);return i&&Gf(i.pos,i.end,e)&&Fn(r)===0?void 0:D.createNodeArray(DU(r,D.createJSDocText(`\n`)))}replaceJSDocComment(e,t,r){this.insertJsdocCommentBefore(e,HWe(t),D.createJSDocComment(this.createJSDocText(e,t),D.createNodeArray(r)))}addJSDocTags(e,t,r){let i=UD(t.jsDoc,s=>s.tags),o=r.filter(s=>!i.some((l,f)=>{let d=WWe(l,s);return d&&(i[f]=d),!!d}));this.replaceJSDocComment(e,t,[...i,...o])}filterJSDocTags(e,t,r){this.replaceJSDocComment(e,t,Pr(UD(t.jsDoc,i=>i.tags),r))}replaceRangeWithText(e,t,r){this.changes.push({kind:3,sourceFile:e,range:t,text:r})}insertText(e,t,r){this.replaceRangeWithText(e,Ff(t),r)}tryInsertTypeAnnotation(e,t,r){var i;let o;if(Ia(t)){if(o=Yo(t,21,e),!o){if(!xs(t))return!1;o=Vo(t.parameters)}}else o=(i=t.kind===257?t.exclamationToken:t.questionToken)!=null?i:t.name;return this.insertNodeAt(e,o.end,r,{prefix:\": \"}),!0}tryInsertThisTypeAnnotation(e,t,r){let i=Yo(t,20,e).getStart(e)+1,o=t.parameters.length?\", \":\"\";this.insertNodeAt(e,i,r,{prefix:\"this: \",suffix:o})}insertTypeParameters(e,t,r){let i=(Yo(t,20,e)||Vo(t.parameters)).getStart(e);this.insertNodesAt(e,i,r,{prefix:\"<\",suffix:\">\",joiner:\", \"})}getOptionsForInsertNodeBefore(e,t,r){return ca(e)||_l(e)?{suffix:r?this.newLineCharacter+this.newLineCharacter:this.newLineCharacter}:wi(e)?{suffix:\", \"}:ha(e)?ha(t)?{suffix:\", \"}:{}:yo(e)&&gl(e.parent)||jg(e)?{suffix:\", \"}:$u(e)?{suffix:\",\"+(r?this.newLineCharacter:\" \")}:L.failBadSyntaxKind(e)}insertNodeAtConstructorStart(e,t,r){let i=Sl(t.body.statements);!i||!t.body.multiLine?this.replaceConstructorBody(e,t,[r,...t.body.statements]):this.insertNodeBefore(e,i,r)}insertNodeAtConstructorStartAfterSuperCall(e,t,r){let i=wr(t.body.statements,o=>Ol(o)&&NA(o.expression));!i||!t.body.multiLine?this.replaceConstructorBody(e,t,[...t.body.statements,r]):this.insertNodeAfter(e,i,r)}insertNodeAtConstructorEnd(e,t,r){let i=Os(t.body.statements);!i||!t.body.multiLine?this.replaceConstructorBody(e,t,[...t.body.statements,r]):this.insertNodeAfter(e,i,r)}replaceConstructorBody(e,t,r){this.replaceNode(e,t.body,D.createBlock(r,!0))}insertNodeAtEndOfScope(e,t,r){let i=_1(e,t.getLastToken(),{});this.insertNodeAt(e,i,r,{prefix:Wl(e.text.charCodeAt(t.getLastToken().pos))?this.newLineCharacter:this.newLineCharacter+this.newLineCharacter,suffix:this.newLineCharacter})}insertMemberAtStart(e,t,r){this.insertNodeAtStartWorker(e,t,r)}insertNodeAtObjectStart(e,t,r){this.insertNodeAtStartWorker(e,t,r)}insertNodeAtStartWorker(e,t,r){var i;let o=(i=this.guessIndentationFromExistingMembers(e,t))!=null?i:this.computeIndentationForNewMember(e,t);this.insertNodeAt(e,PG(t).pos,r,this.getInsertNodeAtStartInsertOptions(e,t,o))}guessIndentationFromExistingMembers(e,t){let r,i=t;for(let o of PG(t)){if(a4(i,o,e))return;let s=o.getStart(e),l=tl.SmartIndenter.findFirstNonWhitespaceColumn(Hf(s,e),s,e,this.formatContext.options);if(r===void 0)r=l;else if(l!==r)return;i=o}return r}computeIndentationForNewMember(e,t){var r;let i=t.getStart(e);return tl.SmartIndenter.findFirstNonWhitespaceColumn(Hf(i,e),i,e,this.formatContext.options)+((r=this.formatContext.options.indentSize)!=null?r:4)}getInsertNodeAtStartInsertOptions(e,t,r){let o=PG(t).length===0,s=U_(this.classesWithNodesInsertedAtStart,zo(t),{node:t,sourceFile:e}),l=rs(t)&&(!Pf(e)||!o),f=rs(t)&&Pf(e)&&o&&!s;return{indentation:r,prefix:(f?\",\":\"\")+this.newLineCharacter,suffix:l?\",\":ku(t)&&o?\";\":\"\"}}insertNodeAfterComma(e,t,r){let i=this.insertNodeAfterWorker(e,this.nextCommaToken(e,t)||t,r);this.insertNodeAt(e,i,r,this.getInsertNodeAfterOptions(e,t))}insertNodeAfter(e,t,r){let i=this.insertNodeAfterWorker(e,t,r);this.insertNodeAt(e,i,r,this.getInsertNodeAfterOptions(e,t))}insertNodeAtEndOfList(e,t,r){this.insertNodeAt(e,t.end,r,{prefix:\", \"})}insertNodesAfter(e,t,r){let i=this.insertNodeAfterWorker(e,t,Vo(r));this.insertNodesAt(e,i,r,this.getInsertNodeAfterOptions(e,t))}insertNodeAfterWorker(e,t,r){return $We(t,r)&&e.text.charCodeAt(t.end-1)!==59&&this.replaceRange(e,Ff(t.end),D.createToken(26)),hx(e,t,{})}getInsertNodeAfterOptions(e,t){let r=this.getInsertNodeAfterOptionsWorker(t);return{...r,prefix:t.end===e.end&&ca(t)?r.prefix?`\n${r.prefix}`:`\n`:r.prefix}}getInsertNodeAfterOptionsWorker(e){switch(e.kind){case 260:case 264:return{prefix:this.newLineCharacter,suffix:this.newLineCharacter};case 257:case 10:case 79:return{prefix:\", \"};case 299:return{suffix:\",\"+this.newLineCharacter};case 93:return{prefix:\" \"};case 166:return{};default:return L.assert(ca(e)||s6(e)),{suffix:this.newLineCharacter}}}insertName(e,t,r){if(L.assert(!t.name),t.kind===216){let i=Yo(t,38,e),o=Yo(t,20,e);o?(this.insertNodesAt(e,o.getStart(e),[D.createToken(98),D.createIdentifier(r)],{joiner:\" \"}),Zm(this,e,i)):(this.insertText(e,Vo(t.parameters).getStart(e),`function ${r}(`),this.replaceRange(e,i,D.createToken(21))),t.body.kind!==238&&(this.insertNodesAt(e,t.body.getStart(e),[D.createToken(18),D.createToken(105)],{joiner:\" \",suffix:\" \"}),this.insertNodesAt(e,t.body.end,[D.createToken(26),D.createToken(19)],{joiner:\" \"}))}else{let i=Yo(t,t.kind===215?98:84,e).end;this.insertNodeAt(e,i,D.createIdentifier(r),{prefix:\" \"})}}insertExportModifier(e,t){this.insertText(e,t.getStart(e),\"export \")}insertImportSpecifierAtIndex(e,t,r,i){let o=r.elements[i-1];o?this.insertNodeInListAfter(e,o,t):this.insertNodeBefore(e,r.elements[0],t,!Gf(r.elements[0].getStart(),r.parent.parent.getStart(),e))}insertNodeInListAfter(e,t,r,i=tl.SmartIndenter.getContainingList(t,e)){if(!i){L.fail(\"node is not a list element\");return}let o=wA(i,t);if(o<0)return;let s=t.getEnd();if(o!==i.length-1){let l=Vi(e,t.end);if(l&&NG(t,l)){let f=i[o+1],d=kSe(e.text,f.getFullStart()),g=`${Xa(l.kind)}${e.text.substring(l.end,d)}`;this.insertNodesAt(e,d,[r],{suffix:g})}}else{let l=t.getStart(e),f=Hf(l,e),d,g=!1;if(i.length===1)d=27;else{let m=el(t.pos,e);d=NG(t,m)?m.kind:27,g=Hf(i[o-1].getStart(e),e)!==f}if(VWe(e.text,t.end)&&(g=!0),g){this.replaceRange(e,Ff(s),D.createToken(d));let m=tl.SmartIndenter.findFirstNonWhitespaceColumn(f,l,e,this.formatContext.options),v=xo(e.text,s,!0,!1);for(;v!==s&&Wl(e.text.charCodeAt(v-1));)v--;this.replaceRange(e,Ff(v),r,{indentation:m,prefix:this.newLineCharacter})}else this.replaceRange(e,Ff(s),r,{prefix:`${Xa(d)} `})}}parenthesizeExpression(e,t){this.replaceRange(e,MW(t),D.createParenthesizedExpression(t))}finishClassesWithNodesInsertedAtStart(){this.classesWithNodesInsertedAtStart.forEach(({node:e,sourceFile:t})=>{let[r,i]=JWe(e,t);if(r!==void 0&&i!==void 0){let o=PG(e).length===0,s=Gf(r,i,t);o&&s&&r!==i-1&&this.deleteRange(t,Ff(r,i-1)),s&&this.insertText(t,i-1,this.newLineCharacter)}})}finishDeleteDeclarations(){let e=new Set;for(let{sourceFile:t,node:r}of this.deletedNodes)this.deletedNodes.some(i=>i.sourceFile===t&&bhe(i.node,r))||(ba(r)?this.deleteRange(t,FW(t,r)):lte.deleteDeclaration(this,e,t,r));e.forEach(t=>{let r=t.getSourceFile(),i=tl.SmartIndenter.getContainingList(t,r);if(t!==To(i))return;let o=s8(i,s=>!e.has(s),i.length-2);o!==-1&&this.deleteRange(r,{pos:i[o].end,end:ate(r,i[o+1])})})}getChanges(e){this.finishDeleteDeclarations(),this.finishClassesWithNodesInsertedAtStart();let t=VP.getTextChangesFromChanges(this.changes,this.newLineCharacter,this.formatContext,e);for(let{oldFile:r,fileName:i,statements:o}of this.newFiles)t.push(VP.newFileChanges(r,i,o,this.newLineCharacter,this.formatContext));return t}createNewFile(e,t,r){this.newFiles.push({oldFile:e,fileName:t,statements:r})}},(e=>{function t(f,d,g,m){return Zi($C(f,v=>v.sourceFile.path),v=>{let S=v[0].sourceFile,x=Ag(v,(w,C)=>w.range.pos-C.range.pos||w.range.end-C.range.end);for(let w=0;w<x.length-1;w++)L.assert(x[w].range.end<=x[w+1].range.pos,\"Changes overlap\",()=>`${JSON.stringify(x[w].range)} and ${JSON.stringify(x[w+1].range)}`);let A=Zi(x,w=>{let C=lv(w.range),P=o(w,S,d,g,m);if(!(C.length===P.length&&yge(S.text,P,C.start)))return BN(C,P)});return A.length>0?{fileName:S.fileName,textChanges:A}:void 0})}e.getTextChangesFromChanges=t;function r(f,d,g,m,v){let S=i(f,RW(d),g,m,v);return{fileName:d,textChanges:[BN(il(0,0),S)],isNewFile:!0}}e.newFileChanges=r;function i(f,d,g,m,v){let S=g.map(w=>w===4?\"\":l(w,f,m).text).join(m),x=wO(\"any file name\",S,99,!0,d),A=tl.formatDocument(x,v);return ote(S,A)+m}e.newFileChangesWorker=i;function o(f,d,g,m,v){var S;if(f.kind===0)return\"\";if(f.kind===3)return f.text;let{options:x={},range:{pos:A}}=f,w=F=>s(F,d,A,x,g,m,v),C=f.kind===2?f.nodes.map(F=>mA(w(F),g)).join(((S=f.options)==null?void 0:S.joiner)||g):w(f.node),P=x.indentation!==void 0||Hf(A,d)===A?C:C.replace(/^\\s+/,\"\");return(x.prefix||\"\")+P+(!x.suffix||Oc(P,x.suffix)?\"\":x.suffix)}function s(f,d,g,{indentation:m,prefix:v,delta:S},x,A,w){let{node:C,text:P}=l(f,d,x);w&&w(C,P);let F=z7(A,d),B=m!==void 0?m:tl.SmartIndenter.getIndentation(g,d,F,v===x||Hf(g,d)===g);S===void 0&&(S=tl.SmartIndenter.shouldIndentChildNode(F,f)&&F.indentSize||0);let q={text:P,getLineAndCharacterOfPosition(Y){return Gs(this,Y)}},W=tl.formatNodeGivenIndentation(C,q,d.languageVariant,B,S,{...A,options:F});return ote(P,W)}function l(f,d,g){let m=DSe(g),v=YN(g);return nE({newLine:v,neverAsciiEscape:!0,preserveSourceNewlines:!0,terminateUnterminatedLiterals:!0},m).writeNode(4,f,d,m),{text:m.getText(),node:MG(f)}}e.getNonformattedText=l})(VP||(VP={})),RSe={...Bh,factory:$R(Bh.factory.flags|1,Bh.factory.baseFactory)},(e=>{function t(s,l,f,d){switch(d.kind){case 166:{let x=d.parent;xs(x)&&x.parameters.length===1&&!Yo(x,20,f)?s.replaceNodeWithText(f,d,\"()\"):Bk(s,l,f,d);break}case 269:case 268:let g=f.imports.length&&d===Vo(f.imports).parent||d===wr(f.statements,vT);Zm(s,f,d,{leadingTriviaOption:g?0:Jd(d)?2:3});break;case 205:let m=d.parent;m.kind===204&&d!==To(m.elements)?Zm(s,f,d):Bk(s,l,f,d);break;case 257:o(s,l,f,d);break;case 165:Bk(s,l,f,d);break;case 273:let S=d.parent;S.elements.length===1?i(s,f,S):Bk(s,l,f,d);break;case 271:i(s,f,d);break;case 26:Zm(s,f,d,{trailingTriviaOption:0});break;case 98:Zm(s,f,d,{leadingTriviaOption:0});break;case 260:case 259:Zm(s,f,d,{leadingTriviaOption:Jd(d)?2:3});break;default:d.parent?lm(d.parent)&&d.parent.name===d?r(s,f,d.parent):Pa(d.parent)&&ya(d.parent.arguments,d)?Bk(s,l,f,d):Zm(s,f,d):Zm(s,f,d)}}e.deleteDeclaration=t;function r(s,l,f){if(!f.namedBindings)Zm(s,l,f.parent);else{let d=f.name.getStart(l),g=Vi(l,f.name.end);if(g&&g.kind===27){let m=xo(l.text,g.end,!1,!0);s.deleteRange(l,{pos:d,end:m})}else Zm(s,l,f.name)}}function i(s,l,f){if(f.parent.name){let d=L.checkDefined(Vi(l,f.pos-1));s.deleteRange(l,{pos:d.getStart(l),end:f.end})}else{let d=cb(f,269);Zm(s,l,d)}}function o(s,l,f,d){let{parent:g}=d;if(g.kind===295){s.deleteNodeRange(f,Yo(g,20,f),Yo(g,21,f));return}if(g.declarations.length!==1){Bk(s,l,f,d);return}let m=g.parent;switch(m.kind){case 247:case 246:s.replaceNode(f,d,D.createObjectLiteralExpression());break;case 245:Zm(s,f,g);break;case 240:Zm(s,f,m,{leadingTriviaOption:Jd(m)?2:3});break;default:L.assertNever(m)}}})(lte||(lte={}))}}),nr={};Mo(nr,{ChangeTracker:()=>FG,LeadingTriviaOption:()=>ste,TrailingTriviaOption:()=>cte,applyChanges:()=>ote,assignPositionsToNode:()=>MG,createWriter:()=>DSe,deleteNode:()=>Zm,getNewFileText:()=>KWe,isThisTypeAnnotatable:()=>jWe,isValidLocationToAddComment:()=>wSe});var ZWe=gt({\"src/services/_namespaces/ts.textChanges.ts\"(){\"use strict\";QWe()}}),ute,dte,eze=gt({\"src/services/formatting/formattingContext.ts\"(){\"use strict\";Fr(),ute=(e=>(e[e.FormatDocument=0]=\"FormatDocument\",e[e.FormatSelection=1]=\"FormatSelection\",e[e.FormatOnEnter=2]=\"FormatOnEnter\",e[e.FormatOnSemicolon=3]=\"FormatOnSemicolon\",e[e.FormatOnOpeningCurlyBrace=4]=\"FormatOnOpeningCurlyBrace\",e[e.FormatOnClosingCurlyBrace=5]=\"FormatOnClosingCurlyBrace\",e))(ute||{}),dte=class{constructor(e,t,r){this.sourceFile=e,this.formattingRequestKind=t,this.options=r}updateContext(e,t,r,i,o){this.currentTokenSpan=L.checkDefined(e),this.currentTokenParent=L.checkDefined(t),this.nextTokenSpan=L.checkDefined(r),this.nextTokenParent=L.checkDefined(i),this.contextNode=L.checkDefined(o),this.contextNodeAllOnSameLine=void 0,this.nextNodeAllOnSameLine=void 0,this.tokensAreOnSameLine=void 0,this.contextNodeBlockIsOnOneLine=void 0,this.nextNodeBlockIsOnOneLine=void 0}ContextNodeAllOnSameLine(){return this.contextNodeAllOnSameLine===void 0&&(this.contextNodeAllOnSameLine=this.NodeIsOnOneLine(this.contextNode)),this.contextNodeAllOnSameLine}NextNodeAllOnSameLine(){return this.nextNodeAllOnSameLine===void 0&&(this.nextNodeAllOnSameLine=this.NodeIsOnOneLine(this.nextTokenParent)),this.nextNodeAllOnSameLine}TokensAreOnSameLine(){if(this.tokensAreOnSameLine===void 0){let e=this.sourceFile.getLineAndCharacterOfPosition(this.currentTokenSpan.pos).line,t=this.sourceFile.getLineAndCharacterOfPosition(this.nextTokenSpan.pos).line;this.tokensAreOnSameLine=e===t}return this.tokensAreOnSameLine}ContextNodeBlockIsOnOneLine(){return this.contextNodeBlockIsOnOneLine===void 0&&(this.contextNodeBlockIsOnOneLine=this.BlockIsOnOneLine(this.contextNode)),this.contextNodeBlockIsOnOneLine}NextNodeBlockIsOnOneLine(){return this.nextNodeBlockIsOnOneLine===void 0&&(this.nextNodeBlockIsOnOneLine=this.BlockIsOnOneLine(this.nextTokenParent)),this.nextNodeBlockIsOnOneLine}NodeIsOnOneLine(e){let t=this.sourceFile.getLineAndCharacterOfPosition(e.getStart(this.sourceFile)).line,r=this.sourceFile.getLineAndCharacterOfPosition(e.getEnd()).line;return t===r}BlockIsOnOneLine(e){let t=Yo(e,18,this.sourceFile),r=Yo(e,19,this.sourceFile);if(t&&r){let i=this.sourceFile.getLineAndCharacterOfPosition(t.getEnd()).line,o=this.sourceFile.getLineAndCharacterOfPosition(r.getStart(this.sourceFile)).line;return i===o}return!1}}}});function fte(e,t,r,i,o){let s=t===1?NSe:OSe;s.setText(e),s.setTextPos(r);let l=!0,f,d,g,m,v,S=o({advance:x,readTokenInfo:W,readEOFTokenRange:R,isOnToken:ie,isOnEOF:Q,getCurrentLeadingTrivia:()=>f,lastTrailingTriviaWasNewLine:()=>l,skipToEndOf:Z,skipToStartOf:U,getStartPos:()=>{var re;return(re=v?.token.pos)!=null?re:s.getTokenPos()}});return v=void 0,s.setText(void 0),S;function x(){v=void 0,s.getStartPos()!==r?l=!!d&&To(d).kind===4:s.scan(),f=void 0,d=void 0;let le=s.getStartPos();for(;le<i;){let _e=s.getToken();if(!qA(_e))break;s.scan();let ge={pos:le,end:s.getStartPos(),kind:_e};le=s.getStartPos(),f=Sn(f,ge)}g=s.getStartPos()}function A(re){switch(re.kind){case 33:case 71:case 72:case 49:case 48:return!0}return!1}function w(re){if(re.parent)switch(re.parent.kind){case 288:case 283:case 284:case 282:return Xu(re.kind)||re.kind===79}return!1}function C(re){return IS(re)||Hg(re)&&v?.token.kind===11}function P(re){return re.kind===13}function F(re){return re.kind===16||re.kind===17}function B(re){return re.parent&&Sp(re.parent)&&re.parent.initializer===re}function q(re){return re===43||re===68}function W(re){L.assert(ie());let le=A(re)?1:P(re)?2:F(re)?3:w(re)?4:C(re)?5:B(re)?6:0;if(v&&le===m)return fe(v,re);s.getStartPos()!==g&&(L.assert(v!==void 0),s.setTextPos(g),s.scan());let _e=Y(re,le),ge=VG(s.getStartPos(),s.getTextPos(),_e);for(d&&(d=void 0);s.getStartPos()<i&&(_e=s.scan(),!!qA(_e));){let X=VG(s.getStartPos(),s.getTextPos(),_e);if(d||(d=[]),d.push(X),_e===4){s.scan();break}}return v={leadingTrivia:f,trailingTrivia:d,token:ge},fe(v,re)}function Y(re,le){let _e=s.getToken();switch(m=0,le){case 1:if(_e===31){m=1;let ge=s.reScanGreaterToken();return L.assert(re.kind===ge),ge}break;case 2:if(q(_e)){m=2;let ge=s.reScanSlashToken();return L.assert(re.kind===ge),ge}break;case 3:if(_e===19)return m=3,s.reScanTemplateToken(!1);break;case 4:return m=4,s.scanJsxIdentifier();case 5:return m=5,s.reScanJsxToken(!1);case 6:return m=6,s.reScanJsxAttributeValue();case 0:break;default:L.assertNever(le)}return _e}function R(){return L.assert(Q()),VG(s.getStartPos(),s.getTextPos(),1)}function ie(){let re=v?v.token.kind:s.getToken();return re!==1&&!qA(re)}function Q(){return(v?v.token.kind:s.getToken())===1}function fe(re,le){return eS(le)&&re.token.kind!==le.kind&&(re.token.kind=le.kind),re}function Z(re){s.setTextPos(re.end),g=s.getStartPos(),m=void 0,v=void 0,l=!1,f=void 0,d=void 0}function U(re){s.setTextPos(re.pos),g=s.getStartPos(),m=void 0,v=void 0,l=!1,f=void 0,d=void 0}}var OSe,NSe,tze=gt({\"src/services/formatting/formattingScanner.ts\"(){\"use strict\";Fr(),jk(),OSe=kg(99,!1,0),NSe=kg(99,!1,1)}}),jP,_te,pte,nze=gt({\"src/services/formatting/rule.ts\"(){\"use strict\";Fr(),jP=Je,_te=(e=>(e[e.None=0]=\"None\",e[e.StopProcessingSpaceActions=1]=\"StopProcessingSpaceActions\",e[e.StopProcessingTokenActions=2]=\"StopProcessingTokenActions\",e[e.InsertSpace=4]=\"InsertSpace\",e[e.InsertNewLine=8]=\"InsertNewLine\",e[e.DeleteSpace=16]=\"DeleteSpace\",e[e.DeleteToken=32]=\"DeleteToken\",e[e.InsertTrailingSemicolon=64]=\"InsertTrailingSemicolon\",e[e.StopAction=3]=\"StopAction\",e[e.ModifySpaceAction=28]=\"ModifySpaceAction\",e[e.ModifyTokenAction=96]=\"ModifyTokenAction\",e))(_te||{}),pte=(e=>(e[e.None=0]=\"None\",e[e.CanDeleteNewLines=1]=\"CanDeleteNewLines\",e))(pte||{})}});function PSe(){let e=[];for(let Y=0;Y<=162;Y++)Y!==1&&e.push(Y);function t(...Y){return{tokens:e.filter(R=>!Y.some(ie=>ie===R)),isSpecific:!1}}let r={tokens:e,isSpecific:!1},i=oC([...e,3]),o=oC([...e,1]),s=FSe(81,162),l=FSe(29,78),f=[101,102,162,128,140,150],d=[45,46,54,53],g=[8,9,79,20,22,18,108,103],m=[79,20,108,103],v=[79,21,23,103],S=[79,20,108,103],x=[79,21,23,103],A=[2,3],w=[79,...K7],C=i,P=oC([79,3,84,93,100]),F=oC([21,3,90,111,96,91]),B=[Lr(\"IgnoreBeforeComment\",r,A,jP,1),Lr(\"IgnoreAfterLineComment\",2,r,jP,1),Lr(\"NotSpaceBeforeColon\",r,58,[mi,HP,USe],16),Lr(\"SpaceAfterColon\",58,r,[mi,HP],4),Lr(\"NoSpaceBeforeQuestionMark\",r,57,[mi,HP,USe],16),Lr(\"SpaceAfterQuestionMarkInConditionalOperator\",57,r,[mi,ize],4),Lr(\"NoSpaceAfterQuestionMark\",57,r,[mi],16),Lr(\"NoSpaceBeforeDot\",r,[24,28],[mi,kze],16),Lr(\"NoSpaceAfterDot\",[24,28],r,[mi],16),Lr(\"NoSpaceBetweenImportParenInImportType\",100,20,[mi,mze],16),Lr(\"NoSpaceAfterUnaryPrefixOperator\",d,g,[mi,HP],16),Lr(\"NoSpaceAfterUnaryPreincrementOperator\",45,m,[mi],16),Lr(\"NoSpaceAfterUnaryPredecrementOperator\",46,S,[mi],16),Lr(\"NoSpaceBeforeUnaryPostincrementOperator\",v,45,[mi,txe],16),Lr(\"NoSpaceBeforeUnaryPostdecrementOperator\",x,46,[mi,txe],16),Lr(\"SpaceAfterPostincrementWhenFollowedByAdd\",45,39,[mi,Qg],4),Lr(\"SpaceAfterAddWhenFollowedByUnaryPlus\",39,39,[mi,Qg],4),Lr(\"SpaceAfterAddWhenFollowedByPreincrement\",39,45,[mi,Qg],4),Lr(\"SpaceAfterPostdecrementWhenFollowedBySubtract\",46,40,[mi,Qg],4),Lr(\"SpaceAfterSubtractWhenFollowedByUnaryMinus\",40,40,[mi,Qg],4),Lr(\"SpaceAfterSubtractWhenFollowedByPredecrement\",40,46,[mi,Qg],4),Lr(\"NoSpaceAfterCloseBrace\",19,[27,26],[mi],16),Lr(\"NewLineBeforeCloseBraceInBlockContext\",i,19,[jSe],8),Lr(\"SpaceAfterCloseBrace\",19,t(21),[mi,sze],4),Lr(\"SpaceBetweenCloseBraceAndElse\",19,91,[mi],4),Lr(\"SpaceBetweenCloseBraceAndWhile\",19,115,[mi],4),Lr(\"NoSpaceBetweenEmptyBraceBrackets\",18,19,[mi,qSe],16),Lr(\"SpaceAfterConditionalClosingParen\",21,22,[WP],4),Lr(\"NoSpaceBetweenFunctionKeywordAndStar\",98,41,[zSe],16),Lr(\"SpaceAfterStarInGeneratorDeclaration\",41,79,[zSe],4),Lr(\"SpaceAfterFunctionInFuncDecl\",98,r,[cE],4),Lr(\"NewLineAfterOpenBraceInBlockContext\",18,r,[jSe],8),Lr(\"SpaceAfterGetSetInMember\",[137,151],79,[cE],4),Lr(\"NoSpaceBetweenYieldKeywordAndStar\",125,41,[mi,exe],16),Lr(\"SpaceBetweenYieldOrYieldStarAndOperand\",[125,41],r,[mi,exe],4),Lr(\"NoSpaceBetweenReturnAndSemicolon\",105,26,[mi],16),Lr(\"SpaceAfterCertainKeywords\",[113,109,103,89,105,112,133],r,[mi],4),Lr(\"SpaceAfterLetConstInVariableDeclaration\",[119,85],r,[mi,vze],4),Lr(\"NoSpaceBeforeOpenParenInFuncCall\",r,20,[mi,uze,dze],16),Lr(\"SpaceBeforeBinaryKeywordOperator\",r,f,[mi,Qg],4),Lr(\"SpaceAfterBinaryKeywordOperator\",f,r,[mi,Qg],4),Lr(\"SpaceAfterVoidOperator\",114,r,[mi,xze],4),Lr(\"SpaceBetweenAsyncAndOpenParen\",132,20,[pze,mi],4),Lr(\"SpaceBetweenAsyncAndFunctionKeyword\",132,[98,79],[mi],4),Lr(\"NoSpaceBetweenTagAndTemplateString\",[79,21],[14,15],[mi],16),Lr(\"SpaceBeforeJsxAttribute\",r,79,[hze,mi],4),Lr(\"SpaceBeforeSlashInJsxOpeningElement\",r,43,[$Se,mi],4),Lr(\"NoSpaceBeforeGreaterThanTokenInJsxOpeningElement\",43,31,[$Se,mi],16),Lr(\"NoSpaceBeforeEqualInJsxAttribute\",r,63,[YSe,mi],16),Lr(\"NoSpaceAfterEqualInJsxAttribute\",63,r,[YSe,mi],16),Lr(\"NoSpaceAfterModuleImport\",[142,147],20,[mi],16),Lr(\"SpaceAfterCertainTypeScriptKeywords\",[126,127,84,136,88,92,93,94,137,117,100,118,142,143,121,123,122,146,151,124,154,158,141,138],r,[mi],4),Lr(\"SpaceBeforeCertainTypeScriptKeywords\",r,[94,117,158],[mi],4),Lr(\"SpaceAfterModuleName\",10,18,[bze],4),Lr(\"SpaceBeforeArrow\",r,38,[mi],4),Lr(\"SpaceAfterArrow\",38,r,[mi],4),Lr(\"NoSpaceAfterEllipsis\",25,79,[mi],16),Lr(\"NoSpaceAfterOptionalParameters\",57,[21,27],[mi,HP],16),Lr(\"NoSpaceBetweenEmptyInterfaceBraceBrackets\",18,19,[mi,Eze],16),Lr(\"NoSpaceBeforeOpenAngularBracket\",w,29,[mi,zP],16),Lr(\"NoSpaceBetweenCloseParenAndAngularBracket\",21,29,[mi,zP],16),Lr(\"NoSpaceAfterOpenAngularBracket\",29,r,[mi,zP],16),Lr(\"NoSpaceBeforeCloseAngularBracket\",r,31,[mi,zP],16),Lr(\"NoSpaceAfterCloseAngularBracket\",31,[20,22,31,27],[mi,zP,oze,Sze],16),Lr(\"SpaceBeforeAt\",[21,79],59,[mi],4),Lr(\"NoSpaceAfterAt\",59,r,[mi],16),Lr(\"SpaceAfterDecorator\",r,[126,79,93,88,84,124,123,121,122,137,151,22,41],[yze],4),Lr(\"NoSpaceBeforeNonNullAssertionOperator\",r,53,[mi,Aze],16),Lr(\"NoSpaceAfterNewKeywordOnConstructorSignature\",103,20,[mi,Tze],16),Lr(\"SpaceLessThanAndNonJSXTypeAnnotation\",29,29,[mi],4)],q=[Lr(\"SpaceAfterConstructor\",135,20,[Nd(\"insertSpaceAfterConstructor\"),mi],4),Lr(\"NoSpaceAfterConstructor\",135,20,[K_(\"insertSpaceAfterConstructor\"),mi],16),Lr(\"SpaceAfterComma\",27,r,[Nd(\"insertSpaceAfterCommaDelimiter\"),mi,Ete,fze,_ze],4),Lr(\"NoSpaceAfterComma\",27,r,[K_(\"insertSpaceAfterCommaDelimiter\"),mi,Ete],16),Lr(\"SpaceAfterAnonymousFunctionKeyword\",[98,41],20,[Nd(\"insertSpaceAfterFunctionKeywordForAnonymousFunctions\"),cE],4),Lr(\"NoSpaceAfterAnonymousFunctionKeyword\",[98,41],20,[K_(\"insertSpaceAfterFunctionKeywordForAnonymousFunctions\"),cE],16),Lr(\"SpaceAfterKeywordInControl\",s,20,[Nd(\"insertSpaceAfterKeywordsInControlFlowStatements\"),WP],4),Lr(\"NoSpaceAfterKeywordInControl\",s,20,[K_(\"insertSpaceAfterKeywordsInControlFlowStatements\"),WP],16),Lr(\"SpaceAfterOpenParen\",20,r,[Nd(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis\"),mi],4),Lr(\"SpaceBeforeCloseParen\",r,21,[Nd(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis\"),mi],4),Lr(\"SpaceBetweenOpenParens\",20,20,[Nd(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis\"),mi],4),Lr(\"NoSpaceBetweenParens\",20,21,[mi],16),Lr(\"NoSpaceAfterOpenParen\",20,r,[K_(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis\"),mi],16),Lr(\"NoSpaceBeforeCloseParen\",r,21,[K_(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis\"),mi],16),Lr(\"SpaceAfterOpenBracket\",22,r,[Nd(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets\"),mi],4),Lr(\"SpaceBeforeCloseBracket\",r,23,[Nd(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets\"),mi],4),Lr(\"NoSpaceBetweenBrackets\",22,23,[mi],16),Lr(\"NoSpaceAfterOpenBracket\",22,r,[K_(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets\"),mi],16),Lr(\"NoSpaceBeforeCloseBracket\",r,23,[K_(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets\"),mi],16),Lr(\"SpaceAfterOpenBrace\",18,r,[BSe(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces\"),VSe],4),Lr(\"SpaceBeforeCloseBrace\",r,19,[BSe(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces\"),VSe],4),Lr(\"NoSpaceBetweenEmptyBraceBrackets\",18,19,[mi,qSe],16),Lr(\"NoSpaceAfterOpenBrace\",18,r,[mte(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces\"),mi],16),Lr(\"NoSpaceBeforeCloseBrace\",r,19,[mte(\"insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces\"),mi],16),Lr(\"SpaceBetweenEmptyBraceBrackets\",18,19,[Nd(\"insertSpaceAfterOpeningAndBeforeClosingEmptyBraces\")],4),Lr(\"NoSpaceBetweenEmptyBraceBrackets\",18,19,[mte(\"insertSpaceAfterOpeningAndBeforeClosingEmptyBraces\"),mi],16),Lr(\"SpaceAfterTemplateHeadAndMiddle\",[15,16],r,[Nd(\"insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces\"),XSe],4,1),Lr(\"SpaceBeforeTemplateMiddleAndTail\",r,[16,17],[Nd(\"insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces\"),mi],4),Lr(\"NoSpaceAfterTemplateHeadAndMiddle\",[15,16],r,[K_(\"insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces\"),XSe],16,1),Lr(\"NoSpaceBeforeTemplateMiddleAndTail\",r,[16,17],[K_(\"insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces\"),mi],16),Lr(\"SpaceAfterOpenBraceInJsxExpression\",18,r,[Nd(\"insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces\"),mi,BG],4),Lr(\"SpaceBeforeCloseBraceInJsxExpression\",r,19,[Nd(\"insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces\"),mi,BG],4),Lr(\"NoSpaceAfterOpenBraceInJsxExpression\",18,r,[K_(\"insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces\"),mi,BG],16),Lr(\"NoSpaceBeforeCloseBraceInJsxExpression\",r,19,[K_(\"insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces\"),mi,BG],16),Lr(\"SpaceAfterSemicolonInFor\",26,r,[Nd(\"insertSpaceAfterSemicolonInForStatements\"),mi,gte],4),Lr(\"NoSpaceAfterSemicolonInFor\",26,r,[K_(\"insertSpaceAfterSemicolonInForStatements\"),mi,gte],16),Lr(\"SpaceBeforeBinaryOperator\",r,l,[Nd(\"insertSpaceBeforeAndAfterBinaryOperators\"),mi,Qg],4),Lr(\"SpaceAfterBinaryOperator\",l,r,[Nd(\"insertSpaceBeforeAndAfterBinaryOperators\"),mi,Qg],4),Lr(\"NoSpaceBeforeBinaryOperator\",r,l,[K_(\"insertSpaceBeforeAndAfterBinaryOperators\"),mi,Qg],16),Lr(\"NoSpaceAfterBinaryOperator\",l,r,[K_(\"insertSpaceBeforeAndAfterBinaryOperators\"),mi,Qg],16),Lr(\"SpaceBeforeOpenParenInFuncDecl\",r,20,[Nd(\"insertSpaceBeforeFunctionParenthesis\"),mi,cE],4),Lr(\"NoSpaceBeforeOpenParenInFuncDecl\",r,20,[K_(\"insertSpaceBeforeFunctionParenthesis\"),mi,cE],16),Lr(\"NewLineBeforeOpenBraceInControl\",F,18,[Nd(\"placeOpenBraceOnNewLineForControlBlocks\"),WP,bte],8,1),Lr(\"NewLineBeforeOpenBraceInFunction\",C,18,[Nd(\"placeOpenBraceOnNewLineForFunctions\"),cE,bte],8,1),Lr(\"NewLineBeforeOpenBraceInTypeScriptDeclWithBlock\",P,18,[Nd(\"placeOpenBraceOnNewLineForFunctions\"),JSe,bte],8,1),Lr(\"SpaceAfterTypeAssertion\",31,r,[Nd(\"insertSpaceAfterTypeAssertion\"),mi,Ste],4),Lr(\"NoSpaceAfterTypeAssertion\",31,r,[K_(\"insertSpaceAfterTypeAssertion\"),mi,Ste],16),Lr(\"SpaceBeforeTypeAnnotation\",r,[57,58],[Nd(\"insertSpaceBeforeTypeAnnotation\"),mi,yte],4),Lr(\"NoSpaceBeforeTypeAnnotation\",r,[57,58],[K_(\"insertSpaceBeforeTypeAnnotation\"),mi,yte],16),Lr(\"NoOptionalSemicolon\",26,o,[GSe(\"semicolons\",\"remove\"),Ize],32),Lr(\"OptionalSemicolon\",r,o,[GSe(\"semicolons\",\"insert\"),Lze],64)],W=[Lr(\"NoSpaceBeforeSemicolon\",r,26,[mi],16),Lr(\"SpaceBeforeOpenBraceInControl\",F,18,[hte(\"placeOpenBraceOnNewLineForControlBlocks\"),WP,Tte,vte],4,1),Lr(\"SpaceBeforeOpenBraceInFunction\",C,18,[hte(\"placeOpenBraceOnNewLineForFunctions\"),cE,GG,Tte,vte],4,1),Lr(\"SpaceBeforeOpenBraceInTypeScriptDeclWithBlock\",P,18,[hte(\"placeOpenBraceOnNewLineForFunctions\"),JSe,Tte,vte],4,1),Lr(\"NoSpaceBeforeComma\",r,27,[mi],16),Lr(\"NoSpaceBeforeOpenBracket\",t(132,82),22,[mi],16),Lr(\"NoSpaceAfterCloseBracket\",23,r,[mi,gze],16),Lr(\"SpaceAfterSemicolon\",26,r,[mi],4),Lr(\"SpaceBetweenForAndAwaitKeyword\",97,133,[mi],4),Lr(\"SpaceBetweenStatements\",[21,90,91,82],r,[mi,Ete,rze],4),Lr(\"SpaceAfterTryCatchFinally\",[111,83,96],18,[mi],4)];return[...B,...q,...W]}function Lr(e,t,r,i,o,s=0){return{leftTokenRange:MSe(t),rightTokenRange:MSe(r),rule:{debugName:e,context:i,action:o,flags:s}}}function oC(e){return{tokens:e,isSpecific:!0}}function MSe(e){return typeof e==\"number\"?oC([e]):ba(e)?oC(e):e}function FSe(e,t,r=[]){let i=[];for(let o=e;o<=t;o++)ya(r,o)||i.push(o);return oC(i)}function GSe(e,t){return r=>r.options&&r.options[e]===t}function Nd(e){return t=>t.options&&fs(t.options,e)&&!!t.options[e]}function mte(e){return t=>t.options&&fs(t.options,e)&&!t.options[e]}function K_(e){return t=>!t.options||!fs(t.options,e)||!t.options[e]}function hte(e){return t=>!t.options||!fs(t.options,e)||!t.options[e]||t.TokensAreOnSameLine()}function BSe(e){return t=>!t.options||!fs(t.options,e)||!!t.options[e]}function gte(e){return e.contextNode.kind===245}function rze(e){return!gte(e)}function Qg(e){switch(e.contextNode.kind){case 223:return e.contextNode.operatorToken.kind!==27;case 224:case 191:case 231:case 278:case 273:case 179:case 189:case 190:case 235:return!0;case 205:case 262:case 268:case 274:case 257:case 166:case 302:case 169:case 168:return e.currentTokenSpan.kind===63||e.nextTokenSpan.kind===63;case 246:case 165:return e.currentTokenSpan.kind===101||e.nextTokenSpan.kind===101||e.currentTokenSpan.kind===63||e.nextTokenSpan.kind===63;case 247:return e.currentTokenSpan.kind===162||e.nextTokenSpan.kind===162}return!1}function HP(e){return!Qg(e)}function USe(e){return!yte(e)}function yte(e){let t=e.contextNode.kind;return t===169||t===168||t===166||t===257||rS(t)}function ize(e){return e.contextNode.kind===224||e.contextNode.kind===191}function vte(e){return e.TokensAreOnSameLine()||GG(e)}function VSe(e){return e.contextNode.kind===203||e.contextNode.kind===197||aze(e)}function bte(e){return GG(e)&&!(e.NextNodeAllOnSameLine()||e.NextNodeBlockIsOnOneLine())}function jSe(e){return HSe(e)&&!(e.ContextNodeAllOnSameLine()||e.ContextNodeBlockIsOnOneLine())}function aze(e){return HSe(e)&&(e.ContextNodeAllOnSameLine()||e.ContextNodeBlockIsOnOneLine())}function HSe(e){return WSe(e.contextNode)}function GG(e){return WSe(e.nextTokenParent)}function WSe(e){if(KSe(e))return!0;switch(e.kind){case 238:case 266:case 207:case 265:return!0}return!1}function cE(e){switch(e.contextNode.kind){case 259:case 171:case 170:case 174:case 175:case 176:case 215:case 173:case 216:case 261:return!0}return!1}function oze(e){return!cE(e)}function zSe(e){return e.contextNode.kind===259||e.contextNode.kind===215}function JSe(e){return KSe(e.contextNode)}function KSe(e){switch(e.kind){case 260:case 228:case 261:case 263:case 184:case 264:case 275:case 276:case 269:case 272:return!0}return!1}function sze(e){switch(e.currentTokenParent.kind){case 260:case 264:case 263:case 295:case 265:case 252:return!0;case 238:{let t=e.currentTokenParent.parent;if(!t||t.kind!==216&&t.kind!==215)return!0}}return!1}function WP(e){switch(e.contextNode.kind){case 242:case 252:case 245:case 246:case 247:case 244:case 255:case 243:case 251:case 295:return!0;default:return!1}}function qSe(e){return e.contextNode.kind===207}function cze(e){return e.contextNode.kind===210}function lze(e){return e.contextNode.kind===211}function uze(e){return cze(e)||lze(e)}function dze(e){return e.currentTokenSpan.kind!==27}function fze(e){return e.nextTokenSpan.kind!==23}function _ze(e){return e.nextTokenSpan.kind!==21}function pze(e){return e.contextNode.kind===216}function mze(e){return e.contextNode.kind===202}function mi(e){return e.TokensAreOnSameLine()&&e.contextNode.kind!==11}function XSe(e){return e.contextNode.kind!==11}function Ete(e){return e.contextNode.kind!==281&&e.contextNode.kind!==285}function BG(e){return e.contextNode.kind===291||e.contextNode.kind===290}function hze(e){return e.nextTokenParent.kind===288}function YSe(e){return e.contextNode.kind===288}function $Se(e){return e.contextNode.kind===282}function gze(e){return!cE(e)&&!GG(e)}function yze(e){return e.TokensAreOnSameLine()&&vf(e.contextNode)&&QSe(e.currentTokenParent)&&!QSe(e.nextTokenParent)}function QSe(e){for(;e&&ot(e);)e=e.parent;return e&&e.kind===167}function vze(e){return e.currentTokenParent.kind===258&&e.currentTokenParent.getStart(e.sourceFile)===e.currentTokenSpan.pos}function Tte(e){return e.formattingRequestKind!==2}function bze(e){return e.contextNode.kind===264}function Eze(e){return e.contextNode.kind===184}function Tze(e){return e.contextNode.kind===177}function ZSe(e,t){if(e.kind!==29&&e.kind!==31)return!1;switch(t.kind){case 180:case 213:case 262:case 260:case 228:case 261:case 259:case 215:case 216:case 171:case 170:case 176:case 177:case 210:case 211:case 230:return!0;default:return!1}}function zP(e){return ZSe(e.currentTokenSpan,e.currentTokenParent)||ZSe(e.nextTokenSpan,e.nextTokenParent)}function Ste(e){return e.contextNode.kind===213}function Sze(e){return!Ste(e)}function xze(e){return e.currentTokenSpan.kind===114&&e.currentTokenParent.kind===219}function exe(e){return e.contextNode.kind===226&&e.contextNode.expression!==void 0}function Aze(e){return e.contextNode.kind===232}function txe(e){return!Cze(e)}function Cze(e){switch(e.contextNode.kind){case 242:case 245:case 246:case 247:case 243:case 244:return!0;default:return!1}}function Ize(e){let t=e.nextTokenSpan.kind,r=e.nextTokenSpan.pos;if(qA(t)){let s=e.nextTokenParent===e.currentTokenParent?n1(e.currentTokenParent,jn(e.currentTokenParent,l=>!l.parent),e.sourceFile):e.nextTokenParent.getFirstToken(e.sourceFile);if(!s)return!0;t=s.kind,r=s.getStart(e.sourceFile)}let i=e.sourceFile.getLineAndCharacterOfPosition(e.currentTokenSpan.pos).line,o=e.sourceFile.getLineAndCharacterOfPosition(r).line;return i===o?t===19||t===1:t===237||t===26?!1:e.contextNode.kind===261||e.contextNode.kind===262?!Yd(e.currentTokenParent)||!!e.currentTokenParent.type||t!==20:Na(e.currentTokenParent)?!e.currentTokenParent.initializer:e.currentTokenParent.kind!==245&&e.currentTokenParent.kind!==239&&e.currentTokenParent.kind!==237&&t!==22&&t!==20&&t!==39&&t!==40&&t!==43&&t!==13&&t!==27&&t!==225&&t!==15&&t!==14&&t!==24}function Lze(e){return N7(e.currentTokenSpan.end,e.currentTokenParent,e.sourceFile)}function kze(e){return!br(e.contextNode)||!Uf(e.contextNode.expression)||e.contextNode.expression.getText().indexOf(\".\")!==-1}var Dze=gt({\"src/services/formatting/rules.ts\"(){\"use strict\";Fr(),jk()}});function wze(e,t){return{options:e,getRules:Rze(),host:t}}function Rze(){return xte===void 0&&(xte=Nze(PSe())),xte}function Oze(e){let t=0;return e&1&&(t|=28),e&2&&(t|=96),e&28&&(t|=28),e&96&&(t|=96),t}function Nze(e){let t=Pze(e);return r=>{let i=t[nxe(r.currentTokenSpan.kind,r.nextTokenSpan.kind)];if(i){let o=[],s=0;for(let l of i){let f=~Oze(s);l.action&f&&Ji(l.context,d=>d(r))&&(o.push(l),s|=l.action)}if(o.length)return o}}}function Pze(e){let t=new Array(UG*UG),r=new Array(t.length);for(let i of e){let o=i.leftTokenRange.isSpecific&&i.rightTokenRange.isSpecific;for(let s of i.leftTokenRange.tokens)for(let l of i.rightTokenRange.tokens){let f=nxe(s,l),d=t[f];d===void 0&&(d=t[f]=[]),Mze(d,i.rule,o,r,f)}}return t}function nxe(e,t){return L.assert(e<=162&&t<=162,\"Must compute formatting context from tokens\"),e*UG+t}function Mze(e,t,r,i,o){let s=t.action&3?r?0:sC.StopRulesAny:t.context!==jP?r?sC.ContextRulesSpecific:sC.ContextRulesAny:r?sC.NoContextRulesSpecific:sC.NoContextRulesAny,l=i[o]||0;e.splice(Fze(l,s),0,t),i[o]=Gze(l,s)}function Fze(e,t){let r=0;for(let i=0;i<=t;i+=gx)r+=e&JP,e>>=gx;return r}function Gze(e,t){let r=(e>>t&JP)+1;return L.assert((r&JP)===r,\"Adding more rules into the sub-bucket than allowed. Maximum allowed is 32 rules.\"),e&~(JP<<t)|r<<t}var xte,gx,JP,UG,sC,Bze=gt({\"src/services/formatting/rulesMap.ts\"(){\"use strict\";Fr(),jk(),gx=5,JP=31,UG=162+1,sC=(e=>(e[e.StopRulesSpecific=0]=\"StopRulesSpecific\",e[e.StopRulesAny=gx*1]=\"StopRulesAny\",e[e.ContextRulesSpecific=gx*2]=\"ContextRulesSpecific\",e[e.ContextRulesAny=gx*3]=\"ContextRulesAny\",e[e.NoContextRulesSpecific=gx*4]=\"NoContextRulesSpecific\",e[e.NoContextRulesAny=gx*5]=\"NoContextRulesAny\",e))(sC||{})}});function VG(e,t,r){let i={pos:e,end:t,kind:r};return L.isDebugging&&Object.defineProperty(i,\"__debugKind\",{get:()=>L.formatSyntaxKind(r)}),i}function Uze(e,t,r){let i=t.getLineAndCharacterOfPosition(e).line;if(i===0)return[];let o=Uw(i,t);for(;Yp(t.text.charCodeAt(o));)o--;Wl(t.text.charCodeAt(o))&&o--;let s={pos:Ky(i-1,t),end:o+1};return KP(s,t,r,2)}function Vze(e,t,r){let i=Ate(e,26,t);return rxe(Cte(i),t,r,3)}function jze(e,t,r){let i=Ate(e,18,t);if(!i)return[];let o=i.parent,s=Cte(o),l={pos:Hf(s.getStart(t),t),end:e};return KP(l,t,r,4)}function Hze(e,t,r){let i=Ate(e,19,t);return rxe(Cte(i),t,r,5)}function Wze(e,t){let r={pos:0,end:e.text.length};return KP(r,e,t,0)}function zze(e,t,r,i){let o={pos:Hf(e,r),end:t};return KP(o,r,i,1)}function Ate(e,t,r){let i=el(e,r);return i&&i.kind===t&&e===i.getEnd()?i:void 0}function Cte(e){let t=e;for(;t&&t.parent&&t.parent.end===e.end&&!Jze(t.parent,t);)t=t.parent;return t}function Jze(e,t){switch(e.kind){case 260:case 261:return Od(e.members,t);case 264:let r=e.body;return!!r&&r.kind===265&&Od(r.statements,t);case 308:case 238:case 265:return Od(e.statements,t);case 295:return Od(e.block.statements,t)}return!1}function Kze(e,t){return r(t);function r(i){let o=pa(i,s=>jX(s.getStart(t),s.end,e)&&s);if(o){let s=r(o);if(s)return s}return i}}function qze(e,t){if(!e.length)return o;let r=e.filter(s=>nk(t,s.start,s.start+s.length)).sort((s,l)=>s.start-l.start);if(!r.length)return o;let i=0;return s=>{for(;;){if(i>=r.length)return!1;let l=r[i];if(s.end<=l.start)return!1;if(l7(s.pos,s.end,l.start,l.start+l.length))return!0;i++}};function o(){return!1}}function Xze(e,t,r){let i=e.getStart(r);if(i===t.pos&&e.end===t.end)return i;let o=el(t.pos,r);return!o||o.end>=t.pos?e.pos:o.end}function Yze(e,t,r){let i=-1,o;for(;e;){let s=r.getLineAndCharacterOfPosition(e.getStart(r)).line;if(i!==-1&&s!==i)break;if(q_.shouldIndentChildNode(t,e,o,r))return t.indentSize;i=s,o=e,e=e.parent}return 0}function $ze(e,t,r,i,o,s){let l={pos:e.pos,end:e.end};return fte(t.text,r,l.pos,l.end,f=>ixe(l,e,i,o,f,s,1,d=>!1,t))}function rxe(e,t,r,i){if(!e)return[];let o={pos:Hf(e.getStart(t),t),end:e.end};return KP(o,t,r,i)}function KP(e,t,r,i){let o=Kze(e,t);return fte(t.text,t.languageVariant,Xze(o,e,t),e.end,s=>ixe(e,o,q_.getIndentationForNode(o,e,t,r.options),Yze(o,r.options,t),s,r,i,qze(t.parseDiagnostics,e),t))}function ixe(e,t,r,i,o,{options:s,getRules:l,host:f},d,g,m){var v;let S=new dte(m,d,s),x,A,w,C,P,F=-1,B=[];if(o.advance(),o.isOnToken()){let Ne=m.getLineAndCharacterOfPosition(t.getStart(m)).line,Le=Ne;vf(t)&&(Le=m.getLineAndCharacterOfPosition(aH(t,m)).line),ie(t,t,Ne,Le,r,i)}if(!o.isOnToken()){let Ne=q_.nodeWillIndentChild(s,t,void 0,m,!1)?r+s.indentSize:r,Le=o.getCurrentLeadingTrivia();Le&&(Q(Le,Ne,!1,Ye=>Z(Ye,m.getLineAndCharacterOfPosition(Ye.pos),t,t,void 0)),s.trimTrailingWhitespace!==!1&&we(Le))}if(A&&o.getStartPos()>=e.end){let Ne=o.isOnEOF()?o.readEOFTokenRange():o.isOnToken()?o.readTokenInfo(t).token:void 0;if(Ne&&Ne.pos===x){let Le=((v=el(Ne.end,m,t))==null?void 0:v.parent)||w;U(Ne,m.getLineAndCharacterOfPosition(Ne.pos).line,Le,A,C,w,Le,void 0)}}return B;function q(Ne,Le,Ye,_t,ct){if(nk(_t,Ne,Le)||NN(_t,Ne,Le)){if(ct!==-1)return ct}else{let Rt=m.getLineAndCharacterOfPosition(Ne).line,We=Hf(Ne,m),qe=q_.findFirstNonWhitespaceColumn(We,Ne,m,s);if(Rt!==Ye||Ne===qe){let zt=q_.getBaseIndentation(s);return zt>qe?zt:qe}}return-1}function W(Ne,Le,Ye,_t,ct,Rt){let We=q_.shouldIndentChildNode(s,Ne)?s.indentSize:0;return Rt===Le?{indentation:Le===P?F:ct.getIndentation(),delta:Math.min(s.indentSize,ct.getDelta(Ne)+We)}:Ye===-1?Ne.kind===20&&Le===P?{indentation:F,delta:ct.getDelta(Ne)}:q_.childStartsOnTheSameLineWithElseInIfStatement(_t,Ne,Le,m)||q_.childIsUnindentedBranchOfConditionalExpression(_t,Ne,Le,m)||q_.argumentStartsOnSameLineAsPreviousArgument(_t,Ne,Le,m)?{indentation:ct.getIndentation(),delta:We}:{indentation:ct.getIndentation()+ct.getDelta(Ne),delta:We}:{indentation:Ye,delta:We}}function Y(Ne){if(h_(Ne)){let Le=wr(Ne.modifiers,Ha,Yc(Ne.modifiers,du));if(Le)return Le.kind}switch(Ne.kind){case 260:return 84;case 261:return 118;case 259:return 98;case 263:return 263;case 174:return 137;case 175:return 151;case 171:if(Ne.asteriskToken)return 41;case 169:case 166:let Le=sa(Ne);if(Le)return Le.kind}}function R(Ne,Le,Ye,_t){return{getIndentationForComment:(We,qe,zt)=>{switch(We){case 19:case 23:case 21:return Ye+Rt(zt)}return qe!==-1?qe:Ye},getIndentationForToken:(We,qe,zt,Qt)=>!Qt&&ct(We,qe,zt)?Ye+Rt(zt):Ye,getIndentation:()=>Ye,getDelta:Rt,recomputeIndentation:(We,qe)=>{q_.shouldIndentChildNode(s,qe,Ne,m)&&(Ye+=We?s.indentSize:-s.indentSize,_t=q_.shouldIndentChildNode(s,Ne)?s.indentSize:0)}};function ct(We,qe,zt){switch(qe){case 18:case 19:case 21:case 91:case 115:case 59:return!1;case 43:case 31:switch(zt.kind){case 283:case 284:case 282:return!1}break;case 22:case 23:if(zt.kind!==197)return!1;break}return Le!==We&&!(vf(Ne)&&qe===Y(Ne))}function Rt(We){return q_.nodeWillIndentChild(s,Ne,We,m,!0)?_t:0}}function ie(Ne,Le,Ye,_t,ct,Rt){if(!nk(e,Ne.getStart(m),Ne.getEnd()))return;let We=R(Ne,Ye,ct,Rt),qe=Le;for(pa(Ne,kn=>{zt(kn,-1,Ne,We,Ye,_t,!1)},kn=>{Qt(kn,Ne,Ye,We)});o.isOnToken()&&o.getStartPos()<e.end;){let kn=o.readTokenInfo(Ne);if(kn.token.end>Math.min(Ne.end,e.end))break;tn(kn,Ne,We,Ne)}function zt(kn,_n,Gt,$n,ui,Ni,Pi,gr){if(L.assert(!ws(kn)),rc(kn)||Nse(Gt,kn))return _n;let pt=kn.getStart(m),nn=m.getLineAndCharacterOfPosition(pt).line,Dt=nn;vf(kn)&&(Dt=m.getLineAndCharacterOfPosition(aH(kn,m)).line);let pn=-1;if(Pi&&Od(e,Gt)&&(pn=q(pt,kn.end,ui,e,_n),pn!==-1&&(_n=pn)),!nk(e,kn.pos,kn.end))return kn.end<e.pos&&o.skipToEndOf(kn),_n;if(kn.getFullWidth()===0)return _n;for(;o.isOnToken()&&o.getStartPos()<e.end;){let hi=o.readTokenInfo(Ne);if(hi.token.end>e.end)return _n;if(hi.token.end>pt){hi.token.pos>pt&&o.skipToStartOf(kn);break}tn(hi,Ne,$n,Ne)}if(!o.isOnToken()||o.getStartPos()>=e.end)return _n;if(eS(kn)){let hi=o.readTokenInfo(kn);if(kn.kind!==11)return L.assert(hi.token.end===kn.end,\"Token end is child end\"),tn(hi,Ne,$n,kn),_n}let An=kn.kind===167?nn:Ni,Kn=W(kn,nn,pn,Ne,$n,An);return ie(kn,qe,nn,Dt,Kn.indentation,Kn.delta),qe=Ne,gr&&Gt.kind===206&&_n===-1&&(_n=Kn.indentation),_n}function Qt(kn,_n,Gt,$n){L.assert(C0(kn)),L.assert(!ws(kn));let ui=Qze(_n,kn),Ni=$n,Pi=Gt;if(!nk(e,kn.pos,kn.end)){kn.end<e.pos&&o.skipToEndOf(kn);return}if(ui!==0)for(;o.isOnToken()&&o.getStartPos()<e.end;){let nn=o.readTokenInfo(_n);if(nn.token.end>kn.pos)break;if(nn.token.kind===ui){Pi=m.getLineAndCharacterOfPosition(nn.token.pos).line,tn(nn,_n,$n,_n);let Dt;if(F!==-1)Dt=F;else{let pn=Hf(nn.token.pos,m);Dt=q_.findFirstNonWhitespaceColumn(pn,nn.token.pos,m,s)}Ni=R(_n,Gt,Dt,s.indentSize)}else tn(nn,_n,$n,_n)}let gr=-1;for(let nn=0;nn<kn.length;nn++){let Dt=kn[nn];gr=zt(Dt,gr,Ne,Ni,Pi,Pi,!0,nn===0)}let pt=Zze(ui);if(pt!==0&&o.isOnToken()&&o.getStartPos()<e.end){let nn=o.readTokenInfo(_n);nn.token.kind===27&&(tn(nn,_n,Ni,_n),nn=o.isOnToken()?o.readTokenInfo(_n):void 0),nn&&nn.token.kind===pt&&Od(_n,nn.token)&&tn(nn,_n,Ni,_n,!0)}}function tn(kn,_n,Gt,$n,ui){L.assert(Od(_n,kn.token));let Ni=o.lastTrailingTriviaWasNewLine(),Pi=!1;kn.leadingTrivia&&fe(kn.leadingTrivia,_n,qe,Gt);let gr=0,pt=Od(e,kn.token),nn=m.getLineAndCharacterOfPosition(kn.token.pos);if(pt){let Dt=g(kn.token),pn=A;if(gr=Z(kn.token,nn,_n,qe,Gt),!Dt)if(gr===0){let An=pn&&m.getLineAndCharacterOfPosition(pn.end).line;Pi=Ni&&nn.line!==An}else Pi=gr===1}if(kn.trailingTrivia&&(x=To(kn.trailingTrivia).end,fe(kn.trailingTrivia,_n,qe,Gt)),Pi){let Dt=pt&&!g(kn.token)?Gt.getIndentationForToken(nn.line,kn.token.kind,$n,!!ui):-1,pn=!0;if(kn.leadingTrivia){let An=Gt.getIndentationForComment(kn.token.kind,Dt,$n);pn=Q(kn.leadingTrivia,An,pn,Kn=>re(Kn.pos,An,!1))}Dt!==-1&&pn&&(re(kn.token.pos,Dt,gr===1),P=nn.line,F=Dt)}o.advance(),qe=_n}}function Q(Ne,Le,Ye,_t){for(let ct of Ne){let Rt=Od(e,ct);switch(ct.kind){case 3:Rt&&ge(ct,Le,!Ye),Ye=!1;break;case 2:Ye&&Rt&&_t(ct),Ye=!1;break;case 4:Ye=!0;break}}return Ye}function fe(Ne,Le,Ye,_t){for(let ct of Ne)if(g7(ct.kind)&&Od(e,ct)){let Rt=m.getLineAndCharacterOfPosition(ct.pos);Z(ct,Rt,Le,Ye,_t)}}function Z(Ne,Le,Ye,_t,ct){let Rt=g(Ne),We=0;if(!Rt)if(A)We=U(Ne,Le.line,Ye,A,C,w,_t,ct);else{let qe=m.getLineAndCharacterOfPosition(e.pos);X(qe.line,Le.line)}return A=Ne,x=Ne.end,w=Ye,C=Le.line,We}function U(Ne,Le,Ye,_t,ct,Rt,We,qe){S.updateContext(_t,Rt,Ne,Ye,We);let zt=l(S),Qt=S.options.trimTrailingWhitespace!==!1,tn=0;return zt?sae(zt,kn=>{if(tn=Be(kn,_t,ct,Ne,Le),qe)switch(tn){case 2:Ye.getStart(m)===Ne.pos&&qe.recomputeIndentation(!1,We);break;case 1:Ye.getStart(m)===Ne.pos&&qe.recomputeIndentation(!0,We);break;default:L.assert(tn===0)}Qt=Qt&&!(kn.action&16)&&kn.flags!==1}):Qt=Qt&&Ne.kind!==1,Le!==ct&&Qt&&X(ct,Le,_t),tn}function re(Ne,Le,Ye){let _t=Ite(Le,s);if(Ye)Ce(Ne,0,_t);else{let ct=m.getLineAndCharacterOfPosition(Ne),Rt=Ky(ct.line,m);(Le!==le(Rt,ct.character)||_e(_t,Rt))&&Ce(Rt,ct.character,_t)}}function le(Ne,Le){let Ye=0;for(let _t=0;_t<Le;_t++)m.text.charCodeAt(Ne+_t)===9?Ye+=s.tabSize-Ye%s.tabSize:Ye++;return Ye}function _e(Ne,Le){return Ne!==m.text.substr(Le,Ne.length)}function ge(Ne,Le,Ye,_t=!0){let ct=m.getLineAndCharacterOfPosition(Ne.pos).line,Rt=m.getLineAndCharacterOfPosition(Ne.end).line;if(ct===Rt){Ye||re(Ne.pos,Le,!1);return}let We=[],qe=Ne.pos;for(let _n=ct;_n<Rt;_n++){let Gt=Uw(_n,m);We.push({pos:qe,end:Gt}),qe=Ky(_n+1,m)}if(_t&&We.push({pos:qe,end:Ne.end}),We.length===0)return;let zt=Ky(ct,m),Qt=q_.findFirstNonWhitespaceCharacterAndColumn(zt,We[0].pos,m,s),tn=0;Ye&&(tn=1,ct++);let kn=Le-Qt.column;for(let _n=tn;_n<We.length;_n++,ct++){let Gt=Ky(ct,m),$n=_n===0?Qt:q_.findFirstNonWhitespaceCharacterAndColumn(We[_n].pos,We[_n].end,m,s),ui=$n.column+kn;if(ui>0){let Ni=Ite(ui,s);Ce(Gt,$n.character,Ni)}else Pe(Gt,$n.character)}}function X(Ne,Le,Ye){for(let _t=Ne;_t<Le;_t++){let ct=Ky(_t,m),Rt=Uw(_t,m);if(Ye&&(g7(Ye.kind)||QX(Ye.kind))&&Ye.pos<=Rt&&Ye.end>Rt)continue;let We=Ve(ct,Rt);We!==-1&&(L.assert(We===ct||!Yp(m.text.charCodeAt(We-1))),Pe(We,Rt+1-We))}}function Ve(Ne,Le){let Ye=Le;for(;Ye>=Ne&&Yp(m.text.charCodeAt(Ye));)Ye--;return Ye!==Le?Ye+1:-1}function we(Ne){let Le=A?A.end:e.pos;for(let Ye of Ne)g7(Ye.kind)&&(Le<Ye.pos&&ke(Le,Ye.pos-1,A),Le=Ye.end+1);Le<e.end&&ke(Le,e.end,A)}function ke(Ne,Le,Ye){let _t=m.getLineAndCharacterOfPosition(Ne).line,ct=m.getLineAndCharacterOfPosition(Le).line;X(_t,ct+1,Ye)}function Pe(Ne,Le){Le&&B.push(v7(Ne,Le,\"\"))}function Ce(Ne,Le,Ye){(Le||Ye)&&B.push(v7(Ne,Le,Ye))}function Ie(Ne,Le){Le&&B.push(v7(Ne,0,Le))}function Be(Ne,Le,Ye,_t,ct){let Rt=ct!==Ye;switch(Ne.action){case 1:return 0;case 16:if(Le.end!==_t.pos)return Pe(Le.end,_t.pos-Le.end),Rt?2:0;break;case 32:Pe(Le.pos,Le.end-Le.pos);break;case 8:if(Ne.flags!==1&&Ye!==ct)return 0;if(ct-Ye!==1)return Ce(Le.end,_t.pos-Le.end,bb(f,s)),Rt?0:1;break;case 4:if(Ne.flags!==1&&Ye!==ct)return 0;if(_t.pos-Le.end!==1||m.text.charCodeAt(Le.end)!==32)return Ce(Le.end,_t.pos-Le.end,\" \"),Rt?2:0;break;case 64:Ie(Le.end,\";\")}return 0}}function axe(e,t,r,i=Vi(e,t)){let o=jn(i,dm);if(o&&(i=o.parent),i.getStart(e)<=t&&t<i.getEnd())return;r=r===null?void 0:r===void 0?el(t,e):r;let l=r&&eb(e.text,r.end),f=bH(i,e),d=Qi(l,f);return d&&wr(d,g=>ON(g,t)||t===g.end&&(g.kind===2||t===e.getFullWidth()))}function Qze(e,t){switch(e.kind){case 173:case 259:case 215:case 171:case 170:case 216:case 176:case 177:case 181:case 182:case 174:case 175:if(e.typeParameters===t)return 29;if(e.parameters===t)return 20;break;case 210:case 211:if(e.typeArguments===t)return 29;if(e.arguments===t)return 20;break;case 260:case 228:case 261:case 262:if(e.typeParameters===t)return 29;break;case 180:case 212:case 183:case 230:case 202:if(e.typeArguments===t)return 29;break;case 184:return 18}return 0}function Zze(e){switch(e){case 20:return 21;case 29:return 31;case 18:return 19}return 0}function Ite(e,t){if((!jG||jG.tabSize!==t.tabSize||jG.indentSize!==t.indentSize)&&(jG={tabSize:t.tabSize,indentSize:t.indentSize},Uk=Vk=void 0),t.convertTabsToSpaces){let i,o=Math.floor(e/t.indentSize),s=e%t.indentSize;return Vk||(Vk=[]),Vk[o]===void 0?(i=VN(\" \",t.indentSize*o),Vk[o]=i):i=Vk[o],s?i+VN(\" \",s):i}else{let i=Math.floor(e/t.tabSize),o=e-i*t.tabSize,s;return Uk||(Uk=[]),Uk[i]===void 0?Uk[i]=s=VN(\"\t\",i):s=Uk[i],o?s+VN(\" \",o):s}}var jG,Uk,Vk,eJe=gt({\"src/services/formatting/formatting.ts\"(){\"use strict\";Fr(),jk()}}),q_,tJe=gt({\"src/services/formatting/smartIndenter.ts\"(){\"use strict\";Fr(),jk(),(e=>{let t;(X=>{X[X.Unknown=-1]=\"Unknown\"})(t||(t={}));function r(X,Ve,we,ke=!1){if(X>Ve.text.length)return f(we);if(we.indentStyle===0)return 0;let Pe=el(X,Ve,void 0,!0),Ce=axe(Ve,X,Pe||null);if(Ce&&Ce.kind===3)return i(Ve,X,we,Ce);if(!Pe)return f(we);if(QX(Pe.kind)&&Pe.getStart(Ve)<=X&&X<Pe.end)return 0;let Be=Ve.getLineAndCharacterOfPosition(X).line,Ne=Vi(Ve,X),Le=Ne.kind===18&&Ne.parent.kind===207;if(we.indentStyle===1||Le)return o(Ve,X,we);if(Pe.kind===27&&Pe.parent.kind!==223){let _t=m(Pe,Ve,we);if(_t!==-1)return _t}let Ye=q(X,Pe.parent,Ve);if(Ye&&!Od(Ye,Pe)){let ct=[215,216].indexOf(Ne.parent.kind)!==-1?0:we.indentSize;return R(Ye,Ve,we)+ct}return s(Ve,X,Pe,Be,ke,we)}e.getIndentation=r;function i(X,Ve,we,ke){let Pe=Gs(X,Ve).line-1,Ce=Gs(X,ke.pos).line;if(L.assert(Ce>=0),Pe<=Ce)return U(Ky(Ce,X),Ve,X,we);let Ie=Ky(Pe,X),{column:Be,character:Ne}=Z(Ie,Ve,X,we);return Be===0?Be:X.text.charCodeAt(Ie+Ne)===42?Be-1:Be}function o(X,Ve,we){let ke=Ve;for(;ke>0;){let Ce=X.text.charCodeAt(ke);if(!xh(Ce))break;ke--}let Pe=Hf(ke,X);return U(Pe,ke,X,we)}function s(X,Ve,we,ke,Pe,Ce){let Ie,Be=we;for(;Be;){if(WX(Be,Ve,X)&&_e(Ce,Be,Ie,X,!0)){let Le=A(Be,X),Ye=x(we,Be,ke,X),_t=Ye!==0?Pe&&Ye===2?Ce.indentSize:0:ke!==Le.line?Ce.indentSize:0;return d(Be,Le,void 0,_t,X,!0,Ce)}let Ne=ie(Be,X,Ce,!0);if(Ne!==-1)return Ne;Ie=Be,Be=Be.parent}return f(Ce)}function l(X,Ve,we,ke){let Pe=we.getLineAndCharacterOfPosition(X.getStart(we));return d(X,Pe,Ve,0,we,!1,ke)}e.getIndentationForNode=l;function f(X){return X.baseIndentSize||0}e.getBaseIndentation=f;function d(X,Ve,we,ke,Pe,Ce,Ie){var Be;let Ne=X.parent;for(;Ne;){let Le=!0;if(we){let Rt=X.getStart(Pe);Le=Rt<we.pos||Rt>we.end}let Ye=g(Ne,X,Pe),_t=Ye.line===Ve.line||C(Ne,X,Ve.line,Pe);if(Le){let Rt=(Be=B(X,Pe))==null?void 0:Be[0],We=!!Rt&&A(Rt,Pe).line>Ye.line,qe=ie(X,Pe,Ie,We);if(qe!==-1||(qe=v(X,Ne,Ve,_t,Pe,Ie),qe!==-1))return qe+ke}_e(Ie,Ne,X,Pe,Ce)&&!_t&&(ke+=Ie.indentSize);let ct=w(Ne,X,Ve.line,Pe);X=Ne,Ne=X.parent,Ve=ct?Pe.getLineAndCharacterOfPosition(X.getStart(Pe)):Ye}return ke+f(Ie)}function g(X,Ve,we){let ke=B(Ve,we),Pe=ke?ke.pos:X.getStart(we);return we.getLineAndCharacterOfPosition(Pe)}function m(X,Ve,we){let ke=Ehe(X);return ke&&ke.listItemIndex>0?Q(ke.list.getChildren(),ke.listItemIndex-1,Ve,we):-1}function v(X,Ve,we,ke,Pe,Ce){return(Kl(X)||Pw(X))&&(Ve.kind===308||!ke)?fe(we,Pe,Ce):-1}let S;(X=>{X[X.Unknown=0]=\"Unknown\",X[X.OpenBrace=1]=\"OpenBrace\",X[X.CloseBrace=2]=\"CloseBrace\"})(S||(S={}));function x(X,Ve,we,ke){let Pe=n1(X,Ve,ke);if(!Pe)return 0;if(Pe.kind===18)return 1;if(Pe.kind===19){let Ce=A(Pe,ke).line;return we===Ce?2:0}return 0}function A(X,Ve){return Ve.getLineAndCharacterOfPosition(X.getStart(Ve))}function w(X,Ve,we,ke){if(!(Pa(X)&&ya(X.arguments,Ve)))return!1;let Pe=X.expression.getEnd();return Gs(ke,Pe).line===we}e.isArgumentAndStartLineOverlapsExpressionBeingCalled=w;function C(X,Ve,we,ke){if(X.kind===242&&X.elseStatement===Ve){let Pe=Yo(X,91,ke);return L.assert(Pe!==void 0),A(Pe,ke).line===we}return!1}e.childStartsOnTheSameLineWithElseInIfStatement=C;function P(X,Ve,we,ke){if(E2(X)&&(Ve===X.whenTrue||Ve===X.whenFalse)){let Pe=Gs(ke,X.condition.end).line;if(Ve===X.whenTrue)return we===Pe;{let Ce=A(X.whenTrue,ke).line,Ie=Gs(ke,X.whenTrue.end).line;return Pe===Ce&&Ie===we}}return!1}e.childIsUnindentedBranchOfConditionalExpression=P;function F(X,Ve,we,ke){if(Ih(X)){if(!X.arguments)return!1;let Pe=wr(X.arguments,Ne=>Ne.pos===Ve.pos);if(!Pe)return!1;let Ce=X.arguments.indexOf(Pe);if(Ce===0)return!1;let Ie=X.arguments[Ce-1],Be=Gs(ke,Ie.getEnd()).line;if(we===Be)return!0}return!1}e.argumentStartsOnSameLineAsPreviousArgument=F;function B(X,Ve){return X.parent&&W(X.getStart(Ve),X.getEnd(),X.parent,Ve)}e.getContainingList=B;function q(X,Ve,we){return Ve&&W(X,X,Ve,we)}function W(X,Ve,we,ke){switch(we.kind){case 180:return Pe(we.typeArguments);case 207:return Pe(we.properties);case 206:return Pe(we.elements);case 184:return Pe(we.members);case 259:case 215:case 216:case 171:case 170:case 176:case 173:case 182:case 177:return Pe(we.typeParameters)||Pe(we.parameters);case 174:return Pe(we.parameters);case 260:case 228:case 261:case 262:case 348:return Pe(we.typeParameters);case 211:case 210:return Pe(we.typeArguments)||Pe(we.arguments);case 258:return Pe(we.declarations);case 272:case 276:return Pe(we.elements);case 203:case 204:return Pe(we.elements)}function Pe(Ce){return Ce&&NN(Y(we,Ce,ke),X,Ve)?Ce:void 0}}function Y(X,Ve,we){let ke=X.getChildren(we);for(let Pe=1;Pe<ke.length-1;Pe++)if(ke[Pe].pos===Ve.pos&&ke[Pe].end===Ve.end)return{pos:ke[Pe-1].end,end:ke[Pe+1].getStart(we)};return Ve}function R(X,Ve,we){return X?fe(Ve.getLineAndCharacterOfPosition(X.pos),Ve,we):-1}function ie(X,Ve,we,ke){if(X.parent&&X.parent.kind===258)return-1;let Pe=B(X,Ve);if(Pe){let Ce=Pe.indexOf(X);if(Ce!==-1){let Ie=Q(Pe,Ce,Ve,we);if(Ie!==-1)return Ie}return R(Pe,Ve,we)+(ke?we.indentSize:0)}return-1}function Q(X,Ve,we,ke){L.assert(Ve>=0&&Ve<X.length);let Pe=X[Ve],Ce=A(Pe,we);for(let Ie=Ve-1;Ie>=0;Ie--){if(X[Ie].kind===27)continue;if(we.getLineAndCharacterOfPosition(X[Ie].end).line!==Ce.line)return fe(Ce,we,ke);Ce=A(X[Ie],we)}return-1}function fe(X,Ve,we){let ke=Ve.getPositionOfLineAndCharacter(X.line,0);return U(ke,ke+X.character,Ve,we)}function Z(X,Ve,we,ke){let Pe=0,Ce=0;for(let Ie=X;Ie<Ve;Ie++){let Be=we.text.charCodeAt(Ie);if(!Yp(Be))break;Be===9?Ce+=ke.tabSize+Ce%ke.tabSize:Ce++,Pe++}return{column:Ce,character:Pe}}e.findFirstNonWhitespaceCharacterAndColumn=Z;function U(X,Ve,we,ke){return Z(X,Ve,we,ke).column}e.findFirstNonWhitespaceColumn=U;function re(X,Ve,we,ke,Pe){let Ce=we?we.kind:0;switch(Ve.kind){case 241:case 260:case 228:case 261:case 263:case 262:case 206:case 238:case 265:case 207:case 184:case 197:case 186:case 266:case 293:case 292:case 214:case 208:case 210:case 211:case 240:case 274:case 250:case 224:case 204:case 203:case 283:case 286:case 282:case 291:case 170:case 176:case 177:case 166:case 181:case 182:case 193:case 212:case 220:case 276:case 272:case 278:case 273:case 169:return!0;case 257:case 299:case 223:if(!X.indentMultiLineObjectLiteralBeginningOnBlankLine&&ke&&Ce===207)return ge(ke,we);if(Ve.kind===223&&ke&&we&&Ce===281){let Ie=ke.getLineAndCharacterOfPosition(xo(ke.text,Ve.pos)).line,Be=ke.getLineAndCharacterOfPosition(xo(ke.text,we.pos)).line;return Ie!==Be}if(Ve.kind!==223)return!0;break;case 243:case 244:case 246:case 247:case 245:case 242:case 259:case 215:case 171:case 173:case 174:case 175:return Ce!==238;case 216:return ke&&Ce===214?ge(ke,we):Ce!==238;case 275:return Ce!==276;case 269:return Ce!==270||!!we.namedBindings&&we.namedBindings.kind!==272;case 281:return Ce!==284;case 285:return Ce!==287;case 190:case 189:if(Ce===184||Ce===186)return!1;break}return Pe}e.nodeWillIndentChild=re;function le(X,Ve){switch(X){case 250:case 254:case 248:case 249:return Ve.kind!==238;default:return!1}}function _e(X,Ve,we,ke,Pe=!1){return re(X,Ve,we,ke,!1)&&!(Pe&&we&&le(we.kind,Ve))}e.shouldIndentChildNode=_e;function ge(X,Ve){let we=xo(X.text,Ve.pos),ke=X.getLineAndCharacterOfPosition(we).line,Pe=X.getLineAndCharacterOfPosition(Ve.end).line;return ke===Pe}})(q_||(q_={}))}}),tl={};Mo(tl,{FormattingContext:()=>dte,FormattingRequestKind:()=>ute,RuleAction:()=>_te,RuleFlags:()=>pte,SmartIndenter:()=>q_,anyContext:()=>jP,createTextRangeWithKind:()=>VG,formatDocument:()=>Wze,formatNodeGivenIndentation:()=>$ze,formatOnClosingCurly:()=>Hze,formatOnEnter:()=>Uze,formatOnOpeningCurly:()=>jze,formatOnSemicolon:()=>Vze,formatSelection:()=>zze,getAllRules:()=>PSe,getFormatContext:()=>wze,getFormattingScanner:()=>fte,getIndentationString:()=>Ite,getRangeOfEnclosingComment:()=>axe});var jk=gt({\"src/services/_namespaces/ts.formatting.ts\"(){\"use strict\";eze(),tze(),nze(),Dze(),Bze(),eJe(),tJe()}}),Fr=gt({\"src/services/_namespaces/ts.ts\"(){\"use strict\";fa(),r7(),v6e(),K6e(),$6e(),l4e(),u4e(),d4e(),y4e(),L4e(),k4e(),w4e(),B4e(),V4e(),_3e(),m3e(),y3e(),E3e(),V3e(),Q3e(),Qa(),QZ(),KTe(),cUe(),_Ue(),wUe(),lye(),wye(),$Ue(),aVe(),Qm(),rWe(),kWe(),FWe(),UWe(),ZWe(),jk()}});function nJe(){return kte??(kte=new n_(wf))}function oxe(e,t,r,i,o){let s=t?\"DeprecationError: \":\"DeprecationWarning: \";return s+=`'${e}' `,s+=i?`has been deprecated since v${i}`:\"is deprecated\",s+=t?\" and can no longer be used.\":r?` and will no longer be usable after v${r}.`:\".\",s+=o?` ${jm(o,[e],0)}`:\"\",s}function rJe(e,t,r,i){let o=oxe(e,!0,t,r,i);return()=>{throw new TypeError(o)}}function iJe(e,t,r,i){let o=!1;return()=>{sxe&&!o&&(L.log.warn(oxe(e,!1,t,r,i)),o=!0)}}function aJe(e,t={}){var r,i;let o=typeof t.typeScriptVersion==\"string\"?new n_(t.typeScriptVersion):(r=t.typeScriptVersion)!=null?r:nJe(),s=typeof t.errorAfter==\"string\"?new n_(t.errorAfter):t.errorAfter,l=typeof t.warnAfter==\"string\"?new n_(t.warnAfter):t.warnAfter,f=typeof t.since==\"string\"?new n_(t.since):(i=t.since)!=null?i:l,d=t.error||s&&o.compareTo(s)>=0,g=!l||o.compareTo(l)>=0;return d?rJe(e,s,f,t.message):g?iJe(e,s,f,t.message):Ba}function oJe(e,t){return function(){return e(),t.apply(this,arguments)}}function Lte(e,t){var r;let i=aJe((r=t?.name)!=null?r:L.getFunctionName(e),t);return oJe(i,e)}var sxe,kte,cxe=gt({\"src/deprecatedCompat/deprecate.ts\"(){\"use strict\";HG(),sxe=!0}});function Dte(e,t,r,i){if(Object.defineProperty(s,\"name\",{...Object.getOwnPropertyDescriptor(s,\"name\"),value:e}),i)for(let l of Object.keys(i)){let f=+l;!isNaN(f)&&fs(t,`${f}`)&&(t[f]=Lte(t[f],{...i[f],name:e}))}let o=sJe(t,r);return s;function s(...l){let f=o(l),d=f!==void 0?t[f]:void 0;if(typeof d==\"function\")return d(...l);throw new TypeError(\"Invalid arguments\")}}function sJe(e,t){return r=>{for(let i=0;fs(e,`${i}`)&&fs(t,`${i}`);i++){let o=t[i];if(o(r))return i}}}function cJe(e){return{overload:t=>({bind:r=>({finish:()=>Dte(e,t,r),deprecate:i=>({finish:()=>Dte(e,t,r,i)})})})}}var lJe=gt({\"src/deprecatedCompat/deprecations.ts\"(){\"use strict\";HG(),cxe()}}),uJe=gt({\"src/deprecatedCompat/5.0/identifierProperties.ts\"(){\"use strict\";HG(),cxe(),fle(e=>{let t=e.getIdentifierConstructor();fs(t.prototype,\"originalKeywordKind\")||Object.defineProperty(t.prototype,\"originalKeywordKind\",{get:Lte(function(){return nb(this)},{name:\"originalKeywordKind\",since:\"5.0\",warnAfter:\"5.1\",errorAfter:\"5.2\",message:\"Use 'identifierToKeywordKind(identifier)' instead.\"})}),fs(t.prototype,\"isInJSDocNamespace\")||Object.defineProperty(t.prototype,\"isInJSDocNamespace\",{get:Lte(function(){return this.flags&2048?!0:void 0},{name:\"isInJSDocNamespace\",since:\"5.0\",warnAfter:\"5.1\",errorAfter:\"5.2\",message:\"Use '.parent' or the surrounding context to determine this instead.\"})})})}}),HG=gt({\"src/deprecatedCompat/_namespaces/ts.ts\"(){\"use strict\";fa(),lJe(),uJe()}}),lxe={};Mo(lxe,{ANONYMOUS:()=>X7,AccessFlags:()=>IV,AssertionLevel:()=>$U,AssignmentDeclarationKind:()=>PV,AssignmentKind:()=>YW,Associativity:()=>QW,BreakpointResolver:()=>x$,BuilderFileEmit:()=>Iq,BuilderProgramKind:()=>Lq,BuilderState:()=>pm,BundleFileSectionKind:()=>ej,CallHierarchy:()=>ix,CharacterCodes:()=>KV,CheckFlags:()=>TV,CheckMode:()=>_F,ClassificationType:()=>OX,ClassificationTypeNames:()=>RX,CommentDirectiveType:()=>oV,Comparison:()=>LU,CompletionInfoFlags:()=>AX,CompletionTriggerKind:()=>bX,Completions:()=>ux,ConfigFileProgramReloadLevel:()=>QK,ContextFlags:()=>_V,CoreServicesShimHostAdapter:()=>S$,Debug:()=>L,DiagnosticCategory:()=>rw,Diagnostics:()=>_,DocumentHighlights:()=>Q7,ElementFlags:()=>CV,EmitFlags:()=>U8,EmitHint:()=>$V,EmitOnly:()=>cV,EndOfLineState:()=>LX,EnumKind:()=>EV,ExitStatus:()=>uV,ExportKind:()=>GY,Extension:()=>qV,ExternalEmitHelpers:()=>YV,FileIncludeKind:()=>R8,FilePreprocessingDiagnosticsKind:()=>sV,FileSystemEntryKind:()=>oj,FileWatcherEventKind:()=>ij,FindAllReferences:()=>js,FlattenLevel:()=>RK,FlowFlags:()=>nw,ForegroundColorEscapeSequences:()=>pq,FunctionFlags:()=>$W,GeneratedIdentifierFlags:()=>w8,GetLiteralTextFlags:()=>KW,GoToDefinition:()=>Ak,HighlightSpanKind:()=>TX,ImportKind:()=>FY,ImportsNotUsedAsValues:()=>VV,IndentStyle:()=>SX,IndexKind:()=>DV,InferenceFlags:()=>OV,InferencePriority:()=>RV,InlayHintKind:()=>EX,InlayHints:()=>fee,InternalEmitFlags:()=>XV,InternalSymbolName:()=>SV,InvalidatedProjectKind:()=>aX,JsDoc:()=>xb,JsTyping:()=>ZT,JsxEmit:()=>UV,JsxFlags:()=>iV,JsxReferenceKind:()=>LV,LanguageServiceMode:()=>gX,LanguageServiceShimHostAdapter:()=>T$,LanguageVariant:()=>zV,LexicalEnvironmentFlags:()=>ZV,ListFormat:()=>tj,LogLevel:()=>ZU,MemberOverrideStatus:()=>dV,ModifierFlags:()=>k8,ModuleDetectionKind:()=>MV,ModuleInstanceState:()=>sK,ModuleKind:()=>F8,ModuleResolutionKind:()=>iw,ModuleSpecifierEnding:()=>lz,NavigateTo:()=>cye,NavigationBar:()=>Dye,NewLineKind:()=>jV,NodeBuilderFlags:()=>pV,NodeCheckFlags:()=>xV,NodeFactoryFlags:()=>mz,NodeFlags:()=>L8,NodeResolutionFeatures:()=>aK,ObjectFlags:()=>P8,OperationCanceledException:()=>nI,OperatorPrecedence:()=>ZW,OrganizeImports:()=>v_,OrganizeImportsMode:()=>vX,OuterExpressionKinds:()=>QV,OutliningElementsCollector:()=>See,OutliningSpanKind:()=>CX,OutputFileType:()=>IX,PackageJsonAutoImportPreference:()=>hX,PackageJsonDependencyGroup:()=>mX,PatternMatchKind:()=>n5,PollingInterval:()=>V8,PollingWatchKind:()=>BV,PragmaKindFlags:()=>nj,PrivateIdentifierKind:()=>Az,ProcessLevel:()=>MK,QuotePreference:()=>OY,RelationComparisonResult:()=>D8,Rename:()=>RG,ScriptElementKind:()=>DX,ScriptElementKindModifier:()=>wX,ScriptKind:()=>HV,ScriptSnapshot:()=>pX,ScriptTarget:()=>WV,SemanticClassificationFormat:()=>yX,SemanticMeaning:()=>RY,SemicolonPreference:()=>xX,SignatureCheckMode:()=>pF,SignatureFlags:()=>M8,SignatureHelp:()=>UP,SignatureKind:()=>kV,SmartSelectionRange:()=>ete,SnippetKind:()=>B8,SortKind:()=>XU,StructureIsReused:()=>lV,SymbolAccessibility:()=>gV,SymbolDisplay:()=>$g,SymbolDisplayPartKind:()=>LN,SymbolFlags:()=>O8,SymbolFormatFlags:()=>hV,SyntaxKind:()=>I8,SyntheticSymbolKind:()=>yV,Ternary:()=>NV,ThrottledCancellationToken:()=>g$,TokenClass:()=>kX,TokenFlags:()=>aV,TransformFlags:()=>G8,TypeFacts:()=>dF,TypeFlags:()=>N8,TypeFormatFlags:()=>mV,TypeMapKind:()=>wV,TypePredicateKind:()=>vV,TypeReferenceSerializationKind:()=>bV,TypeScriptServicesFactory:()=>eve,UnionReduction:()=>fV,UpToDateStatusType:()=>Wq,VarianceFlags:()=>AV,Version:()=>n_,VersionRange:()=>hA,WatchDirectoryFlags:()=>JV,WatchDirectoryKind:()=>GV,WatchFileKind:()=>FV,WatchLogLevel:()=>ZK,WatchType:()=>jf,accessPrivateIdentifier:()=>$_e,addEmitFlags:()=>bp,addEmitHelper:()=>AS,addEmitHelpers:()=>Bg,addInternalEmitFlags:()=>xS,addNodeFactoryPatcher:()=>ARe,addObjectAllocatorPatcher:()=>fle,addRange:()=>si,addRelatedInfo:()=>Ao,addSyntheticLeadingComment:()=>rO,addSyntheticTrailingComment:()=>R4,addToSeen:()=>U_,advancedAsyncSuperHelper:()=>cO,affectsDeclarationPathOptionDeclarations:()=>FJ,affectsEmitOptionDeclarations:()=>MJ,allKeysStartWithDot:()=>nF,altDirectorySeparator:()=>mw,and:()=>g8,append:()=>Sn,appendIfUnique:()=>xg,arrayFrom:()=>lo,arrayIsEqualTo:()=>up,arrayIsHomogeneous:()=>Fle,arrayIsSorted:()=>dae,arrayOf:()=>mae,arrayReverseIterator:()=>Cke,arrayToMap:()=>p0,arrayToMultiMap:()=>qD,arrayToNumericMap:()=>gae,arraysEqual:()=>BD,assertType:()=>Pke,assign:()=>KD,assignHelper:()=>B4,asyncDelegator:()=>V4,asyncGeneratorHelper:()=>U4,asyncSuperHelper:()=>sO,asyncValues:()=>j4,attachFileToDiagnostics:()=>bS,awaitHelper:()=>CS,awaiterHelper:()=>W4,base64decode:()=>nle,base64encode:()=>tle,binarySearch:()=>Py,binarySearchKey:()=>H1,bindSourceFile:()=>c_e,breakIntoCharacterSpans:()=>Hge,breakIntoWordSpans:()=>Wge,buildLinkParts:()=>Qhe,buildOpts:()=>j3,buildOverload:()=>cJe,bundlerModuleNameResolver:()=>Wfe,canBeConvertedToAsync:()=>e$,canHaveDecorators:()=>WS,canHaveExportModifier:()=>zR,canHaveFlowNode:()=>lR,canHaveIllegalDecorators:()=>aJ,canHaveIllegalModifiers:()=>cde,canHaveIllegalType:()=>mOe,canHaveIllegalTypeParameters:()=>sde,canHaveJSDoc:()=>uR,canHaveLocals:()=>Qp,canHaveModifiers:()=>h_,canHaveSymbol:()=>$p,canJsonReportNoInputFiles:()=>GO,canProduceDiagnostics:()=>xF,canUsePropertyAccess:()=>HW,canWatchDirectoryOrFile:()=>bN,cartesianProduct:()=>Rae,cast:()=>Ga,chainBundle:()=>g_,chainDiagnosticMessages:()=>da,changeAnyExtension:()=>uj,changeCompilerHostLikeToUseCache:()=>mN,changeExtension:()=>V0,changesAffectModuleResolution:()=>eH,changesAffectingProgramStructure:()=>Ise,childIsDecorated:()=>DI,classElementOrClassElementParameterIsDecorated:()=>AH,classOrConstructorParameterIsDecorated:()=>O0,classPrivateFieldGetHelper:()=>n3,classPrivateFieldInHelper:()=>i3,classPrivateFieldSetHelper:()=>r3,classicNameResolver:()=>o_e,classifier:()=>T5,cleanExtendedConfigCache:()=>$K,clear:()=>Om,clearMap:()=>Ef,clearSharedExtendedConfigFileWatcher:()=>Fpe,climbPastPropertyAccess:()=>o7,climbPastPropertyOrElementAccess:()=>ghe,clone:()=>VU,cloneCompilerOptions:()=>Mhe,closeFileWatcher:()=>am,closeFileWatcherOf:()=>_m,codefix:()=>gu,collapseTextChangeRangesAcrossMultipleVersions:()=>GDe,collectExternalModuleInfo:()=>xK,combine:()=>pA,combinePaths:()=>vi,commentPragmas:()=>aw,commonOptionsWithBuild:()=>zO,commonPackageFolders:()=>nz,compact:()=>zD,compareBooleans:()=>g0,compareDataObjects:()=>gW,compareDiagnostics:()=>eL,compareDiagnosticsSkipRelatedInformation:()=>c4,compareEmitHelpers:()=>Sue,compareNumberOfDirectorySeparators:()=>UR,comparePaths:()=>lT,comparePathsCaseInsensitive:()=>LDe,comparePathsCaseSensitive:()=>IDe,comparePatternKeys:()=>tK,compareProperties:()=>Cae,compareStringsCaseInsensitive:()=>_8,compareStringsCaseInsensitiveEslintCompatible:()=>Sae,compareStringsCaseSensitive:()=>su,compareStringsCaseSensitiveUI:()=>YD,compareTextSpans:()=>f8,compareValues:()=>Es,compileOnSaveCommandLineOption:()=>VO,compilerOptionsAffectDeclarationPath:()=>Cle,compilerOptionsAffectEmit:()=>Ale,compilerOptionsAffectSemanticDiagnostics:()=>xle,compilerOptionsDidYouMeanDiagnostics:()=>KO,compilerOptionsIndicateEsModules:()=>aY,compose:()=>Rke,computeCommonSourceDirectoryOfFilenames:()=>jpe,computeLineAndCharacterOfPosition:()=>vw,computeLineOfPosition:()=>oI,computeLineStarts:()=>gw,computePositionOfLineAndCharacter:()=>mj,computeSignature:()=>$T,computeSignatureWithDiagnostics:()=>Tq,computeSuggestionDiagnostics:()=>$Y,concatenate:()=>Qi,concatenateDiagnosticMessageChains:()=>gle,consumesNodeCoreModules:()=>V7,contains:()=>ya,containsIgnoredPath:()=>cL,containsObjectRestOrSpread:()=>LO,containsParseError:()=>Bw,containsPath:()=>Gy,convertCompilerOptionsForTelemetry:()=>TNe,convertCompilerOptionsFromJson:()=>mNe,convertJsonOption:()=>BO,convertToBase64:()=>ele,convertToObject:()=>rfe,convertToObjectWorker:()=>MO,convertToOptionsWithAbsolutePaths:()=>SJ,convertToRelativePath:()=>iI,convertToTSConfig:()=>tNe,convertTypeAcquisitionFromJson:()=>hNe,copyComments:()=>i1,copyEntries:()=>Fw,copyLeadingComments:()=>X2,copyProperties:()=>jU,copyTrailingAsLeadingComments:()=>XN,copyTrailingComments:()=>ck,couldStartTrivia:()=>hoe,countWhere:()=>Oy,createAbstractBuilder:()=>S8e,createAccessorPropertyBackingField:()=>sJ,createAccessorPropertyGetRedirector:()=>gde,createAccessorPropertySetRedirector:()=>yde,createBaseNodeFactory:()=>oue,createBinaryExpressionTrampoline:()=>C3,createBindingHelper:()=>f2,createBuildInfo:()=>fN,createBuilderProgram:()=>Sq,createBuilderProgramUsingProgramBuildInfo:()=>dme,createBuilderStatusReporter:()=>Ame,createCacheWithRedirects:()=>KJ,createCacheableExportInfoMap:()=>Tge,createCachedDirectoryStructureHost:()=>Mpe,createClassifier:()=>Age,createCommentDirectivesMap:()=>Gse,createCompilerDiagnostic:()=>ps,createCompilerDiagnosticForInvalidCustomType:()=>pJ,createCompilerDiagnosticFromMessageChain:()=>s4,createCompilerHost:()=>Hpe,createCompilerHostFromProgramHost:()=>Bq,createCompilerHostWorker:()=>nq,createDetachedDiagnostic:()=>n2,createDiagnosticCollection:()=>YA,createDiagnosticForFileFromMessageChain:()=>yH,createDiagnosticForNode:()=>hr,createDiagnosticForNodeArray:()=>OA,createDiagnosticForNodeArrayFromMessageChain:()=>Hw,createDiagnosticForNodeFromMessageChain:()=>Lh,createDiagnosticForNodeInSourceFile:()=>Nu,createDiagnosticForRange:()=>vH,createDiagnosticMessageChainFromDiagnostic:()=>qse,createDiagnosticReporter:()=>EN,createDocumentPositionMapper:()=>H_e,createDocumentRegistry:()=>VY,createDocumentRegistryInternal:()=>Rge,createEmitAndSemanticDiagnosticsBuilderProgram:()=>kq,createEmitHelperFactory:()=>Tue,createEmptyExports:()=>EO,createExpressionForJsxElement:()=>Que,createExpressionForJsxFragment:()=>Zue,createExpressionForObjectLiteralElementLike:()=>ede,createExpressionForPropertyName:()=>Zz,createExpressionFromEntityName:()=>TO,createExternalHelpersImportDeclarationIfNeeded:()=>nJ,createFileDiagnostic:()=>al,createFileDiagnosticFromMessageChain:()=>S6,createForOfBindingStatement:()=>Qz,createGetCanonicalFileName:()=>Dl,createGetSourceFile:()=>eq,createGetSymbolAccessibilityDiagnosticForNode:()=>zg,createGetSymbolAccessibilityDiagnosticForNodeName:()=>Epe,createGetSymbolWalker:()=>f_e,createIncrementalCompilerHost:()=>jq,createIncrementalProgram:()=>xme,createInputFiles:()=>RRe,createInputFilesWithFilePaths:()=>_z,createInputFilesWithFileTexts:()=>pz,createJsxFactoryExpression:()=>$z,createLanguageService:()=>Bye,createLanguageServiceSourceFile:()=>f5,createMemberAccessForPropertyName:()=>jT,createModeAwareCache:()=>zT,createModeAwareCacheKey:()=>FL,createModuleResolutionCache:()=>Y3,createModuleResolutionLoader:()=>cq,createModuleSpecifierResolutionHost:()=>QS,createMultiMap:()=>Of,createNodeConverters:()=>cue,createNodeFactory:()=>$R,createOptionNameMap:()=>R3,createOverload:()=>Dte,createPackageJsonImportFilter:()=>dk,createPackageJsonInfo:()=>uge,createParenthesizerRules:()=>sue,createPatternMatcher:()=>Fge,createPrependNodes:()=>fq,createPrinter:()=>nE,createPrinterWithDefaults:()=>qK,createPrinterWithRemoveComments:()=>rE,createPrinterWithRemoveCommentsNeverAsciiEscape:()=>XK,createPrinterWithRemoveCommentsOmitTrailingSemicolon:()=>_N,createProgram:()=>PF,createProgramHost:()=>Uq,createPropertyNameNodeForIdentifierOrLiteral:()=>E4,createQueue:()=>HU,createRange:()=>Ff,createRedirectedBuilderProgram:()=>Cq,createResolutionCache:()=>fme,createRuntimeTypeSerializer:()=>npe,createScanner:()=>kg,createSemanticDiagnosticsBuilderProgram:()=>T8e,createSet:()=>Dke,createSolutionBuilder:()=>U8e,createSolutionBuilderHost:()=>F8e,createSolutionBuilderWithWatch:()=>V8e,createSolutionBuilderWithWatchHost:()=>G8e,createSortedArray:()=>MU,createSourceFile:()=>wO,createSourceMapGenerator:()=>M_e,createSourceMapSource:()=>ORe,createSuperAccessVariableStatement:()=>SF,createSymbolTable:()=>Ua,createSymlinkCache:()=>Ile,createSystemWatchFunctions:()=>loe,createTextChange:()=>BN,createTextChangeFromStartLength:()=>v7,createTextChangeRange:()=>xw,createTextRangeFromNode:()=>nY,createTextRangeFromSpan:()=>y7,createTextSpan:()=>il,createTextSpanFromBounds:()=>Wc,createTextSpanFromNode:()=>Du,createTextSpanFromRange:()=>lv,createTextSpanFromStringLiteralLikeContent:()=>tY,createTextWriter:()=>xR,createTokenRange:()=>_W,createTypeChecker:()=>k_e,createTypeReferenceDirectiveResolutionCache:()=>$3,createTypeReferenceResolutionLoader:()=>OF,createUnderscoreEscapedMultiMap:()=>vae,createUnparsedSourceFile:()=>fz,createWatchCompilerHost:()=>R8e,createWatchCompilerHostOfConfigFile:()=>Tme,createWatchCompilerHostOfFilesAndCompilerOptions:()=>Sme,createWatchFactory:()=>Gq,createWatchHost:()=>Fq,createWatchProgram:()=>O8e,createWatchStatusReporter:()=>pme,createWriteFileMeasuringIO:()=>tq,declarationNameToString:()=>os,decodeMappings:()=>EK,decodedTextSpanIntersectsWith:()=>Q8,decorateHelper:()=>N4,deduplicate:()=>_A,defaultIncludeSpec:()=>z3,defaultInitCompilerOptions:()=>W3,defaultMaximumTruncationLength:()=>qR,detectSortCaseSensitivity:()=>l8,diagnosticCategoryName:()=>C8,diagnosticToString:()=>ex,directoryProbablyExists:()=>gp,directorySeparator:()=>_s,displayPart:()=>Qu,displayPartsToString:()=>Mye,disposeEmitNodes:()=>yz,documentSpansEqual:()=>P6e,dumpTracingLegend:()=>toe,elementAt:()=>Ig,elideNodes:()=>hde,emitComments:()=>Vce,emitDetachedComments:()=>jce,emitFiles:()=>CF,emitFilesAndReportErrors:()=>qF,emitFilesAndReportErrorsAndGetExitStatus:()=>vme,emitModuleKindIsNonNodeESM:()=>SW,emitNewLineBeforeLeadingCommentOfPosition:()=>Uce,emitNewLineBeforeLeadingComments:()=>Gce,emitNewLineBeforeLeadingCommentsOfPosition:()=>Bce,emitSkippedWithNoDiagnostics:()=>HF,emitUsingBuildInfo:()=>Ppe,emptyArray:()=>Je,emptyFileSystemEntries:()=>D4,emptyMap:()=>b8,emptyOptions:()=>Cp,emptySet:()=>Pae,endsWith:()=>Oc,ensurePathIsNonModuleName:()=>S0,ensureScriptKind:()=>h4,ensureTrailingDirectorySeparator:()=>cu,entityNameToString:()=>Kd,enumerateInsertsAndDeletes:()=>wae,equalOwnProperties:()=>hae,equateStringsCaseInsensitive:()=>z1,equateStringsCaseSensitive:()=>J1,equateValues:()=>Zv,esDecorateHelper:()=>F4,escapeJsxAttributeString:()=>qH,escapeLeadingUnderscores:()=>Bs,escapeNonAsciiString:()=>TR,escapeSnippetText:()=>NT,escapeString:()=>pS,every:()=>Ji,expandPreOrPostfixIncrementOrDecrementExpression:()=>b3,explainFiles:()=>yme,explainIfFileIsRedirectAndImpliedFormat:()=>Oq,exportAssignmentIsAlias:()=>JA,exportStarHelper:()=>t3,expressionResultIsUnused:()=>Ble,extend:()=>d8,extendsHelper:()=>z4,extensionFromPath:()=>HR,extensionIsTS:()=>y4,externalHelpersModuleNameText:()=>_b,factory:()=>D,fileExtensionIs:()=>Gc,fileExtensionIsOneOf:()=>$c,fileIncludeReasonToDiagnostics:()=>Mq,filter:()=>Pr,filterMutate:()=>wU,filterSemanticDiagnostics:()=>MF,find:()=>wr,findAncestor:()=>jn,findBestPatternMatch:()=>JU,findChildOfKind:()=>Yo,findComputedPropertyNameCacheAssignment:()=>L3,findConfigFile:()=>Vpe,findContainingList:()=>d7,findDiagnosticForNode:()=>fge,findFirstNonJsxWhitespaceToken:()=>Ihe,findIndex:()=>Yc,findLast:()=>fA,findLastIndex:()=>s8,findListItemInfo:()=>Ehe,findMap:()=>vke,findModifier:()=>J2,findNextToken:()=>n1,findPackageJson:()=>cge,findPackageJsons:()=>AY,findPrecedingMatchingToken:()=>h7,findPrecedingToken:()=>el,findSuperStatementIndex:()=>bF,findTokenOnLeftOfPosition:()=>p7,findUseStrictPrologue:()=>tJ,first:()=>Vo,firstDefined:()=>ks,firstDefinedIterator:()=>GD,firstIterator:()=>pae,firstOrOnly:()=>LY,firstOrUndefined:()=>Sl,firstOrUndefinedIterator:()=>u8,fixupCompilerOptions:()=>t$,flatMap:()=>Uo,flatMapIterator:()=>OU,flatMapToMutable:()=>UD,flatten:()=>e_,flattenCommaList:()=>vde,flattenDestructuringAssignment:()=>qT,flattenDestructuringBinding:()=>eE,flattenDiagnosticMessageText:()=>sv,forEach:()=>mn,forEachAncestor:()=>Lse,forEachAncestorDirectory:()=>Th,forEachChild:()=>pa,forEachChildRecursively:()=>DO,forEachEmittedFile:()=>WK,forEachEnclosingBlockScopeContainer:()=>Jse,forEachEntry:()=>Ld,forEachExternalModuleToImportFrom:()=>MY,forEachImportClauseDeclaration:()=>z6,forEachKey:()=>SI,forEachLeadingCommentRange:()=>bw,forEachNameInAccessChainWalkingLeft:()=>Xwe,forEachResolvedProjectReference:()=>Kpe,forEachReturnStatement:()=>bT,forEachRight:()=>sae,forEachTrailingCommentRange:()=>Ew,forEachUnique:()=>lY,forEachYieldExpression:()=>Yse,forSomeAncestorDirectory:()=>qwe,formatColorAndReset:()=>iE,formatDiagnostic:()=>rq,formatDiagnostics:()=>e8e,formatDiagnosticsWithColorAndContext:()=>Jpe,formatGeneratedName:()=>HT,formatGeneratedNamePart:()=>k2,formatLocation:()=>iq,formatMessage:()=>TW,formatStringFromArgs:()=>jm,formatting:()=>tl,fullTripleSlashAMDReferencePathRegEx:()=>XW,fullTripleSlashReferencePathRegEx:()=>qW,generateDjb2Hash:()=>ow,generateTSConfig:()=>oNe,generatorHelper:()=>Q4,getAdjustedReferenceLocation:()=>zX,getAdjustedRenameLocation:()=>_7,getAliasDeclarationFromName:()=>BH,getAllAccessorDeclarations:()=>DT,getAllDecoratorsOfClass:()=>LK,getAllDecoratorsOfClassElement:()=>TF,getAllJSDocTags:()=>kj,getAllJSDocTagsOfKind:()=>KDe,getAllKeys:()=>Ike,getAllProjectOutputs:()=>AF,getAllSuperTypeNodes:()=>PI,getAllUnscopedEmitHelpers:()=>xz,getAllowJSCompilerOption:()=>MR,getAllowSyntheticDefaultImports:()=>RT,getAncestor:()=>cb,getAnyExtensionFromPath:()=>j8,getAreDeclarationMapsEnabled:()=>d4,getAssignedExpandoInitializer:()=>sS,getAssignedName:()=>xj,getAssignmentDeclarationKind:()=>ic,getAssignmentDeclarationPropertyAccessKind:()=>nR,getAssignmentTargetKind:()=>AT,getAutomaticTypeDirectiveNames:()=>X3,getBaseFileName:()=>Hl,getBinaryOperatorPrecedence:()=>bR,getBuildInfo:()=>IF,getBuildInfoFileVersionMap:()=>Aq,getBuildInfoText:()=>Npe,getBuildOrderFromAnyBuildOrder:()=>ZF,getBuilderCreationParameters:()=>zF,getBuilderFileEmit:()=>cv,getCheckFlags:()=>ac,getClassExtendsHeritageElement:()=>P0,getClassLikeDeclarationOfSymbol:()=>Nh,getCombinedLocalAndExportSymbolFlags:()=>YI,getCombinedModifierFlags:()=>wg,getCombinedNodeFlags:()=>F_,getCombinedNodeFlagsAlwaysIncludeJSDoc:()=>Tj,getCommentRange:()=>sm,getCommonSourceDirectory:()=>dN,getCommonSourceDirectoryOfConfig:()=>YL,getCompilerOptionValue:()=>f4,getCompilerOptionsDiffValue:()=>aNe,getConditions:()=>M2,getConfigFileParsingDiagnostics:()=>YT,getConstantValue:()=>mue,getContainerNode:()=>t1,getContainingClass:()=>Zc,getContainingClassStaticBlock:()=>gwe,getContainingFunction:()=>qd,getContainingFunctionDeclaration:()=>ice,getContainingFunctionOrClassStaticBlock:()=>R6,getContainingNodeArray:()=>Ule,getContainingObjectLiteralElement:()=>rP,getContextualTypeFromParent:()=>w7,getContextualTypeFromParentOrAncestorTypeNode:()=>f7,getCurrentTime:()=>xN,getDeclarationDiagnostics:()=>Tpe,getDeclarationEmitExtensionForPath:()=>QH,getDeclarationEmitOutputFilePath:()=>Rce,getDeclarationEmitOutputFilePathWorker:()=>$H,getDeclarationFromName:()=>_R,getDeclarationModifierFlagsFromSymbol:()=>bf,getDeclarationOfKind:()=>nc,getDeclarationsOfKind:()=>Ase,getDeclaredExpandoInitializer:()=>Qw,getDecorators:()=>Uy,getDefaultCompilerOptions:()=>d5,getDefaultExportInfoWorker:()=>$7,getDefaultFormatCodeSettings:()=>fhe,getDefaultLibFileName:()=>X8,getDefaultLibFilePath:()=>f3e,getDefaultLikeExportInfo:()=>Y7,getDiagnosticText:()=>ZOe,getDiagnosticsWithinSpan:()=>_ge,getDirectoryPath:()=>ni,getDocumentPositionMapper:()=>Yge,getESModuleInterop:()=>d_,getEditsForFileRename:()=>Nge,getEffectiveBaseTypeNode:()=>hp,getEffectiveConstraintOfTypeParameter:()=>TA,getEffectiveContainerForJSDocTemplateTag:()=>J6,getEffectiveImplementsTypeNodes:()=>KA,getEffectiveInitializer:()=>$w,getEffectiveJSDocHost:()=>zA,getEffectiveModifierFlags:()=>uu,getEffectiveModifierFlagsAlwaysIncludeJSDoc:()=>Jce,getEffectiveModifierFlagsNoCache:()=>qce,getEffectiveReturnTypeNode:()=>B_,getEffectiveSetAccessorTypeAnnotationNode:()=>Fce,getEffectiveTypeAnnotationNode:()=>Cl,getEffectiveTypeParameterDeclarations:()=>jy,getEffectiveTypeRoots:()=>YO,getElementOrPropertyAccessArgumentExpressionOrName:()=>W6,getElementOrPropertyAccessName:()=>wh,getElementsOfBindingOrAssignmentPattern:()=>L2,getEmitDeclarations:()=>f_,getEmitFlags:()=>Ya,getEmitHelpers:()=>O4,getEmitModuleDetectionKind:()=>Ele,getEmitModuleKind:()=>Rl,getEmitModuleResolutionKind:()=>$s,getEmitScriptTarget:()=>Do,getEnclosingBlockScopeContainer:()=>tm,getEncodedSemanticClassifications:()=>BY,getEncodedSyntacticClassifications:()=>UY,getEndLinePosition:()=>Uw,getEntityNameFromTypeNode:()=>Kw,getEntrypointsFromPackageJsonInfo:()=>zNe,getErrorCountForSummary:()=>JF,getErrorSpanForNode:()=>w0,getErrorSummaryText:()=>hme,getEscapedTextOfIdentifierOrLiteral:()=>FI,getExpandoInitializer:()=>ob,getExportAssignmentExpression:()=>UH,getExportInfoMap:()=>$N,getExportNeedsImportStarHelper:()=>z_e,getExpressionAssociativity:()=>WH,getExpressionPrecedence:()=>$6,getExternalHelpersModuleName:()=>xO,getExternalModuleImportEqualsDeclarationExpression:()=>RI,getExternalModuleName:()=>VA,getExternalModuleNameFromDeclaration:()=>Dce,getExternalModuleNameFromPath:()=>YH,getExternalModuleNameLiteral:()=>HS,getExternalModuleRequireArgument:()=>IH,getFallbackOptions:()=>pN,getFileEmitOutput:()=>Ype,getFileMatcherPatterns:()=>nL,getFileNamesFromConfigSpecs:()=>UO,getFileWatcherEventKind:()=>aoe,getFilesInErrorForSummary:()=>KF,getFirstConstructorWithBody:()=>Vm,getFirstIdentifier:()=>Xd,getFirstNonSpaceCharacterPosition:()=>nge,getFirstProjectOutput:()=>JK,getFixableErrorSpanExpression:()=>IY,getFormatCodeSettingsForWriting:()=>z7,getFullWidth:()=>Gw,getFunctionFlags:()=>pl,getHeritageClause:()=>hR,getHostSignatureFromJSDoc:()=>sb,getIdentifierAutoGenerate:()=>BRe,getIdentifierGeneratedImportReference:()=>Eue,getIdentifierTypeArguments:()=>PT,getImmediatelyInvokedFunctionExpression:()=>TT,getImpliedNodeFormatForFile:()=>NF,getImpliedNodeFormatForFileWorker:()=>uq,getImportNeedsImportDefaultHelper:()=>SK,getImportNeedsImportStarHelper:()=>vF,getIndentSize:()=>$A,getIndentString:()=>Q6,getInitializedVariables:()=>XI,getInitializerOfBinaryExpression:()=>OH,getInitializerOfBindingOrAssignmentElement:()=>CO,getInterfaceBaseTypeNodes:()=>MI,getInternalEmitFlags:()=>a_,getInvokedExpression:()=>P6,getIsolatedModules:()=>u_,getJSDocAugmentsTag:()=>Koe,getJSDocClassTag:()=>Aj,getJSDocCommentRanges:()=>EH,getJSDocCommentsAndTags:()=>PH,getJSDocDeprecatedTag:()=>Cj,getJSDocDeprecatedTagNoCache:()=>ese,getJSDocEnumTag:()=>Ij,getJSDocHost:()=>fS,getJSDocImplementsTags:()=>qoe,getJSDocOverrideTagNoCache:()=>Zoe,getJSDocParameterTags:()=>_I,getJSDocParameterTagsNoCache:()=>joe,getJSDocPrivateTag:()=>jDe,getJSDocPrivateTagNoCache:()=>Yoe,getJSDocProtectedTag:()=>HDe,getJSDocProtectedTagNoCache:()=>$oe,getJSDocPublicTag:()=>VDe,getJSDocPublicTagNoCache:()=>Xoe,getJSDocReadonlyTag:()=>WDe,getJSDocReadonlyTagNoCache:()=>Qoe,getJSDocReturnTag:()=>tse,getJSDocReturnType:()=>Cw,getJSDocRoot:()=>NI,getJSDocSatisfiesExpressionType:()=>JW,getJSDocSatisfiesTag:()=>Lj,getJSDocTags:()=>A0,getJSDocTagsNoCache:()=>JDe,getJSDocTemplateTag:()=>zDe,getJSDocThisTag:()=>e6,getJSDocType:()=>Vy,getJSDocTypeAliasName:()=>iJ,getJSDocTypeAssertionType:()=>T3,getJSDocTypeParameterDeclarations:()=>t4,getJSDocTypeParameterTags:()=>Woe,getJSDocTypeParameterTagsNoCache:()=>zoe,getJSDocTypeTag:()=>x0,getJSXImplicitImportBase:()=>_4,getJSXRuntimeImport:()=>p4,getJSXTransformEnabled:()=>AW,getKeyForCompilerOptions:()=>JJ,getLanguageVariant:()=>OR,getLastChild:()=>yW,getLeadingCommentRanges:()=>Nm,getLeadingCommentRangesOfNode:()=>bH,getLeftmostAccessExpression:()=>QI,getLeftmostExpression:()=>ZI,getLineAndCharacterOfPosition:()=>Gs,getLineInfo:()=>F_e,getLineOfLocalPosition:()=>VI,getLineOfLocalPositionFromLineMap:()=>LT,getLineStartPositionForPosition:()=>Hf,getLineStarts:()=>Sh,getLinesBetweenPositionAndNextNonWhitespaceCharacter:()=>sle,getLinesBetweenPositionAndPrecedingNonWhitespaceCharacter:()=>ole,getLinesBetweenPositions:()=>sI,getLinesBetweenRangeEndAndRangeStart:()=>pW,getLinesBetweenRangeEndPositions:()=>Wwe,getLiteralText:()=>Bse,getLocalNameForExternalImport:()=>I2,getLocalSymbolForExportDefault:()=>ZA,getLocaleSpecificMessage:()=>uo,getLocaleTimeString:()=>TN,getMappedContextSpan:()=>zhe,getMappedDocumentSpan:()=>uY,getMappedLocation:()=>zN,getMatchedFileSpec:()=>Nq,getMatchedIncludeSpec:()=>Pq,getMeaningFromDeclaration:()=>kN,getMeaningFromLocation:()=>e1,getMembersOfDeclaration:()=>$se,getModeForFileReference:()=>hN,getModeForResolutionAtIndex:()=>aq,getModeForUsageLocation:()=>H_,getModifiedTime:()=>Q1,getModifiers:()=>dT,getModuleInstanceState:()=>Gh,getModuleNameStringLiteralAt:()=>GF,getModuleSpecifierEndingPreference:()=>OW,getModuleSpecifierResolverHost:()=>oY,getNameForExportedSymbol:()=>j7,getNameFromIndexInfo:()=>Kse,getNameFromPropertyName:()=>jN,getNameOfAccessExpression:()=>ule,getNameOfCompilerOptionValue:()=>EJ,getNameOfDeclaration:()=>sa,getNameOfExpando:()=>wH,getNameOfJSDocTypedef:()=>Uoe,getNameOrArgument:()=>tR,getNameTable:()=>p$,getNamesForExportedSymbol:()=>mge,getNamespaceDeclarationNode:()=>jA,getNewLineCharacter:()=>db,getNewLineKind:()=>YN,getNewLineOrDefaultFromHost:()=>bb,getNewTargetContainer:()=>oce,getNextJSDocCommentLocation:()=>MH,getNodeForGeneratedName:()=>I3,getNodeId:()=>zo,getNodeKind:()=>aE,getNodeModifiers:()=>ik,getNodeModulePathParts:()=>jW,getNonAssignedNameOfDeclaration:()=>Sj,getNonAssignmentOperatorForCompoundAssignment:()=>zL,getNonAugmentationDeclaration:()=>dH,getNonDecoratorTokenPosOfNode:()=>aH,getNormalizedAbsolutePath:()=>_a,getNormalizedAbsolutePathWithoutRoot:()=>lj,getNormalizedPathComponents:()=>_w,getObjectFlags:()=>Ur,getOperator:()=>JH,getOperatorAssociativity:()=>zH,getOperatorPrecedence:()=>vR,getOptionFromName:()=>gJ,getOptionsNameMap:()=>R2,getOrCreateEmitNode:()=>Lu,getOrCreateExternalHelpersModuleNameIfNeeded:()=>ade,getOrUpdate:()=>jD,getOriginalNode:()=>ec,getOriginalNodeId:()=>sc,getOriginalSourceFile:()=>wwe,getOutputDeclarationFileName:()=>XL,getOutputExtension:()=>zK,getOutputFileNames:()=>BMe,getOutputPathsFor:()=>qL,getOutputPathsForBundle:()=>KL,getOwnEmitOutputFilePath:()=>wce,getOwnKeys:()=>bh,getOwnValues:()=>W1,getPackageJsonInfo:()=>qS,getPackageJsonTypesVersionsPaths:()=>q3,getPackageJsonsVisibleToFile:()=>lge,getPackageNameFromTypesPackageName:()=>eN,getPackageScopeForPath:()=>eF,getParameterSymbolFromJSDoc:()=>dR,getParameterTypeNode:()=>bRe,getParentNodeInSpan:()=>WN,getParseTreeNode:()=>ea,getParsedCommandLineOfConfigFile:()=>OO,getPathComponents:()=>Ou,getPathComponentsRelativeTo:()=>_j,getPathFromPathComponents:()=>T0,getPathUpdater:()=>jY,getPathsBasePath:()=>ZH,getPatternFromSpec:()=>kW,getPendingEmitKind:()=>B2,getPositionOfLineAndCharacter:()=>yw,getPossibleGenericSignatures:()=>XX,getPossibleOriginalInputExtensionForExtension:()=>Oce,getPossibleTypeArgumentsInfo:()=>YX,getPreEmitDiagnostics:()=>ZMe,getPrecedingNonSpaceCharacterPosition:()=>hY,getPrivateIdentifier:()=>kK,getProperties:()=>CK,getProperty:()=>JD,getPropertyArrayElementValue:()=>rce,getPropertyAssignment:()=>FA,getPropertyAssignmentAliasLikeExpression:()=>xce,getPropertyNameForPropertyNameNode:()=>M0,getPropertyNameForUniqueESSymbol:()=>kwe,getPropertyNameOfBindingOrAssignmentElement:()=>rJ,getPropertySymbolFromBindingElement:()=>I7,getPropertySymbolsFromContextualType:()=>_5,getQuoteFromPreference:()=>Hhe,getQuotePreference:()=>z_,getRangesWhere:()=>PU,getRefactorContextSpan:()=>ZS,getReferencedFileLocation:()=>$L,getRegexFromPattern:()=>Qy,getRegularExpressionForWildcard:()=>tL,getRegularExpressionsForWildcards:()=>m4,getRelativePathFromDirectory:()=>Xp,getRelativePathFromFile:()=>pw,getRelativePathToDirectoryOrUrl:()=>Z1,getRenameLocation:()=>qN,getReplacementSpanForContextToken:()=>eY,getResolutionDiagnostic:()=>_q,getResolutionModeOverrideForClause:()=>XS,getResolveJsonModule:()=>OT,getResolvePackageJsonExports:()=>xW,getResolvePackageJsonImports:()=>oRe,getResolvedExternalModuleName:()=>Z6,getResolvedModule:()=>DA,getResolvedTypeReferenceDirective:()=>iwe,getRestIndicatorOfBindingOrAssignmentElement:()=>x3,getRestParameterElementType:()=>SH,getRightMostAssignedExpression:()=>Zw,getRootDeclaration:()=>nm,getRootLength:()=>_p,getScriptKind:()=>mY,getScriptKindFromFileName:()=>RW,getScriptTargetFeatures:()=>oH,getSelectedEffectiveModifierFlags:()=>gS,getSelectedSyntacticModifierFlags:()=>zce,getSemanticClassifications:()=>Cge,getSemanticJsxChildren:()=>ER,getSetAccessorTypeAnnotationNode:()=>Pce,getSetAccessorValueParameter:()=>jI,getSetExternalModuleIndicator:()=>NR,getShebang:()=>K8,getSingleInitializerOfVariableStatementOrPropertyDeclaration:()=>NH,getSingleVariableOfVariableStatement:()=>WA,getSnapshotText:()=>E7,getSnippetElement:()=>bz,getSourceFileOfModule:()=>m6,getSourceFileOfNode:()=>Gn,getSourceFilePathInNewDir:()=>e4,getSourceFilePathInNewDirWorker:()=>tW,getSourceFileVersionAsHashFromText:()=>XF,getSourceFilesToEmit:()=>eW,getSourceMapRange:()=>pb,getSourceMapper:()=>Xge,getSourceTextOfNodeFromSourceFile:()=>k0,getSpanOfTokenAtPosition:()=>Pg,getSpellingSuggestion:()=>QC,getStartPositionOfLine:()=>Ky,getStartPositionOfRange:()=>qI,getStartsOnNewLine:()=>nO,getStaticPropertiesAndClassStaticBlock:()=>EF,getStrictOptionValue:()=>Bf,getStringComparer:()=>p8,getSuperCallFromStatement:()=>AK,getSuperContainer:()=>zw,getSupportedCodeFixes:()=>Fye,getSupportedExtensions:()=>rL,getSupportedExtensionsWithJsonIfResolveJsonModule:()=>GR,getSwitchedType:()=>TY,getSymbolId:()=>$a,getSymbolNameForPrivateIdentifier:()=>gR,getSymbolTarget:()=>ege,getSyntacticClassifications:()=>Dge,getSyntacticModifierFlags:()=>Yy,getSyntacticModifierFlagsNoCache:()=>sW,getSynthesizedDeepClone:()=>cc,getSynthesizedDeepCloneWithReplacements:()=>KN,getSynthesizedDeepClones:()=>oE,getSynthesizedDeepClonesWithReplacements:()=>gY,getSyntheticLeadingComments:()=>u2,getSyntheticTrailingComments:()=>iO,getTargetLabel:()=>s7,getTargetOfBindingOrAssignmentElement:()=>iv,getTemporaryModuleResolutionState:()=>Z3,getTextOfConstantValue:()=>Use,getTextOfIdentifierOrLiteral:()=>c_,getTextOfJSDocComment:()=>Iw,getTextOfNode:()=>Qc,getTextOfNodeFromSourceText:()=>CI,getTextOfPropertyName:()=>RA,getThisContainer:()=>Ku,getThisParameter:()=>F0,getTokenAtPosition:()=>Vi,getTokenPosOfNode:()=>yT,getTokenSourceMapRange:()=>FRe,getTouchingPropertyName:()=>Zd,getTouchingToken:()=>rk,getTrailingCommentRanges:()=>eb,getTrailingSemicolonDeferringWriter:()=>XH,getTransformFlagsSubtreeExclusions:()=>uue,getTransformers:()=>jK,getTsBuildInfoEmitOutputFilePath:()=>Jg,getTsConfigObjectLiteralExpression:()=>kI,getTsConfigPropArray:()=>Ww,getTsConfigPropArrayElementValue:()=>w6,getTypeAnnotationNode:()=>Mce,getTypeArgumentOrTypeParameterList:()=>Ohe,getTypeKeywordOfTypeOnlyImport:()=>cY,getTypeNode:()=>vue,getTypeNodeIfAccessible:()=>uk,getTypeParameterFromJsDoc:()=>yce,getTypeParameterOwner:()=>BDe,getTypesPackageName:()=>rF,getUILocale:()=>xae,getUniqueName:()=>a1,getUniqueSymbolId:()=>tge,getUseDefineForClassFields:()=>FR,getWatchErrorSummaryDiagnosticMessage:()=>wq,getWatchFactory:()=>Upe,group:()=>$C,groupBy:()=>yae,guessIndentation:()=>xse,handleNoEmitOptions:()=>dq,hasAbstractModifier:()=>B0,hasAccessorModifier:()=>rm,hasAmbientModifier:()=>aW,hasChangesInResolutions:()=>nH,hasChildOfKind:()=>PN,hasContextSensitiveParameters:()=>b4,hasDecorators:()=>vf,hasDocComment:()=>Rhe,hasDynamicName:()=>Xy,hasEffectiveModifier:()=>cd,hasEffectiveModifiers:()=>n4,hasEffectiveReadonlyModifier:()=>HI,hasExtension:()=>yA,hasIndexSignature:()=>EY,hasInitializer:()=>Jy,hasInvalidEscape:()=>KH,hasJSDocNodes:()=>Jd,hasJSDocParameterTags:()=>Joe,hasJSFileExtension:()=>TS,hasJsonModuleEmitEnabled:()=>l4,hasOnlyExpressionInitializer:()=>hT,hasOverrideModifier:()=>iW,hasPossibleExternalModuleReference:()=>zse,hasProperty:()=>fs,hasPropertyAccessExpressionWithName:()=>DN,hasQuestionToken:()=>dS,hasRecordedExternalHelpers:()=>ide,hasRestParameter:()=>Yj,hasScopeMarker:()=>yse,hasStaticModifier:()=>zc,hasSyntacticModifier:()=>Mr,hasSyntacticModifiers:()=>Wce,hasTSFileExtension:()=>BR,hasTabstop:()=>jle,hasTrailingDirectorySeparator:()=>My,hasType:()=>f6,hasTypeArguments:()=>Awe,hasZeroOrOneAsteriskCharacter:()=>CW,helperString:()=>Sz,hostGetCanonicalFileName:()=>lb,hostUsesCaseSensitiveFileNames:()=>AR,idText:()=>vr,identifierIsThisKeyword:()=>rW,identifierToKeywordKind:()=>nb,identity:()=>Ks,identitySourceMapConsumer:()=>yF,ignoreSourceNewlines:()=>Tz,ignoredPaths:()=>dw,importDefaultHelper:()=>e3,importFromModuleSpecifier:()=>oR,importNameElisionDisabled:()=>u4,importStarHelper:()=>oO,indexOfAnyCharCode:()=>cae,indexOfNode:()=>wA,indicesOf:()=>HD,inferredTypesContainingFile:()=>VF,insertImports:()=>L7,insertLeadingStatement:()=>sOe,insertSorted:()=>Ny,insertStatementAfterCustomPrologue:()=>L0,insertStatementAfterStandardPrologue:()=>cwe,insertStatementsAfterCustomPrologue:()=>rH,insertStatementsAfterStandardPrologue:()=>em,intersperse:()=>DU,introducesArgumentsExoticObject:()=>tce,inverseJsxOptionMap:()=>PL,isAbstractConstructorSymbol:()=>cle,isAbstractModifier:()=>Rue,isAccessExpression:()=>Us,isAccessibilityModifier:()=>ZX,isAccessor:()=>rb,isAccessorModifier:()=>Nue,isAliasSymbolDeclaration:()=>Cwe,isAliasableExpression:()=>mR,isAmbientModule:()=>lu,isAmbientPropertyDeclaration:()=>_H,isAnonymousFunctionDefinition:()=>GI,isAnyDirectorySeparator:()=>sj,isAnyImportOrBareOrAccessedRequire:()=>Wse,isAnyImportOrReExport:()=>Vw,isAnyImportSyntax:()=>vT,isAnySupportedFileExtension:()=>mRe,isApplicableVersionedTypesKey:()=>ZO,isArgumentExpressionOfElementAccess:()=>BX,isArray:()=>ba,isArrayBindingElement:()=>c6,isArrayBindingOrAssignmentElement:()=>Rw,isArrayBindingOrAssignmentPattern:()=>Vj,isArrayBindingPattern:()=>y2,isArrayLiteralExpression:()=>fu,isArrayLiteralOrObjectLiteralDestructuringPattern:()=>qg,isArrayTypeNode:()=>wz,isArrowFunction:()=>xs,isAsExpression:()=>_O,isAssertClause:()=>p3,isAssertEntry:()=>jue,isAssertionExpression:()=>mT,isAssertionKey:()=>ase,isAssertsKeyword:()=>Due,isAssignmentDeclaration:()=>OI,isAssignmentExpression:()=>Iu,isAssignmentOperator:()=>Mg,isAssignmentPattern:()=>bI,isAssignmentTarget:()=>Um,isAsteriskToken:()=>lO,isAsyncFunction:()=>XA,isAsyncModifier:()=>hL,isAutoAccessorPropertyDeclaration:()=>Id,isAwaitExpression:()=>b2,isAwaitKeyword:()=>Dz,isBigIntLiteral:()=>a3,isBinaryExpression:()=>ar,isBinaryOperatorToken:()=>pde,isBindableObjectDefinePropertyCall:()=>cS,isBindableStaticAccessExpression:()=>xT,isBindableStaticElementAccessExpression:()=>H6,isBindableStaticNameExpression:()=>lS,isBindingElement:()=>Wo,isBindingElementOfBareOrAccessedRequire:()=>lce,isBindingName:()=>Mm,isBindingOrAssignmentElement:()=>use,isBindingOrAssignmentPattern:()=>Dw,isBindingPattern:()=>La,isBlock:()=>Va,isBlockOrCatchScoped:()=>sH,isBlockScope:()=>pH,isBlockScopedContainerTopLevel:()=>Hse,isBooleanLiteral:()=>ose,isBreakOrContinueStatement:()=>gI,isBreakStatement:()=>qRe,isBuildInfoFile:()=>Ipe,isBuilderProgram:()=>gme,isBundle:()=>Bz,isBundleFileTextLike:()=>dle,isCallChain:()=>fT,isCallExpression:()=>Pa,isCallExpressionTarget:()=>NX,isCallLikeExpression:()=>iS,isCallOrNewExpression:()=>Ih,isCallOrNewExpressionTarget:()=>PX,isCallSignatureDeclaration:()=>p2,isCallToHelper:()=>mL,isCaseBlock:()=>gO,isCaseClause:()=>IL,isCaseKeyword:()=>Pue,isCaseOrDefaultClause:()=>Kj,isCatchClause:()=>T2,isCatchClauseVariableDeclaration:()=>Vle,isCatchClauseVariableDeclarationOrBindingElement:()=>cH,isCheckJsEnabledForFile:()=>WR,isChildOfNodeWithKind:()=>TH,isCircularBuildOrder:()=>$S,isClassDeclaration:()=>sl,isClassElement:()=>_l,isClassExpression:()=>_u,isClassLike:()=>Yr,isClassMemberModifier:()=>Gj,isClassOrTypeElement:()=>s6,isClassStaticBlockDeclaration:()=>oc,isCollapsedRange:()=>Hwe,isColonToken:()=>Iue,isCommaExpression:()=>SO,isCommaListExpression:()=>xL,isCommaSequence:()=>RL,isCommaToken:()=>Cue,isComment:()=>g7,isCommonJsExportPropertyAssignment:()=>k6,isCommonJsExportedExpression:()=>Zse,isCompoundAssignment:()=>sN,isComputedNonLiteralName:()=>jw,isComputedPropertyName:()=>ts,isConciseBody:()=>u6,isConditionalExpression:()=>E2,isConditionalTypeNode:()=>h2,isConstTypeReference:()=>Ch,isConstructSignatureDeclaration:()=>dO,isConstructorDeclaration:()=>Ec,isConstructorTypeNode:()=>vL,isContextualKeyword:()=>K6,isContinueStatement:()=>KRe,isCustomPrologue:()=>A6,isDebuggerStatement:()=>XRe,isDeclaration:()=>Kl,isDeclarationBindingElement:()=>kw,isDeclarationFileName:()=>Fu,isDeclarationName:()=>Rh,isDeclarationNameOfEnumOrNamespace:()=>RR,isDeclarationReadonly:()=>x6,isDeclarationStatement:()=>bse,isDeclarationWithTypeParameterChildren:()=>hH,isDeclarationWithTypeParameters:()=>mH,isDecorator:()=>du,isDecoratorTarget:()=>mhe,isDefaultClause:()=>vO,isDefaultImport:()=>uS,isDefaultModifier:()=>kue,isDefaultedExpandoInitializer:()=>dce,isDeleteExpression:()=>Gue,isDeleteTarget:()=>GH,isDeprecatedDeclaration:()=>H7,isDestructuringAssignment:()=>Fg,isDiagnosticWithLocation:()=>CY,isDiskPathRoot:()=>TDe,isDoStatement:()=>zRe,isDotDotDotToken:()=>o3,isDottedName:()=>zI,isDynamicName:()=>Y6,isESSymbolIdentifier:()=>Dwe,isEffectiveExternalModule:()=>oS,isEffectiveModuleDeclaration:()=>jse,isEffectiveStrictModeSourceFile:()=>fH,isElementAccessChain:()=>Dj,isElementAccessExpression:()=>Vs,isEmittedFileOfProgram:()=>Bpe,isEmptyArrayLiteral:()=>Zce,isEmptyBindingElement:()=>Goe,isEmptyBindingPattern:()=>Foe,isEmptyObjectLiteral:()=>dW,isEmptyStatement:()=>Pz,isEmptyStringLiteral:()=>CH,isEndOfDeclarationMarker:()=>QRe,isEntityName:()=>Cd,isEntityNameExpression:()=>bc,isEnumConst:()=>R0,isEnumDeclaration:()=>hb,isEnumMember:()=>q0,isEqualityOperatorKind:()=>R7,isEqualsGreaterThanToken:()=>Lue,isExclamationToken:()=>uO,isExcludedFile:()=>gfe,isExclusivelyTypeOnlyImportOrExport:()=>oq,isExportAssignment:()=>pc,isExportDeclaration:()=>Il,isExportModifier:()=>c3,isExportName:()=>E3,isExportNamespaceAsDefaultDeclaration:()=>v6,isExportOrDefaultModifier:()=>oJ,isExportSpecifier:()=>Mu,isExportsIdentifier:()=>ST,isExportsOrModuleExportsOrAlias:()=>$0,isExpression:()=>ot,isExpressionNode:()=>Dh,isExpressionOfExternalModuleImportEqualsDeclaration:()=>vhe,isExpressionOfOptionalChainRoot:()=>r6,isExpressionStatement:()=>Ol,isExpressionWithTypeArguments:()=>Vg,isExpressionWithTypeArgumentsInClassExtendsClause:()=>LR,isExternalModule:()=>Lc,isExternalModuleAugmentation:()=>D0,isExternalModuleImportEqualsDeclaration:()=>ab,isExternalModuleIndicator:()=>Ow,isExternalModuleNameRelative:()=>fl,isExternalModuleReference:()=>um,isExternalModuleSymbol:()=>UN,isExternalOrCommonJsModule:()=>kd,isFileLevelUniqueName:()=>g6,isFileProbablyExternalModule:()=>kO,isFirstDeclarationOfSymbolParameter:()=>dY,isFixablePromiseHandler:()=>ZY,isForInOrOfStatement:()=>IA,isForInStatement:()=>Mz,isForInitializer:()=>pp,isForOfStatement:()=>pO,isForStatement:()=>GT,isFunctionBlock:()=>ET,isFunctionBody:()=>Hj,isFunctionDeclaration:()=>Jc,isFunctionExpression:()=>ms,isFunctionExpressionOrArrowFunction:()=>o2,isFunctionLike:()=>Ia,isFunctionLikeDeclaration:()=>Ds,isFunctionLikeKind:()=>rS,isFunctionLikeOrClassStaticBlockDeclaration:()=>xA,isFunctionOrConstructorTypeNode:()=>lse,isFunctionOrModuleBlock:()=>Bj,isFunctionSymbol:()=>_ce,isFunctionTypeNode:()=>Jm,isFutureReservedKeyword:()=>Iwe,isGeneratedIdentifier:()=>tc,isGeneratedPrivateIdentifier:()=>nS,isGetAccessor:()=>zy,isGetAccessorDeclaration:()=>__,isGetOrSetAccessorDeclaration:()=>t6,isGlobalDeclaration:()=>J6e,isGlobalScopeAugmentation:()=>mp,isGrammarError:()=>Nse,isHeritageClause:()=>dd,isHoistedFunction:()=>C6,isHoistedVariableStatement:()=>I6,isIdentifier:()=>Re,isIdentifierANonContextualKeyword:()=>q6,isIdentifierName:()=>Sce,isIdentifierOrThisTypeNode:()=>ude,isIdentifierPart:()=>tb,isIdentifierStart:()=>Pm,isIdentifierText:()=>r_,isIdentifierTypePredicate:()=>nce,isIdentifierTypeReference:()=>Mle,isIfStatement:()=>FT,isIgnoredFileFromWildCardWatching:()=>DF,isImplicitGlob:()=>LW,isImportCall:()=>Dd,isImportClause:()=>lm,isImportDeclaration:()=>gl,isImportEqualsDeclaration:()=>Nl,isImportKeyword:()=>yL,isImportMeta:()=>PA,isImportOrExportSpecifier:()=>tS,isImportOrExportSpecifierName:()=>Zhe,isImportSpecifier:()=>$u,isImportTypeAssertionContainer:()=>Vue,isImportTypeNode:()=>Mh,isImportableFile:()=>PY,isInComment:()=>Kg,isInExpressionContext:()=>F6,isInJSDoc:()=>Xw,isInJSFile:()=>Yn,isInJSXText:()=>Dhe,isInJsonFile:()=>B6,isInNonReferenceComment:()=>Ghe,isInReferenceComment:()=>Fhe,isInRightSideOfInternalImportEqualsDeclaration:()=>i7,isInString:()=>r1,isInTemplateString:()=>qX,isInTopLevelContext:()=>O6,isIncrementalCompilation:()=>PR,isIndexSignatureDeclaration:()=>DS,isIndexedAccessTypeNode:()=>NS,isInferTypeNode:()=>g2,isInfinityOrNaNString:()=>lL,isInitializedProperty:()=>cN,isInitializedVariable:()=>mW,isInsideJsxElement:()=>m7,isInsideJsxElementOrAttribute:()=>khe,isInsideNodeModules:()=>dge,isInsideTemplateLiteral:()=>GN,isInstantiatedModule:()=>fK,isInterfaceDeclaration:()=>ku,isInternalDeclaration:()=>BK,isInternalModuleImportEqualsDeclaration:()=>BA,isInternalName:()=>eJ,isIntersectionTypeNode:()=>fO,isIntrinsicJsxName:()=>BI,isIterationStatement:()=>Wy,isJSDoc:()=>dm,isJSDocAllType:()=>Kue,isJSDocAugmentsTag:()=>A2,isJSDocAuthorTag:()=>tOe,isJSDocCallbackTag:()=>Vz,isJSDocClassTag:()=>Xue,isJSDocCommentContainingNode:()=>qj,isJSDocConstructSignature:()=>HA,isJSDocDeprecatedTag:()=>Jz,isJSDocEnumTag:()=>bO,isJSDocFunctionType:()=>x2,isJSDocImplementsTag:()=>qz,isJSDocIndexSignature:()=>U6,isJSDocLikeText:()=>cJ,isJSDocLink:()=>zue,isJSDocLinkCode:()=>Jue,isJSDocLinkLike:()=>aS,isJSDocLinkPlain:()=>ZRe,isJSDocMemberName:()=>gb,isJSDocNameReference:()=>LL,isJSDocNamepathType:()=>eOe,isJSDocNamespaceBody:()=>ZDe,isJSDocNode:()=>LA,isJSDocNonNullableType:()=>m3,isJSDocNullableType:()=>S2,isJSDocOptionalParameter:()=>KR,isJSDocOptionalType:()=>Uz,isJSDocOverloadTag:()=>DL,isJSDocOverrideTag:()=>g3,isJSDocParameterTag:()=>xp,isJSDocPrivateTag:()=>Hz,isJSDocPropertyLikeTag:()=>a6,isJSDocPropertyTag:()=>$ue,isJSDocProtectedTag:()=>Wz,isJSDocPublicTag:()=>jz,isJSDocReadonlyTag:()=>zz,isJSDocReturnTag:()=>y3,isJSDocSatisfiesExpression:()=>zW,isJSDocSatisfiesTag:()=>v3,isJSDocSeeTag:()=>nOe,isJSDocSignature:()=>X0,isJSDocTag:()=>TI,isJSDocTemplateTag:()=>j_,isJSDocThisTag:()=>Yue,isJSDocThrowsTag:()=>iOe,isJSDocTypeAlias:()=>Mf,isJSDocTypeAssertion:()=>OL,isJSDocTypeExpression:()=>VT,isJSDocTypeLiteral:()=>kL,isJSDocTypeTag:()=>wL,isJSDocTypedefTag:()=>Kz,isJSDocUnknownTag:()=>rOe,isJSDocUnknownType:()=>que,isJSDocVariadicType:()=>h3,isJSXTagName:()=>wI,isJsonEqual:()=>GW,isJsonSourceFile:()=>Pf,isJsxAttribute:()=>Sp,isJsxAttributeLike:()=>d6,isJsxAttributes:()=>K0,isJsxChild:()=>Mw,isJsxClosingElement:()=>BS,isJsxClosingFragment:()=>Hue,isJsxElement:()=>Hg,isJsxExpression:()=>CL,isJsxFragment:()=>US,isJsxOpeningElement:()=>Xm,isJsxOpeningFragment:()=>VS,isJsxOpeningLikeElement:()=>Au,isJsxOpeningLikeElementTagName:()=>hhe,isJsxSelfClosingElement:()=>GS,isJsxSpreadAttribute:()=>BT,isJsxTagNameExpression:()=>EI,isJsxText:()=>IS,isJumpStatementTarget:()=>wN,isKeyword:()=>Xu,isKnownSymbol:()=>yR,isLabelName:()=>FX,isLabelOfLabeledStatement:()=>MX,isLabeledStatement:()=>J0,isLateVisibilityPaintedStatement:()=>E6,isLeftHandSideExpression:()=>Ju,isLeftHandSideOfAssignment:()=>Bwe,isLet:()=>LI,isLineBreak:()=>Wl,isLiteralComputedPropertyDeclarationName:()=>pR,isLiteralExpression:()=>_T,isLiteralExpressionOfObject:()=>Pj,isLiteralImportTypeNode:()=>ib,isLiteralKind:()=>yI,isLiteralLikeAccess:()=>j6,isLiteralLikeElementAccess:()=>eR,isLiteralNameOfPropertyDeclarationOrIndexAccess:()=>c7,isLiteralTypeLikeExpression:()=>hOe,isLiteralTypeLiteral:()=>hse,isLiteralTypeNode:()=>mb,isLocalName:()=>rv,isLogicalOperator:()=>Yce,isLogicalOrCoalescingAssignmentExpression:()=>cW,isLogicalOrCoalescingAssignmentOperator:()=>WI,isLogicalOrCoalescingBinaryExpression:()=>IR,isLogicalOrCoalescingBinaryOperator:()=>CR,isMappedTypeNode:()=>TL,isMemberName:()=>Ah,isMergeDeclarationMarker:()=>$Re,isMetaProperty:()=>SL,isMethodDeclaration:()=>Nc,isMethodOrAccessor:()=>AA,isMethodSignature:()=>zm,isMinusToken:()=>kz,isMissingDeclaration:()=>YRe,isModifier:()=>Ha,isModifierKind:()=>Rg,isModifierLike:()=>Ns,isModuleAugmentationExternal:()=>uH,isModuleBlock:()=>Tp,isModuleBody:()=>vse,isModuleDeclaration:()=>Tc,isModuleExportsAccessExpression:()=>Bm,isModuleIdentifier:()=>RH,isModuleName:()=>_de,isModuleOrEnumDeclaration:()=>Nw,isModuleReference:()=>Tse,isModuleSpecifierLike:()=>C7,isModuleWithStringLiteralName:()=>b6,isNameOfFunctionDeclaration:()=>VX,isNameOfModuleDeclaration:()=>UX,isNamedClassElement:()=>cse,isNamedDeclaration:()=>zl,isNamedEvaluation:()=>yf,isNamedEvaluationSource:()=>VH,isNamedExportBindings:()=>Rj,isNamedExports:()=>m_,isNamedImportBindings:()=>Wj,isNamedImports:()=>jg,isNamedImportsOrExports:()=>bW,isNamedTupleMember:()=>EL,isNamespaceBody:()=>QDe,isNamespaceExport:()=>qm,isNamespaceExportDeclaration:()=>yO,isNamespaceImport:()=>nv,isNamespaceReexportDeclaration:()=>cce,isNewExpression:()=>z0,isNewExpressionTarget:()=>ek,isNightly:()=>SR,isNoSubstitutionTemplateLiteral:()=>LS,isNode:()=>XDe,isNodeArray:()=>C0,isNodeArrayMultiLine:()=>ale,isNodeDescendantOf:()=>CT,isNodeKind:()=>Lw,isNodeLikeSystem:()=>qU,isNodeModulesDirectory:()=>H8,isNodeWithPossibleHoistedDeclaration:()=>vce,isNonContextualKeyword:()=>Ace,isNonExportDefaultModifier:()=>NOe,isNonGlobalAmbientModule:()=>lH,isNonGlobalDeclaration:()=>vge,isNonNullAccess:()=>Hle,isNonNullChain:()=>i6,isNonNullExpression:()=>MS,isNonStaticMethodOrAccessorWithPrivateName:()=>K_e,isNotEmittedOrPartiallyEmittedNode:()=>$De,isNotEmittedStatement:()=>Gz,isNullishCoalesce:()=>wj,isNumber:()=>Cg,isNumericLiteral:()=>Uf,isNumericLiteralName:()=>Wm,isObjectBindingElementWithoutPropertyName:()=>HN,isObjectBindingOrAssignmentElement:()=>ww,isObjectBindingOrAssignmentPattern:()=>Uj,isObjectBindingPattern:()=>cm,isObjectLiteralElement:()=>Xj,isObjectLiteralElementLike:()=>Og,isObjectLiteralExpression:()=>rs,isObjectLiteralMethod:()=>o_,isObjectLiteralOrClassExpressionMethodOrAccessor:()=>D6,isObjectTypeDeclaration:()=>vS,isOctalDigit:()=>hj,isOmittedExpression:()=>ol,isOptionalChain:()=>Jl,isOptionalChainRoot:()=>mI,isOptionalDeclaration:()=>WW,isOptionalJSDocPropertyLikeTag:()=>JR,isOptionalTypeNode:()=>Rz,isOuterExpression:()=>S3,isOutermostOptionalChain:()=>hI,isOverrideModifier:()=>Oue,isPackedArrayLiteral:()=>UW,isParameter:()=>ha,isParameterDeclaration:()=>IT,isParameterOrCatchClauseVariable:()=>VW,isParameterPropertyDeclaration:()=>Ad,isParameterPropertyModifier:()=>vI,isParenthesizedExpression:()=>ud,isParenthesizedTypeNode:()=>RS,isParseTreeNode:()=>fI,isPartOfTypeNode:()=>Gm,isPartOfTypeQuery:()=>G6,isPartiallyEmittedExpression:()=>_3,isPatternMatch:()=>h8,isPinnedComment:()=>y6,isPlainJsFile:()=>h6,isPlusToken:()=>Lz,isPossiblyTypeArgumentPosition:()=>FN,isPostfixUnaryExpression:()=>Nz,isPrefixUnaryExpression:()=>tv,isPrivateIdentifier:()=>pi,isPrivateIdentifierClassElementDeclaration:()=>xu,isPrivateIdentifierPropertyAccessExpression:()=>SA,isPrivateIdentifierSymbol:()=>Cce,isProgramBundleEmitBuildInfo:()=>ame,isProgramUptoDate:()=>lq,isPrologueDirective:()=>G_,isPropertyAccessChain:()=>n6,isPropertyAccessEntityNameExpression:()=>kR,isPropertyAccessExpression:()=>br,isPropertyAccessOrQualifiedName:()=>fse,isPropertyAccessOrQualifiedNameOrImportTypeNode:()=>dse,isPropertyAssignment:()=>yl,isPropertyDeclaration:()=>Na,isPropertyName:()=>Ys,isPropertyNameLiteral:()=>s_,isPropertySignature:()=>Yd,isProtoSetter:()=>Ice,isPrototypeAccess:()=>ub,isPrototypePropertyAssignment:()=>rR,isPunctuation:()=>Phe,isPushOrUnshiftIdentifier:()=>jH,isQualifiedName:()=>Yu,isQuestionDotToken:()=>s3,isQuestionOrExclamationToken:()=>lde,isQuestionOrPlusOrMinusToken:()=>fde,isQuestionToken:()=>ev,isRawSourceMap:()=>B_e,isReadonlyKeyword:()=>wue,isReadonlyKeywordOrPlusOrMinusToken:()=>dde,isRecognizedTripleSlashComment:()=>iH,isReferenceFileLocation:()=>G2,isReferencedFile:()=>vb,isRegularExpressionLiteral:()=>Cz,isRequireCall:()=>qu,isRequireVariableStatement:()=>DH,isRestParameter:()=>Fm,isRestTypeNode:()=>Oz,isReturnStatement:()=>V_,isReturnStatementWithFixablePromiseHandler:()=>r5,isRightSideOfAccessExpression:()=>$ce,isRightSideOfPropertyAccess:()=>H2,isRightSideOfQualifiedName:()=>yhe,isRightSideOfQualifiedNameOrPropertyAccess:()=>JI,isRightSideOfQualifiedNameOrPropertyAccessOrJSDocMemberName:()=>Qce,isRootedDiskPath:()=>qp,isSameEntityName:()=>UA,isSatisfiesExpression:()=>HRe,isScopeMarker:()=>gse,isSemicolonClassElement:()=>Bue,isSetAccessor:()=>Ng,isSetAccessorDeclaration:()=>Tf,isShebangTrivia:()=>gj,isShorthandAmbientModuleSymbol:()=>II,isShorthandPropertyAssignment:()=>Sf,isSignedNumericLiteral:()=>X6,isSimpleCopiableExpression:()=>Z0,isSimpleInlineableExpression:()=>Ap,isSingleOrDoubleQuote:()=>Yw,isSourceFile:()=>Li,isSourceFileFromLibrary:()=>fk,isSourceFileJS:()=>Cu,isSourceFileNotJS:()=>vwe,isSourceFileNotJson:()=>LH,isSourceMapping:()=>U_e,isSpecialPropertyDeclaration:()=>fce,isSpreadAssignment:()=>jS,isSpreadElement:()=>Km,isStatement:()=>ca,isStatementButNotDeclaration:()=>Pw,isStatementOrBlock:()=>Ese,isStatementWithLocals:()=>Ose,isStatic:()=>Ca,isStaticModifier:()=>kS,isString:()=>Ta,isStringAKeyword:()=>Lwe,isStringANonContextualKeyword:()=>_S,isStringAndEmptyAnonymousObjectIntersection:()=>Nhe,isStringDoubleQuoted:()=>V6,isStringLiteral:()=>yo,isStringLiteralLike:()=>es,isStringLiteralOrJsxExpression:()=>Sse,isStringLiteralOrTemplate:()=>age,isStringOrNumericLiteralLike:()=>gf,isStringOrRegularExpressionOrTemplateLiteral:()=>QX,isStringTextContainingNode:()=>Fj,isSuperCall:()=>NA,isSuperKeyword:()=>gL,isSuperOrSuperProperty:()=>ywe,isSuperProperty:()=>Pu,isSupportedSourceFileName:()=>wle,isSwitchStatement:()=>mO,isSyntaxList:()=>C2,isSyntheticExpression:()=>WRe,isSyntheticReference:()=>FS,isTagName:()=>GX,isTaggedTemplateExpression:()=>MT,isTaggedTemplateTag:()=>phe,isTemplateExpression:()=>d3,isTemplateHead:()=>_2,isTemplateLiteral:()=>CA,isTemplateLiteralKind:()=>Hy,isTemplateLiteralToken:()=>rse,isTemplateLiteralTypeNode:()=>jRe,isTemplateLiteralTypeSpan:()=>Mue,isTemplateMiddle:()=>Aue,isTemplateMiddleOrTemplateTail:()=>o6,isTemplateSpan:()=>AL,isTemplateTail:()=>Iz,isTextWhiteSpaceLike:()=>Whe,isThis:()=>W2,isThisContainerOrFunctionBlock:()=>ace,isThisIdentifier:()=>kT,isThisInTypeQuery:()=>hS,isThisInitializedDeclaration:()=>N6,isThisInitializedObjectBindingExpression:()=>sce,isThisProperty:()=>Jw,isThisTypeNode:()=>u3,isThisTypeParameter:()=>uL,isThisTypePredicate:()=>hwe,isThrowStatement:()=>Fz,isToken:()=>eS,isTokenKind:()=>Nj,isTraceEnabled:()=>ov,isTransientSymbol:()=>Zp,isTrivia:()=>qA,isTryStatement:()=>hO,isTupleTypeNode:()=>m2,isTypeAlias:()=>cR,isTypeAliasDeclaration:()=>Ep,isTypeAssertionExpression:()=>Fue,isTypeDeclaration:()=>s2,isTypeElement:()=>pT,isTypeKeyword:()=>ak,isTypeKeywordToken:()=>rY,isTypeKeywordTokenOrIdentifier:()=>b7,isTypeLiteralNode:()=>Rd,isTypeNode:()=>bi,isTypeNodeKind:()=>vW,isTypeOfExpression:()=>v2,isTypeOnlyExportDeclaration:()=>ise,isTypeOnlyImportDeclaration:()=>Mj,isTypeOnlyImportOrExportDeclaration:()=>I0,isTypeOperatorNode:()=>OS,isTypeParameterDeclaration:()=>_c,isTypePredicateNode:()=>l3,isTypeQueryNode:()=>bL,isTypeReferenceNode:()=>p_,isTypeReferenceType:()=>_6,isUMDExportSymbol:()=>o4,isUnaryExpression:()=>jj,isUnaryExpressionWithWrite:()=>mse,isUnicodeIdentifierStart:()=>W8,isUnionTypeNode:()=>wS,isUnparsedNode:()=>Oj,isUnparsedPrepend:()=>Wue,isUnparsedSource:()=>UT,isUnparsedTextLike:()=>nse,isUrl:()=>doe,isValidBigIntString:()=>v4,isValidESSymbolDeclaration:()=>ece,isValidTypeOnlyAliasUseSite:()=>SS,isValueSignatureDeclaration:()=>bce,isVarConst:()=>kh,isVariableDeclaration:()=>wi,isVariableDeclarationInVariableStatement:()=>L6,isVariableDeclarationInitializedToBareOrAccessedRequire:()=>N0,isVariableDeclarationInitializedToRequire:()=>kH,isVariableDeclarationList:()=>pu,isVariableLike:()=>MA,isVariableLikeOrAccessor:()=>Qse,isVariableStatement:()=>Bc,isVoidExpression:()=>PS,isWatchSet:()=>Jwe,isWhileStatement:()=>JRe,isWhiteSpaceLike:()=>xh,isWhiteSpaceSingleLine:()=>Yp,isWithStatement:()=>Uue,isWriteAccess:()=>$I,isWriteOnlyAccess:()=>hW,isYieldExpression:()=>f3,jsxModeNeedsExplicitImport:()=>wY,keywordPart:()=>_d,last:()=>To,lastOrUndefined:()=>Os,length:()=>Fn,libMap:()=>HO,libs:()=>jO,lineBreakPart:()=>q2,linkNamePart:()=>$he,linkPart:()=>_Y,linkTextPart:()=>k7,listFiles:()=>Rq,loadModuleFromGlobalCache:()=>s_e,loadWithModeAwareCache:()=>gN,makeIdentifierFromModuleName:()=>Vse,makeImport:()=>Xg,makeImportIfNecessary:()=>jhe,makeStringLiteral:()=>S7,mangleScopedPackageName:()=>VL,map:()=>on,mapAllOrFail:()=>NU,mapDefined:()=>Zi,mapDefinedEntries:()=>bke,mapDefinedIterator:()=>VD,mapEntries:()=>uae,mapIterator:()=>RU,mapOneOrMany:()=>pge,mapToDisplayParts:()=>uv,matchFiles:()=>wW,matchPatternOrExact:()=>NW,matchedText:()=>Dae,matchesExclude:()=>G3,maybeBind:()=>ho,maybeSetLocalizedDiagnosticMessages:()=>mle,memoize:()=>zu,memoizeCached:()=>Eae,memoizeOne:()=>Jp,memoizeWeak:()=>wke,metadataHelper:()=>P4,min:()=>WU,minAndMax:()=>Nle,missingFileModifiedTime:()=>Eh,modifierToFlag:()=>yS,modifiersToFlags:()=>im,moduleOptionDeclaration:()=>NJ,moduleResolutionIsEqualTo:()=>wse,moduleResolutionNameAndModeGetter:()=>ZL,moduleResolutionOptionDeclarations:()=>U3,moduleResolutionSupportsPackageJsonExportsAndImports:()=>ES,moduleResolutionUsesNodeModules:()=>T7,moduleSpecifiers:()=>Q0,moveEmitHelpers:()=>gue,moveRangeEnd:()=>i4,moveRangePastDecorators:()=>$y,moveRangePastModifiers:()=>yp,moveRangePos:()=>fb,moveSyntheticComments:()=>pue,mutateMap:()=>t2,mutateMapSkippingNewValues:()=>Oh,needsParentheses:()=>bY,needsScopeMarker:()=>l6,newCaseClauseTracker:()=>J7,newPrivateEnvironment:()=>Y_e,noEmitNotification:()=>lN,noEmitSubstitution:()=>JL,noTransformers:()=>HK,noTruncationMaximumTruncationLength:()=>x4,nodeCanBeDecorated:()=>M6,nodeHasName:()=>Aw,nodeIsDecorated:()=>GA,nodeIsMissing:()=>rc,nodeIsPresent:()=>Nf,nodeIsSynthesized:()=>ws,nodeModuleNameResolver:()=>zfe,nodeModulesPathPart:()=>Wg,nodeNextJsonConfigResolver:()=>Jfe,nodeOrChildIsDecorated:()=>qw,nodeOverlapsWithStartEnd:()=>HX,nodePosToString:()=>swe,nodeSeenTracker:()=>z2,nodeStartsNewLexicalEnvironment:()=>HH,nodeToDisplayParts:()=>B6e,noop:()=>Ba,noopFileWatcher:()=>U2,noopPush:()=>E8,normalizePath:()=>So,normalizeSlashes:()=>Al,not:()=>y8,notImplemented:()=>Sa,notImplementedResolver:()=>LF,nullNodeConverters:()=>dz,nullParenthesizerRules:()=>uz,nullTransformationContext:()=>Bh,objectAllocator:()=>ml,operatorPart:()=>ok,optionDeclarations:()=>Fh,optionMapToObject:()=>bJ,optionsAffectingProgramStructure:()=>GJ,optionsForBuild:()=>UJ,optionsForWatch:()=>WO,optionsHaveChanges:()=>kA,optionsHaveModuleResolutionChanges:()=>Cse,or:()=>Kp,orderedRemoveItem:()=>m8,orderedRemoveItemAt:()=>y0,outFile:()=>Ss,packageIdToPackageName:()=>p6,packageIdToString:()=>gT,padLeft:()=>K1,padRight:()=>Mke,paramHelper:()=>M4,parameterIsThisKeyword:()=>G0,parameterNamePart:()=>Khe,parseBaseNodeFactory:()=>_J,parseBigInt:()=>Ple,parseBuildCommand:()=>QOe,parseCommandLine:()=>$Oe,parseCommandLineWorker:()=>hJ,parseConfigFileTextToJson:()=>vJ,parseConfigFileWithSystem:()=>L8e,parseConfigHostFromCompilerHostLike:()=>FF,parseCustomTypeOption:()=>O3,parseIsolatedEntityName:()=>JS,parseIsolatedJSDocComment:()=>Mde,parseJSDocTypeExpressionForTests:()=>zOe,parseJsonConfigFileContent:()=>cNe,parseJsonSourceFileConfigFileContent:()=>FO,parseJsonText:()=>RO,parseListTypeOption:()=>Kde,parseNodeFactory:()=>fm,parseNodeModuleFromPath:()=>XJ,parsePackageName:()=>ZJ,parsePseudoBigInt:()=>aL,parseValidBigInt:()=>BW,patchWriteFileEnsuringDirectory:()=>uoe,pathContainsNodeModules:()=>KS,pathIsAbsolute:()=>rI,pathIsBareSpecifier:()=>cj,pathIsRelative:()=>zd,patternText:()=>kae,perfLogger:()=>fp,performIncrementalCompilation:()=>D8e,performance:()=>ew,plainJSErrors:()=>jF,positionBelongsToNode:()=>WX,positionIsASICandidate:()=>N7,positionIsSynthesized:()=>vp,positionsAreOnSameLine:()=>Gf,preProcessFile:()=>qge,probablyUsesSemicolons:()=>P7,processCommentPragmas:()=>dJ,processPragmasIntoFields:()=>fJ,processTaggedTemplateExpression:()=>OK,programContainsEsModules:()=>Vhe,programContainsModules:()=>Uhe,projectReferenceIsEqualTo:()=>tH,propKeyHelper:()=>X4,propertyNamePart:()=>qhe,pseudoBigIntToString:()=>j0,punctuationPart:()=>Yl,pushIfUnique:()=>Rf,quote:()=>lk,quotePreferenceFromString:()=>sY,rangeContainsPosition:()=>RN,rangeContainsPositionExclusive:()=>ON,rangeContainsRange:()=>Od,rangeContainsRangeExclusive:()=>bhe,rangeContainsStartEnd:()=>NN,rangeEndIsOnSameLineAsRangeStart:()=>wR,rangeEndPositionsAreOnSameLine:()=>rle,rangeEquals:()=>GU,rangeIsOnSingleLine:()=>wT,rangeOfNode:()=>MW,rangeOfTypeParameters:()=>FW,rangeOverlapsWithStartEnd:()=>nk,rangeStartIsOnSameLineAsRangeEnd:()=>ile,rangeStartPositionsAreOnSameLine:()=>a4,readBuilderProgram:()=>QF,readConfigFile:()=>NO,readHelper:()=>K4,readJson:()=>KI,readJsonConfigFile:()=>$de,readJsonOrUndefined:()=>fW,realizeDiagnostics:()=>b$,reduceEachLeadingCommentRange:()=>goe,reduceEachTrailingCommentRange:()=>yoe,reduceLeft:()=>ou,reduceLeftIterator:()=>yke,reducePathComponents:()=>sT,refactor:()=>Nk,regExpEscape:()=>lRe,relativeComplement:()=>fae,removeAllComments:()=>eO,removeEmitHelper:()=>GRe,removeExtension:()=>VR,removeFileExtension:()=>ld,removeIgnoredPath:()=>Dq,removeMinAndVersionNumbers:()=>Lae,removeOptionality:()=>whe,removePrefix:()=>ZC,removeSuffix:()=>mA,removeTrailingDirectorySeparator:()=>cT,repeatString:()=>VN,replaceElement:()=>UU,resolutionExtensionIsTSOrJson:()=>jR,resolveConfigFileProjectName:()=>Hq,resolveJSModule:()=>jfe,resolveModuleName:()=>GL,resolveModuleNameFromCache:()=>FNe,resolvePackageNameToPackageJson:()=>wNe,resolvePath:()=>Fy,resolveProjectReferencePath:()=>QL,resolveTripleslashReference:()=>wF,resolveTypeReferenceDirective:()=>HJ,resolvingEmptyArray:()=>S4,restHelper:()=>H4,returnFalse:()=>m0,returnNoopFileWatcher:()=>SN,returnTrue:()=>h0,returnUndefined:()=>Qv,returnsPromise:()=>QY,runInitializersHelper:()=>G4,sameFlatMap:()=>lae,sameMap:()=>Tl,sameMapping:()=>APe,scanShebangTrivia:()=>yj,scanTokenAtPosition:()=>Xse,scanner:()=>$l,screenStartingMessageCodes:()=>$F,semanticDiagnosticsOptionDeclarations:()=>PJ,serializeCompilerOptions:()=>TJ,server:()=>dhe,servicesVersion:()=>m$,setCommentRange:()=>hl,setConfigFileInOptions:()=>xJ,setConstantValue:()=>hue,setEachParent:()=>a2,setEmitFlags:()=>Jn,setFunctionNameHelper:()=>Y4,setGetSourceFileAsHashVersioned:()=>YF,setIdentifierAutoGenerate:()=>aO,setIdentifierGeneratedImportReference:()=>bue,setIdentifierTypeArguments:()=>Ug,setInternalEmitFlags:()=>tO,setLocalizedDiagnosticMessages:()=>ple,setModuleDefaultHelper:()=>Z4,setNodeFlags:()=>Gle,setObjectAllocator:()=>_le,setOriginalNode:()=>Ir,setParent:()=>go,setParentRecursive:()=>Zy,setPrivateIdentifier:()=>KT,setResolvedModule:()=>kse,setResolvedTypeReferenceDirective:()=>Dse,setSnippetElement:()=>Ez,setSourceMapRange:()=>Ho,setStackTraceLimit:()=>dDe,setStartsOnNewLine:()=>vz,setSyntheticLeadingComments:()=>W0,setSyntheticTrailingComments:()=>d2,setSys:()=>bDe,setSysLog:()=>ooe,setTextRange:()=>it,setTextRangeEnd:()=>i2,setTextRangePos:()=>oL,setTextRangePosEnd:()=>om,setTextRangePosWidth:()=>sL,setTokenSourceMapRange:()=>_ue,setTypeNode:()=>yue,setUILocale:()=>Aae,setValueDeclaration:()=>iR,shouldAllowImportingTsExtension:()=>jL,shouldPreserveConstEnums:()=>U0,shouldUseUriStyleNodeCoreModules:()=>W7,showModuleSpecifier:()=>lle,signatureHasLiteralTypes:()=>_K,signatureHasRestParameter:()=>Xl,signatureToDisplayParts:()=>pY,single:()=>BU,singleElementArray:()=>oT,singleIterator:()=>Eke,singleOrMany:()=>zp,singleOrUndefined:()=>Wp,skipAlias:()=>wd,skipAssertions:()=>fOe,skipConstraint:()=>iY,skipOuterExpressions:()=>ql,skipParentheses:()=>vs,skipPartiallyEmittedExpressions:()=>i_,skipTrivia:()=>xo,skipTypeChecking:()=>iL,skipTypeParentheses:()=>FH,skipWhile:()=>Nae,sliceAfter:()=>PW,some:()=>vt,sort:()=>YC,sortAndDeduplicate:()=>WD,sortAndDeduplicateDiagnostics:()=>bA,sourceFileAffectingCompilerOptions:()=>V3,sourceFileMayBeEmitted:()=>mS,sourceMapCommentRegExp:()=>hF,sourceMapCommentRegExpDontCareLineStart:()=>TK,spacePart:()=>Qs,spanMap:()=>c8,spreadArrayHelper:()=>q4,stableSort:()=>Ag,startEndContainsRange:()=>jX,startEndOverlapsWithStartEnd:()=>l7,startOnNewLine:()=>mu,startTracing:()=>eoe,startsWith:()=>na,startsWithDirectory:()=>fj,startsWithUnderscore:()=>DY,startsWithUseStrict:()=>nde,stringContains:()=>jl,stringContainsAt:()=>yge,stringToToken:()=>uT,stripQuotes:()=>l_,supportedDeclarationExtensions:()=>I4,supportedJSExtensions:()=>cz,supportedJSExtensionsFlat:()=>fL,supportedLocaleDirectories:()=>Qj,supportedTSExtensions:()=>l2,supportedTSExtensionsFlat:()=>sz,supportedTSImplementationExtensions:()=>L4,suppressLeadingAndTrailingTrivia:()=>pd,suppressLeadingTrivia:()=>D7,suppressTrailingTrivia:()=>ige,symbolEscapedNameNoDefault:()=>A7,symbolName:()=>fc,symbolNameNoDefault:()=>x7,symbolPart:()=>Jhe,symbolToDisplayParts:()=>sk,syntaxMayBeASICandidate:()=>NY,syntaxRequiresTrailingSemicolonOrASI:()=>O7,sys:()=>xl,sysLog:()=>sw,tagNamesAreEquivalent:()=>yb,takeWhile:()=>v8,targetOptionDeclaration:()=>JO,templateObjectHelper:()=>J4,testFormatSettings:()=>_he,textChangeRangeIsUnchanged:()=>Moe,textChangeRangeNewSpan:()=>dI,textChanges:()=>nr,textOrKeywordPart:()=>fY,textPart:()=>ef,textRangeContainsPositionInclusive:()=>Y8,textSpanContainsPosition:()=>bj,textSpanContainsTextSpan:()=>Roe,textSpanEnd:()=>wl,textSpanIntersection:()=>Poe,textSpanIntersectsWith:()=>$8,textSpanIntersectsWithPosition:()=>Noe,textSpanIntersectsWithTextSpan:()=>FDe,textSpanIsEmpty:()=>woe,textSpanOverlap:()=>Ooe,textSpanOverlapsWith:()=>MDe,textSpansEqual:()=>K2,textToKeywordObj:()=>Tw,timestamp:()=>Ms,toArray:()=>XD,toBuilderFileEmit:()=>lme,toBuilderStateFileInfoForMultiEmit:()=>cme,toEditorSettings:()=>nP,toFileNameLowerCase:()=>t_,toLowerCase:()=>bae,toPath:()=>Ts,toProgramEmitPending:()=>ume,tokenIsIdentifierOrKeyword:()=>Su,tokenIsIdentifierOrKeywordOrGreaterThan:()=>moe,tokenToString:()=>Xa,trace:()=>Xi,tracing:()=>ai,tracingEnabled:()=>tw,transform:()=>p3e,transformClassFields:()=>tpe,transformDeclarations:()=>UK,transformECMAScriptModule:()=>GK,transformES2015:()=>mpe,transformES2016:()=>_pe,transformES2017:()=>ape,transformES2018:()=>ope,transformES2019:()=>spe,transformES2020:()=>cpe,transformES2021:()=>lpe,transformES5:()=>hpe,transformESDecorators:()=>ipe,transformESNext:()=>upe,transformGenerators:()=>gpe,transformJsx:()=>dpe,transformLegacyDecorators:()=>rpe,transformModule:()=>FK,transformNodeModule:()=>bpe,transformNodes:()=>uN,transformSystemModule:()=>vpe,transformTypeScript:()=>Z_e,transpile:()=>U4e,transpileModule:()=>iye,transpileOptionValueCompilerOptions:()=>BJ,trimString:()=>v0,trimStringEnd:()=>QD,trimStringStart:()=>eI,tryAddToSet:()=>_0,tryAndIgnoreErrors:()=>B7,tryCast:()=>zr,tryDirectoryExists:()=>G7,tryExtractTSExtension:()=>r4,tryFileExists:()=>F7,tryGetClassExtendingExpressionWithTypeArguments:()=>lW,tryGetClassImplementingOrExtendingExpressionWithTypeArguments:()=>uW,tryGetDirectories:()=>M7,tryGetExtensionFromPath:()=>Hm,tryGetImportFromModuleSpecifier:()=>sR,tryGetJSDocSatisfiesTypeNode:()=>T4,tryGetModuleNameFromFile:()=>AO,tryGetModuleSpecifierFromDeclaration:()=>aR,tryGetNativePerformanceHooks:()=>Yae,tryGetPropertyAccessOrIdentifierToString:()=>DR,tryGetPropertyNameOfBindingOrAssignmentElement:()=>A3,tryGetSourceMappingURL:()=>G_e,tryGetTextOfPropertyName:()=>T6,tryIOAndConsumeErrors:()=>U7,tryParsePattern:()=>r2,tryParsePatterns:()=>g4,tryParseRawSourceMap:()=>bK,tryReadDirectory:()=>xY,tryReadFile:()=>PO,tryRemoveDirectoryPrefix:()=>IW,tryRemoveExtension:()=>Ole,tryRemovePrefix:()=>KU,tryRemoveSuffix:()=>Iae,typeAcquisitionDeclarations:()=>H3,typeAliasNamePart:()=>Xhe,typeDirectiveIsEqualTo:()=>Rse,typeKeywords:()=>K7,typeParameterNamePart:()=>Yhe,typeReferenceResolutionNameAndModeGetter:()=>vN,typeToDisplayParts:()=>JN,unchangedPollThresholds:()=>uw,unchangedTextChangeRange:()=>$j,unescapeLeadingUnderscores:()=>Gi,unmangleScopedPackageName:()=>iF,unorderedRemoveItem:()=>$D,unorderedRemoveItemAt:()=>zU,unreachableCodeIsError:()=>Tle,unusedLabelIsError:()=>Sle,unwrapInnermostStatementOfLabel:()=>xH,updateErrorForNoInputFiles:()=>CJ,updateLanguageServiceSourceFile:()=>_$,updateMissingFilePathsWatch:()=>Gpe,updatePackageJsonWatch:()=>YMe,updateResolutionField:()=>P2,updateSharedExtendedConfigFileWatcher:()=>YK,updateSourceFile:()=>uJ,updateWatchingWildcardDirectories:()=>kF,usesExtensionsOnImports:()=>Dle,usingSingleLineStringWriter:()=>xI,utf16EncodeAsString:()=>uI,validateLocaleAndSetLanguage:()=>UDe,valuesHelper:()=>$4,version:()=>wf,versionMajorMinor:()=>Sg,visitArray:()=>vK,visitCommaListElements:()=>oN,visitEachChild:()=>xn,visitFunctionBody:()=>Qd,visitIterationBody:()=>Vf,visitLexicalEnvironment:()=>mF,visitNode:()=>$e,visitNodes:()=>On,visitParameterList:()=>Sc,walkUpBindingElementsAndPatterns:()=>EA,walkUpLexicalEnvironments:()=>X_e,walkUpOuterExpressions:()=>rde,walkUpParenthesizedExpressions:()=>qy,walkUpParenthesizedTypes:()=>fR,walkUpParenthesizedTypesAndGetParentAndChild:()=>Tce,whitespaceOrMapCommentRegExp:()=>gF,writeCommentRange:()=>QA,writeFile:()=>UI,writeFileEnsuringDirectories:()=>nW,zipToModeAwareCache:()=>qJ,zipWith:()=>kU});var uxe=gt({\"src/typescript/_namespaces/ts.ts\"(){\"use strict\";fa(),r7(),Fr(),HG()}}),dJe=hs({\"src/typescript/typescript.ts\"(e,t){uxe(),uxe(),typeof console<\"u\"&&(L.loggingHost={log(r,i){switch(r){case 1:return console.error(i);case 2:return console.warn(i);case 3:return console.log(i);case 4:return console.log(i)}}}),t.exports=lxe}});return dJe()})();typeof IU<\"u\"&&IU.exports&&(IU.exports=f0);var Eit=f0.createClassifier,iae=f0.createLanguageService,Tit=f0.displayPartsToString,Sit=f0.EndOfLineState,xit=f0.flattenDiagnosticMessageText,Ait=f0.IndentStyle,dA=f0.ScriptKind,Cit=f0.ScriptTarget,Iit=f0.TokenClass,aae=f0;var $i={};$i[\"lib.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es5\" />\n/// <reference lib=\"dom\" />\n/// <reference lib=\"webworker.importscripts\" />\n/// <reference lib=\"scripthost\" />\n`;$i[\"lib.decorators.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/**\n * The decorator context types provided to class element decorators.\n */\ntype ClassMemberDecoratorContext =\n    | ClassMethodDecoratorContext\n    | ClassGetterDecoratorContext\n    | ClassSetterDecoratorContext\n    | ClassFieldDecoratorContext\n    | ClassAccessorDecoratorContext\n    ;\n\n/**\n * The decorator context types provided to any decorator.\n */\ntype DecoratorContext =\n    | ClassDecoratorContext\n    | ClassMemberDecoratorContext\n    ;\n\n/**\n * Context provided to a class decorator.\n * @template Class The type of the decorated class associated with this context.\n */\ninterface ClassDecoratorContext<\n    Class extends abstract new (...args: any) => any = abstract new (...args: any) => any,\n> {\n    /** The kind of element that was decorated. */\n    readonly kind: \"class\";\n\n    /** The name of the decorated class. */\n    readonly name: string | undefined;\n\n    /**\n     * Adds a callback to be invoked after the class definition has been finalized.\n     *\n     * @example\n     * \\`\\`\\`ts\n     * function customElement(name: string): ClassDecoratorFunction {\n     *   return (target, context) => {\n     *     context.addInitializer(function () {\n     *       customElements.define(name, this);\n     *     });\n     *   }\n     * }\n     *\n     * @customElement(\"my-element\")\n     * class MyElement {}\n     * \\`\\`\\`\n     */\n    addInitializer(initializer: (this: Class) => void): void;\n}\n\n/**\n * Context provided to a class method decorator.\n * @template This The type on which the class element will be defined. For a static class element, this will be\n * the type of the constructor. For a non-static class element, this will be the type of the instance.\n * @template Value The type of the decorated class method.\n */\ninterface ClassMethodDecoratorContext<\n    This = unknown,\n    Value extends (this: This, ...args: any) => any = (this: This, ...args: any) => any,\n> {\n    /** The kind of class element that was decorated. */\n    readonly kind: \"method\";\n\n    /** The name of the decorated class element. */\n    readonly name: string | symbol;\n\n    /** A value indicating whether the class element is a static (\\`true\\`) or instance (\\`false\\`) element. */\n    readonly static: boolean;\n\n    /** A value indicating whether the class element has a private name. */\n    readonly private: boolean;\n\n    /** An object that can be used to access the current value of the class element at runtime. */\n    readonly access: {\n        /**\n         * Determines whether an object has a property with the same name as the decorated element.\n         */\n        has(object: This): boolean;\n        /**\n         * Gets the current value of the method from the provided object.\n         *\n         * @example\n         * let fn = context.access.get(instance);\n         */\n        get(object: This): Value;\n    };\n\n    /**\n     * Adds a callback to be invoked either before static initializers are run (when\n     * decorating a \\`static\\` element), or before instance initializers are run (when\n     * decorating a non-\\`static\\` element).\n     *\n     * @example\n     * \\`\\`\\`ts\n     * const bound: ClassMethodDecoratorFunction = (value, context) {\n     *   if (context.private) throw new TypeError(\"Not supported on private methods.\");\n     *   context.addInitializer(function () {\n     *     this[context.name] = this[context.name].bind(this);\n     *   });\n     * }\n     *\n     * class C {\n     *   message = \"Hello\";\n     *\n     *   @bound\n     *   m() {\n     *     console.log(this.message);\n     *   }\n     * }\n     * \\`\\`\\`\n     */\n    addInitializer(initializer: (this: This) => void): void;\n}\n\n/**\n * Context provided to a class getter decorator.\n * @template This The type on which the class element will be defined. For a static class element, this will be\n * the type of the constructor. For a non-static class element, this will be the type of the instance.\n * @template Value The property type of the decorated class getter.\n */\ninterface ClassGetterDecoratorContext<\n    This = unknown,\n    Value = unknown,\n> {\n    /** The kind of class element that was decorated. */\n    readonly kind: \"getter\";\n\n    /** The name of the decorated class element. */\n    readonly name: string | symbol;\n\n    /** A value indicating whether the class element is a static (\\`true\\`) or instance (\\`false\\`) element. */\n    readonly static: boolean;\n\n    /** A value indicating whether the class element has a private name. */\n    readonly private: boolean;\n\n    /** An object that can be used to access the current value of the class element at runtime. */\n    readonly access: {\n        /**\n         * Determines whether an object has a property with the same name as the decorated element.\n         */\n        has(object: This): boolean;\n        /**\n         * Invokes the getter on the provided object.\n         *\n         * @example\n         * let value = context.access.get(instance);\n         */\n        get(object: This): Value;\n    };\n\n    /**\n     * Adds a callback to be invoked either before static initializers are run (when\n     * decorating a \\`static\\` element), or before instance initializers are run (when\n     * decorating a non-\\`static\\` element).\n     */\n    addInitializer(initializer: (this: This) => void): void;\n}\n\n/**\n * Context provided to a class setter decorator.\n * @template This The type on which the class element will be defined. For a static class element, this will be\n * the type of the constructor. For a non-static class element, this will be the type of the instance.\n * @template Value The type of the decorated class setter.\n */\ninterface ClassSetterDecoratorContext<\n    This = unknown,\n    Value = unknown,\n> {\n    /** The kind of class element that was decorated. */\n    readonly kind: \"setter\";\n\n    /** The name of the decorated class element. */\n    readonly name: string | symbol;\n\n    /** A value indicating whether the class element is a static (\\`true\\`) or instance (\\`false\\`) element. */\n    readonly static: boolean;\n\n    /** A value indicating whether the class element has a private name. */\n    readonly private: boolean;\n\n    /** An object that can be used to access the current value of the class element at runtime. */\n    readonly access: {\n        /**\n         * Determines whether an object has a property with the same name as the decorated element.\n         */\n        has(object: This): boolean;\n        /**\n         * Invokes the setter on the provided object.\n         *\n         * @example\n         * context.access.set(instance, value);\n         */\n        set(object: This, value: Value): void;\n    };\n\n    /**\n     * Adds a callback to be invoked either before static initializers are run (when\n     * decorating a \\`static\\` element), or before instance initializers are run (when\n     * decorating a non-\\`static\\` element).\n     */\n    addInitializer(initializer: (this: This) => void): void;\n}\n\n/**\n * Context provided to a class \\`accessor\\` field decorator.\n * @template This The type on which the class element will be defined. For a static class element, this will be\n * the type of the constructor. For a non-static class element, this will be the type of the instance.\n * @template Value The type of decorated class field.\n */\ninterface ClassAccessorDecoratorContext<\n    This = unknown,\n    Value = unknown,\n> {\n    /** The kind of class element that was decorated. */\n    readonly kind: \"accessor\";\n\n    /** The name of the decorated class element. */\n    readonly name: string | symbol;\n\n    /** A value indicating whether the class element is a static (\\`true\\`) or instance (\\`false\\`) element. */\n    readonly static: boolean;\n\n    /** A value indicating whether the class element has a private name. */\n    readonly private: boolean;\n\n    /** An object that can be used to access the current value of the class element at runtime. */\n    readonly access: {\n        /**\n         * Determines whether an object has a property with the same name as the decorated element.\n         */\n        has(object: This): boolean;\n\n        /**\n         * Invokes the getter on the provided object.\n         *\n         * @example\n         * let value = context.access.get(instance);\n         */\n        get(object: This): Value;\n\n        /**\n         * Invokes the setter on the provided object.\n         *\n         * @example\n         * context.access.set(instance, value);\n         */\n        set(object: This, value: Value): void;\n    };\n\n    /**\n     * Adds a callback to be invoked either before static initializers are run (when\n     * decorating a \\`static\\` element), or before instance initializers are run (when\n     * decorating a non-\\`static\\` element).\n     */\n    addInitializer(initializer: (this: This) => void): void;\n}\n\n/**\n * Describes the target provided to class \\`accessor\\` field decorators.\n * @template This The \\`this\\` type to which the target applies.\n * @template Value The property type for the class \\`accessor\\` field.\n */\ninterface ClassAccessorDecoratorTarget<This, Value> {\n    /**\n     * Invokes the getter that was defined prior to decorator application.\n     *\n     * @example\n     * let value = target.get.call(instance);\n     */\n    get(this: This): Value;\n\n    /**\n     * Invokes the setter that was defined prior to decorator application.\n     *\n     * @example\n     * target.set.call(instance, value);\n     */\n    set(this: This, value: Value): void;\n}\n\n/**\n * Describes the allowed return value from a class \\`accessor\\` field decorator.\n * @template This The \\`this\\` type to which the target applies.\n * @template Value The property type for the class \\`accessor\\` field.\n */\ninterface ClassAccessorDecoratorResult<This, Value> {\n    /**\n     * An optional replacement getter function. If not provided, the existing getter function is used instead.\n     */\n    get?(this: This): Value;\n\n    /**\n     * An optional replacement setter function. If not provided, the existing setter function is used instead.\n     */\n    set?(this: This, value: Value): void;\n\n    /**\n     * An optional initializer mutator that is invoked when the underlying field initializer is evaluated.\n     * @param value The incoming initializer value.\n     * @returns The replacement initializer value.\n     */\n    init?(this: This, value: Value): Value;\n}\n\n/**\n * Context provided to a class field decorator.\n * @template This The type on which the class element will be defined. For a static class element, this will be\n * the type of the constructor. For a non-static class element, this will be the type of the instance.\n * @template Value The type of the decorated class field.\n */\ninterface ClassFieldDecoratorContext<\n    This = unknown,\n    Value = unknown,\n> {\n    /** The kind of class element that was decorated. */\n    readonly kind: \"field\";\n\n    /** The name of the decorated class element. */\n    readonly name: string | symbol;\n\n    /** A value indicating whether the class element is a static (\\`true\\`) or instance (\\`false\\`) element. */\n    readonly static: boolean;\n\n    /** A value indicating whether the class element has a private name. */\n    readonly private: boolean;\n\n    /** An object that can be used to access the current value of the class element at runtime. */\n    readonly access: {\n        /**\n         * Determines whether an object has a property with the same name as the decorated element.\n         */\n        has(object: This): boolean;\n\n        /**\n         * Gets the value of the field on the provided object.\n         */\n        get(object: This): Value;\n\n        /**\n         * Sets the value of the field on the provided object.\n         */\n        set(object: This, value: Value): void;\n    };\n\n    /**\n     * Adds a callback to be invoked either before static initializers are run (when\n     * decorating a \\`static\\` element), or before instance initializers are run (when\n     * decorating a non-\\`static\\` element).\n     */\n    addInitializer(initializer: (this: This) => void): void;\n}\n`;$i[\"lib.decorators.legacy.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ndeclare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\ndeclare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;\ndeclare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;\ndeclare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n`;$i[\"lib.dom.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/////////////////////////////\n/// Window APIs\n/////////////////////////////\n\ninterface AddEventListenerOptions extends EventListenerOptions {\n    once?: boolean;\n    passive?: boolean;\n    signal?: AbortSignal;\n}\n\ninterface AesCbcParams extends Algorithm {\n    iv: BufferSource;\n}\n\ninterface AesCtrParams extends Algorithm {\n    counter: BufferSource;\n    length: number;\n}\n\ninterface AesDerivedKeyParams extends Algorithm {\n    length: number;\n}\n\ninterface AesGcmParams extends Algorithm {\n    additionalData?: BufferSource;\n    iv: BufferSource;\n    tagLength?: number;\n}\n\ninterface AesKeyAlgorithm extends KeyAlgorithm {\n    length: number;\n}\n\ninterface AesKeyGenParams extends Algorithm {\n    length: number;\n}\n\ninterface Algorithm {\n    name: string;\n}\n\ninterface AnalyserOptions extends AudioNodeOptions {\n    fftSize?: number;\n    maxDecibels?: number;\n    minDecibels?: number;\n    smoothingTimeConstant?: number;\n}\n\ninterface AnimationEventInit extends EventInit {\n    animationName?: string;\n    elapsedTime?: number;\n    pseudoElement?: string;\n}\n\ninterface AnimationPlaybackEventInit extends EventInit {\n    currentTime?: CSSNumberish | null;\n    timelineTime?: CSSNumberish | null;\n}\n\ninterface AssignedNodesOptions {\n    flatten?: boolean;\n}\n\ninterface AudioBufferOptions {\n    length: number;\n    numberOfChannels?: number;\n    sampleRate: number;\n}\n\ninterface AudioBufferSourceOptions {\n    buffer?: AudioBuffer | null;\n    detune?: number;\n    loop?: boolean;\n    loopEnd?: number;\n    loopStart?: number;\n    playbackRate?: number;\n}\n\ninterface AudioConfiguration {\n    bitrate?: number;\n    channels?: string;\n    contentType: string;\n    samplerate?: number;\n    spatialRendering?: boolean;\n}\n\ninterface AudioContextOptions {\n    latencyHint?: AudioContextLatencyCategory | number;\n    sampleRate?: number;\n}\n\ninterface AudioNodeOptions {\n    channelCount?: number;\n    channelCountMode?: ChannelCountMode;\n    channelInterpretation?: ChannelInterpretation;\n}\n\ninterface AudioProcessingEventInit extends EventInit {\n    inputBuffer: AudioBuffer;\n    outputBuffer: AudioBuffer;\n    playbackTime: number;\n}\n\ninterface AudioTimestamp {\n    contextTime?: number;\n    performanceTime?: DOMHighResTimeStamp;\n}\n\ninterface AudioWorkletNodeOptions extends AudioNodeOptions {\n    numberOfInputs?: number;\n    numberOfOutputs?: number;\n    outputChannelCount?: number[];\n    parameterData?: Record<string, number>;\n    processorOptions?: any;\n}\n\ninterface AuthenticationExtensionsClientInputs {\n    appid?: string;\n    credProps?: boolean;\n    hmacCreateSecret?: boolean;\n}\n\ninterface AuthenticationExtensionsClientOutputs {\n    appid?: boolean;\n    credProps?: CredentialPropertiesOutput;\n    hmacCreateSecret?: boolean;\n}\n\ninterface AuthenticatorSelectionCriteria {\n    authenticatorAttachment?: AuthenticatorAttachment;\n    requireResidentKey?: boolean;\n    residentKey?: ResidentKeyRequirement;\n    userVerification?: UserVerificationRequirement;\n}\n\ninterface BiquadFilterOptions extends AudioNodeOptions {\n    Q?: number;\n    detune?: number;\n    frequency?: number;\n    gain?: number;\n    type?: BiquadFilterType;\n}\n\ninterface BlobEventInit {\n    data: Blob;\n    timecode?: DOMHighResTimeStamp;\n}\n\ninterface BlobPropertyBag {\n    endings?: EndingType;\n    type?: string;\n}\n\ninterface CSSStyleSheetInit {\n    baseURL?: string;\n    disabled?: boolean;\n    media?: MediaList | string;\n}\n\ninterface CacheQueryOptions {\n    ignoreMethod?: boolean;\n    ignoreSearch?: boolean;\n    ignoreVary?: boolean;\n}\n\ninterface CanvasRenderingContext2DSettings {\n    alpha?: boolean;\n    colorSpace?: PredefinedColorSpace;\n    desynchronized?: boolean;\n    willReadFrequently?: boolean;\n}\n\ninterface ChannelMergerOptions extends AudioNodeOptions {\n    numberOfInputs?: number;\n}\n\ninterface ChannelSplitterOptions extends AudioNodeOptions {\n    numberOfOutputs?: number;\n}\n\ninterface CheckVisibilityOptions {\n    checkOpacity?: boolean;\n    checkVisibilityCSS?: boolean;\n}\n\ninterface ClientQueryOptions {\n    includeUncontrolled?: boolean;\n    type?: ClientTypes;\n}\n\ninterface ClipboardEventInit extends EventInit {\n    clipboardData?: DataTransfer | null;\n}\n\ninterface ClipboardItemOptions {\n    presentationStyle?: PresentationStyle;\n}\n\ninterface CloseEventInit extends EventInit {\n    code?: number;\n    reason?: string;\n    wasClean?: boolean;\n}\n\ninterface CompositionEventInit extends UIEventInit {\n    data?: string;\n}\n\ninterface ComputedEffectTiming extends EffectTiming {\n    activeDuration?: CSSNumberish;\n    currentIteration?: number | null;\n    endTime?: CSSNumberish;\n    localTime?: CSSNumberish | null;\n    progress?: number | null;\n    startTime?: CSSNumberish;\n}\n\ninterface ComputedKeyframe {\n    composite: CompositeOperationOrAuto;\n    computedOffset: number;\n    easing: string;\n    offset: number | null;\n    [property: string]: string | number | null | undefined;\n}\n\ninterface ConstantSourceOptions {\n    offset?: number;\n}\n\ninterface ConstrainBooleanParameters {\n    exact?: boolean;\n    ideal?: boolean;\n}\n\ninterface ConstrainDOMStringParameters {\n    exact?: string | string[];\n    ideal?: string | string[];\n}\n\ninterface ConstrainDoubleRange extends DoubleRange {\n    exact?: number;\n    ideal?: number;\n}\n\ninterface ConstrainULongRange extends ULongRange {\n    exact?: number;\n    ideal?: number;\n}\n\ninterface ConvolverOptions extends AudioNodeOptions {\n    buffer?: AudioBuffer | null;\n    disableNormalization?: boolean;\n}\n\ninterface CredentialCreationOptions {\n    publicKey?: PublicKeyCredentialCreationOptions;\n    signal?: AbortSignal;\n}\n\ninterface CredentialPropertiesOutput {\n    rk?: boolean;\n}\n\ninterface CredentialRequestOptions {\n    mediation?: CredentialMediationRequirement;\n    publicKey?: PublicKeyCredentialRequestOptions;\n    signal?: AbortSignal;\n}\n\ninterface CryptoKeyPair {\n    privateKey: CryptoKey;\n    publicKey: CryptoKey;\n}\n\ninterface CustomEventInit<T = any> extends EventInit {\n    detail?: T;\n}\n\ninterface DOMMatrix2DInit {\n    a?: number;\n    b?: number;\n    c?: number;\n    d?: number;\n    e?: number;\n    f?: number;\n    m11?: number;\n    m12?: number;\n    m21?: number;\n    m22?: number;\n    m41?: number;\n    m42?: number;\n}\n\ninterface DOMMatrixInit extends DOMMatrix2DInit {\n    is2D?: boolean;\n    m13?: number;\n    m14?: number;\n    m23?: number;\n    m24?: number;\n    m31?: number;\n    m32?: number;\n    m33?: number;\n    m34?: number;\n    m43?: number;\n    m44?: number;\n}\n\ninterface DOMPointInit {\n    w?: number;\n    x?: number;\n    y?: number;\n    z?: number;\n}\n\ninterface DOMQuadInit {\n    p1?: DOMPointInit;\n    p2?: DOMPointInit;\n    p3?: DOMPointInit;\n    p4?: DOMPointInit;\n}\n\ninterface DOMRectInit {\n    height?: number;\n    width?: number;\n    x?: number;\n    y?: number;\n}\n\ninterface DelayOptions extends AudioNodeOptions {\n    delayTime?: number;\n    maxDelayTime?: number;\n}\n\ninterface DeviceMotionEventAccelerationInit {\n    x?: number | null;\n    y?: number | null;\n    z?: number | null;\n}\n\ninterface DeviceMotionEventInit extends EventInit {\n    acceleration?: DeviceMotionEventAccelerationInit;\n    accelerationIncludingGravity?: DeviceMotionEventAccelerationInit;\n    interval?: number;\n    rotationRate?: DeviceMotionEventRotationRateInit;\n}\n\ninterface DeviceMotionEventRotationRateInit {\n    alpha?: number | null;\n    beta?: number | null;\n    gamma?: number | null;\n}\n\ninterface DeviceOrientationEventInit extends EventInit {\n    absolute?: boolean;\n    alpha?: number | null;\n    beta?: number | null;\n    gamma?: number | null;\n}\n\ninterface DisplayMediaStreamOptions {\n    audio?: boolean | MediaTrackConstraints;\n    video?: boolean | MediaTrackConstraints;\n}\n\ninterface DocumentTimelineOptions {\n    originTime?: DOMHighResTimeStamp;\n}\n\ninterface DoubleRange {\n    max?: number;\n    min?: number;\n}\n\ninterface DragEventInit extends MouseEventInit {\n    dataTransfer?: DataTransfer | null;\n}\n\ninterface DynamicsCompressorOptions extends AudioNodeOptions {\n    attack?: number;\n    knee?: number;\n    ratio?: number;\n    release?: number;\n    threshold?: number;\n}\n\ninterface EcKeyAlgorithm extends KeyAlgorithm {\n    namedCurve: NamedCurve;\n}\n\ninterface EcKeyGenParams extends Algorithm {\n    namedCurve: NamedCurve;\n}\n\ninterface EcKeyImportParams extends Algorithm {\n    namedCurve: NamedCurve;\n}\n\ninterface EcdhKeyDeriveParams extends Algorithm {\n    public: CryptoKey;\n}\n\ninterface EcdsaParams extends Algorithm {\n    hash: HashAlgorithmIdentifier;\n}\n\ninterface EffectTiming {\n    delay?: number;\n    direction?: PlaybackDirection;\n    duration?: number | string;\n    easing?: string;\n    endDelay?: number;\n    fill?: FillMode;\n    iterationStart?: number;\n    iterations?: number;\n    playbackRate?: number;\n}\n\ninterface ElementCreationOptions {\n    is?: string;\n}\n\ninterface ElementDefinitionOptions {\n    extends?: string;\n}\n\ninterface ErrorEventInit extends EventInit {\n    colno?: number;\n    error?: any;\n    filename?: string;\n    lineno?: number;\n    message?: string;\n}\n\ninterface EventInit {\n    bubbles?: boolean;\n    cancelable?: boolean;\n    composed?: boolean;\n}\n\ninterface EventListenerOptions {\n    capture?: boolean;\n}\n\ninterface EventModifierInit extends UIEventInit {\n    altKey?: boolean;\n    ctrlKey?: boolean;\n    metaKey?: boolean;\n    modifierAltGraph?: boolean;\n    modifierCapsLock?: boolean;\n    modifierFn?: boolean;\n    modifierFnLock?: boolean;\n    modifierHyper?: boolean;\n    modifierNumLock?: boolean;\n    modifierScrollLock?: boolean;\n    modifierSuper?: boolean;\n    modifierSymbol?: boolean;\n    modifierSymbolLock?: boolean;\n    shiftKey?: boolean;\n}\n\ninterface EventSourceInit {\n    withCredentials?: boolean;\n}\n\ninterface FilePropertyBag extends BlobPropertyBag {\n    lastModified?: number;\n}\n\ninterface FileSystemFlags {\n    create?: boolean;\n    exclusive?: boolean;\n}\n\ninterface FileSystemGetDirectoryOptions {\n    create?: boolean;\n}\n\ninterface FileSystemGetFileOptions {\n    create?: boolean;\n}\n\ninterface FileSystemRemoveOptions {\n    recursive?: boolean;\n}\n\ninterface FocusEventInit extends UIEventInit {\n    relatedTarget?: EventTarget | null;\n}\n\ninterface FocusOptions {\n    preventScroll?: boolean;\n}\n\ninterface FontFaceDescriptors {\n    ascentOverride?: string;\n    descentOverride?: string;\n    display?: FontDisplay;\n    featureSettings?: string;\n    lineGapOverride?: string;\n    stretch?: string;\n    style?: string;\n    unicodeRange?: string;\n    variant?: string;\n    weight?: string;\n}\n\ninterface FontFaceSetLoadEventInit extends EventInit {\n    fontfaces?: FontFace[];\n}\n\ninterface FormDataEventInit extends EventInit {\n    formData: FormData;\n}\n\ninterface FullscreenOptions {\n    navigationUI?: FullscreenNavigationUI;\n}\n\ninterface GainOptions extends AudioNodeOptions {\n    gain?: number;\n}\n\ninterface GamepadEventInit extends EventInit {\n    gamepad: Gamepad;\n}\n\ninterface GetAnimationsOptions {\n    subtree?: boolean;\n}\n\ninterface GetNotificationOptions {\n    tag?: string;\n}\n\ninterface GetRootNodeOptions {\n    composed?: boolean;\n}\n\ninterface HashChangeEventInit extends EventInit {\n    newURL?: string;\n    oldURL?: string;\n}\n\ninterface HkdfParams extends Algorithm {\n    hash: HashAlgorithmIdentifier;\n    info: BufferSource;\n    salt: BufferSource;\n}\n\ninterface HmacImportParams extends Algorithm {\n    hash: HashAlgorithmIdentifier;\n    length?: number;\n}\n\ninterface HmacKeyAlgorithm extends KeyAlgorithm {\n    hash: KeyAlgorithm;\n    length: number;\n}\n\ninterface HmacKeyGenParams extends Algorithm {\n    hash: HashAlgorithmIdentifier;\n    length?: number;\n}\n\ninterface IDBDatabaseInfo {\n    name?: string;\n    version?: number;\n}\n\ninterface IDBIndexParameters {\n    multiEntry?: boolean;\n    unique?: boolean;\n}\n\ninterface IDBObjectStoreParameters {\n    autoIncrement?: boolean;\n    keyPath?: string | string[] | null;\n}\n\ninterface IDBTransactionOptions {\n    durability?: IDBTransactionDurability;\n}\n\ninterface IDBVersionChangeEventInit extends EventInit {\n    newVersion?: number | null;\n    oldVersion?: number;\n}\n\ninterface IIRFilterOptions extends AudioNodeOptions {\n    feedback: number[];\n    feedforward: number[];\n}\n\ninterface IdleRequestOptions {\n    timeout?: number;\n}\n\ninterface ImageBitmapOptions {\n    colorSpaceConversion?: ColorSpaceConversion;\n    imageOrientation?: ImageOrientation;\n    premultiplyAlpha?: PremultiplyAlpha;\n    resizeHeight?: number;\n    resizeQuality?: ResizeQuality;\n    resizeWidth?: number;\n}\n\ninterface ImageBitmapRenderingContextSettings {\n    alpha?: boolean;\n}\n\ninterface ImageDataSettings {\n    colorSpace?: PredefinedColorSpace;\n}\n\ninterface ImageEncodeOptions {\n    quality?: number;\n    type?: string;\n}\n\ninterface ImportMeta {\n    url: string;\n}\n\ninterface InputEventInit extends UIEventInit {\n    data?: string | null;\n    dataTransfer?: DataTransfer | null;\n    inputType?: string;\n    isComposing?: boolean;\n    targetRanges?: StaticRange[];\n}\n\ninterface IntersectionObserverEntryInit {\n    boundingClientRect: DOMRectInit;\n    intersectionRatio: number;\n    intersectionRect: DOMRectInit;\n    isIntersecting: boolean;\n    rootBounds: DOMRectInit | null;\n    target: Element;\n    time: DOMHighResTimeStamp;\n}\n\ninterface IntersectionObserverInit {\n    root?: Element | Document | null;\n    rootMargin?: string;\n    threshold?: number | number[];\n}\n\ninterface JsonWebKey {\n    alg?: string;\n    crv?: string;\n    d?: string;\n    dp?: string;\n    dq?: string;\n    e?: string;\n    ext?: boolean;\n    k?: string;\n    key_ops?: string[];\n    kty?: string;\n    n?: string;\n    oth?: RsaOtherPrimesInfo[];\n    p?: string;\n    q?: string;\n    qi?: string;\n    use?: string;\n    x?: string;\n    y?: string;\n}\n\ninterface KeyAlgorithm {\n    name: string;\n}\n\ninterface KeyboardEventInit extends EventModifierInit {\n    /** @deprecated */\n    charCode?: number;\n    code?: string;\n    isComposing?: boolean;\n    key?: string;\n    /** @deprecated */\n    keyCode?: number;\n    location?: number;\n    repeat?: boolean;\n}\n\ninterface Keyframe {\n    composite?: CompositeOperationOrAuto;\n    easing?: string;\n    offset?: number | null;\n    [property: string]: string | number | null | undefined;\n}\n\ninterface KeyframeAnimationOptions extends KeyframeEffectOptions {\n    id?: string;\n}\n\ninterface KeyframeEffectOptions extends EffectTiming {\n    composite?: CompositeOperation;\n    iterationComposite?: IterationCompositeOperation;\n    pseudoElement?: string | null;\n}\n\ninterface LockInfo {\n    clientId?: string;\n    mode?: LockMode;\n    name?: string;\n}\n\ninterface LockManagerSnapshot {\n    held?: LockInfo[];\n    pending?: LockInfo[];\n}\n\ninterface LockOptions {\n    ifAvailable?: boolean;\n    mode?: LockMode;\n    signal?: AbortSignal;\n    steal?: boolean;\n}\n\ninterface MIDIConnectionEventInit extends EventInit {\n    port?: MIDIPort;\n}\n\ninterface MIDIMessageEventInit extends EventInit {\n    data?: Uint8Array;\n}\n\ninterface MIDIOptions {\n    software?: boolean;\n    sysex?: boolean;\n}\n\ninterface MediaCapabilitiesDecodingInfo extends MediaCapabilitiesInfo {\n    configuration?: MediaDecodingConfiguration;\n}\n\ninterface MediaCapabilitiesEncodingInfo extends MediaCapabilitiesInfo {\n    configuration?: MediaEncodingConfiguration;\n}\n\ninterface MediaCapabilitiesInfo {\n    powerEfficient: boolean;\n    smooth: boolean;\n    supported: boolean;\n}\n\ninterface MediaConfiguration {\n    audio?: AudioConfiguration;\n    video?: VideoConfiguration;\n}\n\ninterface MediaDecodingConfiguration extends MediaConfiguration {\n    type: MediaDecodingType;\n}\n\ninterface MediaElementAudioSourceOptions {\n    mediaElement: HTMLMediaElement;\n}\n\ninterface MediaEncodingConfiguration extends MediaConfiguration {\n    type: MediaEncodingType;\n}\n\ninterface MediaEncryptedEventInit extends EventInit {\n    initData?: ArrayBuffer | null;\n    initDataType?: string;\n}\n\ninterface MediaImage {\n    sizes?: string;\n    src: string;\n    type?: string;\n}\n\ninterface MediaKeyMessageEventInit extends EventInit {\n    message: ArrayBuffer;\n    messageType: MediaKeyMessageType;\n}\n\ninterface MediaKeySystemConfiguration {\n    audioCapabilities?: MediaKeySystemMediaCapability[];\n    distinctiveIdentifier?: MediaKeysRequirement;\n    initDataTypes?: string[];\n    label?: string;\n    persistentState?: MediaKeysRequirement;\n    sessionTypes?: string[];\n    videoCapabilities?: MediaKeySystemMediaCapability[];\n}\n\ninterface MediaKeySystemMediaCapability {\n    contentType?: string;\n    encryptionScheme?: string | null;\n    robustness?: string;\n}\n\ninterface MediaMetadataInit {\n    album?: string;\n    artist?: string;\n    artwork?: MediaImage[];\n    title?: string;\n}\n\ninterface MediaPositionState {\n    duration?: number;\n    playbackRate?: number;\n    position?: number;\n}\n\ninterface MediaQueryListEventInit extends EventInit {\n    matches?: boolean;\n    media?: string;\n}\n\ninterface MediaRecorderOptions {\n    audioBitsPerSecond?: number;\n    bitsPerSecond?: number;\n    mimeType?: string;\n    videoBitsPerSecond?: number;\n}\n\ninterface MediaSessionActionDetails {\n    action: MediaSessionAction;\n    fastSeek?: boolean;\n    seekOffset?: number;\n    seekTime?: number;\n}\n\ninterface MediaStreamAudioSourceOptions {\n    mediaStream: MediaStream;\n}\n\ninterface MediaStreamConstraints {\n    audio?: boolean | MediaTrackConstraints;\n    peerIdentity?: string;\n    preferCurrentTab?: boolean;\n    video?: boolean | MediaTrackConstraints;\n}\n\ninterface MediaStreamTrackEventInit extends EventInit {\n    track: MediaStreamTrack;\n}\n\ninterface MediaTrackCapabilities {\n    aspectRatio?: DoubleRange;\n    autoGainControl?: boolean[];\n    channelCount?: ULongRange;\n    deviceId?: string;\n    displaySurface?: string;\n    echoCancellation?: boolean[];\n    facingMode?: string[];\n    frameRate?: DoubleRange;\n    groupId?: string;\n    height?: ULongRange;\n    noiseSuppression?: boolean[];\n    sampleRate?: ULongRange;\n    sampleSize?: ULongRange;\n    width?: ULongRange;\n}\n\ninterface MediaTrackConstraintSet {\n    aspectRatio?: ConstrainDouble;\n    autoGainControl?: ConstrainBoolean;\n    channelCount?: ConstrainULong;\n    deviceId?: ConstrainDOMString;\n    displaySurface?: ConstrainDOMString;\n    echoCancellation?: ConstrainBoolean;\n    facingMode?: ConstrainDOMString;\n    frameRate?: ConstrainDouble;\n    groupId?: ConstrainDOMString;\n    height?: ConstrainULong;\n    noiseSuppression?: ConstrainBoolean;\n    sampleRate?: ConstrainULong;\n    sampleSize?: ConstrainULong;\n    width?: ConstrainULong;\n}\n\ninterface MediaTrackConstraints extends MediaTrackConstraintSet {\n    advanced?: MediaTrackConstraintSet[];\n}\n\ninterface MediaTrackSettings {\n    aspectRatio?: number;\n    autoGainControl?: boolean;\n    channelCount?: number;\n    deviceId?: string;\n    displaySurface?: string;\n    echoCancellation?: boolean;\n    facingMode?: string;\n    frameRate?: number;\n    groupId?: string;\n    height?: number;\n    noiseSuppression?: boolean;\n    sampleRate?: number;\n    sampleSize?: number;\n    width?: number;\n}\n\ninterface MediaTrackSupportedConstraints {\n    aspectRatio?: boolean;\n    autoGainControl?: boolean;\n    channelCount?: boolean;\n    deviceId?: boolean;\n    displaySurface?: boolean;\n    echoCancellation?: boolean;\n    facingMode?: boolean;\n    frameRate?: boolean;\n    groupId?: boolean;\n    height?: boolean;\n    noiseSuppression?: boolean;\n    sampleRate?: boolean;\n    sampleSize?: boolean;\n    width?: boolean;\n}\n\ninterface MessageEventInit<T = any> extends EventInit {\n    data?: T;\n    lastEventId?: string;\n    origin?: string;\n    ports?: MessagePort[];\n    source?: MessageEventSource | null;\n}\n\ninterface MouseEventInit extends EventModifierInit {\n    button?: number;\n    buttons?: number;\n    clientX?: number;\n    clientY?: number;\n    movementX?: number;\n    movementY?: number;\n    relatedTarget?: EventTarget | null;\n    screenX?: number;\n    screenY?: number;\n}\n\ninterface MultiCacheQueryOptions extends CacheQueryOptions {\n    cacheName?: string;\n}\n\ninterface MutationObserverInit {\n    /** Set to a list of attribute local names (without namespace) if not all attribute mutations need to be observed and attributes is true or omitted. */\n    attributeFilter?: string[];\n    /** Set to true if attributes is true or omitted and target's attribute value before the mutation needs to be recorded. */\n    attributeOldValue?: boolean;\n    /** Set to true if mutations to target's attributes are to be observed. Can be omitted if attributeOldValue or attributeFilter is specified. */\n    attributes?: boolean;\n    /** Set to true if mutations to target's data are to be observed. Can be omitted if characterDataOldValue is specified. */\n    characterData?: boolean;\n    /** Set to true if characterData is set to true or omitted and target's data before the mutation needs to be recorded. */\n    characterDataOldValue?: boolean;\n    /** Set to true if mutations to target's children are to be observed. */\n    childList?: boolean;\n    /** Set to true if mutations to not just target, but also target's descendants are to be observed. */\n    subtree?: boolean;\n}\n\ninterface NavigationPreloadState {\n    enabled?: boolean;\n    headerValue?: string;\n}\n\ninterface NotificationAction {\n    action: string;\n    icon?: string;\n    title: string;\n}\n\ninterface NotificationOptions {\n    actions?: NotificationAction[];\n    badge?: string;\n    body?: string;\n    data?: any;\n    dir?: NotificationDirection;\n    icon?: string;\n    image?: string;\n    lang?: string;\n    renotify?: boolean;\n    requireInteraction?: boolean;\n    silent?: boolean;\n    tag?: string;\n    timestamp?: EpochTimeStamp;\n    vibrate?: VibratePattern;\n}\n\ninterface OfflineAudioCompletionEventInit extends EventInit {\n    renderedBuffer: AudioBuffer;\n}\n\ninterface OfflineAudioContextOptions {\n    length: number;\n    numberOfChannels?: number;\n    sampleRate: number;\n}\n\ninterface OptionalEffectTiming {\n    delay?: number;\n    direction?: PlaybackDirection;\n    duration?: number | string;\n    easing?: string;\n    endDelay?: number;\n    fill?: FillMode;\n    iterationStart?: number;\n    iterations?: number;\n    playbackRate?: number;\n}\n\ninterface OscillatorOptions extends AudioNodeOptions {\n    detune?: number;\n    frequency?: number;\n    periodicWave?: PeriodicWave;\n    type?: OscillatorType;\n}\n\ninterface PageTransitionEventInit extends EventInit {\n    persisted?: boolean;\n}\n\ninterface PannerOptions extends AudioNodeOptions {\n    coneInnerAngle?: number;\n    coneOuterAngle?: number;\n    coneOuterGain?: number;\n    distanceModel?: DistanceModelType;\n    maxDistance?: number;\n    orientationX?: number;\n    orientationY?: number;\n    orientationZ?: number;\n    panningModel?: PanningModelType;\n    positionX?: number;\n    positionY?: number;\n    positionZ?: number;\n    refDistance?: number;\n    rolloffFactor?: number;\n}\n\ninterface PaymentCurrencyAmount {\n    currency: string;\n    value: string;\n}\n\ninterface PaymentDetailsBase {\n    displayItems?: PaymentItem[];\n    modifiers?: PaymentDetailsModifier[];\n}\n\ninterface PaymentDetailsInit extends PaymentDetailsBase {\n    id?: string;\n    total: PaymentItem;\n}\n\ninterface PaymentDetailsModifier {\n    additionalDisplayItems?: PaymentItem[];\n    data?: any;\n    supportedMethods: string;\n    total?: PaymentItem;\n}\n\ninterface PaymentDetailsUpdate extends PaymentDetailsBase {\n    paymentMethodErrors?: any;\n    total?: PaymentItem;\n}\n\ninterface PaymentItem {\n    amount: PaymentCurrencyAmount;\n    label: string;\n    pending?: boolean;\n}\n\ninterface PaymentMethodChangeEventInit extends PaymentRequestUpdateEventInit {\n    methodDetails?: any;\n    methodName?: string;\n}\n\ninterface PaymentMethodData {\n    data?: any;\n    supportedMethods: string;\n}\n\ninterface PaymentRequestUpdateEventInit extends EventInit {\n}\n\ninterface PaymentValidationErrors {\n    error?: string;\n    paymentMethod?: any;\n}\n\ninterface Pbkdf2Params extends Algorithm {\n    hash: HashAlgorithmIdentifier;\n    iterations: number;\n    salt: BufferSource;\n}\n\ninterface PerformanceMarkOptions {\n    detail?: any;\n    startTime?: DOMHighResTimeStamp;\n}\n\ninterface PerformanceMeasureOptions {\n    detail?: any;\n    duration?: DOMHighResTimeStamp;\n    end?: string | DOMHighResTimeStamp;\n    start?: string | DOMHighResTimeStamp;\n}\n\ninterface PerformanceObserverInit {\n    buffered?: boolean;\n    entryTypes?: string[];\n    type?: string;\n}\n\ninterface PeriodicWaveConstraints {\n    disableNormalization?: boolean;\n}\n\ninterface PeriodicWaveOptions extends PeriodicWaveConstraints {\n    imag?: number[] | Float32Array;\n    real?: number[] | Float32Array;\n}\n\ninterface PermissionDescriptor {\n    name: PermissionName;\n}\n\ninterface PictureInPictureEventInit extends EventInit {\n    pictureInPictureWindow: PictureInPictureWindow;\n}\n\ninterface PointerEventInit extends MouseEventInit {\n    coalescedEvents?: PointerEvent[];\n    height?: number;\n    isPrimary?: boolean;\n    pointerId?: number;\n    pointerType?: string;\n    predictedEvents?: PointerEvent[];\n    pressure?: number;\n    tangentialPressure?: number;\n    tiltX?: number;\n    tiltY?: number;\n    twist?: number;\n    width?: number;\n}\n\ninterface PopStateEventInit extends EventInit {\n    state?: any;\n}\n\ninterface PositionOptions {\n    enableHighAccuracy?: boolean;\n    maximumAge?: number;\n    timeout?: number;\n}\n\ninterface ProgressEventInit extends EventInit {\n    lengthComputable?: boolean;\n    loaded?: number;\n    total?: number;\n}\n\ninterface PromiseRejectionEventInit extends EventInit {\n    promise: Promise<any>;\n    reason?: any;\n}\n\ninterface PropertyIndexedKeyframes {\n    composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[];\n    easing?: string | string[];\n    offset?: number | (number | null)[];\n    [property: string]: string | string[] | number | null | (number | null)[] | undefined;\n}\n\ninterface PublicKeyCredentialCreationOptions {\n    attestation?: AttestationConveyancePreference;\n    authenticatorSelection?: AuthenticatorSelectionCriteria;\n    challenge: BufferSource;\n    excludeCredentials?: PublicKeyCredentialDescriptor[];\n    extensions?: AuthenticationExtensionsClientInputs;\n    pubKeyCredParams: PublicKeyCredentialParameters[];\n    rp: PublicKeyCredentialRpEntity;\n    timeout?: number;\n    user: PublicKeyCredentialUserEntity;\n}\n\ninterface PublicKeyCredentialDescriptor {\n    id: BufferSource;\n    transports?: AuthenticatorTransport[];\n    type: PublicKeyCredentialType;\n}\n\ninterface PublicKeyCredentialEntity {\n    name: string;\n}\n\ninterface PublicKeyCredentialParameters {\n    alg: COSEAlgorithmIdentifier;\n    type: PublicKeyCredentialType;\n}\n\ninterface PublicKeyCredentialRequestOptions {\n    allowCredentials?: PublicKeyCredentialDescriptor[];\n    challenge: BufferSource;\n    extensions?: AuthenticationExtensionsClientInputs;\n    rpId?: string;\n    timeout?: number;\n    userVerification?: UserVerificationRequirement;\n}\n\ninterface PublicKeyCredentialRpEntity extends PublicKeyCredentialEntity {\n    id?: string;\n}\n\ninterface PublicKeyCredentialUserEntity extends PublicKeyCredentialEntity {\n    displayName: string;\n    id: BufferSource;\n}\n\ninterface PushSubscriptionJSON {\n    endpoint?: string;\n    expirationTime?: EpochTimeStamp | null;\n    keys?: Record<string, string>;\n}\n\ninterface PushSubscriptionOptionsInit {\n    applicationServerKey?: BufferSource | string | null;\n    userVisibleOnly?: boolean;\n}\n\ninterface QueuingStrategy<T = any> {\n    highWaterMark?: number;\n    size?: QueuingStrategySize<T>;\n}\n\ninterface QueuingStrategyInit {\n    /**\n     * Creates a new ByteLengthQueuingStrategy with the provided high water mark.\n     *\n     * Note that the provided high water mark will not be validated ahead of time. Instead, if it is negative, NaN, or not a number, the resulting ByteLengthQueuingStrategy will cause the corresponding stream constructor to throw.\n     */\n    highWaterMark: number;\n}\n\ninterface RTCAnswerOptions extends RTCOfferAnswerOptions {\n}\n\ninterface RTCCertificateExpiration {\n    expires?: number;\n}\n\ninterface RTCConfiguration {\n    bundlePolicy?: RTCBundlePolicy;\n    certificates?: RTCCertificate[];\n    iceCandidatePoolSize?: number;\n    iceServers?: RTCIceServer[];\n    iceTransportPolicy?: RTCIceTransportPolicy;\n    rtcpMuxPolicy?: RTCRtcpMuxPolicy;\n}\n\ninterface RTCDTMFToneChangeEventInit extends EventInit {\n    tone?: string;\n}\n\ninterface RTCDataChannelEventInit extends EventInit {\n    channel: RTCDataChannel;\n}\n\ninterface RTCDataChannelInit {\n    id?: number;\n    maxPacketLifeTime?: number;\n    maxRetransmits?: number;\n    negotiated?: boolean;\n    ordered?: boolean;\n    protocol?: string;\n}\n\ninterface RTCDtlsFingerprint {\n    algorithm?: string;\n    value?: string;\n}\n\ninterface RTCEncodedAudioFrameMetadata {\n    contributingSources?: number[];\n    synchronizationSource?: number;\n}\n\ninterface RTCEncodedVideoFrameMetadata {\n    contributingSources?: number[];\n    dependencies?: number[];\n    frameId?: number;\n    height?: number;\n    spatialIndex?: number;\n    synchronizationSource?: number;\n    temporalIndex?: number;\n    width?: number;\n}\n\ninterface RTCErrorEventInit extends EventInit {\n    error: RTCError;\n}\n\ninterface RTCErrorInit {\n    errorDetail: RTCErrorDetailType;\n    httpRequestStatusCode?: number;\n    receivedAlert?: number;\n    sctpCauseCode?: number;\n    sdpLineNumber?: number;\n    sentAlert?: number;\n}\n\ninterface RTCIceCandidateInit {\n    candidate?: string;\n    sdpMLineIndex?: number | null;\n    sdpMid?: string | null;\n    usernameFragment?: string | null;\n}\n\ninterface RTCIceCandidatePairStats extends RTCStats {\n    availableIncomingBitrate?: number;\n    availableOutgoingBitrate?: number;\n    bytesReceived?: number;\n    bytesSent?: number;\n    currentRoundTripTime?: number;\n    lastPacketReceivedTimestamp?: DOMHighResTimeStamp;\n    lastPacketSentTimestamp?: DOMHighResTimeStamp;\n    localCandidateId: string;\n    nominated?: boolean;\n    remoteCandidateId: string;\n    requestsReceived?: number;\n    requestsSent?: number;\n    responsesReceived?: number;\n    responsesSent?: number;\n    state: RTCStatsIceCandidatePairState;\n    totalRoundTripTime?: number;\n    transportId: string;\n}\n\ninterface RTCIceServer {\n    credential?: string;\n    urls: string | string[];\n    username?: string;\n}\n\ninterface RTCInboundRtpStreamStats extends RTCReceivedRtpStreamStats {\n    audioLevel?: number;\n    bytesReceived?: number;\n    concealedSamples?: number;\n    concealmentEvents?: number;\n    decoderImplementation?: string;\n    estimatedPlayoutTimestamp?: DOMHighResTimeStamp;\n    fecPacketsDiscarded?: number;\n    fecPacketsReceived?: number;\n    firCount?: number;\n    frameHeight?: number;\n    frameWidth?: number;\n    framesDecoded?: number;\n    framesDropped?: number;\n    framesPerSecond?: number;\n    framesReceived?: number;\n    headerBytesReceived?: number;\n    insertedSamplesForDeceleration?: number;\n    jitterBufferDelay?: number;\n    jitterBufferEmittedCount?: number;\n    keyFramesDecoded?: number;\n    kind: string;\n    lastPacketReceivedTimestamp?: DOMHighResTimeStamp;\n    nackCount?: number;\n    packetsDiscarded?: number;\n    pliCount?: number;\n    qpSum?: number;\n    remoteId?: string;\n    removedSamplesForAcceleration?: number;\n    silentConcealedSamples?: number;\n    totalAudioEnergy?: number;\n    totalDecodeTime?: number;\n    totalInterFrameDelay?: number;\n    totalProcessingDelay?: number;\n    totalSamplesDuration?: number;\n    totalSamplesReceived?: number;\n    totalSquaredInterFrameDelay?: number;\n}\n\ninterface RTCLocalSessionDescriptionInit {\n    sdp?: string;\n    type?: RTCSdpType;\n}\n\ninterface RTCOfferAnswerOptions {\n}\n\ninterface RTCOfferOptions extends RTCOfferAnswerOptions {\n    iceRestart?: boolean;\n    offerToReceiveAudio?: boolean;\n    offerToReceiveVideo?: boolean;\n}\n\ninterface RTCOutboundRtpStreamStats extends RTCSentRtpStreamStats {\n    firCount?: number;\n    frameHeight?: number;\n    frameWidth?: number;\n    framesEncoded?: number;\n    framesPerSecond?: number;\n    framesSent?: number;\n    headerBytesSent?: number;\n    hugeFramesSent?: number;\n    keyFramesEncoded?: number;\n    mediaSourceId?: string;\n    nackCount?: number;\n    pliCount?: number;\n    qpSum?: number;\n    qualityLimitationResolutionChanges?: number;\n    remoteId?: string;\n    retransmittedBytesSent?: number;\n    retransmittedPacketsSent?: number;\n    rid?: string;\n    targetBitrate?: number;\n    totalEncodeTime?: number;\n    totalEncodedBytesTarget?: number;\n    totalPacketSendDelay?: number;\n}\n\ninterface RTCPeerConnectionIceErrorEventInit extends EventInit {\n    address?: string | null;\n    errorCode: number;\n    errorText?: string;\n    port?: number | null;\n    url?: string;\n}\n\ninterface RTCPeerConnectionIceEventInit extends EventInit {\n    candidate?: RTCIceCandidate | null;\n    url?: string | null;\n}\n\ninterface RTCReceivedRtpStreamStats extends RTCRtpStreamStats {\n    jitter?: number;\n    packetsLost?: number;\n    packetsReceived?: number;\n}\n\ninterface RTCRtcpParameters {\n    cname?: string;\n    reducedSize?: boolean;\n}\n\ninterface RTCRtpCapabilities {\n    codecs: RTCRtpCodecCapability[];\n    headerExtensions: RTCRtpHeaderExtensionCapability[];\n}\n\ninterface RTCRtpCodecCapability {\n    channels?: number;\n    clockRate: number;\n    mimeType: string;\n    sdpFmtpLine?: string;\n}\n\ninterface RTCRtpCodecParameters {\n    channels?: number;\n    clockRate: number;\n    mimeType: string;\n    payloadType: number;\n    sdpFmtpLine?: string;\n}\n\ninterface RTCRtpCodingParameters {\n    rid?: string;\n}\n\ninterface RTCRtpContributingSource {\n    audioLevel?: number;\n    rtpTimestamp: number;\n    source: number;\n    timestamp: DOMHighResTimeStamp;\n}\n\ninterface RTCRtpEncodingParameters extends RTCRtpCodingParameters {\n    active?: boolean;\n    maxBitrate?: number;\n    maxFramerate?: number;\n    networkPriority?: RTCPriorityType;\n    priority?: RTCPriorityType;\n    scaleResolutionDownBy?: number;\n}\n\ninterface RTCRtpHeaderExtensionCapability {\n    uri?: string;\n}\n\ninterface RTCRtpHeaderExtensionParameters {\n    encrypted?: boolean;\n    id: number;\n    uri: string;\n}\n\ninterface RTCRtpParameters {\n    codecs: RTCRtpCodecParameters[];\n    headerExtensions: RTCRtpHeaderExtensionParameters[];\n    rtcp: RTCRtcpParameters;\n}\n\ninterface RTCRtpReceiveParameters extends RTCRtpParameters {\n}\n\ninterface RTCRtpSendParameters extends RTCRtpParameters {\n    degradationPreference?: RTCDegradationPreference;\n    encodings: RTCRtpEncodingParameters[];\n    transactionId: string;\n}\n\ninterface RTCRtpStreamStats extends RTCStats {\n    codecId?: string;\n    kind: string;\n    ssrc: number;\n    transportId?: string;\n}\n\ninterface RTCRtpSynchronizationSource extends RTCRtpContributingSource {\n}\n\ninterface RTCRtpTransceiverInit {\n    direction?: RTCRtpTransceiverDirection;\n    sendEncodings?: RTCRtpEncodingParameters[];\n    streams?: MediaStream[];\n}\n\ninterface RTCSentRtpStreamStats extends RTCRtpStreamStats {\n    bytesSent?: number;\n    packetsSent?: number;\n}\n\ninterface RTCSessionDescriptionInit {\n    sdp?: string;\n    type: RTCSdpType;\n}\n\ninterface RTCStats {\n    id: string;\n    timestamp: DOMHighResTimeStamp;\n    type: RTCStatsType;\n}\n\ninterface RTCTrackEventInit extends EventInit {\n    receiver: RTCRtpReceiver;\n    streams?: MediaStream[];\n    track: MediaStreamTrack;\n    transceiver: RTCRtpTransceiver;\n}\n\ninterface RTCTransportStats extends RTCStats {\n    bytesReceived?: number;\n    bytesSent?: number;\n    dtlsCipher?: string;\n    dtlsState: RTCDtlsTransportState;\n    localCertificateId?: string;\n    remoteCertificateId?: string;\n    selectedCandidatePairId?: string;\n    srtpCipher?: string;\n    tlsVersion?: string;\n}\n\ninterface ReadableStreamGetReaderOptions {\n    /**\n     * Creates a ReadableStreamBYOBReader and locks the stream to the new reader.\n     *\n     * This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle \"bring your own buffer\" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation.\n     */\n    mode?: ReadableStreamReaderMode;\n}\n\ninterface ReadableStreamReadDoneResult<T> {\n    done: true;\n    value?: T;\n}\n\ninterface ReadableStreamReadValueResult<T> {\n    done: false;\n    value: T;\n}\n\ninterface ReadableWritablePair<R = any, W = any> {\n    readable: ReadableStream<R>;\n    /**\n     * Provides a convenient, chainable way of piping this readable stream through a transform stream (or any other { writable, readable } pair). It simply pipes the stream into the writable side of the supplied pair, and returns the readable side for further use.\n     *\n     * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\n     */\n    writable: WritableStream<W>;\n}\n\ninterface RegistrationOptions {\n    scope?: string;\n    type?: WorkerType;\n    updateViaCache?: ServiceWorkerUpdateViaCache;\n}\n\ninterface RequestInit {\n    /** A BodyInit object or null to set request's body. */\n    body?: BodyInit | null;\n    /** A string indicating how the request will interact with the browser's cache to set request's cache. */\n    cache?: RequestCache;\n    /** A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials. */\n    credentials?: RequestCredentials;\n    /** A Headers object, an object literal, or an array of two-item arrays to set request's headers. */\n    headers?: HeadersInit;\n    /** A cryptographic hash of the resource to be fetched by request. Sets request's integrity. */\n    integrity?: string;\n    /** A boolean to set request's keepalive. */\n    keepalive?: boolean;\n    /** A string to set request's method. */\n    method?: string;\n    /** A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode. */\n    mode?: RequestMode;\n    /** A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */\n    redirect?: RequestRedirect;\n    /** A string whose value is a same-origin URL, \"about:client\", or the empty string, to set request's referrer. */\n    referrer?: string;\n    /** A referrer policy to set request's referrerPolicy. */\n    referrerPolicy?: ReferrerPolicy;\n    /** An AbortSignal to set request's signal. */\n    signal?: AbortSignal | null;\n    /** Can only be null. Used to disassociate request from any Window. */\n    window?: null;\n}\n\ninterface ResizeObserverOptions {\n    box?: ResizeObserverBoxOptions;\n}\n\ninterface ResponseInit {\n    headers?: HeadersInit;\n    status?: number;\n    statusText?: string;\n}\n\ninterface RsaHashedImportParams extends Algorithm {\n    hash: HashAlgorithmIdentifier;\n}\n\ninterface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm {\n    hash: KeyAlgorithm;\n}\n\ninterface RsaHashedKeyGenParams extends RsaKeyGenParams {\n    hash: HashAlgorithmIdentifier;\n}\n\ninterface RsaKeyAlgorithm extends KeyAlgorithm {\n    modulusLength: number;\n    publicExponent: BigInteger;\n}\n\ninterface RsaKeyGenParams extends Algorithm {\n    modulusLength: number;\n    publicExponent: BigInteger;\n}\n\ninterface RsaOaepParams extends Algorithm {\n    label?: BufferSource;\n}\n\ninterface RsaOtherPrimesInfo {\n    d?: string;\n    r?: string;\n    t?: string;\n}\n\ninterface RsaPssParams extends Algorithm {\n    saltLength: number;\n}\n\ninterface SVGBoundingBoxOptions {\n    clipped?: boolean;\n    fill?: boolean;\n    markers?: boolean;\n    stroke?: boolean;\n}\n\ninterface ScrollIntoViewOptions extends ScrollOptions {\n    block?: ScrollLogicalPosition;\n    inline?: ScrollLogicalPosition;\n}\n\ninterface ScrollOptions {\n    behavior?: ScrollBehavior;\n}\n\ninterface ScrollToOptions extends ScrollOptions {\n    left?: number;\n    top?: number;\n}\n\ninterface SecurityPolicyViolationEventInit extends EventInit {\n    blockedURI?: string;\n    columnNumber?: number;\n    disposition: SecurityPolicyViolationEventDisposition;\n    documentURI: string;\n    effectiveDirective: string;\n    lineNumber?: number;\n    originalPolicy: string;\n    referrer?: string;\n    sample?: string;\n    sourceFile?: string;\n    statusCode: number;\n    violatedDirective: string;\n}\n\ninterface ShadowRootInit {\n    delegatesFocus?: boolean;\n    mode: ShadowRootMode;\n    slotAssignment?: SlotAssignmentMode;\n}\n\ninterface ShareData {\n    files?: File[];\n    text?: string;\n    title?: string;\n    url?: string;\n}\n\ninterface SpeechSynthesisErrorEventInit extends SpeechSynthesisEventInit {\n    error: SpeechSynthesisErrorCode;\n}\n\ninterface SpeechSynthesisEventInit extends EventInit {\n    charIndex?: number;\n    charLength?: number;\n    elapsedTime?: number;\n    name?: string;\n    utterance: SpeechSynthesisUtterance;\n}\n\ninterface StaticRangeInit {\n    endContainer: Node;\n    endOffset: number;\n    startContainer: Node;\n    startOffset: number;\n}\n\ninterface StereoPannerOptions extends AudioNodeOptions {\n    pan?: number;\n}\n\ninterface StorageEstimate {\n    quota?: number;\n    usage?: number;\n}\n\ninterface StorageEventInit extends EventInit {\n    key?: string | null;\n    newValue?: string | null;\n    oldValue?: string | null;\n    storageArea?: Storage | null;\n    url?: string;\n}\n\ninterface StreamPipeOptions {\n    preventAbort?: boolean;\n    preventCancel?: boolean;\n    /**\n     * Pipes this readable stream to a given writable stream destination. The way in which the piping process behaves under various error conditions can be customized with a number of passed options. It returns a promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered.\n     *\n     * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\n     *\n     * Errors and closures of the source and destination streams propagate as follows:\n     *\n     * An error in this source readable stream will abort destination, unless preventAbort is truthy. The returned promise will be rejected with the source's error, or with any error that occurs during aborting the destination.\n     *\n     * An error in destination will cancel this source readable stream, unless preventCancel is truthy. The returned promise will be rejected with the destination's error, or with any error that occurs during canceling the source.\n     *\n     * When this source readable stream closes, destination will be closed, unless preventClose is truthy. The returned promise will be fulfilled once this process completes, unless an error is encountered while closing the destination, in which case it will be rejected with that error.\n     *\n     * If destination starts out closed or closing, this source readable stream will be canceled, unless preventCancel is true. The returned promise will be rejected with an error indicating piping to a closed stream failed, or with any error that occurs during canceling the source.\n     *\n     * The signal option can be set to an AbortSignal to allow aborting an ongoing pipe operation via the corresponding AbortController. In this case, this source readable stream will be canceled, and destination aborted, unless the respective options preventCancel or preventAbort are set.\n     */\n    preventClose?: boolean;\n    signal?: AbortSignal;\n}\n\ninterface StructuredSerializeOptions {\n    transfer?: Transferable[];\n}\n\ninterface SubmitEventInit extends EventInit {\n    submitter?: HTMLElement | null;\n}\n\ninterface TextDecodeOptions {\n    stream?: boolean;\n}\n\ninterface TextDecoderOptions {\n    fatal?: boolean;\n    ignoreBOM?: boolean;\n}\n\ninterface TextEncoderEncodeIntoResult {\n    read?: number;\n    written?: number;\n}\n\ninterface TouchEventInit extends EventModifierInit {\n    changedTouches?: Touch[];\n    targetTouches?: Touch[];\n    touches?: Touch[];\n}\n\ninterface TouchInit {\n    altitudeAngle?: number;\n    azimuthAngle?: number;\n    clientX?: number;\n    clientY?: number;\n    force?: number;\n    identifier: number;\n    pageX?: number;\n    pageY?: number;\n    radiusX?: number;\n    radiusY?: number;\n    rotationAngle?: number;\n    screenX?: number;\n    screenY?: number;\n    target: EventTarget;\n    touchType?: TouchType;\n}\n\ninterface TrackEventInit extends EventInit {\n    track?: TextTrack | null;\n}\n\ninterface Transformer<I = any, O = any> {\n    flush?: TransformerFlushCallback<O>;\n    readableType?: undefined;\n    start?: TransformerStartCallback<O>;\n    transform?: TransformerTransformCallback<I, O>;\n    writableType?: undefined;\n}\n\ninterface TransitionEventInit extends EventInit {\n    elapsedTime?: number;\n    propertyName?: string;\n    pseudoElement?: string;\n}\n\ninterface UIEventInit extends EventInit {\n    detail?: number;\n    view?: Window | null;\n    /** @deprecated */\n    which?: number;\n}\n\ninterface ULongRange {\n    max?: number;\n    min?: number;\n}\n\ninterface UnderlyingByteSource {\n    autoAllocateChunkSize?: number;\n    cancel?: UnderlyingSourceCancelCallback;\n    pull?: (controller: ReadableByteStreamController) => void | PromiseLike<void>;\n    start?: (controller: ReadableByteStreamController) => any;\n    type: \"bytes\";\n}\n\ninterface UnderlyingDefaultSource<R = any> {\n    cancel?: UnderlyingSourceCancelCallback;\n    pull?: (controller: ReadableStreamDefaultController<R>) => void | PromiseLike<void>;\n    start?: (controller: ReadableStreamDefaultController<R>) => any;\n    type?: undefined;\n}\n\ninterface UnderlyingSink<W = any> {\n    abort?: UnderlyingSinkAbortCallback;\n    close?: UnderlyingSinkCloseCallback;\n    start?: UnderlyingSinkStartCallback;\n    type?: undefined;\n    write?: UnderlyingSinkWriteCallback<W>;\n}\n\ninterface UnderlyingSource<R = any> {\n    autoAllocateChunkSize?: number;\n    cancel?: UnderlyingSourceCancelCallback;\n    pull?: UnderlyingSourcePullCallback<R>;\n    start?: UnderlyingSourceStartCallback<R>;\n    type?: ReadableStreamType;\n}\n\ninterface ValidityStateFlags {\n    badInput?: boolean;\n    customError?: boolean;\n    patternMismatch?: boolean;\n    rangeOverflow?: boolean;\n    rangeUnderflow?: boolean;\n    stepMismatch?: boolean;\n    tooLong?: boolean;\n    tooShort?: boolean;\n    typeMismatch?: boolean;\n    valueMissing?: boolean;\n}\n\ninterface VideoColorSpaceInit {\n    fullRange?: boolean | null;\n    matrix?: VideoMatrixCoefficients | null;\n    primaries?: VideoColorPrimaries | null;\n    transfer?: VideoTransferCharacteristics | null;\n}\n\ninterface VideoConfiguration {\n    bitrate: number;\n    colorGamut?: ColorGamut;\n    contentType: string;\n    framerate: number;\n    hdrMetadataType?: HdrMetadataType;\n    height: number;\n    scalabilityMode?: string;\n    transferFunction?: TransferFunction;\n    width: number;\n}\n\ninterface VideoFrameCallbackMetadata {\n    captureTime?: DOMHighResTimeStamp;\n    expectedDisplayTime: DOMHighResTimeStamp;\n    height: number;\n    mediaTime: number;\n    presentationTime: DOMHighResTimeStamp;\n    presentedFrames: number;\n    processingDuration?: number;\n    receiveTime?: DOMHighResTimeStamp;\n    rtpTimestamp?: number;\n    width: number;\n}\n\ninterface WaveShaperOptions extends AudioNodeOptions {\n    curve?: number[] | Float32Array;\n    oversample?: OverSampleType;\n}\n\ninterface WebGLContextAttributes {\n    alpha?: boolean;\n    antialias?: boolean;\n    depth?: boolean;\n    desynchronized?: boolean;\n    failIfMajorPerformanceCaveat?: boolean;\n    powerPreference?: WebGLPowerPreference;\n    premultipliedAlpha?: boolean;\n    preserveDrawingBuffer?: boolean;\n    stencil?: boolean;\n}\n\ninterface WebGLContextEventInit extends EventInit {\n    statusMessage?: string;\n}\n\ninterface WheelEventInit extends MouseEventInit {\n    deltaMode?: number;\n    deltaX?: number;\n    deltaY?: number;\n    deltaZ?: number;\n}\n\ninterface WindowPostMessageOptions extends StructuredSerializeOptions {\n    targetOrigin?: string;\n}\n\ninterface WorkerOptions {\n    credentials?: RequestCredentials;\n    name?: string;\n    type?: WorkerType;\n}\n\ninterface WorkletOptions {\n    credentials?: RequestCredentials;\n}\n\ntype NodeFilter = ((node: Node) => number) | { acceptNode(node: Node): number; };\n\ndeclare var NodeFilter: {\n    readonly FILTER_ACCEPT: 1;\n    readonly FILTER_REJECT: 2;\n    readonly FILTER_SKIP: 3;\n    readonly SHOW_ALL: 0xFFFFFFFF;\n    readonly SHOW_ELEMENT: 0x1;\n    readonly SHOW_ATTRIBUTE: 0x2;\n    readonly SHOW_TEXT: 0x4;\n    readonly SHOW_CDATA_SECTION: 0x8;\n    readonly SHOW_ENTITY_REFERENCE: 0x10;\n    readonly SHOW_ENTITY: 0x20;\n    readonly SHOW_PROCESSING_INSTRUCTION: 0x40;\n    readonly SHOW_COMMENT: 0x80;\n    readonly SHOW_DOCUMENT: 0x100;\n    readonly SHOW_DOCUMENT_TYPE: 0x200;\n    readonly SHOW_DOCUMENT_FRAGMENT: 0x400;\n    readonly SHOW_NOTATION: 0x800;\n};\n\ntype XPathNSResolver = ((prefix: string | null) => string | null) | { lookupNamespaceURI(prefix: string | null): string | null; };\n\n/** The ANGLE_instanced_arrays extension is part of the WebGL API and allows to draw the same object, or groups of similar objects multiple times, if they share the same vertex data, primitive count and type. */\ninterface ANGLE_instanced_arrays {\n    drawArraysInstancedANGLE(mode: GLenum, first: GLint, count: GLsizei, primcount: GLsizei): void;\n    drawElementsInstancedANGLE(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, primcount: GLsizei): void;\n    vertexAttribDivisorANGLE(index: GLuint, divisor: GLuint): void;\n    readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88FE;\n}\n\ninterface ARIAMixin {\n    ariaAtomic: string | null;\n    ariaAutoComplete: string | null;\n    ariaBusy: string | null;\n    ariaChecked: string | null;\n    ariaColCount: string | null;\n    ariaColIndex: string | null;\n    ariaColSpan: string | null;\n    ariaCurrent: string | null;\n    ariaDisabled: string | null;\n    ariaExpanded: string | null;\n    ariaHasPopup: string | null;\n    ariaHidden: string | null;\n    ariaInvalid: string | null;\n    ariaKeyShortcuts: string | null;\n    ariaLabel: string | null;\n    ariaLevel: string | null;\n    ariaLive: string | null;\n    ariaModal: string | null;\n    ariaMultiLine: string | null;\n    ariaMultiSelectable: string | null;\n    ariaOrientation: string | null;\n    ariaPlaceholder: string | null;\n    ariaPosInSet: string | null;\n    ariaPressed: string | null;\n    ariaReadOnly: string | null;\n    ariaRequired: string | null;\n    ariaRoleDescription: string | null;\n    ariaRowCount: string | null;\n    ariaRowIndex: string | null;\n    ariaRowSpan: string | null;\n    ariaSelected: string | null;\n    ariaSetSize: string | null;\n    ariaSort: string | null;\n    ariaValueMax: string | null;\n    ariaValueMin: string | null;\n    ariaValueNow: string | null;\n    ariaValueText: string | null;\n    role: string | null;\n}\n\n/** A controller object that allows you to abort one or more DOM requests as and when desired. */\ninterface AbortController {\n    /** Returns the AbortSignal object associated with this object. */\n    readonly signal: AbortSignal;\n    /** Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted. */\n    abort(reason?: any): void;\n}\n\ndeclare var AbortController: {\n    prototype: AbortController;\n    new(): AbortController;\n};\n\ninterface AbortSignalEventMap {\n    \"abort\": Event;\n}\n\n/** A signal object that allows you to communicate with a DOM request (such as a Fetch) and abort it if required via an AbortController object. */\ninterface AbortSignal extends EventTarget {\n    /** Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise. */\n    readonly aborted: boolean;\n    onabort: ((this: AbortSignal, ev: Event) => any) | null;\n    readonly reason: any;\n    throwIfAborted(): void;\n    addEventListener<K extends keyof AbortSignalEventMap>(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AbortSignalEventMap>(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AbortSignal: {\n    prototype: AbortSignal;\n    new(): AbortSignal;\n    abort(reason?: any): AbortSignal;\n    timeout(milliseconds: number): AbortSignal;\n};\n\ninterface AbstractRange {\n    /** Returns true if range is collapsed, and false otherwise. */\n    readonly collapsed: boolean;\n    /** Returns range's end node. */\n    readonly endContainer: Node;\n    /** Returns range's end offset. */\n    readonly endOffset: number;\n    /** Returns range's start node. */\n    readonly startContainer: Node;\n    /** Returns range's start offset. */\n    readonly startOffset: number;\n}\n\ndeclare var AbstractRange: {\n    prototype: AbstractRange;\n    new(): AbstractRange;\n};\n\ninterface AbstractWorkerEventMap {\n    \"error\": ErrorEvent;\n}\n\ninterface AbstractWorker {\n    onerror: ((this: AbstractWorker, ev: ErrorEvent) => any) | null;\n    addEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** A node able to provide real-time frequency and time-domain analysis information. It is an AudioNode that passes the audio stream unchanged from the input to the output, but allows you to take the generated data, process it, and create audio visualizations. */\ninterface AnalyserNode extends AudioNode {\n    fftSize: number;\n    readonly frequencyBinCount: number;\n    maxDecibels: number;\n    minDecibels: number;\n    smoothingTimeConstant: number;\n    getByteFrequencyData(array: Uint8Array): void;\n    getByteTimeDomainData(array: Uint8Array): void;\n    getFloatFrequencyData(array: Float32Array): void;\n    getFloatTimeDomainData(array: Float32Array): void;\n}\n\ndeclare var AnalyserNode: {\n    prototype: AnalyserNode;\n    new(context: BaseAudioContext, options?: AnalyserOptions): AnalyserNode;\n};\n\ninterface Animatable {\n    animate(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions): Animation;\n    getAnimations(options?: GetAnimationsOptions): Animation[];\n}\n\ninterface AnimationEventMap {\n    \"cancel\": AnimationPlaybackEvent;\n    \"finish\": AnimationPlaybackEvent;\n    \"remove\": Event;\n}\n\ninterface Animation extends EventTarget {\n    currentTime: CSSNumberish | null;\n    effect: AnimationEffect | null;\n    readonly finished: Promise<Animation>;\n    id: string;\n    oncancel: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;\n    onfinish: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;\n    onremove: ((this: Animation, ev: Event) => any) | null;\n    readonly pending: boolean;\n    readonly playState: AnimationPlayState;\n    playbackRate: number;\n    readonly ready: Promise<Animation>;\n    readonly replaceState: AnimationReplaceState;\n    startTime: CSSNumberish | null;\n    timeline: AnimationTimeline | null;\n    cancel(): void;\n    commitStyles(): void;\n    finish(): void;\n    pause(): void;\n    persist(): void;\n    play(): void;\n    reverse(): void;\n    updatePlaybackRate(playbackRate: number): void;\n    addEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Animation: {\n    prototype: Animation;\n    new(effect?: AnimationEffect | null, timeline?: AnimationTimeline | null): Animation;\n};\n\ninterface AnimationEffect {\n    getComputedTiming(): ComputedEffectTiming;\n    getTiming(): EffectTiming;\n    updateTiming(timing?: OptionalEffectTiming): void;\n}\n\ndeclare var AnimationEffect: {\n    prototype: AnimationEffect;\n    new(): AnimationEffect;\n};\n\n/** Events providing information related to animations. */\ninterface AnimationEvent extends Event {\n    readonly animationName: string;\n    readonly elapsedTime: number;\n    readonly pseudoElement: string;\n}\n\ndeclare var AnimationEvent: {\n    prototype: AnimationEvent;\n    new(type: string, animationEventInitDict?: AnimationEventInit): AnimationEvent;\n};\n\ninterface AnimationFrameProvider {\n    cancelAnimationFrame(handle: number): void;\n    requestAnimationFrame(callback: FrameRequestCallback): number;\n}\n\ninterface AnimationPlaybackEvent extends Event {\n    readonly currentTime: CSSNumberish | null;\n    readonly timelineTime: CSSNumberish | null;\n}\n\ndeclare var AnimationPlaybackEvent: {\n    prototype: AnimationPlaybackEvent;\n    new(type: string, eventInitDict?: AnimationPlaybackEventInit): AnimationPlaybackEvent;\n};\n\ninterface AnimationTimeline {\n    readonly currentTime: number | null;\n}\n\ndeclare var AnimationTimeline: {\n    prototype: AnimationTimeline;\n    new(): AnimationTimeline;\n};\n\n/** A DOM element's attribute as an object. In most DOM methods, you will probably directly retrieve the attribute as a string (e.g., Element.getAttribute(), but certain functions (e.g., Element.getAttributeNode()) or means of iterating give Attr types. */\ninterface Attr extends Node {\n    readonly localName: string;\n    readonly name: string;\n    readonly namespaceURI: string | null;\n    readonly ownerDocument: Document;\n    readonly ownerElement: Element | null;\n    readonly prefix: string | null;\n    /** @deprecated */\n    readonly specified: boolean;\n    value: string;\n}\n\ndeclare var Attr: {\n    prototype: Attr;\n    new(): Attr;\n};\n\n/** A short audio asset residing in memory, created from an audio file using the AudioContext.decodeAudioData() method, or from raw data using AudioContext.createBuffer(). Once put into an AudioBuffer, the audio can then be played by being passed into an AudioBufferSourceNode. */\ninterface AudioBuffer {\n    readonly duration: number;\n    readonly length: number;\n    readonly numberOfChannels: number;\n    readonly sampleRate: number;\n    copyFromChannel(destination: Float32Array, channelNumber: number, bufferOffset?: number): void;\n    copyToChannel(source: Float32Array, channelNumber: number, bufferOffset?: number): void;\n    getChannelData(channel: number): Float32Array;\n}\n\ndeclare var AudioBuffer: {\n    prototype: AudioBuffer;\n    new(options: AudioBufferOptions): AudioBuffer;\n};\n\n/** An AudioScheduledSourceNode which represents an audio source consisting of in-memory audio data, stored in an AudioBuffer. It's especially useful for playing back audio which has particularly stringent timing accuracy requirements, such as for sounds that must match a specific rhythm and can be kept in memory rather than being played from disk or the network. */\ninterface AudioBufferSourceNode extends AudioScheduledSourceNode {\n    buffer: AudioBuffer | null;\n    readonly detune: AudioParam;\n    loop: boolean;\n    loopEnd: number;\n    loopStart: number;\n    readonly playbackRate: AudioParam;\n    start(when?: number, offset?: number, duration?: number): void;\n    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AudioBufferSourceNode: {\n    prototype: AudioBufferSourceNode;\n    new(context: BaseAudioContext, options?: AudioBufferSourceOptions): AudioBufferSourceNode;\n};\n\n/** An audio-processing graph built from audio modules linked together, each represented by an AudioNode. */\ninterface AudioContext extends BaseAudioContext {\n    readonly baseLatency: number;\n    readonly outputLatency: number;\n    close(): Promise<void>;\n    createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode;\n    createMediaStreamDestination(): MediaStreamAudioDestinationNode;\n    createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode;\n    getOutputTimestamp(): AudioTimestamp;\n    resume(): Promise<void>;\n    suspend(): Promise<void>;\n    addEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AudioContext: {\n    prototype: AudioContext;\n    new(contextOptions?: AudioContextOptions): AudioContext;\n};\n\n/** AudioDestinationNode has no output (as it is the output, no more AudioNode can be linked after it in the audio graph) and one input. The number of channels in the input must be between 0 and the maxChannelCount value or an exception is raised. */\ninterface AudioDestinationNode extends AudioNode {\n    readonly maxChannelCount: number;\n}\n\ndeclare var AudioDestinationNode: {\n    prototype: AudioDestinationNode;\n    new(): AudioDestinationNode;\n};\n\n/** The position and orientation of the unique person listening to the audio scene, and is used in audio spatialization. All PannerNodes spatialize in relation to the AudioListener stored in the BaseAudioContext.listener attribute. */\ninterface AudioListener {\n    readonly forwardX: AudioParam;\n    readonly forwardY: AudioParam;\n    readonly forwardZ: AudioParam;\n    readonly positionX: AudioParam;\n    readonly positionY: AudioParam;\n    readonly positionZ: AudioParam;\n    readonly upX: AudioParam;\n    readonly upY: AudioParam;\n    readonly upZ: AudioParam;\n    /** @deprecated */\n    setOrientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): void;\n    /** @deprecated */\n    setPosition(x: number, y: number, z: number): void;\n}\n\ndeclare var AudioListener: {\n    prototype: AudioListener;\n    new(): AudioListener;\n};\n\n/** A generic interface for representing an audio processing module. Examples include: */\ninterface AudioNode extends EventTarget {\n    channelCount: number;\n    channelCountMode: ChannelCountMode;\n    channelInterpretation: ChannelInterpretation;\n    readonly context: BaseAudioContext;\n    readonly numberOfInputs: number;\n    readonly numberOfOutputs: number;\n    connect(destinationNode: AudioNode, output?: number, input?: number): AudioNode;\n    connect(destinationParam: AudioParam, output?: number): void;\n    disconnect(): void;\n    disconnect(output: number): void;\n    disconnect(destinationNode: AudioNode): void;\n    disconnect(destinationNode: AudioNode, output: number): void;\n    disconnect(destinationNode: AudioNode, output: number, input: number): void;\n    disconnect(destinationParam: AudioParam): void;\n    disconnect(destinationParam: AudioParam, output: number): void;\n}\n\ndeclare var AudioNode: {\n    prototype: AudioNode;\n    new(): AudioNode;\n};\n\n/** The Web Audio API's AudioParam interface represents an audio-related parameter, usually a parameter of an AudioNode (such as GainNode.gain). */\ninterface AudioParam {\n    automationRate: AutomationRate;\n    readonly defaultValue: number;\n    readonly maxValue: number;\n    readonly minValue: number;\n    value: number;\n    cancelAndHoldAtTime(cancelTime: number): AudioParam;\n    cancelScheduledValues(cancelTime: number): AudioParam;\n    exponentialRampToValueAtTime(value: number, endTime: number): AudioParam;\n    linearRampToValueAtTime(value: number, endTime: number): AudioParam;\n    setTargetAtTime(target: number, startTime: number, timeConstant: number): AudioParam;\n    setValueAtTime(value: number, startTime: number): AudioParam;\n    setValueCurveAtTime(values: number[] | Float32Array, startTime: number, duration: number): AudioParam;\n}\n\ndeclare var AudioParam: {\n    prototype: AudioParam;\n    new(): AudioParam;\n};\n\ninterface AudioParamMap {\n    forEach(callbackfn: (value: AudioParam, key: string, parent: AudioParamMap) => void, thisArg?: any): void;\n}\n\ndeclare var AudioParamMap: {\n    prototype: AudioParamMap;\n    new(): AudioParamMap;\n};\n\n/**\n * The Web Audio API events that occur when a ScriptProcessorNode input buffer is ready to be processed.\n * @deprecated As of the August 29 2014 Web Audio API spec publication, this feature has been marked as deprecated, and is soon to be replaced by AudioWorklet.\n */\ninterface AudioProcessingEvent extends Event {\n    /** @deprecated */\n    readonly inputBuffer: AudioBuffer;\n    /** @deprecated */\n    readonly outputBuffer: AudioBuffer;\n    /** @deprecated */\n    readonly playbackTime: number;\n}\n\n/** @deprecated */\ndeclare var AudioProcessingEvent: {\n    prototype: AudioProcessingEvent;\n    new(type: string, eventInitDict: AudioProcessingEventInit): AudioProcessingEvent;\n};\n\ninterface AudioScheduledSourceNodeEventMap {\n    \"ended\": Event;\n}\n\ninterface AudioScheduledSourceNode extends AudioNode {\n    onended: ((this: AudioScheduledSourceNode, ev: Event) => any) | null;\n    start(when?: number): void;\n    stop(when?: number): void;\n    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AudioScheduledSourceNode: {\n    prototype: AudioScheduledSourceNode;\n    new(): AudioScheduledSourceNode;\n};\n\n/** Available only in secure contexts. */\ninterface AudioWorklet extends Worklet {\n}\n\ndeclare var AudioWorklet: {\n    prototype: AudioWorklet;\n    new(): AudioWorklet;\n};\n\ninterface AudioWorkletNodeEventMap {\n    \"processorerror\": Event;\n}\n\n/** Available only in secure contexts. */\ninterface AudioWorkletNode extends AudioNode {\n    onprocessorerror: ((this: AudioWorkletNode, ev: Event) => any) | null;\n    readonly parameters: AudioParamMap;\n    readonly port: MessagePort;\n    addEventListener<K extends keyof AudioWorkletNodeEventMap>(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AudioWorkletNodeEventMap>(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AudioWorkletNode: {\n    prototype: AudioWorkletNode;\n    new(context: BaseAudioContext, name: string, options?: AudioWorkletNodeOptions): AudioWorkletNode;\n};\n\n/** Available only in secure contexts. */\ninterface AuthenticatorAssertionResponse extends AuthenticatorResponse {\n    readonly authenticatorData: ArrayBuffer;\n    readonly signature: ArrayBuffer;\n    readonly userHandle: ArrayBuffer | null;\n}\n\ndeclare var AuthenticatorAssertionResponse: {\n    prototype: AuthenticatorAssertionResponse;\n    new(): AuthenticatorAssertionResponse;\n};\n\n/** Available only in secure contexts. */\ninterface AuthenticatorAttestationResponse extends AuthenticatorResponse {\n    readonly attestationObject: ArrayBuffer;\n    getAuthenticatorData(): ArrayBuffer;\n    getPublicKey(): ArrayBuffer | null;\n    getPublicKeyAlgorithm(): COSEAlgorithmIdentifier;\n    getTransports(): string[];\n}\n\ndeclare var AuthenticatorAttestationResponse: {\n    prototype: AuthenticatorAttestationResponse;\n    new(): AuthenticatorAttestationResponse;\n};\n\n/** Available only in secure contexts. */\ninterface AuthenticatorResponse {\n    readonly clientDataJSON: ArrayBuffer;\n}\n\ndeclare var AuthenticatorResponse: {\n    prototype: AuthenticatorResponse;\n    new(): AuthenticatorResponse;\n};\n\ninterface BarProp {\n    readonly visible: boolean;\n}\n\ndeclare var BarProp: {\n    prototype: BarProp;\n    new(): BarProp;\n};\n\ninterface BaseAudioContextEventMap {\n    \"statechange\": Event;\n}\n\ninterface BaseAudioContext extends EventTarget {\n    /** Available only in secure contexts. */\n    readonly audioWorklet: AudioWorklet;\n    readonly currentTime: number;\n    readonly destination: AudioDestinationNode;\n    readonly listener: AudioListener;\n    onstatechange: ((this: BaseAudioContext, ev: Event) => any) | null;\n    readonly sampleRate: number;\n    readonly state: AudioContextState;\n    createAnalyser(): AnalyserNode;\n    createBiquadFilter(): BiquadFilterNode;\n    createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer;\n    createBufferSource(): AudioBufferSourceNode;\n    createChannelMerger(numberOfInputs?: number): ChannelMergerNode;\n    createChannelSplitter(numberOfOutputs?: number): ChannelSplitterNode;\n    createConstantSource(): ConstantSourceNode;\n    createConvolver(): ConvolverNode;\n    createDelay(maxDelayTime?: number): DelayNode;\n    createDynamicsCompressor(): DynamicsCompressorNode;\n    createGain(): GainNode;\n    createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode;\n    createOscillator(): OscillatorNode;\n    createPanner(): PannerNode;\n    createPeriodicWave(real: number[] | Float32Array, imag: number[] | Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;\n    /** @deprecated */\n    createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode;\n    createStereoPanner(): StereoPannerNode;\n    createWaveShaper(): WaveShaperNode;\n    decodeAudioData(audioData: ArrayBuffer, successCallback?: DecodeSuccessCallback | null, errorCallback?: DecodeErrorCallback | null): Promise<AudioBuffer>;\n    addEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof BaseAudioContextEventMap>(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var BaseAudioContext: {\n    prototype: BaseAudioContext;\n    new(): BaseAudioContext;\n};\n\n/** The beforeunload event is fired when the window, the document and its resources are about to be unloaded. */\ninterface BeforeUnloadEvent extends Event {\n    returnValue: any;\n}\n\ndeclare var BeforeUnloadEvent: {\n    prototype: BeforeUnloadEvent;\n    new(): BeforeUnloadEvent;\n};\n\n/** A simple low-order filter, and is created using the AudioContext.createBiquadFilter() method. It is an AudioNode that can represent different kinds of filters, tone control devices, and graphic equalizers. */\ninterface BiquadFilterNode extends AudioNode {\n    readonly Q: AudioParam;\n    readonly detune: AudioParam;\n    readonly frequency: AudioParam;\n    readonly gain: AudioParam;\n    type: BiquadFilterType;\n    getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;\n}\n\ndeclare var BiquadFilterNode: {\n    prototype: BiquadFilterNode;\n    new(context: BaseAudioContext, options?: BiquadFilterOptions): BiquadFilterNode;\n};\n\n/** A file-like object of immutable, raw data. Blobs represent data that isn't necessarily in a JavaScript-native format. The File interface is based on Blob, inheriting blob functionality and expanding it to support files on the user's system. */\ninterface Blob {\n    readonly size: number;\n    readonly type: string;\n    arrayBuffer(): Promise<ArrayBuffer>;\n    slice(start?: number, end?: number, contentType?: string): Blob;\n    stream(): ReadableStream<Uint8Array>;\n    text(): Promise<string>;\n}\n\ndeclare var Blob: {\n    prototype: Blob;\n    new(blobParts?: BlobPart[], options?: BlobPropertyBag): Blob;\n};\n\ninterface BlobEvent extends Event {\n    readonly data: Blob;\n    readonly timecode: DOMHighResTimeStamp;\n}\n\ndeclare var BlobEvent: {\n    prototype: BlobEvent;\n    new(type: string, eventInitDict: BlobEventInit): BlobEvent;\n};\n\ninterface Body {\n    readonly body: ReadableStream<Uint8Array> | null;\n    readonly bodyUsed: boolean;\n    arrayBuffer(): Promise<ArrayBuffer>;\n    blob(): Promise<Blob>;\n    formData(): Promise<FormData>;\n    json(): Promise<any>;\n    text(): Promise<string>;\n}\n\ninterface BroadcastChannelEventMap {\n    \"message\": MessageEvent;\n    \"messageerror\": MessageEvent;\n}\n\ninterface BroadcastChannel extends EventTarget {\n    /** Returns the channel name (as passed to the constructor). */\n    readonly name: string;\n    onmessage: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;\n    onmessageerror: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;\n    /** Closes the BroadcastChannel object, opening it up to garbage collection. */\n    close(): void;\n    /** Sends the given message to other BroadcastChannel objects set up for this channel. Messages can be structured objects, e.g. nested objects and arrays. */\n    postMessage(message: any): void;\n    addEventListener<K extends keyof BroadcastChannelEventMap>(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof BroadcastChannelEventMap>(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var BroadcastChannel: {\n    prototype: BroadcastChannel;\n    new(name: string): BroadcastChannel;\n};\n\n/** This Streams API interface provides\\xA0a built-in byte length queuing strategy that can be used when constructing streams. */\ninterface ByteLengthQueuingStrategy extends QueuingStrategy<ArrayBufferView> {\n    readonly highWaterMark: number;\n    readonly size: QueuingStrategySize<ArrayBufferView>;\n}\n\ndeclare var ByteLengthQueuingStrategy: {\n    prototype: ByteLengthQueuingStrategy;\n    new(init: QueuingStrategyInit): ByteLengthQueuingStrategy;\n};\n\n/** A CDATA section that can be used within XML to include extended portions of unescaped text. The symbols < and & don\\u2019t need escaping as they normally do when inside a CDATA section. */\ninterface CDATASection extends Text {\n}\n\ndeclare var CDATASection: {\n    prototype: CDATASection;\n    new(): CDATASection;\n};\n\ninterface CSSAnimation extends Animation {\n    readonly animationName: string;\n    addEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: CSSAnimation, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: CSSAnimation, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var CSSAnimation: {\n    prototype: CSSAnimation;\n    new(): CSSAnimation;\n};\n\n/** A single condition CSS at-rule, which consists of a condition and a statement block. It is a child of CSSGroupingRule. */\ninterface CSSConditionRule extends CSSGroupingRule {\n    readonly conditionText: string;\n}\n\ndeclare var CSSConditionRule: {\n    prototype: CSSConditionRule;\n    new(): CSSConditionRule;\n};\n\ninterface CSSContainerRule extends CSSConditionRule {\n}\n\ndeclare var CSSContainerRule: {\n    prototype: CSSContainerRule;\n    new(): CSSContainerRule;\n};\n\ninterface CSSCounterStyleRule extends CSSRule {\n    additiveSymbols: string;\n    fallback: string;\n    name: string;\n    negative: string;\n    pad: string;\n    prefix: string;\n    range: string;\n    speakAs: string;\n    suffix: string;\n    symbols: string;\n    system: string;\n}\n\ndeclare var CSSCounterStyleRule: {\n    prototype: CSSCounterStyleRule;\n    new(): CSSCounterStyleRule;\n};\n\ninterface CSSFontFaceRule extends CSSRule {\n    readonly style: CSSStyleDeclaration;\n}\n\ndeclare var CSSFontFaceRule: {\n    prototype: CSSFontFaceRule;\n    new(): CSSFontFaceRule;\n};\n\ninterface CSSFontFeatureValuesRule extends CSSRule {\n    fontFamily: string;\n}\n\ndeclare var CSSFontFeatureValuesRule: {\n    prototype: CSSFontFeatureValuesRule;\n    new(): CSSFontFeatureValuesRule;\n};\n\ninterface CSSFontPaletteValuesRule extends CSSRule {\n    readonly basePalette: string;\n    readonly fontFamily: string;\n    readonly name: string;\n    readonly overrideColors: string;\n}\n\ndeclare var CSSFontPaletteValuesRule: {\n    prototype: CSSFontPaletteValuesRule;\n    new(): CSSFontPaletteValuesRule;\n};\n\n/** Any CSS at-rule that contains other rules nested within it. */\ninterface CSSGroupingRule extends CSSRule {\n    readonly cssRules: CSSRuleList;\n    deleteRule(index: number): void;\n    insertRule(rule: string, index?: number): number;\n}\n\ndeclare var CSSGroupingRule: {\n    prototype: CSSGroupingRule;\n    new(): CSSGroupingRule;\n};\n\ninterface CSSImportRule extends CSSRule {\n    readonly href: string;\n    readonly layerName: string | null;\n    readonly media: MediaList;\n    readonly styleSheet: CSSStyleSheet;\n}\n\ndeclare var CSSImportRule: {\n    prototype: CSSImportRule;\n    new(): CSSImportRule;\n};\n\n/** An object representing a set of style for a given keyframe. It corresponds to the contains of a single keyframe of a @keyframes at-rule. It implements the CSSRule interface with a type value of 8 (CSSRule.KEYFRAME_RULE). */\ninterface CSSKeyframeRule extends CSSRule {\n    keyText: string;\n    readonly style: CSSStyleDeclaration;\n}\n\ndeclare var CSSKeyframeRule: {\n    prototype: CSSKeyframeRule;\n    new(): CSSKeyframeRule;\n};\n\n/** An object representing a complete set of keyframes for a CSS animation. It corresponds to the contains of a whole @keyframes at-rule. It implements the CSSRule interface with a type value of 7 (CSSRule.KEYFRAMES_RULE). */\ninterface CSSKeyframesRule extends CSSRule {\n    readonly cssRules: CSSRuleList;\n    name: string;\n    appendRule(rule: string): void;\n    deleteRule(select: string): void;\n    findRule(select: string): CSSKeyframeRule | null;\n    [index: number]: CSSKeyframeRule;\n}\n\ndeclare var CSSKeyframesRule: {\n    prototype: CSSKeyframesRule;\n    new(): CSSKeyframesRule;\n};\n\ninterface CSSLayerBlockRule extends CSSGroupingRule {\n    readonly name: string;\n}\n\ndeclare var CSSLayerBlockRule: {\n    prototype: CSSLayerBlockRule;\n    new(): CSSLayerBlockRule;\n};\n\ninterface CSSLayerStatementRule extends CSSRule {\n    readonly nameList: ReadonlyArray<string>;\n}\n\ndeclare var CSSLayerStatementRule: {\n    prototype: CSSLayerStatementRule;\n    new(): CSSLayerStatementRule;\n};\n\n/** A single CSS @media rule. It implements the CSSConditionRule interface, and therefore the CSSGroupingRule and the CSSRule interface with a type value of 4 (CSSRule.MEDIA_RULE). */\ninterface CSSMediaRule extends CSSConditionRule {\n    readonly media: MediaList;\n}\n\ndeclare var CSSMediaRule: {\n    prototype: CSSMediaRule;\n    new(): CSSMediaRule;\n};\n\n/** An object representing a single CSS @namespace at-rule. It implements the CSSRule interface, with a type value of 10 (CSSRule.NAMESPACE_RULE). */\ninterface CSSNamespaceRule extends CSSRule {\n    readonly namespaceURI: string;\n    readonly prefix: string;\n}\n\ndeclare var CSSNamespaceRule: {\n    prototype: CSSNamespaceRule;\n    new(): CSSNamespaceRule;\n};\n\n/** CSSPageRule is an interface representing a single CSS @page rule. It implements the CSSRule interface with a type value of 6 (CSSRule.PAGE_RULE). */\ninterface CSSPageRule extends CSSGroupingRule {\n    selectorText: string;\n    readonly style: CSSStyleDeclaration;\n}\n\ndeclare var CSSPageRule: {\n    prototype: CSSPageRule;\n    new(): CSSPageRule;\n};\n\n/** A single CSS rule. There are several types of rules, listed in the Type constants section below. */\ninterface CSSRule {\n    cssText: string;\n    readonly parentRule: CSSRule | null;\n    readonly parentStyleSheet: CSSStyleSheet | null;\n    /** @deprecated */\n    readonly type: number;\n    readonly STYLE_RULE: 1;\n    readonly CHARSET_RULE: 2;\n    readonly IMPORT_RULE: 3;\n    readonly MEDIA_RULE: 4;\n    readonly FONT_FACE_RULE: 5;\n    readonly PAGE_RULE: 6;\n    readonly NAMESPACE_RULE: 10;\n    readonly KEYFRAMES_RULE: 7;\n    readonly KEYFRAME_RULE: 8;\n    readonly SUPPORTS_RULE: 12;\n}\n\ndeclare var CSSRule: {\n    prototype: CSSRule;\n    new(): CSSRule;\n    readonly STYLE_RULE: 1;\n    readonly CHARSET_RULE: 2;\n    readonly IMPORT_RULE: 3;\n    readonly MEDIA_RULE: 4;\n    readonly FONT_FACE_RULE: 5;\n    readonly PAGE_RULE: 6;\n    readonly NAMESPACE_RULE: 10;\n    readonly KEYFRAMES_RULE: 7;\n    readonly KEYFRAME_RULE: 8;\n    readonly SUPPORTS_RULE: 12;\n};\n\n/** A CSSRuleList is an (indirect-modify only) array-like object containing an ordered collection of CSSRule objects. */\ninterface CSSRuleList {\n    readonly length: number;\n    item(index: number): CSSRule | null;\n    [index: number]: CSSRule;\n}\n\ndeclare var CSSRuleList: {\n    prototype: CSSRuleList;\n    new(): CSSRuleList;\n};\n\n/** An object that is a CSS declaration block, and exposes style information and various style-related methods and properties. */\ninterface CSSStyleDeclaration {\n    accentColor: string;\n    alignContent: string;\n    alignItems: string;\n    alignSelf: string;\n    alignmentBaseline: string;\n    all: string;\n    animation: string;\n    animationDelay: string;\n    animationDirection: string;\n    animationDuration: string;\n    animationFillMode: string;\n    animationIterationCount: string;\n    animationName: string;\n    animationPlayState: string;\n    animationTimingFunction: string;\n    appearance: string;\n    aspectRatio: string;\n    backdropFilter: string;\n    backfaceVisibility: string;\n    background: string;\n    backgroundAttachment: string;\n    backgroundBlendMode: string;\n    backgroundClip: string;\n    backgroundColor: string;\n    backgroundImage: string;\n    backgroundOrigin: string;\n    backgroundPosition: string;\n    backgroundPositionX: string;\n    backgroundPositionY: string;\n    backgroundRepeat: string;\n    backgroundSize: string;\n    baselineShift: string;\n    blockSize: string;\n    border: string;\n    borderBlock: string;\n    borderBlockColor: string;\n    borderBlockEnd: string;\n    borderBlockEndColor: string;\n    borderBlockEndStyle: string;\n    borderBlockEndWidth: string;\n    borderBlockStart: string;\n    borderBlockStartColor: string;\n    borderBlockStartStyle: string;\n    borderBlockStartWidth: string;\n    borderBlockStyle: string;\n    borderBlockWidth: string;\n    borderBottom: string;\n    borderBottomColor: string;\n    borderBottomLeftRadius: string;\n    borderBottomRightRadius: string;\n    borderBottomStyle: string;\n    borderBottomWidth: string;\n    borderCollapse: string;\n    borderColor: string;\n    borderEndEndRadius: string;\n    borderEndStartRadius: string;\n    borderImage: string;\n    borderImageOutset: string;\n    borderImageRepeat: string;\n    borderImageSlice: string;\n    borderImageSource: string;\n    borderImageWidth: string;\n    borderInline: string;\n    borderInlineColor: string;\n    borderInlineEnd: string;\n    borderInlineEndColor: string;\n    borderInlineEndStyle: string;\n    borderInlineEndWidth: string;\n    borderInlineStart: string;\n    borderInlineStartColor: string;\n    borderInlineStartStyle: string;\n    borderInlineStartWidth: string;\n    borderInlineStyle: string;\n    borderInlineWidth: string;\n    borderLeft: string;\n    borderLeftColor: string;\n    borderLeftStyle: string;\n    borderLeftWidth: string;\n    borderRadius: string;\n    borderRight: string;\n    borderRightColor: string;\n    borderRightStyle: string;\n    borderRightWidth: string;\n    borderSpacing: string;\n    borderStartEndRadius: string;\n    borderStartStartRadius: string;\n    borderStyle: string;\n    borderTop: string;\n    borderTopColor: string;\n    borderTopLeftRadius: string;\n    borderTopRightRadius: string;\n    borderTopStyle: string;\n    borderTopWidth: string;\n    borderWidth: string;\n    bottom: string;\n    boxShadow: string;\n    boxSizing: string;\n    breakAfter: string;\n    breakBefore: string;\n    breakInside: string;\n    captionSide: string;\n    caretColor: string;\n    clear: string;\n    /** @deprecated */\n    clip: string;\n    clipPath: string;\n    clipRule: string;\n    color: string;\n    colorInterpolation: string;\n    colorInterpolationFilters: string;\n    colorScheme: string;\n    columnCount: string;\n    columnFill: string;\n    columnGap: string;\n    columnRule: string;\n    columnRuleColor: string;\n    columnRuleStyle: string;\n    columnRuleWidth: string;\n    columnSpan: string;\n    columnWidth: string;\n    columns: string;\n    contain: string;\n    containIntrinsicBlockSize: string;\n    containIntrinsicHeight: string;\n    containIntrinsicInlineSize: string;\n    containIntrinsicSize: string;\n    containIntrinsicWidth: string;\n    container: string;\n    containerName: string;\n    containerType: string;\n    content: string;\n    contentVisibility: string;\n    counterIncrement: string;\n    counterReset: string;\n    counterSet: string;\n    cssFloat: string;\n    cssText: string;\n    cursor: string;\n    direction: string;\n    display: string;\n    dominantBaseline: string;\n    emptyCells: string;\n    fill: string;\n    fillOpacity: string;\n    fillRule: string;\n    filter: string;\n    flex: string;\n    flexBasis: string;\n    flexDirection: string;\n    flexFlow: string;\n    flexGrow: string;\n    flexShrink: string;\n    flexWrap: string;\n    float: string;\n    floodColor: string;\n    floodOpacity: string;\n    font: string;\n    fontFamily: string;\n    fontFeatureSettings: string;\n    fontKerning: string;\n    fontOpticalSizing: string;\n    fontPalette: string;\n    fontSize: string;\n    fontSizeAdjust: string;\n    fontStretch: string;\n    fontStyle: string;\n    fontSynthesis: string;\n    fontVariant: string;\n    fontVariantAlternates: string;\n    fontVariantCaps: string;\n    fontVariantEastAsian: string;\n    fontVariantLigatures: string;\n    fontVariantNumeric: string;\n    fontVariantPosition: string;\n    fontVariationSettings: string;\n    fontWeight: string;\n    gap: string;\n    grid: string;\n    gridArea: string;\n    gridAutoColumns: string;\n    gridAutoFlow: string;\n    gridAutoRows: string;\n    gridColumn: string;\n    gridColumnEnd: string;\n    /** @deprecated This is a legacy alias of \\`columnGap\\`. */\n    gridColumnGap: string;\n    gridColumnStart: string;\n    /** @deprecated This is a legacy alias of \\`gap\\`. */\n    gridGap: string;\n    gridRow: string;\n    gridRowEnd: string;\n    /** @deprecated This is a legacy alias of \\`rowGap\\`. */\n    gridRowGap: string;\n    gridRowStart: string;\n    gridTemplate: string;\n    gridTemplateAreas: string;\n    gridTemplateColumns: string;\n    gridTemplateRows: string;\n    height: string;\n    hyphenateCharacter: string;\n    hyphens: string;\n    /** @deprecated */\n    imageOrientation: string;\n    imageRendering: string;\n    inlineSize: string;\n    inset: string;\n    insetBlock: string;\n    insetBlockEnd: string;\n    insetBlockStart: string;\n    insetInline: string;\n    insetInlineEnd: string;\n    insetInlineStart: string;\n    isolation: string;\n    justifyContent: string;\n    justifyItems: string;\n    justifySelf: string;\n    left: string;\n    readonly length: number;\n    letterSpacing: string;\n    lightingColor: string;\n    lineBreak: string;\n    lineHeight: string;\n    listStyle: string;\n    listStyleImage: string;\n    listStylePosition: string;\n    listStyleType: string;\n    margin: string;\n    marginBlock: string;\n    marginBlockEnd: string;\n    marginBlockStart: string;\n    marginBottom: string;\n    marginInline: string;\n    marginInlineEnd: string;\n    marginInlineStart: string;\n    marginLeft: string;\n    marginRight: string;\n    marginTop: string;\n    marker: string;\n    markerEnd: string;\n    markerMid: string;\n    markerStart: string;\n    mask: string;\n    maskClip: string;\n    maskComposite: string;\n    maskImage: string;\n    maskMode: string;\n    maskOrigin: string;\n    maskPosition: string;\n    maskRepeat: string;\n    maskSize: string;\n    maskType: string;\n    mathStyle: string;\n    maxBlockSize: string;\n    maxHeight: string;\n    maxInlineSize: string;\n    maxWidth: string;\n    minBlockSize: string;\n    minHeight: string;\n    minInlineSize: string;\n    minWidth: string;\n    mixBlendMode: string;\n    objectFit: string;\n    objectPosition: string;\n    offset: string;\n    offsetDistance: string;\n    offsetPath: string;\n    offsetRotate: string;\n    opacity: string;\n    order: string;\n    orphans: string;\n    outline: string;\n    outlineColor: string;\n    outlineOffset: string;\n    outlineStyle: string;\n    outlineWidth: string;\n    overflow: string;\n    overflowAnchor: string;\n    overflowClipMargin: string;\n    overflowWrap: string;\n    overflowX: string;\n    overflowY: string;\n    overscrollBehavior: string;\n    overscrollBehaviorBlock: string;\n    overscrollBehaviorInline: string;\n    overscrollBehaviorX: string;\n    overscrollBehaviorY: string;\n    padding: string;\n    paddingBlock: string;\n    paddingBlockEnd: string;\n    paddingBlockStart: string;\n    paddingBottom: string;\n    paddingInline: string;\n    paddingInlineEnd: string;\n    paddingInlineStart: string;\n    paddingLeft: string;\n    paddingRight: string;\n    paddingTop: string;\n    pageBreakAfter: string;\n    pageBreakBefore: string;\n    pageBreakInside: string;\n    paintOrder: string;\n    readonly parentRule: CSSRule | null;\n    perspective: string;\n    perspectiveOrigin: string;\n    placeContent: string;\n    placeItems: string;\n    placeSelf: string;\n    pointerEvents: string;\n    position: string;\n    printColorAdjust: string;\n    quotes: string;\n    resize: string;\n    right: string;\n    rotate: string;\n    rowGap: string;\n    rubyPosition: string;\n    scale: string;\n    scrollBehavior: string;\n    scrollMargin: string;\n    scrollMarginBlock: string;\n    scrollMarginBlockEnd: string;\n    scrollMarginBlockStart: string;\n    scrollMarginBottom: string;\n    scrollMarginInline: string;\n    scrollMarginInlineEnd: string;\n    scrollMarginInlineStart: string;\n    scrollMarginLeft: string;\n    scrollMarginRight: string;\n    scrollMarginTop: string;\n    scrollPadding: string;\n    scrollPaddingBlock: string;\n    scrollPaddingBlockEnd: string;\n    scrollPaddingBlockStart: string;\n    scrollPaddingBottom: string;\n    scrollPaddingInline: string;\n    scrollPaddingInlineEnd: string;\n    scrollPaddingInlineStart: string;\n    scrollPaddingLeft: string;\n    scrollPaddingRight: string;\n    scrollPaddingTop: string;\n    scrollSnapAlign: string;\n    scrollSnapStop: string;\n    scrollSnapType: string;\n    scrollbarGutter: string;\n    shapeImageThreshold: string;\n    shapeMargin: string;\n    shapeOutside: string;\n    shapeRendering: string;\n    stopColor: string;\n    stopOpacity: string;\n    stroke: string;\n    strokeDasharray: string;\n    strokeDashoffset: string;\n    strokeLinecap: string;\n    strokeLinejoin: string;\n    strokeMiterlimit: string;\n    strokeOpacity: string;\n    strokeWidth: string;\n    tabSize: string;\n    tableLayout: string;\n    textAlign: string;\n    textAlignLast: string;\n    textAnchor: string;\n    textCombineUpright: string;\n    textDecoration: string;\n    textDecorationColor: string;\n    textDecorationLine: string;\n    textDecorationSkipInk: string;\n    textDecorationStyle: string;\n    textDecorationThickness: string;\n    textEmphasis: string;\n    textEmphasisColor: string;\n    textEmphasisPosition: string;\n    textEmphasisStyle: string;\n    textIndent: string;\n    textOrientation: string;\n    textOverflow: string;\n    textRendering: string;\n    textShadow: string;\n    textTransform: string;\n    textUnderlineOffset: string;\n    textUnderlinePosition: string;\n    top: string;\n    touchAction: string;\n    transform: string;\n    transformBox: string;\n    transformOrigin: string;\n    transformStyle: string;\n    transition: string;\n    transitionDelay: string;\n    transitionDuration: string;\n    transitionProperty: string;\n    transitionTimingFunction: string;\n    translate: string;\n    unicodeBidi: string;\n    userSelect: string;\n    verticalAlign: string;\n    visibility: string;\n    /** @deprecated This is a legacy alias of \\`alignContent\\`. */\n    webkitAlignContent: string;\n    /** @deprecated This is a legacy alias of \\`alignItems\\`. */\n    webkitAlignItems: string;\n    /** @deprecated This is a legacy alias of \\`alignSelf\\`. */\n    webkitAlignSelf: string;\n    /** @deprecated This is a legacy alias of \\`animation\\`. */\n    webkitAnimation: string;\n    /** @deprecated This is a legacy alias of \\`animationDelay\\`. */\n    webkitAnimationDelay: string;\n    /** @deprecated This is a legacy alias of \\`animationDirection\\`. */\n    webkitAnimationDirection: string;\n    /** @deprecated This is a legacy alias of \\`animationDuration\\`. */\n    webkitAnimationDuration: string;\n    /** @deprecated This is a legacy alias of \\`animationFillMode\\`. */\n    webkitAnimationFillMode: string;\n    /** @deprecated This is a legacy alias of \\`animationIterationCount\\`. */\n    webkitAnimationIterationCount: string;\n    /** @deprecated This is a legacy alias of \\`animationName\\`. */\n    webkitAnimationName: string;\n    /** @deprecated This is a legacy alias of \\`animationPlayState\\`. */\n    webkitAnimationPlayState: string;\n    /** @deprecated This is a legacy alias of \\`animationTimingFunction\\`. */\n    webkitAnimationTimingFunction: string;\n    /** @deprecated This is a legacy alias of \\`appearance\\`. */\n    webkitAppearance: string;\n    /** @deprecated This is a legacy alias of \\`backfaceVisibility\\`. */\n    webkitBackfaceVisibility: string;\n    /** @deprecated This is a legacy alias of \\`backgroundClip\\`. */\n    webkitBackgroundClip: string;\n    /** @deprecated This is a legacy alias of \\`backgroundOrigin\\`. */\n    webkitBackgroundOrigin: string;\n    /** @deprecated This is a legacy alias of \\`backgroundSize\\`. */\n    webkitBackgroundSize: string;\n    /** @deprecated This is a legacy alias of \\`borderBottomLeftRadius\\`. */\n    webkitBorderBottomLeftRadius: string;\n    /** @deprecated This is a legacy alias of \\`borderBottomRightRadius\\`. */\n    webkitBorderBottomRightRadius: string;\n    /** @deprecated This is a legacy alias of \\`borderRadius\\`. */\n    webkitBorderRadius: string;\n    /** @deprecated This is a legacy alias of \\`borderTopLeftRadius\\`. */\n    webkitBorderTopLeftRadius: string;\n    /** @deprecated This is a legacy alias of \\`borderTopRightRadius\\`. */\n    webkitBorderTopRightRadius: string;\n    /** @deprecated This is a legacy alias of \\`boxAlign\\`. */\n    webkitBoxAlign: string;\n    /** @deprecated This is a legacy alias of \\`boxFlex\\`. */\n    webkitBoxFlex: string;\n    /** @deprecated This is a legacy alias of \\`boxOrdinalGroup\\`. */\n    webkitBoxOrdinalGroup: string;\n    /** @deprecated This is a legacy alias of \\`boxOrient\\`. */\n    webkitBoxOrient: string;\n    /** @deprecated This is a legacy alias of \\`boxPack\\`. */\n    webkitBoxPack: string;\n    /** @deprecated This is a legacy alias of \\`boxShadow\\`. */\n    webkitBoxShadow: string;\n    /** @deprecated This is a legacy alias of \\`boxSizing\\`. */\n    webkitBoxSizing: string;\n    /** @deprecated This is a legacy alias of \\`filter\\`. */\n    webkitFilter: string;\n    /** @deprecated This is a legacy alias of \\`flex\\`. */\n    webkitFlex: string;\n    /** @deprecated This is a legacy alias of \\`flexBasis\\`. */\n    webkitFlexBasis: string;\n    /** @deprecated This is a legacy alias of \\`flexDirection\\`. */\n    webkitFlexDirection: string;\n    /** @deprecated This is a legacy alias of \\`flexFlow\\`. */\n    webkitFlexFlow: string;\n    /** @deprecated This is a legacy alias of \\`flexGrow\\`. */\n    webkitFlexGrow: string;\n    /** @deprecated This is a legacy alias of \\`flexShrink\\`. */\n    webkitFlexShrink: string;\n    /** @deprecated This is a legacy alias of \\`flexWrap\\`. */\n    webkitFlexWrap: string;\n    /** @deprecated This is a legacy alias of \\`justifyContent\\`. */\n    webkitJustifyContent: string;\n    webkitLineClamp: string;\n    /** @deprecated This is a legacy alias of \\`mask\\`. */\n    webkitMask: string;\n    /** @deprecated This is a legacy alias of \\`maskBorder\\`. */\n    webkitMaskBoxImage: string;\n    /** @deprecated This is a legacy alias of \\`maskBorderOutset\\`. */\n    webkitMaskBoxImageOutset: string;\n    /** @deprecated This is a legacy alias of \\`maskBorderRepeat\\`. */\n    webkitMaskBoxImageRepeat: string;\n    /** @deprecated This is a legacy alias of \\`maskBorderSlice\\`. */\n    webkitMaskBoxImageSlice: string;\n    /** @deprecated This is a legacy alias of \\`maskBorderSource\\`. */\n    webkitMaskBoxImageSource: string;\n    /** @deprecated This is a legacy alias of \\`maskBorderWidth\\`. */\n    webkitMaskBoxImageWidth: string;\n    /** @deprecated This is a legacy alias of \\`maskClip\\`. */\n    webkitMaskClip: string;\n    webkitMaskComposite: string;\n    /** @deprecated This is a legacy alias of \\`maskImage\\`. */\n    webkitMaskImage: string;\n    /** @deprecated This is a legacy alias of \\`maskOrigin\\`. */\n    webkitMaskOrigin: string;\n    /** @deprecated This is a legacy alias of \\`maskPosition\\`. */\n    webkitMaskPosition: string;\n    /** @deprecated This is a legacy alias of \\`maskRepeat\\`. */\n    webkitMaskRepeat: string;\n    /** @deprecated This is a legacy alias of \\`maskSize\\`. */\n    webkitMaskSize: string;\n    /** @deprecated This is a legacy alias of \\`order\\`. */\n    webkitOrder: string;\n    /** @deprecated This is a legacy alias of \\`perspective\\`. */\n    webkitPerspective: string;\n    /** @deprecated This is a legacy alias of \\`perspectiveOrigin\\`. */\n    webkitPerspectiveOrigin: string;\n    webkitTextFillColor: string;\n    /** @deprecated This is a legacy alias of \\`textSizeAdjust\\`. */\n    webkitTextSizeAdjust: string;\n    webkitTextStroke: string;\n    webkitTextStrokeColor: string;\n    webkitTextStrokeWidth: string;\n    /** @deprecated This is a legacy alias of \\`transform\\`. */\n    webkitTransform: string;\n    /** @deprecated This is a legacy alias of \\`transformOrigin\\`. */\n    webkitTransformOrigin: string;\n    /** @deprecated This is a legacy alias of \\`transformStyle\\`. */\n    webkitTransformStyle: string;\n    /** @deprecated This is a legacy alias of \\`transition\\`. */\n    webkitTransition: string;\n    /** @deprecated This is a legacy alias of \\`transitionDelay\\`. */\n    webkitTransitionDelay: string;\n    /** @deprecated This is a legacy alias of \\`transitionDuration\\`. */\n    webkitTransitionDuration: string;\n    /** @deprecated This is a legacy alias of \\`transitionProperty\\`. */\n    webkitTransitionProperty: string;\n    /** @deprecated This is a legacy alias of \\`transitionTimingFunction\\`. */\n    webkitTransitionTimingFunction: string;\n    /** @deprecated This is a legacy alias of \\`userSelect\\`. */\n    webkitUserSelect: string;\n    whiteSpace: string;\n    widows: string;\n    width: string;\n    willChange: string;\n    wordBreak: string;\n    wordSpacing: string;\n    /** @deprecated */\n    wordWrap: string;\n    writingMode: string;\n    zIndex: string;\n    getPropertyPriority(property: string): string;\n    getPropertyValue(property: string): string;\n    item(index: number): string;\n    removeProperty(property: string): string;\n    setProperty(property: string, value: string | null, priority?: string): void;\n    [index: number]: string;\n}\n\ndeclare var CSSStyleDeclaration: {\n    prototype: CSSStyleDeclaration;\n    new(): CSSStyleDeclaration;\n};\n\n/** CSSStyleRule represents a single CSS style rule. It implements the CSSRule interface with a type value of 1 (CSSRule.STYLE_RULE). */\ninterface CSSStyleRule extends CSSRule {\n    selectorText: string;\n    readonly style: CSSStyleDeclaration;\n}\n\ndeclare var CSSStyleRule: {\n    prototype: CSSStyleRule;\n    new(): CSSStyleRule;\n};\n\n/** A single CSS style sheet. It inherits properties and methods from its parent, StyleSheet. */\ninterface CSSStyleSheet extends StyleSheet {\n    readonly cssRules: CSSRuleList;\n    readonly ownerRule: CSSRule | null;\n    /** @deprecated */\n    readonly rules: CSSRuleList;\n    /** @deprecated */\n    addRule(selector?: string, style?: string, index?: number): number;\n    deleteRule(index: number): void;\n    insertRule(rule: string, index?: number): number;\n    /** @deprecated */\n    removeRule(index?: number): void;\n    replace(text: string): Promise<CSSStyleSheet>;\n    replaceSync(text: string): void;\n}\n\ndeclare var CSSStyleSheet: {\n    prototype: CSSStyleSheet;\n    new(options?: CSSStyleSheetInit): CSSStyleSheet;\n};\n\n/** An object representing a single CSS @supports at-rule. It implements the CSSConditionRule interface, and therefore the CSSRule and CSSGroupingRule interfaces with a type value of 12 (CSSRule.SUPPORTS_RULE). */\ninterface CSSSupportsRule extends CSSConditionRule {\n}\n\ndeclare var CSSSupportsRule: {\n    prototype: CSSSupportsRule;\n    new(): CSSSupportsRule;\n};\n\ninterface CSSTransition extends Animation {\n    readonly transitionProperty: string;\n    addEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: CSSTransition, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AnimationEventMap>(type: K, listener: (this: CSSTransition, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var CSSTransition: {\n    prototype: CSSTransition;\n    new(): CSSTransition;\n};\n\n/**\n * Provides a storage mechanism for Request / Response object pairs that are cached, for example as part of the ServiceWorker life cycle. Note that the Cache interface is exposed to windowed scopes as well as workers. You don't have to use it in conjunction with service workers, even though it is defined in the service worker spec.\n * Available only in secure contexts.\n */\ninterface Cache {\n    add(request: RequestInfo | URL): Promise<void>;\n    addAll(requests: RequestInfo[]): Promise<void>;\n    delete(request: RequestInfo | URL, options?: CacheQueryOptions): Promise<boolean>;\n    keys(request?: RequestInfo | URL, options?: CacheQueryOptions): Promise<ReadonlyArray<Request>>;\n    match(request: RequestInfo | URL, options?: CacheQueryOptions): Promise<Response | undefined>;\n    matchAll(request?: RequestInfo | URL, options?: CacheQueryOptions): Promise<ReadonlyArray<Response>>;\n    put(request: RequestInfo | URL, response: Response): Promise<void>;\n}\n\ndeclare var Cache: {\n    prototype: Cache;\n    new(): Cache;\n};\n\n/**\n * The storage for Cache objects.\n * Available only in secure contexts.\n */\ninterface CacheStorage {\n    delete(cacheName: string): Promise<boolean>;\n    has(cacheName: string): Promise<boolean>;\n    keys(): Promise<string[]>;\n    match(request: RequestInfo | URL, options?: MultiCacheQueryOptions): Promise<Response | undefined>;\n    open(cacheName: string): Promise<Cache>;\n}\n\ndeclare var CacheStorage: {\n    prototype: CacheStorage;\n    new(): CacheStorage;\n};\n\ninterface CanvasCaptureMediaStreamTrack extends MediaStreamTrack {\n    readonly canvas: HTMLCanvasElement;\n    requestFrame(): void;\n    addEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: CanvasCaptureMediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: CanvasCaptureMediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var CanvasCaptureMediaStreamTrack: {\n    prototype: CanvasCaptureMediaStreamTrack;\n    new(): CanvasCaptureMediaStreamTrack;\n};\n\ninterface CanvasCompositing {\n    globalAlpha: number;\n    globalCompositeOperation: GlobalCompositeOperation;\n}\n\ninterface CanvasDrawImage {\n    drawImage(image: CanvasImageSource, dx: number, dy: number): void;\n    drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void;\n    drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;\n}\n\ninterface CanvasDrawPath {\n    beginPath(): void;\n    clip(fillRule?: CanvasFillRule): void;\n    clip(path: Path2D, fillRule?: CanvasFillRule): void;\n    fill(fillRule?: CanvasFillRule): void;\n    fill(path: Path2D, fillRule?: CanvasFillRule): void;\n    isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean;\n    isPointInPath(path: Path2D, x: number, y: number, fillRule?: CanvasFillRule): boolean;\n    isPointInStroke(x: number, y: number): boolean;\n    isPointInStroke(path: Path2D, x: number, y: number): boolean;\n    stroke(): void;\n    stroke(path: Path2D): void;\n}\n\ninterface CanvasFillStrokeStyles {\n    fillStyle: string | CanvasGradient | CanvasPattern;\n    strokeStyle: string | CanvasGradient | CanvasPattern;\n    createConicGradient(startAngle: number, x: number, y: number): CanvasGradient;\n    createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;\n    createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null;\n    createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;\n}\n\ninterface CanvasFilters {\n    filter: string;\n}\n\n/** An opaque object describing a gradient. It is returned by the methods CanvasRenderingContext2D.createLinearGradient() or CanvasRenderingContext2D.createRadialGradient(). */\ninterface CanvasGradient {\n    /**\n     * Adds a color stop with the given color to the gradient at the given offset. 0.0 is the offset at one end of the gradient, 1.0 is the offset at the other end.\n     *\n     * Throws an \"IndexSizeError\" DOMException if the offset is out of range. Throws a \"SyntaxError\" DOMException if the color cannot be parsed.\n     */\n    addColorStop(offset: number, color: string): void;\n}\n\ndeclare var CanvasGradient: {\n    prototype: CanvasGradient;\n    new(): CanvasGradient;\n};\n\ninterface CanvasImageData {\n    createImageData(sw: number, sh: number, settings?: ImageDataSettings): ImageData;\n    createImageData(imagedata: ImageData): ImageData;\n    getImageData(sx: number, sy: number, sw: number, sh: number, settings?: ImageDataSettings): ImageData;\n    putImageData(imagedata: ImageData, dx: number, dy: number): void;\n    putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void;\n}\n\ninterface CanvasImageSmoothing {\n    imageSmoothingEnabled: boolean;\n    imageSmoothingQuality: ImageSmoothingQuality;\n}\n\ninterface CanvasPath {\n    arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;\n    arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;\n    bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;\n    closePath(): void;\n    ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;\n    lineTo(x: number, y: number): void;\n    moveTo(x: number, y: number): void;\n    quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;\n    rect(x: number, y: number, w: number, h: number): void;\n    roundRect(x: number, y: number, w: number, h: number, radii?: number | DOMPointInit | (number | DOMPointInit)[]): void;\n}\n\ninterface CanvasPathDrawingStyles {\n    lineCap: CanvasLineCap;\n    lineDashOffset: number;\n    lineJoin: CanvasLineJoin;\n    lineWidth: number;\n    miterLimit: number;\n    getLineDash(): number[];\n    setLineDash(segments: number[]): void;\n}\n\n/** An opaque object describing a pattern, based on an image, a canvas, or a video, created by the CanvasRenderingContext2D.createPattern() method. */\ninterface CanvasPattern {\n    /** Sets the transformation matrix that will be used when rendering the pattern during a fill or stroke painting operation. */\n    setTransform(transform?: DOMMatrix2DInit): void;\n}\n\ndeclare var CanvasPattern: {\n    prototype: CanvasPattern;\n    new(): CanvasPattern;\n};\n\ninterface CanvasRect {\n    clearRect(x: number, y: number, w: number, h: number): void;\n    fillRect(x: number, y: number, w: number, h: number): void;\n    strokeRect(x: number, y: number, w: number, h: number): void;\n}\n\n/** The CanvasRenderingContext2D interface, part of the Canvas API, provides the 2D rendering context for the drawing surface of a <canvas> element. It is used for drawing shapes, text, images, and other objects. */\ninterface CanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform, CanvasUserInterface {\n    readonly canvas: HTMLCanvasElement;\n    getContextAttributes(): CanvasRenderingContext2DSettings;\n}\n\ndeclare var CanvasRenderingContext2D: {\n    prototype: CanvasRenderingContext2D;\n    new(): CanvasRenderingContext2D;\n};\n\ninterface CanvasShadowStyles {\n    shadowBlur: number;\n    shadowColor: string;\n    shadowOffsetX: number;\n    shadowOffsetY: number;\n}\n\ninterface CanvasState {\n    restore(): void;\n    save(): void;\n}\n\ninterface CanvasText {\n    fillText(text: string, x: number, y: number, maxWidth?: number): void;\n    measureText(text: string): TextMetrics;\n    strokeText(text: string, x: number, y: number, maxWidth?: number): void;\n}\n\ninterface CanvasTextDrawingStyles {\n    direction: CanvasDirection;\n    font: string;\n    fontKerning: CanvasFontKerning;\n    textAlign: CanvasTextAlign;\n    textBaseline: CanvasTextBaseline;\n}\n\ninterface CanvasTransform {\n    getTransform(): DOMMatrix;\n    resetTransform(): void;\n    rotate(angle: number): void;\n    scale(x: number, y: number): void;\n    setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;\n    setTransform(transform?: DOMMatrix2DInit): void;\n    transform(a: number, b: number, c: number, d: number, e: number, f: number): void;\n    translate(x: number, y: number): void;\n}\n\ninterface CanvasUserInterface {\n    drawFocusIfNeeded(element: Element): void;\n    drawFocusIfNeeded(path: Path2D, element: Element): void;\n}\n\n/** The ChannelMergerNode interface, often used in conjunction with its opposite, ChannelSplitterNode, reunites different mono inputs into a single output. Each input is used to fill a channel of the output. This is useful for accessing each channels separately, e.g. for performing channel mixing where gain must be separately controlled on each channel. */\ninterface ChannelMergerNode extends AudioNode {\n}\n\ndeclare var ChannelMergerNode: {\n    prototype: ChannelMergerNode;\n    new(context: BaseAudioContext, options?: ChannelMergerOptions): ChannelMergerNode;\n};\n\n/** The ChannelSplitterNode interface, often used in conjunction with its opposite, ChannelMergerNode, separates the different channels of an audio source into a set of mono outputs. This is useful for accessing each channel separately, e.g. for performing channel mixing where gain must be separately controlled on each channel. */\ninterface ChannelSplitterNode extends AudioNode {\n}\n\ndeclare var ChannelSplitterNode: {\n    prototype: ChannelSplitterNode;\n    new(context: BaseAudioContext, options?: ChannelSplitterOptions): ChannelSplitterNode;\n};\n\n/** The CharacterData abstract interface represents a Node object that contains characters. This is an abstract interface, meaning there aren't any object of type CharacterData: it is implemented by other interfaces, like Text, Comment, or ProcessingInstruction which aren't abstract. */\ninterface CharacterData extends Node, ChildNode, NonDocumentTypeChildNode {\n    data: string;\n    readonly length: number;\n    readonly ownerDocument: Document;\n    appendData(data: string): void;\n    deleteData(offset: number, count: number): void;\n    insertData(offset: number, data: string): void;\n    replaceData(offset: number, count: number, data: string): void;\n    substringData(offset: number, count: number): string;\n}\n\ndeclare var CharacterData: {\n    prototype: CharacterData;\n    new(): CharacterData;\n};\n\ninterface ChildNode extends Node {\n    /**\n     * Inserts nodes just after node, while replacing strings in nodes with equivalent Text nodes.\n     *\n     * Throws a \"HierarchyRequestError\" DOMException if the constraints of the node tree are violated.\n     */\n    after(...nodes: (Node | string)[]): void;\n    /**\n     * Inserts nodes just before node, while replacing strings in nodes with equivalent Text nodes.\n     *\n     * Throws a \"HierarchyRequestError\" DOMException if the constraints of the node tree are violated.\n     */\n    before(...nodes: (Node | string)[]): void;\n    /** Removes node. */\n    remove(): void;\n    /**\n     * Replaces node with nodes, while replacing strings in nodes with equivalent Text nodes.\n     *\n     * Throws a \"HierarchyRequestError\" DOMException if the constraints of the node tree are violated.\n     */\n    replaceWith(...nodes: (Node | string)[]): void;\n}\n\n/** @deprecated */\ninterface ClientRect extends DOMRect {\n}\n\n/** Available only in secure contexts. */\ninterface Clipboard extends EventTarget {\n    read(): Promise<ClipboardItems>;\n    readText(): Promise<string>;\n    write(data: ClipboardItems): Promise<void>;\n    writeText(data: string): Promise<void>;\n}\n\ndeclare var Clipboard: {\n    prototype: Clipboard;\n    new(): Clipboard;\n};\n\n/** Events providing information related to modification of the clipboard, that is cut, copy, and paste events. */\ninterface ClipboardEvent extends Event {\n    readonly clipboardData: DataTransfer | null;\n}\n\ndeclare var ClipboardEvent: {\n    prototype: ClipboardEvent;\n    new(type: string, eventInitDict?: ClipboardEventInit): ClipboardEvent;\n};\n\n/** Available only in secure contexts. */\ninterface ClipboardItem {\n    readonly presentationStyle: PresentationStyle;\n    readonly types: ReadonlyArray<string>;\n    getType(type: string): Promise<Blob>;\n}\n\ndeclare var ClipboardItem: {\n    prototype: ClipboardItem;\n    new(items: Record<string, string | Blob | PromiseLike<string | Blob>>, options?: ClipboardItemOptions): ClipboardItem;\n};\n\n/** A CloseEvent is sent to clients using WebSockets when the connection is closed. This is delivered to the listener indicated by the WebSocket object's onclose attribute. */\ninterface CloseEvent extends Event {\n    /** Returns the WebSocket connection close code provided by the server. */\n    readonly code: number;\n    /** Returns the WebSocket connection close reason provided by the server. */\n    readonly reason: string;\n    /** Returns true if the connection closed cleanly; false otherwise. */\n    readonly wasClean: boolean;\n}\n\ndeclare var CloseEvent: {\n    prototype: CloseEvent;\n    new(type: string, eventInitDict?: CloseEventInit): CloseEvent;\n};\n\n/** Textual notations within markup; although it is generally not visually shown, such comments are available to be read in the source view. */\ninterface Comment extends CharacterData {\n}\n\ndeclare var Comment: {\n    prototype: Comment;\n    new(data?: string): Comment;\n};\n\n/** The DOM CompositionEvent represents events that occur due to the user indirectly entering text. */\ninterface CompositionEvent extends UIEvent {\n    readonly data: string;\n    /** @deprecated */\n    initCompositionEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: WindowProxy | null, dataArg?: string): void;\n}\n\ndeclare var CompositionEvent: {\n    prototype: CompositionEvent;\n    new(type: string, eventInitDict?: CompositionEventInit): CompositionEvent;\n};\n\ninterface ConstantSourceNode extends AudioScheduledSourceNode {\n    readonly offset: AudioParam;\n    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var ConstantSourceNode: {\n    prototype: ConstantSourceNode;\n    new(context: BaseAudioContext, options?: ConstantSourceOptions): ConstantSourceNode;\n};\n\n/** An AudioNode that performs a Linear Convolution on a given AudioBuffer, often used to achieve a reverb effect. A ConvolverNode always has exactly one input and one output. */\ninterface ConvolverNode extends AudioNode {\n    buffer: AudioBuffer | null;\n    normalize: boolean;\n}\n\ndeclare var ConvolverNode: {\n    prototype: ConvolverNode;\n    new(context: BaseAudioContext, options?: ConvolverOptions): ConvolverNode;\n};\n\n/** This Streams API interface provides\\xA0a built-in byte length queuing strategy that can be used when constructing streams. */\ninterface CountQueuingStrategy extends QueuingStrategy {\n    readonly highWaterMark: number;\n    readonly size: QueuingStrategySize;\n}\n\ndeclare var CountQueuingStrategy: {\n    prototype: CountQueuingStrategy;\n    new(init: QueuingStrategyInit): CountQueuingStrategy;\n};\n\n/** Available only in secure contexts. */\ninterface Credential {\n    readonly id: string;\n    readonly type: string;\n}\n\ndeclare var Credential: {\n    prototype: Credential;\n    new(): Credential;\n};\n\n/** Available only in secure contexts. */\ninterface CredentialsContainer {\n    create(options?: CredentialCreationOptions): Promise<Credential | null>;\n    get(options?: CredentialRequestOptions): Promise<Credential | null>;\n    preventSilentAccess(): Promise<void>;\n    store(credential: Credential): Promise<Credential>;\n}\n\ndeclare var CredentialsContainer: {\n    prototype: CredentialsContainer;\n    new(): CredentialsContainer;\n};\n\n/** Basic cryptography features available in the current context. It allows access to a cryptographically strong random number generator and to cryptographic primitives. */\ninterface Crypto {\n    /** Available only in secure contexts. */\n    readonly subtle: SubtleCrypto;\n    getRandomValues<T extends ArrayBufferView | null>(array: T): T;\n    /** Available only in secure contexts. */\n    randomUUID(): \\`\\${string}-\\${string}-\\${string}-\\${string}-\\${string}\\`;\n}\n\ndeclare var Crypto: {\n    prototype: Crypto;\n    new(): Crypto;\n};\n\n/**\n * The CryptoKey dictionary of the Web Crypto API represents a cryptographic key.\n * Available only in secure contexts.\n */\ninterface CryptoKey {\n    readonly algorithm: KeyAlgorithm;\n    readonly extractable: boolean;\n    readonly type: KeyType;\n    readonly usages: KeyUsage[];\n}\n\ndeclare var CryptoKey: {\n    prototype: CryptoKey;\n    new(): CryptoKey;\n};\n\ninterface CustomElementRegistry {\n    define(name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions): void;\n    get(name: string): CustomElementConstructor | undefined;\n    upgrade(root: Node): void;\n    whenDefined(name: string): Promise<CustomElementConstructor>;\n}\n\ndeclare var CustomElementRegistry: {\n    prototype: CustomElementRegistry;\n    new(): CustomElementRegistry;\n};\n\ninterface CustomEvent<T = any> extends Event {\n    /** Returns any custom data event was created with. Typically used for synthetic events. */\n    readonly detail: T;\n    /** @deprecated */\n    initCustomEvent(type: string, bubbles?: boolean, cancelable?: boolean, detail?: T): void;\n}\n\ndeclare var CustomEvent: {\n    prototype: CustomEvent;\n    new<T>(type: string, eventInitDict?: CustomEventInit<T>): CustomEvent<T>;\n};\n\n/** An abnormal event (called an exception) which occurs as a result of calling a method or accessing a property of a web API. */\ninterface DOMException extends Error {\n    /** @deprecated */\n    readonly code: number;\n    readonly message: string;\n    readonly name: string;\n    readonly INDEX_SIZE_ERR: 1;\n    readonly DOMSTRING_SIZE_ERR: 2;\n    readonly HIERARCHY_REQUEST_ERR: 3;\n    readonly WRONG_DOCUMENT_ERR: 4;\n    readonly INVALID_CHARACTER_ERR: 5;\n    readonly NO_DATA_ALLOWED_ERR: 6;\n    readonly NO_MODIFICATION_ALLOWED_ERR: 7;\n    readonly NOT_FOUND_ERR: 8;\n    readonly NOT_SUPPORTED_ERR: 9;\n    readonly INUSE_ATTRIBUTE_ERR: 10;\n    readonly INVALID_STATE_ERR: 11;\n    readonly SYNTAX_ERR: 12;\n    readonly INVALID_MODIFICATION_ERR: 13;\n    readonly NAMESPACE_ERR: 14;\n    readonly INVALID_ACCESS_ERR: 15;\n    readonly VALIDATION_ERR: 16;\n    readonly TYPE_MISMATCH_ERR: 17;\n    readonly SECURITY_ERR: 18;\n    readonly NETWORK_ERR: 19;\n    readonly ABORT_ERR: 20;\n    readonly URL_MISMATCH_ERR: 21;\n    readonly QUOTA_EXCEEDED_ERR: 22;\n    readonly TIMEOUT_ERR: 23;\n    readonly INVALID_NODE_TYPE_ERR: 24;\n    readonly DATA_CLONE_ERR: 25;\n}\n\ndeclare var DOMException: {\n    prototype: DOMException;\n    new(message?: string, name?: string): DOMException;\n    readonly INDEX_SIZE_ERR: 1;\n    readonly DOMSTRING_SIZE_ERR: 2;\n    readonly HIERARCHY_REQUEST_ERR: 3;\n    readonly WRONG_DOCUMENT_ERR: 4;\n    readonly INVALID_CHARACTER_ERR: 5;\n    readonly NO_DATA_ALLOWED_ERR: 6;\n    readonly NO_MODIFICATION_ALLOWED_ERR: 7;\n    readonly NOT_FOUND_ERR: 8;\n    readonly NOT_SUPPORTED_ERR: 9;\n    readonly INUSE_ATTRIBUTE_ERR: 10;\n    readonly INVALID_STATE_ERR: 11;\n    readonly SYNTAX_ERR: 12;\n    readonly INVALID_MODIFICATION_ERR: 13;\n    readonly NAMESPACE_ERR: 14;\n    readonly INVALID_ACCESS_ERR: 15;\n    readonly VALIDATION_ERR: 16;\n    readonly TYPE_MISMATCH_ERR: 17;\n    readonly SECURITY_ERR: 18;\n    readonly NETWORK_ERR: 19;\n    readonly ABORT_ERR: 20;\n    readonly URL_MISMATCH_ERR: 21;\n    readonly QUOTA_EXCEEDED_ERR: 22;\n    readonly TIMEOUT_ERR: 23;\n    readonly INVALID_NODE_TYPE_ERR: 24;\n    readonly DATA_CLONE_ERR: 25;\n};\n\n/** An object providing methods which are not dependent on any particular document. Such an object is returned by the Document.implementation property. */\ninterface DOMImplementation {\n    createDocument(namespace: string | null, qualifiedName: string | null, doctype?: DocumentType | null): XMLDocument;\n    createDocumentType(qualifiedName: string, publicId: string, systemId: string): DocumentType;\n    createHTMLDocument(title?: string): Document;\n    /** @deprecated */\n    hasFeature(...args: any[]): true;\n}\n\ndeclare var DOMImplementation: {\n    prototype: DOMImplementation;\n    new(): DOMImplementation;\n};\n\ninterface DOMMatrix extends DOMMatrixReadOnly {\n    a: number;\n    b: number;\n    c: number;\n    d: number;\n    e: number;\n    f: number;\n    m11: number;\n    m12: number;\n    m13: number;\n    m14: number;\n    m21: number;\n    m22: number;\n    m23: number;\n    m24: number;\n    m31: number;\n    m32: number;\n    m33: number;\n    m34: number;\n    m41: number;\n    m42: number;\n    m43: number;\n    m44: number;\n    invertSelf(): DOMMatrix;\n    multiplySelf(other?: DOMMatrixInit): DOMMatrix;\n    preMultiplySelf(other?: DOMMatrixInit): DOMMatrix;\n    rotateAxisAngleSelf(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;\n    rotateFromVectorSelf(x?: number, y?: number): DOMMatrix;\n    rotateSelf(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;\n    scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n    scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n    setMatrixValue(transformList: string): DOMMatrix;\n    skewXSelf(sx?: number): DOMMatrix;\n    skewYSelf(sy?: number): DOMMatrix;\n    translateSelf(tx?: number, ty?: number, tz?: number): DOMMatrix;\n}\n\ndeclare var DOMMatrix: {\n    prototype: DOMMatrix;\n    new(init?: string | number[]): DOMMatrix;\n    fromFloat32Array(array32: Float32Array): DOMMatrix;\n    fromFloat64Array(array64: Float64Array): DOMMatrix;\n    fromMatrix(other?: DOMMatrixInit): DOMMatrix;\n};\n\ntype SVGMatrix = DOMMatrix;\ndeclare var SVGMatrix: typeof DOMMatrix;\n\ntype WebKitCSSMatrix = DOMMatrix;\ndeclare var WebKitCSSMatrix: typeof DOMMatrix;\n\ninterface DOMMatrixReadOnly {\n    readonly a: number;\n    readonly b: number;\n    readonly c: number;\n    readonly d: number;\n    readonly e: number;\n    readonly f: number;\n    readonly is2D: boolean;\n    readonly isIdentity: boolean;\n    readonly m11: number;\n    readonly m12: number;\n    readonly m13: number;\n    readonly m14: number;\n    readonly m21: number;\n    readonly m22: number;\n    readonly m23: number;\n    readonly m24: number;\n    readonly m31: number;\n    readonly m32: number;\n    readonly m33: number;\n    readonly m34: number;\n    readonly m41: number;\n    readonly m42: number;\n    readonly m43: number;\n    readonly m44: number;\n    flipX(): DOMMatrix;\n    flipY(): DOMMatrix;\n    inverse(): DOMMatrix;\n    multiply(other?: DOMMatrixInit): DOMMatrix;\n    rotate(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;\n    rotateAxisAngle(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;\n    rotateFromVector(x?: number, y?: number): DOMMatrix;\n    scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n    scale3d(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n    /** @deprecated */\n    scaleNonUniform(scaleX?: number, scaleY?: number): DOMMatrix;\n    skewX(sx?: number): DOMMatrix;\n    skewY(sy?: number): DOMMatrix;\n    toFloat32Array(): Float32Array;\n    toFloat64Array(): Float64Array;\n    toJSON(): any;\n    transformPoint(point?: DOMPointInit): DOMPoint;\n    translate(tx?: number, ty?: number, tz?: number): DOMMatrix;\n    toString(): string;\n}\n\ndeclare var DOMMatrixReadOnly: {\n    prototype: DOMMatrixReadOnly;\n    new(init?: string | number[]): DOMMatrixReadOnly;\n    fromFloat32Array(array32: Float32Array): DOMMatrixReadOnly;\n    fromFloat64Array(array64: Float64Array): DOMMatrixReadOnly;\n    fromMatrix(other?: DOMMatrixInit): DOMMatrixReadOnly;\n    toString(): string;\n};\n\n/** Provides the ability to parse XML or HTML source code from a string into a DOM Document. */\ninterface DOMParser {\n    /**\n     * Parses string using either the HTML or XML parser, according to type, and returns the resulting Document. type can be \"text/html\" (which will invoke the HTML parser), or any of \"text/xml\", \"application/xml\", \"application/xhtml+xml\", or \"image/svg+xml\" (which will invoke the XML parser).\n     *\n     * For the XML parser, if string cannot be parsed, then the returned Document will contain elements describing the resulting error.\n     *\n     * Note that script elements are not evaluated during parsing, and the resulting document's encoding will always be UTF-8.\n     *\n     * Values other than the above for type will cause a TypeError exception to be thrown.\n     */\n    parseFromString(string: string, type: DOMParserSupportedType): Document;\n}\n\ndeclare var DOMParser: {\n    prototype: DOMParser;\n    new(): DOMParser;\n};\n\ninterface DOMPoint extends DOMPointReadOnly {\n    w: number;\n    x: number;\n    y: number;\n    z: number;\n}\n\ndeclare var DOMPoint: {\n    prototype: DOMPoint;\n    new(x?: number, y?: number, z?: number, w?: number): DOMPoint;\n    fromPoint(other?: DOMPointInit): DOMPoint;\n};\n\ntype SVGPoint = DOMPoint;\ndeclare var SVGPoint: typeof DOMPoint;\n\ninterface DOMPointReadOnly {\n    readonly w: number;\n    readonly x: number;\n    readonly y: number;\n    readonly z: number;\n    matrixTransform(matrix?: DOMMatrixInit): DOMPoint;\n    toJSON(): any;\n}\n\ndeclare var DOMPointReadOnly: {\n    prototype: DOMPointReadOnly;\n    new(x?: number, y?: number, z?: number, w?: number): DOMPointReadOnly;\n    fromPoint(other?: DOMPointInit): DOMPointReadOnly;\n};\n\ninterface DOMQuad {\n    readonly p1: DOMPoint;\n    readonly p2: DOMPoint;\n    readonly p3: DOMPoint;\n    readonly p4: DOMPoint;\n    getBounds(): DOMRect;\n    toJSON(): any;\n}\n\ndeclare var DOMQuad: {\n    prototype: DOMQuad;\n    new(p1?: DOMPointInit, p2?: DOMPointInit, p3?: DOMPointInit, p4?: DOMPointInit): DOMQuad;\n    fromQuad(other?: DOMQuadInit): DOMQuad;\n    fromRect(other?: DOMRectInit): DOMQuad;\n};\n\ninterface DOMRect extends DOMRectReadOnly {\n    height: number;\n    width: number;\n    x: number;\n    y: number;\n}\n\ndeclare var DOMRect: {\n    prototype: DOMRect;\n    new(x?: number, y?: number, width?: number, height?: number): DOMRect;\n    fromRect(other?: DOMRectInit): DOMRect;\n};\n\ntype SVGRect = DOMRect;\ndeclare var SVGRect: typeof DOMRect;\n\ninterface DOMRectList {\n    readonly length: number;\n    item(index: number): DOMRect | null;\n    [index: number]: DOMRect;\n}\n\ndeclare var DOMRectList: {\n    prototype: DOMRectList;\n    new(): DOMRectList;\n};\n\ninterface DOMRectReadOnly {\n    readonly bottom: number;\n    readonly height: number;\n    readonly left: number;\n    readonly right: number;\n    readonly top: number;\n    readonly width: number;\n    readonly x: number;\n    readonly y: number;\n    toJSON(): any;\n}\n\ndeclare var DOMRectReadOnly: {\n    prototype: DOMRectReadOnly;\n    new(x?: number, y?: number, width?: number, height?: number): DOMRectReadOnly;\n    fromRect(other?: DOMRectInit): DOMRectReadOnly;\n};\n\n/** A type returned by some APIs which contains a list of DOMString (strings). */\ninterface DOMStringList {\n    /** Returns the number of strings in strings. */\n    readonly length: number;\n    /** Returns true if strings contains string, and false otherwise. */\n    contains(string: string): boolean;\n    /** Returns the string with index index from strings. */\n    item(index: number): string | null;\n    [index: number]: string;\n}\n\ndeclare var DOMStringList: {\n    prototype: DOMStringList;\n    new(): DOMStringList;\n};\n\n/** Used by the dataset\\xA0HTML\\xA0attribute to represent data for custom attributes added to elements. */\ninterface DOMStringMap {\n    [name: string]: string | undefined;\n}\n\ndeclare var DOMStringMap: {\n    prototype: DOMStringMap;\n    new(): DOMStringMap;\n};\n\n/** A set of space-separated tokens. Such a set is returned by Element.classList, HTMLLinkElement.relList, HTMLAnchorElement.relList, HTMLAreaElement.relList, HTMLIframeElement.sandbox, or HTMLOutputElement.htmlFor. It is indexed beginning with 0 as with JavaScript Array objects. DOMTokenList is always case-sensitive. */\ninterface DOMTokenList {\n    /** Returns the number of tokens. */\n    readonly length: number;\n    /**\n     * Returns the associated set as string.\n     *\n     * Can be set, to change the associated attribute.\n     */\n    value: string;\n    toString(): string;\n    /**\n     * Adds all arguments passed, except those already present.\n     *\n     * Throws a \"SyntaxError\" DOMException if one of the arguments is the empty string.\n     *\n     * Throws an \"InvalidCharacterError\" DOMException if one of the arguments contains any ASCII whitespace.\n     */\n    add(...tokens: string[]): void;\n    /** Returns true if token is present, and false otherwise. */\n    contains(token: string): boolean;\n    /** Returns the token with index index. */\n    item(index: number): string | null;\n    /**\n     * Removes arguments passed, if they are present.\n     *\n     * Throws a \"SyntaxError\" DOMException if one of the arguments is the empty string.\n     *\n     * Throws an \"InvalidCharacterError\" DOMException if one of the arguments contains any ASCII whitespace.\n     */\n    remove(...tokens: string[]): void;\n    /**\n     * Replaces token with newToken.\n     *\n     * Returns true if token was replaced with newToken, and false otherwise.\n     *\n     * Throws a \"SyntaxError\" DOMException if one of the arguments is the empty string.\n     *\n     * Throws an \"InvalidCharacterError\" DOMException if one of the arguments contains any ASCII whitespace.\n     */\n    replace(token: string, newToken: string): boolean;\n    /**\n     * Returns true if token is in the associated attribute's supported tokens. Returns false otherwise.\n     *\n     * Throws a TypeError if the associated attribute has no supported tokens defined.\n     */\n    supports(token: string): boolean;\n    /**\n     * If force is not given, \"toggles\" token, removing it if it's present and adding it if it's not present. If force is true, adds token (same as add()). If force is false, removes token (same as remove()).\n     *\n     * Returns true if token is now present, and false otherwise.\n     *\n     * Throws a \"SyntaxError\" DOMException if token is empty.\n     *\n     * Throws an \"InvalidCharacterError\" DOMException if token contains any spaces.\n     */\n    toggle(token: string, force?: boolean): boolean;\n    forEach(callbackfn: (value: string, key: number, parent: DOMTokenList) => void, thisArg?: any): void;\n    [index: number]: string;\n}\n\ndeclare var DOMTokenList: {\n    prototype: DOMTokenList;\n    new(): DOMTokenList;\n};\n\n/** Used to hold the data that is being dragged during a drag and drop operation. It may hold one or more data items, each of one or more data types. For more information about drag and drop, see HTML Drag and Drop API. */\ninterface DataTransfer {\n    /**\n     * Returns the kind of operation that is currently selected. If the kind of operation isn't one of those that is allowed by the effectAllowed attribute, then the operation will fail.\n     *\n     * Can be set, to change the selected operation.\n     *\n     * The possible values are \"none\", \"copy\", \"link\", and \"move\".\n     */\n    dropEffect: \"none\" | \"copy\" | \"link\" | \"move\";\n    /**\n     * Returns the kinds of operations that are to be allowed.\n     *\n     * Can be set (during the dragstart event), to change the allowed operations.\n     *\n     * The possible values are \"none\", \"copy\", \"copyLink\", \"copyMove\", \"link\", \"linkMove\", \"move\", \"all\", and \"uninitialized\",\n     */\n    effectAllowed: \"none\" | \"copy\" | \"copyLink\" | \"copyMove\" | \"link\" | \"linkMove\" | \"move\" | \"all\" | \"uninitialized\";\n    /** Returns a FileList of the files being dragged, if any. */\n    readonly files: FileList;\n    /** Returns a DataTransferItemList object, with the drag data. */\n    readonly items: DataTransferItemList;\n    /** Returns a frozen array listing the formats that were set in the dragstart event. In addition, if any files are being dragged, then one of the types will be the string \"Files\". */\n    readonly types: ReadonlyArray<string>;\n    /** Removes the data of the specified formats. Removes all data if the argument is omitted. */\n    clearData(format?: string): void;\n    /** Returns the specified data. If there is no such data, returns the empty string. */\n    getData(format: string): string;\n    /** Adds the specified data. */\n    setData(format: string, data: string): void;\n    /** Uses the given element to update the drag feedback, replacing any previously specified feedback. */\n    setDragImage(image: Element, x: number, y: number): void;\n}\n\ndeclare var DataTransfer: {\n    prototype: DataTransfer;\n    new(): DataTransfer;\n};\n\n/** One drag data item. During a drag operation, each drag event has a dataTransfer property which contains a list of drag data items. Each item in the list is a DataTransferItem object. */\ninterface DataTransferItem {\n    /** Returns the drag data item kind, one of: \"string\", \"file\". */\n    readonly kind: string;\n    /** Returns the drag data item type string. */\n    readonly type: string;\n    /** Returns a File object, if the drag data item kind is File. */\n    getAsFile(): File | null;\n    /** Invokes the callback with the string data as the argument, if the drag data item kind is text. */\n    getAsString(callback: FunctionStringCallback | null): void;\n    webkitGetAsEntry(): FileSystemEntry | null;\n}\n\ndeclare var DataTransferItem: {\n    prototype: DataTransferItem;\n    new(): DataTransferItem;\n};\n\n/** A list of DataTransferItem objects representing items being dragged. During a drag operation, each DragEvent has a dataTransfer property and that property is a DataTransferItemList. */\ninterface DataTransferItemList {\n    /** Returns the number of items in the drag data store. */\n    readonly length: number;\n    /** Adds a new entry for the given data to the drag data store. If the data is plain text then a type string has to be provided also. */\n    add(data: string, type: string): DataTransferItem | null;\n    add(data: File): DataTransferItem | null;\n    /** Removes all the entries in the drag data store. */\n    clear(): void;\n    /** Removes the indexth entry in the drag data store. */\n    remove(index: number): void;\n    [index: number]: DataTransferItem;\n}\n\ndeclare var DataTransferItemList: {\n    prototype: DataTransferItemList;\n    new(): DataTransferItemList;\n};\n\n/** A delay-line; an AudioNode audio-processing module that causes a delay between the arrival of an input data and its propagation to the output. */\ninterface DelayNode extends AudioNode {\n    readonly delayTime: AudioParam;\n}\n\ndeclare var DelayNode: {\n    prototype: DelayNode;\n    new(context: BaseAudioContext, options?: DelayOptions): DelayNode;\n};\n\n/**\n * The DeviceMotionEvent provides web developers with information about the speed of changes for the device's position and orientation.\n * Available only in secure contexts.\n */\ninterface DeviceMotionEvent extends Event {\n    readonly acceleration: DeviceMotionEventAcceleration | null;\n    readonly accelerationIncludingGravity: DeviceMotionEventAcceleration | null;\n    readonly interval: number;\n    readonly rotationRate: DeviceMotionEventRotationRate | null;\n}\n\ndeclare var DeviceMotionEvent: {\n    prototype: DeviceMotionEvent;\n    new(type: string, eventInitDict?: DeviceMotionEventInit): DeviceMotionEvent;\n};\n\n/** Available only in secure contexts. */\ninterface DeviceMotionEventAcceleration {\n    readonly x: number | null;\n    readonly y: number | null;\n    readonly z: number | null;\n}\n\n/** Available only in secure contexts. */\ninterface DeviceMotionEventRotationRate {\n    readonly alpha: number | null;\n    readonly beta: number | null;\n    readonly gamma: number | null;\n}\n\n/**\n * The DeviceOrientationEvent provides web developers with information from the physical orientation of the device running the web page.\n * Available only in secure contexts.\n */\ninterface DeviceOrientationEvent extends Event {\n    readonly absolute: boolean;\n    readonly alpha: number | null;\n    readonly beta: number | null;\n    readonly gamma: number | null;\n}\n\ndeclare var DeviceOrientationEvent: {\n    prototype: DeviceOrientationEvent;\n    new(type: string, eventInitDict?: DeviceOrientationEventInit): DeviceOrientationEvent;\n};\n\ninterface DocumentEventMap extends GlobalEventHandlersEventMap {\n    \"DOMContentLoaded\": Event;\n    \"fullscreenchange\": Event;\n    \"fullscreenerror\": Event;\n    \"pointerlockchange\": Event;\n    \"pointerlockerror\": Event;\n    \"readystatechange\": Event;\n    \"visibilitychange\": Event;\n}\n\n/** Any web page loaded in the browser and serves as an entry point into the web page's content, which is the DOM tree. */\ninterface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEventHandlers, NonElementParentNode, ParentNode, XPathEvaluatorBase {\n    /** Sets or gets the URL for the current document. */\n    readonly URL: string;\n    /**\n     * Sets or gets the color of all active links in the document.\n     * @deprecated\n     */\n    alinkColor: string;\n    /**\n     * Returns a reference to the collection of elements contained by the object.\n     * @deprecated\n     */\n    readonly all: HTMLAllCollection;\n    /**\n     * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order.\n     * @deprecated\n     */\n    readonly anchors: HTMLCollectionOf<HTMLAnchorElement>;\n    /**\n     * Retrieves a collection of all applet objects in the document.\n     * @deprecated\n     */\n    readonly applets: HTMLCollection;\n    /**\n     * Deprecated. Sets or retrieves a value that indicates the background color behind the object.\n     * @deprecated\n     */\n    bgColor: string;\n    /** Specifies the beginning and end of the document body. */\n    body: HTMLElement;\n    /** Returns document's encoding. */\n    readonly characterSet: string;\n    /**\n     * Gets or sets the character set used to encode the object.\n     * @deprecated This is a legacy alias of \\`characterSet\\`.\n     */\n    readonly charset: string;\n    /** Gets a value that indicates whether standards-compliant mode is switched on for the object. */\n    readonly compatMode: string;\n    /** Returns document's content type. */\n    readonly contentType: string;\n    /**\n     * Returns the HTTP cookies that apply to the Document. If there are no cookies or cookies can't be applied to this resource, the empty string will be returned.\n     *\n     * Can be set, to add a new cookie to the element's set of HTTP cookies.\n     *\n     * If the contents are sandboxed into a unique origin (e.g. in an iframe with the sandbox attribute), a \"SecurityError\" DOMException will be thrown on getting and setting.\n     */\n    cookie: string;\n    /**\n     * Returns the script element, or the SVG script element, that is currently executing, as long as the element represents a classic script. In the case of reentrant script execution, returns the one that most recently started executing amongst those that have not yet finished executing.\n     *\n     * Returns null if the Document is not currently executing a script or SVG script element (e.g., because the running script is an event handler, or a timeout), or if the currently executing script or SVG script element represents a module script.\n     */\n    readonly currentScript: HTMLOrSVGScriptElement | null;\n    /** Returns the Window object of the active document. */\n    readonly defaultView: (WindowProxy & typeof globalThis) | null;\n    /** Sets or gets a value that indicates whether the document can be edited. */\n    designMode: string;\n    /** Sets or retrieves a value that indicates the reading order of the object. */\n    dir: string;\n    /** Gets an object representing the document type declaration associated with the current document. */\n    readonly doctype: DocumentType | null;\n    /** Gets a reference to the root node of the document. */\n    readonly documentElement: HTMLElement;\n    /** Returns document's URL. */\n    readonly documentURI: string;\n    /**\n     * Sets or gets the security domain of the document.\n     * @deprecated\n     */\n    domain: string;\n    /** Retrieves a collection of all embed objects in the document. */\n    readonly embeds: HTMLCollectionOf<HTMLEmbedElement>;\n    /**\n     * Sets or gets the foreground (text) color of the document.\n     * @deprecated\n     */\n    fgColor: string;\n    /** Retrieves a collection, in source order, of all form objects in the document. */\n    readonly forms: HTMLCollectionOf<HTMLFormElement>;\n    /** @deprecated */\n    readonly fullscreen: boolean;\n    /** Returns true if document has the ability to display elements fullscreen and fullscreen is supported, or false otherwise. */\n    readonly fullscreenEnabled: boolean;\n    /** Returns the head element. */\n    readonly head: HTMLHeadElement;\n    readonly hidden: boolean;\n    /** Retrieves a collection, in source order, of img objects in the document. */\n    readonly images: HTMLCollectionOf<HTMLImageElement>;\n    /** Gets the implementation object of the current document. */\n    readonly implementation: DOMImplementation;\n    /**\n     * Returns the character encoding used to create the webpage that is loaded into the document object.\n     * @deprecated This is a legacy alias of \\`characterSet\\`.\n     */\n    readonly inputEncoding: string;\n    /** Gets the date that the page was last modified, if the page supplies one. */\n    readonly lastModified: string;\n    /**\n     * Sets or gets the color of the document links.\n     * @deprecated\n     */\n    linkColor: string;\n    /** Retrieves a collection of all a objects that specify the href property and all area objects in the document. */\n    readonly links: HTMLCollectionOf<HTMLAnchorElement | HTMLAreaElement>;\n    /** Contains information about the current URL. */\n    get location(): Location;\n    set location(href: string | Location);\n    onfullscreenchange: ((this: Document, ev: Event) => any) | null;\n    onfullscreenerror: ((this: Document, ev: Event) => any) | null;\n    onpointerlockchange: ((this: Document, ev: Event) => any) | null;\n    onpointerlockerror: ((this: Document, ev: Event) => any) | null;\n    /**\n     * Fires when the state of the object has changed.\n     * @param ev The event\n     */\n    onreadystatechange: ((this: Document, ev: Event) => any) | null;\n    onvisibilitychange: ((this: Document, ev: Event) => any) | null;\n    readonly ownerDocument: null;\n    readonly pictureInPictureEnabled: boolean;\n    /** Return an HTMLCollection of the embed elements in the Document. */\n    readonly plugins: HTMLCollectionOf<HTMLEmbedElement>;\n    /** Retrieves a value that indicates the current state of the object. */\n    readonly readyState: DocumentReadyState;\n    /** Gets the URL of the location that referred the user to the current page. */\n    readonly referrer: string;\n    /** @deprecated */\n    readonly rootElement: SVGSVGElement | null;\n    /** Retrieves a collection of all script objects in the document. */\n    readonly scripts: HTMLCollectionOf<HTMLScriptElement>;\n    readonly scrollingElement: Element | null;\n    readonly timeline: DocumentTimeline;\n    /** Contains the title of the document. */\n    title: string;\n    readonly visibilityState: DocumentVisibilityState;\n    /**\n     * Sets or gets the color of the links that the user has visited.\n     * @deprecated\n     */\n    vlinkColor: string;\n    /**\n     * Moves node from another document and returns it.\n     *\n     * If node is a document, throws a \"NotSupportedError\" DOMException or, if node is a shadow root, throws a \"HierarchyRequestError\" DOMException.\n     */\n    adoptNode<T extends Node>(node: T): T;\n    /** @deprecated */\n    captureEvents(): void;\n    /** @deprecated */\n    caretRangeFromPoint(x: number, y: number): Range | null;\n    /** @deprecated */\n    clear(): void;\n    /** Closes an output stream and forces the sent data to display. */\n    close(): void;\n    /**\n     * Creates an attribute object with a specified name.\n     * @param name String that sets the attribute object's name.\n     */\n    createAttribute(localName: string): Attr;\n    createAttributeNS(namespace: string | null, qualifiedName: string): Attr;\n    /** Returns a CDATASection node whose data is data. */\n    createCDATASection(data: string): CDATASection;\n    /**\n     * Creates a comment object with the specified data.\n     * @param data Sets the comment object's data.\n     */\n    createComment(data: string): Comment;\n    /** Creates a new document. */\n    createDocumentFragment(): DocumentFragment;\n    /**\n     * Creates an instance of the element for the specified tag.\n     * @param tagName The name of an element.\n     */\n    createElement<K extends keyof HTMLElementTagNameMap>(tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K];\n    /** @deprecated */\n    createElement<K extends keyof HTMLElementDeprecatedTagNameMap>(tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K];\n    createElement(tagName: string, options?: ElementCreationOptions): HTMLElement;\n    /**\n     * Returns an element with namespace namespace. Its namespace prefix will be everything before \":\" (U+003E) in qualifiedName or null. Its local name will be everything after \":\" (U+003E) in qualifiedName or qualifiedName.\n     *\n     * If localName does not match the Name production an \"InvalidCharacterError\" DOMException will be thrown.\n     *\n     * If one of the following conditions is true a \"NamespaceError\" DOMException will be thrown:\n     *\n     * localName does not match the QName production.\n     * Namespace prefix is not null and namespace is the empty string.\n     * Namespace prefix is \"xml\" and namespace is not the XML namespace.\n     * qualifiedName or namespace prefix is \"xmlns\" and namespace is not the XMLNS namespace.\n     * namespace is the XMLNS namespace and neither qualifiedName nor namespace prefix is \"xmlns\".\n     *\n     * When supplied, options's is can be used to create a customized built-in element.\n     */\n    createElementNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", qualifiedName: string): HTMLElement;\n    createElementNS<K extends keyof SVGElementTagNameMap>(namespaceURI: \"http://www.w3.org/2000/svg\", qualifiedName: K): SVGElementTagNameMap[K];\n    createElementNS(namespaceURI: \"http://www.w3.org/2000/svg\", qualifiedName: string): SVGElement;\n    createElementNS<K extends keyof MathMLElementTagNameMap>(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", qualifiedName: K): MathMLElementTagNameMap[K];\n    createElementNS(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", qualifiedName: string): MathMLElement;\n    createElementNS(namespaceURI: string | null, qualifiedName: string, options?: ElementCreationOptions): Element;\n    createElementNS(namespace: string | null, qualifiedName: string, options?: string | ElementCreationOptions): Element;\n    createEvent(eventInterface: \"AnimationEvent\"): AnimationEvent;\n    createEvent(eventInterface: \"AnimationPlaybackEvent\"): AnimationPlaybackEvent;\n    createEvent(eventInterface: \"AudioProcessingEvent\"): AudioProcessingEvent;\n    createEvent(eventInterface: \"BeforeUnloadEvent\"): BeforeUnloadEvent;\n    createEvent(eventInterface: \"BlobEvent\"): BlobEvent;\n    createEvent(eventInterface: \"ClipboardEvent\"): ClipboardEvent;\n    createEvent(eventInterface: \"CloseEvent\"): CloseEvent;\n    createEvent(eventInterface: \"CompositionEvent\"): CompositionEvent;\n    createEvent(eventInterface: \"CustomEvent\"): CustomEvent;\n    createEvent(eventInterface: \"DeviceMotionEvent\"): DeviceMotionEvent;\n    createEvent(eventInterface: \"DeviceOrientationEvent\"): DeviceOrientationEvent;\n    createEvent(eventInterface: \"DragEvent\"): DragEvent;\n    createEvent(eventInterface: \"ErrorEvent\"): ErrorEvent;\n    createEvent(eventInterface: \"Event\"): Event;\n    createEvent(eventInterface: \"Events\"): Event;\n    createEvent(eventInterface: \"FocusEvent\"): FocusEvent;\n    createEvent(eventInterface: \"FontFaceSetLoadEvent\"): FontFaceSetLoadEvent;\n    createEvent(eventInterface: \"FormDataEvent\"): FormDataEvent;\n    createEvent(eventInterface: \"GamepadEvent\"): GamepadEvent;\n    createEvent(eventInterface: \"HashChangeEvent\"): HashChangeEvent;\n    createEvent(eventInterface: \"IDBVersionChangeEvent\"): IDBVersionChangeEvent;\n    createEvent(eventInterface: \"InputEvent\"): InputEvent;\n    createEvent(eventInterface: \"KeyboardEvent\"): KeyboardEvent;\n    createEvent(eventInterface: \"MIDIConnectionEvent\"): MIDIConnectionEvent;\n    createEvent(eventInterface: \"MIDIMessageEvent\"): MIDIMessageEvent;\n    createEvent(eventInterface: \"MediaEncryptedEvent\"): MediaEncryptedEvent;\n    createEvent(eventInterface: \"MediaKeyMessageEvent\"): MediaKeyMessageEvent;\n    createEvent(eventInterface: \"MediaQueryListEvent\"): MediaQueryListEvent;\n    createEvent(eventInterface: \"MediaStreamTrackEvent\"): MediaStreamTrackEvent;\n    createEvent(eventInterface: \"MessageEvent\"): MessageEvent;\n    createEvent(eventInterface: \"MouseEvent\"): MouseEvent;\n    createEvent(eventInterface: \"MouseEvents\"): MouseEvent;\n    createEvent(eventInterface: \"MutationEvent\"): MutationEvent;\n    createEvent(eventInterface: \"MutationEvents\"): MutationEvent;\n    createEvent(eventInterface: \"OfflineAudioCompletionEvent\"): OfflineAudioCompletionEvent;\n    createEvent(eventInterface: \"PageTransitionEvent\"): PageTransitionEvent;\n    createEvent(eventInterface: \"PaymentMethodChangeEvent\"): PaymentMethodChangeEvent;\n    createEvent(eventInterface: \"PaymentRequestUpdateEvent\"): PaymentRequestUpdateEvent;\n    createEvent(eventInterface: \"PictureInPictureEvent\"): PictureInPictureEvent;\n    createEvent(eventInterface: \"PointerEvent\"): PointerEvent;\n    createEvent(eventInterface: \"PopStateEvent\"): PopStateEvent;\n    createEvent(eventInterface: \"ProgressEvent\"): ProgressEvent;\n    createEvent(eventInterface: \"PromiseRejectionEvent\"): PromiseRejectionEvent;\n    createEvent(eventInterface: \"RTCDTMFToneChangeEvent\"): RTCDTMFToneChangeEvent;\n    createEvent(eventInterface: \"RTCDataChannelEvent\"): RTCDataChannelEvent;\n    createEvent(eventInterface: \"RTCErrorEvent\"): RTCErrorEvent;\n    createEvent(eventInterface: \"RTCPeerConnectionIceErrorEvent\"): RTCPeerConnectionIceErrorEvent;\n    createEvent(eventInterface: \"RTCPeerConnectionIceEvent\"): RTCPeerConnectionIceEvent;\n    createEvent(eventInterface: \"RTCTrackEvent\"): RTCTrackEvent;\n    createEvent(eventInterface: \"SecurityPolicyViolationEvent\"): SecurityPolicyViolationEvent;\n    createEvent(eventInterface: \"SpeechSynthesisErrorEvent\"): SpeechSynthesisErrorEvent;\n    createEvent(eventInterface: \"SpeechSynthesisEvent\"): SpeechSynthesisEvent;\n    createEvent(eventInterface: \"StorageEvent\"): StorageEvent;\n    createEvent(eventInterface: \"SubmitEvent\"): SubmitEvent;\n    createEvent(eventInterface: \"TouchEvent\"): TouchEvent;\n    createEvent(eventInterface: \"TrackEvent\"): TrackEvent;\n    createEvent(eventInterface: \"TransitionEvent\"): TransitionEvent;\n    createEvent(eventInterface: \"UIEvent\"): UIEvent;\n    createEvent(eventInterface: \"UIEvents\"): UIEvent;\n    createEvent(eventInterface: \"WebGLContextEvent\"): WebGLContextEvent;\n    createEvent(eventInterface: \"WheelEvent\"): WheelEvent;\n    createEvent(eventInterface: string): Event;\n    /**\n     * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n     * @param root The root element or node to start traversing on.\n     * @param whatToShow The type of nodes or elements to appear in the node list\n     * @param filter A custom NodeFilter function to use. For more information, see filter. Use null for no filter.\n     */\n    createNodeIterator(root: Node, whatToShow?: number, filter?: NodeFilter | null): NodeIterator;\n    /** Returns a ProcessingInstruction node whose target is target and data is data. If target does not match the Name production an \"InvalidCharacterError\" DOMException will be thrown. If data contains \"?>\" an \"InvalidCharacterError\" DOMException will be thrown. */\n    createProcessingInstruction(target: string, data: string): ProcessingInstruction;\n    /**  Returns an empty range object that has both of its boundary points positioned at the beginning of the document. */\n    createRange(): Range;\n    /**\n     * Creates a text string from the specified value.\n     * @param data String that specifies the nodeValue property of the text node.\n     */\n    createTextNode(data: string): Text;\n    /**\n     * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document.\n     * @param root The root element or node to start traversing on.\n     * @param whatToShow The type of nodes or elements to appear in the node list. For more information, see whatToShow.\n     * @param filter A custom NodeFilter function to use.\n     */\n    createTreeWalker(root: Node, whatToShow?: number, filter?: NodeFilter | null): TreeWalker;\n    /**\n     * Executes a command on the current document, current selection, or the given range.\n     * @param commandId String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.\n     * @param showUI Display the user interface, defaults to false.\n     * @param value Value to assign.\n     * @deprecated\n     */\n    execCommand(commandId: string, showUI?: boolean, value?: string): boolean;\n    /** Stops document's fullscreen element from being displayed fullscreen and resolves promise when done. */\n    exitFullscreen(): Promise<void>;\n    exitPictureInPicture(): Promise<void>;\n    exitPointerLock(): void;\n    /**\n     * Returns a reference to the first object with the specified value of the ID attribute.\n     * @param elementId String that specifies the ID value.\n     */\n    getElementById(elementId: string): HTMLElement | null;\n    /** Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes. */\n    getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;\n    /**\n     * Gets a collection of objects based on the value of the NAME or ID attribute.\n     * @param elementName Gets a collection of objects based on the value of the NAME or ID attribute.\n     */\n    getElementsByName(elementName: string): NodeListOf<HTMLElement>;\n    /**\n     * Retrieves a collection of objects based on the specified element name.\n     * @param name Specifies the name of an element.\n     */\n    getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;\n    getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;\n    getElementsByTagName<K extends keyof MathMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<MathMLElementTagNameMap[K]>;\n    /** @deprecated */\n    getElementsByTagName<K extends keyof HTMLElementDeprecatedTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementDeprecatedTagNameMap[K]>;\n    getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;\n    /**\n     * If namespace and localName are \"*\" returns a HTMLCollection of all descendant elements.\n     *\n     * If only namespace is \"*\" returns a HTMLCollection of all descendant elements whose local name is localName.\n     *\n     * If only localName is \"*\" returns a HTMLCollection of all descendant elements whose namespace is namespace.\n     *\n     * Otherwise, returns a HTMLCollection of all descendant elements whose namespace is namespace and local name is localName.\n     */\n    getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", localName: string): HTMLCollectionOf<HTMLElement>;\n    getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/2000/svg\", localName: string): HTMLCollectionOf<SVGElement>;\n    getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", localName: string): HTMLCollectionOf<MathMLElement>;\n    getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf<Element>;\n    /** Returns an object representing the current selection of the document that is loaded into the object displaying a webpage. */\n    getSelection(): Selection | null;\n    /** Gets a value indicating whether the object currently has focus. */\n    hasFocus(): boolean;\n    hasStorageAccess(): Promise<boolean>;\n    /**\n     * Returns a copy of node. If deep is true, the copy also includes the node's descendants.\n     *\n     * If node is a document or a shadow root, throws a \"NotSupportedError\" DOMException.\n     */\n    importNode<T extends Node>(node: T, deep?: boolean): T;\n    /**\n     * Opens a new window and loads a document specified by a given URL. Also, opens a new window that uses the url parameter and the name parameter to collect the output of the write method and the writeln method.\n     * @param url Specifies a MIME type for the document.\n     * @param name Specifies the name of the window. This name is used as the value for the TARGET attribute on a form or an anchor element.\n     * @param features Contains a list of items separated by commas. Each item consists of an option and a value, separated by an equals sign (for example, \"fullscreen=yes, toolbar=yes\"). The following values are supported.\n     * @param replace Specifies whether the existing entry for the document is replaced in the history list.\n     */\n    open(unused1?: string, unused2?: string): Document;\n    open(url: string | URL, name: string, features: string): WindowProxy | null;\n    /**\n     * Returns a Boolean value that indicates whether a specified command can be successfully executed using execCommand, given the current state of the document.\n     * @param commandId Specifies a command identifier.\n     * @deprecated\n     */\n    queryCommandEnabled(commandId: string): boolean;\n    /**\n     * Returns a Boolean value that indicates whether the specified command is in the indeterminate state.\n     * @param commandId String that specifies a command identifier.\n     * @deprecated\n     */\n    queryCommandIndeterm(commandId: string): boolean;\n    /**\n     * Returns a Boolean value that indicates the current state of the command.\n     * @param commandId String that specifies a command identifier.\n     * @deprecated\n     */\n    queryCommandState(commandId: string): boolean;\n    /**\n     * Returns a Boolean value that indicates whether the current command is supported on the current range.\n     * @param commandId Specifies a command identifier.\n     * @deprecated\n     */\n    queryCommandSupported(commandId: string): boolean;\n    /**\n     * Returns the current value of the document, range, or current selection for the given command.\n     * @param commandId String that specifies a command identifier.\n     * @deprecated\n     */\n    queryCommandValue(commandId: string): string;\n    /** @deprecated */\n    releaseEvents(): void;\n    requestStorageAccess(): Promise<void>;\n    /**\n     * Writes one or more HTML expressions to a document in the specified window.\n     * @param content Specifies the text and HTML tags to write.\n     */\n    write(...text: string[]): void;\n    /**\n     * Writes one or more HTML expressions, followed by a carriage return, to a document in the specified window.\n     * @param content The text and HTML tags to write.\n     */\n    writeln(...text: string[]): void;\n    addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Document: {\n    prototype: Document;\n    new(): Document;\n};\n\n/** A minimal document object that has no parent. It is used as a lightweight version of Document that stores a segment of a document structure comprised of nodes just like a standard document. The key difference is that because the document fragment isn't part of the active document tree structure, changes made to the fragment don't affect the document, cause reflow, or incur any performance impact that can occur when changes are made. */\ninterface DocumentFragment extends Node, NonElementParentNode, ParentNode {\n    readonly ownerDocument: Document;\n    getElementById(elementId: string): HTMLElement | null;\n}\n\ndeclare var DocumentFragment: {\n    prototype: DocumentFragment;\n    new(): DocumentFragment;\n};\n\ninterface DocumentOrShadowRoot {\n    /**\n     * Returns the deepest element in the document through which or to which key events are being routed. This is, roughly speaking, the focused element in the document.\n     *\n     * For the purposes of this API, when a child browsing context is focused, its container is focused in the parent browsing context. For example, if the user moves the focus to a text control in an iframe, the iframe is the element returned by the activeElement API in the iframe's node document.\n     *\n     * Similarly, when the focused element is in a different node tree than documentOrShadowRoot, the element returned will be the host that's located in the same node tree as documentOrShadowRoot if documentOrShadowRoot is a shadow-including inclusive ancestor of the focused element, and null if not.\n     */\n    readonly activeElement: Element | null;\n    adoptedStyleSheets: CSSStyleSheet[];\n    /** Returns document's fullscreen element. */\n    readonly fullscreenElement: Element | null;\n    readonly pictureInPictureElement: Element | null;\n    readonly pointerLockElement: Element | null;\n    /** Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document. */\n    readonly styleSheets: StyleSheetList;\n    /**\n     * Returns the element for the specified x coordinate and the specified y coordinate.\n     * @param x The x-offset\n     * @param y The y-offset\n     */\n    elementFromPoint(x: number, y: number): Element | null;\n    elementsFromPoint(x: number, y: number): Element[];\n    getAnimations(): Animation[];\n}\n\ninterface DocumentTimeline extends AnimationTimeline {\n}\n\ndeclare var DocumentTimeline: {\n    prototype: DocumentTimeline;\n    new(options?: DocumentTimelineOptions): DocumentTimeline;\n};\n\n/** A Node containing a doctype. */\ninterface DocumentType extends Node, ChildNode {\n    readonly name: string;\n    readonly ownerDocument: Document;\n    readonly publicId: string;\n    readonly systemId: string;\n}\n\ndeclare var DocumentType: {\n    prototype: DocumentType;\n    new(): DocumentType;\n};\n\n/** A DOM event that represents a drag and drop interaction. The user initiates a drag by placing a pointer device (such as a mouse) on the touch surface and then dragging the pointer to a new location (such as another DOM element). Applications are free to interpret a drag and drop interaction in an application-specific way. */\ninterface DragEvent extends MouseEvent {\n    /** Returns the DataTransfer object for the event. */\n    readonly dataTransfer: DataTransfer | null;\n}\n\ndeclare var DragEvent: {\n    prototype: DragEvent;\n    new(type: string, eventInitDict?: DragEventInit): DragEvent;\n};\n\n/** Inherits properties from its parent, AudioNode. */\ninterface DynamicsCompressorNode extends AudioNode {\n    readonly attack: AudioParam;\n    readonly knee: AudioParam;\n    readonly ratio: AudioParam;\n    readonly reduction: number;\n    readonly release: AudioParam;\n    readonly threshold: AudioParam;\n}\n\ndeclare var DynamicsCompressorNode: {\n    prototype: DynamicsCompressorNode;\n    new(context: BaseAudioContext, options?: DynamicsCompressorOptions): DynamicsCompressorNode;\n};\n\ninterface EXT_blend_minmax {\n    readonly MIN_EXT: 0x8007;\n    readonly MAX_EXT: 0x8008;\n}\n\ninterface EXT_color_buffer_float {\n}\n\ninterface EXT_color_buffer_half_float {\n    readonly RGBA16F_EXT: 0x881A;\n    readonly RGB16F_EXT: 0x881B;\n    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211;\n    readonly UNSIGNED_NORMALIZED_EXT: 0x8C17;\n}\n\ninterface EXT_float_blend {\n}\n\n/** The EXT_frag_depth extension is part of the WebGL API and enables to set a depth value of a fragment from within the fragment shader. */\ninterface EXT_frag_depth {\n}\n\ninterface EXT_sRGB {\n    readonly SRGB_EXT: 0x8C40;\n    readonly SRGB_ALPHA_EXT: 0x8C42;\n    readonly SRGB8_ALPHA8_EXT: 0x8C43;\n    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210;\n}\n\ninterface EXT_shader_texture_lod {\n}\n\ninterface EXT_texture_compression_bptc {\n    readonly COMPRESSED_RGBA_BPTC_UNORM_EXT: 0x8E8C;\n    readonly COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: 0x8E8D;\n    readonly COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: 0x8E8E;\n    readonly COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: 0x8E8F;\n}\n\ninterface EXT_texture_compression_rgtc {\n    readonly COMPRESSED_RED_RGTC1_EXT: 0x8DBB;\n    readonly COMPRESSED_SIGNED_RED_RGTC1_EXT: 0x8DBC;\n    readonly COMPRESSED_RED_GREEN_RGTC2_EXT: 0x8DBD;\n    readonly COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 0x8DBE;\n}\n\n/** The EXT_texture_filter_anisotropic extension is part of the WebGL API and exposes two constants for anisotropic filtering (AF). */\ninterface EXT_texture_filter_anisotropic {\n    readonly TEXTURE_MAX_ANISOTROPY_EXT: 0x84FE;\n    readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84FF;\n}\n\ninterface EXT_texture_norm16 {\n    readonly R16_EXT: 0x822A;\n    readonly RG16_EXT: 0x822C;\n    readonly RGB16_EXT: 0x8054;\n    readonly RGBA16_EXT: 0x805B;\n    readonly R16_SNORM_EXT: 0x8F98;\n    readonly RG16_SNORM_EXT: 0x8F99;\n    readonly RGB16_SNORM_EXT: 0x8F9A;\n    readonly RGBA16_SNORM_EXT: 0x8F9B;\n}\n\ninterface ElementEventMap {\n    \"fullscreenchange\": Event;\n    \"fullscreenerror\": Event;\n}\n\n/** Element is the most general base class from which all objects in a Document inherit. It only has methods and properties common to all kinds of elements. More specific classes inherit from Element. */\ninterface Element extends Node, ARIAMixin, Animatable, ChildNode, InnerHTML, NonDocumentTypeChildNode, ParentNode, Slottable {\n    readonly attributes: NamedNodeMap;\n    /** Allows for manipulation of element's class content attribute as a set of whitespace-separated tokens through a DOMTokenList object. */\n    readonly classList: DOMTokenList;\n    /** Returns the value of element's class content attribute. Can be set to change it. */\n    className: string;\n    readonly clientHeight: number;\n    readonly clientLeft: number;\n    readonly clientTop: number;\n    readonly clientWidth: number;\n    /** Returns the value of element's id content attribute. Can be set to change it. */\n    id: string;\n    /** Returns the local name. */\n    readonly localName: string;\n    /** Returns the namespace. */\n    readonly namespaceURI: string | null;\n    onfullscreenchange: ((this: Element, ev: Event) => any) | null;\n    onfullscreenerror: ((this: Element, ev: Event) => any) | null;\n    outerHTML: string;\n    readonly ownerDocument: Document;\n    readonly part: DOMTokenList;\n    /** Returns the namespace prefix. */\n    readonly prefix: string | null;\n    readonly scrollHeight: number;\n    scrollLeft: number;\n    scrollTop: number;\n    readonly scrollWidth: number;\n    /** Returns element's shadow root, if any, and if shadow root's mode is \"open\", and null otherwise. */\n    readonly shadowRoot: ShadowRoot | null;\n    /** Returns the value of element's slot content attribute. Can be set to change it. */\n    slot: string;\n    /** Returns the HTML-uppercased qualified name. */\n    readonly tagName: string;\n    /** Creates a shadow root for element and returns it. */\n    attachShadow(init: ShadowRootInit): ShadowRoot;\n    checkVisibility(options?: CheckVisibilityOptions): boolean;\n    /** Returns the first (starting at element) inclusive ancestor that matches selectors, and null otherwise. */\n    closest<K extends keyof HTMLElementTagNameMap>(selector: K): HTMLElementTagNameMap[K] | null;\n    closest<K extends keyof SVGElementTagNameMap>(selector: K): SVGElementTagNameMap[K] | null;\n    closest<K extends keyof MathMLElementTagNameMap>(selector: K): MathMLElementTagNameMap[K] | null;\n    closest<E extends Element = Element>(selectors: string): E | null;\n    /** Returns element's first attribute whose qualified name is qualifiedName, and null if there is no such attribute otherwise. */\n    getAttribute(qualifiedName: string): string | null;\n    /** Returns element's attribute whose namespace is namespace and local name is localName, and null if there is no such attribute otherwise. */\n    getAttributeNS(namespace: string | null, localName: string): string | null;\n    /** Returns the qualified names of all element's attributes. Can contain duplicates. */\n    getAttributeNames(): string[];\n    getAttributeNode(qualifiedName: string): Attr | null;\n    getAttributeNodeNS(namespace: string | null, localName: string): Attr | null;\n    getBoundingClientRect(): DOMRect;\n    getClientRects(): DOMRectList;\n    /** Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes. */\n    getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;\n    getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;\n    getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;\n    getElementsByTagName<K extends keyof MathMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<MathMLElementTagNameMap[K]>;\n    /** @deprecated */\n    getElementsByTagName<K extends keyof HTMLElementDeprecatedTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementDeprecatedTagNameMap[K]>;\n    getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;\n    getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", localName: string): HTMLCollectionOf<HTMLElement>;\n    getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/2000/svg\", localName: string): HTMLCollectionOf<SVGElement>;\n    getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", localName: string): HTMLCollectionOf<MathMLElement>;\n    getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf<Element>;\n    /** Returns true if element has an attribute whose qualified name is qualifiedName, and false otherwise. */\n    hasAttribute(qualifiedName: string): boolean;\n    /** Returns true if element has an attribute whose namespace is namespace and local name is localName. */\n    hasAttributeNS(namespace: string | null, localName: string): boolean;\n    /** Returns true if element has attributes, and false otherwise. */\n    hasAttributes(): boolean;\n    hasPointerCapture(pointerId: number): boolean;\n    insertAdjacentElement(where: InsertPosition, element: Element): Element | null;\n    insertAdjacentHTML(position: InsertPosition, text: string): void;\n    insertAdjacentText(where: InsertPosition, data: string): void;\n    /** Returns true if matching selectors against element's root yields element, and false otherwise. */\n    matches(selectors: string): boolean;\n    releasePointerCapture(pointerId: number): void;\n    /** Removes element's first attribute whose qualified name is qualifiedName. */\n    removeAttribute(qualifiedName: string): void;\n    /** Removes element's attribute whose namespace is namespace and local name is localName. */\n    removeAttributeNS(namespace: string | null, localName: string): void;\n    removeAttributeNode(attr: Attr): Attr;\n    /**\n     * Displays element fullscreen and resolves promise when done.\n     *\n     * When supplied, options's navigationUI member indicates whether showing navigation UI while in fullscreen is preferred or not. If set to \"show\", navigation simplicity is preferred over screen space, and if set to \"hide\", more screen space is preferred. User agents are always free to honor user preference over the application's. The default value \"auto\" indicates no application preference.\n     */\n    requestFullscreen(options?: FullscreenOptions): Promise<void>;\n    requestPointerLock(): void;\n    scroll(options?: ScrollToOptions): void;\n    scroll(x: number, y: number): void;\n    scrollBy(options?: ScrollToOptions): void;\n    scrollBy(x: number, y: number): void;\n    scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void;\n    scrollTo(options?: ScrollToOptions): void;\n    scrollTo(x: number, y: number): void;\n    /** Sets the value of element's first attribute whose qualified name is qualifiedName to value. */\n    setAttribute(qualifiedName: string, value: string): void;\n    /** Sets the value of element's attribute whose namespace is namespace and local name is localName to value. */\n    setAttributeNS(namespace: string | null, qualifiedName: string, value: string): void;\n    setAttributeNode(attr: Attr): Attr | null;\n    setAttributeNodeNS(attr: Attr): Attr | null;\n    setPointerCapture(pointerId: number): void;\n    /**\n     * If force is not given, \"toggles\" qualifiedName, removing it if it is present and adding it if it is not present. If force is true, adds qualifiedName. If force is false, removes qualifiedName.\n     *\n     * Returns true if qualifiedName is now present, and false otherwise.\n     */\n    toggleAttribute(qualifiedName: string, force?: boolean): boolean;\n    /** @deprecated This is a legacy alias of \\`matches\\`. */\n    webkitMatchesSelector(selectors: string): boolean;\n    addEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Element: {\n    prototype: Element;\n    new(): Element;\n};\n\ninterface ElementCSSInlineStyle {\n    readonly style: CSSStyleDeclaration;\n}\n\ninterface ElementContentEditable {\n    contentEditable: string;\n    enterKeyHint: string;\n    inputMode: string;\n    readonly isContentEditable: boolean;\n}\n\ninterface ElementInternals extends ARIAMixin {\n    /** Returns the form owner of internals's target element. */\n    readonly form: HTMLFormElement | null;\n    /** Returns a NodeList of all the label elements that internals's target element is associated with. */\n    readonly labels: NodeList;\n    /** Returns the ShadowRoot for internals's target element, if the target element is a shadow host, or null otherwise. */\n    readonly shadowRoot: ShadowRoot | null;\n    /** Returns the error message that would be shown to the user if internals's target element was to be checked for validity. */\n    readonly validationMessage: string;\n    /** Returns the ValidityState object for internals's target element. */\n    readonly validity: ValidityState;\n    /** Returns true if internals's target element will be validated when the form is submitted; false otherwise. */\n    readonly willValidate: boolean;\n    /** Returns true if internals's target element has no validity problems; false otherwise. Fires an invalid event at the element in the latter case. */\n    checkValidity(): boolean;\n    /** Returns true if internals's target element has no validity problems; otherwise, returns false, fires an invalid event at the element, and (if the event isn't canceled) reports the problem to the user. */\n    reportValidity(): boolean;\n    /**\n     * Sets both the state and submission value of internals's target element to value.\n     *\n     * If value is null, the element won't participate in form submission.\n     */\n    setFormValue(value: File | string | FormData | null, state?: File | string | FormData | null): void;\n    /** Marks internals's target element as suffering from the constraints indicated by the flags argument, and sets the element's validation message to message. If anchor is specified, the user agent might use it to indicate problems with the constraints of internals's target element when the form owner is validated interactively or reportValidity() is called. */\n    setValidity(flags?: ValidityStateFlags, message?: string, anchor?: HTMLElement): void;\n}\n\ndeclare var ElementInternals: {\n    prototype: ElementInternals;\n    new(): ElementInternals;\n};\n\n/** Events providing information related to errors in scripts or in files. */\ninterface ErrorEvent extends Event {\n    readonly colno: number;\n    readonly error: any;\n    readonly filename: string;\n    readonly lineno: number;\n    readonly message: string;\n}\n\ndeclare var ErrorEvent: {\n    prototype: ErrorEvent;\n    new(type: string, eventInitDict?: ErrorEventInit): ErrorEvent;\n};\n\n/** An event which takes place in the DOM. */\ninterface Event {\n    /** Returns true or false depending on how event was initialized. True if event goes through its target's ancestors in reverse tree order, and false otherwise. */\n    readonly bubbles: boolean;\n    /** @deprecated */\n    cancelBubble: boolean;\n    /** Returns true or false depending on how event was initialized. Its return value does not always carry meaning, but true can indicate that part of the operation during which event was dispatched, can be canceled by invoking the preventDefault() method. */\n    readonly cancelable: boolean;\n    /** Returns true or false depending on how event was initialized. True if event invokes listeners past a ShadowRoot node that is the root of its target, and false otherwise. */\n    readonly composed: boolean;\n    /** Returns the object whose event listener's callback is currently being invoked. */\n    readonly currentTarget: EventTarget | null;\n    /** Returns true if preventDefault() was invoked successfully to indicate cancelation, and false otherwise. */\n    readonly defaultPrevented: boolean;\n    /** Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET, and BUBBLING_PHASE. */\n    readonly eventPhase: number;\n    /** Returns true if event was dispatched by the user agent, and false otherwise. */\n    readonly isTrusted: boolean;\n    /** @deprecated */\n    returnValue: boolean;\n    /** @deprecated */\n    readonly srcElement: EventTarget | null;\n    /** Returns the object to which event is dispatched (its target). */\n    readonly target: EventTarget | null;\n    /** Returns the event's timestamp as the number of milliseconds measured relative to the time origin. */\n    readonly timeStamp: DOMHighResTimeStamp;\n    /** Returns the type of event, e.g. \"click\", \"hashchange\", or \"submit\". */\n    readonly type: string;\n    /** Returns the invocation target objects of event's path (objects on which listeners will be invoked), except for any nodes in shadow trees of which the shadow root's mode is \"closed\" that are not reachable from event's currentTarget. */\n    composedPath(): EventTarget[];\n    /** @deprecated */\n    initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;\n    /** If invoked when the cancelable attribute value is true, and while executing a listener for the event with passive set to false, signals to the operation that caused event to be dispatched that it needs to be canceled. */\n    preventDefault(): void;\n    /** Invoking this method prevents event from reaching any registered event listeners after the current one finishes running and, when dispatched in a tree, also prevents event from reaching any other objects. */\n    stopImmediatePropagation(): void;\n    /** When dispatched in a tree, invoking this method prevents event from reaching any objects other than the current object. */\n    stopPropagation(): void;\n    readonly NONE: 0;\n    readonly CAPTURING_PHASE: 1;\n    readonly AT_TARGET: 2;\n    readonly BUBBLING_PHASE: 3;\n}\n\ndeclare var Event: {\n    prototype: Event;\n    new(type: string, eventInitDict?: EventInit): Event;\n    readonly NONE: 0;\n    readonly CAPTURING_PHASE: 1;\n    readonly AT_TARGET: 2;\n    readonly BUBBLING_PHASE: 3;\n};\n\ninterface EventCounts {\n    forEach(callbackfn: (value: number, key: string, parent: EventCounts) => void, thisArg?: any): void;\n}\n\ndeclare var EventCounts: {\n    prototype: EventCounts;\n    new(): EventCounts;\n};\n\ninterface EventListener {\n    (evt: Event): void;\n}\n\ninterface EventListenerObject {\n    handleEvent(object: Event): void;\n}\n\ninterface EventSourceEventMap {\n    \"error\": Event;\n    \"message\": MessageEvent;\n    \"open\": Event;\n}\n\ninterface EventSource extends EventTarget {\n    onerror: ((this: EventSource, ev: Event) => any) | null;\n    onmessage: ((this: EventSource, ev: MessageEvent) => any) | null;\n    onopen: ((this: EventSource, ev: Event) => any) | null;\n    /** Returns the state of this EventSource object's connection. It can have the values described below. */\n    readonly readyState: number;\n    /** Returns the URL providing the event stream. */\n    readonly url: string;\n    /** Returns true if the credentials mode for connection requests to the URL providing the event stream is set to \"include\", and false otherwise. */\n    readonly withCredentials: boolean;\n    /** Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. */\n    close(): void;\n    readonly CONNECTING: 0;\n    readonly OPEN: 1;\n    readonly CLOSED: 2;\n    addEventListener<K extends keyof EventSourceEventMap>(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: (this: EventSource, event: MessageEvent) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof EventSourceEventMap>(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: (this: EventSource, event: MessageEvent) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var EventSource: {\n    prototype: EventSource;\n    new(url: string | URL, eventSourceInitDict?: EventSourceInit): EventSource;\n    readonly CONNECTING: 0;\n    readonly OPEN: 1;\n    readonly CLOSED: 2;\n};\n\n/** EventTarget is a DOM interface implemented by objects that can receive events and may have listeners for them. */\ninterface EventTarget {\n    /**\n     * Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.\n     *\n     * The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.\n     *\n     * When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.\n     *\n     * When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in \\xA7 2.8 Observing event listeners.\n     *\n     * When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.\n     *\n     * If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.\n     *\n     * The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.\n     */\n    addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: AddEventListenerOptions | boolean): void;\n    /** Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. */\n    dispatchEvent(event: Event): boolean;\n    /** Removes the event listener in target's event listener list with the same type, callback, and options. */\n    removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;\n}\n\ndeclare var EventTarget: {\n    prototype: EventTarget;\n    new(): EventTarget;\n};\n\n/** @deprecated */\ninterface External {\n    /** @deprecated */\n    AddSearchProvider(): void;\n    /** @deprecated */\n    IsSearchProviderInstalled(): void;\n}\n\n/** @deprecated */\ndeclare var External: {\n    prototype: External;\n    new(): External;\n};\n\n/** Provides information about files and allows JavaScript in a web page to access their content. */\ninterface File extends Blob {\n    readonly lastModified: number;\n    readonly name: string;\n    readonly webkitRelativePath: string;\n}\n\ndeclare var File: {\n    prototype: File;\n    new(fileBits: BlobPart[], fileName: string, options?: FilePropertyBag): File;\n};\n\n/** An object of this type is returned by the files property of the HTML <input> element; this lets you access the list of files selected with the <input type=\"file\"> element. It's also used for a list of files dropped into web content when using the drag and drop API; see the DataTransfer object for details on this usage. */\ninterface FileList {\n    readonly length: number;\n    item(index: number): File | null;\n    [index: number]: File;\n}\n\ndeclare var FileList: {\n    prototype: FileList;\n    new(): FileList;\n};\n\ninterface FileReaderEventMap {\n    \"abort\": ProgressEvent<FileReader>;\n    \"error\": ProgressEvent<FileReader>;\n    \"load\": ProgressEvent<FileReader>;\n    \"loadend\": ProgressEvent<FileReader>;\n    \"loadstart\": ProgressEvent<FileReader>;\n    \"progress\": ProgressEvent<FileReader>;\n}\n\n/** Lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer, using File or Blob objects to specify the file or data to read. */\ninterface FileReader extends EventTarget {\n    readonly error: DOMException | null;\n    onabort: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;\n    onerror: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;\n    onload: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;\n    onloadend: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;\n    onloadstart: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;\n    onprogress: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;\n    readonly readyState: typeof FileReader.EMPTY | typeof FileReader.LOADING | typeof FileReader.DONE;\n    readonly result: string | ArrayBuffer | null;\n    abort(): void;\n    readAsArrayBuffer(blob: Blob): void;\n    readAsBinaryString(blob: Blob): void;\n    readAsDataURL(blob: Blob): void;\n    readAsText(blob: Blob, encoding?: string): void;\n    readonly EMPTY: 0;\n    readonly LOADING: 1;\n    readonly DONE: 2;\n    addEventListener<K extends keyof FileReaderEventMap>(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof FileReaderEventMap>(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var FileReader: {\n    prototype: FileReader;\n    new(): FileReader;\n    readonly EMPTY: 0;\n    readonly LOADING: 1;\n    readonly DONE: 2;\n};\n\ninterface FileSystem {\n    readonly name: string;\n    readonly root: FileSystemDirectoryEntry;\n}\n\ndeclare var FileSystem: {\n    prototype: FileSystem;\n    new(): FileSystem;\n};\n\ninterface FileSystemDirectoryEntry extends FileSystemEntry {\n    createReader(): FileSystemDirectoryReader;\n    getDirectory(path?: string | null, options?: FileSystemFlags, successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;\n    getFile(path?: string | null, options?: FileSystemFlags, successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;\n}\n\ndeclare var FileSystemDirectoryEntry: {\n    prototype: FileSystemDirectoryEntry;\n    new(): FileSystemDirectoryEntry;\n};\n\n/** Available only in secure contexts. */\ninterface FileSystemDirectoryHandle extends FileSystemHandle {\n    readonly kind: \"directory\";\n    getDirectoryHandle(name: string, options?: FileSystemGetDirectoryOptions): Promise<FileSystemDirectoryHandle>;\n    getFileHandle(name: string, options?: FileSystemGetFileOptions): Promise<FileSystemFileHandle>;\n    removeEntry(name: string, options?: FileSystemRemoveOptions): Promise<void>;\n    resolve(possibleDescendant: FileSystemHandle): Promise<string[] | null>;\n}\n\ndeclare var FileSystemDirectoryHandle: {\n    prototype: FileSystemDirectoryHandle;\n    new(): FileSystemDirectoryHandle;\n};\n\ninterface FileSystemDirectoryReader {\n    readEntries(successCallback: FileSystemEntriesCallback, errorCallback?: ErrorCallback): void;\n}\n\ndeclare var FileSystemDirectoryReader: {\n    prototype: FileSystemDirectoryReader;\n    new(): FileSystemDirectoryReader;\n};\n\ninterface FileSystemEntry {\n    readonly filesystem: FileSystem;\n    readonly fullPath: string;\n    readonly isDirectory: boolean;\n    readonly isFile: boolean;\n    readonly name: string;\n    getParent(successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;\n}\n\ndeclare var FileSystemEntry: {\n    prototype: FileSystemEntry;\n    new(): FileSystemEntry;\n};\n\ninterface FileSystemFileEntry extends FileSystemEntry {\n    file(successCallback: FileCallback, errorCallback?: ErrorCallback): void;\n}\n\ndeclare var FileSystemFileEntry: {\n    prototype: FileSystemFileEntry;\n    new(): FileSystemFileEntry;\n};\n\n/** Available only in secure contexts. */\ninterface FileSystemFileHandle extends FileSystemHandle {\n    readonly kind: \"file\";\n    getFile(): Promise<File>;\n}\n\ndeclare var FileSystemFileHandle: {\n    prototype: FileSystemFileHandle;\n    new(): FileSystemFileHandle;\n};\n\n/** Available only in secure contexts. */\ninterface FileSystemHandle {\n    readonly kind: FileSystemHandleKind;\n    readonly name: string;\n    isSameEntry(other: FileSystemHandle): Promise<boolean>;\n}\n\ndeclare var FileSystemHandle: {\n    prototype: FileSystemHandle;\n    new(): FileSystemHandle;\n};\n\n/** Focus-related events like focus, blur, focusin, or focusout. */\ninterface FocusEvent extends UIEvent {\n    readonly relatedTarget: EventTarget | null;\n}\n\ndeclare var FocusEvent: {\n    prototype: FocusEvent;\n    new(type: string, eventInitDict?: FocusEventInit): FocusEvent;\n};\n\ninterface FontFace {\n    ascentOverride: string;\n    descentOverride: string;\n    display: FontDisplay;\n    family: string;\n    featureSettings: string;\n    lineGapOverride: string;\n    readonly loaded: Promise<FontFace>;\n    readonly status: FontFaceLoadStatus;\n    stretch: string;\n    style: string;\n    unicodeRange: string;\n    variant: string;\n    weight: string;\n    load(): Promise<FontFace>;\n}\n\ndeclare var FontFace: {\n    prototype: FontFace;\n    new(family: string, source: string | BinaryData, descriptors?: FontFaceDescriptors): FontFace;\n};\n\ninterface FontFaceSetEventMap {\n    \"loading\": Event;\n    \"loadingdone\": Event;\n    \"loadingerror\": Event;\n}\n\ninterface FontFaceSet extends EventTarget {\n    onloading: ((this: FontFaceSet, ev: Event) => any) | null;\n    onloadingdone: ((this: FontFaceSet, ev: Event) => any) | null;\n    onloadingerror: ((this: FontFaceSet, ev: Event) => any) | null;\n    readonly ready: Promise<FontFaceSet>;\n    readonly status: FontFaceSetLoadStatus;\n    check(font: string, text?: string): boolean;\n    load(font: string, text?: string): Promise<FontFace[]>;\n    forEach(callbackfn: (value: FontFace, key: FontFace, parent: FontFaceSet) => void, thisArg?: any): void;\n    addEventListener<K extends keyof FontFaceSetEventMap>(type: K, listener: (this: FontFaceSet, ev: FontFaceSetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof FontFaceSetEventMap>(type: K, listener: (this: FontFaceSet, ev: FontFaceSetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var FontFaceSet: {\n    prototype: FontFaceSet;\n    new(initialFaces: FontFace[]): FontFaceSet;\n};\n\ninterface FontFaceSetLoadEvent extends Event {\n    readonly fontfaces: ReadonlyArray<FontFace>;\n}\n\ndeclare var FontFaceSetLoadEvent: {\n    prototype: FontFaceSetLoadEvent;\n    new(type: string, eventInitDict?: FontFaceSetLoadEventInit): FontFaceSetLoadEvent;\n};\n\ninterface FontFaceSource {\n    readonly fonts: FontFaceSet;\n}\n\n/** Provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using the XMLHttpRequest.send() method. It uses the same format a form would use if the encoding type were set to \"multipart/form-data\". */\ninterface FormData {\n    append(name: string, value: string | Blob, fileName?: string): void;\n    delete(name: string): void;\n    get(name: string): FormDataEntryValue | null;\n    getAll(name: string): FormDataEntryValue[];\n    has(name: string): boolean;\n    set(name: string, value: string | Blob, fileName?: string): void;\n    forEach(callbackfn: (value: FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void;\n}\n\ndeclare var FormData: {\n    prototype: FormData;\n    new(form?: HTMLFormElement): FormData;\n};\n\ninterface FormDataEvent extends Event {\n    /** Returns a FormData object representing names and values of elements associated to the target form. Operations on the FormData object will affect form data to be submitted. */\n    readonly formData: FormData;\n}\n\ndeclare var FormDataEvent: {\n    prototype: FormDataEvent;\n    new(type: string, eventInitDict: FormDataEventInit): FormDataEvent;\n};\n\n/** A change in volume. It is an AudioNode audio-processing module that causes a given gain to be applied to the input data before its propagation to the output. A GainNode always has exactly one input and one output, both with the same number of channels. */\ninterface GainNode extends AudioNode {\n    readonly gain: AudioParam;\n}\n\ndeclare var GainNode: {\n    prototype: GainNode;\n    new(context: BaseAudioContext, options?: GainOptions): GainNode;\n};\n\n/**\n * This Gamepad API interface defines an individual gamepad or other controller, allowing access to information such as button presses, axis positions, and id.\n * Available only in secure contexts.\n */\ninterface Gamepad {\n    readonly axes: ReadonlyArray<number>;\n    readonly buttons: ReadonlyArray<GamepadButton>;\n    readonly connected: boolean;\n    readonly hapticActuators: ReadonlyArray<GamepadHapticActuator>;\n    readonly id: string;\n    readonly index: number;\n    readonly mapping: GamepadMappingType;\n    readonly timestamp: DOMHighResTimeStamp;\n}\n\ndeclare var Gamepad: {\n    prototype: Gamepad;\n    new(): Gamepad;\n};\n\n/**\n * An individual button of a gamepad or other controller, allowing access to the current state of different types of buttons available on the control device.\n * Available only in secure contexts.\n */\ninterface GamepadButton {\n    readonly pressed: boolean;\n    readonly touched: boolean;\n    readonly value: number;\n}\n\ndeclare var GamepadButton: {\n    prototype: GamepadButton;\n    new(): GamepadButton;\n};\n\n/**\n * This Gamepad API interface contains references to gamepads connected to the system, which is what the gamepad events Window.gamepadconnected and Window.gamepaddisconnected are fired in response to.\n * Available only in secure contexts.\n */\ninterface GamepadEvent extends Event {\n    readonly gamepad: Gamepad;\n}\n\ndeclare var GamepadEvent: {\n    prototype: GamepadEvent;\n    new(type: string, eventInitDict: GamepadEventInit): GamepadEvent;\n};\n\n/** This Gamepad API interface represents hardware in the controller designed to provide haptic feedback to the user (if available), most commonly vibration hardware. */\ninterface GamepadHapticActuator {\n    readonly type: GamepadHapticActuatorType;\n}\n\ndeclare var GamepadHapticActuator: {\n    prototype: GamepadHapticActuator;\n    new(): GamepadHapticActuator;\n};\n\ninterface GenericTransformStream {\n    readonly readable: ReadableStream;\n    readonly writable: WritableStream;\n}\n\n/** An object able to programmatically obtain the position of the device. It gives Web content access to the location of the device. This allows a Web site or app to offer customized results based on the user's location. */\ninterface Geolocation {\n    clearWatch(watchId: number): void;\n    getCurrentPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback | null, options?: PositionOptions): void;\n    watchPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback | null, options?: PositionOptions): number;\n}\n\ndeclare var Geolocation: {\n    prototype: Geolocation;\n    new(): Geolocation;\n};\n\n/** Available only in secure contexts. */\ninterface GeolocationCoordinates {\n    readonly accuracy: number;\n    readonly altitude: number | null;\n    readonly altitudeAccuracy: number | null;\n    readonly heading: number | null;\n    readonly latitude: number;\n    readonly longitude: number;\n    readonly speed: number | null;\n}\n\ndeclare var GeolocationCoordinates: {\n    prototype: GeolocationCoordinates;\n    new(): GeolocationCoordinates;\n};\n\n/** Available only in secure contexts. */\ninterface GeolocationPosition {\n    readonly coords: GeolocationCoordinates;\n    readonly timestamp: EpochTimeStamp;\n}\n\ndeclare var GeolocationPosition: {\n    prototype: GeolocationPosition;\n    new(): GeolocationPosition;\n};\n\ninterface GeolocationPositionError {\n    readonly code: number;\n    readonly message: string;\n    readonly PERMISSION_DENIED: 1;\n    readonly POSITION_UNAVAILABLE: 2;\n    readonly TIMEOUT: 3;\n}\n\ndeclare var GeolocationPositionError: {\n    prototype: GeolocationPositionError;\n    new(): GeolocationPositionError;\n    readonly PERMISSION_DENIED: 1;\n    readonly POSITION_UNAVAILABLE: 2;\n    readonly TIMEOUT: 3;\n};\n\ninterface GlobalEventHandlersEventMap {\n    \"abort\": UIEvent;\n    \"animationcancel\": AnimationEvent;\n    \"animationend\": AnimationEvent;\n    \"animationiteration\": AnimationEvent;\n    \"animationstart\": AnimationEvent;\n    \"auxclick\": MouseEvent;\n    \"beforeinput\": InputEvent;\n    \"blur\": FocusEvent;\n    \"cancel\": Event;\n    \"canplay\": Event;\n    \"canplaythrough\": Event;\n    \"change\": Event;\n    \"click\": MouseEvent;\n    \"close\": Event;\n    \"compositionend\": CompositionEvent;\n    \"compositionstart\": CompositionEvent;\n    \"compositionupdate\": CompositionEvent;\n    \"contextmenu\": MouseEvent;\n    \"copy\": ClipboardEvent;\n    \"cuechange\": Event;\n    \"cut\": ClipboardEvent;\n    \"dblclick\": MouseEvent;\n    \"drag\": DragEvent;\n    \"dragend\": DragEvent;\n    \"dragenter\": DragEvent;\n    \"dragleave\": DragEvent;\n    \"dragover\": DragEvent;\n    \"dragstart\": DragEvent;\n    \"drop\": DragEvent;\n    \"durationchange\": Event;\n    \"emptied\": Event;\n    \"ended\": Event;\n    \"error\": ErrorEvent;\n    \"focus\": FocusEvent;\n    \"focusin\": FocusEvent;\n    \"focusout\": FocusEvent;\n    \"formdata\": FormDataEvent;\n    \"gotpointercapture\": PointerEvent;\n    \"input\": Event;\n    \"invalid\": Event;\n    \"keydown\": KeyboardEvent;\n    \"keypress\": KeyboardEvent;\n    \"keyup\": KeyboardEvent;\n    \"load\": Event;\n    \"loadeddata\": Event;\n    \"loadedmetadata\": Event;\n    \"loadstart\": Event;\n    \"lostpointercapture\": PointerEvent;\n    \"mousedown\": MouseEvent;\n    \"mouseenter\": MouseEvent;\n    \"mouseleave\": MouseEvent;\n    \"mousemove\": MouseEvent;\n    \"mouseout\": MouseEvent;\n    \"mouseover\": MouseEvent;\n    \"mouseup\": MouseEvent;\n    \"paste\": ClipboardEvent;\n    \"pause\": Event;\n    \"play\": Event;\n    \"playing\": Event;\n    \"pointercancel\": PointerEvent;\n    \"pointerdown\": PointerEvent;\n    \"pointerenter\": PointerEvent;\n    \"pointerleave\": PointerEvent;\n    \"pointermove\": PointerEvent;\n    \"pointerout\": PointerEvent;\n    \"pointerover\": PointerEvent;\n    \"pointerup\": PointerEvent;\n    \"progress\": ProgressEvent;\n    \"ratechange\": Event;\n    \"reset\": Event;\n    \"resize\": UIEvent;\n    \"scroll\": Event;\n    \"securitypolicyviolation\": SecurityPolicyViolationEvent;\n    \"seeked\": Event;\n    \"seeking\": Event;\n    \"select\": Event;\n    \"selectionchange\": Event;\n    \"selectstart\": Event;\n    \"slotchange\": Event;\n    \"stalled\": Event;\n    \"submit\": SubmitEvent;\n    \"suspend\": Event;\n    \"timeupdate\": Event;\n    \"toggle\": Event;\n    \"touchcancel\": TouchEvent;\n    \"touchend\": TouchEvent;\n    \"touchmove\": TouchEvent;\n    \"touchstart\": TouchEvent;\n    \"transitioncancel\": TransitionEvent;\n    \"transitionend\": TransitionEvent;\n    \"transitionrun\": TransitionEvent;\n    \"transitionstart\": TransitionEvent;\n    \"volumechange\": Event;\n    \"waiting\": Event;\n    \"webkitanimationend\": Event;\n    \"webkitanimationiteration\": Event;\n    \"webkitanimationstart\": Event;\n    \"webkittransitionend\": Event;\n    \"wheel\": WheelEvent;\n}\n\ninterface GlobalEventHandlers {\n    /**\n     * Fires when the user aborts the download.\n     * @param ev The event.\n     */\n    onabort: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;\n    onanimationcancel: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\n    onanimationend: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\n    onanimationiteration: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\n    onanimationstart: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\n    onauxclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n    onbeforeinput: ((this: GlobalEventHandlers, ev: InputEvent) => any) | null;\n    /**\n     * Fires when the object loses the input focus.\n     * @param ev The focus event.\n     */\n    onblur: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;\n    oncancel: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Occurs when playback is possible, but would require further buffering.\n     * @param ev The event.\n     */\n    oncanplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    oncanplaythrough: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Fires when the contents of the object or selection have changed.\n     * @param ev The event.\n     */\n    onchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Fires when the user clicks the left mouse button on the object\n     * @param ev The mouse event.\n     */\n    onclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n    onclose: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Fires when the user clicks the right mouse button in the client area, opening the context menu.\n     * @param ev The mouse event.\n     */\n    oncontextmenu: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n    oncopy: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;\n    oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    oncut: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;\n    /**\n     * Fires when the user double-clicks the object.\n     * @param ev The mouse event.\n     */\n    ondblclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n    /**\n     * Fires on the source object continuously during a drag operation.\n     * @param ev The event.\n     */\n    ondrag: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n    /**\n     * Fires on the source object when the user releases the mouse at the close of a drag operation.\n     * @param ev The event.\n     */\n    ondragend: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n    /**\n     * Fires on the target element when the user drags the object to a valid drop target.\n     * @param ev The drag event.\n     */\n    ondragenter: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n    /**\n     * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.\n     * @param ev The drag event.\n     */\n    ondragleave: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n    /**\n     * Fires on the target element continuously while the user drags the object over a valid drop target.\n     * @param ev The event.\n     */\n    ondragover: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n    /**\n     * Fires on the source object when the user starts to drag a text selection or selected object.\n     * @param ev The event.\n     */\n    ondragstart: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n    ondrop: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n    /**\n     * Occurs when the duration attribute is updated.\n     * @param ev The event.\n     */\n    ondurationchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Occurs when the media element is reset to its initial state.\n     * @param ev The event.\n     */\n    onemptied: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Occurs when the end of playback is reached.\n     * @param ev The event\n     */\n    onended: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Fires when an error occurs during object loading.\n     * @param ev The event.\n     */\n    onerror: OnErrorEventHandler;\n    /**\n     * Fires when the object receives focus.\n     * @param ev The event.\n     */\n    onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;\n    onformdata: ((this: GlobalEventHandlers, ev: FormDataEvent) => any) | null;\n    ongotpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n    oninput: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    oninvalid: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Fires when the user presses a key.\n     * @param ev The keyboard event\n     */\n    onkeydown: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;\n    /**\n     * Fires when the user presses an alphanumeric key.\n     * @param ev The event.\n     * @deprecated\n     */\n    onkeypress: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;\n    /**\n     * Fires when the user releases a key.\n     * @param ev The keyboard event\n     */\n    onkeyup: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;\n    /**\n     * Fires immediately after the browser loads the object.\n     * @param ev The event.\n     */\n    onload: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Occurs when media data is loaded at the current playback position.\n     * @param ev The event.\n     */\n    onloadeddata: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Occurs when the duration and dimensions of the media have been determined.\n     * @param ev The event.\n     */\n    onloadedmetadata: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Occurs when Internet Explorer begins looking for media data.\n     * @param ev The event.\n     */\n    onloadstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    onlostpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n    /**\n     * Fires when the user clicks the object with either mouse button.\n     * @param ev The mouse event.\n     */\n    onmousedown: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n    onmouseenter: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n    onmouseleave: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n    /**\n     * Fires when the user moves the mouse over the object.\n     * @param ev The mouse event.\n     */\n    onmousemove: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n    /**\n     * Fires when the user moves the mouse pointer outside the boundaries of the object.\n     * @param ev The mouse event.\n     */\n    onmouseout: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n    /**\n     * Fires when the user moves the mouse pointer into the object.\n     * @param ev The mouse event.\n     */\n    onmouseover: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n    /**\n     * Fires when the user releases a mouse button while the mouse is over the object.\n     * @param ev The mouse event.\n     */\n    onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n    onpaste: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;\n    /**\n     * Occurs when playback is paused.\n     * @param ev The event.\n     */\n    onpause: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Occurs when the play method is requested.\n     * @param ev The event.\n     */\n    onplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Occurs when the audio or video has started playing.\n     * @param ev The event.\n     */\n    onplaying: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    onpointercancel: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n    onpointerdown: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n    onpointerenter: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n    onpointerleave: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n    onpointermove: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n    onpointerout: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n    onpointerover: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n    onpointerup: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n    /**\n     * Occurs to indicate progress while downloading media data.\n     * @param ev The event.\n     */\n    onprogress: ((this: GlobalEventHandlers, ev: ProgressEvent) => any) | null;\n    /**\n     * Occurs when the playback rate is increased or decreased.\n     * @param ev The event.\n     */\n    onratechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Fires when the user resets a form.\n     * @param ev The event.\n     */\n    onreset: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    onresize: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;\n    /**\n     * Fires when the user repositions the scroll box in the scroll bar on the object.\n     * @param ev The event.\n     */\n    onscroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    onsecuritypolicyviolation: ((this: GlobalEventHandlers, ev: SecurityPolicyViolationEvent) => any) | null;\n    /**\n     * Occurs when the seek operation ends.\n     * @param ev The event.\n     */\n    onseeked: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Occurs when the current playback position is moved.\n     * @param ev The event.\n     */\n    onseeking: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Fires when the current selection changes.\n     * @param ev The event.\n     */\n    onselect: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    onselectionchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    onselectstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    onslotchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Occurs when the download has stopped.\n     * @param ev The event.\n     */\n    onstalled: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    onsubmit: ((this: GlobalEventHandlers, ev: SubmitEvent) => any) | null;\n    /**\n     * Occurs if the load operation has been intentionally halted.\n     * @param ev The event.\n     */\n    onsuspend: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Occurs to indicate the current playback position.\n     * @param ev The event.\n     */\n    ontimeupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    ontoggle: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    ontouchcancel?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;\n    ontouchend?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;\n    ontouchmove?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;\n    ontouchstart?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;\n    ontransitioncancel: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\n    ontransitionend: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\n    ontransitionrun: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\n    ontransitionstart: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\n    /**\n     * Occurs when the volume is changed, or playback is muted or unmuted.\n     * @param ev The event.\n     */\n    onvolumechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /**\n     * Occurs when playback stops because the next frame of a video resource is not available.\n     * @param ev The event.\n     */\n    onwaiting: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /** @deprecated This is a legacy alias of \\`onanimationend\\`. */\n    onwebkitanimationend: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /** @deprecated This is a legacy alias of \\`onanimationiteration\\`. */\n    onwebkitanimationiteration: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /** @deprecated This is a legacy alias of \\`onanimationstart\\`. */\n    onwebkitanimationstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    /** @deprecated This is a legacy alias of \\`ontransitionend\\`. */\n    onwebkittransitionend: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n    onwheel: ((this: GlobalEventHandlers, ev: WheelEvent) => any) | null;\n    addEventListener<K extends keyof GlobalEventHandlersEventMap>(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof GlobalEventHandlersEventMap>(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ninterface HTMLAllCollection {\n    /** Returns the number of elements in the collection. */\n    readonly length: number;\n    /** Returns the item with index index from the collection (determined by tree order). */\n    item(nameOrIndex?: string): HTMLCollection | Element | null;\n    /**\n     * Returns the item with ID or name name from the collection.\n     *\n     * If there are multiple matching items, then an HTMLCollection object containing all those elements is returned.\n     *\n     * Only button, form, iframe, input, map, meta, object, select, and textarea elements can have a name for the purpose of this method; their name is given by the value of their name attribute.\n     */\n    namedItem(name: string): HTMLCollection | Element | null;\n    [index: number]: Element;\n}\n\ndeclare var HTMLAllCollection: {\n    prototype: HTMLAllCollection;\n    new(): HTMLAllCollection;\n};\n\n/** Hyperlink elements and provides special properties and methods (beyond those of the regular HTMLElement object interface that they inherit from) for manipulating the layout and presentation of such elements. */\ninterface HTMLAnchorElement extends HTMLElement, HTMLHyperlinkElementUtils {\n    /**\n     * Sets or retrieves the character set used to encode the object.\n     * @deprecated\n     */\n    charset: string;\n    /**\n     * Sets or retrieves the coordinates of the object.\n     * @deprecated\n     */\n    coords: string;\n    download: string;\n    /** Sets or retrieves the language code of the object. */\n    hreflang: string;\n    /**\n     * Sets or retrieves the shape of the object.\n     * @deprecated\n     */\n    name: string;\n    ping: string;\n    referrerPolicy: string;\n    /** Sets or retrieves the relationship between the object and the destination of the link. */\n    rel: string;\n    readonly relList: DOMTokenList;\n    /**\n     * Sets or retrieves the relationship between the object and the destination of the link.\n     * @deprecated\n     */\n    rev: string;\n    /**\n     * Sets or retrieves the shape of the object.\n     * @deprecated\n     */\n    shape: string;\n    /** Sets or retrieves the window or frame at which to target content. */\n    target: string;\n    /** Retrieves or sets the text of the object as a string. */\n    text: string;\n    type: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLAnchorElement: {\n    prototype: HTMLAnchorElement;\n    new(): HTMLAnchorElement;\n};\n\n/** Provides special properties and methods (beyond those of the regular object HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of <area> elements. */\ninterface HTMLAreaElement extends HTMLElement, HTMLHyperlinkElementUtils {\n    /** Sets or retrieves a text alternative to the graphic. */\n    alt: string;\n    /** Sets or retrieves the coordinates of the object. */\n    coords: string;\n    download: string;\n    /**\n     * Sets or gets whether clicks in this region cause action.\n     * @deprecated\n     */\n    noHref: boolean;\n    ping: string;\n    referrerPolicy: string;\n    rel: string;\n    readonly relList: DOMTokenList;\n    /** Sets or retrieves the shape of the object. */\n    shape: string;\n    /** Sets or retrieves the window or frame at which to target content. */\n    target: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLAreaElement: {\n    prototype: HTMLAreaElement;\n    new(): HTMLAreaElement;\n};\n\n/** Provides access to the properties of <audio> elements, as well as methods to manipulate them. It derives from the HTMLMediaElement interface. */\ninterface HTMLAudioElement extends HTMLMediaElement {\n    addEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLAudioElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLAudioElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLAudioElement: {\n    prototype: HTMLAudioElement;\n    new(): HTMLAudioElement;\n};\n\n/** A HTML line break element (<br>). It inherits from HTMLElement. */\ninterface HTMLBRElement extends HTMLElement {\n    /**\n     * Sets or retrieves the side on which floating objects are not to be positioned when any IHTMLBlockElement is inserted into the document.\n     * @deprecated\n     */\n    clear: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLBRElement: {\n    prototype: HTMLBRElement;\n    new(): HTMLBRElement;\n};\n\n/** Contains the base URI\\xA0for a document. This object inherits all of the properties and methods as described in the HTMLElement interface. */\ninterface HTMLBaseElement extends HTMLElement {\n    /** Gets or sets the baseline URL on which relative links are based. */\n    href: string;\n    /** Sets or retrieves the window or frame at which to target content. */\n    target: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBaseElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLBaseElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLBaseElement: {\n    prototype: HTMLBaseElement;\n    new(): HTMLBaseElement;\n};\n\ninterface HTMLBodyElementEventMap extends HTMLElementEventMap, WindowEventHandlersEventMap {\n}\n\n/** Provides special properties (beyond those inherited from the regular HTMLElement interface) for manipulating <body> elements. */\ninterface HTMLBodyElement extends HTMLElement, WindowEventHandlers {\n    /** @deprecated */\n    aLink: string;\n    /** @deprecated */\n    background: string;\n    /** @deprecated */\n    bgColor: string;\n    /** @deprecated */\n    link: string;\n    /** @deprecated */\n    text: string;\n    /** @deprecated */\n    vLink: string;\n    addEventListener<K extends keyof HTMLBodyElementEventMap>(type: K, listener: (this: HTMLBodyElement, ev: HTMLBodyElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLBodyElementEventMap>(type: K, listener: (this: HTMLBodyElement, ev: HTMLBodyElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLBodyElement: {\n    prototype: HTMLBodyElement;\n    new(): HTMLBodyElement;\n};\n\n/** Provides properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <button> elements. */\ninterface HTMLButtonElement extends HTMLElement {\n    disabled: boolean;\n    /** Retrieves a reference to the form that the object is embedded in. */\n    readonly form: HTMLFormElement | null;\n    /** Overrides the action attribute (where the data on a form is sent) on the parent form element. */\n    formAction: string;\n    /** Used to override the encoding (formEnctype attribute) specified on the form element. */\n    formEnctype: string;\n    /** Overrides the submit method attribute previously specified on a form element. */\n    formMethod: string;\n    /** Overrides any validation or required attributes on a form or form elements to allow it to be submitted without validation. This can be used to create a \"save draft\"-type submit option. */\n    formNoValidate: boolean;\n    /** Overrides the target attribute on a form element. */\n    formTarget: string;\n    readonly labels: NodeListOf<HTMLLabelElement>;\n    /** Sets or retrieves the name of the object. */\n    name: string;\n    /** Gets the classification and default behavior of the button. */\n    type: string;\n    /** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as \"this is a required field\". The result is that the user sees validation messages without actually submitting. */\n    readonly validationMessage: string;\n    /** Returns a  ValidityState object that represents the validity states of an element. */\n    readonly validity: ValidityState;\n    /** Sets or retrieves the default or selected value of the control. */\n    value: string;\n    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */\n    readonly willValidate: boolean;\n    /** Returns whether a form will validate when it is submitted, without having to submit it. */\n    checkValidity(): boolean;\n    reportValidity(): boolean;\n    /**\n     * Sets a custom error message that is displayed when a form is submitted.\n     * @param error Sets a custom error message that is displayed when a form is submitted.\n     */\n    setCustomValidity(error: string): void;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLButtonElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLButtonElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLButtonElement: {\n    prototype: HTMLButtonElement;\n    new(): HTMLButtonElement;\n};\n\n/** Provides properties and methods for manipulating the layout and presentation of <canvas> elements. The HTMLCanvasElement interface also inherits the properties and methods of the HTMLElement interface. */\ninterface HTMLCanvasElement extends HTMLElement {\n    /** Gets or sets the height of a canvas element on a document. */\n    height: number;\n    /** Gets or sets the width of a canvas element on a document. */\n    width: number;\n    captureStream(frameRequestRate?: number): MediaStream;\n    /**\n     * Returns an object that provides methods and properties for drawing and manipulating images and graphics on a canvas element in a document. A context object includes information about colors, line widths, fonts, and other graphic parameters that can be drawn on a canvas.\n     * @param contextId The identifier (ID) of the type of canvas to create. Internet Explorer 9 and Internet Explorer 10 support only a 2-D context using canvas.getContext(\"2d\"); IE11 Preview also supports 3-D or WebGL context using canvas.getContext(\"experimental-webgl\");\n     */\n    getContext(contextId: \"2d\", options?: CanvasRenderingContext2DSettings): CanvasRenderingContext2D | null;\n    getContext(contextId: \"bitmaprenderer\", options?: ImageBitmapRenderingContextSettings): ImageBitmapRenderingContext | null;\n    getContext(contextId: \"webgl\", options?: WebGLContextAttributes): WebGLRenderingContext | null;\n    getContext(contextId: \"webgl2\", options?: WebGLContextAttributes): WebGL2RenderingContext | null;\n    getContext(contextId: string, options?: any): RenderingContext | null;\n    toBlob(callback: BlobCallback, type?: string, quality?: any): void;\n    /**\n     * Returns the content of the current canvas as an image that you can use as a source for another canvas or an HTML element.\n     * @param type The standard MIME type for the image format to return. If you do not specify this parameter, the default value is a PNG format image.\n     */\n    toDataURL(type?: string, quality?: any): string;\n    transferControlToOffscreen(): OffscreenCanvas;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLCanvasElement: {\n    prototype: HTMLCanvasElement;\n    new(): HTMLCanvasElement;\n};\n\n/** A generic collection (array-like object similar to arguments) of elements (in document order) and offers methods and properties for selecting from the list. */\ninterface HTMLCollectionBase {\n    /** Sets or retrieves the number of objects in a collection. */\n    readonly length: number;\n    /** Retrieves an object from various collections. */\n    item(index: number): Element | null;\n    [index: number]: Element;\n}\n\ninterface HTMLCollection extends HTMLCollectionBase {\n    /** Retrieves a select object or an object from an options collection. */\n    namedItem(name: string): Element | null;\n}\n\ndeclare var HTMLCollection: {\n    prototype: HTMLCollection;\n    new(): HTMLCollection;\n};\n\ninterface HTMLCollectionOf<T extends Element> extends HTMLCollectionBase {\n    item(index: number): T | null;\n    namedItem(name: string): T | null;\n    [index: number]: T;\n}\n\n/** Provides special properties (beyond those of the regular HTMLElement interface it also has available to it by inheritance) for manipulating definition list (<dl>) elements. */\ninterface HTMLDListElement extends HTMLElement {\n    /** @deprecated */\n    compact: boolean;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLDListElement: {\n    prototype: HTMLDListElement;\n    new(): HTMLDListElement;\n};\n\n/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <data> elements. */\ninterface HTMLDataElement extends HTMLElement {\n    value: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLDataElement: {\n    prototype: HTMLDataElement;\n    new(): HTMLDataElement;\n};\n\n/** Provides special properties (beyond the HTMLElement object interface it also has available to it by inheritance) to manipulate <datalist> elements and their content. */\ninterface HTMLDataListElement extends HTMLElement {\n    /** Returns an HTMLCollection of the option elements of the datalist element. */\n    readonly options: HTMLCollectionOf<HTMLOptionElement>;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLDataListElement: {\n    prototype: HTMLDataListElement;\n    new(): HTMLDataListElement;\n};\n\ninterface HTMLDetailsElement extends HTMLElement {\n    open: boolean;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDetailsElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDetailsElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLDetailsElement: {\n    prototype: HTMLDetailsElement;\n    new(): HTMLDetailsElement;\n};\n\ninterface HTMLDialogElement extends HTMLElement {\n    open: boolean;\n    returnValue: string;\n    /**\n     * Closes the dialog element.\n     *\n     * The argument, if provided, provides a return value.\n     */\n    close(returnValue?: string): void;\n    /** Displays the dialog element. */\n    show(): void;\n    showModal(): void;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDialogElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDialogElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLDialogElement: {\n    prototype: HTMLDialogElement;\n    new(): HTMLDialogElement;\n};\n\n/** @deprecated */\ninterface HTMLDirectoryElement extends HTMLElement {\n    /** @deprecated */\n    compact: boolean;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDirectoryElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDirectoryElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** @deprecated */\ndeclare var HTMLDirectoryElement: {\n    prototype: HTMLDirectoryElement;\n    new(): HTMLDirectoryElement;\n};\n\n/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <div> elements. */\ninterface HTMLDivElement extends HTMLElement {\n    /**\n     * Sets or retrieves how the object is aligned with adjacent text.\n     * @deprecated\n     */\n    align: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLDivElement: {\n    prototype: HTMLDivElement;\n    new(): HTMLDivElement;\n};\n\n/** @deprecated use Document */\ninterface HTMLDocument extends Document {\n    addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: HTMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: HTMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** @deprecated */\ndeclare var HTMLDocument: {\n    prototype: HTMLDocument;\n    new(): HTMLDocument;\n};\n\ninterface HTMLElementEventMap extends ElementEventMap, GlobalEventHandlersEventMap {\n}\n\n/** Any HTML element. Some elements directly implement this interface, while others implement it via an interface that inherits it. */\ninterface HTMLElement extends Element, ElementCSSInlineStyle, ElementContentEditable, GlobalEventHandlers, HTMLOrSVGElement {\n    accessKey: string;\n    readonly accessKeyLabel: string;\n    autocapitalize: string;\n    dir: string;\n    draggable: boolean;\n    hidden: boolean;\n    inert: boolean;\n    innerText: string;\n    lang: string;\n    readonly offsetHeight: number;\n    readonly offsetLeft: number;\n    readonly offsetParent: Element | null;\n    readonly offsetTop: number;\n    readonly offsetWidth: number;\n    outerText: string;\n    spellcheck: boolean;\n    title: string;\n    translate: boolean;\n    attachInternals(): ElementInternals;\n    click(): void;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLElement: {\n    prototype: HTMLElement;\n    new(): HTMLElement;\n};\n\n/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <embed> elements. */\ninterface HTMLEmbedElement extends HTMLElement {\n    /** @deprecated */\n    align: string;\n    /** Sets or retrieves the height of the object. */\n    height: string;\n    /**\n     * Sets or retrieves the name of the object.\n     * @deprecated\n     */\n    name: string;\n    /** Sets or retrieves a URL to be loaded by the object. */\n    src: string;\n    type: string;\n    /** Sets or retrieves the width of the object. */\n    width: string;\n    getSVGDocument(): Document | null;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLEmbedElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLEmbedElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLEmbedElement: {\n    prototype: HTMLEmbedElement;\n    new(): HTMLEmbedElement;\n};\n\n/** Provides special properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of <fieldset> elements. */\ninterface HTMLFieldSetElement extends HTMLElement {\n    disabled: boolean;\n    /** Returns an HTMLCollection of the form controls in the element. */\n    readonly elements: HTMLCollection;\n    /** Retrieves a reference to the form that the object is embedded in. */\n    readonly form: HTMLFormElement | null;\n    name: string;\n    /** Returns the string \"fieldset\". */\n    readonly type: string;\n    /** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as \"this is a required field\". The result is that the user sees validation messages without actually submitting. */\n    readonly validationMessage: string;\n    /** Returns a  ValidityState object that represents the validity states of an element. */\n    readonly validity: ValidityState;\n    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */\n    readonly willValidate: boolean;\n    /** Returns whether a form will validate when it is submitted, without having to submit it. */\n    checkValidity(): boolean;\n    reportValidity(): boolean;\n    /**\n     * Sets a custom error message that is displayed when a form is submitted.\n     * @param error Sets a custom error message that is displayed when a form is submitted.\n     */\n    setCustomValidity(error: string): void;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFieldSetElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFieldSetElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLFieldSetElement: {\n    prototype: HTMLFieldSetElement;\n    new(): HTMLFieldSetElement;\n};\n\n/**\n * Implements the document object model (DOM) representation of the font element. The HTML Font Element <font> defines the font size, font face and color of text.\n * @deprecated\n */\ninterface HTMLFontElement extends HTMLElement {\n    /** @deprecated */\n    color: string;\n    /**\n     * Sets or retrieves the current typeface family.\n     * @deprecated\n     */\n    face: string;\n    /** @deprecated */\n    size: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFontElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFontElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** @deprecated */\ndeclare var HTMLFontElement: {\n    prototype: HTMLFontElement;\n    new(): HTMLFontElement;\n};\n\n/** A collection of HTML form control elements.  */\ninterface HTMLFormControlsCollection extends HTMLCollectionBase {\n    /**\n     * Returns the item with ID or name name from the collection.\n     *\n     * If there are multiple matching items, then a RadioNodeList object containing all those elements is returned.\n     */\n    namedItem(name: string): RadioNodeList | Element | null;\n}\n\ndeclare var HTMLFormControlsCollection: {\n    prototype: HTMLFormControlsCollection;\n    new(): HTMLFormControlsCollection;\n};\n\n/** A <form> element in the DOM; it allows access to and in some cases modification of aspects of the form, as well as access to its component elements. */\ninterface HTMLFormElement extends HTMLElement {\n    /** Sets or retrieves a list of character encodings for input data that must be accepted by the server processing the form. */\n    acceptCharset: string;\n    /** Sets or retrieves the URL to which the form content is sent for processing. */\n    action: string;\n    /** Specifies whether autocomplete is applied to an editable text field. */\n    autocomplete: string;\n    /** Retrieves a collection, in source order, of all controls in a given form. */\n    readonly elements: HTMLFormControlsCollection;\n    /** Sets or retrieves the MIME encoding for the form. */\n    encoding: string;\n    /** Sets or retrieves the encoding type for the form. */\n    enctype: string;\n    /** Sets or retrieves the number of objects in a collection. */\n    readonly length: number;\n    /** Sets or retrieves how to send the form data to the server. */\n    method: string;\n    /** Sets or retrieves the name of the object. */\n    name: string;\n    /** Designates a form that is not validated when submitted. */\n    noValidate: boolean;\n    rel: string;\n    readonly relList: DOMTokenList;\n    /** Sets or retrieves the window or frame at which to target content. */\n    target: string;\n    /** Returns whether a form will validate when it is submitted, without having to submit it. */\n    checkValidity(): boolean;\n    reportValidity(): boolean;\n    requestSubmit(submitter?: HTMLElement | null): void;\n    /** Fires when the user resets a form. */\n    reset(): void;\n    /** Fires when a FORM is about to be submitted. */\n    submit(): void;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFormElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFormElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n    [index: number]: Element;\n    [name: string]: any;\n}\n\ndeclare var HTMLFormElement: {\n    prototype: HTMLFormElement;\n    new(): HTMLFormElement;\n};\n\n/** @deprecated */\ninterface HTMLFrameElement extends HTMLElement {\n    /**\n     * Retrieves the document object of the page or frame.\n     * @deprecated\n     */\n    readonly contentDocument: Document | null;\n    /**\n     * Retrieves the object of the specified.\n     * @deprecated\n     */\n    readonly contentWindow: WindowProxy | null;\n    /**\n     * Sets or retrieves whether to display a border for the frame.\n     * @deprecated\n     */\n    frameBorder: string;\n    /**\n     * Sets or retrieves a URI to a long description of the object.\n     * @deprecated\n     */\n    longDesc: string;\n    /**\n     * Sets or retrieves the top and bottom margin heights before displaying the text in a frame.\n     * @deprecated\n     */\n    marginHeight: string;\n    /**\n     * Sets or retrieves the left and right margin widths before displaying the text in a frame.\n     * @deprecated\n     */\n    marginWidth: string;\n    /**\n     * Sets or retrieves the frame name.\n     * @deprecated\n     */\n    name: string;\n    /**\n     * Sets or retrieves whether the user can resize the frame.\n     * @deprecated\n     */\n    noResize: boolean;\n    /**\n     * Sets or retrieves whether the frame can be scrolled.\n     * @deprecated\n     */\n    scrolling: string;\n    /**\n     * Sets or retrieves a URL to be loaded by the object.\n     * @deprecated\n     */\n    src: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** @deprecated */\ndeclare var HTMLFrameElement: {\n    prototype: HTMLFrameElement;\n    new(): HTMLFrameElement;\n};\n\ninterface HTMLFrameSetElementEventMap extends HTMLElementEventMap, WindowEventHandlersEventMap {\n}\n\n/**\n * Provides special properties (beyond those of the regular HTMLElement interface they also inherit) for manipulating <frameset> elements.\n * @deprecated\n */\ninterface HTMLFrameSetElement extends HTMLElement, WindowEventHandlers {\n    /**\n     * Sets or retrieves the frame widths of the object.\n     * @deprecated\n     */\n    cols: string;\n    /**\n     * Sets or retrieves the frame heights of the object.\n     * @deprecated\n     */\n    rows: string;\n    addEventListener<K extends keyof HTMLFrameSetElementEventMap>(type: K, listener: (this: HTMLFrameSetElement, ev: HTMLFrameSetElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLFrameSetElementEventMap>(type: K, listener: (this: HTMLFrameSetElement, ev: HTMLFrameSetElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** @deprecated */\ndeclare var HTMLFrameSetElement: {\n    prototype: HTMLFrameSetElement;\n    new(): HTMLFrameSetElement;\n};\n\n/** Provides special properties (beyond those of the HTMLElement interface it also has available to it by inheritance) for manipulating <hr> elements. */\ninterface HTMLHRElement extends HTMLElement {\n    /**\n     * Sets or retrieves how the object is aligned with adjacent text.\n     * @deprecated\n     */\n    align: string;\n    /** @deprecated */\n    color: string;\n    /**\n     * Sets or retrieves whether the horizontal rule is drawn with 3-D shading.\n     * @deprecated\n     */\n    noShade: boolean;\n    /** @deprecated */\n    size: string;\n    /**\n     * Sets or retrieves the width of the object.\n     * @deprecated\n     */\n    width: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHRElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLHRElement: {\n    prototype: HTMLHRElement;\n    new(): HTMLHRElement;\n};\n\n/** Contains the descriptive information, or metadata, for a document. This object inherits all of the properties and methods described in the HTMLElement interface. */\ninterface HTMLHeadElement extends HTMLElement {\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLHeadElement: {\n    prototype: HTMLHeadElement;\n    new(): HTMLHeadElement;\n};\n\n/** The different heading elements. It inherits methods and properties from the HTMLElement interface. */\ninterface HTMLHeadingElement extends HTMLElement {\n    /**\n     * Sets or retrieves a value that indicates the table alignment.\n     * @deprecated\n     */\n    align: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadingElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHeadingElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLHeadingElement: {\n    prototype: HTMLHeadingElement;\n    new(): HTMLHeadingElement;\n};\n\n/** Serves as the root node for a given HTML document. This object inherits the properties and methods described in the HTMLElement interface. */\ninterface HTMLHtmlElement extends HTMLElement {\n    /**\n     * Sets or retrieves the DTD version that governs the current document.\n     * @deprecated\n     */\n    version: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHtmlElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLHtmlElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLHtmlElement: {\n    prototype: HTMLHtmlElement;\n    new(): HTMLHtmlElement;\n};\n\ninterface HTMLHyperlinkElementUtils {\n    /**\n     * Returns the hyperlink's URL's fragment (includes leading \"#\" if non-empty).\n     *\n     * Can be set, to change the URL's fragment (ignores leading \"#\").\n     */\n    hash: string;\n    /**\n     * Returns the hyperlink's URL's host and port (if different from the default port for the scheme).\n     *\n     * Can be set, to change the URL's host and port.\n     */\n    host: string;\n    /**\n     * Returns the hyperlink's URL's host.\n     *\n     * Can be set, to change the URL's host.\n     */\n    hostname: string;\n    /**\n     * Returns the hyperlink's URL.\n     *\n     * Can be set, to change the URL.\n     */\n    href: string;\n    toString(): string;\n    /** Returns the hyperlink's URL's origin. */\n    readonly origin: string;\n    /**\n     * Returns the hyperlink's URL's password.\n     *\n     * Can be set, to change the URL's password.\n     */\n    password: string;\n    /**\n     * Returns the hyperlink's URL's path.\n     *\n     * Can be set, to change the URL's path.\n     */\n    pathname: string;\n    /**\n     * Returns the hyperlink's URL's port.\n     *\n     * Can be set, to change the URL's port.\n     */\n    port: string;\n    /**\n     * Returns the hyperlink's URL's scheme.\n     *\n     * Can be set, to change the URL's scheme.\n     */\n    protocol: string;\n    /**\n     * Returns the hyperlink's URL's query (includes leading \"?\" if non-empty).\n     *\n     * Can be set, to change the URL's query (ignores leading \"?\").\n     */\n    search: string;\n    /**\n     * Returns the hyperlink's URL's username.\n     *\n     * Can be set, to change the URL's username.\n     */\n    username: string;\n}\n\n/** Provides special properties and methods (beyond those of the HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of inline frame elements. */\ninterface HTMLIFrameElement extends HTMLElement {\n    /**\n     * Sets or retrieves how the object is aligned with adjacent text.\n     * @deprecated\n     */\n    align: string;\n    allow: string;\n    allowFullscreen: boolean;\n    /** Retrieves the document object of the page or frame. */\n    readonly contentDocument: Document | null;\n    /** Retrieves the object of the specified. */\n    readonly contentWindow: WindowProxy | null;\n    /**\n     * Sets or retrieves whether to display a border for the frame.\n     * @deprecated\n     */\n    frameBorder: string;\n    /** Sets or retrieves the height of the object. */\n    height: string;\n    /**\n     * Sets or retrieves a URI to a long description of the object.\n     * @deprecated\n     */\n    longDesc: string;\n    /**\n     * Sets or retrieves the top and bottom margin heights before displaying the text in a frame.\n     * @deprecated\n     */\n    marginHeight: string;\n    /**\n     * Sets or retrieves the left and right margin widths before displaying the text in a frame.\n     * @deprecated\n     */\n    marginWidth: string;\n    /** Sets or retrieves the frame name. */\n    name: string;\n    referrerPolicy: ReferrerPolicy;\n    readonly sandbox: DOMTokenList;\n    /**\n     * Sets or retrieves whether the frame can be scrolled.\n     * @deprecated\n     */\n    scrolling: string;\n    /** Sets or retrieves a URL to be loaded by the object. */\n    src: string;\n    /** Sets or retrives the content of the page that is to contain. */\n    srcdoc: string;\n    /** Sets or retrieves the width of the object. */\n    width: string;\n    getSVGDocument(): Document | null;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLIFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLIFrameElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLIFrameElement: {\n    prototype: HTMLIFrameElement;\n    new(): HTMLIFrameElement;\n};\n\n/** Provides special properties and methods for manipulating <img> elements. */\ninterface HTMLImageElement extends HTMLElement {\n    /**\n     * Sets or retrieves how the object is aligned with adjacent text.\n     * @deprecated\n     */\n    align: string;\n    /** Sets or retrieves a text alternative to the graphic. */\n    alt: string;\n    /**\n     * Specifies the properties of a border drawn around an object.\n     * @deprecated\n     */\n    border: string;\n    /** Retrieves whether the object is fully loaded. */\n    readonly complete: boolean;\n    crossOrigin: string | null;\n    readonly currentSrc: string;\n    decoding: \"async\" | \"sync\" | \"auto\";\n    /** Sets or retrieves the height of the object. */\n    height: number;\n    /**\n     * Sets or retrieves the width of the border to draw around the object.\n     * @deprecated\n     */\n    hspace: number;\n    /** Sets or retrieves whether the image is a server-side image map. */\n    isMap: boolean;\n    /** Sets or retrieves the policy for loading image elements that are outside the viewport. */\n    loading: \"eager\" | \"lazy\";\n    /**\n     * Sets or retrieves a Uniform Resource Identifier (URI) to a long description of the object.\n     * @deprecated\n     */\n    longDesc: string;\n    /** @deprecated */\n    lowsrc: string;\n    /**\n     * Sets or retrieves the name of the object.\n     * @deprecated\n     */\n    name: string;\n    /** The original height of the image resource before sizing. */\n    readonly naturalHeight: number;\n    /** The original width of the image resource before sizing. */\n    readonly naturalWidth: number;\n    referrerPolicy: string;\n    sizes: string;\n    /** The address or URL of the a media resource that is to be considered. */\n    src: string;\n    srcset: string;\n    /** Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map. */\n    useMap: string;\n    /**\n     * Sets or retrieves the vertical margin for the object.\n     * @deprecated\n     */\n    vspace: number;\n    /** Sets or retrieves the width of the object. */\n    width: number;\n    readonly x: number;\n    readonly y: number;\n    decode(): Promise<void>;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLImageElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLImageElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLImageElement: {\n    prototype: HTMLImageElement;\n    new(): HTMLImageElement;\n};\n\n/** Provides special properties and methods for manipulating the options, layout, and presentation of <input> elements. */\ninterface HTMLInputElement extends HTMLElement {\n    /** Sets or retrieves a comma-separated list of content types. */\n    accept: string;\n    /**\n     * Sets or retrieves how the object is aligned with adjacent text.\n     * @deprecated\n     */\n    align: string;\n    /** Sets or retrieves a text alternative to the graphic. */\n    alt: string;\n    /** Specifies whether autocomplete is applied to an editable text field. */\n    autocomplete: string;\n    capture: string;\n    /** Sets or retrieves the state of the check box or radio button. */\n    checked: boolean;\n    /** Sets or retrieves the state of the check box or radio button. */\n    defaultChecked: boolean;\n    /** Sets or retrieves the initial contents of the object. */\n    defaultValue: string;\n    dirName: string;\n    disabled: boolean;\n    /** Returns a FileList object on a file type input object. */\n    files: FileList | null;\n    /** Retrieves a reference to the form that the object is embedded in. */\n    readonly form: HTMLFormElement | null;\n    /** Overrides the action attribute (where the data on a form is sent) on the parent form element. */\n    formAction: string;\n    /** Used to override the encoding (formEnctype attribute) specified on the form element. */\n    formEnctype: string;\n    /** Overrides the submit method attribute previously specified on a form element. */\n    formMethod: string;\n    /** Overrides any validation or required attributes on a form or form elements to allow it to be submitted without validation. This can be used to create a \"save draft\"-type submit option. */\n    formNoValidate: boolean;\n    /** Overrides the target attribute on a form element. */\n    formTarget: string;\n    /** Sets or retrieves the height of the object. */\n    height: number;\n    /** When set, overrides the rendering of checkbox controls so that the current value is not visible. */\n    indeterminate: boolean;\n    readonly labels: NodeListOf<HTMLLabelElement> | null;\n    /** Specifies the ID of a pre-defined datalist of options for an input element. */\n    readonly list: HTMLDataListElement | null;\n    /** Defines the maximum acceptable value for an input element with type=\"number\".When used with the min and step attributes, lets you control the range and increment (such as only even numbers) that the user can enter into an input field. */\n    max: string;\n    /** Sets or retrieves the maximum number of characters that the user can enter in a text control. */\n    maxLength: number;\n    /** Defines the minimum acceptable value for an input element with type=\"number\". When used with the max and step attributes, lets you control the range and increment (such as even numbers only) that the user can enter into an input field. */\n    min: string;\n    minLength: number;\n    /** Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list. */\n    multiple: boolean;\n    /** Sets or retrieves the name of the object. */\n    name: string;\n    /** Gets or sets a string containing a regular expression that the user's input must match. */\n    pattern: string;\n    /** Gets or sets a text string that is displayed in an input field as a hint or prompt to users as the format or type of information they need to enter.The text appears in an input field until the user puts focus on the field. */\n    placeholder: string;\n    readOnly: boolean;\n    /** When present, marks an element that can't be submitted without a value. */\n    required: boolean;\n    selectionDirection: \"forward\" | \"backward\" | \"none\" | null;\n    /** Gets or sets the end position or offset of a text selection. */\n    selectionEnd: number | null;\n    /** Gets or sets the starting position or offset of a text selection. */\n    selectionStart: number | null;\n    size: number;\n    /** The address or URL of the a media resource that is to be considered. */\n    src: string;\n    /** Defines an increment or jump between values that you want to allow the user to enter. When used with the max and min attributes, lets you control the range and increment (for example, allow only even numbers) that the user can enter into an input field. */\n    step: string;\n    /** Returns the content type of the object. */\n    type: string;\n    /**\n     * Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map.\n     * @deprecated\n     */\n    useMap: string;\n    /** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as \"this is a required field\". The result is that the user sees validation messages without actually submitting. */\n    readonly validationMessage: string;\n    /** Returns a  ValidityState object that represents the validity states of an element. */\n    readonly validity: ValidityState;\n    /** Returns the value of the data at the cursor's current position. */\n    value: string;\n    /** Returns a Date object representing the form control's value, if applicable; otherwise, returns null. Can be set, to change the value. Throws an \"InvalidStateError\" DOMException if the control isn't date- or time-based. */\n    valueAsDate: Date | null;\n    /** Returns the input field value as a number. */\n    valueAsNumber: number;\n    readonly webkitEntries: ReadonlyArray<FileSystemEntry>;\n    webkitdirectory: boolean;\n    /** Sets or retrieves the width of the object. */\n    width: number;\n    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */\n    readonly willValidate: boolean;\n    /** Returns whether a form will validate when it is submitted, without having to submit it. */\n    checkValidity(): boolean;\n    reportValidity(): boolean;\n    /** Makes the selection equal to the current object. */\n    select(): void;\n    /**\n     * Sets a custom error message that is displayed when a form is submitted.\n     * @param error Sets a custom error message that is displayed when a form is submitted.\n     */\n    setCustomValidity(error: string): void;\n    setRangeText(replacement: string): void;\n    setRangeText(replacement: string, start: number, end: number, selectionMode?: SelectionMode): void;\n    /**\n     * Sets the start and end positions of a selection in a text field.\n     * @param start The offset into the text field for the start of the selection.\n     * @param end The offset into the text field for the end of the selection.\n     * @param direction The direction in which the selection is performed.\n     */\n    setSelectionRange(start: number | null, end: number | null, direction?: \"forward\" | \"backward\" | \"none\"): void;\n    showPicker(): void;\n    /**\n     * Decrements a range input control's value by the value given by the Step attribute. If the optional parameter is used, it will decrement the input control's step value multiplied by the parameter's value.\n     * @param n Value to decrement the value by.\n     */\n    stepDown(n?: number): void;\n    /**\n     * Increments a range input control's value by the value given by the Step attribute. If the optional parameter is used, will increment the input control's value by that value.\n     * @param n Value to increment the value by.\n     */\n    stepUp(n?: number): void;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLInputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLInputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLInputElement: {\n    prototype: HTMLInputElement;\n    new(): HTMLInputElement;\n};\n\n/** Exposes specific properties and methods (beyond those defined by regular HTMLElement interface it also has available to it by inheritance) for manipulating list elements. */\ninterface HTMLLIElement extends HTMLElement {\n    /** @deprecated */\n    type: string;\n    /** Sets or retrieves the value of a list item. */\n    value: number;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLIElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLIElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLLIElement: {\n    prototype: HTMLLIElement;\n    new(): HTMLLIElement;\n};\n\n/** Gives access to properties specific to <label> elements. It inherits methods and properties from the base HTMLElement interface. */\ninterface HTMLLabelElement extends HTMLElement {\n    /** Returns the form control that is associated with this element. */\n    readonly control: HTMLElement | null;\n    /** Retrieves a reference to the form that the object is embedded in. */\n    readonly form: HTMLFormElement | null;\n    /** Sets or retrieves the object to which the given label object is assigned. */\n    htmlFor: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLabelElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLabelElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLLabelElement: {\n    prototype: HTMLLabelElement;\n    new(): HTMLLabelElement;\n};\n\n/** The HTMLLegendElement is an interface allowing to access properties of the <legend> elements. It inherits properties and methods from the HTMLElement interface. */\ninterface HTMLLegendElement extends HTMLElement {\n    /** @deprecated */\n    align: string;\n    /** Retrieves a reference to the form that the object is embedded in. */\n    readonly form: HTMLFormElement | null;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLegendElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLegendElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLLegendElement: {\n    prototype: HTMLLegendElement;\n    new(): HTMLLegendElement;\n};\n\n/** Reference information for external resources and the relationship of those resources to a document and vice-versa. This object inherits all of the properties and methods of the HTMLElement interface. */\ninterface HTMLLinkElement extends HTMLElement, LinkStyle {\n    as: string;\n    /**\n     * Sets or retrieves the character set used to encode the object.\n     * @deprecated\n     */\n    charset: string;\n    crossOrigin: string | null;\n    disabled: boolean;\n    /** Sets or retrieves a destination URL or an anchor point. */\n    href: string;\n    /** Sets or retrieves the language code of the object. */\n    hreflang: string;\n    imageSizes: string;\n    imageSrcset: string;\n    integrity: string;\n    /** Sets or retrieves the media type. */\n    media: string;\n    referrerPolicy: string;\n    /** Sets or retrieves the relationship between the object and the destination of the link. */\n    rel: string;\n    readonly relList: DOMTokenList;\n    /**\n     * Sets or retrieves the relationship between the object and the destination of the link.\n     * @deprecated\n     */\n    rev: string;\n    readonly sizes: DOMTokenList;\n    /**\n     * Sets or retrieves the window or frame at which to target content.\n     * @deprecated\n     */\n    target: string;\n    /** Sets or retrieves the MIME type of the object. */\n    type: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLinkElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLLinkElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLLinkElement: {\n    prototype: HTMLLinkElement;\n    new(): HTMLLinkElement;\n};\n\n/** Provides special properties and methods (beyond those of the regular object HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of map elements. */\ninterface HTMLMapElement extends HTMLElement {\n    /** Retrieves a collection of the area objects defined for the given map object. */\n    readonly areas: HTMLCollection;\n    /** Sets or retrieves the name of the object. */\n    name: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMapElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMapElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLMapElement: {\n    prototype: HTMLMapElement;\n    new(): HTMLMapElement;\n};\n\n/**\n * Provides methods to manipulate <marquee> elements.\n * @deprecated\n */\ninterface HTMLMarqueeElement extends HTMLElement {\n    /** @deprecated */\n    behavior: string;\n    /** @deprecated */\n    bgColor: string;\n    /** @deprecated */\n    direction: string;\n    /** @deprecated */\n    height: string;\n    /** @deprecated */\n    hspace: number;\n    /** @deprecated */\n    loop: number;\n    /** @deprecated */\n    scrollAmount: number;\n    /** @deprecated */\n    scrollDelay: number;\n    /** @deprecated */\n    trueSpeed: boolean;\n    /** @deprecated */\n    vspace: number;\n    /** @deprecated */\n    width: string;\n    /** @deprecated */\n    start(): void;\n    /** @deprecated */\n    stop(): void;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMarqueeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMarqueeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** @deprecated */\ndeclare var HTMLMarqueeElement: {\n    prototype: HTMLMarqueeElement;\n    new(): HTMLMarqueeElement;\n};\n\ninterface HTMLMediaElementEventMap extends HTMLElementEventMap {\n    \"encrypted\": MediaEncryptedEvent;\n    \"waitingforkey\": Event;\n}\n\n/** Adds to HTMLElement the properties and methods needed to support basic media-related capabilities\\xA0that are\\xA0common to audio and video. */\ninterface HTMLMediaElement extends HTMLElement {\n    /** Gets or sets a value that indicates whether to start playing the media automatically. */\n    autoplay: boolean;\n    /** Gets a collection of buffered time ranges. */\n    readonly buffered: TimeRanges;\n    /** Gets or sets a flag that indicates whether the client provides a set of controls for the media (in case the developer does not include controls for the player). */\n    controls: boolean;\n    crossOrigin: string | null;\n    /** Gets the address or URL of the current media resource that is selected by IHTMLMediaElement. */\n    readonly currentSrc: string;\n    /** Gets or sets the current playback position, in seconds. */\n    currentTime: number;\n    defaultMuted: boolean;\n    /** Gets or sets the default playback rate when the user is not using fast forward or reverse for a video or audio resource. */\n    defaultPlaybackRate: number;\n    disableRemotePlayback: boolean;\n    /** Returns the duration in seconds of the current media resource. A NaN value is returned if duration is not available, or Infinity if the media resource is streaming. */\n    readonly duration: number;\n    /** Gets information about whether the playback has ended or not. */\n    readonly ended: boolean;\n    /** Returns an object representing the current error state of the audio or video element. */\n    readonly error: MediaError | null;\n    /** Gets or sets a flag to specify whether playback should restart after it completes. */\n    loop: boolean;\n    /** Available only in secure contexts. */\n    readonly mediaKeys: MediaKeys | null;\n    /** Gets or sets a flag that indicates whether the audio (either audio or the audio track on video media) is muted. */\n    muted: boolean;\n    /** Gets the current network activity for the element. */\n    readonly networkState: number;\n    onencrypted: ((this: HTMLMediaElement, ev: MediaEncryptedEvent) => any) | null;\n    onwaitingforkey: ((this: HTMLMediaElement, ev: Event) => any) | null;\n    /** Gets a flag that specifies whether playback is paused. */\n    readonly paused: boolean;\n    /** Gets or sets the current rate of speed for the media resource to play. This speed is expressed as a multiple of the normal speed of the media resource. */\n    playbackRate: number;\n    /** Gets TimeRanges for the current media resource that has been played. */\n    readonly played: TimeRanges;\n    /** Gets or sets a value indicating what data should be preloaded, if any. */\n    preload: \"none\" | \"metadata\" | \"auto\" | \"\";\n    preservesPitch: boolean;\n    readonly readyState: number;\n    readonly remote: RemotePlayback;\n    /** Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. */\n    readonly seekable: TimeRanges;\n    /** Gets a flag that indicates whether the client is currently moving to a new playback position in the media resource. */\n    readonly seeking: boolean;\n    /** The address or URL of the a media resource that is to be considered. */\n    src: string;\n    srcObject: MediaProvider | null;\n    readonly textTracks: TextTrackList;\n    /** Gets or sets the volume level for audio portions of the media element. */\n    volume: number;\n    addTextTrack(kind: TextTrackKind, label?: string, language?: string): TextTrack;\n    /** Returns a string that specifies whether the client can play a given media resource type. */\n    canPlayType(type: string): CanPlayTypeResult;\n    fastSeek(time: number): void;\n    /** Resets the audio or video object and loads a new media resource. */\n    load(): void;\n    /** Pauses the current playback and sets paused to TRUE. This can be used to test whether the media is playing or paused. You can also use the pause or play events to tell whether the media is playing or not. */\n    pause(): void;\n    /** Loads and starts playback of a media resource. */\n    play(): Promise<void>;\n    /** Available only in secure contexts. */\n    setMediaKeys(mediaKeys: MediaKeys | null): Promise<void>;\n    readonly NETWORK_EMPTY: 0;\n    readonly NETWORK_IDLE: 1;\n    readonly NETWORK_LOADING: 2;\n    readonly NETWORK_NO_SOURCE: 3;\n    readonly HAVE_NOTHING: 0;\n    readonly HAVE_METADATA: 1;\n    readonly HAVE_CURRENT_DATA: 2;\n    readonly HAVE_FUTURE_DATA: 3;\n    readonly HAVE_ENOUGH_DATA: 4;\n    addEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLMediaElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (this: HTMLMediaElement, ev: HTMLMediaElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLMediaElement: {\n    prototype: HTMLMediaElement;\n    new(): HTMLMediaElement;\n    readonly NETWORK_EMPTY: 0;\n    readonly NETWORK_IDLE: 1;\n    readonly NETWORK_LOADING: 2;\n    readonly NETWORK_NO_SOURCE: 3;\n    readonly HAVE_NOTHING: 0;\n    readonly HAVE_METADATA: 1;\n    readonly HAVE_CURRENT_DATA: 2;\n    readonly HAVE_FUTURE_DATA: 3;\n    readonly HAVE_ENOUGH_DATA: 4;\n};\n\ninterface HTMLMenuElement extends HTMLElement {\n    /** @deprecated */\n    compact: boolean;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMenuElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMenuElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLMenuElement: {\n    prototype: HTMLMenuElement;\n    new(): HTMLMenuElement;\n};\n\n/** Contains descriptive metadata about a document. It\\xA0inherits all of the properties and methods described in the HTMLElement interface. */\ninterface HTMLMetaElement extends HTMLElement {\n    /** Gets or sets meta-information to associate with httpEquiv or name. */\n    content: string;\n    /** Gets or sets information used to bind the value of a content attribute of a meta element to an HTTP response header. */\n    httpEquiv: string;\n    media: string;\n    /** Sets or retrieves the value specified in the content attribute of the meta object. */\n    name: string;\n    /**\n     * Sets or retrieves a scheme to be used in interpreting the value of a property specified for the object.\n     * @deprecated\n     */\n    scheme: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMetaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMetaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLMetaElement: {\n    prototype: HTMLMetaElement;\n    new(): HTMLMetaElement;\n};\n\n/** The HTML <meter> elements expose the HTMLMeterElement interface, which provides special properties and methods (beyond the HTMLElement object interface they also have available to them by inheritance) for manipulating the layout and presentation of <meter> elements. */\ninterface HTMLMeterElement extends HTMLElement {\n    high: number;\n    readonly labels: NodeListOf<HTMLLabelElement>;\n    low: number;\n    max: number;\n    min: number;\n    optimum: number;\n    value: number;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMeterElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLMeterElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLMeterElement: {\n    prototype: HTMLMeterElement;\n    new(): HTMLMeterElement;\n};\n\n/** Provides special properties (beyond the regular methods and properties available through the HTMLElement interface they also have available to them by inheritance) for manipulating modification elements, that is <del> and <ins>. */\ninterface HTMLModElement extends HTMLElement {\n    /** Sets or retrieves reference information about the object. */\n    cite: string;\n    /** Sets or retrieves the date and time of a modification to the object. */\n    dateTime: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLModElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLModElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLModElement: {\n    prototype: HTMLModElement;\n    new(): HTMLModElement;\n};\n\n/** Provides special properties (beyond those defined on the regular HTMLElement interface it also has available to it by inheritance) for manipulating ordered list elements. */\ninterface HTMLOListElement extends HTMLElement {\n    /** @deprecated */\n    compact: boolean;\n    reversed: boolean;\n    /** The starting number. */\n    start: number;\n    type: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLOListElement: {\n    prototype: HTMLOListElement;\n    new(): HTMLOListElement;\n};\n\n/** Provides special properties and methods (beyond those on the HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of <object> element, representing external resources. */\ninterface HTMLObjectElement extends HTMLElement {\n    /** @deprecated */\n    align: string;\n    /**\n     * Sets or retrieves a character string that can be used to implement your own archive functionality for the object.\n     * @deprecated\n     */\n    archive: string;\n    /** @deprecated */\n    border: string;\n    /**\n     * Sets or retrieves the URL of the file containing the compiled Java class.\n     * @deprecated\n     */\n    code: string;\n    /**\n     * Sets or retrieves the URL of the component.\n     * @deprecated\n     */\n    codeBase: string;\n    /**\n     * Sets or retrieves the Internet media type for the code associated with the object.\n     * @deprecated\n     */\n    codeType: string;\n    /** Retrieves the document object of the page or frame. */\n    readonly contentDocument: Document | null;\n    readonly contentWindow: WindowProxy | null;\n    /** Sets or retrieves the URL that references the data of the object. */\n    data: string;\n    /** @deprecated */\n    declare: boolean;\n    /** Retrieves a reference to the form that the object is embedded in. */\n    readonly form: HTMLFormElement | null;\n    /** Sets or retrieves the height of the object. */\n    height: string;\n    /** @deprecated */\n    hspace: number;\n    /** Sets or retrieves the name of the object. */\n    name: string;\n    /**\n     * Sets or retrieves a message to be displayed while an object is loading.\n     * @deprecated\n     */\n    standby: string;\n    /** Sets or retrieves the MIME type of the object. */\n    type: string;\n    /** Sets or retrieves the URL, often with a bookmark extension (#name), to use as a client-side image map. */\n    useMap: string;\n    /** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as \"this is a required field\". The result is that the user sees validation messages without actually submitting. */\n    readonly validationMessage: string;\n    /** Returns a  ValidityState object that represents the validity states of an element. */\n    readonly validity: ValidityState;\n    /** @deprecated */\n    vspace: number;\n    /** Sets or retrieves the width of the object. */\n    width: string;\n    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */\n    readonly willValidate: boolean;\n    /** Returns whether a form will validate when it is submitted, without having to submit it. */\n    checkValidity(): boolean;\n    getSVGDocument(): Document | null;\n    reportValidity(): boolean;\n    /**\n     * Sets a custom error message that is displayed when a form is submitted.\n     * @param error Sets a custom error message that is displayed when a form is submitted.\n     */\n    setCustomValidity(error: string): void;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLObjectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLObjectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLObjectElement: {\n    prototype: HTMLObjectElement;\n    new(): HTMLObjectElement;\n};\n\n/** Provides special properties and methods (beyond the regular HTMLElement object interface they also have available to them by inheritance) for manipulating the layout and presentation of <optgroup> elements. */\ninterface HTMLOptGroupElement extends HTMLElement {\n    disabled: boolean;\n    /** Sets or retrieves a value that you can use to implement your own label functionality for the object. */\n    label: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptGroupElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptGroupElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLOptGroupElement: {\n    prototype: HTMLOptGroupElement;\n    new(): HTMLOptGroupElement;\n};\n\n/** <option> elements and inherits all classes and methods of the HTMLElement interface. */\ninterface HTMLOptionElement extends HTMLElement {\n    /** Sets or retrieves the status of an option. */\n    defaultSelected: boolean;\n    disabled: boolean;\n    /** Retrieves a reference to the form that the object is embedded in. */\n    readonly form: HTMLFormElement | null;\n    /** Sets or retrieves the ordinal position of an option in a list box. */\n    readonly index: number;\n    /** Sets or retrieves a value that you can use to implement your own label functionality for the object. */\n    label: string;\n    /** Sets or retrieves whether the option in the list box is the default item. */\n    selected: boolean;\n    /** Sets or retrieves the text string specified by the option tag. */\n    text: string;\n    /** Sets or retrieves the value which is returned to the server when the form control is submitted. */\n    value: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLOptionElement: {\n    prototype: HTMLOptionElement;\n    new(): HTMLOptionElement;\n};\n\n/** HTMLOptionsCollection is an interface representing a collection of HTML option elements (in document order) and offers methods and properties for traversing the list as well as optionally altering its items. This type is returned solely by the \"options\" property of select. */\ninterface HTMLOptionsCollection extends HTMLCollectionOf<HTMLOptionElement> {\n    /**\n     * Returns the number of elements in the collection.\n     *\n     * When set to a smaller number, truncates the number of option elements in the corresponding container.\n     *\n     * When set to a greater number, adds new blank option elements to that container.\n     */\n    length: number;\n    /**\n     * Returns the index of the first selected item, if any, or \\u22121 if there is no selected item.\n     *\n     * Can be set, to change the selection.\n     */\n    selectedIndex: number;\n    /**\n     * Inserts element before the node given by before.\n     *\n     * The before argument can be a number, in which case element is inserted before the item with that number, or an element from the collection, in which case element is inserted before that element.\n     *\n     * If before is omitted, null, or a number out of range, then element will be added at the end of the list.\n     *\n     * This method will throw a \"HierarchyRequestError\" DOMException if element is an ancestor of the element into which it is to be inserted.\n     */\n    add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number | null): void;\n    /** Removes the item with index index from the collection. */\n    remove(index: number): void;\n}\n\ndeclare var HTMLOptionsCollection: {\n    prototype: HTMLOptionsCollection;\n    new(): HTMLOptionsCollection;\n};\n\ninterface HTMLOrSVGElement {\n    autofocus: boolean;\n    readonly dataset: DOMStringMap;\n    nonce?: string;\n    tabIndex: number;\n    blur(): void;\n    focus(options?: FocusOptions): void;\n}\n\n/** Provides properties and methods (beyond those inherited from HTMLElement) for manipulating the layout and presentation of <output> elements. */\ninterface HTMLOutputElement extends HTMLElement {\n    defaultValue: string;\n    readonly form: HTMLFormElement | null;\n    readonly htmlFor: DOMTokenList;\n    readonly labels: NodeListOf<HTMLLabelElement>;\n    name: string;\n    /** Returns the string \"output\". */\n    readonly type: string;\n    readonly validationMessage: string;\n    readonly validity: ValidityState;\n    /**\n     * Returns the element's current value.\n     *\n     * Can be set, to change the value.\n     */\n    value: string;\n    readonly willValidate: boolean;\n    checkValidity(): boolean;\n    reportValidity(): boolean;\n    setCustomValidity(error: string): void;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOutputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLOutputElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLOutputElement: {\n    prototype: HTMLOutputElement;\n    new(): HTMLOutputElement;\n};\n\n/** Provides special properties (beyond those of the regular HTMLElement object interface it inherits) for manipulating <p> elements. */\ninterface HTMLParagraphElement extends HTMLElement {\n    /**\n     * Sets or retrieves how the object is aligned with adjacent text.\n     * @deprecated\n     */\n    align: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParagraphElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParagraphElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLParagraphElement: {\n    prototype: HTMLParagraphElement;\n    new(): HTMLParagraphElement;\n};\n\n/**\n * Provides special properties (beyond those of the regular HTMLElement object interface it inherits) for manipulating <param> elements, representing a pair of a key and a value that acts as a parameter for an <object> element.\n * @deprecated\n */\ninterface HTMLParamElement extends HTMLElement {\n    /**\n     * Sets or retrieves the name of an input parameter for an element.\n     * @deprecated\n     */\n    name: string;\n    /**\n     * Sets or retrieves the content type of the resource designated by the value attribute.\n     * @deprecated\n     */\n    type: string;\n    /**\n     * Sets or retrieves the value of an input parameter for an element.\n     * @deprecated\n     */\n    value: string;\n    /**\n     * Sets or retrieves the data type of the value attribute.\n     * @deprecated\n     */\n    valueType: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParamElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLParamElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** @deprecated */\ndeclare var HTMLParamElement: {\n    prototype: HTMLParamElement;\n    new(): HTMLParamElement;\n};\n\n/** A <picture> HTML element. It doesn't implement specific properties or methods. */\ninterface HTMLPictureElement extends HTMLElement {\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPictureElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPictureElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLPictureElement: {\n    prototype: HTMLPictureElement;\n    new(): HTMLPictureElement;\n};\n\n/** Exposes specific properties and methods (beyond those of the HTMLElement interface it also has available to it by inheritance) for manipulating a block of preformatted text (<pre>). */\ninterface HTMLPreElement extends HTMLElement {\n    /**\n     * Sets or gets a value that you can use to implement your own width functionality for the object.\n     * @deprecated\n     */\n    width: number;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPreElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLPreElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLPreElement: {\n    prototype: HTMLPreElement;\n    new(): HTMLPreElement;\n};\n\n/** Provides special properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of <progress> elements. */\ninterface HTMLProgressElement extends HTMLElement {\n    readonly labels: NodeListOf<HTMLLabelElement>;\n    /** Defines the maximum, or \"done\" value for a progress element. */\n    max: number;\n    /** Returns the quotient of value/max when the value attribute is set (determinate progress bar), or -1 when the value attribute is missing (indeterminate progress bar). */\n    readonly position: number;\n    /** Sets or gets the current value of a progress element. The value must be a non-negative number between 0 and the max value. */\n    value: number;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLProgressElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLProgressElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLProgressElement: {\n    prototype: HTMLProgressElement;\n    new(): HTMLProgressElement;\n};\n\n/** Provides special properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating quoting elements, like <blockquote> and <q>, but not the <cite> element. */\ninterface HTMLQuoteElement extends HTMLElement {\n    /** Sets or retrieves reference information about the object. */\n    cite: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLQuoteElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLQuoteElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLQuoteElement: {\n    prototype: HTMLQuoteElement;\n    new(): HTMLQuoteElement;\n};\n\n/** HTML <script> elements expose the HTMLScriptElement interface, which provides special properties and methods for manipulating the behavior and execution of <script> elements (beyond the inherited HTMLElement interface). */\ninterface HTMLScriptElement extends HTMLElement {\n    async: boolean;\n    /**\n     * Sets or retrieves the character set used to encode the object.\n     * @deprecated\n     */\n    charset: string;\n    crossOrigin: string | null;\n    /** Sets or retrieves the status of the script. */\n    defer: boolean;\n    /**\n     * Sets or retrieves the event for which the script is written.\n     * @deprecated\n     */\n    event: string;\n    /**\n     * Sets or retrieves the object that is bound to the event script.\n     * @deprecated\n     */\n    htmlFor: string;\n    integrity: string;\n    noModule: boolean;\n    referrerPolicy: string;\n    /** Retrieves the URL to an external file that contains the source code or data. */\n    src: string;\n    /** Retrieves or sets the text of the object as a string. */\n    text: string;\n    /** Sets or retrieves the MIME type for the associated scripting engine. */\n    type: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLScriptElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLScriptElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLScriptElement: {\n    prototype: HTMLScriptElement;\n    new(): HTMLScriptElement;\n    supports(type: string): boolean;\n};\n\n/** A <select> HTML Element. These elements also share all of the properties and methods of other HTML elements via the HTMLElement interface. */\ninterface HTMLSelectElement extends HTMLElement {\n    autocomplete: string;\n    disabled: boolean;\n    /** Retrieves a reference to the form that the object is embedded in. */\n    readonly form: HTMLFormElement | null;\n    readonly labels: NodeListOf<HTMLLabelElement>;\n    /** Sets or retrieves the number of objects in a collection. */\n    length: number;\n    /** Sets or retrieves the Boolean value indicating whether multiple items can be selected from a list. */\n    multiple: boolean;\n    /** Sets or retrieves the name of the object. */\n    name: string;\n    /** Returns an HTMLOptionsCollection of the list of options. */\n    readonly options: HTMLOptionsCollection;\n    /** When present, marks an element that can't be submitted without a value. */\n    required: boolean;\n    /** Sets or retrieves the index of the selected option in a select object. */\n    selectedIndex: number;\n    readonly selectedOptions: HTMLCollectionOf<HTMLOptionElement>;\n    /** Sets or retrieves the number of rows in the list box. */\n    size: number;\n    /** Retrieves the type of select control based on the value of the MULTIPLE attribute. */\n    readonly type: string;\n    /** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as \"this is a required field\". The result is that the user sees validation messages without actually submitting. */\n    readonly validationMessage: string;\n    /** Returns a  ValidityState object that represents the validity states of an element. */\n    readonly validity: ValidityState;\n    /** Sets or retrieves the value which is returned to the server when the form control is submitted. */\n    value: string;\n    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */\n    readonly willValidate: boolean;\n    /**\n     * Adds an element to the areas, controlRange, or options collection.\n     * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection.\n     * @param before Variant of type Object that specifies an element to insert before, or null to append the object to the collection.\n     */\n    add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number | null): void;\n    /** Returns whether a form will validate when it is submitted, without having to submit it. */\n    checkValidity(): boolean;\n    /**\n     * Retrieves a select object or an object from an options collection.\n     * @param name Variant of type Number or String that specifies the object or collection to retrieve. If this parameter is an integer, it is the zero-based index of the object. If this parameter is a string, all objects with matching name or id properties are retrieved, and a collection is returned if more than one match is made.\n     * @param index Variant of type Number that specifies the zero-based index of the object to retrieve when a collection is returned.\n     */\n    item(index: number): HTMLOptionElement | null;\n    /**\n     * Retrieves a select object or an object from an options collection.\n     * @param namedItem A String that specifies the name or id property of the object to retrieve. A collection is returned if more than one match is made.\n     */\n    namedItem(name: string): HTMLOptionElement | null;\n    /**\n     * Removes an element from the collection.\n     * @param index Number that specifies the zero-based index of the element to remove from the collection.\n     */\n    remove(): void;\n    remove(index: number): void;\n    reportValidity(): boolean;\n    /**\n     * Sets a custom error message that is displayed when a form is submitted.\n     * @param error Sets a custom error message that is displayed when a form is submitted.\n     */\n    setCustomValidity(error: string): void;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSelectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSelectElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n    [name: number]: HTMLOptionElement | HTMLOptGroupElement;\n}\n\ndeclare var HTMLSelectElement: {\n    prototype: HTMLSelectElement;\n    new(): HTMLSelectElement;\n};\n\ninterface HTMLSlotElement extends HTMLElement {\n    name: string;\n    assign(...nodes: (Element | Text)[]): void;\n    assignedElements(options?: AssignedNodesOptions): Element[];\n    assignedNodes(options?: AssignedNodesOptions): Node[];\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSlotElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSlotElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLSlotElement: {\n    prototype: HTMLSlotElement;\n    new(): HTMLSlotElement;\n};\n\n/** Provides special properties (beyond the regular HTMLElement object interface it also has available to it by inheritance) for manipulating <source> elements. */\ninterface HTMLSourceElement extends HTMLElement {\n    height: number;\n    /** Gets or sets the intended media type of the media source. */\n    media: string;\n    sizes: string;\n    /** The address or URL of the a media resource that is to be considered. */\n    src: string;\n    srcset: string;\n    /** Gets or sets the MIME type of a media resource. */\n    type: string;\n    width: number;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSourceElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSourceElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLSourceElement: {\n    prototype: HTMLSourceElement;\n    new(): HTMLSourceElement;\n};\n\n/** A <span> element and derives from the HTMLElement interface, but without implementing any additional properties or methods. */\ninterface HTMLSpanElement extends HTMLElement {\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSpanElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLSpanElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLSpanElement: {\n    prototype: HTMLSpanElement;\n    new(): HTMLSpanElement;\n};\n\n/** A <style> element. It inherits properties and methods from its parent, HTMLElement, and from LinkStyle. */\ninterface HTMLStyleElement extends HTMLElement, LinkStyle {\n    /** Enables or disables the style sheet. */\n    disabled: boolean;\n    /** Sets or retrieves the media type. */\n    media: string;\n    /**\n     * Retrieves the CSS language in which the style sheet is written.\n     * @deprecated\n     */\n    type: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLStyleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLStyleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLStyleElement: {\n    prototype: HTMLStyleElement;\n    new(): HTMLStyleElement;\n};\n\n/** Special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating table caption elements. */\ninterface HTMLTableCaptionElement extends HTMLElement {\n    /**\n     * Sets or retrieves the alignment of the caption or legend.\n     * @deprecated\n     */\n    align: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCaptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCaptionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLTableCaptionElement: {\n    prototype: HTMLTableCaptionElement;\n    new(): HTMLTableCaptionElement;\n};\n\n/** Provides special properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of table cells, either header or data cells, in an HTML document. */\ninterface HTMLTableCellElement extends HTMLElement {\n    /** Sets or retrieves abbreviated text for the object. */\n    abbr: string;\n    /**\n     * Sets or retrieves how the object is aligned with adjacent text.\n     * @deprecated\n     */\n    align: string;\n    /**\n     * Sets or retrieves a comma-delimited list of conceptual categories associated with the object.\n     * @deprecated\n     */\n    axis: string;\n    /** @deprecated */\n    bgColor: string;\n    /** Retrieves the position of the object in the cells collection of a row. */\n    readonly cellIndex: number;\n    /** @deprecated */\n    ch: string;\n    /** @deprecated */\n    chOff: string;\n    /** Sets or retrieves the number columns in the table that the object should span. */\n    colSpan: number;\n    /** Sets or retrieves a list of header cells that provide information for the object. */\n    headers: string;\n    /**\n     * Sets or retrieves the height of the object.\n     * @deprecated\n     */\n    height: string;\n    /**\n     * Sets or retrieves whether the browser automatically performs wordwrap.\n     * @deprecated\n     */\n    noWrap: boolean;\n    /** Sets or retrieves how many rows in a table the cell should span. */\n    rowSpan: number;\n    /** Sets or retrieves the group of cells in a table to which the object's information applies. */\n    scope: string;\n    /** @deprecated */\n    vAlign: string;\n    /**\n     * Sets or retrieves the width of the object.\n     * @deprecated\n     */\n    width: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLTableCellElement: {\n    prototype: HTMLTableCellElement;\n    new(): HTMLTableCellElement;\n};\n\n/** Provides special properties (beyond the HTMLElement interface it also has available to it inheritance) for manipulating single or grouped table column elements. */\ninterface HTMLTableColElement extends HTMLElement {\n    /**\n     * Sets or retrieves the alignment of the object relative to the display or table.\n     * @deprecated\n     */\n    align: string;\n    /** @deprecated */\n    ch: string;\n    /** @deprecated */\n    chOff: string;\n    /** Sets or retrieves the number of columns in the group. */\n    span: number;\n    /** @deprecated */\n    vAlign: string;\n    /**\n     * Sets or retrieves the width of the object.\n     * @deprecated\n     */\n    width: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableColElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableColElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLTableColElement: {\n    prototype: HTMLTableColElement;\n    new(): HTMLTableColElement;\n};\n\n/** @deprecated prefer HTMLTableCellElement */\ninterface HTMLTableDataCellElement extends HTMLTableCellElement {\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableDataCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableDataCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** Provides special properties and methods (beyond the regular HTMLElement object interface it also has available to it by inheritance) for manipulating the layout and presentation of tables in an HTML document. */\ninterface HTMLTableElement extends HTMLElement {\n    /**\n     * Sets or retrieves a value that indicates the table alignment.\n     * @deprecated\n     */\n    align: string;\n    /** @deprecated */\n    bgColor: string;\n    /**\n     * Sets or retrieves the width of the border to draw around the object.\n     * @deprecated\n     */\n    border: string;\n    /** Retrieves the caption object of a table. */\n    caption: HTMLTableCaptionElement | null;\n    /**\n     * Sets or retrieves the amount of space between the border of the cell and the content of the cell.\n     * @deprecated\n     */\n    cellPadding: string;\n    /**\n     * Sets or retrieves the amount of space between cells in a table.\n     * @deprecated\n     */\n    cellSpacing: string;\n    /**\n     * Sets or retrieves the way the border frame around the table is displayed.\n     * @deprecated\n     */\n    frame: string;\n    /** Sets or retrieves the number of horizontal rows contained in the object. */\n    readonly rows: HTMLCollectionOf<HTMLTableRowElement>;\n    /**\n     * Sets or retrieves which dividing lines (inner borders) are displayed.\n     * @deprecated\n     */\n    rules: string;\n    /**\n     * Sets or retrieves a description and/or structure of the object.\n     * @deprecated\n     */\n    summary: string;\n    /** Retrieves a collection of all tBody objects in the table. Objects in this collection are in source order. */\n    readonly tBodies: HTMLCollectionOf<HTMLTableSectionElement>;\n    /** Retrieves the tFoot object of the table. */\n    tFoot: HTMLTableSectionElement | null;\n    /** Retrieves the tHead object of the table. */\n    tHead: HTMLTableSectionElement | null;\n    /**\n     * Sets or retrieves the width of the object.\n     * @deprecated\n     */\n    width: string;\n    /** Creates an empty caption element in the table. */\n    createCaption(): HTMLTableCaptionElement;\n    /** Creates an empty tBody element in the table. */\n    createTBody(): HTMLTableSectionElement;\n    /** Creates an empty tFoot element in the table. */\n    createTFoot(): HTMLTableSectionElement;\n    /** Returns the tHead element object if successful, or null otherwise. */\n    createTHead(): HTMLTableSectionElement;\n    /** Deletes the caption element and its contents from the table. */\n    deleteCaption(): void;\n    /**\n     * Removes the specified row (tr) from the element and from the rows collection.\n     * @param index Number that specifies the zero-based position in the rows collection of the row to remove.\n     */\n    deleteRow(index: number): void;\n    /** Deletes the tFoot element and its contents from the table. */\n    deleteTFoot(): void;\n    /** Deletes the tHead element and its contents from the table. */\n    deleteTHead(): void;\n    /**\n     * Creates a new row (tr) in the table, and adds the row to the rows collection.\n     * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection.\n     */\n    insertRow(index?: number): HTMLTableRowElement;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLTableElement: {\n    prototype: HTMLTableElement;\n    new(): HTMLTableElement;\n};\n\n/** @deprecated prefer HTMLTableCellElement */\ninterface HTMLTableHeaderCellElement extends HTMLTableCellElement {\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableHeaderCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableHeaderCellElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** Provides special properties and methods (beyond the HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of rows in an HTML table. */\ninterface HTMLTableRowElement extends HTMLElement {\n    /**\n     * Sets or retrieves how the object is aligned with adjacent text.\n     * @deprecated\n     */\n    align: string;\n    /** @deprecated */\n    bgColor: string;\n    /** Retrieves a collection of all cells in the table row. */\n    readonly cells: HTMLCollectionOf<HTMLTableCellElement>;\n    /** @deprecated */\n    ch: string;\n    /** @deprecated */\n    chOff: string;\n    /** Retrieves the position of the object in the rows collection for the table. */\n    readonly rowIndex: number;\n    /** Retrieves the position of the object in the collection. */\n    readonly sectionRowIndex: number;\n    /** @deprecated */\n    vAlign: string;\n    /**\n     * Removes the specified cell from the table row, as well as from the cells collection.\n     * @param index Number that specifies the zero-based position of the cell to remove from the table row. If no value is provided, the last cell in the cells collection is deleted.\n     */\n    deleteCell(index: number): void;\n    /**\n     * Creates a new cell in the table row, and adds the cell to the cells collection.\n     * @param index Number that specifies where to insert the cell in the tr. The default value is -1, which appends the new cell to the end of the cells collection.\n     */\n    insertCell(index?: number): HTMLTableCellElement;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableRowElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableRowElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLTableRowElement: {\n    prototype: HTMLTableRowElement;\n    new(): HTMLTableRowElement;\n};\n\n/** Provides special properties and methods (beyond the HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of sections, that is headers, footers and bodies, in an HTML table. */\ninterface HTMLTableSectionElement extends HTMLElement {\n    /**\n     * Sets or retrieves a value that indicates the table alignment.\n     * @deprecated\n     */\n    align: string;\n    /** @deprecated */\n    ch: string;\n    /** @deprecated */\n    chOff: string;\n    /** Sets or retrieves the number of horizontal rows contained in the object. */\n    readonly rows: HTMLCollectionOf<HTMLTableRowElement>;\n    /** @deprecated */\n    vAlign: string;\n    /**\n     * Removes the specified row (tr) from the element and from the rows collection.\n     * @param index Number that specifies the zero-based position in the rows collection of the row to remove.\n     */\n    deleteRow(index: number): void;\n    /**\n     * Creates a new row (tr) in the table, and adds the row to the rows collection.\n     * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection.\n     */\n    insertRow(index?: number): HTMLTableRowElement;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableSectionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTableSectionElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLTableSectionElement: {\n    prototype: HTMLTableSectionElement;\n    new(): HTMLTableSectionElement;\n};\n\n/** Enables access to the contents of an HTML <template> element. */\ninterface HTMLTemplateElement extends HTMLElement {\n    /** Returns the template contents (a DocumentFragment). */\n    readonly content: DocumentFragment;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTemplateElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTemplateElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLTemplateElement: {\n    prototype: HTMLTemplateElement;\n    new(): HTMLTemplateElement;\n};\n\n/** Provides special properties and methods for manipulating the layout and presentation of <textarea> elements. */\ninterface HTMLTextAreaElement extends HTMLElement {\n    autocomplete: string;\n    /** Sets or retrieves the width of the object. */\n    cols: number;\n    /** Sets or retrieves the initial contents of the object. */\n    defaultValue: string;\n    dirName: string;\n    disabled: boolean;\n    /** Retrieves a reference to the form that the object is embedded in. */\n    readonly form: HTMLFormElement | null;\n    readonly labels: NodeListOf<HTMLLabelElement>;\n    /** Sets or retrieves the maximum number of characters that the user can enter in a text control. */\n    maxLength: number;\n    minLength: number;\n    /** Sets or retrieves the name of the object. */\n    name: string;\n    /** Gets or sets a text string that is displayed in an input field as a hint or prompt to users as the format or type of information they need to enter.The text appears in an input field until the user puts focus on the field. */\n    placeholder: string;\n    /** Sets or retrieves the value indicated whether the content of the object is read-only. */\n    readOnly: boolean;\n    /** When present, marks an element that can't be submitted without a value. */\n    required: boolean;\n    /** Sets or retrieves the number of horizontal rows contained in the object. */\n    rows: number;\n    selectionDirection: \"forward\" | \"backward\" | \"none\";\n    /** Gets or sets the end position or offset of a text selection. */\n    selectionEnd: number;\n    /** Gets or sets the starting position or offset of a text selection. */\n    selectionStart: number;\n    readonly textLength: number;\n    /** Retrieves the type of control. */\n    readonly type: string;\n    /** Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as \"this is a required field\". The result is that the user sees validation messages without actually submitting. */\n    readonly validationMessage: string;\n    /** Returns a  ValidityState object that represents the validity states of an element. */\n    readonly validity: ValidityState;\n    /** Retrieves or sets the text in the entry field of the textArea element. */\n    value: string;\n    /** Returns whether an element will successfully validate based on forms validation rules and constraints. */\n    readonly willValidate: boolean;\n    /** Sets or retrieves how to handle wordwrapping in the object. */\n    wrap: string;\n    /** Returns whether a form will validate when it is submitted, without having to submit it. */\n    checkValidity(): boolean;\n    reportValidity(): boolean;\n    /** Highlights the input area of a form element. */\n    select(): void;\n    /**\n     * Sets a custom error message that is displayed when a form is submitted.\n     * @param error Sets a custom error message that is displayed when a form is submitted.\n     */\n    setCustomValidity(error: string): void;\n    setRangeText(replacement: string): void;\n    setRangeText(replacement: string, start: number, end: number, selectionMode?: SelectionMode): void;\n    /**\n     * Sets the start and end positions of a selection in a text field.\n     * @param start The offset into the text field for the start of the selection.\n     * @param end The offset into the text field for the end of the selection.\n     * @param direction The direction in which the selection is performed.\n     */\n    setSelectionRange(start: number | null, end: number | null, direction?: \"forward\" | \"backward\" | \"none\"): void;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTextAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTextAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLTextAreaElement: {\n    prototype: HTMLTextAreaElement;\n    new(): HTMLTextAreaElement;\n};\n\n/** Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating <time> elements. */\ninterface HTMLTimeElement extends HTMLElement {\n    dateTime: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTimeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTimeElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLTimeElement: {\n    prototype: HTMLTimeElement;\n    new(): HTMLTimeElement;\n};\n\n/** Contains the title for a document. This element inherits all of the properties and methods of the HTMLElement interface. */\ninterface HTMLTitleElement extends HTMLElement {\n    /** Retrieves or sets the text of the object as a string. */\n    text: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTitleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTitleElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLTitleElement: {\n    prototype: HTMLTitleElement;\n    new(): HTMLTitleElement;\n};\n\n/** The HTMLTrackElement */\ninterface HTMLTrackElement extends HTMLElement {\n    default: boolean;\n    kind: string;\n    label: string;\n    readonly readyState: number;\n    src: string;\n    srclang: string;\n    /** Returns the TextTrack object corresponding to the text track of the track element. */\n    readonly track: TextTrack;\n    readonly NONE: 0;\n    readonly LOADING: 1;\n    readonly LOADED: 2;\n    readonly ERROR: 3;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTrackElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLTrackElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLTrackElement: {\n    prototype: HTMLTrackElement;\n    new(): HTMLTrackElement;\n    readonly NONE: 0;\n    readonly LOADING: 1;\n    readonly LOADED: 2;\n    readonly ERROR: 3;\n};\n\n/** Provides special properties (beyond those defined on the regular HTMLElement interface it also has available to it by inheritance) for manipulating unordered list elements. */\ninterface HTMLUListElement extends HTMLElement {\n    /** @deprecated */\n    compact: boolean;\n    /** @deprecated */\n    type: string;\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLUListElement: {\n    prototype: HTMLUListElement;\n    new(): HTMLUListElement;\n};\n\n/** An invalid HTML element and derives from the HTMLElement interface, but without implementing any additional properties or methods. */\ninterface HTMLUnknownElement extends HTMLElement {\n    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUnknownElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLUnknownElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLUnknownElement: {\n    prototype: HTMLUnknownElement;\n    new(): HTMLUnknownElement;\n};\n\ninterface HTMLVideoElementEventMap extends HTMLMediaElementEventMap {\n    \"enterpictureinpicture\": Event;\n    \"leavepictureinpicture\": Event;\n}\n\n/** Provides special properties and methods for manipulating video objects. It also inherits properties and methods of HTMLMediaElement and HTMLElement. */\ninterface HTMLVideoElement extends HTMLMediaElement {\n    disablePictureInPicture: boolean;\n    /** Gets or sets the height of the video element. */\n    height: number;\n    onenterpictureinpicture: ((this: HTMLVideoElement, ev: Event) => any) | null;\n    onleavepictureinpicture: ((this: HTMLVideoElement, ev: Event) => any) | null;\n    /** Gets or sets the playsinline of the video element. for example, On iPhone, video elements will now be allowed to play inline, and will not automatically enter fullscreen mode when playback begins. */\n    playsInline: boolean;\n    /** Gets or sets a URL of an image to display, for example, like a movie poster. This can be a still frame from the video, or another image if no video data is available. */\n    poster: string;\n    /** Gets the intrinsic height of a video in CSS pixels, or zero if the dimensions are not known. */\n    readonly videoHeight: number;\n    /** Gets the intrinsic width of a video in CSS pixels, or zero if the dimensions are not known. */\n    readonly videoWidth: number;\n    /** Gets or sets the width of the video element. */\n    width: number;\n    cancelVideoFrameCallback(handle: number): void;\n    getVideoPlaybackQuality(): VideoPlaybackQuality;\n    requestPictureInPicture(): Promise<PictureInPictureWindow>;\n    requestVideoFrameCallback(callback: VideoFrameRequestCallback): number;\n    addEventListener<K extends keyof HTMLVideoElementEventMap>(type: K, listener: (this: HTMLVideoElement, ev: HTMLVideoElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof HTMLVideoElementEventMap>(type: K, listener: (this: HTMLVideoElement, ev: HTMLVideoElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLVideoElement: {\n    prototype: HTMLVideoElement;\n    new(): HTMLVideoElement;\n};\n\n/** Events that fire when the fragment identifier of the URL has changed. */\ninterface HashChangeEvent extends Event {\n    /** Returns the URL of the session history entry that is now current. */\n    readonly newURL: string;\n    /** Returns the URL of the session history entry that was previously current. */\n    readonly oldURL: string;\n}\n\ndeclare var HashChangeEvent: {\n    prototype: HashChangeEvent;\n    new(type: string, eventInitDict?: HashChangeEventInit): HashChangeEvent;\n};\n\n/** This Fetch API interface allows you to perform various actions on HTTP request and response headers. These actions include retrieving, setting, adding to, and removing. A Headers object has an associated header list, which is initially empty and consists\\xA0of zero or more name and value pairs. \\xA0You can add to this using methods like append() (see Examples.)\\xA0In all methods of this interface, header names are matched by case-insensitive byte sequence. */\ninterface Headers {\n    append(name: string, value: string): void;\n    delete(name: string): void;\n    get(name: string): string | null;\n    has(name: string): boolean;\n    set(name: string, value: string): void;\n    forEach(callbackfn: (value: string, key: string, parent: Headers) => void, thisArg?: any): void;\n}\n\ndeclare var Headers: {\n    prototype: Headers;\n    new(init?: HeadersInit): Headers;\n};\n\n/** Allows\\xA0manipulation of\\xA0the browser session history, that is the pages visited in the tab or frame that the current page is loaded in. */\ninterface History {\n    readonly length: number;\n    scrollRestoration: ScrollRestoration;\n    readonly state: any;\n    back(): void;\n    forward(): void;\n    go(delta?: number): void;\n    pushState(data: any, unused: string, url?: string | URL | null): void;\n    replaceState(data: any, unused: string, url?: string | URL | null): void;\n}\n\ndeclare var History: {\n    prototype: History;\n    new(): History;\n};\n\n/** This IndexedDB API interface represents a cursor for traversing or iterating over multiple records in a database. */\ninterface IDBCursor {\n    /** Returns the direction (\"next\", \"nextunique\", \"prev\" or \"prevunique\") of the cursor. */\n    readonly direction: IDBCursorDirection;\n    /** Returns the key of the cursor. Throws a \"InvalidStateError\" DOMException if the cursor is advancing or is finished. */\n    readonly key: IDBValidKey;\n    /** Returns the effective key of the cursor. Throws a \"InvalidStateError\" DOMException if the cursor is advancing or is finished. */\n    readonly primaryKey: IDBValidKey;\n    readonly request: IDBRequest;\n    /** Returns the IDBObjectStore or IDBIndex the cursor was opened from. */\n    readonly source: IDBObjectStore | IDBIndex;\n    /** Advances the cursor through the next count records in range. */\n    advance(count: number): void;\n    /** Advances the cursor to the next record in range. */\n    continue(key?: IDBValidKey): void;\n    /** Advances the cursor to the next record in range matching or after key and primaryKey. Throws an \"InvalidAccessError\" DOMException if the source is not an index. */\n    continuePrimaryKey(key: IDBValidKey, primaryKey: IDBValidKey): void;\n    /**\n     * Delete the record pointed at by the cursor with a new value.\n     *\n     * If successful, request's result will be undefined.\n     */\n    delete(): IDBRequest<undefined>;\n    /**\n     * Updated the record pointed at by the cursor with a new value.\n     *\n     * Throws a \"DataError\" DOMException if the effective object store uses in-line keys and the key would have changed.\n     *\n     * If successful, request's result will be the record's key.\n     */\n    update(value: any): IDBRequest<IDBValidKey>;\n}\n\ndeclare var IDBCursor: {\n    prototype: IDBCursor;\n    new(): IDBCursor;\n};\n\n/** This IndexedDB API interface represents a cursor for traversing or iterating over multiple records in a database. It is the same as the IDBCursor, except that it includes the value property. */\ninterface IDBCursorWithValue extends IDBCursor {\n    /** Returns the cursor's current value. */\n    readonly value: any;\n}\n\ndeclare var IDBCursorWithValue: {\n    prototype: IDBCursorWithValue;\n    new(): IDBCursorWithValue;\n};\n\ninterface IDBDatabaseEventMap {\n    \"abort\": Event;\n    \"close\": Event;\n    \"error\": Event;\n    \"versionchange\": IDBVersionChangeEvent;\n}\n\n/** This IndexedDB API interface provides a connection to a database; you can use an IDBDatabase object to open a transaction on your database then create, manipulate, and delete objects (data) in that database. The interface provides the only way to get and manage versions of the database. */\ninterface IDBDatabase extends EventTarget {\n    /** Returns the name of the database. */\n    readonly name: string;\n    /** Returns a list of the names of object stores in the database. */\n    readonly objectStoreNames: DOMStringList;\n    onabort: ((this: IDBDatabase, ev: Event) => any) | null;\n    onclose: ((this: IDBDatabase, ev: Event) => any) | null;\n    onerror: ((this: IDBDatabase, ev: Event) => any) | null;\n    onversionchange: ((this: IDBDatabase, ev: IDBVersionChangeEvent) => any) | null;\n    /** Returns the version of the database. */\n    readonly version: number;\n    /** Closes the connection once all running transactions have finished. */\n    close(): void;\n    /**\n     * Creates a new object store with the given name and options and returns a new IDBObjectStore.\n     *\n     * Throws a \"InvalidStateError\" DOMException if not called within an upgrade transaction.\n     */\n    createObjectStore(name: string, options?: IDBObjectStoreParameters): IDBObjectStore;\n    /**\n     * Deletes the object store with the given name.\n     *\n     * Throws a \"InvalidStateError\" DOMException if not called within an upgrade transaction.\n     */\n    deleteObjectStore(name: string): void;\n    /** Returns a new transaction with the given mode (\"readonly\" or \"readwrite\") and scope which can be a single object store name or an array of names. */\n    transaction(storeNames: string | string[], mode?: IDBTransactionMode, options?: IDBTransactionOptions): IDBTransaction;\n    addEventListener<K extends keyof IDBDatabaseEventMap>(type: K, listener: (this: IDBDatabase, ev: IDBDatabaseEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof IDBDatabaseEventMap>(type: K, listener: (this: IDBDatabase, ev: IDBDatabaseEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var IDBDatabase: {\n    prototype: IDBDatabase;\n    new(): IDBDatabase;\n};\n\n/** In the following code snippet, we make a request to open a database, and include handlers for the success and error cases. For a full working example, see our To-do Notifications app (view example live.) */\ninterface IDBFactory {\n    /**\n     * Compares two values as keys. Returns -1 if key1 precedes key2, 1 if key2 precedes key1, and 0 if the keys are equal.\n     *\n     * Throws a \"DataError\" DOMException if either input is not a valid key.\n     */\n    cmp(first: any, second: any): number;\n    databases(): Promise<IDBDatabaseInfo[]>;\n    /** Attempts to delete the named database. If the database already exists and there are open connections that don't close in response to a versionchange event, the request will be blocked until all they close. If the request is successful request's result will be null. */\n    deleteDatabase(name: string): IDBOpenDBRequest;\n    /** Attempts to open a connection to the named database with the current version, or 1 if it does not already exist. If the request is successful request's result will be the connection. */\n    open(name: string, version?: number): IDBOpenDBRequest;\n}\n\ndeclare var IDBFactory: {\n    prototype: IDBFactory;\n    new(): IDBFactory;\n};\n\n/** IDBIndex interface of the IndexedDB API provides asynchronous access to an index in a database. An index is a kind of object store for looking up records in another object store, called the referenced object store. You use this interface to retrieve data. */\ninterface IDBIndex {\n    readonly keyPath: string | string[];\n    readonly multiEntry: boolean;\n    /** Returns the name of the index. */\n    name: string;\n    /** Returns the IDBObjectStore the index belongs to. */\n    readonly objectStore: IDBObjectStore;\n    readonly unique: boolean;\n    /**\n     * Retrieves the number of records matching the given key or key range in query.\n     *\n     * If successful, request's result will be the count.\n     */\n    count(query?: IDBValidKey | IDBKeyRange): IDBRequest<number>;\n    /**\n     * Retrieves the value of the first record matching the given key or key range in query.\n     *\n     * If successful, request's result will be the value, or undefined if there was no matching record.\n     */\n    get(query: IDBValidKey | IDBKeyRange): IDBRequest<any>;\n    /**\n     * Retrieves the values of the records matching the given key or key range in query (up to count if given).\n     *\n     * If successful, request's result will be an Array of the values.\n     */\n    getAll(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<any[]>;\n    /**\n     * Retrieves the keys of records matching the given key or key range in query (up to count if given).\n     *\n     * If successful, request's result will be an Array of the keys.\n     */\n    getAllKeys(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<IDBValidKey[]>;\n    /**\n     * Retrieves the key of the first record matching the given key or key range in query.\n     *\n     * If successful, request's result will be the key, or undefined if there was no matching record.\n     */\n    getKey(query: IDBValidKey | IDBKeyRange): IDBRequest<IDBValidKey | undefined>;\n    /**\n     * Opens a cursor over the records matching query, ordered by direction. If query is null, all records in index are matched.\n     *\n     * If successful, request's result will be an IDBCursorWithValue, or null if there were no matching records.\n     */\n    openCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursorWithValue | null>;\n    /**\n     * Opens a cursor with key only flag set over the records matching query, ordered by direction. If query is null, all records in index are matched.\n     *\n     * If successful, request's result will be an IDBCursor, or null if there were no matching records.\n     */\n    openKeyCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursor | null>;\n}\n\ndeclare var IDBIndex: {\n    prototype: IDBIndex;\n    new(): IDBIndex;\n};\n\n/** A key range can be a single value or a range with upper and lower bounds or endpoints. If the key range has both upper and lower bounds, then it is bounded; if it has no bounds, it is unbounded. A bounded key range can either be open (the endpoints are excluded) or closed (the endpoints are included). To retrieve all keys within a certain range, you can use the following code constructs: */\ninterface IDBKeyRange {\n    /** Returns lower bound, or undefined if none. */\n    readonly lower: any;\n    /** Returns true if the lower open flag is set, and false otherwise. */\n    readonly lowerOpen: boolean;\n    /** Returns upper bound, or undefined if none. */\n    readonly upper: any;\n    /** Returns true if the upper open flag is set, and false otherwise. */\n    readonly upperOpen: boolean;\n    /** Returns true if key is included in the range, and false otherwise. */\n    includes(key: any): boolean;\n}\n\ndeclare var IDBKeyRange: {\n    prototype: IDBKeyRange;\n    new(): IDBKeyRange;\n    /** Returns a new IDBKeyRange spanning from lower to upper. If lowerOpen is true, lower is not included in the range. If upperOpen is true, upper is not included in the range. */\n    bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange;\n    /** Returns a new IDBKeyRange starting at key with no upper bound. If open is true, key is not included in the range. */\n    lowerBound(lower: any, open?: boolean): IDBKeyRange;\n    /** Returns a new IDBKeyRange spanning only key. */\n    only(value: any): IDBKeyRange;\n    /** Returns a new IDBKeyRange with no lower bound and ending at key. If open is true, key is not included in the range. */\n    upperBound(upper: any, open?: boolean): IDBKeyRange;\n};\n\n/** This example shows a variety of different uses of object stores, from updating the data structure with IDBObjectStore.createIndex\\xA0inside an onupgradeneeded function, to adding a new item to our object store with IDBObjectStore.add. For a full working example, see our\\xA0To-do Notifications\\xA0app (view example live.) */\ninterface IDBObjectStore {\n    /** Returns true if the store has a key generator, and false otherwise. */\n    readonly autoIncrement: boolean;\n    /** Returns a list of the names of indexes in the store. */\n    readonly indexNames: DOMStringList;\n    /** Returns the key path of the store, or null if none. */\n    readonly keyPath: string | string[];\n    /** Returns the name of the store. */\n    name: string;\n    /** Returns the associated transaction. */\n    readonly transaction: IDBTransaction;\n    /**\n     * Adds or updates a record in store with the given value and key.\n     *\n     * If the store uses in-line keys and key is specified a \"DataError\" DOMException will be thrown.\n     *\n     * If put() is used, any existing record with the key will be replaced. If add() is used, and if a record with the key already exists the request will fail, with request's error set to a \"ConstraintError\" DOMException.\n     *\n     * If successful, request's result will be the record's key.\n     */\n    add(value: any, key?: IDBValidKey): IDBRequest<IDBValidKey>;\n    /**\n     * Deletes all records in store.\n     *\n     * If successful, request's result will be undefined.\n     */\n    clear(): IDBRequest<undefined>;\n    /**\n     * Retrieves the number of records matching the given key or key range in query.\n     *\n     * If successful, request's result will be the count.\n     */\n    count(query?: IDBValidKey | IDBKeyRange): IDBRequest<number>;\n    /**\n     * Creates a new index in store with the given name, keyPath and options and returns a new IDBIndex. If the keyPath and options define constraints that cannot be satisfied with the data already in store the upgrade transaction will abort with a \"ConstraintError\" DOMException.\n     *\n     * Throws an \"InvalidStateError\" DOMException if not called within an upgrade transaction.\n     */\n    createIndex(name: string, keyPath: string | string[], options?: IDBIndexParameters): IDBIndex;\n    /**\n     * Deletes records in store with the given key or in the given key range in query.\n     *\n     * If successful, request's result will be undefined.\n     */\n    delete(query: IDBValidKey | IDBKeyRange): IDBRequest<undefined>;\n    /**\n     * Deletes the index in store with the given name.\n     *\n     * Throws an \"InvalidStateError\" DOMException if not called within an upgrade transaction.\n     */\n    deleteIndex(name: string): void;\n    /**\n     * Retrieves the value of the first record matching the given key or key range in query.\n     *\n     * If successful, request's result will be the value, or undefined if there was no matching record.\n     */\n    get(query: IDBValidKey | IDBKeyRange): IDBRequest<any>;\n    /**\n     * Retrieves the values of the records matching the given key or key range in query (up to count if given).\n     *\n     * If successful, request's result will be an Array of the values.\n     */\n    getAll(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<any[]>;\n    /**\n     * Retrieves the keys of records matching the given key or key range in query (up to count if given).\n     *\n     * If successful, request's result will be an Array of the keys.\n     */\n    getAllKeys(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<IDBValidKey[]>;\n    /**\n     * Retrieves the key of the first record matching the given key or key range in query.\n     *\n     * If successful, request's result will be the key, or undefined if there was no matching record.\n     */\n    getKey(query: IDBValidKey | IDBKeyRange): IDBRequest<IDBValidKey | undefined>;\n    index(name: string): IDBIndex;\n    /**\n     * Opens a cursor over the records matching query, ordered by direction. If query is null, all records in store are matched.\n     *\n     * If successful, request's result will be an IDBCursorWithValue pointing at the first matching record, or null if there were no matching records.\n     */\n    openCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursorWithValue | null>;\n    /**\n     * Opens a cursor with key only flag set over the records matching query, ordered by direction. If query is null, all records in store are matched.\n     *\n     * If successful, request's result will be an IDBCursor pointing at the first matching record, or null if there were no matching records.\n     */\n    openKeyCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursor | null>;\n    /**\n     * Adds or updates a record in store with the given value and key.\n     *\n     * If the store uses in-line keys and key is specified a \"DataError\" DOMException will be thrown.\n     *\n     * If put() is used, any existing record with the key will be replaced. If add() is used, and if a record with the key already exists the request will fail, with request's error set to a \"ConstraintError\" DOMException.\n     *\n     * If successful, request's result will be the record's key.\n     */\n    put(value: any, key?: IDBValidKey): IDBRequest<IDBValidKey>;\n}\n\ndeclare var IDBObjectStore: {\n    prototype: IDBObjectStore;\n    new(): IDBObjectStore;\n};\n\ninterface IDBOpenDBRequestEventMap extends IDBRequestEventMap {\n    \"blocked\": IDBVersionChangeEvent;\n    \"upgradeneeded\": IDBVersionChangeEvent;\n}\n\n/** Also inherits methods from its parents IDBRequest and EventTarget. */\ninterface IDBOpenDBRequest extends IDBRequest<IDBDatabase> {\n    onblocked: ((this: IDBOpenDBRequest, ev: IDBVersionChangeEvent) => any) | null;\n    onupgradeneeded: ((this: IDBOpenDBRequest, ev: IDBVersionChangeEvent) => any) | null;\n    addEventListener<K extends keyof IDBOpenDBRequestEventMap>(type: K, listener: (this: IDBOpenDBRequest, ev: IDBOpenDBRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof IDBOpenDBRequestEventMap>(type: K, listener: (this: IDBOpenDBRequest, ev: IDBOpenDBRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var IDBOpenDBRequest: {\n    prototype: IDBOpenDBRequest;\n    new(): IDBOpenDBRequest;\n};\n\ninterface IDBRequestEventMap {\n    \"error\": Event;\n    \"success\": Event;\n}\n\n/** The request object does not initially contain any information about the result of the operation, but once information becomes available, an event is fired on the request, and the information becomes available through the properties of the IDBRequest instance. */\ninterface IDBRequest<T = any> extends EventTarget {\n    /** When a request is completed, returns the error (a DOMException), or null if the request succeeded. Throws a \"InvalidStateError\" DOMException if the request is still pending. */\n    readonly error: DOMException | null;\n    onerror: ((this: IDBRequest<T>, ev: Event) => any) | null;\n    onsuccess: ((this: IDBRequest<T>, ev: Event) => any) | null;\n    /** Returns \"pending\" until a request is complete, then returns \"done\". */\n    readonly readyState: IDBRequestReadyState;\n    /** When a request is completed, returns the result, or undefined if the request failed. Throws a \"InvalidStateError\" DOMException if the request is still pending. */\n    readonly result: T;\n    /** Returns the IDBObjectStore, IDBIndex, or IDBCursor the request was made against, or null if is was an open request. */\n    readonly source: IDBObjectStore | IDBIndex | IDBCursor;\n    /** Returns the IDBTransaction the request was made within. If this as an open request, then it returns an upgrade transaction while it is running, or null otherwise. */\n    readonly transaction: IDBTransaction | null;\n    addEventListener<K extends keyof IDBRequestEventMap>(type: K, listener: (this: IDBRequest<T>, ev: IDBRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof IDBRequestEventMap>(type: K, listener: (this: IDBRequest<T>, ev: IDBRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var IDBRequest: {\n    prototype: IDBRequest;\n    new(): IDBRequest;\n};\n\ninterface IDBTransactionEventMap {\n    \"abort\": Event;\n    \"complete\": Event;\n    \"error\": Event;\n}\n\ninterface IDBTransaction extends EventTarget {\n    /** Returns the transaction's connection. */\n    readonly db: IDBDatabase;\n    readonly durability: IDBTransactionDurability;\n    /** If the transaction was aborted, returns the error (a DOMException) providing the reason. */\n    readonly error: DOMException | null;\n    /** Returns the mode the transaction was created with (\"readonly\" or \"readwrite\"), or \"versionchange\" for an upgrade transaction. */\n    readonly mode: IDBTransactionMode;\n    /** Returns a list of the names of object stores in the transaction's scope. For an upgrade transaction this is all object stores in the database. */\n    readonly objectStoreNames: DOMStringList;\n    onabort: ((this: IDBTransaction, ev: Event) => any) | null;\n    oncomplete: ((this: IDBTransaction, ev: Event) => any) | null;\n    onerror: ((this: IDBTransaction, ev: Event) => any) | null;\n    /** Aborts the transaction. All pending requests will fail with a \"AbortError\" DOMException and all changes made to the database will be reverted. */\n    abort(): void;\n    commit(): void;\n    /** Returns an IDBObjectStore in the transaction's scope. */\n    objectStore(name: string): IDBObjectStore;\n    addEventListener<K extends keyof IDBTransactionEventMap>(type: K, listener: (this: IDBTransaction, ev: IDBTransactionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof IDBTransactionEventMap>(type: K, listener: (this: IDBTransaction, ev: IDBTransactionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var IDBTransaction: {\n    prototype: IDBTransaction;\n    new(): IDBTransaction;\n};\n\n/** This IndexedDB API interface indicates that the version of the database has changed, as the result of an IDBOpenDBRequest.onupgradeneeded event handler function. */\ninterface IDBVersionChangeEvent extends Event {\n    readonly newVersion: number | null;\n    readonly oldVersion: number;\n}\n\ndeclare var IDBVersionChangeEvent: {\n    prototype: IDBVersionChangeEvent;\n    new(type: string, eventInitDict?: IDBVersionChangeEventInit): IDBVersionChangeEvent;\n};\n\n/** The\\xA0IIRFilterNode\\xA0interface of the\\xA0Web Audio API\\xA0is a AudioNode processor which implements a general infinite impulse response (IIR)\\xA0 filter; this type of filter can be used to implement tone control devices and graphic equalizers as well. It lets the parameters of the filter response be specified, so that it can be tuned as needed. */\ninterface IIRFilterNode extends AudioNode {\n    getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;\n}\n\ndeclare var IIRFilterNode: {\n    prototype: IIRFilterNode;\n    new(context: BaseAudioContext, options: IIRFilterOptions): IIRFilterNode;\n};\n\ninterface IdleDeadline {\n    readonly didTimeout: boolean;\n    timeRemaining(): DOMHighResTimeStamp;\n}\n\ndeclare var IdleDeadline: {\n    prototype: IdleDeadline;\n    new(): IdleDeadline;\n};\n\ninterface ImageBitmap {\n    /** Returns the intrinsic height of the image, in CSS pixels. */\n    readonly height: number;\n    /** Returns the intrinsic width of the image, in CSS pixels. */\n    readonly width: number;\n    /** Releases imageBitmap's underlying bitmap data. */\n    close(): void;\n}\n\ndeclare var ImageBitmap: {\n    prototype: ImageBitmap;\n    new(): ImageBitmap;\n};\n\ninterface ImageBitmapRenderingContext {\n    /** Returns the canvas element that the context is bound to. */\n    readonly canvas: HTMLCanvasElement | OffscreenCanvas;\n    /** Transfers the underlying bitmap data from imageBitmap to context, and the bitmap becomes the contents of the canvas element to which context is bound. */\n    transferFromImageBitmap(bitmap: ImageBitmap | null): void;\n}\n\ndeclare var ImageBitmapRenderingContext: {\n    prototype: ImageBitmapRenderingContext;\n    new(): ImageBitmapRenderingContext;\n};\n\n/** The underlying pixel data of an area of a <canvas> element. It is created using the ImageData() constructor or creator methods on the CanvasRenderingContext2D object associated with a canvas: createImageData() and getImageData(). It can also be used to set a part of the canvas by using putImageData(). */\ninterface ImageData {\n    readonly colorSpace: PredefinedColorSpace;\n    /** Returns the one-dimensional array containing the data in RGBA order, as integers in the range 0 to 255. */\n    readonly data: Uint8ClampedArray;\n    /** Returns the actual dimensions of the data in the ImageData object, in pixels. */\n    readonly height: number;\n    /** Returns the actual dimensions of the data in the ImageData object, in pixels. */\n    readonly width: number;\n}\n\ndeclare var ImageData: {\n    prototype: ImageData;\n    new(sw: number, sh: number, settings?: ImageDataSettings): ImageData;\n    new(data: Uint8ClampedArray, sw: number, sh?: number, settings?: ImageDataSettings): ImageData;\n};\n\ninterface InnerHTML {\n    innerHTML: string;\n}\n\n/** Available only in secure contexts. */\ninterface InputDeviceInfo extends MediaDeviceInfo {\n}\n\ndeclare var InputDeviceInfo: {\n    prototype: InputDeviceInfo;\n    new(): InputDeviceInfo;\n};\n\ninterface InputEvent extends UIEvent {\n    readonly data: string | null;\n    readonly dataTransfer: DataTransfer | null;\n    readonly inputType: string;\n    readonly isComposing: boolean;\n    getTargetRanges(): StaticRange[];\n}\n\ndeclare var InputEvent: {\n    prototype: InputEvent;\n    new(type: string, eventInitDict?: InputEventInit): InputEvent;\n};\n\n/** provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport. */\ninterface IntersectionObserver {\n    readonly root: Element | Document | null;\n    readonly rootMargin: string;\n    readonly thresholds: ReadonlyArray<number>;\n    disconnect(): void;\n    observe(target: Element): void;\n    takeRecords(): IntersectionObserverEntry[];\n    unobserve(target: Element): void;\n}\n\ndeclare var IntersectionObserver: {\n    prototype: IntersectionObserver;\n    new(callback: IntersectionObserverCallback, options?: IntersectionObserverInit): IntersectionObserver;\n};\n\n/** This Intersection Observer API interface describes the intersection between the target element and its root container at a specific moment of transition. */\ninterface IntersectionObserverEntry {\n    readonly boundingClientRect: DOMRectReadOnly;\n    readonly intersectionRatio: number;\n    readonly intersectionRect: DOMRectReadOnly;\n    readonly isIntersecting: boolean;\n    readonly rootBounds: DOMRectReadOnly | null;\n    readonly target: Element;\n    readonly time: DOMHighResTimeStamp;\n}\n\ndeclare var IntersectionObserverEntry: {\n    prototype: IntersectionObserverEntry;\n    new(intersectionObserverEntryInit: IntersectionObserverEntryInit): IntersectionObserverEntry;\n};\n\ninterface KHR_parallel_shader_compile {\n    readonly COMPLETION_STATUS_KHR: 0x91B1;\n}\n\n/** KeyboardEvent objects describe a user interaction with the keyboard; each event describes a single interaction between the user and a key (or combination of a key with modifier keys) on the keyboard. */\ninterface KeyboardEvent extends UIEvent {\n    readonly altKey: boolean;\n    /** @deprecated */\n    readonly charCode: number;\n    readonly code: string;\n    readonly ctrlKey: boolean;\n    readonly isComposing: boolean;\n    readonly key: string;\n    /** @deprecated */\n    readonly keyCode: number;\n    readonly location: number;\n    readonly metaKey: boolean;\n    readonly repeat: boolean;\n    readonly shiftKey: boolean;\n    getModifierState(keyArg: string): boolean;\n    /** @deprecated */\n    initKeyboardEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: Window | null, keyArg?: string, locationArg?: number, ctrlKey?: boolean, altKey?: boolean, shiftKey?: boolean, metaKey?: boolean): void;\n    readonly DOM_KEY_LOCATION_STANDARD: 0x00;\n    readonly DOM_KEY_LOCATION_LEFT: 0x01;\n    readonly DOM_KEY_LOCATION_RIGHT: 0x02;\n    readonly DOM_KEY_LOCATION_NUMPAD: 0x03;\n}\n\ndeclare var KeyboardEvent: {\n    prototype: KeyboardEvent;\n    new(type: string, eventInitDict?: KeyboardEventInit): KeyboardEvent;\n    readonly DOM_KEY_LOCATION_STANDARD: 0x00;\n    readonly DOM_KEY_LOCATION_LEFT: 0x01;\n    readonly DOM_KEY_LOCATION_RIGHT: 0x02;\n    readonly DOM_KEY_LOCATION_NUMPAD: 0x03;\n};\n\ninterface KeyframeEffect extends AnimationEffect {\n    composite: CompositeOperation;\n    iterationComposite: IterationCompositeOperation;\n    pseudoElement: string | null;\n    target: Element | null;\n    getKeyframes(): ComputedKeyframe[];\n    setKeyframes(keyframes: Keyframe[] | PropertyIndexedKeyframes | null): void;\n}\n\ndeclare var KeyframeEffect: {\n    prototype: KeyframeEffect;\n    new(target: Element | null, keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeEffectOptions): KeyframeEffect;\n    new(source: KeyframeEffect): KeyframeEffect;\n};\n\ninterface LinkStyle {\n    readonly sheet: CSSStyleSheet | null;\n}\n\n/** The location (URL) of the object it is linked to. Changes done on it are reflected on the object it relates to. Both the Document and Window interface have such a linked Location, accessible via Document.location and Window.location respectively. */\ninterface Location {\n    /** Returns a DOMStringList object listing the origins of the ancestor browsing contexts, from the parent browsing context to the top-level browsing context. */\n    readonly ancestorOrigins: DOMStringList;\n    /**\n     * Returns the Location object's URL's fragment (includes leading \"#\" if non-empty).\n     *\n     * Can be set, to navigate to the same URL with a changed fragment (ignores leading \"#\").\n     */\n    hash: string;\n    /**\n     * Returns the Location object's URL's host and port (if different from the default port for the scheme).\n     *\n     * Can be set, to navigate to the same URL with a changed host and port.\n     */\n    host: string;\n    /**\n     * Returns the Location object's URL's host.\n     *\n     * Can be set, to navigate to the same URL with a changed host.\n     */\n    hostname: string;\n    /**\n     * Returns the Location object's URL.\n     *\n     * Can be set, to navigate to the given URL.\n     */\n    href: string;\n    toString(): string;\n    /** Returns the Location object's URL's origin. */\n    readonly origin: string;\n    /**\n     * Returns the Location object's URL's path.\n     *\n     * Can be set, to navigate to the same URL with a changed path.\n     */\n    pathname: string;\n    /**\n     * Returns the Location object's URL's port.\n     *\n     * Can be set, to navigate to the same URL with a changed port.\n     */\n    port: string;\n    /**\n     * Returns the Location object's URL's scheme.\n     *\n     * Can be set, to navigate to the same URL with a changed scheme.\n     */\n    protocol: string;\n    /**\n     * Returns the Location object's URL's query (includes leading \"?\" if non-empty).\n     *\n     * Can be set, to navigate to the same URL with a changed query (ignores leading \"?\").\n     */\n    search: string;\n    /** Navigates to the given URL. */\n    assign(url: string | URL): void;\n    /** Reloads the current page. */\n    reload(): void;\n    /** Removes the current page from the session history and navigates to the given URL. */\n    replace(url: string | URL): void;\n}\n\ndeclare var Location: {\n    prototype: Location;\n    new(): Location;\n};\n\n/** Available only in secure contexts. */\ninterface Lock {\n    readonly mode: LockMode;\n    readonly name: string;\n}\n\ndeclare var Lock: {\n    prototype: Lock;\n    new(): Lock;\n};\n\n/** Available only in secure contexts. */\ninterface LockManager {\n    query(): Promise<LockManagerSnapshot>;\n    request(name: string, callback: LockGrantedCallback): Promise<any>;\n    request(name: string, options: LockOptions, callback: LockGrantedCallback): Promise<any>;\n}\n\ndeclare var LockManager: {\n    prototype: LockManager;\n    new(): LockManager;\n};\n\ninterface MIDIAccessEventMap {\n    \"statechange\": Event;\n}\n\n/** Available only in secure contexts. */\ninterface MIDIAccess extends EventTarget {\n    readonly inputs: MIDIInputMap;\n    onstatechange: ((this: MIDIAccess, ev: Event) => any) | null;\n    readonly outputs: MIDIOutputMap;\n    readonly sysexEnabled: boolean;\n    addEventListener<K extends keyof MIDIAccessEventMap>(type: K, listener: (this: MIDIAccess, ev: MIDIAccessEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MIDIAccessEventMap>(type: K, listener: (this: MIDIAccess, ev: MIDIAccessEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MIDIAccess: {\n    prototype: MIDIAccess;\n    new(): MIDIAccess;\n};\n\n/** Available only in secure contexts. */\ninterface MIDIConnectionEvent extends Event {\n    readonly port: MIDIPort;\n}\n\ndeclare var MIDIConnectionEvent: {\n    prototype: MIDIConnectionEvent;\n    new(type: string, eventInitDict?: MIDIConnectionEventInit): MIDIConnectionEvent;\n};\n\ninterface MIDIInputEventMap extends MIDIPortEventMap {\n    \"midimessage\": Event;\n}\n\n/** Available only in secure contexts. */\ninterface MIDIInput extends MIDIPort {\n    onmidimessage: ((this: MIDIInput, ev: Event) => any) | null;\n    addEventListener<K extends keyof MIDIInputEventMap>(type: K, listener: (this: MIDIInput, ev: MIDIInputEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MIDIInputEventMap>(type: K, listener: (this: MIDIInput, ev: MIDIInputEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MIDIInput: {\n    prototype: MIDIInput;\n    new(): MIDIInput;\n};\n\n/** Available only in secure contexts. */\ninterface MIDIInputMap {\n    forEach(callbackfn: (value: MIDIInput, key: string, parent: MIDIInputMap) => void, thisArg?: any): void;\n}\n\ndeclare var MIDIInputMap: {\n    prototype: MIDIInputMap;\n    new(): MIDIInputMap;\n};\n\n/** Available only in secure contexts. */\ninterface MIDIMessageEvent extends Event {\n    readonly data: Uint8Array;\n}\n\ndeclare var MIDIMessageEvent: {\n    prototype: MIDIMessageEvent;\n    new(type: string, eventInitDict?: MIDIMessageEventInit): MIDIMessageEvent;\n};\n\n/** Available only in secure contexts. */\ninterface MIDIOutput extends MIDIPort {\n    send(data: number[], timestamp?: DOMHighResTimeStamp): void;\n    addEventListener<K extends keyof MIDIPortEventMap>(type: K, listener: (this: MIDIOutput, ev: MIDIPortEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MIDIPortEventMap>(type: K, listener: (this: MIDIOutput, ev: MIDIPortEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MIDIOutput: {\n    prototype: MIDIOutput;\n    new(): MIDIOutput;\n};\n\n/** Available only in secure contexts. */\ninterface MIDIOutputMap {\n    forEach(callbackfn: (value: MIDIOutput, key: string, parent: MIDIOutputMap) => void, thisArg?: any): void;\n}\n\ndeclare var MIDIOutputMap: {\n    prototype: MIDIOutputMap;\n    new(): MIDIOutputMap;\n};\n\ninterface MIDIPortEventMap {\n    \"statechange\": Event;\n}\n\n/** Available only in secure contexts. */\ninterface MIDIPort extends EventTarget {\n    readonly connection: MIDIPortConnectionState;\n    readonly id: string;\n    readonly manufacturer: string | null;\n    readonly name: string | null;\n    onstatechange: ((this: MIDIPort, ev: Event) => any) | null;\n    readonly state: MIDIPortDeviceState;\n    readonly type: MIDIPortType;\n    readonly version: string | null;\n    close(): Promise<MIDIPort>;\n    open(): Promise<MIDIPort>;\n    addEventListener<K extends keyof MIDIPortEventMap>(type: K, listener: (this: MIDIPort, ev: MIDIPortEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MIDIPortEventMap>(type: K, listener: (this: MIDIPort, ev: MIDIPortEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MIDIPort: {\n    prototype: MIDIPort;\n    new(): MIDIPort;\n};\n\ninterface MathMLElementEventMap extends ElementEventMap, GlobalEventHandlersEventMap {\n}\n\ninterface MathMLElement extends Element, ElementCSSInlineStyle, GlobalEventHandlers, HTMLOrSVGElement {\n    addEventListener<K extends keyof MathMLElementEventMap>(type: K, listener: (this: MathMLElement, ev: MathMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MathMLElementEventMap>(type: K, listener: (this: MathMLElement, ev: MathMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MathMLElement: {\n    prototype: MathMLElement;\n    new(): MathMLElement;\n};\n\ninterface MediaCapabilities {\n    decodingInfo(configuration: MediaDecodingConfiguration): Promise<MediaCapabilitiesDecodingInfo>;\n    encodingInfo(configuration: MediaEncodingConfiguration): Promise<MediaCapabilitiesEncodingInfo>;\n}\n\ndeclare var MediaCapabilities: {\n    prototype: MediaCapabilities;\n    new(): MediaCapabilities;\n};\n\n/**\n * The MediaDevicesInfo interface contains information that describes a single media input or output device.\n * Available only in secure contexts.\n */\ninterface MediaDeviceInfo {\n    readonly deviceId: string;\n    readonly groupId: string;\n    readonly kind: MediaDeviceKind;\n    readonly label: string;\n    toJSON(): any;\n}\n\ndeclare var MediaDeviceInfo: {\n    prototype: MediaDeviceInfo;\n    new(): MediaDeviceInfo;\n};\n\ninterface MediaDevicesEventMap {\n    \"devicechange\": Event;\n}\n\n/**\n * Provides access to connected media input devices like cameras and microphones, as well as screen sharing. In essence, it lets you obtain access to any hardware source of media data.\n * Available only in secure contexts.\n */\ninterface MediaDevices extends EventTarget {\n    ondevicechange: ((this: MediaDevices, ev: Event) => any) | null;\n    enumerateDevices(): Promise<MediaDeviceInfo[]>;\n    getDisplayMedia(options?: DisplayMediaStreamOptions): Promise<MediaStream>;\n    getSupportedConstraints(): MediaTrackSupportedConstraints;\n    getUserMedia(constraints?: MediaStreamConstraints): Promise<MediaStream>;\n    addEventListener<K extends keyof MediaDevicesEventMap>(type: K, listener: (this: MediaDevices, ev: MediaDevicesEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MediaDevicesEventMap>(type: K, listener: (this: MediaDevices, ev: MediaDevicesEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MediaDevices: {\n    prototype: MediaDevices;\n    new(): MediaDevices;\n};\n\n/** A MediaElementSourceNode has no inputs and exactly one output, and is created using the AudioContext.createMediaElementSource method. The amount of channels in the output equals the number of channels of the audio referenced by the HTMLMediaElement used in the creation of the node, or is 1 if the HTMLMediaElement has no audio. */\ninterface MediaElementAudioSourceNode extends AudioNode {\n    readonly mediaElement: HTMLMediaElement;\n}\n\ndeclare var MediaElementAudioSourceNode: {\n    prototype: MediaElementAudioSourceNode;\n    new(context: AudioContext, options: MediaElementAudioSourceOptions): MediaElementAudioSourceNode;\n};\n\ninterface MediaEncryptedEvent extends Event {\n    readonly initData: ArrayBuffer | null;\n    readonly initDataType: string;\n}\n\ndeclare var MediaEncryptedEvent: {\n    prototype: MediaEncryptedEvent;\n    new(type: string, eventInitDict?: MediaEncryptedEventInit): MediaEncryptedEvent;\n};\n\n/** An error which occurred while handling media in an HTML media element based on HTMLMediaElement, such as <audio> or <video>. */\ninterface MediaError {\n    readonly code: number;\n    readonly message: string;\n    readonly MEDIA_ERR_ABORTED: 1;\n    readonly MEDIA_ERR_NETWORK: 2;\n    readonly MEDIA_ERR_DECODE: 3;\n    readonly MEDIA_ERR_SRC_NOT_SUPPORTED: 4;\n}\n\ndeclare var MediaError: {\n    prototype: MediaError;\n    new(): MediaError;\n    readonly MEDIA_ERR_ABORTED: 1;\n    readonly MEDIA_ERR_NETWORK: 2;\n    readonly MEDIA_ERR_DECODE: 3;\n    readonly MEDIA_ERR_SRC_NOT_SUPPORTED: 4;\n};\n\n/**\n * This EncryptedMediaExtensions API interface contains the content and related data when the content decryption module generates a message for the session.\n * Available only in secure contexts.\n */\ninterface MediaKeyMessageEvent extends Event {\n    readonly message: ArrayBuffer;\n    readonly messageType: MediaKeyMessageType;\n}\n\ndeclare var MediaKeyMessageEvent: {\n    prototype: MediaKeyMessageEvent;\n    new(type: string, eventInitDict: MediaKeyMessageEventInit): MediaKeyMessageEvent;\n};\n\ninterface MediaKeySessionEventMap {\n    \"keystatuseschange\": Event;\n    \"message\": MediaKeyMessageEvent;\n}\n\n/**\n * This EncryptedMediaExtensions API interface represents a\\xA0context for message exchange with a content decryption module (CDM).\n * Available only in secure contexts.\n */\ninterface MediaKeySession extends EventTarget {\n    readonly closed: Promise<MediaKeySessionClosedReason>;\n    readonly expiration: number;\n    readonly keyStatuses: MediaKeyStatusMap;\n    onkeystatuseschange: ((this: MediaKeySession, ev: Event) => any) | null;\n    onmessage: ((this: MediaKeySession, ev: MediaKeyMessageEvent) => any) | null;\n    readonly sessionId: string;\n    close(): Promise<void>;\n    generateRequest(initDataType: string, initData: BufferSource): Promise<void>;\n    load(sessionId: string): Promise<boolean>;\n    remove(): Promise<void>;\n    update(response: BufferSource): Promise<void>;\n    addEventListener<K extends keyof MediaKeySessionEventMap>(type: K, listener: (this: MediaKeySession, ev: MediaKeySessionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MediaKeySessionEventMap>(type: K, listener: (this: MediaKeySession, ev: MediaKeySessionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MediaKeySession: {\n    prototype: MediaKeySession;\n    new(): MediaKeySession;\n};\n\n/**\n * This EncryptedMediaExtensions API interface is a read-only map of media key statuses by key IDs.\n * Available only in secure contexts.\n */\ninterface MediaKeyStatusMap {\n    readonly size: number;\n    get(keyId: BufferSource): MediaKeyStatus | undefined;\n    has(keyId: BufferSource): boolean;\n    forEach(callbackfn: (value: MediaKeyStatus, key: BufferSource, parent: MediaKeyStatusMap) => void, thisArg?: any): void;\n}\n\ndeclare var MediaKeyStatusMap: {\n    prototype: MediaKeyStatusMap;\n    new(): MediaKeyStatusMap;\n};\n\n/**\n * This EncryptedMediaExtensions API interface provides access to a Key System for decryption and/or a content protection provider. You can request an instance of this object using the Navigator.requestMediaKeySystemAccess method.\n * Available only in secure contexts.\n */\ninterface MediaKeySystemAccess {\n    readonly keySystem: string;\n    createMediaKeys(): Promise<MediaKeys>;\n    getConfiguration(): MediaKeySystemConfiguration;\n}\n\ndeclare var MediaKeySystemAccess: {\n    prototype: MediaKeySystemAccess;\n    new(): MediaKeySystemAccess;\n};\n\n/**\n * This EncryptedMediaExtensions API interface the represents a set of keys that an associated HTMLMediaElement can use for decryption of media data during playback.\n * Available only in secure contexts.\n */\ninterface MediaKeys {\n    createSession(sessionType?: MediaKeySessionType): MediaKeySession;\n    setServerCertificate(serverCertificate: BufferSource): Promise<boolean>;\n}\n\ndeclare var MediaKeys: {\n    prototype: MediaKeys;\n    new(): MediaKeys;\n};\n\ninterface MediaList {\n    readonly length: number;\n    mediaText: string;\n    toString(): string;\n    appendMedium(medium: string): void;\n    deleteMedium(medium: string): void;\n    item(index: number): string | null;\n    [index: number]: string;\n}\n\ndeclare var MediaList: {\n    prototype: MediaList;\n    new(): MediaList;\n};\n\ninterface MediaMetadata {\n    album: string;\n    artist: string;\n    artwork: ReadonlyArray<MediaImage>;\n    title: string;\n}\n\ndeclare var MediaMetadata: {\n    prototype: MediaMetadata;\n    new(init?: MediaMetadataInit): MediaMetadata;\n};\n\ninterface MediaQueryListEventMap {\n    \"change\": MediaQueryListEvent;\n}\n\n/** Stores information on a media query applied to a document, and handles sending notifications to listeners when the media query state change (i.e. when the media query test starts or stops evaluating to true). */\ninterface MediaQueryList extends EventTarget {\n    readonly matches: boolean;\n    readonly media: string;\n    onchange: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null;\n    /** @deprecated */\n    addListener(callback: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null): void;\n    /** @deprecated */\n    removeListener(callback: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null): void;\n    addEventListener<K extends keyof MediaQueryListEventMap>(type: K, listener: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MediaQueryListEventMap>(type: K, listener: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MediaQueryList: {\n    prototype: MediaQueryList;\n    new(): MediaQueryList;\n};\n\ninterface MediaQueryListEvent extends Event {\n    readonly matches: boolean;\n    readonly media: string;\n}\n\ndeclare var MediaQueryListEvent: {\n    prototype: MediaQueryListEvent;\n    new(type: string, eventInitDict?: MediaQueryListEventInit): MediaQueryListEvent;\n};\n\ninterface MediaRecorderEventMap {\n    \"dataavailable\": BlobEvent;\n    \"error\": Event;\n    \"pause\": Event;\n    \"resume\": Event;\n    \"start\": Event;\n    \"stop\": Event;\n}\n\ninterface MediaRecorder extends EventTarget {\n    readonly audioBitsPerSecond: number;\n    readonly mimeType: string;\n    ondataavailable: ((this: MediaRecorder, ev: BlobEvent) => any) | null;\n    onerror: ((this: MediaRecorder, ev: Event) => any) | null;\n    onpause: ((this: MediaRecorder, ev: Event) => any) | null;\n    onresume: ((this: MediaRecorder, ev: Event) => any) | null;\n    onstart: ((this: MediaRecorder, ev: Event) => any) | null;\n    onstop: ((this: MediaRecorder, ev: Event) => any) | null;\n    readonly state: RecordingState;\n    readonly stream: MediaStream;\n    readonly videoBitsPerSecond: number;\n    pause(): void;\n    requestData(): void;\n    resume(): void;\n    start(timeslice?: number): void;\n    stop(): void;\n    addEventListener<K extends keyof MediaRecorderEventMap>(type: K, listener: (this: MediaRecorder, ev: MediaRecorderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MediaRecorderEventMap>(type: K, listener: (this: MediaRecorder, ev: MediaRecorderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MediaRecorder: {\n    prototype: MediaRecorder;\n    new(stream: MediaStream, options?: MediaRecorderOptions): MediaRecorder;\n    isTypeSupported(type: string): boolean;\n};\n\ninterface MediaSession {\n    metadata: MediaMetadata | null;\n    playbackState: MediaSessionPlaybackState;\n    setActionHandler(action: MediaSessionAction, handler: MediaSessionActionHandler | null): void;\n    setPositionState(state?: MediaPositionState): void;\n}\n\ndeclare var MediaSession: {\n    prototype: MediaSession;\n    new(): MediaSession;\n};\n\ninterface MediaSourceEventMap {\n    \"sourceclose\": Event;\n    \"sourceended\": Event;\n    \"sourceopen\": Event;\n}\n\n/** This Media Source Extensions API interface represents a source of media data for an HTMLMediaElement object. A MediaSource object can be attached to a HTMLMediaElement to be played in the user agent. */\ninterface MediaSource extends EventTarget {\n    readonly activeSourceBuffers: SourceBufferList;\n    duration: number;\n    onsourceclose: ((this: MediaSource, ev: Event) => any) | null;\n    onsourceended: ((this: MediaSource, ev: Event) => any) | null;\n    onsourceopen: ((this: MediaSource, ev: Event) => any) | null;\n    readonly readyState: ReadyState;\n    readonly sourceBuffers: SourceBufferList;\n    addSourceBuffer(type: string): SourceBuffer;\n    clearLiveSeekableRange(): void;\n    endOfStream(error?: EndOfStreamError): void;\n    removeSourceBuffer(sourceBuffer: SourceBuffer): void;\n    setLiveSeekableRange(start: number, end: number): void;\n    addEventListener<K extends keyof MediaSourceEventMap>(type: K, listener: (this: MediaSource, ev: MediaSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MediaSourceEventMap>(type: K, listener: (this: MediaSource, ev: MediaSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MediaSource: {\n    prototype: MediaSource;\n    new(): MediaSource;\n    isTypeSupported(type: string): boolean;\n};\n\ninterface MediaStreamEventMap {\n    \"addtrack\": MediaStreamTrackEvent;\n    \"removetrack\": MediaStreamTrackEvent;\n}\n\n/** A stream of media content. A stream consists of several tracks such as\\xA0video or audio tracks. Each track is specified as an instance of MediaStreamTrack. */\ninterface MediaStream extends EventTarget {\n    readonly active: boolean;\n    readonly id: string;\n    onaddtrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;\n    onremovetrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;\n    addTrack(track: MediaStreamTrack): void;\n    clone(): MediaStream;\n    getAudioTracks(): MediaStreamTrack[];\n    getTrackById(trackId: string): MediaStreamTrack | null;\n    getTracks(): MediaStreamTrack[];\n    getVideoTracks(): MediaStreamTrack[];\n    removeTrack(track: MediaStreamTrack): void;\n    addEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MediaStream: {\n    prototype: MediaStream;\n    new(): MediaStream;\n    new(stream: MediaStream): MediaStream;\n    new(tracks: MediaStreamTrack[]): MediaStream;\n};\n\ninterface MediaStreamAudioDestinationNode extends AudioNode {\n    readonly stream: MediaStream;\n}\n\ndeclare var MediaStreamAudioDestinationNode: {\n    prototype: MediaStreamAudioDestinationNode;\n    new(context: AudioContext, options?: AudioNodeOptions): MediaStreamAudioDestinationNode;\n};\n\n/** A type of AudioNode which operates as an audio source whose media is received from a MediaStream obtained using the WebRTC or Media Capture and Streams APIs. */\ninterface MediaStreamAudioSourceNode extends AudioNode {\n    readonly mediaStream: MediaStream;\n}\n\ndeclare var MediaStreamAudioSourceNode: {\n    prototype: MediaStreamAudioSourceNode;\n    new(context: AudioContext, options: MediaStreamAudioSourceOptions): MediaStreamAudioSourceNode;\n};\n\ninterface MediaStreamTrackEventMap {\n    \"ended\": Event;\n    \"mute\": Event;\n    \"unmute\": Event;\n}\n\n/** A single media track within a stream; typically, these are audio or video tracks, but other track types may exist as well. */\ninterface MediaStreamTrack extends EventTarget {\n    contentHint: string;\n    enabled: boolean;\n    readonly id: string;\n    readonly kind: string;\n    readonly label: string;\n    readonly muted: boolean;\n    onended: ((this: MediaStreamTrack, ev: Event) => any) | null;\n    onmute: ((this: MediaStreamTrack, ev: Event) => any) | null;\n    onunmute: ((this: MediaStreamTrack, ev: Event) => any) | null;\n    readonly readyState: MediaStreamTrackState;\n    applyConstraints(constraints?: MediaTrackConstraints): Promise<void>;\n    clone(): MediaStreamTrack;\n    getCapabilities(): MediaTrackCapabilities;\n    getConstraints(): MediaTrackConstraints;\n    getSettings(): MediaTrackSettings;\n    stop(): void;\n    addEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: MediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: MediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MediaStreamTrack: {\n    prototype: MediaStreamTrack;\n    new(): MediaStreamTrack;\n};\n\n/** Events which indicate that a MediaStream has had tracks added to or removed from the stream through calls to Media Stream API methods. These events are sent to the stream when these changes occur. */\ninterface MediaStreamTrackEvent extends Event {\n    readonly track: MediaStreamTrack;\n}\n\ndeclare var MediaStreamTrackEvent: {\n    prototype: MediaStreamTrackEvent;\n    new(type: string, eventInitDict: MediaStreamTrackEventInit): MediaStreamTrackEvent;\n};\n\n/** This Channel Messaging API interface allows us to create a new message channel and send data through it via its two MessagePort properties. */\ninterface MessageChannel {\n    /** Returns the first MessagePort object. */\n    readonly port1: MessagePort;\n    /** Returns the second MessagePort object. */\n    readonly port2: MessagePort;\n}\n\ndeclare var MessageChannel: {\n    prototype: MessageChannel;\n    new(): MessageChannel;\n};\n\n/** A message received by a target object. */\ninterface MessageEvent<T = any> extends Event {\n    /** Returns the data of the message. */\n    readonly data: T;\n    /** Returns the last event ID string, for server-sent events. */\n    readonly lastEventId: string;\n    /** Returns the origin of the message, for server-sent events and cross-document messaging. */\n    readonly origin: string;\n    /** Returns the MessagePort array sent with the message, for cross-document messaging and channel messaging. */\n    readonly ports: ReadonlyArray<MessagePort>;\n    /** Returns the WindowProxy of the source window, for cross-document messaging, and the MessagePort being attached, in the connect event fired at SharedWorkerGlobalScope objects. */\n    readonly source: MessageEventSource | null;\n    /** @deprecated */\n    initMessageEvent(type: string, bubbles?: boolean, cancelable?: boolean, data?: any, origin?: string, lastEventId?: string, source?: MessageEventSource | null, ports?: MessagePort[]): void;\n}\n\ndeclare var MessageEvent: {\n    prototype: MessageEvent;\n    new<T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>;\n};\n\ninterface MessagePortEventMap {\n    \"message\": MessageEvent;\n    \"messageerror\": MessageEvent;\n}\n\n/** This Channel Messaging API interface represents one of the two ports of a MessageChannel, allowing messages to be sent from one port and listening out for them arriving at the other. */\ninterface MessagePort extends EventTarget {\n    onmessage: ((this: MessagePort, ev: MessageEvent) => any) | null;\n    onmessageerror: ((this: MessagePort, ev: MessageEvent) => any) | null;\n    /** Disconnects the port, so that it is no longer active. */\n    close(): void;\n    /**\n     * Posts a message through the channel. Objects listed in transfer are transferred, not just cloned, meaning that they are no longer usable on the sending side.\n     *\n     * Throws a \"DataCloneError\" DOMException if transfer contains duplicate objects or port, or if message could not be cloned.\n     */\n    postMessage(message: any, transfer: Transferable[]): void;\n    postMessage(message: any, options?: StructuredSerializeOptions): void;\n    /** Begins dispatching messages received on the port. */\n    start(): void;\n    addEventListener<K extends keyof MessagePortEventMap>(type: K, listener: (this: MessagePort, ev: MessagePortEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MessagePortEventMap>(type: K, listener: (this: MessagePort, ev: MessagePortEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MessagePort: {\n    prototype: MessagePort;\n    new(): MessagePort;\n};\n\n/**\n * Provides contains information about a MIME type associated with a particular plugin. NavigatorPlugins.mimeTypes returns an array of this object.\n * @deprecated\n */\ninterface MimeType {\n    /**\n     * Returns the MIME type's description.\n     * @deprecated\n     */\n    readonly description: string;\n    /**\n     * Returns the Plugin object that implements this MIME type.\n     * @deprecated\n     */\n    readonly enabledPlugin: Plugin;\n    /**\n     * Returns the MIME type's typical file extensions, in a comma-separated list.\n     * @deprecated\n     */\n    readonly suffixes: string;\n    /**\n     * Returns the MIME type.\n     * @deprecated\n     */\n    readonly type: string;\n}\n\n/** @deprecated */\ndeclare var MimeType: {\n    prototype: MimeType;\n    new(): MimeType;\n};\n\n/**\n * Returns an array of MimeType instances, each of which contains information\\xA0about a supported browser plugins. This object is returned by NavigatorPlugins.mimeTypes.\n * @deprecated\n */\ninterface MimeTypeArray {\n    /** @deprecated */\n    readonly length: number;\n    /** @deprecated */\n    item(index: number): MimeType | null;\n    /** @deprecated */\n    namedItem(name: string): MimeType | null;\n    [index: number]: MimeType;\n}\n\n/** @deprecated */\ndeclare var MimeTypeArray: {\n    prototype: MimeTypeArray;\n    new(): MimeTypeArray;\n};\n\n/** Events that occur due to the user interacting with a pointing device (such as a mouse). Common events using this interface include click, dblclick, mouseup, mousedown. */\ninterface MouseEvent extends UIEvent {\n    readonly altKey: boolean;\n    readonly button: number;\n    readonly buttons: number;\n    readonly clientX: number;\n    readonly clientY: number;\n    readonly ctrlKey: boolean;\n    readonly metaKey: boolean;\n    readonly movementX: number;\n    readonly movementY: number;\n    readonly offsetX: number;\n    readonly offsetY: number;\n    readonly pageX: number;\n    readonly pageY: number;\n    readonly relatedTarget: EventTarget | null;\n    readonly screenX: number;\n    readonly screenY: number;\n    readonly shiftKey: boolean;\n    readonly x: number;\n    readonly y: number;\n    getModifierState(keyArg: string): boolean;\n    /** @deprecated */\n    initMouseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget | null): void;\n}\n\ndeclare var MouseEvent: {\n    prototype: MouseEvent;\n    new(type: string, eventInitDict?: MouseEventInit): MouseEvent;\n};\n\n/**\n * Provides event properties that are specific to modifications to the Document Object Model (DOM) hierarchy and nodes.\n * @deprecated DOM4 [DOM] provides a new mechanism using a MutationObserver interface which addresses the use cases that mutation events solve, but in a more performant manner. Thus, this specification describes mutation events for reference and completeness of legacy behavior, but deprecates the use of the MutationEvent interface.\n */\ninterface MutationEvent extends Event {\n    /** @deprecated */\n    readonly attrChange: number;\n    /** @deprecated */\n    readonly attrName: string;\n    /** @deprecated */\n    readonly newValue: string;\n    /** @deprecated */\n    readonly prevValue: string;\n    /** @deprecated */\n    readonly relatedNode: Node | null;\n    /** @deprecated */\n    initMutationEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, relatedNodeArg?: Node | null, prevValueArg?: string, newValueArg?: string, attrNameArg?: string, attrChangeArg?: number): void;\n    readonly MODIFICATION: 1;\n    readonly ADDITION: 2;\n    readonly REMOVAL: 3;\n}\n\n/** @deprecated */\ndeclare var MutationEvent: {\n    prototype: MutationEvent;\n    new(): MutationEvent;\n    readonly MODIFICATION: 1;\n    readonly ADDITION: 2;\n    readonly REMOVAL: 3;\n};\n\n/** Provides the ability to watch for changes being made to the DOM tree. It is designed as a replacement for the older Mutation Events feature which was part of the DOM3 Events specification. */\ninterface MutationObserver {\n    /** Stops observer from observing any mutations. Until the observe() method is used again, observer's callback will not be invoked. */\n    disconnect(): void;\n    /**\n     * Instructs the user agent to observe a given target (a node) and report any mutations based on the criteria given by options (an object).\n     *\n     * The options argument allows for setting mutation observation options via object members.\n     */\n    observe(target: Node, options?: MutationObserverInit): void;\n    /** Empties the record queue and returns what was in there. */\n    takeRecords(): MutationRecord[];\n}\n\ndeclare var MutationObserver: {\n    prototype: MutationObserver;\n    new(callback: MutationCallback): MutationObserver;\n};\n\n/** A MutationRecord represents an individual DOM mutation. It is the object that is passed to MutationObserver's callback. */\ninterface MutationRecord {\n    /** Return the nodes added and removed respectively. */\n    readonly addedNodes: NodeList;\n    /** Returns the local name of the changed attribute, and null otherwise. */\n    readonly attributeName: string | null;\n    /** Returns the namespace of the changed attribute, and null otherwise. */\n    readonly attributeNamespace: string | null;\n    /** Return the previous and next sibling respectively of the added or removed nodes, and null otherwise. */\n    readonly nextSibling: Node | null;\n    /** The return value depends on type. For \"attributes\", it is the value of the changed attribute before the change. For \"characterData\", it is the data of the changed node before the change. For \"childList\", it is null. */\n    readonly oldValue: string | null;\n    /** Return the previous and next sibling respectively of the added or removed nodes, and null otherwise. */\n    readonly previousSibling: Node | null;\n    /** Return the nodes added and removed respectively. */\n    readonly removedNodes: NodeList;\n    /** Returns the node the mutation affected, depending on the type. For \"attributes\", it is the element whose attribute changed. For \"characterData\", it is the CharacterData node. For \"childList\", it is the node whose children changed. */\n    readonly target: Node;\n    /** Returns \"attributes\" if it was an attribute mutation. \"characterData\" if it was a mutation to a CharacterData node. And \"childList\" if it was a mutation to the tree of nodes. */\n    readonly type: MutationRecordType;\n}\n\ndeclare var MutationRecord: {\n    prototype: MutationRecord;\n    new(): MutationRecord;\n};\n\n/** A collection of Attr objects. Objects inside a NamedNodeMap are not in any particular order, unlike NodeList, although they may be accessed by an index as in an array. */\ninterface NamedNodeMap {\n    readonly length: number;\n    getNamedItem(qualifiedName: string): Attr | null;\n    getNamedItemNS(namespace: string | null, localName: string): Attr | null;\n    item(index: number): Attr | null;\n    removeNamedItem(qualifiedName: string): Attr;\n    removeNamedItemNS(namespace: string | null, localName: string): Attr;\n    setNamedItem(attr: Attr): Attr | null;\n    setNamedItemNS(attr: Attr): Attr | null;\n    [index: number]: Attr;\n}\n\ndeclare var NamedNodeMap: {\n    prototype: NamedNodeMap;\n    new(): NamedNodeMap;\n};\n\n/** Available only in secure contexts. */\ninterface NavigationPreloadManager {\n    disable(): Promise<void>;\n    enable(): Promise<void>;\n    getState(): Promise<NavigationPreloadState>;\n    setHeaderValue(value: string): Promise<void>;\n}\n\ndeclare var NavigationPreloadManager: {\n    prototype: NavigationPreloadManager;\n    new(): NavigationPreloadManager;\n};\n\n/** The state and the identity of the user agent. It allows scripts to query it and to register themselves to carry on some activities. */\ninterface Navigator extends NavigatorAutomationInformation, NavigatorConcurrentHardware, NavigatorContentUtils, NavigatorCookies, NavigatorID, NavigatorLanguage, NavigatorLocks, NavigatorOnLine, NavigatorPlugins, NavigatorStorage {\n    /** Available only in secure contexts. */\n    readonly clipboard: Clipboard;\n    /** Available only in secure contexts. */\n    readonly credentials: CredentialsContainer;\n    readonly doNotTrack: string | null;\n    readonly geolocation: Geolocation;\n    readonly maxTouchPoints: number;\n    readonly mediaCapabilities: MediaCapabilities;\n    /** Available only in secure contexts. */\n    readonly mediaDevices: MediaDevices;\n    readonly mediaSession: MediaSession;\n    readonly permissions: Permissions;\n    /** Available only in secure contexts. */\n    readonly serviceWorker: ServiceWorkerContainer;\n    /** Available only in secure contexts. */\n    canShare(data?: ShareData): boolean;\n    getGamepads(): (Gamepad | null)[];\n    /** Available only in secure contexts. */\n    requestMIDIAccess(options?: MIDIOptions): Promise<MIDIAccess>;\n    /** Available only in secure contexts. */\n    requestMediaKeySystemAccess(keySystem: string, supportedConfigurations: MediaKeySystemConfiguration[]): Promise<MediaKeySystemAccess>;\n    sendBeacon(url: string | URL, data?: BodyInit | null): boolean;\n    /** Available only in secure contexts. */\n    share(data?: ShareData): Promise<void>;\n    vibrate(pattern: VibratePattern): boolean;\n}\n\ndeclare var Navigator: {\n    prototype: Navigator;\n    new(): Navigator;\n};\n\ninterface NavigatorAutomationInformation {\n    readonly webdriver: boolean;\n}\n\ninterface NavigatorConcurrentHardware {\n    readonly hardwareConcurrency: number;\n}\n\ninterface NavigatorContentUtils {\n    /** Available only in secure contexts. */\n    registerProtocolHandler(scheme: string, url: string | URL): void;\n}\n\ninterface NavigatorCookies {\n    readonly cookieEnabled: boolean;\n}\n\ninterface NavigatorID {\n    /** @deprecated */\n    readonly appCodeName: string;\n    /** @deprecated */\n    readonly appName: string;\n    /** @deprecated */\n    readonly appVersion: string;\n    /** @deprecated */\n    readonly platform: string;\n    /** @deprecated */\n    readonly product: string;\n    /** @deprecated */\n    readonly productSub: string;\n    readonly userAgent: string;\n    /** @deprecated */\n    readonly vendor: string;\n    /** @deprecated */\n    readonly vendorSub: string;\n}\n\ninterface NavigatorLanguage {\n    readonly language: string;\n    readonly languages: ReadonlyArray<string>;\n}\n\n/** Available only in secure contexts. */\ninterface NavigatorLocks {\n    readonly locks: LockManager;\n}\n\ninterface NavigatorOnLine {\n    readonly onLine: boolean;\n}\n\ninterface NavigatorPlugins {\n    /** @deprecated */\n    readonly mimeTypes: MimeTypeArray;\n    readonly pdfViewerEnabled: boolean;\n    /** @deprecated */\n    readonly plugins: PluginArray;\n    /** @deprecated */\n    javaEnabled(): boolean;\n}\n\n/** Available only in secure contexts. */\ninterface NavigatorStorage {\n    readonly storage: StorageManager;\n}\n\n/** Node is an interface from which a number of DOM API object types inherit. It allows those types to be treated similarly; for example, inheriting the same set of methods, or being tested in the same way. */\ninterface Node extends EventTarget {\n    /** Returns node's node document's document base URL. */\n    readonly baseURI: string;\n    /** Returns the children. */\n    readonly childNodes: NodeListOf<ChildNode>;\n    /** Returns the first child. */\n    readonly firstChild: ChildNode | null;\n    /** Returns true if node is connected and false otherwise. */\n    readonly isConnected: boolean;\n    /** Returns the last child. */\n    readonly lastChild: ChildNode | null;\n    /** Returns the next sibling. */\n    readonly nextSibling: ChildNode | null;\n    /** Returns a string appropriate for the type of node. */\n    readonly nodeName: string;\n    /** Returns the type of node. */\n    readonly nodeType: number;\n    nodeValue: string | null;\n    /** Returns the node document. Returns null for documents. */\n    readonly ownerDocument: Document | null;\n    /** Returns the parent element. */\n    readonly parentElement: HTMLElement | null;\n    /** Returns the parent. */\n    readonly parentNode: ParentNode | null;\n    /** Returns the previous sibling. */\n    readonly previousSibling: ChildNode | null;\n    textContent: string | null;\n    appendChild<T extends Node>(node: T): T;\n    /** Returns a copy of node. If deep is true, the copy also includes the node's descendants. */\n    cloneNode(deep?: boolean): Node;\n    /** Returns a bitmask indicating the position of other relative to node. */\n    compareDocumentPosition(other: Node): number;\n    /** Returns true if other is an inclusive descendant of node, and false otherwise. */\n    contains(other: Node | null): boolean;\n    /** Returns node's root. */\n    getRootNode(options?: GetRootNodeOptions): Node;\n    /** Returns whether node has children. */\n    hasChildNodes(): boolean;\n    insertBefore<T extends Node>(node: T, child: Node | null): T;\n    isDefaultNamespace(namespace: string | null): boolean;\n    /** Returns whether node and otherNode have the same properties. */\n    isEqualNode(otherNode: Node | null): boolean;\n    isSameNode(otherNode: Node | null): boolean;\n    lookupNamespaceURI(prefix: string | null): string | null;\n    lookupPrefix(namespace: string | null): string | null;\n    /** Removes empty exclusive Text nodes and concatenates the data of remaining contiguous exclusive Text nodes into the first of their nodes. */\n    normalize(): void;\n    removeChild<T extends Node>(child: T): T;\n    replaceChild<T extends Node>(node: Node, child: T): T;\n    /** node is an element. */\n    readonly ELEMENT_NODE: 1;\n    readonly ATTRIBUTE_NODE: 2;\n    /** node is a Text node. */\n    readonly TEXT_NODE: 3;\n    /** node is a CDATASection node. */\n    readonly CDATA_SECTION_NODE: 4;\n    readonly ENTITY_REFERENCE_NODE: 5;\n    readonly ENTITY_NODE: 6;\n    /** node is a ProcessingInstruction node. */\n    readonly PROCESSING_INSTRUCTION_NODE: 7;\n    /** node is a Comment node. */\n    readonly COMMENT_NODE: 8;\n    /** node is a document. */\n    readonly DOCUMENT_NODE: 9;\n    /** node is a doctype. */\n    readonly DOCUMENT_TYPE_NODE: 10;\n    /** node is a DocumentFragment node. */\n    readonly DOCUMENT_FRAGMENT_NODE: 11;\n    readonly NOTATION_NODE: 12;\n    /** Set when node and other are not in the same tree. */\n    readonly DOCUMENT_POSITION_DISCONNECTED: 0x01;\n    /** Set when other is preceding node. */\n    readonly DOCUMENT_POSITION_PRECEDING: 0x02;\n    /** Set when other is following node. */\n    readonly DOCUMENT_POSITION_FOLLOWING: 0x04;\n    /** Set when other is an ancestor of node. */\n    readonly DOCUMENT_POSITION_CONTAINS: 0x08;\n    /** Set when other is a descendant of node. */\n    readonly DOCUMENT_POSITION_CONTAINED_BY: 0x10;\n    readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 0x20;\n}\n\ndeclare var Node: {\n    prototype: Node;\n    new(): Node;\n    /** node is an element. */\n    readonly ELEMENT_NODE: 1;\n    readonly ATTRIBUTE_NODE: 2;\n    /** node is a Text node. */\n    readonly TEXT_NODE: 3;\n    /** node is a CDATASection node. */\n    readonly CDATA_SECTION_NODE: 4;\n    readonly ENTITY_REFERENCE_NODE: 5;\n    readonly ENTITY_NODE: 6;\n    /** node is a ProcessingInstruction node. */\n    readonly PROCESSING_INSTRUCTION_NODE: 7;\n    /** node is a Comment node. */\n    readonly COMMENT_NODE: 8;\n    /** node is a document. */\n    readonly DOCUMENT_NODE: 9;\n    /** node is a doctype. */\n    readonly DOCUMENT_TYPE_NODE: 10;\n    /** node is a DocumentFragment node. */\n    readonly DOCUMENT_FRAGMENT_NODE: 11;\n    readonly NOTATION_NODE: 12;\n    /** Set when node and other are not in the same tree. */\n    readonly DOCUMENT_POSITION_DISCONNECTED: 0x01;\n    /** Set when other is preceding node. */\n    readonly DOCUMENT_POSITION_PRECEDING: 0x02;\n    /** Set when other is following node. */\n    readonly DOCUMENT_POSITION_FOLLOWING: 0x04;\n    /** Set when other is an ancestor of node. */\n    readonly DOCUMENT_POSITION_CONTAINS: 0x08;\n    /** Set when other is a descendant of node. */\n    readonly DOCUMENT_POSITION_CONTAINED_BY: 0x10;\n    readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 0x20;\n};\n\n/** An iterator over the members of a list of the nodes in a subtree of the DOM. The nodes will be returned in document order. */\ninterface NodeIterator {\n    readonly filter: NodeFilter | null;\n    readonly pointerBeforeReferenceNode: boolean;\n    readonly referenceNode: Node;\n    readonly root: Node;\n    readonly whatToShow: number;\n    /** @deprecated */\n    detach(): void;\n    nextNode(): Node | null;\n    previousNode(): Node | null;\n}\n\ndeclare var NodeIterator: {\n    prototype: NodeIterator;\n    new(): NodeIterator;\n};\n\n/** NodeList objects are collections of nodes, usually returned by properties such as Node.childNodes and methods such as document.querySelectorAll(). */\ninterface NodeList {\n    /** Returns the number of nodes in the collection. */\n    readonly length: number;\n    /** Returns the node with index index from the collection. The nodes are sorted in tree order. */\n    item(index: number): Node | null;\n    /**\n     * Performs the specified action for each node in an list.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the list.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: Node, key: number, parent: NodeList) => void, thisArg?: any): void;\n    [index: number]: Node;\n}\n\ndeclare var NodeList: {\n    prototype: NodeList;\n    new(): NodeList;\n};\n\ninterface NodeListOf<TNode extends Node> extends NodeList {\n    item(index: number): TNode;\n    /**\n     * Performs the specified action for each node in an list.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the list.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: TNode, key: number, parent: NodeListOf<TNode>) => void, thisArg?: any): void;\n    [index: number]: TNode;\n}\n\ninterface NonDocumentTypeChildNode {\n    /** Returns the first following sibling that is an element, and null otherwise. */\n    readonly nextElementSibling: Element | null;\n    /** Returns the first preceding sibling that is an element, and null otherwise. */\n    readonly previousElementSibling: Element | null;\n}\n\ninterface NonElementParentNode {\n    /** Returns the first element within node's descendants whose ID is elementId. */\n    getElementById(elementId: string): Element | null;\n}\n\ninterface NotificationEventMap {\n    \"click\": Event;\n    \"close\": Event;\n    \"error\": Event;\n    \"show\": Event;\n}\n\n/** This Notifications API interface is used to configure and display desktop notifications to the user. */\ninterface Notification extends EventTarget {\n    readonly body: string;\n    readonly data: any;\n    readonly dir: NotificationDirection;\n    readonly icon: string;\n    readonly lang: string;\n    onclick: ((this: Notification, ev: Event) => any) | null;\n    onclose: ((this: Notification, ev: Event) => any) | null;\n    onerror: ((this: Notification, ev: Event) => any) | null;\n    onshow: ((this: Notification, ev: Event) => any) | null;\n    readonly tag: string;\n    readonly title: string;\n    close(): void;\n    addEventListener<K extends keyof NotificationEventMap>(type: K, listener: (this: Notification, ev: NotificationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof NotificationEventMap>(type: K, listener: (this: Notification, ev: NotificationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Notification: {\n    prototype: Notification;\n    new(title: string, options?: NotificationOptions): Notification;\n    readonly permission: NotificationPermission;\n    requestPermission(deprecatedCallback?: NotificationPermissionCallback): Promise<NotificationPermission>;\n};\n\ninterface OES_draw_buffers_indexed {\n    blendEquationSeparateiOES(buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum): void;\n    blendEquationiOES(buf: GLuint, mode: GLenum): void;\n    blendFuncSeparateiOES(buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void;\n    blendFunciOES(buf: GLuint, src: GLenum, dst: GLenum): void;\n    colorMaskiOES(buf: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean): void;\n    disableiOES(target: GLenum, index: GLuint): void;\n    enableiOES(target: GLenum, index: GLuint): void;\n}\n\n/** The OES_element_index_uint extension is part of the WebGL API and adds support for gl.UNSIGNED_INT types to WebGLRenderingContext.drawElements(). */\ninterface OES_element_index_uint {\n}\n\ninterface OES_fbo_render_mipmap {\n}\n\n/** The OES_standard_derivatives extension is part of the WebGL API and adds the GLSL derivative functions dFdx, dFdy, and fwidth. */\ninterface OES_standard_derivatives {\n    readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 0x8B8B;\n}\n\n/** The OES_texture_float extension is part of the WebGL API and exposes floating-point pixel types for textures. */\ninterface OES_texture_float {\n}\n\n/** The OES_texture_float_linear extension is part of the WebGL API and allows linear filtering with floating-point pixel types for textures. */\ninterface OES_texture_float_linear {\n}\n\n/** The OES_texture_half_float extension is part of the WebGL API and adds texture formats with 16- (aka half float) and 32-bit floating-point components. */\ninterface OES_texture_half_float {\n    readonly HALF_FLOAT_OES: 0x8D61;\n}\n\n/** The OES_texture_half_float_linear extension is part of the WebGL API and allows linear filtering with half floating-point pixel types for textures. */\ninterface OES_texture_half_float_linear {\n}\n\ninterface OES_vertex_array_object {\n    bindVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void;\n    createVertexArrayOES(): WebGLVertexArrayObjectOES | null;\n    deleteVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void;\n    isVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): GLboolean;\n    readonly VERTEX_ARRAY_BINDING_OES: 0x85B5;\n}\n\ninterface OVR_multiview2 {\n    framebufferTextureMultiviewOVR(target: GLenum, attachment: GLenum, texture: WebGLTexture | null, level: GLint, baseViewIndex: GLint, numViews: GLsizei): void;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR: 0x9630;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR: 0x9632;\n    readonly MAX_VIEWS_OVR: 0x9631;\n    readonly FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: 0x9633;\n}\n\n/** The Web Audio API OfflineAudioCompletionEvent interface represents events that occur when the processing of an OfflineAudioContext is terminated. The complete event implements this interface. */\ninterface OfflineAudioCompletionEvent extends Event {\n    readonly renderedBuffer: AudioBuffer;\n}\n\ndeclare var OfflineAudioCompletionEvent: {\n    prototype: OfflineAudioCompletionEvent;\n    new(type: string, eventInitDict: OfflineAudioCompletionEventInit): OfflineAudioCompletionEvent;\n};\n\ninterface OfflineAudioContextEventMap extends BaseAudioContextEventMap {\n    \"complete\": OfflineAudioCompletionEvent;\n}\n\n/** An AudioContext interface representing an audio-processing graph built from linked together AudioNodes. In contrast with a standard AudioContext, an OfflineAudioContext doesn't render the audio to the device hardware; instead, it generates it, as fast as it can, and outputs the result to an AudioBuffer. */\ninterface OfflineAudioContext extends BaseAudioContext {\n    readonly length: number;\n    oncomplete: ((this: OfflineAudioContext, ev: OfflineAudioCompletionEvent) => any) | null;\n    resume(): Promise<void>;\n    startRendering(): Promise<AudioBuffer>;\n    suspend(suspendTime: number): Promise<void>;\n    addEventListener<K extends keyof OfflineAudioContextEventMap>(type: K, listener: (this: OfflineAudioContext, ev: OfflineAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof OfflineAudioContextEventMap>(type: K, listener: (this: OfflineAudioContext, ev: OfflineAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var OfflineAudioContext: {\n    prototype: OfflineAudioContext;\n    new(contextOptions: OfflineAudioContextOptions): OfflineAudioContext;\n    new(numberOfChannels: number, length: number, sampleRate: number): OfflineAudioContext;\n};\n\ninterface OffscreenCanvasEventMap {\n    \"contextlost\": Event;\n    \"contextrestored\": Event;\n}\n\ninterface OffscreenCanvas extends EventTarget {\n    /**\n     * These attributes return the dimensions of the OffscreenCanvas object's bitmap.\n     *\n     * They can be set, to replace the bitmap with a new, transparent black bitmap of the specified dimensions (effectively resizing it).\n     */\n    height: number;\n    oncontextlost: ((this: OffscreenCanvas, ev: Event) => any) | null;\n    oncontextrestored: ((this: OffscreenCanvas, ev: Event) => any) | null;\n    /**\n     * These attributes return the dimensions of the OffscreenCanvas object's bitmap.\n     *\n     * They can be set, to replace the bitmap with a new, transparent black bitmap of the specified dimensions (effectively resizing it).\n     */\n    width: number;\n    /**\n     * Returns a promise that will fulfill with a new Blob object representing a file containing the image in the OffscreenCanvas object.\n     *\n     * The argument, if provided, is a dictionary that controls the encoding options of the image file to be created. The type field specifies the file format and has a default value of \"image/png\"; that type is also used if the requested type isn't supported. If the image format supports variable quality (such as \"image/jpeg\"), then the quality field is a number in the range 0.0 to 1.0 inclusive indicating the desired quality level for the resulting image.\n     */\n    convertToBlob(options?: ImageEncodeOptions): Promise<Blob>;\n    /**\n     * Returns an object that exposes an API for drawing on the OffscreenCanvas object. contextId specifies the desired API: \"2d\", \"bitmaprenderer\", \"webgl\", or \"webgl2\". options is handled by that API.\n     *\n     * This specification defines the \"2d\" context below, which is similar but distinct from the \"2d\" context that is created from a canvas element. The WebGL specifications define the \"webgl\" and \"webgl2\" contexts. [WEBGL]\n     *\n     * Returns null if the canvas has already been initialized with another context type (e.g., trying to get a \"2d\" context after getting a \"webgl\" context).\n     */\n    getContext(contextId: \"2d\", options?: any): OffscreenCanvasRenderingContext2D | null;\n    getContext(contextId: \"bitmaprenderer\", options?: any): ImageBitmapRenderingContext | null;\n    getContext(contextId: \"webgl\", options?: any): WebGLRenderingContext | null;\n    getContext(contextId: \"webgl2\", options?: any): WebGL2RenderingContext | null;\n    getContext(contextId: OffscreenRenderingContextId, options?: any): OffscreenRenderingContext | null;\n    /** Returns a newly created ImageBitmap object with the image in the OffscreenCanvas object. The image in the OffscreenCanvas object is replaced with a new blank image. */\n    transferToImageBitmap(): ImageBitmap;\n    addEventListener<K extends keyof OffscreenCanvasEventMap>(type: K, listener: (this: OffscreenCanvas, ev: OffscreenCanvasEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof OffscreenCanvasEventMap>(type: K, listener: (this: OffscreenCanvas, ev: OffscreenCanvasEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var OffscreenCanvas: {\n    prototype: OffscreenCanvas;\n    new(width: number, height: number): OffscreenCanvas;\n};\n\ninterface OffscreenCanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform {\n    readonly canvas: OffscreenCanvas;\n    commit(): void;\n}\n\ndeclare var OffscreenCanvasRenderingContext2D: {\n    prototype: OffscreenCanvasRenderingContext2D;\n    new(): OffscreenCanvasRenderingContext2D;\n};\n\n/** The OscillatorNode\\xA0interface represents a periodic waveform, such as a sine wave. It is an AudioScheduledSourceNode audio-processing module that causes a specified frequency\\xA0of a given wave to be created\\u2014in effect, a constant tone. */\ninterface OscillatorNode extends AudioScheduledSourceNode {\n    readonly detune: AudioParam;\n    readonly frequency: AudioParam;\n    type: OscillatorType;\n    setPeriodicWave(periodicWave: PeriodicWave): void;\n    addEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: OscillatorNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AudioScheduledSourceNodeEventMap>(type: K, listener: (this: OscillatorNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var OscillatorNode: {\n    prototype: OscillatorNode;\n    new(context: BaseAudioContext, options?: OscillatorOptions): OscillatorNode;\n};\n\ninterface OverconstrainedError extends Error {\n    readonly constraint: string;\n}\n\ndeclare var OverconstrainedError: {\n    prototype: OverconstrainedError;\n    new(constraint: string, message?: string): OverconstrainedError;\n};\n\n/** The PageTransitionEvent is fired when a document is being loaded or unloaded. */\ninterface PageTransitionEvent extends Event {\n    /**\n     * For the pageshow event, returns false if the page is newly being loaded (and the load event will fire). Otherwise, returns true.\n     *\n     * For the pagehide event, returns false if the page is going away for the last time. Otherwise, returns true, meaning that (if nothing conspires to make the page unsalvageable) the page might be reused if the user navigates back to this page.\n     *\n     * Things that can cause the page to be unsalvageable include:\n     *\n     * The user agent decided to not keep the Document alive in a session history entry after unload\n     * Having iframes that are not salvageable\n     * Active WebSocket objects\n     * Aborting a Document\n     */\n    readonly persisted: boolean;\n}\n\ndeclare var PageTransitionEvent: {\n    prototype: PageTransitionEvent;\n    new(type: string, eventInitDict?: PageTransitionEventInit): PageTransitionEvent;\n};\n\n/** A PannerNode always has exactly one input and one output: the input can be mono or stereo but the output is always stereo (2 channels); you can't have panning effects without at least two audio channels! */\ninterface PannerNode extends AudioNode {\n    coneInnerAngle: number;\n    coneOuterAngle: number;\n    coneOuterGain: number;\n    distanceModel: DistanceModelType;\n    maxDistance: number;\n    readonly orientationX: AudioParam;\n    readonly orientationY: AudioParam;\n    readonly orientationZ: AudioParam;\n    panningModel: PanningModelType;\n    readonly positionX: AudioParam;\n    readonly positionY: AudioParam;\n    readonly positionZ: AudioParam;\n    refDistance: number;\n    rolloffFactor: number;\n    /** @deprecated */\n    setOrientation(x: number, y: number, z: number): void;\n    /** @deprecated */\n    setPosition(x: number, y: number, z: number): void;\n}\n\ndeclare var PannerNode: {\n    prototype: PannerNode;\n    new(context: BaseAudioContext, options?: PannerOptions): PannerNode;\n};\n\ninterface ParentNode extends Node {\n    readonly childElementCount: number;\n    /** Returns the child elements. */\n    readonly children: HTMLCollection;\n    /** Returns the first child that is an element, and null otherwise. */\n    readonly firstElementChild: Element | null;\n    /** Returns the last child that is an element, and null otherwise. */\n    readonly lastElementChild: Element | null;\n    /**\n     * Inserts nodes after the last child of node, while replacing strings in nodes with equivalent Text nodes.\n     *\n     * Throws a \"HierarchyRequestError\" DOMException if the constraints of the node tree are violated.\n     */\n    append(...nodes: (Node | string)[]): void;\n    /**\n     * Inserts nodes before the first child of node, while replacing strings in nodes with equivalent Text nodes.\n     *\n     * Throws a \"HierarchyRequestError\" DOMException if the constraints of the node tree are violated.\n     */\n    prepend(...nodes: (Node | string)[]): void;\n    /** Returns the first element that is a descendant of node that matches selectors. */\n    querySelector<K extends keyof HTMLElementTagNameMap>(selectors: K): HTMLElementTagNameMap[K] | null;\n    querySelector<K extends keyof SVGElementTagNameMap>(selectors: K): SVGElementTagNameMap[K] | null;\n    querySelector<K extends keyof MathMLElementTagNameMap>(selectors: K): MathMLElementTagNameMap[K] | null;\n    /** @deprecated */\n    querySelector<K extends keyof HTMLElementDeprecatedTagNameMap>(selectors: K): HTMLElementDeprecatedTagNameMap[K] | null;\n    querySelector<E extends Element = Element>(selectors: string): E | null;\n    /** Returns all element descendants of node that match selectors. */\n    querySelectorAll<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;\n    querySelectorAll<K extends keyof SVGElementTagNameMap>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;\n    querySelectorAll<K extends keyof MathMLElementTagNameMap>(selectors: K): NodeListOf<MathMLElementTagNameMap[K]>;\n    /** @deprecated */\n    querySelectorAll<K extends keyof HTMLElementDeprecatedTagNameMap>(selectors: K): NodeListOf<HTMLElementDeprecatedTagNameMap[K]>;\n    querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;\n    /**\n     * Replace all children of node with nodes, while replacing strings in nodes with equivalent Text nodes.\n     *\n     * Throws a \"HierarchyRequestError\" DOMException if the constraints of the node tree are violated.\n     */\n    replaceChildren(...nodes: (Node | string)[]): void;\n}\n\n/** This Canvas 2D API interface is used to declare a path that can then be used on a CanvasRenderingContext2D object. The path methods of the CanvasRenderingContext2D interface are also present on this interface, which gives you the convenience of being able to retain and replay your path whenever desired. */\ninterface Path2D extends CanvasPath {\n    /** Adds to the path the path given by the argument. */\n    addPath(path: Path2D, transform?: DOMMatrix2DInit): void;\n}\n\ndeclare var Path2D: {\n    prototype: Path2D;\n    new(path?: Path2D | string): Path2D;\n};\n\n/** Available only in secure contexts. */\ninterface PaymentMethodChangeEvent extends PaymentRequestUpdateEvent {\n    readonly methodDetails: any;\n    readonly methodName: string;\n}\n\ndeclare var PaymentMethodChangeEvent: {\n    prototype: PaymentMethodChangeEvent;\n    new(type: string, eventInitDict?: PaymentMethodChangeEventInit): PaymentMethodChangeEvent;\n};\n\ninterface PaymentRequestEventMap {\n    \"paymentmethodchange\": Event;\n}\n\n/**\n * This Payment Request API interface is the primary access point into the API, and lets web content and apps accept payments from the end user.\n * Available only in secure contexts.\n */\ninterface PaymentRequest extends EventTarget {\n    readonly id: string;\n    onpaymentmethodchange: ((this: PaymentRequest, ev: Event) => any) | null;\n    abort(): Promise<void>;\n    canMakePayment(): Promise<boolean>;\n    show(detailsPromise?: PaymentDetailsUpdate | PromiseLike<PaymentDetailsUpdate>): Promise<PaymentResponse>;\n    addEventListener<K extends keyof PaymentRequestEventMap>(type: K, listener: (this: PaymentRequest, ev: PaymentRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof PaymentRequestEventMap>(type: K, listener: (this: PaymentRequest, ev: PaymentRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var PaymentRequest: {\n    prototype: PaymentRequest;\n    new(methodData: PaymentMethodData[], details: PaymentDetailsInit): PaymentRequest;\n};\n\n/**\n * This Payment Request API interface enables a web page to update the details of a PaymentRequest in response to a user action.\n * Available only in secure contexts.\n */\ninterface PaymentRequestUpdateEvent extends Event {\n    updateWith(detailsPromise: PaymentDetailsUpdate | PromiseLike<PaymentDetailsUpdate>): void;\n}\n\ndeclare var PaymentRequestUpdateEvent: {\n    prototype: PaymentRequestUpdateEvent;\n    new(type: string, eventInitDict?: PaymentRequestUpdateEventInit): PaymentRequestUpdateEvent;\n};\n\n/**\n * This Payment Request API interface is returned after a user selects a payment method and approves a payment request.\n * Available only in secure contexts.\n */\ninterface PaymentResponse extends EventTarget {\n    readonly details: any;\n    readonly methodName: string;\n    readonly requestId: string;\n    complete(result?: PaymentComplete): Promise<void>;\n    retry(errorFields?: PaymentValidationErrors): Promise<void>;\n    toJSON(): any;\n}\n\ndeclare var PaymentResponse: {\n    prototype: PaymentResponse;\n    new(): PaymentResponse;\n};\n\ninterface PerformanceEventMap {\n    \"resourcetimingbufferfull\": Event;\n}\n\n/** Provides access to performance-related information for the current page. It's part of the High Resolution Time API, but is enhanced by the Performance Timeline API, the Navigation Timing API, the User Timing API, and the Resource Timing API. */\ninterface Performance extends EventTarget {\n    readonly eventCounts: EventCounts;\n    /** @deprecated */\n    readonly navigation: PerformanceNavigation;\n    onresourcetimingbufferfull: ((this: Performance, ev: Event) => any) | null;\n    readonly timeOrigin: DOMHighResTimeStamp;\n    /** @deprecated */\n    readonly timing: PerformanceTiming;\n    clearMarks(markName?: string): void;\n    clearMeasures(measureName?: string): void;\n    clearResourceTimings(): void;\n    getEntries(): PerformanceEntryList;\n    getEntriesByName(name: string, type?: string): PerformanceEntryList;\n    getEntriesByType(type: string): PerformanceEntryList;\n    mark(markName: string, markOptions?: PerformanceMarkOptions): PerformanceMark;\n    measure(measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string): PerformanceMeasure;\n    now(): DOMHighResTimeStamp;\n    setResourceTimingBufferSize(maxSize: number): void;\n    toJSON(): any;\n    addEventListener<K extends keyof PerformanceEventMap>(type: K, listener: (this: Performance, ev: PerformanceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof PerformanceEventMap>(type: K, listener: (this: Performance, ev: PerformanceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Performance: {\n    prototype: Performance;\n    new(): Performance;\n};\n\n/** Encapsulates a single performance metric that is part of the performance timeline. A performance entry can be directly created by making a performance mark or measure (for example by calling the mark() method) at an explicit point in an application. Performance entries are also created in indirect ways such as loading a resource (such as an image). */\ninterface PerformanceEntry {\n    readonly duration: DOMHighResTimeStamp;\n    readonly entryType: string;\n    readonly name: string;\n    readonly startTime: DOMHighResTimeStamp;\n    toJSON(): any;\n}\n\ndeclare var PerformanceEntry: {\n    prototype: PerformanceEntry;\n    new(): PerformanceEntry;\n};\n\ninterface PerformanceEventTiming extends PerformanceEntry {\n    readonly cancelable: boolean;\n    readonly processingEnd: DOMHighResTimeStamp;\n    readonly processingStart: DOMHighResTimeStamp;\n    readonly target: Node | null;\n    toJSON(): any;\n}\n\ndeclare var PerformanceEventTiming: {\n    prototype: PerformanceEventTiming;\n    new(): PerformanceEventTiming;\n};\n\n/** PerformanceMark\\xA0is an abstract interface for PerformanceEntry objects with an entryType of \"mark\". Entries of this type are created by calling performance.mark() to add a named DOMHighResTimeStamp (the mark) to the browser's performance timeline. */\ninterface PerformanceMark extends PerformanceEntry {\n    readonly detail: any;\n}\n\ndeclare var PerformanceMark: {\n    prototype: PerformanceMark;\n    new(markName: string, markOptions?: PerformanceMarkOptions): PerformanceMark;\n};\n\n/** PerformanceMeasure is an abstract interface for PerformanceEntry objects with an entryType of \"measure\". Entries of this type are created by calling performance.measure() to add a named DOMHighResTimeStamp (the measure) between two marks to the browser's performance timeline. */\ninterface PerformanceMeasure extends PerformanceEntry {\n    readonly detail: any;\n}\n\ndeclare var PerformanceMeasure: {\n    prototype: PerformanceMeasure;\n    new(): PerformanceMeasure;\n};\n\n/**\n * The legacy PerformanceNavigation interface represents information about how the navigation to the current document was done.\n * @deprecated This interface is deprecated in the Navigation Timing Level 2 specification. Please use the PerformanceNavigationTiming interface instead.\n */\ninterface PerformanceNavigation {\n    /** @deprecated */\n    readonly redirectCount: number;\n    /** @deprecated */\n    readonly type: number;\n    /** @deprecated */\n    toJSON(): any;\n    readonly TYPE_NAVIGATE: 0;\n    readonly TYPE_RELOAD: 1;\n    readonly TYPE_BACK_FORWARD: 2;\n    readonly TYPE_RESERVED: 255;\n}\n\n/** @deprecated */\ndeclare var PerformanceNavigation: {\n    prototype: PerformanceNavigation;\n    new(): PerformanceNavigation;\n    readonly TYPE_NAVIGATE: 0;\n    readonly TYPE_RELOAD: 1;\n    readonly TYPE_BACK_FORWARD: 2;\n    readonly TYPE_RESERVED: 255;\n};\n\n/** Provides methods and properties to store and retrieve metrics regarding the browser's document navigation events. For example, this interface can be used to determine how much time it takes to load or unload a document. */\ninterface PerformanceNavigationTiming extends PerformanceResourceTiming {\n    readonly domComplete: DOMHighResTimeStamp;\n    readonly domContentLoadedEventEnd: DOMHighResTimeStamp;\n    readonly domContentLoadedEventStart: DOMHighResTimeStamp;\n    readonly domInteractive: DOMHighResTimeStamp;\n    readonly loadEventEnd: DOMHighResTimeStamp;\n    readonly loadEventStart: DOMHighResTimeStamp;\n    readonly redirectCount: number;\n    readonly type: NavigationTimingType;\n    readonly unloadEventEnd: DOMHighResTimeStamp;\n    readonly unloadEventStart: DOMHighResTimeStamp;\n    toJSON(): any;\n}\n\ndeclare var PerformanceNavigationTiming: {\n    prototype: PerformanceNavigationTiming;\n    new(): PerformanceNavigationTiming;\n};\n\ninterface PerformanceObserver {\n    disconnect(): void;\n    observe(options?: PerformanceObserverInit): void;\n    takeRecords(): PerformanceEntryList;\n}\n\ndeclare var PerformanceObserver: {\n    prototype: PerformanceObserver;\n    new(callback: PerformanceObserverCallback): PerformanceObserver;\n    readonly supportedEntryTypes: ReadonlyArray<string>;\n};\n\ninterface PerformanceObserverEntryList {\n    getEntries(): PerformanceEntryList;\n    getEntriesByName(name: string, type?: string): PerformanceEntryList;\n    getEntriesByType(type: string): PerformanceEntryList;\n}\n\ndeclare var PerformanceObserverEntryList: {\n    prototype: PerformanceObserverEntryList;\n    new(): PerformanceObserverEntryList;\n};\n\ninterface PerformancePaintTiming extends PerformanceEntry {\n}\n\ndeclare var PerformancePaintTiming: {\n    prototype: PerformancePaintTiming;\n    new(): PerformancePaintTiming;\n};\n\n/** Enables retrieval and analysis of detailed network timing data regarding the loading of an application's resources. An application can use the timing metrics to determine, for example, the length of time it takes to fetch a specific resource, such as an XMLHttpRequest, <SVG>, image, or script. */\ninterface PerformanceResourceTiming extends PerformanceEntry {\n    readonly connectEnd: DOMHighResTimeStamp;\n    readonly connectStart: DOMHighResTimeStamp;\n    readonly decodedBodySize: number;\n    readonly domainLookupEnd: DOMHighResTimeStamp;\n    readonly domainLookupStart: DOMHighResTimeStamp;\n    readonly encodedBodySize: number;\n    readonly fetchStart: DOMHighResTimeStamp;\n    readonly initiatorType: string;\n    readonly nextHopProtocol: string;\n    readonly redirectEnd: DOMHighResTimeStamp;\n    readonly redirectStart: DOMHighResTimeStamp;\n    readonly requestStart: DOMHighResTimeStamp;\n    readonly responseEnd: DOMHighResTimeStamp;\n    readonly responseStart: DOMHighResTimeStamp;\n    readonly secureConnectionStart: DOMHighResTimeStamp;\n    readonly serverTiming: ReadonlyArray<PerformanceServerTiming>;\n    readonly transferSize: number;\n    readonly workerStart: DOMHighResTimeStamp;\n    toJSON(): any;\n}\n\ndeclare var PerformanceResourceTiming: {\n    prototype: PerformanceResourceTiming;\n    new(): PerformanceResourceTiming;\n};\n\ninterface PerformanceServerTiming {\n    readonly description: string;\n    readonly duration: DOMHighResTimeStamp;\n    readonly name: string;\n    toJSON(): any;\n}\n\ndeclare var PerformanceServerTiming: {\n    prototype: PerformanceServerTiming;\n    new(): PerformanceServerTiming;\n};\n\n/**\n * A legacy interface kept for backwards compatibility and contains properties that offer performance timing information for various events which occur during the loading and use of the current page. You get a PerformanceTiming object describing your page using the window.performance.timing property.\n * @deprecated This interface is deprecated in the Navigation Timing Level 2 specification. Please use the PerformanceNavigationTiming interface instead.\n */\ninterface PerformanceTiming {\n    /** @deprecated */\n    readonly connectEnd: number;\n    /** @deprecated */\n    readonly connectStart: number;\n    /** @deprecated */\n    readonly domComplete: number;\n    /** @deprecated */\n    readonly domContentLoadedEventEnd: number;\n    /** @deprecated */\n    readonly domContentLoadedEventStart: number;\n    /** @deprecated */\n    readonly domInteractive: number;\n    /** @deprecated */\n    readonly domLoading: number;\n    /** @deprecated */\n    readonly domainLookupEnd: number;\n    /** @deprecated */\n    readonly domainLookupStart: number;\n    /** @deprecated */\n    readonly fetchStart: number;\n    /** @deprecated */\n    readonly loadEventEnd: number;\n    /** @deprecated */\n    readonly loadEventStart: number;\n    /** @deprecated */\n    readonly navigationStart: number;\n    /** @deprecated */\n    readonly redirectEnd: number;\n    /** @deprecated */\n    readonly redirectStart: number;\n    /** @deprecated */\n    readonly requestStart: number;\n    /** @deprecated */\n    readonly responseEnd: number;\n    /** @deprecated */\n    readonly responseStart: number;\n    /** @deprecated */\n    readonly secureConnectionStart: number;\n    /** @deprecated */\n    readonly unloadEventEnd: number;\n    /** @deprecated */\n    readonly unloadEventStart: number;\n    /** @deprecated */\n    toJSON(): any;\n}\n\n/** @deprecated */\ndeclare var PerformanceTiming: {\n    prototype: PerformanceTiming;\n    new(): PerformanceTiming;\n};\n\n/** PeriodicWave has no inputs or outputs; it is used to define custom oscillators when calling OscillatorNode.setPeriodicWave(). The PeriodicWave itself is created/returned by AudioContext.createPeriodicWave(). */\ninterface PeriodicWave {\n}\n\ndeclare var PeriodicWave: {\n    prototype: PeriodicWave;\n    new(context: BaseAudioContext, options?: PeriodicWaveOptions): PeriodicWave;\n};\n\ninterface PermissionStatusEventMap {\n    \"change\": Event;\n}\n\ninterface PermissionStatus extends EventTarget {\n    readonly name: string;\n    onchange: ((this: PermissionStatus, ev: Event) => any) | null;\n    readonly state: PermissionState;\n    addEventListener<K extends keyof PermissionStatusEventMap>(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof PermissionStatusEventMap>(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var PermissionStatus: {\n    prototype: PermissionStatus;\n    new(): PermissionStatus;\n};\n\ninterface Permissions {\n    query(permissionDesc: PermissionDescriptor): Promise<PermissionStatus>;\n}\n\ndeclare var Permissions: {\n    prototype: Permissions;\n    new(): Permissions;\n};\n\ninterface PictureInPictureEvent extends Event {\n    readonly pictureInPictureWindow: PictureInPictureWindow;\n}\n\ndeclare var PictureInPictureEvent: {\n    prototype: PictureInPictureEvent;\n    new(type: string, eventInitDict: PictureInPictureEventInit): PictureInPictureEvent;\n};\n\ninterface PictureInPictureWindowEventMap {\n    \"resize\": Event;\n}\n\ninterface PictureInPictureWindow extends EventTarget {\n    readonly height: number;\n    onresize: ((this: PictureInPictureWindow, ev: Event) => any) | null;\n    readonly width: number;\n    addEventListener<K extends keyof PictureInPictureWindowEventMap>(type: K, listener: (this: PictureInPictureWindow, ev: PictureInPictureWindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof PictureInPictureWindowEventMap>(type: K, listener: (this: PictureInPictureWindow, ev: PictureInPictureWindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var PictureInPictureWindow: {\n    prototype: PictureInPictureWindow;\n    new(): PictureInPictureWindow;\n};\n\n/**\n * Provides information about a browser plugin.\n * @deprecated\n */\ninterface Plugin {\n    /**\n     * Returns the plugin's description.\n     * @deprecated\n     */\n    readonly description: string;\n    /**\n     * Returns the plugin library's filename, if applicable on the current platform.\n     * @deprecated\n     */\n    readonly filename: string;\n    /**\n     * Returns the number of MIME types, represented by MimeType objects, supported by the plugin.\n     * @deprecated\n     */\n    readonly length: number;\n    /**\n     * Returns the plugin's name.\n     * @deprecated\n     */\n    readonly name: string;\n    /**\n     * Returns the specified MimeType object.\n     * @deprecated\n     */\n    item(index: number): MimeType | null;\n    /** @deprecated */\n    namedItem(name: string): MimeType | null;\n    [index: number]: MimeType;\n}\n\n/** @deprecated */\ndeclare var Plugin: {\n    prototype: Plugin;\n    new(): Plugin;\n};\n\n/**\n * Used to store a list of Plugin objects describing the available plugins; it's returned by the window.navigator.plugins\\xA0property. The PluginArray is not a JavaScript array, but has the length property and supports accessing individual items using bracket notation (plugins[2]), as well as via item(index) and namedItem(\"name\") methods.\n * @deprecated\n */\ninterface PluginArray {\n    /** @deprecated */\n    readonly length: number;\n    /** @deprecated */\n    item(index: number): Plugin | null;\n    /** @deprecated */\n    namedItem(name: string): Plugin | null;\n    /** @deprecated */\n    refresh(): void;\n    [index: number]: Plugin;\n}\n\n/** @deprecated */\ndeclare var PluginArray: {\n    prototype: PluginArray;\n    new(): PluginArray;\n};\n\n/** The state of a DOM event produced by a pointer such as the geometry of the contact point, the device type that generated the event, the amount of pressure that was applied on the contact surface, etc. */\ninterface PointerEvent extends MouseEvent {\n    readonly height: number;\n    readonly isPrimary: boolean;\n    readonly pointerId: number;\n    readonly pointerType: string;\n    readonly pressure: number;\n    readonly tangentialPressure: number;\n    readonly tiltX: number;\n    readonly tiltY: number;\n    readonly twist: number;\n    readonly width: number;\n    /** Available only in secure contexts. */\n    getCoalescedEvents(): PointerEvent[];\n    getPredictedEvents(): PointerEvent[];\n}\n\ndeclare var PointerEvent: {\n    prototype: PointerEvent;\n    new(type: string, eventInitDict?: PointerEventInit): PointerEvent;\n};\n\n/** PopStateEvent is an event handler for the popstate event on the window. */\ninterface PopStateEvent extends Event {\n    /** Returns a copy of the information that was provided to pushState() or replaceState(). */\n    readonly state: any;\n}\n\ndeclare var PopStateEvent: {\n    prototype: PopStateEvent;\n    new(type: string, eventInitDict?: PopStateEventInit): PopStateEvent;\n};\n\n/** A processing instruction embeds application-specific instructions in XML which can be ignored by other applications that don't recognize them. */\ninterface ProcessingInstruction extends CharacterData, LinkStyle {\n    readonly ownerDocument: Document;\n    readonly target: string;\n}\n\ndeclare var ProcessingInstruction: {\n    prototype: ProcessingInstruction;\n    new(): ProcessingInstruction;\n};\n\n/** Events measuring progress of an underlying process, like an HTTP request (for an XMLHttpRequest, or the loading of the underlying resource of an <img>, <audio>, <video>, <style> or <link>). */\ninterface ProgressEvent<T extends EventTarget = EventTarget> extends Event {\n    readonly lengthComputable: boolean;\n    readonly loaded: number;\n    readonly target: T | null;\n    readonly total: number;\n}\n\ndeclare var ProgressEvent: {\n    prototype: ProgressEvent;\n    new(type: string, eventInitDict?: ProgressEventInit): ProgressEvent;\n};\n\ninterface PromiseRejectionEvent extends Event {\n    readonly promise: Promise<any>;\n    readonly reason: any;\n}\n\ndeclare var PromiseRejectionEvent: {\n    prototype: PromiseRejectionEvent;\n    new(type: string, eventInitDict: PromiseRejectionEventInit): PromiseRejectionEvent;\n};\n\n/** Available only in secure contexts. */\ninterface PublicKeyCredential extends Credential {\n    readonly authenticatorAttachment: string | null;\n    readonly rawId: ArrayBuffer;\n    readonly response: AuthenticatorResponse;\n    getClientExtensionResults(): AuthenticationExtensionsClientOutputs;\n}\n\ndeclare var PublicKeyCredential: {\n    prototype: PublicKeyCredential;\n    new(): PublicKeyCredential;\n    isConditionalMediationAvailable(): Promise<boolean>;\n    isUserVerifyingPlatformAuthenticatorAvailable(): Promise<boolean>;\n};\n\n/**\n * This Push API interface provides a way to receive notifications from third-party servers as well as request URLs for push notifications.\n * Available only in secure contexts.\n */\ninterface PushManager {\n    getSubscription(): Promise<PushSubscription | null>;\n    permissionState(options?: PushSubscriptionOptionsInit): Promise<PermissionState>;\n    subscribe(options?: PushSubscriptionOptionsInit): Promise<PushSubscription>;\n}\n\ndeclare var PushManager: {\n    prototype: PushManager;\n    new(): PushManager;\n    readonly supportedContentEncodings: ReadonlyArray<string>;\n};\n\n/**\n * This Push API interface provides a subcription's URL endpoint and allows unsubscription from a push service.\n * Available only in secure contexts.\n */\ninterface PushSubscription {\n    readonly endpoint: string;\n    readonly expirationTime: EpochTimeStamp | null;\n    readonly options: PushSubscriptionOptions;\n    getKey(name: PushEncryptionKeyName): ArrayBuffer | null;\n    toJSON(): PushSubscriptionJSON;\n    unsubscribe(): Promise<boolean>;\n}\n\ndeclare var PushSubscription: {\n    prototype: PushSubscription;\n    new(): PushSubscription;\n};\n\n/** Available only in secure contexts. */\ninterface PushSubscriptionOptions {\n    readonly applicationServerKey: ArrayBuffer | null;\n    readonly userVisibleOnly: boolean;\n}\n\ndeclare var PushSubscriptionOptions: {\n    prototype: PushSubscriptionOptions;\n    new(): PushSubscriptionOptions;\n};\n\ninterface RTCCertificate {\n    readonly expires: EpochTimeStamp;\n    getFingerprints(): RTCDtlsFingerprint[];\n}\n\ndeclare var RTCCertificate: {\n    prototype: RTCCertificate;\n    new(): RTCCertificate;\n};\n\ninterface RTCDTMFSenderEventMap {\n    \"tonechange\": RTCDTMFToneChangeEvent;\n}\n\ninterface RTCDTMFSender extends EventTarget {\n    readonly canInsertDTMF: boolean;\n    ontonechange: ((this: RTCDTMFSender, ev: RTCDTMFToneChangeEvent) => any) | null;\n    readonly toneBuffer: string;\n    insertDTMF(tones: string, duration?: number, interToneGap?: number): void;\n    addEventListener<K extends keyof RTCDTMFSenderEventMap>(type: K, listener: (this: RTCDTMFSender, ev: RTCDTMFSenderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof RTCDTMFSenderEventMap>(type: K, listener: (this: RTCDTMFSender, ev: RTCDTMFSenderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var RTCDTMFSender: {\n    prototype: RTCDTMFSender;\n    new(): RTCDTMFSender;\n};\n\n/** Events sent to indicate that DTMF tones have started or finished playing. This interface is used by the tonechange event. */\ninterface RTCDTMFToneChangeEvent extends Event {\n    readonly tone: string;\n}\n\ndeclare var RTCDTMFToneChangeEvent: {\n    prototype: RTCDTMFToneChangeEvent;\n    new(type: string, eventInitDict?: RTCDTMFToneChangeEventInit): RTCDTMFToneChangeEvent;\n};\n\ninterface RTCDataChannelEventMap {\n    \"bufferedamountlow\": Event;\n    \"close\": Event;\n    \"closing\": Event;\n    \"error\": Event;\n    \"message\": MessageEvent;\n    \"open\": Event;\n}\n\ninterface RTCDataChannel extends EventTarget {\n    binaryType: BinaryType;\n    readonly bufferedAmount: number;\n    bufferedAmountLowThreshold: number;\n    readonly id: number | null;\n    readonly label: string;\n    readonly maxPacketLifeTime: number | null;\n    readonly maxRetransmits: number | null;\n    readonly negotiated: boolean;\n    onbufferedamountlow: ((this: RTCDataChannel, ev: Event) => any) | null;\n    onclose: ((this: RTCDataChannel, ev: Event) => any) | null;\n    onclosing: ((this: RTCDataChannel, ev: Event) => any) | null;\n    onerror: ((this: RTCDataChannel, ev: Event) => any) | null;\n    onmessage: ((this: RTCDataChannel, ev: MessageEvent) => any) | null;\n    onopen: ((this: RTCDataChannel, ev: Event) => any) | null;\n    readonly ordered: boolean;\n    readonly protocol: string;\n    readonly readyState: RTCDataChannelState;\n    close(): void;\n    send(data: string): void;\n    send(data: Blob): void;\n    send(data: ArrayBuffer): void;\n    send(data: ArrayBufferView): void;\n    addEventListener<K extends keyof RTCDataChannelEventMap>(type: K, listener: (this: RTCDataChannel, ev: RTCDataChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof RTCDataChannelEventMap>(type: K, listener: (this: RTCDataChannel, ev: RTCDataChannelEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var RTCDataChannel: {\n    prototype: RTCDataChannel;\n    new(): RTCDataChannel;\n};\n\ninterface RTCDataChannelEvent extends Event {\n    readonly channel: RTCDataChannel;\n}\n\ndeclare var RTCDataChannelEvent: {\n    prototype: RTCDataChannelEvent;\n    new(type: string, eventInitDict: RTCDataChannelEventInit): RTCDataChannelEvent;\n};\n\ninterface RTCDtlsTransportEventMap {\n    \"error\": Event;\n    \"statechange\": Event;\n}\n\ninterface RTCDtlsTransport extends EventTarget {\n    readonly iceTransport: RTCIceTransport;\n    onerror: ((this: RTCDtlsTransport, ev: Event) => any) | null;\n    onstatechange: ((this: RTCDtlsTransport, ev: Event) => any) | null;\n    readonly state: RTCDtlsTransportState;\n    getRemoteCertificates(): ArrayBuffer[];\n    addEventListener<K extends keyof RTCDtlsTransportEventMap>(type: K, listener: (this: RTCDtlsTransport, ev: RTCDtlsTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof RTCDtlsTransportEventMap>(type: K, listener: (this: RTCDtlsTransport, ev: RTCDtlsTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var RTCDtlsTransport: {\n    prototype: RTCDtlsTransport;\n    new(): RTCDtlsTransport;\n};\n\ninterface RTCEncodedAudioFrame {\n    data: ArrayBuffer;\n    readonly timestamp: number;\n    getMetadata(): RTCEncodedAudioFrameMetadata;\n}\n\ndeclare var RTCEncodedAudioFrame: {\n    prototype: RTCEncodedAudioFrame;\n    new(): RTCEncodedAudioFrame;\n};\n\ninterface RTCEncodedVideoFrame {\n    data: ArrayBuffer;\n    readonly timestamp: number;\n    readonly type: RTCEncodedVideoFrameType;\n    getMetadata(): RTCEncodedVideoFrameMetadata;\n}\n\ndeclare var RTCEncodedVideoFrame: {\n    prototype: RTCEncodedVideoFrame;\n    new(): RTCEncodedVideoFrame;\n};\n\ninterface RTCError extends DOMException {\n    readonly errorDetail: RTCErrorDetailType;\n    readonly receivedAlert: number | null;\n    readonly sctpCauseCode: number | null;\n    readonly sdpLineNumber: number | null;\n    readonly sentAlert: number | null;\n}\n\ndeclare var RTCError: {\n    prototype: RTCError;\n    new(init: RTCErrorInit, message?: string): RTCError;\n};\n\ninterface RTCErrorEvent extends Event {\n    readonly error: RTCError;\n}\n\ndeclare var RTCErrorEvent: {\n    prototype: RTCErrorEvent;\n    new(type: string, eventInitDict: RTCErrorEventInit): RTCErrorEvent;\n};\n\n/** The RTCIceCandidate interface\\u2014part of the WebRTC API\\u2014represents a candidate Internet Connectivity Establishment (ICE) configuration which may be used to establish an RTCPeerConnection. */\ninterface RTCIceCandidate {\n    readonly address: string | null;\n    readonly candidate: string;\n    readonly component: RTCIceComponent | null;\n    readonly foundation: string | null;\n    readonly port: number | null;\n    readonly priority: number | null;\n    readonly protocol: RTCIceProtocol | null;\n    readonly relatedAddress: string | null;\n    readonly relatedPort: number | null;\n    readonly sdpMLineIndex: number | null;\n    readonly sdpMid: string | null;\n    readonly tcpType: RTCIceTcpCandidateType | null;\n    readonly type: RTCIceCandidateType | null;\n    readonly usernameFragment: string | null;\n    toJSON(): RTCIceCandidateInit;\n}\n\ndeclare var RTCIceCandidate: {\n    prototype: RTCIceCandidate;\n    new(candidateInitDict?: RTCIceCandidateInit): RTCIceCandidate;\n};\n\ninterface RTCIceTransportEventMap {\n    \"gatheringstatechange\": Event;\n    \"statechange\": Event;\n}\n\n/** Provides access to information about the ICE transport layer over which the data is being sent and received. */\ninterface RTCIceTransport extends EventTarget {\n    readonly gatheringState: RTCIceGathererState;\n    ongatheringstatechange: ((this: RTCIceTransport, ev: Event) => any) | null;\n    onstatechange: ((this: RTCIceTransport, ev: Event) => any) | null;\n    readonly state: RTCIceTransportState;\n    addEventListener<K extends keyof RTCIceTransportEventMap>(type: K, listener: (this: RTCIceTransport, ev: RTCIceTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof RTCIceTransportEventMap>(type: K, listener: (this: RTCIceTransport, ev: RTCIceTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var RTCIceTransport: {\n    prototype: RTCIceTransport;\n    new(): RTCIceTransport;\n};\n\ninterface RTCPeerConnectionEventMap {\n    \"connectionstatechange\": Event;\n    \"datachannel\": RTCDataChannelEvent;\n    \"icecandidate\": RTCPeerConnectionIceEvent;\n    \"icecandidateerror\": Event;\n    \"iceconnectionstatechange\": Event;\n    \"icegatheringstatechange\": Event;\n    \"negotiationneeded\": Event;\n    \"signalingstatechange\": Event;\n    \"track\": RTCTrackEvent;\n}\n\n/** A WebRTC connection between the local computer and a remote peer. It provides methods to connect to a remote peer, maintain and monitor the connection, and close the connection once it's no longer needed. */\ninterface RTCPeerConnection extends EventTarget {\n    readonly canTrickleIceCandidates: boolean | null;\n    readonly connectionState: RTCPeerConnectionState;\n    readonly currentLocalDescription: RTCSessionDescription | null;\n    readonly currentRemoteDescription: RTCSessionDescription | null;\n    readonly iceConnectionState: RTCIceConnectionState;\n    readonly iceGatheringState: RTCIceGatheringState;\n    readonly localDescription: RTCSessionDescription | null;\n    onconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;\n    ondatachannel: ((this: RTCPeerConnection, ev: RTCDataChannelEvent) => any) | null;\n    onicecandidate: ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => any) | null;\n    onicecandidateerror: ((this: RTCPeerConnection, ev: Event) => any) | null;\n    oniceconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;\n    onicegatheringstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;\n    onnegotiationneeded: ((this: RTCPeerConnection, ev: Event) => any) | null;\n    onsignalingstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;\n    ontrack: ((this: RTCPeerConnection, ev: RTCTrackEvent) => any) | null;\n    readonly pendingLocalDescription: RTCSessionDescription | null;\n    readonly pendingRemoteDescription: RTCSessionDescription | null;\n    readonly remoteDescription: RTCSessionDescription | null;\n    readonly sctp: RTCSctpTransport | null;\n    readonly signalingState: RTCSignalingState;\n    addIceCandidate(candidate?: RTCIceCandidateInit): Promise<void>;\n    /** @deprecated */\n    addIceCandidate(candidate: RTCIceCandidateInit, successCallback: VoidFunction, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;\n    addTrack(track: MediaStreamTrack, ...streams: MediaStream[]): RTCRtpSender;\n    addTransceiver(trackOrKind: MediaStreamTrack | string, init?: RTCRtpTransceiverInit): RTCRtpTransceiver;\n    close(): void;\n    createAnswer(options?: RTCAnswerOptions): Promise<RTCSessionDescriptionInit>;\n    /** @deprecated */\n    createAnswer(successCallback: RTCSessionDescriptionCallback, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;\n    createDataChannel(label: string, dataChannelDict?: RTCDataChannelInit): RTCDataChannel;\n    createOffer(options?: RTCOfferOptions): Promise<RTCSessionDescriptionInit>;\n    /** @deprecated */\n    createOffer(successCallback: RTCSessionDescriptionCallback, failureCallback: RTCPeerConnectionErrorCallback, options?: RTCOfferOptions): Promise<void>;\n    getConfiguration(): RTCConfiguration;\n    getReceivers(): RTCRtpReceiver[];\n    getSenders(): RTCRtpSender[];\n    getStats(selector?: MediaStreamTrack | null): Promise<RTCStatsReport>;\n    getTransceivers(): RTCRtpTransceiver[];\n    removeTrack(sender: RTCRtpSender): void;\n    restartIce(): void;\n    setConfiguration(configuration?: RTCConfiguration): void;\n    setLocalDescription(description?: RTCLocalSessionDescriptionInit): Promise<void>;\n    /** @deprecated */\n    setLocalDescription(description: RTCLocalSessionDescriptionInit, successCallback: VoidFunction, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;\n    setRemoteDescription(description: RTCSessionDescriptionInit): Promise<void>;\n    /** @deprecated */\n    setRemoteDescription(description: RTCSessionDescriptionInit, successCallback: VoidFunction, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;\n    addEventListener<K extends keyof RTCPeerConnectionEventMap>(type: K, listener: (this: RTCPeerConnection, ev: RTCPeerConnectionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof RTCPeerConnectionEventMap>(type: K, listener: (this: RTCPeerConnection, ev: RTCPeerConnectionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var RTCPeerConnection: {\n    prototype: RTCPeerConnection;\n    new(configuration?: RTCConfiguration): RTCPeerConnection;\n    generateCertificate(keygenAlgorithm: AlgorithmIdentifier): Promise<RTCCertificate>;\n};\n\ninterface RTCPeerConnectionIceErrorEvent extends Event {\n    readonly address: string | null;\n    readonly errorCode: number;\n    readonly errorText: string;\n    readonly port: number | null;\n    readonly url: string;\n}\n\ndeclare var RTCPeerConnectionIceErrorEvent: {\n    prototype: RTCPeerConnectionIceErrorEvent;\n    new(type: string, eventInitDict: RTCPeerConnectionIceErrorEventInit): RTCPeerConnectionIceErrorEvent;\n};\n\n/** Events that occurs in relation to ICE candidates with the target, usually an RTCPeerConnection. Only one event is of this type: icecandidate. */\ninterface RTCPeerConnectionIceEvent extends Event {\n    readonly candidate: RTCIceCandidate | null;\n}\n\ndeclare var RTCPeerConnectionIceEvent: {\n    prototype: RTCPeerConnectionIceEvent;\n    new(type: string, eventInitDict?: RTCPeerConnectionIceEventInit): RTCPeerConnectionIceEvent;\n};\n\n/** This WebRTC API interface manages the reception and decoding of data for a\\xA0MediaStreamTrack on an\\xA0RTCPeerConnection. */\ninterface RTCRtpReceiver {\n    readonly track: MediaStreamTrack;\n    readonly transport: RTCDtlsTransport | null;\n    getContributingSources(): RTCRtpContributingSource[];\n    getParameters(): RTCRtpReceiveParameters;\n    getStats(): Promise<RTCStatsReport>;\n    getSynchronizationSources(): RTCRtpSynchronizationSource[];\n}\n\ndeclare var RTCRtpReceiver: {\n    prototype: RTCRtpReceiver;\n    new(): RTCRtpReceiver;\n    getCapabilities(kind: string): RTCRtpCapabilities | null;\n};\n\n/** Provides the ability to control and obtain details about how a particular MediaStreamTrack is encoded and sent to a remote peer. */\ninterface RTCRtpSender {\n    readonly dtmf: RTCDTMFSender | null;\n    readonly track: MediaStreamTrack | null;\n    readonly transport: RTCDtlsTransport | null;\n    getParameters(): RTCRtpSendParameters;\n    getStats(): Promise<RTCStatsReport>;\n    replaceTrack(withTrack: MediaStreamTrack | null): Promise<void>;\n    setParameters(parameters: RTCRtpSendParameters): Promise<void>;\n    setStreams(...streams: MediaStream[]): void;\n}\n\ndeclare var RTCRtpSender: {\n    prototype: RTCRtpSender;\n    new(): RTCRtpSender;\n    getCapabilities(kind: string): RTCRtpCapabilities | null;\n};\n\ninterface RTCRtpTransceiver {\n    readonly currentDirection: RTCRtpTransceiverDirection | null;\n    direction: RTCRtpTransceiverDirection;\n    readonly mid: string | null;\n    readonly receiver: RTCRtpReceiver;\n    readonly sender: RTCRtpSender;\n    setCodecPreferences(codecs: RTCRtpCodecCapability[]): void;\n    stop(): void;\n}\n\ndeclare var RTCRtpTransceiver: {\n    prototype: RTCRtpTransceiver;\n    new(): RTCRtpTransceiver;\n};\n\ninterface RTCSctpTransportEventMap {\n    \"statechange\": Event;\n}\n\ninterface RTCSctpTransport extends EventTarget {\n    readonly maxChannels: number | null;\n    readonly maxMessageSize: number;\n    onstatechange: ((this: RTCSctpTransport, ev: Event) => any) | null;\n    readonly state: RTCSctpTransportState;\n    readonly transport: RTCDtlsTransport;\n    addEventListener<K extends keyof RTCSctpTransportEventMap>(type: K, listener: (this: RTCSctpTransport, ev: RTCSctpTransportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof RTCSctpTransportEventMap>(type: K, listener: (this: RTCSctpTransport, ev: RTCSctpTransportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var RTCSctpTransport: {\n    prototype: RTCSctpTransport;\n    new(): RTCSctpTransport;\n};\n\n/** One end of a connection\\u2014or potential connection\\u2014and how it's configured. Each RTCSessionDescription consists of a description type indicating which part of the offer/answer negotiation process it describes and of the SDP descriptor of the session. */\ninterface RTCSessionDescription {\n    readonly sdp: string;\n    readonly type: RTCSdpType;\n    toJSON(): any;\n}\n\ndeclare var RTCSessionDescription: {\n    prototype: RTCSessionDescription;\n    new(descriptionInitDict: RTCSessionDescriptionInit): RTCSessionDescription;\n};\n\ninterface RTCStatsReport {\n    forEach(callbackfn: (value: any, key: string, parent: RTCStatsReport) => void, thisArg?: any): void;\n}\n\ndeclare var RTCStatsReport: {\n    prototype: RTCStatsReport;\n    new(): RTCStatsReport;\n};\n\ninterface RTCTrackEvent extends Event {\n    readonly receiver: RTCRtpReceiver;\n    readonly streams: ReadonlyArray<MediaStream>;\n    readonly track: MediaStreamTrack;\n    readonly transceiver: RTCRtpTransceiver;\n}\n\ndeclare var RTCTrackEvent: {\n    prototype: RTCTrackEvent;\n    new(type: string, eventInitDict: RTCTrackEventInit): RTCTrackEvent;\n};\n\ninterface RadioNodeList extends NodeList {\n    value: string;\n}\n\ndeclare var RadioNodeList: {\n    prototype: RadioNodeList;\n    new(): RadioNodeList;\n};\n\n/** A fragment of a document that can contain nodes and parts of text nodes. */\ninterface Range extends AbstractRange {\n    /** Returns the node, furthest away from the document, that is an ancestor of both range's start node and end node. */\n    readonly commonAncestorContainer: Node;\n    cloneContents(): DocumentFragment;\n    cloneRange(): Range;\n    collapse(toStart?: boolean): void;\n    compareBoundaryPoints(how: number, sourceRange: Range): number;\n    /** Returns \\u22121 if the point is before the range, 0 if the point is in the range, and 1 if the point is after the range. */\n    comparePoint(node: Node, offset: number): number;\n    createContextualFragment(fragment: string): DocumentFragment;\n    deleteContents(): void;\n    detach(): void;\n    extractContents(): DocumentFragment;\n    getBoundingClientRect(): DOMRect;\n    getClientRects(): DOMRectList;\n    insertNode(node: Node): void;\n    /** Returns whether range intersects node. */\n    intersectsNode(node: Node): boolean;\n    isPointInRange(node: Node, offset: number): boolean;\n    selectNode(node: Node): void;\n    selectNodeContents(node: Node): void;\n    setEnd(node: Node, offset: number): void;\n    setEndAfter(node: Node): void;\n    setEndBefore(node: Node): void;\n    setStart(node: Node, offset: number): void;\n    setStartAfter(node: Node): void;\n    setStartBefore(node: Node): void;\n    surroundContents(newParent: Node): void;\n    toString(): string;\n    readonly START_TO_START: 0;\n    readonly START_TO_END: 1;\n    readonly END_TO_END: 2;\n    readonly END_TO_START: 3;\n}\n\ndeclare var Range: {\n    prototype: Range;\n    new(): Range;\n    readonly START_TO_START: 0;\n    readonly START_TO_END: 1;\n    readonly END_TO_END: 2;\n    readonly END_TO_START: 3;\n    toString(): string;\n};\n\ninterface ReadableByteStreamController {\n    readonly byobRequest: ReadableStreamBYOBRequest | null;\n    readonly desiredSize: number | null;\n    close(): void;\n    enqueue(chunk: ArrayBufferView): void;\n    error(e?: any): void;\n}\n\ndeclare var ReadableByteStreamController: {\n    prototype: ReadableByteStreamController;\n    new(): ReadableByteStreamController;\n};\n\n/** This Streams API interface represents a readable stream of byte data. The Fetch API offers a concrete instance of a ReadableStream through the body property of a Response object. */\ninterface ReadableStream<R = any> {\n    readonly locked: boolean;\n    cancel(reason?: any): Promise<void>;\n    getReader(options: { mode: \"byob\" }): ReadableStreamBYOBReader;\n    getReader(): ReadableStreamDefaultReader<R>;\n    getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader<R>;\n    pipeThrough<T>(transform: ReadableWritablePair<T, R>, options?: StreamPipeOptions): ReadableStream<T>;\n    pipeTo(destination: WritableStream<R>, options?: StreamPipeOptions): Promise<void>;\n    tee(): [ReadableStream<R>, ReadableStream<R>];\n}\n\ndeclare var ReadableStream: {\n    prototype: ReadableStream;\n    new(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number }): ReadableStream<Uint8Array>;\n    new<R = any>(underlyingSource: UnderlyingDefaultSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;\n    new<R = any>(underlyingSource?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;\n};\n\ninterface ReadableStreamBYOBReader extends ReadableStreamGenericReader {\n    read<T extends ArrayBufferView>(view: T): Promise<ReadableStreamReadResult<T>>;\n    releaseLock(): void;\n}\n\ndeclare var ReadableStreamBYOBReader: {\n    prototype: ReadableStreamBYOBReader;\n    new(stream: ReadableStream): ReadableStreamBYOBReader;\n};\n\ninterface ReadableStreamBYOBRequest {\n    readonly view: ArrayBufferView | null;\n    respond(bytesWritten: number): void;\n    respondWithNewView(view: ArrayBufferView): void;\n}\n\ndeclare var ReadableStreamBYOBRequest: {\n    prototype: ReadableStreamBYOBRequest;\n    new(): ReadableStreamBYOBRequest;\n};\n\ninterface ReadableStreamDefaultController<R = any> {\n    readonly desiredSize: number | null;\n    close(): void;\n    enqueue(chunk?: R): void;\n    error(e?: any): void;\n}\n\ndeclare var ReadableStreamDefaultController: {\n    prototype: ReadableStreamDefaultController;\n    new(): ReadableStreamDefaultController;\n};\n\ninterface ReadableStreamDefaultReader<R = any> extends ReadableStreamGenericReader {\n    read(): Promise<ReadableStreamReadResult<R>>;\n    releaseLock(): void;\n}\n\ndeclare var ReadableStreamDefaultReader: {\n    prototype: ReadableStreamDefaultReader;\n    new<R = any>(stream: ReadableStream<R>): ReadableStreamDefaultReader<R>;\n};\n\ninterface ReadableStreamGenericReader {\n    readonly closed: Promise<undefined>;\n    cancel(reason?: any): Promise<void>;\n}\n\ninterface RemotePlaybackEventMap {\n    \"connect\": Event;\n    \"connecting\": Event;\n    \"disconnect\": Event;\n}\n\ninterface RemotePlayback extends EventTarget {\n    onconnect: ((this: RemotePlayback, ev: Event) => any) | null;\n    onconnecting: ((this: RemotePlayback, ev: Event) => any) | null;\n    ondisconnect: ((this: RemotePlayback, ev: Event) => any) | null;\n    readonly state: RemotePlaybackState;\n    cancelWatchAvailability(id?: number): Promise<void>;\n    prompt(): Promise<void>;\n    watchAvailability(callback: RemotePlaybackAvailabilityCallback): Promise<number>;\n    addEventListener<K extends keyof RemotePlaybackEventMap>(type: K, listener: (this: RemotePlayback, ev: RemotePlaybackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof RemotePlaybackEventMap>(type: K, listener: (this: RemotePlayback, ev: RemotePlaybackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var RemotePlayback: {\n    prototype: RemotePlayback;\n    new(): RemotePlayback;\n};\n\n/** This Fetch API interface represents a resource request. */\ninterface Request extends Body {\n    /** Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. */\n    readonly cache: RequestCache;\n    /** Returns the credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. */\n    readonly credentials: RequestCredentials;\n    /** Returns the kind of resource requested by request, e.g., \"document\" or \"script\". */\n    readonly destination: RequestDestination;\n    /** Returns a Headers object consisting of the headers associated with request. Note that headers added in the network layer by the user agent will not be accounted for in this object, e.g., the \"Host\" header. */\n    readonly headers: Headers;\n    /** Returns request's subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. [SRI] */\n    readonly integrity: string;\n    /** Returns a boolean indicating whether or not request can outlive the global in which it was created. */\n    readonly keepalive: boolean;\n    /** Returns request's HTTP method, which is \"GET\" by default. */\n    readonly method: string;\n    /** Returns the mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. */\n    readonly mode: RequestMode;\n    /** Returns the redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. */\n    readonly redirect: RequestRedirect;\n    /** Returns the referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and \"about:client\" when defaulting to the global's default. This is used during fetching to determine the value of the \\`Referer\\` header of the request being made. */\n    readonly referrer: string;\n    /** Returns the referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. */\n    readonly referrerPolicy: ReferrerPolicy;\n    /** Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. */\n    readonly signal: AbortSignal;\n    /** Returns the URL of request as a string. */\n    readonly url: string;\n    clone(): Request;\n}\n\ndeclare var Request: {\n    prototype: Request;\n    new(input: RequestInfo | URL, init?: RequestInit): Request;\n};\n\ninterface ResizeObserver {\n    disconnect(): void;\n    observe(target: Element, options?: ResizeObserverOptions): void;\n    unobserve(target: Element): void;\n}\n\ndeclare var ResizeObserver: {\n    prototype: ResizeObserver;\n    new(callback: ResizeObserverCallback): ResizeObserver;\n};\n\ninterface ResizeObserverEntry {\n    readonly borderBoxSize: ReadonlyArray<ResizeObserverSize>;\n    readonly contentBoxSize: ReadonlyArray<ResizeObserverSize>;\n    readonly contentRect: DOMRectReadOnly;\n    readonly devicePixelContentBoxSize: ReadonlyArray<ResizeObserverSize>;\n    readonly target: Element;\n}\n\ndeclare var ResizeObserverEntry: {\n    prototype: ResizeObserverEntry;\n    new(): ResizeObserverEntry;\n};\n\ninterface ResizeObserverSize {\n    readonly blockSize: number;\n    readonly inlineSize: number;\n}\n\ndeclare var ResizeObserverSize: {\n    prototype: ResizeObserverSize;\n    new(): ResizeObserverSize;\n};\n\n/** This Fetch API interface represents the response to a request. */\ninterface Response extends Body {\n    readonly headers: Headers;\n    readonly ok: boolean;\n    readonly redirected: boolean;\n    readonly status: number;\n    readonly statusText: string;\n    readonly type: ResponseType;\n    readonly url: string;\n    clone(): Response;\n}\n\ndeclare var Response: {\n    prototype: Response;\n    new(body?: BodyInit | null, init?: ResponseInit): Response;\n    error(): Response;\n    redirect(url: string | URL, status?: number): Response;\n};\n\n/** Provides access to the properties of <a> element, as well as methods to manipulate them. */\ninterface SVGAElement extends SVGGraphicsElement, SVGURIReference {\n    rel: string;\n    readonly relList: DOMTokenList;\n    readonly target: SVGAnimatedString;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGAElement: {\n    prototype: SVGAElement;\n    new(): SVGAElement;\n};\n\n/** Used to represent a value that can be an <angle> or <number> value. An SVGAngle reflected through the animVal attribute is always read only. */\ninterface SVGAngle {\n    readonly unitType: number;\n    value: number;\n    valueAsString: string;\n    valueInSpecifiedUnits: number;\n    convertToSpecifiedUnits(unitType: number): void;\n    newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void;\n    readonly SVG_ANGLETYPE_UNKNOWN: 0;\n    readonly SVG_ANGLETYPE_UNSPECIFIED: 1;\n    readonly SVG_ANGLETYPE_DEG: 2;\n    readonly SVG_ANGLETYPE_RAD: 3;\n    readonly SVG_ANGLETYPE_GRAD: 4;\n}\n\ndeclare var SVGAngle: {\n    prototype: SVGAngle;\n    new(): SVGAngle;\n    readonly SVG_ANGLETYPE_UNKNOWN: 0;\n    readonly SVG_ANGLETYPE_UNSPECIFIED: 1;\n    readonly SVG_ANGLETYPE_DEG: 2;\n    readonly SVG_ANGLETYPE_RAD: 3;\n    readonly SVG_ANGLETYPE_GRAD: 4;\n};\n\ninterface SVGAnimateElement extends SVGAnimationElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGAnimateElement: {\n    prototype: SVGAnimateElement;\n    new(): SVGAnimateElement;\n};\n\ninterface SVGAnimateMotionElement extends SVGAnimationElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateMotionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateMotionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGAnimateMotionElement: {\n    prototype: SVGAnimateMotionElement;\n    new(): SVGAnimateMotionElement;\n};\n\ninterface SVGAnimateTransformElement extends SVGAnimationElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateTransformElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimateTransformElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGAnimateTransformElement: {\n    prototype: SVGAnimateTransformElement;\n    new(): SVGAnimateTransformElement;\n};\n\n/** Used for attributes of basic type <angle> which can be animated. */\ninterface SVGAnimatedAngle {\n    readonly animVal: SVGAngle;\n    readonly baseVal: SVGAngle;\n}\n\ndeclare var SVGAnimatedAngle: {\n    prototype: SVGAnimatedAngle;\n    new(): SVGAnimatedAngle;\n};\n\n/** Used for attributes of type boolean which can be animated. */\ninterface SVGAnimatedBoolean {\n    readonly animVal: boolean;\n    baseVal: boolean;\n}\n\ndeclare var SVGAnimatedBoolean: {\n    prototype: SVGAnimatedBoolean;\n    new(): SVGAnimatedBoolean;\n};\n\n/** Used for attributes whose value must be a constant from a particular enumeration and which can be animated. */\ninterface SVGAnimatedEnumeration {\n    readonly animVal: number;\n    baseVal: number;\n}\n\ndeclare var SVGAnimatedEnumeration: {\n    prototype: SVGAnimatedEnumeration;\n    new(): SVGAnimatedEnumeration;\n};\n\n/** Used for attributes of basic type <integer> which can be animated. */\ninterface SVGAnimatedInteger {\n    readonly animVal: number;\n    baseVal: number;\n}\n\ndeclare var SVGAnimatedInteger: {\n    prototype: SVGAnimatedInteger;\n    new(): SVGAnimatedInteger;\n};\n\n/** Used for attributes of basic type <length> which can be animated. */\ninterface SVGAnimatedLength {\n    readonly animVal: SVGLength;\n    readonly baseVal: SVGLength;\n}\n\ndeclare var SVGAnimatedLength: {\n    prototype: SVGAnimatedLength;\n    new(): SVGAnimatedLength;\n};\n\n/** Used for attributes of type SVGLengthList which can be animated. */\ninterface SVGAnimatedLengthList {\n    readonly animVal: SVGLengthList;\n    readonly baseVal: SVGLengthList;\n}\n\ndeclare var SVGAnimatedLengthList: {\n    prototype: SVGAnimatedLengthList;\n    new(): SVGAnimatedLengthList;\n};\n\n/** Used for attributes of basic type <Number> which can be animated. */\ninterface SVGAnimatedNumber {\n    readonly animVal: number;\n    baseVal: number;\n}\n\ndeclare var SVGAnimatedNumber: {\n    prototype: SVGAnimatedNumber;\n    new(): SVGAnimatedNumber;\n};\n\n/** The SVGAnimatedNumber interface is used for attributes which take a list of numbers and which can be animated. */\ninterface SVGAnimatedNumberList {\n    readonly animVal: SVGNumberList;\n    readonly baseVal: SVGNumberList;\n}\n\ndeclare var SVGAnimatedNumberList: {\n    prototype: SVGAnimatedNumberList;\n    new(): SVGAnimatedNumberList;\n};\n\ninterface SVGAnimatedPoints {\n    readonly animatedPoints: SVGPointList;\n    readonly points: SVGPointList;\n}\n\n/** Used for attributes of type SVGPreserveAspectRatio which can be animated. */\ninterface SVGAnimatedPreserveAspectRatio {\n    readonly animVal: SVGPreserveAspectRatio;\n    readonly baseVal: SVGPreserveAspectRatio;\n}\n\ndeclare var SVGAnimatedPreserveAspectRatio: {\n    prototype: SVGAnimatedPreserveAspectRatio;\n    new(): SVGAnimatedPreserveAspectRatio;\n};\n\n/** Used for attributes of basic SVGRect which can be animated. */\ninterface SVGAnimatedRect {\n    readonly animVal: DOMRectReadOnly;\n    readonly baseVal: DOMRect;\n}\n\ndeclare var SVGAnimatedRect: {\n    prototype: SVGAnimatedRect;\n    new(): SVGAnimatedRect;\n};\n\n/** The SVGAnimatedString\\xA0interface represents string attributes which can be animated from each SVG declaration. You need to create SVG attribute before doing anything else, everything should be declared\\xA0inside this. */\ninterface SVGAnimatedString {\n    readonly animVal: string;\n    baseVal: string;\n}\n\ndeclare var SVGAnimatedString: {\n    prototype: SVGAnimatedString;\n    new(): SVGAnimatedString;\n};\n\n/** Used for attributes which take a list of numbers and which can be animated. */\ninterface SVGAnimatedTransformList {\n    readonly animVal: SVGTransformList;\n    readonly baseVal: SVGTransformList;\n}\n\ndeclare var SVGAnimatedTransformList: {\n    prototype: SVGAnimatedTransformList;\n    new(): SVGAnimatedTransformList;\n};\n\ninterface SVGAnimationElement extends SVGElement, SVGTests {\n    readonly targetElement: SVGElement | null;\n    beginElement(): void;\n    beginElementAt(offset: number): void;\n    endElement(): void;\n    endElementAt(offset: number): void;\n    getCurrentTime(): number;\n    getSimpleDuration(): number;\n    getStartTime(): number;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimationElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGAnimationElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGAnimationElement: {\n    prototype: SVGAnimationElement;\n    new(): SVGAnimationElement;\n};\n\n/** An interface for the <circle> element. The circle element is defined by the cx and cy attributes that denote the coordinates of the centre of the circle. */\ninterface SVGCircleElement extends SVGGeometryElement {\n    readonly cx: SVGAnimatedLength;\n    readonly cy: SVGAnimatedLength;\n    readonly r: SVGAnimatedLength;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGCircleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGCircleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGCircleElement: {\n    prototype: SVGCircleElement;\n    new(): SVGCircleElement;\n};\n\n/** Provides access to the properties of <clipPath> elements, as well as methods to manipulate them. */\ninterface SVGClipPathElement extends SVGElement {\n    readonly clipPathUnits: SVGAnimatedEnumeration;\n    readonly transform: SVGAnimatedTransformList;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGClipPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGClipPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGClipPathElement: {\n    prototype: SVGClipPathElement;\n    new(): SVGClipPathElement;\n};\n\n/** A base interface used by the component transfer function interfaces. */\ninterface SVGComponentTransferFunctionElement extends SVGElement {\n    readonly amplitude: SVGAnimatedNumber;\n    readonly exponent: SVGAnimatedNumber;\n    readonly intercept: SVGAnimatedNumber;\n    readonly offset: SVGAnimatedNumber;\n    readonly slope: SVGAnimatedNumber;\n    readonly tableValues: SVGAnimatedNumberList;\n    readonly type: SVGAnimatedEnumeration;\n    readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: 0;\n    readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: 1;\n    readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: 2;\n    readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: 3;\n    readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: 4;\n    readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: 5;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGComponentTransferFunctionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGComponentTransferFunctionElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGComponentTransferFunctionElement: {\n    prototype: SVGComponentTransferFunctionElement;\n    new(): SVGComponentTransferFunctionElement;\n    readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: 0;\n    readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: 1;\n    readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: 2;\n    readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: 3;\n    readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: 4;\n    readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: 5;\n};\n\n/** Corresponds to the <defs> element. */\ninterface SVGDefsElement extends SVGGraphicsElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDefsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDefsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGDefsElement: {\n    prototype: SVGDefsElement;\n    new(): SVGDefsElement;\n};\n\n/** Corresponds to the <desc> element. */\ninterface SVGDescElement extends SVGElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDescElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGDescElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGDescElement: {\n    prototype: SVGDescElement;\n    new(): SVGDescElement;\n};\n\ninterface SVGElementEventMap extends ElementEventMap, GlobalEventHandlersEventMap {\n}\n\n/** All of the SVG DOM interfaces that correspond directly to elements in the SVG language derive from the SVGElement interface. */\ninterface SVGElement extends Element, ElementCSSInlineStyle, GlobalEventHandlers, HTMLOrSVGElement {\n    /** @deprecated */\n    readonly className: any;\n    readonly ownerSVGElement: SVGSVGElement | null;\n    readonly viewportElement: SVGElement | null;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGElement: {\n    prototype: SVGElement;\n    new(): SVGElement;\n};\n\n/** Provides access to the properties of <ellipse> elements. */\ninterface SVGEllipseElement extends SVGGeometryElement {\n    readonly cx: SVGAnimatedLength;\n    readonly cy: SVGAnimatedLength;\n    readonly rx: SVGAnimatedLength;\n    readonly ry: SVGAnimatedLength;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGEllipseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGEllipseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGEllipseElement: {\n    prototype: SVGEllipseElement;\n    new(): SVGEllipseElement;\n};\n\n/** Corresponds to the <feBlend> element. */\ninterface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly in1: SVGAnimatedString;\n    readonly in2: SVGAnimatedString;\n    readonly mode: SVGAnimatedEnumeration;\n    readonly SVG_FEBLEND_MODE_UNKNOWN: 0;\n    readonly SVG_FEBLEND_MODE_NORMAL: 1;\n    readonly SVG_FEBLEND_MODE_MULTIPLY: 2;\n    readonly SVG_FEBLEND_MODE_SCREEN: 3;\n    readonly SVG_FEBLEND_MODE_DARKEN: 4;\n    readonly SVG_FEBLEND_MODE_LIGHTEN: 5;\n    readonly SVG_FEBLEND_MODE_OVERLAY: 6;\n    readonly SVG_FEBLEND_MODE_COLOR_DODGE: 7;\n    readonly SVG_FEBLEND_MODE_COLOR_BURN: 8;\n    readonly SVG_FEBLEND_MODE_HARD_LIGHT: 9;\n    readonly SVG_FEBLEND_MODE_SOFT_LIGHT: 10;\n    readonly SVG_FEBLEND_MODE_DIFFERENCE: 11;\n    readonly SVG_FEBLEND_MODE_EXCLUSION: 12;\n    readonly SVG_FEBLEND_MODE_HUE: 13;\n    readonly SVG_FEBLEND_MODE_SATURATION: 14;\n    readonly SVG_FEBLEND_MODE_COLOR: 15;\n    readonly SVG_FEBLEND_MODE_LUMINOSITY: 16;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEBlendElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEBlendElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEBlendElement: {\n    prototype: SVGFEBlendElement;\n    new(): SVGFEBlendElement;\n    readonly SVG_FEBLEND_MODE_UNKNOWN: 0;\n    readonly SVG_FEBLEND_MODE_NORMAL: 1;\n    readonly SVG_FEBLEND_MODE_MULTIPLY: 2;\n    readonly SVG_FEBLEND_MODE_SCREEN: 3;\n    readonly SVG_FEBLEND_MODE_DARKEN: 4;\n    readonly SVG_FEBLEND_MODE_LIGHTEN: 5;\n    readonly SVG_FEBLEND_MODE_OVERLAY: 6;\n    readonly SVG_FEBLEND_MODE_COLOR_DODGE: 7;\n    readonly SVG_FEBLEND_MODE_COLOR_BURN: 8;\n    readonly SVG_FEBLEND_MODE_HARD_LIGHT: 9;\n    readonly SVG_FEBLEND_MODE_SOFT_LIGHT: 10;\n    readonly SVG_FEBLEND_MODE_DIFFERENCE: 11;\n    readonly SVG_FEBLEND_MODE_EXCLUSION: 12;\n    readonly SVG_FEBLEND_MODE_HUE: 13;\n    readonly SVG_FEBLEND_MODE_SATURATION: 14;\n    readonly SVG_FEBLEND_MODE_COLOR: 15;\n    readonly SVG_FEBLEND_MODE_LUMINOSITY: 16;\n};\n\n/** Corresponds to the <feColorMatrix> element. */\ninterface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly in1: SVGAnimatedString;\n    readonly type: SVGAnimatedEnumeration;\n    readonly values: SVGAnimatedNumberList;\n    readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: 0;\n    readonly SVG_FECOLORMATRIX_TYPE_MATRIX: 1;\n    readonly SVG_FECOLORMATRIX_TYPE_SATURATE: 2;\n    readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: 3;\n    readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: 4;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEColorMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEColorMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEColorMatrixElement: {\n    prototype: SVGFEColorMatrixElement;\n    new(): SVGFEColorMatrixElement;\n    readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: 0;\n    readonly SVG_FECOLORMATRIX_TYPE_MATRIX: 1;\n    readonly SVG_FECOLORMATRIX_TYPE_SATURATE: 2;\n    readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: 3;\n    readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: 4;\n};\n\n/** Corresponds to the <feComponentTransfer> element. */\ninterface SVGFEComponentTransferElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly in1: SVGAnimatedString;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEComponentTransferElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEComponentTransferElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEComponentTransferElement: {\n    prototype: SVGFEComponentTransferElement;\n    new(): SVGFEComponentTransferElement;\n};\n\n/** Corresponds to the <feComposite> element. */\ninterface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly in1: SVGAnimatedString;\n    readonly in2: SVGAnimatedString;\n    readonly k1: SVGAnimatedNumber;\n    readonly k2: SVGAnimatedNumber;\n    readonly k3: SVGAnimatedNumber;\n    readonly k4: SVGAnimatedNumber;\n    readonly operator: SVGAnimatedEnumeration;\n    readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: 0;\n    readonly SVG_FECOMPOSITE_OPERATOR_OVER: 1;\n    readonly SVG_FECOMPOSITE_OPERATOR_IN: 2;\n    readonly SVG_FECOMPOSITE_OPERATOR_OUT: 3;\n    readonly SVG_FECOMPOSITE_OPERATOR_ATOP: 4;\n    readonly SVG_FECOMPOSITE_OPERATOR_XOR: 5;\n    readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: 6;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFECompositeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFECompositeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFECompositeElement: {\n    prototype: SVGFECompositeElement;\n    new(): SVGFECompositeElement;\n    readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: 0;\n    readonly SVG_FECOMPOSITE_OPERATOR_OVER: 1;\n    readonly SVG_FECOMPOSITE_OPERATOR_IN: 2;\n    readonly SVG_FECOMPOSITE_OPERATOR_OUT: 3;\n    readonly SVG_FECOMPOSITE_OPERATOR_ATOP: 4;\n    readonly SVG_FECOMPOSITE_OPERATOR_XOR: 5;\n    readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: 6;\n};\n\n/** Corresponds to the <feConvolveMatrix> element. */\ninterface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly bias: SVGAnimatedNumber;\n    readonly divisor: SVGAnimatedNumber;\n    readonly edgeMode: SVGAnimatedEnumeration;\n    readonly in1: SVGAnimatedString;\n    readonly kernelMatrix: SVGAnimatedNumberList;\n    readonly kernelUnitLengthX: SVGAnimatedNumber;\n    readonly kernelUnitLengthY: SVGAnimatedNumber;\n    readonly orderX: SVGAnimatedInteger;\n    readonly orderY: SVGAnimatedInteger;\n    readonly preserveAlpha: SVGAnimatedBoolean;\n    readonly targetX: SVGAnimatedInteger;\n    readonly targetY: SVGAnimatedInteger;\n    readonly SVG_EDGEMODE_UNKNOWN: 0;\n    readonly SVG_EDGEMODE_DUPLICATE: 1;\n    readonly SVG_EDGEMODE_WRAP: 2;\n    readonly SVG_EDGEMODE_NONE: 3;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEConvolveMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEConvolveMatrixElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEConvolveMatrixElement: {\n    prototype: SVGFEConvolveMatrixElement;\n    new(): SVGFEConvolveMatrixElement;\n    readonly SVG_EDGEMODE_UNKNOWN: 0;\n    readonly SVG_EDGEMODE_DUPLICATE: 1;\n    readonly SVG_EDGEMODE_WRAP: 2;\n    readonly SVG_EDGEMODE_NONE: 3;\n};\n\n/** Corresponds to the <feDiffuseLighting> element. */\ninterface SVGFEDiffuseLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly diffuseConstant: SVGAnimatedNumber;\n    readonly in1: SVGAnimatedString;\n    readonly kernelUnitLengthX: SVGAnimatedNumber;\n    readonly kernelUnitLengthY: SVGAnimatedNumber;\n    readonly surfaceScale: SVGAnimatedNumber;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDiffuseLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDiffuseLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEDiffuseLightingElement: {\n    prototype: SVGFEDiffuseLightingElement;\n    new(): SVGFEDiffuseLightingElement;\n};\n\n/** Corresponds to the <feDisplacementMap> element. */\ninterface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly in1: SVGAnimatedString;\n    readonly in2: SVGAnimatedString;\n    readonly scale: SVGAnimatedNumber;\n    readonly xChannelSelector: SVGAnimatedEnumeration;\n    readonly yChannelSelector: SVGAnimatedEnumeration;\n    readonly SVG_CHANNEL_UNKNOWN: 0;\n    readonly SVG_CHANNEL_R: 1;\n    readonly SVG_CHANNEL_G: 2;\n    readonly SVG_CHANNEL_B: 3;\n    readonly SVG_CHANNEL_A: 4;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDisplacementMapElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDisplacementMapElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEDisplacementMapElement: {\n    prototype: SVGFEDisplacementMapElement;\n    new(): SVGFEDisplacementMapElement;\n    readonly SVG_CHANNEL_UNKNOWN: 0;\n    readonly SVG_CHANNEL_R: 1;\n    readonly SVG_CHANNEL_G: 2;\n    readonly SVG_CHANNEL_B: 3;\n    readonly SVG_CHANNEL_A: 4;\n};\n\n/** Corresponds to the <feDistantLight> element. */\ninterface SVGFEDistantLightElement extends SVGElement {\n    readonly azimuth: SVGAnimatedNumber;\n    readonly elevation: SVGAnimatedNumber;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDistantLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDistantLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEDistantLightElement: {\n    prototype: SVGFEDistantLightElement;\n    new(): SVGFEDistantLightElement;\n};\n\ninterface SVGFEDropShadowElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly dx: SVGAnimatedNumber;\n    readonly dy: SVGAnimatedNumber;\n    readonly in1: SVGAnimatedString;\n    readonly stdDeviationX: SVGAnimatedNumber;\n    readonly stdDeviationY: SVGAnimatedNumber;\n    setStdDeviation(stdDeviationX: number, stdDeviationY: number): void;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDropShadowElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEDropShadowElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEDropShadowElement: {\n    prototype: SVGFEDropShadowElement;\n    new(): SVGFEDropShadowElement;\n};\n\n/** Corresponds to the <feFlood> element. */\ninterface SVGFEFloodElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFloodElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFloodElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEFloodElement: {\n    prototype: SVGFEFloodElement;\n    new(): SVGFEFloodElement;\n};\n\n/** Corresponds to the <feFuncA> element. */\ninterface SVGFEFuncAElement extends SVGComponentTransferFunctionElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncAElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEFuncAElement: {\n    prototype: SVGFEFuncAElement;\n    new(): SVGFEFuncAElement;\n};\n\n/** Corresponds to the <feFuncB> element. */\ninterface SVGFEFuncBElement extends SVGComponentTransferFunctionElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncBElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncBElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEFuncBElement: {\n    prototype: SVGFEFuncBElement;\n    new(): SVGFEFuncBElement;\n};\n\n/** Corresponds to the <feFuncG> element. */\ninterface SVGFEFuncGElement extends SVGComponentTransferFunctionElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEFuncGElement: {\n    prototype: SVGFEFuncGElement;\n    new(): SVGFEFuncGElement;\n};\n\n/** Corresponds to the <feFuncR> element. */\ninterface SVGFEFuncRElement extends SVGComponentTransferFunctionElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncRElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEFuncRElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEFuncRElement: {\n    prototype: SVGFEFuncRElement;\n    new(): SVGFEFuncRElement;\n};\n\n/** Corresponds to the <feGaussianBlur> element. */\ninterface SVGFEGaussianBlurElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly in1: SVGAnimatedString;\n    readonly stdDeviationX: SVGAnimatedNumber;\n    readonly stdDeviationY: SVGAnimatedNumber;\n    setStdDeviation(stdDeviationX: number, stdDeviationY: number): void;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEGaussianBlurElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEGaussianBlurElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEGaussianBlurElement: {\n    prototype: SVGFEGaussianBlurElement;\n    new(): SVGFEGaussianBlurElement;\n};\n\n/** Corresponds to the <feImage> element. */\ninterface SVGFEImageElement extends SVGElement, SVGFilterPrimitiveStandardAttributes, SVGURIReference {\n    readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEImageElement: {\n    prototype: SVGFEImageElement;\n    new(): SVGFEImageElement;\n};\n\n/** Corresponds to the <feMerge> element. */\ninterface SVGFEMergeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEMergeElement: {\n    prototype: SVGFEMergeElement;\n    new(): SVGFEMergeElement;\n};\n\n/** Corresponds to the <feMergeNode> element. */\ninterface SVGFEMergeNodeElement extends SVGElement {\n    readonly in1: SVGAnimatedString;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeNodeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMergeNodeElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEMergeNodeElement: {\n    prototype: SVGFEMergeNodeElement;\n    new(): SVGFEMergeNodeElement;\n};\n\n/** Corresponds to the <feMorphology> element. */\ninterface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly in1: SVGAnimatedString;\n    readonly operator: SVGAnimatedEnumeration;\n    readonly radiusX: SVGAnimatedNumber;\n    readonly radiusY: SVGAnimatedNumber;\n    readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: 0;\n    readonly SVG_MORPHOLOGY_OPERATOR_ERODE: 1;\n    readonly SVG_MORPHOLOGY_OPERATOR_DILATE: 2;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMorphologyElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEMorphologyElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEMorphologyElement: {\n    prototype: SVGFEMorphologyElement;\n    new(): SVGFEMorphologyElement;\n    readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: 0;\n    readonly SVG_MORPHOLOGY_OPERATOR_ERODE: 1;\n    readonly SVG_MORPHOLOGY_OPERATOR_DILATE: 2;\n};\n\n/** Corresponds to the <feOffset> element. */\ninterface SVGFEOffsetElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly dx: SVGAnimatedNumber;\n    readonly dy: SVGAnimatedNumber;\n    readonly in1: SVGAnimatedString;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEOffsetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEOffsetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEOffsetElement: {\n    prototype: SVGFEOffsetElement;\n    new(): SVGFEOffsetElement;\n};\n\n/** Corresponds to the <fePointLight> element. */\ninterface SVGFEPointLightElement extends SVGElement {\n    readonly x: SVGAnimatedNumber;\n    readonly y: SVGAnimatedNumber;\n    readonly z: SVGAnimatedNumber;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEPointLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFEPointLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFEPointLightElement: {\n    prototype: SVGFEPointLightElement;\n    new(): SVGFEPointLightElement;\n};\n\n/** Corresponds to the <feSpecularLighting> element. */\ninterface SVGFESpecularLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly in1: SVGAnimatedString;\n    readonly kernelUnitLengthX: SVGAnimatedNumber;\n    readonly kernelUnitLengthY: SVGAnimatedNumber;\n    readonly specularConstant: SVGAnimatedNumber;\n    readonly specularExponent: SVGAnimatedNumber;\n    readonly surfaceScale: SVGAnimatedNumber;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpecularLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpecularLightingElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFESpecularLightingElement: {\n    prototype: SVGFESpecularLightingElement;\n    new(): SVGFESpecularLightingElement;\n};\n\n/** Corresponds to the <feSpotLight> element. */\ninterface SVGFESpotLightElement extends SVGElement {\n    readonly limitingConeAngle: SVGAnimatedNumber;\n    readonly pointsAtX: SVGAnimatedNumber;\n    readonly pointsAtY: SVGAnimatedNumber;\n    readonly pointsAtZ: SVGAnimatedNumber;\n    readonly specularExponent: SVGAnimatedNumber;\n    readonly x: SVGAnimatedNumber;\n    readonly y: SVGAnimatedNumber;\n    readonly z: SVGAnimatedNumber;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpotLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFESpotLightElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFESpotLightElement: {\n    prototype: SVGFESpotLightElement;\n    new(): SVGFESpotLightElement;\n};\n\n/** Corresponds to the <feTile> element. */\ninterface SVGFETileElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly in1: SVGAnimatedString;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETileElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETileElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFETileElement: {\n    prototype: SVGFETileElement;\n    new(): SVGFETileElement;\n};\n\n/** Corresponds to the <feTurbulence> element. */\ninterface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardAttributes {\n    readonly baseFrequencyX: SVGAnimatedNumber;\n    readonly baseFrequencyY: SVGAnimatedNumber;\n    readonly numOctaves: SVGAnimatedInteger;\n    readonly seed: SVGAnimatedNumber;\n    readonly stitchTiles: SVGAnimatedEnumeration;\n    readonly type: SVGAnimatedEnumeration;\n    readonly SVG_TURBULENCE_TYPE_UNKNOWN: 0;\n    readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: 1;\n    readonly SVG_TURBULENCE_TYPE_TURBULENCE: 2;\n    readonly SVG_STITCHTYPE_UNKNOWN: 0;\n    readonly SVG_STITCHTYPE_STITCH: 1;\n    readonly SVG_STITCHTYPE_NOSTITCH: 2;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETurbulenceElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFETurbulenceElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFETurbulenceElement: {\n    prototype: SVGFETurbulenceElement;\n    new(): SVGFETurbulenceElement;\n    readonly SVG_TURBULENCE_TYPE_UNKNOWN: 0;\n    readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: 1;\n    readonly SVG_TURBULENCE_TYPE_TURBULENCE: 2;\n    readonly SVG_STITCHTYPE_UNKNOWN: 0;\n    readonly SVG_STITCHTYPE_STITCH: 1;\n    readonly SVG_STITCHTYPE_NOSTITCH: 2;\n};\n\n/** Provides access to the properties of <filter> elements, as well as methods to manipulate them. */\ninterface SVGFilterElement extends SVGElement, SVGURIReference {\n    readonly filterUnits: SVGAnimatedEnumeration;\n    readonly height: SVGAnimatedLength;\n    readonly primitiveUnits: SVGAnimatedEnumeration;\n    readonly width: SVGAnimatedLength;\n    readonly x: SVGAnimatedLength;\n    readonly y: SVGAnimatedLength;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFilterElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGFilterElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGFilterElement: {\n    prototype: SVGFilterElement;\n    new(): SVGFilterElement;\n};\n\ninterface SVGFilterPrimitiveStandardAttributes {\n    readonly height: SVGAnimatedLength;\n    readonly result: SVGAnimatedString;\n    readonly width: SVGAnimatedLength;\n    readonly x: SVGAnimatedLength;\n    readonly y: SVGAnimatedLength;\n}\n\ninterface SVGFitToViewBox {\n    readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio;\n    readonly viewBox: SVGAnimatedRect;\n}\n\n/** Provides access to the properties of <foreignObject> elements, as well as methods to manipulate them. */\ninterface SVGForeignObjectElement extends SVGGraphicsElement {\n    readonly height: SVGAnimatedLength;\n    readonly width: SVGAnimatedLength;\n    readonly x: SVGAnimatedLength;\n    readonly y: SVGAnimatedLength;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGForeignObjectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGForeignObjectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGForeignObjectElement: {\n    prototype: SVGForeignObjectElement;\n    new(): SVGForeignObjectElement;\n};\n\n/** Corresponds to the <g> element. */\ninterface SVGGElement extends SVGGraphicsElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGGElement: {\n    prototype: SVGGElement;\n    new(): SVGGElement;\n};\n\ninterface SVGGeometryElement extends SVGGraphicsElement {\n    readonly pathLength: SVGAnimatedNumber;\n    getPointAtLength(distance: number): DOMPoint;\n    getTotalLength(): number;\n    isPointInFill(point?: DOMPointInit): boolean;\n    isPointInStroke(point?: DOMPointInit): boolean;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGeometryElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGeometryElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGGeometryElement: {\n    prototype: SVGGeometryElement;\n    new(): SVGGeometryElement;\n};\n\n/** The SVGGradient interface is a base interface used by SVGLinearGradientElement and SVGRadialGradientElement. */\ninterface SVGGradientElement extends SVGElement, SVGURIReference {\n    readonly gradientTransform: SVGAnimatedTransformList;\n    readonly gradientUnits: SVGAnimatedEnumeration;\n    readonly spreadMethod: SVGAnimatedEnumeration;\n    readonly SVG_SPREADMETHOD_UNKNOWN: 0;\n    readonly SVG_SPREADMETHOD_PAD: 1;\n    readonly SVG_SPREADMETHOD_REFLECT: 2;\n    readonly SVG_SPREADMETHOD_REPEAT: 3;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGGradientElement: {\n    prototype: SVGGradientElement;\n    new(): SVGGradientElement;\n    readonly SVG_SPREADMETHOD_UNKNOWN: 0;\n    readonly SVG_SPREADMETHOD_PAD: 1;\n    readonly SVG_SPREADMETHOD_REFLECT: 2;\n    readonly SVG_SPREADMETHOD_REPEAT: 3;\n};\n\n/** SVG elements whose primary purpose is to directly render graphics into a group. */\ninterface SVGGraphicsElement extends SVGElement, SVGTests {\n    readonly transform: SVGAnimatedTransformList;\n    getBBox(options?: SVGBoundingBoxOptions): DOMRect;\n    getCTM(): DOMMatrix | null;\n    getScreenCTM(): DOMMatrix | null;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGraphicsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGGraphicsElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGGraphicsElement: {\n    prototype: SVGGraphicsElement;\n    new(): SVGGraphicsElement;\n};\n\n/** Corresponds to the <image> element. */\ninterface SVGImageElement extends SVGGraphicsElement, SVGURIReference {\n    readonly height: SVGAnimatedLength;\n    readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio;\n    readonly width: SVGAnimatedLength;\n    readonly x: SVGAnimatedLength;\n    readonly y: SVGAnimatedLength;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGImageElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGImageElement: {\n    prototype: SVGImageElement;\n    new(): SVGImageElement;\n};\n\n/** Correspond to the <length> basic data type. */\ninterface SVGLength {\n    readonly unitType: number;\n    value: number;\n    valueAsString: string;\n    valueInSpecifiedUnits: number;\n    convertToSpecifiedUnits(unitType: number): void;\n    newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void;\n    readonly SVG_LENGTHTYPE_UNKNOWN: 0;\n    readonly SVG_LENGTHTYPE_NUMBER: 1;\n    readonly SVG_LENGTHTYPE_PERCENTAGE: 2;\n    readonly SVG_LENGTHTYPE_EMS: 3;\n    readonly SVG_LENGTHTYPE_EXS: 4;\n    readonly SVG_LENGTHTYPE_PX: 5;\n    readonly SVG_LENGTHTYPE_CM: 6;\n    readonly SVG_LENGTHTYPE_MM: 7;\n    readonly SVG_LENGTHTYPE_IN: 8;\n    readonly SVG_LENGTHTYPE_PT: 9;\n    readonly SVG_LENGTHTYPE_PC: 10;\n}\n\ndeclare var SVGLength: {\n    prototype: SVGLength;\n    new(): SVGLength;\n    readonly SVG_LENGTHTYPE_UNKNOWN: 0;\n    readonly SVG_LENGTHTYPE_NUMBER: 1;\n    readonly SVG_LENGTHTYPE_PERCENTAGE: 2;\n    readonly SVG_LENGTHTYPE_EMS: 3;\n    readonly SVG_LENGTHTYPE_EXS: 4;\n    readonly SVG_LENGTHTYPE_PX: 5;\n    readonly SVG_LENGTHTYPE_CM: 6;\n    readonly SVG_LENGTHTYPE_MM: 7;\n    readonly SVG_LENGTHTYPE_IN: 8;\n    readonly SVG_LENGTHTYPE_PT: 9;\n    readonly SVG_LENGTHTYPE_PC: 10;\n};\n\n/** The SVGLengthList defines a list of SVGLength objects. */\ninterface SVGLengthList {\n    readonly length: number;\n    readonly numberOfItems: number;\n    appendItem(newItem: SVGLength): SVGLength;\n    clear(): void;\n    getItem(index: number): SVGLength;\n    initialize(newItem: SVGLength): SVGLength;\n    insertItemBefore(newItem: SVGLength, index: number): SVGLength;\n    removeItem(index: number): SVGLength;\n    replaceItem(newItem: SVGLength, index: number): SVGLength;\n    [index: number]: SVGLength;\n}\n\ndeclare var SVGLengthList: {\n    prototype: SVGLengthList;\n    new(): SVGLengthList;\n};\n\n/** Provides access to the properties of <line> elements, as well as methods to manipulate them. */\ninterface SVGLineElement extends SVGGeometryElement {\n    readonly x1: SVGAnimatedLength;\n    readonly x2: SVGAnimatedLength;\n    readonly y1: SVGAnimatedLength;\n    readonly y2: SVGAnimatedLength;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGLineElement: {\n    prototype: SVGLineElement;\n    new(): SVGLineElement;\n};\n\n/** Corresponds to the <linearGradient> element. */\ninterface SVGLinearGradientElement extends SVGGradientElement {\n    readonly x1: SVGAnimatedLength;\n    readonly x2: SVGAnimatedLength;\n    readonly y1: SVGAnimatedLength;\n    readonly y2: SVGAnimatedLength;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLinearGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGLinearGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGLinearGradientElement: {\n    prototype: SVGLinearGradientElement;\n    new(): SVGLinearGradientElement;\n};\n\ninterface SVGMPathElement extends SVGElement, SVGURIReference {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGMPathElement: {\n    prototype: SVGMPathElement;\n    new(): SVGMPathElement;\n};\n\ninterface SVGMarkerElement extends SVGElement, SVGFitToViewBox {\n    readonly markerHeight: SVGAnimatedLength;\n    readonly markerUnits: SVGAnimatedEnumeration;\n    readonly markerWidth: SVGAnimatedLength;\n    readonly orientAngle: SVGAnimatedAngle;\n    readonly orientType: SVGAnimatedEnumeration;\n    readonly refX: SVGAnimatedLength;\n    readonly refY: SVGAnimatedLength;\n    setOrientToAngle(angle: SVGAngle): void;\n    setOrientToAuto(): void;\n    readonly SVG_MARKERUNITS_UNKNOWN: 0;\n    readonly SVG_MARKERUNITS_USERSPACEONUSE: 1;\n    readonly SVG_MARKERUNITS_STROKEWIDTH: 2;\n    readonly SVG_MARKER_ORIENT_UNKNOWN: 0;\n    readonly SVG_MARKER_ORIENT_AUTO: 1;\n    readonly SVG_MARKER_ORIENT_ANGLE: 2;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMarkerElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMarkerElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGMarkerElement: {\n    prototype: SVGMarkerElement;\n    new(): SVGMarkerElement;\n    readonly SVG_MARKERUNITS_UNKNOWN: 0;\n    readonly SVG_MARKERUNITS_USERSPACEONUSE: 1;\n    readonly SVG_MARKERUNITS_STROKEWIDTH: 2;\n    readonly SVG_MARKER_ORIENT_UNKNOWN: 0;\n    readonly SVG_MARKER_ORIENT_AUTO: 1;\n    readonly SVG_MARKER_ORIENT_ANGLE: 2;\n};\n\n/** Provides access to the properties of <mask> elements, as well as methods to manipulate them. */\ninterface SVGMaskElement extends SVGElement {\n    readonly height: SVGAnimatedLength;\n    readonly maskContentUnits: SVGAnimatedEnumeration;\n    readonly maskUnits: SVGAnimatedEnumeration;\n    readonly width: SVGAnimatedLength;\n    readonly x: SVGAnimatedLength;\n    readonly y: SVGAnimatedLength;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMaskElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMaskElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGMaskElement: {\n    prototype: SVGMaskElement;\n    new(): SVGMaskElement;\n};\n\n/** Corresponds to the <metadata> element. */\ninterface SVGMetadataElement extends SVGElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMetadataElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGMetadataElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGMetadataElement: {\n    prototype: SVGMetadataElement;\n    new(): SVGMetadataElement;\n};\n\n/** Corresponds to the <number> basic data type. */\ninterface SVGNumber {\n    value: number;\n}\n\ndeclare var SVGNumber: {\n    prototype: SVGNumber;\n    new(): SVGNumber;\n};\n\n/** The SVGNumberList defines a list of SVGNumber objects. */\ninterface SVGNumberList {\n    readonly length: number;\n    readonly numberOfItems: number;\n    appendItem(newItem: SVGNumber): SVGNumber;\n    clear(): void;\n    getItem(index: number): SVGNumber;\n    initialize(newItem: SVGNumber): SVGNumber;\n    insertItemBefore(newItem: SVGNumber, index: number): SVGNumber;\n    removeItem(index: number): SVGNumber;\n    replaceItem(newItem: SVGNumber, index: number): SVGNumber;\n    [index: number]: SVGNumber;\n}\n\ndeclare var SVGNumberList: {\n    prototype: SVGNumberList;\n    new(): SVGNumberList;\n};\n\n/** Corresponds to the <path> element. */\ninterface SVGPathElement extends SVGGeometryElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGPathElement: {\n    prototype: SVGPathElement;\n    new(): SVGPathElement;\n};\n\n/** Corresponds to the <pattern> element. */\ninterface SVGPatternElement extends SVGElement, SVGFitToViewBox, SVGURIReference {\n    readonly height: SVGAnimatedLength;\n    readonly patternContentUnits: SVGAnimatedEnumeration;\n    readonly patternTransform: SVGAnimatedTransformList;\n    readonly patternUnits: SVGAnimatedEnumeration;\n    readonly width: SVGAnimatedLength;\n    readonly x: SVGAnimatedLength;\n    readonly y: SVGAnimatedLength;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPatternElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPatternElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGPatternElement: {\n    prototype: SVGPatternElement;\n    new(): SVGPatternElement;\n};\n\ninterface SVGPointList {\n    readonly length: number;\n    readonly numberOfItems: number;\n    appendItem(newItem: DOMPoint): DOMPoint;\n    clear(): void;\n    getItem(index: number): DOMPoint;\n    initialize(newItem: DOMPoint): DOMPoint;\n    insertItemBefore(newItem: DOMPoint, index: number): DOMPoint;\n    removeItem(index: number): DOMPoint;\n    replaceItem(newItem: DOMPoint, index: number): DOMPoint;\n    [index: number]: DOMPoint;\n}\n\ndeclare var SVGPointList: {\n    prototype: SVGPointList;\n    new(): SVGPointList;\n};\n\n/** Provides access to the properties of <polygon> elements, as well as methods to manipulate them. */\ninterface SVGPolygonElement extends SVGGeometryElement, SVGAnimatedPoints {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolygonElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolygonElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGPolygonElement: {\n    prototype: SVGPolygonElement;\n    new(): SVGPolygonElement;\n};\n\n/** Provides access to the properties of <polyline> elements, as well as methods to manipulate them. */\ninterface SVGPolylineElement extends SVGGeometryElement, SVGAnimatedPoints {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolylineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGPolylineElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGPolylineElement: {\n    prototype: SVGPolylineElement;\n    new(): SVGPolylineElement;\n};\n\n/** Corresponds to the preserveAspectRatio attribute, which is available for some of SVG's elements. */\ninterface SVGPreserveAspectRatio {\n    align: number;\n    meetOrSlice: number;\n    readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: 0;\n    readonly SVG_PRESERVEASPECTRATIO_NONE: 1;\n    readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: 2;\n    readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: 3;\n    readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: 4;\n    readonly SVG_PRESERVEASPECTRATIO_XMINYMID: 5;\n    readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: 6;\n    readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: 7;\n    readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: 8;\n    readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: 9;\n    readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: 10;\n    readonly SVG_MEETORSLICE_UNKNOWN: 0;\n    readonly SVG_MEETORSLICE_MEET: 1;\n    readonly SVG_MEETORSLICE_SLICE: 2;\n}\n\ndeclare var SVGPreserveAspectRatio: {\n    prototype: SVGPreserveAspectRatio;\n    new(): SVGPreserveAspectRatio;\n    readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: 0;\n    readonly SVG_PRESERVEASPECTRATIO_NONE: 1;\n    readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: 2;\n    readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: 3;\n    readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: 4;\n    readonly SVG_PRESERVEASPECTRATIO_XMINYMID: 5;\n    readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: 6;\n    readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: 7;\n    readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: 8;\n    readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: 9;\n    readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: 10;\n    readonly SVG_MEETORSLICE_UNKNOWN: 0;\n    readonly SVG_MEETORSLICE_MEET: 1;\n    readonly SVG_MEETORSLICE_SLICE: 2;\n};\n\n/** Corresponds to the <RadialGradient> element. */\ninterface SVGRadialGradientElement extends SVGGradientElement {\n    readonly cx: SVGAnimatedLength;\n    readonly cy: SVGAnimatedLength;\n    readonly fr: SVGAnimatedLength;\n    readonly fx: SVGAnimatedLength;\n    readonly fy: SVGAnimatedLength;\n    readonly r: SVGAnimatedLength;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRadialGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRadialGradientElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGRadialGradientElement: {\n    prototype: SVGRadialGradientElement;\n    new(): SVGRadialGradientElement;\n};\n\n/** Provides access to the properties of <rect> elements, as well as methods to manipulate them. */\ninterface SVGRectElement extends SVGGeometryElement {\n    readonly height: SVGAnimatedLength;\n    readonly rx: SVGAnimatedLength;\n    readonly ry: SVGAnimatedLength;\n    readonly width: SVGAnimatedLength;\n    readonly x: SVGAnimatedLength;\n    readonly y: SVGAnimatedLength;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGRectElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGRectElement: {\n    prototype: SVGRectElement;\n    new(): SVGRectElement;\n};\n\ninterface SVGSVGElementEventMap extends SVGElementEventMap, WindowEventHandlersEventMap {\n}\n\n/** Provides access to the properties of <svg> elements, as well as methods to manipulate them. This interface contains also various miscellaneous commonly-used utility methods, such as matrix operations and the ability to control the time of redraw on visual rendering devices. */\ninterface SVGSVGElement extends SVGGraphicsElement, SVGFitToViewBox, WindowEventHandlers {\n    currentScale: number;\n    readonly currentTranslate: DOMPointReadOnly;\n    readonly height: SVGAnimatedLength;\n    readonly width: SVGAnimatedLength;\n    readonly x: SVGAnimatedLength;\n    readonly y: SVGAnimatedLength;\n    animationsPaused(): boolean;\n    checkEnclosure(element: SVGElement, rect: DOMRectReadOnly): boolean;\n    checkIntersection(element: SVGElement, rect: DOMRectReadOnly): boolean;\n    createSVGAngle(): SVGAngle;\n    createSVGLength(): SVGLength;\n    createSVGMatrix(): DOMMatrix;\n    createSVGNumber(): SVGNumber;\n    createSVGPoint(): DOMPoint;\n    createSVGRect(): DOMRect;\n    createSVGTransform(): SVGTransform;\n    createSVGTransformFromMatrix(matrix?: DOMMatrix2DInit): SVGTransform;\n    deselectAll(): void;\n    /** @deprecated */\n    forceRedraw(): void;\n    getCurrentTime(): number;\n    getElementById(elementId: string): Element;\n    getEnclosureList(rect: DOMRectReadOnly, referenceElement: SVGElement | null): NodeListOf<SVGCircleElement | SVGEllipseElement | SVGImageElement | SVGLineElement | SVGPathElement | SVGPolygonElement | SVGPolylineElement | SVGRectElement | SVGTextElement | SVGUseElement>;\n    getIntersectionList(rect: DOMRectReadOnly, referenceElement: SVGElement | null): NodeListOf<SVGCircleElement | SVGEllipseElement | SVGImageElement | SVGLineElement | SVGPathElement | SVGPolygonElement | SVGPolylineElement | SVGRectElement | SVGTextElement | SVGUseElement>;\n    pauseAnimations(): void;\n    setCurrentTime(seconds: number): void;\n    /** @deprecated */\n    suspendRedraw(maxWaitMilliseconds: number): number;\n    unpauseAnimations(): void;\n    /** @deprecated */\n    unsuspendRedraw(suspendHandleID: number): void;\n    /** @deprecated */\n    unsuspendRedrawAll(): void;\n    addEventListener<K extends keyof SVGSVGElementEventMap>(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGSVGElementEventMap>(type: K, listener: (this: SVGSVGElement, ev: SVGSVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGSVGElement: {\n    prototype: SVGSVGElement;\n    new(): SVGSVGElement;\n};\n\n/** Corresponds to the SVG <script> element. */\ninterface SVGScriptElement extends SVGElement, SVGURIReference {\n    type: string;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGScriptElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGScriptElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGScriptElement: {\n    prototype: SVGScriptElement;\n    new(): SVGScriptElement;\n};\n\ninterface SVGSetElement extends SVGAnimationElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSetElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGSetElement: {\n    prototype: SVGSetElement;\n    new(): SVGSetElement;\n};\n\n/** Corresponds to the <stop> element. */\ninterface SVGStopElement extends SVGElement {\n    readonly offset: SVGAnimatedNumber;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStopElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStopElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGStopElement: {\n    prototype: SVGStopElement;\n    new(): SVGStopElement;\n};\n\n/** The SVGStringList defines a list of DOMString objects. */\ninterface SVGStringList {\n    readonly length: number;\n    readonly numberOfItems: number;\n    appendItem(newItem: string): string;\n    clear(): void;\n    getItem(index: number): string;\n    initialize(newItem: string): string;\n    insertItemBefore(newItem: string, index: number): string;\n    removeItem(index: number): string;\n    replaceItem(newItem: string, index: number): string;\n    [index: number]: string;\n}\n\ndeclare var SVGStringList: {\n    prototype: SVGStringList;\n    new(): SVGStringList;\n};\n\n/** Corresponds to the SVG <style> element. */\ninterface SVGStyleElement extends SVGElement, LinkStyle {\n    disabled: boolean;\n    media: string;\n    title: string;\n    /** @deprecated */\n    type: string;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStyleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGStyleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGStyleElement: {\n    prototype: SVGStyleElement;\n    new(): SVGStyleElement;\n};\n\n/** Corresponds to the <switch> element. */\ninterface SVGSwitchElement extends SVGGraphicsElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSwitchElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSwitchElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGSwitchElement: {\n    prototype: SVGSwitchElement;\n    new(): SVGSwitchElement;\n};\n\n/** Corresponds to the <symbol> element. */\ninterface SVGSymbolElement extends SVGElement, SVGFitToViewBox {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSymbolElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGSymbolElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGSymbolElement: {\n    prototype: SVGSymbolElement;\n    new(): SVGSymbolElement;\n};\n\n/** A <tspan> element. */\ninterface SVGTSpanElement extends SVGTextPositioningElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTSpanElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTSpanElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGTSpanElement: {\n    prototype: SVGTSpanElement;\n    new(): SVGTSpanElement;\n};\n\ninterface SVGTests {\n    readonly requiredExtensions: SVGStringList;\n    readonly systemLanguage: SVGStringList;\n}\n\n/** Implemented by elements that support rendering child text content. It is inherited by various text-related interfaces, such as SVGTextElement, SVGTSpanElement, SVGTRefElement, SVGAltGlyphElement and SVGTextPathElement. */\ninterface SVGTextContentElement extends SVGGraphicsElement {\n    readonly lengthAdjust: SVGAnimatedEnumeration;\n    readonly textLength: SVGAnimatedLength;\n    getCharNumAtPosition(point?: DOMPointInit): number;\n    getComputedTextLength(): number;\n    getEndPositionOfChar(charnum: number): DOMPoint;\n    getExtentOfChar(charnum: number): DOMRect;\n    getNumberOfChars(): number;\n    getRotationOfChar(charnum: number): number;\n    getStartPositionOfChar(charnum: number): DOMPoint;\n    getSubStringLength(charnum: number, nchars: number): number;\n    /** @deprecated */\n    selectSubString(charnum: number, nchars: number): void;\n    readonly LENGTHADJUST_UNKNOWN: 0;\n    readonly LENGTHADJUST_SPACING: 1;\n    readonly LENGTHADJUST_SPACINGANDGLYPHS: 2;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextContentElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextContentElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGTextContentElement: {\n    prototype: SVGTextContentElement;\n    new(): SVGTextContentElement;\n    readonly LENGTHADJUST_UNKNOWN: 0;\n    readonly LENGTHADJUST_SPACING: 1;\n    readonly LENGTHADJUST_SPACINGANDGLYPHS: 2;\n};\n\n/** Corresponds to the <text> elements. */\ninterface SVGTextElement extends SVGTextPositioningElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGTextElement: {\n    prototype: SVGTextElement;\n    new(): SVGTextElement;\n};\n\n/** Corresponds to the <textPath> element. */\ninterface SVGTextPathElement extends SVGTextContentElement, SVGURIReference {\n    readonly method: SVGAnimatedEnumeration;\n    readonly spacing: SVGAnimatedEnumeration;\n    readonly startOffset: SVGAnimatedLength;\n    readonly TEXTPATH_METHODTYPE_UNKNOWN: 0;\n    readonly TEXTPATH_METHODTYPE_ALIGN: 1;\n    readonly TEXTPATH_METHODTYPE_STRETCH: 2;\n    readonly TEXTPATH_SPACINGTYPE_UNKNOWN: 0;\n    readonly TEXTPATH_SPACINGTYPE_AUTO: 1;\n    readonly TEXTPATH_SPACINGTYPE_EXACT: 2;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPathElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGTextPathElement: {\n    prototype: SVGTextPathElement;\n    new(): SVGTextPathElement;\n    readonly TEXTPATH_METHODTYPE_UNKNOWN: 0;\n    readonly TEXTPATH_METHODTYPE_ALIGN: 1;\n    readonly TEXTPATH_METHODTYPE_STRETCH: 2;\n    readonly TEXTPATH_SPACINGTYPE_UNKNOWN: 0;\n    readonly TEXTPATH_SPACINGTYPE_AUTO: 1;\n    readonly TEXTPATH_SPACINGTYPE_EXACT: 2;\n};\n\n/** Implemented by elements that support attributes that position individual text glyphs. It is inherited by SVGTextElement, SVGTSpanElement, SVGTRefElement and SVGAltGlyphElement. */\ninterface SVGTextPositioningElement extends SVGTextContentElement {\n    readonly dx: SVGAnimatedLengthList;\n    readonly dy: SVGAnimatedLengthList;\n    readonly rotate: SVGAnimatedNumberList;\n    readonly x: SVGAnimatedLengthList;\n    readonly y: SVGAnimatedLengthList;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPositioningElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTextPositioningElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGTextPositioningElement: {\n    prototype: SVGTextPositioningElement;\n    new(): SVGTextPositioningElement;\n};\n\n/** Corresponds to the <title> element. */\ninterface SVGTitleElement extends SVGElement {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTitleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGTitleElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGTitleElement: {\n    prototype: SVGTitleElement;\n    new(): SVGTitleElement;\n};\n\n/** SVGTransform is the interface for one of the component transformations within an SVGTransformList; thus, an SVGTransform object corresponds to a single component (e.g., scale(\\u2026) or matrix(\\u2026)) within a transform attribute. */\ninterface SVGTransform {\n    readonly angle: number;\n    readonly matrix: DOMMatrix;\n    readonly type: number;\n    setMatrix(matrix?: DOMMatrix2DInit): void;\n    setRotate(angle: number, cx: number, cy: number): void;\n    setScale(sx: number, sy: number): void;\n    setSkewX(angle: number): void;\n    setSkewY(angle: number): void;\n    setTranslate(tx: number, ty: number): void;\n    readonly SVG_TRANSFORM_UNKNOWN: 0;\n    readonly SVG_TRANSFORM_MATRIX: 1;\n    readonly SVG_TRANSFORM_TRANSLATE: 2;\n    readonly SVG_TRANSFORM_SCALE: 3;\n    readonly SVG_TRANSFORM_ROTATE: 4;\n    readonly SVG_TRANSFORM_SKEWX: 5;\n    readonly SVG_TRANSFORM_SKEWY: 6;\n}\n\ndeclare var SVGTransform: {\n    prototype: SVGTransform;\n    new(): SVGTransform;\n    readonly SVG_TRANSFORM_UNKNOWN: 0;\n    readonly SVG_TRANSFORM_MATRIX: 1;\n    readonly SVG_TRANSFORM_TRANSLATE: 2;\n    readonly SVG_TRANSFORM_SCALE: 3;\n    readonly SVG_TRANSFORM_ROTATE: 4;\n    readonly SVG_TRANSFORM_SKEWX: 5;\n    readonly SVG_TRANSFORM_SKEWY: 6;\n};\n\n/** The SVGTransformList defines a list of SVGTransform objects. */\ninterface SVGTransformList {\n    readonly length: number;\n    readonly numberOfItems: number;\n    appendItem(newItem: SVGTransform): SVGTransform;\n    clear(): void;\n    consolidate(): SVGTransform | null;\n    createSVGTransformFromMatrix(matrix?: DOMMatrix2DInit): SVGTransform;\n    getItem(index: number): SVGTransform;\n    initialize(newItem: SVGTransform): SVGTransform;\n    insertItemBefore(newItem: SVGTransform, index: number): SVGTransform;\n    removeItem(index: number): SVGTransform;\n    replaceItem(newItem: SVGTransform, index: number): SVGTransform;\n    [index: number]: SVGTransform;\n}\n\ndeclare var SVGTransformList: {\n    prototype: SVGTransformList;\n    new(): SVGTransformList;\n};\n\ninterface SVGURIReference {\n    readonly href: SVGAnimatedString;\n}\n\n/** A commonly used set of constants used for reflecting gradientUnits, patternContentUnits and other similar attributes. */\ninterface SVGUnitTypes {\n    readonly SVG_UNIT_TYPE_UNKNOWN: 0;\n    readonly SVG_UNIT_TYPE_USERSPACEONUSE: 1;\n    readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: 2;\n}\n\ndeclare var SVGUnitTypes: {\n    prototype: SVGUnitTypes;\n    new(): SVGUnitTypes;\n    readonly SVG_UNIT_TYPE_UNKNOWN: 0;\n    readonly SVG_UNIT_TYPE_USERSPACEONUSE: 1;\n    readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: 2;\n};\n\n/** Corresponds to the <use> element. */\ninterface SVGUseElement extends SVGGraphicsElement, SVGURIReference {\n    readonly height: SVGAnimatedLength;\n    readonly width: SVGAnimatedLength;\n    readonly x: SVGAnimatedLength;\n    readonly y: SVGAnimatedLength;\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGUseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGUseElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGUseElement: {\n    prototype: SVGUseElement;\n    new(): SVGUseElement;\n};\n\n/** Provides access to the properties of <view> elements, as well as methods to manipulate them. */\ninterface SVGViewElement extends SVGElement, SVGFitToViewBox {\n    addEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGViewElement, ev: SVGElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SVGElementEventMap>(type: K, listener: (this: SVGViewElement, ev: SVGElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SVGViewElement: {\n    prototype: SVGViewElement;\n    new(): SVGViewElement;\n};\n\n/** A screen, usually the one on which the current window is being rendered, and is obtained using window.screen. */\ninterface Screen {\n    readonly availHeight: number;\n    readonly availWidth: number;\n    readonly colorDepth: number;\n    readonly height: number;\n    readonly orientation: ScreenOrientation;\n    readonly pixelDepth: number;\n    readonly width: number;\n}\n\ndeclare var Screen: {\n    prototype: Screen;\n    new(): Screen;\n};\n\ninterface ScreenOrientationEventMap {\n    \"change\": Event;\n}\n\ninterface ScreenOrientation extends EventTarget {\n    readonly angle: number;\n    onchange: ((this: ScreenOrientation, ev: Event) => any) | null;\n    readonly type: OrientationType;\n    lock(orientation: OrientationLockType): Promise<void>;\n    unlock(): void;\n    addEventListener<K extends keyof ScreenOrientationEventMap>(type: K, listener: (this: ScreenOrientation, ev: ScreenOrientationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof ScreenOrientationEventMap>(type: K, listener: (this: ScreenOrientation, ev: ScreenOrientationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var ScreenOrientation: {\n    prototype: ScreenOrientation;\n    new(): ScreenOrientation;\n};\n\ninterface ScriptProcessorNodeEventMap {\n    \"audioprocess\": AudioProcessingEvent;\n}\n\n/**\n * Allows the generation, processing, or analyzing of audio using JavaScript.\n * @deprecated As of the August 29 2014 Web Audio API spec publication, this feature has been marked as deprecated, and was replaced by AudioWorklet (see AudioWorkletNode).\n */\ninterface ScriptProcessorNode extends AudioNode {\n    /** @deprecated */\n    readonly bufferSize: number;\n    /** @deprecated */\n    onaudioprocess: ((this: ScriptProcessorNode, ev: AudioProcessingEvent) => any) | null;\n    addEventListener<K extends keyof ScriptProcessorNodeEventMap>(type: K, listener: (this: ScriptProcessorNode, ev: ScriptProcessorNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof ScriptProcessorNodeEventMap>(type: K, listener: (this: ScriptProcessorNode, ev: ScriptProcessorNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** @deprecated */\ndeclare var ScriptProcessorNode: {\n    prototype: ScriptProcessorNode;\n    new(): ScriptProcessorNode;\n};\n\n/** Inherits from Event, and represents the event object of an event sent on a document or worker when its content security policy is violated. */\ninterface SecurityPolicyViolationEvent extends Event {\n    readonly blockedURI: string;\n    readonly columnNumber: number;\n    readonly disposition: SecurityPolicyViolationEventDisposition;\n    readonly documentURI: string;\n    readonly effectiveDirective: string;\n    readonly lineNumber: number;\n    readonly originalPolicy: string;\n    readonly referrer: string;\n    readonly sample: string;\n    readonly sourceFile: string;\n    readonly statusCode: number;\n    readonly violatedDirective: string;\n}\n\ndeclare var SecurityPolicyViolationEvent: {\n    prototype: SecurityPolicyViolationEvent;\n    new(type: string, eventInitDict?: SecurityPolicyViolationEventInit): SecurityPolicyViolationEvent;\n};\n\n/** A Selection object\\xA0represents the range of text selected by the user or the current position of the caret. To obtain a Selection object for examination or\\xA0modification, call Window.getSelection(). */\ninterface Selection {\n    readonly anchorNode: Node | null;\n    readonly anchorOffset: number;\n    readonly focusNode: Node | null;\n    readonly focusOffset: number;\n    readonly isCollapsed: boolean;\n    readonly rangeCount: number;\n    readonly type: string;\n    addRange(range: Range): void;\n    collapse(node: Node | null, offset?: number): void;\n    collapseToEnd(): void;\n    collapseToStart(): void;\n    containsNode(node: Node, allowPartialContainment?: boolean): boolean;\n    deleteFromDocument(): void;\n    empty(): void;\n    extend(node: Node, offset?: number): void;\n    getRangeAt(index: number): Range;\n    modify(alter?: string, direction?: string, granularity?: string): void;\n    removeAllRanges(): void;\n    removeRange(range: Range): void;\n    selectAllChildren(node: Node): void;\n    setBaseAndExtent(anchorNode: Node, anchorOffset: number, focusNode: Node, focusOffset: number): void;\n    setPosition(node: Node | null, offset?: number): void;\n    toString(): string;\n}\n\ndeclare var Selection: {\n    prototype: Selection;\n    new(): Selection;\n    toString(): string;\n};\n\ninterface ServiceWorkerEventMap extends AbstractWorkerEventMap {\n    \"statechange\": Event;\n}\n\n/**\n * This ServiceWorker API interface provides a reference to a service worker. Multiple browsing contexts (e.g. pages, workers, etc.) can be associated with the same service worker, each through a unique ServiceWorker object.\n * Available only in secure contexts.\n */\ninterface ServiceWorker extends EventTarget, AbstractWorker {\n    onstatechange: ((this: ServiceWorker, ev: Event) => any) | null;\n    readonly scriptURL: string;\n    readonly state: ServiceWorkerState;\n    postMessage(message: any, transfer: Transferable[]): void;\n    postMessage(message: any, options?: StructuredSerializeOptions): void;\n    addEventListener<K extends keyof ServiceWorkerEventMap>(type: K, listener: (this: ServiceWorker, ev: ServiceWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof ServiceWorkerEventMap>(type: K, listener: (this: ServiceWorker, ev: ServiceWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var ServiceWorker: {\n    prototype: ServiceWorker;\n    new(): ServiceWorker;\n};\n\ninterface ServiceWorkerContainerEventMap {\n    \"controllerchange\": Event;\n    \"message\": MessageEvent;\n    \"messageerror\": MessageEvent;\n}\n\n/**\n * The\\xA0ServiceWorkerContainer\\xA0interface of the\\xA0ServiceWorker API\\xA0provides an object representing the service worker as an overall unit in the network ecosystem, including facilities to register, unregister and update service workers, and access the state of service workers and their registrations.\n * Available only in secure contexts.\n */\ninterface ServiceWorkerContainer extends EventTarget {\n    readonly controller: ServiceWorker | null;\n    oncontrollerchange: ((this: ServiceWorkerContainer, ev: Event) => any) | null;\n    onmessage: ((this: ServiceWorkerContainer, ev: MessageEvent) => any) | null;\n    onmessageerror: ((this: ServiceWorkerContainer, ev: MessageEvent) => any) | null;\n    readonly ready: Promise<ServiceWorkerRegistration>;\n    getRegistration(clientURL?: string | URL): Promise<ServiceWorkerRegistration | undefined>;\n    getRegistrations(): Promise<ReadonlyArray<ServiceWorkerRegistration>>;\n    register(scriptURL: string | URL, options?: RegistrationOptions): Promise<ServiceWorkerRegistration>;\n    startMessages(): void;\n    addEventListener<K extends keyof ServiceWorkerContainerEventMap>(type: K, listener: (this: ServiceWorkerContainer, ev: ServiceWorkerContainerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof ServiceWorkerContainerEventMap>(type: K, listener: (this: ServiceWorkerContainer, ev: ServiceWorkerContainerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var ServiceWorkerContainer: {\n    prototype: ServiceWorkerContainer;\n    new(): ServiceWorkerContainer;\n};\n\ninterface ServiceWorkerRegistrationEventMap {\n    \"updatefound\": Event;\n}\n\n/**\n * This ServiceWorker API interface represents the service worker registration. You register a service worker to control one or more pages that share the same origin.\n * Available only in secure contexts.\n */\ninterface ServiceWorkerRegistration extends EventTarget {\n    readonly active: ServiceWorker | null;\n    readonly installing: ServiceWorker | null;\n    readonly navigationPreload: NavigationPreloadManager;\n    onupdatefound: ((this: ServiceWorkerRegistration, ev: Event) => any) | null;\n    readonly pushManager: PushManager;\n    readonly scope: string;\n    readonly updateViaCache: ServiceWorkerUpdateViaCache;\n    readonly waiting: ServiceWorker | null;\n    getNotifications(filter?: GetNotificationOptions): Promise<Notification[]>;\n    showNotification(title: string, options?: NotificationOptions): Promise<void>;\n    unregister(): Promise<boolean>;\n    update(): Promise<void>;\n    addEventListener<K extends keyof ServiceWorkerRegistrationEventMap>(type: K, listener: (this: ServiceWorkerRegistration, ev: ServiceWorkerRegistrationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof ServiceWorkerRegistrationEventMap>(type: K, listener: (this: ServiceWorkerRegistration, ev: ServiceWorkerRegistrationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var ServiceWorkerRegistration: {\n    prototype: ServiceWorkerRegistration;\n    new(): ServiceWorkerRegistration;\n};\n\ninterface ShadowRootEventMap {\n    \"slotchange\": Event;\n}\n\ninterface ShadowRoot extends DocumentFragment, DocumentOrShadowRoot, InnerHTML {\n    readonly delegatesFocus: boolean;\n    readonly host: Element;\n    readonly mode: ShadowRootMode;\n    onslotchange: ((this: ShadowRoot, ev: Event) => any) | null;\n    readonly slotAssignment: SlotAssignmentMode;\n    /** Throws a \"NotSupportedError\" DOMException if context object is a shadow root. */\n    addEventListener<K extends keyof ShadowRootEventMap>(type: K, listener: (this: ShadowRoot, ev: ShadowRootEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof ShadowRootEventMap>(type: K, listener: (this: ShadowRoot, ev: ShadowRootEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var ShadowRoot: {\n    prototype: ShadowRoot;\n    new(): ShadowRoot;\n};\n\ninterface SharedWorker extends EventTarget, AbstractWorker {\n    /** Returns sharedWorker's MessagePort object which can be used to communicate with the global environment. */\n    readonly port: MessagePort;\n    addEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: SharedWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: SharedWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SharedWorker: {\n    prototype: SharedWorker;\n    new(scriptURL: string | URL, options?: string | WorkerOptions): SharedWorker;\n};\n\ninterface Slottable {\n    readonly assignedSlot: HTMLSlotElement | null;\n}\n\ninterface SourceBufferEventMap {\n    \"abort\": Event;\n    \"error\": Event;\n    \"update\": Event;\n    \"updateend\": Event;\n    \"updatestart\": Event;\n}\n\n/** A chunk of media to be passed into an HTMLMediaElement and played, via a MediaSource\\xA0object. This can be made up of one or several media segments. */\ninterface SourceBuffer extends EventTarget {\n    appendWindowEnd: number;\n    appendWindowStart: number;\n    readonly buffered: TimeRanges;\n    mode: AppendMode;\n    onabort: ((this: SourceBuffer, ev: Event) => any) | null;\n    onerror: ((this: SourceBuffer, ev: Event) => any) | null;\n    onupdate: ((this: SourceBuffer, ev: Event) => any) | null;\n    onupdateend: ((this: SourceBuffer, ev: Event) => any) | null;\n    onupdatestart: ((this: SourceBuffer, ev: Event) => any) | null;\n    timestampOffset: number;\n    readonly updating: boolean;\n    abort(): void;\n    appendBuffer(data: BufferSource): void;\n    changeType(type: string): void;\n    remove(start: number, end: number): void;\n    addEventListener<K extends keyof SourceBufferEventMap>(type: K, listener: (this: SourceBuffer, ev: SourceBufferEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SourceBufferEventMap>(type: K, listener: (this: SourceBuffer, ev: SourceBufferEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SourceBuffer: {\n    prototype: SourceBuffer;\n    new(): SourceBuffer;\n};\n\ninterface SourceBufferListEventMap {\n    \"addsourcebuffer\": Event;\n    \"removesourcebuffer\": Event;\n}\n\n/** A simple container list for multiple SourceBuffer objects. */\ninterface SourceBufferList extends EventTarget {\n    readonly length: number;\n    onaddsourcebuffer: ((this: SourceBufferList, ev: Event) => any) | null;\n    onremovesourcebuffer: ((this: SourceBufferList, ev: Event) => any) | null;\n    addEventListener<K extends keyof SourceBufferListEventMap>(type: K, listener: (this: SourceBufferList, ev: SourceBufferListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SourceBufferListEventMap>(type: K, listener: (this: SourceBufferList, ev: SourceBufferListEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n    [index: number]: SourceBuffer;\n}\n\ndeclare var SourceBufferList: {\n    prototype: SourceBufferList;\n    new(): SourceBufferList;\n};\n\ninterface SpeechRecognitionAlternative {\n    readonly confidence: number;\n    readonly transcript: string;\n}\n\ndeclare var SpeechRecognitionAlternative: {\n    prototype: SpeechRecognitionAlternative;\n    new(): SpeechRecognitionAlternative;\n};\n\ninterface SpeechRecognitionResult {\n    readonly isFinal: boolean;\n    readonly length: number;\n    item(index: number): SpeechRecognitionAlternative;\n    [index: number]: SpeechRecognitionAlternative;\n}\n\ndeclare var SpeechRecognitionResult: {\n    prototype: SpeechRecognitionResult;\n    new(): SpeechRecognitionResult;\n};\n\ninterface SpeechRecognitionResultList {\n    readonly length: number;\n    item(index: number): SpeechRecognitionResult;\n    [index: number]: SpeechRecognitionResult;\n}\n\ndeclare var SpeechRecognitionResultList: {\n    prototype: SpeechRecognitionResultList;\n    new(): SpeechRecognitionResultList;\n};\n\ninterface SpeechSynthesisEventMap {\n    \"voiceschanged\": Event;\n}\n\n/** This Web Speech API interface is the controller interface for the speech service; this can be used to retrieve information about the synthesis voices available on the device, start and pause speech, and other commands besides. */\ninterface SpeechSynthesis extends EventTarget {\n    onvoiceschanged: ((this: SpeechSynthesis, ev: Event) => any) | null;\n    readonly paused: boolean;\n    readonly pending: boolean;\n    readonly speaking: boolean;\n    cancel(): void;\n    getVoices(): SpeechSynthesisVoice[];\n    pause(): void;\n    resume(): void;\n    speak(utterance: SpeechSynthesisUtterance): void;\n    addEventListener<K extends keyof SpeechSynthesisEventMap>(type: K, listener: (this: SpeechSynthesis, ev: SpeechSynthesisEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SpeechSynthesisEventMap>(type: K, listener: (this: SpeechSynthesis, ev: SpeechSynthesisEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SpeechSynthesis: {\n    prototype: SpeechSynthesis;\n    new(): SpeechSynthesis;\n};\n\ninterface SpeechSynthesisErrorEvent extends SpeechSynthesisEvent {\n    readonly error: SpeechSynthesisErrorCode;\n}\n\ndeclare var SpeechSynthesisErrorEvent: {\n    prototype: SpeechSynthesisErrorEvent;\n    new(type: string, eventInitDict: SpeechSynthesisErrorEventInit): SpeechSynthesisErrorEvent;\n};\n\n/** This Web Speech API interface contains information about the current state of SpeechSynthesisUtterance objects that have been processed in the speech service. */\ninterface SpeechSynthesisEvent extends Event {\n    readonly charIndex: number;\n    readonly charLength: number;\n    readonly elapsedTime: number;\n    readonly name: string;\n    readonly utterance: SpeechSynthesisUtterance;\n}\n\ndeclare var SpeechSynthesisEvent: {\n    prototype: SpeechSynthesisEvent;\n    new(type: string, eventInitDict: SpeechSynthesisEventInit): SpeechSynthesisEvent;\n};\n\ninterface SpeechSynthesisUtteranceEventMap {\n    \"boundary\": SpeechSynthesisEvent;\n    \"end\": SpeechSynthesisEvent;\n    \"error\": SpeechSynthesisErrorEvent;\n    \"mark\": SpeechSynthesisEvent;\n    \"pause\": SpeechSynthesisEvent;\n    \"resume\": SpeechSynthesisEvent;\n    \"start\": SpeechSynthesisEvent;\n}\n\n/** This Web Speech API interface represents a speech request. It contains the content the speech service should read and information about how to read it (e.g. language, pitch and volume.) */\ninterface SpeechSynthesisUtterance extends EventTarget {\n    lang: string;\n    onboundary: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;\n    onend: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;\n    onerror: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisErrorEvent) => any) | null;\n    onmark: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;\n    onpause: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;\n    onresume: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;\n    onstart: ((this: SpeechSynthesisUtterance, ev: SpeechSynthesisEvent) => any) | null;\n    pitch: number;\n    rate: number;\n    text: string;\n    voice: SpeechSynthesisVoice | null;\n    volume: number;\n    addEventListener<K extends keyof SpeechSynthesisUtteranceEventMap>(type: K, listener: (this: SpeechSynthesisUtterance, ev: SpeechSynthesisUtteranceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SpeechSynthesisUtteranceEventMap>(type: K, listener: (this: SpeechSynthesisUtterance, ev: SpeechSynthesisUtteranceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SpeechSynthesisUtterance: {\n    prototype: SpeechSynthesisUtterance;\n    new(text?: string): SpeechSynthesisUtterance;\n};\n\n/** This Web Speech API interface represents a voice that the system supports. Every SpeechSynthesisVoice has its own relative speech service including information about language, name and URI. */\ninterface SpeechSynthesisVoice {\n    readonly default: boolean;\n    readonly lang: string;\n    readonly localService: boolean;\n    readonly name: string;\n    readonly voiceURI: string;\n}\n\ndeclare var SpeechSynthesisVoice: {\n    prototype: SpeechSynthesisVoice;\n    new(): SpeechSynthesisVoice;\n};\n\ninterface StaticRange extends AbstractRange {\n}\n\ndeclare var StaticRange: {\n    prototype: StaticRange;\n    new(init: StaticRangeInit): StaticRange;\n};\n\n/** The pan property takes a unitless value between -1 (full left pan) and 1 (full right pan). This interface was introduced as a much simpler way to apply a simple panning effect than having to use a full PannerNode. */\ninterface StereoPannerNode extends AudioNode {\n    readonly pan: AudioParam;\n}\n\ndeclare var StereoPannerNode: {\n    prototype: StereoPannerNode;\n    new(context: BaseAudioContext, options?: StereoPannerOptions): StereoPannerNode;\n};\n\n/** This Web Storage API interface provides access to a particular domain's session or local storage. It allows, for example, the addition, modification, or deletion of stored data items. */\ninterface Storage {\n    /** Returns the number of key/value pairs. */\n    readonly length: number;\n    /**\n     * Removes all key/value pairs, if there are any.\n     *\n     * Dispatches a storage event on Window objects holding an equivalent Storage object.\n     */\n    clear(): void;\n    /** Returns the current value associated with the given key, or null if the given key does not exist. */\n    getItem(key: string): string | null;\n    /** Returns the name of the nth key, or null if n is greater than or equal to the number of key/value pairs. */\n    key(index: number): string | null;\n    /**\n     * Removes the key/value pair with the given key, if a key/value pair with the given key exists.\n     *\n     * Dispatches a storage event on Window objects holding an equivalent Storage object.\n     */\n    removeItem(key: string): void;\n    /**\n     * Sets the value of the pair identified by key to value, creating a new key/value pair if none existed for key previously.\n     *\n     * Throws a \"QuotaExceededError\" DOMException exception if the new value couldn't be set. (Setting could fail if, e.g., the user has disabled storage for the site, or if the quota has been exceeded.)\n     *\n     * Dispatches a storage event on Window objects holding an equivalent Storage object.\n     */\n    setItem(key: string, value: string): void;\n    [name: string]: any;\n}\n\ndeclare var Storage: {\n    prototype: Storage;\n    new(): Storage;\n};\n\n/** A StorageEvent is sent to a window when a storage area it has access to is changed within the context of another document. */\ninterface StorageEvent extends Event {\n    /** Returns the key of the storage item being changed. */\n    readonly key: string | null;\n    /** Returns the new value of the key of the storage item whose value is being changed. */\n    readonly newValue: string | null;\n    /** Returns the old value of the key of the storage item whose value is being changed. */\n    readonly oldValue: string | null;\n    /** Returns the Storage object that was affected. */\n    readonly storageArea: Storage | null;\n    /** Returns the URL of the document whose storage item changed. */\n    readonly url: string;\n    /** @deprecated */\n    initStorageEvent(type: string, bubbles?: boolean, cancelable?: boolean, key?: string | null, oldValue?: string | null, newValue?: string | null, url?: string | URL, storageArea?: Storage | null): void;\n}\n\ndeclare var StorageEvent: {\n    prototype: StorageEvent;\n    new(type: string, eventInitDict?: StorageEventInit): StorageEvent;\n};\n\n/** Available only in secure contexts. */\ninterface StorageManager {\n    estimate(): Promise<StorageEstimate>;\n    getDirectory(): Promise<FileSystemDirectoryHandle>;\n    persist(): Promise<boolean>;\n    persisted(): Promise<boolean>;\n}\n\ndeclare var StorageManager: {\n    prototype: StorageManager;\n    new(): StorageManager;\n};\n\n/** @deprecated */\ninterface StyleMedia {\n    type: string;\n    matchMedium(mediaquery: string): boolean;\n}\n\n/** A single style sheet. CSS style sheets will further implement the more specialized CSSStyleSheet interface. */\ninterface StyleSheet {\n    disabled: boolean;\n    readonly href: string | null;\n    readonly media: MediaList;\n    readonly ownerNode: Element | ProcessingInstruction | null;\n    readonly parentStyleSheet: CSSStyleSheet | null;\n    readonly title: string | null;\n    readonly type: string;\n}\n\ndeclare var StyleSheet: {\n    prototype: StyleSheet;\n    new(): StyleSheet;\n};\n\n/** A list of StyleSheet. */\ninterface StyleSheetList {\n    readonly length: number;\n    item(index: number): CSSStyleSheet | null;\n    [index: number]: CSSStyleSheet;\n}\n\ndeclare var StyleSheetList: {\n    prototype: StyleSheetList;\n    new(): StyleSheetList;\n};\n\ninterface SubmitEvent extends Event {\n    /** Returns the element representing the submit button that triggered the form submission, or null if the submission was not triggered by a button. */\n    readonly submitter: HTMLElement | null;\n}\n\ndeclare var SubmitEvent: {\n    prototype: SubmitEvent;\n    new(type: string, eventInitDict?: SubmitEventInit): SubmitEvent;\n};\n\n/**\n * This Web Crypto API interface provides a number of low-level cryptographic functions. It is accessed via the Crypto.subtle properties available in a window context (via Window.crypto).\n * Available only in secure contexts.\n */\ninterface SubtleCrypto {\n    decrypt(algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;\n    deriveBits(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, length: number): Promise<ArrayBuffer>;\n    deriveKey(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, derivedKeyType: AlgorithmIdentifier | AesDerivedKeyParams | HmacImportParams | HkdfParams | Pbkdf2Params, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;\n    digest(algorithm: AlgorithmIdentifier, data: BufferSource): Promise<ArrayBuffer>;\n    encrypt(algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;\n    exportKey(format: \"jwk\", key: CryptoKey): Promise<JsonWebKey>;\n    exportKey(format: Exclude<KeyFormat, \"jwk\">, key: CryptoKey): Promise<ArrayBuffer>;\n    generateKey(algorithm: RsaHashedKeyGenParams | EcKeyGenParams, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKeyPair>;\n    generateKey(algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;\n    generateKey(algorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair | CryptoKey>;\n    importKey(format: \"jwk\", keyData: JsonWebKey, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;\n    importKey(format: Exclude<KeyFormat, \"jwk\">, keyData: BufferSource, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;\n    sign(algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;\n    unwrapKey(format: KeyFormat, wrappedKey: BufferSource, unwrappingKey: CryptoKey, unwrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, unwrappedKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;\n    verify(algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, key: CryptoKey, signature: BufferSource, data: BufferSource): Promise<boolean>;\n    wrapKey(format: KeyFormat, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams): Promise<ArrayBuffer>;\n}\n\ndeclare var SubtleCrypto: {\n    prototype: SubtleCrypto;\n    new(): SubtleCrypto;\n};\n\n/** The textual content of Element or Attr. If an element has no markup within its content, it has a single child implementing Text that contains the element's text. However, if the element contains markup, it is parsed into information items and Text nodes that form its children. */\ninterface Text extends CharacterData, Slottable {\n    /** Returns the combined data of all direct Text node siblings. */\n    readonly wholeText: string;\n    /** Splits data at the given offset and returns the remainder as Text node. */\n    splitText(offset: number): Text;\n}\n\ndeclare var Text: {\n    prototype: Text;\n    new(data?: string): Text;\n};\n\n/** A decoder for a specific method, that is a specific character encoding, like utf-8, iso-8859-2, koi8, cp1261, gbk, etc.\\xA0A decoder takes a stream of bytes as input and emits a stream of code points. For a more scalable, non-native library, see StringView \\u2013 a C-like representation of strings based on typed arrays. */\ninterface TextDecoder extends TextDecoderCommon {\n    /**\n     * Returns the result of running encoding's decoder. The method can be invoked zero or more times with options's stream set to true, and then once without options's stream (or set to false), to process a fragmented input. If the invocation without options's stream (or set to false) has no input, it's clearest to omit both arguments.\n     *\n     * \\`\\`\\`\n     * var string = \"\", decoder = new TextDecoder(encoding), buffer;\n     * while(buffer = next_chunk()) {\n     *   string += decoder.decode(buffer, {stream:true});\n     * }\n     * string += decoder.decode(); // end-of-queue\n     * \\`\\`\\`\n     *\n     * If the error mode is \"fatal\" and encoding's decoder returns error, throws a TypeError.\n     */\n    decode(input?: BufferSource, options?: TextDecodeOptions): string;\n}\n\ndeclare var TextDecoder: {\n    prototype: TextDecoder;\n    new(label?: string, options?: TextDecoderOptions): TextDecoder;\n};\n\ninterface TextDecoderCommon {\n    /** Returns encoding's name, lowercased. */\n    readonly encoding: string;\n    /** Returns true if error mode is \"fatal\", otherwise false. */\n    readonly fatal: boolean;\n    /** Returns the value of ignore BOM. */\n    readonly ignoreBOM: boolean;\n}\n\ninterface TextDecoderStream extends GenericTransformStream, TextDecoderCommon {\n    readonly readable: ReadableStream<string>;\n    readonly writable: WritableStream<BufferSource>;\n}\n\ndeclare var TextDecoderStream: {\n    prototype: TextDecoderStream;\n    new(label?: string, options?: TextDecoderOptions): TextDecoderStream;\n};\n\n/** TextEncoder takes a stream of code points as input and emits a stream of bytes. For a more scalable, non-native library, see StringView \\u2013 a C-like representation of strings based on typed arrays. */\ninterface TextEncoder extends TextEncoderCommon {\n    /** Returns the result of running UTF-8's encoder. */\n    encode(input?: string): Uint8Array;\n    /** Runs the UTF-8 encoder on source, stores the result of that operation into destination, and returns the progress made as an object wherein read is the number of converted code units of source and written is the number of bytes modified in destination. */\n    encodeInto(source: string, destination: Uint8Array): TextEncoderEncodeIntoResult;\n}\n\ndeclare var TextEncoder: {\n    prototype: TextEncoder;\n    new(): TextEncoder;\n};\n\ninterface TextEncoderCommon {\n    /** Returns \"utf-8\". */\n    readonly encoding: string;\n}\n\ninterface TextEncoderStream extends GenericTransformStream, TextEncoderCommon {\n    readonly readable: ReadableStream<Uint8Array>;\n    readonly writable: WritableStream<string>;\n}\n\ndeclare var TextEncoderStream: {\n    prototype: TextEncoderStream;\n    new(): TextEncoderStream;\n};\n\n/** The dimensions of a piece of text in the canvas, as created by the CanvasRenderingContext2D.measureText() method. */\ninterface TextMetrics {\n    /** Returns the measurement described below. */\n    readonly actualBoundingBoxAscent: number;\n    /** Returns the measurement described below. */\n    readonly actualBoundingBoxDescent: number;\n    /** Returns the measurement described below. */\n    readonly actualBoundingBoxLeft: number;\n    /** Returns the measurement described below. */\n    readonly actualBoundingBoxRight: number;\n    /** Returns the measurement described below. */\n    readonly fontBoundingBoxAscent: number;\n    /** Returns the measurement described below. */\n    readonly fontBoundingBoxDescent: number;\n    /** Returns the measurement described below. */\n    readonly width: number;\n}\n\ndeclare var TextMetrics: {\n    prototype: TextMetrics;\n    new(): TextMetrics;\n};\n\ninterface TextTrackEventMap {\n    \"cuechange\": Event;\n}\n\n/** This interface also inherits properties from EventTarget. */\ninterface TextTrack extends EventTarget {\n    /** Returns the text track cues from the text track list of cues that are currently active (i.e. that start before the current playback position and end after it), as a TextTrackCueList object. */\n    readonly activeCues: TextTrackCueList | null;\n    /** Returns the text track list of cues, as a TextTrackCueList object. */\n    readonly cues: TextTrackCueList | null;\n    /**\n     * Returns the ID of the given track.\n     *\n     * For in-band tracks, this is the ID that can be used with a fragment if the format supports media fragment syntax, and that can be used with the getTrackById() method.\n     *\n     * For TextTrack objects corresponding to track elements, this is the ID of the track element.\n     */\n    readonly id: string;\n    /** Returns the text track in-band metadata track dispatch type string. */\n    readonly inBandMetadataTrackDispatchType: string;\n    /** Returns the text track kind string. */\n    readonly kind: TextTrackKind;\n    /** Returns the text track label, if there is one, or the empty string otherwise (indicating that a custom label probably needs to be generated from the other attributes of the object if the object is exposed to the user). */\n    readonly label: string;\n    /** Returns the text track language string. */\n    readonly language: string;\n    /**\n     * Returns the text track mode, represented by a string from the following list:\n     *\n     * Can be set, to change the mode.\n     */\n    mode: TextTrackMode;\n    oncuechange: ((this: TextTrack, ev: Event) => any) | null;\n    /** Adds the given cue to textTrack's text track list of cues. */\n    addCue(cue: TextTrackCue): void;\n    /** Removes the given cue from textTrack's text track list of cues. */\n    removeCue(cue: TextTrackCue): void;\n    addEventListener<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var TextTrack: {\n    prototype: TextTrack;\n    new(): TextTrack;\n};\n\ninterface TextTrackCueEventMap {\n    \"enter\": Event;\n    \"exit\": Event;\n}\n\n/** TextTrackCues represent a string of text that will be displayed for some duration of time on a TextTrack. This includes the start and end times that the cue will be displayed. A TextTrackCue cannot be used directly, instead one of the derived types (e.g. VTTCue) must be used. */\ninterface TextTrackCue extends EventTarget {\n    /**\n     * Returns the text track cue end time, in seconds.\n     *\n     * Can be set.\n     */\n    endTime: number;\n    /**\n     * Returns the text track cue identifier.\n     *\n     * Can be set.\n     */\n    id: string;\n    onenter: ((this: TextTrackCue, ev: Event) => any) | null;\n    onexit: ((this: TextTrackCue, ev: Event) => any) | null;\n    /**\n     * Returns true if the text track cue pause-on-exit flag is set, false otherwise.\n     *\n     * Can be set.\n     */\n    pauseOnExit: boolean;\n    /**\n     * Returns the text track cue start time, in seconds.\n     *\n     * Can be set.\n     */\n    startTime: number;\n    /** Returns the TextTrack object to which this text track cue belongs, if any, or null otherwise. */\n    readonly track: TextTrack | null;\n    addEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var TextTrackCue: {\n    prototype: TextTrackCue;\n    new(): TextTrackCue;\n};\n\ninterface TextTrackCueList {\n    /** Returns the number of cues in the list. */\n    readonly length: number;\n    /**\n     * Returns the first text track cue (in text track cue order) with text track cue identifier id.\n     *\n     * Returns null if none of the cues have the given identifier or if the argument is the empty string.\n     */\n    getCueById(id: string): TextTrackCue | null;\n    [index: number]: TextTrackCue;\n}\n\ndeclare var TextTrackCueList: {\n    prototype: TextTrackCueList;\n    new(): TextTrackCueList;\n};\n\ninterface TextTrackListEventMap {\n    \"addtrack\": TrackEvent;\n    \"change\": Event;\n    \"removetrack\": TrackEvent;\n}\n\ninterface TextTrackList extends EventTarget {\n    readonly length: number;\n    onaddtrack: ((this: TextTrackList, ev: TrackEvent) => any) | null;\n    onchange: ((this: TextTrackList, ev: Event) => any) | null;\n    onremovetrack: ((this: TextTrackList, ev: TrackEvent) => any) | null;\n    getTrackById(id: string): TextTrack | null;\n    addEventListener<K extends keyof TextTrackListEventMap>(type: K, listener: (this: TextTrackList, ev: TextTrackListEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof TextTrackListEventMap>(type: K, listener: (this: TextTrackList, ev: TextTrackListEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n    [index: number]: TextTrack;\n}\n\ndeclare var TextTrackList: {\n    prototype: TextTrackList;\n    new(): TextTrackList;\n};\n\n/** Used to represent a set of time ranges, primarily for the purpose of tracking which portions of media have been buffered when loading it for use by the <audio> and <video>\\xA0elements. */\ninterface TimeRanges {\n    /** Returns the number of ranges in the object. */\n    readonly length: number;\n    /**\n     * Returns the time for the end of the range with the given index.\n     *\n     * Throws an \"IndexSizeError\" DOMException if the index is out of range.\n     */\n    end(index: number): number;\n    /**\n     * Returns the time for the start of the range with the given index.\n     *\n     * Throws an \"IndexSizeError\" DOMException if the index is out of range.\n     */\n    start(index: number): number;\n}\n\ndeclare var TimeRanges: {\n    prototype: TimeRanges;\n    new(): TimeRanges;\n};\n\n/** A single contact point on a touch-sensitive device. The contact point is commonly a finger or stylus and the device may be a touchscreen or trackpad. */\ninterface Touch {\n    readonly clientX: number;\n    readonly clientY: number;\n    readonly force: number;\n    readonly identifier: number;\n    readonly pageX: number;\n    readonly pageY: number;\n    readonly radiusX: number;\n    readonly radiusY: number;\n    readonly rotationAngle: number;\n    readonly screenX: number;\n    readonly screenY: number;\n    readonly target: EventTarget;\n}\n\ndeclare var Touch: {\n    prototype: Touch;\n    new(touchInitDict: TouchInit): Touch;\n};\n\n/** An event sent when the state of contacts with a touch-sensitive surface changes. This surface can be a touch screen or trackpad, for example. The event can describe one or more points of contact with the screen and includes support for detecting movement, addition and removal of contact points, and so forth. */\ninterface TouchEvent extends UIEvent {\n    readonly altKey: boolean;\n    readonly changedTouches: TouchList;\n    readonly ctrlKey: boolean;\n    readonly metaKey: boolean;\n    readonly shiftKey: boolean;\n    readonly targetTouches: TouchList;\n    readonly touches: TouchList;\n}\n\ndeclare var TouchEvent: {\n    prototype: TouchEvent;\n    new(type: string, eventInitDict?: TouchEventInit): TouchEvent;\n};\n\n/** A list of contact points on a touch surface. For example, if the user has three fingers on the touch surface (such as a screen or trackpad), the corresponding TouchList object would have one Touch object for each finger, for a total of three entries. */\ninterface TouchList {\n    readonly length: number;\n    item(index: number): Touch | null;\n    [index: number]: Touch;\n}\n\ndeclare var TouchList: {\n    prototype: TouchList;\n    new(): TouchList;\n};\n\n/** The TrackEvent interface, part of the HTML DOM specification, is used for events which represent changes to the set of available tracks on an HTML media element; these events are addtrack and removetrack. */\ninterface TrackEvent extends Event {\n    /** Returns the track object (TextTrack, AudioTrack, or VideoTrack) to which the event relates. */\n    readonly track: TextTrack | null;\n}\n\ndeclare var TrackEvent: {\n    prototype: TrackEvent;\n    new(type: string, eventInitDict?: TrackEventInit): TrackEvent;\n};\n\ninterface TransformStream<I = any, O = any> {\n    readonly readable: ReadableStream<O>;\n    readonly writable: WritableStream<I>;\n}\n\ndeclare var TransformStream: {\n    prototype: TransformStream;\n    new<I = any, O = any>(transformer?: Transformer<I, O>, writableStrategy?: QueuingStrategy<I>, readableStrategy?: QueuingStrategy<O>): TransformStream<I, O>;\n};\n\ninterface TransformStreamDefaultController<O = any> {\n    readonly desiredSize: number | null;\n    enqueue(chunk?: O): void;\n    error(reason?: any): void;\n    terminate(): void;\n}\n\ndeclare var TransformStreamDefaultController: {\n    prototype: TransformStreamDefaultController;\n    new(): TransformStreamDefaultController;\n};\n\n/** Events providing information related to transitions. */\ninterface TransitionEvent extends Event {\n    readonly elapsedTime: number;\n    readonly propertyName: string;\n    readonly pseudoElement: string;\n}\n\ndeclare var TransitionEvent: {\n    prototype: TransitionEvent;\n    new(type: string, transitionEventInitDict?: TransitionEventInit): TransitionEvent;\n};\n\n/** The nodes of a document subtree and a position within them. */\ninterface TreeWalker {\n    currentNode: Node;\n    readonly filter: NodeFilter | null;\n    readonly root: Node;\n    readonly whatToShow: number;\n    firstChild(): Node | null;\n    lastChild(): Node | null;\n    nextNode(): Node | null;\n    nextSibling(): Node | null;\n    parentNode(): Node | null;\n    previousNode(): Node | null;\n    previousSibling(): Node | null;\n}\n\ndeclare var TreeWalker: {\n    prototype: TreeWalker;\n    new(): TreeWalker;\n};\n\n/** Simple user interface events. */\ninterface UIEvent extends Event {\n    readonly detail: number;\n    readonly view: Window | null;\n    /** @deprecated */\n    readonly which: number;\n    /** @deprecated */\n    initUIEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: Window | null, detailArg?: number): void;\n}\n\ndeclare var UIEvent: {\n    prototype: UIEvent;\n    new(type: string, eventInitDict?: UIEventInit): UIEvent;\n};\n\n/** The URL\\xA0interface represents an object providing static methods used for creating object URLs. */\ninterface URL {\n    hash: string;\n    host: string;\n    hostname: string;\n    href: string;\n    toString(): string;\n    readonly origin: string;\n    password: string;\n    pathname: string;\n    port: string;\n    protocol: string;\n    search: string;\n    readonly searchParams: URLSearchParams;\n    username: string;\n    toJSON(): string;\n}\n\ndeclare var URL: {\n    prototype: URL;\n    new(url: string | URL, base?: string | URL): URL;\n    createObjectURL(obj: Blob | MediaSource): string;\n    revokeObjectURL(url: string): void;\n};\n\ntype webkitURL = URL;\ndeclare var webkitURL: typeof URL;\n\ninterface URLSearchParams {\n    /** Appends a specified key/value pair as a new search parameter. */\n    append(name: string, value: string): void;\n    /** Deletes the given search parameter, and its associated value, from the list of all search parameters. */\n    delete(name: string): void;\n    /** Returns the first value associated to the given search parameter. */\n    get(name: string): string | null;\n    /** Returns all the values association with a given search parameter. */\n    getAll(name: string): string[];\n    /** Returns a Boolean indicating if such a search parameter exists. */\n    has(name: string): boolean;\n    /** Sets the value associated to a given search parameter to the given value. If there were several values, delete the others. */\n    set(name: string, value: string): void;\n    sort(): void;\n    /** Returns a string containing a query string suitable for use in a URL. Does not include the question mark. */\n    toString(): string;\n    forEach(callbackfn: (value: string, key: string, parent: URLSearchParams) => void, thisArg?: any): void;\n}\n\ndeclare var URLSearchParams: {\n    prototype: URLSearchParams;\n    new(init?: string[][] | Record<string, string> | string | URLSearchParams): URLSearchParams;\n    toString(): string;\n};\n\ninterface VTTCue extends TextTrackCue {\n    align: AlignSetting;\n    line: LineAndPositionSetting;\n    lineAlign: LineAlignSetting;\n    position: LineAndPositionSetting;\n    positionAlign: PositionAlignSetting;\n    region: VTTRegion | null;\n    size: number;\n    snapToLines: boolean;\n    text: string;\n    vertical: DirectionSetting;\n    getCueAsHTML(): DocumentFragment;\n    addEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: VTTCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: VTTCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var VTTCue: {\n    prototype: VTTCue;\n    new(startTime: number, endTime: number, text: string): VTTCue;\n};\n\ninterface VTTRegion {\n    id: string;\n    lines: number;\n    regionAnchorX: number;\n    regionAnchorY: number;\n    scroll: ScrollSetting;\n    viewportAnchorX: number;\n    viewportAnchorY: number;\n    width: number;\n}\n\ndeclare var VTTRegion: {\n    prototype: VTTRegion;\n    new(): VTTRegion;\n};\n\n/** The validity states that an element can be in, with respect to constraint validation. Together, they help explain why an element's value fails to validate, if it's not valid. */\ninterface ValidityState {\n    readonly badInput: boolean;\n    readonly customError: boolean;\n    readonly patternMismatch: boolean;\n    readonly rangeOverflow: boolean;\n    readonly rangeUnderflow: boolean;\n    readonly stepMismatch: boolean;\n    readonly tooLong: boolean;\n    readonly tooShort: boolean;\n    readonly typeMismatch: boolean;\n    readonly valid: boolean;\n    readonly valueMissing: boolean;\n}\n\ndeclare var ValidityState: {\n    prototype: ValidityState;\n    new(): ValidityState;\n};\n\ninterface VideoColorSpace {\n    readonly fullRange: boolean | null;\n    readonly matrix: VideoMatrixCoefficients | null;\n    readonly primaries: VideoColorPrimaries | null;\n    readonly transfer: VideoTransferCharacteristics | null;\n    toJSON(): VideoColorSpaceInit;\n}\n\ndeclare var VideoColorSpace: {\n    prototype: VideoColorSpace;\n    new(init?: VideoColorSpaceInit): VideoColorSpace;\n};\n\n/** Returned by the HTMLVideoElement.getVideoPlaybackQuality() method and contains metrics that can be used to determine the playback quality of a video. */\ninterface VideoPlaybackQuality {\n    /** @deprecated */\n    readonly corruptedVideoFrames: number;\n    readonly creationTime: DOMHighResTimeStamp;\n    readonly droppedVideoFrames: number;\n    readonly totalVideoFrames: number;\n}\n\ndeclare var VideoPlaybackQuality: {\n    prototype: VideoPlaybackQuality;\n    new(): VideoPlaybackQuality;\n};\n\ninterface VisualViewportEventMap {\n    \"resize\": Event;\n    \"scroll\": Event;\n}\n\ninterface VisualViewport extends EventTarget {\n    readonly height: number;\n    readonly offsetLeft: number;\n    readonly offsetTop: number;\n    onresize: ((this: VisualViewport, ev: Event) => any) | null;\n    onscroll: ((this: VisualViewport, ev: Event) => any) | null;\n    readonly pageLeft: number;\n    readonly pageTop: number;\n    readonly scale: number;\n    readonly width: number;\n    addEventListener<K extends keyof VisualViewportEventMap>(type: K, listener: (this: VisualViewport, ev: VisualViewportEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof VisualViewportEventMap>(type: K, listener: (this: VisualViewport, ev: VisualViewportEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var VisualViewport: {\n    prototype: VisualViewport;\n    new(): VisualViewport;\n};\n\ninterface WEBGL_color_buffer_float {\n    readonly RGBA32F_EXT: 0x8814;\n    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211;\n    readonly UNSIGNED_NORMALIZED_EXT: 0x8C17;\n}\n\ninterface WEBGL_compressed_texture_astc {\n    getSupportedProfiles(): string[];\n    readonly COMPRESSED_RGBA_ASTC_4x4_KHR: 0x93B0;\n    readonly COMPRESSED_RGBA_ASTC_5x4_KHR: 0x93B1;\n    readonly COMPRESSED_RGBA_ASTC_5x5_KHR: 0x93B2;\n    readonly COMPRESSED_RGBA_ASTC_6x5_KHR: 0x93B3;\n    readonly COMPRESSED_RGBA_ASTC_6x6_KHR: 0x93B4;\n    readonly COMPRESSED_RGBA_ASTC_8x5_KHR: 0x93B5;\n    readonly COMPRESSED_RGBA_ASTC_8x6_KHR: 0x93B6;\n    readonly COMPRESSED_RGBA_ASTC_8x8_KHR: 0x93B7;\n    readonly COMPRESSED_RGBA_ASTC_10x5_KHR: 0x93B8;\n    readonly COMPRESSED_RGBA_ASTC_10x6_KHR: 0x93B9;\n    readonly COMPRESSED_RGBA_ASTC_10x8_KHR: 0x93BA;\n    readonly COMPRESSED_RGBA_ASTC_10x10_KHR: 0x93BB;\n    readonly COMPRESSED_RGBA_ASTC_12x10_KHR: 0x93BC;\n    readonly COMPRESSED_RGBA_ASTC_12x12_KHR: 0x93BD;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: 0x93D0;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: 0x93D1;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: 0x93D2;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: 0x93D3;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: 0x93D4;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: 0x93D5;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: 0x93D6;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: 0x93D7;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: 0x93D8;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: 0x93D9;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: 0x93DA;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: 0x93DB;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: 0x93DC;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: 0x93DD;\n}\n\ninterface WEBGL_compressed_texture_etc {\n    readonly COMPRESSED_R11_EAC: 0x9270;\n    readonly COMPRESSED_SIGNED_R11_EAC: 0x9271;\n    readonly COMPRESSED_RG11_EAC: 0x9272;\n    readonly COMPRESSED_SIGNED_RG11_EAC: 0x9273;\n    readonly COMPRESSED_RGB8_ETC2: 0x9274;\n    readonly COMPRESSED_SRGB8_ETC2: 0x9275;\n    readonly COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9276;\n    readonly COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9277;\n    readonly COMPRESSED_RGBA8_ETC2_EAC: 0x9278;\n    readonly COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9279;\n}\n\ninterface WEBGL_compressed_texture_etc1 {\n    readonly COMPRESSED_RGB_ETC1_WEBGL: 0x8D64;\n}\n\n/** The WEBGL_compressed_texture_s3tc extension is part of the WebGL API and exposes four S3TC compressed texture formats. */\ninterface WEBGL_compressed_texture_s3tc {\n    readonly COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83F0;\n    readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83F1;\n    readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83F2;\n    readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83F3;\n}\n\ninterface WEBGL_compressed_texture_s3tc_srgb {\n    readonly COMPRESSED_SRGB_S3TC_DXT1_EXT: 0x8C4C;\n    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 0x8C4D;\n    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 0x8C4E;\n    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 0x8C4F;\n}\n\n/** The WEBGL_debug_renderer_info extension is part of the WebGL API and exposes two constants with information about the graphics driver for debugging purposes. */\ninterface WEBGL_debug_renderer_info {\n    readonly UNMASKED_VENDOR_WEBGL: 0x9245;\n    readonly UNMASKED_RENDERER_WEBGL: 0x9246;\n}\n\ninterface WEBGL_debug_shaders {\n    getTranslatedShaderSource(shader: WebGLShader): string;\n}\n\n/** The WEBGL_depth_texture extension is part of the WebGL API and defines 2D depth and depth-stencil textures. */\ninterface WEBGL_depth_texture {\n    readonly UNSIGNED_INT_24_8_WEBGL: 0x84FA;\n}\n\ninterface WEBGL_draw_buffers {\n    drawBuffersWEBGL(buffers: GLenum[]): void;\n    readonly COLOR_ATTACHMENT0_WEBGL: 0x8CE0;\n    readonly COLOR_ATTACHMENT1_WEBGL: 0x8CE1;\n    readonly COLOR_ATTACHMENT2_WEBGL: 0x8CE2;\n    readonly COLOR_ATTACHMENT3_WEBGL: 0x8CE3;\n    readonly COLOR_ATTACHMENT4_WEBGL: 0x8CE4;\n    readonly COLOR_ATTACHMENT5_WEBGL: 0x8CE5;\n    readonly COLOR_ATTACHMENT6_WEBGL: 0x8CE6;\n    readonly COLOR_ATTACHMENT7_WEBGL: 0x8CE7;\n    readonly COLOR_ATTACHMENT8_WEBGL: 0x8CE8;\n    readonly COLOR_ATTACHMENT9_WEBGL: 0x8CE9;\n    readonly COLOR_ATTACHMENT10_WEBGL: 0x8CEA;\n    readonly COLOR_ATTACHMENT11_WEBGL: 0x8CEB;\n    readonly COLOR_ATTACHMENT12_WEBGL: 0x8CEC;\n    readonly COLOR_ATTACHMENT13_WEBGL: 0x8CED;\n    readonly COLOR_ATTACHMENT14_WEBGL: 0x8CEE;\n    readonly COLOR_ATTACHMENT15_WEBGL: 0x8CEF;\n    readonly DRAW_BUFFER0_WEBGL: 0x8825;\n    readonly DRAW_BUFFER1_WEBGL: 0x8826;\n    readonly DRAW_BUFFER2_WEBGL: 0x8827;\n    readonly DRAW_BUFFER3_WEBGL: 0x8828;\n    readonly DRAW_BUFFER4_WEBGL: 0x8829;\n    readonly DRAW_BUFFER5_WEBGL: 0x882A;\n    readonly DRAW_BUFFER6_WEBGL: 0x882B;\n    readonly DRAW_BUFFER7_WEBGL: 0x882C;\n    readonly DRAW_BUFFER8_WEBGL: 0x882D;\n    readonly DRAW_BUFFER9_WEBGL: 0x882E;\n    readonly DRAW_BUFFER10_WEBGL: 0x882F;\n    readonly DRAW_BUFFER11_WEBGL: 0x8830;\n    readonly DRAW_BUFFER12_WEBGL: 0x8831;\n    readonly DRAW_BUFFER13_WEBGL: 0x8832;\n    readonly DRAW_BUFFER14_WEBGL: 0x8833;\n    readonly DRAW_BUFFER15_WEBGL: 0x8834;\n    readonly MAX_COLOR_ATTACHMENTS_WEBGL: 0x8CDF;\n    readonly MAX_DRAW_BUFFERS_WEBGL: 0x8824;\n}\n\ninterface WEBGL_lose_context {\n    loseContext(): void;\n    restoreContext(): void;\n}\n\ninterface WEBGL_multi_draw {\n    multiDrawArraysInstancedWEBGL(mode: GLenum, firstsList: Int32Array | GLint[], firstsOffset: GLuint, countsList: Int32Array | GLsizei[], countsOffset: GLuint, instanceCountsList: Int32Array | GLsizei[], instanceCountsOffset: GLuint, drawcount: GLsizei): void;\n    multiDrawArraysWEBGL(mode: GLenum, firstsList: Int32Array | GLint[], firstsOffset: GLuint, countsList: Int32Array | GLsizei[], countsOffset: GLuint, drawcount: GLsizei): void;\n    multiDrawElementsInstancedWEBGL(mode: GLenum, countsList: Int32Array | GLsizei[], countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | GLsizei[], offsetsOffset: GLuint, instanceCountsList: Int32Array | GLsizei[], instanceCountsOffset: GLuint, drawcount: GLsizei): void;\n    multiDrawElementsWEBGL(mode: GLenum, countsList: Int32Array | GLsizei[], countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | GLsizei[], offsetsOffset: GLuint, drawcount: GLsizei): void;\n}\n\n/** A WaveShaperNode always has exactly one input and one output. */\ninterface WaveShaperNode extends AudioNode {\n    curve: Float32Array | null;\n    oversample: OverSampleType;\n}\n\ndeclare var WaveShaperNode: {\n    prototype: WaveShaperNode;\n    new(context: BaseAudioContext, options?: WaveShaperOptions): WaveShaperNode;\n};\n\ninterface WebGL2RenderingContext extends WebGL2RenderingContextBase, WebGL2RenderingContextOverloads, WebGLRenderingContextBase {\n}\n\ndeclare var WebGL2RenderingContext: {\n    prototype: WebGL2RenderingContext;\n    new(): WebGL2RenderingContext;\n    readonly READ_BUFFER: 0x0C02;\n    readonly UNPACK_ROW_LENGTH: 0x0CF2;\n    readonly UNPACK_SKIP_ROWS: 0x0CF3;\n    readonly UNPACK_SKIP_PIXELS: 0x0CF4;\n    readonly PACK_ROW_LENGTH: 0x0D02;\n    readonly PACK_SKIP_ROWS: 0x0D03;\n    readonly PACK_SKIP_PIXELS: 0x0D04;\n    readonly COLOR: 0x1800;\n    readonly DEPTH: 0x1801;\n    readonly STENCIL: 0x1802;\n    readonly RED: 0x1903;\n    readonly RGB8: 0x8051;\n    readonly RGBA8: 0x8058;\n    readonly RGB10_A2: 0x8059;\n    readonly TEXTURE_BINDING_3D: 0x806A;\n    readonly UNPACK_SKIP_IMAGES: 0x806D;\n    readonly UNPACK_IMAGE_HEIGHT: 0x806E;\n    readonly TEXTURE_3D: 0x806F;\n    readonly TEXTURE_WRAP_R: 0x8072;\n    readonly MAX_3D_TEXTURE_SIZE: 0x8073;\n    readonly UNSIGNED_INT_2_10_10_10_REV: 0x8368;\n    readonly MAX_ELEMENTS_VERTICES: 0x80E8;\n    readonly MAX_ELEMENTS_INDICES: 0x80E9;\n    readonly TEXTURE_MIN_LOD: 0x813A;\n    readonly TEXTURE_MAX_LOD: 0x813B;\n    readonly TEXTURE_BASE_LEVEL: 0x813C;\n    readonly TEXTURE_MAX_LEVEL: 0x813D;\n    readonly MIN: 0x8007;\n    readonly MAX: 0x8008;\n    readonly DEPTH_COMPONENT24: 0x81A6;\n    readonly MAX_TEXTURE_LOD_BIAS: 0x84FD;\n    readonly TEXTURE_COMPARE_MODE: 0x884C;\n    readonly TEXTURE_COMPARE_FUNC: 0x884D;\n    readonly CURRENT_QUERY: 0x8865;\n    readonly QUERY_RESULT: 0x8866;\n    readonly QUERY_RESULT_AVAILABLE: 0x8867;\n    readonly STREAM_READ: 0x88E1;\n    readonly STREAM_COPY: 0x88E2;\n    readonly STATIC_READ: 0x88E5;\n    readonly STATIC_COPY: 0x88E6;\n    readonly DYNAMIC_READ: 0x88E9;\n    readonly DYNAMIC_COPY: 0x88EA;\n    readonly MAX_DRAW_BUFFERS: 0x8824;\n    readonly DRAW_BUFFER0: 0x8825;\n    readonly DRAW_BUFFER1: 0x8826;\n    readonly DRAW_BUFFER2: 0x8827;\n    readonly DRAW_BUFFER3: 0x8828;\n    readonly DRAW_BUFFER4: 0x8829;\n    readonly DRAW_BUFFER5: 0x882A;\n    readonly DRAW_BUFFER6: 0x882B;\n    readonly DRAW_BUFFER7: 0x882C;\n    readonly DRAW_BUFFER8: 0x882D;\n    readonly DRAW_BUFFER9: 0x882E;\n    readonly DRAW_BUFFER10: 0x882F;\n    readonly DRAW_BUFFER11: 0x8830;\n    readonly DRAW_BUFFER12: 0x8831;\n    readonly DRAW_BUFFER13: 0x8832;\n    readonly DRAW_BUFFER14: 0x8833;\n    readonly DRAW_BUFFER15: 0x8834;\n    readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8B49;\n    readonly MAX_VERTEX_UNIFORM_COMPONENTS: 0x8B4A;\n    readonly SAMPLER_3D: 0x8B5F;\n    readonly SAMPLER_2D_SHADOW: 0x8B62;\n    readonly FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8B8B;\n    readonly PIXEL_PACK_BUFFER: 0x88EB;\n    readonly PIXEL_UNPACK_BUFFER: 0x88EC;\n    readonly PIXEL_PACK_BUFFER_BINDING: 0x88ED;\n    readonly PIXEL_UNPACK_BUFFER_BINDING: 0x88EF;\n    readonly FLOAT_MAT2x3: 0x8B65;\n    readonly FLOAT_MAT2x4: 0x8B66;\n    readonly FLOAT_MAT3x2: 0x8B67;\n    readonly FLOAT_MAT3x4: 0x8B68;\n    readonly FLOAT_MAT4x2: 0x8B69;\n    readonly FLOAT_MAT4x3: 0x8B6A;\n    readonly SRGB: 0x8C40;\n    readonly SRGB8: 0x8C41;\n    readonly SRGB8_ALPHA8: 0x8C43;\n    readonly COMPARE_REF_TO_TEXTURE: 0x884E;\n    readonly RGBA32F: 0x8814;\n    readonly RGB32F: 0x8815;\n    readonly RGBA16F: 0x881A;\n    readonly RGB16F: 0x881B;\n    readonly VERTEX_ATTRIB_ARRAY_INTEGER: 0x88FD;\n    readonly MAX_ARRAY_TEXTURE_LAYERS: 0x88FF;\n    readonly MIN_PROGRAM_TEXEL_OFFSET: 0x8904;\n    readonly MAX_PROGRAM_TEXEL_OFFSET: 0x8905;\n    readonly MAX_VARYING_COMPONENTS: 0x8B4B;\n    readonly TEXTURE_2D_ARRAY: 0x8C1A;\n    readonly TEXTURE_BINDING_2D_ARRAY: 0x8C1D;\n    readonly R11F_G11F_B10F: 0x8C3A;\n    readonly UNSIGNED_INT_10F_11F_11F_REV: 0x8C3B;\n    readonly RGB9_E5: 0x8C3D;\n    readonly UNSIGNED_INT_5_9_9_9_REV: 0x8C3E;\n    readonly TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8C7F;\n    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8C80;\n    readonly TRANSFORM_FEEDBACK_VARYINGS: 0x8C83;\n    readonly TRANSFORM_FEEDBACK_BUFFER_START: 0x8C84;\n    readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8C85;\n    readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8C88;\n    readonly RASTERIZER_DISCARD: 0x8C89;\n    readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8C8A;\n    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8C8B;\n    readonly INTERLEAVED_ATTRIBS: 0x8C8C;\n    readonly SEPARATE_ATTRIBS: 0x8C8D;\n    readonly TRANSFORM_FEEDBACK_BUFFER: 0x8C8E;\n    readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8C8F;\n    readonly RGBA32UI: 0x8D70;\n    readonly RGB32UI: 0x8D71;\n    readonly RGBA16UI: 0x8D76;\n    readonly RGB16UI: 0x8D77;\n    readonly RGBA8UI: 0x8D7C;\n    readonly RGB8UI: 0x8D7D;\n    readonly RGBA32I: 0x8D82;\n    readonly RGB32I: 0x8D83;\n    readonly RGBA16I: 0x8D88;\n    readonly RGB16I: 0x8D89;\n    readonly RGBA8I: 0x8D8E;\n    readonly RGB8I: 0x8D8F;\n    readonly RED_INTEGER: 0x8D94;\n    readonly RGB_INTEGER: 0x8D98;\n    readonly RGBA_INTEGER: 0x8D99;\n    readonly SAMPLER_2D_ARRAY: 0x8DC1;\n    readonly SAMPLER_2D_ARRAY_SHADOW: 0x8DC4;\n    readonly SAMPLER_CUBE_SHADOW: 0x8DC5;\n    readonly UNSIGNED_INT_VEC2: 0x8DC6;\n    readonly UNSIGNED_INT_VEC3: 0x8DC7;\n    readonly UNSIGNED_INT_VEC4: 0x8DC8;\n    readonly INT_SAMPLER_2D: 0x8DCA;\n    readonly INT_SAMPLER_3D: 0x8DCB;\n    readonly INT_SAMPLER_CUBE: 0x8DCC;\n    readonly INT_SAMPLER_2D_ARRAY: 0x8DCF;\n    readonly UNSIGNED_INT_SAMPLER_2D: 0x8DD2;\n    readonly UNSIGNED_INT_SAMPLER_3D: 0x8DD3;\n    readonly UNSIGNED_INT_SAMPLER_CUBE: 0x8DD4;\n    readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8DD7;\n    readonly DEPTH_COMPONENT32F: 0x8CAC;\n    readonly DEPTH32F_STENCIL8: 0x8CAD;\n    readonly FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8DAD;\n    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210;\n    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211;\n    readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212;\n    readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213;\n    readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214;\n    readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215;\n    readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216;\n    readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217;\n    readonly FRAMEBUFFER_DEFAULT: 0x8218;\n    readonly UNSIGNED_INT_24_8: 0x84FA;\n    readonly DEPTH24_STENCIL8: 0x88F0;\n    readonly UNSIGNED_NORMALIZED: 0x8C17;\n    readonly DRAW_FRAMEBUFFER_BINDING: 0x8CA6;\n    readonly READ_FRAMEBUFFER: 0x8CA8;\n    readonly DRAW_FRAMEBUFFER: 0x8CA9;\n    readonly READ_FRAMEBUFFER_BINDING: 0x8CAA;\n    readonly RENDERBUFFER_SAMPLES: 0x8CAB;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8CD4;\n    readonly MAX_COLOR_ATTACHMENTS: 0x8CDF;\n    readonly COLOR_ATTACHMENT1: 0x8CE1;\n    readonly COLOR_ATTACHMENT2: 0x8CE2;\n    readonly COLOR_ATTACHMENT3: 0x8CE3;\n    readonly COLOR_ATTACHMENT4: 0x8CE4;\n    readonly COLOR_ATTACHMENT5: 0x8CE5;\n    readonly COLOR_ATTACHMENT6: 0x8CE6;\n    readonly COLOR_ATTACHMENT7: 0x8CE7;\n    readonly COLOR_ATTACHMENT8: 0x8CE8;\n    readonly COLOR_ATTACHMENT9: 0x8CE9;\n    readonly COLOR_ATTACHMENT10: 0x8CEA;\n    readonly COLOR_ATTACHMENT11: 0x8CEB;\n    readonly COLOR_ATTACHMENT12: 0x8CEC;\n    readonly COLOR_ATTACHMENT13: 0x8CED;\n    readonly COLOR_ATTACHMENT14: 0x8CEE;\n    readonly COLOR_ATTACHMENT15: 0x8CEF;\n    readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8D56;\n    readonly MAX_SAMPLES: 0x8D57;\n    readonly HALF_FLOAT: 0x140B;\n    readonly RG: 0x8227;\n    readonly RG_INTEGER: 0x8228;\n    readonly R8: 0x8229;\n    readonly RG8: 0x822B;\n    readonly R16F: 0x822D;\n    readonly R32F: 0x822E;\n    readonly RG16F: 0x822F;\n    readonly RG32F: 0x8230;\n    readonly R8I: 0x8231;\n    readonly R8UI: 0x8232;\n    readonly R16I: 0x8233;\n    readonly R16UI: 0x8234;\n    readonly R32I: 0x8235;\n    readonly R32UI: 0x8236;\n    readonly RG8I: 0x8237;\n    readonly RG8UI: 0x8238;\n    readonly RG16I: 0x8239;\n    readonly RG16UI: 0x823A;\n    readonly RG32I: 0x823B;\n    readonly RG32UI: 0x823C;\n    readonly VERTEX_ARRAY_BINDING: 0x85B5;\n    readonly R8_SNORM: 0x8F94;\n    readonly RG8_SNORM: 0x8F95;\n    readonly RGB8_SNORM: 0x8F96;\n    readonly RGBA8_SNORM: 0x8F97;\n    readonly SIGNED_NORMALIZED: 0x8F9C;\n    readonly COPY_READ_BUFFER: 0x8F36;\n    readonly COPY_WRITE_BUFFER: 0x8F37;\n    readonly COPY_READ_BUFFER_BINDING: 0x8F36;\n    readonly COPY_WRITE_BUFFER_BINDING: 0x8F37;\n    readonly UNIFORM_BUFFER: 0x8A11;\n    readonly UNIFORM_BUFFER_BINDING: 0x8A28;\n    readonly UNIFORM_BUFFER_START: 0x8A29;\n    readonly UNIFORM_BUFFER_SIZE: 0x8A2A;\n    readonly MAX_VERTEX_UNIFORM_BLOCKS: 0x8A2B;\n    readonly MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8A2D;\n    readonly MAX_COMBINED_UNIFORM_BLOCKS: 0x8A2E;\n    readonly MAX_UNIFORM_BUFFER_BINDINGS: 0x8A2F;\n    readonly MAX_UNIFORM_BLOCK_SIZE: 0x8A30;\n    readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8A31;\n    readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8A33;\n    readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8A34;\n    readonly ACTIVE_UNIFORM_BLOCKS: 0x8A36;\n    readonly UNIFORM_TYPE: 0x8A37;\n    readonly UNIFORM_SIZE: 0x8A38;\n    readonly UNIFORM_BLOCK_INDEX: 0x8A3A;\n    readonly UNIFORM_OFFSET: 0x8A3B;\n    readonly UNIFORM_ARRAY_STRIDE: 0x8A3C;\n    readonly UNIFORM_MATRIX_STRIDE: 0x8A3D;\n    readonly UNIFORM_IS_ROW_MAJOR: 0x8A3E;\n    readonly UNIFORM_BLOCK_BINDING: 0x8A3F;\n    readonly UNIFORM_BLOCK_DATA_SIZE: 0x8A40;\n    readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8A42;\n    readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8A43;\n    readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8A44;\n    readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8A46;\n    readonly INVALID_INDEX: 0xFFFFFFFF;\n    readonly MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122;\n    readonly MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125;\n    readonly MAX_SERVER_WAIT_TIMEOUT: 0x9111;\n    readonly OBJECT_TYPE: 0x9112;\n    readonly SYNC_CONDITION: 0x9113;\n    readonly SYNC_STATUS: 0x9114;\n    readonly SYNC_FLAGS: 0x9115;\n    readonly SYNC_FENCE: 0x9116;\n    readonly SYNC_GPU_COMMANDS_COMPLETE: 0x9117;\n    readonly UNSIGNALED: 0x9118;\n    readonly SIGNALED: 0x9119;\n    readonly ALREADY_SIGNALED: 0x911A;\n    readonly TIMEOUT_EXPIRED: 0x911B;\n    readonly CONDITION_SATISFIED: 0x911C;\n    readonly WAIT_FAILED: 0x911D;\n    readonly SYNC_FLUSH_COMMANDS_BIT: 0x00000001;\n    readonly VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88FE;\n    readonly ANY_SAMPLES_PASSED: 0x8C2F;\n    readonly ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8D6A;\n    readonly SAMPLER_BINDING: 0x8919;\n    readonly RGB10_A2UI: 0x906F;\n    readonly INT_2_10_10_10_REV: 0x8D9F;\n    readonly TRANSFORM_FEEDBACK: 0x8E22;\n    readonly TRANSFORM_FEEDBACK_PAUSED: 0x8E23;\n    readonly TRANSFORM_FEEDBACK_ACTIVE: 0x8E24;\n    readonly TRANSFORM_FEEDBACK_BINDING: 0x8E25;\n    readonly TEXTURE_IMMUTABLE_FORMAT: 0x912F;\n    readonly MAX_ELEMENT_INDEX: 0x8D6B;\n    readonly TEXTURE_IMMUTABLE_LEVELS: 0x82DF;\n    readonly TIMEOUT_IGNORED: -1;\n    readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247;\n    readonly DEPTH_BUFFER_BIT: 0x00000100;\n    readonly STENCIL_BUFFER_BIT: 0x00000400;\n    readonly COLOR_BUFFER_BIT: 0x00004000;\n    readonly POINTS: 0x0000;\n    readonly LINES: 0x0001;\n    readonly LINE_LOOP: 0x0002;\n    readonly LINE_STRIP: 0x0003;\n    readonly TRIANGLES: 0x0004;\n    readonly TRIANGLE_STRIP: 0x0005;\n    readonly TRIANGLE_FAN: 0x0006;\n    readonly ZERO: 0;\n    readonly ONE: 1;\n    readonly SRC_COLOR: 0x0300;\n    readonly ONE_MINUS_SRC_COLOR: 0x0301;\n    readonly SRC_ALPHA: 0x0302;\n    readonly ONE_MINUS_SRC_ALPHA: 0x0303;\n    readonly DST_ALPHA: 0x0304;\n    readonly ONE_MINUS_DST_ALPHA: 0x0305;\n    readonly DST_COLOR: 0x0306;\n    readonly ONE_MINUS_DST_COLOR: 0x0307;\n    readonly SRC_ALPHA_SATURATE: 0x0308;\n    readonly FUNC_ADD: 0x8006;\n    readonly BLEND_EQUATION: 0x8009;\n    readonly BLEND_EQUATION_RGB: 0x8009;\n    readonly BLEND_EQUATION_ALPHA: 0x883D;\n    readonly FUNC_SUBTRACT: 0x800A;\n    readonly FUNC_REVERSE_SUBTRACT: 0x800B;\n    readonly BLEND_DST_RGB: 0x80C8;\n    readonly BLEND_SRC_RGB: 0x80C9;\n    readonly BLEND_DST_ALPHA: 0x80CA;\n    readonly BLEND_SRC_ALPHA: 0x80CB;\n    readonly CONSTANT_COLOR: 0x8001;\n    readonly ONE_MINUS_CONSTANT_COLOR: 0x8002;\n    readonly CONSTANT_ALPHA: 0x8003;\n    readonly ONE_MINUS_CONSTANT_ALPHA: 0x8004;\n    readonly BLEND_COLOR: 0x8005;\n    readonly ARRAY_BUFFER: 0x8892;\n    readonly ELEMENT_ARRAY_BUFFER: 0x8893;\n    readonly ARRAY_BUFFER_BINDING: 0x8894;\n    readonly ELEMENT_ARRAY_BUFFER_BINDING: 0x8895;\n    readonly STREAM_DRAW: 0x88E0;\n    readonly STATIC_DRAW: 0x88E4;\n    readonly DYNAMIC_DRAW: 0x88E8;\n    readonly BUFFER_SIZE: 0x8764;\n    readonly BUFFER_USAGE: 0x8765;\n    readonly CURRENT_VERTEX_ATTRIB: 0x8626;\n    readonly FRONT: 0x0404;\n    readonly BACK: 0x0405;\n    readonly FRONT_AND_BACK: 0x0408;\n    readonly CULL_FACE: 0x0B44;\n    readonly BLEND: 0x0BE2;\n    readonly DITHER: 0x0BD0;\n    readonly STENCIL_TEST: 0x0B90;\n    readonly DEPTH_TEST: 0x0B71;\n    readonly SCISSOR_TEST: 0x0C11;\n    readonly POLYGON_OFFSET_FILL: 0x8037;\n    readonly SAMPLE_ALPHA_TO_COVERAGE: 0x809E;\n    readonly SAMPLE_COVERAGE: 0x80A0;\n    readonly NO_ERROR: 0;\n    readonly INVALID_ENUM: 0x0500;\n    readonly INVALID_VALUE: 0x0501;\n    readonly INVALID_OPERATION: 0x0502;\n    readonly OUT_OF_MEMORY: 0x0505;\n    readonly CW: 0x0900;\n    readonly CCW: 0x0901;\n    readonly LINE_WIDTH: 0x0B21;\n    readonly ALIASED_POINT_SIZE_RANGE: 0x846D;\n    readonly ALIASED_LINE_WIDTH_RANGE: 0x846E;\n    readonly CULL_FACE_MODE: 0x0B45;\n    readonly FRONT_FACE: 0x0B46;\n    readonly DEPTH_RANGE: 0x0B70;\n    readonly DEPTH_WRITEMASK: 0x0B72;\n    readonly DEPTH_CLEAR_VALUE: 0x0B73;\n    readonly DEPTH_FUNC: 0x0B74;\n    readonly STENCIL_CLEAR_VALUE: 0x0B91;\n    readonly STENCIL_FUNC: 0x0B92;\n    readonly STENCIL_FAIL: 0x0B94;\n    readonly STENCIL_PASS_DEPTH_FAIL: 0x0B95;\n    readonly STENCIL_PASS_DEPTH_PASS: 0x0B96;\n    readonly STENCIL_REF: 0x0B97;\n    readonly STENCIL_VALUE_MASK: 0x0B93;\n    readonly STENCIL_WRITEMASK: 0x0B98;\n    readonly STENCIL_BACK_FUNC: 0x8800;\n    readonly STENCIL_BACK_FAIL: 0x8801;\n    readonly STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802;\n    readonly STENCIL_BACK_PASS_DEPTH_PASS: 0x8803;\n    readonly STENCIL_BACK_REF: 0x8CA3;\n    readonly STENCIL_BACK_VALUE_MASK: 0x8CA4;\n    readonly STENCIL_BACK_WRITEMASK: 0x8CA5;\n    readonly VIEWPORT: 0x0BA2;\n    readonly SCISSOR_BOX: 0x0C10;\n    readonly COLOR_CLEAR_VALUE: 0x0C22;\n    readonly COLOR_WRITEMASK: 0x0C23;\n    readonly UNPACK_ALIGNMENT: 0x0CF5;\n    readonly PACK_ALIGNMENT: 0x0D05;\n    readonly MAX_TEXTURE_SIZE: 0x0D33;\n    readonly MAX_VIEWPORT_DIMS: 0x0D3A;\n    readonly SUBPIXEL_BITS: 0x0D50;\n    readonly RED_BITS: 0x0D52;\n    readonly GREEN_BITS: 0x0D53;\n    readonly BLUE_BITS: 0x0D54;\n    readonly ALPHA_BITS: 0x0D55;\n    readonly DEPTH_BITS: 0x0D56;\n    readonly STENCIL_BITS: 0x0D57;\n    readonly POLYGON_OFFSET_UNITS: 0x2A00;\n    readonly POLYGON_OFFSET_FACTOR: 0x8038;\n    readonly TEXTURE_BINDING_2D: 0x8069;\n    readonly SAMPLE_BUFFERS: 0x80A8;\n    readonly SAMPLES: 0x80A9;\n    readonly SAMPLE_COVERAGE_VALUE: 0x80AA;\n    readonly SAMPLE_COVERAGE_INVERT: 0x80AB;\n    readonly COMPRESSED_TEXTURE_FORMATS: 0x86A3;\n    readonly DONT_CARE: 0x1100;\n    readonly FASTEST: 0x1101;\n    readonly NICEST: 0x1102;\n    readonly GENERATE_MIPMAP_HINT: 0x8192;\n    readonly BYTE: 0x1400;\n    readonly UNSIGNED_BYTE: 0x1401;\n    readonly SHORT: 0x1402;\n    readonly UNSIGNED_SHORT: 0x1403;\n    readonly INT: 0x1404;\n    readonly UNSIGNED_INT: 0x1405;\n    readonly FLOAT: 0x1406;\n    readonly DEPTH_COMPONENT: 0x1902;\n    readonly ALPHA: 0x1906;\n    readonly RGB: 0x1907;\n    readonly RGBA: 0x1908;\n    readonly LUMINANCE: 0x1909;\n    readonly LUMINANCE_ALPHA: 0x190A;\n    readonly UNSIGNED_SHORT_4_4_4_4: 0x8033;\n    readonly UNSIGNED_SHORT_5_5_5_1: 0x8034;\n    readonly UNSIGNED_SHORT_5_6_5: 0x8363;\n    readonly FRAGMENT_SHADER: 0x8B30;\n    readonly VERTEX_SHADER: 0x8B31;\n    readonly MAX_VERTEX_ATTRIBS: 0x8869;\n    readonly MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB;\n    readonly MAX_VARYING_VECTORS: 0x8DFC;\n    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D;\n    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C;\n    readonly MAX_TEXTURE_IMAGE_UNITS: 0x8872;\n    readonly MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD;\n    readonly SHADER_TYPE: 0x8B4F;\n    readonly DELETE_STATUS: 0x8B80;\n    readonly LINK_STATUS: 0x8B82;\n    readonly VALIDATE_STATUS: 0x8B83;\n    readonly ATTACHED_SHADERS: 0x8B85;\n    readonly ACTIVE_UNIFORMS: 0x8B86;\n    readonly ACTIVE_ATTRIBUTES: 0x8B89;\n    readonly SHADING_LANGUAGE_VERSION: 0x8B8C;\n    readonly CURRENT_PROGRAM: 0x8B8D;\n    readonly NEVER: 0x0200;\n    readonly LESS: 0x0201;\n    readonly EQUAL: 0x0202;\n    readonly LEQUAL: 0x0203;\n    readonly GREATER: 0x0204;\n    readonly NOTEQUAL: 0x0205;\n    readonly GEQUAL: 0x0206;\n    readonly ALWAYS: 0x0207;\n    readonly KEEP: 0x1E00;\n    readonly REPLACE: 0x1E01;\n    readonly INCR: 0x1E02;\n    readonly DECR: 0x1E03;\n    readonly INVERT: 0x150A;\n    readonly INCR_WRAP: 0x8507;\n    readonly DECR_WRAP: 0x8508;\n    readonly VENDOR: 0x1F00;\n    readonly RENDERER: 0x1F01;\n    readonly VERSION: 0x1F02;\n    readonly NEAREST: 0x2600;\n    readonly LINEAR: 0x2601;\n    readonly NEAREST_MIPMAP_NEAREST: 0x2700;\n    readonly LINEAR_MIPMAP_NEAREST: 0x2701;\n    readonly NEAREST_MIPMAP_LINEAR: 0x2702;\n    readonly LINEAR_MIPMAP_LINEAR: 0x2703;\n    readonly TEXTURE_MAG_FILTER: 0x2800;\n    readonly TEXTURE_MIN_FILTER: 0x2801;\n    readonly TEXTURE_WRAP_S: 0x2802;\n    readonly TEXTURE_WRAP_T: 0x2803;\n    readonly TEXTURE_2D: 0x0DE1;\n    readonly TEXTURE: 0x1702;\n    readonly TEXTURE_CUBE_MAP: 0x8513;\n    readonly TEXTURE_BINDING_CUBE_MAP: 0x8514;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A;\n    readonly MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C;\n    readonly TEXTURE0: 0x84C0;\n    readonly TEXTURE1: 0x84C1;\n    readonly TEXTURE2: 0x84C2;\n    readonly TEXTURE3: 0x84C3;\n    readonly TEXTURE4: 0x84C4;\n    readonly TEXTURE5: 0x84C5;\n    readonly TEXTURE6: 0x84C6;\n    readonly TEXTURE7: 0x84C7;\n    readonly TEXTURE8: 0x84C8;\n    readonly TEXTURE9: 0x84C9;\n    readonly TEXTURE10: 0x84CA;\n    readonly TEXTURE11: 0x84CB;\n    readonly TEXTURE12: 0x84CC;\n    readonly TEXTURE13: 0x84CD;\n    readonly TEXTURE14: 0x84CE;\n    readonly TEXTURE15: 0x84CF;\n    readonly TEXTURE16: 0x84D0;\n    readonly TEXTURE17: 0x84D1;\n    readonly TEXTURE18: 0x84D2;\n    readonly TEXTURE19: 0x84D3;\n    readonly TEXTURE20: 0x84D4;\n    readonly TEXTURE21: 0x84D5;\n    readonly TEXTURE22: 0x84D6;\n    readonly TEXTURE23: 0x84D7;\n    readonly TEXTURE24: 0x84D8;\n    readonly TEXTURE25: 0x84D9;\n    readonly TEXTURE26: 0x84DA;\n    readonly TEXTURE27: 0x84DB;\n    readonly TEXTURE28: 0x84DC;\n    readonly TEXTURE29: 0x84DD;\n    readonly TEXTURE30: 0x84DE;\n    readonly TEXTURE31: 0x84DF;\n    readonly ACTIVE_TEXTURE: 0x84E0;\n    readonly REPEAT: 0x2901;\n    readonly CLAMP_TO_EDGE: 0x812F;\n    readonly MIRRORED_REPEAT: 0x8370;\n    readonly FLOAT_VEC2: 0x8B50;\n    readonly FLOAT_VEC3: 0x8B51;\n    readonly FLOAT_VEC4: 0x8B52;\n    readonly INT_VEC2: 0x8B53;\n    readonly INT_VEC3: 0x8B54;\n    readonly INT_VEC4: 0x8B55;\n    readonly BOOL: 0x8B56;\n    readonly BOOL_VEC2: 0x8B57;\n    readonly BOOL_VEC3: 0x8B58;\n    readonly BOOL_VEC4: 0x8B59;\n    readonly FLOAT_MAT2: 0x8B5A;\n    readonly FLOAT_MAT3: 0x8B5B;\n    readonly FLOAT_MAT4: 0x8B5C;\n    readonly SAMPLER_2D: 0x8B5E;\n    readonly SAMPLER_CUBE: 0x8B60;\n    readonly VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622;\n    readonly VERTEX_ATTRIB_ARRAY_SIZE: 0x8623;\n    readonly VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624;\n    readonly VERTEX_ATTRIB_ARRAY_TYPE: 0x8625;\n    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A;\n    readonly VERTEX_ATTRIB_ARRAY_POINTER: 0x8645;\n    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F;\n    readonly IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A;\n    readonly IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B;\n    readonly COMPILE_STATUS: 0x8B81;\n    readonly LOW_FLOAT: 0x8DF0;\n    readonly MEDIUM_FLOAT: 0x8DF1;\n    readonly HIGH_FLOAT: 0x8DF2;\n    readonly LOW_INT: 0x8DF3;\n    readonly MEDIUM_INT: 0x8DF4;\n    readonly HIGH_INT: 0x8DF5;\n    readonly FRAMEBUFFER: 0x8D40;\n    readonly RENDERBUFFER: 0x8D41;\n    readonly RGBA4: 0x8056;\n    readonly RGB5_A1: 0x8057;\n    readonly RGB565: 0x8D62;\n    readonly DEPTH_COMPONENT16: 0x81A5;\n    readonly STENCIL_INDEX8: 0x8D48;\n    readonly DEPTH_STENCIL: 0x84F9;\n    readonly RENDERBUFFER_WIDTH: 0x8D42;\n    readonly RENDERBUFFER_HEIGHT: 0x8D43;\n    readonly RENDERBUFFER_INTERNAL_FORMAT: 0x8D44;\n    readonly RENDERBUFFER_RED_SIZE: 0x8D50;\n    readonly RENDERBUFFER_GREEN_SIZE: 0x8D51;\n    readonly RENDERBUFFER_BLUE_SIZE: 0x8D52;\n    readonly RENDERBUFFER_ALPHA_SIZE: 0x8D53;\n    readonly RENDERBUFFER_DEPTH_SIZE: 0x8D54;\n    readonly RENDERBUFFER_STENCIL_SIZE: 0x8D55;\n    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0;\n    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3;\n    readonly COLOR_ATTACHMENT0: 0x8CE0;\n    readonly DEPTH_ATTACHMENT: 0x8D00;\n    readonly STENCIL_ATTACHMENT: 0x8D20;\n    readonly DEPTH_STENCIL_ATTACHMENT: 0x821A;\n    readonly NONE: 0;\n    readonly FRAMEBUFFER_COMPLETE: 0x8CD5;\n    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6;\n    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7;\n    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9;\n    readonly FRAMEBUFFER_UNSUPPORTED: 0x8CDD;\n    readonly FRAMEBUFFER_BINDING: 0x8CA6;\n    readonly RENDERBUFFER_BINDING: 0x8CA7;\n    readonly MAX_RENDERBUFFER_SIZE: 0x84E8;\n    readonly INVALID_FRAMEBUFFER_OPERATION: 0x0506;\n    readonly UNPACK_FLIP_Y_WEBGL: 0x9240;\n    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241;\n    readonly CONTEXT_LOST_WEBGL: 0x9242;\n    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243;\n    readonly BROWSER_DEFAULT_WEBGL: 0x9244;\n};\n\ninterface WebGL2RenderingContextBase {\n    beginQuery(target: GLenum, query: WebGLQuery): void;\n    beginTransformFeedback(primitiveMode: GLenum): void;\n    bindBufferBase(target: GLenum, index: GLuint, buffer: WebGLBuffer | null): void;\n    bindBufferRange(target: GLenum, index: GLuint, buffer: WebGLBuffer | null, offset: GLintptr, size: GLsizeiptr): void;\n    bindSampler(unit: GLuint, sampler: WebGLSampler | null): void;\n    bindTransformFeedback(target: GLenum, tf: WebGLTransformFeedback | null): void;\n    bindVertexArray(array: WebGLVertexArrayObject | null): void;\n    blitFramebuffer(srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum): void;\n    clearBufferfi(buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint): void;\n    clearBufferfv(buffer: GLenum, drawbuffer: GLint, values: Float32List, srcOffset?: GLuint): void;\n    clearBufferiv(buffer: GLenum, drawbuffer: GLint, values: Int32List, srcOffset?: GLuint): void;\n    clearBufferuiv(buffer: GLenum, drawbuffer: GLint, values: Uint32List, srcOffset?: GLuint): void;\n    clientWaitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLuint64): GLenum;\n    compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr): void;\n    compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;\n    compressedTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr): void;\n    compressedTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;\n    copyBufferSubData(readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr): void;\n    copyTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;\n    createQuery(): WebGLQuery | null;\n    createSampler(): WebGLSampler | null;\n    createTransformFeedback(): WebGLTransformFeedback | null;\n    createVertexArray(): WebGLVertexArrayObject | null;\n    deleteQuery(query: WebGLQuery | null): void;\n    deleteSampler(sampler: WebGLSampler | null): void;\n    deleteSync(sync: WebGLSync | null): void;\n    deleteTransformFeedback(tf: WebGLTransformFeedback | null): void;\n    deleteVertexArray(vertexArray: WebGLVertexArrayObject | null): void;\n    drawArraysInstanced(mode: GLenum, first: GLint, count: GLsizei, instanceCount: GLsizei): void;\n    drawBuffers(buffers: GLenum[]): void;\n    drawElementsInstanced(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, instanceCount: GLsizei): void;\n    drawRangeElements(mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type: GLenum, offset: GLintptr): void;\n    endQuery(target: GLenum): void;\n    endTransformFeedback(): void;\n    fenceSync(condition: GLenum, flags: GLbitfield): WebGLSync | null;\n    framebufferTextureLayer(target: GLenum, attachment: GLenum, texture: WebGLTexture | null, level: GLint, layer: GLint): void;\n    getActiveUniformBlockName(program: WebGLProgram, uniformBlockIndex: GLuint): string | null;\n    getActiveUniformBlockParameter(program: WebGLProgram, uniformBlockIndex: GLuint, pname: GLenum): any;\n    getActiveUniforms(program: WebGLProgram, uniformIndices: GLuint[], pname: GLenum): any;\n    getBufferSubData(target: GLenum, srcByteOffset: GLintptr, dstBuffer: ArrayBufferView, dstOffset?: GLuint, length?: GLuint): void;\n    getFragDataLocation(program: WebGLProgram, name: string): GLint;\n    getIndexedParameter(target: GLenum, index: GLuint): any;\n    getInternalformatParameter(target: GLenum, internalformat: GLenum, pname: GLenum): any;\n    getQuery(target: GLenum, pname: GLenum): WebGLQuery | null;\n    getQueryParameter(query: WebGLQuery, pname: GLenum): any;\n    getSamplerParameter(sampler: WebGLSampler, pname: GLenum): any;\n    getSyncParameter(sync: WebGLSync, pname: GLenum): any;\n    getTransformFeedbackVarying(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;\n    getUniformBlockIndex(program: WebGLProgram, uniformBlockName: string): GLuint;\n    getUniformIndices(program: WebGLProgram, uniformNames: string[]): GLuint[] | null;\n    invalidateFramebuffer(target: GLenum, attachments: GLenum[]): void;\n    invalidateSubFramebuffer(target: GLenum, attachments: GLenum[], x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;\n    isQuery(query: WebGLQuery | null): GLboolean;\n    isSampler(sampler: WebGLSampler | null): GLboolean;\n    isSync(sync: WebGLSync | null): GLboolean;\n    isTransformFeedback(tf: WebGLTransformFeedback | null): GLboolean;\n    isVertexArray(vertexArray: WebGLVertexArrayObject | null): GLboolean;\n    pauseTransformFeedback(): void;\n    readBuffer(src: GLenum): void;\n    renderbufferStorageMultisample(target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei): void;\n    resumeTransformFeedback(): void;\n    samplerParameterf(sampler: WebGLSampler, pname: GLenum, param: GLfloat): void;\n    samplerParameteri(sampler: WebGLSampler, pname: GLenum, param: GLint): void;\n    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;\n    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView | null): void;\n    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;\n    texStorage2D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei): void;\n    texStorage3D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei): void;\n    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;\n    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView | null, srcOffset?: GLuint): void;\n    transformFeedbackVaryings(program: WebGLProgram, varyings: string[], bufferMode: GLenum): void;\n    uniform1ui(location: WebGLUniformLocation | null, v0: GLuint): void;\n    uniform1uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform2ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint): void;\n    uniform2uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform3ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint, v2: GLuint): void;\n    uniform3uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform4ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint): void;\n    uniform4uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformBlockBinding(program: WebGLProgram, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint): void;\n    uniformMatrix2x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix2x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix3x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix3x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix4x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix4x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    vertexAttribDivisor(index: GLuint, divisor: GLuint): void;\n    vertexAttribI4i(index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint): void;\n    vertexAttribI4iv(index: GLuint, values: Int32List): void;\n    vertexAttribI4ui(index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint): void;\n    vertexAttribI4uiv(index: GLuint, values: Uint32List): void;\n    vertexAttribIPointer(index: GLuint, size: GLint, type: GLenum, stride: GLsizei, offset: GLintptr): void;\n    waitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLint64): void;\n    readonly READ_BUFFER: 0x0C02;\n    readonly UNPACK_ROW_LENGTH: 0x0CF2;\n    readonly UNPACK_SKIP_ROWS: 0x0CF3;\n    readonly UNPACK_SKIP_PIXELS: 0x0CF4;\n    readonly PACK_ROW_LENGTH: 0x0D02;\n    readonly PACK_SKIP_ROWS: 0x0D03;\n    readonly PACK_SKIP_PIXELS: 0x0D04;\n    readonly COLOR: 0x1800;\n    readonly DEPTH: 0x1801;\n    readonly STENCIL: 0x1802;\n    readonly RED: 0x1903;\n    readonly RGB8: 0x8051;\n    readonly RGBA8: 0x8058;\n    readonly RGB10_A2: 0x8059;\n    readonly TEXTURE_BINDING_3D: 0x806A;\n    readonly UNPACK_SKIP_IMAGES: 0x806D;\n    readonly UNPACK_IMAGE_HEIGHT: 0x806E;\n    readonly TEXTURE_3D: 0x806F;\n    readonly TEXTURE_WRAP_R: 0x8072;\n    readonly MAX_3D_TEXTURE_SIZE: 0x8073;\n    readonly UNSIGNED_INT_2_10_10_10_REV: 0x8368;\n    readonly MAX_ELEMENTS_VERTICES: 0x80E8;\n    readonly MAX_ELEMENTS_INDICES: 0x80E9;\n    readonly TEXTURE_MIN_LOD: 0x813A;\n    readonly TEXTURE_MAX_LOD: 0x813B;\n    readonly TEXTURE_BASE_LEVEL: 0x813C;\n    readonly TEXTURE_MAX_LEVEL: 0x813D;\n    readonly MIN: 0x8007;\n    readonly MAX: 0x8008;\n    readonly DEPTH_COMPONENT24: 0x81A6;\n    readonly MAX_TEXTURE_LOD_BIAS: 0x84FD;\n    readonly TEXTURE_COMPARE_MODE: 0x884C;\n    readonly TEXTURE_COMPARE_FUNC: 0x884D;\n    readonly CURRENT_QUERY: 0x8865;\n    readonly QUERY_RESULT: 0x8866;\n    readonly QUERY_RESULT_AVAILABLE: 0x8867;\n    readonly STREAM_READ: 0x88E1;\n    readonly STREAM_COPY: 0x88E2;\n    readonly STATIC_READ: 0x88E5;\n    readonly STATIC_COPY: 0x88E6;\n    readonly DYNAMIC_READ: 0x88E9;\n    readonly DYNAMIC_COPY: 0x88EA;\n    readonly MAX_DRAW_BUFFERS: 0x8824;\n    readonly DRAW_BUFFER0: 0x8825;\n    readonly DRAW_BUFFER1: 0x8826;\n    readonly DRAW_BUFFER2: 0x8827;\n    readonly DRAW_BUFFER3: 0x8828;\n    readonly DRAW_BUFFER4: 0x8829;\n    readonly DRAW_BUFFER5: 0x882A;\n    readonly DRAW_BUFFER6: 0x882B;\n    readonly DRAW_BUFFER7: 0x882C;\n    readonly DRAW_BUFFER8: 0x882D;\n    readonly DRAW_BUFFER9: 0x882E;\n    readonly DRAW_BUFFER10: 0x882F;\n    readonly DRAW_BUFFER11: 0x8830;\n    readonly DRAW_BUFFER12: 0x8831;\n    readonly DRAW_BUFFER13: 0x8832;\n    readonly DRAW_BUFFER14: 0x8833;\n    readonly DRAW_BUFFER15: 0x8834;\n    readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8B49;\n    readonly MAX_VERTEX_UNIFORM_COMPONENTS: 0x8B4A;\n    readonly SAMPLER_3D: 0x8B5F;\n    readonly SAMPLER_2D_SHADOW: 0x8B62;\n    readonly FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8B8B;\n    readonly PIXEL_PACK_BUFFER: 0x88EB;\n    readonly PIXEL_UNPACK_BUFFER: 0x88EC;\n    readonly PIXEL_PACK_BUFFER_BINDING: 0x88ED;\n    readonly PIXEL_UNPACK_BUFFER_BINDING: 0x88EF;\n    readonly FLOAT_MAT2x3: 0x8B65;\n    readonly FLOAT_MAT2x4: 0x8B66;\n    readonly FLOAT_MAT3x2: 0x8B67;\n    readonly FLOAT_MAT3x4: 0x8B68;\n    readonly FLOAT_MAT4x2: 0x8B69;\n    readonly FLOAT_MAT4x3: 0x8B6A;\n    readonly SRGB: 0x8C40;\n    readonly SRGB8: 0x8C41;\n    readonly SRGB8_ALPHA8: 0x8C43;\n    readonly COMPARE_REF_TO_TEXTURE: 0x884E;\n    readonly RGBA32F: 0x8814;\n    readonly RGB32F: 0x8815;\n    readonly RGBA16F: 0x881A;\n    readonly RGB16F: 0x881B;\n    readonly VERTEX_ATTRIB_ARRAY_INTEGER: 0x88FD;\n    readonly MAX_ARRAY_TEXTURE_LAYERS: 0x88FF;\n    readonly MIN_PROGRAM_TEXEL_OFFSET: 0x8904;\n    readonly MAX_PROGRAM_TEXEL_OFFSET: 0x8905;\n    readonly MAX_VARYING_COMPONENTS: 0x8B4B;\n    readonly TEXTURE_2D_ARRAY: 0x8C1A;\n    readonly TEXTURE_BINDING_2D_ARRAY: 0x8C1D;\n    readonly R11F_G11F_B10F: 0x8C3A;\n    readonly UNSIGNED_INT_10F_11F_11F_REV: 0x8C3B;\n    readonly RGB9_E5: 0x8C3D;\n    readonly UNSIGNED_INT_5_9_9_9_REV: 0x8C3E;\n    readonly TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8C7F;\n    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8C80;\n    readonly TRANSFORM_FEEDBACK_VARYINGS: 0x8C83;\n    readonly TRANSFORM_FEEDBACK_BUFFER_START: 0x8C84;\n    readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8C85;\n    readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8C88;\n    readonly RASTERIZER_DISCARD: 0x8C89;\n    readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8C8A;\n    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8C8B;\n    readonly INTERLEAVED_ATTRIBS: 0x8C8C;\n    readonly SEPARATE_ATTRIBS: 0x8C8D;\n    readonly TRANSFORM_FEEDBACK_BUFFER: 0x8C8E;\n    readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8C8F;\n    readonly RGBA32UI: 0x8D70;\n    readonly RGB32UI: 0x8D71;\n    readonly RGBA16UI: 0x8D76;\n    readonly RGB16UI: 0x8D77;\n    readonly RGBA8UI: 0x8D7C;\n    readonly RGB8UI: 0x8D7D;\n    readonly RGBA32I: 0x8D82;\n    readonly RGB32I: 0x8D83;\n    readonly RGBA16I: 0x8D88;\n    readonly RGB16I: 0x8D89;\n    readonly RGBA8I: 0x8D8E;\n    readonly RGB8I: 0x8D8F;\n    readonly RED_INTEGER: 0x8D94;\n    readonly RGB_INTEGER: 0x8D98;\n    readonly RGBA_INTEGER: 0x8D99;\n    readonly SAMPLER_2D_ARRAY: 0x8DC1;\n    readonly SAMPLER_2D_ARRAY_SHADOW: 0x8DC4;\n    readonly SAMPLER_CUBE_SHADOW: 0x8DC5;\n    readonly UNSIGNED_INT_VEC2: 0x8DC6;\n    readonly UNSIGNED_INT_VEC3: 0x8DC7;\n    readonly UNSIGNED_INT_VEC4: 0x8DC8;\n    readonly INT_SAMPLER_2D: 0x8DCA;\n    readonly INT_SAMPLER_3D: 0x8DCB;\n    readonly INT_SAMPLER_CUBE: 0x8DCC;\n    readonly INT_SAMPLER_2D_ARRAY: 0x8DCF;\n    readonly UNSIGNED_INT_SAMPLER_2D: 0x8DD2;\n    readonly UNSIGNED_INT_SAMPLER_3D: 0x8DD3;\n    readonly UNSIGNED_INT_SAMPLER_CUBE: 0x8DD4;\n    readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8DD7;\n    readonly DEPTH_COMPONENT32F: 0x8CAC;\n    readonly DEPTH32F_STENCIL8: 0x8CAD;\n    readonly FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8DAD;\n    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210;\n    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211;\n    readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212;\n    readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213;\n    readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214;\n    readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215;\n    readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216;\n    readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217;\n    readonly FRAMEBUFFER_DEFAULT: 0x8218;\n    readonly UNSIGNED_INT_24_8: 0x84FA;\n    readonly DEPTH24_STENCIL8: 0x88F0;\n    readonly UNSIGNED_NORMALIZED: 0x8C17;\n    readonly DRAW_FRAMEBUFFER_BINDING: 0x8CA6;\n    readonly READ_FRAMEBUFFER: 0x8CA8;\n    readonly DRAW_FRAMEBUFFER: 0x8CA9;\n    readonly READ_FRAMEBUFFER_BINDING: 0x8CAA;\n    readonly RENDERBUFFER_SAMPLES: 0x8CAB;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8CD4;\n    readonly MAX_COLOR_ATTACHMENTS: 0x8CDF;\n    readonly COLOR_ATTACHMENT1: 0x8CE1;\n    readonly COLOR_ATTACHMENT2: 0x8CE2;\n    readonly COLOR_ATTACHMENT3: 0x8CE3;\n    readonly COLOR_ATTACHMENT4: 0x8CE4;\n    readonly COLOR_ATTACHMENT5: 0x8CE5;\n    readonly COLOR_ATTACHMENT6: 0x8CE6;\n    readonly COLOR_ATTACHMENT7: 0x8CE7;\n    readonly COLOR_ATTACHMENT8: 0x8CE8;\n    readonly COLOR_ATTACHMENT9: 0x8CE9;\n    readonly COLOR_ATTACHMENT10: 0x8CEA;\n    readonly COLOR_ATTACHMENT11: 0x8CEB;\n    readonly COLOR_ATTACHMENT12: 0x8CEC;\n    readonly COLOR_ATTACHMENT13: 0x8CED;\n    readonly COLOR_ATTACHMENT14: 0x8CEE;\n    readonly COLOR_ATTACHMENT15: 0x8CEF;\n    readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8D56;\n    readonly MAX_SAMPLES: 0x8D57;\n    readonly HALF_FLOAT: 0x140B;\n    readonly RG: 0x8227;\n    readonly RG_INTEGER: 0x8228;\n    readonly R8: 0x8229;\n    readonly RG8: 0x822B;\n    readonly R16F: 0x822D;\n    readonly R32F: 0x822E;\n    readonly RG16F: 0x822F;\n    readonly RG32F: 0x8230;\n    readonly R8I: 0x8231;\n    readonly R8UI: 0x8232;\n    readonly R16I: 0x8233;\n    readonly R16UI: 0x8234;\n    readonly R32I: 0x8235;\n    readonly R32UI: 0x8236;\n    readonly RG8I: 0x8237;\n    readonly RG8UI: 0x8238;\n    readonly RG16I: 0x8239;\n    readonly RG16UI: 0x823A;\n    readonly RG32I: 0x823B;\n    readonly RG32UI: 0x823C;\n    readonly VERTEX_ARRAY_BINDING: 0x85B5;\n    readonly R8_SNORM: 0x8F94;\n    readonly RG8_SNORM: 0x8F95;\n    readonly RGB8_SNORM: 0x8F96;\n    readonly RGBA8_SNORM: 0x8F97;\n    readonly SIGNED_NORMALIZED: 0x8F9C;\n    readonly COPY_READ_BUFFER: 0x8F36;\n    readonly COPY_WRITE_BUFFER: 0x8F37;\n    readonly COPY_READ_BUFFER_BINDING: 0x8F36;\n    readonly COPY_WRITE_BUFFER_BINDING: 0x8F37;\n    readonly UNIFORM_BUFFER: 0x8A11;\n    readonly UNIFORM_BUFFER_BINDING: 0x8A28;\n    readonly UNIFORM_BUFFER_START: 0x8A29;\n    readonly UNIFORM_BUFFER_SIZE: 0x8A2A;\n    readonly MAX_VERTEX_UNIFORM_BLOCKS: 0x8A2B;\n    readonly MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8A2D;\n    readonly MAX_COMBINED_UNIFORM_BLOCKS: 0x8A2E;\n    readonly MAX_UNIFORM_BUFFER_BINDINGS: 0x8A2F;\n    readonly MAX_UNIFORM_BLOCK_SIZE: 0x8A30;\n    readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8A31;\n    readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8A33;\n    readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8A34;\n    readonly ACTIVE_UNIFORM_BLOCKS: 0x8A36;\n    readonly UNIFORM_TYPE: 0x8A37;\n    readonly UNIFORM_SIZE: 0x8A38;\n    readonly UNIFORM_BLOCK_INDEX: 0x8A3A;\n    readonly UNIFORM_OFFSET: 0x8A3B;\n    readonly UNIFORM_ARRAY_STRIDE: 0x8A3C;\n    readonly UNIFORM_MATRIX_STRIDE: 0x8A3D;\n    readonly UNIFORM_IS_ROW_MAJOR: 0x8A3E;\n    readonly UNIFORM_BLOCK_BINDING: 0x8A3F;\n    readonly UNIFORM_BLOCK_DATA_SIZE: 0x8A40;\n    readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8A42;\n    readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8A43;\n    readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8A44;\n    readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8A46;\n    readonly INVALID_INDEX: 0xFFFFFFFF;\n    readonly MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122;\n    readonly MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125;\n    readonly MAX_SERVER_WAIT_TIMEOUT: 0x9111;\n    readonly OBJECT_TYPE: 0x9112;\n    readonly SYNC_CONDITION: 0x9113;\n    readonly SYNC_STATUS: 0x9114;\n    readonly SYNC_FLAGS: 0x9115;\n    readonly SYNC_FENCE: 0x9116;\n    readonly SYNC_GPU_COMMANDS_COMPLETE: 0x9117;\n    readonly UNSIGNALED: 0x9118;\n    readonly SIGNALED: 0x9119;\n    readonly ALREADY_SIGNALED: 0x911A;\n    readonly TIMEOUT_EXPIRED: 0x911B;\n    readonly CONDITION_SATISFIED: 0x911C;\n    readonly WAIT_FAILED: 0x911D;\n    readonly SYNC_FLUSH_COMMANDS_BIT: 0x00000001;\n    readonly VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88FE;\n    readonly ANY_SAMPLES_PASSED: 0x8C2F;\n    readonly ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8D6A;\n    readonly SAMPLER_BINDING: 0x8919;\n    readonly RGB10_A2UI: 0x906F;\n    readonly INT_2_10_10_10_REV: 0x8D9F;\n    readonly TRANSFORM_FEEDBACK: 0x8E22;\n    readonly TRANSFORM_FEEDBACK_PAUSED: 0x8E23;\n    readonly TRANSFORM_FEEDBACK_ACTIVE: 0x8E24;\n    readonly TRANSFORM_FEEDBACK_BINDING: 0x8E25;\n    readonly TEXTURE_IMMUTABLE_FORMAT: 0x912F;\n    readonly MAX_ELEMENT_INDEX: 0x8D6B;\n    readonly TEXTURE_IMMUTABLE_LEVELS: 0x82DF;\n    readonly TIMEOUT_IGNORED: -1;\n    readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247;\n}\n\ninterface WebGL2RenderingContextOverloads {\n    bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum): void;\n    bufferData(target: GLenum, srcData: BufferSource | null, usage: GLenum): void;\n    bufferData(target: GLenum, srcData: ArrayBufferView, usage: GLenum, srcOffset: GLuint, length?: GLuint): void;\n    bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: BufferSource): void;\n    bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: ArrayBufferView, srcOffset: GLuint, length?: GLuint): void;\n    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr): void;\n    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;\n    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr): void;\n    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;\n    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView | null): void;\n    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, offset: GLintptr): void;\n    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView, dstOffset: GLuint): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;\n    uniform1fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform1iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform2fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform2iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform3fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform3iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform4fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform4iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n}\n\n/** Part of the WebGL API and represents the information returned by calling the WebGLRenderingContext.getActiveAttrib() and WebGLRenderingContext.getActiveUniform() methods. */\ninterface WebGLActiveInfo {\n    readonly name: string;\n    readonly size: GLint;\n    readonly type: GLenum;\n}\n\ndeclare var WebGLActiveInfo: {\n    prototype: WebGLActiveInfo;\n    new(): WebGLActiveInfo;\n};\n\n/** Part of the WebGL API and represents an opaque buffer object storing data such as vertices or colors. */\ninterface WebGLBuffer {\n}\n\ndeclare var WebGLBuffer: {\n    prototype: WebGLBuffer;\n    new(): WebGLBuffer;\n};\n\n/** The WebContextEvent interface is part of the WebGL API and is an interface for an event that is generated in response to a status change to the WebGL rendering context. */\ninterface WebGLContextEvent extends Event {\n    readonly statusMessage: string;\n}\n\ndeclare var WebGLContextEvent: {\n    prototype: WebGLContextEvent;\n    new(type: string, eventInit?: WebGLContextEventInit): WebGLContextEvent;\n};\n\n/** Part of the WebGL API and represents a collection of buffers that serve as a rendering destination. */\ninterface WebGLFramebuffer {\n}\n\ndeclare var WebGLFramebuffer: {\n    prototype: WebGLFramebuffer;\n    new(): WebGLFramebuffer;\n};\n\n/** The WebGLProgram is part of the WebGL API and is a combination of two compiled WebGLShaders consisting of a vertex shader and a fragment shader (both written in GLSL). */\ninterface WebGLProgram {\n}\n\ndeclare var WebGLProgram: {\n    prototype: WebGLProgram;\n    new(): WebGLProgram;\n};\n\ninterface WebGLQuery {\n}\n\ndeclare var WebGLQuery: {\n    prototype: WebGLQuery;\n    new(): WebGLQuery;\n};\n\n/** Part of the WebGL API and represents a buffer that can contain an image, or can be source or target of an rendering operation. */\ninterface WebGLRenderbuffer {\n}\n\ndeclare var WebGLRenderbuffer: {\n    prototype: WebGLRenderbuffer;\n    new(): WebGLRenderbuffer;\n};\n\n/** Provides an interface to the OpenGL ES 2.0 graphics rendering context for the drawing surface of an HTML <canvas> element. */\ninterface WebGLRenderingContext extends WebGLRenderingContextBase, WebGLRenderingContextOverloads {\n}\n\ndeclare var WebGLRenderingContext: {\n    prototype: WebGLRenderingContext;\n    new(): WebGLRenderingContext;\n    readonly DEPTH_BUFFER_BIT: 0x00000100;\n    readonly STENCIL_BUFFER_BIT: 0x00000400;\n    readonly COLOR_BUFFER_BIT: 0x00004000;\n    readonly POINTS: 0x0000;\n    readonly LINES: 0x0001;\n    readonly LINE_LOOP: 0x0002;\n    readonly LINE_STRIP: 0x0003;\n    readonly TRIANGLES: 0x0004;\n    readonly TRIANGLE_STRIP: 0x0005;\n    readonly TRIANGLE_FAN: 0x0006;\n    readonly ZERO: 0;\n    readonly ONE: 1;\n    readonly SRC_COLOR: 0x0300;\n    readonly ONE_MINUS_SRC_COLOR: 0x0301;\n    readonly SRC_ALPHA: 0x0302;\n    readonly ONE_MINUS_SRC_ALPHA: 0x0303;\n    readonly DST_ALPHA: 0x0304;\n    readonly ONE_MINUS_DST_ALPHA: 0x0305;\n    readonly DST_COLOR: 0x0306;\n    readonly ONE_MINUS_DST_COLOR: 0x0307;\n    readonly SRC_ALPHA_SATURATE: 0x0308;\n    readonly FUNC_ADD: 0x8006;\n    readonly BLEND_EQUATION: 0x8009;\n    readonly BLEND_EQUATION_RGB: 0x8009;\n    readonly BLEND_EQUATION_ALPHA: 0x883D;\n    readonly FUNC_SUBTRACT: 0x800A;\n    readonly FUNC_REVERSE_SUBTRACT: 0x800B;\n    readonly BLEND_DST_RGB: 0x80C8;\n    readonly BLEND_SRC_RGB: 0x80C9;\n    readonly BLEND_DST_ALPHA: 0x80CA;\n    readonly BLEND_SRC_ALPHA: 0x80CB;\n    readonly CONSTANT_COLOR: 0x8001;\n    readonly ONE_MINUS_CONSTANT_COLOR: 0x8002;\n    readonly CONSTANT_ALPHA: 0x8003;\n    readonly ONE_MINUS_CONSTANT_ALPHA: 0x8004;\n    readonly BLEND_COLOR: 0x8005;\n    readonly ARRAY_BUFFER: 0x8892;\n    readonly ELEMENT_ARRAY_BUFFER: 0x8893;\n    readonly ARRAY_BUFFER_BINDING: 0x8894;\n    readonly ELEMENT_ARRAY_BUFFER_BINDING: 0x8895;\n    readonly STREAM_DRAW: 0x88E0;\n    readonly STATIC_DRAW: 0x88E4;\n    readonly DYNAMIC_DRAW: 0x88E8;\n    readonly BUFFER_SIZE: 0x8764;\n    readonly BUFFER_USAGE: 0x8765;\n    readonly CURRENT_VERTEX_ATTRIB: 0x8626;\n    readonly FRONT: 0x0404;\n    readonly BACK: 0x0405;\n    readonly FRONT_AND_BACK: 0x0408;\n    readonly CULL_FACE: 0x0B44;\n    readonly BLEND: 0x0BE2;\n    readonly DITHER: 0x0BD0;\n    readonly STENCIL_TEST: 0x0B90;\n    readonly DEPTH_TEST: 0x0B71;\n    readonly SCISSOR_TEST: 0x0C11;\n    readonly POLYGON_OFFSET_FILL: 0x8037;\n    readonly SAMPLE_ALPHA_TO_COVERAGE: 0x809E;\n    readonly SAMPLE_COVERAGE: 0x80A0;\n    readonly NO_ERROR: 0;\n    readonly INVALID_ENUM: 0x0500;\n    readonly INVALID_VALUE: 0x0501;\n    readonly INVALID_OPERATION: 0x0502;\n    readonly OUT_OF_MEMORY: 0x0505;\n    readonly CW: 0x0900;\n    readonly CCW: 0x0901;\n    readonly LINE_WIDTH: 0x0B21;\n    readonly ALIASED_POINT_SIZE_RANGE: 0x846D;\n    readonly ALIASED_LINE_WIDTH_RANGE: 0x846E;\n    readonly CULL_FACE_MODE: 0x0B45;\n    readonly FRONT_FACE: 0x0B46;\n    readonly DEPTH_RANGE: 0x0B70;\n    readonly DEPTH_WRITEMASK: 0x0B72;\n    readonly DEPTH_CLEAR_VALUE: 0x0B73;\n    readonly DEPTH_FUNC: 0x0B74;\n    readonly STENCIL_CLEAR_VALUE: 0x0B91;\n    readonly STENCIL_FUNC: 0x0B92;\n    readonly STENCIL_FAIL: 0x0B94;\n    readonly STENCIL_PASS_DEPTH_FAIL: 0x0B95;\n    readonly STENCIL_PASS_DEPTH_PASS: 0x0B96;\n    readonly STENCIL_REF: 0x0B97;\n    readonly STENCIL_VALUE_MASK: 0x0B93;\n    readonly STENCIL_WRITEMASK: 0x0B98;\n    readonly STENCIL_BACK_FUNC: 0x8800;\n    readonly STENCIL_BACK_FAIL: 0x8801;\n    readonly STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802;\n    readonly STENCIL_BACK_PASS_DEPTH_PASS: 0x8803;\n    readonly STENCIL_BACK_REF: 0x8CA3;\n    readonly STENCIL_BACK_VALUE_MASK: 0x8CA4;\n    readonly STENCIL_BACK_WRITEMASK: 0x8CA5;\n    readonly VIEWPORT: 0x0BA2;\n    readonly SCISSOR_BOX: 0x0C10;\n    readonly COLOR_CLEAR_VALUE: 0x0C22;\n    readonly COLOR_WRITEMASK: 0x0C23;\n    readonly UNPACK_ALIGNMENT: 0x0CF5;\n    readonly PACK_ALIGNMENT: 0x0D05;\n    readonly MAX_TEXTURE_SIZE: 0x0D33;\n    readonly MAX_VIEWPORT_DIMS: 0x0D3A;\n    readonly SUBPIXEL_BITS: 0x0D50;\n    readonly RED_BITS: 0x0D52;\n    readonly GREEN_BITS: 0x0D53;\n    readonly BLUE_BITS: 0x0D54;\n    readonly ALPHA_BITS: 0x0D55;\n    readonly DEPTH_BITS: 0x0D56;\n    readonly STENCIL_BITS: 0x0D57;\n    readonly POLYGON_OFFSET_UNITS: 0x2A00;\n    readonly POLYGON_OFFSET_FACTOR: 0x8038;\n    readonly TEXTURE_BINDING_2D: 0x8069;\n    readonly SAMPLE_BUFFERS: 0x80A8;\n    readonly SAMPLES: 0x80A9;\n    readonly SAMPLE_COVERAGE_VALUE: 0x80AA;\n    readonly SAMPLE_COVERAGE_INVERT: 0x80AB;\n    readonly COMPRESSED_TEXTURE_FORMATS: 0x86A3;\n    readonly DONT_CARE: 0x1100;\n    readonly FASTEST: 0x1101;\n    readonly NICEST: 0x1102;\n    readonly GENERATE_MIPMAP_HINT: 0x8192;\n    readonly BYTE: 0x1400;\n    readonly UNSIGNED_BYTE: 0x1401;\n    readonly SHORT: 0x1402;\n    readonly UNSIGNED_SHORT: 0x1403;\n    readonly INT: 0x1404;\n    readonly UNSIGNED_INT: 0x1405;\n    readonly FLOAT: 0x1406;\n    readonly DEPTH_COMPONENT: 0x1902;\n    readonly ALPHA: 0x1906;\n    readonly RGB: 0x1907;\n    readonly RGBA: 0x1908;\n    readonly LUMINANCE: 0x1909;\n    readonly LUMINANCE_ALPHA: 0x190A;\n    readonly UNSIGNED_SHORT_4_4_4_4: 0x8033;\n    readonly UNSIGNED_SHORT_5_5_5_1: 0x8034;\n    readonly UNSIGNED_SHORT_5_6_5: 0x8363;\n    readonly FRAGMENT_SHADER: 0x8B30;\n    readonly VERTEX_SHADER: 0x8B31;\n    readonly MAX_VERTEX_ATTRIBS: 0x8869;\n    readonly MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB;\n    readonly MAX_VARYING_VECTORS: 0x8DFC;\n    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D;\n    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C;\n    readonly MAX_TEXTURE_IMAGE_UNITS: 0x8872;\n    readonly MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD;\n    readonly SHADER_TYPE: 0x8B4F;\n    readonly DELETE_STATUS: 0x8B80;\n    readonly LINK_STATUS: 0x8B82;\n    readonly VALIDATE_STATUS: 0x8B83;\n    readonly ATTACHED_SHADERS: 0x8B85;\n    readonly ACTIVE_UNIFORMS: 0x8B86;\n    readonly ACTIVE_ATTRIBUTES: 0x8B89;\n    readonly SHADING_LANGUAGE_VERSION: 0x8B8C;\n    readonly CURRENT_PROGRAM: 0x8B8D;\n    readonly NEVER: 0x0200;\n    readonly LESS: 0x0201;\n    readonly EQUAL: 0x0202;\n    readonly LEQUAL: 0x0203;\n    readonly GREATER: 0x0204;\n    readonly NOTEQUAL: 0x0205;\n    readonly GEQUAL: 0x0206;\n    readonly ALWAYS: 0x0207;\n    readonly KEEP: 0x1E00;\n    readonly REPLACE: 0x1E01;\n    readonly INCR: 0x1E02;\n    readonly DECR: 0x1E03;\n    readonly INVERT: 0x150A;\n    readonly INCR_WRAP: 0x8507;\n    readonly DECR_WRAP: 0x8508;\n    readonly VENDOR: 0x1F00;\n    readonly RENDERER: 0x1F01;\n    readonly VERSION: 0x1F02;\n    readonly NEAREST: 0x2600;\n    readonly LINEAR: 0x2601;\n    readonly NEAREST_MIPMAP_NEAREST: 0x2700;\n    readonly LINEAR_MIPMAP_NEAREST: 0x2701;\n    readonly NEAREST_MIPMAP_LINEAR: 0x2702;\n    readonly LINEAR_MIPMAP_LINEAR: 0x2703;\n    readonly TEXTURE_MAG_FILTER: 0x2800;\n    readonly TEXTURE_MIN_FILTER: 0x2801;\n    readonly TEXTURE_WRAP_S: 0x2802;\n    readonly TEXTURE_WRAP_T: 0x2803;\n    readonly TEXTURE_2D: 0x0DE1;\n    readonly TEXTURE: 0x1702;\n    readonly TEXTURE_CUBE_MAP: 0x8513;\n    readonly TEXTURE_BINDING_CUBE_MAP: 0x8514;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A;\n    readonly MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C;\n    readonly TEXTURE0: 0x84C0;\n    readonly TEXTURE1: 0x84C1;\n    readonly TEXTURE2: 0x84C2;\n    readonly TEXTURE3: 0x84C3;\n    readonly TEXTURE4: 0x84C4;\n    readonly TEXTURE5: 0x84C5;\n    readonly TEXTURE6: 0x84C6;\n    readonly TEXTURE7: 0x84C7;\n    readonly TEXTURE8: 0x84C8;\n    readonly TEXTURE9: 0x84C9;\n    readonly TEXTURE10: 0x84CA;\n    readonly TEXTURE11: 0x84CB;\n    readonly TEXTURE12: 0x84CC;\n    readonly TEXTURE13: 0x84CD;\n    readonly TEXTURE14: 0x84CE;\n    readonly TEXTURE15: 0x84CF;\n    readonly TEXTURE16: 0x84D0;\n    readonly TEXTURE17: 0x84D1;\n    readonly TEXTURE18: 0x84D2;\n    readonly TEXTURE19: 0x84D3;\n    readonly TEXTURE20: 0x84D4;\n    readonly TEXTURE21: 0x84D5;\n    readonly TEXTURE22: 0x84D6;\n    readonly TEXTURE23: 0x84D7;\n    readonly TEXTURE24: 0x84D8;\n    readonly TEXTURE25: 0x84D9;\n    readonly TEXTURE26: 0x84DA;\n    readonly TEXTURE27: 0x84DB;\n    readonly TEXTURE28: 0x84DC;\n    readonly TEXTURE29: 0x84DD;\n    readonly TEXTURE30: 0x84DE;\n    readonly TEXTURE31: 0x84DF;\n    readonly ACTIVE_TEXTURE: 0x84E0;\n    readonly REPEAT: 0x2901;\n    readonly CLAMP_TO_EDGE: 0x812F;\n    readonly MIRRORED_REPEAT: 0x8370;\n    readonly FLOAT_VEC2: 0x8B50;\n    readonly FLOAT_VEC3: 0x8B51;\n    readonly FLOAT_VEC4: 0x8B52;\n    readonly INT_VEC2: 0x8B53;\n    readonly INT_VEC3: 0x8B54;\n    readonly INT_VEC4: 0x8B55;\n    readonly BOOL: 0x8B56;\n    readonly BOOL_VEC2: 0x8B57;\n    readonly BOOL_VEC3: 0x8B58;\n    readonly BOOL_VEC4: 0x8B59;\n    readonly FLOAT_MAT2: 0x8B5A;\n    readonly FLOAT_MAT3: 0x8B5B;\n    readonly FLOAT_MAT4: 0x8B5C;\n    readonly SAMPLER_2D: 0x8B5E;\n    readonly SAMPLER_CUBE: 0x8B60;\n    readonly VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622;\n    readonly VERTEX_ATTRIB_ARRAY_SIZE: 0x8623;\n    readonly VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624;\n    readonly VERTEX_ATTRIB_ARRAY_TYPE: 0x8625;\n    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A;\n    readonly VERTEX_ATTRIB_ARRAY_POINTER: 0x8645;\n    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F;\n    readonly IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A;\n    readonly IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B;\n    readonly COMPILE_STATUS: 0x8B81;\n    readonly LOW_FLOAT: 0x8DF0;\n    readonly MEDIUM_FLOAT: 0x8DF1;\n    readonly HIGH_FLOAT: 0x8DF2;\n    readonly LOW_INT: 0x8DF3;\n    readonly MEDIUM_INT: 0x8DF4;\n    readonly HIGH_INT: 0x8DF5;\n    readonly FRAMEBUFFER: 0x8D40;\n    readonly RENDERBUFFER: 0x8D41;\n    readonly RGBA4: 0x8056;\n    readonly RGB5_A1: 0x8057;\n    readonly RGB565: 0x8D62;\n    readonly DEPTH_COMPONENT16: 0x81A5;\n    readonly STENCIL_INDEX8: 0x8D48;\n    readonly DEPTH_STENCIL: 0x84F9;\n    readonly RENDERBUFFER_WIDTH: 0x8D42;\n    readonly RENDERBUFFER_HEIGHT: 0x8D43;\n    readonly RENDERBUFFER_INTERNAL_FORMAT: 0x8D44;\n    readonly RENDERBUFFER_RED_SIZE: 0x8D50;\n    readonly RENDERBUFFER_GREEN_SIZE: 0x8D51;\n    readonly RENDERBUFFER_BLUE_SIZE: 0x8D52;\n    readonly RENDERBUFFER_ALPHA_SIZE: 0x8D53;\n    readonly RENDERBUFFER_DEPTH_SIZE: 0x8D54;\n    readonly RENDERBUFFER_STENCIL_SIZE: 0x8D55;\n    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0;\n    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3;\n    readonly COLOR_ATTACHMENT0: 0x8CE0;\n    readonly DEPTH_ATTACHMENT: 0x8D00;\n    readonly STENCIL_ATTACHMENT: 0x8D20;\n    readonly DEPTH_STENCIL_ATTACHMENT: 0x821A;\n    readonly NONE: 0;\n    readonly FRAMEBUFFER_COMPLETE: 0x8CD5;\n    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6;\n    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7;\n    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9;\n    readonly FRAMEBUFFER_UNSUPPORTED: 0x8CDD;\n    readonly FRAMEBUFFER_BINDING: 0x8CA6;\n    readonly RENDERBUFFER_BINDING: 0x8CA7;\n    readonly MAX_RENDERBUFFER_SIZE: 0x84E8;\n    readonly INVALID_FRAMEBUFFER_OPERATION: 0x0506;\n    readonly UNPACK_FLIP_Y_WEBGL: 0x9240;\n    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241;\n    readonly CONTEXT_LOST_WEBGL: 0x9242;\n    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243;\n    readonly BROWSER_DEFAULT_WEBGL: 0x9244;\n};\n\ninterface WebGLRenderingContextBase {\n    readonly canvas: HTMLCanvasElement | OffscreenCanvas;\n    readonly drawingBufferHeight: GLsizei;\n    readonly drawingBufferWidth: GLsizei;\n    activeTexture(texture: GLenum): void;\n    attachShader(program: WebGLProgram, shader: WebGLShader): void;\n    bindAttribLocation(program: WebGLProgram, index: GLuint, name: string): void;\n    bindBuffer(target: GLenum, buffer: WebGLBuffer | null): void;\n    bindFramebuffer(target: GLenum, framebuffer: WebGLFramebuffer | null): void;\n    bindRenderbuffer(target: GLenum, renderbuffer: WebGLRenderbuffer | null): void;\n    bindTexture(target: GLenum, texture: WebGLTexture | null): void;\n    blendColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;\n    blendEquation(mode: GLenum): void;\n    blendEquationSeparate(modeRGB: GLenum, modeAlpha: GLenum): void;\n    blendFunc(sfactor: GLenum, dfactor: GLenum): void;\n    blendFuncSeparate(srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void;\n    checkFramebufferStatus(target: GLenum): GLenum;\n    clear(mask: GLbitfield): void;\n    clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;\n    clearDepth(depth: GLclampf): void;\n    clearStencil(s: GLint): void;\n    colorMask(red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean): void;\n    compileShader(shader: WebGLShader): void;\n    copyTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint): void;\n    copyTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;\n    createBuffer(): WebGLBuffer | null;\n    createFramebuffer(): WebGLFramebuffer | null;\n    createProgram(): WebGLProgram | null;\n    createRenderbuffer(): WebGLRenderbuffer | null;\n    createShader(type: GLenum): WebGLShader | null;\n    createTexture(): WebGLTexture | null;\n    cullFace(mode: GLenum): void;\n    deleteBuffer(buffer: WebGLBuffer | null): void;\n    deleteFramebuffer(framebuffer: WebGLFramebuffer | null): void;\n    deleteProgram(program: WebGLProgram | null): void;\n    deleteRenderbuffer(renderbuffer: WebGLRenderbuffer | null): void;\n    deleteShader(shader: WebGLShader | null): void;\n    deleteTexture(texture: WebGLTexture | null): void;\n    depthFunc(func: GLenum): void;\n    depthMask(flag: GLboolean): void;\n    depthRange(zNear: GLclampf, zFar: GLclampf): void;\n    detachShader(program: WebGLProgram, shader: WebGLShader): void;\n    disable(cap: GLenum): void;\n    disableVertexAttribArray(index: GLuint): void;\n    drawArrays(mode: GLenum, first: GLint, count: GLsizei): void;\n    drawElements(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr): void;\n    enable(cap: GLenum): void;\n    enableVertexAttribArray(index: GLuint): void;\n    finish(): void;\n    flush(): void;\n    framebufferRenderbuffer(target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: WebGLRenderbuffer | null): void;\n    framebufferTexture2D(target: GLenum, attachment: GLenum, textarget: GLenum, texture: WebGLTexture | null, level: GLint): void;\n    frontFace(mode: GLenum): void;\n    generateMipmap(target: GLenum): void;\n    getActiveAttrib(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;\n    getActiveUniform(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;\n    getAttachedShaders(program: WebGLProgram): WebGLShader[] | null;\n    getAttribLocation(program: WebGLProgram, name: string): GLint;\n    getBufferParameter(target: GLenum, pname: GLenum): any;\n    getContextAttributes(): WebGLContextAttributes | null;\n    getError(): GLenum;\n    getExtension(extensionName: \"ANGLE_instanced_arrays\"): ANGLE_instanced_arrays | null;\n    getExtension(extensionName: \"EXT_blend_minmax\"): EXT_blend_minmax | null;\n    getExtension(extensionName: \"EXT_color_buffer_float\"): EXT_color_buffer_float | null;\n    getExtension(extensionName: \"EXT_color_buffer_half_float\"): EXT_color_buffer_half_float | null;\n    getExtension(extensionName: \"EXT_float_blend\"): EXT_float_blend | null;\n    getExtension(extensionName: \"EXT_frag_depth\"): EXT_frag_depth | null;\n    getExtension(extensionName: \"EXT_sRGB\"): EXT_sRGB | null;\n    getExtension(extensionName: \"EXT_shader_texture_lod\"): EXT_shader_texture_lod | null;\n    getExtension(extensionName: \"EXT_texture_compression_bptc\"): EXT_texture_compression_bptc | null;\n    getExtension(extensionName: \"EXT_texture_compression_rgtc\"): EXT_texture_compression_rgtc | null;\n    getExtension(extensionName: \"EXT_texture_filter_anisotropic\"): EXT_texture_filter_anisotropic | null;\n    getExtension(extensionName: \"KHR_parallel_shader_compile\"): KHR_parallel_shader_compile | null;\n    getExtension(extensionName: \"OES_element_index_uint\"): OES_element_index_uint | null;\n    getExtension(extensionName: \"OES_fbo_render_mipmap\"): OES_fbo_render_mipmap | null;\n    getExtension(extensionName: \"OES_standard_derivatives\"): OES_standard_derivatives | null;\n    getExtension(extensionName: \"OES_texture_float\"): OES_texture_float | null;\n    getExtension(extensionName: \"OES_texture_float_linear\"): OES_texture_float_linear | null;\n    getExtension(extensionName: \"OES_texture_half_float\"): OES_texture_half_float | null;\n    getExtension(extensionName: \"OES_texture_half_float_linear\"): OES_texture_half_float_linear | null;\n    getExtension(extensionName: \"OES_vertex_array_object\"): OES_vertex_array_object | null;\n    getExtension(extensionName: \"OVR_multiview2\"): OVR_multiview2 | null;\n    getExtension(extensionName: \"WEBGL_color_buffer_float\"): WEBGL_color_buffer_float | null;\n    getExtension(extensionName: \"WEBGL_compressed_texture_astc\"): WEBGL_compressed_texture_astc | null;\n    getExtension(extensionName: \"WEBGL_compressed_texture_etc\"): WEBGL_compressed_texture_etc | null;\n    getExtension(extensionName: \"WEBGL_compressed_texture_etc1\"): WEBGL_compressed_texture_etc1 | null;\n    getExtension(extensionName: \"WEBGL_compressed_texture_s3tc\"): WEBGL_compressed_texture_s3tc | null;\n    getExtension(extensionName: \"WEBGL_compressed_texture_s3tc_srgb\"): WEBGL_compressed_texture_s3tc_srgb | null;\n    getExtension(extensionName: \"WEBGL_debug_renderer_info\"): WEBGL_debug_renderer_info | null;\n    getExtension(extensionName: \"WEBGL_debug_shaders\"): WEBGL_debug_shaders | null;\n    getExtension(extensionName: \"WEBGL_depth_texture\"): WEBGL_depth_texture | null;\n    getExtension(extensionName: \"WEBGL_draw_buffers\"): WEBGL_draw_buffers | null;\n    getExtension(extensionName: \"WEBGL_lose_context\"): WEBGL_lose_context | null;\n    getExtension(extensionName: \"WEBGL_multi_draw\"): WEBGL_multi_draw | null;\n    getExtension(name: string): any;\n    getFramebufferAttachmentParameter(target: GLenum, attachment: GLenum, pname: GLenum): any;\n    getParameter(pname: GLenum): any;\n    getProgramInfoLog(program: WebGLProgram): string | null;\n    getProgramParameter(program: WebGLProgram, pname: GLenum): any;\n    getRenderbufferParameter(target: GLenum, pname: GLenum): any;\n    getShaderInfoLog(shader: WebGLShader): string | null;\n    getShaderParameter(shader: WebGLShader, pname: GLenum): any;\n    getShaderPrecisionFormat(shadertype: GLenum, precisiontype: GLenum): WebGLShaderPrecisionFormat | null;\n    getShaderSource(shader: WebGLShader): string | null;\n    getSupportedExtensions(): string[] | null;\n    getTexParameter(target: GLenum, pname: GLenum): any;\n    getUniform(program: WebGLProgram, location: WebGLUniformLocation): any;\n    getUniformLocation(program: WebGLProgram, name: string): WebGLUniformLocation | null;\n    getVertexAttrib(index: GLuint, pname: GLenum): any;\n    getVertexAttribOffset(index: GLuint, pname: GLenum): GLintptr;\n    hint(target: GLenum, mode: GLenum): void;\n    isBuffer(buffer: WebGLBuffer | null): GLboolean;\n    isContextLost(): boolean;\n    isEnabled(cap: GLenum): GLboolean;\n    isFramebuffer(framebuffer: WebGLFramebuffer | null): GLboolean;\n    isProgram(program: WebGLProgram | null): GLboolean;\n    isRenderbuffer(renderbuffer: WebGLRenderbuffer | null): GLboolean;\n    isShader(shader: WebGLShader | null): GLboolean;\n    isTexture(texture: WebGLTexture | null): GLboolean;\n    lineWidth(width: GLfloat): void;\n    linkProgram(program: WebGLProgram): void;\n    pixelStorei(pname: GLenum, param: GLint | GLboolean): void;\n    polygonOffset(factor: GLfloat, units: GLfloat): void;\n    renderbufferStorage(target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei): void;\n    sampleCoverage(value: GLclampf, invert: GLboolean): void;\n    scissor(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;\n    shaderSource(shader: WebGLShader, source: string): void;\n    stencilFunc(func: GLenum, ref: GLint, mask: GLuint): void;\n    stencilFuncSeparate(face: GLenum, func: GLenum, ref: GLint, mask: GLuint): void;\n    stencilMask(mask: GLuint): void;\n    stencilMaskSeparate(face: GLenum, mask: GLuint): void;\n    stencilOp(fail: GLenum, zfail: GLenum, zpass: GLenum): void;\n    stencilOpSeparate(face: GLenum, fail: GLenum, zfail: GLenum, zpass: GLenum): void;\n    texParameterf(target: GLenum, pname: GLenum, param: GLfloat): void;\n    texParameteri(target: GLenum, pname: GLenum, param: GLint): void;\n    uniform1f(location: WebGLUniformLocation | null, x: GLfloat): void;\n    uniform1i(location: WebGLUniformLocation | null, x: GLint): void;\n    uniform2f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat): void;\n    uniform2i(location: WebGLUniformLocation | null, x: GLint, y: GLint): void;\n    uniform3f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat, z: GLfloat): void;\n    uniform3i(location: WebGLUniformLocation | null, x: GLint, y: GLint, z: GLint): void;\n    uniform4f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void;\n    uniform4i(location: WebGLUniformLocation | null, x: GLint, y: GLint, z: GLint, w: GLint): void;\n    useProgram(program: WebGLProgram | null): void;\n    validateProgram(program: WebGLProgram): void;\n    vertexAttrib1f(index: GLuint, x: GLfloat): void;\n    vertexAttrib1fv(index: GLuint, values: Float32List): void;\n    vertexAttrib2f(index: GLuint, x: GLfloat, y: GLfloat): void;\n    vertexAttrib2fv(index: GLuint, values: Float32List): void;\n    vertexAttrib3f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat): void;\n    vertexAttrib3fv(index: GLuint, values: Float32List): void;\n    vertexAttrib4f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void;\n    vertexAttrib4fv(index: GLuint, values: Float32List): void;\n    vertexAttribPointer(index: GLuint, size: GLint, type: GLenum, normalized: GLboolean, stride: GLsizei, offset: GLintptr): void;\n    viewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;\n    readonly DEPTH_BUFFER_BIT: 0x00000100;\n    readonly STENCIL_BUFFER_BIT: 0x00000400;\n    readonly COLOR_BUFFER_BIT: 0x00004000;\n    readonly POINTS: 0x0000;\n    readonly LINES: 0x0001;\n    readonly LINE_LOOP: 0x0002;\n    readonly LINE_STRIP: 0x0003;\n    readonly TRIANGLES: 0x0004;\n    readonly TRIANGLE_STRIP: 0x0005;\n    readonly TRIANGLE_FAN: 0x0006;\n    readonly ZERO: 0;\n    readonly ONE: 1;\n    readonly SRC_COLOR: 0x0300;\n    readonly ONE_MINUS_SRC_COLOR: 0x0301;\n    readonly SRC_ALPHA: 0x0302;\n    readonly ONE_MINUS_SRC_ALPHA: 0x0303;\n    readonly DST_ALPHA: 0x0304;\n    readonly ONE_MINUS_DST_ALPHA: 0x0305;\n    readonly DST_COLOR: 0x0306;\n    readonly ONE_MINUS_DST_COLOR: 0x0307;\n    readonly SRC_ALPHA_SATURATE: 0x0308;\n    readonly FUNC_ADD: 0x8006;\n    readonly BLEND_EQUATION: 0x8009;\n    readonly BLEND_EQUATION_RGB: 0x8009;\n    readonly BLEND_EQUATION_ALPHA: 0x883D;\n    readonly FUNC_SUBTRACT: 0x800A;\n    readonly FUNC_REVERSE_SUBTRACT: 0x800B;\n    readonly BLEND_DST_RGB: 0x80C8;\n    readonly BLEND_SRC_RGB: 0x80C9;\n    readonly BLEND_DST_ALPHA: 0x80CA;\n    readonly BLEND_SRC_ALPHA: 0x80CB;\n    readonly CONSTANT_COLOR: 0x8001;\n    readonly ONE_MINUS_CONSTANT_COLOR: 0x8002;\n    readonly CONSTANT_ALPHA: 0x8003;\n    readonly ONE_MINUS_CONSTANT_ALPHA: 0x8004;\n    readonly BLEND_COLOR: 0x8005;\n    readonly ARRAY_BUFFER: 0x8892;\n    readonly ELEMENT_ARRAY_BUFFER: 0x8893;\n    readonly ARRAY_BUFFER_BINDING: 0x8894;\n    readonly ELEMENT_ARRAY_BUFFER_BINDING: 0x8895;\n    readonly STREAM_DRAW: 0x88E0;\n    readonly STATIC_DRAW: 0x88E4;\n    readonly DYNAMIC_DRAW: 0x88E8;\n    readonly BUFFER_SIZE: 0x8764;\n    readonly BUFFER_USAGE: 0x8765;\n    readonly CURRENT_VERTEX_ATTRIB: 0x8626;\n    readonly FRONT: 0x0404;\n    readonly BACK: 0x0405;\n    readonly FRONT_AND_BACK: 0x0408;\n    readonly CULL_FACE: 0x0B44;\n    readonly BLEND: 0x0BE2;\n    readonly DITHER: 0x0BD0;\n    readonly STENCIL_TEST: 0x0B90;\n    readonly DEPTH_TEST: 0x0B71;\n    readonly SCISSOR_TEST: 0x0C11;\n    readonly POLYGON_OFFSET_FILL: 0x8037;\n    readonly SAMPLE_ALPHA_TO_COVERAGE: 0x809E;\n    readonly SAMPLE_COVERAGE: 0x80A0;\n    readonly NO_ERROR: 0;\n    readonly INVALID_ENUM: 0x0500;\n    readonly INVALID_VALUE: 0x0501;\n    readonly INVALID_OPERATION: 0x0502;\n    readonly OUT_OF_MEMORY: 0x0505;\n    readonly CW: 0x0900;\n    readonly CCW: 0x0901;\n    readonly LINE_WIDTH: 0x0B21;\n    readonly ALIASED_POINT_SIZE_RANGE: 0x846D;\n    readonly ALIASED_LINE_WIDTH_RANGE: 0x846E;\n    readonly CULL_FACE_MODE: 0x0B45;\n    readonly FRONT_FACE: 0x0B46;\n    readonly DEPTH_RANGE: 0x0B70;\n    readonly DEPTH_WRITEMASK: 0x0B72;\n    readonly DEPTH_CLEAR_VALUE: 0x0B73;\n    readonly DEPTH_FUNC: 0x0B74;\n    readonly STENCIL_CLEAR_VALUE: 0x0B91;\n    readonly STENCIL_FUNC: 0x0B92;\n    readonly STENCIL_FAIL: 0x0B94;\n    readonly STENCIL_PASS_DEPTH_FAIL: 0x0B95;\n    readonly STENCIL_PASS_DEPTH_PASS: 0x0B96;\n    readonly STENCIL_REF: 0x0B97;\n    readonly STENCIL_VALUE_MASK: 0x0B93;\n    readonly STENCIL_WRITEMASK: 0x0B98;\n    readonly STENCIL_BACK_FUNC: 0x8800;\n    readonly STENCIL_BACK_FAIL: 0x8801;\n    readonly STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802;\n    readonly STENCIL_BACK_PASS_DEPTH_PASS: 0x8803;\n    readonly STENCIL_BACK_REF: 0x8CA3;\n    readonly STENCIL_BACK_VALUE_MASK: 0x8CA4;\n    readonly STENCIL_BACK_WRITEMASK: 0x8CA5;\n    readonly VIEWPORT: 0x0BA2;\n    readonly SCISSOR_BOX: 0x0C10;\n    readonly COLOR_CLEAR_VALUE: 0x0C22;\n    readonly COLOR_WRITEMASK: 0x0C23;\n    readonly UNPACK_ALIGNMENT: 0x0CF5;\n    readonly PACK_ALIGNMENT: 0x0D05;\n    readonly MAX_TEXTURE_SIZE: 0x0D33;\n    readonly MAX_VIEWPORT_DIMS: 0x0D3A;\n    readonly SUBPIXEL_BITS: 0x0D50;\n    readonly RED_BITS: 0x0D52;\n    readonly GREEN_BITS: 0x0D53;\n    readonly BLUE_BITS: 0x0D54;\n    readonly ALPHA_BITS: 0x0D55;\n    readonly DEPTH_BITS: 0x0D56;\n    readonly STENCIL_BITS: 0x0D57;\n    readonly POLYGON_OFFSET_UNITS: 0x2A00;\n    readonly POLYGON_OFFSET_FACTOR: 0x8038;\n    readonly TEXTURE_BINDING_2D: 0x8069;\n    readonly SAMPLE_BUFFERS: 0x80A8;\n    readonly SAMPLES: 0x80A9;\n    readonly SAMPLE_COVERAGE_VALUE: 0x80AA;\n    readonly SAMPLE_COVERAGE_INVERT: 0x80AB;\n    readonly COMPRESSED_TEXTURE_FORMATS: 0x86A3;\n    readonly DONT_CARE: 0x1100;\n    readonly FASTEST: 0x1101;\n    readonly NICEST: 0x1102;\n    readonly GENERATE_MIPMAP_HINT: 0x8192;\n    readonly BYTE: 0x1400;\n    readonly UNSIGNED_BYTE: 0x1401;\n    readonly SHORT: 0x1402;\n    readonly UNSIGNED_SHORT: 0x1403;\n    readonly INT: 0x1404;\n    readonly UNSIGNED_INT: 0x1405;\n    readonly FLOAT: 0x1406;\n    readonly DEPTH_COMPONENT: 0x1902;\n    readonly ALPHA: 0x1906;\n    readonly RGB: 0x1907;\n    readonly RGBA: 0x1908;\n    readonly LUMINANCE: 0x1909;\n    readonly LUMINANCE_ALPHA: 0x190A;\n    readonly UNSIGNED_SHORT_4_4_4_4: 0x8033;\n    readonly UNSIGNED_SHORT_5_5_5_1: 0x8034;\n    readonly UNSIGNED_SHORT_5_6_5: 0x8363;\n    readonly FRAGMENT_SHADER: 0x8B30;\n    readonly VERTEX_SHADER: 0x8B31;\n    readonly MAX_VERTEX_ATTRIBS: 0x8869;\n    readonly MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB;\n    readonly MAX_VARYING_VECTORS: 0x8DFC;\n    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D;\n    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C;\n    readonly MAX_TEXTURE_IMAGE_UNITS: 0x8872;\n    readonly MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD;\n    readonly SHADER_TYPE: 0x8B4F;\n    readonly DELETE_STATUS: 0x8B80;\n    readonly LINK_STATUS: 0x8B82;\n    readonly VALIDATE_STATUS: 0x8B83;\n    readonly ATTACHED_SHADERS: 0x8B85;\n    readonly ACTIVE_UNIFORMS: 0x8B86;\n    readonly ACTIVE_ATTRIBUTES: 0x8B89;\n    readonly SHADING_LANGUAGE_VERSION: 0x8B8C;\n    readonly CURRENT_PROGRAM: 0x8B8D;\n    readonly NEVER: 0x0200;\n    readonly LESS: 0x0201;\n    readonly EQUAL: 0x0202;\n    readonly LEQUAL: 0x0203;\n    readonly GREATER: 0x0204;\n    readonly NOTEQUAL: 0x0205;\n    readonly GEQUAL: 0x0206;\n    readonly ALWAYS: 0x0207;\n    readonly KEEP: 0x1E00;\n    readonly REPLACE: 0x1E01;\n    readonly INCR: 0x1E02;\n    readonly DECR: 0x1E03;\n    readonly INVERT: 0x150A;\n    readonly INCR_WRAP: 0x8507;\n    readonly DECR_WRAP: 0x8508;\n    readonly VENDOR: 0x1F00;\n    readonly RENDERER: 0x1F01;\n    readonly VERSION: 0x1F02;\n    readonly NEAREST: 0x2600;\n    readonly LINEAR: 0x2601;\n    readonly NEAREST_MIPMAP_NEAREST: 0x2700;\n    readonly LINEAR_MIPMAP_NEAREST: 0x2701;\n    readonly NEAREST_MIPMAP_LINEAR: 0x2702;\n    readonly LINEAR_MIPMAP_LINEAR: 0x2703;\n    readonly TEXTURE_MAG_FILTER: 0x2800;\n    readonly TEXTURE_MIN_FILTER: 0x2801;\n    readonly TEXTURE_WRAP_S: 0x2802;\n    readonly TEXTURE_WRAP_T: 0x2803;\n    readonly TEXTURE_2D: 0x0DE1;\n    readonly TEXTURE: 0x1702;\n    readonly TEXTURE_CUBE_MAP: 0x8513;\n    readonly TEXTURE_BINDING_CUBE_MAP: 0x8514;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A;\n    readonly MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C;\n    readonly TEXTURE0: 0x84C0;\n    readonly TEXTURE1: 0x84C1;\n    readonly TEXTURE2: 0x84C2;\n    readonly TEXTURE3: 0x84C3;\n    readonly TEXTURE4: 0x84C4;\n    readonly TEXTURE5: 0x84C5;\n    readonly TEXTURE6: 0x84C6;\n    readonly TEXTURE7: 0x84C7;\n    readonly TEXTURE8: 0x84C8;\n    readonly TEXTURE9: 0x84C9;\n    readonly TEXTURE10: 0x84CA;\n    readonly TEXTURE11: 0x84CB;\n    readonly TEXTURE12: 0x84CC;\n    readonly TEXTURE13: 0x84CD;\n    readonly TEXTURE14: 0x84CE;\n    readonly TEXTURE15: 0x84CF;\n    readonly TEXTURE16: 0x84D0;\n    readonly TEXTURE17: 0x84D1;\n    readonly TEXTURE18: 0x84D2;\n    readonly TEXTURE19: 0x84D3;\n    readonly TEXTURE20: 0x84D4;\n    readonly TEXTURE21: 0x84D5;\n    readonly TEXTURE22: 0x84D6;\n    readonly TEXTURE23: 0x84D7;\n    readonly TEXTURE24: 0x84D8;\n    readonly TEXTURE25: 0x84D9;\n    readonly TEXTURE26: 0x84DA;\n    readonly TEXTURE27: 0x84DB;\n    readonly TEXTURE28: 0x84DC;\n    readonly TEXTURE29: 0x84DD;\n    readonly TEXTURE30: 0x84DE;\n    readonly TEXTURE31: 0x84DF;\n    readonly ACTIVE_TEXTURE: 0x84E0;\n    readonly REPEAT: 0x2901;\n    readonly CLAMP_TO_EDGE: 0x812F;\n    readonly MIRRORED_REPEAT: 0x8370;\n    readonly FLOAT_VEC2: 0x8B50;\n    readonly FLOAT_VEC3: 0x8B51;\n    readonly FLOAT_VEC4: 0x8B52;\n    readonly INT_VEC2: 0x8B53;\n    readonly INT_VEC3: 0x8B54;\n    readonly INT_VEC4: 0x8B55;\n    readonly BOOL: 0x8B56;\n    readonly BOOL_VEC2: 0x8B57;\n    readonly BOOL_VEC3: 0x8B58;\n    readonly BOOL_VEC4: 0x8B59;\n    readonly FLOAT_MAT2: 0x8B5A;\n    readonly FLOAT_MAT3: 0x8B5B;\n    readonly FLOAT_MAT4: 0x8B5C;\n    readonly SAMPLER_2D: 0x8B5E;\n    readonly SAMPLER_CUBE: 0x8B60;\n    readonly VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622;\n    readonly VERTEX_ATTRIB_ARRAY_SIZE: 0x8623;\n    readonly VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624;\n    readonly VERTEX_ATTRIB_ARRAY_TYPE: 0x8625;\n    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A;\n    readonly VERTEX_ATTRIB_ARRAY_POINTER: 0x8645;\n    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F;\n    readonly IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A;\n    readonly IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B;\n    readonly COMPILE_STATUS: 0x8B81;\n    readonly LOW_FLOAT: 0x8DF0;\n    readonly MEDIUM_FLOAT: 0x8DF1;\n    readonly HIGH_FLOAT: 0x8DF2;\n    readonly LOW_INT: 0x8DF3;\n    readonly MEDIUM_INT: 0x8DF4;\n    readonly HIGH_INT: 0x8DF5;\n    readonly FRAMEBUFFER: 0x8D40;\n    readonly RENDERBUFFER: 0x8D41;\n    readonly RGBA4: 0x8056;\n    readonly RGB5_A1: 0x8057;\n    readonly RGB565: 0x8D62;\n    readonly DEPTH_COMPONENT16: 0x81A5;\n    readonly STENCIL_INDEX8: 0x8D48;\n    readonly DEPTH_STENCIL: 0x84F9;\n    readonly RENDERBUFFER_WIDTH: 0x8D42;\n    readonly RENDERBUFFER_HEIGHT: 0x8D43;\n    readonly RENDERBUFFER_INTERNAL_FORMAT: 0x8D44;\n    readonly RENDERBUFFER_RED_SIZE: 0x8D50;\n    readonly RENDERBUFFER_GREEN_SIZE: 0x8D51;\n    readonly RENDERBUFFER_BLUE_SIZE: 0x8D52;\n    readonly RENDERBUFFER_ALPHA_SIZE: 0x8D53;\n    readonly RENDERBUFFER_DEPTH_SIZE: 0x8D54;\n    readonly RENDERBUFFER_STENCIL_SIZE: 0x8D55;\n    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0;\n    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3;\n    readonly COLOR_ATTACHMENT0: 0x8CE0;\n    readonly DEPTH_ATTACHMENT: 0x8D00;\n    readonly STENCIL_ATTACHMENT: 0x8D20;\n    readonly DEPTH_STENCIL_ATTACHMENT: 0x821A;\n    readonly NONE: 0;\n    readonly FRAMEBUFFER_COMPLETE: 0x8CD5;\n    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6;\n    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7;\n    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9;\n    readonly FRAMEBUFFER_UNSUPPORTED: 0x8CDD;\n    readonly FRAMEBUFFER_BINDING: 0x8CA6;\n    readonly RENDERBUFFER_BINDING: 0x8CA7;\n    readonly MAX_RENDERBUFFER_SIZE: 0x84E8;\n    readonly INVALID_FRAMEBUFFER_OPERATION: 0x0506;\n    readonly UNPACK_FLIP_Y_WEBGL: 0x9240;\n    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241;\n    readonly CONTEXT_LOST_WEBGL: 0x9242;\n    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243;\n    readonly BROWSER_DEFAULT_WEBGL: 0x9244;\n}\n\ninterface WebGLRenderingContextOverloads {\n    bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum): void;\n    bufferData(target: GLenum, data: BufferSource | null, usage: GLenum): void;\n    bufferSubData(target: GLenum, offset: GLintptr, data: BufferSource): void;\n    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, data: ArrayBufferView): void;\n    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, data: ArrayBufferView): void;\n    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;\n    uniform1fv(location: WebGLUniformLocation | null, v: Float32List): void;\n    uniform1iv(location: WebGLUniformLocation | null, v: Int32List): void;\n    uniform2fv(location: WebGLUniformLocation | null, v: Float32List): void;\n    uniform2iv(location: WebGLUniformLocation | null, v: Int32List): void;\n    uniform3fv(location: WebGLUniformLocation | null, v: Float32List): void;\n    uniform3iv(location: WebGLUniformLocation | null, v: Int32List): void;\n    uniform4fv(location: WebGLUniformLocation | null, v: Float32List): void;\n    uniform4iv(location: WebGLUniformLocation | null, v: Int32List): void;\n    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;\n    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;\n    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;\n}\n\ninterface WebGLSampler {\n}\n\ndeclare var WebGLSampler: {\n    prototype: WebGLSampler;\n    new(): WebGLSampler;\n};\n\n/** The WebGLShader is part of the WebGL API and can either be a vertex or a fragment shader. A WebGLProgram requires both types of shaders. */\ninterface WebGLShader {\n}\n\ndeclare var WebGLShader: {\n    prototype: WebGLShader;\n    new(): WebGLShader;\n};\n\n/** Part of the WebGL API and represents the information returned by calling the WebGLRenderingContext.getShaderPrecisionFormat() method. */\ninterface WebGLShaderPrecisionFormat {\n    readonly precision: GLint;\n    readonly rangeMax: GLint;\n    readonly rangeMin: GLint;\n}\n\ndeclare var WebGLShaderPrecisionFormat: {\n    prototype: WebGLShaderPrecisionFormat;\n    new(): WebGLShaderPrecisionFormat;\n};\n\ninterface WebGLSync {\n}\n\ndeclare var WebGLSync: {\n    prototype: WebGLSync;\n    new(): WebGLSync;\n};\n\n/** Part of the WebGL API and represents an opaque texture object providing storage and state for texturing operations. */\ninterface WebGLTexture {\n}\n\ndeclare var WebGLTexture: {\n    prototype: WebGLTexture;\n    new(): WebGLTexture;\n};\n\ninterface WebGLTransformFeedback {\n}\n\ndeclare var WebGLTransformFeedback: {\n    prototype: WebGLTransformFeedback;\n    new(): WebGLTransformFeedback;\n};\n\n/** Part of the WebGL API and represents the location of a uniform variable in a shader program. */\ninterface WebGLUniformLocation {\n}\n\ndeclare var WebGLUniformLocation: {\n    prototype: WebGLUniformLocation;\n    new(): WebGLUniformLocation;\n};\n\ninterface WebGLVertexArrayObject {\n}\n\ndeclare var WebGLVertexArrayObject: {\n    prototype: WebGLVertexArrayObject;\n    new(): WebGLVertexArrayObject;\n};\n\ninterface WebGLVertexArrayObjectOES {\n}\n\ninterface WebSocketEventMap {\n    \"close\": CloseEvent;\n    \"error\": Event;\n    \"message\": MessageEvent;\n    \"open\": Event;\n}\n\n/** Provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. */\ninterface WebSocket extends EventTarget {\n    /**\n     * Returns a string that indicates how binary data from the WebSocket object is exposed to scripts:\n     *\n     * Can be set, to change how binary data is returned. The default is \"blob\".\n     */\n    binaryType: BinaryType;\n    /**\n     * Returns the number of bytes of application data (UTF-8 text and binary data) that have been queued using send() but not yet been transmitted to the network.\n     *\n     * If the WebSocket connection is closed, this attribute's value will only increase with each call to the send() method. (The number does not reset to zero once the connection closes.)\n     */\n    readonly bufferedAmount: number;\n    /** Returns the extensions selected by the server, if any. */\n    readonly extensions: string;\n    onclose: ((this: WebSocket, ev: CloseEvent) => any) | null;\n    onerror: ((this: WebSocket, ev: Event) => any) | null;\n    onmessage: ((this: WebSocket, ev: MessageEvent) => any) | null;\n    onopen: ((this: WebSocket, ev: Event) => any) | null;\n    /** Returns the subprotocol selected by the server, if any. It can be used in conjunction with the array form of the constructor's second argument to perform subprotocol negotiation. */\n    readonly protocol: string;\n    /** Returns the state of the WebSocket object's connection. It can have the values described below. */\n    readonly readyState: number;\n    /** Returns the URL that was used to establish the WebSocket connection. */\n    readonly url: string;\n    /** Closes the WebSocket connection, optionally using code as the the WebSocket connection close code and reason as the the WebSocket connection close reason. */\n    close(code?: number, reason?: string): void;\n    /** Transmits data using the WebSocket connection. data can be a string, a Blob, an ArrayBuffer, or an ArrayBufferView. */\n    send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;\n    readonly CONNECTING: 0;\n    readonly OPEN: 1;\n    readonly CLOSING: 2;\n    readonly CLOSED: 3;\n    addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var WebSocket: {\n    prototype: WebSocket;\n    new(url: string | URL, protocols?: string | string[]): WebSocket;\n    readonly CONNECTING: 0;\n    readonly OPEN: 1;\n    readonly CLOSING: 2;\n    readonly CLOSED: 3;\n};\n\n/** Events that occur due to the user moving a mouse wheel or similar input device. */\ninterface WheelEvent extends MouseEvent {\n    readonly deltaMode: number;\n    readonly deltaX: number;\n    readonly deltaY: number;\n    readonly deltaZ: number;\n    readonly DOM_DELTA_PIXEL: 0x00;\n    readonly DOM_DELTA_LINE: 0x01;\n    readonly DOM_DELTA_PAGE: 0x02;\n}\n\ndeclare var WheelEvent: {\n    prototype: WheelEvent;\n    new(type: string, eventInitDict?: WheelEventInit): WheelEvent;\n    readonly DOM_DELTA_PIXEL: 0x00;\n    readonly DOM_DELTA_LINE: 0x01;\n    readonly DOM_DELTA_PAGE: 0x02;\n};\n\ninterface WindowEventMap extends GlobalEventHandlersEventMap, WindowEventHandlersEventMap {\n    \"DOMContentLoaded\": Event;\n    \"devicemotion\": DeviceMotionEvent;\n    \"deviceorientation\": DeviceOrientationEvent;\n    \"gamepadconnected\": GamepadEvent;\n    \"gamepaddisconnected\": GamepadEvent;\n    \"orientationchange\": Event;\n}\n\n/** A window containing a DOM document; the document property points to the DOM document loaded in that window. */\ninterface Window extends EventTarget, AnimationFrameProvider, GlobalEventHandlers, WindowEventHandlers, WindowLocalStorage, WindowOrWorkerGlobalScope, WindowSessionStorage {\n    /** @deprecated This is a legacy alias of \\`navigator\\`. */\n    readonly clientInformation: Navigator;\n    /** Returns true if the window has been closed, false otherwise. */\n    readonly closed: boolean;\n    /** Defines a new custom element, mapping the given name to the given constructor as an autonomous custom element. */\n    readonly customElements: CustomElementRegistry;\n    readonly devicePixelRatio: number;\n    readonly document: Document;\n    /** @deprecated */\n    readonly event: Event | undefined;\n    /** @deprecated */\n    readonly external: External;\n    readonly frameElement: Element | null;\n    readonly frames: WindowProxy;\n    readonly history: History;\n    readonly innerHeight: number;\n    readonly innerWidth: number;\n    readonly length: number;\n    get location(): Location;\n    set location(href: string | Location);\n    /** Returns true if the location bar is visible; otherwise, returns false. */\n    readonly locationbar: BarProp;\n    /** Returns true if the menu bar is visible; otherwise, returns false. */\n    readonly menubar: BarProp;\n    name: string;\n    readonly navigator: Navigator;\n    /** Available only in secure contexts. */\n    ondevicemotion: ((this: Window, ev: DeviceMotionEvent) => any) | null;\n    /** Available only in secure contexts. */\n    ondeviceorientation: ((this: Window, ev: DeviceOrientationEvent) => any) | null;\n    /** @deprecated */\n    onorientationchange: ((this: Window, ev: Event) => any) | null;\n    opener: any;\n    /** @deprecated */\n    readonly orientation: number;\n    readonly outerHeight: number;\n    readonly outerWidth: number;\n    /** @deprecated This is a legacy alias of \\`scrollX\\`. */\n    readonly pageXOffset: number;\n    /** @deprecated This is a legacy alias of \\`scrollY\\`. */\n    readonly pageYOffset: number;\n    /**\n     * Refers to either the parent WindowProxy, or itself.\n     *\n     * It can rarely be null e.g. for contentWindow of an iframe that is already removed from the parent.\n     */\n    readonly parent: WindowProxy;\n    /** Returns true if the personal bar is visible; otherwise, returns false. */\n    readonly personalbar: BarProp;\n    readonly screen: Screen;\n    readonly screenLeft: number;\n    readonly screenTop: number;\n    readonly screenX: number;\n    readonly screenY: number;\n    readonly scrollX: number;\n    readonly scrollY: number;\n    /** Returns true if the scrollbars are visible; otherwise, returns false. */\n    readonly scrollbars: BarProp;\n    readonly self: Window & typeof globalThis;\n    readonly speechSynthesis: SpeechSynthesis;\n    /** @deprecated */\n    status: string;\n    /** Returns true if the status bar is visible; otherwise, returns false. */\n    readonly statusbar: BarProp;\n    /** Returns true if the toolbar is visible; otherwise, returns false. */\n    readonly toolbar: BarProp;\n    readonly top: WindowProxy | null;\n    readonly visualViewport: VisualViewport | null;\n    readonly window: Window & typeof globalThis;\n    alert(message?: any): void;\n    blur(): void;\n    cancelIdleCallback(handle: number): void;\n    /** @deprecated */\n    captureEvents(): void;\n    /** Closes the window. */\n    close(): void;\n    confirm(message?: string): boolean;\n    /** Moves the focus to the window's browsing context, if any. */\n    focus(): void;\n    getComputedStyle(elt: Element, pseudoElt?: string | null): CSSStyleDeclaration;\n    getSelection(): Selection | null;\n    matchMedia(query: string): MediaQueryList;\n    moveBy(x: number, y: number): void;\n    moveTo(x: number, y: number): void;\n    open(url?: string | URL, target?: string, features?: string): WindowProxy | null;\n    /**\n     * Posts a message to the given window. Messages can be structured objects, e.g. nested objects and arrays, can contain JavaScript values (strings, numbers, Date objects, etc), and can contain certain data objects such as File Blob, FileList, and ArrayBuffer objects.\n     *\n     * Objects listed in the transfer member of options are transferred, not just cloned, meaning that they are no longer usable on the sending side.\n     *\n     * A target origin can be specified using the targetOrigin member of options. If not provided, it defaults to \"/\". This default restricts the message to same-origin targets only.\n     *\n     * If the origin of the target window doesn't match the given target origin, the message is discarded, to avoid information leakage. To send the message to the target regardless of origin, set the target origin to \"*\".\n     *\n     * Throws a \"DataCloneError\" DOMException if transfer array contains duplicate objects or if message could not be cloned.\n     */\n    postMessage(message: any, targetOrigin: string, transfer?: Transferable[]): void;\n    postMessage(message: any, options?: WindowPostMessageOptions): void;\n    print(): void;\n    prompt(message?: string, _default?: string): string | null;\n    /** @deprecated */\n    releaseEvents(): void;\n    requestIdleCallback(callback: IdleRequestCallback, options?: IdleRequestOptions): number;\n    resizeBy(x: number, y: number): void;\n    resizeTo(width: number, height: number): void;\n    scroll(options?: ScrollToOptions): void;\n    scroll(x: number, y: number): void;\n    scrollBy(options?: ScrollToOptions): void;\n    scrollBy(x: number, y: number): void;\n    scrollTo(options?: ScrollToOptions): void;\n    scrollTo(x: number, y: number): void;\n    /** Cancels the document load. */\n    stop(): void;\n    addEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n    [index: number]: Window;\n}\n\ndeclare var Window: {\n    prototype: Window;\n    new(): Window;\n};\n\ninterface WindowEventHandlersEventMap {\n    \"afterprint\": Event;\n    \"beforeprint\": Event;\n    \"beforeunload\": BeforeUnloadEvent;\n    \"gamepadconnected\": GamepadEvent;\n    \"gamepaddisconnected\": GamepadEvent;\n    \"hashchange\": HashChangeEvent;\n    \"languagechange\": Event;\n    \"message\": MessageEvent;\n    \"messageerror\": MessageEvent;\n    \"offline\": Event;\n    \"online\": Event;\n    \"pagehide\": PageTransitionEvent;\n    \"pageshow\": PageTransitionEvent;\n    \"popstate\": PopStateEvent;\n    \"rejectionhandled\": PromiseRejectionEvent;\n    \"storage\": StorageEvent;\n    \"unhandledrejection\": PromiseRejectionEvent;\n    \"unload\": Event;\n}\n\ninterface WindowEventHandlers {\n    onafterprint: ((this: WindowEventHandlers, ev: Event) => any) | null;\n    onbeforeprint: ((this: WindowEventHandlers, ev: Event) => any) | null;\n    onbeforeunload: ((this: WindowEventHandlers, ev: BeforeUnloadEvent) => any) | null;\n    ongamepadconnected: ((this: WindowEventHandlers, ev: GamepadEvent) => any) | null;\n    ongamepaddisconnected: ((this: WindowEventHandlers, ev: GamepadEvent) => any) | null;\n    onhashchange: ((this: WindowEventHandlers, ev: HashChangeEvent) => any) | null;\n    onlanguagechange: ((this: WindowEventHandlers, ev: Event) => any) | null;\n    onmessage: ((this: WindowEventHandlers, ev: MessageEvent) => any) | null;\n    onmessageerror: ((this: WindowEventHandlers, ev: MessageEvent) => any) | null;\n    onoffline: ((this: WindowEventHandlers, ev: Event) => any) | null;\n    ononline: ((this: WindowEventHandlers, ev: Event) => any) | null;\n    onpagehide: ((this: WindowEventHandlers, ev: PageTransitionEvent) => any) | null;\n    onpageshow: ((this: WindowEventHandlers, ev: PageTransitionEvent) => any) | null;\n    onpopstate: ((this: WindowEventHandlers, ev: PopStateEvent) => any) | null;\n    onrejectionhandled: ((this: WindowEventHandlers, ev: PromiseRejectionEvent) => any) | null;\n    onstorage: ((this: WindowEventHandlers, ev: StorageEvent) => any) | null;\n    onunhandledrejection: ((this: WindowEventHandlers, ev: PromiseRejectionEvent) => any) | null;\n    onunload: ((this: WindowEventHandlers, ev: Event) => any) | null;\n    addEventListener<K extends keyof WindowEventHandlersEventMap>(type: K, listener: (this: WindowEventHandlers, ev: WindowEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof WindowEventHandlersEventMap>(type: K, listener: (this: WindowEventHandlers, ev: WindowEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ninterface WindowLocalStorage {\n    readonly localStorage: Storage;\n}\n\ninterface WindowOrWorkerGlobalScope {\n    /** Available only in secure contexts. */\n    readonly caches: CacheStorage;\n    readonly crossOriginIsolated: boolean;\n    readonly crypto: Crypto;\n    readonly indexedDB: IDBFactory;\n    readonly isSecureContext: boolean;\n    readonly origin: string;\n    readonly performance: Performance;\n    atob(data: string): string;\n    btoa(data: string): string;\n    clearInterval(id: number | undefined): void;\n    clearTimeout(id: number | undefined): void;\n    createImageBitmap(image: ImageBitmapSource, options?: ImageBitmapOptions): Promise<ImageBitmap>;\n    createImageBitmap(image: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number, options?: ImageBitmapOptions): Promise<ImageBitmap>;\n    fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;\n    queueMicrotask(callback: VoidFunction): void;\n    reportError(e: any): void;\n    setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;\n    setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;\n    structuredClone(value: any, options?: StructuredSerializeOptions): any;\n}\n\ninterface WindowSessionStorage {\n    readonly sessionStorage: Storage;\n}\n\ninterface WorkerEventMap extends AbstractWorkerEventMap {\n    \"message\": MessageEvent;\n    \"messageerror\": MessageEvent;\n}\n\n/** This Web Workers API interface represents a background task that can be easily created and can send messages back to its creator. Creating a worker is as simple as calling the Worker() constructor and specifying a script to be run in the worker thread. */\ninterface Worker extends EventTarget, AbstractWorker {\n    onmessage: ((this: Worker, ev: MessageEvent) => any) | null;\n    onmessageerror: ((this: Worker, ev: MessageEvent) => any) | null;\n    /** Clones message and transmits it to worker's global environment. transfer can be passed as a list of objects that are to be transferred rather than cloned. */\n    postMessage(message: any, transfer: Transferable[]): void;\n    postMessage(message: any, options?: StructuredSerializeOptions): void;\n    /** Aborts worker's associated global environment. */\n    terminate(): void;\n    addEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: Worker, ev: WorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: Worker, ev: WorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Worker: {\n    prototype: Worker;\n    new(scriptURL: string | URL, options?: WorkerOptions): Worker;\n};\n\n/** Available only in secure contexts. */\ninterface Worklet {\n    /**\n     * Loads and executes the module script given by moduleURL into all of worklet's global scopes. It can also create additional global scopes as part of this process, depending on the worklet type. The returned promise will fulfill once the script has been successfully loaded and run in all global scopes.\n     *\n     * The credentials option can be set to a credentials mode to modify the script-fetching process. It defaults to \"same-origin\".\n     *\n     * Any failures in fetching the script or its dependencies will cause the returned promise to be rejected with an \"AbortError\" DOMException. Any errors in parsing the script or its dependencies will cause the returned promise to be rejected with the exception generated during parsing.\n     */\n    addModule(moduleURL: string | URL, options?: WorkletOptions): Promise<void>;\n}\n\ndeclare var Worklet: {\n    prototype: Worklet;\n    new(): Worklet;\n};\n\n/** This Streams API interface provides\\xA0a standard abstraction for writing streaming data to a destination, known as a sink. This object comes with built-in backpressure and queuing. */\ninterface WritableStream<W = any> {\n    readonly locked: boolean;\n    abort(reason?: any): Promise<void>;\n    close(): Promise<void>;\n    getWriter(): WritableStreamDefaultWriter<W>;\n}\n\ndeclare var WritableStream: {\n    prototype: WritableStream;\n    new<W = any>(underlyingSink?: UnderlyingSink<W>, strategy?: QueuingStrategy<W>): WritableStream<W>;\n};\n\n/** This Streams API interface represents a controller allowing control of a\\xA0WritableStream's state. When constructing a WritableStream, the underlying sink is given a corresponding WritableStreamDefaultController instance to manipulate. */\ninterface WritableStreamDefaultController {\n    readonly signal: AbortSignal;\n    error(e?: any): void;\n}\n\ndeclare var WritableStreamDefaultController: {\n    prototype: WritableStreamDefaultController;\n    new(): WritableStreamDefaultController;\n};\n\n/** This Streams API interface is the object returned by WritableStream.getWriter() and once created locks the < writer to the WritableStream ensuring that no other streams can write to the underlying sink. */\ninterface WritableStreamDefaultWriter<W = any> {\n    readonly closed: Promise<undefined>;\n    readonly desiredSize: number | null;\n    readonly ready: Promise<undefined>;\n    abort(reason?: any): Promise<void>;\n    close(): Promise<void>;\n    releaseLock(): void;\n    write(chunk?: W): Promise<void>;\n}\n\ndeclare var WritableStreamDefaultWriter: {\n    prototype: WritableStreamDefaultWriter;\n    new<W = any>(stream: WritableStream<W>): WritableStreamDefaultWriter<W>;\n};\n\n/** An XML document. It inherits from the generic Document and does not add any specific methods or properties to it: nevertheless, several algorithms behave differently with the two types of documents. */\ninterface XMLDocument extends Document {\n    addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: XMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: XMLDocument, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var XMLDocument: {\n    prototype: XMLDocument;\n    new(): XMLDocument;\n};\n\ninterface XMLHttpRequestEventMap extends XMLHttpRequestEventTargetEventMap {\n    \"readystatechange\": Event;\n}\n\n/** Use XMLHttpRequest (XHR) objects to interact with servers. You can retrieve data from a URL without having to do a full page refresh. This enables a Web page to update just part of a page without disrupting what the user is doing. */\ninterface XMLHttpRequest extends XMLHttpRequestEventTarget {\n    onreadystatechange: ((this: XMLHttpRequest, ev: Event) => any) | null;\n    /** Returns client's state. */\n    readonly readyState: number;\n    /** Returns the response body. */\n    readonly response: any;\n    /**\n     * Returns response as text.\n     *\n     * Throws an \"InvalidStateError\" DOMException if responseType is not the empty string or \"text\".\n     */\n    readonly responseText: string;\n    /**\n     * Returns the response type.\n     *\n     * Can be set to change the response type. Values are: the empty string (default), \"arraybuffer\", \"blob\", \"document\", \"json\", and \"text\".\n     *\n     * When set: setting to \"document\" is ignored if current global object is not a Window object.\n     *\n     * When set: throws an \"InvalidStateError\" DOMException if state is loading or done.\n     *\n     * When set: throws an \"InvalidAccessError\" DOMException if the synchronous flag is set and current global object is a Window object.\n     */\n    responseType: XMLHttpRequestResponseType;\n    readonly responseURL: string;\n    /**\n     * Returns the response as document.\n     *\n     * Throws an \"InvalidStateError\" DOMException if responseType is not the empty string or \"document\".\n     */\n    readonly responseXML: Document | null;\n    readonly status: number;\n    readonly statusText: string;\n    /**\n     * Can be set to a time in milliseconds. When set to a non-zero value will cause fetching to terminate after the given time has passed. When the time has passed, the request has not yet completed, and this's synchronous flag is unset, a timeout event will then be dispatched, or a \"TimeoutError\" DOMException will be thrown otherwise (for the send() method).\n     *\n     * When set: throws an \"InvalidAccessError\" DOMException if the synchronous flag is set and current global object is a Window object.\n     */\n    timeout: number;\n    /** Returns the associated XMLHttpRequestUpload object. It can be used to gather transmission information when data is transferred to a server. */\n    readonly upload: XMLHttpRequestUpload;\n    /**\n     * True when credentials are to be included in a cross-origin request. False when they are to be excluded in a cross-origin request and when cookies are to be ignored in its response. Initially false.\n     *\n     * When set: throws an \"InvalidStateError\" DOMException if state is not unsent or opened, or if the send() flag is set.\n     */\n    withCredentials: boolean;\n    /** Cancels any network activity. */\n    abort(): void;\n    getAllResponseHeaders(): string;\n    getResponseHeader(name: string): string | null;\n    /**\n     * Sets the request method, request URL, and synchronous flag.\n     *\n     * Throws a \"SyntaxError\" DOMException if either method is not a valid method or url cannot be parsed.\n     *\n     * Throws a \"SecurityError\" DOMException if method is a case-insensitive match for \\`CONNECT\\`, \\`TRACE\\`, or \\`TRACK\\`.\n     *\n     * Throws an \"InvalidAccessError\" DOMException if async is false, current global object is a Window object, and the timeout attribute is not zero or the responseType attribute is not the empty string.\n     */\n    open(method: string, url: string | URL): void;\n    open(method: string, url: string | URL, async: boolean, username?: string | null, password?: string | null): void;\n    /**\n     * Acts as if the \\`Content-Type\\` header value for a response is mime. (It does not change the header.)\n     *\n     * Throws an \"InvalidStateError\" DOMException if state is loading or done.\n     */\n    overrideMimeType(mime: string): void;\n    /**\n     * Initiates the request. The body argument provides the request body, if any, and is ignored if the request method is GET or HEAD.\n     *\n     * Throws an \"InvalidStateError\" DOMException if either state is not opened or the send() flag is set.\n     */\n    send(body?: Document | XMLHttpRequestBodyInit | null): void;\n    /**\n     * Combines a header in author request headers.\n     *\n     * Throws an \"InvalidStateError\" DOMException if either state is not opened or the send() flag is set.\n     *\n     * Throws a \"SyntaxError\" DOMException if name is not a header name or if value is not a header value.\n     */\n    setRequestHeader(name: string, value: string): void;\n    readonly UNSENT: 0;\n    readonly OPENED: 1;\n    readonly HEADERS_RECEIVED: 2;\n    readonly LOADING: 3;\n    readonly DONE: 4;\n    addEventListener<K extends keyof XMLHttpRequestEventMap>(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof XMLHttpRequestEventMap>(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var XMLHttpRequest: {\n    prototype: XMLHttpRequest;\n    new(): XMLHttpRequest;\n    readonly UNSENT: 0;\n    readonly OPENED: 1;\n    readonly HEADERS_RECEIVED: 2;\n    readonly LOADING: 3;\n    readonly DONE: 4;\n};\n\ninterface XMLHttpRequestEventTargetEventMap {\n    \"abort\": ProgressEvent<XMLHttpRequestEventTarget>;\n    \"error\": ProgressEvent<XMLHttpRequestEventTarget>;\n    \"load\": ProgressEvent<XMLHttpRequestEventTarget>;\n    \"loadend\": ProgressEvent<XMLHttpRequestEventTarget>;\n    \"loadstart\": ProgressEvent<XMLHttpRequestEventTarget>;\n    \"progress\": ProgressEvent<XMLHttpRequestEventTarget>;\n    \"timeout\": ProgressEvent<XMLHttpRequestEventTarget>;\n}\n\ninterface XMLHttpRequestEventTarget extends EventTarget {\n    onabort: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    onerror: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    onload: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    onloadend: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    onloadstart: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    onprogress: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    ontimeout: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    addEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestEventTarget, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestEventTarget, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var XMLHttpRequestEventTarget: {\n    prototype: XMLHttpRequestEventTarget;\n    new(): XMLHttpRequestEventTarget;\n};\n\ninterface XMLHttpRequestUpload extends XMLHttpRequestEventTarget {\n    addEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestUpload, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestUpload, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var XMLHttpRequestUpload: {\n    prototype: XMLHttpRequestUpload;\n    new(): XMLHttpRequestUpload;\n};\n\n/** Provides the serializeToString() method to construct an XML string representing a DOM tree. */\ninterface XMLSerializer {\n    serializeToString(root: Node): string;\n}\n\ndeclare var XMLSerializer: {\n    prototype: XMLSerializer;\n    new(): XMLSerializer;\n};\n\n/** The\\xA0XPathEvaluator interface allows to compile and evaluate XPath expressions. */\ninterface XPathEvaluator extends XPathEvaluatorBase {\n}\n\ndeclare var XPathEvaluator: {\n    prototype: XPathEvaluator;\n    new(): XPathEvaluator;\n};\n\ninterface XPathEvaluatorBase {\n    createExpression(expression: string, resolver?: XPathNSResolver | null): XPathExpression;\n    createNSResolver(nodeResolver: Node): XPathNSResolver;\n    evaluate(expression: string, contextNode: Node, resolver?: XPathNSResolver | null, type?: number, result?: XPathResult | null): XPathResult;\n}\n\n/** This interface is a compiled XPath expression that can be evaluated on a document or specific node to return information its DOM tree. */\ninterface XPathExpression {\n    evaluate(contextNode: Node, type?: number, result?: XPathResult | null): XPathResult;\n}\n\ndeclare var XPathExpression: {\n    prototype: XPathExpression;\n    new(): XPathExpression;\n};\n\n/** The results generated by evaluating an XPath expression within the context of a given node. */\ninterface XPathResult {\n    readonly booleanValue: boolean;\n    readonly invalidIteratorState: boolean;\n    readonly numberValue: number;\n    readonly resultType: number;\n    readonly singleNodeValue: Node | null;\n    readonly snapshotLength: number;\n    readonly stringValue: string;\n    iterateNext(): Node | null;\n    snapshotItem(index: number): Node | null;\n    readonly ANY_TYPE: 0;\n    readonly NUMBER_TYPE: 1;\n    readonly STRING_TYPE: 2;\n    readonly BOOLEAN_TYPE: 3;\n    readonly UNORDERED_NODE_ITERATOR_TYPE: 4;\n    readonly ORDERED_NODE_ITERATOR_TYPE: 5;\n    readonly UNORDERED_NODE_SNAPSHOT_TYPE: 6;\n    readonly ORDERED_NODE_SNAPSHOT_TYPE: 7;\n    readonly ANY_UNORDERED_NODE_TYPE: 8;\n    readonly FIRST_ORDERED_NODE_TYPE: 9;\n}\n\ndeclare var XPathResult: {\n    prototype: XPathResult;\n    new(): XPathResult;\n    readonly ANY_TYPE: 0;\n    readonly NUMBER_TYPE: 1;\n    readonly STRING_TYPE: 2;\n    readonly BOOLEAN_TYPE: 3;\n    readonly UNORDERED_NODE_ITERATOR_TYPE: 4;\n    readonly ORDERED_NODE_ITERATOR_TYPE: 5;\n    readonly UNORDERED_NODE_SNAPSHOT_TYPE: 6;\n    readonly ORDERED_NODE_SNAPSHOT_TYPE: 7;\n    readonly ANY_UNORDERED_NODE_TYPE: 8;\n    readonly FIRST_ORDERED_NODE_TYPE: 9;\n};\n\n/** An XSLTProcessor applies an XSLT stylesheet transformation to an XML document to produce a new XML document as output. It has methods to load the XSLT stylesheet, to manipulate <xsl:param> parameter values, and to apply the transformation to documents. */\ninterface XSLTProcessor {\n    clearParameters(): void;\n    getParameter(namespaceURI: string | null, localName: string): any;\n    importStylesheet(style: Node): void;\n    removeParameter(namespaceURI: string | null, localName: string): void;\n    reset(): void;\n    setParameter(namespaceURI: string | null, localName: string, value: any): void;\n    transformToDocument(source: Node): Document;\n    transformToFragment(source: Node, output: Document): DocumentFragment;\n}\n\ndeclare var XSLTProcessor: {\n    prototype: XSLTProcessor;\n    new(): XSLTProcessor;\n};\n\ninterface Console {\n    assert(condition?: boolean, ...data: any[]): void;\n    clear(): void;\n    count(label?: string): void;\n    countReset(label?: string): void;\n    debug(...data: any[]): void;\n    dir(item?: any, options?: any): void;\n    dirxml(...data: any[]): void;\n    error(...data: any[]): void;\n    group(...data: any[]): void;\n    groupCollapsed(...data: any[]): void;\n    groupEnd(): void;\n    info(...data: any[]): void;\n    log(...data: any[]): void;\n    table(tabularData?: any, properties?: string[]): void;\n    time(label?: string): void;\n    timeEnd(label?: string): void;\n    timeLog(label?: string, ...data: any[]): void;\n    timeStamp(label?: string): void;\n    trace(...data: any[]): void;\n    warn(...data: any[]): void;\n}\n\ndeclare var console: Console;\n\n/** Holds useful CSS-related methods. No object with this interface are implemented: it contains only static methods and therefore is a utilitarian interface. */\ndeclare namespace CSS {\n    function escape(ident: string): string;\n    function supports(property: string, value: string): boolean;\n    function supports(conditionText: string): boolean;\n}\n\ndeclare namespace WebAssembly {\n    interface CompileError extends Error {\n    }\n\n    var CompileError: {\n        prototype: CompileError;\n        new(message?: string): CompileError;\n        (message?: string): CompileError;\n    };\n\n    interface Global {\n        value: any;\n        valueOf(): any;\n    }\n\n    var Global: {\n        prototype: Global;\n        new(descriptor: GlobalDescriptor, v?: any): Global;\n    };\n\n    interface Instance {\n        readonly exports: Exports;\n    }\n\n    var Instance: {\n        prototype: Instance;\n        new(module: Module, importObject?: Imports): Instance;\n    };\n\n    interface LinkError extends Error {\n    }\n\n    var LinkError: {\n        prototype: LinkError;\n        new(message?: string): LinkError;\n        (message?: string): LinkError;\n    };\n\n    interface Memory {\n        readonly buffer: ArrayBuffer;\n        grow(delta: number): number;\n    }\n\n    var Memory: {\n        prototype: Memory;\n        new(descriptor: MemoryDescriptor): Memory;\n    };\n\n    interface Module {\n    }\n\n    var Module: {\n        prototype: Module;\n        new(bytes: BufferSource): Module;\n        customSections(moduleObject: Module, sectionName: string): ArrayBuffer[];\n        exports(moduleObject: Module): ModuleExportDescriptor[];\n        imports(moduleObject: Module): ModuleImportDescriptor[];\n    };\n\n    interface RuntimeError extends Error {\n    }\n\n    var RuntimeError: {\n        prototype: RuntimeError;\n        new(message?: string): RuntimeError;\n        (message?: string): RuntimeError;\n    };\n\n    interface Table {\n        readonly length: number;\n        get(index: number): any;\n        grow(delta: number, value?: any): number;\n        set(index: number, value?: any): void;\n    }\n\n    var Table: {\n        prototype: Table;\n        new(descriptor: TableDescriptor, value?: any): Table;\n    };\n\n    interface GlobalDescriptor {\n        mutable?: boolean;\n        value: ValueType;\n    }\n\n    interface MemoryDescriptor {\n        initial: number;\n        maximum?: number;\n        shared?: boolean;\n    }\n\n    interface ModuleExportDescriptor {\n        kind: ImportExportKind;\n        name: string;\n    }\n\n    interface ModuleImportDescriptor {\n        kind: ImportExportKind;\n        module: string;\n        name: string;\n    }\n\n    interface TableDescriptor {\n        element: TableKind;\n        initial: number;\n        maximum?: number;\n    }\n\n    interface WebAssemblyInstantiatedSource {\n        instance: Instance;\n        module: Module;\n    }\n\n    type ImportExportKind = \"function\" | \"global\" | \"memory\" | \"table\";\n    type TableKind = \"anyfunc\" | \"externref\";\n    type ValueType = \"anyfunc\" | \"externref\" | \"f32\" | \"f64\" | \"i32\" | \"i64\" | \"v128\";\n    type ExportValue = Function | Global | Memory | Table;\n    type Exports = Record<string, ExportValue>;\n    type ImportValue = ExportValue | number;\n    type Imports = Record<string, ModuleImports>;\n    type ModuleImports = Record<string, ImportValue>;\n    function compile(bytes: BufferSource): Promise<Module>;\n    function compileStreaming(source: Response | PromiseLike<Response>): Promise<Module>;\n    function instantiate(bytes: BufferSource, importObject?: Imports): Promise<WebAssemblyInstantiatedSource>;\n    function instantiate(moduleObject: Module, importObject?: Imports): Promise<Instance>;\n    function instantiateStreaming(source: Response | PromiseLike<Response>, importObject?: Imports): Promise<WebAssemblyInstantiatedSource>;\n    function validate(bytes: BufferSource): boolean;\n}\n\ninterface BlobCallback {\n    (blob: Blob | null): void;\n}\n\ninterface CustomElementConstructor {\n    new (...params: any[]): HTMLElement;\n}\n\ninterface DecodeErrorCallback {\n    (error: DOMException): void;\n}\n\ninterface DecodeSuccessCallback {\n    (decodedData: AudioBuffer): void;\n}\n\ninterface ErrorCallback {\n    (err: DOMException): void;\n}\n\ninterface FileCallback {\n    (file: File): void;\n}\n\ninterface FileSystemEntriesCallback {\n    (entries: FileSystemEntry[]): void;\n}\n\ninterface FileSystemEntryCallback {\n    (entry: FileSystemEntry): void;\n}\n\ninterface FrameRequestCallback {\n    (time: DOMHighResTimeStamp): void;\n}\n\ninterface FunctionStringCallback {\n    (data: string): void;\n}\n\ninterface IdleRequestCallback {\n    (deadline: IdleDeadline): void;\n}\n\ninterface IntersectionObserverCallback {\n    (entries: IntersectionObserverEntry[], observer: IntersectionObserver): void;\n}\n\ninterface LockGrantedCallback {\n    (lock: Lock | null): any;\n}\n\ninterface MediaSessionActionHandler {\n    (details: MediaSessionActionDetails): void;\n}\n\ninterface MutationCallback {\n    (mutations: MutationRecord[], observer: MutationObserver): void;\n}\n\ninterface NotificationPermissionCallback {\n    (permission: NotificationPermission): void;\n}\n\ninterface OnBeforeUnloadEventHandlerNonNull {\n    (event: Event): string | null;\n}\n\ninterface OnErrorEventHandlerNonNull {\n    (event: Event | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n}\n\ninterface PerformanceObserverCallback {\n    (entries: PerformanceObserverEntryList, observer: PerformanceObserver): void;\n}\n\ninterface PositionCallback {\n    (position: GeolocationPosition): void;\n}\n\ninterface PositionErrorCallback {\n    (positionError: GeolocationPositionError): void;\n}\n\ninterface QueuingStrategySize<T = any> {\n    (chunk: T): number;\n}\n\ninterface RTCPeerConnectionErrorCallback {\n    (error: DOMException): void;\n}\n\ninterface RTCSessionDescriptionCallback {\n    (description: RTCSessionDescriptionInit): void;\n}\n\ninterface RemotePlaybackAvailabilityCallback {\n    (available: boolean): void;\n}\n\ninterface ResizeObserverCallback {\n    (entries: ResizeObserverEntry[], observer: ResizeObserver): void;\n}\n\ninterface TransformerFlushCallback<O> {\n    (controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;\n}\n\ninterface TransformerStartCallback<O> {\n    (controller: TransformStreamDefaultController<O>): any;\n}\n\ninterface TransformerTransformCallback<I, O> {\n    (chunk: I, controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;\n}\n\ninterface UnderlyingSinkAbortCallback {\n    (reason?: any): void | PromiseLike<void>;\n}\n\ninterface UnderlyingSinkCloseCallback {\n    (): void | PromiseLike<void>;\n}\n\ninterface UnderlyingSinkStartCallback {\n    (controller: WritableStreamDefaultController): any;\n}\n\ninterface UnderlyingSinkWriteCallback<W> {\n    (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike<void>;\n}\n\ninterface UnderlyingSourceCancelCallback {\n    (reason?: any): void | PromiseLike<void>;\n}\n\ninterface UnderlyingSourcePullCallback<R> {\n    (controller: ReadableStreamController<R>): void | PromiseLike<void>;\n}\n\ninterface UnderlyingSourceStartCallback<R> {\n    (controller: ReadableStreamController<R>): any;\n}\n\ninterface VideoFrameRequestCallback {\n    (now: DOMHighResTimeStamp, metadata: VideoFrameCallbackMetadata): void;\n}\n\ninterface VoidFunction {\n    (): void;\n}\n\ninterface HTMLElementTagNameMap {\n    \"a\": HTMLAnchorElement;\n    \"abbr\": HTMLElement;\n    \"address\": HTMLElement;\n    \"area\": HTMLAreaElement;\n    \"article\": HTMLElement;\n    \"aside\": HTMLElement;\n    \"audio\": HTMLAudioElement;\n    \"b\": HTMLElement;\n    \"base\": HTMLBaseElement;\n    \"bdi\": HTMLElement;\n    \"bdo\": HTMLElement;\n    \"blockquote\": HTMLQuoteElement;\n    \"body\": HTMLBodyElement;\n    \"br\": HTMLBRElement;\n    \"button\": HTMLButtonElement;\n    \"canvas\": HTMLCanvasElement;\n    \"caption\": HTMLTableCaptionElement;\n    \"cite\": HTMLElement;\n    \"code\": HTMLElement;\n    \"col\": HTMLTableColElement;\n    \"colgroup\": HTMLTableColElement;\n    \"data\": HTMLDataElement;\n    \"datalist\": HTMLDataListElement;\n    \"dd\": HTMLElement;\n    \"del\": HTMLModElement;\n    \"details\": HTMLDetailsElement;\n    \"dfn\": HTMLElement;\n    \"dialog\": HTMLDialogElement;\n    \"div\": HTMLDivElement;\n    \"dl\": HTMLDListElement;\n    \"dt\": HTMLElement;\n    \"em\": HTMLElement;\n    \"embed\": HTMLEmbedElement;\n    \"fieldset\": HTMLFieldSetElement;\n    \"figcaption\": HTMLElement;\n    \"figure\": HTMLElement;\n    \"footer\": HTMLElement;\n    \"form\": HTMLFormElement;\n    \"h1\": HTMLHeadingElement;\n    \"h2\": HTMLHeadingElement;\n    \"h3\": HTMLHeadingElement;\n    \"h4\": HTMLHeadingElement;\n    \"h5\": HTMLHeadingElement;\n    \"h6\": HTMLHeadingElement;\n    \"head\": HTMLHeadElement;\n    \"header\": HTMLElement;\n    \"hgroup\": HTMLElement;\n    \"hr\": HTMLHRElement;\n    \"html\": HTMLHtmlElement;\n    \"i\": HTMLElement;\n    \"iframe\": HTMLIFrameElement;\n    \"img\": HTMLImageElement;\n    \"input\": HTMLInputElement;\n    \"ins\": HTMLModElement;\n    \"kbd\": HTMLElement;\n    \"label\": HTMLLabelElement;\n    \"legend\": HTMLLegendElement;\n    \"li\": HTMLLIElement;\n    \"link\": HTMLLinkElement;\n    \"main\": HTMLElement;\n    \"map\": HTMLMapElement;\n    \"mark\": HTMLElement;\n    \"menu\": HTMLMenuElement;\n    \"meta\": HTMLMetaElement;\n    \"meter\": HTMLMeterElement;\n    \"nav\": HTMLElement;\n    \"noscript\": HTMLElement;\n    \"object\": HTMLObjectElement;\n    \"ol\": HTMLOListElement;\n    \"optgroup\": HTMLOptGroupElement;\n    \"option\": HTMLOptionElement;\n    \"output\": HTMLOutputElement;\n    \"p\": HTMLParagraphElement;\n    \"picture\": HTMLPictureElement;\n    \"pre\": HTMLPreElement;\n    \"progress\": HTMLProgressElement;\n    \"q\": HTMLQuoteElement;\n    \"rp\": HTMLElement;\n    \"rt\": HTMLElement;\n    \"ruby\": HTMLElement;\n    \"s\": HTMLElement;\n    \"samp\": HTMLElement;\n    \"script\": HTMLScriptElement;\n    \"section\": HTMLElement;\n    \"select\": HTMLSelectElement;\n    \"slot\": HTMLSlotElement;\n    \"small\": HTMLElement;\n    \"source\": HTMLSourceElement;\n    \"span\": HTMLSpanElement;\n    \"strong\": HTMLElement;\n    \"style\": HTMLStyleElement;\n    \"sub\": HTMLElement;\n    \"summary\": HTMLElement;\n    \"sup\": HTMLElement;\n    \"table\": HTMLTableElement;\n    \"tbody\": HTMLTableSectionElement;\n    \"td\": HTMLTableCellElement;\n    \"template\": HTMLTemplateElement;\n    \"textarea\": HTMLTextAreaElement;\n    \"tfoot\": HTMLTableSectionElement;\n    \"th\": HTMLTableCellElement;\n    \"thead\": HTMLTableSectionElement;\n    \"time\": HTMLTimeElement;\n    \"title\": HTMLTitleElement;\n    \"tr\": HTMLTableRowElement;\n    \"track\": HTMLTrackElement;\n    \"u\": HTMLElement;\n    \"ul\": HTMLUListElement;\n    \"var\": HTMLElement;\n    \"video\": HTMLVideoElement;\n    \"wbr\": HTMLElement;\n}\n\ninterface HTMLElementDeprecatedTagNameMap {\n    \"acronym\": HTMLElement;\n    \"applet\": HTMLUnknownElement;\n    \"basefont\": HTMLElement;\n    \"bgsound\": HTMLUnknownElement;\n    \"big\": HTMLElement;\n    \"blink\": HTMLUnknownElement;\n    \"center\": HTMLElement;\n    \"dir\": HTMLDirectoryElement;\n    \"font\": HTMLFontElement;\n    \"frame\": HTMLFrameElement;\n    \"frameset\": HTMLFrameSetElement;\n    \"isindex\": HTMLUnknownElement;\n    \"keygen\": HTMLUnknownElement;\n    \"listing\": HTMLPreElement;\n    \"marquee\": HTMLMarqueeElement;\n    \"menuitem\": HTMLElement;\n    \"multicol\": HTMLUnknownElement;\n    \"nextid\": HTMLUnknownElement;\n    \"nobr\": HTMLElement;\n    \"noembed\": HTMLElement;\n    \"noframes\": HTMLElement;\n    \"param\": HTMLParamElement;\n    \"plaintext\": HTMLElement;\n    \"rb\": HTMLElement;\n    \"rtc\": HTMLElement;\n    \"spacer\": HTMLUnknownElement;\n    \"strike\": HTMLElement;\n    \"tt\": HTMLElement;\n    \"xmp\": HTMLPreElement;\n}\n\ninterface SVGElementTagNameMap {\n    \"a\": SVGAElement;\n    \"animate\": SVGAnimateElement;\n    \"animateMotion\": SVGAnimateMotionElement;\n    \"animateTransform\": SVGAnimateTransformElement;\n    \"circle\": SVGCircleElement;\n    \"clipPath\": SVGClipPathElement;\n    \"defs\": SVGDefsElement;\n    \"desc\": SVGDescElement;\n    \"ellipse\": SVGEllipseElement;\n    \"feBlend\": SVGFEBlendElement;\n    \"feColorMatrix\": SVGFEColorMatrixElement;\n    \"feComponentTransfer\": SVGFEComponentTransferElement;\n    \"feComposite\": SVGFECompositeElement;\n    \"feConvolveMatrix\": SVGFEConvolveMatrixElement;\n    \"feDiffuseLighting\": SVGFEDiffuseLightingElement;\n    \"feDisplacementMap\": SVGFEDisplacementMapElement;\n    \"feDistantLight\": SVGFEDistantLightElement;\n    \"feDropShadow\": SVGFEDropShadowElement;\n    \"feFlood\": SVGFEFloodElement;\n    \"feFuncA\": SVGFEFuncAElement;\n    \"feFuncB\": SVGFEFuncBElement;\n    \"feFuncG\": SVGFEFuncGElement;\n    \"feFuncR\": SVGFEFuncRElement;\n    \"feGaussianBlur\": SVGFEGaussianBlurElement;\n    \"feImage\": SVGFEImageElement;\n    \"feMerge\": SVGFEMergeElement;\n    \"feMergeNode\": SVGFEMergeNodeElement;\n    \"feMorphology\": SVGFEMorphologyElement;\n    \"feOffset\": SVGFEOffsetElement;\n    \"fePointLight\": SVGFEPointLightElement;\n    \"feSpecularLighting\": SVGFESpecularLightingElement;\n    \"feSpotLight\": SVGFESpotLightElement;\n    \"feTile\": SVGFETileElement;\n    \"feTurbulence\": SVGFETurbulenceElement;\n    \"filter\": SVGFilterElement;\n    \"foreignObject\": SVGForeignObjectElement;\n    \"g\": SVGGElement;\n    \"image\": SVGImageElement;\n    \"line\": SVGLineElement;\n    \"linearGradient\": SVGLinearGradientElement;\n    \"marker\": SVGMarkerElement;\n    \"mask\": SVGMaskElement;\n    \"metadata\": SVGMetadataElement;\n    \"mpath\": SVGMPathElement;\n    \"path\": SVGPathElement;\n    \"pattern\": SVGPatternElement;\n    \"polygon\": SVGPolygonElement;\n    \"polyline\": SVGPolylineElement;\n    \"radialGradient\": SVGRadialGradientElement;\n    \"rect\": SVGRectElement;\n    \"script\": SVGScriptElement;\n    \"set\": SVGSetElement;\n    \"stop\": SVGStopElement;\n    \"style\": SVGStyleElement;\n    \"svg\": SVGSVGElement;\n    \"switch\": SVGSwitchElement;\n    \"symbol\": SVGSymbolElement;\n    \"text\": SVGTextElement;\n    \"textPath\": SVGTextPathElement;\n    \"title\": SVGTitleElement;\n    \"tspan\": SVGTSpanElement;\n    \"use\": SVGUseElement;\n    \"view\": SVGViewElement;\n}\n\ninterface MathMLElementTagNameMap {\n    \"annotation\": MathMLElement;\n    \"annotation-xml\": MathMLElement;\n    \"maction\": MathMLElement;\n    \"math\": MathMLElement;\n    \"merror\": MathMLElement;\n    \"mfrac\": MathMLElement;\n    \"mi\": MathMLElement;\n    \"mmultiscripts\": MathMLElement;\n    \"mn\": MathMLElement;\n    \"mo\": MathMLElement;\n    \"mover\": MathMLElement;\n    \"mpadded\": MathMLElement;\n    \"mphantom\": MathMLElement;\n    \"mprescripts\": MathMLElement;\n    \"mroot\": MathMLElement;\n    \"mrow\": MathMLElement;\n    \"ms\": MathMLElement;\n    \"mspace\": MathMLElement;\n    \"msqrt\": MathMLElement;\n    \"mstyle\": MathMLElement;\n    \"msub\": MathMLElement;\n    \"msubsup\": MathMLElement;\n    \"msup\": MathMLElement;\n    \"mtable\": MathMLElement;\n    \"mtd\": MathMLElement;\n    \"mtext\": MathMLElement;\n    \"mtr\": MathMLElement;\n    \"munder\": MathMLElement;\n    \"munderover\": MathMLElement;\n    \"semantics\": MathMLElement;\n}\n\n/** @deprecated Directly use HTMLElementTagNameMap or SVGElementTagNameMap as appropriate, instead. */\ntype ElementTagNameMap = HTMLElementTagNameMap & Pick<SVGElementTagNameMap, Exclude<keyof SVGElementTagNameMap, keyof HTMLElementTagNameMap>>;\n\ndeclare var Audio: {\n    new(src?: string): HTMLAudioElement;\n};\ndeclare var Image: {\n    new(width?: number, height?: number): HTMLImageElement;\n};\ndeclare var Option: {\n    new(text?: string, value?: string, defaultSelected?: boolean, selected?: boolean): HTMLOptionElement;\n};\n/** @deprecated This is a legacy alias of \\`navigator\\`. */\ndeclare var clientInformation: Navigator;\n/** Returns true if the window has been closed, false otherwise. */\ndeclare var closed: boolean;\n/** Defines a new custom element, mapping the given name to the given constructor as an autonomous custom element. */\ndeclare var customElements: CustomElementRegistry;\ndeclare var devicePixelRatio: number;\ndeclare var document: Document;\n/** @deprecated */\ndeclare var event: Event | undefined;\n/** @deprecated */\ndeclare var external: External;\ndeclare var frameElement: Element | null;\ndeclare var frames: WindowProxy;\ndeclare var history: History;\ndeclare var innerHeight: number;\ndeclare var innerWidth: number;\ndeclare var length: number;\ndeclare var location: Location;\n/** Returns true if the location bar is visible; otherwise, returns false. */\ndeclare var locationbar: BarProp;\n/** Returns true if the menu bar is visible; otherwise, returns false. */\ndeclare var menubar: BarProp;\n/** @deprecated */\ndeclare const name: void;\ndeclare var navigator: Navigator;\n/** Available only in secure contexts. */\ndeclare var ondevicemotion: ((this: Window, ev: DeviceMotionEvent) => any) | null;\n/** Available only in secure contexts. */\ndeclare var ondeviceorientation: ((this: Window, ev: DeviceOrientationEvent) => any) | null;\n/** @deprecated */\ndeclare var onorientationchange: ((this: Window, ev: Event) => any) | null;\ndeclare var opener: any;\n/** @deprecated */\ndeclare var orientation: number;\ndeclare var outerHeight: number;\ndeclare var outerWidth: number;\n/** @deprecated This is a legacy alias of \\`scrollX\\`. */\ndeclare var pageXOffset: number;\n/** @deprecated This is a legacy alias of \\`scrollY\\`. */\ndeclare var pageYOffset: number;\n/**\n * Refers to either the parent WindowProxy, or itself.\n *\n * It can rarely be null e.g. for contentWindow of an iframe that is already removed from the parent.\n */\ndeclare var parent: WindowProxy;\n/** Returns true if the personal bar is visible; otherwise, returns false. */\ndeclare var personalbar: BarProp;\ndeclare var screen: Screen;\ndeclare var screenLeft: number;\ndeclare var screenTop: number;\ndeclare var screenX: number;\ndeclare var screenY: number;\ndeclare var scrollX: number;\ndeclare var scrollY: number;\n/** Returns true if the scrollbars are visible; otherwise, returns false. */\ndeclare var scrollbars: BarProp;\ndeclare var self: Window & typeof globalThis;\ndeclare var speechSynthesis: SpeechSynthesis;\n/** @deprecated */\ndeclare var status: string;\n/** Returns true if the status bar is visible; otherwise, returns false. */\ndeclare var statusbar: BarProp;\n/** Returns true if the toolbar is visible; otherwise, returns false. */\ndeclare var toolbar: BarProp;\ndeclare var top: WindowProxy | null;\ndeclare var visualViewport: VisualViewport | null;\ndeclare var window: Window & typeof globalThis;\ndeclare function alert(message?: any): void;\ndeclare function blur(): void;\ndeclare function cancelIdleCallback(handle: number): void;\n/** @deprecated */\ndeclare function captureEvents(): void;\n/** Closes the window. */\ndeclare function close(): void;\ndeclare function confirm(message?: string): boolean;\n/** Moves the focus to the window's browsing context, if any. */\ndeclare function focus(): void;\ndeclare function getComputedStyle(elt: Element, pseudoElt?: string | null): CSSStyleDeclaration;\ndeclare function getSelection(): Selection | null;\ndeclare function matchMedia(query: string): MediaQueryList;\ndeclare function moveBy(x: number, y: number): void;\ndeclare function moveTo(x: number, y: number): void;\ndeclare function open(url?: string | URL, target?: string, features?: string): WindowProxy | null;\n/**\n * Posts a message to the given window. Messages can be structured objects, e.g. nested objects and arrays, can contain JavaScript values (strings, numbers, Date objects, etc), and can contain certain data objects such as File Blob, FileList, and ArrayBuffer objects.\n *\n * Objects listed in the transfer member of options are transferred, not just cloned, meaning that they are no longer usable on the sending side.\n *\n * A target origin can be specified using the targetOrigin member of options. If not provided, it defaults to \"/\". This default restricts the message to same-origin targets only.\n *\n * If the origin of the target window doesn't match the given target origin, the message is discarded, to avoid information leakage. To send the message to the target regardless of origin, set the target origin to \"*\".\n *\n * Throws a \"DataCloneError\" DOMException if transfer array contains duplicate objects or if message could not be cloned.\n */\ndeclare function postMessage(message: any, targetOrigin: string, transfer?: Transferable[]): void;\ndeclare function postMessage(message: any, options?: WindowPostMessageOptions): void;\ndeclare function print(): void;\ndeclare function prompt(message?: string, _default?: string): string | null;\n/** @deprecated */\ndeclare function releaseEvents(): void;\ndeclare function requestIdleCallback(callback: IdleRequestCallback, options?: IdleRequestOptions): number;\ndeclare function resizeBy(x: number, y: number): void;\ndeclare function resizeTo(width: number, height: number): void;\ndeclare function scroll(options?: ScrollToOptions): void;\ndeclare function scroll(x: number, y: number): void;\ndeclare function scrollBy(options?: ScrollToOptions): void;\ndeclare function scrollBy(x: number, y: number): void;\ndeclare function scrollTo(options?: ScrollToOptions): void;\ndeclare function scrollTo(x: number, y: number): void;\n/** Cancels the document load. */\ndeclare function stop(): void;\ndeclare function toString(): string;\n/** Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. */\ndeclare function dispatchEvent(event: Event): boolean;\ndeclare function cancelAnimationFrame(handle: number): void;\ndeclare function requestAnimationFrame(callback: FrameRequestCallback): number;\n/**\n * Fires when the user aborts the download.\n * @param ev The event.\n */\ndeclare var onabort: ((this: Window, ev: UIEvent) => any) | null;\ndeclare var onanimationcancel: ((this: Window, ev: AnimationEvent) => any) | null;\ndeclare var onanimationend: ((this: Window, ev: AnimationEvent) => any) | null;\ndeclare var onanimationiteration: ((this: Window, ev: AnimationEvent) => any) | null;\ndeclare var onanimationstart: ((this: Window, ev: AnimationEvent) => any) | null;\ndeclare var onauxclick: ((this: Window, ev: MouseEvent) => any) | null;\ndeclare var onbeforeinput: ((this: Window, ev: InputEvent) => any) | null;\n/**\n * Fires when the object loses the input focus.\n * @param ev The focus event.\n */\ndeclare var onblur: ((this: Window, ev: FocusEvent) => any) | null;\ndeclare var oncancel: ((this: Window, ev: Event) => any) | null;\n/**\n * Occurs when playback is possible, but would require further buffering.\n * @param ev The event.\n */\ndeclare var oncanplay: ((this: Window, ev: Event) => any) | null;\ndeclare var oncanplaythrough: ((this: Window, ev: Event) => any) | null;\n/**\n * Fires when the contents of the object or selection have changed.\n * @param ev The event.\n */\ndeclare var onchange: ((this: Window, ev: Event) => any) | null;\n/**\n * Fires when the user clicks the left mouse button on the object\n * @param ev The mouse event.\n */\ndeclare var onclick: ((this: Window, ev: MouseEvent) => any) | null;\ndeclare var onclose: ((this: Window, ev: Event) => any) | null;\n/**\n * Fires when the user clicks the right mouse button in the client area, opening the context menu.\n * @param ev The mouse event.\n */\ndeclare var oncontextmenu: ((this: Window, ev: MouseEvent) => any) | null;\ndeclare var oncopy: ((this: Window, ev: ClipboardEvent) => any) | null;\ndeclare var oncuechange: ((this: Window, ev: Event) => any) | null;\ndeclare var oncut: ((this: Window, ev: ClipboardEvent) => any) | null;\n/**\n * Fires when the user double-clicks the object.\n * @param ev The mouse event.\n */\ndeclare var ondblclick: ((this: Window, ev: MouseEvent) => any) | null;\n/**\n * Fires on the source object continuously during a drag operation.\n * @param ev The event.\n */\ndeclare var ondrag: ((this: Window, ev: DragEvent) => any) | null;\n/**\n * Fires on the source object when the user releases the mouse at the close of a drag operation.\n * @param ev The event.\n */\ndeclare var ondragend: ((this: Window, ev: DragEvent) => any) | null;\n/**\n * Fires on the target element when the user drags the object to a valid drop target.\n * @param ev The drag event.\n */\ndeclare var ondragenter: ((this: Window, ev: DragEvent) => any) | null;\n/**\n * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.\n * @param ev The drag event.\n */\ndeclare var ondragleave: ((this: Window, ev: DragEvent) => any) | null;\n/**\n * Fires on the target element continuously while the user drags the object over a valid drop target.\n * @param ev The event.\n */\ndeclare var ondragover: ((this: Window, ev: DragEvent) => any) | null;\n/**\n * Fires on the source object when the user starts to drag a text selection or selected object.\n * @param ev The event.\n */\ndeclare var ondragstart: ((this: Window, ev: DragEvent) => any) | null;\ndeclare var ondrop: ((this: Window, ev: DragEvent) => any) | null;\n/**\n * Occurs when the duration attribute is updated.\n * @param ev The event.\n */\ndeclare var ondurationchange: ((this: Window, ev: Event) => any) | null;\n/**\n * Occurs when the media element is reset to its initial state.\n * @param ev The event.\n */\ndeclare var onemptied: ((this: Window, ev: Event) => any) | null;\n/**\n * Occurs when the end of playback is reached.\n * @param ev The event\n */\ndeclare var onended: ((this: Window, ev: Event) => any) | null;\n/**\n * Fires when an error occurs during object loading.\n * @param ev The event.\n */\ndeclare var onerror: OnErrorEventHandler;\n/**\n * Fires when the object receives focus.\n * @param ev The event.\n */\ndeclare var onfocus: ((this: Window, ev: FocusEvent) => any) | null;\ndeclare var onformdata: ((this: Window, ev: FormDataEvent) => any) | null;\ndeclare var ongotpointercapture: ((this: Window, ev: PointerEvent) => any) | null;\ndeclare var oninput: ((this: Window, ev: Event) => any) | null;\ndeclare var oninvalid: ((this: Window, ev: Event) => any) | null;\n/**\n * Fires when the user presses a key.\n * @param ev The keyboard event\n */\ndeclare var onkeydown: ((this: Window, ev: KeyboardEvent) => any) | null;\n/**\n * Fires when the user presses an alphanumeric key.\n * @param ev The event.\n * @deprecated\n */\ndeclare var onkeypress: ((this: Window, ev: KeyboardEvent) => any) | null;\n/**\n * Fires when the user releases a key.\n * @param ev The keyboard event\n */\ndeclare var onkeyup: ((this: Window, ev: KeyboardEvent) => any) | null;\n/**\n * Fires immediately after the browser loads the object.\n * @param ev The event.\n */\ndeclare var onload: ((this: Window, ev: Event) => any) | null;\n/**\n * Occurs when media data is loaded at the current playback position.\n * @param ev The event.\n */\ndeclare var onloadeddata: ((this: Window, ev: Event) => any) | null;\n/**\n * Occurs when the duration and dimensions of the media have been determined.\n * @param ev The event.\n */\ndeclare var onloadedmetadata: ((this: Window, ev: Event) => any) | null;\n/**\n * Occurs when Internet Explorer begins looking for media data.\n * @param ev The event.\n */\ndeclare var onloadstart: ((this: Window, ev: Event) => any) | null;\ndeclare var onlostpointercapture: ((this: Window, ev: PointerEvent) => any) | null;\n/**\n * Fires when the user clicks the object with either mouse button.\n * @param ev The mouse event.\n */\ndeclare var onmousedown: ((this: Window, ev: MouseEvent) => any) | null;\ndeclare var onmouseenter: ((this: Window, ev: MouseEvent) => any) | null;\ndeclare var onmouseleave: ((this: Window, ev: MouseEvent) => any) | null;\n/**\n * Fires when the user moves the mouse over the object.\n * @param ev The mouse event.\n */\ndeclare var onmousemove: ((this: Window, ev: MouseEvent) => any) | null;\n/**\n * Fires when the user moves the mouse pointer outside the boundaries of the object.\n * @param ev The mouse event.\n */\ndeclare var onmouseout: ((this: Window, ev: MouseEvent) => any) | null;\n/**\n * Fires when the user moves the mouse pointer into the object.\n * @param ev The mouse event.\n */\ndeclare var onmouseover: ((this: Window, ev: MouseEvent) => any) | null;\n/**\n * Fires when the user releases a mouse button while the mouse is over the object.\n * @param ev The mouse event.\n */\ndeclare var onmouseup: ((this: Window, ev: MouseEvent) => any) | null;\ndeclare var onpaste: ((this: Window, ev: ClipboardEvent) => any) | null;\n/**\n * Occurs when playback is paused.\n * @param ev The event.\n */\ndeclare var onpause: ((this: Window, ev: Event) => any) | null;\n/**\n * Occurs when the play method is requested.\n * @param ev The event.\n */\ndeclare var onplay: ((this: Window, ev: Event) => any) | null;\n/**\n * Occurs when the audio or video has started playing.\n * @param ev The event.\n */\ndeclare var onplaying: ((this: Window, ev: Event) => any) | null;\ndeclare var onpointercancel: ((this: Window, ev: PointerEvent) => any) | null;\ndeclare var onpointerdown: ((this: Window, ev: PointerEvent) => any) | null;\ndeclare var onpointerenter: ((this: Window, ev: PointerEvent) => any) | null;\ndeclare var onpointerleave: ((this: Window, ev: PointerEvent) => any) | null;\ndeclare var onpointermove: ((this: Window, ev: PointerEvent) => any) | null;\ndeclare var onpointerout: ((this: Window, ev: PointerEvent) => any) | null;\ndeclare var onpointerover: ((this: Window, ev: PointerEvent) => any) | null;\ndeclare var onpointerup: ((this: Window, ev: PointerEvent) => any) | null;\n/**\n * Occurs to indicate progress while downloading media data.\n * @param ev The event.\n */\ndeclare var onprogress: ((this: Window, ev: ProgressEvent) => any) | null;\n/**\n * Occurs when the playback rate is increased or decreased.\n * @param ev The event.\n */\ndeclare var onratechange: ((this: Window, ev: Event) => any) | null;\n/**\n * Fires when the user resets a form.\n * @param ev The event.\n */\ndeclare var onreset: ((this: Window, ev: Event) => any) | null;\ndeclare var onresize: ((this: Window, ev: UIEvent) => any) | null;\n/**\n * Fires when the user repositions the scroll box in the scroll bar on the object.\n * @param ev The event.\n */\ndeclare var onscroll: ((this: Window, ev: Event) => any) | null;\ndeclare var onsecuritypolicyviolation: ((this: Window, ev: SecurityPolicyViolationEvent) => any) | null;\n/**\n * Occurs when the seek operation ends.\n * @param ev The event.\n */\ndeclare var onseeked: ((this: Window, ev: Event) => any) | null;\n/**\n * Occurs when the current playback position is moved.\n * @param ev The event.\n */\ndeclare var onseeking: ((this: Window, ev: Event) => any) | null;\n/**\n * Fires when the current selection changes.\n * @param ev The event.\n */\ndeclare var onselect: ((this: Window, ev: Event) => any) | null;\ndeclare var onselectionchange: ((this: Window, ev: Event) => any) | null;\ndeclare var onselectstart: ((this: Window, ev: Event) => any) | null;\ndeclare var onslotchange: ((this: Window, ev: Event) => any) | null;\n/**\n * Occurs when the download has stopped.\n * @param ev The event.\n */\ndeclare var onstalled: ((this: Window, ev: Event) => any) | null;\ndeclare var onsubmit: ((this: Window, ev: SubmitEvent) => any) | null;\n/**\n * Occurs if the load operation has been intentionally halted.\n * @param ev The event.\n */\ndeclare var onsuspend: ((this: Window, ev: Event) => any) | null;\n/**\n * Occurs to indicate the current playback position.\n * @param ev The event.\n */\ndeclare var ontimeupdate: ((this: Window, ev: Event) => any) | null;\ndeclare var ontoggle: ((this: Window, ev: Event) => any) | null;\ndeclare var ontouchcancel: ((this: Window, ev: TouchEvent) => any) | null | undefined;\ndeclare var ontouchend: ((this: Window, ev: TouchEvent) => any) | null | undefined;\ndeclare var ontouchmove: ((this: Window, ev: TouchEvent) => any) | null | undefined;\ndeclare var ontouchstart: ((this: Window, ev: TouchEvent) => any) | null | undefined;\ndeclare var ontransitioncancel: ((this: Window, ev: TransitionEvent) => any) | null;\ndeclare var ontransitionend: ((this: Window, ev: TransitionEvent) => any) | null;\ndeclare var ontransitionrun: ((this: Window, ev: TransitionEvent) => any) | null;\ndeclare var ontransitionstart: ((this: Window, ev: TransitionEvent) => any) | null;\n/**\n * Occurs when the volume is changed, or playback is muted or unmuted.\n * @param ev The event.\n */\ndeclare var onvolumechange: ((this: Window, ev: Event) => any) | null;\n/**\n * Occurs when playback stops because the next frame of a video resource is not available.\n * @param ev The event.\n */\ndeclare var onwaiting: ((this: Window, ev: Event) => any) | null;\n/** @deprecated This is a legacy alias of \\`onanimationend\\`. */\ndeclare var onwebkitanimationend: ((this: Window, ev: Event) => any) | null;\n/** @deprecated This is a legacy alias of \\`onanimationiteration\\`. */\ndeclare var onwebkitanimationiteration: ((this: Window, ev: Event) => any) | null;\n/** @deprecated This is a legacy alias of \\`onanimationstart\\`. */\ndeclare var onwebkitanimationstart: ((this: Window, ev: Event) => any) | null;\n/** @deprecated This is a legacy alias of \\`ontransitionend\\`. */\ndeclare var onwebkittransitionend: ((this: Window, ev: Event) => any) | null;\ndeclare var onwheel: ((this: Window, ev: WheelEvent) => any) | null;\ndeclare var onafterprint: ((this: Window, ev: Event) => any) | null;\ndeclare var onbeforeprint: ((this: Window, ev: Event) => any) | null;\ndeclare var onbeforeunload: ((this: Window, ev: BeforeUnloadEvent) => any) | null;\ndeclare var ongamepadconnected: ((this: Window, ev: GamepadEvent) => any) | null;\ndeclare var ongamepaddisconnected: ((this: Window, ev: GamepadEvent) => any) | null;\ndeclare var onhashchange: ((this: Window, ev: HashChangeEvent) => any) | null;\ndeclare var onlanguagechange: ((this: Window, ev: Event) => any) | null;\ndeclare var onmessage: ((this: Window, ev: MessageEvent) => any) | null;\ndeclare var onmessageerror: ((this: Window, ev: MessageEvent) => any) | null;\ndeclare var onoffline: ((this: Window, ev: Event) => any) | null;\ndeclare var ononline: ((this: Window, ev: Event) => any) | null;\ndeclare var onpagehide: ((this: Window, ev: PageTransitionEvent) => any) | null;\ndeclare var onpageshow: ((this: Window, ev: PageTransitionEvent) => any) | null;\ndeclare var onpopstate: ((this: Window, ev: PopStateEvent) => any) | null;\ndeclare var onrejectionhandled: ((this: Window, ev: PromiseRejectionEvent) => any) | null;\ndeclare var onstorage: ((this: Window, ev: StorageEvent) => any) | null;\ndeclare var onunhandledrejection: ((this: Window, ev: PromiseRejectionEvent) => any) | null;\ndeclare var onunload: ((this: Window, ev: Event) => any) | null;\ndeclare var localStorage: Storage;\n/** Available only in secure contexts. */\ndeclare var caches: CacheStorage;\ndeclare var crossOriginIsolated: boolean;\ndeclare var crypto: Crypto;\ndeclare var indexedDB: IDBFactory;\ndeclare var isSecureContext: boolean;\ndeclare var origin: string;\ndeclare var performance: Performance;\ndeclare function atob(data: string): string;\ndeclare function btoa(data: string): string;\ndeclare function clearInterval(id: number | undefined): void;\ndeclare function clearTimeout(id: number | undefined): void;\ndeclare function createImageBitmap(image: ImageBitmapSource, options?: ImageBitmapOptions): Promise<ImageBitmap>;\ndeclare function createImageBitmap(image: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number, options?: ImageBitmapOptions): Promise<ImageBitmap>;\ndeclare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;\ndeclare function queueMicrotask(callback: VoidFunction): void;\ndeclare function reportError(e: any): void;\ndeclare function setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;\ndeclare function setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;\ndeclare function structuredClone(value: any, options?: StructuredSerializeOptions): any;\ndeclare var sessionStorage: Storage;\ndeclare function addEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\ndeclare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\ndeclare function removeEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\ndeclare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\ntype AlgorithmIdentifier = Algorithm | string;\ntype BigInteger = Uint8Array;\ntype BinaryData = ArrayBuffer | ArrayBufferView;\ntype BlobPart = BufferSource | Blob | string;\ntype BodyInit = ReadableStream | XMLHttpRequestBodyInit;\ntype BufferSource = ArrayBufferView | ArrayBuffer;\ntype COSEAlgorithmIdentifier = number;\ntype CSSNumberish = number;\ntype CanvasImageSource = HTMLOrSVGImageElement | HTMLVideoElement | HTMLCanvasElement | ImageBitmap | OffscreenCanvas;\ntype ClipboardItemData = Promise<string | Blob>;\ntype ClipboardItems = ClipboardItem[];\ntype ConstrainBoolean = boolean | ConstrainBooleanParameters;\ntype ConstrainDOMString = string | string[] | ConstrainDOMStringParameters;\ntype ConstrainDouble = number | ConstrainDoubleRange;\ntype ConstrainULong = number | ConstrainULongRange;\ntype DOMHighResTimeStamp = number;\ntype EpochTimeStamp = number;\ntype EventListenerOrEventListenerObject = EventListener | EventListenerObject;\ntype Float32List = Float32Array | GLfloat[];\ntype FormDataEntryValue = File | string;\ntype GLbitfield = number;\ntype GLboolean = boolean;\ntype GLclampf = number;\ntype GLenum = number;\ntype GLfloat = number;\ntype GLint = number;\ntype GLint64 = number;\ntype GLintptr = number;\ntype GLsizei = number;\ntype GLsizeiptr = number;\ntype GLuint = number;\ntype GLuint64 = number;\ntype HTMLOrSVGImageElement = HTMLImageElement | SVGImageElement;\ntype HTMLOrSVGScriptElement = HTMLScriptElement | SVGScriptElement;\ntype HashAlgorithmIdentifier = AlgorithmIdentifier;\ntype HeadersInit = [string, string][] | Record<string, string> | Headers;\ntype IDBValidKey = number | string | Date | BufferSource | IDBValidKey[];\ntype ImageBitmapSource = CanvasImageSource | Blob | ImageData;\ntype Int32List = Int32Array | GLint[];\ntype LineAndPositionSetting = number | AutoKeyword;\ntype MediaProvider = MediaStream | MediaSource | Blob;\ntype MessageEventSource = WindowProxy | MessagePort | ServiceWorker;\ntype MutationRecordType = \"attributes\" | \"characterData\" | \"childList\";\ntype NamedCurve = string;\ntype OffscreenRenderingContext = OffscreenCanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext;\ntype OnBeforeUnloadEventHandler = OnBeforeUnloadEventHandlerNonNull | null;\ntype OnErrorEventHandler = OnErrorEventHandlerNonNull | null;\ntype PerformanceEntryList = PerformanceEntry[];\ntype ReadableStreamController<T> = ReadableStreamDefaultController<T> | ReadableByteStreamController;\ntype ReadableStreamReadResult<T> = ReadableStreamReadValueResult<T> | ReadableStreamReadDoneResult<T>;\ntype ReadableStreamReader<T> = ReadableStreamDefaultReader<T> | ReadableStreamBYOBReader;\ntype RenderingContext = CanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext;\ntype RequestInfo = Request | string;\ntype TexImageSource = ImageBitmap | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas;\ntype TimerHandler = string | Function;\ntype Transferable = OffscreenCanvas | ImageBitmap | MessagePort | ReadableStream | WritableStream | TransformStream | ArrayBuffer;\ntype Uint32List = Uint32Array | GLuint[];\ntype VibratePattern = number | number[];\ntype WindowProxy = Window;\ntype XMLHttpRequestBodyInit = Blob | BufferSource | FormData | URLSearchParams | string;\ntype AlignSetting = \"center\" | \"end\" | \"left\" | \"right\" | \"start\";\ntype AnimationPlayState = \"finished\" | \"idle\" | \"paused\" | \"running\";\ntype AnimationReplaceState = \"active\" | \"persisted\" | \"removed\";\ntype AppendMode = \"segments\" | \"sequence\";\ntype AttestationConveyancePreference = \"direct\" | \"enterprise\" | \"indirect\" | \"none\";\ntype AudioContextLatencyCategory = \"balanced\" | \"interactive\" | \"playback\";\ntype AudioContextState = \"closed\" | \"running\" | \"suspended\";\ntype AuthenticatorAttachment = \"cross-platform\" | \"platform\";\ntype AuthenticatorTransport = \"ble\" | \"hybrid\" | \"internal\" | \"nfc\" | \"usb\";\ntype AutoKeyword = \"auto\";\ntype AutomationRate = \"a-rate\" | \"k-rate\";\ntype BinaryType = \"arraybuffer\" | \"blob\";\ntype BiquadFilterType = \"allpass\" | \"bandpass\" | \"highpass\" | \"highshelf\" | \"lowpass\" | \"lowshelf\" | \"notch\" | \"peaking\";\ntype CanPlayTypeResult = \"\" | \"maybe\" | \"probably\";\ntype CanvasDirection = \"inherit\" | \"ltr\" | \"rtl\";\ntype CanvasFillRule = \"evenodd\" | \"nonzero\";\ntype CanvasFontKerning = \"auto\" | \"none\" | \"normal\";\ntype CanvasFontStretch = \"condensed\" | \"expanded\" | \"extra-condensed\" | \"extra-expanded\" | \"normal\" | \"semi-condensed\" | \"semi-expanded\" | \"ultra-condensed\" | \"ultra-expanded\";\ntype CanvasFontVariantCaps = \"all-petite-caps\" | \"all-small-caps\" | \"normal\" | \"petite-caps\" | \"small-caps\" | \"titling-caps\" | \"unicase\";\ntype CanvasLineCap = \"butt\" | \"round\" | \"square\";\ntype CanvasLineJoin = \"bevel\" | \"miter\" | \"round\";\ntype CanvasTextAlign = \"center\" | \"end\" | \"left\" | \"right\" | \"start\";\ntype CanvasTextBaseline = \"alphabetic\" | \"bottom\" | \"hanging\" | \"ideographic\" | \"middle\" | \"top\";\ntype CanvasTextRendering = \"auto\" | \"geometricPrecision\" | \"optimizeLegibility\" | \"optimizeSpeed\";\ntype ChannelCountMode = \"clamped-max\" | \"explicit\" | \"max\";\ntype ChannelInterpretation = \"discrete\" | \"speakers\";\ntype ClientTypes = \"all\" | \"sharedworker\" | \"window\" | \"worker\";\ntype ColorGamut = \"p3\" | \"rec2020\" | \"srgb\";\ntype ColorSpaceConversion = \"default\" | \"none\";\ntype CompositeOperation = \"accumulate\" | \"add\" | \"replace\";\ntype CompositeOperationOrAuto = \"accumulate\" | \"add\" | \"auto\" | \"replace\";\ntype CredentialMediationRequirement = \"optional\" | \"required\" | \"silent\";\ntype DOMParserSupportedType = \"application/xhtml+xml\" | \"application/xml\" | \"image/svg+xml\" | \"text/html\" | \"text/xml\";\ntype DirectionSetting = \"\" | \"lr\" | \"rl\";\ntype DisplayCaptureSurfaceType = \"browser\" | \"monitor\" | \"window\";\ntype DistanceModelType = \"exponential\" | \"inverse\" | \"linear\";\ntype DocumentReadyState = \"complete\" | \"interactive\" | \"loading\";\ntype DocumentVisibilityState = \"hidden\" | \"visible\";\ntype EndOfStreamError = \"decode\" | \"network\";\ntype EndingType = \"native\" | \"transparent\";\ntype FileSystemHandleKind = \"directory\" | \"file\";\ntype FillMode = \"auto\" | \"backwards\" | \"both\" | \"forwards\" | \"none\";\ntype FontDisplay = \"auto\" | \"block\" | \"fallback\" | \"optional\" | \"swap\";\ntype FontFaceLoadStatus = \"error\" | \"loaded\" | \"loading\" | \"unloaded\";\ntype FontFaceSetLoadStatus = \"loaded\" | \"loading\";\ntype FullscreenNavigationUI = \"auto\" | \"hide\" | \"show\";\ntype GamepadHapticActuatorType = \"vibration\";\ntype GamepadMappingType = \"\" | \"standard\" | \"xr-standard\";\ntype GlobalCompositeOperation = \"color\" | \"color-burn\" | \"color-dodge\" | \"copy\" | \"darken\" | \"destination-atop\" | \"destination-in\" | \"destination-out\" | \"destination-over\" | \"difference\" | \"exclusion\" | \"hard-light\" | \"hue\" | \"lighten\" | \"lighter\" | \"luminosity\" | \"multiply\" | \"overlay\" | \"saturation\" | \"screen\" | \"soft-light\" | \"source-atop\" | \"source-in\" | \"source-out\" | \"source-over\" | \"xor\";\ntype HdrMetadataType = \"smpteSt2086\" | \"smpteSt2094-10\" | \"smpteSt2094-40\";\ntype IDBCursorDirection = \"next\" | \"nextunique\" | \"prev\" | \"prevunique\";\ntype IDBRequestReadyState = \"done\" | \"pending\";\ntype IDBTransactionDurability = \"default\" | \"relaxed\" | \"strict\";\ntype IDBTransactionMode = \"readonly\" | \"readwrite\" | \"versionchange\";\ntype ImageOrientation = \"flipY\" | \"from-image\";\ntype ImageSmoothingQuality = \"high\" | \"low\" | \"medium\";\ntype InsertPosition = \"afterbegin\" | \"afterend\" | \"beforebegin\" | \"beforeend\";\ntype IterationCompositeOperation = \"accumulate\" | \"replace\";\ntype KeyFormat = \"jwk\" | \"pkcs8\" | \"raw\" | \"spki\";\ntype KeyType = \"private\" | \"public\" | \"secret\";\ntype KeyUsage = \"decrypt\" | \"deriveBits\" | \"deriveKey\" | \"encrypt\" | \"sign\" | \"unwrapKey\" | \"verify\" | \"wrapKey\";\ntype LineAlignSetting = \"center\" | \"end\" | \"start\";\ntype LockMode = \"exclusive\" | \"shared\";\ntype MIDIPortConnectionState = \"closed\" | \"open\" | \"pending\";\ntype MIDIPortDeviceState = \"connected\" | \"disconnected\";\ntype MIDIPortType = \"input\" | \"output\";\ntype MediaDecodingType = \"file\" | \"media-source\" | \"webrtc\";\ntype MediaDeviceKind = \"audioinput\" | \"audiooutput\" | \"videoinput\";\ntype MediaEncodingType = \"record\" | \"webrtc\";\ntype MediaKeyMessageType = \"individualization-request\" | \"license-release\" | \"license-renewal\" | \"license-request\";\ntype MediaKeySessionClosedReason = \"closed-by-application\" | \"hardware-context-reset\" | \"internal-error\" | \"release-acknowledged\" | \"resource-evicted\";\ntype MediaKeySessionType = \"persistent-license\" | \"temporary\";\ntype MediaKeyStatus = \"expired\" | \"internal-error\" | \"output-downscaled\" | \"output-restricted\" | \"released\" | \"status-pending\" | \"usable\" | \"usable-in-future\";\ntype MediaKeysRequirement = \"not-allowed\" | \"optional\" | \"required\";\ntype MediaSessionAction = \"nexttrack\" | \"pause\" | \"play\" | \"previoustrack\" | \"seekbackward\" | \"seekforward\" | \"seekto\" | \"skipad\" | \"stop\";\ntype MediaSessionPlaybackState = \"none\" | \"paused\" | \"playing\";\ntype MediaStreamTrackState = \"ended\" | \"live\";\ntype NavigationTimingType = \"back_forward\" | \"navigate\" | \"prerender\" | \"reload\";\ntype NotificationDirection = \"auto\" | \"ltr\" | \"rtl\";\ntype NotificationPermission = \"default\" | \"denied\" | \"granted\";\ntype OffscreenRenderingContextId = \"2d\" | \"bitmaprenderer\" | \"webgl\" | \"webgl2\" | \"webgpu\";\ntype OrientationLockType = \"any\" | \"landscape\" | \"landscape-primary\" | \"landscape-secondary\" | \"natural\" | \"portrait\" | \"portrait-primary\" | \"portrait-secondary\";\ntype OrientationType = \"landscape-primary\" | \"landscape-secondary\" | \"portrait-primary\" | \"portrait-secondary\";\ntype OscillatorType = \"custom\" | \"sawtooth\" | \"sine\" | \"square\" | \"triangle\";\ntype OverSampleType = \"2x\" | \"4x\" | \"none\";\ntype PanningModelType = \"HRTF\" | \"equalpower\";\ntype PaymentComplete = \"fail\" | \"success\" | \"unknown\";\ntype PermissionName = \"geolocation\" | \"notifications\" | \"persistent-storage\" | \"push\" | \"screen-wake-lock\" | \"xr-spatial-tracking\";\ntype PermissionState = \"denied\" | \"granted\" | \"prompt\";\ntype PlaybackDirection = \"alternate\" | \"alternate-reverse\" | \"normal\" | \"reverse\";\ntype PositionAlignSetting = \"auto\" | \"center\" | \"line-left\" | \"line-right\";\ntype PredefinedColorSpace = \"display-p3\" | \"srgb\";\ntype PremultiplyAlpha = \"default\" | \"none\" | \"premultiply\";\ntype PresentationStyle = \"attachment\" | \"inline\" | \"unspecified\";\ntype PublicKeyCredentialType = \"public-key\";\ntype PushEncryptionKeyName = \"auth\" | \"p256dh\";\ntype RTCBundlePolicy = \"balanced\" | \"max-bundle\" | \"max-compat\";\ntype RTCDataChannelState = \"closed\" | \"closing\" | \"connecting\" | \"open\";\ntype RTCDegradationPreference = \"balanced\" | \"maintain-framerate\" | \"maintain-resolution\";\ntype RTCDtlsTransportState = \"closed\" | \"connected\" | \"connecting\" | \"failed\" | \"new\";\ntype RTCEncodedVideoFrameType = \"delta\" | \"empty\" | \"key\";\ntype RTCErrorDetailType = \"data-channel-failure\" | \"dtls-failure\" | \"fingerprint-failure\" | \"hardware-encoder-error\" | \"hardware-encoder-not-available\" | \"sctp-failure\" | \"sdp-syntax-error\";\ntype RTCIceCandidateType = \"host\" | \"prflx\" | \"relay\" | \"srflx\";\ntype RTCIceComponent = \"rtcp\" | \"rtp\";\ntype RTCIceConnectionState = \"checking\" | \"closed\" | \"completed\" | \"connected\" | \"disconnected\" | \"failed\" | \"new\";\ntype RTCIceGathererState = \"complete\" | \"gathering\" | \"new\";\ntype RTCIceGatheringState = \"complete\" | \"gathering\" | \"new\";\ntype RTCIceProtocol = \"tcp\" | \"udp\";\ntype RTCIceTcpCandidateType = \"active\" | \"passive\" | \"so\";\ntype RTCIceTransportPolicy = \"all\" | \"relay\";\ntype RTCIceTransportState = \"checking\" | \"closed\" | \"completed\" | \"connected\" | \"disconnected\" | \"failed\" | \"new\";\ntype RTCPeerConnectionState = \"closed\" | \"connected\" | \"connecting\" | \"disconnected\" | \"failed\" | \"new\";\ntype RTCPriorityType = \"high\" | \"low\" | \"medium\" | \"very-low\";\ntype RTCRtcpMuxPolicy = \"require\";\ntype RTCRtpTransceiverDirection = \"inactive\" | \"recvonly\" | \"sendonly\" | \"sendrecv\" | \"stopped\";\ntype RTCSctpTransportState = \"closed\" | \"connected\" | \"connecting\";\ntype RTCSdpType = \"answer\" | \"offer\" | \"pranswer\" | \"rollback\";\ntype RTCSignalingState = \"closed\" | \"have-local-offer\" | \"have-local-pranswer\" | \"have-remote-offer\" | \"have-remote-pranswer\" | \"stable\";\ntype RTCStatsIceCandidatePairState = \"failed\" | \"frozen\" | \"in-progress\" | \"inprogress\" | \"succeeded\" | \"waiting\";\ntype RTCStatsType = \"candidate-pair\" | \"certificate\" | \"codec\" | \"data-channel\" | \"inbound-rtp\" | \"local-candidate\" | \"media-source\" | \"outbound-rtp\" | \"peer-connection\" | \"remote-candidate\" | \"remote-inbound-rtp\" | \"remote-outbound-rtp\" | \"track\" | \"transport\";\ntype ReadableStreamReaderMode = \"byob\";\ntype ReadableStreamType = \"bytes\";\ntype ReadyState = \"closed\" | \"ended\" | \"open\";\ntype RecordingState = \"inactive\" | \"paused\" | \"recording\";\ntype ReferrerPolicy = \"\" | \"no-referrer\" | \"no-referrer-when-downgrade\" | \"origin\" | \"origin-when-cross-origin\" | \"same-origin\" | \"strict-origin\" | \"strict-origin-when-cross-origin\" | \"unsafe-url\";\ntype RemotePlaybackState = \"connected\" | \"connecting\" | \"disconnected\";\ntype RequestCache = \"default\" | \"force-cache\" | \"no-cache\" | \"no-store\" | \"only-if-cached\" | \"reload\";\ntype RequestCredentials = \"include\" | \"omit\" | \"same-origin\";\ntype RequestDestination = \"\" | \"audio\" | \"audioworklet\" | \"document\" | \"embed\" | \"font\" | \"frame\" | \"iframe\" | \"image\" | \"manifest\" | \"object\" | \"paintworklet\" | \"report\" | \"script\" | \"sharedworker\" | \"style\" | \"track\" | \"video\" | \"worker\" | \"xslt\";\ntype RequestMode = \"cors\" | \"navigate\" | \"no-cors\" | \"same-origin\";\ntype RequestRedirect = \"error\" | \"follow\" | \"manual\";\ntype ResidentKeyRequirement = \"discouraged\" | \"preferred\" | \"required\";\ntype ResizeObserverBoxOptions = \"border-box\" | \"content-box\" | \"device-pixel-content-box\";\ntype ResizeQuality = \"high\" | \"low\" | \"medium\" | \"pixelated\";\ntype ResponseType = \"basic\" | \"cors\" | \"default\" | \"error\" | \"opaque\" | \"opaqueredirect\";\ntype ScrollBehavior = \"auto\" | \"smooth\";\ntype ScrollLogicalPosition = \"center\" | \"end\" | \"nearest\" | \"start\";\ntype ScrollRestoration = \"auto\" | \"manual\";\ntype ScrollSetting = \"\" | \"up\";\ntype SecurityPolicyViolationEventDisposition = \"enforce\" | \"report\";\ntype SelectionMode = \"end\" | \"preserve\" | \"select\" | \"start\";\ntype ServiceWorkerState = \"activated\" | \"activating\" | \"installed\" | \"installing\" | \"parsed\" | \"redundant\";\ntype ServiceWorkerUpdateViaCache = \"all\" | \"imports\" | \"none\";\ntype ShadowRootMode = \"closed\" | \"open\";\ntype SlotAssignmentMode = \"manual\" | \"named\";\ntype SpeechSynthesisErrorCode = \"audio-busy\" | \"audio-hardware\" | \"canceled\" | \"interrupted\" | \"invalid-argument\" | \"language-unavailable\" | \"network\" | \"not-allowed\" | \"synthesis-failed\" | \"synthesis-unavailable\" | \"text-too-long\" | \"voice-unavailable\";\ntype TextTrackKind = \"captions\" | \"chapters\" | \"descriptions\" | \"metadata\" | \"subtitles\";\ntype TextTrackMode = \"disabled\" | \"hidden\" | \"showing\";\ntype TouchType = \"direct\" | \"stylus\";\ntype TransferFunction = \"hlg\" | \"pq\" | \"srgb\";\ntype UserVerificationRequirement = \"discouraged\" | \"preferred\" | \"required\";\ntype VideoColorPrimaries = \"bt470bg\" | \"bt709\" | \"smpte170m\";\ntype VideoFacingModeEnum = \"environment\" | \"left\" | \"right\" | \"user\";\ntype VideoMatrixCoefficients = \"bt470bg\" | \"bt709\" | \"rgb\" | \"smpte170m\";\ntype VideoTransferCharacteristics = \"bt709\" | \"iec61966-2-1\" | \"smpte170m\";\ntype WebGLPowerPreference = \"default\" | \"high-performance\" | \"low-power\";\ntype WorkerType = \"classic\" | \"module\";\ntype XMLHttpRequestResponseType = \"\" | \"arraybuffer\" | \"blob\" | \"document\" | \"json\" | \"text\";\n`;$i[\"lib.dom.iterable.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/////////////////////////////\n/// Window Iterable APIs\n/////////////////////////////\n\ninterface AudioParam {\n    setValueCurveAtTime(values: Iterable<number>, startTime: number, duration: number): AudioParam;\n}\n\ninterface AudioParamMap extends ReadonlyMap<string, AudioParam> {\n}\n\ninterface BaseAudioContext {\n    createIIRFilter(feedforward: Iterable<number>, feedback: Iterable<number>): IIRFilterNode;\n    createPeriodicWave(real: Iterable<number>, imag: Iterable<number>, constraints?: PeriodicWaveConstraints): PeriodicWave;\n}\n\ninterface CSSKeyframesRule {\n    [Symbol.iterator](): IterableIterator<CSSKeyframeRule>;\n}\n\ninterface CSSRuleList {\n    [Symbol.iterator](): IterableIterator<CSSRule>;\n}\n\ninterface CSSStyleDeclaration {\n    [Symbol.iterator](): IterableIterator<string>;\n}\n\ninterface Cache {\n    addAll(requests: Iterable<RequestInfo>): Promise<void>;\n}\n\ninterface CanvasPath {\n    roundRect(x: number, y: number, w: number, h: number, radii?: number | DOMPointInit | Iterable<number | DOMPointInit>): void;\n}\n\ninterface CanvasPathDrawingStyles {\n    setLineDash(segments: Iterable<number>): void;\n}\n\ninterface DOMRectList {\n    [Symbol.iterator](): IterableIterator<DOMRect>;\n}\n\ninterface DOMStringList {\n    [Symbol.iterator](): IterableIterator<string>;\n}\n\ninterface DOMTokenList {\n    [Symbol.iterator](): IterableIterator<string>;\n    entries(): IterableIterator<[number, string]>;\n    keys(): IterableIterator<number>;\n    values(): IterableIterator<string>;\n}\n\ninterface DataTransferItemList {\n    [Symbol.iterator](): IterableIterator<DataTransferItem>;\n}\n\ninterface EventCounts extends ReadonlyMap<string, number> {\n}\n\ninterface FileList {\n    [Symbol.iterator](): IterableIterator<File>;\n}\n\ninterface FontFaceSet extends Set<FontFace> {\n}\n\ninterface FormData {\n    [Symbol.iterator](): IterableIterator<[string, FormDataEntryValue]>;\n    /** Returns an array of key, value pairs for every entry in the list. */\n    entries(): IterableIterator<[string, FormDataEntryValue]>;\n    /** Returns a list of keys in the list. */\n    keys(): IterableIterator<string>;\n    /** Returns a list of values in the list. */\n    values(): IterableIterator<FormDataEntryValue>;\n}\n\ninterface HTMLAllCollection {\n    [Symbol.iterator](): IterableIterator<Element>;\n}\n\ninterface HTMLCollectionBase {\n    [Symbol.iterator](): IterableIterator<Element>;\n}\n\ninterface HTMLCollectionOf<T extends Element> {\n    [Symbol.iterator](): IterableIterator<T>;\n}\n\ninterface HTMLFormElement {\n    [Symbol.iterator](): IterableIterator<Element>;\n}\n\ninterface HTMLSelectElement {\n    [Symbol.iterator](): IterableIterator<HTMLOptionElement>;\n}\n\ninterface Headers {\n    [Symbol.iterator](): IterableIterator<[string, string]>;\n    /** Returns an iterator allowing to go through all key/value pairs contained in this object. */\n    entries(): IterableIterator<[string, string]>;\n    /** Returns an iterator allowing to go through all keys of the key/value pairs contained in this object. */\n    keys(): IterableIterator<string>;\n    /** Returns an iterator allowing to go through all values of the key/value pairs contained in this object. */\n    values(): IterableIterator<string>;\n}\n\ninterface IDBDatabase {\n    /** Returns a new transaction with the given mode (\"readonly\" or \"readwrite\") and scope which can be a single object store name or an array of names. */\n    transaction(storeNames: string | Iterable<string>, mode?: IDBTransactionMode, options?: IDBTransactionOptions): IDBTransaction;\n}\n\ninterface IDBObjectStore {\n    /**\n     * Creates a new index in store with the given name, keyPath and options and returns a new IDBIndex. If the keyPath and options define constraints that cannot be satisfied with the data already in store the upgrade transaction will abort with a \"ConstraintError\" DOMException.\n     *\n     * Throws an \"InvalidStateError\" DOMException if not called within an upgrade transaction.\n     */\n    createIndex(name: string, keyPath: string | Iterable<string>, options?: IDBIndexParameters): IDBIndex;\n}\n\ninterface MIDIInputMap extends ReadonlyMap<string, MIDIInput> {\n}\n\ninterface MIDIOutput {\n    send(data: Iterable<number>, timestamp?: DOMHighResTimeStamp): void;\n}\n\ninterface MIDIOutputMap extends ReadonlyMap<string, MIDIOutput> {\n}\n\ninterface MediaKeyStatusMap {\n    [Symbol.iterator](): IterableIterator<[BufferSource, MediaKeyStatus]>;\n    entries(): IterableIterator<[BufferSource, MediaKeyStatus]>;\n    keys(): IterableIterator<BufferSource>;\n    values(): IterableIterator<MediaKeyStatus>;\n}\n\ninterface MediaList {\n    [Symbol.iterator](): IterableIterator<string>;\n}\n\ninterface MessageEvent<T = any> {\n    /** @deprecated */\n    initMessageEvent(type: string, bubbles?: boolean, cancelable?: boolean, data?: any, origin?: string, lastEventId?: string, source?: MessageEventSource | null, ports?: Iterable<MessagePort>): void;\n}\n\ninterface MimeTypeArray {\n    [Symbol.iterator](): IterableIterator<MimeType>;\n}\n\ninterface NamedNodeMap {\n    [Symbol.iterator](): IterableIterator<Attr>;\n}\n\ninterface Navigator {\n    /** Available only in secure contexts. */\n    requestMediaKeySystemAccess(keySystem: string, supportedConfigurations: Iterable<MediaKeySystemConfiguration>): Promise<MediaKeySystemAccess>;\n    vibrate(pattern: Iterable<number>): boolean;\n}\n\ninterface NodeList {\n    [Symbol.iterator](): IterableIterator<Node>;\n    /** Returns an array of key, value pairs for every entry in the list. */\n    entries(): IterableIterator<[number, Node]>;\n    /** Returns an list of keys in the list. */\n    keys(): IterableIterator<number>;\n    /** Returns an list of values in the list. */\n    values(): IterableIterator<Node>;\n}\n\ninterface NodeListOf<TNode extends Node> {\n    [Symbol.iterator](): IterableIterator<TNode>;\n    /** Returns an array of key, value pairs for every entry in the list. */\n    entries(): IterableIterator<[number, TNode]>;\n    /** Returns an list of keys in the list. */\n    keys(): IterableIterator<number>;\n    /** Returns an list of values in the list. */\n    values(): IterableIterator<TNode>;\n}\n\ninterface Plugin {\n    [Symbol.iterator](): IterableIterator<MimeType>;\n}\n\ninterface PluginArray {\n    [Symbol.iterator](): IterableIterator<Plugin>;\n}\n\ninterface RTCRtpTransceiver {\n    setCodecPreferences(codecs: Iterable<RTCRtpCodecCapability>): void;\n}\n\ninterface RTCStatsReport extends ReadonlyMap<string, any> {\n}\n\ninterface SVGLengthList {\n    [Symbol.iterator](): IterableIterator<SVGLength>;\n}\n\ninterface SVGNumberList {\n    [Symbol.iterator](): IterableIterator<SVGNumber>;\n}\n\ninterface SVGPointList {\n    [Symbol.iterator](): IterableIterator<DOMPoint>;\n}\n\ninterface SVGStringList {\n    [Symbol.iterator](): IterableIterator<string>;\n}\n\ninterface SVGTransformList {\n    [Symbol.iterator](): IterableIterator<SVGTransform>;\n}\n\ninterface SourceBufferList {\n    [Symbol.iterator](): IterableIterator<SourceBuffer>;\n}\n\ninterface SpeechRecognitionResult {\n    [Symbol.iterator](): IterableIterator<SpeechRecognitionAlternative>;\n}\n\ninterface SpeechRecognitionResultList {\n    [Symbol.iterator](): IterableIterator<SpeechRecognitionResult>;\n}\n\ninterface StyleSheetList {\n    [Symbol.iterator](): IterableIterator<CSSStyleSheet>;\n}\n\ninterface SubtleCrypto {\n    deriveKey(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, derivedKeyType: AlgorithmIdentifier | AesDerivedKeyParams | HmacImportParams | HkdfParams | Pbkdf2Params, extractable: boolean, keyUsages: Iterable<KeyUsage>): Promise<CryptoKey>;\n    generateKey(algorithm: RsaHashedKeyGenParams | EcKeyGenParams, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKeyPair>;\n    generateKey(algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;\n    generateKey(algorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: Iterable<KeyUsage>): Promise<CryptoKeyPair | CryptoKey>;\n    importKey(format: \"jwk\", keyData: JsonWebKey, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;\n    importKey(format: Exclude<KeyFormat, \"jwk\">, keyData: BufferSource, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: Iterable<KeyUsage>): Promise<CryptoKey>;\n    unwrapKey(format: KeyFormat, wrappedKey: BufferSource, unwrappingKey: CryptoKey, unwrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, unwrappedKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: Iterable<KeyUsage>): Promise<CryptoKey>;\n}\n\ninterface TextTrackCueList {\n    [Symbol.iterator](): IterableIterator<TextTrackCue>;\n}\n\ninterface TextTrackList {\n    [Symbol.iterator](): IterableIterator<TextTrack>;\n}\n\ninterface TouchList {\n    [Symbol.iterator](): IterableIterator<Touch>;\n}\n\ninterface URLSearchParams {\n    [Symbol.iterator](): IterableIterator<[string, string]>;\n    /** Returns an array of key, value pairs for every entry in the search params. */\n    entries(): IterableIterator<[string, string]>;\n    /** Returns a list of keys in the search params. */\n    keys(): IterableIterator<string>;\n    /** Returns a list of values in the search params. */\n    values(): IterableIterator<string>;\n}\n\ninterface WEBGL_draw_buffers {\n    drawBuffersWEBGL(buffers: Iterable<GLenum>): void;\n}\n\ninterface WEBGL_multi_draw {\n    multiDrawArraysInstancedWEBGL(mode: GLenum, firstsList: Int32Array | Iterable<GLint>, firstsOffset: GLuint, countsList: Int32Array | Iterable<GLsizei>, countsOffset: GLuint, instanceCountsList: Int32Array | Iterable<GLsizei>, instanceCountsOffset: GLuint, drawcount: GLsizei): void;\n    multiDrawArraysWEBGL(mode: GLenum, firstsList: Int32Array | Iterable<GLint>, firstsOffset: GLuint, countsList: Int32Array | Iterable<GLsizei>, countsOffset: GLuint, drawcount: GLsizei): void;\n    multiDrawElementsInstancedWEBGL(mode: GLenum, countsList: Int32Array | Iterable<GLsizei>, countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | Iterable<GLsizei>, offsetsOffset: GLuint, instanceCountsList: Int32Array | Iterable<GLsizei>, instanceCountsOffset: GLuint, drawcount: GLsizei): void;\n    multiDrawElementsWEBGL(mode: GLenum, countsList: Int32Array | Iterable<GLsizei>, countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | Iterable<GLsizei>, offsetsOffset: GLuint, drawcount: GLsizei): void;\n}\n\ninterface WebGL2RenderingContextBase {\n    clearBufferfv(buffer: GLenum, drawbuffer: GLint, values: Iterable<GLfloat>, srcOffset?: GLuint): void;\n    clearBufferiv(buffer: GLenum, drawbuffer: GLint, values: Iterable<GLint>, srcOffset?: GLuint): void;\n    clearBufferuiv(buffer: GLenum, drawbuffer: GLint, values: Iterable<GLuint>, srcOffset?: GLuint): void;\n    drawBuffers(buffers: Iterable<GLenum>): void;\n    getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;\n    getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;\n    invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;\n    invalidateSubFramebuffer(target: GLenum, attachments: Iterable<GLenum>, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;\n    transformFeedbackVaryings(program: WebGLProgram, varyings: Iterable<string>, bufferMode: GLenum): void;\n    uniform1uiv(location: WebGLUniformLocation | null, data: Iterable<GLuint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform2uiv(location: WebGLUniformLocation | null, data: Iterable<GLuint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform3uiv(location: WebGLUniformLocation | null, data: Iterable<GLuint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform4uiv(location: WebGLUniformLocation | null, data: Iterable<GLuint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix2x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix2x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix3x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix3x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix4x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix4x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    vertexAttribI4iv(index: GLuint, values: Iterable<GLint>): void;\n    vertexAttribI4uiv(index: GLuint, values: Iterable<GLuint>): void;\n}\n\ninterface WebGL2RenderingContextOverloads {\n    uniform1fv(location: WebGLUniformLocation | null, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform1iv(location: WebGLUniformLocation | null, data: Iterable<GLint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform2fv(location: WebGLUniformLocation | null, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform2iv(location: WebGLUniformLocation | null, data: Iterable<GLint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform3fv(location: WebGLUniformLocation | null, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform3iv(location: WebGLUniformLocation | null, data: Iterable<GLint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform4fv(location: WebGLUniformLocation | null, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform4iv(location: WebGLUniformLocation | null, data: Iterable<GLint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n}\n\ninterface WebGLRenderingContextBase {\n    vertexAttrib1fv(index: GLuint, values: Iterable<GLfloat>): void;\n    vertexAttrib2fv(index: GLuint, values: Iterable<GLfloat>): void;\n    vertexAttrib3fv(index: GLuint, values: Iterable<GLfloat>): void;\n    vertexAttrib4fv(index: GLuint, values: Iterable<GLfloat>): void;\n}\n\ninterface WebGLRenderingContextOverloads {\n    uniform1fv(location: WebGLUniformLocation | null, v: Iterable<GLfloat>): void;\n    uniform1iv(location: WebGLUniformLocation | null, v: Iterable<GLint>): void;\n    uniform2fv(location: WebGLUniformLocation | null, v: Iterable<GLfloat>): void;\n    uniform2iv(location: WebGLUniformLocation | null, v: Iterable<GLint>): void;\n    uniform3fv(location: WebGLUniformLocation | null, v: Iterable<GLfloat>): void;\n    uniform3iv(location: WebGLUniformLocation | null, v: Iterable<GLint>): void;\n    uniform4fv(location: WebGLUniformLocation | null, v: Iterable<GLfloat>): void;\n    uniform4iv(location: WebGLUniformLocation | null, v: Iterable<GLint>): void;\n    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Iterable<GLfloat>): void;\n    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Iterable<GLfloat>): void;\n    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Iterable<GLfloat>): void;\n}\n`;$i[\"lib.es2015.collection.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface Map<K, V> {\n\n    clear(): void;\n    /**\n     * @returns true if an element in the Map existed and has been removed, or false if the element does not exist.\n     */\n    delete(key: K): boolean;\n    /**\n     * Executes a provided function once per each key/value pair in the Map, in insertion order.\n     */\n    forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void;\n    /**\n     * Returns a specified element from the Map object. If the value that is associated to the provided key is an object, then you will get a reference to that object and any change made to that object will effectively modify it inside the Map.\n     * @returns Returns the element associated with the specified key. If no element is associated with the specified key, undefined is returned.\n     */\n    get(key: K): V | undefined;\n    /**\n     * @returns boolean indicating whether an element with the specified key exists or not.\n     */\n    has(key: K): boolean;\n    /**\n     * Adds a new element with a specified key and value to the Map. If an element with the same key already exists, the element will be updated.\n     */\n    set(key: K, value: V): this;\n    /**\n     * @returns the number of elements in the Map.\n     */\n    readonly size: number;\n}\n\ninterface MapConstructor {\n    new(): Map<any, any>;\n    new <K, V>(entries?: readonly (readonly [K, V])[] | null): Map<K, V>;\n    readonly prototype: Map<any, any>;\n}\ndeclare var Map: MapConstructor;\n\ninterface ReadonlyMap<K, V> {\n    forEach(callbackfn: (value: V, key: K, map: ReadonlyMap<K, V>) => void, thisArg?: any): void;\n    get(key: K): V | undefined;\n    has(key: K): boolean;\n    readonly size: number;\n}\n\ninterface WeakMap<K extends object, V> {\n    /**\n     * Removes the specified element from the WeakMap.\n     * @returns true if the element was successfully removed, or false if it was not present.\n     */\n    delete(key: K): boolean;\n    /**\n     * @returns a specified element.\n     */\n    get(key: K): V | undefined;\n    /**\n     * @returns a boolean indicating whether an element with the specified key exists or not.\n     */\n    has(key: K): boolean;\n    /**\n     * Adds a new element with a specified key and value.\n     * @param key Must be an object.\n     */\n    set(key: K, value: V): this;\n}\n\ninterface WeakMapConstructor {\n    new <K extends object = object, V = any>(entries?: readonly [K, V][] | null): WeakMap<K, V>;\n    readonly prototype: WeakMap<object, any>;\n}\ndeclare var WeakMap: WeakMapConstructor;\n\ninterface Set<T> {\n    /**\n     * Appends a new element with a specified value to the end of the Set.\n     */\n    add(value: T): this;\n\n    clear(): void;\n    /**\n     * Removes a specified value from the Set.\n     * @returns Returns true if an element in the Set existed and has been removed, or false if the element does not exist.\n     */\n    delete(value: T): boolean;\n    /**\n     * Executes a provided function once per each value in the Set object, in insertion order.\n     */\n    forEach(callbackfn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any): void;\n    /**\n     * @returns a boolean indicating whether an element with the specified value exists in the Set or not.\n     */\n    has(value: T): boolean;\n    /**\n     * @returns the number of (unique) elements in Set.\n     */\n    readonly size: number;\n}\n\ninterface SetConstructor {\n    new <T = any>(values?: readonly T[] | null): Set<T>;\n    readonly prototype: Set<any>;\n}\ndeclare var Set: SetConstructor;\n\ninterface ReadonlySet<T> {\n    forEach(callbackfn: (value: T, value2: T, set: ReadonlySet<T>) => void, thisArg?: any): void;\n    has(value: T): boolean;\n    readonly size: number;\n}\n\ninterface WeakSet<T extends object> {\n    /**\n     * Appends a new object to the end of the WeakSet.\n     */\n    add(value: T): this;\n    /**\n     * Removes the specified element from the WeakSet.\n     * @returns Returns true if the element existed and has been removed, or false if the element does not exist.\n     */\n    delete(value: T): boolean;\n    /**\n     * @returns a boolean indicating whether an object exists in the WeakSet or not.\n     */\n    has(value: T): boolean;\n}\n\ninterface WeakSetConstructor {\n    new <T extends object = object>(values?: readonly T[] | null): WeakSet<T>;\n    readonly prototype: WeakSet<object>;\n}\ndeclare var WeakSet: WeakSetConstructor;\n`;$i[\"lib.es2015.core.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface Array<T> {\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find<S extends T>(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined;\n    find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number;\n\n    /**\n     * Changes all array elements from \\`start\\` to \\`end\\` index to a static \\`value\\` and returns the modified array\n     * @param value value to fill array section with\n     * @param start index to start filling the array at. If start is negative, it is treated as\n     * length+start where length is the length of the array.\n     * @param end index to stop filling the array at. If end is negative, it is treated as\n     * length+end.\n     */\n    fill(value: T, start?: number, end?: number): this;\n\n    /**\n     * Returns the this object after copying a section of the array identified by start and end\n     * to the same array starting at position target\n     * @param target If target is negative, it is treated as length+target where length is the\n     * length of the array.\n     * @param start If start is negative, it is treated as length+start. If end is negative, it\n     * is treated as length+end.\n     * @param end If not specified, length of the this object is used as its default value.\n     */\n    copyWithin(target: number, start: number, end?: number): this;\n}\n\ninterface ArrayConstructor {\n    /**\n     * Creates an array from an array-like object.\n     * @param arrayLike An array-like object to convert to an array.\n     */\n    from<T>(arrayLike: ArrayLike<T>): T[];\n\n    /**\n     * Creates an array from an iterable object.\n     * @param arrayLike An array-like object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from<T, U>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[];\n\n    /**\n     * Returns a new array from a set of elements.\n     * @param items A set of elements to include in the new array object.\n     */\n    of<T>(...items: T[]): T[];\n}\n\ninterface DateConstructor {\n    new (value: number | string | Date): Date;\n}\n\ninterface Function {\n    /**\n     * Returns the name of the function. Function names are read-only and can not be changed.\n     */\n    readonly name: string;\n}\n\ninterface Math {\n    /**\n     * Returns the number of leading zero bits in the 32-bit binary representation of a number.\n     * @param x A numeric expression.\n     */\n    clz32(x: number): number;\n\n    /**\n     * Returns the result of 32-bit multiplication of two numbers.\n     * @param x First number\n     * @param y Second number\n     */\n    imul(x: number, y: number): number;\n\n    /**\n     * Returns the sign of the x, indicating whether x is positive, negative or zero.\n     * @param x The numeric expression to test\n     */\n    sign(x: number): number;\n\n    /**\n     * Returns the base 10 logarithm of a number.\n     * @param x A numeric expression.\n     */\n    log10(x: number): number;\n\n    /**\n     * Returns the base 2 logarithm of a number.\n     * @param x A numeric expression.\n     */\n    log2(x: number): number;\n\n    /**\n     * Returns the natural logarithm of 1 + x.\n     * @param x A numeric expression.\n     */\n    log1p(x: number): number;\n\n    /**\n     * Returns the result of (e^x - 1), which is an implementation-dependent approximation to\n     * subtracting 1 from the exponential function of x (e raised to the power of x, where e\n     * is the base of the natural logarithms).\n     * @param x A numeric expression.\n     */\n    expm1(x: number): number;\n\n    /**\n     * Returns the hyperbolic cosine of a number.\n     * @param x A numeric expression that contains an angle measured in radians.\n     */\n    cosh(x: number): number;\n\n    /**\n     * Returns the hyperbolic sine of a number.\n     * @param x A numeric expression that contains an angle measured in radians.\n     */\n    sinh(x: number): number;\n\n    /**\n     * Returns the hyperbolic tangent of a number.\n     * @param x A numeric expression that contains an angle measured in radians.\n     */\n    tanh(x: number): number;\n\n    /**\n     * Returns the inverse hyperbolic cosine of a number.\n     * @param x A numeric expression that contains an angle measured in radians.\n     */\n    acosh(x: number): number;\n\n    /**\n     * Returns the inverse hyperbolic sine of a number.\n     * @param x A numeric expression that contains an angle measured in radians.\n     */\n    asinh(x: number): number;\n\n    /**\n     * Returns the inverse hyperbolic tangent of a number.\n     * @param x A numeric expression that contains an angle measured in radians.\n     */\n    atanh(x: number): number;\n\n    /**\n     * Returns the square root of the sum of squares of its arguments.\n     * @param values Values to compute the square root for.\n     *     If no arguments are passed, the result is +0.\n     *     If there is only one argument, the result is the absolute value.\n     *     If any argument is +Infinity or -Infinity, the result is +Infinity.\n     *     If any argument is NaN, the result is NaN.\n     *     If all arguments are either +0 or \\u22120, the result is +0.\n     */\n    hypot(...values: number[]): number;\n\n    /**\n     * Returns the integral part of the a numeric expression, x, removing any fractional digits.\n     * If x is already an integer, the result is x.\n     * @param x A numeric expression.\n     */\n    trunc(x: number): number;\n\n    /**\n     * Returns the nearest single precision float representation of a number.\n     * @param x A numeric expression.\n     */\n    fround(x: number): number;\n\n    /**\n     * Returns an implementation-dependent approximation to the cube root of number.\n     * @param x A numeric expression.\n     */\n    cbrt(x: number): number;\n}\n\ninterface NumberConstructor {\n    /**\n     * The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1\n     * that is representable as a Number value, which is approximately:\n     * 2.2204460492503130808472633361816 x 10\\u200D\\u2212\\u200D16.\n     */\n    readonly EPSILON: number;\n\n    /**\n     * Returns true if passed value is finite.\n     * Unlike the global isFinite, Number.isFinite doesn't forcibly convert the parameter to a\n     * number. Only finite values of the type number, result in true.\n     * @param number A numeric value.\n     */\n    isFinite(number: unknown): boolean;\n\n    /**\n     * Returns true if the value passed is an integer, false otherwise.\n     * @param number A numeric value.\n     */\n    isInteger(number: unknown): boolean;\n\n    /**\n     * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a\n     * number). Unlike the global isNaN(), Number.isNaN() doesn't forcefully convert the parameter\n     * to a number. Only values of the type number, that are also NaN, result in true.\n     * @param number A numeric value.\n     */\n    isNaN(number: unknown): boolean;\n\n    /**\n     * Returns true if the value passed is a safe integer.\n     * @param number A numeric value.\n     */\n    isSafeInteger(number: unknown): boolean;\n\n    /**\n     * The value of the largest integer n such that n and n + 1 are both exactly representable as\n     * a Number value.\n     * The value of Number.MAX_SAFE_INTEGER is 9007199254740991 2^53 \\u2212 1.\n     */\n    readonly MAX_SAFE_INTEGER: number;\n\n    /**\n     * The value of the smallest integer n such that n and n \\u2212 1 are both exactly representable as\n     * a Number value.\n     * The value of Number.MIN_SAFE_INTEGER is \\u22129007199254740991 (\\u2212(2^53 \\u2212 1)).\n     */\n    readonly MIN_SAFE_INTEGER: number;\n\n    /**\n     * Converts a string to a floating-point number.\n     * @param string A string that contains a floating-point number.\n     */\n    parseFloat(string: string): number;\n\n    /**\n     * Converts A string to an integer.\n     * @param string A string to convert into a number.\n     * @param radix A value between 2 and 36 that specifies the base of the number in \\`string\\`.\n     * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal.\n     * All other strings are considered decimal.\n     */\n    parseInt(string: string, radix?: number): number;\n}\n\ninterface ObjectConstructor {\n    /**\n     * Copy the values of all of the enumerable own properties from one or more source objects to a\n     * target object. Returns the target object.\n     * @param target The target object to copy to.\n     * @param source The source object from which to copy properties.\n     */\n    assign<T extends {}, U>(target: T, source: U): T & U;\n\n    /**\n     * Copy the values of all of the enumerable own properties from one or more source objects to a\n     * target object. Returns the target object.\n     * @param target The target object to copy to.\n     * @param source1 The first source object from which to copy properties.\n     * @param source2 The second source object from which to copy properties.\n     */\n    assign<T extends {}, U, V>(target: T, source1: U, source2: V): T & U & V;\n\n    /**\n     * Copy the values of all of the enumerable own properties from one or more source objects to a\n     * target object. Returns the target object.\n     * @param target The target object to copy to.\n     * @param source1 The first source object from which to copy properties.\n     * @param source2 The second source object from which to copy properties.\n     * @param source3 The third source object from which to copy properties.\n     */\n    assign<T extends {}, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;\n\n    /**\n     * Copy the values of all of the enumerable own properties from one or more source objects to a\n     * target object. Returns the target object.\n     * @param target The target object to copy to.\n     * @param sources One or more source objects from which to copy properties\n     */\n    assign(target: object, ...sources: any[]): any;\n\n    /**\n     * Returns an array of all symbol properties found directly on object o.\n     * @param o Object to retrieve the symbols from.\n     */\n    getOwnPropertySymbols(o: any): symbol[];\n\n    /**\n     * Returns the names of the enumerable string properties and methods of an object.\n     * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\n     */\n    keys(o: {}): string[];\n\n    /**\n     * Returns true if the values are the same value, false otherwise.\n     * @param value1 The first value.\n     * @param value2 The second value.\n     */\n    is(value1: any, value2: any): boolean;\n\n    /**\n     * Sets the prototype of a specified object o to object proto or null. Returns the object o.\n     * @param o The object to change its prototype.\n     * @param proto The value of the new prototype or null.\n     */\n    setPrototypeOf(o: any, proto: object | null): any;\n}\n\ninterface ReadonlyArray<T> {\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find<S extends T>(predicate: (value: T, index: number, obj: readonly T[]) => value is S, thisArg?: any): S | undefined;\n    find(predicate: (value: T, index: number, obj: readonly T[]) => unknown, thisArg?: any): T | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: T, index: number, obj: readonly T[]) => unknown, thisArg?: any): number;\n}\n\ninterface RegExp {\n    /**\n     * Returns a string indicating the flags of the regular expression in question. This field is read-only.\n     * The characters in this string are sequenced and concatenated in the following order:\n     *\n     *    - \"g\" for global\n     *    - \"i\" for ignoreCase\n     *    - \"m\" for multiline\n     *    - \"u\" for unicode\n     *    - \"y\" for sticky\n     *\n     * If no flags are set, the value is the empty string.\n     */\n    readonly flags: string;\n\n    /**\n     * Returns a Boolean value indicating the state of the sticky flag (y) used with a regular\n     * expression. Default is false. Read-only.\n     */\n    readonly sticky: boolean;\n\n    /**\n     * Returns a Boolean value indicating the state of the Unicode flag (u) used with a regular\n     * expression. Default is false. Read-only.\n     */\n    readonly unicode: boolean;\n}\n\ninterface RegExpConstructor {\n    new (pattern: RegExp | string, flags?: string): RegExp;\n    (pattern: RegExp | string, flags?: string): RegExp;\n}\n\ninterface String {\n    /**\n     * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point\n     * value of the UTF-16 encoded code point starting at the string element at position pos in\n     * the String resulting from converting this object to a String.\n     * If there is no element at that position, the result is undefined.\n     * If a valid UTF-16 surrogate pair does not begin at pos, the result is the code unit at pos.\n     */\n    codePointAt(pos: number): number | undefined;\n\n    /**\n     * Returns true if searchString appears as a substring of the result of converting this\n     * object to a String, at one or more positions that are\n     * greater than or equal to position; otherwise, returns false.\n     * @param searchString search string\n     * @param position If position is undefined, 0 is assumed, so as to search all of the String.\n     */\n    includes(searchString: string, position?: number): boolean;\n\n    /**\n     * Returns true if the sequence of elements of searchString converted to a String is the\n     * same as the corresponding elements of this object (converted to a String) starting at\n     * endPosition \\u2013 length(this). Otherwise returns false.\n     */\n    endsWith(searchString: string, endPosition?: number): boolean;\n\n    /**\n     * Returns the String value result of normalizing the string into the normalization form\n     * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms.\n     * @param form Applicable values: \"NFC\", \"NFD\", \"NFKC\", or \"NFKD\", If not specified default\n     * is \"NFC\"\n     */\n    normalize(form: \"NFC\" | \"NFD\" | \"NFKC\" | \"NFKD\"): string;\n\n    /**\n     * Returns the String value result of normalizing the string into the normalization form\n     * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms.\n     * @param form Applicable values: \"NFC\", \"NFD\", \"NFKC\", or \"NFKD\", If not specified default\n     * is \"NFC\"\n     */\n    normalize(form?: string): string;\n\n    /**\n     * Returns a String value that is made from count copies appended together. If count is 0,\n     * the empty string is returned.\n     * @param count number of copies to append\n     */\n    repeat(count: number): string;\n\n    /**\n     * Returns true if the sequence of elements of searchString converted to a String is the\n     * same as the corresponding elements of this object (converted to a String) starting at\n     * position. Otherwise returns false.\n     */\n    startsWith(searchString: string, position?: number): boolean;\n\n    /**\n     * Returns an \\`<a>\\` HTML anchor element and sets the name attribute to the text value\n     * @deprecated A legacy feature for browser compatibility\n     * @param name\n     */\n    anchor(name: string): string;\n\n    /**\n     * Returns a \\`<big>\\` HTML element\n     * @deprecated A legacy feature for browser compatibility\n     */\n    big(): string;\n\n    /**\n     * Returns a \\`<blink>\\` HTML element\n     * @deprecated A legacy feature for browser compatibility\n     */\n    blink(): string;\n\n    /**\n     * Returns a \\`<b>\\` HTML element\n     * @deprecated A legacy feature for browser compatibility\n     */\n    bold(): string;\n\n    /**\n     * Returns a \\`<tt>\\` HTML element\n     * @deprecated A legacy feature for browser compatibility\n     */\n    fixed(): string;\n\n    /**\n     * Returns a \\`<font>\\` HTML element and sets the color attribute value\n     * @deprecated A legacy feature for browser compatibility\n     */\n    fontcolor(color: string): string;\n\n    /**\n     * Returns a \\`<font>\\` HTML element and sets the size attribute value\n     * @deprecated A legacy feature for browser compatibility\n     */\n    fontsize(size: number): string;\n\n    /**\n     * Returns a \\`<font>\\` HTML element and sets the size attribute value\n     * @deprecated A legacy feature for browser compatibility\n     */\n    fontsize(size: string): string;\n\n    /**\n     * Returns an \\`<i>\\` HTML element\n     * @deprecated A legacy feature for browser compatibility\n     */\n    italics(): string;\n\n    /**\n     * Returns an \\`<a>\\` HTML element and sets the href attribute value\n     * @deprecated A legacy feature for browser compatibility\n     */\n    link(url: string): string;\n\n    /**\n     * Returns a \\`<small>\\` HTML element\n     * @deprecated A legacy feature for browser compatibility\n     */\n    small(): string;\n\n    /**\n     * Returns a \\`<strike>\\` HTML element\n     * @deprecated A legacy feature for browser compatibility\n     */\n    strike(): string;\n\n    /**\n     * Returns a \\`<sub>\\` HTML element\n     * @deprecated A legacy feature for browser compatibility\n     */\n    sub(): string;\n\n    /**\n     * Returns a \\`<sup>\\` HTML element\n     * @deprecated A legacy feature for browser compatibility\n     */\n    sup(): string;\n}\n\ninterface StringConstructor {\n    /**\n     * Return the String value whose elements are, in order, the elements in the List elements.\n     * If length is 0, the empty string is returned.\n     */\n    fromCodePoint(...codePoints: number[]): string;\n\n    /**\n     * String.raw is usually used as a tag function of a Tagged Template String. When called as\n     * such, the first argument will be a well formed template call site object and the rest\n     * parameter will contain the substitution values. It can also be called directly, for example,\n     * to interleave strings and values from your own tag function, and in this case the only thing\n     * it needs from the first argument is the raw property.\n     * @param template A well-formed template string call site representation.\n     * @param substitutions A set of substitution values.\n     */\n    raw(template: { raw: readonly string[] | ArrayLike<string>}, ...substitutions: any[]): string;\n}\n`;$i[\"lib.es2015.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es5\" />\n/// <reference lib=\"es2015.core\" />\n/// <reference lib=\"es2015.collection\" />\n/// <reference lib=\"es2015.iterable\" />\n/// <reference lib=\"es2015.generator\" />\n/// <reference lib=\"es2015.promise\" />\n/// <reference lib=\"es2015.proxy\" />\n/// <reference lib=\"es2015.reflect\" />\n/// <reference lib=\"es2015.symbol\" />\n/// <reference lib=\"es2015.symbol.wellknown\" />\n`;$i[\"lib.es2015.generator.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2015.iterable\" />\n\ninterface Generator<T = unknown, TReturn = any, TNext = unknown> extends Iterator<T, TReturn, TNext> {\n    // NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places.\n    next(...args: [] | [TNext]): IteratorResult<T, TReturn>;\n    return(value: TReturn): IteratorResult<T, TReturn>;\n    throw(e: any): IteratorResult<T, TReturn>;\n    [Symbol.iterator](): Generator<T, TReturn, TNext>;\n}\n\ninterface GeneratorFunction {\n    /**\n     * Creates a new Generator object.\n     * @param args A list of arguments the function accepts.\n     */\n    new (...args: any[]): Generator;\n    /**\n     * Creates a new Generator object.\n     * @param args A list of arguments the function accepts.\n     */\n    (...args: any[]): Generator;\n    /**\n     * The length of the arguments.\n     */\n    readonly length: number;\n    /**\n     * Returns the name of the function.\n     */\n    readonly name: string;\n    /**\n     * A reference to the prototype.\n     */\n    readonly prototype: Generator;\n}\n\ninterface GeneratorFunctionConstructor {\n    /**\n     * Creates a new Generator function.\n     * @param args A list of arguments the function accepts.\n     */\n    new (...args: string[]): GeneratorFunction;\n    /**\n     * Creates a new Generator function.\n     * @param args A list of arguments the function accepts.\n     */\n    (...args: string[]): GeneratorFunction;\n    /**\n     * The length of the arguments.\n     */\n    readonly length: number;\n    /**\n     * Returns the name of the function.\n     */\n    readonly name: string;\n    /**\n     * A reference to the prototype.\n     */\n    readonly prototype: GeneratorFunction;\n}\n`;$i[\"lib.es2015.iterable.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2015.symbol\" />\n\ninterface SymbolConstructor {\n    /**\n     * A method that returns the default iterator for an object. Called by the semantics of the\n     * for-of statement.\n     */\n    readonly iterator: unique symbol;\n}\n\ninterface IteratorYieldResult<TYield> {\n    done?: false;\n    value: TYield;\n}\n\ninterface IteratorReturnResult<TReturn> {\n    done: true;\n    value: TReturn;\n}\n\ntype IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>;\n\ninterface Iterator<T, TReturn = any, TNext = undefined> {\n    // NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places.\n    next(...args: [] | [TNext]): IteratorResult<T, TReturn>;\n    return?(value?: TReturn): IteratorResult<T, TReturn>;\n    throw?(e?: any): IteratorResult<T, TReturn>;\n}\n\ninterface Iterable<T> {\n    [Symbol.iterator](): Iterator<T>;\n}\n\ninterface IterableIterator<T> extends Iterator<T> {\n    [Symbol.iterator](): IterableIterator<T>;\n}\n\ninterface Array<T> {\n    /** Iterator */\n    [Symbol.iterator](): IterableIterator<T>;\n\n    /**\n     * Returns an iterable of key, value pairs for every entry in the array\n     */\n    entries(): IterableIterator<[number, T]>;\n\n    /**\n     * Returns an iterable of keys in the array\n     */\n    keys(): IterableIterator<number>;\n\n    /**\n     * Returns an iterable of values in the array\n     */\n    values(): IterableIterator<T>;\n}\n\ninterface ArrayConstructor {\n    /**\n     * Creates an array from an iterable object.\n     * @param iterable An iterable object to convert to an array.\n     */\n    from<T>(iterable: Iterable<T> | ArrayLike<T>): T[];\n\n    /**\n     * Creates an array from an iterable object.\n     * @param iterable An iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from<T, U>(iterable: Iterable<T> | ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[];\n}\n\ninterface ReadonlyArray<T> {\n    /** Iterator of values in the array. */\n    [Symbol.iterator](): IterableIterator<T>;\n\n    /**\n     * Returns an iterable of key, value pairs for every entry in the array\n     */\n    entries(): IterableIterator<[number, T]>;\n\n    /**\n     * Returns an iterable of keys in the array\n     */\n    keys(): IterableIterator<number>;\n\n    /**\n     * Returns an iterable of values in the array\n     */\n    values(): IterableIterator<T>;\n}\n\ninterface IArguments {\n    /** Iterator */\n    [Symbol.iterator](): IterableIterator<any>;\n}\n\ninterface Map<K, V> {\n    /** Returns an iterable of entries in the map. */\n    [Symbol.iterator](): IterableIterator<[K, V]>;\n\n    /**\n     * Returns an iterable of key, value pairs for every entry in the map.\n     */\n    entries(): IterableIterator<[K, V]>;\n\n    /**\n     * Returns an iterable of keys in the map\n     */\n    keys(): IterableIterator<K>;\n\n    /**\n     * Returns an iterable of values in the map\n     */\n    values(): IterableIterator<V>;\n}\n\ninterface ReadonlyMap<K, V> {\n    /** Returns an iterable of entries in the map. */\n    [Symbol.iterator](): IterableIterator<[K, V]>;\n\n    /**\n     * Returns an iterable of key, value pairs for every entry in the map.\n     */\n    entries(): IterableIterator<[K, V]>;\n\n    /**\n     * Returns an iterable of keys in the map\n     */\n    keys(): IterableIterator<K>;\n\n    /**\n     * Returns an iterable of values in the map\n     */\n    values(): IterableIterator<V>;\n}\n\ninterface MapConstructor {\n    new(): Map<any, any>;\n    new <K, V>(iterable?: Iterable<readonly [K, V]> | null): Map<K, V>;\n}\n\ninterface WeakMap<K extends object, V> { }\n\ninterface WeakMapConstructor {\n    new <K extends object, V>(iterable: Iterable<readonly [K, V]>): WeakMap<K, V>;\n}\n\ninterface Set<T> {\n    /** Iterates over values in the set. */\n    [Symbol.iterator](): IterableIterator<T>;\n    /**\n     * Returns an iterable of [v,v] pairs for every value \\`v\\` in the set.\n     */\n    entries(): IterableIterator<[T, T]>;\n    /**\n     * Despite its name, returns an iterable of the values in the set.\n     */\n    keys(): IterableIterator<T>;\n\n    /**\n     * Returns an iterable of values in the set.\n     */\n    values(): IterableIterator<T>;\n}\n\ninterface ReadonlySet<T> {\n    /** Iterates over values in the set. */\n    [Symbol.iterator](): IterableIterator<T>;\n\n    /**\n     * Returns an iterable of [v,v] pairs for every value \\`v\\` in the set.\n     */\n    entries(): IterableIterator<[T, T]>;\n\n    /**\n     * Despite its name, returns an iterable of the values in the set.\n     */\n    keys(): IterableIterator<T>;\n\n    /**\n     * Returns an iterable of values in the set.\n     */\n    values(): IterableIterator<T>;\n}\n\ninterface SetConstructor {\n    new <T>(iterable?: Iterable<T> | null): Set<T>;\n}\n\ninterface WeakSet<T extends object> { }\n\ninterface WeakSetConstructor {\n    new <T extends object = object>(iterable: Iterable<T>): WeakSet<T>;\n}\n\ninterface Promise<T> { }\n\ninterface PromiseConstructor {\n    /**\n     * Creates a Promise that is resolved with an array of results when all of the provided Promises\n     * resolve, or rejected when any Promise is rejected.\n     * @param values An iterable of Promises.\n     * @returns A new Promise.\n     */\n    all<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]>;\n\n    /**\n     * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved\n     * or rejected.\n     * @param values An iterable of Promises.\n     * @returns A new Promise.\n     */\n    race<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>>;\n}\n\ninterface String {\n    /** Iterator */\n    [Symbol.iterator](): IterableIterator<string>;\n}\n\ninterface Int8Array {\n    [Symbol.iterator](): IterableIterator<number>;\n    /**\n     * Returns an array of key, value pairs for every entry in the array\n     */\n    entries(): IterableIterator<[number, number]>;\n    /**\n     * Returns an list of keys in the array\n     */\n    keys(): IterableIterator<number>;\n    /**\n     * Returns an list of values in the array\n     */\n    values(): IterableIterator<number>;\n}\n\ninterface Int8ArrayConstructor {\n    new (elements: Iterable<number>): Int8Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array;\n}\n\ninterface Uint8Array {\n    [Symbol.iterator](): IterableIterator<number>;\n    /**\n     * Returns an array of key, value pairs for every entry in the array\n     */\n    entries(): IterableIterator<[number, number]>;\n    /**\n     * Returns an list of keys in the array\n     */\n    keys(): IterableIterator<number>;\n    /**\n     * Returns an list of values in the array\n     */\n    values(): IterableIterator<number>;\n}\n\ninterface Uint8ArrayConstructor {\n    new (elements: Iterable<number>): Uint8Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array;\n}\n\ninterface Uint8ClampedArray {\n    [Symbol.iterator](): IterableIterator<number>;\n    /**\n     * Returns an array of key, value pairs for every entry in the array\n     */\n    entries(): IterableIterator<[number, number]>;\n\n    /**\n     * Returns an list of keys in the array\n     */\n    keys(): IterableIterator<number>;\n\n    /**\n     * Returns an list of values in the array\n     */\n    values(): IterableIterator<number>;\n}\n\ninterface Uint8ClampedArrayConstructor {\n    new (elements: Iterable<number>): Uint8ClampedArray;\n\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray;\n}\n\ninterface Int16Array {\n    [Symbol.iterator](): IterableIterator<number>;\n    /**\n     * Returns an array of key, value pairs for every entry in the array\n     */\n    entries(): IterableIterator<[number, number]>;\n\n    /**\n     * Returns an list of keys in the array\n     */\n    keys(): IterableIterator<number>;\n\n    /**\n     * Returns an list of values in the array\n     */\n    values(): IterableIterator<number>;\n}\n\ninterface Int16ArrayConstructor {\n    new (elements: Iterable<number>): Int16Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array;\n}\n\ninterface Uint16Array {\n    [Symbol.iterator](): IterableIterator<number>;\n    /**\n     * Returns an array of key, value pairs for every entry in the array\n     */\n    entries(): IterableIterator<[number, number]>;\n    /**\n     * Returns an list of keys in the array\n     */\n    keys(): IterableIterator<number>;\n    /**\n     * Returns an list of values in the array\n     */\n    values(): IterableIterator<number>;\n}\n\ninterface Uint16ArrayConstructor {\n    new (elements: Iterable<number>): Uint16Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array;\n}\n\ninterface Int32Array {\n    [Symbol.iterator](): IterableIterator<number>;\n    /**\n     * Returns an array of key, value pairs for every entry in the array\n     */\n    entries(): IterableIterator<[number, number]>;\n    /**\n     * Returns an list of keys in the array\n     */\n    keys(): IterableIterator<number>;\n    /**\n     * Returns an list of values in the array\n     */\n    values(): IterableIterator<number>;\n}\n\ninterface Int32ArrayConstructor {\n    new (elements: Iterable<number>): Int32Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array;\n}\n\ninterface Uint32Array {\n    [Symbol.iterator](): IterableIterator<number>;\n    /**\n     * Returns an array of key, value pairs for every entry in the array\n     */\n    entries(): IterableIterator<[number, number]>;\n    /**\n     * Returns an list of keys in the array\n     */\n    keys(): IterableIterator<number>;\n    /**\n     * Returns an list of values in the array\n     */\n    values(): IterableIterator<number>;\n}\n\ninterface Uint32ArrayConstructor {\n    new (elements: Iterable<number>): Uint32Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array;\n}\n\ninterface Float32Array {\n    [Symbol.iterator](): IterableIterator<number>;\n    /**\n     * Returns an array of key, value pairs for every entry in the array\n     */\n    entries(): IterableIterator<[number, number]>;\n    /**\n     * Returns an list of keys in the array\n     */\n    keys(): IterableIterator<number>;\n    /**\n     * Returns an list of values in the array\n     */\n    values(): IterableIterator<number>;\n}\n\ninterface Float32ArrayConstructor {\n    new (elements: Iterable<number>): Float32Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array;\n}\n\ninterface Float64Array {\n    [Symbol.iterator](): IterableIterator<number>;\n    /**\n     * Returns an array of key, value pairs for every entry in the array\n     */\n    entries(): IterableIterator<[number, number]>;\n    /**\n     * Returns an list of keys in the array\n     */\n    keys(): IterableIterator<number>;\n    /**\n     * Returns an list of values in the array\n     */\n    values(): IterableIterator<number>;\n}\n\ninterface Float64ArrayConstructor {\n    new (elements: Iterable<number>): Float64Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array;\n}\n`;$i[\"lib.es2015.promise.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface PromiseConstructor {\n    /**\n     * A reference to the prototype.\n     */\n    readonly prototype: Promise<any>;\n\n    /**\n     * Creates a new Promise.\n     * @param executor A callback used to initialize the promise. This callback is passed two arguments:\n     * a resolve callback used to resolve the promise with a value or the result of another promise,\n     * and a reject callback used to reject the promise with a provided reason or error.\n     */\n    new <T>(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;\n\n    /**\n     * Creates a Promise that is resolved with an array of results when all of the provided Promises\n     * resolve, or rejected when any Promise is rejected.\n     * @param values An array of Promises.\n     * @returns A new Promise.\n     */\n    all<T extends readonly unknown[] | []>(values: T): Promise<{ -readonly [P in keyof T]: Awaited<T[P]> }>;\n\n    // see: lib.es2015.iterable.d.ts\n    // all<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]>;\n\n    /**\n     * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved\n     * or rejected.\n     * @param values An array of Promises.\n     * @returns A new Promise.\n     */\n    race<T extends readonly unknown[] | []>(values: T): Promise<Awaited<T[number]>>;\n\n    // see: lib.es2015.iterable.d.ts\n    // race<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>>;\n\n    /**\n     * Creates a new rejected promise for the provided reason.\n     * @param reason The reason the promise was rejected.\n     * @returns A new rejected Promise.\n     */\n    reject<T = never>(reason?: any): Promise<T>;\n\n    /**\n     * Creates a new resolved promise.\n     * @returns A resolved promise.\n     */\n    resolve(): Promise<void>;\n    /**\n     * Creates a new resolved promise for the provided value.\n     * @param value A promise.\n     * @returns A promise whose internal state matches the provided promise.\n     */\n    resolve<T>(value: T): Promise<Awaited<T>>;\n    /**\n     * Creates a new resolved promise for the provided value.\n     * @param value A promise.\n     * @returns A promise whose internal state matches the provided promise.\n     */\n    resolve<T>(value: T | PromiseLike<T>): Promise<Awaited<T>>;\n}\n\ndeclare var Promise: PromiseConstructor;\n`;$i[\"lib.es2015.proxy.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface ProxyHandler<T extends object> {\n    /**\n     * A trap method for a function call.\n     * @param target The original callable object which is being proxied.\n     */\n    apply?(target: T, thisArg: any, argArray: any[]): any;\n\n    /**\n     * A trap for the \\`new\\` operator.\n     * @param target The original object which is being proxied.\n     * @param newTarget The constructor that was originally called.\n     */\n    construct?(target: T, argArray: any[], newTarget: Function): object;\n\n    /**\n     * A trap for \\`Object.defineProperty()\\`.\n     * @param target The original object which is being proxied.\n     * @returns A \\`Boolean\\` indicating whether or not the property has been defined.\n     */\n    defineProperty?(target: T, property: string | symbol, attributes: PropertyDescriptor): boolean;\n\n    /**\n     * A trap for the \\`delete\\` operator.\n     * @param target The original object which is being proxied.\n     * @param p The name or \\`Symbol\\` of the property to delete.\n     * @returns A \\`Boolean\\` indicating whether or not the property was deleted.\n     */\n    deleteProperty?(target: T, p: string | symbol): boolean;\n\n    /**\n     * A trap for getting a property value.\n     * @param target The original object which is being proxied.\n     * @param p The name or \\`Symbol\\` of the property to get.\n     * @param receiver The proxy or an object that inherits from the proxy.\n     */\n    get?(target: T, p: string | symbol, receiver: any): any;\n\n    /**\n     * A trap for \\`Object.getOwnPropertyDescriptor()\\`.\n     * @param target The original object which is being proxied.\n     * @param p The name of the property whose description should be retrieved.\n     */\n    getOwnPropertyDescriptor?(target: T, p: string | symbol): PropertyDescriptor | undefined;\n\n    /**\n     * A trap for the \\`[[GetPrototypeOf]]\\` internal method.\n     * @param target The original object which is being proxied.\n     */\n    getPrototypeOf?(target: T): object | null;\n\n    /**\n     * A trap for the \\`in\\` operator.\n     * @param target The original object which is being proxied.\n     * @param p The name or \\`Symbol\\` of the property to check for existence.\n     */\n    has?(target: T, p: string | symbol): boolean;\n\n    /**\n     * A trap for \\`Object.isExtensible()\\`.\n     * @param target The original object which is being proxied.\n     */\n    isExtensible?(target: T): boolean;\n\n    /**\n     * A trap for \\`Reflect.ownKeys()\\`.\n     * @param target The original object which is being proxied.\n     */\n    ownKeys?(target: T): ArrayLike<string | symbol>;\n\n    /**\n     * A trap for \\`Object.preventExtensions()\\`.\n     * @param target The original object which is being proxied.\n     */\n    preventExtensions?(target: T): boolean;\n\n    /**\n     * A trap for setting a property value.\n     * @param target The original object which is being proxied.\n     * @param p The name or \\`Symbol\\` of the property to set.\n     * @param receiver The object to which the assignment was originally directed.\n     * @returns A \\`Boolean\\` indicating whether or not the property was set.\n     */\n    set?(target: T, p: string | symbol, newValue: any, receiver: any): boolean;\n\n    /**\n     * A trap for \\`Object.setPrototypeOf()\\`.\n     * @param target The original object which is being proxied.\n     * @param newPrototype The object's new prototype or \\`null\\`.\n     */\n    setPrototypeOf?(target: T, v: object | null): boolean;\n}\n\ninterface ProxyConstructor {\n    /**\n     * Creates a revocable Proxy object.\n     * @param target A target object to wrap with Proxy.\n     * @param handler An object whose properties define the behavior of Proxy when an operation is attempted on it.\n     */\n    revocable<T extends object>(target: T, handler: ProxyHandler<T>): { proxy: T; revoke: () => void; };\n\n    /**\n     * Creates a Proxy object. The Proxy object allows you to create an object that can be used in place of the\n     * original object, but which may redefine fundamental Object operations like getting, setting, and defining\n     * properties. Proxy objects are commonly used to log property accesses, validate, format, or sanitize inputs.\n     * @param target A target object to wrap with Proxy.\n     * @param handler An object whose properties define the behavior of Proxy when an operation is attempted on it.\n     */\n    new <T extends object>(target: T, handler: ProxyHandler<T>): T;\n}\ndeclare var Proxy: ProxyConstructor;\n`;$i[\"lib.es2015.reflect.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ndeclare namespace Reflect {\n    /**\n     * Calls the function with the specified object as the this value\n     * and the elements of specified array as the arguments.\n     * @param target The function to call.\n     * @param thisArgument The object to be used as the this object.\n     * @param argumentsList An array of argument values to be passed to the function.\n     */\n    function apply<T, A extends readonly any[], R>(\n        target: (this: T, ...args: A) => R,\n        thisArgument: T,\n        argumentsList: Readonly<A>,\n    ): R;\n    function apply(target: Function, thisArgument: any, argumentsList: ArrayLike<any>): any;\n\n    /**\n     * Constructs the target with the elements of specified array as the arguments\n     * and the specified constructor as the \\`new.target\\` value.\n     * @param target The constructor to invoke.\n     * @param argumentsList An array of argument values to be passed to the constructor.\n     * @param newTarget The constructor to be used as the \\`new.target\\` object.\n     */\n    function construct<A extends readonly any[], R>(\n        target: new (...args: A) => R,\n        argumentsList: Readonly<A>,\n        newTarget?: new (...args: any) => any,\n    ): R;\n    function construct(target: Function, argumentsList: ArrayLike<any>, newTarget?: Function): any;\n\n    /**\n     * Adds a property to an object, or modifies attributes of an existing property.\n     * @param target Object on which to add or modify the property. This can be a native JavaScript object\n     *        (that is, a user-defined object or a built in object) or a DOM object.\n     * @param propertyKey The property name.\n     * @param attributes Descriptor for the property. It can be for a data property or an accessor property.\n     */\n    function defineProperty(target: object, propertyKey: PropertyKey, attributes: PropertyDescriptor & ThisType<any>): boolean;\n\n    /**\n     * Removes a property from an object, equivalent to \\`delete target[propertyKey]\\`,\n     * except it won't throw if \\`target[propertyKey]\\` is non-configurable.\n     * @param target Object from which to remove the own property.\n     * @param propertyKey The property name.\n     */\n    function deleteProperty(target: object, propertyKey: PropertyKey): boolean;\n\n    /**\n     * Gets the property of target, equivalent to \\`target[propertyKey]\\` when \\`receiver === target\\`.\n     * @param target Object that contains the property on itself or in its prototype chain.\n     * @param propertyKey The property name.\n     * @param receiver The reference to use as the \\`this\\` value in the getter function,\n     *        if \\`target[propertyKey]\\` is an accessor property.\n     */\n    function get<T extends object, P extends PropertyKey>(\n        target: T,\n        propertyKey: P,\n        receiver?: unknown,\n    ): P extends keyof T ? T[P] : any;\n\n    /**\n     * Gets the own property descriptor of the specified object.\n     * An own property descriptor is one that is defined directly on the object and is not inherited from the object's prototype.\n     * @param target Object that contains the property.\n     * @param propertyKey The property name.\n     */\n    function getOwnPropertyDescriptor<T extends object, P extends PropertyKey>(\n        target: T,\n        propertyKey: P,\n    ): TypedPropertyDescriptor<P extends keyof T ? T[P] : any> | undefined;\n\n    /**\n     * Returns the prototype of an object.\n     * @param target The object that references the prototype.\n     */\n    function getPrototypeOf(target: object): object | null;\n\n    /**\n     * Equivalent to \\`propertyKey in target\\`.\n     * @param target Object that contains the property on itself or in its prototype chain.\n     * @param propertyKey Name of the property.\n     */\n    function has(target: object, propertyKey: PropertyKey): boolean;\n\n    /**\n     * Returns a value that indicates whether new properties can be added to an object.\n     * @param target Object to test.\n     */\n    function isExtensible(target: object): boolean;\n\n    /**\n     * Returns the string and symbol keys of the own properties of an object. The own properties of an object\n     * are those that are defined directly on that object, and are not inherited from the object's prototype.\n     * @param target Object that contains the own properties.\n     */\n    function ownKeys(target: object): (string | symbol)[];\n\n    /**\n     * Prevents the addition of new properties to an object.\n     * @param target Object to make non-extensible.\n     * @return Whether the object has been made non-extensible.\n     */\n    function preventExtensions(target: object): boolean;\n\n    /**\n     * Sets the property of target, equivalent to \\`target[propertyKey] = value\\` when \\`receiver === target\\`.\n     * @param target Object that contains the property on itself or in its prototype chain.\n     * @param propertyKey Name of the property.\n     * @param receiver The reference to use as the \\`this\\` value in the setter function,\n     *        if \\`target[propertyKey]\\` is an accessor property.\n     */\n    function set<T extends object, P extends PropertyKey>(\n        target: T,\n        propertyKey: P,\n        value: P extends keyof T ? T[P] : any,\n        receiver?: any,\n    ): boolean;\n    function set(target: object, propertyKey: PropertyKey, value: any, receiver?: any): boolean;\n\n    /**\n     * Sets the prototype of a specified object o to object proto or null.\n     * @param target The object to change its prototype.\n     * @param proto The value of the new prototype or null.\n     * @return Whether setting the prototype was successful.\n     */\n    function setPrototypeOf(target: object, proto: object | null): boolean;\n}\n`;$i[\"lib.es2015.symbol.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface SymbolConstructor {\n    /**\n     * A reference to the prototype.\n     */\n    readonly prototype: Symbol;\n\n    /**\n     * Returns a new unique Symbol value.\n     * @param  description Description of the new Symbol object.\n     */\n    (description?: string | number): symbol;\n\n    /**\n     * Returns a Symbol object from the global symbol registry matching the given key if found.\n     * Otherwise, returns a new symbol with this key.\n     * @param key key to search for.\n     */\n    for(key: string): symbol;\n\n    /**\n     * Returns a key from the global symbol registry matching the given Symbol if found.\n     * Otherwise, returns a undefined.\n     * @param sym Symbol to find the key for.\n     */\n    keyFor(sym: symbol): string | undefined;\n}\n\ndeclare var Symbol: SymbolConstructor;`;$i[\"lib.es2015.symbol.wellknown.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2015.symbol\" />\n\ninterface SymbolConstructor {\n    /**\n     * A method that determines if a constructor object recognizes an object as one of the\n     * constructor\\u2019s instances. Called by the semantics of the instanceof operator.\n     */\n    readonly hasInstance: unique symbol;\n\n    /**\n     * A Boolean value that if true indicates that an object should flatten to its array elements\n     * by Array.prototype.concat.\n     */\n    readonly isConcatSpreadable: unique symbol;\n\n    /**\n     * A regular expression method that matches the regular expression against a string. Called\n     * by the String.prototype.match method.\n     */\n    readonly match: unique symbol;\n\n    /**\n     * A regular expression method that replaces matched substrings of a string. Called by the\n     * String.prototype.replace method.\n     */\n    readonly replace: unique symbol;\n\n    /**\n     * A regular expression method that returns the index within a string that matches the\n     * regular expression. Called by the String.prototype.search method.\n     */\n    readonly search: unique symbol;\n\n    /**\n     * A function valued property that is the constructor function that is used to create\n     * derived objects.\n     */\n    readonly species: unique symbol;\n\n    /**\n     * A regular expression method that splits a string at the indices that match the regular\n     * expression. Called by the String.prototype.split method.\n     */\n    readonly split: unique symbol;\n\n    /**\n     * A method that converts an object to a corresponding primitive value.\n     * Called by the ToPrimitive abstract operation.\n     */\n    readonly toPrimitive: unique symbol;\n\n    /**\n     * A String value that is used in the creation of the default string description of an object.\n     * Called by the built-in method Object.prototype.toString.\n     */\n    readonly toStringTag: unique symbol;\n\n    /**\n     * An Object whose truthy properties are properties that are excluded from the 'with'\n     * environment bindings of the associated objects.\n     */\n    readonly unscopables: unique symbol;\n}\n\ninterface Symbol {\n    /**\n     * Converts a Symbol object to a symbol.\n     */\n    [Symbol.toPrimitive](hint: string): symbol;\n\n    readonly [Symbol.toStringTag]: string;\n}\n\ninterface Array<T> {\n    /**\n     * Is an object whose properties have the value 'true'\n     * when they will be absent when used in a 'with' statement.\n     */\n    readonly [Symbol.unscopables]: {\n        [K in keyof any[]]?: boolean;\n    };\n}\n\ninterface ReadonlyArray<T> {\n    /**\n     * Is an object whose properties have the value 'true'\n     * when they will be absent when used in a 'with' statement.\n     */\n    readonly [Symbol.unscopables]: {\n        [K in keyof readonly any[]]?: boolean;\n    };\n}\n\ninterface Date {\n    /**\n     * Converts a Date object to a string.\n     */\n    [Symbol.toPrimitive](hint: \"default\"): string;\n    /**\n     * Converts a Date object to a string.\n     */\n    [Symbol.toPrimitive](hint: \"string\"): string;\n    /**\n     * Converts a Date object to a number.\n     */\n    [Symbol.toPrimitive](hint: \"number\"): number;\n    /**\n     * Converts a Date object to a string or number.\n     *\n     * @param hint The strings \"number\", \"string\", or \"default\" to specify what primitive to return.\n     *\n     * @throws {TypeError} If 'hint' was given something other than \"number\", \"string\", or \"default\".\n     * @returns A number if 'hint' was \"number\", a string if 'hint' was \"string\" or \"default\".\n     */\n    [Symbol.toPrimitive](hint: string): string | number;\n}\n\ninterface Map<K, V> {\n    readonly [Symbol.toStringTag]: string;\n}\n\ninterface WeakMap<K extends object, V> {\n    readonly [Symbol.toStringTag]: string;\n}\n\ninterface Set<T> {\n    readonly [Symbol.toStringTag]: string;\n}\n\ninterface WeakSet<T extends object> {\n    readonly [Symbol.toStringTag]: string;\n}\n\ninterface JSON {\n    readonly [Symbol.toStringTag]: string;\n}\n\ninterface Function {\n    /**\n     * Determines whether the given value inherits from this function if this function was used\n     * as a constructor function.\n     *\n     * A constructor function can control which objects are recognized as its instances by\n     * 'instanceof' by overriding this method.\n     */\n    [Symbol.hasInstance](value: any): boolean;\n}\n\ninterface GeneratorFunction {\n    readonly [Symbol.toStringTag]: string;\n}\n\ninterface Math {\n    readonly [Symbol.toStringTag]: string;\n}\n\ninterface Promise<T> {\n    readonly [Symbol.toStringTag]: string;\n}\n\ninterface PromiseConstructor {\n    readonly [Symbol.species]: PromiseConstructor;\n}\n\ninterface RegExp {\n    /**\n     * Matches a string with this regular expression, and returns an array containing the results of\n     * that search.\n     * @param string A string to search within.\n     */\n    [Symbol.match](string: string): RegExpMatchArray | null;\n\n    /**\n     * Replaces text in a string, using this regular expression.\n     * @param string A String object or string literal whose contents matching against\n     *               this regular expression will be replaced\n     * @param replaceValue A String object or string literal containing the text to replace for every\n     *                     successful match of this regular expression.\n     */\n    [Symbol.replace](string: string, replaceValue: string): string;\n\n    /**\n     * Replaces text in a string, using this regular expression.\n     * @param string A String object or string literal whose contents matching against\n     *               this regular expression will be replaced\n     * @param replacer A function that returns the replacement text.\n     */\n    [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string;\n\n    /**\n     * Finds the position beginning first substring match in a regular expression search\n     * using this regular expression.\n     *\n     * @param string The string to search within.\n     */\n    [Symbol.search](string: string): number;\n\n    /**\n     * Returns an array of substrings that were delimited by strings in the original input that\n     * match against this regular expression.\n     *\n     * If the regular expression contains capturing parentheses, then each time this\n     * regular expression matches, the results (including any undefined results) of the\n     * capturing parentheses are spliced.\n     *\n     * @param string string value to split\n     * @param limit if not undefined, the output array is truncated so that it contains no more\n     * than 'limit' elements.\n     */\n    [Symbol.split](string: string, limit?: number): string[];\n}\n\ninterface RegExpConstructor {\n    readonly [Symbol.species]: RegExpConstructor;\n}\n\ninterface String {\n    /**\n     * Matches a string or an object that supports being matched against, and returns an array\n     * containing the results of that search, or null if no matches are found.\n     * @param matcher An object that supports being matched against.\n     */\n    match(matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null;\n\n    /**\n     * Passes a string and {@linkcode replaceValue} to the \\`[Symbol.replace]\\` method on {@linkcode searchValue}. This method is expected to implement its own replacement algorithm.\n     * @param searchValue An object that supports searching for and replacing matches within a string.\n     * @param replaceValue The replacement text.\n     */\n    replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string;\n\n    /**\n     * Replaces text in a string, using an object that supports replacement within a string.\n     * @param searchValue A object can search for and replace matches within a string.\n     * @param replacer A function that returns the replacement text.\n     */\n    replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string;\n\n    /**\n     * Finds the first substring match in a regular expression search.\n     * @param searcher An object which supports searching within a string.\n     */\n    search(searcher: { [Symbol.search](string: string): number; }): number;\n\n    /**\n     * Split a string into substrings using the specified separator and return them as an array.\n     * @param splitter An object that can split a string.\n     * @param limit A value used to limit the number of elements returned in the array.\n     */\n    split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[];\n}\n\ninterface ArrayBuffer {\n    readonly [Symbol.toStringTag]: string;\n}\n\ninterface DataView {\n    readonly [Symbol.toStringTag]: string;\n}\n\ninterface Int8Array {\n    readonly [Symbol.toStringTag]: \"Int8Array\";\n}\n\ninterface Uint8Array {\n    readonly [Symbol.toStringTag]: \"Uint8Array\";\n}\n\ninterface Uint8ClampedArray {\n    readonly [Symbol.toStringTag]: \"Uint8ClampedArray\";\n}\n\ninterface Int16Array {\n    readonly [Symbol.toStringTag]: \"Int16Array\";\n}\n\ninterface Uint16Array {\n    readonly [Symbol.toStringTag]: \"Uint16Array\";\n}\n\ninterface Int32Array {\n    readonly [Symbol.toStringTag]: \"Int32Array\";\n}\n\ninterface Uint32Array {\n    readonly [Symbol.toStringTag]: \"Uint32Array\";\n}\n\ninterface Float32Array {\n    readonly [Symbol.toStringTag]: \"Float32Array\";\n}\n\ninterface Float64Array {\n    readonly [Symbol.toStringTag]: \"Float64Array\";\n}\n\ninterface ArrayConstructor {\n    readonly [Symbol.species]: ArrayConstructor;\n}\ninterface MapConstructor {\n    readonly [Symbol.species]: MapConstructor;\n}\ninterface SetConstructor {\n    readonly [Symbol.species]: SetConstructor;\n}\ninterface ArrayBufferConstructor {\n    readonly [Symbol.species]: ArrayBufferConstructor;\n}\n`;$i[\"lib.es2016.array.include.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface Array<T> {\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: T, fromIndex?: number): boolean;\n}\n\ninterface ReadonlyArray<T> {\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: T, fromIndex?: number): boolean;\n}\n\ninterface Int8Array {\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: number, fromIndex?: number): boolean;\n}\n\ninterface Uint8Array {\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: number, fromIndex?: number): boolean;\n}\n\ninterface Uint8ClampedArray {\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: number, fromIndex?: number): boolean;\n}\n\ninterface Int16Array {\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: number, fromIndex?: number): boolean;\n}\n\ninterface Uint16Array {\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: number, fromIndex?: number): boolean;\n}\n\ninterface Int32Array {\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: number, fromIndex?: number): boolean;\n}\n\ninterface Uint32Array {\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: number, fromIndex?: number): boolean;\n}\n\ninterface Float32Array {\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: number, fromIndex?: number): boolean;\n}\n\ninterface Float64Array {\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: number, fromIndex?: number): boolean;\n}`;$i[\"lib.es2016.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2015\" />\n/// <reference lib=\"es2016.array.include\" />`;$i[\"lib.es2016.full.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2016\" />\n/// <reference lib=\"dom\" />\n/// <reference lib=\"webworker.importscripts\" />\n/// <reference lib=\"scripthost\" />\n/// <reference lib=\"dom.iterable\" />`;$i[\"lib.es2017.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2016\" />\n/// <reference lib=\"es2017.object\" />\n/// <reference lib=\"es2017.sharedmemory\" />\n/// <reference lib=\"es2017.string\" />\n/// <reference lib=\"es2017.intl\" />\n/// <reference lib=\"es2017.typedarrays\" />\n`;$i[\"lib.es2017.full.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2017\" />\n/// <reference lib=\"dom\" />\n/// <reference lib=\"webworker.importscripts\" />\n/// <reference lib=\"scripthost\" />\n/// <reference lib=\"dom.iterable\" />`;$i[\"lib.es2017.intl.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ndeclare namespace Intl {\n\n    interface DateTimeFormatPartTypesRegistry {\n        day: any\n        dayPeriod: any\n        era: any\n        hour: any\n        literal: any\n        minute: any\n        month: any\n        second: any\n        timeZoneName: any\n        weekday: any\n        year: any\n    }\n\n    type DateTimeFormatPartTypes = keyof DateTimeFormatPartTypesRegistry;\n\n    interface DateTimeFormatPart {\n        type: DateTimeFormatPartTypes;\n        value: string;\n    }\n\n    interface DateTimeFormat {\n        formatToParts(date?: Date | number): DateTimeFormatPart[];\n    }\n}\n`;$i[\"lib.es2017.object.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface ObjectConstructor {\n    /**\n     * Returns an array of values of the enumerable properties of an object\n     * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\n     */\n    values<T>(o: { [s: string]: T } | ArrayLike<T>): T[];\n\n    /**\n     * Returns an array of values of the enumerable properties of an object\n     * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\n     */\n    values(o: {}): any[];\n\n    /**\n     * Returns an array of key/values of the enumerable properties of an object\n     * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\n     */\n    entries<T>(o: { [s: string]: T } | ArrayLike<T>): [string, T][];\n\n    /**\n     * Returns an array of key/values of the enumerable properties of an object\n     * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\n     */\n    entries(o: {}): [string, any][];\n\n    /**\n     * Returns an object containing all own property descriptors of an object\n     * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\n     */\n    getOwnPropertyDescriptors<T>(o: T): {[P in keyof T]: TypedPropertyDescriptor<T[P]>} & { [x: string]: PropertyDescriptor };\n}\n`;$i[\"lib.es2017.sharedmemory.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2015.symbol\" />\n/// <reference lib=\"es2015.symbol.wellknown\" />\n\ninterface SharedArrayBuffer {\n    /**\n     * Read-only. The length of the ArrayBuffer (in bytes).\n     */\n    readonly byteLength: number;\n\n    /**\n     * Returns a section of an SharedArrayBuffer.\n     */\n    slice(begin: number, end?: number): SharedArrayBuffer;\n    readonly [Symbol.species]: SharedArrayBuffer;\n    readonly [Symbol.toStringTag]: \"SharedArrayBuffer\";\n}\n\ninterface SharedArrayBufferConstructor {\n    readonly prototype: SharedArrayBuffer;\n    new (byteLength: number): SharedArrayBuffer;\n}\ndeclare var SharedArrayBuffer: SharedArrayBufferConstructor;\n\ninterface ArrayBufferTypes {\n    SharedArrayBuffer: SharedArrayBuffer;\n}\n\ninterface Atomics {\n    /**\n     * Adds a value to the value at the given position in the array, returning the original value.\n     * Until this atomic operation completes, any other read or write operation against the array\n     * will block.\n     */\n    add(typedArray: Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array, index: number, value: number): number;\n\n    /**\n     * Stores the bitwise AND of a value with the value at the given position in the array,\n     * returning the original value. Until this atomic operation completes, any other read or\n     * write operation against the array will block.\n     */\n    and(typedArray: Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array, index: number, value: number): number;\n\n    /**\n     * Replaces the value at the given position in the array if the original value equals the given\n     * expected value, returning the original value. Until this atomic operation completes, any\n     * other read or write operation against the array will block.\n     */\n    compareExchange(typedArray: Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array, index: number, expectedValue: number, replacementValue: number): number;\n\n    /**\n     * Replaces the value at the given position in the array, returning the original value. Until\n     * this atomic operation completes, any other read or write operation against the array will\n     * block.\n     */\n    exchange(typedArray: Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array, index: number, value: number): number;\n\n    /**\n     * Returns a value indicating whether high-performance algorithms can use atomic operations\n     * (\\`true\\`) or must use locks (\\`false\\`) for the given number of bytes-per-element of a typed\n     * array.\n     */\n    isLockFree(size: number): boolean;\n\n    /**\n     * Returns the value at the given position in the array. Until this atomic operation completes,\n     * any other read or write operation against the array will block.\n     */\n    load(typedArray: Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array, index: number): number;\n\n    /**\n     * Stores the bitwise OR of a value with the value at the given position in the array,\n     * returning the original value. Until this atomic operation completes, any other read or write\n     * operation against the array will block.\n     */\n    or(typedArray: Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array, index: number, value: number): number;\n\n    /**\n     * Stores a value at the given position in the array, returning the new value. Until this\n     * atomic operation completes, any other read or write operation against the array will block.\n     */\n    store(typedArray: Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array, index: number, value: number): number;\n\n    /**\n     * Subtracts a value from the value at the given position in the array, returning the original\n     * value. Until this atomic operation completes, any other read or write operation against the\n     * array will block.\n     */\n    sub(typedArray: Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array, index: number, value: number): number;\n\n    /**\n     * If the value at the given position in the array is equal to the provided value, the current\n     * agent is put to sleep causing execution to suspend until the timeout expires (returning\n     * \\`\"timed-out\"\\`) or until the agent is awoken (returning \\`\"ok\"\\`); otherwise, returns\n     * \\`\"not-equal\"\\`.\n     */\n    wait(typedArray: Int32Array, index: number, value: number, timeout?: number): \"ok\" | \"not-equal\" | \"timed-out\";\n\n    /**\n     * Wakes up sleeping agents that are waiting on the given index of the array, returning the\n     * number of agents that were awoken.\n     * @param typedArray A shared Int32Array.\n     * @param index The position in the typedArray to wake up on.\n     * @param count The number of sleeping agents to notify. Defaults to +Infinity.\n     */\n    notify(typedArray: Int32Array, index: number, count?: number): number;\n\n    /**\n     * Stores the bitwise XOR of a value with the value at the given position in the array,\n     * returning the original value. Until this atomic operation completes, any other read or write\n     * operation against the array will block.\n     */\n    xor(typedArray: Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array, index: number, value: number): number;\n\n    readonly [Symbol.toStringTag]: \"Atomics\";\n}\n\ndeclare var Atomics: Atomics;\n`;$i[\"lib.es2017.string.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface String {\n    /**\n     * Pads the current string with a given string (possibly repeated) so that the resulting string reaches a given length.\n     * The padding is applied from the start (left) of the current string.\n     *\n     * @param maxLength The length of the resulting string once the current string has been padded.\n     *        If this parameter is smaller than the current string's length, the current string will be returned as it is.\n     *\n     * @param fillString The string to pad the current string with.\n     *        If this string is too long, it will be truncated and the left-most part will be applied.\n     *        The default value for this parameter is \" \" (U+0020).\n     */\n    padStart(maxLength: number, fillString?: string): string;\n\n    /**\n     * Pads the current string with a given string (possibly repeated) so that the resulting string reaches a given length.\n     * The padding is applied from the end (right) of the current string.\n     *\n     * @param maxLength The length of the resulting string once the current string has been padded.\n     *        If this parameter is smaller than the current string's length, the current string will be returned as it is.\n     *\n     * @param fillString The string to pad the current string with.\n     *        If this string is too long, it will be truncated and the left-most part will be applied.\n     *        The default value for this parameter is \" \" (U+0020).\n     */\n    padEnd(maxLength: number, fillString?: string): string;\n}\n`;$i[\"lib.es2017.typedarrays.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface Int8ArrayConstructor {\n    new (): Int8Array;\n}\n\ninterface Uint8ArrayConstructor {\n    new (): Uint8Array;\n}\n\ninterface Uint8ClampedArrayConstructor {\n    new (): Uint8ClampedArray;\n}\n\ninterface Int16ArrayConstructor {\n    new (): Int16Array;\n}\n\ninterface Uint16ArrayConstructor {\n    new (): Uint16Array;\n}\n\ninterface Int32ArrayConstructor {\n    new (): Int32Array;\n}\n\ninterface Uint32ArrayConstructor {\n    new (): Uint32Array;\n}\n\ninterface Float32ArrayConstructor {\n    new (): Float32Array;\n}\n\ninterface Float64ArrayConstructor {\n    new (): Float64Array;\n}\n`;$i[\"lib.es2018.asyncgenerator.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2018.asynciterable\" />\n\ninterface AsyncGenerator<T = unknown, TReturn = any, TNext = unknown> extends AsyncIterator<T, TReturn, TNext> {\n    // NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places.\n    next(...args: [] | [TNext]): Promise<IteratorResult<T, TReturn>>;\n    return(value: TReturn | PromiseLike<TReturn>): Promise<IteratorResult<T, TReturn>>;\n    throw(e: any): Promise<IteratorResult<T, TReturn>>;\n    [Symbol.asyncIterator](): AsyncGenerator<T, TReturn, TNext>;\n}\n\ninterface AsyncGeneratorFunction {\n    /**\n     * Creates a new AsyncGenerator object.\n     * @param args A list of arguments the function accepts.\n     */\n    new (...args: any[]): AsyncGenerator;\n    /**\n     * Creates a new AsyncGenerator object.\n     * @param args A list of arguments the function accepts.\n     */\n    (...args: any[]): AsyncGenerator;\n    /**\n     * The length of the arguments.\n     */\n    readonly length: number;\n    /**\n     * Returns the name of the function.\n     */\n    readonly name: string;\n    /**\n     * A reference to the prototype.\n     */\n    readonly prototype: AsyncGenerator;\n}\n\ninterface AsyncGeneratorFunctionConstructor {\n    /**\n     * Creates a new AsyncGenerator function.\n     * @param args A list of arguments the function accepts.\n     */\n    new (...args: string[]): AsyncGeneratorFunction;\n    /**\n     * Creates a new AsyncGenerator function.\n     * @param args A list of arguments the function accepts.\n     */\n    (...args: string[]): AsyncGeneratorFunction;\n    /**\n     * The length of the arguments.\n     */\n    readonly length: number;\n    /**\n     * Returns the name of the function.\n     */\n    readonly name: string;\n    /**\n     * A reference to the prototype.\n     */\n    readonly prototype: AsyncGeneratorFunction;\n}\n`;$i[\"lib.es2018.asynciterable.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2015.symbol\" />\n/// <reference lib=\"es2015.iterable\" />\n\ninterface SymbolConstructor {\n    /**\n     * A method that returns the default async iterator for an object. Called by the semantics of\n     * the for-await-of statement.\n     */\n    readonly asyncIterator: unique symbol;\n}\n\ninterface AsyncIterator<T, TReturn = any, TNext = undefined> {\n    // NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places.\n    next(...args: [] | [TNext]): Promise<IteratorResult<T, TReturn>>;\n    return?(value?: TReturn | PromiseLike<TReturn>): Promise<IteratorResult<T, TReturn>>;\n    throw?(e?: any): Promise<IteratorResult<T, TReturn>>;\n}\n\ninterface AsyncIterable<T> {\n    [Symbol.asyncIterator](): AsyncIterator<T>;\n}\n\ninterface AsyncIterableIterator<T> extends AsyncIterator<T> {\n    [Symbol.asyncIterator](): AsyncIterableIterator<T>;\n}`;$i[\"lib.es2018.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2017\" />\n/// <reference lib=\"es2018.asynciterable\" />\n/// <reference lib=\"es2018.asyncgenerator\" />\n/// <reference lib=\"es2018.promise\" />\n/// <reference lib=\"es2018.regexp\" />\n/// <reference lib=\"es2018.intl\" />\n`;$i[\"lib.es2018.full.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2018\" />\n/// <reference lib=\"dom\" />\n/// <reference lib=\"webworker.importscripts\" />\n/// <reference lib=\"scripthost\" />\n/// <reference lib=\"dom.iterable\" />`;$i[\"lib.es2018.intl.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ndeclare namespace Intl {\n\n    // http://cldr.unicode.org/index/cldr-spec/plural-rules#TOC-Determining-Plural-Categories\n    type LDMLPluralRule = \"zero\" | \"one\" | \"two\" | \"few\" | \"many\" | \"other\";\n    type PluralRuleType = \"cardinal\" | \"ordinal\";\n\n    interface PluralRulesOptions {\n        localeMatcher?: \"lookup\" | \"best fit\" | undefined;\n        type?: PluralRuleType | undefined;\n        minimumIntegerDigits?: number | undefined;\n        minimumFractionDigits?: number | undefined;\n        maximumFractionDigits?: number | undefined;\n        minimumSignificantDigits?: number | undefined;\n        maximumSignificantDigits?: number | undefined;\n    }\n\n    interface ResolvedPluralRulesOptions {\n        locale: string;\n        pluralCategories: LDMLPluralRule[];\n        type: PluralRuleType;\n        minimumIntegerDigits: number;\n        minimumFractionDigits: number;\n        maximumFractionDigits: number;\n        minimumSignificantDigits?: number;\n        maximumSignificantDigits?: number;\n    }\n\n    interface PluralRules {\n        resolvedOptions(): ResolvedPluralRulesOptions;\n        select(n: number): LDMLPluralRule;\n    }\n\n    const PluralRules: {\n        new (locales?: string | string[], options?: PluralRulesOptions): PluralRules;\n        (locales?: string | string[], options?: PluralRulesOptions): PluralRules;\n\n        supportedLocalesOf(locales: string | string[], options?: { localeMatcher?: \"lookup\" | \"best fit\" }): string[];\n    };\n\n    // We can only have one definition for 'type' in TypeScript, and so you can learn where the keys come from here:\n    type ES2018NumberFormatPartType = \"literal\" | \"nan\" | \"infinity\" | \"percent\" | \"integer\" | \"group\" | \"decimal\" | \"fraction\" | \"plusSign\" | \"minusSign\" | \"percentSign\" | \"currency\" | \"code\" | \"symbol\" | \"name\";\n    type ES2020NumberFormatPartType = \"compact\" | \"exponentInteger\" | \"exponentMinusSign\" | \"exponentSeparator\" | \"unit\" | \"unknown\";\n    type NumberFormatPartTypes = ES2018NumberFormatPartType | ES2020NumberFormatPartType;\n\n    interface NumberFormatPart {\n        type: NumberFormatPartTypes;\n        value: string;\n    }\n\n    interface NumberFormat {\n        formatToParts(number?: number | bigint): NumberFormatPart[];\n    }\n}\n`;$i[\"lib.es2018.promise.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/**\n * Represents the completion of an asynchronous operation\n */\ninterface Promise<T> {\n    /**\n     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n     * resolved value cannot be modified from the callback.\n     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n     * @returns A Promise for the completion of the callback.\n     */\n    finally(onfinally?: (() => void) | undefined | null): Promise<T>\n}\n`;$i[\"lib.es2018.regexp.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface RegExpMatchArray {\n    groups?: {\n        [key: string]: string\n    }\n}\n\ninterface RegExpExecArray {\n    groups?: {\n        [key: string]: string\n    }\n}\n\ninterface RegExp {\n    /**\n     * Returns a Boolean value indicating the state of the dotAll flag (s) used with a regular expression.\n     * Default is false. Read-only.\n     */\n    readonly dotAll: boolean;\n}`;$i[\"lib.es2019.array.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ntype FlatArray<Arr, Depth extends number> = {\n    \"done\": Arr,\n    \"recur\": Arr extends ReadonlyArray<infer InnerArr>\n        ? FlatArray<InnerArr, [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]>\n        : Arr\n}[Depth extends -1 ? \"done\" : \"recur\"];\n\ninterface ReadonlyArray<T> {\n\n    /**\n     * Calls a defined callback function on each element of an array. Then, flattens the result into\n     * a new array.\n     * This is identical to a map followed by flat with depth 1.\n     *\n     * @param callback A function that accepts up to three arguments. The flatMap method calls the\n     * callback function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callback function. If\n     * thisArg is omitted, undefined is used as the this value.\n     */\n    flatMap<U, This = undefined> (\n        callback: (this: This, value: T, index: number, array: T[]) => U | ReadonlyArray<U>,\n        thisArg?: This\n    ): U[]\n\n\n    /**\n     * Returns a new array with all sub-array elements concatenated into it recursively up to the\n     * specified depth.\n     *\n     * @param depth The maximum recursion depth\n     */\n    flat<A, D extends number = 1>(\n        this: A,\n        depth?: D\n    ): FlatArray<A, D>[]\n  }\n\ninterface Array<T> {\n\n    /**\n     * Calls a defined callback function on each element of an array. Then, flattens the result into\n     * a new array.\n     * This is identical to a map followed by flat with depth 1.\n     *\n     * @param callback A function that accepts up to three arguments. The flatMap method calls the\n     * callback function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callback function. If\n     * thisArg is omitted, undefined is used as the this value.\n     */\n    flatMap<U, This = undefined> (\n        callback: (this: This, value: T, index: number, array: T[]) => U | ReadonlyArray<U>,\n        thisArg?: This\n    ): U[]\n\n    /**\n     * Returns a new array with all sub-array elements concatenated into it recursively up to the\n     * specified depth.\n     *\n     * @param depth The maximum recursion depth\n     */\n    flat<A, D extends number = 1>(\n        this: A,\n        depth?: D\n    ): FlatArray<A, D>[]\n}\n`;$i[\"lib.es2019.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2018\" />\n/// <reference lib=\"es2019.array\" />\n/// <reference lib=\"es2019.object\" />\n/// <reference lib=\"es2019.string\" />\n/// <reference lib=\"es2019.symbol\" />\n/// <reference lib=\"es2019.intl\" />\n`;$i[\"lib.es2019.full.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2019\" />\n/// <reference lib=\"dom\" />\n/// <reference lib=\"webworker.importscripts\" />\n/// <reference lib=\"scripthost\" />\n/// <reference lib=\"dom.iterable\" />\n`;$i[\"lib.es2019.intl.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ndeclare namespace Intl {\n    interface DateTimeFormatPartTypesRegistry {\n        unknown: any\n    }\n}\n`;$i[\"lib.es2019.object.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2015.iterable\" />\n\ninterface ObjectConstructor {\n    /**\n     * Returns an object created by key-value entries for properties and methods\n     * @param entries An iterable object that contains key-value entries for properties and methods.\n     */\n    fromEntries<T = any>(entries: Iterable<readonly [PropertyKey, T]>): { [k: string]: T };\n\n    /**\n     * Returns an object created by key-value entries for properties and methods\n     * @param entries An iterable object that contains key-value entries for properties and methods.\n     */\n    fromEntries(entries: Iterable<readonly any[]>): any;\n}\n`;$i[\"lib.es2019.string.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface String {\n    /** Removes the trailing white space and line terminator characters from a string. */\n    trimEnd(): string;\n\n    /** Removes the leading white space and line terminator characters from a string. */\n    trimStart(): string;\n\n    /**\n     * Removes the leading white space and line terminator characters from a string.\n     * @deprecated A legacy feature for browser compatibility. Use \\`trimStart\\` instead\n     */\n    trimLeft(): string;\n\n    /**\n     * Removes the trailing white space and line terminator characters from a string.\n     * @deprecated A legacy feature for browser compatibility. Use \\`trimEnd\\` instead\n     */\n    trimRight(): string;\n}\n`;$i[\"lib.es2019.symbol.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface Symbol {\n    /**\n     * Expose the [[Description]] internal slot of a symbol directly.\n     */\n    readonly description: string | undefined;\n}\n`;$i[\"lib.es2020.bigint.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2020.intl\" />\n\ninterface BigIntToLocaleStringOptions {\n    /**\n     * The locale matching algorithm to use.The default is \"best fit\". For information about this option, see the {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_negotiation Intl page}.\n     */\n    localeMatcher?: string;\n    /**\n     * The formatting style to use , the default is \"decimal\".\n     */\n    style?: string;\n\n    numberingSystem?: string;\n    /**\n     * The unit to use in unit formatting, Possible values are core unit identifiers, defined in UTS #35, Part 2, Section 6. A subset of units from the full list was selected for use in ECMAScript. Pairs of simple units can be concatenated with \"-per-\" to make a compound unit. There is no default value; if the style is \"unit\", the unit property must be provided.\n     */\n    unit?: string;\n\n    /**\n     * The unit formatting style to use in unit formatting, the defaults is \"short\".\n     */\n    unitDisplay?: string;\n\n    /**\n     * The currency to use in currency formatting. Possible values are the ISO 4217 currency codes, such as \"USD\" for the US dollar, \"EUR\" for the euro, or \"CNY\" for the Chinese RMB \\u2014 see the Current currency & funds code list. There is no default value; if the style is \"currency\", the currency property must be provided. It is only used when [[Style]] has the value \"currency\".\n     */\n    currency?: string;\n\n    /**\n     * How to display the currency in currency formatting. It is only used when [[Style]] has the value \"currency\". The default is \"symbol\".\n     *\n     * \"symbol\" to use a localized currency symbol such as \\u20AC,\n     *\n     * \"code\" to use the ISO currency code,\n     *\n     * \"name\" to use a localized currency name such as \"dollar\"\n     */\n    currencyDisplay?: string;\n\n    /**\n     * Whether to use grouping separators, such as thousands separators or thousand/lakh/crore separators. The default is true.\n     */\n    useGrouping?: boolean;\n\n    /**\n     * The minimum number of integer digits to use. Possible values are from 1 to 21; the default is 1.\n     */\n    minimumIntegerDigits?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21;\n\n    /**\n     * The minimum number of fraction digits to use. Possible values are from 0 to 20; the default for plain number and percent formatting is 0; the default for currency formatting is the number of minor unit digits provided by the {@link http://www.currency-iso.org/en/home/tables/table-a1.html ISO 4217 currency codes list} (2 if the list doesn't provide that information).\n     */\n    minimumFractionDigits?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20;\n\n    /**\n     * The maximum number of fraction digits to use. Possible values are from 0 to 20; the default for plain number formatting is the larger of minimumFractionDigits and 3; the default for currency formatting is the larger of minimumFractionDigits and the number of minor unit digits provided by the {@link http://www.currency-iso.org/en/home/tables/table-a1.html ISO 4217 currency codes list} (2 if the list doesn't provide that information); the default for percent formatting is the larger of minimumFractionDigits and 0.\n     */\n    maximumFractionDigits?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20;\n\n    /**\n     * The minimum number of significant digits to use. Possible values are from 1 to 21; the default is 1.\n     */\n    minimumSignificantDigits?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21;\n\n    /**\n     * The maximum number of significant digits to use. Possible values are from 1 to 21; the default is 21.\n     */\n    maximumSignificantDigits?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21;\n\n    /**\n     * The formatting that should be displayed for the number, the defaults is \"standard\"\n     *\n     *     \"standard\" plain number formatting\n     *\n     *     \"scientific\" return the order-of-magnitude for formatted number.\n     *\n     *     \"engineering\" return the exponent of ten when divisible by three\n     *\n     *     \"compact\" string representing exponent, defaults is using the \"short\" form\n     */\n    notation?: string;\n\n    /**\n     * used only when notation is \"compact\"\n     */\n    compactDisplay?: string;\n}\n\ninterface BigInt {\n    /**\n     * Returns a string representation of an object.\n     * @param radix Specifies a radix for converting numeric values to strings.\n     */\n    toString(radix?: number): string;\n\n    /** Returns a string representation appropriate to the host environment's current locale. */\n    toLocaleString(locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): bigint;\n\n    readonly [Symbol.toStringTag]: \"BigInt\";\n}\n\ninterface BigIntConstructor {\n    (value: bigint | boolean | number | string): bigint;\n    readonly prototype: BigInt;\n\n    /**\n     * Interprets the low bits of a BigInt as a 2's-complement signed integer.\n     * All higher bits are discarded.\n     * @param bits The number of low bits to use\n     * @param int The BigInt whose bits to extract\n     */\n    asIntN(bits: number, int: bigint): bigint;\n    /**\n     * Interprets the low bits of a BigInt as an unsigned integer.\n     * All higher bits are discarded.\n     * @param bits The number of low bits to use\n     * @param int The BigInt whose bits to extract\n     */\n    asUintN(bits: number, int: bigint): bigint;\n}\n\ndeclare var BigInt: BigIntConstructor;\n\n/**\n * A typed array of 64-bit signed integer values. The contents are initialized to 0. If the\n * requested number of bytes could not be allocated, an exception is raised.\n */\ninterface BigInt64Array {\n    /** The size in bytes of each element in the array. */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /** The ArrayBuffer instance referenced by the array. */\n    readonly buffer: ArrayBufferLike;\n\n    /** The length in bytes of the array. */\n    readonly byteLength: number;\n\n    /** The offset in bytes of the array. */\n    readonly byteOffset: number;\n\n    /**\n     * Returns the this object after copying a section of the array identified by start and end\n     * to the same array starting at position target\n     * @param target If target is negative, it is treated as length+target where length is the\n     * length of the array.\n     * @param start If start is negative, it is treated as length+start. If end is negative, it\n     * is treated as length+end.\n     * @param end If not specified, length of the this object is used as its default value.\n     */\n    copyWithin(target: number, start: number, end?: number): this;\n\n    /** Yields index, value pairs for every entry in the array. */\n    entries(): IterableIterator<[number, bigint]>;\n\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns false,\n     * or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: bigint, index: number, array: BigInt64Array) => boolean, thisArg?: any): boolean;\n\n    /**\n     * Changes all array elements from \\`start\\` to \\`end\\` index to a static \\`value\\` and returns the modified array\n     * @param value value to fill array section with\n     * @param start index to start filling the array at. If start is negative, it is treated as\n     * length+start where length is the length of the array.\n     * @param end index to stop filling the array at. If end is negative, it is treated as\n     * length+end.\n     */\n    fill(value: bigint, start?: number, end?: number): this;\n\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls\n     * the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: bigint, index: number, array: BigInt64Array) => any, thisArg?: any): BigInt64Array;\n\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find(predicate: (value: bigint, index: number, array: BigInt64Array) => boolean, thisArg?: any): bigint | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: bigint, index: number, array: BigInt64Array) => boolean, thisArg?: any): number;\n\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn A function that accepts up to three arguments. forEach calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: bigint, index: number, array: BigInt64Array) => void, thisArg?: any): void;\n\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: bigint, fromIndex?: number): boolean;\n\n    /**\n     * Returns the index of the first occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    indexOf(searchElement: bigint, fromIndex?: number): number;\n\n    /**\n     * Adds all the elements of an array separated by the specified separator string.\n     * @param separator A string used to separate one element of an array from the next in the\n     * resulting String. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n\n    /** Yields each index in the array. */\n    keys(): IterableIterator<number>;\n\n    /**\n     * Returns the index of the last occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    lastIndexOf(searchElement: bigint, fromIndex?: number): number;\n\n    /** The length of the array. */\n    readonly length: number;\n\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that\n     * contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    map(callbackfn: (value: bigint, index: number, array: BigInt64Array) => bigint, thisArg?: any): BigInt64Array;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: bigint, currentValue: bigint, currentIndex: number, array: BigInt64Array) => bigint): bigint;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: bigint, currentIndex: number, array: BigInt64Array) => U, initialValue: U): U;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an\n     * argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: bigint, currentValue: bigint, currentIndex: number, array: BigInt64Array) => bigint): bigint;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: bigint, currentIndex: number, array: BigInt64Array) => U, initialValue: U): U;\n\n    /** Reverses the elements in the array. */\n    reverse(): this;\n\n    /**\n     * Sets a value or an array of values.\n     * @param array A typed or untyped array of values to set.\n     * @param offset The index in the current array at which the values are to be written.\n     */\n    set(array: ArrayLike<bigint>, offset?: number): void;\n\n    /**\n     * Returns a section of an array.\n     * @param start The beginning of the specified portion of the array.\n     * @param end The end of the specified portion of the array.\n     */\n    slice(start?: number, end?: number): BigInt64Array;\n\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls the\n     * predicate function for each element in the array until the predicate returns true, or until\n     * the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: bigint, index: number, array: BigInt64Array) => boolean, thisArg?: any): boolean;\n\n    /**\n     * Sorts the array.\n     * @param compareFn The function used to determine the order of the elements. If omitted, the elements are sorted in ascending order.\n     */\n    sort(compareFn?: (a: bigint, b: bigint) => number | bigint): this;\n\n    /**\n     * Gets a new BigInt64Array view of the ArrayBuffer store for this array, referencing the elements\n     * at begin, inclusive, up to end, exclusive.\n     * @param begin The index of the beginning of the array.\n     * @param end The index of the end of the array.\n     */\n    subarray(begin?: number, end?: number): BigInt64Array;\n\n    /** Converts the array to a string by using the current locale. */\n    toLocaleString(): string;\n\n    /** Returns a string representation of the array. */\n    toString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): BigInt64Array;\n\n    /** Yields each value in the array. */\n    values(): IterableIterator<bigint>;\n\n    [Symbol.iterator](): IterableIterator<bigint>;\n\n    readonly [Symbol.toStringTag]: \"BigInt64Array\";\n\n    [index: number]: bigint;\n}\n\ninterface BigInt64ArrayConstructor {\n    readonly prototype: BigInt64Array;\n    new(length?: number): BigInt64Array;\n    new(array: Iterable<bigint>): BigInt64Array;\n    new(buffer: ArrayBufferLike, byteOffset?: number, length?: number): BigInt64Array;\n\n    /** The size in bytes of each element in the array. */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * Returns a new array from a set of elements.\n     * @param items A set of elements to include in the new array object.\n     */\n    of(...items: bigint[]): BigInt64Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from(arrayLike: ArrayLike<bigint>): BigInt64Array;\n    from<U>(arrayLike: ArrayLike<U>, mapfn: (v: U, k: number) => bigint, thisArg?: any): BigInt64Array;\n}\n\ndeclare var BigInt64Array: BigInt64ArrayConstructor;\n\n/**\n * A typed array of 64-bit unsigned integer values. The contents are initialized to 0. If the\n * requested number of bytes could not be allocated, an exception is raised.\n */\ninterface BigUint64Array {\n    /** The size in bytes of each element in the array. */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /** The ArrayBuffer instance referenced by the array. */\n    readonly buffer: ArrayBufferLike;\n\n    /** The length in bytes of the array. */\n    readonly byteLength: number;\n\n    /** The offset in bytes of the array. */\n    readonly byteOffset: number;\n\n    /**\n     * Returns the this object after copying a section of the array identified by start and end\n     * to the same array starting at position target\n     * @param target If target is negative, it is treated as length+target where length is the\n     * length of the array.\n     * @param start If start is negative, it is treated as length+start. If end is negative, it\n     * is treated as length+end.\n     * @param end If not specified, length of the this object is used as its default value.\n     */\n    copyWithin(target: number, start: number, end?: number): this;\n\n    /** Yields index, value pairs for every entry in the array. */\n    entries(): IterableIterator<[number, bigint]>;\n\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns false,\n     * or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: bigint, index: number, array: BigUint64Array) => boolean, thisArg?: any): boolean;\n\n    /**\n     * Changes all array elements from \\`start\\` to \\`end\\` index to a static \\`value\\` and returns the modified array\n     * @param value value to fill array section with\n     * @param start index to start filling the array at. If start is negative, it is treated as\n     * length+start where length is the length of the array.\n     * @param end index to stop filling the array at. If end is negative, it is treated as\n     * length+end.\n     */\n    fill(value: bigint, start?: number, end?: number): this;\n\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls\n     * the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: bigint, index: number, array: BigUint64Array) => any, thisArg?: any): BigUint64Array;\n\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find(predicate: (value: bigint, index: number, array: BigUint64Array) => boolean, thisArg?: any): bigint | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: bigint, index: number, array: BigUint64Array) => boolean, thisArg?: any): number;\n\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn A function that accepts up to three arguments. forEach calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: bigint, index: number, array: BigUint64Array) => void, thisArg?: any): void;\n\n    /**\n     * Determines whether an array includes a certain element, returning true or false as appropriate.\n     * @param searchElement The element to search for.\n     * @param fromIndex The position in this array at which to begin searching for searchElement.\n     */\n    includes(searchElement: bigint, fromIndex?: number): boolean;\n\n    /**\n     * Returns the index of the first occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    indexOf(searchElement: bigint, fromIndex?: number): number;\n\n    /**\n     * Adds all the elements of an array separated by the specified separator string.\n     * @param separator A string used to separate one element of an array from the next in the\n     * resulting String. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n\n    /** Yields each index in the array. */\n    keys(): IterableIterator<number>;\n\n    /**\n     * Returns the index of the last occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    lastIndexOf(searchElement: bigint, fromIndex?: number): number;\n\n    /** The length of the array. */\n    readonly length: number;\n\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that\n     * contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    map(callbackfn: (value: bigint, index: number, array: BigUint64Array) => bigint, thisArg?: any): BigUint64Array;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: bigint, currentValue: bigint, currentIndex: number, array: BigUint64Array) => bigint): bigint;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: bigint, currentIndex: number, array: BigUint64Array) => U, initialValue: U): U;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an\n     * argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: bigint, currentValue: bigint, currentIndex: number, array: BigUint64Array) => bigint): bigint;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: bigint, currentIndex: number, array: BigUint64Array) => U, initialValue: U): U;\n\n    /** Reverses the elements in the array. */\n    reverse(): this;\n\n    /**\n     * Sets a value or an array of values.\n     * @param array A typed or untyped array of values to set.\n     * @param offset The index in the current array at which the values are to be written.\n     */\n    set(array: ArrayLike<bigint>, offset?: number): void;\n\n    /**\n     * Returns a section of an array.\n     * @param start The beginning of the specified portion of the array.\n     * @param end The end of the specified portion of the array.\n     */\n    slice(start?: number, end?: number): BigUint64Array;\n\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls the\n     * predicate function for each element in the array until the predicate returns true, or until\n     * the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: bigint, index: number, array: BigUint64Array) => boolean, thisArg?: any): boolean;\n\n    /**\n     * Sorts the array.\n     * @param compareFn The function used to determine the order of the elements. If omitted, the elements are sorted in ascending order.\n     */\n    sort(compareFn?: (a: bigint, b: bigint) => number | bigint): this;\n\n    /**\n     * Gets a new BigUint64Array view of the ArrayBuffer store for this array, referencing the elements\n     * at begin, inclusive, up to end, exclusive.\n     * @param begin The index of the beginning of the array.\n     * @param end The index of the end of the array.\n     */\n    subarray(begin?: number, end?: number): BigUint64Array;\n\n    /** Converts the array to a string by using the current locale. */\n    toLocaleString(): string;\n\n    /** Returns a string representation of the array. */\n    toString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): BigUint64Array;\n\n    /** Yields each value in the array. */\n    values(): IterableIterator<bigint>;\n\n    [Symbol.iterator](): IterableIterator<bigint>;\n\n    readonly [Symbol.toStringTag]: \"BigUint64Array\";\n\n    [index: number]: bigint;\n}\n\ninterface BigUint64ArrayConstructor {\n    readonly prototype: BigUint64Array;\n    new(length?: number): BigUint64Array;\n    new(array: Iterable<bigint>): BigUint64Array;\n    new(buffer: ArrayBufferLike, byteOffset?: number, length?: number): BigUint64Array;\n\n    /** The size in bytes of each element in the array. */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * Returns a new array from a set of elements.\n     * @param items A set of elements to include in the new array object.\n     */\n    of(...items: bigint[]): BigUint64Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from(arrayLike: ArrayLike<bigint>): BigUint64Array;\n    from<U>(arrayLike: ArrayLike<U>, mapfn: (v: U, k: number) => bigint, thisArg?: any): BigUint64Array;\n}\n\ndeclare var BigUint64Array: BigUint64ArrayConstructor;\n\ninterface DataView {\n    /**\n     * Gets the BigInt64 value at the specified byte offset from the start of the view. There is\n     * no alignment constraint; multi-byte values may be fetched from any offset.\n     * @param byteOffset The place in the buffer at which the value should be retrieved.\n     * @param littleEndian If false or undefined, a big-endian value should be read.\n     */\n    getBigInt64(byteOffset: number, littleEndian?: boolean): bigint;\n\n    /**\n     * Gets the BigUint64 value at the specified byte offset from the start of the view. There is\n     * no alignment constraint; multi-byte values may be fetched from any offset.\n     * @param byteOffset The place in the buffer at which the value should be retrieved.\n     * @param littleEndian If false or undefined, a big-endian value should be read.\n     */\n    getBigUint64(byteOffset: number, littleEndian?: boolean): bigint;\n\n    /**\n     * Stores a BigInt64 value at the specified byte offset from the start of the view.\n     * @param byteOffset The place in the buffer at which the value should be set.\n     * @param value The value to set.\n     * @param littleEndian If false or undefined, a big-endian value should be written.\n     */\n    setBigInt64(byteOffset: number, value: bigint, littleEndian?: boolean): void;\n\n    /**\n     * Stores a BigUint64 value at the specified byte offset from the start of the view.\n     * @param byteOffset The place in the buffer at which the value should be set.\n     * @param value The value to set.\n     * @param littleEndian If false or undefined, a big-endian value should be written.\n     */\n    setBigUint64(byteOffset: number, value: bigint, littleEndian?: boolean): void;\n}\n\ndeclare namespace Intl{\n    interface NumberFormat {\n        format(value: number | bigint): string;\n        resolvedOptions(): ResolvedNumberFormatOptions;\n    }\n}\n`;$i[\"lib.es2020.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2019\" />\n/// <reference lib=\"es2020.bigint\" />\n/// <reference lib=\"es2020.date\" />\n/// <reference lib=\"es2020.number\" />\n/// <reference lib=\"es2020.promise\" />\n/// <reference lib=\"es2020.sharedmemory\" />\n/// <reference lib=\"es2020.string\" />\n/// <reference lib=\"es2020.symbol.wellknown\" />\n/// <reference lib=\"es2020.intl\" />\n`;$i[\"lib.es2020.date.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2020.intl\" />\n\ninterface Date {\n    /**\n     * Converts a date and time to a string by using the current or specified locale.\n     * @param locales A locale string, array of locale strings, Intl.Locale object, or array of Intl.Locale objects that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.\n     * @param options An object that contains one or more properties that specify comparison options.\n     */\n    toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;\n\n    /**\n     * Converts a date to a string by using the current or specified locale.\n     * @param locales A locale string, array of locale strings, Intl.Locale object, or array of Intl.Locale objects that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.\n     * @param options An object that contains one or more properties that specify comparison options.\n     */\n    toLocaleDateString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;\n\n    /**\n     * Converts a time to a string by using the current or specified locale.\n     * @param locales A locale string, array of locale strings, Intl.Locale object, or array of Intl.Locale objects that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.\n     * @param options An object that contains one or more properties that specify comparison options.\n     */\n    toLocaleTimeString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;\n}`;$i[\"lib.es2020.full.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2020\" />\n/// <reference lib=\"dom\" />\n/// <reference lib=\"webworker.importscripts\" />\n/// <reference lib=\"scripthost\" />\n/// <reference lib=\"dom.iterable\" />\n`;$i[\"lib.es2020.intl.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2018.intl\" />\ndeclare namespace Intl {\n\n    /**\n     * [Unicode BCP 47 Locale Identifiers](https://unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers) definition.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument).\n     */\n    type UnicodeBCP47LocaleIdentifier = string;\n\n    /**\n     * Unit to use in the relative time internationalized message.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/format#Parameters).\n     */\n    type RelativeTimeFormatUnit =\n        | \"year\"\n        | \"years\"\n        | \"quarter\"\n        | \"quarters\"\n        | \"month\"\n        | \"months\"\n        | \"week\"\n        | \"weeks\"\n        | \"day\"\n        | \"days\"\n        | \"hour\"\n        | \"hours\"\n        | \"minute\"\n        | \"minutes\"\n        | \"second\"\n        | \"seconds\";\n\n    /**\n     * Value of the \\`unit\\` property in objects returned by\n     * \\`Intl.RelativeTimeFormat.prototype.formatToParts()\\`. \\`formatToParts\\` and\n     * \\`format\\` methods accept either singular or plural unit names as input,\n     * but \\`formatToParts\\` only outputs singular (e.g. \"day\") not plural (e.g.\n     * \"days\").\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/formatToParts#Using_formatToParts).\n     */\n     type RelativeTimeFormatUnitSingular =\n        | \"year\"\n        | \"quarter\"\n        | \"month\"\n        | \"week\"\n        | \"day\"\n        | \"hour\"\n        | \"minute\"\n        | \"second\";\n\n    /**\n     * The locale matching algorithm to use.\n     *\n     * [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_negotiation).\n     */\n    type RelativeTimeFormatLocaleMatcher = \"lookup\" | \"best fit\";\n\n    /**\n     * The format of output message.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters).\n     */\n    type RelativeTimeFormatNumeric = \"always\" | \"auto\";\n\n    /**\n     * The length of the internationalized message.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters).\n     */\n    type RelativeTimeFormatStyle = \"long\" | \"short\" | \"narrow\";\n\n    /**\n     * [BCP 47 language tag](http://tools.ietf.org/html/rfc5646) definition.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument).\n     */\n    type BCP47LanguageTag = string;\n\n    /**\n     * The locale(s) to use\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument).\n     */\n    type LocalesArgument = UnicodeBCP47LocaleIdentifier | Locale | readonly (UnicodeBCP47LocaleIdentifier | Locale)[] | undefined;\n\n    /**\n     * An object with some or all of properties of \\`options\\` parameter\n     * of \\`Intl.RelativeTimeFormat\\` constructor.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters).\n     */\n    interface RelativeTimeFormatOptions {\n        /** The locale matching algorithm to use. For information about this option, see [Intl page](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_negotiation). */\n        localeMatcher?: RelativeTimeFormatLocaleMatcher;\n        /** The format of output message. */\n        numeric?: RelativeTimeFormatNumeric;\n        /** The length of the internationalized message. */\n        style?: RelativeTimeFormatStyle;\n    }\n\n    /**\n     * An object with properties reflecting the locale\n     * and formatting options computed during initialization\n     * of the \\`Intl.RelativeTimeFormat\\` object\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/resolvedOptions#Description).\n     */\n    interface ResolvedRelativeTimeFormatOptions {\n        locale: UnicodeBCP47LocaleIdentifier;\n        style: RelativeTimeFormatStyle;\n        numeric: RelativeTimeFormatNumeric;\n        numberingSystem: string;\n    }\n\n    /**\n     * An object representing the relative time format in parts\n     * that can be used for custom locale-aware formatting.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/formatToParts#Using_formatToParts).\n     */\n    type RelativeTimeFormatPart =\n        | {\n              type: \"literal\";\n              value: string;\n          }\n        | {\n              type: Exclude<NumberFormatPartTypes, \"literal\">;\n              value: string;\n              unit: RelativeTimeFormatUnitSingular;\n          };\n\n    interface RelativeTimeFormat {\n        /**\n         * Formats a value and a unit according to the locale\n         * and formatting options of the given\n         * [\\`Intl.RelativeTimeFormat\\`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat)\n         * object.\n         *\n         * While this method automatically provides the correct plural forms,\n         * the grammatical form is otherwise as neutral as possible.\n         *\n         * It is the caller's responsibility to handle cut-off logic\n         * such as deciding between displaying \"in 7 days\" or \"in 1 week\".\n         * This API does not support relative dates involving compound units.\n         * e.g \"in 5 days and 4 hours\".\n         *\n         * @param value -  Numeric value to use in the internationalized relative time message\n         *\n         * @param unit - [Unit](https://tc39.es/ecma402/#sec-singularrelativetimeunit) to use in the relative time internationalized message.\n         *\n         * @throws \\`RangeError\\` if \\`unit\\` was given something other than \\`unit\\` possible values\n         *\n         * @returns {string} Internationalized relative time message as string\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/format).\n         */\n        format(value: number, unit: RelativeTimeFormatUnit): string;\n\n        /**\n         *  Returns an array of objects representing the relative time format in parts that can be used for custom locale-aware formatting.\n         *\n         *  @param value - Numeric value to use in the internationalized relative time message\n         *\n         *  @param unit - [Unit](https://tc39.es/ecma402/#sec-singularrelativetimeunit) to use in the relative time internationalized message.\n         *\n         *  @throws \\`RangeError\\` if \\`unit\\` was given something other than \\`unit\\` possible values\n         *\n         *  [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/formatToParts).\n         */\n        formatToParts(value: number, unit: RelativeTimeFormatUnit): RelativeTimeFormatPart[];\n\n        /**\n         * Provides access to the locale and options computed during initialization of this \\`Intl.RelativeTimeFormat\\` object.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/resolvedOptions).\n         */\n        resolvedOptions(): ResolvedRelativeTimeFormatOptions;\n    }\n\n    /**\n     * The [\\`Intl.RelativeTimeFormat\\`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat)\n     * object is a constructor for objects that enable language-sensitive relative time formatting.\n     *\n     * [Compatibility](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat#Browser_compatibility).\n     */\n    const RelativeTimeFormat: {\n        /**\n         * Creates [Intl.RelativeTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat) objects\n         *\n         * @param locales - A string with a [BCP 47 language tag](http://tools.ietf.org/html/rfc5646), or an array of such strings.\n         *  For the general form and interpretation of the locales argument,\n         *  see the [\\`Intl\\` page](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation).\n         *\n         * @param options - An [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters)\n         *  with some or all of options of \\`RelativeTimeFormatOptions\\`.\n         *\n         * @returns [Intl.RelativeTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat) object.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat).\n         */\n        new(\n            locales?: UnicodeBCP47LocaleIdentifier | UnicodeBCP47LocaleIdentifier[],\n            options?: RelativeTimeFormatOptions,\n        ): RelativeTimeFormat;\n\n        /**\n         * Returns an array containing those of the provided locales\n         * that are supported in date and time formatting\n         * without having to fall back to the runtime's default locale.\n         *\n         * @param locales - A string with a [BCP 47 language tag](http://tools.ietf.org/html/rfc5646), or an array of such strings.\n         *  For the general form and interpretation of the locales argument,\n         *  see the [\\`Intl\\` page](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation).\n         *\n         * @param options - An [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#Parameters)\n         *  with some or all of options of the formatting.\n         *\n         * @returns An array containing those of the provided locales\n         *  that are supported in date and time formatting\n         *  without having to fall back to the runtime's default locale.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/supportedLocalesOf).\n         */\n        supportedLocalesOf(\n            locales?: UnicodeBCP47LocaleIdentifier | UnicodeBCP47LocaleIdentifier[],\n            options?: RelativeTimeFormatOptions,\n        ): UnicodeBCP47LocaleIdentifier[];\n    };\n\n    interface NumberFormatOptions {\n        compactDisplay?: \"short\" | \"long\" | undefined;\n        notation?: \"standard\" | \"scientific\" | \"engineering\" | \"compact\" | undefined;\n        signDisplay?: \"auto\" | \"never\" | \"always\" | \"exceptZero\" | undefined;\n        unit?: string | undefined;\n        unitDisplay?: \"short\" | \"long\" | \"narrow\" | undefined;\n        currencyDisplay?: string | undefined;\n        currencySign?: string | undefined;\n    }\n\n    interface ResolvedNumberFormatOptions {\n        compactDisplay?: \"short\" | \"long\";\n        notation?: \"standard\" | \"scientific\" | \"engineering\" | \"compact\";\n        signDisplay?: \"auto\" | \"never\" | \"always\" | \"exceptZero\";\n        unit?: string;\n        unitDisplay?: \"short\" | \"long\" | \"narrow\";\n        currencyDisplay?: string;\n        currencySign?: string;\n    }\n\n    interface DateTimeFormatOptions {\n        calendar?: string | undefined;\n        dayPeriod?: \"narrow\" | \"short\" | \"long\" | undefined;\n        numberingSystem?: string | undefined;\n\n        dateStyle?: \"full\" | \"long\" | \"medium\" | \"short\" | undefined;\n        timeStyle?: \"full\" | \"long\" | \"medium\" | \"short\" | undefined;\n        hourCycle?: \"h11\" | \"h12\" | \"h23\" | \"h24\" | undefined;\n    }\n\n    type LocaleHourCycleKey = \"h12\" | \"h23\" | \"h11\" | \"h24\";\n    type LocaleCollationCaseFirst = \"upper\" | \"lower\" | \"false\";\n\n    interface LocaleOptions {\n        /** A string containing the language, and the script and region if available. */\n        baseName?: string;\n        /** The part of the Locale that indicates the locale's calendar era. */\n        calendar?: string;\n        /** Flag that defines whether case is taken into account for the locale's collation rules. */\n        caseFirst?: LocaleCollationCaseFirst;\n        /** The collation type used for sorting */\n        collation?: string;\n        /** The time keeping format convention used by the locale. */\n        hourCycle?: LocaleHourCycleKey;\n        /** The primary language subtag associated with the locale. */\n        language?: string;\n        /** The numeral system used by the locale. */\n        numberingSystem?: string;\n        /** Flag that defines whether the locale has special collation handling for numeric characters. */\n        numeric?: boolean;\n        /** The region of the world (usually a country) associated with the locale. Possible values are region codes as defined by ISO 3166-1. */\n        region?: string;\n        /** The script used for writing the particular language used in the locale. Possible values are script codes as defined by ISO 15924. */\n        script?: string;\n    }\n\n    interface Locale extends LocaleOptions {\n        /** A string containing the language, and the script and region if available. */\n        baseName: string;\n        /** The primary language subtag associated with the locale. */\n        language: string;\n        /** Gets the most likely values for the language, script, and region of the locale based on existing values. */\n        maximize(): Locale;\n        /** Attempts to remove information about the locale that would be added by calling \\`Locale.maximize()\\`. */\n        minimize(): Locale;\n        /** Returns the locale's full locale identifier string. */\n        toString(): BCP47LanguageTag;\n    }\n\n    /**\n     * Constructor creates [Intl.Locale](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale)\n     * objects\n     *\n     * @param tag - A string with a [BCP 47 language tag](http://tools.ietf.org/html/rfc5646).\n     *  For the general form and interpretation of the locales argument,\n     *  see the [\\`Intl\\` page](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation).\n     *\n     * @param options - An [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/Locale#Parameters) with some or all of options of the locale.\n     *\n     * @returns [Intl.Locale](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) object.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale).\n     */\n    const Locale: {\n        new (tag: BCP47LanguageTag | Locale, options?: LocaleOptions): Locale;\n    };\n\n    type DisplayNamesFallback =\n        | \"code\"\n        | \"none\";\n\n    type DisplayNamesType =\n        | \"language\"\n        | \"region\"\n        | \"script\"\n        | \"calendar\"\n        | \"dateTimeField\"\n        | \"currency\";\n\n    type DisplayNamesLanguageDisplay =\n        | \"dialect\"\n        | \"standard\";\n\n    interface DisplayNamesOptions {\n        localeMatcher?: RelativeTimeFormatLocaleMatcher;\n        style?: RelativeTimeFormatStyle;\n        type: DisplayNamesType;\n        languageDisplay?: DisplayNamesLanguageDisplay;\n        fallback?: DisplayNamesFallback;\n    }\n\n    interface ResolvedDisplayNamesOptions {\n        locale: UnicodeBCP47LocaleIdentifier;\n        style: RelativeTimeFormatStyle;\n        type: DisplayNamesType;\n        fallback: DisplayNamesFallback;\n        languageDisplay?: DisplayNamesLanguageDisplay;\n    }\n\n    interface DisplayNames {\n        /**\n         * Receives a code and returns a string based on the locale and options provided when instantiating\n         * [\\`Intl.DisplayNames()\\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames)\n         *\n         * @param code The \\`code\\` to provide depends on the \\`type\\` passed to display name during creation:\n         *  - If the type is \\`\"region\"\\`, code should be either an [ISO-3166 two letters region code](https://www.iso.org/iso-3166-country-codes.html),\n         *    or a [three digits UN M49 Geographic Regions](https://unstats.un.org/unsd/methodology/m49/).\n         *  - If the type is \\`\"script\"\\`, code should be an [ISO-15924 four letters script code](https://unicode.org/iso15924/iso15924-codes.html).\n         *  - If the type is \\`\"language\"\\`, code should be a \\`languageCode\\` [\"-\" \\`scriptCode\\`] [\"-\" \\`regionCode\\` ] *(\"-\" \\`variant\\` )\n         *    subsequence of the unicode_language_id grammar in [UTS 35's Unicode Language and Locale Identifiers grammar](https://unicode.org/reports/tr35/#Unicode_language_identifier).\n         *    \\`languageCode\\` is either a two letters ISO 639-1 language code or a three letters ISO 639-2 language code.\n         *  - If the type is \\`\"currency\"\\`, code should be a [3-letter ISO 4217 currency code](https://www.iso.org/iso-4217-currency-codes.html).\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/of).\n         */\n        of(code: string): string | undefined;\n        /**\n         * Returns a new object with properties reflecting the locale and style formatting options computed during the construction of the current\n         * [\\`Intl/DisplayNames\\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames) object.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/resolvedOptions).\n         */\n        resolvedOptions(): ResolvedDisplayNamesOptions;\n    }\n\n    /**\n     * The [\\`Intl.DisplayNames()\\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames)\n     * object enables the consistent translation of language, region and script display names.\n     *\n     * [Compatibility](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames#browser_compatibility).\n     */\n    const DisplayNames: {\n        prototype: DisplayNames;\n\n        /**\n         * @param locales A string with a BCP 47 language tag, or an array of such strings.\n         *   For the general form and interpretation of the \\`locales\\` argument, see the [Intl](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locale_identification_and_negotiation)\n         *   page.\n         *\n         * @param options An object for setting up a display name.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/DisplayNames).\n         */\n        new(locales: LocalesArgument, options: DisplayNamesOptions): DisplayNames;\n\n        /**\n         * Returns an array containing those of the provided locales that are supported in display names without having to fall back to the runtime's default locale.\n         *\n         * @param locales A string with a BCP 47 language tag, or an array of such strings.\n         *   For the general form and interpretation of the \\`locales\\` argument, see the [Intl](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locale_identification_and_negotiation)\n         *   page.\n         *\n         * @param options An object with a locale matcher.\n         *\n         * @returns An array of strings representing a subset of the given locale tags that are supported in display names without having to fall back to the runtime's default locale.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/supportedLocalesOf).\n         */\n        supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher }): BCP47LanguageTag[];\n    };\n\n}\n`;$i[\"lib.es2020.number.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2020.intl\" />\n\ninterface Number {\n    /**\n     * Converts a number to a string by using the current or specified locale.\n     * @param locales A locale string, array of locale strings, Intl.Locale object, or array of Intl.Locale objects that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.\n     * @param options An object that contains one or more properties that specify comparison options.\n     */\n    toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.NumberFormatOptions): string;\n}\n`;$i[\"lib.es2020.promise.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface PromiseFulfilledResult<T> {\n    status: \"fulfilled\";\n    value: T;\n}\n\ninterface PromiseRejectedResult {\n    status: \"rejected\";\n    reason: any;\n}\n\ntype PromiseSettledResult<T> = PromiseFulfilledResult<T> | PromiseRejectedResult;\n\ninterface PromiseConstructor {\n    /**\n     * Creates a Promise that is resolved with an array of results when all\n     * of the provided Promises resolve or reject.\n     * @param values An array of Promises.\n     * @returns A new Promise.\n     */\n    allSettled<T extends readonly unknown[] | []>(values: T): Promise<{ -readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>> }>;\n\n    /**\n     * Creates a Promise that is resolved with an array of results when all\n     * of the provided Promises resolve or reject.\n     * @param values An array of Promises.\n     * @returns A new Promise.\n     */\n    allSettled<T>(values: Iterable<T | PromiseLike<T>>): Promise<PromiseSettledResult<Awaited<T>>[]>;\n}\n`;$i[\"lib.es2020.sharedmemory.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface Atomics {\n    /**\n     * Adds a value to the value at the given position in the array, returning the original value.\n     * Until this atomic operation completes, any other read or write operation against the array\n     * will block.\n     */\n    add(typedArray: BigInt64Array | BigUint64Array, index: number, value: bigint): bigint;\n\n    /**\n     * Stores the bitwise AND of a value with the value at the given position in the array,\n     * returning the original value. Until this atomic operation completes, any other read or\n     * write operation against the array will block.\n     */\n    and(typedArray: BigInt64Array | BigUint64Array, index: number, value: bigint): bigint;\n\n    /**\n     * Replaces the value at the given position in the array if the original value equals the given\n     * expected value, returning the original value. Until this atomic operation completes, any\n     * other read or write operation against the array will block.\n     */\n    compareExchange(typedArray: BigInt64Array | BigUint64Array, index: number, expectedValue: bigint, replacementValue: bigint): bigint;\n\n    /**\n     * Replaces the value at the given position in the array, returning the original value. Until\n     * this atomic operation completes, any other read or write operation against the array will\n     * block.\n     */\n    exchange(typedArray: BigInt64Array | BigUint64Array, index: number, value: bigint): bigint;\n\n    /**\n     * Returns the value at the given position in the array. Until this atomic operation completes,\n     * any other read or write operation against the array will block.\n     */\n    load(typedArray: BigInt64Array | BigUint64Array, index: number): bigint;\n\n    /**\n     * Stores the bitwise OR of a value with the value at the given position in the array,\n     * returning the original value. Until this atomic operation completes, any other read or write\n     * operation against the array will block.\n     */\n    or(typedArray: BigInt64Array | BigUint64Array, index: number, value: bigint): bigint;\n\n    /**\n     * Stores a value at the given position in the array, returning the new value. Until this\n     * atomic operation completes, any other read or write operation against the array will block.\n     */\n    store(typedArray: BigInt64Array | BigUint64Array, index: number, value: bigint): bigint;\n\n    /**\n     * Subtracts a value from the value at the given position in the array, returning the original\n     * value. Until this atomic operation completes, any other read or write operation against the\n     * array will block.\n     */\n    sub(typedArray: BigInt64Array | BigUint64Array, index: number, value: bigint): bigint;\n\n    /**\n     * If the value at the given position in the array is equal to the provided value, the current\n     * agent is put to sleep causing execution to suspend until the timeout expires (returning\n     * \\`\"timed-out\"\\`) or until the agent is awoken (returning \\`\"ok\"\\`); otherwise, returns\n     * \\`\"not-equal\"\\`.\n     */\n    wait(typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): \"ok\" | \"not-equal\" | \"timed-out\";\n\n    /**\n     * Wakes up sleeping agents that are waiting on the given index of the array, returning the\n     * number of agents that were awoken.\n     * @param typedArray A shared BigInt64Array.\n     * @param index The position in the typedArray to wake up on.\n     * @param count The number of sleeping agents to notify. Defaults to +Infinity.\n     */\n    notify(typedArray: BigInt64Array, index: number, count?: number): number;\n\n    /**\n     * Stores the bitwise XOR of a value with the value at the given position in the array,\n     * returning the original value. Until this atomic operation completes, any other read or write\n     * operation against the array will block.\n     */\n    xor(typedArray: BigInt64Array | BigUint64Array, index: number, value: bigint): bigint;\n}\n`;$i[\"lib.es2020.string.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2015.iterable\" />\n\ninterface String {\n    /**\n     * Matches a string with a regular expression, and returns an iterable of matches\n     * containing the results of that search.\n     * @param regexp A variable name or string literal containing the regular expression pattern and flags.\n     */\n    matchAll(regexp: RegExp): IterableIterator<RegExpMatchArray>;\n}\n`;$i[\"lib.es2020.symbol.wellknown.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2015.iterable\" />\n/// <reference lib=\"es2015.symbol\" />\n\ninterface SymbolConstructor {\n    /**\n     * A regular expression method that matches the regular expression against a string. Called\n     * by the String.prototype.matchAll method.\n     */\n    readonly matchAll: unique symbol;\n}\n\ninterface RegExp {\n    /**\n     * Matches a string with this regular expression, and returns an iterable of matches\n     * containing the results of that search.\n     * @param string A string to search within.\n     */\n    [Symbol.matchAll](str: string): IterableIterator<RegExpMatchArray>;\n}\n`;$i[\"lib.es2021.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2020\" />\n/// <reference lib=\"es2021.promise\" />\n/// <reference lib=\"es2021.string\" />\n/// <reference lib=\"es2021.weakref\" />\n/// <reference lib=\"es2021.intl\" />\n`;$i[\"lib.es2021.full.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2021\" />\n/// <reference lib=\"dom\" />\n/// <reference lib=\"webworker.importscripts\" />\n/// <reference lib=\"scripthost\" />\n/// <reference lib=\"dom.iterable\" />\n`;$i[\"lib.es2021.intl.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ndeclare namespace Intl {\n\n    interface DateTimeFormatPartTypesRegistry {\n        fractionalSecond: any\n     }\n\n    interface DateTimeFormatOptions {\n        formatMatcher?: \"basic\" | \"best fit\" | \"best fit\" | undefined;\n        dateStyle?: \"full\" | \"long\" | \"medium\" | \"short\" | undefined;\n        timeStyle?: \"full\" | \"long\" | \"medium\" | \"short\" | undefined;\n        dayPeriod?: \"narrow\" | \"short\" | \"long\" | undefined;\n        fractionalSecondDigits?: 1 | 2 | 3 | undefined;\n    }\n\n    interface DateTimeRangeFormatPart extends DateTimeFormatPart {\n        source: \"startRange\" | \"endRange\" | \"shared\"\n    }\n\n    interface DateTimeFormat {\n        formatRange(startDate: Date | number | bigint, endDate: Date | number | bigint): string;\n        formatRangeToParts(startDate: Date | number | bigint, endDate: Date | number | bigint): DateTimeRangeFormatPart[];\n    }\n\n    interface ResolvedDateTimeFormatOptions {\n        formatMatcher?: \"basic\" | \"best fit\" | \"best fit\";\n        dateStyle?: \"full\" | \"long\" | \"medium\" | \"short\";\n        timeStyle?: \"full\" | \"long\" | \"medium\" | \"short\";\n        hourCycle?: \"h11\" | \"h12\" | \"h23\" | \"h24\";\n        dayPeriod?: \"narrow\" | \"short\" | \"long\";\n        fractionalSecondDigits?: 1 | 2 | 3;\n    }\n\n    /**\n     * The locale matching algorithm to use.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat#parameters).\n     */\n    type ListFormatLocaleMatcher = \"lookup\" | \"best fit\";\n\n    /**\n     * The format of output message.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat#parameters).\n     */\n    type ListFormatType = \"conjunction\" | \"disjunction\" | \"unit\";\n\n    /**\n     * The length of the formatted message.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat#parameters).\n     */\n    type ListFormatStyle = \"long\" | \"short\" | \"narrow\";\n\n    /**\n     * An object with some or all properties of the \\`Intl.ListFormat\\` constructor \\`options\\` parameter.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat#parameters).\n     */\n    interface ListFormatOptions {\n        /** The locale matching algorithm to use. For information about this option, see [Intl page](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_negotiation). */\n        localeMatcher?: ListFormatLocaleMatcher | undefined;\n        /** The format of output message. */\n        type?: ListFormatType | undefined;\n        /** The length of the internationalized message. */\n        style?: ListFormatStyle | undefined;\n    }\n\n    interface ResolvedListFormatOptions {\n        locale: string;\n        style: ListFormatStyle;\n        type: ListFormatType;\n    }\n\n    interface ListFormat {\n        /**\n         * Returns a string with a language-specific representation of the list.\n         *\n         * @param list - An iterable object, such as an [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array).\n         *\n         * @throws \\`TypeError\\` if \\`list\\` includes something other than the possible values.\n         *\n         * @returns {string} A language-specific formatted string representing the elements of the list.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/format).\n         */\n        format(list: Iterable<string>): string;\n\n        /**\n         * Returns an Array of objects representing the different components that can be used to format a list of values in a locale-aware fashion.\n         *\n         * @param list - An iterable object, such as an [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array), to be formatted according to a locale.\n         *\n         * @throws \\`TypeError\\` if \\`list\\` includes something other than the possible values.\n         *\n         * @returns {{ type: \"element\" | \"literal\", value: string; }[]} An Array of components which contains the formatted parts from the list.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/formatToParts).\n         */\n        formatToParts(list: Iterable<string>): { type: \"element\" | \"literal\", value: string; }[];\n\n        /**\n         * Returns a new object with properties reflecting the locale and style\n         * formatting options computed during the construction of the current\n         * \\`Intl.ListFormat\\` object.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/resolvedOptions).\n         */\n        resolvedOptions(): ResolvedListFormatOptions;\n    }\n\n    const ListFormat: {\n        prototype: ListFormat;\n\n        /**\n         * Creates [Intl.ListFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat) objects that\n         * enable language-sensitive list formatting.\n         *\n         * @param locales - A string with a [BCP 47 language tag](http://tools.ietf.org/html/rfc5646), or an array of such strings.\n         *  For the general form and interpretation of the \\`locales\\` argument,\n         *  see the [\\`Intl\\` page](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation).\n         *\n         * @param options - An [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat#parameters)\n         *  with some or all options of \\`ListFormatOptions\\`.\n         *\n         * @returns [Intl.ListFormatOptions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat) object.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat).\n         */\n        new(locales?: BCP47LanguageTag | BCP47LanguageTag[], options?: ListFormatOptions): ListFormat;\n\n        /**\n         * Returns an array containing those of the provided locales that are\n         * supported in list formatting without having to fall back to the runtime's default locale.\n         *\n         * @param locales - A string with a [BCP 47 language tag](http://tools.ietf.org/html/rfc5646), or an array of such strings.\n         *  For the general form and interpretation of the \\`locales\\` argument,\n         *  see the [\\`Intl\\` page](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation).\n         *\n         * @param options - An [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/supportedLocalesOf#parameters).\n         *  with some or all possible options.\n         *\n         * @returns An array of strings representing a subset of the given locale tags that are supported in list\n         *  formatting without having to fall back to the runtime's default locale.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/supportedLocalesOf).\n         */\n        supportedLocalesOf(locales: BCP47LanguageTag | BCP47LanguageTag[], options?: Pick<ListFormatOptions, \"localeMatcher\">): BCP47LanguageTag[];\n    };\n}\n`;$i[\"lib.es2021.promise.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface AggregateError extends Error {\n    errors: any[]\n}\n\ninterface AggregateErrorConstructor {\n    new(errors: Iterable<any>, message?: string): AggregateError;\n    (errors: Iterable<any>, message?: string): AggregateError;\n    readonly prototype: AggregateError;\n}\n\ndeclare var AggregateError: AggregateErrorConstructor;\n\n/**\n * Represents the completion of an asynchronous operation\n */\ninterface PromiseConstructor {\n    /**\n     * The any function returns a promise that is fulfilled by the first given promise to be fulfilled, or rejected with an AggregateError containing an array of rejection reasons if all of the given promises are rejected. It resolves all elements of the passed iterable to promises as it runs this algorithm.\n     * @param values An array or iterable of Promises.\n     * @returns A new Promise.\n     */\n    any<T extends readonly unknown[] | []>(values: T): Promise<Awaited<T[number]>>;\n\n    /**\n     * The any function returns a promise that is fulfilled by the first given promise to be fulfilled, or rejected with an AggregateError containing an array of rejection reasons if all of the given promises are rejected. It resolves all elements of the passed iterable to promises as it runs this algorithm.\n     * @param values An array or iterable of Promises.\n     * @returns A new Promise.\n     */\n    any<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>>\n}\n`;$i[\"lib.es2021.string.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface String {\n    /**\n     * Replace all instances of a substring in a string, using a regular expression or search string.\n     * @param searchValue A string to search for.\n     * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string.\n     */\n    replaceAll(searchValue: string | RegExp, replaceValue: string): string;\n\n    /**\n     * Replace all instances of a substring in a string, using a regular expression or search string.\n     * @param searchValue A string to search for.\n     * @param replacer A function that returns the replacement text.\n     */\n    replaceAll(searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string;\n}\n`;$i[\"lib.es2021.weakref.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface WeakRef<T extends object> {\n    readonly [Symbol.toStringTag]: \"WeakRef\";\n\n    /**\n     * Returns the WeakRef instance's target object, or undefined if the target object has been\n     * reclaimed.\n     */\n    deref(): T | undefined;\n}\n\ninterface WeakRefConstructor {\n    readonly prototype: WeakRef<any>;\n\n    /**\n     * Creates a WeakRef instance for the given target object.\n     * @param target The target object for the WeakRef instance.\n     */\n    new<T extends object>(target: T): WeakRef<T>;\n}\n\ndeclare var WeakRef: WeakRefConstructor;\n\ninterface FinalizationRegistry<T> {\n    readonly [Symbol.toStringTag]: \"FinalizationRegistry\";\n\n    /**\n     * Registers an object with the registry.\n     * @param target The target object to register.\n     * @param heldValue The value to pass to the finalizer for this object. This cannot be the\n     * target object.\n     * @param unregisterToken The token to pass to the unregister method to unregister the target\n     * object. If provided (and not undefined), this must be an object. If not provided, the target\n     * cannot be unregistered.\n     */\n    register(target: object, heldValue: T, unregisterToken?: object): void;\n\n    /**\n     * Unregisters an object from the registry.\n     * @param unregisterToken The token that was used as the unregisterToken argument when calling\n     * register to register the target object.\n     */\n    unregister(unregisterToken: object): void;\n}\n\ninterface FinalizationRegistryConstructor {\n    readonly prototype: FinalizationRegistry<any>;\n\n    /**\n     * Creates a finalization registry with an associated cleanup callback\n     * @param cleanupCallback The callback to call after an object in the registry has been reclaimed.\n     */\n    new<T>(cleanupCallback: (heldValue: T) => void): FinalizationRegistry<T>;\n}\n\ndeclare var FinalizationRegistry: FinalizationRegistryConstructor;\n`;$i[\"lib.es2022.array.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface Array<T> {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): T | undefined;\n}\n\ninterface ReadonlyArray<T> {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): T | undefined;\n}\n\ninterface Int8Array {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): number | undefined;\n}\n\ninterface Uint8Array {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): number | undefined;\n}\n\ninterface Uint8ClampedArray {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): number | undefined;\n}\n\ninterface Int16Array {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): number | undefined;\n}\n\ninterface Uint16Array {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): number | undefined;\n}\n\ninterface Int32Array {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): number | undefined;\n}\n\ninterface Uint32Array {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): number | undefined;\n}\n\ninterface Float32Array {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): number | undefined;\n}\n\ninterface Float64Array {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): number | undefined;\n}\n\ninterface BigInt64Array {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): bigint | undefined;\n}\n\ninterface BigUint64Array {\n    /**\n     * Returns the item located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): bigint | undefined;\n}\n`;$i[\"lib.es2022.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2021\" />\n/// <reference lib=\"es2022.array\" />\n/// <reference lib=\"es2022.error\" />\n/// <reference lib=\"es2022.intl\" />\n/// <reference lib=\"es2022.object\" />\n/// <reference lib=\"es2022.sharedmemory\" />\n/// <reference lib=\"es2022.string\" />\n/// <reference lib=\"es2022.regexp\" />\n`;$i[\"lib.es2022.error.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface ErrorOptions {\n    cause?: unknown;\n}\n\ninterface Error {\n    cause?: unknown;\n}\n\ninterface ErrorConstructor {\n    new (message?: string, options?: ErrorOptions): Error;\n    (message?: string, options?: ErrorOptions): Error;\n}\n\ninterface EvalErrorConstructor {\n    new (message?: string, options?: ErrorOptions): EvalError;\n    (message?: string, options?: ErrorOptions): EvalError;\n}\n\ninterface RangeErrorConstructor {\n    new (message?: string, options?: ErrorOptions): RangeError;\n    (message?: string, options?: ErrorOptions): RangeError;\n}\n\ninterface ReferenceErrorConstructor {\n    new (message?: string, options?: ErrorOptions): ReferenceError;\n    (message?: string, options?: ErrorOptions): ReferenceError;\n}\n\ninterface SyntaxErrorConstructor {\n    new (message?: string, options?: ErrorOptions): SyntaxError;\n    (message?: string, options?: ErrorOptions): SyntaxError;\n}\n\ninterface TypeErrorConstructor {\n    new (message?: string, options?: ErrorOptions): TypeError;\n    (message?: string, options?: ErrorOptions): TypeError;\n}\n\ninterface URIErrorConstructor {\n    new (message?: string, options?: ErrorOptions): URIError;\n    (message?: string, options?: ErrorOptions): URIError;\n}\n\ninterface AggregateErrorConstructor {\n    new (\n        errors: Iterable<any>,\n        message?: string,\n        options?: ErrorOptions\n    ): AggregateError;\n    (\n        errors: Iterable<any>,\n        message?: string,\n        options?: ErrorOptions\n    ): AggregateError;\n}\n`;$i[\"lib.es2022.full.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2022\" />\n/// <reference lib=\"dom\" />\n/// <reference lib=\"webworker.importscripts\" />\n/// <reference lib=\"scripthost\" />\n/// <reference lib=\"dom.iterable\" />\n`;$i[\"lib.es2022.intl.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ndeclare namespace Intl {\n\n    /**\n     * An object with some or all properties of the \\`Intl.Segmenter\\` constructor \\`options\\` parameter.\n     *\n     * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/Segmenter#parameters)\n     */\n    interface SegmenterOptions {\n        /** The locale matching algorithm to use. For information about this option, see [Intl page](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_negotiation). */\n        localeMatcher?: \"best fit\" | \"lookup\" | undefined;\n        /** The type of input to be split */\n        granularity?: \"grapheme\" | \"word\" | \"sentence\" | undefined;\n    }\n\n    interface Segmenter {\n        /**\n         * Returns \\`Segments\\` object containing the segments of the input string, using the segmenter's locale and granularity.\n         *\n         * @param input - The text to be segmented as a \\`string\\`.\n         *\n         * @returns A new iterable Segments object containing the segments of the input string, using the segmenter's locale and granularity.\n         */\n        segment(input: string): Segments;\n        resolvedOptions(): ResolvedSegmenterOptions;\n    }\n\n    interface ResolvedSegmenterOptions {\n        locale: string;\n        granularity: \"grapheme\" | \"word\" | \"sentence\";\n    }\n\n    interface Segments {\n        /**\n         * Returns an object describing the segment in the original string that includes the code unit at a specified index.\n         *\n         * @param codeUnitIndex - A number specifying the index of the code unit in the original input string. If the value is omitted, it defaults to \\`0\\`.\n         */\n        containing(codeUnitIndex?: number): SegmentData;\n\n        /** Returns an iterator to iterate over the segments. */\n        [Symbol.iterator](): IterableIterator<SegmentData>;\n    }\n\n    interface SegmentData {\n        /** A string containing the segment extracted from the original input string. */\n        segment: string;\n        /** The code unit index in the original input string at which the segment begins. */\n        index: number;\n        /** The complete input string that was segmented. */\n        input: string;\n        /**\n         * A boolean value only if granularity is \"word\"; otherwise, undefined.\n         * If granularity is \"word\", then isWordLike is true when the segment is word-like (i.e., consists of letters/numbers/ideographs/etc.); otherwise, false.\n         */\n        isWordLike?: boolean;\n    }\n\n    const Segmenter: {\n        prototype: Segmenter;\n\n        /**\n         * Creates a new \\`Intl.Segmenter\\` object.\n         *\n         * @param locales - A string with a [BCP 47 language tag](http://tools.ietf.org/html/rfc5646), or an array of such strings.\n         *  For the general form and interpretation of the \\`locales\\` argument,\n         *  see the [\\`Intl\\` page](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation).\n         *\n         * @param options - An [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/Segmenter#parameters)\n         *  with some or all options of \\`SegmenterOptions\\`.\n         *\n         * @returns [Intl.Segmenter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segments) object.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter).\n         */\n        new(locales?: BCP47LanguageTag | BCP47LanguageTag[], options?: SegmenterOptions): Segmenter;\n\n        /**\n         * Returns an array containing those of the provided locales that are supported without having to fall back to the runtime's default locale.\n         *\n         * @param locales - A string with a [BCP 47 language tag](http://tools.ietf.org/html/rfc5646), or an array of such strings.\n         *  For the general form and interpretation of the \\`locales\\` argument,\n         *  see the [\\`Intl\\` page](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation).\n         *\n         * @param options An [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/supportedLocalesOf#parameters).\n         *  with some or all possible options.\n         *\n         * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/supportedLocalesOf)\n         */\n        supportedLocalesOf(locales: BCP47LanguageTag | BCP47LanguageTag[], options?: Pick<SegmenterOptions, \"localeMatcher\">): BCP47LanguageTag[];\n    };\n}\n`;$i[\"lib.es2022.object.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface ObjectConstructor {\n    /**\n     * Determines whether an object has a property with the specified name.\n     * @param o An object.\n     * @param v A property name.\n     */\n    hasOwn(o: object, v: PropertyKey): boolean;\n}\n`;$i[\"lib.es2022.regexp.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface RegExpMatchArray {\n    indices?: RegExpIndicesArray;\n}\n\ninterface RegExpExecArray {\n    indices?: RegExpIndicesArray;\n}\n\ninterface RegExpIndicesArray extends Array<[number, number]> {\n    groups?: {\n        [key: string]: [number, number];\n    };\n}\n\ninterface RegExp {\n    /**\n     * Returns a Boolean value indicating the state of the hasIndices flag (d) used with with a regular expression.\n     * Default is false. Read-only.\n     */\n    readonly hasIndices: boolean;\n}\n`;$i[\"lib.es2022.sharedmemory.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface Atomics {\n    /**\n     * A non-blocking, asynchronous version of wait which is usable on the main thread.\n     * Waits asynchronously on a shared memory location and returns a Promise\n     * @param typedArray A shared Int32Array or BigInt64Array.\n     * @param index The position in the typedArray to wait on.\n     * @param value The expected value to test.\n     * @param [timeout] The expected value to test.\n     */\n    waitAsync(typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false, value: \"not-equal\" | \"timed-out\" } | { async: true, value: Promise<\"ok\" | \"timed-out\"> };\n\n    /**\n     * A non-blocking, asynchronous version of wait which is usable on the main thread.\n     * Waits asynchronously on a shared memory location and returns a Promise\n     * @param typedArray A shared Int32Array or BigInt64Array.\n     * @param index The position in the typedArray to wait on.\n     * @param value The expected value to test.\n     * @param [timeout] The expected value to test.\n     */\n    waitAsync(typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false, value: \"not-equal\" | \"timed-out\" } | { async: true, value: Promise<\"ok\" | \"timed-out\"> };\n}\n`;$i[\"lib.es2022.string.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface String {\n    /**\n     * Returns a new String consisting of the single UTF-16 code unit located at the specified index.\n     * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.\n     */\n    at(index: number): string | undefined;\n}\n`;$i[\"lib.es2023.array.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ninterface Array<T> {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends T>(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): number;\n}\n\ninterface ReadonlyArray<T> {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends T>(predicate: (value: T, index: number, array: readonly T[]) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any): T | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any): number;\n}\n\ninterface Int8Array {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends number>(predicate: (value: number, index: number, array: Int8Array) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number;\n}\n\ninterface Uint8Array {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends number>(predicate: (value: number, index: number, array: Uint8Array) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number;\n}\n\ninterface Uint8ClampedArray {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends number>(predicate: (value: number, index: number, array: Uint8ClampedArray) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number;\n}\n\ninterface Int16Array {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends number>(predicate: (value: number, index: number, array: Int16Array) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number;\n}\n\ninterface Uint16Array {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends number>(predicate: (value: number, index: number, array: Uint16Array) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number;\n}\n\ninterface Int32Array {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends number>(predicate: (value: number, index: number, array: Int32Array) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number;\n}\n\ninterface Uint32Array {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends number>(predicate: (value: number, index: number, array: Uint32Array) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number;\n}\n\ninterface Float32Array {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends number>(predicate: (value: number, index: number, array: Float32Array) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number;\n}\n\ninterface Float64Array {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends number>(predicate: (value: number, index: number, array: Float64Array) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number;\n}\n\ninterface BigInt64Array {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends bigint>(predicate: (value: bigint, index: number, array: BigInt64Array) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): bigint | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): number;\n}\n\ninterface BigUint64Array {\n    /**\n     * Returns the value of the last element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate findLast calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found, findLast\n     * immediately returns that element value. Otherwise, findLast returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLast<S extends bigint>(predicate: (value: bigint, index: number, array: BigUint64Array) => value is S, thisArg?: any): S | undefined;\n    findLast(predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): bigint | undefined;\n\n    /**\n     * Returns the index of the last element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate findLastIndex calls predicate once for each element of the array, in descending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findLastIndex(predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): number;\n}\n`;$i[\"lib.es2023.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2022\" />\n/// <reference lib=\"es2023.array\" />\n`;$i[\"lib.es2023.full.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2023\" />\n/// <reference lib=\"dom\" />\n/// <reference lib=\"webworker.importscripts\" />\n/// <reference lib=\"scripthost\" />\n/// <reference lib=\"dom.iterable\" />\n`;$i[\"lib.es5.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"decorators\" />\n/// <reference lib=\"decorators.legacy\" />\n\n/////////////////////////////\n/// ECMAScript APIs\n/////////////////////////////\n\ndeclare var NaN: number;\ndeclare var Infinity: number;\n\n/**\n * Evaluates JavaScript code and executes it.\n * @param x A String value that contains valid JavaScript code.\n */\ndeclare function eval(x: string): any;\n\n/**\n * Converts a string to an integer.\n * @param string A string to convert into a number.\n * @param radix A value between 2 and 36 that specifies the base of the number in \\`string\\`.\n * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal.\n * All other strings are considered decimal.\n */\ndeclare function parseInt(string: string, radix?: number): number;\n\n/**\n * Converts a string to a floating-point number.\n * @param string A string that contains a floating-point number.\n */\ndeclare function parseFloat(string: string): number;\n\n/**\n * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number).\n * @param number A numeric value.\n */\ndeclare function isNaN(number: number): boolean;\n\n/**\n * Determines whether a supplied number is finite.\n * @param number Any numeric value.\n */\ndeclare function isFinite(number: number): boolean;\n\n/**\n * Gets the unencoded version of an encoded Uniform Resource Identifier (URI).\n * @param encodedURI A value representing an encoded URI.\n */\ndeclare function decodeURI(encodedURI: string): string;\n\n/**\n * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n * @param encodedURIComponent A value representing an encoded URI component.\n */\ndeclare function decodeURIComponent(encodedURIComponent: string): string;\n\n/**\n * Encodes a text string as a valid Uniform Resource Identifier (URI)\n * @param uri A value representing an unencoded URI.\n */\ndeclare function encodeURI(uri: string): string;\n\n/**\n * Encodes a text string as a valid component of a Uniform Resource Identifier (URI).\n * @param uriComponent A value representing an unencoded URI component.\n */\ndeclare function encodeURIComponent(uriComponent: string | number | boolean): string;\n\n/**\n * Computes a new string in which certain characters have been replaced by a hexadecimal escape sequence.\n * @deprecated A legacy feature for browser compatibility\n * @param string A string value\n */\ndeclare function escape(string: string): string;\n\n/**\n * Computes a new string in which hexadecimal escape sequences are replaced with the character that it represents.\n * @deprecated A legacy feature for browser compatibility\n * @param string A string value\n */\ndeclare function unescape(string: string): string;\n\ninterface Symbol {\n    /** Returns a string representation of an object. */\n    toString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): symbol;\n}\n\ndeclare type PropertyKey = string | number | symbol;\n\ninterface PropertyDescriptor {\n    configurable?: boolean;\n    enumerable?: boolean;\n    value?: any;\n    writable?: boolean;\n    get?(): any;\n    set?(v: any): void;\n}\n\ninterface PropertyDescriptorMap {\n    [key: PropertyKey]: PropertyDescriptor;\n}\n\ninterface Object {\n    /** The initial value of Object.prototype.constructor is the standard built-in Object constructor. */\n    constructor: Function;\n\n    /** Returns a string representation of an object. */\n    toString(): string;\n\n    /** Returns a date converted to a string using the current locale. */\n    toLocaleString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): Object;\n\n    /**\n     * Determines whether an object has a property with the specified name.\n     * @param v A property name.\n     */\n    hasOwnProperty(v: PropertyKey): boolean;\n\n    /**\n     * Determines whether an object exists in another object's prototype chain.\n     * @param v Another object whose prototype chain is to be checked.\n     */\n    isPrototypeOf(v: Object): boolean;\n\n    /**\n     * Determines whether a specified property is enumerable.\n     * @param v A property name.\n     */\n    propertyIsEnumerable(v: PropertyKey): boolean;\n}\n\ninterface ObjectConstructor {\n    new(value?: any): Object;\n    (): any;\n    (value: any): any;\n\n    /** A reference to the prototype for a class of objects. */\n    readonly prototype: Object;\n\n    /**\n     * Returns the prototype of an object.\n     * @param o The object that references the prototype.\n     */\n    getPrototypeOf(o: any): any;\n\n    /**\n     * Gets the own property descriptor of the specified object.\n     * An own property descriptor is one that is defined directly on the object and is not inherited from the object's prototype.\n     * @param o Object that contains the property.\n     * @param p Name of the property.\n     */\n    getOwnPropertyDescriptor(o: any, p: PropertyKey): PropertyDescriptor | undefined;\n\n    /**\n     * Returns the names of the own properties of an object. The own properties of an object are those that are defined directly\n     * on that object, and are not inherited from the object's prototype. The properties of an object include both fields (objects) and functions.\n     * @param o Object that contains the own properties.\n     */\n    getOwnPropertyNames(o: any): string[];\n\n    /**\n     * Creates an object that has the specified prototype or that has null prototype.\n     * @param o Object to use as a prototype. May be null.\n     */\n    create(o: object | null): any;\n\n    /**\n     * Creates an object that has the specified prototype, and that optionally contains specified properties.\n     * @param o Object to use as a prototype. May be null\n     * @param properties JavaScript object that contains one or more property descriptors.\n     */\n    create(o: object | null, properties: PropertyDescriptorMap & ThisType<any>): any;\n\n    /**\n     * Adds a property to an object, or modifies attributes of an existing property.\n     * @param o Object on which to add or modify the property. This can be a native JavaScript object (that is, a user-defined object or a built in object) or a DOM object.\n     * @param p The property name.\n     * @param attributes Descriptor for the property. It can be for a data property or an accessor property.\n     */\n    defineProperty<T>(o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType<any>): T;\n\n    /**\n     * Adds one or more properties to an object, and/or modifies attributes of existing properties.\n     * @param o Object on which to add or modify the properties. This can be a native JavaScript object or a DOM object.\n     * @param properties JavaScript object that contains one or more descriptor objects. Each descriptor object describes a data property or an accessor property.\n     */\n    defineProperties<T>(o: T, properties: PropertyDescriptorMap & ThisType<any>): T;\n\n    /**\n     * Prevents the modification of attributes of existing properties, and prevents the addition of new properties.\n     * @param o Object on which to lock the attributes.\n     */\n    seal<T>(o: T): T;\n\n    /**\n     * Prevents the modification of existing property attributes and values, and prevents the addition of new properties.\n     * @param f Object on which to lock the attributes.\n     */\n    freeze<T extends Function>(f: T): T;\n\n    /**\n     * Prevents the modification of existing property attributes and values, and prevents the addition of new properties.\n     * @param o Object on which to lock the attributes.\n     */\n    freeze<T extends {[idx: string]: U | null | undefined | object}, U extends string | bigint | number | boolean | symbol>(o: T): Readonly<T>;\n\n    /**\n     * Prevents the modification of existing property attributes and values, and prevents the addition of new properties.\n     * @param o Object on which to lock the attributes.\n     */\n    freeze<T>(o: T): Readonly<T>;\n\n    /**\n     * Prevents the addition of new properties to an object.\n     * @param o Object to make non-extensible.\n     */\n    preventExtensions<T>(o: T): T;\n\n    /**\n     * Returns true if existing property attributes cannot be modified in an object and new properties cannot be added to the object.\n     * @param o Object to test.\n     */\n    isSealed(o: any): boolean;\n\n    /**\n     * Returns true if existing property attributes and values cannot be modified in an object, and new properties cannot be added to the object.\n     * @param o Object to test.\n     */\n    isFrozen(o: any): boolean;\n\n    /**\n     * Returns a value that indicates whether new properties can be added to an object.\n     * @param o Object to test.\n     */\n    isExtensible(o: any): boolean;\n\n    /**\n     * Returns the names of the enumerable string properties and methods of an object.\n     * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\n     */\n    keys(o: object): string[];\n}\n\n/**\n * Provides functionality common to all JavaScript objects.\n */\ndeclare var Object: ObjectConstructor;\n\n/**\n * Creates a new function.\n */\ninterface Function {\n    /**\n     * Calls the function, substituting the specified object for the this value of the function, and the specified array for the arguments of the function.\n     * @param thisArg The object to be used as the this object.\n     * @param argArray A set of arguments to be passed to the function.\n     */\n    apply(this: Function, thisArg: any, argArray?: any): any;\n\n    /**\n     * Calls a method of an object, substituting another object for the current object.\n     * @param thisArg The object to be used as the current object.\n     * @param argArray A list of arguments to be passed to the method.\n     */\n    call(this: Function, thisArg: any, ...argArray: any[]): any;\n\n    /**\n     * For a given function, creates a bound function that has the same body as the original function.\n     * The this object of the bound function is associated with the specified object, and has the specified initial parameters.\n     * @param thisArg An object to which the this keyword can refer inside the new function.\n     * @param argArray A list of arguments to be passed to the new function.\n     */\n    bind(this: Function, thisArg: any, ...argArray: any[]): any;\n\n    /** Returns a string representation of a function. */\n    toString(): string;\n\n    prototype: any;\n    readonly length: number;\n\n    // Non-standard extensions\n    arguments: any;\n    caller: Function;\n}\n\ninterface FunctionConstructor {\n    /**\n     * Creates a new function.\n     * @param args A list of arguments the function accepts.\n     */\n    new(...args: string[]): Function;\n    (...args: string[]): Function;\n    readonly prototype: Function;\n}\n\ndeclare var Function: FunctionConstructor;\n\n/**\n * Extracts the type of the 'this' parameter of a function type, or 'unknown' if the function type has no 'this' parameter.\n */\ntype ThisParameterType<T> = T extends (this: infer U, ...args: never) => any ? U : unknown;\n\n/**\n * Removes the 'this' parameter from a function type.\n */\ntype OmitThisParameter<T> = unknown extends ThisParameterType<T> ? T : T extends (...args: infer A) => infer R ? (...args: A) => R : T;\n\ninterface CallableFunction extends Function {\n    /**\n     * Calls the function with the specified object as the this value and the elements of specified array as the arguments.\n     * @param thisArg The object to be used as the this object.\n     * @param args An array of argument values to be passed to the function.\n     */\n    apply<T, R>(this: (this: T) => R, thisArg: T): R;\n    apply<T, A extends any[], R>(this: (this: T, ...args: A) => R, thisArg: T, args: A): R;\n\n    /**\n     * Calls the function with the specified object as the this value and the specified rest arguments as the arguments.\n     * @param thisArg The object to be used as the this object.\n     * @param args Argument values to be passed to the function.\n     */\n    call<T, A extends any[], R>(this: (this: T, ...args: A) => R, thisArg: T, ...args: A): R;\n\n    /**\n     * For a given function, creates a bound function that has the same body as the original function.\n     * The this object of the bound function is associated with the specified object, and has the specified initial parameters.\n     * @param thisArg The object to be used as the this object.\n     * @param args Arguments to bind to the parameters of the function.\n     */\n    bind<T>(this: T, thisArg: ThisParameterType<T>): OmitThisParameter<T>;\n    bind<T, A0, A extends any[], R>(this: (this: T, arg0: A0, ...args: A) => R, thisArg: T, arg0: A0): (...args: A) => R;\n    bind<T, A0, A1, A extends any[], R>(this: (this: T, arg0: A0, arg1: A1, ...args: A) => R, thisArg: T, arg0: A0, arg1: A1): (...args: A) => R;\n    bind<T, A0, A1, A2, A extends any[], R>(this: (this: T, arg0: A0, arg1: A1, arg2: A2, ...args: A) => R, thisArg: T, arg0: A0, arg1: A1, arg2: A2): (...args: A) => R;\n    bind<T, A0, A1, A2, A3, A extends any[], R>(this: (this: T, arg0: A0, arg1: A1, arg2: A2, arg3: A3, ...args: A) => R, thisArg: T, arg0: A0, arg1: A1, arg2: A2, arg3: A3): (...args: A) => R;\n    bind<T, AX, R>(this: (this: T, ...args: AX[]) => R, thisArg: T, ...args: AX[]): (...args: AX[]) => R;\n}\n\ninterface NewableFunction extends Function {\n    /**\n     * Calls the function with the specified object as the this value and the elements of specified array as the arguments.\n     * @param thisArg The object to be used as the this object.\n     * @param args An array of argument values to be passed to the function.\n     */\n    apply<T>(this: new () => T, thisArg: T): void;\n    apply<T, A extends any[]>(this: new (...args: A) => T, thisArg: T, args: A): void;\n\n    /**\n     * Calls the function with the specified object as the this value and the specified rest arguments as the arguments.\n     * @param thisArg The object to be used as the this object.\n     * @param args Argument values to be passed to the function.\n     */\n    call<T, A extends any[]>(this: new (...args: A) => T, thisArg: T, ...args: A): void;\n\n    /**\n     * For a given function, creates a bound function that has the same body as the original function.\n     * The this object of the bound function is associated with the specified object, and has the specified initial parameters.\n     * @param thisArg The object to be used as the this object.\n     * @param args Arguments to bind to the parameters of the function.\n     */\n    bind<T>(this: T, thisArg: any): T;\n    bind<A0, A extends any[], R>(this: new (arg0: A0, ...args: A) => R, thisArg: any, arg0: A0): new (...args: A) => R;\n    bind<A0, A1, A extends any[], R>(this: new (arg0: A0, arg1: A1, ...args: A) => R, thisArg: any, arg0: A0, arg1: A1): new (...args: A) => R;\n    bind<A0, A1, A2, A extends any[], R>(this: new (arg0: A0, arg1: A1, arg2: A2, ...args: A) => R, thisArg: any, arg0: A0, arg1: A1, arg2: A2): new (...args: A) => R;\n    bind<A0, A1, A2, A3, A extends any[], R>(this: new (arg0: A0, arg1: A1, arg2: A2, arg3: A3, ...args: A) => R, thisArg: any, arg0: A0, arg1: A1, arg2: A2, arg3: A3): new (...args: A) => R;\n    bind<AX, R>(this: new (...args: AX[]) => R, thisArg: any, ...args: AX[]): new (...args: AX[]) => R;\n}\n\ninterface IArguments {\n    [index: number]: any;\n    length: number;\n    callee: Function;\n}\n\ninterface String {\n    /** Returns a string representation of a string. */\n    toString(): string;\n\n    /**\n     * Returns the character at the specified index.\n     * @param pos The zero-based index of the desired character.\n     */\n    charAt(pos: number): string;\n\n    /**\n     * Returns the Unicode value of the character at the specified location.\n     * @param index The zero-based index of the desired character. If there is no character at the specified index, NaN is returned.\n     */\n    charCodeAt(index: number): number;\n\n    /**\n     * Returns a string that contains the concatenation of two or more strings.\n     * @param strings The strings to append to the end of the string.\n     */\n    concat(...strings: string[]): string;\n\n    /**\n     * Returns the position of the first occurrence of a substring.\n     * @param searchString The substring to search for in the string\n     * @param position The index at which to begin searching the String object. If omitted, search starts at the beginning of the string.\n     */\n    indexOf(searchString: string, position?: number): number;\n\n    /**\n     * Returns the last occurrence of a substring in the string.\n     * @param searchString The substring to search for.\n     * @param position The index at which to begin searching. If omitted, the search begins at the end of the string.\n     */\n    lastIndexOf(searchString: string, position?: number): number;\n\n    /**\n     * Determines whether two strings are equivalent in the current locale.\n     * @param that String to compare to target string\n     */\n    localeCompare(that: string): number;\n\n    /**\n     * Matches a string with a regular expression, and returns an array containing the results of that search.\n     * @param regexp A variable name or string literal containing the regular expression pattern and flags.\n     */\n    match(regexp: string | RegExp): RegExpMatchArray | null;\n\n    /**\n     * Replaces text in a string, using a regular expression or search string.\n     * @param searchValue A string or regular expression to search for.\n     * @param replaceValue A string containing the text to replace. When the {@linkcode searchValue} is a \\`RegExp\\`, all matches are replaced if the \\`g\\` flag is set (or only those matches at the beginning, if the \\`y\\` flag is also present). Otherwise, only the first match of {@linkcode searchValue} is replaced.\n     */\n    replace(searchValue: string | RegExp, replaceValue: string): string;\n\n    /**\n     * Replaces text in a string, using a regular expression or search string.\n     * @param searchValue A string to search for.\n     * @param replacer A function that returns the replacement text.\n     */\n    replace(searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string;\n\n    /**\n     * Finds the first substring match in a regular expression search.\n     * @param regexp The regular expression pattern and applicable flags.\n     */\n    search(regexp: string | RegExp): number;\n\n    /**\n     * Returns a section of a string.\n     * @param start The index to the beginning of the specified portion of stringObj.\n     * @param end The index to the end of the specified portion of stringObj. The substring includes the characters up to, but not including, the character indicated by end.\n     * If this value is not specified, the substring continues to the end of stringObj.\n     */\n    slice(start?: number, end?: number): string;\n\n    /**\n     * Split a string into substrings using the specified separator and return them as an array.\n     * @param separator A string that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned.\n     * @param limit A value used to limit the number of elements returned in the array.\n     */\n    split(separator: string | RegExp, limit?: number): string[];\n\n    /**\n     * Returns the substring at the specified location within a String object.\n     * @param start The zero-based index number indicating the beginning of the substring.\n     * @param end Zero-based index number indicating the end of the substring. The substring includes the characters up to, but not including, the character indicated by end.\n     * If end is omitted, the characters from start through the end of the original string are returned.\n     */\n    substring(start: number, end?: number): string;\n\n    /** Converts all the alphabetic characters in a string to lowercase. */\n    toLowerCase(): string;\n\n    /** Converts all alphabetic characters to lowercase, taking into account the host environment's current locale. */\n    toLocaleLowerCase(locales?: string | string[]): string;\n\n    /** Converts all the alphabetic characters in a string to uppercase. */\n    toUpperCase(): string;\n\n    /** Returns a string where all alphabetic characters have been converted to uppercase, taking into account the host environment's current locale. */\n    toLocaleUpperCase(locales?: string | string[]): string;\n\n    /** Removes the leading and trailing white space and line terminator characters from a string. */\n    trim(): string;\n\n    /** Returns the length of a String object. */\n    readonly length: number;\n\n    // IE extensions\n    /**\n     * Gets a substring beginning at the specified location and having the specified length.\n     * @deprecated A legacy feature for browser compatibility\n     * @param from The starting position of the desired substring. The index of the first character in the string is zero.\n     * @param length The number of characters to include in the returned substring.\n     */\n    substr(from: number, length?: number): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): string;\n\n    readonly [index: number]: string;\n}\n\ninterface StringConstructor {\n    new(value?: any): String;\n    (value?: any): string;\n    readonly prototype: String;\n    fromCharCode(...codes: number[]): string;\n}\n\n/**\n * Allows manipulation and formatting of text strings and determination and location of substrings within strings.\n */\ndeclare var String: StringConstructor;\n\ninterface Boolean {\n    /** Returns the primitive value of the specified object. */\n    valueOf(): boolean;\n}\n\ninterface BooleanConstructor {\n    new(value?: any): Boolean;\n    <T>(value?: T): boolean;\n    readonly prototype: Boolean;\n}\n\ndeclare var Boolean: BooleanConstructor;\n\ninterface Number {\n    /**\n     * Returns a string representation of an object.\n     * @param radix Specifies a radix for converting numeric values to strings. This value is only used for numbers.\n     */\n    toString(radix?: number): string;\n\n    /**\n     * Returns a string representing a number in fixed-point notation.\n     * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive.\n     */\n    toFixed(fractionDigits?: number): string;\n\n    /**\n     * Returns a string containing a number represented in exponential notation.\n     * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive.\n     */\n    toExponential(fractionDigits?: number): string;\n\n    /**\n     * Returns a string containing a number represented either in exponential or fixed-point notation with a specified number of digits.\n     * @param precision Number of significant digits. Must be in the range 1 - 21, inclusive.\n     */\n    toPrecision(precision?: number): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): number;\n}\n\ninterface NumberConstructor {\n    new(value?: any): Number;\n    (value?: any): number;\n    readonly prototype: Number;\n\n    /** The largest number that can be represented in JavaScript. Equal to approximately 1.79E+308. */\n    readonly MAX_VALUE: number;\n\n    /** The closest number to zero that can be represented in JavaScript. Equal to approximately 5.00E-324. */\n    readonly MIN_VALUE: number;\n\n    /**\n     * A value that is not a number.\n     * In equality comparisons, NaN does not equal any value, including itself. To test whether a value is equivalent to NaN, use the isNaN function.\n     */\n    readonly NaN: number;\n\n    /**\n     * A value that is less than the largest negative number that can be represented in JavaScript.\n     * JavaScript displays NEGATIVE_INFINITY values as -infinity.\n     */\n    readonly NEGATIVE_INFINITY: number;\n\n    /**\n     * A value greater than the largest number that can be represented in JavaScript.\n     * JavaScript displays POSITIVE_INFINITY values as infinity.\n     */\n    readonly POSITIVE_INFINITY: number;\n}\n\n/** An object that represents a number of any kind. All JavaScript numbers are 64-bit floating-point numbers. */\ndeclare var Number: NumberConstructor;\n\ninterface TemplateStringsArray extends ReadonlyArray<string> {\n    readonly raw: readonly string[];\n}\n\n/**\n * The type of \\`import.meta\\`.\n *\n * If you need to declare that a given property exists on \\`import.meta\\`,\n * this type may be augmented via interface merging.\n */\ninterface ImportMeta {\n}\n\n/**\n * The type for the optional second argument to \\`import()\\`.\n *\n * If your host environment supports additional options, this type may be\n * augmented via interface merging.\n */\ninterface ImportCallOptions {\n    assert?: ImportAssertions;\n}\n\n/**\n * The type for the \\`assert\\` property of the optional second argument to \\`import()\\`.\n */\ninterface ImportAssertions {\n    [key: string]: string;\n}\n\ninterface Math {\n    /** The mathematical constant e. This is Euler's number, the base of natural logarithms. */\n    readonly E: number;\n    /** The natural logarithm of 10. */\n    readonly LN10: number;\n    /** The natural logarithm of 2. */\n    readonly LN2: number;\n    /** The base-2 logarithm of e. */\n    readonly LOG2E: number;\n    /** The base-10 logarithm of e. */\n    readonly LOG10E: number;\n    /** Pi. This is the ratio of the circumference of a circle to its diameter. */\n    readonly PI: number;\n    /** The square root of 0.5, or, equivalently, one divided by the square root of 2. */\n    readonly SQRT1_2: number;\n    /** The square root of 2. */\n    readonly SQRT2: number;\n    /**\n     * Returns the absolute value of a number (the value without regard to whether it is positive or negative).\n     * For example, the absolute value of -5 is the same as the absolute value of 5.\n     * @param x A numeric expression for which the absolute value is needed.\n     */\n    abs(x: number): number;\n    /**\n     * Returns the arc cosine (or inverse cosine) of a number.\n     * @param x A numeric expression.\n     */\n    acos(x: number): number;\n    /**\n     * Returns the arcsine of a number.\n     * @param x A numeric expression.\n     */\n    asin(x: number): number;\n    /**\n     * Returns the arctangent of a number.\n     * @param x A numeric expression for which the arctangent is needed.\n     */\n    atan(x: number): number;\n    /**\n     * Returns the angle (in radians) from the X axis to a point.\n     * @param y A numeric expression representing the cartesian y-coordinate.\n     * @param x A numeric expression representing the cartesian x-coordinate.\n     */\n    atan2(y: number, x: number): number;\n    /**\n     * Returns the smallest integer greater than or equal to its numeric argument.\n     * @param x A numeric expression.\n     */\n    ceil(x: number): number;\n    /**\n     * Returns the cosine of a number.\n     * @param x A numeric expression that contains an angle measured in radians.\n     */\n    cos(x: number): number;\n    /**\n     * Returns e (the base of natural logarithms) raised to a power.\n     * @param x A numeric expression representing the power of e.\n     */\n    exp(x: number): number;\n    /**\n     * Returns the greatest integer less than or equal to its numeric argument.\n     * @param x A numeric expression.\n     */\n    floor(x: number): number;\n    /**\n     * Returns the natural logarithm (base e) of a number.\n     * @param x A numeric expression.\n     */\n    log(x: number): number;\n    /**\n     * Returns the larger of a set of supplied numeric expressions.\n     * @param values Numeric expressions to be evaluated.\n     */\n    max(...values: number[]): number;\n    /**\n     * Returns the smaller of a set of supplied numeric expressions.\n     * @param values Numeric expressions to be evaluated.\n     */\n    min(...values: number[]): number;\n    /**\n     * Returns the value of a base expression taken to a specified power.\n     * @param x The base value of the expression.\n     * @param y The exponent value of the expression.\n     */\n    pow(x: number, y: number): number;\n    /** Returns a pseudorandom number between 0 and 1. */\n    random(): number;\n    /**\n     * Returns a supplied numeric expression rounded to the nearest integer.\n     * @param x The value to be rounded to the nearest integer.\n     */\n    round(x: number): number;\n    /**\n     * Returns the sine of a number.\n     * @param x A numeric expression that contains an angle measured in radians.\n     */\n    sin(x: number): number;\n    /**\n     * Returns the square root of a number.\n     * @param x A numeric expression.\n     */\n    sqrt(x: number): number;\n    /**\n     * Returns the tangent of a number.\n     * @param x A numeric expression that contains an angle measured in radians.\n     */\n    tan(x: number): number;\n}\n/** An intrinsic object that provides basic mathematics functionality and constants. */\ndeclare var Math: Math;\n\n/** Enables basic storage and retrieval of dates and times. */\ninterface Date {\n    /** Returns a string representation of a date. The format of the string depends on the locale. */\n    toString(): string;\n    /** Returns a date as a string value. */\n    toDateString(): string;\n    /** Returns a time as a string value. */\n    toTimeString(): string;\n    /** Returns a value as a string value appropriate to the host environment's current locale. */\n    toLocaleString(): string;\n    /** Returns a date as a string value appropriate to the host environment's current locale. */\n    toLocaleDateString(): string;\n    /** Returns a time as a string value appropriate to the host environment's current locale. */\n    toLocaleTimeString(): string;\n    /** Returns the stored time value in milliseconds since midnight, January 1, 1970 UTC. */\n    valueOf(): number;\n    /** Returns the stored time value in milliseconds since midnight, January 1, 1970 UTC. */\n    getTime(): number;\n    /** Gets the year, using local time. */\n    getFullYear(): number;\n    /** Gets the year using Universal Coordinated Time (UTC). */\n    getUTCFullYear(): number;\n    /** Gets the month, using local time. */\n    getMonth(): number;\n    /** Gets the month of a Date object using Universal Coordinated Time (UTC). */\n    getUTCMonth(): number;\n    /** Gets the day-of-the-month, using local time. */\n    getDate(): number;\n    /** Gets the day-of-the-month, using Universal Coordinated Time (UTC). */\n    getUTCDate(): number;\n    /** Gets the day of the week, using local time. */\n    getDay(): number;\n    /** Gets the day of the week using Universal Coordinated Time (UTC). */\n    getUTCDay(): number;\n    /** Gets the hours in a date, using local time. */\n    getHours(): number;\n    /** Gets the hours value in a Date object using Universal Coordinated Time (UTC). */\n    getUTCHours(): number;\n    /** Gets the minutes of a Date object, using local time. */\n    getMinutes(): number;\n    /** Gets the minutes of a Date object using Universal Coordinated Time (UTC). */\n    getUTCMinutes(): number;\n    /** Gets the seconds of a Date object, using local time. */\n    getSeconds(): number;\n    /** Gets the seconds of a Date object using Universal Coordinated Time (UTC). */\n    getUTCSeconds(): number;\n    /** Gets the milliseconds of a Date, using local time. */\n    getMilliseconds(): number;\n    /** Gets the milliseconds of a Date object using Universal Coordinated Time (UTC). */\n    getUTCMilliseconds(): number;\n    /** Gets the difference in minutes between the time on the local computer and Universal Coordinated Time (UTC). */\n    getTimezoneOffset(): number;\n    /**\n     * Sets the date and time value in the Date object.\n     * @param time A numeric value representing the number of elapsed milliseconds since midnight, January 1, 1970 GMT.\n     */\n    setTime(time: number): number;\n    /**\n     * Sets the milliseconds value in the Date object using local time.\n     * @param ms A numeric value equal to the millisecond value.\n     */\n    setMilliseconds(ms: number): number;\n    /**\n     * Sets the milliseconds value in the Date object using Universal Coordinated Time (UTC).\n     * @param ms A numeric value equal to the millisecond value.\n     */\n    setUTCMilliseconds(ms: number): number;\n\n    /**\n     * Sets the seconds value in the Date object using local time.\n     * @param sec A numeric value equal to the seconds value.\n     * @param ms A numeric value equal to the milliseconds value.\n     */\n    setSeconds(sec: number, ms?: number): number;\n    /**\n     * Sets the seconds value in the Date object using Universal Coordinated Time (UTC).\n     * @param sec A numeric value equal to the seconds value.\n     * @param ms A numeric value equal to the milliseconds value.\n     */\n    setUTCSeconds(sec: number, ms?: number): number;\n    /**\n     * Sets the minutes value in the Date object using local time.\n     * @param min A numeric value equal to the minutes value.\n     * @param sec A numeric value equal to the seconds value.\n     * @param ms A numeric value equal to the milliseconds value.\n     */\n    setMinutes(min: number, sec?: number, ms?: number): number;\n    /**\n     * Sets the minutes value in the Date object using Universal Coordinated Time (UTC).\n     * @param min A numeric value equal to the minutes value.\n     * @param sec A numeric value equal to the seconds value.\n     * @param ms A numeric value equal to the milliseconds value.\n     */\n    setUTCMinutes(min: number, sec?: number, ms?: number): number;\n    /**\n     * Sets the hour value in the Date object using local time.\n     * @param hours A numeric value equal to the hours value.\n     * @param min A numeric value equal to the minutes value.\n     * @param sec A numeric value equal to the seconds value.\n     * @param ms A numeric value equal to the milliseconds value.\n     */\n    setHours(hours: number, min?: number, sec?: number, ms?: number): number;\n    /**\n     * Sets the hours value in the Date object using Universal Coordinated Time (UTC).\n     * @param hours A numeric value equal to the hours value.\n     * @param min A numeric value equal to the minutes value.\n     * @param sec A numeric value equal to the seconds value.\n     * @param ms A numeric value equal to the milliseconds value.\n     */\n    setUTCHours(hours: number, min?: number, sec?: number, ms?: number): number;\n    /**\n     * Sets the numeric day-of-the-month value of the Date object using local time.\n     * @param date A numeric value equal to the day of the month.\n     */\n    setDate(date: number): number;\n    /**\n     * Sets the numeric day of the month in the Date object using Universal Coordinated Time (UTC).\n     * @param date A numeric value equal to the day of the month.\n     */\n    setUTCDate(date: number): number;\n    /**\n     * Sets the month value in the Date object using local time.\n     * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively.\n     * @param date A numeric value representing the day of the month. If this value is not supplied, the value from a call to the getDate method is used.\n     */\n    setMonth(month: number, date?: number): number;\n    /**\n     * Sets the month value in the Date object using Universal Coordinated Time (UTC).\n     * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively.\n     * @param date A numeric value representing the day of the month. If it is not supplied, the value from a call to the getUTCDate method is used.\n     */\n    setUTCMonth(month: number, date?: number): number;\n    /**\n     * Sets the year of the Date object using local time.\n     * @param year A numeric value for the year.\n     * @param month A zero-based numeric value for the month (0 for January, 11 for December). Must be specified if numDate is specified.\n     * @param date A numeric value equal for the day of the month.\n     */\n    setFullYear(year: number, month?: number, date?: number): number;\n    /**\n     * Sets the year value in the Date object using Universal Coordinated Time (UTC).\n     * @param year A numeric value equal to the year.\n     * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. Must be supplied if numDate is supplied.\n     * @param date A numeric value equal to the day of the month.\n     */\n    setUTCFullYear(year: number, month?: number, date?: number): number;\n    /** Returns a date converted to a string using Universal Coordinated Time (UTC). */\n    toUTCString(): string;\n    /** Returns a date as a string value in ISO format. */\n    toISOString(): string;\n    /** Used by the JSON.stringify method to enable the transformation of an object's data for JavaScript Object Notation (JSON) serialization. */\n    toJSON(key?: any): string;\n}\n\ninterface DateConstructor {\n    new(): Date;\n    new(value: number | string): Date;\n    /**\n     * Creates a new Date.\n     * @param year The full year designation is required for cross-century date accuracy. If year is between 0 and 99 is used, then year is assumed to be 1900 + year.\n     * @param monthIndex The month as a number between 0 and 11 (January to December).\n     * @param date The date as a number between 1 and 31.\n     * @param hours Must be supplied if minutes is supplied. A number from 0 to 23 (midnight to 11pm) that specifies the hour.\n     * @param minutes Must be supplied if seconds is supplied. A number from 0 to 59 that specifies the minutes.\n     * @param seconds Must be supplied if milliseconds is supplied. A number from 0 to 59 that specifies the seconds.\n     * @param ms A number from 0 to 999 that specifies the milliseconds.\n     */\n    new(year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date;\n    (): string;\n    readonly prototype: Date;\n    /**\n     * Parses a string containing a date, and returns the number of milliseconds between that date and midnight, January 1, 1970.\n     * @param s A date string\n     */\n    parse(s: string): number;\n    /**\n     * Returns the number of milliseconds between midnight, January 1, 1970 Universal Coordinated Time (UTC) (or GMT) and the specified date.\n     * @param year The full year designation is required for cross-century date accuracy. If year is between 0 and 99 is used, then year is assumed to be 1900 + year.\n     * @param monthIndex The month as a number between 0 and 11 (January to December).\n     * @param date The date as a number between 1 and 31.\n     * @param hours Must be supplied if minutes is supplied. A number from 0 to 23 (midnight to 11pm) that specifies the hour.\n     * @param minutes Must be supplied if seconds is supplied. A number from 0 to 59 that specifies the minutes.\n     * @param seconds Must be supplied if milliseconds is supplied. A number from 0 to 59 that specifies the seconds.\n     * @param ms A number from 0 to 999 that specifies the milliseconds.\n     */\n    UTC(year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number;\n    /** Returns the number of milliseconds elapsed since midnight, January 1, 1970 Universal Coordinated Time (UTC). */\n    now(): number;\n}\n\ndeclare var Date: DateConstructor;\n\ninterface RegExpMatchArray extends Array<string> {\n    /**\n     * The index of the search at which the result was found.\n     */\n    index?: number;\n    /**\n     * A copy of the search string.\n     */\n    input?: string;\n    /**\n     * The first match. This will always be present because \\`null\\` will be returned if there are no matches.\n     */\n    0: string;\n}\n\ninterface RegExpExecArray extends Array<string> {\n    /**\n     * The index of the search at which the result was found.\n     */\n    index: number;\n    /**\n     * A copy of the search string.\n     */\n    input: string;\n    /**\n     * The first match. This will always be present because \\`null\\` will be returned if there are no matches.\n     */\n    0: string;\n}\n\ninterface RegExp {\n    /**\n     * Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search.\n     * @param string The String object or string literal on which to perform the search.\n     */\n    exec(string: string): RegExpExecArray | null;\n\n    /**\n     * Returns a Boolean value that indicates whether or not a pattern exists in a searched string.\n     * @param string String on which to perform the search.\n     */\n    test(string: string): boolean;\n\n    /** Returns a copy of the text of the regular expression pattern. Read-only. The regExp argument is a Regular expression object. It can be a variable name or a literal. */\n    readonly source: string;\n\n    /** Returns a Boolean value indicating the state of the global flag (g) used with a regular expression. Default is false. Read-only. */\n    readonly global: boolean;\n\n    /** Returns a Boolean value indicating the state of the ignoreCase flag (i) used with a regular expression. Default is false. Read-only. */\n    readonly ignoreCase: boolean;\n\n    /** Returns a Boolean value indicating the state of the multiline flag (m) used with a regular expression. Default is false. Read-only. */\n    readonly multiline: boolean;\n\n    lastIndex: number;\n\n    // Non-standard extensions\n    /** @deprecated A legacy feature for browser compatibility */\n    compile(pattern: string, flags?: string): this;\n}\n\ninterface RegExpConstructor {\n    new(pattern: RegExp | string): RegExp;\n    new(pattern: string, flags?: string): RegExp;\n    (pattern: RegExp | string): RegExp;\n    (pattern: string, flags?: string): RegExp;\n    readonly prototype: RegExp;\n\n    // Non-standard extensions\n    /** @deprecated A legacy feature for browser compatibility */\n    $1: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    $2: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    $3: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    $4: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    $5: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    $6: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    $7: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    $8: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    $9: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    input: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    $_: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    lastMatch: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    \"$&\": string;\n    /** @deprecated A legacy feature for browser compatibility */\n    lastParen: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    \"$+\": string;\n    /** @deprecated A legacy feature for browser compatibility */\n    leftContext: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    \"$\\`\": string;\n    /** @deprecated A legacy feature for browser compatibility */\n    rightContext: string;\n    /** @deprecated A legacy feature for browser compatibility */\n    \"$'\": string;\n}\n\ndeclare var RegExp: RegExpConstructor;\n\ninterface Error {\n    name: string;\n    message: string;\n    stack?: string;\n}\n\ninterface ErrorConstructor {\n    new(message?: string): Error;\n    (message?: string): Error;\n    readonly prototype: Error;\n}\n\ndeclare var Error: ErrorConstructor;\n\ninterface EvalError extends Error {\n}\n\ninterface EvalErrorConstructor extends ErrorConstructor {\n    new(message?: string): EvalError;\n    (message?: string): EvalError;\n    readonly prototype: EvalError;\n}\n\ndeclare var EvalError: EvalErrorConstructor;\n\ninterface RangeError extends Error {\n}\n\ninterface RangeErrorConstructor extends ErrorConstructor {\n    new(message?: string): RangeError;\n    (message?: string): RangeError;\n    readonly prototype: RangeError;\n}\n\ndeclare var RangeError: RangeErrorConstructor;\n\ninterface ReferenceError extends Error {\n}\n\ninterface ReferenceErrorConstructor extends ErrorConstructor {\n    new(message?: string): ReferenceError;\n    (message?: string): ReferenceError;\n    readonly prototype: ReferenceError;\n}\n\ndeclare var ReferenceError: ReferenceErrorConstructor;\n\ninterface SyntaxError extends Error {\n}\n\ninterface SyntaxErrorConstructor extends ErrorConstructor {\n    new(message?: string): SyntaxError;\n    (message?: string): SyntaxError;\n    readonly prototype: SyntaxError;\n}\n\ndeclare var SyntaxError: SyntaxErrorConstructor;\n\ninterface TypeError extends Error {\n}\n\ninterface TypeErrorConstructor extends ErrorConstructor {\n    new(message?: string): TypeError;\n    (message?: string): TypeError;\n    readonly prototype: TypeError;\n}\n\ndeclare var TypeError: TypeErrorConstructor;\n\ninterface URIError extends Error {\n}\n\ninterface URIErrorConstructor extends ErrorConstructor {\n    new(message?: string): URIError;\n    (message?: string): URIError;\n    readonly prototype: URIError;\n}\n\ndeclare var URIError: URIErrorConstructor;\n\ninterface JSON {\n    /**\n     * Converts a JavaScript Object Notation (JSON) string into an object.\n     * @param text A valid JSON string.\n     * @param reviver A function that transforms the results. This function is called for each member of the object.\n     * If a member contains nested objects, the nested objects are transformed before the parent object is.\n     */\n    parse(text: string, reviver?: (this: any, key: string, value: any) => any): any;\n    /**\n     * Converts a JavaScript value to a JavaScript Object Notation (JSON) string.\n     * @param value A JavaScript value, usually an object or array, to be converted.\n     * @param replacer A function that transforms the results.\n     * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.\n     */\n    stringify(value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;\n    /**\n     * Converts a JavaScript value to a JavaScript Object Notation (JSON) string.\n     * @param value A JavaScript value, usually an object or array, to be converted.\n     * @param replacer An array of strings and numbers that acts as an approved list for selecting the object properties that will be stringified.\n     * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.\n     */\n    stringify(value: any, replacer?: (number | string)[] | null, space?: string | number): string;\n}\n\n/**\n * An intrinsic object that provides functions to convert JavaScript values to and from the JavaScript Object Notation (JSON) format.\n */\ndeclare var JSON: JSON;\n\n\n/////////////////////////////\n/// ECMAScript Array API (specially handled by compiler)\n/////////////////////////////\n\ninterface ReadonlyArray<T> {\n    /**\n     * Gets the length of the array. This is a number one higher than the highest element defined in an array.\n     */\n    readonly length: number;\n    /**\n     * Returns a string representation of an array.\n     */\n    toString(): string;\n    /**\n     * Returns a string representation of an array. The elements are converted to string using their toLocaleString methods.\n     */\n    toLocaleString(): string;\n    /**\n     * Combines two or more arrays.\n     * @param items Additional items to add to the end of array1.\n     */\n    concat(...items: ConcatArray<T>[]): T[];\n    /**\n     * Combines two or more arrays.\n     * @param items Additional items to add to the end of array1.\n     */\n    concat(...items: (T | ConcatArray<T>)[]): T[];\n    /**\n     * Adds all the elements of an array separated by the specified separator string.\n     * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n    /**\n     * Returns a section of an array.\n     * @param start The beginning of the specified portion of the array.\n     * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'.\n     */\n    slice(start?: number, end?: number): T[];\n    /**\n     * Returns the index of the first occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\n     */\n    indexOf(searchElement: T, fromIndex?: number): number;\n    /**\n     * Returns the index of the last occurrence of a specified value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array.\n     */\n    lastIndexOf(searchElement: T, fromIndex?: number): number;\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every<S extends T>(predicate: (value: T, index: number, array: readonly T[]) => value is S, thisArg?: any): this is readonly S[];\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any): boolean;\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value true, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any): boolean;\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: T, index: number, array: readonly T[]) => void, thisArg?: any): void;\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\n     */\n    map<U>(callbackfn: (value: T, index: number, array: readonly T[]) => U, thisArg?: any): U[];\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.\n     */\n    filter<S extends T>(predicate: (value: T, index: number, array: readonly T[]) => value is S, thisArg?: any): S[];\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any): T[];\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: readonly T[]) => T): T;\n    reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: readonly T[]) => T, initialValue: T): T;\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: readonly T[]) => U, initialValue: U): U;\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: readonly T[]) => T): T;\n    reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: readonly T[]) => T, initialValue: T): T;\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: readonly T[]) => U, initialValue: U): U;\n\n    readonly [n: number]: T;\n}\n\ninterface ConcatArray<T> {\n    readonly length: number;\n    readonly [n: number]: T;\n    join(separator?: string): string;\n    slice(start?: number, end?: number): T[];\n}\n\ninterface Array<T> {\n    /**\n     * Gets or sets the length of the array. This is a number one higher than the highest index in the array.\n     */\n    length: number;\n    /**\n     * Returns a string representation of an array.\n     */\n    toString(): string;\n    /**\n     * Returns a string representation of an array. The elements are converted to string using their toLocaleString methods.\n     */\n    toLocaleString(): string;\n    /**\n     * Removes the last element from an array and returns it.\n     * If the array is empty, undefined is returned and the array is not modified.\n     */\n    pop(): T | undefined;\n    /**\n     * Appends new elements to the end of an array, and returns the new length of the array.\n     * @param items New elements to add to the array.\n     */\n    push(...items: T[]): number;\n    /**\n     * Combines two or more arrays.\n     * This method returns a new array without modifying any existing arrays.\n     * @param items Additional arrays and/or items to add to the end of the array.\n     */\n    concat(...items: ConcatArray<T>[]): T[];\n    /**\n     * Combines two or more arrays.\n     * This method returns a new array without modifying any existing arrays.\n     * @param items Additional arrays and/or items to add to the end of the array.\n     */\n    concat(...items: (T | ConcatArray<T>)[]): T[];\n    /**\n     * Adds all the elements of an array into a string, separated by the specified separator string.\n     * @param separator A string used to separate one element of the array from the next in the resulting string. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n    /**\n     * Reverses the elements in an array in place.\n     * This method mutates the array and returns a reference to the same array.\n     */\n    reverse(): T[];\n    /**\n     * Removes the first element from an array and returns it.\n     * If the array is empty, undefined is returned and the array is not modified.\n     */\n    shift(): T | undefined;\n    /**\n     * Returns a copy of a section of an array.\n     * For both start and end, a negative index can be used to indicate an offset from the end of the array.\n     * For example, -2 refers to the second to last element of the array.\n     * @param start The beginning index of the specified portion of the array.\n     * If start is undefined, then the slice begins at index 0.\n     * @param end The end index of the specified portion of the array. This is exclusive of the element at the index 'end'.\n     * If end is undefined, then the slice extends to the end of the array.\n     */\n    slice(start?: number, end?: number): T[];\n    /**\n     * Sorts an array in place.\n     * This method mutates the array and returns a reference to the same array.\n     * @param compareFn Function used to determine the order of the elements. It is expected to return\n     * a negative value if the first argument is less than the second argument, zero if they're equal, and a positive\n     * value otherwise. If omitted, the elements are sorted in ascending, ASCII character order.\n     * \\`\\`\\`ts\n     * [11,2,22,1].sort((a, b) => a - b)\n     * \\`\\`\\`\n     */\n    sort(compareFn?: (a: T, b: T) => number): this;\n    /**\n     * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements.\n     * @param start The zero-based location in the array from which to start removing elements.\n     * @param deleteCount The number of elements to remove.\n     * @returns An array containing the elements that were deleted.\n     */\n    splice(start: number, deleteCount?: number): T[];\n    /**\n     * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements.\n     * @param start The zero-based location in the array from which to start removing elements.\n     * @param deleteCount The number of elements to remove.\n     * @param items Elements to insert into the array in place of the deleted elements.\n     * @returns An array containing the elements that were deleted.\n     */\n    splice(start: number, deleteCount: number, ...items: T[]): T[];\n    /**\n     * Inserts new elements at the start of an array, and returns the new length of the array.\n     * @param items Elements to insert at the start of the array.\n     */\n    unshift(...items: T[]): number;\n    /**\n     * Returns the index of the first occurrence of a value in an array, or -1 if it is not present.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\n     */\n    indexOf(searchElement: T, fromIndex?: number): number;\n    /**\n     * Returns the index of the last occurrence of a specified value in an array, or -1 if it is not present.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin searching backward. If fromIndex is omitted, the search starts at the last index in the array.\n     */\n    lastIndexOf(searchElement: T, fromIndex?: number): number;\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every<S extends T>(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): this is S[];\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean;\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value true, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): boolean;\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\n     */\n    map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.\n     */\n    filter<S extends T>(predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[];\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[];\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;\n    reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U;\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;\n    reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U;\n\n    [n: number]: T;\n}\n\ninterface ArrayConstructor {\n    new(arrayLength?: number): any[];\n    new <T>(arrayLength: number): T[];\n    new <T>(...items: T[]): T[];\n    (arrayLength?: number): any[];\n    <T>(arrayLength: number): T[];\n    <T>(...items: T[]): T[];\n    isArray(arg: any): arg is any[];\n    readonly prototype: any[];\n}\n\ndeclare var Array: ArrayConstructor;\n\ninterface TypedPropertyDescriptor<T> {\n    enumerable?: boolean;\n    configurable?: boolean;\n    writable?: boolean;\n    value?: T;\n    get?: () => T;\n    set?: (value: T) => void;\n}\n\ndeclare type PromiseConstructorLike = new <T>(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void) => PromiseLike<T>;\n\ninterface PromiseLike<T> {\n    /**\n     * Attaches callbacks for the resolution and/or rejection of the Promise.\n     * @param onfulfilled The callback to execute when the Promise is resolved.\n     * @param onrejected The callback to execute when the Promise is rejected.\n     * @returns A Promise for the completion of which ever callback is executed.\n     */\n    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): PromiseLike<TResult1 | TResult2>;\n}\n\n/**\n * Represents the completion of an asynchronous operation\n */\ninterface Promise<T> {\n    /**\n     * Attaches callbacks for the resolution and/or rejection of the Promise.\n     * @param onfulfilled The callback to execute when the Promise is resolved.\n     * @param onrejected The callback to execute when the Promise is rejected.\n     * @returns A Promise for the completion of which ever callback is executed.\n     */\n    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;\n\n    /**\n     * Attaches a callback for only the rejection of the Promise.\n     * @param onrejected The callback to execute when the Promise is rejected.\n     * @returns A Promise for the completion of the callback.\n     */\n    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): Promise<T | TResult>;\n}\n\n/**\n * Recursively unwraps the \"awaited type\" of a type. Non-promise \"thenables\" should resolve to \\`never\\`. This emulates the behavior of \\`await\\`.\n */\ntype Awaited<T> =\n    T extends null | undefined ? T : // special case for \\`null | undefined\\` when not in \\`--strictNullChecks\\` mode\n        T extends object & { then(onfulfilled: infer F, ...args: infer _): any } ? // \\`await\\` only unwraps object types with a callable \\`then\\`. Non-object types are not unwrapped\n            F extends ((value: infer V, ...args: infer _) => any) ? // if the argument to \\`then\\` is callable, extracts the first argument\n                Awaited<V> : // recursively unwrap the value\n                never : // the argument to \\`then\\` was not callable\n        T; // non-object or non-thenable\n\ninterface ArrayLike<T> {\n    readonly length: number;\n    readonly [n: number]: T;\n}\n\n/**\n * Make all properties in T optional\n */\ntype Partial<T> = {\n    [P in keyof T]?: T[P];\n};\n\n/**\n * Make all properties in T required\n */\ntype Required<T> = {\n    [P in keyof T]-?: T[P];\n};\n\n/**\n * Make all properties in T readonly\n */\ntype Readonly<T> = {\n    readonly [P in keyof T]: T[P];\n};\n\n/**\n * From T, pick a set of properties whose keys are in the union K\n */\ntype Pick<T, K extends keyof T> = {\n    [P in K]: T[P];\n};\n\n/**\n * Construct a type with a set of properties K of type T\n */\ntype Record<K extends keyof any, T> = {\n    [P in K]: T;\n};\n\n/**\n * Exclude from T those types that are assignable to U\n */\ntype Exclude<T, U> = T extends U ? never : T;\n\n/**\n * Extract from T those types that are assignable to U\n */\ntype Extract<T, U> = T extends U ? T : never;\n\n/**\n * Construct a type with the properties of T except for those in type K.\n */\ntype Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;\n\n/**\n * Exclude null and undefined from T\n */\ntype NonNullable<T> = T & {};\n\n/**\n * Obtain the parameters of a function type in a tuple\n */\ntype Parameters<T extends (...args: any) => any> = T extends (...args: infer P) => any ? P : never;\n\n/**\n * Obtain the parameters of a constructor function type in a tuple\n */\ntype ConstructorParameters<T extends abstract new (...args: any) => any> = T extends abstract new (...args: infer P) => any ? P : never;\n\n/**\n * Obtain the return type of a function type\n */\ntype ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;\n\n/**\n * Obtain the return type of a constructor function type\n */\ntype InstanceType<T extends abstract new (...args: any) => any> = T extends abstract new (...args: any) => infer R ? R : any;\n\n/**\n * Convert string literal type to uppercase\n */\ntype Uppercase<S extends string> = intrinsic;\n\n/**\n * Convert string literal type to lowercase\n */\ntype Lowercase<S extends string> = intrinsic;\n\n/**\n * Convert first character of string literal type to uppercase\n */\ntype Capitalize<S extends string> = intrinsic;\n\n/**\n * Convert first character of string literal type to lowercase\n */\ntype Uncapitalize<S extends string> = intrinsic;\n\n/**\n * Marker for contextual 'this' type\n */\ninterface ThisType<T> { }\n\n/**\n * Represents a raw buffer of binary data, which is used to store data for the\n * different typed arrays. ArrayBuffers cannot be read from or written to directly,\n * but can be passed to a typed array or DataView Object to interpret the raw\n * buffer as needed.\n */\ninterface ArrayBuffer {\n    /**\n     * Read-only. The length of the ArrayBuffer (in bytes).\n     */\n    readonly byteLength: number;\n\n    /**\n     * Returns a section of an ArrayBuffer.\n     */\n    slice(begin: number, end?: number): ArrayBuffer;\n}\n\n/**\n * Allowed ArrayBuffer types for the buffer of an ArrayBufferView and related Typed Arrays.\n */\ninterface ArrayBufferTypes {\n    ArrayBuffer: ArrayBuffer;\n}\ntype ArrayBufferLike = ArrayBufferTypes[keyof ArrayBufferTypes];\n\ninterface ArrayBufferConstructor {\n    readonly prototype: ArrayBuffer;\n    new(byteLength: number): ArrayBuffer;\n    isView(arg: any): arg is ArrayBufferView;\n}\ndeclare var ArrayBuffer: ArrayBufferConstructor;\n\ninterface ArrayBufferView {\n    /**\n     * The ArrayBuffer instance referenced by the array.\n     */\n    buffer: ArrayBufferLike;\n\n    /**\n     * The length in bytes of the array.\n     */\n    byteLength: number;\n\n    /**\n     * The offset in bytes of the array.\n     */\n    byteOffset: number;\n}\n\ninterface DataView {\n    readonly buffer: ArrayBuffer;\n    readonly byteLength: number;\n    readonly byteOffset: number;\n    /**\n     * Gets the Float32 value at the specified byte offset from the start of the view. There is\n     * no alignment constraint; multi-byte values may be fetched from any offset.\n     * @param byteOffset The place in the buffer at which the value should be retrieved.\n     * @param littleEndian If false or undefined, a big-endian value should be read.\n     */\n    getFloat32(byteOffset: number, littleEndian?: boolean): number;\n\n    /**\n     * Gets the Float64 value at the specified byte offset from the start of the view. There is\n     * no alignment constraint; multi-byte values may be fetched from any offset.\n     * @param byteOffset The place in the buffer at which the value should be retrieved.\n     * @param littleEndian If false or undefined, a big-endian value should be read.\n     */\n    getFloat64(byteOffset: number, littleEndian?: boolean): number;\n\n    /**\n     * Gets the Int8 value at the specified byte offset from the start of the view. There is\n     * no alignment constraint; multi-byte values may be fetched from any offset.\n     * @param byteOffset The place in the buffer at which the value should be retrieved.\n     */\n    getInt8(byteOffset: number): number;\n\n    /**\n     * Gets the Int16 value at the specified byte offset from the start of the view. There is\n     * no alignment constraint; multi-byte values may be fetched from any offset.\n     * @param byteOffset The place in the buffer at which the value should be retrieved.\n     * @param littleEndian If false or undefined, a big-endian value should be read.\n     */\n    getInt16(byteOffset: number, littleEndian?: boolean): number;\n    /**\n     * Gets the Int32 value at the specified byte offset from the start of the view. There is\n     * no alignment constraint; multi-byte values may be fetched from any offset.\n     * @param byteOffset The place in the buffer at which the value should be retrieved.\n     * @param littleEndian If false or undefined, a big-endian value should be read.\n     */\n    getInt32(byteOffset: number, littleEndian?: boolean): number;\n\n    /**\n     * Gets the Uint8 value at the specified byte offset from the start of the view. There is\n     * no alignment constraint; multi-byte values may be fetched from any offset.\n     * @param byteOffset The place in the buffer at which the value should be retrieved.\n     */\n    getUint8(byteOffset: number): number;\n\n    /**\n     * Gets the Uint16 value at the specified byte offset from the start of the view. There is\n     * no alignment constraint; multi-byte values may be fetched from any offset.\n     * @param byteOffset The place in the buffer at which the value should be retrieved.\n     * @param littleEndian If false or undefined, a big-endian value should be read.\n     */\n    getUint16(byteOffset: number, littleEndian?: boolean): number;\n\n    /**\n     * Gets the Uint32 value at the specified byte offset from the start of the view. There is\n     * no alignment constraint; multi-byte values may be fetched from any offset.\n     * @param byteOffset The place in the buffer at which the value should be retrieved.\n     * @param littleEndian If false or undefined, a big-endian value should be read.\n     */\n    getUint32(byteOffset: number, littleEndian?: boolean): number;\n\n    /**\n     * Stores an Float32 value at the specified byte offset from the start of the view.\n     * @param byteOffset The place in the buffer at which the value should be set.\n     * @param value The value to set.\n     * @param littleEndian If false or undefined, a big-endian value should be written.\n     */\n    setFloat32(byteOffset: number, value: number, littleEndian?: boolean): void;\n\n    /**\n     * Stores an Float64 value at the specified byte offset from the start of the view.\n     * @param byteOffset The place in the buffer at which the value should be set.\n     * @param value The value to set.\n     * @param littleEndian If false or undefined, a big-endian value should be written.\n     */\n    setFloat64(byteOffset: number, value: number, littleEndian?: boolean): void;\n\n    /**\n     * Stores an Int8 value at the specified byte offset from the start of the view.\n     * @param byteOffset The place in the buffer at which the value should be set.\n     * @param value The value to set.\n     */\n    setInt8(byteOffset: number, value: number): void;\n\n    /**\n     * Stores an Int16 value at the specified byte offset from the start of the view.\n     * @param byteOffset The place in the buffer at which the value should be set.\n     * @param value The value to set.\n     * @param littleEndian If false or undefined, a big-endian value should be written.\n     */\n    setInt16(byteOffset: number, value: number, littleEndian?: boolean): void;\n\n    /**\n     * Stores an Int32 value at the specified byte offset from the start of the view.\n     * @param byteOffset The place in the buffer at which the value should be set.\n     * @param value The value to set.\n     * @param littleEndian If false or undefined, a big-endian value should be written.\n     */\n    setInt32(byteOffset: number, value: number, littleEndian?: boolean): void;\n\n    /**\n     * Stores an Uint8 value at the specified byte offset from the start of the view.\n     * @param byteOffset The place in the buffer at which the value should be set.\n     * @param value The value to set.\n     */\n    setUint8(byteOffset: number, value: number): void;\n\n    /**\n     * Stores an Uint16 value at the specified byte offset from the start of the view.\n     * @param byteOffset The place in the buffer at which the value should be set.\n     * @param value The value to set.\n     * @param littleEndian If false or undefined, a big-endian value should be written.\n     */\n    setUint16(byteOffset: number, value: number, littleEndian?: boolean): void;\n\n    /**\n     * Stores an Uint32 value at the specified byte offset from the start of the view.\n     * @param byteOffset The place in the buffer at which the value should be set.\n     * @param value The value to set.\n     * @param littleEndian If false or undefined, a big-endian value should be written.\n     */\n    setUint32(byteOffset: number, value: number, littleEndian?: boolean): void;\n}\n\ninterface DataViewConstructor {\n    readonly prototype: DataView;\n    new(buffer: ArrayBufferLike, byteOffset?: number, byteLength?: number): DataView;\n}\ndeclare var DataView: DataViewConstructor;\n\n/**\n * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested\n * number of bytes could not be allocated an exception is raised.\n */\ninterface Int8Array {\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * The ArrayBuffer instance referenced by the array.\n     */\n    readonly buffer: ArrayBufferLike;\n\n    /**\n     * The length in bytes of the array.\n     */\n    readonly byteLength: number;\n\n    /**\n     * The offset in bytes of the array.\n     */\n    readonly byteOffset: number;\n\n    /**\n     * Returns the this object after copying a section of the array identified by start and end\n     * to the same array starting at position target\n     * @param target If target is negative, it is treated as length+target where length is the\n     * length of the array.\n     * @param start If start is negative, it is treated as length+start. If end is negative, it\n     * is treated as length+end.\n     * @param end If not specified, length of the this object is used as its default value.\n     */\n    copyWithin(target: number, start: number, end?: number): this;\n\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Changes all array elements from \\`start\\` to \\`end\\` index to a static \\`value\\` and returns the modified array\n     * @param value value to fill array section with\n     * @param start index to start filling the array at. If start is negative, it is treated as\n     * length+start where length is the length of the array.\n     * @param end index to stop filling the array at. If end is negative, it is treated as\n     * length+end.\n     */\n    fill(value: number, start?: number, end?: number): this;\n\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls\n     * the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: number, index: number, array: Int8Array) => any, thisArg?: any): Int8Array;\n\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find(predicate: (value: number, index: number, obj: Int8Array) => boolean, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: number, index: number, obj: Int8Array) => boolean, thisArg?: any): number;\n\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: number, index: number, array: Int8Array) => void, thisArg?: any): void;\n\n    /**\n     * Returns the index of the first occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     *  search starts at index 0.\n     */\n    indexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * Adds all the elements of an array separated by the specified separator string.\n     * @param separator A string used to separate one element of an array from the next in the\n     * resulting String. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n\n    /**\n     * Returns the index of the last occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    lastIndexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * The length of the array.\n     */\n    readonly length: number;\n\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that\n     * contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    map(callbackfn: (value: number, index: number, array: Int8Array) => number, thisArg?: any): Int8Array;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number): number;\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U, initialValue: U): U;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an\n     * argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number): number;\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U, initialValue: U): U;\n\n    /**\n     * Reverses the elements in an Array.\n     */\n    reverse(): Int8Array;\n\n    /**\n     * Sets a value or an array of values.\n     * @param array A typed or untyped array of values to set.\n     * @param offset The index in the current array at which the values are to be written.\n     */\n    set(array: ArrayLike<number>, offset?: number): void;\n\n    /**\n     * Returns a section of an array.\n     * @param start The beginning of the specified portion of the array.\n     * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'.\n     */\n    slice(start?: number, end?: number): Int8Array;\n\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value true, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Sorts an array.\n     * @param compareFn Function used to determine the order of the elements. It is expected to return\n     * a negative value if first argument is less than second argument, zero if they're equal and a positive\n     * value otherwise. If omitted, the elements are sorted in ascending order.\n     * \\`\\`\\`ts\n     * [11,2,22,1].sort((a, b) => a - b)\n     * \\`\\`\\`\n     */\n    sort(compareFn?: (a: number, b: number) => number): this;\n\n    /**\n     * Gets a new Int8Array view of the ArrayBuffer store for this array, referencing the elements\n     * at begin, inclusive, up to end, exclusive.\n     * @param begin The index of the beginning of the array.\n     * @param end The index of the end of the array.\n     */\n    subarray(begin?: number, end?: number): Int8Array;\n\n    /**\n     * Converts a number to a string by using the current locale.\n     */\n    toLocaleString(): string;\n\n    /**\n     * Returns a string representation of an array.\n     */\n    toString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): Int8Array;\n\n    [index: number]: number;\n}\ninterface Int8ArrayConstructor {\n    readonly prototype: Int8Array;\n    new(length: number): Int8Array;\n    new(array: ArrayLike<number> | ArrayBufferLike): Int8Array;\n    new(buffer: ArrayBufferLike, byteOffset?: number, length?: number): Int8Array;\n\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * Returns a new array from a set of elements.\n     * @param items A set of elements to include in the new array object.\n     */\n    of(...items: number[]): Int8Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     */\n    from(arrayLike: ArrayLike<number>): Int8Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from<T>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => number, thisArg?: any): Int8Array;\n\n\n}\ndeclare var Int8Array: Int8ArrayConstructor;\n\n/**\n * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the\n * requested number of bytes could not be allocated an exception is raised.\n */\ninterface Uint8Array {\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * The ArrayBuffer instance referenced by the array.\n     */\n    readonly buffer: ArrayBufferLike;\n\n    /**\n     * The length in bytes of the array.\n     */\n    readonly byteLength: number;\n\n    /**\n     * The offset in bytes of the array.\n     */\n    readonly byteOffset: number;\n\n    /**\n     * Returns the this object after copying a section of the array identified by start and end\n     * to the same array starting at position target\n     * @param target If target is negative, it is treated as length+target where length is the\n     * length of the array.\n     * @param start If start is negative, it is treated as length+start. If end is negative, it\n     * is treated as length+end.\n     * @param end If not specified, length of the this object is used as its default value.\n     */\n    copyWithin(target: number, start: number, end?: number): this;\n\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Changes all array elements from \\`start\\` to \\`end\\` index to a static \\`value\\` and returns the modified array\n     * @param value value to fill array section with\n     * @param start index to start filling the array at. If start is negative, it is treated as\n     * length+start where length is the length of the array.\n     * @param end index to stop filling the array at. If end is negative, it is treated as\n     * length+end.\n     */\n    fill(value: number, start?: number, end?: number): this;\n\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls\n     * the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: number, index: number, array: Uint8Array) => any, thisArg?: any): Uint8Array;\n\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find(predicate: (value: number, index: number, obj: Uint8Array) => boolean, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: number, index: number, obj: Uint8Array) => boolean, thisArg?: any): number;\n\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: number, index: number, array: Uint8Array) => void, thisArg?: any): void;\n\n    /**\n     * Returns the index of the first occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     *  search starts at index 0.\n     */\n    indexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * Adds all the elements of an array separated by the specified separator string.\n     * @param separator A string used to separate one element of an array from the next in the\n     * resulting String. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n\n    /**\n     * Returns the index of the last occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    lastIndexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * The length of the array.\n     */\n    readonly length: number;\n\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that\n     * contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    map(callbackfn: (value: number, index: number, array: Uint8Array) => number, thisArg?: any): Uint8Array;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number): number;\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U): U;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an\n     * argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number): number;\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U): U;\n\n    /**\n     * Reverses the elements in an Array.\n     */\n    reverse(): Uint8Array;\n\n    /**\n     * Sets a value or an array of values.\n     * @param array A typed or untyped array of values to set.\n     * @param offset The index in the current array at which the values are to be written.\n     */\n    set(array: ArrayLike<number>, offset?: number): void;\n\n    /**\n     * Returns a section of an array.\n     * @param start The beginning of the specified portion of the array.\n     * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'.\n     */\n    slice(start?: number, end?: number): Uint8Array;\n\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value true, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Sorts an array.\n     * @param compareFn Function used to determine the order of the elements. It is expected to return\n     * a negative value if first argument is less than second argument, zero if they're equal and a positive\n     * value otherwise. If omitted, the elements are sorted in ascending order.\n     * \\`\\`\\`ts\n     * [11,2,22,1].sort((a, b) => a - b)\n     * \\`\\`\\`\n     */\n    sort(compareFn?: (a: number, b: number) => number): this;\n\n    /**\n     * Gets a new Uint8Array view of the ArrayBuffer store for this array, referencing the elements\n     * at begin, inclusive, up to end, exclusive.\n     * @param begin The index of the beginning of the array.\n     * @param end The index of the end of the array.\n     */\n    subarray(begin?: number, end?: number): Uint8Array;\n\n    /**\n     * Converts a number to a string by using the current locale.\n     */\n    toLocaleString(): string;\n\n    /**\n     * Returns a string representation of an array.\n     */\n    toString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): Uint8Array;\n\n    [index: number]: number;\n}\n\ninterface Uint8ArrayConstructor {\n    readonly prototype: Uint8Array;\n    new(length: number): Uint8Array;\n    new(array: ArrayLike<number> | ArrayBufferLike): Uint8Array;\n    new(buffer: ArrayBufferLike, byteOffset?: number, length?: number): Uint8Array;\n\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * Returns a new array from a set of elements.\n     * @param items A set of elements to include in the new array object.\n     */\n    of(...items: number[]): Uint8Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     */\n    from(arrayLike: ArrayLike<number>): Uint8Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from<T>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => number, thisArg?: any): Uint8Array;\n\n}\ndeclare var Uint8Array: Uint8ArrayConstructor;\n\n/**\n * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0.\n * If the requested number of bytes could not be allocated an exception is raised.\n */\ninterface Uint8ClampedArray {\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * The ArrayBuffer instance referenced by the array.\n     */\n    readonly buffer: ArrayBufferLike;\n\n    /**\n     * The length in bytes of the array.\n     */\n    readonly byteLength: number;\n\n    /**\n     * The offset in bytes of the array.\n     */\n    readonly byteOffset: number;\n\n    /**\n     * Returns the this object after copying a section of the array identified by start and end\n     * to the same array starting at position target\n     * @param target If target is negative, it is treated as length+target where length is the\n     * length of the array.\n     * @param start If start is negative, it is treated as length+start. If end is negative, it\n     * is treated as length+end.\n     * @param end If not specified, length of the this object is used as its default value.\n     */\n    copyWithin(target: number, start: number, end?: number): this;\n\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Changes all array elements from \\`start\\` to \\`end\\` index to a static \\`value\\` and returns the modified array\n     * @param value value to fill array section with\n     * @param start index to start filling the array at. If start is negative, it is treated as\n     * length+start where length is the length of the array.\n     * @param end index to stop filling the array at. If end is negative, it is treated as\n     * length+end.\n     */\n    fill(value: number, start?: number, end?: number): this;\n\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls\n     * the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: number, index: number, array: Uint8ClampedArray) => any, thisArg?: any): Uint8ClampedArray;\n\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find(predicate: (value: number, index: number, obj: Uint8ClampedArray) => boolean, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: number, index: number, obj: Uint8ClampedArray) => boolean, thisArg?: any): number;\n\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => void, thisArg?: any): void;\n\n    /**\n     * Returns the index of the first occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     *  search starts at index 0.\n     */\n    indexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * Adds all the elements of an array separated by the specified separator string.\n     * @param separator A string used to separate one element of an array from the next in the\n     * resulting String. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n\n    /**\n     * Returns the index of the last occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    lastIndexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * The length of the array.\n     */\n    readonly length: number;\n\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that\n     * contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    map(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => number, thisArg?: any): Uint8ClampedArray;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number): number;\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U, initialValue: U): U;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an\n     * argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number): number;\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U, initialValue: U): U;\n\n    /**\n     * Reverses the elements in an Array.\n     */\n    reverse(): Uint8ClampedArray;\n\n    /**\n     * Sets a value or an array of values.\n     * @param array A typed or untyped array of values to set.\n     * @param offset The index in the current array at which the values are to be written.\n     */\n    set(array: ArrayLike<number>, offset?: number): void;\n\n    /**\n     * Returns a section of an array.\n     * @param start The beginning of the specified portion of the array.\n     * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'.\n     */\n    slice(start?: number, end?: number): Uint8ClampedArray;\n\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value true, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Sorts an array.\n     * @param compareFn Function used to determine the order of the elements. It is expected to return\n     * a negative value if first argument is less than second argument, zero if they're equal and a positive\n     * value otherwise. If omitted, the elements are sorted in ascending order.\n     * \\`\\`\\`ts\n     * [11,2,22,1].sort((a, b) => a - b)\n     * \\`\\`\\`\n     */\n    sort(compareFn?: (a: number, b: number) => number): this;\n\n    /**\n     * Gets a new Uint8ClampedArray view of the ArrayBuffer store for this array, referencing the elements\n     * at begin, inclusive, up to end, exclusive.\n     * @param begin The index of the beginning of the array.\n     * @param end The index of the end of the array.\n     */\n    subarray(begin?: number, end?: number): Uint8ClampedArray;\n\n    /**\n     * Converts a number to a string by using the current locale.\n     */\n    toLocaleString(): string;\n\n    /**\n     * Returns a string representation of an array.\n     */\n    toString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): Uint8ClampedArray;\n\n    [index: number]: number;\n}\n\ninterface Uint8ClampedArrayConstructor {\n    readonly prototype: Uint8ClampedArray;\n    new(length: number): Uint8ClampedArray;\n    new(array: ArrayLike<number> | ArrayBufferLike): Uint8ClampedArray;\n    new(buffer: ArrayBufferLike, byteOffset?: number, length?: number): Uint8ClampedArray;\n\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * Returns a new array from a set of elements.\n     * @param items A set of elements to include in the new array object.\n     */\n    of(...items: number[]): Uint8ClampedArray;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     */\n    from(arrayLike: ArrayLike<number>): Uint8ClampedArray;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from<T>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => number, thisArg?: any): Uint8ClampedArray;\n}\ndeclare var Uint8ClampedArray: Uint8ClampedArrayConstructor;\n\n/**\n * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the\n * requested number of bytes could not be allocated an exception is raised.\n */\ninterface Int16Array {\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * The ArrayBuffer instance referenced by the array.\n     */\n    readonly buffer: ArrayBufferLike;\n\n    /**\n     * The length in bytes of the array.\n     */\n    readonly byteLength: number;\n\n    /**\n     * The offset in bytes of the array.\n     */\n    readonly byteOffset: number;\n\n    /**\n     * Returns the this object after copying a section of the array identified by start and end\n     * to the same array starting at position target\n     * @param target If target is negative, it is treated as length+target where length is the\n     * length of the array.\n     * @param start If start is negative, it is treated as length+start. If end is negative, it\n     * is treated as length+end.\n     * @param end If not specified, length of the this object is used as its default value.\n     */\n    copyWithin(target: number, start: number, end?: number): this;\n\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Changes all array elements from \\`start\\` to \\`end\\` index to a static \\`value\\` and returns the modified array\n     * @param value value to fill array section with\n     * @param start index to start filling the array at. If start is negative, it is treated as\n     * length+start where length is the length of the array.\n     * @param end index to stop filling the array at. If end is negative, it is treated as\n     * length+end.\n     */\n    fill(value: number, start?: number, end?: number): this;\n\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls\n     * the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: number, index: number, array: Int16Array) => any, thisArg?: any): Int16Array;\n\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find(predicate: (value: number, index: number, obj: Int16Array) => boolean, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: number, index: number, obj: Int16Array) => boolean, thisArg?: any): number;\n\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: number, index: number, array: Int16Array) => void, thisArg?: any): void;\n    /**\n     * Returns the index of the first occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     *  search starts at index 0.\n     */\n    indexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * Adds all the elements of an array separated by the specified separator string.\n     * @param separator A string used to separate one element of an array from the next in the\n     * resulting String. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n\n    /**\n     * Returns the index of the last occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    lastIndexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * The length of the array.\n     */\n    readonly length: number;\n\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that\n     * contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    map(callbackfn: (value: number, index: number, array: Int16Array) => number, thisArg?: any): Int16Array;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number): number;\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U, initialValue: U): U;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an\n     * argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number): number;\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U, initialValue: U): U;\n\n    /**\n     * Reverses the elements in an Array.\n     */\n    reverse(): Int16Array;\n\n    /**\n     * Sets a value or an array of values.\n     * @param array A typed or untyped array of values to set.\n     * @param offset The index in the current array at which the values are to be written.\n     */\n    set(array: ArrayLike<number>, offset?: number): void;\n\n    /**\n     * Returns a section of an array.\n     * @param start The beginning of the specified portion of the array.\n     * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'.\n     */\n    slice(start?: number, end?: number): Int16Array;\n\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value true, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Sorts an array.\n     * @param compareFn Function used to determine the order of the elements. It is expected to return\n     * a negative value if first argument is less than second argument, zero if they're equal and a positive\n     * value otherwise. If omitted, the elements are sorted in ascending order.\n     * \\`\\`\\`ts\n     * [11,2,22,1].sort((a, b) => a - b)\n     * \\`\\`\\`\n     */\n    sort(compareFn?: (a: number, b: number) => number): this;\n\n    /**\n     * Gets a new Int16Array view of the ArrayBuffer store for this array, referencing the elements\n     * at begin, inclusive, up to end, exclusive.\n     * @param begin The index of the beginning of the array.\n     * @param end The index of the end of the array.\n     */\n    subarray(begin?: number, end?: number): Int16Array;\n\n    /**\n     * Converts a number to a string by using the current locale.\n     */\n    toLocaleString(): string;\n\n    /**\n     * Returns a string representation of an array.\n     */\n    toString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): Int16Array;\n\n    [index: number]: number;\n}\n\ninterface Int16ArrayConstructor {\n    readonly prototype: Int16Array;\n    new(length: number): Int16Array;\n    new(array: ArrayLike<number> | ArrayBufferLike): Int16Array;\n    new(buffer: ArrayBufferLike, byteOffset?: number, length?: number): Int16Array;\n\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * Returns a new array from a set of elements.\n     * @param items A set of elements to include in the new array object.\n     */\n    of(...items: number[]): Int16Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     */\n    from(arrayLike: ArrayLike<number>): Int16Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from<T>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => number, thisArg?: any): Int16Array;\n\n\n}\ndeclare var Int16Array: Int16ArrayConstructor;\n\n/**\n * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the\n * requested number of bytes could not be allocated an exception is raised.\n */\ninterface Uint16Array {\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * The ArrayBuffer instance referenced by the array.\n     */\n    readonly buffer: ArrayBufferLike;\n\n    /**\n     * The length in bytes of the array.\n     */\n    readonly byteLength: number;\n\n    /**\n     * The offset in bytes of the array.\n     */\n    readonly byteOffset: number;\n\n    /**\n     * Returns the this object after copying a section of the array identified by start and end\n     * to the same array starting at position target\n     * @param target If target is negative, it is treated as length+target where length is the\n     * length of the array.\n     * @param start If start is negative, it is treated as length+start. If end is negative, it\n     * is treated as length+end.\n     * @param end If not specified, length of the this object is used as its default value.\n     */\n    copyWithin(target: number, start: number, end?: number): this;\n\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Changes all array elements from \\`start\\` to \\`end\\` index to a static \\`value\\` and returns the modified array\n     * @param value value to fill array section with\n     * @param start index to start filling the array at. If start is negative, it is treated as\n     * length+start where length is the length of the array.\n     * @param end index to stop filling the array at. If end is negative, it is treated as\n     * length+end.\n     */\n    fill(value: number, start?: number, end?: number): this;\n\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls\n     * the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: number, index: number, array: Uint16Array) => any, thisArg?: any): Uint16Array;\n\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find(predicate: (value: number, index: number, obj: Uint16Array) => boolean, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: number, index: number, obj: Uint16Array) => boolean, thisArg?: any): number;\n\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: number, index: number, array: Uint16Array) => void, thisArg?: any): void;\n\n    /**\n     * Returns the index of the first occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     *  search starts at index 0.\n     */\n    indexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * Adds all the elements of an array separated by the specified separator string.\n     * @param separator A string used to separate one element of an array from the next in the\n     * resulting String. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n\n    /**\n     * Returns the index of the last occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    lastIndexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * The length of the array.\n     */\n    readonly length: number;\n\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that\n     * contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    map(callbackfn: (value: number, index: number, array: Uint16Array) => number, thisArg?: any): Uint16Array;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number): number;\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U, initialValue: U): U;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an\n     * argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number): number;\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U, initialValue: U): U;\n\n    /**\n     * Reverses the elements in an Array.\n     */\n    reverse(): Uint16Array;\n\n    /**\n     * Sets a value or an array of values.\n     * @param array A typed or untyped array of values to set.\n     * @param offset The index in the current array at which the values are to be written.\n     */\n    set(array: ArrayLike<number>, offset?: number): void;\n\n    /**\n     * Returns a section of an array.\n     * @param start The beginning of the specified portion of the array.\n     * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'.\n     */\n    slice(start?: number, end?: number): Uint16Array;\n\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value true, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Sorts an array.\n     * @param compareFn Function used to determine the order of the elements. It is expected to return\n     * a negative value if first argument is less than second argument, zero if they're equal and a positive\n     * value otherwise. If omitted, the elements are sorted in ascending order.\n     * \\`\\`\\`ts\n     * [11,2,22,1].sort((a, b) => a - b)\n     * \\`\\`\\`\n     */\n    sort(compareFn?: (a: number, b: number) => number): this;\n\n    /**\n     * Gets a new Uint16Array view of the ArrayBuffer store for this array, referencing the elements\n     * at begin, inclusive, up to end, exclusive.\n     * @param begin The index of the beginning of the array.\n     * @param end The index of the end of the array.\n     */\n    subarray(begin?: number, end?: number): Uint16Array;\n\n    /**\n     * Converts a number to a string by using the current locale.\n     */\n    toLocaleString(): string;\n\n    /**\n     * Returns a string representation of an array.\n     */\n    toString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): Uint16Array;\n\n    [index: number]: number;\n}\n\ninterface Uint16ArrayConstructor {\n    readonly prototype: Uint16Array;\n    new(length: number): Uint16Array;\n    new(array: ArrayLike<number> | ArrayBufferLike): Uint16Array;\n    new(buffer: ArrayBufferLike, byteOffset?: number, length?: number): Uint16Array;\n\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * Returns a new array from a set of elements.\n     * @param items A set of elements to include in the new array object.\n     */\n    of(...items: number[]): Uint16Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     */\n    from(arrayLike: ArrayLike<number>): Uint16Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from<T>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => number, thisArg?: any): Uint16Array;\n\n\n}\ndeclare var Uint16Array: Uint16ArrayConstructor;\n/**\n * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the\n * requested number of bytes could not be allocated an exception is raised.\n */\ninterface Int32Array {\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * The ArrayBuffer instance referenced by the array.\n     */\n    readonly buffer: ArrayBufferLike;\n\n    /**\n     * The length in bytes of the array.\n     */\n    readonly byteLength: number;\n\n    /**\n     * The offset in bytes of the array.\n     */\n    readonly byteOffset: number;\n\n    /**\n     * Returns the this object after copying a section of the array identified by start and end\n     * to the same array starting at position target\n     * @param target If target is negative, it is treated as length+target where length is the\n     * length of the array.\n     * @param start If start is negative, it is treated as length+start. If end is negative, it\n     * is treated as length+end.\n     * @param end If not specified, length of the this object is used as its default value.\n     */\n    copyWithin(target: number, start: number, end?: number): this;\n\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Changes all array elements from \\`start\\` to \\`end\\` index to a static \\`value\\` and returns the modified array\n     * @param value value to fill array section with\n     * @param start index to start filling the array at. If start is negative, it is treated as\n     * length+start where length is the length of the array.\n     * @param end index to stop filling the array at. If end is negative, it is treated as\n     * length+end.\n     */\n    fill(value: number, start?: number, end?: number): this;\n\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls\n     * the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: number, index: number, array: Int32Array) => any, thisArg?: any): Int32Array;\n\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find(predicate: (value: number, index: number, obj: Int32Array) => boolean, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: number, index: number, obj: Int32Array) => boolean, thisArg?: any): number;\n\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: number, index: number, array: Int32Array) => void, thisArg?: any): void;\n\n    /**\n     * Returns the index of the first occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     *  search starts at index 0.\n     */\n    indexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * Adds all the elements of an array separated by the specified separator string.\n     * @param separator A string used to separate one element of an array from the next in the\n     * resulting String. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n\n    /**\n     * Returns the index of the last occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    lastIndexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * The length of the array.\n     */\n    readonly length: number;\n\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that\n     * contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    map(callbackfn: (value: number, index: number, array: Int32Array) => number, thisArg?: any): Int32Array;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number): number;\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U, initialValue: U): U;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an\n     * argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number): number;\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U, initialValue: U): U;\n\n    /**\n     * Reverses the elements in an Array.\n     */\n    reverse(): Int32Array;\n\n    /**\n     * Sets a value or an array of values.\n     * @param array A typed or untyped array of values to set.\n     * @param offset The index in the current array at which the values are to be written.\n     */\n    set(array: ArrayLike<number>, offset?: number): void;\n\n    /**\n     * Returns a section of an array.\n     * @param start The beginning of the specified portion of the array.\n     * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'.\n     */\n    slice(start?: number, end?: number): Int32Array;\n\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value true, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Sorts an array.\n     * @param compareFn Function used to determine the order of the elements. It is expected to return\n     * a negative value if first argument is less than second argument, zero if they're equal and a positive\n     * value otherwise. If omitted, the elements are sorted in ascending order.\n     * \\`\\`\\`ts\n     * [11,2,22,1].sort((a, b) => a - b)\n     * \\`\\`\\`\n     */\n    sort(compareFn?: (a: number, b: number) => number): this;\n\n    /**\n     * Gets a new Int32Array view of the ArrayBuffer store for this array, referencing the elements\n     * at begin, inclusive, up to end, exclusive.\n     * @param begin The index of the beginning of the array.\n     * @param end The index of the end of the array.\n     */\n    subarray(begin?: number, end?: number): Int32Array;\n\n    /**\n     * Converts a number to a string by using the current locale.\n     */\n    toLocaleString(): string;\n\n    /**\n     * Returns a string representation of an array.\n     */\n    toString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): Int32Array;\n\n    [index: number]: number;\n}\n\ninterface Int32ArrayConstructor {\n    readonly prototype: Int32Array;\n    new(length: number): Int32Array;\n    new(array: ArrayLike<number> | ArrayBufferLike): Int32Array;\n    new(buffer: ArrayBufferLike, byteOffset?: number, length?: number): Int32Array;\n\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * Returns a new array from a set of elements.\n     * @param items A set of elements to include in the new array object.\n     */\n    of(...items: number[]): Int32Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     */\n    from(arrayLike: ArrayLike<number>): Int32Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from<T>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => number, thisArg?: any): Int32Array;\n\n}\ndeclare var Int32Array: Int32ArrayConstructor;\n\n/**\n * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the\n * requested number of bytes could not be allocated an exception is raised.\n */\ninterface Uint32Array {\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * The ArrayBuffer instance referenced by the array.\n     */\n    readonly buffer: ArrayBufferLike;\n\n    /**\n     * The length in bytes of the array.\n     */\n    readonly byteLength: number;\n\n    /**\n     * The offset in bytes of the array.\n     */\n    readonly byteOffset: number;\n\n    /**\n     * Returns the this object after copying a section of the array identified by start and end\n     * to the same array starting at position target\n     * @param target If target is negative, it is treated as length+target where length is the\n     * length of the array.\n     * @param start If start is negative, it is treated as length+start. If end is negative, it\n     * is treated as length+end.\n     * @param end If not specified, length of the this object is used as its default value.\n     */\n    copyWithin(target: number, start: number, end?: number): this;\n\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Changes all array elements from \\`start\\` to \\`end\\` index to a static \\`value\\` and returns the modified array\n     * @param value value to fill array section with\n     * @param start index to start filling the array at. If start is negative, it is treated as\n     * length+start where length is the length of the array.\n     * @param end index to stop filling the array at. If end is negative, it is treated as\n     * length+end.\n     */\n    fill(value: number, start?: number, end?: number): this;\n\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls\n     * the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: number, index: number, array: Uint32Array) => any, thisArg?: any): Uint32Array;\n\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find(predicate: (value: number, index: number, obj: Uint32Array) => boolean, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: number, index: number, obj: Uint32Array) => boolean, thisArg?: any): number;\n\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: number, index: number, array: Uint32Array) => void, thisArg?: any): void;\n    /**\n     * Returns the index of the first occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     *  search starts at index 0.\n     */\n    indexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * Adds all the elements of an array separated by the specified separator string.\n     * @param separator A string used to separate one element of an array from the next in the\n     * resulting String. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n\n    /**\n     * Returns the index of the last occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    lastIndexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * The length of the array.\n     */\n    readonly length: number;\n\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that\n     * contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    map(callbackfn: (value: number, index: number, array: Uint32Array) => number, thisArg?: any): Uint32Array;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number): number;\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U, initialValue: U): U;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an\n     * argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number): number;\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U, initialValue: U): U;\n\n    /**\n     * Reverses the elements in an Array.\n     */\n    reverse(): Uint32Array;\n\n    /**\n     * Sets a value or an array of values.\n     * @param array A typed or untyped array of values to set.\n     * @param offset The index in the current array at which the values are to be written.\n     */\n    set(array: ArrayLike<number>, offset?: number): void;\n\n    /**\n     * Returns a section of an array.\n     * @param start The beginning of the specified portion of the array.\n     * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'.\n     */\n    slice(start?: number, end?: number): Uint32Array;\n\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value true, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Sorts an array.\n     * @param compareFn Function used to determine the order of the elements. It is expected to return\n     * a negative value if first argument is less than second argument, zero if they're equal and a positive\n     * value otherwise. If omitted, the elements are sorted in ascending order.\n     * \\`\\`\\`ts\n     * [11,2,22,1].sort((a, b) => a - b)\n     * \\`\\`\\`\n     */\n    sort(compareFn?: (a: number, b: number) => number): this;\n\n    /**\n     * Gets a new Uint32Array view of the ArrayBuffer store for this array, referencing the elements\n     * at begin, inclusive, up to end, exclusive.\n     * @param begin The index of the beginning of the array.\n     * @param end The index of the end of the array.\n     */\n    subarray(begin?: number, end?: number): Uint32Array;\n\n    /**\n     * Converts a number to a string by using the current locale.\n     */\n    toLocaleString(): string;\n\n    /**\n     * Returns a string representation of an array.\n     */\n    toString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): Uint32Array;\n\n    [index: number]: number;\n}\n\ninterface Uint32ArrayConstructor {\n    readonly prototype: Uint32Array;\n    new(length: number): Uint32Array;\n    new(array: ArrayLike<number> | ArrayBufferLike): Uint32Array;\n    new(buffer: ArrayBufferLike, byteOffset?: number, length?: number): Uint32Array;\n\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * Returns a new array from a set of elements.\n     * @param items A set of elements to include in the new array object.\n     */\n    of(...items: number[]): Uint32Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     */\n    from(arrayLike: ArrayLike<number>): Uint32Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from<T>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => number, thisArg?: any): Uint32Array;\n\n}\ndeclare var Uint32Array: Uint32ArrayConstructor;\n\n/**\n * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number\n * of bytes could not be allocated an exception is raised.\n */\ninterface Float32Array {\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * The ArrayBuffer instance referenced by the array.\n     */\n    readonly buffer: ArrayBufferLike;\n\n    /**\n     * The length in bytes of the array.\n     */\n    readonly byteLength: number;\n\n    /**\n     * The offset in bytes of the array.\n     */\n    readonly byteOffset: number;\n\n    /**\n     * Returns the this object after copying a section of the array identified by start and end\n     * to the same array starting at position target\n     * @param target If target is negative, it is treated as length+target where length is the\n     * length of the array.\n     * @param start If start is negative, it is treated as length+start. If end is negative, it\n     * is treated as length+end.\n     * @param end If not specified, length of the this object is used as its default value.\n     */\n    copyWithin(target: number, start: number, end?: number): this;\n\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Changes all array elements from \\`start\\` to \\`end\\` index to a static \\`value\\` and returns the modified array\n     * @param value value to fill array section with\n     * @param start index to start filling the array at. If start is negative, it is treated as\n     * length+start where length is the length of the array.\n     * @param end index to stop filling the array at. If end is negative, it is treated as\n     * length+end.\n     */\n    fill(value: number, start?: number, end?: number): this;\n\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls\n     * the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: number, index: number, array: Float32Array) => any, thisArg?: any): Float32Array;\n\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find(predicate: (value: number, index: number, obj: Float32Array) => boolean, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: number, index: number, obj: Float32Array) => boolean, thisArg?: any): number;\n\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: number, index: number, array: Float32Array) => void, thisArg?: any): void;\n\n    /**\n     * Returns the index of the first occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     *  search starts at index 0.\n     */\n    indexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * Adds all the elements of an array separated by the specified separator string.\n     * @param separator A string used to separate one element of an array from the next in the\n     * resulting String. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n\n    /**\n     * Returns the index of the last occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    lastIndexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * The length of the array.\n     */\n    readonly length: number;\n\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that\n     * contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    map(callbackfn: (value: number, index: number, array: Float32Array) => number, thisArg?: any): Float32Array;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number): number;\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U, initialValue: U): U;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an\n     * argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number): number;\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U, initialValue: U): U;\n\n    /**\n     * Reverses the elements in an Array.\n     */\n    reverse(): Float32Array;\n\n    /**\n     * Sets a value or an array of values.\n     * @param array A typed or untyped array of values to set.\n     * @param offset The index in the current array at which the values are to be written.\n     */\n    set(array: ArrayLike<number>, offset?: number): void;\n\n    /**\n     * Returns a section of an array.\n     * @param start The beginning of the specified portion of the array.\n     * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'.\n     */\n    slice(start?: number, end?: number): Float32Array;\n\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value true, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Sorts an array.\n     * @param compareFn Function used to determine the order of the elements. It is expected to return\n     * a negative value if first argument is less than second argument, zero if they're equal and a positive\n     * value otherwise. If omitted, the elements are sorted in ascending order.\n     * \\`\\`\\`ts\n     * [11,2,22,1].sort((a, b) => a - b)\n     * \\`\\`\\`\n     */\n    sort(compareFn?: (a: number, b: number) => number): this;\n\n    /**\n     * Gets a new Float32Array view of the ArrayBuffer store for this array, referencing the elements\n     * at begin, inclusive, up to end, exclusive.\n     * @param begin The index of the beginning of the array.\n     * @param end The index of the end of the array.\n     */\n    subarray(begin?: number, end?: number): Float32Array;\n\n    /**\n     * Converts a number to a string by using the current locale.\n     */\n    toLocaleString(): string;\n\n    /**\n     * Returns a string representation of an array.\n     */\n    toString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): Float32Array;\n\n    [index: number]: number;\n}\n\ninterface Float32ArrayConstructor {\n    readonly prototype: Float32Array;\n    new(length: number): Float32Array;\n    new(array: ArrayLike<number> | ArrayBufferLike): Float32Array;\n    new(buffer: ArrayBufferLike, byteOffset?: number, length?: number): Float32Array;\n\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * Returns a new array from a set of elements.\n     * @param items A set of elements to include in the new array object.\n     */\n    of(...items: number[]): Float32Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     */\n    from(arrayLike: ArrayLike<number>): Float32Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from<T>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => number, thisArg?: any): Float32Array;\n\n\n}\ndeclare var Float32Array: Float32ArrayConstructor;\n\n/**\n * A typed array of 64-bit float values. The contents are initialized to 0. If the requested\n * number of bytes could not be allocated an exception is raised.\n */\ninterface Float64Array {\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * The ArrayBuffer instance referenced by the array.\n     */\n    readonly buffer: ArrayBufferLike;\n\n    /**\n     * The length in bytes of the array.\n     */\n    readonly byteLength: number;\n\n    /**\n     * The offset in bytes of the array.\n     */\n    readonly byteOffset: number;\n\n    /**\n     * Returns the this object after copying a section of the array identified by start and end\n     * to the same array starting at position target\n     * @param target If target is negative, it is treated as length+target where length is the\n     * length of the array.\n     * @param start If start is negative, it is treated as length+start. If end is negative, it\n     * is treated as length+end.\n     * @param end If not specified, length of the this object is used as its default value.\n     */\n    copyWithin(target: number, start: number, end?: number): this;\n\n    /**\n     * Determines whether all the members of an array satisfy the specified test.\n     * @param predicate A function that accepts up to three arguments. The every method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value false, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    every(predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Changes all array elements from \\`start\\` to \\`end\\` index to a static \\`value\\` and returns the modified array\n     * @param value value to fill array section with\n     * @param start index to start filling the array at. If start is negative, it is treated as\n     * length+start where length is the length of the array.\n     * @param end index to stop filling the array at. If end is negative, it is treated as\n     * length+end.\n     */\n    fill(value: number, start?: number, end?: number): this;\n\n    /**\n     * Returns the elements of an array that meet the condition specified in a callback function.\n     * @param predicate A function that accepts up to three arguments. The filter method calls\n     * the predicate function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    filter(predicate: (value: number, index: number, array: Float64Array) => any, thisArg?: any): Float64Array;\n\n    /**\n     * Returns the value of the first element in the array where predicate is true, and undefined\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found, find\n     * immediately returns that element value. Otherwise, find returns undefined.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    find(predicate: (value: number, index: number, obj: Float64Array) => boolean, thisArg?: any): number | undefined;\n\n    /**\n     * Returns the index of the first element in the array where predicate is true, and -1\n     * otherwise.\n     * @param predicate find calls predicate once for each element of the array, in ascending\n     * order, until it finds one where predicate returns true. If such an element is found,\n     * findIndex immediately returns that element index. Otherwise, findIndex returns -1.\n     * @param thisArg If provided, it will be used as the this value for each invocation of\n     * predicate. If it is not provided, undefined is used instead.\n     */\n    findIndex(predicate: (value: number, index: number, obj: Float64Array) => boolean, thisArg?: any): number;\n\n    /**\n     * Performs the specified action for each element in an array.\n     * @param callbackfn  A function that accepts up to three arguments. forEach calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg  An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    forEach(callbackfn: (value: number, index: number, array: Float64Array) => void, thisArg?: any): void;\n\n    /**\n     * Returns the index of the first occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     *  search starts at index 0.\n     */\n    indexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * Adds all the elements of an array separated by the specified separator string.\n     * @param separator A string used to separate one element of an array from the next in the\n     * resulting String. If omitted, the array elements are separated with a comma.\n     */\n    join(separator?: string): string;\n\n    /**\n     * Returns the index of the last occurrence of a value in an array.\n     * @param searchElement The value to locate in the array.\n     * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the\n     * search starts at index 0.\n     */\n    lastIndexOf(searchElement: number, fromIndex?: number): number;\n\n    /**\n     * The length of the array.\n     */\n    readonly length: number;\n\n    /**\n     * Calls a defined callback function on each element of an array, and returns an array that\n     * contains the results.\n     * @param callbackfn A function that accepts up to three arguments. The map method calls the\n     * callbackfn function one time for each element in the array.\n     * @param thisArg An object to which the this keyword can refer in the callbackfn function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    map(callbackfn: (value: number, index: number, array: Float64Array) => number, thisArg?: any): Float64Array;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number): number;\n    reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array. The return value of\n     * the callback function is the accumulated result, and is provided as an argument in the next\n     * call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduce method calls the\n     * callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduce<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U, initialValue: U): U;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an\n     * argument instead of an array value.\n     */\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number): number;\n    reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number, initialValue: number): number;\n\n    /**\n     * Calls the specified callback function for all the elements in an array, in descending order.\n     * The return value of the callback function is the accumulated result, and is provided as an\n     * argument in the next call to the callback function.\n     * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls\n     * the callbackfn function one time for each element in the array.\n     * @param initialValue If initialValue is specified, it is used as the initial value to start\n     * the accumulation. The first call to the callbackfn function provides this value as an argument\n     * instead of an array value.\n     */\n    reduceRight<U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U, initialValue: U): U;\n\n    /**\n     * Reverses the elements in an Array.\n     */\n    reverse(): Float64Array;\n\n    /**\n     * Sets a value or an array of values.\n     * @param array A typed or untyped array of values to set.\n     * @param offset The index in the current array at which the values are to be written.\n     */\n    set(array: ArrayLike<number>, offset?: number): void;\n\n    /**\n     * Returns a section of an array.\n     * @param start The beginning of the specified portion of the array.\n     * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'.\n     */\n    slice(start?: number, end?: number): Float64Array;\n\n    /**\n     * Determines whether the specified callback function returns true for any element of an array.\n     * @param predicate A function that accepts up to three arguments. The some method calls\n     * the predicate function for each element in the array until the predicate returns a value\n     * which is coercible to the Boolean value true, or until the end of the array.\n     * @param thisArg An object to which the this keyword can refer in the predicate function.\n     * If thisArg is omitted, undefined is used as the this value.\n     */\n    some(predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): boolean;\n\n    /**\n     * Sorts an array.\n     * @param compareFn Function used to determine the order of the elements. It is expected to return\n     * a negative value if first argument is less than second argument, zero if they're equal and a positive\n     * value otherwise. If omitted, the elements are sorted in ascending order.\n     * \\`\\`\\`ts\n     * [11,2,22,1].sort((a, b) => a - b)\n     * \\`\\`\\`\n     */\n    sort(compareFn?: (a: number, b: number) => number): this;\n\n    /**\n     * at begin, inclusive, up to end, exclusive.\n     * @param begin The index of the beginning of the array.\n     * @param end The index of the end of the array.\n     */\n    subarray(begin?: number, end?: number): Float64Array;\n\n    toString(): string;\n\n    /** Returns the primitive value of the specified object. */\n    valueOf(): Float64Array;\n\n    [index: number]: number;\n}\n\ninterface Float64ArrayConstructor {\n    readonly prototype: Float64Array;\n    new(length: number): Float64Array;\n    new(array: ArrayLike<number> | ArrayBufferLike): Float64Array;\n    new(buffer: ArrayBufferLike, byteOffset?: number, length?: number): Float64Array;\n\n    /**\n     * The size in bytes of each element in the array.\n     */\n    readonly BYTES_PER_ELEMENT: number;\n\n    /**\n     * Returns a new array from a set of elements.\n     * @param items A set of elements to include in the new array object.\n     */\n    of(...items: number[]): Float64Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     */\n    from(arrayLike: ArrayLike<number>): Float64Array;\n\n    /**\n     * Creates an array from an array-like or iterable object.\n     * @param arrayLike An array-like or iterable object to convert to an array.\n     * @param mapfn A mapping function to call on every element of the array.\n     * @param thisArg Value of 'this' used to invoke the mapfn.\n     */\n    from<T>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => number, thisArg?: any): Float64Array;\n\n}\ndeclare var Float64Array: Float64ArrayConstructor;\n\n/////////////////////////////\n/// ECMAScript Internationalization API\n/////////////////////////////\n\ndeclare namespace Intl {\n    interface CollatorOptions {\n        usage?: string | undefined;\n        localeMatcher?: string | undefined;\n        numeric?: boolean | undefined;\n        caseFirst?: string | undefined;\n        sensitivity?: string | undefined;\n        ignorePunctuation?: boolean | undefined;\n    }\n\n    interface ResolvedCollatorOptions {\n        locale: string;\n        usage: string;\n        sensitivity: string;\n        ignorePunctuation: boolean;\n        collation: string;\n        caseFirst: string;\n        numeric: boolean;\n    }\n\n    interface Collator {\n        compare(x: string, y: string): number;\n        resolvedOptions(): ResolvedCollatorOptions;\n    }\n    var Collator: {\n        new(locales?: string | string[], options?: CollatorOptions): Collator;\n        (locales?: string | string[], options?: CollatorOptions): Collator;\n        supportedLocalesOf(locales: string | string[], options?: CollatorOptions): string[];\n    };\n\n    interface NumberFormatOptions {\n        localeMatcher?: string | undefined;\n        style?: string | undefined;\n        currency?: string | undefined;\n        currencySign?: string | undefined;\n        useGrouping?: boolean | undefined;\n        minimumIntegerDigits?: number | undefined;\n        minimumFractionDigits?: number | undefined;\n        maximumFractionDigits?: number | undefined;\n        minimumSignificantDigits?: number | undefined;\n        maximumSignificantDigits?: number | undefined;\n    }\n\n    interface ResolvedNumberFormatOptions {\n        locale: string;\n        numberingSystem: string;\n        style: string;\n        currency?: string;\n        minimumIntegerDigits: number;\n        minimumFractionDigits: number;\n        maximumFractionDigits: number;\n        minimumSignificantDigits?: number;\n        maximumSignificantDigits?: number;\n        useGrouping: boolean;\n    }\n\n    interface NumberFormat {\n        format(value: number): string;\n        resolvedOptions(): ResolvedNumberFormatOptions;\n    }\n    var NumberFormat: {\n        new(locales?: string | string[], options?: NumberFormatOptions): NumberFormat;\n        (locales?: string | string[], options?: NumberFormatOptions): NumberFormat;\n        supportedLocalesOf(locales: string | string[], options?: NumberFormatOptions): string[];\n        readonly prototype: NumberFormat;\n    };\n\n    interface DateTimeFormatOptions {\n        localeMatcher?: \"best fit\" | \"lookup\" | undefined;\n        weekday?: \"long\" | \"short\" | \"narrow\" | undefined;\n        era?: \"long\" | \"short\" | \"narrow\" | undefined;\n        year?: \"numeric\" | \"2-digit\" | undefined;\n        month?: \"numeric\" | \"2-digit\" | \"long\" | \"short\" | \"narrow\" | undefined;\n        day?: \"numeric\" | \"2-digit\" | undefined;\n        hour?: \"numeric\" | \"2-digit\" | undefined;\n        minute?: \"numeric\" | \"2-digit\" | undefined;\n        second?: \"numeric\" | \"2-digit\" | undefined;\n        timeZoneName?: \"short\" | \"long\" | \"shortOffset\" | \"longOffset\" | \"shortGeneric\" | \"longGeneric\" | undefined;\n        formatMatcher?: \"best fit\" | \"basic\" | undefined;\n        hour12?: boolean | undefined;\n        timeZone?: string | undefined;\n    }\n\n    interface ResolvedDateTimeFormatOptions {\n        locale: string;\n        calendar: string;\n        numberingSystem: string;\n        timeZone: string;\n        hour12?: boolean;\n        weekday?: string;\n        era?: string;\n        year?: string;\n        month?: string;\n        day?: string;\n        hour?: string;\n        minute?: string;\n        second?: string;\n        timeZoneName?: string;\n    }\n\n    interface DateTimeFormat {\n        format(date?: Date | number): string;\n        resolvedOptions(): ResolvedDateTimeFormatOptions;\n    }\n    var DateTimeFormat: {\n        new(locales?: string | string[], options?: DateTimeFormatOptions): DateTimeFormat;\n        (locales?: string | string[], options?: DateTimeFormatOptions): DateTimeFormat;\n        supportedLocalesOf(locales: string | string[], options?: DateTimeFormatOptions): string[];\n        readonly prototype: DateTimeFormat;\n    };\n}\n\ninterface String {\n    /**\n     * Determines whether two strings are equivalent in the current or specified locale.\n     * @param that String to compare to target string\n     * @param locales A locale string or array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. This parameter must conform to BCP 47 standards; see the Intl.Collator object for details.\n     * @param options An object that contains one or more properties that specify comparison options. see the Intl.Collator object for details.\n     */\n    localeCompare(that: string, locales?: string | string[], options?: Intl.CollatorOptions): number;\n}\n\ninterface Number {\n    /**\n     * Converts a number to a string by using the current or specified locale.\n     * @param locales A locale string or array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.\n     * @param options An object that contains one or more properties that specify comparison options.\n     */\n    toLocaleString(locales?: string | string[], options?: Intl.NumberFormatOptions): string;\n}\n\ninterface Date {\n    /**\n     * Converts a date and time to a string by using the current or specified locale.\n     * @param locales A locale string or array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.\n     * @param options An object that contains one or more properties that specify comparison options.\n     */\n    toLocaleString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;\n    /**\n     * Converts a date to a string by using the current or specified locale.\n     * @param locales A locale string or array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.\n     * @param options An object that contains one or more properties that specify comparison options.\n     */\n    toLocaleDateString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;\n\n    /**\n     * Converts a time to a string by using the current or specified locale.\n     * @param locales A locale string or array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.\n     * @param options An object that contains one or more properties that specify comparison options.\n     */\n    toLocaleTimeString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;\n}\n`;$i[\"lib.es6.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2015\" />\n/// <reference lib=\"dom\" />\n/// <reference lib=\"dom.iterable\" />\n/// <reference lib=\"webworker.importscripts\" />\n/// <reference lib=\"scripthost\" />\n`;$i[\"lib.esnext.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"es2023\" />\n/// <reference lib=\"esnext.intl\" />\n`;$i[\"lib.esnext.full.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/// <reference lib=\"esnext\" />\n/// <reference lib=\"dom\" />\n/// <reference lib=\"webworker.importscripts\" />\n/// <reference lib=\"scripthost\" />\n/// <reference lib=\"dom.iterable\" />`;$i[\"lib.esnext.intl.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\ndeclare namespace Intl {\n  interface NumberRangeFormatPart extends NumberFormatPart {\n    source: \"startRange\" | \"endRange\" | \"shared\"\n  }\n\n  interface NumberFormat {\n    formatRange(start: number | bigint, end: number | bigint): string;\n    formatRangeToParts(start: number | bigint, end: number | bigint): NumberRangeFormatPart[];\n  }\n}\n`;$i[\"lib.scripthost.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n\n\n/////////////////////////////\n/// Windows Script Host APIS\n/////////////////////////////\n\n\ninterface ActiveXObject {\n    new (s: string): any;\n}\ndeclare var ActiveXObject: ActiveXObject;\n\ninterface ITextWriter {\n    Write(s: string): void;\n    WriteLine(s: string): void;\n    Close(): void;\n}\n\ninterface TextStreamBase {\n    /**\n     * The column number of the current character position in an input stream.\n     */\n    Column: number;\n\n    /**\n     * The current line number in an input stream.\n     */\n    Line: number;\n\n    /**\n     * Closes a text stream.\n     * It is not necessary to close standard streams; they close automatically when the process ends. If\n     * you close a standard stream, be aware that any other pointers to that standard stream become invalid.\n     */\n    Close(): void;\n}\n\ninterface TextStreamWriter extends TextStreamBase {\n    /**\n     * Sends a string to an output stream.\n     */\n    Write(s: string): void;\n\n    /**\n     * Sends a specified number of blank lines (newline characters) to an output stream.\n     */\n    WriteBlankLines(intLines: number): void;\n\n    /**\n     * Sends a string followed by a newline character to an output stream.\n     */\n    WriteLine(s: string): void;\n}\n\ninterface TextStreamReader extends TextStreamBase {\n    /**\n     * Returns a specified number of characters from an input stream, starting at the current pointer position.\n     * Does not return until the ENTER key is pressed.\n     * Can only be used on a stream in reading mode; causes an error in writing or appending mode.\n     */\n    Read(characters: number): string;\n\n    /**\n     * Returns all characters from an input stream.\n     * Can only be used on a stream in reading mode; causes an error in writing or appending mode.\n     */\n    ReadAll(): string;\n\n    /**\n     * Returns an entire line from an input stream.\n     * Although this method extracts the newline character, it does not add it to the returned string.\n     * Can only be used on a stream in reading mode; causes an error in writing or appending mode.\n     */\n    ReadLine(): string;\n\n    /**\n     * Skips a specified number of characters when reading from an input text stream.\n     * Can only be used on a stream in reading mode; causes an error in writing or appending mode.\n     * @param characters Positive number of characters to skip forward. (Backward skipping is not supported.)\n     */\n    Skip(characters: number): void;\n\n    /**\n     * Skips the next line when reading from an input text stream.\n     * Can only be used on a stream in reading mode, not writing or appending mode.\n     */\n    SkipLine(): void;\n\n    /**\n     * Indicates whether the stream pointer position is at the end of a line.\n     */\n    AtEndOfLine: boolean;\n\n    /**\n     * Indicates whether the stream pointer position is at the end of a stream.\n     */\n    AtEndOfStream: boolean;\n}\n\ndeclare var WScript: {\n    /**\n     * Outputs text to either a message box (under WScript.exe) or the command console window followed by\n     * a newline (under CScript.exe).\n     */\n    Echo(s: any): void;\n\n    /**\n     * Exposes the write-only error output stream for the current script.\n     * Can be accessed only while using CScript.exe.\n     */\n    StdErr: TextStreamWriter;\n\n    /**\n     * Exposes the write-only output stream for the current script.\n     * Can be accessed only while using CScript.exe.\n     */\n    StdOut: TextStreamWriter;\n    Arguments: { length: number; Item(n: number): string; };\n\n    /**\n     *  The full path of the currently running script.\n     */\n    ScriptFullName: string;\n\n    /**\n     * Forces the script to stop immediately, with an optional exit code.\n     */\n    Quit(exitCode?: number): number;\n\n    /**\n     * The Windows Script Host build version number.\n     */\n    BuildVersion: number;\n\n    /**\n     * Fully qualified path of the host executable.\n     */\n    FullName: string;\n\n    /**\n     * Gets/sets the script mode - interactive(true) or batch(false).\n     */\n    Interactive: boolean;\n\n    /**\n     * The name of the host executable (WScript.exe or CScript.exe).\n     */\n    Name: string;\n\n    /**\n     * Path of the directory containing the host executable.\n     */\n    Path: string;\n\n    /**\n     * The filename of the currently running script.\n     */\n    ScriptName: string;\n\n    /**\n     * Exposes the read-only input stream for the current script.\n     * Can be accessed only while using CScript.exe.\n     */\n    StdIn: TextStreamReader;\n\n    /**\n     * Windows Script Host version\n     */\n    Version: string;\n\n    /**\n     * Connects a COM object's event sources to functions named with a given prefix, in the form prefix_event.\n     */\n    ConnectObject(objEventSource: any, strPrefix: string): void;\n\n    /**\n     * Creates a COM object.\n     * @param strProgiID\n     * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events.\n     */\n    CreateObject(strProgID: string, strPrefix?: string): any;\n\n    /**\n     * Disconnects a COM object from its event sources.\n     */\n    DisconnectObject(obj: any): void;\n\n    /**\n     * Retrieves an existing object with the specified ProgID from memory, or creates a new one from a file.\n     * @param strPathname Fully qualified path to the file containing the object persisted to disk.\n     *                       For objects in memory, pass a zero-length string.\n     * @param strProgID\n     * @param strPrefix Function names in the form prefix_event will be bound to this object's COM events.\n     */\n    GetObject(strPathname: string, strProgID?: string, strPrefix?: string): any;\n\n    /**\n     * Suspends script execution for a specified length of time, then continues execution.\n     * @param intTime Interval (in milliseconds) to suspend script execution.\n     */\n    Sleep(intTime: number): void;\n};\n\n/**\n * WSH is an alias for WScript under Windows Script Host\n */\ndeclare var WSH: typeof WScript;\n\n/**\n * Represents an Automation SAFEARRAY\n */\ndeclare class SafeArray<T = any> {\n    private constructor();\n    private SafeArray_typekey: SafeArray<T>;\n}\n\n/**\n * Allows enumerating over a COM collection, which may not have indexed item access.\n */\ninterface Enumerator<T = any> {\n    /**\n     * Returns true if the current item is the last one in the collection, or the collection is empty,\n     * or the current item is undefined.\n     */\n    atEnd(): boolean;\n\n    /**\n     * Returns the current item in the collection\n     */\n    item(): T;\n\n    /**\n     * Resets the current item in the collection to the first item. If there are no items in the collection,\n     * the current item is set to undefined.\n     */\n    moveFirst(): void;\n\n    /**\n     * Moves the current item to the next item in the collection. If the enumerator is at the end of\n     * the collection or the collection is empty, the current item is set to undefined.\n     */\n    moveNext(): void;\n}\n\ninterface EnumeratorConstructor {\n    new <T = any>(safearray: SafeArray<T>): Enumerator<T>;\n    new <T = any>(collection: { Item(index: any): T }): Enumerator<T>;\n    new <T = any>(collection: any): Enumerator<T>;\n}\n\ndeclare var Enumerator: EnumeratorConstructor;\n\n/**\n * Enables reading from a COM safe array, which might have an alternate lower bound, or multiple dimensions.\n */\ninterface VBArray<T = any> {\n    /**\n     * Returns the number of dimensions (1-based).\n     */\n    dimensions(): number;\n\n    /**\n     * Takes an index for each dimension in the array, and returns the item at the corresponding location.\n     */\n    getItem(dimension1Index: number, ...dimensionNIndexes: number[]): T;\n\n    /**\n     * Returns the smallest available index for a given dimension.\n     * @param dimension 1-based dimension (defaults to 1)\n     */\n    lbound(dimension?: number): number;\n\n    /**\n     * Returns the largest available index for a given dimension.\n     * @param dimension 1-based dimension (defaults to 1)\n     */\n    ubound(dimension?: number): number;\n\n    /**\n     * Returns a Javascript array with all the elements in the VBArray. If there are multiple dimensions,\n     * each successive dimension is appended to the end of the array.\n     * Example: [[1,2,3],[4,5,6]] becomes [1,2,3,4,5,6]\n     */\n    toArray(): T[];\n}\n\ninterface VBArrayConstructor {\n    new <T = any>(safeArray: SafeArray<T>): VBArray<T>;\n}\n\ndeclare var VBArray: VBArrayConstructor;\n\n/**\n * Automation date (VT_DATE)\n */\ndeclare class VarDate {\n    private constructor();\n    private VarDate_typekey: VarDate;\n}\n\ninterface DateConstructor {\n    new (vd: VarDate): Date;\n}\n\ninterface Date {\n    getVarDate: () => VarDate;\n}\n`;$i[\"lib.webworker.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/////////////////////////////\n/// Worker APIs\n/////////////////////////////\n\ninterface AddEventListenerOptions extends EventListenerOptions {\n    once?: boolean;\n    passive?: boolean;\n    signal?: AbortSignal;\n}\n\ninterface AesCbcParams extends Algorithm {\n    iv: BufferSource;\n}\n\ninterface AesCtrParams extends Algorithm {\n    counter: BufferSource;\n    length: number;\n}\n\ninterface AesDerivedKeyParams extends Algorithm {\n    length: number;\n}\n\ninterface AesGcmParams extends Algorithm {\n    additionalData?: BufferSource;\n    iv: BufferSource;\n    tagLength?: number;\n}\n\ninterface AesKeyAlgorithm extends KeyAlgorithm {\n    length: number;\n}\n\ninterface AesKeyGenParams extends Algorithm {\n    length: number;\n}\n\ninterface Algorithm {\n    name: string;\n}\n\ninterface AudioConfiguration {\n    bitrate?: number;\n    channels?: string;\n    contentType: string;\n    samplerate?: number;\n    spatialRendering?: boolean;\n}\n\ninterface BlobPropertyBag {\n    endings?: EndingType;\n    type?: string;\n}\n\ninterface CacheQueryOptions {\n    ignoreMethod?: boolean;\n    ignoreSearch?: boolean;\n    ignoreVary?: boolean;\n}\n\ninterface ClientQueryOptions {\n    includeUncontrolled?: boolean;\n    type?: ClientTypes;\n}\n\ninterface CloseEventInit extends EventInit {\n    code?: number;\n    reason?: string;\n    wasClean?: boolean;\n}\n\ninterface CryptoKeyPair {\n    privateKey: CryptoKey;\n    publicKey: CryptoKey;\n}\n\ninterface CustomEventInit<T = any> extends EventInit {\n    detail?: T;\n}\n\ninterface DOMMatrix2DInit {\n    a?: number;\n    b?: number;\n    c?: number;\n    d?: number;\n    e?: number;\n    f?: number;\n    m11?: number;\n    m12?: number;\n    m21?: number;\n    m22?: number;\n    m41?: number;\n    m42?: number;\n}\n\ninterface DOMMatrixInit extends DOMMatrix2DInit {\n    is2D?: boolean;\n    m13?: number;\n    m14?: number;\n    m23?: number;\n    m24?: number;\n    m31?: number;\n    m32?: number;\n    m33?: number;\n    m34?: number;\n    m43?: number;\n    m44?: number;\n}\n\ninterface DOMPointInit {\n    w?: number;\n    x?: number;\n    y?: number;\n    z?: number;\n}\n\ninterface DOMQuadInit {\n    p1?: DOMPointInit;\n    p2?: DOMPointInit;\n    p3?: DOMPointInit;\n    p4?: DOMPointInit;\n}\n\ninterface DOMRectInit {\n    height?: number;\n    width?: number;\n    x?: number;\n    y?: number;\n}\n\ninterface EcKeyGenParams extends Algorithm {\n    namedCurve: NamedCurve;\n}\n\ninterface EcKeyImportParams extends Algorithm {\n    namedCurve: NamedCurve;\n}\n\ninterface EcdhKeyDeriveParams extends Algorithm {\n    public: CryptoKey;\n}\n\ninterface EcdsaParams extends Algorithm {\n    hash: HashAlgorithmIdentifier;\n}\n\ninterface ErrorEventInit extends EventInit {\n    colno?: number;\n    error?: any;\n    filename?: string;\n    lineno?: number;\n    message?: string;\n}\n\ninterface EventInit {\n    bubbles?: boolean;\n    cancelable?: boolean;\n    composed?: boolean;\n}\n\ninterface EventListenerOptions {\n    capture?: boolean;\n}\n\ninterface EventSourceInit {\n    withCredentials?: boolean;\n}\n\ninterface ExtendableEventInit extends EventInit {\n}\n\ninterface ExtendableMessageEventInit extends ExtendableEventInit {\n    data?: any;\n    lastEventId?: string;\n    origin?: string;\n    ports?: MessagePort[];\n    source?: Client | ServiceWorker | MessagePort | null;\n}\n\ninterface FetchEventInit extends ExtendableEventInit {\n    clientId?: string;\n    handled?: Promise<undefined>;\n    preloadResponse?: Promise<any>;\n    replacesClientId?: string;\n    request: Request;\n    resultingClientId?: string;\n}\n\ninterface FilePropertyBag extends BlobPropertyBag {\n    lastModified?: number;\n}\n\ninterface FileSystemGetDirectoryOptions {\n    create?: boolean;\n}\n\ninterface FileSystemGetFileOptions {\n    create?: boolean;\n}\n\ninterface FileSystemReadWriteOptions {\n    at?: number;\n}\n\ninterface FileSystemRemoveOptions {\n    recursive?: boolean;\n}\n\ninterface FontFaceDescriptors {\n    ascentOverride?: string;\n    descentOverride?: string;\n    display?: FontDisplay;\n    featureSettings?: string;\n    lineGapOverride?: string;\n    stretch?: string;\n    style?: string;\n    unicodeRange?: string;\n    variant?: string;\n    weight?: string;\n}\n\ninterface FontFaceSetLoadEventInit extends EventInit {\n    fontfaces?: FontFace[];\n}\n\ninterface GetNotificationOptions {\n    tag?: string;\n}\n\ninterface HkdfParams extends Algorithm {\n    hash: HashAlgorithmIdentifier;\n    info: BufferSource;\n    salt: BufferSource;\n}\n\ninterface HmacImportParams extends Algorithm {\n    hash: HashAlgorithmIdentifier;\n    length?: number;\n}\n\ninterface HmacKeyGenParams extends Algorithm {\n    hash: HashAlgorithmIdentifier;\n    length?: number;\n}\n\ninterface IDBDatabaseInfo {\n    name?: string;\n    version?: number;\n}\n\ninterface IDBIndexParameters {\n    multiEntry?: boolean;\n    unique?: boolean;\n}\n\ninterface IDBObjectStoreParameters {\n    autoIncrement?: boolean;\n    keyPath?: string | string[] | null;\n}\n\ninterface IDBTransactionOptions {\n    durability?: IDBTransactionDurability;\n}\n\ninterface IDBVersionChangeEventInit extends EventInit {\n    newVersion?: number | null;\n    oldVersion?: number;\n}\n\ninterface ImageBitmapOptions {\n    colorSpaceConversion?: ColorSpaceConversion;\n    imageOrientation?: ImageOrientation;\n    premultiplyAlpha?: PremultiplyAlpha;\n    resizeHeight?: number;\n    resizeQuality?: ResizeQuality;\n    resizeWidth?: number;\n}\n\ninterface ImageBitmapRenderingContextSettings {\n    alpha?: boolean;\n}\n\ninterface ImageDataSettings {\n    colorSpace?: PredefinedColorSpace;\n}\n\ninterface ImageEncodeOptions {\n    quality?: number;\n    type?: string;\n}\n\ninterface ImportMeta {\n    url: string;\n}\n\ninterface JsonWebKey {\n    alg?: string;\n    crv?: string;\n    d?: string;\n    dp?: string;\n    dq?: string;\n    e?: string;\n    ext?: boolean;\n    k?: string;\n    key_ops?: string[];\n    kty?: string;\n    n?: string;\n    oth?: RsaOtherPrimesInfo[];\n    p?: string;\n    q?: string;\n    qi?: string;\n    use?: string;\n    x?: string;\n    y?: string;\n}\n\ninterface KeyAlgorithm {\n    name: string;\n}\n\ninterface LockInfo {\n    clientId?: string;\n    mode?: LockMode;\n    name?: string;\n}\n\ninterface LockManagerSnapshot {\n    held?: LockInfo[];\n    pending?: LockInfo[];\n}\n\ninterface LockOptions {\n    ifAvailable?: boolean;\n    mode?: LockMode;\n    signal?: AbortSignal;\n    steal?: boolean;\n}\n\ninterface MediaCapabilitiesDecodingInfo extends MediaCapabilitiesInfo {\n    configuration?: MediaDecodingConfiguration;\n}\n\ninterface MediaCapabilitiesEncodingInfo extends MediaCapabilitiesInfo {\n    configuration?: MediaEncodingConfiguration;\n}\n\ninterface MediaCapabilitiesInfo {\n    powerEfficient: boolean;\n    smooth: boolean;\n    supported: boolean;\n}\n\ninterface MediaConfiguration {\n    audio?: AudioConfiguration;\n    video?: VideoConfiguration;\n}\n\ninterface MediaDecodingConfiguration extends MediaConfiguration {\n    type: MediaDecodingType;\n}\n\ninterface MediaEncodingConfiguration extends MediaConfiguration {\n    type: MediaEncodingType;\n}\n\ninterface MessageEventInit<T = any> extends EventInit {\n    data?: T;\n    lastEventId?: string;\n    origin?: string;\n    ports?: MessagePort[];\n    source?: MessageEventSource | null;\n}\n\ninterface MultiCacheQueryOptions extends CacheQueryOptions {\n    cacheName?: string;\n}\n\ninterface NavigationPreloadState {\n    enabled?: boolean;\n    headerValue?: string;\n}\n\ninterface NotificationAction {\n    action: string;\n    icon?: string;\n    title: string;\n}\n\ninterface NotificationEventInit extends ExtendableEventInit {\n    action?: string;\n    notification: Notification;\n}\n\ninterface NotificationOptions {\n    actions?: NotificationAction[];\n    badge?: string;\n    body?: string;\n    data?: any;\n    dir?: NotificationDirection;\n    icon?: string;\n    image?: string;\n    lang?: string;\n    renotify?: boolean;\n    requireInteraction?: boolean;\n    silent?: boolean;\n    tag?: string;\n    timestamp?: EpochTimeStamp;\n    vibrate?: VibratePattern;\n}\n\ninterface Pbkdf2Params extends Algorithm {\n    hash: HashAlgorithmIdentifier;\n    iterations: number;\n    salt: BufferSource;\n}\n\ninterface PerformanceMarkOptions {\n    detail?: any;\n    startTime?: DOMHighResTimeStamp;\n}\n\ninterface PerformanceMeasureOptions {\n    detail?: any;\n    duration?: DOMHighResTimeStamp;\n    end?: string | DOMHighResTimeStamp;\n    start?: string | DOMHighResTimeStamp;\n}\n\ninterface PerformanceObserverInit {\n    buffered?: boolean;\n    entryTypes?: string[];\n    type?: string;\n}\n\ninterface PermissionDescriptor {\n    name: PermissionName;\n}\n\ninterface ProgressEventInit extends EventInit {\n    lengthComputable?: boolean;\n    loaded?: number;\n    total?: number;\n}\n\ninterface PromiseRejectionEventInit extends EventInit {\n    promise: Promise<any>;\n    reason?: any;\n}\n\ninterface PushEventInit extends ExtendableEventInit {\n    data?: PushMessageDataInit;\n}\n\ninterface PushSubscriptionJSON {\n    endpoint?: string;\n    expirationTime?: EpochTimeStamp | null;\n    keys?: Record<string, string>;\n}\n\ninterface PushSubscriptionOptionsInit {\n    applicationServerKey?: BufferSource | string | null;\n    userVisibleOnly?: boolean;\n}\n\ninterface QueuingStrategy<T = any> {\n    highWaterMark?: number;\n    size?: QueuingStrategySize<T>;\n}\n\ninterface QueuingStrategyInit {\n    /**\n     * Creates a new ByteLengthQueuingStrategy with the provided high water mark.\n     *\n     * Note that the provided high water mark will not be validated ahead of time. Instead, if it is negative, NaN, or not a number, the resulting ByteLengthQueuingStrategy will cause the corresponding stream constructor to throw.\n     */\n    highWaterMark: number;\n}\n\ninterface RTCEncodedAudioFrameMetadata {\n    contributingSources?: number[];\n    synchronizationSource?: number;\n}\n\ninterface RTCEncodedVideoFrameMetadata {\n    contributingSources?: number[];\n    dependencies?: number[];\n    frameId?: number;\n    height?: number;\n    spatialIndex?: number;\n    synchronizationSource?: number;\n    temporalIndex?: number;\n    width?: number;\n}\n\ninterface ReadableStreamGetReaderOptions {\n    /**\n     * Creates a ReadableStreamBYOBReader and locks the stream to the new reader.\n     *\n     * This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle \"bring your own buffer\" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation.\n     */\n    mode?: ReadableStreamReaderMode;\n}\n\ninterface ReadableStreamReadDoneResult<T> {\n    done: true;\n    value?: T;\n}\n\ninterface ReadableStreamReadValueResult<T> {\n    done: false;\n    value: T;\n}\n\ninterface ReadableWritablePair<R = any, W = any> {\n    readable: ReadableStream<R>;\n    /**\n     * Provides a convenient, chainable way of piping this readable stream through a transform stream (or any other { writable, readable } pair). It simply pipes the stream into the writable side of the supplied pair, and returns the readable side for further use.\n     *\n     * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\n     */\n    writable: WritableStream<W>;\n}\n\ninterface RegistrationOptions {\n    scope?: string;\n    type?: WorkerType;\n    updateViaCache?: ServiceWorkerUpdateViaCache;\n}\n\ninterface RequestInit {\n    /** A BodyInit object or null to set request's body. */\n    body?: BodyInit | null;\n    /** A string indicating how the request will interact with the browser's cache to set request's cache. */\n    cache?: RequestCache;\n    /** A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request's credentials. */\n    credentials?: RequestCredentials;\n    /** A Headers object, an object literal, or an array of two-item arrays to set request's headers. */\n    headers?: HeadersInit;\n    /** A cryptographic hash of the resource to be fetched by request. Sets request's integrity. */\n    integrity?: string;\n    /** A boolean to set request's keepalive. */\n    keepalive?: boolean;\n    /** A string to set request's method. */\n    method?: string;\n    /** A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request's mode. */\n    mode?: RequestMode;\n    /** A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request's redirect. */\n    redirect?: RequestRedirect;\n    /** A string whose value is a same-origin URL, \"about:client\", or the empty string, to set request's referrer. */\n    referrer?: string;\n    /** A referrer policy to set request's referrerPolicy. */\n    referrerPolicy?: ReferrerPolicy;\n    /** An AbortSignal to set request's signal. */\n    signal?: AbortSignal | null;\n    /** Can only be null. Used to disassociate request from any Window. */\n    window?: null;\n}\n\ninterface ResponseInit {\n    headers?: HeadersInit;\n    status?: number;\n    statusText?: string;\n}\n\ninterface RsaHashedImportParams extends Algorithm {\n    hash: HashAlgorithmIdentifier;\n}\n\ninterface RsaHashedKeyGenParams extends RsaKeyGenParams {\n    hash: HashAlgorithmIdentifier;\n}\n\ninterface RsaKeyGenParams extends Algorithm {\n    modulusLength: number;\n    publicExponent: BigInteger;\n}\n\ninterface RsaOaepParams extends Algorithm {\n    label?: BufferSource;\n}\n\ninterface RsaOtherPrimesInfo {\n    d?: string;\n    r?: string;\n    t?: string;\n}\n\ninterface RsaPssParams extends Algorithm {\n    saltLength: number;\n}\n\ninterface SecurityPolicyViolationEventInit extends EventInit {\n    blockedURI?: string;\n    columnNumber?: number;\n    disposition: SecurityPolicyViolationEventDisposition;\n    documentURI: string;\n    effectiveDirective: string;\n    lineNumber?: number;\n    originalPolicy: string;\n    referrer?: string;\n    sample?: string;\n    sourceFile?: string;\n    statusCode: number;\n    violatedDirective: string;\n}\n\ninterface StorageEstimate {\n    quota?: number;\n    usage?: number;\n}\n\ninterface StreamPipeOptions {\n    preventAbort?: boolean;\n    preventCancel?: boolean;\n    /**\n     * Pipes this readable stream to a given writable stream destination. The way in which the piping process behaves under various error conditions can be customized with a number of passed options. It returns a promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered.\n     *\n     * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\n     *\n     * Errors and closures of the source and destination streams propagate as follows:\n     *\n     * An error in this source readable stream will abort destination, unless preventAbort is truthy. The returned promise will be rejected with the source's error, or with any error that occurs during aborting the destination.\n     *\n     * An error in destination will cancel this source readable stream, unless preventCancel is truthy. The returned promise will be rejected with the destination's error, or with any error that occurs during canceling the source.\n     *\n     * When this source readable stream closes, destination will be closed, unless preventClose is truthy. The returned promise will be fulfilled once this process completes, unless an error is encountered while closing the destination, in which case it will be rejected with that error.\n     *\n     * If destination starts out closed or closing, this source readable stream will be canceled, unless preventCancel is true. The returned promise will be rejected with an error indicating piping to a closed stream failed, or with any error that occurs during canceling the source.\n     *\n     * The signal option can be set to an AbortSignal to allow aborting an ongoing pipe operation via the corresponding AbortController. In this case, this source readable stream will be canceled, and destination aborted, unless the respective options preventCancel or preventAbort are set.\n     */\n    preventClose?: boolean;\n    signal?: AbortSignal;\n}\n\ninterface StructuredSerializeOptions {\n    transfer?: Transferable[];\n}\n\ninterface TextDecodeOptions {\n    stream?: boolean;\n}\n\ninterface TextDecoderOptions {\n    fatal?: boolean;\n    ignoreBOM?: boolean;\n}\n\ninterface TextEncoderEncodeIntoResult {\n    read?: number;\n    written?: number;\n}\n\ninterface Transformer<I = any, O = any> {\n    flush?: TransformerFlushCallback<O>;\n    readableType?: undefined;\n    start?: TransformerStartCallback<O>;\n    transform?: TransformerTransformCallback<I, O>;\n    writableType?: undefined;\n}\n\ninterface UnderlyingByteSource {\n    autoAllocateChunkSize?: number;\n    cancel?: UnderlyingSourceCancelCallback;\n    pull?: (controller: ReadableByteStreamController) => void | PromiseLike<void>;\n    start?: (controller: ReadableByteStreamController) => any;\n    type: \"bytes\";\n}\n\ninterface UnderlyingDefaultSource<R = any> {\n    cancel?: UnderlyingSourceCancelCallback;\n    pull?: (controller: ReadableStreamDefaultController<R>) => void | PromiseLike<void>;\n    start?: (controller: ReadableStreamDefaultController<R>) => any;\n    type?: undefined;\n}\n\ninterface UnderlyingSink<W = any> {\n    abort?: UnderlyingSinkAbortCallback;\n    close?: UnderlyingSinkCloseCallback;\n    start?: UnderlyingSinkStartCallback;\n    type?: undefined;\n    write?: UnderlyingSinkWriteCallback<W>;\n}\n\ninterface UnderlyingSource<R = any> {\n    autoAllocateChunkSize?: number;\n    cancel?: UnderlyingSourceCancelCallback;\n    pull?: UnderlyingSourcePullCallback<R>;\n    start?: UnderlyingSourceStartCallback<R>;\n    type?: ReadableStreamType;\n}\n\ninterface VideoColorSpaceInit {\n    fullRange?: boolean | null;\n    matrix?: VideoMatrixCoefficients | null;\n    primaries?: VideoColorPrimaries | null;\n    transfer?: VideoTransferCharacteristics | null;\n}\n\ninterface VideoConfiguration {\n    bitrate: number;\n    colorGamut?: ColorGamut;\n    contentType: string;\n    framerate: number;\n    hdrMetadataType?: HdrMetadataType;\n    height: number;\n    scalabilityMode?: string;\n    transferFunction?: TransferFunction;\n    width: number;\n}\n\ninterface WebGLContextAttributes {\n    alpha?: boolean;\n    antialias?: boolean;\n    depth?: boolean;\n    desynchronized?: boolean;\n    failIfMajorPerformanceCaveat?: boolean;\n    powerPreference?: WebGLPowerPreference;\n    premultipliedAlpha?: boolean;\n    preserveDrawingBuffer?: boolean;\n    stencil?: boolean;\n}\n\ninterface WebGLContextEventInit extends EventInit {\n    statusMessage?: string;\n}\n\ninterface WorkerOptions {\n    credentials?: RequestCredentials;\n    name?: string;\n    type?: WorkerType;\n}\n\n/** The ANGLE_instanced_arrays extension is part of the WebGL API and allows to draw the same object, or groups of similar objects multiple times, if they share the same vertex data, primitive count and type. */\ninterface ANGLE_instanced_arrays {\n    drawArraysInstancedANGLE(mode: GLenum, first: GLint, count: GLsizei, primcount: GLsizei): void;\n    drawElementsInstancedANGLE(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, primcount: GLsizei): void;\n    vertexAttribDivisorANGLE(index: GLuint, divisor: GLuint): void;\n    readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88FE;\n}\n\n/** A controller object that allows you to abort one or more DOM requests as and when desired. */\ninterface AbortController {\n    /** Returns the AbortSignal object associated with this object. */\n    readonly signal: AbortSignal;\n    /** Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted. */\n    abort(reason?: any): void;\n}\n\ndeclare var AbortController: {\n    prototype: AbortController;\n    new(): AbortController;\n};\n\ninterface AbortSignalEventMap {\n    \"abort\": Event;\n}\n\n/** A signal object that allows you to communicate with a DOM request (such as a Fetch) and abort it if required via an AbortController object. */\ninterface AbortSignal extends EventTarget {\n    /** Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise. */\n    readonly aborted: boolean;\n    onabort: ((this: AbortSignal, ev: Event) => any) | null;\n    readonly reason: any;\n    throwIfAborted(): void;\n    addEventListener<K extends keyof AbortSignalEventMap>(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AbortSignalEventMap>(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AbortSignal: {\n    prototype: AbortSignal;\n    new(): AbortSignal;\n    abort(reason?: any): AbortSignal;\n    timeout(milliseconds: number): AbortSignal;\n};\n\ninterface AbstractWorkerEventMap {\n    \"error\": ErrorEvent;\n}\n\ninterface AbstractWorker {\n    onerror: ((this: AbstractWorker, ev: ErrorEvent) => any) | null;\n    addEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof AbstractWorkerEventMap>(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ninterface AnimationFrameProvider {\n    cancelAnimationFrame(handle: number): void;\n    requestAnimationFrame(callback: FrameRequestCallback): number;\n}\n\n/** A file-like object of immutable, raw data. Blobs represent data that isn't necessarily in a JavaScript-native format. The File interface is based on Blob, inheriting blob functionality and expanding it to support files on the user's system. */\ninterface Blob {\n    readonly size: number;\n    readonly type: string;\n    arrayBuffer(): Promise<ArrayBuffer>;\n    slice(start?: number, end?: number, contentType?: string): Blob;\n    stream(): ReadableStream<Uint8Array>;\n    text(): Promise<string>;\n}\n\ndeclare var Blob: {\n    prototype: Blob;\n    new(blobParts?: BlobPart[], options?: BlobPropertyBag): Blob;\n};\n\ninterface Body {\n    readonly body: ReadableStream<Uint8Array> | null;\n    readonly bodyUsed: boolean;\n    arrayBuffer(): Promise<ArrayBuffer>;\n    blob(): Promise<Blob>;\n    formData(): Promise<FormData>;\n    json(): Promise<any>;\n    text(): Promise<string>;\n}\n\ninterface BroadcastChannelEventMap {\n    \"message\": MessageEvent;\n    \"messageerror\": MessageEvent;\n}\n\ninterface BroadcastChannel extends EventTarget {\n    /** Returns the channel name (as passed to the constructor). */\n    readonly name: string;\n    onmessage: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;\n    onmessageerror: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;\n    /** Closes the BroadcastChannel object, opening it up to garbage collection. */\n    close(): void;\n    /** Sends the given message to other BroadcastChannel objects set up for this channel. Messages can be structured objects, e.g. nested objects and arrays. */\n    postMessage(message: any): void;\n    addEventListener<K extends keyof BroadcastChannelEventMap>(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof BroadcastChannelEventMap>(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var BroadcastChannel: {\n    prototype: BroadcastChannel;\n    new(name: string): BroadcastChannel;\n};\n\n/** This Streams API interface provides\\xA0a built-in byte length queuing strategy that can be used when constructing streams. */\ninterface ByteLengthQueuingStrategy extends QueuingStrategy<ArrayBufferView> {\n    readonly highWaterMark: number;\n    readonly size: QueuingStrategySize<ArrayBufferView>;\n}\n\ndeclare var ByteLengthQueuingStrategy: {\n    prototype: ByteLengthQueuingStrategy;\n    new(init: QueuingStrategyInit): ByteLengthQueuingStrategy;\n};\n\n/**\n * Provides a storage mechanism for Request / Response object pairs that are cached, for example as part of the ServiceWorker life cycle. Note that the Cache interface is exposed to windowed scopes as well as workers. You don't have to use it in conjunction with service workers, even though it is defined in the service worker spec.\n * Available only in secure contexts.\n */\ninterface Cache {\n    add(request: RequestInfo | URL): Promise<void>;\n    addAll(requests: RequestInfo[]): Promise<void>;\n    delete(request: RequestInfo | URL, options?: CacheQueryOptions): Promise<boolean>;\n    keys(request?: RequestInfo | URL, options?: CacheQueryOptions): Promise<ReadonlyArray<Request>>;\n    match(request: RequestInfo | URL, options?: CacheQueryOptions): Promise<Response | undefined>;\n    matchAll(request?: RequestInfo | URL, options?: CacheQueryOptions): Promise<ReadonlyArray<Response>>;\n    put(request: RequestInfo | URL, response: Response): Promise<void>;\n}\n\ndeclare var Cache: {\n    prototype: Cache;\n    new(): Cache;\n};\n\n/**\n * The storage for Cache objects.\n * Available only in secure contexts.\n */\ninterface CacheStorage {\n    delete(cacheName: string): Promise<boolean>;\n    has(cacheName: string): Promise<boolean>;\n    keys(): Promise<string[]>;\n    match(request: RequestInfo | URL, options?: MultiCacheQueryOptions): Promise<Response | undefined>;\n    open(cacheName: string): Promise<Cache>;\n}\n\ndeclare var CacheStorage: {\n    prototype: CacheStorage;\n    new(): CacheStorage;\n};\n\ninterface CanvasCompositing {\n    globalAlpha: number;\n    globalCompositeOperation: GlobalCompositeOperation;\n}\n\ninterface CanvasDrawImage {\n    drawImage(image: CanvasImageSource, dx: number, dy: number): void;\n    drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void;\n    drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;\n}\n\ninterface CanvasDrawPath {\n    beginPath(): void;\n    clip(fillRule?: CanvasFillRule): void;\n    clip(path: Path2D, fillRule?: CanvasFillRule): void;\n    fill(fillRule?: CanvasFillRule): void;\n    fill(path: Path2D, fillRule?: CanvasFillRule): void;\n    isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean;\n    isPointInPath(path: Path2D, x: number, y: number, fillRule?: CanvasFillRule): boolean;\n    isPointInStroke(x: number, y: number): boolean;\n    isPointInStroke(path: Path2D, x: number, y: number): boolean;\n    stroke(): void;\n    stroke(path: Path2D): void;\n}\n\ninterface CanvasFillStrokeStyles {\n    fillStyle: string | CanvasGradient | CanvasPattern;\n    strokeStyle: string | CanvasGradient | CanvasPattern;\n    createConicGradient(startAngle: number, x: number, y: number): CanvasGradient;\n    createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;\n    createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null;\n    createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;\n}\n\ninterface CanvasFilters {\n    filter: string;\n}\n\n/** An opaque object describing a gradient. It is returned by the methods CanvasRenderingContext2D.createLinearGradient() or CanvasRenderingContext2D.createRadialGradient(). */\ninterface CanvasGradient {\n    /**\n     * Adds a color stop with the given color to the gradient at the given offset. 0.0 is the offset at one end of the gradient, 1.0 is the offset at the other end.\n     *\n     * Throws an \"IndexSizeError\" DOMException if the offset is out of range. Throws a \"SyntaxError\" DOMException if the color cannot be parsed.\n     */\n    addColorStop(offset: number, color: string): void;\n}\n\ndeclare var CanvasGradient: {\n    prototype: CanvasGradient;\n    new(): CanvasGradient;\n};\n\ninterface CanvasImageData {\n    createImageData(sw: number, sh: number, settings?: ImageDataSettings): ImageData;\n    createImageData(imagedata: ImageData): ImageData;\n    getImageData(sx: number, sy: number, sw: number, sh: number, settings?: ImageDataSettings): ImageData;\n    putImageData(imagedata: ImageData, dx: number, dy: number): void;\n    putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void;\n}\n\ninterface CanvasImageSmoothing {\n    imageSmoothingEnabled: boolean;\n    imageSmoothingQuality: ImageSmoothingQuality;\n}\n\ninterface CanvasPath {\n    arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;\n    arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;\n    bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;\n    closePath(): void;\n    ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;\n    lineTo(x: number, y: number): void;\n    moveTo(x: number, y: number): void;\n    quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;\n    rect(x: number, y: number, w: number, h: number): void;\n    roundRect(x: number, y: number, w: number, h: number, radii?: number | DOMPointInit | (number | DOMPointInit)[]): void;\n}\n\ninterface CanvasPathDrawingStyles {\n    lineCap: CanvasLineCap;\n    lineDashOffset: number;\n    lineJoin: CanvasLineJoin;\n    lineWidth: number;\n    miterLimit: number;\n    getLineDash(): number[];\n    setLineDash(segments: number[]): void;\n}\n\n/** An opaque object describing a pattern, based on an image, a canvas, or a video, created by the CanvasRenderingContext2D.createPattern() method. */\ninterface CanvasPattern {\n    /** Sets the transformation matrix that will be used when rendering the pattern during a fill or stroke painting operation. */\n    setTransform(transform?: DOMMatrix2DInit): void;\n}\n\ndeclare var CanvasPattern: {\n    prototype: CanvasPattern;\n    new(): CanvasPattern;\n};\n\ninterface CanvasRect {\n    clearRect(x: number, y: number, w: number, h: number): void;\n    fillRect(x: number, y: number, w: number, h: number): void;\n    strokeRect(x: number, y: number, w: number, h: number): void;\n}\n\ninterface CanvasShadowStyles {\n    shadowBlur: number;\n    shadowColor: string;\n    shadowOffsetX: number;\n    shadowOffsetY: number;\n}\n\ninterface CanvasState {\n    restore(): void;\n    save(): void;\n}\n\ninterface CanvasText {\n    fillText(text: string, x: number, y: number, maxWidth?: number): void;\n    measureText(text: string): TextMetrics;\n    strokeText(text: string, x: number, y: number, maxWidth?: number): void;\n}\n\ninterface CanvasTextDrawingStyles {\n    direction: CanvasDirection;\n    font: string;\n    fontKerning: CanvasFontKerning;\n    textAlign: CanvasTextAlign;\n    textBaseline: CanvasTextBaseline;\n}\n\ninterface CanvasTransform {\n    getTransform(): DOMMatrix;\n    resetTransform(): void;\n    rotate(angle: number): void;\n    scale(x: number, y: number): void;\n    setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;\n    setTransform(transform?: DOMMatrix2DInit): void;\n    transform(a: number, b: number, c: number, d: number, e: number, f: number): void;\n    translate(x: number, y: number): void;\n}\n\n/** The Client\\xA0interface represents an executable context such as a Worker, or a SharedWorker. Window clients are represented by the more-specific\\xA0WindowClient. You can get\\xA0Client/WindowClient\\xA0objects from methods such as Clients.matchAll() and\\xA0Clients.get(). */\ninterface Client {\n    readonly frameType: FrameType;\n    readonly id: string;\n    readonly type: ClientTypes;\n    readonly url: string;\n    postMessage(message: any, transfer: Transferable[]): void;\n    postMessage(message: any, options?: StructuredSerializeOptions): void;\n}\n\ndeclare var Client: {\n    prototype: Client;\n    new(): Client;\n};\n\n/** Provides access to\\xA0Client\\xA0objects. Access it\\xA0via self.clients\\xA0within a\\xA0service worker. */\ninterface Clients {\n    claim(): Promise<void>;\n    get(id: string): Promise<Client | undefined>;\n    matchAll<T extends ClientQueryOptions>(options?: T): Promise<ReadonlyArray<T[\"type\"] extends \"window\" ? WindowClient : Client>>;\n    openWindow(url: string | URL): Promise<WindowClient | null>;\n}\n\ndeclare var Clients: {\n    prototype: Clients;\n    new(): Clients;\n};\n\n/** A CloseEvent is sent to clients using WebSockets when the connection is closed. This is delivered to the listener indicated by the WebSocket object's onclose attribute. */\ninterface CloseEvent extends Event {\n    /** Returns the WebSocket connection close code provided by the server. */\n    readonly code: number;\n    /** Returns the WebSocket connection close reason provided by the server. */\n    readonly reason: string;\n    /** Returns true if the connection closed cleanly; false otherwise. */\n    readonly wasClean: boolean;\n}\n\ndeclare var CloseEvent: {\n    prototype: CloseEvent;\n    new(type: string, eventInitDict?: CloseEventInit): CloseEvent;\n};\n\n/** This Streams API interface provides\\xA0a built-in byte length queuing strategy that can be used when constructing streams. */\ninterface CountQueuingStrategy extends QueuingStrategy {\n    readonly highWaterMark: number;\n    readonly size: QueuingStrategySize;\n}\n\ndeclare var CountQueuingStrategy: {\n    prototype: CountQueuingStrategy;\n    new(init: QueuingStrategyInit): CountQueuingStrategy;\n};\n\n/** Basic cryptography features available in the current context. It allows access to a cryptographically strong random number generator and to cryptographic primitives. */\ninterface Crypto {\n    /** Available only in secure contexts. */\n    readonly subtle: SubtleCrypto;\n    getRandomValues<T extends ArrayBufferView | null>(array: T): T;\n    /** Available only in secure contexts. */\n    randomUUID(): \\`\\${string}-\\${string}-\\${string}-\\${string}-\\${string}\\`;\n}\n\ndeclare var Crypto: {\n    prototype: Crypto;\n    new(): Crypto;\n};\n\n/**\n * The CryptoKey dictionary of the Web Crypto API represents a cryptographic key.\n * Available only in secure contexts.\n */\ninterface CryptoKey {\n    readonly algorithm: KeyAlgorithm;\n    readonly extractable: boolean;\n    readonly type: KeyType;\n    readonly usages: KeyUsage[];\n}\n\ndeclare var CryptoKey: {\n    prototype: CryptoKey;\n    new(): CryptoKey;\n};\n\ninterface CustomEvent<T = any> extends Event {\n    /** Returns any custom data event was created with. Typically used for synthetic events. */\n    readonly detail: T;\n    /** @deprecated */\n    initCustomEvent(type: string, bubbles?: boolean, cancelable?: boolean, detail?: T): void;\n}\n\ndeclare var CustomEvent: {\n    prototype: CustomEvent;\n    new<T>(type: string, eventInitDict?: CustomEventInit<T>): CustomEvent<T>;\n};\n\n/** An abnormal event (called an exception) which occurs as a result of calling a method or accessing a property of a web API. */\ninterface DOMException extends Error {\n    /** @deprecated */\n    readonly code: number;\n    readonly message: string;\n    readonly name: string;\n    readonly INDEX_SIZE_ERR: 1;\n    readonly DOMSTRING_SIZE_ERR: 2;\n    readonly HIERARCHY_REQUEST_ERR: 3;\n    readonly WRONG_DOCUMENT_ERR: 4;\n    readonly INVALID_CHARACTER_ERR: 5;\n    readonly NO_DATA_ALLOWED_ERR: 6;\n    readonly NO_MODIFICATION_ALLOWED_ERR: 7;\n    readonly NOT_FOUND_ERR: 8;\n    readonly NOT_SUPPORTED_ERR: 9;\n    readonly INUSE_ATTRIBUTE_ERR: 10;\n    readonly INVALID_STATE_ERR: 11;\n    readonly SYNTAX_ERR: 12;\n    readonly INVALID_MODIFICATION_ERR: 13;\n    readonly NAMESPACE_ERR: 14;\n    readonly INVALID_ACCESS_ERR: 15;\n    readonly VALIDATION_ERR: 16;\n    readonly TYPE_MISMATCH_ERR: 17;\n    readonly SECURITY_ERR: 18;\n    readonly NETWORK_ERR: 19;\n    readonly ABORT_ERR: 20;\n    readonly URL_MISMATCH_ERR: 21;\n    readonly QUOTA_EXCEEDED_ERR: 22;\n    readonly TIMEOUT_ERR: 23;\n    readonly INVALID_NODE_TYPE_ERR: 24;\n    readonly DATA_CLONE_ERR: 25;\n}\n\ndeclare var DOMException: {\n    prototype: DOMException;\n    new(message?: string, name?: string): DOMException;\n    readonly INDEX_SIZE_ERR: 1;\n    readonly DOMSTRING_SIZE_ERR: 2;\n    readonly HIERARCHY_REQUEST_ERR: 3;\n    readonly WRONG_DOCUMENT_ERR: 4;\n    readonly INVALID_CHARACTER_ERR: 5;\n    readonly NO_DATA_ALLOWED_ERR: 6;\n    readonly NO_MODIFICATION_ALLOWED_ERR: 7;\n    readonly NOT_FOUND_ERR: 8;\n    readonly NOT_SUPPORTED_ERR: 9;\n    readonly INUSE_ATTRIBUTE_ERR: 10;\n    readonly INVALID_STATE_ERR: 11;\n    readonly SYNTAX_ERR: 12;\n    readonly INVALID_MODIFICATION_ERR: 13;\n    readonly NAMESPACE_ERR: 14;\n    readonly INVALID_ACCESS_ERR: 15;\n    readonly VALIDATION_ERR: 16;\n    readonly TYPE_MISMATCH_ERR: 17;\n    readonly SECURITY_ERR: 18;\n    readonly NETWORK_ERR: 19;\n    readonly ABORT_ERR: 20;\n    readonly URL_MISMATCH_ERR: 21;\n    readonly QUOTA_EXCEEDED_ERR: 22;\n    readonly TIMEOUT_ERR: 23;\n    readonly INVALID_NODE_TYPE_ERR: 24;\n    readonly DATA_CLONE_ERR: 25;\n};\n\ninterface DOMMatrix extends DOMMatrixReadOnly {\n    a: number;\n    b: number;\n    c: number;\n    d: number;\n    e: number;\n    f: number;\n    m11: number;\n    m12: number;\n    m13: number;\n    m14: number;\n    m21: number;\n    m22: number;\n    m23: number;\n    m24: number;\n    m31: number;\n    m32: number;\n    m33: number;\n    m34: number;\n    m41: number;\n    m42: number;\n    m43: number;\n    m44: number;\n    invertSelf(): DOMMatrix;\n    multiplySelf(other?: DOMMatrixInit): DOMMatrix;\n    preMultiplySelf(other?: DOMMatrixInit): DOMMatrix;\n    rotateAxisAngleSelf(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;\n    rotateFromVectorSelf(x?: number, y?: number): DOMMatrix;\n    rotateSelf(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;\n    scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n    scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n    skewXSelf(sx?: number): DOMMatrix;\n    skewYSelf(sy?: number): DOMMatrix;\n    translateSelf(tx?: number, ty?: number, tz?: number): DOMMatrix;\n}\n\ndeclare var DOMMatrix: {\n    prototype: DOMMatrix;\n    new(init?: string | number[]): DOMMatrix;\n    fromFloat32Array(array32: Float32Array): DOMMatrix;\n    fromFloat64Array(array64: Float64Array): DOMMatrix;\n    fromMatrix(other?: DOMMatrixInit): DOMMatrix;\n};\n\ninterface DOMMatrixReadOnly {\n    readonly a: number;\n    readonly b: number;\n    readonly c: number;\n    readonly d: number;\n    readonly e: number;\n    readonly f: number;\n    readonly is2D: boolean;\n    readonly isIdentity: boolean;\n    readonly m11: number;\n    readonly m12: number;\n    readonly m13: number;\n    readonly m14: number;\n    readonly m21: number;\n    readonly m22: number;\n    readonly m23: number;\n    readonly m24: number;\n    readonly m31: number;\n    readonly m32: number;\n    readonly m33: number;\n    readonly m34: number;\n    readonly m41: number;\n    readonly m42: number;\n    readonly m43: number;\n    readonly m44: number;\n    flipX(): DOMMatrix;\n    flipY(): DOMMatrix;\n    inverse(): DOMMatrix;\n    multiply(other?: DOMMatrixInit): DOMMatrix;\n    rotate(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;\n    rotateAxisAngle(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;\n    rotateFromVector(x?: number, y?: number): DOMMatrix;\n    scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n    scale3d(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n    /** @deprecated */\n    scaleNonUniform(scaleX?: number, scaleY?: number): DOMMatrix;\n    skewX(sx?: number): DOMMatrix;\n    skewY(sy?: number): DOMMatrix;\n    toFloat32Array(): Float32Array;\n    toFloat64Array(): Float64Array;\n    toJSON(): any;\n    transformPoint(point?: DOMPointInit): DOMPoint;\n    translate(tx?: number, ty?: number, tz?: number): DOMMatrix;\n}\n\ndeclare var DOMMatrixReadOnly: {\n    prototype: DOMMatrixReadOnly;\n    new(init?: string | number[]): DOMMatrixReadOnly;\n    fromFloat32Array(array32: Float32Array): DOMMatrixReadOnly;\n    fromFloat64Array(array64: Float64Array): DOMMatrixReadOnly;\n    fromMatrix(other?: DOMMatrixInit): DOMMatrixReadOnly;\n};\n\ninterface DOMPoint extends DOMPointReadOnly {\n    w: number;\n    x: number;\n    y: number;\n    z: number;\n}\n\ndeclare var DOMPoint: {\n    prototype: DOMPoint;\n    new(x?: number, y?: number, z?: number, w?: number): DOMPoint;\n    fromPoint(other?: DOMPointInit): DOMPoint;\n};\n\ninterface DOMPointReadOnly {\n    readonly w: number;\n    readonly x: number;\n    readonly y: number;\n    readonly z: number;\n    matrixTransform(matrix?: DOMMatrixInit): DOMPoint;\n    toJSON(): any;\n}\n\ndeclare var DOMPointReadOnly: {\n    prototype: DOMPointReadOnly;\n    new(x?: number, y?: number, z?: number, w?: number): DOMPointReadOnly;\n    fromPoint(other?: DOMPointInit): DOMPointReadOnly;\n};\n\ninterface DOMQuad {\n    readonly p1: DOMPoint;\n    readonly p2: DOMPoint;\n    readonly p3: DOMPoint;\n    readonly p4: DOMPoint;\n    getBounds(): DOMRect;\n    toJSON(): any;\n}\n\ndeclare var DOMQuad: {\n    prototype: DOMQuad;\n    new(p1?: DOMPointInit, p2?: DOMPointInit, p3?: DOMPointInit, p4?: DOMPointInit): DOMQuad;\n    fromQuad(other?: DOMQuadInit): DOMQuad;\n    fromRect(other?: DOMRectInit): DOMQuad;\n};\n\ninterface DOMRect extends DOMRectReadOnly {\n    height: number;\n    width: number;\n    x: number;\n    y: number;\n}\n\ndeclare var DOMRect: {\n    prototype: DOMRect;\n    new(x?: number, y?: number, width?: number, height?: number): DOMRect;\n    fromRect(other?: DOMRectInit): DOMRect;\n};\n\ninterface DOMRectReadOnly {\n    readonly bottom: number;\n    readonly height: number;\n    readonly left: number;\n    readonly right: number;\n    readonly top: number;\n    readonly width: number;\n    readonly x: number;\n    readonly y: number;\n    toJSON(): any;\n}\n\ndeclare var DOMRectReadOnly: {\n    prototype: DOMRectReadOnly;\n    new(x?: number, y?: number, width?: number, height?: number): DOMRectReadOnly;\n    fromRect(other?: DOMRectInit): DOMRectReadOnly;\n};\n\n/** A type returned by some APIs which contains a list of DOMString (strings). */\ninterface DOMStringList {\n    /** Returns the number of strings in strings. */\n    readonly length: number;\n    /** Returns true if strings contains string, and false otherwise. */\n    contains(string: string): boolean;\n    /** Returns the string with index index from strings. */\n    item(index: number): string | null;\n    [index: number]: string;\n}\n\ndeclare var DOMStringList: {\n    prototype: DOMStringList;\n    new(): DOMStringList;\n};\n\ninterface DedicatedWorkerGlobalScopeEventMap extends WorkerGlobalScopeEventMap {\n    \"message\": MessageEvent;\n    \"messageerror\": MessageEvent;\n}\n\n/** (the Worker global scope) is accessible through the self keyword. Some additional global functions, namespaces objects, and constructors, not typically associated with the worker global scope, but available on it, are listed in the JavaScript Reference. See also: Functions available to workers. */\ninterface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider {\n    /** Returns dedicatedWorkerGlobal's name, i.e. the value given to the Worker constructor. Primarily useful for debugging. */\n    readonly name: string;\n    onmessage: ((this: DedicatedWorkerGlobalScope, ev: MessageEvent) => any) | null;\n    onmessageerror: ((this: DedicatedWorkerGlobalScope, ev: MessageEvent) => any) | null;\n    /** Aborts dedicatedWorkerGlobal. */\n    close(): void;\n    /** Clones message and transmits it to the Worker object associated with dedicatedWorkerGlobal. transfer can be passed as a list of objects that are to be transferred rather than cloned. */\n    postMessage(message: any, transfer: Transferable[]): void;\n    postMessage(message: any, options?: StructuredSerializeOptions): void;\n    addEventListener<K extends keyof DedicatedWorkerGlobalScopeEventMap>(type: K, listener: (this: DedicatedWorkerGlobalScope, ev: DedicatedWorkerGlobalScopeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof DedicatedWorkerGlobalScopeEventMap>(type: K, listener: (this: DedicatedWorkerGlobalScope, ev: DedicatedWorkerGlobalScopeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var DedicatedWorkerGlobalScope: {\n    prototype: DedicatedWorkerGlobalScope;\n    new(): DedicatedWorkerGlobalScope;\n};\n\ninterface EXT_blend_minmax {\n    readonly MIN_EXT: 0x8007;\n    readonly MAX_EXT: 0x8008;\n}\n\ninterface EXT_color_buffer_float {\n}\n\ninterface EXT_color_buffer_half_float {\n    readonly RGBA16F_EXT: 0x881A;\n    readonly RGB16F_EXT: 0x881B;\n    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211;\n    readonly UNSIGNED_NORMALIZED_EXT: 0x8C17;\n}\n\ninterface EXT_float_blend {\n}\n\n/** The EXT_frag_depth extension is part of the WebGL API and enables to set a depth value of a fragment from within the fragment shader. */\ninterface EXT_frag_depth {\n}\n\ninterface EXT_sRGB {\n    readonly SRGB_EXT: 0x8C40;\n    readonly SRGB_ALPHA_EXT: 0x8C42;\n    readonly SRGB8_ALPHA8_EXT: 0x8C43;\n    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210;\n}\n\ninterface EXT_shader_texture_lod {\n}\n\ninterface EXT_texture_compression_bptc {\n    readonly COMPRESSED_RGBA_BPTC_UNORM_EXT: 0x8E8C;\n    readonly COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: 0x8E8D;\n    readonly COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: 0x8E8E;\n    readonly COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: 0x8E8F;\n}\n\ninterface EXT_texture_compression_rgtc {\n    readonly COMPRESSED_RED_RGTC1_EXT: 0x8DBB;\n    readonly COMPRESSED_SIGNED_RED_RGTC1_EXT: 0x8DBC;\n    readonly COMPRESSED_RED_GREEN_RGTC2_EXT: 0x8DBD;\n    readonly COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 0x8DBE;\n}\n\n/** The EXT_texture_filter_anisotropic extension is part of the WebGL API and exposes two constants for anisotropic filtering (AF). */\ninterface EXT_texture_filter_anisotropic {\n    readonly TEXTURE_MAX_ANISOTROPY_EXT: 0x84FE;\n    readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84FF;\n}\n\ninterface EXT_texture_norm16 {\n    readonly R16_EXT: 0x822A;\n    readonly RG16_EXT: 0x822C;\n    readonly RGB16_EXT: 0x8054;\n    readonly RGBA16_EXT: 0x805B;\n    readonly R16_SNORM_EXT: 0x8F98;\n    readonly RG16_SNORM_EXT: 0x8F99;\n    readonly RGB16_SNORM_EXT: 0x8F9A;\n    readonly RGBA16_SNORM_EXT: 0x8F9B;\n}\n\n/** Events providing information related to errors in scripts or in files. */\ninterface ErrorEvent extends Event {\n    readonly colno: number;\n    readonly error: any;\n    readonly filename: string;\n    readonly lineno: number;\n    readonly message: string;\n}\n\ndeclare var ErrorEvent: {\n    prototype: ErrorEvent;\n    new(type: string, eventInitDict?: ErrorEventInit): ErrorEvent;\n};\n\n/** An event which takes place in the DOM. */\ninterface Event {\n    /** Returns true or false depending on how event was initialized. True if event goes through its target's ancestors in reverse tree order, and false otherwise. */\n    readonly bubbles: boolean;\n    /** @deprecated */\n    cancelBubble: boolean;\n    /** Returns true or false depending on how event was initialized. Its return value does not always carry meaning, but true can indicate that part of the operation during which event was dispatched, can be canceled by invoking the preventDefault() method. */\n    readonly cancelable: boolean;\n    /** Returns true or false depending on how event was initialized. True if event invokes listeners past a ShadowRoot node that is the root of its target, and false otherwise. */\n    readonly composed: boolean;\n    /** Returns the object whose event listener's callback is currently being invoked. */\n    readonly currentTarget: EventTarget | null;\n    /** Returns true if preventDefault() was invoked successfully to indicate cancelation, and false otherwise. */\n    readonly defaultPrevented: boolean;\n    /** Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET, and BUBBLING_PHASE. */\n    readonly eventPhase: number;\n    /** Returns true if event was dispatched by the user agent, and false otherwise. */\n    readonly isTrusted: boolean;\n    /** @deprecated */\n    returnValue: boolean;\n    /** @deprecated */\n    readonly srcElement: EventTarget | null;\n    /** Returns the object to which event is dispatched (its target). */\n    readonly target: EventTarget | null;\n    /** Returns the event's timestamp as the number of milliseconds measured relative to the time origin. */\n    readonly timeStamp: DOMHighResTimeStamp;\n    /** Returns the type of event, e.g. \"click\", \"hashchange\", or \"submit\". */\n    readonly type: string;\n    /** Returns the invocation target objects of event's path (objects on which listeners will be invoked), except for any nodes in shadow trees of which the shadow root's mode is \"closed\" that are not reachable from event's currentTarget. */\n    composedPath(): EventTarget[];\n    /** @deprecated */\n    initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;\n    /** If invoked when the cancelable attribute value is true, and while executing a listener for the event with passive set to false, signals to the operation that caused event to be dispatched that it needs to be canceled. */\n    preventDefault(): void;\n    /** Invoking this method prevents event from reaching any registered event listeners after the current one finishes running and, when dispatched in a tree, also prevents event from reaching any other objects. */\n    stopImmediatePropagation(): void;\n    /** When dispatched in a tree, invoking this method prevents event from reaching any objects other than the current object. */\n    stopPropagation(): void;\n    readonly NONE: 0;\n    readonly CAPTURING_PHASE: 1;\n    readonly AT_TARGET: 2;\n    readonly BUBBLING_PHASE: 3;\n}\n\ndeclare var Event: {\n    prototype: Event;\n    new(type: string, eventInitDict?: EventInit): Event;\n    readonly NONE: 0;\n    readonly CAPTURING_PHASE: 1;\n    readonly AT_TARGET: 2;\n    readonly BUBBLING_PHASE: 3;\n};\n\ninterface EventListener {\n    (evt: Event): void;\n}\n\ninterface EventListenerObject {\n    handleEvent(object: Event): void;\n}\n\ninterface EventSourceEventMap {\n    \"error\": Event;\n    \"message\": MessageEvent;\n    \"open\": Event;\n}\n\ninterface EventSource extends EventTarget {\n    onerror: ((this: EventSource, ev: Event) => any) | null;\n    onmessage: ((this: EventSource, ev: MessageEvent) => any) | null;\n    onopen: ((this: EventSource, ev: Event) => any) | null;\n    /** Returns the state of this EventSource object's connection. It can have the values described below. */\n    readonly readyState: number;\n    /** Returns the URL providing the event stream. */\n    readonly url: string;\n    /** Returns true if the credentials mode for connection requests to the URL providing the event stream is set to \"include\", and false otherwise. */\n    readonly withCredentials: boolean;\n    /** Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED. */\n    close(): void;\n    readonly CONNECTING: 0;\n    readonly OPEN: 1;\n    readonly CLOSED: 2;\n    addEventListener<K extends keyof EventSourceEventMap>(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: (this: EventSource, event: MessageEvent) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof EventSourceEventMap>(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: (this: EventSource, event: MessageEvent) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var EventSource: {\n    prototype: EventSource;\n    new(url: string | URL, eventSourceInitDict?: EventSourceInit): EventSource;\n    readonly CONNECTING: 0;\n    readonly OPEN: 1;\n    readonly CLOSED: 2;\n};\n\n/** EventTarget is a DOM interface implemented by objects that can receive events and may have listeners for them. */\ninterface EventTarget {\n    /**\n     * Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.\n     *\n     * The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.\n     *\n     * When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.\n     *\n     * When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in \\xA7 2.8 Observing event listeners.\n     *\n     * When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.\n     *\n     * If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.\n     *\n     * The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.\n     */\n    addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: AddEventListenerOptions | boolean): void;\n    /** Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. */\n    dispatchEvent(event: Event): boolean;\n    /** Removes the event listener in target's event listener list with the same type, callback, and options. */\n    removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;\n}\n\ndeclare var EventTarget: {\n    prototype: EventTarget;\n    new(): EventTarget;\n};\n\n/** Extends the lifetime of the install and activate events dispatched on the global scope as part of the service worker lifecycle. This ensures that any functional events (like FetchEvent) are not dispatched until it upgrades database schemas and deletes the outdated cache entries. */\ninterface ExtendableEvent extends Event {\n    waitUntil(f: Promise<any>): void;\n}\n\ndeclare var ExtendableEvent: {\n    prototype: ExtendableEvent;\n    new(type: string, eventInitDict?: ExtendableEventInit): ExtendableEvent;\n};\n\n/** This ServiceWorker API interface represents the event object of a message event fired on a service worker (when a channel message is received on the ServiceWorkerGlobalScope from another context) \\u2014 extends the lifetime of such events. */\ninterface ExtendableMessageEvent extends ExtendableEvent {\n    readonly data: any;\n    readonly lastEventId: string;\n    readonly origin: string;\n    readonly ports: ReadonlyArray<MessagePort>;\n    readonly source: Client | ServiceWorker | MessagePort | null;\n}\n\ndeclare var ExtendableMessageEvent: {\n    prototype: ExtendableMessageEvent;\n    new(type: string, eventInitDict?: ExtendableMessageEventInit): ExtendableMessageEvent;\n};\n\n/** This is the event type for fetch\\xA0events dispatched on the\\xA0service worker global scope. It contains information about the fetch, including the\\xA0request and how the receiver will treat the response. It provides the event.respondWith() method, which allows us to provide a response to this fetch. */\ninterface FetchEvent extends ExtendableEvent {\n    readonly clientId: string;\n    readonly handled: Promise<undefined>;\n    readonly preloadResponse: Promise<any>;\n    readonly request: Request;\n    readonly resultingClientId: string;\n    respondWith(r: Response | PromiseLike<Response>): void;\n}\n\ndeclare var FetchEvent: {\n    prototype: FetchEvent;\n    new(type: string, eventInitDict: FetchEventInit): FetchEvent;\n};\n\n/** Provides information about files and allows JavaScript in a web page to access their content. */\ninterface File extends Blob {\n    readonly lastModified: number;\n    readonly name: string;\n    readonly webkitRelativePath: string;\n}\n\ndeclare var File: {\n    prototype: File;\n    new(fileBits: BlobPart[], fileName: string, options?: FilePropertyBag): File;\n};\n\n/** An object of this type is returned by the files property of the HTML <input> element; this lets you access the list of files selected with the <input type=\"file\"> element. It's also used for a list of files dropped into web content when using the drag and drop API; see the DataTransfer object for details on this usage. */\ninterface FileList {\n    readonly length: number;\n    item(index: number): File | null;\n    [index: number]: File;\n}\n\ndeclare var FileList: {\n    prototype: FileList;\n    new(): FileList;\n};\n\ninterface FileReaderEventMap {\n    \"abort\": ProgressEvent<FileReader>;\n    \"error\": ProgressEvent<FileReader>;\n    \"load\": ProgressEvent<FileReader>;\n    \"loadend\": ProgressEvent<FileReader>;\n    \"loadstart\": ProgressEvent<FileReader>;\n    \"progress\": ProgressEvent<FileReader>;\n}\n\n/** Lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer, using File or Blob objects to specify the file or data to read. */\ninterface FileReader extends EventTarget {\n    readonly error: DOMException | null;\n    onabort: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;\n    onerror: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;\n    onload: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;\n    onloadend: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;\n    onloadstart: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;\n    onprogress: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;\n    readonly readyState: typeof FileReader.EMPTY | typeof FileReader.LOADING | typeof FileReader.DONE;\n    readonly result: string | ArrayBuffer | null;\n    abort(): void;\n    readAsArrayBuffer(blob: Blob): void;\n    readAsBinaryString(blob: Blob): void;\n    readAsDataURL(blob: Blob): void;\n    readAsText(blob: Blob, encoding?: string): void;\n    readonly EMPTY: 0;\n    readonly LOADING: 1;\n    readonly DONE: 2;\n    addEventListener<K extends keyof FileReaderEventMap>(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof FileReaderEventMap>(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var FileReader: {\n    prototype: FileReader;\n    new(): FileReader;\n    readonly EMPTY: 0;\n    readonly LOADING: 1;\n    readonly DONE: 2;\n};\n\n/** Allows to read File or Blob objects in a synchronous way. */\ninterface FileReaderSync {\n    readAsArrayBuffer(blob: Blob): ArrayBuffer;\n    /** @deprecated */\n    readAsBinaryString(blob: Blob): string;\n    readAsDataURL(blob: Blob): string;\n    readAsText(blob: Blob, encoding?: string): string;\n}\n\ndeclare var FileReaderSync: {\n    prototype: FileReaderSync;\n    new(): FileReaderSync;\n};\n\n/** Available only in secure contexts. */\ninterface FileSystemDirectoryHandle extends FileSystemHandle {\n    readonly kind: \"directory\";\n    getDirectoryHandle(name: string, options?: FileSystemGetDirectoryOptions): Promise<FileSystemDirectoryHandle>;\n    getFileHandle(name: string, options?: FileSystemGetFileOptions): Promise<FileSystemFileHandle>;\n    removeEntry(name: string, options?: FileSystemRemoveOptions): Promise<void>;\n    resolve(possibleDescendant: FileSystemHandle): Promise<string[] | null>;\n}\n\ndeclare var FileSystemDirectoryHandle: {\n    prototype: FileSystemDirectoryHandle;\n    new(): FileSystemDirectoryHandle;\n};\n\n/** Available only in secure contexts. */\ninterface FileSystemFileHandle extends FileSystemHandle {\n    readonly kind: \"file\";\n    createSyncAccessHandle(): Promise<FileSystemSyncAccessHandle>;\n    getFile(): Promise<File>;\n}\n\ndeclare var FileSystemFileHandle: {\n    prototype: FileSystemFileHandle;\n    new(): FileSystemFileHandle;\n};\n\n/** Available only in secure contexts. */\ninterface FileSystemHandle {\n    readonly kind: FileSystemHandleKind;\n    readonly name: string;\n    isSameEntry(other: FileSystemHandle): Promise<boolean>;\n}\n\ndeclare var FileSystemHandle: {\n    prototype: FileSystemHandle;\n    new(): FileSystemHandle;\n};\n\n/** Available only in secure contexts. */\ninterface FileSystemSyncAccessHandle {\n    close(): void;\n    flush(): void;\n    getSize(): number;\n    read(buffer: BufferSource, options?: FileSystemReadWriteOptions): number;\n    truncate(newSize: number): void;\n    write(buffer: BufferSource, options?: FileSystemReadWriteOptions): number;\n}\n\ndeclare var FileSystemSyncAccessHandle: {\n    prototype: FileSystemSyncAccessHandle;\n    new(): FileSystemSyncAccessHandle;\n};\n\ninterface FontFace {\n    ascentOverride: string;\n    descentOverride: string;\n    display: FontDisplay;\n    family: string;\n    featureSettings: string;\n    lineGapOverride: string;\n    readonly loaded: Promise<FontFace>;\n    readonly status: FontFaceLoadStatus;\n    stretch: string;\n    style: string;\n    unicodeRange: string;\n    variant: string;\n    weight: string;\n    load(): Promise<FontFace>;\n}\n\ndeclare var FontFace: {\n    prototype: FontFace;\n    new(family: string, source: string | BinaryData, descriptors?: FontFaceDescriptors): FontFace;\n};\n\ninterface FontFaceSetEventMap {\n    \"loading\": Event;\n    \"loadingdone\": Event;\n    \"loadingerror\": Event;\n}\n\ninterface FontFaceSet extends EventTarget {\n    onloading: ((this: FontFaceSet, ev: Event) => any) | null;\n    onloadingdone: ((this: FontFaceSet, ev: Event) => any) | null;\n    onloadingerror: ((this: FontFaceSet, ev: Event) => any) | null;\n    readonly ready: Promise<FontFaceSet>;\n    readonly status: FontFaceSetLoadStatus;\n    check(font: string, text?: string): boolean;\n    load(font: string, text?: string): Promise<FontFace[]>;\n    forEach(callbackfn: (value: FontFace, key: FontFace, parent: FontFaceSet) => void, thisArg?: any): void;\n    addEventListener<K extends keyof FontFaceSetEventMap>(type: K, listener: (this: FontFaceSet, ev: FontFaceSetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof FontFaceSetEventMap>(type: K, listener: (this: FontFaceSet, ev: FontFaceSetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var FontFaceSet: {\n    prototype: FontFaceSet;\n    new(initialFaces: FontFace[]): FontFaceSet;\n};\n\ninterface FontFaceSetLoadEvent extends Event {\n    readonly fontfaces: ReadonlyArray<FontFace>;\n}\n\ndeclare var FontFaceSetLoadEvent: {\n    prototype: FontFaceSetLoadEvent;\n    new(type: string, eventInitDict?: FontFaceSetLoadEventInit): FontFaceSetLoadEvent;\n};\n\ninterface FontFaceSource {\n    readonly fonts: FontFaceSet;\n}\n\n/** Provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using the XMLHttpRequest.send() method. It uses the same format a form would use if the encoding type were set to \"multipart/form-data\". */\ninterface FormData {\n    append(name: string, value: string | Blob, fileName?: string): void;\n    delete(name: string): void;\n    get(name: string): FormDataEntryValue | null;\n    getAll(name: string): FormDataEntryValue[];\n    has(name: string): boolean;\n    set(name: string, value: string | Blob, fileName?: string): void;\n    forEach(callbackfn: (value: FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void;\n}\n\ndeclare var FormData: {\n    prototype: FormData;\n    new(): FormData;\n};\n\ninterface GenericTransformStream {\n    readonly readable: ReadableStream;\n    readonly writable: WritableStream;\n}\n\n/** This Fetch API interface allows you to perform various actions on HTTP request and response headers. These actions include retrieving, setting, adding to, and removing. A Headers object has an associated header list, which is initially empty and consists\\xA0of zero or more name and value pairs. \\xA0You can add to this using methods like append() (see Examples.)\\xA0In all methods of this interface, header names are matched by case-insensitive byte sequence. */\ninterface Headers {\n    append(name: string, value: string): void;\n    delete(name: string): void;\n    get(name: string): string | null;\n    has(name: string): boolean;\n    set(name: string, value: string): void;\n    forEach(callbackfn: (value: string, key: string, parent: Headers) => void, thisArg?: any): void;\n}\n\ndeclare var Headers: {\n    prototype: Headers;\n    new(init?: HeadersInit): Headers;\n};\n\n/** This IndexedDB API interface represents a cursor for traversing or iterating over multiple records in a database. */\ninterface IDBCursor {\n    /** Returns the direction (\"next\", \"nextunique\", \"prev\" or \"prevunique\") of the cursor. */\n    readonly direction: IDBCursorDirection;\n    /** Returns the key of the cursor. Throws a \"InvalidStateError\" DOMException if the cursor is advancing or is finished. */\n    readonly key: IDBValidKey;\n    /** Returns the effective key of the cursor. Throws a \"InvalidStateError\" DOMException if the cursor is advancing or is finished. */\n    readonly primaryKey: IDBValidKey;\n    readonly request: IDBRequest;\n    /** Returns the IDBObjectStore or IDBIndex the cursor was opened from. */\n    readonly source: IDBObjectStore | IDBIndex;\n    /** Advances the cursor through the next count records in range. */\n    advance(count: number): void;\n    /** Advances the cursor to the next record in range. */\n    continue(key?: IDBValidKey): void;\n    /** Advances the cursor to the next record in range matching or after key and primaryKey. Throws an \"InvalidAccessError\" DOMException if the source is not an index. */\n    continuePrimaryKey(key: IDBValidKey, primaryKey: IDBValidKey): void;\n    /**\n     * Delete the record pointed at by the cursor with a new value.\n     *\n     * If successful, request's result will be undefined.\n     */\n    delete(): IDBRequest<undefined>;\n    /**\n     * Updated the record pointed at by the cursor with a new value.\n     *\n     * Throws a \"DataError\" DOMException if the effective object store uses in-line keys and the key would have changed.\n     *\n     * If successful, request's result will be the record's key.\n     */\n    update(value: any): IDBRequest<IDBValidKey>;\n}\n\ndeclare var IDBCursor: {\n    prototype: IDBCursor;\n    new(): IDBCursor;\n};\n\n/** This IndexedDB API interface represents a cursor for traversing or iterating over multiple records in a database. It is the same as the IDBCursor, except that it includes the value property. */\ninterface IDBCursorWithValue extends IDBCursor {\n    /** Returns the cursor's current value. */\n    readonly value: any;\n}\n\ndeclare var IDBCursorWithValue: {\n    prototype: IDBCursorWithValue;\n    new(): IDBCursorWithValue;\n};\n\ninterface IDBDatabaseEventMap {\n    \"abort\": Event;\n    \"close\": Event;\n    \"error\": Event;\n    \"versionchange\": IDBVersionChangeEvent;\n}\n\n/** This IndexedDB API interface provides a connection to a database; you can use an IDBDatabase object to open a transaction on your database then create, manipulate, and delete objects (data) in that database. The interface provides the only way to get and manage versions of the database. */\ninterface IDBDatabase extends EventTarget {\n    /** Returns the name of the database. */\n    readonly name: string;\n    /** Returns a list of the names of object stores in the database. */\n    readonly objectStoreNames: DOMStringList;\n    onabort: ((this: IDBDatabase, ev: Event) => any) | null;\n    onclose: ((this: IDBDatabase, ev: Event) => any) | null;\n    onerror: ((this: IDBDatabase, ev: Event) => any) | null;\n    onversionchange: ((this: IDBDatabase, ev: IDBVersionChangeEvent) => any) | null;\n    /** Returns the version of the database. */\n    readonly version: number;\n    /** Closes the connection once all running transactions have finished. */\n    close(): void;\n    /**\n     * Creates a new object store with the given name and options and returns a new IDBObjectStore.\n     *\n     * Throws a \"InvalidStateError\" DOMException if not called within an upgrade transaction.\n     */\n    createObjectStore(name: string, options?: IDBObjectStoreParameters): IDBObjectStore;\n    /**\n     * Deletes the object store with the given name.\n     *\n     * Throws a \"InvalidStateError\" DOMException if not called within an upgrade transaction.\n     */\n    deleteObjectStore(name: string): void;\n    /** Returns a new transaction with the given mode (\"readonly\" or \"readwrite\") and scope which can be a single object store name or an array of names. */\n    transaction(storeNames: string | string[], mode?: IDBTransactionMode, options?: IDBTransactionOptions): IDBTransaction;\n    addEventListener<K extends keyof IDBDatabaseEventMap>(type: K, listener: (this: IDBDatabase, ev: IDBDatabaseEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof IDBDatabaseEventMap>(type: K, listener: (this: IDBDatabase, ev: IDBDatabaseEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var IDBDatabase: {\n    prototype: IDBDatabase;\n    new(): IDBDatabase;\n};\n\n/** In the following code snippet, we make a request to open a database, and include handlers for the success and error cases. For a full working example, see our To-do Notifications app (view example live.) */\ninterface IDBFactory {\n    /**\n     * Compares two values as keys. Returns -1 if key1 precedes key2, 1 if key2 precedes key1, and 0 if the keys are equal.\n     *\n     * Throws a \"DataError\" DOMException if either input is not a valid key.\n     */\n    cmp(first: any, second: any): number;\n    databases(): Promise<IDBDatabaseInfo[]>;\n    /** Attempts to delete the named database. If the database already exists and there are open connections that don't close in response to a versionchange event, the request will be blocked until all they close. If the request is successful request's result will be null. */\n    deleteDatabase(name: string): IDBOpenDBRequest;\n    /** Attempts to open a connection to the named database with the current version, or 1 if it does not already exist. If the request is successful request's result will be the connection. */\n    open(name: string, version?: number): IDBOpenDBRequest;\n}\n\ndeclare var IDBFactory: {\n    prototype: IDBFactory;\n    new(): IDBFactory;\n};\n\n/** IDBIndex interface of the IndexedDB API provides asynchronous access to an index in a database. An index is a kind of object store for looking up records in another object store, called the referenced object store. You use this interface to retrieve data. */\ninterface IDBIndex {\n    readonly keyPath: string | string[];\n    readonly multiEntry: boolean;\n    /** Returns the name of the index. */\n    name: string;\n    /** Returns the IDBObjectStore the index belongs to. */\n    readonly objectStore: IDBObjectStore;\n    readonly unique: boolean;\n    /**\n     * Retrieves the number of records matching the given key or key range in query.\n     *\n     * If successful, request's result will be the count.\n     */\n    count(query?: IDBValidKey | IDBKeyRange): IDBRequest<number>;\n    /**\n     * Retrieves the value of the first record matching the given key or key range in query.\n     *\n     * If successful, request's result will be the value, or undefined if there was no matching record.\n     */\n    get(query: IDBValidKey | IDBKeyRange): IDBRequest<any>;\n    /**\n     * Retrieves the values of the records matching the given key or key range in query (up to count if given).\n     *\n     * If successful, request's result will be an Array of the values.\n     */\n    getAll(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<any[]>;\n    /**\n     * Retrieves the keys of records matching the given key or key range in query (up to count if given).\n     *\n     * If successful, request's result will be an Array of the keys.\n     */\n    getAllKeys(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<IDBValidKey[]>;\n    /**\n     * Retrieves the key of the first record matching the given key or key range in query.\n     *\n     * If successful, request's result will be the key, or undefined if there was no matching record.\n     */\n    getKey(query: IDBValidKey | IDBKeyRange): IDBRequest<IDBValidKey | undefined>;\n    /**\n     * Opens a cursor over the records matching query, ordered by direction. If query is null, all records in index are matched.\n     *\n     * If successful, request's result will be an IDBCursorWithValue, or null if there were no matching records.\n     */\n    openCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursorWithValue | null>;\n    /**\n     * Opens a cursor with key only flag set over the records matching query, ordered by direction. If query is null, all records in index are matched.\n     *\n     * If successful, request's result will be an IDBCursor, or null if there were no matching records.\n     */\n    openKeyCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursor | null>;\n}\n\ndeclare var IDBIndex: {\n    prototype: IDBIndex;\n    new(): IDBIndex;\n};\n\n/** A key range can be a single value or a range with upper and lower bounds or endpoints. If the key range has both upper and lower bounds, then it is bounded; if it has no bounds, it is unbounded. A bounded key range can either be open (the endpoints are excluded) or closed (the endpoints are included). To retrieve all keys within a certain range, you can use the following code constructs: */\ninterface IDBKeyRange {\n    /** Returns lower bound, or undefined if none. */\n    readonly lower: any;\n    /** Returns true if the lower open flag is set, and false otherwise. */\n    readonly lowerOpen: boolean;\n    /** Returns upper bound, or undefined if none. */\n    readonly upper: any;\n    /** Returns true if the upper open flag is set, and false otherwise. */\n    readonly upperOpen: boolean;\n    /** Returns true if key is included in the range, and false otherwise. */\n    includes(key: any): boolean;\n}\n\ndeclare var IDBKeyRange: {\n    prototype: IDBKeyRange;\n    new(): IDBKeyRange;\n    /** Returns a new IDBKeyRange spanning from lower to upper. If lowerOpen is true, lower is not included in the range. If upperOpen is true, upper is not included in the range. */\n    bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange;\n    /** Returns a new IDBKeyRange starting at key with no upper bound. If open is true, key is not included in the range. */\n    lowerBound(lower: any, open?: boolean): IDBKeyRange;\n    /** Returns a new IDBKeyRange spanning only key. */\n    only(value: any): IDBKeyRange;\n    /** Returns a new IDBKeyRange with no lower bound and ending at key. If open is true, key is not included in the range. */\n    upperBound(upper: any, open?: boolean): IDBKeyRange;\n};\n\n/** This example shows a variety of different uses of object stores, from updating the data structure with IDBObjectStore.createIndex\\xA0inside an onupgradeneeded function, to adding a new item to our object store with IDBObjectStore.add. For a full working example, see our\\xA0To-do Notifications\\xA0app (view example live.) */\ninterface IDBObjectStore {\n    /** Returns true if the store has a key generator, and false otherwise. */\n    readonly autoIncrement: boolean;\n    /** Returns a list of the names of indexes in the store. */\n    readonly indexNames: DOMStringList;\n    /** Returns the key path of the store, or null if none. */\n    readonly keyPath: string | string[];\n    /** Returns the name of the store. */\n    name: string;\n    /** Returns the associated transaction. */\n    readonly transaction: IDBTransaction;\n    /**\n     * Adds or updates a record in store with the given value and key.\n     *\n     * If the store uses in-line keys and key is specified a \"DataError\" DOMException will be thrown.\n     *\n     * If put() is used, any existing record with the key will be replaced. If add() is used, and if a record with the key already exists the request will fail, with request's error set to a \"ConstraintError\" DOMException.\n     *\n     * If successful, request's result will be the record's key.\n     */\n    add(value: any, key?: IDBValidKey): IDBRequest<IDBValidKey>;\n    /**\n     * Deletes all records in store.\n     *\n     * If successful, request's result will be undefined.\n     */\n    clear(): IDBRequest<undefined>;\n    /**\n     * Retrieves the number of records matching the given key or key range in query.\n     *\n     * If successful, request's result will be the count.\n     */\n    count(query?: IDBValidKey | IDBKeyRange): IDBRequest<number>;\n    /**\n     * Creates a new index in store with the given name, keyPath and options and returns a new IDBIndex. If the keyPath and options define constraints that cannot be satisfied with the data already in store the upgrade transaction will abort with a \"ConstraintError\" DOMException.\n     *\n     * Throws an \"InvalidStateError\" DOMException if not called within an upgrade transaction.\n     */\n    createIndex(name: string, keyPath: string | string[], options?: IDBIndexParameters): IDBIndex;\n    /**\n     * Deletes records in store with the given key or in the given key range in query.\n     *\n     * If successful, request's result will be undefined.\n     */\n    delete(query: IDBValidKey | IDBKeyRange): IDBRequest<undefined>;\n    /**\n     * Deletes the index in store with the given name.\n     *\n     * Throws an \"InvalidStateError\" DOMException if not called within an upgrade transaction.\n     */\n    deleteIndex(name: string): void;\n    /**\n     * Retrieves the value of the first record matching the given key or key range in query.\n     *\n     * If successful, request's result will be the value, or undefined if there was no matching record.\n     */\n    get(query: IDBValidKey | IDBKeyRange): IDBRequest<any>;\n    /**\n     * Retrieves the values of the records matching the given key or key range in query (up to count if given).\n     *\n     * If successful, request's result will be an Array of the values.\n     */\n    getAll(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<any[]>;\n    /**\n     * Retrieves the keys of records matching the given key or key range in query (up to count if given).\n     *\n     * If successful, request's result will be an Array of the keys.\n     */\n    getAllKeys(query?: IDBValidKey | IDBKeyRange | null, count?: number): IDBRequest<IDBValidKey[]>;\n    /**\n     * Retrieves the key of the first record matching the given key or key range in query.\n     *\n     * If successful, request's result will be the key, or undefined if there was no matching record.\n     */\n    getKey(query: IDBValidKey | IDBKeyRange): IDBRequest<IDBValidKey | undefined>;\n    index(name: string): IDBIndex;\n    /**\n     * Opens a cursor over the records matching query, ordered by direction. If query is null, all records in store are matched.\n     *\n     * If successful, request's result will be an IDBCursorWithValue pointing at the first matching record, or null if there were no matching records.\n     */\n    openCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursorWithValue | null>;\n    /**\n     * Opens a cursor with key only flag set over the records matching query, ordered by direction. If query is null, all records in store are matched.\n     *\n     * If successful, request's result will be an IDBCursor pointing at the first matching record, or null if there were no matching records.\n     */\n    openKeyCursor(query?: IDBValidKey | IDBKeyRange | null, direction?: IDBCursorDirection): IDBRequest<IDBCursor | null>;\n    /**\n     * Adds or updates a record in store with the given value and key.\n     *\n     * If the store uses in-line keys and key is specified a \"DataError\" DOMException will be thrown.\n     *\n     * If put() is used, any existing record with the key will be replaced. If add() is used, and if a record with the key already exists the request will fail, with request's error set to a \"ConstraintError\" DOMException.\n     *\n     * If successful, request's result will be the record's key.\n     */\n    put(value: any, key?: IDBValidKey): IDBRequest<IDBValidKey>;\n}\n\ndeclare var IDBObjectStore: {\n    prototype: IDBObjectStore;\n    new(): IDBObjectStore;\n};\n\ninterface IDBOpenDBRequestEventMap extends IDBRequestEventMap {\n    \"blocked\": IDBVersionChangeEvent;\n    \"upgradeneeded\": IDBVersionChangeEvent;\n}\n\n/** Also inherits methods from its parents IDBRequest and EventTarget. */\ninterface IDBOpenDBRequest extends IDBRequest<IDBDatabase> {\n    onblocked: ((this: IDBOpenDBRequest, ev: IDBVersionChangeEvent) => any) | null;\n    onupgradeneeded: ((this: IDBOpenDBRequest, ev: IDBVersionChangeEvent) => any) | null;\n    addEventListener<K extends keyof IDBOpenDBRequestEventMap>(type: K, listener: (this: IDBOpenDBRequest, ev: IDBOpenDBRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof IDBOpenDBRequestEventMap>(type: K, listener: (this: IDBOpenDBRequest, ev: IDBOpenDBRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var IDBOpenDBRequest: {\n    prototype: IDBOpenDBRequest;\n    new(): IDBOpenDBRequest;\n};\n\ninterface IDBRequestEventMap {\n    \"error\": Event;\n    \"success\": Event;\n}\n\n/** The request object does not initially contain any information about the result of the operation, but once information becomes available, an event is fired on the request, and the information becomes available through the properties of the IDBRequest instance. */\ninterface IDBRequest<T = any> extends EventTarget {\n    /** When a request is completed, returns the error (a DOMException), or null if the request succeeded. Throws a \"InvalidStateError\" DOMException if the request is still pending. */\n    readonly error: DOMException | null;\n    onerror: ((this: IDBRequest<T>, ev: Event) => any) | null;\n    onsuccess: ((this: IDBRequest<T>, ev: Event) => any) | null;\n    /** Returns \"pending\" until a request is complete, then returns \"done\". */\n    readonly readyState: IDBRequestReadyState;\n    /** When a request is completed, returns the result, or undefined if the request failed. Throws a \"InvalidStateError\" DOMException if the request is still pending. */\n    readonly result: T;\n    /** Returns the IDBObjectStore, IDBIndex, or IDBCursor the request was made against, or null if is was an open request. */\n    readonly source: IDBObjectStore | IDBIndex | IDBCursor;\n    /** Returns the IDBTransaction the request was made within. If this as an open request, then it returns an upgrade transaction while it is running, or null otherwise. */\n    readonly transaction: IDBTransaction | null;\n    addEventListener<K extends keyof IDBRequestEventMap>(type: K, listener: (this: IDBRequest<T>, ev: IDBRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof IDBRequestEventMap>(type: K, listener: (this: IDBRequest<T>, ev: IDBRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var IDBRequest: {\n    prototype: IDBRequest;\n    new(): IDBRequest;\n};\n\ninterface IDBTransactionEventMap {\n    \"abort\": Event;\n    \"complete\": Event;\n    \"error\": Event;\n}\n\ninterface IDBTransaction extends EventTarget {\n    /** Returns the transaction's connection. */\n    readonly db: IDBDatabase;\n    readonly durability: IDBTransactionDurability;\n    /** If the transaction was aborted, returns the error (a DOMException) providing the reason. */\n    readonly error: DOMException | null;\n    /** Returns the mode the transaction was created with (\"readonly\" or \"readwrite\"), or \"versionchange\" for an upgrade transaction. */\n    readonly mode: IDBTransactionMode;\n    /** Returns a list of the names of object stores in the transaction's scope. For an upgrade transaction this is all object stores in the database. */\n    readonly objectStoreNames: DOMStringList;\n    onabort: ((this: IDBTransaction, ev: Event) => any) | null;\n    oncomplete: ((this: IDBTransaction, ev: Event) => any) | null;\n    onerror: ((this: IDBTransaction, ev: Event) => any) | null;\n    /** Aborts the transaction. All pending requests will fail with a \"AbortError\" DOMException and all changes made to the database will be reverted. */\n    abort(): void;\n    commit(): void;\n    /** Returns an IDBObjectStore in the transaction's scope. */\n    objectStore(name: string): IDBObjectStore;\n    addEventListener<K extends keyof IDBTransactionEventMap>(type: K, listener: (this: IDBTransaction, ev: IDBTransactionEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof IDBTransactionEventMap>(type: K, listener: (this: IDBTransaction, ev: IDBTransactionEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var IDBTransaction: {\n    prototype: IDBTransaction;\n    new(): IDBTransaction;\n};\n\n/** This IndexedDB API interface indicates that the version of the database has changed, as the result of an IDBOpenDBRequest.onupgradeneeded event handler function. */\ninterface IDBVersionChangeEvent extends Event {\n    readonly newVersion: number | null;\n    readonly oldVersion: number;\n}\n\ndeclare var IDBVersionChangeEvent: {\n    prototype: IDBVersionChangeEvent;\n    new(type: string, eventInitDict?: IDBVersionChangeEventInit): IDBVersionChangeEvent;\n};\n\ninterface ImageBitmap {\n    /** Returns the intrinsic height of the image, in CSS pixels. */\n    readonly height: number;\n    /** Returns the intrinsic width of the image, in CSS pixels. */\n    readonly width: number;\n    /** Releases imageBitmap's underlying bitmap data. */\n    close(): void;\n}\n\ndeclare var ImageBitmap: {\n    prototype: ImageBitmap;\n    new(): ImageBitmap;\n};\n\ninterface ImageBitmapRenderingContext {\n    /** Transfers the underlying bitmap data from imageBitmap to context, and the bitmap becomes the contents of the canvas element to which context is bound. */\n    transferFromImageBitmap(bitmap: ImageBitmap | null): void;\n}\n\ndeclare var ImageBitmapRenderingContext: {\n    prototype: ImageBitmapRenderingContext;\n    new(): ImageBitmapRenderingContext;\n};\n\n/** The underlying pixel data of an area of a <canvas> element. It is created using the ImageData() constructor or creator methods on the CanvasRenderingContext2D object associated with a canvas: createImageData() and getImageData(). It can also be used to set a part of the canvas by using putImageData(). */\ninterface ImageData {\n    readonly colorSpace: PredefinedColorSpace;\n    /** Returns the one-dimensional array containing the data in RGBA order, as integers in the range 0 to 255. */\n    readonly data: Uint8ClampedArray;\n    /** Returns the actual dimensions of the data in the ImageData object, in pixels. */\n    readonly height: number;\n    /** Returns the actual dimensions of the data in the ImageData object, in pixels. */\n    readonly width: number;\n}\n\ndeclare var ImageData: {\n    prototype: ImageData;\n    new(sw: number, sh: number, settings?: ImageDataSettings): ImageData;\n    new(data: Uint8ClampedArray, sw: number, sh?: number, settings?: ImageDataSettings): ImageData;\n};\n\ninterface KHR_parallel_shader_compile {\n    readonly COMPLETION_STATUS_KHR: 0x91B1;\n}\n\n/** Available only in secure contexts. */\ninterface Lock {\n    readonly mode: LockMode;\n    readonly name: string;\n}\n\ndeclare var Lock: {\n    prototype: Lock;\n    new(): Lock;\n};\n\n/** Available only in secure contexts. */\ninterface LockManager {\n    query(): Promise<LockManagerSnapshot>;\n    request(name: string, callback: LockGrantedCallback): Promise<any>;\n    request(name: string, options: LockOptions, callback: LockGrantedCallback): Promise<any>;\n}\n\ndeclare var LockManager: {\n    prototype: LockManager;\n    new(): LockManager;\n};\n\ninterface MediaCapabilities {\n    decodingInfo(configuration: MediaDecodingConfiguration): Promise<MediaCapabilitiesDecodingInfo>;\n    encodingInfo(configuration: MediaEncodingConfiguration): Promise<MediaCapabilitiesEncodingInfo>;\n}\n\ndeclare var MediaCapabilities: {\n    prototype: MediaCapabilities;\n    new(): MediaCapabilities;\n};\n\n/** This Channel Messaging API interface allows us to create a new message channel and send data through it via its two MessagePort properties. */\ninterface MessageChannel {\n    /** Returns the first MessagePort object. */\n    readonly port1: MessagePort;\n    /** Returns the second MessagePort object. */\n    readonly port2: MessagePort;\n}\n\ndeclare var MessageChannel: {\n    prototype: MessageChannel;\n    new(): MessageChannel;\n};\n\n/** A message received by a target object. */\ninterface MessageEvent<T = any> extends Event {\n    /** Returns the data of the message. */\n    readonly data: T;\n    /** Returns the last event ID string, for server-sent events. */\n    readonly lastEventId: string;\n    /** Returns the origin of the message, for server-sent events and cross-document messaging. */\n    readonly origin: string;\n    /** Returns the MessagePort array sent with the message, for cross-document messaging and channel messaging. */\n    readonly ports: ReadonlyArray<MessagePort>;\n    /** Returns the WindowProxy of the source window, for cross-document messaging, and the MessagePort being attached, in the connect event fired at SharedWorkerGlobalScope objects. */\n    readonly source: MessageEventSource | null;\n    /** @deprecated */\n    initMessageEvent(type: string, bubbles?: boolean, cancelable?: boolean, data?: any, origin?: string, lastEventId?: string, source?: MessageEventSource | null, ports?: MessagePort[]): void;\n}\n\ndeclare var MessageEvent: {\n    prototype: MessageEvent;\n    new<T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>;\n};\n\ninterface MessagePortEventMap {\n    \"message\": MessageEvent;\n    \"messageerror\": MessageEvent;\n}\n\n/** This Channel Messaging API interface represents one of the two ports of a MessageChannel, allowing messages to be sent from one port and listening out for them arriving at the other. */\ninterface MessagePort extends EventTarget {\n    onmessage: ((this: MessagePort, ev: MessageEvent) => any) | null;\n    onmessageerror: ((this: MessagePort, ev: MessageEvent) => any) | null;\n    /** Disconnects the port, so that it is no longer active. */\n    close(): void;\n    /**\n     * Posts a message through the channel. Objects listed in transfer are transferred, not just cloned, meaning that they are no longer usable on the sending side.\n     *\n     * Throws a \"DataCloneError\" DOMException if transfer contains duplicate objects or port, or if message could not be cloned.\n     */\n    postMessage(message: any, transfer: Transferable[]): void;\n    postMessage(message: any, options?: StructuredSerializeOptions): void;\n    /** Begins dispatching messages received on the port. */\n    start(): void;\n    addEventListener<K extends keyof MessagePortEventMap>(type: K, listener: (this: MessagePort, ev: MessagePortEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof MessagePortEventMap>(type: K, listener: (this: MessagePort, ev: MessagePortEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var MessagePort: {\n    prototype: MessagePort;\n    new(): MessagePort;\n};\n\n/** Available only in secure contexts. */\ninterface NavigationPreloadManager {\n    disable(): Promise<void>;\n    enable(): Promise<void>;\n    getState(): Promise<NavigationPreloadState>;\n    setHeaderValue(value: string): Promise<void>;\n}\n\ndeclare var NavigationPreloadManager: {\n    prototype: NavigationPreloadManager;\n    new(): NavigationPreloadManager;\n};\n\ninterface NavigatorConcurrentHardware {\n    readonly hardwareConcurrency: number;\n}\n\ninterface NavigatorID {\n    /** @deprecated */\n    readonly appCodeName: string;\n    /** @deprecated */\n    readonly appName: string;\n    /** @deprecated */\n    readonly appVersion: string;\n    /** @deprecated */\n    readonly platform: string;\n    /** @deprecated */\n    readonly product: string;\n    readonly userAgent: string;\n}\n\ninterface NavigatorLanguage {\n    readonly language: string;\n    readonly languages: ReadonlyArray<string>;\n}\n\n/** Available only in secure contexts. */\ninterface NavigatorLocks {\n    readonly locks: LockManager;\n}\n\ninterface NavigatorOnLine {\n    readonly onLine: boolean;\n}\n\n/** Available only in secure contexts. */\ninterface NavigatorStorage {\n    readonly storage: StorageManager;\n}\n\ninterface NotificationEventMap {\n    \"click\": Event;\n    \"close\": Event;\n    \"error\": Event;\n    \"show\": Event;\n}\n\n/** This Notifications API interface is used to configure and display desktop notifications to the user. */\ninterface Notification extends EventTarget {\n    readonly body: string;\n    readonly data: any;\n    readonly dir: NotificationDirection;\n    readonly icon: string;\n    readonly lang: string;\n    onclick: ((this: Notification, ev: Event) => any) | null;\n    onclose: ((this: Notification, ev: Event) => any) | null;\n    onerror: ((this: Notification, ev: Event) => any) | null;\n    onshow: ((this: Notification, ev: Event) => any) | null;\n    readonly tag: string;\n    readonly title: string;\n    close(): void;\n    addEventListener<K extends keyof NotificationEventMap>(type: K, listener: (this: Notification, ev: NotificationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof NotificationEventMap>(type: K, listener: (this: Notification, ev: NotificationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Notification: {\n    prototype: Notification;\n    new(title: string, options?: NotificationOptions): Notification;\n    readonly permission: NotificationPermission;\n};\n\n/** The parameter passed into the onnotificationclick handler, the NotificationEvent interface represents a notification click event that is dispatched on the ServiceWorkerGlobalScope of a ServiceWorker. */\ninterface NotificationEvent extends ExtendableEvent {\n    readonly action: string;\n    readonly notification: Notification;\n}\n\ndeclare var NotificationEvent: {\n    prototype: NotificationEvent;\n    new(type: string, eventInitDict: NotificationEventInit): NotificationEvent;\n};\n\ninterface OES_draw_buffers_indexed {\n    blendEquationSeparateiOES(buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum): void;\n    blendEquationiOES(buf: GLuint, mode: GLenum): void;\n    blendFuncSeparateiOES(buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void;\n    blendFunciOES(buf: GLuint, src: GLenum, dst: GLenum): void;\n    colorMaskiOES(buf: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean): void;\n    disableiOES(target: GLenum, index: GLuint): void;\n    enableiOES(target: GLenum, index: GLuint): void;\n}\n\n/** The OES_element_index_uint extension is part of the WebGL API and adds support for gl.UNSIGNED_INT types to WebGLRenderingContext.drawElements(). */\ninterface OES_element_index_uint {\n}\n\ninterface OES_fbo_render_mipmap {\n}\n\n/** The OES_standard_derivatives extension is part of the WebGL API and adds the GLSL derivative functions dFdx, dFdy, and fwidth. */\ninterface OES_standard_derivatives {\n    readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 0x8B8B;\n}\n\n/** The OES_texture_float extension is part of the WebGL API and exposes floating-point pixel types for textures. */\ninterface OES_texture_float {\n}\n\n/** The OES_texture_float_linear extension is part of the WebGL API and allows linear filtering with floating-point pixel types for textures. */\ninterface OES_texture_float_linear {\n}\n\n/** The OES_texture_half_float extension is part of the WebGL API and adds texture formats with 16- (aka half float) and 32-bit floating-point components. */\ninterface OES_texture_half_float {\n    readonly HALF_FLOAT_OES: 0x8D61;\n}\n\n/** The OES_texture_half_float_linear extension is part of the WebGL API and allows linear filtering with half floating-point pixel types for textures. */\ninterface OES_texture_half_float_linear {\n}\n\ninterface OES_vertex_array_object {\n    bindVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void;\n    createVertexArrayOES(): WebGLVertexArrayObjectOES | null;\n    deleteVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): void;\n    isVertexArrayOES(arrayObject: WebGLVertexArrayObjectOES | null): GLboolean;\n    readonly VERTEX_ARRAY_BINDING_OES: 0x85B5;\n}\n\ninterface OVR_multiview2 {\n    framebufferTextureMultiviewOVR(target: GLenum, attachment: GLenum, texture: WebGLTexture | null, level: GLint, baseViewIndex: GLint, numViews: GLsizei): void;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR: 0x9630;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR: 0x9632;\n    readonly MAX_VIEWS_OVR: 0x9631;\n    readonly FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: 0x9633;\n}\n\ninterface OffscreenCanvasEventMap {\n    \"contextlost\": Event;\n    \"contextrestored\": Event;\n}\n\ninterface OffscreenCanvas extends EventTarget {\n    /**\n     * These attributes return the dimensions of the OffscreenCanvas object's bitmap.\n     *\n     * They can be set, to replace the bitmap with a new, transparent black bitmap of the specified dimensions (effectively resizing it).\n     */\n    height: number;\n    oncontextlost: ((this: OffscreenCanvas, ev: Event) => any) | null;\n    oncontextrestored: ((this: OffscreenCanvas, ev: Event) => any) | null;\n    /**\n     * These attributes return the dimensions of the OffscreenCanvas object's bitmap.\n     *\n     * They can be set, to replace the bitmap with a new, transparent black bitmap of the specified dimensions (effectively resizing it).\n     */\n    width: number;\n    /**\n     * Returns a promise that will fulfill with a new Blob object representing a file containing the image in the OffscreenCanvas object.\n     *\n     * The argument, if provided, is a dictionary that controls the encoding options of the image file to be created. The type field specifies the file format and has a default value of \"image/png\"; that type is also used if the requested type isn't supported. If the image format supports variable quality (such as \"image/jpeg\"), then the quality field is a number in the range 0.0 to 1.0 inclusive indicating the desired quality level for the resulting image.\n     */\n    convertToBlob(options?: ImageEncodeOptions): Promise<Blob>;\n    /**\n     * Returns an object that exposes an API for drawing on the OffscreenCanvas object. contextId specifies the desired API: \"2d\", \"bitmaprenderer\", \"webgl\", or \"webgl2\". options is handled by that API.\n     *\n     * This specification defines the \"2d\" context below, which is similar but distinct from the \"2d\" context that is created from a canvas element. The WebGL specifications define the \"webgl\" and \"webgl2\" contexts. [WEBGL]\n     *\n     * Returns null if the canvas has already been initialized with another context type (e.g., trying to get a \"2d\" context after getting a \"webgl\" context).\n     */\n    getContext(contextId: \"2d\", options?: any): OffscreenCanvasRenderingContext2D | null;\n    getContext(contextId: \"bitmaprenderer\", options?: any): ImageBitmapRenderingContext | null;\n    getContext(contextId: \"webgl\", options?: any): WebGLRenderingContext | null;\n    getContext(contextId: \"webgl2\", options?: any): WebGL2RenderingContext | null;\n    getContext(contextId: OffscreenRenderingContextId, options?: any): OffscreenRenderingContext | null;\n    /** Returns a newly created ImageBitmap object with the image in the OffscreenCanvas object. The image in the OffscreenCanvas object is replaced with a new blank image. */\n    transferToImageBitmap(): ImageBitmap;\n    addEventListener<K extends keyof OffscreenCanvasEventMap>(type: K, listener: (this: OffscreenCanvas, ev: OffscreenCanvasEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof OffscreenCanvasEventMap>(type: K, listener: (this: OffscreenCanvas, ev: OffscreenCanvasEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var OffscreenCanvas: {\n    prototype: OffscreenCanvas;\n    new(width: number, height: number): OffscreenCanvas;\n};\n\ninterface OffscreenCanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform {\n    readonly canvas: OffscreenCanvas;\n    commit(): void;\n}\n\ndeclare var OffscreenCanvasRenderingContext2D: {\n    prototype: OffscreenCanvasRenderingContext2D;\n    new(): OffscreenCanvasRenderingContext2D;\n};\n\n/** This Canvas 2D API interface is used to declare a path that can then be used on a CanvasRenderingContext2D object. The path methods of the CanvasRenderingContext2D interface are also present on this interface, which gives you the convenience of being able to retain and replay your path whenever desired. */\ninterface Path2D extends CanvasPath {\n    /** Adds to the path the path given by the argument. */\n    addPath(path: Path2D, transform?: DOMMatrix2DInit): void;\n}\n\ndeclare var Path2D: {\n    prototype: Path2D;\n    new(path?: Path2D | string): Path2D;\n};\n\ninterface PerformanceEventMap {\n    \"resourcetimingbufferfull\": Event;\n}\n\n/** Provides access to performance-related information for the current page. It's part of the High Resolution Time API, but is enhanced by the Performance Timeline API, the Navigation Timing API, the User Timing API, and the Resource Timing API. */\ninterface Performance extends EventTarget {\n    onresourcetimingbufferfull: ((this: Performance, ev: Event) => any) | null;\n    readonly timeOrigin: DOMHighResTimeStamp;\n    clearMarks(markName?: string): void;\n    clearMeasures(measureName?: string): void;\n    clearResourceTimings(): void;\n    getEntries(): PerformanceEntryList;\n    getEntriesByName(name: string, type?: string): PerformanceEntryList;\n    getEntriesByType(type: string): PerformanceEntryList;\n    mark(markName: string, markOptions?: PerformanceMarkOptions): PerformanceMark;\n    measure(measureName: string, startOrMeasureOptions?: string | PerformanceMeasureOptions, endMark?: string): PerformanceMeasure;\n    now(): DOMHighResTimeStamp;\n    setResourceTimingBufferSize(maxSize: number): void;\n    toJSON(): any;\n    addEventListener<K extends keyof PerformanceEventMap>(type: K, listener: (this: Performance, ev: PerformanceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof PerformanceEventMap>(type: K, listener: (this: Performance, ev: PerformanceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Performance: {\n    prototype: Performance;\n    new(): Performance;\n};\n\n/** Encapsulates a single performance metric that is part of the performance timeline. A performance entry can be directly created by making a performance mark or measure (for example by calling the mark() method) at an explicit point in an application. Performance entries are also created in indirect ways such as loading a resource (such as an image). */\ninterface PerformanceEntry {\n    readonly duration: DOMHighResTimeStamp;\n    readonly entryType: string;\n    readonly name: string;\n    readonly startTime: DOMHighResTimeStamp;\n    toJSON(): any;\n}\n\ndeclare var PerformanceEntry: {\n    prototype: PerformanceEntry;\n    new(): PerformanceEntry;\n};\n\n/** PerformanceMark\\xA0is an abstract interface for PerformanceEntry objects with an entryType of \"mark\". Entries of this type are created by calling performance.mark() to add a named DOMHighResTimeStamp (the mark) to the browser's performance timeline. */\ninterface PerformanceMark extends PerformanceEntry {\n    readonly detail: any;\n}\n\ndeclare var PerformanceMark: {\n    prototype: PerformanceMark;\n    new(markName: string, markOptions?: PerformanceMarkOptions): PerformanceMark;\n};\n\n/** PerformanceMeasure is an abstract interface for PerformanceEntry objects with an entryType of \"measure\". Entries of this type are created by calling performance.measure() to add a named DOMHighResTimeStamp (the measure) between two marks to the browser's performance timeline. */\ninterface PerformanceMeasure extends PerformanceEntry {\n    readonly detail: any;\n}\n\ndeclare var PerformanceMeasure: {\n    prototype: PerformanceMeasure;\n    new(): PerformanceMeasure;\n};\n\ninterface PerformanceObserver {\n    disconnect(): void;\n    observe(options?: PerformanceObserverInit): void;\n    takeRecords(): PerformanceEntryList;\n}\n\ndeclare var PerformanceObserver: {\n    prototype: PerformanceObserver;\n    new(callback: PerformanceObserverCallback): PerformanceObserver;\n    readonly supportedEntryTypes: ReadonlyArray<string>;\n};\n\ninterface PerformanceObserverEntryList {\n    getEntries(): PerformanceEntryList;\n    getEntriesByName(name: string, type?: string): PerformanceEntryList;\n    getEntriesByType(type: string): PerformanceEntryList;\n}\n\ndeclare var PerformanceObserverEntryList: {\n    prototype: PerformanceObserverEntryList;\n    new(): PerformanceObserverEntryList;\n};\n\n/** Enables retrieval and analysis of detailed network timing data regarding the loading of an application's resources. An application can use the timing metrics to determine, for example, the length of time it takes to fetch a specific resource, such as an XMLHttpRequest, <SVG>, image, or script. */\ninterface PerformanceResourceTiming extends PerformanceEntry {\n    readonly connectEnd: DOMHighResTimeStamp;\n    readonly connectStart: DOMHighResTimeStamp;\n    readonly decodedBodySize: number;\n    readonly domainLookupEnd: DOMHighResTimeStamp;\n    readonly domainLookupStart: DOMHighResTimeStamp;\n    readonly encodedBodySize: number;\n    readonly fetchStart: DOMHighResTimeStamp;\n    readonly initiatorType: string;\n    readonly nextHopProtocol: string;\n    readonly redirectEnd: DOMHighResTimeStamp;\n    readonly redirectStart: DOMHighResTimeStamp;\n    readonly requestStart: DOMHighResTimeStamp;\n    readonly responseEnd: DOMHighResTimeStamp;\n    readonly responseStart: DOMHighResTimeStamp;\n    readonly secureConnectionStart: DOMHighResTimeStamp;\n    readonly serverTiming: ReadonlyArray<PerformanceServerTiming>;\n    readonly transferSize: number;\n    readonly workerStart: DOMHighResTimeStamp;\n    toJSON(): any;\n}\n\ndeclare var PerformanceResourceTiming: {\n    prototype: PerformanceResourceTiming;\n    new(): PerformanceResourceTiming;\n};\n\ninterface PerformanceServerTiming {\n    readonly description: string;\n    readonly duration: DOMHighResTimeStamp;\n    readonly name: string;\n    toJSON(): any;\n}\n\ndeclare var PerformanceServerTiming: {\n    prototype: PerformanceServerTiming;\n    new(): PerformanceServerTiming;\n};\n\ninterface PermissionStatusEventMap {\n    \"change\": Event;\n}\n\ninterface PermissionStatus extends EventTarget {\n    readonly name: string;\n    onchange: ((this: PermissionStatus, ev: Event) => any) | null;\n    readonly state: PermissionState;\n    addEventListener<K extends keyof PermissionStatusEventMap>(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof PermissionStatusEventMap>(type: K, listener: (this: PermissionStatus, ev: PermissionStatusEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var PermissionStatus: {\n    prototype: PermissionStatus;\n    new(): PermissionStatus;\n};\n\ninterface Permissions {\n    query(permissionDesc: PermissionDescriptor): Promise<PermissionStatus>;\n}\n\ndeclare var Permissions: {\n    prototype: Permissions;\n    new(): Permissions;\n};\n\n/** Events measuring progress of an underlying process, like an HTTP request (for an XMLHttpRequest, or the loading of the underlying resource of an <img>, <audio>, <video>, <style> or <link>). */\ninterface ProgressEvent<T extends EventTarget = EventTarget> extends Event {\n    readonly lengthComputable: boolean;\n    readonly loaded: number;\n    readonly target: T | null;\n    readonly total: number;\n}\n\ndeclare var ProgressEvent: {\n    prototype: ProgressEvent;\n    new(type: string, eventInitDict?: ProgressEventInit): ProgressEvent;\n};\n\ninterface PromiseRejectionEvent extends Event {\n    readonly promise: Promise<any>;\n    readonly reason: any;\n}\n\ndeclare var PromiseRejectionEvent: {\n    prototype: PromiseRejectionEvent;\n    new(type: string, eventInitDict: PromiseRejectionEventInit): PromiseRejectionEvent;\n};\n\n/**\n * This Push API interface represents a push message that has been received. This event is sent to the global scope of a ServiceWorker. It contains the information sent from an application server to a PushSubscription.\n * Available only in secure contexts.\n */\ninterface PushEvent extends ExtendableEvent {\n    readonly data: PushMessageData | null;\n}\n\ndeclare var PushEvent: {\n    prototype: PushEvent;\n    new(type: string, eventInitDict?: PushEventInit): PushEvent;\n};\n\n/**\n * This Push API interface provides a way to receive notifications from third-party servers as well as request URLs for push notifications.\n * Available only in secure contexts.\n */\ninterface PushManager {\n    getSubscription(): Promise<PushSubscription | null>;\n    permissionState(options?: PushSubscriptionOptionsInit): Promise<PermissionState>;\n    subscribe(options?: PushSubscriptionOptionsInit): Promise<PushSubscription>;\n}\n\ndeclare var PushManager: {\n    prototype: PushManager;\n    new(): PushManager;\n    readonly supportedContentEncodings: ReadonlyArray<string>;\n};\n\n/**\n * This Push API interface provides methods which let you retrieve the push data sent by a server in various formats.\n * Available only in secure contexts.\n */\ninterface PushMessageData {\n    arrayBuffer(): ArrayBuffer;\n    blob(): Blob;\n    json(): any;\n    text(): string;\n}\n\ndeclare var PushMessageData: {\n    prototype: PushMessageData;\n    new(): PushMessageData;\n};\n\n/**\n * This Push API interface provides a subcription's URL endpoint and allows unsubscription from a push service.\n * Available only in secure contexts.\n */\ninterface PushSubscription {\n    readonly endpoint: string;\n    readonly expirationTime: EpochTimeStamp | null;\n    readonly options: PushSubscriptionOptions;\n    getKey(name: PushEncryptionKeyName): ArrayBuffer | null;\n    toJSON(): PushSubscriptionJSON;\n    unsubscribe(): Promise<boolean>;\n}\n\ndeclare var PushSubscription: {\n    prototype: PushSubscription;\n    new(): PushSubscription;\n};\n\n/** Available only in secure contexts. */\ninterface PushSubscriptionOptions {\n    readonly applicationServerKey: ArrayBuffer | null;\n    readonly userVisibleOnly: boolean;\n}\n\ndeclare var PushSubscriptionOptions: {\n    prototype: PushSubscriptionOptions;\n    new(): PushSubscriptionOptions;\n};\n\ninterface RTCEncodedAudioFrame {\n    data: ArrayBuffer;\n    readonly timestamp: number;\n    getMetadata(): RTCEncodedAudioFrameMetadata;\n}\n\ndeclare var RTCEncodedAudioFrame: {\n    prototype: RTCEncodedAudioFrame;\n    new(): RTCEncodedAudioFrame;\n};\n\ninterface RTCEncodedVideoFrame {\n    data: ArrayBuffer;\n    readonly timestamp: number;\n    readonly type: RTCEncodedVideoFrameType;\n    getMetadata(): RTCEncodedVideoFrameMetadata;\n}\n\ndeclare var RTCEncodedVideoFrame: {\n    prototype: RTCEncodedVideoFrame;\n    new(): RTCEncodedVideoFrame;\n};\n\ninterface ReadableByteStreamController {\n    readonly byobRequest: ReadableStreamBYOBRequest | null;\n    readonly desiredSize: number | null;\n    close(): void;\n    enqueue(chunk: ArrayBufferView): void;\n    error(e?: any): void;\n}\n\ndeclare var ReadableByteStreamController: {\n    prototype: ReadableByteStreamController;\n    new(): ReadableByteStreamController;\n};\n\n/** This Streams API interface represents a readable stream of byte data. The Fetch API offers a concrete instance of a ReadableStream through the body property of a Response object. */\ninterface ReadableStream<R = any> {\n    readonly locked: boolean;\n    cancel(reason?: any): Promise<void>;\n    getReader(options: { mode: \"byob\" }): ReadableStreamBYOBReader;\n    getReader(): ReadableStreamDefaultReader<R>;\n    getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader<R>;\n    pipeThrough<T>(transform: ReadableWritablePair<T, R>, options?: StreamPipeOptions): ReadableStream<T>;\n    pipeTo(destination: WritableStream<R>, options?: StreamPipeOptions): Promise<void>;\n    tee(): [ReadableStream<R>, ReadableStream<R>];\n}\n\ndeclare var ReadableStream: {\n    prototype: ReadableStream;\n    new(underlyingSource: UnderlyingByteSource, strategy?: { highWaterMark?: number }): ReadableStream<Uint8Array>;\n    new<R = any>(underlyingSource: UnderlyingDefaultSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;\n    new<R = any>(underlyingSource?: UnderlyingSource<R>, strategy?: QueuingStrategy<R>): ReadableStream<R>;\n};\n\ninterface ReadableStreamBYOBReader extends ReadableStreamGenericReader {\n    read<T extends ArrayBufferView>(view: T): Promise<ReadableStreamReadResult<T>>;\n    releaseLock(): void;\n}\n\ndeclare var ReadableStreamBYOBReader: {\n    prototype: ReadableStreamBYOBReader;\n    new(stream: ReadableStream): ReadableStreamBYOBReader;\n};\n\ninterface ReadableStreamBYOBRequest {\n    readonly view: ArrayBufferView | null;\n    respond(bytesWritten: number): void;\n    respondWithNewView(view: ArrayBufferView): void;\n}\n\ndeclare var ReadableStreamBYOBRequest: {\n    prototype: ReadableStreamBYOBRequest;\n    new(): ReadableStreamBYOBRequest;\n};\n\ninterface ReadableStreamDefaultController<R = any> {\n    readonly desiredSize: number | null;\n    close(): void;\n    enqueue(chunk?: R): void;\n    error(e?: any): void;\n}\n\ndeclare var ReadableStreamDefaultController: {\n    prototype: ReadableStreamDefaultController;\n    new(): ReadableStreamDefaultController;\n};\n\ninterface ReadableStreamDefaultReader<R = any> extends ReadableStreamGenericReader {\n    read(): Promise<ReadableStreamReadResult<R>>;\n    releaseLock(): void;\n}\n\ndeclare var ReadableStreamDefaultReader: {\n    prototype: ReadableStreamDefaultReader;\n    new<R = any>(stream: ReadableStream<R>): ReadableStreamDefaultReader<R>;\n};\n\ninterface ReadableStreamGenericReader {\n    readonly closed: Promise<undefined>;\n    cancel(reason?: any): Promise<void>;\n}\n\n/** This Fetch API interface represents a resource request. */\ninterface Request extends Body {\n    /** Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. */\n    readonly cache: RequestCache;\n    /** Returns the credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. */\n    readonly credentials: RequestCredentials;\n    /** Returns the kind of resource requested by request, e.g., \"document\" or \"script\". */\n    readonly destination: RequestDestination;\n    /** Returns a Headers object consisting of the headers associated with request. Note that headers added in the network layer by the user agent will not be accounted for in this object, e.g., the \"Host\" header. */\n    readonly headers: Headers;\n    /** Returns request's subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. [SRI] */\n    readonly integrity: string;\n    /** Returns a boolean indicating whether or not request can outlive the global in which it was created. */\n    readonly keepalive: boolean;\n    /** Returns request's HTTP method, which is \"GET\" by default. */\n    readonly method: string;\n    /** Returns the mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. */\n    readonly mode: RequestMode;\n    /** Returns the redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. */\n    readonly redirect: RequestRedirect;\n    /** Returns the referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and \"about:client\" when defaulting to the global's default. This is used during fetching to determine the value of the \\`Referer\\` header of the request being made. */\n    readonly referrer: string;\n    /** Returns the referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. */\n    readonly referrerPolicy: ReferrerPolicy;\n    /** Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. */\n    readonly signal: AbortSignal;\n    /** Returns the URL of request as a string. */\n    readonly url: string;\n    clone(): Request;\n}\n\ndeclare var Request: {\n    prototype: Request;\n    new(input: RequestInfo | URL, init?: RequestInit): Request;\n};\n\n/** This Fetch API interface represents the response to a request. */\ninterface Response extends Body {\n    readonly headers: Headers;\n    readonly ok: boolean;\n    readonly redirected: boolean;\n    readonly status: number;\n    readonly statusText: string;\n    readonly type: ResponseType;\n    readonly url: string;\n    clone(): Response;\n}\n\ndeclare var Response: {\n    prototype: Response;\n    new(body?: BodyInit | null, init?: ResponseInit): Response;\n    error(): Response;\n    redirect(url: string | URL, status?: number): Response;\n};\n\n/** Inherits from Event, and represents the event object of an event sent on a document or worker when its content security policy is violated. */\ninterface SecurityPolicyViolationEvent extends Event {\n    readonly blockedURI: string;\n    readonly columnNumber: number;\n    readonly disposition: SecurityPolicyViolationEventDisposition;\n    readonly documentURI: string;\n    readonly effectiveDirective: string;\n    readonly lineNumber: number;\n    readonly originalPolicy: string;\n    readonly referrer: string;\n    readonly sample: string;\n    readonly sourceFile: string;\n    readonly statusCode: number;\n    readonly violatedDirective: string;\n}\n\ndeclare var SecurityPolicyViolationEvent: {\n    prototype: SecurityPolicyViolationEvent;\n    new(type: string, eventInitDict?: SecurityPolicyViolationEventInit): SecurityPolicyViolationEvent;\n};\n\ninterface ServiceWorkerEventMap extends AbstractWorkerEventMap {\n    \"statechange\": Event;\n}\n\n/**\n * This ServiceWorker API interface provides a reference to a service worker. Multiple browsing contexts (e.g. pages, workers, etc.) can be associated with the same service worker, each through a unique ServiceWorker object.\n * Available only in secure contexts.\n */\ninterface ServiceWorker extends EventTarget, AbstractWorker {\n    onstatechange: ((this: ServiceWorker, ev: Event) => any) | null;\n    readonly scriptURL: string;\n    readonly state: ServiceWorkerState;\n    postMessage(message: any, transfer: Transferable[]): void;\n    postMessage(message: any, options?: StructuredSerializeOptions): void;\n    addEventListener<K extends keyof ServiceWorkerEventMap>(type: K, listener: (this: ServiceWorker, ev: ServiceWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof ServiceWorkerEventMap>(type: K, listener: (this: ServiceWorker, ev: ServiceWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var ServiceWorker: {\n    prototype: ServiceWorker;\n    new(): ServiceWorker;\n};\n\ninterface ServiceWorkerContainerEventMap {\n    \"controllerchange\": Event;\n    \"message\": MessageEvent;\n    \"messageerror\": MessageEvent;\n}\n\n/**\n * The\\xA0ServiceWorkerContainer\\xA0interface of the\\xA0ServiceWorker API\\xA0provides an object representing the service worker as an overall unit in the network ecosystem, including facilities to register, unregister and update service workers, and access the state of service workers and their registrations.\n * Available only in secure contexts.\n */\ninterface ServiceWorkerContainer extends EventTarget {\n    readonly controller: ServiceWorker | null;\n    oncontrollerchange: ((this: ServiceWorkerContainer, ev: Event) => any) | null;\n    onmessage: ((this: ServiceWorkerContainer, ev: MessageEvent) => any) | null;\n    onmessageerror: ((this: ServiceWorkerContainer, ev: MessageEvent) => any) | null;\n    readonly ready: Promise<ServiceWorkerRegistration>;\n    getRegistration(clientURL?: string | URL): Promise<ServiceWorkerRegistration | undefined>;\n    getRegistrations(): Promise<ReadonlyArray<ServiceWorkerRegistration>>;\n    register(scriptURL: string | URL, options?: RegistrationOptions): Promise<ServiceWorkerRegistration>;\n    startMessages(): void;\n    addEventListener<K extends keyof ServiceWorkerContainerEventMap>(type: K, listener: (this: ServiceWorkerContainer, ev: ServiceWorkerContainerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof ServiceWorkerContainerEventMap>(type: K, listener: (this: ServiceWorkerContainer, ev: ServiceWorkerContainerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var ServiceWorkerContainer: {\n    prototype: ServiceWorkerContainer;\n    new(): ServiceWorkerContainer;\n};\n\ninterface ServiceWorkerGlobalScopeEventMap extends WorkerGlobalScopeEventMap {\n    \"activate\": ExtendableEvent;\n    \"fetch\": FetchEvent;\n    \"install\": ExtendableEvent;\n    \"message\": ExtendableMessageEvent;\n    \"messageerror\": MessageEvent;\n    \"notificationclick\": NotificationEvent;\n    \"notificationclose\": NotificationEvent;\n    \"push\": PushEvent;\n    \"pushsubscriptionchange\": Event;\n}\n\n/** This ServiceWorker API interface represents the global execution context of a service worker. */\ninterface ServiceWorkerGlobalScope extends WorkerGlobalScope {\n    readonly clients: Clients;\n    onactivate: ((this: ServiceWorkerGlobalScope, ev: ExtendableEvent) => any) | null;\n    onfetch: ((this: ServiceWorkerGlobalScope, ev: FetchEvent) => any) | null;\n    oninstall: ((this: ServiceWorkerGlobalScope, ev: ExtendableEvent) => any) | null;\n    onmessage: ((this: ServiceWorkerGlobalScope, ev: ExtendableMessageEvent) => any) | null;\n    onmessageerror: ((this: ServiceWorkerGlobalScope, ev: MessageEvent) => any) | null;\n    onnotificationclick: ((this: ServiceWorkerGlobalScope, ev: NotificationEvent) => any) | null;\n    onnotificationclose: ((this: ServiceWorkerGlobalScope, ev: NotificationEvent) => any) | null;\n    onpush: ((this: ServiceWorkerGlobalScope, ev: PushEvent) => any) | null;\n    onpushsubscriptionchange: ((this: ServiceWorkerGlobalScope, ev: Event) => any) | null;\n    readonly registration: ServiceWorkerRegistration;\n    readonly serviceWorker: ServiceWorker;\n    skipWaiting(): Promise<void>;\n    addEventListener<K extends keyof ServiceWorkerGlobalScopeEventMap>(type: K, listener: (this: ServiceWorkerGlobalScope, ev: ServiceWorkerGlobalScopeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof ServiceWorkerGlobalScopeEventMap>(type: K, listener: (this: ServiceWorkerGlobalScope, ev: ServiceWorkerGlobalScopeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var ServiceWorkerGlobalScope: {\n    prototype: ServiceWorkerGlobalScope;\n    new(): ServiceWorkerGlobalScope;\n};\n\ninterface ServiceWorkerRegistrationEventMap {\n    \"updatefound\": Event;\n}\n\n/**\n * This ServiceWorker API interface represents the service worker registration. You register a service worker to control one or more pages that share the same origin.\n * Available only in secure contexts.\n */\ninterface ServiceWorkerRegistration extends EventTarget {\n    readonly active: ServiceWorker | null;\n    readonly installing: ServiceWorker | null;\n    readonly navigationPreload: NavigationPreloadManager;\n    onupdatefound: ((this: ServiceWorkerRegistration, ev: Event) => any) | null;\n    readonly pushManager: PushManager;\n    readonly scope: string;\n    readonly updateViaCache: ServiceWorkerUpdateViaCache;\n    readonly waiting: ServiceWorker | null;\n    getNotifications(filter?: GetNotificationOptions): Promise<Notification[]>;\n    showNotification(title: string, options?: NotificationOptions): Promise<void>;\n    unregister(): Promise<boolean>;\n    update(): Promise<void>;\n    addEventListener<K extends keyof ServiceWorkerRegistrationEventMap>(type: K, listener: (this: ServiceWorkerRegistration, ev: ServiceWorkerRegistrationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof ServiceWorkerRegistrationEventMap>(type: K, listener: (this: ServiceWorkerRegistration, ev: ServiceWorkerRegistrationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var ServiceWorkerRegistration: {\n    prototype: ServiceWorkerRegistration;\n    new(): ServiceWorkerRegistration;\n};\n\ninterface SharedWorkerGlobalScopeEventMap extends WorkerGlobalScopeEventMap {\n    \"connect\": MessageEvent;\n}\n\ninterface SharedWorkerGlobalScope extends WorkerGlobalScope {\n    /** Returns sharedWorkerGlobal's name, i.e. the value given to the SharedWorker constructor. Multiple SharedWorker objects can correspond to the same shared worker (and SharedWorkerGlobalScope), by reusing the same name. */\n    readonly name: string;\n    onconnect: ((this: SharedWorkerGlobalScope, ev: MessageEvent) => any) | null;\n    /** Aborts sharedWorkerGlobal. */\n    close(): void;\n    addEventListener<K extends keyof SharedWorkerGlobalScopeEventMap>(type: K, listener: (this: SharedWorkerGlobalScope, ev: SharedWorkerGlobalScopeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof SharedWorkerGlobalScopeEventMap>(type: K, listener: (this: SharedWorkerGlobalScope, ev: SharedWorkerGlobalScopeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var SharedWorkerGlobalScope: {\n    prototype: SharedWorkerGlobalScope;\n    new(): SharedWorkerGlobalScope;\n};\n\n/** Available only in secure contexts. */\ninterface StorageManager {\n    estimate(): Promise<StorageEstimate>;\n    getDirectory(): Promise<FileSystemDirectoryHandle>;\n    persisted(): Promise<boolean>;\n}\n\ndeclare var StorageManager: {\n    prototype: StorageManager;\n    new(): StorageManager;\n};\n\n/**\n * This Web Crypto API interface provides a number of low-level cryptographic functions. It is accessed via the Crypto.subtle properties available in a window context (via Window.crypto).\n * Available only in secure contexts.\n */\ninterface SubtleCrypto {\n    decrypt(algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;\n    deriveBits(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, length: number): Promise<ArrayBuffer>;\n    deriveKey(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, derivedKeyType: AlgorithmIdentifier | AesDerivedKeyParams | HmacImportParams | HkdfParams | Pbkdf2Params, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;\n    digest(algorithm: AlgorithmIdentifier, data: BufferSource): Promise<ArrayBuffer>;\n    encrypt(algorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;\n    exportKey(format: \"jwk\", key: CryptoKey): Promise<JsonWebKey>;\n    exportKey(format: Exclude<KeyFormat, \"jwk\">, key: CryptoKey): Promise<ArrayBuffer>;\n    generateKey(algorithm: RsaHashedKeyGenParams | EcKeyGenParams, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKeyPair>;\n    generateKey(algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;\n    generateKey(algorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair | CryptoKey>;\n    importKey(format: \"jwk\", keyData: JsonWebKey, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;\n    importKey(format: Exclude<KeyFormat, \"jwk\">, keyData: BufferSource, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;\n    sign(algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer>;\n    unwrapKey(format: KeyFormat, wrappedKey: BufferSource, unwrappingKey: CryptoKey, unwrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, unwrappedKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;\n    verify(algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams, key: CryptoKey, signature: BufferSource, data: BufferSource): Promise<boolean>;\n    wrapKey(format: KeyFormat, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams): Promise<ArrayBuffer>;\n}\n\ndeclare var SubtleCrypto: {\n    prototype: SubtleCrypto;\n    new(): SubtleCrypto;\n};\n\n/** A decoder for a specific method, that is a specific character encoding, like utf-8, iso-8859-2, koi8, cp1261, gbk, etc.\\xA0A decoder takes a stream of bytes as input and emits a stream of code points. For a more scalable, non-native library, see StringView \\u2013 a C-like representation of strings based on typed arrays. */\ninterface TextDecoder extends TextDecoderCommon {\n    /**\n     * Returns the result of running encoding's decoder. The method can be invoked zero or more times with options's stream set to true, and then once without options's stream (or set to false), to process a fragmented input. If the invocation without options's stream (or set to false) has no input, it's clearest to omit both arguments.\n     *\n     * \\`\\`\\`\n     * var string = \"\", decoder = new TextDecoder(encoding), buffer;\n     * while(buffer = next_chunk()) {\n     *   string += decoder.decode(buffer, {stream:true});\n     * }\n     * string += decoder.decode(); // end-of-queue\n     * \\`\\`\\`\n     *\n     * If the error mode is \"fatal\" and encoding's decoder returns error, throws a TypeError.\n     */\n    decode(input?: BufferSource, options?: TextDecodeOptions): string;\n}\n\ndeclare var TextDecoder: {\n    prototype: TextDecoder;\n    new(label?: string, options?: TextDecoderOptions): TextDecoder;\n};\n\ninterface TextDecoderCommon {\n    /** Returns encoding's name, lowercased. */\n    readonly encoding: string;\n    /** Returns true if error mode is \"fatal\", otherwise false. */\n    readonly fatal: boolean;\n    /** Returns the value of ignore BOM. */\n    readonly ignoreBOM: boolean;\n}\n\ninterface TextDecoderStream extends GenericTransformStream, TextDecoderCommon {\n    readonly readable: ReadableStream<string>;\n    readonly writable: WritableStream<BufferSource>;\n}\n\ndeclare var TextDecoderStream: {\n    prototype: TextDecoderStream;\n    new(label?: string, options?: TextDecoderOptions): TextDecoderStream;\n};\n\n/** TextEncoder takes a stream of code points as input and emits a stream of bytes. For a more scalable, non-native library, see StringView \\u2013 a C-like representation of strings based on typed arrays. */\ninterface TextEncoder extends TextEncoderCommon {\n    /** Returns the result of running UTF-8's encoder. */\n    encode(input?: string): Uint8Array;\n    /** Runs the UTF-8 encoder on source, stores the result of that operation into destination, and returns the progress made as an object wherein read is the number of converted code units of source and written is the number of bytes modified in destination. */\n    encodeInto(source: string, destination: Uint8Array): TextEncoderEncodeIntoResult;\n}\n\ndeclare var TextEncoder: {\n    prototype: TextEncoder;\n    new(): TextEncoder;\n};\n\ninterface TextEncoderCommon {\n    /** Returns \"utf-8\". */\n    readonly encoding: string;\n}\n\ninterface TextEncoderStream extends GenericTransformStream, TextEncoderCommon {\n    readonly readable: ReadableStream<Uint8Array>;\n    readonly writable: WritableStream<string>;\n}\n\ndeclare var TextEncoderStream: {\n    prototype: TextEncoderStream;\n    new(): TextEncoderStream;\n};\n\n/** The dimensions of a piece of text in the canvas, as created by the CanvasRenderingContext2D.measureText() method. */\ninterface TextMetrics {\n    /** Returns the measurement described below. */\n    readonly actualBoundingBoxAscent: number;\n    /** Returns the measurement described below. */\n    readonly actualBoundingBoxDescent: number;\n    /** Returns the measurement described below. */\n    readonly actualBoundingBoxLeft: number;\n    /** Returns the measurement described below. */\n    readonly actualBoundingBoxRight: number;\n    /** Returns the measurement described below. */\n    readonly fontBoundingBoxAscent: number;\n    /** Returns the measurement described below. */\n    readonly fontBoundingBoxDescent: number;\n    /** Returns the measurement described below. */\n    readonly width: number;\n}\n\ndeclare var TextMetrics: {\n    prototype: TextMetrics;\n    new(): TextMetrics;\n};\n\ninterface TransformStream<I = any, O = any> {\n    readonly readable: ReadableStream<O>;\n    readonly writable: WritableStream<I>;\n}\n\ndeclare var TransformStream: {\n    prototype: TransformStream;\n    new<I = any, O = any>(transformer?: Transformer<I, O>, writableStrategy?: QueuingStrategy<I>, readableStrategy?: QueuingStrategy<O>): TransformStream<I, O>;\n};\n\ninterface TransformStreamDefaultController<O = any> {\n    readonly desiredSize: number | null;\n    enqueue(chunk?: O): void;\n    error(reason?: any): void;\n    terminate(): void;\n}\n\ndeclare var TransformStreamDefaultController: {\n    prototype: TransformStreamDefaultController;\n    new(): TransformStreamDefaultController;\n};\n\n/** The URL\\xA0interface represents an object providing static methods used for creating object URLs. */\ninterface URL {\n    hash: string;\n    host: string;\n    hostname: string;\n    href: string;\n    toString(): string;\n    readonly origin: string;\n    password: string;\n    pathname: string;\n    port: string;\n    protocol: string;\n    search: string;\n    readonly searchParams: URLSearchParams;\n    username: string;\n    toJSON(): string;\n}\n\ndeclare var URL: {\n    prototype: URL;\n    new(url: string | URL, base?: string | URL): URL;\n    createObjectURL(obj: Blob): string;\n    revokeObjectURL(url: string): void;\n};\n\ninterface URLSearchParams {\n    /** Appends a specified key/value pair as a new search parameter. */\n    append(name: string, value: string): void;\n    /** Deletes the given search parameter, and its associated value, from the list of all search parameters. */\n    delete(name: string): void;\n    /** Returns the first value associated to the given search parameter. */\n    get(name: string): string | null;\n    /** Returns all the values association with a given search parameter. */\n    getAll(name: string): string[];\n    /** Returns a Boolean indicating if such a search parameter exists. */\n    has(name: string): boolean;\n    /** Sets the value associated to a given search parameter to the given value. If there were several values, delete the others. */\n    set(name: string, value: string): void;\n    sort(): void;\n    /** Returns a string containing a query string suitable for use in a URL. Does not include the question mark. */\n    toString(): string;\n    forEach(callbackfn: (value: string, key: string, parent: URLSearchParams) => void, thisArg?: any): void;\n}\n\ndeclare var URLSearchParams: {\n    prototype: URLSearchParams;\n    new(init?: string[][] | Record<string, string> | string | URLSearchParams): URLSearchParams;\n    toString(): string;\n};\n\ninterface VideoColorSpace {\n    readonly fullRange: boolean | null;\n    readonly matrix: VideoMatrixCoefficients | null;\n    readonly primaries: VideoColorPrimaries | null;\n    readonly transfer: VideoTransferCharacteristics | null;\n    toJSON(): VideoColorSpaceInit;\n}\n\ndeclare var VideoColorSpace: {\n    prototype: VideoColorSpace;\n    new(init?: VideoColorSpaceInit): VideoColorSpace;\n};\n\ninterface WEBGL_color_buffer_float {\n    readonly RGBA32F_EXT: 0x8814;\n    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211;\n    readonly UNSIGNED_NORMALIZED_EXT: 0x8C17;\n}\n\ninterface WEBGL_compressed_texture_astc {\n    getSupportedProfiles(): string[];\n    readonly COMPRESSED_RGBA_ASTC_4x4_KHR: 0x93B0;\n    readonly COMPRESSED_RGBA_ASTC_5x4_KHR: 0x93B1;\n    readonly COMPRESSED_RGBA_ASTC_5x5_KHR: 0x93B2;\n    readonly COMPRESSED_RGBA_ASTC_6x5_KHR: 0x93B3;\n    readonly COMPRESSED_RGBA_ASTC_6x6_KHR: 0x93B4;\n    readonly COMPRESSED_RGBA_ASTC_8x5_KHR: 0x93B5;\n    readonly COMPRESSED_RGBA_ASTC_8x6_KHR: 0x93B6;\n    readonly COMPRESSED_RGBA_ASTC_8x8_KHR: 0x93B7;\n    readonly COMPRESSED_RGBA_ASTC_10x5_KHR: 0x93B8;\n    readonly COMPRESSED_RGBA_ASTC_10x6_KHR: 0x93B9;\n    readonly COMPRESSED_RGBA_ASTC_10x8_KHR: 0x93BA;\n    readonly COMPRESSED_RGBA_ASTC_10x10_KHR: 0x93BB;\n    readonly COMPRESSED_RGBA_ASTC_12x10_KHR: 0x93BC;\n    readonly COMPRESSED_RGBA_ASTC_12x12_KHR: 0x93BD;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR: 0x93D0;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR: 0x93D1;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR: 0x93D2;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR: 0x93D3;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR: 0x93D4;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR: 0x93D5;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR: 0x93D6;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR: 0x93D7;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR: 0x93D8;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR: 0x93D9;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR: 0x93DA;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR: 0x93DB;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR: 0x93DC;\n    readonly COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR: 0x93DD;\n}\n\ninterface WEBGL_compressed_texture_etc {\n    readonly COMPRESSED_R11_EAC: 0x9270;\n    readonly COMPRESSED_SIGNED_R11_EAC: 0x9271;\n    readonly COMPRESSED_RG11_EAC: 0x9272;\n    readonly COMPRESSED_SIGNED_RG11_EAC: 0x9273;\n    readonly COMPRESSED_RGB8_ETC2: 0x9274;\n    readonly COMPRESSED_SRGB8_ETC2: 0x9275;\n    readonly COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9276;\n    readonly COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9277;\n    readonly COMPRESSED_RGBA8_ETC2_EAC: 0x9278;\n    readonly COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9279;\n}\n\ninterface WEBGL_compressed_texture_etc1 {\n    readonly COMPRESSED_RGB_ETC1_WEBGL: 0x8D64;\n}\n\n/** The WEBGL_compressed_texture_s3tc extension is part of the WebGL API and exposes four S3TC compressed texture formats. */\ninterface WEBGL_compressed_texture_s3tc {\n    readonly COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83F0;\n    readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83F1;\n    readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83F2;\n    readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83F3;\n}\n\ninterface WEBGL_compressed_texture_s3tc_srgb {\n    readonly COMPRESSED_SRGB_S3TC_DXT1_EXT: 0x8C4C;\n    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 0x8C4D;\n    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 0x8C4E;\n    readonly COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 0x8C4F;\n}\n\n/** The WEBGL_debug_renderer_info extension is part of the WebGL API and exposes two constants with information about the graphics driver for debugging purposes. */\ninterface WEBGL_debug_renderer_info {\n    readonly UNMASKED_VENDOR_WEBGL: 0x9245;\n    readonly UNMASKED_RENDERER_WEBGL: 0x9246;\n}\n\ninterface WEBGL_debug_shaders {\n    getTranslatedShaderSource(shader: WebGLShader): string;\n}\n\n/** The WEBGL_depth_texture extension is part of the WebGL API and defines 2D depth and depth-stencil textures. */\ninterface WEBGL_depth_texture {\n    readonly UNSIGNED_INT_24_8_WEBGL: 0x84FA;\n}\n\ninterface WEBGL_draw_buffers {\n    drawBuffersWEBGL(buffers: GLenum[]): void;\n    readonly COLOR_ATTACHMENT0_WEBGL: 0x8CE0;\n    readonly COLOR_ATTACHMENT1_WEBGL: 0x8CE1;\n    readonly COLOR_ATTACHMENT2_WEBGL: 0x8CE2;\n    readonly COLOR_ATTACHMENT3_WEBGL: 0x8CE3;\n    readonly COLOR_ATTACHMENT4_WEBGL: 0x8CE4;\n    readonly COLOR_ATTACHMENT5_WEBGL: 0x8CE5;\n    readonly COLOR_ATTACHMENT6_WEBGL: 0x8CE6;\n    readonly COLOR_ATTACHMENT7_WEBGL: 0x8CE7;\n    readonly COLOR_ATTACHMENT8_WEBGL: 0x8CE8;\n    readonly COLOR_ATTACHMENT9_WEBGL: 0x8CE9;\n    readonly COLOR_ATTACHMENT10_WEBGL: 0x8CEA;\n    readonly COLOR_ATTACHMENT11_WEBGL: 0x8CEB;\n    readonly COLOR_ATTACHMENT12_WEBGL: 0x8CEC;\n    readonly COLOR_ATTACHMENT13_WEBGL: 0x8CED;\n    readonly COLOR_ATTACHMENT14_WEBGL: 0x8CEE;\n    readonly COLOR_ATTACHMENT15_WEBGL: 0x8CEF;\n    readonly DRAW_BUFFER0_WEBGL: 0x8825;\n    readonly DRAW_BUFFER1_WEBGL: 0x8826;\n    readonly DRAW_BUFFER2_WEBGL: 0x8827;\n    readonly DRAW_BUFFER3_WEBGL: 0x8828;\n    readonly DRAW_BUFFER4_WEBGL: 0x8829;\n    readonly DRAW_BUFFER5_WEBGL: 0x882A;\n    readonly DRAW_BUFFER6_WEBGL: 0x882B;\n    readonly DRAW_BUFFER7_WEBGL: 0x882C;\n    readonly DRAW_BUFFER8_WEBGL: 0x882D;\n    readonly DRAW_BUFFER9_WEBGL: 0x882E;\n    readonly DRAW_BUFFER10_WEBGL: 0x882F;\n    readonly DRAW_BUFFER11_WEBGL: 0x8830;\n    readonly DRAW_BUFFER12_WEBGL: 0x8831;\n    readonly DRAW_BUFFER13_WEBGL: 0x8832;\n    readonly DRAW_BUFFER14_WEBGL: 0x8833;\n    readonly DRAW_BUFFER15_WEBGL: 0x8834;\n    readonly MAX_COLOR_ATTACHMENTS_WEBGL: 0x8CDF;\n    readonly MAX_DRAW_BUFFERS_WEBGL: 0x8824;\n}\n\ninterface WEBGL_lose_context {\n    loseContext(): void;\n    restoreContext(): void;\n}\n\ninterface WEBGL_multi_draw {\n    multiDrawArraysInstancedWEBGL(mode: GLenum, firstsList: Int32Array | GLint[], firstsOffset: GLuint, countsList: Int32Array | GLsizei[], countsOffset: GLuint, instanceCountsList: Int32Array | GLsizei[], instanceCountsOffset: GLuint, drawcount: GLsizei): void;\n    multiDrawArraysWEBGL(mode: GLenum, firstsList: Int32Array | GLint[], firstsOffset: GLuint, countsList: Int32Array | GLsizei[], countsOffset: GLuint, drawcount: GLsizei): void;\n    multiDrawElementsInstancedWEBGL(mode: GLenum, countsList: Int32Array | GLsizei[], countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | GLsizei[], offsetsOffset: GLuint, instanceCountsList: Int32Array | GLsizei[], instanceCountsOffset: GLuint, drawcount: GLsizei): void;\n    multiDrawElementsWEBGL(mode: GLenum, countsList: Int32Array | GLsizei[], countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | GLsizei[], offsetsOffset: GLuint, drawcount: GLsizei): void;\n}\n\ninterface WebGL2RenderingContext extends WebGL2RenderingContextBase, WebGL2RenderingContextOverloads, WebGLRenderingContextBase {\n}\n\ndeclare var WebGL2RenderingContext: {\n    prototype: WebGL2RenderingContext;\n    new(): WebGL2RenderingContext;\n    readonly READ_BUFFER: 0x0C02;\n    readonly UNPACK_ROW_LENGTH: 0x0CF2;\n    readonly UNPACK_SKIP_ROWS: 0x0CF3;\n    readonly UNPACK_SKIP_PIXELS: 0x0CF4;\n    readonly PACK_ROW_LENGTH: 0x0D02;\n    readonly PACK_SKIP_ROWS: 0x0D03;\n    readonly PACK_SKIP_PIXELS: 0x0D04;\n    readonly COLOR: 0x1800;\n    readonly DEPTH: 0x1801;\n    readonly STENCIL: 0x1802;\n    readonly RED: 0x1903;\n    readonly RGB8: 0x8051;\n    readonly RGBA8: 0x8058;\n    readonly RGB10_A2: 0x8059;\n    readonly TEXTURE_BINDING_3D: 0x806A;\n    readonly UNPACK_SKIP_IMAGES: 0x806D;\n    readonly UNPACK_IMAGE_HEIGHT: 0x806E;\n    readonly TEXTURE_3D: 0x806F;\n    readonly TEXTURE_WRAP_R: 0x8072;\n    readonly MAX_3D_TEXTURE_SIZE: 0x8073;\n    readonly UNSIGNED_INT_2_10_10_10_REV: 0x8368;\n    readonly MAX_ELEMENTS_VERTICES: 0x80E8;\n    readonly MAX_ELEMENTS_INDICES: 0x80E9;\n    readonly TEXTURE_MIN_LOD: 0x813A;\n    readonly TEXTURE_MAX_LOD: 0x813B;\n    readonly TEXTURE_BASE_LEVEL: 0x813C;\n    readonly TEXTURE_MAX_LEVEL: 0x813D;\n    readonly MIN: 0x8007;\n    readonly MAX: 0x8008;\n    readonly DEPTH_COMPONENT24: 0x81A6;\n    readonly MAX_TEXTURE_LOD_BIAS: 0x84FD;\n    readonly TEXTURE_COMPARE_MODE: 0x884C;\n    readonly TEXTURE_COMPARE_FUNC: 0x884D;\n    readonly CURRENT_QUERY: 0x8865;\n    readonly QUERY_RESULT: 0x8866;\n    readonly QUERY_RESULT_AVAILABLE: 0x8867;\n    readonly STREAM_READ: 0x88E1;\n    readonly STREAM_COPY: 0x88E2;\n    readonly STATIC_READ: 0x88E5;\n    readonly STATIC_COPY: 0x88E6;\n    readonly DYNAMIC_READ: 0x88E9;\n    readonly DYNAMIC_COPY: 0x88EA;\n    readonly MAX_DRAW_BUFFERS: 0x8824;\n    readonly DRAW_BUFFER0: 0x8825;\n    readonly DRAW_BUFFER1: 0x8826;\n    readonly DRAW_BUFFER2: 0x8827;\n    readonly DRAW_BUFFER3: 0x8828;\n    readonly DRAW_BUFFER4: 0x8829;\n    readonly DRAW_BUFFER5: 0x882A;\n    readonly DRAW_BUFFER6: 0x882B;\n    readonly DRAW_BUFFER7: 0x882C;\n    readonly DRAW_BUFFER8: 0x882D;\n    readonly DRAW_BUFFER9: 0x882E;\n    readonly DRAW_BUFFER10: 0x882F;\n    readonly DRAW_BUFFER11: 0x8830;\n    readonly DRAW_BUFFER12: 0x8831;\n    readonly DRAW_BUFFER13: 0x8832;\n    readonly DRAW_BUFFER14: 0x8833;\n    readonly DRAW_BUFFER15: 0x8834;\n    readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8B49;\n    readonly MAX_VERTEX_UNIFORM_COMPONENTS: 0x8B4A;\n    readonly SAMPLER_3D: 0x8B5F;\n    readonly SAMPLER_2D_SHADOW: 0x8B62;\n    readonly FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8B8B;\n    readonly PIXEL_PACK_BUFFER: 0x88EB;\n    readonly PIXEL_UNPACK_BUFFER: 0x88EC;\n    readonly PIXEL_PACK_BUFFER_BINDING: 0x88ED;\n    readonly PIXEL_UNPACK_BUFFER_BINDING: 0x88EF;\n    readonly FLOAT_MAT2x3: 0x8B65;\n    readonly FLOAT_MAT2x4: 0x8B66;\n    readonly FLOAT_MAT3x2: 0x8B67;\n    readonly FLOAT_MAT3x4: 0x8B68;\n    readonly FLOAT_MAT4x2: 0x8B69;\n    readonly FLOAT_MAT4x3: 0x8B6A;\n    readonly SRGB: 0x8C40;\n    readonly SRGB8: 0x8C41;\n    readonly SRGB8_ALPHA8: 0x8C43;\n    readonly COMPARE_REF_TO_TEXTURE: 0x884E;\n    readonly RGBA32F: 0x8814;\n    readonly RGB32F: 0x8815;\n    readonly RGBA16F: 0x881A;\n    readonly RGB16F: 0x881B;\n    readonly VERTEX_ATTRIB_ARRAY_INTEGER: 0x88FD;\n    readonly MAX_ARRAY_TEXTURE_LAYERS: 0x88FF;\n    readonly MIN_PROGRAM_TEXEL_OFFSET: 0x8904;\n    readonly MAX_PROGRAM_TEXEL_OFFSET: 0x8905;\n    readonly MAX_VARYING_COMPONENTS: 0x8B4B;\n    readonly TEXTURE_2D_ARRAY: 0x8C1A;\n    readonly TEXTURE_BINDING_2D_ARRAY: 0x8C1D;\n    readonly R11F_G11F_B10F: 0x8C3A;\n    readonly UNSIGNED_INT_10F_11F_11F_REV: 0x8C3B;\n    readonly RGB9_E5: 0x8C3D;\n    readonly UNSIGNED_INT_5_9_9_9_REV: 0x8C3E;\n    readonly TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8C7F;\n    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8C80;\n    readonly TRANSFORM_FEEDBACK_VARYINGS: 0x8C83;\n    readonly TRANSFORM_FEEDBACK_BUFFER_START: 0x8C84;\n    readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8C85;\n    readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8C88;\n    readonly RASTERIZER_DISCARD: 0x8C89;\n    readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8C8A;\n    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8C8B;\n    readonly INTERLEAVED_ATTRIBS: 0x8C8C;\n    readonly SEPARATE_ATTRIBS: 0x8C8D;\n    readonly TRANSFORM_FEEDBACK_BUFFER: 0x8C8E;\n    readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8C8F;\n    readonly RGBA32UI: 0x8D70;\n    readonly RGB32UI: 0x8D71;\n    readonly RGBA16UI: 0x8D76;\n    readonly RGB16UI: 0x8D77;\n    readonly RGBA8UI: 0x8D7C;\n    readonly RGB8UI: 0x8D7D;\n    readonly RGBA32I: 0x8D82;\n    readonly RGB32I: 0x8D83;\n    readonly RGBA16I: 0x8D88;\n    readonly RGB16I: 0x8D89;\n    readonly RGBA8I: 0x8D8E;\n    readonly RGB8I: 0x8D8F;\n    readonly RED_INTEGER: 0x8D94;\n    readonly RGB_INTEGER: 0x8D98;\n    readonly RGBA_INTEGER: 0x8D99;\n    readonly SAMPLER_2D_ARRAY: 0x8DC1;\n    readonly SAMPLER_2D_ARRAY_SHADOW: 0x8DC4;\n    readonly SAMPLER_CUBE_SHADOW: 0x8DC5;\n    readonly UNSIGNED_INT_VEC2: 0x8DC6;\n    readonly UNSIGNED_INT_VEC3: 0x8DC7;\n    readonly UNSIGNED_INT_VEC4: 0x8DC8;\n    readonly INT_SAMPLER_2D: 0x8DCA;\n    readonly INT_SAMPLER_3D: 0x8DCB;\n    readonly INT_SAMPLER_CUBE: 0x8DCC;\n    readonly INT_SAMPLER_2D_ARRAY: 0x8DCF;\n    readonly UNSIGNED_INT_SAMPLER_2D: 0x8DD2;\n    readonly UNSIGNED_INT_SAMPLER_3D: 0x8DD3;\n    readonly UNSIGNED_INT_SAMPLER_CUBE: 0x8DD4;\n    readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8DD7;\n    readonly DEPTH_COMPONENT32F: 0x8CAC;\n    readonly DEPTH32F_STENCIL8: 0x8CAD;\n    readonly FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8DAD;\n    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210;\n    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211;\n    readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212;\n    readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213;\n    readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214;\n    readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215;\n    readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216;\n    readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217;\n    readonly FRAMEBUFFER_DEFAULT: 0x8218;\n    readonly UNSIGNED_INT_24_8: 0x84FA;\n    readonly DEPTH24_STENCIL8: 0x88F0;\n    readonly UNSIGNED_NORMALIZED: 0x8C17;\n    readonly DRAW_FRAMEBUFFER_BINDING: 0x8CA6;\n    readonly READ_FRAMEBUFFER: 0x8CA8;\n    readonly DRAW_FRAMEBUFFER: 0x8CA9;\n    readonly READ_FRAMEBUFFER_BINDING: 0x8CAA;\n    readonly RENDERBUFFER_SAMPLES: 0x8CAB;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8CD4;\n    readonly MAX_COLOR_ATTACHMENTS: 0x8CDF;\n    readonly COLOR_ATTACHMENT1: 0x8CE1;\n    readonly COLOR_ATTACHMENT2: 0x8CE2;\n    readonly COLOR_ATTACHMENT3: 0x8CE3;\n    readonly COLOR_ATTACHMENT4: 0x8CE4;\n    readonly COLOR_ATTACHMENT5: 0x8CE5;\n    readonly COLOR_ATTACHMENT6: 0x8CE6;\n    readonly COLOR_ATTACHMENT7: 0x8CE7;\n    readonly COLOR_ATTACHMENT8: 0x8CE8;\n    readonly COLOR_ATTACHMENT9: 0x8CE9;\n    readonly COLOR_ATTACHMENT10: 0x8CEA;\n    readonly COLOR_ATTACHMENT11: 0x8CEB;\n    readonly COLOR_ATTACHMENT12: 0x8CEC;\n    readonly COLOR_ATTACHMENT13: 0x8CED;\n    readonly COLOR_ATTACHMENT14: 0x8CEE;\n    readonly COLOR_ATTACHMENT15: 0x8CEF;\n    readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8D56;\n    readonly MAX_SAMPLES: 0x8D57;\n    readonly HALF_FLOAT: 0x140B;\n    readonly RG: 0x8227;\n    readonly RG_INTEGER: 0x8228;\n    readonly R8: 0x8229;\n    readonly RG8: 0x822B;\n    readonly R16F: 0x822D;\n    readonly R32F: 0x822E;\n    readonly RG16F: 0x822F;\n    readonly RG32F: 0x8230;\n    readonly R8I: 0x8231;\n    readonly R8UI: 0x8232;\n    readonly R16I: 0x8233;\n    readonly R16UI: 0x8234;\n    readonly R32I: 0x8235;\n    readonly R32UI: 0x8236;\n    readonly RG8I: 0x8237;\n    readonly RG8UI: 0x8238;\n    readonly RG16I: 0x8239;\n    readonly RG16UI: 0x823A;\n    readonly RG32I: 0x823B;\n    readonly RG32UI: 0x823C;\n    readonly VERTEX_ARRAY_BINDING: 0x85B5;\n    readonly R8_SNORM: 0x8F94;\n    readonly RG8_SNORM: 0x8F95;\n    readonly RGB8_SNORM: 0x8F96;\n    readonly RGBA8_SNORM: 0x8F97;\n    readonly SIGNED_NORMALIZED: 0x8F9C;\n    readonly COPY_READ_BUFFER: 0x8F36;\n    readonly COPY_WRITE_BUFFER: 0x8F37;\n    readonly COPY_READ_BUFFER_BINDING: 0x8F36;\n    readonly COPY_WRITE_BUFFER_BINDING: 0x8F37;\n    readonly UNIFORM_BUFFER: 0x8A11;\n    readonly UNIFORM_BUFFER_BINDING: 0x8A28;\n    readonly UNIFORM_BUFFER_START: 0x8A29;\n    readonly UNIFORM_BUFFER_SIZE: 0x8A2A;\n    readonly MAX_VERTEX_UNIFORM_BLOCKS: 0x8A2B;\n    readonly MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8A2D;\n    readonly MAX_COMBINED_UNIFORM_BLOCKS: 0x8A2E;\n    readonly MAX_UNIFORM_BUFFER_BINDINGS: 0x8A2F;\n    readonly MAX_UNIFORM_BLOCK_SIZE: 0x8A30;\n    readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8A31;\n    readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8A33;\n    readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8A34;\n    readonly ACTIVE_UNIFORM_BLOCKS: 0x8A36;\n    readonly UNIFORM_TYPE: 0x8A37;\n    readonly UNIFORM_SIZE: 0x8A38;\n    readonly UNIFORM_BLOCK_INDEX: 0x8A3A;\n    readonly UNIFORM_OFFSET: 0x8A3B;\n    readonly UNIFORM_ARRAY_STRIDE: 0x8A3C;\n    readonly UNIFORM_MATRIX_STRIDE: 0x8A3D;\n    readonly UNIFORM_IS_ROW_MAJOR: 0x8A3E;\n    readonly UNIFORM_BLOCK_BINDING: 0x8A3F;\n    readonly UNIFORM_BLOCK_DATA_SIZE: 0x8A40;\n    readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8A42;\n    readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8A43;\n    readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8A44;\n    readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8A46;\n    readonly INVALID_INDEX: 0xFFFFFFFF;\n    readonly MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122;\n    readonly MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125;\n    readonly MAX_SERVER_WAIT_TIMEOUT: 0x9111;\n    readonly OBJECT_TYPE: 0x9112;\n    readonly SYNC_CONDITION: 0x9113;\n    readonly SYNC_STATUS: 0x9114;\n    readonly SYNC_FLAGS: 0x9115;\n    readonly SYNC_FENCE: 0x9116;\n    readonly SYNC_GPU_COMMANDS_COMPLETE: 0x9117;\n    readonly UNSIGNALED: 0x9118;\n    readonly SIGNALED: 0x9119;\n    readonly ALREADY_SIGNALED: 0x911A;\n    readonly TIMEOUT_EXPIRED: 0x911B;\n    readonly CONDITION_SATISFIED: 0x911C;\n    readonly WAIT_FAILED: 0x911D;\n    readonly SYNC_FLUSH_COMMANDS_BIT: 0x00000001;\n    readonly VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88FE;\n    readonly ANY_SAMPLES_PASSED: 0x8C2F;\n    readonly ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8D6A;\n    readonly SAMPLER_BINDING: 0x8919;\n    readonly RGB10_A2UI: 0x906F;\n    readonly INT_2_10_10_10_REV: 0x8D9F;\n    readonly TRANSFORM_FEEDBACK: 0x8E22;\n    readonly TRANSFORM_FEEDBACK_PAUSED: 0x8E23;\n    readonly TRANSFORM_FEEDBACK_ACTIVE: 0x8E24;\n    readonly TRANSFORM_FEEDBACK_BINDING: 0x8E25;\n    readonly TEXTURE_IMMUTABLE_FORMAT: 0x912F;\n    readonly MAX_ELEMENT_INDEX: 0x8D6B;\n    readonly TEXTURE_IMMUTABLE_LEVELS: 0x82DF;\n    readonly TIMEOUT_IGNORED: -1;\n    readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247;\n    readonly DEPTH_BUFFER_BIT: 0x00000100;\n    readonly STENCIL_BUFFER_BIT: 0x00000400;\n    readonly COLOR_BUFFER_BIT: 0x00004000;\n    readonly POINTS: 0x0000;\n    readonly LINES: 0x0001;\n    readonly LINE_LOOP: 0x0002;\n    readonly LINE_STRIP: 0x0003;\n    readonly TRIANGLES: 0x0004;\n    readonly TRIANGLE_STRIP: 0x0005;\n    readonly TRIANGLE_FAN: 0x0006;\n    readonly ZERO: 0;\n    readonly ONE: 1;\n    readonly SRC_COLOR: 0x0300;\n    readonly ONE_MINUS_SRC_COLOR: 0x0301;\n    readonly SRC_ALPHA: 0x0302;\n    readonly ONE_MINUS_SRC_ALPHA: 0x0303;\n    readonly DST_ALPHA: 0x0304;\n    readonly ONE_MINUS_DST_ALPHA: 0x0305;\n    readonly DST_COLOR: 0x0306;\n    readonly ONE_MINUS_DST_COLOR: 0x0307;\n    readonly SRC_ALPHA_SATURATE: 0x0308;\n    readonly FUNC_ADD: 0x8006;\n    readonly BLEND_EQUATION: 0x8009;\n    readonly BLEND_EQUATION_RGB: 0x8009;\n    readonly BLEND_EQUATION_ALPHA: 0x883D;\n    readonly FUNC_SUBTRACT: 0x800A;\n    readonly FUNC_REVERSE_SUBTRACT: 0x800B;\n    readonly BLEND_DST_RGB: 0x80C8;\n    readonly BLEND_SRC_RGB: 0x80C9;\n    readonly BLEND_DST_ALPHA: 0x80CA;\n    readonly BLEND_SRC_ALPHA: 0x80CB;\n    readonly CONSTANT_COLOR: 0x8001;\n    readonly ONE_MINUS_CONSTANT_COLOR: 0x8002;\n    readonly CONSTANT_ALPHA: 0x8003;\n    readonly ONE_MINUS_CONSTANT_ALPHA: 0x8004;\n    readonly BLEND_COLOR: 0x8005;\n    readonly ARRAY_BUFFER: 0x8892;\n    readonly ELEMENT_ARRAY_BUFFER: 0x8893;\n    readonly ARRAY_BUFFER_BINDING: 0x8894;\n    readonly ELEMENT_ARRAY_BUFFER_BINDING: 0x8895;\n    readonly STREAM_DRAW: 0x88E0;\n    readonly STATIC_DRAW: 0x88E4;\n    readonly DYNAMIC_DRAW: 0x88E8;\n    readonly BUFFER_SIZE: 0x8764;\n    readonly BUFFER_USAGE: 0x8765;\n    readonly CURRENT_VERTEX_ATTRIB: 0x8626;\n    readonly FRONT: 0x0404;\n    readonly BACK: 0x0405;\n    readonly FRONT_AND_BACK: 0x0408;\n    readonly CULL_FACE: 0x0B44;\n    readonly BLEND: 0x0BE2;\n    readonly DITHER: 0x0BD0;\n    readonly STENCIL_TEST: 0x0B90;\n    readonly DEPTH_TEST: 0x0B71;\n    readonly SCISSOR_TEST: 0x0C11;\n    readonly POLYGON_OFFSET_FILL: 0x8037;\n    readonly SAMPLE_ALPHA_TO_COVERAGE: 0x809E;\n    readonly SAMPLE_COVERAGE: 0x80A0;\n    readonly NO_ERROR: 0;\n    readonly INVALID_ENUM: 0x0500;\n    readonly INVALID_VALUE: 0x0501;\n    readonly INVALID_OPERATION: 0x0502;\n    readonly OUT_OF_MEMORY: 0x0505;\n    readonly CW: 0x0900;\n    readonly CCW: 0x0901;\n    readonly LINE_WIDTH: 0x0B21;\n    readonly ALIASED_POINT_SIZE_RANGE: 0x846D;\n    readonly ALIASED_LINE_WIDTH_RANGE: 0x846E;\n    readonly CULL_FACE_MODE: 0x0B45;\n    readonly FRONT_FACE: 0x0B46;\n    readonly DEPTH_RANGE: 0x0B70;\n    readonly DEPTH_WRITEMASK: 0x0B72;\n    readonly DEPTH_CLEAR_VALUE: 0x0B73;\n    readonly DEPTH_FUNC: 0x0B74;\n    readonly STENCIL_CLEAR_VALUE: 0x0B91;\n    readonly STENCIL_FUNC: 0x0B92;\n    readonly STENCIL_FAIL: 0x0B94;\n    readonly STENCIL_PASS_DEPTH_FAIL: 0x0B95;\n    readonly STENCIL_PASS_DEPTH_PASS: 0x0B96;\n    readonly STENCIL_REF: 0x0B97;\n    readonly STENCIL_VALUE_MASK: 0x0B93;\n    readonly STENCIL_WRITEMASK: 0x0B98;\n    readonly STENCIL_BACK_FUNC: 0x8800;\n    readonly STENCIL_BACK_FAIL: 0x8801;\n    readonly STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802;\n    readonly STENCIL_BACK_PASS_DEPTH_PASS: 0x8803;\n    readonly STENCIL_BACK_REF: 0x8CA3;\n    readonly STENCIL_BACK_VALUE_MASK: 0x8CA4;\n    readonly STENCIL_BACK_WRITEMASK: 0x8CA5;\n    readonly VIEWPORT: 0x0BA2;\n    readonly SCISSOR_BOX: 0x0C10;\n    readonly COLOR_CLEAR_VALUE: 0x0C22;\n    readonly COLOR_WRITEMASK: 0x0C23;\n    readonly UNPACK_ALIGNMENT: 0x0CF5;\n    readonly PACK_ALIGNMENT: 0x0D05;\n    readonly MAX_TEXTURE_SIZE: 0x0D33;\n    readonly MAX_VIEWPORT_DIMS: 0x0D3A;\n    readonly SUBPIXEL_BITS: 0x0D50;\n    readonly RED_BITS: 0x0D52;\n    readonly GREEN_BITS: 0x0D53;\n    readonly BLUE_BITS: 0x0D54;\n    readonly ALPHA_BITS: 0x0D55;\n    readonly DEPTH_BITS: 0x0D56;\n    readonly STENCIL_BITS: 0x0D57;\n    readonly POLYGON_OFFSET_UNITS: 0x2A00;\n    readonly POLYGON_OFFSET_FACTOR: 0x8038;\n    readonly TEXTURE_BINDING_2D: 0x8069;\n    readonly SAMPLE_BUFFERS: 0x80A8;\n    readonly SAMPLES: 0x80A9;\n    readonly SAMPLE_COVERAGE_VALUE: 0x80AA;\n    readonly SAMPLE_COVERAGE_INVERT: 0x80AB;\n    readonly COMPRESSED_TEXTURE_FORMATS: 0x86A3;\n    readonly DONT_CARE: 0x1100;\n    readonly FASTEST: 0x1101;\n    readonly NICEST: 0x1102;\n    readonly GENERATE_MIPMAP_HINT: 0x8192;\n    readonly BYTE: 0x1400;\n    readonly UNSIGNED_BYTE: 0x1401;\n    readonly SHORT: 0x1402;\n    readonly UNSIGNED_SHORT: 0x1403;\n    readonly INT: 0x1404;\n    readonly UNSIGNED_INT: 0x1405;\n    readonly FLOAT: 0x1406;\n    readonly DEPTH_COMPONENT: 0x1902;\n    readonly ALPHA: 0x1906;\n    readonly RGB: 0x1907;\n    readonly RGBA: 0x1908;\n    readonly LUMINANCE: 0x1909;\n    readonly LUMINANCE_ALPHA: 0x190A;\n    readonly UNSIGNED_SHORT_4_4_4_4: 0x8033;\n    readonly UNSIGNED_SHORT_5_5_5_1: 0x8034;\n    readonly UNSIGNED_SHORT_5_6_5: 0x8363;\n    readonly FRAGMENT_SHADER: 0x8B30;\n    readonly VERTEX_SHADER: 0x8B31;\n    readonly MAX_VERTEX_ATTRIBS: 0x8869;\n    readonly MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB;\n    readonly MAX_VARYING_VECTORS: 0x8DFC;\n    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D;\n    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C;\n    readonly MAX_TEXTURE_IMAGE_UNITS: 0x8872;\n    readonly MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD;\n    readonly SHADER_TYPE: 0x8B4F;\n    readonly DELETE_STATUS: 0x8B80;\n    readonly LINK_STATUS: 0x8B82;\n    readonly VALIDATE_STATUS: 0x8B83;\n    readonly ATTACHED_SHADERS: 0x8B85;\n    readonly ACTIVE_UNIFORMS: 0x8B86;\n    readonly ACTIVE_ATTRIBUTES: 0x8B89;\n    readonly SHADING_LANGUAGE_VERSION: 0x8B8C;\n    readonly CURRENT_PROGRAM: 0x8B8D;\n    readonly NEVER: 0x0200;\n    readonly LESS: 0x0201;\n    readonly EQUAL: 0x0202;\n    readonly LEQUAL: 0x0203;\n    readonly GREATER: 0x0204;\n    readonly NOTEQUAL: 0x0205;\n    readonly GEQUAL: 0x0206;\n    readonly ALWAYS: 0x0207;\n    readonly KEEP: 0x1E00;\n    readonly REPLACE: 0x1E01;\n    readonly INCR: 0x1E02;\n    readonly DECR: 0x1E03;\n    readonly INVERT: 0x150A;\n    readonly INCR_WRAP: 0x8507;\n    readonly DECR_WRAP: 0x8508;\n    readonly VENDOR: 0x1F00;\n    readonly RENDERER: 0x1F01;\n    readonly VERSION: 0x1F02;\n    readonly NEAREST: 0x2600;\n    readonly LINEAR: 0x2601;\n    readonly NEAREST_MIPMAP_NEAREST: 0x2700;\n    readonly LINEAR_MIPMAP_NEAREST: 0x2701;\n    readonly NEAREST_MIPMAP_LINEAR: 0x2702;\n    readonly LINEAR_MIPMAP_LINEAR: 0x2703;\n    readonly TEXTURE_MAG_FILTER: 0x2800;\n    readonly TEXTURE_MIN_FILTER: 0x2801;\n    readonly TEXTURE_WRAP_S: 0x2802;\n    readonly TEXTURE_WRAP_T: 0x2803;\n    readonly TEXTURE_2D: 0x0DE1;\n    readonly TEXTURE: 0x1702;\n    readonly TEXTURE_CUBE_MAP: 0x8513;\n    readonly TEXTURE_BINDING_CUBE_MAP: 0x8514;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A;\n    readonly MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C;\n    readonly TEXTURE0: 0x84C0;\n    readonly TEXTURE1: 0x84C1;\n    readonly TEXTURE2: 0x84C2;\n    readonly TEXTURE3: 0x84C3;\n    readonly TEXTURE4: 0x84C4;\n    readonly TEXTURE5: 0x84C5;\n    readonly TEXTURE6: 0x84C6;\n    readonly TEXTURE7: 0x84C7;\n    readonly TEXTURE8: 0x84C8;\n    readonly TEXTURE9: 0x84C9;\n    readonly TEXTURE10: 0x84CA;\n    readonly TEXTURE11: 0x84CB;\n    readonly TEXTURE12: 0x84CC;\n    readonly TEXTURE13: 0x84CD;\n    readonly TEXTURE14: 0x84CE;\n    readonly TEXTURE15: 0x84CF;\n    readonly TEXTURE16: 0x84D0;\n    readonly TEXTURE17: 0x84D1;\n    readonly TEXTURE18: 0x84D2;\n    readonly TEXTURE19: 0x84D3;\n    readonly TEXTURE20: 0x84D4;\n    readonly TEXTURE21: 0x84D5;\n    readonly TEXTURE22: 0x84D6;\n    readonly TEXTURE23: 0x84D7;\n    readonly TEXTURE24: 0x84D8;\n    readonly TEXTURE25: 0x84D9;\n    readonly TEXTURE26: 0x84DA;\n    readonly TEXTURE27: 0x84DB;\n    readonly TEXTURE28: 0x84DC;\n    readonly TEXTURE29: 0x84DD;\n    readonly TEXTURE30: 0x84DE;\n    readonly TEXTURE31: 0x84DF;\n    readonly ACTIVE_TEXTURE: 0x84E0;\n    readonly REPEAT: 0x2901;\n    readonly CLAMP_TO_EDGE: 0x812F;\n    readonly MIRRORED_REPEAT: 0x8370;\n    readonly FLOAT_VEC2: 0x8B50;\n    readonly FLOAT_VEC3: 0x8B51;\n    readonly FLOAT_VEC4: 0x8B52;\n    readonly INT_VEC2: 0x8B53;\n    readonly INT_VEC3: 0x8B54;\n    readonly INT_VEC4: 0x8B55;\n    readonly BOOL: 0x8B56;\n    readonly BOOL_VEC2: 0x8B57;\n    readonly BOOL_VEC3: 0x8B58;\n    readonly BOOL_VEC4: 0x8B59;\n    readonly FLOAT_MAT2: 0x8B5A;\n    readonly FLOAT_MAT3: 0x8B5B;\n    readonly FLOAT_MAT4: 0x8B5C;\n    readonly SAMPLER_2D: 0x8B5E;\n    readonly SAMPLER_CUBE: 0x8B60;\n    readonly VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622;\n    readonly VERTEX_ATTRIB_ARRAY_SIZE: 0x8623;\n    readonly VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624;\n    readonly VERTEX_ATTRIB_ARRAY_TYPE: 0x8625;\n    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A;\n    readonly VERTEX_ATTRIB_ARRAY_POINTER: 0x8645;\n    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F;\n    readonly IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A;\n    readonly IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B;\n    readonly COMPILE_STATUS: 0x8B81;\n    readonly LOW_FLOAT: 0x8DF0;\n    readonly MEDIUM_FLOAT: 0x8DF1;\n    readonly HIGH_FLOAT: 0x8DF2;\n    readonly LOW_INT: 0x8DF3;\n    readonly MEDIUM_INT: 0x8DF4;\n    readonly HIGH_INT: 0x8DF5;\n    readonly FRAMEBUFFER: 0x8D40;\n    readonly RENDERBUFFER: 0x8D41;\n    readonly RGBA4: 0x8056;\n    readonly RGB5_A1: 0x8057;\n    readonly RGB565: 0x8D62;\n    readonly DEPTH_COMPONENT16: 0x81A5;\n    readonly STENCIL_INDEX8: 0x8D48;\n    readonly DEPTH_STENCIL: 0x84F9;\n    readonly RENDERBUFFER_WIDTH: 0x8D42;\n    readonly RENDERBUFFER_HEIGHT: 0x8D43;\n    readonly RENDERBUFFER_INTERNAL_FORMAT: 0x8D44;\n    readonly RENDERBUFFER_RED_SIZE: 0x8D50;\n    readonly RENDERBUFFER_GREEN_SIZE: 0x8D51;\n    readonly RENDERBUFFER_BLUE_SIZE: 0x8D52;\n    readonly RENDERBUFFER_ALPHA_SIZE: 0x8D53;\n    readonly RENDERBUFFER_DEPTH_SIZE: 0x8D54;\n    readonly RENDERBUFFER_STENCIL_SIZE: 0x8D55;\n    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0;\n    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3;\n    readonly COLOR_ATTACHMENT0: 0x8CE0;\n    readonly DEPTH_ATTACHMENT: 0x8D00;\n    readonly STENCIL_ATTACHMENT: 0x8D20;\n    readonly DEPTH_STENCIL_ATTACHMENT: 0x821A;\n    readonly NONE: 0;\n    readonly FRAMEBUFFER_COMPLETE: 0x8CD5;\n    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6;\n    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7;\n    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9;\n    readonly FRAMEBUFFER_UNSUPPORTED: 0x8CDD;\n    readonly FRAMEBUFFER_BINDING: 0x8CA6;\n    readonly RENDERBUFFER_BINDING: 0x8CA7;\n    readonly MAX_RENDERBUFFER_SIZE: 0x84E8;\n    readonly INVALID_FRAMEBUFFER_OPERATION: 0x0506;\n    readonly UNPACK_FLIP_Y_WEBGL: 0x9240;\n    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241;\n    readonly CONTEXT_LOST_WEBGL: 0x9242;\n    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243;\n    readonly BROWSER_DEFAULT_WEBGL: 0x9244;\n};\n\ninterface WebGL2RenderingContextBase {\n    beginQuery(target: GLenum, query: WebGLQuery): void;\n    beginTransformFeedback(primitiveMode: GLenum): void;\n    bindBufferBase(target: GLenum, index: GLuint, buffer: WebGLBuffer | null): void;\n    bindBufferRange(target: GLenum, index: GLuint, buffer: WebGLBuffer | null, offset: GLintptr, size: GLsizeiptr): void;\n    bindSampler(unit: GLuint, sampler: WebGLSampler | null): void;\n    bindTransformFeedback(target: GLenum, tf: WebGLTransformFeedback | null): void;\n    bindVertexArray(array: WebGLVertexArrayObject | null): void;\n    blitFramebuffer(srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum): void;\n    clearBufferfi(buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint): void;\n    clearBufferfv(buffer: GLenum, drawbuffer: GLint, values: Float32List, srcOffset?: GLuint): void;\n    clearBufferiv(buffer: GLenum, drawbuffer: GLint, values: Int32List, srcOffset?: GLuint): void;\n    clearBufferuiv(buffer: GLenum, drawbuffer: GLint, values: Uint32List, srcOffset?: GLuint): void;\n    clientWaitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLuint64): GLenum;\n    compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr): void;\n    compressedTexImage3D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;\n    compressedTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr): void;\n    compressedTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;\n    copyBufferSubData(readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr): void;\n    copyTexSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;\n    createQuery(): WebGLQuery | null;\n    createSampler(): WebGLSampler | null;\n    createTransformFeedback(): WebGLTransformFeedback | null;\n    createVertexArray(): WebGLVertexArrayObject | null;\n    deleteQuery(query: WebGLQuery | null): void;\n    deleteSampler(sampler: WebGLSampler | null): void;\n    deleteSync(sync: WebGLSync | null): void;\n    deleteTransformFeedback(tf: WebGLTransformFeedback | null): void;\n    deleteVertexArray(vertexArray: WebGLVertexArrayObject | null): void;\n    drawArraysInstanced(mode: GLenum, first: GLint, count: GLsizei, instanceCount: GLsizei): void;\n    drawBuffers(buffers: GLenum[]): void;\n    drawElementsInstanced(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, instanceCount: GLsizei): void;\n    drawRangeElements(mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type: GLenum, offset: GLintptr): void;\n    endQuery(target: GLenum): void;\n    endTransformFeedback(): void;\n    fenceSync(condition: GLenum, flags: GLbitfield): WebGLSync | null;\n    framebufferTextureLayer(target: GLenum, attachment: GLenum, texture: WebGLTexture | null, level: GLint, layer: GLint): void;\n    getActiveUniformBlockName(program: WebGLProgram, uniformBlockIndex: GLuint): string | null;\n    getActiveUniformBlockParameter(program: WebGLProgram, uniformBlockIndex: GLuint, pname: GLenum): any;\n    getActiveUniforms(program: WebGLProgram, uniformIndices: GLuint[], pname: GLenum): any;\n    getBufferSubData(target: GLenum, srcByteOffset: GLintptr, dstBuffer: ArrayBufferView, dstOffset?: GLuint, length?: GLuint): void;\n    getFragDataLocation(program: WebGLProgram, name: string): GLint;\n    getIndexedParameter(target: GLenum, index: GLuint): any;\n    getInternalformatParameter(target: GLenum, internalformat: GLenum, pname: GLenum): any;\n    getQuery(target: GLenum, pname: GLenum): WebGLQuery | null;\n    getQueryParameter(query: WebGLQuery, pname: GLenum): any;\n    getSamplerParameter(sampler: WebGLSampler, pname: GLenum): any;\n    getSyncParameter(sync: WebGLSync, pname: GLenum): any;\n    getTransformFeedbackVarying(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;\n    getUniformBlockIndex(program: WebGLProgram, uniformBlockName: string): GLuint;\n    getUniformIndices(program: WebGLProgram, uniformNames: string[]): GLuint[] | null;\n    invalidateFramebuffer(target: GLenum, attachments: GLenum[]): void;\n    invalidateSubFramebuffer(target: GLenum, attachments: GLenum[], x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;\n    isQuery(query: WebGLQuery | null): GLboolean;\n    isSampler(sampler: WebGLSampler | null): GLboolean;\n    isSync(sync: WebGLSync | null): GLboolean;\n    isTransformFeedback(tf: WebGLTransformFeedback | null): GLboolean;\n    isVertexArray(vertexArray: WebGLVertexArrayObject | null): GLboolean;\n    pauseTransformFeedback(): void;\n    readBuffer(src: GLenum): void;\n    renderbufferStorageMultisample(target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei): void;\n    resumeTransformFeedback(): void;\n    samplerParameterf(sampler: WebGLSampler, pname: GLenum, param: GLfloat): void;\n    samplerParameteri(sampler: WebGLSampler, pname: GLenum, param: GLint): void;\n    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;\n    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView | null): void;\n    texImage3D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;\n    texStorage2D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei): void;\n    texStorage3D(target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei): void;\n    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;\n    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texSubImage3D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView | null, srcOffset?: GLuint): void;\n    transformFeedbackVaryings(program: WebGLProgram, varyings: string[], bufferMode: GLenum): void;\n    uniform1ui(location: WebGLUniformLocation | null, v0: GLuint): void;\n    uniform1uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform2ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint): void;\n    uniform2uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform3ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint, v2: GLuint): void;\n    uniform3uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform4ui(location: WebGLUniformLocation | null, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint): void;\n    uniform4uiv(location: WebGLUniformLocation | null, data: Uint32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformBlockBinding(program: WebGLProgram, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint): void;\n    uniformMatrix2x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix2x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix3x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix3x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix4x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix4x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    vertexAttribDivisor(index: GLuint, divisor: GLuint): void;\n    vertexAttribI4i(index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint): void;\n    vertexAttribI4iv(index: GLuint, values: Int32List): void;\n    vertexAttribI4ui(index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint): void;\n    vertexAttribI4uiv(index: GLuint, values: Uint32List): void;\n    vertexAttribIPointer(index: GLuint, size: GLint, type: GLenum, stride: GLsizei, offset: GLintptr): void;\n    waitSync(sync: WebGLSync, flags: GLbitfield, timeout: GLint64): void;\n    readonly READ_BUFFER: 0x0C02;\n    readonly UNPACK_ROW_LENGTH: 0x0CF2;\n    readonly UNPACK_SKIP_ROWS: 0x0CF3;\n    readonly UNPACK_SKIP_PIXELS: 0x0CF4;\n    readonly PACK_ROW_LENGTH: 0x0D02;\n    readonly PACK_SKIP_ROWS: 0x0D03;\n    readonly PACK_SKIP_PIXELS: 0x0D04;\n    readonly COLOR: 0x1800;\n    readonly DEPTH: 0x1801;\n    readonly STENCIL: 0x1802;\n    readonly RED: 0x1903;\n    readonly RGB8: 0x8051;\n    readonly RGBA8: 0x8058;\n    readonly RGB10_A2: 0x8059;\n    readonly TEXTURE_BINDING_3D: 0x806A;\n    readonly UNPACK_SKIP_IMAGES: 0x806D;\n    readonly UNPACK_IMAGE_HEIGHT: 0x806E;\n    readonly TEXTURE_3D: 0x806F;\n    readonly TEXTURE_WRAP_R: 0x8072;\n    readonly MAX_3D_TEXTURE_SIZE: 0x8073;\n    readonly UNSIGNED_INT_2_10_10_10_REV: 0x8368;\n    readonly MAX_ELEMENTS_VERTICES: 0x80E8;\n    readonly MAX_ELEMENTS_INDICES: 0x80E9;\n    readonly TEXTURE_MIN_LOD: 0x813A;\n    readonly TEXTURE_MAX_LOD: 0x813B;\n    readonly TEXTURE_BASE_LEVEL: 0x813C;\n    readonly TEXTURE_MAX_LEVEL: 0x813D;\n    readonly MIN: 0x8007;\n    readonly MAX: 0x8008;\n    readonly DEPTH_COMPONENT24: 0x81A6;\n    readonly MAX_TEXTURE_LOD_BIAS: 0x84FD;\n    readonly TEXTURE_COMPARE_MODE: 0x884C;\n    readonly TEXTURE_COMPARE_FUNC: 0x884D;\n    readonly CURRENT_QUERY: 0x8865;\n    readonly QUERY_RESULT: 0x8866;\n    readonly QUERY_RESULT_AVAILABLE: 0x8867;\n    readonly STREAM_READ: 0x88E1;\n    readonly STREAM_COPY: 0x88E2;\n    readonly STATIC_READ: 0x88E5;\n    readonly STATIC_COPY: 0x88E6;\n    readonly DYNAMIC_READ: 0x88E9;\n    readonly DYNAMIC_COPY: 0x88EA;\n    readonly MAX_DRAW_BUFFERS: 0x8824;\n    readonly DRAW_BUFFER0: 0x8825;\n    readonly DRAW_BUFFER1: 0x8826;\n    readonly DRAW_BUFFER2: 0x8827;\n    readonly DRAW_BUFFER3: 0x8828;\n    readonly DRAW_BUFFER4: 0x8829;\n    readonly DRAW_BUFFER5: 0x882A;\n    readonly DRAW_BUFFER6: 0x882B;\n    readonly DRAW_BUFFER7: 0x882C;\n    readonly DRAW_BUFFER8: 0x882D;\n    readonly DRAW_BUFFER9: 0x882E;\n    readonly DRAW_BUFFER10: 0x882F;\n    readonly DRAW_BUFFER11: 0x8830;\n    readonly DRAW_BUFFER12: 0x8831;\n    readonly DRAW_BUFFER13: 0x8832;\n    readonly DRAW_BUFFER14: 0x8833;\n    readonly DRAW_BUFFER15: 0x8834;\n    readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8B49;\n    readonly MAX_VERTEX_UNIFORM_COMPONENTS: 0x8B4A;\n    readonly SAMPLER_3D: 0x8B5F;\n    readonly SAMPLER_2D_SHADOW: 0x8B62;\n    readonly FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8B8B;\n    readonly PIXEL_PACK_BUFFER: 0x88EB;\n    readonly PIXEL_UNPACK_BUFFER: 0x88EC;\n    readonly PIXEL_PACK_BUFFER_BINDING: 0x88ED;\n    readonly PIXEL_UNPACK_BUFFER_BINDING: 0x88EF;\n    readonly FLOAT_MAT2x3: 0x8B65;\n    readonly FLOAT_MAT2x4: 0x8B66;\n    readonly FLOAT_MAT3x2: 0x8B67;\n    readonly FLOAT_MAT3x4: 0x8B68;\n    readonly FLOAT_MAT4x2: 0x8B69;\n    readonly FLOAT_MAT4x3: 0x8B6A;\n    readonly SRGB: 0x8C40;\n    readonly SRGB8: 0x8C41;\n    readonly SRGB8_ALPHA8: 0x8C43;\n    readonly COMPARE_REF_TO_TEXTURE: 0x884E;\n    readonly RGBA32F: 0x8814;\n    readonly RGB32F: 0x8815;\n    readonly RGBA16F: 0x881A;\n    readonly RGB16F: 0x881B;\n    readonly VERTEX_ATTRIB_ARRAY_INTEGER: 0x88FD;\n    readonly MAX_ARRAY_TEXTURE_LAYERS: 0x88FF;\n    readonly MIN_PROGRAM_TEXEL_OFFSET: 0x8904;\n    readonly MAX_PROGRAM_TEXEL_OFFSET: 0x8905;\n    readonly MAX_VARYING_COMPONENTS: 0x8B4B;\n    readonly TEXTURE_2D_ARRAY: 0x8C1A;\n    readonly TEXTURE_BINDING_2D_ARRAY: 0x8C1D;\n    readonly R11F_G11F_B10F: 0x8C3A;\n    readonly UNSIGNED_INT_10F_11F_11F_REV: 0x8C3B;\n    readonly RGB9_E5: 0x8C3D;\n    readonly UNSIGNED_INT_5_9_9_9_REV: 0x8C3E;\n    readonly TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8C7F;\n    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8C80;\n    readonly TRANSFORM_FEEDBACK_VARYINGS: 0x8C83;\n    readonly TRANSFORM_FEEDBACK_BUFFER_START: 0x8C84;\n    readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8C85;\n    readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8C88;\n    readonly RASTERIZER_DISCARD: 0x8C89;\n    readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8C8A;\n    readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8C8B;\n    readonly INTERLEAVED_ATTRIBS: 0x8C8C;\n    readonly SEPARATE_ATTRIBS: 0x8C8D;\n    readonly TRANSFORM_FEEDBACK_BUFFER: 0x8C8E;\n    readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8C8F;\n    readonly RGBA32UI: 0x8D70;\n    readonly RGB32UI: 0x8D71;\n    readonly RGBA16UI: 0x8D76;\n    readonly RGB16UI: 0x8D77;\n    readonly RGBA8UI: 0x8D7C;\n    readonly RGB8UI: 0x8D7D;\n    readonly RGBA32I: 0x8D82;\n    readonly RGB32I: 0x8D83;\n    readonly RGBA16I: 0x8D88;\n    readonly RGB16I: 0x8D89;\n    readonly RGBA8I: 0x8D8E;\n    readonly RGB8I: 0x8D8F;\n    readonly RED_INTEGER: 0x8D94;\n    readonly RGB_INTEGER: 0x8D98;\n    readonly RGBA_INTEGER: 0x8D99;\n    readonly SAMPLER_2D_ARRAY: 0x8DC1;\n    readonly SAMPLER_2D_ARRAY_SHADOW: 0x8DC4;\n    readonly SAMPLER_CUBE_SHADOW: 0x8DC5;\n    readonly UNSIGNED_INT_VEC2: 0x8DC6;\n    readonly UNSIGNED_INT_VEC3: 0x8DC7;\n    readonly UNSIGNED_INT_VEC4: 0x8DC8;\n    readonly INT_SAMPLER_2D: 0x8DCA;\n    readonly INT_SAMPLER_3D: 0x8DCB;\n    readonly INT_SAMPLER_CUBE: 0x8DCC;\n    readonly INT_SAMPLER_2D_ARRAY: 0x8DCF;\n    readonly UNSIGNED_INT_SAMPLER_2D: 0x8DD2;\n    readonly UNSIGNED_INT_SAMPLER_3D: 0x8DD3;\n    readonly UNSIGNED_INT_SAMPLER_CUBE: 0x8DD4;\n    readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8DD7;\n    readonly DEPTH_COMPONENT32F: 0x8CAC;\n    readonly DEPTH32F_STENCIL8: 0x8CAD;\n    readonly FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8DAD;\n    readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210;\n    readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211;\n    readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212;\n    readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213;\n    readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214;\n    readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215;\n    readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216;\n    readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217;\n    readonly FRAMEBUFFER_DEFAULT: 0x8218;\n    readonly UNSIGNED_INT_24_8: 0x84FA;\n    readonly DEPTH24_STENCIL8: 0x88F0;\n    readonly UNSIGNED_NORMALIZED: 0x8C17;\n    readonly DRAW_FRAMEBUFFER_BINDING: 0x8CA6;\n    readonly READ_FRAMEBUFFER: 0x8CA8;\n    readonly DRAW_FRAMEBUFFER: 0x8CA9;\n    readonly READ_FRAMEBUFFER_BINDING: 0x8CAA;\n    readonly RENDERBUFFER_SAMPLES: 0x8CAB;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8CD4;\n    readonly MAX_COLOR_ATTACHMENTS: 0x8CDF;\n    readonly COLOR_ATTACHMENT1: 0x8CE1;\n    readonly COLOR_ATTACHMENT2: 0x8CE2;\n    readonly COLOR_ATTACHMENT3: 0x8CE3;\n    readonly COLOR_ATTACHMENT4: 0x8CE4;\n    readonly COLOR_ATTACHMENT5: 0x8CE5;\n    readonly COLOR_ATTACHMENT6: 0x8CE6;\n    readonly COLOR_ATTACHMENT7: 0x8CE7;\n    readonly COLOR_ATTACHMENT8: 0x8CE8;\n    readonly COLOR_ATTACHMENT9: 0x8CE9;\n    readonly COLOR_ATTACHMENT10: 0x8CEA;\n    readonly COLOR_ATTACHMENT11: 0x8CEB;\n    readonly COLOR_ATTACHMENT12: 0x8CEC;\n    readonly COLOR_ATTACHMENT13: 0x8CED;\n    readonly COLOR_ATTACHMENT14: 0x8CEE;\n    readonly COLOR_ATTACHMENT15: 0x8CEF;\n    readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8D56;\n    readonly MAX_SAMPLES: 0x8D57;\n    readonly HALF_FLOAT: 0x140B;\n    readonly RG: 0x8227;\n    readonly RG_INTEGER: 0x8228;\n    readonly R8: 0x8229;\n    readonly RG8: 0x822B;\n    readonly R16F: 0x822D;\n    readonly R32F: 0x822E;\n    readonly RG16F: 0x822F;\n    readonly RG32F: 0x8230;\n    readonly R8I: 0x8231;\n    readonly R8UI: 0x8232;\n    readonly R16I: 0x8233;\n    readonly R16UI: 0x8234;\n    readonly R32I: 0x8235;\n    readonly R32UI: 0x8236;\n    readonly RG8I: 0x8237;\n    readonly RG8UI: 0x8238;\n    readonly RG16I: 0x8239;\n    readonly RG16UI: 0x823A;\n    readonly RG32I: 0x823B;\n    readonly RG32UI: 0x823C;\n    readonly VERTEX_ARRAY_BINDING: 0x85B5;\n    readonly R8_SNORM: 0x8F94;\n    readonly RG8_SNORM: 0x8F95;\n    readonly RGB8_SNORM: 0x8F96;\n    readonly RGBA8_SNORM: 0x8F97;\n    readonly SIGNED_NORMALIZED: 0x8F9C;\n    readonly COPY_READ_BUFFER: 0x8F36;\n    readonly COPY_WRITE_BUFFER: 0x8F37;\n    readonly COPY_READ_BUFFER_BINDING: 0x8F36;\n    readonly COPY_WRITE_BUFFER_BINDING: 0x8F37;\n    readonly UNIFORM_BUFFER: 0x8A11;\n    readonly UNIFORM_BUFFER_BINDING: 0x8A28;\n    readonly UNIFORM_BUFFER_START: 0x8A29;\n    readonly UNIFORM_BUFFER_SIZE: 0x8A2A;\n    readonly MAX_VERTEX_UNIFORM_BLOCKS: 0x8A2B;\n    readonly MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8A2D;\n    readonly MAX_COMBINED_UNIFORM_BLOCKS: 0x8A2E;\n    readonly MAX_UNIFORM_BUFFER_BINDINGS: 0x8A2F;\n    readonly MAX_UNIFORM_BLOCK_SIZE: 0x8A30;\n    readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8A31;\n    readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8A33;\n    readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8A34;\n    readonly ACTIVE_UNIFORM_BLOCKS: 0x8A36;\n    readonly UNIFORM_TYPE: 0x8A37;\n    readonly UNIFORM_SIZE: 0x8A38;\n    readonly UNIFORM_BLOCK_INDEX: 0x8A3A;\n    readonly UNIFORM_OFFSET: 0x8A3B;\n    readonly UNIFORM_ARRAY_STRIDE: 0x8A3C;\n    readonly UNIFORM_MATRIX_STRIDE: 0x8A3D;\n    readonly UNIFORM_IS_ROW_MAJOR: 0x8A3E;\n    readonly UNIFORM_BLOCK_BINDING: 0x8A3F;\n    readonly UNIFORM_BLOCK_DATA_SIZE: 0x8A40;\n    readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8A42;\n    readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8A43;\n    readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8A44;\n    readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8A46;\n    readonly INVALID_INDEX: 0xFFFFFFFF;\n    readonly MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122;\n    readonly MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125;\n    readonly MAX_SERVER_WAIT_TIMEOUT: 0x9111;\n    readonly OBJECT_TYPE: 0x9112;\n    readonly SYNC_CONDITION: 0x9113;\n    readonly SYNC_STATUS: 0x9114;\n    readonly SYNC_FLAGS: 0x9115;\n    readonly SYNC_FENCE: 0x9116;\n    readonly SYNC_GPU_COMMANDS_COMPLETE: 0x9117;\n    readonly UNSIGNALED: 0x9118;\n    readonly SIGNALED: 0x9119;\n    readonly ALREADY_SIGNALED: 0x911A;\n    readonly TIMEOUT_EXPIRED: 0x911B;\n    readonly CONDITION_SATISFIED: 0x911C;\n    readonly WAIT_FAILED: 0x911D;\n    readonly SYNC_FLUSH_COMMANDS_BIT: 0x00000001;\n    readonly VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88FE;\n    readonly ANY_SAMPLES_PASSED: 0x8C2F;\n    readonly ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8D6A;\n    readonly SAMPLER_BINDING: 0x8919;\n    readonly RGB10_A2UI: 0x906F;\n    readonly INT_2_10_10_10_REV: 0x8D9F;\n    readonly TRANSFORM_FEEDBACK: 0x8E22;\n    readonly TRANSFORM_FEEDBACK_PAUSED: 0x8E23;\n    readonly TRANSFORM_FEEDBACK_ACTIVE: 0x8E24;\n    readonly TRANSFORM_FEEDBACK_BINDING: 0x8E25;\n    readonly TEXTURE_IMMUTABLE_FORMAT: 0x912F;\n    readonly MAX_ELEMENT_INDEX: 0x8D6B;\n    readonly TEXTURE_IMMUTABLE_LEVELS: 0x82DF;\n    readonly TIMEOUT_IGNORED: -1;\n    readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247;\n}\n\ninterface WebGL2RenderingContextOverloads {\n    bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum): void;\n    bufferData(target: GLenum, srcData: BufferSource | null, usage: GLenum): void;\n    bufferData(target: GLenum, srcData: ArrayBufferView, usage: GLenum, srcOffset: GLuint, length?: GLuint): void;\n    bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: BufferSource): void;\n    bufferSubData(target: GLenum, dstByteOffset: GLintptr, srcData: ArrayBufferView, srcOffset: GLuint, length?: GLuint): void;\n    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, offset: GLintptr): void;\n    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;\n    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, offset: GLintptr): void;\n    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, srcData: ArrayBufferView, srcOffset?: GLuint, srcLengthOverride?: GLuint): void;\n    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView | null): void;\n    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, offset: GLintptr): void;\n    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, dstData: ArrayBufferView, dstOffset: GLuint): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pboOffset: GLintptr): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pboOffset: GLintptr): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, srcData: ArrayBufferView, srcOffset: GLuint): void;\n    uniform1fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform1iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform2fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform2iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform3fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform3iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform4fv(location: WebGLUniformLocation | null, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform4iv(location: WebGLUniformLocation | null, data: Int32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Float32List, srcOffset?: GLuint, srcLength?: GLuint): void;\n}\n\n/** Part of the WebGL API and represents the information returned by calling the WebGLRenderingContext.getActiveAttrib() and WebGLRenderingContext.getActiveUniform() methods. */\ninterface WebGLActiveInfo {\n    readonly name: string;\n    readonly size: GLint;\n    readonly type: GLenum;\n}\n\ndeclare var WebGLActiveInfo: {\n    prototype: WebGLActiveInfo;\n    new(): WebGLActiveInfo;\n};\n\n/** Part of the WebGL API and represents an opaque buffer object storing data such as vertices or colors. */\ninterface WebGLBuffer {\n}\n\ndeclare var WebGLBuffer: {\n    prototype: WebGLBuffer;\n    new(): WebGLBuffer;\n};\n\n/** The WebContextEvent interface is part of the WebGL API and is an interface for an event that is generated in response to a status change to the WebGL rendering context. */\ninterface WebGLContextEvent extends Event {\n    readonly statusMessage: string;\n}\n\ndeclare var WebGLContextEvent: {\n    prototype: WebGLContextEvent;\n    new(type: string, eventInit?: WebGLContextEventInit): WebGLContextEvent;\n};\n\n/** Part of the WebGL API and represents a collection of buffers that serve as a rendering destination. */\ninterface WebGLFramebuffer {\n}\n\ndeclare var WebGLFramebuffer: {\n    prototype: WebGLFramebuffer;\n    new(): WebGLFramebuffer;\n};\n\n/** The WebGLProgram is part of the WebGL API and is a combination of two compiled WebGLShaders consisting of a vertex shader and a fragment shader (both written in GLSL). */\ninterface WebGLProgram {\n}\n\ndeclare var WebGLProgram: {\n    prototype: WebGLProgram;\n    new(): WebGLProgram;\n};\n\ninterface WebGLQuery {\n}\n\ndeclare var WebGLQuery: {\n    prototype: WebGLQuery;\n    new(): WebGLQuery;\n};\n\n/** Part of the WebGL API and represents a buffer that can contain an image, or can be source or target of an rendering operation. */\ninterface WebGLRenderbuffer {\n}\n\ndeclare var WebGLRenderbuffer: {\n    prototype: WebGLRenderbuffer;\n    new(): WebGLRenderbuffer;\n};\n\n/** Provides an interface to the OpenGL ES 2.0 graphics rendering context for the drawing surface of an HTML <canvas> element. */\ninterface WebGLRenderingContext extends WebGLRenderingContextBase, WebGLRenderingContextOverloads {\n}\n\ndeclare var WebGLRenderingContext: {\n    prototype: WebGLRenderingContext;\n    new(): WebGLRenderingContext;\n    readonly DEPTH_BUFFER_BIT: 0x00000100;\n    readonly STENCIL_BUFFER_BIT: 0x00000400;\n    readonly COLOR_BUFFER_BIT: 0x00004000;\n    readonly POINTS: 0x0000;\n    readonly LINES: 0x0001;\n    readonly LINE_LOOP: 0x0002;\n    readonly LINE_STRIP: 0x0003;\n    readonly TRIANGLES: 0x0004;\n    readonly TRIANGLE_STRIP: 0x0005;\n    readonly TRIANGLE_FAN: 0x0006;\n    readonly ZERO: 0;\n    readonly ONE: 1;\n    readonly SRC_COLOR: 0x0300;\n    readonly ONE_MINUS_SRC_COLOR: 0x0301;\n    readonly SRC_ALPHA: 0x0302;\n    readonly ONE_MINUS_SRC_ALPHA: 0x0303;\n    readonly DST_ALPHA: 0x0304;\n    readonly ONE_MINUS_DST_ALPHA: 0x0305;\n    readonly DST_COLOR: 0x0306;\n    readonly ONE_MINUS_DST_COLOR: 0x0307;\n    readonly SRC_ALPHA_SATURATE: 0x0308;\n    readonly FUNC_ADD: 0x8006;\n    readonly BLEND_EQUATION: 0x8009;\n    readonly BLEND_EQUATION_RGB: 0x8009;\n    readonly BLEND_EQUATION_ALPHA: 0x883D;\n    readonly FUNC_SUBTRACT: 0x800A;\n    readonly FUNC_REVERSE_SUBTRACT: 0x800B;\n    readonly BLEND_DST_RGB: 0x80C8;\n    readonly BLEND_SRC_RGB: 0x80C9;\n    readonly BLEND_DST_ALPHA: 0x80CA;\n    readonly BLEND_SRC_ALPHA: 0x80CB;\n    readonly CONSTANT_COLOR: 0x8001;\n    readonly ONE_MINUS_CONSTANT_COLOR: 0x8002;\n    readonly CONSTANT_ALPHA: 0x8003;\n    readonly ONE_MINUS_CONSTANT_ALPHA: 0x8004;\n    readonly BLEND_COLOR: 0x8005;\n    readonly ARRAY_BUFFER: 0x8892;\n    readonly ELEMENT_ARRAY_BUFFER: 0x8893;\n    readonly ARRAY_BUFFER_BINDING: 0x8894;\n    readonly ELEMENT_ARRAY_BUFFER_BINDING: 0x8895;\n    readonly STREAM_DRAW: 0x88E0;\n    readonly STATIC_DRAW: 0x88E4;\n    readonly DYNAMIC_DRAW: 0x88E8;\n    readonly BUFFER_SIZE: 0x8764;\n    readonly BUFFER_USAGE: 0x8765;\n    readonly CURRENT_VERTEX_ATTRIB: 0x8626;\n    readonly FRONT: 0x0404;\n    readonly BACK: 0x0405;\n    readonly FRONT_AND_BACK: 0x0408;\n    readonly CULL_FACE: 0x0B44;\n    readonly BLEND: 0x0BE2;\n    readonly DITHER: 0x0BD0;\n    readonly STENCIL_TEST: 0x0B90;\n    readonly DEPTH_TEST: 0x0B71;\n    readonly SCISSOR_TEST: 0x0C11;\n    readonly POLYGON_OFFSET_FILL: 0x8037;\n    readonly SAMPLE_ALPHA_TO_COVERAGE: 0x809E;\n    readonly SAMPLE_COVERAGE: 0x80A0;\n    readonly NO_ERROR: 0;\n    readonly INVALID_ENUM: 0x0500;\n    readonly INVALID_VALUE: 0x0501;\n    readonly INVALID_OPERATION: 0x0502;\n    readonly OUT_OF_MEMORY: 0x0505;\n    readonly CW: 0x0900;\n    readonly CCW: 0x0901;\n    readonly LINE_WIDTH: 0x0B21;\n    readonly ALIASED_POINT_SIZE_RANGE: 0x846D;\n    readonly ALIASED_LINE_WIDTH_RANGE: 0x846E;\n    readonly CULL_FACE_MODE: 0x0B45;\n    readonly FRONT_FACE: 0x0B46;\n    readonly DEPTH_RANGE: 0x0B70;\n    readonly DEPTH_WRITEMASK: 0x0B72;\n    readonly DEPTH_CLEAR_VALUE: 0x0B73;\n    readonly DEPTH_FUNC: 0x0B74;\n    readonly STENCIL_CLEAR_VALUE: 0x0B91;\n    readonly STENCIL_FUNC: 0x0B92;\n    readonly STENCIL_FAIL: 0x0B94;\n    readonly STENCIL_PASS_DEPTH_FAIL: 0x0B95;\n    readonly STENCIL_PASS_DEPTH_PASS: 0x0B96;\n    readonly STENCIL_REF: 0x0B97;\n    readonly STENCIL_VALUE_MASK: 0x0B93;\n    readonly STENCIL_WRITEMASK: 0x0B98;\n    readonly STENCIL_BACK_FUNC: 0x8800;\n    readonly STENCIL_BACK_FAIL: 0x8801;\n    readonly STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802;\n    readonly STENCIL_BACK_PASS_DEPTH_PASS: 0x8803;\n    readonly STENCIL_BACK_REF: 0x8CA3;\n    readonly STENCIL_BACK_VALUE_MASK: 0x8CA4;\n    readonly STENCIL_BACK_WRITEMASK: 0x8CA5;\n    readonly VIEWPORT: 0x0BA2;\n    readonly SCISSOR_BOX: 0x0C10;\n    readonly COLOR_CLEAR_VALUE: 0x0C22;\n    readonly COLOR_WRITEMASK: 0x0C23;\n    readonly UNPACK_ALIGNMENT: 0x0CF5;\n    readonly PACK_ALIGNMENT: 0x0D05;\n    readonly MAX_TEXTURE_SIZE: 0x0D33;\n    readonly MAX_VIEWPORT_DIMS: 0x0D3A;\n    readonly SUBPIXEL_BITS: 0x0D50;\n    readonly RED_BITS: 0x0D52;\n    readonly GREEN_BITS: 0x0D53;\n    readonly BLUE_BITS: 0x0D54;\n    readonly ALPHA_BITS: 0x0D55;\n    readonly DEPTH_BITS: 0x0D56;\n    readonly STENCIL_BITS: 0x0D57;\n    readonly POLYGON_OFFSET_UNITS: 0x2A00;\n    readonly POLYGON_OFFSET_FACTOR: 0x8038;\n    readonly TEXTURE_BINDING_2D: 0x8069;\n    readonly SAMPLE_BUFFERS: 0x80A8;\n    readonly SAMPLES: 0x80A9;\n    readonly SAMPLE_COVERAGE_VALUE: 0x80AA;\n    readonly SAMPLE_COVERAGE_INVERT: 0x80AB;\n    readonly COMPRESSED_TEXTURE_FORMATS: 0x86A3;\n    readonly DONT_CARE: 0x1100;\n    readonly FASTEST: 0x1101;\n    readonly NICEST: 0x1102;\n    readonly GENERATE_MIPMAP_HINT: 0x8192;\n    readonly BYTE: 0x1400;\n    readonly UNSIGNED_BYTE: 0x1401;\n    readonly SHORT: 0x1402;\n    readonly UNSIGNED_SHORT: 0x1403;\n    readonly INT: 0x1404;\n    readonly UNSIGNED_INT: 0x1405;\n    readonly FLOAT: 0x1406;\n    readonly DEPTH_COMPONENT: 0x1902;\n    readonly ALPHA: 0x1906;\n    readonly RGB: 0x1907;\n    readonly RGBA: 0x1908;\n    readonly LUMINANCE: 0x1909;\n    readonly LUMINANCE_ALPHA: 0x190A;\n    readonly UNSIGNED_SHORT_4_4_4_4: 0x8033;\n    readonly UNSIGNED_SHORT_5_5_5_1: 0x8034;\n    readonly UNSIGNED_SHORT_5_6_5: 0x8363;\n    readonly FRAGMENT_SHADER: 0x8B30;\n    readonly VERTEX_SHADER: 0x8B31;\n    readonly MAX_VERTEX_ATTRIBS: 0x8869;\n    readonly MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB;\n    readonly MAX_VARYING_VECTORS: 0x8DFC;\n    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D;\n    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C;\n    readonly MAX_TEXTURE_IMAGE_UNITS: 0x8872;\n    readonly MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD;\n    readonly SHADER_TYPE: 0x8B4F;\n    readonly DELETE_STATUS: 0x8B80;\n    readonly LINK_STATUS: 0x8B82;\n    readonly VALIDATE_STATUS: 0x8B83;\n    readonly ATTACHED_SHADERS: 0x8B85;\n    readonly ACTIVE_UNIFORMS: 0x8B86;\n    readonly ACTIVE_ATTRIBUTES: 0x8B89;\n    readonly SHADING_LANGUAGE_VERSION: 0x8B8C;\n    readonly CURRENT_PROGRAM: 0x8B8D;\n    readonly NEVER: 0x0200;\n    readonly LESS: 0x0201;\n    readonly EQUAL: 0x0202;\n    readonly LEQUAL: 0x0203;\n    readonly GREATER: 0x0204;\n    readonly NOTEQUAL: 0x0205;\n    readonly GEQUAL: 0x0206;\n    readonly ALWAYS: 0x0207;\n    readonly KEEP: 0x1E00;\n    readonly REPLACE: 0x1E01;\n    readonly INCR: 0x1E02;\n    readonly DECR: 0x1E03;\n    readonly INVERT: 0x150A;\n    readonly INCR_WRAP: 0x8507;\n    readonly DECR_WRAP: 0x8508;\n    readonly VENDOR: 0x1F00;\n    readonly RENDERER: 0x1F01;\n    readonly VERSION: 0x1F02;\n    readonly NEAREST: 0x2600;\n    readonly LINEAR: 0x2601;\n    readonly NEAREST_MIPMAP_NEAREST: 0x2700;\n    readonly LINEAR_MIPMAP_NEAREST: 0x2701;\n    readonly NEAREST_MIPMAP_LINEAR: 0x2702;\n    readonly LINEAR_MIPMAP_LINEAR: 0x2703;\n    readonly TEXTURE_MAG_FILTER: 0x2800;\n    readonly TEXTURE_MIN_FILTER: 0x2801;\n    readonly TEXTURE_WRAP_S: 0x2802;\n    readonly TEXTURE_WRAP_T: 0x2803;\n    readonly TEXTURE_2D: 0x0DE1;\n    readonly TEXTURE: 0x1702;\n    readonly TEXTURE_CUBE_MAP: 0x8513;\n    readonly TEXTURE_BINDING_CUBE_MAP: 0x8514;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A;\n    readonly MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C;\n    readonly TEXTURE0: 0x84C0;\n    readonly TEXTURE1: 0x84C1;\n    readonly TEXTURE2: 0x84C2;\n    readonly TEXTURE3: 0x84C3;\n    readonly TEXTURE4: 0x84C4;\n    readonly TEXTURE5: 0x84C5;\n    readonly TEXTURE6: 0x84C6;\n    readonly TEXTURE7: 0x84C7;\n    readonly TEXTURE8: 0x84C8;\n    readonly TEXTURE9: 0x84C9;\n    readonly TEXTURE10: 0x84CA;\n    readonly TEXTURE11: 0x84CB;\n    readonly TEXTURE12: 0x84CC;\n    readonly TEXTURE13: 0x84CD;\n    readonly TEXTURE14: 0x84CE;\n    readonly TEXTURE15: 0x84CF;\n    readonly TEXTURE16: 0x84D0;\n    readonly TEXTURE17: 0x84D1;\n    readonly TEXTURE18: 0x84D2;\n    readonly TEXTURE19: 0x84D3;\n    readonly TEXTURE20: 0x84D4;\n    readonly TEXTURE21: 0x84D5;\n    readonly TEXTURE22: 0x84D6;\n    readonly TEXTURE23: 0x84D7;\n    readonly TEXTURE24: 0x84D8;\n    readonly TEXTURE25: 0x84D9;\n    readonly TEXTURE26: 0x84DA;\n    readonly TEXTURE27: 0x84DB;\n    readonly TEXTURE28: 0x84DC;\n    readonly TEXTURE29: 0x84DD;\n    readonly TEXTURE30: 0x84DE;\n    readonly TEXTURE31: 0x84DF;\n    readonly ACTIVE_TEXTURE: 0x84E0;\n    readonly REPEAT: 0x2901;\n    readonly CLAMP_TO_EDGE: 0x812F;\n    readonly MIRRORED_REPEAT: 0x8370;\n    readonly FLOAT_VEC2: 0x8B50;\n    readonly FLOAT_VEC3: 0x8B51;\n    readonly FLOAT_VEC4: 0x8B52;\n    readonly INT_VEC2: 0x8B53;\n    readonly INT_VEC3: 0x8B54;\n    readonly INT_VEC4: 0x8B55;\n    readonly BOOL: 0x8B56;\n    readonly BOOL_VEC2: 0x8B57;\n    readonly BOOL_VEC3: 0x8B58;\n    readonly BOOL_VEC4: 0x8B59;\n    readonly FLOAT_MAT2: 0x8B5A;\n    readonly FLOAT_MAT3: 0x8B5B;\n    readonly FLOAT_MAT4: 0x8B5C;\n    readonly SAMPLER_2D: 0x8B5E;\n    readonly SAMPLER_CUBE: 0x8B60;\n    readonly VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622;\n    readonly VERTEX_ATTRIB_ARRAY_SIZE: 0x8623;\n    readonly VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624;\n    readonly VERTEX_ATTRIB_ARRAY_TYPE: 0x8625;\n    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A;\n    readonly VERTEX_ATTRIB_ARRAY_POINTER: 0x8645;\n    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F;\n    readonly IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A;\n    readonly IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B;\n    readonly COMPILE_STATUS: 0x8B81;\n    readonly LOW_FLOAT: 0x8DF0;\n    readonly MEDIUM_FLOAT: 0x8DF1;\n    readonly HIGH_FLOAT: 0x8DF2;\n    readonly LOW_INT: 0x8DF3;\n    readonly MEDIUM_INT: 0x8DF4;\n    readonly HIGH_INT: 0x8DF5;\n    readonly FRAMEBUFFER: 0x8D40;\n    readonly RENDERBUFFER: 0x8D41;\n    readonly RGBA4: 0x8056;\n    readonly RGB5_A1: 0x8057;\n    readonly RGB565: 0x8D62;\n    readonly DEPTH_COMPONENT16: 0x81A5;\n    readonly STENCIL_INDEX8: 0x8D48;\n    readonly DEPTH_STENCIL: 0x84F9;\n    readonly RENDERBUFFER_WIDTH: 0x8D42;\n    readonly RENDERBUFFER_HEIGHT: 0x8D43;\n    readonly RENDERBUFFER_INTERNAL_FORMAT: 0x8D44;\n    readonly RENDERBUFFER_RED_SIZE: 0x8D50;\n    readonly RENDERBUFFER_GREEN_SIZE: 0x8D51;\n    readonly RENDERBUFFER_BLUE_SIZE: 0x8D52;\n    readonly RENDERBUFFER_ALPHA_SIZE: 0x8D53;\n    readonly RENDERBUFFER_DEPTH_SIZE: 0x8D54;\n    readonly RENDERBUFFER_STENCIL_SIZE: 0x8D55;\n    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0;\n    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3;\n    readonly COLOR_ATTACHMENT0: 0x8CE0;\n    readonly DEPTH_ATTACHMENT: 0x8D00;\n    readonly STENCIL_ATTACHMENT: 0x8D20;\n    readonly DEPTH_STENCIL_ATTACHMENT: 0x821A;\n    readonly NONE: 0;\n    readonly FRAMEBUFFER_COMPLETE: 0x8CD5;\n    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6;\n    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7;\n    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9;\n    readonly FRAMEBUFFER_UNSUPPORTED: 0x8CDD;\n    readonly FRAMEBUFFER_BINDING: 0x8CA6;\n    readonly RENDERBUFFER_BINDING: 0x8CA7;\n    readonly MAX_RENDERBUFFER_SIZE: 0x84E8;\n    readonly INVALID_FRAMEBUFFER_OPERATION: 0x0506;\n    readonly UNPACK_FLIP_Y_WEBGL: 0x9240;\n    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241;\n    readonly CONTEXT_LOST_WEBGL: 0x9242;\n    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243;\n    readonly BROWSER_DEFAULT_WEBGL: 0x9244;\n};\n\ninterface WebGLRenderingContextBase {\n    readonly drawingBufferHeight: GLsizei;\n    readonly drawingBufferWidth: GLsizei;\n    activeTexture(texture: GLenum): void;\n    attachShader(program: WebGLProgram, shader: WebGLShader): void;\n    bindAttribLocation(program: WebGLProgram, index: GLuint, name: string): void;\n    bindBuffer(target: GLenum, buffer: WebGLBuffer | null): void;\n    bindFramebuffer(target: GLenum, framebuffer: WebGLFramebuffer | null): void;\n    bindRenderbuffer(target: GLenum, renderbuffer: WebGLRenderbuffer | null): void;\n    bindTexture(target: GLenum, texture: WebGLTexture | null): void;\n    blendColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;\n    blendEquation(mode: GLenum): void;\n    blendEquationSeparate(modeRGB: GLenum, modeAlpha: GLenum): void;\n    blendFunc(sfactor: GLenum, dfactor: GLenum): void;\n    blendFuncSeparate(srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum): void;\n    checkFramebufferStatus(target: GLenum): GLenum;\n    clear(mask: GLbitfield): void;\n    clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf): void;\n    clearDepth(depth: GLclampf): void;\n    clearStencil(s: GLint): void;\n    colorMask(red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean): void;\n    compileShader(shader: WebGLShader): void;\n    copyTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint): void;\n    copyTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;\n    createBuffer(): WebGLBuffer | null;\n    createFramebuffer(): WebGLFramebuffer | null;\n    createProgram(): WebGLProgram | null;\n    createRenderbuffer(): WebGLRenderbuffer | null;\n    createShader(type: GLenum): WebGLShader | null;\n    createTexture(): WebGLTexture | null;\n    cullFace(mode: GLenum): void;\n    deleteBuffer(buffer: WebGLBuffer | null): void;\n    deleteFramebuffer(framebuffer: WebGLFramebuffer | null): void;\n    deleteProgram(program: WebGLProgram | null): void;\n    deleteRenderbuffer(renderbuffer: WebGLRenderbuffer | null): void;\n    deleteShader(shader: WebGLShader | null): void;\n    deleteTexture(texture: WebGLTexture | null): void;\n    depthFunc(func: GLenum): void;\n    depthMask(flag: GLboolean): void;\n    depthRange(zNear: GLclampf, zFar: GLclampf): void;\n    detachShader(program: WebGLProgram, shader: WebGLShader): void;\n    disable(cap: GLenum): void;\n    disableVertexAttribArray(index: GLuint): void;\n    drawArrays(mode: GLenum, first: GLint, count: GLsizei): void;\n    drawElements(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr): void;\n    enable(cap: GLenum): void;\n    enableVertexAttribArray(index: GLuint): void;\n    finish(): void;\n    flush(): void;\n    framebufferRenderbuffer(target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: WebGLRenderbuffer | null): void;\n    framebufferTexture2D(target: GLenum, attachment: GLenum, textarget: GLenum, texture: WebGLTexture | null, level: GLint): void;\n    frontFace(mode: GLenum): void;\n    generateMipmap(target: GLenum): void;\n    getActiveAttrib(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;\n    getActiveUniform(program: WebGLProgram, index: GLuint): WebGLActiveInfo | null;\n    getAttachedShaders(program: WebGLProgram): WebGLShader[] | null;\n    getAttribLocation(program: WebGLProgram, name: string): GLint;\n    getBufferParameter(target: GLenum, pname: GLenum): any;\n    getContextAttributes(): WebGLContextAttributes | null;\n    getError(): GLenum;\n    getExtension(extensionName: \"ANGLE_instanced_arrays\"): ANGLE_instanced_arrays | null;\n    getExtension(extensionName: \"EXT_blend_minmax\"): EXT_blend_minmax | null;\n    getExtension(extensionName: \"EXT_color_buffer_float\"): EXT_color_buffer_float | null;\n    getExtension(extensionName: \"EXT_color_buffer_half_float\"): EXT_color_buffer_half_float | null;\n    getExtension(extensionName: \"EXT_float_blend\"): EXT_float_blend | null;\n    getExtension(extensionName: \"EXT_frag_depth\"): EXT_frag_depth | null;\n    getExtension(extensionName: \"EXT_sRGB\"): EXT_sRGB | null;\n    getExtension(extensionName: \"EXT_shader_texture_lod\"): EXT_shader_texture_lod | null;\n    getExtension(extensionName: \"EXT_texture_compression_bptc\"): EXT_texture_compression_bptc | null;\n    getExtension(extensionName: \"EXT_texture_compression_rgtc\"): EXT_texture_compression_rgtc | null;\n    getExtension(extensionName: \"EXT_texture_filter_anisotropic\"): EXT_texture_filter_anisotropic | null;\n    getExtension(extensionName: \"KHR_parallel_shader_compile\"): KHR_parallel_shader_compile | null;\n    getExtension(extensionName: \"OES_element_index_uint\"): OES_element_index_uint | null;\n    getExtension(extensionName: \"OES_fbo_render_mipmap\"): OES_fbo_render_mipmap | null;\n    getExtension(extensionName: \"OES_standard_derivatives\"): OES_standard_derivatives | null;\n    getExtension(extensionName: \"OES_texture_float\"): OES_texture_float | null;\n    getExtension(extensionName: \"OES_texture_float_linear\"): OES_texture_float_linear | null;\n    getExtension(extensionName: \"OES_texture_half_float\"): OES_texture_half_float | null;\n    getExtension(extensionName: \"OES_texture_half_float_linear\"): OES_texture_half_float_linear | null;\n    getExtension(extensionName: \"OES_vertex_array_object\"): OES_vertex_array_object | null;\n    getExtension(extensionName: \"OVR_multiview2\"): OVR_multiview2 | null;\n    getExtension(extensionName: \"WEBGL_color_buffer_float\"): WEBGL_color_buffer_float | null;\n    getExtension(extensionName: \"WEBGL_compressed_texture_astc\"): WEBGL_compressed_texture_astc | null;\n    getExtension(extensionName: \"WEBGL_compressed_texture_etc\"): WEBGL_compressed_texture_etc | null;\n    getExtension(extensionName: \"WEBGL_compressed_texture_etc1\"): WEBGL_compressed_texture_etc1 | null;\n    getExtension(extensionName: \"WEBGL_compressed_texture_s3tc\"): WEBGL_compressed_texture_s3tc | null;\n    getExtension(extensionName: \"WEBGL_compressed_texture_s3tc_srgb\"): WEBGL_compressed_texture_s3tc_srgb | null;\n    getExtension(extensionName: \"WEBGL_debug_renderer_info\"): WEBGL_debug_renderer_info | null;\n    getExtension(extensionName: \"WEBGL_debug_shaders\"): WEBGL_debug_shaders | null;\n    getExtension(extensionName: \"WEBGL_depth_texture\"): WEBGL_depth_texture | null;\n    getExtension(extensionName: \"WEBGL_draw_buffers\"): WEBGL_draw_buffers | null;\n    getExtension(extensionName: \"WEBGL_lose_context\"): WEBGL_lose_context | null;\n    getExtension(extensionName: \"WEBGL_multi_draw\"): WEBGL_multi_draw | null;\n    getExtension(name: string): any;\n    getFramebufferAttachmentParameter(target: GLenum, attachment: GLenum, pname: GLenum): any;\n    getParameter(pname: GLenum): any;\n    getProgramInfoLog(program: WebGLProgram): string | null;\n    getProgramParameter(program: WebGLProgram, pname: GLenum): any;\n    getRenderbufferParameter(target: GLenum, pname: GLenum): any;\n    getShaderInfoLog(shader: WebGLShader): string | null;\n    getShaderParameter(shader: WebGLShader, pname: GLenum): any;\n    getShaderPrecisionFormat(shadertype: GLenum, precisiontype: GLenum): WebGLShaderPrecisionFormat | null;\n    getShaderSource(shader: WebGLShader): string | null;\n    getSupportedExtensions(): string[] | null;\n    getTexParameter(target: GLenum, pname: GLenum): any;\n    getUniform(program: WebGLProgram, location: WebGLUniformLocation): any;\n    getUniformLocation(program: WebGLProgram, name: string): WebGLUniformLocation | null;\n    getVertexAttrib(index: GLuint, pname: GLenum): any;\n    getVertexAttribOffset(index: GLuint, pname: GLenum): GLintptr;\n    hint(target: GLenum, mode: GLenum): void;\n    isBuffer(buffer: WebGLBuffer | null): GLboolean;\n    isContextLost(): boolean;\n    isEnabled(cap: GLenum): GLboolean;\n    isFramebuffer(framebuffer: WebGLFramebuffer | null): GLboolean;\n    isProgram(program: WebGLProgram | null): GLboolean;\n    isRenderbuffer(renderbuffer: WebGLRenderbuffer | null): GLboolean;\n    isShader(shader: WebGLShader | null): GLboolean;\n    isTexture(texture: WebGLTexture | null): GLboolean;\n    lineWidth(width: GLfloat): void;\n    linkProgram(program: WebGLProgram): void;\n    pixelStorei(pname: GLenum, param: GLint | GLboolean): void;\n    polygonOffset(factor: GLfloat, units: GLfloat): void;\n    renderbufferStorage(target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei): void;\n    sampleCoverage(value: GLclampf, invert: GLboolean): void;\n    scissor(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;\n    shaderSource(shader: WebGLShader, source: string): void;\n    stencilFunc(func: GLenum, ref: GLint, mask: GLuint): void;\n    stencilFuncSeparate(face: GLenum, func: GLenum, ref: GLint, mask: GLuint): void;\n    stencilMask(mask: GLuint): void;\n    stencilMaskSeparate(face: GLenum, mask: GLuint): void;\n    stencilOp(fail: GLenum, zfail: GLenum, zpass: GLenum): void;\n    stencilOpSeparate(face: GLenum, fail: GLenum, zfail: GLenum, zpass: GLenum): void;\n    texParameterf(target: GLenum, pname: GLenum, param: GLfloat): void;\n    texParameteri(target: GLenum, pname: GLenum, param: GLint): void;\n    uniform1f(location: WebGLUniformLocation | null, x: GLfloat): void;\n    uniform1i(location: WebGLUniformLocation | null, x: GLint): void;\n    uniform2f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat): void;\n    uniform2i(location: WebGLUniformLocation | null, x: GLint, y: GLint): void;\n    uniform3f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat, z: GLfloat): void;\n    uniform3i(location: WebGLUniformLocation | null, x: GLint, y: GLint, z: GLint): void;\n    uniform4f(location: WebGLUniformLocation | null, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void;\n    uniform4i(location: WebGLUniformLocation | null, x: GLint, y: GLint, z: GLint, w: GLint): void;\n    useProgram(program: WebGLProgram | null): void;\n    validateProgram(program: WebGLProgram): void;\n    vertexAttrib1f(index: GLuint, x: GLfloat): void;\n    vertexAttrib1fv(index: GLuint, values: Float32List): void;\n    vertexAttrib2f(index: GLuint, x: GLfloat, y: GLfloat): void;\n    vertexAttrib2fv(index: GLuint, values: Float32List): void;\n    vertexAttrib3f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat): void;\n    vertexAttrib3fv(index: GLuint, values: Float32List): void;\n    vertexAttrib4f(index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat): void;\n    vertexAttrib4fv(index: GLuint, values: Float32List): void;\n    vertexAttribPointer(index: GLuint, size: GLint, type: GLenum, normalized: GLboolean, stride: GLsizei, offset: GLintptr): void;\n    viewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;\n    readonly DEPTH_BUFFER_BIT: 0x00000100;\n    readonly STENCIL_BUFFER_BIT: 0x00000400;\n    readonly COLOR_BUFFER_BIT: 0x00004000;\n    readonly POINTS: 0x0000;\n    readonly LINES: 0x0001;\n    readonly LINE_LOOP: 0x0002;\n    readonly LINE_STRIP: 0x0003;\n    readonly TRIANGLES: 0x0004;\n    readonly TRIANGLE_STRIP: 0x0005;\n    readonly TRIANGLE_FAN: 0x0006;\n    readonly ZERO: 0;\n    readonly ONE: 1;\n    readonly SRC_COLOR: 0x0300;\n    readonly ONE_MINUS_SRC_COLOR: 0x0301;\n    readonly SRC_ALPHA: 0x0302;\n    readonly ONE_MINUS_SRC_ALPHA: 0x0303;\n    readonly DST_ALPHA: 0x0304;\n    readonly ONE_MINUS_DST_ALPHA: 0x0305;\n    readonly DST_COLOR: 0x0306;\n    readonly ONE_MINUS_DST_COLOR: 0x0307;\n    readonly SRC_ALPHA_SATURATE: 0x0308;\n    readonly FUNC_ADD: 0x8006;\n    readonly BLEND_EQUATION: 0x8009;\n    readonly BLEND_EQUATION_RGB: 0x8009;\n    readonly BLEND_EQUATION_ALPHA: 0x883D;\n    readonly FUNC_SUBTRACT: 0x800A;\n    readonly FUNC_REVERSE_SUBTRACT: 0x800B;\n    readonly BLEND_DST_RGB: 0x80C8;\n    readonly BLEND_SRC_RGB: 0x80C9;\n    readonly BLEND_DST_ALPHA: 0x80CA;\n    readonly BLEND_SRC_ALPHA: 0x80CB;\n    readonly CONSTANT_COLOR: 0x8001;\n    readonly ONE_MINUS_CONSTANT_COLOR: 0x8002;\n    readonly CONSTANT_ALPHA: 0x8003;\n    readonly ONE_MINUS_CONSTANT_ALPHA: 0x8004;\n    readonly BLEND_COLOR: 0x8005;\n    readonly ARRAY_BUFFER: 0x8892;\n    readonly ELEMENT_ARRAY_BUFFER: 0x8893;\n    readonly ARRAY_BUFFER_BINDING: 0x8894;\n    readonly ELEMENT_ARRAY_BUFFER_BINDING: 0x8895;\n    readonly STREAM_DRAW: 0x88E0;\n    readonly STATIC_DRAW: 0x88E4;\n    readonly DYNAMIC_DRAW: 0x88E8;\n    readonly BUFFER_SIZE: 0x8764;\n    readonly BUFFER_USAGE: 0x8765;\n    readonly CURRENT_VERTEX_ATTRIB: 0x8626;\n    readonly FRONT: 0x0404;\n    readonly BACK: 0x0405;\n    readonly FRONT_AND_BACK: 0x0408;\n    readonly CULL_FACE: 0x0B44;\n    readonly BLEND: 0x0BE2;\n    readonly DITHER: 0x0BD0;\n    readonly STENCIL_TEST: 0x0B90;\n    readonly DEPTH_TEST: 0x0B71;\n    readonly SCISSOR_TEST: 0x0C11;\n    readonly POLYGON_OFFSET_FILL: 0x8037;\n    readonly SAMPLE_ALPHA_TO_COVERAGE: 0x809E;\n    readonly SAMPLE_COVERAGE: 0x80A0;\n    readonly NO_ERROR: 0;\n    readonly INVALID_ENUM: 0x0500;\n    readonly INVALID_VALUE: 0x0501;\n    readonly INVALID_OPERATION: 0x0502;\n    readonly OUT_OF_MEMORY: 0x0505;\n    readonly CW: 0x0900;\n    readonly CCW: 0x0901;\n    readonly LINE_WIDTH: 0x0B21;\n    readonly ALIASED_POINT_SIZE_RANGE: 0x846D;\n    readonly ALIASED_LINE_WIDTH_RANGE: 0x846E;\n    readonly CULL_FACE_MODE: 0x0B45;\n    readonly FRONT_FACE: 0x0B46;\n    readonly DEPTH_RANGE: 0x0B70;\n    readonly DEPTH_WRITEMASK: 0x0B72;\n    readonly DEPTH_CLEAR_VALUE: 0x0B73;\n    readonly DEPTH_FUNC: 0x0B74;\n    readonly STENCIL_CLEAR_VALUE: 0x0B91;\n    readonly STENCIL_FUNC: 0x0B92;\n    readonly STENCIL_FAIL: 0x0B94;\n    readonly STENCIL_PASS_DEPTH_FAIL: 0x0B95;\n    readonly STENCIL_PASS_DEPTH_PASS: 0x0B96;\n    readonly STENCIL_REF: 0x0B97;\n    readonly STENCIL_VALUE_MASK: 0x0B93;\n    readonly STENCIL_WRITEMASK: 0x0B98;\n    readonly STENCIL_BACK_FUNC: 0x8800;\n    readonly STENCIL_BACK_FAIL: 0x8801;\n    readonly STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802;\n    readonly STENCIL_BACK_PASS_DEPTH_PASS: 0x8803;\n    readonly STENCIL_BACK_REF: 0x8CA3;\n    readonly STENCIL_BACK_VALUE_MASK: 0x8CA4;\n    readonly STENCIL_BACK_WRITEMASK: 0x8CA5;\n    readonly VIEWPORT: 0x0BA2;\n    readonly SCISSOR_BOX: 0x0C10;\n    readonly COLOR_CLEAR_VALUE: 0x0C22;\n    readonly COLOR_WRITEMASK: 0x0C23;\n    readonly UNPACK_ALIGNMENT: 0x0CF5;\n    readonly PACK_ALIGNMENT: 0x0D05;\n    readonly MAX_TEXTURE_SIZE: 0x0D33;\n    readonly MAX_VIEWPORT_DIMS: 0x0D3A;\n    readonly SUBPIXEL_BITS: 0x0D50;\n    readonly RED_BITS: 0x0D52;\n    readonly GREEN_BITS: 0x0D53;\n    readonly BLUE_BITS: 0x0D54;\n    readonly ALPHA_BITS: 0x0D55;\n    readonly DEPTH_BITS: 0x0D56;\n    readonly STENCIL_BITS: 0x0D57;\n    readonly POLYGON_OFFSET_UNITS: 0x2A00;\n    readonly POLYGON_OFFSET_FACTOR: 0x8038;\n    readonly TEXTURE_BINDING_2D: 0x8069;\n    readonly SAMPLE_BUFFERS: 0x80A8;\n    readonly SAMPLES: 0x80A9;\n    readonly SAMPLE_COVERAGE_VALUE: 0x80AA;\n    readonly SAMPLE_COVERAGE_INVERT: 0x80AB;\n    readonly COMPRESSED_TEXTURE_FORMATS: 0x86A3;\n    readonly DONT_CARE: 0x1100;\n    readonly FASTEST: 0x1101;\n    readonly NICEST: 0x1102;\n    readonly GENERATE_MIPMAP_HINT: 0x8192;\n    readonly BYTE: 0x1400;\n    readonly UNSIGNED_BYTE: 0x1401;\n    readonly SHORT: 0x1402;\n    readonly UNSIGNED_SHORT: 0x1403;\n    readonly INT: 0x1404;\n    readonly UNSIGNED_INT: 0x1405;\n    readonly FLOAT: 0x1406;\n    readonly DEPTH_COMPONENT: 0x1902;\n    readonly ALPHA: 0x1906;\n    readonly RGB: 0x1907;\n    readonly RGBA: 0x1908;\n    readonly LUMINANCE: 0x1909;\n    readonly LUMINANCE_ALPHA: 0x190A;\n    readonly UNSIGNED_SHORT_4_4_4_4: 0x8033;\n    readonly UNSIGNED_SHORT_5_5_5_1: 0x8034;\n    readonly UNSIGNED_SHORT_5_6_5: 0x8363;\n    readonly FRAGMENT_SHADER: 0x8B30;\n    readonly VERTEX_SHADER: 0x8B31;\n    readonly MAX_VERTEX_ATTRIBS: 0x8869;\n    readonly MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB;\n    readonly MAX_VARYING_VECTORS: 0x8DFC;\n    readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D;\n    readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C;\n    readonly MAX_TEXTURE_IMAGE_UNITS: 0x8872;\n    readonly MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD;\n    readonly SHADER_TYPE: 0x8B4F;\n    readonly DELETE_STATUS: 0x8B80;\n    readonly LINK_STATUS: 0x8B82;\n    readonly VALIDATE_STATUS: 0x8B83;\n    readonly ATTACHED_SHADERS: 0x8B85;\n    readonly ACTIVE_UNIFORMS: 0x8B86;\n    readonly ACTIVE_ATTRIBUTES: 0x8B89;\n    readonly SHADING_LANGUAGE_VERSION: 0x8B8C;\n    readonly CURRENT_PROGRAM: 0x8B8D;\n    readonly NEVER: 0x0200;\n    readonly LESS: 0x0201;\n    readonly EQUAL: 0x0202;\n    readonly LEQUAL: 0x0203;\n    readonly GREATER: 0x0204;\n    readonly NOTEQUAL: 0x0205;\n    readonly GEQUAL: 0x0206;\n    readonly ALWAYS: 0x0207;\n    readonly KEEP: 0x1E00;\n    readonly REPLACE: 0x1E01;\n    readonly INCR: 0x1E02;\n    readonly DECR: 0x1E03;\n    readonly INVERT: 0x150A;\n    readonly INCR_WRAP: 0x8507;\n    readonly DECR_WRAP: 0x8508;\n    readonly VENDOR: 0x1F00;\n    readonly RENDERER: 0x1F01;\n    readonly VERSION: 0x1F02;\n    readonly NEAREST: 0x2600;\n    readonly LINEAR: 0x2601;\n    readonly NEAREST_MIPMAP_NEAREST: 0x2700;\n    readonly LINEAR_MIPMAP_NEAREST: 0x2701;\n    readonly NEAREST_MIPMAP_LINEAR: 0x2702;\n    readonly LINEAR_MIPMAP_LINEAR: 0x2703;\n    readonly TEXTURE_MAG_FILTER: 0x2800;\n    readonly TEXTURE_MIN_FILTER: 0x2801;\n    readonly TEXTURE_WRAP_S: 0x2802;\n    readonly TEXTURE_WRAP_T: 0x2803;\n    readonly TEXTURE_2D: 0x0DE1;\n    readonly TEXTURE: 0x1702;\n    readonly TEXTURE_CUBE_MAP: 0x8513;\n    readonly TEXTURE_BINDING_CUBE_MAP: 0x8514;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518;\n    readonly TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519;\n    readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A;\n    readonly MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C;\n    readonly TEXTURE0: 0x84C0;\n    readonly TEXTURE1: 0x84C1;\n    readonly TEXTURE2: 0x84C2;\n    readonly TEXTURE3: 0x84C3;\n    readonly TEXTURE4: 0x84C4;\n    readonly TEXTURE5: 0x84C5;\n    readonly TEXTURE6: 0x84C6;\n    readonly TEXTURE7: 0x84C7;\n    readonly TEXTURE8: 0x84C8;\n    readonly TEXTURE9: 0x84C9;\n    readonly TEXTURE10: 0x84CA;\n    readonly TEXTURE11: 0x84CB;\n    readonly TEXTURE12: 0x84CC;\n    readonly TEXTURE13: 0x84CD;\n    readonly TEXTURE14: 0x84CE;\n    readonly TEXTURE15: 0x84CF;\n    readonly TEXTURE16: 0x84D0;\n    readonly TEXTURE17: 0x84D1;\n    readonly TEXTURE18: 0x84D2;\n    readonly TEXTURE19: 0x84D3;\n    readonly TEXTURE20: 0x84D4;\n    readonly TEXTURE21: 0x84D5;\n    readonly TEXTURE22: 0x84D6;\n    readonly TEXTURE23: 0x84D7;\n    readonly TEXTURE24: 0x84D8;\n    readonly TEXTURE25: 0x84D9;\n    readonly TEXTURE26: 0x84DA;\n    readonly TEXTURE27: 0x84DB;\n    readonly TEXTURE28: 0x84DC;\n    readonly TEXTURE29: 0x84DD;\n    readonly TEXTURE30: 0x84DE;\n    readonly TEXTURE31: 0x84DF;\n    readonly ACTIVE_TEXTURE: 0x84E0;\n    readonly REPEAT: 0x2901;\n    readonly CLAMP_TO_EDGE: 0x812F;\n    readonly MIRRORED_REPEAT: 0x8370;\n    readonly FLOAT_VEC2: 0x8B50;\n    readonly FLOAT_VEC3: 0x8B51;\n    readonly FLOAT_VEC4: 0x8B52;\n    readonly INT_VEC2: 0x8B53;\n    readonly INT_VEC3: 0x8B54;\n    readonly INT_VEC4: 0x8B55;\n    readonly BOOL: 0x8B56;\n    readonly BOOL_VEC2: 0x8B57;\n    readonly BOOL_VEC3: 0x8B58;\n    readonly BOOL_VEC4: 0x8B59;\n    readonly FLOAT_MAT2: 0x8B5A;\n    readonly FLOAT_MAT3: 0x8B5B;\n    readonly FLOAT_MAT4: 0x8B5C;\n    readonly SAMPLER_2D: 0x8B5E;\n    readonly SAMPLER_CUBE: 0x8B60;\n    readonly VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622;\n    readonly VERTEX_ATTRIB_ARRAY_SIZE: 0x8623;\n    readonly VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624;\n    readonly VERTEX_ATTRIB_ARRAY_TYPE: 0x8625;\n    readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A;\n    readonly VERTEX_ATTRIB_ARRAY_POINTER: 0x8645;\n    readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F;\n    readonly IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A;\n    readonly IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B;\n    readonly COMPILE_STATUS: 0x8B81;\n    readonly LOW_FLOAT: 0x8DF0;\n    readonly MEDIUM_FLOAT: 0x8DF1;\n    readonly HIGH_FLOAT: 0x8DF2;\n    readonly LOW_INT: 0x8DF3;\n    readonly MEDIUM_INT: 0x8DF4;\n    readonly HIGH_INT: 0x8DF5;\n    readonly FRAMEBUFFER: 0x8D40;\n    readonly RENDERBUFFER: 0x8D41;\n    readonly RGBA4: 0x8056;\n    readonly RGB5_A1: 0x8057;\n    readonly RGB565: 0x8D62;\n    readonly DEPTH_COMPONENT16: 0x81A5;\n    readonly STENCIL_INDEX8: 0x8D48;\n    readonly DEPTH_STENCIL: 0x84F9;\n    readonly RENDERBUFFER_WIDTH: 0x8D42;\n    readonly RENDERBUFFER_HEIGHT: 0x8D43;\n    readonly RENDERBUFFER_INTERNAL_FORMAT: 0x8D44;\n    readonly RENDERBUFFER_RED_SIZE: 0x8D50;\n    readonly RENDERBUFFER_GREEN_SIZE: 0x8D51;\n    readonly RENDERBUFFER_BLUE_SIZE: 0x8D52;\n    readonly RENDERBUFFER_ALPHA_SIZE: 0x8D53;\n    readonly RENDERBUFFER_DEPTH_SIZE: 0x8D54;\n    readonly RENDERBUFFER_STENCIL_SIZE: 0x8D55;\n    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0;\n    readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2;\n    readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3;\n    readonly COLOR_ATTACHMENT0: 0x8CE0;\n    readonly DEPTH_ATTACHMENT: 0x8D00;\n    readonly STENCIL_ATTACHMENT: 0x8D20;\n    readonly DEPTH_STENCIL_ATTACHMENT: 0x821A;\n    readonly NONE: 0;\n    readonly FRAMEBUFFER_COMPLETE: 0x8CD5;\n    readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6;\n    readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7;\n    readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9;\n    readonly FRAMEBUFFER_UNSUPPORTED: 0x8CDD;\n    readonly FRAMEBUFFER_BINDING: 0x8CA6;\n    readonly RENDERBUFFER_BINDING: 0x8CA7;\n    readonly MAX_RENDERBUFFER_SIZE: 0x84E8;\n    readonly INVALID_FRAMEBUFFER_OPERATION: 0x0506;\n    readonly UNPACK_FLIP_Y_WEBGL: 0x9240;\n    readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241;\n    readonly CONTEXT_LOST_WEBGL: 0x9242;\n    readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243;\n    readonly BROWSER_DEFAULT_WEBGL: 0x9244;\n}\n\ninterface WebGLRenderingContextOverloads {\n    bufferData(target: GLenum, size: GLsizeiptr, usage: GLenum): void;\n    bufferData(target: GLenum, data: BufferSource | null, usage: GLenum): void;\n    bufferSubData(target: GLenum, offset: GLintptr, data: BufferSource): void;\n    compressedTexImage2D(target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, data: ArrayBufferView): void;\n    compressedTexSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, data: ArrayBufferView): void;\n    readPixels(x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;\n    texImage2D(target: GLenum, level: GLint, internalformat: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type: GLenum, pixels: ArrayBufferView | null): void;\n    texSubImage2D(target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, format: GLenum, type: GLenum, source: TexImageSource): void;\n    uniform1fv(location: WebGLUniformLocation | null, v: Float32List): void;\n    uniform1iv(location: WebGLUniformLocation | null, v: Int32List): void;\n    uniform2fv(location: WebGLUniformLocation | null, v: Float32List): void;\n    uniform2iv(location: WebGLUniformLocation | null, v: Int32List): void;\n    uniform3fv(location: WebGLUniformLocation | null, v: Float32List): void;\n    uniform3iv(location: WebGLUniformLocation | null, v: Int32List): void;\n    uniform4fv(location: WebGLUniformLocation | null, v: Float32List): void;\n    uniform4iv(location: WebGLUniformLocation | null, v: Int32List): void;\n    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;\n    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;\n    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Float32List): void;\n}\n\ninterface WebGLSampler {\n}\n\ndeclare var WebGLSampler: {\n    prototype: WebGLSampler;\n    new(): WebGLSampler;\n};\n\n/** The WebGLShader is part of the WebGL API and can either be a vertex or a fragment shader. A WebGLProgram requires both types of shaders. */\ninterface WebGLShader {\n}\n\ndeclare var WebGLShader: {\n    prototype: WebGLShader;\n    new(): WebGLShader;\n};\n\n/** Part of the WebGL API and represents the information returned by calling the WebGLRenderingContext.getShaderPrecisionFormat() method. */\ninterface WebGLShaderPrecisionFormat {\n    readonly precision: GLint;\n    readonly rangeMax: GLint;\n    readonly rangeMin: GLint;\n}\n\ndeclare var WebGLShaderPrecisionFormat: {\n    prototype: WebGLShaderPrecisionFormat;\n    new(): WebGLShaderPrecisionFormat;\n};\n\ninterface WebGLSync {\n}\n\ndeclare var WebGLSync: {\n    prototype: WebGLSync;\n    new(): WebGLSync;\n};\n\n/** Part of the WebGL API and represents an opaque texture object providing storage and state for texturing operations. */\ninterface WebGLTexture {\n}\n\ndeclare var WebGLTexture: {\n    prototype: WebGLTexture;\n    new(): WebGLTexture;\n};\n\ninterface WebGLTransformFeedback {\n}\n\ndeclare var WebGLTransformFeedback: {\n    prototype: WebGLTransformFeedback;\n    new(): WebGLTransformFeedback;\n};\n\n/** Part of the WebGL API and represents the location of a uniform variable in a shader program. */\ninterface WebGLUniformLocation {\n}\n\ndeclare var WebGLUniformLocation: {\n    prototype: WebGLUniformLocation;\n    new(): WebGLUniformLocation;\n};\n\ninterface WebGLVertexArrayObject {\n}\n\ndeclare var WebGLVertexArrayObject: {\n    prototype: WebGLVertexArrayObject;\n    new(): WebGLVertexArrayObject;\n};\n\ninterface WebGLVertexArrayObjectOES {\n}\n\ninterface WebSocketEventMap {\n    \"close\": CloseEvent;\n    \"error\": Event;\n    \"message\": MessageEvent;\n    \"open\": Event;\n}\n\n/** Provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. */\ninterface WebSocket extends EventTarget {\n    /**\n     * Returns a string that indicates how binary data from the WebSocket object is exposed to scripts:\n     *\n     * Can be set, to change how binary data is returned. The default is \"blob\".\n     */\n    binaryType: BinaryType;\n    /**\n     * Returns the number of bytes of application data (UTF-8 text and binary data) that have been queued using send() but not yet been transmitted to the network.\n     *\n     * If the WebSocket connection is closed, this attribute's value will only increase with each call to the send() method. (The number does not reset to zero once the connection closes.)\n     */\n    readonly bufferedAmount: number;\n    /** Returns the extensions selected by the server, if any. */\n    readonly extensions: string;\n    onclose: ((this: WebSocket, ev: CloseEvent) => any) | null;\n    onerror: ((this: WebSocket, ev: Event) => any) | null;\n    onmessage: ((this: WebSocket, ev: MessageEvent) => any) | null;\n    onopen: ((this: WebSocket, ev: Event) => any) | null;\n    /** Returns the subprotocol selected by the server, if any. It can be used in conjunction with the array form of the constructor's second argument to perform subprotocol negotiation. */\n    readonly protocol: string;\n    /** Returns the state of the WebSocket object's connection. It can have the values described below. */\n    readonly readyState: number;\n    /** Returns the URL that was used to establish the WebSocket connection. */\n    readonly url: string;\n    /** Closes the WebSocket connection, optionally using code as the the WebSocket connection close code and reason as the the WebSocket connection close reason. */\n    close(code?: number, reason?: string): void;\n    /** Transmits data using the WebSocket connection. data can be a string, a Blob, an ArrayBuffer, or an ArrayBufferView. */\n    send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;\n    readonly CONNECTING: 0;\n    readonly OPEN: 1;\n    readonly CLOSING: 2;\n    readonly CLOSED: 3;\n    addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var WebSocket: {\n    prototype: WebSocket;\n    new(url: string | URL, protocols?: string | string[]): WebSocket;\n    readonly CONNECTING: 0;\n    readonly OPEN: 1;\n    readonly CLOSING: 2;\n    readonly CLOSED: 3;\n};\n\n/** This ServiceWorker API interface represents the scope of a service worker client that is a document in a browser context, controlled by an active worker. The service worker client independently selects and uses a service worker for its own loading and sub-resources. */\ninterface WindowClient extends Client {\n    readonly focused: boolean;\n    readonly visibilityState: DocumentVisibilityState;\n    focus(): Promise<WindowClient>;\n    navigate(url: string | URL): Promise<WindowClient | null>;\n}\n\ndeclare var WindowClient: {\n    prototype: WindowClient;\n    new(): WindowClient;\n};\n\ninterface WindowOrWorkerGlobalScope {\n    /** Available only in secure contexts. */\n    readonly caches: CacheStorage;\n    readonly crossOriginIsolated: boolean;\n    readonly crypto: Crypto;\n    readonly indexedDB: IDBFactory;\n    readonly isSecureContext: boolean;\n    readonly origin: string;\n    readonly performance: Performance;\n    atob(data: string): string;\n    btoa(data: string): string;\n    clearInterval(id: number | undefined): void;\n    clearTimeout(id: number | undefined): void;\n    createImageBitmap(image: ImageBitmapSource, options?: ImageBitmapOptions): Promise<ImageBitmap>;\n    createImageBitmap(image: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number, options?: ImageBitmapOptions): Promise<ImageBitmap>;\n    fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;\n    queueMicrotask(callback: VoidFunction): void;\n    reportError(e: any): void;\n    setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;\n    setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;\n    structuredClone(value: any, options?: StructuredSerializeOptions): any;\n}\n\ninterface WorkerEventMap extends AbstractWorkerEventMap {\n    \"message\": MessageEvent;\n    \"messageerror\": MessageEvent;\n}\n\n/** This Web Workers API interface represents a background task that can be easily created and can send messages back to its creator. Creating a worker is as simple as calling the Worker() constructor and specifying a script to be run in the worker thread. */\ninterface Worker extends EventTarget, AbstractWorker {\n    onmessage: ((this: Worker, ev: MessageEvent) => any) | null;\n    onmessageerror: ((this: Worker, ev: MessageEvent) => any) | null;\n    /** Clones message and transmits it to worker's global environment. transfer can be passed as a list of objects that are to be transferred rather than cloned. */\n    postMessage(message: any, transfer: Transferable[]): void;\n    postMessage(message: any, options?: StructuredSerializeOptions): void;\n    /** Aborts worker's associated global environment. */\n    terminate(): void;\n    addEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: Worker, ev: WorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof WorkerEventMap>(type: K, listener: (this: Worker, ev: WorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Worker: {\n    prototype: Worker;\n    new(scriptURL: string | URL, options?: WorkerOptions): Worker;\n};\n\ninterface WorkerGlobalScopeEventMap {\n    \"error\": ErrorEvent;\n    \"languagechange\": Event;\n    \"offline\": Event;\n    \"online\": Event;\n    \"rejectionhandled\": PromiseRejectionEvent;\n    \"unhandledrejection\": PromiseRejectionEvent;\n}\n\n/** This Web Workers API interface is an interface representing the scope of any worker. Workers have no browsing context; this scope contains the information usually conveyed by Window objects \\u2014 in this case event handlers, the console or the associated WorkerNavigator object. Each WorkerGlobalScope has its own event loop. */\ninterface WorkerGlobalScope extends EventTarget, FontFaceSource, WindowOrWorkerGlobalScope {\n    /** Returns workerGlobal's WorkerLocation object. */\n    readonly location: WorkerLocation;\n    /** Returns workerGlobal's WorkerNavigator object. */\n    readonly navigator: WorkerNavigator;\n    onerror: ((this: WorkerGlobalScope, ev: ErrorEvent) => any) | null;\n    onlanguagechange: ((this: WorkerGlobalScope, ev: Event) => any) | null;\n    onoffline: ((this: WorkerGlobalScope, ev: Event) => any) | null;\n    ononline: ((this: WorkerGlobalScope, ev: Event) => any) | null;\n    onrejectionhandled: ((this: WorkerGlobalScope, ev: PromiseRejectionEvent) => any) | null;\n    onunhandledrejection: ((this: WorkerGlobalScope, ev: PromiseRejectionEvent) => any) | null;\n    /** Returns workerGlobal. */\n    readonly self: WorkerGlobalScope & typeof globalThis;\n    /** Fetches each URL in urls, executes them one-by-one in the order they are passed, and then returns (or throws if something went amiss). */\n    importScripts(...urls: (string | URL)[]): void;\n    addEventListener<K extends keyof WorkerGlobalScopeEventMap>(type: K, listener: (this: WorkerGlobalScope, ev: WorkerGlobalScopeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof WorkerGlobalScopeEventMap>(type: K, listener: (this: WorkerGlobalScope, ev: WorkerGlobalScopeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var WorkerGlobalScope: {\n    prototype: WorkerGlobalScope;\n    new(): WorkerGlobalScope;\n};\n\n/** The absolute location of the script executed by the Worker. Such an object is initialized for each worker and is available via the WorkerGlobalScope.location property obtained by calling self.location. */\ninterface WorkerLocation {\n    readonly hash: string;\n    readonly host: string;\n    readonly hostname: string;\n    readonly href: string;\n    toString(): string;\n    readonly origin: string;\n    readonly pathname: string;\n    readonly port: string;\n    readonly protocol: string;\n    readonly search: string;\n}\n\ndeclare var WorkerLocation: {\n    prototype: WorkerLocation;\n    new(): WorkerLocation;\n};\n\n/** A subset of the Navigator interface allowed to be accessed from a Worker. Such an object is initialized for each worker and is available via the WorkerGlobalScope.navigator property obtained by calling window.self.navigator. */\ninterface WorkerNavigator extends NavigatorConcurrentHardware, NavigatorID, NavigatorLanguage, NavigatorLocks, NavigatorOnLine, NavigatorStorage {\n    readonly mediaCapabilities: MediaCapabilities;\n}\n\ndeclare var WorkerNavigator: {\n    prototype: WorkerNavigator;\n    new(): WorkerNavigator;\n};\n\n/** This Streams API interface provides\\xA0a standard abstraction for writing streaming data to a destination, known as a sink. This object comes with built-in backpressure and queuing. */\ninterface WritableStream<W = any> {\n    readonly locked: boolean;\n    abort(reason?: any): Promise<void>;\n    close(): Promise<void>;\n    getWriter(): WritableStreamDefaultWriter<W>;\n}\n\ndeclare var WritableStream: {\n    prototype: WritableStream;\n    new<W = any>(underlyingSink?: UnderlyingSink<W>, strategy?: QueuingStrategy<W>): WritableStream<W>;\n};\n\n/** This Streams API interface represents a controller allowing control of a\\xA0WritableStream's state. When constructing a WritableStream, the underlying sink is given a corresponding WritableStreamDefaultController instance to manipulate. */\ninterface WritableStreamDefaultController {\n    readonly signal: AbortSignal;\n    error(e?: any): void;\n}\n\ndeclare var WritableStreamDefaultController: {\n    prototype: WritableStreamDefaultController;\n    new(): WritableStreamDefaultController;\n};\n\n/** This Streams API interface is the object returned by WritableStream.getWriter() and once created locks the < writer to the WritableStream ensuring that no other streams can write to the underlying sink. */\ninterface WritableStreamDefaultWriter<W = any> {\n    readonly closed: Promise<undefined>;\n    readonly desiredSize: number | null;\n    readonly ready: Promise<undefined>;\n    abort(reason?: any): Promise<void>;\n    close(): Promise<void>;\n    releaseLock(): void;\n    write(chunk?: W): Promise<void>;\n}\n\ndeclare var WritableStreamDefaultWriter: {\n    prototype: WritableStreamDefaultWriter;\n    new<W = any>(stream: WritableStream<W>): WritableStreamDefaultWriter<W>;\n};\n\ninterface XMLHttpRequestEventMap extends XMLHttpRequestEventTargetEventMap {\n    \"readystatechange\": Event;\n}\n\n/** Use XMLHttpRequest (XHR) objects to interact with servers. You can retrieve data from a URL without having to do a full page refresh. This enables a Web page to update just part of a page without disrupting what the user is doing. */\ninterface XMLHttpRequest extends XMLHttpRequestEventTarget {\n    onreadystatechange: ((this: XMLHttpRequest, ev: Event) => any) | null;\n    /** Returns client's state. */\n    readonly readyState: number;\n    /** Returns the response body. */\n    readonly response: any;\n    /**\n     * Returns response as text.\n     *\n     * Throws an \"InvalidStateError\" DOMException if responseType is not the empty string or \"text\".\n     */\n    readonly responseText: string;\n    /**\n     * Returns the response type.\n     *\n     * Can be set to change the response type. Values are: the empty string (default), \"arraybuffer\", \"blob\", \"document\", \"json\", and \"text\".\n     *\n     * When set: setting to \"document\" is ignored if current global object is not a Window object.\n     *\n     * When set: throws an \"InvalidStateError\" DOMException if state is loading or done.\n     *\n     * When set: throws an \"InvalidAccessError\" DOMException if the synchronous flag is set and current global object is a Window object.\n     */\n    responseType: XMLHttpRequestResponseType;\n    readonly responseURL: string;\n    readonly status: number;\n    readonly statusText: string;\n    /**\n     * Can be set to a time in milliseconds. When set to a non-zero value will cause fetching to terminate after the given time has passed. When the time has passed, the request has not yet completed, and this's synchronous flag is unset, a timeout event will then be dispatched, or a \"TimeoutError\" DOMException will be thrown otherwise (for the send() method).\n     *\n     * When set: throws an \"InvalidAccessError\" DOMException if the synchronous flag is set and current global object is a Window object.\n     */\n    timeout: number;\n    /** Returns the associated XMLHttpRequestUpload object. It can be used to gather transmission information when data is transferred to a server. */\n    readonly upload: XMLHttpRequestUpload;\n    /**\n     * True when credentials are to be included in a cross-origin request. False when they are to be excluded in a cross-origin request and when cookies are to be ignored in its response. Initially false.\n     *\n     * When set: throws an \"InvalidStateError\" DOMException if state is not unsent or opened, or if the send() flag is set.\n     */\n    withCredentials: boolean;\n    /** Cancels any network activity. */\n    abort(): void;\n    getAllResponseHeaders(): string;\n    getResponseHeader(name: string): string | null;\n    /**\n     * Sets the request method, request URL, and synchronous flag.\n     *\n     * Throws a \"SyntaxError\" DOMException if either method is not a valid method or url cannot be parsed.\n     *\n     * Throws a \"SecurityError\" DOMException if method is a case-insensitive match for \\`CONNECT\\`, \\`TRACE\\`, or \\`TRACK\\`.\n     *\n     * Throws an \"InvalidAccessError\" DOMException if async is false, current global object is a Window object, and the timeout attribute is not zero or the responseType attribute is not the empty string.\n     */\n    open(method: string, url: string | URL): void;\n    open(method: string, url: string | URL, async: boolean, username?: string | null, password?: string | null): void;\n    /**\n     * Acts as if the \\`Content-Type\\` header value for a response is mime. (It does not change the header.)\n     *\n     * Throws an \"InvalidStateError\" DOMException if state is loading or done.\n     */\n    overrideMimeType(mime: string): void;\n    /**\n     * Initiates the request. The body argument provides the request body, if any, and is ignored if the request method is GET or HEAD.\n     *\n     * Throws an \"InvalidStateError\" DOMException if either state is not opened or the send() flag is set.\n     */\n    send(body?: XMLHttpRequestBodyInit | null): void;\n    /**\n     * Combines a header in author request headers.\n     *\n     * Throws an \"InvalidStateError\" DOMException if either state is not opened or the send() flag is set.\n     *\n     * Throws a \"SyntaxError\" DOMException if name is not a header name or if value is not a header value.\n     */\n    setRequestHeader(name: string, value: string): void;\n    readonly UNSENT: 0;\n    readonly OPENED: 1;\n    readonly HEADERS_RECEIVED: 2;\n    readonly LOADING: 3;\n    readonly DONE: 4;\n    addEventListener<K extends keyof XMLHttpRequestEventMap>(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof XMLHttpRequestEventMap>(type: K, listener: (this: XMLHttpRequest, ev: XMLHttpRequestEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var XMLHttpRequest: {\n    prototype: XMLHttpRequest;\n    new(): XMLHttpRequest;\n    readonly UNSENT: 0;\n    readonly OPENED: 1;\n    readonly HEADERS_RECEIVED: 2;\n    readonly LOADING: 3;\n    readonly DONE: 4;\n};\n\ninterface XMLHttpRequestEventTargetEventMap {\n    \"abort\": ProgressEvent<XMLHttpRequestEventTarget>;\n    \"error\": ProgressEvent<XMLHttpRequestEventTarget>;\n    \"load\": ProgressEvent<XMLHttpRequestEventTarget>;\n    \"loadend\": ProgressEvent<XMLHttpRequestEventTarget>;\n    \"loadstart\": ProgressEvent<XMLHttpRequestEventTarget>;\n    \"progress\": ProgressEvent<XMLHttpRequestEventTarget>;\n    \"timeout\": ProgressEvent<XMLHttpRequestEventTarget>;\n}\n\ninterface XMLHttpRequestEventTarget extends EventTarget {\n    onabort: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    onerror: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    onload: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    onloadend: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    onloadstart: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    onprogress: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    ontimeout: ((this: XMLHttpRequest, ev: ProgressEvent) => any) | null;\n    addEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestEventTarget, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestEventTarget, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var XMLHttpRequestEventTarget: {\n    prototype: XMLHttpRequestEventTarget;\n    new(): XMLHttpRequestEventTarget;\n};\n\ninterface XMLHttpRequestUpload extends XMLHttpRequestEventTarget {\n    addEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestUpload, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n    removeEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestUpload, ev: XMLHttpRequestEventTargetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var XMLHttpRequestUpload: {\n    prototype: XMLHttpRequestUpload;\n    new(): XMLHttpRequestUpload;\n};\n\ninterface Console {\n    assert(condition?: boolean, ...data: any[]): void;\n    clear(): void;\n    count(label?: string): void;\n    countReset(label?: string): void;\n    debug(...data: any[]): void;\n    dir(item?: any, options?: any): void;\n    dirxml(...data: any[]): void;\n    error(...data: any[]): void;\n    group(...data: any[]): void;\n    groupCollapsed(...data: any[]): void;\n    groupEnd(): void;\n    info(...data: any[]): void;\n    log(...data: any[]): void;\n    table(tabularData?: any, properties?: string[]): void;\n    time(label?: string): void;\n    timeEnd(label?: string): void;\n    timeLog(label?: string, ...data: any[]): void;\n    timeStamp(label?: string): void;\n    trace(...data: any[]): void;\n    warn(...data: any[]): void;\n}\n\ndeclare var console: Console;\n\ndeclare namespace WebAssembly {\n    interface CompileError extends Error {\n    }\n\n    var CompileError: {\n        prototype: CompileError;\n        new(message?: string): CompileError;\n        (message?: string): CompileError;\n    };\n\n    interface Global {\n        value: any;\n        valueOf(): any;\n    }\n\n    var Global: {\n        prototype: Global;\n        new(descriptor: GlobalDescriptor, v?: any): Global;\n    };\n\n    interface Instance {\n        readonly exports: Exports;\n    }\n\n    var Instance: {\n        prototype: Instance;\n        new(module: Module, importObject?: Imports): Instance;\n    };\n\n    interface LinkError extends Error {\n    }\n\n    var LinkError: {\n        prototype: LinkError;\n        new(message?: string): LinkError;\n        (message?: string): LinkError;\n    };\n\n    interface Memory {\n        readonly buffer: ArrayBuffer;\n        grow(delta: number): number;\n    }\n\n    var Memory: {\n        prototype: Memory;\n        new(descriptor: MemoryDescriptor): Memory;\n    };\n\n    interface Module {\n    }\n\n    var Module: {\n        prototype: Module;\n        new(bytes: BufferSource): Module;\n        customSections(moduleObject: Module, sectionName: string): ArrayBuffer[];\n        exports(moduleObject: Module): ModuleExportDescriptor[];\n        imports(moduleObject: Module): ModuleImportDescriptor[];\n    };\n\n    interface RuntimeError extends Error {\n    }\n\n    var RuntimeError: {\n        prototype: RuntimeError;\n        new(message?: string): RuntimeError;\n        (message?: string): RuntimeError;\n    };\n\n    interface Table {\n        readonly length: number;\n        get(index: number): any;\n        grow(delta: number, value?: any): number;\n        set(index: number, value?: any): void;\n    }\n\n    var Table: {\n        prototype: Table;\n        new(descriptor: TableDescriptor, value?: any): Table;\n    };\n\n    interface GlobalDescriptor {\n        mutable?: boolean;\n        value: ValueType;\n    }\n\n    interface MemoryDescriptor {\n        initial: number;\n        maximum?: number;\n        shared?: boolean;\n    }\n\n    interface ModuleExportDescriptor {\n        kind: ImportExportKind;\n        name: string;\n    }\n\n    interface ModuleImportDescriptor {\n        kind: ImportExportKind;\n        module: string;\n        name: string;\n    }\n\n    interface TableDescriptor {\n        element: TableKind;\n        initial: number;\n        maximum?: number;\n    }\n\n    interface WebAssemblyInstantiatedSource {\n        instance: Instance;\n        module: Module;\n    }\n\n    type ImportExportKind = \"function\" | \"global\" | \"memory\" | \"table\";\n    type TableKind = \"anyfunc\" | \"externref\";\n    type ValueType = \"anyfunc\" | \"externref\" | \"f32\" | \"f64\" | \"i32\" | \"i64\" | \"v128\";\n    type ExportValue = Function | Global | Memory | Table;\n    type Exports = Record<string, ExportValue>;\n    type ImportValue = ExportValue | number;\n    type Imports = Record<string, ModuleImports>;\n    type ModuleImports = Record<string, ImportValue>;\n    function compile(bytes: BufferSource): Promise<Module>;\n    function compileStreaming(source: Response | PromiseLike<Response>): Promise<Module>;\n    function instantiate(bytes: BufferSource, importObject?: Imports): Promise<WebAssemblyInstantiatedSource>;\n    function instantiate(moduleObject: Module, importObject?: Imports): Promise<Instance>;\n    function instantiateStreaming(source: Response | PromiseLike<Response>, importObject?: Imports): Promise<WebAssemblyInstantiatedSource>;\n    function validate(bytes: BufferSource): boolean;\n}\n\ninterface FrameRequestCallback {\n    (time: DOMHighResTimeStamp): void;\n}\n\ninterface LockGrantedCallback {\n    (lock: Lock | null): any;\n}\n\ninterface OnErrorEventHandlerNonNull {\n    (event: Event | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n}\n\ninterface PerformanceObserverCallback {\n    (entries: PerformanceObserverEntryList, observer: PerformanceObserver): void;\n}\n\ninterface QueuingStrategySize<T = any> {\n    (chunk: T): number;\n}\n\ninterface TransformerFlushCallback<O> {\n    (controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;\n}\n\ninterface TransformerStartCallback<O> {\n    (controller: TransformStreamDefaultController<O>): any;\n}\n\ninterface TransformerTransformCallback<I, O> {\n    (chunk: I, controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;\n}\n\ninterface UnderlyingSinkAbortCallback {\n    (reason?: any): void | PromiseLike<void>;\n}\n\ninterface UnderlyingSinkCloseCallback {\n    (): void | PromiseLike<void>;\n}\n\ninterface UnderlyingSinkStartCallback {\n    (controller: WritableStreamDefaultController): any;\n}\n\ninterface UnderlyingSinkWriteCallback<W> {\n    (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike<void>;\n}\n\ninterface UnderlyingSourceCancelCallback {\n    (reason?: any): void | PromiseLike<void>;\n}\n\ninterface UnderlyingSourcePullCallback<R> {\n    (controller: ReadableStreamController<R>): void | PromiseLike<void>;\n}\n\ninterface UnderlyingSourceStartCallback<R> {\n    (controller: ReadableStreamController<R>): any;\n}\n\ninterface VoidFunction {\n    (): void;\n}\n\n/** Returns dedicatedWorkerGlobal's name, i.e. the value given to the Worker constructor. Primarily useful for debugging. */\ndeclare var name: string;\ndeclare var onmessage: ((this: DedicatedWorkerGlobalScope, ev: MessageEvent) => any) | null;\ndeclare var onmessageerror: ((this: DedicatedWorkerGlobalScope, ev: MessageEvent) => any) | null;\n/** Aborts dedicatedWorkerGlobal. */\ndeclare function close(): void;\n/** Clones message and transmits it to the Worker object associated with dedicatedWorkerGlobal. transfer can be passed as a list of objects that are to be transferred rather than cloned. */\ndeclare function postMessage(message: any, transfer: Transferable[]): void;\ndeclare function postMessage(message: any, options?: StructuredSerializeOptions): void;\n/** Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. */\ndeclare function dispatchEvent(event: Event): boolean;\n/** Returns workerGlobal's WorkerLocation object. */\ndeclare var location: WorkerLocation;\n/** Returns workerGlobal's WorkerNavigator object. */\ndeclare var navigator: WorkerNavigator;\ndeclare var onerror: ((this: DedicatedWorkerGlobalScope, ev: ErrorEvent) => any) | null;\ndeclare var onlanguagechange: ((this: DedicatedWorkerGlobalScope, ev: Event) => any) | null;\ndeclare var onoffline: ((this: DedicatedWorkerGlobalScope, ev: Event) => any) | null;\ndeclare var ononline: ((this: DedicatedWorkerGlobalScope, ev: Event) => any) | null;\ndeclare var onrejectionhandled: ((this: DedicatedWorkerGlobalScope, ev: PromiseRejectionEvent) => any) | null;\ndeclare var onunhandledrejection: ((this: DedicatedWorkerGlobalScope, ev: PromiseRejectionEvent) => any) | null;\n/** Returns workerGlobal. */\ndeclare var self: WorkerGlobalScope & typeof globalThis;\n/** Fetches each URL in urls, executes them one-by-one in the order they are passed, and then returns (or throws if something went amiss). */\ndeclare function importScripts(...urls: (string | URL)[]): void;\n/** Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. */\ndeclare function dispatchEvent(event: Event): boolean;\ndeclare var fonts: FontFaceSet;\n/** Available only in secure contexts. */\ndeclare var caches: CacheStorage;\ndeclare var crossOriginIsolated: boolean;\ndeclare var crypto: Crypto;\ndeclare var indexedDB: IDBFactory;\ndeclare var isSecureContext: boolean;\ndeclare var origin: string;\ndeclare var performance: Performance;\ndeclare function atob(data: string): string;\ndeclare function btoa(data: string): string;\ndeclare function clearInterval(id: number | undefined): void;\ndeclare function clearTimeout(id: number | undefined): void;\ndeclare function createImageBitmap(image: ImageBitmapSource, options?: ImageBitmapOptions): Promise<ImageBitmap>;\ndeclare function createImageBitmap(image: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number, options?: ImageBitmapOptions): Promise<ImageBitmap>;\ndeclare function fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;\ndeclare function queueMicrotask(callback: VoidFunction): void;\ndeclare function reportError(e: any): void;\ndeclare function setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;\ndeclare function setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;\ndeclare function structuredClone(value: any, options?: StructuredSerializeOptions): any;\ndeclare function cancelAnimationFrame(handle: number): void;\ndeclare function requestAnimationFrame(callback: FrameRequestCallback): number;\ndeclare function addEventListener<K extends keyof DedicatedWorkerGlobalScopeEventMap>(type: K, listener: (this: DedicatedWorkerGlobalScope, ev: DedicatedWorkerGlobalScopeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\ndeclare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\ndeclare function removeEventListener<K extends keyof DedicatedWorkerGlobalScopeEventMap>(type: K, listener: (this: DedicatedWorkerGlobalScope, ev: DedicatedWorkerGlobalScopeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\ndeclare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\ntype AlgorithmIdentifier = Algorithm | string;\ntype BigInteger = Uint8Array;\ntype BinaryData = ArrayBuffer | ArrayBufferView;\ntype BlobPart = BufferSource | Blob | string;\ntype BodyInit = ReadableStream | XMLHttpRequestBodyInit;\ntype BufferSource = ArrayBufferView | ArrayBuffer;\ntype CanvasImageSource = ImageBitmap | OffscreenCanvas;\ntype DOMHighResTimeStamp = number;\ntype EpochTimeStamp = number;\ntype EventListenerOrEventListenerObject = EventListener | EventListenerObject;\ntype Float32List = Float32Array | GLfloat[];\ntype FormDataEntryValue = File | string;\ntype GLbitfield = number;\ntype GLboolean = boolean;\ntype GLclampf = number;\ntype GLenum = number;\ntype GLfloat = number;\ntype GLint = number;\ntype GLint64 = number;\ntype GLintptr = number;\ntype GLsizei = number;\ntype GLsizeiptr = number;\ntype GLuint = number;\ntype GLuint64 = number;\ntype HashAlgorithmIdentifier = AlgorithmIdentifier;\ntype HeadersInit = [string, string][] | Record<string, string> | Headers;\ntype IDBValidKey = number | string | Date | BufferSource | IDBValidKey[];\ntype ImageBitmapSource = CanvasImageSource | Blob | ImageData;\ntype Int32List = Int32Array | GLint[];\ntype MessageEventSource = MessagePort | ServiceWorker;\ntype NamedCurve = string;\ntype OffscreenRenderingContext = OffscreenCanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext;\ntype OnErrorEventHandler = OnErrorEventHandlerNonNull | null;\ntype PerformanceEntryList = PerformanceEntry[];\ntype PushMessageDataInit = BufferSource | string;\ntype ReadableStreamController<T> = ReadableStreamDefaultController<T> | ReadableByteStreamController;\ntype ReadableStreamReadResult<T> = ReadableStreamReadValueResult<T> | ReadableStreamReadDoneResult<T>;\ntype ReadableStreamReader<T> = ReadableStreamDefaultReader<T> | ReadableStreamBYOBReader;\ntype RequestInfo = Request | string;\ntype TexImageSource = ImageBitmap | ImageData | OffscreenCanvas;\ntype TimerHandler = string | Function;\ntype Transferable = OffscreenCanvas | ImageBitmap | MessagePort | ReadableStream | WritableStream | TransformStream | ArrayBuffer;\ntype Uint32List = Uint32Array | GLuint[];\ntype VibratePattern = number | number[];\ntype XMLHttpRequestBodyInit = Blob | BufferSource | FormData | URLSearchParams | string;\ntype BinaryType = \"arraybuffer\" | \"blob\";\ntype CanvasDirection = \"inherit\" | \"ltr\" | \"rtl\";\ntype CanvasFillRule = \"evenodd\" | \"nonzero\";\ntype CanvasFontKerning = \"auto\" | \"none\" | \"normal\";\ntype CanvasFontStretch = \"condensed\" | \"expanded\" | \"extra-condensed\" | \"extra-expanded\" | \"normal\" | \"semi-condensed\" | \"semi-expanded\" | \"ultra-condensed\" | \"ultra-expanded\";\ntype CanvasFontVariantCaps = \"all-petite-caps\" | \"all-small-caps\" | \"normal\" | \"petite-caps\" | \"small-caps\" | \"titling-caps\" | \"unicase\";\ntype CanvasLineCap = \"butt\" | \"round\" | \"square\";\ntype CanvasLineJoin = \"bevel\" | \"miter\" | \"round\";\ntype CanvasTextAlign = \"center\" | \"end\" | \"left\" | \"right\" | \"start\";\ntype CanvasTextBaseline = \"alphabetic\" | \"bottom\" | \"hanging\" | \"ideographic\" | \"middle\" | \"top\";\ntype CanvasTextRendering = \"auto\" | \"geometricPrecision\" | \"optimizeLegibility\" | \"optimizeSpeed\";\ntype ClientTypes = \"all\" | \"sharedworker\" | \"window\" | \"worker\";\ntype ColorGamut = \"p3\" | \"rec2020\" | \"srgb\";\ntype ColorSpaceConversion = \"default\" | \"none\";\ntype DocumentVisibilityState = \"hidden\" | \"visible\";\ntype EndingType = \"native\" | \"transparent\";\ntype FileSystemHandleKind = \"directory\" | \"file\";\ntype FontDisplay = \"auto\" | \"block\" | \"fallback\" | \"optional\" | \"swap\";\ntype FontFaceLoadStatus = \"error\" | \"loaded\" | \"loading\" | \"unloaded\";\ntype FontFaceSetLoadStatus = \"loaded\" | \"loading\";\ntype FrameType = \"auxiliary\" | \"nested\" | \"none\" | \"top-level\";\ntype GlobalCompositeOperation = \"color\" | \"color-burn\" | \"color-dodge\" | \"copy\" | \"darken\" | \"destination-atop\" | \"destination-in\" | \"destination-out\" | \"destination-over\" | \"difference\" | \"exclusion\" | \"hard-light\" | \"hue\" | \"lighten\" | \"lighter\" | \"luminosity\" | \"multiply\" | \"overlay\" | \"saturation\" | \"screen\" | \"soft-light\" | \"source-atop\" | \"source-in\" | \"source-out\" | \"source-over\" | \"xor\";\ntype HdrMetadataType = \"smpteSt2086\" | \"smpteSt2094-10\" | \"smpteSt2094-40\";\ntype IDBCursorDirection = \"next\" | \"nextunique\" | \"prev\" | \"prevunique\";\ntype IDBRequestReadyState = \"done\" | \"pending\";\ntype IDBTransactionDurability = \"default\" | \"relaxed\" | \"strict\";\ntype IDBTransactionMode = \"readonly\" | \"readwrite\" | \"versionchange\";\ntype ImageOrientation = \"flipY\" | \"from-image\";\ntype ImageSmoothingQuality = \"high\" | \"low\" | \"medium\";\ntype KeyFormat = \"jwk\" | \"pkcs8\" | \"raw\" | \"spki\";\ntype KeyType = \"private\" | \"public\" | \"secret\";\ntype KeyUsage = \"decrypt\" | \"deriveBits\" | \"deriveKey\" | \"encrypt\" | \"sign\" | \"unwrapKey\" | \"verify\" | \"wrapKey\";\ntype LockMode = \"exclusive\" | \"shared\";\ntype MediaDecodingType = \"file\" | \"media-source\" | \"webrtc\";\ntype MediaEncodingType = \"record\" | \"webrtc\";\ntype NotificationDirection = \"auto\" | \"ltr\" | \"rtl\";\ntype NotificationPermission = \"default\" | \"denied\" | \"granted\";\ntype OffscreenRenderingContextId = \"2d\" | \"bitmaprenderer\" | \"webgl\" | \"webgl2\" | \"webgpu\";\ntype PermissionName = \"geolocation\" | \"notifications\" | \"persistent-storage\" | \"push\" | \"screen-wake-lock\" | \"xr-spatial-tracking\";\ntype PermissionState = \"denied\" | \"granted\" | \"prompt\";\ntype PredefinedColorSpace = \"display-p3\" | \"srgb\";\ntype PremultiplyAlpha = \"default\" | \"none\" | \"premultiply\";\ntype PushEncryptionKeyName = \"auth\" | \"p256dh\";\ntype RTCEncodedVideoFrameType = \"delta\" | \"empty\" | \"key\";\ntype ReadableStreamReaderMode = \"byob\";\ntype ReadableStreamType = \"bytes\";\ntype ReferrerPolicy = \"\" | \"no-referrer\" | \"no-referrer-when-downgrade\" | \"origin\" | \"origin-when-cross-origin\" | \"same-origin\" | \"strict-origin\" | \"strict-origin-when-cross-origin\" | \"unsafe-url\";\ntype RequestCache = \"default\" | \"force-cache\" | \"no-cache\" | \"no-store\" | \"only-if-cached\" | \"reload\";\ntype RequestCredentials = \"include\" | \"omit\" | \"same-origin\";\ntype RequestDestination = \"\" | \"audio\" | \"audioworklet\" | \"document\" | \"embed\" | \"font\" | \"frame\" | \"iframe\" | \"image\" | \"manifest\" | \"object\" | \"paintworklet\" | \"report\" | \"script\" | \"sharedworker\" | \"style\" | \"track\" | \"video\" | \"worker\" | \"xslt\";\ntype RequestMode = \"cors\" | \"navigate\" | \"no-cors\" | \"same-origin\";\ntype RequestRedirect = \"error\" | \"follow\" | \"manual\";\ntype ResizeQuality = \"high\" | \"low\" | \"medium\" | \"pixelated\";\ntype ResponseType = \"basic\" | \"cors\" | \"default\" | \"error\" | \"opaque\" | \"opaqueredirect\";\ntype SecurityPolicyViolationEventDisposition = \"enforce\" | \"report\";\ntype ServiceWorkerState = \"activated\" | \"activating\" | \"installed\" | \"installing\" | \"parsed\" | \"redundant\";\ntype ServiceWorkerUpdateViaCache = \"all\" | \"imports\" | \"none\";\ntype TransferFunction = \"hlg\" | \"pq\" | \"srgb\";\ntype VideoColorPrimaries = \"bt470bg\" | \"bt709\" | \"smpte170m\";\ntype VideoMatrixCoefficients = \"bt470bg\" | \"bt709\" | \"rgb\" | \"smpte170m\";\ntype VideoTransferCharacteristics = \"bt709\" | \"iec61966-2-1\" | \"smpte170m\";\ntype WebGLPowerPreference = \"default\" | \"high-performance\" | \"low-power\";\ntype WorkerType = \"classic\" | \"module\";\ntype XMLHttpRequestResponseType = \"\" | \"arraybuffer\" | \"blob\" | \"document\" | \"json\" | \"text\";\n`;$i[\"lib.webworker.importscripts.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n\n/////////////////////////////\n/// WorkerGlobalScope APIs\n/////////////////////////////\n// These are only available in a Web Worker\ndeclare function importScripts(...urls: string[]): void;\n`;$i[\"lib.webworker.iterable.d.ts\"]=`/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// <reference no-default-lib=\"true\"/>\n\n/////////////////////////////\n/// Worker Iterable APIs\n/////////////////////////////\n\ninterface Cache {\n    addAll(requests: Iterable<RequestInfo>): Promise<void>;\n}\n\ninterface CanvasPath {\n    roundRect(x: number, y: number, w: number, h: number, radii?: number | DOMPointInit | Iterable<number | DOMPointInit>): void;\n}\n\ninterface CanvasPathDrawingStyles {\n    setLineDash(segments: Iterable<number>): void;\n}\n\ninterface DOMStringList {\n    [Symbol.iterator](): IterableIterator<string>;\n}\n\ninterface FileList {\n    [Symbol.iterator](): IterableIterator<File>;\n}\n\ninterface FontFaceSet extends Set<FontFace> {\n}\n\ninterface FormData {\n    [Symbol.iterator](): IterableIterator<[string, FormDataEntryValue]>;\n    /** Returns an array of key, value pairs for every entry in the list. */\n    entries(): IterableIterator<[string, FormDataEntryValue]>;\n    /** Returns a list of keys in the list. */\n    keys(): IterableIterator<string>;\n    /** Returns a list of values in the list. */\n    values(): IterableIterator<FormDataEntryValue>;\n}\n\ninterface Headers {\n    [Symbol.iterator](): IterableIterator<[string, string]>;\n    /** Returns an iterator allowing to go through all key/value pairs contained in this object. */\n    entries(): IterableIterator<[string, string]>;\n    /** Returns an iterator allowing to go through all keys of the key/value pairs contained in this object. */\n    keys(): IterableIterator<string>;\n    /** Returns an iterator allowing to go through all values of the key/value pairs contained in this object. */\n    values(): IterableIterator<string>;\n}\n\ninterface IDBDatabase {\n    /** Returns a new transaction with the given mode (\"readonly\" or \"readwrite\") and scope which can be a single object store name or an array of names. */\n    transaction(storeNames: string | Iterable<string>, mode?: IDBTransactionMode, options?: IDBTransactionOptions): IDBTransaction;\n}\n\ninterface IDBObjectStore {\n    /**\n     * Creates a new index in store with the given name, keyPath and options and returns a new IDBIndex. If the keyPath and options define constraints that cannot be satisfied with the data already in store the upgrade transaction will abort with a \"ConstraintError\" DOMException.\n     *\n     * Throws an \"InvalidStateError\" DOMException if not called within an upgrade transaction.\n     */\n    createIndex(name: string, keyPath: string | Iterable<string>, options?: IDBIndexParameters): IDBIndex;\n}\n\ninterface MessageEvent<T = any> {\n    /** @deprecated */\n    initMessageEvent(type: string, bubbles?: boolean, cancelable?: boolean, data?: any, origin?: string, lastEventId?: string, source?: MessageEventSource | null, ports?: Iterable<MessagePort>): void;\n}\n\ninterface SubtleCrypto {\n    deriveKey(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, derivedKeyType: AlgorithmIdentifier | AesDerivedKeyParams | HmacImportParams | HkdfParams | Pbkdf2Params, extractable: boolean, keyUsages: Iterable<KeyUsage>): Promise<CryptoKey>;\n    generateKey(algorithm: RsaHashedKeyGenParams | EcKeyGenParams, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKeyPair>;\n    generateKey(algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;\n    generateKey(algorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: Iterable<KeyUsage>): Promise<CryptoKeyPair | CryptoKey>;\n    importKey(format: \"jwk\", keyData: JsonWebKey, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;\n    importKey(format: Exclude<KeyFormat, \"jwk\">, keyData: BufferSource, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: Iterable<KeyUsage>): Promise<CryptoKey>;\n    unwrapKey(format: KeyFormat, wrappedKey: BufferSource, unwrappingKey: CryptoKey, unwrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, unwrappedKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: Iterable<KeyUsage>): Promise<CryptoKey>;\n}\n\ninterface URLSearchParams {\n    [Symbol.iterator](): IterableIterator<[string, string]>;\n    /** Returns an array of key, value pairs for every entry in the search params. */\n    entries(): IterableIterator<[string, string]>;\n    /** Returns a list of keys in the search params. */\n    keys(): IterableIterator<string>;\n    /** Returns a list of values in the search params. */\n    values(): IterableIterator<string>;\n}\n\ninterface WEBGL_draw_buffers {\n    drawBuffersWEBGL(buffers: Iterable<GLenum>): void;\n}\n\ninterface WEBGL_multi_draw {\n    multiDrawArraysInstancedWEBGL(mode: GLenum, firstsList: Int32Array | Iterable<GLint>, firstsOffset: GLuint, countsList: Int32Array | Iterable<GLsizei>, countsOffset: GLuint, instanceCountsList: Int32Array | Iterable<GLsizei>, instanceCountsOffset: GLuint, drawcount: GLsizei): void;\n    multiDrawArraysWEBGL(mode: GLenum, firstsList: Int32Array | Iterable<GLint>, firstsOffset: GLuint, countsList: Int32Array | Iterable<GLsizei>, countsOffset: GLuint, drawcount: GLsizei): void;\n    multiDrawElementsInstancedWEBGL(mode: GLenum, countsList: Int32Array | Iterable<GLsizei>, countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | Iterable<GLsizei>, offsetsOffset: GLuint, instanceCountsList: Int32Array | Iterable<GLsizei>, instanceCountsOffset: GLuint, drawcount: GLsizei): void;\n    multiDrawElementsWEBGL(mode: GLenum, countsList: Int32Array | Iterable<GLsizei>, countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | Iterable<GLsizei>, offsetsOffset: GLuint, drawcount: GLsizei): void;\n}\n\ninterface WebGL2RenderingContextBase {\n    clearBufferfv(buffer: GLenum, drawbuffer: GLint, values: Iterable<GLfloat>, srcOffset?: GLuint): void;\n    clearBufferiv(buffer: GLenum, drawbuffer: GLint, values: Iterable<GLint>, srcOffset?: GLuint): void;\n    clearBufferuiv(buffer: GLenum, drawbuffer: GLint, values: Iterable<GLuint>, srcOffset?: GLuint): void;\n    drawBuffers(buffers: Iterable<GLenum>): void;\n    getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable<GLuint>, pname: GLenum): any;\n    getUniformIndices(program: WebGLProgram, uniformNames: Iterable<string>): Iterable<GLuint> | null;\n    invalidateFramebuffer(target: GLenum, attachments: Iterable<GLenum>): void;\n    invalidateSubFramebuffer(target: GLenum, attachments: Iterable<GLenum>, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;\n    transformFeedbackVaryings(program: WebGLProgram, varyings: Iterable<string>, bufferMode: GLenum): void;\n    uniform1uiv(location: WebGLUniformLocation | null, data: Iterable<GLuint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform2uiv(location: WebGLUniformLocation | null, data: Iterable<GLuint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform3uiv(location: WebGLUniformLocation | null, data: Iterable<GLuint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform4uiv(location: WebGLUniformLocation | null, data: Iterable<GLuint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix2x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix2x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix3x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix3x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix4x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix4x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    vertexAttribI4iv(index: GLuint, values: Iterable<GLint>): void;\n    vertexAttribI4uiv(index: GLuint, values: Iterable<GLuint>): void;\n}\n\ninterface WebGL2RenderingContextOverloads {\n    uniform1fv(location: WebGLUniformLocation | null, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform1iv(location: WebGLUniformLocation | null, data: Iterable<GLint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform2fv(location: WebGLUniformLocation | null, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform2iv(location: WebGLUniformLocation | null, data: Iterable<GLint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform3fv(location: WebGLUniformLocation | null, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform3iv(location: WebGLUniformLocation | null, data: Iterable<GLint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform4fv(location: WebGLUniformLocation | null, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniform4iv(location: WebGLUniformLocation | null, data: Iterable<GLint>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable<GLfloat>, srcOffset?: GLuint, srcLength?: GLuint): void;\n}\n\ninterface WebGLRenderingContextBase {\n    vertexAttrib1fv(index: GLuint, values: Iterable<GLfloat>): void;\n    vertexAttrib2fv(index: GLuint, values: Iterable<GLfloat>): void;\n    vertexAttrib3fv(index: GLuint, values: Iterable<GLfloat>): void;\n    vertexAttrib4fv(index: GLuint, values: Iterable<GLfloat>): void;\n}\n\ninterface WebGLRenderingContextOverloads {\n    uniform1fv(location: WebGLUniformLocation | null, v: Iterable<GLfloat>): void;\n    uniform1iv(location: WebGLUniformLocation | null, v: Iterable<GLint>): void;\n    uniform2fv(location: WebGLUniformLocation | null, v: Iterable<GLfloat>): void;\n    uniform2iv(location: WebGLUniformLocation | null, v: Iterable<GLint>): void;\n    uniform3fv(location: WebGLUniformLocation | null, v: Iterable<GLfloat>): void;\n    uniform3iv(location: WebGLUniformLocation | null, v: Iterable<GLint>): void;\n    uniform4fv(location: WebGLUniformLocation | null, v: Iterable<GLfloat>): void;\n    uniform4iv(location: WebGLUniformLocation | null, v: Iterable<GLint>): void;\n    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Iterable<GLfloat>): void;\n    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Iterable<GLfloat>): void;\n    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Iterable<GLfloat>): void;\n}\n`;function Zf(lp){return typeof lp==\"string\"?/^file:\\/\\/\\//.test(lp)?!!$i[lp.substr(8)]:!1:lp.path.indexOf(\"/lib.\")===0?!!$i[lp.path.slice(1)]:!1}var aT=class{_ctx;_extraLibs=Object.create(null);_languageService=iae(this);_compilerOptions;_inlayHintsOptions;constructor(ti,gt){this._ctx=ti,this._compilerOptions=gt.compilerOptions,this._extraLibs=gt.extraLibs,this._inlayHintsOptions=gt.inlayHintsOptions}getCompilationSettings(){return this._compilerOptions}getLanguageService(){return this._languageService}getExtraLibs(){return this._extraLibs}getScriptFileNames(){return this._ctx.getMirrorModels().map(hs=>hs.uri).filter(hs=>!Zf(hs)).map(hs=>hs.toString()).concat(Object.keys(this._extraLibs))}_getModel(ti){let gt=this._ctx.getMirrorModels();for(let hs=0;hs<gt.length;hs++){let Mo=gt[hs].uri;if(Mo.toString()===ti||Mo.toString(!0)===ti)return gt[hs]}return null}getScriptVersion(ti){let gt=this._getModel(ti);return gt?gt.version.toString():this.isDefaultLibFileName(ti)?\"1\":ti in this._extraLibs?String(this._extraLibs[ti].version):\"\"}async getScriptText(ti){return this._getScriptText(ti)}_getScriptText(ti){let gt,hs=this._getModel(ti),Mo=\"lib.\"+ti+\".d.ts\";if(hs)gt=hs.getValue();else if(ti in $i)gt=$i[ti];else if(Mo in $i)gt=$i[Mo];else if(ti in this._extraLibs)gt=this._extraLibs[ti].content;else return;return gt}getScriptSnapshot(ti){let gt=this._getScriptText(ti);if(gt!==void 0)return{getText:(hs,Mo)=>gt.substring(hs,Mo),getLength:()=>gt.length,getChangeRange:()=>{}}}getScriptKind(ti){switch(ti.substr(ti.lastIndexOf(\".\")+1)){case\"ts\":return dA.TS;case\"tsx\":return dA.TSX;case\"js\":return dA.JS;case\"jsx\":return dA.JSX;default:return this.getCompilationSettings().allowJs?dA.JS:dA.TS}}getCurrentDirectory(){return\"\"}getDefaultLibFileName(ti){switch(ti.target){case 99:let gt=\"lib.esnext.full.d.ts\";if(gt in $i||gt in this._extraLibs)return gt;case 7:case 6:case 5:case 4:case 3:case 2:default:let hs=`lib.es${2013+(ti.target||99)}.full.d.ts`;return hs in $i||hs in this._extraLibs?hs:\"lib.es6.d.ts\";case 1:case 0:return\"lib.d.ts\"}}isDefaultLibFileName(ti){return ti===this.getDefaultLibFileName(this._compilerOptions)}readFile(ti){return this._getScriptText(ti)}fileExists(ti){return this._getScriptText(ti)!==void 0}async getLibFiles(){return $i}static clearFiles(ti){let gt=[];for(let hs of ti){let Mo={...hs};if(Mo.file=Mo.file?{fileName:Mo.file.fileName}:void 0,hs.relatedInformation){Mo.relatedInformation=[];for(let Sg of hs.relatedInformation){let wf={...Sg};wf.file=wf.file?{fileName:wf.file.fileName}:void 0,Mo.relatedInformation.push(wf)}}gt.push(Mo)}return gt}async getSyntacticDiagnostics(ti){if(Zf(ti))return[];let gt=this._languageService.getSyntacticDiagnostics(ti);return aT.clearFiles(gt)}async getSemanticDiagnostics(ti){if(Zf(ti))return[];let gt=this._languageService.getSemanticDiagnostics(ti);return aT.clearFiles(gt)}async getSuggestionDiagnostics(ti){if(Zf(ti))return[];let gt=this._languageService.getSuggestionDiagnostics(ti);return aT.clearFiles(gt)}async getCompilerOptionsDiagnostics(ti){if(Zf(ti))return[];let gt=this._languageService.getCompilerOptionsDiagnostics();return aT.clearFiles(gt)}async getCompletionsAtPosition(ti,gt){if(!Zf(ti))return this._languageService.getCompletionsAtPosition(ti,gt,void 0)}async getCompletionEntryDetails(ti,gt,hs){return this._languageService.getCompletionEntryDetails(ti,gt,hs,void 0,void 0,void 0,void 0)}async getSignatureHelpItems(ti,gt,hs){if(!Zf(ti))return this._languageService.getSignatureHelpItems(ti,gt,hs)}async getQuickInfoAtPosition(ti,gt){if(!Zf(ti))return this._languageService.getQuickInfoAtPosition(ti,gt)}async getDocumentHighlights(ti,gt,hs){if(!Zf(ti))return this._languageService.getDocumentHighlights(ti,gt,hs)}async getDefinitionAtPosition(ti,gt){if(!Zf(ti))return this._languageService.getDefinitionAtPosition(ti,gt)}async getReferencesAtPosition(ti,gt){if(!Zf(ti))return this._languageService.getReferencesAtPosition(ti,gt)}async getNavigationTree(ti){if(!Zf(ti))return this._languageService.getNavigationTree(ti)}async getFormattingEditsForDocument(ti,gt){return Zf(ti)?[]:this._languageService.getFormattingEditsForDocument(ti,gt)}async getFormattingEditsForRange(ti,gt,hs,Mo){return Zf(ti)?[]:this._languageService.getFormattingEditsForRange(ti,gt,hs,Mo)}async getFormattingEditsAfterKeystroke(ti,gt,hs,Mo){return Zf(ti)?[]:this._languageService.getFormattingEditsAfterKeystroke(ti,gt,hs,Mo)}async findRenameLocations(ti,gt,hs,Mo,Sg){if(!Zf(ti))return this._languageService.findRenameLocations(ti,gt,hs,Mo,Sg)}async getRenameInfo(ti,gt,hs){return Zf(ti)?{canRename:!1,localizedErrorMessage:\"Cannot rename in lib file\"}:this._languageService.getRenameInfo(ti,gt,hs)}async getEmitOutput(ti){return Zf(ti)?{outputFiles:[],emitSkipped:!0}:this._languageService.getEmitOutput(ti)}async getCodeFixesAtPosition(ti,gt,hs,Mo,Sg){if(Zf(ti))return[];let wf={};try{return this._languageService.getCodeFixesAtPosition(ti,gt,hs,Mo,Sg,wf)}catch{return[]}}async updateExtraLibs(ti){this._extraLibs=ti}async provideInlayHints(ti,gt,hs){if(Zf(ti))return[];let Mo=this._inlayHintsOptions??{},Sg={start:gt,length:hs-gt};try{return this._languageService.provideInlayHints(ti,Sg,Mo)}catch{return[]}}};function Lit(lp,ti){let gt=aT;if(ti.customWorkerPath)if(typeof importScripts>\"u\")console.warn(\"Monaco is not using webworkers for background tasks, and that is needed to support the customWorkerPath flag\");else{self.importScripts(ti.customWorkerPath);let hs=self.customTSWorkerFactory;if(!hs)throw new Error(`The script at ${ti.customWorkerPath} does not add customTSWorkerFactory to self`);gt=hs(aT,oae,$i)}return new gt(lp,ti)}globalThis.ts=aae;return bit(kit);})();\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nreturn moduleExports;\n});\n"
  },
  {
    "path": "web/public/js/monaco-editor.0.43.0/loader.js",
    "content": "\"use strict\";/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.43.0(94c055bcbdd49f04a0fa15515e848542a79fb948)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/const _amdLoaderGlobal=this,_commonjsGlobal=typeof global==\"object\"?global:{};var AMDLoader;(function(u){u.global=_amdLoaderGlobal;class y{get isWindows(){return this._detect(),this._isWindows}get isNode(){return this._detect(),this._isNode}get isElectronRenderer(){return this._detect(),this._isElectronRenderer}get isWebWorker(){return this._detect(),this._isWebWorker}get isElectronNodeIntegrationWebWorker(){return this._detect(),this._isElectronNodeIntegrationWebWorker}constructor(){this._detected=!1,this._isWindows=!1,this._isNode=!1,this._isElectronRenderer=!1,this._isWebWorker=!1,this._isElectronNodeIntegrationWebWorker=!1}_detect(){this._detected||(this._detected=!0,this._isWindows=y._isWindows(),this._isNode=typeof module<\"u\"&&!!module.exports,this._isElectronRenderer=typeof process<\"u\"&&typeof process.versions<\"u\"&&typeof process.versions.electron<\"u\"&&process.type===\"renderer\",this._isWebWorker=typeof u.global.importScripts==\"function\",this._isElectronNodeIntegrationWebWorker=this._isWebWorker&&typeof process<\"u\"&&typeof process.versions<\"u\"&&typeof process.versions.electron<\"u\"&&process.type===\"worker\")}static _isWindows(){return typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.indexOf(\"Windows\")>=0?!0:typeof process<\"u\"?process.platform===\"win32\":!1}}u.Environment=y})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(u){class y{constructor(r,c,a){this.type=r,this.detail=c,this.timestamp=a}}u.LoaderEvent=y;class m{constructor(r){this._events=[new y(1,\"\",r)]}record(r,c){this._events.push(new y(r,c,u.Utilities.getHighPerformanceTimestamp()))}getEvents(){return this._events}}u.LoaderEventRecorder=m;class p{record(r,c){}getEvents(){return[]}}p.INSTANCE=new p,u.NullLoaderEventRecorder=p})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(u){class y{static fileUriToFilePath(p,h){if(h=decodeURI(h).replace(/%23/g,\"#\"),p){if(/^file:\\/\\/\\//.test(h))return h.substr(8);if(/^file:\\/\\//.test(h))return h.substr(5)}else if(/^file:\\/\\//.test(h))return h.substr(7);return h}static startsWith(p,h){return p.length>=h.length&&p.substr(0,h.length)===h}static endsWith(p,h){return p.length>=h.length&&p.substr(p.length-h.length)===h}static containsQueryString(p){return/^[^\\#]*\\?/gi.test(p)}static isAbsolutePath(p){return/^((http:\\/\\/)|(https:\\/\\/)|(file:\\/\\/)|(\\/))/.test(p)}static forEachProperty(p,h){if(p){let r;for(r in p)p.hasOwnProperty(r)&&h(r,p[r])}}static isEmpty(p){let h=!0;return y.forEachProperty(p,()=>{h=!1}),h}static recursiveClone(p){if(!p||typeof p!=\"object\"||p instanceof RegExp||!Array.isArray(p)&&Object.getPrototypeOf(p)!==Object.prototype)return p;let h=Array.isArray(p)?[]:{};return y.forEachProperty(p,(r,c)=>{c&&typeof c==\"object\"?h[r]=y.recursiveClone(c):h[r]=c}),h}static generateAnonymousModule(){return\"===anonymous\"+y.NEXT_ANONYMOUS_ID+++\"===\"}static isAnonymousModule(p){return y.startsWith(p,\"===anonymous\")}static getHighPerformanceTimestamp(){return this.PERFORMANCE_NOW_PROBED||(this.PERFORMANCE_NOW_PROBED=!0,this.HAS_PERFORMANCE_NOW=u.global.performance&&typeof u.global.performance.now==\"function\"),this.HAS_PERFORMANCE_NOW?u.global.performance.now():Date.now()}}y.NEXT_ANONYMOUS_ID=1,y.PERFORMANCE_NOW_PROBED=!1,y.HAS_PERFORMANCE_NOW=!1,u.Utilities=y})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(u){function y(h){if(h instanceof Error)return h;const r=new Error(h.message||String(h)||\"Unknown Error\");return h.stack&&(r.stack=h.stack),r}u.ensureError=y;class m{static validateConfigurationOptions(r){function c(a){if(a.phase===\"loading\"){console.error('Loading \"'+a.moduleId+'\" failed'),console.error(a),console.error(\"Here are the modules that depend on it:\"),console.error(a.neededBy);return}if(a.phase===\"factory\"){console.error('The factory function of \"'+a.moduleId+'\" has thrown an exception'),console.error(a),console.error(\"Here are the modules that depend on it:\"),console.error(a.neededBy);return}}if(r=r||{},typeof r.baseUrl!=\"string\"&&(r.baseUrl=\"\"),typeof r.isBuild!=\"boolean\"&&(r.isBuild=!1),typeof r.paths!=\"object\"&&(r.paths={}),typeof r.config!=\"object\"&&(r.config={}),typeof r.catchError>\"u\"&&(r.catchError=!1),typeof r.recordStats>\"u\"&&(r.recordStats=!1),typeof r.urlArgs!=\"string\"&&(r.urlArgs=\"\"),typeof r.onError!=\"function\"&&(r.onError=c),Array.isArray(r.ignoreDuplicateModules)||(r.ignoreDuplicateModules=[]),r.baseUrl.length>0&&(u.Utilities.endsWith(r.baseUrl,\"/\")||(r.baseUrl+=\"/\")),typeof r.cspNonce!=\"string\"&&(r.cspNonce=\"\"),typeof r.preferScriptTags>\"u\"&&(r.preferScriptTags=!1),r.nodeCachedData&&typeof r.nodeCachedData==\"object\"&&(typeof r.nodeCachedData.seed!=\"string\"&&(r.nodeCachedData.seed=\"seed\"),(typeof r.nodeCachedData.writeDelay!=\"number\"||r.nodeCachedData.writeDelay<0)&&(r.nodeCachedData.writeDelay=1e3*7),!r.nodeCachedData.path||typeof r.nodeCachedData.path!=\"string\")){const a=y(new Error(\"INVALID cached data configuration, 'path' MUST be set\"));a.phase=\"configuration\",r.onError(a),r.nodeCachedData=void 0}return r}static mergeConfigurationOptions(r=null,c=null){let a=u.Utilities.recursiveClone(c||{});return u.Utilities.forEachProperty(r,(t,e)=>{t===\"ignoreDuplicateModules\"&&typeof a.ignoreDuplicateModules<\"u\"?a.ignoreDuplicateModules=a.ignoreDuplicateModules.concat(e):t===\"paths\"&&typeof a.paths<\"u\"?u.Utilities.forEachProperty(e,(i,s)=>a.paths[i]=s):t===\"config\"&&typeof a.config<\"u\"?u.Utilities.forEachProperty(e,(i,s)=>a.config[i]=s):a[t]=u.Utilities.recursiveClone(e)}),m.validateConfigurationOptions(a)}}u.ConfigurationOptionsUtil=m;class p{constructor(r,c){if(this._env=r,this.options=m.mergeConfigurationOptions(c),this._createIgnoreDuplicateModulesMap(),this._createSortedPathsRules(),this.options.baseUrl===\"\"&&this.options.nodeRequire&&this.options.nodeRequire.main&&this.options.nodeRequire.main.filename&&this._env.isNode){let a=this.options.nodeRequire.main.filename,t=Math.max(a.lastIndexOf(\"/\"),a.lastIndexOf(\"\\\\\"));this.options.baseUrl=a.substring(0,t+1)}}_createIgnoreDuplicateModulesMap(){this.ignoreDuplicateModulesMap={};for(let r=0;r<this.options.ignoreDuplicateModules.length;r++)this.ignoreDuplicateModulesMap[this.options.ignoreDuplicateModules[r]]=!0}_createSortedPathsRules(){this.sortedPathsRules=[],u.Utilities.forEachProperty(this.options.paths,(r,c)=>{Array.isArray(c)?this.sortedPathsRules.push({from:r,to:c}):this.sortedPathsRules.push({from:r,to:[c]})}),this.sortedPathsRules.sort((r,c)=>c.from.length-r.from.length)}cloneAndMerge(r){return new p(this._env,m.mergeConfigurationOptions(r,this.options))}getOptionsLiteral(){return this.options}_applyPaths(r){let c;for(let a=0,t=this.sortedPathsRules.length;a<t;a++)if(c=this.sortedPathsRules[a],u.Utilities.startsWith(r,c.from)){let e=[];for(let i=0,s=c.to.length;i<s;i++)e.push(c.to[i]+r.substr(c.from.length));return e}return[r]}_addUrlArgsToUrl(r){return u.Utilities.containsQueryString(r)?r+\"&\"+this.options.urlArgs:r+\"?\"+this.options.urlArgs}_addUrlArgsIfNecessaryToUrl(r){return this.options.urlArgs?this._addUrlArgsToUrl(r):r}_addUrlArgsIfNecessaryToUrls(r){if(this.options.urlArgs)for(let c=0,a=r.length;c<a;c++)r[c]=this._addUrlArgsToUrl(r[c]);return r}moduleIdToPaths(r){if(this._env.isNode&&this.options.amdModulesPattern instanceof RegExp&&!this.options.amdModulesPattern.test(r))return this.isBuild()?[\"empty:\"]:[\"node|\"+r];let c=r,a;if(!u.Utilities.endsWith(c,\".js\")&&!u.Utilities.isAbsolutePath(c)){a=this._applyPaths(c);for(let t=0,e=a.length;t<e;t++)this.isBuild()&&a[t]===\"empty:\"||(u.Utilities.isAbsolutePath(a[t])||(a[t]=this.options.baseUrl+a[t]),!u.Utilities.endsWith(a[t],\".js\")&&!u.Utilities.containsQueryString(a[t])&&(a[t]=a[t]+\".js\"))}else!u.Utilities.endsWith(c,\".js\")&&!u.Utilities.containsQueryString(c)&&(c=c+\".js\"),a=[c];return this._addUrlArgsIfNecessaryToUrls(a)}requireToUrl(r){let c=r;return u.Utilities.isAbsolutePath(c)||(c=this._applyPaths(c)[0],u.Utilities.isAbsolutePath(c)||(c=this.options.baseUrl+c)),this._addUrlArgsIfNecessaryToUrl(c)}isBuild(){return this.options.isBuild}shouldInvokeFactory(r){return!!(!this.options.isBuild||u.Utilities.isAnonymousModule(r)||this.options.buildForceInvokeFactory&&this.options.buildForceInvokeFactory[r])}isDuplicateMessageIgnoredFor(r){return this.ignoreDuplicateModulesMap.hasOwnProperty(r)}getConfigForModule(r){if(this.options.config)return this.options.config[r]}shouldCatchError(){return this.options.catchError}shouldRecordStats(){return this.options.recordStats}onError(r){this.options.onError(r)}}u.Configuration=p})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(u){class y{constructor(e){this._env=e,this._scriptLoader=null,this._callbackMap={}}load(e,i,s,n){if(!this._scriptLoader)if(this._env.isWebWorker)this._scriptLoader=new h;else if(this._env.isElectronRenderer){const{preferScriptTags:d}=e.getConfig().getOptionsLiteral();d?this._scriptLoader=new m:this._scriptLoader=new r(this._env)}else this._env.isNode?this._scriptLoader=new r(this._env):this._scriptLoader=new m;let l={callback:s,errorback:n};if(this._callbackMap.hasOwnProperty(i)){this._callbackMap[i].push(l);return}this._callbackMap[i]=[l],this._scriptLoader.load(e,i,()=>this.triggerCallback(i),d=>this.triggerErrorback(i,d))}triggerCallback(e){let i=this._callbackMap[e];delete this._callbackMap[e];for(let s=0;s<i.length;s++)i[s].callback()}triggerErrorback(e,i){let s=this._callbackMap[e];delete this._callbackMap[e];for(let n=0;n<s.length;n++)s[n].errorback(i)}}class m{attachListeners(e,i,s){let n=()=>{e.removeEventListener(\"load\",l),e.removeEventListener(\"error\",d)},l=o=>{n(),i()},d=o=>{n(),s(o)};e.addEventListener(\"load\",l),e.addEventListener(\"error\",d)}load(e,i,s,n){if(/^node\\|/.test(i)){let l=e.getConfig().getOptionsLiteral(),d=c(e.getRecorder(),l.nodeRequire||u.global.nodeRequire),o=i.split(\"|\"),_=null;try{_=d(o[1])}catch(f){n(f);return}e.enqueueDefineAnonymousModule([],()=>_),s()}else{let l=document.createElement(\"script\");l.setAttribute(\"async\",\"async\"),l.setAttribute(\"type\",\"text/javascript\"),this.attachListeners(l,s,n);const{trustedTypesPolicy:d}=e.getConfig().getOptionsLiteral();d&&(i=d.createScriptURL(i)),l.setAttribute(\"src\",i);const{cspNonce:o}=e.getConfig().getOptionsLiteral();o&&l.setAttribute(\"nonce\",o),document.getElementsByTagName(\"head\")[0].appendChild(l)}}}function p(t){const{trustedTypesPolicy:e}=t.getConfig().getOptionsLiteral();try{return(e?self.eval(e.createScript(\"\",\"true\")):new Function(\"true\")).call(self),!0}catch{return!1}}class h{constructor(){this._cachedCanUseEval=null}_canUseEval(e){return this._cachedCanUseEval===null&&(this._cachedCanUseEval=p(e)),this._cachedCanUseEval}load(e,i,s,n){if(/^node\\|/.test(i)){const l=e.getConfig().getOptionsLiteral(),d=c(e.getRecorder(),l.nodeRequire||u.global.nodeRequire),o=i.split(\"|\");let _=null;try{_=d(o[1])}catch(f){n(f);return}e.enqueueDefineAnonymousModule([],function(){return _}),s()}else{const{trustedTypesPolicy:l}=e.getConfig().getOptionsLiteral();if(!(/^((http:)|(https:)|(file:))/.test(i)&&i.substring(0,self.origin.length)!==self.origin)&&this._canUseEval(e)){fetch(i).then(o=>{if(o.status!==200)throw new Error(o.statusText);return o.text()}).then(o=>{o=`${o}\n//# sourceURL=${i}`,(l?self.eval(l.createScript(\"\",o)):new Function(o)).call(self),s()}).then(void 0,n);return}try{l&&(i=l.createScriptURL(i)),importScripts(i),s()}catch(o){n(o)}}}}class r{constructor(e){this._env=e,this._didInitialize=!1,this._didPatchNodeRequire=!1}_init(e){this._didInitialize||(this._didInitialize=!0,this._fs=e(\"fs\"),this._vm=e(\"vm\"),this._path=e(\"path\"),this._crypto=e(\"crypto\"))}_initNodeRequire(e,i){const{nodeCachedData:s}=i.getConfig().getOptionsLiteral();if(!s||this._didPatchNodeRequire)return;this._didPatchNodeRequire=!0;const n=this,l=e(\"module\");function d(o){const _=o.constructor;let f=function(v){try{return o.require(v)}finally{}};return f.resolve=function(v,E){return _._resolveFilename(v,o,!1,E)},f.resolve.paths=function(v){return _._resolveLookupPaths(v,o)},f.main=process.mainModule,f.extensions=_._extensions,f.cache=_._cache,f}l.prototype._compile=function(o,_){const f=l.wrap(o.replace(/^#!.*/,\"\")),g=i.getRecorder(),v=n._getCachedDataPath(s,_),E={filename:_};let I;try{const D=n._fs.readFileSync(v);I=D.slice(0,16),E.cachedData=D.slice(16),g.record(60,v)}catch{g.record(61,v)}const C=new n._vm.Script(f,E),P=C.runInThisContext(E),w=n._path.dirname(_),R=d(this),U=[this.exports,R,this,_,w,process,_commonjsGlobal,Buffer],b=P.apply(this.exports,U);return n._handleCachedData(C,f,v,!E.cachedData,i),n._verifyCachedData(C,f,v,I,i),b}}load(e,i,s,n){const l=e.getConfig().getOptionsLiteral(),d=c(e.getRecorder(),l.nodeRequire||u.global.nodeRequire),o=l.nodeInstrumenter||function(f){return f};this._init(d),this._initNodeRequire(d,e);let _=e.getRecorder();if(/^node\\|/.test(i)){let f=i.split(\"|\"),g=null;try{g=d(f[1])}catch(v){n(v);return}e.enqueueDefineAnonymousModule([],()=>g),s()}else{i=u.Utilities.fileUriToFilePath(this._env.isWindows,i);const f=this._path.normalize(i),g=this._getElectronRendererScriptPathOrUri(f),v=!!l.nodeCachedData,E=v?this._getCachedDataPath(l.nodeCachedData,i):void 0;this._readSourceAndCachedData(f,E,_,(I,C,P,w)=>{if(I){n(I);return}let R;C.charCodeAt(0)===r._BOM?R=r._PREFIX+C.substring(1)+r._SUFFIX:R=r._PREFIX+C+r._SUFFIX,R=o(R,f);const U={filename:g,cachedData:P},b=this._createAndEvalScript(e,R,U,s,n);this._handleCachedData(b,R,E,v&&!P,e),this._verifyCachedData(b,R,E,w,e)})}}_createAndEvalScript(e,i,s,n,l){const d=e.getRecorder();d.record(31,s.filename);const o=new this._vm.Script(i,s),_=o.runInThisContext(s),f=e.getGlobalAMDDefineFunc();let g=!1;const v=function(){return g=!0,f.apply(null,arguments)};return v.amd=f.amd,_.call(u.global,e.getGlobalAMDRequireFunc(),v,s.filename,this._path.dirname(s.filename)),d.record(32,s.filename),g?n():l(new Error(`Didn't receive define call in ${s.filename}!`)),o}_getElectronRendererScriptPathOrUri(e){if(!this._env.isElectronRenderer)return e;let i=e.match(/^([a-z])\\:(.*)/i);return i?`file:///${(i[1].toUpperCase()+\":\"+i[2]).replace(/\\\\/g,\"/\")}`:`file://${e}`}_getCachedDataPath(e,i){const s=this._crypto.createHash(\"md5\").update(i,\"utf8\").update(e.seed,\"utf8\").update(process.arch,\"\").digest(\"hex\"),n=this._path.basename(i).replace(/\\.js$/,\"\");return this._path.join(e.path,`${n}-${s}.code`)}_handleCachedData(e,i,s,n,l){e.cachedDataRejected?this._fs.unlink(s,d=>{l.getRecorder().record(62,s),this._createAndWriteCachedData(e,i,s,l),d&&l.getConfig().onError(d)}):n&&this._createAndWriteCachedData(e,i,s,l)}_createAndWriteCachedData(e,i,s,n){let l=Math.ceil(n.getConfig().getOptionsLiteral().nodeCachedData.writeDelay*(1+Math.random())),d=-1,o=0,_;const f=()=>{setTimeout(()=>{_||(_=this._crypto.createHash(\"md5\").update(i,\"utf8\").digest());const g=e.createCachedData();if(!(g.length===0||g.length===d||o>=5)){if(g.length<d){f();return}d=g.length,this._fs.writeFile(s,Buffer.concat([_,g]),v=>{v&&n.getConfig().onError(v),n.getRecorder().record(63,s),f()})}},l*Math.pow(4,o++))};f()}_readSourceAndCachedData(e,i,s,n){if(!i)this._fs.readFile(e,{encoding:\"utf8\"},n);else{let l,d,o,_=2;const f=g=>{g?n(g):--_===0&&n(void 0,l,d,o)};this._fs.readFile(e,{encoding:\"utf8\"},(g,v)=>{l=v,f(g)}),this._fs.readFile(i,(g,v)=>{!g&&v&&v.length>0?(o=v.slice(0,16),d=v.slice(16),s.record(60,i)):s.record(61,i),f()})}}_verifyCachedData(e,i,s,n,l){n&&(e.cachedDataRejected||setTimeout(()=>{const d=this._crypto.createHash(\"md5\").update(i,\"utf8\").digest();n.equals(d)||(l.getConfig().onError(new Error(`FAILED TO VERIFY CACHED DATA, deleting stale '${s}' now, but a RESTART IS REQUIRED`)),this._fs.unlink(s,o=>{o&&l.getConfig().onError(o)}))},Math.ceil(5e3*(1+Math.random()))))}}r._BOM=65279,r._PREFIX=\"(function (require, define, __filename, __dirname) { \",r._SUFFIX=`\n});`;function c(t,e){if(e.__$__isRecorded)return e;const i=function(n){t.record(33,n);try{return e(n)}finally{t.record(34,n)}};return i.__$__isRecorded=!0,i}u.ensureRecordedNodeRequire=c;function a(t){return new y(t)}u.createScriptLoader=a})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(u){class y{constructor(t){let e=t.lastIndexOf(\"/\");e!==-1?this.fromModulePath=t.substr(0,e+1):this.fromModulePath=\"\"}static _normalizeModuleId(t){let e=t,i;for(i=/\\/\\.\\//;i.test(e);)e=e.replace(i,\"/\");for(e=e.replace(/^\\.\\//g,\"\"),i=/\\/(([^\\/])|([^\\/][^\\/\\.])|([^\\/\\.][^\\/])|([^\\/][^\\/][^\\/]+))\\/\\.\\.\\//;i.test(e);)e=e.replace(i,\"/\");return e=e.replace(/^(([^\\/])|([^\\/][^\\/\\.])|([^\\/\\.][^\\/])|([^\\/][^\\/][^\\/]+))\\/\\.\\.\\//,\"\"),e}resolveModule(t){let e=t;return u.Utilities.isAbsolutePath(e)||(u.Utilities.startsWith(e,\"./\")||u.Utilities.startsWith(e,\"../\"))&&(e=y._normalizeModuleId(this.fromModulePath+e)),e}}y.ROOT=new y(\"\"),u.ModuleIdResolver=y;class m{constructor(t,e,i,s,n,l){this.id=t,this.strId=e,this.dependencies=i,this._callback=s,this._errorback=n,this.moduleIdResolver=l,this.exports={},this.error=null,this.exportsPassedIn=!1,this.unresolvedDependenciesCount=this.dependencies.length,this._isComplete=!1}static _safeInvokeFunction(t,e){try{return{returnedValue:t.apply(u.global,e),producedError:null}}catch(i){return{returnedValue:null,producedError:i}}}static _invokeFactory(t,e,i,s){return t.shouldInvokeFactory(e)?t.shouldCatchError()?this._safeInvokeFunction(i,s):{returnedValue:i.apply(u.global,s),producedError:null}:{returnedValue:null,producedError:null}}complete(t,e,i,s){this._isComplete=!0;let n=null;if(this._callback)if(typeof this._callback==\"function\"){t.record(21,this.strId);let l=m._invokeFactory(e,this.strId,this._callback,i);n=l.producedError,t.record(22,this.strId),!n&&typeof l.returnedValue<\"u\"&&(!this.exportsPassedIn||u.Utilities.isEmpty(this.exports))&&(this.exports=l.returnedValue)}else this.exports=this._callback;if(n){let l=u.ensureError(n);l.phase=\"factory\",l.moduleId=this.strId,l.neededBy=s(this.id),this.error=l,e.onError(l)}this.dependencies=null,this._callback=null,this._errorback=null,this.moduleIdResolver=null}onDependencyError(t){return this._isComplete=!0,this.error=t,this._errorback?(this._errorback(t),!0):!1}isComplete(){return this._isComplete}}u.Module=m;class p{constructor(){this._nextId=0,this._strModuleIdToIntModuleId=new Map,this._intModuleIdToStrModuleId=[],this.getModuleId(\"exports\"),this.getModuleId(\"module\"),this.getModuleId(\"require\")}getMaxModuleId(){return this._nextId}getModuleId(t){let e=this._strModuleIdToIntModuleId.get(t);return typeof e>\"u\"&&(e=this._nextId++,this._strModuleIdToIntModuleId.set(t,e),this._intModuleIdToStrModuleId[e]=t),e}getStrModuleId(t){return this._intModuleIdToStrModuleId[t]}}class h{constructor(t){this.id=t}}h.EXPORTS=new h(0),h.MODULE=new h(1),h.REQUIRE=new h(2),u.RegularDependency=h;class r{constructor(t,e,i){this.id=t,this.pluginId=e,this.pluginParam=i}}u.PluginDependency=r;class c{constructor(t,e,i,s,n=0){this._env=t,this._scriptLoader=e,this._loaderAvailableTimestamp=n,this._defineFunc=i,this._requireFunc=s,this._moduleIdProvider=new p,this._config=new u.Configuration(this._env),this._hasDependencyCycle=!1,this._modules2=[],this._knownModules2=[],this._inverseDependencies2=[],this._inversePluginDependencies2=new Map,this._currentAnonymousDefineCall=null,this._recorder=null,this._buildInfoPath=[],this._buildInfoDefineStack=[],this._buildInfoDependencies=[],this._requireFunc.moduleManager=this}reset(){return new c(this._env,this._scriptLoader,this._defineFunc,this._requireFunc,this._loaderAvailableTimestamp)}getGlobalAMDDefineFunc(){return this._defineFunc}getGlobalAMDRequireFunc(){return this._requireFunc}static _findRelevantLocationInStack(t,e){let i=l=>l.replace(/\\\\/g,\"/\"),s=i(t),n=e.split(/\\n/);for(let l=0;l<n.length;l++){let d=n[l].match(/(.*):(\\d+):(\\d+)\\)?$/);if(d){let o=d[1],_=d[2],f=d[3],g=Math.max(o.lastIndexOf(\" \")+1,o.lastIndexOf(\"(\")+1);if(o=o.substr(g),o=i(o),o===s){let v={line:parseInt(_,10),col:parseInt(f,10)};return v.line===1&&(v.col-=53),v}}}throw new Error(\"Could not correlate define call site for needle \"+t)}getBuildInfo(){if(!this._config.isBuild())return null;let t=[],e=0;for(let i=0,s=this._modules2.length;i<s;i++){let n=this._modules2[i];if(!n)continue;let l=this._buildInfoPath[n.id]||null,d=this._buildInfoDefineStack[n.id]||null,o=this._buildInfoDependencies[n.id];t[e++]={id:n.strId,path:l,defineLocation:l&&d?c._findRelevantLocationInStack(l,d):null,dependencies:o,shim:null,exports:n.exports}}return t}getRecorder(){return this._recorder||(this._config.shouldRecordStats()?this._recorder=new u.LoaderEventRecorder(this._loaderAvailableTimestamp):this._recorder=u.NullLoaderEventRecorder.INSTANCE),this._recorder}getLoaderEvents(){return this.getRecorder().getEvents()}enqueueDefineAnonymousModule(t,e){if(this._currentAnonymousDefineCall!==null)throw new Error(\"Can only have one anonymous define call per script file\");let i=null;this._config.isBuild()&&(i=new Error(\"StackLocation\").stack||null),this._currentAnonymousDefineCall={stack:i,dependencies:t,callback:e}}defineModule(t,e,i,s,n,l=new y(t)){let d=this._moduleIdProvider.getModuleId(t);if(this._modules2[d]){this._config.isDuplicateMessageIgnoredFor(t)||console.warn(\"Duplicate definition of module '\"+t+\"'\");return}let o=new m(d,t,this._normalizeDependencies(e,l),i,s,l);this._modules2[d]=o,this._config.isBuild()&&(this._buildInfoDefineStack[d]=n,this._buildInfoDependencies[d]=(o.dependencies||[]).map(_=>this._moduleIdProvider.getStrModuleId(_.id))),this._resolve(o)}_normalizeDependency(t,e){if(t===\"exports\")return h.EXPORTS;if(t===\"module\")return h.MODULE;if(t===\"require\")return h.REQUIRE;let i=t.indexOf(\"!\");if(i>=0){let s=e.resolveModule(t.substr(0,i)),n=e.resolveModule(t.substr(i+1)),l=this._moduleIdProvider.getModuleId(s+\"!\"+n),d=this._moduleIdProvider.getModuleId(s);return new r(l,d,n)}return new h(this._moduleIdProvider.getModuleId(e.resolveModule(t)))}_normalizeDependencies(t,e){let i=[],s=0;for(let n=0,l=t.length;n<l;n++)i[s++]=this._normalizeDependency(t[n],e);return i}_relativeRequire(t,e,i,s){if(typeof e==\"string\")return this.synchronousRequire(e,t);this.defineModule(u.Utilities.generateAnonymousModule(),e,i,s,null,t)}synchronousRequire(t,e=new y(t)){let i=this._normalizeDependency(t,e),s=this._modules2[i.id];if(!s)throw new Error(\"Check dependency list! Synchronous require cannot resolve module '\"+t+\"'. This is the first mention of this module!\");if(!s.isComplete())throw new Error(\"Check dependency list! Synchronous require cannot resolve module '\"+t+\"'. This module has not been resolved completely yet.\");if(s.error)throw s.error;return s.exports}configure(t,e){let i=this._config.shouldRecordStats();e?this._config=new u.Configuration(this._env,t):this._config=this._config.cloneAndMerge(t),this._config.shouldRecordStats()&&!i&&(this._recorder=null)}getConfig(){return this._config}_onLoad(t){if(this._currentAnonymousDefineCall!==null){let e=this._currentAnonymousDefineCall;this._currentAnonymousDefineCall=null,this.defineModule(this._moduleIdProvider.getStrModuleId(t),e.dependencies,e.callback,null,e.stack)}}_createLoadError(t,e){let i=this._moduleIdProvider.getStrModuleId(t),s=(this._inverseDependencies2[t]||[]).map(l=>this._moduleIdProvider.getStrModuleId(l));const n=u.ensureError(e);return n.phase=\"loading\",n.moduleId=i,n.neededBy=s,n}_onLoadError(t,e){const i=this._createLoadError(t,e);this._modules2[t]||(this._modules2[t]=new m(t,this._moduleIdProvider.getStrModuleId(t),[],()=>{},null,null));let s=[];for(let d=0,o=this._moduleIdProvider.getMaxModuleId();d<o;d++)s[d]=!1;let n=!1,l=[];for(l.push(t),s[t]=!0;l.length>0;){let d=l.shift(),o=this._modules2[d];o&&(n=o.onDependencyError(i)||n);let _=this._inverseDependencies2[d];if(_)for(let f=0,g=_.length;f<g;f++){let v=_[f];s[v]||(l.push(v),s[v]=!0)}}n||this._config.onError(i)}_hasDependencyPath(t,e){let i=this._modules2[t];if(!i)return!1;let s=[];for(let l=0,d=this._moduleIdProvider.getMaxModuleId();l<d;l++)s[l]=!1;let n=[];for(n.push(i),s[t]=!0;n.length>0;){let d=n.shift().dependencies;if(d)for(let o=0,_=d.length;o<_;o++){let f=d[o];if(f.id===e)return!0;let g=this._modules2[f.id];g&&!s[f.id]&&(s[f.id]=!0,n.push(g))}}return!1}_findCyclePath(t,e,i){if(t===e||i===50)return[t];let s=this._modules2[t];if(!s)return null;let n=s.dependencies;if(n)for(let l=0,d=n.length;l<d;l++){let o=this._findCyclePath(n[l].id,e,i+1);if(o!==null)return o.push(t),o}return null}_createRequire(t){let e=(i,s,n)=>this._relativeRequire(t,i,s,n);return e.toUrl=i=>this._config.requireToUrl(t.resolveModule(i)),e.getStats=()=>this.getLoaderEvents(),e.hasDependencyCycle=()=>this._hasDependencyCycle,e.config=(i,s=!1)=>{this.configure(i,s)},e.__$__nodeRequire=u.global.nodeRequire,e}_loadModule(t){if(this._modules2[t]||this._knownModules2[t])return;this._knownModules2[t]=!0;let e=this._moduleIdProvider.getStrModuleId(t),i=this._config.moduleIdToPaths(e),s=/^@[^\\/]+\\/[^\\/]+$/;this._env.isNode&&(e.indexOf(\"/\")===-1||s.test(e))&&i.push(\"node|\"+e);let n=-1,l=d=>{if(n++,n>=i.length)this._onLoadError(t,d);else{let o=i[n],_=this.getRecorder();if(this._config.isBuild()&&o===\"empty:\"){this._buildInfoPath[t]=o,this.defineModule(this._moduleIdProvider.getStrModuleId(t),[],null,null,null),this._onLoad(t);return}_.record(10,o),this._scriptLoader.load(this,o,()=>{this._config.isBuild()&&(this._buildInfoPath[t]=o),_.record(11,o),this._onLoad(t)},f=>{_.record(12,o),l(f)})}};l(null)}_loadPluginDependency(t,e){if(this._modules2[e.id]||this._knownModules2[e.id])return;this._knownModules2[e.id]=!0;let i=s=>{this.defineModule(this._moduleIdProvider.getStrModuleId(e.id),[],s,null,null)};i.error=s=>{this._config.onError(this._createLoadError(e.id,s))},t.load(e.pluginParam,this._createRequire(y.ROOT),i,this._config.getOptionsLiteral())}_resolve(t){let e=t.dependencies;if(e)for(let i=0,s=e.length;i<s;i++){let n=e[i];if(n===h.EXPORTS){t.exportsPassedIn=!0,t.unresolvedDependenciesCount--;continue}if(n===h.MODULE){t.unresolvedDependenciesCount--;continue}if(n===h.REQUIRE){t.unresolvedDependenciesCount--;continue}let l=this._modules2[n.id];if(l&&l.isComplete()){if(l.error){t.onDependencyError(l.error);return}t.unresolvedDependenciesCount--;continue}if(this._hasDependencyPath(n.id,t.id)){this._hasDependencyCycle=!0,console.warn(\"There is a dependency cycle between '\"+this._moduleIdProvider.getStrModuleId(n.id)+\"' and '\"+this._moduleIdProvider.getStrModuleId(t.id)+\"'. The cyclic path follows:\");let d=this._findCyclePath(n.id,t.id,0)||[];d.reverse(),d.push(n.id),console.warn(d.map(o=>this._moduleIdProvider.getStrModuleId(o)).join(` => \n`)),t.unresolvedDependenciesCount--;continue}if(this._inverseDependencies2[n.id]=this._inverseDependencies2[n.id]||[],this._inverseDependencies2[n.id].push(t.id),n instanceof r){let d=this._modules2[n.pluginId];if(d&&d.isComplete()){this._loadPluginDependency(d.exports,n);continue}let o=this._inversePluginDependencies2.get(n.pluginId);o||(o=[],this._inversePluginDependencies2.set(n.pluginId,o)),o.push(n),this._loadModule(n.pluginId);continue}this._loadModule(n.id)}t.unresolvedDependenciesCount===0&&this._onModuleComplete(t)}_onModuleComplete(t){let e=this.getRecorder();if(t.isComplete())return;let i=t.dependencies,s=[];if(i)for(let o=0,_=i.length;o<_;o++){let f=i[o];if(f===h.EXPORTS){s[o]=t.exports;continue}if(f===h.MODULE){s[o]={id:t.strId,config:()=>this._config.getConfigForModule(t.strId)};continue}if(f===h.REQUIRE){s[o]=this._createRequire(t.moduleIdResolver);continue}let g=this._modules2[f.id];if(g){s[o]=g.exports;continue}s[o]=null}const n=o=>(this._inverseDependencies2[o]||[]).map(_=>this._moduleIdProvider.getStrModuleId(_));t.complete(e,this._config,s,n);let l=this._inverseDependencies2[t.id];if(this._inverseDependencies2[t.id]=null,l)for(let o=0,_=l.length;o<_;o++){let f=l[o],g=this._modules2[f];g.unresolvedDependenciesCount--,g.unresolvedDependenciesCount===0&&this._onModuleComplete(g)}let d=this._inversePluginDependencies2.get(t.id);if(d){this._inversePluginDependencies2.delete(t.id);for(let o=0,_=d.length;o<_;o++)this._loadPluginDependency(t.exports,d[o])}}}u.ModuleManager=c})(AMDLoader||(AMDLoader={}));var define,AMDLoader;(function(u){const y=new u.Environment;let m=null;const p=function(a,t,e){typeof a!=\"string\"&&(e=t,t=a,a=null),(typeof t!=\"object\"||!Array.isArray(t))&&(e=t,t=null),t||(t=[\"require\",\"exports\",\"module\"]),a?m.defineModule(a,t,e,null,null):m.enqueueDefineAnonymousModule(t,e)};p.amd={jQuery:!0};const h=function(a,t=!1){m.configure(a,t)},r=function(){if(arguments.length===1){if(arguments[0]instanceof Object&&!Array.isArray(arguments[0])){h(arguments[0]);return}if(typeof arguments[0]==\"string\")return m.synchronousRequire(arguments[0])}if((arguments.length===2||arguments.length===3)&&Array.isArray(arguments[0])){m.defineModule(u.Utilities.generateAnonymousModule(),arguments[0],arguments[1],arguments[2],null);return}throw new Error(\"Unrecognized require call\")};r.config=h,r.getConfig=function(){return m.getConfig().getOptionsLiteral()},r.reset=function(){m=m.reset()},r.getBuildInfo=function(){return m.getBuildInfo()},r.getStats=function(){return m.getLoaderEvents()},r.define=p;function c(){if(typeof u.global.require<\"u\"||typeof require<\"u\"){const a=u.global.require||require;if(typeof a==\"function\"&&typeof a.resolve==\"function\"){const t=u.ensureRecordedNodeRequire(m.getRecorder(),a);u.global.nodeRequire=t,r.nodeRequire=t,r.__$__nodeRequire=t}}y.isNode&&!y.isElectronRenderer&&!y.isElectronNodeIntegrationWebWorker?module.exports=r:(y.isElectronRenderer||(u.global.define=p),u.global.require=r)}u.init=c,(typeof u.global.define!=\"function\"||!u.global.define.amd)&&(m=new u.ModuleManager(y,u.createScriptLoader(y),p,r,u.Utilities.getHighPerformanceTimestamp()),typeof u.global.require<\"u\"&&typeof u.global.require!=\"function\"&&r.config(u.global.require),define=function(){return p.apply(null,arguments)},define.amd=p.amd,typeof doNotInitLoader>\"u\"&&c())})(AMDLoader||(AMDLoader={}));\n\n//# sourceMappingURL=../../min-maps/vs/loader.js.map"
  },
  {
    "path": "web/public/locales/en/translation.json",
    "content": "{\n  \"CollectionPanel\": {\n    \"AddCollection\": \"Create Collection\",\n    \"AddData\": \"Add Data\",\n    \"AddIndex\": \"Add Index\",\n    \"AddPolicy\": \"Add Access Policy\",\n    \"AddRules\": \"Add Rule\",\n    \"Collection\": \"Collection\",\n    \"CollectionList\": \"Collections\",\n    \"CollectionName\": \"Name\",\n    \"CollectionPlaceholder\": \"Please enter a collection name\",\n    \"ConformDelete\": \"Are you sure to delete this policy?\",\n    \"DeleteCollection\": \"Delete Collection\",\n    \"DeleteCollectionTip\": \"The current operation will permanently delete the collection\",\n    \"EditPolicy\": \"Edit Access Policy\",\n    \"EmptyCollectionText\": \"No collection information yet,\",\n    \"EmptyPolicyText\": \"No strategy information yet,\",\n    \"IndexName\": \"Index name\",\n    \"InputName\": \"Please enter a collection name\",\n    \"Policy\": \"Access Policy\",\n    \"PolicyAddress\": \"Entry Address\",\n    \"PolicyName\": \"Policy ID\",\n    \"PolicyNameTip\": \"Please enter a policy ID\",\n    \"RulesContent\": \"Rule content\",\n    \"RulesNum\": \"Number of Rules\",\n    \"SelectCollection\": \"Select Collection\",\n    \"SelectFunction\": \"Please select a cloud function\",\n    \"EmptyCollectionTip\": \"You have not created a collection\",\n    \"EmptyDataText\": \"No data information,\",\n    \"EmptyPolicyTip\": \"You have not created a policy\",\n    \"EmptyRuleTip\": \"This policy has no rules\",\n    \"Query\": \"Please input the MongoDb query statement, press Enter to query. For example: { _id: ObjectId('') }.\",\n    \"Search\": \"Please enter ID to search\",\n    \"CreateTagTip\": \"Press \\\"Enter\\\" to separate tags, each tag can be up to 16 characters\",\n    \"CollectionNameRule\": \"The collection name can only start with a letter and consist of 3 to 32 characters including letters, _ or -\",\n    \"IndexManage\": \"Index manage\",\n    \"ConfirmDeleteIndex\": \"Are you sure to delete the index?\",\n    \"IndexKey\": \"Index key\",\n    \"SelectIndexType\": \"Select a type\",\n    \"AddIndexKey\": \"Add key\",\n    \"AdvancedOptions\": \"Advanced options\",\n    \"CreateIndex\": \"Create index\",\n    \"CapacityLimit\": \"Capacity\",\n    \"CreateTTL\": \"Create TTL\",\n    \"CreateUniqueIndex\": \"Create unique index\",\n    \"UniqueIndexDescription\": \"A unique index ensures that the indexed keys do not store duplicate values. If there is already duplicate data in the field, an error is reported when creating a unique index.\",\n    \"TTLDescription\": \"TTL indexes are special single-field indexes that MongoDB can use to automatically remove documents from a collection after a certain amount of time or at a specific clock time.\",\n    \"CapacityLimitDescription\": \"Use a \\\"fixed collection\\\" to limit the size of a collection.A fixed collection has a fixed size, and when it is full, new documents replace the oldest ones.\",\n    \"DocumentNum\": \"doc\"\n  },\n  \"Add\": \"Add \",\n  \"AddData\": \"Add data\",\n  \"AddSuccess\": \"Added successfully\",\n  \"Auth\": {\n    \"migrationNotice\": \"The laf platform has been migrated to sealos and no longer supports new registrations. Please use sealaf, click to jump to sealos\"\n  },\n  \"Cancel\": \"Cancel\",\n  \"Close\": \"Close\",\n  \"Confirm\": \"Confirm\",\n  \"Copied\": \"copied\",\n  \"Copy\": \"Copy\",\n  \"Create\": \"New application\",\n  \"Change\": \"Specification\",\n  \"CreateNow\": \"Create Now\",\n  \"Custom\": \"customize\",\n  \"Days\": \"days\",\n  \"Delete\": \"Delete \",\n  \"DeleteConfirm\": \"Are you sure to delete this row of data?\",\n  \"DeleteSuccess\": \"successfully deleted\",\n  \"DeleteTip\": \"cannot be undone\",\n  \"Edit\": \"Edit\",\n  \"Empty\": \"Empty\",\n  \"Generate\": \"generate\",\n  \"InputTip\": \"Please enter\",\n  \"IsRequired\": \" is required\",\n  \"LimitSelect\": \"Please select at least one\",\n  \"Logout\": \"Logout\",\n  \"Name\": \"name\",\n  \"Operation\": \"Operation\",\n  \"Page\": \"Page\",\n  \"Save\": \"Save\",\n  \"Search\": \"Search\",\n  \"ToConfirm\": \"to confirm\",\n  \"NameNotMatch\": \"Name not match\",\n  \"Total\": \"Total\",\n  \"Update\": \"Update \",\n  \"UpdateSuccess\": \"Update Success\",\n  \"moreOperations\": \"More Operations\",\n  \"openPopover\": \"Click here to open a popover\",\n  \"FunctionPanel\": {\n    \"AddFunction\": \"New Function\",\n    \"Code\": \"Function Template\",\n    \"ConfirmDeploy\": \"Confirm Deploy\",\n    \"CustomDependence\": \"Custom\",\n    \"CustomDependenceTip\": \"No custom dependencies yet\",\n    \"DeleteDependencyConfirm\": \"Are you sure you want to delete the npm package?\",\n    \"Debug\": \"Run\",\n    \"DebugResult\": \"Result\",\n    \"DeleteConfirm\": \"Are you sure you want to delete the function?\",\n    \"Dependence\": \"Dependence\",\n    \"DependenceAdd\": \"Add Dependencies\",\n    \"DependenceEdit\": \"Edit Dependencies\",\n    \"DependenceName\": \"Dependency Package Name\",\n    \"DependenceTip\": \"Please enter the dependent package name\",\n    \"DependenceVersion\": \"Dependency Version\",\n    \"Deploy\": \"Deploy\",\n    \"DeploySuccess\": \"Deploy successfully\",\n    \"Fetch\": \"Fetch\",\n    \"FetchSuccess\": \"Restore successfully\",\n    \"Description\": \"Input Function Description Information\",\n    \"EditFunction\": \"Edit Function\",\n    \"Function\": \"Function\",\n    \"FunctionList\": \"Functions\",\n    \"FunctionName\": \"Function Name\",\n    \"FunctionNameTip\": \"The unique identifier of the function, such as get-user, can be used to create folders in the form of 'user/get-user'.\",\n    \"InterfaceDebug\": \"Debug\",\n    \"Methods\": \"Method\",\n    \"Name\": \"KEY\",\n    \"Tags\": \"Tags\",\n    \"SearchPlaceholder\": \"Please enter the function name query\",\n    \"Select\": \"chosen\",\n    \"SystemDependence\": \"Built-In\",\n    \"Value\": \"Value\",\n    \"isSupport\": \"Whether to support\",\n    \"FunctionNameRule\": \"Function names must consist of letters, numbers, periods (.), and hyphens (-), matching the regex: /^[a-zA-Z0-9_.\\\\-](?:[a-zA-Z0-9_.\\\\-/]{0,254}[a-zA-Z0-9_.\\\\-])?$/.\",\n    \"EmptyDebugTip\": \"No results yet\",\n    \"EmptyFunctionTip\": \"You have not created the function\",\n    \"UploadButton\": \"upload\",\n    \"LeaveFunctionPage\": \"About to leave the function edit page\",\n    \"PromptDescription\": \"Use natural language to describe your needs, laf will help you generate code, for example: help me write a hello world, return {hello: 'laf AI'}\",\n    \"CreateWithAITip\": \"Create functions with AI assistance\",\n    \"CreateNow\": \"Create Now\",\n    \"CreateFromTemplate\": \"More Templates\",\n    \"getCodeOnline\": \"Retrieve the latest released online code\",\n    \"versionHistory\": \"Version History\",\n    \"Restore\": \"Restore\",\n    \"Invite\": \"Invite\",\n    \"HistoryTips\": \"No historical versions available\",\n    \"NoDesc\": \"No Description\",\n    \"CurrentVersion\": \"Current Version\",\n    \"HistoryVersion\": \"History version\",\n    \"DeployChangelog\": \"Input the description of this function modification (optional)\",\n    \"MoveFunctionTip\": \"Are you sure to move {{srcFunc}} to {{targetDir}} directory?\",\n    \"MoveFunctionToRootTip\": \"Are you sure to move {{srcFunc}} to the root directory?\",\n    \"MovingFunction\": \"Moving functions...\",\n    \"DependenceInstallTip\": \"Please wait for the completion of dependencies installation after saving. Check the progress in \\\"Logs\\\"\",\n    \"CopyOpenAPIUrl\": \"Copy OpenAPI url\"\n  },\n  \"HomePanel\": {\n    \"APP\": \"Android or iOS app\",\n    \"Application\": \"Application \",\n    \"Blog\": \"Personal blog, corporate official website\",\n    \"Develop\": \"Develop\",\n    \"Enterprise\": \"Enterprise information construction\",\n    \"Explore\": \"waiting for you to explore\",\n    \"Hello\": \"Hello\",\n    \"Introduction\": \"Here, you can develop any application as a full-stack, backend, cloud development user, Node.js developer, independent developer, etc., for example:\",\n    \"MyApp\": \"My Applications\",\n    \"Personal\": \"Personal developer's \\\"handy cloud\\\"\",\n    \"Region\": \"Region\",\n    \"RuntimeName\": \"Runtime\",\n    \"State\": \"State\",\n    \"Use\": \"Come and create an application of your own~\",\n    \"WX\": \"WeChat Mini Program/Public Account\",\n    \"Welcome\": \"Welcome to the LAF cloud development platform!\",\n    \"DeleteApp\": \"delete apps\",\n    \"DeleteTip\": \"The current operation will permanently delete applications, including functions, data, cloud storage, etc. related data related to the application. After deleting, <strong> will not be able to cancel </strong>,please enter <strong>{{appId}}</strong> confirm\",\n    \"Duration\": \"Duration\",\n    \"Spec\": \"Spec\",\n    \"WelcomeTo\": \"Welcome to\",\n    \"LAF\": \"the LAF cloud development platform!\"\n  },\n  \"SpecItem\": {\n    \"cpu\": \"CPU\",\n    \"memory\": \"Memory\",\n    \"databaseCapacity\": \"Database\",\n    \"storageCapacity\": \"Storage\",\n    \"capacity\": \"Capacity\",\n    \"replicas\": \"Replicas\"\n  },\n  \"LogPanel\": {\n    \"Detail\": \"Log Details\",\n    \"Log\": \"Log\",\n    \"EmptyLogTip\": \"No log information\"\n  },\n  \"SettingPanel\": {\n    \"AddAppEnv\": \"Add Environment Variables\",\n    \"AppEnv\": \"Environment Variable\",\n    \"Expire\": \"Expiration\",\n    \"Setting\": \"Setting\",\n    \"SystemSetting\": \"Application Settings\",\n    \"UserSetting\": \"User Info\",\n    \"UpdateConfirm\": \"Continue to update environment variables?\",\n    \"BaseInfo\": \"Basic Info\",\n    \"DB\": \"Database\",\n    \"Start\": \"Start\",\n    \"Delete\": \"Delete\",\n    \"Detail\": \"Spec Detail\",\n    \"Disk\": \"Hard Disk\",\n    \"Memory\": \"Memory\",\n    \"Restart\": \"Restart\",\n    \"network\": \"Outgoing capacity\",\n    \"AppInfo\": \"Application Info\",\n    \"Auth\": \"Real-name Authentication\",\n    \"Code\": \"Code\",\n    \"CodeTip\": \"Please enter a four-digit verification code\",\n    \"ID\": \"ID\",\n    \"IDTip\": \"Please enter a valid ID number\",\n    \"Name\": \"Real name\",\n    \"Registered\": \"RegTime\",\n    \"SendCode\": \"Send Code\",\n    \"Tel\": \"Mobile\",\n    \"TelTip\": \"Please enter a valid Mobile phone number\",\n    \"ToAuth\": \"Authenticate Now\",\n    \"UserInfo\": \"UserInfo\",\n    \"noAuth\": \"Not Authenticated\",\n    \"showAuth\": \"Go to Auth\",\n    \"Subscription\": \"Subscription Info\",\n    \"Usage\": \"Usage Center\",\n    \"Avatar\": \"Avatar\",\n    \"UserName\": \"UserName\",\n    \"Email\": \"Email\",\n    \"PassWord\": \"PassWord\",\n    \"UserInvite\": \"UserInvite\",\n    \"UserCenter\": \"User Center\",\n    \"CostOverview\": \"Cost Overview\",\n    \"CardRedemption\": \"Card Redemption\",\n    \"BillingDetails\": \"Billing Details\",\n    \"RechargeHistory\": \"Recharge History\",\n    \"PricingStandards\": \"Pricing Standards\",\n    \"EnterGiftCode\": \"Enter Gift Code\",\n    \"ExchangeSuccess\": \"Exchange Success\",\n    \"Domain\": \"Custom Domain\",\n    \"MyAccount\": \"My Account\",\n    \"CostTrend\": \"Cost Trend\",\n    \"Balance\": \"Balance\",\n    \"Pause\": \"Pause\",\n    \"PauseTips\": \"Are you sure you want to pause this application?\",\n    \"RestartTips\": \"Restart the database together?\",\n    \"RestartTips1\": \"Are you sure you want to restart the application?\",\n    \"CommonSetting\": \"Common Settings\",\n    \"EditorFont\": \"Editor Font\",\n    \"FontSize\": \"Font Size\",\n    \"FuncListDisplay\": \"Function List Display\",\n    \"ListDisplay\": \"List Display\",\n    \"EditorLanguageServer\": \"Editor Language Server\",\n    \"isOpenLanguageServer\": \"Enable typescript language server (only effective when the spec of the app is above 1C 2G)\",\n    \"Editor\": \"Editor\",\n    \"FuncList\": \"Function List\",\n    \"EditorMode\": \"Editor Mode\",\n    \"OldLogs\": \"Old Logs\",\n    \"MonitorSetting\": \"Resource Monitor\",\n    \"DatabaseMonitor\": \"Database monitor\",\n    \"RuntimeMonitor\": \"Runtime monitor\",\n    \"ClientSetting\": \"Client settings\",\n    \"AICompletion\": \"Enable code intelligent completion (need refresh)\"\n  },\n  \"StoragePanel\": {\n    \"All\": \"Total Capacity\",\n    \"DeleteConfirm\": \"The current operation will permanently delete the cloud storage\",\n    \"DeleteFileTip\": \"Are you sure you want to delete the file?\",\n    \"DeleteFolderTip\": \"Are you sure you want to delete the whole folder? Notice that it will be a bit slower when a large number of files exist.\",\n    \"Drag\": \"Drag and drop here or\",\n    \"EmptyText\": \"No Bucket data yet ,\",\n    \"File\": \"File\",\n    \"FileName\": \"File Name\",\n    \"FileType\": \"File Type\",\n    \"Folder\": \"Folder\",\n    \"FolderName\": \"Folder name\",\n    \"NameTip\": \"Please enter a folder name\",\n    \"Policy\": \"Permissions\",\n    \"Private\": \"Private\",\n    \"Readonly\": \"Readonly\",\n    \"ReadWrite\": \"ReadWrite\",\n    \"SearchBucket\": \"Please enter the bucket name to search\",\n    \"Size\": \"Size\",\n    \"Storage\": \"Storage\",\n    \"StorageNameTip\": \"Please enter the cloud storage name\",\n    \"Success\": \"uploaded successfully\",\n    \"Time\": \"Update Time\",\n    \"TimeTip\": \"Temporary link, valid for 15 minutes\",\n    \"Upload\": \"Upload\",\n    \"Used\": \"Used\",\n    \"UploadTip\": \"Please select a file or folder to upload\",\n    \"Bucket\": \"bucket\",\n    \"BucketName\": \"Bucket name\",\n    \"CreateBucket\": \"Create buckets\",\n    \"EditBucket\": \"Edit Bucket\",\n    \"DeleteBucket\": \"Delete Buckets\",\n    \"BucketNameRule\": \"The bucket name must consist of lowercase letters, numbers and hyphens (-), with a length between 3 and 32 characters, and cannot start or end with a hyphen (-).\",\n    \"BucketNamePlaceholder\": \"bucket name\",\n    \"StorageList\": \"Storages\",\n    \"EmptyStorageTip\": \"You have not created a Bucket\",\n    \"UploadFile\": \"Upload File\",\n    \"UploadFolder\": \"Upload Folder\",\n    \"domain\": \"Domain\",\n    \"domainTip\": \"please input domain\",\n    \"websiteHost\": \"Enable website hosting\",\n    \"Inaccessible\": \"Inaccessible\",\n    \"isResolved\": \"Effective\",\n    \"cnameTip\": \"Add the \\\"CNAME\\\" record of the domain to resolve to <strong>{{cnameDomain}}</strong>, After the resolution takes effect, the custom domain name can be bound.\",\n    \"editHostTip\": \"oss-bucket needs to be in readOnly mode to enable website hosting\",\n    \"CreateWebHosting\": \"Bind custom domain name\",\n    \"CustomDomain\": \"Custom Domain\",\n    \"CurrentDomain\": \"Current domain: \",\n    \"RemoveHost\": \"Remove Host\",\n    \"CancelHost\": \"Cancel Host\",\n    \"InstantUpload\": \"Instant Upload\",\n    \"parsing\": \"parsing\",\n    \"DomainUpdateSuccess\": \"Domain Update Success\",\n    \"DomainDeleteSuccess\": \"Domain Delete Success\",\n    \"CustomApplicationDomain\": \"Custom Application Domain\",\n    \"BucketNameisRequired\": \"Bucket name is required\",\n    \"Fail\": \"upload failed\",\n    \"UploadFailTip\": \"{{number}} files upload failed\",\n    \"StartAppTips\": \" Please start the application first\",\n    \"SuccessfullyHosted\": \"Successfully hosted\",\n    \"SuccessfullyHostedTips\": \"HTTP is active, HTTPS activation may take some time. To check the hosting status, use HTTP for now.\",\n    \"BucketTips\": \"Newly created buckets or buckets after app restart need to wait for 15 ~ 30 s to take effect\",\n    \"DomainNotResolved\": \"Try using ping or nslookup to check if domain name resolution is effective\",\n    \"DeleteFiles\": \"Are you sure you want to delete {{num}} directories or files?\",\n    \"DeletingFiles\": \"Deleting {{num}} directories or files...\",\n    \"DeleteFilesResult\": \"Delete directories or files: {{successNum}} success, {{failedNum}} failed.\"\n  },\n  \"TriggerPanel\": {\n    \"AddTrigger\": \"Add Trigger\",\n    \"CornTip\": \"Example:  * * * * * \\nIndicates that the task is executed every 1 minute\",\n    \"DeleteConfirm\": \"Are you sure you want to delete this trigger\",\n    \"Express\": \"expression\",\n    \"Function\": \"Correlation function\",\n    \"FunctionTip\": \"Please select the associated cloud function\",\n    \"Name\": \"trigger name\",\n    \"NameTip\": \"Please enter a trigger name\",\n    \"SearchTip\": \"Enter trigger name lookup\",\n    \"SetTimeout\": \"timed task\",\n    \"Time\": \"Creation/update time\",\n    \"Trigger\": \"Trigger\",\n    \"Type\": \"Type\",\n    \"CronHelp\": \"more examples\",\n    \"Cron\": \"expression\",\n    \"EmptyTriggerTip\": \"You have not created a trigger,\",\n    \"Every8AM\": \"8 am every day\",\n    \"EveryHour\": \"per hour\",\n    \"EveryFiveMinutes\": \"every five minutes\",\n    \"createFail\": \"Trigger limit reached. Upgrade app configuration.\"\n  },\n  \"StatusBar\": {\n    \"CurrentApplication\": \"Current App\"\n  },\n  \"NoData\": \"Currently no data\",\n  \"SaveAndRestart\": \"save and restart\",\n  \"DataEntry\": {\n    \"CreateError\": \"field cannot be empty\"\n  },\n  \"Refresh\": \"Refresh\",\n  \"RefreshData\": \"Refresh\",\n  \"EditTip\": \"modified, unpublished\",\n  \"NoInfo\": \"No information\",\n  \"RefreshDataSuccess\": \"data refreshed\",\n  \"database example\": \"database example\",\n  \"update success\": \"update completed\",\n  \"Take me home\": \"Take me home\",\n  \"404Message\": \"We can't find that page\",\n  \"403Message\": \"You don't have permission to access this page\",\n  \"Bucket\": {\n    \"StatusTip\": \"External access needs to set the bucket permission to readonly\"\n  },\n  \"Restart\": \"Restart\",\n  \"ShutDown\": \"ShutDown\",\n  \"Charge\": \"Charge\",\n  \"Back\": \"Return\",\n  \"Personal Access Token\": \"Personal Access Token\",\n  \"SwitchLanguage\": \"Switch Language\",\n  \"SwitchColorMode\": \"Switch ColorMode\",\n  \"Storage\": \"Storage\",\n  \"upload example\": \"file upload\",\n  \"Unit\": {\n    \"CPU\": \"Core\",\n    \"GB\": \"GB\",\n    \"MB\": \"MB\"\n  },\n  \"Spec\": {\n    \"RAM\": \"RAM\",\n    \"Database\": \"Database\",\n    \"Storage\": \"Storage\",\n    \"NetworkTraffic\": \"NetworkTraffic\",\n    \"QueryOperand\": \"Query operands\"\n  },\n  \"Price\": {\n    \"Free\": \"Free\"\n  },\n  \"star-us-on-github\": \"Star us on GitHub\",\n  \"AuthPanel\": {\n    \"Phone\": \"Phone\",\n    \"PhoneTip\": \"Please input a valid phone number\",\n    \"PhonePlaceholder\": \"Please input your phone number\",\n    \"ValidationCode\": \"Code\",\n    \"getValidationCode\": \"Send Code\",\n    \"Login\": \"Login\",\n    \"LoginTip\": \"Please input your phone number and verification code\",\n    \"LoginWithGithub\": \"Login with GitHub\",\n    \"ValidationCodeTip\": \"Please input the verification code\",\n    \"ForgotPassword\": \"Forgot Password?\",\n    \"Register\": \"Register\",\n    \"ToRegister\": \"Go to Register\",\n    \"ToLogin\": \"Go to Login\",\n    \"PasswordLogin\": \"Password Login\",\n    \"PhoneLogin\": \"Phone Login\",\n    \"Account\": \"Username\",\n    \"AccountPlaceholder\": \"Please input your username\",\n    \"Password\": \"Password\",\n    \"PasswordPlaceholder\": \"Please input your password\",\n    \"ConfirmPassword\": \"Confirm Password\",\n    \"ConfirmPasswordPlaceholder\": \"Please input your password again\",\n    \"PasswordNotMatch\": \"The two passwords you entered do not match\",\n    \"SmsCodeSendSuccess\": \"Verification code sent successfully\",\n    \"ValidationCodePlaceholder\": \"Please input the verification code\",\n    \"ResetPassword\": \"Reset Password\",\n    \"ResetPasswordSuccess\": \"Reset password successfully\",\n    \"NewPassword\": \"New Password\",\n    \"SignUpSuccess\": \"Sign up successfully\",\n    \"EmailTip\": \"Please input a valid email\",\n    \"LoginOrRegister\": \"Login / Register\",\n    \"BindGitHub\": \"Bind GitHub\",\n    \"BindSuccess\": \"Bind Successfully\",\n    \"GitHubLogin\": \"GitHub Login\",\n    \"PleaseBindUser\": \"Please bind your user\",\n    \"Email\": \"Email\",\n    \"EmailPlaceholder\": \"Please input your email\",\n    \"EmailLogin\": \"Email Login\"\n  },\n  \"Time\": \"Time\",\n  \"CreateTime\": \"Created\",\n  \"EndTime\": \"Expired\",\n  \"Renew\": \"Renew\",\n  \"Balance\": \"Balance\",\n  \"ChargeNow\": \"Charge Now\",\n  \"balance is insufficient\": \"balance is insufficient\",\n  \"DeleteApp\": \"Delete\",\n  \"Recharge amount\": \"Recharge amount\",\n  \"Scan with WeChat\": \"WeChat scan code payment\",\n  \"Order Number\": \"Order Number\",\n  \"payment status\": \"Payment status\",\n  \"CreateFolder\": \"New Folder\",\n  \"Or\": \"Or\",\n  \"Generating\": \"Generating\",\n  \"Start\": \"Start\",\n  \"TryLafAI\": \"Try 🎉 Laf AI !\",\n  \"HomePage\": {\n    \"LafLink\": \"/dashboard\",\n    \"WebSite\": {\n      \"title\": \"Laf - Serverless Cloud Development\",\n      \"description\": \"Laf provides cloud functions, cloud databases, object storage and other capabilities, writing code like a blog! Launch the ChatGPT app in 3 minutes!\"\n    },\n    \"NavBar\": {\n      \"title\": \"sealaf is an open-source project, we need your Star\",\n      \"home\": \"Home\",\n      \"dashboard\": \"Dashboard\",\n      \"price\": \"Price\",\n      \"case\": \"Case\",\n      \"aboutUs\": \"About US\",\n      \"faq\": \"FAQ\",\n      \"docs\": \"Docs\",\n      \"forum\": \"Forum\",\n      \"contact\": \"Contact\",\n      \"start\": \"Start Now\",\n      \"stars\": \"3.9K\",\n      \"funcTemplate\": \"Function Market\",\n      \"appMarket\": \"Application Market\",\n      \"community\": \"Community\"\n    },\n    \"HomePage\": {\n      \"slogan\": \"Write Code as effortlessly as Blogging\",\n      \"start\": \"Free Start →\",\n      \"content1\": \"Sealaf is a cloud development platform integrating functions, databases and storage\",\n      \"content2\": \"Publish online anytime, anywhere\"\n    },\n    \"Ability\": {\n      \"title\": \"Features\",\n      \"learn\": \"Learn more\",\n      \"function\": \"Cloud function\",\n      \"functionSub\": \", release your first function in 5 seconds.\",\n      \"database\": \"Database\",\n      \"databaseSub\": \", no need to create a database, ready to use out of the box.\",\n      \"storage\": \"Cloud storage\",\n      \"storageSub\": \", create your own cloud storage, and manage files is simpler.\"\n    },\n    \"Choice\": {\n      \"title\": \"Advantage\",\n      \"open\": \"Open Source\",\n      \"openSub\": \"Laf follows the Apache License 2.0 open source protocol\",\n      \"fast\": \"More faster\",\n      \"fastSub\": \"There is no cold start time to make your response faster.\",\n      \"private\": \"Private Deployment\",\n      \"privateSub\": \"We support privatization deployment.\",\n      \"simple\": \"More Simple\",\n      \"simpleSub\": \"No need to care about Ops, Everything is Serverless.\",\n      \"cheap\": \"Lower Cost\",\n      \"cheapSub\": \"Minimum cost for million calls is only $0.01\",\n      \"service\": \"Provide efficient services for all developers.\",\n      \"serviceSub\": \"Learn more\"\n    },\n    \"Join\": {\n      \"title\": \"Join the sealaf developer community\",\n      \"subtitle\": \"Grow up with us\",\n      \"content\": \"Here you can experience the latest version of Laf at the first time and keep communicating with developers and users in Discord or WeChat groups.\",\n      \"WeChat\": \"WeChat\",\n      \"forum\": \"Forum\"\n    },\n    \"Footer\": {\n      \"laf\": \"sealaf provides ready-to-use features such as cloud functions, cloud databases, and object storage. empowers you to write code with the ease of blogging! Get your ChatGPT application up and running in a mere 3 minutes!\",\n      \"product\": \"Product\",\n      \"item1_1\": \"sealaf Cloud\",\n      \"item1_2\": \"Sealos Cloud\",\n      \"item1_3\": \"ChangeLog\",\n      \"item1_4\": \"Vscode Plugin\",\n      \"developer\": \"Developer\",\n      \"item2_1\": \"How to install Laf\",\n      \"item2_2\": \"Open API\",\n      \"item2_3\": \"Contributor's Guide\",\n      \"item2_4\": \"Source Code\",\n      \"item2_5\": \"Docs\",\n      \"support\": \"Support\",\n      \"item3_1\": \"Feedback\",\n      \"item3_2\": \"Forum\",\n      \"item3_3\": \"About us\"\n    }\n  },\n  \"ChatGPT example\": \"ChatGPT example\",\n  \"LinkCopied\": \"Link Copied\",\n  \"create success\": \"create success\",\n  \"ServerStatus\": \"STATUS\",\n  \"Fee\": \"Fee\",\n  \"PleaseCloseApplicationFirst\": \"Please close your application first.\",\n  \"custom\": \"Custom\",\n  \"CostTime\": \"CostTime\",\n  \"Duration\": \"Trade Time\",\n  \"State\": \"State\",\n  \"TotalAmount\": \"Total\",\n  \"AIWelcomeMessage\": \"Hello, I am Laf AI Development Assistant, how can I help you?\",\n  \"Send\": \"Send\",\n  \"Stop\": \"Stop\",\n  \"SendMessagePlaceHolder\": \"Send a message\",\n  \"application\": {\n    \"bonus\": \"bonus\",\n    \"Recharge\": \"Recharge\",\n    \"RecommendedSpecifications\": \"Recommended Specifications: \",\n    \"ChooseSpecifications\": \"Choose Specifications\",\n    \"autoscaling\": \"AutoScaling\",\n    \"Number of Instances\": \"Number of Instances\",\n    \"CPU Threshold\": \"CPU Threshold\",\n    \"DatabaseSpecification\": \"Database specification\",\n    \"DedicatedType\": \"Dedicated\",\n    \"SharedType\": \"Shared\",\n    \"ApplicationSecification\": \"Application specification\",\n    \"DatabaseCreateTip\": \"Once a database is created, its type and number of instances cannot be temporarily modified. The capacity can only increase, not decrease. If there are special needs, please contact our customer service.\"\n  },\n  \"Storage Threshold\": \"Storage Threshold\",\n  \"Template\": {\n    \"Recent\": \"Recently Used\",\n    \"AddEnvironmentVariables\": \"Add environment variables\",\n    \"Create\": \"new\",\n    \"CommunityTemplate\": \"All Template\",\n    \"CreateTemplate\": \"New template\",\n    \"DeleteTemplate\": \"Delete template\",\n    \"CreatedAt\": \"Created at\",\n    \"Dependency\": \"Dependency\",\n    \"Description\": \"Please enter the function template introduction information\",\n    \"Details\": \"Function details\",\n    \"Earliest\": \"Earliest\",\n    \"DeveloperInformation\": \"Developer information\",\n    \"Edit\": \"Edit\",\n    \"EditTemplate\": \"Edit template\",\n    \"EnvironmentVariables\": \"Environment variable\",\n    \"Function\": \"Function\",\n    \"FunctionListEmpty\": \"Please add at least one function\",\n    \"FunctionNameExist\": \"function name already exists\",\n    \"Latest\": \"Latest\",\n    \"MostStars\": \"Most stars\",\n    \"My\": \"My template\",\n    \"MyTemplate\": \"My template\",\n    \"Please enter template name\": \"Please enter a template name\",\n    \"Please select template permission\": \"Please select a template permission\",\n    \"Select the application you want to use\": \"Choose the app you want to use\",\n    \"SortOrd\": \"Sort by:\",\n    \"Sponsor\": \"support\",\n    \"Total\": \"Total\",\n    \"StaredTemplate\": \"My favorites\",\n    \"UsedBy\": \"Used by\",\n    \"private\": \"private\",\n    \"public\": \"public\",\n    \"updatedAt\": \"Updated at\",\n    \"useTemplate\": \"use template\",\n    \"UsedSuccessfully\": \"Use successfully\",\n    \"EmptyTemplate\": \"Template Empty\",\n    \"AddMore\": \"Add More\",\n    \"Save\": \"Save\",\n    \"Recommended\": \"Recommended Template\",\n    \"Confirm\": \"Are you sure you want to use this template?\",\n    \"ConfirmDeleteTemplate\": \"Are you sure you want to delete this function template?\",\n    \"DeveloperInfo\": \"Developer Info\",\n    \"NoRecommended\": \"No Recommended Template\",\n    \"Created\": \"My Creates\"\n  },\n  \"Create function template success\": \"Create function template successfully\",\n  \"Publish\": \"release\",\n  \"Update function template success\": \"Update function template succeeded\",\n  \"Today\": \"Today\",\n  \"Yesterday\": \"Yesterday\",\n  \"DaysAgo\": \" Days Ago\",\n  \"WeeksAgo\": \" Weeks Ago\",\n  \"MonthsAgo\": \" Months Ago\",\n  \"UserInfo\": {\n    \"EditUserName\": \"Edit UserName\",\n    \"UserName\": \"UserName\",\n    \"EditPassword\": \"Edit Password\",\n    \"EditPhone\": \"Edit Phone Number\",\n    \"PhoneNumber\": \"Phone Number\",\n    \"OldPhoneNumber\": \"Old Phone Number\",\n    \"OldSmsNumber\": \"Old Sms Number\",\n    \"NewPhoneNumber\": \"New Phone Number\",\n    \"NewSmsNumber\": \"New Sms Number\",\n    \"EditUserNameSuccess\": \"Edit UserName Success\",\n    \"EditPasswordSuccess\": \"Edit Password Success\",\n    \"EditPhoneSuccess\": \"Edit Phone Success\",\n    \"EditAvatarSuccess\": \"Edit Avatar Success\",\n    \"Change\": \"Change\",\n    \"InviteLink\": \"Invite Link\",\n    \"BonusDetails\": \"Bonus Details\",\n    \"Bonus\": \"Bonus\",\n    \"Channel\": \"Username\",\n    \"Time\": \"Time\",\n    \"InviteTips\": \"Copy the referral link and send it to others. When they click on this link to register, they will become your invited users, and you will immediately receive bonus.\",\n    \"Email\": \"Email\",\n    \"ChangeEmail\": \"Change Email\",\n    \"SmsNumber\": \"Verification Code\",\n    \"ChangeEmailSuccess\": \"Change Email Success\",\n    \"GotoAuth\": \"Go to Authenticate\",\n    \"NoAuth\": \"Not Real-name Verified\",\n    \"WarnTips\": \"You have not yet completed real-name authentication.\",\n    \"PleaseBindPhone\": \"Please bind your mobile number first\",\n    \"VerifiedIdentity\": \"Verified Identity\",\n    \"Bind\": \"Bind\",\n    \"VerifiedGithub\": \"Verified\"\n  },\n  \"Reset\": \"Reset\",\n  \"SettingModal\": {\n    \"Exchange\": \"Exchange\",\n    \"FunctionName\": \"Function Name\",\n    \"FunctionDesc\": \"Function Description\",\n    \"FunctionDesc_Name\": \"Function Description - Name\",\n    \"FunctionName_Desc\": \"Function Name - Description\"\n  },\n  \"Expenses\": \"Expenses\",\n  \"OrderNumber\": \"Order Number\",\n  \"Bonus amount\": \"Bonus amount\",\n  \"Total payment amount\": \"Total payment amount\",\n  \"Day\": \"Day\",\n  \"Week\": \"Week\",\n  \"Month\": \"Month\",\n  \"Year\": \"Year\",\n  \"Hour\": \"Hour\",\n  \"Core\": \"Core\",\n  \"No History\": \"No History\",\n  \"MyIncomeAndExpenses\": \"My Income And Expenses\",\n  \"RecycleBin\": \"Recycle Bin\",\n  \"Restore\": \"Restore\",\n  \"CheckAll\": \"Check All\",\n  \"Select\": \"Select\",\n  \"ClearRecycleBin\": \"Clear Recycle Bin\",\n  \"RestoreSuccess\": \"successfully restored\",\n  \"EmptySuccess\": \"successfully empty\",\n  \"RecycleBinEmpty\": \"Recycle Bin is Empty\",\n  \"SelectOne\": \"At least select one\",\n  \"Apply\": \"apply\",\n  \"Developing\": \"Developing\",\n  \"Unverified\": \"Unverified\",\n  \"i18n tip\": \"中\",\n  \"Collaborate\": {\n    \"InviteMembers\": \"Invite Members\",\n    \"GenerateInvitationLink\": \"Generate Invitation Link\",\n    \"Members\": \"Members\",\n    \"NoMembers\": \"No Members\",\n    \"Invitation\": \"Invitation\",\n    \"InvitationContent\": \"{{userName}} invite you to be the {{role}} of app <strong>{{appName}}</strong> {{appid}}.\",\n    \"Accept\": \"Accept\",\n    \"Accepted\": \"Link is used\",\n    \"Remove\": \"Remove\",\n    \"CopyLink\": \"Copy Invitation Link\",\n    \"Revoke\": \"Revoke\",\n    \"Invite\": \"Collaborate ({{number}})\",\n    \"GenerateInvitationLinkSuccess\": \"Generate Invitation Link Success\",\n    \"DeleteLinkSuccess\": \"Delete Link Success\",\n    \"JoinSuccess\": \"Join Success\",\n    \"RemoveSuccess\": \"Remove Member Success\",\n    \"Leave\": \"Leave\",\n    \"LeaveSuccess\": \"Leave Success\",\n    \"QuitSuccess\": \"Quit\",\n    \"Quit\": \"Quit\"\n  },\n  \"Collaborative\": \"Collaborative\",\n  \"CreateFunction\": \"Create Function\",\n  \"CreateApp\": \"New Application\",\n  \"Used\": \"Used\",\n  \"Remaining\": \"Remaining\",\n  \"Pod\": \"Pod\",\n  \"EditFunction\": \"Edit Function\",\n  \"Error\": \"Error, \",\n  \"Retry\": \"Retry\",\n  \"NoFunctionYet\": \"You haven't created a function yet~\",\n  \"shortcutKey\": \"shortcut key\",\n  \"NameCopiedSuccessfully\": \"Name copied successfully\",\n  \"NameCannotBeEmpty\": \"name can't be empty\",\n  \"PreviousPage\": \"Previous Page\",\n  \"NextPage\": \"Next Page\",\n  \"LastPage\": \"Last Page\",\n  \"FirstPage\": \"First Page\",\n  \"SavedSuccessfully\": \"Saved Successfully\",\n  \"Bind\": \"Bind\",\n  \"UnBind\": \"Unbind\",\n  \"UnBindSuccess\": \"Unbind Successfully\",\n  \"CreateSuccess\": \"create success\",\n  \"Properties\": \"Properties\",\n  \"Action\": \"Action\",\n  \"Byte\": \"byte\",\n  \"Second\": \"second\",\n  \"Optional\": \"optional\",\n  \"Logs\": {\n    \"PodLogs\": \"App Instance Logs\",\n    \"Export\": \"Export\",\n    \"logs\": \"Logs\",\n    \"ScrollToBottom\": \"Scroll to bottom\"\n  },\n  \"KeyCannotBeEmpty\": \"Key can't be empty\",\n  \"ValueCannotBeEmpty\": \"Value can't be empty\",\n  \"AddENV\": \"Add ENV\",\n  \"LSP\": {\n    \"InitLanguageServer\": \"Click to reconnect to language server\",\n    \"LanguageServerClosed\": \"Language Server Disconnected\",\n    \"LanguageServerError\": \"Language Server Error\",\n    \"InitializingLanguageServer\": \"Initializing Language Server\",\n    \"StartLanguageServer\": \"Click on 'Settings' on the left to enable the language server.\",\n    \"EnableLanguageServer\": \"Click on 'Settings' on the left to enable the language server.\",\n    \"LanguageServerNotEnable\": \"Language server not enabled\"\n  },\n  \"KeyAlreadyExists\": \"Key already exists\",\n  \"SettingPanal\": {\n    \"EditorSettings\": \"Editor Settings\",\n    \"FunctionListSettings\": \"Function list settings\"\n  },\n  \"Deprecated\": \"Deprecated\",\n  \"All\": \"All\",\n  \"DatabaseMonitor\": {\n    \"Connections\": \"Connections\",\n    \"DocumentOperand\": \"Document operands\",\n    \"PageError\": \"Page error(ops/s)\",\n    \"Resource\": \"Resource\",\n    \"Performance\": \"Performance\",\n    \"Capacity\": \"Capacity\"\n  },\n  \"MoveFunction\": \"Move function\",\n  \"UpgradeVersionTip\": {\n    \"Title\": \"Laf is ready to update!\",\n    \"Description\": \"Click to update\"\n  },\n  \"app\": {\n    \"title\": \"sealaf\",\n    \"logo\": \"Sealaf\"\n  }\n}"
  },
  {
    "path": "web/public/locales/zh/translation.json",
    "content": "{\n  \"CollectionPanel\": {\n    \"AddCollection\": \"新建集合\",\n    \"AddData\": \"添加数据\",\n    \"AddIndex\": \"添加索引\",\n    \"AddPolicy\": \"添加访问策略\",\n    \"AddRules\": \"添加规则\",\n    \"Collection\": \"集合\",\n    \"CollectionList\": \"集合列表\",\n    \"CollectionName\": \"集合名称\",\n    \"CollectionPlaceholder\": \"请输入集合名称\",\n    \"ConformDelete\": \"确定删除该策略吗?\",\n    \"DeleteCollection\": \"删除集合\",\n    \"DeleteCollectionTip\": \"当前操作将永久删除集合\",\n    \"EditPolicy\": \"编辑访问策略\",\n    \"EmptyCollectionText\": \"暂无集合信息,\",\n    \"EmptyPolicyText\": \"暂无策略信息,\",\n    \"IndexName\": \"索引名称\",\n    \"InputName\": \"请输入集合名称\",\n    \"Policy\": \"访问策略\",\n    \"PolicyAddress\": \"入口地址\",\n    \"PolicyName\": \"策略标识\",\n    \"PolicyNameTip\": \"请输入策略标识\",\n    \"RulesContent\": \"规则内容\",\n    \"RulesNum\": \"规则数\",\n    \"Search\": \"请输入 ID 进行搜索\",\n    \"Query\": \"请输入 MongoDb 查询语句，按回车进行查询。如：{ _id: ObjectId('') }\",\n    \"SelectCollection\": \"选择集合\",\n    \"SelectFunction\": \"请选择云函数\",\n    \"CollectionNameRule\": \"集合名称只能由字母开头,包含字母, _ 或者 - 的3至32个字符组成\",\n    \"EmptyCollectionTip\": \"您还没有创建集合\",\n    \"EmptyDataText\": \"暂无数据信息,\",\n    \"EmptyPolicyTip\": \"您还没有创建策略\",\n    \"EmptyRuleTip\": \"此策略没有规则\",\n    \"CreateTagTip\": \"按「回车键」输入标签，每个标签最多由16个字符组成\",\n    \"IndexManage\": \"索引管理\",\n    \"ConfirmDeleteIndex\": \"确定删除该索引吗？\",\n    \"IndexKey\": \"索引字段\",\n    \"SelectIndexType\": \"选择类型\",\n    \"AddIndexKey\": \"添加字段\",\n    \"AdvancedOptions\": \"高级选项\",\n    \"CreateIndex\": \"创建索引\",\n    \"CapacityLimit\": \"容量限制\",\n    \"CreateTTL\": \"创建 TTL\",\n    \"CreateUniqueIndex\": \"创建唯一索引\",\n    \"UniqueIndexDescription\": \"唯一索引可确保索引字段不存储重复的值，如果该字段中已有重复的数据，创建唯一索引时会报错。\",\n    \"TTLDescription\": \"TTL索引使文档在特定时间后自动过期和删除，需要在一个日期字段上创建索引。\",\n    \"CapacityLimitDescription\": \"使用“固定集合”来限制集合的容量。固定集合有一个固定的大小，当它满了之后，新的文档会替代最老的文档。\",\n    \"DocumentNum\": \"条\"\n  },\n  \"Add\": \"添加\",\n  \"AddData\": \"新增数据\",\n  \"AddSuccess\": \"添加成功\",\n  \"Auth\": {\n    \"migrationNotice\": \"laf 平台已经迁移到 sealos 中，不再支持新的注册，请使用 sealaf，点击跳转至 sealos\"\n  },\n  \"Cancel\": \"取消\",\n  \"Close\": \"关闭\",\n  \"Confirm\": \"确定\",\n  \"Copied\": \"已复制\",\n  \"Copy\": \"复制\",\n  \"Create\": \"新建\",\n  \"Change\": \"变更配置\",\n  \"CreateNow\": \"立即创建\",\n  \"Custom\": \"自定义\",\n  \"Days\": \"天\",\n  \"Delete\": \"删除\",\n  \"DeleteConfirm\": \"确定删除该行数据吗?\",\n  \"DeleteSuccess\": \"删除成功\",\n  \"DeleteTip\": \"无法撤销\",\n  \"Edit\": \"编辑\",\n  \"Empty\": \"清空\",\n  \"Generate\": \"生成\",\n  \"InputTip\": \"请输入\",\n  \"IsRequired\": \"是必须的\",\n  \"LimitSelect\": \"请至少选择一个\",\n  \"Logout\": \"退出登录\",\n  \"Name\": \"名称\",\n  \"Operation\": \"操作\",\n  \"Page\": \"页\",\n  \"Save\": \"保存\",\n  \"Search\": \"搜索\",\n  \"ToConfirm\": \"进行确定\",\n  \"NameNotMatch\": \"名称不匹配\",\n  \"Total\": \"总数\",\n  \"Update\": \"更新\",\n  \"UpdateSuccess\": \"更新成功\",\n  \"moreOperations\": \"更多操作\",\n  \"openPopover\": \"点击打开浮层\",\n  \"FunctionPanel\": {\n    \"AddFunction\": \"添加函数\",\n    \"Code\": \"函数模板\",\n    \"ConfirmDeploy\": \"确认发布\",\n    \"CustomDependence\": \"自定义依赖\",\n    \"CustomDependenceTip\": \"暂无自定义依赖\",\n    \"DeleteDependencyConfirm\": \"确定要删除该依赖吗？\",\n    \"Debug\": \"运行\",\n    \"DebugResult\": \"运行结果\",\n    \"DeleteConfirm\": \"确定要删除函数吗？\",\n    \"Dependence\": \"NPM 依赖\",\n    \"DependenceAdd\": \"添加依赖\",\n    \"DependenceEdit\": \"编辑依赖\",\n    \"DependenceName\": \"依赖包名\",\n    \"DependenceTip\": \"请输入依赖包名\",\n    \"DependenceVersion\": \"依赖版本\",\n    \"Deploy\": \"发布\",\n    \"DeploySuccess\": \"发布成功\",\n    \"Fetch\": \"拉取\",\n    \"FetchSuccess\": \"恢复成功\",\n    \"Description\": \"输入函数描述信息\",\n    \"EditFunction\": \"编辑函数\",\n    \"Function\": \"函数\",\n    \"FunctionList\": \"函数列表\",\n    \"FunctionName\": \"函数名\",\n    \"FunctionNameTip\": \"函数唯一标识，如 get-user，可以使用 user/get-user 的形式来创建文件夹\",\n    \"InterfaceDebug\": \"接口调试\",\n    \"Methods\": \"请求方法\",\n    \"Name\": \"参数名\",\n    \"Tags\": \"标签\",\n    \"SearchPlaceholder\": \"请输入函数名查询\",\n    \"Select\": \"已选择\",\n    \"SystemDependence\": \"内置依赖\",\n    \"Value\": \"值\",\n    \"isSupport\": \"是否支持\",\n    \"FunctionNameRule\": \"函数名须由字母、数字、点（.）和划线(-_)组成，匹配正则：/^[a-zA-Z0-9_.\\\\-](?:[a-zA-Z0-9_.\\\\-/]{0,254}[a-zA-Z0-9_.\\\\-])?$/\",\n    \"EmptyDebugTip\": \"暂无运行结果\",\n    \"EmptyFunctionTip\": \"您还没有创建函数\",\n    \"UploadButton\": \"上传\",\n    \"LeaveFunctionPage\": \"即将离开函数编辑页面\",\n    \"PromptDescription\": \"使用自然语言描述你的需求, laf 会帮你生成代码, 例如: 写一个 hello world ,返回 {hello: 'laf AI'}\",\n    \"CreateWithAITip\": \"使用 AI 辅助创建函数\",\n    \"CreateNow\": \"立即创建\",\n    \"CreateFromTemplate\": \"更多模板\",\n    \"getCodeOnline\": \"获取线上最新发布的代码\",\n    \"versionHistory\": \"历史版本\",\n    \"Restore\": \"恢复\",\n    \"Invite\": \"邀请\",\n    \"HistoryTips\": \"暂无历史版本\",\n    \"NoDesc\": \"暂无描述\",\n    \"CurrentVersion\": \"当前版本\",\n    \"HistoryVersion\": \"历史版本\",\n    \"DeployChangelog\": \"输入此次函数修改的描述 (可选)\",\n    \"MoveFunctionTip\": \"是否要将 {{srcFunc}} 移动到 {{targetDir}} 目录？\",\n    \"MoveFunctionToRootTip\": \"是否要将 {{srcFunc}} 移动到根目录？\",\n    \"MovingFunction\": \"移动函数中...\",\n    \"DependenceInstallTip\": \"保存后请等待依赖安装完成，在「日志」查看安装进度\",\n    \"CopyOpenAPIUrl\": \"复制 OpenAPI 链接\"\n  },\n  \"HomePanel\": {\n    \"APP\": \"Android or iOS 应用\",\n    \"Application\": \"应用\",\n    \"Blog\": \"个人博客、企业官网\",\n    \"Develop\": \"开发\",\n    \"Enterprise\": \"企业信息化建设\",\n    \"Explore\": \"等你探索\",\n    \"Hello\": \"你好\",\n    \"Introduction\": \"在这里，你可以作为全栈、后端、云开发用户、Node.js开发者、独立开发者等，开发出任何应用，例如：\",\n    \"MyApp\": \"我的应用\",\n    \"Personal\": \"个人开发者的「手边云」\",\n    \"Region\": \"可用区\",\n    \"RuntimeName\": \"运行时\",\n    \"State\": \"状态\",\n    \"Use\": \"快来创建一个属于自己的应用吧～\",\n    \"WX\": \"微信小程序/公众号\",\n    \"Welcome\": \"欢迎来到 LAF 云开发平台！\",\n    \"DeleteApp\": \"删除 APP\",\n    \"DeleteTip\": \"当前操作将会永久删除应用, 包括函数、数据、云存储等与应用相关的数据, 删除后<strong>将无法撤消</strong>,  请输入 <strong>{{appId}}</strong> 后确认\",\n    \"Duration\": \"购买时长\",\n    \"Spec\": \"规格\",\n    \"WelcomeTo\": \"欢迎来到 \",\n    \"LAF\": \" LAF 云开发平台！\"\n  },\n  \"SpecItem\": {\n    \"cpu\": \"CPU\",\n    \"memory\": \"内存\",\n    \"databaseCapacity\": \"数据库\",\n    \"storageCapacity\": \"云存储\",\n    \"capacity\": \"容量\",\n    \"replicas\": \"实例数\"\n  },\n  \"LogPanel\": {\n    \"Detail\": \"日志详情\",\n    \"Log\": \"日志\",\n    \"EmptyLogTip\": \"暂无日志信息\"\n  },\n  \"SettingPanel\": {\n    \"AddAppEnv\": \"新增环境变量\",\n    \"AppEnv\": \"环境变量\",\n    \"Expire\": \"过期时间\",\n    \"Setting\": \"设置\",\n    \"SystemSetting\": \"应用设置\",\n    \"UserSetting\": \"用户设置\",\n    \"UpdateConfirm\": \"确认更新环境变量？\",\n    \"AppInfo\": \"应用信息\",\n    \"BaseInfo\": \"基础信息\",\n    \"Detail\": \"规格详情\",\n    \"Memory\": \"内存\",\n    \"Disk\": \"硬盘\",\n    \"DB\": \"数据库\",\n    \"network\": \"出网容量\",\n    \"Delete\": \"删除应用\",\n    \"Start\": \"启动应用\",\n    \"Restart\": \"重启应用\",\n    \"UserInfo\": \"用户信息\",\n    \"Auth\": \"实名认证\",\n    \"Tel\": \"手机号\",\n    \"SendCode\": \"发送验证码\",\n    \"Code\": \"验证码\",\n    \"Name\": \"真实姓名\",\n    \"ID\": \"身份证号\",\n    \"ToAuth\": \"立即认证\",\n    \"showAuth\": \"去认证\",\n    \"noAuth\": \"未实名\",\n    \"IDTip\": \"请输入有效的身份证号码\",\n    \"CodeTip\": \"请输入四位数字验证码\",\n    \"TelTip\": \"请输入有效的手机号码\",\n    \"Registered\": \"注册时间\",\n    \"Subscription\": \"订阅信息\",\n    \"Usage\": \"费用中心\",\n    \"Avatar\": \"头像\",\n    \"UserName\": \"用户名\",\n    \"Email\": \"邮箱\",\n    \"PassWord\": \"密码\",\n    \"UserInvite\": \"我的推广\",\n    \"UserCenter\": \"用户中心\",\n    \"CostOverview\": \"成本总览\",\n    \"CardRedemption\": \"点卡兑换\",\n    \"BillingDetails\": \"账单明细\",\n    \"RechargeHistory\": \"充值记录\",\n    \"PricingStandards\": \"计价标准\",\n    \"EnterGiftCode\": \"输入卡密\",\n    \"ExchangeSuccess\": \"兑换成功\",\n    \"Domain\": \"域名设置\",\n    \"MyAccount\": \"我的账户\",\n    \"CostTrend\": \"成本趋势\",\n    \"Balance\": \"余额\",\n    \"Pause\": \"暂停应用\",\n    \"PauseTips\": \"确定要暂停此应用吗？\",\n    \"RestartTips\": \"同时重启数据库?\",\n    \"RestartTips1\": \"确定要重启应用?\",\n    \"CommonSetting\": \"常用设置\",\n    \"EditorFont\": \"编辑器字体\",\n    \"FontSize\": \"字体大小\",\n    \"FuncListDisplay\": \"函数列表显示\",\n    \"ListDisplay\": \"列表显示\",\n    \"EditorLanguageServer\": \"编辑器语言服务\",\n    \"isOpenLanguageServer\": \"是否开启 TypeScript 语言服务（体验更好的类型提示，仅在应用配置高于 1C 2G 时生效）\",\n    \"Editor\": \"编辑器\",\n    \"FuncList\": \"函数列表\",\n    \"EditorMode\": \"使用编辑器模式\",\n    \"OldLogs\": \"旧版日志\",\n    \"MonitorSetting\": \"资源监控\",\n    \"DatabaseMonitor\": \"数据库监控\",\n    \"RuntimeMonitor\": \"运行时监控\",\n    \"ClientSetting\": \"客户端设置\",\n    \"AICompletion\": \"是否开启代码智能补全（需刷新生效）\"\n  },\n  \"StoragePanel\": {\n    \"All\": \"总容量\",\n    \"DeleteConfirm\": \"当前操作将会永久删除云存储\",\n    \"DeleteFileTip\": \"确定要删除文件吗？\",\n    \"DeleteFolderTip\": \"确定要删除整个文件夹吗？请注意当有大量文件存在时会稍许有一点慢哦\",\n    \"Drag\": \"拖放到此处或者\",\n    \"EmptyText\": \"暂无 Bucket 数据,\",\n    \"File\": \"文件\",\n    \"FileName\": \"文件名\",\n    \"FileType\": \"文件类型\",\n    \"Folder\": \"文件夹\",\n    \"FolderName\": \"文件夹名称\",\n    \"NameTip\": \"请输入文件夹名称\",\n    \"Policy\": \"权限\",\n    \"Private\": \"私有 (private)\",\n    \"Readonly\": \"公共读 (readonly)\",\n    \"ReadWrite\": \"公共读写 (readwrite)\",\n    \"SearchBucket\": \"请输入 bucket 名进行搜索\",\n    \"Size\": \"大小\",\n    \"Storage\": \"存储\",\n    \"StorageList\": \"云存储\",\n    \"StorageNameTip\": \"请输入云存储名称\",\n    \"Success\": \"上传成功\",\n    \"Time\": \"更新时间\",\n    \"TimeTip\": \"临时链接,有效期15分钟\",\n    \"Upload\": \"上传\",\n    \"Used\": \"已使用\",\n    \"UploadTip\": \"请选择文件或者文件夹上传\",\n    \"BucketNameRule\": \"Bucket 名称必须由小写字母、数字和中划线（-）组成，长度在3到32个字符之间，且不能以 - 开头或结尾。\",\n    \"Bucket\": \"桶\",\n    \"BucketName\": \"Bucket 名称\",\n    \"CreateBucket\": \"创建 Bucket\",\n    \"EditBucket\": \"编辑 Bucket\",\n    \"DeleteBucket\": \"删除 Bucket\",\n    \"BucketNamePlaceholder\": \"bucket 名称\",\n    \"EmptyStorageTip\": \"您还没有创建 Bucket\",\n    \"UploadFile\": \"上传文件\",\n    \"UploadFolder\": \"上传文件夹\",\n    \"domain\": \"域名\",\n    \"domainTip\": \"请输入Domain\",\n    \"isResolved\": \"已生效\",\n    \"parsing\": \"解析中\",\n    \"websiteHost\": \"开启网站托管\",\n    \"cnameTip\": \"请对该域名添加 CNAME 记录，解析到 <strong>{{cnameDomain}}</strong> ，解析生效后即可绑定自定义域名。\",\n    \"editHostTip\": \"开启网站托管需要 bucket 权限是 readonly 模式\",\n    \"CreateWebHosting\": \"绑定自定义域名\",\n    \"CustomDomain\": \"自定义域名\",\n    \"CurrentDomain\": \"当前域名: \",\n    \"CancelHost\": \"取消托管\",\n    \"Inaccessible\": \"无法访问\",\n    \"InstantUpload\": \"立即上传\",\n    \"RemoveHost\": \"取消静态托管\",\n    \"DomainUpdateSuccess\": \"域名修改成功\",\n    \"DomainDeleteSuccess\": \"域名删除成功\",\n    \"CustomApplicationDomain\": \"自定义应用域名\",\n    \"BucketNameisRequired\": \"请输入 Bucket 名称\",\n    \"Fail\": \"上传失败\",\n    \"UploadFailTip\": \"{{number}} 个文件上传失败\",\n    \"StartAppTips\": \"请先启动应用\",\n    \"SuccessfullyHosted\": \"托管成功\",\n    \"SuccessfullyHostedTips\": \"HTTP已生效，HTTPS需要一些时间生效。如需查看托管状态，请暂时使用HTTP访问。\",\n    \"BucketTips\": \"新创建的 bucket，或应用重启后的 bucket ，需要等待 15 ~ 30s 才能生效\",\n    \"DomainNotResolved\": \"尝试使用 ping 或 nslookup 来查看域名解析是否生效\",\n    \"DeleteFiles\": \"确定要删除 {{num}} 个目录及文件吗？\",\n    \"DeletingFiles\": \"正在删除 {{num}} 个目录及文件...\",\n    \"DeleteFilesResult\": \"删除目录及文件：{{successNum}} 成功，{{failedNum}} 失败\"\n  },\n  \"TriggerPanel\": {\n    \"AddTrigger\": \"新建触发器\",\n    \"CornTip\": \"例: * * * * * \\n表示每 1 分钟执行任务\",\n    \"DeleteConfirm\": \"确定删除该触发器吗\",\n    \"Express\": \"表达式\",\n    \"Function\": \"关联函数\",\n    \"FunctionTip\": \"请选择关联的云函数\",\n    \"Name\": \"触发器名称\",\n    \"NameTip\": \"请输入触发器名称\",\n    \"SearchTip\": \"输入触发器名称查找\",\n    \"SetTimeout\": \"定时任务\",\n    \"Time\": \"创建/更新时间\",\n    \"Trigger\": \"触发器\",\n    \"Type\": \"类型\",\n    \"CronHelp\": \"更多示例\",\n    \"Cron\": \"表达式\",\n    \"EmptyTriggerTip\": \"您还没有创建触发器,\",\n    \"Every8AM\": \"每天上午8点\",\n    \"EveryHour\": \"每小时\",\n    \"EveryFiveMinutes\": \"每五分钟\",\n    \"createFail\": \"触发器数量已达上限，请升级应用配置\"\n  },\n  \"StatusBar\": {\n    \"CurrentApplication\": \"当前应用\"\n  },\n  \"NoData\": \"当前无数据\",\n  \"SaveAndRestart\": \"保存并重启\",\n  \"DataEntry\": {\n    \"CreateError\": \"字段不能为空\"\n  },\n  \"Refresh\": \"刷新\",\n  \"RefreshData\": \"刷新数据\",\n  \"EditTip\": \"已修改,未发布\",\n  \"NoInfo\": \"暂无信息\",\n  \"RefreshDataSuccess\": \"数据刷新成功\",\n  \"database example\": \"database 示例\",\n  \"update success\": \"更新成功\",\n  \"Take me home\": \"返回首页\",\n  \"404Message\": \"找不到当前内容\",\n  \"403Message\": \"当前用户没有权限\",\n  \"Bucket\": {\n    \"StatusTip\": \"外部访问需要将 bucket 权限设置为 readonly\"\n  },\n  \"Restart\": \"重启应用\",\n  \"ShutDown\": \"关闭应用\",\n  \"Charge\": \"充值\",\n  \"Back\": \"返回\",\n  \"Personal Access Token\": \"访问凭证 (PAT)\",\n  \"SwitchLanguage\": \"切换语言\",\n  \"SwitchColorMode\": \"切换颜色模式\",\n  \"Storage\": \"云存储\",\n  \"upload example\": \"文件上传示例\",\n  \"Unit\": {\n    \"CPU\": \"核\",\n    \"GB\": \"GB\",\n    \"MB\": \"MB\"\n  },\n  \"Spec\": {\n    \"RAM\": \"内存\",\n    \"Database\": \"数据库\",\n    \"Storage\": \"云存储\",\n    \"NetworkTraffic\": \"出网流量\",\n    \"QueryOperand\": \"查询操作数\"\n  },\n  \"Price\": {\n    \"Free\": \"免费\"\n  },\n  \"star-us-on-github\": \"在 GitHub 上支持我们\",\n  \"AuthPanel\": {\n    \"Phone\": \"手机号\",\n    \"PhoneTip\": \"请输入有效的手机号码\",\n    \"PhonePlaceholder\": \"请输入手机号\",\n    \"ValidationCode\": \"验证码\",\n    \"getValidationCode\": \"获取验证码\",\n    \"Login\": \"登录\",\n    \"LoginTip\": \"请输入手机号和验证码\",\n    \"LoginWithGithub\": \"GitHub 登录\",\n    \"ValidationCodeTip\": \"请输入验证码\",\n    \"ForgotPassword\": \"忘记密码？\",\n    \"Register\": \"注册\",\n    \"ToRegister\": \"去注册\",\n    \"ToLogin\": \"去登录\",\n    \"PasswordLogin\": \"密码登录\",\n    \"PhoneLogin\": \"手机号登录\",\n    \"Account\": \"用户名\",\n    \"AccountPlaceholder\": \"请输入用户名\",\n    \"Password\": \"密码\",\n    \"PasswordPlaceholder\": \"请输入密码\",\n    \"ConfirmPassword\": \"确认密码\",\n    \"ConfirmPasswordPlaceholder\": \"请再次输入密码\",\n    \"PasswordNotMatch\": \"两次输入的密码不一致\",\n    \"SmsCodeSendSuccess\": \"验证码发送成功\",\n    \"ValidationCodePlaceholder\": \"请输入验证码\",\n    \"ResetPassword\": \"重置密码\",\n    \"ResetPasswordSuccess\": \"重置密码成功\",\n    \"NewPassword\": \"新密码\",\n    \"SignUpSuccess\": \"注册成功\",\n    \"EmailTip\": \"请输入有效的邮箱\",\n    \"LoginOrRegister\": \"登录 / 注册\",\n    \"BindGitHub\": \"绑定 GitHub\",\n    \"BindSuccess\": \"绑定成功\",\n    \"GitHubLogin\": \"GitHub 登录\",\n    \"PleaseBindUser\": \"请绑定对应用户\",\n    \"Email\": \"邮箱\",\n    \"EmailPlaceholder\": \"请输入你的邮箱\",\n    \"EmailLogin\": \"邮箱登录\"\n  },\n  \"Time\": \"时间\",\n  \"CreateTime\": \"创建时间\",\n  \"EndTime\": \"到期时间\",\n  \"Renew\": \"续期\",\n  \"Balance\": \"账户余额\",\n  \"ChargeNow\": \"立即充值\",\n  \"balance is insufficient\": \"余额不足\",\n  \"DeleteApp\": \"删除应用\",\n  \"Recharge amount\": \"充值金额\",\n  \"Scan with WeChat\": \"微信扫码支付\",\n  \"Order Number\": \"订单号\",\n  \"payment status\": \"支付状态\",\n  \"CreateFolder\": \"新建文件夹\",\n  \"Or\": \"或\",\n  \"Generating\": \"正在生成\",\n  \"Start\": \"开始生成\",\n  \"TryLafAI\": \"试试 🎉 Laf AI !\",\n  \"HomePage\": {\n    \"LafLink\": \"/dashboard\",\n    \"WebSite\": {\n      \"title\": \"Laf 云开发官网\",\n      \"description\": \"Laf 是一个集函数、数据库、存储为一体的云开发平台，随时随地，发布上线\"\n    },\n    \"NavBar\": {\n      \"title\": \"如果你喜欢 Sealos 云开发的话，请在 Github 上给我们一个 Star 吧！\",\n      \"home\": \"主页\",\n      \"dashboard\": \"控制台\",\n      \"price\": \"价格\",\n      \"case\": \"案例\",\n      \"aboutUs\": \"关于我们\",\n      \"docs\": \"文档\",\n      \"contact\": \"商务合作\",\n      \"forum\": \"社区\",\n      \"faq\": \"FAQ\",\n      \"start\": \"立即开发\",\n      \"stars\": \"3.9K\",\n      \"funcTemplate\": \"函数市场\",\n      \"appMarket\": \"应用市场\",\n      \"community\": \"用户群\"\n    },\n    \"HomePage\": {\n      \"slogan\": \"像写博客一样写代码\",\n      \"start\": \"立即开发\",\n      \"content1\": \"Sealos 云开发是一个集函数、数据库、存储为一体的云开发平台\",\n      \"content2\": \"随时随地，发布上线\"\n    },\n    \"Ability\": {\n      \"title\": \"Sealos 云开发的能力\",\n      \"learn\": \"了解详情\",\n      \"function\": \"云函数\",\n      \"functionSub\": \"， 5秒发布你的第一个函数。\",\n      \"database\": \"数据库\",\n      \"databaseSub\": \"， 无需创建数据库， 开箱即用.\",\n      \"storage\": \"云存储\",\n      \"storageSub\": \"，创建属于你的云存储，管理文件更简单。\"\n    },\n    \"Choice\": {\n      \"title\": \"为什么选择 Sealos 云开发\",\n      \"open\": \"更开放\",\n      \"openSub\": \"Laf 遵循 Apache License 2.0 开源协议\",\n      \"fast\": \"请求更快\",\n      \"fastSub\": \"没有冷启时间让你的请求响应更快\",\n      \"private\": \"支持私有化部署\",\n      \"privateSub\": \"无厂商绑定，可交付于任何环境\",\n      \"simple\": \"开发更简单\",\n      \"simpleSub\": \"无需关心部署、运维，一切都是 Serverless\",\n      \"cheap\": \"高性价比\",\n      \"cheapSub\": \"百万次调用，最低仅需 0.01 元\",\n      \"service\": \"我们致力于为所有开发者提供敏捷高效的服务\",\n      \"serviceSub\": \"了解详情\"\n    },\n    \"Join\": {\n      \"title\": \"加入 Sealos 云开发开发者社区\",\n      \"subtitle\": \"和我们一起成长\",\n      \"content\": \"在这里你可以在第一时间体验 Laf 的最新版本，以及在 Discord 或微信群与开发者和用户保持沟通\",\n      \"WeChat\": \"微信\",\n      \"forum\": \"开发者社区\"\n    },\n    \"Footer\": {\n      \"laf\": \"Sealos 云开发是一个 Serverless 框架，提供开箱即用的云函数，云数据库，对象存储等能力，是一个干净清爽的开发平台，像写博客一样写代码！三分钟上线 ChatGPT 应用！\",\n      \"product\": \"产品\",\n      \"item1_1\": \"Sealos 云开发\",\n      \"item1_2\": \"Sealos\",\n      \"item1_3\": \"更新日志\",\n      \"item1_4\": \"Vscode 插件\",\n      \"developer\": \"开发者\",\n      \"item2_1\": \"私有化部署\",\n      \"item2_2\": \"开放 API\",\n      \"item2_3\": \"贡献者指南\",\n      \"item2_4\": \"源码\",\n      \"item2_5\": \"文档\",\n      \"support\": \"支持\",\n      \"item3_1\": \"问题反馈\",\n      \"item3_2\": \"开发者社区\",\n      \"item3_3\": \"关于我们\"\n    }\n  },\n  \"ChatGPT example\": \"ChatGPT 示例\",\n  \"LinkCopied\": \"链接复制成功\",\n  \"create success\": \"创建成功\",\n  \"ServerStatus\": \"服务状态\",\n  \"Template\": {\n    \"useTemplate\": \"使用模板\",\n    \"DeveloperInformation\": \"开发者信息\",\n    \"Sponsor\": \"支持\",\n    \"Function\": \"函数\",\n    \"Dependency\": \"依赖\",\n    \"EnvironmentVariables\": \"环境变量\",\n    \"public\": \"公开\",\n    \"private\": \"私有\",\n    \"MyTemplate\": \"我的模板\",\n    \"SortOrd\": \"排序：\",\n    \"CreateTemplate\": \"新建模板\",\n    \"Details\": \"函数详情\",\n    \"My\": \"我的模板\",\n    \"Edit\": \"编辑\",\n    \"Create\": \"新建\",\n    \"CreatedAt\": \"创建于\",\n    \"Description\": \"请输入函数模板介绍信息\",\n    \"updatedAt\": \"更新于\",\n    \"UsedBy\": \"应用者\",\n    \"AddEnvironmentVariables\": \"添加环境变量\",\n    \"Total\": \"总数\",\n    \"UsedSuccessfully\": \"使用成功\",\n    \"Select the application you want to use\": \"选择你要使用的应用\",\n    \"FunctionNameExist\": \"函数名已存在\",\n    \"CommunityTemplate\": \"所有模板\",\n    \"StaredTemplate\": \"我收藏的\",\n    \"Recent\": \"最近使用\",\n    \"Earliest\": \"按时间最早\",\n    \"MostStars\": \"按收藏数最多\",\n    \"Latest\": \"按更新时间最新\",\n    \"Please select template permission\": \"请选择模板权限\",\n    \"Please enter template name\": \"请输入模板名\",\n    \"EditTemplate\": \"编辑模板\",\n    \"DeleteTemplate\": \"删除模板\",\n    \"FunctionListEmpty\": \"请至少添加一个函数\",\n    \"EmptyTemplate\": \"暂无模板\",\n    \"AddMore\": \"继续添加\",\n    \"Save\": \"保存\",\n    \"Recommended\": \"推荐模板\",\n    \"Confirm\": \"确定使用该模板吗？\",\n    \"ConfirmDeleteTemplate\": \"确定删除模板吗?\",\n    \"DeveloperInfo\": \"开发者信息\",\n    \"NoRecommended\": \"暂无推荐模板\",\n    \"Created\": \"我创建的\"\n  },\n  \"Fee\": \"费用\",\n  \"PleaseCloseApplicationFirst\": \"请先关闭应用\",\n  \"custom\": \"自定义\",\n  \"CostTime\": \"扣费时间\",\n  \"Duration\": \"交易时间\",\n  \"State\": \"状态\",\n  \"TotalAmount\": \"总费用\",\n  \"AIWelcomeMessage\": \"你好，我是 Laf AI 开发助理，请问有什么可以帮助您的吗？\",\n  \"Send\": \"发送\",\n  \"Stop\": \"停止\",\n  \"SendMessagePlaceHolder\": \"提问\",\n  \"Publish\": \"发布\",\n  \"Create function template success\": \"创建函数模板成功\",\n  \"Update function template success\": \"更新函数模板成功\",\n  \"application\": {\n    \"bonus\": \"赠\",\n    \"Recharge\": \"输入金额\",\n    \"RecommendedSpecifications\": \"推荐规格\",\n    \"ChooseSpecifications\": \"选择规格\",\n    \"autoscaling\": \"弹性伸缩\",\n    \"Number of Instances\": \"实例数\",\n    \"CPU Threshold\": \"CPU 阈值\",\n    \"DatabaseSpecification\": \"数据库规格\",\n    \"DedicatedType\": \"专用型\",\n    \"SharedType\": \"共享型\",\n    \"ApplicationSecification\": \"应用规格\",\n    \"DatabaseCreateTip\": \"数据库一旦创建，暂时无法修改类型和实例数，容量只增不减，如有特殊需要请联系客服\"\n  },\n  \"Storage Threshold\": \"内存阈值\",\n  \"Yesterday\": \"昨天\",\n  \"Today\": \"今天\",\n  \"DaysAgo\": \" 天前\",\n  \"MonthsAgo\": \" 月前\",\n  \"WeeksAgo\": \" 周前\",\n  \"UserInfo\": {\n    \"EditUserName\": \"更改用户名\",\n    \"UserName\": \"用户名\",\n    \"EditPassword\": \"修改密码\",\n    \"EditPhone\": \"更改手机号\",\n    \"PhoneNumber\": \"手机号\",\n    \"OldPhoneNumber\": \"旧手机号\",\n    \"OldSmsNumber\": \"旧验证码\",\n    \"NewPhoneNumber\": \"新手机号\",\n    \"NewSmsNumber\": \"新验证码\",\n    \"EditUserNameSuccess\": \"用户名修改成功\",\n    \"EditPasswordSuccess\": \"密码修改成功\",\n    \"EditPhoneSuccess\": \"手机号修改成功\",\n    \"EditAvatarSuccess\": \"头像更新成功\",\n    \"Change\": \"更改\",\n    \"InviteLink\": \"推广链接\",\n    \"BonusDetails\": \"奖励明细\",\n    \"Bonus\": \"奖励\",\n    \"Channel\": \"用户名\",\n    \"Time\": \"时间\",\n    \"InviteTips\": \"将推广链接复制并发送给其他人。当他们通过该链接注册并成为你的邀请对象后，你将立即获得奖励金额。\",\n    \"Email\": \"邮箱\",\n    \"ChangeEmail\": \"更改邮箱\",\n    \"SmsNumber\": \"验证码\",\n    \"ChangeEmailSuccess\": \"修改邮箱成功\",\n    \"GotoAuth\": \"去认证\",\n    \"NoAuth\": \"未实名\",\n    \"WarnTips\": \"您尚未实名认证\",\n    \"PleaseBindPhone\": \"请先绑定手机号\",\n    \"VerifiedIdentity\": \"已实名\",\n    \"Bind\": \"绑定\",\n    \"VerifiedGithub\": \"已认证\"\n  },\n  \"Reset\": \"重置\",\n  \"SettingModal\": {\n    \"Exchange\": \"兑换\",\n    \"FunctionName\": \"函数名\",\n    \"FunctionDesc\": \"函数描述\",\n    \"FunctionDesc_Name\": \"函数描述 - 函数名\",\n    \"FunctionName_Desc\": \"函数名 - 函数描述\"\n  },\n  \"Expenses\": \"支出\",\n  \"OrderNumber\": \"订单号\",\n  \"Bonus amount\": \"赠送金额\",\n  \"Total payment amount\": \"实付金额\",\n  \"Day\": \"天\",\n  \"Week\": \"周\",\n  \"Month\": \"月\",\n  \"Year\": \"年\",\n  \"Hour\": \"小时\",\n  \"Core\": \"核\",\n  \"No History\": \"暂无记录\",\n  \"MyIncomeAndExpenses\": \"我的收支\",\n  \"RecycleBin\": \"回收站\",\n  \"Restore\": \"还原\",\n  \"CheckAll\": \"全选\",\n  \"Select\": \"选择\",\n  \"ClearRecycleBin\": \"清空回收站\",\n  \"RestoreSuccess\": \"还原成功\",\n  \"EmptySuccess\": \"清空成功\",\n  \"RecycleBinEmpty\": \"回收站为空\",\n  \"SelectOne\": \"请至少选择一个\",\n  \"Apply\": \"使用\",\n  \"Developing\": \"开发中\",\n  \"Unverified\": \"未认证\",\n  \"i18n tip\": \"En\",\n  \"Collaborate\": {\n    \"InviteMembers\": \"邀请成员\",\n    \"GenerateInvitationLink\": \"生成邀请链接\",\n    \"Members\": \"成员\",\n    \"NoMembers\": \"暂无成员\",\n    \"Invitation\": \"受邀提醒\",\n    \"InvitationContent\": \"{{userName}} 邀请您成为应用 <strong>{{appName}}</strong> ({{appid}}) 的 {{role}}。\",\n    \"Accept\": \"接受\",\n    \"Accepted\": \"链接已被使用\",\n    \"Remove\": \"移除\",\n    \"CopyLink\": \"复制邀请链接\",\n    \"Revoke\": \"撤销\",\n    \"Invite\": \"协作 ({{number}})\",\n    \"GenerateInvitationLinkSuccess\": \"生成链接成功\",\n    \"DeleteLinkSuccess\": \"删除链接成功\",\n    \"JoinSuccess\": \"加入成功\",\n    \"RemoveSuccess\": \"成员移除成功\",\n    \"Leave\": \"离开\",\n    \"LeaveSuccess\": \"已成功离开\",\n    \"QuitSuccess\": \"退出成功\",\n    \"Quit\": \"退出\"\n  },\n  \"Collaborative\": \"协作\",\n  \"CreateFunction\": \"创建函数\",\n  \"CreateApp\": \"新建应用\",\n  \"Used\": \"已使用\",\n  \"Remaining\": \"剩余\",\n  \"Pod\": \"实例\",\n  \"EditFunction\": \"编辑函数\",\n  \"Error\": \"监控不可用，\",\n  \"Retry\": \"点击重试\",\n  \"NoFunctionYet\": \"您还没有创建函数哦～ \",\n  \"shortcutKey\": \"快捷键\",\n  \"NameCopiedSuccessfully\": \"名称复制成功\",\n  \"NameCannotBeEmpty\": \"name 不能为空\",\n  \"PreviousPage\": \"上一页\",\n  \"NextPage\": \"下一页\",\n  \"LastPage\": \"最后一页\",\n  \"FirstPage\": \"第一页\",\n  \"Bind\": \"绑定\",\n  \"UnBind\": \"解绑\",\n  \"UnBindSuccess\": \"解绑成功\",\n  \"SavedSuccessfully\": \"保存成功\",\n  \"CreateSuccess\": \"创建成功\",\n  \"Properties\": \"属性\",\n  \"Action\": \"操作\",\n  \"Byte\": \"字节\",\n  \"Second\": \"秒\",\n  \"Optional\": \"可选\",\n  \"Logs\": {\n    \"PodLogs\": \"应用实例日志\",\n    \"Export\": \"导出\",\n    \"logs\": \"日志\",\n    \"ScrollToBottom\": \"滚动到底部\"\n  },\n  \"KeyCannotBeEmpty\": \"Key 不能为空\",\n  \"ValueCannotBeEmpty\": \"Value 不能为空\",\n  \"AddENV\": \"新增环境变量\",\n  \"LSP\": {\n    \"InitLanguageServer\": \"点击以重新连接语言服务器\",\n    \"LanguageServerClosed\": \"语言服务器断开\",\n    \"LanguageServerError\": \"语言服务器错误\",\n    \"InitializingLanguageServer\": \"正在初始化语言服务\",\n    \"StartLanguageServer\": \"点击左侧”设置”启用语言服务器\",\n    \"EnableLanguageServer\": \"点击左侧”设置”启用语言服务器\",\n    \"LanguageServerNotEnable\": \"未启用语言服务\"\n  },\n  \"KeyAlreadyExists\": \"key 已经存在\",\n  \"SettingPanal\": {\n    \"EditorSettings\": \"编辑器设置\",\n    \"FunctionListSettings\": \"函数列表设置\"\n  },\n  \"Deprecated\": \"已弃用\",\n  \"All\": \"全部\",\n  \"DatabaseMonitor\": {\n    \"Connections\": \"连接数\",\n    \"DocumentOperand\": \"文档操作数\",\n    \"PageError\": \"页错误(ops/s)\",\n    \"Resource\": \"资源\",\n    \"Performance\": \"性能\",\n    \"Capacity\": \"容量\"\n  },\n  \"MoveFunction\": \"移动函数\",\n  \"UpgradeVersionTip\": {\n    \"Title\": \"Laf 新版本已经准备好了！\",\n    \"Description\": \"点击立即更新\"\n  },\n  \"app\": {\n    \"title\": \"云开发\",\n    \"logo\": \"Sealos 云开发\"\n  }\n}"
  },
  {
    "path": "web/public/locales/zh-CN/translation.json",
    "content": "{\n  \"CollectionPanel\": {\n    \"AddCollection\": \"新建集合\",\n    \"AddData\": \"添加数据\",\n    \"AddIndex\": \"添加索引\",\n    \"AddPolicy\": \"添加访问策略\",\n    \"AddRules\": \"添加规则\",\n    \"Collection\": \"集合\",\n    \"CollectionList\": \"集合列表\",\n    \"CollectionName\": \"集合名称\",\n    \"CollectionPlaceholder\": \"请输入集合名称\",\n    \"ConformDelete\": \"确定删除该策略吗?\",\n    \"DeleteCollection\": \"删除集合\",\n    \"DeleteCollectionTip\": \"当前操作将永久删除集合\",\n    \"EditPolicy\": \"编辑访问策略\",\n    \"EmptyCollectionText\": \"暂无集合信息,\",\n    \"EmptyPolicyText\": \"暂无策略信息,\",\n    \"IndexName\": \"索引名称\",\n    \"InputName\": \"请输入集合名称\",\n    \"Policy\": \"访问策略\",\n    \"PolicyAddress\": \"入口地址\",\n    \"PolicyName\": \"策略标识\",\n    \"PolicyNameTip\": \"请输入策略标识\",\n    \"RulesContent\": \"规则内容\",\n    \"RulesNum\": \"规则数\",\n    \"Search\": \"请输入 ID 进行搜索\",\n    \"Query\": \"请输入 MongoDb 查询语句，按回车进行查询。如：{ _id: ObjectId('') }\",\n    \"SelectCollection\": \"选择集合\",\n    \"SelectFunction\": \"请选择云函数\",\n    \"CollectionNameRule\": \"集合名称只能由字母开头,包含字母, _ 或者 - 的3至32个字符组成\",\n    \"EmptyCollectionTip\": \"您还没有创建集合\",\n    \"EmptyDataText\": \"暂无数据信息,\",\n    \"EmptyPolicyTip\": \"您还没有创建策略\",\n    \"EmptyRuleTip\": \"此策略没有规则\",\n    \"CreateTagTip\": \"按「回车键」输入标签，每个标签最多由16个字符组成\",\n    \"IndexManage\": \"索引管理\",\n    \"ConfirmDeleteIndex\": \"确定删除该索引吗？\",\n    \"IndexKey\": \"索引字段\",\n    \"SelectIndexType\": \"选择类型\",\n    \"AddIndexKey\": \"添加字段\",\n    \"AdvancedOptions\": \"高级选项\",\n    \"CreateIndex\": \"创建索引\",\n    \"CapacityLimit\": \"容量限制\",\n    \"CreateTTL\": \"创建 TTL\",\n    \"CreateUniqueIndex\": \"创建唯一索引\",\n    \"UniqueIndexDescription\": \"唯一索引可确保索引字段不存储重复的值，如果该字段中已有重复的数据，创建唯一索引时会报错。\",\n    \"TTLDescription\": \"TTL索引使文档在特定时间后自动过期和删除，需要在一个日期字段上创建索引。\",\n    \"CapacityLimitDescription\": \"使用“固定集合”来限制集合的容量。固定集合有一个固定的大小，当它满了之后，新的文档会替代最老的文档。\",\n    \"DocumentNum\": \"条\"\n  },\n  \"Add\": \"添加\",\n  \"AddData\": \"新增数据\",\n  \"AddSuccess\": \"添加成功\",\n  \"Auth\": {\n    \"migrationNotice\": \"laf 平台已经迁移到 sealos 中，不再支持新的注册，请使用 sealaf，点击跳转至 sealos\"\n  },\n  \"Cancel\": \"取消\",\n  \"Close\": \"关闭\",\n  \"Confirm\": \"确定\",\n  \"Copied\": \"已复制\",\n  \"Copy\": \"复制\",\n  \"Create\": \"新建\",\n  \"Change\": \"变更配置\",\n  \"CreateNow\": \"立即创建\",\n  \"Custom\": \"自定义\",\n  \"Days\": \"天\",\n  \"Delete\": \"删除\",\n  \"DeleteConfirm\": \"确定删除该行数据吗?\",\n  \"DeleteSuccess\": \"删除成功\",\n  \"DeleteTip\": \"无法撤销\",\n  \"Edit\": \"编辑\",\n  \"Empty\": \"清空\",\n  \"Generate\": \"生成\",\n  \"InputTip\": \"请输入\",\n  \"IsRequired\": \"是必须的\",\n  \"LimitSelect\": \"请至少选择一个\",\n  \"Logout\": \"退出登录\",\n  \"Name\": \"名称\",\n  \"Operation\": \"操作\",\n  \"Page\": \"页\",\n  \"Save\": \"保存\",\n  \"Search\": \"搜索\",\n  \"ToConfirm\": \"进行确定\",\n  \"NameNotMatch\": \"名称不匹配\",\n  \"Total\": \"总数\",\n  \"Update\": \"更新\",\n  \"UpdateSuccess\": \"更新成功\",\n  \"moreOperations\": \"更多操作\",\n  \"openPopover\": \"点击打开浮层\",\n  \"FunctionPanel\": {\n    \"AddFunction\": \"添加函数\",\n    \"Code\": \"函数模板\",\n    \"ConfirmDeploy\": \"确认发布\",\n    \"CustomDependence\": \"自定义依赖\",\n    \"CustomDependenceTip\": \"暂无自定义依赖\",\n    \"DeleteDependencyConfirm\": \"确定要删除该依赖吗？\",\n    \"Debug\": \"运行\",\n    \"DebugResult\": \"运行结果\",\n    \"DeleteConfirm\": \"确定要删除函数吗？\",\n    \"Dependence\": \"NPM 依赖\",\n    \"DependenceAdd\": \"添加依赖\",\n    \"DependenceEdit\": \"编辑依赖\",\n    \"DependenceName\": \"依赖包名\",\n    \"DependenceTip\": \"请输入依赖包名\",\n    \"DependenceVersion\": \"依赖版本\",\n    \"Deploy\": \"发布\",\n    \"DeploySuccess\": \"发布成功\",\n    \"Fetch\": \"拉取\",\n    \"FetchSuccess\": \"恢复成功\",\n    \"Description\": \"输入函数描述信息\",\n    \"EditFunction\": \"编辑函数\",\n    \"Function\": \"函数\",\n    \"FunctionList\": \"函数列表\",\n    \"FunctionName\": \"函数名\",\n    \"FunctionNameTip\": \"函数唯一标识，如 get-user，可以使用 user/get-user 的形式来创建文件夹\",\n    \"InterfaceDebug\": \"接口调试\",\n    \"Methods\": \"请求方法\",\n    \"Name\": \"参数名\",\n    \"Tags\": \"标签\",\n    \"SearchPlaceholder\": \"请输入函数名查询\",\n    \"Select\": \"已选择\",\n    \"SystemDependence\": \"内置依赖\",\n    \"Value\": \"值\",\n    \"isSupport\": \"是否支持\",\n    \"FunctionNameRule\": \"函数名须由字母、数字、点（.）和划线(-_)组成，匹配正则：/^[a-zA-Z0-9_.\\\\-](?:[a-zA-Z0-9_.\\\\-/]{0,254}[a-zA-Z0-9_.\\\\-])?$/\",\n    \"EmptyDebugTip\": \"暂无运行结果\",\n    \"EmptyFunctionTip\": \"您还没有创建函数\",\n    \"UploadButton\": \"上传\",\n    \"LeaveFunctionPage\": \"即将离开函数编辑页面\",\n    \"PromptDescription\": \"使用自然语言描述你的需求, laf 会帮你生成代码, 例如: 写一个 hello world ,返回 {hello: 'laf AI'}\",\n    \"CreateWithAITip\": \"使用 AI 辅助创建函数\",\n    \"CreateNow\": \"立即创建\",\n    \"CreateFromTemplate\": \"更多模板\",\n    \"getCodeOnline\": \"获取线上最新发布的代码\",\n    \"versionHistory\": \"历史版本\",\n    \"Restore\": \"恢复\",\n    \"Invite\": \"邀请\",\n    \"HistoryTips\": \"暂无历史版本\",\n    \"NoDesc\": \"暂无描述\",\n    \"CurrentVersion\": \"当前版本\",\n    \"HistoryVersion\": \"历史版本\",\n    \"DeployChangelog\": \"输入此次函数修改的描述 (可选)\",\n    \"MoveFunctionTip\": \"是否要将 {{srcFunc}} 移动到 {{targetDir}} 目录？\",\n    \"MoveFunctionToRootTip\": \"是否要将 {{srcFunc}} 移动到根目录？\",\n    \"MovingFunction\": \"移动函数中...\",\n    \"DependenceInstallTip\": \"保存后请等待依赖安装完成，在「日志」查看安装进度\",\n    \"CopyOpenAPIUrl\": \"复制 OpenAPI 链接\"\n  },\n  \"HomePanel\": {\n    \"APP\": \"Android or iOS 应用\",\n    \"Application\": \"应用\",\n    \"Blog\": \"个人博客、企业官网\",\n    \"Develop\": \"开发\",\n    \"Enterprise\": \"企业信息化建设\",\n    \"Explore\": \"等你探索\",\n    \"Hello\": \"你好\",\n    \"Introduction\": \"在这里，你可以作为全栈、后端、云开发用户、Node.js开发者、独立开发者等，开发出任何应用，例如：\",\n    \"MyApp\": \"我的应用\",\n    \"Personal\": \"个人开发者的「手边云」\",\n    \"Region\": \"可用区\",\n    \"RuntimeName\": \"运行时\",\n    \"State\": \"状态\",\n    \"Use\": \"快来创建一个属于自己的应用吧～\",\n    \"WX\": \"微信小程序/公众号\",\n    \"Welcome\": \"欢迎来到 LAF 云开发平台！\",\n    \"DeleteApp\": \"删除 APP\",\n    \"DeleteTip\": \"当前操作将会永久删除应用, 包括函数、数据、云存储等与应用相关的数据, 删除后<strong>将无法撤消</strong>,  请输入 <strong>{{appId}}</strong> 后确认\",\n    \"Duration\": \"购买时长\",\n    \"Spec\": \"规格\",\n    \"WelcomeTo\": \"欢迎来到 \",\n    \"LAF\": \" LAF 云开发平台！\"\n  },\n  \"SpecItem\": {\n    \"cpu\": \"CPU\",\n    \"memory\": \"内存\",\n    \"databaseCapacity\": \"数据库\",\n    \"storageCapacity\": \"云存储\",\n    \"capacity\": \"容量\",\n    \"replicas\": \"实例数\"\n  },\n  \"LogPanel\": {\n    \"Detail\": \"日志详情\",\n    \"Log\": \"日志\",\n    \"EmptyLogTip\": \"暂无日志信息\"\n  },\n  \"SettingPanel\": {\n    \"AddAppEnv\": \"新增环境变量\",\n    \"AppEnv\": \"环境变量\",\n    \"Expire\": \"过期时间\",\n    \"Setting\": \"设置\",\n    \"SystemSetting\": \"应用设置\",\n    \"UserSetting\": \"用户设置\",\n    \"UpdateConfirm\": \"确认更新环境变量？\",\n    \"AppInfo\": \"应用信息\",\n    \"BaseInfo\": \"基础信息\",\n    \"Detail\": \"规格详情\",\n    \"Memory\": \"内存\",\n    \"Disk\": \"硬盘\",\n    \"DB\": \"数据库\",\n    \"network\": \"出网容量\",\n    \"Delete\": \"删除应用\",\n    \"Start\": \"启动应用\",\n    \"Restart\": \"重启应用\",\n    \"UserInfo\": \"用户信息\",\n    \"Auth\": \"实名认证\",\n    \"Tel\": \"手机号\",\n    \"SendCode\": \"发送验证码\",\n    \"Code\": \"验证码\",\n    \"Name\": \"真实姓名\",\n    \"ID\": \"身份证号\",\n    \"ToAuth\": \"立即认证\",\n    \"showAuth\": \"去认证\",\n    \"noAuth\": \"未实名\",\n    \"IDTip\": \"请输入有效的身份证号码\",\n    \"CodeTip\": \"请输入四位数字验证码\",\n    \"TelTip\": \"请输入有效的手机号码\",\n    \"Registered\": \"注册时间\",\n    \"Subscription\": \"订阅信息\",\n    \"Usage\": \"费用中心\",\n    \"Avatar\": \"头像\",\n    \"UserName\": \"用户名\",\n    \"Email\": \"邮箱\",\n    \"PassWord\": \"密码\",\n    \"UserInvite\": \"我的推广\",\n    \"UserCenter\": \"用户中心\",\n    \"CostOverview\": \"成本总览\",\n    \"CardRedemption\": \"点卡兑换\",\n    \"BillingDetails\": \"账单明细\",\n    \"RechargeHistory\": \"充值记录\",\n    \"PricingStandards\": \"计价标准\",\n    \"EnterGiftCode\": \"输入卡密\",\n    \"ExchangeSuccess\": \"兑换成功\",\n    \"Domain\": \"域名设置\",\n    \"MyAccount\": \"我的账户\",\n    \"CostTrend\": \"成本趋势\",\n    \"Balance\": \"余额\",\n    \"Pause\": \"暂停应用\",\n    \"PauseTips\": \"确定要暂停此应用吗？\",\n    \"RestartTips\": \"同时重启数据库?\",\n    \"RestartTips1\": \"确定要重启应用?\",\n    \"CommonSetting\": \"常用设置\",\n    \"EditorFont\": \"编辑器字体\",\n    \"FontSize\": \"字体大小\",\n    \"FuncListDisplay\": \"函数列表显示\",\n    \"ListDisplay\": \"列表显示\",\n    \"EditorLanguageServer\": \"编辑器语言服务\",\n    \"isOpenLanguageServer\": \"是否开启 TypeScript 语言服务（体验更好的类型提示，仅在应用配置高于 1C 2G 时生效）\",\n    \"Editor\": \"编辑器\",\n    \"FuncList\": \"函数列表\",\n    \"EditorMode\": \"使用编辑器模式\",\n    \"OldLogs\": \"旧版日志\",\n    \"MonitorSetting\": \"资源监控\",\n    \"DatabaseMonitor\": \"数据库监控\",\n    \"RuntimeMonitor\": \"运行时监控\",\n    \"ClientSetting\": \"客户端设置\",\n    \"AICompletion\": \"是否开启代码智能补全（需刷新生效）\"\n  },\n  \"StoragePanel\": {\n    \"All\": \"总容量\",\n    \"DeleteConfirm\": \"当前操作将会永久删除云存储\",\n    \"DeleteFileTip\": \"确定要删除文件吗？\",\n    \"DeleteFolderTip\": \"确定要删除整个文件夹吗？请注意当有大量文件存在时会稍许有一点慢哦\",\n    \"Drag\": \"拖放到此处或者\",\n    \"EmptyText\": \"暂无 Bucket 数据,\",\n    \"File\": \"文件\",\n    \"FileName\": \"文件名\",\n    \"FileType\": \"文件类型\",\n    \"Folder\": \"文件夹\",\n    \"FolderName\": \"文件夹名称\",\n    \"NameTip\": \"请输入文件夹名称\",\n    \"Policy\": \"权限\",\n    \"Private\": \"私有 (private)\",\n    \"Readonly\": \"公共读 (readonly)\",\n    \"ReadWrite\": \"公共读写 (readwrite)\",\n    \"SearchBucket\": \"请输入 bucket 名进行搜索\",\n    \"Size\": \"大小\",\n    \"Storage\": \"存储\",\n    \"StorageList\": \"云存储\",\n    \"StorageNameTip\": \"请输入云存储名称\",\n    \"Success\": \"上传成功\",\n    \"Time\": \"更新时间\",\n    \"TimeTip\": \"临时链接,有效期15分钟\",\n    \"Upload\": \"上传\",\n    \"Used\": \"已使用\",\n    \"UploadTip\": \"请选择文件或者文件夹上传\",\n    \"BucketNameRule\": \"Bucket 名称必须由小写字母、数字和中划线（-）组成，长度在3到32个字符之间，且不能以 - 开头或结尾。\",\n    \"Bucket\": \"桶\",\n    \"BucketName\": \"Bucket 名称\",\n    \"CreateBucket\": \"创建 Bucket\",\n    \"EditBucket\": \"编辑 Bucket\",\n    \"DeleteBucket\": \"删除 Bucket\",\n    \"BucketNamePlaceholder\": \"bucket 名称\",\n    \"EmptyStorageTip\": \"您还没有创建 Bucket\",\n    \"UploadFile\": \"上传文件\",\n    \"UploadFolder\": \"上传文件夹\",\n    \"domain\": \"域名\",\n    \"domainTip\": \"请输入Domain\",\n    \"isResolved\": \"已生效\",\n    \"parsing\": \"解析中\",\n    \"websiteHost\": \"开启网站托管\",\n    \"cnameTip\": \"请对该域名添加 CNAME 记录，解析到 <strong>{{cnameDomain}}</strong> ，解析生效后即可绑定自定义域名。\",\n    \"editHostTip\": \"开启网站托管需要 bucket 权限是 readonly 模式\",\n    \"CreateWebHosting\": \"绑定自定义域名\",\n    \"CustomDomain\": \"自定义域名\",\n    \"CurrentDomain\": \"当前域名: \",\n    \"CancelHost\": \"取消托管\",\n    \"Inaccessible\": \"无法访问\",\n    \"InstantUpload\": \"立即上传\",\n    \"RemoveHost\": \"取消静态托管\",\n    \"DomainUpdateSuccess\": \"域名修改成功\",\n    \"DomainDeleteSuccess\": \"域名删除成功\",\n    \"CustomApplicationDomain\": \"自定义应用域名\",\n    \"BucketNameisRequired\": \"请输入 Bucket 名称\",\n    \"Fail\": \"上传失败\",\n    \"UploadFailTip\": \"{{number}} 个文件上传失败\",\n    \"StartAppTips\": \"请先启动应用\",\n    \"SuccessfullyHosted\": \"托管成功\",\n    \"SuccessfullyHostedTips\": \"HTTP已生效，HTTPS需要一些时间生效。如需查看托管状态，请暂时使用HTTP访问。\",\n    \"BucketTips\": \"新创建的 bucket，或应用重启后的 bucket ，需要等待 15 ~ 30s 才能生效\",\n    \"DomainNotResolved\": \"尝试使用 ping 或 nslookup 来查看域名解析是否生效\",\n    \"DeleteFiles\": \"确定要删除 {{num}} 个目录及文件吗？\",\n    \"DeletingFiles\": \"正在删除 {{num}} 个目录及文件...\",\n    \"DeleteFilesResult\": \"删除目录及文件：{{successNum}} 成功，{{failedNum}} 失败\"\n  },\n  \"TriggerPanel\": {\n    \"AddTrigger\": \"新建触发器\",\n    \"CornTip\": \"例: * * * * * \\n表示每 1 分钟执行任务\",\n    \"DeleteConfirm\": \"确定删除该触发器吗\",\n    \"Express\": \"表达式\",\n    \"Function\": \"关联函数\",\n    \"FunctionTip\": \"请选择关联的云函数\",\n    \"Name\": \"触发器名称\",\n    \"NameTip\": \"请输入触发器名称\",\n    \"SearchTip\": \"输入触发器名称查找\",\n    \"SetTimeout\": \"定时任务\",\n    \"Time\": \"创建/更新时间\",\n    \"Trigger\": \"触发器\",\n    \"Type\": \"类型\",\n    \"CronHelp\": \"更多示例\",\n    \"Cron\": \"表达式\",\n    \"EmptyTriggerTip\": \"您还没有创建触发器,\",\n    \"Every8AM\": \"每天上午8点\",\n    \"EveryHour\": \"每小时\",\n    \"EveryFiveMinutes\": \"每五分钟\",\n    \"createFail\": \"触发器数量已达上限，请升级应用配置\"\n  },\n  \"StatusBar\": {\n    \"CurrentApplication\": \"当前应用\"\n  },\n  \"NoData\": \"当前无数据\",\n  \"SaveAndRestart\": \"保存并重启\",\n  \"DataEntry\": {\n    \"CreateError\": \"字段不能为空\"\n  },\n  \"Refresh\": \"刷新\",\n  \"RefreshData\": \"刷新数据\",\n  \"EditTip\": \"已修改,未发布\",\n  \"NoInfo\": \"暂无信息\",\n  \"RefreshDataSuccess\": \"数据刷新成功\",\n  \"database example\": \"database 示例\",\n  \"update success\": \"更新成功\",\n  \"Take me home\": \"返回首页\",\n  \"404Message\": \"找不到当前内容\",\n  \"403Message\": \"当前用户没有权限\",\n  \"Bucket\": {\n    \"StatusTip\": \"外部访问需要将 bucket 权限设置为 readonly\"\n  },\n  \"Restart\": \"重启应用\",\n  \"ShutDown\": \"关闭应用\",\n  \"Charge\": \"充值\",\n  \"Back\": \"返回\",\n  \"Personal Access Token\": \"访问凭证 (PAT)\",\n  \"SwitchLanguage\": \"切换语言\",\n  \"SwitchColorMode\": \"切换颜色模式\",\n  \"Storage\": \"云存储\",\n  \"upload example\": \"文件上传示例\",\n  \"Unit\": {\n    \"CPU\": \"核\",\n    \"GB\": \"GB\",\n    \"MB\": \"MB\"\n  },\n  \"Spec\": {\n    \"RAM\": \"内存\",\n    \"Database\": \"数据库\",\n    \"Storage\": \"云存储\",\n    \"NetworkTraffic\": \"出网流量\",\n    \"QueryOperand\": \"查询操作数\"\n  },\n  \"Price\": {\n    \"Free\": \"免费\"\n  },\n  \"star-us-on-github\": \"在 GitHub 上支持我们\",\n  \"AuthPanel\": {\n    \"Phone\": \"手机号\",\n    \"PhoneTip\": \"请输入有效的手机号码\",\n    \"PhonePlaceholder\": \"请输入手机号\",\n    \"ValidationCode\": \"验证码\",\n    \"getValidationCode\": \"获取验证码\",\n    \"Login\": \"登录\",\n    \"LoginTip\": \"请输入手机号和验证码\",\n    \"LoginWithGithub\": \"GitHub 登录\",\n    \"ValidationCodeTip\": \"请输入验证码\",\n    \"ForgotPassword\": \"忘记密码？\",\n    \"Register\": \"注册\",\n    \"ToRegister\": \"去注册\",\n    \"ToLogin\": \"去登录\",\n    \"PasswordLogin\": \"密码登录\",\n    \"PhoneLogin\": \"手机号登录\",\n    \"Account\": \"用户名\",\n    \"AccountPlaceholder\": \"请输入用户名\",\n    \"Password\": \"密码\",\n    \"PasswordPlaceholder\": \"请输入密码\",\n    \"ConfirmPassword\": \"确认密码\",\n    \"ConfirmPasswordPlaceholder\": \"请再次输入密码\",\n    \"PasswordNotMatch\": \"两次输入的密码不一致\",\n    \"SmsCodeSendSuccess\": \"验证码发送成功\",\n    \"ValidationCodePlaceholder\": \"请输入验证码\",\n    \"ResetPassword\": \"重置密码\",\n    \"ResetPasswordSuccess\": \"重置密码成功\",\n    \"NewPassword\": \"新密码\",\n    \"SignUpSuccess\": \"注册成功\",\n    \"EmailTip\": \"请输入有效的邮箱\",\n    \"LoginOrRegister\": \"登录 / 注册\",\n    \"BindGitHub\": \"绑定 GitHub\",\n    \"BindSuccess\": \"绑定成功\",\n    \"GitHubLogin\": \"GitHub 登录\",\n    \"PleaseBindUser\": \"请绑定对应用户\",\n    \"Email\": \"邮箱\",\n    \"EmailPlaceholder\": \"请输入你的邮箱\",\n    \"EmailLogin\": \"邮箱登录\"\n  },\n  \"Time\": \"时间\",\n  \"CreateTime\": \"创建时间\",\n  \"EndTime\": \"到期时间\",\n  \"Renew\": \"续期\",\n  \"Balance\": \"账户余额\",\n  \"ChargeNow\": \"立即充值\",\n  \"balance is insufficient\": \"余额不足\",\n  \"DeleteApp\": \"删除应用\",\n  \"Recharge amount\": \"充值金额\",\n  \"Scan with WeChat\": \"微信扫码支付\",\n  \"Order Number\": \"订单号\",\n  \"payment status\": \"支付状态\",\n  \"CreateFolder\": \"新建文件夹\",\n  \"Or\": \"或\",\n  \"Generating\": \"正在生成\",\n  \"Start\": \"开始生成\",\n  \"TryLafAI\": \"试试 🎉 Laf AI !\",\n  \"HomePage\": {\n    \"LafLink\": \"/dashboard\",\n    \"WebSite\": {\n      \"title\": \"Laf 云开发官网\",\n      \"description\": \"Laf 是一个集函数、数据库、存储为一体的云开发平台，随时随地，发布上线\"\n    },\n    \"NavBar\": {\n      \"title\": \"如果你喜欢 Sealos 云开发的话，请在 Github 上给我们一个 Star 吧！\",\n      \"home\": \"主页\",\n      \"dashboard\": \"控制台\",\n      \"price\": \"价格\",\n      \"case\": \"案例\",\n      \"aboutUs\": \"关于我们\",\n      \"docs\": \"文档\",\n      \"contact\": \"商务合作\",\n      \"forum\": \"社区\",\n      \"faq\": \"FAQ\",\n      \"start\": \"立即开发\",\n      \"stars\": \"3.9K\",\n      \"funcTemplate\": \"函数市场\",\n      \"appMarket\": \"应用市场\",\n      \"community\": \"用户群\"\n    },\n    \"HomePage\": {\n      \"slogan\": \"像写博客一样写代码\",\n      \"start\": \"立即开发\",\n      \"content1\": \"Sealos 云开发是一个集函数、数据库、存储为一体的云开发平台\",\n      \"content2\": \"随时随地，发布上线\"\n    },\n    \"Ability\": {\n      \"title\": \"Sealos 云开发的能力\",\n      \"learn\": \"了解详情\",\n      \"function\": \"云函数\",\n      \"functionSub\": \"， 5秒发布你的第一个函数。\",\n      \"database\": \"数据库\",\n      \"databaseSub\": \"， 无需创建数据库， 开箱即用.\",\n      \"storage\": \"云存储\",\n      \"storageSub\": \"，创建属于你的云存储，管理文件更简单。\"\n    },\n    \"Choice\": {\n      \"title\": \"为什么选择 Sealos 云开发\",\n      \"open\": \"更开放\",\n      \"openSub\": \"Laf 遵循 Apache License 2.0 开源协议\",\n      \"fast\": \"请求更快\",\n      \"fastSub\": \"没有冷启时间让你的请求响应更快\",\n      \"private\": \"支持私有化部署\",\n      \"privateSub\": \"无厂商绑定，可交付于任何环境\",\n      \"simple\": \"开发更简单\",\n      \"simpleSub\": \"无需关心部署、运维，一切都是 Serverless\",\n      \"cheap\": \"高性价比\",\n      \"cheapSub\": \"百万次调用，最低仅需 0.01 元\",\n      \"service\": \"我们致力于为所有开发者提供敏捷高效的服务\",\n      \"serviceSub\": \"了解详情\"\n    },\n    \"Join\": {\n      \"title\": \"加入 Sealos 云开发开发者社区\",\n      \"subtitle\": \"和我们一起成长\",\n      \"content\": \"在这里你可以在第一时间体验 Laf 的最新版本，以及在 Discord 或微信群与开发者和用户保持沟通\",\n      \"WeChat\": \"微信\",\n      \"forum\": \"开发者社区\"\n    },\n    \"Footer\": {\n      \"laf\": \"Sealos 云开发是一个 Serverless 框架，提供开箱即用的云函数，云数据库，对象存储等能力，是一个干净清爽的开发平台，像写博客一样写代码！三分钟上线 ChatGPT 应用！\",\n      \"product\": \"产品\",\n      \"item1_1\": \"Sealos 云开发\",\n      \"item1_2\": \"Sealos\",\n      \"item1_3\": \"更新日志\",\n      \"item1_4\": \"Vscode 插件\",\n      \"developer\": \"开发者\",\n      \"item2_1\": \"私有化部署\",\n      \"item2_2\": \"开放 API\",\n      \"item2_3\": \"贡献者指南\",\n      \"item2_4\": \"源码\",\n      \"item2_5\": \"文档\",\n      \"support\": \"支持\",\n      \"item3_1\": \"问题反馈\",\n      \"item3_2\": \"开发者社区\",\n      \"item3_3\": \"关于我们\"\n    }\n  },\n  \"ChatGPT example\": \"ChatGPT 示例\",\n  \"LinkCopied\": \"链接复制成功\",\n  \"create success\": \"创建成功\",\n  \"ServerStatus\": \"服务状态\",\n  \"Template\": {\n    \"useTemplate\": \"使用模板\",\n    \"DeveloperInformation\": \"开发者信息\",\n    \"Sponsor\": \"支持\",\n    \"Function\": \"函数\",\n    \"Dependency\": \"依赖\",\n    \"EnvironmentVariables\": \"环境变量\",\n    \"public\": \"公开\",\n    \"private\": \"私有\",\n    \"MyTemplate\": \"我的模板\",\n    \"SortOrd\": \"排序：\",\n    \"CreateTemplate\": \"新建模板\",\n    \"Details\": \"函数详情\",\n    \"My\": \"我的模板\",\n    \"Edit\": \"编辑\",\n    \"Create\": \"新建\",\n    \"CreatedAt\": \"创建于\",\n    \"Description\": \"请输入函数模板介绍信息\",\n    \"updatedAt\": \"更新于\",\n    \"UsedBy\": \"应用者\",\n    \"AddEnvironmentVariables\": \"添加环境变量\",\n    \"Total\": \"总数\",\n    \"UsedSuccessfully\": \"使用成功\",\n    \"Select the application you want to use\": \"选择你要使用的应用\",\n    \"FunctionNameExist\": \"函数名已存在\",\n    \"CommunityTemplate\": \"所有模板\",\n    \"StaredTemplate\": \"我收藏的\",\n    \"Recent\": \"最近使用\",\n    \"Earliest\": \"按时间最早\",\n    \"MostStars\": \"按收藏数最多\",\n    \"Latest\": \"按更新时间最新\",\n    \"Please select template permission\": \"请选择模板权限\",\n    \"Please enter template name\": \"请输入模板名\",\n    \"EditTemplate\": \"编辑模板\",\n    \"DeleteTemplate\": \"删除模板\",\n    \"FunctionListEmpty\": \"请至少添加一个函数\",\n    \"EmptyTemplate\": \"暂无模板\",\n    \"AddMore\": \"继续添加\",\n    \"Save\": \"保存\",\n    \"Recommended\": \"推荐模板\",\n    \"Confirm\": \"确定使用该模板吗？\",\n    \"ConfirmDeleteTemplate\": \"确定删除模板吗?\",\n    \"DeveloperInfo\": \"开发者信息\",\n    \"NoRecommended\": \"暂无推荐模板\",\n    \"Created\": \"我创建的\"\n  },\n  \"Fee\": \"费用\",\n  \"PleaseCloseApplicationFirst\": \"请先关闭应用\",\n  \"custom\": \"自定义\",\n  \"CostTime\": \"扣费时间\",\n  \"Duration\": \"交易时间\",\n  \"State\": \"状态\",\n  \"TotalAmount\": \"总费用\",\n  \"AIWelcomeMessage\": \"你好，我是 Laf AI 开发助理，请问有什么可以帮助您的吗？\",\n  \"Send\": \"发送\",\n  \"Stop\": \"停止\",\n  \"SendMessagePlaceHolder\": \"提问\",\n  \"Publish\": \"发布\",\n  \"Create function template success\": \"创建函数模板成功\",\n  \"Update function template success\": \"更新函数模板成功\",\n  \"application\": {\n    \"bonus\": \"赠\",\n    \"Recharge\": \"输入金额\",\n    \"RecommendedSpecifications\": \"推荐规格\",\n    \"ChooseSpecifications\": \"选择规格\",\n    \"autoscaling\": \"弹性伸缩\",\n    \"Number of Instances\": \"实例数\",\n    \"CPU Threshold\": \"CPU 阈值\",\n    \"DatabaseSpecification\": \"数据库规格\",\n    \"DedicatedType\": \"专用型\",\n    \"SharedType\": \"共享型\",\n    \"ApplicationSecification\": \"应用规格\",\n    \"DatabaseCreateTip\": \"数据库一旦创建，暂时无法修改类型和实例数，容量只增不减，如有特殊需要请联系客服\"\n  },\n  \"Storage Threshold\": \"内存阈值\",\n  \"Yesterday\": \"昨天\",\n  \"Today\": \"今天\",\n  \"DaysAgo\": \" 天前\",\n  \"MonthsAgo\": \" 月前\",\n  \"WeeksAgo\": \" 周前\",\n  \"UserInfo\": {\n    \"EditUserName\": \"更改用户名\",\n    \"UserName\": \"用户名\",\n    \"EditPassword\": \"修改密码\",\n    \"EditPhone\": \"更改手机号\",\n    \"PhoneNumber\": \"手机号\",\n    \"OldPhoneNumber\": \"旧手机号\",\n    \"OldSmsNumber\": \"旧验证码\",\n    \"NewPhoneNumber\": \"新手机号\",\n    \"NewSmsNumber\": \"新验证码\",\n    \"EditUserNameSuccess\": \"用户名修改成功\",\n    \"EditPasswordSuccess\": \"密码修改成功\",\n    \"EditPhoneSuccess\": \"手机号修改成功\",\n    \"EditAvatarSuccess\": \"头像更新成功\",\n    \"Change\": \"更改\",\n    \"InviteLink\": \"推广链接\",\n    \"BonusDetails\": \"奖励明细\",\n    \"Bonus\": \"奖励\",\n    \"Channel\": \"用户名\",\n    \"Time\": \"时间\",\n    \"InviteTips\": \"将推广链接复制并发送给其他人。当他们通过该链接注册并成为你的邀请对象后，你将立即获得奖励金额。\",\n    \"Email\": \"邮箱\",\n    \"ChangeEmail\": \"更改邮箱\",\n    \"SmsNumber\": \"验证码\",\n    \"ChangeEmailSuccess\": \"修改邮箱成功\",\n    \"GotoAuth\": \"去认证\",\n    \"NoAuth\": \"未实名\",\n    \"WarnTips\": \"您尚未实名认证\",\n    \"PleaseBindPhone\": \"请先绑定手机号\",\n    \"VerifiedIdentity\": \"已实名\",\n    \"Bind\": \"绑定\",\n    \"VerifiedGithub\": \"已认证\"\n  },\n  \"Reset\": \"重置\",\n  \"SettingModal\": {\n    \"Exchange\": \"兑换\",\n    \"FunctionName\": \"函数名\",\n    \"FunctionDesc\": \"函数描述\",\n    \"FunctionDesc_Name\": \"函数描述 - 函数名\",\n    \"FunctionName_Desc\": \"函数名 - 函数描述\"\n  },\n  \"Expenses\": \"支出\",\n  \"OrderNumber\": \"订单号\",\n  \"Bonus amount\": \"赠送金额\",\n  \"Total payment amount\": \"实付金额\",\n  \"Day\": \"天\",\n  \"Week\": \"周\",\n  \"Month\": \"月\",\n  \"Year\": \"年\",\n  \"Hour\": \"小时\",\n  \"Core\": \"核\",\n  \"No History\": \"暂无记录\",\n  \"MyIncomeAndExpenses\": \"我的收支\",\n  \"RecycleBin\": \"回收站\",\n  \"Restore\": \"还原\",\n  \"CheckAll\": \"全选\",\n  \"Select\": \"选择\",\n  \"ClearRecycleBin\": \"清空回收站\",\n  \"RestoreSuccess\": \"还原成功\",\n  \"EmptySuccess\": \"清空成功\",\n  \"RecycleBinEmpty\": \"回收站为空\",\n  \"SelectOne\": \"请至少选择一个\",\n  \"Apply\": \"使用\",\n  \"Developing\": \"开发中\",\n  \"Unverified\": \"未认证\",\n  \"i18n tip\": \"En\",\n  \"Collaborate\": {\n    \"InviteMembers\": \"邀请成员\",\n    \"GenerateInvitationLink\": \"生成邀请链接\",\n    \"Members\": \"成员\",\n    \"NoMembers\": \"暂无成员\",\n    \"Invitation\": \"受邀提醒\",\n    \"InvitationContent\": \"{{userName}} 邀请您成为应用 <strong>{{appName}}</strong> ({{appid}}) 的 {{role}}。\",\n    \"Accept\": \"接受\",\n    \"Accepted\": \"链接已被使用\",\n    \"Remove\": \"移除\",\n    \"CopyLink\": \"复制邀请链接\",\n    \"Revoke\": \"撤销\",\n    \"Invite\": \"协作 ({{number}})\",\n    \"GenerateInvitationLinkSuccess\": \"生成链接成功\",\n    \"DeleteLinkSuccess\": \"删除链接成功\",\n    \"JoinSuccess\": \"加入成功\",\n    \"RemoveSuccess\": \"成员移除成功\",\n    \"Leave\": \"离开\",\n    \"LeaveSuccess\": \"已成功离开\",\n    \"QuitSuccess\": \"退出成功\",\n    \"Quit\": \"退出\"\n  },\n  \"Collaborative\": \"协作\",\n  \"CreateFunction\": \"创建函数\",\n  \"CreateApp\": \"新建应用\",\n  \"Used\": \"已使用\",\n  \"Remaining\": \"剩余\",\n  \"Pod\": \"实例\",\n  \"EditFunction\": \"编辑函数\",\n  \"Error\": \"监控不可用，\",\n  \"Retry\": \"点击重试\",\n  \"NoFunctionYet\": \"您还没有创建函数哦～ \",\n  \"shortcutKey\": \"快捷键\",\n  \"NameCopiedSuccessfully\": \"名称复制成功\",\n  \"NameCannotBeEmpty\": \"name 不能为空\",\n  \"PreviousPage\": \"上一页\",\n  \"NextPage\": \"下一页\",\n  \"LastPage\": \"最后一页\",\n  \"FirstPage\": \"第一页\",\n  \"Bind\": \"绑定\",\n  \"UnBind\": \"解绑\",\n  \"UnBindSuccess\": \"解绑成功\",\n  \"SavedSuccessfully\": \"保存成功\",\n  \"CreateSuccess\": \"创建成功\",\n  \"Properties\": \"属性\",\n  \"Action\": \"操作\",\n  \"Byte\": \"字节\",\n  \"Second\": \"秒\",\n  \"Optional\": \"可选\",\n  \"Logs\": {\n    \"PodLogs\": \"应用实例日志\",\n    \"Export\": \"导出\",\n    \"logs\": \"日志\",\n    \"ScrollToBottom\": \"滚动到底部\"\n  },\n  \"KeyCannotBeEmpty\": \"Key 不能为空\",\n  \"ValueCannotBeEmpty\": \"Value 不能为空\",\n  \"AddENV\": \"新增环境变量\",\n  \"LSP\": {\n    \"InitLanguageServer\": \"点击以重新连接语言服务器\",\n    \"LanguageServerClosed\": \"语言服务器断开\",\n    \"LanguageServerError\": \"语言服务器错误\",\n    \"InitializingLanguageServer\": \"正在初始化语言服务\",\n    \"StartLanguageServer\": \"点击左侧”设置”启用语言服务器\",\n    \"EnableLanguageServer\": \"点击左侧”设置”启用语言服务器\",\n    \"LanguageServerNotEnable\": \"未启用语言服务\"\n  },\n  \"KeyAlreadyExists\": \"key 已经存在\",\n  \"SettingPanal\": {\n    \"EditorSettings\": \"编辑器设置\",\n    \"FunctionListSettings\": \"函数列表设置\"\n  },\n  \"Deprecated\": \"已弃用\",\n  \"All\": \"全部\",\n  \"DatabaseMonitor\": {\n    \"Connections\": \"连接数\",\n    \"DocumentOperand\": \"文档操作数\",\n    \"PageError\": \"页错误(ops/s)\",\n    \"Resource\": \"资源\",\n    \"Performance\": \"性能\",\n    \"Capacity\": \"容量\"\n  },\n  \"MoveFunction\": \"移动函数\",\n  \"UpgradeVersionTip\": {\n    \"Title\": \"Laf 新版本已经准备好了！\",\n    \"Description\": \"点击立即更新\"\n  },\n  \"app\": {\n    \"title\": \"云开发\",\n    \"logo\": \"Sealos 云开发\"\n  }\n}"
  },
  {
    "path": "web/public/robots.txt",
    "content": "User-agent: *\nAllow: /"
  },
  {
    "path": "web/src/App.css",
    "content": "/* stylelint-disable at-rule-no-unknown */\n@tailwind base;\n@tailwind components;\n@tailwind utilities;\n/* stylelint-enable at-rule-no-unknown */\n\n:root {\n  --bg-color: #fafafa;\n}\n\n/* 设置滚动条的样式 */\n::-webkit-scrollbar {\n  width: 4px;\n  height: 4px;\n}\n\nbody::-webkit-scrollbar {\n  width: 0;\n  height: 0;\n}\n\n/* 滚动槽 */\n::-webkit-scrollbar-track {\n  border-radius: 2px;\n}\n\n/* 滚动条滑块 */\n::-webkit-scrollbar-thumb {\n  border-radius: 4px;\n  background: rgb(0 0 0 / 20%);\n}\n\nhtml,\nbody {\n  height: 100%;\n}\n\n/* overrides chakra default value */\nbody {\n  background-repeat: no-repeat !important;\n  background-size: cover !important;\n  background-position: center !important;\n  font-variant-numeric: lining-nums;\n  font-size: 12px;\n  /* stylelint-disable font-family-no-duplicate-names */\n  font-family: -apple-system, BlinkMacSystemFont, \"PingFang SC\", \"Segoe UI\", Helvetica, Arial,\n    \"PingFang SC\", \"Noto Sans SC\", sans-serif !important;\n}\n\n[data-theme=\"light\"] body {\n  background-color: #eef0f2 !important;\n\n  /* background-image: url(\"/bg.png\") !important; */\n}\n\n[data-theme=\"dark\"] ::-webkit-scrollbar-thumb {\n  /* 滚动条滑块 */\n  background: rgb(21 22 26 / 40%);\n}\n\na {\n  color: inherit;\n  text-decoration: none;\n}\n\n* {\n  box-sizing: border-box;\n}\n\n@media (prefers-color-scheme: dark) {\n  html {\n    color-scheme: dark;\n  }\n\n  body {\n    color: white;\n    background: black;\n  }\n}\n\n@font-face {\n  font-family: \"Noto Sans SC\";\n  font-display: swap;\n  font-weight: 400;\n  src: url(\"//lib.baomitu.com/fonts/noto-sans-sc/noto-sans-sc-regular.eot\"),\n    /* IE9 Compat Modes */\n    url(\"//lib.baomitu.com/fonts/noto-sans-sc/noto-sans-sc-regular.eot?#iefix\") format(\"embedded-opentype\"),\n    /* IE6-IE8 */\n    url(\"//lib.baomitu.com/fonts/noto-sans-sc/noto-sans-sc-regular.woff2\") format(\"woff2\"),\n    /* Super Modern Browsers */\n    url(\"//lib.baomitu.com/fonts/noto-sans-sc/noto-sans-sc-regular.woff\") format(\"woff\"),\n    /* Modern Browsers */\n    url(\"//lib.baomitu.com/fonts/noto-sans-sc/noto-sans-sc-regular.ttf\") format(\"truetype\"),\n    /* Safari, Android, iOS */\n    url(\"//lib.baomitu.com/fonts/noto-sans-sc/noto-sans-sc-regular.svg#NotoSans SC\") format(\"svg\");\n\n  /* Legacy iOS */\n}\n\n@font-face {\n  font-family: \"Noto Sans SC\";\n  font-weight: 500 600;\n  src: url(\"/fonts/NotoSansSC-Medium.ttf\");\n}"
  },
  {
    "path": "web/src/App.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport { ChakraProvider } from \"@chakra-ui/react\";\nimport { css, Global } from \"@emotion/react\";\nimport { loader } from \"@monaco-editor/react\";\nimport * as Sentry from \"@sentry/react\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { ClickToComponent } from \"click-to-react-component\";\n\nimport \"@/utils/i18n\";\n\nimport UpgradePrompt from \"./components/UpgradePrompt\";\nimport useAuthStore from \"./pages/auth/store\";\nimport useSiteSettingStore from \"./pages/siteSetting\";\nimport theme from \"./chakraTheme\";\nimport darkTheme from \"./chakraThemeDark\";\nimport { CHAKRA_UI_COLOR_MODE_KEY } from \"./constants\";\nimport RouteElement from \"./routes\";\n\nimport \"simplebar-react/dist/simplebar.min.css\";\nimport \"./App.css\";\nconst GlobalStyles = css`\n  .js-focus-visible :focus:not([data-focus-visible-added]) {\n    outline: none;\n    box-shadow: none;\n  }\n`;\n\n// Create a client\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false,\n      retry: false,\n      cacheTime: 0,\n    },\n  },\n});\n\nloader.config({\n  paths: { vs: \"/js/monaco-editor.0.43.0\" },\n});\n\nconst useDocumentTitle = (titleKey: string, defaultTitle: string) => {\n  const { t } = useTranslation();\n\n  useEffect(() => {\n    document.title = t(titleKey, defaultTitle);\n  }, [t, titleKey, defaultTitle]);\n};\n\nfunction APP() {\n  const { i18n } = useTranslation();\n\n  useDocumentTitle(\"app.title\", \"云开发\");\n\n  const getSiteSettings = useSiteSettingStore((state) => state.getSiteSettings);\n  const { initProviders } = useAuthStore();\n\n  const [colorMode, setColorMode] = useState(localStorage.getItem(CHAKRA_UI_COLOR_MODE_KEY));\n  useEffect(() => {\n    function onColorModeChange() {\n      const colorMode = localStorage.getItem(CHAKRA_UI_COLOR_MODE_KEY);\n      setColorMode(colorMode);\n    }\n    window.addEventListener(\"ColorModeChange\", onColorModeChange);\n    return () => {\n      window.removeEventListener(\"ColorModeChange\", onColorModeChange);\n    };\n  });\n\n  useEffect(() => {\n    document.documentElement.lang = i18n.language;\n    getSiteSettings();\n    initProviders();\n  }, [getSiteSettings, i18n.language, initProviders]);\n\n  return (\n    <Sentry.ErrorBoundary>\n      <QueryClientProvider client={queryClient}>\n        {process.env.NODE_ENV === \"development\" ? <ClickToComponent /> : null}\n        <ChakraProvider theme={colorMode === \"light\" ? theme : darkTheme}>\n          <Global styles={GlobalStyles} />\n          <UpgradePrompt />\n          <BrowserRouter>\n            <RouteElement />\n          </BrowserRouter>\n        </ChakraProvider>\n      </QueryClientProvider>\n    </Sentry.ErrorBoundary>\n  );\n}\n\nexport default APP;\n"
  },
  {
    "path": "web/src/apis/dependence.ts",
    "content": "import axios from \"axios\";\ninterface KeyWord {\n  q: String;\n}\n\nexport async function DependencySearch(params: KeyWord | any): Promise<any> {\n  if (params.q === \"\") {\n    return Promise.resolve([]);\n  } else {\n    return axios.get(`https://registry.npmjs.org/-/v1/search`, {\n      params: {\n        text: params.q,\n        size: 4,\n      },\n    });\n  }\n}\n\nexport async function GetDependencyVersions(params: KeyWord | any): Promise<any> {\n  if (params.q === \"\") {\n    return Promise.resolve([]);\n  } else {\n    return axios.get(`https://registry.npmjs.org/${params.q}`);\n  }\n}\n"
  },
  {
    "path": "web/src/apis/typing.d.ts",
    "content": "export type TApplicationDetail = {\n  _id: string;\n  name: string;\n  appid: string;\n  regionId: string;\n  runtimeId: string;\n  tags: any[];\n  state: string;\n  phase: string;\n  createdAt: string;\n  updatedAt: string;\n  lockedAt: string;\n  createdBy: string;\n  bundle: TCurrentBundle;\n  runtime: TRuntime;\n  configuration: TConfiguration;\n  domain: TDomain;\n  storage: TStorage;\n  port: number;\n  develop_token: string;\n  tls: boolean;\n  function_debug_token: string;\n  host?: string;\n  origin?: string;\n};\n\nexport type TCurrentBundle = {\n  _id: string;\n  appid: string;\n  bundleId: string;\n  name: string;\n  displayName: string;\n  createdAt: string;\n  updatedAt: string;\n  resource: TResource;\n};\n\nexport type TBundle = {\n  _id: string;\n  regionId: string;\n  message?: string;\n  name: string;\n  displayName: string;\n  spec: TSpec;\n  enableFreeTier: boolean;\n  limitCountOfFreeTierPerUser: number;\n  createdAt: string;\n  updatedAt: string;\n};\n\nexport type TInstantMonitorData = {\n  cpuUsage: TDatabaseUsage;\n  memoryUsage: TDatabaseUsage;\n  databaseUsage: TDatabaseUsage;\n  storageUsage: TDatabaseUsage;\n};\n\nexport type TCpuUsageData = {\n  metric: { pod: string };\n  values: Array<[number, string]>;\n}[];\n\nexport type TDatabaseUsage = {\n  metric: { pod: string };\n  value: [number, string];\n}[];\n\nexport type TSpec = {\n  cpu: Cpu;\n  memory: Memory;\n  databaseCapacity: DatabaseCapacity;\n  storageCapacity: StorageCapacity;\n  networkTraffic: NetworkTraffic;\n  dedicatedDatabaseCPU: Cpu;\n  dedicatedDatabaseMemory: Memory;\n  dedicatedDatabaseCapacity: DatabaseCapacity;\n  dedicatedDatabaseReplicas: Replicas;\n};\n\nexport type Cpu = {\n  value: number;\n};\n\nexport type Memory = {\n  value: number;\n};\n\nexport type DatabaseCapacity = {\n  value: number;\n};\n\nexport type StorageCapacity = {\n  value: number;\n};\n\nexport type NetworkTraffic = {\n  value: number;\n};\n\nexport type Replicas = {\n  value: number;\n};\n\nexport type TResource = {\n  limitCPU: number;\n  limitMemory: number;\n  databaseCapacity: number;\n  storageCapacity: number;\n  networkTrafficOutbound: number;\n  limitCountOfCloudFunction: number;\n  limitCountOfBucket: number;\n  limitCountOfDatabasePolicy: number;\n  limitCountOfTrigger: number;\n  limitCountOfWebsiteHosting: number;\n  reservedTimeAfterExpired: number;\n  limitDatabaseTPS: number;\n  limitStorageTPS: number;\n};\n\nexport type TSubscriptionOption = {\n  name: string;\n  displayName: string;\n  duration: number;\n  price: number;\n  specialPrice: number;\n};\n\nexport type TRuntime = {\n  _id: string;\n  name: string;\n  type: string;\n  state: string;\n  version: string;\n  latest: boolean;\n  image: TImage;\n};\n\nexport type TImage = {\n  main: string;\n  init: string;\n  sidecar: any;\n};\n\nexport type TConfiguration = {\n  _id: string;\n  appid: string;\n  dependencies: any[];\n  createdAt: string;\n  updatedAt: string;\n  environments: TEnvironment[];\n};\n\nexport type TEnvironment = {\n  name: string;\n  value: string;\n};\n\nexport type TDomain = {\n  _id: string;\n  appid: string;\n  domain: string;\n  customDomain: string;\n  state: string;\n  phase: string;\n  lockedAt: string;\n  createdAt: string;\n  updatedAt: string;\n};\n\nexport type TStorage = {\n  credentials: TCredentials;\n  _id: string;\n  appid: string;\n  accessKey: string;\n  secretKey: string;\n  state: string;\n  phase: string;\n  lockedAt: string;\n  createdAt: string;\n  updatedAt: string;\n};\n\nexport type TCredentials = {\n  endpoint: string;\n  accessKeyId: string;\n  secretAccessKey: string;\n  sessionToken: string;\n  expiration: string;\n};\n\nexport type TRegion = {\n  _id: string;\n  name: string;\n  displayName: string;\n  state: string;\n  bundles: TBundle[];\n  dedicatedDatabase: boolean;\n};\n\nexport type TBucket = {\n  _id: string;\n  appid: string;\n  name: string;\n  shortName: string;\n  policy: string;\n  state: string;\n  phase: string;\n  lockedAt: string;\n  createdAt: string;\n  updatedAt: string;\n  domain: TDomain;\n  websiteHosting: TWebsiteHosting;\n};\n\nexport type TWebsiteHosting = {\n  _id: string;\n  appid: string;\n  bucketName: string;\n  domain: string;\n  isCustom: boolean;\n  state: string;\n  phase: string;\n  createdAt: string;\n  updatedAt: string;\n  lockedAt: string;\n};\n\nexport type TSetting = {\n  _id: string;\n  key: string;\n  value: string;\n  desc: string;\n  metadata: any;\n};\n\nexport type Spec = {\n  policy: string;\n  storage: string;\n};\n\nexport type Status = {\n  capacity: Capacity;\n  conditions: Condition[];\n  policy: string;\n  user: string;\n  versioning: boolean;\n};\n\nexport type Capacity = {\n  maxStorage: string;\n  objectCount: number;\n  storage: string;\n};\n\nexport type Condition = {\n  lastTransitionTime: string;\n  message: string;\n  reason: string;\n  status: string;\n  type: string;\n};\n\nexport type TDB = {\n  name: string;\n  type: string;\n  options: Options;\n  info: Info;\n  idIndex: IdIndex;\n};\n\nexport type Options = {};\n\nexport type Info = {\n  readOnly: boolean;\n  uuid: string;\n};\n\nexport type IdIndex = {\n  v: number;\n  key: Key;\n  name: string;\n};\n\nexport type Key = {\n  _id: number;\n};\n\nexport type TFunction = {\n  _id: string;\n  appid: string;\n  name: string;\n  source: Source;\n  desc: string;\n  tags: any[];\n  websocket: boolean;\n  methods: TMethod[];\n  createdAt: string;\n  updatedAt: string;\n  createdBy: string;\n  params: any;\n};\n\nexport type TFunctionNode = {\n  _id: string;\n  name: string;\n  level?: number;\n  isExpanded?: boolean;\n  desc?: string;\n  children: TreeNode[];\n};\n\nexport type TFunctionList = {\n  list: TFunction[];\n  total: number;\n  page: number;\n  pageSize: number;\n};\n\nexport type TMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"HEAD\" | \"OPTIONS\" | \"PATCH\";\n\nexport type Source = {\n  code: string;\n  compiled: string;\n  uri: any;\n  version: number;\n  hash: any;\n  lang: any;\n};\n\nexport type TFunctionTemplate = {\n  _id: string;\n  name: string;\n  description: string;\n  private: boolean;\n  createdAt: string;\n  updatedAt: string;\n  star: number;\n  items: { name: string; source: { code: string } }[];\n  dependencies: string[];\n  environments: { name: string; value: string }[];\n  uid: string;\n  user: { username: string };\n  author: string;\n  stared: boolean;\n  isRecommended: boolean;\n};\n\nexport type TemplateList = {\n  list: TFunctionTemplate[];\n  total: number;\n  page: number;\n  pageSize: number;\n};\n\nexport type TLogItem = {\n  _id: string;\n  request_id: string;\n  func: string;\n  data: string;\n  created_at: string;\n};\n\nexport type TApplicationItem = {\n  _id: string;\n  appid: string;\n  name: string;\n  state: string;\n  phase: string;\n  tags: Array<any>;\n  createdBy: string;\n  lockedAt: string;\n  regionId: string;\n  runtimeId: string;\n  billingLockedAt: string;\n  createdAt: string;\n  updatedAt: string;\n  bundle: {\n    _id: string;\n    appid: string;\n    resource: {\n      limitCPU: number;\n      limitMemory: number;\n      databaseCapacity: number;\n      storageCapacity: number;\n      limitCountOfCloudFunction: number;\n      limitCountOfBucket: number;\n      limitCountOfDatabasePolicy: number;\n      limitCountOfTrigger: number;\n      limitCountOfWebsiteHosting: number;\n      limitDatabaseTPS: number;\n      limitStorageTPS: number;\n      reservedTimeAfterExpired: number;\n      dedicatedDatabase: {\n        limitCPU: number;\n        limitMemory: number;\n        capacity: number;\n        replicas: number;\n      };\n    };\n    autoscaling: {\n      enable: boolean;\n      minReplicas: number;\n      maxReplicas: number;\n      targetCPUUtilizationPercentage: number | null;\n      targetMemoryUtilizationPercentage: number | null;\n    };\n    createdAt: string;\n    updatedAt: string;\n  };\n  runtime: {\n    _id: string;\n    name: string;\n    type: string;\n    state: string;\n    version: string;\n    latest: boolean;\n    image: {\n      main: string;\n      init: string;\n    };\n  };\n};\n\nexport type TSmsCode = \"Signin\" | \"Signup\" | \"ResetPassword\" | \"Bind\" | \"Unbind\" | \"ChangePhone\";\n"
  },
  {
    "path": "web/src/apis/v1/accounts.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Get account info\n*/\nexport async function AccountControllerFindOne(\n  params: Paths.AccountControllerFindOne.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.Account\n}> {\n  // /v1/accounts\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/accounts`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get charge order total amount\n*/\nexport async function AccountControllerGetChargeOrderAmount(\n  params: Paths.AccountControllerGetChargeOrderAmount.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.Number\n}> {\n  // /v1/accounts/charge-order/amount\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/accounts/charge-order/amount`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get charge order\n*/\nexport async function AccountControllerGetChargeOrder(\n  params: Paths.AccountControllerGetChargeOrder.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.AccountChargeOrder\n}> {\n  // /v1/accounts/charge-order/{id}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/accounts/charge-order/${_params.id}`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* get all charge order\n*/\nexport async function AccountControllerGetChargeRecords(\n  params: Paths.AccountControllerGetChargeRecords.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.AccountControllerGetChargeRecords.Responses\n}> {\n  // /v1/accounts/charge-orders\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/accounts/charge-orders`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Create charge order\n*/\nexport async function AccountControllerCharge(\n  params: Definitions.CreateChargeOrderDto,\n): Promise<{\n    error: string;\n    data: Definitions.CreateChargeOrderOutDto\n}> {\n  // /v1/accounts/charge-order\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/accounts/charge-order`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get charge reward list\n*/\nexport async function AccountControllerGetChargeRewardList(\n  params: Paths.AccountControllerGetChargeRewardList.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.AccountControllerGetChargeRewardList.Responses\n}> {\n  // /v1/accounts/charge-reward\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/accounts/charge-reward`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* \n*/\nexport async function AccountControllerWechatNotify(\n  params: Paths.AccountControllerWechatNotify.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.AccountControllerWechatNotify.Responses\n}> {\n  // /v1/accounts/payment/wechat-notify\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/accounts/payment/wechat-notify`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Use a gift code\n*/\nexport async function AccountControllerGiftCode(\n  params: Definitions.UseGiftCodeDto,\n): Promise<{\n    error: string;\n    data: Definitions.Account\n}> {\n  // /v1/accounts/gift-code\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/accounts/gift-code`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* get a invite code\n*/\nexport async function AccountControllerInviteCode(\n  params: Paths.AccountControllerInviteCode.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.InviteCode\n}> {\n  // /v1/accounts/invite-code\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/accounts/invite-code`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* get invite code profit\n*/\nexport async function AccountControllerInviteCodeProfit(\n  params: Paths.AccountControllerInviteCodeProfit.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.AccountControllerInviteCodeProfit.Responses\n}> {\n  // /v1/accounts/invite-profit\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/accounts/invite-profit`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/api-auto.d.ts",
    "content": "declare namespace Definitions {\n  export type CreateFunctionDto = {\n    name?: string /* Function name is unique in the application */;\n    description?: string;\n    methods?: string[];\n    code?: string /* The source code of the function */;\n    tags?: string[];\n  };\n\n  export type CloudFunction = {\n    _id?: string;\n    appid?: string;\n    name?: string;\n    source?: Definitions.CloudFunctionSource;\n    desc?: string;\n    tags?: string[];\n    methods?: string[];\n    params?: {};\n    createdAt?: string;\n    updatedAt?: string;\n    createdBy?: string;\n  };\n\n  export type UpdateFunctionDto = {\n    newName?: string /* Function name is unique in the application */;\n    description?: string;\n    methods?: string[];\n    code?: string /* The source code of the function */;\n    tags?: string[];\n    changelog?: string;\n  };\n\n  export type UpdateFunctionDebugDto = {\n    params?: {};\n  };\n\n  export type CompileFunctionDto = {\n    code?: string /* The source code of the function */;\n  };\n\n  export type CreateApplicationDto = {\n    cpu?: number;\n    memory?: number;\n    databaseCapacity?: number;\n    storageCapacity?: number;\n    autoscaling?: Definitions.CreateAutoscalingDto;\n    dedicatedDatabase?: Definitions.CreateDedicatedDatabaseDto;\n    name?: string;\n    state?: string;\n    regionId?: string;\n    runtimeId?: string;\n  };\n\n  export type ApplicationWithRelations = {\n    _id?: string;\n    name?: string;\n    appid?: string;\n    regionId?: string;\n    runtimeId?: string;\n    tags?: string[];\n    state?: string;\n    phase?: string;\n    createdAt?: string;\n    updatedAt?: string;\n    createdBy?: string;\n    region?: Definitions.Region;\n    bundle?: Definitions.ApplicationBundle;\n    runtime?: Definitions.Runtime;\n    configuration?: Definitions.ApplicationConfiguration;\n    domain?: Definitions.RuntimeDomain;\n  };\n\n  export type Application = {\n    _id?: string;\n    name?: string;\n    appid?: string;\n    regionId?: string;\n    runtimeId?: string;\n    tags?: string[];\n    state?: string;\n    phase?: string;\n    createdAt?: string;\n    updatedAt?: string;\n    createdBy?: string;\n  };\n\n  export type UpdateApplicationNameDto = {\n    name?: string;\n  };\n\n  export type UpdateApplicationStateDto = {\n    state?: string;\n    onlyRuntimeFlag?: boolean;\n  };\n\n  export type UpdateApplicationBundleDto = {\n    cpu?: number;\n    memory?: number;\n    databaseCapacity?: number;\n    storageCapacity?: number;\n    autoscaling?: Definitions.CreateAutoscalingDto;\n    dedicatedDatabase?: Definitions.CreateDedicatedDatabaseDto;\n  };\n\n  export type ApplicationBundle = {\n    _id?: string;\n    appid?: string;\n    resource?: Definitions.ApplicationBundleResource;\n    autoscaling?: Definitions.Autoscaling;\n    isTrialTier?: boolean;\n    createdAt?: string;\n    updatedAt?: string;\n  };\n\n  export type BindCustomDomainDto = {\n    domain?: string;\n  };\n\n  export type RuntimeDomain = {\n    _id?: string;\n    appid?: string;\n    domain?: string;\n    customDomain?: string;\n    state?: string;\n    phase?: string;\n    createdAt?: string;\n    updatedAt?: string;\n  };\n\n  export type CreateEnvironmentDto = {\n    name?: string;\n    value?: string;\n  };\n\n  export type PodNameListDto = {\n    appid?: string;\n    podNameList?: string[] /* List of pod identifiers */;\n  };\n\n  export type ContainerNameListDto = {\n    podName?: string;\n    containerNameList?: string[] /* List of container identifiers */;\n  };\n\n  export type CreateBucketDto = {\n    shortName?: string /* The short name of the bucket which not contain the appid */;\n    policy?: string;\n  };\n\n  export type UpdateBucketDto = {\n    policy?: string;\n  };\n\n  export type CreateCollectionDto = {\n    name?: string;\n  };\n\n  export type Collection = {\n    name?: string;\n    type?: string;\n    options?: {};\n    info?: {};\n    idIndex?: {};\n  };\n\n  export type UpdateCollectionDto = {\n    validatorSchema?: {};\n    validationLevel?: string;\n  };\n\n  export type CreatePolicyDto = {\n    name?: string;\n  };\n\n  export type DatabasePolicyWithRules = {\n    _id?: string;\n    appid?: string;\n    name?: string;\n    injector?: string;\n    createdAt?: string;\n    updatedAt?: string;\n    rules?: Definitions.DatabasePolicyRule[];\n  };\n\n  export type UpdatePolicyDto = {\n    injector?: string;\n  };\n\n  export type DatabasePolicy = {\n    _id?: string;\n    appid?: string;\n    name?: string;\n    injector?: string;\n    createdAt?: string;\n    updatedAt?: string;\n  };\n\n  export type CreatePolicyRuleDto = {\n    collectionName?: string;\n    value?: string;\n  };\n\n  export type DatabasePolicyRule = {\n    _id?: string;\n    appid?: string;\n    policyName?: string;\n    collectionName?: string;\n    value?: {};\n    createdAt?: string;\n    updatedAt?: string;\n  };\n\n  export type UpdatePolicyRuleDto = {\n    value?: string;\n  };\n\n  export type Account = {\n    _id?: string;\n    owedAt?: string /* The timestamp when the account became owed */;\n    balance?: number;\n    state?: string;\n    createdAt?: string;\n    updatedAt?: string;\n    createdBy?: string;\n  };\n\n  export type Number = {};\n\n  export type AccountChargeOrder = {\n    _id?: string;\n    accountId?: string;\n    amount?: number;\n    currency?: string;\n    phase?: string;\n    channel?: string;\n    result?: {};\n    message?: string;\n    createdAt?: string;\n    updatedAt?: string;\n    createdBy?: string;\n  };\n\n  export type CreateChargeOrderDto = {\n    amount?: number;\n    channel?: string;\n    currency?: string;\n  };\n\n  export type CreateChargeOrderOutDto = {\n    order?: Definitions.AccountChargeOrder;\n    result?: Definitions.WeChatPaymentCreateOrderResult;\n  };\n\n  export type UseGiftCodeDto = {\n    code?: string /* gift code */;\n  };\n\n  export type InviteCode = {\n    _id?: string;\n    uid?: string;\n    code?: string;\n    state?: string;\n    name?: string;\n    description?: string;\n    createdAt?: string;\n    updatedAt?: string;\n  };\n\n  export type CreateWebsiteDto = {\n    bucketName?: string;\n    state?: string;\n  };\n\n  export type PasswdSignupDto = {\n    username?: string /* username, 3-64 characters */;\n    password?: string /* password, 8-64 characters */;\n    phone?: string /* phone */;\n    email?: string /* email */;\n    code?: string /* verify code */;\n    inviteCode?: string /* invite code */;\n  };\n\n  export type PasswdSigninDto = {\n    username?: string /* username */;\n    password?: string /* password, 8-64 characters */;\n  };\n\n  export type PasswdResetDto = {\n    password?: string /* new password, 8-64 characters */;\n    phone?: string /* phone */;\n    email?: string /* email */;\n    code?: string /* verify code */;\n  };\n\n  export type PasswdCheckDto = {\n    username?: string /* username | phone | email */;\n  };\n\n  export type SendPhoneCodeDto = {\n    phone?: string /* phone */;\n    type?: string /* verify code type */;\n  };\n\n  export type PhoneSigninDto = {\n    phone?: string /* phone */;\n    code?: string;\n    username?: string /* username */;\n    password?: string /* password, 8-64 characters */;\n    inviteCode?: string /* invite code */;\n  };\n\n  export type Pat2TokenDto = {\n    pat?: string /* PAT */;\n  };\n\n  export type SendEmailCodeDto = {\n    email?: string;\n    type?: string /* verify code type */;\n  };\n\n  export type EmailSigninDto = {\n    email?: string /* email */;\n    code?: string;\n    username?: string /* username */;\n    password?: string /* password, 8-64 characters */;\n    inviteCode?: string /* invite code */;\n  };\n\n  export type GithubSigninDto = {\n    code?: string;\n  };\n\n  export type GithubBind = {\n    token?: string /* temporary token signed for github bindings */;\n    isRegister?: boolean /* Is a newly registered use */;\n  };\n\n  export type UserWithProfile = {\n    _id?: string;\n    username?: string;\n    email?: string;\n    phone?: string;\n    github?: number;\n    createdAt?: string;\n    updatedAt?: string;\n    profile?: Definitions.UserProfile;\n  };\n\n  export type CreatePATDto = {\n    name?: string;\n    expiresIn?: number;\n  };\n\n  export type BindPhoneDto = {\n    oldPhoneNumber?: string /* old phone number */;\n    newPhoneNumber?: string /* new phone number */;\n    oldSmsCode?: string /* sms verify code for old phone number */;\n    newSmsCode?: string /* sms verify code for new phone number */;\n  };\n\n  export type BindEmailDto = {\n    email?: string;\n    code?: string /* verify code */;\n  };\n\n  export type BindUsernameDto = {\n    username?: string /* username */;\n  };\n\n  export type DeleteDependencyDto = {\n    name?: string;\n  };\n\n  export type CreateTriggerDto = {\n    desc?: string;\n    cron?: string;\n    target?: string;\n  };\n\n  export type CalculatePriceDto = {\n    cpu?: number;\n    memory?: number;\n    databaseCapacity?: number;\n    storageCapacity?: number;\n    autoscaling?: Definitions.CreateAutoscalingDto;\n    dedicatedDatabase?: Definitions.CreateDedicatedDatabaseDto;\n    networkTraffic?: number;\n    regionId?: string;\n  };\n\n  export type CalculatePriceResultDto = {\n    cpu?: number;\n    memory?: number;\n    networkTraffic?: number;\n    storageCapacity?: number;\n    databaseCapacity?: number;\n    total?: number;\n  };\n\n  export type CreateFunctionTemplateDto = {\n    name?: string /* function template name */;\n    dependencies?: Definitions.CreateDependencyDto[] /* Dependencies */;\n    environments?: Definitions.CreateEnvironmentDto[] /* environments */;\n    private?: boolean /* Private flag */;\n    description?: string /* function template description */;\n    items?: Definitions.FunctionTemplateItemDto[] /* items of the function template */;\n  };\n\n  export type UpdateFunctionTemplateDto = {\n    functionTemplateId?: any /* Function template id */;\n    name?: string /* Template name */;\n    dependencies?: Definitions.CreateDependencyDto[] /* Dependencies */;\n    environments?: Definitions.CreateEnvironmentDto[] /* Environments */;\n    private?: boolean /* Private flag */;\n    description?: string /* function template description */;\n    items?: Definitions.FunctionTemplateItemDto[] /* items of the function template */;\n  };\n\n  export type DeleteRecycleBinItemsDto = {\n    ids?: string[] /* The list of item ids */;\n  };\n\n  export type RestoreRecycleBinItemsDto = {\n    ids?: string[] /* The list of item ids */;\n  };\n\n  export type Group = {\n    _id?: string;\n    name?: string;\n    appid?: string;\n    createdBy?: string;\n    createdAt?: string;\n    updatedAt?: string;\n  };\n\n  export type GetGroupInviteCodeDetailDto = {\n    group?: Definitions.Group;\n    invitedBy?: Definitions.User;\n  };\n\n  export type CreateGroupDto = {\n    name?: string;\n  };\n\n  export type UpdateGroupDto = {\n    name?: string;\n  };\n\n  export type GenerateGroupInviteCodeDto = {\n    role?: string;\n  };\n\n  export type GroupInviteCode = {\n    _id?: string;\n    usedBy?: string;\n    code?: string;\n    role?: string;\n    groupId?: string;\n    createdBy?: string;\n    createdAt?: string;\n    updatedAt?: string;\n  };\n\n  export type GroupMember = {\n    _id?: string;\n    uid?: string;\n    groupId?: string;\n    role?: string;\n    createdAt?: string;\n    updatedAt?: string;\n  };\n\n  export type UpdateGroupMemberRoleDto = {\n    role?: string;\n  };\n\n  export type CloudFunctionSource = {\n    code?: string;\n    compiled?: string;\n    uri?: string;\n    version?: number;\n    hash?: string;\n    lang?: string;\n  };\n\n  export type CreateAutoscalingDto = {\n    enable?: boolean;\n    minReplicas?: number;\n    maxReplicas?: number;\n    targetCPUUtilizationPercentage?: number;\n    targetMemoryUtilizationPercentage?: number;\n  };\n\n  export type CreateDedicatedDatabaseDto = {\n    cpu?: number;\n    memory?: number;\n    capacity?: number;\n    replicas?: number;\n  };\n\n  export type Region = {\n    _id?: string;\n    name?: string;\n    displayName?: string;\n    state?: string;\n    createdAt?: string;\n    updatedAt?: string;\n  };\n\n  export type ApplicationBundleResource = {\n    limitCPU?: number;\n    limitMemory?: number;\n    databaseCapacity?: number;\n    storageCapacity?: number;\n    limitCountOfCloudFunction?: number;\n    limitCountOfBucket?: number;\n    limitCountOfDatabasePolicy?: number;\n    limitCountOfTrigger?: number;\n    limitCountOfWebsiteHosting?: number;\n    reservedTimeAfterExpired?: number;\n    dedicatedDatabase?: Definitions.DedicatedDatabaseSpec;\n  };\n\n  export type DedicatedDatabaseSpec = {\n    limitCPU?: number;\n    limitMemory?: number;\n    capacity?: number;\n    replicas?: number;\n  };\n\n  export type Autoscaling = {\n    enable?: boolean;\n    minReplicas?: number;\n    maxReplicas?: number;\n    targetCPUUtilizationPercentage?: number;\n    targetMemoryUtilizationPercentage?: number;\n  };\n\n  export type Runtime = {\n    _id?: string;\n    name?: string;\n    type?: string;\n    image?: Definitions.RuntimeImageGroup;\n    state?: string;\n    version?: string;\n    latest?: boolean;\n  };\n\n  export type RuntimeImageGroup = {\n    main?: string;\n    init?: string;\n    sidecar?: string;\n  };\n\n  export type ApplicationConfiguration = {\n    _id?: string;\n    appid?: string;\n    environments?: Definitions.EnvironmentVariable[];\n    dependencies?: string[];\n    createdAt?: string;\n    updatedAt?: string;\n  };\n\n  export type EnvironmentVariable = {\n    name?: string;\n    value?: string;\n  };\n\n  export type WeChatPaymentCreateOrderResult = {\n    code_url?: string;\n  };\n\n  export type UserProfile = {\n    _id?: string;\n    uid?: string;\n    openData?: {};\n    avatar?: string;\n    name?: string;\n    idVerified?: Definitions.IdVerified;\n    idCard?: string;\n    createdAt?: string;\n    updatedAt?: string;\n  };\n\n  export type IdVerified = {\n    isVerified?: boolean;\n    idVerifyFailedTimes?: number;\n  };\n\n  export type CreateDependencyDto = {\n    name?: string;\n    spec?: string;\n  };\n\n  export type FunctionTemplateItemDto = {\n    name?: string /* FunctionTemplate item name */;\n    description?: string;\n    methods?: string[];\n    code?: string /* The source code of the function */;\n  };\n\n  export type User = {\n    _id?: string;\n    username?: string;\n    email?: string;\n    phone?: string;\n    github?: number;\n    createdAt?: string;\n    updatedAt?: string;\n  };\n}\n\ndeclare namespace Paths {\n  namespace AppControllerGetRuntimes {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionControllerCreate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreateFunctionDto;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionControllerFindAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionControllerFindOne {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionControllerUpdate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UpdateFunctionDto;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionControllerRemove {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionControllerUpdateDebug {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UpdateFunctionDebugDto;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionControllerCompile {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CompileFunctionDto;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionControllerGetHistory {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace ApplicationControllerCreate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreateApplicationDto;\n\n    export type Responses = any;\n  }\n\n  namespace ApplicationControllerFindAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace ApplicationControllerFindOne {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace ApplicationControllerDelete {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace ApplicationControllerUpdateName {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UpdateApplicationNameDto;\n\n    export type Responses = any;\n  }\n\n  namespace ApplicationControllerUpdateState {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UpdateApplicationStateDto;\n\n    export type Responses = any;\n  }\n\n  namespace ApplicationControllerUpdateBundle {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UpdateApplicationBundleDto;\n\n    export type Responses = any;\n  }\n\n  namespace ApplicationControllerBindDomain {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.BindCustomDomainDto;\n\n    export type Responses = any;\n  }\n\n  namespace ApplicationControllerRemove {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace ApplicationControllerCheckResolved {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.BindCustomDomainDto;\n\n    export type Responses = any;\n  }\n\n  namespace EnvironmentVariableControllerUpdateAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace EnvironmentVariableControllerAdd {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreateEnvironmentDto;\n\n    export type Responses = any;\n  }\n\n  namespace EnvironmentVariableControllerGet {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace EnvironmentVariableControllerDelete {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace PodControllerGetPodNameList {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace PodControllerGetContainerNameList {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace BucketControllerCreate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreateBucketDto;\n\n    export type Responses = any;\n  }\n\n  namespace BucketControllerFindAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace BucketControllerFindOne {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace BucketControllerUpdate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UpdateBucketDto;\n\n    export type Responses = any;\n  }\n\n  namespace BucketControllerRemove {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace CollectionControllerCreate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreateCollectionDto;\n\n    export type Responses = any;\n  }\n\n  namespace CollectionControllerFindAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace CollectionControllerFindOne {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace CollectionControllerUpdate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UpdateCollectionDto;\n\n    export type Responses = any;\n  }\n\n  namespace CollectionControllerRemove {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace PolicyControllerCreate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreatePolicyDto;\n\n    export type Responses = any;\n  }\n\n  namespace PolicyControllerFindAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace PolicyControllerUpdate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UpdatePolicyDto;\n\n    export type Responses = any;\n  }\n\n  namespace PolicyControllerRemove {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace DatabaseControllerProxy {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace DatabaseControllerExportDatabase {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace DatabaseControllerImportDatabase {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace PolicyRuleControllerCreate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreatePolicyRuleDto;\n\n    export type Responses = any;\n  }\n\n  namespace PolicyRuleControllerFindAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace PolicyRuleControllerUpdate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UpdatePolicyRuleDto;\n\n    export type Responses = any;\n  }\n\n  namespace PolicyRuleControllerRemove {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace DedicatedDatabaseMonitorControllerGetResource {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace DedicatedDatabaseMonitorControllerGetConnection {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace DedicatedDatabaseMonitorControllerGetPerformance {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace AccountControllerFindOne {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace AccountControllerGetChargeOrderAmount {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace AccountControllerGetChargeOrder {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace AccountControllerGetChargeRecords {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace AccountControllerCharge {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreateChargeOrderDto;\n\n    export type Responses = any;\n  }\n\n  namespace AccountControllerGetChargeRewardList {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace AccountControllerWechatNotify {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace AccountControllerGiftCode {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UseGiftCodeDto;\n\n    export type Responses = any;\n  }\n\n  namespace AccountControllerInviteCode {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace AccountControllerInviteCodeProfit {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace WebsiteControllerCreate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreateWebsiteDto;\n\n    export type Responses = any;\n  }\n\n  namespace WebsiteControllerFindAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace WebsiteControllerFindOne {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace WebsiteControllerBindDomain {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.BindCustomDomainDto;\n\n    export type Responses = any;\n  }\n\n  namespace WebsiteControllerRemove {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace WebsiteControllerCheckResolved {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.BindCustomDomainDto;\n\n    export type Responses = any;\n  }\n\n  namespace UserPasswordControllerSignup {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.PasswdSignupDto;\n\n    export type Responses = any;\n  }\n\n  namespace UserPasswordControllerSignin {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.PasswdSigninDto;\n\n    export type Responses = any;\n  }\n\n  namespace UserPasswordControllerReset {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.PasswdResetDto;\n\n    export type Responses = any;\n  }\n\n  namespace UserPasswordControllerCheck {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.PasswdCheckDto;\n\n    export type Responses = any;\n  }\n\n  namespace PhoneControllerSendCode {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.SendPhoneCodeDto;\n\n    export type Responses = any;\n  }\n\n  namespace PhoneControllerSignin {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.PhoneSigninDto;\n\n    export type Responses = any;\n  }\n\n  namespace AuthenticationControllerGetProviders {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace AuthenticationControllerPat2token {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.Pat2TokenDto;\n\n    export type Responses = any;\n  }\n\n  namespace EmailControllerSendCode {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.SendEmailCodeDto;\n\n    export type Responses = any;\n  }\n\n  namespace EmailControllerSignin {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.EmailSigninDto;\n\n    export type Responses = any;\n  }\n\n  namespace GithubAuthControllerJumpLogin {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace GithubAuthControllerSignin {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.GithubSigninDto;\n\n    export type Responses = any;\n  }\n\n  namespace GithubAuthControllerBind {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.GithubBind;\n\n    export type Responses = any;\n  }\n\n  namespace GithubAuthControllerUnbind {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace PatControllerCreate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreatePATDto;\n\n    export type Responses = any;\n  }\n\n  namespace PatControllerFindAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace PatControllerRemove {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace UserControllerUpdateAvatar {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace UserControllerGetAvatar {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace UserControllerBindPhone {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.BindPhoneDto;\n\n    export type Responses = any;\n  }\n\n  namespace UserControllerBindEmail {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.BindEmailDto;\n\n    export type Responses = any;\n  }\n\n  namespace UserControllerBindUsername {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.BindUsernameDto;\n\n    export type Responses = any;\n  }\n\n  namespace UserControllerGetProfile {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace LogControllerGetLogs {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace LogControllerStreamLogs {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace DependencyControllerAdd {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace DependencyControllerUpdate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace DependencyControllerGetDependencies {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace DependencyControllerRemove {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.DeleteDependencyDto;\n\n    export type Responses = any;\n  }\n\n  namespace TriggerControllerCreate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreateTriggerDto;\n\n    export type Responses = any;\n  }\n\n  namespace TriggerControllerFindAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace TriggerControllerRemove {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace RegionControllerGetRegions {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace SettingControllerGetSettings {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace SettingControllerGetSettingByKey {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace BillingControllerFindAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace BillingControllerGetExpense {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace BillingControllerGetExpenseByDay {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace ResourceControllerCalculatePrice {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CalculatePriceDto;\n\n    export type Responses = any;\n  }\n\n  namespace ResourceControllerGetResourceOptions {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace ResourceControllerGetResourceOptionsByRegionId {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace ResourceControllerGetResourceBundles {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionTemplateControllerCreateFunctionTemplate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreateFunctionTemplateDto;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionTemplateControllerGetAllFunctionTemplate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionTemplateControllerUseFunctionTemplate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionTemplateControllerUpdateFunctionTemplate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UpdateFunctionTemplateDto;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionTemplateControllerDeleteFunctionTemplate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionTemplateControllerGetOneFunctionTemplate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionTemplateControllerStarFunctionTemplate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionTemplateControllerGetUserFunctionTemplateStarState {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionTemplateControllerGetFunctionTemplateUsedBy {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionTemplateControllerGetMyFunctionTemplate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionTemplateControllerGetRecommendFunctionTemplate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionRecycleBinControllerDeleteRecycleBinItems {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.DeleteRecycleBinItemsDto;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionRecycleBinControllerEmptyRecycleBin {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionRecycleBinControllerGetRecycleBin {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace FunctionRecycleBinControllerRestoreRecycleBinItems {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.RestoreRecycleBinItemsDto;\n\n    export type Responses = any;\n  }\n\n  namespace GroupControllerFindGroupByAppId {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace GroupControllerFindGroupByInviteCode {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace GroupControllerFindAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace GroupControllerCreate {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.CreateGroupDto;\n\n    export type Responses = any;\n  }\n\n  namespace GroupControllerDelete {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace GroupControllerFindOne {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace GroupControllerUpdateGroup {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UpdateGroupDto;\n\n    export type Responses = any;\n  }\n\n  namespace GroupInviteControllerGetInviteCode {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace GroupInviteControllerGenerateInviteCode {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.GenerateGroupInviteCodeDto;\n\n    export type Responses = any;\n  }\n\n  namespace GroupInviteControllerDeleteInviteCode {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace GroupMemberControllerFindMembers {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace GroupMemberControllerAddMember {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace GroupMemberControllerRemoveMember {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace GroupMemberControllerUpdateMemberRole {\n    export type QueryParameters = any;\n\n    export type BodyParameters = Definitions.UpdateGroupMemberRoleDto;\n\n    export type Responses = any;\n  }\n\n  namespace GroupMemberControllerLeaveGroup {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace MonitorControllerGetData {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n\n  namespace NotificationControllerFindAll {\n    export type QueryParameters = any;\n\n    export type BodyParameters = any;\n\n    export type Responses = any;\n  }\n}\n"
  },
  {
    "path": "web/src/apis/v1/applications.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Create application\n*/\nexport async function ApplicationControllerCreate(\n  params: Definitions.CreateApplicationDto,\n): Promise<{\n    error: string;\n    data: Definitions.ApplicationWithRelations\n}> {\n  // /v1/applications\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/applications`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get user application list\n*/\nexport async function ApplicationControllerFindAll(\n  params: Paths.ApplicationControllerFindAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.ApplicationControllerFindAll.Responses\n}> {\n  // /v1/applications\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/applications`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get an application by appid\n*/\nexport async function ApplicationControllerFindOne(\n  params: Paths.ApplicationControllerFindOne.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.ApplicationControllerFindOne.Responses\n}> {\n  // /v1/applications/{appid}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/applications/${_params.appid}`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Delete an application\n*/\nexport async function ApplicationControllerDelete(\n  params: Paths.ApplicationControllerDelete.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.Application\n}> {\n  // /v1/applications/{appid}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/applications/${_params.appid}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Update application name\n*/\nexport async function ApplicationControllerUpdateName(\n  params: Definitions.UpdateApplicationNameDto,\n): Promise<{\n    error: string;\n    data: Definitions.Application\n}> {\n  // /v1/applications/{appid}/name\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/applications/${_params.appid}/name`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Update application state\n*/\nexport async function ApplicationControllerUpdateState(\n  params: Definitions.UpdateApplicationStateDto,\n): Promise<{\n    error: string;\n    data: Definitions.Application\n}> {\n  // /v1/applications/{appid}/state\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/applications/${_params.appid}/state`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Update application bundle\n*/\nexport async function ApplicationControllerUpdateBundle(\n  params: Definitions.UpdateApplicationBundleDto,\n): Promise<{\n    error: string;\n    data: Definitions.ApplicationBundle\n}> {\n  // /v1/applications/{appid}/bundle\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/applications/${_params.appid}/bundle`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Bind custom domain to application\n*/\nexport async function ApplicationControllerBindDomain(\n  params: Definitions.BindCustomDomainDto,\n): Promise<{\n    error: string;\n    data: Definitions.RuntimeDomain\n}> {\n  // /v1/applications/{appid}/domain\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/applications/${_params.appid}/domain`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Remove custom domain of application\n*/\nexport async function ApplicationControllerRemove(\n  params: Paths.ApplicationControllerRemove.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.RuntimeDomain\n}> {\n  // /v1/applications/{appid}/domain\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/applications/${_params.appid}/domain`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Check if domain is resolved\n*/\nexport async function ApplicationControllerCheckResolved(\n  params: Definitions.BindCustomDomainDto,\n): Promise<{\n    error: string;\n    data: Paths.ApplicationControllerCheckResolved.Responses\n}> {\n  // /v1/applications/{appid}/domain/resolved\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/applications/${_params.appid}/domain/resolved`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/apps.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Create a new function\n*/\nexport async function FunctionControllerCreate(\n  params: Definitions.CreateFunctionDto,\n): Promise<{\n    error: string;\n    data: Definitions.CloudFunction\n}> {\n  // /v1/apps/{appid}/functions\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/functions`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Query function list of an app\n*/\nexport async function FunctionControllerFindAll(\n  params: Paths.FunctionControllerFindAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.FunctionControllerFindAll.Responses\n}> {\n  // /v1/apps/{appid}/functions\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/functions`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get a function by its name\n*/\nexport async function FunctionControllerFindOne(\n  params: Paths.FunctionControllerFindOne.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.CloudFunction\n}> {\n  // /v1/apps/{appid}/functions/{name}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/functions/${_params.name}`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Update a function\n*/\nexport async function FunctionControllerUpdate(\n  params: Definitions.UpdateFunctionDto,\n): Promise<{\n    error: string;\n    data: Definitions.CloudFunction\n}> {\n  // /v1/apps/{appid}/functions/{name}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/functions/${_params.name}`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Delete a function\n*/\nexport async function FunctionControllerRemove(\n  params: Paths.FunctionControllerRemove.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.CloudFunction\n}> {\n  // /v1/apps/{appid}/functions/{name}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/functions/${_params.name}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Update function debug info\n*/\nexport async function FunctionControllerUpdateDebug(\n  params: Definitions.UpdateFunctionDebugDto,\n): Promise<{\n    error: string;\n    data: Definitions.CloudFunction\n}> {\n  // /v1/apps/{appid}/functions/{name}/debug/params\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/functions/${_params.name}/debug/params`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Compile a function \n*/\nexport async function FunctionControllerCompile(\n  params: Definitions.CompileFunctionDto,\n): Promise<{\n    error: string;\n    data: Definitions.CloudFunction\n}> {\n  // /v1/apps/{appid}/functions/{name}/compile\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/functions/${_params.name}/compile`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get cloud function history\n*/\nexport async function FunctionControllerGetHistory(\n  params: Paths.FunctionControllerGetHistory.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.FunctionControllerGetHistory.Responses\n}> {\n  // /v1/apps/{appid}/functions/{name}/history\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/functions/${_params.name}/history`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Update environment variables (replace all)\n*/\nexport async function EnvironmentVariableControllerUpdateAll(\n  params: Paths.EnvironmentVariableControllerUpdateAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.EnvironmentVariableControllerUpdateAll.Responses\n}> {\n  // /v1/apps/{appid}/environments\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/environments`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Set a environment variable (create/update)\n*/\nexport async function EnvironmentVariableControllerAdd(\n  params: Definitions.CreateEnvironmentDto,\n): Promise<{\n    error: string;\n    data: Paths.EnvironmentVariableControllerAdd.Responses\n}> {\n  // /v1/apps/{appid}/environments\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/environments`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Get environment variables\n*/\nexport async function EnvironmentVariableControllerGet(\n  params: Paths.EnvironmentVariableControllerGet.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.EnvironmentVariableControllerGet.Responses\n}> {\n  // /v1/apps/{appid}/environments\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/environments`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Delete an environment variable by name\n*/\nexport async function EnvironmentVariableControllerDelete(\n  params: Paths.EnvironmentVariableControllerDelete.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.EnvironmentVariableControllerDelete.Responses\n}> {\n  // /v1/apps/{appid}/environments/{name}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/environments/${_params.name}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Get app all pod name\n*/\nexport async function PodControllerGetPodNameList(\n  params: Paths.PodControllerGetPodNameList.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.PodNameListDto\n}> {\n  // /v1/apps/{appid}/pod\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/pod`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get pod's containers\n*/\nexport async function PodControllerGetContainerNameList(\n  params: Paths.PodControllerGetContainerNameList.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.ContainerNameListDto\n}> {\n  // /v1/apps/{appid}/pod/container\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/pod/container`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Create a new bucket\n*/\nexport async function BucketControllerCreate(\n  params: Definitions.CreateBucketDto,\n): Promise<{\n    error: string;\n    data: Paths.BucketControllerCreate.Responses\n}> {\n  // /v1/apps/{appid}/buckets\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/buckets`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get bucket list of an app\n*/\nexport async function BucketControllerFindAll(\n  params: Paths.BucketControllerFindAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.BucketControllerFindAll.Responses\n}> {\n  // /v1/apps/{appid}/buckets\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/buckets`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get a bucket by name\n*/\nexport async function BucketControllerFindOne(\n  params: Paths.BucketControllerFindOne.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.BucketControllerFindOne.Responses\n}> {\n  // /v1/apps/{appid}/buckets/{name}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/buckets/${_params.name}`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Update a bucket\n*/\nexport async function BucketControllerUpdate(\n  params: Definitions.UpdateBucketDto,\n): Promise<{\n    error: string;\n    data: Paths.BucketControllerUpdate.Responses\n}> {\n  // /v1/apps/{appid}/buckets/{name}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/buckets/${_params.name}`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Delete a bucket\n*/\nexport async function BucketControllerRemove(\n  params: Paths.BucketControllerRemove.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.BucketControllerRemove.Responses\n}> {\n  // /v1/apps/{appid}/buckets/{name}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/buckets/${_params.name}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Create a new collection in database\n*/\nexport async function CollectionControllerCreate(\n  params: Definitions.CreateCollectionDto,\n): Promise<{\n    error: string;\n    data: Paths.CollectionControllerCreate.Responses\n}> {\n  // /v1/apps/{appid}/collections\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/collections`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get collection list of an application\n*/\nexport async function CollectionControllerFindAll(\n  params: Paths.CollectionControllerFindAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.Collection\n}> {\n  // /v1/apps/{appid}/collections\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/collections`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get collection by name\n*/\nexport async function CollectionControllerFindOne(\n  params: Paths.CollectionControllerFindOne.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.Collection\n}> {\n  // /v1/apps/{appid}/collections/{name}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/collections/${_params.name}`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Update a collection\n*/\nexport async function CollectionControllerUpdate(\n  params: Definitions.UpdateCollectionDto,\n): Promise<{\n    error: string;\n    data: Paths.CollectionControllerUpdate.Responses\n}> {\n  // /v1/apps/{appid}/collections/{name}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/collections/${_params.name}`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Delete a collection by its name\n*/\nexport async function CollectionControllerRemove(\n  params: Paths.CollectionControllerRemove.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.CollectionControllerRemove.Responses\n}> {\n  // /v1/apps/{appid}/collections/{name}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/collections/${_params.name}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Create database policy\n*/\nexport async function PolicyControllerCreate(\n  params: Definitions.CreatePolicyDto,\n): Promise<{\n    error: string;\n    data: Definitions.DatabasePolicyWithRules\n}> {\n  // /v1/apps/{appid}/policies\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/policies`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get database policy list\n*/\nexport async function PolicyControllerFindAll(\n  params: Paths.PolicyControllerFindAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.PolicyControllerFindAll.Responses\n}> {\n  // /v1/apps/{appid}/policies\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/policies`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Update database policy\n*/\nexport async function PolicyControllerUpdate(\n  params: Definitions.UpdatePolicyDto,\n): Promise<{\n    error: string;\n    data: Definitions.DatabasePolicy\n}> {\n  // /v1/apps/{appid}/policies/{name}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/policies/${_params.name}`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Remove a database policy\n*/\nexport async function PolicyControllerRemove(\n  params: Paths.PolicyControllerRemove.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.PolicyControllerRemove.Responses\n}> {\n  // /v1/apps/{appid}/policies/{name}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/policies/${_params.name}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* The database proxy for database management\n*/\nexport async function DatabaseControllerProxy(\n  params: Paths.DatabaseControllerProxy.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.DatabaseControllerProxy.Responses\n}> {\n  // /v1/apps/{appid}/databases/proxy\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/databases/proxy`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Export database of an application\n*/\nexport async function DatabaseControllerExportDatabase(\n  params: Paths.DatabaseControllerExportDatabase.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.DatabaseControllerExportDatabase.Responses\n}> {\n  // /v1/apps/{appid}/databases/export\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/databases/export`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Import database of an application\n*/\nexport async function DatabaseControllerImportDatabase(\n  params: Paths.DatabaseControllerImportDatabase.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.DatabaseControllerImportDatabase.Responses\n}> {\n  // /v1/apps/{appid}/databases/import\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/databases/import`, {\n    method: 'PUT',\n    data : params,\n  });\n}\n\n/**\n* Create database policy rule\n*/\nexport async function PolicyRuleControllerCreate(\n  params: Definitions.CreatePolicyRuleDto,\n): Promise<{\n    error: string;\n    data: Definitions.DatabasePolicyRule\n}> {\n  // /v1/apps/{appid}/policies/{name}/rules\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/policies/${_params.name}/rules`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get database policy rules\n*/\nexport async function PolicyRuleControllerFindAll(\n  params: Paths.PolicyRuleControllerFindAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.PolicyRuleControllerFindAll.Responses\n}> {\n  // /v1/apps/{appid}/policies/{name}/rules\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/policies/${_params.name}/rules`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Update database policy rule by collection name\n*/\nexport async function PolicyRuleControllerUpdate(\n  params: Definitions.UpdatePolicyRuleDto,\n): Promise<{\n    error: string;\n    data: Definitions.DatabasePolicyRule\n}> {\n  // /v1/apps/{appid}/policies/{name}/rules/{collection}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/policies/${_params.name}/rules/${_params.collection}`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Remove a database policy rule by collection name\n*/\nexport async function PolicyRuleControllerRemove(\n  params: Paths.PolicyRuleControllerRemove.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.DatabasePolicyRule\n}> {\n  // /v1/apps/{appid}/policies/{name}/rules/{collection}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/policies/${_params.name}/rules/${_params.collection}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Get dedicated database resources metrics data\n*/\nexport async function DedicatedDatabaseMonitorControllerGetResource(\n  params: Paths.DedicatedDatabaseMonitorControllerGetResource.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.DedicatedDatabaseMonitorControllerGetResource.Responses\n}> {\n  // /v1/apps/{appid}/dedicated-database/monitor/resource\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/dedicated-database/monitor/resource`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get dedicated database connections metrics data\n*/\nexport async function DedicatedDatabaseMonitorControllerGetConnection(\n  params: Paths.DedicatedDatabaseMonitorControllerGetConnection.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.DedicatedDatabaseMonitorControllerGetConnection.Responses\n}> {\n  // /v1/apps/{appid}/dedicated-database/monitor/connection\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/dedicated-database/monitor/connection`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get dedicated database performance metrics data\n*/\nexport async function DedicatedDatabaseMonitorControllerGetPerformance(\n  params: Paths.DedicatedDatabaseMonitorControllerGetPerformance.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.DedicatedDatabaseMonitorControllerGetPerformance.Responses\n}> {\n  // /v1/apps/{appid}/dedicated-database/monitor/performance\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/dedicated-database/monitor/performance`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Create a new website\n*/\nexport async function WebsiteControllerCreate(\n  params: Definitions.CreateWebsiteDto,\n): Promise<{\n    error: string;\n    data: Paths.WebsiteControllerCreate.Responses\n}> {\n  // /v1/apps/{appid}/websites\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/websites`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get all websites of an app\n*/\nexport async function WebsiteControllerFindAll(\n  params: Paths.WebsiteControllerFindAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.WebsiteControllerFindAll.Responses\n}> {\n  // /v1/apps/{appid}/websites\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/websites`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get a website hosting of an app\n*/\nexport async function WebsiteControllerFindOne(\n  params: Paths.WebsiteControllerFindOne.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.WebsiteControllerFindOne.Responses\n}> {\n  // /v1/apps/{appid}/websites/{id}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/websites/${_params.id}`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Bind custom domain to website\n*/\nexport async function WebsiteControllerBindDomain(\n  params: Definitions.BindCustomDomainDto,\n): Promise<{\n    error: string;\n    data: Paths.WebsiteControllerBindDomain.Responses\n}> {\n  // /v1/apps/{appid}/websites/{id}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/websites/${_params.id}`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Delete a website hosting\n*/\nexport async function WebsiteControllerRemove(\n  params: Paths.WebsiteControllerRemove.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.WebsiteControllerRemove.Responses\n}> {\n  // /v1/apps/{appid}/websites/{id}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/websites/${_params.id}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Check if domain is resolved\n*/\nexport async function WebsiteControllerCheckResolved(\n  params: Definitions.BindCustomDomainDto,\n): Promise<{\n    error: string;\n    data: Paths.WebsiteControllerCheckResolved.Responses\n}> {\n  // /v1/apps/{appid}/websites/{id}/resolved\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/websites/${_params.id}/resolved`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get function logs\n*/\nexport async function LogControllerGetLogs(\n  params: Paths.LogControllerGetLogs.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.LogControllerGetLogs.Responses\n}> {\n  // /v1/apps/{appid}/logs/functions\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/logs/functions`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get app pod logs\n*/\nexport async function LogControllerStreamLogs(\n  params: Paths.LogControllerStreamLogs.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.LogControllerStreamLogs.Responses\n}> {\n  // /v1/apps/{appid}/logs/{podName}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/logs/${_params.podName}`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Add application dependencies\n*/\nexport async function DependencyControllerAdd(\n  params: Paths.DependencyControllerAdd.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.DependencyControllerAdd.Responses\n}> {\n  // /v1/apps/{appid}/dependencies\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/dependencies`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Update application dependencies\n*/\nexport async function DependencyControllerUpdate(\n  params: Paths.DependencyControllerUpdate.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.DependencyControllerUpdate.Responses\n}> {\n  // /v1/apps/{appid}/dependencies\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/dependencies`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Get application dependencies\n*/\nexport async function DependencyControllerGetDependencies(\n  params: Paths.DependencyControllerGetDependencies.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.DependencyControllerGetDependencies.Responses\n}> {\n  // /v1/apps/{appid}/dependencies\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/dependencies`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Remove a dependency\n*/\nexport async function DependencyControllerRemove(\n  params: Definitions.DeleteDependencyDto,\n): Promise<{\n    error: string;\n    data: Paths.DependencyControllerRemove.Responses\n}> {\n  // /v1/apps/{appid}/dependencies\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/dependencies`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Create a cron trigger\n*/\nexport async function TriggerControllerCreate(\n  params: Definitions.CreateTriggerDto,\n): Promise<{\n    error: string;\n    data: Paths.TriggerControllerCreate.Responses\n}> {\n  // /v1/apps/{appid}/triggers\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/triggers`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get trigger list of an application\n*/\nexport async function TriggerControllerFindAll(\n  params: Paths.TriggerControllerFindAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.TriggerControllerFindAll.Responses\n}> {\n  // /v1/apps/{appid}/triggers\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/triggers`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Remove a cron trigger\n*/\nexport async function TriggerControllerRemove(\n  params: Paths.TriggerControllerRemove.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.TriggerControllerRemove.Responses\n}> {\n  // /v1/apps/{appid}/triggers/{id}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/apps/${_params.appid}/triggers/${_params.id}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/auth.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Signup by user-password\n*/\nexport async function UserPasswordControllerSignup(\n  params: Definitions.PasswdSignupDto,\n): Promise<{\n    error: string;\n    data: Paths.UserPasswordControllerSignup.Responses\n}> {\n  // /v1/auth/passwd/signup\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/passwd/signup`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Signin by user-password\n*/\nexport async function UserPasswordControllerSignin(\n  params: Definitions.PasswdSigninDto,\n): Promise<{\n    error: string;\n    data: Paths.UserPasswordControllerSignin.Responses\n}> {\n  // /v1/auth/passwd/signin\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/passwd/signin`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Reset password\n*/\nexport async function UserPasswordControllerReset(\n  params: Definitions.PasswdResetDto,\n): Promise<{\n    error: string;\n    data: Paths.UserPasswordControllerReset.Responses\n}> {\n  // /v1/auth/passwd/reset\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/passwd/reset`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Check if user-password is set\n*/\nexport async function UserPasswordControllerCheck(\n  params: Definitions.PasswdCheckDto,\n): Promise<{\n    error: string;\n    data: Paths.UserPasswordControllerCheck.Responses\n}> {\n  // /v1/auth/passwd/check\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/passwd/check`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Send phone verify code\n*/\nexport async function PhoneControllerSendCode(\n  params: Definitions.SendPhoneCodeDto,\n): Promise<{\n    error: string;\n    data: Paths.PhoneControllerSendCode.Responses\n}> {\n  // /v1/auth/phone/sms/code\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/phone/sms/code`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Signin by phone and verify code\n*/\nexport async function PhoneControllerSignin(\n  params: Definitions.PhoneSigninDto,\n): Promise<{\n    error: string;\n    data: Paths.PhoneControllerSignin.Responses\n}> {\n  // /v1/auth/phone/signin\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/phone/signin`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Auth providers\n*/\nexport async function AuthenticationControllerGetProviders(\n  params: Paths.AuthenticationControllerGetProviders.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.AuthenticationControllerGetProviders.Responses\n}> {\n  // /v1/auth/providers\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/providers`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get user token by PAT\n*/\nexport async function AuthenticationControllerPat2token(\n  params: Definitions.Pat2TokenDto,\n): Promise<{\n    error: string;\n    data: Paths.AuthenticationControllerPat2token.Responses\n}> {\n  // /v1/auth/pat2token\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/pat2token`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Send email verify code\n*/\nexport async function EmailControllerSendCode(\n  params: Definitions.SendEmailCodeDto,\n): Promise<{\n    error: string;\n    data: Paths.EmailControllerSendCode.Responses\n}> {\n  // /v1/auth/email/code\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/email/code`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Signin by email and verify code\n*/\nexport async function EmailControllerSignin(\n  params: Definitions.EmailSigninDto,\n): Promise<{\n    error: string;\n    data: Paths.EmailControllerSignin.Responses\n}> {\n  // /v1/auth/email/signin\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/email/signin`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Redirect to the login page of github\n*/\nexport async function GithubAuthControllerJumpLogin(\n  params: Paths.GithubAuthControllerJumpLogin.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.GithubAuthControllerJumpLogin.Responses\n}> {\n  // /v1/auth/github/jump_login\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/github/jump_login`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Signin by github\n*/\nexport async function GithubAuthControllerSignin(\n  params: Definitions.GithubSigninDto,\n): Promise<{\n    error: string;\n    data: Paths.GithubAuthControllerSignin.Responses\n}> {\n  // /v1/auth/github/signin\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/github/signin`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Bind github\n*/\nexport async function GithubAuthControllerBind(\n  params: Definitions.GithubBind,\n): Promise<{\n    error: string;\n    data: Definitions.UserWithProfile\n}> {\n  // /v1/auth/github/bind\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/github/bind`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Unbind github\n*/\nexport async function GithubAuthControllerUnbind(\n  params: Paths.GithubAuthControllerUnbind.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.UserWithProfile\n}> {\n  // /v1/auth/github/unbind\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/auth/github/unbind`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/billings.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Get billings of an application\n*/\nexport async function BillingControllerFindAll(\n  params: Paths.BillingControllerFindAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.BillingControllerFindAll.Responses\n}> {\n  // /v1/billings\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/billings`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get my total amount\n*/\nexport async function BillingControllerGetExpense(\n  params: Paths.BillingControllerGetExpense.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.Number\n}> {\n  // /v1/billings/amount\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/billings/amount`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get my total amount by day\n*/\nexport async function BillingControllerGetExpenseByDay(\n  params: Paths.BillingControllerGetExpenseByDay.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.BillingControllerGetExpenseByDay.Responses\n}> {\n  // /v1/billings/amounts\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/billings/amounts`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/function-templates.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* create a function template\n*/\nexport async function FunctionTemplateControllerCreateFunctionTemplate(\n  params: Definitions.CreateFunctionTemplateDto,\n): Promise<{\n    error: string;\n    data: Paths.FunctionTemplateControllerCreateFunctionTemplate.Responses\n}> {\n  // /v1/function-templates\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/function-templates`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* get all function template\n*/\nexport async function FunctionTemplateControllerGetAllFunctionTemplate(\n  params: Paths.FunctionTemplateControllerGetAllFunctionTemplate.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.FunctionTemplateControllerGetAllFunctionTemplate.Responses\n}> {\n  // /v1/function-templates\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/function-templates`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* use a function template\n*/\nexport async function FunctionTemplateControllerUseFunctionTemplate(\n  params: Paths.FunctionTemplateControllerUseFunctionTemplate.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.FunctionTemplateControllerUseFunctionTemplate.Responses\n}> {\n  // /v1/function-templates/{templateId}/{appid}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/function-templates/${_params.templateId}/${_params.appid}`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* update a function template\n*/\nexport async function FunctionTemplateControllerUpdateFunctionTemplate(\n  params: Definitions.UpdateFunctionTemplateDto,\n): Promise<{\n    error: string;\n    data: Paths.FunctionTemplateControllerUpdateFunctionTemplate.Responses\n}> {\n  // /v1/function-templates/update/{id}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/function-templates/update/${_params.id}`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* delete a function template\n*/\nexport async function FunctionTemplateControllerDeleteFunctionTemplate(\n  params: Paths.FunctionTemplateControllerDeleteFunctionTemplate.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.FunctionTemplateControllerDeleteFunctionTemplate.Responses\n}> {\n  // /v1/function-templates/{id}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/function-templates/${_params.id}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* get one function template\n*/\nexport async function FunctionTemplateControllerGetOneFunctionTemplate(\n  params: Paths.FunctionTemplateControllerGetOneFunctionTemplate.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.FunctionTemplateControllerGetOneFunctionTemplate.Responses\n}> {\n  // /v1/function-templates/{id}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/function-templates/${_params.id}`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* star a function template\n*/\nexport async function FunctionTemplateControllerStarFunctionTemplate(\n  params: Paths.FunctionTemplateControllerStarFunctionTemplate.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.FunctionTemplateControllerStarFunctionTemplate.Responses\n}> {\n  // /v1/function-templates/{templateId}/star\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/function-templates/${_params.templateId}/star`, {\n    method: 'PUT',\n    data : params,\n  });\n}\n\n/**\n* get function template user star state\n*/\nexport async function FunctionTemplateControllerGetUserFunctionTemplateStarState(\n  params: Paths.FunctionTemplateControllerGetUserFunctionTemplateStarState.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.FunctionTemplateControllerGetUserFunctionTemplateStarState.Responses\n}> {\n  // /v1/function-templates/{id}/star-state\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/function-templates/${_params.id}/star-state`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* get people who use this function template\n*/\nexport async function FunctionTemplateControllerGetFunctionTemplateUsedBy(\n  params: Paths.FunctionTemplateControllerGetFunctionTemplateUsedBy.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.FunctionTemplateControllerGetFunctionTemplateUsedBy.Responses\n}> {\n  // /v1/function-templates/{id}/used-by\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/function-templates/${_params.id}/used-by`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* get my function template\n*/\nexport async function FunctionTemplateControllerGetMyFunctionTemplate(\n  params: Paths.FunctionTemplateControllerGetMyFunctionTemplate.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.FunctionTemplateControllerGetMyFunctionTemplate.Responses\n}> {\n  // /v1/function-templates/my\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/function-templates/my`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* get all recommend function template\n*/\nexport async function FunctionTemplateControllerGetRecommendFunctionTemplate(\n  params: Paths.FunctionTemplateControllerGetRecommendFunctionTemplate.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.FunctionTemplateControllerGetRecommendFunctionTemplate.Responses\n}> {\n  // /v1/function-templates/recommend\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/function-templates/recommend`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/group.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Find internal group of the application\n*/\nexport async function GroupControllerFindGroupByAppId(\n  params: Paths.GroupControllerFindGroupByAppId.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.Group\n}> {\n  // /v1/group/application/{appid}/group\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/application/${_params.appid}/group`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get group by invite code\n*/\nexport async function GroupControllerFindGroupByInviteCode(\n  params: Paths.GroupControllerFindGroupByInviteCode.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.GetGroupInviteCodeDetailDto\n}> {\n  // /v1/group/invite/code/{code}/group\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/invite/code/${_params.code}/group`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get group list of the user\n*/\nexport async function GroupControllerFindAll(\n  params: Paths.GroupControllerFindAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.GroupControllerFindAll.Responses\n}> {\n  // /v1/group\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Create group for the user\n*/\nexport async function GroupControllerCreate(\n  params: Definitions.CreateGroupDto,\n): Promise<{\n    error: string;\n    data: Definitions.Group\n}> {\n  // /v1/group\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Delete a group\n*/\nexport async function GroupControllerDelete(\n  params: Paths.GroupControllerDelete.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.Group\n}> {\n  // /v1/group/{groupId}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/${_params.groupId}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Get detail of a group\n*/\nexport async function GroupControllerFindOne(\n  params: Paths.GroupControllerFindOne.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.Group\n}> {\n  // /v1/group/{groupId}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/${_params.groupId}`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Update group\n*/\nexport async function GroupControllerUpdateGroup(\n  params: Definitions.UpdateGroupDto,\n): Promise<{\n    error: string;\n    data: Definitions.Group\n}> {\n  // /v1/group/{groupId}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/${_params.groupId}`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Get group invite code\n*/\nexport async function GroupInviteControllerGetInviteCode(\n  params: Paths.GroupInviteControllerGetInviteCode.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.GroupInviteControllerGetInviteCode.Responses\n}> {\n  // /v1/group/{groupId}/invite/code\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/${_params.groupId}/invite/code`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Update group invite code\n*/\nexport async function GroupInviteControllerGenerateInviteCode(\n  params: Definitions.GenerateGroupInviteCodeDto,\n): Promise<{\n    error: string;\n    data: Definitions.GroupInviteCode\n}> {\n  // /v1/group/{groupId}/invite/code\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/${_params.groupId}/invite/code`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Delete group invite code\n*/\nexport async function GroupInviteControllerDeleteInviteCode(\n  params: Paths.GroupInviteControllerDeleteInviteCode.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.GroupInviteCode\n}> {\n  // /v1/group/{groupId}/invite/code/{code}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/${_params.groupId}/invite/code/${_params.code}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Get members of a group\n*/\nexport async function GroupMemberControllerFindMembers(\n  params: Paths.GroupMemberControllerFindMembers.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.GroupMemberControllerFindMembers.Responses\n}> {\n  // /v1/group/{groupId}/member\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/${_params.groupId}/member`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Join a group\n*/\nexport async function GroupMemberControllerAddMember(\n  params: Paths.GroupMemberControllerAddMember.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.GroupMember\n}> {\n  // /v1/group/{code}/member/join\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/${_params.code}/member/join`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Remove a group member\n*/\nexport async function GroupMemberControllerRemoveMember(\n  params: Paths.GroupMemberControllerRemoveMember.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.GroupMember\n}> {\n  // /v1/group/{groupId}/member/{userId}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/${_params.groupId}/member/${_params.userId}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Update the role of a member\n*/\nexport async function GroupMemberControllerUpdateMemberRole(\n  params: Definitions.UpdateGroupMemberRoleDto,\n): Promise<{\n    error: string;\n    data: Definitions.GroupMember\n}> {\n  // /v1/group/{groupId}/member/{userId}/role\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/${_params.groupId}/member/${_params.userId}/role`, {\n    method: 'PATCH',\n    data : params,\n  });\n}\n\n/**\n* Leave a group\n*/\nexport async function GroupMemberControllerLeaveGroup(\n  params: Paths.GroupMemberControllerLeaveGroup.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.GroupMember\n}> {\n  // /v1/group/{groupId}/member/leave\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/group/${_params.groupId}/member/leave`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/monitor.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Get monitor metrics data\n*/\nexport async function MonitorControllerGetData(\n  params: Paths.MonitorControllerGetData.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.MonitorControllerGetData.Responses\n}> {\n  // /v1/monitor/{appid}/metrics\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/monitor/${_params.appid}/metrics`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/notification.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Get notification list\n*/\nexport async function NotificationControllerFindAll(\n  params: Paths.NotificationControllerFindAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.NotificationControllerFindAll.Responses\n}> {\n  // /v1/notification/list\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/notification/list`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/pats.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Create a PAT\n*/\nexport async function PatControllerCreate(\n  params: Definitions.CreatePATDto,\n): Promise<{\n    error: string;\n    data: Paths.PatControllerCreate.Responses\n}> {\n  // /v1/pats\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/pats`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* List PATs\n*/\nexport async function PatControllerFindAll(\n  params: Paths.PatControllerFindAll.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.PatControllerFindAll.Responses\n}> {\n  // /v1/pats\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/pats`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Delete a PAT\n*/\nexport async function PatControllerRemove(\n  params: Paths.PatControllerRemove.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.PatControllerRemove.Responses\n}> {\n  // /v1/pats/{id}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/pats/${_params.id}`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/recycle-bin.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Delete function Recycle bin items\n*/\nexport async function FunctionRecycleBinControllerDeleteRecycleBinItems(\n  params: Definitions.DeleteRecycleBinItemsDto,\n): Promise<{\n    error: string;\n    data: Definitions.Number\n}> {\n  // /v1/recycle-bin/{appid}/functions/delete\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/recycle-bin/${_params.appid}/functions/delete`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Empty function Recycle bin items\n*/\nexport async function FunctionRecycleBinControllerEmptyRecycleBin(\n  params: Paths.FunctionRecycleBinControllerEmptyRecycleBin.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.Number\n}> {\n  // /v1/recycle-bin/{appid}/functions\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/recycle-bin/${_params.appid}/functions`, {\n    method: 'DELETE',\n    data : params,\n  });\n}\n\n/**\n* Get cloud function recycle bin\n*/\nexport async function FunctionRecycleBinControllerGetRecycleBin(\n  params: Paths.FunctionRecycleBinControllerGetRecycleBin.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.FunctionRecycleBinControllerGetRecycleBin.Responses\n}> {\n  // /v1/recycle-bin/{appid}/functions\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/recycle-bin/${_params.appid}/functions`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* restore function Recycle bin items\n*/\nexport async function FunctionRecycleBinControllerRestoreRecycleBinItems(\n  params: Definitions.RestoreRecycleBinItemsDto,\n): Promise<{\n    error: string;\n    data: Definitions.Number\n}> {\n  // /v1/recycle-bin/{appid}/functions/restore\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/recycle-bin/${_params.appid}/functions/restore`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/regions.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Get region list\n*/\nexport async function RegionControllerGetRegions(\n  params: Paths.RegionControllerGetRegions.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.RegionControllerGetRegions.Responses\n}> {\n  // /v1/regions\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/regions`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/resources.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Calculate pricing\n*/\nexport async function ResourceControllerCalculatePrice(\n  params: Definitions.CalculatePriceDto,\n): Promise<{\n    error: string;\n    data: Definitions.CalculatePriceResultDto\n}> {\n  // /v1/resources/price\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/resources/price`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get resource option list\n*/\nexport async function ResourceControllerGetResourceOptions(\n  params: Paths.ResourceControllerGetResourceOptions.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.ResourceControllerGetResourceOptions.Responses\n}> {\n  // /v1/resources/resource-options\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/resources/resource-options`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get resource option list by region id\n*/\nexport async function ResourceControllerGetResourceOptionsByRegionId(\n  params: Paths.ResourceControllerGetResourceOptionsByRegionId.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.ResourceControllerGetResourceOptionsByRegionId.Responses\n}> {\n  // /v1/resources/resource-options/{regionId}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/resources/resource-options/${_params.regionId}`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get resource template list\n*/\nexport async function ResourceControllerGetResourceBundles(\n  params: Paths.ResourceControllerGetResourceBundles.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.ResourceControllerGetResourceBundles.Responses\n}> {\n  // /v1/resources/resource-bundles\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/resources/resource-bundles`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/runtimes.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Get application runtime list\n*/\nexport async function AppControllerGetRuntimes(\n  params: Paths.AppControllerGetRuntimes.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.AppControllerGetRuntimes.Responses\n}> {\n  // /v1/runtimes\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/runtimes`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/settings.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Get site settings\n*/\nexport async function SettingControllerGetSettings(\n  params: Paths.SettingControllerGetSettings.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.SettingControllerGetSettings.Responses\n}> {\n  // /v1/settings\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/settings`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Get one site setting by key\n*/\nexport async function SettingControllerGetSettingByKey(\n  params: Paths.SettingControllerGetSettingByKey.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.SettingControllerGetSettingByKey.Responses\n}> {\n  // /v1/settings/{key}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/settings/${_params.key}`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/apis/v1/user.ts",
    "content": "// @ts-ignore\n/* eslint-disable */\n///////////////////////////////////////////////////////////////////////\n//                                                                   //\n// this file is autogenerated by service-generate                    //\n// do not edit this file manually                                    //\n//                                                                   //\n///////////////////////////////////////////////////////////////////////\n/// <reference path = \"api-auto.d.ts\" />\nimport request from '@/utils/request';\nimport useGlobalStore from \"@/pages/globalStore\";\n\n/**\n* Update avatar of user\n*/\nexport async function UserControllerUpdateAvatar(\n  params: Paths.UserControllerUpdateAvatar.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.UserWithProfile\n}> {\n  // /v1/user/avatar\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/user/avatar`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get avatar of user\n*/\nexport async function UserControllerGetAvatar(\n  params: Paths.UserControllerGetAvatar.BodyParameters,\n): Promise<{\n    error: string;\n    data: Paths.UserControllerGetAvatar.Responses\n}> {\n  // /v1/user/avatar/{uid}\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/user/avatar/${_params.uid}`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n/**\n* Bind phone\n*/\nexport async function UserControllerBindPhone(\n  params: Definitions.BindPhoneDto,\n): Promise<{\n    error: string;\n    data: Definitions.UserWithProfile\n}> {\n  // /v1/user/bind/phone\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/user/bind/phone`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Bind email\n*/\nexport async function UserControllerBindEmail(\n  params: Definitions.BindEmailDto,\n): Promise<{\n    error: string;\n    data: Definitions.UserWithProfile\n}> {\n  // /v1/user/bind/email\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/user/bind/email`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Bind username\n*/\nexport async function UserControllerBindUsername(\n  params: Definitions.BindUsernameDto,\n): Promise<{\n    error: string;\n    data: Definitions.UserWithProfile\n}> {\n  // /v1/user/bind/username\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/user/bind/username`, {\n    method: 'POST',\n    data : params,\n  });\n}\n\n/**\n* Get current user profile\n*/\nexport async function UserControllerGetProfile(\n  params: Paths.UserControllerGetProfile.BodyParameters,\n): Promise<{\n    error: string;\n    data: Definitions.UserWithProfile\n}> {\n  // /v1/user/profile\n  let _params: { [key: string]: any } = {\n    appid: useGlobalStore.getState().currentApp?.appid || '',\n    ...params,\n  };\n  return request(`/v1/user/profile`, {\n    method: 'GET',\n    params : params,\n  });\n}\n\n"
  },
  {
    "path": "web/src/chakraTheme.ts",
    "content": "import { tagAnatomy } from \"@chakra-ui/anatomy\";\nimport {\n  ComponentStyleConfig,\n  createMultiStyleConfigHelpers,\n  defineStyle,\n  defineStyleConfig,\n  extendTheme,\n} from \"@chakra-ui/react\";\n\nimport { COLOR_MODE } from \"./constants\";\nconst { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers(tagAnatomy.keys);\n\nconst Tag = defineMultiStyleConfig({\n  sizes: {\n    sm: definePartsStyle({\n      container: {\n        width: \"60px\",\n        height: \"18px\",\n        px: \"1\",\n        py: \"1\",\n        zoom: \"0.8\",\n        fontWeight: \"600\",\n        borderRadius: \"4px\",\n      },\n    }),\n  },\n  variants: {\n    private: definePartsStyle({\n      container: {\n        borderColor: \"blue.400\",\n        borderWidth: 1,\n        color: \"blue.700\",\n      },\n    }),\n    readonly: definePartsStyle({\n      container: {\n        borderColor: \"purple.300\",\n        borderWidth: 1,\n        color: \"purple.600\",\n      },\n    }),\n    readwrite: definePartsStyle({\n      container: {\n        borderColor: \"warn.400\",\n        borderWidth: 1,\n        color: \"warn.700\",\n      },\n    }),\n    inputTag: definePartsStyle({\n      container: {\n        backgroundColor: \"lafWhite.100\",\n        borderColor: \"lafWhite.100\",\n        borderWidth: 1,\n        color: \"grayModern.900\",\n        height: \"28px\",\n      },\n    }),\n    inputTagActive: definePartsStyle({\n      container: {\n        backgroundColor: \"lafWhite.600\",\n        borderColor: \"primary.500\",\n        borderWidth: 1,\n        color: \"primary.500\",\n        height: \"28px\",\n      },\n    }),\n  },\n});\n\nconst Button = defineStyleConfig({\n  baseStyle: {},\n  // Two sizes: sm and md\n  sizes: {\n    sm: {\n      fontSize: \"sm\",\n      px: 2,\n      py: 0,\n      height: \"24px\",\n      fontWeight: \"normal\",\n    },\n    md: {\n      fontSize: \"md\",\n      borderRadius: \"100px\",\n      px: 6,\n      height: \"32px\",\n    },\n  },\n\n  variants: {\n    primary: {\n      bg: \"primary.600\",\n      color: \"lafWhite.200\",\n      _hover: {\n        bg: \"primary.700\",\n      },\n      _disabled: {\n        _hover: {\n          bg: \"primary.500 !important\",\n        },\n      },\n    },\n\n    secondary: {\n      color: \"primary.500\",\n      bg: \"primary.100\",\n      _hover: {\n        bg: \"primary.200\",\n      },\n    },\n\n    plain: {\n      bg: \"grayModern.100\",\n      color: \"grayModern.500\",\n      _hover: {\n        bg: \"grayModern.200\",\n      },\n    },\n\n    text: {\n      color: \"primary.500\",\n      _hover: {\n        bg: \"primary.100\",\n      },\n    },\n\n    text_disabled: {\n      color: \"grayModern.500\",\n      _hover: {\n        cursor: \"not-allowed\",\n      },\n    },\n\n    warn: {\n      bg: \"error.100\",\n      color: \"error.500\",\n      _hover: {\n        bg: \"error.200\",\n      },\n    },\n\n    warnText: {\n      color: \"error.500\",\n      _hover: {\n        bg: \"error.100\",\n      },\n    },\n\n    thirdly: {\n      color: \"primary.500\",\n      bg: \"primary.100\",\n      _hover: {\n        bg: \"primary.200\",\n      },\n      border: \"1px solid\",\n      rounded: \"md\",\n    },\n\n    thirdly_disabled: {\n      bg: \"grayModern.100\",\n      color: \"grayModern.500\",\n      _hover: {\n        bg: \"grayModern.100\",\n        cursor: \"not-allowed\",\n      },\n      border: \"1px solid\",\n      rounded: \"md\",\n    },\n  },\n  // The default size and variant values\n  defaultProps: {\n    size: \"md\",\n    variant: \"primary\",\n  },\n});\n\nconst Modal = {\n  defaultProps: {},\n};\n\nconst Input: ComponentStyleConfig = {\n  baseStyle: {\n    field: {},\n  },\n  sizes: {\n    xs: {\n      field: {\n        borderRadius: \"sm\",\n        fontSize: \"xs\",\n        height: 6,\n        paddingX: 2,\n      },\n    },\n    sm: {\n      field: {\n        borderRadius: \"sm\",\n        fontSize: \"sm\",\n        height: 8,\n        paddingX: 3,\n      },\n    },\n    md: {\n      field: {\n        borderRadius: \"md\",\n        fontSize: \"md\",\n        height: 10,\n        paddingX: 4,\n      },\n    },\n    lg: {\n      field: {\n        borderRadius: \"md\",\n        fontSize: \"lg\",\n        height: 12,\n        paddingX: 4,\n      },\n    },\n  },\n  variants: {\n    outline: {\n      field: {\n        background: \"#fff\",\n        border: \"1px solid\",\n        borderColor: \"transparent\",\n        _focus: {\n          background: \"transparent\",\n          borderColor: \"#3182ce\",\n        },\n      },\n    },\n    filled: {\n      field: {\n        background: \"lafWhite.600\",\n        border: \"1px solid\",\n        borderColor: \"transparent\",\n        _hover: {\n          background: \"lafWhite.600\",\n        },\n        _focus: {\n          background: \"transparent\",\n          borderColor: \"primary.400\",\n        },\n      },\n      addon: {\n        background: \"lafWhite.600\",\n      },\n    },\n\n    unstyled: {\n      field: {\n        background: \"transparent\",\n        borderRadius: \"md\",\n        height: \"auto\",\n        paddingX: 0,\n      },\n    },\n\n    userInfo: {\n      field: {\n        background: \"#F8FAFB\",\n        border: \"1px\",\n        height: \"32px\",\n        borderColor: \"#D5D6E1\",\n      },\n    },\n  },\n  defaultProps: {\n    size: \"md\",\n    variant: \"filled\",\n  },\n};\n\nconst Tabs = {\n  variants: {\n    \"soft-rounded\": {\n      tab: {\n        borderRadius: \"4px\",\n        color: \"grayModern.500\",\n        _selected: {\n          color: \"grayModern.900\",\n          bg: \"lafWhite.600\",\n          borderRadius: \"4px\",\n        },\n      },\n    },\n  },\n};\n\nconst Table = {\n  baseStyle: {},\n  variants: {\n    simple: {\n      parts: [\"th\", \"td\"],\n      th: {\n        border: \"none\",\n        fontWeight: \"400\",\n        color: \"grayModern.500\",\n      },\n      td: {\n        border: \"none\",\n      },\n    },\n    border: {\n      parts: [\"th\", \"td\"],\n      th: {\n        borderWidth: 1,\n        borderColor: \"grayModern.100\",\n        background: \"lafWhite.300\",\n      },\n      td: {\n        borderWidth: 1,\n        borderColor: \"grayModern.100\",\n        background: \"lafWhite.300\",\n      },\n    },\n    params: {\n      parts: [\"th\", \"td\"],\n      th: {\n        borderWidth: 1,\n        borderColor: \"grayModern.100\",\n        background: \"lafWhite.400\",\n      },\n      td: {\n        borderWidth: 1,\n        borderColor: \"grayModern.100\",\n        background: \"lafWhite.400\",\n      },\n    },\n  },\n  defaultProps: {\n    variant: \"border\",\n  },\n};\n\nconst Select = {\n  variants: {\n    filled: {\n      field: {\n        background: \"lafWhite.600\",\n        borderWidth: 1,\n        _hover: {\n          background: \"lafWhite.600\",\n        },\n        _focusVisible: {\n          background: \"lafWhite.200\",\n          borderColor: \"primary.400\",\n        },\n      },\n      icon: {\n        color: \"grayIron.600\",\n      },\n    },\n  },\n};\n\nconst Badge = {\n  baseStyle: defineStyle({\n    borderRadius: \"50px\",\n    textTransform: \"none\",\n    fontWeight: \"medium\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n  }),\n};\n\nconst Menu = {\n  variants: {\n    default: {\n      list: {\n        py: \"4px\",\n        borderRadius: \"4px\",\n        border: \"none\",\n        boxShadow: \"0px 4px 8px rgba(0, 0, 0, 0.1)\",\n      },\n      item: {\n        minHeight: \"36px\",\n      },\n    },\n  },\n  defaultProps: {\n    variant: \"default\",\n  },\n};\n\nconst theme = extendTheme({\n  initialColorMode: COLOR_MODE.dark, // 'dark | 'light'\n  useSystemColorMode: false,\n  fontSizes: {\n    sm: \"12px\",\n    base: \"12px\",\n    md: \"14px\",\n    lg: \"16px\",\n    xl: \"16px\",\n    \"2xl\": \"18px\",\n    \"3xl\": \"22px\",\n  },\n  colors: {\n    primary: {\n      100: \"#E6F6F5\",\n      200: \"#CCEEEB\",\n      300: \"#99DDD8\",\n      400: \"#66CBC4\",\n      500: \"#33BAB1\",\n      600: \"#00A99D\",\n      700: \"#00877E\",\n      800: \"#00655E\",\n      900: \"#00443F\",\n      1000: \"#00221F\",\n    },\n    lafWhite: {\n      100: \"#FEFEFE\",\n      200: \"#FDFDFE\",\n      300: \"#FBFBFC\",\n      400: \"#F8FAFB\",\n      500: \"#F6F8F9\",\n      600: \"#F4F6F8\",\n      700: \"#C3C5C6\",\n      800: \"#929495\",\n      900: \"#626263\",\n      1000: \"#313132\",\n    },\n    grayModern: {\n      100: \"#EFF0F1\",\n      200: \"#DEE0E2\",\n      300: \"#BDC1C5\",\n      400: \"#9CA2A8\",\n      500: \"#7B838B\",\n      600: \"#5A646E\",\n      700: \"#485058\",\n      800: \"#363C42\",\n      900: \"#24282C\",\n      1000: \"#121416\",\n    },\n    grayIron: {\n      100: \"#F3F3F3\",\n      200: \"#E6E6E7\",\n      300: \"#CDCDD0\",\n      400: \"#B4B4B8\",\n      500: \"#9B9BA1\",\n      600: \"#828289\",\n      700: \"#68686E\",\n      800: \"#4E4E52\",\n      900: \"#343437\",\n      1000: \"#1A1A1B\",\n    },\n    error: {\n      100: \"#FDECEE\",\n      200: \"#FDD8DC\",\n      400: \"#FF8492\",\n      500: \"#F16979\",\n      600: \"#ED4458\",\n    },\n    warn: {\n      100: \"#FFF2EC\",\n      400: \"#FDB08A\",\n      600: \"#FB7C3C\",\n      700: \"#C96330\",\n    },\n    rose: {\n      100: \"#FDEAF1\",\n    },\n    blue: {\n      100: \"#EBF7FD\",\n      400: \"#86CEF5\",\n      500: \"#5EBDF2\",\n      600: \"#36ADEF\",\n      700: \"#2B8ABF\",\n    },\n    purple: {\n      300: \"#DBBDE9\",\n      400: \"#C99CDF\",\n      600: \"#A55AC9\",\n      700: \"#7167AA\",\n    },\n    frostyNightfall: {\n      200: \"#EAEBF0\",\n    },\n  },\n  components: {\n    Button,\n    Modal,\n    Tag,\n    Input,\n    Tabs,\n    Table,\n    Select,\n    Badge,\n    Menu,\n  },\n});\n\nexport default theme;\n"
  },
  {
    "path": "web/src/chakraThemeDark.ts",
    "content": "import { tagAnatomy } from \"@chakra-ui/anatomy\";\nimport {\n  ComponentStyleConfig,\n  createMultiStyleConfigHelpers,\n  defineStyle,\n  defineStyleConfig,\n  extendTheme,\n} from \"@chakra-ui/react\";\n\nimport { COLOR_MODE } from \"./constants\";\nconst { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers(tagAnatomy.keys);\n\nconst Tag = defineMultiStyleConfig({\n  sizes: {\n    sm: definePartsStyle({\n      container: {\n        width: \"60px\",\n        height: \"18px\",\n        px: \"1\",\n        py: \"1\",\n        zoom: \"0.8\",\n        fontWeight: \"600\",\n        borderRadius: \"4px\",\n      },\n    }),\n  },\n  variants: {\n    private: definePartsStyle({\n      container: {\n        borderColor: \"blue.400\",\n        borderWidth: 1,\n        color: \"blue.700\",\n      },\n    }),\n    readonly: definePartsStyle({\n      container: {\n        borderColor: \"purple.300\",\n        borderWidth: 1,\n        color: \"purple.600\",\n      },\n    }),\n    readwrite: definePartsStyle({\n      container: {\n        borderColor: \"warn.400\",\n        borderWidth: 1,\n        color: \"warn.700\",\n      },\n    }),\n    inputTag: definePartsStyle({\n      container: {\n        backgroundColor: \"lafWhite.600\",\n        borderColor: \"lafWhite.600\",\n        borderWidth: 1,\n        color: \"grayModern.900\",\n      },\n    }),\n    inputTagActive: definePartsStyle({\n      container: {\n        backgroundColor: \"lafWhite.600\",\n        borderColor: \"primary.500\",\n        borderWidth: 1,\n        color: \"primary.500\",\n      },\n    }),\n  },\n});\n\nconst Button = defineStyleConfig({\n  baseStyle: {},\n  // Two sizes: sm and md\n  sizes: {\n    sm: {\n      fontSize: \"sm\",\n      px: 2,\n      py: 0,\n      height: \"24px\",\n      fontWeight: \"normal\",\n    },\n    md: {\n      fontSize: \"md\",\n      borderRadius: \"100px\",\n      px: 6,\n      height: \"32px\",\n    },\n  },\n\n  variants: {\n    primary: {\n      bg: \"lafDark.300\",\n      // color: \"lafWhite.200\",\n      _hover: {\n        bg: \"primary.700\",\n      },\n      _disabled: {\n        _hover: {\n          // bg: \"primary.500 !important\",\n        },\n      },\n    },\n\n    secondary: {\n      color: \"lafDark.1000\",\n      bg: \"lafDark.300\",\n      _hover: {\n        bg: \"lafDark.400\",\n      },\n    },\n\n    thirdly: {\n      color: \"lafDark.1000\",\n      bg: \"lafDark.300\",\n      _hover: {\n        bg: \"lafDark.400\",\n      },\n      border: \"1px solid\",\n      rounded: \"md\",\n    },\n\n    plain: {\n      bg: \"grayModern.100\",\n      color: \"grayModern.500\",\n      _hover: {\n        bg: \"grayModern.200\",\n      },\n    },\n\n    text: {\n      color: \"primary.500\",\n      _hover: {\n        bg: \"primary.900\",\n      },\n    },\n\n    text_disabled: {\n      color: \"grayModern.500\",\n      _hover: {\n        cursor: \"not-allowed\",\n      },\n    },\n\n    warn: {\n      bg: \"lafDark.300\",\n      _hover: {\n        bg: \"error.500\",\n      },\n    },\n\n    warnText: {\n      color: \"error.500\",\n      _hover: {\n        bg: \"error.100\",\n      },\n    },\n  },\n  // The default size and variant values\n  defaultProps: {\n    size: \"md\",\n    variant: \"primary\",\n  },\n});\n\nconst Modal = {\n  defaultProps: {\n    background: \"gray.800\",\n  },\n};\n\nconst Input: ComponentStyleConfig = {\n  baseStyle: {\n    field: {},\n  },\n  sizes: {\n    xs: {\n      field: {\n        borderRadius: \"sm\",\n        fontSize: \"xs\",\n        height: 6,\n        paddingX: 2,\n      },\n    },\n    sm: {\n      field: {\n        borderRadius: \"sm\",\n        fontSize: \"sm\",\n        height: 8,\n        paddingX: 3,\n      },\n    },\n    md: {\n      field: {\n        borderRadius: \"md\",\n        fontSize: \"md\",\n        height: 10,\n        paddingX: 4,\n      },\n    },\n    lg: {\n      field: {\n        borderRadius: \"md\",\n        fontSize: \"lg\",\n        height: 12,\n        paddingX: 4,\n      },\n    },\n  },\n  variants: {\n    outline: {\n      field: {\n        // background: \"#fff\",\n        border: \"1px solid\",\n        borderColor: \"transparent\",\n        _focus: {\n          background: \"transparent\",\n          borderColor: \"#01a99d\",\n        },\n      },\n    },\n    filled: {\n      field: {\n        // background: \"lafWhite.600\",\n        border: \"1px solid\",\n        borderColor: \"transparent\",\n        _hover: {\n          // background: \"lafWhite.600\",\n        },\n        _focus: {\n          background: \"transparent\",\n          // borderColor: \"primary.400\",\n        },\n      },\n      addon: {\n        // background: \"lafWhite.600\",\n      },\n    },\n\n    unstyled: {\n      field: {\n        background: \"transparent\",\n        borderRadius: \"md\",\n        height: \"auto\",\n        paddingX: 0,\n      },\n    },\n\n    userInfo: {\n      field: {\n        background: \"none\",\n        border: \"1px\",\n        height: \"32px\",\n        borderColor: \"#D5D6E1\",\n      },\n    },\n  },\n  defaultProps: {\n    size: \"md\",\n    variant: \"filled\",\n  },\n};\n\nconst Tabs = {\n  variants: {\n    \"soft-rounded\": {\n      tab: {\n        borderRadius: \"4px\",\n        color: \"lafDark.500\",\n        _selected: {\n          color: \"lafDark.1000\",\n          bg: \"lafDark.300\",\n          borderRadius: \"4px\",\n        },\n      },\n    },\n  },\n};\n\nconst Table = {\n  baseStyle: {},\n  variants: {\n    simple: {\n      parts: [\"th\", \"td\"],\n      th: {\n        border: \"none\",\n        fontWeight: \"400\",\n        color: \"grayModern.500\",\n      },\n      td: {\n        border: \"none\",\n      },\n    },\n    border: {\n      parts: [\"th\", \"td\"],\n      th: {\n        borderWidth: 1,\n        borderColor: \"lafDark.300\",\n        background: \"lafDark.200\",\n      },\n      td: {\n        borderWidth: 1,\n        borderColor: \"lafDark.300\",\n        background: \"lafDark.200\",\n      },\n    },\n    params: {\n      parts: [\"th\", \"td\"],\n      th: {\n        borderWidth: 1,\n        borderColor: \"grayModern.700\",\n        background: \"lafDark.300\",\n      },\n      td: {\n        borderWidth: 1,\n        borderColor: \"grayModern.700\",\n        background: \"lafDark.300\",\n      },\n    },\n  },\n  defaultProps: {\n    variant: \"border\",\n  },\n};\n\nconst Select = {\n  variants: {\n    filled: {\n      field: {\n        background: \"lafDark.300\",\n        borderWidth: 1,\n        _hover: {\n          background: \"lafDark.300\",\n        },\n        _focusVisible: {\n          background: \"lafDark.200\",\n          borderColor: \"lafDark.400\",\n        },\n      },\n      icon: {\n        color: \"grayIron.600\",\n      },\n    },\n  },\n};\n\nconst Badge = {\n  baseStyle: defineStyle({\n    borderRadius: \"50px\",\n    textTransform: \"none\",\n    fontWeight: \"medium\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n  }),\n};\n\nconst Menu = {\n  variants: {\n    default: {\n      list: {\n        py: \"4px\",\n        borderRadius: \"4px\",\n        border: \"none\",\n        boxShadow: \"0px 4px 8px rgba(0, 0, 0, 0.1)\",\n      },\n      item: {\n        minHeight: \"36px\",\n      },\n    },\n  },\n  defaultProps: {\n    variant: \"default\",\n  },\n};\n\nconst theme = extendTheme({\n  initialColorMode: COLOR_MODE.dark, // 'dark | 'light'\n  useSystemColorMode: false,\n  fontSizes: {\n    sm: \"12px\",\n    base: \"12px\",\n    md: \"14px\",\n    lg: \"16px\",\n    xl: \"16px\",\n    \"2xl\": \"18px\",\n    \"3xl\": \"22px\",\n  },\n  colors: {\n    primary: {\n      100: \"#E6F6F5\",\n      200: \"#CCEEEB\",\n      300: \"#99DDD8\",\n      400: \"#66CBC4\",\n      500: \"#33BAB1\",\n      600: \"#00A99D\",\n      700: \"#00877E\",\n      800: \"#00655E\",\n      900: \"#00443F\",\n      1000: \"#00221F\",\n    },\n    lafWhite: {\n      100: \"#FEFEFE\",\n      200: \"#FDFDFE\",\n      300: \"#FBFBFC\",\n      400: \"#F8FAFB\",\n      500: \"#F6F8F9\",\n      600: \"#F4F6F8\",\n      700: \"#C3C5C6\",\n      800: \"#929495\",\n      900: \"#626263\",\n      1000: \"#313132\",\n    },\n    lafDark: {\n      100: \"#1a202c\",\n      200: \"#202631\",\n      300: \"#303541\",\n      400: \"#404551\",\n      500: \"#505561\",\n      600: \"#606571\",\n      700: \"#707581\",\n      800: \"#808591\",\n      900: \"#9095A1\",\n      1000: \"#A0A5B1\",\n    },\n    slate: {\n      300: \"#cbd5e1\",\n    },\n    grayModern: {\n      100: \"#EFF0F1\",\n      200: \"#DEE0E2\",\n      300: \"#BDC1C5\",\n      400: \"#9CA2A8\",\n      500: \"#7B838B\",\n      600: \"#5A646E\",\n      700: \"#485058\",\n      800: \"#363C42\",\n      900: \"#24282C\",\n      1000: \"#121416\",\n    },\n    grayIron: {\n      100: \"#F3F3F3\",\n      200: \"#E6E6E7\",\n      300: \"#CDCDD0\",\n      400: \"#B4B4B8\",\n      500: \"#9B9BA1\",\n      600: \"#828289\",\n      700: \"#68686E\",\n      800: \"#4E4E52\",\n      900: \"#343437\",\n      1000: \"#1A1A1B\",\n    },\n    error: {\n      100: \"#FDECEE\",\n      200: \"#FDD8DC\",\n      400: \"#FF8492\",\n      500: \"#F16979\",\n      600: \"#ED4458\",\n    },\n    warn: {\n      100: \"#FFF2EC\",\n      400: \"#FDB08A\",\n      600: \"#FB7C3C\",\n      700: \"#C96330\",\n    },\n    rose: {\n      100: \"#FDEAF1\",\n    },\n    gray: {\n      700: \"#202631\",\n    },\n    blue: {\n      100: \"#EBF7FD\",\n      400: \"#86CEF5\",\n      500: \"#5EBDF2\",\n      600: \"#36ADEF\",\n      700: \"#2B8ABF\",\n    },\n    purple: {\n      300: \"#DBBDE9\",\n      400: \"#C99CDF\",\n      600: \"#A55AC9\",\n      700: \"#7167AA\",\n    },\n    frostyNightfall: {\n      200: \"#EAEBF0\",\n    },\n  },\n  components: {\n    Button,\n    Modal,\n    Tag,\n    Input,\n    Tabs,\n    Table,\n    Select,\n    Badge,\n    Menu,\n  },\n});\n\nexport default theme;\n"
  },
  {
    "path": "web/src/components/ChargeButton/index.tsx",
    "content": "import React, { useRef } from \"react\";\nimport {\n  Button,\n  Input,\n  InputGroup,\n  InputLeftAddon,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalHeader,\n  ModalOverlay,\n  useColorMode,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { useMutation, useQuery } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\nimport isNumber from \"lodash/isNumber\";\nimport { QRCodeSVG } from \"qrcode.react\";\n\nimport { CHARGE_CHANNEL, CURRENCY } from \"@/constants\";\nimport { convertMoney, formatPrice } from \"@/utils/format\";\n\nimport {\n  AccountControllerCharge,\n  AccountControllerGetChargeOrder,\n  AccountControllerGetChargeRewardList,\n} from \"@/apis/v1/accounts\";\nimport { useAccountQuery } from \"@/pages/home/service\";\n\nexport default function ChargeButton(props: { amount?: number; children: React.ReactElement }) {\n  const { children } = props;\n  const darkMode = useColorMode().colorMode === \"dark\";\n  const { isOpen, onOpen, onClose } = useDisclosure();\n\n  const [amount, setAmount] = React.useState<number>(0);\n  const [bonus, setBonus] = React.useState<[{ amount: number; reward: number }]>();\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const [phaseStatus, setPhaseStatus] = React.useState<string | undefined>();\n\n  const { data: createOrderRes, ...createChargeOrder } = useMutation(\n    [\"AccountControllerCharge\"],\n    (params: any) => AccountControllerCharge(params),\n    {},\n  );\n\n  const { data: accountRes, refetch: accountRefetch } = useAccountQuery();\n\n  useQuery(\n    [\"AccountControllerGetChargeOrder\"],\n    () =>\n      AccountControllerGetChargeOrder({\n        id: createOrderRes?.data?.order?._id,\n      }),\n    {\n      enabled: !!createOrderRes?.data?.order?._id && isOpen,\n      refetchInterval: phaseStatus === \"Pending\" && isOpen ? 1000 : false,\n      onSuccess: (res) => {\n        setPhaseStatus(res?.data?.phase);\n        if (res?.data?.phase === \"Paid\" && phaseStatus !== \"Paid\") {\n          accountRefetch();\n          onClose();\n          setPhaseStatus(res?.data?.phase);\n        }\n      },\n    },\n  );\n\n  useQuery(\n    [\"AccountControllerGetChargeRewardList\"],\n    () => AccountControllerGetChargeRewardList({}),\n    {\n      enabled: isOpen,\n      onSuccess: (res) => {\n        setBonus(res.data);\n      },\n    },\n  );\n\n  const matchBonus = (amount: number) => {\n    const index = (bonus || []).findIndex((item) => item.amount > amount);\n    const matchedItem = index === -1 ? bonus?.[bonus?.length - 1] : bonus?.[index - 1];\n    return matchedItem?.reward && matchedItem?.reward / 100;\n  };\n\n  return (\n    <>\n      {React.cloneElement(children, { onClick: onOpen })}\n      <Modal isOpen={isOpen} onClose={onClose}>\n        <ModalOverlay />\n        <ModalContent marginTop={20} maxW={\"500px\"}>\n          <ModalHeader>{t(\"Charge\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb=\"10\">\n            <div className=\"flex flex-col text-lg\">\n              <div className=\"flex items-center pb-6\">\n                <span className=\"mr-6 text-second\">{t(\"Balance\")}</span>\n                <span className=\"text-[24px] font-semibold\">\n                  {formatPrice(accountRes?.data?.balance)}\n                </span>\n              </div>\n              {bonus && <p className=\"mb-4 text-second\">{t(\"Recharge amount\")}</p>}\n              <div className=\"mb-5 grid grid-cols-3 gap-4\">\n                {(bonus || []).map((item) => (\n                  <div className=\"relative\" key={item.amount}>\n                    {item.reward !== 0 && (\n                      <span className=\"absolute left-20 top-1 z-50 whitespace-nowrap rounded-full rounded-bl-none bg-purple-200 px-4 py-[1.5px] text-[12px] text-purple-600\">\n                        {t(\"application.bonus\")} ¥{item.reward / 100}\n                      </span>\n                    )}\n                    <Button\n                      className={clsx(\n                        \"w-full !rounded-md !border-2 py-10 !text-[24px]\",\n                        item.amount === amount * 100\n                          ? \"!border-primary-400 !text-primary-600\"\n                          : \"!border-transparent\",\n                        darkMode ? \"bg-gray-500\" : \"bg-gray-100 \",\n                      )}\n                      variant={\"outline\"}\n                      key={item.amount}\n                      onClick={() => {\n                        setAmount(item.amount / 100);\n                      }}\n                    >\n                      ¥{item.amount / 100}\n                    </Button>\n                  </div>\n                ))}\n              </div>\n              <InputGroup className=\"flex items-center pb-5\">\n                <div className=\"w-20 text-lg text-second\">{t(\"application.Recharge\")}</div>\n                <InputLeftAddon\n                  style={{ backgroundColor: darkMode ? \"#252934\" : \"#FAFBFB\" }}\n                  className=\"!px-0 !pl-3\"\n                  children=\"¥\"\n                />\n                <Input\n                  ref={inputRef}\n                  disabled\n                  className={clsx(\"!w-5/12 !border-none !px-2\", darkMode ? \"\" : \"!bg-gray-100\")}\n                  value={amount}\n                  onInput={(event) => {\n                    const value = Number(event.currentTarget.value);\n                    if (isNumber(value) && !isNaN(value)) {\n                      setAmount(value);\n                    } else {\n                      if (inputRef.current) inputRef.current.value = String(amount);\n                    }\n                  }}\n                />\n                {bonus && matchBonus(amount * 100) && (\n                  <div>\n                    <span className=\"ml-3 whitespace-nowrap rounded-full rounded-bl-none bg-purple-200 px-2 py-[1.5px] text-[12px] text-purple-600\">\n                      {t(\"application.bonus\")}\n                    </span>\n                    <span className=\"pl-1 font-semibold\">¥{matchBonus(amount * 100) || 0}</span>\n                  </div>\n                )}\n              </InputGroup>\n              <Button\n                isDisabled={!amount || !isNumber(amount)}\n                className=\"!h-9 w-full !rounded-full\"\n                isLoading={createChargeOrder.isLoading}\n                onClick={() => {\n                  createChargeOrder.mutateAsync({\n                    amount: convertMoney(amount || 0),\n                    channel: CHARGE_CHANNEL.WeChat,\n                    currency: CURRENCY.CNY,\n                  });\n                }}\n              >\n                {t(\"Confirm\")}\n              </Button>\n            </div>\n\n            {createOrderRes?.data?.result?.code_url && phaseStatus !== \"Paid\" && (\n              <div className=\"mt-4 flex flex-col items-center text-xl \">\n                <h2 className=\"mb-2\">{t(\"Scan with WeChat\")}</h2>\n                <QRCodeSVG\n                  value={createOrderRes?.data?.result?.code_url}\n                  width={180}\n                  height={180}\n                />\n                <p className=\"mt-4 text-base text-second \">\n                  {t(\"Order Number\")}：{createOrderRes?.data?.order?._id}\n                </p>\n                <p className=\"mt-1 text-base text-second \">\n                  {t(\"payment status\")}: {phaseStatus}\n                </p>\n              </div>\n            )}\n          </ModalBody>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/components/ColorModeSwitch/index.tsx",
    "content": "import { MoonIcon, SunIcon } from \"@chakra-ui/icons\";\nimport { useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\nexport default function ColorModeSwitch(props: { className?: string; fontSize?: number }) {\n  const { toggleColorMode } = useColorMode();\n  const { className, fontSize = 18 } = props;\n  const darkMode = useColorMode().colorMode === COLOR_MODE.dark;\n\n  return (\n    <div\n      className={clsx(\"flex cursor-pointer items-center\", className)}\n      onClick={() => {\n        toggleColorMode();\n        window.dispatchEvent(new Event(\"ColorModeChange\"));\n      }}\n    >\n      {darkMode ? <MoonIcon fontSize={fontSize} /> : <SunIcon fontSize={fontSize} />}\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/components/CommonIcon/index.tsx",
    "content": "import React from \"react\";\nimport { createIcon } from \"@chakra-ui/react\";\n\nexport const MoreIcon = createIcon({\n  displayName: \"MoreIcon\",\n  viewBox: \"0 0 4 20\",\n  d: \"M2 16C1.45 16 0.979334 15.8043 0.588 15.413C0.196 15.021 0 14.55 0 14C0 13.45 0.196 12.979 0.588 12.587C0.979334 12.1957 1.45 12 2 12C2.55 12 3.021 12.1957 3.413 12.587C3.80433 12.979 4 13.45 4 14C4 14.55 3.80433 15.021 3.413 15.413C3.021 15.8043 2.55 16 2 16ZM2 10C1.45 10 0.979334 9.804 0.588 9.412C0.196 9.02067 0 8.55 0 8C0 7.45 0.196 6.979 0.588 6.587C0.979334 6.19567 1.45 6 2 6C2.55 6 3.021 6.19567 3.413 6.587C3.80433 6.979 4 7.45 4 8C4 8.55 3.80433 9.02067 3.413 9.412C3.021 9.804 2.55 10 2 10ZM2 4C1.45 4 0.979334 3.804 0.588 3.412C0.196 3.02067 0 2.55 0 2C0 1.45 0.196 0.979333 0.588 0.588C0.979334 0.196 1.45 0 2 0C2.55 0 3.021 0.196 3.413 0.588C3.80433 0.979333 4 1.45 4 2C4 2.55 3.80433 3.02067 3.413 3.412C3.021 3.804 2.55 4 2 4Z\",\n});\n\nexport const TriggerIcon = createIcon({\n  displayName: \"TriggerIcon\",\n  viewBox: \"0 0 16 16\",\n  d: \"M4.33333 14.6667C3.41111 14.6667 2.62511 14.3418 1.97533 13.692C1.32511 13.0418 1 12.2556 1 11.3333C1 10.5222 1.25289 9.81378 1.75867 9.208C2.264 8.60267 2.9 8.22222 3.66667 8.06667V9.45C3.27778 9.58333 2.95822 9.82222 2.708 10.1667C2.45822 10.5111 2.33333 10.9 2.33333 11.3333C2.33333 11.8889 2.52778 12.3611 2.91667 12.75C3.30556 13.1389 3.77778 13.3333 4.33333 13.3333C4.88889 13.3333 5.36111 13.1389 5.75 12.75C6.13889 12.3611 6.33333 11.8889 6.33333 11.3333V10.6667H10.25C10.3389 10.5667 10.4473 10.486 10.5753 10.4247C10.7029 10.3638 10.8444 10.3333 11 10.3333C11.2778 10.3333 11.5138 10.4307 11.708 10.6253C11.9027 10.8196 12 11.0556 12 11.3333C12 11.6111 11.9027 11.8471 11.708 12.0413C11.5138 12.236 11.2778 12.3333 11 12.3333C10.8444 12.3333 10.7029 12.3029 10.5753 12.242C10.4473 12.1807 10.3389 12.1 10.25 12H7.6C7.44444 12.7667 7.064 13.4029 6.45867 13.9087C5.85289 14.414 5.14444 14.6667 4.33333 14.6667ZM11 14.6667C10.3778 14.6667 9.814 14.5138 9.30867 14.208C8.80289 13.9027 8.40556 13.5 8.11667 13H9.9C10.0556 13.1111 10.2278 13.1944 10.4167 13.25C10.6056 13.3056 10.8 13.3333 11 13.3333C11.5556 13.3333 12.0278 13.1389 12.4167 12.75C12.8056 12.3611 13 11.8889 13 11.3333C13 10.7778 12.8056 10.3056 12.4167 9.91667C12.0278 9.52778 11.5556 9.33333 11 9.33333C10.7778 9.33333 10.5722 9.36378 10.3833 9.42467C10.1944 9.486 10.0167 9.57778 9.85 9.7L7.81667 6.31667C7.58333 6.27222 7.38889 6.16111 7.23333 5.98333C7.07778 5.80556 7 5.58889 7 5.33333C7 5.05556 7.09733 4.81956 7.292 4.62533C7.48622 4.43067 7.72222 4.33333 8 4.33333C8.27778 4.33333 8.51378 4.43067 8.708 4.62533C8.90267 4.81956 9 5.05556 9 5.33333V5.47533C9 5.514 8.98889 5.56111 8.96667 5.61667L10.4167 8.05C10.5056 8.02778 10.6 8.01378 10.7 8.008C10.8 8.00267 10.9 8 11 8C11.9222 8 12.7084 8.32489 13.3587 8.97467C14.0084 9.62489 14.3333 10.4111 14.3333 11.3333C14.3333 12.2556 14.0084 13.0418 13.3587 13.692C12.7084 14.3418 11.9222 14.6667 11 14.6667ZM4.33333 12.3333C4.05556 12.3333 3.81956 12.236 3.62533 12.0413C3.43067 11.8471 3.33333 11.6111 3.33333 11.3333C3.33333 11.0889 3.41111 10.8778 3.56667 10.7C3.72222 10.5222 3.91111 10.4056 4.13333 10.35L5.7 7.75C5.37778 7.45 5.12511 7.09156 4.942 6.67467C4.75844 6.25822 4.66667 5.81111 4.66667 5.33333C4.66667 4.41111 4.99178 3.62511 5.642 2.97533C6.29178 2.32511 7.07778 2 8 2C8.92222 2 9.70844 2.32511 10.3587 2.97533C11.0084 3.62511 11.3333 4.41111 11.3333 5.33333H10C10 4.77778 9.80556 4.30556 9.41667 3.91667C9.02778 3.52778 8.55555 3.33333 8 3.33333C7.44444 3.33333 6.97222 3.52778 6.58333 3.91667C6.19444 4.30556 6 4.77778 6 5.33333C6 5.81111 6.14444 6.23044 6.43333 6.59133C6.72222 6.95267 7.08889 7.18333 7.53333 7.28333L5.28333 11.0333C5.30556 11.0889 5.31956 11.1389 5.32533 11.1833C5.33067 11.2278 5.33333 11.2778 5.33333 11.3333C5.33333 11.6111 5.236 11.8471 5.04133 12.0413C4.84711 12.236 4.61111 12.3333 4.33333 12.3333Z\",\n});\n\nexport const LightModeIcon = createIcon({\n  displayName: \"LightModeIcon\",\n  viewBox: \"0 0 32 32\",\n  d: \"M16 2a1.4 1.4 0 011.4 1.4v1.4a1.4 1.4 0 11-2.8 0V3.4A1.4 1.4 0 0116 2zM6.1 6.1a1.4 1.4 0 011.98 0l.99.99a1.4 1.4 0 11-1.98 1.98l-.99-.99a1.4 1.4 0 010-1.98zm19.8 0a1.4 1.4 0 010 1.98l-.99.99a1.4 1.4 0 01-1.98-1.98l.99-.99a1.4 1.4 0 011.98 0zM9 16a7 7 0 1114 0 7 7 0 01-14 0zm-7 0a1.4 1.4 0 011.4-1.4h1.4a1.4 1.4 0 110 2.8H3.4A1.4 1.4 0 012 16zm23.8 0a1.4 1.4 0 011.4-1.4h1.4a1.4 1.4 0 110 2.8h-1.4a1.4 1.4 0 01-1.4-1.4zm-2.87 6.93a1.4 1.4 0 011.98 0l.99.99a1.4 1.4 0 01-1.98 1.98l-.99-.99a1.4 1.4 0 010-1.98zm-15.84 0a1.4 1.4 0 011.98 1.98l-.99.99a1.4 1.4 0 01-1.98-1.98l.99-.99zM16 25.8a1.4 1.4 0 011.4 1.4v1.4a1.4 1.4 0 11-2.8 0v-1.4a1.4 1.4 0 011.4-1.4z\",\n});\n\nexport const DarkModeIcon = createIcon({\n  displayName: \"DarkModeIcon\",\n  viewBox: \"0 0 32 32\",\n  d: \"M9.353 2.939a1 1 0 01.22 1.08 8 8 0 0010.408 10.408 1 1 0 011.301 1.3A10.003 10.003 0 0112 22C6.477 22 2 17.523 2 12c0-4.207 2.598-7.805 6.273-9.282a1 1 0 011.08.22z\",\n});\n\nexport const LanguageIcon = (props: any) => {\n  return (\n    <svg\n      width={props.size}\n      height={props.size}\n      viewBox=\"0 0 21 20\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g clipPath=\"url(#clip0_9454_14004)\">\n        <path\n          fillRule=\"evenodd\"\n          clipRule=\"evenodd\"\n          d=\"M11.3758 15.6395C11.9201 14.3578 12.293 12.4828 12.293 10.3333C12.293 8.18388 11.9201 6.30884 11.3758 5.02714C11.1024 4.38343 10.8153 3.95903 10.573 3.71771C10.456 3.60122 10.3677 3.54554 10.316 3.52063C10.291 3.50857 10.2748 3.50379 10.2668 3.5019C10.2593 3.50009 10.2556 3.5 10.2538 3.5C10.252 3.5 10.2483 3.50009 10.2408 3.5019C10.2329 3.50379 10.2167 3.50857 10.1916 3.52063C10.1399 3.54554 10.0516 3.60122 9.93467 3.71771C9.69236 3.95903 9.40524 4.38343 9.13185 5.02714C8.58751 6.30884 8.2146 8.18388 8.2146 10.3333C8.2146 12.4828 8.58751 14.3578 9.13185 15.6395C9.40524 16.2832 9.69236 16.7076 9.93467 16.949C10.0516 17.0654 10.1399 17.1211 10.1916 17.146C10.2167 17.1581 10.2329 17.1629 10.2408 17.1648C10.2483 17.1666 10.252 17.1667 10.2538 17.1667C10.2556 17.1667 10.2593 17.1666 10.2668 17.1648C10.2748 17.1629 10.291 17.1581 10.316 17.146C10.3677 17.1211 10.456 17.0654 10.573 16.949C10.8153 16.7076 11.1024 16.2832 11.3758 15.6395ZM10.2538 18.6667C12.2085 18.6667 13.793 14.9357 13.793 10.3333C13.793 5.73096 12.2085 2 10.2538 2C8.29916 2 6.7146 5.73096 6.7146 10.3333C6.7146 14.9357 8.29916 18.6667 10.2538 18.6667Z\"\n          fill={props.color}\n        />\n        <path\n          fillRule=\"evenodd\"\n          clipRule=\"evenodd\"\n          d=\"M10.2538 17.1667C14.0278 17.1667 17.0872 14.1073 17.0872 10.3333C17.0872 6.55939 14.0278 3.5 10.2538 3.5C6.47987 3.5 3.42053 6.55939 3.42053 10.3333C3.42053 14.1073 6.47987 17.1667 10.2538 17.1667ZM10.2538 18.6667C14.8562 18.6667 18.5872 14.9357 18.5872 10.3333C18.5872 5.73096 14.8562 2 10.2538 2C5.65144 2 1.92053 5.73096 1.92053 10.3333C1.92053 14.9357 5.65144 18.6667 10.2538 18.6667Z\"\n          fill={props.color}\n        />\n        <path\n          fillRule=\"evenodd\"\n          clipRule=\"evenodd\"\n          d=\"M17.7327 10.9424H2.87878V9.44244H17.7327V10.9424Z\"\n          fill={props.color}\n        />\n      </g>\n      <defs>\n        <clipPath id=\"clip0_9454_14004\">\n          <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0.253906)\" />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n};\n\nexport const GithubIcon = createIcon({\n  displayName: \"GithubIcon\",\n  viewBox: \"0 0 20 20\",\n  d: \"M9.99996 1.66663C5.39579 1.66663 1.66663 5.39579 1.66663 9.99996C1.66568 11.7494 2.21564 13.4546 3.23847 14.8739C4.26131 16.2931 5.70508 17.3542 7.36496 17.9066C7.78163 17.9791 7.93746 17.7291 7.93746 17.51C7.93746 17.3125 7.92663 16.6566 7.92663 15.9583C5.83329 16.3441 5.29163 15.4483 5.12496 14.9791C5.03079 14.7391 4.62496 14 4.27079 13.8016C3.97913 13.6458 3.56246 13.26 4.25996 13.25C4.91663 13.2391 5.38496 13.8541 5.54163 14.1041C6.29163 15.3641 7.48996 15.01 7.96829 14.7916C8.04163 14.25 8.25996 13.8858 8.49996 13.6775C6.64579 13.4691 4.70829 12.75 4.70829 9.56246C4.70829 8.65579 5.03079 7.90663 5.56246 7.32246C5.47913 7.11413 5.18746 6.25996 5.64579 5.11413C5.64579 5.11413 6.34329 4.89579 7.93746 5.96913C8.61585 5.78084 9.31677 5.68608 10.0208 5.68746C10.7291 5.68746 11.4375 5.78079 12.1041 5.96829C13.6975 4.88496 14.3958 5.11496 14.3958 5.11496C14.8541 6.26079 14.5625 7.11496 14.4791 7.32329C15.01 7.90663 15.3333 8.64579 15.3333 9.56246C15.3333 12.7608 13.3858 13.4691 11.5316 13.6775C11.8333 13.9375 12.0941 14.4375 12.0941 15.2191C12.0941 16.3333 12.0833 17.2291 12.0833 17.5108C12.0833 17.7291 12.24 17.9891 12.6566 17.9058C14.3108 17.3473 15.7482 16.2841 16.7665 14.8659C17.7849 13.4477 18.3328 11.7459 18.3333 9.99996C18.3333 5.39579 14.6041 1.66663 9.99996 1.66663Z\",\n});\n\nexport const WechatIcon = createIcon({\n  displayName: \"WechatIcon\",\n  viewBox: \"0 0 22 24\",\n  d: \"M18.574 13.711C18.8112 13.7079 19.0378 13.6123 19.2055 13.4445C19.3733 13.2768 19.4689 13.0502 19.472 12.813C19.472 12.315 19.073 11.915 18.574 11.915C18.075 11.915 17.676 12.315 17.676 12.813C17.676 13.313 18.076 13.711 18.574 13.711ZM14.149 13.711C14.3862 13.7079 14.6128 13.6123 14.7805 13.4445C14.9483 13.2768 15.0439 13.0502 15.047 12.813C15.047 12.315 14.647 11.915 14.149 11.915C13.649 11.915 13.251 12.315 13.251 12.813C13.251 13.313 13.65 13.711 14.149 13.711ZM20.716 18.751C20.6519 18.7866 20.6008 18.8416 20.5699 18.908C20.539 18.9745 20.5299 19.0491 20.544 19.121C20.544 19.169 20.544 19.218 20.569 19.268C20.667 19.685 20.863 20.349 20.863 20.374C20.863 20.447 20.888 20.496 20.888 20.546C20.888 20.575 20.8823 20.6037 20.8712 20.6304C20.86 20.6572 20.8437 20.6815 20.8232 20.7019C20.8027 20.7224 20.7783 20.7385 20.7515 20.7495C20.7247 20.7605 20.696 20.7661 20.667 20.766C20.617 20.766 20.593 20.742 20.544 20.718L19.095 19.882C18.9892 19.8238 18.8716 19.7903 18.751 19.784C18.678 19.784 18.604 19.784 18.555 19.808C17.867 20.005 17.155 20.103 16.394 20.103C12.734 20.103 9.787 17.646 9.787 14.598C9.787 11.551 12.734 9.093 16.394 9.093C20.053 9.093 23 11.551 23 14.598C23 16.245 22.116 17.744 20.716 18.752V18.751ZM16.673 8.099C16.5797 8.0959 16.4864 8.09423 16.393 8.094C12.219 8.094 8.787 10.954 8.787 14.599C8.787 15.153 8.867 15.689 9.015 16.199H8.926C8.05226 16.1902 7.18347 16.0664 6.342 15.831C6.268 15.806 6.194 15.806 6.12 15.806C5.97221 15.8091 5.82793 15.8516 5.702 15.929L3.954 16.934C3.904 16.959 3.855 16.984 3.806 16.984C3.73463 16.9832 3.66641 16.9545 3.61594 16.9041C3.56548 16.8536 3.53678 16.7854 3.536 16.714C3.536 16.64 3.56 16.591 3.585 16.517C3.609 16.493 3.831 15.683 3.954 15.193C3.954 15.143 3.978 15.07 3.978 15.021C3.97773 14.9353 3.95764 14.8508 3.9193 14.7741C3.88097 14.6974 3.82542 14.6307 3.757 14.579C2.058 13.376 1 11.586 1 9.598C1 5.945 4.57 3 8.95 3C12.715 3 15.88 5.169 16.673 8.098V8.099ZM11.519 8.517C12.092 8.517 12.545 8.04 12.545 7.491C12.545 6.918 12.092 6.465 11.519 6.465C10.946 6.465 10.493 6.918 10.493 7.491C10.493 8.064 10.946 8.517 11.519 8.517ZM6.259 8.517C6.832 8.517 7.286 8.04 7.286 7.491C7.286 6.918 6.832 6.465 6.259 6.465C5.687 6.465 5.233 6.918 5.233 7.491C5.233 8.064 5.687 8.517 6.259 8.517Z\",\n});\n\nexport const ForumIcon = createIcon({\n  displayName: \"ForumIcon\",\n  viewBox: \"0 0 24 24\",\n  d: \"M13.6228 19.7399C13.0966 19.8365 12.5542 19.8869 12.0001 19.8869C7.06474 19.8869 3.06384 15.886 3.06384 10.9507C3.06384 6.0153 7.06474 2.0144 12.0001 2.0144C16.9354 2.0144 20.9363 6.0153 20.9363 10.9507C20.9363 13.948 19.4606 16.6007 17.1962 18.2218L14.312 21.9195C14.2207 22.0365 14.0341 21.9907 14.0074 21.8447L13.6228 19.7399ZM9.3375 7.88363C8.97081 7.88363 8.62735 8.06321 8.41812 8.36435L6.63897 10.9249L6.62574 10.9318L6.62997 10.9379L6.62574 10.944L6.63897 10.9508L8.41844 13.5115C8.62768 13.8126 8.9711 13.9921 9.33777 13.9921L10.7393 13.9921L9.1522 10.9379L10.7393 7.88363H9.3375ZM13.9095 14.0177C13.3236 14.0177 12.8487 13.5428 12.8487 12.957C12.8487 12.3711 13.3236 11.8962 13.9095 11.8962H16.3137C16.8995 11.8962 17.3744 12.3711 17.3744 12.957C17.3744 13.5428 16.8995 14.0177 16.3137 14.0177H13.9095Z\",\n});\n\nexport const DiscordIcon = createIcon({\n  displayName: \"DiscordIcon\",\n  viewBox: \"0 0 24 24\",\n  d: \"M15.0831 17.7969C14.8161 17.862 14.5475 17.9197 14.2773 17.97C12.8114 18.2459 11.3063 18.2403 9.84252 17.9534C9.58615 17.9034 9.22324 17.8152 8.75545 17.6903L7.22224 19.683C3.43832 19.5615 2 17.0261 2 17.0261C2 11.3977 4.46546 6.83466 4.46546 6.83466C6.93091 4.94853 9.27651 5.00014 9.27651 5.00014L9.9474 5.87412C10.0092 5.86545 10.0715 5.8599 10.1338 5.85747C11.4127 5.68795 12.7087 5.69356 13.986 5.87412L14.7218 5.00014C14.7218 5.00014 17.0691 4.94853 19.5329 6.83633C19.5329 6.83633 22 11.3977 22 17.0261C22 17.0261 20.5434 19.5598 16.7594 19.683L15.0831 17.7969ZM8.69356 11.8369C7.69307 11.8369 6.90232 12.586 6.90232 13.5016C6.90232 14.4172 7.70971 15.1664 8.69356 15.1664C9.6924 15.1664 10.4831 14.4172 10.4831 13.5016C10.4998 12.586 9.69406 11.8369 8.69356 11.8369ZM15.0994 11.8369C14.1006 11.8369 13.3098 12.586 13.3098 13.5016C13.3098 14.4172 14.1172 15.1664 15.0994 15.1664C16.0999 15.1664 16.8907 14.4172 16.8907 13.5016C16.8907 12.586 16.0999 11.8369 15.0994 11.8369Z\",\n});\n\nexport const MenuIcon = createIcon({\n  displayName: \"MenuIcon\",\n  viewBox: \"0 0 24 24\",\n  d: \"M3 4H21V6H3V4ZM3 11H21V13H3V11ZM3 18H21V20H3V18Z\",\n});\n\nexport const PhoneIcon = createIcon({\n  displayName: \"PhoneIcon\",\n  viewBox: \"0 0 6 10\",\n  d: \"M2.16683 8.33329H3.8335V7.91663H2.16683V8.33329ZM0.91683 9.58329C0.687663 9.58329 0.491413 9.50163 0.32808 9.33829C0.164747 9.17496 0.083219 8.97885 0.0834968 8.74996V1.24996C0.0834968 1.02079 0.165163 0.824543 0.328497 0.66121C0.49183 0.497877 0.687941 0.416349 0.91683 0.416627H5.0835C5.31266 0.416627 5.50891 0.498293 5.67225 0.661627C5.83558 0.82496 5.91711 1.02107 5.91683 1.24996V8.74996C5.91683 8.97913 5.83516 9.17538 5.67183 9.33871C5.5085 9.50204 5.31239 9.58357 5.0835 9.58329H0.91683ZM0.91683 6.66663H5.0835V2.49996H0.91683V6.66663Z\",\n});\n\nexport const MarketIcon = createIcon({\n  displayName: \"MarketIcon\",\n  viewBox: \"0 0 21 20\",\n  d: \"M10.2539 20C8.87057 20 7.57057 19.7375 6.35391 19.2125C5.13724 18.6875 4.07891 17.975 3.17891 17.075C2.27891 16.175 1.56641 15.1167 1.04141 13.9C0.516406 12.6833 0.253906 11.3833 0.253906 10C0.253906 8.61667 0.516406 7.31667 1.04141 6.1C1.56641 4.88333 2.27891 3.825 3.17891 2.925C4.07891 2.025 5.13724 1.3125 6.35391 0.7875C7.57057 0.2625 8.87057 0 10.2539 0C12.6872 0 14.8164 0.7625 16.6414 2.2875C18.4664 3.8125 19.6039 5.725 20.0539 8.025H18.0039C17.6872 6.80833 17.1164 5.72083 16.2914 4.7625C15.4664 3.80417 14.4539 3.08333 13.2539 2.6V3C13.2539 3.55 13.0581 4.02083 12.6664 4.4125C12.2747 4.80417 11.8039 5 11.2539 5H9.25391V7C9.25391 7.28333 9.15807 7.52083 8.96641 7.7125C8.77474 7.90417 8.53724 8 8.25391 8H6.25391V10H8.25391V13H7.25391L2.45391 8.2C2.40391 8.5 2.35807 8.8 2.31641 9.1C2.27474 9.4 2.25391 9.7 2.25391 10C2.25391 12.1833 3.02057 14.0583 4.55391 15.625C6.08724 17.1917 7.98724 17.9833 10.2539 18V20ZM19.3539 19.5L16.1539 16.3C15.8039 16.5 15.4289 16.6667 15.0289 16.8C14.6289 16.9333 14.2039 17 13.7539 17C12.5039 17 11.4414 16.5625 10.5664 15.6875C9.69141 14.8125 9.25391 13.75 9.25391 12.5C9.25391 11.25 9.69141 10.1875 10.5664 9.3125C11.4414 8.4375 12.5039 8 13.7539 8C15.0039 8 16.0664 8.4375 16.9414 9.3125C17.8164 10.1875 18.2539 11.25 18.2539 12.5C18.2539 12.95 18.1872 13.375 18.0539 13.775C17.9206 14.175 17.7539 14.55 17.5539 14.9L20.7539 18.1L19.3539 19.5ZM13.7539 15C14.4539 15 15.0456 14.7583 15.5289 14.275C16.0122 13.7917 16.2539 13.2 16.2539 12.5C16.2539 11.8 16.0122 11.2083 15.5289 10.725C15.0456 10.2417 14.4539 10 13.7539 10C13.0539 10 12.4622 10.2417 11.9789 10.725C11.4956 11.2083 11.2539 11.8 11.2539 12.5C11.2539 13.2 11.4956 13.7917 11.9789 14.275C12.4622 14.7583 13.0539 15 13.7539 15Z\",\n});\n\nexport const FileIcon = createIcon({\n  displayName: \"FileIcon\",\n  viewBox: \"0 0 10 13\",\n  d: \"M6.16634 0.666656H1.49967C1.19026 0.666656 0.893509 0.789573 0.674717 1.00837C0.455924 1.22716 0.333008 1.5239 0.333008 1.83332V11.1667C0.333008 11.4761 0.455924 11.7728 0.674717 11.9916C0.893509 12.2104 1.19026 12.3333 1.49967 12.3333H8.49967C8.80909 12.3333 9.10584 12.2104 9.32463 11.9916C9.54343 11.7728 9.66634 11.4761 9.66634 11.1667V4.16666L6.16634 0.666656ZM8.49967 11.1667H1.49967V1.83332H5.58301V4.74999H8.49967V11.1667Z\",\n});\n\nexport const UserIcon = createIcon({\n  displayName: \"UserIcon\",\n  viewBox: \"0 0 20 20\",\n  d: \"M10 3.3335C10.8841 3.3335 11.7319 3.68469 12.3571 4.30981C12.9822 4.93493 13.3334 5.78277 13.3334 6.66683C13.3334 7.55088 12.9822 8.39873 12.3571 9.02385C11.7319 9.64897 10.8841 10.0002 10 10.0002C9.11599 10.0002 8.26814 9.64897 7.64302 9.02385C7.0179 8.39873 6.66671 7.55088 6.66671 6.66683C6.66671 5.78277 7.0179 4.93493 7.64302 4.30981C8.26814 3.68469 9.11599 3.3335 10 3.3335ZM10 5.00016C9.55801 5.00016 9.13409 5.17576 8.82153 5.48832C8.50897 5.80088 8.33337 6.2248 8.33337 6.66683C8.33337 7.10886 8.50897 7.53278 8.82153 7.84534C9.13409 8.1579 9.55801 8.3335 10 8.3335C10.4421 8.3335 10.866 8.1579 11.1786 7.84534C11.4911 7.53278 11.6667 7.10886 11.6667 6.66683C11.6667 6.2248 11.4911 5.80088 11.1786 5.48832C10.866 5.17576 10.4421 5.00016 10 5.00016ZM10 10.8335C12.225 10.8335 16.6667 11.9418 16.6667 14.1668V16.6668H3.33337V14.1668C3.33337 11.9418 7.77504 10.8335 10 10.8335ZM10 12.4168C7.52504 12.4168 4.91671 13.6335 4.91671 14.1668V15.0835H15.0834V14.1668C15.0834 13.6335 12.475 12.4168 10 12.4168Z\",\n});\n\nexport const LikeIcon = createIcon({\n  displayName: \"LikeIcon\",\n  viewBox: \"0 0 12 11\",\n  d: \"M5.99935 10.7499L5.15352 9.99161C4.17157 9.10689 3.35977 8.34369 2.7181 7.70203C2.07643 7.06036 1.56602 6.48422 1.18685 5.97361C0.807682 5.46339 0.542849 4.99439 0.392349 4.56661C0.241849 4.13883 0.166405 3.70133 0.166016 3.25411C0.166016 2.34022 0.472266 1.57703 1.08477 0.964526C1.69727 0.352026 2.46046 0.0457764 3.37435 0.0457764C3.8799 0.0457764 4.36115 0.152721 4.8181 0.36661C5.27504 0.580499 5.66879 0.881887 5.99935 1.27078C6.3299 0.881887 6.72365 0.580499 7.1806 0.36661C7.63754 0.152721 8.11879 0.0457764 8.62435 0.0457764C9.53824 0.0457764 10.3014 0.352026 10.9139 0.964526C11.5264 1.57703 11.8327 2.34022 11.8327 3.25411C11.8327 3.70133 11.7572 4.13883 11.6063 4.56661C11.4555 4.99439 11.1906 5.46339 10.8118 5.97361C10.4327 6.48422 9.92227 7.06036 9.2806 7.70203C8.63893 8.34369 7.82713 9.10689 6.84518 9.99161L5.99935 10.7499ZM5.99935 9.17494C6.93268 8.33883 7.70074 7.62172 8.30352 7.02361C8.90629 6.4255 9.38268 5.90555 9.73268 5.46378C10.0827 5.02122 10.3257 4.62728 10.4618 4.28194C10.598 3.93661 10.666 3.594 10.666 3.25411C10.666 2.67078 10.4716 2.18467 10.0827 1.79578C9.69379 1.40689 9.20768 1.21244 8.62435 1.21244C8.1674 1.21244 7.74449 1.34117 7.3556 1.59861C6.96671 1.85605 6.69935 2.18428 6.55352 2.58328H5.44518C5.29935 2.18467 5.03199 1.85644 4.6431 1.59861C4.25421 1.34078 3.83129 1.21205 3.37435 1.21244C2.79102 1.21244 2.3049 1.40689 1.91602 1.79578C1.52713 2.18467 1.33268 2.67078 1.33268 3.25411C1.33268 3.59439 1.40074 3.93719 1.53685 4.28253C1.67296 4.62786 1.91602 5.02161 2.26602 5.46378C2.61602 5.90594 3.0924 6.42608 3.69518 7.02419C4.29796 7.6223 5.06602 8.33922 5.99935 9.17494Z\",\n});\n\nexport const TextIcon = createIcon({\n  displayName: \"TextIcon\",\n  viewBox: \"0 0 13 12\",\n  d: \"M2.92057 9.33333H7.58724V8H2.92057V9.33333ZM2.92057 6.66667H9.58724V5.33333H2.92057V6.66667ZM2.92057 4H9.58724V2.66667H2.92057V4ZM1.58724 12C1.22057 12 0.906684 11.8694 0.645573 11.6083C0.384462 11.3472 0.253906 11.0333 0.253906 10.6667V1.33333C0.253906 0.966667 0.384462 0.652778 0.645573 0.391667C0.906684 0.130556 1.22057 0 1.58724 0H10.9206C11.2872 0 11.6011 0.130556 11.8622 0.391667C12.1234 0.652778 12.2539 0.966667 12.2539 1.33333V10.6667C12.2539 11.0333 12.1234 11.3472 11.8622 11.6083C11.6011 11.8694 11.2872 12 10.9206 12H1.58724ZM1.58724 10.6667H10.9206V1.33333H1.58724V10.6667Z\",\n});\n\nexport const HeartIcon = createIcon({\n  displayName: \"HeartIcon\",\n  viewBox: \"0 0 14 13\",\n  d: \"M6.77409 12.9999L5.80742 12.1333C4.6852 11.1222 3.75742 10.2499 3.02409 9.5166C2.29076 8.78327 1.70742 8.12482 1.27409 7.54127C0.840755 6.95816 0.538089 6.42216 0.366089 5.93327C0.194089 5.44438 0.107866 4.94438 0.107422 4.43327C0.107422 3.38882 0.457422 2.5166 1.15742 1.8166C1.85742 1.1166 2.72964 0.766602 3.77409 0.766602C4.35187 0.766602 4.90187 0.888824 5.42409 1.13327C5.94631 1.37771 6.39631 1.72216 6.77409 2.1666C7.15187 1.72216 7.60187 1.37771 8.12409 1.13327C8.64631 0.888824 9.19631 0.766602 9.77409 0.766602C10.8185 0.766602 11.6908 1.1166 12.3908 1.8166C13.0908 2.5166 13.4408 3.38882 13.4408 4.43327C13.4408 4.94438 13.3545 5.44438 13.1821 5.93327C13.0096 6.42216 12.707 6.95816 12.2741 7.54127C11.8408 8.12482 11.2574 8.78327 10.5241 9.5166C9.79076 10.2499 8.86298 11.1222 7.74076 12.1333L6.77409 12.9999ZM6.77409 11.1999C7.84076 10.2444 8.71853 9.42482 9.40742 8.74127C10.0963 8.05771 10.6408 7.46349 11.0408 6.9586C11.4408 6.45282 11.7185 6.0026 11.8741 5.60794C12.0296 5.21327 12.1074 4.82171 12.1074 4.43327C12.1074 3.7666 11.8852 3.21105 11.4408 2.7666C10.9963 2.32216 10.4408 2.09993 9.77409 2.09993C9.25187 2.09993 8.76853 2.24705 8.32409 2.54127C7.87964 2.83549 7.57409 3.2106 7.40742 3.6666H6.14076C5.97409 3.21105 5.66853 2.83593 5.22409 2.54127C4.77964 2.2466 4.29631 2.09949 3.77409 2.09993C3.10742 2.09993 2.55187 2.32216 2.10742 2.7666C1.66298 3.21105 1.44076 3.7666 1.44076 4.43327C1.44076 4.82216 1.51853 5.21394 1.67409 5.6086C1.82964 6.00327 2.10742 6.45327 2.50742 6.9586C2.90742 7.46394 3.45187 8.05838 4.14076 8.74193C4.82964 9.42549 5.70742 10.2448 6.77409 11.1999Z\",\n});\n\nexport const TimeIcon = createIcon({\n  displayName: \"TimeIcon\",\n  viewBox: \"0 0 13 12\",\n  d: \"M6.25391 12C5.42057 12 4.64013 11.8418 3.91257 11.5253C3.18457 11.2084 2.55124 10.7804 2.01257 10.2413C1.47346 9.70267 1.04546 9.06933 0.728573 8.34133C0.412128 7.61378 0.253906 6.83333 0.253906 6C0.253906 5.16667 0.412128 4.386 0.728573 3.658C1.04546 2.93044 1.47346 2.29711 2.01257 1.758C2.55124 1.21933 3.18457 0.791556 3.91257 0.474667C4.64013 0.158222 5.42057 0 6.25391 0C7.16502 0 8.02902 0.194444 8.84591 0.583333C9.66235 0.972222 10.3539 1.52222 10.9206 2.23333V0.666667H12.2539V4.66667H8.25391V3.33333H10.0872C9.63168 2.71111 9.07057 2.22222 8.40391 1.86667C7.73724 1.51111 7.02057 1.33333 6.25391 1.33333C4.95391 1.33333 3.85124 1.786 2.94591 2.69133C2.04013 3.59711 1.58724 4.7 1.58724 6C1.58724 7.3 2.04013 8.40267 2.94591 9.308C3.85124 10.2138 4.95391 10.6667 6.25391 10.6667C7.42057 10.6667 8.43991 10.2889 9.31191 9.53333C10.1844 8.77778 10.6984 7.82222 10.8539 6.66667H12.2206C12.0539 8.18889 11.4012 9.45822 10.2626 10.4747C9.12346 11.4916 7.78724 12 6.25391 12ZM8.12057 8.8L5.58724 6.26667V2.66667H6.92057V5.73333L9.05391 7.86667L8.12057 8.8Z\",\n});\n\nexport const FilledHeartIcon = createIcon({\n  displayName: \"FilledHeartIcon\",\n  viewBox: \"0 0 15 13\",\n  d: \"M7.52018 12.9999L6.55352 12.1333C5.43129 11.1222 4.50352 10.2499 3.77018 9.5166C3.03685 8.78327 2.45352 8.12482 2.02018 7.54127C1.58685 6.95816 1.28418 6.42216 1.11218 5.93327C0.940182 5.44438 0.85396 4.94438 0.853516 4.43327C0.853516 3.38882 1.20352 2.5166 1.90352 1.8166C2.60352 1.1166 3.47574 0.766602 4.52018 0.766602C5.09796 0.766602 5.64796 0.888824 6.17018 1.13327C6.6924 1.37771 7.14241 1.72216 7.52018 2.1666C7.89796 1.72216 8.34796 1.37771 8.87018 1.13327C9.3924 0.888824 9.9424 0.766602 10.5202 0.766602C11.5646 0.766602 12.4368 1.1166 13.1368 1.8166C13.8368 2.5166 14.1868 3.38882 14.1868 4.43327C14.1868 4.94438 14.1006 5.44438 13.9282 5.93327C13.7557 6.42216 13.4531 6.95816 13.0202 7.54127C12.5868 8.12482 12.0035 8.78327 11.2702 9.5166C10.5368 10.2499 9.60907 11.1222 8.48685 12.1333L7.52018 12.9999Z\",\n});\n\nexport const RocketIcon = () => {\n  return (\n    <svg width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g clipPath=\"url(#clip0_8723_8368)\">\n        <path\n          fillRule=\"evenodd\"\n          clipRule=\"evenodd\"\n          d=\"M12.11 2.3434L12.28 2.36473C12.7293 2.42673 13.324 2.51006 13.6606 2.8474C13.9366 3.12273 14.0426 3.57073 14.106 3.97073L14.1433 4.22806C14.2273 4.83473 14.2493 5.6294 14.106 6.51206C13.8233 8.25406 12.896 10.3327 10.5673 11.9421C10.5546 12.0674 10.554 12.1941 10.5566 12.3207L10.5633 12.5101C10.574 12.8014 10.5846 13.0921 10.5033 13.3754C10.3766 13.8154 9.9253 14.1054 9.5033 14.3134L9.29664 14.4114L9.02997 14.5287C8.5313 14.7407 7.85797 14.9581 7.43597 14.5354C7.18264 14.2827 7.07864 13.9121 6.99397 13.5434L6.96264 13.4054C6.92734 13.2312 6.88283 13.0589 6.8293 12.8894C6.79597 12.7921 6.75997 12.6927 6.7213 12.5927C6.67875 12.645 6.63358 12.695 6.58597 12.7427C6.35597 12.9727 6.01264 13.1334 5.72997 13.2461C5.4213 13.3681 5.07197 13.4747 4.74864 13.5627L4.58264 13.6067L4.26464 13.6861L3.97664 13.7527L3.63197 13.8261L3.41664 13.8681C3.30924 13.8879 3.19863 13.8814 3.09432 13.849C2.99002 13.8166 2.89516 13.7593 2.81793 13.6821C2.7407 13.6049 2.68342 13.51 2.65102 13.4057C2.61863 13.3014 2.61209 13.1908 2.63197 13.0834L2.6893 12.7961L2.79197 12.3307L2.87464 11.9907L2.9373 11.7507C3.0253 11.4281 3.13197 11.0787 3.25464 10.7707C3.36664 10.4874 3.5273 10.1441 3.7573 9.91406L3.81064 9.86273L3.76797 9.8454C3.65404 9.80208 3.53863 9.76272 3.42197 9.7274L3.2373 9.67073C2.77464 9.53073 2.27997 9.38006 1.97264 9.07206C1.5993 8.6994 1.7253 8.13206 1.9053 7.66006L1.97864 7.4774L2.09664 7.21073L2.19464 7.00406C2.40264 6.58273 2.69264 6.1314 3.13264 6.00473C3.36597 5.93806 3.60864 5.93406 3.85264 5.94073L3.9993 5.9454C4.18997 5.95206 4.37997 5.9594 4.56597 5.9414C6.1753 3.61206 8.25397 2.68473 9.99597 2.40206C10.6948 2.28745 11.4059 2.26771 12.11 2.3434ZM5.56864 10.7934C5.46371 10.7157 5.33831 10.6706 5.20797 10.6634C5.07762 10.6563 4.94805 10.6876 4.8353 10.7534L4.76197 10.8027L4.69997 10.8581L4.61664 10.9634C4.4433 11.2141 4.34464 11.5607 4.26797 11.8847L4.19597 12.1967L4.16197 12.3387L4.2893 12.3081L4.56797 12.2441C4.9533 12.1541 5.38064 12.0374 5.6433 11.8007C5.75751 11.6866 5.82641 11.5349 5.8372 11.3738C5.84799 11.2126 5.79994 11.0531 5.70197 10.9247L5.6473 10.8621L5.6313 10.8467L5.56864 10.7934ZM10.3573 6.14406C10.2335 6.02023 10.0865 5.92199 9.92478 5.85495C9.76302 5.78791 9.58964 5.75339 9.41454 5.75336C9.23944 5.75333 9.06605 5.78779 8.90426 5.85477C8.74248 5.92175 8.59547 6.01994 8.47164 6.14373C8.3478 6.26752 8.24956 6.41449 8.18252 6.57625C8.11549 6.73801 8.08097 6.91139 8.08094 7.08649C8.0809 7.26159 8.11536 7.43499 8.18234 7.59677C8.24932 7.75855 8.34751 7.90556 8.4713 8.0294C8.72131 8.2795 9.06044 8.42003 9.41407 8.4201C9.7677 8.42016 10.1069 8.27974 10.357 8.02973C10.6071 7.77972 10.7476 7.4406 10.7477 7.08697C10.7477 6.73333 10.6073 6.39416 10.3573 6.14406Z\"\n          fill=\"#00A9A6\"\n        />\n      </g>\n      <defs>\n        <clipPath id=\"clip0_8723_8368\">\n          <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.5)\" />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n};\n\nexport const LafAILogoIcon = (props: any) => {\n  return (\n    <svg\n      width={24}\n      height={24}\n      viewBox=\"0 0 16 17\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n    >\n      <path\n        d=\"M4.097 8.041c0-.522.424-.945.946-.945h.735c.523 0 .946.423.946.945v1.471a.946.946 0 01-.946.946h-.735a.946.946 0 01-.946-.946v-1.47zM10.191 7.096a.946.946 0 00-.945.945v1.471c0 .522.423.946.945.946h.736a.946.946 0 00.945-.946v-1.47a.946.946 0 00-.945-.946h-.736z\"\n        fill=\"#00A9A6\"\n      />\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M5.155.675l-.322.33 1.93 1.973.02.02H4.728c-1.915 0-3.467 1.61-3.467 3.596v.397H.63v.008a.168.168 0 00-.053-.008c-.32 0-.578.94-.578 2.1 0 1.161.259 2.102.578 2.102a.167.167 0 00.052-.008v.008h.63c.013 1.975 1.56 3.572 3.468 3.572h6.514c1.907 0 3.455-1.597 3.467-3.572h.63c.29 0 .526-.94.526-2.101 0-1.16-.236-2.101-.526-2.101h-.63v-.397c0-1.986-1.552-3.596-3.467-3.596H9.317l.02-.02L7.085.675a1.344 1.344 0 00-1.93 0zm6.087 4.004H4.728c-.93 0-1.786.8-1.786 1.915v4.576c0 1.115.857 1.914 1.786 1.914h6.514c.93 0 1.786-.799 1.786-1.914V6.594c0-1.116-.857-1.915-1.786-1.915z\"\n        fill=\"#00A9A6\"\n      />\n      <path\n        d=\"M8.694 1.004l-.322.33 1.287 1.315s.7-.569 1.017-1.044c.162-.241.356-.654.356-.654-.257.034-.508-.072-.737-.195a1.343 1.343 0 00-1.601.248zM5.941 16.867c-.728 0-1.318-.612-1.318-1.366h6.724c0 .754-.59 1.366-1.319 1.366H5.941z\"\n        fill=\"#00A9A6\"\n      />\n    </svg>\n  );\n};\n\nexport const LabelIcon = createIcon({\n  displayName: \"LabelIcon\",\n  viewBox: \"0 0 14 14\",\n  d: \"M8.50065 13.2665C8.2451 13.5221 7.92843 13.6499 7.55065 13.6499C7.17287 13.6499 6.85621 13.5221 6.60065 13.2665L0.733984 7.39987C0.611762 7.27765 0.51454 7.13321 0.442318 6.96654C0.370095 6.79987 0.333984 6.6221 0.333984 6.43321V1.66654C0.333984 1.29987 0.46454 0.985984 0.725651 0.724873C0.986762 0.463762 1.30065 0.333206 1.66732 0.333206H6.43398C6.62287 0.333206 6.80065 0.369317 6.96732 0.44154C7.13398 0.513762 7.27843 0.610984 7.40065 0.733206L13.2673 6.61654C13.5229 6.8721 13.6507 7.18598 13.6507 7.55821C13.6507 7.93043 13.5229 8.24432 13.2673 8.49987L8.50065 13.2665ZM7.55065 12.3332L12.3173 7.56654L6.43398 1.66654H1.66732V6.43321L7.55065 12.3332ZM3.33398 4.33321C3.61176 4.33321 3.84787 4.23598 4.04232 4.04154C4.23676 3.8471 4.33398 3.61098 4.33398 3.33321C4.33398 3.05543 4.23676 2.81932 4.04232 2.62487C3.84787 2.43043 3.61176 2.33321 3.33398 2.33321C3.05621 2.33321 2.8201 2.43043 2.62565 2.62487C2.43121 2.81932 2.33398 3.05543 2.33398 3.33321C2.33398 3.61098 2.43121 3.8471 2.62565 4.04154C2.8201 4.23598 3.05621 4.33321 3.33398 4.33321Z\",\n});\n\nexport const ContactIcon = createIcon({\n  displayName: \"ContactIcon\",\n  viewBox: \"0 0 20 20\",\n  d: \"M17.2832 9.42578V8.55664C17.2832 4.52734 14.0156 1.26172 9.98631 1.26172C5.95702 1.26172 2.68944 4.52734 2.68944 8.55664V9.42578C1.82811 10.3125 1.60936 11.6875 2.25975 12.8125C3.04295 14.1699 4.77928 14.6348 6.1367 13.8496C6.51366 13.6328 6.8203 13.3379 7.05272 13.002L4.49022 8.56836C4.29491 8.58398 4.09959 8.62109 3.90623 8.67773V8.55664C3.90623 5.20508 6.63475 2.47852 9.98631 2.47852C13.3379 2.47852 16.0664 5.20508 16.0664 8.55664V8.67773C15.873 8.62109 15.6777 8.58398 15.4824 8.56836L12.9219 13.0039C13.1543 13.3398 13.459 13.6328 13.8379 13.8516C14.1035 14.0039 14.3828 14.0957 14.666 14.1562C14.2265 15.4863 13.039 16.4707 11.6055 16.6309C11.5879 16.1992 11.2344 15.8535 10.7969 15.8535H9.17577C8.7285 15.8535 8.36522 16.2168 8.36522 16.6641C8.36522 17.1113 8.7285 17.4746 9.17577 17.4746H10.7969C11.1074 17.4746 11.373 17.2988 11.5098 17.0449C13.1933 16.918 14.5937 15.7734 15.0762 14.2168C16.1172 14.2832 17.1562 13.7793 17.7129 12.8145C18.3633 11.6895 18.1445 10.3145 17.2832 9.42578Z\",\n});\n\nexport const DraftIcon = () => {\n  return (\n    <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M11.6649 7.29989L10.4807 6.11564C10.4066 6.04163 10.3063 6.00006 10.2016 6.00006C10.0969 6.00006 9.99652 6.04163 9.9225 6.11564L6.25407 9.78407V11.5265H7.9965L11.6649 7.85807C11.7389 7.78405 11.7805 7.68366 11.7805 7.57898C11.7805 7.47431 11.7389 7.37392 11.6649 7.29989ZM7.66965 10.737H7.04357V10.1109L9.01733 8.13716L9.64341 8.76324L7.66965 10.737ZM10.2016 8.20506L9.57551 7.57898L10.2016 6.95291L10.8277 7.57898L10.2016 8.20506ZM3.09605 5.99998H7.04357V6.78948H3.09605V5.99998ZM3.09605 3.63146H7.83307V4.42097H3.09605V3.63146Z\"\n        fill=\"#5A646E\"\n      />\n      <path\n        d=\"M10.2016 1.26295C10.2014 1.05363 10.1181 0.852936 9.97011 0.704921C9.8221 0.556905 9.62141 0.473659 9.41208 0.47345H1.51705C1.30772 0.473659 1.10703 0.556905 0.959013 0.704921C0.810997 0.852936 0.727751 1.05363 0.727542 1.26295V6.39473C0.726662 7.182 0.940202 7.95465 1.34524 8.62973C1.75028 9.30482 2.33152 9.85686 3.02658 10.2266L5.06981 11.3161V10.4212L3.39843 9.52985C2.82973 9.22734 2.35414 8.77569 2.02269 8.22336C1.69123 7.67103 1.51643 7.03888 1.51705 6.39473V1.26295H9.41208V4.81572H10.2016V1.26295Z\"\n        fill=\"#5A646E\"\n      />\n    </svg>\n  );\n};\n\nexport const RecommendIcon = createIcon({\n  displayName: \"RecommendIcon\",\n  viewBox: \"0 0 15 15\",\n  d: \"M13.6667 6.66667L13.25 5.75L12.3333 5.33333L13.25 4.91667L13.6667 4L14.0833 4.91667L15 5.33333L14.0833 5.75L13.6667 6.66667ZM11.6667 4L11.0333 2.63333L9.66667 2L11.0333 1.36667L11.6667 0L12.3 1.36667L13.6667 2L12.3 2.63333L11.6667 4ZM5 14.6667C4.63333 14.6667 4.31933 14.536 4.058 14.2747C3.79667 14.0133 3.66622 13.6996 3.66667 13.3333H6.33333C6.33333 13.7 6.20267 14.014 5.94133 14.2753C5.68 14.5367 5.36622 14.6671 5 14.6667ZM2.33333 12.6667V11.3333H7.66667V12.6667H2.33333ZM2.5 10.6667C1.73333 10.2111 1.12489 9.6 0.674667 8.83333C0.224445 8.06667 -0.000443787 7.23333 6.57462e-07 6.33333C6.57462e-07 4.94444 0.486223 3.76378 1.45867 2.79133C2.43111 1.81889 3.61156 1.33289 5 1.33333C6.38889 1.33333 7.56956 1.81956 8.542 2.792C9.51444 3.76444 10.0004 4.94489 10 6.33333C10 7.23333 9.77511 8.06667 9.32533 8.83333C8.87556 9.6 8.26711 10.2111 7.5 10.6667H2.5ZM2.9 9.33333H7.1C7.6 8.97778 7.98622 8.53889 8.25867 8.01667C8.53111 7.49444 8.66711 6.93333 8.66667 6.33333C8.66667 5.31111 8.31111 4.44444 7.6 3.73333C6.88889 3.02222 6.02222 2.66667 5 2.66667C3.97778 2.66667 3.11111 3.02222 2.4 3.73333C1.68889 4.44444 1.33333 5.31111 1.33333 6.33333C1.33333 6.93333 1.46933 7.49444 1.74133 8.01667C2.01333 8.53889 2.39956 8.97778 2.9 9.33333Z\",\n});\n\nexport const AutoScalingIcon = createIcon({\n  displayName: \"AutoScalingIcon\",\n  viewBox: \"0 0 12 14\",\n  d: \"M1.33333 9.6335L5.33333 11.9502V7.3835L1.33333 5.06683V9.6335ZM6.66667 11.9502L10.6667 9.6335V5.06683L6.66667 7.3835V11.9502ZM2.05 3.95016L6 6.2335L9.95 3.95016L6 1.66683L2.05 3.95016ZM0 10.4168V4.35016C0 4.10572 0.0583333 3.8835 0.175 3.6835C0.291667 3.4835 0.455556 3.32238 0.666667 3.20016L5.33333 0.516829C5.54444 0.394607 5.76667 0.333496 6 0.333496C6.23333 0.333496 6.45556 0.394607 6.66667 0.516829L11.3333 3.20016C11.5444 3.32238 11.7083 3.4835 11.825 3.6835C11.9417 3.8835 12 4.10572 12 4.35016V9.65016C12 9.89461 11.9417 10.1168 11.825 10.3168C11.7083 10.5168 11.5444 10.6779 11.3333 10.8002L6.66667 13.4835C6.45556 13.6057 6.23333 13.6668 6 13.6668C5.76667 13.6668 5.54444 13.6057 5.33333 13.4835L0 10.4168Z\",\n});\n\nexport const ChatIcon = createIcon({\n  displayName: \"ChatIcon\",\n  viewBox: \"0 0 20 21\",\n  d: \"M11.7134 16.6098L13.9753 14.2928L13.9844 14.2812C15.5718 13.1448 16.6283 11.2483 16.6283 9.14713C16.6283 5.68744 13.8236 2.88281 10.3639 2.88281C6.90424 2.88281 4.09961 5.68744 4.09961 9.14713C4.09961 12.6068 6.90424 15.4115 10.3639 15.4115C10.6616 15.4115 10.7798 15.3995 11.0664 15.3594L11.2242 15.7372L11.3923 16.0568L11.5858 16.4184L11.7134 16.6098ZM15.0631 15.3284L15.0465 15.3429L12.1399 18.3203L11.4942 18.9818L10.98 18.2136L10.0959 16.8927C5.95221 16.7279 2.59961 13.3297 2.59961 9.14713C2.59961 4.85902 6.07581 1.38281 10.3639 1.38281C14.652 1.38281 18.1283 4.85902 18.1283 9.14713C18.1283 11.6705 16.9231 13.9124 15.0631 15.3284ZM8.38808 7.11434C8.13102 7.11434 7.89026 7.24022 7.74359 7.45132L6.4964 9.24628L6.48713 9.2511L6.49009 9.25537L6.48713 9.25963L6.49641 9.26445L7.74381 11.0595C7.89049 11.2705 8.13123 11.3964 8.38827 11.3964L9.37073 11.3964L8.25818 9.25537L9.37072 7.11434H8.38808ZM11.593 11.4143C11.1824 11.4143 10.8495 11.0814 10.8495 10.6707C10.8495 10.2601 11.1824 9.92719 11.593 9.92719H13.2784C13.6891 9.92719 14.022 10.2601 14.022 10.6707C14.022 11.0814 13.6891 11.4143 13.2784 11.4143H11.593Z\",\n});\n\nexport const PATIcon = createIcon({\n  displayName: \"PATIcon\",\n  viewBox: \"0 0 16 16\",\n  d: \"M6.00033 13.3332C4.51144 13.3332 3.25033 12.8166 2.21699 11.7832C1.18366 10.7499 0.666992 9.48879 0.666992 7.9999C0.666992 6.51101 1.18366 5.2499 2.21699 4.21657C3.25033 3.18324 4.51144 2.66657 6.00033 2.66657C7.48921 2.66657 8.75033 3.18324 9.78366 4.21657C10.817 5.2499 11.3337 6.51101 11.3337 7.9999C11.3337 9.48879 10.817 10.7499 9.78366 11.7832C8.75033 12.8166 7.48921 13.3332 6.00033 13.3332ZM6.00033 11.9999C7.11144 11.9999 8.05588 11.611 8.83366 10.8332C9.61144 10.0555 10.0003 9.11101 10.0003 7.9999C10.0003 6.88879 9.61144 5.94435 8.83366 5.16657C8.05588 4.38879 7.11144 3.9999 6.00033 3.9999C4.88921 3.9999 3.94477 4.38879 3.16699 5.16657C2.38921 5.94435 2.00033 6.88879 2.00033 7.9999C2.00033 9.11101 2.38921 10.0555 3.16699 10.8332C3.94477 11.611 4.88921 11.9999 6.00033 11.9999ZM6.00033 10.3332C6.18921 10.3332 6.34766 10.2692 6.47566 10.1412C6.60321 10.0137 6.66699 9.85546 6.66699 9.66657V6.9999H7.50033C7.64477 6.9999 7.76433 6.95257 7.85899 6.8579C7.95321 6.76368 8.00033 6.64435 8.00033 6.4999C8.00033 6.35546 7.95321 6.2359 7.85899 6.14124C7.76433 6.04701 7.64477 5.9999 7.50033 5.9999H4.50033C4.35588 5.9999 4.23655 6.04701 4.14233 6.14124C4.04766 6.2359 4.00033 6.35546 4.00033 6.4999C4.00033 6.64435 4.04766 6.76368 4.14233 6.8579C4.23655 6.95257 4.35588 6.9999 4.50033 6.9999H5.33366V9.66657C5.33366 9.85546 5.39766 10.0137 5.52566 10.1412C5.65321 10.2692 5.81144 10.3332 6.00033 10.3332ZM12.367 5.33324L11.8337 4.16657L10.667 3.63324C10.5448 3.57768 10.4837 3.47768 10.4837 3.33324C10.4837 3.18879 10.5448 3.08879 10.667 3.03324L11.8337 2.4999L12.367 1.33324C12.4225 1.21101 12.5225 1.1499 12.667 1.1499C12.8114 1.1499 12.9114 1.21101 12.967 1.33324L13.5003 2.4999L14.667 3.03324C14.7892 3.08879 14.8503 3.18879 14.8503 3.33324C14.8503 3.47768 14.7892 3.57768 14.667 3.63324L13.5003 4.16657L12.967 5.33324C12.9114 5.45546 12.8114 5.51657 12.667 5.51657C12.5225 5.51657 12.4225 5.45546 12.367 5.33324ZM12.367 14.6666L11.8337 13.4999L10.667 12.9666C10.5448 12.911 10.4837 12.811 10.4837 12.6666C10.4837 12.5221 10.5448 12.4221 10.667 12.3666L11.8337 11.8332L12.367 10.6666C12.4225 10.5443 12.5225 10.4832 12.667 10.4832C12.8114 10.4832 12.9114 10.5443 12.967 10.6666L13.5003 11.8332L14.667 12.3666C14.7892 12.4221 14.8503 12.5221 14.8503 12.6666C14.8503 12.811 14.7892 12.911 14.667 12.9666L13.5003 13.4999L12.967 14.6666C12.9114 14.7888 12.8114 14.8499 12.667 14.8499C12.5225 14.8499 12.4225 14.7888 12.367 14.6666Z\",\n});\n\nexport const InviteIcon = createIcon({\n  displayName: \"InviteIcon\",\n  viewBox: \"0 0 16 17\",\n  d: \"M13.8333 12.9832C13.8333 12.6332 13.5417 12.3999 13.25 12.3999H2.75C2.4 12.3999 2.16667 12.6916 2.16667 12.9832V13.5666C2.16667 13.9165 2.45833 14.1499 2.75 14.1499H13.25C13.6 14.1499 13.8333 13.8582 13.8333 13.5666V12.9832ZM2.75 11.2332H13.25C14.2417 11.2332 15 11.9916 15 12.9832V13.5666C15 14.5582 14.1833 15.3165 13.25 15.3165H2.75C1.75833 15.3165 1 14.4999 1 13.5666V12.9832C1 11.9916 1.81667 11.2332 2.75 11.2332ZM1 6.74157C1 7.8499 1.93333 8.78323 3.04167 8.78323C3.47735 8.78323 3.88599 8.64803 4.22152 8.41304C5.15023 8.71497 5.20006 10.7082 5.20006 10.7082H6.36367C6.36479 10.7279 6.36581 10.7473 6.36672 10.7666V10.7082H6.36367C6.30536 9.68666 5.96636 8.14717 4.93273 7.52263C5.02964 7.28442 5.08333 7.02139 5.08333 6.74157C5.08333 5.57491 4.15 4.69992 3.04167 4.69992C1.93333 4.69992 1 5.63325 1 6.74157ZM2.16667 6.74157C2.16667 6.21658 2.575 5.86658 3.04167 5.86658C3.50833 5.86658 3.91667 6.27491 3.91667 6.74157C3.91667 7.20824 3.50833 7.61657 3.04167 7.61657C2.575 7.61657 2.16667 7.26657 2.16667 6.74157ZM8.875 3.59159C8.875 3.12492 8.46667 2.71659 8 2.71659C7.53333 2.71659 7.125 3.12492 7.125 3.59159C7.125 4.05825 7.53333 4.46658 8 4.46658C8.46667 4.46658 8.875 4.05825 8.875 3.59159ZM5.95833 3.59159C5.95833 2.48326 6.89167 1.54993 8 1.54993C9.10833 1.54993 10.0417 2.48326 10.0417 3.59159C10.0417 4.49813 9.41725 5.28759 8.58339 5.54501V10.8249H7.41672V5.54504C6.58281 5.28766 5.95833 4.49817 5.95833 3.59159ZM11.9239 8.49276C12.2293 8.67665 12.5838 8.78323 12.9583 8.78323C14.0667 8.78323 15 7.90824 15 6.74157C15 5.57491 14.0667 4.69992 12.9583 4.69992C11.85 4.69992 10.9167 5.63325 10.9167 6.74157C10.9167 6.99684 10.9662 7.24283 11.0559 7.47026C9.95917 8.05903 9.57506 9.66887 9.57506 10.7666V10.8249H10.7417C10.7417 10.8249 10.8554 8.55193 11.9239 8.49276ZM12.0833 6.74157C12.0833 6.21658 12.4917 5.86658 12.9583 5.86658C13.425 5.86658 13.8333 6.27491 13.8333 6.74157C13.8333 7.20824 13.425 7.61657 12.9583 7.61657C12.4917 7.61657 12.0833 7.26657 12.0833 6.74157Z\",\n});\n\nexport const ExpendIcon = createIcon({\n  displayName: \"expendIcon\",\n  viewBox: \"0 0 16 16\",\n  d: \"M11.2332 11.1613L12.1932 10.2013L8.93983 6.94801L6.7465 9.14135C6.68482 9.20315 6.61156 9.25218 6.53091 9.28563C6.45026 9.31909 6.36381 9.33631 6.2765 9.33631C6.18918 9.33631 6.10273 9.31909 6.02208 9.28563C5.94143 9.25218 5.86817 9.20315 5.8065 9.14135L1.8065 5.13468C1.68185 5.01003 1.61182 4.84096 1.61182 4.66468C1.61182 4.4884 1.68185 4.31933 1.8065 4.19468C1.93115 4.07003 2.10021 4 2.2765 4C2.45278 4 2.62184 4.07003 2.7465 4.19468L6.27316 7.72801L8.4665 5.53468C8.52817 5.47288 8.60143 5.42385 8.68208 5.39039C8.76273 5.35694 8.84918 5.33972 8.9365 5.33972C9.02381 5.33972 9.11026 5.35694 9.19091 5.39039C9.27156 5.42385 9.34482 5.47288 9.4065 5.53468L13.1332 9.25468L14.0932 8.29468C14.1398 8.249 14.1987 8.218 14.2628 8.20552C14.3268 8.19304 14.3931 8.19963 14.4534 8.22447C14.5138 8.24931 14.5655 8.29132 14.6022 8.34527C14.6389 8.39923 14.6589 8.46277 14.6598 8.52801V11.388C14.6598 11.5747 14.5132 11.7213 14.3265 11.7213H11.4665C11.1732 11.728 11.0265 11.368 11.2332 11.1613Z\",\n});\n\nexport const RechargeIcon = createIcon({\n  displayName: \"rechargeIcon\",\n  viewBox: \"0 0 17 17\",\n  d: \"M11.7664 5.42157L12.7264 6.38157L9.47303 9.6349L7.2797 7.44157C7.21802 7.37977 7.14477 7.33074 7.06412 7.29728C6.98347 7.26383 6.89701 7.24661 6.8097 7.24661C6.72239 7.24661 6.63593 7.26383 6.55528 7.29728C6.47464 7.33074 6.40138 7.37977 6.3397 7.44157L2.3397 11.4482C2.27798 11.51 2.22902 11.5832 2.19562 11.6639C2.16221 11.7445 2.14502 11.8309 2.14502 11.9182C2.14502 12.0055 2.16221 12.092 2.19562 12.1726C2.22902 12.2532 2.27798 12.3265 2.3397 12.3882C2.40142 12.45 2.4747 12.4989 2.55534 12.5323C2.63598 12.5657 2.72241 12.5829 2.8097 12.5829C2.89699 12.5829 2.98342 12.5657 3.06406 12.5323C3.1447 12.4989 3.21798 12.45 3.2797 12.3882L6.80637 8.8549L8.9997 11.0482C9.2597 11.3082 9.6797 11.3082 9.9397 11.0482L13.6664 7.32824L14.6264 8.28824C14.673 8.33392 14.7319 8.36492 14.796 8.3774C14.86 8.38988 14.9263 8.38329 14.9866 8.35845C15.047 8.3336 15.0987 8.2916 15.1354 8.23764C15.1721 8.18368 15.1921 8.12015 15.193 8.0549V5.18824C15.1949 5.14454 15.1877 5.10093 15.172 5.0601C15.1564 5.01927 15.1325 4.98209 15.1019 4.95085C15.0712 4.91961 15.0346 4.89498 14.9941 4.87848C14.9536 4.86198 14.9101 4.85395 14.8664 4.8549H12.0064C11.9406 4.85452 11.8761 4.87362 11.8211 4.9098C11.7662 4.94599 11.7231 4.99763 11.6975 5.05823C11.6718 5.11883 11.6647 5.18567 11.6769 5.25033C11.6892 5.31499 11.7203 5.37457 11.7664 5.42157Z\",\n});\n\nexport const BillingIcon = (props: any) => {\n  return (\n    <svg\n      width={props.size}\n      height={props.size}\n      viewBox=\"0 0 16 16\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M5.63269 5.58062C5.27841 5.58062 4.99121 5.86782 4.99121 6.2221C4.99121 6.57638 5.27841 6.86358 5.63269 6.86358H10.297C10.6513 6.86358 10.9385 6.57638 10.9385 6.2221C10.9385 5.86782 10.6513 5.58062 10.297 5.58062H5.63269Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M5.63269 8.3525C5.27841 8.3525 4.99121 8.6397 4.99121 8.99398C4.99121 9.34826 5.27841 9.63546 5.63269 9.63546H8.11926C8.47354 9.63546 8.76074 9.34826 8.76074 8.99398C8.76074 8.6397 8.47354 8.3525 8.11926 8.3525H5.63269Z\"\n        fill={props.color}\n      />\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M2.00222 14.1681C2.00075 14.1361 2 14.1039 2 14.0714V2.92857C2 1.86345 2.80589 1 3.8 1H12.2C13.1941 1 14 1.86345 14 2.92857V14.0714C14 14.1039 13.9993 14.1361 13.9978 14.1682C14.0104 14.3198 13.9694 14.4766 13.8707 14.6075C13.658 14.8893 13.258 14.9448 12.9771 14.7315L11.5149 13.6208L10.0528 14.7315C9.91025 14.8397 9.73705 14.8788 9.57322 14.8541C9.46223 14.8461 9.35097 14.8009 9.25446 14.7166L8.00038 13.6208L6.74629 14.7166C6.64937 14.8013 6.53757 14.8465 6.4261 14.8542C6.26247 14.8786 6.08955 14.8396 5.94723 14.7315L4.48505 13.6208L3.02287 14.7315C2.74201 14.9448 2.34196 14.8893 2.12933 14.6075C2.03055 14.4766 1.9896 14.3198 2.00222 14.1681ZM3.8 2.37143H12.2C12.4872 2.37143 12.72 2.62087 12.72 2.92857V12.9307L11.9165 12.3203C11.8013 12.2267 11.6588 12.178 11.5149 12.1779C11.444 12.1779 11.3727 12.1897 11.3042 12.2138C11.2359 12.2376 11.1712 12.2733 11.1134 12.3203L9.63481 13.4435L8.35195 12.3225C8.34982 12.3207 8.34769 12.3188 8.34555 12.317C8.34099 12.3132 8.3364 12.3094 8.33179 12.3057C8.2356 12.2244 8.11899 12.1829 8.00038 12.1837C7.88176 12.1829 7.76514 12.2244 7.66895 12.3057C7.66217 12.3111 7.65546 12.3167 7.64881 12.3225L6.36559 13.4438L4.88656 12.3203C4.77139 12.2267 4.62886 12.178 4.48505 12.1779C4.41406 12.1779 4.34276 12.1897 4.27428 12.2138C4.20601 12.2376 4.14133 12.2733 4.08354 12.3203L3.28 12.9307V2.92857C3.28 2.62087 3.51281 2.37143 3.8 2.37143Z\"\n        fill={props.color}\n      />\n    </svg>\n  );\n};\n\nexport const CostIcon = (props: any) => {\n  return (\n    <svg\n      width={props.size}\n      height={props.size}\n      viewBox=\"0 0 16 16\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path d=\"M13.8662 11.7331V2.42113H12.2962L12.2962 11.7331H13.8662Z\" fill={props.color} />\n      <path d=\"M7.16602 11.7318L7.16602 4.26562H5.59602V11.7318H7.16602Z\" fill={props.color} />\n      <path d=\"M3.81543 7.38777L3.81543 11.7318H2.24316V7.38777H3.81543Z\" fill={props.color} />\n      <path d=\"M1.6084 12.3614H14.3936V13.6443H1.6084V12.3614Z\" fill={props.color} />\n      <path d=\"M10.5166 6.16225V11.7331H8.9466L8.9466 6.16225H10.5166Z\" fill={props.color} />\n    </svg>\n  );\n};\n\nexport const WalletIcon = (props: any) => {\n  return (\n    <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M13.5 12.0863C13.3968 12.0863 13.2979 12.0453 13.225 11.9724C13.1521 11.8995 13.1111 11.8006 13.1111 11.6974C13.1111 11.5943 13.1521 11.4954 13.225 11.4224C13.2979 11.3495 13.3968 11.3085 13.5 11.3085C13.6031 11.3085 13.702 11.3495 13.775 11.4224C13.8479 11.4954 13.8889 11.5943 13.8889 11.6974C13.8889 11.8006 13.8479 11.8995 13.775 11.9724C13.702 12.0453 13.6031 12.0863 13.5 12.0863Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M3 15.1974H2.25H3ZM4.55556 6.64186V5.89186V6.64186ZM15.4444 6.64186V5.89186V6.64186ZM13.1111 11.6974H12.3611H13.1111ZM14.6667 5.55512H15.4167V5.55491L14.6667 5.55512ZM12.7106 4.05246L12.5174 3.32775L12.5173 3.32777L12.7106 4.05246ZM4.155 6.33368L4.34813 7.05839L4.34823 7.05836L4.155 6.33368ZM3 7.83712H3.75L3.75 7.83696L3 7.83712ZM15.4444 16.003H4.55556V17.503H15.4444V16.003ZM4.55556 16.003C4.34191 16.003 4.13701 15.9181 3.98594 15.767L2.92528 16.8277C3.35766 17.2601 3.94408 17.503 4.55556 17.503V16.003ZM3.98594 15.767C3.83487 15.616 3.75 15.4111 3.75 15.1974H2.25C2.25 15.8089 2.49291 16.3953 2.92528 16.8277L3.98594 15.767ZM3.75 15.1974V8.19742H2.25V15.1974H3.75ZM3.75 8.19742C3.75 7.98377 3.83487 7.77887 3.98594 7.6278L2.92528 6.56714C2.49291 6.99952 2.25 7.58595 2.25 8.19742H3.75ZM3.98594 7.6278C4.13701 7.47673 4.34191 7.39186 4.55556 7.39186V5.89186C3.94408 5.89186 3.35766 6.13477 2.92528 6.56714L3.98594 7.6278ZM4.55556 7.39186H15.4444V5.89186H4.55556V7.39186ZM15.4444 7.39186C15.6581 7.39186 15.863 7.47673 16.0141 7.6278L17.0747 6.56714C16.6423 6.13477 16.0559 5.89186 15.4444 5.89186V7.39186ZM16.0141 7.6278C16.1651 7.77887 16.25 7.98377 16.25 8.19742H17.75C17.75 7.58595 17.5071 6.99952 17.0747 6.56714L16.0141 7.6278ZM16.25 8.19742V15.1974H17.75V8.19742H16.25ZM16.25 15.1974C16.25 15.4111 16.1651 15.616 16.0141 15.767L17.0747 16.8277C17.5071 16.3953 17.75 15.8089 17.75 15.1974H16.25ZM16.0141 15.767C15.863 15.9181 15.6581 16.003 15.4444 16.003V17.503C16.0559 17.503 16.6423 17.2601 17.0747 16.8277L16.0141 15.767ZM13.5 11.3363C13.5958 11.3363 13.6876 11.3744 13.7553 11.4421L12.6947 12.5027C12.9082 12.7163 13.1979 12.8363 13.5 12.8363V11.3363ZM13.7553 11.4421C13.823 11.5098 13.8611 11.6016 13.8611 11.6974H12.3611C12.3611 11.9995 12.4811 12.2892 12.6947 12.5027L13.7553 11.4421ZM13.8611 11.6974C13.8611 11.7932 13.823 11.885 13.7553 11.9528L12.6947 10.8921C12.4811 11.1057 12.3611 11.3954 12.3611 11.6974H13.8611ZM13.7553 11.9528C13.6876 12.0205 13.5958 12.0585 13.5 12.0585V10.5585C13.1979 10.5585 12.9082 10.6785 12.6947 10.8921L13.7553 11.9528ZM13.5 12.0585C13.4042 12.0585 13.3124 12.0205 13.2446 11.9528L14.3053 10.8921C14.0917 10.6785 13.802 10.5585 13.5 10.5585V12.0585ZM13.2446 11.9528C13.1769 11.885 13.1389 11.7932 13.1389 11.6974H14.6389C14.6389 11.3954 14.5189 11.1057 14.3053 10.8921L13.2446 11.9528ZM13.1389 11.6974C13.1389 11.6016 13.1769 11.5098 13.2446 11.4421L14.3053 12.5027C14.5189 12.2891 14.6389 11.9995 14.6389 11.6974H13.1389ZM13.2446 11.4421C13.3124 11.3744 13.4042 11.3363 13.5 11.3363V12.8363C13.802 12.8363 14.0917 12.7163 14.3053 12.5027L13.2446 11.4421ZM15.4167 6.64168V5.55512H13.9167V6.64168H15.4167ZM15.4167 5.55491C15.4166 5.20159 15.3353 4.85302 15.179 4.53611L13.8336 5.19936C13.8882 5.31009 13.9166 5.43188 13.9167 5.55533L15.4167 5.55491ZM15.179 4.53611C15.0228 4.2192 14.7958 3.94244 14.5156 3.7272L13.6019 4.91673C13.6997 4.99194 13.7791 5.08864 13.8336 5.19936L15.179 4.53611ZM14.5156 3.7272C14.2354 3.51196 13.9095 3.36399 13.5631 3.29473L13.269 4.76563C13.3901 4.78983 13.504 4.84153 13.6019 4.91673L14.5156 3.7272ZM13.5631 3.29473C13.2166 3.22547 12.8588 3.23677 12.5174 3.32775L12.9037 4.77716C13.023 4.74538 13.148 4.74143 13.269 4.76563L13.5631 3.29473ZM12.5173 3.32777L3.96177 5.609L4.34823 7.05836L12.9038 4.77714L12.5173 3.32777ZM3.96188 5.60897C3.47085 5.73982 3.03682 6.02923 2.72724 6.4322L3.91675 7.34602C4.02491 7.20522 4.17656 7.10411 4.34813 7.05839L3.96188 5.60897ZM2.72724 6.4322C2.41766 6.83517 2.24989 7.32913 2.25 7.83729L3.75 7.83696C3.74996 7.65941 3.80858 7.48682 3.91675 7.34602L2.72724 6.4322ZM2.25 7.83712L2.25 8.19742H3.75L3.75 7.83712H2.25Z\"\n        fill={props.color}\n      />\n    </svg>\n  );\n};\n\nexport const CardIcon = (props: any) => {\n  return (\n    <svg\n      width={props.size}\n      height={props.size}\n      viewBox=\"0 0 16 16\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M15 4.8C15 3.80589 14.1941 3 13.2 3H2.8C1.80589 3 1 3.80589 1 4.8V11.2C1 12.1941 1.80589 13 2.8 13H13.2C14.1941 13 15 12.1941 15 11.2V4.8ZM2.8 4.28H13.2C13.4872 4.28 13.72 4.51281 13.72 4.8V5.44688H4.61121C4.25693 5.44688 3.96973 5.73408 3.96973 6.08836C3.96973 6.44264 4.25693 6.72984 4.61121 6.72984H13.72V11.2C13.72 11.4872 13.4872 11.72 13.2 11.72H2.8C2.51281 11.72 2.28 11.4872 2.28 11.2V4.8C2.28 4.51281 2.51281 4.28 2.8 4.28Z\"\n        fill={props.color}\n      />\n    </svg>\n  );\n};\n\nexport const ChargeIcon = (props: any) => {\n  return (\n    <svg\n      width={props.size}\n      height={props.size}\n      viewBox=\"0 0 16 16\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M5.94565 4.57954C6.17521 4.36085 6.53858 4.36967 6.75727 4.59923L7.99384 5.89728L9.23041 4.59923C9.44909 4.36967 9.81247 4.36085 10.042 4.57954C10.2716 4.79823 10.2804 5.1616 10.0617 5.39116L8.57403 6.95283V7.12552H9.68853C10.0056 7.12552 10.2626 7.38254 10.2626 7.69959C10.2626 8.01664 10.0056 8.27366 9.68853 8.27366H8.57403V8.83994H9.68853C10.0056 8.83994 10.2626 9.09697 10.2626 9.41402C10.2626 9.73107 10.0056 9.98809 9.68853 9.98809H8.57403V11.0048C8.57403 11.3219 8.31701 11.5789 7.99996 11.5789C7.6829 11.5789 7.42588 11.3219 7.42588 11.0048V9.98809H6.31138C5.99433 9.98809 5.7373 9.73107 5.7373 9.41402C5.7373 9.09697 5.99433 8.83994 6.31138 8.83994H7.42588V8.27366H6.31138C5.99433 8.27366 5.7373 8.01664 5.7373 7.69959C5.7373 7.38254 5.99433 7.12552 6.31138 7.12552H7.42588V6.96545L7.41648 6.9558L5.92596 5.39116C5.70727 5.1616 5.71608 4.79823 5.94565 4.57954Z\"\n        fill={props.color}\n      />\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M14.9835 7.99173C14.9835 11.8532 11.8532 14.9835 7.99173 14.9835C4.13031 14.9835 1 11.8532 1 7.99173C1 4.13031 4.13031 1 7.99173 1C11.8532 1 14.9835 4.13031 14.9835 7.99173ZM13.7335 7.99173C13.7335 11.1628 11.1628 13.7335 7.99173 13.7335C4.82066 13.7335 2.25 11.1628 2.25 7.99173C2.25 4.82066 4.82066 2.25 7.99173 2.25C11.1628 2.25 13.7335 4.82066 13.7335 7.99173Z\"\n        fill={props.color}\n      />\n    </svg>\n  );\n};\n\nexport const StandardIcon = (props: any) => {\n  return (\n    <svg\n      width={props.size}\n      height={props.size}\n      viewBox=\"0 0 16 16\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <mask id=\"mask0_10350_9268\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"20\" height=\"20\">\n        <rect width=\"20\" height=\"20\" fill=\"#D9D9D9\" />\n      </mask>\n      <g mask=\"url(#mask0_10350_9268)\">\n        <path\n          d=\"M2.66699 13.3333V2.66666H4.00033V13.3333H2.66699ZM12.0003 13.3333V2.66666H13.3337V13.3333H12.0003ZM4.90033 11.3333L7.40033 4.66666H8.60033L11.1003 11.3333H9.95033L9.35033 9.63333H6.65033L6.05033 11.3333H4.90033ZM7.00033 8.66666H9.00033L8.03366 5.9H7.96699L7.00033 8.66666Z\"\n          fill={props.color}\n        />\n      </g>\n    </svg>\n  );\n};\n\nexport const ENVIcon = (props: any) => {\n  return (\n    <svg\n      width={props.fontSize}\n      height={props.fontSize}\n      viewBox=\"0 0 15 14\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M5.08375 8.51084V8.94951H4.3225V9.46109H5.1835V9.91668H3.75433V7.58334H5.1835V8.03893H4.3225V8.51084H5.08375Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M10.4335 4.66668H9.85018V3.50001C9.85018 2.72646 9.54289 1.9846 8.99591 1.43762C8.44893 0.890634 7.70706 0.583344 6.93351 0.583344C6.15996 0.583344 5.4181 0.890634 4.87112 1.43762C4.32414 1.9846 4.01685 2.72646 4.01685 3.50001V4.66668H3.43351C3.12438 4.6676 2.82817 4.79081 2.60957 5.00941C2.39098 5.228 2.26777 5.52421 2.26685 5.83334V11.6667C2.26777 11.9758 2.39098 12.272 2.60957 12.4906C2.82817 12.7092 3.12438 12.8324 3.43351 12.8333H10.4335C10.7426 12.8324 11.0389 12.7092 11.2575 12.4906C11.476 12.272 11.5993 11.9758 11.6002 11.6667V5.83334C11.5993 5.52421 11.476 5.228 11.2575 5.00941C11.0389 4.79081 10.7426 4.6676 10.4335 4.66668ZM5.12518 3.50001C5.12518 3.26254 5.17195 3.02739 5.26283 2.80799C5.35371 2.58859 5.48691 2.38924 5.65483 2.22133C5.82275 2.05341 6.0221 1.92021 6.24149 1.82933C6.46089 1.73845 6.69604 1.69168 6.93351 1.69168C7.17099 1.69168 7.40613 1.73845 7.62553 1.82933C7.84493 1.92021 8.04428 2.05341 8.2122 2.22133C8.38012 2.38924 8.51332 2.58859 8.6042 2.80799C8.69507 3.02739 8.74185 3.26254 8.74185 3.50001V4.66668H5.12518V3.50001ZM10.4335 11.6667H3.43351V5.83334H10.4335V11.6667Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M7.61485 9.91668H7.04668L6.09585 8.47759V9.91668H5.52768V7.58334H6.09585L7.04668 9.02943V7.58334H7.61485V9.91668ZM9.32576 9.91668H8.6246L7.80851 7.58334H8.39185L8.97518 9.33334L9.55851 7.58334H10.1418L9.32576 9.91668Z\"\n        fill={props.color}\n      />\n    </svg>\n  );\n};\n\nexport const DomainIcon = createIcon({\n  displayName: \"DomainIcon\",\n  viewBox: \"0 0 14 15\",\n  d: \"M6.99967 0.833252C3.31767 0.833252 0.333008 3.81792 0.333008 7.49992C0.333008 11.1819 3.31767 14.1666 6.99967 14.1666C10.6817 14.1666 13.6663 11.1819 13.6663 7.49992C13.6663 3.81792 10.6817 0.833252 6.99967 0.833252ZM11.6117 4.83325H9.46834C9.3687 4.08312 9.24307 3.33667 9.09167 2.59525C10.1503 3.05121 11.0339 3.83594 11.6117 4.83325ZM7.67567 2.21459C7.72101 2.44925 7.93367 3.57325 8.10567 4.83325H5.89367C6.06567 3.57325 6.27834 2.44925 6.32367 2.21459C6.54567 2.18592 6.77034 2.16659 6.99967 2.16659C7.22901 2.16659 7.45367 2.18592 7.67567 2.21459ZM8.33301 7.49992C8.33301 7.89858 8.30434 8.35725 8.26034 8.83325H5.73901C5.69501 8.35725 5.66634 7.89858 5.66634 7.49992C5.66634 7.10125 5.69501 6.64258 5.73901 6.16658H8.26034C8.30434 6.64258 8.33301 7.10125 8.33301 7.49992ZM4.90767 2.59525C4.75628 3.33667 4.63065 4.08312 4.53101 4.83325H2.38767C2.96548 3.83594 3.84909 3.05121 4.90767 2.59525ZM1.84167 6.16658H4.38901C4.35501 6.61192 4.33301 7.06258 4.33301 7.49992C4.33301 7.93725 4.35501 8.38792 4.38967 8.83325H1.84167C1.73101 8.40592 1.66634 7.96125 1.66634 7.49992C1.66634 7.03858 1.73167 6.59392 1.84167 6.16658ZM2.38767 10.1666H4.53101C4.65634 11.1159 4.81101 11.9333 4.90767 12.4046C3.84909 11.9486 2.96548 11.1639 2.38767 10.1666ZM6.32367 12.7853C6.15788 11.9162 6.0145 11.043 5.89367 10.1666H8.10567C7.98455 11.043 7.84117 11.9161 7.67567 12.7853C7.45367 12.8139 7.22901 12.8333 6.99967 12.8333C6.77034 12.8333 6.54567 12.8139 6.32367 12.7853ZM9.09167 12.4046C9.18834 11.9333 9.34301 11.1159 9.46834 10.1666H11.6117C11.0339 11.1639 10.1503 11.9486 9.09167 12.4046ZM12.1577 8.83325H9.61034C9.64434 8.38792 9.66634 7.93725 9.66634 7.49992C9.66634 7.06258 9.64434 6.61192 9.60967 6.16658H12.157C12.2677 6.59392 12.333 7.03858 12.333 7.49992C12.333 7.96125 12.2683 8.40592 12.1577 8.83325Z\",\n});\n\nexport const FilterIcon = createIcon({\n  displayName: \"FilterIcon\",\n  viewBox: \"0 0 10 8\",\n  d: \"M9.5 0V1H9L6.5 4.75V9H3.5V4.75L1 1H0.5V0H9.5ZM2.202 1L4.5 4.447V8H5.5V4.447L7.798 1H2.202Z\",\n});\n\nexport const CalendarIcon = createIcon({\n  displayName: \"CalendarIcon\",\n  viewBox: \"0 0 12 12\",\n  d: \"M2.5 11C2.225 11 1.9895 10.9022 1.7935 10.7065C1.59783 10.5105 1.5 10.275 1.5 10V3C1.5 2.725 1.59783 2.48967 1.7935 2.294C1.9895 2.098 2.225 2 2.5 2H3V1.4875C3 1.34583 3.04783 1.22917 3.1435 1.1375C3.2395 1.04583 3.35833 1 3.5 1C3.64167 1 3.7605 1.04783 3.8565 1.1435C3.95217 1.2395 4 1.35833 4 1.5V2H8V1.4875C8 1.34583 8.048 1.22917 8.144 1.1375C8.23967 1.04583 8.35833 1 8.5 1C8.64167 1 8.76033 1.04783 8.856 1.1435C8.952 1.2395 9 1.35833 9 1.5V2H9.5C9.775 2 10.0105 2.098 10.2065 2.294C10.4022 2.48967 10.5 2.725 10.5 3V10C10.5 10.275 10.4022 10.5105 10.2065 10.7065C10.0105 10.9022 9.775 11 9.5 11H2.5ZM2.5 10H9.5V5H2.5V10ZM2.5 4H9.5V3H2.5V4ZM2.5 4V3V4Z\",\n});\n\nexport const ExitIcon = createIcon({\n  displayName: \"ExitIcon\",\n  viewBox: \"0 0 20 20\",\n  d: \"M16.9238 14.3413H15.5891C15.4979 14.3413 15.4125 14.3811 15.3555 14.4514C15.2226 14.6128 15.0802 14.7685 14.9302 14.9166C14.3168 15.5306 13.5901 16.02 12.7905 16.3576C11.962 16.7076 11.0715 16.8871 10.1722 16.8855C9.26276 16.8855 8.38179 16.707 7.55398 16.3576C6.75432 16.02 6.02766 15.5306 5.4142 14.9166C4.79963 14.3045 4.30959 13.5792 3.97122 12.7806C3.61997 11.9528 3.4434 11.0737 3.4434 10.1642C3.4434 9.25478 3.62187 8.3757 3.97122 7.54789C4.30918 6.74856 4.79524 6.02897 5.4142 5.41191C6.03316 4.79484 6.75275 4.30879 7.55398 3.97083C8.38179 3.62148 9.26276 3.443 10.1722 3.443C11.0817 3.443 11.9626 3.61958 12.7905 3.97083C13.5917 4.30879 14.3113 4.79484 14.9302 5.41191C15.0802 5.5619 15.2207 5.71759 15.3555 5.87708C15.4125 5.94733 15.4998 5.9872 15.5891 5.9872H16.9238C17.0434 5.9872 17.1175 5.85429 17.051 5.75366C15.5948 3.49047 13.0468 1.99243 10.1513 2.00003C5.60216 2.01142 1.95485 5.7043 2.00042 10.2478C2.04599 14.7191 5.6876 18.3284 10.1722 18.3284C13.0601 18.3284 15.5967 16.8323 17.051 14.5748C17.1156 14.4742 17.0434 14.3413 16.9238 14.3413ZM18.6117 10.0446L15.9175 7.91813C15.8169 7.83838 15.6707 7.91053 15.6707 8.03774V9.48072H9.70895C9.62541 9.48072 9.55705 9.54907 9.55705 9.63261V10.6959C9.55705 10.7794 9.62541 10.8477 9.70895 10.8477H15.6707V12.2907C15.6707 12.4179 15.8188 12.4901 15.9175 12.4103L18.6117 10.2838C18.6299 10.2696 18.6446 10.2515 18.6547 10.2308C18.6648 10.21 18.67 10.1873 18.67 10.1642C18.67 10.1412 18.6648 10.1184 18.6547 10.0977C18.6446 10.077 18.6299 10.0588 18.6117 10.0446Z\",\n});\n\nexport const GroupIcon = createIcon({\n  displayName: \"GroupIcon\",\n  viewBox: \"0 0 20 20\",\n  d: \"M10.4688 16.2621C10.0508 16.3374 9.62449 16.3792 9.18977 16.3792C7.89397 16.3792 6.61489 16.0281 5.50301 15.3593L5.20205 15.1837L3.50497 15.6435C3.03681 15.7689 2.61045 15.3425 2.73585 14.8744L3.19565 13.1773C3.02009 12.8847 2.91141 12.6841 2.85289 12.5754C2.28441 11.5388 1.99181 10.3767 2.00017 9.18959C2.00017 5.2186 5.21877 2 9.18977 2C12.8096 2 15.8109 4.68356 16.3041 8.16967C17.7755 9.08091 18.67 10.686 18.67 12.4166C18.67 13.2526 18.461 14.0551 18.0764 14.7741C18.043 14.8409 17.9761 14.9496 17.8842 15.1085L18.1684 16.1535C18.2938 16.6216 17.8674 17.048 17.3993 16.9226L16.3543 16.6383L16.2289 16.7136C15.4514 17.1817 14.5652 17.4242 13.6624 17.4242C12.492 17.4158 11.3634 17.0145 10.4688 16.2621ZM12.0238 15.794C12.5338 16.0448 13.0939 16.1702 13.6624 16.1702C14.3395 16.1702 15.0083 15.9863 15.5852 15.6351C15.627 15.6101 15.744 15.5432 15.9446 15.4261C16.0868 15.3425 16.2623 15.3175 16.4212 15.3676L16.6636 15.4345L16.5967 15.1921C16.5549 15.0249 16.5716 14.8577 16.6636 14.7072C16.7639 14.54 16.8642 14.3644 16.9646 14.1972C17.2572 13.6538 17.4076 13.0436 17.4076 12.4249C17.4076 11.4468 17.0231 10.5021 16.3376 9.80823C16.1202 12.4918 14.4064 14.7657 12.0238 15.794ZM4.46637 13.2526L4.22393 14.1471L5.11845 13.9046C5.27729 13.8628 5.45285 13.8796 5.59497 13.9715C5.89593 14.1471 6.07149 14.2474 6.13001 14.2892C7.04961 14.8409 8.10297 15.1335 9.18141 15.1335C12.4585 15.1335 15.117 12.4751 15.117 9.19795C15.117 5.92084 12.4585 3.26236 9.18141 3.26236C5.90429 3.26236 3.24581 5.92084 3.24581 9.19795C3.24581 10.1928 3.48825 11.1458 3.94805 11.9986C4.00657 12.1156 4.16541 12.3748 4.39949 12.776C4.49145 12.9182 4.50817 13.0937 4.46637 13.2526ZM11.7897 6.99928C12.1325 6.99928 12.4167 7.27516 12.4167 7.62628C12.4167 7.96903 12.1408 8.25327 11.7897 8.25327H6.58145C6.23869 8.25327 5.95445 7.97739 5.95445 7.62628C5.95445 7.28352 6.23033 6.99928 6.58145 6.99928H11.7897ZM9.29009 10.1259C9.63285 10.1259 9.91709 10.4018 9.91709 10.7529C9.91709 11.0957 9.64121 11.3799 9.29009 11.3799H6.58145C6.23869 11.3799 5.95445 11.104 5.95445 10.7529C5.95445 10.4102 6.23033 10.1259 6.58145 10.1259H9.29009Z\",\n});\n\nexport const DeleteIcon = createIcon({\n  displayName: \"DeleteIcon\",\n  viewBox: \"0 0 15 14\",\n  d: \"M4.01687 11.0833C4.01687 11.3928 4.13978 11.6895 4.35857 11.9083C4.57737 12.1271 4.87411 12.25 5.18353 12.25H9.8502C10.1596 12.25 10.4564 12.1271 10.6752 11.9083C10.894 11.6895 11.0169 11.3928 11.0169 11.0833V4.08333H4.01687V11.0833ZM5.18353 5.25H9.8502V11.0833H5.18353V5.25ZM9.55853 2.33333L8.9752 1.75H6.05853L5.4752 2.33333H3.43353V3.5H11.6002V2.33333H9.55853Z\",\n});\n\nexport const RestoreIcon = createIcon({\n  displayName: \"RestoreIcon\",\n  viewBox: \"0 0 16 17\",\n  d: \"M8 2.5C6.4087 2.5 4.88258 3.13214 3.75736 4.25736C2.63214 5.38258 2 6.9087 2 8.5H0L2.66667 11.1667L5.33333 8.5H3.33333C3.33333 7.26232 3.825 6.07534 4.70017 5.20017C5.57534 4.325 6.76232 3.83333 8 3.83333C9.23768 3.83333 10.4247 4.325 11.2998 5.20017C12.175 6.07534 12.6667 7.26232 12.6667 8.5C12.6667 9.73768 12.175 10.9247 11.2998 11.7998C10.4247 12.675 9.23768 13.1667 8 13.1667C7 13.1667 6.06 12.8333 5.29333 12.3L4.33333 13.26C5.38772 14.062 6.67529 14.4974 8 14.5C9.5913 14.5 11.1174 13.8679 12.2426 12.7426C13.3679 11.6174 14 10.0913 14 8.5C14 6.9087 13.3679 5.38258 12.2426 4.25736C11.1174 3.13214 9.5913 2.5 8 2.5ZM9.33333 8.5C9.33333 8.14638 9.19286 7.80724 8.94281 7.55719C8.69276 7.30714 8.35362 7.16667 8 7.16667C7.64638 7.16667 7.30724 7.30714 7.05719 7.55719C6.80714 7.80724 6.66667 8.14638 6.66667 8.5C6.66667 8.85362 6.80714 9.19276 7.05719 9.44281C7.30724 9.69286 7.64638 9.83333 8 9.83333C8.35362 9.83333 8.69276 9.69286 8.94281 9.44281C9.19286 9.19276 9.33333 8.85362 9.33333 8.5Z\",\n});\n\nexport const GoSelectIcon = () => {\n  return (\n    <svg width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M2.66667 11.8333H7.33334M13.3333 9.83329L10.6667 12.5L9.33334 11.1666M2.66667 8.49996H10M2.66667 5.16663H10\"\n        stroke=\"#5A646E\"\n        strokeWidth=\"1.4\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </svg>\n  );\n};\n\nexport const MonitorIcon = createIcon({\n  displayName: \"MonitorIcon\",\n  viewBox: \"0 0 14 12\",\n  d: \"M1.00017 4.00008C0.811276 4.00008 0.652832 3.93608 0.524832 3.80808C0.396832 3.68008 0.333054 3.52186 0.333498 3.33342V2.00008C0.333498 1.63342 0.464165 1.31942 0.725498 1.05808C0.986832 0.796749 1.30061 0.666305 1.66683 0.666749H12.3335C12.7002 0.666749 13.0142 0.797416 13.2755 1.05875C13.5368 1.32008 13.6673 1.63386 13.6668 2.00008V3.33342C13.6668 3.5223 13.6028 3.68075 13.4748 3.80875C13.3468 3.93675 13.1886 4.00053 13.0002 4.00008C12.8113 4.00008 12.6528 3.93608 12.5248 3.80808C12.3968 3.68008 12.3331 3.52186 12.3335 3.33342V2.00008H1.66683V3.33342C1.66683 3.5223 1.60283 3.68075 1.47483 3.80875C1.34683 3.93675 1.18861 4.00053 1.00017 4.00008ZM1.66683 11.3334C1.30017 11.3334 0.986165 11.2027 0.724832 10.9414C0.463498 10.6801 0.333054 10.3663 0.333498 10.0001V8.66675C0.333498 8.47786 0.397498 8.31942 0.525498 8.19142C0.653498 8.06342 0.811721 7.99964 1.00017 8.00008C1.18905 8.00008 1.3475 8.06408 1.4755 8.19208C1.6035 8.32008 1.66728 8.4783 1.66683 8.66675V10.0001H12.3335V8.66675C12.3335 8.47786 12.3975 8.31942 12.5255 8.19142C12.6535 8.06342 12.8117 7.99964 13.0002 8.00008C13.1891 8.00008 13.3475 8.06408 13.4755 8.19208C13.6035 8.32008 13.6673 8.4783 13.6668 8.66675V10.0001C13.6668 10.3667 13.5362 10.6807 13.2748 10.9421C13.0135 11.2034 12.6997 11.3339 12.3335 11.3334H1.66683ZM5.66683 9.33342C5.78905 9.33342 5.90572 9.30275 6.01683 9.24142C6.12794 9.18008 6.21128 9.08853 6.26683 8.96675L8.3335 4.83342L9.06683 6.30008C9.12239 6.4223 9.20572 6.51408 9.31683 6.57542C9.42794 6.63675 9.54461 6.66719 9.66683 6.66675H13.0002C13.1891 6.66675 13.3475 6.60275 13.4755 6.47475C13.6035 6.34675 13.6673 6.18853 13.6668 6.00008C13.6668 5.81119 13.6028 5.65275 13.4748 5.52475C13.3468 5.39675 13.1886 5.33297 13.0002 5.33342H10.0835L8.9335 3.03342C8.81128 2.81119 8.61128 2.70008 8.3335 2.70008C8.05572 2.70008 7.85572 2.81119 7.7335 3.03342L5.66683 7.16675L4.9335 5.70008C4.87794 5.57786 4.79461 5.48608 4.6835 5.42475C4.57239 5.36342 4.45572 5.33297 4.3335 5.33342H1.00017C0.811276 5.33342 0.652832 5.39742 0.524832 5.52542C0.396832 5.65342 0.333054 5.81164 0.333498 6.00008C0.333498 6.18897 0.397498 6.34742 0.525498 6.47542C0.653498 6.60342 0.811721 6.66719 1.00017 6.66675H3.91683L5.06683 8.96675C5.12239 9.08897 5.20572 9.18075 5.31683 9.24208C5.42794 9.30342 5.54461 9.33386 5.66683 9.33342Z\",\n});\n\nexport const CollaborateIcon = () => {\n  return (\n    <svg width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <mask id=\"mask0_8723_8362\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"16\" height=\"17\">\n        <rect y=\"0.5\" width=\"16\" height=\"16\" fill=\"#D9D9D9\" />\n      </mask>\n      <g mask=\"url(#mask0_8723_8362)\">\n        <path\n          d=\"M8.33333 8.46675C8.65556 8.11119 8.90278 7.70564 9.075 7.25008C9.24722 6.79453 9.33333 6.3223 9.33333 5.83341C9.33333 5.34453 9.24722 4.8723 9.075 4.41675C8.90278 3.96119 8.65556 3.55564 8.33333 3.20008C9 3.28897 9.55556 3.58341 10 4.08341C10.4444 4.58341 10.6667 5.16675 10.6667 5.83341C10.6667 6.50008 10.4444 7.08341 10 7.58342C9.55556 8.08342 9 8.37786 8.33333 8.46675ZM12 13.8334V11.8334C12 11.4334 11.9111 11.0529 11.7333 10.6917C11.5556 10.3306 11.3222 10.0112 11.0333 9.73342C11.6 9.93342 12.125 10.1917 12.6083 10.5084C13.0917 10.8251 13.3333 11.2667 13.3333 11.8334V13.8334H12ZM13.3333 9.16675V7.83342H12V6.50008H13.3333V5.16675H14.6667V6.50008H16V7.83342H14.6667V9.16675H13.3333ZM5.33333 8.50008C4.6 8.50008 3.97222 8.23897 3.45 7.71675C2.92778 7.19453 2.66667 6.56675 2.66667 5.83341C2.66667 5.10008 2.92778 4.4723 3.45 3.95008C3.97222 3.42786 4.6 3.16675 5.33333 3.16675C6.06667 3.16675 6.69444 3.42786 7.21667 3.95008C7.73889 4.4723 8 5.10008 8 5.83341C8 6.56675 7.73889 7.19453 7.21667 7.71675C6.69444 8.23897 6.06667 8.50008 5.33333 8.50008ZM0 13.8334V11.9667C0 11.589 0.0972222 11.2417 0.291667 10.9251C0.486111 10.6084 0.744444 10.3667 1.06667 10.2001C1.75556 9.85564 2.45556 9.5973 3.16667 9.42508C3.87778 9.25286 4.6 9.16675 5.33333 9.16675C6.06667 9.16675 6.78889 9.25286 7.5 9.42508C8.21111 9.5973 8.91111 9.85564 9.6 10.2001C9.92222 10.3667 10.1806 10.6084 10.375 10.9251C10.5694 11.2417 10.6667 11.589 10.6667 11.9667V13.8334H0ZM5.33333 7.16675C5.7 7.16675 6.01389 7.03619 6.275 6.77508C6.53611 6.51397 6.66667 6.20008 6.66667 5.83341C6.66667 5.46675 6.53611 5.15286 6.275 4.89175C6.01389 4.63064 5.7 4.50008 5.33333 4.50008C4.96667 4.50008 4.65278 4.63064 4.39167 4.89175C4.13056 5.15286 4 5.46675 4 5.83341C4 6.20008 4.13056 6.51397 4.39167 6.77508C4.65278 7.03619 4.96667 7.16675 5.33333 7.16675ZM1.33333 12.5001H9.33333V11.9667C9.33333 11.8445 9.30278 11.7334 9.24167 11.6334C9.18056 11.5334 9.1 11.4556 9 11.4001C8.4 11.1001 7.79445 10.8751 7.18333 10.7251C6.57222 10.5751 5.95556 10.5001 5.33333 10.5001C4.71111 10.5001 4.09444 10.5751 3.48333 10.7251C2.87222 10.8751 2.26667 11.1001 1.66667 11.4001C1.56667 11.4556 1.48611 11.5334 1.425 11.6334C1.36389 11.7334 1.33333 11.8445 1.33333 11.9667V12.5001Z\"\n          fill=\"#219BF4\"\n        />\n      </g>\n    </svg>\n  );\n};\n\nexport const MoreTemplateIcon = createIcon({\n  displayName: \"MoreTemplateIcon\",\n  viewBox: \"0 0 14 14\",\n  d: \"M2.33398 2.91672C2.33398 2.76201 2.39544 2.61364 2.50484 2.50424C2.61424 2.39485 2.76261 2.33339 2.91732 2.33339H11.084C11.2387 2.33339 11.3871 2.39485 11.4965 2.50424C11.6059 2.61364 11.6673 2.76201 11.6673 2.91672V4.08339C11.6673 4.2381 11.6059 4.38647 11.4965 4.49587C11.3871 4.60526 11.2387 4.66672 11.084 4.66672H2.91732C2.76261 4.66672 2.61424 4.60526 2.50484 4.49587C2.39544 4.38647 2.33398 4.2381 2.33398 4.08339V2.91672ZM2.33398 7.58339C2.33398 7.42868 2.39544 7.28031 2.50484 7.17091C2.61424 7.06151 2.76261 7.00006 2.91732 7.00006H6.41732C6.57203 7.00006 6.7204 7.06151 6.8298 7.17091C6.93919 7.28031 7.00065 7.42868 7.00065 7.58339V11.0834C7.00065 11.2381 6.93919 11.3865 6.8298 11.4959C6.7204 11.6053 6.57203 11.6667 6.41732 11.6667H2.91732C2.76261 11.6667 2.61424 11.6053 2.50484 11.4959C2.39544 11.3865 2.33398 11.2381 2.33398 11.0834V7.58339ZM9.33398 7.58339C9.33398 7.42868 9.39544 7.28031 9.50484 7.17091C9.61424 7.06151 9.76261 7.00006 9.91732 7.00006H11.084C11.2387 7.00006 11.3871 7.06151 11.4965 7.17091C11.6059 7.28031 11.6673 7.42868 11.6673 7.58339V11.0834C11.6673 11.2381 11.6059 11.3865 11.4965 11.4959C11.3871 11.6053 11.2387 11.6667 11.084 11.6667H9.91732C9.76261 11.6667 9.61424 11.6053 9.50484 11.4959C9.39544 11.3865 9.33398 11.2381 9.33398 11.0834V7.58339Z\",\n});\n\nexport const RecycleBinIcon = (props: any) => {\n  return (\n    <svg width=\"24\" height=\"24\" viewBox=\"0 1 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M10.4063 6.75C9.89071 6.75 9.47278 7.16793 9.47278 7.68347V8.36279L7.38656 8.36279C7.08435 8.36279 6.83936 8.60778 6.83936 8.91C6.83936 8.9574 6.84538 9.00339 6.85671 9.04725C6.85512 9.06069 6.85426 9.07426 6.85417 9.08792C6.85417 9.29477 7.01982 9.45441 7.2198 9.45441H7.33095C7.34924 9.45626 7.36779 9.4572 7.38656 9.4572L16.6134 9.4572C16.6322 9.4572 16.6507 9.45626 16.669 9.45441H16.7872C16.8843 9.45419 16.9774 9.4155 17.0461 9.34682C17.1148 9.27814 17.1535 9.18505 17.1537 9.08792C17.1546 9.06474 17.1533 9.04158 17.1498 9.01878C17.1569 8.98362 17.1606 8.94724 17.1606 8.91C17.1606 8.60778 16.9156 8.36279 16.6134 8.36279L14.5272 8.36279V7.68347C14.5272 7.16793 14.1092 6.75 13.5937 6.75H10.4063ZM13.4327 8.36279V7.84441H10.5672V8.36279H13.4327Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M8.34989 10.1646C8.6521 10.1646 8.8971 10.4096 8.8971 10.7118L8.89709 16.1556L15.0808 16.1556L15.0808 10.7118C15.0808 10.4096 15.3258 10.1646 15.628 10.1646C15.9302 10.1646 16.1752 10.4096 16.1752 10.7118L16.1752 16.3165C16.1752 16.8321 15.7573 17.25 15.2417 17.25H8.73615C8.22061 17.25 7.80268 16.8321 7.80268 16.3165L7.80268 10.7118C7.80268 10.4096 8.04767 10.1646 8.34989 10.1646Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M12.7206 13.6017L12.0597 14.5801L12.621 15.6659L12.6322 15.1998C12.6322 15.1998 13.0399 15.217 13.2407 15.211C13.4407 15.211 13.524 15.0342 13.524 15.0342L14.1196 14.0609C13.6304 14.2789 12.7034 14.0901 12.7034 14.0901L12.7206 13.6017Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M11.8709 14.1793C11.8709 14.1793 10.744 14.1381 10.532 14.1021H10.5311C10.4719 14.1793 10.2479 14.7338 10.3715 14.9518C10.4375 15.0642 10.5191 15.1758 10.6607 15.2058L11.8297 15.2882V15.223L11.8709 14.1793Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M10.7963 12.5211L9.59813 12.4739L9.98694 12.7159C9.98694 12.7159 9.76893 13.0704 9.66851 13.2472C9.56895 13.424 9.68053 13.5888 9.68053 13.5888L10.2058 14.6042C10.2642 14.0609 10.8907 13.3356 10.8907 13.3356L11.2976 13.5948L10.7963 12.5211Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M14.402 13.3528L13.8887 12.2799L13.8364 12.3151L12.9266 12.7983C12.9266 12.7983 13.4519 13.8137 13.5291 14.0197C13.6235 14.0368 14.2072 13.9553 14.3316 13.7364C14.396 13.6249 14.4492 13.4944 14.402 13.3528Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M11.9765 11.413C11.9404 11.3187 11.5812 10.8472 11.3401 10.8466C11.21 10.8467 11.0749 10.8649 10.9808 10.9762L10.32 11.9615L10.3732 11.9967L11.2383 12.5571C11.2383 12.5571 11.8409 11.5838 11.9765 11.413Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M12.8322 10.923L11.7052 10.8757H11.7044C12.1361 11.2002 12.4425 12.1143 12.4425 12.1143L12.0177 12.3451L13.1798 12.4396L13.8235 11.401L13.4227 11.625C13.4227 11.625 13.2339 11.2534 13.1274 11.0826C13.0528 10.9487 12.924 10.9264 12.8639 10.923H12.8322Z\"\n        fill={props.color}\n      />\n    </svg>\n  );\n};\n\nexport const MedalIcon = () => {\n  return (\n    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        opacity=\"0.5\"\n        d=\"M13 2H11C9.114 2 8.172 2 7.586 2.586C7 3.172 7 4.114 7 6V10H17V6C17 4.114 17 3.172 16.414 2.586C15.828 2 14.886 2 13 2Z\"\n        fill=\"#9A8EE0\"\n      />\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M12 22C14.1217 22 16.1566 21.1571 17.6569 19.6569C19.1571 18.1566 20 16.1217 20 14C20 11.8783 19.1571 9.84344 17.6569 8.34315C16.1566 6.84285 14.1217 6 12 6C9.87827 6 7.84344 6.84285 6.34315 8.34315C4.84285 9.84344 4 11.8783 4 14C4 16.1217 4.84285 18.1566 6.34315 19.6569C7.84344 21.1571 9.87827 22 12 22ZM12 11C11.716 11 11.526 11.34 11.146 12.023L11.048 12.199C10.94 12.393 10.886 12.489 10.802 12.553C10.717 12.617 10.612 12.641 10.402 12.688L10.212 12.732C9.474 12.899 9.105 12.982 9.017 13.264C8.929 13.547 9.181 13.841 9.684 14.429L9.814 14.581C9.957 14.748 10.029 14.831 10.061 14.935C10.093 15.039 10.082 15.15 10.061 15.373L10.041 15.576C9.965 16.361 9.927 16.754 10.156 16.928C10.386 17.102 10.732 16.943 11.423 16.625L11.601 16.543C11.798 16.453 11.896 16.407 12 16.407C12.104 16.407 12.202 16.453 12.399 16.543L12.577 16.625C13.268 16.944 13.614 17.102 13.844 16.928C14.074 16.754 14.035 16.361 13.959 15.576L13.939 15.373C13.918 15.15 13.907 15.039 13.939 14.935C13.971 14.832 14.043 14.748 14.186 14.581L14.316 14.429C14.819 13.841 15.071 13.547 14.983 13.264C14.895 12.982 14.526 12.899 13.788 12.732L13.598 12.688C13.388 12.641 13.283 12.618 13.198 12.553C13.114 12.489 13.06 12.393 12.952 12.199L12.854 12.023C12.474 11.34 12.284 11 12 11Z\"\n        fill=\"#9A8EE0\"\n      />\n    </svg>\n  );\n};\n\nexport const ErrorIcon = createIcon({\n  displayName: \"ErrorIcon\",\n  viewBox: \"0 0 24 24\",\n  d: \"M12 2.25C10.0716 2.25 8.18657 2.82183 6.58319 3.89317C4.97982 4.96451 3.73013 6.48726 2.99218 8.26884C2.25422 10.0504 2.06114 12.0108 2.43735 13.9021C2.81355 15.7934 3.74215 17.5307 5.10571 18.8943C6.46928 20.2579 8.20656 21.1865 10.0979 21.5627C11.9892 21.9389 13.9496 21.7458 15.7312 21.0078C17.5127 20.2699 19.0355 19.0202 20.1068 17.4168C21.1782 15.8134 21.75 13.9284 21.75 12C21.745 9.41566 20.7162 6.93859 18.8888 5.11118C17.0614 3.28378 14.5843 2.25496 12 2.25ZM12 20.25C10.3683 20.25 8.77326 19.7661 7.41655 18.8596C6.05984 17.9531 5.00242 16.6646 4.378 15.1571C3.75358 13.6496 3.5902 11.9908 3.90853 10.3905C4.22685 8.79016 5.01259 7.32015 6.16637 6.16637C7.32016 5.01259 8.79017 4.22685 10.3905 3.90852C11.9909 3.59019 13.6497 3.75357 15.1571 4.37799C16.6646 5.00242 17.9531 6.05984 18.8596 7.41655C19.7661 8.77325 20.25 10.3683 20.25 12C20.2475 14.1873 19.3775 16.2843 17.8309 17.8309C16.2843 19.3775 14.1873 20.2475 12 20.25ZM13.125 16.875C13.125 17.0975 13.059 17.315 12.9354 17.5C12.8118 17.685 12.6361 17.8292 12.4305 17.9144C12.225 17.9995 11.9988 18.0218 11.7805 17.9784C11.5623 17.935 11.3618 17.8278 11.2045 17.6705C11.0472 17.5132 10.94 17.3127 10.8966 17.0945C10.8532 16.8762 10.8755 16.65 10.9606 16.4445C11.0458 16.2389 11.19 16.0632 11.375 15.9396C11.56 15.816 11.7775 15.75 12 15.75C12.2984 15.75 12.5845 15.8685 12.7955 16.0795C13.0065 16.2905 13.125 16.5766 13.125 16.875ZM17.7844 11.4656C17.9252 11.6078 18.0042 11.7999 18.0042 12C18.0042 12.2001 17.9252 12.3922 17.7844 12.5344C17.641 12.673 17.4494 12.7505 17.25 12.7505C17.0506 12.7505 16.859 12.673 16.7156 12.5344L15.75 11.5594L14.7844 12.5344C14.641 12.673 14.4494 12.7505 14.25 12.7505C14.0506 12.7505 13.859 12.673 13.7156 12.5344C13.5748 12.3922 13.4958 12.2001 13.4958 12C13.4958 11.7999 13.5748 11.6078 13.7156 11.4656L14.6906 10.5L13.7156 9.53437C13.596 9.38865 13.5349 9.20366 13.5442 9.01537C13.5534 8.82708 13.6324 8.64896 13.7657 8.51566C13.899 8.38236 14.0771 8.3034 14.2654 8.29416C14.4537 8.28491 14.6387 8.34603 14.7844 8.46563L15.75 9.44062L16.7156 8.46563C16.8614 8.34603 17.0463 8.28491 17.2346 8.29416C17.4229 8.3034 17.601 8.38236 17.7343 8.51566C17.8676 8.64896 17.9466 8.82708 17.9558 9.01537C17.9651 9.20366 17.904 9.38865 17.7844 9.53437L16.8094 10.5L17.7844 11.4656ZM10.2844 9.53437L9.30938 10.5L10.2844 11.4656C10.4252 11.6078 10.5042 11.7999 10.5042 12C10.5042 12.2001 10.4252 12.3922 10.2844 12.5344C10.141 12.673 9.94942 12.7505 9.75 12.7505C9.55059 12.7505 9.35898 12.673 9.21563 12.5344L8.25 11.5594L7.28438 12.5344C7.14102 12.673 6.94942 12.7505 6.75 12.7505C6.55059 12.7505 6.35898 12.673 6.21563 12.5344C6.07479 12.3922 5.99579 12.2001 5.99579 12C5.99579 11.7999 6.07479 11.6078 6.21563 11.4656L7.19063 10.5L6.21563 9.53437C6.09603 9.38865 6.03491 9.20366 6.04416 9.01537C6.05341 8.82708 6.13236 8.64896 6.26566 8.51566C6.39896 8.38236 6.57708 8.3034 6.76537 8.29416C6.95366 8.28491 7.13866 8.34603 7.28438 8.46563L8.25 9.44062L9.21563 8.46563C9.36135 8.34603 9.54635 8.28491 9.73464 8.29416C9.92293 8.3034 10.101 8.38236 10.2343 8.51566C10.3676 8.64896 10.4466 8.82708 10.4558 9.01537C10.4651 9.20366 10.404 9.38865 10.2844 9.53437Z\",\n});\n\nexport const DocIcon = createIcon({\n  displayName: \"DocIcon\",\n  viewBox: \"0 0 21 20\",\n  d: \"M5.25407 1.6665C4.81204 1.6665 4.38812 1.8421 4.07556 2.15466C3.763 2.46722 3.5874 2.89114 3.5874 3.33317V16.6665C3.5874 17.1085 3.763 17.5325 4.07556 17.845C4.38812 18.1576 4.81204 18.3332 5.25407 18.3332H15.2541C15.6961 18.3332 16.12 18.1576 16.4326 17.845C16.7451 17.5325 16.9207 17.1085 16.9207 16.6665V6.6665L11.9207 1.6665H5.25407ZM5.25407 3.33317H11.0874V7.49984H15.2541V16.6665H5.25407V3.33317ZM6.92074 9.99984V11.6665H13.5874V9.99984H6.92074ZM6.92074 13.3332V14.9998H11.0874V13.3332H6.92074Z\",\n});\n\nexport const CopyIcon = (props: any) => {\n  return (\n    <svg\n      width={props.size}\n      height={props.size}\n      viewBox=\"0 0 14 15\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M2.33317 5.6665H8.1665C8.53378 5.6665 8.83317 5.9659 8.83317 6.33317V12.1665C8.83317 12.5338 8.53378 12.8332 8.1665 12.8332H2.33317C1.9659 12.8332 1.6665 12.5338 1.6665 12.1665V6.33317C1.6665 5.9659 1.9659 5.6665 2.33317 5.6665Z\"\n        fill={props.color}\n        stroke={props.color}\n      />\n      <path\n        d=\"M5.83317 2.1665H11.6665C11.8433 2.1665 12.0129 2.23674 12.1379 2.36177C12.2629 2.48679 12.3332 2.65636 12.3332 2.83317V8.6665C12.3332 8.84331 12.2629 9.01288 12.1379 9.13791C12.0129 9.26293 11.8433 9.33317 11.6665 9.33317H10.9998V5.1665C10.9998 4.72448 10.8242 4.30055 10.5117 3.98799C10.1991 3.67543 9.7752 3.49984 9.33317 3.49984H5.1665V2.83317C5.1665 2.65636 5.23674 2.48679 5.36177 2.36177C5.48679 2.23674 5.65636 2.1665 5.83317 2.1665Z\"\n        fill={props.color}\n        stroke={props.color}\n      />\n    </svg>\n  );\n};\n\nexport const OutlineCopyIcon = (props: any) => {\n  return (\n    <svg\n      width={props.size}\n      height={props.size}\n      viewBox=\"0 0 14 14\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M5.34612 1.63916C4.80212 1.63916 4.36112 2.08016 4.36112 2.62416V3.82295H5.53112V2.80916H11.0616V8.32843H10.1368V9.49843H11.2466C11.7906 9.49843 12.2316 9.05743 12.2316 8.51343V2.62416C12.2316 2.08016 11.7906 1.63916 11.2466 1.63916H5.34612Z\"\n        fill={props.color}\n      />\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M2.75203 4.27581C2.20803 4.27581 1.76703 4.71681 1.76703 5.26081V11.1501C1.76703 11.6941 2.20803 12.1351 2.75203 12.1351H8.65247C9.19647 12.1351 9.63747 11.6941 9.63747 11.1501V5.26081C9.63747 4.71681 9.19647 4.27581 8.65247 4.27581H2.75203ZM2.93703 10.9651V5.44581H8.46747V10.9651H2.93703Z\"\n        fill={props.color}\n      />\n    </svg>\n  );\n};\n\nexport const EditIconFull = () => {\n  return (\n    <svg width=\"13\" height=\"12\" viewBox=\"0 0 13 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M10.5339 0.342957C10.696 0.180928 10.9587 0.180928 11.1207 0.342958L12.0008 1.2231C12.1629 1.38513 12.1629 1.64783 12.0008 1.80986L11.2015 2.60919C11.0395 2.77121 10.7768 2.77121 10.6147 2.60919L9.7346 1.72905C9.57257 1.56702 9.57257 1.30431 9.7346 1.14229L10.5339 0.342957Z\"\n        fill=\"#BDC1C5\"\n      />\n      <path\n        d=\"M9.0616 2.40238C8.89957 2.24035 8.63687 2.24035 8.47484 2.40238L4.75459 6.12263C4.69463 6.18259 4.65685 6.25634 4.64127 6.33367C4.62771 6.36859 4.62027 6.40657 4.62027 6.44628V7.40412C4.62027 7.57598 4.75959 7.7153 4.93145 7.7153H5.90499C5.92585 7.7153 5.94623 7.71325 5.96594 7.70933C6.05918 7.70085 6.15011 7.66091 6.22149 7.58953L9.94174 3.86928C10.1038 3.70725 10.1038 3.44455 9.94174 3.28252L9.0616 2.40238Z\"\n        fill=\"#BDC1C5\"\n      />\n      <path\n        d=\"M3.89044 5.41938L8.42212 0.8877H1.58498C1.01212 0.8877 0.547729 1.35209 0.547729 1.92495V10.7416C0.547729 11.3145 1.01212 11.7789 1.58498 11.7789H10.4017C10.9745 11.7789 11.4389 11.3145 11.4389 10.7416V3.94046L6.92521 8.45415C6.90861 8.47075 6.88976 8.48505 6.87097 8.49929L6.85304 8.51301C6.78269 8.5679 6.69418 8.6006 6.59804 8.6006H4.158C3.92886 8.6006 3.7431 8.41485 3.7431 8.1857V5.74107C3.7431 5.63138 3.78567 5.53162 3.85519 5.45743L3.86839 5.443C3.87561 5.435 3.88283 5.42699 3.89044 5.41938Z\"\n        fill=\"#BDC1C5\"\n      />\n    </svg>\n  );\n};\n\nexport const EditIconLine = (props: any) => {\n  return (\n    <svg\n      width={props.size || \"14\"}\n      height={props.size || \"14\"}\n      viewBox=\"0 0 14 14\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M11.543 1.37033C11.6992 1.21412 11.9524 1.21412 12.1086 1.37033L13.0015 2.2632C13.1577 2.41941 13.1577 2.67268 13.0015 2.82889L12.2203 3.61013C12.0641 3.76634 11.8108 3.76634 11.6546 3.61013L10.7617 2.71725C10.6055 2.56105 10.6055 2.30778 10.7617 2.15157L11.543 1.37033Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M10.049 3.40223C9.89277 3.24602 9.63951 3.24602 9.4833 3.40223L5.23508 7.65045C5.18424 7.70128 5.14995 7.7624 5.1322 7.8271C5.11703 7.86298 5.10864 7.90243 5.10864 7.94383V8.92876C5.10864 9.09445 5.24296 9.22876 5.40864 9.22876H6.39134C6.40686 9.22876 6.42211 9.22758 6.43699 9.22531C6.53046 9.21921 6.6222 9.18044 6.69363 9.109L10.9419 4.86078C11.0981 4.70457 11.0981 4.45131 10.9419 4.2951L10.049 3.40223Z\"\n        fill={props.color}\n      />\n      <path\n        d=\"M2.57921 1.94995H9.41479L8.20811 3.15664H2.75454V11.5725H11.1704V6.15114L12.3771 4.94445V11.7478C12.3771 12.3174 11.9153 12.7792 11.3457 12.7792H2.57921C2.00961 12.7792 1.54785 12.3174 1.54785 11.7478V2.98131C1.54785 2.41171 2.0096 1.94995 2.57921 1.94995Z\"\n        fill={props.color}\n      />\n    </svg>\n  );\n};\n\nexport const DevelopIcon = createIcon({\n  displayName: \"DevelopIcon\",\n  viewBox: \"0 0 20 20\",\n  d: \"M7.35417 10L8.58333 8.77083C8.75 8.60417 8.83333 8.40972 8.83333 8.1875C8.83333 7.96528 8.75 7.77083 8.58333 7.60417C8.41667 7.4375 8.21889 7.35417 7.99 7.35417C7.76056 7.35417 7.5625 7.4375 7.39583 7.60417L5.58333 9.41667C5.5 9.5 5.44111 9.59028 5.40667 9.6875C5.37167 9.78472 5.35417 9.88889 5.35417 10C5.35417 10.1111 5.37167 10.2153 5.40667 10.3125C5.44111 10.4097 5.5 10.5 5.58333 10.5833L7.39583 12.3958C7.5625 12.5625 7.76056 12.6458 7.99 12.6458C8.21889 12.6458 8.41667 12.5625 8.58333 12.3958C8.75 12.2292 8.83333 12.0347 8.83333 11.8125C8.83333 11.5903 8.75 11.3958 8.58333 11.2292L7.35417 10ZM12.6458 10L11.4167 11.2292C11.25 11.3958 11.1667 11.5903 11.1667 11.8125C11.1667 12.0347 11.25 12.2292 11.4167 12.3958C11.5833 12.5625 11.7814 12.6458 12.0108 12.6458C12.2397 12.6458 12.4375 12.5625 12.6042 12.3958L14.4167 10.5833C14.5 10.5 14.5589 10.4097 14.5933 10.3125C14.6283 10.2153 14.6458 10.1111 14.6458 10C14.6458 9.88889 14.6283 9.78472 14.5933 9.6875C14.5589 9.59028 14.5 9.5 14.4167 9.41667L12.6042 7.60417C12.5208 7.52083 12.4272 7.45833 12.3233 7.41667C12.2189 7.375 12.1147 7.35417 12.0108 7.35417C11.9064 7.35417 11.8022 7.375 11.6983 7.41667C11.5939 7.45833 11.5 7.52083 11.4167 7.60417C11.25 7.77083 11.1667 7.96528 11.1667 8.1875C11.1667 8.40972 11.25 8.60417 11.4167 8.77083L12.6458 10ZM4.16667 17.5C3.70833 17.5 3.31583 17.3369 2.98917 17.0108C2.66306 16.6842 2.5 16.2917 2.5 15.8333V4.16667C2.5 3.70833 2.66306 3.31583 2.98917 2.98917C3.31583 2.66306 3.70833 2.5 4.16667 2.5H15.8333C16.2917 2.5 16.6842 2.66306 17.0108 2.98917C17.3369 3.31583 17.5 3.70833 17.5 4.16667V15.8333C17.5 16.2917 17.3369 16.6842 17.0108 17.0108C16.6842 17.3369 16.2917 17.5 15.8333 17.5H4.16667Z\",\n});\n\nexport const RecycleDeleteIcon = createIcon({\n  displayName: \"RecycleDeleteIcon\",\n  viewBox: \"0 0 16 17\",\n  d: \"M4.66666 14.5C4.29999 14.5 3.98599 14.3693 3.72466 14.108C3.46332 13.8467 3.33288 13.5329 3.33332 13.1667V4.5H2.66666V3.16667H5.99999V2.5H9.99999V3.16667H13.3333V4.5H12.6667V13.1667C12.6667 13.5333 12.536 13.8473 12.2747 14.1087C12.0133 14.37 11.6995 14.5004 11.3333 14.5H4.66666ZM11.3333 4.5H4.66666V13.1667H11.3333V4.5ZM5.99999 11.8333H7.33332V5.83333H5.99999V11.8333ZM8.66666 11.8333H9.99999V5.83333H8.66666V11.8333Z\",\n});\n\nexport const DatabaseIcon = createIcon({\n  displayName: \"DatabaseIcon\",\n  viewBox: \"0 0 14 15\",\n  d: \"M13.0727 10.2594C13.1861 10.47 13.1092 10.7322 12.9013 10.8485L12.8949 10.852L7.62227 13.6911C7.433 13.793 7.22159 13.8469 7.00663 13.848C6.79166 13.8491 6.57972 13.7973 6.38944 13.6973L6.37775 13.6911L1.10511 10.852C0.892371 10.7374 0.81276 10.4721 0.927317 10.2594C1.04072 10.0488 1.3019 9.96865 1.51354 10.0782L1.51994 10.0816L6.79261 12.9207C6.85529 12.9545 6.92527 12.9724 6.99647 12.973C7.06766 12.9736 7.13792 12.9568 7.20115 12.924L7.20744 12.9207L12.4801 10.0816C12.6928 9.96704 12.9582 10.0466 13.0727 10.2594H13.0727ZM13.0727 7.41563C13.1861 7.62625 13.1092 7.88841 12.9013 8.00477L12.8949 8.00825L7.62227 10.8474C7.433 10.9493 7.22159 11.0032 7.00663 11.0042C6.79166 11.0053 6.57972 10.9536 6.38944 10.8536L6.37775 10.8474L1.10511 8.00825C0.892371 7.8937 0.81276 7.62837 0.927317 7.41563C1.04072 7.20502 1.3019 7.1249 1.51354 7.23447L1.51994 7.23784L6.79261 10.077C6.85529 10.1107 6.92527 10.1287 6.99647 10.1293C7.06766 10.1298 7.13792 10.113 7.20115 10.0803L7.20744 10.077L12.4801 7.23784C12.6928 7.12329 12.9582 7.20288 13.0727 7.41563H13.0727ZM7.43682 1.17784L7.44486 1.18235L12.8721 4.26418C12.944 4.30503 13.0029 4.36544 13.0419 4.4384C13.1546 4.64937 13.077 4.91129 12.8686 5.02702L12.8623 5.03048L7.42523 7.93627C7.29987 8.00327 7.16007 8.03872 7.01793 8.03955C6.87579 8.04039 6.73558 8.00658 6.60944 7.94106L6.60171 7.93698L1.1413 5.03082C1.0678 4.9917 1.007 4.93243 0.966022 4.85996C0.848279 4.65174 0.919715 4.38805 1.12523 4.2674L1.13149 4.26379L6.58206 1.18156C6.71232 1.1079 6.85929 1.06887 7.00894 1.06822C7.15858 1.06756 7.3059 1.10529 7.4368 1.17781L7.43682 1.17784Z\",\n});\n\nexport const RefreshIcon = createIcon({\n  displayName: \"RefreshIcon\",\n  viewBox: \"0 0 16 17\",\n  d: \"M11.7667 4.73332C11.2079 4.1695 10.5296 3.7384 9.78187 3.47185C9.03415 3.2053 8.2361 3.11011 7.44667 3.19332C5 3.43999 2.98667 5.42665 2.71333 7.87332C2.34667 11.1067 4.84667 13.8333 8 13.8333C9.00674 13.8333 9.99281 13.5477 10.8437 13.0095C11.6945 12.4714 12.3752 11.7029 12.8067 10.7933C13.02 10.3467 12.7 9.83332 12.2067 9.83332C11.96 9.83332 11.7267 9.96665 11.62 10.1867C11.2329 11.0193 10.5709 11.6933 9.74528 12.0952C8.91965 12.4971 7.9808 12.6024 7.08667 12.3933C5.60667 12.0667 4.41333 10.86 4.1 9.37999C3.96829 8.79483 3.96981 8.18754 4.10446 7.60305C4.23911 7.01856 4.50344 6.47182 4.8779 6.00327C5.25236 5.53472 5.72736 5.15634 6.26778 4.89613C6.8082 4.63592 7.4002 4.50054 8 4.49999C9.10667 4.49999 10.0933 4.95999 10.8133 5.68665L9.80667 6.69332C9.38667 7.11332 9.68 7.83332 10.2733 7.83332H12.6667C13.0333 7.83332 13.3333 7.53332 13.3333 7.16665V4.77332C13.3333 4.17999 12.6133 3.87999 12.1933 4.29999L11.7667 4.73332Z\",\n});\n\nexport const ChevronLeftIcon = createIcon({\n  displayName: \"ChevronLeftIcon\",\n  viewBox: \"0 0 12 12\",\n  d: \"M5.414 5.99999L7.889 8.47499L7.182 9.18199L4 5.99999L7.182 2.81799L7.889 3.52499L5.414 5.99999Z\",\n});\n\nexport const ChevronRightIcon = createIcon({\n  displayName: \"ChevronRightIcon\",\n  viewBox: \"0 0 12 12\",\n  d: \"M6.58596 5.99999L4.11096 3.52499L4.81796 2.81799L7.99996 5.99999L4.81796 9.18199L4.11096 8.47499L6.58596 5.99999Z\",\n});\n\nexport const ArrowLeftIcon = createIcon({\n  displayName: \"ArrowLeftIcon\",\n  viewBox: \"0 0 12 12\",\n  d: \"M9.205 8.295L6.91 6L9.205 3.705L8.5 3L5.5 6L8.5 9L9.205 8.295ZM3 3H4V9H3V3Z\",\n});\n\nexport const ArrowRightIcon = createIcon({\n  displayName: \"ArrowRightIcon\",\n  viewBox: \"0 0 12 12\",\n  d: \"M2.79498 3.705L5.08998 6L2.79498 8.295L3.49998 9L6.49998 6L3.49998 3L2.79498 3.705ZM7.99998 3H8.99998V9H7.99998V3Z\",\n});\n\nexport const OutlineViewOnIcon = createIcon({\n  displayName: \"OutlineViewOnIcon\",\n  viewBox: \"0 0 14 14\",\n  d: \"M6.99992 3.49992C9.21075 3.49992 11.1824 4.74242 12.1449 6.70825C11.1824 8.67409 9.21075 9.91659 6.99992 9.91659C4.78909 9.91659 2.81742 8.67409 1.85492 6.70825C2.81742 4.74242 4.78909 3.49992 6.99992 3.49992ZM6.99992 2.33325C4.08325 2.33325 1.59242 4.14742 0.583252 6.70825C1.59242 9.26909 4.08325 11.0833 6.99992 11.0833C9.91659 11.0833 12.4074 9.26909 13.4166 6.70825C12.4074 4.14742 9.91659 2.33325 6.99992 2.33325ZM6.99992 5.24992C7.80492 5.24992 8.45825 5.90325 8.45825 6.70825C8.45825 7.51325 7.80492 8.16659 6.99992 8.16659C6.19492 8.16659 5.54159 7.51325 5.54159 6.70825C5.54159 5.90325 6.19492 5.24992 6.99992 5.24992ZM6.99992 4.08325C5.55325 4.08325 4.37492 5.26159 4.37492 6.70825C4.37492 8.15492 5.55325 9.33325 6.99992 9.33325C8.44659 9.33325 9.62492 8.15492 9.62492 6.70825C9.62492 5.26159 8.44659 4.08325 6.99992 4.08325Z\",\n});\n\nexport const OutlineViewOffIcon = createIcon({\n  displayName: \"OutlineViewOffIcon\",\n  viewBox: \"0 0 16 16\",\n  d: \"M1.33317 3.51341L2.1865 2.66675L13.3332 13.8134L12.4865 14.6667L10.4332 12.6134C9.6665 12.8667 8.85317 13.0001 7.99984 13.0001C4.6665 13.0001 1.81984 10.9267 0.666504 8.00008C1.1265 6.82675 1.85984 5.79341 2.79317 4.97341L1.33317 3.51341ZM7.99984 6.00008C8.53027 6.00008 9.03898 6.21079 9.41405 6.58587C9.78912 6.96094 9.99984 7.46965 9.99984 8.00008C10.0002 8.22713 9.96185 8.45257 9.8865 8.66675L7.33317 6.11341C7.54735 6.03807 7.77279 5.99974 7.99984 6.00008ZM7.99984 3.00008C11.3332 3.00008 14.1798 5.07341 15.3332 8.00008C14.7891 9.38222 13.8645 10.5819 12.6665 11.4601L11.7198 10.5067C12.6418 9.869 13.3853 9.00612 13.8798 8.00008C13.3409 6.90004 12.5041 5.97326 11.4647 5.32508C10.4252 4.67691 9.22481 4.33333 7.99984 4.33341C7.27317 4.33341 6.55984 4.45341 5.89317 4.66675L4.8665 3.64675C5.8265 3.23341 6.8865 3.00008 7.99984 3.00008ZM2.11984 8.00008C2.6588 9.10012 3.49555 10.0269 4.53499 10.6751C5.57443 11.3233 6.77486 11.6668 7.99984 11.6667C8.45984 11.6667 8.91317 11.6201 9.33317 11.5267L7.81317 10.0001C7.34928 9.95036 6.91639 9.74333 6.58649 9.41343C6.25659 9.08353 6.04956 8.65064 5.99984 8.18675L3.73317 5.91341C3.07317 6.48008 2.51984 7.18675 2.11984 8.00008Z\",\n});\n\nexport const LinkIcon = createIcon({\n  displayName: \"LinkIcon\",\n  viewBox: \"0 0 24 24\",\n  d: \"M15.7123 14.0621L14.8875 13.2373L15.7123 12.4125C16.2479 11.8632 16.5455 11.1251 16.5407 10.358C16.5359 9.59082 16.2291 8.85647 15.6866 8.31398C15.1442 7.77149 14.4099 7.46454 13.6428 7.45962C12.8757 7.45471 12.1375 7.75222 11.5882 8.28772L10.7622 9.11255L9.93791 8.28772L10.7627 7.46289C11.5286 6.69707 12.5672 6.26685 13.6502 6.26685C14.7333 6.26685 15.7719 6.69707 16.5377 7.46289C17.3036 8.2287 17.7338 9.26736 17.7338 10.3504C17.7338 11.4334 17.3036 12.4721 16.5377 13.2379L15.7123 14.0621ZM14.0627 15.7124L13.2378 16.5372C12.8586 16.9164 12.4085 17.2172 11.913 17.4224C11.4176 17.6276 10.8866 17.7333 10.3503 17.7333C9.81407 17.7333 9.28306 17.6276 8.78762 17.4224C8.29218 17.2172 7.84202 16.9164 7.46283 16.5372C7.08363 16.158 6.78284 15.7079 6.57763 15.2124C6.37241 14.717 6.26678 14.186 6.26678 13.6497C6.26678 13.1135 6.37241 12.5825 6.57763 12.087C6.78284 11.5916 7.08363 11.1414 7.46283 10.7622L8.28766 9.93739L9.11308 10.7622L8.28766 11.5876C7.75216 12.137 7.45465 12.8751 7.45956 13.6423C7.46448 14.4094 7.77143 15.1437 8.31392 15.6861C8.85641 16.2285 9.59076 16.5354 10.3579 16.5402C11.125 16.545 11.8632 16.2474 12.4124 15.7118L13.2378 14.8876L14.0627 15.7124ZM13.6502 9.52497L14.4751 10.3498L10.3503 14.4751L9.52549 13.6497L13.6497 9.52555L13.6502 9.52497Z\",\n});\n\nexport const UploadIcon = createIcon({\n  displayName: \"UploadIcon\",\n  viewBox: \"0 0 24 24\",\n  d: \"M6.5 20C4.98 20 3.68333 19.4767 2.61 18.43C1.53667 17.3767 1 16.0933 1 14.58C1 13.28 1.39 12.12 2.17 11.1C2.95667 10.08 3.98333 9.43 5.25 9.15C5.67 7.61667 6.50333 6.37667 7.75 5.43C9.00333 4.47667 10.42 4 12 4C13.9533 4 15.6067 4.68 16.96 6.04C18.32 7.39333 19 9.04667 19 11C20.1533 11.1333 21.1067 11.6333 21.86 12.5C22.62 13.3533 23 14.3533 23 15.5C23 16.7533 22.5633 17.8167 21.69 18.69C20.8167 19.5633 19.7533 20 18.5 20H13C12.4533 20 11.9833 19.8033 11.59 19.41C11.1967 19.0233 11 18.5533 11 18V12.85L9.4 14.4L8 13L12 9L16 13L14.6 14.4L13 12.85V18H18.5C19.2 18 19.79 17.7567 20.27 17.27C20.7567 16.79 21 16.2 21 15.5C21 14.8 20.7567 14.21 20.27 13.73C19.79 13.2433 19.2 13 18.5 13H17V11C17 9.62 16.5133 8.44 15.54 7.46C14.5667 6.48667 13.3867 6 12 6C10.62 6 9.44 6.48667 8.46 7.46C7.48667 8.44 7 9.62 7 11H6.5C5.53333 11 4.71 11.3433 4.03 12.03C3.34333 12.71 3 13.5333 3 14.5C3 15.4667 3.34333 16.3 4.03 17C4.71 17.6667 5.53333 18 6.5 18H9V20\",\n});\n\nexport const OutlineFolderAddIcon = createIcon({\n  displayName: \"OutlineFolderAddIcon\",\n  viewBox: \"0 0 24 24\",\n  d: \"M15 16C15.2833 16 15.521 15.904 15.713 15.712C15.9043 15.5207 16 15.2833 16 15V14H17C17.2833 14 17.5207 13.904 17.712 13.712C17.904 13.5207 18 13.2833 18 13C18 12.7167 17.904 12.479 17.712 12.287C17.5207 12.0957 17.2833 12 17 12H16V11C16 10.7167 15.9043 10.479 15.713 10.287C15.521 10.0957 15.2833 10 15 10C14.7167 10 14.4793 10.0957 14.288 10.287C14.096 10.479 14 10.7167 14 11V12H13C12.7167 12 12.4793 12.0957 12.288 12.287C12.096 12.479 12 12.7167 12 13C12 13.2833 12.096 13.5207 12.288 13.712C12.4793 13.904 12.7167 14 13 14H14V15C14 15.2833 14.096 15.5207 14.288 15.712C14.4793 15.904 14.7167 16 15 16ZM4 20C3.45 20 2.97933 19.8043 2.588 19.413C2.196 19.021 2 18.55 2 18V6C2 5.45 2.196 4.97933 2.588 4.588C2.97933 4.196 3.45 4 4 4H9.175C9.44167 4 9.696 4.05 9.938 4.15C10.1793 4.25 10.3917 4.39167 10.575 4.575L12 6H20C20.55 6 21.021 6.196 21.413 6.588C21.8043 6.97933 22 7.45 22 8V18C22 18.55 21.8043 19.021 21.413 19.413C21.021 19.8043 20.55 20 20 20H4ZM4 6V18H20V8H11.175L9.175 6H4ZM4 6V18V6Z\",\n});\n\nexport const CommonSettingIcon = createIcon({\n  displayName: \"CommonSettingIcon\",\n  viewBox: \"0 0 16 16\",\n  d: \"M1.5 4.54688C1.5 4.38526 1.5642 4.23026 1.67848 4.11598C1.79276 4.0017 1.94776 3.9375 2.10938 3.9375H13.8906C14.0522 3.9375 14.2072 4.0017 14.3215 4.11598C14.4358 4.23026 14.5 4.38526 14.5 4.54688C14.5 4.70849 14.4358 4.86349 14.3215 4.97777C14.2072 5.09205 14.0522 5.15625 13.8906 5.15625H2.10938C1.94776 5.15625 1.79276 5.09205 1.67848 4.97777C1.5642 4.86349 1.5 4.70849 1.5 4.54688ZM1.5 8C1.5 7.83838 1.5642 7.68339 1.67848 7.56911C1.79276 7.45483 1.94776 7.39062 2.10938 7.39062H13.8906C14.0522 7.39062 14.2072 7.45483 14.3215 7.56911C14.4358 7.68339 14.5 7.83838 14.5 8C14.5 8.16162 14.4358 8.31661 14.3215 8.43089C14.2072 8.54517 14.0522 8.60938 13.8906 8.60938H2.10938C1.94776 8.60938 1.79276 8.54517 1.67848 8.43089C1.5642 8.31661 1.5 8.16162 1.5 8ZM2.10938 10.8438C1.94776 10.8438 1.79276 10.908 1.67848 11.0222C1.5642 11.1365 1.5 11.2915 1.5 11.4531C1.5 11.6147 1.5642 11.7697 1.67848 11.884C1.79276 11.9983 1.94776 12.0625 2.10938 12.0625H9.82812C9.98974 12.0625 10.1447 11.9983 10.259 11.884C10.3733 11.7697 10.4375 11.6147 10.4375 11.4531C10.4375 11.2915 10.3733 11.1365 10.259 11.0222C10.1447 10.908 9.98974 10.8438 9.82812 10.8438H2.10938Z\",\n});\n\nexport const PauseIcon = createIcon({\n  displayName: \"PauseIcon\",\n  viewBox: \"0 0 1024 1024\",\n  d: \"M304 176h80v672h-80zM712 176h-64c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8z\",\n});\n\nexport const ContinueIcon = createIcon({\n  displayName: \"ContinueIcon\",\n  viewBox: \"0 0 1024 1024\",\n  d: \"M104 0v1024l816-512z\",\n});\n\nexport const DownIcon = (props: any) => {\n  return (\n    <svg\n      viewBox=\"0 0 1024 1024\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={props.size}\n      height={props.size}\n    >\n      <path\n        d=\"M486.4 537.6C492.8 544 505.6 544 512 544s19.2 0 25.6-6.4l224-224c12.8-12.8 12.8-32 0-44.8s-32-12.8-44.8 0L512 467.2 313.6 262.4C300.8 256 275.2 256 262.4 262.4S256 300.8 262.4 313.6L486.4 537.6z\"\n        fill={props.color}\n      ></path>\n      <path\n        d=\"M710.4 486.4 512 691.2 313.6 486.4c-12.8-12.8-32-12.8-44.8 0S256 524.8 262.4 537.6l224 224C492.8 768 505.6 768 512 768s19.2 0 25.6-6.4l224-224c12.8-12.8 12.8-32 0-44.8S723.2 480 710.4 486.4z\"\n        fill={props.color}\n      ></path>\n    </svg>\n  );\n};\nexport const AscendingIcon = createIcon({\n  displayName: \"AscendingIcon\",\n  viewBox: \"0 0 1024 1024\",\n  d: \"M666.656 452.992l45.888-44.608-258.24-265.664v782.816h64V300.352z\",\n});\n\nexport const DescendingIcon = createIcon({\n  displayName: \"DescendingIcon\",\n  viewBox: \"0 0 1024 1024\",\n  d: \"M372.16 615.264l-45.888 44.608 258.272 265.664V142.72h-64v625.152z\",\n});\n\nexport const SortingIcon = createIcon({\n  displayName: \"SortingIcon\",\n  viewBox: \"0 0 1024 1024\",\n  d: \"M610.624 128l258.24 265.664-45.856 44.608-148.384-152.64v625.184h-64V128zM160 659.84l45.888-44.576 148.384 152.64V142.72h64v782.816L160 659.872z\",\n});\n\nexport const ApiIcon = createIcon({\n  displayName: \"ApiIcon\",\n  viewBox: \"0 0 24 24\",\n  d: \"M7 7H5a2 2 0 0 0-2 2v8h2v-4h2v4h2V9a2 2 0 0 0-2-2m0 4H5V9h2m7-2h-4v10h2v-4h2a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2m0 4h-2V9h2m6 0v6h1v2h-4v-2h1V9h-1V7h4v2Z\",\n});\n"
  },
  {
    "path": "web/src/components/ConfirmButton/index.tsx",
    "content": "import React from \"react\";\nimport {\n  AlertDialog,\n  AlertDialogBody,\n  AlertDialogCloseButton,\n  AlertDialogContent,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogOverlay,\n  Box,\n  Button,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\ninterface ConfirmButtonProps {\n  onSuccessAction: React.MouseEventHandler<HTMLButtonElement>;\n  headerText: string;\n  bodyText: string | React.ReactElement | any;\n  confirmButtonText?: string;\n  hideContextMenu?: () => void;\n  children: React.ReactElement;\n}\n\nconst ConfirmButton = ({\n  onSuccessAction,\n  headerText,\n  bodyText,\n  confirmButtonText,\n  hideContextMenu,\n  children,\n}: ConfirmButtonProps) => {\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const cancelRef = React.useRef<any>();\n\n  const onSubmit: React.MouseEventHandler<HTMLButtonElement> = (event) => {\n    onSuccessAction(event);\n    onClose();\n    hideContextMenu && hideContextMenu();\n  };\n\n  return (\n    <>\n      {React.cloneElement(children, {\n        onClick: (event: any) => {\n          event?.stopPropagation();\n          onOpen();\n        },\n      })}\n\n      <AlertDialog isOpen={isOpen} leastDestructiveRef={cancelRef} onClose={onClose}>\n        <AlertDialogOverlay />\n        <AlertDialogContent>\n          <AlertDialogHeader fontSize=\"lg\" fontWeight=\"bold\">\n            {headerText}\n          </AlertDialogHeader>\n          <AlertDialogCloseButton />\n          <AlertDialogBody>\n            <Box>{bodyText}</Box>\n          </AlertDialogBody>\n\n          <AlertDialogFooter>\n            <Button colorScheme={\"red\"} onClick={onSubmit}>\n              {confirmButtonText && confirmButtonText.length !== 0\n                ? confirmButtonText\n                : t(\"Delete\")}\n            </Button>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </>\n  );\n};\nexport default ConfirmButton;\n"
  },
  {
    "path": "web/src/components/ConfirmDialog/index.tsx",
    "content": "import { useCallback, useRef, useState } from \"react\";\nimport {\n  AlertDialog,\n  AlertDialogBody,\n  AlertDialogCloseButton,\n  AlertDialogContent,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogOverlay,\n  Box,\n  Button,\n} from \"@chakra-ui/react\";\n\ninterface ConfirmDialogProps {\n  onConfirm: React.MouseEventHandler<HTMLButtonElement>;\n  headerText: string;\n  bodyText: string | React.ReactElement | any;\n  confirmButtonText?: string;\n  isOpen: boolean;\n  onClose: () => void;\n}\n\nconst ConfirmDialog = ({\n  onConfirm,\n  headerText,\n  bodyText,\n  confirmButtonText,\n  isOpen,\n  onClose,\n}: ConfirmDialogProps) => {\n  const cancelRef = useRef(null);\n\n  const onSubmit: React.MouseEventHandler<HTMLButtonElement> = (event) => {\n    onConfirm(event);\n    onClose();\n  };\n\n  return (\n    <AlertDialog isOpen={isOpen} leastDestructiveRef={cancelRef} onClose={onClose}>\n      <AlertDialogOverlay />\n      <AlertDialogContent>\n        <AlertDialogHeader fontSize=\"lg\" fontWeight=\"bold\">\n          {headerText}\n        </AlertDialogHeader>\n        <AlertDialogCloseButton />\n        <AlertDialogBody>\n          <Box>{bodyText}</Box>\n        </AlertDialogBody>\n        <AlertDialogFooter>\n          <Button onClick={onSubmit}>{confirmButtonText}</Button>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  );\n};\n\nexport const useConfirmDialog = () => {\n  const [isOpen, setOpen] = useState(false);\n  const [data, setData] = useState<Omit<Omit<ConfirmDialogProps, \"isOpen\">, \"onClose\"> | null>(\n    null,\n  );\n\n  const show = useCallback((data: Omit<Omit<ConfirmDialogProps, \"isOpen\">, \"onClose\">) => {\n    setOpen(true);\n    setData({\n      ...data,\n    });\n  }, []);\n\n  const onClose = useCallback(() => {\n    setOpen(false);\n  }, []);\n\n  const Dialog = useCallback(\n    () => (data ? <ConfirmDialog {...data} isOpen={isOpen} onClose={onClose} /> : <></>),\n    [data, isOpen, onClose],\n  );\n  return {\n    Dialog,\n    show,\n    onClose,\n    isOpen,\n  };\n};\n\nexport default ConfirmDialog;\n"
  },
  {
    "path": "web/src/components/Content/index.tsx",
    "content": "import React from \"react\";\n\nexport default function Content(props: { children: React.ReactNode }) {\n  return <div className=\"flex flex-1 flex-col space-y-1 overflow-hidden\">{props.children}</div>;\n}\n"
  },
  {
    "path": "web/src/components/CopyText/index.tsx",
    "content": "import React, { useEffect } from \"react\";\nimport { CopyIcon } from \"@chakra-ui/icons\";\nimport { Tooltip, useClipboard } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function CopyText(props: {\n  text?: string;\n  tip?: string;\n  className?: string;\n  children?: React.ReactElement;\n  hideToolTip?: boolean;\n}) {\n  const { onCopy, setValue } = useClipboard(\"\");\n  const { showSuccess } = useGlobalStore();\n\n  const {\n    children = <CopyIcon fontSize={10} color=\"#999\" />,\n    text,\n    tip,\n    className,\n    hideToolTip,\n  } = props;\n\n  useEffect(() => {\n    setValue(text || \"\");\n  }, [setValue, text]);\n\n  return (\n    <Tooltip label={hideToolTip ? \"\" : t(\"Copy\")} placement=\"top\">\n      {React.cloneElement(children, {\n        className: clsx(\"cursor-pointer\", className),\n        onClick: () => {\n          onCopy();\n          showSuccess(tip || t(\"Copied\"));\n        },\n      })}\n    </Tooltip>\n  );\n}\n"
  },
  {
    "path": "web/src/components/DateRangePicker/index.css",
    "content": ".rdp-day_selected {\n  background-color: #00a9a6 !important;\n  color: white !important;\n}\n"
  },
  {
    "path": "web/src/components/DateRangePicker/index.tsx",
    "content": "import { ChangeEventHandler, useMemo, useState } from \"react\";\nimport { DateRange, DayPicker, SelectRangeEventHandler } from \"react-day-picker\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  Box,\n  Button,\n  Input,\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { format, isAfter, isBefore, isValid, parse } from \"date-fns\";\nimport { es, zhCN } from \"date-fns/locale\";\n\nimport { CalendarIcon } from \"../CommonIcon\";\n\nimport \"./index.css\";\nimport \"react-day-picker/dist/style.css\";\n\nexport default function DateRangePicker(props: {\n  setStartTime: any;\n  setEndTime: any;\n  startTime: any;\n  endTime: any;\n}) {\n  const { setStartTime, setEndTime, startTime, endTime } = props;\n  const initState = useMemo(() => ({ from: startTime, to: endTime }), [startTime, endTime]);\n  const [selectedRange, setSelectedRange] = useState<DateRange>(initState);\n  const [fromValue, setFromValue] = useState<string>(format(initState.from, \"y-MM-dd\"));\n  const [toValue, setToValue] = useState<string>(format(initState.to, \"y-MM-dd\"));\n  const darkMode = useColorMode().colorMode === \"dark\";\n  const { i18n } = useTranslation();\n  const onClose = () => {\n    selectedRange.from && setStartTime(selectedRange.from);\n    selectedRange.to && setEndTime(selectedRange.to);\n  };\n  const handleFromChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n    setFromValue(e.target.value);\n    const date = parse(e.target.value, \"y-MM-dd\", new Date());\n    if (!isValid(date)) {\n      return setSelectedRange({ from: undefined, to: undefined });\n    }\n    if (selectedRange?.to && isAfter(date, selectedRange.to)) {\n      setSelectedRange({ from: selectedRange.to, to: date });\n    } else {\n      setSelectedRange({ from: date, to: selectedRange?.to });\n    }\n  };\n\n  const handleToChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n    setToValue(e.target.value);\n    const date = parse(e.target.value, \"y-MM-dd\", new Date());\n\n    if (!isValid(date)) {\n      return setSelectedRange({ from: selectedRange?.from, to: undefined });\n    }\n    if (selectedRange?.from && isBefore(date, selectedRange.from)) {\n      setSelectedRange({ from: date, to: selectedRange.from });\n    } else {\n      setSelectedRange({ from: selectedRange?.from, to: date });\n    }\n  };\n\n  const handleRangeSelect: SelectRangeEventHandler = (range: DateRange | undefined) => {\n    if (range) {\n      setSelectedRange(range);\n      if (range?.from) {\n        setFromValue(format(range.from, \"y-MM-dd\"));\n      } else {\n        setFromValue(\"\");\n      }\n      if (range?.to) {\n        setToValue(format(range.to, \"y-MM-dd\"));\n      } else {\n        setToValue(\"\");\n      }\n    }\n  };\n  return (\n    <div\n      className={clsx(\n        \"flex h-8 w-64 rounded-md border border-frostyNightfall-200\",\n        !darkMode && \"bg-lafWhite-500\",\n      )}\n    >\n      <Input\n        variant={\"unstyled\"}\n        value={fromValue}\n        onChange={handleFromChange}\n        className=\"flex-1 text-center\"\n      />\n      <Box>-</Box>\n      <Input\n        variant={\"unstyled\"}\n        value={toValue}\n        onChange={handleToChange}\n        className=\"flex-1 text-center\"\n      />\n      <Popover onClose={onClose}>\n        <PopoverTrigger>\n          <Button variant=\"none\" px={0} mr={2} minW={4}>\n            <CalendarIcon className=\"pb-[2px] !text-grayModern-500\" fontSize=\"18\" />\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent zIndex={99}>\n          <DayPicker\n            mode=\"range\"\n            locale={i18n.language === \"en\" ? es : zhCN}\n            selected={selectedRange}\n            onSelect={handleRangeSelect}\n            styles={{\n              day: {\n                transition: \"all 0.2s ease-in-out\",\n                borderRadius: \"unset\",\n              },\n            }}\n          />\n        </PopoverContent>\n      </Popover>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/components/DependenceList/index.module.scss",
    "content": ".dependenceList {\n  max-height: 60vh;\n  overflow: auto;\n\n  li {\n    cursor: pointer;\n    display: flex;\n    min-height: 80px;\n    align-items: center;\n    justify-content: space-between;\n    padding: 5px 8px;\n\n    span {\n      vertical-align: middle;\n    }\n  }\n}\n"
  },
  {
    "path": "web/src/components/DependenceList/index.tsx",
    "content": "import React from \"react\";\nimport { useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\nimport styles from \"./index.module.scss\";\n\nfunction DependenceList(props: { children: React.ReactNode; style?: React.CSSProperties }) {\n  return (\n    <ul className={styles.dependenceList + \" ml-4\"} style={props.style || {}}>\n      {props.children}\n    </ul>\n  );\n}\n\nfunction Item(props: {\n  children: React.ReactNode;\n  isActive: boolean;\n  className?: string;\n  style?: React.CSSProperties;\n  key: string;\n  onClick: () => void;\n}) {\n  const { children, isActive, onClick, className, style } = props;\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  return (\n    <li\n      style={style || {}}\n      className={clsx(className, {\n        \"bg-primary-100\": !darkMode && isActive,\n        \"hover:bg-primary-100\": !darkMode,\n        \"hover:bg-lafDark-100\": darkMode,\n        \"bg-lafDark-100\": darkMode && isActive,\n      })}\n      onClick={onClick}\n    >\n      {children}\n    </li>\n  );\n}\n\nDependenceList.Item = Item;\n\nexport default DependenceList;\n"
  },
  {
    "path": "web/src/components/DotBadge/index.tsx",
    "content": "import { Box } from \"@chakra-ui/react\";\n\nexport default function DotBadge({\n  text,\n  type = \"success\",\n}: {\n  text: React.ReactNode;\n  type?: \"success\" | \"warning\" | \"error\" | \"info\";\n}) {\n  let color = \"\";\n  let bgColor = \"bg-primary-600\";\n  switch (type) {\n    case \"success\":\n      color = \"text-primary-600\";\n      bgColor = \"bg-primary-600\";\n      break;\n    case \"warning\":\n      color = \"text-warn-600\";\n      bgColor = \"bg-warn-600\";\n      break;\n    case \"error\":\n      color = \"text-error-600\";\n      bgColor = \"bg-error-600\";\n      break;\n    case \"info\":\n      color = \"text-blue-500\";\n      bgColor = \"bg-blue-600\";\n      break;\n    default:\n      break;\n  }\n  return (\n    <Box>\n      <span className={\"mr-1 inline-block h-[6px] w-[6px] rounded-full \" + bgColor}></span>\n      <span className={color}>{text}</span>\n    </Box>\n  );\n}\n"
  },
  {
    "path": "web/src/components/EditableTable/EditableTr/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { FormControl, FormErrorMessage, Input, Td } from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport TextButton from \"../../TextButton\";\nexport type TConfiguration = {\n  key: string;\n  tableHeight?: string;\n  hiddenEditButton?: boolean;\n  addButtonText?: string;\n  editButtonText?: string;\n  deleteButtonText?: string;\n  saveButtonText?: string;\n  cancelButtonText?: string;\n  operationButtonsRender?: (data: any) => any;\n};\n\nexport type TColumnItem = {\n  name: string;\n  key: string;\n  width?: string;\n  editable?: boolean;\n  defaultValue?: string | number | any;\n  validate?: ((\n    data: any,\n    index: number,\n  ) => {\n    isValidate: boolean;\n    errorInfo: string;\n  })[];\n  editComponent?: (data: {\n    value: any;\n    onBlur: (e: any) => any;\n    onChange: (e: any) => any;\n    disabled: boolean;\n  }) => React.ReactElement; //编辑组件\n};\n\nconst EditableTr = function (props: {\n  index: number;\n  isCreate?: boolean;\n  column: TColumnItem[];\n  data: any;\n  configuration: TConfiguration;\n  onSave: (data: any) => void;\n  onCancel: (data: any) => void;\n}) {\n  const { index, isCreate, data, column, configuration, onSave, onCancel } = props;\n  const [formData, setFormData] = useState(data);\n  const [invalidData, setInvalidData] = useState<{\n    [key: string]: { isValidate: boolean; errorInfo: string };\n  }>();\n\n  useEffect(() => {\n    setFormData({ ...data });\n  }, [data]);\n\n  useEffect(() => {\n    const newData: any = {};\n    column.forEach((item: TColumnItem) => {\n      newData[item.key] = {\n        isValidate: true,\n        errorInfo: \"\",\n      };\n    });\n    setInvalidData(newData);\n  }, [column]);\n\n  const handleValidate = function (\n    key: string,\n    value: any,\n    validate:\n      | undefined\n      | ((\n          data: any,\n          index: number,\n        ) => {\n          isValidate: boolean;\n          errorInfo: string;\n        })[],\n  ) {\n    const newData = { ...invalidData };\n    newData[key] = {\n      isValidate: true,\n      errorInfo: \"\",\n    };\n    for (let method of validate || []) {\n      //  parameter Index: In order to judge whether the new added data\n      //  is duplicated with the data in the list\n      const { isValidate, errorInfo } = method(value, index);\n      if (!isValidate) {\n        newData[key] = {\n          isValidate: isValidate,\n          errorInfo,\n        };\n        break;\n      }\n    }\n    setInvalidData(newData);\n    return newData[key].isValidate;\n  };\n\n  const handleChange = function (\n    e: any,\n    key: string,\n    validate:\n      | undefined\n      | ((\n          data: any,\n          index: number,\n        ) => {\n          isValidate: boolean;\n          errorInfo: string;\n        })[],\n  ) {\n    const newData = { ...formData };\n    newData[key] = e.target.value;\n    setFormData(newData);\n    handleValidate(key, e.target.value, validate);\n  };\n\n  return (\n    <>\n      {column.map((item: TColumnItem) => {\n        const { width, key, editable = true, validate, editComponent } = item;\n        return (\n          <Td maxWidth={width || undefined} key={key} className=\"!py-[10px]\">\n            <FormControl isInvalid={invalidData && !invalidData[key].isValidate}>\n              {editComponent ? (\n                editComponent({\n                  value: formData[key],\n                  onBlur: (e: any) => handleChange(e, key, validate),\n                  onChange: (e: any) => handleChange(e, key, validate),\n                  disabled: !editable && !isCreate,\n                })\n              ) : (\n                <Input\n                  resize=\"vertical\"\n                  size=\"sm\"\n                  value={formData[key]}\n                  onBlur={(e: any) => handleChange(e, key, validate)}\n                  onChange={(e: any) => handleChange(e, key, validate)}\n                  disabled={!editable && !isCreate}\n                  placeholder={`${t(\"InputTip\").toString()} ${key}`}\n                  className=\"!bg-lafWhite-500 !pl-2\"\n                  style={{ fontFamily: \"Inter\" }}\n                />\n              )}\n              <FormErrorMessage>{invalidData && invalidData[key].errorInfo}</FormErrorMessage>\n            </FormControl>\n          </Td>\n        );\n      })}\n      <Td className=\"mr-1 flex justify-end !py-[18px]\">\n        <TextButton\n          text={configuration?.saveButtonText ? configuration.saveButtonText : t(\"Confirm\")}\n          type=\"submit\"\n          onClick={() => {\n            let flag = true;\n            for (let { validate, key } of column) {\n              flag = validate && !handleValidate(key, formData[key], validate) ? false : flag;\n              if (!flag) {\n                break;\n              }\n            }\n            if (flag) {\n              onSave(formData);\n            }\n          }}\n        />\n        <TextButton\n          text={configuration?.cancelButtonText ? configuration.cancelButtonText : t(\"Cancel\")}\n          className=\"ml-3\"\n          onClick={() => {\n            onCancel(formData[configuration.key]);\n          }}\n        />\n      </Td>\n    </>\n  );\n};\nexport default EditableTr;\n"
  },
  {
    "path": "web/src/components/EditableTable/NormalTr/index.tsx",
    "content": "import { Td } from \"@chakra-ui/react\";\nimport { useColorMode } from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { EditIconLine, RecycleDeleteIcon } from \"@/components/CommonIcon\";\nimport IconWrap from \"@/components/IconWrap\";\n\nimport { TColumnItem, TConfiguration } from \"../EditableTr\";\n\nimport styles from \"../index.module.scss\";\n\nconst NormalTr = function (props: {\n  column: TColumnItem[];\n  data: any;\n  onEdit: (id: string) => void;\n  onDelete: (id: string) => void;\n  configuration: TConfiguration;\n}) {\n  const { data, column, configuration, onEdit, onDelete } = props;\n  const darkMode = useColorMode().colorMode === \"dark\";\n  return (\n    <>\n      {column.map((item: TColumnItem) => {\n        return (\n          <Td maxWidth={item?.width} key={item.key} className={`${styles.text}`}>\n            <span>{data[item.key]}</span>\n          </Td>\n        );\n      })}\n      <Td className=\"mr-4 flex items-end justify-end\">\n        {configuration?.operationButtonsRender ? configuration.operationButtonsRender(data) : null}\n        {!configuration?.hiddenEditButton ? (\n          <IconWrap\n            className=\"mr-4\"\n            tooltip={\n              configuration?.editButtonText ? configuration.editButtonText : t(\"Edit\").toString()\n            }\n            size={20}\n            onClick={() => onEdit(data[configuration.key])}\n          >\n            <EditIconLine color={darkMode ? \"white\" : \"black\"} size={12} />\n          </IconWrap>\n        ) : null}\n        <IconWrap\n          tooltip={\n            configuration?.deleteButtonText ? configuration.deleteButtonText : String(t(\"Delete\"))\n          }\n          onClick={() => onDelete(data[configuration.key])}\n        >\n          <RecycleDeleteIcon fontSize={15} />\n        </IconWrap>\n      </Td>\n    </>\n  );\n};\n\nexport default NormalTr;\n"
  },
  {
    "path": "web/src/components/EditableTable/index.module.scss",
    "content": ".text {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  font-family: Inter;\n}\n"
  },
  {
    "path": "web/src/components/EditableTable/index.tsx",
    "content": "import { useEffect, useRef, useState } from \"react\";\nimport { AddIcon } from \"@chakra-ui/icons\";\nimport {\n  Button,\n  Table,\n  TableContainer,\n  Tbody,\n  Th,\n  Thead,\n  Tr,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\nimport EditableTr, { TColumnItem, TConfiguration } from \"./EditableTr\";\nimport NormalTr from \"./NormalTr\";\n\nconst EditableTable = function (props: {\n  column: TColumnItem[];\n  tableData: any[] | undefined;\n  configuration: TConfiguration;\n  onEdit: (data: any) => any;\n  onDelete: (data: any) => any;\n  onCreate: (data: any) => any;\n}) {\n  const { column, tableData, configuration, onEdit, onCreate, onDelete } = props;\n  const [columnList, setColumnList] = useState<TColumnItem[]>(column);\n  const [tableList, setTableList] = useState<any[]>([]);\n  const [isCreate, setIsCreate] = useState<boolean>(false);\n  const [createData, setCreateData] = useState<any>({});\n  const tableRef = useRef<any>(null);\n\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  useEffect(() => {\n    setColumnList(column);\n  }, [column, setColumnList]);\n\n  useEffect(() => {\n    const newData = (tableData || []).map((item: any) => {\n      return {\n        ...item,\n        isEdit: false,\n      };\n    });\n    setTableList(newData);\n  }, [tableData, setTableList]);\n\n  const handleSwitchEdit = function (key: string, status: boolean) {\n    const newList = tableList?.map((item: any) => {\n      return {\n        ...item,\n        isEdit: item[configuration.key] === key ? status : item.isEdit,\n      };\n    });\n    setTableList(newList);\n  };\n\n  const handleAdd = function () {\n    setTimeout(() => {\n      tableRef.current?.scrollTo({\n        top: tableRef.current.scrollHeight,\n        behavior: \"smooth\",\n      });\n    }, 100);\n\n    if (isCreate) {\n      return false;\n    }\n    const newItem: any = { isEdit: true };\n    for (let { key, defaultValue } of column) {\n      newItem[key] = defaultValue || \"\";\n    }\n    setCreateData(newItem);\n    setIsCreate(true);\n  };\n\n  return (\n    <>\n      <div\n        className={clsx(\"relative rounded-t-md border border-b-0\", {\n          \"border-frostyNightfall-200\": !darkMode,\n        })}\n      >\n        <TableContainer\n          roundedTop={\"md\"}\n          h={configuration?.tableHeight || \"250px\"}\n          overflowY=\"auto\"\n          ref={tableRef}\n        >\n          <Table variant=\"simple\">\n            <Thead\n              className={clsx(\"border-b\", {\n                \"bg-lafWhite-300\": !darkMode,\n                \"text-grayModern-500\": !darkMode,\n              })}\n            >\n              <Tr>\n                {columnList.map((item: TColumnItem) => {\n                  return <Th key={item.key}>{item.name}</Th>;\n                })}\n                <Th key=\"operation\" isNumeric>\n                  {t(\"Operation\")}\n                </Th>\n              </Tr>\n            </Thead>\n            <Tbody className=\"font-mono\">\n              {(tableList || []).map((item: any, index: number) => {\n                const generalParameters = {\n                  configuration,\n                  column: columnList,\n                  data: item,\n                };\n                return (\n                  <Tr\n                    key={item[configuration.key]}\n                    className={clsx(\"!h-12 border-b\", {\n                      \"hover:bg-lafWhite-300\": !darkMode,\n                      \"border-frostyNightfall-200\": !darkMode,\n                    })}\n                  >\n                    {item.isEdit ? (\n                      <EditableTr\n                        index={index}\n                        {...generalParameters}\n                        onSave={(newData: any) => {\n                          const data = { ...newData };\n                          delete data.isEdit;\n                          onEdit({ newData: data, item });\n                        }}\n                        onCancel={(key: string) => handleSwitchEdit(key, false)}\n                      />\n                    ) : (\n                      <NormalTr\n                        {...generalParameters}\n                        onEdit={(key: string) => handleSwitchEdit(key, true)}\n                        onDelete={(key: string) => onDelete && onDelete(key)}\n                      />\n                    )}\n                  </Tr>\n                );\n              })}\n              <Tr\n                key=\"create\"\n                className={clsx({\n                  \"hover:bg-lafWhite-300\": !darkMode,\n                })}\n              >\n                {isCreate ? (\n                  <EditableTr\n                    index={-1}\n                    configuration={configuration}\n                    column={columnList}\n                    isCreate={true}\n                    data={createData}\n                    onSave={async (newData: any) => {\n                      const data = { ...newData };\n                      delete data.isEdit;\n                      await onCreate(data);\n                      setIsCreate(false);\n                      setCreateData({});\n                    }}\n                    onCancel={() => setIsCreate(false)}\n                  />\n                ) : null}\n              </Tr>\n            </Tbody>\n          </Table>\n        </TableContainer>\n      </div>\n      <Button\n        leftIcon={<AddIcon />}\n        style={{\n          borderTopLeftRadius: 0,\n          borderTopRightRadius: 0,\n          borderBottomRightRadius: \"10px\",\n          borderBottomLeftRadius: \"10px\",\n          color: \"#7B838B\",\n          fontWeight: 400,\n          fontSize: \"12px\",\n          width: \"100%\",\n          height: \"48px\",\n        }}\n        onClick={handleAdd}\n        variant=\"outline\"\n      >\n        {configuration?.addButtonText ? configuration.addButtonText : t(\"AddData\")}\n      </Button>\n    </>\n  );\n};\n\nexport default EditableTable;\n"
  },
  {
    "path": "web/src/components/Editor/CommonDiffEditor.tsx",
    "content": "import { useColorMode } from \"@chakra-ui/react\";\nimport { DiffEditor } from \"@monaco-editor/react\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\nexport default function CommonDiffEditor(props: { original: string; modified: string }) {\n  const { original, modified } = props;\n  const { colorMode } = useColorMode();\n\n  const options = {\n    readOnly: true,\n    automaticLayout: true,\n    minimap: {\n      enabled: false,\n    },\n    renderOverviewRuler: false,\n    fontSize: 14,\n    scrollBeyondLastLine: false,\n    scrollbar: {\n      verticalScrollbarSize: 4,\n      horizontalScrollbarSize: 6,\n      alwaysConsumeMouseWheel: false,\n    },\n  };\n  return (\n    <DiffEditor\n      original={original}\n      modified={modified}\n      height={\"70vh\"}\n      options={options}\n      language=\"typescript\"\n      theme={colorMode === COLOR_MODE.dark ? \"vs-dark\" : \"vs\"}\n    />\n  );\n}\n"
  },
  {
    "path": "web/src/components/Editor/ENVCodeEditor.tsx",
    "content": "import Editor from \"@monaco-editor/react\";\nimport { LineNumbersType } from \"vscode/vscode/vs/editor/common/config/editorOptions\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\nconst languageId = \"dotenv\";\n\nfunction ENVCodeEditor(props: {\n  value: string;\n  height?: string;\n  colorMode?: string;\n  onChange?: (value: string | undefined) => void;\n}) {\n  const { value, onChange, height = \"100%\", colorMode = COLOR_MODE.light } = props;\n  const options = {\n    lineNumbers: \"off\" as LineNumbersType,\n    guides: {\n      indentation: false,\n    },\n    automaticLayout: true,\n    minimap: {\n      enabled: false,\n    },\n    scrollbar: {\n      verticalScrollbarSize: 4,\n      horizontalScrollbarSize: 8,\n      alwaysConsumeMouseWheel: false,\n    },\n    lineNumbersMinChars: 0,\n    fontSize: 13,\n    scrollBeyondLastLine: false,\n    folding: false,\n    overviewRulerBorder: false,\n    tabSize: 2,\n  };\n\n  return (\n    <Editor\n      height={height}\n      value={value}\n      options={options}\n      onChange={onChange}\n      defaultLanguage={languageId}\n      theme={colorMode === COLOR_MODE.dark ? \"vs-dark\" : \"vs\"}\n      beforeMount={(monaco) => {\n        monaco.languages.register({\n          id: languageId,\n        });\n\n        monaco.languages.setMonarchTokensProvider(languageId, {\n          tokenizer: {\n            root: [\n              [/^\\w+(?==)/, \"key\"],\n              [/(=)([^=]*)$/, [\"operator\", \"value\"]],\n              [/^#.*/, \"comment\"],\n              // new lines\n              [/.*/, \"value\"],\n            ],\n          },\n        });\n      }}\n    />\n  );\n}\n\nexport default ENVCodeEditor;\n"
  },
  {
    "path": "web/src/components/Editor/ENVEditor.tsx",
    "content": "import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Switch } from \"@chakra-ui/react\";\n\nimport EditableTable from \"../EditableTable\";\n\nimport ENVCodeEditor from \"./ENVCodeEditor\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function ENVEditor(props: {\n  env: Array<{ name: string; value: string }>;\n  setEnv: any;\n  setPureEnv?: any;\n  showSwitch?: boolean;\n}) {\n  const { t } = useTranslation();\n  const { env, setEnv, setPureEnv, showSwitch = true } = props;\n  const globalStore = useGlobalStore();\n  const [isEditorMode, setIsEditorMode] = useState(false);\n\n  return (\n    <div className=\"h-[80%]\">\n      {showSwitch && isEditorMode ? (\n        <div className=\"h-[379px] rounded-lg border px-4 pt-4\">\n          <ENVCodeEditor\n            value={env\n              .map((item) => {\n                return `${item.name}=${item.value}`;\n              })\n              .join(\"\\n\")}\n            onChange={(value) => {\n              setPureEnv(value);\n            }}\n          />\n        </div>\n      ) : (\n        <EditableTable\n          column={[\n            {\n              name: \"Key\",\n              key: \"name\",\n              width: \"130px\",\n              validate: [\n                (data: any) => {\n                  return {\n                    isValidate: data !== \"\",\n                    errorInfo: t(\"KeyCannotBeEmpty\").toString(),\n                  };\n                },\n              ],\n            },\n            {\n              name: \"Value\",\n              key: \"value\",\n              width: \"290px\",\n              validate: [\n                (data: any) => {\n                  return {\n                    isValidate: data !== \"\",\n                    errorInfo: t(\"ValueCannotBeEmpty\").toString(),\n                  };\n                },\n              ],\n            },\n          ]}\n          configuration={{\n            key: \"name\",\n            tableHeight: \"330px\",\n            hiddenEditButton: false,\n            addButtonText: String(t(\"AddENV\")),\n            saveButtonText: String(t(\"Confirm\")),\n          }}\n          tableData={env}\n          onEdit={(data) => {\n            setEnv(\n              env.map((item) => {\n                if (item.name === data.item.name) {\n                  return data.newData;\n                }\n                return item;\n              }),\n            );\n          }}\n          onDelete={(data) => {\n            setEnv(env.filter((item) => item.name !== data));\n          }}\n          onCreate={(data) => {\n            if (env.find((item) => item.name === data.name)) {\n              globalStore.showError(t(\"KeyAlreadyExists\").toString());\n              return;\n            }\n            setEnv([...env, data]);\n          }}\n        />\n      )}\n      {showSwitch && (\n        <div className=\"mt-4 flex w-full items-center\">\n          <Switch\n            className=\"mr-2\"\n            size={\"sm\"}\n            defaultChecked={isEditorMode}\n            onChange={() => setIsEditorMode((prev) => !prev)}\n          />\n          <span>{t(\"SettingPanel.EditorMode\")}</span>\n        </div>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/components/Editor/FunctionEditor.tsx",
    "content": "import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useCompletionFeature } from \"react-monaco-copilot\";\nimport * as monaco from \"monaco-editor/esm/vs/editor/editor.api\";\nimport {\n  RegisteredFileSystemProvider,\n  RegisteredMemoryFile,\n  registerFileSystemOverlay,\n} from \"vscode/service-override/files\";\n\nimport { APP_STATUS, COLOR_MODE, RUNTIMES_PATH } from \"@/constants\";\n\nimport \"./useWorker\";\n\nimport { createUrl, createWebSocketAndStartClient, performInit } from \"./LanguageClient\";\n\nimport { TFunction } from \"@/apis/typing\";\nimport useFunctionCache from \"@/hooks/useFunctionCache\";\nimport useFunctionStore from \"@/pages/app/functions/store\";\nimport useCustomSettingStore from \"@/pages/customSetting\";\nimport useGlobalStore from \"@/pages/globalStore\";\nimport useSiteSettingStore from \"@/pages/siteSetting\";\n\nexport const fileSystemProvider = new RegisteredFileSystemProvider(false);\nregisterFileSystemOverlay(1, fileSystemProvider);\nconst updateModel = (path: string, editorRef: any) => {\n  const newModel = monaco.editor.getModel(monaco.Uri.file(path));\n\n  if (editorRef.current?.getModel() !== newModel) {\n    editorRef.current?.setModel(newModel);\n  }\n};\n\nfunction FunctionEditor(props: {\n  className?: string;\n  onChange?: (code: string | undefined, pos: any) => void;\n  path: string;\n  colorMode?: string;\n  fontSize?: number;\n  value?: string;\n}) {\n  const { onChange, path, className, colorMode = COLOR_MODE.light, fontSize = 14, value } = props;\n\n  const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n  const subscriptionRef = useRef<monaco.IDisposable | undefined>(undefined);\n  const monacoEl = useRef(null);\n  const globalStore = useGlobalStore((state) => state);\n  const { allFunctionList, setLSPStatus, LSPStatus } = useFunctionStore((state) => state);\n  const { commonSettings } = useCustomSettingStore();\n  const { siteSettings } = useSiteSettingStore();\n\n  const functionCache = useFunctionCache();\n  const [functionList, setFunctionList] = useState(allFunctionList);\n  const baseUrl = globalStore.currentApp.host;\n  const url = useMemo(() => {\n    try {\n      return createUrl(baseUrl, \"/_/lsp\");\n    } catch {\n      return \"\";\n    }\n  }, [baseUrl]);\n\n  const aiCompleteUrl = siteSettings.ai_complete_url?.value;\n  const completionFeature = useCompletionFeature({\n    monaco: monaco,\n    editor: editorRef.current,\n    apiUrl: aiCompleteUrl || \"\",\n  });\n\n  useEffect(() => {\n    const startLSP = () => {\n      const lspWebSocket = createWebSocketAndStartClient(url, globalStore.currentApp.develop_token);\n      setLSPStatus(\"initializing\");\n\n      const abortController = new AbortController();\n\n      lspWebSocket.addEventListener(\n        \"message\",\n        (event) => {\n          const message = JSON.parse(event.data);\n          if (message.method === \"textDocument/publishDiagnostics\") {\n            setLSPStatus(\"ready\");\n            return;\n          }\n        },\n        abortController,\n      );\n\n      lspWebSocket.addEventListener(\n        \"close\",\n        () => {\n          setLSPStatus(\"closed\");\n        },\n        abortController,\n      );\n\n      lspWebSocket.addEventListener(\n        \"error\",\n        () => {\n          setLSPStatus(\"error\");\n          lspWebSocket?.close();\n        },\n        abortController,\n      );\n\n      window.onbeforeunload = () => {\n        // On page reload/exit, close web socket connection\n        lspWebSocket.close();\n        setLSPStatus(\"closed\");\n      };\n\n      return () => {\n        // On component unmount, close web socket connection\n        abortController.abort();\n        lspWebSocket.close();\n        setLSPStatus(\"closed\");\n      };\n    };\n    if (globalStore.currentApp.state === APP_STATUS.Running && url) {\n      return startLSP();\n    }\n  }, [globalStore.currentApp.develop_token, globalStore.currentApp.state, url]);\n\n  useEffect(() => {\n    const listener = (event: any) => {\n      if (event?.reason?.message?.includes(\"Unable to resolve nonexistent file\")) {\n        event.preventDefault();\n      }\n    };\n\n    window.addEventListener(\"unhandledrejection\", listener);\n    return () => {\n      window.removeEventListener(\"unhandledrejection\", listener);\n    };\n  }, [LSPStatus]);\n\n  useEffect(() => {\n    if (monacoEl && !editorRef.current) {\n      performInit(true)\n        .catch((e) => {\n          if (e.message?.includes(\"already initialized\")) {\n            return;\n          }\n          throw e;\n        })\n        .then(() => {\n          editorRef.current = monaco.editor.create(monacoEl.current!, {\n            minimap: {\n              enabled: false,\n            },\n            language: \"typescript\",\n            automaticLayout: true,\n            scrollbar: {\n              verticalScrollbarSize: 4,\n              horizontalScrollbarSize: 8,\n            },\n            formatOnPaste: true,\n            overviewRulerLanes: 0,\n            lineNumbersMinChars: 4,\n            fontSize: fontSize,\n            theme: colorMode === COLOR_MODE.dark ? \"vs-dark\" : \"vs\",\n            scrollBeyondLastLine: false,\n            value: value,\n          });\n          monaco.editor.addKeybindingRule({\n            keybinding: monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyP,\n            command: null,\n          });\n\n          if (commonSettings.useCopilot && aiCompleteUrl) {\n            completionFeature.onMounted();\n          }\n        });\n    }\n\n    allFunctionList.forEach((item: any) => {\n      const uri = monaco.Uri.file(`${RUNTIMES_PATH}/${item.name}.ts`);\n\n      if (functionList.includes(item)) {\n        if (!monaco.editor.getModel(uri)) {\n          fileSystemProvider.registerFile(new RegisteredMemoryFile(uri, item.source.code));\n          monaco.editor.createModel(\n            functionCache.getCache(item._id, item.source?.code),\n            \"typescript\",\n            uri,\n          );\n        }\n      }\n    });\n\n    functionList.forEach((item: TFunction) => {\n      const uri = monaco.Uri.file(`${RUNTIMES_PATH}/${item.name}.ts`);\n\n      if (!allFunctionList.includes(item)) {\n        monaco.editor.getModel(uri)?.dispose();\n      }\n    });\n\n    setFunctionList(allFunctionList);\n    updateModel(path, editorRef);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [allFunctionList, functionList, path]);\n\n  // onChange\n  useEffect(() => {\n    subscriptionRef.current?.dispose();\n    if (onChange) {\n      subscriptionRef.current = editorRef.current?.onDidChangeModelContent((event) => {\n        onChange(editorRef.current?.getValue(), editorRef.current?.getPosition());\n      });\n    }\n  }, [onChange]);\n\n  useEffect(() => {\n    updateModel(path, editorRef);\n    const pos = JSON.parse(functionCache.getPositionCache(path) || \"{}\");\n    if (pos.lineNumber && pos.column) {\n      editorRef.current?.setPosition(pos);\n      editorRef.current?.revealPositionInCenter(pos);\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [path]);\n\n  useEffect(() => {\n    if (monacoEl && editorRef.current) {\n      editorRef.current.updateOptions({\n        fontSize: fontSize,\n        theme: colorMode === COLOR_MODE.dark ? \"vs-dark\" : \"vs\",\n      });\n    }\n  }, [colorMode, fontSize]);\n\n  return <div className={className} ref={monacoEl}></div>;\n}\n\nexport default FunctionEditor;\n"
  },
  {
    "path": "web/src/components/Editor/JSONEditor.tsx",
    "content": "import Editor from \"@monaco-editor/react\";\nimport { LineNumbersType } from \"vscode/vscode/vs/editor/common/config/editorOptions\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\nfunction JSONEditor(props: {\n  value: string;\n  height?: string;\n  colorMode?: string;\n  onChange?: (value: string | undefined) => void;\n}) {\n  const { value, onChange, height = \"90%\", colorMode = COLOR_MODE.light } = props;\n\n  const options = {\n    lineNumbers: \"off\" as LineNumbersType,\n    guides: {\n      indentation: false,\n    },\n    automaticLayout: true,\n    minimap: {\n      enabled: false,\n    },\n    scrollbar: {\n      verticalScrollbarSize: 4,\n      horizontalScrollbarSize: 8,\n      alwaysConsumeMouseWheel: false,\n    },\n    lineNumbersMinChars: 0,\n    fontSize: 12,\n    scrollBeyondLastLine: false,\n    folding: false,\n    overviewRulerBorder: false,\n    tabSize: 2,\n  };\n\n  return (\n    <Editor\n      height={height}\n      defaultLanguage=\"json\"\n      value={value}\n      options={options}\n      onChange={onChange}\n      theme={colorMode === COLOR_MODE.dark ? \"vs-dark\" : \"vs\"}\n    />\n  );\n}\n\nexport default JSONEditor;\n"
  },
  {
    "path": "web/src/components/Editor/JSONViewer.tsx",
    "content": "import SyntaxHighlighter, { Prism } from \"react-syntax-highlighter\";\nimport { FixedSizeList as List } from \"react-window\";\nimport SimpleBar from \"simplebar-react\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\nimport \"./index.scss\";\n\ntype JSONViewerProps = {\n  code: string;\n  language?: string;\n  showNumber?: boolean;\n  colorMode?: string;\n  className?: string;\n};\n\nconst JSONViewerStyle: any = {\n  hljs: {\n    display: \"block\",\n    overflowX: \"auto\",\n    padding: \"0.5em\",\n    color: \"#000\",\n    background: \"#f8f8ff\",\n  },\n  \"hljs-comment\": {\n    color: \"#408080\",\n    fontStyle: \"italic\",\n  },\n  \"hljs-quote\": {\n    color: \"#408080\",\n    fontStyle: \"italic\",\n  },\n  \"hljs-keyword\": {\n    color: \"#954121\",\n  },\n  \"hljs-selector-tag\": {\n    color: \"#954121\",\n  },\n  \"hljs-literal\": {\n    color: \"#954121\",\n  },\n  \"hljs-subst\": {\n    color: \"#954121\",\n  },\n  \"hljs-number\": {\n    color: \"#01A99D\",\n  },\n  \"hljs-string\": {\n    color: \"#0451a5\",\n  },\n  \"hljs-doctag\": {\n    color: \"#219161\",\n  },\n  \"hljs-selector-id\": {\n    color: \"#19469d\",\n  },\n  \"hljs-selector-class\": {\n    color: \"#19469d\",\n  },\n  \"hljs-section\": {\n    color: \"#19469d\",\n  },\n  \"hljs-type\": {\n    color: \"#19469d\",\n  },\n  \"hljs-params\": {\n    color: \"#00f\",\n  },\n  \"hljs-title\": {\n    color: \"#458\",\n    fontWeight: \"bold\",\n  },\n  \"hljs-tag\": {\n    color: \"#000080\",\n    fontWeight: \"normal\",\n  },\n  \"hljs-name\": {\n    color: \"#000080\",\n    fontWeight: \"normal\",\n  },\n  \"hljs-attr\": {\n    color: \"#a31515\",\n    fontWeight: \"normal\",\n  },\n  \"hljs-attribute\": {\n    color: \"#000080\",\n    fontWeight: \"normal\",\n  },\n  \"hljs-variable\": {\n    color: \"#008080\",\n  },\n  \"hljs-template-variable\": {\n    color: \"#008080\",\n  },\n  \"hljs-regexp\": {\n    color: \"#b68\",\n  },\n  \"hljs-link\": {\n    color: \"#b68\",\n  },\n  \"hljs-symbol\": {\n    color: \"#990073\",\n  },\n  \"hljs-bullet\": {\n    color: \"#990073\",\n  },\n  \"hljs-built_in\": {\n    color: \"#0086b3\",\n  },\n  \"hljs-builtin-name\": {\n    color: \"#0086b3\",\n  },\n  \"hljs-meta\": {\n    color: \"#999\",\n    fontWeight: \"bold\",\n  },\n  \"hljs-deletion\": {\n    background: \"#fdd\",\n  },\n  \"hljs-addition\": {\n    background: \"#dfd\",\n  },\n  \"hljs-emphasis\": {\n    fontStyle: \"italic\",\n  },\n  \"hljs-strong\": {\n    fontWeight: \"bold\",\n  },\n};\n\nconst JSONViewerDarkStyle: any = {\n  hljs: {\n    display: \"block\",\n    overflowX: \"auto\",\n    padding: \"0.5em\",\n    color: \"#000\",\n    background: \"#f8f8ff\",\n  },\n  \"hljs-comment\": {\n    color: \"#408080\",\n    fontStyle: \"italic\",\n  },\n  \"hljs-quote\": {\n    color: \"#408080\",\n    fontStyle: \"italic\",\n  },\n  \"hljs-keyword\": {\n    color: \"#954121\",\n  },\n  \"hljs-selector-tag\": {\n    color: \"#954121\",\n  },\n  \"hljs-literal\": {\n    color: \"#954121\",\n  },\n  \"hljs-subst\": {\n    color: \"#954121\",\n  },\n  \"hljs-number\": {\n    color: \"#b0caa4\",\n  },\n  \"hljs-string\": {\n    color: \"#ce9178\",\n  },\n  \"hljs-doctag\": {\n    color: \"#219161\",\n  },\n  \"hljs-selector-id\": {\n    color: \"#19469d\",\n  },\n  \"hljs-selector-class\": {\n    color: \"#19469d\",\n  },\n  \"hljs-section\": {\n    color: \"#19469d\",\n  },\n  \"hljs-type\": {\n    color: \"#19469d\",\n  },\n  \"hljs-params\": {\n    color: \"#00f\",\n  },\n  \"hljs-title\": {\n    color: \"#458\",\n    fontWeight: \"bold\",\n  },\n  \"hljs-tag\": {\n    color: \"#000080\",\n    fontWeight: \"normal\",\n  },\n  \"hljs-name\": {\n    color: \"#000080\",\n    fontWeight: \"normal\",\n  },\n  \"hljs-attr\": {\n    color: \"#9bdcfe\",\n    fontWeight: \"normal\",\n  },\n  \"hljs-attribute\": {\n    color: \"#000080\",\n    fontWeight: \"normal\",\n  },\n  \"hljs-variable\": {\n    color: \"#008080\",\n  },\n  \"hljs-template-variable\": {\n    color: \"#008080\",\n  },\n  \"hljs-regexp\": {\n    color: \"#b68\",\n  },\n  \"hljs-link\": {\n    color: \"#b68\",\n  },\n  \"hljs-symbol\": {\n    color: \"#990073\",\n  },\n  \"hljs-bullet\": {\n    color: \"#990073\",\n  },\n  \"hljs-built_in\": {\n    color: \"#0086b3\",\n  },\n  \"hljs-builtin-name\": {\n    color: \"#0086b3\",\n  },\n  \"hljs-meta\": {\n    color: \"#999\",\n    fontWeight: \"bold\",\n  },\n  \"hljs-deletion\": {\n    background: \"#fdd\",\n  },\n  \"hljs-addition\": {\n    background: \"#dfd\",\n  },\n  \"hljs-emphasis\": {\n    fontStyle: \"italic\",\n  },\n  \"hljs-strong\": {\n    fontWeight: \"bold\",\n  },\n};\n\nexport default function JSONViewer(props: JSONViewerProps) {\n  const { code, language = \"json\", colorMode = COLOR_MODE.light, ...rest } = props;\n  const lightTheme = { background: \"#fdfdfe\", padding: 0 };\n  const darkTheme = {\n    background: \"#202631\",\n    color: \"#f0f0f0\",\n  };\n\n  const rowHeight = 22;\n\n  const renderRow = ({ index, style }: { index: number; style: any }) => (\n    <div style={style} className=\"code\">\n      <Prism\n        language={language}\n        style={colorMode === COLOR_MODE.dark ? JSONViewerDarkStyle : JSONViewerStyle}\n        customStyle={colorMode === COLOR_MODE.dark ? darkTheme : lightTheme}\n      >\n        {code.split(`\\n`)[index]}\n      </Prism>\n    </div>\n  );\n\n  if (code.split(`\\n`).length <= 100) {\n    return (\n      <SimpleBar\n        style={{\n          maxHeight: 390,\n        }}\n        {...rest}\n      >\n        <SyntaxHighlighter\n          language={language}\n          style={colorMode === COLOR_MODE.dark ? JSONViewerDarkStyle : JSONViewerStyle}\n          customStyle={colorMode === COLOR_MODE.dark ? darkTheme : lightTheme}\n        >\n          {code}\n        </SyntaxHighlighter>\n      </SimpleBar>\n    );\n  } else {\n    return (\n      <List\n        height={390}\n        itemCount={code.split(`\\n`).length}\n        itemSize={rowHeight}\n        width=\"100%\"\n        style={{\n          paddingTop: 0,\n        }}\n        {...rest}\n      >\n        {renderRow}\n      </List>\n    );\n  }\n}\n"
  },
  {
    "path": "web/src/components/Editor/LanguageClient.ts",
    "content": "import getConfigurationServiceOverride from \"@codingame/monaco-vscode-configuration-service-override\";\nimport getTextmateServiceOverride from \"@codingame/monaco-vscode-textmate-service-override\";\nimport getThemeServiceOverride from \"@codingame/monaco-vscode-theme-service-override\";\nimport { languages } from \"monaco-editor\";\nimport { initServices, MonacoLanguageClient } from \"monaco-languageclient\";\nimport { Uri } from \"vscode\";\nimport { CloseAction, ErrorAction, MessageTransports } from \"vscode-languageclient\";\nimport { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from \"vscode-ws-jsonrpc\";\n\nimport { RUNTIMES_PATH } from \"@/constants\";\n\nimport \"@codingame/monaco-vscode-typescript-basics-default-extension\";\nimport \"@codingame/monaco-vscode-theme-defaults-default-extension\";\nimport \"./TextModel\";\n\nexport const createLanguageClient = (transports: MessageTransports): MonacoLanguageClient => {\n  return new MonacoLanguageClient({\n    name: \"Laf Language Client\",\n    clientOptions: {\n      documentSelector: [\"typescript\"],\n      errorHandler: {\n        error: () => ({ action: ErrorAction.Continue }),\n        closed: () => ({ action: CloseAction.DoNotRestart }),\n      },\n      workspaceFolder: {\n        uri: Uri.file(RUNTIMES_PATH),\n        name: \"Laf Workspace\",\n        index: 0,\n      },\n    },\n    connectionProvider: {\n      get: () => {\n        return Promise.resolve(transports);\n      },\n    },\n  });\n};\n\nexport const createUrl = (\n  baseUrl: string,\n  path: string,\n  secure: boolean = window.location.protocol === \"https:\",\n): string => {\n  const protocol = secure ? \"wss\" : \"ws\";\n  const url = new URL(`${protocol}://${baseUrl}${path}`);\n  return url.toString();\n};\n\nexport const createWebSocketAndStartClient = (url: string, token: string) => {\n  const webSocket = new WebSocket(url, [token]);\n  webSocket.onopen = () => {\n    webSocket.send(token);\n    const socket = toSocket(webSocket);\n    const reader = new WebSocketMessageReader(socket);\n    const writer = new WebSocketMessageWriter(socket);\n    const languageClient = createLanguageClient({\n      reader,\n      writer,\n    });\n    languageClient.start();\n    reader.onClose(() => languageClient?.stop());\n  };\n  return webSocket;\n};\n\nexport const performInit = async (vscodeApiInit: boolean) => {\n  if (vscodeApiInit === true) {\n    await initServices({\n      userServices: {\n        ...getThemeServiceOverride(),\n        ...getTextmateServiceOverride(),\n        ...getConfigurationServiceOverride(Uri.file(RUNTIMES_PATH)),\n      },\n    });\n\n    languages.register({\n      id: \"typescript\",\n      extensions: [\".ts\", \".tsx\"],\n      aliases: [\"typescript\", \"javascript\"],\n      mimetypes: [\"text/typescript\", \"text/javascript\"],\n    });\n  }\n};\n"
  },
  {
    "path": "web/src/components/Editor/TSEditor.tsx",
    "content": "import { useEffect, useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useCompletionFeature } from \"react-monaco-copilot\";\nimport { Spinner } from \"@chakra-ui/react\";\nimport { Editor, Monaco } from \"@monaco-editor/react\";\nimport * as monaco from \"monaco-editor/esm/vs/editor/editor.api\";\n\nimport { AutoImportTypings } from \"@/components/Editor/typesResolve\";\nimport { COLOR_MODE, RUNTIMES_PATH } from \"@/constants\";\n\nimport \"./useWorker\";\n\nimport useFunctionCache from \"@/hooks/useFunctionCache\";\nimport useFunctionStore from \"@/pages/app/functions/store\";\nimport useCustomSettingStore from \"@/pages/customSetting\";\nimport useSiteSettingStore from \"@/pages/siteSetting\";\n\nconst autoImportTypings = new AutoImportTypings();\n\nexport default function TSEditor(props: {\n  value: string;\n  path: string;\n  fontSize: number;\n  colorMode?: string;\n  onChange: (value: string | undefined) => void;\n}) {\n  const { value, path, fontSize, onChange, colorMode } = props;\n\n  const [isEditorMounted, setIsEditorMounted] = useState(false);\n\n  const functionCache = useFunctionCache();\n  const { currentFunction, allFunctionList } = useFunctionStore((state) => state);\n  const { commonSettings } = useCustomSettingStore();\n  const { siteSettings } = useSiteSettingStore();\n\n  const aiCompleteUrl = siteSettings.ai_complete_url?.value;\n\n  const monacoRef = useRef<Monaco>();\n  const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n  const loadModelsRef = useRef(loadModels);\n  const completionFeature = useCompletionFeature({\n    monaco: monacoRef.current,\n    editor: editorRef.current,\n    apiUrl: aiCompleteUrl || \"\",\n  });\n\n  loadModelsRef.current = loadModels;\n\n  function loadModels(monaco: Monaco) {\n    allFunctionList.forEach((item: any) => {\n      const uri = monaco.Uri.file(`${RUNTIMES_PATH}/${item.name}.ts`);\n      if (!monaco.editor.getModel(uri)) {\n        monaco.editor.createModel(\n          functionCache.getCache(item._id, item.source?.code),\n          \"typescript\",\n          uri,\n        );\n      }\n    });\n  }\n\n  function handleEditorDidMount(editor: monaco.editor.IStandaloneCodeEditor, monaco: Monaco) {\n    monacoRef.current = monaco;\n    editorRef.current = editor;\n    if (commonSettings.useCopilot && aiCompleteUrl) {\n      completionFeature.onMounted();\n    }\n    setTimeout(() => {\n      loadModelsRef.current(monacoRef.current!);\n      autoImportTypings.loadDefaults(monacoRef.current);\n    }, 10);\n\n    setIsEditorMounted(true);\n  }\n\n  useEffect(() => {\n    if (isEditorMounted && monacoRef.current) {\n      loadModelsRef.current(monacoRef.current!);\n    }\n  }, [allFunctionList, isEditorMounted]);\n\n  useEffect(() => {\n    if (isEditorMounted) {\n      const pos = JSON.parse(functionCache.getPositionCache(path) || \"{}\");\n      if (pos.lineNumber && pos.column) {\n        editorRef.current?.setPosition(pos);\n        editorRef.current?.revealPositionInCenter(pos);\n      }\n\n      if (monacoRef.current) {\n        autoImportTypings.parse(value, monacoRef.current);\n      }\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [path, isEditorMounted]);\n\n  const options = {\n    minimap: {\n      enabled: false,\n    },\n    language: \"typescript\",\n    automaticLayout: true,\n    scrollbar: {\n      verticalScrollbarSize: 4,\n      horizontalScrollbarSize: 8,\n    },\n    formatOnPaste: true,\n    overviewRulerLanes: 0,\n    lineNumbersMinChars: 4,\n    fontSize: fontSize,\n    scrollBeyondLastLine: false,\n  };\n\n  return (\n    <Editor\n      height={\"100%\"}\n      value={value}\n      path={`file://${path}`}\n      options={options}\n      theme={colorMode === COLOR_MODE.dark ? \"vs-dark\" : \"light\"}\n      onChange={(value) => {\n        onChange(value);\n        functionCache.setPositionCache(\n          currentFunction!.name,\n          JSON.stringify(editorRef.current?.getPosition()),\n        );\n      }}\n      loading={\n        <div>\n          <Spinner />\n        </div>\n      }\n      beforeMount={(monaco) => {\n        monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({\n          noSemanticValidation: true,\n          noSyntaxValidation: false,\n        });\n\n        monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n          target: monaco.languages.typescript.ScriptTarget.ESNext,\n          allowNonTsExtensions: true,\n          moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,\n          module: monaco.languages.typescript.ModuleKind.CommonJS,\n          allowSyntheticDefaultImports: true,\n          noEmit: true,\n          allowJs: false,\n          sourceMap: true,\n          noImplicitAny: false,\n        });\n\n        monaco.languages.typescript.typescriptDefaults.setEagerModelSync(true);\n      }}\n      onMount={handleEditorDidMount}\n      onValidate={() => {\n        autoImportTypings.parse(value, monacoRef.current);\n      }}\n    />\n  );\n}\n"
  },
  {
    "path": "web/src/components/Editor/TextModel.tsx",
    "content": "import * as monaco from \"monaco-editor/esm/vs/editor/editor.api\";\n// @ts-ignore\nimport { StandaloneCodeEditorService } from \"monaco-editor/esm/vs/editor/standalone/browser/standaloneCodeEditorService.js\";\n\nimport useFunctionStore from \"@/pages/app/functions/store\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nStandaloneCodeEditorService.prototype.findModel = function (\n  editor: monaco.editor.IStandaloneCodeEditor,\n  resource: monaco.Uri,\n) {\n  var model = null;\n  if (resource !== null) model = monaco.editor.getModel(resource);\n  if (model === null) {\n    model = editor.getModel();\n  }\n  return model;\n};\n\nStandaloneCodeEditorService.prototype.doOpenEditor = function (\n  editor: monaco.editor.IStandaloneCodeEditor,\n  input: any,\n) {\n  let model = this.findModel(editor, input.resource);\n  if (!model) {\n    return null;\n  }\n\n  editor.setModel(model);\n\n  const functionName = model.uri.path.match(/\\/functions\\/(.*?)\\.ts$/)[1];\n  const allFunctionList = useFunctionStore.getState().allFunctionList;\n  const recentFunctionList = useFunctionStore.getState().recentFunctionList;\n  const currentFunction = allFunctionList.find((item) => item.name === functionName);\n\n  let newRecentFunctionList = [];\n\n  if (recentFunctionList.find((item) => item.name === functionName)) {\n    newRecentFunctionList = recentFunctionList;\n  } else {\n    newRecentFunctionList = [...recentFunctionList, currentFunction!];\n  }\n\n  useFunctionStore.setState({\n    recentFunctionList: newRecentFunctionList as any,\n    currentFunction: currentFunction,\n  });\n\n  const newUrl = `${window.location.origin}/app/${\n    useGlobalStore.getState().currentApp.appid\n  }/function/${functionName}`;\n  window.history.replaceState({}, \"\", newUrl);\n\n  let selection = input.options ? input.options.selection : null;\n  if (selection) {\n    if (typeof selection.endLineNumber === \"number\" && typeof selection.endColumn === \"number\") {\n      editor.setSelection(selection);\n      editor.revealRangeInCenter(selection, 1);\n    } else {\n      const pos = {\n        lineNumber: selection.startLineNumber,\n        column: selection.startColumn,\n      };\n      editor.setPosition(pos);\n      editor.revealPositionInCenter(pos, 1);\n    }\n  }\n  return editor;\n};\n"
  },
  {
    "path": "web/src/components/Editor/index.css",
    "content": ".monaco-editor .margin {\n  background-color: #fff !important;\n}\n\n.monaco-editor {\n  --vscode-editor-background: #fff !important;\n}\n\n[data-theme=\"dark\"] .monaco-editor .margin {\n  background-color: #202631 !important;\n}\n\n[data-theme=\"dark\"] .monaco-editor {\n  --vscode-editor-background: #202631 !important;\n}\n\n.monaco-editor .mtk5 {\n  color: #00f !important;\n}\n\n.monaco-editor .mtk4 {\n  color: #008000 !important;\n}\n\n.monaco-editor .mtk11 {\n  color: #a31515 !important;\n}\n\n[data-theme=\"dark\"] .monaco-editor .mtk5 {\n  color: #569cd6 !important;\n}\n\n[data-theme=\"dark\"] .monaco-editor .mtk4 {\n  color: #6a9955 !important;\n}\n\n[data-theme=\"dark\"] .monaco-editor .mtk11 {\n  color: #ce9178 !important;\n}\n\n[data-theme=\"dark\"] .monaco-editor .mtk1 {\n  color: #d4d4d4 !important;\n}"
  },
  {
    "path": "web/src/components/Editor/index.scss",
    "content": ".code .property {\n  color: #A31515\n}\n\n.code .number {\n  color: #01a99d\n}\n\n.code .string {\n  color: #0451a5\n}\n\n[data-theme=\"dark\"] .code .property {\n  color: #9BDCFE\n}\n\n[data-theme=\"dark\"] .code .number {\n  color: #B0CAA4\n}\n\n[data-theme=\"dark\"] .code .string {\n  color: #CE9178\n}"
  },
  {
    "path": "web/src/components/Editor/typesResolve/globals.ts",
    "content": "import { objectidType } from \"./objectidType\";\nimport { requestType } from \"./requestType\";\nimport { responseType } from \"./responseType\";\nimport { readableStreamTypes, streamTypes, writableStreamTypes } from \"./streamType\";\n\nexport const globalDeclare = `\n${streamTypes}\n${readableStreamTypes}\n${writableStreamTypes}\n${requestType}\n${responseType}\n${objectidType}\n\ndeclare class FunctionConsole {\n  private _logs;\n  get logs(): any[];\n  log(...params: any[]): void;\n}\n\ninterface File {\n  fieldname: string;\n  originalname: string;\n  encoding: string;\n  mimetype: string;\n  size: number;\n  destination: string;\n  filename: string;\n  path: string;\n}\n\n\n/**\n * The input parameters of cloud function calls\n */\ninterface FunctionContext {\n  __function_name: string;\n  \n  /**\n   * This object is parsed from JWT Token Payload\n   */\n  user?: {\n    [key: string]: any\n  }\n\n  /**\n   * Uploaded file, the file object array\n   */\n  files?: File[];\n\n  /**\n   * HTTP headers\n   */\n  headers?: IncomingHttpHeaders;\n\n  /**\n   * HTTP Query parameter (URL parameter), JSON object\n   */\n  query?: any;\n\n  /**\n   * HTTP Body\n   */\n  body?: any;\n\n  /**\n   *\n   */\n  params?: any;\n\n  /**\n   * HTTP Request ID\n   */\n  requestId?: string;\n\n  /**\n   * HTTP Method\n   */\n  method?: string;\n\n  /**\n   * Express request object\n   */\n  request?: HttpRequest;\n\n  /**\n   * Express response object\n   */\n  response?: HttpResponse\n\n  /**\n   * WebSocket object\n   */\n  socket?: WebSocket\n\n  [key: string]: any\n}\n\ninterface IModule {\n  exports: IExports\n}\n\ninterface IExports {\n  /**\n   * The main function, entry of the cloud function\n   */\n  main: (ctx: FunctionContext) => any\n}\n\ninterface IProcess {\n  /**\n   * Environment\n   */\n  env: any\n}\n\ndeclare const module: IModule\ndeclare const exports: IExports\ndeclare const console: FunctionConsole\ndeclare const global: typeof globalThis\ndeclare const process: IProcess\n\n/**\n *  The main function, entry of the cloud function\n */\ndeclare function main(ctx: FunctionContext): any;\n`;\n"
  },
  {
    "path": "web/src/components/Editor/typesResolve/index.ts",
    "content": "import axios from \"axios\";\n\nimport { globalDeclare } from \"./globals\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nasync function loadPackageTypings(packageName: string) {\n  const cacheKey = `package-typings-${packageName}`;\n  const cache = localStorage.getItem(cacheKey);\n\n  const getType = async (packageName: string) => {\n    const { currentApp } = useGlobalStore.getState();\n\n    const url = `//${currentApp?.host}`;\n\n    const res = await axios({\n      url: `${url}/_/typing/package?packageName=${packageName}`,\n      method: \"GET\",\n      headers: {\n        \"x-laf-develop-token\": `${currentApp?.develop_token}`,\n      },\n    });\n\n    if (res.data?.code === 1 || !res.data?.data) {\n      localStorage.removeItem(cacheKey);\n    } else {\n      localStorage.setItem(cacheKey, JSON.stringify(res.data));\n    }\n    return res.data;\n  };\n\n  if (cache) {\n    getType(packageName);\n    return JSON.parse(cache);\n  }\n\n  const r = await getType(packageName);\n  return r;\n}\n\n/**\n * Typescript import parser\n */\nexport class ImportParser {\n  REGEX_DETECT_IMPORT =\n    /(?:(?:(?:import)|(?:export))(?:.)*?from\\s+[\"']([^\"']+)[\"'])|(?:\\/+\\s+<reference\\s+path=[\"']([^\"']+)[\"']\\s+\\/>)/g;\n\n  /**\n   * Parse ts source code and return dependencies\n   * @param {string} source source code\n   * @returns\n   */\n  parseDependencies(source: string) {\n    const cleaned = source;\n    const DYNAMIC_IMPORT = /import\\((['\"])(.*?)\\1\\)/g;\n\n    // parse dynamic imports\n    const dynamicImports = [...cleaned.matchAll(DYNAMIC_IMPORT)].map((x) => x[2]);\n\n    // parse static imports\n    const staticImports = [...cleaned.matchAll(this.REGEX_DETECT_IMPORT)]\n      .map((x) => x[1] ?? x[2])\n      .filter((x) => !!x && !x.startsWith(\"./\") && !x.startsWith(\"../\"))\n      .map((imp) => {\n        return imp;\n      });\n\n    return [...new Set([...dynamicImports, ...staticImports])];\n  }\n}\n\n/**\n * Typescript auto import typings\n */\nexport class AutoImportTypings {\n  _parser = new ImportParser();\n\n  /**\n   * Loaded packages\n   */\n  _loaded: string[] = [];\n\n  /**\n   * Parse ts source code and load dependencies\n   * @param {string} source ts 代码\n   * @returns\n   */\n  async parse(source: string, monaco: any) {\n    const rets = this._parser.parseDependencies(source);\n    if (!rets || !rets.length) return;\n\n    const newImports = rets.filter((pkg) => !this.isLoaded(pkg));\n    for (const pkg of newImports) {\n      await this.loadDeclaration(pkg, monaco);\n    }\n  }\n\n  /**\n   * Load default typings\n   */\n  loadDefaults(monaco: any) {\n    this.addExtraLib({ path: \"globals.d.ts\", content: globalDeclare, monaco });\n    [\n      \"@lafjs/cloud\",\n      \"globals\",\n      \"database-proxy\",\n      \"database-ql\",\n      \"axios\",\n      \"mongodb\",\n      \"@types/node\",\n      \"ws\",\n      \"@aws-sdk/client-s3\",\n      \"@aws-sdk/s3-request-presigner\",\n    ].forEach((v) => {\n      if (!this.isLoaded(v)) {\n        this.loadDeclaration(v, monaco);\n      }\n    });\n  }\n\n  /**\n   * Check if package is loaded\n   * @param {string} packageName\n   * @returns\n   */\n  isLoaded(packageName: string) {\n    return this._loaded.includes(packageName);\n  }\n\n  /**\n   * Load package declaration files\n   * @param {string} packageName\n   * @returns\n   */\n  async loadDeclaration(packageName: string, monaco: any) {\n    if (this.isLoaded(packageName)) return;\n    try {\n      this._loaded.push(packageName);\n\n      const r = await loadPackageTypings(packageName);\n      if (r?.code) {\n        this._loaded = this._loaded.filter((x) => x !== packageName);\n        return;\n      }\n\n      const rets = r.data || [];\n      for (const lib of rets) {\n        // 修复包的类型入口文件不为 index.d.ts 的情况\n        if (packageName === lib.packageName && lib.path !== `${packageName}/index.d.ts`) {\n          const _lib = { ...lib };\n          _lib.path = `${packageName}/index.d.ts`;\n          this.addExtraLib({ path: _lib.path, content: _lib.content, monaco });\n        }\n        this.addExtraLib({ path: lib.path, content: lib.content, monaco });\n      }\n    } catch (error) {\n      this._loaded = this._loaded.filter((x) => x !== packageName);\n      console.error(`failed to load package: ${packageName} :`, error);\n    }\n  }\n\n  /**\n   * Add extra lib to monaco editor\n   * @param {path: string, content: string} param0\n   * @returns\n   */\n  addExtraLib({ path, content, monaco }: { path: string; content: string; monaco: any }) {\n    const fullPath = `file:///node_modules/${path}`;\n    const defaults = monaco.languages.typescript.typescriptDefaults;\n    const loaded = defaults.getExtraLibs();\n\n    if (fullPath in loaded) {\n      return;\n    }\n    try {\n      defaults.addExtraLib(content, fullPath);\n    } catch (error) {\n      console.log(error, fullPath);\n      throw error;\n    }\n  }\n}\n"
  },
  {
    "path": "web/src/components/Editor/typesResolve/objectidType.ts",
    "content": "export const objectidType = `\n/**\n * A class representation of the BSON ObjectId type.\n * @public\n * @category BSONType\n */\ndeclare class ObjectId extends BSONValue {\n    get _bsontype(): 'ObjectId';\n    /* Excluded from this release type: index */\n    static cacheHexString: boolean;\n    /* Excluded from this release type: [kId] */\n    /* Excluded from this release type: __id */\n    /**\n     * Create an ObjectId type\n     *\n     * @param inputId - Can be a 24 character hex string, 12 byte binary Buffer, or a number.\n     */\n    constructor(inputId?: string | number | ObjectId | ObjectIdLike | Uint8Array);\n    /**\n     * The ObjectId bytes\n     * @readonly\n     */\n    get id(): Uint8Array;\n    set id(value: Uint8Array);\n    /** Returns the ObjectId id as a 24 character hex string representation */\n    toHexString(): string;\n    /* Excluded from this release type: getInc */\n    /**\n     * Generate a 12 byte id buffer used in ObjectId's\n     *\n     * @param time - pass in a second based timestamp.\n     */\n    static generate(time?: number): Uint8Array;\n    /**\n     * Converts the id into a 24 character hex string for printing, unless encoding is provided.\n     * @param encoding - hex or base64\n     */\n    toString(encoding?: 'hex' | 'base64'): string;\n    /** Converts to its JSON the 24 character hex string representation. */\n    toJSON(): string;\n    /**\n     * Compares the equality of this ObjectId with 'otherID'.\n     *\n     * @param otherId - ObjectId instance to compare against.\n     */\n    equals(otherId: string | ObjectId | ObjectIdLike): boolean;\n    /** Returns the generation date (accurate up to the second) that this ID was generated. */\n    getTimestamp(): Date;\n    /* Excluded from this release type: createPk */\n    /**\n     * Creates an ObjectId from a second based number, with the rest of the ObjectId zeroed out. Used for comparisons or sorting the ObjectId.\n     *\n     * @param time - an integer number representing a number of seconds.\n     */\n    static createFromTime(time: number): ObjectId;\n    /**\n     * Creates an ObjectId from a hex string representation of an ObjectId.\n     *\n     * @param hexString - create a ObjectId from a passed in 24 character hexstring.\n     */\n    static createFromHexString(hexString: string): ObjectId;\n    /** Creates an ObjectId instance from a base64 string */\n    static createFromBase64(base64: string): ObjectId;\n    /**\n     * Checks if a value is a valid bson ObjectId\n     *\n     * @param id - ObjectId instance to validate.\n     */\n    static isValid(id: string | number | ObjectId | ObjectIdLike | Uint8Array): boolean;\n    /* Excluded from this release type: toExtendedJSON */\n    /* Excluded from this release type: fromExtendedJSON */\n    inspect(): string;\n}\n\n/** @public */\ndeclare interface ObjectIdExtended {\n    $oid: string;\n}\n\n/** @public */\ndeclare interface ObjectIdLike {\n    id: string | Uint8Array;\n    __id?: string;\n    toHexString(): string;\n}\n`;\n"
  },
  {
    "path": "web/src/components/Editor/typesResolve/requestType.ts",
    "content": "const incomingMessageType = `\n  class IncomingMessage extends Readable {\n    constructor(socket: Socket);\n    /**\n     * The 'message.aborted' property will be 'true' if the request has\n     * been aborted.\n     * @since v10.1.0\n     * @deprecated Since v17.0.0,v16.12.0 - Check 'message.destroyed' from <a href=\"stream.html#class-streamreadable\" class=\"type\">stream.Readable</a>.\n     */\n    aborted: boolean;\n    /**\n     * In case of server request, the HTTP version sent by the client. In the case of\n     * client response, the HTTP version of the connected-to server.\n     * Probably either ''1.1'' or ''1.0''.\n     *\n     * Also 'message.httpVersionMajor' is the first integer and'message.httpVersionMinor' is the second.\n     * @since v0.1.1\n     */\n    httpVersion: string;\n    httpVersionMajor: number;\n    httpVersionMinor: number;\n    /**\n     * The 'message.complete' property will be 'true' if a complete HTTP message has\n     * been received and successfully parsed.\n     *\n     * This property is particularly useful as a means of determining if a client or\n     * server fully transmitted a message before a connection was terminated:\n     *\n     * '''js\n     * const req = http.request({\n     *   host: '127.0.0.1',\n     *   port: 8080,\n     *   method: 'POST'\n     * }, (res) => {\n     *   res.resume();\n     *   res.on('end', () => {\n     *     if (!res.complete)\n     *       console.error(\n     *         'The connection was terminated while the message was still being sent');\n     *   });\n     * });\n     * '''\n     * @since v0.3.0\n     */\n    complete: boolean;\n    /**\n     * Alias for 'message.socket'.\n     * @since v0.1.90\n     * @deprecated Since v16.0.0 - Use 'socket'.\n     */\n    connection: Socket;\n    /**\n     * The 'net.Socket' object associated with the connection.\n     *\n     * With HTTPS support, use 'request.socket.getPeerCertificate()' to obtain the\n     * client's authentication details.\n     *\n     * This property is guaranteed to be an instance of the 'net.Socket' class,\n     * a subclass of 'stream.Duplex', unless the user specified a socket\n     * type other than 'net.Socket' or internally nulled.\n     * @since v0.3.0\n     */\n    socket: Socket;\n    /**\n     * The request/response headers object.\n     *\n     * Key-value pairs of header names and values. Header names are lower-cased.\n     *\n     * '''js\n     * // Prints something like:\n     * //\n     * // { 'user-agent': 'curl/7.22.0',\n     * //   host: '127.0.0.1:8000',\n     * //   accept: '*' }\n     * console.log(request.getHeaders());\n     * '''\n     *\n     * Duplicates in raw headers are handled in the following ways, depending on the\n     * header name:\n     *\n     * * Duplicates of 'age', 'authorization', 'content-length', 'content-type','etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since','last-modified', 'location',\n     * 'max-forwards', 'proxy-authorization', 'referer','retry-after', 'server', or 'user-agent' are discarded.\n     * * 'set-cookie' is always an array. Duplicates are added to the array.\n     * * For duplicate 'cookie' headers, the values are joined together with '; '.\n     * * For all other headers, the values are joined together with ', '.\n     * @since v0.1.5\n     */\n    headers: IncomingHttpHeaders;\n    /**\n     * The raw request/response headers list exactly as they were received.\n     *\n     * The keys and values are in the same list. It is _not_ a\n     * list of tuples. So, the even-numbered offsets are key values, and the\n     * odd-numbered offsets are the associated values.\n     *\n     * Header names are not lowercased, and duplicates are not merged.\n     *\n     * '''js\n     * // Prints something like:\n     * //\n     * // [ 'user-agent',\n     * //   'this is invalid because there can be only one',\n     * //   'User-Agent',\n     * //   'curl/7.22.0',\n     * //   'Host',\n     * //   '127.0.0.1:8000',\n     * //   'ACCEPT',\n     * //   '*' ]\n     * console.log(request.rawHeaders);\n     * '''\n     * @since v0.11.6\n     */\n    rawHeaders: string[];\n    /**\n     * The request/response trailers object. Only populated at the ''end'' event.\n     * @since v0.3.0\n     */\n    trailers: NodeJS.Dict<string>;\n    /**\n     * The raw request/response trailer keys and values exactly as they were\n     * received. Only populated at the ''end'' event.\n     * @since v0.11.6\n     */\n    rawTrailers: string[];\n    /**\n     * Calls 'message.socket.setTimeout(msecs, callback)'.\n     * @since v0.5.9\n     */\n    setTimeout(msecs: number, callback?: () => void): this;\n    /**\n     * **Only valid for request obtained from {@link Server}.**\n     *\n     * The request method as a string. Read only. Examples: ''GET'', ''DELETE''.\n     * @since v0.1.1\n     */\n    method?: string | undefined;\n    /**\n     * **Only valid for request obtained from {@link Server}.**\n     *\n     * Request URL string. This contains only the URL that is present in the actual\n     * HTTP request. Take the following request:\n     *\n     * '''http\n     * GET /status?name=ryan HTTP/1.1\n     * Accept: text/plain\n     * '''\n     *\n     * To parse the URL into its parts:\n     *\n     * '''js\n     * new URL(request.url, 'http://\\${request.getHeaders().host}');\n     * '''\n     *\n     * When 'request.url' is ''/status?name=ryan'' and'request.getHeaders().host' is ''localhost:3000'':\n     *\n     * '''console\n     * $ node\n     * > new URL(request.url, 'http://\\${request.getHeaders().host}')\n     * URL {\n     *   href: 'http://localhost:3000/status?name=ryan',\n     *   origin: 'http://localhost:3000',\n     *   protocol: 'http:',\n     *   username: '',\n     *   password: '',\n     *   host: 'localhost:3000',\n     *   hostname: 'localhost',\n     *   port: '3000',\n     *   pathname: '/status',\n     *   search: '?name=ryan',\n     *   searchParams: URLSearchParams { 'name' => 'ryan' },\n     *   hash: ''\n     * }\n     * '''\n     * @since v0.1.90\n     */\n    url?: string | undefined;\n    /**\n     * **Only valid for response obtained from {@link ClientRequest}.**\n     *\n     * The 3-digit HTTP response status code. E.G. '404'.\n     * @since v0.1.1\n     */\n    statusCode?: number | undefined;\n    /**\n     * **Only valid for response obtained from {@link ClientRequest}.**\n     *\n     * The HTTP response status message (reason phrase). E.G. 'OK' or 'Internal Server Error'.\n     * @since v0.11.10\n     */\n    statusMessage?: string | undefined;\n    /**\n     * Calls 'destroy()' on the socket that received the 'IncomingMessage'. If 'error'is provided, an ''error'' event is emitted on the socket and 'error' is passed\n     * as an argument to any listeners on the event.\n     * @since v0.3.0\n     */\n    destroy(error?: Error): this;\n}\n`;\n\nexport const requestType = `\n  ${incomingMessageType}\n\n/**\n * @see https://expressjs.com/en/api.html#req.params\n *\n * @example\n *     app.get('/user/:id', (req, res) => res.send(req.params.id)); // implicitly 'ParamsDictionary'\n *     app.get<ParamsArray>(/user\\/(.*)/, (req, res) => res.send(req.params[0]));\n *     app.get<ParamsArray>('/user/*', (req, res) => res.send(req.params[0]));\n */\ninterface HttpRequest extends IncomingMessage {\n    /**\n     * Return request header.\n     *\n     * The 'Referrer' header field is special-cased,\n     * both 'Referrer' and 'Referer' are interchangeable.\n     *\n     * Examples:\n     *\n     *     req.get('Content-Type');\n     *     // => \"text/plain\"\n     *\n     *     req.get('content-type');\n     *     // => \"text/plain\"\n     *\n     *     req.get('Something');\n     *     // => undefined\n     *\n     * Aliased as 'req.header()'.\n     */\n    get(name: 'set-cookie'): string[] | undefined;\n    get(name: string): string | undefined;\n\n    header(name: 'set-cookie'): string[] | undefined;\n    header(name: string): string | undefined;\n\n    /**\n     * Check if the given 'type(s)' is acceptable, returning\n     * the best match when true, otherwise 'undefined', in which\n     * case you should respond with 406 \"Not Acceptable\".\n     *\n     * The 'type' value may be a single mime type string\n     * such as \"application/json\", the extension name\n     * such as \"json\", a comma-delimted list such as \"json, html, text/plain\",\n     * or an array '[\"json\", \"html\", \"text/plain\"]'. When a list\n     * or array is given the _best_ match, if any is returned.\n     *\n     * Examples:\n     *\n     *     // Accept: text/html\n     *     req.accepts('html');\n     *     // => \"html\"\n     *\n     *     // Accept: text/*, application/json\n     *     req.accepts('html');\n     *     // => \"html\"\n     *     req.accepts('text/html');\n     *     // => \"text/html\"\n     *     req.accepts('json, text');\n     *     // => \"json\"\n     *     req.accepts('application/json');\n     *     // => \"application/json\"\n     *\n     *     // Accept: text/*, application/json\n     *     req.accepts('image/png');\n     *     req.accepts('png');\n     *     // => undefined\n     *\n     *     // Accept: text/*;q=.5, application/json\n     *     req.accepts(['html', 'json']);\n     *     req.accepts('html, json');\n     *     // => \"json\"\n     */\n    accepts(): string[];\n    accepts(type: string): string | false;\n    accepts(type: string[]): string | false;\n    accepts(...type: string[]): string | false;\n\n    /**\n     * Returns the first accepted charset of the specified character sets,\n     * based on the request's Accept-Charset HTTP header field.\n     * If none of the specified charsets is accepted, returns false.\n     *\n     * For more information, or if you have issues or concerns, see accepts.\n     */\n    acceptsCharsets(): string[];\n    acceptsCharsets(charset: string): string | false;\n    acceptsCharsets(charset: string[]): string | false;\n    acceptsCharsets(...charset: string[]): string | false;\n\n    /**\n     * Returns the first accepted encoding of the specified encodings,\n     * based on the request's Accept-Encoding HTTP header field.\n     * If none of the specified encodings is accepted, returns false.\n     *\n     * For more information, or if you have issues or concerns, see accepts.\n     */\n    acceptsEncodings(): string[];\n    acceptsEncodings(encoding: string): string | false;\n    acceptsEncodings(encoding: string[]): string | false;\n    acceptsEncodings(...encoding: string[]): string | false;\n\n    /**\n     * Returns the first accepted language of the specified languages,\n     * based on the request's Accept-Language HTTP header field.\n     * If none of the specified languages is accepted, returns false.\n     *\n     * For more information, or if you have issues or concerns, see accepts.\n     */\n    acceptsLanguages(): string[];\n    acceptsLanguages(lang: string): string | false;\n    acceptsLanguages(lang: string[]): string | false;\n    acceptsLanguages(...lang: string[]): string | false;\n\n    /**\n     * Parse Range header field, capping to the given 'size'.\n     *\n     * Unspecified ranges such as \"0-\" require knowledge of your resource length. In\n     * the case of a byte range this is of course the total number of bytes.\n     * If the Range header field is not given 'undefined' is returned.\n     * If the Range header field is given, return value is a result of range-parser.\n     * See more ./types/range-parser/index.d.ts\n     *\n     * NOTE: remember that ranges are inclusive, so for example \"Range: users=0-3\"\n     * should respond with 4 users when available, not 3.\n     *\n     */\n    range(size: number, options?: RangeParserOptions): RangeParserRanges | RangeParserResult | undefined;\n\n    /**\n     * Return an array of Accepted media types\n     * ordered from highest quality to lowest.\n     */\n    accepted: MediaType[];\n\n    /**\n     * @deprecated since 4.11 Use either req.params, req.body or req.query, as applicable.\n     *\n     * Return the value of param 'name' when present or 'defaultValue'.\n     *\n     *  - Checks route placeholders, ex: _/user/:id_\n     *  - Checks body params, ex: id=12, {\"id\":12}\n     *  - Checks query string params, ex: ?id=12\n     *\n     * To utilize request bodies, 'req.body'\n     * should be an object. This can be done by using\n     * the 'connect.bodyParser()' middleware.\n     */\n    param(name: string, defaultValue?: any): string;\n\n    /**\n     * Check if the incoming request contains the \"Content-Type\"\n     * header field, and it contains the give mime 'type'.\n     *\n     * Examples:\n     *\n     *      // With Content-Type: text/html; charset=utf-8\n     *      req.is('html');\n     *      req.is('text/html');\n     *      req.is('text/*');\n     *      // => true\n     *\n     *      // When Content-Type is application/json\n     *      req.is('json');\n     *      req.is('application/json');\n     *      req.is('application/*');\n     *      // => true\n     *\n     *      req.is('html');\n     *      // => false\n     */\n    is(type: string | string[]): string | false | null;\n\n    /**\n     * Return the protocol string \"http\" or \"https\"\n     * when requested with TLS. When the \"trust proxy\"\n     * setting is enabled the \"X-Forwarded-Proto\" header\n     * field will be trusted. If you're running behind\n     * a reverse proxy that supplies https for you this\n     * may be enabled.\n     */\n    protocol: string;\n\n    /**\n     * Short-hand for:\n     *\n     *    req.protocol == 'https'\n     */\n    secure: boolean;\n\n    /**\n     * Return the remote address, or when\n     * \"trust proxy\" is 'true' return\n     * the upstream addr.\n     */\n    ip: string;\n\n    /**\n     * When \"trust proxy\" is 'true', parse\n     * the \"X-Forwarded-For\" ip address list.\n     *\n     * For example if the value were \"client, proxy1, proxy2\"\n     * you would receive the array '[\"client\", \"proxy1\", \"proxy2\"]'\n     * where \"proxy2\" is the furthest down-stream.\n     */\n    ips: string[];\n\n    /**\n     * Return subdomains as an array.\n     *\n     * Subdomains are the dot-separated parts of the host before the main domain of\n     * the app. By default, the domain of the app is assumed to be the last two\n     * parts of the host. This can be changed by setting \"subdomain offset\".\n     *\n     * For example, if the domain is \"tobi.ferrets.example.com\":\n     * If \"subdomain offset\" is not set, req.subdomains is '[\"ferrets\", \"tobi\"]'.\n     * If \"subdomain offset\" is 3, req.subdomains is '[\"tobi\"]'.\n     */\n    subdomains: string[];\n\n    /**\n     * Short-hand for 'url.parse(req.url).pathname'.\n     */\n    path: string;\n\n    /**\n     * Parse the \"Host\" header field hostname.\n     */\n    hostname: string;\n\n    /**\n     * @deprecated Use hostname instead.\n     */\n    host: string;\n\n    /**\n     * Check if the request is fresh, aka\n     * Last-Modified and/or the ETag\n     * still match.\n     */\n    fresh: boolean;\n\n    /**\n     * Check if the request is stale, aka\n     * \"Last-Modified\" and / or the \"ETag\" for the\n     * resource has changed.\n     */\n    stale: boolean;\n\n    /**\n     * Check if the request was an _XMLHttpRequest_.\n     */\n    xhr: boolean;\n\n    //body: { username: string; password: string; remember: boolean; title: string; };\n    body: ReqBody;\n\n    //cookies: { string; remember: boolean; };\n    cookies: any;\n\n    method: string;\n\n    params: P;\n\n    query: ReqQuery;\n\n    route: any;\n\n    signedCookies: any;\n\n    originalUrl: string;\n\n    url: string;\n\n    baseUrl: string;\n\n    app: Application;\n\n    /**\n     * After middleware.init executed, Request will contain res and next properties\n     * See: express/lib/middleware/init.js\n     */\n    res?: Response<ResBody, Locals> | undefined;\n    next?: NextFunction | undefined;\n}\n`;\n"
  },
  {
    "path": "web/src/components/Editor/typesResolve/responseType.ts",
    "content": "const outgoingMessageType = `\n\ndeclare class OutgoingMessage extends Writable {\n  readonly req: IncomingMessage;\n  chunkedEncoding: boolean;\n  shouldKeepAlive: boolean;\n  useChunkedEncodingByDefault: boolean;\n  sendDate: boolean;\n  /**\n   * @deprecated Use 'writableEnded' instead.\n   */\n  // finished: boolean;\n  /**\n   * Read-only. 'true' if the headers were sent, otherwise 'false'.\n   * @since v0.9.3\n   */\n  readonly headersSent: boolean;\n  /**\n   * Aliases of 'outgoingMessage.socket'\n   * @since v0.3.0\n   * @deprecated Since v15.12.0 - Use 'socket' instead.\n   */\n  // readonly connection: Socket | null;\n  /**\n   * Reference to the underlying socket. Usually, users will not want to access\n   * this property.\n   *\n   * After calling 'outgoingMessage.end()', this property will be nulled.\n   * @since v0.3.0\n   */\n  readonly socket: Socket | null;\n  constructor();\n  /**\n   * occurs, Same as binding to the 'timeout' event.\n   *\n   * Once a socket is associated with the message and is connected,'socket.setTimeout()' will be called with 'msecs' as the first parameter.\n   * @since v0.9.12\n   * @param callback Optional function to be called when a timeout\n   */\n  setTimeout(msecs: number, callback?: () => void): this;\n  /**\n   * Sets a single header value for the header object.\n   * @since v0.4.0\n   * @param name Header name\n   * @param value Header value\n   */\n  setHeader(name: string, value: number | string | ReadonlyArray<string>): this;\n  /**\n   * Gets the value of HTTP header with the given name. If such a name doesn't\n   * exist in message, it will be 'undefined'.\n   * @since v0.4.0\n   * @param name Name of header\n   */\n  getHeader(name: string): number | string | string[] | undefined;\n  /**\n   * Returns a shallow copy of the current outgoing headers. Since a shallow\n   * copy is used, array values may be mutated without additional calls to\n   * various header-related HTTP module methods. The keys of the returned\n   * object are the header names and the values are the respective header\n   * values. All header names are lowercase.\n   *\n   * The object returned by the 'outgoingMessage.getHeaders()' method does\n   * not prototypically inherit from the JavaScript Object. This means that\n   * typical Object methods such as 'obj.toString()', 'obj.hasOwnProperty()',\n   * and others are not defined and will not work.\n   *\n   * outgoingMessage.setHeader('Foo', 'bar');\n   * outgoingMessage.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']);\n   *\n   * const headers = outgoingMessage.getHeaders();\n   * // headers === { foo: 'bar', 'set-cookie': ['foo=bar', 'bar=baz'] }\n   *\n   * @since v8.0.0\n   */\n  getHeaders(): OutgoingHttpHeaders;\n  /**\n   * Returns an array of names of headers of the outgoing outgoingMessage. All\n   * names are lowercase.\n   * @since v8.0.0\n   */\n  getHeaderNames(): string[];\n  /**\n   * Returns 'true' if the header identified by 'name' is currently set in the\n   * outgoing headers. The header name is case-insensitive.\n   *\n   * const hasContentType = outgoingMessage.hasHeader('content-type');\n   *\n   * @since v8.0.0\n   */\n  hasHeader(name: string): boolean;\n  /**\n   * Removes a header that is queued for implicit sending.\n   *\n   * outgoingMessage.removeHeader('Content-Encoding');\n   *\n   * @since v0.4.0\n   */\n  removeHeader(name: string): void;\n  /**\n   * Adds HTTP trailers (headers but at the end of the message) to the message.\n   *\n   * Trailers are **only** be emitted if the message is chunked encoded. If not,\n   * the trailer will be silently discarded.\n   *\n   * HTTP requires the 'Trailer' header to be sent to emit trailers,\n   * with a list of header fields in its value, e.g.\n   *\n   * message.writeHead(200, { 'Content-Type': 'text/plain',\n   *                          'Trailer': 'Content-MD5' });\n   * message.write(fileData);\n   * message.addTrailers({ 'Content-MD5': '7895bf4b8828b55ceaf47747b4bca667' });\n   * message.end();\n   *\n   * Attempting to set a header field name or value that contains invalid characters\n   * will result in a 'TypeError' being thrown.\n   * @since v0.3.0\n   */\n  addTrailers(headers: OutgoingHttpHeaders | ReadonlyArray<[string, string]>): void;\n  /**\n   * Compulsorily flushes the message headers\n   *\n   * For efficiency reason, Node.js normally buffers the message headers\n   * until 'outgoingMessage.end()' is called or the first chunk of message data\n   * is written. It then tries to pack the headers and data into a single TCP\n   * packet.\n   *\n   * It is usually desired (it saves a TCP round-trip), but not when the first\n   * data is not sent until possibly much later. 'outgoingMessage.flushHeaders()' bypasses the optimization and kickstarts the request.\n   * @since v1.6.0\n   */\n  flushHeaders(): void;\n}\n\n`;\nexport const responseType = `\n${outgoingMessageType}\n\ndeclare class ServerResponse extends OutgoingMessage{\n  statusCode: number;\n  statusMessage: string;\n\n  constructor(req: IncomingMessage);\n\n  assignSocket(socket: Socket): void;\n  detachSocket(socket: Socket): void;\n  // https://github.com/nodejs/node/blob/master/test/parallel/test-http-write-callbacks.js#L53\n  // no args in writeContinue callback\n  writeContinue(callback?: () => void): void;\n  writeHead(statusCode: number, reasonPhrase?: string, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[]): this;\n  writeHead(statusCode: number, headers?: OutgoingHttpHeaders | OutgoingHttpHeader[]): this;\n  writeProcessing(): void;\n}\n\n\ninterface HttpResponse extends ServerResponse {\n    /**\n     * Set status 'code'.\n     */\n    status(code: StatusCode): this;\n\n    /**\n     * Set the response HTTP status code to 'statusCode' and send its string representation as the response body.\n     * @link http://expressjs.com/4x/api.html#res.sendStatus\n     *\n     * Examples:\n     *\n     *    res.sendStatus(200); // equivalent to res.status(200).send('OK')\n     *    res.sendStatus(403); // equivalent to res.status(403).send('Forbidden')\n     *    res.sendStatus(404); // equivalent to res.status(404).send('Not Found')\n     *    res.sendStatus(500); // equivalent to res.status(500).send('Internal Server Error')\n     */\n    sendStatus(code: StatusCode): this;\n\n    /**\n     * Set Link header field with the given 'links'.\n     *\n     * Examples:\n     *\n     *    res.links({\n     *      next: 'http://api.example.com/users?page=2',\n     *      last: 'http://api.example.com/users?page=5'\n     *    });\n     */\n    links(links: any): this;\n\n    /**\n     * Send a response.\n     *\n     * Examples:\n     *\n     *     res.send(new Buffer('wahoo'));\n     *     res.send({ some: 'json' });\n     *     res.send('<p>some html</p>');\n     *     res.status(404).send('Sorry, cant find that');\n     */\n    send: Send<ResBody, this>;\n\n    /**\n     * Send JSON response.\n     *\n     * Examples:\n     *\n     *     res.json(null);\n     *     res.json({ user: 'tj' });\n     *     res.status(500).json('oh noes!');\n     *     res.status(404).json('I dont have that');\n     */\n    json: Send<ResBody, this>;\n\n    /**\n     * Send JSON response with JSONP callback support.\n     *\n     * Examples:\n     *\n     *     res.jsonp(null);\n     *     res.jsonp({ user: 'tj' });\n     *     res.status(500).jsonp('oh noes!');\n     *     res.status(404).jsonp('I dont have that');\n     */\n    jsonp: Send<ResBody, this>;\n\n    /**\n     * Transfer the file at the given 'path'.\n     *\n     * Automatically sets the _Content-Type_ response header field.\n     * The callback 'fn(err)' is invoked when the transfer is complete\n     * or when an error occurs. Be sure to check 'res.headersSent'\n     * if you wish to attempt responding, as the header and some data\n     * may have already been transferred.\n     *\n     * Options:\n     *\n     *   - 'maxAge'   defaulting to 0 (can be string converted by 'ms')\n     *   - 'root'     root directory for relative filenames\n     *   - 'headers'  object of headers to serve with file\n     *   - 'dotfiles' serve dotfiles, defaulting to false; can be '\"allow\"' to send them\n     *\n     * Other options are passed along to 'send'.\n     *\n     * Examples:\n     *\n     *  The following example illustrates how 'res.sendFile()' may\n     *  be used as an alternative for the 'static()' middleware for\n     *  dynamic situations. The code backing 'res.sendFile()' is actually\n     *  the same code, so HTTP cache support etc is identical.\n     *\n     *     app.get('/user/:uid/photos/:file', function(req, res){\n     *       var uid = req.params.uid\n     *         , file = req.params.file;\n     *\n     *       req.user.mayViewFilesFrom(uid, function(yes){\n     *         if (yes) {\n     *           res.sendFile('/uploads/' + uid + '/' + file);\n     *         } else {\n     *           res.send(403, 'Sorry! you cant see that.');\n     *         }\n     *       });\n     *     });\n     *\n     * @api public\n     */\n    sendFile(path: string, fn?: Errback): void;\n    sendFile(path: string, options: any, fn?: Errback): void;\n\n    /**\n     * @deprecated Use sendFile instead.\n     */\n    // sendfile(path: string): void;\n    /**\n     * @deprecated Use sendFile instead.\n     */\n    // sendfile(path: string, options: any): void;\n    /**\n     * @deprecated Use sendFile instead.\n     */\n    // sendfile(path: string, fn: Errback): void;\n    /**\n     * @deprecated Use sendFile instead.\n     */\n    // sendfile(path: string, options: any, fn: Errback): void;\n\n    /**\n     * Transfer the file at the given 'path' as an attachment.\n     *\n     * Optionally providing an alternate attachment 'filename',\n     * and optional callback 'fn(err)'. The callback is invoked\n     * when the data transfer is complete, or when an error has\n     * ocurred. Be sure to check 'res.headersSent' if you plan to respond.\n     *\n     * The optional options argument passes through to the underlying\n     * res.sendFile() call, and takes the exact same parameters.\n     *\n     * This method uses 'res.sendfile()'.\n     */\n    download(path: string, fn?: Errback): void;\n    download(path: string, filename: string, fn?: Errback): void;\n    download(path: string, filename: string, options: any, fn?: Errback): void;\n\n    /**\n     * Set _Content-Type_ response header with 'type' through 'mime.lookup()'\n     * when it does not contain \"/\", or set the Content-Type to 'type' otherwise.\n     *\n     * Examples:\n     *\n     *     res.type('.html');\n     *     res.type('html');\n     *     res.type('json');\n     *     res.type('application/json');\n     *     res.type('png');\n     */\n    contentType(type: string): this;\n\n    /**\n     * Set _Content-Type_ response header with 'type' through 'mime.lookup()'\n     * when it does not contain \"/\", or set the Content-Type to 'type' otherwise.\n     *\n     * Examples:\n     *\n     *     res.type('.html');\n     *     res.type('html');\n     *     res.type('json');\n     *     res.type('application/json');\n     *     res.type('png');\n     */\n    type(type: string): this;\n\n    /**\n     * Respond to the Acceptable formats using an 'obj'\n     * of mime-type callbacks.\n     *\n     * This method uses 'req.accepted', an array of\n     * acceptable types ordered by their quality values.\n     * When \"Accept\" is not present the _first_ callback\n     * is invoked, otherwise the first match is used. When\n     * no match is performed the server responds with\n     * 406 \"Not Acceptable\".\n     *\n     * Content-Type is set for you, however if you choose\n     * you may alter this within the callback using 'res.type()'\n     * or 'res.set('Content-Type', ...)'.\n     *\n     *    res.format({\n     *      'text/plain': function(){\n     *        res.send('hey');\n     *      },\n     *\n     *      'text/html': function(){\n     *        res.send('<p>hey</p>');\n     *      },\n     *\n     *      'appliation/json': function(){\n     *        res.send({ message: 'hey' });\n     *      }\n     *    });\n     *\n     * In addition to canonicalized MIME types you may\n     * also use extnames mapped to these types:\n     *\n     *    res.format({\n     *      text: function(){\n     *        res.send('hey');\n     *      },\n     *\n     *      html: function(){\n     *        res.send('<p>hey</p>');\n     *      },\n     *\n     *      json: function(){\n     *        res.send({ message: 'hey' });\n     *      }\n     *    });\n     *\n     * By default Express passes an 'Error'\n     * with a '.status' of 406 to 'next(err)'\n     * if a match is not made. If you provide\n     * a '.default' callback it will be invoked\n     * instead.\n     */\n    format(obj: any): this;\n\n    /**\n     * Set _Content-Disposition_ header to _attachment_ with optional 'filename'.\n     */\n    attachment(filename?: string): this;\n\n    /**\n     * Set header 'field' to 'val', or pass\n     * an object of header fields.\n     *\n     * Examples:\n     *\n     *    res.set('Foo', ['bar', 'baz']);\n     *    res.set('Accept', 'application/json');\n     *    res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });\n     *\n     * Aliased as 'res.header()'.\n     */\n    set(field: any): this;\n    set(field: string, value?: string | string[]): this;\n\n    header(field: any): this;\n    header(field: string, value?: string | string[]): this;\n\n    // Property indicating if HTTP headers has been sent for the response.\n    headersSent: boolean;\n\n    /** Get value for header 'field'. */\n    get(field: string): string;\n\n    /** Clear cookie 'name'. */\n    clearCookie(name: string, options?: any): this;\n\n    /**\n     * Set cookie 'name' to 'val', with the given 'options'.\n     *\n     * Options:\n     *\n     *    - 'maxAge'   max-age in milliseconds, converted to 'expires'\n     *    - 'signed'   sign the cookie\n     *    - 'path'     defaults to \"/\"\n     *\n     * Examples:\n     *\n     *    // \"Remember Me\" for 15 minutes\n     *    res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });\n     *\n     *    // save as above\n     *    res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true })\n     */\n    cookie(name: string, val: string, options: CookieOptions): this;\n    cookie(name: string, val: any, options: CookieOptions): this;\n    cookie(name: string, val: any): this;\n\n    /**\n     * Set the location header to 'url'.\n     *\n     * The given 'url' can also be the name of a mapped url, for\n     * example by default express supports \"back\" which redirects\n     * to the _Referrer_ or _Referer_ headers or \"/\".\n     *\n     * Examples:\n     *\n     *    res.location('/foo/bar').;\n     *    res.location('http://example.com');\n     *    res.location('../login'); // /blog/post/1 -> /blog/login\n     *\n     * Mounting:\n     *\n     *   When an application is mounted and 'res.location()'\n     *   is given a path that does _not_ lead with \"/\" it becomes\n     *   relative to the mount-point. For example if the application\n     *   is mounted at \"/blog\", the following would become \"/blog/login\".\n     *\n     *      res.location('login');\n     *\n     *   While the leading slash would result in a location of \"/login\":\n     *\n     *      res.location('/login');\n     */\n    location(url: string): this;\n\n    /**\n     * Redirect to the given 'url' with optional response 'status'\n     * defaulting to 302.\n     *\n     * The resulting 'url' is determined by 'res.location()', so\n     * it will play nicely with mounted apps, relative paths,\n     * '\"back\"' etc.\n     *\n     * Examples:\n     *\n     *    res.redirect('/foo/bar');\n     *    res.redirect('http://example.com');\n     *    res.redirect(301, 'http://example.com');\n     *    res.redirect('http://example.com', 301);\n     *    res.redirect('../login'); // /blog/post/1 -> /blog/login\n     */\n    redirect(url: string): void;\n    redirect(status: number, url: string): void;\n    redirect(url: string, status: number): void;\n\n    /**\n     * Render 'view' with the given 'options' and optional callback 'fn'.\n     * When a callback function is given a response will _not_ be made\n     * automatically, otherwise a response of _200_ and _text/html_ is given.\n     *\n     * Options:\n     *\n     *  - 'cache'     boolean hinting to the engine it should cache\n     *  - 'filename'  filename of the view being rendered\n     */\n    render(view: string, options?: object, callback?: (err: Error, html: string) => void): void;\n    render(view: string, callback?: (err: Error, html: string) => void): void;\n\n    locals: Locals;\n\n    charset: string;\n\n    /**\n     * Adds the field to the Vary response header, if it is not there already.\n     * Examples:\n     *\n     *     res.vary('User-Agent').render('docs');\n     *\n     */\n    vary(field: string): this;\n\n    // app: Application;\n\n    /**\n     * Appends the specified value to the HTTP response header field.\n     * If the header is not already set, it creates the header with the specified value.\n     * The value parameter can be a string or an array.\n     *\n     * Note: calling res.set() after res.append() will reset the previously-set header value.\n     *\n     * @since 4.11.0\n     */\n    append(field: string, value?: string[] | string): this;\n\n    /**\n     * After middleware.init executed, Response will contain req property\n     * See: express/lib/middleware/init.js\n     */\n    // req?: Request;\n}\n`;\n"
  },
  {
    "path": "web/src/components/Editor/typesResolve/streamType.ts",
    "content": "export const streamTypes = `\nclass Stream extends EventEmitter {\n  constructor(opts?: ReadableOptions);\n  pipe<T extends NodeJS.WritableStream>(\n      destination: T,\n      options?: {\n          end?: boolean | undefined;\n      }\n  ): T;\n}\n`;\n\nexport const readableStreamTypes = `\ninterface StreamOptions<T extends Stream> extends Abortable {\n  emitClose?: boolean | undefined;\n  highWaterMark?: number | undefined;\n  objectMode?: boolean | undefined;\n  construct?(this: T, callback: (error?: Error | null) => void): void;\n  destroy?(this: T, error: Error | null, callback: (error: Error | null) => void): void;\n  autoDestroy?: boolean | undefined;\n}\ninterface ReadableOptions extends StreamOptions<Readable> {\n  encoding?: BufferEncoding | undefined;\n  read?(this: Readable, size: number): void;\n}\n/**\n * @since v0.9.4\n */\nclass Readable extends Stream implements NodeJS.ReadableStream {\n    /**\n     * A utility method for creating Readable Streams out of iterators.\n     */\n    static from(iterable: Iterable<any> | AsyncIterable<any>, options?: ReadableOptions): Readable;\n    /**\n     * Returns whether the stream has been read from or cancelled.\n     * @since v16.8.0\n     */\n    static isDisturbed(stream: Readable | NodeJS.ReadableStream): boolean;\n    /**\n     * Returns whether the stream was destroyed or errored before emitting ''end''.\n     * @since v16.8.0\n     * @experimental\n     */\n    readonly readableAborted: boolean;\n    /**\n     * Is 'true' if it is safe to call 'readable.read()', which means\n     * the stream has not been destroyed or emitted ''error'' or ''end''.\n     * @since v11.4.0\n     */\n    readable: boolean;\n    /**\n     * Returns whether ''data'' has been emitted.\n     * @since v16.7.0\n     * @experimental\n     */\n    readonly readableDidRead: boolean;\n    /**\n     * Getter for the property 'encoding' of a given 'Readable' stream. The 'encoding'property can be set using the 'readable.setEncoding()' method.\n     * @since v12.7.0\n     */\n    readonly readableEncoding: BufferEncoding | null;\n    /**\n     * Becomes 'true' when ''end'' event is emitted.\n     * @since v12.9.0\n     */\n    readonly readableEnded: boolean;\n    /**\n     * This property reflects the current state of a 'Readable' stream as described\n     * in the 'Three states' section.\n     * @since v9.4.0\n     */\n    readonly readableFlowing: boolean | null;\n    /**\n     * Returns the value of 'highWaterMark' passed when creating this 'Readable'.\n     * @since v9.3.0\n     */\n    readonly readableHighWaterMark: number;\n    /**\n     * This property contains the number of bytes (or objects) in the queue\n     * ready to be read. The value provides introspection data regarding\n     * the status of the 'highWaterMark'.\n     * @since v9.4.0\n     */\n    readonly readableLength: number;\n    /**\n     * Getter for the property 'objectMode' of a given 'Readable' stream.\n     * @since v12.3.0\n     */\n    readonly readableObjectMode: boolean;\n    /**\n     * Is 'true' after 'readable.destroy()' has been called.\n     * @since v8.0.0\n     */\n    destroyed: boolean;\n    constructor(opts?: ReadableOptions);\n    _construct?(callback: (error?: Error | null) => void): void;\n    _read(size: number): void;\n    /**\n     * The 'readable.read()' method pulls some data out of the internal buffer and\n     * returns it. If no data available to be read, 'null' is returned. By default,\n     * the data will be returned as a 'Buffer' object unless an encoding has been\n     * specified using the 'readable.setEncoding()' method or the stream is operating\n     * in object mode.\n     *\n     * The optional 'size' argument specifies a specific number of bytes to read. If'size' bytes are not available to be read, 'null' will be returned _unless_the stream has ended, in which\n     * case all of the data remaining in the internal\n     * buffer will be returned.\n     *\n     * If the 'size' argument is not specified, all of the data contained in the\n     * internal buffer will be returned.\n     *\n     * The 'size' argument must be less than or equal to 1 GiB.\n     *\n     * The 'readable.read()' method should only be called on 'Readable' streams\n     * operating in paused mode. In flowing mode, 'readable.read()' is called\n     * automatically until the internal buffer is fully drained.\n     *\n     * '''js\n     * const readable = getReadableStreamSomehow();\n     *\n     * // 'readable' may be triggered multiple times as data is buffered in\n     * readable.on('readable', () => {\n     *   let chunk;\n     *   console.log('Stream is readable (new data received in buffer)');\n     *   // Use a loop to make sure we read all currently available data\n     *   while (null !== (chunk = readable.read())) {\n     *     console.log('Read \\${chunk.length} bytes of data...');\n     *   }\n     * });\n     *\n     * // 'end' will be triggered once when there is no more data available\n     * readable.on('end', () => {\n     *   console.log('Reached end of stream.');\n     * });\n     * '''\n     *\n     * Each call to 'readable.read()' returns a chunk of data, or 'null'. The chunks\n     * are not concatenated. A 'while' loop is necessary to consume all data\n     * currently in the buffer. When reading a large file '.read()' may return 'null',\n     * having consumed all buffered content so far, but there is still more data to\n     * come not yet buffered. In this case a new ''readable'' event will be emitted\n     * when there is more data in the buffer. Finally the ''end'' event will be\n     * emitted when there is no more data to come.\n     *\n     * Therefore to read a file's whole contents from a 'readable', it is necessary\n     * to collect chunks across multiple ''readable'' events:\n     *\n     * '''js\n     * const chunks = [];\n     *\n     * readable.on('readable', () => {\n     *   let chunk;\n     *   while (null !== (chunk = readable.read())) {\n     *     chunks.push(chunk);\n     *   }\n     * });\n     *\n     * readable.on('end', () => {\n     *   const content = chunks.join('');\n     * });\n     * '''\n     *\n     * A 'Readable' stream in object mode will always return a single item from\n     * a call to 'readable.read(size)', regardless of the value of the'size' argument.\n     *\n     * If the 'readable.read()' method returns a chunk of data, a ''data'' event will\n     * also be emitted.\n     *\n     * Calling {@link read} after the ''end'' event has\n     * been emitted will return 'null'. No runtime error will be raised.\n     * @since v0.9.4\n     * @param size Optional argument to specify how much data to read.\n     */\n    read(size?: number): any;\n    /**\n     * The 'readable.setEncoding()' method sets the character encoding for\n     * data read from the 'Readable' stream.\n     *\n     * By default, no encoding is assigned and stream data will be returned as'Buffer' objects. Setting an encoding causes the stream data\n     * to be returned as strings of the specified encoding rather than as 'Buffer'objects. For instance, calling 'readable.setEncoding('utf8')' will cause the\n     * output data to be interpreted as UTF-8 data, and passed as strings. Calling'readable.setEncoding('hex')' will cause the data to be encoded in hexadecimal\n     * string format.\n     *\n     * The 'Readable' stream will properly handle multi-byte characters delivered\n     * through the stream that would otherwise become improperly decoded if simply\n     * pulled from the stream as 'Buffer' objects.\n     *\n     * '''js\n     * const readable = getReadableStreamSomehow();\n     * readable.setEncoding('utf8');\n     * readable.on('data', (chunk) => {\n     *   assert.equal(typeof chunk, 'string');\n     *   console.log('Got %d characters of string data:', chunk.length);\n     * });\n     * '''\n     * @since v0.9.4\n     * @param encoding The encoding to use.\n     */\n    setEncoding(encoding: BufferEncoding): this;\n    /**\n     * The 'readable.pause()' method will cause a stream in flowing mode to stop\n     * emitting ''data'' events, switching out of flowing mode. Any data that\n     * becomes available will remain in the internal buffer.\n     *\n     * '''js\n     * const readable = getReadableStreamSomehow();\n     * readable.on('data', (chunk) => {\n     *   console.log('Received \\${chunk.length} bytes of data.');\n     *   readable.pause();\n     *   console.log('There will be no additional data for 1 second.');\n     *   setTimeout(() => {\n     *     console.log('Now data will start flowing again.');\n     *     readable.resume();\n     *   }, 1000);\n     * });\n     * '''\n     *\n     * The 'readable.pause()' method has no effect if there is a ''readable''event listener.\n     * @since v0.9.4\n     */\n    pause(): this;\n    /**\n     * The 'readable.resume()' method causes an explicitly paused 'Readable' stream to\n     * resume emitting ''data'' events, switching the stream into flowing mode.\n     *\n     * The 'readable.resume()' method can be used to fully consume the data from a\n     * stream without actually processing any of that data:\n     *\n     * '''js\n     * getReadableStreamSomehow()\n     *   .resume()\n     *   .on('end', () => {\n     *     console.log('Reached the end, but did not read anything.');\n     *   });\n     * '''\n     *\n     * The 'readable.resume()' method has no effect if there is a ''readable''event listener.\n     * @since v0.9.4\n     */\n    resume(): this;\n    /**\n     * The 'readable.isPaused()' method returns the current operating state of the'Readable'. This is used primarily by the mechanism that underlies the'readable.pipe()' method. In most\n     * typical cases, there will be no reason to\n     * use this method directly.\n     *\n     * '''js\n     * const readable = new stream.Readable();\n     *\n     * readable.isPaused(); // === false\n     * readable.pause();\n     * readable.isPaused(); // === true\n     * readable.resume();\n     * readable.isPaused(); // === false\n     * '''\n     * @since v0.11.14\n     */\n    isPaused(): boolean;\n    /**\n     * The 'readable.unpipe()' method detaches a 'Writable' stream previously attached\n     * using the {@link pipe} method.\n     *\n     * If the 'destination' is not specified, then _all_ pipes are detached.\n     *\n     * If the 'destination' is specified, but no pipe is set up for it, then\n     * the method does nothing.\n     *\n     * '''js\n     * const fs = require('fs');\n     * const readable = getReadableStreamSomehow();\n     * const writable = fs.createWriteStream('file.txt');\n     * // All the data from readable goes into 'file.txt',\n     * // but only for the first second.\n     * readable.pipe(writable);\n     * setTimeout(() => {\n     *   console.log('Stop writing to file.txt.');\n     *   readable.unpipe(writable);\n     *   console.log('Manually close the file stream.');\n     *   writable.end();\n     * }, 1000);\n     * '''\n     * @since v0.9.4\n     * @param destination Optional specific stream to unpipe\n     */\n    unpipe(destination?: NodeJS.WritableStream): this;\n    /**\n     * Passing 'chunk' as 'null' signals the end of the stream (EOF) and behaves the\n     * same as 'readable.push(null)', after which no more data can be written. The EOF\n     * signal is put at the end of the buffer and any buffered data will still be\n     * flushed.\n     *\n     * The 'readable.unshift()' method pushes a chunk of data back into the internal\n     * buffer. This is useful in certain situations where a stream is being consumed by\n     * code that needs to \"un-consume\" some amount of data that it has optimistically\n     * pulled out of the source, so that the data can be passed on to some other party.\n     *\n     * The 'stream.unshift(chunk)' method cannot be called after the ''end'' event\n     * has been emitted or a runtime error will be thrown.\n     *\n     * Developers using 'stream.unshift()' often should consider switching to\n     * use of a 'Transform' stream instead. See the 'API for stream implementers' section for more information.\n     *\n     * '''js\n     * // Pull off a header delimited by \\n\\n.\n     * // Use unshift() if we get too much.\n     * // Call the callback with (error, header, stream).\n     * const { StringDecoder } = require('string_decoder');\n     * function parseHeader(stream, callback) {\n     *   stream.on('error', callback);\n     *   stream.on('readable', onReadable);\n     *   const decoder = new StringDecoder('utf8');\n     *   let header = '';\n     *   function onReadable() {\n     *     let chunk;\n     *     while (null !== (chunk = stream.read())) {\n     *       const str = decoder.write(chunk);\n     *       if (str.match(/\\n\\n/)) {\n     *         // Found the header boundary.\n     *         const split = str.split(/\\n\\n/);\n     *         header += split.shift();\n     *         const remaining = split.join('\\n\\n');\n     *         const buf = Buffer.from(remaining, 'utf8');\n     *         stream.removeListener('error', callback);\n     *         // Remove the 'readable' listener before unshifting.\n     *         stream.removeListener('readable', onReadable);\n     *         if (buf.length)\n     *           stream.unshift(buf);\n     *         // Now the body of the message can be read from the stream.\n     *         callback(null, header, stream);\n     *       } else {\n     *         // Still reading the header.\n     *         header += str;\n     *       }\n     *     }\n     *   }\n     * }\n     * '''\n     *\n     * Unlike {@link push}, 'stream.unshift(chunk)' will not\n     * end the reading process by resetting the internal reading state of the stream.\n     * This can cause unexpected results if 'readable.unshift()' is called during a\n     * read (i.e. from within a {@link _read} implementation on a\n     * custom stream). Following the call to 'readable.unshift()' with an immediate {@link push} will reset the reading state appropriately,\n     * however it is best to simply avoid calling 'readable.unshift()' while in the\n     * process of performing a read.\n     * @since v0.9.11\n     * @param chunk Chunk of data to unshift onto the read queue. For streams not operating in object mode, 'chunk' must be a string, 'Buffer', 'Uint8Array' or 'null'. For object mode\n     * streams, 'chunk' may be any JavaScript value.\n     * @param encoding Encoding of string chunks. Must be a valid 'Buffer' encoding, such as ''utf8'' or ''ascii''.\n     */\n    unshift(chunk: any, encoding?: BufferEncoding): void;\n    /**\n     * Prior to Node.js 0.10, streams did not implement the entire 'stream' module API\n     * as it is currently defined. (See 'Compatibility' for more information.)\n     *\n     * When using an older Node.js library that emits ''data'' events and has a {@link pause} method that is advisory only, the'readable.wrap()' method can be used to create a 'Readable'\n     * stream that uses\n     * the old stream as its data source.\n     *\n     * It will rarely be necessary to use 'readable.wrap()' but the method has been\n     * provided as a convenience for interacting with older Node.js applications and\n     * libraries.\n     *\n     * '''js\n     * const { OldReader } = require('./old-api-module.js');\n     * const { Readable } = require('stream');\n     * const oreader = new OldReader();\n     * const myReader = new Readable().wrap(oreader);\n     *\n     * myReader.on('readable', () => {\n     *   myReader.read(); // etc.\n     * });\n     * '''\n     * @since v0.9.4\n     * @param stream An \"old style\" readable stream\n     */\n    wrap(stream: NodeJS.ReadableStream): this;\n    push(chunk: any, encoding?: BufferEncoding): boolean;\n    _destroy(error: Error | null, callback: (error?: Error | null) => void): void;\n    /**\n     * Destroy the stream. Optionally emit an ''error'' event, and emit a ''close''event (unless 'emitClose' is set to 'false'). After this call, the readable\n     * stream will release any internal resources and subsequent calls to 'push()'will be ignored.\n     *\n     * Once 'destroy()' has been called any further calls will be a no-op and no\n     * further errors except from '_destroy()' may be emitted as ''error''.\n     *\n     * Implementors should not override this method, but instead implement 'readable._destroy()'.\n     * @since v8.0.0\n     * @param error Error which will be passed as payload in ''error'' event\n     */\n    destroy(error?: Error): this;\n    /**\n     * Event emitter\n     * The defined events on documents including:\n     * 1. close\n     * 2. data\n     * 3. end\n     * 4. error\n     * 5. pause\n     * 6. readable\n     * 7. resume\n     */\n    addListener(event: 'close', listener: () => void): this;\n    addListener(event: 'data', listener: (chunk: any) => void): this;\n    addListener(event: 'end', listener: () => void): this;\n    addListener(event: 'error', listener: (err: Error) => void): this;\n    addListener(event: 'pause', listener: () => void): this;\n    addListener(event: 'readable', listener: () => void): this;\n    addListener(event: 'resume', listener: () => void): this;\n    addListener(event: string | symbol, listener: (...args: any[]) => void): this;\n    emit(event: 'close'): boolean;\n    emit(event: 'data', chunk: any): boolean;\n    emit(event: 'end'): boolean;\n    emit(event: 'error', err: Error): boolean;\n    emit(event: 'pause'): boolean;\n    emit(event: 'readable'): boolean;\n    emit(event: 'resume'): boolean;\n    emit(event: string | symbol, ...args: any[]): boolean;\n    on(event: 'close', listener: () => void): this;\n    on(event: 'data', listener: (chunk: any) => void): this;\n    on(event: 'end', listener: () => void): this;\n    on(event: 'error', listener: (err: Error) => void): this;\n    on(event: 'pause', listener: () => void): this;\n    on(event: 'readable', listener: () => void): this;\n    on(event: 'resume', listener: () => void): this;\n    on(event: string | symbol, listener: (...args: any[]) => void): this;\n    once(event: 'close', listener: () => void): this;\n    once(event: 'data', listener: (chunk: any) => void): this;\n    once(event: 'end', listener: () => void): this;\n    once(event: 'error', listener: (err: Error) => void): this;\n    once(event: 'pause', listener: () => void): this;\n    once(event: 'readable', listener: () => void): this;\n    once(event: 'resume', listener: () => void): this;\n    once(event: string | symbol, listener: (...args: any[]) => void): this;\n    prependListener(event: 'close', listener: () => void): this;\n    prependListener(event: 'data', listener: (chunk: any) => void): this;\n    prependListener(event: 'end', listener: () => void): this;\n    prependListener(event: 'error', listener: (err: Error) => void): this;\n    prependListener(event: 'pause', listener: () => void): this;\n    prependListener(event: 'readable', listener: () => void): this;\n    prependListener(event: 'resume', listener: () => void): this;\n    prependListener(event: string | symbol, listener: (...args: any[]) => void): this;\n    prependOnceListener(event: 'close', listener: () => void): this;\n    prependOnceListener(event: 'data', listener: (chunk: any) => void): this;\n    prependOnceListener(event: 'end', listener: () => void): this;\n    prependOnceListener(event: 'error', listener: (err: Error) => void): this;\n    prependOnceListener(event: 'pause', listener: () => void): this;\n    prependOnceListener(event: 'readable', listener: () => void): this;\n    prependOnceListener(event: 'resume', listener: () => void): this;\n    prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;\n    removeListener(event: 'close', listener: () => void): this;\n    removeListener(event: 'data', listener: (chunk: any) => void): this;\n    removeListener(event: 'end', listener: () => void): this;\n    removeListener(event: 'error', listener: (err: Error) => void): this;\n    removeListener(event: 'pause', listener: () => void): this;\n    removeListener(event: 'readable', listener: () => void): this;\n    removeListener(event: 'resume', listener: () => void): this;\n    removeListener(event: string | symbol, listener: (...args: any[]) => void): this;\n    [Symbol.asyncIterator](): AsyncIterableIterator<any>;\n}\n`;\n\nexport const writableStreamTypes = `\ninterface WritableOptions extends StreamOptions<Writable> {\n  decodeStrings?: boolean | undefined;\n  defaultEncoding?: BufferEncoding | undefined;\n  write?(this: Writable, chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void;\n  writev?(\n      this: Writable,\n      chunks: Array<{\n          chunk: any;\n          encoding: BufferEncoding;\n      }>,\n      callback: (error?: Error | null) => void\n  ): void;\n  final?(this: Writable, callback: (error?: Error | null) => void): void;\n}\n/**\n* @since v0.9.4\n*/\nclass Writable extends Stream implements NodeJS.WritableStream {\n  /**\n   * Is 'true' if it is safe to call 'writable.write()', which means\n   * the stream has not been destroyed, errored or ended.\n   * @since v11.4.0\n   */\n  readonly writable: boolean;\n  /**\n   * Is 'true' after 'writable.end()' has been called. This property\n   * does not indicate whether the data has been flushed, for this use 'writable.writableFinished' instead.\n   * @since v12.9.0\n   */\n  readonly writableEnded: boolean;\n  /**\n   * Is set to 'true' immediately before the ''finish'' event is emitted.\n   * @since v12.6.0\n   */\n  readonly writableFinished: boolean;\n  /**\n   * Return the value of 'highWaterMark' passed when creating this 'Writable'.\n   * @since v9.3.0\n   */\n  readonly writableHighWaterMark: number;\n  /**\n   * This property contains the number of bytes (or objects) in the queue\n   * ready to be written. The value provides introspection data regarding\n   * the status of the 'highWaterMark'.\n   * @since v9.4.0\n   */\n  readonly writableLength: number;\n  /**\n   * Getter for the property 'objectMode' of a given 'Writable' stream.\n   * @since v12.3.0\n   */\n  readonly writableObjectMode: boolean;\n  /**\n   * Number of times 'writable.uncork()' needs to be\n   * called in order to fully uncork the stream.\n   * @since v13.2.0, v12.16.0\n   */\n  readonly writableCorked: number;\n  /**\n   * Is 'true' after 'writable.destroy()' has been called.\n   * @since v8.0.0\n   */\n  destroyed: boolean;\n  constructor(opts?: WritableOptions);\n  _write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void;\n  _writev?(\n      chunks: Array<{\n          chunk: any;\n          encoding: BufferEncoding;\n      }>,\n      callback: (error?: Error | null) => void\n  ): void;\n  _construct?(callback: (error?: Error | null) => void): void;\n  _destroy(error: Error | null, callback: (error?: Error | null) => void): void;\n  _final(callback: (error?: Error | null) => void): void;\n  /**\n   * The 'writable.write()' method writes some data to the stream, and calls the\n   * supplied 'callback' once the data has been fully handled. If an error\n   * occurs, the 'callback' will be called with the error as its\n   * first argument. The 'callback' is called asynchronously and before ''error'' is\n   * emitted.\n   *\n   * The return value is 'true' if the internal buffer is less than the'highWaterMark' configured when the stream was created after admitting 'chunk'.\n   * If 'false' is returned, further attempts to write data to the stream should\n   * stop until the ''drain'' event is emitted.\n   *\n   * While a stream is not draining, calls to 'write()' will buffer 'chunk', and\n   * return false. Once all currently buffered chunks are drained (accepted for\n   * delivery by the operating system), the ''drain'' event will be emitted.\n   * It is recommended that once 'write()' returns false, no more chunks be written\n   * until the ''drain'' event is emitted. While calling 'write()' on a stream that\n   * is not draining is allowed, Node.js will buffer all written chunks until\n   * maximum memory usage occurs, at which point it will abort unconditionally.\n   * Even before it aborts, high memory usage will cause poor garbage collector\n   * performance and high RSS (which is not typically released back to the system,\n   * even after the memory is no longer required). Since TCP sockets may never\n   * drain if the remote peer does not read the data, writing a socket that is\n   * not draining may lead to a remotely exploitable vulnerability.\n   *\n   * Writing data while the stream is not draining is particularly\n   * problematic for a 'Transform', because the 'Transform' streams are paused\n   * by default until they are piped or a ''data'' or ''readable'' event handler\n   * is added.\n   *\n   * If the data to be written can be generated or fetched on demand, it is\n   * recommended to encapsulate the logic into a 'Readable' and use {@link pipe}. However, if calling 'write()' is preferred, it is\n   * possible to respect backpressure and avoid memory issues using the ''drain'' event:\n   *\n   * '''js\n   * function write(data, cb) {\n   *   if (!stream.write(data)) {\n   *     stream.once('drain', cb);\n   *   } else {\n   *     process.nextTick(cb);\n   *   }\n   * }\n   *\n   * // Wait for cb to be called before doing any other write.\n   * write('hello', () => {\n   *   console.log('Write completed, do more writes now.');\n   * });\n   * '''\n   *\n   * A 'Writable' stream in object mode will always ignore the 'encoding' argument.\n   * @since v0.9.4\n   * @param chunk Optional data to write. For streams not operating in object mode, 'chunk' must be a string, 'Buffer' or 'Uint8Array'. For object mode streams, 'chunk' may be any\n   * JavaScript value other than 'null'.\n   * @param [encoding='utf8'] The encoding, if 'chunk' is a string.\n   * @param callback Callback for when this chunk of data is flushed.\n   * @return 'false' if the stream wishes for the calling code to wait for the ''drain'' event to be emitted before continuing to write additional data; otherwise 'true'.\n   */\n  write(chunk: any, callback?: (error: Error | null | undefined) => void): boolean;\n  write(chunk: any, encoding: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean;\n  /**\n   * The 'writable.setDefaultEncoding()' method sets the default 'encoding' for a 'Writable' stream.\n   * @since v0.11.15\n   * @param encoding The new default encoding\n   */\n  setDefaultEncoding(encoding: BufferEncoding): this;\n  /**\n   * Calling the 'writable.end()' method signals that no more data will be written\n   * to the 'Writable'. The optional 'chunk' and 'encoding' arguments allow one\n   * final additional chunk of data to be written immediately before closing the\n   * stream.\n   *\n   * Calling the {@link write} method after calling {@link end} will raise an error.\n   *\n   * '''js\n   * // Write 'hello, ' and then end with 'world!'.\n   * const fs = require('fs');\n   * const file = fs.createWriteStream('example.txt');\n   * file.write('hello, ');\n   * file.end('world!');\n   * // Writing more now is not allowed!\n   * '''\n   * @since v0.9.4\n   * @param chunk Optional data to write. For streams not operating in object mode, 'chunk' must be a string, 'Buffer' or 'Uint8Array'. For object mode streams, 'chunk' may be any\n   * JavaScript value other than 'null'.\n   * @param encoding The encoding if 'chunk' is a string\n   * @param callback Callback for when the stream is finished.\n   */\n  end(cb?: () => void): this;\n  end(chunk: any, cb?: () => void): this;\n  end(chunk: any, encoding: BufferEncoding, cb?: () => void): this;\n  /**\n   * The 'writable.cork()' method forces all written data to be buffered in memory.\n   * The buffered data will be flushed when either the {@link uncork} or {@link end} methods are called.\n   *\n   * The primary intent of 'writable.cork()' is to accommodate a situation in which\n   * several small chunks are written to the stream in rapid succession. Instead of\n   * immediately forwarding them to the underlying destination, 'writable.cork()'buffers all the chunks until 'writable.uncork()' is called, which will pass them\n   * all to 'writable._writev()', if present. This prevents a head-of-line blocking\n   * situation where data is being buffered while waiting for the first small chunk\n   * to be processed. However, use of 'writable.cork()' without implementing'writable._writev()' may have an adverse effect on throughput.\n   *\n   * See also: 'writable.uncork()', 'writable._writev()'.\n   * @since v0.11.2\n   */\n  cork(): void;\n  /**\n   * The 'writable.uncork()' method flushes all data buffered since {@link cork} was called.\n   *\n   * When using 'writable.cork()' and 'writable.uncork()' to manage the buffering\n   * of writes to a stream, it is recommended that calls to 'writable.uncork()' be\n   * deferred using 'process.nextTick()'. Doing so allows batching of all'writable.write()' calls that occur within a given Node.js event loop phase.\n   *\n   * '''js\n   * stream.cork();\n   * stream.write('some ');\n   * stream.write('data ');\n   * process.nextTick(() => stream.uncork());\n   * '''\n   *\n   * If the 'writable.cork()' method is called multiple times on a stream, the\n   * same number of calls to 'writable.uncork()' must be called to flush the buffered\n   * data.\n   *\n   * '''js\n   * stream.cork();\n   * stream.write('some ');\n   * stream.cork();\n   * stream.write('data ');\n   * process.nextTick(() => {\n   *   stream.uncork();\n   *   // The data will not be flushed until uncork() is called a second time.\n   *   stream.uncork();\n   * });\n   * '''\n   *\n   * See also: 'writable.cork()'.\n   * @since v0.11.2\n   */\n  uncork(): void;\n  /**\n   * Destroy the stream. Optionally emit an ''error'' event, and emit a ''close''event (unless 'emitClose' is set to 'false'). After this call, the writable\n   * stream has ended and subsequent calls to 'write()' or 'end()' will result in\n   * an 'ERR_STREAM_DESTROYED' error.\n   * This is a destructive and immediate way to destroy a stream. Previous calls to'write()' may not have drained, and may trigger an 'ERR_STREAM_DESTROYED' error.\n   * Use 'end()' instead of destroy if data should flush before close, or wait for\n   * the ''drain'' event before destroying the stream.\n   *\n   * Once 'destroy()' has been called any further calls will be a no-op and no\n   * further errors except from '_destroy()' may be emitted as ''error''.\n   *\n   * Implementors should not override this method,\n   * but instead implement 'writable._destroy()'.\n   * @since v8.0.0\n   * @param error Optional, an error to emit with ''error'' event.\n   */\n  destroy(error?: Error): this;\n  /**\n   * Event emitter\n   * The defined events on documents including:\n   * 1. close\n   * 2. drain\n   * 3. error\n   * 4. finish\n   * 5. pipe\n   * 6. unpipe\n   */\n  addListener(event: 'close', listener: () => void): this;\n  addListener(event: 'drain', listener: () => void): this;\n  addListener(event: 'error', listener: (err: Error) => void): this;\n  addListener(event: 'finish', listener: () => void): this;\n  addListener(event: 'pipe', listener: (src: Readable) => void): this;\n  addListener(event: 'unpipe', listener: (src: Readable) => void): this;\n  addListener(event: string | symbol, listener: (...args: any[]) => void): this;\n  emit(event: 'close'): boolean;\n  emit(event: 'drain'): boolean;\n  emit(event: 'error', err: Error): boolean;\n  emit(event: 'finish'): boolean;\n  emit(event: 'pipe', src: Readable): boolean;\n  emit(event: 'unpipe', src: Readable): boolean;\n  emit(event: string | symbol, ...args: any[]): boolean;\n  on(event: 'close', listener: () => void): this;\n  on(event: 'drain', listener: () => void): this;\n  on(event: 'error', listener: (err: Error) => void): this;\n  on(event: 'finish', listener: () => void): this;\n  on(event: 'pipe', listener: (src: Readable) => void): this;\n  on(event: 'unpipe', listener: (src: Readable) => void): this;\n  on(event: string | symbol, listener: (...args: any[]) => void): this;\n  once(event: 'close', listener: () => void): this;\n  once(event: 'drain', listener: () => void): this;\n  once(event: 'error', listener: (err: Error) => void): this;\n  once(event: 'finish', listener: () => void): this;\n  once(event: 'pipe', listener: (src: Readable) => void): this;\n  once(event: 'unpipe', listener: (src: Readable) => void): this;\n  once(event: string | symbol, listener: (...args: any[]) => void): this;\n  prependListener(event: 'close', listener: () => void): this;\n  prependListener(event: 'drain', listener: () => void): this;\n  prependListener(event: 'error', listener: (err: Error) => void): this;\n  prependListener(event: 'finish', listener: () => void): this;\n  prependListener(event: 'pipe', listener: (src: Readable) => void): this;\n  prependListener(event: 'unpipe', listener: (src: Readable) => void): this;\n  prependListener(event: string | symbol, listener: (...args: any[]) => void): this;\n  prependOnceListener(event: 'close', listener: () => void): this;\n  prependOnceListener(event: 'drain', listener: () => void): this;\n  prependOnceListener(event: 'error', listener: (err: Error) => void): this;\n  prependOnceListener(event: 'finish', listener: () => void): this;\n  prependOnceListener(event: 'pipe', listener: (src: Readable) => void): this;\n  prependOnceListener(event: 'unpipe', listener: (src: Readable) => void): this;\n  prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;\n  removeListener(event: 'close', listener: () => void): this;\n  removeListener(event: 'drain', listener: () => void): this;\n  removeListener(event: 'error', listener: (err: Error) => void): this;\n  removeListener(event: 'finish', listener: () => void): this;\n  removeListener(event: 'pipe', listener: (src: Readable) => void): this;\n  removeListener(event: 'unpipe', listener: (src: Readable) => void): this;\n  removeListener(event: string | symbol, listener: (...args: any[]) => void): this;\n}\n`;\n"
  },
  {
    "path": "web/src/components/Editor/typesResolve/websocketType.ts",
    "content": "export const websocket_type = `\n// WebSocket socket.\ndeclare class CloudWebSocket extends EventEmitter {\n    /** The connection is not yet open. */\n    static readonly CONNECTING: 0;\n    /** The connection is open and ready to communicate. */\n    static readonly OPEN: 1;\n    /** The connection is in the process of closing. */\n    static readonly CLOSING: 2;\n    /** The connection is closed. */\n    static readonly CLOSED: 3;\n\n    binaryType: \"nodebuffer\" | \"arraybuffer\" | \"fragments\";\n    readonly bufferedAmount: number;\n    readonly extensions: string;\n    readonly protocol: string;\n    /** The current state of the connection */\n    readonly readyState:\n        | typeof WebSocket.CONNECTING\n        | typeof WebSocket.OPEN\n        | typeof WebSocket.CLOSING\n        | typeof WebSocket.CLOSED;\n    readonly url: string;\n\n    /** The connection is not yet open. */\n    readonly CONNECTING: 0;\n    /** The connection is open and ready to communicate. */\n    readonly OPEN: 1;\n    /** The connection is in the process of closing. */\n    readonly CLOSING: 2;\n    /** The connection is closed. */\n    readonly CLOSED: 3;\n\n    onopen: (event: WebSocket.Event) => void;\n    onerror: (event: WebSocket.ErrorEvent) => void;\n    onclose: (event: WebSocket.CloseEvent) => void;\n    onmessage: (event: WebSocket.MessageEvent) => void;\n\n    constructor(address: string | URL, options?: WebSocket.ClientOptions | ClientRequestArgs);\n    constructor(\n        address: string | URL,\n        protocols?: string | string[],\n        options?: WebSocket.ClientOptions | ClientRequestArgs,\n    );\n\n    close(code?: number, data?: string | Buffer): void;\n    ping(data?: any, mask?: boolean, cb?: (err: Error) => void): void;\n    pong(data?: any, mask?: boolean, cb?: (err: Error) => void): void;\n    send(data: any, cb?: (err?: Error) => void): void;\n    send(\n        data: any,\n        options: { mask?: boolean | undefined; binary?: boolean | undefined; compress?: boolean | undefined; fin?: boolean | undefined },\n        cb?: (err?: Error) => void,\n    ): void;\n    terminate(): void;\n\n    // HTML5 WebSocket events\n    addEventListener(\n        method: \"message\",\n        cb: (event: WebSocket.MessageEvent) => void,\n        options?: WebSocket.EventListenerOptions,\n    ): void;\n    addEventListener(\n        method: \"close\",\n        cb: (event: WebSocket.CloseEvent) => void,\n        options?: WebSocket.EventListenerOptions,\n    ): void;\n    addEventListener(\n        method: \"error\",\n        cb: (event: WebSocket.ErrorEvent) => void,\n        options?: WebSocket.EventListenerOptions,\n    ): void;\n    addEventListener(\n        method: \"open\",\n        cb: (event: WebSocket.Event) => void,\n        options?: WebSocket.EventListenerOptions,\n    ): void;\n\n    removeEventListener(method: \"message\", cb: (event: WebSocket.MessageEvent) => void): void;\n    removeEventListener(method: \"close\", cb: (event: WebSocket.CloseEvent) => void): void;\n    removeEventListener(method: \"error\", cb: (event: WebSocket.ErrorEvent) => void): void;\n    removeEventListener(method: \"open\", cb: (event: WebSocket.Event) => void): void;\n\n    // Events\n    on(event: \"close\", listener: (this: WebSocket, code: number, reason: Buffer) => void): this;\n    on(event: \"error\", listener: (this: WebSocket, err: Error) => void): this;\n    on(event: \"upgrade\", listener: (this: WebSocket, request: IncomingMessage) => void): this;\n    on(event: \"message\", listener: (this: WebSocket, data: WebSocket.RawData, isBinary: boolean) => void): this;\n    on(event: \"open\", listener: (this: WebSocket) => void): this;\n    on(event: \"ping\" | \"pong\", listener: (this: WebSocket, data: Buffer) => void): this;\n    on(\n        event: \"unexpected-response\",\n        listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void,\n    ): this;\n    on(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;\n\n    once(event: \"close\", listener: (this: WebSocket, code: number, reason: Buffer) => void): this;\n    once(event: \"error\", listener: (this: WebSocket, err: Error) => void): this;\n    once(event: \"upgrade\", listener: (this: WebSocket, request: IncomingMessage) => void): this;\n    once(event: \"message\", listener: (this: WebSocket, data: WebSocket.RawData, isBinary: boolean) => void): this;\n    once(event: \"open\", listener: (this: WebSocket) => void): this;\n    once(event: \"ping\" | \"pong\", listener: (this: WebSocket, data: Buffer) => void): this;\n    once(\n        event: \"unexpected-response\",\n        listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void,\n    ): this;\n    once(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;\n\n    off(event: \"close\", listener: (this: WebSocket, code: number, reason: Buffer) => void): this;\n    off(event: \"error\", listener: (this: WebSocket, err: Error) => void): this;\n    off(event: \"upgrade\", listener: (this: WebSocket, request: IncomingMessage) => void): this;\n    off(event: \"message\", listener: (this: WebSocket, data: WebSocket.RawData, isBinary: boolean) => void): this;\n    off(event: \"open\", listener: (this: WebSocket) => void): this;\n    off(event: \"ping\" | \"pong\", listener: (this: WebSocket, data: Buffer) => void): this;\n    off(\n        event: \"unexpected-response\",\n        listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void,\n    ): this;\n    off(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;\n\n    addListener(event: \"close\", listener: (code: number, reason: Buffer) => void): this;\n    addListener(event: \"error\", listener: (err: Error) => void): this;\n    addListener(event: \"upgrade\", listener: (request: IncomingMessage) => void): this;\n    addListener(event: \"message\", listener: (data: WebSocket.RawData, isBinary: boolean) => void): this;\n    addListener(event: \"open\", listener: () => void): this;\n    addListener(event: \"ping\" | \"pong\", listener: (data: Buffer) => void): this;\n    addListener(\n        event: \"unexpected-response\",\n        listener: (request: ClientRequest, response: IncomingMessage) => void,\n    ): this;\n    addListener(event: string | symbol, listener: (...args: any[]) => void): this;\n\n    removeListener(event: \"close\", listener: (code: number, reason: Buffer) => void): this;\n    removeListener(event: \"error\", listener: (err: Error) => void): this;\n    removeListener(event: \"upgrade\", listener: (request: IncomingMessage) => void): this;\n    removeListener(event: \"message\", listener: (data: WebSocket.RawData, isBinary: boolean) => void): this;\n    removeListener(event: \"open\", listener: () => void): this;\n    removeListener(event: \"ping\" | \"pong\", listener: (data: Buffer) => void): this;\n    removeListener(\n        event: \"unexpected-response\",\n        listener: (request: ClientRequest, response: IncomingMessage) => void,\n    ): this;\n    removeListener(event: string | symbol, listener: (...args: any[]) => void): this;\n}\n`;\n"
  },
  {
    "path": "web/src/components/Editor/useWorker.ts",
    "content": "import editorWorker from \"monaco-editor/esm/vs/editor/editor.worker?worker\";\nimport cssWorker from \"monaco-editor/esm/vs/language/css/css.worker?worker\";\nimport htmlWorker from \"monaco-editor/esm/vs/language/html/html.worker?worker\";\nimport jsonWorker from \"monaco-editor/esm/vs/language/json/json.worker?worker\";\nimport tsWorker from \"monaco-editor/esm/vs/language/typescript/ts.worker?worker\";\n\n// eslint-disable-next-line no-restricted-globals\nself.MonacoEnvironment = {\n  getWorker(_: any, label: string) {\n    if (label === \"json\") {\n      return new jsonWorker();\n    }\n    if (label === \"css\" || label === \"scss\" || label === \"less\") {\n      return new cssWorker();\n    }\n    if (label === \"html\" || label === \"handlebars\" || label === \"razor\") {\n      return new htmlWorker();\n    }\n    if (label === \"typescript\" || label === \"javascript\") {\n      return new tsWorker();\n    }\n    return new editorWorker();\n  },\n};\n"
  },
  {
    "path": "web/src/components/EmptyBox/index.tsx",
    "content": "import React from \"react\";\nimport { Icon } from \"@chakra-ui/icons\";\nimport { Center } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nexport default function EmptyBox(props: {\n  children: React.ReactElement;\n  hideIcon?: boolean;\n  className?: string;\n}) {\n  const { children, hideIcon, className } = props;\n  return (\n    <Center className={clsx(\"h-full w-full flex-1 flex-col\", className)}>\n      {hideIcon ? null : (\n        <Icon\n          width=\"150\"\n          height=\"120\"\n          viewBox=\"0 0 150 120\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M37.8002 80.3999H92.4002C92.7091 80.3999 93.0103 80.3666 93.3002 80.3033C93.5901 80.3666 93.8913 80.3999 94.2002 80.3999H125.4C127.72 80.3999 129.6 78.5195 129.6 76.1999C129.6 73.8803 127.72 71.9999 125.4 71.9999H121.8C119.481 71.9999 117.6 70.1195 117.6 67.7999C117.6 65.4803 119.481 63.5999 121.8 63.5999H133.2C135.52 63.5999 137.4 61.7195 137.4 59.3999C137.4 57.0803 135.52 55.1999 133.2 55.1999H120C122.32 55.1999 124.2 53.3195 124.2 50.9999C124.2 48.6803 122.32 46.7999 120 46.7999H81.6002C83.9198 46.7999 85.8002 44.9195 85.8002 42.5999C85.8002 40.2803 83.9198 38.3999 81.6002 38.3999H47.4002C45.0806 38.3999 43.2002 40.2803 43.2002 42.5999C43.2002 44.9195 45.0806 46.7999 47.4002 46.7999H23.4002C21.0806 46.7999 19.2002 48.6803 19.2002 50.9999C19.2002 53.3195 21.0806 55.1999 23.4002 55.1999H38.4002C40.7198 55.1999 42.6002 57.0803 42.6002 59.3999C42.6002 61.7195 40.7198 63.5999 38.4002 63.5999H14.4002C12.0806 63.5999 10.2002 65.4803 10.2002 67.7999C10.2002 70.1195 12.0806 71.9999 14.4002 71.9999H37.8002C35.4806 71.9999 33.6002 73.8803 33.6002 76.1999C33.6002 78.5195 35.4806 80.3999 37.8002 80.3999ZM135.6 80.4C137.92 80.4 139.8 78.5196 139.8 76.2C139.8 73.8804 137.92 72 135.6 72C133.28 72 131.4 73.8804 131.4 76.2C131.4 78.5196 133.28 80.4 135.6 80.4Z\"\n            fill=\"#00A9A6\"\n            fillOpacity=\"0.1\"\n          />\n          <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M67.871 67.384C67.8242 67.716 67.7999 68.0552 67.7999 68.4001C67.7999 72.3765 71.0235 75.6001 74.9999 75.6001C78.9764 75.6001 82.1999 72.3765 82.1999 68.4001C82.1999 68.0552 82.1757 67.716 82.1288 67.384H99.5999V83.4001C99.5999 84.3942 98.794 85.2001 97.7999 85.2001H52.1999C51.2058 85.2001 50.3999 84.3942 50.3999 83.4001V67.384H67.871Z\"\n            fill=\"white\"\n          />\n          <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M82.7999 67.2001C82.7999 71.5079 79.3077 75.0001 74.9999 75.0001C70.6921 75.0001 67.1999 71.5079 67.1999 67.2001C67.1999 67.0605 67.2036 66.9218 67.2108 66.7841H50.3999L56.1362 49.8234C56.3835 49.0922 57.0694 48.6001 57.8413 48.6001H92.1585C92.9304 48.6001 93.6163 49.0922 93.8636 49.8234L99.5999 66.7841H82.789C82.7962 66.9218 82.7999 67.0605 82.7999 67.2001Z\"\n            fill=\"white\"\n          />\n          <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M81.6583 67.7727C81.6583 71.1015 78.6772 74.4 74.9998 74.4C71.3224 74.4 68.3413 71.1015 68.3413 67.7727C68.3413 67.6649 68.3444 66.9577 68.3506 66.8513H55.7998L60.6966 54.9453C60.9077 54.3803 61.4933 54 62.1522 54H87.8474C88.5063 54 89.0919 54.3803 89.303 54.9453L94.1998 66.8513H81.649C81.6552 66.9577 81.6583 67.6649 81.6583 67.7727Z\"\n            fill=\"#00A9A6\"\n            fillOpacity=\"0.2\"\n          />\n          <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M51.1504 66.9072V82.7999C51.1504 83.3798 51.6205 83.8499 52.2004 83.8499H97.8004C98.3803 83.8499 98.8504 83.3798 98.8504 82.7999V66.9072L93.1537 50.0635C93.0094 49.6369 92.6093 49.3499 92.159 49.3499H57.8418C57.3915 49.3499 56.9914 49.6369 56.8471 50.0635L51.1504 66.9072Z\"\n            stroke=\"#18BCB0\"\n            strokeWidth=\"1.5\"\n          />\n          <path\n            d=\"M54.3442 66.5999H55.8M58.8 66.5999C61.1619 66.5999 63.7109 66.5999 66.4469 66.5999C67.5727 66.5999 67.5727 67.391 67.5727 67.7999C67.5727 71.7763 70.8704 74.9999 74.9384 74.9999C79.0063 74.9999 82.304 71.7763 82.304 67.7999C82.304 67.391 82.304 66.5999 83.4298 66.5999H98.4\"\n            stroke=\"#18BCB0\"\n            strokeWidth=\"1.5\"\n            strokeLinecap=\"round\"\n            strokeLinejoin=\"round\"\n          />\n          <path\n            d=\"M90.0596 34.9815L83.3998 42.4534M74.4596 32.3999V42.4534V32.3999ZM58.7998 34.9815L65.4596 42.4534L58.7998 34.9815Z\"\n            stroke=\"#00A9A6\"\n            strokeOpacity=\"0.4\"\n            strokeWidth=\"1.5\"\n            strokeLinecap=\"round\"\n            strokeLinejoin=\"round\"\n          />\n        </Icon>\n      )}\n      {React.cloneElement(children, {\n        className: hideIcon ? \"text-grayIron-600\" : \"text-grayIron-700 text-lg\",\n      })}\n    </Center>\n  );\n}\n"
  },
  {
    "path": "web/src/components/FileStatusIcon/index.tsx",
    "content": "import { Icon } from \"@chakra-ui/icons\";\n\nexport const FileStatus = {\n  modify: \"modify\",\n  deleted: \"deleted\",\n};\n\nexport default function FileStatusIcon(props: { status: string }) {\n  const { status } = props;\n\n  switch (status) {\n    case FileStatus.modify:\n      return (\n        <Icon viewBox=\"0 0 30 30\" fill=\"yellow.500\">\n          <path d=\"M0 23.0361C0 23.9858 0.766071 24.753 1.71429 24.753C2.6625 24.753 3.42857 23.9858 3.42857 23.0361H0ZM1.71429 2.43373L3.13929 1.47873C2.72143 0.850996 1.93929 0.56664 1.21607 0.786613C0.492857 1.00659 0 1.67724 0 2.43373H1.71429ZM12 17.8855L10.575 18.8405C10.8911 19.3181 11.4268 19.6024 12 19.6024C12.5732 19.6024 13.1089 19.3181 13.425 18.8405L12 17.8855ZM22.2857 2.43373H24C24 1.67724 23.5071 1.01195 22.7839 0.791979C22.0607 0.572005 21.2786 0.850996 20.8607 1.48409L22.2857 2.43373ZM20.5714 23.0361C20.5714 23.9858 21.3375 24.753 22.2857 24.753C23.2339 24.753 24 23.9858 24 23.0361H20.5714ZM3.42857 23.0361V2.43373H0V23.0361H3.42857ZM0.289286 3.38874L10.575 18.8405L13.4304 16.9359L3.14464 1.48409L0.289286 3.38874ZM13.4304 18.8405L23.7161 3.38874L20.8607 1.47873L10.575 16.9305L13.4304 18.8352V18.8405ZM20.5714 2.43373V23.0361H24V2.43373H20.5714Z\" />\n        </Icon>\n      );\n\n    case FileStatus.deleted:\n      return (\n        <Icon viewBox=\"0 0 48 16\" fill=\"orange\" fontSize={15} style={{ verticalAlign: \"-2px\" }}>\n          <path d=\"M0 2C0 0.89375 0.89375 0 2 0H10C17.7312 0 24 6.26875 24 14C24 21.7312 17.7312 28 10 28H2C0.89375 28 0 27.1063 0 26V2ZM4 4V24H10C15.525 24 20 19.525 20 14C20 8.475 15.525 4 10 4H4Z\" />\n        </Icon>\n      );\n\n    default:\n      break;\n  }\n\n  return <div>FileTypeIcon</div>;\n}\n"
  },
  {
    "path": "web/src/components/FileTypeIcon/index.tsx",
    "content": "import { Icon } from \"@chakra-ui/icons\";\nimport clsx from \"clsx\";\nexport const FileType = {\n  js: \"js\",\n  ts: \"ts\",\n  json: \"json\",\n  html: \"html\",\n  css: \"css\",\n  png: \"png\",\n  jpg: \"jpg\",\n  jpeg: \"jpeg\",\n  gif: \"gif\",\n  svg: \"svg\",\n  txt: \"txt\",\n  md: \"md\",\n  pdf: \"pdf\",\n  doc: \"doc\",\n  docx: \"docx\",\n  xls: \"xls\",\n  xlsx: \"xlsx\",\n  ppt: \"ppt\",\n  pptx: \"pptx\",\n  zip: \"zip\",\n  rar: \"rar\",\n  tar: \"tar\",\n  folder: \"folder\",\n  folderOpen: \"folderOpen\",\n  npm: \"npm\",\n  db: \"db\",\n  bucket: \"bucket\",\n  policy: \"policy\",\n  website: \"website\",\n  app: \"app\",\n};\n\nexport default function FileTypeIcon(props: {\n  type: string;\n  className?: string;\n  fontSize?: number;\n  width?: string;\n}) {\n  const { type, className, fontSize, width = \"18px\" } = props;\n\n  switch (type) {\n    case FileType.app:\n      return (\n        <Icon viewBox=\"0 0 22 22\" fontSize={20} className={clsx(\"align-middle \", className)}>\n          <mask\n            id=\"mask0_2744_5395\"\n            style={{ maskType: \"alpha\" }}\n            maskUnits=\"userSpaceOnUse\"\n            x=\"1\"\n            y=\"1\"\n            width=\"20\"\n            height=\"20\"\n          >\n            <path\n              d=\"M8.25 2.75H3.66667C3.42355 2.75 3.19039 2.84658 3.01849 3.01849C2.84658 3.19039 2.75 3.42355 2.75 3.66667V8.25C2.75 8.49312 2.84658 8.72627 3.01849 8.89818C3.19039 9.07009 3.42355 9.16667 3.66667 9.16667H8.25C8.49312 9.16667 8.72627 9.07009 8.89818 8.89818C9.07009 8.72627 9.16667 8.49312 9.16667 8.25V3.66667C9.16667 3.42355 9.07009 3.19039 8.89818 3.01849C8.72627 2.84658 8.49312 2.75 8.25 2.75ZM8.25 12.8333H3.66667C3.42355 12.8333 3.19039 12.9299 3.01849 13.1018C2.84658 13.2737 2.75 13.5069 2.75 13.75V18.3333C2.75 18.5764 2.84658 18.8096 3.01849 18.9815C3.19039 19.1534 3.42355 19.25 3.66667 19.25H8.25C8.49312 19.25 8.72627 19.1534 8.89818 18.9815C9.07009 18.8096 9.16667 18.5764 9.16667 18.3333V13.75C9.16667 13.5069 9.07009 13.2737 8.89818 13.1018C8.72627 12.9299 8.49312 12.8333 8.25 12.8333ZM18.3333 2.75H13.75C13.5069 2.75 13.2737 2.84658 13.1018 3.01849C12.9299 3.19039 12.8333 3.42355 12.8333 3.66667V8.25C12.8333 8.49312 12.9299 8.72627 13.1018 8.89818C13.2737 9.07009 13.5069 9.16667 13.75 9.16667H18.3333C18.5764 9.16667 18.8096 9.07009 18.9815 8.89818C19.1534 8.72627 19.25 8.49312 19.25 8.25V3.66667C19.25 3.42355 19.1534 3.19039 18.9815 3.01849C18.8096 2.84658 18.5764 2.75 18.3333 2.75ZM18.3333 12.8333H13.75C13.5069 12.8333 13.2737 12.9299 13.1018 13.1018C12.9299 13.2737 12.8333 13.5069 12.8333 13.75V18.3333C12.8333 18.5764 12.9299 18.8096 13.1018 18.9815C13.2737 19.1534 13.5069 19.25 13.75 19.25H18.3333C18.5764 19.25 18.8096 19.1534 18.9815 18.9815C19.1534 18.8096 19.25 18.5764 19.25 18.3333V13.75C19.25 13.5069 19.1534 13.2737 18.9815 13.1018C18.8096 12.9299 18.5764 12.8333 18.3333 12.8333Z\"\n              fill=\"white\"\n              stroke=\"white\"\n              strokeWidth=\"2\"\n              strokeLinejoin=\"round\"\n            />\n          </mask>\n          <g mask=\"url(#mask0_2744_5395)\">\n            <path d=\"M0 0H22V22H0V0Z\" fill=\"#33BAB1\" />\n          </g>\n        </Icon>\n      );\n\n    case FileType.js:\n      return (\n        <Icon viewBox=\"0 0 46 46\" fontSize={20} className=\"align-middle\">\n          <path fill=\"#ffd600\" d=\"M6,42V6h36v36H6z\"></path>\n          <path\n            fill=\"#000001\"\n            d=\"M29.538 32.947c.692 1.124 1.444 2.201 3.037 2.201 1.338 0 2.04-.665 2.04-1.585 0-1.101-.726-1.492-2.198-2.133l-.807-.344c-2.329-.988-3.878-2.226-3.878-4.841 0-2.41 1.845-4.244 4.728-4.244 2.053 0 3.528.711 4.592 2.573l-2.514 1.607c-.553-.988-1.151-1.377-2.078-1.377-.946 0-1.545.597-1.545 1.377 0 .964.6 1.354 1.985 1.951l.807.344C36.452 29.645 38 30.839 38 33.523 38 36.415 35.716 38 32.65 38c-2.999 0-4.702-1.505-5.65-3.368L29.538 32.947zM17.952 33.029c.506.906 1.275 1.603 2.381 1.603 1.058 0 1.667-.418 1.667-2.043V22h3.333v11.101c0 3.367-1.953 4.899-4.805 4.899-2.577 0-4.437-1.746-5.195-3.368L17.952 33.029z\"\n          ></path>\n        </Icon>\n      );\n\n    case FileType.ts:\n      return (\n        <Icon viewBox=\"0 0 11 7\" fontSize={fontSize} className=\"align-middle\">\n          <path\n            d=\"M0.284091 1.19602V0.181818H5.0625V1.19602H3.28125V6H2.06534V1.19602H0.284091ZM9.00568 1.85511C8.98295 1.62595 8.88542 1.44792 8.71307 1.32102C8.54072 1.19413 8.30682 1.13068 8.01136 1.13068C7.81061 1.13068 7.6411 1.15909 7.50284 1.21591C7.36458 1.27083 7.25852 1.34754 7.18466 1.44602C7.11269 1.54451 7.0767 1.65625 7.0767 1.78125C7.07292 1.88542 7.0947 1.97633 7.14205 2.05398C7.19129 2.13163 7.25852 2.19886 7.34375 2.25568C7.42898 2.31061 7.52746 2.3589 7.6392 2.40057C7.75095 2.44034 7.87027 2.47443 7.99716 2.50284L8.51989 2.62784C8.77367 2.68466 9.00663 2.76042 9.21875 2.85511C9.43087 2.94981 9.61458 3.06629 9.76989 3.20455C9.92519 3.3428 10.0455 3.50568 10.1307 3.69318C10.2178 3.88068 10.2623 4.09564 10.2642 4.33807C10.2623 4.69413 10.1714 5.00284 9.99148 5.2642C9.81345 5.52367 9.55587 5.72538 9.21875 5.86932C8.88352 6.01136 8.47917 6.08239 8.00568 6.08239C7.53598 6.08239 7.12689 6.01042 6.77841 5.86648C6.43182 5.72254 6.16098 5.50947 5.96591 5.22727C5.77273 4.94318 5.6714 4.59186 5.66193 4.1733H6.85227C6.86553 4.36837 6.9214 4.53125 7.01989 4.66193C7.12027 4.79072 7.25379 4.88826 7.42045 4.95455C7.58902 5.01894 7.77936 5.05114 7.99148 5.05114C8.19981 5.05114 8.38068 5.02083 8.53409 4.96023C8.68939 4.89962 8.80966 4.81534 8.89489 4.70739C8.98011 4.59943 9.02273 4.47538 9.02273 4.33523C9.02273 4.20455 8.9839 4.0947 8.90625 4.00568C8.83049 3.91667 8.71875 3.84091 8.57102 3.77841C8.42519 3.71591 8.24621 3.65909 8.03409 3.60795L7.40057 3.44886C6.91004 3.32955 6.52273 3.14299 6.23864 2.8892C5.95455 2.63542 5.81345 2.29356 5.81534 1.86364C5.81345 1.51136 5.9072 1.2036 6.09659 0.940341C6.28788 0.677083 6.55019 0.471591 6.88352 0.323864C7.21686 0.176136 7.59564 0.102273 8.01989 0.102273C8.4517 0.102273 8.8286 0.176136 9.15057 0.323864C9.47443 0.471591 9.72633 0.677083 9.90625 0.940341C10.0862 1.2036 10.179 1.50852 10.1847 1.85511H9.00568Z\"\n            fill=\"#36ADEF\"\n          />\n        </Icon>\n      );\n\n    case FileType.npm:\n      return (\n        <Icon viewBox=\"0 0 16 16\" fontSize={fontSize || 22} className=\"align-middle\">\n          <rect width=\"16\" height=\"16\" rx=\"2\" fill=\"#FDEAF1\" />\n          <path\n            d=\"M2.66667 6.66667V9.33333H4V7.33333H4.66667V9.33333H5.33333V6.66667H2.66667ZM6 6.66667V10H7.33333V9.33333H8.66667V6.66667H6ZM8 7.33333V8.66667H7.33333V7.33333H8ZM9.33333 6.66667V9.33333H10.6667V7.33333H11.3333V9.33333H12V7.33333H12.6667V9.33333H13.3333V6.66667H9.33333ZM2 6H14V10H8V10.6667H5.33333V10H2V6Z\"\n            fill=\"#ED598E\"\n          />\n        </Icon>\n      );\n\n    case FileType.db:\n      return (\n        <Icon viewBox=\"0 0 14 15\" fontSize={14} className=\"align-middle\">\n          <path d=\"M13.0727 10.2594C13.1861 10.47 13.1092 10.7321 12.9013 10.8485L12.8949 10.852L7.62227 13.6911C7.433 13.793 7.22159 13.8469 7.00663 13.848C6.79166 13.849 6.57972 13.7973 6.38944 13.6973L6.37775 13.6911L1.10511 10.852C0.892371 10.7374 0.81276 10.4721 0.927317 10.2594C1.04072 10.0487 1.3019 9.96862 1.51354 10.0782L1.51994 10.0816L6.79261 12.9207C6.85529 12.9544 6.92527 12.9724 6.99647 12.973C7.06766 12.9735 7.13792 12.9567 7.20115 12.924L7.20744 12.9207L12.4801 10.0816C12.6928 9.96701 12.9582 10.0466 13.0727 10.2594H13.0727ZM13.0727 7.4156C13.1861 7.62622 13.1092 7.88837 12.9013 8.00474L12.8949 8.00822L7.62227 10.8474C7.433 10.9493 7.22159 11.0031 7.00663 11.0042C6.79166 11.0053 6.57972 10.9536 6.38944 10.8536L6.37775 10.8474L1.10511 8.00822C0.892371 7.89367 0.81276 7.62834 0.927317 7.4156C1.04072 7.20499 1.3019 7.12487 1.51354 7.23444L1.51994 7.23781L6.79261 10.0769C6.85529 10.1107 6.92527 10.1286 6.99647 10.1292C7.06766 10.1298 7.13792 10.113 7.20115 10.0803L7.20744 10.0769L12.4801 7.23781C12.6928 7.12326 12.9582 7.20285 13.0727 7.4156H13.0727ZM7.43682 1.17781L7.44486 1.18232L12.8721 4.26415C12.944 4.305 13.0029 4.36541 13.0419 4.43837C13.1546 4.64934 13.077 4.91126 12.8686 5.02699L12.8623 5.03045L7.42523 7.93624C7.29987 8.00324 7.16007 8.03869 7.01793 8.03952C6.87579 8.04036 6.73558 8.00655 6.60944 7.94103L6.60171 7.93695L1.1413 5.03079C1.0678 4.99167 1.007 4.9324 0.966022 4.85993C0.848279 4.65171 0.919715 4.38802 1.12523 4.26737L1.13149 4.26376L6.58206 1.18153C6.71232 1.10786 6.85929 1.06884 7.00894 1.06818C7.15858 1.06753 7.3059 1.10526 7.4368 1.17778L7.43682 1.17781Z\" />\n        </Icon>\n      );\n\n    case FileType.policy:\n      return (\n        <Icon viewBox=\"0 0 14 14\" fontSize={14} className=\"align-middle\">\n          <path d=\"M6.41667 0V1.75H7.58333V0H6.41667ZM2.46322 1.63835L1.63835 2.46322L2.87565 3.70052L3.70052 2.87565L2.46322 1.63835ZM11.5368 1.63835L10.2995 2.87565L11.1243 3.70052L12.3617 2.46322L11.5368 1.63835ZM7 2.91667C4.75164 2.91667 2.91667 4.75164 2.91667 7C2.91667 8.61454 3.88274 9.97631 5.25 10.6367V12.25C5.25 12.8876 5.77905 13.4167 6.41667 13.4167H7.58333C8.22095 13.4167 8.75 12.8876 8.75 12.25V10.6367C10.1173 9.97631 11.0833 8.61454 11.0833 7C11.0833 4.75164 9.24836 2.91667 7 2.91667ZM7 4.08333C8.61797 4.08333 9.91667 5.38203 9.91667 7C9.91667 8.2742 9.10311 9.34667 7.97184 9.74691L7.58333 9.88363V12.25H6.41667V9.88363L6.02816 9.74691C4.89689 9.34667 4.08333 8.2742 4.08333 7C4.08333 5.38203 5.38203 4.08333 7 4.08333ZM0 6.41667V7.58333H1.75V6.41667H0ZM12.25 6.41667V7.58333H14V6.41667H12.25ZM2.87565 10.2995L1.63835 11.5368L2.46322 12.3617L3.70052 11.1243L2.87565 10.2995ZM11.1243 10.2995L10.2995 11.1243L11.5368 12.3617L12.3617 11.5368L11.1243 10.2995Z\" />\n        </Icon>\n      );\n\n    case FileType.bucket:\n      return (\n        <Icon viewBox=\"0 0 16 16\" fontSize={16} className=\"align-middle\">\n          <path d=\"M8 2.5C6.8535 2.5 5.703 2.6485 4.797 2.8905C4.344 3.0115 3.957 3.1385 3.6405 3.328C3.324 3.518 3 3.801 3 4.25C3 4.3615 3.0275 4.4705 3.0625 4.5625C3.1365 4.9435 4.3885 11.4625 4.5155 12.094C4.576 12.3945 4.7675 12.617 4.9845 12.7815C5.201 12.9455 5.4495 13.0685 5.75 13.1715C6.3515 13.379 7.125 13.5 8 13.5C8.875 13.5 9.645 13.379 10.25 13.172C10.5525 13.0685 10.8125 12.949 11.0315 12.781C11.25 12.6135 11.455 12.3925 11.5 12.078C11.51 12.008 11.605 11.4065 11.75 10.6565C11.895 9.9065 12.082 8.9665 12.2655 8.0315C12.6095 6.2715 12.8985 4.76 12.9375 4.5625C12.977 4.46294 12.9981 4.35708 13 4.25C13 3.801 12.676 3.5175 12.3595 3.328C12.043 3.1385 11.656 3.0115 11.203 2.8905C10.297 2.6485 9.1465 2.5 8 2.5ZM8 3.5C9.0625 3.5 10.16 3.633 10.953 3.844C11.3495 3.949 11.66 4.078 11.844 4.1875C11.8945 4.219 11.8985 4.2305 11.922 4.25C11.8985 4.27 11.8945 4.2815 11.8435 4.3125C11.66 4.422 11.3495 4.551 10.9535 4.6565C10.16 4.8665 9.062 5 8 5C6.938 5 5.84 4.867 5.047 4.656C4.6505 4.551 4.34 4.422 4.1565 4.3125C4.1055 4.281 4.1015 4.2695 4.078 4.25C4.1015 4.23 4.1055 4.2185 4.156 4.1875C4.34 4.078 4.6505 3.949 5.047 3.8435C5.84 3.633 6.9375 3.5 8 3.5ZM4.2345 5.4375C4.412 5.5 4.594 5.5545 4.797 5.6095C5.703 5.8515 6.8535 6 8 6C9.1465 6 10.297 5.8515 11.203 5.6095C11.4065 5.5545 11.588 5.5 11.7655 5.4375C11.627 6.1175 11.5195 6.6095 11.2815 7.828C11.164 8.426 11.0725 8.961 10.969 9.5155C10.963 9.5235 10.957 9.5175 10.9065 9.578C10.836 9.662 10.707 9.8045 10.5 9.9375C10.086 10.205 9.338 10.5 8 10.5C6.662 10.5 5.9 10.203 5.4845 9.9375C5.33674 9.8445 5.20489 9.72835 5.094 9.5935L5.015 9.5C4.675 7.746 4.435 6.48 4.234 5.4375H4.2345ZM8 6.5C7.1775 6.5 6.5 7.1775 6.5 8C6.5 8.8225 7.1775 9.5 8 9.5C8.8225 9.5 9.5 8.8225 9.5 8C9.5 7.1775 8.8225 6.5 8 6.5ZM8 7.5C8.2815 7.5 8.5 7.719 8.5 8C8.5 8.2815 8.281 8.5 8 8.5C7.7185 8.5 7.5 8.281 7.5 8C7.5 7.7185 7.719 7.5 8 7.5ZM5.297 10.953C5.8985 11.252 6.756 11.5 8 11.5C9.2285 11.5 10.088 11.2675 10.6875 10.9685C10.6115 11.3475 10.5175 11.797 10.5 11.922C10.49 11.9355 10.463 11.953 10.422 11.9845C10.33 12.0545 10.168 12.156 9.9375 12.2345C9.4765 12.3905 8.783 12.5 8 12.5C7.217 12.5 6.535 12.3925 6.078 12.2345C5.8495 12.156 5.674 12.0585 5.578 11.9845C5.4825 11.91 5.4785 11.875 5.4845 11.906C5.469 11.832 5.3455 11.199 5.297 10.953Z\" />\n        </Icon>\n      );\n    case FileType.website:\n      return (\n        <Icon viewBox=\"0 0 24 24\" fontSize={22} className=\"align-middle\" fill=\"currentColor\">\n          <path\n            d=\"M21.4638 13.875L21.25 13.5425C21.1575 13.405 20.3313 12.1912 19.0313 12.075C18.525 12.03 17.76 12.1412 17.0013 12.9275L16.8563 13.0937C16.2438 13.8062 15.785 14.3237 15.3225 14.65C15.3183 14.6531 15.3132 14.6548 15.3079 14.6549C15.3026 14.655 15.2975 14.6533 15.2932 14.6503C15.2889 14.6472 15.2857 14.6429 15.284 14.6379C15.2823 14.6329 15.2822 14.6275 15.2838 14.6225C15.3063 14.5225 15.3238 14.4262 15.3388 14.335L15.405 13.9087L15.1063 13.5962C14.6063 13.075 13.9188 13.18 13.31 13.2725C12.375 13.4125 11.3263 13.5725 10.165 12.375C8.85752 11.0162 7.48502 10.3837 6.08377 10.5C4.00002 10.66 2.71752 12.46 2.66502 12.5375L2.52377 12.7287C2.50799 12.7505 2.49966 12.7768 2.50002 12.8037V18.25C2.50002 18.2831 2.51319 18.3149 2.53664 18.3384C2.56008 18.3618 2.59187 18.375 2.62502 18.375H4.13252C4.14894 18.375 4.16519 18.3718 4.18036 18.3655C4.19553 18.3592 4.20931 18.35 4.22091 18.3384C4.23252 18.3268 4.24173 18.313 4.24801 18.2978C4.25429 18.2827 4.25752 18.2664 4.25752 18.25V13.3937C4.25761 13.3628 4.26919 13.3329 4.29002 13.31C4.61127 12.955 5.31877 12.31 6.23252 12.2387C7.08377 12.175 7.98252 12.63 8.90627 13.59C10.5313 15.2587 12.2063 15.1887 13.255 15.0475C13.2595 15.047 13.2641 15.0477 13.2682 15.0496C13.2723 15.0515 13.2758 15.0544 13.2784 15.0582C13.2809 15.0619 13.2824 15.0662 13.2827 15.0707C13.283 15.0752 13.2821 15.0797 13.28 15.0837C13.0063 15.6637 12.53 16.265 11.715 16.2087C10.5308 16.1265 9.36424 15.8769 8.25002 15.4675C8.2195 15.4555 8.18549 15.456 8.15533 15.4689C8.12517 15.4817 8.10126 15.5059 8.08877 15.5362L7.50252 16.9112C7.49581 16.9266 7.49227 16.9432 7.49211 16.96C7.49195 16.9768 7.49518 16.9935 7.50159 17.009C7.50801 17.0245 7.51749 17.0386 7.52946 17.0503C7.54143 17.0621 7.55565 17.0713 7.57127 17.0775C8.86312 17.5623 10.2185 17.8571 11.595 17.9525C11.6825 17.9525 11.7675 17.9612 11.845 17.9612C12.8963 17.9612 13.6713 17.475 14.22 16.8237C14.2246 16.819 14.2309 16.8163 14.2375 16.8162C16.0363 16.725 17.0788 15.5125 18.1763 14.2337L18.2688 14.1262C18.595 13.7962 18.7975 13.8125 18.8663 13.8187C19.0833 13.8577 19.2836 13.9609 19.4413 14.115C19.4623 14.1328 19.4769 14.157 19.4828 14.1839C19.4887 14.2108 19.4855 14.2388 19.4738 14.2637C18.8288 15.6 16.9538 18.9275 14.045 19.46C12.67 19.47 3.82002 19.71 2.61877 19.7475C2.58562 19.7475 2.55383 19.7607 2.53039 19.7841C2.50694 19.8076 2.49377 19.8393 2.49377 19.8725V21.3725C2.49377 21.3889 2.49701 21.4052 2.50329 21.4203C2.50957 21.4355 2.51878 21.4493 2.53039 21.4609C2.54199 21.4725 2.55577 21.4817 2.57094 21.488C2.5861 21.4943 2.60236 21.4975 2.61877 21.4975C3.82252 21.465 13.0913 21.21 14.1188 21.21H14.1913L14.2625 21.1987C18.925 20.4187 21.23 14.5975 21.3275 14.35L21.47 13.985C21.4775 13.9674 21.4808 13.9483 21.4797 13.9293C21.4786 13.9102 21.4731 13.8916 21.4638 13.875V13.875Z\"\n            fill=\"#7B838B\"\n          />\n          <path\n            d=\"M4.46628 6.75H5.96628C5.99943 6.75 6.03122 6.73683 6.05467 6.71339C6.07811 6.68995 6.09128 6.65815 6.09128 6.625V4.625C6.09128 4.52554 6.13079 4.43016 6.20111 4.35983C6.27144 4.28951 6.36682 4.25 6.46628 4.25H17.5375C17.637 4.25 17.7324 4.28951 17.8027 4.35983C17.873 4.43016 17.9125 4.52554 17.9125 4.625V6.0225C17.9125 6.03892 17.9093 6.05517 17.903 6.07034C17.8967 6.0855 17.8875 6.09928 17.8759 6.11089C17.8643 6.1225 17.8505 6.1317 17.8354 6.13799C17.8202 6.14427 17.8039 6.1475 17.7875 6.1475H8.70253C8.68611 6.1475 8.66986 6.15073 8.65469 6.15702C8.63953 6.1633 8.62575 6.1725 8.61414 6.18411C8.60253 6.19572 8.59332 6.2095 8.58704 6.22466C8.58076 6.23983 8.57753 6.25609 8.57753 6.2725V7.7725C8.57753 7.78892 8.58076 7.80517 8.58704 7.82034C8.59332 7.8355 8.60253 7.84928 8.61414 7.86089C8.62575 7.8725 8.63953 7.8817 8.65469 7.88799C8.66986 7.89427 8.68611 7.8975 8.70253 7.8975H17.785C17.8014 7.8975 17.8177 7.90073 17.8329 7.90701C17.848 7.9133 17.8618 7.9225 17.8734 7.93411C17.885 7.94572 17.8942 7.9595 17.9005 7.97466C17.9068 7.98983 17.91 8.00608 17.91 8.0225V9.42C17.91 9.51946 17.8705 9.61484 17.8002 9.68517C17.7299 9.75549 17.6345 9.795 17.535 9.795H10.1863C10.1531 9.795 10.1213 9.80817 10.0979 9.83161C10.0744 9.85505 10.0613 9.88685 10.0613 9.92V11.42C10.0613 11.4364 10.0645 11.4527 10.0708 11.4678C10.0771 11.483 10.0863 11.4968 10.0979 11.5084C10.1095 11.52 10.1233 11.5292 10.1384 11.5355C10.1536 11.5418 10.1699 11.545 10.1863 11.545H18.41C18.5742 11.545 18.7367 11.5127 18.8884 11.4499C19.04 11.387 19.1778 11.295 19.2939 11.1789C19.41 11.0628 19.5021 10.925 19.5649 10.7734C19.6277 10.6217 19.66 10.4592 19.66 10.295V3.75C19.66 3.58585 19.6277 3.4233 19.5649 3.27165C19.5021 3.11999 19.41 2.98219 19.2939 2.86612C19.1778 2.75004 19.04 2.65797 18.8884 2.59515C18.7367 2.53233 18.5742 2.5 18.41 2.5H5.59003C5.42587 2.5 5.26333 2.53233 5.11167 2.59515C4.96002 2.65797 4.82222 2.75004 4.70614 2.86612C4.59007 2.98219 4.498 3.11999 4.43518 3.27165C4.37236 3.4233 4.34003 3.58585 4.34003 3.75V6.625C4.34003 6.64152 4.3433 6.65788 4.34966 6.67313C4.35602 6.68837 4.36534 6.70221 4.37708 6.71383C4.38882 6.72546 4.40275 6.73464 4.41806 6.74085C4.43337 6.74705 4.44976 6.75017 4.46628 6.75Z\"\n            fill=\"#7B838B\"\n          />\n        </Icon>\n      );\n    case FileType.folder:\n      return (\n        <Icon viewBox=\"0 0 20 16\" width={width} className=\"align-middle\">\n          <path\n            d=\"M2 16C1.45 16 0.979333 15.8043 0.588 15.413C0.196 15.021 0 14.55 0 14V2C0 1.45 0.196 0.979333 0.588 0.588C0.979333 0.196 1.45 0 2 0H8L10 2H18C18.55 2 19.021 2.196 19.413 2.588C19.8043 2.97933 20 3.45 20 4V14C20 14.55 19.8043 15.021 19.413 15.413C19.021 15.8043 18.55 16 18 16H2Z\"\n            fill=\"#47C8BF\"\n          />\n        </Icon>\n      );\n    case FileType.folderOpen:\n      return (\n        <Icon width=\"4\" height=\"4\" marginLeft=\"-2px\" viewBox=\"0 0 25 24\">\n          <path\n            d=\"M20 8.25V9H6.4025C5.89631 9.00372 5.40465 9.16962 4.99969 9.47334C4.59473 9.77706 4.2978 10.2026 4.1525 10.6875L2.75 15.375V6C2.75178 5.40381 2.98941 4.83255 3.41098 4.41098C3.83255 3.98941 4.40381 3.75178 5 3.75H10.235C10.3576 3.75134 10.478 3.78199 10.5863 3.8394C10.6946 3.89681 10.7876 3.97931 10.8575 4.08L12.1475 6H17.75C18.3462 6.00178 18.9175 6.2394 19.339 6.66098C19.7606 7.08255 19.9982 7.65381 20 8.25Z\"\n            fill=\"#47C8BF\"\n          />\n          <path\n            d=\"M22.1525 13.3126L20.5625 18.6451C20.4245 19.1102 20.1393 19.518 19.7499 19.8074C19.3605 20.0968 18.8877 20.2521 18.4025 20.2501H6.2675C5.91651 20.2508 5.57021 20.1693 5.25631 20.0123C4.94241 19.8552 4.66961 19.6269 4.45971 19.3456C4.24981 19.0643 4.10864 18.7377 4.04749 18.3921C3.98633 18.0465 4.00688 17.6913 4.1075 17.3551L4.25 16.8751L5.6525 12.1876C5.7978 11.7027 6.09473 11.2771 6.49969 10.9734C6.90465 10.6697 7.39632 10.5038 7.9025 10.5001H20.09C20.4263 10.4975 20.7584 10.5743 21.0594 10.7242C21.3604 10.874 21.6218 11.0927 21.8225 11.3626C22.0263 11.6391 22.1623 11.9596 22.2196 12.2983C22.2769 12.637 22.254 12.9844 22.1525 13.3126Z\"\n            fill=\"#47C8BF\"\n          />\n        </Icon>\n      );\n    case FileType.png:\n    case FileType.jpg:\n    case FileType.jpeg:\n    case FileType.gif:\n      return (\n        <Icon viewBox=\"0 0 20 18\" width=\"20px\" style={{ verticalAlign: \"-1px\" }}>\n          <path\n            d=\"M18 0C18.5304 0 19.0391 0.210714 19.4142 0.585786C19.7893 0.960859 20 1.46957 20 2V16C20 16.5304 19.7893 17.0391 19.4142 17.4142C19.0391 17.7893 18.5304 18 18 18H2C1.46957 18 0.960859 17.7893 0.585786 17.4142C0.210714 17.0391 0 16.5304 0 16V2C0 1.46957 0.210714 0.960859 0.585786 0.585786C0.960859 0.210714 1.46957 0 2 0H18ZM18 2H2V16H2.929L12.237 6.692C12.3531 6.57589 12.4909 6.48379 12.6426 6.42095C12.7942 6.35811 12.9568 6.32577 13.121 6.32577C13.2852 6.32577 13.4478 6.35811 13.5994 6.42095C13.7511 6.48379 13.8889 6.57589 14.005 6.692L18 10.686V2ZM13.121 8.636L5.757 16H18V13.515L13.121 8.636ZM5.5 4C5.89782 4 6.27936 4.15804 6.56066 4.43934C6.84196 4.72064 7 5.10218 7 5.5C7 5.89782 6.84196 6.27936 6.56066 6.56066C6.27936 6.84196 5.89782 7 5.5 7C5.10218 7 4.72064 6.84196 4.43934 6.56066C4.15804 6.27936 4 5.89782 4 5.5C4 5.10218 4.15804 4.72064 4.43934 4.43934C4.72064 4.15804 5.10218 4 5.5 4Z\"\n            fill=\"#36ADEF\"\n          />\n        </Icon>\n      );\n    default:\n      return (\n        <div className=\"inline-block w-5 pl-[2px]\">\n          <Icon viewBox=\"0 0 16 20\" fontSize={15} className=\"align-middle\">\n            <path\n              d=\"M10 0H2C0.9 0 0.0100002 0.9 0.0100002 2L0 18C0 19.1 0.89 20 1.99 20H14C15.1 20 16 19.1 16 18V6L10 0ZM2 18V2H9V7H14V18H2Z\"\n              fill=\"#B17DDA\"\n            />\n          </Icon>\n        </div>\n      );\n  }\n}\n"
  },
  {
    "path": "web/src/components/FileUpload/index.module.scss",
    "content": ".formFileUpload {\n  height: 16rem;\n  width: 29rem;\n  max-width: 100%;\n  text-align: center;\n  position: relative;\n}\n\n.inputFileUpload {\n  display: none;\n}\n\n.labelFileUpload {\n  height: 100%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-width: 2px;\n  border-radius: 1rem;\n  border-style: dashed;\n}\n\n.uploadButton {\n  cursor: pointer;\n  padding: 0.25rem;\n  font-size: 1rem;\n  border: none;\n}\n\n.uploadButton:hover {\n  text-decoration-line: underline;\n}\n\n.dragFileElement {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  border-radius: 1rem;\n  top: 0px;\n  right: 0px;\n  bottom: 0px;\n  left: 0px;\n}\n"
  },
  {
    "path": "web/src/components/FileUpload/index.tsx",
    "content": "import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport clsx from \"clsx\";\n\nimport styles from \"./index.module.scss\";\n\ntype UploadType = \"file\" | \"folder\";\n\ntype TFileItem = {\n  file: File;\n  webkitRelativePath: string;\n};\n\n// drag drop file component\nfunction FileUpload(props: { onUpload: (files: any) => void; darkMode: boolean }) {\n  const { onUpload = () => {}, darkMode } = props;\n  const [dragActive, setDragActive] = React.useState(false);\n  const inputRef = React.useRef<any>(null);\n  const { t } = useTranslation();\n\n  // handle drag events\n  const handleDrag = function (e: any) {\n    e.preventDefault();\n    e.stopPropagation();\n\n    if (e.type === \"dragenter\" || e.type === \"dragover\") {\n      setDragActive(true);\n    } else if (e.type === \"dragleave\") {\n      setDragActive(false);\n    }\n  };\n\n  const handleDrop = function (e: any) {\n    e.preventDefault();\n    setDragActive(false);\n    const dataTransferItemList = e.dataTransfer.items;\n    const fileArray: TFileItem[] = [];\n    const promises = [];\n    for (const dataTransferItem of dataTransferItemList) {\n      const file = dataTransferItem.webkitGetAsEntry();\n      promises.push(handleFile(file, fileArray));\n    }\n    Promise.all(promises)\n      .then(() => {\n        onUpload(fileArray);\n      })\n      .catch((error) => {\n        console.error(error);\n      });\n  };\n\n  const handleFile = function (file: any, fileArray: TFileItem[], webkitRelativePath = \"\") {\n    return new Promise((resolve, reject) => {\n      if (file.isFile) {\n        file.file(function (f: File) {\n          const newFile = new Blob([f], { type: f.type });\n          const customFile = {\n            file: new File([newFile], f.name, { type: f.type, lastModified: f.lastModified }),\n            webkitRelativePath: webkitRelativePath || f.webkitRelativePath,\n          };\n          fileArray.push(customFile);\n          resolve(null);\n        });\n      } else {\n        const dirReader = file.createReader();\n        readAllEntries(dirReader, []).then((entries: any) => {\n          const promises = [];\n          for (let i = 0; i < entries.length; i++) {\n            const entry = entries[i];\n            const newPath = webkitRelativePath ? `${webkitRelativePath}/${entry.name}` : entry.name;\n            promises.push(handleFile(entry, fileArray, newPath));\n          }\n          Promise.all(promises).then(resolve).catch(reject);\n        });\n      }\n    });\n  };\n\n  function readAllEntries(dirReader: any, entries: any) {\n    return new Promise((resolve, reject) => {\n      dirReader.readEntries(function (newEntries: any) {\n        if (newEntries.length === 0) {\n          resolve(entries);\n        } else {\n          entries = entries.concat(newEntries);\n          readAllEntries(dirReader, entries).then(resolve).catch(reject);\n        }\n      });\n    });\n  }\n\n  // triggers when file is selected with click\n  const handleChange = function (e: React.ChangeEvent<HTMLInputElement>) {\n    e.preventDefault();\n    if (e.target.files && e.target.files[0]) {\n      onUpload(e.target.files);\n    }\n  };\n\n  // triggers the input when the button is clicked\n  const onButtonClick = (uploadType: UploadType) => {\n    if (uploadType === \"folder\") {\n      inputRef.current.setAttribute(\"webkitdirectory\", \"\");\n      inputRef.current.setAttribute(\"directory\", \"\");\n    } else {\n      inputRef.current.removeAttribute(\"webkitdirectory\");\n      inputRef.current.removeAttribute(\"directory\");\n    }\n    inputRef?.current?.click();\n  };\n\n  return (\n    <form\n      className={styles.formFileUpload}\n      onDragEnter={handleDrag}\n      onSubmit={(e) => e.preventDefault()}\n    >\n      <input\n        ref={inputRef}\n        type=\"file\"\n        className={styles.inputFileUpload}\n        multiple={true}\n        onChange={handleChange}\n      />\n      <label\n        className={clsx({\n          [styles.labelFileUpload]: true,\n          \"bg-grayModern-100\": dragActive && !darkMode,\n          \"bg-lafDark-300\": dragActive && darkMode,\n        })}\n        htmlFor=\"input-file-upload\"\n      >\n        <div>\n          <button className={styles.uploadButton} onClick={() => onButtonClick(\"file\")}>\n            {t(\"StoragePanel.UploadFile\")}\n          </button>\n          <span className=\"mx-2 text-xl\">{t(\"Or\")}</span>\n          <button className={styles.uploadButton} onClick={() => onButtonClick(\"folder\")}>\n            {t(\"StoragePanel.UploadFolder\")}\n          </button>\n        </div>\n      </label>\n      {dragActive && (\n        <div\n          className={styles.dragFileElement}\n          onDragEnter={handleDrag}\n          onDragLeave={handleDrag}\n          onDragOver={handleDrag}\n          onDrop={handleDrop}\n        ></div>\n      )}\n    </form>\n  );\n}\n\nexport default FileUpload;\n"
  },
  {
    "path": "web/src/components/Grid/index.tsx",
    "content": "import React from \"react\";\nimport { forwardRef } from \"react\";\nimport clsx from \"clsx\";\nfunction Grid() {\n  return <div>Grid</div>;\n}\n\nconst Row = forwardRef(\n  (\n    props: {\n      className?: string;\n      style?: React.CSSProperties;\n      children: React.ReactNode;\n      id?: string;\n    },\n    ref: any,\n  ) => {\n    const { className, style, id } = props;\n\n    return (\n      <div\n        id={id}\n        ref={ref}\n        className={clsx(\n          \"flex w-full overflow-hidden\",\n          style?.height ? \"flex-none\" : \"flex-grow\",\n          className,\n        )}\n        style={style}\n      >\n        {props.children}\n      </div>\n    );\n  },\n);\n\nfunction Col(props: {\n  className?: string;\n  style?: React.CSSProperties;\n  children: React.ReactNode;\n}) {\n  const { className, style } = props;\n  return (\n    <div\n      className={clsx(\n        \"flex h-full flex-col overflow-x-hidden\",\n        style?.width ? \"flex-none\" : \"flex-1 flex-grow overflow-hidden\",\n        className,\n      )}\n      style={style}\n    >\n      {props.children}\n    </div>\n  );\n}\n\nexport { Col, Row };\nexport default Grid;\n"
  },
  {
    "path": "web/src/components/IconText/index.module.scss",
    "content": ".iconText {\n  color: #7b838b;\n\n  svg {\n    fill: #7b838b !important;\n  }\n\n  &:hover {\n    color: var(--chakra-colors-grayModern-600);\n    svg {\n      fill: var(--chakra-colors-grayModern-600) !important;\n    }\n  }\n}\n"
  },
  {
    "path": "web/src/components/IconText/index.tsx",
    "content": "import React from \"react\";\nimport clsx from \"clsx\";\n\nimport styles from \"./index.module.scss\";\n\nexport default function IconText(props: {\n  icon: React.ReactElement;\n  text: string;\n  className?: string;\n  onClick?: () => void;\n}) {\n  return (\n    <div\n      onClick={props.onClick}\n      className={clsx(\"flex flex-col items-center \" + styles.iconText, props.className)}\n    >\n      {React.cloneElement(props.icon, {\n        height: \"20px\",\n      })}\n      {props.text}\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/components/IconWrap/index.tsx",
    "content": "import React from \"react\";\nimport { Center, Tooltip, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\nexport default function IconWrap(props: {\n  size?: number;\n  children: React.ReactNode;\n  placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n  tooltip?: string | undefined;\n  onClick?: (data: any) => void;\n  showBg?: boolean;\n  className?: string;\n}) {\n  const { size = 20, tooltip, placement = \"top\", showBg = false, className } = props;\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n  return (\n    <Tooltip label={tooltip} placement={placement}>\n      <Center\n        onClick={props.onClick}\n        className={clsx(\"inline-block cursor-pointer rounded-full \", className, {\n          \"hover:bg-lafWhite-600\": !darkMode && !showBg,\n          \"bg-lafWhite-600\": !darkMode && showBg,\n          \"hover:bg-lafDark-300\": darkMode && !showBg,\n          \"bg-lafDark-300\": darkMode && showBg,\n        })}\n        style={{ width: size, height: size }}\n      >\n        {props.children}\n      </Center>\n    </Tooltip>\n  );\n}\n"
  },
  {
    "path": "web/src/components/InputTag/index.tsx",
    "content": "import { createRef, useEffect, useRef, useState } from \"react\";\nimport { Tag, TagCloseButton, TagLabel, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\nimport { LabelIcon } from \"../CommonIcon\";\n\nexport default function InputTag(props: {\n  value: string[];\n  onChange: (value: string[]) => any;\n  tagList: any;\n}) {\n  const { value, onChange, tagList } = props;\n  const [inputV, setInputV] = useState(\"\");\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  const [isMenuOpen, setIsMenuOpen] = useState(false);\n  const menuRefs = useRef([]);\n  const menuRef = useRef(null);\n\n  useEffect(() => {\n    menuRefs.current = Array((tagList || []).length).map(\n      (_, index) => menuRefs.current[index] || createRef(),\n    );\n  }, [tagList]);\n\n  const handleInputClick = () => {\n    setIsMenuOpen(true);\n  };\n\n  const handleClickOutside = (e: any) => {\n    if (menuRef.current && !(menuRef.current as HTMLElement).contains(e.target)) {\n      setIsMenuOpen(false);\n    }\n  };\n\n  const handleMenuItemClick = (tag: any) => {\n    if (!value.some((x) => x === tag.tagName)) {\n      onChange([...value, tag.tagName]);\n    }\n  };\n\n  const handleEnter = (e: any) => {\n    if (e.key === \"Enter\") {\n      e.preventDefault();\n      const input = inputV.trim().slice(0, 16);\n      if (input !== \"\" && !value.some((x) => x === input)) {\n        onChange([...value, input]);\n      }\n      setInputV(\"\");\n    }\n  };\n\n  const handleClose = (item: string) => {\n    onChange(value.filter((name) => name !== item));\n  };\n\n  useEffect(() => {\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, []);\n\n  return (\n    <div className={clsx(\"flex w-full items-center rounded-md text-lg\")}>\n      {value.length > 0\n        ? value.map((item) => (\n            <Tag className=\"mr-2\" key={item}>\n              <TagLabel>{item}</TagLabel>\n              <TagCloseButton\n                onClick={() => {\n                  handleClose(item);\n                }}\n              />\n            </Tag>\n          ))\n        : null}\n\n      <LabelIcon boxSize={4} color={\"#D9D9D9\"} />\n\n      <input\n        className=\"my-1 ml-2 flex-1 border-none bg-transparent outline-none\"\n        placeholder={String(t(\"CollectionPanel.CreateTagTip\"))}\n        value={inputV}\n        onChange={(e) => {\n          setInputV(e.target.value);\n          if (isMenuOpen) setIsMenuOpen(false);\n        }}\n        onClick={handleInputClick}\n        onKeyDown={handleEnter}\n      />\n      {(tagList || []).length > 0 && isMenuOpen && (\n        <div\n          className={clsx(\n            \"absolute top-8 z-50 ml-6 flex w-11/12 flex-wrap rounded-md p-2 drop-shadow-md\",\n            darkMode ? \"bg-gray-800\" : \"bg-white\",\n          )}\n          ref={menuRef}\n        >\n          {tagList.map((tag: any, index: number) => (\n            <div\n              key={tag.tagName}\n              ref={menuRefs.current[index]}\n              onClick={() => {\n                handleMenuItemClick(tag);\n              }}\n              className={clsx(\n                \"mx-2 my-2 cursor-pointer rounded-md bg-gray-100 px-2 text-lg\",\n                darkMode ? \"bg-gray-700\" : \"bg-gray-100\",\n              )}\n            >\n              {tag.tagName}\n            </div>\n          ))}\n        </div>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/components/LanguageSwitch/index.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\nimport { Button, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { LanguageIcon } from \"@/components/CommonIcon\";\n\nconst LanguageSwitch = (props: { className?: string; size?: string; color?: string }) => {\n  const { i18n, t } = useTranslation();\n  const { className, size = \"20px\", color = \"#68686E\" } = props;\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  return (\n    <Button\n      className={clsx(\"!rounded !px-2\", className)}\n      onClick={(event) => {\n        event?.preventDefault();\n        i18n.changeLanguage(i18n.language === \"en\" ? \"zh\" : \"en\");\n      }}\n      variant=\"none\"\n      leftIcon={<LanguageIcon size={size} color={darkMode ? \"white\" : color} />}\n    >\n      <p>{t(\"i18n tip\")}</p>\n    </Button>\n  );\n};\n\nexport default LanguageSwitch;\n"
  },
  {
    "path": "web/src/components/LogoIcon/index.tsx",
    "content": "export const Logo = (props: any) => {\n  return (\n    <svg\n      width={props.size}\n      height={props.size}\n      viewBox=\"0 0 43 43\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <rect x=\"0.619141\" y=\"0.555664\" width=\"42\" height=\"42\" rx=\"21\" fill={props.outerColor} />\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M7.99153 17.3493L6.42969 18.9111L15.8007 28.2822C19.251 31.7325 24.8451 31.7325 28.2954 28.2822L17.3626 17.3493C14.7748 14.7616 10.5793 14.7616 7.99153 17.3493ZM25.1717 18.9111L23.6099 20.4729L29.8573 26.7203C29.8573 26.7203 33.2531 24.0183 34.7959 21.7628C35.5793 20.6174 36.5215 18.6567 36.5215 18.6567C35.2736 18.8171 34.0567 18.317 32.9434 17.7308C30.4421 16.4139 27.2756 16.8073 25.1717 18.9111Z\"\n        fill={props.innerColor}\n      />\n    </svg>\n  );\n};\n\nexport const LogoText = (props: any) => {\n  return (\n    <svg\n      width={props.size}\n      height={props.size}\n      viewBox=\"0 0 51 51\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g clipPath=\"url(#clip0_9408_5647)\">\n        <path\n          d=\"M18.7345 35.7642H7.24512C5.36481 35.7642 3.81417 35.0805 2.59319 33.7129C1.37221 32.3454 0.761719 30.6848 0.761719 28.7312V12.4307H1.55469C5.04133 12.4307 7.86782 15.2572 7.86782 18.744V25.7641C7.86782 27.0828 7.97771 27.9497 8.19748 28.3649C8.44168 28.78 9.02775 28.9876 9.95569 28.9876H13.4779C14.1223 28.9876 14.6583 29.4961 14.78 30.1289C14.9353 30.9368 15.2482 32.0388 15.8728 32.9757C17.0175 34.6928 18.7345 35.7642 18.7345 35.7642Z\"\n          fill={props.color}\n        />\n        <path\n          d=\"M27.749 29.2807V35.7642L25.5512 35.9108C23.0604 35.9108 21.0214 35.1415 19.4341 33.603C17.8468 32.0401 17.0532 29.9522 17.0532 27.3392C17.0532 24.6042 17.9445 22.4552 19.7272 20.8923C21.3877 19.4515 23.561 18.7311 26.2472 18.7311C29.202 18.7311 31.5462 19.7445 33.28 21.7714C34.8429 23.6029 35.6243 25.7519 35.6243 28.2184V35.7642H28.8112V27.3392C28.8112 26.5822 28.5548 25.9961 28.042 25.581C27.5536 25.1658 26.9553 24.9583 26.2472 24.9583C25.6123 24.9583 25.0384 25.1414 24.5256 25.5077C24.0372 25.874 23.793 26.3991 23.793 27.0828C23.793 27.9131 23.9884 28.5725 24.3791 29.0609C24.7942 29.5493 25.3314 29.7935 25.9908 29.7935C26.5524 29.7935 27.1385 29.6225 27.749 29.2807Z\"\n          fill={props.color}\n        />\n        <path\n          d=\"M36.0275 39.1983C36.0275 39.1983 37.4232 39.0494 38.3169 35.7642C40.0066 29.5527 37.1722 21.2342 37.1722 19.2806C37.1722 17.3269 37.9048 15.703 39.37 14.4087C40.8596 13.09 42.8376 12.4307 45.3039 12.4307H50.7617V19.0241H47.172C46.0976 19.0241 45.3772 19.2073 45.0109 19.5736C44.9132 19.6957 44.8278 19.8666 44.7545 20.0864C44.608 20.5016 44.5347 21.0144 44.5347 21.6249H50.7617V27.7055H44.5347C44.5347 27.7055 45.1377 32.6616 44.5347 35.7413C44.066 38.1352 42.1596 39.1983 39.7203 39.1983H36.0275Z\"\n          fill={props.color}\n        />\n      </g>\n      <defs>\n        <clipPath id=\"clip0_9408_5647\">\n          <rect width=\"50\" height=\"50\" fill=\"white\" transform=\"translate(0.761719 0.555664)\" />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "web/src/components/Markdown/codeLight.ts",
    "content": "import React from \"react\";\nexport const codeLight: { [key: string]: React.CSSProperties } = {\n  \"code[class*=language-]\": {\n    color: \"#d4d4d4\",\n    textShadow: \"none\",\n    direction: \"ltr\",\n    textAlign: \"left\",\n    whiteSpace: \"pre\",\n    wordSpacing: \"normal\",\n    wordBreak: \"normal\",\n    lineHeight: \"1.5\",\n    MozTabSize: \"4\",\n    OTabSize: \"4\",\n    tabSize: \"4\",\n    WebkitHyphens: \"none\",\n    MozHyphens: \"none\",\n    msHyphens: \"none\",\n    hyphens: \"none\",\n  },\n  \"pre[class*=language-]\": {\n    color: \"#d4d4d4\",\n    textShadow: \"none\",\n    direction: \"ltr\",\n    textAlign: \"left\",\n    whiteSpace: \"pre\",\n    wordSpacing: \"normal\",\n    wordBreak: \"normal\",\n    lineHeight: \"1.5\",\n    MozTabSize: \"4\",\n    OTabSize: \"4\",\n    tabSize: \"4\",\n    WebkitHyphens: \"none\",\n    MozHyphens: \"none\",\n    msHyphens: \"none\",\n    hyphens: \"none\",\n    padding: \"1em\",\n    margin: \".5em 0\",\n    overflow: \"auto\",\n    background: \"#1e1e1e\",\n  },\n  \"code[class*=language-] ::selection\": {\n    textShadow: \"none\",\n    background: \"#264f78\",\n  },\n  \"code[class*=language-]::selection\": {\n    textShadow: \"none\",\n    background: \"#264f78\",\n  },\n  \"pre[class*=language-] ::selection\": {\n    textShadow: \"none\",\n    background: \"#264f78\",\n  },\n  \"pre[class*=language-]::selection\": {\n    textShadow: \"none\",\n    background: \"#264f78\",\n  },\n  \":not(pre)>code[class*=language-]\": {\n    padding: \".1em .3em\",\n    borderRadius: \".3em\",\n    color: \"#db4c69\",\n    background: \"#1e1e1e\",\n  },\n  \".namespace\": {\n    opacity: \"0.7\",\n  },\n  \"doctype.doctype-tag\": {\n    color: \"#569cd6\",\n  },\n  \"doctype.name\": {\n    color: \"#9cdcfe\",\n  },\n  comment: {\n    color: \"#6a9955\",\n  },\n  prolog: {\n    color: \"#6a9955\",\n  },\n  \".language-html .language-css .token.punctuation\": {\n    color: \"#d4d4d4\",\n  },\n  \".language-html .language-javascript .token.punctuation\": {\n    color: \"#d4d4d4\",\n  },\n  punctuation: {\n    color: \"#d4d4d4\",\n  },\n  boolean: {\n    color: \"#569cd6\",\n  },\n  constant: {\n    color: \"#9cdcfe\",\n  },\n  inserted: {\n    color: \"#b5cea8\",\n  },\n  number: {\n    color: \"#b5cea8\",\n  },\n  property: {\n    color: \"#9cdcfe\",\n  },\n  symbol: {\n    color: \"#b5cea8\",\n  },\n  tag: {\n    color: \"#569cd6\",\n  },\n  unit: {\n    color: \"#b5cea8\",\n  },\n  \"attr-name\": {\n    color: \"#9cdcfe\",\n  },\n  builtin: {\n    color: \"#ce9178\",\n  },\n  char: {\n    color: \"#ce9178\",\n  },\n  deleted: {\n    color: \"#ce9178\",\n  },\n  selector: {\n    color: \"#d7ba7d\",\n  },\n  string: {\n    color: \"#ce9178\",\n  },\n  \".language-css .token.string.url\": {\n    textDecoration: \"underline\",\n  },\n  entity: {\n    color: \"#569cd6\",\n  },\n  operator: {\n    color: \"#d4d4d4\",\n  },\n  \"operator.arrow\": {\n    color: \"#569cd6\",\n  },\n  atrule: {\n    color: \"#ce9178\",\n  },\n  \"atrule.rule\": {\n    color: \"#c586c0\",\n  },\n  \"atrule.url\": {\n    color: \"#9cdcfe\",\n  },\n  \"atrule.url.function\": {\n    color: \"#dcdcaa\",\n  },\n  \"atrule.url.punctuation\": {\n    color: \"#d4d4d4\",\n  },\n  keyword: {\n    color: \"#569cd6\",\n  },\n  \"keyword.control-flow\": {\n    color: \"#c586c0\",\n  },\n  \"keyword.module\": {\n    color: \"#c586c0\",\n  },\n  function: {\n    color: \"#dcdcaa\",\n  },\n  \"function.maybe-class-name\": {\n    color: \"#dcdcaa\",\n  },\n  regex: {\n    color: \"#d16969\",\n  },\n  important: {\n    color: \"#569cd6\",\n  },\n  italic: {\n    fontStyle: \"italic\",\n  },\n  \"class-name\": {\n    color: \"#4ec9b0\",\n  },\n  \"maybe-class-name\": {\n    color: \"#4ec9b0\",\n  },\n  console: {\n    color: \"#9cdcfe\",\n  },\n  parameter: {\n    color: \"#9cdcfe\",\n  },\n  interpolation: {\n    color: \"#9cdcfe\",\n  },\n  \"punctuation.interpolation-punctuation\": {\n    color: \"#569cd6\",\n  },\n  \"exports.maybe-class-name\": {\n    color: \"#9cdcfe\",\n  },\n  \"imports.maybe-class-name\": {\n    color: \"#9cdcfe\",\n  },\n  variable: {\n    color: \"#9cdcfe\",\n  },\n  escape: {\n    color: \"#d7ba7d\",\n  },\n  \"tag.punctuation\": {\n    color: \"grey\",\n  },\n  cdata: {\n    color: \"grey\",\n  },\n  \"attr-value\": {\n    color: \"#ce9178\",\n  },\n  \"attr-value.punctuation\": {\n    color: \"#ce9178\",\n  },\n  \"attr-value.punctuation.attr-equals\": {\n    color: \"#d4d4d4\",\n  },\n  namespace: {\n    color: \"#4ec9b0\",\n  },\n  \"code[class*=language-javascript]\": {\n    color: \"#9cdcfe\",\n  },\n  \"code[class*=language-jsx]\": {\n    color: \"#9cdcfe\",\n  },\n  \"code[class*=language-tsx]\": {\n    color: \"#9cdcfe\",\n  },\n  \"code[class*=language-typescript]\": {\n    color: \"#9cdcfe\",\n  },\n  \"pre[class*=language-javascript]\": {\n    color: \"#9cdcfe\",\n  },\n  \"pre[class*=language-jsx]\": {\n    color: \"#9cdcfe\",\n  },\n  \"pre[class*=language-tsx]\": {\n    color: \"#9cdcfe\",\n  },\n  \"pre[class*=language-typescript]\": {\n    color: \"#9cdcfe\",\n  },\n  \"code[class*=language-css]\": {\n    color: \"#ce9178\",\n  },\n  \"pre[class*=language-css]\": {\n    color: \"#ce9178\",\n  },\n  \"code[class*=language-html]\": {\n    color: \"#d4d4d4\",\n  },\n  \"pre[class*=language-html]\": {\n    color: \"#d4d4d4\",\n  },\n  \".language-regex .token.anchor\": {\n    color: \"#dcdcaa\",\n  },\n  \".language-html .token.punctuation\": {\n    color: \"grey\",\n  },\n  \"pre[class*=language-]>code[class*=language-]\": {\n    position: \"relative\",\n    zIndex: \"1\",\n  },\n  \".line-highlight.line-highlight\": {\n    background: \"#f7ebc6\",\n    boxShadow: \"inset 5px 0 0 #f7d87c\",\n    zIndex: \"0\",\n  },\n};\n"
  },
  {
    "path": "web/src/components/Markdown/formatLinkText.ts",
    "content": "export const formatLinkText = (text: string) => {\n  const httpReg =\n    /(http|https|ftp):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&amp;:/~\\+#]*[\\w\\-\\@?^=%&amp;/~\\+#])?/gi;\n  return text.replace(httpReg, ` $& `);\n};\n"
  },
  {
    "path": "web/src/components/Markdown/index.module.scss",
    "content": ".waitingAnimation::after {\n  display: inline-block;\n  content: \"\";\n  width: 4px;\n  height: 14px;\n  transform: translate(4px, 2px) scaleY(1.3);\n  background-color: var(--chakra-colors-chakra-body-text);\n  animation: blink 0.6s infinite;\n}\n.animation {\n  > :last-child::after {\n    display: inline-block;\n    content: \"\";\n    width: 4px;\n    height: 14px;\n    transform: translate(4px, 2px) scaleY(1.3);\n    background-color: var(--chakra-colors-chakra-body-text);\n    animation: blink 0.6s infinite;\n  }\n}\n@keyframes blink {\n  from,\n  to {\n    opacity: 0;\n  }\n  50% {\n    opacity: 1;\n  }\n}\n\n.markdown > *:first-child {\n  margin-top: 0 !important;\n}\n.markdown > *:last-child {\n  margin-bottom: 0 !important;\n}\n.markdown a.absent {\n  color: #cc0000;\n}\n.markdown a.anchor {\n  bottom: 0;\n  cursor: pointer;\n  display: block;\n  left: 0;\n  margin-left: -30px;\n  padding-left: 30px;\n  position: absolute;\n  top: 0;\n}\n.markdown h1,\n.markdown h2,\n.markdown h3,\n.markdown h4,\n.markdown h5,\n.markdown h6 {\n  cursor: text;\n  font-weight: bold;\n  margin: 10px 0;\n  padding: 0;\n  position: relative;\n}\n.markdown h1 .mini-icon-link,\n.markdown h2 .mini-icon-link,\n.markdown h3 .mini-icon-link,\n.markdown h4 .mini-icon-link,\n.markdown h5 .mini-icon-link,\n.markdown h6 .mini-icon-link {\n  display: none;\n}\n.markdown h1:hover a.anchor,\n.markdown h2:hover a.anchor,\n.markdown h3:hover a.anchor,\n.markdown h4:hover a.anchor,\n.markdown h5:hover a.anchor,\n.markdown h6:hover a.anchor {\n  line-height: 1;\n  margin-left: -22px;\n  padding-left: 0;\n  text-decoration: none;\n  top: 15%;\n}\n.markdown h1:hover a.anchor .mini-icon-link,\n.markdown h2:hover a.anchor .mini-icon-link,\n.markdown h3:hover a.anchor .mini-icon-link,\n.markdown h4:hover a.anchor .mini-icon-link,\n.markdown h5:hover a.anchor .mini-icon-link,\n.markdown h6:hover a.anchor .mini-icon-link {\n  display: inline-block;\n}\n.markdown h1 tt,\n.markdown h1 code,\n.markdown h2 tt,\n.markdown h2 code,\n.markdown h3 tt,\n.markdown h3 code,\n.markdown h4 tt,\n.markdown h4 code,\n.markdown h5 tt,\n.markdown h5 code,\n.markdown h6 tt,\n.markdown h6 code {\n  font-size: inherit;\n}\n.markdown h1 {\n  font-size: 28px;\n}\n.markdown h2 {\n  font-size: 24px;\n}\n.markdown h3 {\n  font-size: 18px;\n}\n.markdown h4 {\n  font-size: 16px;\n}\n.markdown h5 {\n  font-size: 14px;\n}\n.markdown h6 {\n  font-size: 12px;\n}\n.markdown p,\n.markdown blockquote,\n.markdown ul,\n.markdown ol,\n.markdown dl,\n.markdown table,\n.markdown pre {\n  margin: 10px 0;\n}\n.markdown > h2:first-child,\n.markdown > h1:first-child,\n.markdown > h1:first-child + h2,\n.markdown > h3:first-child,\n.markdown > h4:first-child,\n.markdown > h5:first-child,\n.markdown > h6:first-child {\n  margin-top: 0;\n  padding-top: 0;\n}\n.markdown a:first-child h1,\n.markdown a:first-child h2,\n.markdown a:first-child h3,\n.markdown a:first-child h4,\n.markdown a:first-child h5,\n.markdown a:first-child h6 {\n  margin-top: 0;\n  padding-top: 0;\n}\n.markdown h1 + p,\n.markdown h2 + p,\n.markdown h3 + p,\n.markdown h4 + p,\n.markdown h5 + p,\n.markdown h6 + p {\n  margin-top: 0;\n}\n.markdown li p.first {\n  display: inline-block;\n}\n.markdown ul,\n.markdown ol {\n  padding-left: 2em;\n}\n.markdown ul.no-list,\n.markdown ol.no-list {\n  list-style-type: none;\n  padding: 0;\n}\n.markdown ul li > *:first-child,\n.markdown ol li > *:first-child {\n  margin-top: 0;\n}\n.markdown ul ul,\n.markdown ul ol,\n.markdown ol ol,\n.markdown ol ul {\n  margin-bottom: 0;\n}\n.markdown dl {\n  padding: 0;\n}\n.markdown dl dt {\n  font-size: 14px;\n  font-style: italic;\n  font-weight: bold;\n  margin: 15px 0 5px;\n  padding: 0;\n}\n.markdown dl dt:first-child {\n  padding: 0;\n}\n.markdown dl dt > *:first-child {\n  margin-top: 0;\n}\n.markdown dl dt > *:last-child {\n  margin-bottom: 0;\n}\n.markdown dl dd {\n  margin: 0 0 15px;\n  padding: 0 15px;\n}\n.markdown dl dd > *:first-child {\n  margin-top: 0;\n}\n.markdown dl dd > *:last-child {\n  margin-bottom: 0;\n}\n.markdown blockquote {\n  border-left: 4px solid #dddddd;\n  color: #777777;\n  padding: 0 15px;\n}\n.markdown blockquote > *:first-child {\n  margin-top: 0;\n}\n.markdown blockquote > *:last-child {\n  margin-bottom: 0;\n}\n.markdown table th {\n  font-weight: bold;\n}\n.markdown table th,\n.markdown table td {\n  padding: 6px 13px;\n}\n.markdown table tr {\n  background-color: #ffffff;\n}\n.markdown table tr:nth-child(2n) {\n  background-color: #f0f0f0;\n}\n.markdown img {\n  max-width: 100%;\n}\n.markdown span.frame {\n  display: block;\n  overflow: hidden;\n}\n.markdown span.frame > span {\n  border: 1px solid #dddddd;\n  display: block;\n  float: left;\n  margin: 13px 0 0;\n  overflow: hidden;\n  padding: 7px;\n  width: auto;\n}\n.markdown span.frame span img {\n  display: block;\n  float: left;\n}\n.markdown span.frame span span {\n  clear: both;\n  color: #333333;\n  display: block;\n  padding: 5px 0 0;\n}\n.markdown span.align-center {\n  clear: both;\n  display: block;\n  overflow: hidden;\n}\n.markdown span.align-center > span {\n  display: block;\n  margin: 13px auto 0;\n  overflow: hidden;\n  text-align: center;\n}\n.markdown span.align-center span img {\n  margin: 0 auto;\n  text-align: center;\n}\n.markdown span.align-right {\n  clear: both;\n  display: block;\n  overflow: hidden;\n}\n.markdown span.align-right > span {\n  display: block;\n  margin: 13px 0 0;\n  overflow: hidden;\n  text-align: right;\n}\n.markdown span.align-right span img {\n  margin: 0;\n  text-align: right;\n}\n.markdown span.float-left {\n  display: block;\n  float: left;\n  margin-right: 13px;\n  overflow: hidden;\n}\n.markdown span.float-left span {\n  margin: 13px 0 0;\n}\n.markdown span.float-right {\n  display: block;\n  float: right;\n  margin-left: 13px;\n  overflow: hidden;\n}\n.markdown span.float-right > span {\n  display: block;\n  margin: 13px auto 0;\n  overflow: hidden;\n  text-align: right;\n}\n.markdown code,\n.markdown tt {\n  border: 1px solid #eaeaea;\n  border-radius: 3px 3px 3px 3px;\n  margin: 0 2px;\n  padding: 0 5px;\n}\n.markdown pre > code {\n  background: none repeat scroll 0 0 transparent;\n  border: medium none;\n  margin: 0;\n  padding: 0;\n  white-space: pre;\n}\n.markdown .highlight pre,\n.markdown pre {\n  border: 1px solid #cccccc;\n  border-radius: 3px 3px 3px 3px;\n  font-size: max(0.9em, 14px);\n  line-height: 19px;\n  overflow: auto;\n  padding: 6px 10px;\n}\n.markdown pre code,\n.markdown pre tt {\n  background-color: transparent;\n  border: medium none;\n}\n.markdown {\n  text-align: justify;\n  tab-size: 4;\n  word-spacing: normal;\n  width: 100%;\n\n  * {\n    word-break: break-all;\n  }\n\n  p {\n    white-space: pre-line;\n  }\n\n  pre {\n    display: block;\n    width: 100%;\n    padding: 15px;\n    margin: 0;\n    border: none;\n    border-radius: 0;\n    background-color: #292b33 !important;\n    overflow-x: auto;\n    color: #fff;\n  }\n\n  pre code {\n    background-color: #292b33 !important;\n    width: 100%;\n  }\n\n  a {\n    text-decoration: underline;\n    color: var(--chakra-colors-blue-600);\n  }\n\n  table {\n    border-collapse: separate;\n    border-spacing: 0px;\n    color: var(--chakra-colors-gray-700);\n\n    thead tr:first-child th {\n      border-bottom-width: 1px;\n      border-left-width: 1px;\n      border-top-width: 1px;\n      border-color: #ccc;\n      background-color: rgba(236, 236, 241, 0.2);\n      overflow: hidden;\n\n      &:first-child {\n        border-top-left-radius: 0.375rem;\n      }\n      &:last-child {\n        border-right-width: 1px;\n        border-top-right-radius: 0.375rem;\n      }\n    }\n\n    td {\n      border-bottom-width: 1px;\n      border-left-width: 1px;\n      border-color: #ccc;\n\n      &:last-of-type {\n        border-right-width: 1px;\n      }\n    }\n\n    tbody tr:last-child {\n      overflow: hidden;\n      td {\n        &:first-child {\n          border-bottom-left-radius: 0.375rem;\n        }\n        &:last-child {\n          border-bottom-right-radius: 0.375rem;\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "web/src/components/Markdown/index.tsx",
    "content": "import { memo, useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport ReactMarkdown from \"react-markdown\";\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkMath from \"remark-math\";\n\nimport CopyText from \"../CopyText\";\n\nimport { codeLight } from \"./codeLight\";\nimport { formatLinkText } from \"./formatLinkText\";\n\nimport \"katex/dist/katex.min.css\";\nimport styles from \"./index.module.scss\";\n\nimport CreateModal from \"@/pages/app/functions/mods/FunctionPanel/CreateModal\";\n\nconst Markdown = ({\n  source,\n  isChatting = false,\n  formatLink,\n}: {\n  source: string;\n  formatLink?: boolean;\n  isChatting?: boolean;\n}) => {\n  // const { copyData } = useCopyData();\n\n  const { t } = useTranslation();\n\n  const formatSource = useMemo(() => {\n    return formatLink ? formatLinkText(source) : source;\n  }, [source, formatLink]);\n\n  return (\n    <ReactMarkdown\n      className={`markdown ${styles.markdown} ${\n        isChatting ? (source === \"\" ? styles.waitingAnimation : styles.animation) : \"\"\n      }`}\n      remarkPlugins={[remarkMath]}\n      rehypePlugins={[remarkGfm]}\n      components={{\n        pre: \"div\",\n        code({ node, inline, className, children, ...props }) {\n          const match = /language-(\\w+)/.exec(className || \"\");\n          const code = String(children);\n\n          return !inline || match ? (\n            <Box my={3} borderRadius={\"md\"} overflow={\"overlay\"} backgroundColor={\"#222\"}>\n              <Flex\n                className=\"code-header\"\n                py={2}\n                px={5}\n                backgroundColor={\"#323641\"}\n                color={\"#fff\"}\n                fontSize={\"sm\"}\n                userSelect={\"none\"}\n              >\n                <Box flex={1}>{match?.[1]}</Box>\n                <Flex cursor={\"pointer\"} onClick={() => {}} alignItems={\"center\"}>\n                  <CreateModal aiCode={code}>\n                    <span className=\"pr-2\">{t(\"Apply\")}</span>\n                  </CreateModal>\n                  <CopyText hideToolTip text={code}>\n                    <span>{t(\"Copy\")}</span>\n                  </CopyText>\n                </Flex>\n              </Flex>\n              <SyntaxHighlighter\n                style={codeLight as any}\n                language={match?.[1]}\n                PreTag=\"pre\"\n                {...props}\n              >\n                {code}\n              </SyntaxHighlighter>\n            </Box>\n          ) : (\n            <code className={className} {...props}>\n              {code}\n            </code>\n          );\n        },\n      }}\n      linkTarget=\"_blank\"\n    >\n      {formatSource}\n    </ReactMarkdown>\n  );\n};\n\nexport default memo(Markdown);\n"
  },
  {
    "path": "web/src/components/MoreButton/index.tsx",
    "content": "import {\n  Box,\n  Button,\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n  Tooltip,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { MoreIcon } from \"@/components/CommonIcon/index\";\n\nexport default function MoreButton(props: {\n  children: React.ReactElement;\n  isHidden: boolean;\n  label: string;\n  maxWidth?: string;\n  className?: string;\n  refItem?: React.RefObject<HTMLDivElement>;\n}) {\n  const { children, isHidden, maxWidth, label = t(\"openPopover\"), className } = props;\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  return (\n    <div className={clsx(\"flex group-hover:visible \", isHidden ? \"invisible\" : \"visible\")}>\n      <Popover isOpen={isOpen} onOpen={onOpen} onClose={onClose} placement=\"bottom\">\n        <Tooltip aria-label=\"tooltip\" placement=\"bottom\" label={label}>\n          <Box display=\"inline-block\">\n            <PopoverTrigger>\n              <Button variant=\"none\" p={0} minW={0} h={0} w={5}>\n                <MoreIcon className=\"cursor-pointer align-middle\" fontSize={12} />\n              </Button>\n            </PopoverTrigger>\n          </Box>\n        </Tooltip>\n        <PopoverContent p=\"2\" maxWidth={maxWidth ? maxWidth : \"120px\"} className={className}>\n          <div className=\"flex justify-around\">{children}</div>\n        </PopoverContent>\n      </Popover>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/components/Pagination/index.tsx",
    "content": "import { Button, HStack, Select, Text, Tooltip, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport {\n  ArrowLeftIcon,\n  ArrowRightIcon,\n  ChevronLeftIcon,\n  ChevronRightIcon,\n} from \"@/components/CommonIcon\";\n\nexport type PageValues = {\n  page: number;\n  pageSize: number;\n  limit?: number;\n  total?: number;\n};\n\nexport default function Pagination(props: {\n  values: PageValues;\n  options?: number[];\n  onChange: (values: PageValues) => void;\n  notShowSelect?: boolean;\n}) {\n  const { values, onChange, options, notShowSelect } = props;\n  const { page, total, pageSize } = values;\n  const maxPage = total && pageSize ? Math.ceil(total / pageSize) : -1;\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  if (maxPage > 0 && page && page > maxPage) {\n    onChange({\n      pageSize: values.pageSize,\n      page: maxPage,\n    });\n  } else if (page && page < 1) {\n    onChange({\n      pageSize: values.pageSize,\n      page: 1,\n    });\n  }\n\n  return (\n    <HStack\n      alignItems=\"center\"\n      spacing={\"1\"}\n      display=\"flex\"\n      whiteSpace={\"nowrap\"}\n      justifyContent={!notShowSelect ? \"space-between\" : \"flex-end\"}\n    >\n      <HStack spacing=\"2\" className=\"mr-4\">\n        <Text as=\"div\" className=\"mr-4\">\n          {t(\"Total\")}: {total}\n        </Text>\n        <Tooltip label={t(\"FirstPage\").toString()}>\n          <Button\n            variant=\"link\"\n            className={clsx(\n              \"!h-6 !w-6 !rounded-full !p-0\",\n              darkMode\n                ? \"hover:bg-grayModern-600\"\n                : \"bg-lafWhite-600 !text-[#262A32] hover:bg-grayModern-200\",\n            )}\n            style={{ minWidth: \"24px\" }}\n            isDisabled={page === 1 || maxPage === -1}\n            onClick={() => {\n              onChange({\n                pageSize: values.pageSize,\n                page: 1,\n              });\n            }}\n          >\n            <ArrowLeftIcon fontSize=\"12px\" />\n          </Button>\n        </Tooltip>\n        <Tooltip label={t(\"PreviousPage\").toString()}>\n          <Button\n            variant=\"link\"\n            className={clsx(\n              \"!h-6 !w-6 !rounded-full !p-0\",\n              darkMode\n                ? \"hover:bg-grayModern-600\"\n                : \"bg-lafWhite-600 !text-[#262A32] hover:bg-grayModern-200\",\n            )}\n            style={{ minWidth: \"24px\" }}\n            isDisabled={page === 1 || maxPage === -1}\n            onClick={() =>\n              onChange({\n                pageSize: values.pageSize,\n                page: page - 1,\n              })\n            }\n          >\n            <ChevronLeftIcon fontSize=\"12px\" />\n          </Button>\n        </Tooltip>\n        <Text className=\"min-w-[10px] text-center font-medium text-[#828289]\">{page}</Text>\n        <Text>/</Text>\n        <Text className=\"min-w-[10px] text-center font-medium\">{maxPage < 0 ? \"-\" : maxPage}</Text>\n        <Tooltip label={t(\"NextPage\").toString()}>\n          <Button\n            variant=\"link\"\n            isDisabled={maxPage === page || maxPage === -1}\n            className={clsx(\n              \"!h-6 !w-6 !rounded-full !p-0\",\n              darkMode\n                ? \"hover:bg-grayModern-600\"\n                : \"bg-lafWhite-600 !text-[#262A32] hover:bg-grayModern-200\",\n            )}\n            style={{ minWidth: \"24px\" }}\n            onClick={() => {\n              onChange({\n                pageSize: values.pageSize,\n                page: page + 1,\n              });\n            }}\n          >\n            <ChevronRightIcon fontSize=\"12px\" />\n          </Button>\n        </Tooltip>\n        <Tooltip label={t(\"LastPage\").toString()}>\n          <Button\n            variant=\"link\"\n            className={clsx(\n              \"!h-6 !w-6 !rounded-full !p-0\",\n              darkMode\n                ? \"hover:bg-grayModern-600\"\n                : \"bg-lafWhite-600 !text-[#262A32] hover:bg-grayModern-200\",\n            )}\n            style={{ minWidth: \"24px\" }}\n            isDisabled={maxPage === page || maxPage === -1}\n            onClick={() => {\n              onChange({\n                pageSize: values.pageSize,\n                page: maxPage,\n              });\n            }}\n          >\n            <ArrowRightIcon fontSize=\"12px\" />\n          </Button>\n        </Tooltip>\n      </HStack>\n      {!notShowSelect && (\n        <Select\n          className=\"flex !h-8 cursor-pointer justify-center !pl-3 !text-base hover:!bg-grayModern-100/50\"\n          width=\"92px\"\n          value={pageSize}\n          onChange={(e: any) => {\n            onChange({\n              pageSize: parseInt(e.target.value),\n              page: 1,\n            });\n          }}\n          variant=\"unstyled\"\n        >\n          {(options || [10, 20, 30]).map((data: any) => (\n            <option key={data} value={data}>\n              {data} / {t(\"Page\")}\n            </option>\n          ))}\n        </Select>\n      )}\n    </HStack>\n  );\n}\n"
  },
  {
    "path": "web/src/components/Panel/Header.tsx",
    "content": "import React, { useEffect } from \"react\";\nimport { ChevronDownIcon, ChevronUpIcon } from \"@chakra-ui/icons\";\nimport { HStack } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { PanelMinHeight } from \"@/constants\";\n\nimport styles from \"./index.module.scss\";\n\nimport useCustomSettingStore, { page } from \"@/pages/customSetting\";\n\nconst PanelHeader: React.FC<{\n  children?: React.ReactNode;\n  className?: string;\n  style?: React.CSSProperties;\n  actions?: React.ReactNode[];\n  title?: React.ReactNode | string;\n  pageId?: page;\n  panelId?: string;\n}> = (props) => {\n  const { title, actions, children, style = {}, className, pageId, panelId } = props;\n  const store = useCustomSettingStore();\n\n  const [isUp, setIsUp] = React.useState(false);\n\n  useEffect(() => {\n    if (!pageId || !panelId) return;\n    const { id = \"\", style } = store.getLayoutInfo(pageId, panelId);\n    if (!id) return;\n\n    if (style.height < PanelMinHeight + 10) {\n      // 10px is the margin\n      setIsUp(false);\n    } else {\n      setIsUp(true);\n    }\n  }, [pageId, panelId, store]);\n\n  const _defaultActions = [\n    <div\n      key=\"zoomIn\"\n      className=\"cursor-pointer\"\n      onClick={() => {\n        if (!pageId || !panelId) return;\n        const { id = \"\", style } = store.getLayoutInfo(pageId, panelId);\n\n        const element = document.getElementById(id);\n        if (element !== null) {\n          // get element height\n          const currentHeight = element.style.height;\n          if (currentHeight === `${PanelMinHeight}px`) {\n            const height = element.getAttribute(\"data-height\");\n            element.style.height = height || \"100px\";\n            setIsUp(true);\n          } else {\n            setIsUp(false);\n            element.setAttribute(\"data-height\", style.height + \"px\");\n            element.style.height = `${PanelMinHeight}px`;\n          }\n        }\n      }}\n    >\n      {isUp ? <ChevronDownIcon fontSize={16} /> : <ChevronUpIcon fontSize={16} />}\n    </div>,\n  ];\n\n  return title ? (\n    <div className={styles.sectionHeader + \" flex justify-between\"}>\n      <h4>{title}</h4>\n      <HStack spacing=\"2\">{actions ? actions : _defaultActions}</HStack>\n    </div>\n  ) : (\n    <div style={style} className={clsx(styles.sectionHeader + \" flex justify-between\", className)}>\n      {children}\n    </div>\n  );\n};\n\nexport default PanelHeader;\n"
  },
  {
    "path": "web/src/components/Panel/index.module.scss",
    "content": ".sectionHeader {\n  min-height: 32px;\n  max-height: 32px;\n  display: flex;\n  align-items: center;\n\n  h4 {\n    padding-left: 10px;\n    font-weight: 500;\n    font-size: 12px;\n    position: relative;\n\n    &::before {\n      content: \" \";\n      height: 12px;\n      position: absolute;\n      left: 0;\n      top: 3px;\n      width: 3px;\n      background: #00a99d;\n      border-radius: 24px;\n    }\n  }\n\n  h4 svg {\n    vertical-align: -4px !important;\n  }\n}\n"
  },
  {
    "path": "web/src/components/Panel/index.tsx",
    "content": "import React from \"react\";\nimport { Box, useColorModeValue } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport PanelHeader from \"./Header\";\n\nconst Panel = (props: {\n  className?: string;\n  style?: React.CSSProperties;\n  children: React.ReactNode;\n  onClick?: () => void;\n}) => {\n  const { className, style = {}, onClick } = props;\n  const bg = useColorModeValue(\"lafWhite.200\", \"lafDark.200\");\n  return (\n    <Box\n      style={style}\n      bg={bg}\n      onClick={onClick}\n      className={clsx(\"flex w-full flex-col rounded-sm px-3\", className)}\n    >\n      {props.children}\n    </Box>\n  );\n};\n\nPanel.Header = PanelHeader;\n\nexport default Panel;\n"
  },
  {
    "path": "web/src/components/PopConfirm/index.tsx",
    "content": "import React, { FC, useCallback } from \"react\";\nimport {\n  Button,\n  ButtonGroup,\n  PlacementWithLogical,\n  Popover,\n  PopoverArrow,\n  PopoverBody,\n  PopoverCloseButton,\n  PopoverContent,\n  PopoverFooter,\n  PopoverHeader,\n  PopoverTrigger,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\ninterface PopConfirmProps {\n  title: string | React.ReactElement | any;\n  description: string | React.ReactElement | any;\n  onConfirm?: React.MouseEventHandler<HTMLButtonElement>;\n  onCancel?: React.MouseEventHandler<HTMLButtonElement>;\n  okText?: string;\n  cancelText?: string;\n  placement?: PlacementWithLogical;\n  children: React.ReactNode;\n}\n\nconst PopConfirm: FC<PopConfirmProps> = ({\n  children,\n  title,\n  description,\n  onConfirm,\n  onCancel,\n  okText,\n  cancelText,\n  placement,\n}) => {\n  const { onOpen, onClose, isOpen } = useDisclosure();\n\n  const onSubmit: React.MouseEventHandler<HTMLButtonElement> = useCallback(\n    (event) => {\n      onConfirm?.(event);\n      onClose();\n    },\n    [onClose, onConfirm],\n  );\n\n  const onPopCancel: React.MouseEventHandler<HTMLButtonElement> = useCallback(\n    (event) => {\n      onCancel?.(event);\n      onClose();\n    },\n    [onClose, onCancel],\n  );\n\n  return (\n    <Popover isOpen={isOpen} onOpen={onOpen} onClose={onClose} placement={placement}>\n      <PopoverTrigger>{children}</PopoverTrigger>\n      <PopoverContent>\n        <PopoverCloseButton />\n        <PopoverHeader pt={4} fontWeight=\"bold\" fontSize={14}>\n          {title}\n        </PopoverHeader>\n        <PopoverArrow />\n        <PopoverBody fontSize={14} pt={4}>\n          {description}\n        </PopoverBody>\n        <PopoverFooter border=\"0\" pb={4}>\n          <ButtonGroup display=\"flex\" justifyContent=\"flex-end\" size=\"sm\">\n            <Button variant=\"outline\" onClick={onPopCancel}>\n              {cancelText || t(\"Cancel\")}\n            </Button>\n            <Button colorScheme=\"teal\" onClick={onSubmit}>\n              {okText || t(\"Confirm\")}\n            </Button>\n          </ButtonGroup>\n        </PopoverFooter>\n      </PopoverContent>\n    </Popover>\n  );\n};\nexport default PopConfirm;\n"
  },
  {
    "path": "web/src/components/Resize/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"@chakra-ui/icons\";\nimport { Box, Center, useColorModeValue } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport useResizable from \"@/hooks/useResizable\";\nimport { page, panel } from \"@/pages/customSetting\";\nimport useCustomSettingStore from \"@/pages/customSetting\";\nexport default function Resize(props: {\n  type: \"x\" | \"y\";\n  reverse?: boolean;\n  pageId: page;\n  panelId: panel;\n  containerRef: any;\n  lineWidth?: number;\n}) {\n  const { type, pageId, panelId, reverse, containerRef, lineWidth = 2 } = props;\n  const store = useCustomSettingStore();\n  const { width, height, minWidth, maxWidth, minHeight, maxHeight, display } =\n    store.getLayoutInfoStyle(pageId, panelId);\n  const { isDragging, position, separatorProps, handleClick } = useResizable({\n    axis: type,\n    initial: type === \"x\" ? width : height,\n    min: type === \"x\" ? minWidth : minHeight,\n    max: type === \"x\" ? maxWidth : maxHeight,\n    reverse,\n    containerRef,\n  });\n  useEffect(() => {\n    const newPosition = {\n      width: position,\n      height: position,\n    };\n\n    store.setLayoutInfo(pageId, panelId, newPosition);\n  }, [position, pageId, panelId, store]);\n  const borderColor = useColorModeValue(\"slate.300\", \"lafDark.300\");\n  const [isCollapsed, setIsCollapsed] = useState(false);\n\n  return (\n    <>\n      {display === \"none\" ? null : (\n        <div\n          className={type === \"x\" ? \"group cursor-col-resize\" : \"cursor-row-resize\"}\n          style={\n            type === \"x\"\n              ? { width: lineWidth, height: \"100%\" }\n              : { width: \"100%\", height: lineWidth }\n          }\n          {...separatorProps}\n        >\n          <Center className=\"relative h-full w-full\">\n            {type === \"x\" && width <= minWidth + 15 ? (\n              <div\n                className={clsx(\n                  \"absolute z-50 cursor-pointer\",\n                  !isCollapsed && !reverse && \"mr-2 rounded-l-full\",\n                  isCollapsed && !reverse && \"ml-2 rounded-r-full\",\n                  !isCollapsed && reverse && \"ml-2 rounded-r-full\",\n                  isCollapsed && reverse && \"mr-2 rounded-l-full\",\n                  \"h-[30px] w-2 bg-grayIron-300 leading-loose text-lafWhite-600 transition-colors group-hover:bg-grayIron-400\",\n                )}\n                onClick={(e) => {\n                  handleClick(e, isCollapsed);\n                  setIsCollapsed(!isCollapsed);\n                }}\n              >\n                {!isCollapsed && !reverse && <ChevronLeftIcon fontSize={10} />}\n                {isCollapsed && !reverse && <ChevronRightIcon fontSize={10} />}\n                {!isCollapsed && reverse && <ChevronRightIcon fontSize={10} />}\n                {isCollapsed && reverse && <ChevronLeftIcon fontSize={10} />}\n              </div>\n            ) : (\n              <>\n                <div\n                  className={clsx(\n                    type === \"x\" && isDragging ? \"h-full \" : \"h-0\",\n                    type === \"y\" && isDragging ? \"w-full \" : \"w-0\",\n                    isDragging ? \" border border-primary-400\" : \"\",\n                    \"absolute z-10 overflow-hidden transition-all\",\n                  )}\n                ></div>\n                <Box\n                  borderColor={borderColor}\n                  className={clsx(\n                    type === \"x\" ? \"h-[18px]\" : \"w-[18px]\",\n                    \"absolute rounded border\",\n                  )}\n                ></Box>\n              </>\n            )}\n          </Center>\n        </div>\n      )}\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/components/SectionList/index.module.scss",
    "content": ".sectionList {\n  overflow-y: hidden;\n  overflow-x: hidden;\n  height: 100%;\n\n  li {\n    cursor: pointer;\n    display: flex;\n    min-height: 24px;\n    align-items: center;\n    justify-content: space-between;\n    padding: 0px 4px 0px 12px;\n    margin-bottom: 2px;\n\n    span {\n      vertical-align: middle;\n    }\n\n    svg {\n      fill: #7b838b;\n    }\n\n    &.small {\n      height: 32px;\n    }\n\n    &:hover,\n    &.active {\n      background-color: #00b3b01a;\n      color: var(--chakra-colors-primary-600);\n\n      svg {\n        fill: var(--chakra-colors-primary-600);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "web/src/components/SectionList/index.tsx",
    "content": "import React from \"react\";\nimport clsx from \"clsx\";\nimport SimpleBar from \"simplebar-react\";\n\nimport styles from \"./index.module.scss\";\n\nfunction SectionList(\n  props: { children: React.ReactNode; className?: string } & Omit<\n    React.HTMLAttributes<HTMLDivElement>,\n    \"children\"\n  >,\n) {\n  const { className, children, ...restProps } = props;\n\n  return (\n    <SimpleBar\n      className={clsx(styles.sectionList, \"flex flex-col overflow-y-auto\", className || \"\")}\n      {...restProps}\n    >\n      {children}\n    </SimpleBar>\n  );\n}\n\nfunction Item(\n  props: {\n    children: React.ReactNode;\n    isActive: boolean;\n    className?: string;\n    size?: \"small\" | \"default\";\n  } & Omit<React.HTMLAttributes<HTMLLIElement>, \"children\">,\n) {\n  const { children, isActive, className, size = \"default\", ...restProps } = props;\n\n  return (\n    <li\n      className={clsx(className, {\n        [styles.active]: isActive,\n        [styles.small]: size === \"small\",\n      })}\n      {...restProps}\n    >\n      {children}\n    </li>\n  );\n}\n\nSectionList.Item = Item;\n\nexport default SectionList;\n"
  },
  {
    "path": "web/src/components/SendEmailCodeButton/index.tsx",
    "content": "import { useState } from \"react\";\nimport { Button } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { useSendEmailCodeMutation } from \"@/pages/auth/service\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport function SendEmailCodeButton(props: {\n  getEmail: any;\n  className?: string;\n  emailAccount?: string;\n  type: string;\n}) {\n  const { getEmail, className, emailAccount, type } = props;\n  const [isSendSmsCode, setIsSendSmsCode] = useState(false);\n  const [countdown, setCountdown] = useState(60);\n  const sendSmsCodeMutation = useSendEmailCodeMutation();\n\n  const { showSuccess, showError } = useGlobalStore();\n\n  const handleSendSmsCode = async () => {\n    const email = getEmail(emailAccount);\n\n    if (isSendSmsCode) {\n      return;\n    }\n\n    const isValidate = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/.test(email);\n    if (!isValidate) {\n      showError(t(\"AuthPanel.EmailTip\"));\n      return;\n    }\n\n    setIsSendSmsCode(true);\n    setCountdown(60);\n    const timer = setInterval(() => {\n      setCountdown((countdown) => {\n        if (countdown === 0) {\n          clearInterval(timer);\n          setIsSendSmsCode(false);\n          return 0;\n        }\n        return countdown - 1;\n      });\n    }, 1000);\n\n    const res = await sendSmsCodeMutation.mutateAsync({\n      email,\n      type,\n    });\n\n    if (res?.data) {\n      showSuccess(t(\"AuthPanel.SmsCodeSendSuccess\"));\n    }\n  };\n\n  return (\n    <Button\n      className={clsx(\"w-20\", className)}\n      variant={isSendSmsCode ? \"text_disabled\" : \"text\"}\n      onClick={handleSendSmsCode}\n    >\n      {isSendSmsCode ? `${countdown}s` : t(\"AuthPanel.getValidationCode\")}\n    </Button>\n  );\n}\n"
  },
  {
    "path": "web/src/components/SendSmsCodeButton/index.tsx",
    "content": "import { useState } from \"react\";\nimport { Button } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { TSmsCode } from \"@/apis/typing\";\nimport { useSendSmsCodeMutation } from \"@/pages/auth/service\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport function SendSmsCodeButton(props: {\n  getPhone: any;\n  className?: string;\n  phoneNumber?: string;\n  type: TSmsCode;\n}) {\n  const { getPhone, className, phoneNumber, type } = props;\n  const [isSendSmsCode, setIsSendSmsCode] = useState(false);\n  const [countdown, setCountdown] = useState(60);\n  const sendSmsCodeMutation = useSendSmsCodeMutation();\n\n  const { showSuccess, showError } = useGlobalStore();\n\n  const handleSendSmsCode = async () => {\n    const phone = getPhone(phoneNumber);\n\n    if (isSendSmsCode) {\n      return;\n    }\n\n    const isValidate = /^1[2-9]\\d{9}$/.test(phone);\n    if (!isValidate) {\n      showError(t(\"AuthPanel.PhoneTip\"));\n      return;\n    }\n\n    setIsSendSmsCode(true);\n    setCountdown(60);\n    const timer = setInterval(() => {\n      setCountdown((countdown) => {\n        if (countdown === 0) {\n          clearInterval(timer);\n          setIsSendSmsCode(false);\n          return 0;\n        }\n        return countdown - 1;\n      });\n    }, 1000);\n\n    const res = await sendSmsCodeMutation.mutateAsync({\n      phone,\n      type,\n    });\n\n    if (res?.data) {\n      showSuccess(t(\"AuthPanel.SmsCodeSendSuccess\"));\n    }\n  };\n\n  return (\n    <Button\n      className={clsx(\"w-20\", className)}\n      variant={isSendSmsCode ? \"text_disabled\" : \"text\"}\n      onClick={handleSendSmsCode}\n    >\n      {isSendSmsCode ? `${countdown}s` : t(\"AuthPanel.getValidationCode\")}\n    </Button>\n  );\n}\n"
  },
  {
    "path": "web/src/components/SmsCodeInput/index.tsx",
    "content": "import { useRef } from \"react\";\nimport { Input, useColorMode } from \"@chakra-ui/react\";\nconst CODE_NUMBER = 6;\n\nexport default function SmsCodeInput(props: {\n  value?: string;\n  onChange?: (value: string) => void;\n}) {\n  const { value, onChange } = props;\n  const inputsRefs = useRef<Array<HTMLInputElement | null>>([]);\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  if (value) {\n    const updatedValues = value.split(\"\").slice(0, CODE_NUMBER);\n    inputsRefs.current.forEach((input, index) => {\n      if (input) {\n        input.value = updatedValues[index] || \"\";\n      }\n    });\n  }\n\n  const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>, index: number) => {\n    const inputValue = e.target.value;\n    if (index < CODE_NUMBER - 1 && inputValue.length === 1) {\n      inputsRefs.current[index + 1]?.focus();\n    }\n    const updatedValue = updateValueAtIndex(value, index, inputValue);\n    if (onChange) {\n      onChange(updatedValue);\n    }\n  };\n\n  const updateValueAtIndex = (value: string | undefined, index: number, newValue: string) => {\n    if (value === undefined) {\n      return newValue;\n    }\n    const newValueArray = value.split(\"\");\n    newValueArray[index] = newValue;\n    return newValueArray.join(\"\");\n  };\n\n  const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>, index: number) => {\n    if (index > 0 && e.key === \"Backspace\") {\n      const inputValue = e.currentTarget.value;\n      if (inputValue === \"\") {\n        inputsRefs.current[index - 1]?.focus();\n      }\n    }\n  };\n\n  const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n    e.preventDefault();\n    const clipboardData = e.clipboardData || window.Clipboard;\n    const pastedText = clipboardData.getData(\"text\").slice(0, CODE_NUMBER);\n    const updatedValues = Array.from({ length: CODE_NUMBER }, (_, i) => pastedText[i] || \"\");\n\n    inputsRefs.current.forEach((input, index) => {\n      if (input) {\n        input.value = updatedValues[index];\n        handleInputChange({ target: input } as React.ChangeEvent<HTMLInputElement>, index);\n      }\n    });\n\n    const updatedValue = updatedValues.join(\"\");\n    if (onChange) {\n      onChange(updatedValue);\n    }\n  };\n\n  const renderInputs = () => {\n    const inputs = [];\n    for (let i = 0; i < CODE_NUMBER; i++) {\n      inputsRefs.current[i] = inputsRefs.current[i] ?? null;\n      inputs.push(\n        <Input\n          key={i}\n          value={value?.charAt(i) ?? \"\"}\n          type=\"text\"\n          maxLength={1}\n          onChange={(e) => handleInputChange(e, i)}\n          onKeyDown={(e) => handleKeyDown(e, i)}\n          onPaste={handlePaste}\n          width={\"30px\"}\n          height={\"32px\"}\n          bg={!darkMode ? \"#F8FAFB\" : \"none\"}\n          border={\"1px solid #D5D6E1\"}\n          padding={0}\n          className=\"text-center\"\n          ref={(ref) => (inputsRefs.current[i] = ref)}\n        />,\n      );\n      if (i === CODE_NUMBER / 2 - 1) {\n        inputs.push(<div key=\"divider\" className=\"h-[1px] w-5 bg-[#D5D6E1]\" />);\n      }\n    }\n    return inputs;\n  };\n\n  return <div className=\"flex items-center justify-between\">{renderInputs()}</div>;\n}\n"
  },
  {
    "path": "web/src/components/TextButton/index.tsx",
    "content": "import { forwardRef } from \"react\";\nimport { Button } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nconst TextButton = function (\n  props: {\n    text: string;\n    onClick?: () => void;\n    className?: string;\n    type?: \"submit\" | undefined;\n  },\n  ref: any,\n) {\n  const { text, type, onClick, className } = props;\n  return (\n    <Button\n      variant={\"link\"}\n      size=\"xs\"\n      className={clsx(className, \"!text-[#219BF4]\")}\n      type={type}\n      onClick={() => {\n        onClick && onClick();\n      }}\n    >\n      {text}\n    </Button>\n  );\n};\nexport default forwardRef(TextButton);\n"
  },
  {
    "path": "web/src/components/UpgradePrompt/index.tsx",
    "content": "import { useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Box, useToast, VStack } from \"@chakra-ui/react\";\nimport { useRegisterSW } from \"virtual:pwa-register/react\";\n\nconst UpgradePrompt = () => {\n  const {\n    needRefresh: [needRefresh],\n    updateServiceWorker,\n  } = useRegisterSW({\n    onRegistered(r) {\n      if (!r) return;\n      r.update();\n\n      setInterval(() => {\n        if (!(!r.installing && navigator)) return;\n        if (\"connection\" in navigator && !navigator.onLine) return;\n        r.update();\n      }, 5 * 60 * 1000); // check new version every 5 mins\n    },\n  });\n\n  const toast = useToast();\n  const { t } = useTranslation();\n\n  useEffect(() => {\n    if (needRefresh && !toast.isActive(\"laf-version-upgrade\")) {\n      toast({\n        id: \"laf-version-upgrade\",\n        position: \"bottom-right\",\n        duration: null,\n        render: () => (\n          <div className=\"flex justify-end\">\n            <Box\n              color=\"white\"\n              w={210}\n              p={3}\n              m={3}\n              bg=\"primary.500\"\n              borderRadius={10}\n              shadow=\"2xl\"\n              className=\"animate-bounce cursor-pointer select-none hover:scale-105 focus:outline-none active:bg-primary-700\"\n              onClick={() => updateServiceWorker(true)}\n            >\n              <VStack>\n                <p className=\"text-lg font-bold\">🎉 {t(\"UpgradeVersionTip.Title\")}</p>\n                <p className=\"tracking-wider\">{t(\"UpgradeVersionTip.Description\")}</p>\n              </VStack>\n            </Box>\n          </div>\n        ),\n      });\n    }\n  }, [needRefresh]);\n\n  return <></>;\n};\n\nexport default UpgradePrompt;\n"
  },
  {
    "path": "web/src/constants/.gitkeep",
    "content": ""
  },
  {
    "path": "web/src/constants/index.ts",
    "content": "/* eslint-disable no-unused-vars */\nexport const SideBarWidth = 52;\nexport const SmallNavHeight = 42;\nexport const PanelMinHeight = 32;\n\nexport const VITE_SERVER_BASE_URL = import.meta.env.VITE_SERVER_BASE_URL || \"\";\n\nexport const Pages = {\n  function: \"function\",\n  storage: \"storage\",\n  database: \"database\",\n  setting: \"setting\",\n  userSetting: \"userSetting\",\n};\n\nexport enum APP_STATUS {\n  Running = \"Running\",\n  Stopped = \"Stopped\",\n  Restarting = \"Restarting\",\n  Deleted = \"Deleted\",\n  Releasing = \"Releasing\",\n}\n\nexport const DEFAULT_REGION = \"default\";\n\nexport enum SUPPORTED_METHODS {\n  GET = \"GET\",\n  POST = \"POST\",\n  PUT = \"PUT\",\n  PATCH = \"PATCH\",\n  DELETE = \"DELETE\",\n}\n\nexport enum APP_PHASE_STATUS {\n  Creating = \"Creating\",\n  Created = \"Created\",\n  Starting = \"Starting\",\n  Started = \"Started\",\n  Stopping = \"Stopping\",\n  Stopped = \"Stopped\",\n  Deleting = \"Deleting\",\n  Deleted = \"Deleted\",\n}\n\nexport enum BUCKET_POLICY_TYPE {\n  private = \"private\",\n  readonly = \"readonly\",\n  readwrite = \"readwrite\",\n}\n\nexport enum BUCKET_STATUS {\n  Active = \"Active\",\n}\n\nexport enum CHARGE_CHANNEL {\n  WeChat = \"WeChat\",\n  Alipay = \"Alipay\",\n}\n\nexport enum CURRENCY {\n  CNY = \"CNY\",\n  USD = \"USD\",\n}\n\nexport const Routes = {\n  login: \"/login\",\n  dashboard: \"/dashboard\",\n  templates: \"/market/templates\",\n};\n\nexport const site_url = {\n  laf_github: \"https://github.com/labring/laf\",\n  laf_index_video: \"https://itceb8-video.oss.laf.run/laf-website.mp4\",\n};\n\nexport const CHAKRA_UI_COLOR_MODE_KEY = \"chakra-ui-color-mode\";\n\nexport const COLOR_MODE = {\n  light: \"light\",\n  dark: \"dark\",\n};\n\nexport const DEFAULT_CODE = `import cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  console.log('Hello World')\n  return { data: 'hi, laf' }\n}\n`;\n\nexport enum APP_SETTING_KEY {\n  INFO = \"info\",\n  ENV = \"env\",\n  MONITOR_RUNTIME = \"monitorRuntime\",\n  MONITOR_DATABASE = \"monitorDatabase\",\n  DOMAIN = \"domain\",\n  COMMON = \"common\",\n}\n\nexport enum PROVIDER_NAME {\n  PHONE = \"phone\",\n  EMAIL = \"email\",\n  GITHUB = \"github\",\n  PASSWORD = \"user-password\",\n}\n\nexport const RUNTIMES_PATH = \"/app/functions\";\n"
  },
  {
    "path": "web/src/hooks/useAwsS3.ts",
    "content": "import useGlobalStore from \"@/pages/globalStore\";\n\nfunction useAwsS3() {\n  const currentApp = useGlobalStore((state) => state.currentApp);\n  const storage = currentApp?.storage;\n\n  const s3 = new (window as any).AWS.S3({\n    accessKeyId: storage.accessKey,\n    secretAccessKey: storage.secretKey,\n    endpoint: storage.endpoint,\n    s3ForcePathStyle: true,\n    signatureVersion: \"v4\",\n  });\n\n  const getList = async (bucketName: string | undefined, { marker, maxKeys, prefix }: any) => {\n    if (!bucketName || bucketName === \"\") return { data: [] };\n\n    const res = await s3\n      .listObjects({\n        Bucket: bucketName,\n        MaxKeys: maxKeys,\n        Marker: marker,\n        Prefix: prefix,\n        Delimiter: \"/\",\n      })\n      .promise();\n\n    const files = res.Contents || [];\n    const dirs = res.CommonPrefixes || [];\n\n    return { data: [...files, ...dirs], marker: res.NextMarker };\n  };\n\n  const getFileUrl = (bucket: string, key: string) => {\n    const res = s3.getSignedUrl(\"getObject\", { Bucket: bucket, Key: key });\n    return res;\n  };\n\n  const uploadFile = async (bucketName: string, key: string, body: any, { contentType }: any) => {\n    const res = await s3\n      .putObject({ Bucket: bucketName, Key: key, ContentType: contentType, Body: body })\n      .promise();\n    return res;\n  };\n\n  const deleteFile = async (bucket: string, key: string) => {\n    const { Versions } = await s3\n      .listObjectVersions({\n        Bucket: bucket,\n        Prefix: key,\n      })\n      .promise();\n    const res = await s3\n      .deleteObjects({\n        Bucket: bucket,\n        Delete: {\n          Objects: Versions.map(({ Key, VersionId }: { Key: string; VersionId: string }) => ({\n            Key,\n            VersionId,\n          })),\n          Quiet: true,\n        },\n      })\n      .promise();\n    if (res?.Errors?.length === 0 && Versions.length >= 1000) {\n      await deleteFile(bucket, key);\n    }\n    return res;\n  };\n\n  return { s3, getList, uploadFile, getFileUrl, deleteFile };\n}\n\nexport default useAwsS3;\n"
  },
  {
    "path": "web/src/hooks/useCustomToast.ts",
    "content": "import React from \"react\";\nimport { useToast } from \"@chakra-ui/react\";\n\nfunction useCustomToast() {\n  const toast = useToast();\n\n  const showSuccess = (text: string | React.ReactNode) => {\n    toast({\n      position: \"top\",\n      title: text,\n      status: \"success\",\n      duration: 1000,\n    });\n  };\n\n  const showError = (text: string | React.ReactNode) => {\n    toast({\n      position: \"top\",\n      title: text,\n      status: \"error\",\n      duration: 1000,\n    });\n  };\n  return {\n    showSuccess,\n    showError,\n  };\n}\n\nexport default useCustomToast;\n"
  },
  {
    "path": "web/src/hooks/useDB.ts",
    "content": "import { Cloud } from \"laf-client-sdk\";\n\nimport { VITE_SERVER_BASE_URL } from \"../constants\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nfunction useDB() {\n  const currentApp = useGlobalStore((state) => state.currentApp);\n  const dbm_cloud = new Cloud({\n    baseUrl: VITE_SERVER_BASE_URL,\n    dbProxyUrl: `/v1/apps/${currentApp?.appid}/databases/proxy`,\n    getAccessToken: () => localStorage.getItem(\"token\") as any,\n  });\n\n  const db = dbm_cloud.database();\n\n  return { db };\n}\n\nexport default useDB;\n"
  },
  {
    "path": "web/src/hooks/useFunctionCache.ts",
    "content": "import { RUNTIMES_PATH } from \"@/constants\";\n\nfunction useFunctionCache() {\n  const CACHE_KEY_PREFIX = \"$cached_function@\";\n\n  function getCache(functionId: string, _default: string = \"\"): string {\n    return localStorage.getItem(CACHE_KEY_PREFIX + functionId) || _default;\n  }\n\n  function setCache(functionId: string, value: string) {\n    localStorage.setItem(CACHE_KEY_PREFIX + functionId, value);\n  }\n\n  function removeCache(functionId: string) {\n    localStorage.removeItem(CACHE_KEY_PREFIX + functionId);\n  }\n\n  function getPositionCache(path: string, _default: string = \"\"): string {\n    return localStorage.getItem(CACHE_KEY_PREFIX + path) || _default;\n  }\n\n  function setPositionCache(functionName: string, value: string) {\n    localStorage.setItem(CACHE_KEY_PREFIX + `${RUNTIMES_PATH}/${functionName}.ts`, value);\n  }\n\n  return {\n    getCache,\n    setCache,\n    removeCache,\n    getPositionCache,\n    setPositionCache,\n  };\n}\n\nexport default useFunctionCache;\n"
  },
  {
    "path": "web/src/hooks/useHotKey.ts",
    "content": "import { useCallback, useEffect } from \"react\";\n\nconst isWin = /windows/i.test(navigator.userAgent.toLowerCase());\nconst MODIFY_KEY = {\n  // common meta key, support win & mac\n  metaKey: isWin ? \"Control\" : \"Meta\",\n  // shift key\n  shiftKey: \"Shift\",\n  // alt key\n  altKey: \"Alt\",\n  // control key\n  ctrlKey: \"Control\",\n};\n\nexport function getDisplayString(str: string) {\n  return str.replace(/Meta/g, \"⌘\").replaceAll(\"Control\", \"Ctrl\");\n}\n\nexport const DEFAULT_SHORTCUTS = {\n  send_request: [`${MODIFY_KEY.metaKey}+r`, `${MODIFY_KEY.metaKey}+s`],\n  deploy: [`${MODIFY_KEY.metaKey}+p`],\n};\n\nexport function getWhiteListKeys() {\n  return [\"s\", \"r\", \"p\"];\n}\n\nfunction useHotKey(\n  keyMap: string[],\n  trigger: () => void,\n  config: {\n    enabled?: boolean;\n  } = {\n    enabled: true,\n  },\n): { displayName: string } {\n  const handleKeyDown = useCallback(\n    (event: any) => {\n      if (getWhiteListKeys().indexOf(event.key) < 0) {\n        return;\n      }\n\n      let _k: string[] = [];\n      event.metaKey && _k.push(MODIFY_KEY.metaKey);\n      event.ctrlKey && _k.push(MODIFY_KEY.ctrlKey);\n      event.shiftKey && _k.push(MODIFY_KEY.shiftKey);\n      event.altKey && _k.push(MODIFY_KEY.altKey);\n      _k.push(event.key);\n\n      if (keyMap.indexOf(_k.join(\"+\")) >= 0) {\n        event.preventDefault();\n        trigger();\n      }\n    },\n    [keyMap, trigger],\n  );\n\n  useEffect(() => {\n    // attach the event listener\n    if (config?.enabled) {\n      document.addEventListener(\"keydown\", handleKeyDown);\n    }\n\n    // remove the event listener\n    return () => {\n      document.removeEventListener(\"keydown\", handleKeyDown);\n    };\n  }, [config?.enabled, handleKeyDown]);\n\n  return {\n    displayName: getDisplayString(keyMap[0]),\n  };\n}\n\nexport default useHotKey;\n"
  },
  {
    "path": "web/src/hooks/useInviteCode.ts",
    "content": "import { useEffect, useState } from \"react\";\n\nconst useInviteCode = () => {\n  const [inviteCode, setInviteCode] = useState<string | null>(null);\n\n  useEffect(() => {\n    let code = new URLSearchParams(window.location.search).get(\"code\");\n\n    if (code) {\n      const now = new Date();\n      const expirationDays = 7;\n      const expiration = new Date(now.getTime() + expirationDays * 24 * 60 * 60 * 1000);\n\n      const item = {\n        value: code,\n        expiration: expiration.getTime(),\n      };\n\n      localStorage.setItem(\"inviteCode\", JSON.stringify(item));\n    } else {\n      const item = localStorage.getItem(\"inviteCode\");\n\n      if (item) {\n        const data = JSON.parse(item);\n        if (new Date().getTime() > data.expiration) {\n          localStorage.removeItem(\"inviteCode\");\n        } else {\n          code = data.value;\n        }\n      }\n    }\n\n    setInviteCode(code);\n  }, []);\n\n  return inviteCode;\n};\n\nexport default useInviteCode;\n"
  },
  {
    "path": "web/src/hooks/useResizable.ts",
    "content": "import type React from \"react\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\n\ntype SeparatorProps = React.ComponentPropsWithoutRef<\"hr\">;\ntype Resizable = {\n  position: number;\n  isDragging: boolean;\n  separatorProps: SeparatorProps;\n  handleClick: (e: React.MouseEvent | React.TouchEvent, isCollapsed: boolean) => void;\n};\ntype UseResizableProps = {\n  axis: \"x\" | \"y\";\n  containerRef?: React.RefObject<HTMLElement>;\n  disabled?: boolean;\n  initial?: number;\n  min?: number;\n  max?: number;\n  reverse?: boolean;\n};\n\nexport type ResizableProps = UseResizableProps & {\n  children: (props: Resizable) => JSX.Element;\n};\n\nconst useResizable = ({\n  axis,\n  disabled = false,\n  initial = 0,\n  min = 0,\n  max = Infinity,\n  reverse,\n  containerRef,\n}: UseResizableProps): Resizable => {\n  const isResizing = useRef(false);\n  const [isDragging, setIsDragging] = useState(false);\n  const [position, setPosition] = useState(Math.min(Math.max(initial, min), max));\n\n  const ariaProps = useMemo<SeparatorProps>(\n    () => ({\n      role: \"separator\",\n      \"aria-valuenow\": position,\n      \"aria-valuemin\": min,\n      \"aria-valuemax\": max,\n      \"aria-orientation\": axis === \"x\" ? \"vertical\" : \"horizontal\",\n      \"aria-disabled\": disabled,\n    }),\n    [axis, disabled, max, min, position],\n  );\n\n  const handleMove = useCallback(\n    (e: MouseEvent | TouchEvent) => {\n      if (!isResizing.current) return;\n      if (disabled) return;\n      e.stopPropagation();\n      e.preventDefault();\n      const currentPosition = (() => {\n        if (axis === \"x\") {\n          const x = e instanceof MouseEvent ? e.clientX : e.touches[0].clientX;\n          if (containerRef?.current) {\n            const containerNode = containerRef.current;\n            const { left, width } = containerNode.getBoundingClientRect();\n            return reverse ? left + width - x : x - left;\n          }\n          return reverse ? document.body.offsetWidth - x : x;\n        } else {\n          const y = e instanceof MouseEvent ? e.clientY : e.touches[0].clientY;\n          if (containerRef?.current) {\n            const containerNode = containerRef.current;\n            const { top, height } = containerNode.getBoundingClientRect();\n            return reverse ? top + height - y : y - top;\n          }\n          return reverse ? document.body.offsetHeight - y : y;\n        }\n      })();\n\n      if (min <= currentPosition && currentPosition <= max) {\n        setPosition(currentPosition);\n      }\n    },\n    [axis, disabled, max, min, reverse, containerRef],\n  );\n\n  const handleClick = useCallback(\n    (e: React.MouseEvent | React.TouchEvent, isCollapsed: boolean) => {\n      if (disabled) return;\n      e.stopPropagation();\n      e.preventDefault();\n      if (!isCollapsed) {\n        setPosition(4);\n      } else {\n        setPosition(min);\n      }\n    },\n    [disabled, min],\n  );\n\n  const handleUp = useCallback(\n    (e: MouseEvent | TouchEvent) => {\n      if (disabled) return;\n      e.stopPropagation();\n      isResizing.current = false;\n      setIsDragging(false);\n      document.removeEventListener(\"mousemove\", handleMove);\n      document.removeEventListener(\"touchmove\", handleMove);\n      document.removeEventListener(\"mouseup\", handleUp);\n      document.removeEventListener(\"touchend\", handleUp);\n    },\n    [disabled, handleMove],\n  );\n\n  const handleDown = useCallback<any>(\n    (e: React.MouseEvent | React.TouchEvent) => {\n      if (disabled) return;\n      e.stopPropagation();\n      isResizing.current = true;\n      setIsDragging(true);\n      document.addEventListener(\"mousemove\", handleMove);\n      document.addEventListener(\"touchmove\", handleMove);\n      document.addEventListener(\"mouseup\", handleUp);\n      document.addEventListener(\"touchend\", handleUp);\n    },\n    [disabled, handleMove, handleUp],\n  );\n  return {\n    position,\n    isDragging,\n    separatorProps: {\n      ...ariaProps,\n      onMouseDown: handleDown,\n      onTouchStart: handleDown,\n    },\n    handleClick,\n  };\n};\n\nexport default useResizable;\n"
  },
  {
    "path": "web/src/layouts/Auth/index.module.scss",
    "content": ".container {\n  height: 100vh;\n  width: 100vw;\n  background-image: url(\"@/assets/login_bg.svg\");\n  background-repeat: no-repeat;\n  background-position: left bottom;\n  background-size: 56%;\n}\n"
  },
  {
    "path": "web/src/layouts/Auth/index.tsx",
    "content": "import { useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Outlet } from \"react-router-dom\";\nimport { useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\nimport styles from \"./index.module.scss\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function LoginReg() {\n  const { t } = useTranslation();\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n  const { showInfo } = useGlobalStore(({ showInfo }) => ({ showInfo }));\n\n  useEffect(() => {\n    showInfo(\n      <a href=\"https://bja.sealos.run\" className=\"font-bold underline transition ease-in-out\">\n        {t(\"Auth.migrationNotice\")}\n      </a>,\n      null,\n      true,\n    );\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  return (\n    <div\n      className={clsx(styles.container, { \"bg-[#F5F6F8]\": !darkMode, \"bg-lafDark-300\": darkMode })}\n    >\n      <div className=\"absolute left-[104px] top-[80px]\">\n        <div\n          className={clsx(\"text-[36px]\", {\n            \"text-primary-600\": !darkMode,\n            \"text-primary-400\": darkMode,\n          })}\n        >\n          Welcome to Laf !\n        </div>\n        <div\n          className={clsx(\"text-[20px]\", {\n            \"text-frostyNightfall-700\": !darkMode,\n            \"text-grayModern-300\": darkMode,\n          })}\n        >\n          life is short, you need laf.\n        </div>\n      </div>\n      <Outlet />\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/layouts/Basic/RealNameWarn.tsx",
    "content": "import React, { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { WarningTwoIcon } from \"@chakra-ui/icons\";\nimport { useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport SettingModal from \"@/pages/app/setting\";\nimport useTabMatch from \"@/pages/app/setting/UserSetting/useTabMatch\";\nimport useGlobalStore from \"@/pages/globalStore\";\nimport useSiteSettingStore from \"@/pages/siteSetting\";\n\nexport default function Warn() {\n  const { t } = useTranslation();\n  const { userInfo, showError } = useGlobalStore((state) => state);\n  const [openModal, setOpenModal] = useState(false);\n  const { siteSettings } = useSiteSettingStore((state) => state);\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n\n  return (\n    <div\n      className={clsx(\n        \"absolute left-1/2 top-10 z-10 flex h-16 translate-x-[-50%] items-center justify-between rounded-lg px-4 text-lg drop-shadow-md\",\n        darkMode ? \"bg-gray-800\" : \"bg-white\",\n      )}\n    >\n      <span className=\"flex items-center pr-9\">\n        <WarningTwoIcon className=\"mr-2 !text-error-600\" />\n        <p dangerouslySetInnerHTML={{ __html: siteSettings.id_verify?.metadata.message }} />\n      </span>\n      <p\n        className=\"cursor-pointer font-semibold text-[#219BF4]\"\n        onClick={() => {\n          if (userInfo?.phone) {\n            const w = window.open(\"about:blank\");\n            w!.location.href = `${\n              siteSettings.id_verify?.metadata.authenticateSite\n            }?token=${localStorage.getItem(\"token\")}`;\n          } else {\n            showError(t(\"UserInfo.PleaseBindPhone\"));\n            setOpenModal(true);\n          }\n        }}\n      >\n        {t(\"UserInfo.GotoAuth\")}\n      </p>\n\n      <SettingModal\n        headerTitle={t(\"SettingPanel.UserCenter\")}\n        currentTab={\"user-info\"}\n        tabMatch={useTabMatch(\"user\")}\n        openModal={openModal}\n        setOpenModal={setOpenModal}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/layouts/Basic/index.tsx",
    "content": "import { useCallback, useEffect } from \"react\";\nimport { AiFillHeart } from \"react-icons/ai\";\nimport { Outlet } from \"react-router-dom\";\nimport { Center, Spinner } from \"@chakra-ui/react\";\n\nimport i18n from \"@/utils/i18n\";\n\nimport Warn from \"./RealNameWarn\";\n\nimport Header from \"@/layouts/Header\";\nimport useAuthStore from \"@/pages/auth/store\";\nimport useGlobalStore from \"@/pages/globalStore\";\nimport useSiteSettingStore from \"@/pages/siteSetting\";\n\nconst TOAST_KEY = \"sealafLastToastTime\";\nconst ONE_DAY_IN_MS = 24 * 60 * 60 * 1000; // 24 hours in milliseconds\n\nexport default function BasicLayout() {\n  const { init, loading, userInfo } = useGlobalStore((state) => state);\n  const { siteSettings } = useSiteSettingStore((state) => state);\n  const { showInfo } = useGlobalStore(({ showInfo }) => ({ showInfo }));\n  const { phoneProvider } = useAuthStore((state) => ({\n    phoneProvider: state.phoneProvider,\n  }));\n\n  useEffect(() => {\n    init();\n  }, [init]);\n\n  const showNotification = useCallback(() => {\n    const lastToastTime = localStorage.getItem(TOAST_KEY);\n    const now = new Date().getTime();\n\n    if (!lastToastTime || now - parseInt(lastToastTime) > ONE_DAY_IN_MS) {\n      const message =\n        i18n.language === \"zh\"\n          ? siteSettings?.sealaf_notification?.metadata?.message?.zh\n          : siteSettings?.sealaf_notification?.metadata?.message?.en;\n\n      showInfo(\n        <a\n          href={siteSettings?.sealaf_notification?.metadata?.gotoSite}\n          className=\"font-bold underline transition ease-in-out\"\n        >\n          {message}\n        </a>,\n        9000,\n        true,\n      );\n      localStorage.setItem(TOAST_KEY, now.toString());\n    }\n  }, [showInfo, siteSettings]);\n\n  useEffect(() => {\n    if (!loading && siteSettings?.sealaf_notification?.value === \"on\") {\n      showNotification();\n    }\n  }, [loading, siteSettings, showNotification]);\n\n  return (\n    <div>\n      <Header className=\"m-auto max-w-screen-xl\" />\n      <div className=\"pb-10\">\n        {loading ? (\n          <Center style={{ minHeight: 500 }}>\n            <Spinner />\n          </Center>\n        ) : (\n          <>\n            {siteSettings.id_verify?.value === \"on\" &&\n              !userInfo?.profile?.idVerified?.isVerified &&\n              phoneProvider && <Warn />}\n            <Outlet />\n          </>\n        )}\n      </div>\n      <div className=\"fixed bottom-0 -z-10 w-full py-4 text-center\">\n        Made with <AiFillHeart className=\"inline text-red-500\" /> by laf team\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/layouts/Function.tsx",
    "content": "import { useEffect } from \"react\";\nimport { Outlet, useParams } from \"react-router-dom\";\nimport { Badge, Center, Spinner, useColorMode } from \"@chakra-ui/react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\n\nimport { APP_PHASE_STATUS, APP_STATUS, COLOR_MODE, Pages } from \"@/constants/index\";\n\nimport { ApplicationControllerFindOne } from \"@/apis/v1/applications\";\nimport InitLog from \"@/pages/app/mods/StatusBar/LogsModal/InitLog\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function FunctionLayout() {\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n  const { init, loading, setCurrentApp, currentApp, setCurrentPage } = useGlobalStore(\n    (state) => state,\n  );\n\n  const params = useParams();\n\n  const { appid, pageId = Pages.function } = params;\n\n  useQuery(\n    [\"getAppDetailQuery\", appid],\n    () => {\n      return ApplicationControllerFindOne({ appid: appid });\n    },\n    {\n      enabled: !!appid,\n      refetchInterval:\n        (currentApp?.phase === APP_PHASE_STATUS.Started &&\n          currentApp?.state === APP_STATUS.Running) ||\n        (currentApp?.phase === APP_PHASE_STATUS.Stopped &&\n          currentApp?.state === APP_STATUS.Stopped) ||\n        currentApp?.state === APP_STATUS.Deleted\n          ? false\n          : 1000,\n      onSuccess(data) {\n        setCurrentApp(data?.data);\n      },\n    },\n  );\n\n  useEffect(() => {\n    if (currentApp?.appid) {\n      init();\n      setCurrentPage(pageId);\n    }\n  }, [currentApp, init, pageId, setCurrentPage]);\n\n  return (\n    <div\n      style={{\n        overflow: \"hidden\",\n        position: \"absolute\",\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n      }}\n    >\n      {loading || !currentApp?.appid ? (\n        <Center height={200}>\n          <Spinner />\n        </Center>\n      ) : (\n        <>\n          {currentApp.phase === APP_PHASE_STATUS.Starting &&\n          currentApp.state !== APP_STATUS.Restarting ? (\n            <InitLog />\n          ) : [\n              APP_PHASE_STATUS.Creating,\n              APP_PHASE_STATUS.Deleting,\n              APP_PHASE_STATUS.Stopping,\n            ].includes(currentApp.phase) || currentApp.state === APP_STATUS.Restarting ? (\n            <div\n              className={clsx(\n                \"absolute bottom-0 left-0 right-0 top-0 z-[999] flex flex-col items-center justify-center opacity-70\",\n                darkMode ? \"bg-lafDark-100\" : \"bg-lafWhite-600\",\n              )}\n            >\n              <Spinner\n                thickness=\"4px\"\n                speed=\"0.65s\"\n                emptyColor=\"gray.200\"\n                color=\"blue.500\"\n                size=\"xl\"\n              />\n              <Badge className=\"mt-4\">{currentApp.phase}...</Badge>\n            </div>\n          ) : null}\n          <Outlet />\n        </>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/layouts/Header/UserBalance/index.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\n\nimport ChargeButton from \"@/components/ChargeButton\";\nimport { formatPrice } from \"@/utils/format\";\n\nimport { useAccountQuery } from \"@/pages/home/service\";\n\nexport default function UserBalance() {\n  const { t } = useTranslation();\n  const { data: { data: balanceData = {} } = {} } = useAccountQuery();\n\n  return (\n    <div className=\"flex rounded-lg bg-primary-100 px-4 py-2 text-lg font-semibold text-primary-600\">\n      <span className=\"mr-2 whitespace-nowrap\">\n        {t(\"SettingPanel.Balance\") + \" \" + formatPrice(balanceData.balance)}\n      </span>\n      <span className=\"flex items-center text-base text-primary-400\">|</span>\n      <ChargeButton>\n        <span className=\"ml-2 cursor-pointer whitespace-nowrap font-semibold\">{t(\"Charge\")}</span>\n      </ChargeButton>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/layouts/Header/index.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { HStack, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport ColorModeSwitch from \"@/components/ColorModeSwitch\";\nimport { ChatIcon, DocIcon } from \"@/components/CommonIcon\";\nimport LanguageSwitch from \"@/components/LanguageSwitch\";\nimport { Logo, LogoText } from \"@/components/LogoIcon\";\nimport { COLOR_MODE, Routes } from \"@/constants\";\nimport { getAvatarUrl } from \"@/utils/getAvatarUrl\";\n\nimport UserSetting from \"../../pages/app/setting/UserSetting\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\nimport useSiteSettingStore from \"@/pages/siteSetting\";\n\nconst Header = (props: { className?: string }) => {\n  const { className } = props;\n  const { t } = useTranslation();\n  const { userInfo, avatarUpdatedAt } = useGlobalStore((state) => state);\n  const { siteSettings } = useSiteSettingStore();\n  const navigate = useNavigate();\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  const navList_left = [\n    { text: t(\"HomePage.NavBar.dashboard\"), ref: Routes.dashboard },\n    { text: t(\"HomePage.NavBar.funcTemplate\"), ref: Routes.templates },\n  ];\n  const navList_right = [\n    {\n      text: t(\"HomePage.NavBar.docs\"),\n      ref: siteSettings.laf_doc_url?.value,\n      icon: <DocIcon boxSize={5} />,\n    },\n    {\n      text: t(\"HomePage.NavBar.forum\"),\n      ref: siteSettings.laf_forum_url?.value,\n      icon: <ChatIcon boxSize={5} />,\n    },\n  ];\n\n  return (\n    <div\n      className={clsx(\n        \"flex h-[52px] w-full justify-between pl-8 pr-5 text-lg !font-medium\",\n        className,\n        darkMode ? \"\" : \"text-grayIron-700\",\n      )}\n    >\n      <HStack spacing={4}>\n        <span\n          className=\"mr-5 flex cursor-pointer items-center space-x-2.5\"\n          onClick={() => {\n            navigate(\"/\");\n          }}\n        >\n          <Logo size=\"28px\" innerColor=\"white\" outerColor=\"#00BAA4\" />\n          <LogoText size=\"35px\" color={darkMode ? \"#00BAA4\" : \"#021513\"} />\n        </span>\n\n        {navList_left.map((item) => {\n          return (\n            <span\n              key={item.text}\n              className={clsx(\n                \"cursor-pointer rounded px-2 py-1\",\n                darkMode ? \"hover:bg-grayIron-200/5\" : \"hover:bg-grayIron-700/5\",\n              )}\n              onClick={() => {\n                navigate(item.ref);\n              }}\n            >\n              {item.text}\n            </span>\n          );\n        })}\n      </HStack>\n\n      <HStack spacing={4}>\n        {navList_right.map((item) => {\n          if (!item.ref) return null;\n          return (\n            <span\n              key={item.text}\n              className={clsx(\n                \"flex cursor-pointer items-center space-x-2 rounded px-2 py-1\",\n                darkMode ? \"hover:bg-grayIron-200/5\" : \"hover:bg-grayIron-700/5\",\n              )}\n              onClick={() => {\n                window.open(item.ref);\n              }}\n            >\n              {item.icon}\n              <p>{item.text}</p>\n            </span>\n          );\n        })}\n        <LanguageSwitch\n          className={darkMode ? \"hover:bg-grayIron-200/5\" : \"hover:bg-grayIron-700/5\"}\n        />\n        <ColorModeSwitch\n          className={clsx(\n            \"ml-4 mr-6 rounded p-2\",\n            darkMode ? \"hover:bg-grayIron-200/5\" : \"hover:bg-grayIron-700/5\",\n          )}\n        />\n        {userInfo?._id ? (\n          <span className=\"!ml-6\">\n            <UserSetting\n              name={userInfo?.username!}\n              avatar={getAvatarUrl(userInfo?._id, avatarUpdatedAt)}\n              width=\"2rem\"\n            />\n          </span>\n        ) : null}\n      </HStack>\n    </div>\n  );\n};\n\nexport default Header;\n"
  },
  {
    "path": "web/src/layouts/Template.tsx",
    "content": "import React, { useEffect } from \"react\";\nimport { Outlet } from \"react-router-dom\";\nimport { useColorMode } from \"@chakra-ui/react\";\nimport { Center, Spinner } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport Header from \"./Header\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function TemplateLayout() {\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n\n  const { init, loading } = useGlobalStore((state) => state);\n  useEffect(() => {\n    init();\n  }, [init]);\n\n  return (\n    <>\n      <div\n        className={clsx(\n          \"sticky top-0 z-50 flex justify-center\",\n          darkMode ? \"bg-[#1A202C]\" : \"border-b border-[#E4E9EE] bg-[#F8FAFB]\",\n        )}\n      >\n        <Header className=\"max-w-screen-xl\" />\n      </div>\n      <div className=\"overflow-auto\">\n        <div\n          className={clsx(\"fixed bottom-0 left-0 right-0 top-0 -z-40\", !darkMode && \"bg-white\")}\n        ></div>\n\n        <div className=\"flex justify-center\">\n          <div className=\"w-full max-w-screen-xl\">\n            {loading ? (\n              <Center style={{ minHeight: 300 }}>\n                <Spinner />\n              </Center>\n            ) : (\n              <Outlet />\n            )}\n          </div>\n        </div>\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/main.tsx",
    "content": "import React, { useEffect } from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport {\n  createRoutesFromChildren,\n  matchRoutes,\n  useLocation,\n  useNavigationType,\n} from \"react-router-dom\";\nimport * as Sentry from \"@sentry/react\";\n\nimport \"focus-visible/dist/focus-visible\";\n\nimport App from \"./App\";\n\nif ([\"laf.run\", \"laf.dev\"].includes(window.location.hostname)) {\n  const commitId = import.meta.env.VITE_GITHUB_SHA;\n\n  Sentry.init({\n    dsn: import.meta.env.VITE_SENTRY_DSN,\n    release: `laf@${commitId}`,\n    integrations: [\n      new Sentry.BrowserTracing({\n        routingInstrumentation: Sentry.reactRouterV6Instrumentation(\n          useEffect,\n          useLocation,\n          useNavigationType,\n          createRoutesFromChildren,\n          matchRoutes,\n        ),\n      }),\n      new Sentry.Replay(),\n      // new HttpClient(),\n    ],\n    // Performance Monitoring\n    tracesSampleRate: 1.0,\n    // Session Replay\n    replaysSessionSampleRate: 0.1,\n    replaysOnErrorSampleRate: 1.0,\n  });\n}\n\n// polyfill for aws-sdk\nif (typeof (window as any).global === \"undefined\") {\n  (window as any).global = window;\n}\n\nReactDOM.createRoot(document.getElementById(\"root\") as HTMLElement).render(<App />);\n"
  },
  {
    "path": "web/src/pages/403.tsx",
    "content": "import { useNavigate } from \"react-router-dom\";\nimport { ArrowForwardIcon } from \"@chakra-ui/icons\";\nimport { Button, Center, HStack } from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { Routes } from \"@/constants\";\n\nexport default function Index() {\n  const navigate = useNavigate();\n  return (\n    <div className=\" h-screen bg-white\">\n      <Center h=\"80vh\" w=\"80vw\" className=\"m-auto flex-col !items-start\">\n        <h1 style={{ fontSize: 38 }}>403</h1>\n        <p className=\"mb-8 font-semibold\" style={{ fontSize: 50 }}>\n          {t(`403Message`)}\n        </p>\n        <HStack spacing={6}>\n          <Button\n            rightIcon={<ArrowForwardIcon />}\n            size={\"lg\"}\n            onClick={() => navigate(Routes.dashboard, { replace: true })}\n          >\n            {t(\"Take me home\")}\n          </Button>\n        </HStack>\n      </Center>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/404.tsx",
    "content": "import { useNavigate } from \"react-router-dom\";\nimport { ArrowForwardIcon } from \"@chakra-ui/icons\";\nimport { Button, Center, HStack } from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { Routes } from \"@/constants\";\n\nexport default function Index() {\n  const navigate = useNavigate();\n  return (\n    <div className=\" h-screen bg-white\">\n      <Center h=\"80vh\" w=\"80vw\" className=\"m-auto flex-col !items-start\">\n        <h1 style={{ fontSize: 38 }}>404</h1>\n        <p className=\"mb-8 font-semibold\" style={{ fontSize: 60 }}>\n          {t(`404Message`)}\n        </p>\n        <HStack spacing={6}>\n          <Button\n            rightIcon={<ArrowForwardIcon />}\n            size={\"lg\"}\n            onClick={() => navigate(Routes.dashboard, { replace: true })}\n          >\n            {t(\"Take me home\")}\n          </Button>\n        </HStack>\n      </Center>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/collaboration/CollaborateButton/index.tsx",
    "content": "import { useState } from \"react\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { CopyIcon, LinkIcon } from \"@chakra-ui/icons\";\nimport {\n  Avatar,\n  Button,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  useColorMode,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\n\nimport { CollaborateIcon } from \"@/components/CommonIcon\";\nimport CopyText from \"@/components/CopyText\";\nimport MoreButton from \"@/components/MoreButton\";\nimport { COLOR_MODE } from \"@/constants\";\nimport { getAvatarUrl } from \"@/utils/getAvatarUrl\";\n\nimport useFunctionStore from \"../../functions/store\";\nimport {\n  useGroupCodeQuery,\n  useGroupInviteCodeDeleteMutation,\n  useGroupInviteCodeGenerateMutation,\n  useGroupInviteCodeQuery,\n  useGroupMemberLeaveMutation,\n  useGroupMemberRemoveMutation,\n  useGroupMembersQuery,\n} from \"../service\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype TMember = {\n  _id: string;\n  uid: string;\n  groupId: string;\n  username: string;\n  role: string;\n  code?: string;\n};\n\ntype TMemberItemProps = \"admin\" | \"developer\" | \"owner\";\n\nexport default function CollaborateButton() {\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { t } = useTranslation();\n  const store = useFunctionStore((state) => state);\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n  const [memberList, setMemberList] = useState<TMember[]>([]);\n  const [codeList, setCodeList] = useState<TMember[]>([]);\n  const [groupId, setGroupId] = useState(\"\");\n  const memberType: TMemberItemProps = \"developer\";\n  const navigate = useNavigate();\n\n  const generateInviteCode = useGroupInviteCodeGenerateMutation();\n  const deleteInviteCode = useGroupInviteCodeDeleteMutation();\n  const removeMember = useGroupMemberRemoveMutation();\n  const leaveGroup = useGroupMemberLeaveMutation();\n\n  const queryClient = useQueryClient();\n  const { showSuccess, currentApp, userInfo } = useGlobalStore();\n\n  const isOwner = () => {\n    return currentApp.createdBy === userInfo?._id;\n  };\n\n  useGroupCodeQuery({\n    onSuccess: (data) => {\n      setGroupId(data.data._id);\n    },\n  });\n\n  useGroupMembersQuery(\n    {\n      groupId,\n    },\n    {\n      enabled: !!groupId,\n      onSuccess: (data) => {\n        setMemberList(data.data);\n      },\n    },\n  );\n\n  useGroupInviteCodeQuery(\n    {\n      groupId,\n    },\n    {\n      enabled: isOpen && isOwner(),\n      onSuccess: (data) => {\n        setCodeList(data.data);\n      },\n    },\n  );\n\n  return (\n    <>\n      <Button\n        rounded={\"full\"}\n        size={\"xs\"}\n        textColor={\"#219BF4\"}\n        bg={\"rgba(54, 173, 239, 0.10)\"}\n        px={3}\n        _hover={{\n          bg: \"#AFDEF9\",\n        }}\n        disabled={store.getFunctionUrl() === \"\"}\n        onClick={() => {\n          onOpen();\n        }}\n        leftIcon={<CollaborateIcon />}\n      >\n        <Trans\n          t={t}\n          i18nKey=\"Collaborate.Invite\"\n          values={{\n            number: memberList.length,\n          }}\n        />\n      </Button>\n      <Modal isOpen={isOpen} onClose={onClose}>\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>\n            <span>{isOwner() ? t(\"Collaborate.InviteMembers\") : t(\"Collaborate.Members\")}</span>\n            <ModalCloseButton />\n          </ModalHeader>\n          <ModalBody>\n            {isOwner() && (\n              <>\n                <div className=\"flex justify-center border-b pb-5\">\n                  <div\n                    className={clsx(\n                      \"mr-2 flex w-36 items-center justify-center rounded-lg border border-grayModern-200\",\n                      darkMode ? \"\" : \"bg-[#F4F6F8]\",\n                    )}\n                  >\n                    {memberType.charAt(0).toUpperCase() + memberType.slice(1)}\n                    {/* <ChevronDownIcon className=\"ml-1\" /> */}\n                  </div>\n                  <Button\n                    className=\"!rounded-lg !px-20 !text-lg !font-medium\"\n                    leftIcon={<LinkIcon />}\n                    onClick={async () => {\n                      const res = await generateInviteCode.mutateAsync({\n                        groupId,\n                        role: memberType,\n                      });\n\n                      if (!res.error) {\n                        showSuccess(t(\"Collaborate.GenerateInvitationLinkSuccess\"));\n                      }\n                      queryClient.invalidateQueries([\"useGroupInviteCodeQuery\"]);\n                    }}\n                  >\n                    {t(\"Collaborate.GenerateInvitationLink\")}\n                  </Button>\n                </div>\n                <div className=\"mt-5\">\n                  <span className=\"text-xl font-medium\">{t(\"Collaborate.Members\")}</span>\n                </div>\n              </>\n            )}\n            <div className=\"max-h-[300px] min-h-[150px] overflow-auto\">\n              {[...memberList, ...(codeList || [])].map((member) => (\n                <div\n                  key={member.uid || member._id}\n                  className=\"mt-4 flex items-center justify-between text-lg\"\n                >\n                  <span className=\"flex items-center\">\n                    {!!member.uid ? (\n                      <Avatar\n                        boxSize=\"32px\"\n                        border={\"2px solid #DEE0E2\"}\n                        mr=\"2\"\n                        name={member.username}\n                        bgColor=\"primary.500\"\n                        color=\"white\"\n                        src={getAvatarUrl(member.uid)}\n                      />\n                    ) : (\n                      <div className=\"mr-2 h-8 w-8 rounded-full border-2 border-dashed border-grayModern-300\" />\n                    )}\n                    <p>{!member.username ? member.code : member.username}</p>\n                  </span>\n                  <span className=\"flex items-center\">\n                    {member.username ? (\n                      <>\n                        <p\n                          className={clsx(\n                            \"mr-4 rounded-lg px-2 py-1\",\n                            member.role === \"owner\" && \"bg-adora-100 text-adora-600\",\n                            member.role === \"admin\" && \"bg-blue-100 text-[#219BF4]\",\n                            member.role === \"developer\" && \"bg-primary-100 text-primary-600\",\n                          )}\n                        >\n                          {member.role}\n                        </p>\n                        {/* <ChevronDownIcon className=\"mr-5 cursor-pointer\" /> */}\n                      </>\n                    ) : (\n                      <CopyText\n                        text={window.location.origin + \"/collaboration/join?code=\" + member.code}\n                        className=\"mr-4 cursor-pointer text-[#219BF4]\"\n                      >\n                        <span>\n                          <CopyIcon className=\"mr-2\" />\n                          {t(\"Collaborate.CopyLink\")}\n                        </span>\n                      </CopyText>\n                    )}\n\n                    <MoreButton\n                      isHidden={!isOwner() && !(member.uid === userInfo?._id)}\n                      label={t(\"Operation\")}\n                      className=\"!w-[60px] !px-0\"\n                    >\n                      <div\n                        className={clsx(\n                          \"text-[12px]\",\n                          isOwner() && member.uid === userInfo?._id\n                            ? \"pointer-events-none  text-grayModern-200\"\n                            : \"cursor-pointer text-error-500 hover:text-error-600\",\n                        )}\n                        onClick={async () => {\n                          if (!isOwner() && member.uid === userInfo?._id) {\n                            const res = await leaveGroup.mutateAsync({\n                              groupId,\n                            });\n\n                            if (!res.error) {\n                              showSuccess(t(\"Collaborate.QuitSuccess\"));\n                              navigate(\"/dashboard\");\n                            }\n                          } else if (member.code) {\n                            const res = await deleteInviteCode.mutateAsync({\n                              groupId,\n                              code: member.code,\n                            });\n\n                            if (!res.error) {\n                              showSuccess(t(\"Collaborate.DeleteLinkSuccess\"));\n                              queryClient.invalidateQueries([\"useGroupInviteCodeQuery\"]);\n                            }\n                          } else {\n                            const res = await removeMember.mutateAsync({\n                              groupId,\n                              userId: member.uid,\n                            });\n\n                            if (!res.error) {\n                              showSuccess(t(\"Collaborate.RemoveSuccess\"));\n                              queryClient.invalidateQueries([\"useGroupMembersQuery\"]);\n                            }\n                          }\n                        }}\n                      >\n                        {!isOwner() && member.uid === userInfo?._id\n                          ? t(\"Collaborate.Quit\")\n                          : member.username\n                          ? t(\"Collaborate.Remove\")\n                          : t(\"Collaborate.Revoke\")}\n                      </div>\n                    </MoreButton>\n                  </span>\n                </div>\n              ))}\n            </div>\n          </ModalBody>\n          <ModalFooter></ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/collaboration/Invited/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Button, Spinner } from \"@chakra-ui/react\";\nimport { useQuery } from \"@tanstack/react-query\";\n\nimport { useGroupMemberAddMutation, useGroupQueryByCode } from \"../service\";\n\nimport { Icon, Text } from \"./logo_invite\";\n\nimport { ApplicationControllerFindAll } from \"@/apis/v1/applications\";\nimport useGlobalStore from \"@/pages/globalStore\";\nimport { APP_LIST_QUERY_KEY } from \"@/pages/home\";\n\nexport default function Invited() {\n  const { t } = useTranslation();\n  const navigate = useNavigate();\n\n  const joinGroupMutation = useGroupMemberAddMutation();\n\n  const [code, setCode] = useState(\"\");\n  const { showSuccess } = useGlobalStore();\n\n  const { data: groupData, isLoading } = useGroupQueryByCode(\n    { code },\n    {\n      enabled: !!code,\n      onSuccess(data) {\n        if (data.statusCode === 404) {\n          navigate(\"/404\");\n          return;\n        }\n        sessionStorage.setItem(\n          \"collaborationCode\",\n          JSON.stringify({ code: code, appid: data?.data?.group?.appid }),\n        );\n      },\n    },\n  );\n\n  useQuery(\n    APP_LIST_QUERY_KEY,\n    () => {\n      return ApplicationControllerFindAll({});\n    },\n    {\n      enabled: !!groupData && !!localStorage.getItem(\"token\"),\n      onSuccess(data) {\n        if (data.data.find((item: any) => item.appid === groupData?.data?.group?.appid)) {\n          sessionStorage.removeItem(\"collaborationCode\");\n          navigate(`/app/${groupData?.data?.group?.appid}/function`);\n          return;\n        }\n      },\n    },\n  );\n\n  useEffect(() => {\n    let code = new URLSearchParams(window.location.search).get(\"code\");\n    if (code) {\n      setCode(code);\n    } else {\n      navigate(\"/404\");\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  return (\n    <div className=\"flex h-screen w-full items-center justify-center\">\n      {isLoading ? (\n        <Spinner />\n      ) : (\n        <div className=\"w-[590px]\">\n          <div className=\"flex h-16 items-center justify-center rounded-t-2xl bg-primary-600\">\n            <span className=\"pr-3\">\n              <Icon />\n            </span>\n            <Text />\n          </div>\n          <div className=\"flex h-[424px] flex-col items-center justify-center rounded-b-2xl bg-white\">\n            <span className=\"text-[30px] font-semibold text-[#262A32]\">\n              {t(\"Collaborate.Invitation\")}\n            </span>\n            <span className=\"w-[332px] text-clip pt-10 text-center text-xl text-[#262A32]\">\n              <Trans\n                t={t}\n                i18nKey=\"Collaborate.InvitationContent\"\n                values={{\n                  userName: groupData?.data?.invitedBy?.username || \"\",\n                  appName: groupData?.data?.group?.name || \"\",\n                  appid: groupData?.data?.group?.appid || \"\",\n                  role: groupData?.data?.role || \"\",\n                }}\n              />\n            </span>\n            <Button\n              className=\"mt-20 !h-9 w-[360px]\"\n              onClick={async () => {\n                const res = await joinGroupMutation.mutateAsync({ code });\n                if (!res.error) {\n                  showSuccess(t(\"Collaborate.JoinSuccess\"));\n                }\n                navigate(`/app/${groupData?.data?.group?.appid}/function`);\n              }}\n            >\n              {t(\"Collaborate.Accept\")}\n            </Button>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/collaboration/Invited/logo_invite.tsx",
    "content": "import React from \"react\";\n\nexport const Icon = () => {\n  return (\n    <svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <rect width=\"30\" height=\"30.0001\" rx=\"15\" fill=\"white\" />\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M4.35577 11.9952L3.23828 13.1108L9.94324 19.8044C12.4119 22.269 16.4145 22.269 18.8832 19.8044L11.0607 11.9952C9.20921 10.1468 6.2073 10.1468 4.35577 11.9952ZM16.6482 13.1108L15.5307 14.2264L20.0007 18.6888C20.0007 18.6888 22.4304 16.7588 23.5343 15.1477C24.0948 14.3296 24.7689 12.9291 24.7689 12.9291C23.876 13.0437 23.0054 12.6865 22.2088 12.2678C20.4191 11.3271 18.1535 11.6081 16.6482 13.1108Z\"\n        fill=\"#00A9A6\"\n      />\n    </svg>\n  );\n};\n\nexport const Text = () => {\n  return (\n    <svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g clipPath=\"url(#clip0_8740_9556)\">\n        <path\n          d=\"M13.9796 26.6569H5.36255C3.95232 26.6569 2.78934 26.1441 1.8736 25.1185C0.957867 24.0928 0.5 22.8474 0.5 21.3822V9.15674H1.09473C3.70971 9.15674 5.82957 11.2767 5.82957 13.8917V19.1569C5.82957 20.1459 5.91199 20.7961 6.07682 21.1074C6.25997 21.4188 6.69952 21.5745 7.39548 21.5745H9.99623C10.5024 21.5745 10.9234 21.9744 11.0216 22.471C11.1407 23.0729 11.3752 23.8784 11.8333 24.5656C12.6918 25.8534 13.9796 26.6569 13.9796 26.6569Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M20.7404 21.7943V26.6569L19.0921 26.7668C17.224 26.7668 15.6947 26.1899 14.5043 25.0361C13.3138 23.8639 12.7186 22.2979 12.7186 20.3382C12.7186 18.2869 13.3871 16.6751 14.7241 15.503C15.9695 14.4224 17.5995 13.8821 19.6141 13.8821C21.8302 13.8821 23.5884 14.6422 24.8887 16.1623C26.0609 17.536 26.6469 19.1477 26.6469 20.9975V26.6569H21.5371V20.3382C21.5371 19.7704 21.3448 19.3309 20.9602 19.0195C20.5939 18.7081 20.1452 18.5525 19.6141 18.5525C19.1379 18.5525 18.7075 18.6898 18.3229 18.9646C17.9566 19.2393 17.7735 19.6331 17.7735 20.1459C17.7735 20.7686 17.92 21.2631 18.213 21.6294C18.5244 21.9957 18.9273 22.1789 19.4218 22.1789C19.843 22.1789 20.2826 22.0507 20.7404 21.7943Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M26.9494 29.2325C26.9494 29.2325 27.9961 29.1208 28.6664 26.6569C29.9337 21.9983 27.8079 15.7594 27.8079 14.2942C27.8079 12.8289 28.3573 11.611 29.4562 10.6403C30.5734 9.65125 32.0569 9.15674 33.9067 9.15674H38V14.1019H35.3077C34.5019 14.1019 33.9616 14.2392 33.6869 14.5139C33.6136 14.6055 33.5495 14.7337 33.4946 14.8986C33.3847 15.2099 33.3297 15.5945 33.3297 16.0524H38V20.6129H33.3297C33.3297 20.6129 33.782 24.33 33.3297 26.6398C32.9782 28.4352 31.5484 29.2325 29.7189 29.2325H26.9494Z\"\n          fill=\"white\"\n        />\n      </g>\n      <defs>\n        <clipPath id=\"clip0_8740_9556\">\n          <rect width=\"37.5\" height=\"37.5001\" fill=\"white\" transform=\"translate(0.5 0.25)\" />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "web/src/pages/app/collaboration/service.ts",
    "content": "import { useMutation, useQuery } from \"@tanstack/react-query\";\n\nimport {\n  GroupControllerFindGroupByAppId,\n  GroupControllerFindGroupByInviteCode,\n  GroupInviteControllerDeleteInviteCode,\n  GroupInviteControllerGenerateInviteCode,\n  GroupInviteControllerGetInviteCode,\n  GroupMemberControllerAddMember,\n  GroupMemberControllerFindMembers,\n  GroupMemberControllerLeaveGroup,\n  GroupMemberControllerRemoveMember,\n  GroupMemberControllerUpdateMemberRole,\n} from \"@/apis/v1/group\";\n\nexport const useGroupQueryByCode = (\n  params?: any,\n  config?: { onSuccess?: (data: any) => void; enabled?: boolean },\n) => {\n  return useQuery(\n    [\"useGroupQueryByCode\"],\n    () => {\n      return GroupControllerFindGroupByInviteCode(params);\n    },\n    {\n      enabled: config?.enabled,\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useGroupCodeQuery = (config?: {\n  onSuccess?: (data: any) => void;\n  enabled?: boolean;\n}) => {\n  return useQuery(\n    [\"useGroupCodeQuery\"],\n    () => {\n      return GroupControllerFindGroupByAppId({});\n    },\n    {\n      enabled: config?.enabled,\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useGroupInviteCodeQuery = (\n  params?: any,\n  config?: { onSuccess?: (data: any) => void; enabled?: boolean },\n) => {\n  return useQuery(\n    [\"useGroupInviteCodeQuery\"],\n    () => {\n      return GroupInviteControllerGetInviteCode(params);\n    },\n    {\n      enabled: config?.enabled,\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useGroupInviteCodeGenerateMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return GroupInviteControllerGenerateInviteCode(values);\n    },\n    {\n      onSuccess: (data) => {\n        console.log(data);\n      },\n    },\n  );\n};\n\nexport const useGroupInviteCodeDeleteMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return GroupInviteControllerDeleteInviteCode(values);\n    },\n    {\n      onSuccess: (data) => {\n        console.log(data);\n      },\n    },\n  );\n};\n\nexport const useGroupMembersQuery = (\n  params?: any,\n  config?: { onSuccess?: (data: any) => void; enabled?: boolean },\n) => {\n  return useQuery(\n    [\"useGroupMembersQuery\"],\n    () => {\n      return GroupMemberControllerFindMembers(params);\n    },\n    {\n      enabled: config?.enabled,\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useGroupMemberAddMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return GroupMemberControllerAddMember(values);\n    },\n    {\n      onSuccess: (data) => {\n        console.log(data);\n      },\n    },\n  );\n};\n\nexport const useGroupMemberRemoveMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return GroupMemberControllerRemoveMember(values);\n    },\n    {\n      onSuccess: (data) => {\n        console.log(data);\n      },\n    },\n  );\n};\n\nexport const useGroupMemberUpdateMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return GroupMemberControllerUpdateMemberRole(values);\n    },\n    {\n      onSuccess: (data) => {\n        console.log(data);\n      },\n    },\n  );\n};\n\nexport const useGroupMemberLeaveMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return GroupMemberControllerLeaveGroup(values);\n    },\n    {\n      onSuccess: (data) => {\n        console.log(data);\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/app/database/BottomPanel/index.tsx",
    "content": "import { Button, HStack } from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport Panel from \"@/components/Panel\";\n\nimport useCustomSettingStore from \"@/pages/customSetting\";\n\nfunction BottomPanel() {\n  const store = useCustomSettingStore();\n\n  return (\n    <Panel className=\" !flex-row justify-between\">\n      <HStack spacing={2}>\n        <Button\n          size=\"xs\"\n          variant=\"plain\"\n          onClick={() => store.togglePanel(\"collectionPage\", \"PolicyPanel\")}\n        >\n          {t(\"CollectionPanel.Policy\")}\n        </Button>\n      </HStack>\n    </Panel>\n  );\n}\n\nexport default BottomPanel;\n"
  },
  {
    "path": "web/src/pages/app/database/CollectionDataList/index.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\n\nimport EmptyBox from \"@/components/EmptyBox\";\n\nimport CreateCollectionModal from \"../mods/CreateCollectionModal\";\nimport useDBMStore from \"../store\";\n\nimport DataPanel from \"./mods/DataPanel\";\n\nexport default function CollectionDataList() {\n  const { t } = useTranslation();\n  const store = useDBMStore((state) => state);\n  return (\n    <>\n      {store.currentDB === undefined ? (\n        <EmptyBox>\n          <div>\n            {t(\"CollectionPanel.EmptyCollectionText\")}\n            <CreateCollectionModal>\n              <span className=\"ml-2 cursor-pointer text-primary-600 hover:border-b-2 hover:border-primary-600\">\n                {t(\"CreateNow\")}\n              </span>\n            </CreateCollectionModal>\n          </div>\n        </EmptyBox>\n      ) : (\n        <DataPanel />\n      )}\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/database/CollectionDataList/mods/ColPanel/index.tsx",
    "content": "import { Button } from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport JSONEditor from \"@/components/Editor/JSONEditor\";\nexport default function ColPanel() {\n  return (\n    <div className=\"group  relative h-full\">\n      <div className=\"mb-2 flex justify-end\">\n        <Button size={\"sm\"} px=\"5\" colorScheme=\"primary\">\n          {t(\"Save\")}\n        </Button>\n      </div>\n      <div className=\"absolute bottom-0 left-0 right-0 top-12 rounded border p-2\">\n        <JSONEditor value={JSON.stringify({ name: \"hello\" })} />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/database/CollectionDataList/mods/DataPanel/index.module.scss",
    "content": ".simplebar-scrollbar::before {\n  background: #7b838b;\n  width: 4px;\n  transform: translateX(100%);\n}\n"
  },
  {
    "path": "web/src/pages/app/database/CollectionDataList/mods/DataPanel/index.tsx",
    "content": "import { useEffect, useMemo, useState } from \"react\";\nimport { AddIcon, LinkIcon, Search2Icon } from \"@chakra-ui/icons\";\nimport {\n  Button,\n  HStack,\n  Input,\n  InputGroup,\n  InputLeftElement,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport { EJSON } from \"bson\";\nimport { t } from \"i18next\";\nimport { throttle } from \"lodash\";\n\nimport { OutlineCopyIcon, RefreshIcon } from \"@/components/CommonIcon\";\nimport CopyText from \"@/components/CopyText\";\nimport JSONEditor from \"@/components/Editor/JSONEditor\";\nimport JSONViewer from \"@/components/Editor/JSONViewer\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport IconWrap from \"@/components/IconWrap\";\nimport Pagination from \"@/components/Pagination\";\nimport Panel from \"@/components/Panel\";\nimport { COLOR_MODE } from \"@/constants\";\nimport getPageInfo from \"@/utils/getPageInfo\";\n\nimport AddDataModal from \"../../../mods/AddDataModal/index\";\nimport IndexModal from \"../../../mods/IndexModal\";\nimport RightPanelEditBox from \"../../../RightComponent/EditBox\";\nimport RightPanelList from \"../../../RightComponent/List\";\nimport { useDeleteDataMutation, useEntryDataQuery, useUpdateDataMutation } from \"../../../service\";\nimport useDBMStore from \"../../../store\";\n\nimport \"./index.module.scss\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nfunction stringifyEJSONAndFormat(data: any) {\n  // get stringified EJSON\n  const ejson = EJSON.stringify(data);\n\n  // parse ejson string to json object\n  const parsed = JSON.parse(ejson);\n\n  // format json object\n  const formatted = JSON.stringify(parsed, null, 2);\n\n  return formatted;\n}\n\nexport default function DataPanel() {\n  const [currentData, setCurrentData] = useState<any>({ data: undefined, record: \"{}\" });\n  const globalStore = useGlobalStore();\n  const [search, setSearch] = useState(\"\");\n  const [isAdd, setIsAdd] = useState({ status: false, count: 0 });\n  const store = useDBMStore((state) => state);\n  const { colorMode } = useColorMode();\n  type QueryData = {\n    _id: string;\n    page: number;\n    pageSize?: number;\n    total?: number;\n  };\n\n  const [queryData, setQueryData] = useState<QueryData>();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  useEffect(() => {\n    if (store.currentDB !== undefined) {\n      setQueryData((pre: any) => {\n        return {\n          ...pre,\n          page: 1,\n        };\n      });\n      setCurrentData({\n        data: undefined,\n        record: \"{}\",\n      });\n    }\n  }, [store.currentDB, setCurrentData]);\n\n  const entryDataQuery = useEntryDataQuery({ ...queryData }, (data: any) => {});\n  const updateDataMutation = useUpdateDataMutation();\n  const deleteDataMutation = useDeleteDataMutation({\n    onSuccess() {\n      setCurrentData({\n        data: undefined,\n        record: \"{}\",\n      });\n    },\n  });\n\n  useEffect(() => {\n    if (entryDataQuery.isFetched && isAdd.status) {\n      const { total, page, pageSize } = getPageInfo(entryDataQuery.data as any);\n      const newTotal = (total || 0) + isAdd.count;\n      const maxPage = pageSize ? Math.ceil(newTotal / pageSize) : -1;\n      // Calculate and jump to the maxPage after adding\n      if (maxPage > 0 && page !== maxPage) {\n        setQueryData((pre: any) => {\n          const newQuery = { ...pre, page: maxPage };\n          return newQuery;\n        });\n      }\n      setIsAdd({ status: false, count: 0 });\n    }\n  }, [entryDataQuery, isAdd]);\n\n  useEffect(() => {\n    if (entryDataQuery.isFetched) {\n      const data = entryDataQuery?.data?.list || [];\n      if (data?.length > 0 && currentData.data === undefined) {\n        setCurrentData({\n          data: data[0],\n          record: JSON.stringify(data[0]),\n        });\n      } else if (data?.length === 0) {\n        setCurrentData({\n          data: undefined,\n          record: \"{}\",\n        });\n      } else {\n        const newData = data.filter((item: any) => item._id === currentData.data._id)[0];\n        setCurrentData({\n          data: newData,\n          record: JSON.stringify(newData),\n        });\n      }\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [entryDataQuery?.data?.list]);\n\n  const refresh = useMemo(\n    () =>\n      throttle((data: string) => {\n        setQueryData((pre: any) => {\n          return {\n            ...pre,\n            _id: data,\n          };\n        });\n        entryDataQuery.refetch();\n        globalStore.showSuccess(t(\"RefreshDataSuccess\"));\n      }, 1000),\n    [setQueryData, entryDataQuery, globalStore],\n  );\n\n  const handleData = async () => {\n    let params = {};\n    try {\n      params = EJSON.parse(currentData.record) as any;\n      if (Object.keys(params).length === 0) {\n        globalStore.showError(t(\"DataEntry.CreateError\"));\n        return;\n      }\n      await updateDataMutation.mutateAsync(params);\n    } catch (error) {\n      globalStore.showError(error?.toString());\n      return;\n    }\n  };\n\n  return (\n    <>\n      <Panel.Header className=\"my-1 flex-shrink-0\">\n        <div className=\"flex flex-1 items-center\">\n          <AddDataModal\n            schema={currentData.data ? currentData.data : {}}\n            onSuccessSubmit={(id: string, count: number) => {\n              setIsAdd({\n                status: true,\n                count,\n              });\n              setCurrentData((pre: any) => {\n                return {\n                  ...pre,\n                  data: { _id: id },\n                };\n              });\n            }}\n          >\n            <Button\n              size=\"xs\"\n              variant=\"textGhost\"\n              leftIcon={<AddIcon fontSize={10} className=\"text-grayModern-500\" />}\n              disabled={!store.currentDB}\n              isLoading={entryDataQuery.isFetching}\n              className=\"mr-2 font-bold\"\n            >\n              {t(\"CollectionPanel.AddData\")}\n            </Button>\n          </AddDataModal>\n\n          <Button\n            size=\"xs\"\n            variant=\"textGhost\"\n            disabled={!store.currentDB}\n            className=\"mr-2\"\n            isLoading={entryDataQuery.isFetching}\n            leftIcon={<RefreshIcon fontSize={16} />}\n            onClick={() => refresh(search)}\n          >\n            {t(\"RefreshData\")}\n          </Button>\n          <IndexModal>\n            <Button\n              size=\"xs\"\n              variant=\"textGhost\"\n              disabled={!store.currentDB}\n              className=\"mr-2\"\n              isLoading={entryDataQuery.isFetching}\n              leftIcon={<LinkIcon fontSize={10} />}\n            >\n              {t(\"CollectionPanel.IndexManage\")}\n            </Button>\n          </IndexModal>\n          <form\n            className=\"flex flex-1\"\n            onSubmit={(event) => {\n              event?.preventDefault();\n              refresh(search);\n            }}\n          >\n            <div className=\"my-4 flex flex-1 justify-between\">\n              <HStack spacing={2} className=\"flex flex-1\">\n                <InputGroup className=\"mr-4 flex-1\">\n                  <InputLeftElement\n                    height=\"7\"\n                    pointerEvents=\"none\"\n                    children={<Search2Icon color=\"gray.300\" />}\n                  />\n                  <Input\n                    rounded=\"full\"\n                    disabled={store.currentDB === undefined}\n                    placeholder={t(\"CollectionPanel.Query\").toString()}\n                    size=\"sm\"\n                    height=\"7\"\n                    value={search}\n                    onChange={(e) => setSearch(e.target.value)}\n                  />\n                </InputGroup>\n              </HStack>\n            </div>\n          </form>\n        </div>\n        <Pagination\n          values={getPageInfo(entryDataQuery.data as any)}\n          onChange={(values) => {\n            setCurrentData({\n              data: undefined,\n              record: \"{}\",\n            });\n            setQueryData((pre: any) => {\n              const newQuery = { ...pre, ...values };\n              return newQuery;\n            });\n          }}\n        />\n      </Panel.Header>\n      <div className=\"flex w-full flex-grow overflow-hidden\">\n        {entryDataQuery.status !== \"loading\" && entryDataQuery?.data?.list?.length === 0 && (\n          <EmptyBox>\n            <div>\n              <span>{t(\"CollectionPanel.EmptyDataText\")}</span>\n              <AddDataModal schema={{}}>\n                <span className=\"ml-2 cursor-pointer text-primary-600 hover:border-b-2 hover:border-primary-600\">\n                  {t(\"CreateNow\")}\n                </span>\n              </AddDataModal>\n            </div>\n          </EmptyBox>\n        )}\n\n        {entryDataQuery?.data?.list?.length !== 0 && (\n          <>\n            <RightPanelList\n              ListQuery={entryDataQuery?.data?.list}\n              setKey=\"_id\"\n              isActive={(item: any) => currentData.data?._id === item._id}\n              customStyle={{\n                \"border-lafWhite-600\": colorMode === COLOR_MODE.light,\n              }}\n              onClick={(data: any) => {\n                setCurrentData({\n                  data: data,\n                  record: JSON.stringify(data),\n                });\n              }}\n              deleteRuleMutation={deleteDataMutation}\n              component={(item: any) => {\n                const code = JSON.stringify(item, null, 2);\n                return <JSONViewer colorMode={colorMode} code={code} className=\"dataList\" />;\n              }}\n              toolComponent={(item: any) => {\n                const newData = { ...item };\n                delete newData._id;\n\n                const text = stringifyEJSONAndFormat(newData);\n                return (\n                  <CopyText\n                    hideToolTip\n                    text={text}\n                    tip={String(t(\"Copied\"))}\n                    className={darkMode ? \"ml-2 hover:bg-gray-600\" : \"ml-2 hover:bg-gray-200\"}\n                  >\n                    <IconWrap\n                      showBg\n                      tooltip={t(\"Copy\").toString()}\n                      size={32}\n                      className=\"group/icon\"\n                    >\n                      <OutlineCopyIcon size=\"14\" color={darkMode ? \"#ffffff\" : \"#24282C\"} />\n                    </IconWrap>\n                  </CopyText>\n                );\n              }}\n            />\n            <RightPanelEditBox\n              show={currentData.data?._id}\n              title={t(\"Edit\")}\n              isLoading={updateDataMutation.isLoading}\n              onSave={handleData}\n            >\n              <div className=\"mb-4 flex-1 rounded\">\n                <JSONEditor\n                  colorMode={colorMode}\n                  value={stringifyEJSONAndFormat(currentData.data || {})}\n                  onChange={(values) => {\n                    setCurrentData((pre: any) => {\n                      return {\n                        ...pre,\n                        record: values!,\n                      };\n                    });\n                  }}\n                />\n              </div>\n            </RightPanelEditBox>\n          </>\n        )}\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/database/CollectionDataList/mods/IndexPanel/addIndexModal/index.tsx",
    "content": "import { useState } from \"react\";\nimport { AddIcon } from \"@chakra-ui/icons\";\nimport {\n  Button,\n  FormControl,\n  FormLabel,\n  Input,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  Radio,\n  RadioGroup,\n  Stack,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nfunction AddIndexModal() {\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const [indexName, setIndexName] = useState(\"\");\n  const [indexType, setIndexType] = useState(\"\");\n  const [indexField, setIndexField] = useState(\"\");\n  return (\n    <>\n      <Button onClick={onOpen} colorScheme=\"primary\" size=\"sm\">\n        <AddIcon color=\"white\" className=\"mr-2\" />\n        {t(\"CollectionPanel.AddIndex\")}\n      </Button>\n      <Modal isOpen={isOpen} onClose={onClose} size=\"xl\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"CollectionPanel.AddIndex\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody>\n            <FormControl>\n              <FormLabel>{t(\"CollectionPanel.IndexName\")}</FormLabel>\n              <Input\n                className=\"h-14\"\n                value={indexName}\n                onChange={(e) => setIndexName(e.target.value)}\n                placeholder=\"\"\n              />\n            </FormControl>\n\n            <FormControl className=\"mt-8\">\n              <FormLabel>索引属性</FormLabel>\n              <RadioGroup onChange={setIndexType} value={indexType}>\n                <Stack direction=\"row\">\n                  <Radio value=\"1\">唯一</Radio>\n                  <Radio value=\"2\">非唯一</Radio>\n                </Stack>\n              </RadioGroup>\n            </FormControl>\n\n            <FormControl className=\"mt-8\">\n              <FormLabel>索引字段</FormLabel>\n              <Input\n                value={indexField}\n                onChange={(e) => setIndexField(e.target.value)}\n                placeholder=\"\"\n              />\n            </FormControl>\n          </ModalBody>\n          <ModalFooter className=\"mt-20\">\n            <Button mr={3} onClick={onClose}>\n              {t(\"Cancel\")}\n            </Button>\n            <Button variant=\"ghost\">{t(\"Confirm\")}</Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n}\nexport default AddIndexModal;\n"
  },
  {
    "path": "web/src/pages/app/database/CollectionDataList/mods/IndexPanel/index.tsx",
    "content": "import { Button, Table, TableContainer, Tbody, Td, Th, Thead, Tr } from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport AddIndexModal from \"./addIndexModal\";\n\nexport default function IndexPanel() {\n  return (\n    <div>\n      <div className=\"mt-2 flex\">\n        <AddIndexModal />\n      </div>\n      <div className=\"mt-4 rounded border border-slate-200 \">\n        <TableContainer>\n          <Table variant=\"striped\" colorScheme=\"gray\">\n            <Thead>\n              <Tr>\n                <Th>索引名称</Th>\n                <Th>索引属性</Th>\n                <Th>索引字段</Th>\n                <Th isNumeric>\n                  <span className=\"mr-3\">操作</span>\n                </Th>\n              </Tr>\n            </Thead>\n            <Tbody>\n              {[1, 2, 3, 4].map((i) => (\n                <Tr key={i}>\n                  <Td>Mark Chandler</Td>\n                  <Td>Mark Chandler</Td>\n                  <Td>developer</Td>\n                  <Td isNumeric>\n                    <Button size=\"sm\" variant={\"ghost\"} colorScheme={\"red\"}>\n                      {t(\"Delete\")}\n                    </Button>\n                  </Td>\n                </Tr>\n              ))}\n            </Tbody>\n          </Table>\n        </TableContainer>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/database/CollectionListPanel/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { AddIcon, Search2Icon } from \"@chakra-ui/icons\";\nimport {\n  Badge,\n  Center,\n  Input,\n  InputGroup,\n  InputLeftElement,\n  Spinner,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { DatabaseIcon, OutlineCopyIcon, RefreshIcon } from \"@/components/CommonIcon\";\nimport CopyText from \"@/components/CopyText\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport IconText from \"@/components/IconText\";\nimport IconWrap from \"@/components/IconWrap\";\nimport MoreButton from \"@/components/MoreButton\";\nimport Panel from \"@/components/Panel\";\nimport SectionList from \"@/components/SectionList\";\n\nimport CreateCollectionModal from \"../mods/CreateCollectionModal\";\nimport DeleteCollectionModal from \"../mods/DeleteCollectionModal\";\nimport { useCollectionListQuery } from \"../service\";\nimport useDBMStore from \"../store\";\n\nexport default function CollectionListPanel() {\n  const store = useDBMStore((store) => store);\n  const { t } = useTranslation();\n  const { data: res, ...collectionListQuery } = useCollectionListQuery({\n    onSuccess: (data) => {\n      if (data.data.length === 0) {\n        store.setCurrentDB(undefined);\n      } else if (store.currentDB === undefined) {\n        store.setCurrentDB(data?.data[0]);\n      }\n    },\n  });\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  const [search, setSearch] = useState(\"\");\n\n  return (\n    <Panel\n      className=\"min-w-[200px] flex-grow overflow-hidden\"\n      onClick={() => {\n        store.setCurrentShow(\"DB\");\n      }}\n    >\n      <Panel.Header\n        title={\n          <div className=\"flex\">\n            {t(\"CollectionPanel.CollectionList\").toString()}\n            {res?.data.length >= 10 ? (\n              <Badge rounded={\"full\"} ml=\"1\">\n                {res?.data.length}\n              </Badge>\n            ) : null}\n          </div>\n        }\n        actions={[\n          <IconWrap\n            key=\"refresh_database\"\n            tooltip={t(\"Refresh\").toString()}\n            onClick={() => {\n              collectionListQuery.refetch();\n            }}\n          >\n            <RefreshIcon fontSize={15} />\n          </IconWrap>,\n          <CreateCollectionModal key={\"create_database\"}>\n            <IconWrap tooltip={t(\"CollectionPanel.AddCollection\").toString()} size={20}>\n              <AddIcon fontSize={10} />\n            </IconWrap>\n          </CreateCollectionModal>,\n        ]}\n      />\n      <div className=\"my-1.5 flex w-full items-center\">\n        <InputGroup>\n          <InputLeftElement\n            height=\"6\"\n            pointerEvents=\"none\"\n            children={<Search2Icon color=\"gray.300\" fontSize=\"12\" />}\n          />\n          <Input\n            rounded=\"full\"\n            pl=\"8\"\n            placeholder={t(\"CollectionPanel.Search\").toString()}\n            height=\"6\"\n            fontSize=\"sm\"\n            onChange={(e) => setSearch(e.target.value)}\n          />\n        </InputGroup>\n      </div>\n\n      <div className=\"relative flex-grow overflow-auto\">\n        {collectionListQuery.isFetching ? (\n          <Center className=\"bg-white-200 absolute bottom-0 left-0 right-0 top-0 z-10 opacity-60\">\n            <Spinner />\n          </Center>\n        ) : null}\n        {res?.data?.length ? (\n          <SectionList>\n            {res?.data\n              .filter((db: any) => db.name.indexOf(search) >= 0)\n              .sort((a: any, b: any) => {\n                return a.name.localeCompare(b.name);\n              })\n              .map((db: any) => {\n                return (\n                  <SectionList.Item\n                    isActive={store.currentShow === \"DB\" && db.name === store.currentDB?.name}\n                    key={db.name}\n                    className={clsx(\n                      \"group h-7 hover:!text-primary-700\",\n                      darkMode ? \"text-grayIron-200\" : \"text-grayIron-700\",\n                      store.currentShow !== \"Policy\" &&\n                        db?.name === store.currentDB?.name &&\n                        \"!text-primary-700\",\n                    )}\n                    onClick={() => {\n                      store.setCurrentDB(db);\n                    }}\n                  >\n                    <div className=\"group flex w-full items-center justify-between\">\n                      <div className=\"flex items-center overflow-hidden text-ellipsis whitespace-nowrap font-medium\">\n                        <DatabaseIcon\n                          className={\n                            store.currentShow !== \"Policy\" && db?.name === store.currentDB?.name\n                              ? \"\"\n                              : \"!text-grayModern-400 group-hover:!text-primary-700\"\n                          }\n                        />\n                        <span className=\"ml-2\">{db.name}</span>\n                      </div>\n                      <MoreButton\n                        label={t(\"Operation\")}\n                        isHidden={db.name !== store.currentDB?.name || store.currentShow !== \"DB\"}\n                      >\n                        <>\n                          <CopyText\n                            hideToolTip\n                            text={db.name}\n                            tip={String(t(\"NameCopiedSuccessfully\"))}\n                          >\n                            <IconText\n                              icon={\n                                <div className=\"flex h-full items-center\">\n                                  <OutlineCopyIcon size={16} />\n                                </div>\n                              }\n                              text={t(\"Copy\")}\n                            />\n                          </CopyText>\n                          <DeleteCollectionModal database={db} />\n                        </>\n                      </MoreButton>\n                    </div>\n                  </SectionList.Item>\n                );\n              })}\n          </SectionList>\n        ) : (\n          <EmptyBox hideIcon>\n            <p>{t(\"CollectionPanel.EmptyCollectionTip\")}</p>\n          </EmptyBox>\n        )}\n      </div>\n    </Panel>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/database/PolicyDataList/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { AddIcon } from \"@chakra-ui/icons\";\nimport { Button, Center, Input, Spinner, Text, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { OutlineCopyIcon } from \"@/components/CommonIcon\";\nimport CopyText from \"@/components/CopyText\";\nimport JSONEditor from \"@/components/Editor/JSONEditor\";\nimport JSONViewer from \"@/components/Editor/JSONViewer\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport IconWrap from \"@/components/IconWrap\";\nimport Panel from \"@/components/Panel\";\nimport { COLOR_MODE } from \"@/constants\";\n\nimport AddPolicyModal from \"../mods/AddPolicyModal\";\nimport AddRulesModal from \"../mods/AddRulesModal\";\nimport policyTemplate from \"../mods/AddRulesModal/policyTemplate\";\nimport RightPanelEditBox from \"../RightComponent/EditBox\";\nimport RightPanelList from \"../RightComponent/List\";\nimport { useDeleteRuleMutation, useRulesListQuery, useUpdateRulesMutation } from \"../service\";\nimport useDBMStore from \"../store\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function PolicyDataList() {\n  const [currentData, setCurrentData] = useState<any>(undefined);\n  const [record, setRecord] = useState(JSON.stringify(policyTemplate, null, 2));\n  const globalStore = useGlobalStore();\n  const store = useDBMStore((state) => state);\n  const rulesListQuery = useRulesListQuery((data: any) => {\n    if (data?.data.length === 0) {\n      setCurrentData(undefined);\n    } else if (currentData === undefined) {\n      setCurrentData(data.data[0]);\n      setRecord(JSON.stringify(data.data[0].value, null, 2));\n    }\n  });\n\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  useEffect(() => {\n    setCurrentData(undefined);\n    setRecord(JSON.stringify(policyTemplate, null, 2));\n  }, [store.currentPolicy, setCurrentData]);\n\n  const deleteRuleMutation = useDeleteRuleMutation(() => {\n    setCurrentData(undefined);\n    setRecord(JSON.stringify(policyTemplate, null, 2));\n    rulesListQuery.refetch();\n  });\n  const updateRulesMutation = useUpdateRulesMutation((data) => {\n    rulesListQuery.refetch();\n  });\n\n  const handleData = async () => {\n    try {\n      JSON.parse(record);\n      await updateRulesMutation.mutateAsync({\n        collection: currentData.collectionName,\n        value: record,\n      });\n      rulesListQuery.refetch();\n    } catch (error) {\n      globalStore.showError(error?.toString());\n    }\n  };\n\n  if (store.currentPolicy === undefined) {\n    return (\n      <Center className=\"h-full\">\n        <EmptyBox>\n          <div>\n            {t(\"CollectionPanel.EmptyPolicyText\")}\n            <AddPolicyModal>\n              <span className=\"ml-2 cursor-pointer text-primary-600 hover:border-b-2 hover:border-primary-600\">\n                {t(\"CreateNow\")}\n              </span>\n            </AddPolicyModal>\n          </div>\n        </EmptyBox>\n      </Center>\n    );\n  }\n\n  return (\n    <>\n      <Panel.Header className=\"h-[60px] w-full flex-shrink-0 pr-2\">\n        <AddRulesModal\n          onSuccessSubmit={(data) => {\n            setCurrentData(data);\n            setRecord(JSON.stringify(data?.value, null, 2));\n            rulesListQuery.refetch();\n          }}\n        >\n          <Button\n            disabled={store.currentPolicy === undefined}\n            leftIcon={<AddIcon fontSize={10} className=\"text-grayModern-500\" />}\n            variant=\"textGhost\"\n            size=\"xs\"\n          >\n            {t(\"CollectionPanel.AddRules\")}\n          </Button>\n        </AddRulesModal>\n        <span>\n          {t(\"CollectionPanel.RulesNum\")} : {rulesListQuery?.data?.data?.length || 0}\n        </span>\n      </Panel.Header>\n      <div className=\"flex w-full flex-grow overflow-hidden\">\n        {rulesListQuery.isFetching ? (\n          <Center className=\"bg-white-200 h-full w-full opacity-60\">\n            <Spinner size=\"lg\" />\n          </Center>\n        ) : rulesListQuery?.data?.data.length ? (\n          <>\n            <RightPanelList\n              ListQuery={rulesListQuery?.data?.data}\n              setKey=\"_id\"\n              isActive={(item: any) => currentData?._id === item._id}\n              customStyle={{\n                \"border-lafWhite-600\": colorMode === COLOR_MODE.light,\n              }}\n              onClick={(data: any) => {\n                setCurrentData(data);\n                setRecord(JSON.stringify(data.value, null, 2));\n              }}\n              deleteRuleMutation={deleteRuleMutation}\n              deleteData={(item) => ({ collection: item.collectionName })}\n              component={(item: any) => {\n                return (\n                  <>\n                    <div\n                      className={clsx(\"mb-4 border-b-2 pb-2 pl-2\", {\n                        \"border-lafWhite-600\": !darkMode,\n                      })}\n                    >\n                      <Text fontSize=\"md\" className=\"font-semibold leading-loose\">\n                        {t(\"CollectionPanel.Collection\")}:{item.collectionName}\n                      </Text>\n                    </div>\n                    <JSONViewer colorMode={colorMode} code={JSON.stringify(item.value, null, 2)} />\n                  </>\n                );\n              }}\n              toolComponent={(item: any) => {\n                return (\n                  <CopyText\n                    hideToolTip\n                    text={JSON.stringify(item.value, null, 2)}\n                    tip={String(t(\"Copied\"))}\n                    className=\"ml-2 hover:bg-gray-200\"\n                  >\n                    <IconWrap\n                      showBg\n                      tooltip={t(\"Copy\").toString()}\n                      size={32}\n                      className=\"group/icon\"\n                    >\n                      <OutlineCopyIcon size=\"14\" color={darkMode ? \"#ffffff\" : \"#24282C\"} />\n                    </IconWrap>\n                  </CopyText>\n                );\n              }}\n            />\n            <RightPanelEditBox\n              show={currentData?._id}\n              title={t(\"Edit\")}\n              isLoading={updateRulesMutation.isLoading}\n              onSave={handleData}\n            >\n              <Text fontSize=\"md\" className=\"mb-2 font-semibold leading-loose\">\n                {t(\"CollectionPanel.SelectCollection\")}:\n              </Text>\n              <Input\n                isDisabled\n                value={currentData?.collectionName}\n                className={darkMode ? \"bg-lafDark-200\" : \"bg-lafWhite-400\"}\n              ></Input>\n              <Text fontSize=\"md\" className=\"mb-2 mt-4 font-semibold leading-loose\">\n                {t(\"CollectionPanel.RulesContent\")}\n              </Text>\n              <div\n                className={clsx(\" mb-4 flex-1 rounded pr-2\", {\n                  \"bg-lafWhite-400\": !darkMode,\n                  \"bg-lafDark-200\": darkMode,\n                })}\n              >\n                <JSONEditor\n                  colorMode={colorMode}\n                  value={record}\n                  onChange={(values) => {\n                    setRecord(values!);\n                  }}\n                />\n              </div>\n            </RightPanelEditBox>\n          </>\n        ) : (\n          <EmptyBox>\n            <div>\n              <span>{t(\"CollectionPanel.EmptyRuleTip\")}</span>\n            </div>\n          </EmptyBox>\n        )}\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/database/PolicyListPanel/index.tsx",
    "content": "/****************************\n * cloud functions list sidebar\n ***************************/\nimport { useTranslation } from \"react-i18next\";\nimport { AddIcon } from \"@chakra-ui/icons\";\nimport { useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { RecycleDeleteIcon } from \"@/components/CommonIcon\";\nimport ConfirmButton from \"@/components/ConfirmButton\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport FileTypeIcon from \"@/components/FileTypeIcon\";\nimport IconText from \"@/components/IconText\";\nimport IconWrap from \"@/components/IconWrap\";\nimport MoreButton from \"@/components/MoreButton\";\nimport Panel from \"@/components/Panel\";\nimport SectionList from \"@/components/SectionList\";\n\nimport AddPolicyModal from \"../mods/AddPolicyModal\";\nimport { useDeletePolicyMutation } from \"../service\";\nimport useDBMStore from \"../store\";\nexport default function PolicyListPanel(props: { policyList: any }) {\n  const { policyList } = props;\n  const { t } = useTranslation();\n  const deletePolicyMutation = useDeletePolicyMutation();\n  const store = useDBMStore((state) => state);\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  return (\n    <Panel\n      className=\"min-w-[200px]\"\n      onClick={() => {\n        store.setCurrentShow(\"Policy\");\n      }}\n    >\n      <Panel.Header\n        title={t(\"CollectionPanel.Policy\").toString()}\n        actions={[\n          <AddPolicyModal key=\"AddPolicyModal\">\n            <IconWrap tooltip={t(\"CollectionPanel.AddPolicy\").toString()} size={20}>\n              <AddIcon fontSize={10} />\n            </IconWrap>\n          </AddPolicyModal>,\n        ]}\n      />\n      <div style={{ flexGrow: 1, overflowY: \"auto\", overflowX: \"hidden\" }}>\n        {policyList?.data?.length ? (\n          <SectionList>\n            {policyList?.data.map((item: any) => {\n              return (\n                <SectionList.Item\n                  isActive={\n                    store.currentShow === \"Policy\" && item?._id === store.currentPolicy?._id\n                  }\n                  className={clsx(\n                    \"group h-7 hover:!text-primary-700\",\n                    darkMode ? \"text-grayIron-200\" : \" text-grayIron-700\",\n                    store.currentShow === \"Policy\" &&\n                      item?._id === store.currentPolicy?._id &&\n                      \"!text-primary-700\",\n                  )}\n                  key={item?._id}\n                  onClick={() => {\n                    store.setCurrentPolicy(item);\n                  }}\n                >\n                  <div className=\"group flex w-full items-center justify-between\">\n                    <div className=\"overflow-hidden text-ellipsis whitespace-nowrap font-medium leading-loose\">\n                      <FileTypeIcon type=\"policy\" />\n                      <span className=\"ml-2 text-base\">{item.name}</span>\n                    </div>\n                    <MoreButton\n                      label={t(\"Operation\")}\n                      maxWidth=\"50px\"\n                      isHidden={\n                        item.name !== store.currentPolicy?.name || store.currentShow !== \"Policy\"\n                      }\n                    >\n                      <>\n                        <ConfirmButton\n                          onSuccessAction={async () => {\n                            await deletePolicyMutation.mutateAsync(item.name);\n                          }}\n                          headerText={String(t(\"Delete\"))}\n                          bodyText={t(\"CollectionPanel.ConformDelete\")}\n                        >\n                          <IconText\n                            icon={<RecycleDeleteIcon fontSize={16} />}\n                            text={t(\"Delete\")}\n                            className=\"hover:!text-error-600\"\n                          />\n                        </ConfirmButton>\n                      </>\n                    </MoreButton>\n                  </div>\n                </SectionList.Item>\n              );\n            })}\n          </SectionList>\n        ) : (\n          <EmptyBox hideIcon>\n            <p>{t(\"CollectionPanel.EmptyPolicyTip\")}</p>\n          </EmptyBox>\n        )}\n      </div>\n    </Panel>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/database/RightComponent/DeleteButton.tsx",
    "content": "import {\n  Button,\n  ButtonGroup,\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { RecycleDeleteIcon } from \"@/components/CommonIcon\";\nimport IconWrap from \"@/components/IconWrap\";\n\nexport default function DeleteButton(props: { data: any; deleteMethod: any }) {\n  const { isOpen, onToggle, onOpen, onClose } = useDisclosure();\n  return (\n    <>\n      <Popover\n        isOpen={isOpen}\n        onOpen={onOpen}\n        onClose={onClose}\n        closeOnBlur={true}\n        placement=\"left\"\n      >\n        <IconWrap\n          className=\"group/icon hover:bg-rose-100\"\n          showBg\n          tooltip={t(\"Delete\").toString()}\n          size={32}\n          onClick={(event: any) => {\n            onToggle();\n            event?.stopPropagation();\n          }}\n        >\n          <PopoverTrigger>\n            <RecycleDeleteIcon\n              fontSize={16}\n              className=\"align-middle group-hover/icon:text-error-500\"\n            />\n          </PopoverTrigger>\n        </IconWrap>\n        <PopoverContent p=\"2\" maxWidth={130}>\n          <ButtonGroup size=\"xs\">\n            <Button\n              variant=\"outline\"\n              onClick={(event) => {\n                event?.stopPropagation();\n                onClose();\n              }}\n            >\n              {t(\"Cancel\")}\n            </Button>\n            <Button\n              isLoading={props.deleteMethod.isLoading}\n              onClick={async (event) => {\n                event?.stopPropagation();\n                await props.deleteMethod.mutateAsync(props.data);\n              }}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ButtonGroup>\n        </PopoverContent>\n      </Popover>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/database/RightComponent/EditBox.tsx",
    "content": "import React from \"react\";\nimport { Button, Text, useColorMode } from \"@chakra-ui/react\";\nimport { clsx } from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\nconst RightPanelEditBox: React.FC<{\n  show?: boolean;\n  children?: React.ReactNode;\n  className?: string;\n  isLoading: boolean;\n  title?: React.ReactNode | string;\n  onSave: () => void;\n}> = (props) => {\n  const { title, isLoading, children, onSave, show } = props;\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  return (\n    <div\n      className={clsx(\"mb-3 ml-1 flex-col rounded-xl border-2 px-4\", {\n        \"border-lafWhite-600\": !darkMode,\n      })}\n      style={{\n        flexBasis: \"412px\",\n        display: show ? \"flex\" : \"none\",\n      }}\n    >\n      <div\n        className={clsx(\"item-center mb-4 flex justify-between border-b-2 py-2\", {\n          \"border-lafWhite-600\": !darkMode,\n        })}\n      >\n        <Text fontSize=\"md\" className=\"font-semibold leading-loose\">\n          {title}\n        </Text>\n        <Button\n          style={{ width: \"56px\", height: \"28px\" }}\n          colorScheme=\"primary\"\n          fontSize=\"sm\"\n          size=\"md\"\n          isLoading={isLoading}\n          onClick={onSave}\n        >\n          {t(\"Save\")}\n        </Button>\n      </div>\n      {children}\n    </div>\n  );\n};\n\nexport default RightPanelEditBox;\n"
  },
  {
    "path": "web/src/pages/app/database/RightComponent/List.tsx",
    "content": "import React from \"react\";\nimport clsx from \"clsx\";\n\nimport DeleteButton from \"./DeleteButton\";\n\nconst RightPanelList: React.FC<{\n  ListQuery?: any;\n  setKey: string;\n  isActive: (item: any) => Boolean;\n  onClick: (data: any) => void;\n  deleteRuleMutation: any;\n  deleteData?: (item: any) => any;\n  customStyle?: any;\n  toolComponent?: (item: any) => React.ReactNode;\n  component: (item: any) => React.ReactNode;\n}> = (props) => {\n  const {\n    ListQuery,\n    setKey,\n    component,\n    toolComponent,\n    isActive,\n    onClick,\n    deleteRuleMutation,\n    deleteData,\n    customStyle,\n  } = props;\n  return (\n    <div className=\"flex-1 overflow-y-auto overflow-x-hidden pr-1\">\n      {(ListQuery || [])?.map((item: any, index: number) => {\n        return (\n          <div\n            key={item[setKey]}\n            className={clsx(\"group/item relative rounded-xl border-2 p-2\", {\n              ...customStyle,\n              shadow: isActive(item),\n              \"mb-2\": index !== (ListQuery?.data?.data || []).length - 1,\n            })}\n            onClick={() => {\n              onClick(item);\n            }}\n          >\n            <div\n              className={clsx(\" absolute right-4 top-2  z-50 group-hover/item:block \", {\n                hidden: !isActive(item),\n              })}\n              onClick={(e) => {\n                e.stopPropagation();\n              }}\n            >\n              <div className=\"flex\">\n                <DeleteButton\n                  data={deleteData ? deleteData(item) : item}\n                  deleteMethod={deleteRuleMutation}\n                />\n                {toolComponent && toolComponent(item)}\n              </div>\n            </div>\n            {component(item)}\n          </div>\n        );\n      })}\n    </div>\n  );\n};\n\nexport default RightPanelList;\n"
  },
  {
    "path": "web/src/pages/app/database/index.tsx",
    "content": "/****************************\n * cloud functions database page\n ***************************/\nimport { useRef } from \"react\";\n\nimport Content from \"@/components/Content\";\nimport { Col, Row } from \"@/components/Grid\";\nimport Panel from \"@/components/Panel\";\nimport Resize from \"@/components/Resize\";\n\nimport StatusBar from \"../mods/StatusBar\";\n\nimport CollectionDataList from \"./CollectionDataList\";\nimport CollectionListPanel from \"./CollectionListPanel\";\nimport PolicyDataList from \"./PolicyDataList\";\nimport PolicyListPanel from \"./PolicyListPanel\";\nimport { usePolicyListQuery } from \"./service\";\n\nimport useDBMStore from \"./store\";\n\nimport useCustomSettingStore from \"@/pages/customSetting\";\nfunction DatabasePage() {\n  const containerRef = useRef<HTMLDivElement>(null);\n  const store = useDBMStore((state) => state);\n  const settingStore = useCustomSettingStore();\n\n  const { data: policyList } = usePolicyListQuery((data) => {\n    if (data.data.length === 0) {\n      store.setCurrentPolicy(undefined);\n    } else if (store.currentPolicy === undefined) {\n      store.setCurrentPolicy(data?.data[0]);\n    }\n  });\n\n  return (\n    <Content>\n      <Row className=\"flex-grow\" ref={containerRef}>\n        <Col style={{ width: settingStore.layoutInfo.collectionPage.SideBar.style.width }}>\n          <CollectionListPanel />\n          {!!policyList?.data?.length && (\n            <>\n              <Resize\n                type=\"y\"\n                pageId=\"collectionPage\"\n                panelId=\"PolicyPanel\"\n                reverse\n                containerRef={containerRef}\n              />\n              <Row {...settingStore.layoutInfo.collectionPage.PolicyPanel}>\n                <PolicyListPanel policyList={policyList} />\n              </Row>\n            </>\n          )}\n        </Col>\n        <Resize type=\"x\" pageId=\"collectionPage\" panelId=\"SideBar\" containerRef={containerRef} />\n        <Col>\n          <Panel className=\"h-full items-stretch\">\n            {store.currentShow === \"DB\" ? <CollectionDataList /> : <PolicyDataList />}\n          </Panel>\n        </Col>\n      </Row>\n      <StatusBar />\n    </Content>\n  );\n}\n\nexport default DatabasePage;\n"
  },
  {
    "path": "web/src/pages/app/database/mods/AddDataModal/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport React from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport {\n  Button,\n  FormControl,\n  FormErrorMessage,\n  FormLabel,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  useColorMode,\n  useDisclosure,\n  VStack,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport JSONEditor from \"@/components/Editor/JSONEditor\";\nimport { COLOR_MODE } from \"@/constants\";\n\nimport { useAddDataMutation } from \"../../service\";\n\nconst AddDataModal = (props: {\n  children: React.ReactElement;\n  onSuccessSubmit?: (id: string, count: number) => void;\n  schema: Object;\n}) => {\n  type FormData = {\n    value: string;\n  };\n  const { handleSubmit, control, reset } = useForm<FormData>({});\n  const { children, onSuccessSubmit, schema } = props;\n  const [template, setTemplate] = useState({});\n\n  useEffect(() => {\n    const keys = Object.keys(schema).filter((key) => key !== \"_id\");\n    const newTemplate: { [key: string]: any } = {};\n    for (let key of keys) {\n      newTemplate[key] = \"\";\n    }\n    setTemplate(newTemplate);\n  }, [schema, setTemplate]);\n\n  const addDataMutation = useAddDataMutation({\n    onSuccess: (data) => {\n      const { insertedCount, id } = data;\n      let lastId = undefined;\n      if (typeof id !== \"string\") {\n        const keys = Object.keys(id);\n        lastId = id[keys[keys.length - 1]];\n      } else {\n        lastId = id;\n      }\n      onSuccessSubmit && onSuccessSubmit(lastId, insertedCount > 1 ? insertedCount : 1);\n    },\n  });\n  const [error, setError] = useState<string | undefined>(\"\");\n  const onSubmit = async (data: any) => {\n    let params = {};\n    try {\n      params = JSON.parse(data.value);\n      if (Object.keys(params).length === 0) {\n        setError(String(t(\"DataEntry.CreateError\")));\n        return;\n      }\n      setError(\"\");\n      await addDataMutation.mutateAsync(params);\n      onClose();\n    } catch (errors) {\n      setError(errors?.toString());\n      return;\n    }\n  };\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  const { isOpen, onOpen, onClose } = useDisclosure();\n\n  return (\n    <>\n      {React.cloneElement(children, {\n        onClick: () => {\n          onOpen();\n          setError(\"\");\n          reset({ value: JSON.stringify(template, null, 2) });\n        },\n      })}\n      <Modal isOpen={isOpen} onClose={onClose} size=\"2xl\">\n        <ModalOverlay />\n        <ModalContent className=\"h-[80vh]\">\n          <ModalHeader> {t(\"CollectionPanel.AddData\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb={6}>\n            <VStack spacing={6} align=\"flex-start\" className=\"h-full\">\n              <FormControl isInvalid={!!error} className=\"h-full \">\n                <FormErrorMessage className=\"mb-1 ml-2 \">{error}</FormErrorMessage>\n                <FormLabel htmlFor=\"value\"></FormLabel>\n                <Controller\n                  name=\"value\"\n                  control={control}\n                  render={({ field: { onChange, value } }) => (\n                    <div\n                      className={clsx(\"rounded pr-2\", {\n                        \"bg-lafWhite-400\": !darkMode,\n                        \"bg-lafDark-200\": darkMode,\n                      })}\n                      style={{ height: \"calc(100% - 1rem)\" }}\n                    >\n                      <JSONEditor colorMode={colorMode} value={value} onChange={onChange} />\n                    </div>\n                  )}\n                />\n              </FormControl>\n            </VStack>\n          </ModalBody>\n          <ModalFooter>\n            <Button\n              isLoading={addDataMutation.isLoading}\n              type=\"submit\"\n              onClick={handleSubmit(onSubmit)}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nAddDataModal.displayName = \"AddDataModal\";\n\nexport default AddDataModal;\n"
  },
  {
    "path": "web/src/pages/app/database/mods/AddIndexModal/index.tsx",
    "content": "import React, { useCallback, useState } from \"react\";\nimport { Controller, SubmitHandler, useFieldArray, useForm, useWatch } from \"react-hook-form\";\nimport { AddIcon, ChevronDownIcon, ChevronRightIcon } from \"@chakra-ui/icons\";\nimport {\n  Button,\n  Checkbox,\n  CloseButton,\n  Divider,\n  FormControl,\n  FormLabel,\n  HStack,\n  Input,\n  InputGroup,\n  InputRightAddon,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  NumberDecrementStepper,\n  NumberIncrementStepper,\n  NumberInput,\n  NumberInputField,\n  NumberInputStepper,\n  Select,\n  Spacer,\n  useDisclosure,\n  VStack,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { useCreateIndexMutation } from \"../../service\";\n\ninterface FormData {\n  name: string;\n  capped: boolean;\n  unique: boolean;\n  indexTTL: boolean;\n  keys: {\n    name: string;\n    type: 1 | -1 | \"text\" | \"2dsphere\";\n  }[];\n  size: number;\n  max: number;\n  expireAfterSeconds: number;\n}\n\nconst AddIndexModal = (props: { children: React.ReactElement }) => {\n  const { children } = props;\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const createIndexMutation = useCreateIndexMutation();\n  const [showAdvancedOptions, setShowAdvancedOptions] = useState(false);\n\n  const { register, control, handleSubmit, reset } = useForm<FormData>({\n    defaultValues: {\n      name: \"\",\n      capped: false,\n      unique: false,\n      indexTTL: false,\n      keys: [\n        {\n          name: \"\",\n          type: 1,\n        },\n      ],\n      size: 1,\n      max: 1,\n      expireAfterSeconds: 60 * 60 * 24 * 10,\n    },\n  });\n\n  const [capped, indexTTL] = useWatch({\n    control,\n    name: [\"capped\", \"indexTTL\"],\n  });\n\n  const indexKeys = useFieldArray<FormData>({\n    control,\n    name: \"keys\",\n    rules: { minLength: 1, required: true },\n  });\n\n  const onSubmit: SubmitHandler<FormData> = useCallback(\n    async (value) => {\n      const keys = value.keys.reduce<Record<string, number | string>>((acc, cur) => {\n        acc[cur.name] = Number(cur.type) || cur.type;\n        return acc;\n      }, {});\n\n      const options: any = {\n        unique: value.unique,\n      };\n      if (value.indexTTL) {\n        options[\"expireAfterSeconds\"] = value.expireAfterSeconds;\n      }\n      if (value.capped) {\n        options[\"capped\"] = true;\n        options[\"size\"] = value.size;\n        options[\"max\"] = value.max;\n      }\n      if (value.name) {\n        options[\"name\"] = value.name;\n      }\n\n      await createIndexMutation.mutateAsync({\n        keys,\n        options,\n      });\n\n      onClose();\n    },\n    [createIndexMutation, onClose],\n  );\n\n  return (\n    <>\n      {React.cloneElement(children, {\n        onClick: () => {\n          reset();\n          onOpen();\n        },\n      })}\n      <Modal onClose={onClose} isOpen={isOpen} useInert>\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"CollectionPanel.AddIndex\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody>\n            <VStack gap={2}>\n              <FormControl isRequired>\n                <FormLabel>{t(\"CollectionPanel.IndexKey\")}</FormLabel>\n                <VStack>\n                  {indexKeys.fields.map((v, idx) => (\n                    <HStack key={idx} w=\"full\">\n                      <Input\n                        {...register(`keys.${idx}.name`, {\n                          required: true,\n                        })}\n                      />\n                      <Select\n                        placeholder={String(t(\"CollectionPanel.SelectIndexType\"))}\n                        {...register(`keys.${idx}.type`, {\n                          required: true,\n                        })}\n                      >\n                        <option value={1}>1(asc)</option>\n                        <option value={-1}>-1(desc)</option>\n                        <option value=\"text\">text</option>\n                        <option value=\"2dsphere\">2dsphere</option>\n                      </Select>\n                      {indexKeys.fields.length > 1 && (\n                        <CloseButton\n                          size=\"md\"\n                          onClick={() => {\n                            indexKeys.remove(idx);\n                          }}\n                        />\n                      )}\n                    </HStack>\n                  ))}\n                  <Button\n                    variant=\"solid\"\n                    borderRadius={6}\n                    borderStyle=\"dashed\"\n                    w=\"full\"\n                    my={3}\n                    leftIcon={<AddIcon />}\n                    onClick={() => {\n                      indexKeys.append({\n                        name: \"\",\n                        type: 1,\n                      });\n                    }}\n                  >\n                    {t(\"CollectionPanel.AddIndexKey\")}\n                  </Button>\n                </VStack>\n              </FormControl>\n              <FormControl>\n                <FormLabel>\n                  {t(\"CollectionPanel.IndexName\")}\n                  {` (${t(\"Optional\")})`}\n                </FormLabel>\n                <Input />\n              </FormControl>\n              <Divider />\n\n              <FormControl>\n                <FormLabel>\n                  <div\n                    className=\"cursor-pointer select-none\"\n                    onClick={(e) => {\n                      e.preventDefault();\n                      setShowAdvancedOptions((v) => !v);\n                    }}\n                  >\n                    {!showAdvancedOptions ? (\n                      <ChevronRightIcon fontSize={20} />\n                    ) : (\n                      <ChevronDownIcon fontSize={20} />\n                    )}\n                    {t(\"CollectionPanel.AdvancedOptions\")}\n                  </div>\n                </FormLabel>\n                {showAdvancedOptions && (\n                  <VStack gap={4} mt={4}>\n                    <Checkbox alignItems=\"flex-start\" {...register(\"unique\")}>\n                      <VStack alignItems=\"flex-start\" className=\"-mt-1\">\n                        <h1>{t(\"CollectionPanel.CreateUniqueIndex\")}</h1>\n                        <p className=\"!mt-0 text-gray-400\">\n                          {t(\"CollectionPanel.UniqueIndexDescription\")}\n                        </p>\n                      </VStack>\n                    </Checkbox>\n                    <VStack>\n                      <Checkbox alignItems=\"flex-start\" {...register(\"indexTTL\")}>\n                        <VStack alignItems=\"flex-start\" className=\"-mt-1\">\n                          <h1>{t(\"CollectionPanel.CreateTTL\")}</h1>\n                          <p className=\"!mt-0 text-gray-400\">\n                            {t(\"CollectionPanel.TTLDescription\")}\n                          </p>\n                        </VStack>\n                      </Checkbox>\n                      {indexTTL && (\n                        <VStack pl={6} mt={1} spacing={1} alignItems=\"flex-start\" w=\"full\">\n                          <FormControl>\n                            <Controller\n                              name=\"expireAfterSeconds\"\n                              control={control}\n                              render={({ field: { onChange, value } }) => (\n                                <InputGroup size=\"sm\" w={180}>\n                                  <NumberInput\n                                    value={value}\n                                    onChange={(_, num) => {\n                                      onChange(num);\n                                    }}\n                                    min={1}\n                                  >\n                                    <NumberInputField />\n                                    <NumberInputStepper>\n                                      <NumberIncrementStepper />\n                                      <NumberDecrementStepper />\n                                    </NumberInputStepper>\n                                  </NumberInput>\n                                  <InputRightAddon children={String(t(\"Second\"))} />\n                                </InputGroup>\n                              )}\n                            />\n                          </FormControl>\n                        </VStack>\n                      )}\n                    </VStack>\n                    <VStack>\n                      <Checkbox alignItems=\"flex-start\" {...register(\"capped\")}>\n                        <VStack alignItems=\"flex-start\" className=\"-mt-1\">\n                          <h1>{t(\"CollectionPanel.CapacityLimit\")}</h1>\n                          <p className=\"!mt-0 text-gray-400\">\n                            {t(\"CollectionPanel.CapacityLimitDescription\")}\n                          </p>\n                        </VStack>\n                      </Checkbox>\n                      {capped && (\n                        <VStack pl={6} mt={1} spacing={1} alignItems=\"flex-start\" w=\"full\">\n                          <HStack spacing={4}>\n                            <FormControl>\n                              <Controller\n                                name=\"size\"\n                                control={control}\n                                render={({ field: { onChange, value } }) => (\n                                  <InputGroup size=\"sm\" w={160}>\n                                    <NumberInput\n                                      value={value}\n                                      onChange={(_, num) => {\n                                        onChange(num);\n                                      }}\n                                      min={1}\n                                    >\n                                      <NumberInputField />\n                                      <NumberInputStepper>\n                                        <NumberIncrementStepper />\n                                        <NumberDecrementStepper />\n                                      </NumberInputStepper>\n                                    </NumberInput>\n                                    <InputRightAddon children={String(t(\"Byte\"))} />\n                                  </InputGroup>\n                                )}\n                              />\n                            </FormControl>\n                            <FormControl>\n                              <Controller\n                                name=\"max\"\n                                control={control}\n                                render={({ field: { onChange, value } }) => (\n                                  <InputGroup size=\"sm\" w={140}>\n                                    <NumberInput\n                                      value={value}\n                                      onChange={(_, num) => {\n                                        onChange(num);\n                                      }}\n                                      min={1}\n                                    >\n                                      <NumberInputField />\n                                      <NumberInputStepper>\n                                        <NumberIncrementStepper />\n                                        <NumberDecrementStepper />\n                                      </NumberInputStepper>\n                                    </NumberInput>\n                                    <InputRightAddon\n                                      children={String(t(\"CollectionPanel.DocumentNum\"))}\n                                    />\n                                  </InputGroup>\n                                )}\n                              />\n                            </FormControl>\n                          </HStack>\n                        </VStack>\n                      )}\n                    </VStack>\n                  </VStack>\n                )}\n              </FormControl>\n            </VStack>\n          </ModalBody>\n          <ModalFooter>\n            <HStack mt={4}>\n              <Button variant=\"ghost\" onClick={onClose}>\n                {t(\"Cancel\")}\n              </Button>\n              <Spacer />\n              <Button colorScheme=\"primary\" onClick={handleSubmit(onSubmit)}>\n                {t(\"CollectionPanel.CreateIndex\")}\n              </Button>\n            </HStack>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nexport default AddIndexModal;\n"
  },
  {
    "path": "web/src/pages/app/database/mods/AddPolicyModal/index.tsx",
    "content": "import { useState } from \"react\";\nimport React from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport {\n  Button,\n  FormControl,\n  FormErrorMessage,\n  FormLabel,\n  Input,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  Select,\n  useDisclosure,\n  VStack,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { useCreatePolicyMutation, useUpdatePolicyMutation } from \"../../service\";\n\nimport { useFunctionListQuery } from \"@/pages/app/functions/service\";\n\nconst AddPolicyModal = (props: {\n  children: React.ReactElement;\n  isEdit?: boolean;\n  defaultData?: any;\n}) => {\n  type FormData = {\n    name: string;\n    injector?: string;\n  };\n  const functionListQuery = useFunctionListQuery({ onSuccess: (data: any) => {} });\n  const { isEdit, defaultData = {} } = props;\n  const {\n    register,\n    handleSubmit,\n    setFocus,\n    reset,\n    watch,\n    formState: { errors },\n  } = useForm<FormData>(defaultData);\n\n  const createPolicyMutation = useCreatePolicyMutation();\n  const updatePolicyMutation = useUpdatePolicyMutation();\n\n  const onSubmit = async (data: any) => {\n    if (isEdit) {\n      await updatePolicyMutation.mutateAsync({ name: data.name, injector: data.injector });\n    } else {\n      await createPolicyMutation.mutateAsync({ name: data.name });\n    }\n    onClose();\n    reset({});\n  };\n\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const [address, setAddress] = useState(`/proxy/${defaultData?.name || \"\"}`);\n\n  React.useEffect(() => {\n    const subscription = watch((value, { name }) => {\n      if (name === \"name\") {\n        setAddress(`/proxy/${value.name}`);\n      }\n    });\n    return () => subscription.unsubscribe();\n  }, [watch, setAddress]);\n\n  return (\n    <>\n      {React.cloneElement(props.children, {\n        onClick: () => {\n          onOpen();\n          reset(defaultData);\n          setTimeout(() => setFocus(isEdit ? \"injector\" : \"name\"), 0);\n        },\n      })}\n\n      <Modal isOpen={isOpen} onClose={onClose} size=\"xl\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{(isEdit ? t(\"Edit\") : t(\"Add\")) + t(\"CollectionPanel.Policy\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb={6}>\n            <VStack spacing={6} align=\"flex-start\">\n              <FormControl isInvalid={!!errors?.name}>\n                <FormLabel htmlFor=\"name\">{t(\"CollectionPanel.PolicyName\")}</FormLabel>\n                <Input\n                  {...register(\"name\", {\n                    required: \"name is required\",\n                  })}\n                  id=\"name\"\n                  variant=\"filled\"\n                  readOnly={isEdit}\n                  placeholder={t(\"CollectionPanel.PolicyNameTip\").toString()}\n                />\n                <FormErrorMessage>{errors.name && errors.name.message}</FormErrorMessage>\n              </FormControl>\n\n              <FormControl>\n                <FormLabel htmlFor=\"address\">{t(\"CollectionPanel.PolicyAddress\")}</FormLabel>\n                <Input value={address} variant=\"filled\" readOnly />\n              </FormControl>\n\n              {isEdit ? (\n                <FormControl>\n                  <FormLabel htmlFor=\"injector\">injector</FormLabel>\n                  <Select\n                    {...register(\"injector\", {\n                      required: \"injector is required\",\n                    })}\n                    id=\"injector\"\n                    variant=\"filled\"\n                    placeholder={t(\"CollectionPanel.SelectFunction\").toString()}\n                  >\n                    {(functionListQuery?.data?.data || []).map((item: any) => {\n                      return (\n                        <option key={item.name} value={item.name}>\n                          {item.name}\n                        </option>\n                      );\n                    })}\n                  </Select>\n                </FormControl>\n              ) : null}\n            </VStack>\n          </ModalBody>\n          <ModalFooter>\n            <Button\n              isLoading={createPolicyMutation.isLoading}\n              type=\"submit\"\n              onClick={handleSubmit(onSubmit)}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nAddPolicyModal.displayName = \"AddPolicyModal\";\n\nexport default AddPolicyModal;\n"
  },
  {
    "path": "web/src/pages/app/database/mods/AddRulesModal/index.tsx",
    "content": "import { useState } from \"react\";\nimport React from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport {\n  Button,\n  FormControl,\n  FormErrorMessage,\n  FormLabel,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  Select,\n  useColorMode,\n  useDisclosure,\n  VStack,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport JSONEditor from \"@/components/Editor/JSONEditor\";\nimport { COLOR_MODE } from \"@/constants\";\n\nimport { useCollectionListQuery, useCreateRulesMutation } from \"../../service\";\n\nimport policyTemplate from \"./policyTemplate\";\n\nconst AddRulesModal = (props: {\n  children: React.ReactElement;\n  onSuccessSubmit: (data: any) => void;\n}) => {\n  type FormData = {\n    collectionName: string;\n    value: string;\n  };\n  const {\n    register,\n    handleSubmit,\n    setFocus,\n    control,\n    reset,\n    formState: { errors },\n  } = useForm<FormData>({});\n\n  const createRulesMutation = useCreateRulesMutation();\n  const collectionListQuery = useCollectionListQuery();\n  const [parseError, setParseError] = useState<string | undefined>(\"\");\n  const [error, setError] = useState<string | undefined>(\"\");\n\n  const onSubmit = async (data: any) => {\n    try {\n      JSON.parse(data.value);\n      setParseError(\"\");\n    } catch (errors) {\n      setParseError(errors?.toString());\n      return;\n    }\n    try {\n      const res = await createRulesMutation.mutateAsync(data);\n      if (!res.error) {\n        props.onSuccessSubmit(res.data);\n        onClose();\n      }\n    } catch (errors) {\n      setError(errors?.toString());\n      return;\n    }\n  };\n\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  return (\n    <>\n      {React.cloneElement(props.children, {\n        onClick: () => {\n          onOpen();\n          setError(\"\");\n          setParseError(\"\");\n          reset({\n            collectionName: collectionListQuery?.data?.data[0]?.name,\n            value: JSON.stringify(policyTemplate, null, 2),\n          });\n          setTimeout(() => setFocus(\"collectionName\"), 0);\n        },\n      })}\n\n      <Modal isOpen={isOpen} onClose={onClose} size=\"xl\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"Add\") + t(\"CollectionPanel.Policy\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb={6}>\n            <VStack spacing={6} align=\"flex-start\">\n              <p className=\"text-error-600\">{error}</p>\n              <FormControl isInvalid={!!errors?.collectionName}>\n                <FormLabel htmlFor=\"collectionName\">\n                  {t(\"CollectionPanel.SelectCollection\")}\n                </FormLabel>\n                <Select\n                  {...register(\"collectionName\", {\n                    required: \"collectionName is required\",\n                  })}\n                  placeholder={collectionListQuery?.data?.data?.length ? undefined : \"暂无可选集合\"}\n                  id=\"collectionName\"\n                  variant=\"filled\"\n                >\n                  {(collectionListQuery?.data?.data || []).map((item: any) => {\n                    return (\n                      <option key={item.name} value={item.name}>\n                        {item.name}\n                      </option>\n                    );\n                  })}\n                </Select>\n                <FormErrorMessage>\n                  {errors.collectionName && errors.collectionName.message}\n                </FormErrorMessage>\n              </FormControl>\n\n              <FormControl isInvalid={!!parseError}>\n                <FormLabel htmlFor=\"value\"> {t(\"CollectionPanel.RulesContent\")}</FormLabel>\n                <FormErrorMessage className=\"mb-4\">{parseError}</FormErrorMessage>\n                <Controller\n                  name=\"value\"\n                  control={control}\n                  render={({ field: { onChange, value } }) => (\n                    <div\n                      className={clsx(\"h-[280px]  rounded pr-2\", {\n                        \"bg-lafWhite-400\": !darkMode,\n                        \"bg-lafDark-300\": darkMode,\n                      })}\n                    >\n                      <JSONEditor colorMode={colorMode} value={value} onChange={onChange} />\n                    </div>\n                  )}\n                />\n              </FormControl>\n            </VStack>\n          </ModalBody>\n          <ModalFooter>\n            <Button\n              isLoading={createRulesMutation.isLoading}\n              type=\"submit\"\n              onClick={handleSubmit(onSubmit)}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nAddRulesModal.displayName = \"AddRulesModal\";\n\nexport default AddRulesModal;\n"
  },
  {
    "path": "web/src/pages/app/database/mods/AddRulesModal/policyTemplate.ts",
    "content": "const policyTemplate = {\n  read: true,\n  count: true,\n  update: false,\n  remove: false,\n  add: false,\n};\n\nexport default policyTemplate;\n"
  },
  {
    "path": "web/src/pages/app/database/mods/CreateCollectionModal/index.tsx",
    "content": "import React from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  Button,\n  FormControl,\n  FormErrorMessage,\n  FormLabel,\n  Input,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  useDisclosure,\n  VStack,\n} from \"@chakra-ui/react\";\n\nimport { useCreateDBMutation } from \"../../service\";\nimport useDBMStore from \"../../store\";\nconst CreateCollectionModal = (props: { collection?: any; children: React.ReactElement }) => {\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { t } = useTranslation();\n  const store = useDBMStore();\n  const { collection, children } = props;\n\n  const isEdit = !!collection;\n\n  type FormData = {\n    name: string;\n  };\n\n  const {\n    register,\n    handleSubmit,\n    setFocus,\n    reset,\n    formState: { errors },\n  } = useForm<FormData>();\n\n  const createDBMutation = useCreateDBMutation();\n\n  const onSubmit = async (data: any) => {\n    await createDBMutation.mutateAsync({ name: data.name });\n    store.setCurrentDB(data);\n    onClose();\n    reset({});\n  };\n\n  return (\n    <>\n      {React.cloneElement(children, {\n        onClick: () => {\n          onOpen();\n          reset({});\n          setTimeout(() => setFocus(\"name\"), 0);\n        },\n      })}\n      <Modal isOpen={isOpen} onClose={onClose} size=\"lg\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"CollectionPanel.AddCollection\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb={6}>\n            <VStack spacing={6} align=\"flex-start\">\n              <FormControl isInvalid={!!errors?.name}>\n                <FormLabel htmlFor=\"name\">{t(\"CollectionPanel.CollectionName\")}</FormLabel>\n                <Input\n                  {...register(\"name\", {\n                    required: \"name is required\",\n                    pattern: {\n                      value: /^[A-Za-z][A-Za-z0-9-_]{2,31}$/,\n                      message: t(\"CollectionPanel.CollectionNameRule\"),\n                    },\n                  })}\n                  id=\"name\"\n                  variant=\"filled\"\n                  readOnly={isEdit}\n                  placeholder={t(\"CollectionPanel.CollectionPlaceholder\").toString()}\n                />\n                <FormErrorMessage>{errors.name && errors.name.message}</FormErrorMessage>\n              </FormControl>\n            </VStack>\n          </ModalBody>\n\n          <ModalFooter>\n            <Button\n              isLoading={createDBMutation.isLoading}\n              type=\"submit\"\n              onClick={handleSubmit(onSubmit)}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nCreateCollectionModal.displayName = \"CreateModal\";\n\nexport default CreateCollectionModal;\n"
  },
  {
    "path": "web/src/pages/app/database/mods/DeleteCollectionModal/index.tsx",
    "content": "import { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  Button,\n  FormControl,\n  Input,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  useDisclosure,\n} from \"@chakra-ui/react\";\n\nimport { RecycleDeleteIcon } from \"@/components/CommonIcon\";\nimport IconText from \"@/components/IconText\";\n\nimport { useDeleteDBMutation } from \"../../service\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\nfunction DeleteCollectionModal(props: { database: any }) {\n  const { database } = props;\n  const { t } = useTranslation();\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const deleteDBMutation = useDeleteDBMutation({\n    onSuccess() {\n      onClose();\n    },\n  });\n  const { showError } = useGlobalStore();\n\n  const { register, handleSubmit, setFocus, reset, setValue } = useForm<{\n    name: string;\n  }>();\n\n  return (\n    <>\n      <IconText\n        onClick={() => {\n          reset();\n          onOpen();\n          setTimeout(() => {\n            setFocus(\"name\");\n          }, 0);\n        }}\n        icon={<RecycleDeleteIcon fontSize={16} />}\n        text={t(\"Delete\")}\n        className=\"hover:!text-error-600\"\n      />\n\n      <Modal isOpen={isOpen} onClose={onClose}>\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"CollectionPanel.DeleteCollection\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb={6}>\n            <p className=\"mb-2\">\n              {t(\"CollectionPanel.DeleteCollectionTip\")}\n              <span className=\"mx-1 font-bold\">{database.name}</span>\n              {t(\"DeleteTip\")}\n            </p>\n            <p className=\"mb-4\">\n              {t(\"CollectionPanel.InputName\")}\n              <span className=\"mx-1 font-bold text-red-500\">{database.name}</span>\n              {t(\"ToConfirm\")}\n            </p>\n            <FormControl>\n              <Input\n                {...register(\"name\")}\n                id=\"name\"\n                placeholder={database?.name}\n                onChange={(e) => {\n                  setValue(\"name\", e.target.value.trim());\n                }}\n              />\n            </FormControl>\n          </ModalBody>\n\n          <ModalFooter>\n            <Button\n              isLoading={deleteDBMutation.isLoading}\n              onClick={handleSubmit(async (data) => {\n                if (data.name !== database.name) {\n                  showError(t(\"NameNotMatch\"));\n                  return;\n                } else {\n                  await deleteDBMutation.mutateAsync({ name: database.name });\n                }\n              })}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n}\n\nexport default DeleteCollectionModal;\n"
  },
  {
    "path": "web/src/pages/app/database/mods/IndexModal/index.tsx",
    "content": "import React from \"react\";\nimport { ArrowDownIcon, ArrowUpIcon } from \"@chakra-ui/icons\";\nimport {\n  Button,\n  Center,\n  CloseButton,\n  HStack,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  Spinner,\n  Table,\n  TableContainer,\n  Tag,\n  TagLabel,\n  Tbody,\n  Td,\n  Th,\n  Thead,\n  Tr,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport PopConfirm from \"@/components/PopConfirm\";\n\nimport { useCollectionIndexQuery, useDropIndexMutation } from \"../../service\";\nimport AddIndexModal from \"../AddIndexModal\";\n\nconst IndexModal = (props: { children: React.ReactElement }) => {\n  const { children } = props;\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { data: indexList, isLoading } = useCollectionIndexQuery();\n  const dropIndexMutation = useDropIndexMutation();\n\n  return (\n    <>\n      {React.cloneElement(children, {\n        onClick: () => {\n          onOpen();\n        },\n      })}\n      <Modal isOpen={isOpen} onClose={onClose} size=\"4xl\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader> {t(\"CollectionPanel.IndexManage\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb={6}>\n            <TableContainer>\n              <Table size=\"sm\" layout=\"fixed\">\n                <Thead>\n                  <Tr h={8}>\n                    <Th>{t(\"CollectionPanel.IndexName\")}</Th>\n                    <Th>{t(\"CollectionPanel.IndexKey\")}</Th>\n                    <Th>{t(\"Properties\")}</Th>\n                    <Th w={20}>{t(\"Action\")}</Th>\n                  </Tr>\n                </Thead>\n                <Tbody>\n                  {indexList?.list?.map((v: any) => (\n                    <Tr key={v.name}>\n                      <Td className=\"truncate\">{v.name}</Td>\n                      <Td overflowX=\"scroll\">\n                        <HStack>\n                          {Object.entries(v.key || {}).map(([name, type]) => (\n                            <Tag\n                              key={name}\n                              variant=\"outline\"\n                              colorScheme=\"cyan\"\n                              flexShrink={0}\n                              maxW=\"unset\"\n                            >\n                              <TagLabel>{name}</TagLabel>\n                              <TagLabel color=\"gray\" mx={1}>\n                                |\n                              </TagLabel>\n                              <TagLabel color=\"orange\" userSelect=\"none\">\n                                {type === 1 && <ArrowUpIcon />}\n                                {type === -1 && <ArrowDownIcon />}\n                                {typeof type === \"string\" && `(${type})`}\n                              </TagLabel>\n                            </Tag>\n                          ))}\n                        </HStack>\n                      </Td>\n                      <Td overflowX=\"scroll\">\n                        <HStack>\n                          {v.unique && <Tag userSelect=\"none\">UNIQUE</Tag>}\n                          {v.max && (\n                            <Tag userSelect=\"none\">\n                              <TagLabel>MAX</TagLabel>\n                              <TagLabel color=\"gray\" mx={1}>\n                                |\n                              </TagLabel>\n                              <TagLabel color=\"orange\" userSelect=\"none\">\n                                {v.max}\n                              </TagLabel>\n                            </Tag>\n                          )}\n                          {!!v.expireAfterSeconds && (\n                            <Tag userSelect=\"none\">\n                              <TagLabel>TTL</TagLabel>\n                              <TagLabel color=\"gray\" mx={1}>\n                                |\n                              </TagLabel>\n                              <TagLabel color=\"orange\" userSelect=\"none\">\n                                {v.expireAfterSeconds}\n                              </TagLabel>\n                            </Tag>\n                          )}\n                        </HStack>\n                      </Td>\n                      <Td>\n                        <PopConfirm\n                          onConfirm={() => dropIndexMutation.mutateAsync(v.name)}\n                          title={String(t(\"Delete\"))}\n                          placement=\"left\"\n                          description={t(\"CollectionPanel.ConfirmDeleteIndex\")}\n                        >\n                          <CloseButton fontSize={10} />\n                        </PopConfirm>\n                      </Td>\n                    </Tr>\n                  ))}\n                </Tbody>\n              </Table>\n              {isLoading && (\n                <Center className=\"min-h-[360px]\">\n                  <Spinner />\n                </Center>\n              )}\n            </TableContainer>\n          </ModalBody>\n          <ModalFooter>\n            <AddIndexModal>\n              <Button>{t(\"CollectionPanel.AddIndex\")}</Button>\n            </AddIndexModal>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nIndexModal.displayName = \"IndexModal\";\n\nexport default IndexModal;\n"
  },
  {
    "path": "web/src/pages/app/database/service.ts",
    "content": "import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport parse, { ParseMode } from \"ejson-shell-parser\";\nimport { t } from \"i18next\";\n\nimport useDBMStore from \"./store\";\n\nimport {\n  CollectionControllerCreate,\n  CollectionControllerFindAll,\n  CollectionControllerRemove,\n  PolicyControllerCreate,\n  PolicyControllerFindAll,\n  PolicyControllerRemove,\n  PolicyControllerUpdate,\n  PolicyRuleControllerCreate,\n  PolicyRuleControllerFindAll,\n  PolicyRuleControllerRemove,\n  PolicyRuleControllerUpdate,\n} from \"@/apis/v1/apps\";\nimport useDB from \"@/hooks/useDB\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nconst queryKeys = {\n  useCollectionListQuery: [\"useCollectionListQuery\"],\n  useEntryDataQuery: (db: string) => [\"useEntryDataQuery\", db],\n  usePolicyListQuery: [\"usePolicyListQuery\"],\n  useRulesListQuery: (name: string) => [\"useRulesListQuery\", name],\n  useCollectionIndexQuery: (db: string) => [\"useCollectionIndexQuery\", db],\n};\n\nexport const useCollectionListQuery = (config?: { onSuccess: (data: any) => void }) => {\n  return useQuery(\n    queryKeys.useCollectionListQuery,\n    () => {\n      return CollectionControllerFindAll({});\n    },\n    {\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useEntryDataQuery = (params: any, onSuccess: (data: any) => void) => {\n  const { currentDB } = useDBMStore();\n  const { db } = useDB();\n  return useQuery(\n    [queryKeys.useEntryDataQuery(currentDB?.name || \"\"), params],\n    async () => {\n      if (!currentDB) return;\n      const { pageSize = 10, page = 1, _id } = params;\n\n      const parse_query = (q: string) => {\n        // no find { and }\n        if (/^[^{}]*$/.test(q)) {\n          return { _id: q };\n        }\n        try {\n          return parse(q, {\n            mode: ParseMode.Strict,\n          });\n        } catch (err) {}\n      };\n      const query = _id ? parse_query(_id) : {};\n      if (!query) {\n        return { list: [], total: 0, page, pageSize };\n      }\n\n      // 执行数据查询\n      const res = await db\n        .collection(currentDB?.name)\n        .where(query)\n        .limit(pageSize)\n        .skip((page - 1) * pageSize)\n        .get();\n\n      // 获取数据总数\n      const { total } = await db.collection(currentDB?.name).where(query).count();\n      onSuccess && onSuccess(res);\n      return { list: res.data, total, page, pageSize: pageSize };\n    },\n    {\n      enabled: !!currentDB,\n    },\n  );\n};\n\nexport const useCreateDBMutation = (config?: { onSuccess: (data: any) => void }) => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (values: any) => {\n      return CollectionControllerCreate(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          await queryClient.invalidateQueries(queryKeys.useCollectionListQuery);\n          config?.onSuccess && config.onSuccess(data);\n        }\n      },\n    },\n  );\n};\n\nexport const useDeleteDBMutation = (config?: { onSuccess: (data: any) => void }) => {\n  const globalStore = useGlobalStore();\n  const queryClient = useQueryClient();\n  const store = useDBMStore();\n  return useMutation(\n    (values: any) => {\n      return CollectionControllerRemove(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          store.setCurrentDB(undefined);\n          await queryClient.invalidateQueries(queryKeys.useCollectionListQuery);\n          globalStore.showSuccess(t(\"DeleteSuccess\"));\n          config && config.onSuccess(data);\n        }\n      },\n    },\n  );\n};\n\nexport const useAddDataMutation = (config?: { onSuccess: (data: any) => void }) => {\n  const { currentDB } = useDBMStore();\n  const globalStore = useGlobalStore();\n  const { db } = useDB();\n  const queryClient = useQueryClient();\n\n  return useMutation(\n    async (values: any) => {\n      const result = await db.collection(currentDB?.name!).add(values, {\n        // if the input values is an array, the default is batch insertion\n        multi: Array.isArray(values),\n      });\n      return result;\n    },\n    {\n      onSuccess(data) {\n        if (data.ok) {\n          globalStore.showSuccess(t(\"AddSuccess\"));\n          queryClient.invalidateQueries([queryKeys.useEntryDataQuery(currentDB?.name || \"\")]);\n          config && config.onSuccess(data);\n        }\n      },\n    },\n  );\n};\n\nexport const useUpdateDataMutation = (config?: { onSuccess: (data: any) => void }) => {\n  const { currentDB } = useDBMStore();\n  const globalStore = useGlobalStore();\n  const { db } = useDB();\n  const queryClient = useQueryClient();\n\n  return useMutation(\n    async (values: any) => {\n      const query = db.collection(currentDB?.name!).where({ _id: values._id });\n      delete values._id;\n      const result = query.update({ ...values }, { merge: false });\n      return result;\n    },\n    {\n      onSuccess(data) {\n        if (data.ok) {\n          globalStore.showSuccess(t(\"UpdateSuccess\"));\n          queryClient.invalidateQueries([queryKeys.useEntryDataQuery(currentDB?.name || \"\")]);\n          config && config.onSuccess(data);\n        } else {\n          globalStore.showError(data.error);\n        }\n      },\n    },\n  );\n};\n\nexport const useDeleteDataMutation = (config?: { onSuccess: (data: any) => void }) => {\n  const { currentDB } = useDBMStore();\n  const globalStore = useGlobalStore();\n  const { db } = useDB();\n  const queryClient = useQueryClient();\n\n  return useMutation(\n    async (values: any) => {\n      const result = await db.collection(currentDB?.name!).where({ _id: values._id }).remove();\n      return result;\n    },\n    {\n      onSuccess(data) {\n        if (data.ok) {\n          globalStore.showSuccess(t(\"DeleteSuccess\"));\n          queryClient.invalidateQueries([queryKeys.useEntryDataQuery(currentDB?.name || \"\")]);\n          config && config.onSuccess(data);\n        } else {\n          globalStore.showError(data.error);\n        }\n      },\n    },\n  );\n};\n\nexport const usePolicyListQuery = (onSuccess?: (data: any) => void) => {\n  return useQuery(\n    queryKeys.usePolicyListQuery,\n    () => {\n      return PolicyControllerFindAll({});\n    },\n    {\n      onSuccess: onSuccess,\n    },\n  );\n};\n\nexport const useCreatePolicyMutation = () => {\n  const globalStore = useGlobalStore();\n  const queryClient = useQueryClient();\n  const store = useDBMStore();\n  return useMutation(\n    (values: Definitions.CreatePolicyDto) => {\n      return PolicyControllerCreate(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          globalStore.showSuccess(t(\"AddSuccess\"));\n          await queryClient.invalidateQueries(queryKeys.usePolicyListQuery);\n          store.setCurrentPolicy(data.data);\n        }\n      },\n    },\n  );\n};\n\nexport const useUpdatePolicyMutation = () => {\n  const globalStore = useGlobalStore();\n  const queryClient = useQueryClient();\n  return useMutation(\n    (values: any) => {\n      return PolicyControllerUpdate(values);\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          globalStore.showSuccess(t(\"UpdateSuccess\"));\n          queryClient.invalidateQueries(queryKeys.usePolicyListQuery);\n        } else {\n        }\n      },\n    },\n  );\n};\n\nexport const useDeletePolicyMutation = () => {\n  const globalStore = useGlobalStore();\n  const queryClient = useQueryClient();\n  const store = useDBMStore();\n  return useMutation(\n    (values) => {\n      return PolicyControllerRemove({ name: values });\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          store.setCurrentPolicy(undefined);\n          globalStore.showSuccess(t(\"DeleteSuccess\"));\n          await queryClient.invalidateQueries(queryKeys.usePolicyListQuery);\n        }\n      },\n    },\n  );\n};\n\nexport const useRulesListQuery = (onSuccess?: (data: any) => void) => {\n  const { currentPolicy } = useDBMStore();\n  return useQuery(\n    [queryKeys.useRulesListQuery(currentPolicy?.name || \"\")],\n    () => {\n      return PolicyRuleControllerFindAll({ name: currentPolicy?.name || \"\" });\n    },\n    {\n      onSuccess(data) {\n        onSuccess && onSuccess(data);\n      },\n      enabled: !!currentPolicy,\n    },\n  );\n};\n\nexport const useCreateRulesMutation = (onSuccess?: () => void) => {\n  const { currentPolicy } = useDBMStore();\n  const globalStore = useGlobalStore();\n  return useMutation(\n    (values: any) => {\n      return PolicyRuleControllerCreate({ ...values, name: currentPolicy?.name || \"\" });\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          globalStore.showSuccess(t(\"AddSuccess\"));\n          onSuccess && onSuccess();\n        }\n      },\n    },\n  );\n};\n\nexport const useUpdateRulesMutation = (onSuccess?: (data: any) => void) => {\n  const { currentPolicy } = useDBMStore();\n  const globalStore = useGlobalStore();\n  return useMutation(\n    (values: any) => {\n      return PolicyRuleControllerUpdate({ ...values, name: currentPolicy?.name || \"\" });\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          globalStore.showSuccess(t(\"UpdateSuccess\"));\n          onSuccess && onSuccess(data.data);\n        }\n      },\n    },\n  );\n};\n\nexport const useDeleteRuleMutation = (onSuccess?: () => void) => {\n  const { currentPolicy } = useDBMStore();\n  const globalStore = useGlobalStore();\n  return useMutation(\n    (values: any) => {\n      return PolicyRuleControllerRemove({ ...values, name: currentPolicy?.name || \"\" });\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          globalStore.showSuccess(t(\"DeleteSuccess\"));\n          onSuccess && onSuccess();\n        }\n      },\n    },\n  );\n};\n\nexport const useCollectionIndexQuery = (config?: { onSuccess: (data: any) => void }) => {\n  const { currentDB } = useDBMStore();\n  const { db } = useDB();\n\n  return useQuery(\n    queryKeys.useCollectionIndexQuery(currentDB?.name!),\n    async () => {\n      const result = await db.collection(currentDB?.name!).listIndexes();\n      return result;\n    },\n    {\n      onSuccess: config?.onSuccess,\n      enabled: !!currentDB,\n    },\n  );\n};\n\nexport const useCreateIndexMutation = (config?: { onSuccess: (data: any) => void }) => {\n  const { currentDB } = useDBMStore();\n  const globalStore = useGlobalStore();\n  const { db } = useDB();\n  const queryClient = useQueryClient();\n\n  return useMutation(\n    async (values: any) => {\n      const result = await db.collection(currentDB?.name!).createIndex(values.keys, values.options);\n      return result;\n    },\n    {\n      onSuccess(data) {\n        if (data.ok) {\n          globalStore.showSuccess(t(\"AddSuccess\"));\n          queryClient.invalidateQueries(queryKeys.useCollectionIndexQuery(currentDB?.name!));\n          config && config.onSuccess(data);\n        } else {\n          globalStore.showError(data.error.codeName);\n        }\n      },\n    },\n  );\n};\n\nexport const useDropIndexMutation = (config?: { onSuccess: (data: any) => void }) => {\n  const { currentDB } = useDBMStore();\n  const globalStore = useGlobalStore();\n  const { db } = useDB();\n  const queryClient = useQueryClient();\n\n  return useMutation(\n    async (indexName: string) => {\n      const result = await db.collection(currentDB?.name!).dropIndex(indexName);\n      return result;\n    },\n    {\n      onSuccess(data) {\n        if (data.ok) {\n          globalStore.showSuccess(t(\"DeleteSuccess\"));\n          queryClient.invalidateQueries(queryKeys.useCollectionIndexQuery(currentDB?.name!));\n          config && config.onSuccess(data);\n        } else {\n          globalStore.showError(data.error.codeName);\n        }\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/app/database/store.ts",
    "content": "import { create } from \"zustand\";\nimport { devtools } from \"zustand/middleware\";\nimport { immer } from \"zustand/middleware/immer\";\n\nimport { TDB } from \"@/apis/typing\";\n\ntype State = {\n  currentShow: \"DB\" | \"Policy\";\n  currentDB?: TDB | undefined;\n  currentPolicy?: any;\n  setCurrentShow: (currentItem: \"DB\" | \"Policy\") => void;\n  setCurrentDB: (currentDB: TDB | undefined) => void;\n  setCurrentPolicy: (currentPolicy: any) => void;\n};\n\nconst useDBMStore = create<State>()(\n  devtools(\n    immer((set) => ({\n      currentShow: \"DB\",\n      currentDB: undefined,\n      currentPolicy: undefined,\n      setCurrentDB: async (currentDB: any) => {\n        set((state) => {\n          state.currentDB = currentDB;\n          state.setCurrentShow(\"DB\");\n        });\n      },\n      setCurrentPolicy: async (currentPolicy: any) => {\n        set((state) => {\n          state.currentPolicy = currentPolicy;\n          state.setCurrentShow(\"Policy\");\n        });\n      },\n      setCurrentShow: async (currentItem: \"DB\" | \"Policy\") => {\n        set((state) => {\n          state.currentShow = currentItem;\n        });\n      },\n    })),\n  ),\n);\n\nexport default useDBMStore;\n"
  },
  {
    "path": "web/src/pages/app/functions/index.tsx",
    "content": "/****************************\n * cloud functions index page\n ***************************/\n\nimport { useRef } from \"react\";\n\nimport Content from \"@/components/Content\";\nimport { Col, Row } from \"@/components/Grid\";\nimport Resize from \"@/components/Resize\";\n\nimport StatusBar from \"../mods/StatusBar\";\n\nimport ConsolePanel from \"./mods/ConsolePanel\";\nimport DebugPanel from \"./mods/DebugPanel\";\nimport DependencePanel from \"./mods/DependencePanel\";\nimport EditorPanel from \"./mods/EditorPanel\";\nimport FunctionPanel from \"./mods/FunctionPanel\";\nimport HeadPanel from \"./mods/HeadPanel\";\n\nimport useCustomSettingStore from \"@/pages/customSetting\";\nfunction FunctionPage() {\n  const containerRef = useRef<HTMLDivElement>(null);\n  const functionPageConfig = useCustomSettingStore((store) => store.layoutInfo.functionPage);\n\n  return (\n    <Content>\n      <Row ref={containerRef}>\n        <Col style={{ width: functionPageConfig.SideBar.style.width }}>\n          <FunctionPanel />\n          <Resize\n            type=\"y\"\n            pageId=\"functionPage\"\n            panelId=\"DependencePanel\"\n            reverse\n            containerRef={containerRef}\n            lineWidth={4}\n          />\n          <Row {...functionPageConfig.DependencePanel}>\n            <DependencePanel />\n          </Row>\n        </Col>\n        <Resize\n          type=\"x\"\n          pageId=\"functionPage\"\n          panelId=\"SideBar\"\n          containerRef={containerRef}\n          lineWidth={4}\n        />\n        <Col>\n          <HeadPanel />\n          <Row>\n            <Col>\n              <Row>\n                <EditorPanel />\n              </Row>\n              <Resize\n                type=\"y\"\n                pageId=\"functionPage\"\n                panelId=\"ConsolePanel\"\n                reverse\n                containerRef={containerRef}\n              />\n              <Row {...functionPageConfig.ConsolePanel}>\n                <ConsolePanel />\n              </Row>\n            </Col>\n            <Resize\n              type=\"x\"\n              pageId=\"functionPage\"\n              panelId=\"RightPanel\"\n              reverse\n              containerRef={containerRef}\n            />\n            <Col style={{ width: functionPageConfig.RightPanel.style.width }}>\n              <DebugPanel containerRef={containerRef} />\n            </Col>\n          </Row>\n        </Col>\n      </Row>\n      <StatusBar />\n    </Content>\n  );\n}\n\nexport default FunctionPage;\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/AIChatPanel/index.tsx",
    "content": "import { KeyboardEvent, useCallback, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { FaRegStopCircle } from \"react-icons/fa\";\nimport { Avatar, Box, Button, Textarea, VStack } from \"@chakra-ui/react\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport { debounce } from \"lodash\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { LafAILogoIcon } from \"@/components/CommonIcon\";\nimport Markdown from \"@/components/Markdown\";\n\nimport useSiteSettingStore from \"@/pages/siteSetting\";\n\nexport default function AIChatPanel() {\n  const { t } = useTranslation();\n  const { siteSettings } = useSiteSettingStore();\n\n  const CancelToken = axios.CancelToken;\n  let source = CancelToken.source();\n\n  const contentDomRef = useRef<HTMLDivElement>(null);\n  const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n  const [prompt, setPrompt] = useState(\"\");\n\n  const [aiChatHistory, setAiChatHistory] = useState([\n    {\n      _id: uuidv4(),\n      text: t(\"AIWelcomeMessage\"),\n      isAi: true,\n    },\n  ]);\n\n  const [contentHeight, setContentHeight] = useState(\"calc(100% - 120px)\");\n  const [isComposing, setIsComposing] = useState(false);\n\n  async function handleSubmit() {\n    if (generateCode.isLoading) {\n      generateCode.reset();\n      source.cancel();\n      // If the last one of chat history is '...' delete it\n      if (aiChatHistory[aiChatHistory.length - 1].text === \"...\") {\n        setAiChatHistory((prev) => {\n          const newAiChatHistory = [...prev];\n          newAiChatHistory.pop();\n          return newAiChatHistory;\n        });\n      }\n      return;\n    } else {\n      if (!prompt) return;\n      generateCode.reset();\n      setAiChatHistory((prev) => {\n        return [\n          ...prev,\n          {\n            _id: uuidv4(),\n            text: prompt,\n            isAi: false,\n          },\n          {\n            _id: uuidv4(),\n            text: \"...\",\n            isAi: true,\n          },\n        ];\n      });\n      setTimeout(() => {\n        contentDomRef.current?.scrollTo({\n          top: contentDomRef.current.scrollHeight,\n          behavior: \"smooth\",\n        });\n      }, 100);\n      setPrompt(\"\");\n      resetHeight();\n      await generateCode.mutateAsync({\n        value: prompt,\n      });\n    }\n  }\n\n  const { data: generateCodeRes, ...generateCode } = useMutation((params: any) => {\n    textareaRef.current?.focus();\n    return axios({\n      url: siteSettings.ai_pilot_url?.value,\n      method: \"POST\",\n      data: params,\n      cancelToken: source.token,\n      responseType: \"stream\",\n      onDownloadProgress: function (progressEvent) {\n        const xhr = progressEvent.event.target;\n\n        const { responseText } = xhr;\n        // 把 aiChatHistory 最后一个的 text 替换成 responseText\n        setAiChatHistory((prev) => {\n          const newAiChatHistory = [...prev];\n          newAiChatHistory[newAiChatHistory.length - 1].text = responseText;\n          return newAiChatHistory;\n        });\n\n        setTimeout(() => {\n          contentDomRef.current?.scrollTo({\n            top: contentDomRef.current.scrollHeight,\n            behavior: \"smooth\",\n          });\n        }, 100);\n      },\n    });\n  });\n\n  const adjustTextareaHeight = useCallback(\n    debounce(() => {\n      const textarea = textareaRef.current;\n      if (textarea) {\n        textarea.style.height = \"auto\";\n        const scrollHeight = textarea.scrollHeight;\n        const newHeight = scrollHeight <= 120 ? 120 : Math.min(scrollHeight, 280);\n        textarea.style.height = `${newHeight}px`;\n        setContentHeight(`calc(100% - ${newHeight}px)`);\n      }\n    }, 100),\n    [],\n  );\n\n  useEffect(() => {\n    return () => {\n      adjustTextareaHeight.cancel();\n    };\n  }, [adjustTextareaHeight]);\n\n  const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n    if (e.key === \"Enter\" && !e.shiftKey && !isComposing) {\n      e.preventDefault();\n      handleSubmit();\n    }\n  };\n\n  const resetHeight = useCallback(() => {\n    const textarea = textareaRef.current;\n    if (textarea) {\n      textarea.style.height = \"120px\";\n      setContentHeight(\"calc(100% - 120px)\");\n    }\n  }, []);\n\n  const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n    adjustTextareaHeight();\n    setPrompt(e.target.value);\n  };\n\n  return (\n    <VStack height=\"100%\">\n      <Box\n        ref={contentDomRef}\n        flex={1}\n        width=\"100%\"\n        overflow=\"auto\"\n        height={contentHeight}\n        transition=\"height 0.3s ease-in-out\"\n        padding={[1, 1, 1, 2]}\n      >\n        <ul>\n          {aiChatHistory.map((item, index) => (\n            <li key={item._id} className=\"mt-4 w-full overflow-hidden\">\n              <div className=\"flex\">\n                <div className=\"mr-2 w-[24px]\">\n                  {item.isAi ? (\n                    <LafAILogoIcon className=\"mr-2\" />\n                  ) : (\n                    <Avatar className=\"mr-2\" size=\"xs\" />\n                  )}\n                </div>\n                <div className=\"mt-1 flex-1 overflow-auto\">\n                  {item.isAi ? (\n                    <Markdown\n                      source={item.text}\n                      formatLink\n                      isChatting={index === aiChatHistory.length - 1 && generateCode.isLoading}\n                    />\n                  ) : (\n                    <div className=\"break-all\">{item.text}</div>\n                  )}\n                </div>\n              </div>\n            </li>\n          ))}\n        </ul>\n      </Box>\n      <Box width=\"100%\" position=\"relative\" minHeight=\"120px\" maxHeight=\"280px\">\n        <Textarea\n          value={prompt}\n          onKeyDown={handleKeyDown}\n          onChange={handleChange}\n          onCompositionStart={() => setIsComposing(true)}\n          onCompositionEnd={() => setIsComposing(false)}\n          minHeight=\"120px\"\n          maxHeight=\"280px\"\n          overflow=\"auto\"\n          ref={textareaRef}\n          resize=\"none\"\n          transition=\"height 0.3s ease-in-out\"\n          sx={{\n            \"&::-webkit-scrollbar\": {\n              width: \"8px\",\n            },\n            \"&::-webkit-scrollbar-thumb\": {\n              backgroundColor: \"gray.300\",\n              borderRadius: \"4px\",\n            },\n          }}\n        />\n        <Button\n          rounded=\"md\"\n          onClick={handleSubmit}\n          position=\"absolute\"\n          bottom=\"4\"\n          right=\"4\"\n          zIndex={1}\n        >\n          {generateCode.isLoading ? <FaRegStopCircle fontSize={22} /> : t(\"Send\")}\n        </Button>\n      </Box>\n    </VStack>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/BottomPanel/index.tsx",
    "content": "import { Button, HStack } from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport Panel from \"@/components/Panel\";\n\nimport useCustomSettingStore from \"@/pages/customSetting\";\n\nfunction BottomPanel() {\n  const store = useCustomSettingStore();\n\n  return (\n    <Panel className=\" !flex-row justify-between\">\n      <HStack spacing={2}>\n        <Button\n          size=\"xs\"\n          variant=\"plain\"\n          onClick={() => store.togglePanel(\"functionPage\", \"DependencePanel\")}\n        >\n          {t(\"FunctionPanel.Dependence\")}\n        </Button>\n        <Button\n          size=\"xs\"\n          variant=\"plain\"\n          onClick={() => store.togglePanel(\"functionPage\", \"ConsolePanel\")}\n        >\n          Console\n        </Button>\n      </HStack>\n      <HStack spacing={2}>\n        <Button\n          size=\"xs\"\n          variant=\"plain\"\n          onClick={() => store.togglePanel(\"functionPage\", \"RightPanel\")}\n        >\n          {t(\"FunctionPanel.InterfaceDebug\")}\n        </Button>\n      </HStack>\n    </Panel>\n  );\n}\n\nexport default BottomPanel;\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/ConsolePanel/index.tsx",
    "content": "import { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { LogViewer } from \"@patternfly/react-log-viewer\";\n\nimport CopyText from \"@/components/CopyText\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport Panel from \"@/components/Panel\";\nimport { formatDate } from \"@/utils/format\";\nimport { decodeData } from \"@/utils/handleData\";\n\nimport useFunctionStore from \"../../store\";\n\nimport useCustomSettingStore from \"@/pages/customSetting\";\n\nfunction ConsolePanel() {\n  const { t } = useTranslation();\n  const { currentRequestId, currentFuncLogs, currentFuncTimeUsage } = useFunctionStore();\n  const logsArray = useMemo(() => {\n    if (!currentFuncLogs) return [\"\"];\n    const strArray = JSON.parse(decodeData(currentFuncLogs));\n    const regex = /(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z)/;\n    return strArray.map((item: string) => {\n      const match = item.match(regex);\n      if (match) {\n        const newTimeStr = formatDate(match[1], \"YYYY-MM-DD HH:mm:ss.SSS\");\n        return item.replace(match[1], newTimeStr);\n      } else {\n        return item;\n      }\n    });\n  }, [currentFuncLogs]);\n  const { commonSettings } = useCustomSettingStore();\n\n  return (\n    <Panel className=\"flex-1\">\n      <Panel.Header title=\"Console\" pageId=\"functionPage\" panelId=\"ConsolePanel\"></Panel.Header>\n      <div\n        className=\"text-sm relative flex flex-col overflow-y-auto px-2 font-mono\"\n        style={{ height: \"100%\", fontSize: commonSettings.fontSize - 1 }}\n      >\n        {logsArray && logsArray[0] !== \"\" ? (\n          <LogViewer\n            data={logsArray}\n            hasLineNumbers={false}\n            height={\"100%\"}\n            header={\n              <p className=\"flex w-full justify-between\">\n                <span className=\"mb-1 ml-1\">\n                  RequestID: {currentRequestId} <CopyText text={String(currentRequestId)} />\n                </span>\n                <span className=\"mb-1 ml-1 text-grayModern-400\">\n                  Time-Usage: {currentFuncTimeUsage}ms\n                </span>\n              </p>\n            }\n            scrollToRow={10000}\n          />\n        ) : (\n          <EmptyBox hideIcon>\n            <span>{t(\"NoInfo\")}</span>\n          </EmptyBox>\n        )}\n      </div>\n    </Panel>\n  );\n}\n\nexport default ConsolePanel;\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/DebugPanel/BodyParamsTab/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useFieldArray, useForm, useWatch } from \"react-hook-form\";\nimport { CloseIcon } from \"@chakra-ui/icons\";\nimport {\n  Box,\n  Button,\n  Input,\n  Radio,\n  RadioGroup,\n  Select,\n  Stack,\n  Table,\n  TableContainer,\n  Tbody,\n  Td,\n  Th,\n  Thead,\n  Tr,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport JSONEditor from \"@/components/Editor/JSONEditor\";\n\ntype TContentType = \"application/json\" | \"multipart/form-data\";\n\ntype Params = {\n  name: string;\n  value: string | File[];\n  type: string;\n};\n\ntype FormValues = {\n  params: Params[];\n};\n\nconst ContentType = {\n  JSON: \"application/json\",\n  FORM_DATA: \"multipart/form-data\",\n};\n\nfunction BodyParamsTab(props: {\n  onChange(values: { contentType: string; data: any }): void;\n  paramsList: { contentType: string; data: any };\n}) {\n  const { onChange, paramsList } = props;\n  const { colorMode } = useColorMode();\n\n  const [dataType, setDataType] = useState<string>(ContentType.JSON);\n\n  const { register, control, watch, getValues } = useForm<FormValues>({\n    defaultValues: {\n      params: [{ name: \"\", value: \"\", type: ContentType.FORM_DATA }],\n    },\n  });\n\n  const { fields, append, remove } = useFieldArray({\n    name: \"params\",\n    control,\n  });\n  const darkMode = colorMode === \"dark\";\n\n  useWatch({\n    control,\n    name: \"params\",\n  });\n\n  useEffect(() => {\n    const subscription = watch((value) => {\n      const formData = new FormData();\n      (value.params || []).forEach((v: any) => {\n        formData.append(v.name, v.type === ContentType.FORM_DATA ? v.value[0] : v.value);\n      });\n\n      onChange &&\n        onChange({\n          contentType: ContentType.FORM_DATA,\n          data: formData,\n        });\n    });\n    return () => subscription.unsubscribe();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [watch]);\n\n  return (\n    <div className=\"h-full\">\n      <RadioGroup\n        defaultValue={ContentType.JSON}\n        size=\"sm\"\n        px=\"4\"\n        mb=\"2\"\n        onChange={(v: TContentType) => setDataType(v)}\n      >\n        <Stack spacing={4} direction=\"row\">\n          <Radio value={ContentType.JSON}>json</Radio>\n          <Radio value={ContentType.FORM_DATA}>form data</Radio>\n        </Stack>\n      </RadioGroup>\n      {dataType === ContentType.JSON ? (\n        <JSONEditor\n          colorMode={colorMode}\n          onChange={(values) => {\n            try {\n              const jsonValues = JSON.parse(values || \"{}\");\n              onChange &&\n                onChange({\n                  contentType: ContentType.JSON,\n                  data: jsonValues,\n                });\n            } catch (e) {}\n          }}\n          value={JSON.stringify(paramsList?.data ?? {}, null, 2)}\n        />\n      ) : (\n        <div>\n          <form>\n            <TableContainer>\n              <Table size=\"sm\" variant={\"params\"}>\n                <Thead>\n                  <Tr>\n                    <Th className=\"text-grayModern-500\">{t(\"FunctionPanel.Name\")}</Th>\n                    <Th className=\"text-grayModern-500\">{t(\"FunctionPanel.Value\")}</Th>\n                  </Tr>\n                </Thead>\n                <Tbody>\n                  {fields.map((field, index) => {\n                    return (\n                      <Tr key={field.id} className=\"w-full overflow-hidden\">\n                        <Td className=\"relative \" w={\"120px\"} maxW={\"120px\"}>\n                          <Input\n                            size=\"sm\"\n                            w={\"120px\"}\n                            maxW={\"120px\"}\n                            variant={\"unstyled\"}\n                            placeholder=\"key\"\n                            {...register(`params.${index}.name` as const, {\n                              required: true,\n                            })}\n                          />\n                          <Box className=\"absolute right-0 top-1 text-slate-400\" w=\"46px\">\n                            <Select\n                              border={0}\n                              paddingRight={0}\n                              style={{ padding: 0 }}\n                              size=\"xs\"\n                              {...register(`params.${index}.type` as const, {\n                                required: true,\n                              })}\n                            >\n                              <option value={ContentType.JSON}>text</option>\n                              <option value={ContentType.FORM_DATA}>file</option>\n                            </Select>\n                          </Box>\n                        </Td>\n                        <Td className=\"relative \">\n                          {getValues(`params.${index}.type`) === ContentType.FORM_DATA ? (\n                            <>\n                              <label\n                                htmlFor={`params.${index}`}\n                                className=\"cursor-pointer rounded bg-slate-200 px-[4px] py-[2px]\"\n                              >\n                                {t(\"FunctionPanel.UploadButton\")}\n                              </label>\n                              <span className=\"text-ellipsis pr-2\">\n                                {(getValues(`params.${index}.value`)[0] as File)?.name}\n                              </span>\n                              <Input\n                                className=\"hidden\"\n                                id={`params.${index}`}\n                                type=\"file\"\n                                size=\"sm\"\n                                variant={\"unstyled\"}\n                                placeholder=\"value\"\n                                {...register(`params.${index}.value` as const, {\n                                  required: true,\n                                })}\n                              />\n                            </>\n                          ) : (\n                            <Input\n                              id={`params.${index}`}\n                              type={getValues(`params.${index}.type`)}\n                              size=\"sm\"\n                              variant={\"unstyled\"}\n                              placeholder=\"value\"\n                              {...register(`params.${index}.value` as const, {\n                                required: true,\n                              })}\n                            />\n                          )}\n\n                          <CloseIcon\n                            fontSize={9}\n                            className=\"absolute right-2 top-3 cursor-pointer hover:text-red-500\"\n                            onClick={() => remove(index)}\n                          />\n                        </Td>\n                      </Tr>\n                    );\n                  })}\n                </Tbody>\n              </Table>\n            </TableContainer>\n          </form>\n          <Button\n            size=\"sm\"\n            mt={1}\n            width={\"100%\"}\n            variant=\"outline\"\n            className=\"!rounded-sm !font-medium !text-grayModern-600\"\n            bg={darkMode ? \"lafDark.300\" : \"lafWhite.400\"}\n            border={darkMode ? \"1px solid\" : \"1px solid #EFF0F1\"}\n            onClick={() =>\n              append({\n                name: \"\",\n                value: \"\",\n                type: \"text\",\n              })\n            }\n          >\n            {t(\"Add\")}\n          </Button>\n        </div>\n      )}\n    </div>\n  );\n}\n\nexport default BodyParamsTab;\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/DebugPanel/HeaderParamsTab/index.tsx",
    "content": "import { useEffect } from \"react\";\nimport { useFieldArray, useForm } from \"react-hook-form\";\nimport { CloseIcon } from \"@chakra-ui/icons\";\nimport { Input, Table, TableContainer, Tbody, Td, Th, Thead, Tr } from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\ntype Params = {\n  name: string;\n  value: string;\n};\n\ntype FormValues = {\n  params: Params[];\n};\n\nfunction HeaderParamsTab(props: { onChange(values: Params[]): void }) {\n  const { onChange } = props;\n  const { register, control, watch } = useForm<FormValues>({\n    defaultValues: {\n      params: [{ name: \"\", value: \"\" }],\n    },\n    mode: \"onBlur\",\n  });\n  const { fields, append, remove } = useFieldArray({\n    name: \"params\",\n    control,\n  });\n\n  useEffect(() => {\n    const subscription = watch((value) => {\n      onChange && onChange(value?.params as Params[]);\n    });\n    return () => subscription.unsubscribe();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [watch]);\n\n  return (\n    <div>\n      <form>\n        <TableContainer>\n          <Table size=\"sm\" className=\"rounded border  border-grayModern-600\" variant={\"unstyled\"}>\n            <Thead>\n              <Tr>\n                <Th>{t(\"FunctionPanel.Name\")}</Th>\n                <Th>{t(\"FunctionPanel.Value\")}</Th>\n              </Tr>\n            </Thead>\n            <Tbody>\n              {fields.map((field, index) => {\n                return (\n                  <Tr key={field.id}>\n                    <Td>\n                      <Input\n                        width={\"40px\"}\n                        size=\"sm\"\n                        placeholder=\"key\"\n                        {...register(`params.${index}.name` as const, {\n                          required: true,\n                        })}\n                      />\n                    </Td>\n                    <Td className=\"relative\">\n                      <Input\n                        size=\"sm\"\n                        width={\"80px\"}\n                        placeholder=\"value\"\n                        {...register(`params.${index}.value` as const, {\n                          required: true,\n                        })}\n                      />\n                      <CloseIcon\n                        fontSize={9}\n                        className=\"absolute right-2 top-3 cursor-pointer hover:text-red-500\"\n                        onClick={() => remove(index)}\n                      />\n                    </Td>\n                  </Tr>\n                );\n              })}\n            </Tbody>\n          </Table>\n        </TableContainer>\n      </form>\n      <button\n        type=\"button\"\n        onClick={() =>\n          append({\n            name: \"\",\n            value: \"\",\n          })\n        }\n      >\n        {t(\"Add\")}\n      </button>\n    </div>\n  );\n}\n\nexport default HeaderParamsTab;\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/DebugPanel/QueryParamsTab/index.tsx",
    "content": "import { useEffect } from \"react\";\nimport { useFieldArray, useForm } from \"react-hook-form\";\nimport { CloseIcon } from \"@chakra-ui/icons\";\nimport {\n  Button,\n  Input,\n  Table,\n  TableContainer,\n  Tbody,\n  Td,\n  Th,\n  Thead,\n  Tr,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\ntype Params = {\n  name: string;\n  value: string;\n};\n\ntype FormValues = {\n  params: Params[];\n};\n\nfunction HeaderParamsTab(props: { onChange(values: Params[]): void; paramsList: Params[] }) {\n  const { onChange, paramsList } = props;\n  const { register, control, watch, setValue } = useForm<FormValues>({\n    defaultValues: {\n      params: [{ name: \"\", value: \"\" }],\n    },\n    mode: \"onBlur\",\n  });\n  const { fields, append, remove } = useFieldArray({\n    name: \"params\",\n    control,\n  });\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n\n  useEffect(() => {\n    const subscription = watch((value) => {\n      onChange && onChange(value?.params as Params[]);\n    });\n    return () => subscription.unsubscribe();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [watch]);\n\n  useEffect(() => {\n    setValue(\"params\", paramsList ?? []);\n  }, [setValue, paramsList]);\n\n  return (\n    <div>\n      <form>\n        <TableContainer>\n          <Table size=\"sm\" variant={\"params\"}>\n            <Thead>\n              <Tr>\n                <Th className=\"text-grayModern-500\">{t(\"FunctionPanel.Name\")}</Th>\n                <Th className=\"text-grayModern-500\">{t(\"FunctionPanel.Value\")}</Th>\n              </Tr>\n            </Thead>\n            <Tbody>\n              {fields.map((field, index) => {\n                return (\n                  <Tr key={field.id}>\n                    <Td>\n                      <Input\n                        size=\"sm\"\n                        variant={\"unstyled\"}\n                        placeholder=\"key\"\n                        {...register(`params.${index}.name` as const, {\n                          required: true,\n                        })}\n                      />\n                    </Td>\n                    <Td className=\"relative\">\n                      <Input\n                        size=\"sm\"\n                        variant={\"unstyled\"}\n                        placeholder=\"value\"\n                        {...register(`params.${index}.value` as const, {\n                          required: true,\n                        })}\n                      />\n                      <CloseIcon\n                        fontSize={9}\n                        className=\"absolute right-2 top-3 cursor-pointer hover:text-red-500\"\n                        onClick={() => remove(index)}\n                      />\n                    </Td>\n                  </Tr>\n                );\n              })}\n            </Tbody>\n          </Table>\n        </TableContainer>\n      </form>\n      <Button\n        size=\"sm\"\n        mt={1}\n        width={\"100%\"}\n        variant=\"outline\"\n        className=\"!rounded-sm !font-medium !text-grayModern-600\"\n        bg={darkMode ? \"lafDark.300\" : \"lafWhite.400\"}\n        border={darkMode ? \"1px solid\" : \"1px solid #EFF0F1\"}\n        onClick={() =>\n          append({\n            name: \"\",\n            value: \"\",\n          })\n        }\n      >\n        {t(\"Add\")}\n      </Button>\n    </div>\n  );\n}\n\nexport default HeaderParamsTab;\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/DebugPanel/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  Button,\n  Center,\n  Select,\n  Spinner,\n  Tab,\n  TabList,\n  TabPanel,\n  TabPanels,\n  Tabs,\n  Tooltip,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport axios from \"axios\";\nimport clsx from \"clsx\";\nimport { keyBy, mapValues } from \"lodash\";\n\nimport JSONViewer from \"@/components/Editor/JSONViewer\";\nimport { Row } from \"@/components/Grid\";\nimport Panel from \"@/components/Panel\";\nimport Resize from \"@/components/Resize\";\nimport { COLOR_MODE, Pages, PanelMinHeight } from \"@/constants\";\nimport { encodeData } from \"@/utils/handleData\";\n\nimport { useCompileMutation, useUpdateDebugFunctionMutation } from \"../../service\";\nimport useFunctionStore from \"../../store\";\nimport AIChatPanel from \"../AIChatPanel\";\nimport VersionHistoryPanel from \"../VersionHistoryPanel\";\n\nimport BodyParamsTab from \"./BodyParamsTab\";\nimport QueryParamsTab from \"./QueryParamsTab\";\nimport HeaderParamsTab from \"./QueryParamsTab\";\n\nimport { TMethod } from \"@/apis/typing\";\nimport useFunctionCache from \"@/hooks/useFunctionCache\";\nimport useHotKey, { DEFAULT_SHORTCUTS } from \"@/hooks/useHotKey\";\nimport useCustomSettingStore from \"@/pages/customSetting\";\nimport useGlobalStore from \"@/pages/globalStore\";\nimport useSiteSettingStore from \"@/pages/siteSetting\";\n\nconst HAS_BODY_PARAMS_METHODS: (TMethod | undefined)[] = [\"POST\", \"PUT\", \"PATCH\", \"DELETE\"];\n\nexport default function DebugPanel(props: { containerRef: any }) {\n  const { t } = useTranslation();\n  const {\n    getFunctionUrl,\n    currentFunction,\n    setCurrentRequestId,\n    setCurrentFuncLogs,\n    setCurrentFuncTimeUsage,\n  } = useFunctionStore((state: any) => state);\n  const updateDebugFunctionMutation = useUpdateDebugFunctionMutation();\n  const globalStore = useGlobalStore((state) => state);\n  const siteSettings = useSiteSettingStore((state) => state.siteSettings);\n\n  const functionCache = useFunctionCache();\n\n  const [runningResData, setRunningResData] = useState();\n  const [isLoading, setIsLoading] = useState(false);\n  const [runningMethod, setRunningMethod] = useState<TMethod>();\n  const [isHovered, setIsHovered] = useState(false);\n\n  const compileMutation = useCompileMutation();\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  const [queryParams, setQueryParams] = useState([]);\n  const [bodyParams, setBodyParams] = useState<{ contentType: string; data: any }>();\n  const [headerParams, setHeaderParams] = useState([]);\n\n  const [abortController, setAbortController] = useState(new AbortController());\n\n  const functionPageConfig = useCustomSettingStore((store) => store.layoutInfo.functionPage);\n  const { displayName } = useHotKey(\n    DEFAULT_SHORTCUTS.send_request,\n    () => {\n      runningCode();\n    },\n    {\n      enabled: globalStore.currentPageId === Pages.function,\n    },\n  );\n\n  const methods_tab = [\n    {\n      label: \"Query\",\n      count: queryParams.length,\n      shouldRender: true,\n    },\n    {\n      label: \"Body\",\n      count: Object.keys(bodyParams?.data || {}).length,\n      shouldRender: HAS_BODY_PARAMS_METHODS.includes(runningMethod),\n    },\n    {\n      label: \"Headers\",\n      count: headerParams.length,\n      shouldRender: true,\n    },\n  ];\n\n  useEffect(() => {\n    const lastRunningMethod = currentFunction.params?.runningMethod;\n    if (\n      currentFunction?.methods &&\n      lastRunningMethod &&\n      currentFunction.methods.includes(lastRunningMethod)\n    ) {\n      setRunningMethod(lastRunningMethod);\n    } else if (currentFunction?.methods) {\n      setRunningMethod(currentFunction.methods[0]);\n    }\n  }, [currentFunction]);\n\n  useEffect(() => {\n    setBodyParams(currentFunction?.params?.bodyParams);\n  }, [currentFunction]);\n\n  const runningCode = async () => {\n    if (isLoading || !currentFunction?._id) return;\n    setIsLoading(true);\n    try {\n      const compileRes = await compileMutation.mutateAsync({\n        code: functionCache.getCache(currentFunction!._id, currentFunction!.source?.code),\n        name: currentFunction!.name,\n      });\n\n      const params = {\n        queryParams: queryParams,\n        bodyParams: bodyParams,\n        headerParams: headerParams,\n        runningMethod: runningMethod,\n      };\n\n      await updateDebugFunctionMutation.mutateAsync({\n        name: currentFunction?.name,\n        params: params,\n      });\n\n      if (!compileRes.error) {\n        const _funcData = JSON.stringify(compileRes.data);\n        const axiosInstance = axios.create({\n          validateStatus: function (status) {\n            return status === 500 ? true : status >= 200 && status < 300;\n          },\n        });\n        const signal = abortController.signal;\n        const res = await axiosInstance({\n          url: getFunctionUrl(),\n          method: runningMethod,\n          params: mapValues(keyBy(queryParams, \"name\"), \"value\"),\n          data: bodyParams?.data,\n          headers: Object.assign(mapValues(keyBy(headerParams, \"name\"), \"value\"), {\n            \"x-laf-develop-token\": `${globalStore.currentApp?.develop_token}`,\n            \"x-laf-debug-data\": encodeData(_funcData),\n            \"Content-Type\": bodyParams?.contentType || \"application/json\",\n          }),\n          signal,\n        });\n\n        setCurrentRequestId(res.headers[\"request-id\"]);\n        setCurrentFuncLogs(res.headers[\"x-laf-debug-logs\"]);\n        setCurrentFuncTimeUsage(res.headers[\"x-laf-debug-time-usage\"]);\n\n        setRunningResData(res.data);\n      }\n\n      return () => abortController.abort();\n    } catch (error: any) {\n      setRunningResData(error.toString());\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const cancelRequest = () => {\n    abortController.abort();\n    setAbortController(new AbortController());\n  };\n\n  return (\n    <>\n      <Panel className=\"min-w-[200px] flex-grow overflow-hidden !px-0\">\n        <Tabs\n          width=\"100%\"\n          colorScheme={\"primary\"}\n          display=\"flex\"\n          flexDirection={\"column\"}\n          h=\"full\"\n          size={\"sm\"}\n          pt={\"4px\"}\n        >\n          <TabList\n            h={`${PanelMinHeight}px`}\n            mx={3}\n            borderBottom={darkMode ? \"\" : \"2px solid #F6F8F9\"}\n          >\n            <Tab\n              _selected={{\n                borderColor: \"primary.500\",\n                color: darkMode ? \"white !important\" : \"#262A32 !important\",\n              }}\n              style={{ color: \"#7B838B\", margin: \"-1px 8px\", padding: \"0 0\", fontWeight: 500 }}\n            >\n              {t(\"FunctionPanel.InterfaceDebug\")}\n            </Tab>\n            {!!siteSettings.ai_pilot_url?.value && (\n              <Tab\n                _selected={{\n                  borderColor: \"primary.500\",\n                  color: darkMode ? \"white !important\" : \"#262A32 !important\",\n                }}\n                style={{ color: \"#7B838B\", margin: \"-1px 8px\", padding: \"0 0\", fontWeight: 500 }}\n              >\n                Laf Pilot\n              </Tab>\n            )}\n            <Tab\n              _selected={{\n                borderColor: \"primary.500\",\n                color: darkMode ? \"white !important\" : \"#262A32 !important\",\n              }}\n              style={{ color: \"#7B838B\", margin: \"-1px 8px\", padding: \"0 0\", fontWeight: 500 }}\n            >\n              {t(\"FunctionPanel.versionHistory\")}\n            </Tab>\n          </TabList>\n\n          <TabPanels flex={1} className=\"overflow-hidden\">\n            <TabPanel\n              padding={0}\n              mt=\"1px\"\n              h=\"full\"\n              className={\n                darkMode ? \"flex flex-col bg-lafDark-100\" : \"flex flex-col bg-grayModern-100\"\n              }\n            >\n              <Panel className=\"flex-1 flex-col\">\n                <div className=\"flex flex-none items-center px-2 pb-2 pt-3\">\n                  <span className=\"mr-3 whitespace-nowrap font-medium text-grayModern-500\">\n                    {t(\"FunctionPanel.Methods\")}\n                  </span>\n                  <Select\n                    width=\"100px\"\n                    variant=\"filled\"\n                    size=\"xs\"\n                    value={runningMethod}\n                    disabled={getFunctionUrl() === \"\" || !currentFunction.methods?.length}\n                    onChange={(e) => {\n                      setRunningMethod(e.target.value as TMethod);\n                    }}\n                  >\n                    {currentFunction.methods?.map((item: string) => {\n                      return (\n                        <option value={item} key={item}>\n                          {item}\n                        </option>\n                      );\n                    })}\n                  </Select>\n                  <Tooltip\n                    label={isLoading ? \"\" : `${t(\"shortcutKey\")} ${displayName.toUpperCase()}`}\n                  >\n                    <Button\n                      disabled={getFunctionUrl() === \"\"}\n                      className={clsx(\n                        \"relative ml-2 !h-6 !w-14 !text-base\",\n                        isLoading ? \"!bg-primary-400\" : \"!bg-primary-600 \",\n                      )}\n                      onClick={() => (isLoading ? cancelRequest() : runningCode())}\n                      onMouseEnter={() => setIsHovered(true)}\n                      onMouseLeave={() => setIsHovered(false)}\n                    >\n                      {isLoading ? (\n                        <>\n                          {isHovered ? (\n                            t(\"Cancel\")\n                          ) : (\n                            <Center>\n                              <Spinner size={\"xs\"} />\n                            </Center>\n                          )}\n                        </>\n                      ) : (\n                        t(\"FunctionPanel.Debug\")\n                      )}\n                    </Button>\n                  </Tooltip>\n                </div>\n                <div className=\"flex-grow overflow-hidden\">\n                  <Tabs\n                    variant=\"soft-rounded\"\n                    colorScheme={\"gray\"}\n                    size={\"sm\"}\n                    className=\"h-full flex-col\"\n                    style={{ display: \"flex\" }}\n                  >\n                    <TabList>\n                      {methods_tab.map(\n                        (tab, index) =>\n                          tab.shouldRender && (\n                            <Tab key={index} className=\"!font-medium\">\n                              {tab.label}\n                              {tab.count > 0 && <span className=\"ml-1\">({tab.count})</span>}\n                            </Tab>\n                          ),\n                      )}\n                    </TabList>\n                    <TabPanels className=\"relative flex-1 overflow-auto\">\n                      <TabPanel px={0} py={2}>\n                        <QueryParamsTab\n                          key={\"QueryParamsTab\"}\n                          onChange={(values: any) => {\n                            setQueryParams(values);\n                          }}\n                          paramsList={currentFunction.params?.queryParams}\n                        />\n                      </TabPanel>\n\n                      {HAS_BODY_PARAMS_METHODS.includes(runningMethod) && (\n                        <TabPanel\n                          px={0}\n                          py={2}\n                          className=\"absolute bottom-0 left-0 right-0 top-0 overflow-auto\"\n                        >\n                          <BodyParamsTab\n                            onChange={(values) => {\n                              setBodyParams(values);\n                            }}\n                            paramsList={currentFunction.params?.bodyParams}\n                          />\n                        </TabPanel>\n                      )}\n\n                      <TabPanel px={0} py={2}>\n                        <HeaderParamsTab\n                          key={\"HeaderParamsTab\"}\n                          onChange={(values: any) => {\n                            setHeaderParams(values);\n                          }}\n                          paramsList={currentFunction.params?.headerParams}\n                        />\n                      </TabPanel>\n                    </TabPanels>\n                  </Tabs>\n                </div>\n              </Panel>\n              <Resize\n                type=\"y\"\n                pageId=\"functionPage\"\n                panelId=\"RunningPanel\"\n                reverse\n                containerRef={props.containerRef}\n              />\n              <Row {...functionPageConfig.RunningPanel} className=\"flex-1\">\n                <Panel className=\"min-w-[200px]\">\n                  <Panel.Header\n                    title={t(\"FunctionPanel.DebugResult\")}\n                    pageId=\"functionPage\"\n                    panelId=\"RunningPanel\"\n                  />\n                  <div className=\"h-full flex-1 overflow-auto\">\n                    {isLoading ? (\n                      <Center className=\"h-full\">\n                        <Spinner />\n                      </Center>\n                    ) : runningResData !== undefined ? (\n                      <JSONViewer\n                        colorMode={colorMode}\n                        code={JSON.stringify(runningResData, null, 2)}\n                      />\n                    ) : (\n                      <Center className=\"h-full text-grayIron-600\">\n                        {t(\"FunctionPanel.EmptyDebugTip\")}\n                      </Center>\n                    )}\n                  </div>\n                </Panel>\n              </Row>\n            </TabPanel>\n            {!!siteSettings.ai_pilot_url?.value && (\n              <TabPanel padding={0} h=\"full\">\n                <AIChatPanel />\n              </TabPanel>\n            )}\n            <TabPanel padding={0} h=\"full\">\n              <VersionHistoryPanel />\n            </TabPanel>\n          </TabPanels>\n        </Tabs>\n      </Panel>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/DependencePanel/AddDependenceModal/index.tsx",
    "content": "import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  AddIcon,\n  ExternalLinkIcon,\n  InfoOutlineIcon,\n  SearchIcon,\n  SmallCloseIcon,\n} from \"@chakra-ui/icons\";\nimport {\n  Box,\n  Button,\n  Center,\n  Checkbox,\n  HStack,\n  Input,\n  InputGroup,\n  InputLeftElement,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  Select,\n  Spinner,\n  Text,\n  useColorMode,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { debounce } from \"lodash\";\n\nimport { EditIconLine } from \"@/components/CommonIcon\";\nimport DependenceList from \"@/components/DependenceList\";\nimport IconWrap from \"@/components/IconWrap\";\nimport { APP_STATUS } from \"@/constants\";\n\nimport {\n  TDependenceItem,\n  TPackage,\n  useAddPackageMutation,\n  useEditPackageMutation,\n  usePackageQuery,\n  usePackageSearchQuery,\n  usePackageVersionsQuery,\n} from \"../service\";\nimport { openDependenceDetail } from \"..\";\n\nimport useGlobalStore, { State } from \"@/pages/globalStore\";\n\nconst AddDependenceModal = () => {\n  const { t } = useTranslation();\n  const globalStore = useGlobalStore((state: State) => state);\n  const [checkList, setCheckList] = useState<TDependenceItem[]>([]);\n  const [name, setName] = useState(\"\");\n  const [clickItem, setClickItem] = useState({ package: \"\", loading: false });\n  const [list, setList] = useState<TDependenceItem[]>([]);\n  const [isEdit, setIsEdit] = useState(false);\n  const [isShowChecked, setIsShowChecked] = useState(false);\n  const [packageList, setPackageList] = useState<TDependenceItem[]>([]);\n  const [originPackageList, setOriginPackageList] = useState<TDependenceItem[]>([]);\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  usePackageQuery((data) => {\n    const newList = (data || [])\n      .filter((item: any) => !item.builtin)\n      .map((item: any) => {\n        return {\n          package: {\n            name: item.name,\n            version: item.spec,\n          },\n          versions: [],\n        };\n      });\n    setOriginPackageList(JSON.parse(JSON.stringify(newList)));\n    setPackageList(newList);\n  });\n\n  const addPackageMutation = useAddPackageMutation(() => {\n    onClose();\n    if (globalStore.currentApp!.state === APP_STATUS.Stopped) {\n      globalStore.updateCurrentApp(globalStore.currentApp!, APP_STATUS.Running);\n    }\n    if (globalStore.currentApp.state === APP_STATUS.Running) {\n      globalStore.updateCurrentApp(globalStore.currentApp!, APP_STATUS.Restarting, true);\n    }\n  });\n\n  const editPackageMutation = useEditPackageMutation(() => {\n    onClose();\n    if (globalStore.currentApp!.state === APP_STATUS.Stopped) {\n      globalStore.updateCurrentApp(globalStore.currentApp!, APP_STATUS.Running);\n    }\n    if (globalStore.currentApp.state === APP_STATUS.Running) {\n      globalStore.updateCurrentApp(globalStore.currentApp!, APP_STATUS.Restarting, true);\n    }\n  });\n\n  const packageSearchQuery = usePackageSearchQuery(name, (data) => {\n    const list: TDependenceItem[] = (data || []).map((item: any) => {\n      const existItem = checkList.find((checkItem: TDependenceItem) => {\n        return checkItem.package.name === item.package.name;\n      });\n      return existItem ? existItem : { ...item, versions: [] };\n    });\n    setList(list);\n  });\n\n  usePackageVersionsQuery(clickItem.package, (versions: string[]) => {\n    const newList: TDependenceItem[] = (isEdit ? packageList : list).map(\n      (item: TDependenceItem) => {\n        if (item.package.name === clickItem.package) {\n          item.versions = versions?.reverse();\n          if (!isEdit) {\n            syncDataToCheckList(clickItem.package, item);\n          }\n          setClickItem({ ...clickItem, loading: false });\n        }\n        return item;\n      },\n    );\n    isEdit ? setPackageList(newList) : setList(newList);\n  });\n\n  const search = useMemo(\n    () =>\n      debounce((val: string) => {\n        setIsShowChecked(false);\n        setName(val);\n      }, 1000),\n    [setIsShowChecked, setName],\n  );\n\n  const initModal = () => {\n    setCheckList([]);\n    setIsShowChecked(false);\n    setName(\"\");\n    setList([]);\n    onOpen();\n  };\n\n  const onModalClose = () => {\n    if (isEdit) {\n      setPackageList((prev) =>\n        prev.map((pkg) => {\n          const res = originPackageList.find((v) => v.package.name === pkg.package.name);\n          if (res) pkg.package.version = res.package.version;\n          return pkg;\n        }),\n      );\n    }\n    onClose();\n  };\n\n  const syncDataToCheckList = (targetName: string, item: TDependenceItem) => {\n    const newCheckList = checkList.map((oldItem: TDependenceItem) => {\n      if (oldItem.package.name === targetName) {\n        return item;\n      }\n      return oldItem;\n    });\n    setCheckList(newCheckList);\n  };\n\n  const submitDependence = () => {\n    const data: TPackage[] = [];\n    let submitList = isEdit ? packageList : checkList;\n    submitList.forEach((item: TDependenceItem) => {\n      data.push({\n        name: item.package.name,\n        spec: item.package.version,\n      });\n    });\n    isEdit ? editPackageMutation.mutate(data) : addPackageMutation.mutate(data);\n  };\n\n  const setVersion = (version: string, key: string) => {\n    const data: TDependenceItem[] = (isEdit ? packageList : list).map((item: TDependenceItem) => {\n      if (item.package.name === key) {\n        item.package.version = version;\n        if (!isEdit) {\n          syncDataToCheckList(key, item);\n        }\n      }\n      return item;\n    });\n    isEdit ? setPackageList(data) : setList(data);\n  };\n\n  const setCheck = (dependence: TDependenceItem) => {\n    let list: TDependenceItem[] = [...checkList];\n    let index: number = list.findIndex(\n      (item: TDependenceItem) => item.package.name === dependence.package.name,\n    );\n    if (index === -1) {\n      list.push(dependence);\n    } else {\n      list.splice(index, 1);\n    }\n    setCheckList(list);\n  };\n\n  const renderList = (list: TDependenceItem[]) => {\n    return list.length === 0 ? (\n      <Center minH={200} className=\"text-grayIron-600\">\n        {t(\"NoData\")}\n      </Center>\n    ) : (\n      <DependenceList>\n        {(list || []).map((packageItem: TDependenceItem) => {\n          return (\n            <DependenceList.Item\n              style={{ minHeight: \"45px\" }}\n              isActive={false}\n              key={packageItem.package.name}\n              className=\"group\"\n              onClick={() => {\n                if (packageItem.versions.length === 0 && !clickItem.loading) {\n                  setClickItem({ package: packageItem.package.name, loading: true });\n                }\n              }}\n            >\n              {isEdit ? (\n                <Text fontSize=\"lg\">{packageItem.package.name}</Text>\n              ) : (\n                <Checkbox\n                  colorScheme=\"primary\"\n                  size=\"lg\"\n                  isDisabled={packageList.some(\n                    (item) => item.package.name === packageItem.package.name,\n                  )}\n                  onChange={() => {\n                    setCheck(packageItem);\n                  }}\n                  isChecked={\n                    checkList.some(\n                      (item: TDependenceItem) => item.package.name === packageItem.package.name,\n                    ) || packageList.some((item) => item.package.name === packageItem.package.name)\n                  }\n                >\n                  <Box ml={5} width=\"350px\">\n                    <div className=\"flex items-center space-x-1\">\n                      <b>{packageItem.package.name}</b>\n                      <ExternalLinkIcon\n                        className=\"!text-primary-700 hover:scale-110\"\n                        onClick={(e) => {\n                          e.stopPropagation();\n                          e.preventDefault();\n                          openDependenceDetail(packageItem.package.name);\n                        }}\n                      />\n                    </div>\n                    <p className=\"overflow-hidden text-ellipsis whitespace-nowrap text-base text-second \">\n                      {packageItem.package.description}\n                    </p>\n                  </Box>\n                </Checkbox>\n              )}\n              <div className=\"flex items-center space-x-1\">\n                {clickItem.package === packageItem.package.name && clickItem.loading ? (\n                  <Spinner size=\"xs\" color=\"primary.500\" />\n                ) : null}\n                <Select\n                  width=\"150px\"\n                  size=\"sm\"\n                  variant=\"filled\"\n                  placeholder={packageItem.package.version}\n                  isDisabled={\n                    !isEdit &&\n                    packageList.some((item) => item.package.name === packageItem.package.name)\n                  }\n                  onChange={(e) => {\n                    setVersion(e.target.value, packageItem.package.name);\n                  }}\n                  onClick={() => {\n                    if (packageItem.versions.length === 0 && !clickItem.loading) {\n                      setClickItem({ package: packageItem.package.name, loading: true });\n                    }\n                  }}\n                >\n                  {packageItem.versions.map((subItem: string | undefined) => {\n                    return (\n                      <option key={subItem} value={subItem}>\n                        {subItem}\n                      </option>\n                    );\n                  })}\n                </Select>\n              </div>\n            </DependenceList.Item>\n          );\n        })}\n      </DependenceList>\n    );\n  };\n\n  return (\n    <>\n      {packageList?.length > 0 ? (\n        <IconWrap\n          tooltip={t(\"FunctionPanel.DependenceEdit\").toString()}\n          onClick={() => {\n            setIsEdit(true);\n            initModal();\n          }}\n        >\n          <EditIconLine color={darkMode ? \"#F4F6F8\" : \"#363C42\"} size=\"12\" />\n        </IconWrap>\n      ) : null}\n      <IconWrap\n        tooltip={t(\"FunctionPanel.DependenceAdd\").toString()}\n        onClick={() => {\n          setIsEdit(false);\n          initModal();\n        }}\n      >\n        <AddIcon fontSize={12} />\n      </IconWrap>\n\n      <Modal isOpen={isOpen} onClose={onModalClose} size=\"2xl\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>\n            {isEdit ? t(\"FunctionPanel.DependenceEdit\") : t(\"FunctionPanel.DependenceAdd\")}\n          </ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb={6} minH=\"260px\">\n            {isEdit ? (\n              renderList(packageList)\n            ) : (\n              <div>\n                <InputGroup mb={3}>\n                  <InputLeftElement\n                    pointerEvents=\"none\"\n                    children={<SearchIcon color=\"gray.300\" />}\n                  />\n                  <Input\n                    rounded={\"full\"}\n                    onChange={(e: any) => {\n                      search(e.target.value);\n                    }}\n                    placeholder={t(\"FunctionPanel.DependenceTip\").toString()}\n                  />\n                </InputGroup>\n                {packageSearchQuery.isFetching ? (\n                  <Center className=\"min-h-[200px]\">\n                    <Spinner size=\"lg\" />\n                  </Center>\n                ) : isShowChecked ? (\n                  renderList(checkList)\n                ) : (\n                  renderList(list)\n                )}\n              </div>\n            )}\n          </ModalBody>\n\n          <ModalFooter justifyContent={\"space-between\"}>\n            <HStack>\n              <span className=\"flex items-center text-grayModern-600\">\n                <InfoOutlineIcon className=\"mx-1\" />\n                {t(\"FunctionPanel.DependenceInstallTip\")}\n              </span>\n            </HStack>\n            <HStack>\n              {checkList.length > 0 && (\n                <span\n                  className=\"mr-2 text-lg hover:cursor-pointer \"\n                  onClick={() => {\n                    if (!isEdit) {\n                      setIsShowChecked((pre) => !pre);\n                    }\n                  }}\n                >\n                  <span\n                    className={clsx(\n                      \"underline\",\n                      \"hover:text-blue-700\",\n                      darkMode ? \"text-blue-300 hover:text-blue-500\" : \"text-blue-500\",\n                    )}\n                  >\n                    {t(\"FunctionPanel.Select\")}:\n                  </span>\n\n                  <span className=\"mx-2 text-blue-500 \">\n                    {isEdit ? (\n                      packageList.length\n                    ) : isShowChecked ? (\n                      <SmallCloseIcon fontSize={16} className=\"align-middle\" />\n                    ) : (\n                      checkList.length\n                    )}\n                  </span>\n                </span>\n              )}\n\n              <Button\n                isLoading={editPackageMutation.isLoading || addPackageMutation.isLoading}\n                onClick={() => {\n                  submitDependence();\n                }}\n              >\n                {t(\"SaveAndRestart\")}\n              </Button>\n            </HStack>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nAddDependenceModal.displayName = \"AddDependenceModal\";\n\nexport default AddDependenceModal;\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/DependencePanel/index.tsx",
    "content": "/****************************\n * cloud functions list sidebar\n ***************************/\n\nimport { useTranslation } from \"react-i18next\";\nimport { CloseIcon } from \"@chakra-ui/icons\";\nimport { Badge, Center, Tab, TabList, TabPanel, TabPanels, Tabs } from \"@chakra-ui/react\";\n\nimport ConfirmButton from \"@/components/ConfirmButton\";\nimport FileTypeIcon, { FileType } from \"@/components/FileTypeIcon\";\nimport Panel from \"@/components/Panel\";\nimport SectionList from \"@/components/SectionList\";\nimport { APP_STATUS } from \"@/constants\";\n\nimport AddDependenceModal from \"./AddDependenceModal\";\nimport { TPackage, useDelPackageMutation, usePackageQuery } from \"./service\";\n\nimport useCustomSettingStore from \"@/pages/customSetting\";\nimport useGlobalStore, { State } from \"@/pages/globalStore\";\n\nexport const openDependenceDetail = (depName: string) => {\n  window.open(`https://www.npmjs.com/package/${encodeURIComponent(depName)}`, \"_blank\");\n};\n\nexport default function DependenceList() {\n  const packageQuery = usePackageQuery();\n  const globalStore = useGlobalStore((state: State) => state);\n\n  const delPackageMutation = useDelPackageMutation(() => {\n    if (globalStore.currentApp!.state === APP_STATUS.Stopped) {\n      globalStore.updateCurrentApp(globalStore.currentApp!, APP_STATUS.Running);\n    }\n    if (globalStore.currentApp.state === APP_STATUS.Running) {\n      globalStore.updateCurrentApp(globalStore.currentApp!, APP_STATUS.Restarting, true);\n    }\n  });\n\n  const { t } = useTranslation();\n\n  const store = useCustomSettingStore();\n\n  const builtinPackage: TPackage[] = [];\n  const customPackage: TPackage[] = [];\n\n  const { height } = store.getLayoutInfoStyle(\"functionPage\", \"DependencePanel\");\n  const SECTION_HEIGHT = height - 90;\n\n  packageQuery?.data?.data?.forEach((packageItem: TPackage) => {\n    if (packageItem.builtin) {\n      builtinPackage.push(packageItem);\n    } else {\n      customPackage.push(packageItem);\n    }\n  });\n\n  return (\n    <Panel className=\"min-w-[225px]\">\n      <Panel.Header\n        title={t(\"FunctionPanel.Dependence\")}\n        actions={[<AddDependenceModal key=\"AddDependenceModal\" />]}\n      />\n      <Tabs variant=\"soft-rounded\" colorScheme={\"gray\"} size={\"xs\"}>\n        <TabList>\n          <Tab className=\"mr-2 px-2 py-1\">\n            {t(\"FunctionPanel.CustomDependence\")}\n            {customPackage.length > 0 && (\n              <Badge rounded={\"full\"} ml=\"1\">\n                {customPackage.length}\n              </Badge>\n            )}\n          </Tab>\n          <Tab className=\"mr-2 px-2 py-1\">\n            {t(\"FunctionPanel.SystemDependence\")}\n            <Badge rounded={\"full\"} ml=\"1\">\n              {builtinPackage.length}\n            </Badge>\n          </Tab>\n        </TabList>\n        <TabPanels>\n          <TabPanel px={0} py={1}>\n            {customPackage.length > 0 ? (\n              <SectionList\n                className=\"pr-2\"\n                style={{ height: SECTION_HEIGHT, overflowY: \"auto\", overflowX: \"hidden\" }}\n              >\n                {customPackage.map((packageItem: TPackage) => {\n                  return (\n                    <SectionList.Item\n                      size=\"small\"\n                      isActive={false}\n                      key={packageItem?.name!}\n                      onClick={() => {\n                        openDependenceDetail(packageItem.name);\n                      }}\n                      className=\"group\"\n                    >\n                      <FileTypeIcon type={FileType.npm} />\n                      <div className=\"ml-2 w-[200px] overflow-hidden\">\n                        <span className=\"inline-block w-full overflow-hidden overflow-ellipsis whitespace-nowrap\">\n                          {packageItem?.name}\n                        </span>\n                      </div>\n                      <div className=\" flex w-[100px]\">\n                        <span className=\"inline-block flex-grow overflow-hidden overflow-ellipsis whitespace-nowrap\">\n                          {packageItem?.spec}\n                        </span>\n                        {!packageItem?.builtin ? (\n                          <span className=\" ml-2 hidden w-[10px] group-hover:inline-block\">\n                            <ConfirmButton\n                              onSuccessAction={() => {\n                                delPackageMutation.mutate({ name: packageItem?.name });\n                              }}\n                              headerText={String(t(\"Delete\"))}\n                              bodyText={String(t(\"FunctionPanel.DeleteDependencyConfirm\"))}\n                            >\n                              <CloseIcon fontSize={10} />\n                            </ConfirmButton>\n                          </span>\n                        ) : null}\n                      </div>\n                    </SectionList.Item>\n                  );\n                })}\n              </SectionList>\n            ) : (\n              <Center minH={140} className=\"text-grayIron-600\">\n                {t(\"FunctionPanel.CustomDependenceTip\")}\n              </Center>\n            )}\n          </TabPanel>\n          <TabPanel px={0} py={1}>\n            {/* build in packages */}\n            <SectionList\n              className=\"pr-2\"\n              style={{ height: SECTION_HEIGHT, overflowY: \"auto\", overflowX: \"hidden\" }}\n            >\n              {builtinPackage.map((packageItem: TPackage) => {\n                return (\n                  <SectionList.Item\n                    size=\"small\"\n                    isActive={false}\n                    key={packageItem?.name!}\n                    className=\"group\"\n                    onClick={() => {\n                      openDependenceDetail(packageItem.name);\n                    }}\n                  >\n                    <div className=\"text-second\">\n                      <span className=\"inline-block w-40 overflow-hidden overflow-ellipsis whitespace-nowrap\">\n                        {packageItem?.name}\n                      </span>\n                    </div>\n                    <div className=\"inline-block w-20 overflow-hidden overflow-ellipsis whitespace-nowrap text-second\">\n                      <span>{packageItem?.spec}</span>\n                    </div>\n                  </SectionList.Item>\n                );\n              })}\n            </SectionList>\n          </TabPanel>\n        </TabPanels>\n      </Tabs>\n    </Panel>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/DependencePanel/service.ts",
    "content": "import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\n\nimport { DependencySearch, GetDependencyVersions } from \"@/apis/dependence\";\nimport {\n  DependencyControllerAdd,\n  DependencyControllerGetDependencies,\n  DependencyControllerRemove,\n  DependencyControllerUpdate,\n} from \"@/apis/v1/apps\";\nimport useGlobalStore from \"@/pages/globalStore\";\nexport type TDependenceItem = {\n  versions: (string | undefined)[];\n  package: {\n    name: string;\n    version: string;\n    description: undefined | string;\n    [key: string]: any;\n  };\n  [key: string]: any;\n};\nexport type TPackage = {\n  name: string;\n  spec: string;\n  builtin?: boolean;\n};\n\nconst queryKeys = {\n  usePackageQuery: [\"usePackageQuery\"],\n  usePackageSearchQuery: (q: string) => [\"usePackageSearchQuery\", q],\n  usePackageVersionsQuery: (q: string) => [\"usePackageVersionsQuery\", q],\n};\n\nexport const usePackageQuery = (callback?: (data: any) => void) => {\n  return useQuery(\n    queryKeys.usePackageQuery,\n    () => {\n      return DependencyControllerGetDependencies({});\n    },\n    {\n      onSuccess: (data) => {\n        callback && callback(data?.data);\n      },\n    },\n  );\n};\n\nexport const useAddPackageMutation = (callback?: () => void) => {\n  const queryClient = useQueryClient();\n  return useMutation((params: TPackage[]) => DependencyControllerAdd(params), {\n    onSuccess: async () => {\n      useGlobalStore.getState().showSuccess(\"add package success\");\n      await queryClient.invalidateQueries(queryKeys.usePackageQuery);\n      callback && callback();\n    },\n  });\n};\n\nexport const useEditPackageMutation = (callback?: () => void) => {\n  const queryClient = useQueryClient();\n  return useMutation((params: TPackage[]) => DependencyControllerUpdate(params), {\n    onSuccess: async () => {\n      useGlobalStore.getState().showSuccess(\"edit package success\");\n      await queryClient.invalidateQueries(queryKeys.usePackageQuery);\n      callback && callback();\n    },\n  });\n};\n\nexport const useDelPackageMutation = (callback?: () => void) => {\n  const queryClient = useQueryClient();\n  return useMutation((params: { name: string | undefined }) => DependencyControllerRemove(params), {\n    onSuccess: async () => {\n      useGlobalStore.getState().showSuccess(\"delete package success\");\n      await queryClient.invalidateQueries(queryKeys.usePackageQuery);\n      callback && callback();\n    },\n  });\n};\n\nexport const usePackageSearchQuery = (q: string, callback?: (data: any) => void) => {\n  return useQuery(\n    queryKeys.usePackageSearchQuery(q),\n    async () => {\n      return DependencySearch({ q: q });\n    },\n    {\n      onSuccess(data: any) {\n        callback && callback(data?.data?.objects);\n      },\n    },\n  );\n};\n\nexport const usePackageVersionsQuery = (q: string, callback?: (versions: string[]) => void) => {\n  return useQuery(\n    queryKeys.usePackageVersionsQuery(q),\n    async () => {\n      return GetDependencyVersions({ q: q });\n    },\n    {\n      onSuccess(data: any) {\n        const versions: string[] = Object.keys(data?.data?.versions || {});\n        callback && callback(versions);\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/DeployButton/index.tsx",
    "content": "import React from \"react\";\nimport {\n  Button,\n  Input,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  Tooltip,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { t } from \"i18next\";\n\nimport { RocketIcon } from \"@/components/CommonIcon\";\nimport CommonDiffEditor from \"@/components/Editor/CommonDiffEditor\";\nimport { Pages } from \"@/constants\";\n\nimport { useFunctionDetailQuery, useUpdateFunctionMutation } from \"../../service\";\nimport useFunctionStore from \"../../store\";\n\nimport { TFunction } from \"@/apis/typing\";\nimport useFunctionCache from \"@/hooks/useFunctionCache\";\nimport useHotKey, { DEFAULT_SHORTCUTS } from \"@/hooks/useHotKey\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function DeployButton() {\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const store = useFunctionStore((state) => state);\n  const queryClient = useQueryClient();\n  const functionCache = useFunctionCache();\n\n  const headerRef = React.useRef(null);\n  const [changelog, setChangelog] = React.useState(\"\");\n\n  const { showSuccess, currentPageId } = useGlobalStore((state) => state);\n\n  const updateFunctionMutation = useUpdateFunctionMutation();\n\n  const functionDetailQuery = useFunctionDetailQuery(\n    encodeURIComponent(store.currentFunction.name),\n    {\n      enabled: isOpen,\n    },\n  );\n\n  const { displayName } = useHotKey(\n    DEFAULT_SHORTCUTS.deploy,\n    async () => {\n      onOpen();\n    },\n    {\n      enabled: currentPageId === Pages.function,\n    },\n  );\n\n  const deploy = async () => {\n    const res = await updateFunctionMutation.mutateAsync({\n      description: store.currentFunction?.desc,\n      code: functionCache.getCache(store.currentFunction!._id, store.currentFunction!.source?.code),\n      methods: store.currentFunction?.methods,\n      websocket: store.currentFunction?.websocket,\n      name: store.currentFunction?.name,\n      tags: store.currentFunction?.tags,\n      params: store.currentFunction?.params,\n      changelog,\n    });\n    if (!res.error) {\n      store.setCurrentFunction(res.data);\n      store.setRecentFunctionList([\n        res.data as TFunction,\n        ...store.recentFunctionList.filter((item) => item.name !== res.data.name),\n      ]);\n      // delete cache after deploy\n      functionCache.removeCache(store.currentFunction!._id);\n      onClose();\n      showSuccess(t(\"FunctionPanel.DeploySuccess\"));\n      queryClient.invalidateQueries([\"useFunctionHistoryQuery\"]);\n    }\n  };\n\n  return (\n    <>\n      <Tooltip\n        label={`快捷键: ${displayName.toUpperCase()}，调试可直接点击下方「运行」按钮`}\n        placement=\"bottom-end\"\n      >\n        <Button\n          variant={\"secondary\"}\n          rounded={\"full\"}\n          size={\"xs\"}\n          isLoading={functionDetailQuery.isFetching}\n          disabled={store.getFunctionUrl() === \"\"}\n          onClick={() => {\n            onOpen();\n          }}\n          px={3}\n          leftIcon={<RocketIcon />}\n        >\n          {t(\"FunctionPanel.Deploy\")}\n        </Button>\n      </Tooltip>\n\n      {isOpen && !functionDetailQuery.isFetching ? (\n        <Modal isOpen={isOpen} onClose={onClose} size=\"6xl\" isCentered initialFocusRef={headerRef}>\n          <ModalOverlay />\n          <ModalContent maxW={\"80%\"}>\n            <ModalHeader>Code Diff</ModalHeader>\n            <ModalCloseButton />\n            <ModalBody borderBottom={\"1px\"} borderBottomColor=\"gray.200\">\n              <CommonDiffEditor\n                original={(functionDetailQuery.data?.data as any)?.source?.code}\n                modified={functionCache.getCache(\n                  store.currentFunction?._id,\n                  store.currentFunction?.source?.code,\n                )}\n              />\n            </ModalBody>\n\n            <ModalFooter>\n              <div className=\"mr-2 w-full\">\n                <Input\n                  value={changelog}\n                  onChange={(v) => setChangelog(v.target.value)}\n                  variant=\"filled\"\n                  placeholder={String(\"输入此次函数修改的描述 (可选)\")}\n                />\n              </div>\n              <Button variant=\"ghost\" mr={3} onClick={onClose}>\n                {t(\"Cancel\")}\n              </Button>\n              <Button\n                ref={headerRef}\n                variant=\"primary\"\n                isLoading={updateFunctionMutation.isLoading}\n                onClick={() => {\n                  deploy();\n                }}\n              >\n                {t(\"FunctionPanel.ConfirmDeploy\")}\n              </Button>\n            </ModalFooter>\n          </ModalContent>\n        </Modal>\n      ) : null}\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/EditorPanel/index.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\nimport { useColorMode } from \"@chakra-ui/react\";\n\nimport FunctionEditor from \"@/components/Editor/FunctionEditor\";\nimport TSEditor from \"@/components/Editor/TSEditor\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport Panel from \"@/components/Panel\";\nimport { RUNTIMES_PATH } from \"@/constants\";\n\nimport { useFunctionListQuery } from \"../../service\";\nimport useFunctionStore from \"../../store\";\nimport CreateModal from \"../FunctionPanel/CreateModal\";\n\nimport \"@/components/Editor/index.css\";\n\nimport useFunctionCache from \"@/hooks/useFunctionCache\";\nimport useCustomSettingStore from \"@/pages/customSetting\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nfunction EditorPanel() {\n  const store = useFunctionStore((store) => store);\n  const { currentFunction, updateFunctionCode } = store;\n  const { commonSettings } = useCustomSettingStore();\n  const { colorMode } = useColorMode();\n  const { t } = useTranslation();\n  const functionCache = useFunctionCache();\n  const { isLSPEffective } = useGlobalStore();\n\n  const functionListQuery = useFunctionListQuery();\n  return (\n    <Panel className=\"flex-1 flex-grow !rounded-tl-none !px-0\">\n      {!functionListQuery.isFetching && functionListQuery.data?.data?.length === 0 && (\n        <EmptyBox className=\"h-full w-full\">\n          <>\n            <div className=\"flex items-center justify-center\">\n              <span className=\"text-[#828289]\">{t(\"NoFunctionYet\")}</span>\n              <CreateModal key=\"create_modal_new\">\n                <u className=\"ml-2 cursor-pointer text-primary-600\">{t(\"CreateNow\")}</u>\n              </CreateModal>\n            </div>\n          </>\n        </EmptyBox>\n      )}\n      <div className={functionListQuery.data?.data?.length !== 0 ? \"h-full\" : \"hidden\"}>\n        {commonSettings.useLSP && isLSPEffective ? (\n          <FunctionEditor\n            value={functionCache.getCache(currentFunction!._id, currentFunction!.source?.code)}\n            colorMode={colorMode}\n            className=\"h-full flex-grow\"\n            path={`${RUNTIMES_PATH}/${currentFunction?.name}.ts`}\n            onChange={(code, pos) => {\n              updateFunctionCode(currentFunction, code || \"\");\n              functionCache.setCache(currentFunction!._id, code || \"\");\n              functionCache.setPositionCache(currentFunction!.name, JSON.stringify(pos));\n            }}\n            fontSize={commonSettings.fontSize}\n          />\n        ) : (\n          <TSEditor\n            value={functionCache.getCache(currentFunction!._id, currentFunction!.source?.code)}\n            path={`${RUNTIMES_PATH}/${currentFunction?.name}.ts`}\n            onChange={(value) => {\n              updateFunctionCode(currentFunction, value || \"\");\n              functionCache.setCache(currentFunction!._id, value || \"\");\n            }}\n            fontSize={commonSettings.fontSize}\n            colorMode={colorMode}\n          />\n        )}\n      </div>\n    </Panel>\n  );\n}\n\nexport default EditorPanel;\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/FunctionPanel/ContextMenu/index.scss",
    "content": ".contexify {\n  box-shadow: none !important;\n  border: 1px solid #e2e8f0 !important;\n  min-width: 0 !important;\n  justify-content: center;\n  width: 120px;\n  padding: 2px !important;\n}\n\n.contexify_theme-dark {\n  background-color: #212630 !important;\n  border: 1px solid rgba(255, 255, 255, 0.16) !important;\n}\n\n.contexify_itemContent {\n  background: none !important;\n  width: 100% !important;\n  height: 100% !important;\n}"
  },
  {
    "path": "web/src/pages/app/functions/mods/FunctionPanel/ContextMenu/index.tsx",
    "content": "import { Item, Menu } from \"react-contexify\";\nimport { useTranslation } from \"react-i18next\";\nimport { useColorMode } from \"@chakra-ui/react\";\n\nimport { EditIconLine, LinkIcon, RecycleDeleteIcon } from \"@/components/CommonIcon\";\nimport ConfirmButton from \"@/components/ConfirmButton\";\nimport CopyText from \"@/components/CopyText\";\nimport IconText from \"@/components/IconText\";\nimport { COLOR_MODE } from \"@/constants\";\n\nimport { useDeleteFunctionMutation } from \"../../../service\";\nimport CreateModal from \"../CreateModal\";\n\nimport \"./index.scss\";\nimport \"react-contexify/dist/ReactContexify.css\";\n\nimport { TFunction } from \"@/apis/typing\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function ContextMenu(props: {\n  functionItem: TFunction;\n  tagsList: string[];\n  hideAll: () => void;\n}) {\n  const { functionItem, tagsList, hideAll } = props;\n  const { t } = useTranslation();\n  const deleteFunctionMutation = useDeleteFunctionMutation();\n  const { showSuccess, currentApp } = useGlobalStore();\n  const darkMode = useColorMode().colorMode === COLOR_MODE.dark;\n\n  return (\n    <Menu\n      id={functionItem._id}\n      animation=\"fade\"\n      className=\"flex\"\n      theme={darkMode ? \"dark\" : \"light\"}\n    >\n      <Item closeOnClick={false}>\n        <CreateModal functionItem={functionItem} tagList={tagsList} hideContextMenu={hideAll}>\n          <IconText\n            icon={\n              <div className=\"flex h-5 items-center\">\n                <EditIconLine />\n              </div>\n            }\n            text={t(\"Edit\")}\n          />\n        </CreateModal>\n      </Item>\n      <Item>\n        <ConfirmButton\n          onSuccessAction={async () => {\n            const res = await deleteFunctionMutation.mutateAsync(functionItem);\n            if (!res.error) {\n              showSuccess(t(\"DeleteSuccess\"));\n            }\n          }}\n          headerText={String(t(\"Delete\"))}\n          bodyText={String(t(\"FunctionPanel.DeleteConfirm\"))}\n          hideContextMenu={hideAll}\n        >\n          <IconText\n            icon={\n              <div className=\"flex h-5 items-center\">\n                <RecycleDeleteIcon fontSize={16} />\n              </div>\n            }\n            text={t(\"Delete\")}\n            className=\"hover:!text-error-600\"\n          />\n        </ConfirmButton>\n      </Item>\n      <Item>\n        <CopyText text={`${currentApp.origin}/${functionItem.name}`} hideToolTip>\n          <IconText\n            icon={\n              <div className=\"flex h-5 items-center\">\n                <LinkIcon fontSize={22} />\n              </div>\n            }\n            text={t(\"Copy\")}\n            className=\"hover:!text-primary-400\"\n          />\n        </CopyText>\n      </Item>\n    </Menu>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/FunctionPanel/CreateModal/functionTemplates.ts",
    "content": "import { t } from \"i18next\";\n\nconst functionTemplates = [\n  {\n    label: \"hello laf\",\n    value: `import cloud from '@lafjs/cloud'\nexport default async function (ctx: FunctionContext) {\n  console.log('Hello World')\n  return { data: 'hi, laf' }\n}\n`,\n  },\n  {\n    label: t(\"database example\"),\n    value: `import cloud from '@lafjs/cloud'\nexport default async function (ctx: FunctionContext) {\n  const db = cloud.database()\n  // insert data\n  await db.collection('test').add({ name: \"hello laf\" })\n  // get data\n  const res = await db.collection('test').getOne()\n  console.log(res)\n  return res.data\n}\n`,\n  },\n  {\n    label: t(\"upload example\"),\n    value: `import cloud from '@lafjs/cloud'\nimport { S3 } from \"@aws-sdk/client-s3\"\nexport default async function (ctx: FunctionContext) {\n  // Create your bucket first\n  const BUCKET = \"kcqcau-test\" \n  const client = new S3({\n    region: cloud.env.OSS_REGION,\n    endpoint: cloud.env.OSS_EXTERNAL_ENDPOINT,\n    credentials: {\n      accessKeyId: cloud.env.OSS_ACCESS_KEY,\n      secretAccessKey: cloud.env.OSS_ACCESS_SECRET,\n    },\n    forcePathStyle: true,\n  })\n  const file = ctx.files[0]\n  console.log(file)\n  const stream = require('fs').createReadStream(file.path)\n  const res = await client.putObject({\n    Bucket: BUCKET,\n    Key: ctx.files[0].filename,\n    Body: stream,\n    ContentType: file.mimetype,\n  })\n  console.log(res)\n  return res\n}\n    `,\n  },\n  {\n    label: t(\"ChatGPT example\"),\n    value: `import cloud from '@lafjs/cloud'\nconst apiKey = cloud.env.API_KEY\nexport default async function (ctx: FunctionContext) {\n  const { ChatGPTAPI } = await import('chatgpt')\n  const { body, response } = ctx\n  // get chatgpt api\n  let api = cloud.shared.get('api')\n  if (!api) {\n    api = new ChatGPTAPI({ apiKey })\n    cloud.shared.set('api', api)\n  }\n  // set stream response type\n  response.setHeader('Content-Type', 'application/octet-stream');\n  // send message\n  const res = await api.sendMessage(body.message, {\n    onProgress: (partialResponse) => {\n      if (partialResponse?.delta != undefined)\n        response.write(partialResponse.delta)\n    },\n    parentMessageId: body.parentMessageId || ''\n  })\n  response.end(\"--!\" + res.id)\n}\n    `,\n  },\n];\n\nexport default functionTemplates;\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/FunctionPanel/CreateModal/index.tsx",
    "content": "import React, { useEffect, useMemo, useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n  Button,\n  Checkbox,\n  CheckboxGroup,\n  Divider,\n  FormControl,\n  FormErrorMessage,\n  HStack,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  useDisclosure,\n  VStack,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { MoreTemplateIcon, TextIcon } from \"@/components/CommonIcon\";\nimport InputTag from \"@/components/InputTag\";\nimport { DEFAULT_CODE, SUPPORTED_METHODS } from \"@/constants\";\n\nimport { useCreateFunctionMutation, useUpdateFunctionMutation } from \"../../../service\";\nimport useFunctionStore from \"../../../store\";\n\nimport { TFunctionTemplate, TMethod } from \"@/apis/typing\";\nimport FunctionTemplate from \"@/pages/functionTemplate\";\nimport TemplateCard from \"@/pages/functionTemplate/Mods/TemplateCard\";\nimport {\n  useGetFunctionTemplatesQuery,\n  useGetRecommendFunctionTemplatesQuery,\n} from \"@/pages/functionTemplate/service\";\nimport useTemplateStore from \"@/pages/functionTemplate/store\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nconst CreateModal = (props: {\n  functionItem?: any;\n  children?: React.ReactElement;\n  tagList?: any;\n  aiCode?: string;\n  hideContextMenu?: () => void;\n}) => {\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { showSuccess, currentApp } = useGlobalStore();\n\n  const { functionItem, children = null, tagList, aiCode, hideContextMenu } = props;\n  const isEdit = !!functionItem;\n  const navigate = useNavigate();\n  const [searchKey, setSearchKey] = useState(\"\");\n  const [templateOpen, setTemplateOpen] = useState(false);\n  const { recentFunctionList, setRecentFunctionList, setCurrentFunction, currentFunction } =\n    useFunctionStore();\n  const { setShowTemplateItem } = useTemplateStore();\n\n  useEffect(() => {\n    const searchParams = new URLSearchParams(window.location.search);\n    const templateId = searchParams.get(\"templateId\");\n    if (!templateId) return;\n    localStorage.setItem(\"templateId\", templateId);\n  }, []);\n\n  const defaultValues = {\n    name: functionItem?.name || \"\",\n    description: functionItem?.desc || \"\",\n    websocket: !!functionItem?.websocket,\n    methods: functionItem?.methods || [\"GET\", \"POST\"],\n    code: functionItem?.source?.code || aiCode || DEFAULT_CODE || \"\",\n    tags: functionItem?.tags || [],\n  };\n\n  type FormData = {\n    name: string;\n    description: string;\n    websocket: boolean;\n    methods: TMethod[];\n    code: string;\n    tags: string[];\n  };\n\n  const {\n    register,\n    handleSubmit,\n    control,\n    setFocus,\n    reset,\n    getValues,\n    formState: { errors },\n  } = useForm<FormData>({\n    defaultValues,\n  });\n\n  const createFunctionMutation = useCreateFunctionMutation();\n  const updateFunctionMutation = useUpdateFunctionMutation();\n\n  const InitialTemplateList = useGetRecommendFunctionTemplatesQuery(\n    {\n      page: 1,\n      pageSize: 3,\n      keyword: \"\",\n      type: \"default\",\n      asc: 1,\n      sort: null,\n    },\n    {\n      enabled: !isOpen && !isEdit,\n    },\n  );\n  const searchedTemplateList = useGetFunctionTemplatesQuery(\n    {\n      page: 1,\n      pageSize: 3,\n      keyword: localStorage.getItem(\"templateId\") || \"\",\n      type: \"default\",\n      asc: 1,\n      sort: null,\n    },\n    {\n      enabled: !!localStorage.getItem(\"templateId\") && !isEdit,\n    },\n  );\n\n  const recommendedList = useMemo(\n    () => InitialTemplateList.data?.data.list || [],\n    [InitialTemplateList],\n  );\n  const searchedList = useMemo(\n    () => searchedTemplateList.data?.data.list || [],\n    [searchedTemplateList],\n  );\n  const showedList = useMemo(() => {\n    return [...searchedList, ...recommendedList].slice(0, 3);\n  }, [searchedList, recommendedList]);\n\n  const onSubmit = async (data: any) => {\n    let res: any = {};\n    if (isEdit && functionItem.name !== data.name) {\n      res = await updateFunctionMutation.mutateAsync({\n        ...data,\n        name: functionItem.name,\n        newName: data.name,\n      });\n      setRecentFunctionList(\n        recentFunctionList.map((item: any) => {\n          if (item.name === functionItem.name) {\n            return { ...item, name: data.name };\n          }\n          return item;\n        }),\n      );\n      setCurrentFunction({ ...currentFunction, name: data.name });\n    } else if (isEdit && functionItem.name === data.name) {\n      res = await updateFunctionMutation.mutateAsync(data);\n      setCurrentFunction({ ...currentFunction, ...data });\n    } else {\n      res = await createFunctionMutation.mutateAsync(data);\n    }\n\n    if (!res.error) {\n      showSuccess(isEdit ? t(\"update success\") : t(\"create success\"));\n      onClose();\n      reset(defaultValues);\n      navigate(`/app/${currentApp.appid}/function/${res.data.name}`, { replace: true });\n      hideContextMenu && hideContextMenu();\n    }\n  };\n\n  return (\n    <>\n      {children &&\n        React.cloneElement(children, {\n          onClick: () => {\n            onOpen();\n            reset(defaultValues);\n            setSearchKey(\"\");\n            setTimeout(() => {\n              setFocus(\"name\");\n            }, 0);\n          },\n        })}\n\n      <Modal isOpen={isOpen} onClose={onClose} size=\"3xl\">\n        <ModalOverlay />\n        <ModalContent m=\"auto\" className=\"!pb-12\">\n          <ModalHeader>\n            {isEdit ? t(\"FunctionPanel.EditFunction\") : t(\"FunctionPanel.AddFunction\")}\n          </ModalHeader>\n          <ModalCloseButton />\n\n          <ModalBody className=\"mb-4 !px-16\">\n            <VStack align=\"flex-start\">\n              <FormControl isInvalid={!!errors?.name}>\n                <div className=\"my-3 flex h-12 w-full items-center border-b-2\">\n                  <input\n                    {...register(\"name\", {\n                      pattern: {\n                        value: /^[a-zA-Z0-9_.\\-](?:[a-zA-Z0-9_.\\-/]{0,254}[a-zA-Z0-9_.\\-])?$/,\n                        message: t(\"FunctionPanel.FunctionNameRule\"),\n                      },\n                    })}\n                    id=\"name\"\n                    placeholder={String(t(\"FunctionPanel.FunctionNameTip\"))}\n                    className=\"h-8 w-full border-l-2 border-primary-600 bg-transparent pl-4 text-2xl font-medium\"\n                    style={{ outline: \"none\", boxShadow: \"none\" }}\n                    onChange={(e) => {\n                      setSearchKey(e.target.value);\n                    }}\n                    onKeyDown={(e) => {\n                      if (e.key === \"Enter\") {\n                        onSubmit({ ...getValues(), name: searchKey });\n                      }\n                    }}\n                  />\n                </div>\n                <FormErrorMessage>{errors.name && errors.name.message}</FormErrorMessage>\n              </FormControl>\n              <FormControl isInvalid={!!errors?.methods}>\n                <HStack spacing={6} className=\"mt-2\">\n                  <Controller\n                    name=\"methods\"\n                    control={control}\n                    render={({ field: { ref, ...rest } }) => (\n                      <CheckboxGroup {...rest} colorScheme=\"primary\">\n                        {Object.keys(SUPPORTED_METHODS).map((item) => {\n                          return (\n                            <Checkbox value={item} key={item}>\n                              {item}\n                            </Checkbox>\n                          );\n                        })}\n                      </CheckboxGroup>\n                    )}\n                  />\n                </HStack>\n                <FormErrorMessage>{errors.methods?.message}</FormErrorMessage>\n              </FormControl>\n              <FormControl>\n                <HStack className=\"mt-1 w-full\">\n                  <Controller\n                    name=\"tags\"\n                    control={control}\n                    render={({ field: { onChange, value } }) => (\n                      <InputTag value={value || []} onChange={onChange} tagList={tagList} />\n                    )}\n                  />\n                </HStack>\n              </FormControl>\n              <FormControl>\n                <div className=\"mb-2 flex w-full items-center border-b-2 border-transparent pb-1 focus-within:border-grayModern-200\">\n                  <TextIcon fontSize={16} color={\"gray.300\"} />\n                  <input\n                    id=\"description\"\n                    placeholder={t(\"FunctionPanel.Description\").toString()}\n                    className=\"w-full bg-transparent pl-2 text-lg text-second\"\n                    style={{ outline: \"none\", boxShadow: \"none\" }}\n                    {...register(\"description\")}\n                  />\n                </div>\n              </FormControl>\n              <Button\n                type=\"submit\"\n                onClick={handleSubmit(onSubmit)}\n                isLoading={updateFunctionMutation.isLoading || createFunctionMutation.isLoading}\n                className=\"!h-9 w-full !rounded !bg-primary-600 !font-semibold hover:!bg-primary-700\"\n              >\n                {!isEdit ? t(\"CreateFunction\") : t(\"EditFunction\")}\n              </Button>\n            </VStack>\n          </ModalBody>\n          {!isEdit && !aiCode && (\n            <>\n              <Divider />\n              <ModalFooter className=\"!px-16\">\n                <div className=\"mt-2 w-full\">\n                  <div className=\"pb-3 text-lg font-medium text-grayModern-700\">\n                    {t(\"Template.Recommended\")}\n                  </div>\n                  <div className=\"mb-11 flex w-full\">\n                    {showedList.map((item: TFunctionTemplate) => (\n                      <section\n                        className=\"h-28 w-1/3 px-1.5 py-1\"\n                        key={item._id}\n                        onClick={() => {\n                          setTemplateOpen(true);\n                        }}\n                      >\n                        <TemplateCard template={item} isModal={true} />\n                      </section>\n                    ))}\n                  </div>\n                  <div>\n                    <button\n                      className=\"flex w-full cursor-pointer items-center justify-center bg-primary-100 py-2 text-primary-600\"\n                      onClick={() => {\n                        setTemplateOpen(true);\n                        setShowTemplateItem(false);\n                      }}\n                    >\n                      <MoreTemplateIcon className=\"mr-2 text-lg\" />\n                      {t(\"FunctionPanel.CreateFromTemplate\")}\n                    </button>\n                  </div>\n                </div>\n              </ModalFooter>\n            </>\n          )}\n        </ModalContent>\n      </Modal>\n\n      <Modal\n        isOpen={templateOpen}\n        onClose={() => {\n          setTemplateOpen(!templateOpen);\n          navigate(`/app/${currentApp.appid}/function`, { replace: true });\n        }}\n      >\n        <ModalOverlay />\n        <ModalContent height={\"95%\"} maxW={\"80%\"} m={\"auto\"}>\n          <ModalHeader pb={-0.5}>{t(\"HomePage.NavBar.funcTemplate\")}</ModalHeader>\n          <ModalBody\n            overflowY={\"auto\"}\n            onWheel={(e) => {\n              e.stopPropagation();\n            }}\n          >\n            <ModalCloseButton />\n            <FunctionTemplate isModal={true} />\n          </ModalBody>\n          <ModalFooter></ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nexport default CreateModal;\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/FunctionPanel/index.css",
    "content": ".funcList .simplebar-scrollbar::before {\n  background: #dee0e2;\n  width: 4px;\n  transform: translateX(100%);\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/FunctionPanel/index.tsx",
    "content": "/****************************\n * cloud functions list sidebar\n ***************************/\n\nimport React, { DragEventHandler, useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useContextMenu } from \"react-contexify\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { AddIcon, Search2Icon } from \"@chakra-ui/icons\";\nimport {\n  Badge,\n  HStack,\n  Input,\n  InputGroup,\n  InputLeftElement,\n  useColorMode,\n  useToast,\n} from \"@chakra-ui/react\";\nimport { clsx } from \"clsx\";\nimport { t } from \"i18next\";\nimport { cloneDeep } from \"lodash\";\n\nimport {\n  ApiIcon,\n  EditIconLine,\n  LinkIcon,\n  RecycleBinIcon,\n  RecycleDeleteIcon,\n  TriggerIcon,\n} from \"@/components/CommonIcon\";\nimport ConfirmButton from \"@/components/ConfirmButton\";\nimport { useConfirmDialog } from \"@/components/ConfirmDialog\";\nimport CopyText from \"@/components/CopyText\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport FileTypeIcon, { FileType } from \"@/components/FileTypeIcon\";\nimport IconText from \"@/components/IconText\";\nimport IconWrap from \"@/components/IconWrap\";\nimport MoreButton from \"@/components/MoreButton\";\nimport Panel from \"@/components/Panel\";\nimport SectionList from \"@/components/SectionList\";\nimport { COLOR_MODE, Pages } from \"@/constants\";\n\nimport {\n  useDeleteFunctionMutation,\n  useFunctionListQuery,\n  useUpdateFunctionMutation,\n} from \"../../service\";\nimport useFunctionStore from \"../../store\";\nimport TriggerModal from \"../TriggerModal\";\n\nimport ContextMenu from \"./ContextMenu\";\nimport CreateModal from \"./CreateModal\";\n\nimport \"./index.css\";\n\nimport { TFunction, TFunctionNode } from \"@/apis/typing\";\nimport useFunctionCache from \"@/hooks/useFunctionCache\";\nimport RecycleBinModal from \"@/pages/app/functions/mods/RecycleBinModal\";\nimport useCustomSettingStore from \"@/pages/customSetting\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype TagItem = {\n  tagName: string;\n  selected: boolean;\n};\n\nfunction pruneTree(node: TFunctionNode, data: TFunction[]): void {\n  node.children = node.children.filter((child) => pruneChildTree(child, data));\n}\n\nfunction pruneChildTree(node: TFunctionNode, data: TFunction[]): boolean {\n  if (!node.children || node.children.length === 0) {\n    return data.some((item) => item.name === node.name);\n  }\n  node.children = node.children.filter((child) => pruneChildTree(child, data));\n  return node.children.length > 0 || data.some((item) => item.name === node.name);\n}\n\n// get function dir not ended with /\nfunction getFunctionDir(funcName: string, isFuncDir: \"true\" | \"false\" = \"false\") {\n  if (isFuncDir === \"true\" && funcName !== \"\" && !funcName.endsWith(\"/\")) funcName += \"/\";\n  if (isFuncDir === \"false\" && funcName.endsWith(\"/\"))\n    funcName = funcName.slice(0, funcName.length - 1);\n\n  const funcNameSplit = funcName.split(\"/\");\n  funcNameSplit.pop();\n  return funcNameSplit.join(\"/\");\n}\n\nexport default function FunctionList() {\n  const {\n    setCurrentFunction,\n    currentFunction,\n    setAllFunctionList,\n    allFunctionList,\n    recentFunctionList,\n    setRecentFunctionList,\n  } = useFunctionStore((store) => store);\n\n  const functionCache = useFunctionCache();\n  const [functionRoot, setFunctionRoot] = useState<TFunctionNode>({\n    _id: \"\",\n    name: \"\",\n    level: 0,\n    isExpanded: true,\n    children: [],\n  });\n\n  const [keywords, setKeywords] = useState(\"\");\n\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  const { currentApp, showSuccess } = useGlobalStore();\n  const { commonSettings } = useCustomSettingStore();\n\n  const { id: functionName } = useParams();\n  const navigate = useNavigate();\n  const [tagsList, setTagsList] = useState<TagItem[]>([]);\n\n  const [currentTag, setCurrentTag] = useState<TagItem | null>(null);\n\n  const { show, hideAll } = useContextMenu();\n\n  const generateRoot = useCallback(\n    (data: TFunction[]) => {\n      const root = cloneDeep(functionRoot);\n      data.forEach((item) => {\n        const nameParts = item.name.split(\"/\");\n        let currentNode = root;\n        nameParts.forEach((_, index) => {\n          if (currentNode.children.find((node) => node.name === item.name)) {\n            const index = currentNode.children.findIndex((node) => node.name === item.name);\n            currentNode.children[index] = item;\n            return;\n          } else if (index === nameParts.length - 1) {\n            currentNode.children.push(item);\n            return;\n          }\n\n          const name = nameParts.slice(0, index + 1).join(\"/\");\n          let existingNode = currentNode.children.find(\n            (node) => node.name === name && node.level === index,\n          );\n          if (!existingNode) {\n            // dir\n            const newNode = {\n              _id: item._id,\n              name,\n              level: index,\n              isExpanded: false,\n              children: [],\n            };\n            currentNode.children.push(newNode);\n            existingNode = newNode;\n          }\n          currentNode = existingNode;\n        });\n      });\n      pruneTree(root, data);\n      return root;\n    },\n    [functionRoot],\n  );\n\n  const filterFunctions = useMemo(() => {\n    const res = generateRoot(\n      allFunctionList.filter((item: any) => {\n        let flag = item?.name.includes(keywords);\n        if (tagsList.length > 0 && currentTag) {\n          flag = flag && item.tags.includes(currentTag?.tagName);\n        }\n        return flag;\n      }),\n    );\n    return res.children;\n  }, [generateRoot, allFunctionList, keywords, tagsList, currentTag]);\n\n  const [draggedFunc, setDraggedFunc] = useState<{\n    func: string;\n    isFuncDir: \"true\" | \"false\";\n  } | null>(null);\n\n  useFunctionListQuery({\n    onSuccess: (data) => {\n      setAllFunctionList(data.data);\n      setFunctionRoot(generateRoot(data.data));\n      const tags = data.data.reduce((pre: any, item: any) => {\n        return pre.concat(item.tags);\n      }, []);\n      let newTags: TagItem[] = Array.from(new Set(tags)).map((tagName: any) => {\n        const oldTag = tagsList.filter((tag) => tag.tagName === tagName);\n        return oldTag.length > 0\n          ? oldTag[0]\n          : {\n              tagName: tagName,\n              selected: false,\n            };\n      });\n      setTagsList(newTags);\n\n      if (!recentFunctionList.length && data.data.length > 0) {\n        const currentFunction =\n          data.data.find((item: TFunction) => item.name === functionName) || data.data[0];\n        setCurrentFunction(currentFunction);\n        setRecentFunctionList([currentFunction]);\n        navigate(`/app/${currentApp?.appid}/${Pages.function}/${currentFunction?.name}`, {\n          replace: true,\n        });\n      }\n    },\n  });\n\n  useEffect(() => {\n    setRecentFunctionList([]);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      // clear current function\n      setCurrentFunction({});\n    };\n  }, [setCurrentFunction]);\n\n  const deleteFunctionMutation = useDeleteFunctionMutation();\n\n  const renderSelectedTags = () => {\n    return tagsList.length > 0 ? (\n      <div className=\"mb-2 flex w-full min-w-[200px] flex-wrap items-center justify-start border-b pb-1\">\n        <p className={clsx(\"mb-1 mr-2\", darkMode ? \"text-white-500\" : \"text-grayModern-500\")}>\n          {t(\"FunctionPanel.Tags\")}\n        </p>\n        {tagsList.map((item) => (\n          <span\n            className={clsx(\n              \"mb-1 mr-1 cursor-pointer rounded px-2\",\n              darkMode ? \"bg-gray-700\" : \"bg-gray-100\",\n              {\n                \"!bg-primary-400 text-white\": item.tagName === currentTag?.tagName,\n              },\n            )}\n            key={item.tagName}\n            onClick={() => setCurrentTag(currentTag?.tagName === item.tagName ? null : item)}\n          >\n            {item.tagName}\n          </span>\n        ))}\n      </div>\n    ) : null;\n  };\n\n  function renderSectionItems(items: TFunctionNode[], isFuncList = false) {\n    const sortedItems = [...items].sort((a, b) => {\n      const isFolderA = a.children && a.children.length > 0;\n      const isFolderB = b.children && b.children.length > 0;\n      if (isFolderA && !isFolderB) {\n        return -1;\n      } else if (!isFolderA && isFolderB) {\n        return 1;\n      }\n      return 0;\n    });\n\n    return sortedItems.map((item, index) => {\n      let fileType = FileType.ts;\n      if (item.isExpanded) {\n        fileType = FileType.folderOpen;\n      } else if (item.children?.length) {\n        fileType = FileType.folder;\n      }\n      const nameParts = item.name.split(\"/\");\n      const level = item.level || nameParts.length - 1;\n      const itemDisplay = (() => {\n        if (\n          item.children?.length ||\n          isFuncList ||\n          commonSettings.funcListDisplay === \"name\" ||\n          !item.desc\n        ) {\n          return <span className=\"select-none\">{nameParts[nameParts.length - 1]}</span>;\n        } else if (commonSettings.funcListDisplay === \"desc\") {\n          return <span className=\"select-none\">{item.desc}</span>;\n        } else if (commonSettings.funcListDisplay === \"desc-name\") {\n          return (\n            <span className=\"flex select-none items-center\">\n              <span>{item.desc}</span>\n              <div className=\"ml-1 translate-y-[1px] scale-[.85] opacity-75\">{` ${\n                nameParts[nameParts.length - 1]\n              }`}</div>\n            </span>\n          );\n        } else {\n          return (\n            <span className=\"flex select-none items-center\">\n              <span>{nameParts[nameParts.length - 1]}</span>\n              <div className=\"ml-1 translate-y-[1px] scale-[.85] opacity-75\">{` ${item.desc}`}</div>\n            </span>\n          );\n        }\n      })();\n\n      const onDragStart: DragEventHandler<HTMLLIElement> = (e) => {\n        const container = e.currentTarget?.parentElement;\n        if (!container) return;\n        const dataset = (e.target as any).dataset;\n        if (!dataset || !dataset.func) return;\n\n        const el = document.createElement(\"div\");\n        el.textContent = dataset.func;\n        el.className =\n          \"border border-green-500 rounded-lg py-1 px-2 font-medium tracking-wide max-w-fit\";\n        container.appendChild(el);\n        setDraggedFunc(dataset);\n        e.dataTransfer.setDragImage(el, -10, -10);\n\n        setTimeout(() => {\n          container.removeChild(el);\n        }, 0);\n      };\n\n      return (\n        <React.Fragment key={index}>\n          <SectionList.Item\n            isActive={item.name === currentFunction?.name && !item.children?.length}\n            key={index as any}\n            className={clsx(\n              \"group hover:!text-primary-700\",\n              darkMode ? \"text-grayIron-200\" : \" text-grayIron-700\",\n              item.name === currentFunction?.name && !item.children?.length && \"!text-primary-700\",\n              dragOverFuncDir !== null &&\n                ((item.children?.length && (item.name + \"/\").startsWith(dragOverFuncDir)) ||\n                  (!item.children?.length && item.name.startsWith(dragOverFuncDir))) &&\n                \"!text-primary-700\",\n              \"!mb-0 pb-[2px]\",\n              dragOverFuncDir !== null &&\n                ((item.children?.length && (item.name + \"/\").startsWith(dragOverFuncDir)) ||\n                  (!item.children?.length && item.name.startsWith(dragOverFuncDir))) &&\n                \"bg-[#f9f9f9]\",\n            )}\n            onClick={() => {\n              if (!item.children?.length) {\n                setCurrentFunction(item);\n                if (!recentFunctionList.map((item) => item._id).includes(item._id)) {\n                  setRecentFunctionList([item as unknown as TFunction, ...recentFunctionList]);\n                }\n                navigate(`/app/${currentApp?.appid}/${Pages.function}/${item.name}`, {\n                  replace: true,\n                });\n              } else {\n                item.isExpanded = !item.isExpanded;\n                setFunctionRoot({ ...functionRoot });\n              }\n            }}\n            draggable\n            onDragStart={onDragStart}\n            data-func={item.name}\n            data-is-func-dir={!!item.children?.length}\n            onContextMenu={(e) => {\n              const sidebarWidth =\n                JSON.parse(localStorage.getItem(\"laf_custom_setting\") || \"\").state.layoutInfo\n                  .functionPage.SideBar.style.width || 0;\n              if (!!item.children?.length) return;\n              if (e.clientX > sidebarWidth - 120) {\n                show({\n                  event: e,\n                  id: item._id,\n                  position: {\n                    x: e.clientX - 120,\n                    y: e.clientY,\n                  },\n                });\n              } else {\n                show({ event: e, id: item._id });\n              }\n            }}\n          >\n            <div\n              className=\"flex items-center overflow-hidden text-ellipsis whitespace-nowrap font-medium\"\n              style={{\n                marginLeft: !isFuncList ? `${0.35 * level}rem` : 0,\n              }}\n            >\n              <FileTypeIcon type={fileType} width=\"12px\" />\n              <span style={{ fontSize: commonSettings.fontSize - 2, marginLeft: \"0.4rem\" }}>\n                {itemDisplay}\n              </span>\n            </div>\n            {!item.children?.length && (\n              <HStack spacing={1}>\n                {functionCache.getCache(item?._id, (item as any)?.source?.code) !==\n                  (item as any)?.source?.code && (\n                  <span className=\"mt-[1px] inline-block h-1 w-1 flex-none rounded-full bg-rose-500\"></span>\n                )}\n                <MoreButton isHidden={item.name !== currentFunction?.name} label={t(\"Operation\")}>\n                  <>\n                    <CreateModal functionItem={item} tagList={tagsList}>\n                      <IconText\n                        icon={\n                          <div className=\"flex h-full items-center\">\n                            <EditIconLine />\n                          </div>\n                        }\n                        text={t(\"Edit\")}\n                      />\n                    </CreateModal>\n                    <ConfirmButton\n                      onSuccessAction={async () => {\n                        const res = await deleteFunctionMutation.mutateAsync(item);\n                        if (!res.error) {\n                          showSuccess(t(\"DeleteSuccess\"));\n                        }\n                      }}\n                      headerText={String(t(\"Delete\"))}\n                      bodyText={String(t(\"FunctionPanel.DeleteConfirm\"))}\n                    >\n                      <IconText\n                        icon={<RecycleDeleteIcon fontSize={16} />}\n                        text={t(\"Delete\")}\n                        className=\"hover:!text-error-600\"\n                      />\n                    </ConfirmButton>\n                    <CopyText text={`${currentApp.origin}/${item.name}`} hideToolTip>\n                      <IconText\n                        icon={\n                          <div className=\"flex h-5 items-center\">\n                            <LinkIcon fontSize={22} />\n                          </div>\n                        }\n                        text={t(\"Copy\")}\n                        className=\"hover:!text-primary-400\"\n                      />\n                    </CopyText>\n                  </>\n                </MoreButton>\n              </HStack>\n            )}\n          </SectionList.Item>\n          {item._id && (\n            <ContextMenu\n              functionItem={item as unknown as TFunction}\n              tagsList={tagsList.map((item) => item.tagName)}\n              hideAll={hideAll}\n            />\n          )}\n          {item.isExpanded && item?.children?.length && renderSectionItems(item.children)}\n        </React.Fragment>\n      );\n    });\n  }\n\n  const updateFunctionMutation = useUpdateFunctionMutation();\n  const toast = useToast();\n  const confirmDialog = useConfirmDialog();\n  const [dragOverFuncDir, setDragOverFuncDir] = useState<string | null>(null);\n\n  const renameFunction = useCallback(\n    async (oldName: string, targetDirOrNewName: string, isNewName = false) => {\n      const func = allFunctionList.find((v) => v.name === oldName);\n      if (!func) return;\n\n      let newName = targetDirOrNewName;\n      if (!isNewName) {\n        let targetDir = targetDirOrNewName;\n        if (targetDir !== \"\" && !targetDir.endsWith(\"/\")) targetDir += \"/\";\n\n        const funcName = oldName.split(\"/\").pop();\n        newName = targetDir + funcName;\n      }\n\n      const res = await updateFunctionMutation.mutateAsync({\n        name: func.name,\n        description: func.desc,\n        websocket: func.websocket,\n        methods: func.methods,\n        code: func.source.code,\n        tags: func.tags,\n        newName,\n      });\n      if (res.error) return;\n\n      setRecentFunctionList(\n        recentFunctionList.map((item: any) => {\n          if (item.name === oldName) {\n            return { ...item, name: newName };\n          }\n          return item;\n        }),\n      );\n      if (currentFunction.name === oldName) {\n        setCurrentFunction({ ...currentFunction, name: newName });\n      }\n    },\n    [allFunctionList, currentFunction, recentFunctionList],\n  );\n\n  const renameFunctionDir = useCallback(\n    async (srcDir: string, targetDir: string) => {\n      if (srcDir !== \"\" && !srcDir.endsWith(\"/\")) srcDir += \"/\";\n      if (targetDir !== \"\" && !targetDir.endsWith(\"/\")) targetDir += \"/\";\n\n      let dir = getFunctionDir(srcDir, \"false\");\n      if (dir !== \"\") dir += \"/\";\n      const funcs = allFunctionList.filter((func) => func.name.startsWith(srcDir));\n\n      return await Promise.allSettled(\n        funcs.map(async (v) => {\n          const newFuncName = targetDir + v.name.slice(dir.length);\n          return await renameFunction(v.name, newFuncName, true);\n        }),\n      );\n    },\n    [allFunctionList, renameFunction],\n  );\n\n  const onDrop: React.DragEventHandler<HTMLDivElement> = useCallback(\n    (e) => {\n      if (!draggedFunc) return;\n      const { func: srcFunc, isFuncDir: srcIsFuncDir } = draggedFunc;\n\n      // find target position\n      let target = e.target as any;\n      while (target && !(\"func\" in target.dataset)) {\n        if (target.id === \"func-list\") {\n          // out of search range\n          target = null;\n          break;\n        }\n        target = target.parentElement;\n      }\n\n      const handleMoveToRootDir = () => {\n        // from root dir to root dir\n        if (!srcFunc.includes(\"/\")) return;\n\n        confirmDialog.show({\n          headerText: String(t(\"MoveFunction\")),\n          bodyText: String(\n            t(\"FunctionPanel.MoveFunctionToRootTip\", {\n              srcFunc,\n            }),\n          ),\n          onConfirm: () => {\n            const toastId = toast({\n              title: String(t(\"FunctionPanel.MovingFunction\")),\n              status: \"loading\",\n              duration: null,\n              position: \"top-left\",\n            });\n            const task =\n              srcIsFuncDir === \"true\"\n                ? renameFunctionDir(srcFunc, \"\")\n                : renameFunction(srcFunc, \"\");\n\n            task.finally(() => toast.close(toastId));\n          },\n          confirmButtonText: String(t(\"Confirm\")),\n        });\n        return;\n      };\n\n      // root dir\n      if (!target) {\n        return handleMoveToRootDir();\n      }\n\n      const { func: targetFunc, isFuncDir } = target.dataset;\n      // same file or file\n      if (targetFunc === srcFunc && isFuncDir === srcIsFuncDir) return;\n\n      let targetDir = getFunctionDir(targetFunc, isFuncDir);\n      if (targetDir === \"\") {\n        return handleMoveToRootDir();\n      }\n\n      const srcFuncDir = getFunctionDir(srcFunc, srcIsFuncDir);\n      // not to root\n      // not to drag a dir to its inner dir\n      // not to drag a file to the same dir\n      if (\n        targetDir &&\n        !(\n          (srcIsFuncDir === \"true\" && targetDir.startsWith(srcFuncDir)) ||\n          (srcIsFuncDir === \"true\" && targetDir === getFunctionDir(srcFunc, \"false\")) ||\n          (srcIsFuncDir !== \"true\" && srcFuncDir === targetDir)\n        )\n      ) {\n        targetDir += \"/\";\n        confirmDialog.show({\n          headerText: String(t(\"MoveFunction\")),\n          bodyText: String(\n            t(\"FunctionPanel.MoveFunctionTip\", {\n              srcFunc,\n              targetDir,\n            }),\n          ),\n          onConfirm: () => {\n            const toastId = toast({\n              title: String(t(\"FunctionPanel.MovingFunction\")),\n              status: \"loading\",\n              duration: null,\n              position: \"top-left\",\n            });\n            const task =\n              srcIsFuncDir === \"true\"\n                ? renameFunctionDir(srcFunc, targetDir)\n                : renameFunction(srcFunc, targetDir);\n\n            task.finally(() => toast.close(toastId));\n          },\n          confirmButtonText: String(t(\"Confirm\")),\n        });\n      }\n    },\n    [renameFunction, renameFunctionDir, draggedFunc],\n  );\n\n  const onDragOver: React.DragEventHandler<HTMLDivElement> = useCallback(\n    (e) => {\n      if (!draggedFunc) return;\n      e.preventDefault();\n\n      // find target position\n      let target = e.target as any;\n      while (target && !(\"func\" in target.dataset)) {\n        if (target.id === \"func-list\") {\n          // out of search range\n          target = null;\n          break;\n        }\n        target = target.parentElement;\n      }\n\n      if (target) {\n        const { isFuncDir, func } = target.dataset;\n        let targetDir = getFunctionDir(func, isFuncDir);\n        const draggedFuncDir = getFunctionDir(draggedFunc.func, draggedFunc.isFuncDir);\n        // same file or dir\n        // drag a dir to its inner dir\n        // drag a file to the same dir\n        if (\n          (func === draggedFunc.func && isFuncDir === draggedFunc.isFuncDir) ||\n          (draggedFunc.isFuncDir === \"true\" && targetDir.startsWith(draggedFuncDir)) ||\n          (draggedFunc.isFuncDir === \"true\" &&\n            targetDir === getFunctionDir(draggedFunc.func, \"false\")) ||\n          (draggedFunc.isFuncDir !== \"true\" && draggedFuncDir === targetDir)\n        ) {\n          setDragOverFuncDir(null);\n          return;\n        }\n\n        setDragOverFuncDir(!targetDir ? \"\" : targetDir + \"/\");\n      } else {\n        // from root to root\n        if (!draggedFunc.func.includes(\"/\")) {\n          setDragOverFuncDir(null);\n          return;\n        }\n        // all files and dirs\n        setDragOverFuncDir(\"\");\n      }\n    },\n    [draggedFunc],\n  );\n\n  return (\n    <Panel className=\"flex-grow overflow-hidden\">\n      <confirmDialog.Dialog />\n      <Panel.Header\n        title={\n          <div className=\"flex\">\n            {t`FunctionPanel.FunctionList`}\n            {allFunctionList.length ? (\n              <Badge rounded={\"full\"} ml=\"1\">\n                {allFunctionList.length}\n              </Badge>\n            ) : null}\n          </div>\n        }\n        actions={[\n          <RecycleBinModal key=\"recycle_modal\">\n            <IconWrap size={20} tooltip={t(\"RecycleBin\").toString()}>\n              <RecycleBinIcon color={darkMode ? \"white\" : \"#24282C\"} />\n            </IconWrap>\n          </RecycleBinModal>,\n          <CopyText\n            key=\"copy_text\"\n            text={`${currentApp.origin}/_/api-docs?token=${currentApp.openapi_token}`}\n            hideToolTip\n          >\n            <IconWrap size={20} tooltip={t(\"FunctionPanel.CopyOpenAPIUrl\").toString()}>\n              <ApiIcon fontSize={18} />\n            </IconWrap>\n          </CopyText>,\n          <TriggerModal key=\"trigger_modal\">\n            <IconWrap size={20} tooltip={t(\"TriggerPanel.Trigger\").toString()}>\n              <TriggerIcon fontSize={13} />\n            </IconWrap>\n          </TriggerModal>,\n          <CreateModal key=\"create_modal\" tagList={tagsList}>\n            <IconWrap size={20} tooltip={t(\"FunctionPanel.AddFunction\").toString()}>\n              <AddIcon fontSize={12} />\n            </IconWrap>\n          </CreateModal>,\n        ]}\n      />\n\n      <InputGroup className=\"my-1.5\">\n        <InputLeftElement\n          height={\"6\"}\n          pointerEvents=\"none\"\n          children={<Search2Icon color=\"gray.300\" fontSize={12} />}\n        />\n        <Input\n          size=\"xs\"\n          pl={8}\n          rounded={\"full\"}\n          placeholder={String(t(\"FunctionPanel.SearchPlaceholder\"))}\n          onChange={(e) => {\n            setKeywords(e.target.value);\n          }}\n        />\n      </InputGroup>\n\n      {renderSelectedTags()}\n\n      <div className=\"funcList flex-grow\" style={{ overflowY: \"auto\" }}>\n        {keywords || currentTag || functionRoot.children?.length ? (\n          <SectionList\n            onDragOver={onDragOver}\n            onDrop={onDrop}\n            onDragEnd={() => setDragOverFuncDir(null)}\n            onDragLeave={() => setDragOverFuncDir(null)}\n            id=\"func-list\"\n          >\n            {keywords || currentTag\n              ? renderSectionItems(filterFunctions, true)\n              : renderSectionItems(functionRoot.children)}\n          </SectionList>\n        ) : (\n          <EmptyBox hideIcon>\n            <p>{t(\"FunctionPanel.EmptyFunctionTip\")}</p>\n          </EmptyBox>\n        )}\n      </div>\n    </Panel>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/HeadPanel/FunctionDetailPopOver.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\nimport { BiMessageSquareDetail } from \"react-icons/bi\";\nimport {\n  Popover,\n  PopoverBody,\n  PopoverContent,\n  PopoverTrigger,\n  Portal,\n  Tag,\n  TagLabel,\n} from \"@chakra-ui/react\";\n\nimport FileTypeIcon from \"@/components/FileTypeIcon\";\nimport IconWrap from \"@/components/IconWrap\";\nimport { formatDate } from \"@/utils/format\";\n\nimport { TFunction } from \"@/apis/typing\";\n\nexport default function FunctionDetailPopOver(props: { functionItem: TFunction; color?: string }) {\n  const { functionItem, color } = props;\n  const { t } = useTranslation();\n\n  return (\n    <Popover trigger=\"hover\" placement=\"bottom-start\" isLazy>\n      <IconWrap className=\"mr-1\">\n        <PopoverTrigger>\n          <span>\n            <BiMessageSquareDetail color={color || \"#828289\"} />\n          </span>\n        </PopoverTrigger>\n      </IconWrap>\n      <Portal>\n        <PopoverContent width={\"400px\"}>\n          <PopoverBody px=\"6\" py=\"4\">\n            <h2 className=\"mb-1 text-2xl\">\n              <span className=\"align-middle\">{functionItem.name}</span> <FileTypeIcon type=\"ts\" />\n            </h2>\n            <div className=\"text-grayIron-600\">\n              <span>{t(\"Template.updatedAt\") + \" \" + formatDate(functionItem.updatedAt)}</span>\n              <p className=\"mt-2\">{functionItem.desc}</p>\n            </div>\n            <div className=\"mt-2 flex w-full flex-wrap items-center justify-start\">\n              {functionItem.tags.map((item: string) => (\n                <Tag className=\"mb-2 mr-2 cursor-pointer\" key={item}>\n                  <TagLabel>{item}</TagLabel>\n                </Tag>\n              ))}\n            </div>\n          </PopoverBody>\n        </PopoverContent>\n      </Portal>\n    </Popover>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/HeadPanel/index.css",
    "content": ".recentList .simplebar-scrollbar::before {\n  background: #dee0e2;\n  height: 6px;\n  transform: translateY(50%);\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/HeadPanel/index.tsx",
    "content": "import { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { CloseIcon } from \"@chakra-ui/icons\";\nimport { HStack, Input, Tooltip, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport SimpleBar from \"simplebar-react\";\n\nimport { CopyIcon, EditIconFull } from \"@/components/CommonIcon\";\nimport CopyText from \"@/components/CopyText\";\nimport IconWrap from \"@/components/IconWrap\";\nimport Panel from \"@/components/Panel\";\nimport { COLOR_MODE, Pages } from \"@/constants\";\n\nimport useFunctionStore from \"../../store\";\n\nimport FunctionDetailPopOver from \"./FunctionDetailPopOver\";\n\nimport \"./index.css\";\n\nimport useFunctionCache from \"@/hooks/useFunctionCache\";\nimport CollaborateButton from \"@/pages/app/collaboration/CollaborateButton\";\nimport DeployButton from \"@/pages/app/functions/mods/DeployButton\";\nimport SysSetting from \"@/pages/app/setting/SysSetting\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nfunction HeadPanel() {\n  const darkMode = useColorMode().colorMode === COLOR_MODE.dark;\n  const {\n    getFunctionUrl,\n    recentFunctionList,\n    setRecentFunctionList,\n    currentFunction,\n    setCurrentFunction,\n  } = useFunctionStore((state) => state);\n  const functionCache = useFunctionCache();\n  const navigate = useNavigate();\n  const { currentApp } = useGlobalStore();\n\n  useEffect(() => {\n    const element = document.getElementById(\"reverse_scroll\");\n    if (element) {\n      const handleWheel = (event: WheelEvent) => {\n        event.preventDefault();\n        const elementToScroll = element.querySelector(\".simplebar-content-wrapper\");\n        elementToScroll?.scrollTo({\n          left: elementToScroll.scrollLeft + event.deltaY / 2,\n        });\n      };\n      element.addEventListener(\"wheel\", handleWheel);\n      return () => {\n        element.removeEventListener(\"wheel\", handleWheel);\n      };\n    }\n  }, []);\n\n  return (\n    <Panel className=\"recentList !flex-row justify-between !px-0\">\n      <SimpleBar style={{ flex: 1, overflowY: \"hidden\" }} id=\"reverse_scroll\">\n        <HStack className=\"flex-1 flex-nowrap\" height=\"36px\" data-simplebar>\n          <div className=\"flex h-full\">\n            {recentFunctionList.length > 0 &&\n              recentFunctionList.map((item, index) => {\n                const selected = currentFunction?._id === item._id;\n                const isLast = recentFunctionList.length <= 1;\n                return (\n                  <div\n                    key={index}\n                    className={clsx(\n                      \"group !ml-0 flex h-full w-28 cursor-pointer items-center justify-between border-y-[2px] px-3 text-[13px] font-medium\",\n                      darkMode ? \"border-[#1A202C]\" : \"border-[#EEF0F2]\",\n                      selected\n                        ? \"border-b-transparent border-t-primary-600 text-primary-700\"\n                        : darkMode\n                        ? \"border-t-lafDark-200 text-grayModern-400\"\n                        : \"border-t-lafWhite-200 text-grayModern-600\",\n                      selected\n                        ? index === 0\n                          ? \"border-r-[2px]\"\n                          : \"border-x-[2px]\"\n                        : index === 0\n                        ? \"pr-[14px]\"\n                        : \"px-[14px]\",\n                    )}\n                    onClick={() => {\n                      navigate(`/app/${currentApp?.appid}/${Pages.function}/${item?.name}`, {\n                        replace: true,\n                      });\n                      setCurrentFunction(item);\n                    }}\n                  >\n                    <div className=\"flex max-w-20 truncate\">\n                      <FunctionDetailPopOver\n                        functionItem={item}\n                        color={selected ? \"#00A9A6\" : \"\"}\n                      />\n                      <Tooltip label={item.name} placement=\"auto\">\n                        <p className=\"truncate\">{item.name.split(\"/\").pop()}</p>\n                      </Tooltip>\n                    </div>\n                    {functionCache.getCache(item?._id, (item as any)?.source?.code) !==\n                    (item as any)?.source?.code ? (\n                      <span\n                        className={clsx(\n                          \"ml-2 inline-block h-1 w-1 flex-none rounded-full bg-rose-500\",\n                          !isLast ? \"group-hover:hidden\" : \"\",\n                        )}\n                      ></span>\n                    ) : (\n                      <span className=\"ml-2 inline-block h-1 w-1 flex-none rounded-full bg-none group-hover:hidden\"></span>\n                    )}\n                    <span className={clsx(!isLast ? \"-mr-1 hidden group-hover:flex\" : \"hidden\")}>\n                      <IconWrap\n                        size={16}\n                        onClick={(e) => {\n                          e.stopPropagation();\n                          setRecentFunctionList(\n                            recentFunctionList.filter((i) => i._id !== item._id),\n                          );\n                          if (currentFunction?._id === item._id) {\n                            const nextFunction =\n                              recentFunctionList[index + 1] || recentFunctionList[0] || {};\n                            setCurrentFunction(nextFunction);\n                            navigate(\n                              `/app/${currentApp?.appid}/${Pages.function}/${nextFunction.name}`,\n                              { replace: true },\n                            );\n                          }\n                        }}\n                      >\n                        <CloseIcon boxSize=\"2\" className=\"!text-grayModern-600\" />\n                      </IconWrap>\n                    </span>\n                  </div>\n                );\n              })}\n          </div>\n          <div\n            className={clsx(\n              \"!ml-0 flex h-full flex-1 border-b-[2px] \",\n              !darkMode ? \"border-[#EEF0F2] \" : \"border-[#1A202C]\",\n            )}\n          ></div>\n        </HStack>\n      </SimpleBar>\n      <HStack\n        minW=\"500px\"\n        height=\"36px\"\n        className={clsx(\n          \"flex justify-end border-b-[2px] pr-2\",\n          !darkMode ? \"border-[#EEF0F2] \" : \"border-[#1A202C]\",\n        )}\n        spacing={3}\n      >\n        <CollaborateButton />\n        {!!currentFunction._id && (\n          <>\n            <DeployButton />\n            <div className={clsx(\"flex items-center pl-1\", !darkMode && \"bg-[#F6F8F9]\")}>\n              <CopyText text={getFunctionUrl()}>\n                <Input w={\"200px\"} size=\"xs\" readOnly value={getFunctionUrl()} />\n              </CopyText>\n              <CopyText\n                text={getFunctionUrl()}\n                className=\"mr-2 cursor-pointer !text-grayModern-300\"\n                hideToolTip\n              >\n                <span>\n                  <CopyIcon color=\"#BDC1C5\" size={14} />\n                </span>\n              </CopyText>\n              <SysSetting currentTab=\"domain\">\n                <span className=\"mr-2 flex cursor-pointer items-center text-lg !text-grayModern-300\">\n                  <EditIconFull />\n                </span>\n              </SysSetting>\n            </div>\n          </>\n        )}\n      </HStack>\n    </Panel>\n  );\n}\n\nexport default HeadPanel;\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/RecycleBinModal/index.tsx",
    "content": "import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { BiAddToQueue } from \"react-icons/bi\";\nimport {\n  Checkbox,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  Stack,\n  useColorMode,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\n\nimport { GoSelectIcon, RecycleDeleteIcon, RestoreIcon } from \"@/components/CommonIcon\";\nimport Pagination from \"@/components/Pagination\";\nimport { formatDate } from \"@/utils/format\";\nimport getPageInfo from \"@/utils/getPageInfo\";\n\nimport {\n  useDeleteRecycleBinItemsMutation,\n  useEmptyRecycleBinMutation,\n  useGetRecycleBinQuery,\n  useRestoreRecycleBinItemsMutation,\n} from \"./service\";\n\nimport { TFunction, TFunctionList } from \"@/apis/typing\";\nimport MonacoEditor from \"@/pages/functionTemplate/Mods/MonacoEditor\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nconst defaultQuery = {\n  page: 1,\n  pageSize: 9,\n};\n\nfunction FunctionItem({\n  item,\n  currentFunction,\n  setCurrentFunction,\n  selectedFunctionList,\n  setSelectedFunctionList,\n  showCheckBox,\n  FunctionQuery,\n}: any) {\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n  const [showDelete, setShowDelete] = useState(false);\n  const { t } = useTranslation();\n  const { showSuccess } = useGlobalStore();\n  const queryClient = useQueryClient();\n  const deleteRecycleBinItemsMutation = useDeleteRecycleBinItemsMutation();\n  const restoreRecycleBinItemsMutation = useRestoreRecycleBinItemsMutation();\n\n  return (\n    <div\n      className={clsx(\"flex cursor-pointer items-center justify-between rounded px-3 py-2\", {\n        \"hover:bg-grayModern-800\": darkMode,\n        \"hover:bg-primary-100\": !darkMode,\n        \"bg-grayModern-800\": darkMode && currentFunction._id === item._id,\n        \"bg-primary-100\": !darkMode && currentFunction._id === item._id,\n      })}\n      onClick={() => {\n        setCurrentFunction(item);\n      }}\n      onMouseEnter={() => setShowDelete(true)}\n      onMouseLeave={() => setShowDelete(false)}\n    >\n      {showCheckBox ? (\n        <Checkbox\n          onChange={() => {\n            if (selectedFunctionList.includes(item._id)) {\n              setSelectedFunctionList(selectedFunctionList.filter((id: string) => id !== item._id));\n            } else {\n              setSelectedFunctionList([...selectedFunctionList, item._id]);\n            }\n          }}\n          className=\"overflow-hidden text-grayIron-600\"\n          colorScheme=\"primary\"\n          isChecked={selectedFunctionList.includes(item._id)}\n        >\n          {item.name}\n        </Checkbox>\n      ) : (\n        <span className=\"mr-2 flex items-center overflow-hidden text-[14px] text-grayIron-600\">\n          <p className=\"truncate\">{item.name}</p>\n        </span>\n      )}\n      {showCheckBox ? (\n        <span className=\"whitespace-nowrap text-grayIron-600\">{formatDate(item.createdAt)}</span>\n      ) : !showDelete ? (\n        <span className=\"whitespace-nowrap text-grayIron-600\">{formatDate(item.createdAt)}</span>\n      ) : (\n        <div className=\"flex\">\n          <div\n            className=\"flex items-center whitespace-nowrap text-grayModern-600 hover:text-grayModern-900\"\n            onClick={async () => {\n              const res = await deleteRecycleBinItemsMutation.mutateAsync({ ids: [item._id] });\n              if (!res.error) {\n                setSelectedFunctionList([]);\n                FunctionQuery();\n                showSuccess(t(\"DeleteSuccess\"));\n              }\n            }}\n          >\n            <RecycleDeleteIcon className=\"mr-1 text-lg\" />\n            {t(\"Delete\")}\n          </div>\n          <div\n            className=\"ml-3 flex items-center whitespace-nowrap text-grayModern-600 hover:text-grayModern-900\"\n            onClick={async () => {\n              const res = await restoreRecycleBinItemsMutation.mutateAsync({ ids: [item._id] });\n              if (!res.error) {\n                setSelectedFunctionList([]);\n                FunctionQuery();\n                showSuccess(t(\"RestoreSuccess\"));\n                queryClient.invalidateQueries([\"useFunctionListQuery\"]);\n              }\n            }}\n          >\n            <RestoreIcon fontSize={16} className=\"mr-1\" />\n            {t(\"Restore\")}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n}\n\nexport default function RecycleBinModal(props: { children: React.ReactElement }) {\n  const { children } = props;\n  const { t } = useTranslation();\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { showSuccess, showError, showInfo } = useGlobalStore();\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n\n  const [functionListData, setFunctionListData] = useState<TFunctionList>();\n  const [currentFunction, setCurrentFunction] = useState<TFunction>();\n  const [selectedFunctionList, setSelectedFunctionList] = useState<string[]>([]);\n  const [showCheckBox, setShowCheckBox] = useState(false);\n  const [queryData, setQueryData] = useState(defaultQuery);\n  const [enable, setEnable] = useState(false);\n\n  const queryClient = useQueryClient();\n  const deleteRecycleBinItemsMutation = useDeleteRecycleBinItemsMutation();\n  const restoreRecycleBinItemsMutation = useRestoreRecycleBinItemsMutation();\n  const emptyRecycleBinMutation = useEmptyRecycleBinMutation();\n\n  const FunctionQuery = () => {\n    setEnable(true);\n    queryClient.invalidateQueries([\"useGetRecycleBin\"]);\n  };\n\n  useGetRecycleBinQuery(\n    {\n      ...queryData,\n    },\n    {\n      enabled: enable,\n      onSuccess: (data) => {\n        setFunctionListData(data.data);\n        setCurrentFunction(data.data.list[0]);\n        setEnable(false);\n        if (data.data.total === 0) {\n          onClose();\n          showInfo(t(\"RecycleBinEmpty\"));\n        }\n      },\n    },\n  );\n\n  useEffect(() => {\n    if (functionListData && functionListData?.list.length > 0) {\n      onOpen();\n    }\n  }, [functionListData, onOpen, enable]);\n\n  return (\n    <>\n      {React.cloneElement(children, {\n        onClick: () => {\n          FunctionQuery();\n        },\n      })}\n      <Modal isOpen={isOpen} onClose={onClose} size={\"5xl\"}>\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"RecycleBin\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody>\n            <div className=\"flex\">\n              <Stack className=\"mr-3 h-[486px] w-[246px]\" spacing={1}>\n                <div\n                  className={clsx(\n                    \"mb-2 flex min-h-[32px] cursor-pointer items-center justify-center rounded text-error-500\",\n                    darkMode ? \"bg-grayModern-700\" : \"bg-[#F4F6F8]\",\n                  )}\n                  onClick={async () => {\n                    const res = await emptyRecycleBinMutation.mutateAsync({});\n                    if (!res.error) {\n                      setSelectedFunctionList([]);\n                      FunctionQuery();\n                      showSuccess(t(\"EmptySuccess\"));\n                      onClose();\n                    }\n                  }}\n                >\n                  {t(\"ClearRecycleBin\")}\n                </div>\n                {!showCheckBox ? (\n                  <div\n                    className={clsx(\n                      \"flex min-h-[32px] cursor-pointer items-center justify-center rounded\",\n                      darkMode\n                        ? \"bg-grayModern-700\"\n                        : \"bg-[#F4F6F8] text-grayModern-600 hover:text-grayModern-800\",\n                    )}\n                    onClick={() => setShowCheckBox(true)}\n                  >\n                    <GoSelectIcon />\n                    <span className=\"ml-1\">{t(\"Select\")}</span>\n                  </div>\n                ) : (\n                  <div\n                    className={clsx(\n                      \"flex min-h-[32px] cursor-pointer items-center justify-between rounded px-3\",\n                      darkMode ? \"bg-grayModern-700\" : \"bg-[#F4F6F8] text-grayModern-600\",\n                    )}\n                    onClick={() => setShowCheckBox(false)}\n                  >\n                    <div\n                      className=\"flex cursor-pointer hover:text-grayModern-900\"\n                      onClick={(e) => {\n                        e.stopPropagation();\n                        if (selectedFunctionList.length === functionListData?.list.length) {\n                          setSelectedFunctionList([]);\n                        } else {\n                          functionListData &&\n                            setSelectedFunctionList(\n                              functionListData?.list.map((item: TFunction) => item._id),\n                            );\n                        }\n                      }}\n                    >\n                      <BiAddToQueue fontSize={16} className=\"mr-1\" />\n                      <span>{t(\"CheckAll\")}</span>\n                    </div>\n                    <div className=\"flex\">\n                      <div\n                        className=\"flex cursor-pointer items-center hover:text-grayModern-900\"\n                        onClick={async (e) => {\n                          e.stopPropagation();\n                          if (selectedFunctionList.length === 0) {\n                            showError(t(\"SelectOne\"));\n                          } else {\n                            const res = await deleteRecycleBinItemsMutation.mutateAsync({\n                              ids: selectedFunctionList,\n                            });\n                            if (!res.error) {\n                              setSelectedFunctionList([]);\n                              FunctionQuery();\n                              showSuccess(t(\"DeleteSuccess\"));\n                            }\n                          }\n                        }}\n                      >\n                        <RecycleDeleteIcon className=\"mr-1 text-lg\" />\n                        {t(\"Delete\")}\n                      </div>\n                      <div\n                        className=\"ml-3 flex cursor-pointer items-center hover:text-grayModern-900\"\n                        onClick={async (e) => {\n                          e.stopPropagation();\n                          if (selectedFunctionList.length === 0) {\n                            showError(t(\"SelectOne\"));\n                          } else {\n                            const res = await restoreRecycleBinItemsMutation.mutateAsync({\n                              ids: selectedFunctionList,\n                            });\n                            if (!res.error) {\n                              setSelectedFunctionList([]);\n                              FunctionQuery();\n                              showSuccess(t(\"RestoreSuccess\"));\n                              queryClient.invalidateQueries([\"useFunctionListQuery\"]);\n                            }\n                          }\n                        }}\n                      >\n                        <RestoreIcon fontSize={16} className=\"mr-1\" />\n                        {t(\"Restore\")}\n                      </div>\n                    </div>\n                  </div>\n                )}\n                {functionListData &&\n                  functionListData?.list.map((item: TFunction, index: number) => (\n                    <FunctionItem\n                      key={index}\n                      item={item}\n                      currentFunction={currentFunction}\n                      setCurrentFunction={setCurrentFunction}\n                      selectedFunctionList={selectedFunctionList}\n                      setSelectedFunctionList={setSelectedFunctionList}\n                      showCheckBox={showCheckBox}\n                      FunctionQuery={FunctionQuery}\n                    />\n                  ))}\n                {functionListData && (\n                  <div className=\"absolute bottom-12 left-8\">\n                    <Pagination\n                      values={getPageInfo(functionListData)}\n                      onChange={(values: any) => {\n                        setEnable(true);\n                        setQueryData({\n                          page: values.page,\n                          pageSize: values.pageSize,\n                        });\n                      }}\n                      notShowSelect\n                    />\n                  </div>\n                )}\n              </Stack>\n              <div className=\"mr-6 h-[486px] flex-1\">\n                {currentFunction && (\n                  <MonacoEditor\n                    value={currentFunction?.source.code}\n                    currentFunction={currentFunction}\n                    readOnly={true}\n                    title={currentFunction?.name}\n                    colorMode={colorMode}\n                  />\n                )}\n              </div>\n            </div>\n          </ModalBody>\n          <ModalFooter />\n        </ModalContent>\n      </Modal>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/RecycleBinModal/service.ts",
    "content": "import { useMutation, useQuery } from \"@tanstack/react-query\";\n\nimport {\n  FunctionRecycleBinControllerDeleteRecycleBinItems,\n  FunctionRecycleBinControllerEmptyRecycleBin,\n  FunctionRecycleBinControllerGetRecycleBin,\n  FunctionRecycleBinControllerRestoreRecycleBinItems,\n} from \"@/apis/v1/recycle-bin\";\n\nexport const useGetRecycleBinQuery = (\n  params: any,\n  config?: { onSuccess?: (data: any) => void; enabled?: boolean },\n) => {\n  return useQuery(\n    [\"useGetRecycleBin\", params],\n    () => {\n      return FunctionRecycleBinControllerGetRecycleBin(params);\n    },\n    {\n      enabled: config?.enabled,\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useDeleteRecycleBinItemsMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return FunctionRecycleBinControllerDeleteRecycleBinItems(values);\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          console.log(\"data\", data);\n        }\n      },\n    },\n  );\n};\n\nexport const useRestoreRecycleBinItemsMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return FunctionRecycleBinControllerRestoreRecycleBinItems(values);\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          // console.log(\"data\", data);\n        }\n      },\n    },\n  );\n};\n\nexport const useEmptyRecycleBinMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return FunctionRecycleBinControllerEmptyRecycleBin(values);\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          // console.log(\"data\", data);\n        }\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/TriggerModal/AddTriggerModal/index.tsx",
    "content": "import React from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport {\n  Button,\n  FormControl,\n  FormErrorMessage,\n  FormLabel,\n  HStack,\n  Input,\n  Link,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  Select,\n  useDisclosure,\n  VStack,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { useCreateTriggerMutation } from \"../service\";\nimport {} from \"../service\";\n\nimport { useFunctionListQuery } from \"@/pages/app/functions/service\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nconst CRON_TEMPLATE = [\n  {\n    label: t(\"TriggerPanel.EveryFiveMinutes\"),\n    value: \"*/5 * * * *\",\n  },\n  {\n    label: t(\"TriggerPanel.EveryHour\"),\n    value: \"0 * * * *\",\n  },\n  {\n    label: t(\"TriggerPanel.Every8AM\"),\n    value: \"0 8 * * *\",\n  },\n];\n\nconst AddTriggerModal = (props: { children: React.ReactElement; targetFunc?: string }) => {\n  type FormData = {\n    desc: string;\n    target: string;\n    cron: string;\n  };\n  const {\n    register,\n    handleSubmit,\n    setFocus,\n    setValue,\n    reset,\n    formState: { errors },\n  } = useForm<FormData>();\n\n  const { targetFunc, children } = props;\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { showSuccess, showError } = useGlobalStore();\n  const functionListQuery = useFunctionListQuery({ onSuccess: (data: any) => {} });\n  const addTriggerMutation = useCreateTriggerMutation(() => {\n    onClose();\n  });\n  const onSubmit = async (data: any) => {\n    const res = await addTriggerMutation.mutateAsync(data);\n    if (!res.error) {\n      showSuccess(t(\"CreateSuccess\"));\n      onClose();\n    } else if (res.error === \"Trigger count limit exceeded\") {\n      showError(t(\"TriggerPanel.createFail\"));\n    }\n  };\n  const initFormData = () => {\n    reset({\n      desc: \"\",\n      target: targetFunc ? targetFunc : functionListQuery?.data?.data[0]?.name,\n      cron: \"\",\n    });\n  };\n\n  return (\n    <>\n      {React.cloneElement(children, {\n        onClick: () => {\n          onOpen();\n          initFormData();\n          setTimeout(() => setFocus(\"desc\"), 0);\n        },\n      })}\n\n      <Modal isOpen={isOpen} onClose={onClose} size=\"md\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"TriggerPanel.AddTrigger\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb={6}>\n            <VStack spacing={6} align=\"flex-start\">\n              <FormControl isInvalid={!!errors?.desc}>\n                <FormLabel htmlFor=\"desc\">{t(\"TriggerPanel.Name\")}</FormLabel>\n                <Input\n                  {...register(\"desc\", {\n                    required: \"desc is required\",\n                  })}\n                  id=\"desc\"\n                  variant=\"filled\"\n                  placeholder={t(\"TriggerPanel.NameTip\").toString()}\n                />\n                <FormErrorMessage>{errors.desc && errors.desc.message}</FormErrorMessage>\n              </FormControl>\n              <FormControl>\n                <FormLabel htmlFor=\"target\">{t(\"TriggerPanel.Function\")}</FormLabel>\n                <Select\n                  {...register(\"target\", {\n                    required: \"target is required\",\n                  })}\n                  id=\"target\"\n                  disabled={!!targetFunc}\n                  variant=\"filled\"\n                  placeholder={t(\"TriggerPanel.FunctionTip\").toString()}\n                >\n                  {(functionListQuery?.data?.data || []).map((item: any) => {\n                    return (\n                      <option key={item.name} value={item.name}>\n                        {item.name}\n                      </option>\n                    );\n                  })}\n                </Select>\n              </FormControl>\n              <FormControl>\n                <FormLabel htmlFor=\"name\">{t(\"TriggerPanel.Type\")}</FormLabel>\n                <Input value={t(\"TriggerPanel.SetTimeout\").toString()} variant=\"filled\" readOnly />\n              </FormControl>\n              <FormControl isInvalid={!!errors?.cron}>\n                <FormLabel htmlFor=\"cron\">Cron {t(\"TriggerPanel.Express\")} </FormLabel>\n                <Input\n                  {...register(\"cron\", {\n                    required: \"cron is required\",\n                  })}\n                  id=\"desc\"\n                  variant=\"filled\"\n                  placeholder={t(\"TriggerPanel.CornTip\").toString()}\n                />\n                <FormErrorMessage>{errors.cron && errors.cron.message}</FormErrorMessage>\n                <HStack className=\"mt-2\" spacing=\"2\">\n                  {CRON_TEMPLATE.map((item) => (\n                    <span\n                      key={item.label}\n                      className=\"ml-2 cursor-pointer text-blue-500\"\n                      onClick={() => {\n                        setValue(\"cron\", item.value);\n                      }}\n                    >\n                      {item.label}\n                    </span>\n                  ))}\n                  <Link\n                    isExternal\n                    target=\"_blank\"\n                    href=\"https://crontab.guru/examples.html\"\n                    rel=\"noreferrer\"\n                    className=\"text-blue-500\"\n                  >\n                    {t(\"TriggerPanel.CronHelp\")}\n                  </Link>\n                </HStack>\n              </FormControl>\n            </VStack>\n          </ModalBody>\n\n          <ModalFooter>\n            <Button\n              isLoading={addTriggerMutation.isLoading}\n              type=\"submit\"\n              onClick={handleSubmit(onSubmit)}\n            >\n              {t(\"Create\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nAddTriggerModal.displayName = \"AddTriggerModal\";\n\nexport default AddTriggerModal;\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/TriggerModal/index.tsx",
    "content": "import { useState } from \"react\";\nimport React from \"react\";\nimport { AddIcon, Search2Icon } from \"@chakra-ui/icons\";\nimport {\n  Button,\n  Center,\n  HStack,\n  Input,\n  InputGroup,\n  InputLeftElement,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalHeader,\n  ModalOverlay,\n  Spinner,\n  Table,\n  TableContainer,\n  Tbody,\n  Td,\n  Th,\n  Thead,\n  Tr,\n  useColorMode,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { RecycleDeleteIcon } from \"@/components/CommonIcon\";\nimport ConfirmButton from \"@/components/ConfirmButton\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport IconWrap from \"@/components/IconWrap\";\nimport { formatDate } from \"@/utils/format\";\n\nimport AddTriggerModal from \"./AddTriggerModal\";\nimport { useDeleteTriggerMutation, useTriggerListQuery } from \"./service\";\n\nexport default function TriggerModal(props: { children: React.ReactElement }) {\n  const [searchKey, setSearchKey] = useState<string>(\"\");\n  const triggerListQuery = useTriggerListQuery(() => {});\n  const deleteTriggerMutation = useDeleteTriggerMutation(() => {\n    triggerListQuery.refetch();\n  });\n\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  return (\n    <>\n      {React.cloneElement(props.children, {\n        onClick: () => {\n          onOpen();\n          triggerListQuery.refetch();\n        },\n      })}\n\n      <Modal isOpen={isOpen} onClose={onClose} size=\"4xl\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"TriggerPanel.Trigger\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb={6}>\n            <div className=\"flex\">\n              <AddTriggerModal>\n                <Button colorScheme=\"primary\" leftIcon={<AddIcon />}>\n                  {t(\"TriggerPanel.AddTrigger\")}\n                </Button>\n              </AddTriggerModal>\n              <InputGroup className=\"ml-4\" width={\"35%\"}>\n                <InputLeftElement\n                  height={\"8\"}\n                  left=\"2\"\n                  pointerEvents=\"none\"\n                  children={<Search2Icon color=\"gray.300\" fontSize={12} />}\n                />\n                <Input\n                  rounded={\"full\"}\n                  placeholder={t(\"TriggerPanel.SearchTip\").toString()}\n                  size={\"sm\"}\n                  onChange={(e) => setSearchKey(e.target.value)}\n                />\n              </InputGroup>\n            </div>\n            <div className=\"relative mt-4 h-[450px] overflow-y-auto rounded-md\">\n              {!triggerListQuery.isFetching ? (\n                <div className=\"mb-4\">\n                  {triggerListQuery.data?.data?.length ? (\n                    <TableContainer>\n                      <Table variant=\"simple\">\n                        <Thead className={darkMode ? \"\" : \"bg-lafWhite-300\"}>\n                          <Tr>\n                            <Th borderTopLeftRadius={\"10px\"} borderBottomLeftRadius={\"10px\"}>\n                              {t(\"TriggerPanel.Name\")}\n                            </Th>\n                            <Th>{t(\"TriggerPanel.Function\")}</Th>\n                            <Th>{t(\"TriggerPanel.Type\")}</Th>\n                            <Th>{t(\"TriggerPanel.Cron\")}</Th>\n                            <Th>{t(\"TriggerPanel.Time\")}</Th>\n                            <Th borderTopRightRadius={\"10px\"} borderBottomRightRadius={\"10px\"}>\n                              {t(\"Operation\")}\n                            </Th>\n                          </Tr>\n                        </Thead>\n                        <Tbody>\n                          {triggerListQuery.data?.data\n                            .filter((item: any) => {\n                              return item.desc.indexOf(searchKey) > -1;\n                            })\n                            .map((item: any) => (\n                              <Tr key={item._id} className={darkMode ? \"\" : \"bg-lafWhite-300\"}>\n                                <Td borderTopLeftRadius={\"10px\"} borderBottomLeftRadius={\"10px\"}>\n                                  <span>{item.desc}</span>\n                                </Td>\n                                <Td>\n                                  <span>{item.target}</span>\n                                </Td>\n                                <Td>\n                                  <span>{t(\"TriggerPanel.SetTimeout\")}</span>\n                                </Td>\n                                <Td>\n                                  <span>{item.cron}</span>\n                                </Td>\n                                <Td className=\"text-slate-500\" maxWidth=\"5rem\">\n                                  {formatDate(item.updatedAt)}\n                                </Td>\n                                <Td borderTopRightRadius={\"10px\"} borderBottomRightRadius={\"10px\"}>\n                                  <HStack spacing={1}>\n                                    <ConfirmButton\n                                      onSuccessAction={() =>\n                                        deleteTriggerMutation.mutate({ id: item._id })\n                                      }\n                                      headerText={String(t(\"Delete\"))}\n                                      bodyText={t(\"TriggerPanel.DeleteConfirm\")}\n                                    >\n                                      <IconWrap tooltip={String(t(\"Delete\"))}>\n                                        <RecycleDeleteIcon fontSize={15} />\n                                      </IconWrap>\n                                    </ConfirmButton>\n                                  </HStack>\n                                </Td>\n                              </Tr>\n                            ))}\n                        </Tbody>\n                      </Table>\n                    </TableContainer>\n                  ) : (\n                    <EmptyBox className=\"min-h-[400px]\">\n                      <div>\n                        <span>{t(\"TriggerPanel.EmptyTriggerTip\")}</span>\n                        <AddTriggerModal>\n                          <span className=\"ml-2 cursor-pointer text-primary-600 hover:border-b-2 hover:border-primary-600\">\n                            {t(\"CreateNow\")}\n                          </span>\n                        </AddTriggerModal>\n                      </div>\n                    </EmptyBox>\n                  )}\n                </div>\n              ) : (\n                <Center className=\"h-full\">\n                  <Spinner />\n                </Center>\n              )}\n            </div>\n          </ModalBody>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/TriggerModal/service.ts",
    "content": "import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\n\nimport {\n  TriggerControllerCreate,\n  TriggerControllerFindAll,\n  TriggerControllerRemove,\n} from \"@/apis/v1/apps\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nconst queryKeys = {\n  useTriggerQuery: [\"useTriggerQuery\"],\n};\n\nexport const useTriggerListQuery = (onSuccess: (data: any) => void) => {\n  return useQuery(\n    queryKeys.useTriggerQuery,\n    () => {\n      return TriggerControllerFindAll({});\n    },\n    {\n      onSuccess: onSuccess,\n    },\n  );\n};\n\nexport const useCreateTriggerMutation = (onSuccess: (data: any) => void) => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (values: any) => {\n      return TriggerControllerCreate(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          await queryClient.invalidateQueries(queryKeys.useTriggerQuery);\n        }\n      },\n    },\n  );\n};\n\nexport const useDeleteTriggerMutation = (onSuccess: (data: any) => void) => {\n  const globalStore = useGlobalStore();\n  const queryClient = useQueryClient();\n  return useMutation(\n    (values: any) => {\n      return TriggerControllerRemove(values);\n    },\n    {\n      onSuccess(data) {\n        if (data.error) {\n          globalStore.showError(data.error);\n        } else {\n          queryClient.invalidateQueries(queryKeys.useTriggerQuery);\n          globalStore.showSuccess(\"delete success\");\n          onSuccess && onSuccess(data);\n        }\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/VersionHistoryPanel/FetchModal/index.tsx",
    "content": "import React from \"react\";\nimport {\n  Button,\n  Grid,\n  GridItem,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport CommonDiffEditor from \"@/components/Editor/CommonDiffEditor\";\n\nimport useFunctionStore from \"../../../store\";\n\nimport useFunctionCache from \"@/hooks/useFunctionCache\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function FetchModal(props: { children: React.ReactElement; functionCode: string }) {\n  const { children, functionCode } = props;\n  const functionCache = useFunctionCache();\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const store = useFunctionStore((state) => state);\n  const { currentFunction, updateFunctionCode, setIsFetchButtonClicked } = store;\n  const { showSuccess } = useGlobalStore((state) => state);\n\n  return (\n    <>\n      {children &&\n        React.cloneElement(children, {\n          onClick: () => {\n            onOpen();\n          },\n        })}\n\n      {isOpen ? (\n        <Modal isOpen={isOpen} onClose={onClose} size=\"6xl\" isCentered>\n          <ModalOverlay />\n          <ModalContent maxW={\"80%\"}>\n            <ModalHeader>Code Diff</ModalHeader>\n            <ModalCloseButton />\n            <ModalBody borderBottom={\"1px\"} borderBottomColor=\"gray.200\">\n              <Grid templateColumns=\"repeat(2, 1fr)\" gap={6} mb={2} mt={-4}>\n                <GridItem>{t(\"FunctionPanel.HistoryVersion\")}</GridItem>\n                <GridItem>{t(\"FunctionPanel.CurrentVersion\")}</GridItem>\n              </Grid>\n              <CommonDiffEditor\n                modified={functionCache.getCache(\n                  currentFunction?._id,\n                  currentFunction?.source?.code,\n                )}\n                original={functionCode}\n              />\n            </ModalBody>\n\n            <ModalFooter>\n              <Button variant=\"ghost\" mr={3} onClick={onClose}>\n                {t(\"Cancel\")}\n              </Button>\n              <Button\n                variant=\"primary\"\n                onClick={() => {\n                  updateFunctionCode(currentFunction, functionCode || \"\");\n                  functionCache.setCache(currentFunction!._id, functionCode || \"\");\n                  setIsFetchButtonClicked();\n                  onClose();\n                  showSuccess(t(\"FunctionPanel.FetchSuccess\"));\n                }}\n              >\n                {t(\"FunctionPanel.Restore\")}\n              </Button>\n            </ModalFooter>\n          </ModalContent>\n        </Modal>\n      ) : null}\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/mods/VersionHistoryPanel/index.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\nimport { Center, Divider, Spinner, Tooltip, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport EmptyBox from \"@/components/EmptyBox\";\nimport { formatDate } from \"@/utils/format\";\n\nimport { useFunctionHistoryQuery } from \"../../service\";\nimport useFunctionStore from \"../../store\";\n\nimport FetchModal from \"./FetchModal\";\n\nexport default function VersionHistoryPanel() {\n  const { currentFunction } = useFunctionStore((state) => state);\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n  const { t } = useTranslation();\n\n  const history = useFunctionHistoryQuery(encodeURIComponent(currentFunction.name), {\n    enabled: currentFunction.name !== undefined,\n  });\n\n  return (\n    <div className=\"h-full w-full pt-2\">\n      {history.isFetching ? (\n        <Center className=\"h-full\">\n          <Spinner />\n        </Center>\n      ) : history.data?.data.length !== 0 ? (\n        history.data?.data.map((item: any, index: number) => {\n          return (\n            <FetchModal key={index} functionCode={item.source.code}>\n              <div>\n                <Tooltip label={item.changelog || \"changed\"} placement=\"left\">\n                  <div className=\"mx-3\">\n                    <div\n                      className={clsx(\n                        \"flex h-10 cursor-pointer items-center justify-between rounded\",\n                        darkMode ? \"hover:bg-grayModern-800\" : \"hover:bg-primary-100\",\n                      )}\n                    >\n                      <div className=\"relative flex h-full items-center truncate\">\n                        <span\n                          className={clsx(\n                            \"absolute ml-2 h-2.5 w-2.5 rounded-full border-[2px] border-primary-600\",\n                            darkMode ? \"bg-grayModern-900\" : \"bg-white\",\n                          )}\n                        />\n                        <div\n                          className={clsx(\n                            \"ml-3 flex  h-full\",\n                            index === 0 && \"items-end\",\n                            index === history.data?.data.length - 1 && \"items-start\",\n                          )}\n                        >\n                          <div\n                            className={clsx(\n                              \"border\",\n                              history.data?.data.length === 1 && \"border-transparent\",\n                              (index === 0 || index === history.data?.data.length - 1) && \"h-1/2\",\n                              !(index === 0 || index === history.data?.data.length - 1) && \"h-full\",\n                            )}\n                          />\n                        </div>\n                        <div className=\"truncate pl-4\">\n                          <p className=\"truncat text-[12px] font-medium\">\n                            {item.changelog || \"changed\"}\n                          </p>\n                          <p className=\"text-[10px] text-gray-500\">{formatDate(item.createdAt)}</p>\n                        </div>\n                      </div>\n                      <span className={clsx(\"px-2\", darkMode ? \"text-blue-500\" : \"text-blue-700\")}>\n                        #{history.data?.data.length - index}\n                      </span>\n                    </div>\n                    {index !== history.data?.data.length - 1 && <Divider />}\n                  </div>\n                </Tooltip>\n              </div>\n            </FetchModal>\n          );\n        })\n      ) : (\n        <EmptyBox hideIcon>\n          <span>{t(\"FunctionPanel.HistoryTips\")}</span>\n        </EmptyBox>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/functions/service.ts",
    "content": "import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\n\nimport useFunctionStore from \"./store\";\n\nimport { TFunction } from \"@/apis/typing\";\nimport {\n  FunctionControllerCompile,\n  FunctionControllerCreate,\n  FunctionControllerFindAll,\n  FunctionControllerFindOne,\n  FunctionControllerGetHistory,\n  FunctionControllerRemove,\n  FunctionControllerUpdate,\n  FunctionControllerUpdateDebug,\n} from \"@/apis/v1/apps\";\nimport useFunctionCache from \"@/hooks/useFunctionCache\";\n\nconst queryKeys = {\n  useFunctionListQuery: [\"useFunctionListQuery\"],\n  useFunctionDetailQuery: (name: string) => [\"useFunctionDetailQuery\", name],\n};\n\nexport const useFunctionListQuery = (\n  config?: { onSuccess?: (data: any) => void; enabled?: boolean },\n  params?: any,\n) => {\n  return useQuery(\n    queryKeys.useFunctionListQuery,\n    () => {\n      return FunctionControllerFindAll(params);\n    },\n    {\n      enabled: config?.enabled,\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useFunctionDetailQuery = (name: string, config: any) => {\n  return useQuery(\n    queryKeys.useFunctionDetailQuery(name),\n    () => {\n      return FunctionControllerFindOne({\n        name,\n      });\n    },\n    config,\n  );\n};\n\nexport const useFunctionHistoryQuery = (name: string, config: any) => {\n  return useQuery(\n    [\"useFunctionHistoryQuery\", name],\n    () => {\n      return FunctionControllerGetHistory({\n        name,\n      });\n    },\n    config,\n  );\n};\n\nexport const useCreateFunctionMutation = () => {\n  const store = useFunctionStore();\n  const queryClient = useQueryClient();\n  return useMutation(\n    (values: any) => {\n      return FunctionControllerCreate(values);\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          queryClient.invalidateQueries(queryKeys.useFunctionListQuery);\n          store.setCurrentFunction(data.data);\n          store.setRecentFunctionList([data.data as TFunction, ...store.recentFunctionList]);\n        }\n      },\n    },\n  );\n};\n\nexport const useUpdateFunctionMutation = () => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (values: any) => {\n      const updatedValues = {\n        ...values,\n        name: encodeURIComponent(values.name),\n      };\n      return FunctionControllerUpdate(updatedValues);\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          queryClient.invalidateQueries(queryKeys.useFunctionListQuery);\n        }\n      },\n    },\n  );\n};\n\nexport const useUpdateDebugFunctionMutation = () => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (values: any) => {\n      const updatedValues = {\n        ...values,\n        name: encodeURIComponent(values.name),\n      };\n      return FunctionControllerUpdateDebug(updatedValues);\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          queryClient.invalidateQueries(queryKeys.useFunctionListQuery);\n        }\n      },\n    },\n  );\n};\n\nexport const useDeleteFunctionMutation = () => {\n  const store = useFunctionStore();\n  const functionCache = useFunctionCache();\n  const queryClient = useQueryClient();\n  return useMutation(\n    (values: any) => {\n      const updatedValues = {\n        ...values,\n        name: encodeURIComponent(values.name),\n      };\n      return FunctionControllerRemove(updatedValues);\n    },\n    {\n      onSuccess(data: any) {\n        if (!data.error) {\n          queryClient.invalidateQueries(queryKeys.useFunctionListQuery);\n          if (store.currentFunction?._id === data.data._id) {\n            const newFunction = store.recentFunctionList[0] || store.allFunctionList[0] || {};\n            store.setCurrentFunction(newFunction);\n          }\n          store.setRecentFunctionList(\n            store.recentFunctionList.filter((item) => item._id !== data.data._id),\n          );\n          functionCache.removeCache(data?.data?._id);\n        }\n      },\n    },\n  );\n};\n\nexport const useCompileMutation = () => {\n  const queryClient = useQueryClient();\n  return useMutation({\n    mutationKey: [\"compileMutation\"],\n    mutationFn: (values: { code: string; name: string }) => {\n      const updatedValues = {\n        ...values,\n        name: encodeURIComponent(values.name),\n      };\n      return FunctionControllerCompile(updatedValues);\n    },\n    onSuccess(data) {\n      if (!data.error) {\n        queryClient.setQueryData([\"compileMutation\"], data);\n      }\n    },\n  });\n};\n"
  },
  {
    "path": "web/src/pages/app/functions/store.ts",
    "content": "import { create } from \"zustand\";\nimport { devtools } from \"zustand/middleware\";\nimport { immer } from \"zustand/middleware/immer\";\n\nimport { TFunction } from \"@/apis/typing\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype State = {\n  allFunctionList: TFunction[];\n  recentFunctionList: TFunction[];\n  currentFunction: TFunction | { [key: string]: any };\n  currentRequestId: string | undefined;\n  currentFuncLogs: string;\n  currentFuncTimeUsage: string;\n  functionCodes: { [key: string]: string };\n  isFetchButtonClicked: Boolean;\n  LSPStatus: string;\n  getFunctionUrl: () => string;\n  setCurrentRequestId: (requestId: string | undefined) => void;\n  setCurrentFuncLogs: (logs: string) => void;\n  setCurrentFuncTimeUsage: (timeUsage: string) => void;\n  setAllFunctionList: (functionList: TFunction[]) => void;\n  setRecentFunctionList: (functionList: TFunction[]) => void;\n  setCurrentFunction: (currentFunction: TFunction | { [key: string]: any }) => void;\n  updateFunctionCode: (current: TFunction | { [key: string]: any }, codes: string) => void;\n  setIsFetchButtonClicked: () => void;\n  setLSPStatus: (status: string) => void;\n};\n\nconst useFunctionStore = create<State>()(\n  devtools(\n    immer((set, get) => ({\n      allFunctionList: [],\n      recentFunctionList: [],\n      currentFunction: {},\n      functionCodes: {},\n      currentRequestId: undefined,\n      isFetchButtonClicked: false,\n      currentFuncLogs: \"\",\n      currentFuncTimeUsage: \"\",\n      LSPStatus: \"closed\",\n\n      getFunctionUrl: () => {\n        const currentApp = useGlobalStore.getState().currentApp;\n        const currentFunctionName = get().currentFunction?.name;\n\n        if (!currentFunctionName) return \"\";\n\n        const origin = currentApp?.origin;\n\n        return `${origin}/${currentFunctionName}`;\n      },\n\n      setCurrentRequestId: (requestId) => {\n        set((state) => {\n          state.currentRequestId = requestId;\n        });\n      },\n\n      setAllFunctionList: (allFunctionList) => {\n        set((state) => {\n          state.allFunctionList = allFunctionList;\n        });\n      },\n\n      setRecentFunctionList: (recentFunctionList) => {\n        set((state) => {\n          state.recentFunctionList = recentFunctionList;\n        });\n      },\n\n      setCurrentFunction: (currentFunction) => {\n        set((state) => {\n          state.currentFunction = currentFunction;\n        });\n      },\n\n      updateFunctionCode: async (currentFunction, codes) => {\n        set((state) => {\n          state.functionCodes[currentFunction!._id] = codes;\n        });\n      },\n\n      setIsFetchButtonClicked: async () => {\n        set((state) => {\n          state.isFetchButtonClicked = !state.isFetchButtonClicked;\n        });\n      },\n\n      setCurrentFuncLogs: (logs) => {\n        set((state) => {\n          state.currentFuncLogs = logs;\n        });\n      },\n\n      setCurrentFuncTimeUsage: (timeUsage) => {\n        set((state) => {\n          state.currentFuncTimeUsage = timeUsage;\n        });\n      },\n\n      setLSPStatus: async (status) => {\n        set((state) => {\n          state.LSPStatus = status;\n        });\n      },\n    })),\n  ),\n);\n\nexport default useFunctionStore;\n"
  },
  {
    "path": "web/src/pages/app/index.tsx",
    "content": "import { Pages, SideBarWidth } from \"@/constants/index\";\n\nimport useGlobalStore from \"../globalStore\";\n\nimport SideBar from \"./mods/SideBar\";\nimport DatabasePage from \"./database\";\nimport FunctionPage from \"./functions\";\nimport StoragePage from \"./storages\";\n\nfunction AppDetail() {\n  const { visitedViews, currentPageId } = useGlobalStore();\n  return (\n    <>\n      <SideBar />\n      <div className=\"m-1\" style={{ marginLeft: SideBarWidth, height: \"calc(100vh - 0.5rem)\" }}>\n        {[\n          {\n            pageId: Pages.function,\n            component: FunctionPage,\n          },\n          {\n            pageId: Pages.database,\n            component: DatabasePage,\n          },\n          {\n            pageId: Pages.storage,\n            component: StoragePage,\n          },\n        ].map((item) =>\n          visitedViews.includes(item.pageId) ? (\n            <div\n              key={item.pageId}\n              className={\n                currentPageId === item.pageId && visitedViews.includes(currentPageId)\n                  ? \"flex h-full\"\n                  : \"hidden\"\n              }\n            >\n              <item.component />\n            </div>\n          ) : null,\n        )}\n      </div>\n    </>\n  );\n}\n\nexport default AppDetail;\n"
  },
  {
    "path": "web/src/pages/app/mods/SideBar/Icons.tsx",
    "content": "import React from \"react\";\nimport { Icon } from \"@chakra-ui/react\";\n\nfunction Icons(props: { type: \"function\" | \"database\" | \"storage\" | \"setting\" | \"info\" }) {\n  const { type } = props;\n  switch (type) {\n    case \"function\":\n      return (\n        <Icon width=\"28px\" height=\"28px\" viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path d=\"M14.7817 5.86136C13.4983 5.74469 12.3667 6.68969 12.25 7.98469L11.9583 11.3564H15.2483V13.6897H11.7483L11.235 19.6047C11.1477 20.5791 10.7564 21.5014 10.1165 22.2414C9.47652 22.9814 8.62025 23.5016 7.66863 23.7286C6.717 23.9555 5.71812 23.8777 4.8131 23.5062C3.90808 23.1347 3.14267 22.4882 2.625 21.658L4.375 19.908C4.76 21.133 6.07833 21.8214 7.29167 21.4247C8.20167 21.1447 8.84333 20.3397 8.925 19.3947L9.415 13.6897H5.915V11.3564H9.625L9.94 7.77469C10.0469 6.54078 10.6387 5.39959 11.5856 4.60134C12.5326 3.80308 13.7575 3.41291 14.9917 3.51636C16.4617 3.64469 17.7917 4.46136 18.5617 5.72136L16.8117 7.47136C16.52 6.57303 15.7267 5.94303 14.7817 5.86136ZM25.9583 15.6147L24.3133 13.9697L21.0117 17.2714L17.71 13.9697L16.0417 15.6147L19.3667 18.9397L16.0417 22.218L17.71 23.863L21.0117 20.5614L24.3133 23.863L25.9583 22.218L22.6567 18.9397L25.9583 15.6147Z\" />\n        </Icon>\n      );\n\n    case \"database\":\n      return (\n        <Icon width=\"28px\" height=\"28px\" viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path d=\"M13.8715 2.625C8.14117 2.625 3.49985 4.94566 3.49985 7.81083V20.7754C3.49985 23.6406 8.15413 25.9613 13.8715 25.9613C19.5889 25.9613 24.2432 23.6406 24.2432 20.7754V7.81083C24.2432 4.94566 19.6019 2.625 13.8715 2.625ZM21.6503 20.7754C21.6503 21.4236 18.8888 23.3683 13.8715 23.3683C8.85422 23.3683 6.09276 21.4236 6.09276 20.7754V17.8843C8.18006 18.8956 10.9156 19.479 13.8715 19.479C16.8274 19.479 19.563 18.8956 21.6503 17.8843V20.7754ZM21.6503 14.8765C19.9649 16.1082 17.0089 16.886 13.8715 16.886C10.7341 16.886 7.77816 16.1082 6.09276 14.8765V11.2335C7.99856 12.3095 10.773 12.9967 13.8715 12.9967C16.97 12.9967 19.7445 12.3095 21.6503 11.2335V14.8765M13.8715 10.4038C8.85422 10.4038 6.09276 8.45906 6.09276 7.81083C6.09276 7.1626 8.85422 5.21792 13.8715 5.21792C18.8888 5.21792 21.6503 7.1626 21.6503 7.81083C21.6503 8.45906 18.8888 10.4038 13.8715 10.4038Z\" />\n        </Icon>\n      );\n\n    case \"storage\":\n      return (\n        <Icon width=\"28px\" height=\"28px\" viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path d=\"M21 4.66659V23.3333H6.99999V10.3016L12.635 4.66659H21ZM21 2.33325H11.6667L4.66666 9.33325V23.3333C4.66666 24.6166 5.71666 25.6666 6.99999 25.6666H21C22.2833 25.6666 23.3333 24.6166 23.3333 23.3333V4.66659C23.3333 3.38325 22.2833 2.33325 21 2.33325ZM10.5 8.16659H12.8333V12.8333H10.5V8.16659ZM14 8.16659H16.3333V12.8333H14V8.16659ZM17.5 8.16659H19.8333V12.8333H17.5V8.16659Z\" />\n        </Icon>\n      );\n\n    case \"setting\":\n      return (\n        <Icon\n          width=\"32px\"\n          height=\"32px\"\n          viewBox=\"0 0 32 32\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g clipPath=\"url(#clip0_3135_2858)\">\n            <path d=\"M25.9067 17.3067C25.96 16.8801 26 16.4534 26 16.0001C26 15.5467 25.96 15.1201 25.9067 14.6934L28.72 12.4934C28.9734 12.2934 29.04 11.9334 28.88 11.6401L26.2134 7.02675C26.0934 6.81341 25.8667 6.69341 25.6267 6.69341C25.5467 6.69341 25.4667 6.70675 25.4 6.73341L22.08 8.06675C21.3867 7.53341 20.64 7.09341 19.8267 6.76008L19.32 3.22675C19.28 2.90675 19 2.66675 18.6667 2.66675H13.3334C13 2.66675 12.72 2.90675 12.68 3.22675L12.1734 6.76008C11.36 7.09341 10.6134 7.54675 9.92003 8.06675L6.60003 6.73341C6.52003 6.70675 6.44003 6.69341 6.36003 6.69341C6.13336 6.69341 5.9067 6.81341 5.7867 7.02675L3.12003 11.6401C2.9467 11.9334 3.0267 12.2934 3.28003 12.4934L6.09336 14.6934C6.04003 15.1201 6.00003 15.5601 6.00003 16.0001C6.00003 16.4401 6.04003 16.8801 6.09336 17.3067L3.28003 19.5067C3.0267 19.7067 2.96003 20.0667 3.12003 20.3601L5.7867 24.9734C5.9067 25.1867 6.13336 25.3067 6.37336 25.3067C6.45336 25.3067 6.53336 25.2934 6.60003 25.2667L9.92003 23.9334C10.6134 24.4667 11.36 24.9067 12.1734 25.2401L12.68 28.7734C12.72 29.0934 13 29.3334 13.3334 29.3334H18.6667C19 29.3334 19.28 29.0934 19.32 28.7734L19.8267 25.2401C20.64 24.9067 21.3867 24.4534 22.08 23.9334L25.4 25.2667C25.48 25.2934 25.56 25.3067 25.64 25.3067C25.8667 25.3067 26.0934 25.1867 26.2134 24.9734L28.88 20.3601C29.04 20.0667 28.9734 19.7067 28.72 19.5067L25.9067 17.3067ZM23.2667 15.0267C23.32 15.4401 23.3334 15.7201 23.3334 16.0001C23.3334 16.2801 23.3067 16.5734 23.2667 16.9734L23.08 18.4801L24.2667 19.4134L25.7067 20.5334L24.7734 22.1467L23.08 21.4667L21.6934 20.9067L20.4934 21.8134C19.92 22.2401 19.3734 22.5601 18.8267 22.7867L17.4134 23.3601L17.2 24.8667L16.9334 26.6667H15.0667L14.8134 24.8667L14.6 23.3601L13.1867 22.7867C12.6134 22.5467 12.08 22.2401 11.5467 21.8401L10.3334 20.9067L8.92003 21.4801L7.2267 22.1601L6.29336 20.5467L7.73336 19.4267L8.92003 18.4934L8.73336 16.9867C8.69336 16.5734 8.6667 16.2667 8.6667 16.0001C8.6667 15.7334 8.69336 15.4267 8.73336 15.0267L8.92003 13.5201L7.73336 12.5867L6.29336 11.4667L7.2267 9.85341L8.92003 10.5334L10.3067 11.0934L11.5067 10.1867C12.08 9.76008 12.6267 9.44008 13.1734 9.21341L14.5867 8.64008L14.8 7.13341L15.0667 5.33341H16.92L17.1734 7.13341L17.3867 8.64008L18.8 9.21341C19.3734 9.45341 19.9067 9.76008 20.44 10.1601L21.6534 11.0934L23.0667 10.5201L24.76 9.84008L25.6934 11.4534L24.2667 12.5867L23.08 13.5201L23.2667 15.0267ZM16 10.6667C13.0534 10.6667 10.6667 13.0534 10.6667 16.0001C10.6667 18.9467 13.0534 21.3334 16 21.3334C18.9467 21.3334 21.3334 18.9467 21.3334 16.0001C21.3334 13.0534 18.9467 10.6667 16 10.6667ZM16 18.6667C14.5334 18.6667 13.3334 17.4667 13.3334 16.0001C13.3334 14.5334 14.5334 13.3334 16 13.3334C17.4667 13.3334 18.6667 14.5334 18.6667 16.0001C18.6667 17.4667 17.4667 18.6667 16 18.6667Z\" />\n          </g>\n          <defs>\n            <clipPath id=\"clip0_3135_2858\">\n              <rect width=\"32\" height=\"32\" fill=\"white\" />\n            </clipPath>\n          </defs>\n        </Icon>\n      );\n\n    case \"info\":\n      return (\n        <Icon\n          width=\"14px\"\n          height=\"14px\"\n          viewBox=\"0 0 16 16\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M7.00017 0.333374C5.68162 0.333374 4.39269 0.724367 3.29636 1.45691C2.20004 2.18945 1.34555 3.23064 0.840969 4.44882C0.336385 5.66699 0.204362 7.00744 0.461597 8.30064C0.718832 9.59385 1.35377 10.7817 2.28612 11.7141C3.21847 12.6464 4.40636 13.2814 5.69956 13.5386C6.99277 13.7958 8.33322 13.6638 9.55139 13.1592C10.7696 12.6547 11.8108 11.8002 12.5433 10.7038C13.2758 9.60751 13.6668 8.31858 13.6668 7.00004C13.6649 5.23253 12.9619 3.53796 11.7121 2.28814C10.4622 1.03832 8.76768 0.335315 7.00017 0.333374ZM7.00017 12.3334C5.94533 12.3334 4.91419 12.0206 4.03712 11.4345C3.16006 10.8485 2.47648 10.0156 2.07281 9.04102C1.66914 8.06648 1.56352 6.99412 1.76931 5.95956C1.9751 4.92499 2.48305 3.97468 3.22893 3.2288C3.97481 2.48292 4.92512 1.97497 5.95968 1.76919C6.99425 1.5634 8.06661 1.66902 9.04114 2.07268C10.0157 2.47635 10.8486 3.15994 11.4347 4.037C12.0207 4.91406 12.3335 5.94521 12.3335 7.00004C12.3317 8.41399 11.7693 9.76952 10.7695 10.7693C9.76964 11.7691 8.41411 12.3316 7.00017 12.3334ZM7.00017 6.66671C6.82336 6.66671 6.65379 6.73695 6.52876 6.86197C6.40374 6.98699 6.3335 7.15656 6.3335 7.33337V9.33337C6.3335 9.51018 6.40374 9.67975 6.52876 9.80478C6.65379 9.9298 6.82336 10 7.00017 10C7.17698 10 7.34655 9.9298 7.47157 9.80478C7.59659 9.67975 7.66683 9.51018 7.66683 9.33337V7.33337C7.66683 7.15656 7.59659 6.98699 7.47157 6.86197C7.34655 6.73695 7.17698 6.66671 7.00017 6.66671ZM7.00017 4.00004C6.83535 4.00004 6.67423 4.04891 6.53719 4.14048C6.40015 4.23205 6.29334 4.3622 6.23027 4.51447C6.16719 4.66674 6.15069 4.8343 6.18285 4.99595C6.215 5.1576 6.29437 5.30609 6.41091 5.42263C6.52745 5.53917 6.67594 5.61854 6.83759 5.65069C6.99924 5.68285 7.1668 5.66635 7.31907 5.60327C7.47134 5.5402 7.60149 5.43339 7.69306 5.29635C7.78463 5.15931 7.8335 4.99819 7.8335 4.83337C7.8335 4.61236 7.7457 4.4004 7.58942 4.24412C7.43314 4.08784 7.22118 4.00004 7.00017 4.00004Z\"\n            fill=\"#00A9A6\"\n          />\n        </Icon>\n      );\n\n    default:\n      break;\n  }\n  return <div>Icons</div>;\n}\n\nexport default Icons;\n"
  },
  {
    "path": "web/src/pages/app/mods/SideBar/index.module.scss",
    "content": ".icon {\n  color: #888d97;\n  cursor: pointer;\n  border-radius: 4px;\n  height: 52px;\n  width: 42px;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  font-weight: 500;\n\n  svg {\n    fill: #9ca2a8;\n  }\n}\n\n.icon:hover,\n.icon.current {\n  background-color: var(--chakra-colors-primary-200);\n  color: var(--chakra-colors-primary-700);\n\n  svg {\n    fill: var(--chakra-colors-primary-600);\n  }\n}\n\n[data-theme=\"dark\"] .icon:hover,\n[data-theme=\"dark\"] .icon.current {\n  background: none;\n\n  svg {\n    fill: var(--chakra-colors-primary-600);\n  }\n}\n"
  },
  {
    "path": "web/src/pages/app/mods/SideBar/index.tsx",
    "content": "/****************************\n * cloud functions SideBar menu\n ***************************/\n\nimport { NavLink, useParams } from \"react-router-dom\";\nimport { Center } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { Pages, Routes, SideBarWidth } from \"@/constants/index\";\nimport { getAvatarUrl } from \"@/utils/getAvatarUrl\";\n\nimport SysSetting from \"../../setting/SysSetting\";\n\nimport Icons from \"./Icons\";\n\nimport styles from \"./index.module.scss\";\n\nimport UserSetting from \"@/pages/app/setting/UserSetting\";\nimport useGlobalStore from \"@/pages/globalStore\";\ntype TIcon = {\n  pageId: string;\n  component?: React.ReactNode;\n  icon?: React.ReactNode;\n  name?: string;\n};\nexport default function SideBar() {\n  const { pageId } = useParams();\n  const { currentApp, setCurrentPage, userInfo, avatarUpdatedAt, regions = [] } = useGlobalStore();\n  const currentRegion =\n    regions.find((item: any) => item._id === currentApp?.regionId) || regions[0];\n\n  const ICONS: TIcon[] = [\n    {\n      pageId: \"nav\",\n      icon: (\n        <div className=\"relative flex flex-col items-center\">\n          <img className=\"mt-2\" src=\"/logo.png\" alt=\"logo\" width={34} />\n          <span className=\"scale-[.65] text-second\">{currentRegion.displayName}</span>\n        </div>\n      ),\n    },\n    {\n      pageId: Pages.function,\n      name: String(t(\"FunctionPanel.Function\")),\n      icon: <Icons type=\"function\" />,\n    },\n    {\n      pageId: Pages.database,\n      name: String(t(\"CollectionPanel.Collection\")),\n      icon: <Icons type=\"database\" />,\n    },\n    {\n      pageId: Pages.storage,\n      name: String(t(\"StoragePanel.Storage\")),\n      icon: <Icons type=\"storage\" />,\n    },\n  ];\n\n  const BOTTOM_ICONS: TIcon[] = [\n    {\n      pageId: Pages.userSetting,\n      component: (\n        <UserSetting\n          name={userInfo?.username || \"\"}\n          avatar={getAvatarUrl(userInfo?._id, avatarUpdatedAt)}\n          width={\"28px\"}\n        />\n      ),\n    },\n    {\n      pageId: Pages.setting,\n      component: (\n        <SysSetting>\n          <div>\n            <Icons type=\"setting\" />\n          </div>\n        </SysSetting>\n      ),\n    },\n  ];\n  return (\n    <div\n      style={{ width: SideBarWidth }}\n      className=\"absolute bottom-0 top-0 flex flex-col justify-between\"\n    >\n      {[ICONS, BOTTOM_ICONS].map((icons, index) => {\n        return (\n          <div key={index}>\n            {icons.map((item) => {\n              if (item.pageId === \"nav\") {\n                return (\n                  <a key={item.pageId} href={Routes.dashboard}>\n                    {item.icon}\n                  </a>\n                );\n              }\n              if (item.icon) {\n                return (\n                  <NavLink\n                    to={`/app/${currentApp?.appid}/${item.pageId}`}\n                    key={item.pageId}\n                    className={clsx(styles.icon, \" mx-1 items-center \", {\n                      [styles.current]: pageId === item.pageId,\n                      \"my-4\": item.name !== undefined,\n                    })}\n                    onClick={() => {\n                      if (item.name !== undefined) {\n                        setCurrentPage(item.pageId);\n                      }\n                    }}\n                  >\n                    {item.icon}\n                    <p className=\"scale-[.75]\">{item.name ? item.name : null}</p>\n                  </NavLink>\n                );\n              }\n              return (\n                <Center\n                  key={item.pageId}\n                  className={clsx(styles.icon, \" mx-1 items-center \", {\n                    [styles.current]: pageId === item.pageId,\n                    \"my-4\": item.name !== undefined,\n                  })}\n                >\n                  {item.component}\n                  <p className=\"scale-[.75]\">{item.name ? item.name : null}</p>\n                </Center>\n              );\n            })}\n          </div>\n        );\n      })}\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/mods/StatusBar/LSPBar/index.tsx",
    "content": "import { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Spinner, Tooltip } from \"@chakra-ui/react\";\n\nimport { createUrl, createWebSocketAndStartClient } from \"@/components/Editor/LanguageClient\";\n\nimport useFunctionStore from \"@/pages/app/functions/store\";\nimport useCustomSettingStore from \"@/pages/customSetting\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function LSPBar() {\n  const { t } = useTranslation();\n  const { LSPStatus, setLSPStatus, allFunctionList } = useFunctionStore();\n  const { currentApp, isLSPEffective } = useGlobalStore();\n  const baseUrl = currentApp.host;\n  const url = useMemo(() => {\n    try {\n      return createUrl(baseUrl, \"/_/lsp\");\n    } catch {\n      return \"\";\n    }\n  }, [baseUrl]);\n  const { commonSettings } = useCustomSettingStore();\n  const [lspWebSocket, setLspWebSocket] = useState<WebSocket>();\n\n  useEffect(() => {\n    if (!commonSettings.useLSP) {\n      lspWebSocket?.close();\n    }\n  }, [commonSettings.useLSP, lspWebSocket]);\n\n  const handleWebSocketClick = () => {\n    const newLspWebSocket = createWebSocketAndStartClient(url, currentApp.develop_token);\n    setLspWebSocket(newLspWebSocket);\n    setLSPStatus(\"initializing\");\n\n    const abortController = new AbortController();\n\n    newLspWebSocket.addEventListener(\n      \"message\",\n      (event) => {\n        const message = JSON.parse(event.data);\n        if (message.method === \"textDocument/publishDiagnostics\") {\n          setLSPStatus(\"ready\");\n          return;\n        }\n      },\n      abortController,\n    );\n\n    newLspWebSocket.addEventListener(\n      \"close\",\n      () => {\n        setLSPStatus(\"closed\");\n      },\n      abortController,\n    );\n\n    newLspWebSocket.addEventListener(\n      \"error\",\n      () => {\n        setLSPStatus(\"error\");\n        lspWebSocket?.close();\n      },\n      abortController,\n    );\n\n    window.onbeforeunload = () => {\n      // On page reload/exit, close web socket connection\n      newLspWebSocket.close();\n      setLSPStatus(\"closed\");\n    };\n\n    return () => {\n      // Cleanup function for component unmount or page unload\n      abortController.abort();\n      newLspWebSocket.close();\n      setLSPStatus(\"closed\");\n    };\n  };\n\n  return (\n    <>\n      {!isLSPEffective || allFunctionList.length === 0 ? null : (\n        <div>\n          {!commonSettings.useLSP && (\n            <Tooltip label={t(\"LSP.EnableLanguageServer\")}>\n              <div className=\"flex items-center text-warn-600\">\n                <span>{t(\"LSP.LanguageServerNotEnable\")}</span>\n              </div>\n            </Tooltip>\n          )}\n          {commonSettings.useLSP && LSPStatus === \"ready\" && null}\n          {commonSettings.useLSP && LSPStatus === \"initializing\" && (\n            <div className=\"flex items-center text-grayModern-600\">\n              <Spinner size=\"xs\" className=\"mr-2\" />\n              <span>{t(\"LSP.InitializingLanguageServer\")}</span>\n            </div>\n          )}\n          {commonSettings.useLSP && LSPStatus === \"closed\" && (\n            <Tooltip label={t(\"LSP.InitLanguageServer\")}>\n              <div\n                className=\"flex cursor-pointer items-center text-warn-600\"\n                onClick={handleWebSocketClick}\n              >\n                <span>{t(\"LSP.LanguageServerClosed\")}</span>\n              </div>\n            </Tooltip>\n          )}\n          {commonSettings.useLSP && LSPStatus === \"error\" && (\n            <Tooltip label={t(\"LSP.InitLanguageServer\")}>\n              <div\n                className=\"flex cursor-pointer items-center text-red-600\"\n                onClick={handleWebSocketClick}\n              >\n                <span>{t(\"LSP.LanguageServerError\")}</span>\n              </div>\n            </Tooltip>\n          )}\n        </div>\n      )}\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/mods/StatusBar/LogsModal/InitLog.tsx",
    "content": "import { useCallback, useEffect, useState } from \"react\";\nimport { Badge, Center, Spinner, useColorMode } from \"@chakra-ui/react\";\nimport { EventStreamContentType, fetchEventSource } from \"@microsoft/fetch-event-source\";\nimport { LogViewer } from \"@patternfly/react-log-viewer\";\nimport clsx from \"clsx\";\n\nimport \"./initLog.scss\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype Log = {\n  data: string;\n  event: string;\n  id: string;\n  retry?: number;\n};\n\nexport default function InitLog() {\n  const { currentApp } = useGlobalStore((state) => state);\n  const [isLoading, setIsLoading] = useState(true);\n  const [rowCount, setRowCount] = useState(0);\n  const [paused, setPaused] = useState(false);\n\n  const [logs, setLogs] = useState<Log[]>([]);\n  const [renderLogs, setRenderLogs] = useState(\"\");\n\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  const addOrUpdateLog = (newLog: Log) => {\n    setLogs((pre) => {\n      const existingLogIndex = pre.findIndex((existingLog) => existingLog.id === newLog.id);\n\n      if (existingLogIndex !== -1) {\n        const updatedLogs = [...pre];\n        updatedLogs[existingLogIndex] = {\n          ...updatedLogs[existingLogIndex],\n          data: newLog.data,\n        };\n        return updatedLogs;\n      } else {\n        return [...pre, newLog];\n      }\n    });\n  };\n\n  const fetchLogs = useCallback(() => {\n    const ctrl = new AbortController();\n\n    fetchEventSource(`/v1/apps/${currentApp.appid}/logs/all?containerName=init`, {\n      method: \"GET\",\n      headers: {\n        Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\n      },\n      signal: ctrl.signal,\n      async onopen(response) {\n        if (response.ok && response.headers.get(\"content-type\") === EventStreamContentType) {\n          setIsLoading(false);\n        } else {\n          throw new Error(`Unexpected response: ${response.status} ${response.statusText}`);\n        }\n      },\n\n      onmessage(msg) {\n        if (msg.event === \"error\") {\n          throw new Error(msg.data);\n        }\n\n        if (msg.event === \"log\") {\n          addOrUpdateLog(msg);\n        }\n      },\n\n      onclose() {\n        throw new Error(\"connect closed unexpectedly, retrying...\");\n      },\n\n      onerror(err) {\n        // auto retry fetch\n      },\n    });\n    return ctrl;\n  }, [currentApp.appid]);\n\n  useEffect(() => {\n    setPaused(false);\n    setLogs([]);\n    setRowCount(0);\n    setIsLoading(true);\n\n    const ctrl = fetchLogs();\n\n    return () => {\n      ctrl?.abort();\n    };\n  }, [fetchLogs]);\n\n  useEffect(() => {\n    if (logs.length === 0) return;\n\n    const sortedLogs = [...logs].sort((a, b) => parseInt(a.id) - parseInt(b.id));\n    const logLines = sortedLogs.flatMap((log) => log.data.split(\"\\n\"));\n    const filteredLogLines = logLines.filter((line) => line.trim() !== \"\");\n    const uniqueLogLines = Array.from(new Set(filteredLogLines));\n\n    setRenderLogs(uniqueLogLines.join(\"\\n\"));\n    setRowCount(uniqueLogLines.length);\n  }, [logs]);\n\n  return (\n    <>\n      {isLoading ? (\n        <Center className=\"h-full w-full\">\n          <Spinner />\n        </Center>\n      ) : (\n        <>\n          <div\n            id=\"log-viewer-cover-container\"\n            className={clsx(\n              \"absolute inset-0 z-[999] h-full w-full px-2 pt-0 font-mono text-base font-bold opacity-60\",\n              darkMode ? \"bg-lafDark-100\" : \"bg-lafWhite-600\",\n              { \"log-viewer-cover-container-hide-scrollbar\": !paused },\n            )}\n            style={{ fontSize: 16 }}\n          >\n            <LogViewer\n              data={renderLogs}\n              hasLineNumbers={false}\n              scrollToRow={paused ? undefined : rowCount + 1}\n              height={\"100%\"}\n              onScroll={(e) => {\n                if (e.scrollOffsetToBottom <= 5) {\n                  setPaused(false);\n                  return;\n                }\n                if (!e.scrollUpdateWasRequested) {\n                  setPaused(true);\n                  return;\n                }\n                setPaused(false);\n              }}\n            />\n          </div>\n          <div className=\"absolute inset-0 z-[998] flex flex-col items-center justify-center\">\n            <Spinner\n              thickness=\"4px\"\n              speed=\"0.65s\"\n              emptyColor=\"gray.200\"\n              color=\"blue.500\"\n              size=\"xl\"\n            />\n            <Badge className=\"mt-4\">{currentApp.phase}...</Badge>\n          </div>\n        </>\n      )}\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/mods/StatusBar/LogsModal/index.scss",
    "content": "/* stylelint-disable selector-class-pattern */\n#log-viewer-container {\n  .pf-v5-c-text-input-group__icon {\n    visibility: hidden;\n  }\n\n  .pf-v5-c-text-input-group__text-input:focus {\n    outline: none !important;\n    color: #000;\n  }\n\n  .pf-m-current {\n    background: #91ded9 !important;\n  }\n\n  .pf-m-match {\n    background: #daf4f2 !important;\n  }\n\n  [data-theme=\"dark\"] & .pf-v5-c-text-input-group__text-input:focus {\n    outline: none !important;\n    color: #fff;\n  }\n\n  [data-theme=\"dark\"] & .pf-m-current {\n    background: #47c8bf !important;\n  }\n\n  [data-theme=\"dark\"] & .pf-m-match {\n    background: #2b7873 !important;\n  }\n}\n\n.log-viewer-container-hide-scrollbar {\n  &,\n  & * {\n    &::-webkit-scrollbar {\n      width: 0 !important;\n      height: 0 !important;\n    }\n\n    -ms-overflow-style: none; /* IE and Edge */\n    scrollbar-width: none; /* Firefox */\n  }\n}\n"
  },
  {
    "path": "web/src/pages/app/mods/StatusBar/LogsModal/index.tsx",
    "content": "import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  Button,\n  Center,\n  HStack,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalHeader,\n  ModalOverlay,\n  Select,\n  Spinner,\n  useColorMode,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { EventStreamContentType, fetchEventSource } from \"@microsoft/fetch-event-source\";\nimport { LogViewer, LogViewerSearch } from \"@patternfly/react-log-viewer\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\n\nimport { DownIcon, RefreshIcon } from \"@/components/CommonIcon\";\n\nimport \"./index.scss\";\n\nimport { PodControllerGetContainerNameList, PodControllerGetPodNameList } from \"@/apis/v1/apps\";\nimport useCustomSettingStore from \"@/pages/customSetting\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype Log = {\n  data: string;\n  event: string;\n  id: string;\n  retry?: number;\n};\n\nconst MAX_RETRIES = 5;\n\n// eslint-disable-next-line no-control-regex\nconst timestampRegex = /\\u001b\\[90m(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z)/g;\n// const timestampRegex = new RegExp(\n//   \"\\\\u001b\\\\[90m(\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{3}Z)\",\n//   \"g\",\n// );\n\nfunction formatToCustomDateString(date: Date): string {\n  const pad = (num: number) => String(num).padStart(2, \"0\");\n  const padMillis = (num: number) => String(num).padStart(3, \"0\");\n\n  const year = date.getFullYear();\n  const month = pad(date.getMonth() + 1); // Months are zero-indexed\n  const day = pad(date.getDate());\n  const hours = pad(date.getHours());\n  const minutes = pad(date.getMinutes());\n  const seconds = pad(date.getSeconds());\n  const milliseconds = padMillis(date.getMilliseconds());\n\n  const timeZoneOffset = -date.getTimezoneOffset();\n  const offsetHours = pad(Math.floor(Math.abs(timeZoneOffset) / 60));\n  const offsetMinutes = pad(Math.abs(timeZoneOffset) % 60);\n  const offsetSign = timeZoneOffset >= 0 ? \"+\" : \"-\";\n  const timeZone = `T${hours}:${minutes}:${seconds}.${milliseconds}${offsetSign}${offsetHours}:${offsetMinutes}`;\n\n  return `${year}-${month}-${day}${timeZone}`;\n}\n\nfunction convertLogTimestamp(log: Log): Log {\n  log.data = log.data.replace(timestampRegex, (match, p1) => {\n    const date = new Date(p1);\n    const clientTimeString = formatToCustomDateString(date); // 将时间转换为带时区的客户端时间字符串\n    return `\\u001b[90m${clientTimeString}`;\n  });\n\n  return log;\n}\n\nexport default function LogsModal(props: { children: React.ReactElement }) {\n  const { children } = props;\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { t } = useTranslation();\n  const settingStore = useCustomSettingStore();\n  const { showWarning } = useGlobalStore(({ showWarning }) => ({ showWarning }));\n\n  const { currentApp } = useGlobalStore((state) => state);\n  const [podName, setPodName] = useState(\"\");\n  const [containerName, setContainerName] = useState(\"\");\n  const [isLoading, setIsLoading] = useState(true);\n  const [rowCount, setRowCount] = useState(0);\n  const [paused, setPaused] = useState(false);\n\n  const [logs, setLogs] = useState<Log[]>([]);\n  const [renderLogs, setRenderLogs] = useState(\"\");\n  const [refresh, setRefresh] = useState(true);\n  const retryCountRef = useRef(0);\n\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  const addOrUpdateLog = (newLog: Log) => {\n    setLogs((pre) => {\n      const existingLogIndex = pre.findIndex((existingLog) => existingLog.id === newLog.id);\n\n      if (existingLogIndex !== -1) {\n        const updatedLogs = [...pre];\n        updatedLogs[existingLogIndex] = {\n          ...updatedLogs[existingLogIndex],\n          data: newLog.data,\n        };\n        return updatedLogs;\n      } else {\n        return [...pre, newLog];\n      }\n    });\n  };\n\n  const { data: podData } = useQuery(\n    [\"GetPodQuery\"],\n    () => {\n      return PodControllerGetPodNameList({});\n    },\n    {\n      onSuccess: (data) => {\n        if (data.data.podNameList) {\n          setPodName(data.data.podNameList[0]);\n        }\n      },\n      enabled: isOpen,\n    },\n  );\n\n  const { data: containerData } = useQuery(\n    [\"GetContainerQuery\"],\n    () => {\n      return PodControllerGetContainerNameList({ podName });\n    },\n    {\n      onSuccess: (data) => {\n        if (data.data.containerNameList) {\n          const length = data.data.containerNameList.length;\n          setContainerName(data.data.containerNameList[length - 1]);\n        }\n      },\n      enabled: isOpen && !!podName && podName !== \"all\",\n    },\n  );\n\n  const fetchLogs = useCallback(() => {\n    if (!podName || !containerName) return;\n    const ctrl = new AbortController();\n\n    fetchEventSource(\n      `/v1/apps/${currentApp.appid}/logs/${podName}?containerName=${containerName}`,\n      {\n        method: \"GET\",\n        headers: {\n          Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\n        },\n        signal: ctrl.signal,\n        async onopen(response) {\n          if (response.ok && response.headers.get(\"content-type\") === EventStreamContentType) {\n            setIsLoading(false);\n          } else {\n            throw new Error(`Unexpected response: ${response.status} ${response.statusText}`);\n          }\n        },\n\n        onmessage(msg: Log) {\n          if (msg.event === \"error\") {\n            showWarning(msg.data);\n          }\n\n          if (msg.event === \"log\") {\n            const log: Log = convertLogTimestamp(msg);\n            addOrUpdateLog(log);\n            retryCountRef.current = 0;\n          }\n        },\n\n        onclose() {\n          // if the server closes the connection unexpectedly, retry:\n          if (retryCountRef.current < MAX_RETRIES) {\n            retryCountRef.current += 1;\n            throw new Error(\"connect closed unexpectedly, retrying...\");\n          }\n        },\n\n        onerror(err) {\n          showWarning(err.message);\n          // auto retry fetch\n        },\n      },\n    );\n    return ctrl;\n  }, [podName, containerName, currentApp.appid, showWarning]);\n\n  useEffect(() => {\n    if (!isOpen) return;\n    setPaused(false);\n    setLogs([]);\n    setRowCount(0);\n    setIsLoading(true);\n\n    const ctrl = fetchLogs();\n\n    return () => {\n      ctrl?.abort();\n    };\n  }, [podName, containerName, isOpen, refresh, fetchLogs]);\n\n  useEffect(() => {\n    if (logs.length === 0) return;\n\n    const sortedLogs = [...logs].sort((a, b) => parseInt(a.id) - parseInt(b.id));\n    const concatenatedLogs = sortedLogs.map((log) => log.data).join(\"\");\n    setRenderLogs(concatenatedLogs);\n    const totalRows = concatenatedLogs.split(\"\\n\").length;\n    setRowCount(totalRows);\n  }, [logs]);\n\n  useEffect(() => {\n    retryCountRef.current = 0;\n  }, [isOpen]);\n\n  return (\n    <>\n      {React.cloneElement(children, {\n        onClick: () => {\n          onOpen();\n        },\n      })}\n      <Modal isOpen={isOpen} onClose={onClose} size={\"6xl\"}>\n        <ModalOverlay />\n        <ModalContent className=\"h-[90vh]\" m={\"auto\"}>\n          <ModalHeader>\n            <ModalCloseButton />\n            <HStack>\n              <span>{t(\"Logs.PodLogs\")}</span>\n              <span>\n                <Select\n                  className=\"ml-4 !h-8 !w-64\"\n                  onChange={(e) => {\n                    setPodName(e.target.value);\n                  }}\n                  value={podName}\n                >\n                  {podData?.data?.podNameList &&\n                    (podData?.data?.podNameList.length > 1\n                      ? [\"all\", ...podData?.data?.podNameList]\n                      : podData?.data?.podNameList\n                    ).map((item: string) => (\n                      <option key={item} value={item}>\n                        {item}\n                      </option>\n                    ))}\n                </Select>\n              </span>\n              {containerData?.data?.containerNameList && (\n                <span>\n                  <Select\n                    className=\"ml-1 !h-8 !w-32\"\n                    onChange={(e) => {\n                      setContainerName(e.target.value);\n                    }}\n                    value={containerName}\n                  >\n                    {...containerData?.data?.containerNameList.map((item: string) => (\n                      <option key={item} value={item}>\n                        {item}\n                      </option>\n                    ))}\n                  </Select>\n                </span>\n              )}\n              <span>\n                <Button\n                  variant={\"text\"}\n                  leftIcon={<RefreshIcon boxSize={5} />}\n                  px={2}\n                  onClick={() => {\n                    setRefresh((pre) => !pre);\n                    setPaused(false);\n                  }}\n                >\n                  {t(\"Refresh\")}\n                </Button>\n              </span>\n            </HStack>\n          </ModalHeader>\n          <ModalBody pr={0} py={0}>\n            {isLoading ? (\n              <Center className=\"h-full w-full\">\n                <Spinner />\n              </Center>\n            ) : (\n              <div\n                id=\"log-viewer-container\"\n                className={clsx(\"text-sm flex h-full flex-col px-2 font-mono\", {\n                  \"log-viewer-container-hide-scrollbar\": !paused,\n                })}\n                style={{ fontSize: settingStore.commonSettings.fontSize - 1 }}\n              >\n                <LogViewer\n                  data={renderLogs}\n                  hasLineNumbers={true}\n                  scrollToRow={paused ? undefined : rowCount + 1}\n                  height={\"98%\"}\n                  onScroll={(e) => {\n                    if (e.scrollOffsetToBottom <= 5) {\n                      setPaused(false);\n                      return;\n                    }\n                    if (!e.scrollUpdateWasRequested) {\n                      setPaused(true);\n                      return;\n                    }\n                    setPaused(false);\n                  }}\n                  toolbar={\n                    <div className=\"absolute right-24 top-4\">\n                      <LogViewerSearch\n                        placeholder=\"Search\"\n                        minSearchChars={1}\n                        className=\"mr-4 h-8 rounded-lg border pl-4 !text-grayModern-400\"\n                      />\n                    </div>\n                  }\n                />\n                <div className=\"absolute bottom-1 w-[95%]\">\n                  {paused && (\n                    <HStack\n                      onClick={() => {\n                        setPaused(false);\n                      }}\n                      className={clsx(\n                        \"flex w-full cursor-pointer items-center justify-center\",\n                        darkMode ? \"bg-[#212630]\" : \"bg-white\",\n                      )}\n                    >\n                      <DownIcon color={\"#33BAB1\"} size={24} />\n                      <span className=\"text-lg font-medium text-primary-500\">\n                        {t(\"Logs.ScrollToBottom\")}\n                      </span>\n                    </HStack>\n                  )}\n                </div>\n              </div>\n            )}\n          </ModalBody>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/mods/StatusBar/LogsModal/initLog.scss",
    "content": "/* stylelint-disable selector-class-pattern */\n#log-viewer-cover-container {\n  .pf-v5-c-text-input-group__icon {\n    visibility: hidden;\n  }\n\n  .pf-v5-c-text-input-group__text-input:focus {\n    outline: none !important;\n    color: #000;\n  }\n\n  .pf-m-current {\n    background: #91ded9 !important;\n  }\n\n  .pf-m-match {\n    background: #daf4f2 !important;\n  }\n\n  [data-theme=\"dark\"] & .pf-v5-c-text-input-group__text-input:focus {\n    outline: none !important;\n    color: #fff;\n  }\n\n  [data-theme=\"dark\"] & .pf-m-current {\n    background: #47c8bf !important;\n  }\n\n  [data-theme=\"dark\"] & .pf-m-match {\n    background: #2b7873 !important;\n  }\n}\n\n.log-viewer-cover-container-hide-scrollbar {\n  &,\n  & * {\n    &::-webkit-scrollbar {\n      width: 0 !important;\n      height: 0 !important;\n    }\n\n    -ms-overflow-style: none; /* IE and Edge */\n    scrollbar-width: none; /* Firefox */\n  }\n}\n"
  },
  {
    "path": "web/src/pages/app/mods/StatusBar/MonitorBar/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Center, Spinner, Tooltip, useColorMode } from \"@chakra-ui/react\";\nimport { useQueries } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\n\nimport { MonitorIcon } from \"@/components/CommonIcon\";\nimport { uniformCapacity, uniformCPU, uniformMemory, uniformStorage } from \"@/utils/format\";\n\nimport { TInstantMonitorData } from \"@/apis/typing\";\nimport { DedicatedDatabaseMonitorControllerGetResource } from \"@/apis/v1/apps\";\nimport { MonitorControllerGetData } from \"@/apis/v1/monitor\";\nimport SysSetting from \"@/pages/app/setting/SysSetting\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport const MonitorDataType = [\"cpuUsage\", \"memoryUsage\", \"databaseUsage\", \"storageUsage\"];\n\nexport default function MonitorBar() {\n  const { currentApp } = useGlobalStore();\n  const { t } = useTranslation();\n  const { limitCPU, limitMemory, storageCapacity, dedicatedDatabase } = currentApp.bundle.resource;\n  const dedicatedDatabaseLimitCPU = dedicatedDatabase?.limitCPU;\n  let { databaseCapacity } = currentApp.bundle.resource;\n  databaseCapacity = dedicatedDatabaseLimitCPU ? dedicatedDatabase.capacity : databaseCapacity;\n\n  const [resources, setResources] = useState<any>([]);\n  const [instantData, setInstantData] = useState<TInstantMonitorData>();\n\n  const darkMode = useColorMode().colorMode === \"dark\";\n  const appid = currentApp.bundle.appid;\n  const results = useQueries({\n    queries: [\n      {\n        queryKey: [\"useGetInstantMonitorDataQuery\"],\n        queryFn: () =>\n          MonitorControllerGetData({\n            q: MonitorDataType,\n            step: 60,\n            type: \"instant\",\n          }),\n        refetchInterval: 60000,\n      },\n      {\n        queryKey: [\"dedicatedDatabaseMonitorControllerGetResource\"],\n        queryFn: () => DedicatedDatabaseMonitorControllerGetResource({}),\n        refetchInterval: 60000,\n      },\n    ],\n  });\n\n  const allDataLoaded = results.every((result) => result.isSuccess);\n  const instantMonitorData = results[0].data?.data;\n  const resourceData = results[1].data?.data;\n  useEffect(() => {\n    if (allDataLoaded) {\n      const { cpuUsage, memoryUsage, storageUsage } = instantMonitorData || {};\n      if (resourceData && \"cpu\" in resourceData) {\n        const databaseUsage = resourceData.dataSize.find(\n          (item: any) => item.metric.database === appid,\n        );\n        const data = {\n          cpuUsage,\n          memoryUsage,\n          databaseUsage: databaseUsage ? [databaseUsage] : [],\n          storageUsage,\n        };\n        setInstantData(data);\n      } else {\n        const databaseUsage = instantMonitorData?.databaseUsage;\n        const data = {\n          cpuUsage,\n          memoryUsage,\n          databaseUsage,\n          storageUsage,\n        };\n        setInstantData(data);\n      }\n    }\n  }, [appid, instantMonitorData, resourceData, allDataLoaded]);\n\n  const getAverage = (data: any = []) => {\n    let total = 0;\n    data.forEach((item: any) => {\n      if (!item.value?.length) return 0;\n      total += Number(item.value[1]);\n    });\n    return total / data.length || 0;\n  };\n\n  useEffect(() => {\n    if (!instantData) return;\n    setResources([\n      {\n        label: `CPU`,\n        percent: (uniformCPU(getAverage(instantData.cpuUsage)) / limitCPU) * 100,\n        color: \"#47C8BF\",\n      },\n      {\n        label: t(\"Spec.RAM\"),\n        percent: (uniformMemory(getAverage(instantData.memoryUsage)) / limitMemory) * 100,\n        color: \"#8172D8\",\n      },\n      {\n        label: t(\"Spec.Database\"),\n        percent: (uniformCapacity(getAverage(instantData.databaseUsage)) / databaseCapacity) * 100,\n        color: \"#ED598E\",\n      },\n      {\n        label: t(\"Spec.Storage\"),\n        percent: (uniformStorage(getAverage(instantData.storageUsage)) / storageCapacity) * 100,\n        color: \"#36ADEF\",\n      },\n    ]);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [instantData]);\n\n  const limitPercentage = (value: number) => {\n    if (value > 100) {\n      return 100;\n    } else if (value < 3) {\n      return 3;\n    }\n    return value;\n  };\n\n  return (\n    <SysSetting currentTab=\"monitorRuntime\">\n      <div className=\"flex items-center\">\n        <span\n          className={clsx(\n            \"mr-4 flex h-full cursor-pointer items-center\",\n            darkMode ? \"\" : \"text-grayModern-700\",\n          )}\n        >\n          <MonitorIcon className=\"mr-1\" />\n          {t(\"SettingPanel.MonitorSetting\") + \" :\"}\n        </span>\n        <Center className=\"w-52 space-x-2\">\n          {resources.length !== 0 ? (\n            resources.map((resource: any, index: number) => (\n              <Tooltip key={index} label={`${resource.label}: ${resource.percent.toFixed(2)}%`}>\n                <div className=\"h-1 w-12 cursor-pointer rounded-full bg-grayModern-100\">\n                  <div\n                    style={{\n                      width: `${limitPercentage(resource.percent).toFixed(2)}%`,\n                      backgroundColor: resource.color,\n                    }}\n                    className={`h-full rounded-full`}\n                  ></div>\n                </div>\n              </Tooltip>\n            ))\n          ) : (\n            <Spinner size=\"xs\" color={\"grayModern.500\"} />\n          )}\n        </Center>\n      </div>\n    </SysSetting>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/mods/StatusBar/index.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\nimport { HStack, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport ColorModeSwitch from \"@/components/ColorModeSwitch\";\nimport { TextIcon } from \"@/components/CommonIcon\";\nimport LanguageSwitch from \"@/components/LanguageSwitch\";\nimport Panel from \"@/components/Panel\";\nimport { APP_PHASE_STATUS, APP_STATUS } from \"@/constants\";\n\nimport Icons from \"../SideBar/Icons\";\n\nimport LogsModal from \"./LogsModal\";\nimport LSPBar from \"./LSPBar\";\nimport MonitorBar from \"./MonitorBar\";\n\nimport SysSetting from \"@/pages/app/setting/SysSetting\";\nimport useGlobalStore from \"@/pages/globalStore\";\nimport CreateAppModal from \"@/pages/home/mods/CreateAppModal\";\nimport StatusBadge from \"@/pages/home/mods/StatusBadge\";\n\nfunction StatusBar() {\n  const { t } = useTranslation();\n  const { currentApp } = useGlobalStore((state) => state);\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  return (\n    <Panel className=\"!mt-1 !flex-row justify-between\">\n      <HStack spacing={2}>\n        <LanguageSwitch\n          className={clsx(\"!-space-x-1 !text-[12px]\", darkMode ? \"\" : \"!text-grayModern-700\")}\n          size=\"14px\"\n        />\n        <ColorModeSwitch\n          className={clsx(\"pr-2\", darkMode ? \"\" : \"!text-grayModern-700\")}\n          fontSize={13}\n        />\n        <div>\n          {t(\"StatusBar.CurrentApplication\")}: {currentApp?.name}\n        </div>\n        <SysSetting currentTab=\"info\">\n          <div className=\"cursor-pointer\">\n            <Icons type=\"info\" />\n          </div>\n        </SysSetting>\n        <StatusBadge\n          className=\"!bg-transparent\"\n          statusConditions={currentApp?.phase}\n          state={currentApp?.state}\n        />\n        <LSPBar />\n      </HStack>\n      <HStack spacing={4}>\n        <LogsModal>\n          <div\n            className={clsx(\"flex cursor-pointer space-x-1\", darkMode ? \"\" : \"text-grayModern-600\")}\n          >\n            <span className=\"flex items-center\">\n              <TextIcon />\n            </span>\n            <span>{t(\"Logs.logs\")}</span>\n          </div>\n        </LogsModal>\n        <MonitorBar />\n        {/* Only running applications can change configuration */}\n        {currentApp?.phase === APP_PHASE_STATUS.Started &&\n          currentApp?.state === APP_STATUS.Running && (\n            <div className={clsx(\"mt-1\")}>\n              <CreateAppModal application={currentApp as any} isCurrentApp type=\"change\">\n                <a className=\"ml-2 text-primary-700\" href=\"/edit\">\n                  {t(\"Change\")}\n                </a>\n              </CreateAppModal>\n            </div>\n          )}\n      </HStack>\n    </Panel>\n  );\n}\n\nexport default StatusBar;\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/AppEnvList/EditTextarea/index.tsx",
    "content": "import { Textarea } from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nconst EditTextarea = function (props: {\n  text: string;\n  value: number;\n  onChange: (data: any) => any;\n  onBlur: (data: any) => any;\n  disabled: boolean;\n}) {\n  const { text, value, onBlur, onChange, disabled } = props;\n  return (\n    <Textarea\n      value={value}\n      onBlur={onBlur}\n      onChange={onChange}\n      disabled={disabled}\n      resize=\"vertical\"\n      size=\"sm\"\n      placeholder={`${t(\"InputTip\")} ${text}`}\n    />\n  );\n};\n\nexport default EditTextarea;\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/AppEnvList/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button, ButtonGroup, Switch, useColorMode } from \"@chakra-ui/react\";\nimport { Center, Spinner } from \"@chakra-ui/react\";\n\nimport EditableTable from \"@/components/EditableTable\";\nimport ENVCodeEditor from \"@/components/Editor/ENVCodeEditor\";\n\nimport { useEnvironmentQuery, useUpdateEnvironmentMutation } from \"./service\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nconst AppEnvList = (props: { onClose?: () => {} }) => {\n  const [env, setEnv] = useState<Array<{ name: string; value: string }>>([]);\n  const [pureEnv, setPureEnv] = useState(\"\");\n  const { isLoading, data } = useEnvironmentQuery((data) => {\n    setEnv(data || []);\n  });\n  const [isENVLoading, setIsENVLoading] = useState(false);\n  const updateEnvironmentMutation = useUpdateEnvironmentMutation();\n  const globalStore = useGlobalStore();\n  const { t } = useTranslation();\n  const [isEditorMode, setIsEditorMode] = useState(false);\n  const { colorMode } = useColorMode();\n\n  useEffect(() => {\n    let newEnv = pureEnv\n      .split(\"\\n\")\n      .map((v) => v.split(\"=\"))\n      .filter((v) => v.length >= 2)\n      .map((v) => {\n        const [name, ...value] = v;\n        return {\n          name,\n          value: value.join(\"=\"),\n        };\n      })\n      .filter((v) => v.name !== \"\" && v.value !== \"\");\n\n    const envNames: string[] = [];\n    newEnv = newEnv.filter((v) => {\n      if (envNames.includes(v.name)) return false;\n      envNames.push(v.name);\n      return true;\n    });\n    setEnv(newEnv);\n  }, [pureEnv]);\n\n  return (\n    <>\n      <div className=\"absolute bottom-0 left-[280px] right-6 top-10 mr-6 flex h-full flex-grow flex-col py-4\">\n        {isLoading ? (\n          <Center className=\"h-[400px]\">\n            <Spinner />\n          </Center>\n        ) : (\n          <>\n            <div>\n              {isEditorMode ? (\n                <div className=\"h-[409px] rounded-lg border px-4 pt-4\">\n                  <ENVCodeEditor\n                    value={env\n                      .map((item) => {\n                        return `${item.name}=${item.value}`;\n                      })\n                      .join(\"\\n\")}\n                    onChange={(value) => {\n                      setPureEnv(value || \"\");\n                    }}\n                    colorMode={colorMode}\n                  />\n                </div>\n              ) : (\n                <EditableTable\n                  column={[\n                    {\n                      name: \"Key\",\n                      key: \"name\",\n                      width: \"130px\",\n                      validate: [\n                        (data: any) => {\n                          return {\n                            isValidate: data !== \"\",\n                            errorInfo: t(\"KeyCannotBeEmpty\").toString(),\n                          };\n                        },\n                      ],\n                    },\n                    {\n                      name: \"Value\",\n                      key: \"value\",\n                      width: \"290px\",\n                      validate: [\n                        (data: any) => {\n                          return {\n                            isValidate: data !== \"\",\n                            errorInfo: t(\"ValueCannotBeEmpty\").toString(),\n                          };\n                        },\n                      ],\n                    },\n                  ]}\n                  configuration={{\n                    key: \"name\",\n                    tableHeight: \"360px\",\n                    hiddenEditButton: false,\n                    addButtonText: String(t(\"AddENV\")),\n                    saveButtonText: String(t(\"Confirm\")),\n                  }}\n                  tableData={env}\n                  onEdit={(data) => {\n                    setEnv(\n                      env.map((item) => {\n                        if (item.name === data.item.name) {\n                          return data.newData;\n                        }\n                        return item;\n                      }),\n                    );\n                  }}\n                  onDelete={(data) => {\n                    setEnv(env.filter((item) => item.name !== data));\n                  }}\n                  onCreate={(data) => {\n                    if (env.find((item) => item.name === data.name)) {\n                      globalStore.showError(t(\"KeyAlreadyExists\").toString());\n                      return;\n                    }\n                    setEnv([...env, data]);\n                  }}\n                />\n              )}\n            </div>\n            <div className=\"mt-4 flex h-8 w-full items-center justify-between\">\n              <div className=\"flex items-center\">\n                <Switch\n                  className=\"mr-2\"\n                  size={\"sm\"}\n                  defaultChecked={isEditorMode}\n                  onChange={() => setIsEditorMode((prev) => !prev)}\n                />\n                <span>{t(\"SettingPanel.EditorMode\")}</span>\n              </div>\n              <ButtonGroup className=\"space-x-4\">\n                <Button\n                  w={24}\n                  variant=\"outline\"\n                  color={\"grayModern.500\"}\n                  onClick={() => {\n                    setEnv(data?.data || []);\n                  }}\n                >\n                  {t(\"Reset\")}\n                </Button>\n                <Button\n                  w={24}\n                  isLoading={isENVLoading}\n                  onClick={async () => {\n                    setIsENVLoading(true);\n                    try {\n                      const res = await updateEnvironmentMutation.mutateAsync(env);\n                      if (!res.error) {\n                        globalStore.showSuccess(t(\"UpdateSuccess\"));\n                      }\n                    } finally {\n                      setIsENVLoading(false);\n                    }\n                  }}\n                >\n                  {t(\"Update\")}\n                </Button>\n              </ButtonGroup>\n            </div>\n          </>\n        )}\n      </div>\n    </>\n  );\n};\n\nexport default AppEnvList;\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/AppEnvList/service.ts",
    "content": "import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\n\nimport {\n  EnvironmentVariableControllerAdd,\n  EnvironmentVariableControllerDelete,\n  EnvironmentVariableControllerGet,\n  EnvironmentVariableControllerUpdateAll,\n} from \"@/apis/v1/apps\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport type TEnvironment = {\n  name: string;\n  value: string;\n};\n\nconst queryKeys = {\n  useEnvironmentQuery: [\"useEnvironmentQuery\"],\n};\n\nexport const useEnvironmentQuery = (callback?: (data: any) => void) => {\n  return useQuery(\n    queryKeys.useEnvironmentQuery,\n    () => {\n      return EnvironmentVariableControllerGet({});\n    },\n    {\n      onSuccess: (data) => {\n        callback && callback(data?.data);\n      },\n    },\n  );\n};\n\nexport const useAddEnvironmentMutation = (callback?: () => void) => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (params: Definitions.CreateEnvironmentDto) => EnvironmentVariableControllerAdd(params),\n    {\n      onSuccess: async () => {\n        useGlobalStore.getState().showSuccess(\"update environment success\");\n        await queryClient.invalidateQueries(queryKeys.useEnvironmentQuery);\n        callback && callback();\n      },\n    },\n  );\n};\n\nexport const useDelEnvironmentMutation = (callback?: () => void) => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (params: { name: string | undefined }) => EnvironmentVariableControllerDelete(params),\n    {\n      onSuccess: async () => {\n        useGlobalStore.getState().showSuccess(\"delete environment success\");\n        await queryClient.invalidateQueries(queryKeys.useEnvironmentQuery);\n        callback && callback();\n      },\n    },\n  );\n};\n\nexport const useUpdateEnvironmentMutation = (callback?: () => void) => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (params: { name: string; value: string }[]) => EnvironmentVariableControllerUpdateAll(params),\n    {\n      onSuccess: async () => {\n        await queryClient.invalidateQueries(queryKeys.useEnvironmentQuery);\n        callback && callback();\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/AppInfoList/InfoDetail/index.tsx",
    "content": "import clsx from \"clsx\";\n\nimport Content from \"@/components/Content\";\nimport { Col } from \"@/components/Grid\";\n\nconst InfoDetail = function (props: {\n  title: string;\n  className?: string;\n  data: { key: string; value: string }[];\n}) {\n  const { title, data, className } = props;\n  return (\n    <div className={clsx(\"rounded-xl border p-6\", className)}>\n      <Content>\n        <Col>\n          <span className={clsx(\"mb-5 flex items-center text-lg font-semibold\")}>\n            <div className=\"mr-2 h-3 w-1 rounded-xl bg-primary-600\" />\n            {title}\n          </span>\n          {data.map((item) => (\n            <div key={item.key} className=\"flex justify-between border-t border-dotted py-2\">\n              <span className=\"text-grayModern-500\">{item.key}</span>\n              <span>{item.value}</span>\n            </div>\n          ))}\n        </Col>\n      </Content>\n    </div>\n  );\n};\n\nexport default InfoDetail;\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/AppInfoList/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { MdPlayCircleOutline, MdRestartAlt } from \"react-icons/md\";\nimport { RiDeleteBin6Line, RiShutDownLine } from \"react-icons/ri\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Box, Button, Checkbox, HStack, useColorMode, VStack } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport ConfirmButton from \"@/components/ConfirmButton\";\nimport { APP_PHASE_STATUS, APP_STATUS, COLOR_MODE, Routes } from \"@/constants/index\";\nimport { formatDate, formatSize } from \"@/utils/format\";\n\nimport InfoDetail from \"./InfoDetail\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\nimport DeleteAppModal from \"@/pages/home/mods/DeleteAppModal\";\nimport StatusBadge from \"@/pages/home/mods/StatusBadge\";\ninterface AppEnvListProps {\n  onClose?: () => void;\n}\n\nconst AppEnvList: React.FC<AppEnvListProps> = (props = {}) => {\n  const { onClose } = props;\n  const { t } = useTranslation();\n  const navigate = useNavigate();\n\n  const { currentApp, updateCurrentApp, regions = [] } = useGlobalStore((state) => state);\n  const darkMode = useColorMode().colorMode === COLOR_MODE.dark;\n\n  const [onlyRuntimeFlag, setOnlyRuntimeFlag] = useState(true);\n\n  const currentRegion = regions.find((item) => item._id === currentApp?.regionId);\n\n  if (currentApp?.state === APP_PHASE_STATUS.Deleted) {\n    navigate(Routes.dashboard);\n    return <></>;\n  }\n\n  return (\n    <>\n      <div className=\"flex flex-col pt-10\">\n        <VStack spacing={0}>\n          <StatusBadge\n            className=\"mb-3 px-3\"\n            statusConditions={currentApp?.phase}\n            state={currentApp?.state}\n          />\n          <Box\n            className={clsx(\"!mb-4 text-[20px] font-medium\", {\n              \"text-grayModern-100\": darkMode,\n            })}\n          >\n            {currentApp?.name}\n          </Box>\n          <HStack\n            spacing={2}\n            divider={\n              <span className=\"mr-2 inline-block h-[12px] rounded border border-grayModern-500\"></span>\n            }\n          >\n            {currentApp?.phase === APP_PHASE_STATUS.Stopped ? (\n              <Button\n                className=\"mr-2\"\n                fontWeight={\"semibold\"}\n                size={\"sm\"}\n                isDisabled={currentApp?.phase !== APP_PHASE_STATUS.Stopped}\n                color={\"grayModern.600\"}\n                bg={\"none\"}\n                _hover={{ color: \"primary.600\" }}\n                onClick={() => {\n                  updateCurrentApp(currentApp!, APP_STATUS.Running);\n                  if (onClose) {\n                    onClose();\n                  }\n                }}\n              >\n                <MdPlayCircleOutline size={16} className=\"mr-1\" />\n                {t(\"SettingPanel.Start\")}\n              </Button>\n            ) : null}\n\n            {currentApp?.phase === APP_PHASE_STATUS.Started ? (\n              <>\n                {currentApp?.bundle?.resource?.dedicatedDatabase?.limitCPU ? (\n                  <ConfirmButton\n                    headerText={t(\"SettingPanel.Restart\")}\n                    bodyText={\n                      <Checkbox\n                        colorScheme=\"primary\"\n                        mt={4}\n                        isChecked={!onlyRuntimeFlag}\n                        onChange={(e) => setOnlyRuntimeFlag(!e.target.checked)}\n                      >\n                        {t(\"SettingPanel.RestartTips\")}\n                      </Checkbox>\n                    }\n                    confirmButtonText={String(t(\"Confirm\"))}\n                    onSuccessAction={async (event) => {\n                      event?.preventDefault();\n                      updateCurrentApp(currentApp!, APP_STATUS.Restarting, onlyRuntimeFlag);\n                      setOnlyRuntimeFlag(true);\n                    }}\n                  >\n                    <Button\n                      className=\"mr-2\"\n                      fontWeight={\"semibold\"}\n                      size={\"sm\"}\n                      color={\"grayModern.600\"}\n                      bg={\"none\"}\n                      _hover={{ color: \"primary.600\" }}\n                    >\n                      <MdRestartAlt size={16} className=\"mr-1\" />\n                      {t(\"SettingPanel.Restart\")}\n                    </Button>\n                  </ConfirmButton>\n                ) : (\n                  <ConfirmButton\n                    headerText={t(\"SettingPanel.Restart\")}\n                    bodyText={t(\"SettingPanel.RestartTips1\")}\n                    confirmButtonText={String(t(\"Confirm\"))}\n                    onSuccessAction={async (event) => {\n                      event?.preventDefault();\n                      updateCurrentApp(currentApp!, APP_STATUS.Restarting);\n                    }}\n                  >\n                    <Button\n                      className=\"mr-2\"\n                      fontWeight={\"semibold\"}\n                      size={\"sm\"}\n                      color={\"grayModern.600\"}\n                      bg={\"none\"}\n                      _hover={{ color: \"primary.600\" }}\n                    >\n                      <MdRestartAlt size={16} className=\"mr-1\" />\n                      {t(\"SettingPanel.Restart\")}\n                    </Button>\n                  </ConfirmButton>\n                )}\n\n                <Button\n                  className=\"mr-2\"\n                  fontWeight={\"semibold\"}\n                  size={\"sm\"}\n                  color={\"grayModern.600\"}\n                  bg={\"none\"}\n                  _hover={{ color: \"primary.600\" }}\n                  onClick={(event: any) => {\n                    event?.preventDefault();\n                    updateCurrentApp(currentApp!, APP_STATUS.Stopped);\n                  }}\n                >\n                  <RiShutDownLine size={16} className=\"mr-1\" />\n                  {t(\"SettingPanel.Pause\")}\n                </Button>\n              </>\n            ) : null}\n\n            {currentApp?.phase === APP_PHASE_STATUS.Stopped ? (\n              <DeleteAppModal\n                item={currentApp}\n                onSuccess={() => {\n                  navigate(Routes.dashboard);\n                }}\n              >\n                <Button\n                  className=\"mr-2\"\n                  fontWeight={\"semibold\"}\n                  size={\"sm\"}\n                  color={\"grayModern.600\"}\n                  bg={\"none\"}\n                  _hover={{ color: \"error.500\" }}\n                >\n                  <RiDeleteBin6Line size={16} className=\"mr-1\" />\n                  {t(\"SettingPanel.Delete\")}\n                </Button>\n              </DeleteAppModal>\n            ) : null}\n          </HStack>\n        </VStack>\n        <div className=\"mt-8 flex flex-grow justify-center space-x-5 overflow-auto\">\n          <InfoDetail\n            title={t(\"SettingPanel.BaseInfo\")}\n            data={[\n              { key: \"APP ID\", value: currentApp?.appid },\n              { key: t(\"HomePanel.Region\"), value: currentRegion?.displayName },\n              { key: t(\"HomePanel.RuntimeName\"), value: currentApp?.runtime.name },\n              { key: t(\"CreateTime\"), value: formatDate(currentApp.createdAt) },\n            ]}\n            className={darkMode ? \"w-60\" : \"w-60 bg-[#F8FAFB]\"}\n          />\n          <InfoDetail\n            title={t(\"SettingPanel.Detail\")}\n            data={[\n              {\n                key: \"CPU\",\n                value: `${currentApp?.bundle?.resource?.limitCPU! / 1000} ${t(\"Unit.CPU\")}`,\n              },\n              {\n                key: t(\"Spec.RAM\"),\n                value: String(\n                  formatSize(currentApp?.bundle?.resource.limitMemory * 1024 * 1024, 0),\n                ),\n              },\n              {\n                key: t(\"Spec.Database\"),\n                value: String(\n                  formatSize(currentApp?.bundle?.resource.databaseCapacity * 1024 * 1024, 0),\n                ),\n              },\n              {\n                key: t(\"Spec.Storage\"),\n                value: String(\n                  formatSize(currentApp?.bundle?.resource.storageCapacity * 1024 * 1024, 0),\n                ),\n              },\n            ]}\n            className={darkMode ? \"w-60\" : \"w-60 bg-[#F8FAFB]\"}\n          />\n        </div>\n      </div>\n    </>\n  );\n};\n\nexport default AppEnvList;\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/AppMonitor/AreaCard/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { ChevronDownIcon } from \"@chakra-ui/icons\";\nimport { Menu, MenuButton, MenuItemOption, MenuList } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport {\n  Area,\n  AreaChart,\n  CartesianGrid,\n  ReferenceLine,\n  ResponsiveContainer,\n  Tooltip,\n  XAxis,\n  YAxis,\n} from \"recharts\";\n\nimport { formatDate } from \"@/utils/format\";\n\nimport { TCpuUsageData } from \"@/apis/typing\";\n\nconst strokeColorArray = [\n  \"#47C8BF\",\n  \"#9A8EE0\",\n  \"#FFA100\",\n  \"#FF4D4F\",\n  \"#52C41A\",\n  \"#1890FF\",\n  \"#FF7A45\",\n  \"#FFC53D\",\n  \"#FF85C0\",\n  \"#A0D911\",\n  \"#13C2C2\",\n  \"#2F54EB\",\n  \"#EB2F96\",\n  \"#F5222D\",\n  \"#FAAD14\",\n  \"#722ED1\",\n  \"#13C2C2\",\n  \"#1890FF\",\n  \"#722ED1\",\n  \"#FAAD14\",\n];\n\nconst generateChartData = () => {\n  const now = new Date();\n  now.setSeconds(0, 0);\n  const startTime = now.getTime() - 59 * 60 * 1000;\n  return Array(60)\n    .fill({ xData: 0 })\n    .map((_, i) => ({ xData: startTime + i * 60 * 1000 }));\n};\n\ntype DataPoint = {\n  xData: number;\n  [key: string]: number | undefined;\n};\n\nfunction mergeArrays(dataArrays: (DataPoint[] | null)[]): DataPoint[] {\n  const baseChartData = generateChartData();\n  return baseChartData.map((basePoint) => {\n    const mergedPoint: DataPoint = { xData: basePoint.xData };\n    dataArrays.forEach((arr, index) => {\n      if (!arr || arr.length === 0) return;\n      const matchingPoint = arr.find((p) => p.xData === basePoint.xData);\n      if (matchingPoint) {\n        mergedPoint[`value${index}`] = matchingPoint[`value${index}`] ?? 0;\n      } else {\n        mergedPoint[`value${index}`] = undefined;\n      }\n    });\n    return mergedPoint;\n  });\n}\n\nfunction extractNumber(str: string) {\n  const match = str.match(/\\d+$/) || [];\n  return Number(match[0]);\n}\nconst modifyTimestamp = (t: number) => {\n  let date = new Date(t * 1000);\n  date.setSeconds(0, 0);\n  return date.getTime();\n};\n\nexport default function AreaCard(props: {\n  data: TCpuUsageData;\n  strokeColor: string;\n  fillColor: string;\n  setDataNumber?: (value: number) => void;\n  dataNumber: number;\n  podsArray: string[];\n  title: string;\n  maxValue: number;\n  unit: string;\n  className?: string;\n  longestTick: string;\n  onLongestTickChange: (val: string) => void;\n}) {\n  const {\n    data,\n    strokeColor,\n    fillColor,\n    setDataNumber,\n    dataNumber,\n    podsArray,\n    title,\n    maxValue,\n    unit,\n    className,\n    longestTick,\n    onLongestTickChange,\n  } = props;\n  const [chartData, setChartData] = useState<any[]>([]);\n  useEffect(() => {\n    if (dataNumber === 0) {\n      let tempDataArray: any = [];\n      data?.forEach((item, index) => {\n        if (item.values) {\n          const tempData = item.values.map((item) => {\n            if (title === \"CPU\") {\n              return {\n                xData: modifyTimestamp(item[0]),\n                [`value${index}`]: Number(item[1]),\n              };\n            } else {\n              return {\n                xData: modifyTimestamp(item[0]),\n                [`value${index}`]: Number(item[1]) / 1024 / 1024,\n              };\n            }\n          });\n          tempDataArray.push(tempData);\n        }\n      });\n      setChartData(mergeArrays(tempDataArray));\n    }\n    if (!data[dataNumber - 1]?.values) return;\n    setChartData(\n      data[dataNumber - 1]?.values.map((item) => {\n        if (title === \"CPU\") {\n          return {\n            xData: item[0] * 1000,\n            value0: Number(item[1]),\n          };\n        } else {\n          return {\n            xData: item[0] * 1000,\n            value0: Number(item[1]) / 1024 / 1024,\n          };\n        }\n      }),\n    );\n  }, [data, dataNumber, title]);\n\n  const tickFormatter = (val: string) => {\n    const formattedTick = val.toString();\n    if (longestTick.length < formattedTick.length) {\n      onLongestTickChange(formattedTick);\n    }\n    return val;\n  };\n\n  return (\n    <div className={className}>\n      <div className=\"mb-3 flex justify-between font-medium text-grayModern-900\">\n        <span className={clsx(\"flex items-center\")}>\n          <div className=\"mr-2 h-3 w-1 whitespace-nowrap rounded-xl bg-primary-600\" />\n          {title}\n        </span>\n        {setDataNumber && podsArray && podsArray.length > 0 && (\n          <Menu>\n            <MenuButton className=\"text-grayModern-600\">\n              {podsArray[dataNumber]}\n              {podsArray.length > 1 && <ChevronDownIcon />}\n            </MenuButton>\n            {podsArray.length > 1 && (\n              <MenuList>\n                {podsArray.map((pod, index) => (\n                  <MenuItemOption\n                    key={index}\n                    value={String(index)}\n                    onClick={() => setDataNumber(index)}\n                    className=\"!px-0 !text-grayModern-600\"\n                  >\n                    {pod}\n                  </MenuItemOption>\n                ))}\n              </MenuList>\n            )}\n          </Menu>\n        )}\n      </div>\n      <ResponsiveContainer width=\"100%\" height=\"100%\">\n        <AreaChart data={chartData} margin={{ top: 6 }} syncId=\"sync\">\n          <CartesianGrid stroke=\"#f5f5f5\" vertical={false} />\n          <XAxis\n            dataKey=\"xData\"\n            type=\"number\"\n            fontSize=\"10\"\n            color=\"#9CA2A8\"\n            tickFormatter={(value) => formatDate(new Date(value)).split(\" \")[1]}\n            tickCount={10}\n            domain={[Date.now() - 60 * 60 * 1000, Date.now()]}\n            stroke=\"#C0C2D2\"\n          />\n          <YAxis\n            fontSize=\"10\"\n            stroke=\"#9CA2A8\"\n            width={longestTick.length * 8 + 8}\n            tickFormatter={tickFormatter}\n          />\n          <ReferenceLine\n            y={maxValue}\n            strokeDasharray=\"3 3\"\n            className=\"text-[10px]\"\n            label={maxValue + \" \" + unit}\n            ifOverflow=\"extendDomain\"\n          />\n          {dataNumber === 0 && podsArray.length > 1 ? (\n            <>\n              <Tooltip\n                formatter={(value, index) => [\n                  podsArray[extractNumber(index as string) + 1] +\n                    \": \" +\n                    Number(value).toFixed(3) +\n                    unit,\n                ]}\n                labelFormatter={(value) => formatDate(new Date(value)).split(\" \")[1]}\n                labelStyle={{ color: \"#24282C\" }}\n                contentStyle={{ fontFamily: \"Consolas\", opacity: 0.75 }}\n              />\n              {data?.map((item, index) => {\n                return (\n                  <Area\n                    key={index}\n                    type=\"monotone\"\n                    dataKey={`value${index}`}\n                    stroke={strokeColorArray[index]}\n                    fill={fillColor}\n                    strokeWidth={2}\n                  />\n                );\n              })}\n            </>\n          ) : (\n            <>\n              <Tooltip\n                formatter={(value, index) => [Number(value).toFixed(3) + unit]}\n                labelFormatter={(value) => formatDate(new Date(value)).split(\" \")[1]}\n                labelStyle={{ color: \"#24282C\" }}\n                contentStyle={{ fontFamily: \"Consolas\", opacity: 0.75 }}\n              />\n              <Area\n                type=\"monotone\"\n                dataKey=\"value0\"\n                stroke={strokeColor}\n                fill={fillColor}\n                strokeWidth={2}\n              />\n            </>\n          )}\n        </AreaChart>\n      </ResponsiveContainer>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/AppMonitor/PieCard/index.tsx",
    "content": "import React, { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport clsx from \"clsx\";\nimport { Cell, Legend, Pie, PieChart, ResponsiveContainer } from \"recharts\";\n\nimport { formatSize, uniformCapacity } from \"@/utils/format\";\n\nexport default function PieCard(props: {\n  data: any[];\n  maxValue: number;\n  title: string;\n  colors: string[];\n  heightClass?: string;\n}) {\n  const { t } = useTranslation();\n  const { data, maxValue, title, colors, heightClass } = props;\n  const usedData = uniformCapacity(data[0]?.value[1]) || 0;\n  const percentage = (usedData / maxValue) * 100;\n  const pieData = useMemo(\n    () =>\n      [\n        { name: `${t(\"Used\")}`, value: usedData },\n        { name: `${t(\"Remaining\")}`, value: maxValue - usedData },\n      ].filter((item) => item.value >= 0),\n    [maxValue, t, usedData],\n  );\n\n  const renderLegend = (props: any) => {\n    const { payload } = props;\n    return (\n      <ul className=\"absolute -top-14 right-0 w-24\">\n        {payload.map((entry: any, index: number) => (\n          <div className=\"font-medium text-grayModern-900\" key={index}>\n            <span className=\"mt-3 flex items-center\">\n              <span\n                className={`mr-1 h-2 w-2 rounded-full`}\n                style={{ background: entry.color }}\n              ></span>\n              <p>{entry.value}</p>\n            </span>\n            <p className=\"text-nowrap ml-3 mt-1\">\n              {formatSize(pieData[index]?.value * 1024 * 1024)}\n            </p>\n          </div>\n        ))}\n      </ul>\n    );\n  };\n  return (\n    <div\n      className={clsx(\n        heightClass || \"h-1/2\",\n        \"mb-2 rounded-xl border border-grayModern-200 bg-[#F8FAFB] p-4\",\n      )}\n    >\n      <span className={clsx(\"flex items-center font-medium text-grayModern-900\")}>\n        <div className=\"mr-2 h-3 w-1 whitespace-nowrap rounded-xl bg-primary-600\" />\n        {title}\n      </span>\n      <ResponsiveContainer>\n        <PieChart>\n          <Pie\n            data={pieData}\n            innerRadius={50}\n            outerRadius={60}\n            startAngle={90}\n            cx=\"34%\"\n            endAngle={-270}\n            legendType=\"circle\"\n            dataKey=\"value\"\n          >\n            {pieData.map((entry, index) => (\n              <Cell key={`cell-${index}`} fill={colors[index]} />\n            ))}\n          </Pie>\n          <text\n            x=\"36%\"\n            y=\"50%\"\n            textAnchor=\"middle\"\n            dominantBaseline=\"middle\"\n            style={{ fontSize: \"24px\", fontWeight: \"bold\", userSelect: \"none\" }}\n          >\n            {!percentage ? \"0.00\" : percentage.toFixed(2)} %\n          </text>\n          <Legend align=\"right\" verticalAlign=\"middle\" layout=\"vertical\" content={renderLegend} />\n        </PieChart>\n      </ResponsiveContainer>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/AppMonitor/index.tsx",
    "content": "import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Center, Spinner } from \"@chakra-ui/react\";\nimport { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\n\nimport { ErrorIcon } from \"@/components/CommonIcon\";\n\nimport { MonitorDataType } from \"../../../mods/StatusBar/MonitorBar\";\n\nimport AreaCard from \"./AreaCard\";\nimport PieCard from \"./PieCard\";\n\nimport { MonitorControllerGetData } from \"@/apis/v1/monitor\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function AppMonitor() {\n  const { t } = useTranslation();\n  const { currentApp } = useGlobalStore();\n  const { limitCPU, limitMemory, databaseCapacity, storageCapacity, dedicatedDatabase } =\n    currentApp.bundle.resource;\n  const dedicatedDatabaseCPU = dedicatedDatabase?.limitCPU;\n\n  const [dataNumber, setDataNumber] = useState(0);\n  const queryClient = useQueryClient();\n\n  const { isLoading, data: monitorData } = useQuery(\n    [\"useGetMonitorDataQuery\"],\n    () => {\n      return MonitorControllerGetData({\n        q: MonitorDataType,\n        step: 60,\n        type: \"range\",\n      });\n    },\n    {\n      refetchInterval: 60000,\n    },\n  );\n\n  const podsArray = useMemo(() => {\n    const cpuData = monitorData?.data?.cpuUsage?.map((item: any) => item.metric.pod);\n    const memoryData = monitorData?.data?.memoryUsage?.map((item: any) => item.metric.pod);\n    if (!cpuData) return [t(\"All\")];\n    if (cpuData.length === 1 && memoryData.length === 1) return cpuData;\n    return cpuData.length > memoryData.length ? [t(\"All\"), ...cpuData] : [t(\"All\"), ...memoryData];\n  }, [monitorData, t]);\n\n  const [longestTick, setLongestTick] = useState(\"\");\n\n  return (\n    <div className=\"flex w-full\">\n      {isLoading ? (\n        <Center className=\"h-[400px] w-full\">\n          <Spinner />\n        </Center>\n      ) : monitorData?.data && Object.keys(monitorData?.data).length !== 0 ? (\n        <>\n          <div className=\"mr-4 mt-10 h-[440px] w-full rounded-xl border bg-[#F8FAFB] pb-4\">\n            <AreaCard\n              data={monitorData?.data?.cpuUsage}\n              strokeColor=\"#47C8BF\"\n              fillColor=\"#E6F6F6\"\n              setDataNumber={setDataNumber}\n              dataNumber={dataNumber}\n              podsArray={podsArray}\n              title=\"CPU\"\n              unit=\"Core\"\n              maxValue={limitCPU / 1000}\n              className=\"h-1/2 p-4\"\n              longestTick={longestTick}\n              onLongestTickChange={(val) => setLongestTick(val)}\n            />\n            <AreaCard\n              data={monitorData?.data?.memoryUsage}\n              strokeColor=\"#9A8EE0\"\n              fillColor=\"#F2F1FB\"\n              title={t(\"Spec.RAM\")}\n              unit=\"MB\"\n              podsArray={podsArray}\n              maxValue={limitMemory}\n              dataNumber={dataNumber}\n              className=\"h-1/2 p-4\"\n              longestTick={longestTick}\n              onLongestTickChange={(val) => setLongestTick(val)}\n            />\n          </div>\n          <div\n            className={clsx(\n              \"mr-2\",\n              \"mt-10\",\n              !dedicatedDatabaseCPU ? \"h-[423px]\" : \"h-[440px]\",\n              \"w-full\",\n              \"space-y-4\",\n              \"pb-0\",\n            )}\n          >\n            {!dedicatedDatabaseCPU ? (\n              <>\n                <PieCard\n                  data={monitorData?.data?.databaseUsage}\n                  maxValue={databaseCapacity}\n                  title={t(\"Spec.Database\")}\n                  colors={[\"#47C8BF\", \"#D5D6E1\"]}\n                />\n                <PieCard\n                  data={monitorData?.data?.storageUsage}\n                  maxValue={storageCapacity}\n                  title={t(\"Spec.Storage\")}\n                  colors={[\"#9A8EE0\", \"#D5D6E1\"]}\n                />\n              </>\n            ) : (\n              <PieCard\n                data={monitorData?.data?.storageUsage}\n                maxValue={storageCapacity}\n                title={t(\"Spec.Storage\")}\n                colors={[\"#9A8EE0\", \"#D5D6E1\"]}\n                heightClass=\"h-full\"\n              />\n            )}\n          </div>\n        </>\n      ) : (\n        <Center className=\"h-[400px] w-full\">\n          <span className=\"flex flex-col items-center\">\n            <ErrorIcon boxSize={16} />\n            <span className=\"flex pt-2 text-xl\">\n              <p className=\"\">{t(\"Error\")}</p>\n              <u\n                className=\"cursor-pointer text-primary-600\"\n                onClick={async () => {\n                  await queryClient.invalidateQueries({\n                    queryKey: [\"useGetMonitorDataQuery\"],\n                    refetchType: \"all\",\n                  });\n                }}\n              >\n                {t(\"Retry\")}\n              </u>\n            </span>\n          </span>\n        </Center>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/CommonSetting/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button, Divider, HStack, Select, Switch, useColorMode, VStack } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport useCustomSettingStore from \"@/pages/customSetting\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nconst fontSizes = [12, 13, 14, 15, 16, 17, 18, 19, 20];\n\nexport default function CommonSetting() {\n  const { setCommonSettings, commonSettings } = useCustomSettingStore();\n  const [currentCommonSettings, setCurrentCommonSettings] = useState(commonSettings);\n  const { showSuccess } = useGlobalStore((state) => state);\n  const handleSave = () => {\n    setCommonSettings(currentCommonSettings);\n    showSuccess(t(\"SavedSuccessfully\"));\n  };\n  const { t } = useTranslation();\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  return (\n    <div className=\"ml-12 mr-16\">\n      <div className=\"mt-8\">\n        <header className=\"text-xl font-medium\">{t(\"SettingPanel.Editor\")}</header>\n        <VStack spacing={3} pt={3}>\n          <HStack justifyContent=\"space-between\" w=\"full\">\n            <span\n              className={clsx(\n                \"text-[13px]\",\n                darkMode ? \"text-grayModern-200\" : \"text-grayModern-700\",\n              )}\n            >\n              {t(\"SettingPanel.isOpenLanguageServer\")}\n            </span>\n            <Switch\n              defaultChecked={currentCommonSettings.useLSP}\n              onChange={() => {\n                setCurrentCommonSettings({\n                  ...currentCommonSettings,\n                  useLSP: !currentCommonSettings.useLSP,\n                });\n              }}\n              variant={\"primary\"}\n              colorScheme=\"primary\"\n            />\n          </HStack>\n          <HStack justifyContent=\"space-between\" w=\"full\">\n            <span\n              className={clsx(\n                \"text-[13px]\",\n                darkMode ? \"text-grayModern-200\" : \"text-grayModern-700\",\n              )}\n            >\n              {t(\"SettingPanel.AICompletion\")}\n            </span>\n            <Switch\n              defaultChecked={currentCommonSettings.useCopilot}\n              onChange={() => {\n                setCurrentCommonSettings({\n                  ...currentCommonSettings,\n                  useCopilot: !currentCommonSettings.useCopilot,\n                });\n              }}\n              variant={\"primary\"}\n              colorScheme=\"primary\"\n            />\n          </HStack>\n          <HStack justifyContent=\"space-between\" w=\"full\">\n            <span\n              className={clsx(\n                \"text-[13px]\",\n                darkMode ? \"text-grayModern-200\" : \"text-grayModern-700\",\n              )}\n            >\n              {t(\"SettingPanel.FontSize\")}\n            </span>\n            <Select\n              w=\"24\"\n              className={clsx(\n                \"!h-7 !border-frostyNightfall-200\",\n                darkMode ? \"\" : \"!bg-lafWhite-500\",\n              )}\n              value={currentCommonSettings.fontSize}\n              onChange={(e) =>\n                setCurrentCommonSettings({\n                  ...currentCommonSettings,\n                  fontSize: Number(e.target.value),\n                })\n              }\n            >\n              {fontSizes.map((size) => {\n                return (\n                  <option key={size} value={size}>\n                    {size}\n                  </option>\n                );\n              })}\n            </Select>\n          </HStack>\n        </VStack>\n      </div>\n      <Divider className=\"my-8\" />\n      <div>\n        <header className=\"text-xl font-medium\">{t(\"SettingPanel.FuncList\")}</header>\n        <VStack spacing={3} pt={3}>\n          <HStack justifyContent=\"space-between\" w=\"full\">\n            <span\n              className={clsx(\n                \"text-[13px]\",\n                darkMode ? \"text-grayModern-200\" : \"text-grayModern-700\",\n              )}\n            >\n              {t(\"SettingPanel.ListDisplay\")}\n            </span>\n            <Select\n              w=\"24\"\n              className={clsx(\n                \"!h-7 !border-frostyNightfall-200\",\n                darkMode ? \"\" : \"!bg-lafWhite-500\",\n              )}\n              value={currentCommonSettings.funcListDisplay}\n              onChange={(e) =>\n                setCurrentCommonSettings({\n                  ...currentCommonSettings,\n                  funcListDisplay: e.target.value,\n                })\n              }\n            >\n              <option value=\"name\">{t(\"SettingModal.FunctionName\")}</option>\n              <option value=\"desc\">{t(\"SettingModal.FunctionDesc\")}</option>\n              <option value=\"desc-name\">{t(\"SettingModal.FunctionDesc_Name\")}</option>\n              <option value=\"name-desc\">{t(\"SettingModal.FunctionName_Desc\")}</option>\n            </Select>\n          </HStack>\n        </VStack>\n      </div>\n      <Button\n        className=\"mt-12 !h-9 w-48 !bg-primary-600 hover:!bg-primary-700\"\n        onClick={handleSave}\n      >\n        {t(\"Save\")}\n      </Button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/CustomDomain/index.tsx",
    "content": "import React from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { Trans } from \"react-i18next\";\nimport {\n  Button,\n  FormControl,\n  FormLabel,\n  Input,\n  InputGroup,\n  InputRightAddon,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { CopyIcon } from \"@/components/CommonIcon\";\nimport CopyText from \"@/components/CopyText\";\n\nimport { useBindDomainMutation, useRemoveApplicationMutation } from \"./service\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function CustomDomain() {\n  const { currentApp, showSuccess, setCurrentApp, showWarning } = useGlobalStore();\n\n  const { register, handleSubmit } = useForm<{ domain: string }>({\n    defaultValues: { domain: currentApp?.domain?.customDomain || \"\" },\n  });\n\n  const bindDomainMutation = useBindDomainMutation();\n  const removeDomainMutation = useRemoveApplicationMutation();\n\n  return (\n    <>\n      <div className=\"w-full pt-12 text-center text-xl font-medium\">\n        {t(\"StoragePanel.CustomApplicationDomain\")}\n      </div>\n      <div className=\"m-auto w-[360px] pt-6\">\n        <FormControl>\n          <FormLabel>CNAME</FormLabel>\n          <InputGroup>\n            <Input variant=\"filled\" value={currentApp?.domain?.domain} readOnly />\n            <InputRightAddon\n              children={\n                <CopyText text={currentApp?.domain?.domain}>\n                  <span>\n                    <CopyIcon color={\"#BDC1C5\"} size={14} />\n                  </span>\n                </CopyText>\n              }\n            />\n          </InputGroup>\n        </FormControl>\n        <FormControl className=\"py-4\">\n          <FormLabel htmlFor=\"domain\">{t(\"StoragePanel.domain\")}</FormLabel>\n          <Input\n            {...register(\"domain\", {\n              required: true,\n            })}\n            variant=\"filled\"\n            placeholder={String(t(\"StoragePanel.domainTip\"))}\n          />\n        </FormControl>\n        <span>\n          <Trans\n            t={t}\n            i18nKey=\"StoragePanel.cnameTip\"\n            values={{\n              cnameDomain: currentApp?.domain?.domain,\n            }}\n          />\n        </span>\n        <div className=\"flex justify-between pt-8\">\n          <Button\n            variant={\"warn\"}\n            width={\"180px\"}\n            onClick={async () => {\n              const res: any = await removeDomainMutation.mutateAsync({});\n              if (res.data) {\n                setCurrentApp({ ...currentApp, domain: res.data });\n                showSuccess(t(\"StoragePanel.DomainDeleteSuccess\"));\n              }\n            }}\n            className=\"mr-4\"\n          >\n            {t(\"Delete\")}\n          </Button>\n          <Button\n            type=\"submit\"\n            width={\"180px\"}\n            isLoading={bindDomainMutation.isLoading}\n            onClick={handleSubmit(async (value) => {\n              const res: any = await bindDomainMutation.mutateAsync({\n                domain: value.domain,\n              });\n              if (res.data) {\n                setCurrentApp({ ...currentApp, domain: res.data });\n                showSuccess(t(\"StoragePanel.DomainUpdateSuccess\"));\n              } else if (res.error === \"domain not resolved\") {\n                showWarning(t(\"StoragePanel.DomainNotResolved\"));\n              }\n            })}\n          >\n            {t(\"Confirm\")}\n          </Button>\n        </div>\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/CustomDomain/service.ts",
    "content": "import { useMutation } from \"@tanstack/react-query\";\n\nimport {\n  ApplicationControllerBindDomain,\n  ApplicationControllerCheckResolved,\n  ApplicationControllerRemove,\n} from \"@/apis/v1/applications\";\n\nexport const useBindDomainMutation = (config?: { onSuccess: (data: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return ApplicationControllerBindDomain(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          config?.onSuccess && config.onSuccess(data);\n        }\n      },\n    },\n  );\n};\n\nexport const useCheckResolvedMutation = (config?: { onSuccess: (data: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return ApplicationControllerCheckResolved(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          config?.onSuccess && config.onSuccess(data);\n        }\n      },\n    },\n  );\n};\n\nexport const useRemoveApplicationMutation = (config?: { onSuccess: (data: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return ApplicationControllerRemove(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          config?.onSuccess && config.onSuccess(data);\n        }\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/DatabaseMonitor/AreaCard/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { ChevronDownIcon } from \"@chakra-ui/icons\";\nimport { Menu, MenuButton, MenuItemOption, MenuList } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\nimport {\n  Area,\n  AreaChart,\n  CartesianGrid,\n  ReferenceLine,\n  ResponsiveContainer,\n  Tooltip,\n  XAxis,\n  YAxis,\n} from \"recharts\";\n\nimport { formatDate } from \"@/utils/format\";\n\nimport { TCpuUsageData } from \"@/apis/typing\";\n\nconst strokeColorArray = [\n  \"#47C8BF\",\n  \"#9A8EE0\",\n  \"#FFA100\",\n  \"#FF4D4F\",\n  \"#52C41A\",\n  \"#1890FF\",\n  \"#FF7A45\",\n  \"#FFC53D\",\n  \"#FF85C0\",\n  \"#A0D911\",\n  \"#13C2C2\",\n  \"#2F54EB\",\n  \"#EB2F96\",\n  \"#F5222D\",\n  \"#FAAD14\",\n  \"#722ED1\",\n  \"#13C2C2\",\n  \"#1890FF\",\n  \"#722ED1\",\n  \"#FAAD14\",\n];\n\nconst generateChartData = () => {\n  const now = new Date();\n  now.setSeconds(0, 0);\n  const startTime = now.getTime() - 59 * 60 * 1000;\n  return Array(60)\n    .fill({ xData: 0 })\n    .map((_, i) => ({ xData: startTime + i * 60 * 1000 }));\n};\n\ntype DataPoint = {\n  xData: number;\n  [key: string]: number | undefined;\n};\n\nfunction mergeArrays(dataArrays: (DataPoint[] | null)[]): DataPoint[] {\n  const baseChartData = generateChartData();\n  return baseChartData.map((basePoint) => {\n    const mergedPoint: DataPoint = { xData: basePoint.xData };\n    dataArrays.forEach((arr) => {\n      if (!arr || arr.length === 0) return;\n      const matchingPoint = arr.find((p) => p.xData === basePoint.xData);\n      if (matchingPoint) {\n        Object.keys(matchingPoint).forEach((key) => {\n          if (key !== \"xData\") {\n            mergedPoint[key] = matchingPoint[key] ?? 0;\n          }\n        });\n      } else {\n        Object.keys(arr[0]).forEach((key) => {\n          if (key !== \"xData\") {\n            mergedPoint[key] = undefined;\n          }\n        });\n      }\n    });\n    return mergedPoint;\n  });\n}\n\nfunction getLineName(data: any) {\n  if (data.metric.state && data.metric.pod) {\n    return `${data.metric.pod}-${data.metric.state}`;\n  }\n  if (data.metric.type && data.metric.pod) {\n    return `${data.metric.pod}-${data.metric.type}`;\n  }\n  if (data.metric.pod) {\n    return `${data.metric.pod}`;\n  }\n  return \"yData\";\n}\n\nconst modifyTimestamp = (t: number) => {\n  let date = new Date(t * 1000); // 将秒级时间戳转换为毫秒级\n  date.setSeconds(0, 0); // 设置秒和毫秒都为0\n  return date.getTime(); // 返回修改后的毫秒级时间戳\n};\n\nexport default function AreaCard(props: {\n  data: TCpuUsageData;\n  strokeColor: string;\n  fillColor: string;\n  setPodName?: (value: string) => void;\n  podName: string | null;\n  podList: string[];\n  title: string;\n  maxValue: number;\n  unit: string;\n  className?: string;\n  syncId: string;\n  longestTick: string;\n  onLongestTickChange: (val: string) => void;\n}) {\n  const {\n    data,\n    fillColor,\n    setPodName,\n    podName,\n    podList,\n    title,\n    maxValue,\n    unit,\n    className,\n    syncId,\n    longestTick,\n    onLongestTickChange,\n  } = props;\n  const [chartData, setChartData] = useState<any[]>([]);\n  useEffect(() => {\n    if (podName === t(\"All\")) {\n      const tempDataArray: any = [];\n      data?.forEach((item, index) => {\n        const lineName = getLineName(item);\n        if (item.values) {\n          const tempData = item.values.map((item) => {\n            if (title === t(\"Spec.RAM\")) {\n              return {\n                xData: modifyTimestamp(item[0]),\n                [lineName]: Number(item[1]) / 1024 / 1024,\n              };\n            }\n            return {\n              xData: modifyTimestamp(item[0]),\n              [lineName]: Number(item[1]),\n            };\n          });\n          tempDataArray.push(tempData);\n        }\n      });\n      setChartData(mergeArrays(tempDataArray));\n    } else {\n      const tempDataArray: any = [];\n      data?.forEach((item, index) => {\n        const lineName = getLineName(item);\n        if (item.metric.pod === podName && item.values) {\n          const tempData = item.values.map((item) => {\n            if (title === t(\"Spec.RAM\")) {\n              return {\n                xData: modifyTimestamp(item[0]),\n                [lineName]: Number(item[1]) / 1024 / 1024,\n              };\n            }\n            return {\n              xData: modifyTimestamp(item[0]),\n              [lineName]: Number(item[1]),\n            };\n          });\n          tempDataArray.push(tempData);\n        }\n      });\n      setChartData(mergeArrays(tempDataArray));\n    }\n  }, [data, podName, title]);\n\n  const tickFormatter = (val: string) => {\n    const formattedTick = val.toString();\n    if (longestTick.length < formattedTick.length) {\n      onLongestTickChange(formattedTick);\n    }\n    return val;\n  };\n\n  return (\n    <div className={className}>\n      <div className=\"mb-3 flex justify-between font-medium text-grayModern-900\">\n        <span className={clsx(\"flex items-center\")}>\n          <div className=\"mr-2 h-3 w-1 whitespace-nowrap rounded-xl bg-primary-600\" />\n          {title}\n        </span>\n        {setPodName && podList && podList.length > 1 && (\n          <Menu>\n            <MenuButton className=\"text-grayModern-600\">\n              {podName}\n              {podList.length > 1 && <ChevronDownIcon />}\n            </MenuButton>\n            {podList.length > 1 && (\n              <MenuList>\n                {podList.map((podName, index) => (\n                  <MenuItemOption\n                    key={index}\n                    onClick={() => setPodName(podName)}\n                    className=\"!px-0 !text-grayModern-600\"\n                  >\n                    {podName}\n                  </MenuItemOption>\n                ))}\n              </MenuList>\n            )}\n          </Menu>\n        )}\n      </div>\n      <ResponsiveContainer width=\"100%\" height=\"100%\">\n        <AreaChart\n          data={chartData}\n          margin={{ top: 6 }}\n          {...(syncId !== \"\" ? { syncId: syncId } : {})}\n        >\n          <CartesianGrid stroke=\"#f5f5f5\" vertical={false} />\n          <XAxis\n            dataKey=\"xData\"\n            type=\"number\"\n            fontSize=\"10\"\n            color=\"#9CA2A8\"\n            tickFormatter={(value) => formatDate(new Date(value)).split(\" \")[1]}\n            tickCount={10}\n            domain={[Date.now() - 60 * 60 * 1000, Date.now()]}\n            stroke=\"#C0C2D2\"\n          />\n          <YAxis\n            fontSize=\"10\"\n            stroke=\"#9CA2A8\"\n            width={longestTick.length * 8 + 8}\n            tickFormatter={tickFormatter}\n          />\n\n          {maxValue !== 0 && (\n            <ReferenceLine\n              y={maxValue}\n              strokeDasharray=\"3 3\"\n              className=\"text-[10px]\"\n              label={`${maxValue} ${unit}`}\n              ifOverflow=\"extendDomain\"\n            />\n          )}\n\n          {podName === t(\"All\") && podList.length > 1 ? (\n            <>\n              <Tooltip\n                formatter={(value, index) => [index + \": \" + Number(value).toFixed(3) + unit]}\n                labelFormatter={(value) => formatDate(new Date(value)).split(\" \")[1]}\n                labelStyle={{ color: \"#24282C\" }}\n                contentStyle={{ fontFamily: \"Consolas\", opacity: 0.75 }}\n                wrapperStyle={{ zIndex: 100, position: \"absolute\" }}\n              />\n              {data?.map((item, index) => {\n                return (\n                  <Area\n                    key={index}\n                    type=\"monotone\"\n                    dataKey={getLineName(item)}\n                    stroke={strokeColorArray[index]}\n                    fill={fillColor}\n                    strokeWidth={2}\n                  />\n                );\n              })}\n            </>\n          ) : (\n            <>\n              <Tooltip\n                formatter={(value, index) => [index + \": \" + Number(value).toFixed(3) + unit]}\n                labelFormatter={(value) => formatDate(new Date(value)).split(\" \")[1]}\n                labelStyle={{ color: \"#24282C\" }}\n                contentStyle={{ fontFamily: \"Consolas\", opacity: 0.75 }}\n                wrapperStyle={{ zIndex: 100 }}\n              />\n              {data?.map((item, index) => {\n                if (item.metric.pod === podName) {\n                  return (\n                    <Area\n                      key={index}\n                      type=\"monotone\"\n                      dataKey={getLineName(item)}\n                      stroke={strokeColorArray[index]}\n                      fill={fillColor}\n                      strokeWidth={2}\n                    />\n                  );\n                } else {\n                  return null;\n                }\n              })}\n            </>\n          )}\n        </AreaChart>\n      </ResponsiveContainer>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/DatabaseMonitor/PieCard/index.tsx",
    "content": "import React, { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport clsx from \"clsx\";\nimport { Cell, Legend, Pie, PieChart, ResponsiveContainer } from \"recharts\";\n\nimport { uniformCapacity } from \"@/utils/format\";\n\nexport default function PieCard(props: {\n  data: any[];\n  maxValue: number;\n  title: string;\n  colors: string[];\n  appid?: string;\n}) {\n  const { t } = useTranslation();\n  const { data, maxValue, title, colors, appid } = props;\n  const usedData =\n    uniformCapacity(data.find((item) => item.metric.database === appid)?.value[1]) || 0;\n  const percentage = (usedData / maxValue) * 100;\n  const pieData = useMemo(\n    () =>\n      [\n        { name: `${t(\"Used\")}`, value: usedData },\n        { name: `${t(\"Remaining\")}`, value: maxValue - usedData },\n      ].filter((item) => item.value >= 0),\n    [maxValue, t, usedData],\n  );\n\n  const renderLegend = (props: any) => {\n    const { payload } = props;\n    return (\n      <ul className=\"absolute -top-14 right-0 w-24\">\n        {payload.map((entry: any, index: number) => (\n          <div className=\"font-medium text-grayModern-900\" key={index}>\n            <span className=\"mt-3 flex items-center\">\n              <span\n                className={`mr-1 h-2 w-2 rounded-full`}\n                style={{ background: entry.color }}\n              ></span>\n              <p>{entry.value}</p>\n            </span>\n            <p className=\"text-nowrap ml-3 mt-1\">{(pieData[index]?.value).toFixed(3)} MB</p>\n          </div>\n        ))}\n      </ul>\n    );\n  };\n\n  return (\n    <div className=\"mb-2 h-full  rounded-xl border border-grayModern-200  bg-[#F8FAFB] p-4\">\n      <span className={clsx(\"flex items-center font-medium text-grayModern-900\")}>\n        <div className=\"mr-2 h-3 w-1 whitespace-nowrap rounded-xl bg-primary-600\" />\n        {title}\n      </span>\n      <ResponsiveContainer>\n        <PieChart>\n          <Pie\n            data={pieData}\n            innerRadius={50}\n            outerRadius={60}\n            startAngle={90}\n            cx=\"34%\"\n            endAngle={-270}\n            legendType=\"circle\"\n            dataKey=\"value\"\n          >\n            {pieData.map((entry, index) => (\n              <Cell key={`cell-${index}`} fill={colors[index]} />\n            ))}\n          </Pie>\n          <text\n            x=\"36%\"\n            y=\"50%\"\n            textAnchor=\"middle\"\n            dominantBaseline=\"middle\"\n            style={{ fontSize: \"24px\", fontWeight: \"bold\", userSelect: \"none\" }}\n          >\n            {!percentage ? \"0.00\" : percentage.toFixed(2)} %\n          </text>\n          <Legend align=\"right\" verticalAlign=\"middle\" layout=\"vertical\" content={renderLegend} />\n        </PieChart>\n      </ResponsiveContainer>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/DatabaseMonitor/index.tsx",
    "content": "import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Center, Spinner } from \"@chakra-ui/react\";\nimport { Tab, TabList, TabPanel, TabPanels, Tabs } from \"@chakra-ui/react\";\nimport { useQuery, useQueryClient } from \"@tanstack/react-query\";\n\nimport { ErrorIcon } from \"@/components/CommonIcon\";\n\nimport AreaCard from \"./AreaCard\";\nimport PieCard from \"./PieCard\";\n\nimport {\n  DedicatedDatabaseMonitorControllerGetConnection,\n  DedicatedDatabaseMonitorControllerGetPerformance,\n  DedicatedDatabaseMonitorControllerGetResource,\n} from \"@/apis/v1/apps\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function DatabaseMonitor() {\n  const { t } = useTranslation();\n  const { currentApp } = useGlobalStore();\n  const {\n    dedicatedDatabase: { limitCPU, limitMemory, capacity },\n  } = currentApp.bundle.resource;\n\n  const appid = currentApp.bundle.appid;\n\n  const [podName, setPodName] = useState(t(\"All\"));\n  const queryClient = useQueryClient();\n\n  const { isLoading: isConnectionLoading, data: connectionData } = useQuery(\n    [\"dedicatedDatabaseMonitorControllerGetConnection\"],\n    () => {\n      return DedicatedDatabaseMonitorControllerGetConnection({});\n    },\n    {\n      refetchInterval: 60000,\n    },\n  );\n\n  const { isLoading: isResourceLoading, data: resourceData } = useQuery(\n    [\"dedicatedDatabaseMonitorControllerGetResource\"],\n    () => {\n      return DedicatedDatabaseMonitorControllerGetResource({});\n    },\n    {\n      refetchInterval: 60000,\n    },\n  );\n\n  const { isLoading: isPerformanceLoading, data: performanceData } = useQuery(\n    [\"dedicatedDatabaseMonitorControllerGetPerformance\"],\n    () => {\n      return DedicatedDatabaseMonitorControllerGetPerformance({});\n    },\n    {\n      refetchInterval: 60000,\n    },\n  );\n\n  const cpuData: {\n    metric: Record<string, string>;\n    values: Array<[number, string]>;\n  }[] = resourceData?.data?.cpu;\n  const memoryData: {\n    metric: Record<string, string>;\n    values: Array<[number, string]>;\n  }[] = resourceData?.data?.memory;\n\n  const podList = useMemo(() => {\n    if (!cpuData || !memoryData) return [];\n    const cpuPods = cpuData.map((item) => item.metric.pod);\n    const memoryPods = memoryData.map((item) => item.metric.pod);\n\n    const combinedPods = [...cpuPods, ...memoryPods];\n    const uniquePods = [...new Set(combinedPods)];\n    if (!uniquePods || uniquePods.length === 0) return [t(\"All\")];\n    return [t(\"All\"), ...uniquePods];\n  }, [cpuData, memoryData, t]);\n\n  const [longestTick, setLongestTick] = useState(\"\");\n  const [longestTick1, setLongestTick1] = useState(\"\");\n\n  return (\n    <Tabs variant=\"enclosed\" isLazy={true}>\n      <TabList>\n        <Tab>{t(\"DatabaseMonitor.Resource\")}</Tab>\n        <Tab>{t(\"DatabaseMonitor.Performance\")}</Tab>\n      </TabList>\n      <TabPanels>\n        <TabPanel>\n          <div className=\"flex w-full\">\n            {isConnectionLoading || isResourceLoading ? (\n              <Center className=\"h-[430px] w-full\">\n                <Spinner />\n              </Center>\n            ) : connectionData?.data &&\n              Object.keys(connectionData?.data).length !== 0 &&\n              resourceData?.data &&\n              Object.keys(resourceData?.data).length !== 0 ? (\n              <>\n                <div className=\"mr-3 mt-5 h-[430px] w-full rounded-xl border bg-[#F8FAFB] pb-4\">\n                  <AreaCard\n                    data={resourceData?.data?.cpu}\n                    strokeColor=\"#47C8BF\"\n                    fillColor=\"#E6F6F6\"\n                    setPodName={setPodName}\n                    podName={podName}\n                    podList={podList}\n                    title=\"CPU\"\n                    unit=\"core\"\n                    maxValue={limitCPU / 1000}\n                    className=\"h-1/3 p-4\"\n                    syncId=\"tab1\"\n                    longestTick={longestTick}\n                    onLongestTickChange={(val) => setLongestTick(val)}\n                  />\n                  <AreaCard\n                    data={resourceData?.data?.memory}\n                    strokeColor=\"#9A8EE0\"\n                    fillColor=\"#F2F1FB\"\n                    title={t(\"Spec.RAM\")}\n                    unit=\"MB\"\n                    podList={podList}\n                    maxValue={limitMemory}\n                    podName={podName}\n                    className=\"h-1/3 p-4\"\n                    syncId=\"tab1\"\n                    longestTick={longestTick}\n                    onLongestTickChange={(val) => setLongestTick(val)}\n                  />\n                  <AreaCard\n                    data={connectionData?.data?.connections}\n                    strokeColor=\"#9A8EE0\"\n                    fillColor=\"#F2F1FB\"\n                    title={t(\"DatabaseMonitor.Connections\")}\n                    unit=\"\"\n                    podList={podList}\n                    maxValue={0}\n                    podName={podName}\n                    className=\"h-1/3 p-4\"\n                    syncId=\"tab1\"\n                    longestTick={longestTick}\n                    onLongestTickChange={(val) => setLongestTick(val)}\n                  />\n                </div>\n\n                <div className=\"mt-5 h-[430px] w-full rounded-xl pb-0\">\n                  <PieCard\n                    data={resourceData?.data?.dataSize || []}\n                    maxValue={capacity}\n                    title={t(\"DatabaseMonitor.Capacity\")}\n                    colors={[\"#47C8BF\", \"#D5D6E1\"]}\n                    appid={appid}\n                  />\n                </div>\n              </>\n            ) : (\n              <Center className=\"h-[430px] w-full\">\n                <span className=\"flex flex-col items-center\">\n                  <ErrorIcon boxSize={16} />\n                  <span className=\"flex pt-2 text-xl\">\n                    <p className=\"\">{t(\"Error\")}</p>\n                    <u\n                      className=\"cursor-pointer text-primary-600\"\n                      onClick={async () => {\n                        await queryClient.invalidateQueries({\n                          queryKey: [\n                            \"dedicatedDatabaseMonitorControllerGetResource\",\n                            \"dedicatedDatabaseMonitorControllerGetPerformance\",\n                            \"dedicatedDatabaseMonitorControllerGetConnection\",\n                          ],\n                          refetchType: \"all\",\n                        });\n                      }}\n                    >\n                      {t(\"Retry\")}\n                    </u>\n                  </span>\n                </span>\n              </Center>\n            )}\n          </div>\n        </TabPanel>\n        <TabPanel>\n          <div className=\"flex w-full\">\n            {isPerformanceLoading ? (\n              <Center className=\"h-[430px] w-full\">\n                <Spinner />\n              </Center>\n            ) : performanceData?.data && Object.keys(performanceData?.data).length !== 0 ? (\n              <div className=\"mt-5 h-[430px] w-full rounded-xl border bg-[#F8FAFB] pb-4\">\n                <AreaCard\n                  data={performanceData?.data?.documentOperations}\n                  strokeColor=\"#47C8BF\"\n                  fillColor=\"#E6F6F6\"\n                  setPodName={setPodName}\n                  podName={podName}\n                  podList={podList}\n                  title={t(\"DatabaseMonitor.DocumentOperand\")}\n                  unit=\"\"\n                  maxValue={0}\n                  className=\"h-1/3 p-4\"\n                  syncId=\"\"\n                  longestTick={longestTick1}\n                  onLongestTickChange={(val) => setLongestTick1(val)}\n                />\n                <AreaCard\n                  data={performanceData?.data?.queryOperations}\n                  strokeColor=\"#9A8EE0\"\n                  fillColor=\"#F2F1FB\"\n                  title={t(\"Spec.QueryOperand\")}\n                  unit=\"\"\n                  podList={podList}\n                  maxValue={0}\n                  podName={podName}\n                  className=\"h-1/3 p-4\"\n                  syncId=\"\"\n                  longestTick={longestTick1}\n                  onLongestTickChange={(val) => setLongestTick1(val)}\n                />\n                <AreaCard\n                  data={performanceData?.data?.pageFaults}\n                  strokeColor=\"#9A8EE0\"\n                  fillColor=\"#F2F1FB\"\n                  title={t(\"DatabaseMonitor.PageError\")}\n                  unit=\"\"\n                  podList={podList}\n                  maxValue={0}\n                  podName={podName}\n                  className=\"h-1/3 p-4\"\n                  syncId=\"\"\n                  longestTick={longestTick1}\n                  onLongestTickChange={(val) => setLongestTick1(val)}\n                />\n              </div>\n            ) : (\n              <Center className=\"h-[430px] w-full\">\n                <span className=\"flex flex-col items-center\">\n                  <ErrorIcon boxSize={16} />\n                  <span className=\"flex pt-2 text-xl\">\n                    <p className=\"\">{t(\"Error\")}</p>\n                    <u\n                      className=\"cursor-pointer text-primary-600\"\n                      onClick={async () => {\n                        await queryClient.invalidateQueries({\n                          queryKey: [\n                            \"dedicatedDatabaseMonitorControllerGetResource\",\n                            \"dedicatedDatabaseMonitorControllerGetPerformance\",\n                            \"dedicatedDatabaseMonitorControllerGetConnection\",\n                          ],\n                          refetchType: \"all\",\n                        });\n                      }}\n                    >\n                      {t(\"Retry\")}\n                    </u>\n                  </span>\n                </span>\n              </Center>\n            )}\n          </div>\n        </TabPanel>\n      </TabPanels>\n    </Tabs>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/SysSetting/index.tsx",
    "content": "import React from \"react\";\nimport { useMemo } from \"react\";\nimport { t } from \"i18next\";\n\nimport {\n  CommonSettingIcon,\n  DomainIcon,\n  ENVIcon,\n  MonitorIcon,\n  TextIcon,\n} from \"@/components/CommonIcon\";\nimport { APP_SETTING_KEY } from \"@/constants\";\n\nimport AppEnvList from \"./AppEnvList\";\nimport AppInfoList from \"./AppInfoList\";\nimport AppMonitor from \"./AppMonitor\";\nimport CommonSetting from \"./CommonSetting\";\nimport CustomDomain from \"./CustomDomain\";\nimport DatabaseMonitor from \"./DatabaseMonitor\";\n\nimport { TApplicationDetail } from \"@/apis/typing\";\nimport SettingModal from \"@/pages/app/setting\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function SysSetting(props: {\n  children: React.ReactElement;\n  setApp?: TApplicationDetail;\n  currentTab?: string;\n}) {\n  const { currentApp } = useGlobalStore();\n  const dedicatedDatabaseLimitCPU = currentApp.bundle.resource.dedicatedDatabase?.limitCPU;\n\n  const monitorItems = useMemo(() => {\n    const items = [\n      {\n        key: APP_SETTING_KEY.MONITOR_RUNTIME,\n        name: t(\"SettingPanel.RuntimeMonitor\"),\n        component: <AppMonitor />,\n        icon: <MonitorIcon boxSize={4} />,\n      },\n    ];\n    if (dedicatedDatabaseLimitCPU) {\n      items.push({\n        key: APP_SETTING_KEY.MONITOR_DATABASE,\n        name: t(\"SettingPanel.DatabaseMonitor\"),\n        component: <DatabaseMonitor />,\n        icon: <MonitorIcon boxSize={4} />,\n      });\n    }\n    return items;\n  }, [dedicatedDatabaseLimitCPU]);\n\n  return (\n    <SettingModal\n      setApp={props.setApp}\n      headerTitle={t(\"SettingPanel.Setting\")}\n      currentTab={props.currentTab || \"info\"}\n      tabMatch={[\n        {\n          title: t(\"SettingPanel.SystemSetting\"),\n          items: [\n            {\n              key: APP_SETTING_KEY.INFO,\n              name: t(\"SettingPanel.AppInfo\"),\n              component: <AppInfoList />,\n              icon: <TextIcon boxSize={4} />,\n            },\n            {\n              key: APP_SETTING_KEY.ENV,\n              name: t(\"SettingPanel.AppEnv\"),\n              component: <AppEnvList />,\n              icon: <ENVIcon fontSize={16} />,\n            },\n            {\n              key: APP_SETTING_KEY.DOMAIN,\n              name: t(\"SettingPanel.Domain\"),\n              component: <CustomDomain />,\n              icon: <DomainIcon boxSize={4} />,\n            },\n          ],\n        },\n        {\n          title: t(\"SettingPanel.MonitorSetting\"),\n          items: monitorItems,\n        },\n        {\n          title: t(\"SettingPanel.ClientSetting\"),\n          items: [\n            {\n              key: APP_SETTING_KEY.COMMON,\n              name: t(\"SettingPanel.CommonSetting\"),\n              component: <CommonSetting />,\n              icon: <CommonSettingIcon boxSize={4} />,\n            },\n          ],\n        },\n      ]}\n    >\n      {props.children}\n    </SettingModal>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/BillingDetails/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { DateRange, DayPicker, SelectRangeEventHandler } from \"react-day-picker\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  Button,\n  Center,\n  Popover,\n  PopoverBody,\n  PopoverContent,\n  PopoverTrigger,\n  Radio,\n  RadioGroup,\n  Spinner,\n  Table,\n  TableContainer,\n  Tbody,\n  Td,\n  Th,\n  Thead,\n  Tooltip,\n  Tr,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\nimport { es, zhCN } from \"date-fns/locale\";\n\nimport { BillingIcon, CalendarIcon, FilterIcon } from \"@/components/CommonIcon\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport Pagination from \"@/components/Pagination\";\nimport { formatDate } from \"@/utils/format\";\nimport getPageInfo from \"@/utils/getPageInfo\";\n\nimport { BillingControllerFindAll } from \"@/apis/v1/billings\";\nimport { APP_LIST_QUERY_KEY } from \"@/pages/home\";\n\nconst LIMIT_OPTIONS = [10, 20, 100, 200];\nconst DEFAULT_QUERY_DATA = {\n  appid: [],\n  startTime: \"\",\n  endTime: \"\",\n  page: 1,\n  pageSize: 10,\n  state: \"\",\n};\n\nconst STATE_LIST = [\"Pending\", \"Done\"];\n\nexport default function BillingDetails() {\n  const { i18n, t } = useTranslation();\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n\n  const [queryData, setQueryData] = useState(DEFAULT_QUERY_DATA);\n  const [appList, setAppList] = useState<any>([]);\n  const [selectedAppList, setSelectedAppList] = useState<any>([]);\n  const [selectedRange, setSelectedRange] = useState<DateRange>();\n\n  const { data: billingRes, isLoading } = useQuery([\"billing\", queryData], async () => {\n    return BillingControllerFindAll({\n      ...queryData,\n    });\n  });\n  const queryClient = useQueryClient();\n  useEffect(() => {\n    const appListQuery = queryClient.getQueryData(APP_LIST_QUERY_KEY);\n    setAppList((appListQuery as { data: Array<any> })?.data || []);\n    setSelectedAppList(\n      (appListQuery as { data: Array<any> })?.data.map((item: any) => item.appid) || [],\n    );\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  const handleRangeSelect: SelectRangeEventHandler = (range: DateRange | undefined) => {\n    if (range) {\n      setSelectedRange(range);\n      setQueryData({\n        ...queryData,\n        startTime: formatDate(range.from),\n        endTime: formatDate(range.to),\n      });\n    }\n  };\n\n  return (\n    <div>\n      <div className=\"flex items-center space-x-2 pt-2 text-2xl\">\n        <BillingIcon size={20} color={darkMode ? \"#F4F6F8\" : \"#24282C\"} />\n        <p>{t(\"SettingPanel.BillingDetails\")}</p>\n      </div>\n      <div className=\"mt-4 rounded border\">\n        <TableContainer overflowX=\"auto\">\n          <Table variant=\"striped\" colorScheme={darkMode ? \"none\" : \"whiteAlpha\"} size={\"sm\"}>\n            <Thead>\n              <Tr className={clsx(\"h-8\", !darkMode && \"bg-[#F4F6F8]\")}>\n                <Th className=\"!pr-0\">\n                  <span className=\"flex items-center\">\n                    <span\n                      className={clsx(\"mr-1 font-normal\", darkMode ? \"\" : \"text-grayModern-700\")}\n                    >\n                      AppId\n                    </span>\n                    <Popover>\n                      <PopoverTrigger>\n                        <Button variant=\"none\" px={0} minW={0} h={0}>\n                          <FilterIcon\n                            className=\"cursor-pointer !text-grayModern-400\"\n                            fontSize={12}\n                          />\n                        </Button>\n                      </PopoverTrigger>\n                      <PopoverContent zIndex={99} w={24}>\n                        <PopoverBody>\n                          <div className=\"flex flex-col\">\n                            {appList.map((app: any) => (\n                              <div key={app.appid} className=\"flex items-center\">\n                                <input\n                                  type=\"checkbox\"\n                                  className=\"mr-1\"\n                                  checked={selectedAppList.includes(app.appid)}\n                                  onChange={(e) => {\n                                    if (e.target.checked) {\n                                      setSelectedAppList([...selectedAppList, app.appid]);\n                                    } else {\n                                      setSelectedAppList(\n                                        selectedAppList.filter((item: any) => item !== app.appid),\n                                      );\n                                    }\n                                    setQueryData({\n                                      ...queryData,\n                                      appid: e.target.checked\n                                        ? [...selectedAppList, app.appid]\n                                        : selectedAppList.filter((item: any) => item !== app.appid),\n                                    });\n                                  }}\n                                />\n                                <span>{app.appid}</span>\n                              </div>\n                            ))}\n                          </div>\n                        </PopoverBody>\n                      </PopoverContent>\n                    </Popover>\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span className=\"flex items-center\">\n                    <span\n                      className={clsx(\n                        \"mr-1 border-l pl-2 font-normal\",\n                        darkMode ? \"\" : \"text-grayModern-700\",\n                      )}\n                    >\n                      {t(\"Duration\")}\n                    </span>\n                    <Popover>\n                      <PopoverTrigger>\n                        <Button variant=\"none\" p={0} h={0} minW={0}>\n                          <CalendarIcon\n                            className=\"cursor-pointer !text-grayModern-400\"\n                            boxSize=\"14px\"\n                          />\n                        </Button>\n                      </PopoverTrigger>\n                      <PopoverContent zIndex={99}>\n                        <PopoverBody>\n                          <DayPicker\n                            mode=\"range\"\n                            locale={i18n.language === \"en\" ? es : zhCN}\n                            selected={selectedRange}\n                            onSelect={handleRangeSelect}\n                            styles={{\n                              day: {\n                                transition: \"all 0.2s ease-in-out\",\n                                borderRadius: \"unset\",\n                              },\n                            }}\n                          />\n                        </PopoverBody>\n                      </PopoverContent>\n                    </Popover>\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span\n                    className={clsx(\n                      \"border-l pl-2 font-normal\",\n                      darkMode ? \"\" : \"text-grayModern-700\",\n                    )}\n                  >\n                    {t(\"SpecItem.cpu\")}\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span\n                    className={clsx(\n                      \"border-l pl-2 font-normal\",\n                      darkMode ? \"\" : \"text-grayModern-700\",\n                    )}\n                  >\n                    {t(\"SpecItem.memory\")}\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span\n                    className={clsx(\n                      \"border-l pl-2 font-normal\",\n                      darkMode ? \"\" : \"text-grayModern-700\",\n                    )}\n                  >\n                    {t(\"Spec.Database\")}\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span\n                    className={clsx(\n                      \"border-l pl-2 font-normal\",\n                      darkMode ? \"\" : \"text-grayModern-700\",\n                    )}\n                  >\n                    {t(\"Spec.Storage\")}\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span\n                    className={clsx(\n                      \"border-l pl-2 font-normal\",\n                      darkMode ? \"\" : \"text-grayModern-700\",\n                    )}\n                  >\n                    {t(\"Spec.NetworkTraffic\")}\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span className=\"flex items-center\">\n                    <span\n                      className={clsx(\n                        \"mr-1 border-l pl-2 font-normal\",\n                        darkMode ? \"\" : \"text-grayModern-700\",\n                      )}\n                    >\n                      {t(\"State\")}\n                    </span>\n                    <Popover>\n                      <PopoverTrigger>\n                        <Button variant=\"none\" p={0} h={0} minW={0}>\n                          <FilterIcon\n                            className=\"cursor-pointer !text-grayModern-400\"\n                            fontSize={12}\n                          />\n                        </Button>\n                      </PopoverTrigger>\n                      <PopoverContent w={28}>\n                        <PopoverBody>\n                          <RadioGroup className=\"flex flex-col space-y-2 lowercase\">\n                            {STATE_LIST.map((item) => (\n                              <Radio\n                                key={item}\n                                name=\"state\"\n                                value={item}\n                                checked={queryData.state === item}\n                                onChange={(e) => {\n                                  setQueryData({\n                                    ...queryData,\n                                    state: e.target.value,\n                                  });\n                                }}\n                              >\n                                {item}\n                              </Radio>\n                            ))}\n                          </RadioGroup>\n                        </PopoverBody>\n                      </PopoverContent>\n                    </Popover>\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span\n                    className={clsx(\n                      \"border-l pl-2 font-normal\",\n                      darkMode ? \"\" : \"text-grayModern-700\",\n                    )}\n                  >\n                    {t(\"TotalAmount\")}\n                  </span>\n                </Th>\n              </Tr>\n            </Thead>\n            {!isLoading && billingRes?.data.list && billingRes?.data.list.length > 0 && (\n              <Tbody bg={\"none\"}>\n                {(billingRes?.data?.list || []).map((item: any, index: number) => (\n                  <Tr key={item._id} bg={darkMode ? \"\" : index % 2 === 1 ? \"#FBFBFC\" : \"white\"}>\n                    <Td\n                      className={clsx(\n                        \"font-medium\",\n                        darkMode\n                          ? \"!border-b-grayModern-600 text-lafWhite-100\"\n                          : \"text-grayModern-900\",\n                      )}\n                    >\n                      {item.appid}\n                    </Td>\n                    <Td\n                      className={\n                        darkMode\n                          ? \"!border-b-grayModern-600 !text-grayModern-200\"\n                          : \"text-grayModern-600\"\n                      }\n                    >\n                      {formatDate(item.endAt)}\n                    </Td>\n                    <Td\n                      className={\n                        darkMode\n                          ? \"!border-b-grayModern-600 !text-grayModern-200\"\n                          : \"text-grayModern-600\"\n                      }\n                    >\n                      {item.detail?.cpu?.amount}\n                    </Td>\n                    <Td\n                      className={\n                        darkMode\n                          ? \"!border-b-grayModern-600 !text-grayModern-200\"\n                          : \"text-grayModern-600\"\n                      }\n                    >\n                      {item.detail?.memory?.amount}\n                    </Td>\n                    {item.detail?.dedicatedDatabaseCPU?.usage ? (\n                      <Tooltip\n                        label={\n                          <div>\n                            <div>\n                              {t(\"SpecItem.cpu\")}: {item.detail.dedicatedDatabaseCPU?.amount}\n                            </div>\n                            <div>\n                              {t(\"SpecItem.memory\")}: {item.detail.dedicatedDatabaseMemory?.amount}\n                            </div>\n                            <div>\n                              {t(\"SpecItem.capacity\")}:{\" \"}\n                              {item.detail.dedicatedDatabaseCapacity?.amount}\n                            </div>\n                          </div>\n                        }\n                      >\n                        <Td\n                          className={\n                            darkMode\n                              ? \"!border-b-grayModern-600 !text-grayModern-200\"\n                              : \"text-grayModern-600\"\n                          }\n                        >\n                          {(\n                            item.detail.dedicatedDatabaseCPU.amount +\n                            item.detail.dedicatedDatabaseMemory.amount +\n                            item.detail.dedicatedDatabaseCapacity.amount\n                          ).toFixed(6)}\n                        </Td>\n                      </Tooltip>\n                    ) : (\n                      <Td\n                        className={\n                          darkMode\n                            ? \"!border-b-grayModern-600 !text-grayModern-200\"\n                            : \"text-grayModern-600\"\n                        }\n                      >\n                        {item.detail?.databaseCapacity?.amount}\n                      </Td>\n                    )}\n                    <Td\n                      className={\n                        darkMode\n                          ? \"!border-b-grayModern-600 !text-grayModern-200\"\n                          : \"text-grayModern-600\"\n                      }\n                    >\n                      {item.detail?.storageCapacity?.amount}\n                    </Td>\n                    <Td\n                      className={\n                        darkMode\n                          ? \"!border-b-grayModern-600 !text-grayModern-200\"\n                          : \"text-grayModern-600\"\n                      }\n                    >\n                      {item.detail?.networkTraffic?.amount}\n                    </Td>\n                    <Td\n                      className={clsx(\n                        darkMode ? \"!border-b-grayModern-600\" : \"\",\n                        item.state === \"Done\" ? \"text-primary-600\" : \"text-error-600\",\n                      )}\n                    >\n                      {item.state}\n                    </Td>\n                    <Td\n                      className={clsx(\n                        \"font-medium\",\n                        darkMode\n                          ? \"!border-b-grayModern-600 text-lafWhite-100\"\n                          : \"text-grayModern-900\",\n                      )}\n                    >\n                      ￥{item.amount}\n                    </Td>\n                  </Tr>\n                ))}\n              </Tbody>\n            )}\n          </Table>\n          {isLoading && (\n            <Center className=\"min-h-[360px]\">\n              <Spinner />\n            </Center>\n          )}\n          {!isLoading && !(billingRes?.data.list && billingRes?.data.list.length > 0) && (\n            <Center className=\"min-h-[360px]\">\n              <EmptyBox>\n                <span>{t(\"No History\")}</span>\n              </EmptyBox>\n            </Center>\n          )}\n          {!isLoading && billingRes?.data.list && billingRes?.data.list.length > 0 && (\n            <div className=\"p-2\">\n              <Pagination\n                options={LIMIT_OPTIONS}\n                values={getPageInfo(billingRes?.data)}\n                onChange={(values: any) => {\n                  setQueryData({\n                    ...queryData,\n                    ...values,\n                  });\n                }}\n              />\n            </div>\n          )}\n        </TableContainer>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/CardRedemption/index.tsx",
    "content": "import { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button, FormControl, Input, useColorMode } from \"@chakra-ui/react\";\n\nimport { CardIcon } from \"@/components/CommonIcon\";\n\nimport { useGiftCodeMutation } from \"./service\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function CardRedemption() {\n  const { t } = useTranslation();\n  const useGiftCode = useGiftCodeMutation();\n  const { showSuccess } = useGlobalStore();\n  const {\n    register,\n    handleSubmit,\n    formState: { errors },\n  } = useForm();\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  const onSubmit = async (data: any) => {\n    const res = await useGiftCode.mutateAsync({ code: data.giftCode });\n    if (!res.error) {\n      showSuccess(t(\"SettingPanel.ExchangeSuccess\"));\n    }\n  };\n\n  return (\n    <div className=\"h-full w-full\">\n      <div className=\"flex items-center space-x-2 pt-2 text-2xl\">\n        <CardIcon size={20} color={darkMode ? \"#F4F6F8\" : \"#24282C\"} />\n        <p>{t(\"SettingPanel.CardRedemption\")}</p>\n      </div>\n      <div className=\"m-auto mt-24 w-[265px]\">\n        <span>{t(\"SettingPanel.CardRedemption\")}</span>\n        <FormControl isInvalid={!!errors?.giftCode}>\n          <Input\n            {...register(\"giftCode\", {\n              required: true,\n            })}\n            placeholder={String(t(\"SettingPanel.EnterGiftCode\"))}\n            className=\"mt-2 !border-frostyNightfall-300\"\n            bg={!darkMode ? \"#F8FAFB\" : \"none\"}\n          />\n        </FormControl>\n        <Button className=\"mt-8 w-full\" onClick={handleSubmit(onSubmit)}>\n          {t(\"SettingModal.Exchange\")}\n        </Button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/CardRedemption/service.ts",
    "content": "import { useMutation } from \"@tanstack/react-query\";\n\nimport { AccountControllerGiftCode } from \"@/apis/v1/accounts\";\n\nexport const useGiftCodeMutation = (config?: { onSuccess: (result: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return AccountControllerGiftCode(values);\n    },\n    {\n      onSuccess: async (result) => {\n        config?.onSuccess(result);\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/PATList/DateSelector/index.module.scss",
    "content": ".customStyleDateSelector {\n  :global {\n    .react-datepicker__month-container {\n      border: 1px solid #000;\n      border-color: var(--chakra-colors-chakra-border-color);\n    }\n\n    .customStyle {\n      .react-datepicker__day:hover {\n        background-color: #e0f6f4;\n        border-radius: 100%;\n      }\n\n      .react-datepicker__header {\n        border: 0px;\n        background-color: #fff;\n      }\n\n      .react-datepicker__day--selected,\n      .react-datepicker__day--selected:hover,\n      .react-datepicker__day--keyboard-selected,\n      .react-datepicker__day--keyboard-selected:hover {\n        background-color: var(--chakra-colors-primary-500);\n        border-radius: 100%;\n        color: #fff;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/PATList/DateSelector/index.tsx",
    "content": "import { forwardRef, useEffect, useState } from \"react\";\nimport DatePicker from \"react-datepicker\";\nimport { Input, Select } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { addDateByValue } from \"@/utils/format\";\n\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport styles from \"./index.module.scss\";\n\nconst DateSelector = function (props: {\n  setting: { now: Date; dateList: any[] };\n  value: number;\n  onChange: (data: any) => any;\n}) {\n  const { value, onChange, setting } = props;\n  const [isShow, setIsShow] = useState(false);\n  const [startDate, setStartDate] = useState<Date>();\n  const [optionSelect, setOptionSelect] = useState<number | string>(setting.dateList[0].value);\n  const CustomInput = forwardRef(\n    (\n      props: {\n        value?: any;\n        onClick?: (data: any) => any;\n      },\n      ref: any,\n    ) => {\n      return (\n        <Input\n          className=\"ml-4\"\n          style={{ width: \"130px\" }}\n          ref={ref}\n          resize=\"vertical\"\n          size=\"sm\"\n          isReadOnly\n          value={props.value}\n          onClick={props.onClick}\n        />\n      );\n    },\n  );\n\n  const isValidateDay = (date: Date) => {\n    const now = new Date();\n    const day = date.getTime() - now.getTime();\n    return day > 0 && day < 31536000000;\n  };\n\n  useEffect(() => {\n    if (isShow) {\n      setStartDate(addDateByValue(setting.now, value));\n    } else {\n      setOptionSelect(value);\n    }\n  }, [value, isShow, setting, setStartDate, setOptionSelect]);\n\n  const handleDateChange = function (date: Date) {\n    const timeGap = (date.getTime() - setting.now.getTime()) / 1000;\n    onChange({ target: { value: timeGap } });\n  };\n\n  const handleSelectChange = function (e: any) {\n    if (e.target.value !== \"custom\") {\n      setOptionSelect(e.target.value);\n      setIsShow(false);\n      onChange(e);\n    } else {\n      setOptionSelect(\"custom\");\n      const initialDate = addDateByValue(setting.now, 120);\n      setStartDate(initialDate);\n      onChange({ target: { value: 120 } });\n      setIsShow(true);\n    }\n  };\n\n  return (\n    <div className={clsx(styles.customStyleDateSelector, \" flex\")}>\n      <Select\n        variant=\"filled\"\n        width={isShow ? \"120px\" : \"190px\"}\n        size=\"sm\"\n        value={optionSelect}\n        onChange={handleSelectChange}\n      >\n        {setting.dateList.map((date: any) => (\n          <option key={date.value} value={date.value}>\n            {date.label}\n          </option>\n        ))}\n      </Select>\n      {isShow ? (\n        <DatePicker\n          calendarClassName=\"customStyle\"\n          dateFormat=\"yyyy/MM/dd HH:mm\"\n          selected={startDate}\n          customInput={<CustomInput />}\n          filterDate={isValidateDay}\n          onChange={handleDateChange}\n        />\n      ) : null}\n    </div>\n  );\n};\n\nexport default DateSelector;\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/PATList/index.tsx",
    "content": "import { useState } from \"react\";\nimport { t } from \"i18next\";\n\nimport CopyText from \"@/components/CopyText\";\nimport EditableTable from \"@/components/EditableTable\";\nimport TextButton from \"@/components/TextButton\";\nimport { formatDate, formatDateOption } from \"@/utils/format\";\n\nimport DateSelector from \"./DateSelector\";\nimport { TPAT, useAddPATMutation, useDelPATMutation, usePATQuery } from \"./service\";\n\nconst PATList = () => {\n  const [formatPATList, setFormatPATList] = useState<TPAT[]>();\n  const [tokenList, setTokenList] = useState<{ _id: string; token: string }[]>([]);\n  usePATQuery((data) => {\n    const newPATList = (data || []).map((item: any) => {\n      return {\n        ...item,\n        expiresIn: formatDate(item.expiredAt),\n      };\n    });\n    setFormatPATList(newPATList);\n  });\n\n  const delPATMutation = useDelPATMutation(() => {});\n  const addPATMutation = useAddPATMutation((data: any) => {\n    const newTokenList = [...tokenList];\n    newTokenList.push({\n      _id: data._id,\n      token: data.token,\n    });\n    setTokenList(newTokenList);\n  });\n\n  const now = new Date();\n  const dateList = formatDateOption();\n  return (\n    <>\n      <div className=\"flex flex-grow flex-col pt-12\">\n        <EditableTable\n          column={[\n            {\n              name: \"name\",\n              key: \"name\",\n              width: \"150px\",\n              validate: [\n                (data: any) => {\n                  return {\n                    isValidate: data !== \"\",\n                    errorInfo: t(\"NameCannotBeEmpty\").toString(),\n                  };\n                },\n              ],\n            },\n            {\n              name: t(\"SettingPanel.Expire\").toString(),\n              width: \"290px\",\n              key: \"expiresIn\",\n              editable: false,\n              defaultValue: dateList[0].value,\n              editComponent: (props: any) => {\n                return (\n                  <DateSelector\n                    setting={{ now: now, dateList: dateList }}\n                    value={props.value}\n                    onChange={props.onChange}\n                  />\n                );\n              },\n            },\n          ]}\n          configuration={{\n            key: \"_id\",\n            tableHeight: \"335px\",\n            hiddenEditButton: true,\n            addButtonText: t(\"Add\") + \"Token\",\n            saveButtonText: t(\"Generate\") + \"Token\",\n            operationButtonsRender: (data: any) => {\n              const tokenItem = tokenList?.filter((item: any) => item._id === data._id);\n              return tokenItem?.length === 1 ? (\n                <CopyText className=\"mr-4\" text={tokenItem[0].token} tip={t(\"Copied\").toString()}>\n                  <TextButton text={t(\"Copy\") + \"Token\"} />\n                </CopyText>\n              ) : null;\n            },\n          }}\n          tableData={formatPATList}\n          onEdit={async () => {}}\n          onDelete={async (data) => {\n            await delPATMutation.mutateAsync({ id: data });\n            const newTokenList = tokenList.filter((token: any) => {\n              return token._id !== data;\n            });\n            setTokenList(newTokenList);\n          }}\n          onCreate={(data) =>\n            addPATMutation.mutateAsync({ ...data, expiresIn: Number(data.expiresIn) })\n          }\n        />\n      </div>\n    </>\n  );\n};\n\nexport default PATList;\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/PATList/service.ts",
    "content": "import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\n\nimport { PatControllerCreate, PatControllerFindAll, PatControllerRemove } from \"@/apis/v1/pats\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport type TPAT = {\n  id?: string;\n  name: string;\n  expiresIn: number;\n};\n\nconst queryKeys = {\n  usePATQuery: [\"usePATQuery\"],\n};\n\nexport const usePATQuery = (callback?: (data: any) => void) => {\n  return useQuery(\n    queryKeys.usePATQuery,\n    () => {\n      return PatControllerFindAll({});\n    },\n    {\n      onSuccess: (data) => {\n        callback && callback(data?.data);\n      },\n    },\n  );\n};\n\nexport const useAddPATMutation = (callback?: (data: any) => void) => {\n  const queryClient = useQueryClient();\n  return useMutation((params: TPAT) => PatControllerCreate(params), {\n    onSuccess: async (data) => {\n      useGlobalStore.getState().showSuccess(\"update PAT success\");\n      await queryClient.invalidateQueries(queryKeys.usePATQuery);\n      callback && callback(data?.data);\n    },\n  });\n};\n\nexport const useDelPATMutation = (callback?: () => void) => {\n  const queryClient = useQueryClient();\n  return useMutation((params: { id: string | undefined }) => PatControllerRemove(params), {\n    onSuccess: async () => {\n      useGlobalStore.getState().showSuccess(\"delete PAT success\");\n      await queryClient.invalidateQueries(queryKeys.usePATQuery);\n      callback && callback();\n    },\n  });\n};\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/PricingStandards/PricingCard.tsx",
    "content": "import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\ninterface PricingCardProps {\n  color: string;\n  title: string;\n  value: number;\n}\n\nconst PricingCard: React.FC<PricingCardProps> = ({ color, title, value }) => {\n  const { t } = useTranslation();\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  const timeFrames = [\n    { multiplier: 24, label: t(\"Day\") },\n    { multiplier: 24 * 7, label: t(\"Week\") },\n    { multiplier: 24 * 30, label: t(\"Month\") },\n    { multiplier: 24 * 365, label: t(\"Year\") },\n  ];\n\n  return (\n    <div\n      className={clsx(\n        \"mr-2 h-[256px] w-[130px] rounded-lg border border-grayModern-200\",\n        !darkMode && \"bg-[#F8FAFB]\",\n      )}\n    >\n      <div className=\"px-4\">\n        <div className=\"flex items-center justify-center pt-5\">\n          <div className={`h-3 w-3 ${color} mr-1`} />\n          {title}\n        </div>\n        <div className={clsx(\"pt-5 text-center text-[12px]\", !darkMode && \"text-grayModern-900\")}>\n          ￥ {value}\n        </div>\n        <div className={clsx(\"pb-5 text-center\", !darkMode && \"text-grayModern-900\")}>\n          {title === \"CPU\" ? t(\"Core\") : title === \"出网流量\" ? \"1 GB\" : \"G\"}\n          {title !== \"出网流量\" && `/${t(\"Hour\")}`}\n        </div>\n        {title !== \"出网流量\" &&\n          timeFrames.map(({ multiplier, label }) => (\n            <div\n              className={clsx(\n                \"flex w-full justify-between border-t border-dotted py-[6px]\",\n                !darkMode && \"text-grayModern-600\",\n              )}\n              key={label}\n            >\n              <span>￥ {(value * multiplier).toFixed(2)}</span>\n              <span>\n                {title === \"CPU\" ? t(\"Core\") : \"G\"}/{label}\n              </span>\n            </div>\n          ))}\n      </div>\n    </div>\n  );\n};\n\nexport default PricingCard;\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/PricingStandards/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useColorMode } from \"@chakra-ui/react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { t } from \"i18next\";\n\nimport { StandardIcon } from \"@/components/CommonIcon\";\n\nimport PricingCard from \"./PricingCard\";\n\nimport { ResourceControllerCalculatePrice } from \"@/apis/v1/resources\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype price = {\n  cpu: number;\n  memory: number;\n  databaseCapacity: number;\n  storageCapacity: number;\n  networkTraffic: number;\n  total: number;\n};\n\nexport default function PricingStandards() {\n  const { regions } = useGlobalStore((state) => state);\n\n  const darkMode = useColorMode().colorMode === \"dark\";\n  const [price, setPrice] = useState<price>({\n    cpu: 0,\n    memory: 0,\n    databaseCapacity: 0,\n    storageCapacity: 0,\n    networkTraffic: 0,\n    total: 0,\n  });\n\n  useQuery(\n    [\"useBillingPriceQuery\"],\n    async () => {\n      return ResourceControllerCalculatePrice({\n        cpu: 1000,\n        memory: 1024,\n        databaseCapacity: 1024,\n        storageCapacity: 1024,\n        networkTraffic: 1024, // 1G\n        regionId: regions && regions[0].bundles[0].regionId,\n      });\n    },\n    {\n      onSuccess(res) {\n        setPrice((res?.data as price) || {});\n      },\n    },\n  );\n\n  const { cpu, memory, databaseCapacity, storageCapacity, networkTraffic } = price;\n\n  const pricingData = [\n    { color: \"bg-primary-500\", title: \"CPU\", value: cpu },\n    { color: \"bg-blue-600\", title: \"内存\", value: memory },\n    { color: \"bg-error-400\", title: \"数据库\", value: databaseCapacity },\n    { color: \"bg-error-400\", title: \"云存储\", value: storageCapacity },\n    { color: \"bg-adora-600\", title: \"出网流量\", value: networkTraffic },\n  ];\n\n  return (\n    <div>\n      <div className=\"flex items-center space-x-2 pt-2 text-2xl\">\n        <StandardIcon size={20} color={darkMode ? \"#F4F6F8\" : \"#24282C\"} />\n        <p>{t(\"SettingPanel.PricingStandards\")}</p>\n      </div>\n      <div className=\"flex justify-center pt-10\">\n        {pricingData.map((data) => (\n          <PricingCard color={data.color} title={data.title} value={data.value} key={data.title} />\n        ))}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/RechargeHistory/index.tsx",
    "content": "import { useState } from \"react\";\nimport { DateRange, DayPicker, SelectRangeEventHandler } from \"react-day-picker\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  Button,\n  Center,\n  Popover,\n  PopoverBody,\n  PopoverContent,\n  PopoverTrigger,\n  Radio,\n  RadioGroup,\n  Spinner,\n  Table,\n  TableContainer,\n  Tbody,\n  Td,\n  Th,\n  Thead,\n  Tr,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\nimport { es, zhCN } from \"date-fns/locale\";\n\nimport { CalendarIcon, ChargeIcon, FilterIcon } from \"@/components/CommonIcon\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport Pagination from \"@/components/Pagination\";\nimport { formatDate, formatPrice } from \"@/utils/format\";\nimport getPageInfo from \"@/utils/getPageInfo\";\n\nimport { AccountControllerGetChargeRecords } from \"@/apis/v1/accounts\";\n\nconst LIMIT_OPTIONS = [10, 20, 100, 200];\nconst DEFAULT_QUERY_DATA = {\n  id: \"\",\n  startTime: \"\",\n  endTime: \"\",\n  page: 1,\n  pageSize: 10,\n  state: \"\",\n};\nconst STATE_LIST = [\"Pending\", \"Paid\", \"Failed\"];\n\nexport default function RechargeHistory() {\n  const { i18n, t } = useTranslation();\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n\n  const [queryData, setQueryData] = useState(DEFAULT_QUERY_DATA);\n  const [selectedRange, setSelectedRange] = useState<DateRange>();\n\n  const { data: rechargeRes, isLoading } = useQuery([\"recharge\", queryData], async () => {\n    return AccountControllerGetChargeRecords({\n      ...queryData,\n    });\n  });\n\n  const handleRangeSelect: SelectRangeEventHandler = (range: DateRange | undefined) => {\n    if (range) {\n      setSelectedRange(range);\n      setQueryData({\n        ...queryData,\n        startTime: formatDate(range.from),\n        endTime: formatDate(range.to),\n      });\n    }\n  };\n\n  return (\n    <div>\n      <div className=\"flex items-center space-x-2 pt-2 text-2xl\">\n        <ChargeIcon size={20} color={darkMode ? \"#F4F6F8\" : \"#24282C\"} />\n        <p>{t(\"SettingPanel.RechargeHistory\")}</p>\n      </div>\n      <div className=\"mt-4 rounded border\">\n        <TableContainer>\n          <Table\n            variant=\"striped\"\n            colorScheme={darkMode ? \"none\" : \"whiteAlpha\"}\n            size={\"sm\"}\n            textTransform={\"none\"}\n          >\n            <Thead>\n              <Tr className={clsx(\"h-8\", !darkMode && \"bg-[#F4F6F8]\")}>\n                <Th className=\"!pr-0\">\n                  <span className={clsx(\"mr-1 font-normal\", darkMode ? \"\" : \"text-grayModern-700\")}>\n                    {t(\"OrderNumber\")}\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span className=\"flex items-center\">\n                    <span\n                      className={clsx(\n                        \"mr-1 border-l pl-2 font-normal\",\n                        darkMode ? \"\" : \"!text-grayModern-700\",\n                      )}\n                    >\n                      {t(\"Duration\")}\n                    </span>\n                    <Popover>\n                      <PopoverTrigger>\n                        <Button variant=\"none\" p={0} minW={0} h={0}>\n                          <CalendarIcon\n                            className=\"cursor-pointer !text-grayModern-400\"\n                            boxSize=\"14px\"\n                          />\n                        </Button>\n                      </PopoverTrigger>\n                      <PopoverContent zIndex={99}>\n                        <PopoverBody>\n                          <DayPicker\n                            mode=\"range\"\n                            locale={i18n.language === \"en\" ? es : zhCN}\n                            selected={selectedRange}\n                            onSelect={handleRangeSelect}\n                            styles={{\n                              day: {\n                                transition: \"all 0.2s ease-in-out\",\n                                borderRadius: \"unset\",\n                              },\n                            }}\n                          />\n                        </PopoverBody>\n                      </PopoverContent>\n                    </Popover>\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span className=\"flex items-center\">\n                    <span\n                      className={clsx(\n                        \"mr-1 border-l pl-2 font-normal\",\n                        darkMode ? \"\" : \"!text-grayModern-700\",\n                      )}\n                    >\n                      {t(\"State\")}\n                    </span>\n                    <Popover>\n                      <PopoverTrigger>\n                        <Button p={0} minW={0} h={0}>\n                          <FilterIcon\n                            className=\"cursor-pointer !text-grayModern-400\"\n                            fontSize={12}\n                          />\n                        </Button>\n                      </PopoverTrigger>\n                      <PopoverContent w={28}>\n                        <PopoverBody>\n                          <RadioGroup className=\"flex flex-col space-y-2 lowercase\">\n                            {STATE_LIST.map((item) => (\n                              <Radio\n                                key={item}\n                                name=\"state\"\n                                value={item}\n                                checked={queryData.state === item}\n                                onChange={(e) => {\n                                  setQueryData({\n                                    ...queryData,\n                                    state: e.target.value,\n                                  });\n                                }}\n                              >\n                                {item}\n                              </Radio>\n                            ))}\n                          </RadioGroup>\n                        </PopoverBody>\n                      </PopoverContent>\n                    </Popover>\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span\n                    className={clsx(\n                      \"border-l pl-2 font-normal\",\n                      darkMode ? \"\" : \"!text-grayModern-700\",\n                    )}\n                  >\n                    {t(\"Recharge amount\")}\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span\n                    className={clsx(\n                      \"border-l pl-2 font-normal\",\n                      darkMode ? \"\" : \"!text-grayModern-700\",\n                    )}\n                  >\n                    {t(\"Bonus amount\")}\n                  </span>\n                </Th>\n                <Th className=\"!px-0 !pl-2\">\n                  <span\n                    className={clsx(\n                      \"border-l pl-2 font-normal\",\n                      darkMode ? \"\" : \"!text-grayModern-700\",\n                    )}\n                  >\n                    {t(\"Total payment amount\")}\n                  </span>\n                </Th>\n              </Tr>\n            </Thead>\n            {!isLoading && rechargeRes?.data.list && rechargeRes?.data.list.length > 0 && (\n              <Tbody bg={\"none\"}>\n                {(rechargeRes?.data?.list || []).map((item: any, index: number) => (\n                  <Tr key={item._id} bg={darkMode ? \"\" : index % 2 === 1 ? \"#FBFBFC\" : \"white\"}>\n                    <Td\n                      className={clsx(\n                        \"font-medium\",\n                        darkMode ? \"!border-b-grayModern-600\" : \"text-grayModern-900\",\n                      )}\n                    >\n                      {item._id}\n                    </Td>\n                    <Td\n                      className={\n                        darkMode\n                          ? \"!border-b-grayModern-600 !text-grayModern-200\"\n                          : \"text-grayModern-600\"\n                      }\n                    >\n                      {formatDate(item.createdAt)}\n                    </Td>\n                    <Td\n                      className={clsx(\n                        darkMode ? \"!border-b-grayModern-600\" : \"\",\n                        item.phase === \"Paid\" ? \"text-primary-600\" : \"text-error-600\",\n                      )}\n                    >\n                      {item.phase}\n                    </Td>\n                    <Td\n                      className={clsx(\n                        \"font-medium\",\n                        darkMode ? \"!border-b-grayModern-600\" : \"text-grayModern-900\",\n                      )}\n                    >\n                      {item.channel === \"GiftCode\"\n                        ? formatPrice(item.amount)\n                        : formatPrice(item.amount + item.reward)}\n                    </Td>\n                    <Td\n                      className={clsx(\n                        \"font-medium\",\n                        darkMode ? \"!border-b-grayModern-600\" : \"text-grayModern-900\",\n                      )}\n                    >\n                      {formatPrice(item.reward)}\n                    </Td>\n                    <Td\n                      className={clsx(\n                        \"font-medium\",\n                        darkMode ? \"!border-b-grayModern-600\" : \"text-grayModern-900\",\n                      )}\n                    >\n                      {item.channel === \"GiftCode\" ? \"-\" : formatPrice(item.amount)}\n                    </Td>\n                  </Tr>\n                ))}\n              </Tbody>\n            )}\n          </Table>\n          {isLoading && (\n            <Center className=\"min-h-[360px]\">\n              <Spinner />\n            </Center>\n          )}\n          {!isLoading && !(rechargeRes?.data.list && rechargeRes?.data.list.length > 0) && (\n            <Center className=\"min-h-[360px]\">\n              <EmptyBox>\n                <span>{t(\"No History\")}</span>\n              </EmptyBox>\n            </Center>\n          )}\n          {!isLoading && rechargeRes?.data.list && rechargeRes?.data.list.length > 0 && (\n            <div className=\"p-2\">\n              <Pagination\n                options={LIMIT_OPTIONS}\n                values={getPageInfo(rechargeRes?.data)}\n                onChange={(values: any) => {\n                  setQueryData({\n                    ...queryData,\n                    ...values,\n                  });\n                }}\n              />\n            </div>\n          )}\n        </TableContainer>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/Usage/index.tsx",
    "content": "import React, { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Avatar, Button, Center, Spinner, useColorMode } from \"@chakra-ui/react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\nimport {\n  Area,\n  AreaChart,\n  CartesianGrid,\n  ResponsiveContainer,\n  Tooltip,\n  XAxis,\n  YAxis,\n} from \"recharts\";\n\nimport ChargeButton from \"@/components/ChargeButton\";\nimport { CostIcon, ExpendIcon, RechargeIcon } from \"@/components/CommonIcon\";\nimport DateRangePicker from \"@/components/DateRangePicker\";\nimport { formatDate, formatOriginalPrice, formatPrice } from \"@/utils/format\";\nimport { getAvatarUrl } from \"@/utils/getAvatarUrl\";\n\nimport { AccountControllerGetChargeOrderAmount } from \"@/apis/v1/accounts\";\nimport { BillingControllerGetExpense, BillingControllerGetExpenseByDay } from \"@/apis/v1/billings\";\nimport useGlobalStore from \"@/pages/globalStore\";\nimport { useAccountQuery } from \"@/pages/home/service\";\n\nconst DATA_DURATION = 6 * 24 * 60 * 60 * 1000;\n\nexport default function Usage() {\n  const { t } = useTranslation();\n  const darkMode = useColorMode().colorMode === \"dark\";\n  const [endTime, setEndTime] = React.useState<Date>(() => {\n    const today = new Date();\n    today.setHours(23, 59, 59, 999);\n    return today;\n  });\n  const [startTime, setStartTime] = React.useState<Date>(() => {\n    const today = new Date();\n    today.setTime(today.getTime() - DATA_DURATION);\n    today.setHours(0, 0, 0, 0);\n    return today;\n  });\n\n  const { userInfo, avatarUpdatedAt } = useGlobalStore((state) => state);\n  const { data: accountRes } = useAccountQuery();\n\n  const { data: billingAmountRes, isLoading: billLoading } = useQuery(\n    [\"billing\", startTime, endTime],\n    async () => {\n      const startOfDay = new Date(startTime);\n      startOfDay.setHours(0, 0, 0, 0);\n      const endOfDay = new Date(endTime);\n      endOfDay.setHours(23, 59, 59, 999);\n      return BillingControllerGetExpense({\n        startTime: startOfDay?.getTime(),\n        endTime: endOfDay?.getTime(),\n      });\n    },\n  );\n\n  const { data: chargeOrderAmountRes, isLoading: chargeLoading } = useQuery(\n    [\"chargeOrderAmount\", startTime, endTime],\n    async () => {\n      const startOfDay = new Date(startTime);\n      startOfDay.setHours(0, 0, 0, 0);\n      const endOfDay = new Date(endTime);\n      endOfDay.setHours(23, 59, 59, 999);\n      return AccountControllerGetChargeOrderAmount({\n        startTime: startOfDay?.getTime(),\n        endTime: endOfDay?.getTime(),\n      });\n    },\n  );\n\n  const { data: billingAmountByDayRes, isLoading: billingLoading } = useQuery(\n    [\"billingByDay\", startTime, endTime],\n    async () => {\n      const startOfDay = new Date(startTime);\n      startOfDay.setHours(0, 0, 0, 0);\n      const endOfDay = new Date(endTime);\n      endOfDay.setHours(23, 59, 59, 999);\n      return BillingControllerGetExpenseByDay({\n        startTime: startOfDay?.getTime(),\n        endTime: endOfDay?.getTime(),\n      });\n    },\n  );\n\n  const chartData = useMemo(\n    () =>\n      ((billingAmountByDayRes?.data as Array<any>) || [])\n        .sort((a, b) => new Date(a.day).getTime() - new Date(b.day).getTime())\n        .map((item) => ({\n          totalAmount: item.totalAmount,\n          date: formatDate(item.day).slice(5, 10),\n        })),\n    [billingAmountByDayRes?.data],\n  );\n\n  return (\n    <div>\n      <div className=\"flex items-center pb-6 pt-2 text-2xl\">\n        <span className=\"flex items-center space-x-2 pr-4\">\n          <CostIcon size={20} color={darkMode ? \"#F4F6F8\" : \"#24282C\"} />\n          <p>{t(\"SettingPanel.CostOverview\")}</p>\n        </span>\n        <DateRangePicker\n          startTime={startTime}\n          endTime={endTime}\n          setStartTime={setStartTime}\n          setEndTime={setEndTime}\n        />\n      </div>\n      <div className=\"flex pb-6 pl-14\">\n        <div className=\"flex flex-col pr-4\">\n          <span>{t(\"SettingPanel.MyAccount\")}</span>\n          <div className=\"mt-3 flex h-36 w-[306px] flex-col justify-between rounded-lg bg-primary-500 px-6 text-white\">\n            <div className=\"flex items-center justify-end pt-3 text-lg\">\n              <span className=\"flex items-center\">\n                <span className=\"flex w-16 justify-end truncate\">{userInfo?.username}</span>\n                <Avatar\n                  className=\"ml-2\"\n                  boxShadow=\"base\"\n                  boxSize=\"9\"\n                  src={getAvatarUrl(userInfo?._id, avatarUpdatedAt)}\n                />\n              </span>\n            </div>\n            <div className=\"flex items-end justify-between pb-5\">\n              <span className=\"flex flex-col\">\n                <span>{t(\"Balance\")}</span>\n                <span className=\"text-[24px]\">{formatPrice(accountRes?.data?.balance)}</span>\n              </span>\n              <ChargeButton>\n                <Button bg={\"white\"} textColor={\"black\"} _hover={{ bg: \"primary.100\" }}>\n                  {t(\"Charge\")}\n                </Button>\n              </ChargeButton>\n            </div>\n          </div>\n        </div>\n        <div>\n          <span>{t(\"MyIncomeAndExpenses\")}</span>\n          <div className=\"mt-3 flex\">\n            <div\n              className={clsx(\n                \"mr-4 h-36 w-36 rounded-lg border border-frostyNightfall-200\",\n                !darkMode && \"bg-lafWhite-500\",\n              )}\n            >\n              <div className=\"flex w-full justify-center pt-6\">\n                <div className=\"flex h-7 w-8 items-center justify-center rounded-lg bg-blue-600\">\n                  <ExpendIcon className=\"!text-white\" w={\"16px\"} h={\"16px\"} />\n                </div>\n              </div>\n              <div className=\"flex w-full justify-center pt-3\">{t(\"Expenses\")}</div>\n              <div className=\"flex w-full justify-center pt-3 text-xl\">\n                {billLoading ? (\n                  <Spinner size={\"sm\"} />\n                ) : (\n                  formatOriginalPrice(billingAmountRes?.data as number)\n                )}\n              </div>\n            </div>\n            <div\n              className={clsx(\n                \"h-36 w-36 rounded-lg border border-frostyNightfall-200\",\n                !darkMode && \"bg-lafWhite-500\",\n              )}\n            >\n              <div className=\"flex w-full justify-center pt-6\">\n                <div className=\"flex h-7 w-8 items-center justify-center rounded-lg bg-adora-600\">\n                  <RechargeIcon className=\"!text-white\" w={\"16px\"} h={\"16px\"} />\n                </div>\n              </div>\n              <div className=\"flex w-full justify-center pt-3\">{t(\"Charge\")}</div>\n              <div className=\"flex w-full justify-center pt-3 text-xl\">\n                {chargeLoading ? (\n                  <Spinner size={\"sm\"} />\n                ) : (\n                  formatPrice(chargeOrderAmountRes?.data as number)\n                )}\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n      <span className=\"pl-14\">{t(\"SettingPanel.CostTrend\")}</span>\n      <div className=\"mt-3 h-[160px] w-[660px] pl-12\">\n        {billingLoading ? (\n          <Center className=\"h-full w-full\">\n            <Spinner />\n          </Center>\n        ) : (\n          <ResponsiveContainer width={\"100%\"} height={\"100%\"}>\n            <AreaChart data={chartData} margin={{ left: -24 }}>\n              <CartesianGrid strokeDasharray=\"3 3\" vertical={false} />\n              <XAxis dataKey=\"date\" axisLine={false} tickLine={false} />\n              <YAxis axisLine={false} tickLine={false} />\n              <Tooltip\n                formatter={(value) => [formatOriginalPrice(Number(value), 3), t(\"Expenses\")]}\n              />\n              <Area\n                type=\"monotone\"\n                dataKey=\"totalAmount\"\n                stroke=\"#66CBCA\"\n                fill=\"#E6F6F6\"\n                strokeWidth={2}\n              />\n            </AreaChart>\n          </ResponsiveContainer>\n        )}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/UserInfo/Mods/AvatarEditor.tsx",
    "content": "import { useCallback, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport ReactCrop, { Crop } from \"react-image-crop\";\nimport { ChevronLeftIcon } from \"@chakra-ui/icons\";\nimport { Button, VStack } from \"@chakra-ui/react\";\n\nimport { useUpdateUserAvatar } from \"../service\";\n\nimport \"react-image-crop/dist/ReactCrop.css\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nfunction getCroppedImg(image: HTMLImageElement, crop: Crop): Promise<Blob> {\n  const canvas = document.createElement(\"canvas\");\n  const scaleX = image.naturalWidth / image.width;\n  const scaleY = image.naturalHeight / image.height;\n  canvas.width = crop.width as number;\n  canvas.height = crop.height as number;\n  const ctx = canvas.getContext(\"2d\");\n\n  ctx?.drawImage(\n    image,\n    crop.x * scaleX,\n    crop.y * scaleY,\n    crop.width * scaleX,\n    crop.height * scaleY,\n    0,\n    0,\n    crop.width as number,\n    crop.height as number,\n  );\n\n  return new Promise((resolve, reject) => {\n    canvas.toBlob((blob) => {\n      if (!blob) {\n        reject(new Error(\"Canvas is empty\"));\n        return;\n      }\n      resolve(blob);\n    }, \"image/jpeg\");\n  });\n}\n\nexport default function AvatarEditor(props: { img: string | null; handleBack: any }) {\n  const { img, handleBack } = props;\n  const { t } = useTranslation();\n  const imgRef = useRef<HTMLImageElement>(null);\n  const [crop, setCrop] = useState<Crop>({\n    unit: \"px\",\n    x: 0,\n    y: 0,\n    width: 200,\n    height: 200,\n  });\n  const { showSuccess, updateUserInfo } = useGlobalStore();\n\n  const updateAvatar = useUpdateUserAvatar();\n\n  const handleSave = useCallback(async () => {\n    if (imgRef.current && crop) {\n      const imgData = await getCroppedImg(imgRef.current, crop);\n      const formData = new FormData();\n      formData.append(\"avatar\", imgData);\n      const res = await updateAvatar.mutateAsync(formData);\n      if (!res.error) {\n        updateUserInfo();\n        showSuccess(t(\"UserInfo.EditAvatarSuccess\"));\n        handleBack();\n      }\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [crop]);\n\n  return (\n    <>\n      <span\n        onClick={() => handleBack()}\n        className=\"absolute left-[280px] flex cursor-pointer items-center\"\n      >\n        <ChevronLeftIcon boxSize={6} /> {t(\"Back\")}\n      </span>\n      <VStack className=\"mt-6\">\n        {!!img && (\n          <ReactCrop\n            crop={crop}\n            onChange={(c) => setCrop(c)}\n            aspect={1 / 1}\n            circularCrop={true}\n            keepSelection={true}\n          >\n            <img\n              ref={imgRef}\n              alt=\"Crop\"\n              src={img}\n              width={\"200px\"}\n              height={\"200px\"}\n              style={{ objectFit: \"contain\" }}\n            />\n          </ReactCrop>\n        )}\n        <Button onClick={handleSave}>{t(\"Save\")}</Button>\n      </VStack>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/UserInfo/Mods/EmailEditor.tsx",
    "content": "import { Controller, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { ChevronLeftIcon } from \"@chakra-ui/icons\";\nimport {\n  Box,\n  Button,\n  FormControl,\n  Input,\n  InputGroup,\n  InputRightElement,\n  VStack,\n} from \"@chakra-ui/react\";\n\nimport { SendEmailCodeButton } from \"@/components/SendEmailCodeButton\";\nimport SmsCodeInput from \"@/components/SmsCodeInput\";\n\nimport { useBindEmailMutation } from \"../service\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function EmailEditor(props: { handleBack: any }) {\n  const { handleBack } = props;\n  const { t } = useTranslation();\n  const bindEmail = useBindEmailMutation();\n  const { showSuccess, updateUserInfo } = useGlobalStore();\n  const { register, getValues, control, handleSubmit } = useForm({\n    defaultValues: {\n      email: \"\",\n      code: \"\",\n    },\n  });\n\n  const onSubmit = async (data: any) => {\n    const res = await bindEmail.mutateAsync(data);\n    if (!res.error) {\n      showSuccess(t(\"UserInfo.ChangeEmailSuccess\"));\n      updateUserInfo();\n      handleBack();\n    }\n  };\n\n  return (\n    <>\n      <span\n        onClick={() => handleBack()}\n        className=\"absolute left-[280px] flex cursor-pointer items-center\"\n      >\n        <ChevronLeftIcon boxSize={6} /> {t(\"Back\")}\n      </span>\n      <VStack className=\"flex w-full flex-col\">\n        <span className=\"w-full text-center text-xl\">{t(\"UserInfo.ChangeEmail\")}</span>\n        <Box className=\"flex flex-col pt-14\">\n          <FormControl>\n            <div className=\"pb-2\">{t(\"UserInfo.Email\")}</div>\n            <InputGroup>\n              <Input\n                {...register(\"email\", { required: true })}\n                variant=\"userInfo\"\n                overflow=\"auto\"\n                width=\"64\"\n                pr=\"6rem\"\n              />\n              <InputRightElement width=\"6rem\" height={8}>\n                <SendEmailCodeButton\n                  getEmail={getValues}\n                  emailAccount={\"email\"}\n                  className=\"!h-6 !text-[12px]\"\n                  type=\"bind\"\n                />\n              </InputRightElement>\n            </InputGroup>\n          </FormControl>\n          <FormControl>\n            <div className=\"pb-2 pt-4\">{t(\"UserInfo.SmsNumber\")}</div>\n            <Controller\n              name=\"code\"\n              control={control}\n              render={({ field: { onChange, value } }) => (\n                <div>\n                  <SmsCodeInput value={value} onChange={onChange} />\n                </div>\n              )}\n            />\n          </FormControl>\n          <Button width={64} mt={8} onClick={handleSubmit(onSubmit)}>\n            {t(\"Save\")}\n          </Button>\n        </Box>\n      </VStack>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/UserInfo/Mods/PasswordEditor.tsx",
    "content": "import { useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { ChevronLeftIcon } from \"@chakra-ui/icons\";\nimport {\n  Button,\n  FormControl,\n  Input,\n  InputGroup,\n  InputRightElement,\n  VStack,\n} from \"@chakra-ui/react\";\n\nimport { OutlineViewOffIcon, OutlineViewOnIcon } from \"@/components/CommonIcon\";\nimport { SendSmsCodeButton } from \"@/components/SendSmsCodeButton\";\nimport SmsCodeInput from \"@/components/SmsCodeInput\";\n\nimport { useResetPasswordMutation } from \"@/pages/auth/service\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype FormData = {\n  phone?: string;\n  validationCode?: string;\n  password: string;\n  confirmPassword: string;\n};\n\nexport default function UserNameEditor(props: { handleBack: any }) {\n  const { handleBack } = props;\n  const { t } = useTranslation();\n  const [isShowPassword, setIsShowPassword] = useState(false);\n  const { showSuccess, showError, userInfo } = useGlobalStore();\n  const resetPasswordMutation = useResetPasswordMutation();\n\n  const {\n    register,\n    handleSubmit,\n    getValues,\n    control,\n    formState: { errors },\n  } = useForm<FormData>({\n    defaultValues: {\n      phone: userInfo?.phone || \"\",\n      validationCode: \"\",\n      password: \"\",\n      confirmPassword: \"\",\n    },\n  });\n\n  const onSubmit = async (data: FormData) => {\n    if (data.password !== data.confirmPassword) {\n      showError(t(\"AuthPanel.PasswordNotMatch\"));\n      return;\n    }\n\n    const params = {\n      phone: data.phone,\n      code: data.validationCode,\n      password: data.password,\n      type: \"ResetPassword\",\n    };\n\n    const res = await resetPasswordMutation.mutateAsync(params);\n\n    if (res?.data) {\n      showSuccess(t(\"AuthPanel.ResetPasswordSuccess\"));\n      handleBack();\n    }\n  };\n\n  return (\n    <>\n      <span\n        onClick={() => handleBack()}\n        className=\"absolute left-[270px] flex cursor-pointer items-center\"\n      >\n        <ChevronLeftIcon boxSize={6} /> {t(\"Back\")}\n      </span>\n      <VStack spacing=\"0\">\n        <span className=\"text-xl\">{t(\"UserInfo.EditPassword\")}</span>\n        <div className=\"w-[265px] pt-5\">\n          <FormControl isInvalid={!!errors?.phone}>\n            <div className=\"pb-2\">{t(\"AuthPanel.Phone\")}</div>\n            <InputGroup>\n              <Input {...register(\"phone\")} variant=\"userInfo\" isDisabled />\n              <InputRightElement width=\"6rem\" height={8}>\n                <SendSmsCodeButton\n                  getPhone={getValues}\n                  phoneNumber={\"phone\"}\n                  className=\"!h-6 !text-[12px]\"\n                  type=\"ResetPassword\"\n                />\n              </InputRightElement>\n            </InputGroup>\n          </FormControl>\n          <FormControl isInvalid={!!errors.validationCode}>\n            <div className=\"pb-2 pt-4\">{t(\"AuthPanel.ValidationCode\")}</div>\n            <Controller\n              name=\"validationCode\"\n              control={control}\n              render={({ field: { onChange, value } }) => (\n                <div>\n                  <SmsCodeInput value={value} onChange={onChange} />\n                </div>\n              )}\n            />\n          </FormControl>\n          <FormControl isInvalid={!!errors.password}>\n            <div className=\"pb-2 pt-4\">{t(\"AuthPanel.NewPassword\")}</div>\n            <InputGroup>\n              <Input\n                type={isShowPassword ? \"text\" : \"password\"}\n                {...register(\"password\", {\n                  required: true,\n                })}\n                id=\"password\"\n                variant=\"userInfo\"\n              />\n              <InputRightElement width=\"2rem\" height={8}>\n                {isShowPassword ? (\n                  <OutlineViewOffIcon\n                    className=\"cursor-pointer !text-primary-600\"\n                    onClick={() => setIsShowPassword(false)}\n                  />\n                ) : (\n                  <OutlineViewOnIcon\n                    className=\"cursor-pointer !text-primary-600\"\n                    onClick={() => setIsShowPassword(true)}\n                  />\n                )}\n              </InputRightElement>\n            </InputGroup>\n          </FormControl>\n          <FormControl isInvalid={!!errors.confirmPassword}>\n            <div className=\"pb-2 pt-4\">{t(\"AuthPanel.ConfirmPassword\")}</div>\n            <InputGroup>\n              <Input\n                type={isShowPassword ? \"text\" : \"password\"}\n                {...register(\"confirmPassword\", {\n                  required: true,\n                })}\n                id=\"confirmPassword\"\n                variant=\"userInfo\"\n              />\n              <InputRightElement width=\"2rem\" height={8}>\n                {isShowPassword ? (\n                  <OutlineViewOffIcon\n                    className=\"cursor-pointer !text-primary-600\"\n                    onClick={() => setIsShowPassword(false)}\n                  />\n                ) : (\n                  <OutlineViewOnIcon\n                    className=\"cursor-pointer !text-primary-600\"\n                    onClick={() => setIsShowPassword(true)}\n                  />\n                )}\n              </InputRightElement>\n            </InputGroup>\n          </FormControl>\n          <Button\n            type=\"submit\"\n            className=\"w-full\"\n            mt=\"8\"\n            isLoading={resetPasswordMutation.isLoading}\n            onClick={handleSubmit(onSubmit)}\n          >\n            {t(\"AuthPanel.ResetPassword\")}\n          </Button>\n        </div>\n      </VStack>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/UserInfo/Mods/PhoneEditor.tsx",
    "content": "import { Controller, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { ChevronLeftIcon } from \"@chakra-ui/icons\";\nimport {\n  Box,\n  Button,\n  FormControl,\n  Input,\n  InputGroup,\n  InputRightElement,\n  VStack,\n} from \"@chakra-ui/react\";\n\nimport { SendSmsCodeButton } from \"@/components/SendSmsCodeButton\";\nimport SmsCodeInput from \"@/components/SmsCodeInput\";\n\nimport { useBindPhoneMutation } from \"../service\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype FormData = {\n  oldPhoneNumber: string;\n  oldSmsCode: string;\n  newPhoneNumber: string;\n  newSmsCode: string;\n};\n\nexport default function PhoneEditor(props: { handleBack: any }) {\n  const { handleBack } = props;\n  const { t } = useTranslation();\n  const bindPhone = useBindPhoneMutation();\n  const { showSuccess, updateUserInfo, userInfo } = useGlobalStore();\n\n  const {\n    register,\n    handleSubmit,\n    control,\n    getValues,\n    formState: { errors },\n  } = useForm<FormData>({\n    defaultValues: {\n      oldPhoneNumber: userInfo?.phone || \"\",\n      oldSmsCode: \"\",\n      newPhoneNumber: \"\",\n      newSmsCode: \"\",\n    },\n  });\n\n  const onSubmit = async (data: FormData) => {\n    const res = await bindPhone.mutateAsync(\n      userInfo?.phone ? data : { newPhoneNumber: data.newPhoneNumber, newSmsCode: data.newSmsCode },\n    );\n    if (!res.error) {\n      updateUserInfo();\n      showSuccess(t(\"UserInfo.EditPhoneSuccess\"));\n      handleBack();\n    }\n  };\n\n  return (\n    <>\n      <span\n        onClick={() => handleBack()}\n        className=\"absolute left-[280px] flex cursor-pointer items-center\"\n      >\n        <ChevronLeftIcon boxSize={6} /> {t(\"Back\")}\n      </span>\n      <VStack>\n        <span className=\"text-xl\">{t(\"UserInfo.EditPhone\")}</span>\n        <Box className=\"w-[265px] pt-4\">\n          {userInfo?.phone && (\n            <>\n              <FormControl>\n                <div className=\"pb-2\">{t(\"UserInfo.OldPhoneNumber\")}</div>\n                <InputGroup>\n                  <Input {...register(\"oldPhoneNumber\")} variant=\"userInfo\" isDisabled />\n                  <InputRightElement width=\"6rem\" height={8}>\n                    <SendSmsCodeButton\n                      getPhone={getValues}\n                      phoneNumber={\"oldPhoneNumber\"}\n                      className=\"!h-6 !text-[12px]\"\n                      type=\"Unbind\"\n                    />\n                  </InputRightElement>\n                </InputGroup>\n              </FormControl>\n              <FormControl isInvalid={!!errors.oldSmsCode}>\n                <div className=\"pb-2 pt-4\">{t(\"UserInfo.OldSmsNumber\")}</div>\n                <Controller\n                  name=\"oldSmsCode\"\n                  control={control}\n                  render={({ field: { onChange, value } }) => (\n                    <div>\n                      <SmsCodeInput value={value} onChange={onChange} />\n                    </div>\n                  )}\n                />\n              </FormControl>\n            </>\n          )}\n          <FormControl isInvalid={!!errors.newPhoneNumber}>\n            <div className=\"pb-2 pt-4\">\n              {!userInfo?.phone ? t(\"UserInfo.PhoneNumber\") : t(\"UserInfo.NewPhoneNumber\")}\n            </div>\n            <InputGroup>\n              <Input {...register(\"newPhoneNumber\", { required: true })} variant=\"userInfo\" />\n              <InputRightElement width=\"6rem\" height={8}>\n                <SendSmsCodeButton\n                  getPhone={getValues}\n                  phoneNumber={\"newPhoneNumber\"}\n                  className=\"!h-6 !text-[12px]\"\n                  type=\"Bind\"\n                />\n              </InputRightElement>\n            </InputGroup>\n          </FormControl>\n          <FormControl isInvalid={!!errors.newSmsCode}>\n            <div className=\"pb-2 pt-4\">\n              {!userInfo?.phone ? t(\"UserInfo.SmsNumber\") : t(\"UserInfo.NewSmsNumber\")}\n            </div>\n            <Controller\n              name=\"newSmsCode\"\n              control={control}\n              render={({ field: { onChange, value } }) => (\n                <div>\n                  <SmsCodeInput value={value} onChange={onChange} />\n                </div>\n              )}\n            />\n          </FormControl>\n          <Button mt=\"8\" width=\"100%\" onClick={handleSubmit(onSubmit)}>\n            {t(\"Save\")}\n          </Button>\n        </Box>\n      </VStack>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/UserInfo/Mods/UsernameEditor.tsx",
    "content": "import { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { ChevronLeftIcon } from \"@chakra-ui/icons\";\nimport { Box, Button, FormControl, Input, VStack } from \"@chakra-ui/react\";\n\nimport { useBindUsernameMutation } from \"../service\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function UsernameEditor(props: { handleBack: any }) {\n  const { handleBack } = props;\n  const { t } = useTranslation();\n  const bindUsername = useBindUsernameMutation();\n  const { userInfo, updateUserInfo, showSuccess } = useGlobalStore((state) => state);\n\n  const {\n    register,\n    handleSubmit,\n    formState: { errors },\n  } = useForm();\n\n  const onSubmit = async (data: any) => {\n    const res = await bindUsername.mutateAsync(data);\n    if (!res.error) {\n      updateUserInfo();\n      handleBack();\n      showSuccess(t(\"UserInfo.EditUserNameSuccess\"));\n    }\n  };\n\n  return (\n    <>\n      <span\n        onClick={() => handleBack()}\n        className=\"absolute left-[270px] flex cursor-pointer items-center\"\n      >\n        <ChevronLeftIcon boxSize={6} /> {t(\"Back\")}\n      </span>\n      <VStack>\n        <span className=\"text-xl\">{t(\"UserInfo.EditUserName\")}</span>\n        <Box className=\"w-[265px] pt-16\">\n          <FormControl isInvalid={!!errors?.username}>\n            <div className=\"pb-2\">{t(\"UserInfo.UserName\")}</div>\n            <Input\n              {...register(\"username\", {\n                required: true,\n              })}\n              defaultValue={userInfo?.username}\n              variant=\"userInfo\"\n            />\n          </FormControl>\n          <Button mt={8} width={\"100%\"} onClick={handleSubmit(onSubmit)} type=\"submit\">\n            {t(\"Save\")}\n          </Button>\n        </Box>\n      </VStack>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/UserInfo/index.tsx",
    "content": "import { useRef, useState } from \"react\";\nimport { CheckCircleIcon, ChevronRightIcon, InfoOutlineIcon } from \"@chakra-ui/icons\";\nimport { Avatar, Box, Divider, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { EditIconLine } from \"@/components/CommonIcon\";\nimport { hidePhoneNumber } from \"@/utils/format\";\nimport { getAvatarUrl } from \"@/utils/getAvatarUrl\";\n\nimport AvatarEditor from \"./Mods/AvatarEditor\";\nimport EmailEditor from \"./Mods/EmailEditor\";\nimport PasswordEditor from \"./Mods/PasswordEditor\";\nimport PhoneEditor from \"./Mods/PhoneEditor\";\nimport UsernameEditor from \"./Mods/UsernameEditor\";\n\nimport \"react-image-crop/dist/ReactCrop.css\";\n\nimport { useGithubAuthControllerUnbindMutation } from \"@/pages/auth/service\";\nimport useAuthStore from \"@/pages/auth/store\";\nimport useGlobalStore from \"@/pages/globalStore\";\nimport useSiteSettingStore from \"@/pages/siteSetting\";\n\nexport default function UserInfo() {\n  const [showItem, setShowItem] = useState(\"\");\n  const [selectedImage, setSelectedImage] = useState<string | null>(null);\n  const { userInfo, updateUserInfo, avatarUpdatedAt, showError, showSuccess } = useGlobalStore(\n    (state) => state,\n  );\n  const fileInputRef = useRef<HTMLInputElement>(null);\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n  const { siteSettings } = useSiteSettingStore((state) => state);\n  const { phoneProvider, githubProvider, emailProvider } = useAuthStore((state) => state);\n  const githubAuthControllerUnbindMutation = useGithubAuthControllerUnbindMutation();\n\n  const handleClick = () => {\n    if (fileInputRef.current) {\n      fileInputRef.current.click();\n    }\n  };\n\n  const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const file = event.target.files && event.target.files[0];\n    if (file) {\n      const reader = new FileReader();\n      reader.onloadend = () => {\n        setSelectedImage(reader.result as string);\n      };\n      reader.readAsDataURL(file);\n    }\n    setShowItem(\"avatar\");\n  };\n\n  const handleBack = () => {\n    setShowItem(\"\");\n  };\n\n  return (\n    <Box className={clsx(\"flex justify-center pb-4 text-lg\", showItem === \"\" ? \"pt-12\" : \"pt-4\")}>\n      {showItem === \"\" && (\n        <>\n          <Box className=\"flex flex-col pr-10\">\n            <Avatar\n              size={\"xl\"}\n              name={userInfo?.username}\n              src={getAvatarUrl(userInfo?._id, avatarUpdatedAt)}\n              bgColor=\"primary.500\"\n              color=\"white\"\n              boxShadow=\"base\"\n            />\n            <div>\n              <input\n                ref={fileInputRef}\n                type=\"file\"\n                accept=\"image/png,image/jpeg,image/gif\"\n                style={{ display: \"none\" }}\n                onChange={handleFileChange}\n              />\n              <span\n                className=\"flex cursor-pointer items-center justify-center pt-3 text-base text-grayModern-600\"\n                onClick={handleClick}\n              >\n                <EditIconLine color=\"#5A646E\" />\n                <span className=\"ml-1\">{t(\"Edit\")}</span>\n              </span>\n            </div>\n          </Box>\n          <Box className=\"w-[270px] pt-1\">\n            <div className=\"flex flex-col pb-4\">\n              <span className={clsx(\"pb-3 text-xl\", !darkMode && \"text-grayModern-900\")}>\n                {t(\"SettingPanel.UserName\")}\n              </span>\n              <span className=\"flex justify-between text-base\">\n                <span className={!darkMode ? \"w-[80%] text-grayModern-700\" : \"\"}>\n                  {userInfo?.username}\n                </span>\n                <span\n                  className=\"flex cursor-pointer items-center text-[#0884DD]\"\n                  onClick={() => {\n                    setShowItem(\"username\");\n                  }}\n                >\n                  {t(\"UserInfo.Change\")} <ChevronRightIcon boxSize={5} />\n                </span>\n              </span>\n            </div>\n            <div className=\"flex flex-col pb-4\">\n              <span className={clsx(\"pb-3 text-xl\", !darkMode && \"text-grayModern-900\")}>\n                {t(\"SettingPanel.PassWord\")}\n              </span>\n              <span className=\"flex justify-between text-base\">\n                <span className={!darkMode ? \"text-grayModern-700\" : \"\"}>∗∗∗∗∗∗</span>\n                <span\n                  className=\"flex cursor-pointer items-center text-[#0884DD]\"\n                  onClick={() => {\n                    setShowItem(\"password\");\n                  }}\n                >\n                  {t(\"Reset\")} <ChevronRightIcon boxSize={5} />\n                </span>\n              </span>\n            </div>\n            <Divider className=\"mb-4 text-grayModern-200\" />\n            {phoneProvider && siteSettings.id_verify?.value === \"on\" && (\n              <div className=\"flex flex-col pb-4\">\n                <span\n                  className={clsx(\n                    \"flex items-center pb-3 text-xl\",\n                    !darkMode && \"text-grayModern-900\",\n                  )}\n                >\n                  {t(\"SettingPanel.Auth\")}\n                  {!userInfo?.profile?.idVerified?.isVerified && (\n                    <InfoOutlineIcon className=\"ml-2 !text-primary-600\" />\n                  )}\n                </span>\n                <span className=\"flex justify-between text-base\">\n                  <span className={!darkMode ? \"text-grayModern-700\" : \"\"}>\n                    {userInfo?.profile?.idVerified?.isVerified\n                      ? userInfo?.profile?.name\n                      : t(\"UserInfo.NoAuth\")}\n                  </span>\n                  {!userInfo?.profile?.idVerified?.isVerified ? (\n                    <span\n                      className=\"flex cursor-pointer items-center text-[#0884DD]\"\n                      onClick={() => {\n                        if (userInfo?.phone) {\n                          const w = window.open(\"about:blank\");\n                          w!.location.href = `${\n                            siteSettings.id_verify?.metadata.authenticateSite\n                          }?token=${localStorage.getItem(\"token\")}`;\n                        } else {\n                          showError(t(\"UserInfo.PleaseBindPhone\"));\n                          setShowItem(\"phone\");\n                        }\n                      }}\n                    >\n                      {t(\"UserInfo.GotoAuth\")} <ChevronRightIcon boxSize={5} />\n                    </span>\n                  ) : (\n                    <span className=\"flex items-center\">\n                      <span className=\"mr-2 text-[#485058]\">{t(\"UserInfo.VerifiedIdentity\")}</span>\n                      <CheckCircleIcon className=\"!text-primary-600\" />\n                    </span>\n                  )}\n                </span>\n              </div>\n            )}\n            {phoneProvider && (\n              <div className=\"flex flex-col pb-4\">\n                <span className={clsx(\"pb-3 text-xl\", !darkMode && \"text-grayModern-900\")}>\n                  {t(\"SettingPanel.Tel\")}\n                </span>\n                <span className=\"flex justify-between text-base\">\n                  <span className={!darkMode ? \"text-grayModern-700\" : \"\"}>\n                    {userInfo?.phone ? hidePhoneNumber(userInfo.phone) : t(\"NoInfo\")}\n                  </span>\n                  <span\n                    className=\"flex cursor-pointer items-center text-[#0884DD]\"\n                    onClick={() => {\n                      setShowItem(\"phone\");\n                    }}\n                  >\n                    {t(\"UserInfo.Change\")} <ChevronRightIcon boxSize={5} />\n                  </span>\n                </span>\n              </div>\n            )}\n            {emailProvider && (\n              <div className=\"flex flex-col pb-4\">\n                <span className={clsx(\"pb-3 text-xl\", !darkMode && \"text-grayModern-900\")}>\n                  {t(\"SettingPanel.Email\")}\n                </span>\n                <span className=\"flex justify-between text-base\">\n                  <span className={!darkMode ? \"text-grayModern-700\" : \"\"}>\n                    {userInfo?.email ? userInfo?.email : t(\"NoInfo\")}\n                  </span>\n                  <span\n                    className=\"flex cursor-pointer items-center text-[#0884DD]\"\n                    onClick={() => {\n                      setShowItem(\"email\");\n                    }}\n                  >\n                    {t(\"UserInfo.Change\")} <ChevronRightIcon boxSize={5} />\n                  </span>\n                </span>\n              </div>\n            )}\n            {githubProvider && (\n              <div className=\"flex flex-col pb-4\">\n                <span\n                  className={clsx(\n                    \"flex items-center justify-between pb-3 text-xl\",\n                    !darkMode && \"text-grayModern-900\",\n                  )}\n                >\n                  <span>Github</span>\n                  {userInfo?.github ? (\n                    <div className=\"flex  items-center\">\n                      <span className=\"mr-4\">\n                        <Avatar\n                          src={`https://avatars.githubusercontent.com/u/${userInfo?.github}`}\n                          size=\"sm\"\n                        />\n                      </span>\n                      <span\n                        className={clsx(\n                          \"flex cursor-pointer items-center text-base\",\n                          !darkMode && \"text-grayModern-900\",\n                        )}\n                        onClick={async () => {\n                          const res = await githubAuthControllerUnbindMutation.mutateAsync({});\n                          if (!res.error) {\n                            updateUserInfo();\n                            showSuccess(t(\"UnBindSuccess\"));\n                          }\n                        }}\n                      >\n                        {t(\"UnBind\")} <ChevronRightIcon boxSize={5} />\n                      </span>\n                    </div>\n                  ) : (\n                    <span\n                      className=\"flex cursor-pointer items-center text-base text-[#0884DD]\"\n                      onClick={() => {\n                        window.location.href = `${window.location.origin}/v1/auth/github/jump_login?redirectUri=${window.location.origin}/bind/github`;\n                      }}\n                    >\n                      {t(\"Bind\")} <ChevronRightIcon boxSize={5} />\n                    </span>\n                  )}\n                </span>\n              </div>\n            )}\n          </Box>\n        </>\n      )}\n      {showItem === \"avatar\" && <AvatarEditor img={selectedImage} handleBack={handleBack} />}\n      {showItem === \"username\" && <UsernameEditor handleBack={handleBack} />}\n      {showItem === \"password\" && <PasswordEditor handleBack={handleBack} />}\n      {showItem === \"phone\" && <PhoneEditor handleBack={handleBack} />}\n      {showItem === \"email\" && <EmailEditor handleBack={handleBack} />}\n    </Box>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/UserInfo/service.ts",
    "content": "import { useMutation, useQuery } from \"@tanstack/react-query\";\n\nimport {\n  UserControllerBindEmail,\n  UserControllerBindPhone,\n  UserControllerBindUsername,\n  UserControllerGetProfile,\n  UserControllerUpdateAvatar,\n} from \"@/apis/v1/user\";\n\nexport const useUpdateUserAvatar = (config?: { onSuccess: (result: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return UserControllerUpdateAvatar(values);\n    },\n    {\n      onSuccess: async (result) => {\n        config?.onSuccess(result);\n      },\n    },\n  );\n};\n\nexport const useBindPhoneMutation = (config?: { onSuccess: (result: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return UserControllerBindPhone(values);\n    },\n    {\n      onSuccess: async (result) => {\n        config?.onSuccess(result);\n      },\n    },\n  );\n};\n\nexport const useBindUsernameMutation = (config?: { onSuccess: (result: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return UserControllerBindUsername(values);\n    },\n    {\n      onSuccess: async (result) => {\n        config?.onSuccess(result);\n      },\n    },\n  );\n};\n\nexport const useGetUserProfile = (config?: { onSuccess: (result: any) => void }) => {\n  return useQuery(\n    [\"useGetUserProfileQuery\"],\n    () => {\n      return UserControllerGetProfile({});\n    },\n    {\n      onSuccess: async (result) => {\n        config?.onSuccess(result);\n      },\n    },\n  );\n};\n\nexport const useBindEmailMutation = (config?: { onSuccess: (result: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return UserControllerBindEmail(values);\n    },\n    {\n      onSuccess: async (result) => {\n        config?.onSuccess(result);\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/UserInvite/index.tsx",
    "content": "import React, { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { InfoOutlineIcon } from \"@chakra-ui/icons\";\nimport { Button, Center, Input, Spinner, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { CopyIcon } from \"@/components/CommonIcon\";\nimport CopyText from \"@/components/CopyText\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport Pagination from \"@/components/Pagination\";\nimport { formatDate, formatPrice } from \"@/utils/format\";\nimport getPageInfo from \"@/utils/getPageInfo\";\n\nimport { useGetInviteCode, useGetInviteCodeProfit } from \"./service\";\nconst LIMIT_OPTIONS = [5, 20, 100];\n\nexport default function UserInvite() {\n  const darkMode = useColorMode().colorMode === \"dark\";\n  const { t } = useTranslation();\n  const [queryData, setQueryData] = useState({ page: 1, pageSize: 5 });\n\n  const inviteCodeQuery = useGetInviteCode();\n  const inviteCode = inviteCodeQuery.data?.data?.code;\n  const inviteLink = inviteCodeQuery.isLoading\n    ? \"Loading...\"\n    : `${window.location.origin}/signup?code=${inviteCode}`;\n\n  const profitQuery = useGetInviteCodeProfit(queryData);\n  const profitData = profitQuery.data?.data;\n\n  return (\n    <div className=\"pt-10\">\n      <span className=\"text-lg text-grayModern-500\">{t(\"UserInfo.InviteLink\")}</span>\n      <div className=\"flex items-center pt-3\">\n        <CopyText text={inviteLink}>\n          <Input value={inviteLink} height={8} mr={4} readOnly />\n        </CopyText>\n        <CopyText text={inviteLink} hideToolTip>\n          <Button\n            variant=\"secondary\"\n            className=\"h-[30px]\"\n            leftIcon={<CopyIcon color=\"#33BABB\" size={14} />}\n          >\n            {t(\"Copy\")}\n          </Button>\n        </CopyText>\n      </div>\n      <div\n        className={clsx(\n          \"mb-6 mt-3 flex items-center rounded-sm px-4 py-2\",\n          darkMode ? \"bg-[#20688F]\" : \" bg-[#ECF8FF]\",\n        )}\n      >\n        <InfoOutlineIcon className={\"mr-1 !text-[#219BF4]\"} />\n        <span className={darkMode ? \"text-[#86CEF5]\" : \"text-[#0884DD]\"}>\n          {t(\"UserInfo.InviteTips\")}\n        </span>\n      </div>\n      <span className=\"text-lg text-grayModern-500\">{t(\"UserInfo.BonusDetails\")}</span>\n      <div className=\"pt-3\">\n        <div\n          className={clsx(\n            \"flex rounded-t-md px-3 py-2\",\n            !darkMode && \"bg-[#F6F8F9] text-grayModern-500\",\n          )}\n        >\n          <span className=\"w-3/12\">{t(\"UserInfo.Time\")}</span>\n          <span className=\"w-7/12\">{t(\"UserInfo.Channel\")}</span>\n          <span className=\"flex w-2/12 justify-end\">{t(\"UserInfo.Bonus\")}</span>\n        </div>\n        {(profitData?.list || []).map((item: any) => (\n          <div\n            key={item._id}\n            className={darkMode ? \"flex px-3 py-2\" : \"flex px-3 py-2 text-grayModern-700\"}\n          >\n            <span className=\"w-3/12\">{formatDate(item.createdAt)}</span>\n            <span className=\"w-7/12\">{item?.username}</span>\n            <span className=\"flex w-2/12 justify-end text-primary-600\">\n              {formatPrice(item.inviteProfit)}\n            </span>\n          </div>\n        ))}\n      </div>\n      {profitQuery.isLoading ? (\n        <Center style={{ minHeight: 200 }}>\n          <Spinner />\n        </Center>\n      ) : profitData?.list && profitData?.list.length > 0 ? (\n        <Pagination\n          options={LIMIT_OPTIONS}\n          values={getPageInfo(profitData)}\n          onChange={(values: any) => setQueryData(values)}\n        />\n      ) : (\n        <Center style={{ minHeight: 200 }}>\n          <EmptyBox>\n            <span>{t(\"No History\")}</span>\n          </EmptyBox>\n        </Center>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/UserInvite/service.ts",
    "content": "import { useQuery } from \"@tanstack/react-query\";\n\nimport { AccountControllerInviteCode, AccountControllerInviteCodeProfit } from \"@/apis/v1/accounts\";\n\nexport const useGetInviteCode = (config?: { onSuccess: (result: any) => void }) => {\n  return useQuery(\n    [\"useGetInviteCodeQuery\"],\n    () => {\n      return AccountControllerInviteCode({});\n    },\n    {\n      onSuccess: async (result) => {\n        config?.onSuccess(result);\n      },\n    },\n  );\n};\n\nexport const useGetInviteCodeProfit = (\n  params: any,\n  config?: { onSuccess: (result: any) => void },\n) => {\n  return useQuery(\n    [\"useGetInviteCodeProfitQuery\", params],\n    () => {\n      return AccountControllerInviteCodeProfit({ ...params });\n    },\n    {\n      onSuccess: async (result) => {\n        config?.onSuccess(result);\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/index.tsx",
    "content": "import { ChevronRightIcon } from \"@chakra-ui/icons\";\nimport {\n  Avatar,\n  Button,\n  Divider,\n  Popover,\n  PopoverBody,\n  PopoverContent,\n  PopoverTrigger,\n  useColorMode,\n  VStack,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport {\n  ContactIcon,\n  DiscordIcon,\n  ExitIcon,\n  GroupIcon,\n  UserIcon,\n  WalletIcon,\n  WechatIcon,\n} from \"@/components/CommonIcon\";\n\nimport useTabMatch from \"./useTabMatch\";\n\nimport UserBalance from \"@/layouts/Header/UserBalance\";\nimport SettingModal, { TabKeys } from \"@/pages/app/setting\";\nimport useSiteSettingStore from \"@/pages/siteSetting\";\n\nexport default function UserSetting(props: { name: string; avatar?: string; width: string }) {\n  const darkMode = useColorMode().colorMode === \"dark\";\n  const { siteSettings } = useSiteSettingStore();\n\n  return (\n    <Popover>\n      <PopoverTrigger>\n        <Button variant=\"none\" p={0} minW={0} h={0} w={5}>\n          <Avatar\n            size=\"sm\"\n            name={props.name}\n            src={props.avatar}\n            bgColor=\"primary.500\"\n            color=\"white\"\n            boxShadow=\"base\"\n            boxSize={props.width}\n            className=\"cursor-pointer\"\n          />\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent\n        w={300}\n        borderRadius={12}\n        mr={6}\n        boxShadow={\"0px 10px 18px 0px rgba(187, 196, 206, 0.25)\"}\n      >\n        <PopoverBody className=\"cursor-auto\">\n          <div\n            className={clsx(\n              \"flex w-full justify-end pb-3 pr-4 pt-2 text-lg\",\n              darkMode ? \"text-white\" : \"text-grayModern-600\",\n            )}\n          >\n            <span\n              className=\"flex cursor-pointer items-center font-medium hover:text-error-500\"\n              onClick={() => {\n                localStorage.removeItem(\"token\");\n                window.location.href = \"/login\";\n              }}\n            >\n              <ExitIcon boxSize={5} className=\"mr-2\" />\n              {t(\"Logout\")}\n            </span>\n          </div>\n          <VStack className=\"mx-4\">\n            <Avatar\n              boxSize=\"80px\"\n              name={props.name}\n              src={props.avatar}\n              bgColor=\"primary.500\"\n              color=\"white\"\n              boxShadow=\"base\"\n            />\n            <span\n              className={clsx(\n                \"flex w-full justify-center text-2xl font-semibold\",\n                darkMode ? \"text-white\" : \"text-grayModern-900\",\n              )}\n            >\n              {props.name}\n            </span>\n            <UserBalance />\n          </VStack>\n          <VStack className={clsx(\"mx-4 pb-1\")} pt=\"5\" spacing=\"0\">\n            <div className=\"w-full\">\n              <SettingModal\n                tabMatch={useTabMatch(\"user\")}\n                headerTitle={t(\"SettingPanel.UserCenter\")}\n                currentTab={TabKeys.UserInfo}\n              >\n                <div\n                  className={clsx(\n                    \"flex h-[42px] cursor-pointer items-center justify-between rounded px-[9px] text-lg\",\n                    darkMode\n                      ? \"!text-white hover:bg-grayModern-600\"\n                      : \"!text-grayModern-600 hover:bg-[#F4F6F8]\",\n                  )}\n                >\n                  <span className=\"flex items-center\">\n                    <UserIcon fontSize={20} mr={3} />\n                    {t(\"SettingPanel.UserCenter\")}\n                  </span>\n                  <ChevronRightIcon />\n                </div>\n              </SettingModal>\n            </div>\n            <div className=\"w-full\">\n              <SettingModal\n                tabMatch={useTabMatch(\"usage\")}\n                headerTitle={t(\"SettingPanel.Usage\")}\n                currentTab={TabKeys.CostOverview}\n              >\n                <div\n                  className={clsx(\n                    \"flex h-[42px] cursor-pointer items-center justify-between rounded px-[9px] text-lg\",\n                    darkMode\n                      ? \"!text-white hover:bg-grayModern-600\"\n                      : \"!text-grayModern-600 hover:bg-[#F4F6F8]\",\n                  )}\n                >\n                  <span className=\"flex items-center space-x-3\">\n                    <WalletIcon color={darkMode ? \"white\" : \"#5A646E\"} />\n                    <p>{t(\"SettingPanel.Usage\")}</p>\n                  </span>\n                  <ChevronRightIcon />\n                </div>\n              </SettingModal>\n            </div>\n            <Divider />\n            {siteSettings.laf_business_url?.value && (\n              <div\n                className={clsx(\n                  \"flex h-[42px] w-full cursor-pointer items-center justify-between rounded px-[9px] text-lg\",\n                  darkMode\n                    ? \"!text-white hover:bg-grayModern-600\"\n                    : \"!text-grayModern-600 hover:bg-[#F4F6F8]\",\n                )}\n                onClick={() => {\n                  window.open(siteSettings.laf_business_url?.value, \"_blank\");\n                }}\n              >\n                <span className=\"flex items-center\">\n                  <ContactIcon fontSize={20} mr={3} />\n                  {t(\"HomePage.NavBar.contact\")}\n                </span>\n                <ChevronRightIcon />\n              </div>\n            )}\n            {(siteSettings.laf_wechat_url?.value || siteSettings.laf_discord_url?.value) && (\n              <div className=\"flex h-[42px] w-full items-center justify-between px-[9px] text-lg\">\n                <span\n                  className={clsx(\n                    \"flex items-center\",\n                    darkMode ? \"!text-white\" : \"!text-grayModern-600\",\n                  )}\n                >\n                  <GroupIcon fontSize={20} mr={3} />\n                  {t(\"HomePage.NavBar.community\")}\n                </span>\n                <span>\n                  {siteSettings.laf_wechat_url?.value && (\n                    <a\n                      href={siteSettings.laf_wechat_url?.value}\n                      target=\"_blank\"\n                      rel=\"noreferrer\"\n                      className=\"mr-2.5\"\n                    >\n                      <WechatIcon className=\"cursor-pointer !text-grayModern-400\" fontSize={20} />\n                    </a>\n                  )}\n                  {siteSettings.laf_discord_url?.value && (\n                    <a href={siteSettings.laf_discord_url?.value} target=\"_blank\" rel=\"noreferrer\">\n                      <DiscordIcon className=\"cursor-pointer !text-grayModern-400\" fontSize={20} />\n                    </a>\n                  )}\n                </span>\n              </div>\n            )}\n          </VStack>\n        </PopoverBody>\n      </PopoverContent>\n    </Popover>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/UserSetting/useTabMatch.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\n\nimport {\n  BillingIcon,\n  CardIcon,\n  ChargeIcon,\n  CostIcon,\n  InviteIcon,\n  PATIcon,\n  StandardIcon,\n  UserIcon,\n} from \"@/components/CommonIcon\";\n\nimport { TabKeys } from \"@/pages/app/setting\";\nimport BillingDetails from \"@/pages/app/setting/UserSetting/BillingDetails\";\nimport CardRedemption from \"@/pages/app/setting/UserSetting/CardRedemption\";\nimport PATList from \"@/pages/app/setting/UserSetting/PATList\";\nimport PricingStandards from \"@/pages/app/setting/UserSetting/PricingStandards\";\nimport RechargeHistory from \"@/pages/app/setting/UserSetting/RechargeHistory\";\nimport Usage from \"@/pages/app/setting/UserSetting/Usage\";\nimport UserInfo from \"@/pages/app/setting/UserSetting/UserInfo\";\nimport UserInvite from \"@/pages/app/setting/UserSetting/UserInvite\";\n\nexport default function useTabMatch(type: string) {\n  const { t } = useTranslation();\n\n  const User_TabMatch = [\n    {\n      title: \"\",\n      items: [\n        {\n          key: TabKeys.UserInfo,\n          name: t(\"SettingPanel.UserInfo\"),\n          component: <UserInfo />,\n          icon: <UserIcon boxSize={4} />,\n        },\n        {\n          key: TabKeys.UserInvite,\n          name: t(\"SettingPanel.UserInvite\"),\n          component: <UserInvite />,\n          icon: <InviteIcon boxSize={4} />,\n        },\n        {\n          key: TabKeys.PAT,\n          name: t(\"Personal Access Token\"),\n          component: <PATList />,\n          icon: <PATIcon boxSize={4} />,\n        },\n      ],\n    },\n  ];\n\n  const Usage_TabMatch = [\n    {\n      title: \"\",\n      items: [\n        {\n          key: TabKeys.CostOverview,\n          name: String(t(\"SettingPanel.CostOverview\")),\n          component: <Usage />,\n          icon: <CostIcon size={16} />,\n        },\n        {\n          key: TabKeys.CardRedemption,\n          name: String(t(\"SettingPanel.CardRedemption\")),\n          component: <CardRedemption />,\n          icon: <CardIcon size={16} />,\n        },\n        {\n          key: TabKeys.BillingDetails,\n          name: String(t(\"SettingPanel.BillingDetails\")),\n          component: <BillingDetails />,\n          icon: <BillingIcon size={16} />,\n        },\n        {\n          key: TabKeys.RechargeHistory,\n          name: String(t(\"SettingPanel.RechargeHistory\")),\n          component: <RechargeHistory />,\n          icon: <ChargeIcon size={16} />,\n        },\n        {\n          key: TabKeys.PricingStandards,\n          name: String(t(\"SettingPanel.PricingStandards\")),\n          component: <PricingStandards />,\n          icon: <StandardIcon size={16} />,\n        },\n      ],\n    },\n  ];\n\n  if (type === \"user\") {\n    return User_TabMatch;\n  } else if (type === \"usage\") {\n    return Usage_TabMatch;\n  }\n}\n"
  },
  {
    "path": "web/src/pages/app/setting/index.css",
    "content": "/* stylelint-disable selector-class-pattern */\n.chakra-modal__content-container::-webkit-scrollbar {\n  width: 0;\n  height: 0;\n}"
  },
  {
    "path": "web/src/pages/app/setting/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport React from \"react\";\nimport {\n  Box,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalOverlay,\n  useColorMode,\n  useColorModeValue,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport SectionList from \"@/components/SectionList\";\n\nimport \"./index.css\";\n\nimport { TApplicationDetail } from \"@/apis/typing\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport type TTabItem = {\n  key: string;\n  name: string;\n  component: React.ReactElement;\n  icon: React.ReactElement;\n  status?: string | null;\n};\n\nexport type TTabMatch = {\n  title: string;\n  items: TTabItem[];\n}[];\n\nexport const TabKeys = {\n  CostOverview: \"cost-overview\",\n  CardRedemption: \"card-redemption\",\n  BillingDetails: \"billing-details\",\n  RechargeHistory: \"recharge-history\",\n  PricingStandards: \"pricing-standards\",\n  UserInfo: \"user-info\",\n  PAT: \"pat\",\n  UserInvite: \"user-invite\",\n};\n\nconst SettingModal = (props: {\n  headerTitle: string;\n  children?: React.ReactElement;\n  setApp?: TApplicationDetail;\n  tabMatch?: TTabMatch;\n  currentTab: string;\n  openModal?: boolean;\n  setOpenModal?: (open: boolean) => void;\n}) => {\n  const { headerTitle, children, setApp, tabMatch = [], openModal, setOpenModal } = props;\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const allItems = tabMatch.reduce((prev: any, curr) => [...prev, ...curr.items], []);\n  const currentIndex = allItems\n    .map((tab: any) => tab)\n    .findIndex((tab: TTabItem) => tab.key === props.currentTab);\n  const [item, setItem] = useState<TTabItem>(allItems[currentIndex]);\n  const { setCurrentApp } = useGlobalStore((state) => state);\n  const borderColor = useColorModeValue(\"lafWhite.600\", \"lafDark.600\");\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  useEffect(() => {\n    if (!children && openModal && setOpenModal) {\n      onOpen();\n      setOpenModal(false);\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [openModal]);\n\n  return (\n    <>\n      {children &&\n        React.cloneElement(children, {\n          onClick: () => {\n            if (setApp) {\n              setCurrentApp(setApp);\n            }\n            onOpen();\n          },\n        })}\n      <Modal isOpen={isOpen} onClose={onClose}>\n        <ModalOverlay />\n        <ModalContent maxW={\"80%\"} width={\"auto\"} minW={1060}>\n          <ModalCloseButton />\n          <ModalBody py={2} minH={550} className=\"relative\">\n            <ModalCloseButton />\n            <Box className=\"flex h-full\" borderColor={borderColor}>\n              <SectionList\n                className={clsx(\n                  \"absolute bottom-0 left-0 top-0 min-w-[228px] rounded-l-lg\",\n                  !darkMode && \"border border-r-[#E4E9EE] bg-[#F4F6F8]\",\n                )}\n              >\n                <span className=\"relative left-6 top-5 text-2xl font-semibold\">\n                  {headerTitle || t(\"SettingPanel.Setting\")}\n                </span>\n                <div className=\"relative left-6 top-6\">\n                  {tabMatch.map((tab) => {\n                    return (\n                      <div key={tab.title}>\n                        {tab.title !== \"\" && (\n                          <div className=\"mt-4 font-medium text-grayModern-500\">{tab.title}</div>\n                        )}\n                        {tab.items.map((tab) => {\n                          return (\n                            <SectionList.Item\n                              className={clsx(\n                                \"mt-2 !h-[42px] w-[180px] rounded-md font-medium text-grayModern-500\",\n                              )}\n                              isActive={item?.key === tab.key}\n                              key={tab.key}\n                              onClick={() => {\n                                setItem(tab);\n                              }}\n                            >\n                              <span className=\"flex\">\n                                <span className=\"flex items-center pr-2\">{tab.icon}</span>\n                                <div className=\"w-[85%] truncate whitespace-nowrap\">{tab.name}</div>\n                                {tab?.status && (\n                                  <span className=\"scale-75 whitespace-nowrap rounded-full border border-red-300 px-1 text-red-300\">\n                                    {tab.status}\n                                  </span>\n                                )}\n                              </span>\n                            </SectionList.Item>\n                          );\n                        })}\n                      </div>\n                    );\n                  })}\n                </div>\n              </SectionList>\n              <div className=\"ml-[236px] h-full w-full p-2\">\n                {React.cloneElement(item?.component || <></>, {\n                  onClose,\n                })}\n              </div>\n            </Box>\n          </ModalBody>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nexport default SettingModal;\n"
  },
  {
    "path": "web/src/pages/app/storages/index.tsx",
    "content": "/****************************\n * cloud functions storage page\n ***************************/\nimport { useEffect, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Center } from \"@chakra-ui/react\";\n\nimport Content from \"@/components/Content\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport { Col, Row } from \"@/components/Grid\";\nimport Panel from \"@/components/Panel\";\nimport Resize from \"@/components/Resize\";\n\nimport StatusBar from \"../mods/StatusBar\";\n\nimport CreateBucketModal from \"./mods/CreateBucketModal\";\nimport FileList from \"./mods/FileList\";\nimport StorageListPanel from \"./mods/StorageListPanel\";\n\nimport useStorageStore from \"./store\";\n\nimport useCustomSettingStore from \"@/pages/customSetting\";\nimport useGlobalStore from \"@/pages/globalStore\";\nexport default function StoragePage() {\n  const { t } = useTranslation();\n  const containerRef = useRef<HTMLDivElement>(null);\n  const settingStore = useCustomSettingStore();\n  const { currentStorage } = useStorageStore();\n\n  const { currentApp, showWarning } = useGlobalStore((state) => state);\n\n  useEffect(() => {\n    if (currentApp.state !== \"Running\") {\n      showWarning(t(\"StoragePanel.StartAppTips\"));\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  return (\n    <Content>\n      <Row ref={containerRef}>\n        <Col\n          style={{\n            width: settingStore.layoutInfo.storagePage.SideBar.style.width,\n          }}\n        >\n          <StorageListPanel />\n        </Col>\n        <Resize type=\"x\" pageId=\"storagePage\" panelId=\"SideBar\" containerRef={containerRef} />\n        <Col>\n          {currentApp.state === \"Running\" ? (\n            currentStorage === undefined ? (\n              <Panel className=\"h-full items-center\">\n                <EmptyBox>\n                  <div>\n                    {t(\"StoragePanel.EmptyText\")}\n                    <CreateBucketModal>\n                      <span className=\"ml-2 cursor-pointer text-primary-600 hover:border-b-2 hover:border-primary-600\">\n                        {t(\"CreateNow\")}\n                      </span>\n                    </CreateBucketModal>\n                  </div>\n                </EmptyBox>\n              </Panel>\n            ) : (\n              <FileList />\n            )\n          ) : (\n            <Panel className=\"h-full items-center\">\n              <Center className=\"h-full text-lg text-grayModern-700\">\n                {t(\"StoragePanel.StartAppTips\")}\n              </Center>\n            </Panel>\n          )}\n        </Col>\n      </Row>\n      <StatusBar />\n    </Content>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/storages/mods/CreateBucketModal/index.tsx",
    "content": "import React from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { InfoOutlineIcon } from \"@chakra-ui/icons\";\nimport {\n  Button,\n  FormControl,\n  FormErrorMessage,\n  FormLabel,\n  Input,\n  InputAddon,\n  InputGroup,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  Select,\n  useColorMode,\n  useDisclosure,\n  VStack,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { BUCKET_POLICY_TYPE } from \"@/constants\";\n\nimport { useBucketCreateMutation, useBucketUpdateMutation } from \"../../service\";\nimport useStorageStore from \"../../store\";\n\nimport { TBucket } from \"@/apis/typing\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nfunction CreateBucketModal(props: { storage?: TBucket; children: React.ReactElement }) {\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const store = useStorageStore((store) => store);\n\n  const { storage, children } = props;\n  const bucketCreateMutation = useBucketCreateMutation();\n  const bucketUpdateMutation = useBucketUpdateMutation();\n\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  const defaultValues = {\n    name: storage?.name,\n    policy: storage?.policy,\n  };\n\n  const {\n    register,\n    handleSubmit,\n    reset,\n    setFocus,\n    formState: { errors },\n  } = useForm<{\n    name: string;\n    policy: string;\n  }>({\n    defaultValues,\n  });\n\n  const { showSuccess, currentApp } = useGlobalStore();\n\n  const isEdit = !!storage;\n\n  const onSubmit = async (values: any) => {\n    let res: any = {};\n    if (isEdit) {\n      res = await bucketUpdateMutation.mutateAsync(values);\n      if (!res.error) {\n        store.setCurrentStorage(res.data);\n        showSuccess(t(\"UpdateSuccess\"));\n        onClose();\n      }\n    } else {\n      res = await bucketCreateMutation.mutateAsync({\n        shortName: values.name,\n        policy: values.policy,\n      });\n      if (!res.error) {\n        store.setCurrentStorage(res.data);\n        showSuccess(t(\"CreateSuccess\"));\n        onClose();\n      }\n    }\n  };\n\n  return (\n    <>\n      {React.cloneElement(children, {\n        onClick: () => {\n          onOpen();\n          reset(defaultValues);\n          setTimeout(() => {\n            setFocus(\"name\");\n          }, 0);\n        },\n      })}\n      <Modal isOpen={isOpen} onClose={onClose} size=\"lg\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>\n            {isEdit ? t(\"StoragePanel.EditBucket\") : t(\"StoragePanel.CreateBucket\")}\n          </ModalHeader>\n          <ModalCloseButton />\n\n          <ModalBody pb={6}>\n            <VStack spacing={6} align=\"flex-start\">\n              <FormControl isInvalid={!!errors?.name}>\n                <FormLabel htmlFor=\"name\"> {t(\"StoragePanel.BucketName\")}</FormLabel>\n                <InputGroup>\n                  {!isEdit && (\n                    <InputAddon className=\"!mr-0 !rounded-r-none !pr-0\">\n                      {currentApp.appid + \"-\"}\n                    </InputAddon>\n                  )}\n                  <Input\n                    {...register(\"name\", {\n                      required: t(\"StoragePanel.BucketNameisRequired\").toString(),\n                      pattern: {\n                        value: /^[a-z0-9][a-z0-9-]{1,30}[a-z0-9]$/,\n                        message: t(\"StoragePanel.BucketNameRule\"),\n                      },\n                    })}\n                    variant=\"filled\"\n                    placeholder={String(t(\"StoragePanel.BucketNamePlaceholder\"))}\n                    disabled={isEdit}\n                    className={clsx(\n                      \"!rounded-l-none !border-none\",\n                      darkMode ? \"!bg-[#FFFFFF0A]\" : \"!bg-lafWhite-600\",\n                      isEdit ? \"\" : \"!ml-0 !pl-0\",\n                    )}\n                  />\n                </InputGroup>\n                <FormErrorMessage>{errors.name && errors.name.message}</FormErrorMessage>\n              </FormControl>\n\n              <FormControl>\n                <FormLabel htmlFor=\"policy\">{t(\"StoragePanel.Policy\")}</FormLabel>\n                <Select {...register(\"policy\", { required: true })} variant=\"filled\">\n                  <option value={BUCKET_POLICY_TYPE.private}>{t(\"StoragePanel.Private\")}</option>\n                  <option value={BUCKET_POLICY_TYPE.readonly}>{t(\"StoragePanel.Readonly\")}</option>\n                  <option value={BUCKET_POLICY_TYPE.readwrite}>\n                    {t(\"StoragePanel.ReadWrite\")}\n                  </option>\n                </Select>\n              </FormControl>\n\n              <span className=\"flex items-center text-grayModern-600\">\n                <InfoOutlineIcon className=\"mx-1\" />\n                {t(\"StoragePanel.BucketTips\")}\n              </span>\n            </VStack>\n          </ModalBody>\n\n          <ModalFooter>\n            <Button\n              type=\"submit\"\n              onClick={handleSubmit(onSubmit)}\n              isLoading={bucketUpdateMutation.isLoading || bucketCreateMutation.isLoading}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n}\n\nexport default CreateBucketModal;\n"
  },
  {
    "path": "web/src/pages/app/storages/mods/CreateFolderModal/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  Button,\n  FormControl,\n  FormLabel,\n  Input,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  useDisclosure,\n  VStack,\n} from \"@chakra-ui/react\";\n\nimport { OutlineFolderAddIcon } from \"@/components/CommonIcon\";\n\nimport useStorageStore from \"../../store\";\n\nimport useAwsS3 from \"@/hooks/useAwsS3\";\n\nfunction CreateModal({ onCreateSuccess }: { onCreateSuccess: () => void }) {\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const [isUploading, setIsUploading] = useState(false);\n  const { prefix, currentStorage } = useStorageStore();\n  const { register, setFocus, handleSubmit, reset } = useForm<{ prefix: string }>();\n  const { uploadFile } = useAwsS3();\n  const { t } = useTranslation();\n  return (\n    <>\n      <Button\n        size=\"xs\"\n        variant=\"textGhost\"\n        leftIcon={<OutlineFolderAddIcon boxSize=\"6\" className=\"!text-grayModern-500\" />}\n        disabled={currentStorage === undefined}\n        onClick={() => {\n          onOpen();\n          reset({});\n          setTimeout(() => {\n            setFocus(\"prefix\");\n          }, 0);\n        }}\n      >\n        {t(\"CreateFolder\")}\n      </Button>\n\n      <Modal isOpen={isOpen} onClose={onClose} size=\"lg\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader> {t(\"CreateFolder\")}</ModalHeader>\n          <ModalCloseButton />\n\n          <ModalBody pb={6}>\n            <VStack spacing={6} align=\"flex-start\">\n              <FormControl>\n                <FormLabel htmlFor=\"prefix\">{t(\"StoragePanel.FolderName\")}</FormLabel>\n                <Input\n                  {...register(\"prefix\", {\n                    required: true,\n                  })}\n                  variant=\"filled\"\n                  placeholder={t(\"StoragePanel.NameTip\").toString()}\n                />\n              </FormControl>\n            </VStack>\n          </ModalBody>\n\n          <ModalFooter>\n            <Button\n              type=\"submit\"\n              isLoading={isUploading}\n              onClick={handleSubmit(async (value) => {\n                try {\n                  setIsUploading(true);\n                  await uploadFile(currentStorage?.name!, prefix + value.prefix + \"/\", null, {\n                    contentType: \"folder\",\n                  });\n                  setIsUploading(false);\n                  onCreateSuccess();\n                  // setPrefix(prefix + value.prefix + \"/\");\n                  onClose();\n                } catch (error) {\n                  setIsUploading(false);\n                }\n              })}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n}\n\nexport default CreateModal;\n"
  },
  {
    "path": "web/src/pages/app/storages/mods/CreateWebsiteModal/SiteStatus.tsx",
    "content": "import { Tooltip } from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport DotBadge from \"@/components/DotBadge\";\nimport { BUCKET_POLICY_TYPE } from \"@/constants\";\n\nimport useStorageStore from \"../../store\";\n\nexport default function Status() {\n  const { currentStorage } = useStorageStore();\n  const isReadOnly = currentStorage?.policy === BUCKET_POLICY_TYPE.readonly;\n  return (\n    <DotBadge\n      type={!isReadOnly ? \"warning\" : \"success\"}\n      text={\n        <>\n          {!isReadOnly ? (\n            <Tooltip placement=\"bottom-end\" label={!isReadOnly ? t(\"Bucket.StatusTip\") : \"\"}>\n              {t(\"StoragePanel.Inaccessible\")}\n            </Tooltip>\n          ) : (\n            <span>{t(\"StoragePanel.isResolved\")}</span>\n          )}\n        </>\n      }\n    />\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/storages/mods/CreateWebsiteModal/index.tsx",
    "content": "import { useForm } from \"react-hook-form\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport {\n  Button,\n  FormControl,\n  FormLabel,\n  Input,\n  InputGroup,\n  InputRightAddon,\n  Link,\n  Menu,\n  MenuButton,\n  MenuItem,\n  MenuList,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  useDisclosure,\n  useToast,\n  VStack,\n} from \"@chakra-ui/react\";\n\nimport { MoreIcon } from \"@/components/CommonIcon\";\nimport CopyText from \"@/components/CopyText\";\nimport { BUCKET_POLICY_TYPE, BUCKET_STATUS } from \"@/constants\";\n\nimport {\n  useWebsiteCreateMutation,\n  useWebsiteDeleteMutation,\n  useWebSiteUpdateMutation,\n} from \"../../service\";\nimport useStorageStore from \"../../store\";\n\nimport SiteStatus from \"./SiteStatus\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nfunction CreateWebsiteModal() {\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { currentStorage, getOrigin } = useStorageStore();\n  const { showSuccess, showInfo, showWarning } = useGlobalStore();\n  const { register, setFocus, handleSubmit, reset } = useForm<{ domain: string }>();\n  const { t } = useTranslation();\n  const createWebsiteMutation = useWebsiteCreateMutation();\n  const deleteWebsiteMutation = useWebsiteDeleteMutation();\n  const updateWebsiteMutation = useWebSiteUpdateMutation();\n  const toast = useToast();\n  const cnameDomain = currentStorage?.domain?.domain;\n\n  return (\n    <>\n      {currentStorage?.websiteHosting &&\n      currentStorage.websiteHosting.state === BUCKET_STATUS.Active ? (\n        <div className=\"flex\">\n          <span className=\"mr-2 font-semibold text-grayModern-600\">\n            {t(\"StoragePanel.CurrentDomain\")}\n          </span>\n          <Link\n            className=\"mr-2 cursor-pointer\"\n            href={\n              currentStorage?.websiteHosting?.isCustom\n                ? `${window.location.protocol}//${currentStorage?.websiteHosting?.domain}`\n                : getOrigin(currentStorage?.websiteHosting?.domain)\n            }\n            isExternal\n          >\n            {currentStorage?.websiteHosting?.domain}\n          </Link>\n\n          <SiteStatus />\n\n          <Menu>\n            <MenuButton className=\"-mt-[2px] ml-2\">\n              <MoreIcon fontSize={14} />\n            </MenuButton>\n            <MenuList minWidth=\"100px\">\n              <MenuItem\n                onClick={() => {\n                  if (currentStorage?.websiteHosting?.state === BUCKET_STATUS.Active) {\n                    onOpen();\n                    reset({});\n                    setTimeout(() => {\n                      setFocus(\"domain\");\n                      reset({\n                        domain: currentStorage?.websiteHosting?.isCustom\n                          ? currentStorage?.websiteHosting?.domain\n                          : \"\",\n                      });\n                    }, 0);\n                  }\n                }}\n              >\n                {t(\"StoragePanel.CustomDomain\")}\n              </MenuItem>\n              <MenuItem\n                onClick={() => {\n                  deleteWebsiteMutation.mutateAsync({\n                    id: currentStorage?.websiteHosting?._id,\n                  });\n                }}\n              >\n                {t(\"StoragePanel.CancelHost\")}\n              </MenuItem>\n            </MenuList>\n          </Menu>\n        </div>\n      ) : (\n        <Button\n          size=\"xs\"\n          px={4}\n          height={8}\n          variant={\"secondary\"}\n          style={{ borderRadius: \"1rem\" }}\n          disabled={currentStorage === undefined}\n          onClick={async () => {\n            if (!(currentStorage?.policy === BUCKET_POLICY_TYPE.readonly)) {\n              toast({\n                status: \"warning\",\n                position: \"top\",\n                title: t(\"StoragePanel.editHostTip\"),\n              });\n              return;\n            }\n            const res = await createWebsiteMutation.mutateAsync({\n              bucketName: currentStorage && currentStorage.name,\n              state: BUCKET_STATUS.Active,\n            });\n            if (!res.error) {\n              showSuccess(t(\"StoragePanel.SuccessfullyHosted\"));\n              showInfo(t(\"StoragePanel.SuccessfullyHostedTips\"), 5000, true);\n            }\n          }}\n        >\n          {t(\"StoragePanel.websiteHost\")}\n        </Button>\n      )}\n\n      <Modal isOpen={isOpen} onClose={onClose} size=\"lg\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"StoragePanel.CustomDomain\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb={6}>\n            <VStack spacing={6} align=\"flex-start\">\n              {!(currentStorage?.policy === BUCKET_POLICY_TYPE.readonly) ? (\n                <p className=\"font-semibold text-error-500\">{t(\"StoragePanel.editHostTip\")}</p>\n              ) : null}\n              <FormControl>\n                <FormLabel>CNAME</FormLabel>\n                <InputGroup size=\"sm\">\n                  <Input variant=\"filled\" value={cnameDomain} readOnly />\n                  <InputRightAddon children={<CopyText text={cnameDomain} />} />\n                </InputGroup>\n              </FormControl>\n              <FormControl>\n                <FormLabel htmlFor=\"domain\">{t(\"StoragePanel.domain\")}</FormLabel>\n                <Input\n                  {...register(\"domain\", {\n                    required: true,\n                  })}\n                  variant=\"filled\"\n                  placeholder={String(t(\"StoragePanel.domainTip\"))}\n                />\n                <p className=\"mt-2 text-grayModern-600\">\n                  <Trans\n                    t={t}\n                    i18nKey=\"StoragePanel.cnameTip\"\n                    values={{\n                      cnameDomain: cnameDomain,\n                    }}\n                  />\n                </p>\n              </FormControl>\n            </VStack>\n          </ModalBody>\n          <ModalFooter>\n            <Button\n              type=\"submit\"\n              isLoading={updateWebsiteMutation.isLoading}\n              onClick={handleSubmit(async (value) => {\n                const res = await updateWebsiteMutation.mutateAsync({\n                  id: currentStorage?.websiteHosting._id,\n                  domain: value.domain,\n                });\n                if (res.data) {\n                  onClose();\n                } else if (res.error === \"domain not resolved\") {\n                  showWarning(t(\"StoragePanel.DomainNotResolved\"));\n                }\n              })}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n}\n\nexport default CreateWebsiteModal;\n"
  },
  {
    "path": "web/src/pages/app/storages/mods/DeleteBucketModal/index.tsx",
    "content": "import { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  Button,\n  FormControl,\n  Input,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  useDisclosure,\n} from \"@chakra-ui/react\";\n\n// import { DeleteIcon } from \"@chakra-ui/icons\";\nimport { RecycleDeleteIcon } from \"@/components/CommonIcon\";\nimport IconText from \"@/components/IconText\";\n\nimport { useBucketDeleteMutation } from \"../../service\";\n\nimport { TBucket } from \"@/apis/typing\";\nimport useGlobalStore from \"@/pages/globalStore\";\nfunction DeleteBucketModal(props: { storage: TBucket; onSuccessAction?: () => void }) {\n  const { storage, onSuccessAction } = props;\n  const { showError } = useGlobalStore();\n\n  const bucketDeleteMutation = useBucketDeleteMutation();\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { t } = useTranslation();\n  const { register, handleSubmit, setFocus, reset, setValue } = useForm<{\n    name: string;\n  }>();\n\n  return (\n    <>\n      <IconText\n        icon={<RecycleDeleteIcon fontSize={16} />}\n        text={t(\"Delete\")}\n        className=\"hover:!text-error-600\"\n        onClick={() => {\n          reset();\n          onOpen();\n          setTimeout(() => {\n            setFocus(\"name\");\n          }, 0);\n        }}\n      />\n\n      <Modal isOpen={isOpen} onClose={onClose}>\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"StoragePanel.DeleteBucket\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb={6}>\n            <p className=\"mb-2\">\n              {t(\"StoragePanel.DeleteConfirm\")}\n              <span className=\" mr-1 font-bold text-black\">{\" \" + storage.name}</span>\n              {t(\"DeleteTip\")}\n            </p>\n            <p className=\"mb-4\">\n              {t(\"StoragePanel.StorageNameTip\")}\n              <span className=\"mx-1 font-bold text-red-500\">{storage.name}</span>\n              {t(\"ToConfirm\")}\n            </p>\n            <FormControl>\n              <Input\n                {...register(\"name\")}\n                id=\"name\"\n                placeholder={storage?.name}\n                onChange={(e) => {\n                  setValue(\"name\", e.target.value.trim());\n                }}\n              />\n            </FormControl>\n          </ModalBody>\n\n          <ModalFooter>\n            <Button\n              isLoading={bucketDeleteMutation.isLoading}\n              colorScheme=\"red\"\n              onClick={handleSubmit(async (data) => {\n                if (data.name !== storage.name) {\n                  showError(t(\"NameNotMatch\"));\n                } else {\n                  const res = await bucketDeleteMutation.mutateAsync({ name: storage.name });\n                  if (!res.error) {\n                    onSuccessAction && onSuccessAction();\n                    onClose();\n                  }\n                }\n              })}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n}\n\nexport default DeleteBucketModal;\n"
  },
  {
    "path": "web/src/pages/app/storages/mods/FileList/index.tsx",
    "content": "import { useMemo, useState } from \"react\";\nimport { useHotkeys } from \"react-hotkeys-hook\";\nimport {\n  Button,\n  Center,\n  HStack,\n  Select,\n  Spinner,\n  Table,\n  TableContainer,\n  Tbody,\n  Td,\n  Th,\n  Thead,\n  Tr,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\nimport { Key } from \"ts-key-enum\";\n\nimport {\n  AscendingIcon,\n  DescendingIcon,\n  LinkIcon,\n  OutlineViewOnIcon,\n  RecycleDeleteIcon,\n  RefreshIcon,\n  SortingIcon,\n  UploadIcon,\n} from \"@/components/CommonIcon\";\nimport ConfirmButton from \"@/components/ConfirmButton\";\nimport { useConfirmDialog } from \"@/components/ConfirmDialog\";\nimport CopyText from \"@/components/CopyText\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport FileTypeIcon from \"@/components/FileTypeIcon\";\nimport IconWrap from \"@/components/IconWrap\";\nimport Panel from \"@/components/Panel\";\nimport { BUCKET_POLICY_TYPE, COLOR_MODE } from \"@/constants\";\nimport { formatDate, formateType, formatSize } from \"@/utils/format\";\n\nimport useStorageStore, { TFile } from \"../../store\";\nimport CreateFolderModal from \"../CreateFolderModal\";\nimport CreateWebsiteModal from \"../CreateWebsiteModal\";\nimport PathLink from \"../PathLink\";\nimport UploadButton from \"../UploadButton\";\n\nimport useAwsS3 from \"@/hooks/useAwsS3\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype TOrderType =\n  | null\n  | \"ascFilename\"\n  | \"descFilename\"\n  | \"ascFileType\"\n  | \"descFileType\"\n  | \"ascSize\"\n  | \"descSize\"\n  | \"ascDate\"\n  | \"descDate\";\n\nconst SortIcon = ({\n  currentOrderType,\n  orderTypeAsc,\n  orderTypeDesc,\n  onSort,\n}: {\n  currentOrderType: TOrderType;\n  orderTypeAsc: TOrderType;\n  orderTypeDesc: TOrderType;\n  onSort: () => void;\n}) => {\n  const isAsc = currentOrderType === orderTypeAsc;\n  const isDesc = currentOrderType === orderTypeDesc;\n\n  let icon = <SortingIcon boxSize={3} className=\"absolute top-[1.5px]\" />;\n\n  if (isAsc) {\n    icon = <AscendingIcon boxSize={3} className=\"absolute top-[1.5px]\" />;\n  } else if (isDesc) {\n    icon = <DescendingIcon boxSize={3} className=\"absolute top-[1.5px]\" />;\n  }\n\n  return (\n    <span onClick={onSort} className=\"relative cursor-pointer\">\n      {icon}\n    </span>\n  );\n};\n\nexport default function FileList() {\n  const { getList, getFileUrl, deleteFile } = useAwsS3();\n  const { currentStorage, prefix, setPrefix, markerArray, setMarkerArray, getFilePath } =\n    useStorageStore();\n  const [pageSize, setPageSize] = useState(20);\n  const [selectedFiles, setSelectedFiles] = useState<string[]>([]);\n  const bucketName = currentStorage?.name;\n  const bucketType = currentStorage?.policy;\n\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  const confirmDialog = useConfirmDialog();\n  const { showError, showLoading, showSuccess } = useGlobalStore();\n\n  const [orderType, setOrderType] = useState<TOrderType>(null);\n\n  const {\n    data: queryData,\n    refetch,\n    isFetching,\n  } = useQuery(\n    [\"fileList\", bucketName, prefix, markerArray.length, pageSize],\n    () =>\n      getList(bucketName, {\n        marker: markerArray[markerArray.length - 1],\n        maxKeys: pageSize,\n        prefix,\n      }),\n    {\n      enabled: !!bucketName,\n    },\n  );\n\n  const compareFilename = (a: any, b: any) => {\n    if (a.Key && b.Key) {\n      return a.Key.localeCompare(b.Key);\n    } else if (a.Key) {\n      return 1;\n    } else if (b.Key) {\n      return -1;\n    } else {\n      return a.Prefix.localeCompare(b.Prefix);\n    }\n  };\n\n  const compareFileType = (a: any, b: any) => {\n    const fileNameA = a.Key?.split(\"/\");\n    const fileNameB = b.Key?.split(\"/\");\n\n    if (!fileNameA && fileNameB) return 1;\n    if (fileNameA && !fileNameB) return -1;\n    if (!fileNameA && !fileNameB) return 0;\n\n    return formateType(fileNameA[fileNameA.length - 1]).localeCompare(\n      formateType(fileNameB[fileNameB.length - 1]),\n    );\n  };\n\n  const compareDate = (a: any, b: any) => {\n    const dateA = new Date(a.LastModified);\n    const dateB = new Date(b.LastModified);\n\n    if (dateA > dateB) {\n      return 1;\n    } else if (dateA < dateB) {\n      return -1;\n    } else {\n      return 0;\n    }\n  };\n\n  const sortData = (data: any, orderType: TOrderType) => {\n    if (!data) return [];\n\n    const sorted = [...data].sort((a, b) => {\n      switch (orderType) {\n        case \"ascFilename\":\n          return compareFilename(a, b);\n        case \"descFilename\":\n          return compareFilename(b, a);\n        case \"ascFileType\":\n          return compareFileType(a, b);\n        case \"descFileType\":\n          return compareFileType(b, a);\n        case \"ascSize\":\n          return (a.Size || 0) - (b.Size || 0);\n        case \"descSize\":\n          return (b.Size || 0) - (a.Size || 0);\n        case \"ascDate\":\n          return compareDate(a, b);\n        case \"descDate\":\n          return compareDate(b, a);\n        default:\n          return 0;\n      }\n    });\n\n    return sorted;\n  };\n\n  const renderData = useMemo(() => sortData(queryData?.data, orderType), [queryData, orderType]);\n\n  useHotkeys(\n    [\"ctrl+a\", \"meta+a\"],\n    (e) => {\n      e.preventDefault();\n      if (queryData?.data) {\n        setSelectedFiles(queryData.data.map((v) => v.Prefix || v.Key));\n      }\n    },\n    [queryData],\n  );\n\n  useHotkeys(\n    Key.Backspace,\n    async (e) => {\n      if (selectedFiles.length === 0) return;\n      confirmDialog.show({\n        bodyText: t(\"StoragePanel.DeleteFiles\", { num: selectedFiles.length }),\n        headerText: t(\"Delete\"),\n        onConfirm: async () => {\n          const closeToast = showLoading(\n            t(\"StoragePanel.DeletingFiles\", { num: selectedFiles.length }),\n            null,\n            \"orange\",\n          );\n          let cnt = 0;\n          await Promise.allSettled(\n            selectedFiles.map((v) => deleteFile(bucketName!, v).then(() => cnt++)),\n          ).finally(() => {\n            refetch();\n            closeToast();\n            if (cnt !== selectedFiles.length) {\n              showError(\n                t(\"StoragePanel.DeleteFilesResult\", {\n                  successNum: cnt,\n                  failedNum: selectedFiles.length - cnt,\n                }),\n              );\n            } else {\n              showSuccess(t(\"DeleteSuccess\"));\n            }\n          });\n        },\n        confirmButtonText: String(t(\"Delete\")),\n      });\n    },\n    [selectedFiles, bucketName],\n  );\n\n  const getLinkUrl = (file: TFile) => {\n    let fileUrl = \"\";\n    if (bucketType === \"private\") {\n      fileUrl = getFileUrl(bucketName!, file.Key);\n    } else {\n      fileUrl = getFilePath(bucketName!, file.Key);\n    }\n    return fileUrl;\n  };\n\n  const viewAppFile = (file: TFile) => {\n    window.open(getLinkUrl(file), \"_blank\");\n  };\n\n  const changeDirectory = (file: TFile) => {\n    setPrefix(file.Prefix!);\n    setMarkerArray([]);\n  };\n\n  return (\n    <>\n      <confirmDialog.Dialog />\n      <Panel style={{ flexBasis: 40, flexShrink: 0 }}>\n        <HStack\n          className={clsx(\n            \"flex h-10 justify-between border-b\",\n            darkMode ? \"border-b-grayModern-700\" : \"border-grayModern-100\",\n          )}\n        >\n          <HStack spacing={2}>\n            <UploadButton onUploadSuccess={() => refetch()}>\n              <Button\n                size=\"sm\"\n                variant=\"textGhost\"\n                leftIcon={<UploadIcon boxSize=\"6\" className=\"!text-grayModern-500\" />}\n                disabled={currentStorage === undefined}\n              >\n                <p className=\"font-semibold\">{t(\"StoragePanel.Upload\")}</p>\n              </Button>\n            </UploadButton>\n            <CreateFolderModal onCreateSuccess={() => refetch()} />\n            <Button\n              size=\"xs\"\n              variant=\"textGhost\"\n              leftIcon={<RefreshIcon boxSize=\"6\" className=\"!text-grayModern-500\" />}\n              disabled={currentStorage === undefined}\n              onClick={() => {\n                refetch();\n              }}\n            >\n              {t(\"RefreshData\")}\n            </Button>\n          </HStack>\n          <HStack spacing={2}>\n            <Button\n              className={clsx(\n                \"!mr-2 !text-base !font-normal\",\n                darkMode ? \"!text-grayModern-300\" : \"!text-grayModern-600\",\n              )}\n              isDisabled={markerArray.length === 0}\n              onClick={() => {\n                if (markerArray.length === 0) return;\n                setMarkerArray(markerArray.slice(0, markerArray.length - 1));\n              }}\n              variant=\"unstyled\"\n            >\n              {t(\"PreviousPage\")}\n            </Button>\n            <Button\n              className={clsx(\n                \"!text-base !font-normal\",\n                darkMode ? \"!text-grayModern-300\" : \"!text-grayModern-600\",\n              )}\n              isDisabled={!queryData?.marker}\n              onClick={() => {\n                if (!queryData?.marker) return;\n                setMarkerArray([...markerArray, queryData?.marker]);\n              }}\n              variant=\"unstyled\"\n            >\n              {t(\"NextPage\")}\n            </Button>\n            <div className=\"!mx-4\">\n              <Select\n                className=\"!h-6 !text-base\"\n                onChange={(e) => setPageSize(Number(e.target.value))}\n              >\n                {[20, 50, 100].map((item) => (\n                  <option key={item} value={item}>\n                    {item} / {t(\"Page\")}\n                  </option>\n                ))}\n              </Select>\n            </div>\n            <CreateWebsiteModal />\n          </HStack>\n        </HStack>\n      </Panel>\n      <Panel className=\"flex-grow overflow-hidden\">\n        <Panel.Header\n          className={clsx(\"mb-2 ml-4 flex-none\", {\n            \"border-lafWhite-400\": !darkMode,\n          })}\n        >\n          <PathLink />\n        </Panel.Header>\n        <div className=\"flex-grow overflow-y-scroll px-2 pb-2\">\n          {isFetching ? (\n            <Center className=\"bg-white-200 h-full opacity-60\">\n              <Spinner size=\"lg\" />\n            </Center>\n          ) : !queryData ||\n            queryData.data.length === 0 ||\n            (queryData.data.length === 1 && queryData.data[0].Key === prefix) ? (\n            <EmptyBox>\n              <UploadButton onUploadSuccess={() => refetch()}>\n                <div className=\"text-lg\">\n                  <span>{t(\"StoragePanel.UploadTip\")}</span>\n                  <span className=\"ml-2 cursor-pointer text-primary-600 hover:border-b-2 hover:border-primary-600\">\n                    {t(\"StoragePanel.InstantUpload\")}\n                  </span>\n                </div>\n              </UploadButton>\n            </EmptyBox>\n          ) : (\n            <div>\n              <TableContainer className=\"h-full\" style={{ overflowY: \"auto\" }}>\n                <Table variant=\"simple\" size=\"sm\">\n                  <Thead\n                    className={clsx(\"h-8\", {\n                      \"bg-lafWhite-400\": !darkMode,\n                      \"bg-lafDark-100\": darkMode,\n                    })}\n                  >\n                    <Tr>\n                      <Th>\n                        <span>{t(\"StoragePanel.FileName\")}</span>\n                        <SortIcon\n                          currentOrderType={orderType}\n                          orderTypeAsc=\"ascFilename\"\n                          orderTypeDesc=\"descFilename\"\n                          onSort={() =>\n                            setOrderType(\n                              orderType === \"ascFilename\" ? \"descFilename\" : \"ascFilename\",\n                            )\n                          }\n                        />\n                      </Th>\n                      <Th>\n                        <span>{t(\"StoragePanel.FileType\")}</span>\n                        <SortIcon\n                          currentOrderType={orderType}\n                          orderTypeAsc=\"ascFileType\"\n                          orderTypeDesc=\"descFileType\"\n                          onSort={() =>\n                            setOrderType(\n                              orderType === \"ascFileType\" ? \"descFileType\" : \"ascFileType\",\n                            )\n                          }\n                        />\n                      </Th>\n                      <Th>\n                        <span>{t(\"StoragePanel.Size\")}</span>\n                        <SortIcon\n                          currentOrderType={orderType}\n                          orderTypeAsc=\"ascSize\"\n                          orderTypeDesc=\"descSize\"\n                          onSort={() =>\n                            setOrderType(orderType === \"ascSize\" ? \"descSize\" : \"ascSize\")\n                          }\n                        />\n                      </Th>\n                      <Th>\n                        <span>{t(\"StoragePanel.Time\")}</span>\n                        <SortIcon\n                          currentOrderType={orderType}\n                          orderTypeAsc=\"ascDate\"\n                          orderTypeDesc=\"descDate\"\n                          onSort={() =>\n                            setOrderType(orderType === \"ascDate\" ? \"descDate\" : \"ascDate\")\n                          }\n                        />\n                      </Th>\n                      <Th isNumeric>\n                        <span className=\"mr-2\">{t(\"Operation\")}</span>\n                      </Th>\n                    </Tr>\n                  </Thead>\n                  <Tbody className=\"text-grayModern-500\">\n                    {renderData?.map((file: TFile) => {\n                      const fileName = file.Key?.split(\"/\");\n                      const dirName = file.Prefix?.split(\"/\") || [];\n                      const fileType = file.Prefix\n                        ? \"folder\"\n                        : formateType(fileName[fileName.length - 1]);\n                      return (\n                        <Tr\n                          className={clsx({\n                            \"bg-lafWhite-600\":\n                              !darkMode && selectedFiles.includes(file.Prefix || file.Key),\n                            \"bg-lafDark-300\":\n                              darkMode && selectedFiles.includes(file.Prefix || file.Key),\n                          })}\n                          key={file.Key || file.Prefix}\n                        >\n                          <Td\n                            style={{\n                              maxWidth: 200,\n                              overflow: \"hidden\",\n                              textOverflow: \"ellipsis\",\n                              whiteSpace: \"nowrap\",\n                            }}\n                            onDoubleClick={() =>\n                              file.Prefix ? changeDirectory(file) : viewAppFile(file)\n                            }\n                            onClick={(e) => {\n                              const key = file.Prefix || file.Key;\n                              if (e.ctrlKey || e.metaKey || e.altKey) {\n                                setSelectedFiles((files) => {\n                                  if (files.includes(key)) {\n                                    return files.filter((v) => v !== key);\n                                  }\n                                  return [...files, key];\n                                });\n                              } else {\n                                setSelectedFiles([key]);\n                              }\n                            }}\n                            className=\"cursor-pointer font-bold\"\n                          >\n                            <FileTypeIcon type={fileType} />\n                            {file.Prefix ? (\n                              <span className=\"ml-2\">{dirName[dirName.length - 2]}</span>\n                            ) : (\n                              <span className=\"ml-2\">{fileName[fileName.length - 1]}</span>\n                            )}\n                          </Td>\n                          <Td>{fileType}</Td>\n                          <Td>{file.Size ? formatSize(file.Size) : \"--\"}</Td>\n                          <Td>{file.LastModified ? formatDate(file.LastModified) : \"--\"}</Td>\n                          <Td\n                            isNumeric\n                            className={clsx(\"flex justify-end space-x-1\", {\n                              \"text-grayModern-900\": !darkMode,\n                            })}\n                          >\n                            <IconWrap\n                              placement=\"left\"\n                              tooltip={\n                                bucketType === BUCKET_POLICY_TYPE.private && file.Key\n                                  ? t(\"StoragePanel.TimeTip\").toString()\n                                  : undefined\n                              }\n                              onClick={() => viewAppFile(file)}\n                            >\n                              <OutlineViewOnIcon fontSize={14} />\n                            </IconWrap>\n                            {!file.Prefix ? (\n                              <>\n                                <IconWrap>\n                                  <CopyText text={getLinkUrl(file)} tip={String(t(\"LinkCopied\"))}>\n                                    <LinkIcon fontSize={22} />\n                                  </CopyText>\n                                </IconWrap>\n                                <ConfirmButton\n                                  onSuccessAction={async () => {\n                                    await deleteFile(bucketName!, file.Key);\n                                    refetch();\n                                  }}\n                                  headerText={String(t(\"Delete\"))}\n                                  bodyText={t(\"StoragePanel.DeleteFileTip\")}\n                                >\n                                  <IconWrap tooltip={String(t(\"Delete\"))}>\n                                    <RecycleDeleteIcon fontSize={16} />\n                                  </IconWrap>\n                                </ConfirmButton>\n                              </>\n                            ) : (\n                              <ConfirmButton\n                                onSuccessAction={async () => {\n                                  await deleteFile(bucketName!, file.Prefix as string);\n                                  refetch();\n                                }}\n                                headerText={String(t(\"Delete\"))}\n                                bodyText={t(\"StoragePanel.DeleteFolderTip\")}\n                              >\n                                <IconWrap tooltip={String(t(\"Delete\"))}>\n                                  <RecycleDeleteIcon fontSize={16} />\n                                </IconWrap>\n                              </ConfirmButton>\n                            )}\n                          </Td>\n                        </Tr>\n                      );\n                    })}\n                  </Tbody>\n                </Table>\n              </TableContainer>\n            </div>\n          )}\n        </div>\n      </Panel>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/storages/mods/HostingDrawer/index.tsx",
    "content": "import React from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport {\n  Button,\n  Drawer,\n  DrawerBody,\n  DrawerCloseButton,\n  DrawerContent,\n  DrawerFooter,\n  DrawerHeader,\n  DrawerOverlay,\n  FormControl,\n  FormLabel,\n  Input,\n  useDisclosure,\n  VStack,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nfunction DrawerExample() {\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { register, handleSubmit } = useForm();\n\n  return (\n    <>\n      <Button size=\"xs\" onClick={onOpen}>\n        网站托管\n      </Button>\n\n      <Drawer isOpen={isOpen} placement=\"right\" size={\"md\"} onClose={onClose}>\n        <DrawerOverlay />\n        <DrawerContent>\n          <DrawerCloseButton />\n          <DrawerHeader>网站托管</DrawerHeader>\n\n          <DrawerBody pb={6}>\n            <VStack spacing={6} align=\"flex-start\">\n              <FormControl isRequired>\n                <FormLabel htmlFor=\"siteName\">网站名称</FormLabel>\n                <Input\n                  {...register(\"siteName\", {\n                    required: true,\n                  })}\n                  id=\"siteName\"\n                  variant=\"filled\"\n                />\n              </FormControl>\n\n              <FormControl isRequired>\n                <FormLabel htmlFor=\"bucketName\">Bucket</FormLabel>\n                <Input\n                  {...register(\"bucketName\", {\n                    required: true,\n                  })}\n                  id=\"name\"\n                  variant=\"filled\"\n                />\n              </FormControl>\n\n              <FormControl isRequired>\n                <FormLabel htmlFor=\"domainName\">域名</FormLabel>\n                <Input\n                  {...register(\"domainName\", {\n                    required: true,\n                  })}\n                  id=\"domainName\"\n                  variant=\"filled\"\n                />\n              </FormControl>\n\n              <FormControl isRequired>\n                <FormLabel htmlFor=\"customDomain\">自定义域名</FormLabel>\n                <Input\n                  {...register(\"customDomain\", {\n                    required: true,\n                  })}\n                  id=\"customDomain\"\n                  variant=\"filled\"\n                />\n              </FormControl>\n            </VStack>\n          </DrawerBody>\n\n          <DrawerFooter>\n            <Button variant=\"outline\" mr={3} onClick={onClose}>\n              {t(\" Cancel\")}\n            </Button>\n            <Button colorScheme=\"blue\" onClick={handleSubmit(() => {})}>\n              {t(\" Confirm\")}\n            </Button>\n          </DrawerFooter>\n        </DrawerContent>\n      </Drawer>\n    </>\n  );\n}\n\nexport default DrawerExample;\n"
  },
  {
    "path": "web/src/pages/app/storages/mods/PathLink/index.tsx",
    "content": "import useStorageStore from \"../../store\";\n\nfunction PathLink() {\n  const { currentStorage, prefix, setPrefix } = useStorageStore();\n  const bucketName = currentStorage?.name || \"\";\n\n  const str = prefix?.split(\"/\").filter((s) => s !== \"\");\n\n  const paths = str?.map((s, i) => {\n    str[i] = str[i - 1] ? `${str[i - 1]}/${s}/` : `/${s}/`;\n    return {\n      name: s,\n      path: str[i],\n    };\n  });\n\n  paths?.unshift({\n    name: bucketName,\n    path: \"/\",\n  });\n\n  const changeDirectory = (path: string) => {\n    setPrefix(path);\n  };\n\n  return (\n    <div>\n      {paths?.map((p, index) => (\n        <span\n          key={p.path}\n          className={\n            index === paths?.length - 1 ? \"text-black-500 font-medium\" : \"text-grayModern-500\"\n          }\n        >\n          <span className=\"cursor-pointer\" onClick={() => changeDirectory(p.path)}>\n            {p.name}\n          </span>\n          <span className=\"mx-2\">/</span>\n        </span>\n      ))}\n    </div>\n  );\n}\n\nexport default PathLink;\n"
  },
  {
    "path": "web/src/pages/app/storages/mods/StorageListPanel/index.tsx",
    "content": "import { useState } from \"react\";\nimport { AddIcon, Search2Icon } from \"@chakra-ui/icons\";\nimport {\n  Center,\n  Input,\n  InputGroup,\n  InputLeftElement,\n  Spinner,\n  Tag,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { EditIconLine, RefreshIcon } from \"@/components/CommonIcon\";\nimport EmptyBox from \"@/components/EmptyBox\";\nimport FileTypeIcon, { FileType } from \"@/components/FileTypeIcon\";\nimport IconText from \"@/components/IconText\";\nimport IconWrap from \"@/components/IconWrap\";\nimport MoreButton from \"@/components/MoreButton\";\nimport Panel from \"@/components/Panel\";\nimport SectionList from \"@/components/SectionList\";\n\nimport { useBucketListQuery } from \"../../service\";\nimport useStorageStore from \"../../store\";\nimport CreateBucketModal from \"../CreateBucketModal\";\nimport DeleteBucketModal from \"../DeleteBucketModal\";\n\nimport { TBucket } from \"@/apis/typing\";\n\nexport default function StorageListPanel() {\n  const [search, setSearch] = useState(\"\");\n  const [storageList, setStorageList] = useState<any>([]);\n  const store = useStorageStore((store) => store);\n  const darkMode = useColorMode().colorMode === \"dark\";\n  const bucketListQuery = useBucketListQuery({\n    onSuccess(data) {\n      if (data?.data?.length) {\n        setStorageList(data.data);\n        if (store?.currentStorage === undefined) {\n          store.setCurrentStorage(data?.data[0]);\n        } else {\n          store.setCurrentStorage(\n            data?.data?.filter((item: any) => item._id === store?.currentStorage?._id)[0],\n          );\n        }\n      } else {\n        setStorageList([]);\n        store.setCurrentStorage(undefined);\n      }\n    },\n  });\n\n  return (\n    <Panel className=\"h-full min-w-[215px]\">\n      <Panel.Header\n        title={t(\"StoragePanel.StorageList\")}\n        actions={[\n          <IconWrap\n            key=\"refresh_storage\"\n            tooltip={t(\"Refresh\").toString()}\n            onClick={() => {\n              bucketListQuery.refetch();\n            }}\n          >\n            <RefreshIcon fontSize={16} />\n          </IconWrap>,\n          <CreateBucketModal key=\"create_modal\">\n            <IconWrap size={20} tooltip={t(\"Create\") + \" Bucket\"}>\n              <AddIcon fontSize={10} />\n            </IconWrap>\n          </CreateBucketModal>,\n        ]}\n      />\n      <div className=\"flex w-full flex-col\" style={{ height: \"calc(100% - 36px)\" }}>\n        <InputGroup className=\"my-1.5\">\n          <InputLeftElement\n            height=\"6\"\n            pointerEvents=\"none\"\n            children={<Search2Icon color=\"gray.300\" fontSize=\"12\" />}\n          />\n          <Input\n            rounded=\"full\"\n            placeholder={t(\"StoragePanel.SearchBucket\").toString()}\n            height=\"6\"\n            pl=\"8\"\n            fontSize=\"sm\"\n            onChange={(e) => setSearch(e.target.value)}\n          />\n        </InputGroup>\n        <div className=\"relative flex-grow overflow-auto\">\n          {bucketListQuery.isFetching ? (\n            <Center className=\"bg-white-200 absolute bottom-0 left-0 right-0 top-0 z-10 opacity-60\">\n              <Spinner />\n            </Center>\n          ) : null}\n          {storageList?.length ? (\n            <SectionList>\n              {storageList\n                ?.filter((storage: TBucket) => storage?.name.indexOf(search) >= 0)\n                .map((storage: TBucket) => {\n                  return (\n                    <SectionList.Item\n                      isActive={storage?.name === store.currentStorage?.name}\n                      key={storage?.name}\n                      className={clsx(\n                        \"group h-7 hover:!text-primary-700\",\n                        darkMode ? \"text-grayIron-200\" : \" text-grayIron-700\",\n                        storage?.name === store.currentStorage?.name && \"!text-primary-700\",\n                      )}\n                      onClick={() => {\n                        store.setCurrentStorage(storage);\n                        store.setPrefix(\"/\");\n                        store.setMarkerArray([]);\n                      }}\n                    >\n                      <>\n                        <div className=\"flex flex-1 truncate font-medium\">\n                          <FileTypeIcon type={FileType.bucket} />\n                          <div className=\"ml-1 text-base\">{storage.name}</div>\n                        </div>\n                        <div className=\"flex items-center\">\n                          <Tag size=\"sm\" className=\"w-16 justify-center\" variant={storage?.policy}>\n                            {storage?.policy}\n                          </Tag>\n                          <MoreButton isHidden={false} label={t(\"Operation\")}>\n                            <>\n                              <CreateBucketModal storage={storage}>\n                                <IconText\n                                  icon={\n                                    <div className=\"flex h-full items-center\">\n                                      <EditIconLine />\n                                    </div>\n                                  }\n                                  text={t(\"Edit\")}\n                                />\n                              </CreateBucketModal>\n                              <DeleteBucketModal storage={storage} onSuccessAction={() => {}} />\n                            </>\n                          </MoreButton>\n                        </div>\n                      </>\n                    </SectionList.Item>\n                  );\n                })}\n            </SectionList>\n          ) : (\n            <EmptyBox hideIcon>\n              <p>{t(\"StoragePanel.EmptyStorageTip\")}</p>\n            </EmptyBox>\n          )}\n        </div>\n      </div>\n    </Panel>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/app/storages/mods/UploadButton/index.tsx",
    "content": "import React from \"react\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { CheckCircleIcon, WarningIcon } from \"@chakra-ui/icons\";\nimport {\n  Button,\n  Modal,\n  ModalCloseButton,\n  ModalContent,\n  ModalHeader,\n  ModalOverlay,\n  Spinner,\n  useColorMode,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport FileUpload from \"@/components/FileUpload\";\n\nimport useStorageStore from \"../../store\";\n\nimport useAwsS3 from \"@/hooks/useAwsS3\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport type TFileItem = {\n  status: string;\n  fileName: string;\n};\nfunction UploadButton(props: { onUploadSuccess: Function; children: React.ReactElement }) {\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { currentStorage, prefix } = useStorageStore();\n  const { showSuccess, showError } = useGlobalStore();\n  const { uploadFile } = useAwsS3();\n  const [fileList, setFileList] = React.useState<TFileItem[]>([]);\n  const { t } = useTranslation();\n  const darkMode = useColorMode().colorMode === \"dark\";\n  const { onUploadSuccess, children } = props;\n  const [failedFileList, setFailedFileList] = React.useState<any>([]);\n\n  const handleUpload = async (files: any) => {\n    setFailedFileList([]);\n    const newFileList = Array.from(files).map((item: any) => ({\n      fileName:\n        files[0] instanceof File\n          ? item.webkitRelativePath\n            ? item.webkitRelativePath.replace(/^[^/]*\\//, \"\")\n            : item.name\n          : item.webkitRelativePath\n          ? item.webkitRelativePath\n          : item.file.name,\n      status: \"pending\",\n    }));\n    setFileList(newFileList);\n    const tasks = [];\n    const failedFiles: any[] = [];\n    for (let i = 0; i < files.length; i++) {\n      const file = files[0] instanceof File ? files[i] : files[i].file;\n      const fileName =\n        files[0] instanceof File\n          ? file.webkitRelativePath\n            ? file.webkitRelativePath.replace(/^[^/]*\\//, \"\")\n            : file.name\n          : files[i].webkitRelativePath\n          ? files[i].webkitRelativePath\n          : file.name;\n      const task = uploadFile(currentStorage?.name!, prefix + fileName, file, {\n        contentType: file.type,\n      })\n        .then(() => {\n          setFileList((pre) => {\n            const newList = [...pre];\n            newList[i].status = \"success\";\n            return newList;\n          });\n          return true;\n        })\n        .catch(() => {\n          setFileList((pre) => {\n            const newList = [...pre];\n            newList[i].status = \"fail\";\n            failedFiles.push(files[i]);\n            return newList;\n          });\n          return false;\n        });\n      tasks.push(task);\n    }\n    const res = await Promise.all(tasks);\n    onUploadSuccess();\n    if (!res.includes(false)) {\n      onClose();\n      showSuccess(t(\"StoragePanel.Success\"));\n    } else {\n      setFailedFileList(failedFiles);\n      showError(t(\"StoragePanel.Fail\"));\n    }\n  };\n\n  return (\n    <div>\n      {React.cloneElement(children, {\n        onClick: () => {\n          setFileList([]);\n          setFailedFileList([]);\n          onOpen();\n        },\n      })}\n\n      <Modal isOpen={isOpen} onClose={onClose} size=\"lg\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"StoragePanel.UploadFile\")}</ModalHeader>\n          <ModalCloseButton />\n          <div className=\"p-6\">\n            <FileUpload onUpload={handleUpload} darkMode={darkMode} />\n            {!!failedFileList.length && (\n              <div className=\"mx-4 mt-4 flex justify-between text-lg text-red-500\">\n                <Trans\n                  t={t}\n                  i18nKey=\"StoragePanel.UploadFailTip\"\n                  values={{\n                    number: failedFileList.length,\n                  }}\n                />\n                <Button\n                  variant=\"link\"\n                  className=\"!text-blue-600\"\n                  onClick={() => {\n                    handleUpload(failedFileList);\n                  }}\n                >\n                  {t(\"Retry\")}\n                </Button>\n              </div>\n            )}\n            <div className=\"mt-2 max-h-40 overflow-auto\">\n              {fileList.map((item) => {\n                return (\n                  <div\n                    key={item.fileName}\n                    className={clsx(\n                      \"my-2 flex h-10 w-full items-center justify-between px-5\",\n                      darkMode ? \"hover:bg-lafDark-300\" : \"hover:bg-slate-100\",\n                    )}\n                  >\n                    <span className=\"text-slate-500\">{item.fileName}</span>\n                    {item.status === \"success\" && (\n                      <CheckCircleIcon color=\"green.500\" fontSize={20} />\n                    )}\n                    {item.status === \"pending\" && <Spinner size=\"xs\" className=\"mr-1\" />}\n                    {item.status === \"fail\" && (\n                      <WarningIcon className=\"!text-red-400\" fontSize={20} />\n                    )}\n                  </div>\n                );\n              })}\n            </div>\n          </div>\n        </ModalContent>\n      </Modal>\n    </div>\n  );\n}\n\nexport default UploadButton;\n"
  },
  {
    "path": "web/src/pages/app/storages/mods/index.module.scss",
    "content": ".circle::before {\n  display: inline-block;\n  width: 8px;\n  height: 8px;\n  border-radius: 50%;\n  margin-right: 4px;\n}\n"
  },
  {
    "path": "web/src/pages/app/storages/service.ts",
    "content": "import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\n\nimport { formatCapacity } from \"@/utils/format\";\n\nimport useStorageStore from \"./store\";\n\nimport {\n  BucketControllerCreate,\n  BucketControllerFindAll,\n  BucketControllerRemove,\n  BucketControllerUpdate,\n  WebsiteControllerBindDomain,\n  WebsiteControllerCreate,\n  WebsiteControllerFindAll,\n  WebsiteControllerRemove,\n} from \"@/apis/v1/apps\";\nimport useGlobalStore from \"@/pages/globalStore\";\nconst queryKeys = {\n  useBucketListQuery: [\"useBucketListQuery\"],\n  useFileListQuery: [\"useFileListQuery\"],\n  useWebsiteListQuery: [\"useWebsiteListQuery\"],\n};\n\nexport const useBucketListQuery = (config?: { onSuccess: (data: any) => void }) => {\n  const globalStore = useGlobalStore();\n  const store = useStorageStore();\n  return useQuery(\n    queryKeys.useBucketListQuery,\n    () => {\n      return BucketControllerFindAll({});\n    },\n    {\n      onSuccess: (data) => {\n        data.data = data.data.filter((item: any) => item.state === \"Active\");\n        let number = formatCapacity(\n          String(globalStore.currentApp?.bundle.resource.storageCapacity),\n        );\n        if (data?.data?.items?.length) {\n          data?.data?.items.forEach((item: any) => {\n            number -= formatCapacity(item.spec.storage);\n          });\n        }\n        const { setMaxStorage } = store;\n        setMaxStorage(number);\n        config?.onSuccess(data);\n      },\n    },\n  );\n};\n\nexport const useBucketCreateMutation = (config?: { onSuccess: (data: any) => void }) => {\n  const queryClient = useQueryClient();\n  const store = useStorageStore();\n  return useMutation(\n    (values: any) => {\n      return BucketControllerCreate(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          store.setCurrentStorage(data.data);\n          await queryClient.invalidateQueries(queryKeys.useBucketListQuery);\n        }\n      },\n    },\n  );\n};\n\nexport const useBucketUpdateMutation = (config?: { onSuccess: (data: any) => void }) => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (values: any) => {\n      return BucketControllerUpdate(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          await queryClient.invalidateQueries(queryKeys.useBucketListQuery);\n          config?.onSuccess && config.onSuccess(data);\n        }\n      },\n    },\n  );\n};\n\nexport const useBucketDeleteMutation = () => {\n  const globalStore = useGlobalStore();\n  const queryClient = useQueryClient();\n  const store = useStorageStore();\n  return useMutation(\n    (values: any) => {\n      return BucketControllerRemove(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          globalStore.showSuccess(\"delete success\");\n          store.setCurrentStorage(undefined);\n          await queryClient.invalidateQueries(queryKeys.useBucketListQuery);\n        }\n      },\n    },\n  );\n};\n\nexport const useWebsiteListQuery = (config?: { onSuccess: (data: any) => void }) => {\n  // const globalStore = useGlobalStore();\n  // const store = useStorageStore();\n  return useQuery(\n    queryKeys.useWebsiteListQuery,\n    () => {\n      return WebsiteControllerFindAll({});\n    },\n    {\n      onSuccess: (data) => {\n        config?.onSuccess(data);\n      },\n    },\n  );\n};\n\nexport const useWebsiteCreateMutation = (config?: { onSuccess: (data: any) => void }) => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (values: any) => {\n      return WebsiteControllerCreate(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          await queryClient.invalidateQueries(queryKeys.useBucketListQuery);\n        }\n      },\n    },\n  );\n};\n\nexport const useWebsiteDeleteMutation = () => {\n  const globalStore = useGlobalStore();\n  const queryClient = useQueryClient();\n  return useMutation(\n    (values: any) => {\n      return WebsiteControllerRemove(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          globalStore.showSuccess(\"delete success\");\n          await queryClient.invalidateQueries(queryKeys.useBucketListQuery);\n        }\n      },\n    },\n  );\n};\n\nexport const useWebSiteUpdateMutation = (config?: { onSuccess: (data: any) => void }) => {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (values: any) => {\n      return WebsiteControllerBindDomain(values);\n    },\n    {\n      onSuccess: async (data) => {\n        if (!data.error) {\n          await queryClient.invalidateQueries(queryKeys.useBucketListQuery);\n          config?.onSuccess && config.onSuccess(data);\n        }\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/app/storages/store.ts",
    "content": "import { create } from \"zustand\";\nimport { devtools } from \"zustand/middleware\";\nimport { immer } from \"zustand/middleware/immer\";\n\nimport { formatPort } from \"@/utils/format\";\n\nimport { TBucket } from \"@/apis/typing\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport type TFile = {\n  Key: string;\n  LastModified: string;\n  ETag: string;\n  ChecksumAlgorithm: any[];\n  Size: number;\n  StorageClass: string;\n  Owner: {\n    DisplayName: string;\n    ID: string;\n  };\n  Prefix?: string;\n};\n\ntype State = {\n  currentStorage?: TBucket | undefined;\n  setCurrentStorage: (currentStorage: TBucket | undefined) => void;\n  markerArray: string[];\n  setMarkerArray: (markerArray: string[]) => void;\n  prefix?: string;\n  setPrefix: (prefix: string) => void;\n  maxStorage: number;\n  setMaxStorage: (number: number) => void;\n  getOrigin: (origin: string) => string;\n  getFilePath: (bucket: string, file: string) => string;\n};\n\nconst useStorageStore = create<State>()(\n  devtools(\n    immer((set, get) => ({\n      currentStorage: undefined,\n      setCurrentStorage: (currentStorage) =>\n        set((state) => {\n          state.currentStorage = currentStorage;\n        }),\n      markerArray: [],\n      setMarkerArray: (markerArray) =>\n        set((state) => {\n          state.markerArray = markerArray;\n        }),\n      prefix: \"/\",\n      setPrefix: (prefix) =>\n        set((state) => {\n          state.prefix = prefix;\n        }),\n      maxStorage: 0,\n      setMaxStorage: (number) =>\n        set((state) => {\n          state.maxStorage = number;\n        }),\n\n      getOrigin: (domain: string) => {\n        const currentApp = useGlobalStore.getState().currentApp;\n        return `${currentApp?.tls ? \"https\" : \"http\"}://${domain}${formatPort(currentApp?.port)}`;\n      },\n\n      getFilePath: (bucket: string, file: string) => {\n        const currentApp = useGlobalStore.getState().currentApp;\n        return `${currentApp.storage.endpoint}/${bucket}/${file}`;\n      },\n    })),\n  ),\n);\n\nexport default useStorageStore;\n"
  },
  {
    "path": "web/src/pages/auth/bind/BindGitHub/index.tsx",
    "content": "import { useEffect } from \"react\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { Spinner } from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { Routes } from \"@/constants\";\n\nimport {\n  useGithubAuthControllerBindMutation,\n  useGithubAuthControllerSigninMutation,\n} from \"@/pages/auth/service\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function BindGitHub() {\n  const navigate = useNavigate();\n  const location = useLocation();\n\n  const githubAuthControllerSigninMutation = useGithubAuthControllerSigninMutation();\n  const githubAuthControllerBindMutation = useGithubAuthControllerBindMutation();\n\n  const showSuccess = useGlobalStore((state) => state.showSuccess);\n\n  useEffect(() => {\n    async function getGithubToken() {\n      const searchParams = new URLSearchParams(location.search);\n      const code = searchParams.get(\"code\");\n      if (code) {\n        const res = await githubAuthControllerSigninMutation.mutateAsync({\n          code,\n        });\n\n        if (!res.error) {\n          localStorage.setItem(\"token\", res.data);\n          navigate(Routes.dashboard, { replace: true });\n        } else if (localStorage.getItem(\"token\") && res.data) {\n          const bind_res = await githubAuthControllerBindMutation.mutateAsync({\n            token: res.data,\n          });\n          if (!bind_res.error) {\n            showSuccess(t(\"AuthPanel.BindSuccess\"));\n          }\n          navigate(Routes.dashboard, { replace: true });\n        } else if (!localStorage.getItem(\"token\")) {\n          navigate(Routes.login, { replace: true });\n          res.data && sessionStorage.setItem(\"githubToken\", res.data);\n        } else {\n          navigate(Routes.dashboard, { replace: true });\n        }\n      }\n    }\n    getGithubToken();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  return (\n    <div className=\"absolute left-1/2 top-1/2 flex -translate-x-1/2 -translate-y-1/2 space-x-4 text-grayModern-700\">\n      <div>\n        <Spinner />\n      </div>\n      <div className=\"pb-6 text-2xl font-semibold\">{t(\"AuthPanel.GitHubLogin\")}</div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/auth/reset-password/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n  Button,\n  FormControl,\n  FormLabel,\n  Input,\n  InputGroup,\n  InputRightElement,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { OutlineViewOffIcon, OutlineViewOnIcon } from \"@/components/CommonIcon\";\nimport { Logo, LogoText } from \"@/components/LogoIcon\";\nimport { SendEmailCodeButton } from \"@/components/SendEmailCodeButton\";\nimport { SendSmsCodeButton } from \"@/components/SendSmsCodeButton\";\nimport { COLOR_MODE, PROVIDER_NAME } from \"@/constants\";\n\nimport useAuthStore from \"../store\";\n\nimport { useResetPasswordMutation } from \"@/pages/auth/service\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype FormData = {\n  phone?: string;\n  email?: string;\n  validationCode?: string;\n  account: string;\n  password: string;\n  confirmPassword: string;\n};\n\nexport default function ResetPassword() {\n  const resetPasswordMutation = useResetPasswordMutation();\n  const { showSuccess, showError } = useGlobalStore();\n  const navigate = useNavigate();\n  const { defaultProvider } = useAuthStore();\n\n  const [isShowPassword, setIsShowPassword] = useState(false);\n\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  const {\n    register,\n    handleSubmit,\n    getValues,\n    formState: { errors },\n  } = useForm<FormData>({\n    defaultValues: {\n      phone: \"\",\n      validationCode: \"\",\n      password: \"\",\n      confirmPassword: \"\",\n    },\n  });\n\n  const onSubmit = async (data: FormData) => {\n    if (data.password !== data.confirmPassword) {\n      showError(t(\"AuthPanel.PasswordNotMatch\"));\n      return;\n    }\n\n    const params =\n      defaultProvider.name === PROVIDER_NAME.PHONE\n        ? {\n            phone: data.phone,\n            code: data.validationCode,\n            password: data.password,\n            type: \"ResetPassword\",\n          }\n        : {\n            email: data.email,\n            code: data.validationCode,\n            password: data.password,\n            type: \"ResetPassword\",\n          };\n\n    const res = await resetPasswordMutation.mutateAsync(params);\n\n    if (res?.data) {\n      showSuccess(t(\"AuthPanel.ResetPasswordSuccess\"));\n      navigate(\"/login\", { replace: true });\n    }\n  };\n\n  return (\n    <div\n      className={clsx(\n        \"absolute right-[125px] top-1/2 h-[640px] w-[560px] -translate-y-1/2 rounded-3xl px-16 pt-[78px]\",\n        { \"bg-white\": !darkMode, \"bg-lafDark-100\": darkMode },\n      )}\n    >\n      <div className=\"mb-9 flex items-center space-x-4\">\n        <Logo size=\"43px\" outerColor=\"#33BABB\" innerColor=\"white\" />\n        <LogoText size=\"51px\" color={darkMode ? \"#33BABB\" : \"#363C42\"} />\n      </div>\n      <div>\n        {defaultProvider.name === PROVIDER_NAME.PHONE && (\n          <FormControl isInvalid={!!errors?.phone} className=\"mb-6 flex items-center\">\n            <FormLabel className=\"w-20\" htmlFor=\"phone\">\n              {t(\"AuthPanel.Phone\")}\n            </FormLabel>\n            <InputGroup>\n              <Input\n                {...register(\"phone\", {\n                  required: true,\n                  pattern: {\n                    value: /^1[2-9]\\d{9}$/,\n                    message: t(\"AuthPanel.PhoneTip\"),\n                  },\n                })}\n                type=\"tel\"\n                id=\"phone\"\n                placeholder={t(\"AuthPanel.PhonePlaceholder\") || \"\"}\n                bg={darkMode ? \"#363C42\" : \"#F8FAFB\"}\n                border={darkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n                height=\"48px\"\n                rounded=\"4px\"\n              />\n              <InputRightElement width=\"6rem\" height=\"100%\">\n                <SendSmsCodeButton\n                  getPhone={getValues}\n                  phoneNumber={\"phone\"}\n                  type=\"ResetPassword\"\n                />\n              </InputRightElement>\n            </InputGroup>\n          </FormControl>\n        )}\n        {defaultProvider.name === PROVIDER_NAME.EMAIL && (\n          <FormControl isInvalid={!!errors?.email} className=\"mb-6 flex items-center\">\n            <FormLabel className=\"w-20\" htmlFor=\"email\">\n              {t(\"AuthPanel.Email\")}\n            </FormLabel>\n            <InputGroup>\n              <Input\n                {...register(\"email\", {\n                  required: true,\n                  pattern: {\n                    value: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/i,\n                    message: t(\"AuthPanel.EmailTip\"),\n                  },\n                })}\n                type=\"email\"\n                id=\"email\"\n                placeholder={t(\"AuthPanel.EmailPlaceholder\") || \"\"}\n                bg={darkMode ? \"#363C42\" : \"#F8FAFB\"}\n                border={darkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n                height=\"48px\"\n                rounded=\"4px\"\n              />\n              <InputRightElement width=\"6rem\" height=\"100%\">\n                <SendEmailCodeButton\n                  getEmail={getValues}\n                  emailAccount={\"email\"}\n                  type=\"ResetPassword\"\n                />\n              </InputRightElement>\n            </InputGroup>\n          </FormControl>\n        )}\n        <FormControl isInvalid={!!errors.validationCode} className=\"mb-6 flex items-center\">\n          <FormLabel className=\"w-20\" htmlFor=\"validationCode\">\n            {t(\"AuthPanel.ValidationCode\")}\n          </FormLabel>\n          <Input\n            type=\"number\"\n            {...register(\"validationCode\", {\n              required: true,\n              pattern: {\n                value: /^\\d{6}$/,\n                message: t(\"AuthPanel.ValidationCodePlaceholder\"),\n              },\n            })}\n            id=\"validationCode\"\n            placeholder={t(\"AuthPanel.ValidationCodePlaceholder\") || \"\"}\n            bg={darkMode ? \"#363C42\" : \"#F8FAFB\"}\n            border={darkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n            height=\"48px\"\n            rounded=\"4px\"\n          />\n        </FormControl>\n        <FormControl isInvalid={!!errors.password} className=\"mb-6 flex items-center\">\n          <FormLabel className=\"w-20\" htmlFor=\"password\">\n            {t(\"AuthPanel.NewPassword\")}\n          </FormLabel>\n          <InputGroup>\n            <Input\n              type={isShowPassword ? \"text\" : \"password\"}\n              {...register(\"password\", {\n                required: true,\n              })}\n              id=\"password\"\n              placeholder={t(\"AuthPanel.PasswordPlaceholder\") || \"\"}\n              bg={darkMode ? \"#363C42\" : \"#F8FAFB\"}\n              border={darkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n              height=\"48px\"\n              rounded=\"4px\"\n            />\n            <InputRightElement width=\"2rem\" height=\"100%\">\n              {isShowPassword ? (\n                <OutlineViewOffIcon\n                  className=\"cursor-pointer !text-primary-500\"\n                  onClick={() => setIsShowPassword(false)}\n                />\n              ) : (\n                <OutlineViewOnIcon\n                  className=\"cursor-pointer !text-primary-500\"\n                  onClick={() => setIsShowPassword(true)}\n                />\n              )}\n            </InputRightElement>\n          </InputGroup>\n        </FormControl>\n        <FormControl isInvalid={!!errors.confirmPassword} className=\"mb-6 flex items-center\">\n          <FormLabel className=\"w-20\" htmlFor=\"confirmPassword\">\n            {t(\"AuthPanel.ConfirmPassword\")}\n          </FormLabel>\n          <InputGroup>\n            <Input\n              type={isShowPassword ? \"text\" : \"password\"}\n              {...register(\"confirmPassword\", {\n                required: true,\n              })}\n              id=\"confirmPassword\"\n              placeholder={t(\"AuthPanel.ConfirmPassword\") || \"\"}\n              bg={darkMode ? \"#363C42\" : \"#F8FAFB\"}\n              border={darkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n              height=\"48px\"\n              rounded=\"4px\"\n            />\n            <InputRightElement width=\"2rem\" height=\"100%\">\n              {isShowPassword ? (\n                <OutlineViewOffIcon\n                  className=\"cursor-pointer !text-primary-500\"\n                  onClick={() => setIsShowPassword(false)}\n                />\n              ) : (\n                <OutlineViewOnIcon\n                  className=\"cursor-pointer !text-primary-500\"\n                  onClick={() => setIsShowPassword(true)}\n                />\n              )}\n            </InputRightElement>\n          </InputGroup>\n        </FormControl>\n        <div className=\"mb-5 mt-12\">\n          <Button\n            type=\"submit\"\n            className=\"!h-[42px] w-full !bg-primary-500 hover:!bg-primary-600\"\n            isLoading={resetPasswordMutation.isLoading}\n            onClick={handleSubmit(onSubmit)}\n          >\n            {t(\"AuthPanel.ResetPassword\")}\n          </Button>\n        </div>\n        <div className=\"flex justify-end\">\n          <Button\n            className=\"!px-2 text-lg\"\n            variant={\"text\"}\n            onClick={() => navigate(\"/login\", { replace: true })}\n          >\n            {t(\"AuthPanel.ToLogin\")}\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/auth/service.ts",
    "content": "import { useMutation, useQuery } from \"@tanstack/react-query\";\n\nimport {\n  EmailControllerSendCode,\n  EmailControllerSignin,\n  GithubAuthControllerBind,\n  GithubAuthControllerJumpLogin,\n  GithubAuthControllerSignin,\n  GithubAuthControllerUnbind,\n  PhoneControllerSendCode,\n  PhoneControllerSignin,\n  UserPasswordControllerReset,\n  UserPasswordControllerSignin,\n  UserPasswordControllerSignup,\n} from \"@/apis/v1/auth\";\n\nconst queryKeys = {\n  useSigninByPasswordMutation: [\"useSigninByPasswordMutation\"],\n  useSigninBySmsCodeMutation: [\"useSigninBySmsCodeMutation\"],\n  useSignupMutation: [\"useSignupMutation\"],\n  useSendSmsCodeMutation: [\"useSendSmsCodeMutation\"],\n  useResetPasswordMutation: [\"useResetPasswordMutation\"],\n  useGetProvidersQuery: [\"useGetProvidersQuery\"],\n};\n\nexport const useSigninByPasswordMutation = (config?: { onSuccess: (result: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return UserPasswordControllerSignin(values);\n    },\n    {\n      onSuccess: async (result) => {\n        if (!result.error) {\n          localStorage.setItem(\"token\", result?.data);\n          config?.onSuccess(result);\n        }\n      },\n    },\n  );\n};\n\nexport const useSigninBySmsCodeMutation = (config?: { onSuccess: (result: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return PhoneControllerSignin(values);\n    },\n    {\n      onSuccess: async (result) => {\n        if (!result.error) {\n          localStorage.setItem(\"token\", result?.data);\n          config?.onSuccess(result);\n        }\n      },\n    },\n  );\n};\n\nexport const useSigninByEmailMutation = (config?: { onSuccess: (result: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return EmailControllerSignin(values);\n    },\n    {\n      onSuccess: async (result) => {\n        if (!result.error) {\n          localStorage.setItem(\"token\", result?.data);\n          config?.onSuccess(result);\n        }\n      },\n    },\n  );\n};\n\nexport const useSignupMutation = (config?: { onSuccess: (result: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return UserPasswordControllerSignup(values);\n    },\n    {\n      onSuccess: async (result) => {\n        if (!result.error) {\n          localStorage.setItem(\"token\", result?.data.token);\n          config?.onSuccess(result);\n        }\n      },\n    },\n  );\n};\n\nexport const useSendSmsCodeMutation = (config?: { onSuccess: (result: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return PhoneControllerSendCode(values);\n    },\n    {\n      onSuccess: async (result) => {\n        config?.onSuccess(result);\n      },\n    },\n  );\n};\n\nexport const useResetPasswordMutation = (config?: { onSuccess: (result: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return UserPasswordControllerReset(values);\n    },\n    {\n      onSuccess: async (result) => {\n        config?.onSuccess(result);\n      },\n    },\n  );\n};\n\nexport const useSendEmailCodeMutation = (config?: { onSuccess: (result: any) => void }) => {\n  return useMutation(\n    (values: any) => {\n      return EmailControllerSendCode(values);\n    },\n    {\n      onSuccess: async (result) => {\n        config?.onSuccess(result);\n      },\n    },\n  );\n};\n\nexport const useGithubAuthControllerSigninMutation = (config?: {\n  onSuccess: (result: any) => void;\n}) => {\n  return useMutation(\n    (values: any) => {\n      return GithubAuthControllerSignin(values);\n    },\n    {\n      onSuccess: async (result) => {\n        if (!result.error) {\n          config?.onSuccess(result);\n        }\n      },\n    },\n  );\n};\n\nexport const useGithubAuthControllerBindMutation = (config?: {\n  onSuccess: (result: any) => void;\n}) => {\n  return useMutation(\n    (values: any) => {\n      return GithubAuthControllerBind(values);\n    },\n    {\n      onSuccess: async (result) => {\n        if (!result.error) {\n          config?.onSuccess(result);\n        }\n      },\n    },\n  );\n};\n\nexport const useGithubAuthControllerJumpLoginQuery = (\n  params: any,\n  onSuccess?: (result: any) => void,\n) => {\n  return useQuery(\n    queryKeys.useGetProvidersQuery,\n    () => {\n      return GithubAuthControllerJumpLogin(params);\n    },\n    {\n      onSuccess,\n    },\n  );\n};\n\nexport const useGithubAuthControllerUnbindMutation = (config?: {\n  onSuccess: (result: any) => void;\n}) => {\n  return useMutation(\n    (values: any) => {\n      return GithubAuthControllerUnbind({});\n    },\n    {\n      onSuccess: async (result) => {\n        if (!result.error) {\n          config?.onSuccess(result);\n        }\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/auth/signin/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { Button, Center, Spinner, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { GithubIcon } from \"@/components/CommonIcon\";\nimport { Logo, LogoText } from \"@/components/LogoIcon\";\nimport { COLOR_MODE, PROVIDER_NAME } from \"@/constants\";\n\nimport LoginByEmailPanel from \"./mods/LoginByEmailPanel\";\nimport LoginByPasswordPanel from \"./mods/LoginByPasswordPanel\";\nimport LoginByPhonePanel from \"./mods/LoginByPhonePanel\";\n\nimport useAuthStore from \"@/pages/auth/store\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport type providersTypes =\n  | PROVIDER_NAME.EMAIL\n  | PROVIDER_NAME.GITHUB\n  | PROVIDER_NAME.PHONE\n  | PROVIDER_NAME.PASSWORD;\n\nexport default function SignIn() {\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n  const { githubProvider, passwordProvider, phoneProvider, emailProvider, defaultProvider } =\n    useAuthStore();\n  const [currentProvider, setCurrentProvider] = useState<providersTypes>();\n\n  const isBindGithub = !!sessionStorage.getItem(\"githubToken\");\n  const { showInfo } = useGlobalStore();\n\n  useEffect(() => {\n    setCurrentProvider(defaultProvider.name);\n  }, [defaultProvider]);\n\n  useEffect(() => {\n    if (isBindGithub) {\n      showInfo(t(\"AuthPanel.PleaseBindUser\"), 5000, true);\n    }\n  }, [isBindGithub, showInfo]);\n\n  return (\n    <div\n      className={clsx(\n        \"absolute right-[125px] top-1/2 w-[560px] -translate-y-1/2 rounded-3xl px-16 pb-16 pt-[78px]\",\n        {\n          \"bg-lafDark-100\": darkMode,\n          \"bg-[#FCFCFD]\": !darkMode,\n        },\n      )}\n    >\n      {isBindGithub ? (\n        <div className=\"mb-10 text-[22px] font-semibold text-grayModern-700\">\n          {t(\"AuthPanel.BindGitHub\")}\n        </div>\n      ) : (\n        <div className=\"mb-9 flex items-center space-x-4\">\n          <Logo size=\"43px\" outerColor=\"#33BABB\" innerColor=\"white\" />\n          <LogoText size=\"51px\" color={darkMode ? \"#33BABB\" : \"#363C42\"} />\n        </div>\n      )}\n\n      {currentProvider ? (\n        <div>\n          {currentProvider === PROVIDER_NAME.PHONE ? (\n            <LoginByPhonePanel\n              showPasswordSigninBtn={!!passwordProvider}\n              switchLoginType={() => setCurrentProvider(PROVIDER_NAME.PASSWORD)}\n              isDarkMode={darkMode}\n            />\n          ) : currentProvider === PROVIDER_NAME.EMAIL ? (\n            <LoginByEmailPanel\n              showPasswordSigninBtn={!!passwordProvider}\n              switchLoginType={() => setCurrentProvider(PROVIDER_NAME.PASSWORD)}\n              isDarkMode={darkMode}\n            />\n          ) : currentProvider === PROVIDER_NAME.PASSWORD ? (\n            <LoginByPasswordPanel\n              showSignupBtn={!!passwordProvider?.register}\n              showPhoneSigninBtn={!!phoneProvider}\n              showEmailSigninBtn={!!emailProvider}\n              setCurrentProvider={setCurrentProvider}\n              isDarkMode={darkMode}\n            />\n          ) : null}\n\n          {!isBindGithub && githubProvider && (\n            <div className=\"mt-2\">\n              <div className=\"relative mb-5 w-full text-center before:absolute before:top-1/2 before:block before:h-[1px] before:w-full before:bg-[#E9EEF5] before:content-['']\">\n                <span\n                  className={clsx(\n                    \"relative z-10 pl-5 pr-5 text-frostyNightfall-600\",\n                    !darkMode ? \"bg-white\" : \"bg-lafDark-100\",\n                  )}\n                >\n                  or\n                </span>\n              </div>\n              <Button\n                type=\"submit\"\n                className={clsx(\"w-full pb-5 pt-5\", !darkMode && \"text-[#495867]\")}\n                colorScheme=\"white\"\n                variant=\"outline\"\n                border=\"1.5px solid #DDE4EF\"\n                onClick={() => {\n                  window.location.href = `v1/auth/github/jump_login?redirectUri=${encodeURIComponent(\n                    window.location.origin,\n                  )}/bind/github`;\n                }}\n              >\n                <GithubIcon className=\"mr-4\" fontSize=\"18\" />\n                {t(\"AuthPanel.LoginWithGithub\")}\n              </Button>\n            </div>\n          )}\n        </div>\n      ) : (\n        <Center className=\"h-[310px]\">\n          <Spinner />\n        </Center>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/auth/signin/mods/LoginByEmailPanel/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n  Button,\n  FormControl,\n  FormLabel,\n  Input,\n  InputGroup,\n  InputRightElement,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { Routes } from \"@/constants\";\n\nimport useInviteCode from \"@/hooks/useInviteCode\";\nimport { useGroupMemberAddMutation } from \"@/pages/app/collaboration/service\";\nimport {\n  useGithubAuthControllerBindMutation,\n  useSendEmailCodeMutation,\n  useSigninByEmailMutation,\n} from \"@/pages/auth/service\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype FormData = {\n  email: string;\n  validationCode: string;\n};\n\nexport default function LoginByEmailPanel({\n  switchLoginType,\n  showPasswordSigninBtn,\n  isDarkMode,\n}: {\n  switchLoginType: () => void;\n  showPasswordSigninBtn: boolean;\n  isDarkMode: boolean;\n}) {\n  const navigate = useNavigate();\n  const sendEmailCodeMutation = useSendEmailCodeMutation();\n  const signinByEmailCodeMutation = useSigninByEmailMutation();\n  const { showSuccess, showError } = useGlobalStore();\n  const [isSendEmailCode, setIsSendEmailCode] = useState(false);\n  const [countdown, setCountdown] = useState(60);\n  const joinGroupMutation = useGroupMemberAddMutation();\n  const githubAuthControllerBindMutation = useGithubAuthControllerBindMutation();\n\n  const {\n    register,\n    getValues,\n    handleSubmit,\n    formState: { errors },\n  } = useForm<FormData>({\n    defaultValues: {\n      email: \"\",\n      validationCode: \"\",\n    },\n  });\n\n  const inviteCode = useInviteCode();\n\n  const onSubmit = async (data: FormData) => {\n    const res = await signinByEmailCodeMutation.mutateAsync({\n      email: data.email,\n      code: data.validationCode,\n      inviteCode: inviteCode,\n    });\n\n    if (res?.data) {\n      const githubToken = sessionStorage.getItem(\"githubToken\");\n      sessionStorage.removeItem(\"githubToken\");\n      if (githubToken) {\n        githubAuthControllerBindMutation.mutateAsync({\n          token: githubToken,\n        });\n      }\n      const sessionData = sessionStorage.getItem(\"collaborationCode\");\n      const collaborationCode = JSON.parse(sessionData || \"{}\");\n      sessionStorage.removeItem(\"collaborationCode\");\n      if (sessionData) {\n        const res = await joinGroupMutation.mutateAsync({ code: collaborationCode.code });\n        if (!res.error) {\n          showSuccess(t(\"Collaborate.JoinSuccess\"));\n        }\n        navigate(`/app/${collaborationCode.appid}/function`);\n      } else {\n        navigate(Routes.dashboard, { replace: true });\n      }\n    }\n  };\n\n  const handleSendEmailCode = async () => {\n    if (isSendEmailCode) {\n      return;\n    }\n    const email = getValues(\"email\");\n    const isValidate = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/.test(email);\n    if (!isValidate) {\n      showError(t(\"AuthPanel.EmailTip\"));\n      return;\n    }\n    switchEmailCodeStatus();\n\n    const res = await sendEmailCodeMutation.mutateAsync({\n      email,\n      type: \"Signin\",\n    });\n\n    if (res?.data === \"success\") {\n      showSuccess(t(\"AuthPanel.SmsCodeSendSuccess\"));\n    }\n  };\n\n  const switchEmailCodeStatus = () => {\n    setIsSendEmailCode(true);\n    setCountdown(60);\n    const timer = setInterval(() => {\n      setCountdown((countdown) => {\n        if (countdown === 0) {\n          clearInterval(timer);\n          setIsSendEmailCode(false);\n          return 0;\n        }\n        return countdown - 1;\n      });\n    }, 1000);\n  };\n\n  return (\n    <div>\n      <FormControl isInvalid={!!errors?.email} className=\"mb-6\">\n        <FormLabel className={isDarkMode ? \"\" : \"text-grayModern-700\"} htmlFor=\"email\">\n          {t(\"AuthPanel.Email\")}\n        </FormLabel>\n        <InputGroup>\n          <Input\n            {...register(\"email\", {\n              required: true,\n              pattern: {\n                value: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\n                message: t(\"AuthPanel.EmailTip\"),\n              },\n            })}\n            type=\"email\"\n            id=\"email\"\n            placeholder={t(\"AuthPanel.EmailPlaceholder\") || \"\"}\n            bg={isDarkMode ? \"#363C42\" : \"#F8FAFB\"}\n            border={isDarkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n            height=\"48px\"\n            rounded=\"4px\"\n          />\n          <InputRightElement width=\"6rem\" height=\"100%\">\n            <Button\n              className=\"w-20\"\n              variant={isSendEmailCode ? \"text_disabled\" : \"text\"}\n              onClick={handleSendEmailCode}\n            >\n              {isSendEmailCode ? `${countdown}s` : t(\"AuthPanel.getValidationCode\")}\n            </Button>\n          </InputRightElement>\n        </InputGroup>\n      </FormControl>\n\n      <FormControl isInvalid={!!errors.validationCode} className=\"mb-12\">\n        <FormLabel className={isDarkMode ? \"\" : \"text-grayModern-700\"}>\n          {t(\"AuthPanel.ValidationCode\")}\n        </FormLabel>\n        <Input\n          {...register(\"validationCode\", {\n            required: true,\n            pattern: {\n              value: /^\\d{4,6}$/,\n              message: t(\"AuthPanel.ValidationCodeTip\"),\n            },\n          })}\n          id=\"validationCode\"\n          placeholder={t(\"AuthPanel.ValidationCodeTip\") || \"\"}\n          bg={isDarkMode ? \"#363C42\" : \"#F8FAFB\"}\n          border={isDarkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n          height=\"48px\"\n          rounded=\"4px\"\n          onKeyDown={(e) => {\n            if (e.key === \"Enter\") {\n              handleSubmit(onSubmit)();\n            }\n          }}\n        />\n      </FormControl>\n      <div>\n        <Button\n          type=\"submit\"\n          className=\"!h-[42px] w-full !bg-primary-500 hover:!bg-primary-600\"\n          isLoading={signinByEmailCodeMutation.isLoading}\n          onClick={handleSubmit(onSubmit)}\n        >\n          {t(\"AuthPanel.LoginOrRegister\")}\n        </Button>\n        <div className=\"mt-5 flex justify-end\">\n          {showPasswordSigninBtn && (\n            <Button className=\"!px-2 text-lg\" variant={\"text\"} onClick={switchLoginType}>\n              {t(\"AuthPanel.PasswordLogin\")}\n            </Button>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/auth/signin/mods/LoginByPasswordPanel/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n  Button,\n  FormControl,\n  FormLabel,\n  Input,\n  InputGroup,\n  InputRightElement,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { OutlineViewOffIcon, OutlineViewOnIcon } from \"@/components/CommonIcon\";\nimport { PROVIDER_NAME, Routes } from \"@/constants\";\n\nimport { providersTypes } from \"../..\";\n\nimport { useGroupMemberAddMutation } from \"@/pages/app/collaboration/service\";\nimport {\n  useGithubAuthControllerBindMutation,\n  useSigninByPasswordMutation,\n} from \"@/pages/auth/service\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype FormData = {\n  account: string;\n  password: string;\n};\n\nexport default function LoginByPasswordPanel({\n  setCurrentProvider,\n  showSignupBtn,\n  showPhoneSigninBtn,\n  showEmailSigninBtn,\n  isDarkMode,\n}: {\n  setCurrentProvider: (provider: providersTypes) => void;\n  showSignupBtn: boolean;\n  showPhoneSigninBtn: boolean;\n  showEmailSigninBtn: boolean;\n  isDarkMode: boolean;\n}) {\n  const signinByPasswordMutation = useSigninByPasswordMutation();\n  const githubAuthControllerBindMutation = useGithubAuthControllerBindMutation();\n  const navigate = useNavigate();\n  const [isShowPassword, setIsShowPassword] = useState(false);\n  const joinGroupMutation = useGroupMemberAddMutation();\n  const { showSuccess } = useGlobalStore();\n\n  const {\n    register,\n    handleSubmit,\n    formState: { errors },\n  } = useForm<FormData>();\n\n  const onSubmit = async (data: FormData) => {\n    const res = await signinByPasswordMutation.mutateAsync({\n      username: data.account,\n      password: data.password,\n    });\n\n    if (res?.data) {\n      const githubToken = sessionStorage.getItem(\"githubToken\");\n      sessionStorage.removeItem(\"githubToken\");\n      if (githubToken) {\n        githubAuthControllerBindMutation.mutateAsync({\n          token: githubToken,\n        });\n      }\n      const sessionData = sessionStorage.getItem(\"collaborationCode\");\n      const collaborationCode = JSON.parse(sessionData || \"{}\");\n      sessionStorage.removeItem(\"collaborationCode\");\n      if (sessionData) {\n        const res = await joinGroupMutation.mutateAsync({ code: collaborationCode.code });\n        if (!res.error) {\n          showSuccess(t(\"Collaborate.JoinSuccess\"));\n        }\n        navigate(`/app/${collaborationCode.appid}/function`);\n      } else {\n        navigate(Routes.dashboard, { replace: true });\n      }\n    }\n  };\n\n  return (\n    <div>\n      <FormControl isInvalid={!!errors?.account} className=\"mb-6\">\n        <FormLabel className={isDarkMode ? \"\" : \"text-grayModern-700\"} htmlFor=\"account\">\n          {t(\"AuthPanel.Account\")}\n        </FormLabel>\n        <Input\n          {...register(\"account\", { required: true })}\n          type=\"text\"\n          id=\"account\"\n          placeholder={t(\"AuthPanel.AccountPlaceholder\") || \"\"}\n          bg={isDarkMode ? \"#363C42\" : \"#F8FAFB\"}\n          border={isDarkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n          height=\"48px\"\n          rounded=\"4px\"\n        />\n      </FormControl>\n      <FormControl isInvalid={!!errors.password} className=\"mb-12\">\n        <FormLabel className={isDarkMode ? \"\" : \"text-grayModern-700\"} htmlFor=\"phone\">\n          {t(\"AuthPanel.Password\")}\n        </FormLabel>\n        <InputGroup>\n          <Input\n            type={isShowPassword ? \"text\" : \"password\"}\n            {...register(\"password\", {\n              required: true,\n            })}\n            id=\"password\"\n            placeholder={t(\"AuthPanel.PasswordPlaceholder\") || \"\"}\n            bg={isDarkMode ? \"#363C42\" : \"#F8FAFB\"}\n            border={isDarkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n            height=\"48px\"\n            rounded=\"4px\"\n            onKeyDown={(e) => {\n              if (e.key === \"Enter\") {\n                handleSubmit(onSubmit)();\n              }\n            }}\n          />\n          <InputRightElement height=\"100%\">\n            {isShowPassword ? (\n              <OutlineViewOffIcon\n                className=\"cursor-pointer !text-primary-500\"\n                onClick={() => setIsShowPassword(false)}\n              />\n            ) : (\n              <OutlineViewOnIcon\n                className=\"cursor-pointer !text-primary-500\"\n                onClick={() => setIsShowPassword(true)}\n              />\n            )}\n          </InputRightElement>\n        </InputGroup>\n      </FormControl>\n      <div>\n        <Button\n          type=\"submit\"\n          className=\"!h-[42px] w-full !bg-primary-500 hover:!bg-primary-600\"\n          isLoading={signinByPasswordMutation.isLoading}\n          onClick={handleSubmit(onSubmit)}\n        >\n          {t(\"AuthPanel.Login\")}\n        </Button>\n        <div className=\"mt-5 flex justify-between\">\n          {showPhoneSigninBtn || showEmailSigninBtn ? (\n            <div>\n              <Button\n                className=\"!pl-2 !pr-0 text-lg\"\n                variant={\"text\"}\n                onClick={() => navigate(\"/reset-password\", { replace: true })}\n              >\n                {t(\"AuthPanel.ForgotPassword\")}\n              </Button>\n            </div>\n          ) : (\n            <div></div>\n          )}\n          <div className=\"flex\">\n            {showPhoneSigninBtn && (\n              <Button\n                className=\"!px-2 text-lg\"\n                variant={\"text\"}\n                onClick={() => {\n                  setCurrentProvider(PROVIDER_NAME.PHONE);\n                }}\n              >\n                {t(\"AuthPanel.PhoneLogin\")}\n              </Button>\n            )}\n            {showSignupBtn && showPhoneSigninBtn && (\n              <div className=\"mx-3 flex items-center\">\n                <span className=\"h-3 w-[1px] bg-primary-500 text-primary-500\"></span>\n              </div>\n            )}\n            {showEmailSigninBtn && (\n              <Button\n                className=\"!px-2 text-lg\"\n                variant={\"text\"}\n                onClick={() => {\n                  setCurrentProvider(PROVIDER_NAME.EMAIL);\n                }}\n              >\n                {t(\"AuthPanel.EmailLogin\")}\n              </Button>\n            )}\n            {showSignupBtn && showEmailSigninBtn && (\n              <div className=\"mx-3 flex items-center\">\n                <span className=\"h-3 w-[1px] bg-primary-500 text-primary-500\"></span>\n              </div>\n            )}\n            {showSignupBtn && (\n              <Button\n                className=\"!px-2 text-lg\"\n                variant={\"text\"}\n                onClick={() => navigate(\"/signup\", { replace: true })}\n              >\n                {t(\"AuthPanel.ToRegister\")}\n              </Button>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/auth/signin/mods/LoginByPhonePanel/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n  Button,\n  FormControl,\n  FormLabel,\n  Input,\n  InputGroup,\n  InputRightElement,\n} from \"@chakra-ui/react\";\nimport { t } from \"i18next\";\n\nimport { Routes } from \"@/constants\";\n\nimport useInviteCode from \"@/hooks/useInviteCode\";\nimport { useGroupMemberAddMutation } from \"@/pages/app/collaboration/service\";\nimport {\n  useGithubAuthControllerBindMutation,\n  useSendSmsCodeMutation,\n  useSigninBySmsCodeMutation,\n} from \"@/pages/auth/service\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype FormData = {\n  phone: string;\n  validationCode: string;\n};\n\nexport default function LoginByPhonePanel({\n  switchLoginType,\n  showPasswordSigninBtn,\n  isDarkMode,\n}: {\n  switchLoginType: () => void;\n  showPasswordSigninBtn: boolean;\n  isDarkMode: boolean;\n}) {\n  const navigate = useNavigate();\n  const sendSmsCodeMutation = useSendSmsCodeMutation();\n  const signinBySmsCodeMutation = useSigninBySmsCodeMutation();\n  const { showSuccess, showError } = useGlobalStore();\n  const [isSendSmsCode, setIsSendSmsCode] = useState(false);\n  const [countdown, setCountdown] = useState(60);\n  const joinGroupMutation = useGroupMemberAddMutation();\n  const githubAuthControllerBindMutation = useGithubAuthControllerBindMutation();\n\n  const {\n    register,\n    getValues,\n    handleSubmit,\n    formState: { errors },\n  } = useForm<FormData>({\n    defaultValues: {\n      phone: \"\",\n      validationCode: \"\",\n    },\n  });\n\n  const inviteCode = useInviteCode();\n\n  const onSubmit = async (data: FormData) => {\n    const res = await signinBySmsCodeMutation.mutateAsync({\n      phone: data.phone,\n      code: data.validationCode,\n      inviteCode: inviteCode,\n    });\n\n    if (res?.data) {\n      const githubToken = sessionStorage.getItem(\"githubToken\");\n      sessionStorage.removeItem(\"githubToken\");\n      if (githubToken) {\n        githubAuthControllerBindMutation.mutateAsync({\n          token: githubToken,\n        });\n      }\n      const sessionData = sessionStorage.getItem(\"collaborationCode\");\n      const collaborationCode = JSON.parse(sessionData || \"{}\");\n      sessionStorage.removeItem(\"collaborationCode\");\n      if (sessionData) {\n        const res = await joinGroupMutation.mutateAsync({ code: collaborationCode.code });\n        if (!res.error) {\n          showSuccess(t(\"Collaborate.JoinSuccess\"));\n        }\n        navigate(`/app/${collaborationCode.appid}/function`);\n      } else {\n        navigate(Routes.dashboard, { replace: true });\n      }\n    }\n  };\n\n  const handleSendSmsCode = async () => {\n    if (isSendSmsCode) {\n      return;\n    }\n    const phone = getValues(\"phone\");\n    const isValidate = /^1[2-9]\\d{9}$/.test(phone);\n    if (!isValidate) {\n      showError(t(\"AuthPanel.PhoneTip\"));\n      return;\n    }\n    switchSmsCodeStatus();\n\n    const res = await sendSmsCodeMutation.mutateAsync({\n      phone,\n      type: \"Signin\",\n    });\n\n    if (res?.data === \"success\") {\n      showSuccess(t(\"AuthPanel.SmsCodeSendSuccess\"));\n    }\n  };\n\n  const switchSmsCodeStatus = () => {\n    setIsSendSmsCode(true);\n    setCountdown(60);\n    const timer = setInterval(() => {\n      setCountdown((countdown) => {\n        if (countdown === 0) {\n          clearInterval(timer);\n          setIsSendSmsCode(false);\n          return 0;\n        }\n        return countdown - 1;\n      });\n    }, 1000);\n  };\n\n  return (\n    <div>\n      <FormControl isInvalid={!!errors?.phone} className=\"mb-6\">\n        <FormLabel className={isDarkMode ? \"\" : \"text-grayModern-700\"} htmlFor=\"phone\">\n          {t(\"AuthPanel.Phone\")}\n        </FormLabel>\n        <InputGroup>\n          <Input\n            {...register(\"phone\", {\n              required: true,\n              pattern: {\n                value: /^1[2-9]\\d{9}$/,\n                message: t(\"AuthPanel.PhoneTip\"),\n              },\n            })}\n            type=\"tel\"\n            id=\"phone\"\n            placeholder={t(\"AuthPanel.PhonePlaceholder\") || \"\"}\n            bg={isDarkMode ? \"#363C42\" : \"#F8FAFB\"}\n            border={isDarkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n            height=\"48px\"\n            rounded=\"4px\"\n          />\n          <InputRightElement width=\"6rem\" height=\"100%\">\n            <Button\n              className=\"w-20\"\n              variant={isSendSmsCode ? \"text_disabled\" : \"text\"}\n              onClick={handleSendSmsCode}\n            >\n              {isSendSmsCode ? `${countdown}s` : t(\"AuthPanel.getValidationCode\")}\n            </Button>\n          </InputRightElement>\n        </InputGroup>\n      </FormControl>\n\n      <FormControl isInvalid={!!errors.validationCode} className=\"mb-12\">\n        <FormLabel className={isDarkMode ? \"\" : \"text-grayModern-700\"} htmlFor=\"phone\">\n          {t(\"AuthPanel.ValidationCode\")}\n        </FormLabel>\n        <Input\n          {...register(\"validationCode\", {\n            required: true,\n            pattern: {\n              value: /^\\d{4,6}$/,\n              message: t(\"AuthPanel.ValidationCodeTip\"),\n            },\n          })}\n          id=\"validationCode\"\n          placeholder={t(\"AuthPanel.ValidationCodeTip\") || \"\"}\n          bg={isDarkMode ? \"#363C42\" : \"#F8FAFB\"}\n          border={isDarkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n          height=\"48px\"\n          rounded=\"4px\"\n          onKeyDown={(e) => {\n            if (e.key === \"Enter\") {\n              handleSubmit(onSubmit)();\n            }\n          }}\n        />\n      </FormControl>\n      <div>\n        <Button\n          type=\"submit\"\n          className=\"!h-[42px] w-full !bg-primary-500 hover:!bg-primary-600\"\n          isLoading={signinBySmsCodeMutation.isLoading}\n          onClick={handleSubmit(onSubmit)}\n        >\n          {t(\"AuthPanel.LoginOrRegister\")}\n        </Button>\n        <div className=\"mt-5 flex justify-end\">\n          {showPasswordSigninBtn && (\n            <Button className=\"!px-2 text-lg\" variant={\"text\"} onClick={switchLoginType}>\n              {t(\"AuthPanel.PasswordLogin\")}\n            </Button>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/auth/signup/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n  Button,\n  Checkbox,\n  CheckboxGroup,\n  FormControl,\n  FormLabel,\n  Input,\n  InputGroup,\n  InputRightElement,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { OutlineViewOffIcon, OutlineViewOnIcon } from \"@/components/CommonIcon\";\nimport { Logo, LogoText } from \"@/components/LogoIcon\";\nimport { Routes } from \"@/constants\";\nimport { COLOR_MODE } from \"@/constants\";\n\nimport useInviteCode from \"@/hooks/useInviteCode\";\nimport { useGroupMemberAddMutation } from \"@/pages/app/collaboration/service\";\nimport {\n  useGithubAuthControllerBindMutation,\n  useSendEmailCodeMutation,\n  useSendSmsCodeMutation,\n  useSignupMutation,\n} from \"@/pages/auth/service\";\nimport useAuthStore from \"@/pages/auth/store\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype FormData = {\n  phone?: string;\n  email?: string;\n  validationCode?: string;\n  account: string;\n  password: string;\n  confirmPassword: string;\n};\n\nexport default function SignUp() {\n  const signupMutation = useSignupMutation();\n  const sendSmsCodeMutation = useSendSmsCodeMutation();\n  const sendEmailCodeMutation = useSendEmailCodeMutation();\n  const [isNeedPhone, setIsNeedPhone] = useState(false);\n  const [isNeedEmail, setIsNeedEmail] = useState(false);\n  const { passwordProvider } = useAuthStore();\n\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  const githubToken = sessionStorage.getItem(\"githubToken\");\n  const sessionData = sessionStorage.getItem(\"collaborationCode\");\n\n  useEffect(() => {\n    if (passwordProvider) {\n      setIsNeedPhone(passwordProvider.bind?.phone === \"required\");\n      setIsNeedEmail(passwordProvider.bind?.email === \"required\");\n    }\n  }, [passwordProvider]);\n\n  const { showSuccess, showError } = useGlobalStore();\n  const navigate = useNavigate();\n\n  const [agreement, setAgreement] = useState(false);\n  const [isSendSmsCode, setIsSendSmsCode] = useState(false);\n  const [countdown, setCountdown] = useState(60);\n  const [isShowPassword, setIsShowPassword] = useState(false);\n  const joinGroupMutation = useGroupMemberAddMutation();\n  const githubAuthControllerBindMutation = useGithubAuthControllerBindMutation();\n  const inviteCode = useInviteCode();\n\n  const {\n    register,\n    getValues,\n    handleSubmit,\n    formState: { errors },\n  } = useForm<FormData>({\n    defaultValues: {\n      phone: \"\",\n      validationCode: \"\",\n      account: \"\",\n      password: \"\",\n      confirmPassword: \"\",\n    },\n  });\n\n  const onSubmit = async (data: FormData) => {\n    if (data.password !== data.confirmPassword) {\n      showError(t(\"AuthPanel.PasswordNotMatch\"));\n      return;\n    }\n\n    const params = isNeedPhone\n      ? {\n          phone: data.phone,\n          code: data.validationCode,\n          username: data.account,\n          password: data.password,\n          inviteCode: inviteCode,\n          type: \"Signup\",\n        }\n      : isNeedEmail\n      ? {\n          email: data.email,\n          code: data.validationCode,\n          username: data.account,\n          password: data.password,\n          inviteCode: inviteCode,\n          type: \"Signup\",\n        }\n      : {\n          username: data.account,\n          password: data.password,\n          inviteCode: inviteCode,\n          type: \"Signup\",\n        };\n\n    const res = await signupMutation.mutateAsync(params);\n\n    if (res?.data) {\n      sessionStorage.removeItem(\"githubToken\");\n      if (githubToken) {\n        githubAuthControllerBindMutation.mutateAsync({\n          token: githubToken,\n          isRegister: true,\n        });\n      }\n      const collaborationCode = JSON.parse(sessionData || \"{}\");\n      sessionStorage.removeItem(\"collaborationCode\");\n      if (sessionData) {\n        const res = await joinGroupMutation.mutateAsync({ code: collaborationCode.code });\n        if (!res.error) {\n          showSuccess(t(\"Collaborate.JoinSuccess\"));\n        }\n        navigate(`/app/${collaborationCode.appid}/function`);\n      } else if (res?.error === \"user already exists\") {\n        navigate(Routes.login, { replace: true });\n      } else {\n        navigate(Routes.dashboard, { replace: true });\n      }\n    }\n  };\n\n  const handleSendSmsCode = async () => {\n    if (isSendSmsCode) {\n      return;\n    }\n\n    const phone = getValues(\"phone\") || \"\";\n    const email = getValues(\"email\") || \"\";\n\n    let res;\n\n    if (isNeedPhone) {\n      const isValidate = /^1[2-9]\\d{9}$/.test(phone);\n      if (!isValidate) {\n        showError(t(\"AuthPanel.PhoneTip\"));\n        return;\n      }\n      res = await sendSmsCodeMutation.mutateAsync({\n        phone,\n        type: \"Signup\",\n      });\n    }\n\n    if (isNeedEmail) {\n      const isValidate = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/.test(email);\n      if (!isValidate) {\n        showError(t(\"AuthPanel.EmailTip\"));\n        return;\n      }\n      res = await sendEmailCodeMutation.mutateAsync({\n        email,\n        type: \"Signup\",\n      });\n    }\n\n    switchSmsCodeStatus();\n\n    if (res?.data) {\n      showSuccess(t(\"AuthPanel.SmsCodeSendSuccess\"));\n    }\n  };\n\n  const switchSmsCodeStatus = () => {\n    setIsSendSmsCode(true);\n    setCountdown(60);\n    const timer = setInterval(() => {\n      setCountdown((countdown) => {\n        if (countdown === 0) {\n          clearInterval(timer);\n          setIsSendSmsCode(false);\n          return 0;\n        }\n        return countdown - 1;\n      });\n    }, 1000);\n  };\n\n  return (\n    <div\n      className={clsx(\n        \"absolute right-[125px] top-1/2 w-[560px] -translate-y-1/2 rounded-3xl px-16 pb-16 pt-[78px]\",\n        { \"bg-white\": !darkMode, \"bg-lafDark-100\": darkMode },\n      )}\n    >\n      {!!githubToken ? (\n        <div className=\"mb-10 text-2xl font-semibold text-grayModern-700\">\n          {t(\"AuthPanel.BindGitHub\")}\n        </div>\n      ) : (\n        <div className=\"mb-9 flex items-center space-x-4\">\n          <Logo size=\"43px\" outerColor=\"#33BABB\" innerColor=\"white\" />\n          <LogoText size=\"51px\" color={darkMode ? \"#33BABB\" : \"#363C42\"} />\n        </div>\n      )}\n      <div>\n        <FormControl isInvalid={!!errors.account} className=\"mb-6 flex items-center\">\n          <FormLabel className={darkMode ? \"w-20\" : \"w-20 text-grayModern-700\"} htmlFor=\"account\">\n            {t(\"AuthPanel.Account\")}\n          </FormLabel>\n          <Input\n            {...register(\"account\", { required: true })}\n            id=\"account\"\n            placeholder={t(\"AuthPanel.AccountPlaceholder\") || \"\"}\n            bg={darkMode ? \"#363C42\" : \"#F8FAFB\"}\n            border={darkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n            height=\"48px\"\n            rounded=\"4px\"\n          />\n        </FormControl>\n        <FormControl isInvalid={!!errors.password} className=\"mb-6 flex items-center\">\n          <FormLabel className={darkMode ? \"w-20\" : \"w-20 text-grayModern-700\"} htmlFor=\"password\">\n            {t(\"AuthPanel.Password\")}\n          </FormLabel>\n          <InputGroup>\n            <Input\n              type={isShowPassword ? \"text\" : \"password\"}\n              {...register(\"password\", {\n                required: true,\n              })}\n              id=\"password\"\n              placeholder={t(\"AuthPanel.PasswordPlaceholder\") || \"\"}\n              bg={darkMode ? \"#363C42\" : \"#F8FAFB\"}\n              border={darkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n              height=\"48px\"\n              rounded=\"4px\"\n            />\n            <InputRightElement width=\"2rem\" height=\"100%\">\n              {isShowPassword ? (\n                <OutlineViewOffIcon\n                  className=\"cursor-pointer !text-primary-500\"\n                  onClick={() => setIsShowPassword(false)}\n                />\n              ) : (\n                <OutlineViewOnIcon\n                  className=\"cursor-pointer !text-primary-500\"\n                  onClick={() => setIsShowPassword(true)}\n                />\n              )}\n            </InputRightElement>\n          </InputGroup>\n        </FormControl>\n        <FormControl isInvalid={!!errors.confirmPassword} className=\"mb-6 flex items-center\">\n          <FormLabel\n            className={darkMode ? \"w-20\" : \"w-20 text-grayModern-700\"}\n            htmlFor=\"confirmPassword\"\n          >\n            {t(\"AuthPanel.ConfirmPassword\")}\n          </FormLabel>\n          <InputGroup>\n            <Input\n              type={isShowPassword ? \"text\" : \"password\"}\n              {...register(\"confirmPassword\", {\n                required: true,\n              })}\n              id=\"confirmPassword\"\n              placeholder={t(\"AuthPanel.ConfirmPassword\") || \"\"}\n              bg={darkMode ? \"#363C42\" : \"#F8FAFB\"}\n              border={darkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n              height=\"48px\"\n              rounded=\"4px\"\n            />\n            <InputRightElement width=\"2rem\" height=\"100%\">\n              {isShowPassword ? (\n                <OutlineViewOffIcon\n                  className=\"cursor-pointer !text-primary-500\"\n                  onClick={() => setIsShowPassword(false)}\n                />\n              ) : (\n                <OutlineViewOnIcon\n                  className=\"cursor-pointer !text-primary-500\"\n                  onClick={() => setIsShowPassword(true)}\n                />\n              )}\n            </InputRightElement>\n          </InputGroup>\n        </FormControl>\n        {isNeedPhone && (\n          <FormControl isInvalid={!!errors?.phone} className=\"mb-6 flex items-center\">\n            <FormLabel className={darkMode ? \"w-20\" : \"w-20 text-grayModern-700\"} htmlFor=\"phone\">\n              {t(\"AuthPanel.Phone\")}\n            </FormLabel>\n            <InputGroup>\n              <Input\n                {...register(\"phone\", {\n                  required: true,\n                  pattern: {\n                    value: /^1[2-9]\\d{9}$/,\n                    message: t(\"AuthPanel.PhoneTip\"),\n                  },\n                })}\n                type=\"tel\"\n                id=\"phone\"\n                placeholder={t(\"AuthPanel.PhonePlaceholder\") || \"\"}\n                bg={darkMode ? \"#363C42\" : \"#F8FAFB\"}\n                border={darkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n                height=\"48px\"\n                rounded=\"4px\"\n              />\n              <InputRightElement width=\"6rem\" height=\"100%\">\n                <Button\n                  className=\"w-20\"\n                  variant={isSendSmsCode ? \"text_disabled\" : \"text\"}\n                  onClick={handleSendSmsCode}\n                >\n                  {isSendSmsCode ? `${countdown}s` : t(\"AuthPanel.getValidationCode\")}\n                </Button>\n              </InputRightElement>\n            </InputGroup>\n          </FormControl>\n        )}\n        {isNeedEmail && (\n          <FormControl isInvalid={!!errors?.email} className=\"mb-6 flex items-center\">\n            <FormLabel className={darkMode ? \"w-20\" : \"w-20 text-grayModern-700\"} htmlFor=\"email\">\n              {t(\"AuthPanel.Email\")}\n            </FormLabel>\n            <InputGroup>\n              <Input\n                {...register(\"email\", {\n                  required: true,\n                  pattern: {\n                    value: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\n                    message: t(\"AuthPanel.EmailTip\"),\n                  },\n                })}\n                type=\"email\"\n                id=\"email\"\n                placeholder={t(\"AuthPanel.EmailPlaceholder\") || \"\"}\n                bg={darkMode ? \"#363C42\" : \"#F8FAFB\"}\n                border={darkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n                height=\"48px\"\n                rounded=\"4px\"\n              />\n              <InputRightElement width=\"6rem\" height=\"100%\">\n                <Button\n                  className=\"w-20\"\n                  variant={isSendSmsCode ? \"text_disabled\" : \"text\"}\n                  onClick={handleSendSmsCode}\n                >\n                  {isSendSmsCode ? `${countdown}s` : t(\"AuthPanel.getValidationCode\")}\n                </Button>\n              </InputRightElement>\n            </InputGroup>\n          </FormControl>\n        )}\n        {(isNeedPhone || isNeedEmail) && (\n          <FormControl isInvalid={!!errors.validationCode} className=\"mb-10 flex items-center\">\n            <FormLabel\n              className={darkMode ? \"w-20\" : \"w-20 text-grayModern-700\"}\n              htmlFor=\"validationCode\"\n            >\n              {t(\"AuthPanel.ValidationCode\")}\n            </FormLabel>\n            <Input\n              type=\"number\"\n              {...register(\"validationCode\", {\n                required: true,\n                pattern: {\n                  value: /^\\d{6}$/,\n                  message: t(\"AuthPanel.ValidationCodePlaceholder\"),\n                },\n              })}\n              id=\"validationCode\"\n              placeholder={t(\"AuthPanel.ValidationCodePlaceholder\") || \"\"}\n              bg={darkMode ? \"#363C42\" : \"#F8FAFB\"}\n              border={darkMode ? \"1px solid #24282C\" : \"1px solid #D5D6E1\"}\n              height=\"48px\"\n              rounded=\"4px\"\n            />\n          </FormControl>\n        )}\n        {false && (\n          <div className=\"mb-6 flex items-center\">\n            <CheckboxGroup>\n              <Checkbox\n                onChange={(e) => setAgreement(e.target.checked)}\n                isChecked={agreement}\n                colorScheme=\"primary\"\n              />\n            </CheckboxGroup>\n            <span className=\"ml-1 text-[14px] text-[#333333]\">\n              我已阅读并同意{\" \"}\n              <a href=\"laf.dev\" className=\"text-[#33BAB1]\">\n                服务协议\n              </a>{\" \"}\n              和{\" \"}\n              <a href=\"laf.dev\" className=\"text-[#33BAB1]\">\n                隐私协议\n              </a>\n            </span>\n          </div>\n        )}\n        <div className=\"mb-6\">\n          <Button\n            type=\"submit\"\n            className=\"!h-[42px] w-full !bg-primary-500 hover:!bg-primary-600\"\n            isLoading={signupMutation.isLoading}\n            onClick={handleSubmit(onSubmit)}\n          >\n            {t(\"AuthPanel.Register\")}\n          </Button>\n        </div>\n        <div className=\"mt-5 flex justify-end\">\n          <Button\n            className=\"!px-2 text-lg\"\n            variant={\"text\"}\n            onClick={() => navigate(\"/login\", { replace: true })}\n          >\n            {t(\"AuthPanel.ToLogin\")}\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/auth/store.ts",
    "content": "import { create } from \"zustand\";\nimport { devtools } from \"zustand/middleware\";\nimport { immer } from \"zustand/middleware/immer\";\n\nimport { PROVIDER_NAME } from \"@/constants\";\n\nimport { AuthenticationControllerGetProviders } from \"@/apis/v1/auth\";\n\ntype State = {\n  initProviders: () => void;\n  githubProvider: any;\n  phoneProvider: any;\n  passwordProvider: any;\n  emailProvider: any;\n  defaultProvider: any;\n};\n\nconst useAuthStore = create<State>()(\n  devtools(\n    immer((set, get) => ({\n      initProviders: async () => {\n        const res = await AuthenticationControllerGetProviders({});\n        set((state) => {\n          state.githubProvider = res.data.find(\n            (provider: any) => provider.name === PROVIDER_NAME.GITHUB,\n          );\n          state.phoneProvider = res.data.find(\n            (provider: any) => provider.name === PROVIDER_NAME.PHONE,\n          );\n          state.passwordProvider = res.data.find(\n            (provider: any) => provider.name === PROVIDER_NAME.PASSWORD,\n          );\n          state.emailProvider = res.data.find(\n            (provider: any) => provider.name === PROVIDER_NAME.EMAIL,\n          );\n          state.defaultProvider = res.data.find((provider: any) => provider.default);\n        });\n      },\n      githubProvider: {},\n      phoneProvider: {},\n      passwordProvider: {},\n      emailProvider: {},\n      defaultProvider: {},\n    })),\n  ),\n);\n\nexport default useAuthStore;\n"
  },
  {
    "path": "web/src/pages/customSetting.ts",
    "content": "import React from \"react\";\nimport { create } from \"zustand\";\nimport { devtools, persist } from \"zustand/middleware\";\nimport { immer } from \"zustand/middleware/immer\";\n\nimport { PanelMinHeight } from \"@/constants\";\n\ntype TLayoutConfig = {\n  id: string;\n  style: React.CSSProperties;\n};\n\ntype functionPanel =\n  | \"SideBar\"\n  | \"RightPanel\"\n  | \"DependencePanel\"\n  | \"ConsolePanel\"\n  | \"Bottom\"\n  | \"RunningPanel\"\n  | string;\ntype collectionPanel = \"SideBar\" | \"Bottom\" | \"PolicyPanel\" | string;\ntype storagePanel = \"SideBar\" | string;\nexport type panel = functionPanel | collectionPanel | storagePanel;\nexport type page = \"functionPage\" | \"collectionPage\" | \"storagePage\";\n\ntype TCommonSettings = {\n  fontSize: number;\n  funcListDisplay: string;\n  useLSP: boolean;\n  useCopilot: boolean;\n};\n\ntype State = {\n  layoutInfo: {\n    storagePage: {\n      // eslint-disable-next-line no-unused-vars\n      [K in storagePanel]: TLayoutConfig;\n    };\n    functionPage: {\n      // eslint-disable-next-line no-unused-vars\n      [K in functionPanel]: TLayoutConfig;\n    };\n    collectionPage: {\n      // eslint-disable-next-line no-unused-vars\n      [K in collectionPanel]: TLayoutConfig;\n    };\n  };\n  getLayoutInfoStyle: (pageId: page, panelId: panel) => any;\n  getLayoutInfo: (pageId: page, panelId: panel) => any;\n  setLayoutInfo: (\n    pageId: page,\n    panelId: panel,\n    position: { width: number; height: number },\n  ) => void;\n  togglePanel: (pageId: page, panelId: panel) => void;\n  commonSettings: TCommonSettings;\n  setCommonSettings: (settings: TCommonSettings) => void;\n};\n\nconst useCustomSettingStore = create<State>()(\n  devtools(\n    persist(\n      immer((set, get) => ({\n        layoutInfo: {\n          functionPage: {\n            SideBar: {\n              id: \"SideBar\",\n              style: {\n                width: 240,\n                minWidth: 220,\n              },\n            },\n\n            RightPanel: {\n              id: \"RightPanel\",\n              style: {\n                width: 270,\n                minWidth: 232,\n              },\n            },\n\n            DependencePanel: {\n              id: \"DependencePanel\",\n              style: {\n                height: 200,\n                minHeight: PanelMinHeight,\n                maxHeight: 500,\n              },\n            },\n\n            ConsolePanel: {\n              id: \"ConsolePanel\",\n              style: {\n                height: 118,\n                minHeight: PanelMinHeight,\n              },\n            },\n\n            RunningPanel: {\n              id: \"RunningPanel\",\n              style: {\n                height: 322,\n                minHeight: PanelMinHeight,\n              },\n            },\n\n            Bottom: {\n              id: \"Bottom\",\n              style: {\n                height: 40,\n              },\n            },\n          },\n\n          collectionPage: {\n            SideBar: {\n              id: \"SideBar\",\n              style: {\n                width: 300,\n                minWidth: 206,\n              },\n            },\n            CollectionPanel: {\n              id: \"CollectionPanel\",\n              style: {},\n            },\n\n            PolicyPanel: {\n              id: \"PolicyPanel\",\n              style: {\n                height: 200,\n                minHeight: PanelMinHeight,\n                maxHeight: 500,\n              },\n            },\n            Bottom: {\n              id: \"Bottom\",\n              style: {\n                height: 40,\n              },\n            },\n          },\n\n          storagePage: {\n            SideBar: {\n              id: \"SideBar\",\n              style: {\n                width: 300,\n                minWidth: 230,\n                maxWidth: 800,\n              },\n            },\n          },\n        },\n\n        togglePanel: (pageId, panelId) => {\n          set((state: any) => {\n            const display = state.layoutInfo[pageId];\n            state.layoutInfo[pageId][panelId].style.display =\n              display[panelId].style.display === \"none\" ? \"flex\" : \"none\";\n          });\n        },\n        getLayoutInfoStyle: (pageId, panelId) => get().layoutInfo[pageId][panelId].style,\n        getLayoutInfo: (pageId, panelId) => get().layoutInfo[pageId][panelId],\n        setLayoutInfo: (pageId, panelId, position: { width: number; height: number }) => {\n          set((state: any) => {\n            const { display, width } = state.layoutInfo[pageId][panelId].style;\n            if (display === \"none\") return;\n            if (width) {\n              state.layoutInfo[pageId][panelId].style.width = position.width;\n            } else {\n              state.layoutInfo[pageId][panelId].style.height = position.height;\n            }\n          });\n        },\n\n        commonSettings: {\n          fontSize: 14,\n          funcListDisplay: \"name\",\n          useLSP: false,\n          useCopilot: false,\n        },\n\n        setCommonSettings: (settings) => {\n          set((state: any) => {\n            state.commonSettings = settings;\n          });\n        },\n      })),\n\n      {\n        name: \"laf_custom_setting\",\n        version: 3,\n      },\n    ),\n  ),\n);\n\nexport default useCustomSettingStore;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/AllTemplateList/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Search2Icon } from \"@chakra-ui/icons\";\nimport {\n  Button,\n  Center,\n  Input,\n  InputGroup,\n  InputLeftElement,\n  InputRightElement,\n  Spinner,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport EmptyBox from \"@/components/EmptyBox\";\nimport Pagination from \"@/components/Pagination\";\nimport getPageInfo from \"@/utils/getPageInfo\";\n\nimport TemplateCard from \"../Mods/TemplateCard\";\nimport { useGetFunctionTemplatesQuery } from \"../service\";\nimport useTemplateStore from \"../store\";\n\nimport { TFunctionTemplate } from \"@/apis/typing\";\n\ntype TemplateList = {\n  list: TFunctionTemplate[];\n  page: number;\n  pageSize: number;\n  total: number;\n};\n\nexport default function AllTemplateList() {\n  const { t } = useTranslation();\n  const { currentPage, setCurrentPage, currentSearchKey, setCurrentSearchKey } = useTemplateStore();\n  const [searchKey, setSearchKey] = useState(currentSearchKey);\n  const [templateList, setTemplateList] = useState<TemplateList>();\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  const { isLoading } = useGetFunctionTemplatesQuery(\n    {\n      pageSize: 12,\n      type: \"\",\n      asc: 1,\n      sort: \"hot\",\n      page: currentPage,\n      keyword: currentSearchKey,\n    },\n    {\n      onSuccess: (data: any) => {\n        setTemplateList(data.data);\n      },\n    },\n  );\n\n  return (\n    <div className=\"flex flex-grow flex-col\">\n      <div className=\"mr-4\">\n        <InputGroup>\n          <InputLeftElement children={<Search2Icon />} />\n          <Input\n            className={clsx(\n              \"!rounded-full\",\n              darkMode ? \"!border-grayModern-800\" : \"!border-[#DEE0E2] !bg-lafWhite-400\",\n            )}\n            placeholder={String(t(\"Search\"))}\n            onChange={(e) => setSearchKey(e.target.value)}\n            value={searchKey}\n            onKeyDown={(e) => {\n              if (e.key === \"Enter\") {\n                setCurrentSearchKey(searchKey);\n                setCurrentPage(1);\n              }\n            }}\n          />\n          <InputRightElement className=\"!w-24\">\n            <Button\n              className=\"mr-[3px] !h-9 w-full !bg-primary-600\"\n              onClick={() => {\n                setCurrentSearchKey(searchKey);\n                setCurrentPage(1);\n              }}\n            >\n              {t(\"Search\")}\n            </Button>\n          </InputRightElement>\n        </InputGroup>\n      </div>\n      <div className=\"mt-4\">\n        {isLoading ? (\n          <Center className=\"min-h-[400px]\">\n            <span>\n              <Spinner />\n            </span>\n          </Center>\n        ) : templateList && templateList.list?.length > 0 ? (\n          <>\n            <div className=\"flex w-full flex-wrap\">\n              {templateList.list.map((item: TFunctionTemplate) => (\n                <section className=\"mb-3 w-1/3\" key={item._id}>\n                  <TemplateCard className=\"w-full\" template={item} />\n                </section>\n              ))}\n            </div>\n            <div className=\"pb-6 pr-4 pt-2\">\n              <Pagination\n                values={getPageInfo(templateList)}\n                onChange={(values) => {\n                  setCurrentPage(values.page || 1);\n                }}\n                notShowSelect\n              />\n            </div>\n          </>\n        ) : (\n          <div className=\"w-full pt-20\">\n            <EmptyBox>\n              <p>{t(\"Template.EmptyTemplate\")}</p>\n            </EmptyBox>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/functionTemplate/CreateFuncTemplate/Mods/AddDependenceModal.tsx",
    "content": "import { useMemo, useState } from \"react\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { SearchIcon, SmallCloseIcon } from \"@chakra-ui/icons\";\nimport {\n  Box,\n  Button,\n  Center,\n  Checkbox,\n  Input,\n  InputGroup,\n  InputLeftElement,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  Select,\n  Spinner,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { debounce } from \"lodash\";\n\nimport DependenceList from \"@/components/DependenceList\";\n\nimport {\n  TDependenceItem,\n  usePackageSearchQuery,\n} from \"@/pages/app/functions/mods/DependencePanel/service\";\n\nconst AddDependenceModal = (props: {\n  children?: React.ReactElement;\n  packageList: any[];\n  setPackageList: React.Dispatch<React.SetStateAction<any[]>>;\n}) => {\n  const { children = null, setPackageList } = props;\n  const { t } = useTranslation();\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const [name, setName] = useState(\"\");\n  const [clickItem, setClickItem] = useState({ package: \"\", loading: false });\n  const [isShowChecked, setIsShowChecked] = useState(false);\n  const [checkList, setCheckList] = useState<TDependenceItem[]>([]);\n  const [list, setList] = useState<TDependenceItem[]>([]);\n\n  const packageSearchQuery = usePackageSearchQuery(name, (data) => {\n    const list: TDependenceItem[] = (data || []).map((item: any) => {\n      const existItem = checkList.find((checkItem: TDependenceItem) => {\n        return checkItem.package.name === item.package.name;\n      });\n      return existItem ? existItem : { ...item, versions: [] };\n    });\n    setList(list);\n  });\n\n  const search = useMemo(\n    () =>\n      debounce((val: string) => {\n        setName(val);\n      }, 1000),\n    [setName],\n  );\n\n  const setCheck = (dependence: TDependenceItem) => {\n    let list: TDependenceItem[] = [...checkList];\n    let index: number = list.findIndex(\n      (item: TDependenceItem) => item.package.name === dependence.package.name,\n    );\n    if (index === -1) {\n      list.push(dependence);\n    } else {\n      list.splice(index, 1);\n    }\n    setCheckList(list);\n  };\n\n  const renderList = (list: TDependenceItem[]) => {\n    return list.length === 0 ? (\n      <Center minH={200} className=\"text-grayIron-600\">\n        {t(\"NoData\")}\n      </Center>\n    ) : (\n      <DependenceList>\n        {(list || []).map((packageItem: TDependenceItem) => {\n          return (\n            <DependenceList.Item\n              style={{ minHeight: \"45px\" }}\n              isActive={false}\n              key={packageItem.package.name}\n              className=\"group\"\n              onClick={() => {\n                if (packageItem.versions.length === 0 && !clickItem.loading) {\n                  setClickItem({ package: packageItem.package.name, loading: true });\n                }\n              }}\n            >\n              <Checkbox\n                colorScheme=\"primary\"\n                size=\"lg\"\n                onChange={() => {\n                  setCheck(packageItem);\n                }}\n                isChecked={checkList.some(\n                  (item: TDependenceItem) => item.package.name === packageItem.package.name,\n                )}\n              >\n                <Box ml={5} width=\"350px\">\n                  <b>{packageItem.package.name}</b>\n                  <p className=\"overflow-hidden text-ellipsis whitespace-nowrap text-base text-second \">\n                    {packageItem.package.description}\n                  </p>\n                </Box>\n              </Checkbox>\n              <div className=\"flex items-center space-x-2\">\n                {clickItem.package === packageItem.package.name && clickItem.loading ? (\n                  <Spinner size=\"xs\" color=\"primary.500\" />\n                ) : null}\n                <Select\n                  width=\"150px\"\n                  size=\"sm\"\n                  variant=\"filled\"\n                  placeholder={packageItem.package.version}\n                  onClick={() => {\n                    if (packageItem.versions.length === 0 && !clickItem.loading) {\n                      setClickItem({ package: packageItem.package.name, loading: true });\n                    }\n                  }}\n                >\n                  {packageItem.versions.map((subItem: string | undefined) => {\n                    return (\n                      <option key={subItem} value={subItem}>\n                        {subItem}\n                      </option>\n                    );\n                  })}\n                </Select>\n              </div>\n            </DependenceList.Item>\n          );\n        })}\n      </DependenceList>\n    );\n  };\n\n  return (\n    <>\n      {children &&\n        React.cloneElement(children, {\n          onClick: () => {\n            onOpen();\n          },\n        })}\n\n      <Modal isOpen={isOpen} onClose={onClose} size={\"2xl\"}>\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"FunctionPanel.DependenceAdd\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody>\n            <div>\n              <InputGroup mb={3}>\n                <InputLeftElement pointerEvents=\"none\" children={<SearchIcon color=\"gray.300\" />} />\n                <Input\n                  rounded={\"full\"}\n                  onChange={(e: any) => {\n                    search(e.target.value);\n                  }}\n                  placeholder={t(\"FunctionPanel.DependenceTip\").toString()}\n                />\n              </InputGroup>\n              {packageSearchQuery.isFetching ? (\n                <Center className=\"min-h-[200px]\">\n                  <Spinner size=\"lg\" />\n                </Center>\n              ) : isShowChecked ? (\n                renderList(checkList)\n              ) : (\n                renderList(list)\n              )}\n            </div>\n          </ModalBody>\n          <ModalFooter>\n            {checkList.length > 0 && (\n              <span\n                className=\"mr-2 text-lg hover:cursor-pointer \"\n                onClick={() => {\n                  setIsShowChecked((pre) => !pre);\n                }}\n              >\n                {t(\"FunctionPanel.Select\")}:\n                <span className=\"mx-2 text-blue-500 \">\n                  {isShowChecked ? (\n                    <SmallCloseIcon fontSize={16} className=\"align-middle\" />\n                  ) : (\n                    checkList.length\n                  )}\n                </span>\n              </span>\n            )}\n\n            <Button\n              onClick={() => {\n                setPackageList(checkList);\n                onClose();\n              }}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nexport default AddDependenceModal;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/CreateFuncTemplate/Mods/AddEnvironmentsModal.tsx",
    "content": "import React from \"react\";\nimport {\n  Button,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  useColorMode,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport ENVEditor from \"@/components/Editor/ENVEditor\";\n\nconst AddEnvironmentsModal = (props: {\n  children: React.ReactElement;\n  environments: any[];\n  setEnvironments: React.Dispatch<React.SetStateAction<any[]>>;\n}) => {\n  const { children = null, environments, setEnvironments } = props;\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { colorMode } = useColorMode();\n\n  return (\n    <>\n      {children &&\n        React.cloneElement(children, {\n          onClick: () => {\n            onOpen();\n          },\n        })}\n      <Modal isOpen={isOpen} onClose={onClose} size=\"2xl\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"Template.AddEnvironmentVariables\")}</ModalHeader>\n          <ModalCloseButton />\n\n          <ModalBody>\n            <div\n              className={clsx(\"min-h-[200px] flex-1 rounded\", {\n                \"border-frostyNightfall-200\": !(colorMode === \"dark\"),\n              })}\n            >\n              <ENVEditor env={environments} setEnv={setEnvironments} showSwitch={false} />\n            </div>\n          </ModalBody>\n          <ModalFooter>\n            <Button\n              onClick={async () => {\n                setEnvironments(environments);\n                onClose();\n              }}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nexport default AddEnvironmentsModal;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/CreateFuncTemplate/Mods/AddFunctionModal.tsx",
    "content": "import React from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport {\n  Button,\n  Checkbox,\n  CheckboxGroup,\n  HStack,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { t } from \"i18next\";\n\nimport { TextIcon } from \"@/components/CommonIcon\";\nimport { SUPPORTED_METHODS } from \"@/constants\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nconst AddFunctionModal = (props: {\n  children?: React.ReactElement;\n  functionList?: any[];\n  setFunctionList?: React.Dispatch<React.SetStateAction<any[]>>;\n  setCurrentFunction: React.Dispatch<React.SetStateAction<any>>;\n  currentFunction?: any;\n  isEdit?: boolean;\n}) => {\n  const {\n    children = null,\n    functionList,\n    setFunctionList,\n    setCurrentFunction,\n    currentFunction,\n    isEdit,\n  } = props;\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { showError } = useGlobalStore();\n  const defaultValues = isEdit\n    ? {\n        name: currentFunction?.name,\n        methods: currentFunction?.methods,\n        description: currentFunction?.desc,\n      }\n    : {\n        name: \"\",\n        methods: [\"GET\", \"POST\"],\n        description: \"\",\n      };\n\n  const defaultCode = `import cloud from '@lafjs/cloud'\n\nexport default async function (ctx: FunctionContext) {\n  console.log('Hello World')\n  return { data: 'hi, laf' }\n}\n`;\n\n  const {\n    handleSubmit,\n    register,\n    reset,\n    setFocus,\n    control,\n    formState: { errors },\n  } = useForm({\n    defaultValues,\n  });\n\n  const onSubmit = (data: any) => {\n    const updateData = {\n      name: data.name,\n      methods: data.methods,\n      desc: data.description,\n    };\n\n    if (setFunctionList) {\n      if (isEdit) {\n        setFunctionList(\n          functionList?.map((item) => {\n            if (item.name === currentFunction.name) {\n              return { ...updateData, source: { code: currentFunction.source.code } };\n            }\n            return item;\n          }) || [],\n        );\n      } else {\n        if (functionList?.some((item) => item.name === data.name)) {\n          showError(t(\"Template.FunctionNameExist\"));\n          return;\n        }\n        setFunctionList([\n          ...(functionList || []),\n          { ...updateData, source: { code: defaultCode } },\n        ]);\n      }\n      setCurrentFunction({ ...updateData, source: { code: defaultCode } });\n      onClose();\n    }\n  };\n\n  return (\n    <>\n      {children &&\n        React.cloneElement(children, {\n          onClick: () => {\n            if (functionList && setCurrentFunction) {\n              setCurrentFunction(\n                functionList.find((item) => item.name === currentFunction?.name) || null,\n              );\n            }\n            onOpen();\n            reset(defaultValues);\n            setTimeout(() => {\n              setFocus(\"name\");\n            }, 0);\n          },\n        })}\n      <Modal isOpen={isOpen} onClose={onClose} size=\"2xl\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>\n            {isEdit ? t(\"FunctionPanel.EditFunction\") : t(\"FunctionPanel.AddFunction\")}\n          </ModalHeader>\n          <ModalCloseButton />\n\n          <ModalBody>\n            <div className=\"mb-3 flex h-12 w-full items-center border-b-2\">\n              <input\n                {...register(\"name\", {\n                  required: true,\n                  pattern: {\n                    value: /^[a-zA-Z0-9_.\\-](?:[a-zA-Z0-9_.\\-/]{0,254}[a-zA-Z0-9_.\\-])?$/,\n                    message: t(\"FunctionPanel.FunctionNameRule\"),\n                  },\n                })}\n                id=\"name\"\n                placeholder={String(t(\"FunctionPanel.FunctionNameTip\"))}\n                className=\"h-8 w-10/12 border-l-2 border-primary-600 bg-transparent pl-4 text-2xl font-medium\"\n                style={{ outline: \"none\", boxShadow: \"none\" }}\n              />\n            </div>\n            {errors.name && (\n              <span className=\"text-red-500\">{t(\"FunctionPanel.FunctionNameRule\")}</span>\n            )}\n            <HStack spacing={6} className=\"mb-3\">\n              <Controller\n                name=\"methods\"\n                control={control}\n                render={({ field: { ref, ...rest } }) => (\n                  <CheckboxGroup {...rest} colorScheme=\"primary\">\n                    {Object.keys(SUPPORTED_METHODS).map((item) => {\n                      return (\n                        <Checkbox value={item} key={item}>\n                          {item}\n                        </Checkbox>\n                      );\n                    })}\n                  </CheckboxGroup>\n                )}\n              />\n            </HStack>\n            <div\n              className={clsx(\n                \"flex w-full items-center border-b-2 border-transparent focus-within:border-grayModern-200\",\n              )}\n            >\n              <TextIcon fontSize={18} color={\"#D9D9D9\"} />\n              <input\n                id=\"description\"\n                placeholder={t(\"FunctionPanel.Description\").toString()}\n                className=\"w-full bg-transparent py-2 pl-2 text-lg text-second\"\n                style={{ outline: \"none\", boxShadow: \"none\" }}\n                {...register(\"description\")}\n              />\n            </div>\n          </ModalBody>\n          <ModalFooter>\n            <Button onClick={handleSubmit(onSubmit)}>{t(\"Confirm\")}</Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nexport default AddFunctionModal;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/CreateFuncTemplate/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { AddIcon, ChevronRightIcon, DeleteIcon } from \"@chakra-ui/icons\";\nimport { Box, Button, Radio, RadioGroup, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { TextIcon } from \"@/components/CommonIcon\";\nimport ConfirmButton from \"@/components/ConfirmButton\";\nimport FileTypeIcon from \"@/components/FileTypeIcon\";\n\nimport {\n  useCreateFunctionTemplateMutation,\n  useDeleteFunctionTemplateMutation,\n  useUpdateFunctionTemplateMutation,\n} from \"../service\";\n\nimport AddDependenceModal from \"./Mods/AddDependenceModal\";\nimport AddEnvironmentsModal from \"./Mods/AddEnvironmentsModal\";\nimport AddFunctionModal from \"./Mods/AddFunctionModal\";\n\nimport MonacoEditor from \"@/pages/functionTemplate/Mods/MonacoEditor\";\nimport { useGetOneFunctionTemplateQuery } from \"@/pages/functionTemplate/service\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function CreateFuncTemplate() {\n  const createFunctionMutation = useCreateFunctionTemplateMutation();\n  const updateFunctionMutation = useUpdateFunctionTemplateMutation();\n  const deleteFunctionMutation = useDeleteFunctionTemplateMutation();\n\n  const { t } = useTranslation();\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n\n  const [packageList, setPackageList] = useState<any[]>([]);\n  const [functionList, setFunctionList] = useState<any[]>([]);\n  const [currentFunction, setCurrentFunction] = useState<any>();\n  const [environments, setEnvironments] = useState<any[]>([]);\n  const [isEdit, setIsEdit] = useState<boolean>(false);\n  const [defaultFunction, setDefaultFunction] = useState<any>();\n  const [templateId, setTemplateId] = useState<string>(\"\");\n\n  const navigate = useNavigate();\n  const location = useLocation();\n  const { showSuccess, showError } = useGlobalStore();\n\n  type FormData = {\n    name: string;\n    visibility: string;\n    description: string;\n    tags: string[];\n  };\n  const {\n    register,\n    handleSubmit,\n    control,\n    reset,\n    formState: { errors },\n  } = useForm<FormData>({\n    defaultValues: defaultFunction,\n  });\n\n  useGetOneFunctionTemplateQuery(\n    { id: templateId },\n    {\n      enabled: isEdit,\n      onSuccess: (data: any) => {\n        setCurrentFunction(data.data[0].items[0]);\n        setFunctionList(data.data[0].items);\n        setPackageList(\n          data.data[0].dependencies.map((item: any) => {\n            const [name, version] = item.split(\"@\");\n            return {\n              package: {\n                name: name,\n                version: version,\n              },\n            };\n          }),\n        );\n        setEnvironments(data.data[0].environments);\n        setDefaultFunction({\n          name: data.data[0].name,\n          visibility: data.data[0].private ? \"private\" : \"public\",\n          description: data.data[0].description,\n        });\n      },\n    },\n  );\n\n  useEffect(() => {\n    const pathname = location.pathname;\n    if (pathname.endsWith(\"/edit\")) {\n      const pattern = /\\/([^/]+)\\/edit$/;\n      const match = pathname.match(pattern);\n      const id = match ? match[1] : \"\";\n      setIsEdit(true);\n      setTemplateId(id);\n    }\n  }, [location.pathname]);\n\n  useEffect(() => {\n    reset(defaultFunction);\n  }, [defaultFunction, reset]);\n\n  const onSubmit = async (data: FormData) => {\n    const { name, visibility, description } = data;\n\n    if (functionList.length === 0) {\n      showError(t(\"Template.FunctionListEmpty\"));\n      return;\n    }\n    const mutation = isEdit ? updateFunctionMutation : createFunctionMutation;\n    const mutationArgs = {\n      name,\n      private: visibility === \"private\",\n      description,\n      items: functionList.map((item) => ({\n        name: item.name,\n        description: item.desc,\n        methods: item.methods,\n        code: item.source.code || \"\",\n      })),\n      dependencies: packageList.map((item) => ({\n        name: item.package.name,\n        spec: item.package.version,\n      })),\n      environments: environments,\n    };\n\n    const res = await mutation.mutateAsync(\n      isEdit ? { id: templateId, functionTemplateId: templateId, ...mutationArgs } : mutationArgs,\n    );\n\n    if (!res?.error) {\n      showSuccess(\n        isEdit ? t(\"Update function template success\") : t(\"Create function template success\"),\n      );\n    }\n    navigate(-1);\n  };\n\n  return (\n    <div className={clsx(\"flex flex-col px-28 2xl:px-48\", colorMode === \"dark\" ? \"\" : \"bg-white\")}>\n      <div className=\"flex pt-12 text-lg\">\n        <span\n          className=\"cursor-pointer text-second\"\n          onClick={() => {\n            navigate(-1);\n          }}\n        >\n          {t(\"HomePage.NavBar.funcTemplate\")}\n        </span>\n        <span className=\"flex items-center px-3\">\n          <ChevronRightIcon />\n        </span>\n        <span>{isEdit ? t(\"Template.Edit\") : t(\"Template.Create\")}</span>\n      </div>\n\n      <div className=\"flex h-full pt-9\">\n        <div className=\"mr-9 h-full w-4/5\">\n          <div className=\"mb-4 border-b border-dotted pb-2\">\n            <div className=\"flex h-12 w-full items-center border-b-[2px]\">\n              <input\n                {...register(\"name\", { required: true })}\n                className=\"h-7 w-full border-l-2 border-primary-600 bg-transparent pl-4 text-2xl font-medium\"\n                style={{ outline: \"none\", boxShadow: \"none\" }}\n                placeholder=\"Title\"\n              />\n            </div>\n            {errors.name && (\n              <span className=\"text-red-500\">{t(\"Template.Please enter template name\")}</span>\n            )}\n            <Controller\n              control={control}\n              name=\"visibility\"\n              rules={{ required: true }}\n              render={({ field }) => (\n                <RadioGroup className=\"w-full pt-3\" {...field}>\n                  <Radio value=\"public\">{t(\"Template.public\")}</Radio>\n                  <Radio value=\"private\" className=\"ml-4\">\n                    {t(\"Template.private\")}\n                  </Radio>\n                </RadioGroup>\n              )}\n            />\n            {errors.visibility && (\n              <span className=\"text-red-500\">\n                {t(\"Template.Please select template permission\")}\n              </span>\n            )}\n            <div\n              className={clsx(\n                \"mt-2 flex w-full items-center rounded-md\",\n                darkMode ? \"focus-within:bg-gray-800\" : \"focus-within:bg-[#F4F6F8]\",\n              )}\n            >\n              <TextIcon fontSize={18} color={\"gray.400\"} />\n              <input\n                placeholder={String(t(\"Template.Description\"))}\n                className=\"w-full bg-transparent py-2 pl-2 text-lg\"\n                style={{ outline: \"none\", boxShadow: \"none\" }}\n                {...register(\"description\")}\n              />\n            </div>\n          </div>\n\n          <div className=\"flex justify-between\">\n            <div className=\"scrollbar-thin mb-2 mr-8 flex w-full overflow-auto\">\n              {functionList.map((item) => {\n                return (\n                  <div\n                    key={item.name}\n                    className={clsx(\n                      \"mb-2 mr-2 cursor-pointer rounded-md border px-8 py-1 text-[14px]\",\n                      !darkMode && \"bg-[#F6F8F9]\",\n                      \"hover:border-blue-400 hover:bg-blue-100 hover:text-blue-700\",\n                      currentFunction?.name === item.name &&\n                        \"border-blue-400 bg-blue-100 text-blue-700\",\n                    )}\n                    onClick={() => {\n                      setCurrentFunction(item);\n                    }}\n                  >\n                    {item.name}\n                  </div>\n                );\n              })}\n            </div>\n            <AddFunctionModal\n              functionList={functionList}\n              setFunctionList={setFunctionList}\n              setCurrentFunction={setCurrentFunction}\n              isEdit={false}\n            >\n              <Button\n                variant={\"secondary\"}\n                onClick={() => {\n                  setCurrentFunction({ name: \"\" });\n                }}\n              >\n                <AddIcon boxSize={2.5} />\n                <span className=\"pl-4\">{t(\"FunctionPanel.AddFunction\")}</span>\n              </Button>\n            </AddFunctionModal>\n          </div>\n\n          <div className=\"overflow-auto xl:h-[45vh] 2xl:h-[55vh]\">\n            {currentFunction && (\n              <MonacoEditor\n                value={currentFunction.source.code}\n                onChange={(value: string | undefined) => {\n                  setFunctionList(\n                    functionList.map((item) => {\n                      if (item.name === currentFunction.name) {\n                        return {\n                          ...item,\n                          source: {\n                            code: value,\n                          },\n                        };\n                      }\n                      return item;\n                    }),\n                  );\n                }}\n                title={currentFunction?.name}\n                colorMode={colorMode}\n                currentFunction={currentFunction}\n                setCurrentFunction={setCurrentFunction}\n                functionList={functionList}\n                setFunctionList={setFunctionList}\n              />\n            )}\n          </div>\n\n          <div className=\"mt-4 flex justify-center pb-4\">\n            {isEdit && (\n              <ConfirmButton\n                headerText={t(\"Delete\")}\n                bodyText={t(\"Template.ConfirmDeleteTemplate\")}\n                onSuccessAction={async () => {\n                  const res = await deleteFunctionMutation.mutateAsync({ id: templateId });\n                  if (!res.error) {\n                    showSuccess(t(\"DeleteSuccess\"));\n                    navigate(-1);\n                  }\n                }}\n              >\n                <Button className=\"mr-4 w-36 bg-red-100\" variant={\"warnText\"}>\n                  {t(\"Delete\")}\n                </Button>\n              </ConfirmButton>\n            )}\n            <Button className=\"w-36\" onClick={handleSubmit(onSubmit)}>\n              {isEdit ? t(\"Template.Save\") : t(\"Publish\")}\n            </Button>\n          </div>\n        </div>\n        <div className=\"flex h-[70vh] w-1/5 flex-col\">\n          <Box className={clsx(\"border-b-[1px]\", functionList.length === 0 && \"pb-2\")}>\n            <div className=\"flex items-center\">\n              <span className=\"text-xl font-semibold\">{t(\"Template.Function\")}</span>\n            </div>\n            <Box className=\"max-h-48 overflow-auto\">\n              {functionList.map((item) => {\n                return (\n                  <div\n                    key={item.name}\n                    className=\"my-3 flex items-center justify-between rounded-md py-1 font-medium hover:opacity-100\"\n                  >\n                    <div className=\"flex w-10/12 items-center\">\n                      <FileTypeIcon type=\"ts\" fontSize={18} />\n                      <span className=\"truncate pl-1 text-lg\">{item.name}</span>\n                    </div>\n                  </div>\n                );\n              })}\n            </Box>\n          </Box>\n          <Box className={clsx(\"mt-3 border-b-[1px]\", packageList.length === 0 && \"pb-2\")}>\n            <div className=\"flex items-center justify-between\">\n              <span className=\"text-xl font-semibold\">{t(\"Template.Dependency\")}</span>\n              <AddDependenceModal packageList={packageList} setPackageList={setPackageList}>\n                <AddIcon className=\"cursor-pointer\" />\n              </AddDependenceModal>\n            </div>\n            <Box className=\"max-h-36 overflow-auto\">\n              {packageList.map((item) => {\n                return (\n                  <Box\n                    key={item.package.name}\n                    className=\"my-3 flex items-center justify-between py-1 font-medium\"\n                  >\n                    <div>\n                      <FileTypeIcon type=\"npm\" />\n                      <span className=\"pl-1\">{item.package.name}</span>\n                    </div>\n                    <div className=\"flex items-center\">\n                      <span className=\"pr-2\">{item.package.version}</span>\n                      <DeleteIcon\n                        boxSize={3}\n                        color={\"gray.400\"}\n                        className=\"cursor-pointer hover:text-gray-800\"\n                        onClick={() => {\n                          setPackageList(\n                            packageList.filter((pkg) => pkg.package.name !== item.package.name),\n                          );\n                        }}\n                      />\n                    </div>\n                  </Box>\n                );\n              })}\n            </Box>\n          </Box>\n          <Box className={clsx(\"mt-3 border-b-[1px]\", environments.length === 0 && \"pb-2\")}>\n            <div className=\"flex items-center justify-between\">\n              <span className=\"text-xl font-semibold\">{t(\"Template.EnvironmentVariables\")}</span>\n              <span className=\"cursor-pointer\">\n                <AddEnvironmentsModal environments={environments} setEnvironments={setEnvironments}>\n                  <AddIcon />\n                </AddEnvironmentsModal>\n              </span>\n            </div>\n            <Box className=\"max-h-36 overflow-auto\">\n              {environments.map((item) => {\n                return (\n                  <Box key={item.name} className=\"my-5 flex justify-between\">\n                    <div className=\"flex w-5/12 truncate font-medium\">{item.name}</div>\n                    <div className=\"ml-8 truncate\">{item.value}</div>\n                  </Box>\n                );\n              })}\n            </Box>\n          </Box>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/functionTemplate/FuncTemplateItem/TemplateFunctionInfo.tsx",
    "content": "import { useState } from \"react\";\nimport { Divider, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport MonacoEditor from \"../Mods/MonacoEditor\";\n\nimport { TFunctionTemplate } from \"@/apis/typing\";\n\nconst TemplateFunctionInfo = ({\n  template,\n  popover = false,\n}: {\n  template: TFunctionTemplate;\n  popover?: boolean;\n}) => {\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n\n  const [currentFunction, setCurrentFunction] = useState<TFunctionTemplate[\"items\"][number]>(\n    template.items[0],\n  );\n\n  return (\n    <>\n      {!popover && (\n        <div>\n          <div className=\"mb-2 flex justify-between\">\n            <div className=\"w-full\">\n              <p className=\"text-ellipsis pb-2 text-[24px] font-semibold\">{template.name}</p>\n              <p className=\"text-ellipsis text-second\">{template.description}</p>\n            </div>\n          </div>\n          <Divider marginY={4} variant=\"dashed\" />\n        </div>\n      )}\n      <div className=\"flex w-full overflow-auto\">\n        {template.items.map((item) => (\n          <div\n            className={clsx(\n              \"mr-2 cursor-pointer whitespace-nowrap rounded-md border px-8 py-1 text-[14px]\",\n              !darkMode && \"bg-[#F6F8F9]\",\n              \"hover:border-blue-400 hover:bg-blue-100 hover:text-blue-700\",\n              currentFunction?.name === item.name && \"border-blue-400 bg-blue-100 text-blue-700\",\n              popover ? \"mb-2\" : \"mb-4\",\n            )}\n            onClick={() => {\n              setCurrentFunction(item);\n            }}\n            key={item.name}\n          >\n            {item.name}\n          </div>\n        ))}\n      </div>\n      <div\n        className=\"overflow-auto\"\n        style={{\n          height: popover ? \"250px\" : \"60vh\",\n        }}\n      >\n        <MonacoEditor\n          value={currentFunction.source.code}\n          colorMode={colorMode}\n          readOnly={true}\n          title={currentFunction.name}\n          currentFunction={currentFunction}\n          popover={popover}\n        />\n      </div>\n    </>\n  );\n};\n\nexport default TemplateFunctionInfo;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/FuncTemplateItem/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { ChevronRightIcon } from \"@chakra-ui/icons\";\nimport clsx from \"clsx\";\n\nimport TemplateInfo from \"../Mods/TemplateInfo\";\nimport { useGetFunctionTemplateUsedByQuery, useGetOneFunctionTemplateQuery } from \"../service\";\nimport useTemplateStore from \"../store\";\n\nimport TemplateFunctionInfo from \"./TemplateFunctionInfo\";\n\nimport { TFunctionTemplate } from \"@/apis/typing\";\n\nconst FuncTemplateItem = (props: { isModal: boolean }) => {\n  const { t } = useTranslation();\n\n  const [template, setTemplate] = useState<TFunctionTemplate>();\n  const [usedBy, setUsedBy] = useState();\n  const pathname = window.location.href;\n  const id = pathname.split(\"/\").pop();\n  const { setShowTemplateItem } = useTemplateStore();\n  const { isModal } = props;\n  const navigate = useNavigate();\n\n  useGetOneFunctionTemplateQuery(\n    { id: id },\n    {\n      enabled: (id as string)?.length > 12,\n      onSuccess: (data: any) => {\n        setTemplate(data.data[0]);\n      },\n    },\n  );\n\n  useGetFunctionTemplateUsedByQuery(\n    { id: id },\n    {\n      enabled: (id as string)?.length > 12,\n      onSuccess: (data: any) => {\n        setUsedBy(data.data);\n      },\n    },\n  );\n\n  return (\n    <div className={clsx(\"flex w-full flex-grow flex-col px-12 \", isModal ? \"\" : \"pt-4\")}>\n      <div className=\"flex text-lg\">\n        <span\n          className=\"cursor-pointer text-second\"\n          onClick={() => {\n            setShowTemplateItem(false);\n            navigate(-1);\n          }}\n        >\n          {t(\"HomePage.NavBar.funcTemplate\")}\n        </span>\n        <span className=\"flex items-center px-3\">\n          <ChevronRightIcon />\n        </span>\n        <span>{t(\"Template.Details\")}</span>\n      </div>\n      {template && (\n        <div className=\"flex pt-3\">\n          <div className=\"mr-9 h-full w-4/5\">\n            <TemplateFunctionInfo template={template} />\n          </div>\n          <div className=\"w-1/5\">\n            <TemplateInfo functionTemplate={template} usedBy={usedBy} />\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default FuncTemplateItem;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/Mods/MonacoEditor/FunctionPopover.tsx",
    "content": "import { BiMessageSquareDetail } from \"react-icons/bi\";\nimport { Popover, PopoverBody, PopoverContent, PopoverTrigger } from \"@chakra-ui/react\";\n\nimport FileTypeIcon from \"@/components/FileTypeIcon\";\nimport IconWrap from \"@/components/IconWrap\";\n\nconst FunctionPopOver = (props: { currentFunction: any }) => {\n  const { currentFunction } = props;\n\n  return (\n    <Popover trigger=\"hover\" placement=\"bottom-start\" isLazy>\n      <IconWrap>\n        <PopoverTrigger>\n          <span>\n            <BiMessageSquareDetail />\n          </span>\n        </PopoverTrigger>\n      </IconWrap>\n      <PopoverContent width={\"300px\"}>\n        <PopoverBody px=\"6\" py=\"4\">\n          <div className=\"flex items-center\">\n            <span className=\"mb-2 pr-2 text-[20px] font-semibold\">{currentFunction.name}</span>\n            <FileTypeIcon type=\"ts\" fontSize={20} />\n          </div>\n          <div className=\"truncate pb-2 text-grayIron-600\">{currentFunction.desc}</div>\n          <div className=\"flex text-grayIron-600\">\n            {currentFunction.methods.map((method: any) => {\n              return (\n                <div className=\"mr-1 rounded-md bg-gray-100 px-1\" key={method}>\n                  {method}\n                </div>\n              );\n            })}\n          </div>\n        </PopoverBody>\n      </PopoverContent>\n    </Popover>\n  );\n};\n\nexport default FunctionPopOver;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/Mods/MonacoEditor/index.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\nimport Editor from \"@monaco-editor/react\";\nimport clsx from \"clsx\";\n\nimport { EditIconLine, RecycleDeleteIcon } from \"@/components/CommonIcon\";\nimport ConfirmButton from \"@/components/ConfirmButton\";\nimport { COLOR_MODE } from \"@/constants\";\n\nimport AddFunctionModal from \"../../CreateFuncTemplate/Mods/AddFunctionModal\";\n\nimport FunctionPopOver from \"./FunctionPopover\";\n\nconst MonacoEditor = (props: {\n  value: string;\n  title?: string;\n  readOnly?: boolean;\n  colorMode?: string;\n  onChange?: (value: string | undefined) => void;\n  currentFunction?: any;\n  setCurrentFunction?: any;\n  functionList?: any;\n  setFunctionList?: any;\n  popover?: boolean;\n}) => {\n  const {\n    readOnly,\n    value,\n    title,\n    colorMode,\n    onChange,\n    currentFunction,\n    setCurrentFunction,\n    functionList,\n    setFunctionList,\n    popover,\n  } = props;\n  const { t } = useTranslation();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  const options = {\n    minimap: {\n      enabled: false,\n    },\n    language: \"typescript\",\n    readOnly: readOnly,\n    scrollBeyondLastLine: false,\n    scrollbar: {\n      verticalScrollbarSize: 4,\n      horizontalScrollbarSize: 8,\n    },\n    suggest: {\n      showStatusBar: false,\n      showMethods: false,\n      showFunctions: false,\n      showClasses: false,\n      showVariables: false,\n      showConstants: false,\n      showProperties: false,\n      showEvents: false,\n      showOperators: false,\n      showKeywords: false,\n      showWords: false,\n    },\n    mouseWheelScrollSensitivity: 0,\n    formatOnPaste: true,\n    overviewRulerLanes: 0,\n    lineNumbersMinChars: 4,\n    fontSize: popover ? 10 : 14,\n    fontWeight: popover ? \"400\" : \"450\",\n  };\n\n  return (\n    <div\n      className={clsx(\n        \"h-full overflow-hidden rounded-md border border-grayModern-200\",\n        darkMode ? \"bg-[#202631]\" : \"bg-white\",\n      )}\n    >\n      <div\n        className={clsx(\n          \"flex h-8 w-full items-center justify-between rounded-t-md px-6 text-lg font-semibold\",\n          darkMode ? \"bg-gray-700 text-white\" : \"bg-gray-100 text-gray-800\",\n        )}\n        placeholder=\"Function Name\"\n        style={{ outline: \"none\", boxShadow: \"none\" }}\n      >\n        <span className=\"flex items-center\">\n          {title}\n          <span className=\"ml-3 text-grayIron-600\">\n            <FunctionPopOver currentFunction={currentFunction} />\n          </span>\n        </span>\n        <span>\n          {!readOnly && (\n            <span className=\"flex items-center space-x-4\">\n              <AddFunctionModal\n                functionList={functionList}\n                setFunctionList={setFunctionList}\n                currentFunction={currentFunction}\n                setCurrentFunction={setCurrentFunction}\n                isEdit={true}\n              >\n                <span className=\"cursor-pointer\">\n                  <EditIconLine color={darkMode ? \"#F4F6F8\" : \"#24282C\"} />\n                </span>\n              </AddFunctionModal>\n              <ConfirmButton\n                onSuccessAction={async () => {\n                  const updatedFunctionList = functionList.filter(\n                    (func: any) => func.name !== currentFunction?.name,\n                  );\n                  setFunctionList(updatedFunctionList);\n                  setCurrentFunction(updatedFunctionList[0]);\n                }}\n                headerText={String(t(\"Delete\"))}\n                bodyText={String(t(\"FunctionPanel.DeleteConfirm\"))}\n              >\n                <RecycleDeleteIcon\n                  fontSize=\"17\"\n                  color={darkMode ? \"#F4F6F8\" : \"#24282C\"}\n                  className=\"cursor-pointer\"\n                />\n              </ConfirmButton>\n            </span>\n          )}\n        </span>\n      </div>\n      <Editor\n        defaultLanguage=\"typescript\"\n        value={value}\n        options={options}\n        onChange={onChange}\n        theme={darkMode ? \"MonacoEditorThemeDark\" : \"MonacoEditorTheme\"}\n        beforeMount={(monaco) => {\n          monaco.languages.typescript.javascriptDefaults.setCompilerOptions({\n            allowNonTsExtensions: true,\n            lib: [],\n          });\n          monaco.editor.defineTheme(\"MonacoEditorTheme\", {\n            base: \"vs\",\n            inherit: true,\n            rules: [\n              {\n                foreground: \"#008189\",\n                token: \"keyword\",\n              },\n            ],\n            colors: {\n              \"editorLineNumber.foreground\": \"#aaa\",\n              \"editorOverviewRuler.border\": \"#fff\",\n              \"editor.lineHighlightBackground\": \"#F7F8FA\",\n              \"scrollbarSlider.background\": \"#E8EAEC\",\n              \"editorIndentGuide.activeBackground\": \"#fff\",\n              \"editorIndentGuide.background\": \"#eee\",\n            },\n          });\n\n          monaco.editor.defineTheme(\"MonacoEditorThemeDark\", {\n            base: \"vs-dark\",\n            inherit: true,\n            rules: [\n              {\n                foreground: \"#65737e\",\n                token: \"punctuation.definition.comment\",\n              },\n            ],\n            colors: {\n              \"editor.foreground\": \"#ffffff\",\n              \"editor.background\": \"#202631\",\n              \"editorIndentGuide.activeBackground\": \"#fff\",\n              \"editorIndentGuide.background\": \"#eee\",\n              \"editor.selectionBackground\": \"#101621\",\n              \"menu.selectionBackground\": \"#101621\",\n              \"dropdown.background\": \"#1a202c\",\n              \"dropdown.foreground\": \"#f0f0f0\",\n              \"dropdown.border\": \"#fff\",\n              \"quickInputList.focusBackground\": \"#1a202c\",\n              \"editorWidget.background\": \"#1a202c\",\n              \"editorWidget.foreground\": \"#f0f0f0\",\n              \"editorWidget.border\": \"#1a202c\",\n              \"input.background\": \"#1a202c\",\n              \"list.hoverBackground\": \"#2a303c\",\n            },\n          });\n        }}\n      />\n    </div>\n  );\n};\n\nexport default MonacoEditor;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/Mods/TemplateCard/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { BsThreeDotsVertical } from \"react-icons/bs\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Avatar, Menu, MenuButton, MenuItem, MenuList, useColorMode } from \"@chakra-ui/react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\n\nimport { LikeIcon, MedalIcon } from \"@/components/CommonIcon\";\nimport IconWrap from \"@/components/IconWrap\";\nimport { getAvatarUrl } from \"@/utils/getAvatarUrl\";\n\nimport { useDeleteFunctionTemplateMutation } from \"../../service\";\nimport { useFunctionTemplateStarMutation } from \"../../service\";\nimport useTemplateStore from \"../../store\";\nimport TemplatePopOver from \"../TemplatePopover/TemplatePopover\";\n\nimport { TFunctionTemplate } from \"@/apis/typing\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nconst TemplateCard = (props: {\n  className?: string;\n  isModal?: boolean;\n  template: TFunctionTemplate;\n  templateCategory?: string;\n}) => {\n  const { className, templateCategory, template, isModal } = props;\n  const { colorMode } = useColorMode();\n  const navigate = useNavigate();\n  const deleteFunctionMutation = useDeleteFunctionTemplateMutation();\n  const { t } = useTranslation();\n  const { showSuccess } = useGlobalStore();\n  const { setShowTemplateItem } = useTemplateStore();\n  const darkMode = colorMode === \"dark\";\n  const queryClient = useQueryClient();\n  const starMutation = useFunctionTemplateStarMutation();\n  const [starNumber, setStarNumber] = useState(template.star);\n  const [starState, setStarState] = useState(template.stared);\n\n  return (\n    <div className={className}>\n      <div\n        className={clsx(\"cursor-pointer rounded-lg border-[1px]\", isModal ? \"pb-4\" : \"mr-4\")}\n        style={{ boxShadow: \"0px 4px 4px 0px rgba(198, 205, 214, 0.25)\" }}\n        onMouseEnter={(e) => {\n          e.currentTarget.style.outlineWidth = \"2px\";\n          e.currentTarget.style.boxShadow = \"0px 0px 0px 2px #66CBCA\";\n        }}\n        onMouseLeave={(e) => {\n          e.currentTarget.style.outlineWidth = \"1px\";\n          e.currentTarget.style.boxShadow = \"0px 2px 4px rgba(0, 0, 0, 0.1)\";\n        }}\n      >\n        <TemplatePopOver template={template}>\n          <div\n            className=\"mx-5\"\n            onClick={() => {\n              navigate(`${template._id}`);\n              setShowTemplateItem(true);\n            }}\n          >\n            <div className=\"mb-3 flex justify-between pt-4\">\n              <p\n                className={clsx(\n                  \"flex items-center overflow-hidden text-ellipsis whitespace-nowrap font-semibold\",\n                  isModal ? \"text-xl\" : \"text-2xl \",\n                )}\n              >\n                {template.name}\n              </p>\n              <div className=\"flex space-x-2\">\n                {template.isRecommended && <MedalIcon />}\n                {templateCategory === \"default\" && (\n                  <div className=\"flex items-center\">\n                    <span\n                      className={clsx(\n                        \"mr-3 px-2 font-semibold\",\n                        template.private === false\n                          ? \"bg-blue-100 text-blue-600\"\n                          : \"bg-adora-200 text-adora-600\",\n                      )}\n                    >\n                      {template.private ? \"Private\" : \"Public\"}\n                    </span>\n                    <Menu placement=\"bottom-end\">\n                      <MenuButton\n                        onClick={(e) => {\n                          e.stopPropagation();\n                        }}\n                      >\n                        <IconWrap>\n                          <BsThreeDotsVertical size={12} />\n                        </IconWrap>\n                      </MenuButton>\n                      <MenuList width={12} minW={24}>\n                        <MenuItem\n                          onClick={(e) => {\n                            e.stopPropagation();\n                            navigate(`/market/templates/${template._id}/edit`);\n                          }}\n                        >\n                          {t(\"Template.EditTemplate\")}\n                        </MenuItem>\n                        <MenuItem\n                          onClick={async (e) => {\n                            e.stopPropagation();\n                            const res = await deleteFunctionMutation.mutateAsync({\n                              id: template._id,\n                            });\n                            if (!res.error) {\n                              showSuccess(t(\"DeleteSuccess\"));\n                              queryClient.invalidateQueries([\"useGetMyFunctionTemplatesQuery\"]);\n                            }\n                          }}\n                        >\n                          {t(\"Template.DeleteTemplate\")}\n                        </MenuItem>\n                      </MenuList>\n                    </Menu>\n                  </div>\n                )}\n              </div>\n            </div>\n\n            <p\n              className={clsx(\n                \"mb-3 flex h-4 flex-grow-0 overflow-hidden text-ellipsis\",\n                darkMode ? \"text-gray-300\" : \"text-second\",\n              )}\n            >\n              {template.description}\n            </p>\n\n            <div className=\"flex w-full overflow-hidden\">\n              {template.items.map((item) => {\n                return (\n                  <div\n                    key={item.name}\n                    className=\"mr-2 whitespace-nowrap rounded-md bg-blue-100 px-2 py-1 font-medium text-blue-700\"\n                  >\n                    {item.name}\n                  </div>\n                );\n              })}\n            </div>\n\n            {!isModal && (\n              <div className=\"my-3 flex items-center justify-between\">\n                <span className=\"flex items-center\">\n                  <Avatar\n                    boxSize=\"24px\"\n                    border={\"1px solid #DEE0E2\"}\n                    src={getAvatarUrl(template?.uid)}\n                    name={template.author}\n                    className=\"mr-2\"\n                    bgColor=\"primary.500\"\n                    color=\"white\"\n                  />\n                  {template.author}\n                </span>\n                <div\n                  className={clsx(\n                    \"flex items-center text-lg hover:text-rose-500\",\n                    starState && \"text-rose-500\",\n                  )}\n                  onClick={async (e) => {\n                    e.stopPropagation();\n                    const res = await starMutation.mutateAsync({ templateId: template._id });\n                    if (!res.error) {\n                      if (res.data === \"stared\") {\n                        setStarNumber(starNumber + 1);\n                        setStarState(true);\n                      } else {\n                        setStarNumber(starNumber - 1);\n                        setStarState(false);\n                      }\n                    }\n                  }}\n                >\n                  <LikeIcon className=\"mr-1\" /> {starNumber}\n                </div>\n              </div>\n            )}\n          </div>\n        </TemplatePopOver>\n      </div>\n    </div>\n  );\n};\n\nexport default TemplateCard;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/Mods/TemplateInfo/SponsorModal/index.tsx",
    "content": "import React from \"react\";\nimport { useDisclosure } from \"@chakra-ui/hooks\";\nimport {\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n} from \"@chakra-ui/react\";\n\nconst SponsorModal = (props: { children: any }) => {\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { children } = props;\n  return (\n    <>\n      {React.cloneElement(children, {\n        onClick: (event?: any) => {\n          event?.preventDefault();\n          onOpen();\n        },\n      })}\n\n      <Modal isOpen={isOpen} onClose={onClose} size=\"2xl\">\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>Sponsor</ModalHeader>\n          <ModalCloseButton />\n\n          <ModalBody></ModalBody>\n\n          <ModalFooter></ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nexport default SponsorModal;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/Mods/TemplateInfo/UseTemplate/UseTemplateModal.tsx",
    "content": "import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  Box,\n  Button,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  Spinner,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { useMutation, useQuery } from \"@tanstack/react-query\";\n\nimport ConfirmButton from \"@/components/ConfirmButton\";\nimport { APP_STATUS } from \"@/constants\";\nimport { formatDate } from \"@/utils/format\";\nimport getRegionById from \"@/utils/getRegionById\";\n\nimport { useFunctionTemplateUseMutation } from \"../../../service\";\n\nimport { ApplicationControllerFindAll } from \"@/apis/v1/applications\";\nimport { ApplicationControllerUpdateState } from \"@/apis/v1/applications\";\nimport { DependencyControllerGetDependencies } from \"@/apis/v1/apps\";\nimport useGlobalStore from \"@/pages/globalStore\";\nimport { APP_LIST_QUERY_KEY } from \"@/pages/home\";\nimport BundleInfo from \"@/pages/home/mods/List/BundleInfo\";\nimport StatusBadge from \"@/pages/home/mods/StatusBadge\";\n\nconst UseTemplateModal = (props: { children: any; templateId: string; packageList: any }) => {\n  const { children, templateId, packageList } = props;\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const { regions, currentApp } = useGlobalStore();\n  const { t } = useTranslation();\n  const useTemplateMutation = useFunctionTemplateUseMutation();\n\n  const { data: appList, isLoading } = useQuery(\n    APP_LIST_QUERY_KEY,\n    () => {\n      return ApplicationControllerFindAll({});\n    },\n    {\n      enabled: isOpen && !currentApp,\n    },\n  );\n\n  const { data: dependencies } = useQuery(\n    [\"dependencies\"],\n    () => {\n      return DependencyControllerGetDependencies({});\n    },\n    {\n      enabled: !!currentApp,\n    },\n  );\n\n  const updateAppStateMutation = useMutation((params: any) =>\n    ApplicationControllerUpdateState(params),\n  );\n\n  const handleUseTemplate = async (appItem: any) => {\n    const res = await useTemplateMutation.mutateAsync({\n      appid: appItem.appid,\n      templateId: templateId,\n    });\n\n    const isAnyPackageNotInDependencyList = packageList.some((packageItem: string) => {\n      const packageName = packageItem.split(\"@\")[0];\n      return !dependencies?.data.some((dep: any) => dep.name === packageName);\n    });\n\n    if (isAnyPackageNotInDependencyList && packageList.length > 0) {\n      if (appItem.phase === APP_STATUS.Stopped) {\n        updateAppStateMutation.mutate({\n          appid: appItem.appid,\n          state: APP_STATUS.Running,\n        });\n      }\n\n      if (appItem.phase === APP_STATUS.Running) {\n        updateAppStateMutation.mutate({\n          appid: appItem.appid,\n          state: APP_STATUS.Restarting,\n          onlyRuntimeFlag: true,\n        });\n      }\n    }\n\n    if (!res.error) {\n      window.location.href = `/app/${appItem.appid}/function`;\n    }\n  };\n\n  return (\n    <>\n      {React.cloneElement(children, {\n        onClick: onOpen,\n      })}\n\n      <Modal isOpen={isOpen} onClose={onClose} size={!currentApp ? \"2xl\" : \"md\"}>\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>\n            {!currentApp ? t(\"Template.Select the application you want to use\") : t(\"Confirm\")}\n          </ModalHeader>\n          <ModalCloseButton />\n\n          {isLoading && !currentApp ? (\n            <ModalBody className=\"flex justify-center\">\n              <Spinner className=\"text-grayModern-700\" />\n            </ModalBody>\n          ) : (\n            <ModalBody>\n              {!currentApp ? (\n                <div className=\"flex flex-col\">\n                  {appList?.data.map((item: any) => {\n                    return (\n                      <Box key={item?.appid}>\n                        <ConfirmButton\n                          headerText={t(\"Confirm\")}\n                          confirmButtonText={String(t(\"Confirm\"))}\n                          bodyText={t(\"Template.Confirm\")}\n                          onSuccessAction={() => handleUseTemplate(item)}\n                        >\n                          <Box className=\"group mb-3 flex cursor-pointer items-center rounded-xl border-2 px-3 py-5 hover:border-primary-500 lg:px-6\">\n                            <div className=\"w-3/12 \">\n                              <div className=\"text-lg font-bold\">{item?.name}</div>\n                              <BundleInfo bundle={item.bundle} className=\"-ml-3\" />\n                            </div>\n                            <div className=\"w-2/12 font-mono\">{item?.appid}</div>\n                            <div className=\"w-2/12 \">\n                              <StatusBadge\n                                className=\"!bg-transparent\"\n                                statusConditions={item?.phase}\n                                state={item?.state}\n                              />\n                            </div>\n                            <div className=\"w-2/12 \">\n                              {getRegionById(regions, item.regionId)?.displayName}\n                            </div>\n                            <div className=\"w-4/12 \">\n                              <p>\n                                {t(\"CreateTime\")}: {formatDate(item.createdAt)}{\" \"}\n                              </p>\n                            </div>\n                          </Box>\n                        </ConfirmButton>\n                      </Box>\n                    );\n                  })}\n                </div>\n              ) : (\n                <div>{t(\"Template.Confirm\")}</div>\n              )}\n            </ModalBody>\n          )}\n\n          <ModalFooter>\n            {!currentApp ? null : (\n              <Button onClick={() => handleUseTemplate(currentApp)}>{t(\"Confirm\")}</Button>\n            )}\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n};\n\nexport default UseTemplateModal;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/Mods/TemplateInfo/UseTemplate/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Box, Button } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { FilledHeartIcon, HeartIcon } from \"@/components/CommonIcon\";\n\nimport { useFunctionTemplateStarMutation, useGetStarStateQuery } from \"../../../service\";\n\nimport UseTemplateModal from \"./UseTemplateModal\";\n\nimport { TFunctionTemplate } from \"@/apis/typing\";\n\nconst UseTemplate = ({ template }: { template: TFunctionTemplate }) => {\n  const { star, _id: templateId, dependencies } = template;\n\n  const { t } = useTranslation();\n  const [starState, setStarState] = useState(false);\n  const [starNum, setStarNum] = useState(star);\n  const starMutation = useFunctionTemplateStarMutation();\n\n  useGetStarStateQuery(\n    { id: templateId },\n    {\n      onSuccess: (data: any) => {\n        setStarState(data.data === \"stared\");\n      },\n    },\n  );\n\n  return (\n    <Box className=\"flex justify-end pb-8\">\n      <button\n        className={clsx(\n          \"mr-4 flex h-9 cursor-pointer items-center rounded-3xl border px-3 text-xl\",\n          starState ? \"border-rose-500 text-rose-500\" : \"text-gray-400\",\n        )}\n        onClick={async () => {\n          const res = await starMutation.mutateAsync({ templateId: templateId || \"\" });\n          if (!res.error) {\n            if (starState) {\n              setStarState(false);\n              setStarNum(starNum - 1);\n            } else if (starNum >= 0) {\n              setStarState(true);\n              setStarNum(starNum + 1);\n            }\n          }\n        }}\n      >\n        {starState ? <FilledHeartIcon /> : <HeartIcon />}\n        <span className=\"pl-1\">{starNum}</span>\n      </button>\n      <UseTemplateModal templateId={templateId || \"\"} packageList={dependencies}>\n        <Button height={9}>{t(\"Template.useTemplate\")}</Button>\n      </UseTemplateModal>\n    </Box>\n  );\n};\n\nexport default UseTemplate;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/Mods/TemplateInfo/index.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\nimport { Avatar, AvatarGroup, Box, Tooltip, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { GithubIcon, PhoneIcon, WechatIcon } from \"@/components/CommonIcon\";\nimport { TimeIcon } from \"@/components/CommonIcon\";\nimport FileTypeIcon from \"@/components/FileTypeIcon\";\nimport { formatDate } from \"@/utils/format\";\nimport { getAvatarUrl } from \"@/utils/getAvatarUrl\";\n\nimport UseTemplate from \"./UseTemplate\";\n\nimport { TFunctionTemplate } from \"@/apis/typing\";\n\nconst TemplateInfo = (props: { functionTemplate: TFunctionTemplate; usedBy: any }) => {\n  const { functionTemplate, usedBy } = props;\n  const { items: functionList, environments, dependencies: packageList } = functionTemplate;\n\n  const { t } = useTranslation();\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n\n  return (\n    <div>\n      <UseTemplate template={functionTemplate} />\n      {functionTemplate.user?.username && (\n        <Box className=\"border-b-[1px]\">\n          <span className=\"text-xl font-semibold\">{t(\"Template.DeveloperInfo\")}</span>\n          <Box className=\"my-5 flex max-h-32 overflow-hidden\">\n            <Avatar\n              width={12}\n              height={12}\n              border={\"2px solid #DEE0E2\"}\n              src={getAvatarUrl(functionTemplate?.uid)}\n              name={functionTemplate.user?.username}\n              backgroundColor={\"primary.500\"}\n            />\n            <div className=\"ml-3 flex flex-col\">\n              <span className=\"w-40 truncate text-lg font-semibold\">\n                {functionTemplate.user?.username}\n              </span>\n              <Tooltip label={t(\"Developing\")}>\n                <span className=\"space-x-1 text-grayModern-400\">\n                  <WechatIcon />\n                  <GithubIcon />\n                  <PhoneIcon />\n                </span>\n              </Tooltip>\n            </div>\n          </Box>\n        </Box>\n      )}\n      <Box className=\"border-b-[1px] pt-5\">\n        <span className=\"text-xl font-semibold\">{t(\"Template.Function\")}</span>\n        <Box className=\"max-h-40 overflow-auto py-2\">\n          {(functionList || []).map((item) => {\n            return (\n              <div key={item.name} className=\"my-5 flex items-center font-medium\">\n                <FileTypeIcon type=\"ts\" fontSize={14} />\n                <span className=\"pl-2\">{item.name}</span>\n              </div>\n            );\n          })}\n        </Box>\n      </Box>\n      <Box className={clsx(\"border-b-[1px] pt-5\", packageList.length === 0 && \"pb-2\")}>\n        <span className=\"text-xl font-semibold\">{t(\"Template.Dependency\")}</span>\n        <Box className=\"max-h-32 overflow-auto\">\n          {packageList.map((item) => {\n            const [name, version] = item.split(\"@\");\n            return (\n              <div key={item} className=\"my-5 flex items-center justify-between font-medium\">\n                <div className=\"flex items-center\">\n                  <FileTypeIcon type=\"npm\" fontSize={18} />\n                  <span className=\"pl-2\">{name}</span>\n                </div>\n                <span>{version}</span>\n              </div>\n            );\n          })}\n        </Box>\n      </Box>\n      <Box className={clsx(\"border-b-[1px] pt-5\", environments.length === 0 && \"pb-2\")}>\n        <span className=\"text-xl font-bold\">{t(\"Template.EnvironmentVariables\")}</span>\n        <Box className=\"max-h-32 overflow-hidden\">\n          {environments.map((item) => {\n            return (\n              <Box key={item.name} className=\"my-5 flex justify-between\">\n                <div className=\"flex w-5/12 truncate font-medium\">{item.name}</div>\n                <div className=\"truncate pl-4\">{item.value}</div>\n              </Box>\n            );\n          })}\n        </Box>\n      </Box>\n      <Box className={clsx(\"border-b-[1px]\", usedBy?.list?.length === 0 && \"pb-2\")}>\n        <div className=\"flex items-center pt-5\">\n          <span className=\"text-xl font-bold\">{t(\"Template.UsedBy\")}</span>\n          <span\n            className={clsx(\n              \"ml-2 rounded-xl px-2 text-lg\",\n              darkMode ? \"bg-gray-700\" : \"bg-gray-100\",\n            )}\n          >\n            {usedBy?.total}\n          </span>\n        </div>\n        <AvatarGroup size={\"sm\"} max={10}>\n          {usedBy?.list.map((item: { uid: string }) => {\n            return (\n              <Box className=\"my-5 mr-2\" key={item.uid}>\n                <Avatar size=\"sm\" name={item.uid} src={getAvatarUrl(item.uid)} />\n              </Box>\n            );\n          })}\n        </AvatarGroup>\n      </Box>\n      <Box className=\"mt-5\">\n        <span className=\"text-xl font-bold\">{t(\"Template.updatedAt\")}</span>\n        <Box className=\"my-5 flex items-center\">\n          <TimeIcon className=\"mr-2 inline-block\" />\n          <span className=\"text-lg\">{formatDate(functionTemplate.updatedAt)}</span>\n        </Box>\n      </Box>\n    </div>\n  );\n};\n\nexport default TemplateInfo;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/Mods/TemplatePopover/TemplatePopover.tsx",
    "content": "import { ReactNode } from \"react\";\nimport { Popover, PopoverBody, PopoverContent, PopoverTrigger } from \"@chakra-ui/react\";\n\nimport TemplateFunctionInfo from \"../../FuncTemplateItem/TemplateFunctionInfo\";\n\nimport { TFunctionTemplate } from \"@/apis/typing\";\n\nconst TemplatePopOver = (props: { children?: ReactNode; template: TFunctionTemplate }) => {\n  const { children, template } = props;\n  return (\n    <Popover\n      trigger=\"hover\"\n      isLazy\n      preventOverflow\n      placement=\"auto-start\"\n      strategy=\"absolute\"\n      openDelay={500}\n    >\n      <PopoverTrigger>\n        <span>{children}</span>\n      </PopoverTrigger>\n      <PopoverContent\n        width={528}\n        height={314}\n        borderRadius={12}\n        boxShadow={\"0px 11px 20px 0px rgba(0, 0, 0, 0.25);\"}\n      >\n        <PopoverBody px=\"6\" py=\"4\">\n          <TemplateFunctionInfo template={template} popover />\n        </PopoverBody>\n      </PopoverContent>\n    </Popover>\n  );\n};\n\nexport default TemplatePopOver;\n"
  },
  {
    "path": "web/src/pages/functionTemplate/MyTemplateList/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AddIcon, Search2Icon } from \"@chakra-ui/icons\";\nimport {\n  Button,\n  Center,\n  Input,\n  InputGroup,\n  InputLeftElement,\n  Spinner,\n  Tab,\n  TabIndicator,\n  TabList,\n  Tabs,\n} from \"@chakra-ui/react\";\n\nimport EmptyBox from \"@/components/EmptyBox\";\nimport Pagination from \"@/components/Pagination\";\nimport getPageInfo from \"@/utils/getPageInfo\";\n\nimport TemplateCard from \"../Mods/TemplateCard\";\nimport { useGetMyFunctionTemplatesQuery } from \"../service\";\nimport useTemplateStore from \"../store\";\n\nimport { TFunctionTemplate } from \"@/apis/typing\";\n\nexport default function MyTemplateList() {\n  const { t } = useTranslation();\n  const [searchKey, setSearchKey] = useState(\"\");\n  const { myTemplateType, setMyTemplateType } = useTemplateStore();\n  const [queryData, setQueryData] = useState({\n    page: 1,\n    pageSize: 8,\n    keyword: \"\",\n    type: myTemplateType,\n    asc: 1,\n    sort: \"hot\",\n  });\n  const [templateList, setTemplateList] = useState<any>([]);\n  const navigate = useNavigate();\n\n  const TABS = [\n    { label: t(\"Template.StaredTemplate\"), value: \"stared\" },\n    { label: t(\"Template.Recent\"), value: \"recentUsed\" },\n    { label: t(\"Template.Created\"), value: \"default\" },\n  ];\n\n  const { isLoading } = useGetMyFunctionTemplatesQuery(\n    {\n      ...queryData,\n    },\n    {\n      onSuccess: (data: any) => {\n        setTemplateList(data.data);\n      },\n    },\n  );\n\n  useEffect(() => {\n    setQueryData({ ...queryData, type: myTemplateType });\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [myTemplateType]);\n\n  return (\n    <div className=\"flex flex-grow flex-col\">\n      <div className=\"flex justify-between pr-4\">\n        <Tabs\n          variant=\"unstyled\"\n          onChange={(e) => {\n            setMyTemplateType(TABS[e].value);\n          }}\n          index={TABS.findIndex((item) => item.value === myTemplateType)}\n        >\n          <TabList>\n            {TABS.map((item) => (\n              <Tab key={item.value} className=\"mr-8 !px-0\">\n                {item.label}\n              </Tab>\n            ))}\n          </TabList>\n          <TabIndicator mt=\"-1.5px\" height=\"2px\" bg=\"primary.600\" />\n        </Tabs>\n        <div className=\"flex w-[455px] items-center\">\n          <InputGroup>\n            <InputLeftElement children={<Search2Icon />} height=\"8\" />\n            <Input\n              className=\"!h-8 !rounded-full !border-grayModern-200\"\n              placeholder={String(t(\"Search\"))}\n              onChange={(e) => {\n                setSearchKey(e.target.value);\n              }}\n              value={searchKey || \"\"}\n              onKeyDown={(e) => {\n                if (e.key === \"Enter\") {\n                  setQueryData({ ...queryData, keyword: searchKey });\n                }\n              }}\n            />\n          </InputGroup>\n          <Button\n            onClick={() => {\n              navigate(\"/market/templates/create\");\n            }}\n            leftIcon={<AddIcon />}\n            className=\"ml-4 !h-9 !px-8\"\n          >\n            {t(\"Template.CreateTemplate\")}\n          </Button>\n        </div>\n      </div>\n      <div className=\"mt-4\">\n        {isLoading ? (\n          <Center className=\"min-h-[400px]\">\n            <span>\n              <Spinner />\n            </span>\n          </Center>\n        ) : templateList && templateList.list?.length > 0 ? (\n          <>\n            <div className=\"flex w-full flex-wrap\">\n              {templateList.list.map((item: TFunctionTemplate) => (\n                <TemplateCard\n                  className=\"mb-3 w-1/2\"\n                  templateCategory={queryData.type}\n                  template={item}\n                  key={item._id}\n                />\n              ))}\n            </div>\n            <div className=\"pb-6 pr-4 pt-2\">\n              <Pagination\n                values={getPageInfo(templateList)}\n                onChange={(values) => {\n                  setQueryData({ ...queryData, ...values });\n                }}\n                notShowSelect\n              />\n            </div>\n          </>\n        ) : (\n          <div className=\"w-full pt-20\">\n            <EmptyBox>\n              <p>{t(\"Template.EmptyTemplate\")}</p>\n            </EmptyBox>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/functionTemplate/index.tsx",
    "content": "import { useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport clsx from \"clsx\";\n\nimport AllTemplateList from \"./AllTemplateList\";\nimport FuncTemplateItem from \"./FuncTemplateItem\";\nimport MyTemplateList from \"./MyTemplateList\";\n\nimport useTemplateStore from \"./store\";\n\nexport default function FunctionTemplate(props: { isModal: boolean }) {\n  const { t } = useTranslation();\n  const { isModal } = props;\n  const sideBar_data = [\n    { text: t(\"Template.CommunityTemplate\"), value: \"all\" },\n    { text: t(\"Template.My\"), value: \"my\" },\n  ];\n  const { showTemplateItem, setShowTemplateItem, currentTab, setCurrentTab } = useTemplateStore();\n\n  const handleUrlChange = () => {\n    const param = window.location.href.split(\"/\").pop();\n    if (param!.length > 20 && !isModal) {\n      setShowTemplateItem(true);\n    } else if (param!.length < 20 && !isModal) {\n      setShowTemplateItem(false);\n    }\n  };\n\n  useEffect(() => {\n    handleUrlChange();\n    window.addEventListener(\"popstate\", handleUrlChange);\n    return () => {\n      window.removeEventListener(\"popstate\", handleUrlChange);\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  return (\n    <div className={clsx(\"mt-6 flex\", isModal ? \"\" : \"px-14\")}>\n      {!showTemplateItem ? (\n        <>\n          <div className=\"flex flex-col\">\n            <div className=\"mb-5 text-[24px] font-medium\">{t(\"HomePage.NavBar.funcTemplate\")}</div>\n            {sideBar_data.map((item) => {\n              return (\n                <div\n                  key={item.value}\n                  className={clsx(\n                    \"mb-2 flex h-8 w-44 cursor-pointer items-center rounded px-3\",\n                    currentTab === item.value && \"bg-primary-100 text-primary-600\",\n                  )}\n                  onClick={() => {\n                    setCurrentTab(item.value);\n                  }}\n                >\n                  {item.text}\n                </div>\n              );\n            })}\n          </div>\n          <div className=\"ml-9 w-full\">\n            {currentTab === \"all\" ? <AllTemplateList /> : <MyTemplateList />}\n          </div>\n        </>\n      ) : (\n        <FuncTemplateItem isModal={isModal} />\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/functionTemplate/service.ts",
    "content": "import { useMutation, useQuery } from \"@tanstack/react-query\";\n\nimport {\n  FunctionTemplateControllerCreateFunctionTemplate,\n  FunctionTemplateControllerDeleteFunctionTemplate,\n  FunctionTemplateControllerGetAllFunctionTemplate,\n  FunctionTemplateControllerGetFunctionTemplateUsedBy,\n  FunctionTemplateControllerGetMyFunctionTemplate,\n  FunctionTemplateControllerGetOneFunctionTemplate,\n  FunctionTemplateControllerGetRecommendFunctionTemplate,\n  FunctionTemplateControllerGetUserFunctionTemplateStarState,\n  FunctionTemplateControllerStarFunctionTemplate,\n  FunctionTemplateControllerUpdateFunctionTemplate,\n  FunctionTemplateControllerUseFunctionTemplate,\n} from \"@/apis/v1/function-templates\";\n\nexport const useGetFunctionTemplatesQuery = (\n  params: any,\n  config?: { onSuccess?: (data: any) => void; enabled?: boolean },\n) => {\n  return useQuery(\n    [\"useGetFunctionTemplatesQuery\", params],\n    () => {\n      return FunctionTemplateControllerGetAllFunctionTemplate(params);\n    },\n    {\n      enabled: config?.enabled,\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useGetOneFunctionTemplateQuery = (\n  params: any,\n  config?: { onSuccess?: (data: any) => void; enabled?: boolean },\n) => {\n  return useQuery(\n    [\"useFunctionTemplatesQuery\", params],\n    () => {\n      return FunctionTemplateControllerGetOneFunctionTemplate(params);\n    },\n    {\n      enabled: config?.enabled,\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useFunctionTemplateUseMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return FunctionTemplateControllerUseFunctionTemplate(values);\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          console.log(\"data\", data);\n        }\n      },\n    },\n  );\n};\n\nexport const useGetStarStateQuery = (params: any, config?: { onSuccess?: (data: any) => void }) => {\n  return useQuery(\n    [\"useGetStarStateQuery\"],\n    () => {\n      return FunctionTemplateControllerGetUserFunctionTemplateStarState(params);\n    },\n    {\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useFunctionTemplateStarMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return FunctionTemplateControllerStarFunctionTemplate(values);\n    },\n    {\n      // onSuccess(data) {\n      //   if (!data.error) {\n      //     console.log(\"data\", data);\n      //   }\n      // },\n    },\n  );\n};\n\nexport const useGetFunctionTemplateUsedByQuery = (\n  params: any,\n  config?: { onSuccess?: (data: any) => void; enabled?: boolean },\n) => {\n  return useQuery(\n    [\"useGetFunctionTemplateUsedByQuery\", params],\n    () => {\n      return FunctionTemplateControllerGetFunctionTemplateUsedBy(params);\n    },\n    {\n      enabled: config?.enabled,\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useCreateFunctionTemplateMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return FunctionTemplateControllerCreateFunctionTemplate(values);\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          console.log(\"data\", data);\n        }\n      },\n    },\n  );\n};\n\nexport const useGetMyFunctionTemplatesQuery = (\n  params: any,\n  config?: { onSuccess?: (data: any) => void; enabled?: boolean },\n) => {\n  return useQuery(\n    [\"useGetMyFunctionTemplatesQuery\", params],\n    () => {\n      return FunctionTemplateControllerGetMyFunctionTemplate(params);\n    },\n    {\n      enabled: config?.enabled,\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useGetRecommendFunctionTemplatesQuery = (\n  params: any,\n  config?: { onSuccess?: (data: any) => void; enabled?: boolean },\n) => {\n  return useQuery(\n    [\"useGetRecommendFunctionTemplatesQuery\", params],\n    () => {\n      return FunctionTemplateControllerGetRecommendFunctionTemplate(params);\n    },\n    {\n      enabled: config?.enabled,\n      onSuccess: config?.onSuccess,\n    },\n  );\n};\n\nexport const useUpdateFunctionTemplateMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return FunctionTemplateControllerUpdateFunctionTemplate(values);\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          console.log(\"data\", data);\n        }\n      },\n    },\n  );\n};\n\nexport const useDeleteFunctionTemplateMutation = () => {\n  return useMutation(\n    (values: any) => {\n      return FunctionTemplateControllerDeleteFunctionTemplate(values);\n    },\n    {\n      onSuccess(data) {\n        if (!data.error) {\n          console.log(\"data\", data);\n        }\n      },\n    },\n  );\n};\n"
  },
  {
    "path": "web/src/pages/functionTemplate/store.ts",
    "content": "import { create } from \"zustand\";\nimport { devtools } from \"zustand/middleware\";\nimport { immer } from \"zustand/middleware/immer\";\n\ntype State = {\n  showTemplateItem: boolean;\n  currentTab: string;\n  currentPage: number;\n  currentSearchKey: string;\n  myTemplateType: string;\n\n  setShowTemplateItem: (show: boolean) => void;\n  setCurrentTab: (tab: string) => void;\n  setCurrentPage: (page: number) => void;\n  setCurrentSearchKey: (key: string) => void;\n  setMyTemplateType: (type: string) => void;\n};\n\nconst useTemplateStore = create<State>()(\n  devtools(\n    immer((set, get) => ({\n      showTemplateItem: false,\n      currentTab: \"all\",\n      currentPage: 1,\n      currentSearchKey: \"\",\n      myTemplateType: \"stared\",\n\n      setShowTemplateItem: (show) => {\n        set((state) => {\n          state.showTemplateItem = show;\n        });\n      },\n\n      setCurrentTab: (tab) => {\n        set((state) => {\n          state.currentTab = tab;\n        });\n      },\n\n      setCurrentPage: (page) => {\n        set((state) => {\n          state.currentPage = page;\n        });\n      },\n\n      setCurrentSearchKey: (key) => {\n        set((state) => {\n          state.currentSearchKey = key;\n        });\n      },\n\n      setMyTemplateType: (type) => {\n        set((state) => {\n          state.myTemplateType = type;\n        });\n      },\n    })),\n  ),\n);\n\nexport default useTemplateStore;\n"
  },
  {
    "path": "web/src/pages/globalStore.ts",
    "content": "import { createStandaloneToast, ThemeTypings } from \"@chakra-ui/react\";\nimport * as Sentry from \"@sentry/react\";\nimport { create } from \"zustand\";\nimport { devtools } from \"zustand/middleware\";\nimport { immer } from \"zustand/middleware/immer\";\n\nimport { APP_PHASE_STATUS, APP_STATUS, CHAKRA_UI_COLOR_MODE_KEY } from \"@/constants\";\nimport { formatPort } from \"@/utils/format\";\n\nimport { TApplicationDetail, TRegion, TRuntime } from \"@/apis/typing\";\nimport { ApplicationControllerUpdateState } from \"@/apis/v1/applications\";\nimport { RegionControllerGetRegions } from \"@/apis/v1/regions\";\nimport { AppControllerGetRuntimes } from \"@/apis/v1/runtimes\";\nimport { UserControllerGetProfile } from \"@/apis/v1/user\";\n\nconst { toast } = createStandaloneToast();\n\ntype CloseFunc = () => void;\n\nexport type State = {\n  userInfo: Definitions.UserWithProfile | undefined;\n  loading: boolean;\n  runtimes?: TRuntime[];\n  regions?: TRegion[];\n  currentApp: TApplicationDetail | any;\n  setCurrentApp(app: TApplicationDetail | any): void;\n  init(appid?: string): void;\n  updateCurrentApp(app: TApplicationDetail, state: APP_STATUS, onlyRuntimeFlag?: boolean): void;\n  deleteCurrentApp(): void;\n  currentPageId: string | undefined;\n  setCurrentPage: (pageId: string) => void;\n  avatarUpdatedAt: string;\n  updateUserInfo(): void;\n  visitedViews: string[];\n  isLSPEffective: boolean;\n\n  showSuccess: (\n    text: string | React.ReactNode,\n    duration?: number | null,\n    isClosable?: boolean,\n  ) => CloseFunc;\n  showInfo: (\n    text: string | React.ReactNode,\n    duration?: number | null,\n    isClosable?: boolean,\n  ) => CloseFunc;\n  showWarning: (\n    text: string | React.ReactNode,\n    duration?: number | null,\n    isClosable?: boolean,\n  ) => CloseFunc;\n  showLoading: (\n    text: string | React.ReactNode,\n    duration?: number | null,\n    color?: ThemeTypings[\"colorSchemes\"],\n    isClosable?: boolean,\n  ) => CloseFunc;\n  showError: (\n    text: string | React.ReactNode,\n    duration?: number | null,\n    isClosable?: boolean,\n  ) => CloseFunc;\n};\n\nconst useGlobalStore = create<State>()(\n  devtools(\n    immer((set, get) => ({\n      userInfo: undefined,\n\n      currentApp: undefined,\n\n      loading: true,\n\n      currentPageId: undefined,\n\n      visitedViews: [],\n\n      avatarUpdatedAt: \"\",\n\n      setCurrentPage: (pageId) => {\n        set((state) => {\n          state.currentPageId = pageId;\n          if (!state.visitedViews.includes(pageId)) {\n            state.visitedViews.push(pageId);\n          }\n        });\n      },\n\n      init: async () => {\n        const userInfo = get().userInfo;\n        if (userInfo?._id) {\n          return;\n        }\n\n        const userInfoRes = await UserControllerGetProfile({});\n\n        const runtimesRes = await AppControllerGetRuntimes({});\n        const regionsRes = await RegionControllerGetRegions({});\n\n        Sentry.setUser({\n          username: userInfoRes.data.username,\n        });\n\n        set((state) => {\n          state.userInfo = userInfoRes.data;\n          state.loading = false;\n          state.runtimes = runtimesRes.data;\n          state.regions = regionsRes.data;\n        });\n      },\n\n      updateUserInfo: async () => {\n        const userInfoRes = await UserControllerGetProfile({});\n        set((state) => {\n          state.userInfo = userInfoRes.data;\n          state.avatarUpdatedAt = new Date().toISOString();\n        });\n      },\n\n      updateCurrentApp: async (\n        app: TApplicationDetail,\n        newState: APP_STATUS,\n        onlyRuntimeFlag?: boolean,\n      ) => {\n        if (!app) {\n          return;\n        }\n        const restartRes = await ApplicationControllerUpdateState({\n          state: newState,\n          onlyRuntimeFlag,\n        });\n        if (!restartRes.error) {\n          set((state) => {\n            if (state.currentApp) {\n              state.currentApp.phase =\n                newState === APP_STATUS.Running\n                  ? APP_PHASE_STATUS.Starting\n                  : newState === APP_STATUS.Restarting\n                  ? \"Restarting\"\n                  : APP_PHASE_STATUS.Stopping;\n            }\n          });\n        }\n      },\n\n      deleteCurrentApp: async () => {\n        const app = get().currentApp;\n        if (!app) {\n          return;\n        }\n      },\n\n      setCurrentApp: (app) => {\n        set((state) => {\n          state.currentApp = app;\n          state.isLSPEffective =\n            app?.bundle?.resource?.limitCPU! / 1000 >= 1 &&\n            app?.bundle?.resource.limitMemory / 1024 >= 2;\n\n          if (typeof state.currentApp === \"object\") {\n            const host = `${\n              state.currentApp?.domain?.customDomain || state.currentApp?.domain?.domain\n            }${formatPort(state.currentApp.port)}`;\n            state.currentApp.host = host;\n            state.currentApp.origin = `${state.currentApp?.tls ? \"https://\" : \"http://\"}${host}`;\n          }\n        });\n      },\n\n      isLSPEffective: false,\n\n      showSuccess: (text: string | React.ReactNode, duration = 1000, isClosable = false) => {\n        const id = toast({\n          position: \"top\",\n          title: text,\n          status: \"success\",\n          variant: localStorage.getItem(CHAKRA_UI_COLOR_MODE_KEY) ? \"subtle\" : \"solid\",\n          duration,\n          isClosable,\n          containerStyle: {\n            maxWidth: \"100%\",\n            minWidth: \"100px\",\n          },\n        });\n\n        return () => {\n          toast.close(id);\n        };\n      },\n\n      showError: (text: string | React.ReactNode, duration = 1500, isClosable = false) => {\n        const id = toast({\n          position: \"top\",\n          title: text,\n          status: \"error\",\n          variant: localStorage.getItem(CHAKRA_UI_COLOR_MODE_KEY) ? \"subtle\" : \"solid\",\n          duration,\n          isClosable,\n          containerStyle: {\n            maxWidth: \"100%\",\n            minWidth: \"100px\",\n          },\n        });\n\n        return () => {\n          toast.close(id);\n        };\n      },\n\n      showWarning: (text: string | React.ReactNode, duration = 3000, isClosable = false) => {\n        const id = toast({\n          position: \"top\",\n          title: text,\n          status: \"warning\",\n          variant: localStorage.getItem(CHAKRA_UI_COLOR_MODE_KEY) ? \"subtle\" : \"solid\",\n          duration,\n          isClosable,\n          containerStyle: {\n            maxWidth: \"100%\",\n            minWidth: \"100px\",\n          },\n        });\n\n        return () => {\n          toast.close(id);\n        };\n      },\n\n      showLoading: (text: string | React.ReactNode, duration = null, color, isClosable = false) => {\n        const id = toast({\n          position: \"top\",\n          title: text,\n          status: \"loading\",\n          variant: localStorage.getItem(CHAKRA_UI_COLOR_MODE_KEY) ? \"subtle\" : \"solid\",\n          duration,\n          colorScheme: color,\n          isClosable,\n          containerStyle: {\n            maxWidth: \"100%\",\n            minWidth: \"100px\",\n          },\n        });\n\n        return () => {\n          toast.close(id);\n        };\n      },\n\n      showInfo: (text: string | React.ReactNode, duration = 1000, isClosable = false) => {\n        const id = toast({\n          position: \"top\",\n          title: text,\n          variant: localStorage.getItem(CHAKRA_UI_COLOR_MODE_KEY) ? \"subtle\" : \"solid\",\n          duration: duration,\n          containerStyle: {\n            maxWidth: \"100%\",\n            minWidth: \"100px\",\n          },\n          isClosable: isClosable,\n        });\n\n        return () => {\n          toast.close(id);\n        };\n      },\n    })),\n  ),\n);\n\nexport default useGlobalStore;\n"
  },
  {
    "path": "web/src/pages/home/index.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { Center, Spinner } from \"@chakra-ui/react\";\nimport { useQuery } from \"@tanstack/react-query\";\n\nimport { APP_PHASE_STATUS, APP_STATUS } from \"@/constants\";\n\nimport Empty from \"./mods/Empty\";\nimport List from \"./mods/List\";\n\nimport { ApplicationControllerFindAll } from \"@/apis/v1/applications\";\n\nexport const APP_LIST_QUERY_KEY = [\"appListQuery\"];\n\nfunction HomePage() {\n  const [shouldRefetch, setShouldRefetch] = useState(true);\n\n  const { data: appListQuery, isLoading } = useQuery(\n    APP_LIST_QUERY_KEY,\n    () => {\n      return ApplicationControllerFindAll({});\n    },\n    {\n      staleTime: 2000,\n      refetchInterval: shouldRefetch ? 1000 : false,\n      onSuccess(data) {\n        setShouldRefetch(\n          data?.data?.filter(\n            (item: any) =>\n              !(\n                (item?.phase === APP_PHASE_STATUS.Started && item?.state === APP_STATUS.Running) ||\n                (item?.phase === APP_PHASE_STATUS.Stopped && item?.state === APP_STATUS.Stopped)\n              ),\n          ).length > 0,\n        );\n      },\n    },\n  );\n\n  useEffect(() => {\n    setTimeout(() => {\n      setShouldRefetch(true);\n    }, 500);\n  }, [appListQuery]);\n\n  return isLoading ? (\n    <Center style={{ minHeight: 500 }}>\n      <Spinner />\n    </Center>\n  ) : appListQuery?.data.length === 0 ? (\n    <Empty />\n  ) : (\n    <div className=\"mx-auto mt-10 flex w-[1060px] flex-col\">\n      <List appList={appListQuery?.data} />\n    </div>\n  );\n}\n\nexport default HomePage;\n"
  },
  {
    "path": "web/src/pages/home/mods/CreateAppModal/AutoscalingControl/index.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\nimport {\n  Collapse,\n  Input,\n  RangeSlider,\n  RangeSliderFilledTrack,\n  RangeSliderMark,\n  RangeSliderThumb,\n  RangeSliderTrack,\n  Select,\n  Switch,\n  Tooltip,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { AutoScalingIcon } from \"@/components/CommonIcon\";\n\nexport type TypeAutoscaling = {\n  enable: boolean;\n  minReplicas: number;\n  maxReplicas: number;\n  targetCPUUtilizationPercentage: number | null;\n  targetMemoryUtilizationPercentage: number | null;\n};\n\nexport default function AutoScalingControl(props: {\n  autoscaling: TypeAutoscaling;\n  setAutoscaling: any;\n  className?: string;\n}) {\n  const { autoscaling, setAutoscaling, className } = props;\n  const darkMode = useColorMode().colorMode === \"dark\";\n  const { t } = useTranslation();\n\n  return (\n    <div className={clsx(\"w-full rounded-md border\", className)}>\n      <div className={clsx(\"flex justify-between px-8 py-3.5\", darkMode ? \"\" : \"bg-[#F6F8F9]\")}>\n        <div className=\"flex items-center\">\n          <AutoScalingIcon mr={2} boxSize={\"14px\"} color={darkMode ? \"\" : \"grayModern.600\"} />\n          <span className=\"text-lg font-semibold\">{t(\"application.autoscaling\")}</span>\n        </div>\n        <Switch\n          id=\"email-alerts\"\n          defaultChecked={autoscaling.enable}\n          colorScheme=\"primary\"\n          onChange={() => {\n            if (autoscaling.enable) {\n              setAutoscaling({\n                ...autoscaling,\n                enable: !autoscaling.enable,\n              });\n            } else {\n              setAutoscaling({\n                ...autoscaling,\n                enable: !autoscaling.enable,\n                targetCPUUtilizationPercentage: 50,\n                targetMemoryUtilizationPercentage: null,\n              });\n            }\n          }}\n        />\n      </div>\n      <Collapse in={autoscaling.enable} animateOpacity>\n        <div className=\"flex px-8 pt-8\">\n          <span className={clsx(\"w-2/12\", darkMode ? \"\" : \"text-grayModern-600\")}>\n            {t(\"application.Number of Instances\")}\n          </span>\n          <RangeSlider\n            defaultValue={[autoscaling.minReplicas, autoscaling.maxReplicas]}\n            min={1}\n            max={20}\n            colorScheme=\"primary\"\n            onChange={(v) => {\n              setAutoscaling({\n                ...autoscaling,\n                minReplicas: v[0],\n                maxReplicas: v[1],\n              });\n            }}\n          >\n            {[1, 10, 20].map((value) => (\n              <RangeSliderMark\n                value={value}\n                className={clsx(\"mt-2 whitespace-nowrap\", darkMode ? \"\" : \"text-grayModern-600\")}\n                ml={\"-1.5\"}\n                key={value}\n              >\n                {value}\n              </RangeSliderMark>\n            ))}\n            <RangeSliderTrack>\n              <RangeSliderFilledTrack bg={\"primary.200\"} />\n            </RangeSliderTrack>\n            <Tooltip\n              hasArrow\n              label={String(autoscaling.minReplicas)}\n              placement=\"top\"\n              bg={\"primary.500\"}\n            >\n              <RangeSliderThumb bg={\"primary.500\"} index={0} />\n            </Tooltip>\n            <Tooltip\n              hasArrow\n              label={String(autoscaling.maxReplicas)}\n              placement=\"top\"\n              bg={\"primary.500\"}\n            >\n              <RangeSliderThumb bg={\"primary.500\"} index={1} />\n            </Tooltip>\n          </RangeSlider>\n        </div>\n        <div className=\"flex items-center pb-8 pt-6\">\n          <div className=\"ml-8 mr-4 flex w-24\">\n            <Select\n              onChange={(e) => {\n                if (e.target.value === t(\"Storage Threshold\")) {\n                  setAutoscaling({\n                    ...autoscaling,\n                    targetCPUUtilizationPercentage: null,\n                    targetMemoryUtilizationPercentage: 50,\n                  });\n                } else {\n                  setAutoscaling({\n                    ...autoscaling,\n                    targetCPUUtilizationPercentage: 50,\n                    targetMemoryUtilizationPercentage: null,\n                  });\n                }\n              }}\n              defaultValue={\n                autoscaling.targetCPUUtilizationPercentage\n                  ? String(t(\"application.CPU Threshold\"))\n                  : String(t(\"Storage Threshold\"))\n              }\n              className={clsx(\n                \"!h-8 !border-none !px-2 !text-[12px]\",\n                darkMode ? \"\" : \"!bg-[#F4F6F8]\",\n              )}\n            >\n              <option className=\"\">{t(\"application.CPU Threshold\")}</option>\n              <option>{t(\"Storage Threshold\")}</option>\n            </Select>\n          </div>\n          <Input\n            value={\n              autoscaling.targetCPUUtilizationPercentage\n                ? (autoscaling.targetCPUUtilizationPercentage as number)\n                : (autoscaling.targetMemoryUtilizationPercentage as number)\n            }\n            className=\"!h-8 !w-20\"\n            onChange={(e) => {\n              if (autoscaling.targetCPUUtilizationPercentage) {\n                setAutoscaling({\n                  ...autoscaling,\n                  targetCPUUtilizationPercentage: Number(e.target.value),\n                  targetMemoryUtilizationPercentage: null,\n                });\n              } else {\n                setAutoscaling({\n                  ...autoscaling,\n                  targetCPUUtilizationPercentage: null,\n                  targetMemoryUtilizationPercentage: Number(e.target.value),\n                });\n              }\n            }}\n          />\n          <span className=\"pl-2\">%</span>\n        </div>\n      </Collapse>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/home/mods/CreateAppModal/BundleControl/index.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\nimport {\n  Slider,\n  SliderFilledTrack,\n  SliderMark,\n  SliderThumb,\n  SliderTrack,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport { find } from \"lodash\";\nimport _ from \"lodash\";\n\nimport { RecommendIcon, TextIcon } from \"@/components/CommonIcon\";\nimport { COLOR_MODE } from \"@/constants\";\n\nimport BundleItem from \"../BundleItem\";\nimport { TypeBundle } from \"..\";\n\nimport { TBundle } from \"@/apis/typing\";\n\nexport default function BundleControl(props: {\n  bundle: TypeBundle;\n  type: \"create\" | \"change\";\n  sortedBundles: TBundle[];\n  onBundleItemChange: (k: string, v?: number) => any;\n  resourceOptions: any;\n}) {\n  const { bundle, onBundleItemChange, resourceOptions, sortedBundles, type } = props;\n  const { t } = useTranslation();\n  const darkMode = useColorMode().colorMode === COLOR_MODE.dark;\n\n  const activeBundle = find(sortedBundles, {\n    spec: {\n      cpu: {\n        value: bundle.cpu,\n      },\n      memory: {\n        value: bundle.memory,\n      },\n      storageCapacity: {\n        value: bundle.storageCapacity,\n      },\n    },\n  });\n\n  const buildSlider = (props: {\n    type: string;\n    specs: { value: number }[];\n    value: number;\n    onChange: (value: number) => void;\n  }) => {\n    const { type, specs, value, onChange } = props;\n    const idx = specs.findIndex((spec) => spec.value === value);\n\n    return (\n      <div className=\"ml-8 mt-8 flex\" key={type}>\n        <span className={clsx(\"w-2/12\", darkMode ? \"\" : \"text-grayModern-600\")}>\n          {t(`SpecItem.${type}`)}\n        </span>\n        <Slider\n          id=\"slider\"\n          className=\"mr-12\"\n          value={idx}\n          min={0}\n          max={specs.length - 1}\n          colorScheme=\"primary\"\n          onChange={(v) => {\n            onChange(specs[v].value);\n          }}\n        >\n          {specs.map((spec: any, i: number) => (\n            <SliderMark\n              key={spec.value}\n              value={i}\n              className={clsx(\"mt-2 whitespace-nowrap\", darkMode ? \"\" : \"text-grayModern-600\")}\n              ml={\"-3\"}\n            >\n              {spec.label}\n            </SliderMark>\n          ))}\n\n          <SliderTrack>\n            <SliderFilledTrack bg={\"primary.200\"} />\n          </SliderTrack>\n          {idx >= 0 ? (\n            <SliderThumb bg={\"primary.500\"} />\n          ) : (\n            <SliderThumb\n              onClick={() => {\n                onChange(specs[0].value);\n              }}\n              style={{ opacity: 0 }}\n            />\n          )}\n        </Slider>\n      </div>\n    );\n  };\n\n  return (\n    <div className=\"w-full flex-1 rounded-md border\">\n      <div\n        className={clsx(\n          \"flex items-center justify-between px-8 py-3.5\",\n          darkMode ? \"\" : \"bg-[#F6F8F9]\",\n        )}\n      >\n        <div className=\"flex items-center\">\n          <TextIcon boxSize={4} mr={2} color={darkMode ? \"\" : \"grayModern.600\"} />\n          <span className=\"text-lg font-semibold\">{t(\"application.ApplicationSecification\")}</span>\n        </div>\n        <div className=\"flex items-center\">\n          <RecommendIcon boxSize={\"14px\"} mr={2} color={\"primary.600\"} />\n          <span className=\"\">{t(\"application.RecommendedSpecifications\")}</span>\n          {(sortedBundles || []).map((item: TBundle) => {\n            return (\n              <BundleItem\n                onChange={() => {\n                  onBundleItemChange(\"cpu\", item.spec.cpu.value);\n                  onBundleItemChange(\"memory\", item.spec.memory.value);\n                  onBundleItemChange(\"storageCapacity\", item.spec.storageCapacity.value);\n                  if (bundle.dedicatedDatabase) {\n                    onBundleItemChange(\n                      \"dedicatedDatabase.cpu\",\n                      item.spec.dedicatedDatabaseCPU.value,\n                    );\n                    onBundleItemChange(\n                      \"dedicatedDatabase.memory\",\n                      item.spec.dedicatedDatabaseMemory.value,\n                    );\n                    if (type !== \"change\") {\n                      onBundleItemChange(\n                        \"dedicatedDatabase.capacity\",\n                        item.spec.dedicatedDatabaseCapacity.value,\n                      );\n                      onBundleItemChange(\n                        \"dedicatedDatabase.replicas\",\n                        item.spec.dedicatedDatabaseReplicas.value,\n                      );\n                    }\n                  } else {\n                    onBundleItemChange(\"databaseCapacity\", item.spec.databaseCapacity.value);\n                  }\n                }}\n                bundle={item}\n                isActive={activeBundle?._id === item._id}\n                key={item._id}\n              />\n            );\n          })}\n        </div>\n      </div>\n      <div className=\"pb-8\">\n        {[\"cpu\", \"memory\", \"storageCapacity\"].map((type) =>\n          buildSlider({\n            type,\n            value: _.get(bundle, type),\n            specs: find(resourceOptions, { type })?.specs || [],\n            onChange: (value) => {\n              onBundleItemChange(type, value);\n            },\n          }),\n        )}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/home/mods/CreateAppModal/BundleItem/index.tsx",
    "content": "// import { useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\n// import { COLOR_MODE } from \"@/constants\";\nimport { TBundle } from \"@/apis/typing\";\n\nexport default function BundleItem(props: {\n  onChange: (...event: any[]) => void;\n  bundle: TBundle | any;\n  isActive: boolean;\n}) {\n  const { bundle, isActive, onChange } = props;\n  // const { colorMode } = useColorMode();\n  // const darkMode = colorMode === COLOR_MODE.dark;\n\n  return (\n    <div\n      onClick={() => onChange(bundle._id)}\n      key={bundle._id}\n      className={clsx(\"cursor-pointer rounded-md pl-4\", {\n        \"text-[#219BF4]\": isActive,\n      })}\n    >\n      <div>\n        <p className=\"text-lg\">{bundle.displayName}</p>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/home/mods/CreateAppModal/DatabaseBundleControl/index.tsx",
    "content": "import { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  HStack,\n  Slider,\n  SliderFilledTrack,\n  SliderMark,\n  SliderThumb,\n  SliderTrack,\n  useColorMode,\n} from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\nimport _, { find } from \"lodash\";\n\nimport { TextIcon } from \"@/components/CommonIcon\";\nimport { COLOR_MODE } from \"@/constants\";\n\nimport { TypeBundle } from \"..\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nexport default function DatabaseBundleControl(props: {\n  bundle: TypeBundle;\n  originCapacity?: number;\n  originReplicas?: number;\n  resourceOptions: any;\n  type: \"create\" | \"change\";\n  defaultDatabaseCapacity?: number;\n  defaultDedicatedDatabaseBundle?: any;\n  onBundleItemChange: (k: string, v?: number) => any;\n}) {\n  const {\n    bundle,\n    type,\n    onBundleItemChange,\n    resourceOptions,\n    defaultDatabaseCapacity,\n    defaultDedicatedDatabaseBundle,\n    originCapacity,\n    originReplicas,\n  } = props;\n  const { t } = useTranslation();\n  const darkMode = useColorMode().colorMode === COLOR_MODE.dark;\n  const { regions } = useGlobalStore();\n  const currentRegion = useMemo(() => regions?.[0], [regions]);\n\n  const [databaseType, setDatabaseType] = useState<\"dedicated\" | \"shared\">(\n    (type === \"change\" && bundle.dedicatedDatabase) ||\n      (type === \"create\" && currentRegion?.dedicatedDatabase)\n      ? \"dedicated\"\n      : \"shared\",\n  );\n\n  const disabledChangeType = useMemo(\n    () => type === \"change\" || !currentRegion?.dedicatedDatabase,\n    [type, currentRegion],\n  );\n\n  useEffect(() => {\n    if (type === \"create\" && currentRegion) {\n      setDatabaseType(currentRegion?.dedicatedDatabase ? \"dedicated\" : \"shared\");\n    }\n  }, [currentRegion, type]);\n\n  const { showInfo } = useGlobalStore(({ showInfo }) => ({ showInfo }));\n\n  useEffect(() => {\n    if (databaseType === \"dedicated\") {\n      showInfo(t(\"application.DatabaseCreateTip\"), 5000);\n    }\n  }, [databaseType]);\n\n  useEffect(() => {\n    if (databaseType === \"dedicated\") {\n      onBundleItemChange(\"databaseCapacity\", undefined);\n      onBundleItemChange(\"dedicatedDatabase\", defaultDedicatedDatabaseBundle);\n    } else {\n      onBundleItemChange(\"dedicatedDatabase\", undefined);\n      onBundleItemChange(\"databaseCapacity\", defaultDatabaseCapacity);\n    }\n  }, [databaseType]);\n\n  const buildSlider = (props: {\n    type: string;\n    specs: { value: number }[];\n    value?: number;\n    min?: number;\n    disable?: boolean;\n    onChange: (value: number) => void;\n  }) => {\n    const { type, specs, value, onChange, min, disable } = props;\n    const idx = specs.findIndex((spec) => spec.value === value);\n\n    return (\n      <div className=\"ml-8 mt-8 flex\" key={type}>\n        <span className={clsx(\"w-2/12\", darkMode ? \"\" : \"text-grayModern-600\")}>\n          {t(`SpecItem.${type}`)}\n        </span>\n        <Slider\n          id=\"slider\"\n          className=\"mr-12\"\n          value={idx}\n          min={0}\n          max={specs.length - 1}\n          colorScheme=\"primary\"\n          onChange={(v) => {\n            if (disable) return;\n            if (typeof min !== \"undefined\" && min > specs[v].value) return;\n            onChange(specs[v].value);\n          }}\n        >\n          {specs.map((spec: any, i: number) => (\n            <SliderMark\n              key={spec.value}\n              value={i}\n              className={clsx(\"mt-2 whitespace-nowrap\", darkMode ? \"\" : \"text-grayModern-600\")}\n              ml={\"-3\"}\n            >\n              {spec.label}\n            </SliderMark>\n          ))}\n\n          <SliderTrack>\n            <SliderFilledTrack bg={\"primary.200\"} />\n          </SliderTrack>\n          {idx >= 0 ? (\n            <SliderThumb bg={\"primary.500\"} />\n          ) : (\n            <SliderThumb\n              onClick={() => {\n                onChange(specs[0].value);\n              }}\n              style={{ opacity: 0 }}\n            />\n          )}\n        </Slider>\n      </div>\n    );\n  };\n\n  return (\n    <div className=\"w-full flex-1 rounded-md border\">\n      <div\n        className={clsx(\n          \"flex items-center justify-between px-8 py-3.5\",\n          darkMode ? \"\" : \"bg-[#F6F8F9]\",\n        )}\n      >\n        <div className=\"flex items-center\">\n          <TextIcon boxSize={4} mr={2} color={darkMode ? \"\" : \"grayModern.600\"} />\n          <span className=\"text-lg font-semibold\">{t(\"application.DatabaseSpecification\")}</span>\n        </div>\n        <HStack>\n          {([\"dedicated\", \"shared\"] as const).map((option) => (\n            <div\n              className={clsx(\"rounded-md pl-4\", {\n                \"text-[#219BF4]\": databaseType === option,\n                \"cursor-pointer\": !disabledChangeType,\n                \"cursor-not-allowed\": disabledChangeType,\n              })}\n              key={option}\n              onClick={() => {\n                if (disabledChangeType) return;\n                setDatabaseType(option);\n              }}\n            >\n              <div>\n                <p className=\"text-lg\">\n                  {option === \"dedicated\" && t(\"application.DedicatedType\")}\n                  {option === \"shared\" && t(\"application.SharedType\")}\n                </p>\n              </div>\n            </div>\n          ))}\n        </HStack>\n      </div>\n      <div className=\"pb-8\">\n        {databaseType === \"dedicated\" && (\n          <>\n            {buildSlider({\n              type: \"cpu\",\n              value: _.get(bundle, \"dedicatedDatabase.cpu\") as unknown as number,\n              specs: find(resourceOptions, { type: \"dedicatedDatabaseCPU\" })?.specs || [],\n              onChange: (value) => {\n                onBundleItemChange(`dedicatedDatabase.cpu`, value);\n              },\n            })}\n            {buildSlider({\n              type: \"memory\",\n              value: _.get(bundle, \"dedicatedDatabase.memory\") as unknown as number,\n              specs: find(resourceOptions, { type: \"dedicatedDatabaseMemory\" })?.specs || [],\n              onChange: (value) => {\n                onBundleItemChange(`dedicatedDatabase.memory`, value);\n              },\n            })}\n            {buildSlider({\n              type: \"capacity\",\n              min: originCapacity,\n              value: _.get(bundle, \"dedicatedDatabase.capacity\") as unknown as number,\n              specs: find(resourceOptions, { type: \"dedicatedDatabaseCapacity\" })?.specs || [],\n              onChange: (value) => {\n                onBundleItemChange(`dedicatedDatabase.capacity`, value);\n              },\n            })}\n            {buildSlider({\n              type: \"replicas\",\n              min: originReplicas,\n              // disable: disabledChangeType,\n              value: _.get(bundle, \"dedicatedDatabase.replicas\") as unknown as number,\n              specs: find(resourceOptions, { type: \"dedicatedDatabaseReplicas\" })?.specs || [],\n              onChange: (value) => {\n                onBundleItemChange(`dedicatedDatabase.replicas`, value);\n              },\n            })}\n          </>\n        )}\n        {databaseType === \"shared\" &&\n          buildSlider({\n            type: \"databaseCapacity\",\n            value: _.get(bundle, \"databaseCapacity\"),\n            specs: find(resourceOptions, { type: \"databaseCapacity\" })?.specs || [],\n            onChange: (value) => {\n              onBundleItemChange(\"databaseCapacity\", value);\n            },\n          })}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/home/mods/CreateAppModal/RuntimeItem/index.tsx",
    "content": "import React from \"react\";\nimport { CheckIcon } from \"@chakra-ui/icons\";\n\nimport { TBundle } from \"@/apis/typing\";\n\nexport default function RuntimeItem(props: { bundle?: TBundle }) {\n  return (\n    <div className=\"flex items-center rounded border border-primary-300 bg-lafWhite-400 p-2 font-semibold text-primary-500\">\n      <CheckIcon className=\"mr-2\" />\n      <img src=\"/node.svg\" alt=\"\" className=\"mr-1\" /> - latest\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/home/mods/CreateAppModal/index.tsx",
    "content": "import { cloneElement, ReactElement, useEffect, useMemo, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport {\n  Button,\n  FormControl,\n  FormErrorMessage,\n  HStack,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  Spinner,\n  useDisclosure,\n  VStack,\n} from \"@chakra-ui/react\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { t } from \"i18next\";\nimport { debounce } from \"lodash\";\nimport _ from \"lodash\";\n\nimport ChargeButton from \"@/components/ChargeButton\";\nimport { APP_PHASE_STATUS, APP_STATUS } from \"@/constants/index\";\nimport { formatOriginalPrice, formatPrice } from \"@/utils/format\";\n\nimport { APP_LIST_QUERY_KEY } from \"../..\";\nimport { queryKeys, useAccountQuery } from \"../../service\";\n\nimport AutoscalingControl, { TypeAutoscaling } from \"./AutoscalingControl\";\nimport BundleControl from \"./BundleControl\";\nimport DatabaseBundleControl from \"./DatabaseBundleControl\";\n\nimport { TApplicationItem, TBundle } from \"@/apis/typing\";\nimport {\n  ApplicationControllerCreate,\n  ApplicationControllerUpdateBundle,\n  ApplicationControllerUpdateName,\n} from \"@/apis/v1/applications\";\nimport {\n  ResourceControllerCalculatePrice,\n  ResourceControllerGetResourceOptions,\n} from \"@/apis/v1/resources\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\ntype FormData = {\n  name: string;\n  state: APP_STATUS | string;\n  regionId: string;\n  runtimeId: string;\n  bundleId: string;\n};\n\nexport type TypeBundle = {\n  cpu: number;\n  memory: number;\n  databaseCapacity?: number;\n  storageCapacity: number;\n  dedicatedDatabase?: {\n    cpu: number;\n    memory: number;\n    capacity: number;\n    replicas: number;\n  };\n};\n\nconst CreateAppModal = (props: {\n  type: \"create\" | \"edit\" | \"change\";\n  application?: TApplicationItem;\n  children: ReactElement;\n  isCurrentApp?: boolean;\n}) => {\n  const { application, type, isCurrentApp } = props;\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const queryClient = useQueryClient();\n  const { runtimes = [], regions = [], showSuccess, currentApp, setCurrentApp } = useGlobalStore();\n  const { data: accountRes } = useAccountQuery();\n\n  const title = useMemo(\n    () => (type === \"edit\" ? t(\"Edit\") : type === \"change\" ? t(\"Change\") : t(\"CreateApp\")),\n    [type],\n  );\n\n  const currentRegion = useMemo(\n    () => regions.find((item: any) => item._id === application?.regionId) || regions[0],\n    [regions, application],\n  );\n\n  const sortedBundles = useMemo(\n    () =>\n      [...currentRegion.bundles].sort(\n        (a: TBundle, b: TBundle) =>\n          new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(),\n      ),\n    [currentRegion.bundles],\n  );\n\n  let defaultValues = {\n    name: application?.name || \"\",\n    state: application?.state || APP_STATUS.Running,\n    regionId: application?.regionId || regions[0]._id,\n    runtimeId: runtimes[0]._id,\n    bundleId: sortedBundles[0]._id,\n  };\n\n  const {\n    register,\n    handleSubmit,\n    setFocus,\n    reset,\n    formState: { errors },\n    getValues,\n  } = useForm<FormData>({\n    defaultValues,\n  });\n\n  const defaultBundle: TypeBundle = {\n    cpu: application?.bundle.resource.limitCPU || sortedBundles[0].spec.cpu.value,\n    memory: application?.bundle.resource.limitMemory || sortedBundles[0].spec.memory.value,\n    databaseCapacity:\n      application?.bundle.resource.databaseCapacity || sortedBundles[0].spec.databaseCapacity.value,\n    storageCapacity:\n      application?.bundle.resource.storageCapacity || sortedBundles[0].spec.storageCapacity.value,\n    dedicatedDatabase: !application?.bundle.resource.databaseCapacity\n      ? {\n          cpu:\n            application?.bundle.resource.dedicatedDatabase?.limitCPU ||\n            sortedBundles[0].spec.dedicatedDatabaseCPU.value,\n          memory:\n            application?.bundle.resource.dedicatedDatabase?.limitMemory ||\n            sortedBundles[0].spec.dedicatedDatabaseMemory.value,\n          capacity:\n            application?.bundle.resource.dedicatedDatabase?.capacity ||\n            sortedBundles[0].spec.dedicatedDatabaseCapacity.value,\n          replicas:\n            application?.bundle.resource.dedicatedDatabase?.replicas ||\n            sortedBundles[0].spec.dedicatedDatabaseReplicas.value,\n        }\n      : undefined,\n  };\n\n  const defaultAutoscaling: TypeAutoscaling = {\n    enable: application?.bundle.autoscaling?.enable || false,\n    minReplicas: application?.bundle.autoscaling?.minReplicas || 1,\n    maxReplicas: application?.bundle.autoscaling?.maxReplicas || 5,\n    targetCPUUtilizationPercentage:\n      application?.bundle.autoscaling?.targetCPUUtilizationPercentage || null,\n    targetMemoryUtilizationPercentage:\n      application?.bundle.autoscaling?.targetMemoryUtilizationPercentage || null,\n  };\n\n  const [bundle, setBundle] = useState<TypeBundle>(defaultBundle);\n  const [autoscaling, setAutoscaling] = useState<TypeAutoscaling>(defaultAutoscaling);\n  const [totalPrice, setTotalPrice] = useState(0);\n  const [calculating, setCalculating] = useState(false);\n\n  const billingQuery = useQuery(\n    [queryKeys.useBillingPriceQuery],\n    async () => {\n      return ResourceControllerCalculatePrice({\n        ...getValues(),\n        ...bundle,\n      });\n    },\n    {\n      enabled: false,\n      staleTime: 1000,\n      onSuccess(res) {\n        setTotalPrice(res?.data?.total || 0);\n        setCalculating(false);\n      },\n    },\n  );\n\n  const { data: billingResourceOptionsRes, isLoading } = useQuery(\n    queryKeys.useBillingResourceOptionsQuery,\n    async () => {\n      return ResourceControllerGetResourceOptions({});\n    },\n    {\n      enabled: isOpen,\n    },\n  );\n\n  useEffect(() => {\n    const debouncedBillingQuery = debounce(() => {\n      billingQuery.refetch();\n    }, 500);\n\n    if (isOpen) {\n      debouncedBillingQuery();\n    }\n\n    return () => {\n      debouncedBillingQuery.cancel();\n    };\n  }, [isOpen, bundle, autoscaling]);\n\n  const updateAppMutation = useMutation((params: any) => ApplicationControllerUpdateName(params));\n  const createAppMutation = useMutation((params: any) => ApplicationControllerCreate(params));\n  const changeBundleMutation = useMutation((params: any) =>\n    ApplicationControllerUpdateBundle(params),\n  );\n\n  const onSubmit = async (data: FormData) => {\n    let res: any = {};\n\n    switch (type) {\n      case \"edit\":\n        res = await updateAppMutation.mutateAsync({\n          name: data.name,\n          appid: application?.appid,\n        });\n        break;\n\n      case \"change\":\n        res = await changeBundleMutation.mutateAsync({\n          ...bundle,\n          appid: application?.appid,\n          autoscaling,\n        });\n\n        if (isCurrentApp) {\n          const newResource = {\n            ...currentApp.bundle.resource,\n            limitCPU: bundle.cpu,\n            limitMemory: bundle.memory,\n            databaseCapacity: bundle.databaseCapacity,\n            storageCapacity: bundle.storageCapacity,\n            dedicatedDatabase: {\n              limitCPU: bundle.dedicatedDatabase?.cpu || 0,\n              limitMemory: bundle.dedicatedDatabase?.memory || 0,\n              capacity: bundle.dedicatedDatabase?.capacity || 0,\n              replicas: bundle.dedicatedDatabase?.replicas || 0,\n            },\n          };\n\n          const newBundle = {\n            ...currentApp.bundle,\n            resource: newResource,\n            autoscaling: autoscaling,\n          };\n\n          // Configuration changes will automatically restart the application. Only running applications can change configuration.\n          setCurrentApp({\n            ...currentApp,\n            bundle: newBundle,\n            state: APP_STATUS.Restarting,\n            phase: APP_PHASE_STATUS.Started,\n          });\n        }\n\n        break;\n\n      case \"create\":\n        res = await createAppMutation.mutateAsync({\n          ...data,\n          ...bundle,\n          autoscaling,\n        });\n        break;\n\n      default:\n        break;\n    }\n\n    if (!res.error) {\n      onClose();\n      if (type !== \"create\") {\n        showSuccess(t(\"update success\"));\n      } else {\n        showSuccess(t(\"create success\"));\n      }\n      // Run every 2 seconds, 2 times in total\n      queryClient.invalidateQueries(APP_LIST_QUERY_KEY);\n      const interval = setInterval(() => {\n        queryClient.invalidateQueries(APP_LIST_QUERY_KEY);\n      }, 2000);\n      setTimeout(() => {\n        clearInterval(interval);\n      }, 4000);\n    }\n  };\n\n  return (\n    <>\n      {cloneElement(props.children, {\n        onClick: (event?: any) => {\n          event?.preventDefault();\n          reset(defaultValues);\n          setBundle(defaultBundle);\n          setAutoscaling(defaultAutoscaling);\n          onOpen();\n          setTimeout(() => {\n            setFocus(\"name\");\n          }, 0);\n        },\n      })}\n      {isOpen && !isLoading ? (\n        <Modal isOpen={isOpen} onClose={onClose}>\n          <ModalOverlay />\n          <ModalContent maxW={\"80%\"} width={\"auto\"} minW={\"800px\"} m={\"auto\"}>\n            <ModalHeader>{title}</ModalHeader>\n            <ModalCloseButton />\n            <ModalBody>\n              <VStack spacing={0} align=\"flex-start\" px=\"8\" gap=\"6\">\n                <FormControl\n                  isRequired\n                  isInvalid={!!errors?.name}\n                  isDisabled={type === \"change\"}\n                  hidden={type === \"change\"}\n                >\n                  <div className=\"flex h-12 w-full items-center border-b-2\">\n                    <input\n                      {...register(\"name\", {\n                        required: `${t(\"HomePanel.Application\") + t(\"Name\") + t(\"IsRequired\")}`,\n                      })}\n                      id=\"name\"\n                      placeholder={String(t(\"HomePanel.Application\") + t(\"Name\"))}\n                      className=\"h-8 w-10/12 border-l-2 border-primary-600 bg-transparent pl-4 text-2xl font-medium\"\n                      style={{ outline: \"none\", boxShadow: \"none\" }}\n                    />\n                  </div>\n                  <FormErrorMessage>{errors?.name && errors?.name?.message}</FormErrorMessage>\n                </FormControl>\n                {type !== \"edit\" && (\n                  <>\n                    <BundleControl\n                      bundle={bundle}\n                      sortedBundles={sortedBundles}\n                      type={type}\n                      onBundleItemChange={(k: string, v?: number) => {\n                        setBundle((prev) => {\n                          const v1 = _.cloneDeep(_.set(prev, k, v));\n                          return v1;\n                        });\n                        setCalculating(true);\n                      }}\n                      resourceOptions={billingResourceOptionsRes?.data}\n                    />\n                    <DatabaseBundleControl\n                      bundle={bundle}\n                      originCapacity={application?.bundle.resource.dedicatedDatabase?.capacity}\n                      originReplicas={application?.bundle.resource.dedicatedDatabase?.replicas}\n                      onBundleItemChange={(k: string, v?: number) => {\n                        setBundle((prev) => {\n                          const v1 = _.cloneDeep(_.set(prev, k, v));\n                          return v1;\n                        });\n                        setCalculating(true);\n                      }}\n                      type={type}\n                      defaultDatabaseCapacity={defaultBundle.databaseCapacity}\n                      defaultDedicatedDatabaseBundle={defaultBundle.dedicatedDatabase}\n                      resourceOptions={billingResourceOptionsRes?.data}\n                    ></DatabaseBundleControl>\n                    <AutoscalingControl autoscaling={autoscaling} setAutoscaling={setAutoscaling} />\n                  </>\n                )}\n              </VStack>\n            </ModalBody>\n            <ModalFooter h={20}>\n              <HStack spacing={0} w=\"full\" justify=\"space-between\" px=\"8\">\n                <HStack>\n                  <span className=\"mr-2 flex text-center text-lg font-semibold text-grayModern-600\">\n                    <p>{t(\"Balance\") + \":\"}</p>\n                    <p className=\"ml-1\">{formatPrice(accountRes?.data?.balance)}</p>\n                  </span>\n                  <ChargeButton>\n                    <p className=\"!mr-2 cursor-pointer text-lg font-semibold text-blue-600\">\n                      {t(\"ChargeNow\")}\n                    </p>\n                  </ChargeButton>\n                </HStack>\n                <HStack>\n                  {type !== \"edit\" && (\n                    <div className=\"!mx-2 flex items-center\">\n                      {!calculating ? (\n                        <span>\n                          <span className=\"w-36 text-center text-xl font-semibold text-error-500\">\n                            {`${formatOriginalPrice(totalPrice, 6)} / ${t(\"Hour\")}`}\n                          </span>\n                          <span className=\"mx-1 text-[13px] font-medium text-grayModern-600\">\n                            {`( ${formatOriginalPrice(totalPrice * 24 * 30)} / ${t(\"Month\")} )`}\n                          </span>\n                        </span>\n                      ) : (\n                        <span className=\"mr-2 flex w-36 justify-center\">\n                          <Spinner className=\"!h-4 !w-4\" />\n                        </span>\n                      )}\n                    </div>\n                  )}\n                  {type !== \"edit\" && (\n                    <Button\n                      isLoading={createAppMutation.isLoading}\n                      type=\"submit\"\n                      onClick={handleSubmit(onSubmit)}\n                      isDisabled={totalPrice > accountRes?.data?.balance!}\n                    >\n                      {totalPrice > accountRes?.data?.balance!\n                        ? t(\"balance is insufficient\")\n                        : type === \"change\"\n                        ? t(\"Confirm\")\n                        : t(\"CreateNow\")}\n                    </Button>\n                  )}\n                  {type === \"edit\" && (\n                    <Button\n                      isLoading={updateAppMutation.isLoading}\n                      type=\"submit\"\n                      onClick={handleSubmit(onSubmit)}\n                    >\n                      {t(\"Confirm\")}\n                    </Button>\n                  )}\n                </HStack>\n              </HStack>\n            </ModalFooter>\n          </ModalContent>\n        </Modal>\n      ) : null}\n    </>\n  );\n};\n\nCreateAppModal.displayName = \"CreateModal\";\n\nexport default CreateAppModal;\n"
  },
  {
    "path": "web/src/pages/home/mods/DeleteAppModal/index.tsx",
    "content": "import React from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport {\n  Button,\n  FormControl,\n  Input,\n  Modal,\n  ModalBody,\n  ModalCloseButton,\n  ModalContent,\n  ModalFooter,\n  ModalHeader,\n  ModalOverlay,\n  useDisclosure,\n} from \"@chakra-ui/react\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nimport { APP_PHASE_STATUS } from \"@/constants\";\n\nimport { TApplicationItem } from \"@/apis/typing\";\nimport { ApplicationControllerDelete } from \"@/apis/v1/applications\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nfunction DeleteAppModal(props: {\n  item: TApplicationItem;\n  children: React.ReactElement;\n  onSuccess?: () => void;\n}) {\n  const { item, onSuccess } = props;\n  const { t } = useTranslation();\n  const { isOpen, onOpen, onClose } = useDisclosure();\n  const showError = useGlobalStore((state) => state.showError);\n  const { register, handleSubmit, setValue } = useForm<{\n    appid: string;\n  }>();\n\n  const deleteApplicationMutation = useMutation(\n    (params: any) => ApplicationControllerDelete(params),\n    {\n      onSuccess: () => {\n        onSuccess && onSuccess();\n      },\n      onError: () => {},\n    },\n  );\n\n  return (\n    <>\n      {React.cloneElement(props.children, {\n        onClick: (event: any) => {\n          event?.preventDefault();\n          if (item.phase === APP_PHASE_STATUS.Stopped) {\n            onOpen();\n          } else {\n            showError(t(\"PleaseCloseApplicationFirst\"));\n          }\n        },\n      })}\n\n      <Modal isOpen={isOpen} onClose={onClose}>\n        <ModalOverlay />\n        <ModalContent>\n          <ModalHeader>{t(\"HomePanel.DeleteApp\")}</ModalHeader>\n          <ModalCloseButton />\n          <ModalBody pb={6}>\n            <p className=\"text-lg leading-relaxed\">\n              <Trans\n                t={t}\n                i18nKey=\"HomePanel.DeleteTip\"\n                values={{\n                  appId: item.appid,\n                }}\n                components={{\n                  span: <span className=\"text-danger\" />,\n                }}\n              />\n            </p>\n            <FormControl mt=\"4\" isRequired>\n              <Input\n                {...register(\"appid\")}\n                id=\"appid\"\n                placeholder={item.appid}\n                onChange={(e) => {\n                  setValue(\"appid\", e.target.value.trim());\n                }}\n              />\n            </FormControl>\n          </ModalBody>\n\n          <ModalFooter>\n            <Button\n              isLoading={deleteApplicationMutation.isLoading}\n              onClick={handleSubmit(async (data) => {\n                if (item.appid !== data.appid) {\n                  showError(t(\"NameNotMatch\"));\n                } else {\n                  await deleteApplicationMutation.mutateAsync({\n                    appid: item.appid,\n                  });\n                  onSuccess && onSuccess();\n                  onClose();\n                }\n              })}\n            >\n              {t(\"Confirm\")}\n            </Button>\n          </ModalFooter>\n        </ModalContent>\n      </Modal>\n    </>\n  );\n}\n\nexport default DeleteAppModal;\n"
  },
  {
    "path": "web/src/pages/home/mods/Empty/index.module.scss",
    "content": ".emptyItem {\n  width: 230px;\n  height: 78px;\n\n  box-shadow: rgb(196 206 216 / 25%) 0px 4px 8px;\n  border-radius: 24px 0px;\n  margin-bottom: 24px;\n  position: relative;\n\n  &::before {\n    content: \" \";\n    height: 10px;\n    position: absolute;\n    left: 20px;\n    width: 4px;\n    height: 16px;\n    background: #00a99d;\n    border-radius: 24px;\n  }\n}\n"
  },
  {
    "path": "web/src/pages/home/mods/Empty/index.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\nimport { AddIcon } from \"@chakra-ui/icons\";\nimport { Button, useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { COLOR_MODE } from \"@/constants\";\nimport { hidePhoneNumber } from \"@/utils/format\";\n\nimport CreateAppModal from \"../CreateAppModal\";\n\nimport styles from \"./index.module.scss\";\n\nimport useGlobalStore from \"@/pages/globalStore\";\n\nfunction Empty() {\n  const { t } = useTranslation();\n  const messageList = [\n    t(\"HomePanel.WX\"),\n    t(\"HomePanel.APP\"),\n    t(\"HomePanel.Blog\"),\n    t(\"HomePanel.Enterprise\"),\n    t(\"HomePanel.Personal\"),\n    t(\"HomePanel.Explore\"),\n  ];\n\n  const { userInfo } = useGlobalStore();\n\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  return (\n    <div style={{ height: \"75vh\", minHeight: \"500px\" }}>\n      <div className=\"flex h-full flex-col items-center justify-center\">\n        <h2 className=\"flex text-3xl font-bold\">\n          {t(\"HomePanel.Hello\")} 👋 ， {hidePhoneNumber(userInfo?.username || \"\")} ，\n          {t(\"HomePanel.WelcomeTo\")}\n          <span className=\"ml-2 text-primary-600\">{t(\"HomePanel.LAF\")}</span>\n        </h2>\n        <p className=\"my-8 w-[460px] text-center text-xl\">{t(\"HomePanel.Introduction\")}</p>\n        <div className=\"grid w-[722px] grid-cols-3\">\n          {messageList.map((item, index) => {\n            return (\n              <div\n                key={index}\n                className={clsx(\"flex items-center pl-9 text-xl font-medium\", styles.emptyItem, {\n                  \"bg-lafDark-300\": darkMode,\n                  \"bg-lafWhite-100\": !darkMode,\n                })}\n              >\n                {item}\n              </div>\n            );\n          })}\n        </div>\n        <p className=\"mb-9 text-lg\">{t(\"HomePanel.Use\")}</p>\n        <CreateAppModal type={\"create\"}>\n          <Button\n            size={\"lg\"}\n            colorScheme=\"primary\"\n            style={{ padding: \"0 80px\" }}\n            leftIcon={<AddIcon />}\n          >\n            {t(\"CreateApp\")}\n          </Button>\n        </CreateAppModal>\n      </div>\n    </div>\n  );\n}\n\nexport default Empty;\n"
  },
  {
    "path": "web/src/pages/home/mods/List/BundleInfo.tsx",
    "content": "import { HStack } from \"@chakra-ui/react\";\nimport { useColorMode } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { formatLimitCPU, formatLimitMemory } from \"@/utils/format\";\n\nfunction BundleInfo(props: { bundle: any; className?: string }) {\n  const { bundle, className } = props;\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === \"dark\";\n  if (!bundle) return null;\n  return (\n    <HStack\n      spacing={1}\n      mt={1}\n      className={clsx(\n        darkMode ? \"-ml-5 scale-[.83]\" : \"-ml-5 scale-[.83] text-grayModern-600\",\n        className,\n      )}\n    >\n      <span>{formatLimitCPU(bundle?.resource?.limitCPU)}</span>\n      <span>/</span>\n      <span>{formatLimitMemory(bundle?.resource?.limitMemory)}</span>\n      {/* <span className=\"invisible ml-2 rounded border px-1 text-base text-yellow-500 group-hover:visible\">\n        ≈¥10.00/Day\n      </span> */}\n    </HStack>\n  );\n}\n\nexport default BundleInfo;\n"
  },
  {
    "path": "web/src/pages/home/mods/List/index.tsx",
    "content": "import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { BsThreeDotsVertical } from \"react-icons/bs\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AddIcon, Search2Icon } from \"@chakra-ui/icons\";\nimport {\n  Box,\n  Button,\n  Checkbox,\n  Input,\n  InputGroup,\n  InputLeftElement,\n  Menu,\n  MenuButton,\n  MenuItem,\n  MenuList,\n  useColorMode,\n  useColorModeValue,\n} from \"@chakra-ui/react\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport clsx from \"clsx\";\n\nimport { CopyIcon, DevelopIcon } from \"@/components/CommonIcon\";\nimport ConfirmButton from \"@/components/ConfirmButton\";\nimport CopyText from \"@/components/CopyText\";\nimport FileTypeIcon from \"@/components/FileTypeIcon\";\nimport { APP_PHASE_STATUS, APP_STATUS, Pages } from \"@/constants\";\nimport { formatDate } from \"@/utils/format\";\nimport getRegionById from \"@/utils/getRegionById\";\n\nimport { APP_LIST_QUERY_KEY } from \"../../index\";\nimport CreateAppModal from \"../CreateAppModal\";\nimport DeleteAppModal from \"../DeleteAppModal\";\nimport StatusBadge from \"../StatusBadge\";\n\nimport BundleInfo from \"./BundleInfo\";\n\nimport { TApplicationItem } from \"@/apis/typing\";\nimport { ApplicationControllerUpdateState } from \"@/apis/v1/applications\";\nimport useGlobalStore from \"@/pages/globalStore\";\n\nfunction List(props: { appList: TApplicationItem[] }) {\n  const navigate = useNavigate();\n  const { t } = useTranslation();\n  const darkMode = useColorMode().colorMode === \"dark\";\n\n  const { setCurrentApp, regions, userInfo } = useGlobalStore();\n\n  const [searchKey, setSearchKey] = useState(\"\");\n\n  const queryClient = useQueryClient();\n  const { appList } = props;\n  const bg = useColorModeValue(\"lafWhite.200\", \"lafDark.200\");\n\n  const updateAppStateMutation = useMutation((params: any) =>\n    ApplicationControllerUpdateState(params),\n  );\n\n  const [onlyRuntimeFlag, setOnlyRuntimeFlag] = useState(true);\n\n  return (\n    <>\n      <div className=\"mb-5 flex items-center justify-between\">\n        <h2 className=\"flex items-center text-2xl font-medium\">\n          <FileTypeIcon type=\"app\" className=\"mr-3\" />\n          {t(\"HomePanel.MyApp\")}\n        </h2>\n        <div className=\"flex phone:px-3\">\n          <InputGroup className=\"mr-4\">\n            <InputLeftElement\n              height={\"9\"}\n              left=\"2\"\n              pointerEvents=\"none\"\n              children={<Search2Icon color=\"gray.300\" fontSize={12} />}\n            />\n            <Input\n              rounded={\"full\"}\n              placeholder={t(\"Search\").toString()}\n              variant=\"outline\"\n              height=\"36px\"\n              border={darkMode ? \"1px solid #485058\" : \"1px solid #DEE0E2\"}\n              onChange={(e: any) => setSearchKey(e.target.value)}\n            />\n          </InputGroup>\n          <CreateAppModal type=\"create\">\n            <Button\n              colorScheme=\"primary\"\n              style={{ padding: \"0 40px\", height: \"36px\" }}\n              className=\"!bg-primary-600 hover:!bg-primary-700\"\n              leftIcon={<AddIcon />}\n            >\n              {t(\"Create\")}\n            </Button>\n          </CreateAppModal>\n        </div>\n      </div>\n\n      <div className=\"flex flex-col overflow-auto\">\n        <Box bg={bg} className=\"mb-3 flex h-12 flex-none items-center rounded-[10px] px-6\">\n          <div className=\"w-3/12 text-second \">{t(\"HomePanel.Application\") + t(\"Name\")}</div>\n          <div className=\"w-2/12 whitespace-nowrap text-second\">App ID</div>\n          <div className=\"w-2/12 pl-2 text-second\">{t(\"HomePanel.State\")}</div>\n          <div className=\"w-2/12 text-second \">{t(\"HomePanel.Region\")}</div>\n          <div className=\"w-4/12 text-second \">{t(\"Time\")}</div>\n          <div className=\"w-1/12 min-w-[150px] pl-4 text-second\">{t(\"Operation\")}</div>\n        </Box>\n        <div className=\"flex-grow overflow-auto\">\n          {(appList || [])\n            .filter((item: TApplicationItem) => item?.name.indexOf(searchKey) >= 0)\n            .map((item: TApplicationItem) => {\n              return (\n                <Box\n                  key={item?.appid}\n                  bg={bg}\n                  className=\"group mb-3 flex h-[68px] items-center rounded-[10px] px-6\"\n                >\n                  <div className=\"w-3/12\">\n                    <div className=\"flex w-44\">\n                      <div className=\"truncate text-lg font-medium\">{item?.name}</div>\n                      {item?.createdBy !== userInfo?._id && (\n                        <span\n                          className={clsx(\n                            \"flex scale-[.83] items-center whitespace-nowrap rounded-full border border-dashed border-[#DEE0E2] px-2\",\n                            darkMode ? \"\" : \"text-grayModern-600\",\n                          )}\n                        >\n                          {t(\"Collaborative\")}\n                        </span>\n                      )}\n                    </div>\n                    <BundleInfo bundle={item.bundle} />\n                  </div>\n                  <div className={clsx(darkMode ? \"\" : \"text-grayIron-900\", \"w-2/12\")}>\n                    <CopyText className=\"flex space-x-1 font-mono\" text={item?.appid}>\n                      <span>\n                        <p>{item?.appid}</p>\n                        <CopyIcon size={14} color=\"#CDCDD0\" />\n                      </span>\n                    </CopyText>\n                  </div>\n                  <div className=\"w-2/12\">\n                    <StatusBadge\n                      className=\"!bg-transparent\"\n                      statusConditions={item?.phase}\n                      state={item?.state}\n                    />\n                  </div>\n                  <div className={clsx(\"w-2/12 font-medium\", darkMode ? \"\" : \" text-grayIron-700\")}>\n                    {getRegionById(regions, item.regionId)?.displayName}\n                  </div>\n                  <div\n                    className={\n                      darkMode\n                        ? \"text-white/16 w-4/12 font-medium\"\n                        : \"w-4/12 font-medium text-grayIron-700\"\n                    }\n                  >\n                    <p>\n                      {t(\"CreateTime\")}: {formatDate(item.createdAt)}{\" \"}\n                    </p>\n                  </div>\n                  <div className=\"flex w-1/12 min-w-[150px]\">\n                    <Button\n                      className=\"mr-4 !px-4 !py-1.5 !font-medium !text-primary-600\"\n                      fontWeight={\"semibold\"}\n                      variant={\"text\"}\n                      disabled={item?.phase === APP_PHASE_STATUS.Deleting}\n                      onClick={(event: any) => {\n                        event?.preventDefault();\n                        setCurrentApp(item);\n                        navigate(`/app/${item?.appid}/${Pages.function}`);\n                      }}\n                      leftIcon={<DevelopIcon boxSize=\"6\" color={\"primary.500\"} />}\n                    >\n                      {t(\"HomePanel.Develop\")}\n                    </Button>\n                    <Menu placement=\"bottom-end\">\n                      <MenuButton className=\"h-8 w-8 rounded-full hover:bg-lafWhite-600\">\n                        <BsThreeDotsVertical color=\"#828289\" size={16} className=\"m-auto\" />\n                      </MenuButton>\n                      <MenuList width={12} minW={24}>\n                        <CreateAppModal application={item} type=\"edit\">\n                          <MenuItem minH=\"40px\" display={\"block\"}>\n                            <a className=\"text-primary block\" href=\"/edit\">\n                              {t(\"Edit\")}\n                            </a>\n                          </MenuItem>\n                        </CreateAppModal>\n\n                        {item.phase === APP_PHASE_STATUS.Started &&\n                          item.state === APP_STATUS.Running && (\n                            <CreateAppModal application={item} type=\"change\">\n                              <MenuItem minH=\"40px\" display={\"block\"}>\n                                <a className=\"text-primary block whitespace-nowrap\" href=\"/edit\">\n                                  {t(\"Change\")}\n                                </a>\n                              </MenuItem>\n                            </CreateAppModal>\n                          )}\n\n                        {item.phase === APP_PHASE_STATUS.Started &&\n                          item.state === APP_STATUS.Running &&\n                          (item.bundle.resource.dedicatedDatabase?.limitCPU ? (\n                            <ConfirmButton\n                              headerText={t(\"SettingPanel.Restart\")}\n                              bodyText={\n                                <Checkbox\n                                  colorScheme=\"primary\"\n                                  mt={4}\n                                  isChecked={!onlyRuntimeFlag}\n                                  onChange={(e) => setOnlyRuntimeFlag(!e.target.checked)}\n                                >\n                                  {t(\"SettingPanel.RestartTips\")}\n                                </Checkbox>\n                              }\n                              confirmButtonText={String(t(\"Confirm\"))}\n                              onSuccessAction={async (event) => {\n                                event?.preventDefault();\n                                const res = await updateAppStateMutation.mutateAsync({\n                                  appid: item.appid,\n                                  state: APP_STATUS.Restarting,\n                                  onlyRuntimeFlag: onlyRuntimeFlag,\n                                });\n                                setOnlyRuntimeFlag(true);\n                                if (!res.error) {\n                                  queryClient.setQueryData(APP_LIST_QUERY_KEY, (old: any) => {\n                                    return {\n                                      ...old,\n                                      data: old.data.map((app: any) => {\n                                        if (app.appid === item.appid) {\n                                          return {\n                                            ...app,\n                                            phase: APP_STATUS.Restarting,\n                                          };\n                                        }\n                                        return app;\n                                      }),\n                                    };\n                                  });\n                                }\n                              }}\n                            >\n                              <MenuItem minH=\"40px\" display={\"block\"}>\n                                <span className=\"text-primary block\">\n                                  {t(\"SettingPanel.Restart\")}\n                                </span>\n                              </MenuItem>\n                            </ConfirmButton>\n                          ) : (\n                            <ConfirmButton\n                              headerText={t(\"SettingPanel.Restart\")}\n                              bodyText={t(\"SettingPanel.RestartTips1\")}\n                              confirmButtonText={String(t(\"Confirm\"))}\n                              onSuccessAction={async (event) => {\n                                event?.preventDefault();\n                                const res = await updateAppStateMutation.mutateAsync({\n                                  appid: item.appid,\n                                  state: APP_STATUS.Restarting,\n                                });\n                                if (!res.error) {\n                                  queryClient.setQueryData(APP_LIST_QUERY_KEY, (old: any) => {\n                                    return {\n                                      ...old,\n                                      data: old.data.map((app: any) => {\n                                        if (app.appid === item.appid) {\n                                          return {\n                                            ...app,\n                                            phase: APP_STATUS.Restarting,\n                                          };\n                                        }\n                                        return app;\n                                      }),\n                                    };\n                                  });\n                                }\n                              }}\n                            >\n                              <MenuItem minH=\"40px\" display={\"block\"}>\n                                <span className=\"text-primary block\">\n                                  {t(\"SettingPanel.Restart\")}\n                                </span>\n                              </MenuItem>\n                            </ConfirmButton>\n                          ))}\n\n                        {item.phase === APP_PHASE_STATUS.Stopped &&\n                          item.state === APP_STATUS.Stopped && (\n                            <MenuItem\n                              minH=\"40px\"\n                              display={\"block\"}\n                              onClick={async (event) => {\n                                event?.preventDefault();\n                                const res = await updateAppStateMutation.mutateAsync({\n                                  appid: item.appid,\n                                  state: APP_STATUS.Running,\n                                });\n                                if (!res.error) {\n                                  queryClient.setQueryData(APP_LIST_QUERY_KEY, (old: any) => {\n                                    return {\n                                      ...old,\n                                      data: old.data.map((app: any) => {\n                                        if (app.appid === item.appid) {\n                                          return {\n                                            ...app,\n                                            phase: APP_PHASE_STATUS.Starting,\n                                          };\n                                        }\n                                        return app;\n                                      }),\n                                    };\n                                  });\n                                }\n                              }}\n                            >\n                              <span className=\"text-primary block\">{t(\"SettingPanel.Start\")}</span>\n                            </MenuItem>\n                          )}\n\n                        {item.phase === APP_PHASE_STATUS.Started &&\n                          item.state === APP_STATUS.Running && (\n                            <ConfirmButton\n                              headerText={t(\"SettingPanel.Pause\")}\n                              bodyText={t(\"SettingPanel.PauseTips\")}\n                              confirmButtonText={String(t(\"Confirm\"))}\n                              onSuccessAction={async (event: any) => {\n                                event?.preventDefault();\n                                const res = await updateAppStateMutation.mutateAsync({\n                                  appid: item.appid,\n                                  state: APP_STATUS.Stopped,\n                                });\n                                if (!res.error) {\n                                  queryClient.setQueryData(APP_LIST_QUERY_KEY, (old: any) => {\n                                    return {\n                                      ...old,\n                                      data: old.data.map((app: any) => {\n                                        if (app.appid === item.appid) {\n                                          return {\n                                            ...app,\n                                            phase: APP_PHASE_STATUS.Stopping,\n                                          };\n                                        }\n                                        return app;\n                                      }),\n                                    };\n                                  });\n                                }\n                              }}\n                            >\n                              <MenuItem minH=\"40px\" display={\"block\"}>\n                                {t(\"SettingPanel.Pause\")}\n                              </MenuItem>\n                            </ConfirmButton>\n                          )}\n\n                        {item.phase === APP_PHASE_STATUS.Stopped &&\n                          item.state === APP_STATUS.Stopped && (\n                            <DeleteAppModal\n                              item={item}\n                              onSuccess={() => queryClient.invalidateQueries(APP_LIST_QUERY_KEY)}\n                            >\n                              <MenuItem minH=\"40px\" display={\"block\"}>\n                                <a className=\"block text-error-500\" href=\"/delete\">\n                                  {t(\"DeleteApp\")}\n                                </a>\n                              </MenuItem>\n                            </DeleteAppModal>\n                          )}\n                      </MenuList>\n                    </Menu>\n                  </div>\n                </Box>\n              );\n            })}\n        </div>\n      </div>\n    </>\n  );\n}\n\nexport default List;\n"
  },
  {
    "path": "web/src/pages/home/mods/StatusBadge/index.module.scss",
    "content": ".badgeStyle {\n  text-align: center;\n  margin-right: 2px;\n  border-radius: 50px;\n\n  span::before {\n    content: \"\";\n    display: inline-block;\n    margin-bottom: 1px;\n    width: 6px;\n    height: 6px;\n    margin-right: 4px;\n    border-radius: 50%;\n  }\n\n  &.primary {\n    color: var(--chakra-colors-primary-600);\n    background-color: var(--chakra-colors-primary-100);\n\n    span::before {\n      background-color: var(--chakra-colors-primary-600);\n    }\n  }\n\n  &.warn {\n    color: var(--chakra-colors-warn-600);\n    background-color: var(--chakra-colors-warn-100);\n\n    span::before {\n      background-color: var(--chakra-colors-warn-600);\n    }\n  }\n\n  &.blue {\n    color: var(--chakra-colors-blue-600);\n    background-color: var(--chakra-colors-blue-100);\n\n    span::before {\n      background-color: var(--chakra-colors-blue-600);\n    }\n  }\n\n  &.error {\n    color: var(--chakra-colors-error-600);\n    background-color: var(--chakra-colors-error-100);\n\n    span::before {\n      background-color: var(--chakra-colors-error-600);\n    }\n  }\n}\n"
  },
  {
    "path": "web/src/pages/home/mods/StatusBadge/index.tsx",
    "content": "import { Spinner } from \"@chakra-ui/react\";\nimport clsx from \"clsx\";\n\nimport { APP_PHASE_STATUS } from \"@/constants/index\";\n\nimport styles from \"./index.module.scss\";\nconst colorScheme: {\n  [key: string]: string;\n} = {\n  Started: \"primary\",\n  Creating: \"warn\",\n  Starting: \"blue\",\n  Deleting: \"error\",\n  Deleted: \"error\",\n  Stopping: \"error\",\n  Stopped: \"error\",\n  Restarting: \"blue\",\n  Created: \"warn\",\n};\nexport default function StatusBadge(props: {\n  statusConditions?: string;\n  state?: string;\n  className?: string;\n}) {\n  const { statusConditions = APP_PHASE_STATUS.Started, state, className } = props;\n\n  const getStatus = (statusConditions: string, state: string) => {\n    if (\n      statusConditions === APP_PHASE_STATUS.Started ||\n      statusConditions === APP_PHASE_STATUS.Stopped\n    ) {\n      return state;\n    }\n    return statusConditions;\n  };\n\n  return (\n    <>\n      <div\n        className={clsx(\n          styles.badgeStyle,\n          styles[colorScheme[statusConditions]],\n          \"flex px-2 py-1 font-medium\",\n          className,\n        )}\n      >\n        <span>{getStatus(statusConditions, state || \"\")}</span>\n        {statusConditions === APP_PHASE_STATUS.Started ||\n        statusConditions === APP_PHASE_STATUS.Stopped ? (\n          \"\"\n        ) : (\n          <div className=\"flex items-center pl-1 text-grayModern-400\">\n            <Spinner size=\"xs\" />\n          </div>\n        )}\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/home/service.ts",
    "content": "import { useQuery } from \"@tanstack/react-query\";\n\nimport { AccountControllerFindOne } from \"@/apis/v1/accounts\";\nimport { ResourceControllerGetResourceBundles } from \"@/apis/v1/resources\";\n\nexport const queryKeys = {\n  useAccountQuery: [\"useAccountQuery\"],\n  useBillingPriceQuery: [\"useBillingPriceQuery\"],\n  useBillingResourceOptionsQuery: [\"useBillingResourceOptionsQuery\"],\n  useResourceBundlesQuery: [\"useBillingResourceBundlesQuery\"],\n};\n\nexport const useAccountQuery = () => {\n  return useQuery(queryKeys.useAccountQuery, async () => {\n    return AccountControllerFindOne({});\n  });\n};\n\nexport const useResourceBundlesQuery = () => {\n  return useQuery(queryKeys.useResourceBundlesQuery, async () => {\n    return ResourceControllerGetResourceBundles({});\n  });\n};\n"
  },
  {
    "path": "web/src/pages/homepage/ability.tsx",
    "content": "import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useColorMode } from \"@chakra-ui/react\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\ntype Props = {};\n\nconst Ability = (props: Props) => {\n  const { t } = useTranslation();\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  return (\n    <div className=\"h-auto\">\n      <h2 className=\"py-[80px] pb-[48px] text-4xl lg:py-[60px] lg:pb-[60px]\">\n        {t(`HomePage.Ability.title`)}\n      </h2>\n      <div className=\"w-full px-[16px] lg:hidden\">\n        <div\n          className={\n            darkMode\n              ? \"h-max-[520px] my-6 w-full rounded-2xl bg-lafDark-300 lg:hidden\"\n              : \"bg-card h-max-[520px] my-6 w-full rounded-2xl lg:hidden\"\n          }\n        >\n          <div className=\"justify-between\">\n            <div className=\"p-6\">\n              <img className=\"mb-8\" src=\"/homepage/functions.svg\" alt=\"icon\" />\n              <h3>\n                <span className=\"bg-gradient-to-r from-[#00C24E] to-[#00A1FC] bg-clip-text text-transparent\">\n                  {t(`HomePage.Ability.function`)}\n                </span>\n                {t(`HomePage.Ability.functionSub`)}\n              </h3>\n            </div>\n            <img\n              className=\"w-max-5/6 mx-auto pl-8 lg:hidden \"\n              src=\"/homepage/function.png\"\n              alt=\"function\"\n            />\n          </div>\n        </div>\n        <div\n          className={\n            darkMode\n              ? \"my-6 w-full rounded-2xl bg-lafDark-300 lg:hidden\"\n              : \"bg-card my-6 w-full rounded-2xl lg:hidden\"\n          }\n        >\n          <div className=\"justify-between\">\n            <div className=\"p-6\">\n              <img className=\"mb-8\" src=\"/homepage/database.svg\" alt=\"icon\" />\n              <h3 className=\"leading-normal\">\n                <span className=\"bg-gradient-to-r from-[#00CCE8] to-[#00E8A2] bg-clip-text text-transparent\">\n                  {t(`HomePage.Ability.database`)}\n                </span>\n                {t(`HomePage.Ability.databaseSub`)}\n              </h3>\n            </div>\n            <img className=\"mx-auto pl-8 lg:hidden \" src=\"/homepage/database.png\" alt=\"database\" />\n          </div>\n        </div>\n\n        <div\n          className={\n            darkMode\n              ? \"my-6 w-full rounded-2xl bg-lafDark-300 lg:hidden\"\n              : \"bg-card my-6 w-full rounded-2xl lg:hidden\"\n          }\n        >\n          <div className=\"justify-between\">\n            <div className=\"p-6\">\n              <img className=\"mb-6\" src=\"/homepage/storage.svg\" alt=\"icon\" />\n              <h3>\n                <span className=\"bg-gradient-to-r from-[#57E37A] to-[#00BEB1] bg-clip-text text-transparent\">\n                  {t(`HomePage.Ability.storage`)}\n                </span>\n                {t(`HomePage.Ability.storageSub`)}\n              </h3>\n            </div>\n            <img className=\"mx-auto pl-8 lg:hidden \" src=\"/homepage/storage.png\" alt=\"storage\" />\n          </div>\n        </div>\n      </div>\n      <div\n        className={\n          darkMode\n            ? \"my-6 hidden w-full rounded-2xl bg-lafDark-300 lg:block\"\n            : \"bg-card my-6 hidden w-full rounded-2xl lg:block\"\n        }\n      >\n        <div className=\"justify-between lg:flex lg:flex-row\">\n          <div className=\"p-6 lg:p-12\">\n            <img className=\"mb-6\" src=\"/homepage/functions.svg\" alt=\"icon\" />\n            <h3 className=\"w-[300px]\">\n              <span className=\"bg-gradient-to-r from-[#00C24E] to-[#00A1FC] bg-clip-text text-transparent\">\n                {t(`HomePage.Ability.function`)}\n              </span>\n              {t(`HomePage.Ability.functionSub`)}\n            </h3>\n          </div>\n          <div className=\"overflow-hidden rounded-br-2xl\">\n            <img className=\"w-full lg:mt-8\" src=\"/homepage/function.png\" alt=\"function\" />\n          </div>\n          <div></div>\n        </div>\n      </div>\n      <div className=\"hidden w-full gap-6 lg:flex \">\n        <div\n          className={\n            darkMode\n              ? \"relative h-auto w-1/2 rounded-2xl bg-lafDark-300 px-12 pt-12\"\n              : \"bg-card relative h-auto w-1/2 rounded-2xl px-12 pt-12\"\n          }\n        >\n          <img className=\"mb-6\" src=\"/homepage/database.svg\" alt=\"icon\" />\n          <h3 className=\"w-[400px]\">\n            <span className=\"bg-gradient-to-r from-[#00CCE8] to-[#00E8A2] bg-clip-text text-transparent\">\n              {t(`HomePage.Ability.database`)}\n            </span>\n            {t(`HomePage.Ability.databaseSub`)}\n          </h3>\n          <div className=\"absolute bottom-0 flex h-1/2 items-end\">\n            <img className=\"mx-auto\" src=\"/homepage/database.png\" alt=\"database\" />\n          </div>\n        </div>\n        <div\n          className={\n            darkMode\n              ? \"relative h-[600px] w-1/2 rounded-2xl bg-lafDark-300 px-12 pt-12\"\n              : \"bg-card relative h-[600px] w-1/2 rounded-2xl px-12 pt-12\"\n          }\n        >\n          <img className=\"mb-6\" src=\"/homepage/storage.svg\" alt=\"icon\" />\n          <h3 className=\"w-[400px]\">\n            <span className=\"bg-gradient-to-r from-[#57E37A] to-[#00BEB1] bg-clip-text text-transparent\">\n              {t(`HomePage.Ability.storage`)}\n            </span>\n            {t(`HomePage.Ability.storageSub`)}\n          </h3>\n          <div className=\"absolute bottom-0 flex h-1/2 items-end\">\n            <img className=\"mx-auto\" src=\"/homepage/storage.png\" alt=\"storage\" />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default Ability;\n"
  },
  {
    "path": "web/src/pages/homepage/choice.tsx",
    "content": "import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useColorMode } from \"@chakra-ui/react\";\n\nimport { COLOR_MODE } from \"@/constants\";\n\ntype Props = {};\n\nconst Choice = (props: Props) => {\n  const { t } = useTranslation();\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  return (\n    <div className=\"mt-[120px]\">\n      <h2 className=\"mb-[60px]\"> {t(`HomePage.Choice.title`)}</h2>\n      <div className=\"mx-[16px] space-y-4 lg:mx-0 lg:grid lg:grid-cols-3 lg:gap-6 lg:space-y-0\">\n        <div\n          className={\n            darkMode\n              ? \"flex justify-between rounded-md border border-solid  p-[40px] hover:bg-lafDark-300\"\n              : \"flex justify-between rounded-md border border-solid  p-[40px] hover:bg-[#F9F9F9]\"\n          }\n        >\n          <div className=\"w-1/4\">\n            <img src=\"/homepage/icon_01.svg\" alt=\"logo1\" />\n          </div>\n          <div className=\"w-3/4 \">\n            <h4 className=\"mb-2 text-2xl font-bold\">{t(`HomePage.Choice.open`)}</h4>\n            <p className=\"text-xl font-light\"> {t(`HomePage.Choice.openSub`)}</p>\n          </div>\n        </div>\n        <div\n          className={\n            darkMode\n              ? \"flex justify-between rounded-md border border-solid  p-[40px] hover:bg-lafDark-300\"\n              : \"flex justify-between rounded-md border border-solid  p-[40px] hover:bg-[#F9F9F9]\"\n          }\n        >\n          <div className=\"w-1/4\">\n            <img src=\"/homepage/icon_02.svg\" alt=\"icon_02\" />\n          </div>\n          <div className=\"w-3/4\">\n            <h4 className=\"mb-2 text-2xl font-bold\">{t(`HomePage.Choice.fast`)}</h4>\n            <p className=\"text-xl font-light\">{t(`HomePage.Choice.fastSub`)}</p>\n          </div>\n        </div>\n        <div\n          className={\n            darkMode\n              ? \"flex justify-between rounded-md border border-solid  p-[40px] hover:bg-lafDark-300\"\n              : \"flex justify-between rounded-md border border-solid  p-[40px] hover:bg-[#F9F9F9]\"\n          }\n        >\n          <div className=\"w-1/4\">\n            <img src=\"/homepage/icon_03.svg\" alt=\"icon_03\" />\n          </div>\n          <div className=\"w-3/4\">\n            <h4 className=\"mb-2 text-2xl font-bold\">{t(`HomePage.Choice.private`)}</h4>\n            <p className=\"text-xl font-light\">{t(`HomePage.Choice.privateSub`)}</p>\n          </div>\n        </div>\n        <div\n          className={\n            darkMode\n              ? \"flex justify-between rounded-md border border-solid  p-[40px] hover:bg-lafDark-300\"\n              : \"flex justify-between rounded-md border border-solid  p-[40px] hover:bg-[#F9F9F9]\"\n          }\n        >\n          <div className=\"w-1/4\">\n            <img src=\"/homepage/icon_04.svg\" alt=\"icon_04\" />\n          </div>\n          <div className=\"w-3/4\">\n            <h4 className=\"mb-2 text-2xl font-bold\">{t(`HomePage.Choice.simple`)}</h4>\n            <p className=\"text-xl font-light\">{t(`HomePage.Choice.simpleSub`)}</p>\n          </div>\n        </div>\n        <div\n          className={\n            darkMode\n              ? \"flex justify-between rounded-md border border-solid  p-[40px] hover:bg-lafDark-300\"\n              : \"flex justify-between rounded-md border border-solid  p-[40px] hover:bg-[#F9F9F9]\"\n          }\n        >\n          <div className=\"w-1/4\">\n            <img src=\"/homepage/icon_05.svg\" alt=\"icon_05\" />\n          </div>\n          <div className=\"w-3/4\">\n            <h4 className=\"mb-2 text-2xl font-bold\">{t(`HomePage.Choice.cheap`)}</h4>\n            <p className=\"text-xl font-light\">{t(`HomePage.Choice.cheapSub`)}</p>\n          </div>\n        </div>\n        <div\n          className={\n            darkMode\n              ? \"flex justify-between rounded-md border border-solid  p-[40px] hover:bg-lafDark-300\"\n              : \"flex justify-between rounded-md border border-solid  p-[40px] hover:bg-[#F9F9F9]\"\n          }\n        >\n          <div className=\"w-1/4\">\n            <img src=\"/homepage/icon_06.png\" className=\"h-12 w-12\" alt=\"icon_06\" />\n          </div>\n          <div className=\"w-3/4\">\n            <h4 className=\"mb-2 text-2xl font-bold\">{t(`HomePage.Choice.service`)}</h4>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default Choice;\n"
  },
  {
    "path": "web/src/pages/homepage/circle.tsx",
    "content": "import React from \"react\";\n\ntype Props = {};\n\nconst circle = (props: Props) => {\n  return (\n    <div className=\"relative mt-10 flex items-center justify-center\">\n      <div className=\"absolute h-[120px] w-[120px] rounded-full border border-white opacity-20 \" />\n      <div className=\"absolute h-[180px] w-[180px] rounded-full border border-gray-400 opacity-20\" />\n      <div className=\"absolute h-[240px] w-[240px] rounded-full border border-gray-400 opacity-40\" />\n      <div className=\"absolute h-[320px] w-[320px] rounded-full border border-gray-500 opacity-40\" />\n    </div>\n  );\n};\n\nexport default circle;\n"
  },
  {
    "path": "web/src/pages/homepage/contact.tsx",
    "content": "import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport useSiteSettingStore from \"../siteSetting\";\n\ntype Props = {};\n\nconst Contact = (props: Props) => {\n  const { t } = useTranslation();\n  const { siteSettings } = useSiteSettingStore();\n  return (\n    <div className=\"py-12 pb-2 text-center lg:pb-24 lg:pt-0\">\n      <a\n        href={siteSettings.laf_business_url?.value}\n        target=\"_blank\"\n        className=\" bg-primary rounded px-16 py-5 text-2xl text-white\"\n        rel=\"noreferrer\"\n      >\n        {t(`HomePage.NavBar.contact`)}\n      </a>\n    </div>\n  );\n};\n\nexport default Contact;\n"
  },
  {
    "path": "web/src/pages/homepage/footer.tsx",
    "content": "import { useTranslation } from \"react-i18next\";\nimport { useColorMode } from \"@chakra-ui/react\";\n\nimport { DiscordIcon, ForumIcon, WechatIcon } from \"@/components/CommonIcon\";\nimport { COLOR_MODE, site_url } from \"@/constants\";\n\nimport useSiteSettingStore from \"../siteSetting\";\n\nimport Status from \"./status\";\n\ntype Props = {};\n\nconst Footer = (props: Props) => {\n  const { t } = useTranslation();\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  const siteSettings = useSiteSettingStore((state) => state.siteSettings);\n\n  return (\n    <>\n      <div\n        className={\n          darkMode\n            ? \"hidden justify-center bg-lafDark-200 lg:flex\"\n            : \"hidden justify-center bg-lafWhite-600 lg:flex\"\n        }\n      >\n        <div className=\" w-full max-w-[1200px] flex-col divide-y divide-solid divide-gray-200\">\n          <div className=\"py-[60px]\">\n            <div className=\"flex justify-between\">\n              <div className=\"w-1/2\">\n                <div className=\"flex items-center space-x-2\">\n                  <img\n                    src={darkMode ? \"sealos-logo.svg\" : \"sealos-logo.svg\"}\n                    className=\"h-8 w-auto\"\n                    alt=\"logo\"\n                  />\n                  <span className=\"text-lg\"> {t(\"app.logo\")}</span>\n                </div>\n\n                <p\n                  className={\n                    darkMode\n                      ? \"mt-8 w-full max-w-[380px] text-base leading-5 text-lafWhite-700\"\n                      : \"mt-8 w-full max-w-[380px] text-base leading-5 text-[#5E6987]\"\n                  }\n                >\n                  {t(\"HomePage.Footer.laf\")}\n                </p>\n              </div>\n\n              <div\n                className={\n                  darkMode\n                    ? \"w-1/6 text-lg leading-10 text-lafWhite-700\"\n                    : \"w-1/6 text-lg leading-10 text-[#5E6987]\"\n                }\n              >\n                {t(\"HomePage.Footer.product\")}\n                <ul\n                  className={\n                    darkMode ? \"leading-10 text-lafWhite-400\" : \"leading-10 text-[#14171F]\"\n                  }\n                >\n                  <li>\n                    <a href={String(t(`HomePage.LafLink`))}>{t(\"HomePage.Footer.item1_1\")}</a>\n                  </li>\n                  <li>\n                    <a href={`${site_url.laf_github}/releases`} target=\"_blank\" rel=\"noreferrer\">\n                      {t(\"HomePage.Footer.item1_3\")}\n                    </a>\n                  </li>\n                  <li>\n                    <a\n                      href=\"https://marketplace.visualstudio.com/items?itemName=NightWhite.laf-assistant\"\n                      target=\"_blank\"\n                      rel=\"noreferrer\"\n                    >\n                      {t(\"HomePage.Footer.item1_4\")}\n                    </a>\n                  </li>\n                  <li>\n                    <a href=\"https://github.com/labring/sealos\" target=\"_blank\" rel=\"noreferrer\">\n                      {t(\"HomePage.Footer.item1_2\")}\n                    </a>\n                  </li>\n                </ul>\n              </div>\n              <div\n                className={\n                  darkMode\n                    ? \"w-1/6 text-lg leading-10 text-lafWhite-700\"\n                    : \"w-1/6 text-lg leading-10 text-[#5E6987]\"\n                }\n              >\n                {t(\"HomePage.Footer.developer\")}\n                <ul\n                  className={\n                    darkMode ? \"leading-10 text-lafWhite-400\" : \"leading-10 text-[#14171F]\"\n                  }\n                >\n                  <li>\n                    <a\n                      href={`${site_url.laf_github}/tree/main/deploy`}\n                      target=\"_blank\"\n                      rel=\"noreferrer\"\n                    >\n                      {t(\"HomePage.Footer.item2_1\")}\n                    </a>\n                  </li>\n                  <li>\n                    <a href=\"https://api.laf.dev/\" target=\"_blank\" rel=\"noreferrer\">\n                      {t(\"HomePage.Footer.item2_2\")}\n                    </a>\n                  </li>\n                  <li>\n                    <a href={site_url.laf_github} target=\"_blank\" rel=\"noreferrer\">\n                      {t(\"HomePage.Footer.item2_4\")}\n                    </a>\n                  </li>\n                  {siteSettings.laf_doc_url?.value && (\n                    <li>\n                      <a href={siteSettings.laf_doc_url?.value} target=\"_blank\" rel=\"noreferrer\">\n                        {t(\"HomePage.Footer.item2_5\")}\n                      </a>\n                    </li>\n                  )}\n                </ul>\n              </div>\n              <div\n                className={\n                  darkMode\n                    ? \"w-1/6 text-lg leading-10 text-lafWhite-700\"\n                    : \"w-1/6 text-lg leading-10 text-[#5E6987]\"\n                }\n              >\n                {t(\"HomePage.Footer.support\")}\n                <ul\n                  className={\n                    darkMode ? \"leading-10 text-lafWhite-400\" : \"leading-10 text-[#14171F]\"\n                  }\n                >\n                  <li>\n                    <a href={`${site_url.laf_github}/issues`} target=\"_blank\" rel=\"noreferrer\">\n                      {t(\"HomePage.Footer.item3_1\")}\n                    </a>\n                  </li>\n\n                  {siteSettings.laf_forum_url?.value && (\n                    <li>\n                      <a href={siteSettings.laf_forum_url?.value} target=\"_blank\" rel=\"noreferrer\">\n                        {t(\"HomePage.Footer.item3_2\")}\n                      </a>\n                    </li>\n                  )}\n\n                  {siteSettings.laf_about_us_url?.value && (\n                    <li>\n                      <a\n                        href={siteSettings.laf_about_us_url?.value}\n                        target=\"_blank\"\n                        rel=\"noreferrer\"\n                      >\n                        {t(\"HomePage.Footer.item3_3\")}\n                      </a>\n                    </li>\n                  )}\n                </ul>\n              </div>\n            </div>\n          </div>\n          <div className=\"flex h-auto flex-row items-center justify-between py-6\">\n            <div\n              className={\n                darkMode ? \"w-1/2 text-lg text-lafWhite-700\" : \"w-1/2 text-lg text-[#3C455D]\"\n              }\n            >\n              sealos. all rights reserved. © {new Date().getFullYear()}\n              <div\n                dangerouslySetInnerHTML={{\n                  __html: siteSettings.site_footer?.value || \"\",\n                }}\n              />\n            </div>\n            <div className=\"flex justify-evenly \">\n              {siteSettings.laf_status_url?.value && <Status />}\n              {siteSettings.laf_wechat_url?.value && (\n                <a\n                  href={siteSettings.laf_wechat_url?.value}\n                  target=\"_blank\"\n                  rel=\"noreferrer\"\n                  className=\"mr-1\"\n                >\n                  <WechatIcon fontSize={22} color={darkMode ? \"#F6F8F9\" : \"#3C455D\"} />\n                </a>\n              )}\n              {siteSettings.laf_forum_url?.value && (\n                <a\n                  href={siteSettings.laf_forum_url?.value}\n                  target=\"_blank\"\n                  rel=\"noreferrer\"\n                  className=\"mr-1\"\n                >\n                  <ForumIcon fontSize={22} color={darkMode ? \"#F6F8F9\" : \"#3C455D\"} />\n                </a>\n              )}\n              {siteSettings.laf_discord_url?.value && (\n                <a\n                  href={siteSettings.laf_discord_url?.value}\n                  target=\"_blank\"\n                  rel=\"noreferrer\"\n                  className=\"mr-1\"\n                >\n                  <DiscordIcon fontSize={22} color={darkMode ? \"#F6F8F9\" : \"#3C455D\"} />\n                </a>\n              )}\n            </div>\n          </div>\n        </div>\n      </div>\n      <div\n        className={\n          darkMode\n            ? \"mt-12 h-auto flex-col divide-y divide-solid divide-gray-200 bg-lafDark-200 px-8 lg:hidden\"\n            : \"mt-12 h-auto flex-col divide-y divide-solid divide-gray-200 bg-[#F9F9F9] px-8 lg:hidden\"\n        }\n      >\n        <div className=\"pb-4 pt-12\">\n          <img\n            src={darkMode ? \"/logo_light.png\" : \"/homepage/logo_text.png\"}\n            alt=\"logo\"\n            width={64}\n            height={30}\n          />\n          <p\n            className={\n              darkMode\n                ? \"mt-4 w-full text-base leading-5 text-lafWhite-700\"\n                : \"mt-4 w-full text-base leading-5 text-[#5E6987]\"\n            }\n          >\n            {t(\"HomePage.Footer.laf\")}\n          </p>\n\n          <div className=\"mt-4 flex justify-between\">\n            <div className=\"w-1/2 text-lg\">\n              <div\n                className={darkMode ? \"leading-8 text-lafWhite-700\" : \"leading-8 text-[#5E6987]\"}\n              >\n                {t(\"HomePage.Footer.product\")}\n              </div>\n              <ul className=\"mb-4 leading-8\">\n                <li>\n                  <a href={String(t(`HomePage.LafLink`))}>{t(\"HomePage.Footer.item1_1\")}</a>\n                </li>\n                <li>\n                  <a href={`${site_url.laf_github}/releases`} target=\"_blank\" rel=\"noreferrer\">\n                    {t(\"HomePage.Footer.item1_3\")}\n                  </a>\n                </li>\n                <li>\n                  <a\n                    href=\"https://marketplace.visualstudio.com/items?itemName=NightWhite.laf-assistant\"\n                    target=\"_blank\"\n                    rel=\"noreferrer\"\n                  >\n                    {t(\"HomePage.Footer.item1_4\")}\n                  </a>\n                </li>\n                <li>\n                  <a href=\"https://github.com/labring/sealos\" target=\"_blank\" rel=\"noreferrer\">\n                    {t(\"HomePage.Footer.item1_2\")}\n                  </a>\n                </li>\n              </ul>\n              <div className=\"w-1/2 text-lg\">\n                <div\n                  className={darkMode ? \"leading-8 text-lafWhite-700\" : \"leading-8 text-[#5E6987]\"}\n                >\n                  {t(\"HomePage.Footer.support\")}\n                </div>\n                <ul className=\"leading-8\">\n                  <li>\n                    <a href={`${site_url.laf_github}/issues`} target=\"_blank\" rel=\"noreferrer\">\n                      {t(\"HomePage.Footer.item3_1\")}\n                    </a>\n                  </li>\n\n                  {siteSettings.laf_forum_url?.value && (\n                    <li>\n                      <a href={siteSettings.laf_forum_url?.value} target=\"_blank\" rel=\"noreferrer\">\n                        {t(\"HomePage.Footer.item3_2\")}\n                      </a>\n                    </li>\n                  )}\n\n                  {siteSettings.laf_about_us_url?.value && (\n                    <li>\n                      <a\n                        href={siteSettings.laf_about_us_url?.value}\n                        target=\"_blank\"\n                        rel=\"noreferrer\"\n                      >\n                        {t(\"HomePage.Footer.item3_3\")}\n                      </a>\n                    </li>\n                  )}\n                </ul>\n              </div>\n            </div>\n            <div className=\"w-1/2 text-lg\">\n              <div\n                className={darkMode ? \"leading-8 text-lafWhite-700\" : \"leading-8 text-[#5E6987]\"}\n              >\n                {t(\"HomePage.Footer.developer\")}\n              </div>\n\n              <ul className=\"leading-8\">\n                <li>\n                  <a\n                    href={`${site_url.laf_github}/tree/main/deploy`}\n                    target=\"_blank\"\n                    rel=\"noreferrer\"\n                  >\n                    {t(\"HomePage.Footer.item2_1\")}\n                  </a>\n                </li>\n                <li>\n                  <a href=\"https://api.laf.dev/\" target=\"_blank\" rel=\"noreferrer\">\n                    {t(\"HomePage.Footer.item2_2\")}\n                  </a>\n                </li>\n                <li>\n                  <a href={site_url.laf_github} target=\"_blank\" rel=\"noreferrer\">\n                    {t(\"HomePage.Footer.item2_4\")}\n                  </a>\n                </li>\n                {siteSettings.laf_doc_url?.value && (\n                  <li>\n                    <a href={siteSettings.laf_doc_url?.value} target=\"_blank\" rel=\"noreferrer\">\n                      {t(\"HomePage.Footer.item2_5\")}\n                    </a>\n                  </li>\n                )}\n              </ul>\n            </div>\n          </div>\n        </div>\n\n        <div className=\"flex flex-col gap-2 py-6 \">\n          <div className={darkMode ? \"text-lg text-lafWhite-700\" : \"text-lg text-[#3C455D]\"}>\n            laf. all rights reserved. © {new Date().getFullYear()}\n            <div\n              dangerouslySetInnerHTML={{\n                __html: siteSettings.site_footer?.value || \"\",\n              }}\n            />\n          </div>\n          <div className=\"flex \">\n            {siteSettings.laf_wechat_url?.value && (\n              <a href={siteSettings.laf_wechat_url?.value} target=\"_blank\" rel=\"noreferrer\">\n                <WechatIcon fontSize={28} color={darkMode ? \"#F6F8F9\" : \"#3C455D\"} />\n              </a>\n            )}\n            {siteSettings.laf_forum_url?.value && (\n              <a href={siteSettings.laf_forum_url?.value} target=\"_blank\" rel=\"noreferrer\">\n                <ForumIcon fontSize={28} color={darkMode ? \"#F6F8F9\" : \"#3C455D\"} />\n              </a>\n            )}\n            {siteSettings.laf_discord_url?.value && (\n              <a href={siteSettings.laf_discord_url?.value} target=\"_blank\" rel=\"noreferrer\">\n                <DiscordIcon fontSize={28} color={darkMode ? \"#F6F8F9\" : \"#3C455D\"} />\n              </a>\n            )}\n          </div>\n          <div>\n            <Status />\n          </div>\n        </div>\n      </div>\n    </>\n  );\n};\n\nexport default Footer;\n"
  },
  {
    "path": "web/src/pages/homepage/hero.tsx",
    "content": "import React, { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\n\nimport { Routes } from \"@/constants\";\n\nimport Video from \"./video\";\n\ntype Props = {};\n\nconst Hero = (props: Props) => {\n  const [play, setPlay] = useState(false);\n  const { t } = useTranslation();\n\n  return (\n    <>\n      <div className=\"flex h-auto flex-col items-center overflow-hidden pt-36 lg:h-[720px] lg:pt-44\">\n        <h1 className=\"text-4xl lg:text-6xl\">{t(`HomePage.HomePage.slogan`)}</h1>\n        <p className=\"z-10 mt-8 px-10 text-center text-2xl lg:mt-5 lg:w-[600px]\">\n          {t(`HomePage.HomePage.content1`)}\n          <br />\n          {t(`HomePage.HomePage.content2`)}\n        </p>\n\n        <div className=\"z-10 mt-8 lg:mt-6\">\n          <Link\n            to={Routes.dashboard}\n            className=\"bg-primary  z-40 flex h-[48px] w-[144px] items-center justify-center rounded-md text-[16px] text-white hover:active:bg-[#00AFA3]\"\n          >\n            {t(`HomePage.HomePage.start`)}\n          </Link>\n        </div>\n        <div className=\"absolute top-[344px] mx-auto hidden h-[375px] w-[968px] justify-center bg-[url('/homepage/videobg.png')] bg-contain bg-center bg-no-repeat lg:flex\">\n          <img\n            src=\"/homepage/play.svg\"\n            alt=\"play\"\n            className=\"absolute top-[200px] z-10 hover:cursor-pointer \"\n            onClick={() => setPlay(true)}\n          />\n        </div>\n        <img\n          className=\"h-[200px] w-[350px] object-cover hover:cursor-pointer lg:hidden\"\n          src=\"/homepage/videomobile.png\"\n          alt=\"video\"\n          onClick={() => setPlay(true)}\n        />\n\n        <div\n          className={\n            play\n              ? \"fixed inset-0 top-0 z-50 flex h-full w-full items-center justify-center bg-gray-600 bg-opacity-50\"\n              : \" hidden\"\n          }\n          id=\"my-modal\"\n        >\n          <div className={play ? \"relative top-10 mx-auto\" : \"hidden\"}>\n            <div className=\"relative mx-auto w-3/4\">\n              <button\n                className=\"absolute right-0 top-0 z-20 pr-2 pt-2\"\n                onClick={() => setPlay(false)}\n              >\n                <img\n                  width={24}\n                  height={24}\n                  className=\"rounded-2xl bg-black hover:cursor-pointer hover:bg-gray-600\"\n                  src=\"/homepage/cancel_btn.svg\"\n                  alt=\"cancel_btn\"\n                />\n              </button>\n              {play ? <Video /> : null}\n            </div>\n          </div>\n        </div>\n      </div>\n    </>\n  );\n};\n\nexport default Hero;\n"
  },
  {
    "path": "web/src/pages/homepage/homepage.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n.homepage {\n  -webkit-font-smoothing: auto;\n}\n\n@layer base {\n  h1 {\n    @apply text-center font-bold;\n  }\n  h2 {\n    @apply text-center text-3xl font-semibold;\n  }\n  h3 {\n    @apply text-3xl font-medium;\n  }\n}\n\n.bg-card {\n  background-color: #f9f9f9;\n}\n\n.bg-primary {\n  background-color: #00beb1;\n}\n\na:hover {\n  opacity: 0.8;\n}\n"
  },
  {
    "path": "web/src/pages/homepage/index.tsx",
    "content": "import Ability from \"./ability\";\nimport Choice from \"./choice\";\nimport Contact from \"./contact\";\nimport Footer from \"./footer\";\nimport Hero from \"./hero\";\nimport JoinUs from \"./joinus\";\nimport Navbar from \"./navbar\";\n\nimport \"./homepage.css\";\n\nimport useInviteCode from \"@/hooks/useInviteCode\";\n\nexport default function Home() {\n  useInviteCode();\n\n  return (\n    <div style={{ fontSize: \"16px\" }} className=\"homepage\">\n      <Navbar />\n      <div className=\"flex items-center justify-center\">\n        <div className=\"flex flex-col lg:mx-[48px] lg:max-w-[1200px]\">\n          <Hero />\n          <Ability />\n          <Choice />\n          <JoinUs />\n          <Contact />\n        </div>\n      </div>\n      <Footer />\n    </div>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/homepage/joinus.tsx",
    "content": "import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport useSiteSettingStore from \"../siteSetting\";\n\nimport Circle from \"./circle\";\n\ntype Props = {};\n\nconst JoinUs = (props: Props) => {\n  const { t } = useTranslation();\n  const { siteSettings } = useSiteSettingStore();\n  return (\n    <div className=\"mt-32\">\n      <div className=\"relative mb-[120px] hidden h-auto w-full rounded-3xl  bg-[url('/homepage/joinbg.svg')] bg-cover bg-repeat lg:flex lg:flex-row\">\n        <div className=\"m-16 w-2/5\">\n          <div className=\" mb-4 text-5xl leading-none text-white \"> {t(\"HomePage.Join.title\")}</div>\n          <div className=\"mb-6 text-5xl text-white\">{t(\"HomePage.Join.subtitle\")}</div>\n          <p className=\"mb-6 font-thin text-white\">{t(\"HomePage.Join.content\")}</p>\n\n          <div className=\"flex justify-start gap-4\">\n            <a href={siteSettings.laf_discord_url?.value} target=\"_blank\" rel=\"noreferrer\">\n              <div className=\"flex h-12 w-36 flex-row items-center\t justify-center gap-2 rounded-md border border-blue-200 border-opacity-30 bg-gradient-to-r from-[#394DFF1A] to-[#66E3FF33]\">\n                <img src=\"/homepage/discord.svg\" alt=\"discord\" />\n                <p className=\"text-white\">Discord</p>\n              </div>\n            </a>\n            <a href={siteSettings.laf_wechat_url?.value} target=\"_blank\" rel=\"noreferrer\">\n              <div className=\"flex h-12 w-36 flex-row items-center\t justify-center gap-2 rounded-md border border-green-200 border-opacity-30 bg-gradient-to-r from-[#2CE25E1A] to-[#1DFFD61A]\">\n                <img src=\"/homepage/wechat_02.svg\" alt=\"wechat\" />\n                <p className=\"text-white\">{t(\"HomePage.Join.WeChat\")}</p>\n              </div>\n            </a>\n            <a href={siteSettings.laf_forum_url?.value} target=\"_blank\" rel=\"noreferrer\">\n              <div className=\"flex h-12 w-36 flex-row items-center justify-center gap-2 rounded-md border border-blue-300 border-opacity-30 bg-gradient-to-r from-[#0B9DFF1A] to-[#4FC67E1A]\">\n                <img src=\"/homepage/forum.svg\" alt=\"forum\" />\n                <p className=\"text-white\">{t(\"HomePage.Join.forum\")}</p>\n              </div>\n            </a>\n          </div>\n        </div>\n        <div className=\"h-[440px] w-1/2\">\n          <img\n            className=\"absolute right-[255px] top-[198px] h-[64px] w-[64px]\"\n            src=\"/homepage/logo_icon.svg\"\n            alt=\"logo\"\n          />\n          <div className=\"absolute right-72 top-48\">\n            <Circle />\n          </div>\n          <div className=\"absolute right-[450px] top-80 h-10 w-10 rounded-full bg-red-500 object-cover opacity-20\"></div>\n          <div className=\"absolute right-[600px] top-24 h-4 w-4 rounded-full bg-green-600 object-cover opacity-20\"></div>\n          <div className=\"absolute right-[100px] top-36 h-4 w-4 rounded-full bg-yellow-600 object-cover opacity-20\"></div>\n          <div className=\"absolute right-[420px] top-28 h-6 w-6 rounded-full bg-yellow-600 object-cover opacity-20\"></div>\n\n          <img\n            className=\"hover:border-primary absolute right-32 top-64 h-12 w-12 rounded-full border object-cover\"\n            src=\"/homepage/p3.png\"\n            alt=\"p3\"\n          />\n          <img\n            className=\"hover:border-primary absolute right-48 top-28 h-12 w-12 rounded-full border object-cover\"\n            src=\"/homepage/p4.png\"\n            alt=\"p4\"\n          />\n          <img\n            className=\"hover:border-primary absolute right-80 top-32 h-12 w-12 rounded-full border object-cover\"\n            src=\"/homepage/p1.png\"\n            alt=\"p1\"\n          />\n          <img\n            className=\"hover:border-primary absolute right-72 top-72 h-12 w-12 rounded-full border object-cover\"\n            src=\"/homepage/p2.png\"\n            alt=\"p2\"\n          />\n          <img\n            className=\"hover:border-primary absolute right-[400px] top-48 h-12 w-12 rounded-full border object-cover\"\n            src=\"/homepage/p5.png\"\n            alt=\"p5\"\n          />\n        </div>\n      </div>\n      <div className=\"relative mx-[16px] flex h-[650px] flex-col items-center rounded-3xl bg-[url('/homepage/bg.png')] bg-cover bg-repeat lg:hidden\">\n        <div className=\"mb-4 mt-12 text-center text-4xl text-white\">{t(\"HomePage.Join.title\")}</div>\n        <div className=\"mb-4 text-4xl text-white\">{t(\"HomePage.Join.subtitle\")}</div>\n        <p className=\"mx-4 mb-8 text-center font-thin text-white\">{t(\"HomePage.Join.content\")}</p>\n        <div className=\"flex justify-start gap-4\">\n          <a href={siteSettings.laf_wechat_url?.value} target=\"_blank\" rel=\"noreferrer\">\n            <img className=\"w-6\" src=\"/homepage/wechat_01.svg\" alt=\"wechat\" />\n          </a>\n          <a href={siteSettings.laf_forum_url?.value}>\n            <img className=\"w-6\" src=\"/homepage/forum1.svg\" alt=\"forum1\" />\n          </a>\n          <a href={siteSettings.laf_discord_url?.value} target=\"_blank\" rel=\"noreferrer\">\n            <img className=\"w-6\" src=\"/homepage/discord_2.svg\" alt=\"discord\" />\n          </a>\n        </div>\n        <div className=\"right-42 absolute bottom-48 w-[400px]\">\n          <div className=\"absolute bottom-[-50px] right-[150px] h-[100px]  w-[100px] rounded-full border border-white opacity-20\" />\n          <div className=\"absolute bottom-[-75px] right-[125px] h-[150px] w-[150px] rounded-full border border-gray-400 opacity-20\" />\n          <div className=\"absolute bottom-[-125px] right-[75px] h-[250px] w-[250px] rounded-full border border-gray-400 opacity-40\" />\n          <div className=\"absolute bottom-[-100px] right-[100px] h-[200px] w-[200px] rounded-full border border-gray-500 opacity-40\" />\n          <img\n            className=\"absolute bottom-[-30px] right-[165px] h-[64px] w-[64px]\"\n            src=\"/homepage/logo_icon.svg\"\n            alt=\"logo\"\n          />\n          <div className=\"absolute right-[280px] top-[120px] h-10 w-10 rounded-full bg-red-500 object-cover opacity-20\"></div>\n          <div className=\"absolute right-[50px] top-[-100px] h-4 w-4 rounded-full bg-green-600 object-cover opacity-20\"></div>\n          <div className=\"absolute right-[100px] top-36 h-4 w-4 rounded-full bg-yellow-600 object-cover opacity-20\"></div>\n          <div className=\"absolute right-[320px] top-[-150px] h-6 w-6 rounded-full bg-yellow-600 object-cover opacity-20\"></div>\n          <img\n            className=\"hover:border-primary absolute bottom-[-100px]  right-[100px] h-10 w-10 rounded-full border object-cover\"\n            src=\"/homepage/p3.png\"\n            alt=\"p3\"\n          />\n          <img\n            className=\"hover:border-primary absolute bottom-[-50px]  right-[250px] h-10 w-10 rounded-full border object-cover\"\n            src=\"/homepage/p2.png\"\n            alt=\"p2\"\n          />\n          <img\n            className=\"hover:border-primary absolute bottom-[-120px]  right-[190px] h-10  w-10 rounded-full border object-cover\"\n            src=\"/homepage/p1.png\"\n            alt=\"p1\"\n          />\n          <img\n            className=\"hover:border-primary absolute bottom-[20px]  right-[80px] h-10  w-10 rounded-full border object-cover\"\n            src=\"/homepage/p4.png\"\n            alt=\"p4\"\n          />\n          <img\n            className=\"hover:border-primary absolute bottom-[40px]  right-[250px] h-10 w-10 rounded-full border object-cover\"\n            src=\"/homepage/p5.png\"\n            alt=\"p5\"\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default JoinUs;\n"
  },
  {
    "path": "web/src/pages/homepage/navbar.tsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\nimport { useColorMode } from \"@chakra-ui/react\";\nimport axios from \"axios\";\nimport clsx from \"clsx\";\n\nimport { GithubIcon, MenuIcon } from \"@/components/CommonIcon\";\nimport { COLOR_MODE, Routes, site_url } from \"@/constants\";\n\nimport LanguageSwitch from \"../../components/LanguageSwitch\";\nimport useSiteSettingStore from \"../siteSetting\";\n\nconst Navbar = () => {\n  const [showBanner, setShowBanner] = useState(false);\n  const [toggleSidebar, setToggleSidebar] = useState(false);\n  const [stars, setStars] = useState<string | null>(null);\n  const { t } = useTranslation();\n  const { siteSettings } = useSiteSettingStore();\n  const navList = [\n    {\n      text: t(\"HomePage.NavBar.docs\"),\n      ref: siteSettings.laf_doc_url?.value,\n    },\n    {\n      text: t(\"HomePage.NavBar.forum\"),\n      ref: siteSettings.laf_forum_url?.value,\n    },\n    {\n      text: t(\"HomePage.NavBar.contact\"),\n      ref: siteSettings.laf_business_url?.value,\n    },\n  ];\n  const { colorMode } = useColorMode();\n  const darkMode = colorMode === COLOR_MODE.dark;\n\n  useEffect(() => {\n    const expirationTime = 24 * 60 * 60 * 1000;\n    const lastCanceledTime: string | null = localStorage.getItem(\"lastCanceledTime\");\n    const now = new Date().getTime();\n    // console.log(\"now:\",now,\"last\",lastCanceledTime);\n    //如果本地已经存有上次的删除时间，且小于24h，则不显示banner\n    if (lastCanceledTime && now - Number(lastCanceledTime) < expirationTime) {\n      setShowBanner(false);\n    } else {\n      //没有本地的删除时间，或者已经大于24h，显示banner\n      setShowBanner(true);\n    }\n  }, []);\n\n  useEffect(() => {\n    (async () => {\n      const axiosRes = await axios.get(\n        \"https://img.shields.io/github/stars/labring/laf?style=plastic\",\n      );\n      const str = axiosRes.data;\n      const reg = /(\\d+(\\.\\d+)?)(k)/;\n      const match = str.match(reg);\n\n      if (match) {\n        const matchedText = match[1];\n        setStars(`${matchedText}K`);\n      } else {\n        console.log(\"No match found\");\n      }\n    })();\n\n    return () => {};\n  }, []);\n\n  return (\n    <div className=\"flex flex-col items-center justify-center\">\n      <div className={showBanner ? \"fixed top-0  z-40 block\" : \"hidden\"}>\n        <div className=\"flex h-12 w-screen items-center justify-center bg-[url('/homepage/banner.png')] bg-center lg:px-32\">\n          <a\n            className=\"whitespace-nowrap text-[6px] text-white lg:text-xl\"\n            target=\"_blank\"\n            href={site_url.laf_github}\n            rel=\"noreferrer\"\n          >\n            {t(\"HomePage.NavBar.title\")}\n          </a>\n        </div>\n        <img\n          className=\"absolute right-4 top-3 z-40 hover:cursor-pointer lg:right-36 \"\n          src=\"/homepage/cancel_btn.svg\"\n          alt={\"cancel\"}\n          onClick={() => {\n            setShowBanner(false);\n            localStorage.setItem(\"lastCanceledTime\", new Date().getTime().toString());\n          }}\n        />\n      </div>\n      <div\n        className={\n          showBanner\n            ? clsx(\"fixed top-12 z-40  hidden w-full justify-center px-28 py-4 lg:flex\", {\n                \"bg-lafDark-100\": darkMode,\n                \"bg-lafWhite-600\": !darkMode,\n              })\n            : clsx(\"fixed top-0 z-40  hidden w-full justify-center px-28 py-4 lg:flex\", {\n                \"bg-lafDark-100\": darkMode,\n                \"bg-lafWhite-600\": !darkMode,\n              })\n        }\n      >\n        <div className=\"flex w-full max-w-[1200px] justify-between\">\n          <div className=\"flex items-center\">\n            <div className=\"flex items-center space-x-2\">\n              <img\n                src={darkMode ? \"sealos-logo.svg\" : \"sealos-logo.svg\"}\n                className=\"h-8 w-auto\"\n                alt=\"logo\"\n              />\n              <span className=\"text-lg\"> {t(\"app.logo\")}</span>\n            </div>\n\n            {navList.map((item, index) => {\n              if (!item.ref) return null;\n              return (\n                <a\n                  key={index}\n                  target={item.ref.startsWith(\"http\") ? \"_blank\" : \"_self\"}\n                  href={item.ref}\n                  className=\"ml-10\"\n                  rel=\"noreferrer\"\n                >\n                  {item.text}\n                </a>\n              );\n            })}\n          </div>\n          <div className=\"flex w-80 items-center justify-evenly\">\n            {stars ? (\n              <a href={site_url.laf_github} target=\"_blank\" className=\"flex\" rel=\"noreferrer\">\n                <GithubIcon\n                  className=\"mr-1\"\n                  fontSize={24}\n                  color={darkMode ? \"#F6F8F9\" : \"#3C455D\"}\n                />\n                {stars}\n              </a>\n            ) : null}\n            <div className=\"hover:opacity-75\">\n              <LanguageSwitch className=\"text-xl !font-normal\" size=\"24px\" color=\"#1A202C\" />\n            </div>\n            <div>\n              <Link\n                to={Routes.dashboard}\n                className=\"bg-primary text-sm rounded px-5 py-2 text-white\"\n              >\n                {t(\"HomePage.NavBar.start\")}\n              </Link>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div\n        className={\n          showBanner\n            ? clsx(\"fixed top-12 z-40 flex w-full justify-between px-8 py-4 lg:hidden\", {\n                \"bg-lafDark-100\": darkMode,\n                \"bg-lafWhite-600\": !darkMode,\n              })\n            : clsx(\"fixed top-0 z-40 flex w-full justify-between px-8 py-4 lg:hidden\", {\n                \"bg-lafDark-100\": darkMode,\n                \"bg-lafWhite-600\": !darkMode,\n              })\n        }\n      >\n        <img className=\"h-10\" src={darkMode ? \"logo_light.png\" : \"logo_text.png\"} alt=\"logo\" />\n\n        <MenuIcon\n          fontSize={32}\n          color={darkMode ? \"#F6F8F9\" : \"#3C455D\"}\n          onClick={() => setToggleSidebar(!toggleSidebar)}\n        />\n      </div>\n      {toggleSidebar && (\n        <div\n          id=\"dropdown\"\n          className={\n            showBanner\n              ? clsx(\n                  \"fixed right-4 top-28 z-40 block w-28 divide-y divide-gray-100 rounded-lg shadow lg:hidden\",\n                  {\n                    \"bg-lafDark-300 text-lafWhite-600\": darkMode,\n                    \"bg-lafWhite-600 text-gray-700\": !darkMode,\n                  },\n                )\n              : clsx(\n                  \"fixed right-4 top-16 z-40 block w-28 divide-y divide-gray-100 rounded-lg shadow lg:hidden\",\n                  {\n                    \"bg-lafDark-300 text-lafWhite-600\": darkMode,\n                    \"bg-lafWhite-600 text-gray-700\": !darkMode,\n                  },\n                )\n          }\n        >\n          <ul\n            className=\"text-sm divide-y divide-gray-100 py-2\"\n            aria-labelledby=\"dropdownDefaultButton\"\n          >\n            <div>\n              {navList.map((item, index) => {\n                if (!item.ref) return null;\n                return (\n                  <li key={index}>\n                    <a\n                      href={item.ref}\n                      target={item.ref.startsWith(\"http\") ? \"_blank\" : \"_self\"}\n                      className={\n                        darkMode\n                          ? \"block px-4 py-2 hover:bg-gray-900\"\n                          : \"block px-4 py-2 hover:bg-gray-100\"\n                      }\n                      rel=\"noreferrer\"\n                    >\n                      {item.text}\n                    </a>\n                  </li>\n                );\n              })}\n            </div>\n            <div>\n              {stars ? (\n                <a\n                  href={site_url.laf_github}\n                  className={\n                    darkMode\n                      ? \"flex px-4 py-2 hover:bg-gray-900\"\n                      : \"flex px-4 py-2 hover:bg-gray-100\"\n                  }\n                >\n                  <GithubIcon fontSize={24} color={darkMode ? \"#F6F8F9\" : \"#3C455D\"} />\n                  {stars}\n                </a>\n              ) : null}\n\n              <div\n                className={\n                  darkMode ? \"flex px-4 py-2 hover:bg-gray-900\" : \"flex px-4 py-2 hover:bg-gray-100\"\n                }\n              >\n                <LanguageSwitch className=\"text-[24px]\" />\n              </div>\n            </div>\n          </ul>\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default Navbar;\n"
  },
  {
    "path": "web/src/pages/homepage/smallcircle.tsx",
    "content": "import React from \"react\";\nimport { motion } from \"framer-motion\";\n\ntype Props = {};\n\nconst smallcircle = (props: Props) => {\n  return (\n    <motion.div\n      initial={{\n        opacity: 0,\n      }}\n      animate={{\n        scale: [1, 1.5, 1, 1],\n        opacity: [0.1, 0.2, 0.4, 0.8, 0.1, 1.0],\n        borderRadius: [\"20%\", \"20%\", \"50%\", \"88%\", \"20%\"],\n      }}\n      transition={{\n        duration: 2.5,\n      }}\n      className=\"relative mt-10 flex items-center justify-center\"\n    >\n      <div className=\"absolute h-[100px] w-[100px] animate-ping rounded-full border border-gray-400\" />\n      <div className=\"absolute h-[150px] w-[150px] rounded-full border border-gray-400\" />\n      <div className=\"absolute h-[250px] w-[250px] rounded-full border border-gray-400\" />\n      <div className=\"absolute h-[200px] w-[200px] animate-pulse rounded-full border border-gray-400\" />\n      <div className=\"absolute h-[150px] w-[150px] animate-pulse rounded-full border border-gray-400\" />\n    </motion.div>\n  );\n};\n\nexport default smallcircle;\n"
  },
  {
    "path": "web/src/pages/homepage/status.module.scss",
    "content": ".breathing-gradient {\n  background: #5cdd8b;\n  display: inline-block;\n  border-radius: 50rem;\n  width: 5px;\n  height: 16px;\n  margin-right: 2px;\n}\n\n@keyframes breathing {\n  0% {\n    opacity: 0.6;\n  }\n  50% {\n    opacity: 1;\n  }\n  100% {\n    opacity: 0.6;\n  }\n}\n"
  },
  {
    "path": "web/src/pages/homepage/status.tsx",
    "content": "import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport useSiteSettingStore from \"../siteSetting\";\n\nimport styles from \"./status.module.scss\";\n\nexport default function Status() {\n  const { t } = useTranslation();\n  const { siteSettings } = useSiteSettingStore();\n  return (\n    <a\n      target=\"_blank\"\n      href={siteSettings.laf_status_url?.value}\n      className={\"mr-6 flex items-center whitespace-nowrap \"}\n      rel=\"noreferrer\"\n    >\n      <span className=\"mr-2 text-base\">{t(\"ServerStatus\")}</span>\n      {Array.from({ length: 8 }).map((item, index) => {\n        return <div key={index} className={styles[\"breathing-gradient\"]}></div>;\n      })}\n    </a>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/homepage/video.tsx",
    "content": "import { site_url } from \"@/constants\";\n\nexport default function Video() {\n  return (\n    <>\n      <video autoPlay controls>\n        <source src={site_url.laf_index_video} type=\"video/mp4\" />\n      </video>\n    </>\n  );\n}\n"
  },
  {
    "path": "web/src/pages/siteSetting.ts",
    "content": "import { create } from \"zustand\";\nimport { devtools, persist } from \"zustand/middleware\";\nimport { immer } from \"zustand/middleware/immer\";\n\nimport { TSetting } from \"@/apis/typing\";\nimport { SettingControllerGetSettings } from \"@/apis/v1/settings\";\n\ntype SITE_KEY =\n  | \"site_footer\"\n  | \"id_verify\"\n  | \"site_url\"\n  | \"ai_pilot_url\"\n  | \"ai_complete_url\"\n  | \"laf_forum_url\"\n  | \"laf_business_url\"\n  | \"laf_discord_url\"\n  | \"laf_wechat_url\"\n  | \"laf_status_url\"\n  | \"laf_doc_url\"\n  | \"laf_about_us_url\"\n  | \"enable_web_promo_page\"\n  | \"sealaf_notification\";\n\nexport type SiteSettings = {\n  // eslint-disable-next-line no-unused-vars\n  [key in SITE_KEY]?: TSetting;\n};\ntype State = {\n  siteSettings: SiteSettings;\n  getSiteSettings: () => void;\n};\n\nconst useSiteSettingStore = create<State>()(\n  devtools(\n    persist(\n      immer((set, get) => ({\n        siteSettings: {},\n        getSiteSettings: async () => {\n          const settings = await SettingControllerGetSettings({});\n          set((state) => {\n            // convert array to object\n            state.siteSettings = settings.data.reduce(\n              (acc: { [x: string]: TSetting }, cur: TSetting) => {\n                acc[cur.key] = cur;\n                return acc;\n              },\n              {} as Record<string, TSetting>,\n            );\n          });\n        },\n      })),\n\n      {\n        name: \"laf_site_settings\",\n        version: 1,\n      },\n    ),\n  ),\n);\n\nexport default useSiteSettingStore;\n"
  },
  {
    "path": "web/src/routes/index.tsx",
    "content": "import { lazy, Suspense } from \"react\";\nimport { useRoutes } from \"react-router-dom\";\nimport { wrapUseRoutes } from \"@sentry/react\";\n\nimport AuthLayout from \"@/layouts/Auth\";\nimport BasicLayout from \"@/layouts/Basic\";\nimport FunctionLayout from \"@/layouts/Function\";\nimport TemplateLayout from \"@/layouts/Template\";\nimport useSiteSettingStore, { SiteSettings } from \"@/pages/siteSetting\";\n\nconst route404 = {\n  path: \"*\",\n  element: () => import(\"@/pages/404\"),\n};\n\nconst routes = [\n  {\n    path: \"/login\",\n    element: <AuthLayout />,\n    auth: false,\n    children: [\n      {\n        path: \"/login\",\n        element: () => import(\"@/pages/auth/signin\"),\n      },\n    ],\n  },\n  {\n    path: \"/signup\",\n    element: <AuthLayout />,\n    auth: false,\n    children: [\n      {\n        path: \"/signup\",\n        element: () => import(\"@/pages/auth/signup\"),\n      },\n    ],\n  },\n  {\n    path: \"/reset-password\",\n    element: <AuthLayout />,\n    auth: false,\n    children: [\n      {\n        path: \"/reset-password\",\n        element: () => import(\"@/pages/auth/reset-password\"),\n      },\n    ],\n  },\n  {\n    path: \"/bind\",\n    auth: false,\n    children: [\n      {\n        path: \"/bind/github\",\n        element: () => import(\"@/pages/auth/bind/BindGitHub\"),\n      },\n    ],\n  },\n  {\n    path: \"/\",\n    children: [\n      {\n        path: \"/\",\n        element: () => import(\"@/pages/homepage\"),\n        index: true,\n      },\n      {\n        path: \"/dashboard\",\n        element: <BasicLayout />,\n        auth: true,\n        children: [\n          {\n            path: \"/dashboard\",\n            element: () => import(\"@/pages/home/index\"),\n          },\n        ],\n      },\n      {\n        path: \"/app\",\n        element: <FunctionLayout />,\n        auth: true,\n        children: [\n          {\n            path: \"/app/:appid/:pageId/:id?/*\",\n            element: () => import(\"@/pages/app/index\"),\n          },\n        ],\n      },\n      {\n        path: \"/collaboration\",\n        children: [\n          {\n            path: \"/collaboration/join\",\n            element: () => import(\"@/pages/app/collaboration/Invited/index\"),\n          },\n        ],\n      },\n      {\n        path: \"/market/templates\",\n        element: <TemplateLayout />,\n        auth: true,\n        children: [\n          {\n            path: \"/market/templates/:templateId?\",\n            element: () => import(\"@/pages/functionTemplate\"),\n          },\n        ],\n      },\n      {\n        path: \"/market/templates/:templateId/edit\",\n        element: <TemplateLayout />,\n        auth: true,\n        children: [\n          {\n            path: \"/market/templates/:templateId/edit\",\n            element: () => import(\"@/pages/functionTemplate/CreateFuncTemplate\"),\n          },\n        ],\n      },\n      {\n        path: \"/market/templates/create\",\n        element: <TemplateLayout />,\n        auth: true,\n        children: [\n          {\n            path: \"/market/templates/create\",\n            element: () => import(\"@/pages/functionTemplate/CreateFuncTemplate\"),\n          },\n        ],\n      },\n      {\n        path: \"/403\",\n        element: () => import(\"@/pages/403\"),\n      },\n      route404,\n    ],\n  },\n];\n\nfunction LazyElement(props: any) {\n  const { importFunc } = props;\n  const LazyComponent = lazy(importFunc);\n  return (\n    <Suspense fallback={null}>\n      <LazyComponent />\n    </Suspense>\n  );\n}\n\nfunction dealRoutes(routesArr: any, siteSettings: SiteSettings) {\n  if (routesArr && Array.isArray(routesArr) && routesArr.length > 0) {\n    if (siteSettings.enable_web_promo_page?.value === \"false\") {\n      for (let i = 0; i < routesArr.length; i++) {\n        const route = routesArr[i];\n        if (route.index) {\n          routesArr[i] = {\n            path: \"/\",\n            element: <BasicLayout />,\n            auth: true,\n            children: [\n              {\n                path: \"/\",\n                element: () => import(\"@/pages/home/index\"),\n              },\n            ],\n          };\n        }\n      }\n    }\n\n    routesArr.forEach((route) => {\n      if (route.element && typeof route.element == \"function\") {\n        const importFunc = route.element;\n        route.element = <LazyElement importFunc={importFunc} />;\n      }\n      if (route.children) {\n        dealRoutes(route.children, siteSettings);\n      }\n    });\n  }\n}\n\nfunction RouteElement() {\n  const { siteSettings } = useSiteSettingStore();\n  const useSentryRoutes = wrapUseRoutes(useRoutes);\n\n  dealRoutes(routes, siteSettings);\n  const element = useSentryRoutes(routes as any);\n  return element;\n}\n\nexport default RouteElement;\n"
  },
  {
    "path": "web/src/types/index.d.ts",
    "content": "declare module \"vscode/service-override/files\";\n"
  },
  {
    "path": "web/src/utils/.gitkeep",
    "content": ""
  },
  {
    "path": "web/src/utils/format.ts",
    "content": "import dayjs from \"dayjs\";\nimport { t } from \"i18next\";\n\nexport function formatDate(\n  date?: string | number | Date | dayjs.Dayjs | null | undefined,\n  format = \"YYYY-MM-DD HH:mm\",\n) {\n  return dayjs(date).format(format);\n}\n\nexport function formatSize(size: number, fixedNumber = 2) {\n  const units = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n  let i = 0;\n  while (size >= 1024) {\n    size /= 1024;\n    i++;\n  }\n  return size.toFixed(fixedNumber) + \" \" + units[i];\n}\n\nexport function formateType(name: string | undefined) {\n  const nameList = name?.split(\".\");\n  if (nameList?.length && nameList.length === 2) {\n    return nameList[1];\n  } else {\n    return \"file\";\n  }\n}\n\nexport function formatCapacity(capacity: string) {\n  const num = capacity.split(\"Gi\")[0];\n  return parseInt(num, 10);\n}\n\nexport function formatDateOption(): { label: string; value: number | string }[] {\n  const optionDay = [7, 30, 60, 90];\n  const option: { label: string; value: string | number }[] = optionDay.map((item) => {\n    return {\n      label: `${item} ${t(\"Days\")}`,\n      value: item * 24 * 60 * 60,\n    };\n  });\n  option.push({ label: t(\"Custom\"), value: \"custom\" });\n  return option;\n}\n\n// value : Second\nexport function addDateByValue(date: Date, value: number) {\n  let newNum = date.setTime(date.getTime() + value * 1000);\n  return new Date(newNum);\n}\n\nexport function isExitInList(targetKey: string, targetValue: any, list: any[] | undefined) {\n  const indexList: number[] = [];\n  (list || []).forEach((item: any, index: number) => {\n    if (item[targetKey] === targetValue) {\n      indexList.push(index);\n    }\n  });\n  return indexList;\n}\n\nexport function formatLimitCPU(cpu: number) {\n  return cpu / 1000 + t(\"Unit.CPU\");\n}\n\nexport function formatLimitMemory(memory: number) {\n  return memory >= 1024 ? memory / 1024 + t(\"Unit.GB\") : memory + t(\"Unit.MB\");\n}\n\nexport function formatLimitCapacity(capacity: number) {\n  return capacity / 1024 + t(\"Unit.GB\");\n}\n\nexport function formatLimitTraffic(traffic: number) {\n  return traffic / 1024;\n}\n\nexport function uniformCPU(cpu: number) {\n  return cpu;\n}\n\nexport function uniformMemory(memory: number) {\n  return memory / 1024 / 1024;\n}\n\nexport function uniformCapacity(capacity: number) {\n  return capacity / 1024 / 1024;\n}\n\nexport function uniformStorage(Storage: number) {\n  return Storage / 1024 / 1024;\n}\n\nexport function formatPort(port: number | undefined) {\n  return port === 80 || port === 443 ? \"\" : `:${port}`;\n}\n\nexport function formatPrice(price?: number) {\n  return price ? \"¥\" + (price / 100).toFixed(2) : \"¥0.00\";\n}\n\nexport function formatOriginalPrice(price?: number, fixedNumber?: number) {\n  return price ? \"¥\" + price.toFixed(fixedNumber || 2) : \"¥0.00\";\n}\n\nexport function convertMoney(money: number) {\n  return money * 100;\n}\n\nexport function hidePhoneNumber(phone: string) {\n  return phone.replace(/(\\d{3})\\d{4}(\\d{4})/, \"$1****$2\");\n}\n\nexport function changeURL(param: string) {\n  const currentURL = window.location.pathname;\n  const lastIndex = currentURL.lastIndexOf(\"/\");\n  return currentURL.substring(0, lastIndex) + param;\n}\n"
  },
  {
    "path": "web/src/utils/getAvatarUrl.ts",
    "content": "export function getAvatarUrl(uid?: string, updatedAt?: string) {\n  return `${window.location.origin}/v1/user/avatar/${uid}?t=${updatedAt}`;\n}\n"
  },
  {
    "path": "web/src/utils/getPageInfo.ts",
    "content": "import { PageValues } from \"@/components/Pagination\";\n\nexport default function getPageInfo(data: {\n  pageSize: number;\n  page: number;\n  total: number;\n  [key: string]: any;\n}): PageValues {\n  return {\n    pageSize: data?.pageSize,\n    limit: data?.pageSize,\n    page: data?.page,\n    total: data?.total,\n  };\n}\n"
  },
  {
    "path": "web/src/utils/getRegionById.ts",
    "content": "import { TRegion } from \"@/apis/typing\";\n\nfunction getRegionById(regions: TRegion[] | undefined, id: string): TRegion | undefined {\n  return (regions || []).find((region) => region._id === id);\n}\n\nexport default getRegionById;\n"
  },
  {
    "path": "web/src/utils/handleData.ts",
    "content": "import pako from \"pako\";\n\nfunction uint8ArrayToBase64(buffer: Iterable<number>) {\n  let binary = \"\";\n  const bytes = new Uint8Array(buffer);\n  const len = bytes.byteLength;\n  for (let i = 0; i < len; i++) {\n    binary += String.fromCharCode(bytes[i]);\n  }\n  return window.btoa(binary);\n}\n\nfunction base64ToUint8Array(base64: string) {\n  const binary_string = window.atob(base64);\n  const len = binary_string.length;\n  const bytes = new Uint8Array(len);\n  for (let i = 0; i < len; i++) {\n    bytes[i] = binary_string.charCodeAt(i);\n  }\n  return bytes;\n}\n\nexport function encodeData(data: string) {\n  const compressed = pako.gzip(data);\n  const base64Encoded = uint8ArrayToBase64(compressed);\n  return base64Encoded;\n}\n\nexport function decodeData(data: string) {\n  const base64Decoded = base64ToUint8Array(data);\n  const restored = pako.ungzip(base64Decoded, { to: \"string\" });\n  return restored;\n}\n"
  },
  {
    "path": "web/src/utils/i18n.ts",
    "content": "import { initReactI18next } from \"react-i18next\";\nimport i18n from \"i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport Backend from \"i18next-http-backend\";\n\ni18n\n  // load translation using http -> see /public/locales\n  // learn more: https://github.com/i18next/i18next-http-backend\n  .use(Backend)\n  // detect user language\n  // learn more: https://github.com/i18next/i18next-browser-languageDetector\n  .use(LanguageDetector)\n  // pass the i18n instance to react-i18next.\n  .use(initReactI18next)\n  // init i18next\n  // for all options read: https://www.i18next.com/overview/configuration-options\n  .init({\n    fallbackLng: \"zh\",\n    debug: process.env.NODE_ENV === \"development\",\n\n    interpolation: {\n      escapeValue: false, // not needed for react as it escapes by default\n    },\n  });\n\nexport default i18n;\n"
  },
  {
    "path": "web/src/utils/request.ts",
    "content": "// http.ts\nimport { createStandaloneToast } from \"@chakra-ui/react\";\nimport axios, { AxiosRequestHeaders, AxiosResponse } from \"axios\";\n\nimport { CHAKRA_UI_COLOR_MODE_KEY, VITE_SERVER_BASE_URL } from \"../constants\";\n\nconst { toast } = createStandaloneToast();\n\nconst request = axios.create({\n  baseURL: \"/\",\n  timeout: 30000,\n});\n\n// request interceptor\nrequest.interceptors.request.use(\n  (config: any) => {\n    // auto append service prefix\n    if (config.url && config.url?.startsWith(\"/v1/\")) {\n      config.url = VITE_SERVER_BASE_URL + config.url;\n    }\n\n    let _headers: AxiosRequestHeaders | any = {\n      Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\n      \"Content-Type\": \"application/json\",\n    };\n\n    config.headers = {\n      ..._headers,\n      ...config.headers,\n    };\n    return config;\n  },\n  (error) => {\n    error.data = {};\n    error.data.msg = \"The server is abnormal, please contact the administrator!\";\n    return Promise.resolve(error);\n  },\n);\n\n// response interceptor\nrequest.interceptors.response.use(\n  (response: AxiosResponse) => {\n    const { data } = response;\n    if (data?.error) {\n      toast({\n        title: data?.error,\n        position: \"top\",\n        variant: localStorage.getItem(CHAKRA_UI_COLOR_MODE_KEY) ? \"subtle\" : \"solid\",\n        status: \"error\",\n        duration: 1500,\n      });\n    }\n\n    return data;\n  },\n  (error) => {\n    if (axios.isCancel(error)) {\n      console.log(\"repeated request: \" + error.message);\n    } else {\n      // handle error code\n      const { data } = error.response;\n      if (data.statusCode === 401) {\n        // eslint-disable-next-line no-restricted-globals\n        (window as any).location.href = (VITE_SERVER_BASE_URL + \"/login\") as string;\n        return data;\n      } else if (data.statusCode === 403) {\n        toast({\n          title: data.message ? data.message : \"403 Forbidden\",\n          position: \"top\",\n          status: \"error\",\n          duration: 1000,\n        });\n        return data;\n      } else if (data.statusCode === 404) {\n        toast({\n          title: data.message ? data.message : \"404 Not Found\",\n          position: \"top\",\n          status: \"error\",\n          duration: 1000,\n        });\n        return data;\n      } else if (data.statusCode === 500 || data.statusCode === 502) {\n        toast({\n          title: \"500 Internal Server Error\",\n          position: \"top\",\n          status: \"error\",\n          duration: 1000,\n        });\n        return;\n      }\n\n      toast({\n        title: data.message,\n        position: \"top\",\n        status: \"error\",\n        duration: 1000,\n      });\n\n      error.data = {};\n      error.data.msg = \"Please check the network or contact the administrator!\";\n      return Promise.reject(error);\n    }\n  },\n);\n\nexport default request;\n"
  },
  {
    "path": "web/src/utils/streamFetch.ts",
    "content": "interface StreamFetchProps {\n  url: string;\n  onMessage: (text: string) => void;\n  firstResponse?: (text: string) => void;\n  abortSignal: AbortController;\n}\n\nexport const streamFetch = ({ url, onMessage, firstResponse, abortSignal }: StreamFetchProps) =>\n  new Promise(async (resolve, reject) => {\n    try {\n      const res = await fetch(url, {\n        method: \"GET\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\n        },\n        signal: abortSignal.signal,\n      });\n      const reader = res.body?.getReader();\n      if (!reader) return;\n      const decoder = new TextDecoder();\n      let responseText = \"\";\n\n      const read = async () => {\n        const { done, value } = await reader?.read();\n        if (done) {\n          if (res.status === 200) {\n            resolve(responseText);\n          } else {\n            try {\n              const parseError = JSON.parse(responseText);\n              reject(parseError?.message || \"请求异常\");\n            } catch (err) {\n              reject(\"请求异常\");\n            }\n          }\n          return;\n        }\n        const text = decoder.decode(value).replace(/<br\\/>/g, \"\\n\");\n        if (res.status === 200) {\n          responseText === \"\" && firstResponse && firstResponse(text);\n          onMessage(text);\n          responseText += text;\n        }\n        await read();\n      };\n      await read();\n    } catch (err: any) {\n      reject(typeof err === \"string\" ? err : err?.message || \"请求异常\");\n    }\n  });\n"
  },
  {
    "path": "web/src/vite-env.d.ts",
    "content": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "web/tailwind.config.cjs",
    "content": "/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  darkMode: \"class\",\n  content: [\"./index.html\", \"./src/**/*.{ts,tsx}\"],\n  theme: {\n    screens: {\n      sm: \"480px\",\n      md: \"768px\",\n      lg: \"976px\",\n      xl: \"1440px\",\n      \"2xl\": \"1680px\",\n      phone: { min: \"320px\", max: \"480px\" },\n      laptop: { min: \"1024px\", max: \"1440px\" },\n      pc: { min: \"1441px\" },\n    },\n    boxShadow: {\n      DEFAULT: \"0px 4px 10px rgba(191, 202, 213, 0.25)\",\n    },\n    fontSize: {\n      base: \"12px\",\n      lg: \"14px\",\n      xl: \"16px\",\n      \"2xl\": \"18px\",\n      \"3xl\": \"28px\",\n      \"4xl\": \"38px\",\n      \"5xl\": \"48px\",\n      \"6xl\": \"60px\",\n    },\n    extend: {\n      colors: {\n        primary: {\n          100: \"#E6F6F6\",\n          200: \"#CCEEED\",\n          300: \"#99DDDB\",\n          400: \"#66CBCA\",\n          500: \"#33BABB\",\n          600: \"#00A9A6\",\n          700: \"#008F8D\",\n          800: \"#006B6A\",\n          900: \"#004846\",\n          1000: \"#002423\",\n        },\n        second: \"#717D8A\",\n        third: {\n          500: \"#EC892D\",\n          100: \"#EC892D26\",\n        },\n        lafWhite: {\n          100: \"#FEFEFE\",\n          200: \"#FDFDFE\",\n          300: \"#FBFBFC\",\n          400: \"#F8FAFB\",\n          500: \"#F6F8F9\",\n          600: \"#F4F6F8\",\n          700: \"#C3C5C6\",\n          800: \"#929495\",\n          900: \"#626263\",\n          1000: \"#313132\",\n        },\n        lafDark: {\n          100: \"#1a202c\",\n          200: \"#202631\",\n          300: \"#303541\",\n          400: \"#404551\",\n          500: \"#505561\",\n          600: \"#606571\",\n          700: \"#707581\",\n          800: \"#808591\",\n          900: \"#9095A1\",\n          1000: \"#A0A5B1\",\n        },\n        grayModern: {\n          100: \"#EFF0F1\",\n          200: \"#DEE0E2\",\n          300: \"#BDC1C5\",\n          400: \"#9CA2A8\",\n          500: \"#7B838B\",\n          600: \"#5A646E\",\n          700: \"#485058\",\n          800: \"#363C42\",\n          900: \"#24282C\",\n          1000: \"#121416\",\n        },\n        grayIron: {\n          100: \"#F3F3F3\",\n          200: \"#E6E6E7\",\n          300: \"#CDCDD0\",\n          400: \"#B4B4B8\",\n          500: \"#9B9BA1\",\n          600: \"#828289\",\n          700: \"#68686E\",\n          800: \"#4E4E52\",\n          900: \"#343437\",\n          1000: \"#1A1A1B\",\n        },\n        error: {\n          100: \"#FDECEE\",\n          200: \"#FFD6DB\",\n          400: \"#FF8492\",\n          500: \"#F16979\",\n          600: \"#ED4458\",\n        },\n        warn: {\n          100: \"#FFF2EC\",\n          400: \"#FDB08A\",\n          600: \"#FB7C3C\",\n          700: \"#C96330\",\n        },\n        rose: {\n          100: \"#FDEAF1\",\n          500: \"#ED598E\",\n        },\n        purple: {\n          300: \"#DBBDE9\",\n          400: \"#C99CDF\",\n          600: \"#A55AC9\",\n          700: \"#7167AA\",\n        },\n        adora: {\n          100: \"#F2F1FB\",\n          200: \"#E6E3F7\",\n          600: \"#8172D8\",\n        },\n        blue: {\n          100: \"#EBF7FD\",\n          400: \"#86CEF5\",\n          500: \"#5EBDF2\",\n          600: \"#36ADEF\",\n          700: \"#2B8ABF\",\n        },\n        frostyNightfall: {\n          200: \"#EAEBF0\",\n          300: \"#D5D6E1\",\n          600: \"#9699B4\",\n          700: \"#787A90\",\n        },\n      },\n    },\n  },\n  plugins: [],\n};\n"
  },
  {
    "path": "web/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"types\": [\n      \"node\",\n      \"vite-plugin-pwa/client\"\n    ],\n    \"useDefineForClassFields\": true,\n    \"lib\": [\n      \"DOM\",\n      \"DOM.Iterable\",\n      \"ESNext\"\n    ],\n    \"allowJs\": false,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": false,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\",\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\n        \"src/*\"\n      ]\n    }\n  },\n  \"include\": [\n    \"src\",\n    \"apis/v1/api-auto.d.ts\",\n    \"public/locales\"\n  ],\n  \"references\": [\n    {\n      \"path\": \"./tsconfig.node.json\"\n    }\n  ],\n  \"exclude\": [\n    \"node_modules\"\n  ]\n}"
  },
  {
    "path": "web/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"composite\": true,\n    \"module\": \"ESNext\",\n    \"skipLibCheck\": true,\n    \"moduleResolution\": \"Node\",\n    \"allowSyntheticDefaultImports\": true,\n    \"types\": [\"node\"]\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "web/vite.config.ts",
    "content": "import react from \"@vitejs/plugin-react-swc\";\nimport * as fs from \"fs\";\nimport path from \"path\";\nimport url from \"url\";\nimport { defineConfig, loadEnv } from \"vite\";\nimport { VitePWA } from \"vite-plugin-pwa\";\nimport pluginRewriteAll from \"vite-plugin-rewrite-all\";\n\n// https://vitejs.dev/config/\nexport default defineConfig(({ command, mode }) => {\n  const env = loadEnv(mode, process.cwd(), \"\");\n  return {\n    server: {\n      port: 3001,\n      host: \"0.0.0.0\",\n      proxy: {\n        \"/v1\": {\n          target: env.VITE_DEV_SERVER_URL,\n          changeOrigin: true,\n        },\n      },\n    },\n    plugins: [\n      react(),\n      pluginRewriteAll(),\n      VitePWA({\n        registerType: \"prompt\",\n        includeAssets: [\"favicon.ico\", \"apple-touch-icon.png\", \"masked-icon.png\"],\n        devOptions: {\n          enabled: false,\n        },\n        workbox: {\n          globPatterns: [\"**/*.{js,css,html,png,svg,json}\"],\n          navigateFallbackDenylist: [/^\\/v1/],\n          maximumFileSizeToCacheInBytes: 10000000,\n        },\n        manifest: {\n          name: \"laf\",\n          short_name: \"Laf\",\n          description: \"life is short, you need laf:)\",\n          theme_color: \"#eef0f2\",\n          icons: [\n            {\n              src: \"pwa-192x192.png\",\n              sizes: \"192x192\",\n              type: \"image/png\",\n            },\n            {\n              src: \"pwa-512x512.png\",\n              sizes: \"512x512\",\n              type: \"image/png\",\n            },\n          ],\n        },\n      }),\n    ],\n    resolve: {\n      alias: {\n        \"@\": path.resolve(__dirname, \"./src\"),\n      },\n      dedupe: [\"monaco-editor\", \"vscode\"],\n    },\n    build: {\n      sourcemap: true,\n      rollupOptions: {\n        output: {\n          manualChunks(id) {\n            if (id.includes(\"node_modules\")) {\n              return id.toString().split(\"node_modules/\")[1].split(\"/\")[0].toString();\n            }\n          },\n        },\n      },\n    },\n    optimizeDeps: {\n      esbuildOptions: {\n        plugins: [\n          {\n            name: \"import.meta.url\",\n            setup({ onLoad }) {\n              // Help vite that bundles/move files in dev mode without touching `import.meta.url` which breaks asset urls\n              onLoad({ filter: /.*\\.js/, namespace: \"file\" }, async (args) => {\n                if (args.path.endsWith(\".json\")) return;\n                const code = fs.readFileSync(args.path, \"utf8\");\n                const assetImportMetaUrlRE =\n                  /\\bnew\\s+URL\\s*\\(\\s*('[^']+'|\"[^\"]+\"|`[^`]+`)\\s*,\\s*import\\.meta\\.url\\s*(?:,\\s*)?\\)/g;\n                let i = 0;\n                let newCode = \"\";\n                for (\n                  let match = assetImportMetaUrlRE.exec(code);\n                  match != null;\n                  match = assetImportMetaUrlRE.exec(code)\n                ) {\n                  newCode += code.slice(i, match.index);\n                  const path = match[1].slice(1, -1);\n\n                  const resolved = await import.meta.resolve!(path, url.pathToFileURL(args.path));\n                  newCode += `new URL(${JSON.stringify(\n                    url.fileURLToPath(resolved),\n                  )}, import.meta.url)`;\n                  i = assetImportMetaUrlRE.lastIndex;\n                }\n                newCode += code.slice(i);\n                return { contents: newCode };\n              });\n            },\n          },\n        ],\n      },\n    },\n  };\n});\n"
  }
]